From f98d438542ee160e7fd01d18d0761dd6c8a48a3c Mon Sep 17 00:00:00 2001 From: Daniel Bulant Date: Mon, 25 Apr 2022 12:31:18 +0200 Subject: [PATCH] vault backup: 2022-04-25 12:31:18 --- .gitignore | 3 +- fixdata.js | 28 + getdata.sh | 58 + .../.obsidian/plugins/dataview/manifest.json | 2 +- notes/.obsidian/plugins/juggl/main.js | 79574 +--------- notes/.obsidian/plugins/juggl/manifest.json | 2 +- notes/.obsidian/plugins/juggl/styles.css | 5 +- .../obsidian-activity-history/data.json | 10 +- .../plugins/obsidian-admonition/data.json | 20 +- .../plugins/obsidian-admonition/main.js | 15829 +- .../plugins/obsidian-admonition/manifest.json | 6 +- .../plugins/obsidian-admonition/styles.css | 251 +- .../.obsidian/plugins/obsidian-charts/main.js | 112 +- .../plugins/obsidian-charts/manifest.json | 2 +- .../plugins/obsidian-charts/styles.css | 7 +- .../obsidian-chartsview-plugin/main.js | 35069 +++-- .../obsidian-chartsview-plugin/manifest.json | 2 +- .../obsidian-chartsview-plugin/styles.css | 17 + .../plugins/obsidian-emoji-toolbar/main.js | 121117 +++++++++++++-- .../obsidian-emoji-toolbar/manifest.json | 2 +- .../plugins/obsidian-emoji-toolbar/styles.css | 498 + .../obsidian-excalidraw-plugin/data.json | 32 +- .../obsidian-excalidraw-plugin/main.js | 254 +- .../obsidian-excalidraw-plugin/manifest.json | 2 +- .../obsidian-excalidraw-plugin/styles.css | 2 +- .../obsidian-filename-heading-sync/main.js | 28 +- .../manifest.json | 2 +- .../.obsidian/plugins/obsidian-git/data.json | 21 + notes/.obsidian/plugins/obsidian-git/main.js | 11036 +- .../plugins/obsidian-git/manifest.json | 2 +- .../.obsidian/plugins/obsidian-git/styles.css | 193 +- .../.obsidian/plugins/obsidian-kanban/main.js | 104 +- .../plugins/obsidian-kanban/manifest.json | 2 +- .../plugins/obsidian-kanban/styles.css | 2 +- .../.obsidian/plugins/obsidian-latex/main.js | 66 +- .../plugins/obsidian-latex/manifest.json | 4 +- .../plugins/obsidian-outliner/main.js | 652 +- .../plugins/obsidian-outliner/manifest.json | 4 +- .../plugins/obsidian-outliner/styles.css | 75 +- .../plugins/obsidian-plugin-toc/main.js | 14 +- .../plugins/obsidian-plugin-toc/manifest.json | 2 +- .../plugins/table-editor-obsidian/main.js | 8 +- .../table-editor-obsidian/manifest.json | 2 +- .../plugins/templater-obsidian/main.js | 10905 +- .../plugins/templater-obsidian/manifest.json | 2 +- .../plugins/url-into-selection/main.js | 217 +- .../plugins/url-into-selection/manifest.json | 4 +- .../zoottelkeeper-obsidian-plugin/main.js | 47 +- .../manifest.json | 2 +- .../zoottelkeeper-obsidian-plugin/styles.css | 3 + notes/data/šroub M24.bmp | Bin 0 -> 3686454 bytes notes/mat/Rovnice/Rovnice.md | 1 + .../mat/Rovnice/Soustavy rovnic.excalidraw.md | 40 + notes/tek/Spoj kantavým šroubem, sestava.md | 2 + notes/tek/tek.md | 1 + 55 files changed, 138207 insertions(+), 138138 deletions(-) create mode 100644 fixdata.js create mode 100644 getdata.sh create mode 100644 notes/.obsidian/plugins/obsidian-git/data.json create mode 100644 notes/.obsidian/plugins/zoottelkeeper-obsidian-plugin/styles.css create mode 100644 notes/data/šroub M24.bmp create mode 100644 notes/mat/Rovnice/Soustavy rovnic.excalidraw.md create mode 100644 notes/tek/Spoj kantavým šroubem, sestava.md diff --git a/.gitignore b/.gitignore index d7460de..e74799c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ html notes/.obsidian/workspace -.mdzk_summary.md \ No newline at end of file +.mdzk_summary.md +/tmp \ No newline at end of file diff --git a/fixdata.js b/fixdata.js new file mode 100644 index 0000000..b54c0e1 --- /dev/null +++ b/fixdata.js @@ -0,0 +1,28 @@ +const fs = require("fs"); +const dir = fs.readdirSync("./tmp/data").sort().reverse(); +const reqFile = (path) => require("./tmp/data/" + path); + +let data = reqFile(dir[0]); + +function merge(first, second) { + for(let item of second) { + let i = first.findIndex(t => t.date === item.date); + if(i !== -1) { + first[i].value = Math.max(item.value, first[i].value); + } else { + first.push(item); + } + } + return first; +} + +for(let file of dir) { + let current = reqFile(file); + if(!current.activityHistory[0].size || !current.activityHistory[0].size.length) continue; // JS moment + let b = data; + data = current; + current = b; + data.activityHistory[0].size = merge(current.activityHistory[0].size, data.activityHistory[0].size); +} + +console.log(JSON.stringify(data)); \ No newline at end of file diff --git a/getdata.sh b/getdata.sh new file mode 100644 index 0000000..a0f4e9e --- /dev/null +++ b/getdata.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +# we'll write all git versions of the file to this folder: +EXPORT_TO=./tmp/data + +# take relative path to the file to inspect +GIT_PATH_TO_FILE=./notes/.obsidian/plugins/obsidian-activity-history/data.json + +# ---------------- don't edit below this line -------------- + +USAGE="Please cd to the root of your git proj and specify path to file you with to inspect (example: $0 some/path/to/file)" + +# check if got argument +if [ "${GIT_PATH_TO_FILE}" == "" ]; then + echo "error: no arguments given. ${USAGE}" >&2 + exit 1 +fi + +# check if file exist +if [ ! -f ${GIT_PATH_TO_FILE} ]; then + echo "error: File '${GIT_PATH_TO_FILE}' does not exist. ${USAGE}" >&2 + exit 1 +fi + +# extract just a filename from given relative path (will be used in result file names) +GIT_SHORT_FILENAME=$(basename $GIT_PATH_TO_FILE) + +# create folder to store all revisions of the file +if [ ! -d ${EXPORT_TO} ]; then + echo "creating folder: ${EXPORT_TO}" + mkdir ${EXPORT_TO} +fi + +## uncomment next line to clear export folder each time you run script +#rm ${EXPORT_TO}/* + +# reset coutner +COUNT=0 + +# iterate all revisions +git rev-list --all --objects -- ${GIT_PATH_TO_FILE} | \ + cut -d ' ' -f1 | \ +while read h; do \ + COUNT=$((COUNT + 1)); \ + COUNT_PRETTY=$(printf "%04d" $COUNT); \ + COMMIT_DATE=`git show $h | head -3 | grep 'Date:' | awk '{print $4"-"$3"-"$6}'`; \ + if [ "${COMMIT_DATE}" != "" ]; then \ + git cat-file -p ${h}:${GIT_PATH_TO_FILE} > ${EXPORT_TO}/${COUNT_PRETTY}.${COMMIT_DATE}.${h}.${GIT_SHORT_FILENAME};\ + fi;\ +done + +echo "result stored to ${EXPORT_TO}" + +node ./fixdata > notes/.obsidian/plugins/obsidian-activity-history/data.json +rm ${EXPORT_TO} -r + +echo "done" +exit 0 \ No newline at end of file diff --git a/notes/.obsidian/plugins/dataview/manifest.json b/notes/.obsidian/plugins/dataview/manifest.json index cbcefed..470e9a4 100644 --- a/notes/.obsidian/plugins/dataview/manifest.json +++ b/notes/.obsidian/plugins/dataview/manifest.json @@ -1,7 +1,7 @@ { "id": "dataview", "name": "Dataview", - "version": "0.4.22", + "version": "0.4.26", "minAppVersion": "0.13.11", "description": "Complex data views for the data-obsessed.", "author": "Michael Brenan ", diff --git a/notes/.obsidian/plugins/juggl/main.js b/notes/.obsidian/plugins/juggl/main.js index 00f82d6..12ab7e3 100644 --- a/notes/.obsidian/plugins/juggl/main.js +++ b/notes/.obsidian/plugins/juggl/main.js @@ -1,79581 +1,15 @@ -'use strict'; - -var obsidian = require('obsidian'); -var fs = require('fs'); - -class DataStoreEvents extends obsidian.Events { - trigger(name, ...data) { - super.trigger(name, ...data); - } - on(name, callback, ctx) { - return super.on(name, callback, ctx); - } -} - -const CLASS_PINNED = 'pinned'; -const CLASS_EXPANDED = 'expanded'; -const CLASS_ACTIVE_NODE = 'active-node'; -const CLASS_INACTIVE_NODE = 'inactive-node'; -const CLASS_CONNECTED_ACTIVE_NODE = 'connected-active-node'; -const CLASS_HOVER = 'hover'; -const CLASS_UNHOVER = 'unhover'; -const CLASS_PROTECTED = 'protected'; -const CLASS_CONNECTED_HOVER = 'connected-hover'; -const CLASS_FILTERED = 'filtered'; -const CLASS_HARD_FILTERED = 'hard-filtered'; -const CLASSES = [CLASS_PINNED, CLASS_EXPANDED, CLASS_ACTIVE_NODE, - CLASS_INACTIVE_NODE, CLASS_CONNECTED_ACTIVE_NODE, CLASS_HOVER, CLASS_UNHOVER, - CLASS_CONNECTED_HOVER, CLASS_PROTECTED, CLASS_FILTERED, CLASS_HARD_FILTERED]; -const VIEWPORT_ANIMATION_TIME = 250; -const LAYOUT_ANIMATION_TIME = 1500; -const DISCRETE_LAYOUT_ANIMATION_TIME = 500; -const DISCRETE_SPACING_FACTOR = 0.5; -const DEBOUNCE_FOLLOW = 500; -const DEBOUNCE_LAYOUT = 2300; -const MIN_NODE_SIZE = 5; -const MAX_NODE_SIZE = 35; -const MIN_FONT_SIZE = 5; -const MAX_FONT_SIZE = 11; -const MIN_TEXT_WIDTH = 65; -const MAX_TEXT_WIDTH = 100; -const JUGGL_VIEW_TYPE = 'juggl_view'; -const JUGGL_NODES_VIEW_TYPE = 'juggl_nodes'; -const JUGGL_STYLE_VIEW_TYPE = 'juggl_style'; -const JUGGL_HELP_VIEW = 'juggl-help'; -const DATA_FOLDER = function (vault) { - return `${vault.configDir}/plugins/juggl/`; -}; - -const CAT_DANGLING = 'dangling'; -const CORE_STORE_ID = 'core'; -class VizId { - constructor(id, storeId) { - this.id = id; - this.storeId = storeId; - } - toString() { - return `${this.storeId}:${this.id}`; - } - toId() { - return this.toString(); - } - static fromId(id) { - const split = id.split(':'); - const storeId = split[0]; - const _id = split.slice(1).join(':'); - return new VizId(_id, storeId); - } - static fromNode(node) { - return VizId.fromId(node.id()); - } - static fromNodes(nodes) { - return nodes.map((n) => VizId.fromNode(n)); - } - static fromFile(file) { - return new VizId(file.name, 'core'); - } - static toId(id, storeId) { - return new VizId(id, storeId).toId(); - } -} -const _parseTags = function (tags) { - return [].concat(...tags - .map((tag) => { - tag = tag.slice(1); - const hSplit = tag.split('/'); - const tags = []; - for (const i in hSplit) { - const hTag = hSplit.slice(0, parseInt(i) + 1).join('-'); - tags.push(`tag-${hTag}`); - } - return tags; - })); -}; -const getClasses = function (file, metadataCache) { - if (file) { - const classes = []; - if (['png', 'jpg', 'jpeg', 'gif', 'bmp', 'svg', 'tiff'].contains(file.extension)) { - classes.push('image'); - } - else if (['mp3', 'webm', 'wav', 'm4a', 'ogg', '3gp', 'flac'].contains(file.extension)) { - classes.push('audio'); - } - else if (['mp4', 'webm', 'ogv'].contains(file.extension)) { - classes.push('video'); - } - else if (file.extension === 'pdf') { - classes.push('pdf'); - } - // This is replaced by the 'path' data attribute. - // if (!(file.parent.name === '/' || file.parent.name === '')) { - // classes.push(`folder-${file.parent.name - // .replace(' ', '_')}`); - // } else { - // classes.push('root'); - // } - if (file.extension === 'md') { - classes.push('note'); - const cache = metadataCache.getFileCache(file); - if (cache?.frontmatter) { - if ('image' in cache.frontmatter) { - classes.push('image'); - } - if ('tags' in cache.frontmatter) { - const tags = obsidian.parseFrontMatterTags(cache.frontmatter); - if (tags) { - classes.push(..._parseTags(tags)); - } - } - if ('cssclass' in cache.frontmatter) { - const clazzes = obsidian.parseFrontMatterStringArray(cache.frontmatter, 'cssclass'); - if (clazzes) { - classes.push(...clazzes); - } - } - } - if (cache?.tags) { - classes.push(..._parseTags(cache.tags.map((t) => t.tag))); - } - } - else { - classes.push('file'); - } - return classes; - } - return [CAT_DANGLING]; -}; -const nodeFromFile = async function (file, plugin, settings, id) { - if (!id) { - id = VizId.toId(file.name, CORE_STORE_ID); - } - const cache = plugin.app.metadataCache.getFileCache(file); - const name = file.extension === 'md' ? file.basename : file.name; - const classes = getClasses(file, plugin.app.metadataCache).join(' '); - const data = { - id, - name, - path: file.path, - }; - if (['png', 'jpg', 'jpeg', 'gif', 'bmp', 'svg', 'tiff'].contains(file.extension)) { - try { - // @ts-ignore - data['resource_url'] = `http://localhost:${plugin.settings.imgServerPort}/${encodeURI(file.path)}`; - } - catch { } - } - if (settings.readContent && file.extension == 'md') { - data['content'] = await plugin.app.vault.cachedRead(file); - } - const frontmatter = cache?.frontmatter; - if (frontmatter) { - Object.keys(frontmatter).forEach((k) => { - if (!(k === 'position')) { - if (k === 'image') { - const imageField = frontmatter[k]; - try { - // Check if url. throws error otherwise - new URL(imageField); - data[k] = imageField; - } - catch { - try { - // @ts-ignore - data[k] = `http://localhost:${plugin.settings.imgServerPort}/${encodeURI(imageField)}`; - } - catch { } - } - } - else { - data[k] = frontmatter[k]; - } - } - }); - } - return { - group: 'nodes', - data: data, - classes: classes, - }; -}; -const nodeDangling = function (path) { - return { - group: 'nodes', - data: { - id: VizId.toId(path, CORE_STORE_ID), - name: path, - }, - classes: 'dangling', - }; -}; -const wikilinkRegex = '\\[\\[([^\\]\\r\\n]+?)\\]\\]'; -const nameRegex = '[^\\W\\d]\\w*'; -const regexEscape = function (str) { - return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); -}; -const parseTypedLink = function (link, line, typedLinkPrefix) { - // TODO: This is something specific I use, but shouldn't keep being in this repo. - const regexPublishedIn = new RegExp(`^${regexEscape(typedLinkPrefix)} (publishedIn) (\\d\\d\\d\\d) (${wikilinkRegex},? *)+$`); - const matchPI = regexPublishedIn.exec(line); - if (!(matchPI === null)) { - return { - class: 'type-publishedIn', - isInline: false, - properties: { - year: matchPI[2], - context: '', - type: 'publishedIn', - }, - }; - } - // Intuition: Start with the typed link prefix. Then a neo4j name (nameRegex). - // Then one or more of the wikilink group: wikilink regex separated by optional comma and multiple spaces - const regex = new RegExp(`^${regexEscape(typedLinkPrefix)} (${nameRegex}) (${wikilinkRegex},? *)+$`); - const match = regex.exec(line); - const splitLink = link.original.split('|'); - let alias = null; - if (splitLink.length > 1) { - alias = splitLink.slice(1).join().slice(0, -2); - } - if (!(match === null)) { - return { - class: `type-${match[1]}`, - isInline: false, - properties: { - alias: alias, - context: '', - type: match[1], - }, - }; - } - return null; -}; -const parseRefCache = function (ref, content, id, source, target, typedLinkPrefix) { - const line = content[ref.position.start.line]; - let data = { - id: id, - source: source, - target: target, - context: line, - edgeCount: 1, - }; - const splitLink = ref.original.split('|'); - if (splitLink.length > 1) { - data['alias'] = splitLink.slice(1).join().slice(0, -2); - } - let classes = ''; - const typedLink = parseTypedLink(ref, line, typedLinkPrefix); - if (typedLink === null) { - classes = `${classes} inline`; - } - else { - data = { ...typedLink.properties, ...data }; - classes = `${classes} ${typedLink.class}`; - } - return { - group: 'edges', - data: data, - classes: classes, - }; -}; - -const OBSIDIAN_STORE_NAME = 'Obsidian'; -class ObsidianStore extends obsidian.Component { - constructor(plugin) { - super(); - this.plugin = plugin; - this.events = new DataStoreEvents(); - this.metadata = plugin.app.metadataCache; - this.vault = plugin.app.vault; - } - getEvents(view) { - return this.events; - } - async createEdges(srcFile, srcId, toNodes, view) { - if (!(srcFile.extension === 'md')) { - return []; - } - const cache = this.metadata.getFileCache(srcFile); - if (!cache) { - return []; - } - const edges = {}; - const content = (await this.vault.cachedRead(srcFile)).split('\n'); - obsidian.iterateCacheRefs(cache, (ref) => { - const otherId = this.getOtherId(ref, srcFile.path).toId(); - if (toNodes.$id(otherId).length > 0) { - const edgeId = `${srcId}->${otherId}`; - const count = edgeId in edges ? edges[edgeId].length + 1 : 1; - const edge = parseRefCache(ref, content, `${edgeId}${count}`, srcId, otherId, this.plugin.settings.typedLinkPrefix); - if (edgeId in edges) { - edges[edgeId].push(edge); - } - else { - edges[edgeId] = [edge]; - } - } - }); - if (view.settings.mergeEdges) { - // Merges inline edges. - const returnEdges = []; - for (const edgeId of Object.keys(edges)) { - const connectedEdges = edges[edgeId]; - let inlineEdge = null; - let countInline = 0; - for (const edge of connectedEdges) { - if (edge.classes === ' inline') { - if (inlineEdge) { - inlineEdge.data.context += ` - ---- - -${edge.data.context}`; - countInline += 1; - } - else { - inlineEdge = edge; - countInline = 1; - } - } - else { - returnEdges.push(edge); - } - } - if (inlineEdge) { - inlineEdge.data.edgeCount = countInline; - returnEdges.push(inlineEdge); - } - } - return returnEdges; - } - return [].concat(...Object.values(edges)); - } - async connectNodes(allNodes, newNodes, view) { - const edges = []; - // Find edges from newNodes to other nodes - // @ts-ignore - for (const node of newNodes) { - const id = VizId.fromNode(node); - if (id.storeId === this.storeId()) { - const file = this.getFile(id); - if (file) { - const srcId = id.toId(); - edges.push(...await this.createEdges(file, srcId, allNodes, view)); - } - } - } - // @ts-ignore - for (const node of allNodes.difference(newNodes)) { - // For all nodes other than the new nodes - const id = VizId.fromNode(node); - if (id.storeId === this.storeId()) { - const file = this.getFile(id); - if (file) { - const srcId = id.toId(); - // Connect only to newNodes! - edges.push(...await this.createEdges(file, srcId, newNodes, view)); - } - } - } - return edges; - } - getOtherId(link, sourcePath) { - const path = obsidian.getLinkpath(link.link); - const file = this.metadata.getFirstLinkpathDest(path, sourcePath); - if (file) { - return new VizId(file.name, this.storeId()); - } - else { - return new VizId(path, this.storeId()); - } - } - async getNodeFromLink(link, sourcePath, graph) { - const path = obsidian.getLinkpath(link.link); - const file = this.metadata.getFirstLinkpathDest(path, sourcePath); - if (file) { - return await nodeFromFile(file, this.plugin, graph.settings); - } - else { - return nodeDangling(path); - } - } - getFile(nodeId) { - return this.metadata.getFirstLinkpathDest(nodeId.id, ''); - } - async fillWithBacklinks(nodes, nodeId, graph) { - // Could be an expensive operation... No cached backlinks implementation is available in the Obsidian API though. - if (nodeId.storeId === 'core') { - const path = this.getFile(nodeId).path; - // @ts-ignore - const resolvedLinks = this.metadata.resolvedLinks; - for (const otherPath of Object.keys(resolvedLinks)) { - if (path in resolvedLinks[otherPath]) { - const file = this.vault.getAbstractFileByPath(otherPath); - const id = VizId.fromFile(file).toId(); - if (!(id in nodes)) { - nodes[id] = await nodeFromFile(file, this.plugin, graph.settings); - } - } - } - } - } - async getNeighbourhood(nodeIds, viz) { - const nodes = {}; - for (const nodeId of nodeIds) { - if (nodeId.storeId === this.storeId()) { - const file = this.getFile(nodeId); - if (file === null) { - continue; - } - const cache = this.metadata.getFileCache(file); - if (cache === null) { - continue; - } - if (!(nodeId.toId() in nodes)) { - nodes[nodeId.toId()] = await nodeFromFile(file, this.plugin, viz.settings); - } - const promiseNodes = {}; - obsidian.iterateCacheRefs(cache, (ref) => { - const id = this.getOtherId(ref, file.path).toId(); - if (!(id in nodes)) { - promiseNodes[id] = this.getNodeFromLink(ref, file.path, viz); - } - }); - for (const id of Object.keys(promiseNodes)) { - if (!(id in nodes)) { - nodes[id] = await promiseNodes[id]; - } - } - await this.fillWithBacklinks(nodes, nodeId, viz); - } - } - return Object.values(nodes); - } - storeId() { - return 'core'; - } - get(nodeId, view) { - const file = this.getFile(nodeId); - if (file === null) { - return null; - } - const cache = this.metadata.getFileCache(file); - if (cache === null) { - console.log('returning empty cache', nodeId, view); - return null; - } - return Promise.resolve(nodeFromFile(file, this.plugin, view.settings)); - } - async refreshNode(id, view) { - const idS = id.toId(); - let correctEdges; - let node = view.viz.$id(idS); - if (this.getFile(id) === null) { - // File does not exist - if (node) { - // If a node exists for this file, remove it. - node.remove(); - view.onGraphChanged(true, true); - } - return; - } - if (node.length > 0 && node.hasClass(CLASS_EXPANDED)) { - correctEdges = await view.expand(node, true, false); - } - else { - const nodeDef = await this.get(id, view); - view.mergeToGraph([nodeDef], true, false); - node = view.viz.$id(idS); - const edges = await view.buildEdges(node); - correctEdges = view.mergeToGraph(edges, true, false); - } - // Remove outgoing edges that no longer exist. - const removed = node.connectedEdges() - .difference(correctEdges.merged) - .remove(); - if (removed.length > 0 || correctEdges.added.length > 0) { - view.onGraphChanged(true, true); - } - } - onload() { - super.onload(); - const store = this; - this.registerEvent(this.metadata.on('changed', (file) => { - store.plugin.activeGraphs().forEach(async (v) => { - await store.refreshNode(VizId.fromFile(file), v); - }); - })); - this.registerEvent(this.vault.on('rename', (file, oldPath) => { - if (file instanceof obsidian.TFile) { - const id = VizId.fromFile(file); - const oldId = VizId.fromPath(oldPath); - store.plugin.activeGraphs().forEach(async (v) => { - setTimeout(async () => { - // Changing the ID of a node in Cytoscape is not allowed, so remove and then restore. - // Put in setTimeout because Obsidian doesn't immediately update the metadata on rename... - v.viz.$id(oldId.toId()).remove(); - await store.refreshNode(id, v); - }, 500); - }); - } - })); - this.registerEvent(this.vault.on('delete', (file) => { - if (file instanceof obsidian.TFile) { - store.plugin.activeGraphs().forEach((v) => { - v.viz.$id(VizId.fromFile(file).toId()).remove(); - }); - } - })); - } -} - -function noop$2() { } -function run$3(fn) { - return fn(); -} -function blank_object() { - return Object.create(null); -} -function run_all(fns) { - fns.forEach(run$3); -} -function is_function(thing) { - return typeof thing === 'function'; -} -function safe_not_equal(a, b) { - return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); -} -let src_url_equal_anchor; -function src_url_equal(element_src, url) { - if (!src_url_equal_anchor) { - src_url_equal_anchor = document.createElement('a'); - } - src_url_equal_anchor.href = url; - return element_src === src_url_equal_anchor.href; -} -function is_empty(obj) { - return Object.keys(obj).length === 0; -} -function append(target, node) { - target.appendChild(node); -} -function insert(target, node, anchor) { - target.insertBefore(node, anchor || null); -} -function detach(node) { - node.parentNode.removeChild(node); -} -function destroy_each(iterations, detaching) { - for (let i = 0; i < iterations.length; i += 1) { - if (iterations[i]) - iterations[i].d(detaching); - } -} -function element$1(name) { - return document.createElement(name); -} -function svg_element(name) { - return document.createElementNS('http://www.w3.org/2000/svg', name); -} -function text(data) { - return document.createTextNode(data); -} -function space() { - return text(' '); -} -function empty() { - return text(''); -} -function listen(node, event, handler, options) { - node.addEventListener(event, handler, options); - return () => node.removeEventListener(event, handler, options); -} -function attr(node, attribute, value) { - if (value == null) - node.removeAttribute(attribute); - else if (node.getAttribute(attribute) !== value) - node.setAttribute(attribute, value); -} -function to_number(value) { - return value === '' ? null : +value; -} -function children(element) { - return Array.from(element.childNodes); -} -function set_data(text, data) { - data = '' + data; - if (text.wholeText !== data) - text.data = data; -} -function set_input_value(input, value) { - input.value = value == null ? '' : value; -} -function set_style(node, key, value, important) { - node.style.setProperty(key, value, important ? 'important' : ''); -} -function select_option(select, value) { - for (let i = 0; i < select.options.length; i += 1) { - const option = select.options[i]; - if (option.__value === value) { - option.selected = true; - return; - } - } - select.selectedIndex = -1; // no option should be selected -} -function select_value(select) { - const selected_option = select.querySelector(':checked') || select.options[0]; - return selected_option && selected_option.__value; -} - -let current_component; -function set_current_component(component) { - current_component = component; -} - -const dirty_components = []; -const binding_callbacks = []; -const render_callbacks = []; -const flush_callbacks = []; -const resolved_promise = Promise.resolve(); -let update_scheduled = false; -function schedule_update() { - if (!update_scheduled) { - update_scheduled = true; - resolved_promise.then(flush); - } -} -function add_render_callback(fn) { - render_callbacks.push(fn); -} -// flush() calls callbacks in this order: -// 1. All beforeUpdate callbacks, in order: parents before children -// 2. All bind:this callbacks, in reverse order: children before parents. -// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT -// for afterUpdates called during the initial onMount, which are called in -// reverse order: children before parents. -// Since callbacks might update component values, which could trigger another -// call to flush(), the following steps guard against this: -// 1. During beforeUpdate, any updated components will be added to the -// dirty_components array and will cause a reentrant call to flush(). Because -// the flush index is kept outside the function, the reentrant call will pick -// up where the earlier call left off and go through all dirty components. The -// current_component value is saved and restored so that the reentrant call will -// not interfere with the "parent" flush() call. -// 2. bind:this callbacks cannot trigger new flush() calls. -// 3. During afterUpdate, any updated components will NOT have their afterUpdate -// callback called a second time; the seen_callbacks set, outside the flush() -// function, guarantees this behavior. -const seen_callbacks = new Set(); -let flushidx = 0; // Do *not* move this inside the flush() function -function flush() { - const saved_component = current_component; - do { - // first, call beforeUpdate functions - // and update components - while (flushidx < dirty_components.length) { - const component = dirty_components[flushidx]; - flushidx++; - set_current_component(component); - update$1(component.$$); - } - set_current_component(null); - dirty_components.length = 0; - flushidx = 0; - while (binding_callbacks.length) - binding_callbacks.pop()(); - // then, once components are updated, call - // afterUpdate functions. This may cause - // subsequent updates... - for (let i = 0; i < render_callbacks.length; i += 1) { - const callback = render_callbacks[i]; - if (!seen_callbacks.has(callback)) { - // ...so guard against infinite loops - seen_callbacks.add(callback); - callback(); - } - } - render_callbacks.length = 0; - } while (dirty_components.length); - while (flush_callbacks.length) { - flush_callbacks.pop()(); - } - update_scheduled = false; - seen_callbacks.clear(); - set_current_component(saved_component); -} -function update$1($$) { - if ($$.fragment !== null) { - $$.update(); - run_all($$.before_update); - const dirty = $$.dirty; - $$.dirty = [-1]; - $$.fragment && $$.fragment.p($$.ctx, dirty); - $$.after_update.forEach(add_render_callback); - } -} -const outroing = new Set(); -let outros; -function group_outros() { - outros = { - r: 0, - c: [], - p: outros // parent group - }; -} -function check_outros() { - if (!outros.r) { - run_all(outros.c); - } - outros = outros.p; -} -function transition_in(block, local) { - if (block && block.i) { - outroing.delete(block); - block.i(local); - } -} -function transition_out(block, local, detach, callback) { - if (block && block.o) { - if (outroing.has(block)) - return; - outroing.add(block); - outros.c.push(() => { - outroing.delete(block); - if (callback) { - if (detach) - block.d(1); - callback(); - } - }); - block.o(local); - } -} -function create_component(block) { - block && block.c(); -} -function mount_component(component, target, anchor, customElement) { - const { fragment, on_mount, on_destroy, after_update } = component.$$; - fragment && fragment.m(target, anchor); - if (!customElement) { - // onMount happens before the initial afterUpdate - add_render_callback(() => { - const new_on_destroy = on_mount.map(run$3).filter(is_function); - if (on_destroy) { - on_destroy.push(...new_on_destroy); - } - else { - // Edge case - component was destroyed immediately, - // most likely as a result of a binding initialising - run_all(new_on_destroy); - } - component.$$.on_mount = []; - }); - } - after_update.forEach(add_render_callback); -} -function destroy_component(component, detaching) { - const $$ = component.$$; - if ($$.fragment !== null) { - run_all($$.on_destroy); - $$.fragment && $$.fragment.d(detaching); - // TODO null out other refs, including component.$$ (but need to - // preserve final state?) - $$.on_destroy = $$.fragment = null; - $$.ctx = []; - } -} -function make_dirty(component, i) { - if (component.$$.dirty[0] === -1) { - dirty_components.push(component); - schedule_update(); - component.$$.dirty.fill(0); - } - component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); -} -function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { - const parent_component = current_component; - set_current_component(component); - const $$ = component.$$ = { - fragment: null, - ctx: null, - // state - props, - update: noop$2, - not_equal, - bound: blank_object(), - // lifecycle - on_mount: [], - on_destroy: [], - on_disconnect: [], - before_update: [], - after_update: [], - context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), - // everything else - callbacks: blank_object(), - dirty, - skip_bound: false, - root: options.target || parent_component.$$.root - }; - append_styles && append_styles($$.root); - let ready = false; - $$.ctx = instance - ? instance(component, options.props || {}, (i, ret, ...rest) => { - const value = rest.length ? rest[0] : ret; - if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { - if (!$$.skip_bound && $$.bound[i]) - $$.bound[i](value); - if (ready) - make_dirty(component, i); - } - return ret; - }) - : []; - $$.update(); - ready = true; - run_all($$.before_update); - // `false` as a special case of no DOM component - $$.fragment = create_fragment ? create_fragment($$.ctx) : false; - if (options.target) { - if (options.hydrate) { - const nodes = children(options.target); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - $$.fragment && $$.fragment.l(nodes); - nodes.forEach(detach); - } - else { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - $$.fragment && $$.fragment.c(); - } - if (options.intro) - transition_in(component.$$.fragment); - mount_component(component, options.target, options.anchor, options.customElement); - flush(); - } - set_current_component(parent_component); -} -/** - * Base class for Svelte components. Used when dev=false. - */ -class SvelteComponent { - $destroy() { - destroy_component(this, 1); - this.$destroy = noop$2; - } - $on(type, callback) { - const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); - callbacks.push(callback); - return () => { - const index = callbacks.indexOf(callback); - if (index !== -1) - callbacks.splice(index, 1); - }; - } - $set($$props) { - if (this.$$set && !is_empty($$props)) { - this.$$.skip_bound = true; - this.$$set($$props); - this.$$.skip_bound = false; - } - } -} - -const STYLESHEET_PATH = function (vault) { - return `${vault.configDir}/plugins/juggl/graph.css`; -}; -const SHAPES = ['ellipse', - 'rectangle', - 'triangle', - 'diamond', - 'pentagon', - 'hexagon', - 'tag', - 'rhomboid', - 'star', - 'vee', - 'round-rectangle', - 'round-triangle', - 'round-diamond', - 'round-pentagon', - 'round-hexagon', - 'round-tag', -]; -const DEFAULT_USER_SHEET = ` -/* For a full overview of styling options, see https://js.cytoscape.org/#style */ -`; -const YAML_MODIFY_SHEET = ` - - -node[title] { - label: data(title); -} - -node[color] { - background-color: data(color); -} - -node[shape] { - shape: data(shape); -} - -node[width] { - width: data(width); -} - -node[height] { - width: data(height); -} - -node[image] { - background-image: data(image); -} -`; -const getGraphColor = function (clazz) { - // Hacky way to get style properties set for Obsidians graph view - const graphDiv = document.createElement('div'); - graphDiv.addClass('graph-view', clazz); - document.body.appendChild(graphDiv); - const computedColor = getComputedStyle(graphDiv).getPropertyValue('color'); - graphDiv.detach(); - return computedColor; -}; -/* -defaultSheet comes before graph.css, yamlModifySheet comes after. - */ -class GraphStyleSheet { - constructor(plugin) { - this.defaultSheet = this.getDefaultStylesheet(); - this.yamlModifySheet = YAML_MODIFY_SHEET; - this.plugin = plugin; - } - async getStylesheet(viz) { - const file = this.plugin.vault.adapter.getFullPath(STYLESHEET_PATH(this.plugin.vault)); - // const customSheet = ''; - let customSheet = ''; - try { - customSheet = await fs.promises.readFile(file, 'utf-8') - .catch(async (err) => { - if (err.code === 'ENOENT') { - const cstmSheet = DEFAULT_USER_SHEET; - await fs.promises.writeFile(file, cstmSheet); - return cstmSheet; - } - else { - throw err; - } - }); - } - catch (e) { - console.log('Couldn\'t load user stylesheet. This is probably because we are on mobile'); - console.log(e); - } - // TODO: Ordering: If people specify some new YAML property to take into account, style groups will override this! - let globalGroups = ''; - if ('settings' in this.plugin) { - // @ts-ignore - globalGroups = this.styleGroupsToSheet(this.plugin.settings.globalStyleGroups, 'global'); - } - const localGroups = this.styleGroupsToSheet(viz.settings.styleGroups, 'local'); - return this.defaultSheet + globalGroups + customSheet + localGroups + this.yamlModifySheet; - } - colorToRGBA(col) { - const canvas = document.createElement('canvas'); - canvas.width = canvas.height = 1; - const ctx = canvas.getContext('2d'); - ctx.clearRect(0, 0, 1, 1); - // In order to detect invalid values, - // we can't rely on col being in the same format as what fillStyle is computed as, - // but we can ask it to implicitly compute a normalized value twice and compare. - ctx.fillStyle = '#000'; - ctx.fillStyle = col; - const computed = ctx.fillStyle; - ctx.fillStyle = '#fff'; - ctx.fillStyle = col; - if (computed !== ctx.fillStyle) { - return; // invalid color - } - ctx.fillRect(0, 0, 1, 1); - const rgba = [...ctx.getImageData(0, 0, 1, 1).data]; - return `rgb(${rgba[0]}, ${rgba[1]}, ${rgba[2]})`; - } - styleGroupsToSheet(groups, groupPrefix) { - let sheet = ''; - const parser = new DOMParser; - for (const [index, val] of groups.entries()) { - if (val.show) { - let icon = ''; - if (val.icon && val.icon.path) { - const svg = '' + - '' + - '' + - `` + - ''; - const html = parser.parseFromString(svg, 'text/xml').documentElement.outerHTML; - icon = `background-image: url('data:image/svg+xml,${encodeURIComponent(html)}');`; - } - // Until size = 1, let text size linearly scale with node, then scale the square root. - const textSizeModifier = Math.max(Math.min(val.size, 1), Math.sqrt(val.size)); - sheet += ` -node.${groupPrefix}-${index} { - background-color: ${val.color}; - shape: ${val.shape}; - background-fit: contain; - ${icon} - width: mapData(degree, 0, 60, ${MIN_NODE_SIZE * val.size}, ${MAX_NODE_SIZE * val.size}); - height: mapData(degree, 0, 60, ${MIN_NODE_SIZE * val.size}, ${MAX_NODE_SIZE * val.size}); - font-size: mapData(degree, 0, 60, ${MIN_FONT_SIZE * textSizeModifier}, ${MAX_FONT_SIZE * textSizeModifier}); - text-max-width: mapData(degree, 0, 60, ${Math.round(MIN_TEXT_WIDTH * textSizeModifier)}px, ${Math.round(MAX_TEXT_WIDTH * textSizeModifier)}px); -} -`; - } - else { - sheet += ` -node.${groupPrefix}-${index} { - display: none; -} -`; - } - } - return sheet; - } - getDefaultStylesheet() { - const style = getComputedStyle(document.body); - let font = style.getPropertyValue('--text'); - font = font.replace('BlinkMacSystemFont,', ''); // This crashes electron for some reason. - if (font.length === 0) { - font = 'Helvetica Neue'; - } - const fillColor = getGraphColor('color-fill'); - const fillHighlightColor = getGraphColor('color-fill-highlight'); - const accentBorderColor = getGraphColor('color-circle'); - const lineColor = getGraphColor('color-line'); - const lineHighlightColor = getGraphColor('color-line-highlight'); - const textColor = getGraphColor('color-text'); - const danglingColor = getGraphColor('color-fill-unresolved'); - return ` -node { - background-color: ${fillColor}; - color: ${textColor}; - font-family: ${font}; - text-valign: bottom; - shape: ellipse; - border-width: 0; - text-wrap: wrap; - min-zoomed-font-size: 8; -} - -node[name] { - label: data(name); -} -node[degree] { - width: mapData(degree, 0, 60, ${MIN_NODE_SIZE}, ${MAX_NODE_SIZE}); - height: mapData(degree, 0, 60, ${MIN_NODE_SIZE}, ${MAX_NODE_SIZE}); - font-size: mapData(degree, 0, 60, ${MIN_FONT_SIZE}, ${MAX_FONT_SIZE}); - text-opacity: mapData(degree, 0, 60, 0.7, 1); - text-max-width: mapData(degree, 0, 60, ${MIN_TEXT_WIDTH}px, ${MAX_TEXT_WIDTH}px); -} - -node:selected { - background-blacken: 0.3; - font-weight: bold; - -} -node:selected[degree] { - border-width: mapData(degree, 0, 60, 1, 3); -} - -.dangling { - background-color: ${danglingColor}; -} - -.image { - shape: round-rectangle; - width: 50; - height: 50; - background-opacity: 0; - background-image: data(resource_url); - background-image-crossorigin: anonymous; - background-image-opacity: 1; - background-fit: contain; - font-size: 0; - background-clip: node; -} - -.image.note { - font-size: mapData(degree, 0, 60, 5, 11); -} - -edge { - line-color: ${lineColor}; - loop-sweep: -50deg; - loop-direction: -45deg; - width: 0.70; - - target-arrow-shape: vee; - target-arrow-fill: filled; - target-arrow-color: ${lineColor}; - - arrow-scale: 0.55; - - font-size: 6; - font-family: ${font}; - color: ${textColor}; - curve-style: straight; - -} - -edge[edgeCount] { - width: mapData(edgeCount, 1, 50, 0.55, 3); - arrow-scale: mapData(edgeCount, 1, 50, 0.35, 1.5); -} - -edge:selected { - width: 0.7; - font-weight: bold; - line-color: ${lineHighlightColor}; -} - -:loop { - display: none; -} - -edge[type] { - label: data(type); -} -.inactive-node, -.unhover { - opacity: 0.3; -} -node.active-node, -node.hover { - background-color: ${fillHighlightColor}; - font-weight: bold; - border-width: 0.4; - border-color: ${accentBorderColor}; - opacity: 1; -} -edge.hover, -edge.connected-active-node, -edge.connected-hover { - width: 1; - opacity: 1; -} -edge.hover, -edge.connected-hover { - font-weight: bold; - line-color: ${lineHighlightColor}; - target-arrow-color: ${lineHighlightColor}; -} - -node.pinned { - border-style: dotted; - border-width: 2; -} -node.protected { - ghost: yes; - ghost-offset-x: 1px; - ghost-offset-y: 1px; - ghost-opacity: 0.5; -} -node.hard-filtered, -node.filtered { - display: none; -} -`; - } -} - -/* src/ui/settings/AppearanceSettings.svelte generated by Svelte v3.45.0 */ - -function create_fragment$c(ctx) { - let h3; - let t1; - let p; - let t2; - let t3; - let t4; - let a; - let t6; - let t7; - let button; - let mounted; - let dispose; - - return { - c() { - h3 = element$1("h3"); - h3.textContent = "Appearance"; - t1 = space(); - p = element$1("p"); - t2 = text("You can style the graph with css. This is done in the "); - t3 = text(/*stylesheetPath*/ ctx[0]); - t4 = text(" file.\n See "); - a = element$1("a"); - a.textContent = "this page"; - t6 = text(" for help with styling."); - t7 = space(); - button = element$1("button"); - button.textContent = "Open graph.css in default editor."; - attr(a, "href", "https://publish.obsidian.md/semantic-obsidian/Node+styling"); - }, - m(target, anchor) { - insert(target, h3, anchor); - insert(target, t1, anchor); - insert(target, p, anchor); - append(p, t2); - append(p, t3); - append(p, t4); - append(p, a); - append(p, t6); - insert(target, t7, anchor); - insert(target, button, anchor); - - if (!mounted) { - dispose = listen(button, "click", /*openGraphCSS*/ ctx[1]); - mounted = true; - } - }, - p: noop$2, - i: noop$2, - o: noop$2, - d(detaching) { - if (detaching) detach(h3); - if (detaching) detach(t1); - if (detaching) detach(p); - if (detaching) detach(t7); - if (detaching) detach(button); - mounted = false; - dispose(); - } - }; -} - -function instance$c($$self, $$props, $$invalidate) { - let { plugin } = $$props; - let stylesheetPath = STYLESHEET_PATH(plugin.vault); - - let openGraphCSS = async function () { - let fullPath = plugin.vault.adapter.getFullPath(stylesheetPath); - - // Write a file, throw an error if it already exists (flag wx). Just catch that because it's fine. - try { - const shell = require('electron').shell; - const { promises } = require("fs"); - - await promises.writeFile(fullPath, DEFAULT_USER_SHEET, { flag: 'wx' }).catch(e => { - - }); - - await shell.openPath(fullPath); - } catch(e) { - console.log("Couldn't open graph.css. This is probably because we are on mobile."); - console.log(e); - } - }; - - $$self.$$set = $$props => { - if ('plugin' in $$props) $$invalidate(2, plugin = $$props.plugin); - }; - - return [stylesheetPath, openGraphCSS, plugin]; -} - -class AppearanceSettings extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$c, create_fragment$c, safe_not_equal, { plugin: 2 }); - } -} - -/* src/ui/KoFi.svelte generated by Svelte v3.45.0 */ - -function create_fragment$b(ctx) { - let script; - let script_src_value; - let t; - let div; - let mounted; - let dispose; - - return { - c() { - script = element$1("script"); - t = space(); - div = element$1("div"); - attr(script, "type", "text/javascript"); - if (!src_url_equal(script.src, script_src_value = "https://ko-fi.com/widgets/widget_2.js")) attr(script, "src", script_src_value); - }, - m(target, anchor) { - append(document.head, script); - insert(target, t, anchor); - insert(target, div, anchor); - /*div_binding*/ ctx[2](div); - - if (!mounted) { - dispose = listen(script, "load", /*initializeKofi*/ ctx[1]); - mounted = true; - } - }, - p: noop$2, - i: noop$2, - o: noop$2, - d(detaching) { - detach(script); - if (detaching) detach(t); - if (detaching) detach(div); - /*div_binding*/ ctx[2](null); - mounted = false; - dispose(); - } - }; -} - -function instance$b($$self, $$props, $$invalidate) { - let button; - - var initializeKofi = () => { - kofiwidget2.init('Support Juggl development!', '#29abe0', 'B0B23OPUE'); - $$invalidate(0, button.innerHTML = kofiwidget2.getHTML(), button); - }; - - function div_binding($$value) { - binding_callbacks[$$value ? 'unshift' : 'push'](() => { - button = $$value; - $$invalidate(0, button); - }); - } - - return [button, initializeKofi, div_binding]; -} - -class KoFi extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$b, create_fragment$b, safe_not_equal, {}); - } -} - -const LAYOUTS = ['force-directed', 'circle', 'grid', 'hierarchy', 'cola']; -const emptyStyleGroup = { filter: '', - color: 'black', - shape: 'ellipse', - icon: { name: 'No icon', path: '', color: 'white' }, - showInPane: true, - show: true, - size: 1.0 }; -const genStyleGroups = function (plugin) { - const tagColorMap = {}; - const colorSet = [[ - '#0089BA', - '#2C73D2', - '#008E9B', - '#0081CF', - '#008F7A', - '#008E9B', // This one is double oops! - ], [ - '#D65DB1', - '#0082C1', - '#9270D3', - '#007F93', - '#007ED9', - '#007660', - ], [ - '#FF9671', - '#A36AAA', - '#F27D88', - '#6967A9', - '#D26F9D', - '#1b6299', - ], [ - '#FFC75F', - '#4C9A52', - '#C3BB4E', - '#00855B', - '#88AC4B', - '#006F61', - ], [ - '#FF6F91', - '#6F7F22', - '#E07250', - '#257A3E', - '#AC7C26', - '#006F5F', - ], [ - '#F9F871', - '#2FAB63', - '#B8E067', - '#008E63', - '#78C664', - '#007160', - ]]; - const colors = []; - for (const i of Array(6).keys()) { - for (const j of Array(6).keys()) { - colors.push(colorSet[j][i]); - } - } - let tagsIter = 0; - for (const file of plugin.vault.getMarkdownFiles()) { - const cache = plugin.metadata.getFileCache(file); - if (cache?.tags) { - cache.tags.forEach((t) => { - const tag = t.tag.slice(1); - const hSplit = tag.split('/'); - const tags = []; - for (const i in hSplit) { - const hTag = hSplit.slice(0, parseInt(i) + 1).join('-'); - tags.push(hTag); - } - for (const tag of tags) { - if (!(tag in tagColorMap)) { - tagColorMap[tag] = colors[tagsIter]; - tagsIter += 1; - if (tagsIter >= colors.length) { - tagsIter = 0; - } - } - } - }); - } - } - const genSheet = [ - { filter: `class:dangling`, - color: getGraphColor('color-fill-unresolved'), - shape: 'ellipse', - icon: { name: 'No icon', path: '', color: 'white' }, - showInPane: true, - show: true, - size: 1.0 }, - { filter: `class:file -class:image`, - color: getGraphColor('color-fill'), - shape: 'ellipse', - icon: { name: 'No icon', path: '', color: 'white' }, - showInPane: true, - show: true, - size: 1.0 }, - ]; - for (const tag of Object.keys(tagColorMap)) { - genSheet.push({ filter: `tag:#${tag}`, - color: tagColorMap[tag], - shape: 'ellipse', - icon: { name: 'No icon', path: '', color: 'white' }, - showInPane: true, - show: true, - size: 1.0 }); - } - return genSheet; -}; -const DefaultJugglSettings = { - password: '', - splitDirection: 'vertical', - typedLinkPrefix: '-', - imgServerPort: 3837, - debug: false, - globalStyleGroups: [], - globalGraphRibbon: true, - graphSettings: { - // TODO: Not currently used anywhere - animateLayout: true, - autoAddNodes: true, - autoExpand: false, - autoZoom: false, - coreStore: OBSIDIAN_STORE_NAME, - expandInitial: true, - fdgdLayout: 'd3-force', - filter: '', - height: '100%', - hoverEdges: false, - layout: 'force-directed', - limit: 10000, - mergeEdges: true, - metaKeyHover: false, - mode: 'workspace', - navigator: true, - openWithShift: false, - readContent: true, - styleGroups: [], - toolbar: true, - width: '100%', - zoomSpeed: 1, - }, - embedSettings: { - animateLayout: true, - autoAddNodes: false, - autoExpand: false, - autoZoom: false, - coreStore: OBSIDIAN_STORE_NAME, - expandInitial: true, - fdgdLayout: 'cola', - filter: '', - height: '400px', - hoverEdges: false, - layout: 'force-directed', - limit: 1000, - mergeEdges: true, - metaKeyHover: false, - mode: 'local', - navigator: false, - openWithShift: false, - readContent: true, - styleGroups: [], - toolbar: false, - width: '100%', - zoomSpeed: 1, - }, - globalGraphSettings: { - animateLayout: true, - autoAddNodes: true, - autoExpand: false, - autoZoom: false, - coreStore: OBSIDIAN_STORE_NAME, - expandInitial: false, - fdgdLayout: 'cola', - filter: '-class:dangling -class:file', - height: '100%', - width: '100%', - limit: 10000, - hoverEdges: false, - layout: 'force-directed', - mergeEdges: true, - metaKeyHover: false, - mode: 'workspace', - navigator: true, - openWithShift: false, - readContent: false, - styleGroups: [], - toolbar: true, - zoomSpeed: 1, - }, -}; -class JugglGraphSettingsTab extends obsidian.PluginSettingTab { - constructor(app, plugin) { - super(app, plugin); - this.plugin = plugin; - } - display() { - const { containerEl } = this; - containerEl.empty(); - containerEl.createEl('h3'); - containerEl.createEl('h3', { text: 'Juggl' }); - new KoFi({ target: containerEl }); - const doc_link = document.createElement('a'); - doc_link.href = 'https://juggl.io'; - doc_link.target = '_blank'; - doc_link.innerHTML = 'the documentation'; - const discord_link = document.createElement('a'); - discord_link.href = 'https://discord.gg/sAmSGpaPgM'; - discord_link.target = '_blank'; - discord_link.innerHTML = 'the Discord server'; - const introPar = document.createElement('p'); - introPar.innerHTML = - 'Check out ' + doc_link.outerHTML + ' for documentation on how to use the plugin.
' + - 'Join ' + discord_link.outerHTML + ' for help, nice discussion and insight into development.'; - containerEl.appendChild(introPar); - new AppearanceSettings({ target: containerEl, props: { plugin: this.plugin } }); - containerEl.createEl('h3'); - containerEl.createEl('h3', { text: 'Extensions' }); - new obsidian.Setting(containerEl) - .setName('Use navigator') - .setDesc('Use the navigator overview in the bottom-right corner. Disabling could improve performance.') - .addToggle((toggle) => { - toggle.setValue(this.plugin.settings.graphSettings.navigator) - .onChange((newValue) => { - this.plugin.settings.graphSettings.navigator = newValue; - this.plugin.saveData(this.plugin.settings); - }); - }); - new obsidian.Setting(containerEl) - .setName('Default mode') - .setDesc('The default mode to open the Advanced Graph View in.') - .addDropdown((dropdown) => { - dropdown.addOption('local', 'Local Mode'); - dropdown.addOption('workspace', 'Workspace Mode'); - dropdown.setValue(this.plugin.settings.graphSettings.mode) - .onChange((newValue) => { - this.plugin.settings.graphSettings.mode = newValue; - this.plugin.saveData(this.plugin.settings); - }); - }); - new obsidian.Setting(containerEl) - .setName('Force-directed algorithm') - .setDesc('The default force-directed graph drawing algorithm to use. ' + - 'Cola is nice, but unstable in some use cases. Obsidian uses D3') - .addDropdown((dropdown) => { - dropdown.addOption('cola', 'Cola'); - dropdown.addOption('d3-force', 'D3'); - dropdown.setValue(this.plugin.settings.graphSettings.fdgdLayout) - .onChange((newValue) => { - this.plugin.settings.graphSettings.fdgdLayout = newValue; - this.plugin.settings.embedSettings.fdgdLayout = newValue; - this.plugin.settings.globalGraphSettings.fdgdLayout = newValue; - this.plugin.saveData(this.plugin.settings); - }); - }); - new obsidian.Setting(containerEl) - .setName('Global Graph Icon') - .setDesc('Show the Global Graph Icon on the left ribbon.') - .addToggle((toggle) => { - toggle.setValue(this.plugin.settings.globalGraphRibbon) - .onChange((new_value) => { - this.plugin.settings.globalGraphRibbon = new_value; - this.plugin.saveData(this.plugin.settings); - this.plugin.setGlobalIcon(); - }); - }); - new obsidian.Setting(containerEl) - .setName(`Require ⌘/ctrl for preview hovers`) - .setDesc('When set to true, you will need to hold down ⌘ (mac) or ctrl (windows) to show preview hovers of notes.') - .addToggle((toggle) => { - toggle.setValue(this.plugin.settings.graphSettings.metaKeyHover) - .onChange((new_value) => { - this.plugin.settings.graphSettings.metaKeyHover = new_value; - this.plugin.settings.globalGraphSettings.metaKeyHover = new_value; - this.plugin.settings.embedSettings.metaKeyHover = new_value; - this.plugin.saveData(this.plugin.settings); - }); - }); - // // Note: This isn't currently used anywhere, and the Neo4j stream plugin will likely not provide a backend. - // // Therefore this setting is disabled to prevent confusion. - // new Setting(containerEl) - // .setName('Data store') - // .setDesc('Set what database to get the Obsidian graph from. By default, only Obsidian itself is an option. ' + - // 'Later on, you will be able to install the Neo4j Stream Plugin to use a Neo4j backend which has more features and scales better to large graphs.') - // .addDropdown((dropdown) => { - // Object.keys(this.plugin.coreStores).forEach((c) => { - // dropdown.addOption(c, c); - // }); - // dropdown.setValue(this.plugin.settings.graphSettings.coreStore) - // .onChange((newValue) => { - // this.plugin.settings.graphSettings.coreStore = newValue; - // this.plugin.settings.embedSettings.coreStore = newValue; - // this.plugin.saveData(this.plugin.settings); - // }); - // }); - containerEl.createEl('h4', { text: 'Workspace mode' }); - new obsidian.Setting(containerEl) - .setName('Automatically add nodes') - .setDesc('This will automatically add nodes to the graph whenever a note is opened.') - .addToggle((toggle) => { - toggle.setValue(this.plugin.settings.graphSettings.autoAddNodes) - .onChange((new_value) => { - this.plugin.settings.graphSettings.autoAddNodes = new_value; - this.plugin.saveData(this.plugin.settings); - }); - }); - new obsidian.Setting(containerEl) - .setName('Automatically zoom on active nodes') - .setDesc('This will automatically keep fitting the viewport on the currently active node. ' + - 'In particular, this happens when you open a file.') - .addToggle((toggle) => { - toggle.setValue(this.plugin.settings.graphSettings.autoZoom) - .onChange((new_value) => { - this.plugin.settings.graphSettings.autoZoom = new_value; - this.plugin.settings.globalGraphSettings.autoZoom = new_value; - this.plugin.saveData(this.plugin.settings); - }); - }); - containerEl.createEl('h3', { text: 'Advanced' }); - new obsidian.Setting(containerEl) - .setName('Zoom speed') - .setDesc('Speed with which zooming in and out happens. ' + - 'A value of 1 is recommended, but can be too quick for some mice.') - .addSlider((slider) => { - slider - .setDynamicTooltip() - .setLimits(0.01, 1.5, 0.01) - .setValue(this.plugin.settings.graphSettings.zoomSpeed) - .onChange((newValue) => { - this.plugin.settings.graphSettings.zoomSpeed = newValue; - this.plugin.settings.embedSettings.zoomSpeed = newValue; - this.plugin.settings.globalGraphSettings.zoomSpeed = newValue; - this.plugin.saveData(this.plugin.settings); - }); - }); - // Not currently implemented - // new Setting(containerEl) - // .setName('Automatic expand') - // .setDesc('This will automatically expand the neighbourhood around any nodes clicked on or added to the graph. ' + - // 'This normally only happens when pressing E or when double-clicking.') - // .addToggle((toggle) => { - // toggle.setValue(this.plugin.settings.autoExpand) - // .onChange((new_value) => { - // this.plugin.settings.autoExpand = new_value; - // this.plugin.saveData(this.plugin.settings); - // }); - // }); - new obsidian.Setting(containerEl) - .setName('Hover on edges') - .setDesc('Hover on edges to show what they are connected to.') - .addToggle((toggle) => { - toggle.setValue(this.plugin.settings.graphSettings.hoverEdges) - .onChange((new_value) => { - this.plugin.settings.graphSettings.hoverEdges = new_value; - this.plugin.settings.embedSettings.hoverEdges = new_value; - this.plugin.settings.globalGraphSettings.hoverEdges = new_value; - this.plugin.saveData(this.plugin.settings); - }); - }); - new obsidian.Setting(containerEl) - .setName('Open with shift') - .setDesc('Only opens file when clicking on a node when shift is pressed.') - .addToggle((toggle) => { - toggle.setValue(this.plugin.settings.graphSettings.openWithShift) - .onChange((new_value) => { - this.plugin.settings.graphSettings.openWithShift = new_value; - this.plugin.settings.embedSettings.openWithShift = new_value; - this.plugin.settings.globalGraphSettings.openWithShift = new_value; - this.plugin.saveData(this.plugin.settings); - }); - }); - // new Setting(containerEl) - // .setName('Index note content') - // .setDesc('This will full-text index the content of notes. ' + - // 'This allows searching within notes using the Neo4j Bloom search bar. However, it could decrease performance.') - // .addToggle((toggle) => { - // toggle.setValue(this.plugin.settings.indexContent) - // .onChange((new_value) => { - // this.plugin.settings.indexContent = new_value; - // this.plugin.saveData(this.plugin.settings); - // }); - // }); - new obsidian.Setting(containerEl) - .setName('Typed links prefix') - .setDesc('Prefix to use for typed links. Default is \'-\'. Requires a server restart.') - .addText((text) => { - text.setPlaceholder('') - .setValue(this.plugin.settings.typedLinkPrefix) - .onChange((new_folder) => { - this.plugin.settings.typedLinkPrefix = new_folder; - this.plugin.saveData(this.plugin.settings); - }); - }); - new obsidian.Setting(containerEl) - .setName('Image server port') - .setDesc('Set the port of the image server. If you use multiple vaults, these need to be set differently. Default 3837.') - .addText((text) => { - text.setValue(this.plugin.settings.imgServerPort + '') - .setPlaceholder('3837') - .onChange((new_value) => { - this.plugin.settings.imgServerPort = parseInt(new_value.trim()); - this.plugin.saveData(this.plugin.settings); - }); - }); - new obsidian.Setting(containerEl) - .setName('Debug') - .setDesc('Enable debug mode, which prints a lot of stuff in the developers console.') - .addToggle((toggle) => { - toggle.setValue(this.plugin.settings.debug) - .onChange((new_value) => { - this.plugin.settings.debug = new_value; - this.plugin.saveData(this.plugin.settings); - }); - }); - } -} - -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function getDefaultExportFromCjs (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; -} - -function getAugmentedNamespace(n) { - if (n.__esModule) return n; - var a = Object.defineProperty({}, '__esModule', {value: true}); - Object.keys(n).forEach(function (k) { - var d = Object.getOwnPropertyDescriptor(n, k); - Object.defineProperty(a, k, d.get ? d : { - enumerable: true, - get: function () { - return n[k]; - } - }); - }); - return a; -} - -function createCommonjsModule(fn) { - var module = { exports: {} }; - return fn(module, module.exports), module.exports; -} - -function commonjsRequire (target) { - throw new Error('Could not dynamically require "' + target + '". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.'); -} - -/** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT$1 = 'Expected a function'; - -/** Used as references for various `Number` constants. */ -var NAN$1 = 0 / 0; - -/** `Object#toString` result references. */ -var symbolTag$4 = '[object Symbol]'; - -/** Used to match leading and trailing whitespace. */ -var reTrim = /^\s+|\s+$/g; - -/** Used to detect bad signed hexadecimal string values. */ -var reIsBadHex$1 = /^[-+]0x[0-9a-f]+$/i; - -/** Used to detect binary string values. */ -var reIsBinary$1 = /^0b[01]+$/i; - -/** Used to detect octal string values. */ -var reIsOctal$1 = /^0o[0-7]+$/i; - -/** Built-in method references without a dependency on `root`. */ -var freeParseInt$1 = parseInt; - -/** Detect free variable `global` from Node.js. */ -var freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; - -/** Detect free variable `self`. */ -var freeSelf$1 = typeof self == 'object' && self && self.Object === Object && self; - -/** Used as a reference to the global object. */ -var root$1 = freeGlobal$1 || freeSelf$1 || Function('return this')(); - -/** Used for built-in method references. */ -var objectProto$j = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString$1 = objectProto$j.toString; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax$3 = Math.max, - nativeMin = Math.min; - -/** - * Gets the timestamp of the number of milliseconds that have elapsed since - * the Unix epoch (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Date - * @returns {number} Returns the timestamp. - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => Logs the number of milliseconds it took for the deferred invocation. - */ -var now$1 = function() { - return root$1.Date.now(); -}; - -/** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed `func` invocations and a `flush` method to immediately invoke them. - * Provide `options` to indicate whether `func` should be invoked on the - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked - * with the last arguments provided to the debounced function. Subsequent - * calls to the debounced function return the result of the last `func` - * invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the debounced function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=false] - * Specify invoking on the leading edge of the timeout. - * @param {number} [options.maxWait] - * The maximum time `func` is allowed to be delayed before it's invoked. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // Avoid costly calculations while the window size is in flux. - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // Invoke `sendMail` when clicked, debouncing subsequent calls. - * jQuery(element).on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // Ensure `batchLog` is invoked once after 1 second of debounced calls. - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); - * var source = new EventSource('/stream'); - * jQuery(source).on('message', debounced); - * - * // Cancel the trailing debounced invocation. - * jQuery(window).on('popstate', debounced.cancel); - */ -function debounce$1(func, wait, options) { - var lastArgs, - lastThis, - maxWait, - result, - timerId, - lastCallTime, - lastInvokeTime = 0, - leading = false, - maxing = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT$1); - } - wait = toNumber$1(wait) || 0; - if (isObject$1(options)) { - leading = !!options.leading; - maxing = 'maxWait' in options; - maxWait = maxing ? nativeMax$3(toNumber$1(options.maxWait) || 0, wait) : maxWait; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function invokeFunc(time) { - var args = lastArgs, - thisArg = lastThis; - - lastArgs = lastThis = undefined; - lastInvokeTime = time; - result = func.apply(thisArg, args); - return result; - } - - function leadingEdge(time) { - // Reset any `maxWait` timer. - lastInvokeTime = time; - // Start the timer for the trailing edge. - timerId = setTimeout(timerExpired, wait); - // Invoke the leading edge. - return leading ? invokeFunc(time) : result; - } - - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime, - result = wait - timeSinceLastCall; - - return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result; - } - - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime; - - // Either this is the first call, activity has stopped and we're at the - // trailing edge, the system time has gone backwards and we're treating - // it as the trailing edge, or we've hit the `maxWait` limit. - return (lastCallTime === undefined || (timeSinceLastCall >= wait) || - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); - } - - function timerExpired() { - var time = now$1(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - // Restart the timer. - timerId = setTimeout(timerExpired, remainingWait(time)); - } - - function trailingEdge(time) { - timerId = undefined; - - // Only invoke if we have `lastArgs` which means `func` has been - // debounced at least once. - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined; - return result; - } - - function cancel() { - if (timerId !== undefined) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined; - } - - function flush() { - return timerId === undefined ? result : trailingEdge(now$1()); - } - - function debounced() { - var time = now$1(), - isInvoking = shouldInvoke(time); - - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - - if (isInvoking) { - if (timerId === undefined) { - return leadingEdge(lastCallTime); - } - if (maxing) { - // Handle invocations in a tight loop. - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined) { - timerId = setTimeout(timerExpired, wait); - } - return result; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; -} - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject$1(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike$1(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol$1(value) { - return typeof value == 'symbol' || - (isObjectLike$1(value) && objectToString$1.call(value) == symbolTag$4); -} - -/** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ -function toNumber$1(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol$1(value)) { - return NAN$1; - } - if (isObject$1(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject$1(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim, ''); - var isBinary = reIsBinary$1.test(value); - return (isBinary || reIsOctal$1.test(value)) - ? freeParseInt$1(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex$1.test(value) ? NAN$1 : +value); -} - -var lodash_debounce = debounce$1; - -var heap$1 = createCommonjsModule(function (module, exports) { -// Generated by CoffeeScript 1.8.0 -(function() { - var Heap, defaultCmp, floor, heapify, heappop, heappush, heappushpop, heapreplace, insort, min, nlargest, nsmallest, updateItem, _siftdown, _siftup; - - floor = Math.floor, min = Math.min; - - - /* - Default comparison function to be used - */ - - defaultCmp = function(x, y) { - if (x < y) { - return -1; - } - if (x > y) { - return 1; - } - return 0; - }; - - - /* - Insert item x in list a, and keep it sorted assuming a is sorted. - - If x is already in a, insert it to the right of the rightmost x. - - Optional args lo (default 0) and hi (default a.length) bound the slice - of a to be searched. - */ - - insort = function(a, x, lo, hi, cmp) { - var mid; - if (lo == null) { - lo = 0; - } - if (cmp == null) { - cmp = defaultCmp; - } - if (lo < 0) { - throw new Error('lo must be non-negative'); - } - if (hi == null) { - hi = a.length; - } - while (lo < hi) { - mid = floor((lo + hi) / 2); - if (cmp(x, a[mid]) < 0) { - hi = mid; - } else { - lo = mid + 1; - } - } - return ([].splice.apply(a, [lo, lo - lo].concat(x)), x); - }; - - - /* - Push item onto heap, maintaining the heap invariant. - */ - - heappush = function(array, item, cmp) { - if (cmp == null) { - cmp = defaultCmp; - } - array.push(item); - return _siftdown(array, 0, array.length - 1, cmp); - }; - - - /* - Pop the smallest item off the heap, maintaining the heap invariant. - */ - - heappop = function(array, cmp) { - var lastelt, returnitem; - if (cmp == null) { - cmp = defaultCmp; - } - lastelt = array.pop(); - if (array.length) { - returnitem = array[0]; - array[0] = lastelt; - _siftup(array, 0, cmp); - } else { - returnitem = lastelt; - } - return returnitem; - }; - - - /* - Pop and return the current smallest value, and add the new item. - - This is more efficient than heappop() followed by heappush(), and can be - more appropriate when using a fixed size heap. Note that the value - returned may be larger than item! That constrains reasonable use of - this routine unless written as part of a conditional replacement: - if item > array[0] - item = heapreplace(array, item) - */ - - heapreplace = function(array, item, cmp) { - var returnitem; - if (cmp == null) { - cmp = defaultCmp; - } - returnitem = array[0]; - array[0] = item; - _siftup(array, 0, cmp); - return returnitem; - }; - - - /* - Fast version of a heappush followed by a heappop. - */ - - heappushpop = function(array, item, cmp) { - var _ref; - if (cmp == null) { - cmp = defaultCmp; - } - if (array.length && cmp(array[0], item) < 0) { - _ref = [array[0], item], item = _ref[0], array[0] = _ref[1]; - _siftup(array, 0, cmp); - } - return item; - }; - - - /* - Transform list into a heap, in-place, in O(array.length) time. - */ - - heapify = function(array, cmp) { - var i, _i, _len, _ref1, _results, _results1; - if (cmp == null) { - cmp = defaultCmp; - } - _ref1 = (function() { - _results1 = []; - for (var _j = 0, _ref = floor(array.length / 2); 0 <= _ref ? _j < _ref : _j > _ref; 0 <= _ref ? _j++ : _j--){ _results1.push(_j); } - return _results1; - }).apply(this).reverse(); - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - i = _ref1[_i]; - _results.push(_siftup(array, i, cmp)); - } - return _results; - }; - - - /* - Update the position of the given item in the heap. - This function should be called every time the item is being modified. - */ - - updateItem = function(array, item, cmp) { - var pos; - if (cmp == null) { - cmp = defaultCmp; - } - pos = array.indexOf(item); - if (pos === -1) { - return; - } - _siftdown(array, 0, pos, cmp); - return _siftup(array, pos, cmp); - }; - - - /* - Find the n largest elements in a dataset. - */ - - nlargest = function(array, n, cmp) { - var elem, result, _i, _len, _ref; - if (cmp == null) { - cmp = defaultCmp; - } - result = array.slice(0, n); - if (!result.length) { - return result; - } - heapify(result, cmp); - _ref = array.slice(n); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - elem = _ref[_i]; - heappushpop(result, elem, cmp); - } - return result.sort(cmp).reverse(); - }; - - - /* - Find the n smallest elements in a dataset. - */ - - nsmallest = function(array, n, cmp) { - var elem, los, result, _i, _j, _len, _ref, _ref1, _results; - if (cmp == null) { - cmp = defaultCmp; - } - if (n * 10 <= array.length) { - result = array.slice(0, n).sort(cmp); - if (!result.length) { - return result; - } - los = result[result.length - 1]; - _ref = array.slice(n); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - elem = _ref[_i]; - if (cmp(elem, los) < 0) { - insort(result, elem, 0, null, cmp); - result.pop(); - los = result[result.length - 1]; - } - } - return result; - } - heapify(array, cmp); - _results = []; - for (_j = 0, _ref1 = min(n, array.length); 0 <= _ref1 ? _j < _ref1 : _j > _ref1; 0 <= _ref1 ? ++_j : --_j) { - _results.push(heappop(array, cmp)); - } - return _results; - }; - - _siftdown = function(array, startpos, pos, cmp) { - var newitem, parent, parentpos; - if (cmp == null) { - cmp = defaultCmp; - } - newitem = array[pos]; - while (pos > startpos) { - parentpos = (pos - 1) >> 1; - parent = array[parentpos]; - if (cmp(newitem, parent) < 0) { - array[pos] = parent; - pos = parentpos; - continue; - } - break; - } - return array[pos] = newitem; - }; - - _siftup = function(array, pos, cmp) { - var childpos, endpos, newitem, rightpos, startpos; - if (cmp == null) { - cmp = defaultCmp; - } - endpos = array.length; - startpos = pos; - newitem = array[pos]; - childpos = 2 * pos + 1; - while (childpos < endpos) { - rightpos = childpos + 1; - if (rightpos < endpos && !(cmp(array[childpos], array[rightpos]) < 0)) { - childpos = rightpos; - } - array[pos] = array[childpos]; - pos = childpos; - childpos = 2 * pos + 1; - } - array[pos] = newitem; - return _siftdown(array, startpos, pos, cmp); - }; - - Heap = (function() { - Heap.push = heappush; - - Heap.pop = heappop; - - Heap.replace = heapreplace; - - Heap.pushpop = heappushpop; - - Heap.heapify = heapify; - - Heap.updateItem = updateItem; - - Heap.nlargest = nlargest; - - Heap.nsmallest = nsmallest; - - function Heap(cmp) { - this.cmp = cmp != null ? cmp : defaultCmp; - this.nodes = []; - } - - Heap.prototype.push = function(x) { - return heappush(this.nodes, x, this.cmp); - }; - - Heap.prototype.pop = function() { - return heappop(this.nodes, this.cmp); - }; - - Heap.prototype.peek = function() { - return this.nodes[0]; - }; - - Heap.prototype.contains = function(x) { - return this.nodes.indexOf(x) !== -1; - }; - - Heap.prototype.replace = function(x) { - return heapreplace(this.nodes, x, this.cmp); - }; - - Heap.prototype.pushpop = function(x) { - return heappushpop(this.nodes, x, this.cmp); - }; - - Heap.prototype.heapify = function() { - return heapify(this.nodes, this.cmp); - }; - - Heap.prototype.updateItem = function(x) { - return updateItem(this.nodes, x, this.cmp); - }; - - Heap.prototype.clear = function() { - return this.nodes = []; - }; - - Heap.prototype.empty = function() { - return this.nodes.length === 0; - }; - - Heap.prototype.size = function() { - return this.nodes.length; - }; - - Heap.prototype.clone = function() { - var heap; - heap = new Heap(); - heap.nodes = this.nodes.slice(0); - return heap; - }; - - Heap.prototype.toArray = function() { - return this.nodes.slice(0); - }; - - Heap.prototype.insert = Heap.prototype.push; - - Heap.prototype.top = Heap.prototype.peek; - - Heap.prototype.front = Heap.prototype.peek; - - Heap.prototype.has = Heap.prototype.contains; - - Heap.prototype.copy = Heap.prototype.clone; - - return Heap; - - })(); - - (function(root, factory) { - { - return module.exports = factory(); - } - })(this, function() { - return Heap; - }); - -}).call(commonjsGlobal); -}); - -var heap = heap$1; - -/** - * Copyright (c) 2016-2021, The Cytoscape Consortium. - * - * 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. - */ - -function _interopDefault$1 (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var util$2 = _interopDefault$1(lodash_debounce); -var Heap = _interopDefault$1(heap); - -function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); -} - -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} - -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} - -function _defineProperty$1(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -} - -function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); -} - -function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; -} - -function _iterableToArrayLimit(arr, i) { - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; -} - -function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); -} - -var window$1 = typeof window === 'undefined' ? null : window; // eslint-disable-line no-undef - -var navigator$1 = window$1 ? window$1.navigator : null; -window$1 ? window$1.document : null; - -var typeofstr = _typeof(''); - -var typeofobj = _typeof({}); - -var typeoffn = _typeof(function () {}); - -var typeofhtmlele = typeof HTMLElement === "undefined" ? "undefined" : _typeof(HTMLElement); - -var instanceStr = function instanceStr(obj) { - return obj && obj.instanceString && fn(obj.instanceString) ? obj.instanceString() : null; -}; - -var string = function string(obj) { - return obj != null && _typeof(obj) == typeofstr; -}; -var fn = function fn(obj) { - return obj != null && _typeof(obj) === typeoffn; -}; -var array = function array(obj) { - return !elementOrCollection(obj) && (Array.isArray ? Array.isArray(obj) : obj != null && obj instanceof Array); -}; -var plainObject = function plainObject(obj) { - return obj != null && _typeof(obj) === typeofobj && !array(obj) && obj.constructor === Object; -}; -var object = function object(obj) { - return obj != null && _typeof(obj) === typeofobj; -}; -var number = function number(obj) { - return obj != null && _typeof(obj) === _typeof(1) && !isNaN(obj); -}; -var integer = function integer(obj) { - return number(obj) && Math.floor(obj) === obj; -}; -var htmlElement = function htmlElement(obj) { - if ('undefined' === typeofhtmlele) { - return undefined; - } else { - return null != obj && obj instanceof HTMLElement; - } -}; -var elementOrCollection = function elementOrCollection(obj) { - return element(obj) || collection(obj); -}; -var element = function element(obj) { - return instanceStr(obj) === 'collection' && obj._private.single; -}; -var collection = function collection(obj) { - return instanceStr(obj) === 'collection' && !obj._private.single; -}; -var core = function core(obj) { - return instanceStr(obj) === 'core'; -}; -var stylesheet = function stylesheet(obj) { - return instanceStr(obj) === 'stylesheet'; -}; -var event = function event(obj) { - return instanceStr(obj) === 'event'; -}; -var emptyString = function emptyString(obj) { - if (obj === undefined || obj === null) { - // null is empty - return true; - } else if (obj === '' || obj.match(/^\s+$/)) { - return true; // empty string is empty - } - - return false; // otherwise, we don't know what we've got -}; -var domElement = function domElement(obj) { - if (typeof HTMLElement === 'undefined') { - return false; // we're not in a browser so it doesn't matter - } else { - return obj instanceof HTMLElement; - } -}; -var boundingBox = function boundingBox(obj) { - return plainObject(obj) && number(obj.x1) && number(obj.x2) && number(obj.y1) && number(obj.y2); -}; -var promise = function promise(obj) { - return object(obj) && fn(obj.then); -}; -var ms = function ms() { - return navigator$1 && navigator$1.userAgent.match(/msie|trident|edge/i); -}; // probably a better way to detect this... - -var memoize$1 = function memoize(fn, keyFn) { - if (!keyFn) { - keyFn = function keyFn() { - if (arguments.length === 1) { - return arguments[0]; - } else if (arguments.length === 0) { - return 'undefined'; - } - - var args = []; - - for (var i = 0; i < arguments.length; i++) { - args.push(arguments[i]); - } - - return args.join('$'); - }; - } - - var memoizedFn = function memoizedFn() { - var self = this; - var args = arguments; - var ret; - var k = keyFn.apply(self, args); - var cache = memoizedFn.cache; - - if (!(ret = cache[k])) { - ret = cache[k] = fn.apply(self, args); - } - - return ret; - }; - - memoizedFn.cache = {}; - return memoizedFn; -}; - -var camel2dash = memoize$1(function (str) { - return str.replace(/([A-Z])/g, function (v) { - return '-' + v.toLowerCase(); - }); -}); -var dash2camel = memoize$1(function (str) { - return str.replace(/(-\w)/g, function (v) { - return v[1].toUpperCase(); - }); -}); -var prependCamel = memoize$1(function (prefix, str) { - return prefix + str[0].toUpperCase() + str.substring(1); -}, function (prefix, str) { - return prefix + '$' + str; -}); -var capitalize = function capitalize(str) { - if (emptyString(str)) { - return str; - } - - return str.charAt(0).toUpperCase() + str.substring(1); -}; - -var number$1 = '(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))'; -var rgba = 'rgb[a]?\\((' + number$1 + '[%]?)\\s*,\\s*(' + number$1 + '[%]?)\\s*,\\s*(' + number$1 + '[%]?)(?:\\s*,\\s*(' + number$1 + '))?\\)'; -var rgbaNoBackRefs = 'rgb[a]?\\((?:' + number$1 + '[%]?)\\s*,\\s*(?:' + number$1 + '[%]?)\\s*,\\s*(?:' + number$1 + '[%]?)(?:\\s*,\\s*(?:' + number$1 + '))?\\)'; -var hsla = 'hsl[a]?\\((' + number$1 + ')\\s*,\\s*(' + number$1 + '[%])\\s*,\\s*(' + number$1 + '[%])(?:\\s*,\\s*(' + number$1 + '))?\\)'; -var hslaNoBackRefs = 'hsl[a]?\\((?:' + number$1 + ')\\s*,\\s*(?:' + number$1 + '[%])\\s*,\\s*(?:' + number$1 + '[%])(?:\\s*,\\s*(?:' + number$1 + '))?\\)'; -var hex3 = '\\#[0-9a-fA-F]{3}'; -var hex6 = '\\#[0-9a-fA-F]{6}'; - -var ascending = function ascending(a, b) { - if (a < b) { - return -1; - } else if (a > b) { - return 1; - } else { - return 0; - } -}; -var descending = function descending(a, b) { - return -1 * ascending(a, b); -}; - -var extend = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { - var args = arguments; - - for (var i = 1; i < args.length; i++) { - var obj = args[i]; - - if (obj == null) { - continue; - } - - var keys = Object.keys(obj); - - for (var j = 0; j < keys.length; j++) { - var k = keys[j]; - tgt[k] = obj[k]; - } - } - - return tgt; -}; - -var hex2tuple = function hex2tuple(hex) { - if (!(hex.length === 4 || hex.length === 7) || hex[0] !== '#') { - return; - } - - var shortHex = hex.length === 4; - var r, g, b; - var base = 16; - - if (shortHex) { - r = parseInt(hex[1] + hex[1], base); - g = parseInt(hex[2] + hex[2], base); - b = parseInt(hex[3] + hex[3], base); - } else { - r = parseInt(hex[1] + hex[2], base); - g = parseInt(hex[3] + hex[4], base); - b = parseInt(hex[5] + hex[6], base); - } - - return [r, g, b]; -}; // get [r, g, b, a] from hsl(0, 0, 0) or hsla(0, 0, 0, 0) - -var hsl2tuple = function hsl2tuple(hsl) { - var ret; - var h, s, l, a, r, g, b; - - function hue2rgb(p, q, t) { - if (t < 0) t += 1; - if (t > 1) t -= 1; - if (t < 1 / 6) return p + (q - p) * 6 * t; - if (t < 1 / 2) return q; - if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; - return p; - } - - var m = new RegExp('^' + hsla + '$').exec(hsl); - - if (m) { - // get hue - h = parseInt(m[1]); - - if (h < 0) { - h = (360 - -1 * h % 360) % 360; - } else if (h > 360) { - h = h % 360; - } - - h /= 360; // normalise on [0, 1] - - s = parseFloat(m[2]); - - if (s < 0 || s > 100) { - return; - } // saturation is [0, 100] - - - s = s / 100; // normalise on [0, 1] - - l = parseFloat(m[3]); - - if (l < 0 || l > 100) { - return; - } // lightness is [0, 100] - - - l = l / 100; // normalise on [0, 1] - - a = m[4]; - - if (a !== undefined) { - a = parseFloat(a); - - if (a < 0 || a > 1) { - return; - } // alpha is [0, 1] - - } // now, convert to rgb - // code from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript - - - if (s === 0) { - r = g = b = Math.round(l * 255); // achromatic - } else { - var q = l < 0.5 ? l * (1 + s) : l + s - l * s; - var p = 2 * l - q; - r = Math.round(255 * hue2rgb(p, q, h + 1 / 3)); - g = Math.round(255 * hue2rgb(p, q, h)); - b = Math.round(255 * hue2rgb(p, q, h - 1 / 3)); - } - - ret = [r, g, b, a]; - } - - return ret; -}; // get [r, g, b, a] from rgb(0, 0, 0) or rgba(0, 0, 0, 0) - -var rgb2tuple = function rgb2tuple(rgb) { - var ret; - var m = new RegExp('^' + rgba + '$').exec(rgb); - - if (m) { - ret = []; - var isPct = []; - - for (var i = 1; i <= 3; i++) { - var channel = m[i]; - - if (channel[channel.length - 1] === '%') { - isPct[i] = true; - } - - channel = parseFloat(channel); - - if (isPct[i]) { - channel = channel / 100 * 255; // normalise to [0, 255] - } - - if (channel < 0 || channel > 255) { - return; - } // invalid channel value - - - ret.push(Math.floor(channel)); - } - - var atLeastOneIsPct = isPct[1] || isPct[2] || isPct[3]; - var allArePct = isPct[1] && isPct[2] && isPct[3]; - - if (atLeastOneIsPct && !allArePct) { - return; - } // must all be percent values if one is - - - var alpha = m[4]; - - if (alpha !== undefined) { - alpha = parseFloat(alpha); - - if (alpha < 0 || alpha > 1) { - return; - } // invalid alpha value - - - ret.push(alpha); - } - } - - return ret; -}; -var colorname2tuple = function colorname2tuple(color) { - return colors[color.toLowerCase()]; -}; -var color2tuple = function color2tuple(color) { - return (array(color) ? color : null) || colorname2tuple(color) || hex2tuple(color) || rgb2tuple(color) || hsl2tuple(color); -}; -var colors = { - // special colour names - transparent: [0, 0, 0, 0], - // NB alpha === 0 - // regular colours - aliceblue: [240, 248, 255], - antiquewhite: [250, 235, 215], - aqua: [0, 255, 255], - aquamarine: [127, 255, 212], - azure: [240, 255, 255], - beige: [245, 245, 220], - bisque: [255, 228, 196], - black: [0, 0, 0], - blanchedalmond: [255, 235, 205], - blue: [0, 0, 255], - blueviolet: [138, 43, 226], - brown: [165, 42, 42], - burlywood: [222, 184, 135], - cadetblue: [95, 158, 160], - chartreuse: [127, 255, 0], - chocolate: [210, 105, 30], - coral: [255, 127, 80], - cornflowerblue: [100, 149, 237], - cornsilk: [255, 248, 220], - crimson: [220, 20, 60], - cyan: [0, 255, 255], - darkblue: [0, 0, 139], - darkcyan: [0, 139, 139], - darkgoldenrod: [184, 134, 11], - darkgray: [169, 169, 169], - darkgreen: [0, 100, 0], - darkgrey: [169, 169, 169], - darkkhaki: [189, 183, 107], - darkmagenta: [139, 0, 139], - darkolivegreen: [85, 107, 47], - darkorange: [255, 140, 0], - darkorchid: [153, 50, 204], - darkred: [139, 0, 0], - darksalmon: [233, 150, 122], - darkseagreen: [143, 188, 143], - darkslateblue: [72, 61, 139], - darkslategray: [47, 79, 79], - darkslategrey: [47, 79, 79], - darkturquoise: [0, 206, 209], - darkviolet: [148, 0, 211], - deeppink: [255, 20, 147], - deepskyblue: [0, 191, 255], - dimgray: [105, 105, 105], - dimgrey: [105, 105, 105], - dodgerblue: [30, 144, 255], - firebrick: [178, 34, 34], - floralwhite: [255, 250, 240], - forestgreen: [34, 139, 34], - fuchsia: [255, 0, 255], - gainsboro: [220, 220, 220], - ghostwhite: [248, 248, 255], - gold: [255, 215, 0], - goldenrod: [218, 165, 32], - gray: [128, 128, 128], - grey: [128, 128, 128], - green: [0, 128, 0], - greenyellow: [173, 255, 47], - honeydew: [240, 255, 240], - hotpink: [255, 105, 180], - indianred: [205, 92, 92], - indigo: [75, 0, 130], - ivory: [255, 255, 240], - khaki: [240, 230, 140], - lavender: [230, 230, 250], - lavenderblush: [255, 240, 245], - lawngreen: [124, 252, 0], - lemonchiffon: [255, 250, 205], - lightblue: [173, 216, 230], - lightcoral: [240, 128, 128], - lightcyan: [224, 255, 255], - lightgoldenrodyellow: [250, 250, 210], - lightgray: [211, 211, 211], - lightgreen: [144, 238, 144], - lightgrey: [211, 211, 211], - lightpink: [255, 182, 193], - lightsalmon: [255, 160, 122], - lightseagreen: [32, 178, 170], - lightskyblue: [135, 206, 250], - lightslategray: [119, 136, 153], - lightslategrey: [119, 136, 153], - lightsteelblue: [176, 196, 222], - lightyellow: [255, 255, 224], - lime: [0, 255, 0], - limegreen: [50, 205, 50], - linen: [250, 240, 230], - magenta: [255, 0, 255], - maroon: [128, 0, 0], - mediumaquamarine: [102, 205, 170], - mediumblue: [0, 0, 205], - mediumorchid: [186, 85, 211], - mediumpurple: [147, 112, 219], - mediumseagreen: [60, 179, 113], - mediumslateblue: [123, 104, 238], - mediumspringgreen: [0, 250, 154], - mediumturquoise: [72, 209, 204], - mediumvioletred: [199, 21, 133], - midnightblue: [25, 25, 112], - mintcream: [245, 255, 250], - mistyrose: [255, 228, 225], - moccasin: [255, 228, 181], - navajowhite: [255, 222, 173], - navy: [0, 0, 128], - oldlace: [253, 245, 230], - olive: [128, 128, 0], - olivedrab: [107, 142, 35], - orange: [255, 165, 0], - orangered: [255, 69, 0], - orchid: [218, 112, 214], - palegoldenrod: [238, 232, 170], - palegreen: [152, 251, 152], - paleturquoise: [175, 238, 238], - palevioletred: [219, 112, 147], - papayawhip: [255, 239, 213], - peachpuff: [255, 218, 185], - peru: [205, 133, 63], - pink: [255, 192, 203], - plum: [221, 160, 221], - powderblue: [176, 224, 230], - purple: [128, 0, 128], - red: [255, 0, 0], - rosybrown: [188, 143, 143], - royalblue: [65, 105, 225], - saddlebrown: [139, 69, 19], - salmon: [250, 128, 114], - sandybrown: [244, 164, 96], - seagreen: [46, 139, 87], - seashell: [255, 245, 238], - sienna: [160, 82, 45], - silver: [192, 192, 192], - skyblue: [135, 206, 235], - slateblue: [106, 90, 205], - slategray: [112, 128, 144], - slategrey: [112, 128, 144], - snow: [255, 250, 250], - springgreen: [0, 255, 127], - steelblue: [70, 130, 180], - tan: [210, 180, 140], - teal: [0, 128, 128], - thistle: [216, 191, 216], - tomato: [255, 99, 71], - turquoise: [64, 224, 208], - violet: [238, 130, 238], - wheat: [245, 222, 179], - white: [255, 255, 255], - whitesmoke: [245, 245, 245], - yellow: [255, 255, 0], - yellowgreen: [154, 205, 50] -}; - -var setMap = function setMap(options) { - var obj = options.map; - var keys = options.keys; - var l = keys.length; - - for (var i = 0; i < l; i++) { - var key = keys[i]; - - if (plainObject(key)) { - throw Error('Tried to set map with object key'); - } - - if (i < keys.length - 1) { - // extend the map if necessary - if (obj[key] == null) { - obj[key] = {}; - } - - obj = obj[key]; - } else { - // set the value - obj[key] = options.value; - } - } -}; // gets the value in a map even if it's not built in places - -var getMap = function getMap(options) { - var obj = options.map; - var keys = options.keys; - var l = keys.length; - - for (var i = 0; i < l; i++) { - var key = keys[i]; - - if (plainObject(key)) { - throw Error('Tried to get map with object key'); - } - - obj = obj[key]; - - if (obj == null) { - return obj; - } - } - - return obj; -}; // deletes the entry in the map - -var performance$1 = window$1 ? window$1.performance : null; -var pnow = performance$1 && performance$1.now ? function () { - return performance$1.now(); -} : function () { - return Date.now(); -}; - -var raf = function () { - if (window$1) { - if (window$1.requestAnimationFrame) { - return function (fn) { - window$1.requestAnimationFrame(fn); - }; - } else if (window$1.mozRequestAnimationFrame) { - return function (fn) { - window$1.mozRequestAnimationFrame(fn); - }; - } else if (window$1.webkitRequestAnimationFrame) { - return function (fn) { - window$1.webkitRequestAnimationFrame(fn); - }; - } else if (window$1.msRequestAnimationFrame) { - return function (fn) { - window$1.msRequestAnimationFrame(fn); - }; - } - } - - return function (fn) { - if (fn) { - setTimeout(function () { - fn(pnow()); - }, 1000 / 60); - } - }; -}(); - -var requestAnimationFrame$1 = function requestAnimationFrame(fn) { - return raf(fn); -}; -var performanceNow = pnow; - -var DEFAULT_HASH_SEED = 9261; -var K = 65599; // 37 also works pretty well - -var DEFAULT_HASH_SEED_ALT = 5381; -var hashIterableInts = function hashIterableInts(iterator) { - var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED; - // sdbm/string-hash - var hash = seed; - var entry; - - for (;;) { - entry = iterator.next(); - - if (entry.done) { - break; - } - - hash = hash * K + entry.value | 0; - } - - return hash; -}; -var hashInt = function hashInt(num) { - var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED; - // sdbm/string-hash - return seed * K + num | 0; -}; -var hashIntAlt = function hashIntAlt(num) { - var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED_ALT; - // djb2/string-hash - return (seed << 5) + seed + num | 0; -}; -var combineHashes = function combineHashes(hash1, hash2) { - return hash1 * 0x200000 + hash2; -}; -var combineHashesArray = function combineHashesArray(hashes) { - return hashes[0] * 0x200000 + hashes[1]; -}; -var hashArrays = function hashArrays(hashes1, hashes2) { - return [hashInt(hashes1[0], hashes2[0]), hashIntAlt(hashes1[1], hashes2[1])]; -}; -var hashIntsArray = function hashIntsArray(ints, seed) { - var entry = { - value: 0, - done: false - }; - var i = 0; - var length = ints.length; - var iterator = { - next: function next() { - if (i < length) { - entry.value = ints[i++]; - } else { - entry.done = true; - } - - return entry; - } - }; - return hashIterableInts(iterator, seed); -}; -var hashString = function hashString(str, seed) { - var entry = { - value: 0, - done: false - }; - var i = 0; - var length = str.length; - var iterator = { - next: function next() { - if (i < length) { - entry.value = str.charCodeAt(i++); - } else { - entry.done = true; - } - - return entry; - } - }; - return hashIterableInts(iterator, seed); -}; -var hashStrings = function hashStrings() { - return hashStringsArray(arguments); -}; -var hashStringsArray = function hashStringsArray(strs) { - var hash; - - for (var i = 0; i < strs.length; i++) { - var str = strs[i]; - - if (i === 0) { - hash = hashString(str); - } else { - hash = hashString(str, hash); - } - } - - return hash; -}; - -/*global console */ -var warningsEnabled = true; -var warnSupported = console.warn != null; // eslint-disable-line no-console - -var traceSupported = console.trace != null; // eslint-disable-line no-console - -var MAX_INT = Number.MAX_SAFE_INTEGER || 9007199254740991; -var trueify = function trueify() { - return true; -}; -var falsify = function falsify() { - return false; -}; -var zeroify = function zeroify() { - return 0; -}; -var noop$1 = function noop() {}; -var error = function error(msg) { - throw new Error(msg); -}; -var warnings = function warnings(enabled) { - if (enabled !== undefined) { - warningsEnabled = !!enabled; - } else { - return warningsEnabled; - } -}; -var warn = function warn(msg) { - /* eslint-disable no-console */ - if (!warnings()) { - return; - } - - if (warnSupported) { - console.warn(msg); - } else { - console.log(msg); - - if (traceSupported) { - console.trace(); - } - } -}; -/* eslint-enable */ - -var clone$1 = function clone(obj) { - return extend({}, obj); -}; // gets a shallow copy of the argument - -var copy = function copy(obj) { - if (obj == null) { - return obj; - } - - if (array(obj)) { - return obj.slice(); - } else if (plainObject(obj)) { - return clone$1(obj); - } else { - return obj; - } -}; -var copyArray$1 = function copyArray(arr) { - return arr.slice(); -}; -var uuid = function uuid(a, b -/* placeholders */ -) { - for ( // loop :) - b = a = ''; // b - result , a - numeric letiable - a++ < 36; // - b += a * 51 & 52 // if "a" is not 9 or 14 or 19 or 24 - ? // return a random number or 4 - (a ^ 15 // if "a" is not 15 - ? // genetate a random number from 0 to 15 - 8 ^ Math.random() * (a ^ 20 ? 16 : 4) // unless "a" is 20, in which case a random number from 8 to 11 - : 4 // otherwise 4 - ).toString(16) : '-' // in other cases (if "a" is 9,14,19,24) insert "-" - ) { - } - - return b; -}; -var _staticEmptyObject = {}; -var staticEmptyObject = function staticEmptyObject() { - return _staticEmptyObject; -}; -var defaults$1 = function defaults(_defaults) { - var keys = Object.keys(_defaults); - return function (opts) { - var filledOpts = {}; - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var optVal = opts == null ? undefined : opts[key]; - filledOpts[key] = optVal === undefined ? _defaults[key] : optVal; - } - - return filledOpts; - }; -}; -var removeFromArray = function removeFromArray(arr, ele, oneCopy) { - for (var i = arr.length - 1; i >= 0; i--) { - if (arr[i] === ele) { - arr.splice(i, 1); - - if (oneCopy) { - break; - } - } - } -}; -var clearArray = function clearArray(arr) { - arr.splice(0, arr.length); -}; -var push = function push(arr, otherArr) { - for (var i = 0; i < otherArr.length; i++) { - var el = otherArr[i]; - arr.push(el); - } -}; -var getPrefixedProperty = function getPrefixedProperty(obj, propName, prefix) { - if (prefix) { - propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth - } - - return obj[propName]; -}; -var setPrefixedProperty = function setPrefixedProperty(obj, propName, prefix, value) { - if (prefix) { - propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth - } - - obj[propName] = value; -}; - -/* global Map */ -var ObjectMap = -/*#__PURE__*/ -function () { - function ObjectMap() { - _classCallCheck(this, ObjectMap); - - this._obj = {}; - } - - _createClass(ObjectMap, [{ - key: "set", - value: function set(key, val) { - this._obj[key] = val; - return this; - } - }, { - key: "delete", - value: function _delete(key) { - this._obj[key] = undefined; - return this; - } - }, { - key: "clear", - value: function clear() { - this._obj = {}; - } - }, { - key: "has", - value: function has(key) { - return this._obj[key] !== undefined; - } - }, { - key: "get", - value: function get(key) { - return this._obj[key]; - } - }]); - - return ObjectMap; -}(); - -var Map$1$1 = typeof Map !== 'undefined' ? Map : ObjectMap; - -/* global Set */ -var undef = "undefined" ; - -var ObjectSet = -/*#__PURE__*/ -function () { - function ObjectSet(arrayOrObjectSet) { - _classCallCheck(this, ObjectSet); - - this._obj = Object.create(null); - this.size = 0; - - if (arrayOrObjectSet != null) { - var arr; - - if (arrayOrObjectSet.instanceString != null && arrayOrObjectSet.instanceString() === this.instanceString()) { - arr = arrayOrObjectSet.toArray(); - } else { - arr = arrayOrObjectSet; - } - - for (var i = 0; i < arr.length; i++) { - this.add(arr[i]); - } - } - } - - _createClass(ObjectSet, [{ - key: "instanceString", - value: function instanceString() { - return 'set'; - } - }, { - key: "add", - value: function add(val) { - var o = this._obj; - - if (o[val] !== 1) { - o[val] = 1; - this.size++; - } - } - }, { - key: "delete", - value: function _delete(val) { - var o = this._obj; - - if (o[val] === 1) { - o[val] = 0; - this.size--; - } - } - }, { - key: "clear", - value: function clear() { - this._obj = Object.create(null); - } - }, { - key: "has", - value: function has(val) { - return this._obj[val] === 1; - } - }, { - key: "toArray", - value: function toArray() { - var _this = this; - - return Object.keys(this._obj).filter(function (key) { - return _this.has(key); - }); - } - }, { - key: "forEach", - value: function forEach(callback, thisArg) { - return this.toArray().forEach(callback, thisArg); - } - }]); - - return ObjectSet; -}(); - -var Set$1$1 = (typeof Set === "undefined" ? "undefined" : _typeof(Set)) !== undef ? Set : ObjectSet; - -var Element$1 = function Element(cy, params) { - var restore = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; - - if (cy === undefined || params === undefined || !core(cy)) { - error('An element must have a core reference and parameters set'); - return; - } - - var group = params.group; // try to automatically infer the group if unspecified - - if (group == null) { - if (params.data && params.data.source != null && params.data.target != null) { - group = 'edges'; - } else { - group = 'nodes'; - } - } // validate group - - - if (group !== 'nodes' && group !== 'edges') { - error('An element must be of type `nodes` or `edges`; you specified `' + group + '`'); - return; - } // make the element array-like, just like a collection - - - this.length = 1; - this[0] = this; // NOTE: when something is added here, add also to ele.json() - - var _p = this._private = { - cy: cy, - single: true, - // indicates this is an element - data: params.data || {}, - // data object - position: params.position || { - x: 0, - y: 0 - }, - // (x, y) position pair - autoWidth: undefined, - // width and height of nodes calculated by the renderer when set to special 'auto' value - autoHeight: undefined, - autoPadding: undefined, - compoundBoundsClean: false, - // whether the compound dimensions need to be recalculated the next time dimensions are read - listeners: [], - // array of bound listeners - group: group, - // string; 'nodes' or 'edges' - style: {}, - // properties as set by the style - rstyle: {}, - // properties for style sent from the renderer to the core - styleCxts: [], - // applied style contexts from the styler - styleKeys: {}, - // per-group keys of style property values - removed: true, - // whether it's inside the vis; true if removed (set true here since we call restore) - selected: params.selected ? true : false, - // whether it's selected - selectable: params.selectable === undefined ? true : params.selectable ? true : false, - // whether it's selectable - locked: params.locked ? true : false, - // whether the element is locked (cannot be moved) - grabbed: false, - // whether the element is grabbed by the mouse; renderer sets this privately - grabbable: params.grabbable === undefined ? true : params.grabbable ? true : false, - // whether the element can be grabbed - pannable: params.pannable === undefined ? group === 'edges' ? true : false : params.pannable ? true : false, - // whether the element has passthrough panning enabled - active: false, - // whether the element is active from user interaction - classes: new Set$1$1(), - // map ( className => true ) - animation: { - // object for currently-running animations - current: [], - queue: [] - }, - rscratch: {}, - // object in which the renderer can store information - scratch: params.scratch || {}, - // scratch objects - edges: [], - // array of connected edges - children: [], - // array of children - parent: null, - // parent ref - traversalCache: {}, - // cache of output of traversal functions - backgrounding: false, - // whether background images are loading - bbCache: null, - // cache of the current bounding box - bbCacheShift: { - x: 0, - y: 0 - }, - // shift applied to cached bb to be applied on next get - bodyBounds: null, - // bounds cache of element body, w/o overlay - overlayBounds: null, - // bounds cache of element body, including overlay - labelBounds: { - // bounds cache of labels - all: null, - source: null, - target: null, - main: null - }, - arrowBounds: { - // bounds cache of edge arrows - source: null, - target: null, - 'mid-source': null, - 'mid-target': null - } - }; - - if (_p.position.x == null) { - _p.position.x = 0; - } - - if (_p.position.y == null) { - _p.position.y = 0; - } // renderedPosition overrides if specified - - - if (params.renderedPosition) { - var rpos = params.renderedPosition; - var pan = cy.pan(); - var zoom = cy.zoom(); - _p.position = { - x: (rpos.x - pan.x) / zoom, - y: (rpos.y - pan.y) / zoom - }; - } - - var classes = []; - - if (array(params.classes)) { - classes = params.classes; - } else if (string(params.classes)) { - classes = params.classes.split(/\s+/); - } - - for (var i = 0, l = classes.length; i < l; i++) { - var cls = classes[i]; - - if (!cls || cls === '') { - continue; - } - - _p.classes.add(cls); - } - - this.createEmitter(); - var bypass = params.style || params.css; - - if (bypass) { - warn('Setting a `style` bypass at element creation should be done only when absolutely necessary. Try to use the stylesheet instead.'); - this.style(bypass); - } - - if (restore === undefined || restore) { - this.restore(); - } -}; - -var defineSearch = function defineSearch(params) { - params = { - bfs: params.bfs || !params.dfs, - dfs: params.dfs || !params.bfs - }; // from pseudocode on wikipedia - - return function searchFn(roots, fn$1, directed) { - var options; - - if (plainObject(roots) && !elementOrCollection(roots)) { - options = roots; - roots = options.roots || options.root; - fn$1 = options.visit; - directed = options.directed; - } - - directed = arguments.length === 2 && !fn(fn$1) ? fn$1 : directed; - fn$1 = fn(fn$1) ? fn$1 : function () {}; - var cy = this._private.cy; - var v = roots = string(roots) ? this.filter(roots) : roots; - var Q = []; - var connectedNodes = []; - var connectedBy = {}; - var id2depth = {}; - var V = {}; - var j = 0; - var found; - - var _this$byGroup = this.byGroup(), - nodes = _this$byGroup.nodes, - edges = _this$byGroup.edges; // enqueue v - - - for (var i = 0; i < v.length; i++) { - var vi = v[i]; - var viId = vi.id(); - - if (vi.isNode()) { - Q.unshift(vi); - - if (params.bfs) { - V[viId] = true; - connectedNodes.push(vi); - } - - id2depth[viId] = 0; - } - } - - var _loop2 = function _loop2() { - var v = params.bfs ? Q.shift() : Q.pop(); - var vId = v.id(); - - if (params.dfs) { - if (V[vId]) { - return "continue"; - } - - V[vId] = true; - connectedNodes.push(v); - } - - var depth = id2depth[vId]; - var prevEdge = connectedBy[vId]; - var src = prevEdge != null ? prevEdge.source() : null; - var tgt = prevEdge != null ? prevEdge.target() : null; - var prevNode = prevEdge == null ? undefined : v.same(src) ? tgt[0] : src[0]; - var ret = void 0; - ret = fn$1(v, prevEdge, prevNode, j++, depth); - - if (ret === true) { - found = v; - return "break"; - } - - if (ret === false) { - return "break"; - } - - var vwEdges = v.connectedEdges().filter(function (e) { - return (!directed || e.source().same(v)) && edges.has(e); - }); - - for (var _i2 = 0; _i2 < vwEdges.length; _i2++) { - var e = vwEdges[_i2]; - var w = e.connectedNodes().filter(function (n) { - return !n.same(v) && nodes.has(n); - }); - var wId = w.id(); - - if (w.length !== 0 && !V[wId]) { - w = w[0]; - Q.push(w); - - if (params.bfs) { - V[wId] = true; - connectedNodes.push(w); - } - - connectedBy[wId] = e; - id2depth[wId] = id2depth[vId] + 1; - } - } - }; - - _loop: while (Q.length !== 0) { - var _ret = _loop2(); - - switch (_ret) { - case "continue": - continue; - - case "break": - break _loop; - } - } - - var connectedEles = cy.collection(); - - for (var _i = 0; _i < connectedNodes.length; _i++) { - var node = connectedNodes[_i]; - var edge = connectedBy[node.id()]; - - if (edge != null) { - connectedEles.push(edge); - } - - connectedEles.push(node); - } - - return { - path: cy.collection(connectedEles), - found: cy.collection(found) - }; - }; -}; // search, spanning trees, etc - - -var elesfn = { - breadthFirstSearch: defineSearch({ - bfs: true - }), - depthFirstSearch: defineSearch({ - dfs: true - }) -}; // nice, short mathemathical alias - -elesfn.bfs = elesfn.breadthFirstSearch; -elesfn.dfs = elesfn.depthFirstSearch; - -var dijkstraDefaults = defaults$1({ - root: null, - weight: function weight(edge) { - return 1; - }, - directed: false -}); -var elesfn$1 = { - dijkstra: function dijkstra(options) { - if (!plainObject(options)) { - var args = arguments; - options = { - root: args[0], - weight: args[1], - directed: args[2] - }; - } - - var _dijkstraDefaults = dijkstraDefaults(options), - root = _dijkstraDefaults.root, - weight = _dijkstraDefaults.weight, - directed = _dijkstraDefaults.directed; - - var eles = this; - var weightFn = weight; - var source = string(root) ? this.filter(root)[0] : root[0]; - var dist = {}; - var prev = {}; - var knownDist = {}; - - var _this$byGroup = this.byGroup(), - nodes = _this$byGroup.nodes, - edges = _this$byGroup.edges; - - edges.unmergeBy(function (ele) { - return ele.isLoop(); - }); - - var getDist = function getDist(node) { - return dist[node.id()]; - }; - - var setDist = function setDist(node, d) { - dist[node.id()] = d; - Q.updateItem(node); - }; - - var Q = new Heap(function (a, b) { - return getDist(a) - getDist(b); - }); - - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - dist[node.id()] = node.same(source) ? 0 : Infinity; - Q.push(node); - } - - var distBetween = function distBetween(u, v) { - var uvs = (directed ? u.edgesTo(v) : u.edgesWith(v)).intersect(edges); - var smallestDistance = Infinity; - var smallestEdge; - - for (var _i = 0; _i < uvs.length; _i++) { - var edge = uvs[_i]; - - var _weight = weightFn(edge); - - if (_weight < smallestDistance || !smallestEdge) { - smallestDistance = _weight; - smallestEdge = edge; - } - } - - return { - edge: smallestEdge, - dist: smallestDistance - }; - }; - - while (Q.size() > 0) { - var u = Q.pop(); - var smalletsDist = getDist(u); - var uid = u.id(); - knownDist[uid] = smalletsDist; - - if (smalletsDist === Infinity) { - continue; - } - - var neighbors = u.neighborhood().intersect(nodes); - - for (var _i2 = 0; _i2 < neighbors.length; _i2++) { - var v = neighbors[_i2]; - var vid = v.id(); - var vDist = distBetween(u, v); - var alt = smalletsDist + vDist.dist; - - if (alt < getDist(v)) { - setDist(v, alt); - prev[vid] = { - node: u, - edge: vDist.edge - }; - } - } // for - - } // while - - - return { - distanceTo: function distanceTo(node) { - var target = string(node) ? nodes.filter(node)[0] : node[0]; - return knownDist[target.id()]; - }, - pathTo: function pathTo(node) { - var target = string(node) ? nodes.filter(node)[0] : node[0]; - var S = []; - var u = target; - var uid = u.id(); - - if (target.length > 0) { - S.unshift(target); - - while (prev[uid]) { - var p = prev[uid]; - S.unshift(p.edge); - S.unshift(p.node); - u = p.node; - uid = u.id(); - } - } - - return eles.spawn(S); - } - }; - } -}; - -var elesfn$2 = { - // kruskal's algorithm (finds min spanning tree, assuming undirected graph) - // implemented from pseudocode from wikipedia - kruskal: function kruskal(weightFn) { - weightFn = weightFn || function (edge) { - return 1; - }; - - var _this$byGroup = this.byGroup(), - nodes = _this$byGroup.nodes, - edges = _this$byGroup.edges; - - var numNodes = nodes.length; - var forest = new Array(numNodes); - var A = nodes; // assumes byGroup() creates new collections that can be safely mutated - - var findSetIndex = function findSetIndex(ele) { - for (var i = 0; i < forest.length; i++) { - var eles = forest[i]; - - if (eles.has(ele)) { - return i; - } - } - }; // start with one forest per node - - - for (var i = 0; i < numNodes; i++) { - forest[i] = this.spawn(nodes[i]); - } - - var S = edges.sort(function (a, b) { - return weightFn(a) - weightFn(b); - }); - - for (var _i = 0; _i < S.length; _i++) { - var edge = S[_i]; - var u = edge.source()[0]; - var v = edge.target()[0]; - var setUIndex = findSetIndex(u); - var setVIndex = findSetIndex(v); - var setU = forest[setUIndex]; - var setV = forest[setVIndex]; - - if (setUIndex !== setVIndex) { - A.merge(edge); // combine forests for u and v - - setU.merge(setV); - forest.splice(setVIndex, 1); - } - } - - return A; - } -}; - -var aStarDefaults = defaults$1({ - root: null, - goal: null, - weight: function weight(edge) { - return 1; - }, - heuristic: function heuristic(edge) { - return 0; - }, - directed: false -}); -var elesfn$3 = { - // Implemented from pseudocode from wikipedia - aStar: function aStar(options) { - var cy = this.cy(); - - var _aStarDefaults = aStarDefaults(options), - root = _aStarDefaults.root, - goal = _aStarDefaults.goal, - heuristic = _aStarDefaults.heuristic, - directed = _aStarDefaults.directed, - weight = _aStarDefaults.weight; - - root = cy.collection(root)[0]; - goal = cy.collection(goal)[0]; - var sid = root.id(); - var tid = goal.id(); - var gScore = {}; - var fScore = {}; - var closedSetIds = {}; - var openSet = new Heap(function (a, b) { - return fScore[a.id()] - fScore[b.id()]; - }); - var openSetIds = new Set$1$1(); - var cameFrom = {}; - var cameFromEdge = {}; - - var addToOpenSet = function addToOpenSet(ele, id) { - openSet.push(ele); - openSetIds.add(id); - }; - - var cMin, cMinId; - - var popFromOpenSet = function popFromOpenSet() { - cMin = openSet.pop(); - cMinId = cMin.id(); - openSetIds["delete"](cMinId); - }; - - var isInOpenSet = function isInOpenSet(id) { - return openSetIds.has(id); - }; - - addToOpenSet(root, sid); - gScore[sid] = 0; - fScore[sid] = heuristic(root); // Counter - - var steps = 0; // Main loop - - while (openSet.size() > 0) { - popFromOpenSet(); - steps++; // If we've found our goal, then we are done - - if (cMinId === tid) { - var path = []; - var pathNode = goal; - var pathNodeId = tid; - var pathEdge = cameFromEdge[pathNodeId]; - - for (;;) { - path.unshift(pathNode); - - if (pathEdge != null) { - path.unshift(pathEdge); - } - - pathNode = cameFrom[pathNodeId]; - - if (pathNode == null) { - break; - } - - pathNodeId = pathNode.id(); - pathEdge = cameFromEdge[pathNodeId]; - } - - return { - found: true, - distance: gScore[cMinId], - path: this.spawn(path), - steps: steps - }; - } // Add cMin to processed nodes - - - closedSetIds[cMinId] = true; // Update scores for neighbors of cMin - // Take into account if graph is directed or not - - var vwEdges = cMin._private.edges; - - for (var i = 0; i < vwEdges.length; i++) { - var e = vwEdges[i]; // edge must be in set of calling eles - - if (!this.hasElementWithId(e.id())) { - continue; - } // cMin must be the source of edge if directed - - - if (directed && e.data('source') !== cMinId) { - continue; - } - - var wSrc = e.source(); - var wTgt = e.target(); - var w = wSrc.id() !== cMinId ? wSrc : wTgt; - var wid = w.id(); // node must be in set of calling eles - - if (!this.hasElementWithId(wid)) { - continue; - } // if node is in closedSet, ignore it - - - if (closedSetIds[wid]) { - continue; - } // New tentative score for node w - - - var tempScore = gScore[cMinId] + weight(e); // Update gScore for node w if: - // w not present in openSet - // OR - // tentative gScore is less than previous value - // w not in openSet - - if (!isInOpenSet(wid)) { - gScore[wid] = tempScore; - fScore[wid] = tempScore + heuristic(w); - addToOpenSet(w, wid); - cameFrom[wid] = cMin; - cameFromEdge[wid] = e; - continue; - } // w already in openSet, but with greater gScore - - - if (tempScore < gScore[wid]) { - gScore[wid] = tempScore; - fScore[wid] = tempScore + heuristic(w); - cameFrom[wid] = cMin; - cameFromEdge[wid] = e; - } - } // End of neighbors update - - } // End of main loop - // If we've reached here, then we've not reached our goal - - - return { - found: false, - distance: undefined, - path: undefined, - steps: steps - }; - } -}; // elesfn - -var floydWarshallDefaults = defaults$1({ - weight: function weight(edge) { - return 1; - }, - directed: false -}); -var elesfn$4 = { - // Implemented from pseudocode from wikipedia - floydWarshall: function floydWarshall(options) { - var cy = this.cy(); - - var _floydWarshallDefault = floydWarshallDefaults(options), - weight = _floydWarshallDefault.weight, - directed = _floydWarshallDefault.directed; - - var weightFn = weight; - - var _this$byGroup = this.byGroup(), - nodes = _this$byGroup.nodes, - edges = _this$byGroup.edges; - - var N = nodes.length; - var Nsq = N * N; - - var indexOf = function indexOf(node) { - return nodes.indexOf(node); - }; - - var atIndex = function atIndex(i) { - return nodes[i]; - }; // Initialize distance matrix - - - var dist = new Array(Nsq); - - for (var n = 0; n < Nsq; n++) { - var j = n % N; - var i = (n - j) / N; - - if (i === j) { - dist[n] = 0; - } else { - dist[n] = Infinity; - } - } // Initialize matrix used for path reconstruction - // Initialize distance matrix - - - var next = new Array(Nsq); - var edgeNext = new Array(Nsq); // Process edges - - for (var _i = 0; _i < edges.length; _i++) { - var edge = edges[_i]; - var src = edge.source()[0]; - var tgt = edge.target()[0]; - - if (src === tgt) { - continue; - } // exclude loops - - - var s = indexOf(src); - var t = indexOf(tgt); - var st = s * N + t; // source to target index - - var _weight = weightFn(edge); // Check if already process another edge between same 2 nodes - - - if (dist[st] > _weight) { - dist[st] = _weight; - next[st] = t; - edgeNext[st] = edge; - } // If undirected graph, process 'reversed' edge - - - if (!directed) { - var ts = t * N + s; // target to source index - - if (!directed && dist[ts] > _weight) { - dist[ts] = _weight; - next[ts] = s; - edgeNext[ts] = edge; - } - } - } // Main loop - - - for (var k = 0; k < N; k++) { - for (var _i2 = 0; _i2 < N; _i2++) { - var ik = _i2 * N + k; - - for (var _j = 0; _j < N; _j++) { - var ij = _i2 * N + _j; - var kj = k * N + _j; - - if (dist[ik] + dist[kj] < dist[ij]) { - dist[ij] = dist[ik] + dist[kj]; - next[ij] = next[ik]; - } - } - } - } - - var getArgEle = function getArgEle(ele) { - return (string(ele) ? cy.filter(ele) : ele)[0]; - }; - - var indexOfArgEle = function indexOfArgEle(ele) { - return indexOf(getArgEle(ele)); - }; - - var res = { - distance: function distance(from, to) { - var i = indexOfArgEle(from); - var j = indexOfArgEle(to); - return dist[i * N + j]; - }, - path: function path(from, to) { - var i = indexOfArgEle(from); - var j = indexOfArgEle(to); - var fromNode = atIndex(i); - - if (i === j) { - return fromNode.collection(); - } - - if (next[i * N + j] == null) { - return cy.collection(); - } - - var path = cy.collection(); - var prev = i; - var edge; - path.merge(fromNode); - - while (i !== j) { - prev = i; - i = next[i * N + j]; - edge = edgeNext[prev * N + i]; - path.merge(edge); - path.merge(atIndex(i)); - } - - return path; - } - }; - return res; - } // floydWarshall - -}; // elesfn - -var bellmanFordDefaults = defaults$1({ - weight: function weight(edge) { - return 1; - }, - directed: false, - root: null -}); -var elesfn$5 = { - // Implemented from pseudocode from wikipedia - bellmanFord: function bellmanFord(options) { - var _this = this; - - var _bellmanFordDefaults = bellmanFordDefaults(options), - weight = _bellmanFordDefaults.weight, - directed = _bellmanFordDefaults.directed, - root = _bellmanFordDefaults.root; - - var weightFn = weight; - var eles = this; - var cy = this.cy(); - - var _this$byGroup = this.byGroup(), - edges = _this$byGroup.edges, - nodes = _this$byGroup.nodes; - - var numNodes = nodes.length; - var infoMap = new Map$1$1(); - var hasNegativeWeightCycle = false; - var negativeWeightCycles = []; - root = cy.collection(root)[0]; // in case selector passed - - edges.unmergeBy(function (edge) { - return edge.isLoop(); - }); - var numEdges = edges.length; - - var getInfo = function getInfo(node) { - var obj = infoMap.get(node.id()); - - if (!obj) { - obj = {}; - infoMap.set(node.id(), obj); - } - - return obj; - }; - - var getNodeFromTo = function getNodeFromTo(to) { - return (string(to) ? cy.$(to) : to)[0]; - }; - - var distanceTo = function distanceTo(to) { - return getInfo(getNodeFromTo(to)).dist; - }; - - var pathTo = function pathTo(to) { - var thisStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : root; - var end = getNodeFromTo(to); - var path = []; - var node = end; - - for (;;) { - if (node == null) { - return _this.spawn(); - } - - var _getInfo = getInfo(node), - edge = _getInfo.edge, - pred = _getInfo.pred; - - path.unshift(node[0]); - - if (node.same(thisStart) && path.length > 0) { - break; - } - - if (edge != null) { - path.unshift(edge); - } - - node = pred; - } - - return eles.spawn(path); - }; // Initializations { dist, pred, edge } - - - for (var i = 0; i < numNodes; i++) { - var node = nodes[i]; - var info = getInfo(node); - - if (node.same(root)) { - info.dist = 0; - } else { - info.dist = Infinity; - } - - info.pred = null; - info.edge = null; - } // Edges relaxation - - - var replacedEdge = false; - - var checkForEdgeReplacement = function checkForEdgeReplacement(node1, node2, edge, info1, info2, weight) { - var dist = info1.dist + weight; - - if (dist < info2.dist && !edge.same(info1.edge)) { - info2.dist = dist; - info2.pred = node1; - info2.edge = edge; - replacedEdge = true; - } - }; - - for (var _i = 1; _i < numNodes; _i++) { - replacedEdge = false; - - for (var e = 0; e < numEdges; e++) { - var edge = edges[e]; - var src = edge.source(); - var tgt = edge.target(); - - var _weight = weightFn(edge); - - var srcInfo = getInfo(src); - var tgtInfo = getInfo(tgt); - checkForEdgeReplacement(src, tgt, edge, srcInfo, tgtInfo, _weight); // If undirected graph, we need to take into account the 'reverse' edge - - if (!directed) { - checkForEdgeReplacement(tgt, src, edge, tgtInfo, srcInfo, _weight); - } - } - - if (!replacedEdge) { - break; - } - } - - if (replacedEdge) { - // Check for negative weight cycles - for (var _e = 0; _e < numEdges; _e++) { - var _edge = edges[_e]; - - var _src = _edge.source(); - - var _tgt = _edge.target(); - - var _weight2 = weightFn(_edge); - - var srcDist = getInfo(_src).dist; - var tgtDist = getInfo(_tgt).dist; - - if (srcDist + _weight2 < tgtDist || !directed && tgtDist + _weight2 < srcDist) { - warn('Graph contains a negative weight cycle for Bellman-Ford'); - hasNegativeWeightCycle = true; - break; - } - } - } - - return { - distanceTo: distanceTo, - pathTo: pathTo, - hasNegativeWeightCycle: hasNegativeWeightCycle, - negativeWeightCycles: negativeWeightCycles - }; - } // bellmanFord - -}; // elesfn - -var sqrt2 = Math.sqrt(2); // Function which colapses 2 (meta) nodes into one -// Updates the remaining edge lists -// Receives as a paramater the edge which causes the collapse - -var collapse = function collapse(edgeIndex, nodeMap, remainingEdges) { - if (remainingEdges.length === 0) { - error("Karger-Stein must be run on a connected (sub)graph"); - } - - var edgeInfo = remainingEdges[edgeIndex]; - var sourceIn = edgeInfo[1]; - var targetIn = edgeInfo[2]; - var partition1 = nodeMap[sourceIn]; - var partition2 = nodeMap[targetIn]; - var newEdges = remainingEdges; // re-use array - // Delete all edges between partition1 and partition2 - - for (var i = newEdges.length - 1; i >= 0; i--) { - var edge = newEdges[i]; - var src = edge[1]; - var tgt = edge[2]; - - if (nodeMap[src] === partition1 && nodeMap[tgt] === partition2 || nodeMap[src] === partition2 && nodeMap[tgt] === partition1) { - newEdges.splice(i, 1); - } - } // All edges pointing to partition2 should now point to partition1 - - - for (var _i = 0; _i < newEdges.length; _i++) { - var _edge = newEdges[_i]; - - if (_edge[1] === partition2) { - // Check source - newEdges[_i] = _edge.slice(); // copy - - newEdges[_i][1] = partition1; - } else if (_edge[2] === partition2) { - // Check target - newEdges[_i] = _edge.slice(); // copy - - newEdges[_i][2] = partition1; - } - } // Move all nodes from partition2 to partition1 - - - for (var _i2 = 0; _i2 < nodeMap.length; _i2++) { - if (nodeMap[_i2] === partition2) { - nodeMap[_i2] = partition1; - } - } - - return newEdges; -}; // Contracts a graph until we reach a certain number of meta nodes - - -var contractUntil = function contractUntil(metaNodeMap, remainingEdges, size, sizeLimit) { - while (size > sizeLimit) { - // Choose an edge randomly - var edgeIndex = Math.floor(Math.random() * remainingEdges.length); // Collapse graph based on edge - - remainingEdges = collapse(edgeIndex, metaNodeMap, remainingEdges); - size--; - } - - return remainingEdges; -}; - -var elesfn$6 = { - // Computes the minimum cut of an undirected graph - // Returns the correct answer with high probability - kargerStein: function kargerStein() { - var _this = this; - - var _this$byGroup = this.byGroup(), - nodes = _this$byGroup.nodes, - edges = _this$byGroup.edges; - - edges.unmergeBy(function (edge) { - return edge.isLoop(); - }); - var numNodes = nodes.length; - var numEdges = edges.length; - var numIter = Math.ceil(Math.pow(Math.log(numNodes) / Math.LN2, 2)); - var stopSize = Math.floor(numNodes / sqrt2); - - if (numNodes < 2) { - error('At least 2 nodes are required for Karger-Stein algorithm'); - return undefined; - } // Now store edge destination as indexes - // Format for each edge (edge index, source node index, target node index) - - - var edgeIndexes = []; - - for (var i = 0; i < numEdges; i++) { - var e = edges[i]; - edgeIndexes.push([i, nodes.indexOf(e.source()), nodes.indexOf(e.target())]); - } // We will store the best cut found here - - - var minCutSize = Infinity; - var minCutEdgeIndexes = []; - var minCutNodeMap = new Array(numNodes); // Initial meta node partition - - var metaNodeMap = new Array(numNodes); - var metaNodeMap2 = new Array(numNodes); - - var copyNodesMap = function copyNodesMap(from, to) { - for (var _i3 = 0; _i3 < numNodes; _i3++) { - to[_i3] = from[_i3]; - } - }; // Main loop - - - for (var iter = 0; iter <= numIter; iter++) { - // Reset meta node partition - for (var _i4 = 0; _i4 < numNodes; _i4++) { - metaNodeMap[_i4] = _i4; - } // Contract until stop point (stopSize nodes) - - - var edgesState = contractUntil(metaNodeMap, edgeIndexes.slice(), numNodes, stopSize); - var edgesState2 = edgesState.slice(); // copy - // Create a copy of the colapsed nodes state - - copyNodesMap(metaNodeMap, metaNodeMap2); // Run 2 iterations starting in the stop state - - var res1 = contractUntil(metaNodeMap, edgesState, stopSize, 2); - var res2 = contractUntil(metaNodeMap2, edgesState2, stopSize, 2); // Is any of the 2 results the best cut so far? - - if (res1.length <= res2.length && res1.length < minCutSize) { - minCutSize = res1.length; - minCutEdgeIndexes = res1; - copyNodesMap(metaNodeMap, minCutNodeMap); - } else if (res2.length <= res1.length && res2.length < minCutSize) { - minCutSize = res2.length; - minCutEdgeIndexes = res2; - copyNodesMap(metaNodeMap2, minCutNodeMap); - } - } // end of main loop - // Construct result - - - var cut = this.spawn(minCutEdgeIndexes.map(function (e) { - return edges[e[0]]; - })); - var partition1 = this.spawn(); - var partition2 = this.spawn(); // traverse metaNodeMap for best cut - - var witnessNodePartition = minCutNodeMap[0]; - - for (var _i5 = 0; _i5 < minCutNodeMap.length; _i5++) { - var partitionId = minCutNodeMap[_i5]; - var node = nodes[_i5]; - - if (partitionId === witnessNodePartition) { - partition1.merge(node); - } else { - partition2.merge(node); - } - } // construct components corresponding to each disjoint subset of nodes - - - var constructComponent = function constructComponent(subset) { - var component = _this.spawn(); - - subset.forEach(function (node) { - component.merge(node); - node.connectedEdges().forEach(function (edge) { - // ensure edge is within calling collection and edge is not in cut - if (_this.contains(edge) && !cut.contains(edge)) { - component.merge(edge); - } - }); - }); - return component; - }; - - var components = [constructComponent(partition1), constructComponent(partition2)]; - var ret = { - cut: cut, - components: components, - // n.b. partitions are included to be compatible with the old api spec - // (could be removed in a future major version) - partition1: partition1, - partition2: partition2 - }; - return ret; - } -}; // elesfn - -var copyPosition = function copyPosition(p) { - return { - x: p.x, - y: p.y - }; -}; -var modelToRenderedPosition = function modelToRenderedPosition(p, zoom, pan) { - return { - x: p.x * zoom + pan.x, - y: p.y * zoom + pan.y - }; -}; -var renderedToModelPosition = function renderedToModelPosition(p, zoom, pan) { - return { - x: (p.x - pan.x) / zoom, - y: (p.y - pan.y) / zoom - }; -}; -var array2point = function array2point(arr) { - return { - x: arr[0], - y: arr[1] - }; -}; -var min$2 = function min(arr) { - var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; - var min = Infinity; - - for (var i = begin; i < end; i++) { - var val = arr[i]; - - if (isFinite(val)) { - min = Math.min(val, min); - } - } - - return min; -}; -var max$2 = function max(arr) { - var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; - var max = -Infinity; - - for (var i = begin; i < end; i++) { - var val = arr[i]; - - if (isFinite(val)) { - max = Math.max(val, max); - } - } - - return max; -}; -var mean = function mean(arr) { - var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; - var total = 0; - var n = 0; - - for (var i = begin; i < end; i++) { - var val = arr[i]; - - if (isFinite(val)) { - total += val; - n++; - } - } - - return total / n; -}; -var median = function median(arr) { - var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; - var copy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - var sort = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; - var includeHoles = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; - - if (copy) { - arr = arr.slice(begin, end); - } else { - if (end < arr.length) { - arr.splice(end, arr.length - end); - } - - if (begin > 0) { - arr.splice(0, begin); - } - } // all non finite (e.g. Infinity, NaN) elements must be -Infinity so they go to the start - - - var off = 0; // offset from non-finite values - - for (var i = arr.length - 1; i >= 0; i--) { - var v = arr[i]; - - if (includeHoles) { - if (!isFinite(v)) { - arr[i] = -Infinity; - off++; - } - } else { - // just remove it if we don't want to consider holes - arr.splice(i, 1); - } - } - - if (sort) { - arr.sort(function (a, b) { - return a - b; - }); // requires copy = true if you don't want to change the orig - } - - var len = arr.length; - var mid = Math.floor(len / 2); - - if (len % 2 !== 0) { - return arr[mid + 1 + off]; - } else { - return (arr[mid - 1 + off] + arr[mid + off]) / 2; - } -}; -var deg2rad = function deg2rad(deg) { - return Math.PI * deg / 180; -}; -var getAngleFromDisp = function getAngleFromDisp(dispX, dispY) { - return Math.atan2(dispY, dispX) - Math.PI / 2; -}; -var log2 = Math.log2 || function (n) { - return Math.log(n) / Math.log(2); -}; -var signum = function signum(x) { - if (x > 0) { - return 1; - } else if (x < 0) { - return -1; - } else { - return 0; - } -}; -var dist$1 = function dist(p1, p2) { - return Math.sqrt(sqdist(p1, p2)); -}; -var sqdist = function sqdist(p1, p2) { - var dx = p2.x - p1.x; - var dy = p2.y - p1.y; - return dx * dx + dy * dy; -}; -var inPlaceSumNormalize = function inPlaceSumNormalize(v) { - var length = v.length; // First, get sum of all elements - - var total = 0; - - for (var i = 0; i < length; i++) { - total += v[i]; - } // Now, divide each by the sum of all elements - - - for (var _i = 0; _i < length; _i++) { - v[_i] = v[_i] / total; - } - - return v; -}; - -var qbezierAt = function qbezierAt(p0, p1, p2, t) { - return (1 - t) * (1 - t) * p0 + 2 * (1 - t) * t * p1 + t * t * p2; -}; -var qbezierPtAt = function qbezierPtAt(p0, p1, p2, t) { - return { - x: qbezierAt(p0.x, p1.x, p2.x, t), - y: qbezierAt(p0.y, p1.y, p2.y, t) - }; -}; -var lineAt = function lineAt(p0, p1, t, d) { - var vec = { - x: p1.x - p0.x, - y: p1.y - p0.y - }; - var vecDist = dist$1(p0, p1); - var normVec = { - x: vec.x / vecDist, - y: vec.y / vecDist - }; - t = t == null ? 0 : t; - d = d != null ? d : t * vecDist; - return { - x: p0.x + normVec.x * d, - y: p0.y + normVec.y * d - }; -}; -var bound = function bound(min, val, max) { - return Math.max(min, Math.min(max, val)); -}; // makes a full bb (x1, y1, x2, y2, w, h) from implicit params - -var makeBoundingBox = function makeBoundingBox(bb) { - if (bb == null) { - return { - x1: Infinity, - y1: Infinity, - x2: -Infinity, - y2: -Infinity, - w: 0, - h: 0 - }; - } else if (bb.x1 != null && bb.y1 != null) { - if (bb.x2 != null && bb.y2 != null && bb.x2 >= bb.x1 && bb.y2 >= bb.y1) { - return { - x1: bb.x1, - y1: bb.y1, - x2: bb.x2, - y2: bb.y2, - w: bb.x2 - bb.x1, - h: bb.y2 - bb.y1 - }; - } else if (bb.w != null && bb.h != null && bb.w >= 0 && bb.h >= 0) { - return { - x1: bb.x1, - y1: bb.y1, - x2: bb.x1 + bb.w, - y2: bb.y1 + bb.h, - w: bb.w, - h: bb.h - }; - } - } -}; -var copyBoundingBox = function copyBoundingBox(bb) { - return { - x1: bb.x1, - x2: bb.x2, - w: bb.w, - y1: bb.y1, - y2: bb.y2, - h: bb.h - }; -}; -var clearBoundingBox = function clearBoundingBox(bb) { - bb.x1 = Infinity; - bb.y1 = Infinity; - bb.x2 = -Infinity; - bb.y2 = -Infinity; - bb.w = 0; - bb.h = 0; -}; -var updateBoundingBox = function updateBoundingBox(bb1, bb2) { - // update bb1 with bb2 bounds - bb1.x1 = Math.min(bb1.x1, bb2.x1); - bb1.x2 = Math.max(bb1.x2, bb2.x2); - bb1.w = bb1.x2 - bb1.x1; - bb1.y1 = Math.min(bb1.y1, bb2.y1); - bb1.y2 = Math.max(bb1.y2, bb2.y2); - bb1.h = bb1.y2 - bb1.y1; -}; -var expandBoundingBoxByPoint = function expandBoundingBoxByPoint(bb, x, y) { - bb.x1 = Math.min(bb.x1, x); - bb.x2 = Math.max(bb.x2, x); - bb.w = bb.x2 - bb.x1; - bb.y1 = Math.min(bb.y1, y); - bb.y2 = Math.max(bb.y2, y); - bb.h = bb.y2 - bb.y1; -}; -var expandBoundingBox = function expandBoundingBox(bb) { - var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - bb.x1 -= padding; - bb.x2 += padding; - bb.y1 -= padding; - bb.y2 += padding; - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - return bb; -}; -var expandBoundingBoxSides = function expandBoundingBoxSides(bb) { - var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0]; - var top, right, bottom, left; - - if (padding.length === 1) { - top = right = bottom = left = padding[0]; - } else if (padding.length === 2) { - top = bottom = padding[0]; - left = right = padding[1]; - } else if (padding.length === 4) { - var _padding = _slicedToArray(padding, 4); - - top = _padding[0]; - right = _padding[1]; - bottom = _padding[2]; - left = _padding[3]; - } - - bb.x1 -= left; - bb.x2 += right; - bb.y1 -= top; - bb.y2 += bottom; - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - return bb; -}; - -var assignBoundingBox = function assignBoundingBox(bb1, bb2) { - bb1.x1 = bb2.x1; - bb1.y1 = bb2.y1; - bb1.x2 = bb2.x2; - bb1.y2 = bb2.y2; - bb1.w = bb1.x2 - bb1.x1; - bb1.h = bb1.y2 - bb1.y1; -}; -var boundingBoxesIntersect = function boundingBoxesIntersect(bb1, bb2) { - // case: one bb to right of other - if (bb1.x1 > bb2.x2) { - return false; - } - - if (bb2.x1 > bb1.x2) { - return false; - } // case: one bb to left of other - - - if (bb1.x2 < bb2.x1) { - return false; - } - - if (bb2.x2 < bb1.x1) { - return false; - } // case: one bb above other - - - if (bb1.y2 < bb2.y1) { - return false; - } - - if (bb2.y2 < bb1.y1) { - return false; - } // case: one bb below other - - - if (bb1.y1 > bb2.y2) { - return false; - } - - if (bb2.y1 > bb1.y2) { - return false; - } // otherwise, must have some overlap - - - return true; -}; -var inBoundingBox = function inBoundingBox(bb, x, y) { - return bb.x1 <= x && x <= bb.x2 && bb.y1 <= y && y <= bb.y2; -}; -var pointInBoundingBox = function pointInBoundingBox(bb, pt) { - return inBoundingBox(bb, pt.x, pt.y); -}; -var boundingBoxInBoundingBox = function boundingBoxInBoundingBox(bb1, bb2) { - return inBoundingBox(bb1, bb2.x1, bb2.y1) && inBoundingBox(bb1, bb2.x2, bb2.y2); -}; -var roundRectangleIntersectLine = function roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding) { - var cornerRadius = getRoundRectangleRadius(width, height); - var halfWidth = width / 2; - var halfHeight = height / 2; // Check intersections with straight line segments - - var straightLineIntersections; // Top segment, left to right - - { - var topStartX = nodeX - halfWidth + cornerRadius - padding; - var topStartY = nodeY - halfHeight - padding; - var topEndX = nodeX + halfWidth - cornerRadius + padding; - var topEndY = topStartY; - straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false); - - if (straightLineIntersections.length > 0) { - return straightLineIntersections; - } - } // Right segment, top to bottom - - { - var rightStartX = nodeX + halfWidth + padding; - var rightStartY = nodeY - halfHeight + cornerRadius - padding; - var rightEndX = rightStartX; - var rightEndY = nodeY + halfHeight - cornerRadius + padding; - straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, rightStartX, rightStartY, rightEndX, rightEndY, false); - - if (straightLineIntersections.length > 0) { - return straightLineIntersections; - } - } // Bottom segment, left to right - - { - var bottomStartX = nodeX - halfWidth + cornerRadius - padding; - var bottomStartY = nodeY + halfHeight + padding; - var bottomEndX = nodeX + halfWidth - cornerRadius + padding; - var bottomEndY = bottomStartY; - straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, bottomStartX, bottomStartY, bottomEndX, bottomEndY, false); - - if (straightLineIntersections.length > 0) { - return straightLineIntersections; - } - } // Left segment, top to bottom - - { - var leftStartX = nodeX - halfWidth - padding; - var leftStartY = nodeY - halfHeight + cornerRadius - padding; - var leftEndX = leftStartX; - var leftEndY = nodeY + halfHeight - cornerRadius + padding; - straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, leftStartX, leftStartY, leftEndX, leftEndY, false); - - if (straightLineIntersections.length > 0) { - return straightLineIntersections; - } - } // Check intersections with arc segments - - var arcIntersections; // Top Left - - { - var topLeftCenterX = nodeX - halfWidth + cornerRadius; - var topLeftCenterY = nodeY - halfHeight + cornerRadius; - arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topLeftCenterX, topLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle - - if (arcIntersections.length > 0 && arcIntersections[0] <= topLeftCenterX && arcIntersections[1] <= topLeftCenterY) { - return [arcIntersections[0], arcIntersections[1]]; - } - } // Top Right - - { - var topRightCenterX = nodeX + halfWidth - cornerRadius; - var topRightCenterY = nodeY - halfHeight + cornerRadius; - arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topRightCenterX, topRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle - - if (arcIntersections.length > 0 && arcIntersections[0] >= topRightCenterX && arcIntersections[1] <= topRightCenterY) { - return [arcIntersections[0], arcIntersections[1]]; - } - } // Bottom Right - - { - var bottomRightCenterX = nodeX + halfWidth - cornerRadius; - var bottomRightCenterY = nodeY + halfHeight - cornerRadius; - arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomRightCenterX, bottomRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle - - if (arcIntersections.length > 0 && arcIntersections[0] >= bottomRightCenterX && arcIntersections[1] >= bottomRightCenterY) { - return [arcIntersections[0], arcIntersections[1]]; - } - } // Bottom Left - - { - var bottomLeftCenterX = nodeX - halfWidth + cornerRadius; - var bottomLeftCenterY = nodeY + halfHeight - cornerRadius; - arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomLeftCenterX, bottomLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle - - if (arcIntersections.length > 0 && arcIntersections[0] <= bottomLeftCenterX && arcIntersections[1] >= bottomLeftCenterY) { - return [arcIntersections[0], arcIntersections[1]]; - } - } - return []; // if nothing -}; -var inLineVicinity = function inLineVicinity(x, y, lx1, ly1, lx2, ly2, tolerance) { - var t = tolerance; - var x1 = Math.min(lx1, lx2); - var x2 = Math.max(lx1, lx2); - var y1 = Math.min(ly1, ly2); - var y2 = Math.max(ly1, ly2); - return x1 - t <= x && x <= x2 + t && y1 - t <= y && y <= y2 + t; -}; -var inBezierVicinity = function inBezierVicinity(x, y, x1, y1, x2, y2, x3, y3, tolerance) { - var bb = { - x1: Math.min(x1, x3, x2) - tolerance, - x2: Math.max(x1, x3, x2) + tolerance, - y1: Math.min(y1, y3, y2) - tolerance, - y2: Math.max(y1, y3, y2) + tolerance - }; // if outside the rough bounding box for the bezier, then it can't be a hit - - if (x < bb.x1 || x > bb.x2 || y < bb.y1 || y > bb.y2) { - // console.log('bezier out of rough bb') - return false; - } else { - // console.log('do more expensive check'); - return true; - } -}; -var solveQuadratic = function solveQuadratic(a, b, c, val) { - c -= val; - var r = b * b - 4 * a * c; - - if (r < 0) { - return []; - } - - var sqrtR = Math.sqrt(r); - var denom = 2 * a; - var root1 = (-b + sqrtR) / denom; - var root2 = (-b - sqrtR) / denom; - return [root1, root2]; -}; -var solveCubic = function solveCubic(a, b, c, d, result) { - // Solves a cubic function, returns root in form [r1, i1, r2, i2, r3, i3], where - // r is the real component, i is the imaginary component - // An implementation of the Cardano method from the year 1545 - // http://en.wikipedia.org/wiki/Cubic_function#The_nature_of_the_roots - var epsilon = 0.00001; // avoid division by zero while keeping the overall expression close in value - - if (a === 0) { - a = epsilon; - } - - b /= a; - c /= a; - d /= a; - var discriminant, q, r, dum1, s, t, term1, r13; - q = (3.0 * c - b * b) / 9.0; - r = -(27.0 * d) + b * (9.0 * c - 2.0 * (b * b)); - r /= 54.0; - discriminant = q * q * q + r * r; - result[1] = 0; - term1 = b / 3.0; - - if (discriminant > 0) { - s = r + Math.sqrt(discriminant); - s = s < 0 ? -Math.pow(-s, 1.0 / 3.0) : Math.pow(s, 1.0 / 3.0); - t = r - Math.sqrt(discriminant); - t = t < 0 ? -Math.pow(-t, 1.0 / 3.0) : Math.pow(t, 1.0 / 3.0); - result[0] = -term1 + s + t; - term1 += (s + t) / 2.0; - result[4] = result[2] = -term1; - term1 = Math.sqrt(3.0) * (-t + s) / 2; - result[3] = term1; - result[5] = -term1; - return; - } - - result[5] = result[3] = 0; - - if (discriminant === 0) { - r13 = r < 0 ? -Math.pow(-r, 1.0 / 3.0) : Math.pow(r, 1.0 / 3.0); - result[0] = -term1 + 2.0 * r13; - result[4] = result[2] = -(r13 + term1); - return; - } - - q = -q; - dum1 = q * q * q; - dum1 = Math.acos(r / Math.sqrt(dum1)); - r13 = 2.0 * Math.sqrt(q); - result[0] = -term1 + r13 * Math.cos(dum1 / 3.0); - result[2] = -term1 + r13 * Math.cos((dum1 + 2.0 * Math.PI) / 3.0); - result[4] = -term1 + r13 * Math.cos((dum1 + 4.0 * Math.PI) / 3.0); - return; -}; -var sqdistToQuadraticBezier = function sqdistToQuadraticBezier(x, y, x1, y1, x2, y2, x3, y3) { - // Find minimum distance by using the minimum of the distance - // function between the given point and the curve - // This gives the coefficients of the resulting cubic equation - // whose roots tell us where a possible minimum is - // (Coefficients are divided by 4) - var a = 1.0 * x1 * x1 - 4 * x1 * x2 + 2 * x1 * x3 + 4 * x2 * x2 - 4 * x2 * x3 + x3 * x3 + y1 * y1 - 4 * y1 * y2 + 2 * y1 * y3 + 4 * y2 * y2 - 4 * y2 * y3 + y3 * y3; - var b = 1.0 * 9 * x1 * x2 - 3 * x1 * x1 - 3 * x1 * x3 - 6 * x2 * x2 + 3 * x2 * x3 + 9 * y1 * y2 - 3 * y1 * y1 - 3 * y1 * y3 - 6 * y2 * y2 + 3 * y2 * y3; - var c = 1.0 * 3 * x1 * x1 - 6 * x1 * x2 + x1 * x3 - x1 * x + 2 * x2 * x2 + 2 * x2 * x - x3 * x + 3 * y1 * y1 - 6 * y1 * y2 + y1 * y3 - y1 * y + 2 * y2 * y2 + 2 * y2 * y - y3 * y; - var d = 1.0 * x1 * x2 - x1 * x1 + x1 * x - x2 * x + y1 * y2 - y1 * y1 + y1 * y - y2 * y; // debug("coefficients: " + a / a + ", " + b / a + ", " + c / a + ", " + d / a); - - var roots = []; // Use the cubic solving algorithm - - solveCubic(a, b, c, d, roots); - var zeroThreshold = 0.0000001; - var params = []; - - for (var index = 0; index < 6; index += 2) { - if (Math.abs(roots[index + 1]) < zeroThreshold && roots[index] >= 0 && roots[index] <= 1.0) { - params.push(roots[index]); - } - } - - params.push(1.0); - params.push(0.0); - var minDistanceSquared = -1; - var curX, curY, distSquared; - - for (var i = 0; i < params.length; i++) { - curX = Math.pow(1.0 - params[i], 2.0) * x1 + 2.0 * (1 - params[i]) * params[i] * x2 + params[i] * params[i] * x3; - curY = Math.pow(1 - params[i], 2.0) * y1 + 2 * (1.0 - params[i]) * params[i] * y2 + params[i] * params[i] * y3; - distSquared = Math.pow(curX - x, 2) + Math.pow(curY - y, 2); // debug('distance for param ' + params[i] + ": " + Math.sqrt(distSquared)); - - if (minDistanceSquared >= 0) { - if (distSquared < minDistanceSquared) { - minDistanceSquared = distSquared; - } - } else { - minDistanceSquared = distSquared; - } - } - - return minDistanceSquared; -}; -var sqdistToFiniteLine = function sqdistToFiniteLine(x, y, x1, y1, x2, y2) { - var offset = [x - x1, y - y1]; - var line = [x2 - x1, y2 - y1]; - var lineSq = line[0] * line[0] + line[1] * line[1]; - var hypSq = offset[0] * offset[0] + offset[1] * offset[1]; - var dotProduct = offset[0] * line[0] + offset[1] * line[1]; - var adjSq = dotProduct * dotProduct / lineSq; - - if (dotProduct < 0) { - return hypSq; - } - - if (adjSq > lineSq) { - return (x - x2) * (x - x2) + (y - y2) * (y - y2); - } - - return hypSq - adjSq; -}; -var pointInsidePolygonPoints = function pointInsidePolygonPoints(x, y, points) { - var x1, y1, x2, y2; - var y3; // Intersect with vertical line through (x, y) - - var up = 0; // let down = 0; - - for (var i = 0; i < points.length / 2; i++) { - x1 = points[i * 2]; - y1 = points[i * 2 + 1]; - - if (i + 1 < points.length / 2) { - x2 = points[(i + 1) * 2]; - y2 = points[(i + 1) * 2 + 1]; - } else { - x2 = points[(i + 1 - points.length / 2) * 2]; - y2 = points[(i + 1 - points.length / 2) * 2 + 1]; - } - - if (x1 == x && x2 == x) ; else if (x1 >= x && x >= x2 || x1 <= x && x <= x2) { - y3 = (x - x1) / (x2 - x1) * (y2 - y1) + y1; - - if (y3 > y) { - up++; - } // if( y3 < y ){ - // down++; - // } - - } else { - continue; - } - } - - if (up % 2 === 0) { - return false; - } else { - return true; - } -}; -var pointInsidePolygon = function pointInsidePolygon(x, y, basePoints, centerX, centerY, width, height, direction, padding) { - var transformedPoints = new Array(basePoints.length); // Gives negative angle - - var angle; - - if (direction[0] != null) { - angle = Math.atan(direction[1] / direction[0]); - - if (direction[0] < 0) { - angle = angle + Math.PI / 2; - } else { - angle = -angle - Math.PI / 2; - } - } else { - angle = direction; - } - - var cos = Math.cos(-angle); - var sin = Math.sin(-angle); // console.log("base: " + basePoints); - - for (var i = 0; i < transformedPoints.length / 2; i++) { - transformedPoints[i * 2] = width / 2 * (basePoints[i * 2] * cos - basePoints[i * 2 + 1] * sin); - transformedPoints[i * 2 + 1] = height / 2 * (basePoints[i * 2 + 1] * cos + basePoints[i * 2] * sin); - transformedPoints[i * 2] += centerX; - transformedPoints[i * 2 + 1] += centerY; - } - - var points; - - if (padding > 0) { - var expandedLineSet = expandPolygon(transformedPoints, -padding); - points = joinLines(expandedLineSet); - } else { - points = transformedPoints; - } - - return pointInsidePolygonPoints(x, y, points); -}; -var pointInsideRoundPolygon = function pointInsideRoundPolygon(x, y, basePoints, centerX, centerY, width, height) { - var cutPolygonPoints = new Array(basePoints.length); - var halfW = width / 2; - var halfH = height / 2; - var cornerRadius = getRoundPolygonRadius(width, height); - var squaredCornerRadius = cornerRadius * cornerRadius; - - for (var i = 0; i < basePoints.length / 4; i++) { - var sourceUv = void 0, - destUv = void 0; - - if (i === 0) { - sourceUv = basePoints.length - 2; - } else { - sourceUv = i * 4 - 2; - } - - destUv = i * 4 + 2; - var px = centerX + halfW * basePoints[i * 4]; - var py = centerY + halfH * basePoints[i * 4 + 1]; - var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1]; - var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2); - var cp0x = px - offset * basePoints[sourceUv]; - var cp0y = py - offset * basePoints[sourceUv + 1]; - var cp1x = px + offset * basePoints[destUv]; - var cp1y = py + offset * basePoints[destUv + 1]; - cutPolygonPoints[i * 4] = cp0x; - cutPolygonPoints[i * 4 + 1] = cp0y; - cutPolygonPoints[i * 4 + 2] = cp1x; - cutPolygonPoints[i * 4 + 3] = cp1y; - var orthx = basePoints[sourceUv + 1]; - var orthy = -basePoints[sourceUv]; - var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1]; - - if (cosAlpha < 0) { - orthx *= -1; - orthy *= -1; - } - - var cx = cp0x + orthx * cornerRadius; - var cy = cp0y + orthy * cornerRadius; - var squaredDistance = Math.pow(cx - x, 2) + Math.pow(cy - y, 2); - - if (squaredDistance <= squaredCornerRadius) { - return true; - } - } - - return pointInsidePolygonPoints(x, y, cutPolygonPoints); -}; -var joinLines = function joinLines(lineSet) { - var vertices = new Array(lineSet.length / 2); - var currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY; - var nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY; - - for (var i = 0; i < lineSet.length / 4; i++) { - currentLineStartX = lineSet[i * 4]; - currentLineStartY = lineSet[i * 4 + 1]; - currentLineEndX = lineSet[i * 4 + 2]; - currentLineEndY = lineSet[i * 4 + 3]; - - if (i < lineSet.length / 4 - 1) { - nextLineStartX = lineSet[(i + 1) * 4]; - nextLineStartY = lineSet[(i + 1) * 4 + 1]; - nextLineEndX = lineSet[(i + 1) * 4 + 2]; - nextLineEndY = lineSet[(i + 1) * 4 + 3]; - } else { - nextLineStartX = lineSet[0]; - nextLineStartY = lineSet[1]; - nextLineEndX = lineSet[2]; - nextLineEndY = lineSet[3]; - } - - var intersection = finiteLinesIntersect(currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY, nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY, true); - vertices[i * 2] = intersection[0]; - vertices[i * 2 + 1] = intersection[1]; - } - - return vertices; -}; -var expandPolygon = function expandPolygon(points, pad) { - var expandedLineSet = new Array(points.length * 2); - var currentPointX, currentPointY, nextPointX, nextPointY; - - for (var i = 0; i < points.length / 2; i++) { - currentPointX = points[i * 2]; - currentPointY = points[i * 2 + 1]; - - if (i < points.length / 2 - 1) { - nextPointX = points[(i + 1) * 2]; - nextPointY = points[(i + 1) * 2 + 1]; - } else { - nextPointX = points[0]; - nextPointY = points[1]; - } // Current line: [currentPointX, currentPointY] to [nextPointX, nextPointY] - // Assume CCW polygon winding - - - var offsetX = nextPointY - currentPointY; - var offsetY = -(nextPointX - currentPointX); // Normalize - - var offsetLength = Math.sqrt(offsetX * offsetX + offsetY * offsetY); - var normalizedOffsetX = offsetX / offsetLength; - var normalizedOffsetY = offsetY / offsetLength; - expandedLineSet[i * 4] = currentPointX + normalizedOffsetX * pad; - expandedLineSet[i * 4 + 1] = currentPointY + normalizedOffsetY * pad; - expandedLineSet[i * 4 + 2] = nextPointX + normalizedOffsetX * pad; - expandedLineSet[i * 4 + 3] = nextPointY + normalizedOffsetY * pad; - } - - return expandedLineSet; -}; -var intersectLineEllipse = function intersectLineEllipse(x, y, centerX, centerY, ellipseWradius, ellipseHradius) { - var dispX = centerX - x; - var dispY = centerY - y; - dispX /= ellipseWradius; - dispY /= ellipseHradius; - var len = Math.sqrt(dispX * dispX + dispY * dispY); - var newLength = len - 1; - - if (newLength < 0) { - return []; - } - - var lenProportion = newLength / len; - return [(centerX - x) * lenProportion + x, (centerY - y) * lenProportion + y]; -}; -var checkInEllipse = function checkInEllipse(x, y, width, height, centerX, centerY, padding) { - x -= centerX; - y -= centerY; - x /= width / 2 + padding; - y /= height / 2 + padding; - return x * x + y * y <= 1; -}; // Returns intersections of increasing distance from line's start point - -var intersectLineCircle = function intersectLineCircle(x1, y1, x2, y2, centerX, centerY, radius) { - // Calculate d, direction vector of line - var d = [x2 - x1, y2 - y1]; // Direction vector of line - - var f = [x1 - centerX, y1 - centerY]; - var a = d[0] * d[0] + d[1] * d[1]; - var b = 2 * (f[0] * d[0] + f[1] * d[1]); - var c = f[0] * f[0] + f[1] * f[1] - radius * radius; - var discriminant = b * b - 4 * a * c; - - if (discriminant < 0) { - return []; - } - - var t1 = (-b + Math.sqrt(discriminant)) / (2 * a); - var t2 = (-b - Math.sqrt(discriminant)) / (2 * a); - var tMin = Math.min(t1, t2); - var tMax = Math.max(t1, t2); - var inRangeParams = []; - - if (tMin >= 0 && tMin <= 1) { - inRangeParams.push(tMin); - } - - if (tMax >= 0 && tMax <= 1) { - inRangeParams.push(tMax); - } - - if (inRangeParams.length === 0) { - return []; - } - - var nearIntersectionX = inRangeParams[0] * d[0] + x1; - var nearIntersectionY = inRangeParams[0] * d[1] + y1; - - if (inRangeParams.length > 1) { - if (inRangeParams[0] == inRangeParams[1]) { - return [nearIntersectionX, nearIntersectionY]; - } else { - var farIntersectionX = inRangeParams[1] * d[0] + x1; - var farIntersectionY = inRangeParams[1] * d[1] + y1; - return [nearIntersectionX, nearIntersectionY, farIntersectionX, farIntersectionY]; - } - } else { - return [nearIntersectionX, nearIntersectionY]; - } -}; -var midOfThree = function midOfThree(a, b, c) { - if (b <= a && a <= c || c <= a && a <= b) { - return a; - } else if (a <= b && b <= c || c <= b && b <= a) { - return b; - } else { - return c; - } -}; // (x1,y1)=>(x2,y2) intersect with (x3,y3)=>(x4,y4) - -var finiteLinesIntersect = function finiteLinesIntersect(x1, y1, x2, y2, x3, y3, x4, y4, infiniteLines) { - var dx13 = x1 - x3; - var dx21 = x2 - x1; - var dx43 = x4 - x3; - var dy13 = y1 - y3; - var dy21 = y2 - y1; - var dy43 = y4 - y3; - var ua_t = dx43 * dy13 - dy43 * dx13; - var ub_t = dx21 * dy13 - dy21 * dx13; - var u_b = dy43 * dx21 - dx43 * dy21; - - if (u_b !== 0) { - var ua = ua_t / u_b; - var ub = ub_t / u_b; - var flptThreshold = 0.001; - - var _min = 0 - flptThreshold; - - var _max = 1 + flptThreshold; - - if (_min <= ua && ua <= _max && _min <= ub && ub <= _max) { - return [x1 + ua * dx21, y1 + ua * dy21]; - } else { - if (!infiniteLines) { - return []; - } else { - return [x1 + ua * dx21, y1 + ua * dy21]; - } - } - } else { - if (ua_t === 0 || ub_t === 0) { - // Parallel, coincident lines. Check if overlap - // Check endpoint of second line - if (midOfThree(x1, x2, x4) === x4) { - return [x4, y4]; - } // Check start point of second line - - - if (midOfThree(x1, x2, x3) === x3) { - return [x3, y3]; - } // Endpoint of first line - - - if (midOfThree(x3, x4, x2) === x2) { - return [x2, y2]; - } - - return []; - } else { - // Parallel, non-coincident - return []; - } - } -}; // math.polygonIntersectLine( x, y, basePoints, centerX, centerY, width, height, padding ) -// intersect a node polygon (pts transformed) -// -// math.polygonIntersectLine( x, y, basePoints, centerX, centerY ) -// intersect the points (no transform) - -var polygonIntersectLine = function polygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) { - var intersections = []; - var intersection; - var transformedPoints = new Array(basePoints.length); - var doTransform = true; - - if (width == null) { - doTransform = false; - } - - var points; - - if (doTransform) { - for (var i = 0; i < transformedPoints.length / 2; i++) { - transformedPoints[i * 2] = basePoints[i * 2] * width + centerX; - transformedPoints[i * 2 + 1] = basePoints[i * 2 + 1] * height + centerY; - } - - if (padding > 0) { - var expandedLineSet = expandPolygon(transformedPoints, -padding); - points = joinLines(expandedLineSet); - } else { - points = transformedPoints; - } - } else { - points = basePoints; - } - - var currentX, currentY, nextX, nextY; - - for (var _i2 = 0; _i2 < points.length / 2; _i2++) { - currentX = points[_i2 * 2]; - currentY = points[_i2 * 2 + 1]; - - if (_i2 < points.length / 2 - 1) { - nextX = points[(_i2 + 1) * 2]; - nextY = points[(_i2 + 1) * 2 + 1]; - } else { - nextX = points[0]; - nextY = points[1]; - } - - intersection = finiteLinesIntersect(x, y, centerX, centerY, currentX, currentY, nextX, nextY); - - if (intersection.length !== 0) { - intersections.push(intersection[0], intersection[1]); - } - } - - return intersections; -}; -var roundPolygonIntersectLine = function roundPolygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) { - var intersections = []; - var intersection; - var lines = new Array(basePoints.length); - var halfW = width / 2; - var halfH = height / 2; - var cornerRadius = getRoundPolygonRadius(width, height); - - for (var i = 0; i < basePoints.length / 4; i++) { - var sourceUv = void 0, - destUv = void 0; - - if (i === 0) { - sourceUv = basePoints.length - 2; - } else { - sourceUv = i * 4 - 2; - } - - destUv = i * 4 + 2; - var px = centerX + halfW * basePoints[i * 4]; - var py = centerY + halfH * basePoints[i * 4 + 1]; - var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1]; - var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2); - var cp0x = px - offset * basePoints[sourceUv]; - var cp0y = py - offset * basePoints[sourceUv + 1]; - var cp1x = px + offset * basePoints[destUv]; - var cp1y = py + offset * basePoints[destUv + 1]; - - if (i === 0) { - lines[basePoints.length - 2] = cp0x; - lines[basePoints.length - 1] = cp0y; - } else { - lines[i * 4 - 2] = cp0x; - lines[i * 4 - 1] = cp0y; - } - - lines[i * 4] = cp1x; - lines[i * 4 + 1] = cp1y; - var orthx = basePoints[sourceUv + 1]; - var orthy = -basePoints[sourceUv]; - var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1]; - - if (cosAlpha < 0) { - orthx *= -1; - orthy *= -1; - } - - var cx = cp0x + orthx * cornerRadius; - var cy = cp0y + orthy * cornerRadius; - intersection = intersectLineCircle(x, y, centerX, centerY, cx, cy, cornerRadius); - - if (intersection.length !== 0) { - intersections.push(intersection[0], intersection[1]); - } - } - - for (var _i3 = 0; _i3 < lines.length / 4; _i3++) { - intersection = finiteLinesIntersect(x, y, centerX, centerY, lines[_i3 * 4], lines[_i3 * 4 + 1], lines[_i3 * 4 + 2], lines[_i3 * 4 + 3], false); - - if (intersection.length !== 0) { - intersections.push(intersection[0], intersection[1]); - } - } - - if (intersections.length > 2) { - var lowestIntersection = [intersections[0], intersections[1]]; - var lowestSquaredDistance = Math.pow(lowestIntersection[0] - x, 2) + Math.pow(lowestIntersection[1] - y, 2); - - for (var _i4 = 1; _i4 < intersections.length / 2; _i4++) { - var squaredDistance = Math.pow(intersections[_i4 * 2] - x, 2) + Math.pow(intersections[_i4 * 2 + 1] - y, 2); - - if (squaredDistance <= lowestSquaredDistance) { - lowestIntersection[0] = intersections[_i4 * 2]; - lowestIntersection[1] = intersections[_i4 * 2 + 1]; - lowestSquaredDistance = squaredDistance; - } - } - - return lowestIntersection; - } - - return intersections; -}; -var shortenIntersection = function shortenIntersection(intersection, offset, amount) { - var disp = [intersection[0] - offset[0], intersection[1] - offset[1]]; - var length = Math.sqrt(disp[0] * disp[0] + disp[1] * disp[1]); - var lenRatio = (length - amount) / length; - - if (lenRatio < 0) { - lenRatio = 0.00001; - } - - return [offset[0] + lenRatio * disp[0], offset[1] + lenRatio * disp[1]]; -}; -var generateUnitNgonPointsFitToSquare = function generateUnitNgonPointsFitToSquare(sides, rotationRadians) { - var points = generateUnitNgonPoints(sides, rotationRadians); - points = fitPolygonToSquare(points); - return points; -}; -var fitPolygonToSquare = function fitPolygonToSquare(points) { - var x, y; - var sides = points.length / 2; - var minX = Infinity, - minY = Infinity, - maxX = -Infinity, - maxY = -Infinity; - - for (var i = 0; i < sides; i++) { - x = points[2 * i]; - y = points[2 * i + 1]; - minX = Math.min(minX, x); - maxX = Math.max(maxX, x); - minY = Math.min(minY, y); - maxY = Math.max(maxY, y); - } // stretch factors - - - var sx = 2 / (maxX - minX); - var sy = 2 / (maxY - minY); - - for (var _i5 = 0; _i5 < sides; _i5++) { - x = points[2 * _i5] = points[2 * _i5] * sx; - y = points[2 * _i5 + 1] = points[2 * _i5 + 1] * sy; - minX = Math.min(minX, x); - maxX = Math.max(maxX, x); - minY = Math.min(minY, y); - maxY = Math.max(maxY, y); - } - - if (minY < -1) { - for (var _i6 = 0; _i6 < sides; _i6++) { - y = points[2 * _i6 + 1] = points[2 * _i6 + 1] + (-1 - minY); - } - } - - return points; -}; -var generateUnitNgonPoints = function generateUnitNgonPoints(sides, rotationRadians) { - var increment = 1.0 / sides * 2 * Math.PI; - var startAngle = sides % 2 === 0 ? Math.PI / 2.0 + increment / 2.0 : Math.PI / 2.0; - startAngle += rotationRadians; - var points = new Array(sides * 2); - var currentAngle; - - for (var i = 0; i < sides; i++) { - currentAngle = i * increment + startAngle; - points[2 * i] = Math.cos(currentAngle); // x - - points[2 * i + 1] = Math.sin(-currentAngle); // y - } - - return points; -}; // Set the default radius, unless half of width or height is smaller than default - -var getRoundRectangleRadius = function getRoundRectangleRadius(width, height) { - return Math.min(width / 4, height / 4, 8); -}; // Set the default radius - -var getRoundPolygonRadius = function getRoundPolygonRadius(width, height) { - return Math.min(width / 10, height / 10, 8); -}; -var getCutRectangleCornerLength = function getCutRectangleCornerLength() { - return 8; -}; -var bezierPtsToQuadCoeff = function bezierPtsToQuadCoeff(p0, p1, p2) { - return [p0 - 2 * p1 + p2, 2 * (p1 - p0), p0]; -}; // get curve width, height, and control point position offsets as a percentage of node height / width - -var getBarrelCurveConstants = function getBarrelCurveConstants(width, height) { - return { - heightOffset: Math.min(15, 0.05 * height), - widthOffset: Math.min(100, 0.25 * width), - ctrlPtOffsetPct: 0.05 - }; -}; - -var pageRankDefaults = defaults$1({ - dampingFactor: 0.8, - precision: 0.000001, - iterations: 200, - weight: function weight(edge) { - return 1; - } -}); -var elesfn$7 = { - pageRank: function pageRank(options) { - var _pageRankDefaults = pageRankDefaults(options), - dampingFactor = _pageRankDefaults.dampingFactor, - precision = _pageRankDefaults.precision, - iterations = _pageRankDefaults.iterations, - weight = _pageRankDefaults.weight; - - var cy = this._private.cy; - - var _this$byGroup = this.byGroup(), - nodes = _this$byGroup.nodes, - edges = _this$byGroup.edges; - - var numNodes = nodes.length; - var numNodesSqd = numNodes * numNodes; - var numEdges = edges.length; // Construct transposed adjacency matrix - // First lets have a zeroed matrix of the right size - // We'll also keep track of the sum of each column - - var matrix = new Array(numNodesSqd); - var columnSum = new Array(numNodes); - var additionalProb = (1 - dampingFactor) / numNodes; // Create null matrix - - for (var i = 0; i < numNodes; i++) { - for (var j = 0; j < numNodes; j++) { - var n = i * numNodes + j; - matrix[n] = 0; - } - - columnSum[i] = 0; - } // Now, process edges - - - for (var _i = 0; _i < numEdges; _i++) { - var edge = edges[_i]; - var srcId = edge.data('source'); - var tgtId = edge.data('target'); // Don't include loops in the matrix - - if (srcId === tgtId) { - continue; - } - - var s = nodes.indexOfId(srcId); - var t = nodes.indexOfId(tgtId); - var w = weight(edge); - - var _n = t * numNodes + s; // Update matrix - - - matrix[_n] += w; // Update column sum - - columnSum[s] += w; - } // Add additional probability based on damping factor - // Also, take into account columns that have sum = 0 - - - var p = 1.0 / numNodes + additionalProb; // Shorthand - // Traverse matrix, column by column - - for (var _j = 0; _j < numNodes; _j++) { - if (columnSum[_j] === 0) { - // No 'links' out from node jth, assume equal probability for each possible node - for (var _i2 = 0; _i2 < numNodes; _i2++) { - var _n2 = _i2 * numNodes + _j; - - matrix[_n2] = p; - } - } else { - // Node jth has outgoing link, compute normalized probabilities - for (var _i3 = 0; _i3 < numNodes; _i3++) { - var _n3 = _i3 * numNodes + _j; - - matrix[_n3] = matrix[_n3] / columnSum[_j] + additionalProb; - } - } - } // Compute dominant eigenvector using power method - - - var eigenvector = new Array(numNodes); - var temp = new Array(numNodes); - var previous; // Start with a vector of all 1's - // Also, initialize a null vector which will be used as shorthand - - for (var _i4 = 0; _i4 < numNodes; _i4++) { - eigenvector[_i4] = 1; - } - - for (var iter = 0; iter < iterations; iter++) { - // Temp array with all 0's - for (var _i5 = 0; _i5 < numNodes; _i5++) { - temp[_i5] = 0; - } // Multiply matrix with previous result - - - for (var _i6 = 0; _i6 < numNodes; _i6++) { - for (var _j2 = 0; _j2 < numNodes; _j2++) { - var _n4 = _i6 * numNodes + _j2; - - temp[_i6] += matrix[_n4] * eigenvector[_j2]; - } - } - - inPlaceSumNormalize(temp); - previous = eigenvector; - eigenvector = temp; - temp = previous; - var diff = 0; // Compute difference (squared module) of both vectors - - for (var _i7 = 0; _i7 < numNodes; _i7++) { - var delta = previous[_i7] - eigenvector[_i7]; - diff += delta * delta; - } // If difference is less than the desired threshold, stop iterating - - - if (diff < precision) { - break; - } - } // Construct result - - - var res = { - rank: function rank(node) { - node = cy.collection(node)[0]; - return eigenvector[nodes.indexOf(node)]; - } - }; - return res; - } // pageRank - -}; // elesfn - -var defaults$1$1 = defaults$1({ - root: null, - weight: function weight(edge) { - return 1; - }, - directed: false, - alpha: 0 -}); -var elesfn$8 = { - degreeCentralityNormalized: function degreeCentralityNormalized(options) { - options = defaults$1$1(options); - var cy = this.cy(); - var nodes = this.nodes(); - var numNodes = nodes.length; - - if (!options.directed) { - var degrees = {}; - var maxDegree = 0; - - for (var i = 0; i < numNodes; i++) { - var node = nodes[i]; // add current node to the current options object and call degreeCentrality - - options.root = node; - var currDegree = this.degreeCentrality(options); - - if (maxDegree < currDegree.degree) { - maxDegree = currDegree.degree; - } - - degrees[node.id()] = currDegree.degree; - } - - return { - degree: function degree(node) { - if (maxDegree === 0) { - return 0; - } - - if (string(node)) { - // from is a selector string - node = cy.filter(node); - } - - return degrees[node.id()] / maxDegree; - } - }; - } else { - var indegrees = {}; - var outdegrees = {}; - var maxIndegree = 0; - var maxOutdegree = 0; - - for (var _i = 0; _i < numNodes; _i++) { - var _node = nodes[_i]; - - var id = _node.id(); // add current node to the current options object and call degreeCentrality - - - options.root = _node; - - var _currDegree = this.degreeCentrality(options); - - if (maxIndegree < _currDegree.indegree) maxIndegree = _currDegree.indegree; - if (maxOutdegree < _currDegree.outdegree) maxOutdegree = _currDegree.outdegree; - indegrees[id] = _currDegree.indegree; - outdegrees[id] = _currDegree.outdegree; - } - - return { - indegree: function indegree(node) { - if (maxIndegree == 0) { - return 0; - } - - if (string(node)) { - // from is a selector string - node = cy.filter(node); - } - - return indegrees[node.id()] / maxIndegree; - }, - outdegree: function outdegree(node) { - if (maxOutdegree === 0) { - return 0; - } - - if (string(node)) { - // from is a selector string - node = cy.filter(node); - } - - return outdegrees[node.id()] / maxOutdegree; - } - }; - } - }, - // degreeCentralityNormalized - // Implemented from the algorithm in Opsahl's paper - // "Node centrality in weighted networks: Generalizing degree and shortest paths" - // check the heading 2 "Degree" - degreeCentrality: function degreeCentrality(options) { - options = defaults$1$1(options); - var cy = this.cy(); - var callingEles = this; - var _options = options, - root = _options.root, - weight = _options.weight, - directed = _options.directed, - alpha = _options.alpha; - root = cy.collection(root)[0]; - - if (!directed) { - var connEdges = root.connectedEdges().intersection(callingEles); - var k = connEdges.length; - var s = 0; // Now, sum edge weights - - for (var i = 0; i < connEdges.length; i++) { - s += weight(connEdges[i]); - } - - return { - degree: Math.pow(k, 1 - alpha) * Math.pow(s, alpha) - }; - } else { - var edges = root.connectedEdges(); - var incoming = edges.filter(function (edge) { - return edge.target().same(root) && callingEles.has(edge); - }); - var outgoing = edges.filter(function (edge) { - return edge.source().same(root) && callingEles.has(edge); - }); - var k_in = incoming.length; - var k_out = outgoing.length; - var s_in = 0; - var s_out = 0; // Now, sum incoming edge weights - - for (var _i2 = 0; _i2 < incoming.length; _i2++) { - s_in += weight(incoming[_i2]); - } // Now, sum outgoing edge weights - - - for (var _i3 = 0; _i3 < outgoing.length; _i3++) { - s_out += weight(outgoing[_i3]); - } - - return { - indegree: Math.pow(k_in, 1 - alpha) * Math.pow(s_in, alpha), - outdegree: Math.pow(k_out, 1 - alpha) * Math.pow(s_out, alpha) - }; - } - } // degreeCentrality - -}; // elesfn -// nice, short mathemathical alias - -elesfn$8.dc = elesfn$8.degreeCentrality; -elesfn$8.dcn = elesfn$8.degreeCentralityNormalised = elesfn$8.degreeCentralityNormalized; - -var defaults$2 = defaults$1({ - harmonic: true, - weight: function weight() { - return 1; - }, - directed: false, - root: null -}); -var elesfn$9 = { - closenessCentralityNormalized: function closenessCentralityNormalized(options) { - var _defaults = defaults$2(options), - harmonic = _defaults.harmonic, - weight = _defaults.weight, - directed = _defaults.directed; - - var cy = this.cy(); - var closenesses = {}; - var maxCloseness = 0; - var nodes = this.nodes(); - var fw = this.floydWarshall({ - weight: weight, - directed: directed - }); // Compute closeness for every node and find the maximum closeness - - for (var i = 0; i < nodes.length; i++) { - var currCloseness = 0; - var node_i = nodes[i]; - - for (var j = 0; j < nodes.length; j++) { - if (i !== j) { - var d = fw.distance(node_i, nodes[j]); - - if (harmonic) { - currCloseness += 1 / d; - } else { - currCloseness += d; - } - } - } - - if (!harmonic) { - currCloseness = 1 / currCloseness; - } - - if (maxCloseness < currCloseness) { - maxCloseness = currCloseness; - } - - closenesses[node_i.id()] = currCloseness; - } - - return { - closeness: function closeness(node) { - if (maxCloseness == 0) { - return 0; - } - - if (string(node)) { - // from is a selector string - node = cy.filter(node)[0].id(); - } else { - // from is a node - node = node.id(); - } - - return closenesses[node] / maxCloseness; - } - }; - }, - // Implemented from pseudocode from wikipedia - closenessCentrality: function closenessCentrality(options) { - var _defaults2 = defaults$2(options), - root = _defaults2.root, - weight = _defaults2.weight, - directed = _defaults2.directed, - harmonic = _defaults2.harmonic; - - root = this.filter(root)[0]; // we need distance from this node to every other node - - var dijkstra = this.dijkstra({ - root: root, - weight: weight, - directed: directed - }); - var totalDistance = 0; - var nodes = this.nodes(); - - for (var i = 0; i < nodes.length; i++) { - var n = nodes[i]; - - if (!n.same(root)) { - var d = dijkstra.distanceTo(n); - - if (harmonic) { - totalDistance += 1 / d; - } else { - totalDistance += d; - } - } - } - - return harmonic ? totalDistance : 1 / totalDistance; - } // closenessCentrality - -}; // elesfn -// nice, short mathemathical alias - -elesfn$9.cc = elesfn$9.closenessCentrality; -elesfn$9.ccn = elesfn$9.closenessCentralityNormalised = elesfn$9.closenessCentralityNormalized; - -var defaults$3 = defaults$1({ - weight: null, - directed: false -}); -var elesfn$a = { - // Implemented from the algorithm in the paper "On Variants of Shortest-Path Betweenness Centrality and their Generic Computation" by Ulrik Brandes - betweennessCentrality: function betweennessCentrality(options) { - var _defaults = defaults$3(options), - directed = _defaults.directed, - weight = _defaults.weight; - - var weighted = weight != null; - var cy = this.cy(); // starting - - var V = this.nodes(); - var A = {}; - var _C = {}; - var max = 0; - var C = { - set: function set(key, val) { - _C[key] = val; - - if (val > max) { - max = val; - } - }, - get: function get(key) { - return _C[key]; - } - }; // A contains the neighborhoods of every node - - for (var i = 0; i < V.length; i++) { - var v = V[i]; - var vid = v.id(); - - if (directed) { - A[vid] = v.outgoers().nodes(); // get outgoers of every node - } else { - A[vid] = v.openNeighborhood().nodes(); // get neighbors of every node - } - - C.set(vid, 0); - } - - var _loop = function _loop(s) { - var sid = V[s].id(); - var S = []; // stack - - var P = {}; - var g = {}; - var d = {}; - var Q = new Heap(function (a, b) { - return d[a] - d[b]; - }); // queue - // init dictionaries - - for (var _i = 0; _i < V.length; _i++) { - var _vid = V[_i].id(); - - P[_vid] = []; - g[_vid] = 0; - d[_vid] = Infinity; - } - - g[sid] = 1; // sigma - - d[sid] = 0; // distance to s - - Q.push(sid); - - while (!Q.empty()) { - var _v = Q.pop(); - - S.push(_v); - - if (weighted) { - for (var j = 0; j < A[_v].length; j++) { - var w = A[_v][j]; - var vEle = cy.getElementById(_v); - var edge = void 0; - - if (vEle.edgesTo(w).length > 0) { - edge = vEle.edgesTo(w)[0]; - } else { - edge = w.edgesTo(vEle)[0]; - } - - var edgeWeight = weight(edge); - w = w.id(); - - if (d[w] > d[_v] + edgeWeight) { - d[w] = d[_v] + edgeWeight; - - if (Q.nodes.indexOf(w) < 0) { - //if w is not in Q - Q.push(w); - } else { - // update position if w is in Q - Q.updateItem(w); - } - - g[w] = 0; - P[w] = []; - } - - if (d[w] == d[_v] + edgeWeight) { - g[w] = g[w] + g[_v]; - P[w].push(_v); - } - } - } else { - for (var _j = 0; _j < A[_v].length; _j++) { - var _w = A[_v][_j].id(); - - if (d[_w] == Infinity) { - Q.push(_w); - d[_w] = d[_v] + 1; - } - - if (d[_w] == d[_v] + 1) { - g[_w] = g[_w] + g[_v]; - - P[_w].push(_v); - } - } - } - } - - var e = {}; - - for (var _i2 = 0; _i2 < V.length; _i2++) { - e[V[_i2].id()] = 0; - } - - while (S.length > 0) { - var _w2 = S.pop(); - - for (var _j2 = 0; _j2 < P[_w2].length; _j2++) { - var _v2 = P[_w2][_j2]; - e[_v2] = e[_v2] + g[_v2] / g[_w2] * (1 + e[_w2]); - } - - if (_w2 != V[s].id()) { - C.set(_w2, C.get(_w2) + e[_w2]); - } - } - }; - - for (var s = 0; s < V.length; s++) { - _loop(s); - } - - var ret = { - betweenness: function betweenness(node) { - var id = cy.collection(node).id(); - return C.get(id); - }, - betweennessNormalized: function betweennessNormalized(node) { - if (max == 0) { - return 0; - } - - var id = cy.collection(node).id(); - return C.get(id) / max; - } - }; // alias - - ret.betweennessNormalised = ret.betweennessNormalized; - return ret; - } // betweennessCentrality - -}; // elesfn -// nice, short mathemathical alias - -elesfn$a.bc = elesfn$a.betweennessCentrality; - -// Implemented by Zoe Xi @zoexi for GSOC 2016 -/* eslint-disable no-unused-vars */ - -var defaults$4 = defaults$1({ - expandFactor: 2, - // affects time of computation and cluster granularity to some extent: M * M - inflateFactor: 2, - // affects cluster granularity (the greater the value, the more clusters): M(i,j) / E(j) - multFactor: 1, - // optional self loops for each node. Use a neutral value to improve cluster computations. - maxIterations: 20, - // maximum number of iterations of the MCL algorithm in a single run - attributes: [// attributes/features used to group nodes, ie. similarity values between nodes - function (edge) { - return 1; - }] -}); -/* eslint-enable */ - -var setOptions = function setOptions(options) { - return defaults$4(options); -}; -/* eslint-enable */ - - -var getSimilarity = function getSimilarity(edge, attributes) { - var total = 0; - - for (var i = 0; i < attributes.length; i++) { - total += attributes[i](edge); - } - - return total; -}; - -var addLoops = function addLoops(M, n, val) { - for (var i = 0; i < n; i++) { - M[i * n + i] = val; - } -}; - -var normalize$1 = function normalize(M, n) { - var sum; - - for (var col = 0; col < n; col++) { - sum = 0; - - for (var row = 0; row < n; row++) { - sum += M[row * n + col]; - } - - for (var _row = 0; _row < n; _row++) { - M[_row * n + col] = M[_row * n + col] / sum; - } - } -}; // TODO: blocked matrix multiplication? - - -var mmult = function mmult(A, B, n) { - var C = new Array(n * n); - - for (var i = 0; i < n; i++) { - for (var j = 0; j < n; j++) { - C[i * n + j] = 0; - } - - for (var k = 0; k < n; k++) { - for (var _j = 0; _j < n; _j++) { - C[i * n + _j] += A[i * n + k] * B[k * n + _j]; - } - } - } - - return C; -}; - -var expand = function expand(M, n, expandFactor -/** power **/ -) { - var _M = M.slice(0); - - for (var p = 1; p < expandFactor; p++) { - M = mmult(M, _M, n); - } - - return M; -}; - -var inflate = function inflate(M, n, inflateFactor -/** r **/ -) { - var _M = new Array(n * n); // M(i,j) ^ inflatePower - - - for (var i = 0; i < n * n; i++) { - _M[i] = Math.pow(M[i], inflateFactor); - } - - normalize$1(_M, n); - return _M; -}; - -var hasConverged = function hasConverged(M, _M, n2, roundFactor) { - // Check that both matrices have the same elements (i,j) - for (var i = 0; i < n2; i++) { - var v1 = Math.round(M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); // truncate to 'roundFactor' decimal places - - var v2 = Math.round(_M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); - - if (v1 !== v2) { - return false; - } - } - - return true; -}; - -var assign = function assign(M, n, nodes, cy) { - var clusters = []; - - for (var i = 0; i < n; i++) { - var cluster = []; - - for (var j = 0; j < n; j++) { - // Row-wise attractors and elements that they attract belong in same cluster - if (Math.round(M[i * n + j] * 1000) / 1000 > 0) { - cluster.push(nodes[j]); - } - } - - if (cluster.length !== 0) { - clusters.push(cy.collection(cluster)); - } - } - - return clusters; -}; - -var isDuplicate = function isDuplicate(c1, c2) { - for (var i = 0; i < c1.length; i++) { - if (!c2[i] || c1[i].id() !== c2[i].id()) { - return false; - } - } - - return true; -}; - -var removeDuplicates = function removeDuplicates(clusters) { - for (var i = 0; i < clusters.length; i++) { - for (var j = 0; j < clusters.length; j++) { - if (i != j && isDuplicate(clusters[i], clusters[j])) { - clusters.splice(j, 1); - } - } - } - - return clusters; -}; - -var markovClustering = function markovClustering(options) { - var nodes = this.nodes(); - var edges = this.edges(); - var cy = this.cy(); // Set parameters of algorithm: - - var opts = setOptions(options); // Map each node to its position in node array - - var id2position = {}; - - for (var i = 0; i < nodes.length; i++) { - id2position[nodes[i].id()] = i; - } // Generate stochastic matrix M from input graph G (should be symmetric/undirected) - - - var n = nodes.length, - n2 = n * n; - - var M = new Array(n2), - _M; - - for (var _i = 0; _i < n2; _i++) { - M[_i] = 0; - } - - for (var e = 0; e < edges.length; e++) { - var edge = edges[e]; - var _i2 = id2position[edge.source().id()]; - var j = id2position[edge.target().id()]; - var sim = getSimilarity(edge, opts.attributes); - M[_i2 * n + j] += sim; // G should be symmetric and undirected - - M[j * n + _i2] += sim; - } // Begin Markov cluster algorithm - // Step 1: Add self loops to each node, ie. add multFactor to matrix diagonal - - - addLoops(M, n, opts.multFactor); // Step 2: M = normalize( M ); - - normalize$1(M, n); - var isStillMoving = true; - var iterations = 0; - - while (isStillMoving && iterations < opts.maxIterations) { - isStillMoving = false; // Step 3: - - _M = expand(M, n, opts.expandFactor); // Step 4: - - M = inflate(_M, n, opts.inflateFactor); // Step 5: check to see if ~steady state has been reached - - if (!hasConverged(M, _M, n2, 4)) { - isStillMoving = true; - } - - iterations++; - } // Build clusters from matrix - - - var clusters = assign(M, n, nodes, cy); // Remove duplicate clusters due to symmetry of graph and M matrix - - clusters = removeDuplicates(clusters); - return clusters; -}; - -var markovClustering$1 = { - markovClustering: markovClustering, - mcl: markovClustering -}; - -// Common distance metrics for clustering algorithms - -var identity$1 = function identity(x) { - return x; -}; - -var absDiff = function absDiff(p, q) { - return Math.abs(q - p); -}; - -var addAbsDiff = function addAbsDiff(total, p, q) { - return total + absDiff(p, q); -}; - -var addSquaredDiff = function addSquaredDiff(total, p, q) { - return total + Math.pow(q - p, 2); -}; - -var sqrt = function sqrt(x) { - return Math.sqrt(x); -}; - -var maxAbsDiff = function maxAbsDiff(currentMax, p, q) { - return Math.max(currentMax, absDiff(p, q)); -}; - -var getDistance = function getDistance(length, getP, getQ, init, visit) { - var post = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : identity$1; - var ret = init; - var p, q; - - for (var dim = 0; dim < length; dim++) { - p = getP(dim); - q = getQ(dim); - ret = visit(ret, p, q); - } - - return post(ret); -}; - -var distances = { - euclidean: function euclidean(length, getP, getQ) { - if (length >= 2) { - return getDistance(length, getP, getQ, 0, addSquaredDiff, sqrt); - } else { - // for single attr case, more efficient to avoid sqrt - return getDistance(length, getP, getQ, 0, addAbsDiff); - } - }, - squaredEuclidean: function squaredEuclidean(length, getP, getQ) { - return getDistance(length, getP, getQ, 0, addSquaredDiff); - }, - manhattan: function manhattan(length, getP, getQ) { - return getDistance(length, getP, getQ, 0, addAbsDiff); - }, - max: function max(length, getP, getQ) { - return getDistance(length, getP, getQ, -Infinity, maxAbsDiff); - } -}; // in case the user accidentally doesn't use camel case - -distances['squared-euclidean'] = distances['squaredEuclidean']; -distances['squaredeuclidean'] = distances['squaredEuclidean']; -function clusteringDistance (method, length, getP, getQ, nodeP, nodeQ) { - var impl; - - if (fn(method)) { - impl = method; - } else { - impl = distances[method] || distances.euclidean; - } - - if (length === 0 && fn(method)) { - return impl(nodeP, nodeQ); - } else { - return impl(length, getP, getQ, nodeP, nodeQ); - } -} - -var defaults$5 = defaults$1({ - k: 2, - m: 2, - sensitivityThreshold: 0.0001, - distance: 'euclidean', - maxIterations: 10, - attributes: [], - testMode: false, - testCentroids: null -}); - -var setOptions$1 = function setOptions(options) { - return defaults$5(options); -}; -/* eslint-enable */ - - -var getDist = function getDist(type, node, centroid, attributes, mode) { - var noNodeP = mode !== 'kMedoids'; - var getP = noNodeP ? function (i) { - return centroid[i]; - } : function (i) { - return attributes[i](centroid); - }; - - var getQ = function getQ(i) { - return attributes[i](node); - }; - - var nodeP = centroid; - var nodeQ = node; - return clusteringDistance(type, attributes.length, getP, getQ, nodeP, nodeQ); -}; - -var randomCentroids = function randomCentroids(nodes, k, attributes) { - var ndim = attributes.length; - var min = new Array(ndim); - var max = new Array(ndim); - var centroids = new Array(k); - var centroid = null; // Find min, max values for each attribute dimension - - for (var i = 0; i < ndim; i++) { - min[i] = nodes.min(attributes[i]).value; - max[i] = nodes.max(attributes[i]).value; - } // Build k centroids, each represented as an n-dim feature vector - - - for (var c = 0; c < k; c++) { - centroid = []; - - for (var _i = 0; _i < ndim; _i++) { - centroid[_i] = Math.random() * (max[_i] - min[_i]) + min[_i]; // random initial value - } - - centroids[c] = centroid; - } - - return centroids; -}; - -var classify = function classify(node, centroids, distance, attributes, type) { - var min = Infinity; - var index = 0; - - for (var i = 0; i < centroids.length; i++) { - var dist = getDist(distance, node, centroids[i], attributes, type); - - if (dist < min) { - min = dist; - index = i; - } - } - - return index; -}; - -var buildCluster = function buildCluster(centroid, nodes, assignment) { - var cluster = []; - var node = null; - - for (var n = 0; n < nodes.length; n++) { - node = nodes[n]; - - if (assignment[node.id()] === centroid) { - //console.log("Node " + node.id() + " is associated with medoid #: " + m); - cluster.push(node); - } - } - - return cluster; -}; - -var haveValuesConverged = function haveValuesConverged(v1, v2, sensitivityThreshold) { - return Math.abs(v2 - v1) <= sensitivityThreshold; -}; - -var haveMatricesConverged = function haveMatricesConverged(v1, v2, sensitivityThreshold) { - for (var i = 0; i < v1.length; i++) { - for (var j = 0; j < v1[i].length; j++) { - var diff = Math.abs(v1[i][j] - v2[i][j]); - - if (diff > sensitivityThreshold) { - return false; - } - } - } - - return true; -}; - -var seenBefore = function seenBefore(node, medoids, n) { - for (var i = 0; i < n; i++) { - if (node === medoids[i]) return true; - } - - return false; -}; - -var randomMedoids = function randomMedoids(nodes, k) { - var medoids = new Array(k); // For small data sets, the probability of medoid conflict is greater, - // so we need to check to see if we've already seen or chose this node before. - - if (nodes.length < 50) { - // Randomly select k medoids from the n nodes - for (var i = 0; i < k; i++) { - var node = nodes[Math.floor(Math.random() * nodes.length)]; // If we've already chosen this node to be a medoid, don't choose it again (for small data sets). - // Instead choose a different random node. - - while (seenBefore(node, medoids, i)) { - node = nodes[Math.floor(Math.random() * nodes.length)]; - } - - medoids[i] = node; - } - } else { - // Relatively large data set, so pretty safe to not check and just select random nodes - for (var _i2 = 0; _i2 < k; _i2++) { - medoids[_i2] = nodes[Math.floor(Math.random() * nodes.length)]; - } - } - - return medoids; -}; - -var findCost = function findCost(potentialNewMedoid, cluster, attributes) { - var cost = 0; - - for (var n = 0; n < cluster.length; n++) { - cost += getDist('manhattan', cluster[n], potentialNewMedoid, attributes, 'kMedoids'); - } - - return cost; -}; - -var kMeans = function kMeans(options) { - var cy = this.cy(); - var nodes = this.nodes(); - var node = null; // Set parameters of algorithm: # of clusters, distance metric, etc. - - var opts = setOptions$1(options); // Begin k-means algorithm - - var clusters = new Array(opts.k); - var assignment = {}; - var centroids; // Step 1: Initialize centroid positions - - if (opts.testMode) { - if (typeof opts.testCentroids === 'number') { - centroids = randomCentroids(nodes, opts.k, opts.attributes); - } else if (_typeof(opts.testCentroids) === 'object') { - centroids = opts.testCentroids; - } else { - centroids = randomCentroids(nodes, opts.k, opts.attributes); - } - } else { - centroids = randomCentroids(nodes, opts.k, opts.attributes); - } - - var isStillMoving = true; - var iterations = 0; - - while (isStillMoving && iterations < opts.maxIterations) { - // Step 2: Assign nodes to the nearest centroid - for (var n = 0; n < nodes.length; n++) { - node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster # - - assignment[node.id()] = classify(node, centroids, opts.distance, opts.attributes, 'kMeans'); - } // Step 3: For each of the k clusters, update its centroid - - - isStillMoving = false; - - for (var c = 0; c < opts.k; c++) { - // Get all nodes that belong to this cluster - var cluster = buildCluster(c, nodes, assignment); - - if (cluster.length === 0) { - // If cluster is empty, break out early & move to next cluster - continue; - } // Update centroids by calculating avg of all nodes within the cluster. - - - var ndim = opts.attributes.length; - var centroid = centroids[c]; // [ dim_1, dim_2, dim_3, ... , dim_n ] - - var newCentroid = new Array(ndim); - var sum = new Array(ndim); - - for (var d = 0; d < ndim; d++) { - sum[d] = 0.0; - - for (var i = 0; i < cluster.length; i++) { - node = cluster[i]; - sum[d] += opts.attributes[d](node); - } - - newCentroid[d] = sum[d] / cluster.length; // Check to see if algorithm has converged, i.e. when centroids no longer change - - if (!haveValuesConverged(newCentroid[d], centroid[d], opts.sensitivityThreshold)) { - isStillMoving = true; - } - } - - centroids[c] = newCentroid; - clusters[c] = cy.collection(cluster); - } - - iterations++; - } - - return clusters; -}; - -var kMedoids = function kMedoids(options) { - var cy = this.cy(); - var nodes = this.nodes(); - var node = null; - var opts = setOptions$1(options); // Begin k-medoids algorithm - - var clusters = new Array(opts.k); - var medoids; - var assignment = {}; - var curCost; - var minCosts = new Array(opts.k); // minimum cost configuration for each cluster - // Step 1: Initialize k medoids - - if (opts.testMode) { - if (typeof opts.testCentroids === 'number') ; else if (_typeof(opts.testCentroids) === 'object') { - medoids = opts.testCentroids; - } else { - medoids = randomMedoids(nodes, opts.k); - } - } else { - medoids = randomMedoids(nodes, opts.k); - } - - var isStillMoving = true; - var iterations = 0; - - while (isStillMoving && iterations < opts.maxIterations) { - // Step 2: Assign nodes to the nearest medoid - for (var n = 0; n < nodes.length; n++) { - node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster # - - assignment[node.id()] = classify(node, medoids, opts.distance, opts.attributes, 'kMedoids'); - } - - isStillMoving = false; // Step 3: For each medoid m, and for each node assciated with mediod m, - // select the node with the lowest configuration cost as new medoid. - - for (var m = 0; m < medoids.length; m++) { - // Get all nodes that belong to this medoid - var cluster = buildCluster(m, nodes, assignment); - - if (cluster.length === 0) { - // If cluster is empty, break out early & move to next cluster - continue; - } - - minCosts[m] = findCost(medoids[m], cluster, opts.attributes); // original cost - // Select different medoid if its configuration has the lowest cost - - for (var _n = 0; _n < cluster.length; _n++) { - curCost = findCost(cluster[_n], cluster, opts.attributes); - - if (curCost < minCosts[m]) { - minCosts[m] = curCost; - medoids[m] = cluster[_n]; - isStillMoving = true; - } - } - - clusters[m] = cy.collection(cluster); - } - - iterations++; - } - - return clusters; -}; - -var updateCentroids = function updateCentroids(centroids, nodes, U, weight, opts) { - var numerator, denominator; - - for (var n = 0; n < nodes.length; n++) { - for (var c = 0; c < centroids.length; c++) { - weight[n][c] = Math.pow(U[n][c], opts.m); - } - } - - for (var _c = 0; _c < centroids.length; _c++) { - for (var dim = 0; dim < opts.attributes.length; dim++) { - numerator = 0; - denominator = 0; - - for (var _n2 = 0; _n2 < nodes.length; _n2++) { - numerator += weight[_n2][_c] * opts.attributes[dim](nodes[_n2]); - denominator += weight[_n2][_c]; - } - - centroids[_c][dim] = numerator / denominator; - } - } -}; - -var updateMembership = function updateMembership(U, _U, centroids, nodes, opts) { - // Save previous step - for (var i = 0; i < U.length; i++) { - _U[i] = U[i].slice(); - } - - var sum, numerator, denominator; - var pow = 2 / (opts.m - 1); - - for (var c = 0; c < centroids.length; c++) { - for (var n = 0; n < nodes.length; n++) { - sum = 0; - - for (var k = 0; k < centroids.length; k++) { - // against all other centroids - numerator = getDist(opts.distance, nodes[n], centroids[c], opts.attributes, 'cmeans'); - denominator = getDist(opts.distance, nodes[n], centroids[k], opts.attributes, 'cmeans'); - sum += Math.pow(numerator / denominator, pow); - } - - U[n][c] = 1 / sum; - } - } -}; - -var assign$1 = function assign(nodes, U, opts, cy) { - var clusters = new Array(opts.k); - - for (var c = 0; c < clusters.length; c++) { - clusters[c] = []; - } - - var max; - var index; - - for (var n = 0; n < U.length; n++) { - // for each node (U is N x C matrix) - max = -Infinity; - index = -1; // Determine which cluster the node is most likely to belong in - - for (var _c2 = 0; _c2 < U[0].length; _c2++) { - if (U[n][_c2] > max) { - max = U[n][_c2]; - index = _c2; - } - } - - clusters[index].push(nodes[n]); - } // Turn every array into a collection of nodes - - - for (var _c3 = 0; _c3 < clusters.length; _c3++) { - clusters[_c3] = cy.collection(clusters[_c3]); - } - - return clusters; -}; - -var fuzzyCMeans = function fuzzyCMeans(options) { - var cy = this.cy(); - var nodes = this.nodes(); - var opts = setOptions$1(options); // Begin fuzzy c-means algorithm - - var clusters; - var centroids; - var U; - - var _U; - - var weight; // Step 1: Initialize letiables. - - _U = new Array(nodes.length); - - for (var i = 0; i < nodes.length; i++) { - // N x C matrix - _U[i] = new Array(opts.k); - } - - U = new Array(nodes.length); - - for (var _i3 = 0; _i3 < nodes.length; _i3++) { - // N x C matrix - U[_i3] = new Array(opts.k); - } - - for (var _i4 = 0; _i4 < nodes.length; _i4++) { - var total = 0; - - for (var j = 0; j < opts.k; j++) { - U[_i4][j] = Math.random(); - total += U[_i4][j]; - } - - for (var _j = 0; _j < opts.k; _j++) { - U[_i4][_j] = U[_i4][_j] / total; - } - } - - centroids = new Array(opts.k); - - for (var _i5 = 0; _i5 < opts.k; _i5++) { - centroids[_i5] = new Array(opts.attributes.length); - } - - weight = new Array(nodes.length); - - for (var _i6 = 0; _i6 < nodes.length; _i6++) { - // N x C matrix - weight[_i6] = new Array(opts.k); - } // end init FCM - - - var isStillMoving = true; - var iterations = 0; - - while (isStillMoving && iterations < opts.maxIterations) { - isStillMoving = false; // Step 2: Calculate the centroids for each step. - - updateCentroids(centroids, nodes, U, weight, opts); // Step 3: Update the partition matrix U. - - updateMembership(U, _U, centroids, nodes, opts); // Step 4: Check for convergence. - - if (!haveMatricesConverged(U, _U, opts.sensitivityThreshold)) { - isStillMoving = true; - } - - iterations++; - } // Assign nodes to clusters with highest probability. - - - clusters = assign$1(nodes, U, opts, cy); - return { - clusters: clusters, - degreeOfMembership: U - }; -}; - -var kClustering = { - kMeans: kMeans, - kMedoids: kMedoids, - fuzzyCMeans: fuzzyCMeans, - fcm: fuzzyCMeans -}; - -// Implemented by Zoe Xi @zoexi for GSOC 2016 -var defaults$6 = defaults$1({ - distance: 'euclidean', - // distance metric to compare nodes - linkage: 'min', - // linkage criterion : how to determine the distance between clusters of nodes - mode: 'threshold', - // mode:'threshold' => clusters must be threshold distance apart - threshold: Infinity, - // the distance threshold - // mode:'dendrogram' => the nodes are organised as leaves in a tree (siblings are close), merging makes clusters - addDendrogram: false, - // whether to add the dendrogram to the graph for viz - dendrogramDepth: 0, - // depth at which dendrogram branches are merged into the returned clusters - attributes: [] // array of attr functions - -}); -var linkageAliases = { - 'single': 'min', - 'complete': 'max' -}; - -var setOptions$2 = function setOptions(options) { - var opts = defaults$6(options); - var preferredAlias = linkageAliases[opts.linkage]; - - if (preferredAlias != null) { - opts.linkage = preferredAlias; - } - - return opts; -}; - -var mergeClosest = function mergeClosest(clusters, index, dists, mins, opts) { - // Find two closest clusters from cached mins - var minKey = 0; - var min = Infinity; - var dist; - var attrs = opts.attributes; - - var getDist = function getDist(n1, n2) { - return clusteringDistance(opts.distance, attrs.length, function (i) { - return attrs[i](n1); - }, function (i) { - return attrs[i](n2); - }, n1, n2); - }; - - for (var i = 0; i < clusters.length; i++) { - var key = clusters[i].key; - var _dist = dists[key][mins[key]]; - - if (_dist < min) { - minKey = key; - min = _dist; - } - } - - if (opts.mode === 'threshold' && min >= opts.threshold || opts.mode === 'dendrogram' && clusters.length === 1) { - return false; - } - - var c1 = index[minKey]; - var c2 = index[mins[minKey]]; - var merged; // Merge two closest clusters - - if (opts.mode === 'dendrogram') { - merged = { - left: c1, - right: c2, - key: c1.key - }; - } else { - merged = { - value: c1.value.concat(c2.value), - key: c1.key - }; - } - - clusters[c1.index] = merged; - clusters.splice(c2.index, 1); - index[c1.key] = merged; // Update distances with new merged cluster - - for (var _i = 0; _i < clusters.length; _i++) { - var cur = clusters[_i]; - - if (c1.key === cur.key) { - dist = Infinity; - } else if (opts.linkage === 'min') { - dist = dists[c1.key][cur.key]; - - if (dists[c1.key][cur.key] > dists[c2.key][cur.key]) { - dist = dists[c2.key][cur.key]; - } - } else if (opts.linkage === 'max') { - dist = dists[c1.key][cur.key]; - - if (dists[c1.key][cur.key] < dists[c2.key][cur.key]) { - dist = dists[c2.key][cur.key]; - } - } else if (opts.linkage === 'mean') { - dist = (dists[c1.key][cur.key] * c1.size + dists[c2.key][cur.key] * c2.size) / (c1.size + c2.size); - } else { - if (opts.mode === 'dendrogram') dist = getDist(cur.value, c1.value);else dist = getDist(cur.value[0], c1.value[0]); - } - - dists[c1.key][cur.key] = dists[cur.key][c1.key] = dist; // distance matrix is symmetric - } // Update cached mins - - - for (var _i2 = 0; _i2 < clusters.length; _i2++) { - var key1 = clusters[_i2].key; - - if (mins[key1] === c1.key || mins[key1] === c2.key) { - var _min = key1; - - for (var j = 0; j < clusters.length; j++) { - var key2 = clusters[j].key; - - if (dists[key1][key2] < dists[key1][_min]) { - _min = key2; - } - } - - mins[key1] = _min; - } - - clusters[_i2].index = _i2; - } // Clean up meta data used for clustering - - - c1.key = c2.key = c1.index = c2.index = null; - return true; -}; - -var getAllChildren = function getAllChildren(root, arr, cy) { - if (!root) return; - - if (root.value) { - arr.push(root.value); - } else { - if (root.left) getAllChildren(root.left, arr); - if (root.right) getAllChildren(root.right, arr); - } -}; - -var buildDendrogram = function buildDendrogram(root, cy) { - if (!root) return ''; - - if (root.left && root.right) { - var leftStr = buildDendrogram(root.left, cy); - var rightStr = buildDendrogram(root.right, cy); - var node = cy.add({ - group: 'nodes', - data: { - id: leftStr + ',' + rightStr - } - }); - cy.add({ - group: 'edges', - data: { - source: leftStr, - target: node.id() - } - }); - cy.add({ - group: 'edges', - data: { - source: rightStr, - target: node.id() - } - }); - return node.id(); - } else if (root.value) { - return root.value.id(); - } -}; - -var buildClustersFromTree = function buildClustersFromTree(root, k, cy) { - if (!root) return []; - var left = [], - right = [], - leaves = []; - - if (k === 0) { - // don't cut tree, simply return all nodes as 1 single cluster - if (root.left) getAllChildren(root.left, left); - if (root.right) getAllChildren(root.right, right); - leaves = left.concat(right); - return [cy.collection(leaves)]; - } else if (k === 1) { - // cut at root - if (root.value) { - // leaf node - return [cy.collection(root.value)]; - } else { - if (root.left) getAllChildren(root.left, left); - if (root.right) getAllChildren(root.right, right); - return [cy.collection(left), cy.collection(right)]; - } - } else { - if (root.value) { - return [cy.collection(root.value)]; - } else { - if (root.left) left = buildClustersFromTree(root.left, k - 1, cy); - if (root.right) right = buildClustersFromTree(root.right, k - 1, cy); - return left.concat(right); - } - } -}; -/* eslint-enable */ - - -var hierarchicalClustering = function hierarchicalClustering(options) { - var cy = this.cy(); - var nodes = this.nodes(); // Set parameters of algorithm: linkage type, distance metric, etc. - - var opts = setOptions$2(options); - var attrs = opts.attributes; - - var getDist = function getDist(n1, n2) { - return clusteringDistance(opts.distance, attrs.length, function (i) { - return attrs[i](n1); - }, function (i) { - return attrs[i](n2); - }, n1, n2); - }; // Begin hierarchical algorithm - - - var clusters = []; - var dists = []; // distances between each pair of clusters - - var mins = []; // closest cluster for each cluster - - var index = []; // hash of all clusters by key - // In agglomerative (bottom-up) clustering, each node starts as its own cluster - - for (var n = 0; n < nodes.length; n++) { - var cluster = { - value: opts.mode === 'dendrogram' ? nodes[n] : [nodes[n]], - key: n, - index: n - }; - clusters[n] = cluster; - index[n] = cluster; - dists[n] = []; - mins[n] = 0; - } // Calculate the distance between each pair of clusters - - - for (var i = 0; i < clusters.length; i++) { - for (var j = 0; j <= i; j++) { - var dist = void 0; - - if (opts.mode === 'dendrogram') { - // modes store cluster values differently - dist = i === j ? Infinity : getDist(clusters[i].value, clusters[j].value); - } else { - dist = i === j ? Infinity : getDist(clusters[i].value[0], clusters[j].value[0]); - } - - dists[i][j] = dist; - dists[j][i] = dist; - - if (dist < dists[i][mins[i]]) { - mins[i] = j; // Cache mins: closest cluster to cluster i is cluster j - } - } - } // Find the closest pair of clusters and merge them into a single cluster. - // Update distances between new cluster and each of the old clusters, and loop until threshold reached. - - - var merged = mergeClosest(clusters, index, dists, mins, opts); - - while (merged) { - merged = mergeClosest(clusters, index, dists, mins, opts); - } - - var retClusters; // Dendrogram mode builds the hierarchy and adds intermediary nodes + edges - // in addition to returning the clusters. - - if (opts.mode === 'dendrogram') { - retClusters = buildClustersFromTree(clusters[0], opts.dendrogramDepth, cy); - if (opts.addDendrogram) buildDendrogram(clusters[0], cy); - } else { - // Regular mode simply returns the clusters - retClusters = new Array(clusters.length); - clusters.forEach(function (cluster, i) { - // Clean up meta data used for clustering - cluster.key = cluster.index = null; - retClusters[i] = cy.collection(cluster.value); - }); - } - - return retClusters; -}; - -var hierarchicalClustering$1 = { - hierarchicalClustering: hierarchicalClustering, - hca: hierarchicalClustering -}; - -// Implemented by Zoe Xi @zoexi for GSOC 2016 -var defaults$7 = defaults$1({ - distance: 'euclidean', - // distance metric to compare attributes between two nodes - preference: 'median', - // suitability of a data point to serve as an exemplar - damping: 0.8, - // damping factor between [0.5, 1) - maxIterations: 1000, - // max number of iterations to run - minIterations: 100, - // min number of iterations to run in order for clustering to stop - attributes: [// functions to quantify the similarity between any two points - // e.g. node => node.data('weight') - ] -}); - -var setOptions$3 = function setOptions(options) { - var dmp = options.damping; - var pref = options.preference; - - if (!(0.5 <= dmp && dmp < 1)) { - error("Damping must range on [0.5, 1). Got: ".concat(dmp)); - } - - var validPrefs = ['median', 'mean', 'min', 'max']; - - if (!(validPrefs.some(function (v) { - return v === pref; - }) || number(pref))) { - error("Preference must be one of [".concat(validPrefs.map(function (p) { - return "'".concat(p, "'"); - }).join(', '), "] or a number. Got: ").concat(pref)); - } - - return defaults$7(options); -}; -/* eslint-enable */ - - -var getSimilarity$1 = function getSimilarity(type, n1, n2, attributes) { - var attr = function attr(n, i) { - return attributes[i](n); - }; // nb negative because similarity should have an inverse relationship to distance - - - return -clusteringDistance(type, attributes.length, function (i) { - return attr(n1, i); - }, function (i) { - return attr(n2, i); - }, n1, n2); -}; - -var getPreference = function getPreference(S, preference) { - // larger preference = greater # of clusters - var p = null; - - if (preference === 'median') { - p = median(S); - } else if (preference === 'mean') { - p = mean(S); - } else if (preference === 'min') { - p = min$2(S); - } else if (preference === 'max') { - p = max$2(S); - } else { - // Custom preference number, as set by user - p = preference; - } - - return p; -}; - -var findExemplars = function findExemplars(n, R, A) { - var indices = []; - - for (var i = 0; i < n; i++) { - if (R[i * n + i] + A[i * n + i] > 0) { - indices.push(i); - } - } - - return indices; -}; - -var assignClusters = function assignClusters(n, S, exemplars) { - var clusters = []; - - for (var i = 0; i < n; i++) { - var index = -1; - var max = -Infinity; - - for (var ei = 0; ei < exemplars.length; ei++) { - var e = exemplars[ei]; - - if (S[i * n + e] > max) { - index = e; - max = S[i * n + e]; - } - } - - if (index > 0) { - clusters.push(index); - } - } - - for (var _ei = 0; _ei < exemplars.length; _ei++) { - clusters[exemplars[_ei]] = exemplars[_ei]; - } - - return clusters; -}; - -var assign$2 = function assign(n, S, exemplars) { - var clusters = assignClusters(n, S, exemplars); - - for (var ei = 0; ei < exemplars.length; ei++) { - var ii = []; - - for (var c = 0; c < clusters.length; c++) { - if (clusters[c] === exemplars[ei]) { - ii.push(c); - } - } - - var maxI = -1; - var maxSum = -Infinity; - - for (var i = 0; i < ii.length; i++) { - var sum = 0; - - for (var j = 0; j < ii.length; j++) { - sum += S[ii[j] * n + ii[i]]; - } - - if (sum > maxSum) { - maxI = i; - maxSum = sum; - } - } - - exemplars[ei] = ii[maxI]; - } - - clusters = assignClusters(n, S, exemplars); - return clusters; -}; - -var affinityPropagation = function affinityPropagation(options) { - var cy = this.cy(); - var nodes = this.nodes(); - var opts = setOptions$3(options); // Map each node to its position in node array - - var id2position = {}; - - for (var i = 0; i < nodes.length; i++) { - id2position[nodes[i].id()] = i; - } // Begin affinity propagation algorithm - - - var n; // number of data points - - var n2; // size of matrices - - var S; // similarity matrix (1D array) - - var p; // preference/suitability of a data point to serve as an exemplar - - var R; // responsibility matrix (1D array) - - var A; // availability matrix (1D array) - - n = nodes.length; - n2 = n * n; // Initialize and build S similarity matrix - - S = new Array(n2); - - for (var _i = 0; _i < n2; _i++) { - S[_i] = -Infinity; // for cases where two data points shouldn't be linked together - } - - for (var _i2 = 0; _i2 < n; _i2++) { - for (var j = 0; j < n; j++) { - if (_i2 !== j) { - S[_i2 * n + j] = getSimilarity$1(opts.distance, nodes[_i2], nodes[j], opts.attributes); - } - } - } // Place preferences on the diagonal of S - - - p = getPreference(S, opts.preference); - - for (var _i3 = 0; _i3 < n; _i3++) { - S[_i3 * n + _i3] = p; - } // Initialize R responsibility matrix - - - R = new Array(n2); - - for (var _i4 = 0; _i4 < n2; _i4++) { - R[_i4] = 0.0; - } // Initialize A availability matrix - - - A = new Array(n2); - - for (var _i5 = 0; _i5 < n2; _i5++) { - A[_i5] = 0.0; - } - - var old = new Array(n); - var Rp = new Array(n); - var se = new Array(n); - - for (var _i6 = 0; _i6 < n; _i6++) { - old[_i6] = 0.0; - Rp[_i6] = 0.0; - se[_i6] = 0; - } - - var e = new Array(n * opts.minIterations); - - for (var _i7 = 0; _i7 < e.length; _i7++) { - e[_i7] = 0; - } - - var iter; - - for (iter = 0; iter < opts.maxIterations; iter++) { - // main algorithmic loop - // Update R responsibility matrix - for (var _i8 = 0; _i8 < n; _i8++) { - var max = -Infinity, - max2 = -Infinity, - maxI = -1, - AS = 0.0; - - for (var _j = 0; _j < n; _j++) { - old[_j] = R[_i8 * n + _j]; - AS = A[_i8 * n + _j] + S[_i8 * n + _j]; - - if (AS >= max) { - max2 = max; - max = AS; - maxI = _j; - } else if (AS > max2) { - max2 = AS; - } - } - - for (var _j2 = 0; _j2 < n; _j2++) { - R[_i8 * n + _j2] = (1 - opts.damping) * (S[_i8 * n + _j2] - max) + opts.damping * old[_j2]; - } - - R[_i8 * n + maxI] = (1 - opts.damping) * (S[_i8 * n + maxI] - max2) + opts.damping * old[maxI]; - } // Update A availability matrix - - - for (var _i9 = 0; _i9 < n; _i9++) { - var sum = 0; - - for (var _j3 = 0; _j3 < n; _j3++) { - old[_j3] = A[_j3 * n + _i9]; - Rp[_j3] = Math.max(0, R[_j3 * n + _i9]); - sum += Rp[_j3]; - } - - sum -= Rp[_i9]; - Rp[_i9] = R[_i9 * n + _i9]; - sum += Rp[_i9]; - - for (var _j4 = 0; _j4 < n; _j4++) { - A[_j4 * n + _i9] = (1 - opts.damping) * Math.min(0, sum - Rp[_j4]) + opts.damping * old[_j4]; - } - - A[_i9 * n + _i9] = (1 - opts.damping) * (sum - Rp[_i9]) + opts.damping * old[_i9]; - } // Check for convergence - - - var K = 0; - - for (var _i10 = 0; _i10 < n; _i10++) { - var E = A[_i10 * n + _i10] + R[_i10 * n + _i10] > 0 ? 1 : 0; - e[iter % opts.minIterations * n + _i10] = E; - K += E; - } - - if (K > 0 && (iter >= opts.minIterations - 1 || iter == opts.maxIterations - 1)) { - var _sum = 0; - - for (var _i11 = 0; _i11 < n; _i11++) { - se[_i11] = 0; - - for (var _j5 = 0; _j5 < opts.minIterations; _j5++) { - se[_i11] += e[_j5 * n + _i11]; - } - - if (se[_i11] === 0 || se[_i11] === opts.minIterations) { - _sum++; - } - } - - if (_sum === n) { - // then we have convergence - break; - } - } - } // Identify exemplars (cluster centers) - - - var exemplarsIndices = findExemplars(n, R, A); // Assign nodes to clusters - - var clusterIndices = assign$2(n, S, exemplarsIndices); - var clusters = {}; - - for (var c = 0; c < exemplarsIndices.length; c++) { - clusters[exemplarsIndices[c]] = []; - } - - for (var _i12 = 0; _i12 < nodes.length; _i12++) { - var pos = id2position[nodes[_i12].id()]; - - var clusterIndex = clusterIndices[pos]; - - if (clusterIndex != null) { - // the node may have not been assigned a cluster if no valid attributes were specified - clusters[clusterIndex].push(nodes[_i12]); - } - } - - var retClusters = new Array(exemplarsIndices.length); - - for (var _c = 0; _c < exemplarsIndices.length; _c++) { - retClusters[_c] = cy.collection(clusters[exemplarsIndices[_c]]); - } - - return retClusters; -}; - -var affinityPropagation$1 = { - affinityPropagation: affinityPropagation, - ap: affinityPropagation -}; - -var hierholzerDefaults = defaults$1({ - root: undefined, - directed: false -}); -var elesfn$b = { - hierholzer: function hierholzer(options) { - if (!plainObject(options)) { - var args = arguments; - options = { - root: args[0], - directed: args[1] - }; - } - - var _hierholzerDefaults = hierholzerDefaults(options), - root = _hierholzerDefaults.root, - directed = _hierholzerDefaults.directed; - - var eles = this; - var dflag = false; - var oddIn; - var oddOut; - var startVertex; - if (root) startVertex = string(root) ? this.filter(root)[0].id() : root[0].id(); - var nodes = {}; - var edges = {}; - - if (directed) { - eles.forEach(function (ele) { - var id = ele.id(); - - if (ele.isNode()) { - var ind = ele.indegree(true); - var outd = ele.outdegree(true); - var d1 = ind - outd; - var d2 = outd - ind; - - if (d1 == 1) { - if (oddIn) dflag = true;else oddIn = id; - } else if (d2 == 1) { - if (oddOut) dflag = true;else oddOut = id; - } else if (d2 > 1 || d1 > 1) { - dflag = true; - } - - nodes[id] = []; - ele.outgoers().forEach(function (e) { - if (e.isEdge()) nodes[id].push(e.id()); - }); - } else { - edges[id] = [undefined, ele.target().id()]; - } - }); - } else { - eles.forEach(function (ele) { - var id = ele.id(); - - if (ele.isNode()) { - var d = ele.degree(true); - - if (d % 2) { - if (!oddIn) oddIn = id;else if (!oddOut) oddOut = id;else dflag = true; - } - - nodes[id] = []; - ele.connectedEdges().forEach(function (e) { - return nodes[id].push(e.id()); - }); - } else { - edges[id] = [ele.source().id(), ele.target().id()]; - } - }); - } - - var result = { - found: false, - trail: undefined - }; - if (dflag) return result;else if (oddOut && oddIn) { - if (directed) { - if (startVertex && oddOut != startVertex) { - return result; - } - - startVertex = oddOut; - } else { - if (startVertex && oddOut != startVertex && oddIn != startVertex) { - return result; - } else if (!startVertex) { - startVertex = oddOut; - } - } - } else { - if (!startVertex) startVertex = eles[0].id(); - } - - var walk = function walk(v) { - var currentNode = v; - var subtour = [v]; - var adj, adjTail, adjHead; - - while (nodes[currentNode].length) { - adj = nodes[currentNode].shift(); - adjTail = edges[adj][0]; - adjHead = edges[adj][1]; - - if (currentNode != adjHead) { - nodes[adjHead] = nodes[adjHead].filter(function (e) { - return e != adj; - }); - currentNode = adjHead; - } else if (!directed && currentNode != adjTail) { - nodes[adjTail] = nodes[adjTail].filter(function (e) { - return e != adj; - }); - currentNode = adjTail; - } - - subtour.unshift(adj); - subtour.unshift(currentNode); - } - - return subtour; - }; - - var trail = []; - var subtour = []; - subtour = walk(startVertex); - - while (subtour.length != 1) { - if (nodes[subtour[0]].length == 0) { - trail.unshift(eles.getElementById(subtour.shift())); - trail.unshift(eles.getElementById(subtour.shift())); - } else { - subtour = walk(subtour.shift()).concat(subtour); - } - } - - trail.unshift(eles.getElementById(subtour.shift())); // final node - - for (var d in nodes) { - if (nodes[d].length) { - return result; - } - } - - result.found = true; - result.trail = this.spawn(trail, true); - return result; - } -}; - -var hopcroftTarjanBiconnected = function hopcroftTarjanBiconnected() { - var eles = this; - var nodes = {}; - var id = 0; - var edgeCount = 0; - var components = []; - var stack = []; - var visitedEdges = {}; - - var buildComponent = function buildComponent(x, y) { - var i = stack.length - 1; - var cutset = []; - var component = eles.spawn(); - - while (stack[i].x != x || stack[i].y != y) { - cutset.push(stack.pop().edge); - i--; - } - - cutset.push(stack.pop().edge); - cutset.forEach(function (edge) { - var connectedNodes = edge.connectedNodes().intersection(eles); - component.merge(edge); - connectedNodes.forEach(function (node) { - var nodeId = node.id(); - var connectedEdges = node.connectedEdges().intersection(eles); - component.merge(node); - - if (!nodes[nodeId].cutVertex) { - component.merge(connectedEdges); - } else { - component.merge(connectedEdges.filter(function (edge) { - return edge.isLoop(); - })); - } - }); - }); - components.push(component); - }; - - var biconnectedSearch = function biconnectedSearch(root, currentNode, parent) { - if (root === parent) edgeCount += 1; - nodes[currentNode] = { - id: id, - low: id++, - cutVertex: false - }; - var edges = eles.getElementById(currentNode).connectedEdges().intersection(eles); - - if (edges.size() === 0) { - components.push(eles.spawn(eles.getElementById(currentNode))); - } else { - var sourceId, targetId, otherNodeId, edgeId; - edges.forEach(function (edge) { - sourceId = edge.source().id(); - targetId = edge.target().id(); - otherNodeId = sourceId === currentNode ? targetId : sourceId; - - if (otherNodeId !== parent) { - edgeId = edge.id(); - - if (!visitedEdges[edgeId]) { - visitedEdges[edgeId] = true; - stack.push({ - x: currentNode, - y: otherNodeId, - edge: edge - }); - } - - if (!(otherNodeId in nodes)) { - biconnectedSearch(root, otherNodeId, currentNode); - nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].low); - - if (nodes[currentNode].id <= nodes[otherNodeId].low) { - nodes[currentNode].cutVertex = true; - buildComponent(currentNode, otherNodeId); - } - } else { - nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].id); - } - } - }); - } - }; - - eles.forEach(function (ele) { - if (ele.isNode()) { - var nodeId = ele.id(); - - if (!(nodeId in nodes)) { - edgeCount = 0; - biconnectedSearch(nodeId, nodeId); - nodes[nodeId].cutVertex = edgeCount > 1; - } - } - }); - var cutVertices = Object.keys(nodes).filter(function (id) { - return nodes[id].cutVertex; - }).map(function (id) { - return eles.getElementById(id); - }); - return { - cut: eles.spawn(cutVertices), - components: components - }; -}; - -var hopcroftTarjanBiconnected$1 = { - hopcroftTarjanBiconnected: hopcroftTarjanBiconnected, - htbc: hopcroftTarjanBiconnected, - htb: hopcroftTarjanBiconnected, - hopcroftTarjanBiconnectedComponents: hopcroftTarjanBiconnected -}; - -var tarjanStronglyConnected = function tarjanStronglyConnected() { - var eles = this; - var nodes = {}; - var index = 0; - var components = []; - var stack = []; - var cut = eles.spawn(eles); - - var stronglyConnectedSearch = function stronglyConnectedSearch(sourceNodeId) { - stack.push(sourceNodeId); - nodes[sourceNodeId] = { - index: index, - low: index++, - explored: false - }; - var connectedEdges = eles.getElementById(sourceNodeId).connectedEdges().intersection(eles); - connectedEdges.forEach(function (edge) { - var targetNodeId = edge.target().id(); - - if (targetNodeId !== sourceNodeId) { - if (!(targetNodeId in nodes)) { - stronglyConnectedSearch(targetNodeId); - } - - if (!nodes[targetNodeId].explored) { - nodes[sourceNodeId].low = Math.min(nodes[sourceNodeId].low, nodes[targetNodeId].low); - } - } - }); - - if (nodes[sourceNodeId].index === nodes[sourceNodeId].low) { - var componentNodes = eles.spawn(); - - for (;;) { - var nodeId = stack.pop(); - componentNodes.merge(eles.getElementById(nodeId)); - nodes[nodeId].low = nodes[sourceNodeId].index; - nodes[nodeId].explored = true; - - if (nodeId === sourceNodeId) { - break; - } - } - - var componentEdges = componentNodes.edgesWith(componentNodes); - var component = componentNodes.merge(componentEdges); - components.push(component); - cut = cut.difference(component); - } - }; - - eles.forEach(function (ele) { - if (ele.isNode()) { - var nodeId = ele.id(); - - if (!(nodeId in nodes)) { - stronglyConnectedSearch(nodeId); - } - } - }); - return { - cut: cut, - components: components - }; -}; - -var tarjanStronglyConnected$1 = { - tarjanStronglyConnected: tarjanStronglyConnected, - tsc: tarjanStronglyConnected, - tscc: tarjanStronglyConnected, - tarjanStronglyConnectedComponents: tarjanStronglyConnected -}; - -var elesfn$c = {}; -[elesfn, elesfn$1, elesfn$2, elesfn$3, elesfn$4, elesfn$5, elesfn$6, elesfn$7, elesfn$8, elesfn$9, elesfn$a, markovClustering$1, kClustering, hierarchicalClustering$1, affinityPropagation$1, elesfn$b, hopcroftTarjanBiconnected$1, tarjanStronglyConnected$1].forEach(function (props) { - extend(elesfn$c, props); -}); - +"use strict";var e=require("obsidian"),t=require("fs");class C extends e.Events{trigger(e,...t){super.trigger(e,...t)}on(e,t,C){return super.on(e,t,C)}}const i=["pinned","expanded","active-node","inactive-node","connected-active-node","hover","unhover","connected-hover","protected","filtered","hard-filtered"],H=function(e){return`${e.configDir}/plugins/juggl/`};class n{constructor(e,t){this.id=e,this.storeId=t}toString(){return`${this.storeId}:${this.id}`}toId(){return this.toString()}static fromId(e){const t=e.split(":"),C=t[0],i=t.slice(1).join(":");return new n(i,C)}static fromNode(e){return n.fromId(e.id())}static fromNodes(e){return e.map((e=>n.fromNode(e)))}static fromFile(e){return new n(e.name,"core")}static toId(e,t){return new n(e,t).toId()}}const V=function(e){return[].concat(...e.map((e=>{const t=(e=e.slice(1)).split("/"),C=[];for(const e in t){const i=t.slice(0,parseInt(e)+1).join("-");C.push(`tag-${i}`)}return C})))},r=async function(t,C,i,H){H||(H=n.toId(t.name,"core"));const r=C.app.metadataCache.getFileCache(t),L="md"===t.extension?t.basename:t.name,o=function(t,C){if(t){const i=[];if(["png","jpg","jpeg","gif","bmp","svg","tiff"].contains(t.extension)?i.push("image"):["mp3","webm","wav","m4a","ogg","3gp","flac"].contains(t.extension)?i.push("audio"):["mp4","webm","ogv"].contains(t.extension)?i.push("video"):"pdf"===t.extension&&i.push("pdf"),"md"===t.extension){i.push("note");const H=C.getFileCache(t);if(H?.frontmatter){if("image"in H.frontmatter&&i.push("image"),"tags"in H.frontmatter){const t=e.parseFrontMatterTags(H.frontmatter);t&&i.push(...V(t))}if("cssclass"in H.frontmatter){const t=e.parseFrontMatterStringArray(H.frontmatter,"cssclass");t&&i.push(...t)}}H?.tags&&i.push(...V(H.tags.map((e=>e.tag))))}else i.push("file");return i}return["dangling"]}(t,C.app.metadataCache).join(" "),a={id:H,name:L,path:t.path};if(["png","jpg","jpeg","gif","bmp","svg","tiff"].contains(t.extension))try{a.resource_url=`http://localhost:${C.settings.imgServerPort}/${encodeURI(t.path)}`}catch{}i.readContent&&"md"==t.extension&&(a.content=await C.app.vault.cachedRead(t));const M=r?.frontmatter;return M&&Object.keys(M).forEach((e=>{if("position"!==e)if("image"===e){const t=M[e];try{new URL(t),a[e]=t}catch{try{a[e]=`http://localhost:${C.settings.imgServerPort}/${encodeURI(t)}`}catch{}}}else a[e]=M[e]})),{group:"nodes",data:a,classes:o}},L=function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},o=function(e,t,C,i,H,n){const V=t[e.position.start.line];let r={id:C,source:i,target:H,context:V,edgeCount:1,line:e.position.start.line,start:e.position.start.col,end:e.position.end.col};const o=e.original.split("|");o.length>1&&(r.alias=o.slice(1).join().slice(0,-2));let a="";const M=function(e,t,C){const i=new RegExp(`^${L(C)} (publishedIn) (\\d\\d\\d\\d) (\\[\\[([^\\]\\r\\n]+?)\\]\\],? *)+$`).exec(t);if(null!==i)return{class:"type-publishedIn",isInline:!1,properties:{year:i[2],context:"",type:"publishedIn"}};const H=new RegExp(`^${L(C)} ([^\\W\\d]\\w*) (\\[\\[([^\\]\\r\\n]+?)\\]\\],? *)+$`).exec(t),n=e.original.split("|");let V=null;return n.length>1&&(V=n.slice(1).join().slice(0,-2)),null!==H?{class:`type-${H[1]}`,isInline:!1,properties:{alias:V,context:"",type:H[1]}}:null}(e,V,n);return null===M?a=`${a} inline`:(r={...M.properties,...r},a=`${a} ${M.class}`),{group:"edges",data:r,classes:a}};class a extends e.Component{constructor(e){super(),this.plugin=e,this.events=new C,this.metadata=e.app.metadataCache,this.vault=e.app.vault}getEvents(e){return this.events}async createEdges(t,C,i,H){if("md"!==t.extension)return[];const n=this.metadata.getFileCache(t);if(!n)return[];const V={},r=(await this.vault.cachedRead(t)).split("\n");if(e.iterateCacheRefs(n,(e=>{const H=this.getOtherId(e,t.path).toId();if(i.$id(H).length>0){const t=`${C}->${H}`,i=t in V?V[t].length+1:1,n=o(e,r,`${t}${i}`,C,H,this.plugin.settings.typedLinkPrefix);t in V?V[t].push(n):V[t]=[n]}})),H.settings.mergeEdges){const e=[];for(const t of Object.keys(V)){const C=V[t];let i=null,H=0;for(const t of C)" inline"===t.classes?i?(i.data.context+=`\n \n---\n\n${t.data.context}`,H+=1):(i=t,H=1):e.push(t);i&&(i.data.edgeCount=H,e.push(i))}return e}return[].concat(...Object.values(V))}async connectNodes(e,t,C){const i=[];for(const H of t){const t=n.fromNode(H);if(t.storeId===this.storeId()){const H=this.getFile(t);if(H){const n=t.toId();i.push(...await this.createEdges(H,n,e,C))}}}for(const H of e.difference(t)){const e=n.fromNode(H);if(e.storeId===this.storeId()){const H=this.getFile(e);if(H){const n=e.toId();i.push(...await this.createEdges(H,n,t,C))}}}return i}getOtherId(t,C){const i=e.getLinkpath(t.link),H=this.metadata.getFirstLinkpathDest(i,C);return new n(H?H.name:i,this.storeId())}async getNodeFromLink(t,C,i){const H=e.getLinkpath(t.link),V=this.metadata.getFirstLinkpathDest(H,C);return V?await r(V,this.plugin,i.settings):function(e){return{group:"nodes",data:{id:n.toId(e,"core"),name:e},classes:"dangling"}}(H)}getFile(e){return this.metadata.getFirstLinkpathDest(e.id,"")}async fillWithBacklinks(e,t,C){if("core"===t.storeId){const i=this.getFile(t).path,H=this.metadata.resolvedLinks;for(const t of Object.keys(H))if(i in H[t]){const i=this.vault.getAbstractFileByPath(t),H=n.fromFile(i).toId();H in e||(e[H]=await r(i,this.plugin,C.settings))}}}async getNeighbourhood(t,C){const i={};for(const H of t)if(H.storeId===this.storeId()){const t=this.getFile(H);if(null===t)continue;const n=this.metadata.getFileCache(t);if(null===n)continue;H.toId()in i||(i[H.toId()]=await r(t,this.plugin,C.settings));const V={};e.iterateCacheRefs(n,(e=>{const H=this.getOtherId(e,t.path).toId();H in i||(V[H]=this.getNodeFromLink(e,t.path,C))}));for(const e of Object.keys(V))e in i||(i[e]=await V[e]);await this.fillWithBacklinks(i,H,C)}return Object.values(i)}storeId(){return"core"}get(e,t){const C=this.getFile(e);if(null===C)return null;return null===this.metadata.getFileCache(C)?(console.log("returning empty cache",e,t),null):Promise.resolve(r(C,this.plugin,t.settings))}async refreshNode(e,t){const C=e.toId();let i,H=t.viz.$id(C);if(null===this.getFile(e))return void(H&&(H.remove(),t.onGraphChanged(!0,!0)));if(H.length>0&&H.hasClass("expanded"))i=await t.expand(H,!0,!1);else{const n=await this.get(e,t);t.mergeToGraph([n],!0,!1),H=t.viz.$id(C);const V=await t.buildEdges(H);i=t.mergeToGraph(V,!0,!1)}(H.connectedEdges().difference(i.merged).remove().length>0||i.added.length>0)&&t.onGraphChanged(!0,!0)}onload(){super.onload();const t=this;this.registerEvent(this.metadata.on("changed",(e=>{t.plugin.activeGraphs().forEach((async C=>{await t.refreshNode(n.fromFile(e),C)}))}))),this.registerEvent(this.vault.on("rename",((C,i)=>{if(C instanceof e.TFile){const e=n.fromFile(C),H=n.fromPath(i);t.plugin.activeGraphs().forEach((async C=>{setTimeout((async()=>{C.viz.$id(H.toId()).remove(),await t.refreshNode(e,C)}),500)}))}}))),this.registerEvent(this.vault.on("delete",(C=>{C instanceof e.TFile&&t.plugin.activeGraphs().forEach((e=>{e.viz.$id(n.fromFile(C).toId()).remove()}))})))}}function M(){}function s(e){return e()}function l(){return Object.create(null)}function d(e){e.forEach(s)}function u(e){return"function"==typeof e}function A(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}let c,h;function m(e,t){e.appendChild(t)}function f(e,t,C){e.insertBefore(t,C||null)}function p(e){e.parentNode.removeChild(e)}function g(e,t){for(let C=0;Ce.removeEventListener(t,C,i)}function x(e,t,C){null==C?e.removeAttribute(t):e.getAttribute(t)!==C&&e.setAttribute(t,C)}function O(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function k(e,t){e.value=null==t?"":t}function E(e,t,C,i){e.style.setProperty(t,C,i?"important":"")}function P(e,t){for(let C=0;C{$.delete(e),i&&(C&&e.d(1),i())})),e.o(t)}}function q(e){e&&e.c()}function Q(e,t,C,i){const{fragment:H,on_mount:n,on_destroy:V,after_update:r}=e.$$;H&&H.m(t,C),i||I((()=>{const t=n.map(s).filter(u);V?V.push(...t):d(t),e.$$.on_mount=[]})),r.forEach(I)}function K(e,t){const C=e.$$;null!==C.fragment&&(d(C.on_destroy),C.fragment&&C.fragment.d(t),C.on_destroy=C.fragment=null,C.ctx=[])}function J(e,t){-1===e.$$.dirty[0]&&(_.push(e),F||(F=!0,R.then(G)),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const n=i.length?i[0]:C;return o.ctx&&H(o.ctx[t],o.ctx[t]=n)&&(!o.skip_bound&&o.bound[t]&&o.bound[t](n),a&&J(e,t)),C})):[],o.update(),a=!0,d(o.before_update),o.fragment=!!i&&i(o.ctx),t.target){if(t.hydrate){const e=function(e){return Array.from(e.childNodes)}(t.target);o.fragment&&o.fragment.l(e),e.forEach(p)}else o.fragment&&o.fragment.c();t.intro&&Y(e.$$.fragment),Q(e,t.target,t.anchor,t.customElement),G()}T(L)}class te{$destroy(){K(this,1),this.$destroy=M}$on(e,t){const C=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return C.push(t),()=>{const e=C.indexOf(t);-1!==e&&C.splice(e,1)}}$set(e){var t;this.$$set&&(t=e,0!==Object.keys(t).length)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Ce=function(e){return`${e.configDir}/plugins/juggl/graph.css`},ie=["ellipse","rectangle","triangle","diamond","pentagon","hexagon","tag","rhomboid","star","vee","round-rectangle","round-triangle","round-diamond","round-pentagon","round-hexagon","round-tag"],He="\n/* For a full overview of styling options, see https://js.cytoscape.org/#style */\n",ne=function(e){const t=document.createElement("div");t.addClass("graph-view",e),document.body.appendChild(t);const C=getComputedStyle(t).getPropertyValue("color");return t.detach(),C};class Ve{constructor(e){this.defaultSheet=this.getDefaultStylesheet(),this.yamlModifySheet="\n\n\nnode[title] {\n label: data(title);\n}\n\nnode[color] {\n background-color: data(color);\n}\n\nnode[shape] {\n shape: data(shape);\n}\n\nnode[width] {\n width: data(width);\n}\n\nnode[height] {\n width: data(height);\n}\n\nnode[image] {\n background-image: data(image);\n}\n",this.plugin=e}async getStylesheet(e){const C=this.plugin.vault.adapter.getFullPath(Ce(this.plugin.vault));let i="";try{i=await t.promises.readFile(C,"utf-8").catch((async e=>{if("ENOENT"===e.code){const e=He;return await t.promises.writeFile(C,e),e}throw e}))}catch(e){console.log("Couldn't load user stylesheet. This is probably because we are on mobile"),console.log(e)}let H="";"settings"in this.plugin&&(H=this.styleGroupsToSheet(this.plugin.settings.globalStyleGroups,"global"));const n=this.styleGroupsToSheet(e.settings.styleGroups,"local");return this.defaultSheet+H+i+n+this.yamlModifySheet}colorToRGBA(e){const t=document.createElement("canvas");t.width=t.height=1;const C=t.getContext("2d");C.clearRect(0,0,1,1),C.fillStyle="#000",C.fillStyle=e;const i=C.fillStyle;if(C.fillStyle="#fff",C.fillStyle=e,i!==C.fillStyle)return;C.fillRect(0,0,1,1);const H=[...C.getImageData(0,0,1,1).data];return`rgb(${H[0]}, ${H[1]}, ${H[2]})`}styleGroupsToSheet(e,t){let C="";const i=new DOMParser;for(const[H,n]of e.entries())if(n.show){let e="";if(n.icon&&n.icon.path){const t=``,C=i.parseFromString(t,"text/xml").documentElement.outerHTML;e=`background-image: url('data:image/svg+xml,${encodeURIComponent(C)}');`}const V=Math.max(Math.min(n.size,1),Math.sqrt(n.size));C+=`\nnode.${t}-${H} {\n background-color: ${n.color};\n shape: ${n.shape};\n background-fit: contain;\n ${e} \n width: mapData(degree, 0, 60, ${5*n.size}, ${35*n.size});\n height: mapData(degree, 0, 60, ${5*n.size}, ${35*n.size});\n font-size: mapData(degree, 0, 60, ${5*V}, ${11*V});\n text-max-width: mapData(degree, 0, 60, ${Math.round(65*V)}px, ${Math.round(100*V)}px);\n} \n`}else C+=`\nnode.${t}-${H} {\n display: none;\n}\n`;return C}getDefaultStylesheet(){let e=getComputedStyle(document.body).getPropertyValue("--text");e=e.replace("BlinkMacSystemFont,",""),0===e.length&&(e="Helvetica Neue");const t=ne("color-fill"),C=ne("color-fill-highlight"),i=ne("color-circle"),H=ne("color-line"),n=ne("color-line-highlight"),V=ne("color-text");return`\nnode {\n background-color: ${t};\n color: ${V};\n font-family: ${e};\n text-valign: bottom;\n shape: ellipse;\n border-width: 0;\n text-wrap: wrap;\n min-zoomed-font-size: 8;\n}\n\nnode[name] {\n label: data(name);\n}\nnode[degree] {\n width: mapData(degree, 0, 60, 5, 35);\n height: mapData(degree, 0, 60, 5, 35);\n font-size: mapData(degree, 0, 60, 5, 11);\n text-opacity: mapData(degree, 0, 60, 0.7, 1);\n text-max-width: mapData(degree, 0, 60, 65px, 100px);\n}\n\nnode:selected {\n background-blacken: 0.3;\n font-weight: bold;\n \n}\nnode:selected[degree] {\n border-width: mapData(degree, 0, 60, 1, 3);\n}\n\n.dangling {\n background-color: ${ne("color-fill-unresolved")};\n}\n\n.image {\n shape: round-rectangle;\n width: 50;\n height: 50;\n background-opacity: 0;\n background-image: data(resource_url);\n background-image-crossorigin: anonymous;\n background-image-opacity: 1;\n background-fit: contain;\n font-size: 0;\n background-clip: node;\n}\n\n.image.note {\n font-size: mapData(degree, 0, 60, 5, 11);\n}\n\nedge {\n line-color: ${H};\n loop-sweep: -50deg;\n loop-direction: -45deg;\n width: 0.70;\n \n target-arrow-shape: vee;\n target-arrow-fill: filled;\n target-arrow-color: ${H};\n \n arrow-scale: 0.55;\n\n font-size: 6;\n font-family: ${e};\n color: ${V};\n curve-style: straight;\n\n}\n\nedge[edgeCount] {\n width: mapData(edgeCount, 1, 50, 0.55, 3);\n arrow-scale: mapData(edgeCount, 1, 50, 0.35, 1.5);\n}\n\nedge:selected {\n width: 0.7;\n font-weight: bold;\n line-color: ${n};\n}\n\n:loop {\n display: none;\n}\n\nedge[type] {\n label: data(type);\n}\n.inactive-node,\n.unhover {\n opacity: 0.3;\n}\nnode.active-node,\nnode.hover {\n background-color: ${C};\n font-weight: bold;\n border-width: 0.4;\n border-color: ${i};\n opacity: 1;\n}\nedge.hover,\nedge.connected-active-node,\nedge.connected-hover {\n width: 1;\n opacity: 1;\n}\nedge.hover,\nedge.connected-hover {\n font-weight: bold;\n line-color: ${n}; \n target-arrow-color: ${n};\n}\n\nnode.pinned {\n border-style: dotted;\n border-width: 2;\n}\nnode.protected {\n ghost: yes;\n ghost-offset-x: 1px;\n ghost-offset-y: 1px;\n ghost-opacity: 0.5;\n}\nnode.hard-filtered,\nnode.filtered {\n display: none;\n}\n`}}function re(e){let t,C,i,H,n,V,r,L,o,a,s,l;return{c(){t=v("h3"),t.textContent="Appearance",C=S(),i=v("p"),H=Z("You can style the graph with css. This is done in the "),n=Z(e[0]),V=Z(" file.\n See "),r=v("a"),r.textContent="this page",L=Z(" for help with styling."),o=S(),a=v("button"),a.textContent="Open graph.css in default editor.",x(r,"href","https://publish.obsidian.md/semantic-obsidian/Node+styling")},m(M,d){f(M,t,d),f(M,C,d),f(M,i,d),m(i,H),m(i,n),m(i,V),m(i,r),m(i,L),f(M,o,d),f(M,a,d),s||(l=w(a,"click",e[1]),s=!0)},p:M,i:M,o:M,d(e){e&&p(t),e&&p(C),e&&p(i),e&&p(o),e&&p(a),s=!1,l()}}}function Le(e,t,C){let{plugin:i}=t,H=Ce(i.vault);return e.$$set=e=>{"plugin"in e&&C(2,i=e.plugin)},[H,async function(){let e=i.vault.adapter.getFullPath(H);try{const t=require("electron").shell,{promises:C}=require("fs");await C.writeFile(e,He,{flag:"wx"}).catch((e=>{})),await t.openPath(e)}catch(e){console.log("Couldn't open graph.css. This is probably because we are on mobile."),console.log(e)}},i]}class oe extends te{constructor(e){super(),ee(this,e,Le,re,A,{plugin:2})}}function ae(e){let t,C,i,H,n,V;return{c(){var e,n;t=v("script"),i=S(),H=v("div"),x(t,"type","text/javascript"),e=t.src,n=C="https://ko-fi.com/widgets/widget_2.js",c||(c=document.createElement("a")),c.href=n,e!==c.href&&x(t,"src","https://ko-fi.com/widgets/widget_2.js")},m(C,r){m(document.head,t),f(C,i,r),f(C,H,r),e[2](H),n||(V=w(t,"load",e[1]),n=!0)},p:M,i:M,o:M,d(C){p(t),C&&p(i),C&&p(H),e[2](null),n=!1,V()}}}function Me(e,t,C){let i;return[i,()=>{kofiwidget2.init("Support Juggl development!","#29abe0","B0B23OPUE"),C(0,i.innerHTML=kofiwidget2.getHTML(),i)},function(e){B[e?"unshift":"push"]((()=>{i=e,C(0,i)}))}]}class se extends te{constructor(e){super(),ee(this,e,Me,ae,A,{})}}const le=["force-directed","circle","grid","hierarchy","cola"],de={filter:"",color:"black",shape:"ellipse",icon:{name:"No icon",path:"",color:"white"},showInPane:!0,show:!0,size:1},ue={splitDirection:"vertical",typedLinkPrefix:"-",useImgServer:!1,imgServerPort:3837,debug:!1,globalStyleGroups:[],globalGraphRibbon:!0,graphSettings:{animateLayout:!0,autoAddNodes:!0,autoExpand:!1,autoZoom:!1,coreStore:"Obsidian",expandInitial:!0,fdgdLayout:"d3-force",filter:"",height:"100%",hoverEdges:!1,layout:"force-directed",limit:1e4,mergeEdges:!0,metaKeyHover:!1,mode:"workspace",navigator:!0,openWithShift:!1,readContent:!0,styleGroups:[],toolbar:!0,width:"100%",zoomSpeed:1},embedSettings:{animateLayout:!0,autoAddNodes:!1,autoExpand:!1,autoZoom:!1,coreStore:"Obsidian",expandInitial:!0,fdgdLayout:"cola",filter:"",height:"400px",hoverEdges:!1,layout:"force-directed",limit:1e3,mergeEdges:!0,metaKeyHover:!1,mode:"local",navigator:!1,openWithShift:!1,readContent:!0,styleGroups:[],toolbar:!1,width:"100%",zoomSpeed:1},globalGraphSettings:{animateLayout:!0,autoAddNodes:!0,autoExpand:!1,autoZoom:!1,coreStore:"Obsidian",expandInitial:!1,fdgdLayout:"cola",filter:"-class:dangling -class:file",height:"100%",width:"100%",limit:1e4,hoverEdges:!1,layout:"force-directed",mergeEdges:!0,metaKeyHover:!1,mode:"workspace",navigator:!0,openWithShift:!1,readContent:!1,styleGroups:[],toolbar:!0,zoomSpeed:1}};class Ae extends e.PluginSettingTab{constructor(e,t){super(e,t),this.plugin=t}display(){const{containerEl:t}=this;t.empty(),t.createEl("h3"),t.createEl("h3",{text:"Juggl"}),new se({target:t});const C=document.createElement("a");C.href="https://juggl.io",C.target="_blank",C.innerHTML="the documentation";const i=document.createElement("a");i.href="https://discord.gg/sAmSGpaPgM",i.target="_blank",i.innerHTML="the Discord server";const H=document.createElement("p");H.innerHTML="Check out "+C.outerHTML+" for documentation on how to use the plugin.
Join "+i.outerHTML+" for help, nice discussion and insight into development.",t.appendChild(H),new oe({target:t,props:{plugin:this.plugin}}),t.createEl("h3"),t.createEl("h3",{text:"Extensions"}),new e.Setting(t).setName("Use navigator").setDesc("Use the navigator overview in the bottom-right corner. Disabling could improve performance.").addToggle((e=>{e.setValue(this.plugin.settings.graphSettings.navigator).onChange((e=>{this.plugin.settings.globalGraphSettings.navigator=e,this.plugin.settings.graphSettings.navigator=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Default mode").setDesc("The default mode to open the Advanced Graph View in.").addDropdown((e=>{e.addOption("local","Local Mode"),e.addOption("workspace","Workspace Mode"),e.setValue(this.plugin.settings.graphSettings.mode).onChange((e=>{this.plugin.settings.graphSettings.mode=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Force-directed algorithm").setDesc("The default force-directed graph drawing algorithm to use. Cola is nice, but unstable in some use cases. Obsidian uses D3").addDropdown((e=>{e.addOption("cola","Cola"),e.addOption("d3-force","D3"),e.setValue(this.plugin.settings.graphSettings.fdgdLayout).onChange((e=>{this.plugin.settings.graphSettings.fdgdLayout=e,this.plugin.settings.embedSettings.fdgdLayout=e,this.plugin.settings.globalGraphSettings.fdgdLayout=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Global Graph Icon").setDesc("Show the Global Graph Icon on the left ribbon.").addToggle((e=>{e.setValue(this.plugin.settings.globalGraphRibbon).onChange((e=>{this.plugin.settings.globalGraphRibbon=e,this.plugin.saveData(this.plugin.settings),this.plugin.setGlobalIcon()}))})),new e.Setting(t).setName("Require ⌘/ctrl for preview hovers").setDesc("When set to true, you will need to hold down ⌘ (mac) or ctrl (windows) to show preview hovers of notes.").addToggle((e=>{e.setValue(this.plugin.settings.graphSettings.metaKeyHover).onChange((e=>{this.plugin.settings.graphSettings.metaKeyHover=e,this.plugin.settings.globalGraphSettings.metaKeyHover=e,this.plugin.settings.embedSettings.metaKeyHover=e,this.plugin.saveData(this.plugin.settings)}))})),t.createEl("h4",{text:"Workspace mode"}),new e.Setting(t).setName("Automatically add nodes").setDesc("This will automatically add nodes to the graph whenever a note is opened.").addToggle((e=>{e.setValue(this.plugin.settings.graphSettings.autoAddNodes).onChange((e=>{this.plugin.settings.graphSettings.autoAddNodes=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Automatically zoom on active nodes").setDesc("This will automatically keep fitting the viewport on the currently active node. In particular, this happens when you open a file.").addToggle((e=>{e.setValue(this.plugin.settings.graphSettings.autoZoom).onChange((e=>{this.plugin.settings.graphSettings.autoZoom=e,this.plugin.settings.globalGraphSettings.autoZoom=e,this.plugin.saveData(this.plugin.settings)}))})),t.createEl("h3",{text:"Advanced"}),new e.Setting(t).setName("Zoom speed").setDesc("Speed with which zooming in and out happens. A value of 1 is recommended, but can be too quick for some mice.").addSlider((e=>{e.setDynamicTooltip().setLimits(.01,1.5,.01).setValue(this.plugin.settings.graphSettings.zoomSpeed).onChange((e=>{this.plugin.settings.graphSettings.zoomSpeed=e,this.plugin.settings.embedSettings.zoomSpeed=e,this.plugin.settings.globalGraphSettings.zoomSpeed=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Hover on edges").setDesc("Hover on edges to show what they are connected to.").addToggle((e=>{e.setValue(this.plugin.settings.graphSettings.hoverEdges).onChange((e=>{this.plugin.settings.graphSettings.hoverEdges=e,this.plugin.settings.embedSettings.hoverEdges=e,this.plugin.settings.globalGraphSettings.hoverEdges=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Open with shift").setDesc("Only opens file when clicking on a node when shift is pressed.").addToggle((e=>{e.setValue(this.plugin.settings.graphSettings.openWithShift).onChange((e=>{this.plugin.settings.graphSettings.openWithShift=e,this.plugin.settings.embedSettings.openWithShift=e,this.plugin.settings.globalGraphSettings.openWithShift=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Typed links prefix").setDesc("Prefix to use for typed links. Default is '-'. Requires a server restart.").addText((e=>{e.setPlaceholder("").setValue(this.plugin.settings.typedLinkPrefix).onChange((e=>{this.plugin.settings.typedLinkPrefix=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Render images in graph").setDesc("This will show image attachments in your vault as images in the graph. Requires reloading Juggl. WARNING: On Windows this will trigger your firewall!").addToggle((e=>{e.setValue(this.plugin.settings.useImgServer).onChange((e=>{this.plugin.settings.useImgServer=e,this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Image server port").setDesc("Set the port of the image server. If you use multiple vaults, these need to be set differently. Default 3837.").addText((e=>{e.setValue(this.plugin.settings.imgServerPort+"").setPlaceholder("3837").onChange((e=>{this.plugin.settings.imgServerPort=parseInt(e.trim()),this.plugin.saveData(this.plugin.settings)}))})),new e.Setting(t).setName("Debug").setDesc("Enable debug mode, which prints a lot of stuff in the developers console.").addToggle((e=>{e.setValue(this.plugin.settings.debug).onChange((e=>{this.plugin.settings.debug=e,this.plugin.saveData(this.plugin.settings)}))}))}}var ce="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function he(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function me(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(C){var i=Object.getOwnPropertyDescriptor(e,C);Object.defineProperty(t,C,i.get?i:{enumerable:!0,get:function(){return e[C]}})})),t}function fe(e){var t={exports:{}};return e(t,t.exports),t.exports}var pe=/^\s+|\s+$/g,ge=/^[-+]0x[0-9a-f]+$/i,ve=/^0b[01]+$/i,ye=/^0o[0-7]+$/i,Ze=parseInt,Se="object"==typeof ce&&ce&&ce.Object===Object&&ce,be="object"==typeof self&&self&&self.Object===Object&&self,we=Se||be||Function("return this")(),xe=Object.prototype.toString,Oe=Math.max,ke=Math.min,Ee=function(){return we.Date.now()};function Pe(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Te(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==xe.call(e)}(e))return NaN;if(Pe(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Pe(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(pe,"");var C=ve.test(e);return C||ye.test(e)?Ze(e.slice(2),C?2:8):ge.test(e)?NaN:+e}var _e=function(e,t,C){var i,H,n,V,r,L,o=0,a=!1,M=!1,s=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function l(t){var C=i,n=H;return i=H=void 0,o=t,V=e.apply(n,C)}function d(e){return o=e,r=setTimeout(A,t),a?l(e):V}function u(e){var C=e-L;return void 0===L||C>=t||C<0||M&&e-o>=n}function A(){var e=Ee();if(u(e))return c(e);r=setTimeout(A,function(e){var C=t-(e-L);return M?ke(C,n-(e-o)):C}(e))}function c(e){return r=void 0,s&&i?l(e):(i=H=void 0,V)}function h(){var e=Ee(),C=u(e);if(i=arguments,H=this,L=e,C){if(void 0===r)return d(L);if(M)return r=setTimeout(A,t),l(L)}return void 0===r&&(r=setTimeout(A,t)),V}return t=Te(t)||0,Pe(C)&&(a=!!C.leading,n=(M="maxWait"in C)?Oe(Te(C.maxWait)||0,t):n,s="trailing"in C?!!C.trailing:s),h.cancel=function(){void 0!==r&&clearTimeout(r),o=0,i=L=H=r=void 0},h.flush=function(){return void 0===r?V:c(Ee())},h},Be=fe((function(e,t){(function(){var t,C,i,H,n,V,r,L,o,a,M,s,l,d,u;i=Math.floor,a=Math.min,C=function(e,t){return et?1:0},o=function(e,t,H,n,V){var r;if(null==H&&(H=0),null==V&&(V=C),H<0)throw new Error("lo must be non-negative");for(null==n&&(n=e.length);HC;0<=C?t++:t--)o.push(t);return o}.apply(this).reverse()).length;nu;0<=u?++s:--s)A.push(n(e,i));return A},d=function(e,t,i,H){var n,V,r;for(null==H&&(H=C),n=e[i];i>t&&H(n,V=e[r=i-1>>1])<0;)e[i]=V,i=r;return e[i]=n},u=function(e,t,i){var H,n,V,r,L;for(null==i&&(i=C),n=e.length,L=t,V=e[t],H=2*t+1;Ht?1:0},ft=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,C=1;C255)return;t.push(Math.floor(n))}var V=i[1]||i[2]||i[3],r=i[1]&&i[2]&&i[3];if(V&&!r)return;var L=C[4];if(void 0!==L){if((L=parseFloat(L))<0||L>1)return;t.push(L)}}return t}(e)||function(e){var t,C,i,H,n,V,r,L;function o(e,t,C){return C<0&&(C+=1),C>1&&(C-=1),C<1/6?e+6*(t-e)*C:C<.5?t:C<2/3?e+(t-e)*(2/3-C)*6:e}var a=new RegExp("^hsl[a]?\\(((?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?)))\\s*,\\s*((?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))[%])\\s*,\\s*((?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))[%])(?:\\s*,\\s*((?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))))?\\)$").exec(e);if(a){if((C=parseInt(a[1]))<0?C=(360- -1*C%360)%360:C>360&&(C%=360),C/=360,(i=parseFloat(a[2]))<0||i>100)return;if(i/=100,(H=parseFloat(a[3]))<0||H>100)return;if(H/=100,void 0!==(n=a[4])&&((n=parseFloat(n))<0||n>1))return;if(0===i)V=r=L=Math.round(255*H);else{var M=H<.5?H*(1+i):H+i-H*i,s=2*H-M;V=Math.round(255*o(s,M,C+1/3)),r=Math.round(255*o(s,M,C)),L=Math.round(255*o(s,M,C-1/3))}t=[V,r,L,n]}return t}(e)},gt={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},vt=function(e){for(var t=e.map,C=e.keys,i=C.length,H=0;H1&&void 0!==arguments[1]?arguments[1]:9261,i=C;!(t=e.next()).done;)i=i*Ot+t.value|0;return i},Et=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9261;return t*Ot+e|0},Pt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5381;return(t<<5)+t+e|0},Tt=function(e){return 2097152*e[0]+e[1]},_t=function(e,t){return[Et(e[0],t[0]),Pt(e[1],t[1])]},Bt=function(e,t){var C={value:0,done:!1},i=0,H=e.length;return kt({next:function(){return i=0&&(e[i]!==t||(e.splice(i,1),!C));i--);},CC=function(e){e.splice(0,e.length)},iC=function(e,t,C){return C&&(t=At(C,t)),e[t]},HC=function(e,t,C,i){C&&(t=At(C,t)),e[t]=i},nC="undefined"!=typeof Map?Map:function(){function e(){ze(this,e),this._obj={}}return Ge(e,[{key:"set",value:function(e,t){return this._obj[e]=t,this}},{key:"delete",value:function(e){return this._obj[e]=void 0,this}},{key:"clear",value:function(){this._obj={}}},{key:"has",value:function(e){return void 0!==this._obj[e]}},{key:"get",value:function(e){return this._obj[e]}}]),e}(),VC=function(){function e(t){if(ze(this,e),this._obj=Object.create(null),this.size=0,null!=t){var C;C=null!=t.instanceString&&t.instanceString()===this.instanceString()?t.toArray():t;for(var i=0;i2&&void 0!==arguments[2])||arguments[2];if(void 0!==e&&void 0!==t&&ot(e)){var i=t.group;if(null==i&&(i=t.data&&null!=t.data.source&&null!=t.data.target?"edges":"nodes"),"nodes"===i||"edges"===i){this.length=1,this[0]=this;var H=this._private={cy:e,single:!0,data:t.data||{},position:t.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:void 0===t.selectable||!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:void 0===t.grabbable||!!t.grabbable,pannable:void 0===t.pannable?"edges"===i:!!t.pannable,active:!1,classes:new rC,animation:{current:[],queue:[]},rscratch:{},scratch:t.scratch||{},edges:[],children:[],parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==H.position.x&&(H.position.x=0),null==H.position.y&&(H.position.y=0),t.renderedPosition){var n=t.renderedPosition,V=e.pan(),r=e.zoom();H.position={x:(n.x-V.x)/r,y:(n.y-V.y)/r}}var L=[];Ct(t.classes)?L=t.classes:et(t.classes)&&(L=t.classes.split(/\s+/));for(var o=0,a=L.length;o0;){var p=c.pop(),g=u(p),v=p.id();if(M[v]=g,g!==1/0)for(var y=p.neighborhood().intersect(l),Z=0;Z0)for(C.unshift(t);a[H];){var n=a[H];C.unshift(n.edge),C.unshift(n.node),H=(i=n.node).id()}return V.spawn(C)}}}},lC={kruskal:function(e){e=e||function(e){return 1};for(var t=this.byGroup(),C=t.nodes,i=t.edges,H=C.length,n=new Array(H),V=C,r=function(e){for(var t=0;t0;){if(L=u.pop(),o=L.id(),A.delete(o),p++,o===M){for(var g=[],v=H,y=M,Z=h[y];g.unshift(v),null!=Z&&g.unshift(Z),null!=(v=c[y]);)Z=h[y=v.id()];return{found:!0,distance:s[o],path:this.spawn(g),steps:p}}d[o]=!0;for(var S=L._private.edges,b=0;bS&&(l[Z]=S,c[Z]=y,h[Z]=f),!H){var b=y*o+v;!H&&l[b]>S&&(l[b]=S,c[b]=v,h[b]=f)}}}for(var w=0;w1&&void 0!==arguments[1]?arguments[1]:n,i=c(e),H=[],V=i;;){if(null==V)return t.spawn();var L=A(V),o=L.edge,a=L.pred;if(H.unshift(V[0]),V.same(C)&&H.length>0)break;null!=o&&H.unshift(o),V=a}return r.spawn(H)},hasNegativeWeightCycle:d,negativeWeightCycles:[]}}},fC=Math.sqrt(2),pC=function(e,t,C){0===C.length&&Ut("Karger-Stein must be run on a connected (sub)graph");for(var i=C[e],H=i[1],n=i[2],V=t[H],r=t[n],L=C,o=L.length-1;o>=0;o--){var a=L[o],M=a[1],s=a[2];(t[M]===V&&t[s]===r||t[M]===r&&t[s]===V)&&L.splice(o,1)}for(var l=0;li;){var H=Math.floor(Math.random()*t.length);t=pC(H,e,t),C--}return t},vC={kargerStein:function(){var e=this,t=this.byGroup(),C=t.nodes,i=t.edges;i.unmergeBy((function(e){return e.isLoop()}));var H=C.length,n=i.length,V=Math.ceil(Math.pow(Math.log(H)/Math.LN2,2)),r=Math.floor(H/fC);if(!(H<2)){for(var L=[],o=0;o0?1:e<0?-1:0},OC=function(e,t){return Math.sqrt(kC(e,t))},kC=function(e,t){var C=t.x-e.x,i=t.y-e.y;return C*C+i*i},EC=function(e){for(var t=e.length,C=0,i=0;i=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},DC=function(e,t,C){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,C),e.y2=Math.max(e.y2,C),e.h=e.y2-e.y1},NC=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},RC=function(e){var t,C,i,H,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===n.length)t=C=i=H=n[0];else if(2===n.length)t=i=n[0],H=C=n[1];else if(4===n.length){var V=$e(n,4);t=V[0],C=V[1],i=V[2],H=V[3]}return e.x1-=H,e.x2+=C,e.y1-=t,e.y2+=i,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},FC=function(e,t){e.x1=t.x1,e.y1=t.y1,e.x2=t.x2,e.y2=t.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},IC=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2t.y2)&&!(t.y1>e.y2)))))))},zC=function(e,t,C){return e.x1<=t&&t<=e.x2&&e.y1<=C&&C<=e.y2},jC=function(e,t){return zC(e,t.x1,t.y1)&&zC(e,t.x2,t.y2)},GC=function(e,t,C,i,H,n,V){var r,L=Li(H,n),o=H/2,a=n/2,M=i-a-V;if((r=Ci(e,t,C,i,C-o+L-V,M,C+o-L+V,M,!1)).length>0)return r;var s=C+o+V;if((r=Ci(e,t,C,i,s,i-a+L-V,s,i+a-L+V,!1)).length>0)return r;var l=i+a+V;if((r=Ci(e,t,C,i,C-o+L-V,l,C+o-L+V,l,!1)).length>0)return r;var d,u=C-o-V;if((r=Ci(e,t,C,i,u,i-a+L-V,u,i+a-L+V,!1)).length>0)return r;var A=C-o+L,c=i-a+L;if((d=ei(e,t,C,i,A,c,L+V)).length>0&&d[0]<=A&&d[1]<=c)return[d[0],d[1]];var h=C+o-L,m=i-a+L;if((d=ei(e,t,C,i,h,m,L+V)).length>0&&d[0]>=h&&d[1]<=m)return[d[0],d[1]];var f=C+o-L,p=i+a-L;if((d=ei(e,t,C,i,f,p,L+V)).length>0&&d[0]>=f&&d[1]>=p)return[d[0],d[1]];var g=C-o+L,v=i+a-L;return(d=ei(e,t,C,i,g,v,L+V)).length>0&&d[0]<=g&&d[1]>=v?[d[0],d[1]]:[]},WC=function(e,t,C,i,H,n,V){var r=V,L=Math.min(C,H),o=Math.max(C,H),a=Math.min(i,n),M=Math.max(i,n);return L-r<=e&&e<=o+r&&a-r<=t&&t<=M+r},$C=function(e,t,C,i,H,n,V,r,L){var o=Math.min(C,V,H)-L,a=Math.max(C,V,H)+L,M=Math.min(i,r,n)-L,s=Math.max(i,r,n)+L;return!(ea||ts)},UC=function(e,t,C,i,H,n,V,r){var L=[];!function(e,t,C,i,H){var n,V,r,L,o,a,M,s;0===e&&(e=1e-5),r=-27*(i/=e)+(t/=e)*(9*(C/=e)-t*t*2),n=(V=(3*C-t*t)/9)*V*V+(r/=54)*r,H[1]=0,M=t/3,n>0?(o=(o=r+Math.sqrt(n))<0?-Math.pow(-o,1/3):Math.pow(o,1/3),a=(a=r-Math.sqrt(n))<0?-Math.pow(-a,1/3):Math.pow(a,1/3),H[0]=-M+o+a,M+=(o+a)/2,H[4]=H[2]=-M,M=Math.sqrt(3)*(-a+o)/2,H[3]=M,H[5]=-M):(H[5]=H[3]=0,0===n?(s=r<0?-Math.pow(-r,1/3):Math.pow(r,1/3),H[0]=2*s-M,H[4]=H[2]=-(s+M)):(L=(V=-V)*V*V,L=Math.acos(r/Math.sqrt(L)),s=2*Math.sqrt(V),H[0]=-M+s*Math.cos(L/3),H[2]=-M+s*Math.cos((L+2*Math.PI)/3),H[4]=-M+s*Math.cos((L+4*Math.PI)/3)))}(1*C*C-4*C*H+2*C*V+4*H*H-4*H*V+V*V+i*i-4*i*n+2*i*r+4*n*n-4*n*r+r*r,9*C*H-3*C*C-3*C*V-6*H*H+3*H*V+9*i*n-3*i*i-3*i*r-6*n*n+3*n*r,3*C*C-6*C*H+C*V-C*e+2*H*H+2*H*e-V*e+3*i*i-6*i*n+i*r-i*t+2*n*n+2*n*t-r*t,1*C*H-C*C+C*e-H*e+i*n-i*i+i*t-n*t,L);for(var o=[],a=0;a<6;a+=2)Math.abs(L[a+1])<1e-7&&L[a]>=0&&L[a]<=1&&o.push(L[a]);o.push(1),o.push(0);for(var M,s,l,d=-1,u=0;u=0?lL?(e-H)*(e-H)+(t-n)*(t-n):o-M},XC=function(e,t,C){for(var i,H,n,V,r=0,L=0;L=e&&e>=n||i<=e&&e<=n))continue;(e-i)/(n-i)*(V-H)+H>t&&r++}return r%2!=0},qC=function(e,t,C,i,H,n,V,r,L){var o,a=new Array(C.length);null!=r[0]?(o=Math.atan(r[1]/r[0]),r[0]<0?o+=Math.PI/2:o=-o-Math.PI/2):o=r;for(var M,s=Math.cos(-o),l=Math.sin(-o),d=0;d0){var u=KC(a,-L);M=QC(u)}else M=a;return XC(e,t,M)},QC=function(e){for(var t,C,i,H,n,V,r,L,o=new Array(e.length/2),a=0;a=0&&d<=1&&A.push(d),u>=0&&u<=1&&A.push(u),0===A.length)return[];var c=A[0]*r[0]+e,h=A[0]*r[1]+t;return A.length>1?A[0]==A[1]?[c,h]:[c,h,A[1]*r[0]+e,A[1]*r[1]+t]:[c,h]},ti=function(e,t,C){return t<=e&&e<=C||C<=e&&e<=t?e:e<=t&&t<=C||C<=t&&t<=e?t:C},Ci=function(e,t,C,i,H,n,V,r,L){var o=e-H,a=C-e,M=V-H,s=t-n,l=i-t,d=r-n,u=M*s-d*o,A=a*s-l*o,c=d*a-M*l;if(0!==c){var h=u/c,m=A/c,f=-.001;return f<=h&&h<=1.001&&f<=m&&m<=1.001||L?[e+h*a,t+h*l]:[]}return 0===u||0===A?ti(e,C,V)===V?[V,r]:ti(e,C,H)===H?[H,n]:ti(H,V,C)===C?[C,i]:[]:[]},ii=function(e,t,C,i,H,n,V,r){var L,o,a,M,s,l,d=[],u=new Array(C.length),A=!0;if(null==n&&(A=!1),A){for(var c=0;c0){var h=KC(u,-r);o=QC(h)}else o=u}else o=C;for(var m=0;mo&&(o=t)},M=function(e){return L[e]},s=0;s0?m.edgesTo(h)[0]:h.edgesTo(m)[0];var p=i(f);h=h.id(),s[h]>s[A]+p&&(s[h]=s[A]+p,l.nodes.indexOf(h)<0?l.push(h):l.updateItem(h),o[h]=0,L[h]=[]),s[h]==s[A]+p&&(o[h]=o[h]+o[A],L[h].push(A))}else for(var g=0;g0;){for(var S=C.pop(),b=0;b0&&V.push(C[r]);0!==V.length&&H.push(i.collection(V))}return H}(a,L,t,i);return m=function(e){for(var t=0;t5&&void 0!==arguments[5]?arguments[5]:xi,V=i,r=0;r=2?_i(e,t,C,0,Ei,Pi):_i(e,t,C,0,ki)},squaredEuclidean:function(e,t,C){return _i(e,t,C,0,Ei)},manhattan:function(e,t,C){return _i(e,t,C,0,ki)},max:function(e,t,C){return _i(e,t,C,-1/0,Ti)}};function Di(e,t,C,i,H,n){var V;return V=tt(e)?e:Bi[e]||Bi.euclidean,0===t&&tt(e)?V(H,n):V(t,C,i,H,n)}Bi["squared-euclidean"]=Bi.squaredEuclidean,Bi.squaredeuclidean=Bi.squaredEuclidean;var Ni=eC({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),Ri=function(e){return Ni(e)},Fi=function(e,t,C,i,H){var n="kMedoids"!==H?function(e){return C[e]}:function(e){return i[e](C)},V=C,r=t;return Di(e,i.length,n,(function(e){return i[e](t)}),V,r)},Ii=function(e,t,C){for(var i=C.length,H=new Array(i),n=new Array(i),V=new Array(t),r=null,L=0;LC)return!1}return!0},Wi=function(e,t,C){for(var i=0;iH&&(H=t[L][o],n=o);V[n].push(e[L])}for(var a=0;a=H.threshold||"dendrogram"===H.mode&&1===e.length)return!1;var l,d=t[V],u=t[i[V]];l="dendrogram"===H.mode?{left:d,right:u,key:d.key}:{value:d.value.concat(u.value),key:d.key},e[d.index]=l,e.splice(u.index,1),t[d.key]=l;for(var A=0;AC[u.key][c.key]&&(n=C[u.key][c.key])):"max"===H.linkage?(n=C[d.key][c.key],C[d.key][c.key]1&&void 0!==arguments[1]?arguments[1]:0,C=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],H=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(C0&&e.splice(0,t)):e=e.slice(t,C);for(var n=0,V=e.length-1;V>=0;V--){var r=e[V];H?isFinite(r)||(e[V]=-1/0,n++):e.splice(V,1)}i&&e.sort((function(e,t){return e-t}));var L=e.length,o=Math.floor(L/2);return L%2!=0?e[o+1+n]:(e[o-1+n]+e[o+n])/2}(e):"mean"===t?function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,C=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,i=0,H=0,n=t;n1&&void 0!==arguments[1]?arguments[1]:0,C=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,i=1/0,H=t;H1&&void 0!==arguments[1]?arguments[1]:0,C=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,i=-1/0,H=t;HV&&(n=L,V=t[H*e+L])}n>0&&i.push(n)}for(var o=0;o=S?(b=S,S=x,w=O):x>b&&(b=x);for(var k=0;k0?1:0;v[g%o.minIterations*t+D]=N,B+=N}if(B>0&&(g>=o.minIterations-1||g==o.maxIterations-1)){for(var R=0,F=0;F0&&i.push(H);return i}(t,n,V),j=function(e,t,C){for(var i=oH(e,t,C),H=0;HL&&(r=o,L=a)}C[H]=n[r]}return oH(e,t,C)}(t,i,z),G={},W=0;W1||V>1)&&(o=!0),a[t]=[],e.outgoers().forEach((function(e){e.isEdge()&&a[t].push(e.id())}))}else M[t]=[void 0,e.target().id()]})):L.forEach((function(e){var t=e.id();e.isNode()?(e.degree(!0)%2&&(C?i?o=!0:i=t:C=t),a[t]=[],e.connectedEdges().forEach((function(e){return a[t].push(e.id())}))):M[t]=[e.source().id(),e.target().id()]}));var s={found:!1,trail:void 0};if(o)return s;if(i&&C)if(r){if(H&&i!=H)return s;H=i}else{if(H&&i!=H&&C!=H)return s;H||(H=i)}else H||(H=L[0].id());var l=function(e){for(var t,C,i,H=e,n=[e];a[H].length;)t=a[H].shift(),C=M[t][0],H!=(i=M[t][1])?(a[i]=a[i].filter((function(e){return e!=t})),H=i):r||H==C||(a[C]=a[C].filter((function(e){return e!=t})),H=C),n.unshift(t),n.unshift(H);return n},d=[],u=[];for(u=l(H);1!=u.length;)0==a[u[0]].length?(d.unshift(L.getElementById(u.shift())),d.unshift(L.getElementById(u.shift()))):u=l(u.shift()).concat(u);for(var A in d.unshift(L.getElementById(u.shift())),a)if(a[A].length)return s;return s.found=!0,s.trail=this.spawn(d,!0),s}},dH=function(){var e=this,t={},C=0,i=0,H=[],n=[],V={},r=function r(L,o,a){L===a&&(i+=1),t[o]={id:C,low:C++,cutVertex:!1};var M,s,l,d,u=e.getElementById(o).connectedEdges().intersection(e);0===u.size()?H.push(e.spawn(e.getElementById(o))):u.forEach((function(C){M=C.source().id(),s=C.target().id(),(l=M===o?s:M)!==a&&(d=C.id(),V[d]||(V[d]=!0,n.push({x:o,y:l,edge:C})),l in t?t[o].low=Math.min(t[o].low,t[l].id):(r(L,l,o),t[o].low=Math.min(t[o].low,t[l].low),t[o].id<=t[l].low&&(t[o].cutVertex=!0,function(C,i){for(var V=n.length-1,r=[],L=e.spawn();n[V].x!=C||n[V].y!=i;)r.push(n.pop().edge),V--;r.push(n.pop().edge),r.forEach((function(C){var i=C.connectedNodes().intersection(e);L.merge(C),i.forEach((function(C){var i=C.id(),H=C.connectedEdges().intersection(e);L.merge(C),t[i].cutVertex?L.merge(H.filter((function(e){return e.isLoop()}))):L.merge(H)}))})),H.push(L)}(o,l))))}))};e.forEach((function(e){if(e.isNode()){var C=e.id();C in t||(i=0,r(C,C),t[C].cutVertex=i>1)}}));var L=Object.keys(t).filter((function(e){return t[e].cutVertex})).map((function(t){return e.getElementById(t)}));return{cut:e.spawn(L),components:H}},uH=function(){var e=this,t={},C=0,i=[],H=[],n=e.spawn(e),V=function V(r){if(H.push(r),t[r]={index:C,low:C++,explored:!1},e.getElementById(r).connectedEdges().intersection(e).forEach((function(e){var C=e.target().id();C!==r&&(C in t||V(C),t[C].explored||(t[r].low=Math.min(t[r].low,t[C].low)))})),t[r].index===t[r].low){for(var L=e.spawn();;){var o=H.pop();if(L.merge(e.getElementById(o)),t[o].low=t[r].index,t[o].explored=!0,o===r)break}var a=L.edgesWith(L),M=L.merge(a);i.push(M),n=n.difference(M)}};return e.forEach((function(e){if(e.isNode()){var C=e.id();C in t||V(C)}})),{cut:n,components:i}},AH={};[aC,sC,lC,uC,cC,mC,vC,si,di,Ai,hi,wi,Qi,nH,MH,lH,{hopcroftTarjanBiconnected:dH,htbc:dH,htb:dH,hopcroftTarjanBiconnectedComponents:dH},{tarjanStronglyConnected:uH,tsc:uH,tscc:uH,tarjanStronglyConnectedComponents:uH}].forEach((function(e){ft(AH,e)})); /*! Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) Licensed under The MIT License (http://opensource.org/licenses/MIT) */ - -/* promise states [Promises/A+ 2.1] */ -var STATE_PENDING = 0; -/* [Promises/A+ 2.1.1] */ - -var STATE_FULFILLED = 1; -/* [Promises/A+ 2.1.2] */ - -var STATE_REJECTED = 2; -/* [Promises/A+ 2.1.3] */ - -/* promise object constructor */ - -var api = function api(executor) { - /* optionally support non-constructor/plain-function call */ - if (!(this instanceof api)) return new api(executor); - /* initialize object */ - - this.id = 'Thenable/1.0.7'; - this.state = STATE_PENDING; - /* initial state */ - - this.fulfillValue = undefined; - /* initial value */ - - /* [Promises/A+ 1.3, 2.1.2.2] */ - - this.rejectReason = undefined; - /* initial reason */ - - /* [Promises/A+ 1.5, 2.1.3.2] */ - - this.onFulfilled = []; - /* initial handlers */ - - this.onRejected = []; - /* initial handlers */ - - /* provide optional information-hiding proxy */ - - this.proxy = { - then: this.then.bind(this) - }; - /* support optional executor function */ - - if (typeof executor === 'function') executor.call(this, this.fulfill.bind(this), this.reject.bind(this)); -}; -/* promise API methods */ - - -api.prototype = { - /* promise resolving methods */ - fulfill: function fulfill(value) { - return deliver(this, STATE_FULFILLED, 'fulfillValue', value); - }, - reject: function reject(value) { - return deliver(this, STATE_REJECTED, 'rejectReason', value); - }, - - /* "The then Method" [Promises/A+ 1.1, 1.2, 2.2] */ - then: function then(onFulfilled, onRejected) { - var curr = this; - var next = new api(); - /* [Promises/A+ 2.2.7] */ - - curr.onFulfilled.push(resolver(onFulfilled, next, 'fulfill')); - /* [Promises/A+ 2.2.2/2.2.6] */ - - curr.onRejected.push(resolver(onRejected, next, 'reject')); - /* [Promises/A+ 2.2.3/2.2.6] */ - - execute(curr); - return next.proxy; - /* [Promises/A+ 2.2.7, 3.3] */ - } -}; -/* deliver an action */ - -var deliver = function deliver(curr, state, name, value) { - if (curr.state === STATE_PENDING) { - curr.state = state; - /* [Promises/A+ 2.1.2.1, 2.1.3.1] */ - - curr[name] = value; - /* [Promises/A+ 2.1.2.2, 2.1.3.2] */ - - execute(curr); - } - - return curr; -}; -/* execute all handlers */ - - -var execute = function execute(curr) { - if (curr.state === STATE_FULFILLED) execute_handlers(curr, 'onFulfilled', curr.fulfillValue);else if (curr.state === STATE_REJECTED) execute_handlers(curr, 'onRejected', curr.rejectReason); -}; -/* execute particular set of handlers */ - - -var execute_handlers = function execute_handlers(curr, name, value) { - /* global setImmediate: true */ - - /* global setTimeout: true */ - - /* short-circuit processing */ - if (curr[name].length === 0) return; - /* iterate over all handlers, exactly once */ - - var handlers = curr[name]; - curr[name] = []; - /* [Promises/A+ 2.2.2.3, 2.2.3.3] */ - - var func = function func() { - for (var i = 0; i < handlers.length; i++) { - handlers[i](value); - } - /* [Promises/A+ 2.2.5] */ - - }; - /* execute procedure asynchronously */ - - /* [Promises/A+ 2.2.4, 3.1] */ - - - if (typeof setImmediate === 'function') setImmediate(func);else setTimeout(func, 0); -}; -/* generate a resolver function */ - - -var resolver = function resolver(cb, next, method) { - return function (value) { - if (typeof cb !== 'function') - /* [Promises/A+ 2.2.1, 2.2.7.3, 2.2.7.4] */ - next[method].call(next, value); - /* [Promises/A+ 2.2.7.3, 2.2.7.4] */ - else { - var result; - - try { - result = cb(value); - } - /* [Promises/A+ 2.2.2.1, 2.2.3.1, 2.2.5, 3.2] */ - catch (e) { - next.reject(e); - /* [Promises/A+ 2.2.7.2] */ - - return; - } - - resolve(next, result); - /* [Promises/A+ 2.2.7.1] */ - } - }; -}; -/* "Promise Resolution Procedure" */ - -/* [Promises/A+ 2.3] */ - - -var resolve = function resolve(promise, x) { - /* sanity check arguments */ - - /* [Promises/A+ 2.3.1] */ - if (promise === x || promise.proxy === x) { - promise.reject(new TypeError('cannot resolve promise with itself')); - return; - } - /* surgically check for a "then" method - (mainly to just call the "getter" of "then" only once) */ - - - var then; - - if (_typeof(x) === 'object' && x !== null || typeof x === 'function') { - try { - then = x.then; - } - /* [Promises/A+ 2.3.3.1, 3.5] */ - catch (e) { - promise.reject(e); - /* [Promises/A+ 2.3.3.2] */ - - return; - } - } - /* handle own Thenables [Promises/A+ 2.3.2] - and similar "thenables" [Promises/A+ 2.3.3] */ - - - if (typeof then === 'function') { - var resolved = false; - - try { - /* call retrieved "then" method */ - - /* [Promises/A+ 2.3.3.3] */ - then.call(x, - /* resolvePromise */ - - /* [Promises/A+ 2.3.3.3.1] */ - function (y) { - if (resolved) return; - resolved = true; - /* [Promises/A+ 2.3.3.3.3] */ - - if (y === x) - /* [Promises/A+ 3.6] */ - promise.reject(new TypeError('circular thenable chain'));else resolve(promise, y); - }, - /* rejectPromise */ - - /* [Promises/A+ 2.3.3.3.2] */ - function (r) { - if (resolved) return; - resolved = true; - /* [Promises/A+ 2.3.3.3.3] */ - - promise.reject(r); - }); - } catch (e) { - if (!resolved) - /* [Promises/A+ 2.3.3.3.3] */ - promise.reject(e); - /* [Promises/A+ 2.3.3.3.4] */ - } - - return; - } - /* handle other values */ - - - promise.fulfill(x); - /* [Promises/A+ 2.3.4, 2.3.3.4] */ -}; // so we always have Promise.all() - - -api.all = function (ps) { - return new api(function (resolveAll, rejectAll) { - var vals = new Array(ps.length); - var doneCount = 0; - - var fulfill = function fulfill(i, val) { - vals[i] = val; - doneCount++; - - if (doneCount === ps.length) { - resolveAll(vals); - } - }; - - for (var i = 0; i < ps.length; i++) { - (function (i) { - var p = ps[i]; - var isPromise = p != null && p.then != null; - - if (isPromise) { - p.then(function (val) { - fulfill(i, val); - }, function (err) { - rejectAll(err); - }); - } else { - var val = p; - fulfill(i, val); - } - })(i); - } - }); -}; - -api.resolve = function (val) { - return new api(function (resolve, reject) { - resolve(val); - }); -}; - -api.reject = function (val) { - return new api(function (resolve, reject) { - reject(val); - }); -}; - -var Promise$1$1 = typeof Promise !== 'undefined' ? Promise : api; // eslint-disable-line no-undef - -var Animation = function Animation(target, opts, opts2) { - var isCore = core(target); - var isEle = !isCore; - - var _p = this._private = extend({ - duration: 1000 - }, opts, opts2); - - _p.target = target; - _p.style = _p.style || _p.css; - _p.started = false; - _p.playing = false; - _p.hooked = false; - _p.applying = false; - _p.progress = 0; - _p.completes = []; - _p.frames = []; - - if (_p.complete && fn(_p.complete)) { - _p.completes.push(_p.complete); - } - - if (isEle) { - var pos = target.position(); - _p.startPosition = _p.startPosition || { - x: pos.x, - y: pos.y - }; - _p.startStyle = _p.startStyle || target.cy().style().getAnimationStartStyle(target, _p.style); - } - - if (isCore) { - var pan = target.pan(); - _p.startPan = { - x: pan.x, - y: pan.y - }; - _p.startZoom = target.zoom(); - } // for future timeline/animations impl - - - this.length = 1; - this[0] = this; -}; - -var anifn = Animation.prototype; -extend(anifn, { - instanceString: function instanceString() { - return 'animation'; - }, - hook: function hook() { - var _p = this._private; - - if (!_p.hooked) { - // add to target's animation queue - var q; - var tAni = _p.target._private.animation; - - if (_p.queue) { - q = tAni.queue; - } else { - q = tAni.current; - } - - q.push(this); // add to the animation loop pool - - if (elementOrCollection(_p.target)) { - _p.target.cy().addToAnimationPool(_p.target); - } - - _p.hooked = true; - } - - return this; - }, - play: function play() { - var _p = this._private; // autorewind - - if (_p.progress === 1) { - _p.progress = 0; - } - - _p.playing = true; - _p.started = false; // needs to be started by animation loop - - _p.stopped = false; - this.hook(); // the animation loop will start the animation... - - return this; - }, - playing: function playing() { - return this._private.playing; - }, - apply: function apply() { - var _p = this._private; - _p.applying = true; - _p.started = false; // needs to be started by animation loop - - _p.stopped = false; - this.hook(); // the animation loop will apply the animation at this progress - - return this; - }, - applying: function applying() { - return this._private.applying; - }, - pause: function pause() { - var _p = this._private; - _p.playing = false; - _p.started = false; - return this; - }, - stop: function stop() { - var _p = this._private; - _p.playing = false; - _p.started = false; - _p.stopped = true; // to be removed from animation queues - - return this; - }, - rewind: function rewind() { - return this.progress(0); - }, - fastforward: function fastforward() { - return this.progress(1); - }, - time: function time(t) { - var _p = this._private; - - if (t === undefined) { - return _p.progress * _p.duration; - } else { - return this.progress(t / _p.duration); - } - }, - progress: function progress(p) { - var _p = this._private; - var wasPlaying = _p.playing; - - if (p === undefined) { - return _p.progress; - } else { - if (wasPlaying) { - this.pause(); - } - - _p.progress = p; - _p.started = false; - - if (wasPlaying) { - this.play(); - } - } - - return this; - }, - completed: function completed() { - return this._private.progress === 1; - }, - reverse: function reverse() { - var _p = this._private; - var wasPlaying = _p.playing; - - if (wasPlaying) { - this.pause(); - } - - _p.progress = 1 - _p.progress; - _p.started = false; - - var swap = function swap(a, b) { - var _pa = _p[a]; - - if (_pa == null) { - return; - } - - _p[a] = _p[b]; - _p[b] = _pa; - }; - - swap('zoom', 'startZoom'); - swap('pan', 'startPan'); - swap('position', 'startPosition'); // swap styles - - if (_p.style) { - for (var i = 0; i < _p.style.length; i++) { - var prop = _p.style[i]; - var name = prop.name; - var startStyleProp = _p.startStyle[name]; - _p.startStyle[name] = prop; - _p.style[i] = startStyleProp; - } - } - - if (wasPlaying) { - this.play(); - } - - return this; - }, - promise: function promise(type) { - var _p = this._private; - var arr; - - switch (type) { - case 'frame': - arr = _p.frames; - break; - - default: - case 'complete': - case 'completed': - arr = _p.completes; - } - - return new Promise$1$1(function (resolve, reject) { - arr.push(function () { - resolve(); - }); - }); - } -}); -anifn.complete = anifn.completed; -anifn.run = anifn.play; -anifn.running = anifn.playing; - -var define = { - animated: function animated() { - return function animatedImpl() { - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - - var cy = this._private.cy || this; - - if (!cy.styleEnabled()) { - return false; - } - - var ele = all[0]; - - if (ele) { - return ele._private.animation.current.length > 0; - } - }; - }, - // animated - clearQueue: function clearQueue() { - return function clearQueueImpl() { - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - - var cy = this._private.cy || this; - - if (!cy.styleEnabled()) { - return this; - } - - for (var i = 0; i < all.length; i++) { - var ele = all[i]; - ele._private.animation.queue = []; - } - - return this; - }; - }, - // clearQueue - delay: function delay() { - return function delayImpl(time, complete) { - var cy = this._private.cy || this; - - if (!cy.styleEnabled()) { - return this; - } - - return this.animate({ - delay: time, - duration: time, - complete: complete - }); - }; - }, - // delay - delayAnimation: function delayAnimation() { - return function delayAnimationImpl(time, complete) { - var cy = this._private.cy || this; - - if (!cy.styleEnabled()) { - return this; - } - - return this.animation({ - delay: time, - duration: time, - complete: complete - }); - }; - }, - // delay - animation: function animation() { - return function animationImpl(properties, params) { - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - - var cy = this._private.cy || this; - var isCore = !selfIsArrayLike; - var isEles = !isCore; - - if (!cy.styleEnabled()) { - return this; - } - - var style = cy.style(); - properties = extend({}, properties, params); - var propertiesEmpty = Object.keys(properties).length === 0; - - if (propertiesEmpty) { - return new Animation(all[0], properties); // nothing to animate - } - - if (properties.duration === undefined) { - properties.duration = 400; - } - - switch (properties.duration) { - case 'slow': - properties.duration = 600; - break; - - case 'fast': - properties.duration = 200; - break; - } - - if (isEles) { - properties.style = style.getPropsList(properties.style || properties.css); - properties.css = undefined; - } - - if (isEles && properties.renderedPosition != null) { - var rpos = properties.renderedPosition; - var pan = cy.pan(); - var zoom = cy.zoom(); - properties.position = renderedToModelPosition(rpos, zoom, pan); - } // override pan w/ panBy if set - - - if (isCore && properties.panBy != null) { - var panBy = properties.panBy; - var cyPan = cy.pan(); - properties.pan = { - x: cyPan.x + panBy.x, - y: cyPan.y + panBy.y - }; - } // override pan w/ center if set - - - var center = properties.center || properties.centre; - - if (isCore && center != null) { - var centerPan = cy.getCenterPan(center.eles, properties.zoom); - - if (centerPan != null) { - properties.pan = centerPan; - } - } // override pan & zoom w/ fit if set - - - if (isCore && properties.fit != null) { - var fit = properties.fit; - var fitVp = cy.getFitViewport(fit.eles || fit.boundingBox, fit.padding); - - if (fitVp != null) { - properties.pan = fitVp.pan; - properties.zoom = fitVp.zoom; - } - } // override zoom (& potentially pan) w/ zoom obj if set - - - if (isCore && plainObject(properties.zoom)) { - var vp = cy.getZoomedViewport(properties.zoom); - - if (vp != null) { - if (vp.zoomed) { - properties.zoom = vp.zoom; - } - - if (vp.panned) { - properties.pan = vp.pan; - } - } else { - properties.zoom = null; // an inavalid zoom (e.g. no delta) gets automatically destroyed - } - } - - return new Animation(all[0], properties); - }; - }, - // animate - animate: function animate() { - return function animateImpl(properties, params) { - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - - var cy = this._private.cy || this; - - if (!cy.styleEnabled()) { - return this; - } - - if (params) { - properties = extend({}, properties, params); - } // manually hook and run the animation - - - for (var i = 0; i < all.length; i++) { - var ele = all[i]; - var queue = ele.animated() && (properties.queue === undefined || properties.queue); - var ani = ele.animation(properties, queue ? { - queue: true - } : undefined); - ani.play(); - } - - return this; // chaining - }; - }, - // animate - stop: function stop() { - return function stopImpl(clearQueue, jumpToEnd) { - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - - var cy = this._private.cy || this; - - if (!cy.styleEnabled()) { - return this; - } - - for (var i = 0; i < all.length; i++) { - var ele = all[i]; - var _p = ele._private; - var anis = _p.animation.current; - - for (var j = 0; j < anis.length; j++) { - var ani = anis[j]; - var ani_p = ani._private; - - if (jumpToEnd) { - // next iteration of the animation loop, the animation - // will go straight to the end and be removed - ani_p.duration = 0; - } - } // clear the queue of future animations - - - if (clearQueue) { - _p.animation.queue = []; - } - - if (!jumpToEnd) { - _p.animation.current = []; - } - } // we have to notify (the animation loop doesn't do it for us on `stop`) - - - cy.notify('draw'); - return this; - }; - } // stop - -}; // define - -var define$1 = { - // access data field - data: function data(params) { - var defaults = { - field: 'data', - bindingEvent: 'data', - allowBinding: false, - allowSetting: false, - allowGetting: false, - settingEvent: 'data', - settingTriggersEvent: false, - triggerFnName: 'trigger', - immutableKeys: {}, - // key => true if immutable - updateStyle: false, - beforeGet: function beforeGet(self) {}, - beforeSet: function beforeSet(self, obj) {}, - onSet: function onSet(self) {}, - canSet: function canSet(self) { - return true; - } - }; - params = extend({}, defaults, params); - return function dataImpl(name, value) { - var p = params; - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - - var single = selfIsArrayLike ? self[0] : self; // .data('foo', ...) - - if (string(name)) { - // set or get property - // .data('foo') - if (p.allowGetting && value === undefined) { - // get - var ret; - - if (single) { - p.beforeGet(single); - ret = single._private[p.field][name]; - } - - return ret; // .data('foo', 'bar') - } else if (p.allowSetting && value !== undefined) { - // set - var valid = !p.immutableKeys[name]; - - if (valid) { - var change = _defineProperty$1({}, name, value); - - p.beforeSet(self, change); - - for (var i = 0, l = all.length; i < l; i++) { - var ele = all[i]; - - if (p.canSet(ele)) { - ele._private[p.field][name] = value; - } - } // update mappers if asked - - - if (p.updateStyle) { - self.updateStyle(); - } // call onSet callback - - - p.onSet(self); - - if (p.settingTriggersEvent) { - self[p.triggerFnName](p.settingEvent); - } - } - } // .data({ 'foo': 'bar' }) - - } else if (p.allowSetting && plainObject(name)) { - // extend - var obj = name; - var k, v; - var keys = Object.keys(obj); - p.beforeSet(self, obj); - - for (var _i = 0; _i < keys.length; _i++) { - k = keys[_i]; - v = obj[k]; - - var _valid = !p.immutableKeys[k]; - - if (_valid) { - for (var j = 0; j < all.length; j++) { - var _ele = all[j]; - - if (p.canSet(_ele)) { - _ele._private[p.field][k] = v; - } - } - } - } // update mappers if asked - - - if (p.updateStyle) { - self.updateStyle(); - } // call onSet callback - - - p.onSet(self); - - if (p.settingTriggersEvent) { - self[p.triggerFnName](p.settingEvent); - } // .data(function(){ ... }) - - } else if (p.allowBinding && fn(name)) { - // bind to event - var fn$1 = name; - self.on(p.bindingEvent, fn$1); // .data() - } else if (p.allowGetting && name === undefined) { - // get whole object - var _ret; - - if (single) { - p.beforeGet(single); - _ret = single._private[p.field]; - } - - return _ret; - } - - return self; // maintain chainability - }; // function - }, - // data - // remove data field - removeData: function removeData(params) { - var defaults = { - field: 'data', - event: 'data', - triggerFnName: 'trigger', - triggerEvent: false, - immutableKeys: {} // key => true if immutable - - }; - params = extend({}, defaults, params); - return function removeDataImpl(names) { - var p = params; - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - // .removeData('foo bar') - - if (string(names)) { - // then get the list of keys, and delete them - var keys = names.split(/\s+/); - var l = keys.length; - - for (var i = 0; i < l; i++) { - // delete each non-empty key - var key = keys[i]; - - if (emptyString(key)) { - continue; - } - - var valid = !p.immutableKeys[key]; // not valid if immutable - - if (valid) { - for (var i_a = 0, l_a = all.length; i_a < l_a; i_a++) { - all[i_a]._private[p.field][key] = undefined; - } - } - } - - if (p.triggerEvent) { - self[p.triggerFnName](p.event); - } // .removeData() - - } else if (names === undefined) { - // then delete all keys - for (var _i_a = 0, _l_a = all.length; _i_a < _l_a; _i_a++) { - var _privateFields = all[_i_a]._private[p.field]; - - var _keys = Object.keys(_privateFields); - - for (var _i2 = 0; _i2 < _keys.length; _i2++) { - var _key = _keys[_i2]; - var validKeyToDelete = !p.immutableKeys[_key]; - - if (validKeyToDelete) { - _privateFields[_key] = undefined; - } - } - } - - if (p.triggerEvent) { - self[p.triggerFnName](p.event); - } - } - - return self; // maintain chaining - }; // function - } // removeData - -}; // define - -var define$2 = { - eventAliasesOn: function eventAliasesOn(proto) { - var p = proto; - p.addListener = p.listen = p.bind = p.on; - p.unlisten = p.unbind = p.off = p.removeListener; - p.trigger = p.emit; // this is just a wrapper alias of .on() - - p.pon = p.promiseOn = function (events, selector) { - var self = this; - var args = Array.prototype.slice.call(arguments, 0); - return new Promise$1$1(function (resolve, reject) { - var callback = function callback(e) { - self.off.apply(self, offArgs); - resolve(e); - }; - - var onArgs = args.concat([callback]); - var offArgs = onArgs.concat([]); - self.on.apply(self, onArgs); - }); - }; - } -}; // define - -// use this module to cherry pick functions into your prototype -var define$3 = {}; -[define, define$1, define$2].forEach(function (m) { - extend(define$3, m); -}); - -var elesfn$d = { - animate: define$3.animate(), - animation: define$3.animation(), - animated: define$3.animated(), - clearQueue: define$3.clearQueue(), - delay: define$3.delay(), - delayAnimation: define$3.delayAnimation(), - stop: define$3.stop() -}; - -var elesfn$e = { - classes: function classes(_classes) { - var self = this; - - if (_classes === undefined) { - var ret = []; - - self[0]._private.classes.forEach(function (cls) { - return ret.push(cls); - }); - - return ret; - } else if (!array(_classes)) { - // extract classes from string - _classes = (_classes || '').match(/\S+/g) || []; - } - - var changed = []; - var classesSet = new Set$1$1(_classes); // check and update each ele - - for (var j = 0; j < self.length; j++) { - var ele = self[j]; - var _p = ele._private; - var eleClasses = _p.classes; - var changedEle = false; // check if ele has all of the passed classes - - for (var i = 0; i < _classes.length; i++) { - var cls = _classes[i]; - var eleHasClass = eleClasses.has(cls); - - if (!eleHasClass) { - changedEle = true; - break; - } - } // check if ele has classes outside of those passed - - - if (!changedEle) { - changedEle = eleClasses.size !== _classes.length; - } - - if (changedEle) { - _p.classes = classesSet; - changed.push(ele); - } - } // trigger update style on those eles that had class changes - - - if (changed.length > 0) { - this.spawn(changed).updateStyle().emit('class'); - } - - return self; - }, - addClass: function addClass(classes) { - return this.toggleClass(classes, true); - }, - hasClass: function hasClass(className) { - var ele = this[0]; - return ele != null && ele._private.classes.has(className); - }, - toggleClass: function toggleClass(classes, toggle) { - if (!array(classes)) { - // extract classes from string - classes = classes.match(/\S+/g) || []; - } - - var self = this; - var toggleUndefd = toggle === undefined; - var changed = []; // eles who had classes changed - - for (var i = 0, il = self.length; i < il; i++) { - var ele = self[i]; - var eleClasses = ele._private.classes; - var changedEle = false; - - for (var j = 0; j < classes.length; j++) { - var cls = classes[j]; - var hasClass = eleClasses.has(cls); - var changedNow = false; - - if (toggle || toggleUndefd && !hasClass) { - eleClasses.add(cls); - changedNow = true; - } else if (!toggle || toggleUndefd && hasClass) { - eleClasses["delete"](cls); - changedNow = true; - } - - if (!changedEle && changedNow) { - changed.push(ele); - changedEle = true; - } - } // for j classes - - } // for i eles - // trigger update style on those eles that had class changes - - - if (changed.length > 0) { - this.spawn(changed).updateStyle().emit('class'); - } - - return self; - }, - removeClass: function removeClass(classes) { - return this.toggleClass(classes, false); - }, - flashClass: function flashClass(classes, duration) { - var self = this; - - if (duration == null) { - duration = 250; - } else if (duration === 0) { - return self; // nothing to do really - } - - self.addClass(classes); - setTimeout(function () { - self.removeClass(classes); - }, duration); - return self; - } -}; -elesfn$e.className = elesfn$e.classNames = elesfn$e.classes; - -var tokens = { - metaChar: '[\\!\\"\\#\\$\\%\\&\\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]', - // chars we need to escape in let names, etc - comparatorOp: '=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=', - // binary comparison op (used in data selectors) - boolOp: '\\?|\\!|\\^', - // boolean (unary) operators (used in data selectors) - string: '"(?:\\\\"|[^"])*"' + '|' + "'(?:\\\\'|[^'])*'", - // string literals (used in data selectors) -- doublequotes | singlequotes - number: number$1, - // number literal (used in data selectors) --- e.g. 0.1234, 1234, 12e123 - meta: 'degree|indegree|outdegree', - // allowed metadata fields (i.e. allowed functions to use from Collection) - separator: '\\s*,\\s*', - // queries are separated by commas, e.g. edge[foo = 'bar'], node.someClass - descendant: '\\s+', - child: '\\s+>\\s+', - subject: '\\$', - group: 'node|edge|\\*', - directedEdge: '\\s+->\\s+', - undirectedEdge: '\\s+<->\\s+' -}; -tokens.variable = '(?:[\\w-]|(?:\\\\' + tokens.metaChar + '))+'; // a variable name - -tokens.value = tokens.string + '|' + tokens.number; // a value literal, either a string or number - -tokens.className = tokens.variable; // a class name (follows variable conventions) - -tokens.id = tokens.variable; // an element id (follows variable conventions) - -(function () { - var ops, op, i; // add @ variants to comparatorOp - - ops = tokens.comparatorOp.split('|'); - - for (i = 0; i < ops.length; i++) { - op = ops[i]; - tokens.comparatorOp += '|@' + op; - } // add ! variants to comparatorOp - - - ops = tokens.comparatorOp.split('|'); - - for (i = 0; i < ops.length; i++) { - op = ops[i]; - - if (op.indexOf('!') >= 0) { - continue; - } // skip ops that explicitly contain ! - - - if (op === '=') { - continue; - } // skip = b/c != is explicitly defined - - - tokens.comparatorOp += '|\\!' + op; - } -})(); - -/** - * Make a new query object - * - * @prop type {Type} The type enum (int) of the query - * @prop checks List of checks to make against an ele to test for a match - */ -var newQuery = function newQuery() { - return { - checks: [] - }; -}; - -/** - * A check type enum-like object. Uses integer values for fast match() lookup. - * The ordering does not matter as long as the ints are unique. - */ -var Type = { - /** E.g. node */ - GROUP: 0, - - /** A collection of elements */ - COLLECTION: 1, - - /** A filter(ele) function */ - FILTER: 2, - - /** E.g. [foo > 1] */ - DATA_COMPARE: 3, - - /** E.g. [foo] */ - DATA_EXIST: 4, - - /** E.g. [?foo] */ - DATA_BOOL: 5, - - /** E.g. [[degree > 2]] */ - META_COMPARE: 6, - - /** E.g. :selected */ - STATE: 7, - - /** E.g. #foo */ - ID: 8, - - /** E.g. .foo */ - CLASS: 9, - - /** E.g. #foo <-> #bar */ - UNDIRECTED_EDGE: 10, - - /** E.g. #foo -> #bar */ - DIRECTED_EDGE: 11, - - /** E.g. $#foo -> #bar */ - NODE_SOURCE: 12, - - /** E.g. #foo -> $#bar */ - NODE_TARGET: 13, - - /** E.g. $#foo <-> #bar */ - NODE_NEIGHBOR: 14, - - /** E.g. #foo > #bar */ - CHILD: 15, - - /** E.g. #foo #bar */ - DESCENDANT: 16, - - /** E.g. $#foo > #bar */ - PARENT: 17, - - /** E.g. $#foo #bar */ - ANCESTOR: 18, - - /** E.g. #foo > $bar > #baz */ - COMPOUND_SPLIT: 19, - - /** Always matches, useful placeholder for subject in `COMPOUND_SPLIT` */ - TRUE: 20 -}; - -var stateSelectors = [{ - selector: ':selected', - matches: function matches(ele) { - return ele.selected(); - } -}, { - selector: ':unselected', - matches: function matches(ele) { - return !ele.selected(); - } -}, { - selector: ':selectable', - matches: function matches(ele) { - return ele.selectable(); - } -}, { - selector: ':unselectable', - matches: function matches(ele) { - return !ele.selectable(); - } -}, { - selector: ':locked', - matches: function matches(ele) { - return ele.locked(); - } -}, { - selector: ':unlocked', - matches: function matches(ele) { - return !ele.locked(); - } -}, { - selector: ':visible', - matches: function matches(ele) { - return ele.visible(); - } -}, { - selector: ':hidden', - matches: function matches(ele) { - return !ele.visible(); - } -}, { - selector: ':transparent', - matches: function matches(ele) { - return ele.transparent(); - } -}, { - selector: ':grabbed', - matches: function matches(ele) { - return ele.grabbed(); - } -}, { - selector: ':free', - matches: function matches(ele) { - return !ele.grabbed(); - } -}, { - selector: ':removed', - matches: function matches(ele) { - return ele.removed(); - } -}, { - selector: ':inside', - matches: function matches(ele) { - return !ele.removed(); - } -}, { - selector: ':grabbable', - matches: function matches(ele) { - return ele.grabbable(); - } -}, { - selector: ':ungrabbable', - matches: function matches(ele) { - return !ele.grabbable(); - } -}, { - selector: ':animated', - matches: function matches(ele) { - return ele.animated(); - } -}, { - selector: ':unanimated', - matches: function matches(ele) { - return !ele.animated(); - } -}, { - selector: ':parent', - matches: function matches(ele) { - return ele.isParent(); - } -}, { - selector: ':childless', - matches: function matches(ele) { - return ele.isChildless(); - } -}, { - selector: ':child', - matches: function matches(ele) { - return ele.isChild(); - } -}, { - selector: ':orphan', - matches: function matches(ele) { - return ele.isOrphan(); - } -}, { - selector: ':nonorphan', - matches: function matches(ele) { - return ele.isChild(); - } -}, { - selector: ':compound', - matches: function matches(ele) { - if (ele.isNode()) { - return ele.isParent(); - } else { - return ele.source().isParent() || ele.target().isParent(); - } - } -}, { - selector: ':loop', - matches: function matches(ele) { - return ele.isLoop(); - } -}, { - selector: ':simple', - matches: function matches(ele) { - return ele.isSimple(); - } -}, { - selector: ':active', - matches: function matches(ele) { - return ele.active(); - } -}, { - selector: ':inactive', - matches: function matches(ele) { - return !ele.active(); - } -}, { - selector: ':backgrounding', - matches: function matches(ele) { - return ele.backgrounding(); - } -}, { - selector: ':nonbackgrounding', - matches: function matches(ele) { - return !ele.backgrounding(); - } -}].sort(function (a, b) { - // n.b. selectors that are starting substrings of others must have the longer ones first - return descending(a.selector, b.selector); -}); - -var lookup = function () { - var selToFn = {}; - var s; - - for (var i = 0; i < stateSelectors.length; i++) { - s = stateSelectors[i]; - selToFn[s.selector] = s.matches; - } - - return selToFn; -}(); - -var stateSelectorMatches = function stateSelectorMatches(sel, ele) { - return lookup[sel](ele); -}; -var stateSelectorRegex = '(' + stateSelectors.map(function (s) { - return s.selector; -}).join('|') + ')'; - -// so that values get compared properly in Selector.filter() - -var cleanMetaChars = function cleanMetaChars(str) { - return str.replace(new RegExp('\\\\(' + tokens.metaChar + ')', 'g'), function (match, $1) { - return $1; - }); -}; - -var replaceLastQuery = function replaceLastQuery(selector, examiningQuery, replacementQuery) { - selector[selector.length - 1] = replacementQuery; -}; // NOTE: add new expression syntax here to have it recognised by the parser; -// - a query contains all adjacent (i.e. no separator in between) expressions; -// - the current query is stored in selector[i] -// - you need to check the query objects in match() for it actually filter properly, but that's pretty straight forward - - -var exprs = [{ - name: 'group', - // just used for identifying when debugging - query: true, - regex: '(' + tokens.group + ')', - populate: function populate(selector, query, _ref) { - var _ref2 = _slicedToArray(_ref, 1), - group = _ref2[0]; - - query.checks.push({ - type: Type.GROUP, - value: group === '*' ? group : group + 's' - }); - } -}, { - name: 'state', - query: true, - regex: stateSelectorRegex, - populate: function populate(selector, query, _ref3) { - var _ref4 = _slicedToArray(_ref3, 1), - state = _ref4[0]; - - query.checks.push({ - type: Type.STATE, - value: state - }); - } -}, { - name: 'id', - query: true, - regex: '\\#(' + tokens.id + ')', - populate: function populate(selector, query, _ref5) { - var _ref6 = _slicedToArray(_ref5, 1), - id = _ref6[0]; - - query.checks.push({ - type: Type.ID, - value: cleanMetaChars(id) - }); - } -}, { - name: 'className', - query: true, - regex: '\\.(' + tokens.className + ')', - populate: function populate(selector, query, _ref7) { - var _ref8 = _slicedToArray(_ref7, 1), - className = _ref8[0]; - - query.checks.push({ - type: Type.CLASS, - value: cleanMetaChars(className) - }); - } -}, { - name: 'dataExists', - query: true, - regex: '\\[\\s*(' + tokens.variable + ')\\s*\\]', - populate: function populate(selector, query, _ref9) { - var _ref10 = _slicedToArray(_ref9, 1), - variable = _ref10[0]; - - query.checks.push({ - type: Type.DATA_EXIST, - field: cleanMetaChars(variable) - }); - } -}, { - name: 'dataCompare', - query: true, - regex: '\\[\\s*(' + tokens.variable + ')\\s*(' + tokens.comparatorOp + ')\\s*(' + tokens.value + ')\\s*\\]', - populate: function populate(selector, query, _ref11) { - var _ref12 = _slicedToArray(_ref11, 3), - variable = _ref12[0], - comparatorOp = _ref12[1], - value = _ref12[2]; - - var valueIsString = new RegExp('^' + tokens.string + '$').exec(value) != null; - - if (valueIsString) { - value = value.substring(1, value.length - 1); - } else { - value = parseFloat(value); - } - - query.checks.push({ - type: Type.DATA_COMPARE, - field: cleanMetaChars(variable), - operator: comparatorOp, - value: value - }); - } -}, { - name: 'dataBool', - query: true, - regex: '\\[\\s*(' + tokens.boolOp + ')\\s*(' + tokens.variable + ')\\s*\\]', - populate: function populate(selector, query, _ref13) { - var _ref14 = _slicedToArray(_ref13, 2), - boolOp = _ref14[0], - variable = _ref14[1]; - - query.checks.push({ - type: Type.DATA_BOOL, - field: cleanMetaChars(variable), - operator: boolOp - }); - } -}, { - name: 'metaCompare', - query: true, - regex: '\\[\\[\\s*(' + tokens.meta + ')\\s*(' + tokens.comparatorOp + ')\\s*(' + tokens.number + ')\\s*\\]\\]', - populate: function populate(selector, query, _ref15) { - var _ref16 = _slicedToArray(_ref15, 3), - meta = _ref16[0], - comparatorOp = _ref16[1], - number = _ref16[2]; - - query.checks.push({ - type: Type.META_COMPARE, - field: cleanMetaChars(meta), - operator: comparatorOp, - value: parseFloat(number) - }); - } -}, { - name: 'nextQuery', - separator: true, - regex: tokens.separator, - populate: function populate(selector, query) { - var currentSubject = selector.currentSubject; - var edgeCount = selector.edgeCount; - var compoundCount = selector.compoundCount; - var lastQ = selector[selector.length - 1]; - - if (currentSubject != null) { - lastQ.subject = currentSubject; - selector.currentSubject = null; - } - - lastQ.edgeCount = edgeCount; - lastQ.compoundCount = compoundCount; - selector.edgeCount = 0; - selector.compoundCount = 0; // go on to next query - - var nextQuery = selector[selector.length++] = newQuery(); - return nextQuery; // this is the new query to be filled by the following exprs - } -}, { - name: 'directedEdge', - separator: true, - regex: tokens.directedEdge, - populate: function populate(selector, query) { - if (selector.currentSubject == null) { - // undirected edge - var edgeQuery = newQuery(); - var source = query; - var target = newQuery(); - edgeQuery.checks.push({ - type: Type.DIRECTED_EDGE, - source: source, - target: target - }); // the query in the selector should be the edge rather than the source - - replaceLastQuery(selector, query, edgeQuery); - selector.edgeCount++; // we're now populating the target query with expressions that follow - - return target; - } else { - // source/target - var srcTgtQ = newQuery(); - var _source = query; - - var _target = newQuery(); - - srcTgtQ.checks.push({ - type: Type.NODE_SOURCE, - source: _source, - target: _target - }); // the query in the selector should be the neighbourhood rather than the node - - replaceLastQuery(selector, query, srcTgtQ); - selector.edgeCount++; - return _target; // now populating the target with the following expressions - } - } -}, { - name: 'undirectedEdge', - separator: true, - regex: tokens.undirectedEdge, - populate: function populate(selector, query) { - if (selector.currentSubject == null) { - // undirected edge - var edgeQuery = newQuery(); - var source = query; - var target = newQuery(); - edgeQuery.checks.push({ - type: Type.UNDIRECTED_EDGE, - nodes: [source, target] - }); // the query in the selector should be the edge rather than the source - - replaceLastQuery(selector, query, edgeQuery); - selector.edgeCount++; // we're now populating the target query with expressions that follow - - return target; - } else { - // neighbourhood - var nhoodQ = newQuery(); - var node = query; - var neighbor = newQuery(); - nhoodQ.checks.push({ - type: Type.NODE_NEIGHBOR, - node: node, - neighbor: neighbor - }); // the query in the selector should be the neighbourhood rather than the node - - replaceLastQuery(selector, query, nhoodQ); - return neighbor; // now populating the neighbor with following expressions - } - } -}, { - name: 'child', - separator: true, - regex: tokens.child, - populate: function populate(selector, query) { - if (selector.currentSubject == null) { - // default: child query - var parentChildQuery = newQuery(); - var child = newQuery(); - var parent = selector[selector.length - 1]; - parentChildQuery.checks.push({ - type: Type.CHILD, - parent: parent, - child: child - }); // the query in the selector should be the '>' itself - - replaceLastQuery(selector, query, parentChildQuery); - selector.compoundCount++; // we're now populating the child query with expressions that follow - - return child; - } else if (selector.currentSubject === query) { - // compound split query - var compound = newQuery(); - var left = selector[selector.length - 1]; - var right = newQuery(); - var subject = newQuery(); - - var _child = newQuery(); - - var _parent = newQuery(); // set up the root compound q - - - compound.checks.push({ - type: Type.COMPOUND_SPLIT, - left: left, - right: right, - subject: subject - }); // populate the subject and replace the q at the old spot (within left) with TRUE - - subject.checks = query.checks; // take the checks from the left - - query.checks = [{ - type: Type.TRUE - }]; // checks under left refs the subject implicitly - // set up the right q - - _parent.checks.push({ - type: Type.TRUE - }); // parent implicitly refs the subject - - - right.checks.push({ - type: Type.PARENT, - // type is swapped on right side queries - parent: _parent, - child: _child // empty for now - - }); - replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query` - - selector.currentSubject = subject; - selector.compoundCount++; - return _child; // now populating the right side's child - } else { - // parent query - // info for parent query - var _parent2 = newQuery(); - - var _child2 = newQuery(); - - var pcQChecks = [{ - type: Type.PARENT, - parent: _parent2, - child: _child2 - }]; // the parent-child query takes the place of the query previously being populated - - _parent2.checks = query.checks; // the previous query contains the checks for the parent - - query.checks = pcQChecks; // pc query takes over - - selector.compoundCount++; - return _child2; // we're now populating the child - } - } -}, { - name: 'descendant', - separator: true, - regex: tokens.descendant, - populate: function populate(selector, query) { - if (selector.currentSubject == null) { - // default: descendant query - var ancChQuery = newQuery(); - var descendant = newQuery(); - var ancestor = selector[selector.length - 1]; - ancChQuery.checks.push({ - type: Type.DESCENDANT, - ancestor: ancestor, - descendant: descendant - }); // the query in the selector should be the '>' itself - - replaceLastQuery(selector, query, ancChQuery); - selector.compoundCount++; // we're now populating the descendant query with expressions that follow - - return descendant; - } else if (selector.currentSubject === query) { - // compound split query - var compound = newQuery(); - var left = selector[selector.length - 1]; - var right = newQuery(); - var subject = newQuery(); - - var _descendant = newQuery(); - - var _ancestor = newQuery(); // set up the root compound q - - - compound.checks.push({ - type: Type.COMPOUND_SPLIT, - left: left, - right: right, - subject: subject - }); // populate the subject and replace the q at the old spot (within left) with TRUE - - subject.checks = query.checks; // take the checks from the left - - query.checks = [{ - type: Type.TRUE - }]; // checks under left refs the subject implicitly - // set up the right q - - _ancestor.checks.push({ - type: Type.TRUE - }); // ancestor implicitly refs the subject - - - right.checks.push({ - type: Type.ANCESTOR, - // type is swapped on right side queries - ancestor: _ancestor, - descendant: _descendant // empty for now - - }); - replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query` - - selector.currentSubject = subject; - selector.compoundCount++; - return _descendant; // now populating the right side's descendant - } else { - // ancestor query - // info for parent query - var _ancestor2 = newQuery(); - - var _descendant2 = newQuery(); - - var adQChecks = [{ - type: Type.ANCESTOR, - ancestor: _ancestor2, - descendant: _descendant2 - }]; // the parent-child query takes the place of the query previously being populated - - _ancestor2.checks = query.checks; // the previous query contains the checks for the parent - - query.checks = adQChecks; // pc query takes over - - selector.compoundCount++; - return _descendant2; // we're now populating the child - } - } -}, { - name: 'subject', - modifier: true, - regex: tokens.subject, - populate: function populate(selector, query) { - if (selector.currentSubject != null && selector.currentSubject !== query) { - warn('Redefinition of subject in selector `' + selector.toString() + '`'); - return false; - } - - selector.currentSubject = query; - var topQ = selector[selector.length - 1]; - var topChk = topQ.checks[0]; - var topType = topChk == null ? null : topChk.type; - - if (topType === Type.DIRECTED_EDGE) { - // directed edge with subject on the target - // change to target node check - topChk.type = Type.NODE_TARGET; - } else if (topType === Type.UNDIRECTED_EDGE) { - // undirected edge with subject on the second node - // change to neighbor check - topChk.type = Type.NODE_NEIGHBOR; - topChk.node = topChk.nodes[1]; // second node is subject - - topChk.neighbor = topChk.nodes[0]; // clean up unused fields for new type - - topChk.nodes = null; - } - } -}]; -exprs.forEach(function (e) { - return e.regexObj = new RegExp('^' + e.regex); -}); - -/** - * Of all the expressions, find the first match in the remaining text. - * @param {string} remaining The remaining text to parse - * @returns The matched expression and the newly remaining text `{ expr, match, name, remaining }` - */ - -var consumeExpr = function consumeExpr(remaining) { - var expr; - var match; - var name; - - for (var j = 0; j < exprs.length; j++) { - var e = exprs[j]; - var n = e.name; - var m = remaining.match(e.regexObj); - - if (m != null) { - match = m; - expr = e; - name = n; - var consumed = m[0]; - remaining = remaining.substring(consumed.length); - break; // we've consumed one expr, so we can return now - } - } - - return { - expr: expr, - match: match, - name: name, - remaining: remaining - }; -}; -/** - * Consume all the leading whitespace - * @param {string} remaining The text to consume - * @returns The text with the leading whitespace removed - */ - - -var consumeWhitespace = function consumeWhitespace(remaining) { - var match = remaining.match(/^\s+/); - - if (match) { - var consumed = match[0]; - remaining = remaining.substring(consumed.length); - } - - return remaining; -}; -/** - * Parse the string and store the parsed representation in the Selector. - * @param {string} selector The selector string - * @returns `true` if the selector was successfully parsed, `false` otherwise - */ - - -var parse = function parse(selector) { - var self = this; - var remaining = self.inputText = selector; - var currentQuery = self[0] = newQuery(); - self.length = 1; - remaining = consumeWhitespace(remaining); // get rid of leading whitespace - - for (;;) { - var exprInfo = consumeExpr(remaining); - - if (exprInfo.expr == null) { - warn('The selector `' + selector + '`is invalid'); - return false; - } else { - var args = exprInfo.match.slice(1); // let the token populate the selector object in currentQuery - - var ret = exprInfo.expr.populate(self, currentQuery, args); - - if (ret === false) { - return false; // exit if population failed - } else if (ret != null) { - currentQuery = ret; // change the current query to be filled if the expr specifies - } - } - - remaining = exprInfo.remaining; // we're done when there's nothing left to parse - - if (remaining.match(/^\s*$/)) { - break; - } - } - - var lastQ = self[self.length - 1]; - - if (self.currentSubject != null) { - lastQ.subject = self.currentSubject; - } - - lastQ.edgeCount = self.edgeCount; - lastQ.compoundCount = self.compoundCount; - - for (var i = 0; i < self.length; i++) { - var q = self[i]; // in future, this could potentially be allowed if there were operator precedence and detection of invalid combinations - - if (q.compoundCount > 0 && q.edgeCount > 0) { - warn('The selector `' + selector + '` is invalid because it uses both a compound selector and an edge selector'); - return false; - } - - if (q.edgeCount > 1) { - warn('The selector `' + selector + '` is invalid because it uses multiple edge selectors'); - return false; - } else if (q.edgeCount === 1) { - warn('The selector `' + selector + '` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.'); - } - } - - return true; // success -}; -/** - * Get the selector represented as a string. This value uses default formatting, - * so things like spacing may differ from the input text passed to the constructor. - * @returns {string} The selector string - */ - - -var toString$1 = function toString() { - if (this.toStringCache != null) { - return this.toStringCache; - } - - var clean = function clean(obj) { - if (obj == null) { - return ''; - } else { - return obj; - } - }; - - var cleanVal = function cleanVal(val) { - if (string(val)) { - return '"' + val + '"'; - } else { - return clean(val); - } - }; - - var space = function space(val) { - return ' ' + val + ' '; - }; - - var checkToString = function checkToString(check, subject) { - var type = check.type, - value = check.value; - - switch (type) { - case Type.GROUP: - { - var group = clean(value); - return group.substring(0, group.length - 1); - } - - case Type.DATA_COMPARE: - { - var field = check.field, - operator = check.operator; - return '[' + field + space(clean(operator)) + cleanVal(value) + ']'; - } - - case Type.DATA_BOOL: - { - var _operator = check.operator, - _field = check.field; - return '[' + clean(_operator) + _field + ']'; - } - - case Type.DATA_EXIST: - { - var _field2 = check.field; - return '[' + _field2 + ']'; - } - - case Type.META_COMPARE: - { - var _operator2 = check.operator, - _field3 = check.field; - return '[[' + _field3 + space(clean(_operator2)) + cleanVal(value) + ']]'; - } - - case Type.STATE: - { - return value; - } - - case Type.ID: - { - return '#' + value; - } - - case Type.CLASS: - { - return '.' + value; - } - - case Type.PARENT: - case Type.CHILD: - { - return queryToString(check.parent, subject) + space('>') + queryToString(check.child, subject); - } - - case Type.ANCESTOR: - case Type.DESCENDANT: - { - return queryToString(check.ancestor, subject) + ' ' + queryToString(check.descendant, subject); - } - - case Type.COMPOUND_SPLIT: - { - var lhs = queryToString(check.left, subject); - var sub = queryToString(check.subject, subject); - var rhs = queryToString(check.right, subject); - return lhs + (lhs.length > 0 ? ' ' : '') + sub + rhs; - } - - case Type.TRUE: - { - return ''; - } - } - }; - - var queryToString = function queryToString(query, subject) { - return query.checks.reduce(function (str, chk, i) { - return str + (subject === query && i === 0 ? '$' : '') + checkToString(chk, subject); - }, ''); - }; - - var str = ''; - - for (var i = 0; i < this.length; i++) { - var query = this[i]; - str += queryToString(query, query.subject); - - if (this.length > 1 && i < this.length - 1) { - str += ', '; - } - } - - this.toStringCache = str; - return str; -}; -var parse$1 = { - parse: parse, - toString: toString$1 -}; - -var valCmp = function valCmp(fieldVal, operator, value) { - var matches; - var isFieldStr = string(fieldVal); - var isFieldNum = number(fieldVal); - var isValStr = string(value); - var fieldStr, valStr; - var caseInsensitive = false; - var notExpr = false; - var isIneqCmp = false; - - if (operator.indexOf('!') >= 0) { - operator = operator.replace('!', ''); - notExpr = true; - } - - if (operator.indexOf('@') >= 0) { - operator = operator.replace('@', ''); - caseInsensitive = true; - } - - if (isFieldStr || isValStr || caseInsensitive) { - fieldStr = !isFieldStr && !isFieldNum ? '' : '' + fieldVal; - valStr = '' + value; - } // if we're doing a case insensitive comparison, then we're using a STRING comparison - // even if we're comparing numbers - - - if (caseInsensitive) { - fieldVal = fieldStr = fieldStr.toLowerCase(); - value = valStr = valStr.toLowerCase(); - } - - switch (operator) { - case '*=': - matches = fieldStr.indexOf(valStr) >= 0; - break; - - case '$=': - matches = fieldStr.indexOf(valStr, fieldStr.length - valStr.length) >= 0; - break; - - case '^=': - matches = fieldStr.indexOf(valStr) === 0; - break; - - case '=': - matches = fieldVal === value; - break; - - case '>': - isIneqCmp = true; - matches = fieldVal > value; - break; - - case '>=': - isIneqCmp = true; - matches = fieldVal >= value; - break; - - case '<': - isIneqCmp = true; - matches = fieldVal < value; - break; - - case '<=': - isIneqCmp = true; - matches = fieldVal <= value; - break; - - default: - matches = false; - break; - } // apply the not op, but null vals for inequalities should always stay non-matching - - - if (notExpr && (fieldVal != null || !isIneqCmp)) { - matches = !matches; - } - - return matches; -}; -var boolCmp = function boolCmp(fieldVal, operator) { - switch (operator) { - case '?': - return fieldVal ? true : false; - - case '!': - return fieldVal ? false : true; - - case '^': - return fieldVal === undefined; - } -}; -var existCmp = function existCmp(fieldVal) { - return fieldVal !== undefined; -}; -var data = function data(ele, field) { - return ele.data(field); -}; -var meta = function meta(ele, field) { - return ele[field](); -}; - -/** A lookup of `match(check, ele)` functions by `Type` int */ - -var match = []; -/** - * Returns whether the query matches for the element - * @param query The `{ type, value, ... }` query object - * @param ele The element to compare against -*/ - -var matches = function matches(query, ele) { - return query.checks.every(function (chk) { - return match[chk.type](chk, ele); - }); -}; - -match[Type.GROUP] = function (check, ele) { - var group = check.value; - return group === '*' || group === ele.group(); -}; - -match[Type.STATE] = function (check, ele) { - var stateSelector = check.value; - return stateSelectorMatches(stateSelector, ele); -}; - -match[Type.ID] = function (check, ele) { - var id = check.value; - return ele.id() === id; -}; - -match[Type.CLASS] = function (check, ele) { - var cls = check.value; - return ele.hasClass(cls); -}; - -match[Type.META_COMPARE] = function (check, ele) { - var field = check.field, - operator = check.operator, - value = check.value; - return valCmp(meta(ele, field), operator, value); -}; - -match[Type.DATA_COMPARE] = function (check, ele) { - var field = check.field, - operator = check.operator, - value = check.value; - return valCmp(data(ele, field), operator, value); -}; - -match[Type.DATA_BOOL] = function (check, ele) { - var field = check.field, - operator = check.operator; - return boolCmp(data(ele, field), operator); -}; - -match[Type.DATA_EXIST] = function (check, ele) { - var field = check.field; - check.operator; - return existCmp(data(ele, field)); -}; - -match[Type.UNDIRECTED_EDGE] = function (check, ele) { - var qA = check.nodes[0]; - var qB = check.nodes[1]; - var src = ele.source(); - var tgt = ele.target(); - return matches(qA, src) && matches(qB, tgt) || matches(qB, src) && matches(qA, tgt); -}; - -match[Type.NODE_NEIGHBOR] = function (check, ele) { - return matches(check.node, ele) && ele.neighborhood().some(function (n) { - return n.isNode() && matches(check.neighbor, n); - }); -}; - -match[Type.DIRECTED_EDGE] = function (check, ele) { - return matches(check.source, ele.source()) && matches(check.target, ele.target()); -}; - -match[Type.NODE_SOURCE] = function (check, ele) { - return matches(check.source, ele) && ele.outgoers().some(function (n) { - return n.isNode() && matches(check.target, n); - }); -}; - -match[Type.NODE_TARGET] = function (check, ele) { - return matches(check.target, ele) && ele.incomers().some(function (n) { - return n.isNode() && matches(check.source, n); - }); -}; - -match[Type.CHILD] = function (check, ele) { - return matches(check.child, ele) && matches(check.parent, ele.parent()); -}; - -match[Type.PARENT] = function (check, ele) { - return matches(check.parent, ele) && ele.children().some(function (c) { - return matches(check.child, c); - }); -}; - -match[Type.DESCENDANT] = function (check, ele) { - return matches(check.descendant, ele) && ele.ancestors().some(function (a) { - return matches(check.ancestor, a); - }); -}; - -match[Type.ANCESTOR] = function (check, ele) { - return matches(check.ancestor, ele) && ele.descendants().some(function (d) { - return matches(check.descendant, d); - }); -}; - -match[Type.COMPOUND_SPLIT] = function (check, ele) { - return matches(check.subject, ele) && matches(check.left, ele) && matches(check.right, ele); -}; - -match[Type.TRUE] = function () { - return true; -}; - -match[Type.COLLECTION] = function (check, ele) { - var collection = check.value; - return collection.has(ele); -}; - -match[Type.FILTER] = function (check, ele) { - var filter = check.value; - return filter(ele); -}; - -var filter$2 = function filter(collection) { - var self = this; // for 1 id #foo queries, just get the element - - if (self.length === 1 && self[0].checks.length === 1 && self[0].checks[0].type === Type.ID) { - return collection.getElementById(self[0].checks[0].value).collection(); - } - - var selectorFunction = function selectorFunction(element) { - for (var j = 0; j < self.length; j++) { - var query = self[j]; - - if (matches(query, element)) { - return true; - } - } - - return false; - }; - - if (self.text() == null) { - selectorFunction = function selectorFunction() { - return true; - }; - } - - return collection.filter(selectorFunction); -}; // filter -// does selector match a single element? - - -var matches$1 = function matches$1(ele) { - var self = this; - - for (var j = 0; j < self.length; j++) { - var query = self[j]; - - if (matches(query, ele)) { - return true; - } - } - - return false; -}; // matches - - -var matching = { - matches: matches$1, - filter: filter$2 -}; - -var Selector = function Selector(selector) { - this.inputText = selector; - this.currentSubject = null; - this.compoundCount = 0; - this.edgeCount = 0; - this.length = 0; - - if (selector == null || string(selector) && selector.match(/^\s*$/)) ; else if (elementOrCollection(selector)) { - this.addQuery({ - checks: [{ - type: Type.COLLECTION, - value: selector.collection() - }] - }); - } else if (fn(selector)) { - this.addQuery({ - checks: [{ - type: Type.FILTER, - value: selector - }] - }); - } else if (string(selector)) { - if (!this.parse(selector)) { - this.invalid = true; - } - } else { - error('A selector must be created from a string; found '); - } -}; - -var selfn = Selector.prototype; -[parse$1, matching].forEach(function (p) { - return extend(selfn, p); -}); - -selfn.text = function () { - return this.inputText; -}; - -selfn.size = function () { - return this.length; -}; - -selfn.eq = function (i) { - return this[i]; -}; - -selfn.sameText = function (otherSel) { - return !this.invalid && !otherSel.invalid && this.text() === otherSel.text(); -}; - -selfn.addQuery = function (q) { - this[this.length++] = q; -}; - -selfn.selector = selfn.toString; - -var elesfn$f = { - allAre: function allAre(selector) { - var selObj = new Selector(selector); - return this.every(function (ele) { - return selObj.matches(ele); - }); - }, - is: function is(selector) { - var selObj = new Selector(selector); - return this.some(function (ele) { - return selObj.matches(ele); - }); - }, - some: function some(fn, thisArg) { - for (var i = 0; i < this.length; i++) { - var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]); - - if (ret) { - return true; - } - } - - return false; - }, - every: function every(fn, thisArg) { - for (var i = 0; i < this.length; i++) { - var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]); - - if (!ret) { - return false; - } - } - - return true; - }, - same: function same(collection) { - // cheap collection ref check - if (this === collection) { - return true; - } - - collection = this.cy().collection(collection); - var thisLength = this.length; - var collectionLength = collection.length; // cheap length check - - if (thisLength !== collectionLength) { - return false; - } // cheap element ref check - - - if (thisLength === 1) { - return this[0] === collection[0]; - } - - return this.every(function (ele) { - return collection.hasElementWithId(ele.id()); - }); - }, - anySame: function anySame(collection) { - collection = this.cy().collection(collection); - return this.some(function (ele) { - return collection.hasElementWithId(ele.id()); - }); - }, - allAreNeighbors: function allAreNeighbors(collection) { - collection = this.cy().collection(collection); - var nhood = this.neighborhood(); - return collection.every(function (ele) { - return nhood.hasElementWithId(ele.id()); - }); - }, - contains: function contains(collection) { - collection = this.cy().collection(collection); - var self = this; - return collection.every(function (ele) { - return self.hasElementWithId(ele.id()); - }); - } -}; -elesfn$f.allAreNeighbours = elesfn$f.allAreNeighbors; -elesfn$f.has = elesfn$f.contains; -elesfn$f.equal = elesfn$f.equals = elesfn$f.same; - -var cache = function cache(fn, name) { - return function traversalCache(arg1, arg2, arg3, arg4) { - var selectorOrEles = arg1; - var eles = this; - var key; - - if (selectorOrEles == null) { - key = ''; - } else if (elementOrCollection(selectorOrEles) && selectorOrEles.length === 1) { - key = selectorOrEles.id(); - } - - if (eles.length === 1 && key) { - var _p = eles[0]._private; - var tch = _p.traversalCache = _p.traversalCache || {}; - var ch = tch[name] = tch[name] || []; - var hash = hashString(key); - var cacheHit = ch[hash]; - - if (cacheHit) { - return cacheHit; - } else { - return ch[hash] = fn.call(eles, arg1, arg2, arg3, arg4); - } - } else { - return fn.call(eles, arg1, arg2, arg3, arg4); - } - }; -}; - -var elesfn$g = { - parent: function parent(selector) { - var parents = []; // optimisation for single ele call - - if (this.length === 1) { - var parent = this[0]._private.parent; - - if (parent) { - return parent; - } - } - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var _parent = ele._private.parent; - - if (_parent) { - parents.push(_parent); - } - } - - return this.spawn(parents, true).filter(selector); - }, - parents: function parents(selector) { - var parents = []; - var eles = this.parent(); - - while (eles.nonempty()) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - parents.push(ele); - } - - eles = eles.parent(); - } - - return this.spawn(parents, true).filter(selector); - }, - commonAncestors: function commonAncestors(selector) { - var ancestors; - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var parents = ele.parents(); - ancestors = ancestors || parents; - ancestors = ancestors.intersect(parents); // current list must be common with current ele parents set - } - - return ancestors.filter(selector); - }, - orphans: function orphans(selector) { - return this.stdFilter(function (ele) { - return ele.isOrphan(); - }).filter(selector); - }, - nonorphans: function nonorphans(selector) { - return this.stdFilter(function (ele) { - return ele.isChild(); - }).filter(selector); - }, - children: cache(function (selector) { - var children = []; - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var eleChildren = ele._private.children; - - for (var j = 0; j < eleChildren.length; j++) { - children.push(eleChildren[j]); - } - } - - return this.spawn(children, true).filter(selector); - }, 'children'), - siblings: function siblings(selector) { - return this.parent().children().not(this).filter(selector); - }, - isParent: function isParent() { - var ele = this[0]; - - if (ele) { - return ele.isNode() && ele._private.children.length !== 0; - } - }, - isChildless: function isChildless() { - var ele = this[0]; - - if (ele) { - return ele.isNode() && ele._private.children.length === 0; - } - }, - isChild: function isChild() { - var ele = this[0]; - - if (ele) { - return ele.isNode() && ele._private.parent != null; - } - }, - isOrphan: function isOrphan() { - var ele = this[0]; - - if (ele) { - return ele.isNode() && ele._private.parent == null; - } - }, - descendants: function descendants(selector) { - var elements = []; - - function add(eles) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - elements.push(ele); - - if (ele.children().nonempty()) { - add(ele.children()); - } - } - } - - add(this.children()); - return this.spawn(elements, true).filter(selector); - } -}; - -function forEachCompound(eles, fn, includeSelf, recursiveStep) { - var q = []; - var did = new Set$1$1(); - var cy = eles.cy(); - var hasCompounds = cy.hasCompoundNodes(); - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - - if (includeSelf) { - q.push(ele); - } else if (hasCompounds) { - recursiveStep(q, did, ele); - } - } - - while (q.length > 0) { - var _ele = q.shift(); - - fn(_ele); - did.add(_ele.id()); - - if (hasCompounds) { - recursiveStep(q, did, _ele); - } - } - - return eles; -} - -function addChildren(q, did, ele) { - if (ele.isParent()) { - var children = ele._private.children; - - for (var i = 0; i < children.length; i++) { - var child = children[i]; - - if (!did.has(child.id())) { - q.push(child); - } - } - } -} // very efficient version of eles.add( eles.descendants() ).forEach() -// for internal use - - -elesfn$g.forEachDown = function (fn) { - var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - return forEachCompound(this, fn, includeSelf, addChildren); -}; - -function addParent(q, did, ele) { - if (ele.isChild()) { - var parent = ele._private.parent; - - if (!did.has(parent.id())) { - q.push(parent); - } - } -} - -elesfn$g.forEachUp = function (fn) { - var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - return forEachCompound(this, fn, includeSelf, addParent); -}; - -function addParentAndChildren(q, did, ele) { - addParent(q, did, ele); - addChildren(q, did, ele); -} - -elesfn$g.forEachUpAndDown = function (fn) { - var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - return forEachCompound(this, fn, includeSelf, addParentAndChildren); -}; // aliases - - -elesfn$g.ancestors = elesfn$g.parents; - -var fn$1, elesfn$h; -fn$1 = elesfn$h = { - data: define$3.data({ - field: 'data', - bindingEvent: 'data', - allowBinding: true, - allowSetting: true, - settingEvent: 'data', - settingTriggersEvent: true, - triggerFnName: 'trigger', - allowGetting: true, - immutableKeys: { - 'id': true, - 'source': true, - 'target': true, - 'parent': true - }, - updateStyle: true - }), - removeData: define$3.removeData({ - field: 'data', - event: 'data', - triggerFnName: 'trigger', - triggerEvent: true, - immutableKeys: { - 'id': true, - 'source': true, - 'target': true, - 'parent': true - }, - updateStyle: true - }), - scratch: define$3.data({ - field: 'scratch', - bindingEvent: 'scratch', - allowBinding: true, - allowSetting: true, - settingEvent: 'scratch', - settingTriggersEvent: true, - triggerFnName: 'trigger', - allowGetting: true, - updateStyle: true - }), - removeScratch: define$3.removeData({ - field: 'scratch', - event: 'scratch', - triggerFnName: 'trigger', - triggerEvent: true, - updateStyle: true - }), - rscratch: define$3.data({ - field: 'rscratch', - allowBinding: false, - allowSetting: true, - settingTriggersEvent: false, - allowGetting: true - }), - removeRscratch: define$3.removeData({ - field: 'rscratch', - triggerEvent: false - }), - id: function id() { - var ele = this[0]; - - if (ele) { - return ele._private.data.id; - } - } -}; // aliases - -fn$1.attr = fn$1.data; -fn$1.removeAttr = fn$1.removeData; -var data$1 = elesfn$h; - -var elesfn$i = {}; - -function defineDegreeFunction(callback) { - return function (includeLoops) { - var self = this; - - if (includeLoops === undefined) { - includeLoops = true; - } - - if (self.length === 0) { - return; - } - - if (self.isNode() && !self.removed()) { - var degree = 0; - var node = self[0]; - var connectedEdges = node._private.edges; - - for (var i = 0; i < connectedEdges.length; i++) { - var edge = connectedEdges[i]; - - if (!includeLoops && edge.isLoop()) { - continue; - } - - degree += callback(node, edge); - } - - return degree; - } else { - return; - } - }; -} - -extend(elesfn$i, { - degree: defineDegreeFunction(function (node, edge) { - if (edge.source().same(edge.target())) { - return 2; - } else { - return 1; - } - }), - indegree: defineDegreeFunction(function (node, edge) { - if (edge.target().same(node)) { - return 1; - } else { - return 0; - } - }), - outdegree: defineDegreeFunction(function (node, edge) { - if (edge.source().same(node)) { - return 1; - } else { - return 0; - } - }) -}); - -function defineDegreeBoundsFunction(degreeFn, callback) { - return function (includeLoops) { - var ret; - var nodes = this.nodes(); - - for (var i = 0; i < nodes.length; i++) { - var ele = nodes[i]; - var degree = ele[degreeFn](includeLoops); - - if (degree !== undefined && (ret === undefined || callback(degree, ret))) { - ret = degree; - } - } - - return ret; - }; -} - -extend(elesfn$i, { - minDegree: defineDegreeBoundsFunction('degree', function (degree, min) { - return degree < min; - }), - maxDegree: defineDegreeBoundsFunction('degree', function (degree, max) { - return degree > max; - }), - minIndegree: defineDegreeBoundsFunction('indegree', function (degree, min) { - return degree < min; - }), - maxIndegree: defineDegreeBoundsFunction('indegree', function (degree, max) { - return degree > max; - }), - minOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, min) { - return degree < min; - }), - maxOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, max) { - return degree > max; - }) -}); -extend(elesfn$i, { - totalDegree: function totalDegree(includeLoops) { - var total = 0; - var nodes = this.nodes(); - - for (var i = 0; i < nodes.length; i++) { - total += nodes[i].degree(includeLoops); - } - - return total; - } -}); - -var fn$2, elesfn$j; - -var beforePositionSet = function beforePositionSet(eles, newPos, silent) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - - if (!ele.locked()) { - var oldPos = ele._private.position; - var delta = { - x: newPos.x != null ? newPos.x - oldPos.x : 0, - y: newPos.y != null ? newPos.y - oldPos.y : 0 - }; - - if (ele.isParent() && !(delta.x === 0 && delta.y === 0)) { - ele.children().shift(delta, silent); - } - - ele.dirtyBoundingBoxCache(); - } - } -}; - -var positionDef = { - field: 'position', - bindingEvent: 'position', - allowBinding: true, - allowSetting: true, - settingEvent: 'position', - settingTriggersEvent: true, - triggerFnName: 'emitAndNotify', - allowGetting: true, - validKeys: ['x', 'y'], - beforeGet: function beforeGet(ele) { - ele.updateCompoundBounds(); - }, - beforeSet: function beforeSet(eles, newPos) { - beforePositionSet(eles, newPos, false); - }, - onSet: function onSet(eles) { - eles.dirtyCompoundBoundsCache(); - }, - canSet: function canSet(ele) { - return !ele.locked(); - } -}; -fn$2 = elesfn$j = { - position: define$3.data(positionDef), - // position but no notification to renderer - silentPosition: define$3.data(extend({}, positionDef, { - allowBinding: false, - allowSetting: true, - settingTriggersEvent: false, - allowGetting: false, - beforeSet: function beforeSet(eles, newPos) { - beforePositionSet(eles, newPos, true); - }, - onSet: function onSet(eles) { - eles.dirtyCompoundBoundsCache(); - } - })), - positions: function positions(pos, silent) { - if (plainObject(pos)) { - if (silent) { - this.silentPosition(pos); - } else { - this.position(pos); - } - } else if (fn(pos)) { - var _fn = pos; - var cy = this.cy(); - cy.startBatch(); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - - var _pos = void 0; - - if (_pos = _fn(ele, i)) { - if (silent) { - ele.silentPosition(_pos); - } else { - ele.position(_pos); - } - } - } - - cy.endBatch(); - } - - return this; // chaining - }, - silentPositions: function silentPositions(pos) { - return this.positions(pos, true); - }, - shift: function shift(dim, val, silent) { - var delta; - - if (plainObject(dim)) { - delta = { - x: number(dim.x) ? dim.x : 0, - y: number(dim.y) ? dim.y : 0 - }; - silent = val; - } else if (string(dim) && number(val)) { - delta = { - x: 0, - y: 0 - }; - delta[dim] = val; - } - - if (delta != null) { - var cy = this.cy(); - cy.startBatch(); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var pos = ele.position(); - var newPos = { - x: pos.x + delta.x, - y: pos.y + delta.y - }; - - if (silent) { - ele.silentPosition(newPos); - } else { - ele.position(newPos); - } - } - - cy.endBatch(); - } - - return this; - }, - silentShift: function silentShift(dim, val) { - if (plainObject(dim)) { - this.shift(dim, true); - } else if (string(dim) && number(val)) { - this.shift(dim, val, true); - } - - return this; - }, - // get/set the rendered (i.e. on screen) positon of the element - renderedPosition: function renderedPosition(dim, val) { - var ele = this[0]; - var cy = this.cy(); - var zoom = cy.zoom(); - var pan = cy.pan(); - var rpos = plainObject(dim) ? dim : undefined; - var setting = rpos !== undefined || val !== undefined && string(dim); - - if (ele && ele.isNode()) { - // must have an element and must be a node to return position - if (setting) { - for (var i = 0; i < this.length; i++) { - var _ele = this[i]; - - if (val !== undefined) { - // set one dimension - _ele.position(dim, (val - pan[dim]) / zoom); - } else if (rpos !== undefined) { - // set whole position - _ele.position(renderedToModelPosition(rpos, zoom, pan)); - } - } - } else { - // getting - var pos = ele.position(); - rpos = modelToRenderedPosition(pos, zoom, pan); - - if (dim === undefined) { - // then return the whole rendered position - return rpos; - } else { - // then return the specified dimension - return rpos[dim]; - } - } - } else if (!setting) { - return undefined; // for empty collection case - } - - return this; // chaining - }, - // get/set the position relative to the parent - relativePosition: function relativePosition(dim, val) { - var ele = this[0]; - var cy = this.cy(); - var ppos = plainObject(dim) ? dim : undefined; - var setting = ppos !== undefined || val !== undefined && string(dim); - var hasCompoundNodes = cy.hasCompoundNodes(); - - if (ele && ele.isNode()) { - // must have an element and must be a node to return position - if (setting) { - for (var i = 0; i < this.length; i++) { - var _ele2 = this[i]; - var parent = hasCompoundNodes ? _ele2.parent() : null; - var hasParent = parent && parent.length > 0; - var relativeToParent = hasParent; - - if (hasParent) { - parent = parent[0]; - } - - var origin = relativeToParent ? parent.position() : { - x: 0, - y: 0 - }; - - if (val !== undefined) { - // set one dimension - _ele2.position(dim, val + origin[dim]); - } else if (ppos !== undefined) { - // set whole position - _ele2.position({ - x: ppos.x + origin.x, - y: ppos.y + origin.y - }); - } - } - } else { - // getting - var pos = ele.position(); - - var _parent = hasCompoundNodes ? ele.parent() : null; - - var _hasParent = _parent && _parent.length > 0; - - var _relativeToParent = _hasParent; - - if (_hasParent) { - _parent = _parent[0]; - } - - var _origin = _relativeToParent ? _parent.position() : { - x: 0, - y: 0 - }; - - ppos = { - x: pos.x - _origin.x, - y: pos.y - _origin.y - }; - - if (dim === undefined) { - // then return the whole rendered position - return ppos; - } else { - // then return the specified dimension - return ppos[dim]; - } - } - } else if (!setting) { - return undefined; // for empty collection case - } - - return this; // chaining - } -}; // aliases - -fn$2.modelPosition = fn$2.point = fn$2.position; -fn$2.modelPositions = fn$2.points = fn$2.positions; -fn$2.renderedPoint = fn$2.renderedPosition; -fn$2.relativePoint = fn$2.relativePosition; -var position$1 = elesfn$j; - -var fn$3, elesfn$k; -fn$3 = elesfn$k = {}; - -elesfn$k.renderedBoundingBox = function (options) { - var bb = this.boundingBox(options); - var cy = this.cy(); - var zoom = cy.zoom(); - var pan = cy.pan(); - var x1 = bb.x1 * zoom + pan.x; - var x2 = bb.x2 * zoom + pan.x; - var y1 = bb.y1 * zoom + pan.y; - var y2 = bb.y2 * zoom + pan.y; - return { - x1: x1, - x2: x2, - y1: y1, - y2: y2, - w: x2 - x1, - h: y2 - y1 - }; -}; - -elesfn$k.dirtyCompoundBoundsCache = function () { - var silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var cy = this.cy(); - - if (!cy.styleEnabled() || !cy.hasCompoundNodes()) { - return this; - } - - this.forEachUp(function (ele) { - if (ele.isParent()) { - var _p = ele._private; - _p.compoundBoundsClean = false; - _p.bbCache = null; - - if (!silent) { - ele.emitAndNotify('bounds'); - } - } - }); - return this; -}; - -elesfn$k.updateCompoundBounds = function () { - var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var cy = this.cy(); // not possible to do on non-compound graphs or with the style disabled - - if (!cy.styleEnabled() || !cy.hasCompoundNodes()) { - return this; - } // save cycles when batching -- but bounds will be stale (or not exist yet) - - - if (!force && cy.batching()) { - return this; - } - - function update(parent) { - if (!parent.isParent()) { - return; - } - - var _p = parent._private; - var children = parent.children(); - var includeLabels = parent.pstyle('compound-sizing-wrt-labels').value === 'include'; - var min = { - width: { - val: parent.pstyle('min-width').pfValue, - left: parent.pstyle('min-width-bias-left'), - right: parent.pstyle('min-width-bias-right') - }, - height: { - val: parent.pstyle('min-height').pfValue, - top: parent.pstyle('min-height-bias-top'), - bottom: parent.pstyle('min-height-bias-bottom') - } - }; - var bb = children.boundingBox({ - includeLabels: includeLabels, - includeOverlays: false, - // updating the compound bounds happens outside of the regular - // cache cycle (i.e. before fired events) - useCache: false - }); - var pos = _p.position; // if children take up zero area then keep position and fall back on stylesheet w/h - - if (bb.w === 0 || bb.h === 0) { - bb = { - w: parent.pstyle('width').pfValue, - h: parent.pstyle('height').pfValue - }; - bb.x1 = pos.x - bb.w / 2; - bb.x2 = pos.x + bb.w / 2; - bb.y1 = pos.y - bb.h / 2; - bb.y2 = pos.y + bb.h / 2; - } - - function computeBiasValues(propDiff, propBias, propBiasComplement) { - var biasDiff = 0; - var biasComplementDiff = 0; - var biasTotal = propBias + propBiasComplement; - - if (propDiff > 0 && biasTotal > 0) { - biasDiff = propBias / biasTotal * propDiff; - biasComplementDiff = propBiasComplement / biasTotal * propDiff; - } - - return { - biasDiff: biasDiff, - biasComplementDiff: biasComplementDiff - }; - } - - function computePaddingValues(width, height, paddingObject, relativeTo) { - // Assuming percentage is number from 0 to 1 - if (paddingObject.units === '%') { - switch (relativeTo) { - case 'width': - return width > 0 ? paddingObject.pfValue * width : 0; - - case 'height': - return height > 0 ? paddingObject.pfValue * height : 0; - - case 'average': - return width > 0 && height > 0 ? paddingObject.pfValue * (width + height) / 2 : 0; - - case 'min': - return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * height : paddingObject.pfValue * width : 0; - - case 'max': - return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * width : paddingObject.pfValue * height : 0; - - default: - return 0; - } - } else if (paddingObject.units === 'px') { - return paddingObject.pfValue; - } else { - return 0; - } - } - - var leftVal = min.width.left.value; - - if (min.width.left.units === 'px' && min.width.val > 0) { - leftVal = leftVal * 100 / min.width.val; - } - - var rightVal = min.width.right.value; - - if (min.width.right.units === 'px' && min.width.val > 0) { - rightVal = rightVal * 100 / min.width.val; - } - - var topVal = min.height.top.value; - - if (min.height.top.units === 'px' && min.height.val > 0) { - topVal = topVal * 100 / min.height.val; - } - - var bottomVal = min.height.bottom.value; - - if (min.height.bottom.units === 'px' && min.height.val > 0) { - bottomVal = bottomVal * 100 / min.height.val; - } - - var widthBiasDiffs = computeBiasValues(min.width.val - bb.w, leftVal, rightVal); - var diffLeft = widthBiasDiffs.biasDiff; - var diffRight = widthBiasDiffs.biasComplementDiff; - var heightBiasDiffs = computeBiasValues(min.height.val - bb.h, topVal, bottomVal); - var diffTop = heightBiasDiffs.biasDiff; - var diffBottom = heightBiasDiffs.biasComplementDiff; - _p.autoPadding = computePaddingValues(bb.w, bb.h, parent.pstyle('padding'), parent.pstyle('padding-relative-to').value); - _p.autoWidth = Math.max(bb.w, min.width.val); - pos.x = (-diffLeft + bb.x1 + bb.x2 + diffRight) / 2; - _p.autoHeight = Math.max(bb.h, min.height.val); - pos.y = (-diffTop + bb.y1 + bb.y2 + diffBottom) / 2; - } - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var _p = ele._private; - - if (!_p.compoundBoundsClean || force) { - update(ele); - - if (!cy.batching()) { - _p.compoundBoundsClean = true; - } - } - } - - return this; -}; - -var noninf = function noninf(x) { - if (x === Infinity || x === -Infinity) { - return 0; - } - - return x; -}; - -var updateBounds = function updateBounds(b, x1, y1, x2, y2) { - // don't update with zero area boxes - if (x2 - x1 === 0 || y2 - y1 === 0) { - return; - } // don't update with null dim - - - if (x1 == null || y1 == null || x2 == null || y2 == null) { - return; - } - - b.x1 = x1 < b.x1 ? x1 : b.x1; - b.x2 = x2 > b.x2 ? x2 : b.x2; - b.y1 = y1 < b.y1 ? y1 : b.y1; - b.y2 = y2 > b.y2 ? y2 : b.y2; - b.w = b.x2 - b.x1; - b.h = b.y2 - b.y1; -}; - -var updateBoundsFromBox = function updateBoundsFromBox(b, b2) { - if (b2 == null) { - return b; - } - - return updateBounds(b, b2.x1, b2.y1, b2.x2, b2.y2); -}; - -var prefixedProperty = function prefixedProperty(obj, field, prefix) { - return getPrefixedProperty(obj, field, prefix); -}; - -var updateBoundsFromArrow = function updateBoundsFromArrow(bounds, ele, prefix) { - if (ele.cy().headless()) { - return; - } - - var _p = ele._private; - var rstyle = _p.rstyle; - var halfArW = rstyle.arrowWidth / 2; - var arrowType = ele.pstyle(prefix + '-arrow-shape').value; - var x; - var y; - - if (arrowType !== 'none') { - if (prefix === 'source') { - x = rstyle.srcX; - y = rstyle.srcY; - } else if (prefix === 'target') { - x = rstyle.tgtX; - y = rstyle.tgtY; - } else { - x = rstyle.midX; - y = rstyle.midY; - } // always store the individual arrow bounds - - - var bbs = _p.arrowBounds = _p.arrowBounds || {}; - var bb = bbs[prefix] = bbs[prefix] || {}; - bb.x1 = x - halfArW; - bb.y1 = y - halfArW; - bb.x2 = x + halfArW; - bb.y2 = y + halfArW; - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - expandBoundingBox(bb, 1); - updateBounds(bounds, bb.x1, bb.y1, bb.x2, bb.y2); - } -}; - -var updateBoundsFromLabel = function updateBoundsFromLabel(bounds, ele, prefix) { - if (ele.cy().headless()) { - return; - } - - var prefixDash; - - if (prefix) { - prefixDash = prefix + '-'; - } else { - prefixDash = ''; - } - - var _p = ele._private; - var rstyle = _p.rstyle; - var label = ele.pstyle(prefixDash + 'label').strValue; - - if (label) { - var halign = ele.pstyle('text-halign'); - var valign = ele.pstyle('text-valign'); - var labelWidth = prefixedProperty(rstyle, 'labelWidth', prefix); - var labelHeight = prefixedProperty(rstyle, 'labelHeight', prefix); - var labelX = prefixedProperty(rstyle, 'labelX', prefix); - var labelY = prefixedProperty(rstyle, 'labelY', prefix); - var marginX = ele.pstyle(prefixDash + 'text-margin-x').pfValue; - var marginY = ele.pstyle(prefixDash + 'text-margin-y').pfValue; - var isEdge = ele.isEdge(); - var rotation = ele.pstyle(prefixDash + 'text-rotation'); - var outlineWidth = ele.pstyle('text-outline-width').pfValue; - var borderWidth = ele.pstyle('text-border-width').pfValue; - var halfBorderWidth = borderWidth / 2; - var padding = ele.pstyle('text-background-padding').pfValue; - var marginOfError = 2; // expand to work around browser dimension inaccuracies - - var lh = labelHeight; - var lw = labelWidth; - var lw_2 = lw / 2; - var lh_2 = lh / 2; - var lx1, lx2, ly1, ly2; - - if (isEdge) { - lx1 = labelX - lw_2; - lx2 = labelX + lw_2; - ly1 = labelY - lh_2; - ly2 = labelY + lh_2; - } else { - switch (halign.value) { - case 'left': - lx1 = labelX - lw; - lx2 = labelX; - break; - - case 'center': - lx1 = labelX - lw_2; - lx2 = labelX + lw_2; - break; - - case 'right': - lx1 = labelX; - lx2 = labelX + lw; - break; - } - - switch (valign.value) { - case 'top': - ly1 = labelY - lh; - ly2 = labelY; - break; - - case 'center': - ly1 = labelY - lh_2; - ly2 = labelY + lh_2; - break; - - case 'bottom': - ly1 = labelY; - ly2 = labelY + lh; - break; - } - } // shift by margin and expand by outline and border - - - lx1 += marginX - Math.max(outlineWidth, halfBorderWidth) - padding - marginOfError; - lx2 += marginX + Math.max(outlineWidth, halfBorderWidth) + padding + marginOfError; - ly1 += marginY - Math.max(outlineWidth, halfBorderWidth) - padding - marginOfError; - ly2 += marginY + Math.max(outlineWidth, halfBorderWidth) + padding + marginOfError; // always store the unrotated label bounds separately - - var bbPrefix = prefix || 'main'; - var bbs = _p.labelBounds; - var bb = bbs[bbPrefix] = bbs[bbPrefix] || {}; - bb.x1 = lx1; - bb.y1 = ly1; - bb.x2 = lx2; - bb.y2 = ly2; - bb.w = lx2 - lx1; - bb.h = ly2 - ly1; - var isAutorotate = isEdge && rotation.strValue === 'autorotate'; - var isPfValue = rotation.pfValue != null && rotation.pfValue !== 0; - - if (isAutorotate || isPfValue) { - var theta = isAutorotate ? prefixedProperty(_p.rstyle, 'labelAngle', prefix) : rotation.pfValue; - var cos = Math.cos(theta); - var sin = Math.sin(theta); // rotation point (default value for center-center) - - var xo = (lx1 + lx2) / 2; - var yo = (ly1 + ly2) / 2; - - if (!isEdge) { - switch (halign.value) { - case 'left': - xo = lx2; - break; - - case 'right': - xo = lx1; - break; - } - - switch (valign.value) { - case 'top': - yo = ly2; - break; - - case 'bottom': - yo = ly1; - break; - } - } - - var rotate = function rotate(x, y) { - x = x - xo; - y = y - yo; - return { - x: x * cos - y * sin + xo, - y: x * sin + y * cos + yo - }; - }; - - var px1y1 = rotate(lx1, ly1); - var px1y2 = rotate(lx1, ly2); - var px2y1 = rotate(lx2, ly1); - var px2y2 = rotate(lx2, ly2); - lx1 = Math.min(px1y1.x, px1y2.x, px2y1.x, px2y2.x); - lx2 = Math.max(px1y1.x, px1y2.x, px2y1.x, px2y2.x); - ly1 = Math.min(px1y1.y, px1y2.y, px2y1.y, px2y2.y); - ly2 = Math.max(px1y1.y, px1y2.y, px2y1.y, px2y2.y); - } - - var bbPrefixRot = bbPrefix + 'Rot'; - var bbRot = bbs[bbPrefixRot] = bbs[bbPrefixRot] || {}; - bbRot.x1 = lx1; - bbRot.y1 = ly1; - bbRot.x2 = lx2; - bbRot.y2 = ly2; - bbRot.w = lx2 - lx1; - bbRot.h = ly2 - ly1; - updateBounds(bounds, lx1, ly1, lx2, ly2); - updateBounds(_p.labelBounds.all, lx1, ly1, lx2, ly2); - } - - return bounds; -}; // get the bounding box of the elements (in raw model position) - - -var boundingBoxImpl = function boundingBoxImpl(ele, options) { - var cy = ele._private.cy; - var styleEnabled = cy.styleEnabled(); - var headless = cy.headless(); - var bounds = makeBoundingBox(); - var _p = ele._private; - var isNode = ele.isNode(); - var isEdge = ele.isEdge(); - var ex1, ex2, ey1, ey2; // extrema of body / lines - - var x, y; // node pos - - var rstyle = _p.rstyle; - var manualExpansion = isNode && styleEnabled ? ele.pstyle('bounds-expansion').pfValue : [0]; // must use `display` prop only, as reading `compound.width()` causes recursion - // (other factors like width values will be considered later in this function anyway) - - var isDisplayed = function isDisplayed(ele) { - return ele.pstyle('display').value !== 'none'; - }; - - var displayed = !styleEnabled || isDisplayed(ele) // must take into account connected nodes b/c of implicit edge hiding on display:none node - && (!isEdge || isDisplayed(ele.source()) && isDisplayed(ele.target())); - - if (displayed) { - // displayed suffices, since we will find zero area eles anyway - var overlayOpacity = 0; - var overlayPadding = 0; - - if (styleEnabled && options.includeOverlays) { - overlayOpacity = ele.pstyle('overlay-opacity').value; - - if (overlayOpacity !== 0) { - overlayPadding = ele.pstyle('overlay-padding').value; - } - } - - var w = 0; - var wHalf = 0; - - if (styleEnabled) { - w = ele.pstyle('width').pfValue; - wHalf = w / 2; - } - - if (isNode && options.includeNodes) { - var pos = ele.position(); - x = pos.x; - y = pos.y; - - var _w = ele.outerWidth(); - - var halfW = _w / 2; - var h = ele.outerHeight(); - var halfH = h / 2; // handle node dimensions - ///////////////////////// - - ex1 = x - halfW; - ex2 = x + halfW; - ey1 = y - halfH; - ey2 = y + halfH; - updateBounds(bounds, ex1, ey1, ex2, ey2); - } else if (isEdge && options.includeEdges) { - if (styleEnabled && !headless) { - var curveStyle = ele.pstyle('curve-style').strValue; // handle edge dimensions (rough box estimate) - ////////////////////////////////////////////// - - ex1 = Math.min(rstyle.srcX, rstyle.midX, rstyle.tgtX); - ex2 = Math.max(rstyle.srcX, rstyle.midX, rstyle.tgtX); - ey1 = Math.min(rstyle.srcY, rstyle.midY, rstyle.tgtY); - ey2 = Math.max(rstyle.srcY, rstyle.midY, rstyle.tgtY); // take into account edge width - - ex1 -= wHalf; - ex2 += wHalf; - ey1 -= wHalf; - ey2 += wHalf; - updateBounds(bounds, ex1, ey1, ex2, ey2); // precise edges - //////////////// - - if (curveStyle === 'haystack') { - var hpts = rstyle.haystackPts; - - if (hpts && hpts.length === 2) { - ex1 = hpts[0].x; - ey1 = hpts[0].y; - ex2 = hpts[1].x; - ey2 = hpts[1].y; - - if (ex1 > ex2) { - var temp = ex1; - ex1 = ex2; - ex2 = temp; - } - - if (ey1 > ey2) { - var _temp = ey1; - ey1 = ey2; - ey2 = _temp; - } - - updateBounds(bounds, ex1 - wHalf, ey1 - wHalf, ex2 + wHalf, ey2 + wHalf); - } - } else if (curveStyle === 'bezier' || curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'taxi') { - var pts; - - switch (curveStyle) { - case 'bezier': - case 'unbundled-bezier': - pts = rstyle.bezierPts; - break; - - case 'segments': - case 'taxi': - pts = rstyle.linePts; - break; - } - - if (pts != null) { - for (var j = 0; j < pts.length; j++) { - var pt = pts[j]; - ex1 = pt.x - wHalf; - ex2 = pt.x + wHalf; - ey1 = pt.y - wHalf; - ey2 = pt.y + wHalf; - updateBounds(bounds, ex1, ey1, ex2, ey2); - } - } - } // bezier-like or segment-like edge - - } else { - // headless or style disabled - // fallback on source and target positions - ////////////////////////////////////////// - var n1 = ele.source(); - var n1pos = n1.position(); - var n2 = ele.target(); - var n2pos = n2.position(); - ex1 = n1pos.x; - ex2 = n2pos.x; - ey1 = n1pos.y; - ey2 = n2pos.y; - - if (ex1 > ex2) { - var _temp2 = ex1; - ex1 = ex2; - ex2 = _temp2; - } - - if (ey1 > ey2) { - var _temp3 = ey1; - ey1 = ey2; - ey2 = _temp3; - } // take into account edge width - - - ex1 -= wHalf; - ex2 += wHalf; - ey1 -= wHalf; - ey2 += wHalf; - updateBounds(bounds, ex1, ey1, ex2, ey2); - } // headless or style disabled - - } // edges - // handle edge arrow size - ///////////////////////// - - - if (styleEnabled && options.includeEdges && isEdge) { - updateBoundsFromArrow(bounds, ele, 'mid-source'); - updateBoundsFromArrow(bounds, ele, 'mid-target'); - updateBoundsFromArrow(bounds, ele, 'source'); - updateBoundsFromArrow(bounds, ele, 'target'); - } // ghost - //////// - - - if (styleEnabled) { - var ghost = ele.pstyle('ghost').value === 'yes'; - - if (ghost) { - var gx = ele.pstyle('ghost-offset-x').pfValue; - var gy = ele.pstyle('ghost-offset-y').pfValue; - updateBounds(bounds, bounds.x1 + gx, bounds.y1 + gy, bounds.x2 + gx, bounds.y2 + gy); - } - } // always store the body bounds separately from the labels - - - var bbBody = _p.bodyBounds = _p.bodyBounds || {}; - assignBoundingBox(bbBody, bounds); - expandBoundingBoxSides(bbBody, manualExpansion); - expandBoundingBox(bbBody, 1); // expand to work around browser dimension inaccuracies - // overlay - ////////// - - if (styleEnabled) { - ex1 = bounds.x1; - ex2 = bounds.x2; - ey1 = bounds.y1; - ey2 = bounds.y2; - updateBounds(bounds, ex1 - overlayPadding, ey1 - overlayPadding, ex2 + overlayPadding, ey2 + overlayPadding); - } // always store the body bounds separately from the labels - - - var bbOverlay = _p.overlayBounds = _p.overlayBounds || {}; - assignBoundingBox(bbOverlay, bounds); - expandBoundingBoxSides(bbOverlay, manualExpansion); - expandBoundingBox(bbOverlay, 1); // expand to work around browser dimension inaccuracies - // handle label dimensions - ////////////////////////// - - var bbLabels = _p.labelBounds = _p.labelBounds || {}; - - if (bbLabels.all != null) { - clearBoundingBox(bbLabels.all); - } else { - bbLabels.all = makeBoundingBox(); - } - - if (styleEnabled && options.includeLabels) { - if (options.includeMainLabels) { - updateBoundsFromLabel(bounds, ele, null); - } - - if (isEdge) { - if (options.includeSourceLabels) { - updateBoundsFromLabel(bounds, ele, 'source'); - } - - if (options.includeTargetLabels) { - updateBoundsFromLabel(bounds, ele, 'target'); - } - } - } // style enabled for labels - - } // if displayed - - - bounds.x1 = noninf(bounds.x1); - bounds.y1 = noninf(bounds.y1); - bounds.x2 = noninf(bounds.x2); - bounds.y2 = noninf(bounds.y2); - bounds.w = noninf(bounds.x2 - bounds.x1); - bounds.h = noninf(bounds.y2 - bounds.y1); - - if (bounds.w > 0 && bounds.h > 0 && displayed) { - expandBoundingBoxSides(bounds, manualExpansion); // expand bounds by 1 because antialiasing can increase the visual/effective size by 1 on all sides - - expandBoundingBox(bounds, 1); - } - - return bounds; -}; - -var getKey = function getKey(opts) { - var i = 0; - - var tf = function tf(val) { - return (val ? 1 : 0) << i++; - }; - - var key = 0; - key += tf(opts.incudeNodes); - key += tf(opts.includeEdges); - key += tf(opts.includeLabels); - key += tf(opts.includeMainLabels); - key += tf(opts.includeSourceLabels); - key += tf(opts.includeTargetLabels); - key += tf(opts.includeOverlays); - return key; -}; - -var getBoundingBoxPosKey = function getBoundingBoxPosKey(ele) { - if (ele.isEdge()) { - var p1 = ele.source().position(); - var p2 = ele.target().position(); - - var r = function r(x) { - return Math.round(x); - }; - - return hashIntsArray([r(p1.x), r(p1.y), r(p2.x), r(p2.y)]); - } else { - return 0; - } -}; - -var cachedBoundingBoxImpl = function cachedBoundingBoxImpl(ele, opts) { - var _p = ele._private; - var bb; - var isEdge = ele.isEdge(); - var key = opts == null ? defBbOptsKey : getKey(opts); - var usingDefOpts = key === defBbOptsKey; - var currPosKey = getBoundingBoxPosKey(ele); - var isPosKeySame = _p.bbCachePosKey === currPosKey; - var useCache = opts.useCache && isPosKeySame; - - var isDirty = function isDirty(ele) { - return ele._private.bbCache == null || ele._private.styleDirty; - }; - - var needRecalc = !useCache || isDirty(ele) || isEdge && isDirty(ele.source()) || isDirty(ele.target()); - - if (needRecalc) { - if (!isPosKeySame) { - ele.recalculateRenderedStyle(useCache); - } - - bb = boundingBoxImpl(ele, defBbOpts); - _p.bbCache = bb; - _p.bbCachePosKey = currPosKey; - } else { - bb = _p.bbCache; - } // not using def opts => need to build up bb from combination of sub bbs - - - if (!usingDefOpts) { - var isNode = ele.isNode(); - bb = makeBoundingBox(); - - if (opts.includeNodes && isNode || opts.includeEdges && !isNode) { - if (opts.includeOverlays) { - updateBoundsFromBox(bb, _p.overlayBounds); - } else { - updateBoundsFromBox(bb, _p.bodyBounds); - } - } - - if (opts.includeLabels) { - if (opts.includeMainLabels && (!isEdge || opts.includeSourceLabels && opts.includeTargetLabels)) { - updateBoundsFromBox(bb, _p.labelBounds.all); - } else { - if (opts.includeMainLabels) { - updateBoundsFromBox(bb, _p.labelBounds.mainRot); - } - - if (opts.includeSourceLabels) { - updateBoundsFromBox(bb, _p.labelBounds.sourceRot); - } - - if (opts.includeTargetLabels) { - updateBoundsFromBox(bb, _p.labelBounds.targetRot); - } - } - } - - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - } - - return bb; -}; - -var defBbOpts = { - includeNodes: true, - includeEdges: true, - includeLabels: true, - includeMainLabels: true, - includeSourceLabels: true, - includeTargetLabels: true, - includeOverlays: true, - useCache: true -}; -var defBbOptsKey = getKey(defBbOpts); -var filledBbOpts = defaults$1(defBbOpts); - -elesfn$k.boundingBox = function (options) { - var bounds; // the main usecase is ele.boundingBox() for a single element with no/def options - // specified s.t. the cache is used, so check for this case to make it faster by - // avoiding the overhead of the rest of the function - - if (this.length === 1 && this[0]._private.bbCache != null && !this[0]._private.styleDirty && (options === undefined || options.useCache === undefined || options.useCache === true)) { - if (options === undefined) { - options = defBbOpts; - } else { - options = filledBbOpts(options); - } - - bounds = cachedBoundingBoxImpl(this[0], options); - } else { - bounds = makeBoundingBox(); - options = options || defBbOpts; - var opts = filledBbOpts(options); - var eles = this; - var cy = eles.cy(); - var styleEnabled = cy.styleEnabled(); - - if (styleEnabled) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var _p = ele._private; - var currPosKey = getBoundingBoxPosKey(ele); - var isPosKeySame = _p.bbCachePosKey === currPosKey; - var useCache = opts.useCache && isPosKeySame && !_p.styleDirty; - ele.recalculateRenderedStyle(useCache); - } - } - - this.updateCompoundBounds(!options.useCache); - - for (var _i = 0; _i < eles.length; _i++) { - var _ele = eles[_i]; - updateBoundsFromBox(bounds, cachedBoundingBoxImpl(_ele, opts)); - } - } - - bounds.x1 = noninf(bounds.x1); - bounds.y1 = noninf(bounds.y1); - bounds.x2 = noninf(bounds.x2); - bounds.y2 = noninf(bounds.y2); - bounds.w = noninf(bounds.x2 - bounds.x1); - bounds.h = noninf(bounds.y2 - bounds.y1); - return bounds; -}; - -elesfn$k.dirtyBoundingBoxCache = function () { - for (var i = 0; i < this.length; i++) { - var _p = this[i]._private; - _p.bbCache = null; - _p.bbCachePosKey = null; - _p.bodyBounds = null; - _p.overlayBounds = null; - _p.labelBounds.all = null; - _p.labelBounds.source = null; - _p.labelBounds.target = null; - _p.labelBounds.main = null; - _p.labelBounds.sourceRot = null; - _p.labelBounds.targetRot = null; - _p.labelBounds.mainRot = null; - _p.arrowBounds.source = null; - _p.arrowBounds.target = null; - _p.arrowBounds['mid-source'] = null; - _p.arrowBounds['mid-target'] = null; - } - - this.emitAndNotify('bounds'); - return this; -}; // private helper to get bounding box for custom node positions -// - good for perf in certain cases but currently requires dirtying the rendered style -// - would be better to not modify the nodes but the nodes are read directly everywhere in the renderer... -// - try to use for only things like discrete layouts where the node position would change anyway - - -elesfn$k.boundingBoxAt = function (fn) { - var nodes = this.nodes(); - var cy = this.cy(); - var hasCompoundNodes = cy.hasCompoundNodes(); - var parents = cy.collection(); - - if (hasCompoundNodes) { - parents = nodes.filter(function (node) { - return node.isParent(); - }); - nodes = nodes.not(parents); - } - - if (plainObject(fn)) { - var obj = fn; - - fn = function fn() { - return obj; - }; - } - - var storeOldPos = function storeOldPos(node, i) { - return node._private.bbAtOldPos = fn(node, i); - }; - - var getOldPos = function getOldPos(node) { - return node._private.bbAtOldPos; - }; - - cy.startBatch(); - nodes.forEach(storeOldPos).silentPositions(fn); - - if (hasCompoundNodes) { - parents.dirtyCompoundBoundsCache(); - parents.dirtyBoundingBoxCache(); - parents.updateCompoundBounds(true); // force update b/c we're inside a batch cycle - } - - var bb = copyBoundingBox(this.boundingBox({ - useCache: false - })); - nodes.silentPositions(getOldPos); - - if (hasCompoundNodes) { - parents.dirtyCompoundBoundsCache(); - parents.dirtyBoundingBoxCache(); - parents.updateCompoundBounds(true); // force update b/c we're inside a batch cycle - } - - cy.endBatch(); - return bb; -}; - -fn$3.boundingbox = fn$3.bb = fn$3.boundingBox; -fn$3.renderedBoundingbox = fn$3.renderedBoundingBox; -var bounds = elesfn$k; - -var fn$4, elesfn$l; -fn$4 = elesfn$l = {}; - -var defineDimFns = function defineDimFns(opts) { - opts.uppercaseName = capitalize(opts.name); - opts.autoName = 'auto' + opts.uppercaseName; - opts.labelName = 'label' + opts.uppercaseName; - opts.outerName = 'outer' + opts.uppercaseName; - opts.uppercaseOuterName = capitalize(opts.outerName); - - fn$4[opts.name] = function dimImpl() { - var ele = this[0]; - var _p = ele._private; - var cy = _p.cy; - var styleEnabled = cy._private.styleEnabled; - - if (ele) { - if (styleEnabled) { - if (ele.isParent()) { - ele.updateCompoundBounds(); - return _p[opts.autoName] || 0; - } - - var d = ele.pstyle(opts.name); - - switch (d.strValue) { - case 'label': - ele.recalculateRenderedStyle(); - return _p.rstyle[opts.labelName] || 0; - - default: - return d.pfValue; - } - } else { - return 1; - } - } - }; - - fn$4['outer' + opts.uppercaseName] = function outerDimImpl() { - var ele = this[0]; - var _p = ele._private; - var cy = _p.cy; - var styleEnabled = cy._private.styleEnabled; - - if (ele) { - if (styleEnabled) { - var dim = ele[opts.name](); - var border = ele.pstyle('border-width').pfValue; // n.b. 1/2 each side - - var padding = 2 * ele.padding(); - return dim + border + padding; - } else { - return 1; - } - } - }; - - fn$4['rendered' + opts.uppercaseName] = function renderedDimImpl() { - var ele = this[0]; - - if (ele) { - var d = ele[opts.name](); - return d * this.cy().zoom(); - } - }; - - fn$4['rendered' + opts.uppercaseOuterName] = function renderedOuterDimImpl() { - var ele = this[0]; - - if (ele) { - var od = ele[opts.outerName](); - return od * this.cy().zoom(); - } - }; -}; - -defineDimFns({ - name: 'width' -}); -defineDimFns({ - name: 'height' -}); - -elesfn$l.padding = function () { - var ele = this[0]; - var _p = ele._private; - - if (ele.isParent()) { - ele.updateCompoundBounds(); - - if (_p.autoPadding !== undefined) { - return _p.autoPadding; - } else { - return ele.pstyle('padding').pfValue; - } - } else { - return ele.pstyle('padding').pfValue; - } -}; - -elesfn$l.paddedHeight = function () { - var ele = this[0]; - return ele.height() + 2 * ele.padding(); -}; - -elesfn$l.paddedWidth = function () { - var ele = this[0]; - return ele.width() + 2 * ele.padding(); -}; - -var widthHeight = elesfn$l; - -var ifEdge = function ifEdge(ele, getValue) { - if (ele.isEdge()) { - return getValue(ele); - } -}; - -var ifEdgeRenderedPosition = function ifEdgeRenderedPosition(ele, getPoint) { - if (ele.isEdge()) { - var cy = ele.cy(); - return modelToRenderedPosition(getPoint(ele), cy.zoom(), cy.pan()); - } -}; - -var ifEdgeRenderedPositions = function ifEdgeRenderedPositions(ele, getPoints) { - if (ele.isEdge()) { - var cy = ele.cy(); - var pan = cy.pan(); - var zoom = cy.zoom(); - return getPoints(ele).map(function (p) { - return modelToRenderedPosition(p, zoom, pan); - }); - } -}; - -var controlPoints = function controlPoints(ele) { - return ele.renderer().getControlPoints(ele); -}; - -var segmentPoints = function segmentPoints(ele) { - return ele.renderer().getSegmentPoints(ele); -}; - -var sourceEndpoint = function sourceEndpoint(ele) { - return ele.renderer().getSourceEndpoint(ele); -}; - -var targetEndpoint = function targetEndpoint(ele) { - return ele.renderer().getTargetEndpoint(ele); -}; - -var midpoint = function midpoint(ele) { - return ele.renderer().getEdgeMidpoint(ele); -}; - -var pts = { - controlPoints: { - get: controlPoints, - mult: true - }, - segmentPoints: { - get: segmentPoints, - mult: true - }, - sourceEndpoint: { - get: sourceEndpoint - }, - targetEndpoint: { - get: targetEndpoint - }, - midpoint: { - get: midpoint - } -}; - -var renderedName = function renderedName(name) { - return 'rendered' + name[0].toUpperCase() + name.substr(1); -}; - -var edgePoints = Object.keys(pts).reduce(function (obj, name) { - var spec = pts[name]; - var rName = renderedName(name); - - obj[name] = function () { - return ifEdge(this, spec.get); - }; - - if (spec.mult) { - obj[rName] = function () { - return ifEdgeRenderedPositions(this, spec.get); - }; - } else { - obj[rName] = function () { - return ifEdgeRenderedPosition(this, spec.get); - }; - } - - return obj; -}, {}); - -var dimensions = extend({}, position$1, bounds, widthHeight, edgePoints); - -/*! -Event object based on jQuery events, MIT license - -https://jquery.org/license/ -https://tldrlegal.com/license/mit-license -https://github.com/jquery/jquery/blob/master/src/event.js -*/ -var Event$1 = function Event(src, props) { - this.recycle(src, props); -}; - -function returnFalse() { - return false; -} - -function returnTrue() { - return true; -} // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html - - -Event$1.prototype = { - instanceString: function instanceString() { - return 'event'; - }, - recycle: function recycle(src, props) { - this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = returnFalse; - - if (src != null && src.preventDefault) { - // Browser Event object - this.type = src.type; // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - - this.isDefaultPrevented = src.defaultPrevented ? returnTrue : returnFalse; - } else if (src != null && src.type) { - // Plain object containing all event details - props = src; - } else { - // Event string - this.type = src; - } // Put explicitly provided properties onto the event object - - - if (props != null) { - // more efficient to manually copy fields we use - this.originalEvent = props.originalEvent; - this.type = props.type != null ? props.type : this.type; - this.cy = props.cy; - this.target = props.target; - this.position = props.position; - this.renderedPosition = props.renderedPosition; - this.namespace = props.namespace; - this.layout = props.layout; - } - - if (this.cy != null && this.position != null && this.renderedPosition == null) { - // create a rendered position based on the passed position - var pos = this.position; - var zoom = this.cy.zoom(); - var pan = this.cy.pan(); - this.renderedPosition = { - x: pos.x * zoom + pan.x, - y: pos.y * zoom + pan.y - }; - } // Create a timestamp if incoming event doesn't have one - - - this.timeStamp = src && src.timeStamp || Date.now(); - }, - preventDefault: function preventDefault() { - this.isDefaultPrevented = returnTrue; - var e = this.originalEvent; - - if (!e) { - return; - } // if preventDefault exists run it on the original event - - - if (e.preventDefault) { - e.preventDefault(); - } - }, - stopPropagation: function stopPropagation() { - this.isPropagationStopped = returnTrue; - var e = this.originalEvent; - - if (!e) { - return; - } // if stopPropagation exists run it on the original event - - - if (e.stopPropagation) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function stopImmediatePropagation() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse -}; - -var eventRegex = /^([^.]+)(\.(?:[^.]+))?$/; // regex for matching event strings (e.g. "click.namespace") - -var universalNamespace = '.*'; // matches as if no namespace specified and prevents users from unbinding accidentally - -var defaults$8 = { - qualifierCompare: function qualifierCompare(q1, q2) { - return q1 === q2; - }, - eventMatches: function eventMatches() - /*context, listener, eventObj*/ - { - return true; - }, - addEventFields: function addEventFields() - /*context, evt*/ - {}, - callbackContext: function callbackContext(context - /*, listener, eventObj*/ - ) { - return context; - }, - beforeEmit: function beforeEmit() - /* context, listener, eventObj */ - {}, - afterEmit: function afterEmit() - /* context, listener, eventObj */ - {}, - bubble: function bubble() - /*context*/ - { - return false; - }, - parent: function parent() - /*context*/ - { - return null; - }, - context: null -}; -var defaultsKeys = Object.keys(defaults$8); -var emptyOpts = {}; - -function Emitter() { - var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : emptyOpts; - var context = arguments.length > 1 ? arguments[1] : undefined; - - // micro-optimisation vs Object.assign() -- reduces Element instantiation time - for (var i = 0; i < defaultsKeys.length; i++) { - var key = defaultsKeys[i]; - this[key] = opts[key] || defaults$8[key]; - } - - this.context = context || this.context; - this.listeners = []; - this.emitting = 0; -} - -var p = Emitter.prototype; - -var forEachEvent = function forEachEvent(self, handler, events, qualifier, callback, conf, confOverrides) { - if (fn(qualifier)) { - callback = qualifier; - qualifier = null; - } - - if (confOverrides) { - if (conf == null) { - conf = confOverrides; - } else { - conf = extend({}, conf, confOverrides); - } - } - - var eventList = array(events) ? events : events.split(/\s+/); - - for (var i = 0; i < eventList.length; i++) { - var evt = eventList[i]; - - if (emptyString(evt)) { - continue; - } - - var match = evt.match(eventRegex); // type[.namespace] - - if (match) { - var type = match[1]; - var namespace = match[2] ? match[2] : null; - var ret = handler(self, evt, type, namespace, qualifier, callback, conf); - - if (ret === false) { - break; - } // allow exiting early - - } - } -}; - -var makeEventObj = function makeEventObj(self, obj) { - self.addEventFields(self.context, obj); - return new Event$1(obj.type, obj); -}; - -var forEachEventObj = function forEachEventObj(self, handler, events) { - if (event(events)) { - handler(self, events); - return; - } else if (plainObject(events)) { - handler(self, makeEventObj(self, events)); - return; - } - - var eventList = array(events) ? events : events.split(/\s+/); - - for (var i = 0; i < eventList.length; i++) { - var evt = eventList[i]; - - if (emptyString(evt)) { - continue; - } - - var match = evt.match(eventRegex); // type[.namespace] - - if (match) { - var type = match[1]; - var namespace = match[2] ? match[2] : null; - var eventObj = makeEventObj(self, { - type: type, - namespace: namespace, - target: self.context - }); - handler(self, eventObj); - } - } -}; - -p.on = p.addListener = function (events, qualifier, callback, conf, confOverrides) { - forEachEvent(this, function (self, event, type, namespace, qualifier, callback, conf) { - if (fn(callback)) { - self.listeners.push({ - event: event, - // full event string - callback: callback, - // callback to run - type: type, - // the event type (e.g. 'click') - namespace: namespace, - // the event namespace (e.g. ".foo") - qualifier: qualifier, - // a restriction on whether to match this emitter - conf: conf // additional configuration - - }); - } - }, events, qualifier, callback, conf, confOverrides); - return this; -}; - -p.one = function (events, qualifier, callback, conf) { - return this.on(events, qualifier, callback, conf, { - one: true - }); -}; - -p.removeListener = p.off = function (events, qualifier, callback, conf) { - var _this = this; - - if (this.emitting !== 0) { - this.listeners = copyArray$1(this.listeners); - } - - var listeners = this.listeners; - - var _loop = function _loop(i) { - var listener = listeners[i]; - forEachEvent(_this, function (self, event, type, namespace, qualifier, callback - /*, conf*/ - ) { - if ((listener.type === type || events === '*') && (!namespace && listener.namespace !== '.*' || listener.namespace === namespace) && (!qualifier || self.qualifierCompare(listener.qualifier, qualifier)) && (!callback || listener.callback === callback)) { - listeners.splice(i, 1); - return false; - } - }, events, qualifier, callback, conf); - }; - - for (var i = listeners.length - 1; i >= 0; i--) { - _loop(i); - } - - return this; -}; - -p.removeAllListeners = function () { - return this.removeListener('*'); -}; - -p.emit = p.trigger = function (events, extraParams, manualCallback) { - var listeners = this.listeners; - var numListenersBeforeEmit = listeners.length; - this.emitting++; - - if (!array(extraParams)) { - extraParams = [extraParams]; - } - - forEachEventObj(this, function (self, eventObj) { - if (manualCallback != null) { - listeners = [{ - event: eventObj.event, - type: eventObj.type, - namespace: eventObj.namespace, - callback: manualCallback - }]; - numListenersBeforeEmit = listeners.length; - } - - var _loop2 = function _loop2(i) { - var listener = listeners[i]; - - if (listener.type === eventObj.type && (!listener.namespace || listener.namespace === eventObj.namespace || listener.namespace === universalNamespace) && self.eventMatches(self.context, listener, eventObj)) { - var args = [eventObj]; - - if (extraParams != null) { - push(args, extraParams); - } - - self.beforeEmit(self.context, listener, eventObj); - - if (listener.conf && listener.conf.one) { - self.listeners = self.listeners.filter(function (l) { - return l !== listener; - }); - } - - var context = self.callbackContext(self.context, listener, eventObj); - var ret = listener.callback.apply(context, args); - self.afterEmit(self.context, listener, eventObj); - - if (ret === false) { - eventObj.stopPropagation(); - eventObj.preventDefault(); - } - } // if listener matches - - }; - - for (var i = 0; i < numListenersBeforeEmit; i++) { - _loop2(i); - } // for listener - - - if (self.bubble(self.context) && !eventObj.isPropagationStopped()) { - self.parent(self.context).emit(eventObj, extraParams); - } - }, events); - this.emitting--; - return this; -}; - -var emitterOptions = { - qualifierCompare: function qualifierCompare(selector1, selector2) { - if (selector1 == null || selector2 == null) { - return selector1 == null && selector2 == null; - } else { - return selector1.sameText(selector2); - } - }, - eventMatches: function eventMatches(ele, listener, eventObj) { - var selector = listener.qualifier; - - if (selector != null) { - return ele !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target); - } - - return true; - }, - addEventFields: function addEventFields(ele, evt) { - evt.cy = ele.cy(); - evt.target = ele; - }, - callbackContext: function callbackContext(ele, listener, eventObj) { - return listener.qualifier != null ? eventObj.target : ele; - }, - beforeEmit: function beforeEmit(context, listener - /*, eventObj*/ - ) { - if (listener.conf && listener.conf.once) { - listener.conf.onceCollection.removeListener(listener.event, listener.qualifier, listener.callback); - } - }, - bubble: function bubble() { - return true; - }, - parent: function parent(ele) { - return ele.isChild() ? ele.parent() : ele.cy(); - } -}; - -var argSelector = function argSelector(arg) { - if (string(arg)) { - return new Selector(arg); - } else { - return arg; - } -}; - -var elesfn$m = { - createEmitter: function createEmitter() { - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var _p = ele._private; - - if (!_p.emitter) { - _p.emitter = new Emitter(emitterOptions, ele); - } - } - - return this; - }, - emitter: function emitter() { - return this._private.emitter; - }, - on: function on(events, selector, callback) { - var argSel = argSelector(selector); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - ele.emitter().on(events, argSel, callback); - } - - return this; - }, - removeListener: function removeListener(events, selector, callback) { - var argSel = argSelector(selector); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - ele.emitter().removeListener(events, argSel, callback); - } - - return this; - }, - removeAllListeners: function removeAllListeners() { - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - ele.emitter().removeAllListeners(); - } - - return this; - }, - one: function one(events, selector, callback) { - var argSel = argSelector(selector); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - ele.emitter().one(events, argSel, callback); - } - - return this; - }, - once: function once(events, selector, callback) { - var argSel = argSelector(selector); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - ele.emitter().on(events, argSel, callback, { - once: true, - onceCollection: this - }); - } - }, - emit: function emit(events, extraParams) { - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - ele.emitter().emit(events, extraParams); - } - - return this; - }, - emitAndNotify: function emitAndNotify(event, extraParams) { - // for internal use only - if (this.length === 0) { - return; - } // empty collections don't need to notify anything - // notify renderer - - - this.cy().notify(event, this); - this.emit(event, extraParams); - return this; - } -}; -define$3.eventAliasesOn(elesfn$m); - -var elesfn$n = { - nodes: function nodes(selector) { - return this.filter(function (ele) { - return ele.isNode(); - }).filter(selector); - }, - edges: function edges(selector) { - return this.filter(function (ele) { - return ele.isEdge(); - }).filter(selector); - }, - // internal helper to get nodes and edges as separate collections with single iteration over elements - byGroup: function byGroup() { - var nodes = this.spawn(); - var edges = this.spawn(); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - - if (ele.isNode()) { - nodes.push(ele); - } else { - edges.push(ele); - } - } - - return { - nodes: nodes, - edges: edges - }; - }, - filter: function filter(_filter, thisArg) { - if (_filter === undefined) { - // check this first b/c it's the most common/performant case - return this; - } else if (string(_filter) || elementOrCollection(_filter)) { - return new Selector(_filter).filter(this); - } else if (fn(_filter)) { - var filterEles = this.spawn(); - var eles = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var include = thisArg ? _filter.apply(thisArg, [ele, i, eles]) : _filter(ele, i, eles); - - if (include) { - filterEles.push(ele); - } - } - - return filterEles; - } - - return this.spawn(); // if not handled by above, give 'em an empty collection - }, - not: function not(toRemove) { - if (!toRemove) { - return this; - } else { - if (string(toRemove)) { - toRemove = this.filter(toRemove); - } - - var elements = this.spawn(); - - for (var i = 0; i < this.length; i++) { - var element = this[i]; - var remove = toRemove.has(element); - - if (!remove) { - elements.push(element); - } - } - - return elements; - } - }, - absoluteComplement: function absoluteComplement() { - var cy = this.cy(); - return cy.mutableElements().not(this); - }, - intersect: function intersect(other) { - // if a selector is specified, then filter by it instead - if (string(other)) { - var selector = other; - return this.filter(selector); - } - - var elements = this.spawn(); - var col1 = this; - var col2 = other; - var col1Smaller = this.length < other.length; - var colS = col1Smaller ? col1 : col2; - var colL = col1Smaller ? col2 : col1; - - for (var i = 0; i < colS.length; i++) { - var ele = colS[i]; - - if (colL.has(ele)) { - elements.push(ele); - } - } - - return elements; - }, - xor: function xor(other) { - var cy = this._private.cy; - - if (string(other)) { - other = cy.$(other); - } - - var elements = this.spawn(); - var col1 = this; - var col2 = other; - - var add = function add(col, other) { - for (var i = 0; i < col.length; i++) { - var ele = col[i]; - var id = ele._private.data.id; - var inOther = other.hasElementWithId(id); - - if (!inOther) { - elements.push(ele); - } - } - }; - - add(col1, col2); - add(col2, col1); - return elements; - }, - diff: function diff(other) { - var cy = this._private.cy; - - if (string(other)) { - other = cy.$(other); - } - - var left = this.spawn(); - var right = this.spawn(); - var both = this.spawn(); - var col1 = this; - var col2 = other; - - var add = function add(col, other, retEles) { - for (var i = 0; i < col.length; i++) { - var ele = col[i]; - var id = ele._private.data.id; - var inOther = other.hasElementWithId(id); - - if (inOther) { - both.merge(ele); - } else { - retEles.push(ele); - } - } - }; - - add(col1, col2, left); - add(col2, col1, right); - return { - left: left, - right: right, - both: both - }; - }, - add: function add(toAdd) { - var cy = this._private.cy; - - if (!toAdd) { - return this; - } - - if (string(toAdd)) { - var selector = toAdd; - toAdd = cy.mutableElements().filter(selector); - } - - var elements = this.spawnSelf(); - - for (var i = 0; i < toAdd.length; i++) { - var ele = toAdd[i]; - var add = !this.has(ele); - - if (add) { - elements.push(ele); - } - } - - return elements; - }, - // in place merge on calling collection - merge: function merge(toAdd) { - var _p = this._private; - var cy = _p.cy; - - if (!toAdd) { - return this; - } - - if (toAdd && string(toAdd)) { - var selector = toAdd; - toAdd = cy.mutableElements().filter(selector); - } - - var map = _p.map; - - for (var i = 0; i < toAdd.length; i++) { - var toAddEle = toAdd[i]; - var id = toAddEle._private.data.id; - var add = !map.has(id); - - if (add) { - var index = this.length++; - this[index] = toAddEle; - map.set(id, { - ele: toAddEle, - index: index - }); - } - } - - return this; // chaining - }, - unmergeAt: function unmergeAt(i) { - var ele = this[i]; - var id = ele.id(); - var _p = this._private; - var map = _p.map; // remove ele - - this[i] = undefined; - map["delete"](id); - var unmergedLastEle = i === this.length - 1; // replace empty spot with last ele in collection - - if (this.length > 1 && !unmergedLastEle) { - var lastEleI = this.length - 1; - var lastEle = this[lastEleI]; - var lastEleId = lastEle._private.data.id; - this[lastEleI] = undefined; - this[i] = lastEle; - map.set(lastEleId, { - ele: lastEle, - index: i - }); - } // the collection is now 1 ele smaller - - - this.length--; - return this; - }, - // remove single ele in place in calling collection - unmergeOne: function unmergeOne(ele) { - ele = ele[0]; - var _p = this._private; - var id = ele._private.data.id; - var map = _p.map; - var entry = map.get(id); - - if (!entry) { - return this; // no need to remove - } - - var i = entry.index; - this.unmergeAt(i); - return this; - }, - // remove eles in place on calling collection - unmerge: function unmerge(toRemove) { - var cy = this._private.cy; - - if (!toRemove) { - return this; - } - - if (toRemove && string(toRemove)) { - var selector = toRemove; - toRemove = cy.mutableElements().filter(selector); - } - - for (var i = 0; i < toRemove.length; i++) { - this.unmergeOne(toRemove[i]); - } - - return this; // chaining - }, - unmergeBy: function unmergeBy(toRmFn) { - for (var i = this.length - 1; i >= 0; i--) { - var ele = this[i]; - - if (toRmFn(ele)) { - this.unmergeAt(i); - } - } - - return this; - }, - map: function map(mapFn, thisArg) { - var arr = []; - var eles = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var ret = thisArg ? mapFn.apply(thisArg, [ele, i, eles]) : mapFn(ele, i, eles); - arr.push(ret); - } - - return arr; - }, - reduce: function reduce(fn, initialValue) { - var val = initialValue; - var eles = this; - - for (var i = 0; i < eles.length; i++) { - val = fn(val, eles[i], i, eles); - } - - return val; - }, - max: function max(valFn, thisArg) { - var max = -Infinity; - var maxEle; - var eles = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles); - - if (val > max) { - max = val; - maxEle = ele; - } - } - - return { - value: max, - ele: maxEle - }; - }, - min: function min(valFn, thisArg) { - var min = Infinity; - var minEle; - var eles = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles); - - if (val < min) { - min = val; - minEle = ele; - } - } - - return { - value: min, - ele: minEle - }; - } -}; // aliases - -var fn$5 = elesfn$n; -fn$5['u'] = fn$5['|'] = fn$5['+'] = fn$5.union = fn$5.or = fn$5.add; -fn$5['\\'] = fn$5['!'] = fn$5['-'] = fn$5.difference = fn$5.relativeComplement = fn$5.subtract = fn$5.not; -fn$5['n'] = fn$5['&'] = fn$5['.'] = fn$5.and = fn$5.intersection = fn$5.intersect; -fn$5['^'] = fn$5['(+)'] = fn$5['(-)'] = fn$5.symmetricDifference = fn$5.symdiff = fn$5.xor; -fn$5.fnFilter = fn$5.filterFn = fn$5.stdFilter = fn$5.filter; -fn$5.complement = fn$5.abscomp = fn$5.absoluteComplement; - -var elesfn$o = { - isNode: function isNode() { - return this.group() === 'nodes'; - }, - isEdge: function isEdge() { - return this.group() === 'edges'; - }, - isLoop: function isLoop() { - return this.isEdge() && this.source()[0] === this.target()[0]; - }, - isSimple: function isSimple() { - return this.isEdge() && this.source()[0] !== this.target()[0]; - }, - group: function group() { - var ele = this[0]; - - if (ele) { - return ele._private.group; - } - } -}; - -/** - * Elements are drawn in a specific order based on compound depth (low to high), the element type (nodes above edges), - * and z-index (low to high). These styles affect how this applies: - * - * z-compound-depth: May be `bottom | orphan | auto | top`. The first drawn is `bottom`, then `orphan` which is the - * same depth as the root of the compound graph, followed by the default value `auto` which draws in order from - * root to leaves of the compound graph. The last drawn is `top`. - * z-index-compare: May be `auto | manual`. The default value is `auto` which always draws edges under nodes. - * `manual` ignores this convention and draws based on the `z-index` value setting. - * z-index: An integer value that affects the relative draw order of elements. In general, an element with a higher - * `z-index` will be drawn on top of an element with a lower `z-index`. - */ - -var zIndexSort = function zIndexSort(a, b) { - var cy = a.cy(); - var hasCompoundNodes = cy.hasCompoundNodes(); - - function getDepth(ele) { - var style = ele.pstyle('z-compound-depth'); - - if (style.value === 'auto') { - return hasCompoundNodes ? ele.zDepth() : 0; - } else if (style.value === 'bottom') { - return -1; - } else if (style.value === 'top') { - return MAX_INT; - } // 'orphan' - - - return 0; - } - - var depthDiff = getDepth(a) - getDepth(b); - - if (depthDiff !== 0) { - return depthDiff; - } - - function getEleDepth(ele) { - var style = ele.pstyle('z-index-compare'); - - if (style.value === 'auto') { - return ele.isNode() ? 1 : 0; - } // 'manual' - - - return 0; - } - - var eleDiff = getEleDepth(a) - getEleDepth(b); - - if (eleDiff !== 0) { - return eleDiff; - } - - var zDiff = a.pstyle('z-index').value - b.pstyle('z-index').value; - - if (zDiff !== 0) { - return zDiff; - } // compare indices in the core (order added to graph w/ last on top) - - - return a.poolIndex() - b.poolIndex(); -}; - -var elesfn$p = { - forEach: function forEach(fn$1, thisArg) { - if (fn(fn$1)) { - var N = this.length; - - for (var i = 0; i < N; i++) { - var ele = this[i]; - var ret = thisArg ? fn$1.apply(thisArg, [ele, i, this]) : fn$1(ele, i, this); - - if (ret === false) { - break; - } // exit each early on return false - - } - } - - return this; - }, - toArray: function toArray() { - var array = []; - - for (var i = 0; i < this.length; i++) { - array.push(this[i]); - } - - return array; - }, - slice: function slice(start, end) { - var array = []; - var thisSize = this.length; - - if (end == null) { - end = thisSize; - } - - if (start == null) { - start = 0; - } - - if (start < 0) { - start = thisSize + start; - } - - if (end < 0) { - end = thisSize + end; - } - - for (var i = start; i >= 0 && i < end && i < thisSize; i++) { - array.push(this[i]); - } - - return this.spawn(array); - }, - size: function size() { - return this.length; - }, - eq: function eq(i) { - return this[i] || this.spawn(); - }, - first: function first() { - return this[0] || this.spawn(); - }, - last: function last() { - return this[this.length - 1] || this.spawn(); - }, - empty: function empty() { - return this.length === 0; - }, - nonempty: function nonempty() { - return !this.empty(); - }, - sort: function sort(sortFn) { - if (!fn(sortFn)) { - return this; - } - - var sorted = this.toArray().sort(sortFn); - return this.spawn(sorted); - }, - sortByZIndex: function sortByZIndex() { - return this.sort(zIndexSort); - }, - zDepth: function zDepth() { - var ele = this[0]; - - if (!ele) { - return undefined; - } // let cy = ele.cy(); - - - var _p = ele._private; - var group = _p.group; - - if (group === 'nodes') { - var depth = _p.data.parent ? ele.parents().size() : 0; - - if (!ele.isParent()) { - return MAX_INT - 1; // childless nodes always on top - } - - return depth; - } else { - var src = _p.source; - var tgt = _p.target; - var srcDepth = src.zDepth(); - var tgtDepth = tgt.zDepth(); - return Math.max(srcDepth, tgtDepth, 0); // depth of deepest parent - } - } -}; -elesfn$p.each = elesfn$p.forEach; - -var defineSymbolIterator = function defineSymbolIterator() { - var typeofUndef = "undefined" ; - var isIteratorSupported = (typeof Symbol === "undefined" ? "undefined" : _typeof(Symbol)) != typeofUndef && _typeof(Symbol.iterator) != typeofUndef; // eslint-disable-line no-undef - - if (isIteratorSupported) { - elesfn$p[Symbol.iterator] = function () { - var _this = this; - - // eslint-disable-line no-undef - var entry = { - value: undefined, - done: false - }; - var i = 0; - var length = this.length; - return _defineProperty$1({ - next: function next() { - if (i < length) { - entry.value = _this[i++]; - } else { - entry.value = undefined; - entry.done = true; - } - - return entry; - } - }, Symbol.iterator, function () { - // eslint-disable-line no-undef - return this; - }); - }; - } -}; - -defineSymbolIterator(); - -var getLayoutDimensionOptions = defaults$1({ - nodeDimensionsIncludeLabels: false -}); -var elesfn$q = { - // Calculates and returns node dimensions { x, y } based on options given - layoutDimensions: function layoutDimensions(options) { - options = getLayoutDimensionOptions(options); - var dims; - - if (!this.takesUpSpace()) { - dims = { - w: 0, - h: 0 - }; - } else if (options.nodeDimensionsIncludeLabels) { - var bbDim = this.boundingBox(); - dims = { - w: bbDim.w, - h: bbDim.h - }; - } else { - dims = { - w: this.outerWidth(), - h: this.outerHeight() - }; - } // sanitise the dimensions for external layouts (avoid division by zero) - - - if (dims.w === 0 || dims.h === 0) { - dims.w = dims.h = 1; - } - - return dims; - }, - // using standard layout options, apply position function (w/ or w/o animation) - layoutPositions: function layoutPositions(layout, options, fn) { - var nodes = this.nodes().filter(function (n) { - return !n.isParent(); - }); - var cy = this.cy(); - var layoutEles = options.eles; // nodes & edges - - var getMemoizeKey = function getMemoizeKey(node) { - return node.id(); - }; - - var fnMem = memoize$1(fn, getMemoizeKey); // memoized version of position function - - layout.emit({ - type: 'layoutstart', - layout: layout - }); - layout.animations = []; - - var calculateSpacing = function calculateSpacing(spacing, nodesBb, pos) { - var center = { - x: nodesBb.x1 + nodesBb.w / 2, - y: nodesBb.y1 + nodesBb.h / 2 - }; - var spacingVector = { - // scale from center of bounding box (not necessarily 0,0) - x: (pos.x - center.x) * spacing, - y: (pos.y - center.y) * spacing - }; - return { - x: center.x + spacingVector.x, - y: center.y + spacingVector.y - }; - }; - - var useSpacingFactor = options.spacingFactor && options.spacingFactor !== 1; - - var spacingBb = function spacingBb() { - if (!useSpacingFactor) { - return null; - } - - var bb = makeBoundingBox(); - - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var pos = fnMem(node, i); - expandBoundingBoxByPoint(bb, pos.x, pos.y); - } - - return bb; - }; - - var bb = spacingBb(); - var getFinalPos = memoize$1(function (node, i) { - var newPos = fnMem(node, i); - - if (useSpacingFactor) { - var spacing = Math.abs(options.spacingFactor); - newPos = calculateSpacing(spacing, bb, newPos); - } - - if (options.transform != null) { - newPos = options.transform(node, newPos); - } - - return newPos; - }, getMemoizeKey); - - if (options.animate) { - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var newPos = getFinalPos(node, i); - var animateNode = options.animateFilter == null || options.animateFilter(node, i); - - if (animateNode) { - var ani = node.animation({ - position: newPos, - duration: options.animationDuration, - easing: options.animationEasing - }); - layout.animations.push(ani); - } else { - node.position(newPos); - } - } - - if (options.fit) { - var fitAni = cy.animation({ - fit: { - boundingBox: layoutEles.boundingBoxAt(getFinalPos), - padding: options.padding - }, - duration: options.animationDuration, - easing: options.animationEasing - }); - layout.animations.push(fitAni); - } else if (options.zoom !== undefined && options.pan !== undefined) { - var zoomPanAni = cy.animation({ - zoom: options.zoom, - pan: options.pan, - duration: options.animationDuration, - easing: options.animationEasing - }); - layout.animations.push(zoomPanAni); - } - - layout.animations.forEach(function (ani) { - return ani.play(); - }); - layout.one('layoutready', options.ready); - layout.emit({ - type: 'layoutready', - layout: layout - }); - Promise$1$1.all(layout.animations.map(function (ani) { - return ani.promise(); - })).then(function () { - layout.one('layoutstop', options.stop); - layout.emit({ - type: 'layoutstop', - layout: layout - }); - }); - } else { - nodes.positions(getFinalPos); - - if (options.fit) { - cy.fit(options.eles, options.padding); - } - - if (options.zoom != null) { - cy.zoom(options.zoom); - } - - if (options.pan) { - cy.pan(options.pan); - } - - layout.one('layoutready', options.ready); - layout.emit({ - type: 'layoutready', - layout: layout - }); - layout.one('layoutstop', options.stop); - layout.emit({ - type: 'layoutstop', - layout: layout - }); - } - - return this; // chaining - }, - layout: function layout(options) { - var cy = this.cy(); - return cy.makeLayout(extend({}, options, { - eles: this - })); - } -}; // aliases: - -elesfn$q.createLayout = elesfn$q.makeLayout = elesfn$q.layout; - -function styleCache(key, fn, ele) { - var _p = ele._private; - var cache = _p.styleCache = _p.styleCache || []; - var val; - - if ((val = cache[key]) != null) { - return val; - } else { - val = cache[key] = fn(ele); - return val; - } -} - -function cacheStyleFunction(key, fn) { - key = hashString(key); - return function cachedStyleFunction(ele) { - return styleCache(key, fn, ele); - }; -} - -function cachePrototypeStyleFunction(key, fn) { - key = hashString(key); - - var selfFn = function selfFn(ele) { - return fn.call(ele); - }; - - return function cachedPrototypeStyleFunction() { - var ele = this[0]; - - if (ele) { - return styleCache(key, selfFn, ele); - } - }; -} - -var elesfn$r = { - recalculateRenderedStyle: function recalculateRenderedStyle(useCache) { - var cy = this.cy(); - var renderer = cy.renderer(); - var styleEnabled = cy.styleEnabled(); - - if (renderer && styleEnabled) { - renderer.recalculateRenderedStyle(this, useCache); - } - - return this; - }, - dirtyStyleCache: function dirtyStyleCache() { - var cy = this.cy(); - - var dirty = function dirty(ele) { - return ele._private.styleCache = null; - }; - - if (cy.hasCompoundNodes()) { - var eles; - eles = this.spawnSelf().merge(this.descendants()).merge(this.parents()); - eles.merge(eles.connectedEdges()); - eles.forEach(dirty); - } else { - this.forEach(function (ele) { - dirty(ele); - ele.connectedEdges().forEach(dirty); - }); - } - - return this; - }, - // fully updates (recalculates) the style for the elements - updateStyle: function updateStyle(notifyRenderer) { - var cy = this._private.cy; - - if (!cy.styleEnabled()) { - return this; - } - - if (cy.batching()) { - var bEles = cy._private.batchStyleEles; - bEles.merge(this); - return this; // chaining and exit early when batching - } - - var hasCompounds = cy.hasCompoundNodes(); - var updatedEles = this; - notifyRenderer = notifyRenderer || notifyRenderer === undefined ? true : false; - - if (hasCompounds) { - // then add everything up and down for compound selector checks - updatedEles = this.spawnSelf().merge(this.descendants()).merge(this.parents()); - } // let changedEles = style.apply( updatedEles ); - - - var changedEles = updatedEles; - - if (notifyRenderer) { - changedEles.emitAndNotify('style'); // let renderer know we changed style - } else { - changedEles.emit('style'); // just fire the event - } - - updatedEles.forEach(function (ele) { - return ele._private.styleDirty = true; - }); - return this; // chaining - }, - // private: clears dirty flag and recalculates style - cleanStyle: function cleanStyle() { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return; - } - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - - if (ele._private.styleDirty) { - // n.b. this flag should be set before apply() to avoid potential infinite recursion - ele._private.styleDirty = false; - cy.style().apply(ele); - } - } - }, - // get the internal parsed style object for the specified property - parsedStyle: function parsedStyle(property) { - var includeNonDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - var ele = this[0]; - var cy = ele.cy(); - - if (!cy.styleEnabled()) { - return; - } - - if (ele) { - this.cleanStyle(); - var overriddenStyle = ele._private.style[property]; - - if (overriddenStyle != null) { - return overriddenStyle; - } else if (includeNonDefault) { - return cy.style().getDefaultProperty(property); - } else { - return null; - } - } - }, - numericStyle: function numericStyle(property) { - var ele = this[0]; - - if (!ele.cy().styleEnabled()) { - return; - } - - if (ele) { - var pstyle = ele.pstyle(property); - return pstyle.pfValue !== undefined ? pstyle.pfValue : pstyle.value; - } - }, - numericStyleUnits: function numericStyleUnits(property) { - var ele = this[0]; - - if (!ele.cy().styleEnabled()) { - return; - } - - if (ele) { - return ele.pstyle(property).units; - } - }, - // get the specified css property as a rendered value (i.e. on-screen value) - // or get the whole rendered style if no property specified (NB doesn't allow setting) - renderedStyle: function renderedStyle(property) { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return this; - } - - var ele = this[0]; - - if (ele) { - return cy.style().getRenderedStyle(ele, property); - } - }, - // read the calculated css style of the element or override the style (via a bypass) - style: function style(name, value) { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return this; - } - - var updateTransitions = false; - var style = cy.style(); - - if (plainObject(name)) { - // then extend the bypass - var props = name; - style.applyBypass(this, props, updateTransitions); - this.emitAndNotify('style'); // let the renderer know we've updated style - } else if (string(name)) { - if (value === undefined) { - // then get the property from the style - var ele = this[0]; - - if (ele) { - return style.getStylePropertyValue(ele, name); - } else { - // empty collection => can't get any value - return; - } - } else { - // then set the bypass with the property value - style.applyBypass(this, name, value, updateTransitions); - this.emitAndNotify('style'); // let the renderer know we've updated style - } - } else if (name === undefined) { - var _ele = this[0]; - - if (_ele) { - return style.getRawStyle(_ele); - } else { - // empty collection => can't get any value - return; - } - } - - return this; // chaining - }, - removeStyle: function removeStyle(names) { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return this; - } - - var updateTransitions = false; - var style = cy.style(); - var eles = this; - - if (names === undefined) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - style.removeAllBypasses(ele, updateTransitions); - } - } else { - names = names.split(/\s+/); - - for (var _i = 0; _i < eles.length; _i++) { - var _ele2 = eles[_i]; - style.removeBypasses(_ele2, names, updateTransitions); - } - } - - this.emitAndNotify('style'); // let the renderer know we've updated style - - return this; // chaining - }, - show: function show() { - this.css('display', 'element'); - return this; // chaining - }, - hide: function hide() { - this.css('display', 'none'); - return this; // chaining - }, - effectiveOpacity: function effectiveOpacity() { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return 1; - } - - var hasCompoundNodes = cy.hasCompoundNodes(); - var ele = this[0]; - - if (ele) { - var _p = ele._private; - var parentOpacity = ele.pstyle('opacity').value; - - if (!hasCompoundNodes) { - return parentOpacity; - } - - var parents = !_p.data.parent ? null : ele.parents(); - - if (parents) { - for (var i = 0; i < parents.length; i++) { - var parent = parents[i]; - var opacity = parent.pstyle('opacity').value; - parentOpacity = opacity * parentOpacity; - } - } - - return parentOpacity; - } - }, - transparent: function transparent() { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return false; - } - - var ele = this[0]; - var hasCompoundNodes = ele.cy().hasCompoundNodes(); - - if (ele) { - if (!hasCompoundNodes) { - return ele.pstyle('opacity').value === 0; - } else { - return ele.effectiveOpacity() === 0; - } - } - }, - backgrounding: function backgrounding() { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return false; - } - - var ele = this[0]; - return ele._private.backgrounding ? true : false; - } -}; - -function checkCompound(ele, parentOk) { - var _p = ele._private; - var parents = _p.data.parent ? ele.parents() : null; - - if (parents) { - for (var i = 0; i < parents.length; i++) { - var parent = parents[i]; - - if (!parentOk(parent)) { - return false; - } - } - } - - return true; -} - -function defineDerivedStateFunction(specs) { - var ok = specs.ok; - var edgeOkViaNode = specs.edgeOkViaNode || specs.ok; - var parentOk = specs.parentOk || specs.ok; - return function () { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return true; - } - - var ele = this[0]; - var hasCompoundNodes = cy.hasCompoundNodes(); - - if (ele) { - var _p = ele._private; - - if (!ok(ele)) { - return false; - } - - if (ele.isNode()) { - return !hasCompoundNodes || checkCompound(ele, parentOk); - } else { - var src = _p.source; - var tgt = _p.target; - return edgeOkViaNode(src) && (!hasCompoundNodes || checkCompound(src, edgeOkViaNode)) && (src === tgt || edgeOkViaNode(tgt) && (!hasCompoundNodes || checkCompound(tgt, edgeOkViaNode))); - } - } - }; -} - -var eleTakesUpSpace = cacheStyleFunction('eleTakesUpSpace', function (ele) { - return ele.pstyle('display').value === 'element' && ele.width() !== 0 && (ele.isNode() ? ele.height() !== 0 : true); -}); -elesfn$r.takesUpSpace = cachePrototypeStyleFunction('takesUpSpace', defineDerivedStateFunction({ - ok: eleTakesUpSpace -})); -var eleInteractive = cacheStyleFunction('eleInteractive', function (ele) { - return ele.pstyle('events').value === 'yes' && ele.pstyle('visibility').value === 'visible' && eleTakesUpSpace(ele); -}); -var parentInteractive = cacheStyleFunction('parentInteractive', function (parent) { - return parent.pstyle('visibility').value === 'visible' && eleTakesUpSpace(parent); -}); -elesfn$r.interactive = cachePrototypeStyleFunction('interactive', defineDerivedStateFunction({ - ok: eleInteractive, - parentOk: parentInteractive, - edgeOkViaNode: eleTakesUpSpace -})); - -elesfn$r.noninteractive = function () { - var ele = this[0]; - - if (ele) { - return !ele.interactive(); - } -}; - -var eleVisible = cacheStyleFunction('eleVisible', function (ele) { - return ele.pstyle('visibility').value === 'visible' && ele.pstyle('opacity').pfValue !== 0 && eleTakesUpSpace(ele); -}); -var edgeVisibleViaNode = eleTakesUpSpace; -elesfn$r.visible = cachePrototypeStyleFunction('visible', defineDerivedStateFunction({ - ok: eleVisible, - edgeOkViaNode: edgeVisibleViaNode -})); - -elesfn$r.hidden = function () { - var ele = this[0]; - - if (ele) { - return !ele.visible(); - } -}; - -elesfn$r.isBundledBezier = cachePrototypeStyleFunction('isBundledBezier', function () { - if (!this.cy().styleEnabled()) { - return false; - } - - return !this.removed() && this.pstyle('curve-style').value === 'bezier' && this.takesUpSpace(); -}); -elesfn$r.bypass = elesfn$r.css = elesfn$r.style; -elesfn$r.renderedCss = elesfn$r.renderedStyle; -elesfn$r.removeBypass = elesfn$r.removeCss = elesfn$r.removeStyle; -elesfn$r.pstyle = elesfn$r.parsedStyle; - -var elesfn$s = {}; - -function defineSwitchFunction(params) { - return function () { - var args = arguments; - var changedEles = []; // e.g. cy.nodes().select( data, handler ) - - if (args.length === 2) { - var data = args[0]; - var handler = args[1]; - this.on(params.event, data, handler); - } // e.g. cy.nodes().select( handler ) - else if (args.length === 1 && fn(args[0])) { - var _handler = args[0]; - this.on(params.event, _handler); - } // e.g. cy.nodes().select() - // e.g. (private) cy.nodes().select(['tapselect']) - else if (args.length === 0 || args.length === 1 && array(args[0])) { - var addlEvents = args.length === 1 ? args[0] : null; - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var able = !params.ableField || ele._private[params.ableField]; - var changed = ele._private[params.field] != params.value; - - if (params.overrideAble) { - var overrideAble = params.overrideAble(ele); - - if (overrideAble !== undefined) { - able = overrideAble; - - if (!overrideAble) { - return this; - } // to save cycles assume not able for all on override - - } - } - - if (able) { - ele._private[params.field] = params.value; - - if (changed) { - changedEles.push(ele); - } - } - } - - var changedColl = this.spawn(changedEles); - changedColl.updateStyle(); // change of state => possible change of style - - changedColl.emit(params.event); - - if (addlEvents) { - changedColl.emit(addlEvents); - } - } - - return this; - }; -} - -function defineSwitchSet(params) { - elesfn$s[params.field] = function () { - var ele = this[0]; - - if (ele) { - if (params.overrideField) { - var val = params.overrideField(ele); - - if (val !== undefined) { - return val; - } - } - - return ele._private[params.field]; - } - }; - - elesfn$s[params.on] = defineSwitchFunction({ - event: params.on, - field: params.field, - ableField: params.ableField, - overrideAble: params.overrideAble, - value: true - }); - elesfn$s[params.off] = defineSwitchFunction({ - event: params.off, - field: params.field, - ableField: params.ableField, - overrideAble: params.overrideAble, - value: false - }); -} - -defineSwitchSet({ - field: 'locked', - overrideField: function overrideField(ele) { - return ele.cy().autolock() ? true : undefined; - }, - on: 'lock', - off: 'unlock' -}); -defineSwitchSet({ - field: 'grabbable', - overrideField: function overrideField(ele) { - return ele.cy().autoungrabify() || ele.pannable() ? false : undefined; - }, - on: 'grabify', - off: 'ungrabify' -}); -defineSwitchSet({ - field: 'selected', - ableField: 'selectable', - overrideAble: function overrideAble(ele) { - return ele.cy().autounselectify() ? false : undefined; - }, - on: 'select', - off: 'unselect' -}); -defineSwitchSet({ - field: 'selectable', - overrideField: function overrideField(ele) { - return ele.cy().autounselectify() ? false : undefined; - }, - on: 'selectify', - off: 'unselectify' -}); -elesfn$s.deselect = elesfn$s.unselect; - -elesfn$s.grabbed = function () { - var ele = this[0]; - - if (ele) { - return ele._private.grabbed; - } -}; - -defineSwitchSet({ - field: 'active', - on: 'activate', - off: 'unactivate' -}); -defineSwitchSet({ - field: 'pannable', - on: 'panify', - off: 'unpanify' -}); - -elesfn$s.inactive = function () { - var ele = this[0]; - - if (ele) { - return !ele._private.active; - } -}; - -var elesfn$t = {}; // DAG functions -//////////////// - -var defineDagExtremity = function defineDagExtremity(params) { - return function dagExtremityImpl(selector) { - var eles = this; - var ret = []; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - - if (!ele.isNode()) { - continue; - } - - var disqualified = false; - var edges = ele.connectedEdges(); - - for (var j = 0; j < edges.length; j++) { - var edge = edges[j]; - var src = edge.source(); - var tgt = edge.target(); - - if (params.noIncomingEdges && tgt === ele && src !== ele || params.noOutgoingEdges && src === ele && tgt !== ele) { - disqualified = true; - break; - } - } - - if (!disqualified) { - ret.push(ele); - } - } - - return this.spawn(ret, true).filter(selector); - }; -}; - -var defineDagOneHop = function defineDagOneHop(params) { - return function (selector) { - var eles = this; - var oEles = []; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - - if (!ele.isNode()) { - continue; - } - - var edges = ele.connectedEdges(); - - for (var j = 0; j < edges.length; j++) { - var edge = edges[j]; - var src = edge.source(); - var tgt = edge.target(); - - if (params.outgoing && src === ele) { - oEles.push(edge); - oEles.push(tgt); - } else if (params.incoming && tgt === ele) { - oEles.push(edge); - oEles.push(src); - } - } - } - - return this.spawn(oEles, true).filter(selector); - }; -}; - -var defineDagAllHops = function defineDagAllHops(params) { - return function (selector) { - var eles = this; - var sEles = []; - var sElesIds = {}; - - for (;;) { - var next = params.outgoing ? eles.outgoers() : eles.incomers(); - - if (next.length === 0) { - break; - } // done if none left - - - var newNext = false; - - for (var i = 0; i < next.length; i++) { - var n = next[i]; - var nid = n.id(); - - if (!sElesIds[nid]) { - sElesIds[nid] = true; - sEles.push(n); - newNext = true; - } - } - - if (!newNext) { - break; - } // done if touched all outgoers already - - - eles = next; - } - - return this.spawn(sEles, true).filter(selector); - }; -}; - -elesfn$t.clearTraversalCache = function () { - for (var i = 0; i < this.length; i++) { - this[i]._private.traversalCache = null; - } -}; - -extend(elesfn$t, { - // get the root nodes in the DAG - roots: defineDagExtremity({ - noIncomingEdges: true - }), - // get the leaf nodes in the DAG - leaves: defineDagExtremity({ - noOutgoingEdges: true - }), - // normally called children in graph theory - // these nodes =edges=> outgoing nodes - outgoers: cache(defineDagOneHop({ - outgoing: true - }), 'outgoers'), - // aka DAG descendants - successors: defineDagAllHops({ - outgoing: true - }), - // normally called parents in graph theory - // these nodes <=edges= incoming nodes - incomers: cache(defineDagOneHop({ - incoming: true - }), 'incomers'), - // aka DAG ancestors - predecessors: defineDagAllHops({ - incoming: true - }) -}); // Neighbourhood functions -////////////////////////// - -extend(elesfn$t, { - neighborhood: cache(function (selector) { - var elements = []; - var nodes = this.nodes(); - - for (var i = 0; i < nodes.length; i++) { - // for all nodes - var node = nodes[i]; - var connectedEdges = node.connectedEdges(); // for each connected edge, add the edge and the other node - - for (var j = 0; j < connectedEdges.length; j++) { - var edge = connectedEdges[j]; - var src = edge.source(); - var tgt = edge.target(); - var otherNode = node === src ? tgt : src; // need check in case of loop - - if (otherNode.length > 0) { - elements.push(otherNode[0]); // add node 1 hop away - } // add connected edge - - - elements.push(edge[0]); - } - } - - return this.spawn(elements, true).filter(selector); - }, 'neighborhood'), - closedNeighborhood: function closedNeighborhood(selector) { - return this.neighborhood().add(this).filter(selector); - }, - openNeighborhood: function openNeighborhood(selector) { - return this.neighborhood(selector); - } -}); // aliases - -elesfn$t.neighbourhood = elesfn$t.neighborhood; -elesfn$t.closedNeighbourhood = elesfn$t.closedNeighborhood; -elesfn$t.openNeighbourhood = elesfn$t.openNeighborhood; // Edge functions -///////////////// - -extend(elesfn$t, { - source: cache(function sourceImpl(selector) { - var ele = this[0]; - var src; - - if (ele) { - src = ele._private.source || ele.cy().collection(); - } - - return src && selector ? src.filter(selector) : src; - }, 'source'), - target: cache(function targetImpl(selector) { - var ele = this[0]; - var tgt; - - if (ele) { - tgt = ele._private.target || ele.cy().collection(); - } - - return tgt && selector ? tgt.filter(selector) : tgt; - }, 'target'), - sources: defineSourceFunction({ - attr: 'source' - }), - targets: defineSourceFunction({ - attr: 'target' - }) -}); - -function defineSourceFunction(params) { - return function sourceImpl(selector) { - var sources = []; - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var src = ele._private[params.attr]; - - if (src) { - sources.push(src); - } - } - - return this.spawn(sources, true).filter(selector); - }; -} - -extend(elesfn$t, { - edgesWith: cache(defineEdgesWithFunction(), 'edgesWith'), - edgesTo: cache(defineEdgesWithFunction({ - thisIsSrc: true - }), 'edgesTo') -}); - -function defineEdgesWithFunction(params) { - return function edgesWithImpl(otherNodes) { - var elements = []; - var cy = this._private.cy; - var p = params || {}; // get elements if a selector is specified - - if (string(otherNodes)) { - otherNodes = cy.$(otherNodes); - } - - for (var h = 0; h < otherNodes.length; h++) { - var edges = otherNodes[h]._private.edges; - - for (var i = 0; i < edges.length; i++) { - var edge = edges[i]; - var edgeData = edge._private.data; - var thisToOther = this.hasElementWithId(edgeData.source) && otherNodes.hasElementWithId(edgeData.target); - var otherToThis = otherNodes.hasElementWithId(edgeData.source) && this.hasElementWithId(edgeData.target); - var edgeConnectsThisAndOther = thisToOther || otherToThis; - - if (!edgeConnectsThisAndOther) { - continue; - } - - if (p.thisIsSrc || p.thisIsTgt) { - if (p.thisIsSrc && !thisToOther) { - continue; - } - - if (p.thisIsTgt && !otherToThis) { - continue; - } - } - - elements.push(edge); - } - } - - return this.spawn(elements, true); - }; -} - -extend(elesfn$t, { - connectedEdges: cache(function (selector) { - var retEles = []; - var eles = this; - - for (var i = 0; i < eles.length; i++) { - var node = eles[i]; - - if (!node.isNode()) { - continue; - } - - var edges = node._private.edges; - - for (var j = 0; j < edges.length; j++) { - var edge = edges[j]; - retEles.push(edge); - } - } - - return this.spawn(retEles, true).filter(selector); - }, 'connectedEdges'), - connectedNodes: cache(function (selector) { - var retEles = []; - var eles = this; - - for (var i = 0; i < eles.length; i++) { - var edge = eles[i]; - - if (!edge.isEdge()) { - continue; - } - - retEles.push(edge.source()[0]); - retEles.push(edge.target()[0]); - } - - return this.spawn(retEles, true).filter(selector); - }, 'connectedNodes'), - parallelEdges: cache(defineParallelEdgesFunction(), 'parallelEdges'), - codirectedEdges: cache(defineParallelEdgesFunction({ - codirected: true - }), 'codirectedEdges') -}); - -function defineParallelEdgesFunction(params) { - var defaults = { - codirected: false - }; - params = extend({}, defaults, params); - return function parallelEdgesImpl(selector) { - // micro-optimised for renderer - var elements = []; - var edges = this.edges(); - var p = params; // look at all the edges in the collection - - for (var i = 0; i < edges.length; i++) { - var edge1 = edges[i]; - var edge1_p = edge1._private; - var src1 = edge1_p.source; - var srcid1 = src1._private.data.id; - var tgtid1 = edge1_p.data.target; - var srcEdges1 = src1._private.edges; // look at edges connected to the src node of this edge - - for (var j = 0; j < srcEdges1.length; j++) { - var edge2 = srcEdges1[j]; - var edge2data = edge2._private.data; - var tgtid2 = edge2data.target; - var srcid2 = edge2data.source; - var codirected = tgtid2 === tgtid1 && srcid2 === srcid1; - var oppdirected = srcid1 === tgtid2 && tgtid1 === srcid2; - - if (p.codirected && codirected || !p.codirected && (codirected || oppdirected)) { - elements.push(edge2); - } - } - } - - return this.spawn(elements, true).filter(selector); - }; -} // Misc functions -///////////////// - - -extend(elesfn$t, { - components: function components(root) { - var self = this; - var cy = self.cy(); - var visited = cy.collection(); - var unvisited = root == null ? self.nodes() : root.nodes(); - var components = []; - - if (root != null && unvisited.empty()) { - // root may contain only edges - unvisited = root.sources(); // doesn't matter which node to use (undirected), so just use the source sides - } - - var visitInComponent = function visitInComponent(node, component) { - visited.merge(node); - unvisited.unmerge(node); - component.merge(node); - }; - - if (unvisited.empty()) { - return self.spawn(); - } - - var _loop = function _loop() { - // each iteration yields a component - var cmpt = cy.collection(); - components.push(cmpt); - var root = unvisited[0]; - visitInComponent(root, cmpt); - self.bfs({ - directed: false, - roots: root, - visit: function visit(v) { - return visitInComponent(v, cmpt); - } - }); - cmpt.forEach(function (node) { - node.connectedEdges().forEach(function (e) { - // connectedEdges() usually cached - if (self.has(e) && cmpt.has(e.source()) && cmpt.has(e.target())) { - // has() is cheap - cmpt.merge(e); // forEach() only considers nodes -- sets N at call time - } - }); - }); - }; - - do { - _loop(); - } while (unvisited.length > 0); - - return components; - }, - component: function component() { - var ele = this[0]; - return ele.cy().mutableElements().components(ele)[0]; - } -}); -elesfn$t.componentsOf = elesfn$t.components; - -var Collection = function Collection(cy, elements) { - var unique = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (cy === undefined) { - error('A collection must have a reference to the core'); - return; - } - - var map = new Map$1$1(); - var createdElements = false; - - if (!elements) { - elements = []; - } else if (elements.length > 0 && plainObject(elements[0]) && !element(elements[0])) { - createdElements = true; // make elements from json and restore all at once later - - var eles = []; - var elesIds = new Set$1$1(); - - for (var i = 0, l = elements.length; i < l; i++) { - var json = elements[i]; - - if (json.data == null) { - json.data = {}; - } - - var _data = json.data; // make sure newly created elements have valid ids - - if (_data.id == null) { - _data.id = uuid(); - } else if (cy.hasElementWithId(_data.id) || elesIds.has(_data.id)) { - continue; // can't create element if prior id already exists - } - - var ele = new Element$1(cy, json, false); - eles.push(ele); - elesIds.add(_data.id); - } - - elements = eles; - } - - this.length = 0; - - for (var _i = 0, _l = elements.length; _i < _l; _i++) { - var element$1 = elements[_i][0]; // [0] in case elements is an array of collections, rather than array of elements - - if (element$1 == null) { - continue; - } - - var id = element$1._private.data.id; - - if (!unique || !map.has(id)) { - if (unique) { - map.set(id, { - index: this.length, - ele: element$1 - }); - } - - this[this.length] = element$1; - this.length++; - } - } - - this._private = { - eles: this, - cy: cy, - - get map() { - if (this.lazyMap == null) { - this.rebuildMap(); - } - - return this.lazyMap; - }, - - set map(m) { - this.lazyMap = m; - }, - - rebuildMap: function rebuildMap() { - var m = this.lazyMap = new Map$1$1(); - var eles = this.eles; - - for (var _i2 = 0; _i2 < eles.length; _i2++) { - var _ele = eles[_i2]; - m.set(_ele.id(), { - index: _i2, - ele: _ele - }); - } - } - }; - - if (unique) { - this._private.map = map; - } // restore the elements if we created them from json - - - if (createdElements) { - this.restore(); - } -}; // Functions -//////////////////////////////////////////////////////////////////////////////////////////////////// -// keep the prototypes in sync (an element has the same functions as a collection) -// and use elefn and elesfn as shorthands to the prototypes - - -var elesfn$u = Element$1.prototype = Collection.prototype = Object.create(Array.prototype); - -elesfn$u.instanceString = function () { - return 'collection'; -}; - -elesfn$u.spawn = function (eles, unique) { - return new Collection(this.cy(), eles, unique); -}; - -elesfn$u.spawnSelf = function () { - return this.spawn(this); -}; - -elesfn$u.cy = function () { - return this._private.cy; -}; - -elesfn$u.renderer = function () { - return this._private.cy.renderer(); -}; - -elesfn$u.element = function () { - return this[0]; -}; - -elesfn$u.collection = function () { - if (collection(this)) { - return this; - } else { - // an element - return new Collection(this._private.cy, [this]); - } -}; - -elesfn$u.unique = function () { - return new Collection(this._private.cy, this, true); -}; - -elesfn$u.hasElementWithId = function (id) { - id = '' + id; // id must be string - - return this._private.map.has(id); -}; - -elesfn$u.getElementById = function (id) { - id = '' + id; // id must be string - - var cy = this._private.cy; - - var entry = this._private.map.get(id); - - return entry ? entry.ele : new Collection(cy); // get ele or empty collection -}; - -elesfn$u.$id = elesfn$u.getElementById; - -elesfn$u.poolIndex = function () { - var cy = this._private.cy; - var eles = cy._private.elements; - var id = this[0]._private.data.id; - return eles._private.map.get(id).index; -}; - -elesfn$u.indexOf = function (ele) { - var id = ele[0]._private.data.id; - return this._private.map.get(id).index; -}; - -elesfn$u.indexOfId = function (id) { - id = '' + id; // id must be string - - return this._private.map.get(id).index; -}; - -elesfn$u.json = function (obj) { - var ele = this.element(); - var cy = this.cy(); - - if (ele == null && obj) { - return this; - } // can't set to no eles - - - if (ele == null) { - return undefined; - } // can't get from no eles - - - var p = ele._private; - - if (plainObject(obj)) { - // set - cy.startBatch(); - - if (obj.data) { - ele.data(obj.data); - var _data2 = p.data; - - if (ele.isEdge()) { - // source and target are immutable via data() - var move = false; - var spec = {}; - var src = obj.data.source; - var tgt = obj.data.target; - - if (src != null && src != _data2.source) { - spec.source = '' + src; // id must be string - - move = true; - } - - if (tgt != null && tgt != _data2.target) { - spec.target = '' + tgt; // id must be string - - move = true; - } - - if (move) { - ele = ele.move(spec); - } - } else { - // parent is immutable via data() - var newParentValSpecd = 'parent' in obj.data; - var parent = obj.data.parent; - - if (newParentValSpecd && (parent != null || _data2.parent != null) && parent != _data2.parent) { - if (parent === undefined) { - // can't set undefined imperatively, so use null - parent = null; - } - - if (parent != null) { - parent = '' + parent; // id must be string - } - - ele = ele.move({ - parent: parent - }); - } - } - } - - if (obj.position) { - ele.position(obj.position); - } // ignore group -- immutable - - - var checkSwitch = function checkSwitch(k, trueFnName, falseFnName) { - var obj_k = obj[k]; - - if (obj_k != null && obj_k !== p[k]) { - if (obj_k) { - ele[trueFnName](); - } else { - ele[falseFnName](); - } - } - }; - - checkSwitch('removed', 'remove', 'restore'); - checkSwitch('selected', 'select', 'unselect'); - checkSwitch('selectable', 'selectify', 'unselectify'); - checkSwitch('locked', 'lock', 'unlock'); - checkSwitch('grabbable', 'grabify', 'ungrabify'); - checkSwitch('pannable', 'panify', 'unpanify'); - - if (obj.classes != null) { - ele.classes(obj.classes); - } - - cy.endBatch(); - return this; - } else if (obj === undefined) { - // get - var json = { - data: copy(p.data), - position: copy(p.position), - group: p.group, - removed: p.removed, - selected: p.selected, - selectable: p.selectable, - locked: p.locked, - grabbable: p.grabbable, - pannable: p.pannable, - classes: null - }; - json.classes = ''; - var i = 0; - p.classes.forEach(function (cls) { - return json.classes += i++ === 0 ? cls : ' ' + cls; - }); - return json; - } -}; - -elesfn$u.jsons = function () { - var jsons = []; - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var json = ele.json(); - jsons.push(json); - } - - return jsons; -}; - -elesfn$u.clone = function () { - var cy = this.cy(); - var elesArr = []; - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var json = ele.json(); - var clone = new Element$1(cy, json, false); // NB no restore - - elesArr.push(clone); - } - - return new Collection(cy, elesArr); -}; - -elesfn$u.copy = elesfn$u.clone; - -elesfn$u.restore = function () { - var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - var addToPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - var self = this; - var cy = self.cy(); - var cy_p = cy._private; // create arrays of nodes and edges, since we need to - // restore the nodes first - - var nodes = []; - var edges = []; - var elements; - - for (var _i3 = 0, l = self.length; _i3 < l; _i3++) { - var ele = self[_i3]; - - if (addToPool && !ele.removed()) { - // don't need to handle this ele - continue; - } // keep nodes first in the array and edges after - - - if (ele.isNode()) { - // put to front of array if node - nodes.push(ele); - } else { - // put to end of array if edge - edges.push(ele); - } - } - - elements = nodes.concat(edges); - var i; - - var removeFromElements = function removeFromElements() { - elements.splice(i, 1); - i--; - }; // now, restore each element - - - for (i = 0; i < elements.length; i++) { - var _ele2 = elements[i]; - var _private = _ele2._private; - var _data3 = _private.data; // the traversal cache should start fresh when ele is added - - _ele2.clearTraversalCache(); // set id and validate - - - if (!addToPool && !_private.removed) ; else if (_data3.id === undefined) { - _data3.id = uuid(); - } else if (number(_data3.id)) { - _data3.id = '' + _data3.id; // now it's a string - } else if (emptyString(_data3.id) || !string(_data3.id)) { - error('Can not create element with invalid string ID `' + _data3.id + '`'); // can't create element if it has empty string as id or non-string id - - removeFromElements(); - continue; - } else if (cy.hasElementWithId(_data3.id)) { - error('Can not create second element with ID `' + _data3.id + '`'); // can't create element if one already has that id - - removeFromElements(); - continue; - } - - var id = _data3.id; // id is finalised, now let's keep a ref - - if (_ele2.isNode()) { - // extra checks for nodes - var pos = _private.position; // make sure the nodes have a defined position - - if (pos.x == null) { - pos.x = 0; - } - - if (pos.y == null) { - pos.y = 0; - } - } - - if (_ele2.isEdge()) { - // extra checks for edges - var edge = _ele2; - var fields = ['source', 'target']; - var fieldsLength = fields.length; - var badSourceOrTarget = false; - - for (var j = 0; j < fieldsLength; j++) { - var field = fields[j]; - var val = _data3[field]; - - if (number(val)) { - val = _data3[field] = '' + _data3[field]; // now string - } - - if (val == null || val === '') { - // can't create if source or target is not defined properly - error('Can not create edge `' + id + '` with unspecified ' + field); - badSourceOrTarget = true; - } else if (!cy.hasElementWithId(val)) { - // can't create edge if one of its nodes doesn't exist - error('Can not create edge `' + id + '` with nonexistant ' + field + ' `' + val + '`'); - badSourceOrTarget = true; - } - } - - if (badSourceOrTarget) { - removeFromElements(); - continue; - } // can't create this - - - var src = cy.getElementById(_data3.source); - var tgt = cy.getElementById(_data3.target); // only one edge in node if loop - - if (src.same(tgt)) { - src._private.edges.push(edge); - } else { - src._private.edges.push(edge); - - tgt._private.edges.push(edge); - } - - edge._private.source = src; - edge._private.target = tgt; - } // if is edge - // create mock ids / indexes maps for element so it can be used like collections - - - _private.map = new Map$1$1(); - - _private.map.set(id, { - ele: _ele2, - index: 0 - }); - - _private.removed = false; - - if (addToPool) { - cy.addToPool(_ele2); - } - } // for each element - // do compound node sanity checks - - - for (var _i4 = 0; _i4 < nodes.length; _i4++) { - // each node - var node = nodes[_i4]; - var _data4 = node._private.data; - - if (number(_data4.parent)) { - // then automake string - _data4.parent = '' + _data4.parent; - } - - var parentId = _data4.parent; - var specifiedParent = parentId != null; - - if (specifiedParent) { - var parent = cy.getElementById(parentId); - - if (parent.empty()) { - // non-existant parent; just remove it - _data4.parent = undefined; - } else { - var selfAsParent = false; - var ancestor = parent; - - while (!ancestor.empty()) { - if (node.same(ancestor)) { - // mark self as parent and remove from data - selfAsParent = true; - _data4.parent = undefined; // remove parent reference - // exit or we loop forever - - break; - } - - ancestor = ancestor.parent(); - } - - if (!selfAsParent) { - // connect with children - parent[0]._private.children.push(node); - - node._private.parent = parent[0]; // let the core know we have a compound graph - - cy_p.hasCompoundNodes = true; - } - } // else - - } // if specified parent - - } // for each node - - - if (elements.length > 0) { - var restored = elements.length === self.length ? self : new Collection(cy, elements); - - for (var _i5 = 0; _i5 < restored.length; _i5++) { - var _ele3 = restored[_i5]; - - if (_ele3.isNode()) { - continue; - } // adding an edge invalidates the traversal caches for the parallel edges - - - _ele3.parallelEdges().clearTraversalCache(); // adding an edge invalidates the traversal cache for the connected nodes - - - _ele3.source().clearTraversalCache(); - - _ele3.target().clearTraversalCache(); - } - - var toUpdateStyle; - - if (cy_p.hasCompoundNodes) { - toUpdateStyle = cy.collection().merge(restored).merge(restored.connectedNodes()).merge(restored.parent()); - } else { - toUpdateStyle = restored; - } - - toUpdateStyle.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(notifyRenderer); - - if (notifyRenderer) { - restored.emitAndNotify('add'); - } else if (addToPool) { - restored.emit('add'); - } - } - - return self; // chainability -}; - -elesfn$u.removed = function () { - var ele = this[0]; - return ele && ele._private.removed; -}; - -elesfn$u.inside = function () { - var ele = this[0]; - return ele && !ele._private.removed; -}; - -elesfn$u.remove = function () { - var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - var removeFromPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - var self = this; - var elesToRemove = []; - var elesToRemoveIds = {}; - var cy = self._private.cy; // add connected edges - - function addConnectedEdges(node) { - var edges = node._private.edges; - - for (var i = 0; i < edges.length; i++) { - add(edges[i]); - } - } // add descendant nodes - - - function addChildren(node) { - var children = node._private.children; - - for (var i = 0; i < children.length; i++) { - add(children[i]); - } - } - - function add(ele) { - var alreadyAdded = elesToRemoveIds[ele.id()]; - - if (removeFromPool && ele.removed() || alreadyAdded) { - return; - } else { - elesToRemoveIds[ele.id()] = true; - } - - if (ele.isNode()) { - elesToRemove.push(ele); // nodes are removed last - - addConnectedEdges(ele); - addChildren(ele); - } else { - elesToRemove.unshift(ele); // edges are removed first - } - } // make the list of elements to remove - // (may be removing more than specified due to connected edges etc) - - - for (var i = 0, l = self.length; i < l; i++) { - var ele = self[i]; - add(ele); - } - - function removeEdgeRef(node, edge) { - var connectedEdges = node._private.edges; - removeFromArray(connectedEdges, edge); // removing an edges invalidates the traversal cache for its nodes - - node.clearTraversalCache(); - } - - function removeParallelRef(pllEdge) { - // removing an edge invalidates the traversal caches for the parallel edges - pllEdge.clearTraversalCache(); - } - - var alteredParents = []; - alteredParents.ids = {}; - - function removeChildRef(parent, ele) { - ele = ele[0]; - parent = parent[0]; - var children = parent._private.children; - var pid = parent.id(); - removeFromArray(children, ele); // remove parent => child ref - - ele._private.parent = null; // remove child => parent ref - - if (!alteredParents.ids[pid]) { - alteredParents.ids[pid] = true; - alteredParents.push(parent); - } - } - - self.dirtyCompoundBoundsCache(); - - if (removeFromPool) { - cy.removeFromPool(elesToRemove); // remove from core pool - } - - for (var _i6 = 0; _i6 < elesToRemove.length; _i6++) { - var _ele4 = elesToRemove[_i6]; - - if (_ele4.isEdge()) { - // remove references to this edge in its connected nodes - var src = _ele4.source()[0]; - - var tgt = _ele4.target()[0]; - - removeEdgeRef(src, _ele4); - removeEdgeRef(tgt, _ele4); - - var pllEdges = _ele4.parallelEdges(); - - for (var j = 0; j < pllEdges.length; j++) { - var pllEdge = pllEdges[j]; - removeParallelRef(pllEdge); - - if (pllEdge.isBundledBezier()) { - pllEdge.dirtyBoundingBoxCache(); - } - } - } else { - // remove reference to parent - var parent = _ele4.parent(); - - if (parent.length !== 0) { - removeChildRef(parent, _ele4); - } - } - - if (removeFromPool) { - // mark as removed - _ele4._private.removed = true; - } - } // check to see if we have a compound graph or not - - - var elesStillInside = cy._private.elements; - cy._private.hasCompoundNodes = false; - - for (var _i7 = 0; _i7 < elesStillInside.length; _i7++) { - var _ele5 = elesStillInside[_i7]; - - if (_ele5.isParent()) { - cy._private.hasCompoundNodes = true; - break; - } - } - - var removedElements = new Collection(this.cy(), elesToRemove); - - if (removedElements.size() > 0) { - // must manually notify since trigger won't do this automatically once removed - if (notifyRenderer) { - removedElements.emitAndNotify('remove'); - } else if (removeFromPool) { - removedElements.emit('remove'); - } - } // the parents who were modified by the removal need their style updated - - - for (var _i8 = 0; _i8 < alteredParents.length; _i8++) { - var _ele6 = alteredParents[_i8]; - - if (!removeFromPool || !_ele6.removed()) { - _ele6.updateStyle(); - } - } - - return removedElements; -}; - -elesfn$u.move = function (struct) { - var cy = this._private.cy; - var eles = this; // just clean up refs, caches, etc. in the same way as when removing and then restoring - // (our calls to remove/restore do not remove from the graph or make events) - - var notifyRenderer = false; - var modifyPool = false; - - var toString = function toString(id) { - return id == null ? id : '' + id; - }; // id must be string - - - if (struct.source !== undefined || struct.target !== undefined) { - var srcId = toString(struct.source); - var tgtId = toString(struct.target); - var srcExists = srcId != null && cy.hasElementWithId(srcId); - var tgtExists = tgtId != null && cy.hasElementWithId(tgtId); - - if (srcExists || tgtExists) { - cy.batch(function () { - // avoid duplicate style updates - eles.remove(notifyRenderer, modifyPool); // clean up refs etc. - - eles.emitAndNotify('moveout'); - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var _data5 = ele._private.data; - - if (ele.isEdge()) { - if (srcExists) { - _data5.source = srcId; - } - - if (tgtExists) { - _data5.target = tgtId; - } - } - } - - eles.restore(notifyRenderer, modifyPool); // make new refs, style, etc. - }); - eles.emitAndNotify('move'); - } - } else if (struct.parent !== undefined) { - // move node to new parent - var parentId = toString(struct.parent); - var parentExists = parentId === null || cy.hasElementWithId(parentId); - - if (parentExists) { - var pidToAssign = parentId === null ? undefined : parentId; - cy.batch(function () { - // avoid duplicate style updates - var updated = eles.remove(notifyRenderer, modifyPool); // clean up refs etc. - - updated.emitAndNotify('moveout'); - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var _data6 = ele._private.data; - - if (ele.isNode()) { - _data6.parent = pidToAssign; - } - } - - updated.restore(notifyRenderer, modifyPool); // make new refs, style, etc. - }); - eles.emitAndNotify('move'); - } - } - - return this; -}; - -[elesfn$c, elesfn$d, elesfn$e, elesfn$f, elesfn$g, data$1, elesfn$i, dimensions, elesfn$m, elesfn$n, elesfn$o, elesfn$p, elesfn$q, elesfn$r, elesfn$s, elesfn$t].forEach(function (props) { - extend(elesfn$u, props); -}); - -var corefn = { - add: function add(opts) { - var elements; - var cy = this; // add the elements - - if (elementOrCollection(opts)) { - var eles = opts; - - if (eles._private.cy === cy) { - // same instance => just restore - elements = eles.restore(); - } else { - // otherwise, copy from json - var jsons = []; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - jsons.push(ele.json()); - } - - elements = new Collection(cy, jsons); - } - } // specify an array of options - else if (array(opts)) { - var _jsons = opts; - elements = new Collection(cy, _jsons); - } // specify via opts.nodes and opts.edges - else if (plainObject(opts) && (array(opts.nodes) || array(opts.edges))) { - var elesByGroup = opts; - var _jsons2 = []; - var grs = ['nodes', 'edges']; - - for (var _i = 0, il = grs.length; _i < il; _i++) { - var group = grs[_i]; - var elesArray = elesByGroup[group]; - - if (array(elesArray)) { - for (var j = 0, jl = elesArray.length; j < jl; j++) { - var json = extend({ - group: group - }, elesArray[j]); - - _jsons2.push(json); - } - } - } - - elements = new Collection(cy, _jsons2); - } // specify options for one element - else { - var _json = opts; - elements = new Element$1(cy, _json).collection(); - } - - return elements; - }, - remove: function remove(collection) { - if (elementOrCollection(collection)) ; else if (string(collection)) { - var selector = collection; - collection = this.$(selector); - } - - return collection.remove(); - } -}; - -/* global Float32Array */ - +var cH=function e(t){if(!(this instanceof e))return new e(t);this.id="Thenable/1.0.7",this.state=0,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof t&&t.call(this,this.fulfill.bind(this),this.reject.bind(this))};cH.prototype={fulfill:function(e){return hH(this,1,"fulfillValue",e)},reject:function(e){return hH(this,2,"rejectReason",e)},then:function(e,t){var C=this,i=new cH;return C.onFulfilled.push(pH(e,i,"fulfill")),C.onRejected.push(pH(t,i,"reject")),mH(C),i.proxy}};var hH=function(e,t,C,i){return 0===e.state&&(e.state=t,e[C]=i,mH(e)),e},mH=function(e){1===e.state?fH(e,"onFulfilled",e.fulfillValue):2===e.state&&fH(e,"onRejected",e.rejectReason)},fH=function(e,t,C){if(0!==e[t].length){var i=e[t];e[t]=[];var H=function(){for(var e=0;e0:void 0}},clearQueue:function(){return function(){var e=this,t=void 0!==e.length?e:[e];if(!(this._private.cy||this).styleEnabled())return this;for(var C=0;C0&&this.spawn(i).updateStyle().emit("class"),t},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes.has(e)},toggleClass:function(e,t){Ct(e)||(e=e.match(/\S+/g)||[]);for(var C=this,i=void 0===t,H=[],n=0,V=C.length;n0&&this.spawn(H).updateStyle().emit("class"),C},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var C=this;if(null==t)t=250;else if(0===t)return C;return C.addClass(e),setTimeout((function(){C.removeClass(e)}),t),C}};kH.className=kH.classNames=kH.classes;var EH={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:"\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'",number:ht,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};EH.variable="(?:[\\w-]|(?:\\\\"+EH.metaChar+"))+",EH.value=EH.string+"|"+EH.number,EH.className=EH.variable,EH.id=EH.variable,function(){var e,t,C;for(e=EH.comparatorOp.split("|"),C=0;C=0||"="!==t&&(EH.comparatorOp+="|\\!"+t)}();var PH=0,TH=1,_H=2,BH=3,DH=4,NH=5,RH=6,FH=7,IH=8,zH=9,jH=10,GH=11,WH=12,$H=13,UH=14,YH=15,XH=16,qH=17,QH=18,KH=19,JH=20,en=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort((function(e,t){return function(e,t){return-1*mt(e,t)}(e.selector,t.selector)})),tn=function(){for(var e,t={},C=0;C0&&o.edgeCount>0)return Xt("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(o.edgeCount>1)return Xt("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;1===o.edgeCount&&Xt("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},toString:function(){if(null!=this.toStringCache)return this.toStringCache;for(var e=function(e){return null==e?"":e},t=function(t){return et(t)?'"'+t+'"':e(t)},C=function(e){return" "+e+" "},i=function(i,n){var V=i.type,r=i.value;switch(V){case PH:var L=e(r);return L.substring(0,L.length-1);case BH:var o=i.field,a=i.operator;return"["+o+C(e(a))+t(r)+"]";case NH:var M=i.operator,s=i.field;return"["+e(M)+s+"]";case DH:return"["+i.field+"]";case RH:var l=i.operator;return"[["+i.field+C(e(l))+t(r)+"]]";case FH:return r;case IH:return"#"+r;case zH:return"."+r;case qH:case YH:return H(i.parent,n)+C(">")+H(i.child,n);case QH:case XH:return H(i.ancestor,n)+" "+H(i.descendant,n);case KH:var d=H(i.left,n),u=H(i.subject,n),A=H(i.right,n);return d+(d.length>0?" ":"")+u+A;case JH:return""}},H=function(e,t){return e.checks.reduce((function(C,H,n){return C+(t===e&&0===n?"$":"")+i(H,t)}),"")},n="",V=0;V1&&V=0&&(t=t.replace("!",""),a=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),o=!0),(V||L||o)&&(H=V||r?""+e:"",n=""+C),o&&(e=H=H.toLowerCase(),C=n=n.toLowerCase()),t){case"*=":i=H.indexOf(n)>=0;break;case"$=":i=H.indexOf(n,H.length-n.length)>=0;break;case"^=":i=0===H.indexOf(n);break;case"=":i=e===C;break;case">":M=!0,i=e>C;break;case">=":M=!0,i=e>=C;break;case"<":M=!0,i=e0;){var o=H.shift();t(o),n.add(o.id()),V&&i(H,n,o)}return e}function gn(e,t,C){if(C.isParent())for(var i=C._private.children,H=0;H1&&void 0!==arguments[1])||arguments[1];return pn(this,e,t,gn)},fn.forEachUp=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return pn(this,e,t,vn)},fn.forEachUpAndDown=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return pn(this,e,t,yn)},fn.ancestors=fn.parents,(cn=hn={data:xH.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:xH.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:xH.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:xH.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:xH.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:xH.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}}).attr=cn.data,cn.removeAttr=cn.removeData;var Zn,Sn,bn=hn,wn={};function xn(e){return function(t){var C=this;if(void 0===t&&(t=!0),0!==C.length&&C.isNode()&&!C.removed()){for(var i=0,H=C[0],n=H._private.edges,V=0;Vt})),minIndegree:On("indegree",(function(e,t){return et})),minOutdegree:On("outdegree",(function(e,t){return et}))}),ft(wn,{totalDegree:function(e){for(var t=0,C=this.nodes(),i=0;i0,a=o;o&&(L=L[0]);var M=a?L.position():{x:0,y:0};return H={x:r.x-M.x,y:r.y-M.y},void 0===e?H:H[e]}for(var s=0;s0,A=u;u&&(d=d[0]);var c=A?d.position():{x:0,y:0};void 0!==t?l.position(e,t+c[e]):void 0!==H&&l.position({x:H.x+c.x,y:H.y+c.y})}}else if(!n)return;return this}},Zn.modelPosition=Zn.point=Zn.position,Zn.modelPositions=Zn.points=Zn.positions,Zn.renderedPoint=Zn.renderedPosition,Zn.relativePoint=Zn.relativePosition;var Pn,Tn,_n=Sn;Pn=Tn={},Tn.renderedBoundingBox=function(e){var t=this.boundingBox(e),C=this.cy(),i=C.zoom(),H=C.pan(),n=t.x1*i+H.x,V=t.x2*i+H.x,r=t.y1*i+H.y,L=t.y2*i+H.y;return{x1:n,x2:V,y1:r,y2:L,w:V-n,h:L-r}},Tn.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();return t.styleEnabled()&&t.hasCompoundNodes()?(this.forEachUp((function(t){if(t.isParent()){var C=t._private;C.compoundBoundsClean=!1,C.bbCache=null,e||t.emitAndNotify("bounds")}})),this):this},Tn.updateCompoundBounds=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function C(e){if(e.isParent()){var t=e._private,C=e.children(),i="include"===e.pstyle("compound-sizing-wrt-labels").value,H={width:{val:e.pstyle("min-width").pfValue,left:e.pstyle("min-width-bias-left"),right:e.pstyle("min-width-bias-right")},height:{val:e.pstyle("min-height").pfValue,top:e.pstyle("min-height-bias-top"),bottom:e.pstyle("min-height-bias-bottom")}},n=C.boundingBox({includeLabels:i,includeOverlays:!1,useCache:!1}),V=t.position;0!==n.w&&0!==n.h||((n={w:e.pstyle("width").pfValue,h:e.pstyle("height").pfValue}).x1=V.x-n.w/2,n.x2=V.x+n.w/2,n.y1=V.y-n.h/2,n.y2=V.y+n.h/2);var r=H.width.left.value;"px"===H.width.left.units&&H.width.val>0&&(r=100*r/H.width.val);var L=H.width.right.value;"px"===H.width.right.units&&H.width.val>0&&(L=100*L/H.width.val);var o=H.height.top.value;"px"===H.height.top.units&&H.height.val>0&&(o=100*o/H.height.val);var a=H.height.bottom.value;"px"===H.height.bottom.units&&H.height.val>0&&(a=100*a/H.height.val);var M=c(H.width.val-n.w,r,L),s=M.biasDiff,l=M.biasComplementDiff,d=c(H.height.val-n.h,o,a),u=d.biasDiff,A=d.biasComplementDiff;t.autoPadding=function(e,t,C,i){if("%"!==C.units)return"px"===C.units?C.pfValue:0;switch(i){case"width":return e>0?C.pfValue*e:0;case"height":return t>0?C.pfValue*t:0;case"average":return e>0&&t>0?C.pfValue*(e+t)/2:0;case"min":return e>0&&t>0?e>t?C.pfValue*t:C.pfValue*e:0;case"max":return e>0&&t>0?e>t?C.pfValue*e:C.pfValue*t:0;default:return 0}}(n.w,n.h,e.pstyle("padding"),e.pstyle("padding-relative-to").value),t.autoWidth=Math.max(n.w,H.width.val),V.x=(-s+n.x1+n.x2+l)/2,t.autoHeight=Math.max(n.h,H.height.val),V.y=(-u+n.y1+n.y2+A)/2}function c(e,t,C){var i=0,H=0,n=t+C;return e>0&&n>0&&(i=t/n*e,H=C/n*e),{biasDiff:i,biasComplementDiff:H}}}for(var i=0;ie.x2?i:e.x2,e.y1=Ce.y2?H:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},Nn=function(e,t){return null==t?e:Dn(e,t.x1,t.y1,t.x2,t.y2)},Rn=function(e,t,C){return iC(e,t,C)},Fn=function(e,t,C){if(!t.cy().headless()){var i,H,n=t._private,V=n.rstyle,r=V.arrowWidth/2;if("none"!==t.pstyle(C+"-arrow-shape").value){"source"===C?(i=V.srcX,H=V.srcY):"target"===C?(i=V.tgtX,H=V.tgtY):(i=V.midX,H=V.midY);var L=n.arrowBounds=n.arrowBounds||{},o=L[C]=L[C]||{};o.x1=i-r,o.y1=H-r,o.x2=i+r,o.y2=H+r,o.w=o.x2-o.x1,o.h=o.y2-o.y1,NC(o,1),Dn(e,o.x1,o.y1,o.x2,o.y2)}}},In=function(e,t,C){if(!t.cy().headless()){var i;i=C?C+"-":"";var H=t._private,n=H.rstyle;if(t.pstyle(i+"label").strValue){var V,r,L,o,a=t.pstyle("text-halign"),M=t.pstyle("text-valign"),s=Rn(n,"labelWidth",C),l=Rn(n,"labelHeight",C),d=Rn(n,"labelX",C),u=Rn(n,"labelY",C),A=t.pstyle(i+"text-margin-x").pfValue,c=t.pstyle(i+"text-margin-y").pfValue,h=t.isEdge(),m=t.pstyle(i+"text-rotation"),f=t.pstyle("text-outline-width").pfValue,p=t.pstyle("text-border-width").pfValue/2,g=t.pstyle("text-background-padding").pfValue,v=l,y=s,Z=y/2,S=v/2;if(h)V=d-Z,r=d+Z,L=u-S,o=u+S;else{switch(a.value){case"left":V=d-y,r=d;break;case"center":V=d-Z,r=d+Z;break;case"right":V=d,r=d+y}switch(M.value){case"top":L=u-v,o=u;break;case"center":L=u-S,o=u+S;break;case"bottom":L=u,o=u+v}}V+=A-Math.max(f,p)-g-2,r+=A+Math.max(f,p)+g+2,L+=c-Math.max(f,p)-g-2,o+=c+Math.max(f,p)+g+2;var b=C||"main",w=H.labelBounds,x=w[b]=w[b]||{};x.x1=V,x.y1=L,x.x2=r,x.y2=o,x.w=r-V,x.h=o-L;var O=h&&"autorotate"===m.strValue,k=null!=m.pfValue&&0!==m.pfValue;if(O||k){var E=O?Rn(H.rstyle,"labelAngle",C):m.pfValue,P=Math.cos(E),T=Math.sin(E),_=(V+r)/2,B=(L+o)/2;if(!h){switch(a.value){case"left":_=r;break;case"right":_=V}switch(M.value){case"top":B=o;break;case"bottom":B=L}}var D=function(e,t){return{x:(e-=_)*P-(t-=B)*T+_,y:e*T+t*P+B}},N=D(V,L),R=D(V,o),F=D(r,L),I=D(r,o);V=Math.min(N.x,R.x,F.x,I.x),r=Math.max(N.x,R.x,F.x,I.x),L=Math.min(N.y,R.y,F.y,I.y),o=Math.max(N.y,R.y,F.y,I.y)}var z=b+"Rot",j=w[z]=w[z]||{};j.x1=V,j.y1=L,j.x2=r,j.y2=o,j.w=r-V,j.h=o-L,Dn(e,V,L,r,o),Dn(H.labelBounds.all,V,L,r,o)}return e}},zn=function(e){var t=0,C=function(e){return(e?1:0)<(i=S[1].x)){var b=C;C=i,i=b}if(H>(n=S[1].y)){var w=H;H=n,n=w}Dn(s,C-p,H-p,i+p,n+p)}}else if("bezier"===Z||"unbundled-bezier"===Z||"segments"===Z||"taxi"===Z){var x;switch(Z){case"bezier":case"unbundled-bezier":x=A.bezierPts;break;case"segments":case"taxi":x=A.linePts}if(null!=x)for(var O=0;O(i=P.x)){var T=C;C=i,i=T}if((H=E.y)>(n=P.y)){var _=H;H=n,n=_}Dn(s,C-=p,H-=p,i+=p,n+=p)}if(a&&t.includeEdges&&u&&(Fn(s,e,"mid-source"),Fn(s,e,"mid-target"),Fn(s,e,"source"),Fn(s,e,"target")),a&&"yes"===e.pstyle("ghost").value){var B=e.pstyle("ghost-offset-x").pfValue,D=e.pstyle("ghost-offset-y").pfValue;Dn(s,s.x1+B,s.y1+D,s.x2+B,s.y2+D)}var N=l.bodyBounds=l.bodyBounds||{};FC(N,s),RC(N,c),NC(N,1),a&&(C=s.x1,i=s.x2,H=s.y1,n=s.y2,Dn(s,C-f,H-f,i+f,n+f));var R=l.overlayBounds=l.overlayBounds||{};FC(R,s),RC(R,c),NC(R,1);var F=l.labelBounds=l.labelBounds||{};null!=F.all?((L=F.all).x1=1/0,L.y1=1/0,L.x2=-1/0,L.y2=-1/0,L.w=0,L.h=0):F.all=BC(),a&&t.includeLabels&&(t.includeMainLabels&&In(s,e,null),u&&(t.includeSourceLabels&&In(s,e,"source"),t.includeTargetLabels&&In(s,e,"target")))}return s.x1=Bn(s.x1),s.y1=Bn(s.y1),s.x2=Bn(s.x2),s.y2=Bn(s.y2),s.w=Bn(s.x2-s.x1),s.h=Bn(s.y2-s.y1),s.w>0&&s.h>0&&m&&(RC(s,c),NC(s,1)),s}(e,Wn),i.bbCache=C,i.bbCachePosKey=V):C=i.bbCache,!n){var a=e.isNode();C=BC(),(t.includeNodes&&a||t.includeEdges&&!a)&&(t.includeOverlays?Nn(C,i.overlayBounds):Nn(C,i.bodyBounds)),t.includeLabels&&(t.includeMainLabels&&(!H||t.includeSourceLabels&&t.includeTargetLabels)?Nn(C,i.labelBounds.all):(t.includeMainLabels&&Nn(C,i.labelBounds.mainRot),t.includeSourceLabels&&Nn(C,i.labelBounds.sourceRot),t.includeTargetLabels&&Nn(C,i.labelBounds.targetRot))),C.w=C.x2-C.x1,C.h=C.y2-C.y1}return C},Wn={includeNodes:!0,includeEdges:!0,includeLabels:!0,includeMainLabels:!0,includeSourceLabels:!0,includeTargetLabels:!0,includeOverlays:!0,useCache:!0},$n=zn(Wn),Un=eC(Wn);Tn.boundingBox=function(e){var t;if(1!==this.length||null==this[0]._private.bbCache||this[0]._private.styleDirty||void 0!==e&&void 0!==e.useCache&&!0!==e.useCache){t=BC();var C=Un(e=e||Wn),i=this;if(i.cy().styleEnabled())for(var H=0;H0&&void 0!==arguments[0]?arguments[0]:LV,t=arguments.length>1?arguments[1]:void 0,C=0;C=0;r--)V(r);return this},aV.removeAllListeners=function(){return this.removeListener("*")},aV.emit=aV.trigger=function(e,t,C){var i=this.listeners,H=i.length;return this.emitting++,Ct(t)||(t=[t]),lV(this,(function(e,n){null!=C&&(i=[{event:n.event,type:n.type,namespace:n.namespace,callback:C}],H=i.length);for(var V=function(C){var H=i[C];if(H.type===n.type&&(!H.namespace||H.namespace===n.namespace||".*"===H.namespace)&&e.eventMatches(e.context,H,n)){var V=[n];null!=t&&function(e,t){for(var C=0;C1&&!i){var H=this.length-1,n=this[H],V=n._private.data.id;this[H]=void 0,this[e]=n,C.set(V,{ele:n,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var t=this._private,C=e._private.data.id,i=t.map.get(C);if(!i)return this;var H=i.index;return this.unmergeAt(H),this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&et(e)){var C=e;e=t.mutableElements().filter(C)}for(var i=0;i=0;t--){e(this[t])&&this.unmergeAt(t)}return this},map:function(e,t){for(var C=[],i=this,H=0;Hi&&(i=r,C=V)}return{value:i,ele:C}},min:function(e,t){for(var C,i=1/0,H=this,n=0;n=0&&H1&&void 0!==arguments[1])||arguments[1],C=this[0],i=C.cy();if(i.styleEnabled()&&C){this.cleanStyle();var H=C._private.style[e];return null!=H?H:t?i.style().getDefaultProperty(e):null}},numericStyle:function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var C=t.pstyle(e);return void 0!==C.pfValue?C.pfValue:C.value}},numericStyleUnits:function(e){var t=this[0];if(t.cy().styleEnabled())return t?t.pstyle(e).units:void 0},renderedStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var C=this[0];return C?t.style().getRenderedStyle(C,e):void 0},style:function(e,t){var C=this.cy();if(!C.styleEnabled())return this;var i=C.style();if(it(e)){var H=e;i.applyBypass(this,H,false),this.emitAndNotify("style")}else if(et(e)){if(void 0===t){var n=this[0];return n?i.getStylePropertyValue(n,e):void 0}i.applyBypass(this,e,t,false),this.emitAndNotify("style")}else if(void 0===e){var V=this[0];return V?i.getRawStyle(V):void 0}return this},removeStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var C=t.style(),i=this;if(void 0===e)for(var H=0;H0&&t.push(a[0]),t.push(r[0])}return this.spawn(t,!0).filter(e)}),"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),NV.neighbourhood=NV.neighborhood,NV.closedNeighbourhood=NV.closedNeighborhood,NV.openNeighbourhood=NV.openNeighborhood,ft(NV,{source:mn((function(e){var t,C=this[0];return C&&(t=C._private.source||C.cy().collection()),t&&e?t.filter(e):t}),"source"),target:mn((function(e){var t,C=this[0];return C&&(t=C._private.target||C.cy().collection()),t&&e?t.filter(e):t}),"target"),sources:zV({attr:"source"}),targets:zV({attr:"target"})}),ft(NV,{edgesWith:mn(jV(),"edgesWith"),edgesTo:mn(jV({thisIsSrc:!0}),"edgesTo")}),ft(NV,{connectedEdges:mn((function(e){for(var t=[],C=0;C0);return n},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),NV.componentsOf=NV.components;var WV=function(e,t){var C=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(void 0!==e){var i=new nC,H=!1;if(t){if(t.length>0&&it(t[0])&&!rt(t[0])){H=!0;for(var n=[],V=new rC,r=0,L=t.length;r0&&void 0!==arguments[0])||arguments[0],i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],H=this,n=H.cy(),V=n._private,r=[],L=[],o=0,a=H.length;o0){for(var _=e.length===H.length?H:new WV(n,e),B=0;B<_.length;B++){var D=_[B];D.isNode()||(D.parallelEdges().clearTraversalCache(),D.source().clearTraversalCache(),D.target().clearTraversalCache())}(V.hasCompoundNodes?n.collection().merge(_).merge(_.connectedNodes()).merge(_.parent()):_).dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(C),C?_.emitAndNotify("add"):i&&_.emit("add")}return H},$V.removed=function(){var e=this[0];return e&&e._private.removed},$V.inside=function(){var e=this[0];return e&&!e._private.removed},$V.remove=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],C=this,i=[],H={},n=C._private.cy;function V(e){for(var t=e._private.edges,C=0;C0&&(e?b.emitAndNotify("remove"):t&&b.emit("remove"));for(var w=0;w 0.0) { - aB = currentT; - } else { - aA = currentT; - } - } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); - - return currentT; - } - - function getTForX(aX) { - var intervalStart = 0.0, - currentSample = 1, - lastSample = kSplineTableSize - 1; - - for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) { - intervalStart += kSampleStepSize; - } - - --currentSample; - var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]), - guessForT = intervalStart + dist * kSampleStepSize, - initialSlope = getSlope(guessForT, mX1, mX2); - - if (initialSlope >= NEWTON_MIN_SLOPE) { - return newtonRaphsonIterate(aX, guessForT); - } else if (initialSlope === 0.0) { - return guessForT; - } else { - return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize); - } - } - - var _precomputed = false; - - function precompute() { - _precomputed = true; - - if (mX1 !== mY1 || mX2 !== mY2) { - calcSampleValues(); - } - } - - var f = function f(aX) { - if (!_precomputed) { - precompute(); - } - - if (mX1 === mY1 && mX2 === mY2) { - return aX; - } - - if (aX === 0) { - return 0; - } - - if (aX === 1) { - return 1; - } - - return calcBezier(getTForX(aX), mY1, mY2); - }; - - f.getControlPoints = function () { - return [{ - x: mX1, - y: mY1 - }, { - x: mX2, - y: mY2 - }]; - }; - - var str = "generateBezier(" + [mX1, mY1, mX2, mY2] + ")"; - - f.toString = function () { - return str; - }; - - return f; -} - /*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */ - -/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass - then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */ -var generateSpringRK4 = function () { - function springAccelerationForState(state) { - return -state.tension * state.x - state.friction * state.v; - } - - function springEvaluateStateWithDerivative(initialState, dt, derivative) { - var state = { - x: initialState.x + derivative.dx * dt, - v: initialState.v + derivative.dv * dt, - tension: initialState.tension, - friction: initialState.friction - }; - return { - dx: state.v, - dv: springAccelerationForState(state) - }; - } - - function springIntegrateState(state, dt) { - var a = { - dx: state.v, - dv: springAccelerationForState(state) - }, - b = springEvaluateStateWithDerivative(state, dt * 0.5, a), - c = springEvaluateStateWithDerivative(state, dt * 0.5, b), - d = springEvaluateStateWithDerivative(state, dt, c), - dxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx), - dvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv); - state.x = state.x + dxdt * dt; - state.v = state.v + dvdt * dt; - return state; - } - - return function springRK4Factory(tension, friction, duration) { - var initState = { - x: -1, - v: 0, - tension: null, - friction: null - }, - path = [0], - time_lapsed = 0, - tolerance = 1 / 10000, - DT = 16 / 1000, - have_duration, - dt, - last_state; - tension = parseFloat(tension) || 500; - friction = parseFloat(friction) || 20; - duration = duration || null; - initState.tension = tension; - initState.friction = friction; - have_duration = duration !== null; - /* Calculate the actual time it takes for this animation to complete with the provided conditions. */ - - if (have_duration) { - /* Run the simulation without a duration. */ - time_lapsed = springRK4Factory(tension, friction); - /* Compute the adjusted time delta. */ - - dt = time_lapsed / duration * DT; - } else { - dt = DT; - } - - for (;;) { - /* Next/step function .*/ - last_state = springIntegrateState(last_state || initState, dt); - /* Store the position. */ - - path.push(1 + last_state.x); - time_lapsed += 16; - /* If the change threshold is reached, break. */ - - if (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) { - break; - } - } - /* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the - computed path and returns a snapshot of the position according to a given percentComplete. */ - - - return !have_duration ? time_lapsed : function (percentComplete) { - return path[percentComplete * (path.length - 1) | 0]; - }; - }; -}(); - -var cubicBezier = function cubicBezier(t1, p1, t2, p2) { - var bezier = generateCubicBezier(t1, p1, t2, p2); - return function (start, end, percent) { - return start + (end - start) * bezier(percent); - }; -}; - -var easings = { - 'linear': function linear(start, end, percent) { - return start + (end - start) * percent; - }, - // default easings - 'ease': cubicBezier(0.25, 0.1, 0.25, 1), - 'ease-in': cubicBezier(0.42, 0, 1, 1), - 'ease-out': cubicBezier(0, 0, 0.58, 1), - 'ease-in-out': cubicBezier(0.42, 0, 0.58, 1), - // sine - 'ease-in-sine': cubicBezier(0.47, 0, 0.745, 0.715), - 'ease-out-sine': cubicBezier(0.39, 0.575, 0.565, 1), - 'ease-in-out-sine': cubicBezier(0.445, 0.05, 0.55, 0.95), - // quad - 'ease-in-quad': cubicBezier(0.55, 0.085, 0.68, 0.53), - 'ease-out-quad': cubicBezier(0.25, 0.46, 0.45, 0.94), - 'ease-in-out-quad': cubicBezier(0.455, 0.03, 0.515, 0.955), - // cubic - 'ease-in-cubic': cubicBezier(0.55, 0.055, 0.675, 0.19), - 'ease-out-cubic': cubicBezier(0.215, 0.61, 0.355, 1), - 'ease-in-out-cubic': cubicBezier(0.645, 0.045, 0.355, 1), - // quart - 'ease-in-quart': cubicBezier(0.895, 0.03, 0.685, 0.22), - 'ease-out-quart': cubicBezier(0.165, 0.84, 0.44, 1), - 'ease-in-out-quart': cubicBezier(0.77, 0, 0.175, 1), - // quint - 'ease-in-quint': cubicBezier(0.755, 0.05, 0.855, 0.06), - 'ease-out-quint': cubicBezier(0.23, 1, 0.32, 1), - 'ease-in-out-quint': cubicBezier(0.86, 0, 0.07, 1), - // expo - 'ease-in-expo': cubicBezier(0.95, 0.05, 0.795, 0.035), - 'ease-out-expo': cubicBezier(0.19, 1, 0.22, 1), - 'ease-in-out-expo': cubicBezier(1, 0, 0, 1), - // circ - 'ease-in-circ': cubicBezier(0.6, 0.04, 0.98, 0.335), - 'ease-out-circ': cubicBezier(0.075, 0.82, 0.165, 1), - 'ease-in-out-circ': cubicBezier(0.785, 0.135, 0.15, 0.86), - // user param easings... - 'spring': function spring(tension, friction, duration) { - if (duration === 0) { - // can't get a spring w/ duration 0 - return easings.linear; // duration 0 => jump to end so impl doesn't matter - } - - var spring = generateSpringRK4(tension, friction, duration); - return function (start, end, percent) { - return start + (end - start) * spring(percent); - }; - }, - 'cubic-bezier': cubicBezier -}; - -function getEasedValue(type, start, end, percent, easingFn) { - if (percent === 1) { - return end; - } - - if (start === end) { - return end; - } - - var val = easingFn(start, end, percent); - - if (type == null) { - return val; - } - - if (type.roundValue || type.color) { - val = Math.round(val); - } - - if (type.min !== undefined) { - val = Math.max(val, type.min); - } - - if (type.max !== undefined) { - val = Math.min(val, type.max); - } - - return val; -} - -function getValue$1(prop, spec) { - if (prop.pfValue != null || prop.value != null) { - if (prop.pfValue != null && (spec == null || spec.type.units !== '%')) { - return prop.pfValue; - } else { - return prop.value; - } - } else { - return prop; - } -} - -function ease(startProp, endProp, percent, easingFn, propSpec) { - var type = propSpec != null ? propSpec.type : null; - - if (percent < 0) { - percent = 0; - } else if (percent > 1) { - percent = 1; - } - - var start = getValue$1(startProp, propSpec); - var end = getValue$1(endProp, propSpec); - - if (number(start) && number(end)) { - return getEasedValue(type, start, end, percent, easingFn); - } else if (array(start) && array(end)) { - var easedArr = []; - - for (var i = 0; i < end.length; i++) { - var si = start[i]; - var ei = end[i]; - - if (si != null && ei != null) { - var val = getEasedValue(type, si, ei, percent, easingFn); - easedArr.push(val); - } else { - easedArr.push(ei); - } - } - - return easedArr; - } - - return undefined; -} - -function step(self, ani, now, isCore) { - var isEles = !isCore; - var _p = self._private; - var ani_p = ani._private; - var pEasing = ani_p.easing; - var startTime = ani_p.startTime; - var cy = isCore ? self : self.cy(); - var style = cy.style(); - - if (!ani_p.easingImpl) { - if (pEasing == null) { - // use default - ani_p.easingImpl = easings['linear']; - } else { - // then define w/ name - var easingVals; - - if (string(pEasing)) { - var easingProp = style.parse('transition-timing-function', pEasing); - easingVals = easingProp.value; - } else { - // then assume preparsed array - easingVals = pEasing; - } - - var name, args; - - if (string(easingVals)) { - name = easingVals; - args = []; - } else { - name = easingVals[1]; - args = easingVals.slice(2).map(function (n) { - return +n; - }); - } - - if (args.length > 0) { - // create with args - if (name === 'spring') { - args.push(ani_p.duration); // need duration to generate spring - } - - ani_p.easingImpl = easings[name].apply(null, args); - } else { - // static impl by name - ani_p.easingImpl = easings[name]; - } - } - } - - var easing = ani_p.easingImpl; - var percent; - - if (ani_p.duration === 0) { - percent = 1; - } else { - percent = (now - startTime) / ani_p.duration; - } - - if (ani_p.applying) { - percent = ani_p.progress; - } - - if (percent < 0) { - percent = 0; - } else if (percent > 1) { - percent = 1; - } - - if (ani_p.delay == null) { - // then update - var startPos = ani_p.startPosition; - var endPos = ani_p.position; - - if (endPos && isEles && !self.locked()) { - var newPos = {}; - - if (valid(startPos.x, endPos.x)) { - newPos.x = ease(startPos.x, endPos.x, percent, easing); - } - - if (valid(startPos.y, endPos.y)) { - newPos.y = ease(startPos.y, endPos.y, percent, easing); - } - - self.position(newPos); - } - - var startPan = ani_p.startPan; - var endPan = ani_p.pan; - var pan = _p.pan; - var animatingPan = endPan != null && isCore; - - if (animatingPan) { - if (valid(startPan.x, endPan.x)) { - pan.x = ease(startPan.x, endPan.x, percent, easing); - } - - if (valid(startPan.y, endPan.y)) { - pan.y = ease(startPan.y, endPan.y, percent, easing); - } - - self.emit('pan'); - } - - var startZoom = ani_p.startZoom; - var endZoom = ani_p.zoom; - var animatingZoom = endZoom != null && isCore; - - if (animatingZoom) { - if (valid(startZoom, endZoom)) { - _p.zoom = bound(_p.minZoom, ease(startZoom, endZoom, percent, easing), _p.maxZoom); - } - - self.emit('zoom'); - } - - if (animatingPan || animatingZoom) { - self.emit('viewport'); - } - - var props = ani_p.style; - - if (props && props.length > 0 && isEles) { - for (var i = 0; i < props.length; i++) { - var prop = props[i]; - var _name = prop.name; - var end = prop; - var start = ani_p.startStyle[_name]; - var propSpec = style.properties[start.name]; - var easedVal = ease(start, end, percent, easing, propSpec); - style.overrideBypass(self, _name, easedVal); - } // for props - - - self.emit('style'); - } // if - - } - - ani_p.progress = percent; - return percent; -} - -function valid(start, end) { - if (start == null || end == null) { - return false; - } - - if (number(start) && number(end)) { - return true; - } else if (start && end) { - return true; - } - - return false; -} - -function startAnimation(self, ani, now, isCore) { - var ani_p = ani._private; - ani_p.started = true; - ani_p.startTime = now - ani_p.progress * ani_p.duration; -} - -function stepAll(now, cy) { - var eles = cy._private.aniEles; - var doneEles = []; - - function stepOne(ele, isCore) { - var _p = ele._private; - var current = _p.animation.current; - var queue = _p.animation.queue; - var ranAnis = false; // if nothing currently animating, get something from the queue - - if (current.length === 0) { - var next = queue.shift(); - - if (next) { - current.push(next); - } - } - - var callbacks = function callbacks(_callbacks) { - for (var j = _callbacks.length - 1; j >= 0; j--) { - var cb = _callbacks[j]; - cb(); - } - - _callbacks.splice(0, _callbacks.length); - }; // step and remove if done - - - for (var i = current.length - 1; i >= 0; i--) { - var ani = current[i]; - var ani_p = ani._private; - - if (ani_p.stopped) { - current.splice(i, 1); - ani_p.hooked = false; - ani_p.playing = false; - ani_p.started = false; - callbacks(ani_p.frames); - continue; - } - - if (!ani_p.playing && !ani_p.applying) { - continue; - } // an apply() while playing shouldn't do anything - - - if (ani_p.playing && ani_p.applying) { - ani_p.applying = false; - } - - if (!ani_p.started) { - startAnimation(ele, ani, now); - } - - step(ele, ani, now, isCore); - - if (ani_p.applying) { - ani_p.applying = false; - } - - callbacks(ani_p.frames); - - if (ani_p.step != null) { - ani_p.step(now); - } - - if (ani.completed()) { - current.splice(i, 1); - ani_p.hooked = false; - ani_p.playing = false; - ani_p.started = false; - callbacks(ani_p.completes); - } - - ranAnis = true; - } - - if (!isCore && current.length === 0 && queue.length === 0) { - doneEles.push(ele); - } - - return ranAnis; - } // stepElement - // handle all eles - - - var ranEleAni = false; - - for (var e = 0; e < eles.length; e++) { - var ele = eles[e]; - var handledThisEle = stepOne(ele); - ranEleAni = ranEleAni || handledThisEle; - } // each element - - - var ranCoreAni = stepOne(cy, true); // notify renderer - - if (ranEleAni || ranCoreAni) { - if (eles.length > 0) { - cy.notify('draw', eles); - } else { - cy.notify('draw'); - } - } // remove elements from list of currently animating if its queues are empty - - - eles.unmerge(doneEles); - cy.emit('step'); -} // stepAll - -var corefn$1 = { - // pull in animation functions - animate: define$3.animate(), - animation: define$3.animation(), - animated: define$3.animated(), - clearQueue: define$3.clearQueue(), - delay: define$3.delay(), - delayAnimation: define$3.delayAnimation(), - stop: define$3.stop(), - addToAnimationPool: function addToAnimationPool(eles) { - var cy = this; - - if (!cy.styleEnabled()) { - return; - } // save cycles when no style used - - - cy._private.aniEles.merge(eles); - }, - stopAnimationLoop: function stopAnimationLoop() { - this._private.animationsRunning = false; - }, - startAnimationLoop: function startAnimationLoop() { - var cy = this; - cy._private.animationsRunning = true; - - if (!cy.styleEnabled()) { - return; - } // save cycles when no style used - // NB the animation loop will exec in headless environments if style enabled - // and explicit cy.destroy() is necessary to stop the loop - - - function headlessStep() { - if (!cy._private.animationsRunning) { - return; - } - - requestAnimationFrame$1(function animationStep(now) { - stepAll(now, cy); - headlessStep(); - }); - } - - var renderer = cy.renderer(); - - if (renderer && renderer.beforeRender) { - // let the renderer schedule animations - renderer.beforeRender(function rendererAnimationStep(willDraw, now) { - stepAll(now, cy); - }, renderer.beforeRenderPriorities.animations); - } else { - // manage the animation loop ourselves - headlessStep(); // first call - } - } -}; - -var emitterOptions$1 = { - qualifierCompare: function qualifierCompare(selector1, selector2) { - if (selector1 == null || selector2 == null) { - return selector1 == null && selector2 == null; - } else { - return selector1.sameText(selector2); - } - }, - eventMatches: function eventMatches(cy, listener, eventObj) { - var selector = listener.qualifier; - - if (selector != null) { - return cy !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target); - } - - return true; - }, - addEventFields: function addEventFields(cy, evt) { - evt.cy = cy; - evt.target = cy; - }, - callbackContext: function callbackContext(cy, listener, eventObj) { - return listener.qualifier != null ? eventObj.target : cy; - } -}; - -var argSelector$1 = function argSelector(arg) { - if (string(arg)) { - return new Selector(arg); - } else { - return arg; - } -}; - -var elesfn$v = { - createEmitter: function createEmitter() { - var _p = this._private; - - if (!_p.emitter) { - _p.emitter = new Emitter(emitterOptions$1, this); - } - - return this; - }, - emitter: function emitter() { - return this._private.emitter; - }, - on: function on(events, selector, callback) { - this.emitter().on(events, argSelector$1(selector), callback); - return this; - }, - removeListener: function removeListener(events, selector, callback) { - this.emitter().removeListener(events, argSelector$1(selector), callback); - return this; - }, - removeAllListeners: function removeAllListeners() { - this.emitter().removeAllListeners(); - return this; - }, - one: function one(events, selector, callback) { - this.emitter().one(events, argSelector$1(selector), callback); - return this; - }, - once: function once(events, selector, callback) { - this.emitter().one(events, argSelector$1(selector), callback); - return this; - }, - emit: function emit(events, extraParams) { - this.emitter().emit(events, extraParams); - return this; - }, - emitAndNotify: function emitAndNotify(event, eles) { - this.emit(event); - this.notify(event, eles); - return this; - } -}; -define$3.eventAliasesOn(elesfn$v); - -var corefn$2 = { - png: function png(options) { - var renderer = this._private.renderer; - options = options || {}; - return renderer.png(options); - }, - jpg: function jpg(options) { - var renderer = this._private.renderer; - options = options || {}; - options.bg = options.bg || '#fff'; - return renderer.jpg(options); - } -}; -corefn$2.jpeg = corefn$2.jpg; - -var corefn$3 = { - layout: function layout(options) { - var cy = this; - - if (options == null) { - error('Layout options must be specified to make a layout'); - return; - } - - if (options.name == null) { - error('A `name` must be specified to make a layout'); - return; - } - - var name = options.name; - var Layout = cy.extension('layout', name); - - if (Layout == null) { - error('No such layout `' + name + '` found. Did you forget to import it and `cytoscape.use()` it?'); - return; - } - - var eles; - - if (string(options.eles)) { - eles = cy.$(options.eles); - } else { - eles = options.eles != null ? options.eles : cy.$(); - } - - var layout = new Layout(extend({}, options, { - cy: cy, - eles: eles - })); - return layout; - } -}; -corefn$3.createLayout = corefn$3.makeLayout = corefn$3.layout; - -var corefn$4 = { - notify: function notify(eventName, eventEles) { - var _p = this._private; - - if (this.batching()) { - _p.batchNotifications = _p.batchNotifications || {}; - var eles = _p.batchNotifications[eventName] = _p.batchNotifications[eventName] || this.collection(); - - if (eventEles != null) { - eles.merge(eventEles); - } - - return; // notifications are disabled during batching - } - - if (!_p.notificationsEnabled) { - return; - } // exit on disabled - - - var renderer = this.renderer(); // exit if destroy() called on core or renderer in between frames #1499 #1528 - - if (this.destroyed() || !renderer) { - return; - } - - renderer.notify(eventName, eventEles); - }, - notifications: function notifications(bool) { - var p = this._private; - - if (bool === undefined) { - return p.notificationsEnabled; - } else { - p.notificationsEnabled = bool ? true : false; - } - - return this; - }, - noNotifications: function noNotifications(callback) { - this.notifications(false); - callback(); - this.notifications(true); - }, - batching: function batching() { - return this._private.batchCount > 0; - }, - startBatch: function startBatch() { - var _p = this._private; - - if (_p.batchCount == null) { - _p.batchCount = 0; - } - - if (_p.batchCount === 0) { - _p.batchStyleEles = this.collection(); - _p.batchNotifications = {}; - } - - _p.batchCount++; - return this; - }, - endBatch: function endBatch() { - var _p = this._private; - - if (_p.batchCount === 0) { - return this; - } - - _p.batchCount--; - - if (_p.batchCount === 0) { - // update style for dirty eles - _p.batchStyleEles.updateStyle(); - - var renderer = this.renderer(); // notify the renderer of queued eles and event types - - Object.keys(_p.batchNotifications).forEach(function (eventName) { - var eles = _p.batchNotifications[eventName]; - - if (eles.empty()) { - renderer.notify(eventName); - } else { - renderer.notify(eventName, eles); - } - }); - } - - return this; - }, - batch: function batch(callback) { - this.startBatch(); - callback(); - this.endBatch(); - return this; - }, - // for backwards compatibility - batchData: function batchData(map) { - var cy = this; - return this.batch(function () { - var ids = Object.keys(map); - - for (var i = 0; i < ids.length; i++) { - var id = ids[i]; - var data = map[id]; - var ele = cy.getElementById(id); - ele.data(data); - } - }); - } -}; - -var rendererDefaults = defaults$1({ - hideEdgesOnViewport: false, - textureOnViewport: false, - motionBlur: false, - motionBlurOpacity: 0.05, - pixelRatio: undefined, - desktopTapThreshold: 4, - touchTapThreshold: 8, - wheelSensitivity: 1, - debug: false, - showFps: false -}); -var corefn$5 = { - renderTo: function renderTo(context, zoom, pan, pxRatio) { - var r = this._private.renderer; - r.renderTo(context, zoom, pan, pxRatio); - return this; - }, - renderer: function renderer() { - return this._private.renderer; - }, - forceRender: function forceRender() { - this.notify('draw'); - return this; - }, - resize: function resize() { - this.invalidateSize(); - this.emitAndNotify('resize'); - return this; - }, - initRenderer: function initRenderer(options) { - var cy = this; - var RendererProto = cy.extension('renderer', options.name); - - if (RendererProto == null) { - error("Can not initialise: No such renderer `".concat(options.name, "` found. Did you forget to import it and `cytoscape.use()` it?")); - return; - } - - if (options.wheelSensitivity !== undefined) { - warn("You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine."); - } - - var rOpts = rendererDefaults(options); - rOpts.cy = cy; - cy._private.renderer = new RendererProto(rOpts); - this.notify('init'); - }, - destroyRenderer: function destroyRenderer() { - var cy = this; - cy.notify('destroy'); // destroy the renderer - - var domEle = cy.container(); - - if (domEle) { - domEle._cyreg = null; - - while (domEle.childNodes.length > 0) { - domEle.removeChild(domEle.childNodes[0]); - } - } - - cy._private.renderer = null; // to be extra safe, remove the ref - - cy.mutableElements().forEach(function (ele) { - var _p = ele._private; - _p.rscratch = {}; - _p.rstyle = {}; - _p.animation.current = []; - _p.animation.queue = []; - }); - }, - onRender: function onRender(fn) { - return this.on('render', fn); - }, - offRender: function offRender(fn) { - return this.off('render', fn); - } -}; -corefn$5.invalidateDimensions = corefn$5.resize; - -var corefn$6 = { - // get a collection - // - empty collection on no args - // - collection of elements in the graph on selector arg - // - guarantee a returned collection when elements or collection specified - collection: function collection(eles, opts) { - if (string(eles)) { - return this.$(eles); - } else if (elementOrCollection(eles)) { - return eles.collection(); - } else if (array(eles)) { - return new Collection(this, eles, opts); - } - - return new Collection(this); - }, - nodes: function nodes(selector) { - var nodes = this.$(function (ele) { - return ele.isNode(); - }); - - if (selector) { - return nodes.filter(selector); - } - - return nodes; - }, - edges: function edges(selector) { - var edges = this.$(function (ele) { - return ele.isEdge(); - }); - - if (selector) { - return edges.filter(selector); - } - - return edges; - }, - // search the graph like jQuery - $: function $(selector) { - var eles = this._private.elements; - - if (selector) { - return eles.filter(selector); - } else { - return eles.spawnSelf(); - } - }, - mutableElements: function mutableElements() { - return this._private.elements; - } -}; // aliases - -corefn$6.elements = corefn$6.filter = corefn$6.$; - -var styfn = {}; // keys for style blocks, e.g. ttfftt - -var TRUE = 't'; -var FALSE = 'f'; // (potentially expensive calculation) -// apply the style to the element based on -// - its bypass -// - what selectors match it - -styfn.apply = function (eles) { - var self = this; - var _p = self._private; - var cy = _p.cy; - var updatedEles = cy.collection(); - - for (var ie = 0; ie < eles.length; ie++) { - var ele = eles[ie]; - var cxtMeta = self.getContextMeta(ele); - - if (cxtMeta.empty) { - continue; - } - - var cxtStyle = self.getContextStyle(cxtMeta); - var app = self.applyContextStyle(cxtMeta, cxtStyle, ele); - - if (ele._private.appliedInitStyle) { - self.updateTransitions(ele, app.diffProps); - } else { - ele._private.appliedInitStyle = true; - } - - var hintsDiff = self.updateStyleHints(ele); - - if (hintsDiff) { - updatedEles.push(ele); - } - } // for elements - - - return updatedEles; -}; - -styfn.getPropertiesDiff = function (oldCxtKey, newCxtKey) { - var self = this; - var cache = self._private.propDiffs = self._private.propDiffs || {}; - var dualCxtKey = oldCxtKey + '-' + newCxtKey; - var cachedVal = cache[dualCxtKey]; - - if (cachedVal) { - return cachedVal; - } - - var diffProps = []; - var addedProp = {}; - - for (var i = 0; i < self.length; i++) { - var cxt = self[i]; - var oldHasCxt = oldCxtKey[i] === TRUE; - var newHasCxt = newCxtKey[i] === TRUE; - var cxtHasDiffed = oldHasCxt !== newHasCxt; - var cxtHasMappedProps = cxt.mappedProperties.length > 0; - - if (cxtHasDiffed || newHasCxt && cxtHasMappedProps) { - var props = void 0; - - if (cxtHasDiffed && cxtHasMappedProps) { - props = cxt.properties; // suffices b/c mappedProperties is a subset of properties - } else if (cxtHasDiffed) { - props = cxt.properties; // need to check them all - } else if (cxtHasMappedProps) { - props = cxt.mappedProperties; // only need to check mapped - } - - for (var j = 0; j < props.length; j++) { - var prop = props[j]; - var name = prop.name; // if a later context overrides this property, then the fact that this context has switched/diffed doesn't matter - // (semi expensive check since it makes this function O(n^2) on context length, but worth it since overall result - // is cached) - - var laterCxtOverrides = false; - - for (var k = i + 1; k < self.length; k++) { - var laterCxt = self[k]; - var hasLaterCxt = newCxtKey[k] === TRUE; - - if (!hasLaterCxt) { - continue; - } // can't override unless the context is active - - - laterCxtOverrides = laterCxt.properties[prop.name] != null; - - if (laterCxtOverrides) { - break; - } // exit early as long as one later context overrides - - } - - if (!addedProp[name] && !laterCxtOverrides) { - addedProp[name] = true; - diffProps.push(name); - } - } // for props - - } // if - - } // for contexts - - - cache[dualCxtKey] = diffProps; - return diffProps; -}; - -styfn.getContextMeta = function (ele) { - var self = this; - var cxtKey = ''; - var diffProps; - var prevKey = ele._private.styleCxtKey || ''; // get the cxt key - - for (var i = 0; i < self.length; i++) { - var context = self[i]; - var contextSelectorMatches = context.selector && context.selector.matches(ele); // NB: context.selector may be null for 'core' - - if (contextSelectorMatches) { - cxtKey += TRUE; - } else { - cxtKey += FALSE; - } - } // for context - - - diffProps = self.getPropertiesDiff(prevKey, cxtKey); - ele._private.styleCxtKey = cxtKey; - return { - key: cxtKey, - diffPropNames: diffProps, - empty: diffProps.length === 0 - }; -}; // gets a computed ele style object based on matched contexts - - -styfn.getContextStyle = function (cxtMeta) { - var cxtKey = cxtMeta.key; - var self = this; - var cxtStyles = this._private.contextStyles = this._private.contextStyles || {}; // if already computed style, returned cached copy - - if (cxtStyles[cxtKey]) { - return cxtStyles[cxtKey]; - } - - var style = { - _private: { - key: cxtKey - } - }; - - for (var i = 0; i < self.length; i++) { - var cxt = self[i]; - var hasCxt = cxtKey[i] === TRUE; - - if (!hasCxt) { - continue; - } - - for (var j = 0; j < cxt.properties.length; j++) { - var prop = cxt.properties[j]; - style[prop.name] = prop; - } - } - - cxtStyles[cxtKey] = style; - return style; -}; - -styfn.applyContextStyle = function (cxtMeta, cxtStyle, ele) { - var self = this; - var diffProps = cxtMeta.diffPropNames; - var retDiffProps = {}; - var types = self.types; - - for (var i = 0; i < diffProps.length; i++) { - var diffPropName = diffProps[i]; - var cxtProp = cxtStyle[diffPropName]; - var eleProp = ele.pstyle(diffPropName); - - if (!cxtProp) { - // no context prop means delete - if (!eleProp) { - continue; // no existing prop means nothing needs to be removed - // nb affects initial application on mapped values like control-point-distances - } else if (eleProp.bypass) { - cxtProp = { - name: diffPropName, - deleteBypassed: true - }; - } else { - cxtProp = { - name: diffPropName, - "delete": true - }; - } - } // save cycles when the context prop doesn't need to be applied - - - if (eleProp === cxtProp) { - continue; - } // save cycles when a mapped context prop doesn't need to be applied - - - if (cxtProp.mapped === types.fn // context prop is function mapper - && eleProp != null // some props can be null even by default (e.g. a prop that overrides another one) - && eleProp.mapping != null // ele prop is a concrete value from from a mapper - && eleProp.mapping.value === cxtProp.value // the current prop on the ele is a flat prop value for the function mapper - ) { - // NB don't write to cxtProp, as it's shared among eles (stored in stylesheet) - var mapping = eleProp.mapping; // can write to mapping, as it's a per-ele copy - - var fnValue = mapping.fnValue = cxtProp.value(ele); // temporarily cache the value in case of a miss - - if (fnValue === mapping.prevFnValue) { - continue; - } - } - - var retDiffProp = retDiffProps[diffPropName] = { - prev: eleProp - }; - self.applyParsedProperty(ele, cxtProp); - retDiffProp.next = ele.pstyle(diffPropName); - - if (retDiffProp.next && retDiffProp.next.bypass) { - retDiffProp.next = retDiffProp.next.bypassed; - } - } - - return { - diffProps: retDiffProps - }; -}; - -styfn.updateStyleHints = function (ele) { - var _p = ele._private; - var self = this; - var propNames = self.propertyGroupNames; - var propGrKeys = self.propertyGroupKeys; - - var propHash = function propHash(ele, propNames, seedKey) { - return self.getPropertiesHash(ele, propNames, seedKey); - }; - - var oldStyleKey = _p.styleKey; - - if (ele.removed()) { - return false; - } - - var isNode = _p.group === 'nodes'; // get the style key hashes per prop group - // but lazily -- only use non-default prop values to reduce the number of hashes - // - - var overriddenStyles = ele._private.style; - propNames = Object.keys(overriddenStyles); - - for (var i = 0; i < propGrKeys.length; i++) { - var grKey = propGrKeys[i]; - _p.styleKeys[grKey] = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]; - } - - var updateGrKey1 = function updateGrKey1(val, grKey) { - return _p.styleKeys[grKey][0] = hashInt(val, _p.styleKeys[grKey][0]); - }; - - var updateGrKey2 = function updateGrKey2(val, grKey) { - return _p.styleKeys[grKey][1] = hashIntAlt(val, _p.styleKeys[grKey][1]); - }; - - var updateGrKey = function updateGrKey(val, grKey) { - updateGrKey1(val, grKey); - updateGrKey2(val, grKey); - }; - - var updateGrKeyWStr = function updateGrKeyWStr(strVal, grKey) { - for (var j = 0; j < strVal.length; j++) { - var ch = strVal.charCodeAt(j); - updateGrKey1(ch, grKey); - updateGrKey2(ch, grKey); - } - }; // - hashing works on 32 bit ints b/c we use bitwise ops - // - small numbers get cut off (e.g. 0.123 is seen as 0 by the hashing function) - // - raise up small numbers so more significant digits are seen by hashing - // - make small numbers larger than a normal value to avoid collisions - // - works in practice and it's relatively cheap - - - var N = 2000000000; - - var cleanNum = function cleanNum(val) { - return -128 < val && val < 128 && Math.floor(val) !== val ? N - (val * 1024 | 0) : val; - }; - - for (var _i = 0; _i < propNames.length; _i++) { - var name = propNames[_i]; - var parsedProp = overriddenStyles[name]; - - if (parsedProp == null) { - continue; - } - - var propInfo = this.properties[name]; - var type = propInfo.type; - var _grKey = propInfo.groupKey; - var normalizedNumberVal = void 0; - - if (propInfo.hashOverride != null) { - normalizedNumberVal = propInfo.hashOverride(ele, parsedProp); - } else if (parsedProp.pfValue != null) { - normalizedNumberVal = parsedProp.pfValue; - } // might not be a number if it allows enums - - - var numberVal = propInfo.enums == null ? parsedProp.value : null; - var haveNormNum = normalizedNumberVal != null; - var haveUnitedNum = numberVal != null; - var haveNum = haveNormNum || haveUnitedNum; - var units = parsedProp.units; // numbers are cheaper to hash than strings - // 1 hash op vs n hash ops (for length n string) - - if (type.number && haveNum && !type.multiple) { - var v = haveNormNum ? normalizedNumberVal : numberVal; - updateGrKey(cleanNum(v), _grKey); - - if (!haveNormNum && units != null) { - updateGrKeyWStr(units, _grKey); - } - } else { - updateGrKeyWStr(parsedProp.strValue, _grKey); - } - } // overall style key - // - - - var hash = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]; - - for (var _i2 = 0; _i2 < propGrKeys.length; _i2++) { - var _grKey2 = propGrKeys[_i2]; - var grHash = _p.styleKeys[_grKey2]; - hash[0] = hashInt(grHash[0], hash[0]); - hash[1] = hashIntAlt(grHash[1], hash[1]); - } - - _p.styleKey = combineHashes(hash[0], hash[1]); // label dims - // - - var sk = _p.styleKeys; - _p.labelDimsKey = combineHashesArray(sk.labelDimensions); - var labelKeys = propHash(ele, ['label'], sk.labelDimensions); - _p.labelKey = combineHashesArray(labelKeys); - _p.labelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, labelKeys)); - - if (!isNode) { - var sourceLabelKeys = propHash(ele, ['source-label'], sk.labelDimensions); - _p.sourceLabelKey = combineHashesArray(sourceLabelKeys); - _p.sourceLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, sourceLabelKeys)); - var targetLabelKeys = propHash(ele, ['target-label'], sk.labelDimensions); - _p.targetLabelKey = combineHashesArray(targetLabelKeys); - _p.targetLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, targetLabelKeys)); - } // node - // - - - if (isNode) { - var _p$styleKeys = _p.styleKeys, - nodeBody = _p$styleKeys.nodeBody, - nodeBorder = _p$styleKeys.nodeBorder, - backgroundImage = _p$styleKeys.backgroundImage, - compound = _p$styleKeys.compound, - pie = _p$styleKeys.pie; - var nodeKeys = [nodeBody, nodeBorder, backgroundImage, compound, pie].filter(function (k) { - return k != null; - }).reduce(hashArrays, [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]); - _p.nodeKey = combineHashesArray(nodeKeys); - _p.hasPie = pie != null && pie[0] !== DEFAULT_HASH_SEED && pie[1] !== DEFAULT_HASH_SEED_ALT; - } - - return oldStyleKey !== _p.styleKey; -}; - -styfn.clearStyleHints = function (ele) { - var _p = ele._private; - _p.styleCxtKey = ''; - _p.styleKeys = {}; - _p.styleKey = null; - _p.labelKey = null; - _p.labelStyleKey = null; - _p.sourceLabelKey = null; - _p.sourceLabelStyleKey = null; - _p.targetLabelKey = null; - _p.targetLabelStyleKey = null; - _p.nodeKey = null; - _p.hasPie = null; -}; // apply a property to the style (for internal use) -// returns whether application was successful -// -// now, this function flattens the property, and here's how: -// -// for parsedProp:{ bypass: true, deleteBypass: true } -// no property is generated, instead the bypass property in the -// element's style is replaced by what's pointed to by the `bypassed` -// field in the bypass property (i.e. restoring the property the -// bypass was overriding) -// -// for parsedProp:{ mapped: truthy } -// the generated flattenedProp:{ mapping: prop } -// -// for parsedProp:{ bypass: true } -// the generated flattenedProp:{ bypassed: parsedProp } - - -styfn.applyParsedProperty = function (ele, parsedProp) { - var self = this; - var prop = parsedProp; - var style = ele._private.style; - var flatProp; - var types = self.types; - var type = self.properties[prop.name].type; - var propIsBypass = prop.bypass; - var origProp = style[prop.name]; - var origPropIsBypass = origProp && origProp.bypass; - var _p = ele._private; - var flatPropMapping = 'mapping'; - - var getVal = function getVal(p) { - if (p == null) { - return null; - } else if (p.pfValue != null) { - return p.pfValue; - } else { - return p.value; - } - }; - - var checkTriggers = function checkTriggers() { - var fromVal = getVal(origProp); - var toVal = getVal(prop); - self.checkTriggers(ele, prop.name, fromVal, toVal); - }; - - if (prop && prop.name.substr(0, 3) === 'pie') { - warn('The pie style properties are deprecated. Create charts using background images instead.'); - } // edge sanity checks to prevent the client from making serious mistakes - - - if (parsedProp.name === 'curve-style' && ele.isEdge() && ( // loops must be bundled beziers - parsedProp.value !== 'bezier' && ele.isLoop() || // edges connected to compound nodes can not be haystacks - parsedProp.value === 'haystack' && (ele.source().isParent() || ele.target().isParent()))) { - prop = parsedProp = this.parse(parsedProp.name, 'bezier', propIsBypass); - } - - if (prop["delete"]) { - // delete the property and use the default value on falsey value - style[prop.name] = undefined; - checkTriggers(); - return true; - } - - if (prop.deleteBypassed) { - // delete the property that the - if (!origProp) { - checkTriggers(); - return true; // can't delete if no prop - } else if (origProp.bypass) { - // delete bypassed - origProp.bypassed = undefined; - checkTriggers(); - return true; - } else { - return false; // we're unsuccessful deleting the bypassed - } - } // check if we need to delete the current bypass - - - if (prop.deleteBypass) { - // then this property is just here to indicate we need to delete - if (!origProp) { - checkTriggers(); - return true; // property is already not defined - } else if (origProp.bypass) { - // then replace the bypass property with the original - // because the bypassed property was already applied (and therefore parsed), we can just replace it (no reapplying necessary) - style[prop.name] = origProp.bypassed; - checkTriggers(); - return true; - } else { - return false; // we're unsuccessful deleting the bypass - } - } - - var printMappingErr = function printMappingErr() { - warn('Do not assign mappings to elements without corresponding data (i.e. ele `' + ele.id() + '` has no mapping for property `' + prop.name + '` with data field `' + prop.field + '`); try a `[' + prop.field + ']` selector to limit scope to elements with `' + prop.field + '` defined'); - }; // put the property in the style objects - - - switch (prop.mapped) { - // flatten the property if mapped - case types.mapData: - { - // flatten the field (e.g. data.foo.bar) - var fields = prop.field.split('.'); - var fieldVal = _p.data; - - for (var i = 0; i < fields.length && fieldVal; i++) { - var field = fields[i]; - fieldVal = fieldVal[field]; - } - - if (fieldVal == null) { - printMappingErr(); - return false; - } - - var percent; - - if (!number(fieldVal)) { - // then don't apply and fall back on the existing style - warn('Do not use continuous mappers without specifying numeric data (i.e. `' + prop.field + ': ' + fieldVal + '` for `' + ele.id() + '` is non-numeric)'); - return false; - } else { - var fieldWidth = prop.fieldMax - prop.fieldMin; - - if (fieldWidth === 0) { - // safety check -- not strictly necessary as no props of zero range should be passed here - percent = 0; - } else { - percent = (fieldVal - prop.fieldMin) / fieldWidth; - } - } // make sure to bound percent value - - - if (percent < 0) { - percent = 0; - } else if (percent > 1) { - percent = 1; - } - - if (type.color) { - var r1 = prop.valueMin[0]; - var r2 = prop.valueMax[0]; - var g1 = prop.valueMin[1]; - var g2 = prop.valueMax[1]; - var b1 = prop.valueMin[2]; - var b2 = prop.valueMax[2]; - var a1 = prop.valueMin[3] == null ? 1 : prop.valueMin[3]; - var a2 = prop.valueMax[3] == null ? 1 : prop.valueMax[3]; - var clr = [Math.round(r1 + (r2 - r1) * percent), Math.round(g1 + (g2 - g1) * percent), Math.round(b1 + (b2 - b1) * percent), Math.round(a1 + (a2 - a1) * percent)]; - flatProp = { - // colours are simple, so just create the flat property instead of expensive string parsing - bypass: prop.bypass, - // we're a bypass if the mapping property is a bypass - name: prop.name, - value: clr, - strValue: 'rgb(' + clr[0] + ', ' + clr[1] + ', ' + clr[2] + ')' - }; - } else if (type.number) { - var calcValue = prop.valueMin + (prop.valueMax - prop.valueMin) * percent; - flatProp = this.parse(prop.name, calcValue, prop.bypass, flatPropMapping); - } else { - return false; // can only map to colours and numbers - } - - if (!flatProp) { - // if we can't flatten the property, then don't apply the property and fall back on the existing style - printMappingErr(); - return false; - } - - flatProp.mapping = prop; // keep a reference to the mapping - - prop = flatProp; // the flattened (mapped) property is the one we want - - break; - } - // direct mapping - - case types.data: - { - // flatten the field (e.g. data.foo.bar) - var _fields = prop.field.split('.'); - - var _fieldVal = _p.data; - - for (var _i3 = 0; _i3 < _fields.length && _fieldVal; _i3++) { - var _field = _fields[_i3]; - _fieldVal = _fieldVal[_field]; - } - - if (_fieldVal != null) { - flatProp = this.parse(prop.name, _fieldVal, prop.bypass, flatPropMapping); - } - - if (!flatProp) { - // if we can't flatten the property, then don't apply and fall back on the existing style - printMappingErr(); - return false; - } - - flatProp.mapping = prop; // keep a reference to the mapping - - prop = flatProp; // the flattened (mapped) property is the one we want - - break; - } - - case types.fn: - { - var fn = prop.value; - var fnRetVal = prop.fnValue != null ? prop.fnValue : fn(ele); // check for cached value before calling function - - prop.prevFnValue = fnRetVal; - - if (fnRetVal == null) { - warn('Custom function mappers may not return null (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is null)'); - return false; - } - - flatProp = this.parse(prop.name, fnRetVal, prop.bypass, flatPropMapping); - - if (!flatProp) { - warn('Custom function mappers may not return invalid values for the property type (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is invalid)'); - return false; - } - - flatProp.mapping = copy(prop); // keep a reference to the mapping - - prop = flatProp; // the flattened (mapped) property is the one we want - - break; - } - - case undefined: - break; - // just set the property - - default: - return false; - // not a valid mapping - } // if the property is a bypass property, then link the resultant property to the original one - - - if (propIsBypass) { - if (origPropIsBypass) { - // then this bypass overrides the existing one - prop.bypassed = origProp.bypassed; // steal bypassed prop from old bypass - } else { - // then link the orig prop to the new bypass - prop.bypassed = origProp; - } - - style[prop.name] = prop; // and set - } else { - // prop is not bypass - if (origPropIsBypass) { - // then keep the orig prop (since it's a bypass) and link to the new prop - origProp.bypassed = prop; - } else { - // then just replace the old prop with the new one - style[prop.name] = prop; - } - } - - checkTriggers(); - return true; -}; - -styfn.cleanElements = function (eles, keepBypasses) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - this.clearStyleHints(ele); - ele.dirtyCompoundBoundsCache(); - ele.dirtyBoundingBoxCache(); - - if (!keepBypasses) { - ele._private.style = {}; - } else { - var style = ele._private.style; - var propNames = Object.keys(style); - - for (var j = 0; j < propNames.length; j++) { - var propName = propNames[j]; - var eleProp = style[propName]; - - if (eleProp != null) { - if (eleProp.bypass) { - eleProp.bypassed = null; - } else { - style[propName] = null; - } - } - } - } - } -}; // updates the visual style for all elements (useful for manual style modification after init) - - -styfn.update = function () { - var cy = this._private.cy; - var eles = cy.mutableElements(); - eles.updateStyle(); -}; // diffProps : { name => { prev, next } } - - -styfn.updateTransitions = function (ele, diffProps) { - var self = this; - var _p = ele._private; - var props = ele.pstyle('transition-property').value; - var duration = ele.pstyle('transition-duration').pfValue; - var delay = ele.pstyle('transition-delay').pfValue; - - if (props.length > 0 && duration > 0) { - var style = {}; // build up the style to animate towards - - var anyPrev = false; - - for (var i = 0; i < props.length; i++) { - var prop = props[i]; - var styProp = ele.pstyle(prop); - var diffProp = diffProps[prop]; - - if (!diffProp) { - continue; - } - - var prevProp = diffProp.prev; - var fromProp = prevProp; - var toProp = diffProp.next != null ? diffProp.next : styProp; - var diff = false; - var initVal = void 0; - var initDt = 0.000001; // delta time % value for initVal (allows animating out of init zero opacity) - - if (!fromProp) { - continue; - } // consider px values - - - if (number(fromProp.pfValue) && number(toProp.pfValue)) { - diff = toProp.pfValue - fromProp.pfValue; // nonzero is truthy - - initVal = fromProp.pfValue + initDt * diff; // consider numerical values - } else if (number(fromProp.value) && number(toProp.value)) { - diff = toProp.value - fromProp.value; // nonzero is truthy - - initVal = fromProp.value + initDt * diff; // consider colour values - } else if (array(fromProp.value) && array(toProp.value)) { - diff = fromProp.value[0] !== toProp.value[0] || fromProp.value[1] !== toProp.value[1] || fromProp.value[2] !== toProp.value[2]; - initVal = fromProp.strValue; - } // the previous value is good for an animation only if it's different - - - if (diff) { - style[prop] = toProp.strValue; // to val - - this.applyBypass(ele, prop, initVal); // from val - - anyPrev = true; - } - } // end if props allow ani - // can't transition if there's nothing previous to transition from - - - if (!anyPrev) { - return; - } - - _p.transitioning = true; - new Promise$1$1(function (resolve) { - if (delay > 0) { - ele.delayAnimation(delay).play().promise().then(resolve); - } else { - resolve(); - } - }).then(function () { - return ele.animation({ - style: style, - duration: duration, - easing: ele.pstyle('transition-timing-function').value, - queue: false - }).play().promise(); - }).then(function () { - // if( !isBypass ){ - self.removeBypasses(ele, props); - ele.emitAndNotify('style'); // } - - _p.transitioning = false; - }); - } else if (_p.transitioning) { - this.removeBypasses(ele, props); - ele.emitAndNotify('style'); - _p.transitioning = false; - } -}; - -styfn.checkTrigger = function (ele, name, fromValue, toValue, getTrigger, onTrigger) { - var prop = this.properties[name]; - var triggerCheck = getTrigger(prop); - - if (triggerCheck != null && triggerCheck(fromValue, toValue)) { - onTrigger(prop); - } -}; - -styfn.checkZOrderTrigger = function (ele, name, fromValue, toValue) { - var _this = this; - - this.checkTrigger(ele, name, fromValue, toValue, function (prop) { - return prop.triggersZOrder; - }, function () { - _this._private.cy.notify('zorder', ele); - }); -}; - -styfn.checkBoundsTrigger = function (ele, name, fromValue, toValue) { - this.checkTrigger(ele, name, fromValue, toValue, function (prop) { - return prop.triggersBounds; - }, function (prop) { - ele.dirtyCompoundBoundsCache(); - ele.dirtyBoundingBoxCache(); // if the prop change makes the bb of pll bezier edges invalid, - // then dirty the pll edge bb cache as well - - if ( // only for beziers -- so performance of other edges isn't affected - name === 'curve-style' && (fromValue === 'bezier' || toValue === 'bezier') && prop.triggersBoundsOfParallelBeziers) { - ele.parallelEdges().forEach(function (pllEdge) { - if (pllEdge.isBundledBezier()) { - pllEdge.dirtyBoundingBoxCache(); - } - }); - } - }); -}; - -styfn.checkTriggers = function (ele, name, fromValue, toValue) { - ele.dirtyStyleCache(); - this.checkZOrderTrigger(ele, name, fromValue, toValue); - this.checkBoundsTrigger(ele, name, fromValue, toValue); -}; - -var styfn$1 = {}; // bypasses are applied to an existing style on an element, and just tacked on temporarily -// returns true iff application was successful for at least 1 specified property - -styfn$1.applyBypass = function (eles, name, value, updateTransitions) { - var self = this; - var props = []; - var isBypass = true; // put all the properties (can specify one or many) in an array after parsing them - - if (name === '*' || name === '**') { - // apply to all property names - if (value !== undefined) { - for (var i = 0; i < self.properties.length; i++) { - var prop = self.properties[i]; - var _name = prop.name; - var parsedProp = this.parse(_name, value, true); - - if (parsedProp) { - props.push(parsedProp); - } - } - } - } else if (string(name)) { - // then parse the single property - var _parsedProp = this.parse(name, value, true); - - if (_parsedProp) { - props.push(_parsedProp); - } - } else if (plainObject(name)) { - // then parse each property - var specifiedProps = name; - updateTransitions = value; - var names = Object.keys(specifiedProps); - - for (var _i = 0; _i < names.length; _i++) { - var _name2 = names[_i]; - var _value = specifiedProps[_name2]; - - if (_value === undefined) { - // try camel case name too - _value = specifiedProps[dash2camel(_name2)]; - } - - if (_value !== undefined) { - var _parsedProp2 = this.parse(_name2, _value, true); - - if (_parsedProp2) { - props.push(_parsedProp2); - } - } - } - } else { - // can't do anything without well defined properties - return false; - } // we've failed if there are no valid properties - - - if (props.length === 0) { - return false; - } // now, apply the bypass properties on the elements - - - var ret = false; // return true if at least one succesful bypass applied - - for (var _i2 = 0; _i2 < eles.length; _i2++) { - // for each ele - var ele = eles[_i2]; - var diffProps = {}; - var diffProp = void 0; - - for (var j = 0; j < props.length; j++) { - // for each prop - var _prop = props[j]; - - if (updateTransitions) { - var prevProp = ele.pstyle(_prop.name); - diffProp = diffProps[_prop.name] = { - prev: prevProp - }; - } - - ret = this.applyParsedProperty(ele, copy(_prop)) || ret; - - if (updateTransitions) { - diffProp.next = ele.pstyle(_prop.name); - } - } // for props - - - if (ret) { - this.updateStyleHints(ele); - } - - if (updateTransitions) { - this.updateTransitions(ele, diffProps, isBypass); - } - } // for eles - - - return ret; -}; // only useful in specific cases like animation - - -styfn$1.overrideBypass = function (eles, name, value) { - name = camel2dash(name); - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var prop = ele._private.style[name]; - var type = this.properties[name].type; - var isColor = type.color; - var isMulti = type.mutiple; - var oldValue = !prop ? null : prop.pfValue != null ? prop.pfValue : prop.value; - - if (!prop || !prop.bypass) { - // need a bypass if one doesn't exist - this.applyBypass(ele, name, value); - } else { - prop.value = value; - - if (prop.pfValue != null) { - prop.pfValue = value; - } - - if (isColor) { - prop.strValue = 'rgb(' + value.join(',') + ')'; - } else if (isMulti) { - prop.strValue = value.join(' '); - } else { - prop.strValue = '' + value; - } - - this.updateStyleHints(ele); - } - - this.checkTriggers(ele, name, oldValue, value); - } -}; - -styfn$1.removeAllBypasses = function (eles, updateTransitions) { - return this.removeBypasses(eles, this.propertyNames, updateTransitions); -}; - -styfn$1.removeBypasses = function (eles, props, updateTransitions) { - var isBypass = true; - - for (var j = 0; j < eles.length; j++) { - var ele = eles[j]; - var diffProps = {}; - - for (var i = 0; i < props.length; i++) { - var name = props[i]; - var prop = this.properties[name]; - var prevProp = ele.pstyle(prop.name); - - if (!prevProp || !prevProp.bypass) { - // if a bypass doesn't exist for the prop, nothing needs to be removed - continue; - } - - var value = ''; // empty => remove bypass - - var parsedProp = this.parse(name, value, true); - var diffProp = diffProps[prop.name] = { - prev: prevProp - }; - this.applyParsedProperty(ele, parsedProp); - diffProp.next = ele.pstyle(prop.name); - } // for props - - - this.updateStyleHints(ele); - - if (updateTransitions) { - this.updateTransitions(ele, diffProps, isBypass); - } - } // for eles - -}; - -var styfn$2 = {}; // gets what an em size corresponds to in pixels relative to a dom element - -styfn$2.getEmSizeInPixels = function () { - var px = this.containerCss('font-size'); - - if (px != null) { - return parseFloat(px); - } else { - return 1; // for headless - } -}; // gets css property from the core container - - -styfn$2.containerCss = function (propName) { - var cy = this._private.cy; - var domElement = cy.container(); - - if (window$1 && domElement && window$1.getComputedStyle) { - return window$1.getComputedStyle(domElement).getPropertyValue(propName); - } -}; - -var styfn$3 = {}; // gets the rendered style for an element - -styfn$3.getRenderedStyle = function (ele, prop) { - if (prop) { - return this.getStylePropertyValue(ele, prop, true); - } else { - return this.getRawStyle(ele, true); - } -}; // gets the raw style for an element - - -styfn$3.getRawStyle = function (ele, isRenderedVal) { - var self = this; - ele = ele[0]; // insure it's an element - - if (ele) { - var rstyle = {}; - - for (var i = 0; i < self.properties.length; i++) { - var prop = self.properties[i]; - var val = self.getStylePropertyValue(ele, prop.name, isRenderedVal); - - if (val != null) { - rstyle[prop.name] = val; - rstyle[dash2camel(prop.name)] = val; - } - } - - return rstyle; - } -}; - -styfn$3.getIndexedStyle = function (ele, property, subproperty, index) { - var pstyle = ele.pstyle(property)[subproperty][index]; - return pstyle != null ? pstyle : ele.cy().style().getDefaultProperty(property)[subproperty][0]; -}; - -styfn$3.getStylePropertyValue = function (ele, propName, isRenderedVal) { - var self = this; - ele = ele[0]; // insure it's an element - - if (ele) { - var prop = self.properties[propName]; - - if (prop.alias) { - prop = prop.pointsTo; - } - - var type = prop.type; - var styleProp = ele.pstyle(prop.name); - - if (styleProp) { - var value = styleProp.value, - units = styleProp.units, - strValue = styleProp.strValue; - - if (isRenderedVal && type.number && value != null && number(value)) { - var zoom = ele.cy().zoom(); - - var getRenderedValue = function getRenderedValue(val) { - return val * zoom; - }; - - var getValueStringWithUnits = function getValueStringWithUnits(val, units) { - return getRenderedValue(val) + units; - }; - - var isArrayValue = array(value); - var haveUnits = isArrayValue ? units.every(function (u) { - return u != null; - }) : units != null; - - if (haveUnits) { - if (isArrayValue) { - return value.map(function (v, i) { - return getValueStringWithUnits(v, units[i]); - }).join(' '); - } else { - return getValueStringWithUnits(value, units); - } - } else { - if (isArrayValue) { - return value.map(function (v) { - return string(v) ? v : '' + getRenderedValue(v); - }).join(' '); - } else { - return '' + getRenderedValue(value); - } - } - } else if (strValue != null) { - return strValue; - } - } - - return null; - } -}; - -styfn$3.getAnimationStartStyle = function (ele, aniProps) { - var rstyle = {}; - - for (var i = 0; i < aniProps.length; i++) { - var aniProp = aniProps[i]; - var name = aniProp.name; - var styleProp = ele.pstyle(name); - - if (styleProp !== undefined) { - // then make a prop of it - if (plainObject(styleProp)) { - styleProp = this.parse(name, styleProp.strValue); - } else { - styleProp = this.parse(name, styleProp); - } - } - - if (styleProp) { - rstyle[name] = styleProp; - } - } - - return rstyle; -}; - -styfn$3.getPropsList = function (propsObj) { - var self = this; - var rstyle = []; - var style = propsObj; - var props = self.properties; - - if (style) { - var names = Object.keys(style); - - for (var i = 0; i < names.length; i++) { - var name = names[i]; - var val = style[name]; - var prop = props[name] || props[camel2dash(name)]; - var styleProp = this.parse(prop.name, val); - - if (styleProp) { - rstyle.push(styleProp); - } - } - } - - return rstyle; -}; - -styfn$3.getNonDefaultPropertiesHash = function (ele, propNames, seed) { - var hash = seed.slice(); - var name, val, strVal, chVal; - var i, j; - - for (i = 0; i < propNames.length; i++) { - name = propNames[i]; - val = ele.pstyle(name, false); - - if (val == null) { - continue; - } else if (val.pfValue != null) { - hash[0] = hashInt(chVal, hash[0]); - hash[1] = hashIntAlt(chVal, hash[1]); - } else { - strVal = val.strValue; - - for (j = 0; j < strVal.length; j++) { - chVal = strVal.charCodeAt(j); - hash[0] = hashInt(chVal, hash[0]); - hash[1] = hashIntAlt(chVal, hash[1]); - } - } - } - - return hash; -}; - -styfn$3.getPropertiesHash = styfn$3.getNonDefaultPropertiesHash; - -var styfn$4 = {}; - -styfn$4.appendFromJson = function (json) { - var style = this; - - for (var i = 0; i < json.length; i++) { - var context = json[i]; - var selector = context.selector; - var props = context.style || context.css; - var names = Object.keys(props); - style.selector(selector); // apply selector - - for (var j = 0; j < names.length; j++) { - var name = names[j]; - var value = props[name]; - style.css(name, value); // apply property - } - } - - return style; -}; // accessible cy.style() function - - -styfn$4.fromJson = function (json) { - var style = this; - style.resetToDefault(); - style.appendFromJson(json); - return style; -}; // get json from cy.style() api - - -styfn$4.json = function () { - var json = []; - - for (var i = this.defaultLength; i < this.length; i++) { - var cxt = this[i]; - var selector = cxt.selector; - var props = cxt.properties; - var css = {}; - - for (var j = 0; j < props.length; j++) { - var prop = props[j]; - css[prop.name] = prop.strValue; - } - - json.push({ - selector: !selector ? 'core' : selector.toString(), - style: css - }); - } - - return json; -}; - -var styfn$5 = {}; - -styfn$5.appendFromString = function (string) { - var self = this; - var style = this; - var remaining = '' + string; - var selAndBlockStr; - var blockRem; - var propAndValStr; // remove comments from the style string - - remaining = remaining.replace(/[/][*](\s|.)+?[*][/]/g, ''); - - function removeSelAndBlockFromRemaining() { - // remove the parsed selector and block from the remaining text to parse - if (remaining.length > selAndBlockStr.length) { - remaining = remaining.substr(selAndBlockStr.length); - } else { - remaining = ''; - } - } - - function removePropAndValFromRem() { - // remove the parsed property and value from the remaining block text to parse - if (blockRem.length > propAndValStr.length) { - blockRem = blockRem.substr(propAndValStr.length); - } else { - blockRem = ''; - } - } - - for (;;) { - var nothingLeftToParse = remaining.match(/^\s*$/); - - if (nothingLeftToParse) { - break; - } - - var selAndBlock = remaining.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/); - - if (!selAndBlock) { - warn('Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: ' + remaining); - break; - } - - selAndBlockStr = selAndBlock[0]; // parse the selector - - var selectorStr = selAndBlock[1]; - - if (selectorStr !== 'core') { - var selector = new Selector(selectorStr); - - if (selector.invalid) { - warn('Skipping parsing of block: Invalid selector found in string stylesheet: ' + selectorStr); // skip this selector and block - - removeSelAndBlockFromRemaining(); - continue; - } - } // parse the block of properties and values - - - var blockStr = selAndBlock[2]; - var invalidBlock = false; - blockRem = blockStr; - var props = []; - - for (;;) { - var _nothingLeftToParse = blockRem.match(/^\s*$/); - - if (_nothingLeftToParse) { - break; - } - - var propAndVal = blockRem.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/); - - if (!propAndVal) { - warn('Skipping parsing of block: Invalid formatting of style property and value definitions found in:' + blockStr); - invalidBlock = true; - break; - } - - propAndValStr = propAndVal[0]; - var propStr = propAndVal[1]; - var valStr = propAndVal[2]; - var prop = self.properties[propStr]; - - if (!prop) { - warn('Skipping property: Invalid property name in: ' + propAndValStr); // skip this property in the block - - removePropAndValFromRem(); - continue; - } - - var parsedProp = style.parse(propStr, valStr); - - if (!parsedProp) { - warn('Skipping property: Invalid property definition in: ' + propAndValStr); // skip this property in the block - - removePropAndValFromRem(); - continue; - } - - props.push({ - name: propStr, - val: valStr - }); - removePropAndValFromRem(); - } - - if (invalidBlock) { - removeSelAndBlockFromRemaining(); - break; - } // put the parsed block in the style - - - style.selector(selectorStr); - - for (var i = 0; i < props.length; i++) { - var _prop = props[i]; - style.css(_prop.name, _prop.val); - } - - removeSelAndBlockFromRemaining(); - } - - return style; -}; - -styfn$5.fromString = function (string) { - var style = this; - style.resetToDefault(); - style.appendFromString(string); - return style; -}; - -var styfn$6 = {}; - -(function () { - var number = number$1; - var rgba = rgbaNoBackRefs; - var hsla = hslaNoBackRefs; - var hex3$1 = hex3; - var hex6$1 = hex6; - - var data = function data(prefix) { - return '^' + prefix + '\\s*\\(\\s*([\\w\\.]+)\\s*\\)$'; - }; - - var mapData = function mapData(prefix) { - var mapArg = number + '|\\w+|' + rgba + '|' + hsla + '|' + hex3$1 + '|' + hex6$1; - return '^' + prefix + '\\s*\\(([\\w\\.]+)\\s*\\,\\s*(' + number + ')\\s*\\,\\s*(' + number + ')\\s*,\\s*(' + mapArg + ')\\s*\\,\\s*(' + mapArg + ')\\)$'; - }; - - var urlRegexes = ['^url\\s*\\(\\s*[\'"]?(.+?)[\'"]?\\s*\\)$', '^(none)$', '^(.+)$']; // each visual style property has a type and needs to be validated according to it - - styfn$6.types = { - time: { - number: true, - min: 0, - units: 's|ms', - implicitUnits: 'ms' - }, - percent: { - number: true, - min: 0, - max: 100, - units: '%', - implicitUnits: '%' - }, - percentages: { - number: true, - min: 0, - max: 100, - units: '%', - implicitUnits: '%', - multiple: true - }, - zeroOneNumber: { - number: true, - min: 0, - max: 1, - unitless: true - }, - zeroOneNumbers: { - number: true, - min: 0, - max: 1, - unitless: true, - multiple: true - }, - nOneOneNumber: { - number: true, - min: -1, - max: 1, - unitless: true - }, - nonNegativeInt: { - number: true, - min: 0, - integer: true, - unitless: true - }, - position: { - enums: ['parent', 'origin'] - }, - nodeSize: { - number: true, - min: 0, - enums: ['label'] - }, - number: { - number: true, - unitless: true - }, - numbers: { - number: true, - unitless: true, - multiple: true - }, - positiveNumber: { - number: true, - unitless: true, - min: 0, - strictMin: true - }, - size: { - number: true, - min: 0 - }, - bidirectionalSize: { - number: true - }, - // allows negative - bidirectionalSizeMaybePercent: { - number: true, - allowPercent: true - }, - // allows negative - bidirectionalSizes: { - number: true, - multiple: true - }, - // allows negative - sizeMaybePercent: { - number: true, - min: 0, - allowPercent: true - }, - axisDirection: { - enums: ['horizontal', 'leftward', 'rightward', 'vertical', 'upward', 'downward', 'auto'] - }, - paddingRelativeTo: { - enums: ['width', 'height', 'average', 'min', 'max'] - }, - bgWH: { - number: true, - min: 0, - allowPercent: true, - enums: ['auto'], - multiple: true - }, - bgPos: { - number: true, - allowPercent: true, - multiple: true - }, - bgRelativeTo: { - enums: ['inner', 'include-padding'], - multiple: true - }, - bgRepeat: { - enums: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'], - multiple: true - }, - bgFit: { - enums: ['none', 'contain', 'cover'], - multiple: true - }, - bgCrossOrigin: { - enums: ['anonymous', 'use-credentials'], - multiple: true - }, - bgClip: { - enums: ['none', 'node'], - multiple: true - }, - bgContainment: { - enums: ['inside', 'over'], - multiple: true - }, - color: { - color: true - }, - colors: { - color: true, - multiple: true - }, - fill: { - enums: ['solid', 'linear-gradient', 'radial-gradient'] - }, - bool: { - enums: ['yes', 'no'] - }, - bools: { - enums: ['yes', 'no'], - multiple: true - }, - lineStyle: { - enums: ['solid', 'dotted', 'dashed'] - }, - lineCap: { - enums: ['butt', 'round', 'square'] - }, - borderStyle: { - enums: ['solid', 'dotted', 'dashed', 'double'] - }, - curveStyle: { - enums: ['bezier', 'unbundled-bezier', 'haystack', 'segments', 'straight', 'straight-triangle', 'taxi'] - }, - fontFamily: { - regex: '^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$' - }, - fontStyle: { - enums: ['italic', 'normal', 'oblique'] - }, - fontWeight: { - enums: ['normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '800', '900', 100, 200, 300, 400, 500, 600, 700, 800, 900] - }, - textDecoration: { - enums: ['none', 'underline', 'overline', 'line-through'] - }, - textTransform: { - enums: ['none', 'uppercase', 'lowercase'] - }, - textWrap: { - enums: ['none', 'wrap', 'ellipsis'] - }, - textOverflowWrap: { - enums: ['whitespace', 'anywhere'] - }, - textBackgroundShape: { - enums: ['rectangle', 'roundrectangle', 'round-rectangle'] - }, - nodeShape: { - enums: ['rectangle', 'roundrectangle', 'round-rectangle', 'cutrectangle', 'cut-rectangle', 'bottomroundrectangle', 'bottom-round-rectangle', 'barrel', 'ellipse', 'triangle', 'round-triangle', 'square', 'pentagon', 'round-pentagon', 'hexagon', 'round-hexagon', 'concavehexagon', 'concave-hexagon', 'heptagon', 'round-heptagon', 'octagon', 'round-octagon', 'tag', 'round-tag', 'star', 'diamond', 'round-diamond', 'vee', 'rhomboid', 'polygon'] - }, - overlayShape: { - enums: ['roundrectangle', 'round-rectangle', 'ellipse'] - }, - compoundIncludeLabels: { - enums: ['include', 'exclude'] - }, - arrowShape: { - enums: ['tee', 'triangle', 'triangle-tee', 'circle-triangle', 'triangle-cross', 'triangle-backcurve', 'vee', 'square', 'circle', 'diamond', 'chevron', 'none'] - }, - arrowFill: { - enums: ['filled', 'hollow'] - }, - display: { - enums: ['element', 'none'] - }, - visibility: { - enums: ['hidden', 'visible'] - }, - zCompoundDepth: { - enums: ['bottom', 'orphan', 'auto', 'top'] - }, - zIndexCompare: { - enums: ['auto', 'manual'] - }, - valign: { - enums: ['top', 'center', 'bottom'] - }, - halign: { - enums: ['left', 'center', 'right'] - }, - justification: { - enums: ['left', 'center', 'right', 'auto'] - }, - text: { - string: true - }, - data: { - mapping: true, - regex: data('data') - }, - layoutData: { - mapping: true, - regex: data('layoutData') - }, - scratch: { - mapping: true, - regex: data('scratch') - }, - mapData: { - mapping: true, - regex: mapData('mapData') - }, - mapLayoutData: { - mapping: true, - regex: mapData('mapLayoutData') - }, - mapScratch: { - mapping: true, - regex: mapData('mapScratch') - }, - fn: { - mapping: true, - fn: true - }, - url: { - regexes: urlRegexes, - singleRegexMatchValue: true - }, - urls: { - regexes: urlRegexes, - singleRegexMatchValue: true, - multiple: true - }, - propList: { - propList: true - }, - angle: { - number: true, - units: 'deg|rad', - implicitUnits: 'rad' - }, - textRotation: { - number: true, - units: 'deg|rad', - implicitUnits: 'rad', - enums: ['none', 'autorotate'] - }, - polygonPointList: { - number: true, - multiple: true, - evenMultiple: true, - min: -1, - max: 1, - unitless: true - }, - edgeDistances: { - enums: ['intersection', 'node-position'] - }, - edgeEndpoint: { - number: true, - multiple: true, - units: '%|px|em|deg|rad', - implicitUnits: 'px', - enums: ['inside-to-node', 'outside-to-node', 'outside-to-node-or-label', 'outside-to-line', 'outside-to-line-or-label'], - singleEnum: true, - validate: function validate(valArr, unitsArr) { - switch (valArr.length) { - case 2: - // can be % or px only - return unitsArr[0] !== 'deg' && unitsArr[0] !== 'rad' && unitsArr[1] !== 'deg' && unitsArr[1] !== 'rad'; - - case 1: - // can be enum, deg, or rad only - return string(valArr[0]) || unitsArr[0] === 'deg' || unitsArr[0] === 'rad'; - - default: - return false; - } - } - }, - easing: { - regexes: ['^(spring)\\s*\\(\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*\\)$', '^(cubic-bezier)\\s*\\(\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*\\)$'], - enums: ['linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'ease-in-sine', 'ease-out-sine', 'ease-in-out-sine', 'ease-in-quad', 'ease-out-quad', 'ease-in-out-quad', 'ease-in-cubic', 'ease-out-cubic', 'ease-in-out-cubic', 'ease-in-quart', 'ease-out-quart', 'ease-in-out-quart', 'ease-in-quint', 'ease-out-quint', 'ease-in-out-quint', 'ease-in-expo', 'ease-out-expo', 'ease-in-out-expo', 'ease-in-circ', 'ease-out-circ', 'ease-in-out-circ'] - }, - gradientDirection: { - enums: ['to-bottom', 'to-top', 'to-left', 'to-right', 'to-bottom-right', 'to-bottom-left', 'to-top-right', 'to-top-left', 'to-right-bottom', 'to-left-bottom', 'to-right-top', 'to-left-top'] - }, - boundsExpansion: { - number: true, - multiple: true, - min: 0, - validate: function validate(valArr) { - var length = valArr.length; - return length === 1 || length === 2 || length === 4; - } - } - }; - var diff = { - zeroNonZero: function zeroNonZero(val1, val2) { - if ((val1 == null || val2 == null) && val1 !== val2) { - return true; // null cases could represent any value - } - - if (val1 == 0 && val2 != 0) { - return true; - } else if (val1 != 0 && val2 == 0) { - return true; - } else { - return false; - } - }, - any: function any(val1, val2) { - return val1 != val2; - }, - emptyNonEmpty: function emptyNonEmpty(str1, str2) { - var empty1 = emptyString(str1); - var empty2 = emptyString(str2); - return empty1 && !empty2 || !empty1 && empty2; - } - }; // define visual style properties - // - // - n.b. adding a new group of props may require updates to updateStyleHints() - // - adding new props to an existing group gets handled automatically - - var t = styfn$6.types; - var mainLabel = [{ - name: 'label', - type: t.text, - triggersBounds: diff.any, - triggersZOrder: diff.emptyNonEmpty - }, { - name: 'text-rotation', - type: t.textRotation, - triggersBounds: diff.any - }, { - name: 'text-margin-x', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'text-margin-y', - type: t.bidirectionalSize, - triggersBounds: diff.any - }]; - var sourceLabel = [{ - name: 'source-label', - type: t.text, - triggersBounds: diff.any - }, { - name: 'source-text-rotation', - type: t.textRotation, - triggersBounds: diff.any - }, { - name: 'source-text-margin-x', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'source-text-margin-y', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'source-text-offset', - type: t.size, - triggersBounds: diff.any - }]; - var targetLabel = [{ - name: 'target-label', - type: t.text, - triggersBounds: diff.any - }, { - name: 'target-text-rotation', - type: t.textRotation, - triggersBounds: diff.any - }, { - name: 'target-text-margin-x', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'target-text-margin-y', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'target-text-offset', - type: t.size, - triggersBounds: diff.any - }]; - var labelDimensions = [{ - name: 'font-family', - type: t.fontFamily, - triggersBounds: diff.any - }, { - name: 'font-style', - type: t.fontStyle, - triggersBounds: diff.any - }, { - name: 'font-weight', - type: t.fontWeight, - triggersBounds: diff.any - }, { - name: 'font-size', - type: t.size, - triggersBounds: diff.any - }, { - name: 'text-transform', - type: t.textTransform, - triggersBounds: diff.any - }, { - name: 'text-wrap', - type: t.textWrap, - triggersBounds: diff.any - }, { - name: 'text-overflow-wrap', - type: t.textOverflowWrap, - triggersBounds: diff.any - }, { - name: 'text-max-width', - type: t.size, - triggersBounds: diff.any - }, { - name: 'text-outline-width', - type: t.size, - triggersBounds: diff.any - }, { - name: 'line-height', - type: t.positiveNumber, - triggersBounds: diff.any - }]; - var commonLabel = [{ - name: 'text-valign', - type: t.valign, - triggersBounds: diff.any - }, { - name: 'text-halign', - type: t.halign, - triggersBounds: diff.any - }, { - name: 'color', - type: t.color - }, { - name: 'text-outline-color', - type: t.color - }, { - name: 'text-outline-opacity', - type: t.zeroOneNumber - }, { - name: 'text-background-color', - type: t.color - }, { - name: 'text-background-opacity', - type: t.zeroOneNumber - }, { - name: 'text-background-padding', - type: t.size, - triggersBounds: diff.any - }, { - name: 'text-border-opacity', - type: t.zeroOneNumber - }, { - name: 'text-border-color', - type: t.color - }, { - name: 'text-border-width', - type: t.size, - triggersBounds: diff.any - }, { - name: 'text-border-style', - type: t.borderStyle, - triggersBounds: diff.any - }, { - name: 'text-background-shape', - type: t.textBackgroundShape, - triggersBounds: diff.any - }, { - name: 'text-justification', - type: t.justification - }]; - var behavior = [{ - name: 'events', - type: t.bool - }, { - name: 'text-events', - type: t.bool - }]; - var visibility = [{ - name: 'display', - type: t.display, - triggersZOrder: diff.any, - triggersBounds: diff.any, - triggersBoundsOfParallelBeziers: true - }, { - name: 'visibility', - type: t.visibility, - triggersZOrder: diff.any - }, { - name: 'opacity', - type: t.zeroOneNumber, - triggersZOrder: diff.zeroNonZero - }, { - name: 'text-opacity', - type: t.zeroOneNumber - }, { - name: 'min-zoomed-font-size', - type: t.size - }, { - name: 'z-compound-depth', - type: t.zCompoundDepth, - triggersZOrder: diff.any - }, { - name: 'z-index-compare', - type: t.zIndexCompare, - triggersZOrder: diff.any - }, { - name: 'z-index', - type: t.nonNegativeInt, - triggersZOrder: diff.any - }]; - var overlay = [{ - name: 'overlay-padding', - type: t.size, - triggersBounds: diff.any - }, { - name: 'overlay-color', - type: t.color - }, { - name: 'overlay-opacity', - type: t.zeroOneNumber, - triggersBounds: diff.zeroNonZero - }, { - name: 'overlay-shape', - type: t.overlayShape, - triggersBounds: diff.any - }]; - var underlay = [{ - name: 'underlay-padding', - type: t.size, - triggersBounds: diff.any - }, { - name: 'underlay-color', - type: t.color - }, { - name: 'underlay-opacity', - type: t.zeroOneNumber, - triggersBounds: diff.zeroNonZero - }, { - name: 'underlay-shape', - type: t.overlayShape, - triggersBounds: diff.any - }]; - var transition = [{ - name: 'transition-property', - type: t.propList - }, { - name: 'transition-duration', - type: t.time - }, { - name: 'transition-delay', - type: t.time - }, { - name: 'transition-timing-function', - type: t.easing - }]; - - var nodeSizeHashOverride = function nodeSizeHashOverride(ele, parsedProp) { - if (parsedProp.value === 'label') { - return -ele.poolIndex(); // no hash key hits is using label size (hitrate for perf probably low anyway) - } else { - return parsedProp.pfValue; - } - }; - - var nodeBody = [{ - name: 'height', - type: t.nodeSize, - triggersBounds: diff.any, - hashOverride: nodeSizeHashOverride - }, { - name: 'width', - type: t.nodeSize, - triggersBounds: diff.any, - hashOverride: nodeSizeHashOverride - }, { - name: 'shape', - type: t.nodeShape, - triggersBounds: diff.any - }, { - name: 'shape-polygon-points', - type: t.polygonPointList, - triggersBounds: diff.any - }, { - name: 'background-color', - type: t.color - }, { - name: 'background-fill', - type: t.fill - }, { - name: 'background-opacity', - type: t.zeroOneNumber - }, { - name: 'background-blacken', - type: t.nOneOneNumber - }, { - name: 'background-gradient-stop-colors', - type: t.colors - }, { - name: 'background-gradient-stop-positions', - type: t.percentages - }, { - name: 'background-gradient-direction', - type: t.gradientDirection - }, { - name: 'padding', - type: t.sizeMaybePercent, - triggersBounds: diff.any - }, { - name: 'padding-relative-to', - type: t.paddingRelativeTo, - triggersBounds: diff.any - }, { - name: 'bounds-expansion', - type: t.boundsExpansion, - triggersBounds: diff.any - }]; - var nodeBorder = [{ - name: 'border-color', - type: t.color - }, { - name: 'border-opacity', - type: t.zeroOneNumber - }, { - name: 'border-width', - type: t.size, - triggersBounds: diff.any - }, { - name: 'border-style', - type: t.borderStyle - }]; - var backgroundImage = [{ - name: 'background-image', - type: t.urls - }, { - name: 'background-image-crossorigin', - type: t.bgCrossOrigin - }, { - name: 'background-image-opacity', - type: t.zeroOneNumbers - }, { - name: 'background-image-containment', - type: t.bgContainment - }, { - name: 'background-image-smoothing', - type: t.bools - }, { - name: 'background-position-x', - type: t.bgPos - }, { - name: 'background-position-y', - type: t.bgPos - }, { - name: 'background-width-relative-to', - type: t.bgRelativeTo - }, { - name: 'background-height-relative-to', - type: t.bgRelativeTo - }, { - name: 'background-repeat', - type: t.bgRepeat - }, { - name: 'background-fit', - type: t.bgFit - }, { - name: 'background-clip', - type: t.bgClip - }, { - name: 'background-width', - type: t.bgWH - }, { - name: 'background-height', - type: t.bgWH - }, { - name: 'background-offset-x', - type: t.bgPos - }, { - name: 'background-offset-y', - type: t.bgPos - }]; - var compound = [{ - name: 'position', - type: t.position, - triggersBounds: diff.any - }, { - name: 'compound-sizing-wrt-labels', - type: t.compoundIncludeLabels, - triggersBounds: diff.any - }, { - name: 'min-width', - type: t.size, - triggersBounds: diff.any - }, { - name: 'min-width-bias-left', - type: t.sizeMaybePercent, - triggersBounds: diff.any - }, { - name: 'min-width-bias-right', - type: t.sizeMaybePercent, - triggersBounds: diff.any - }, { - name: 'min-height', - type: t.size, - triggersBounds: diff.any - }, { - name: 'min-height-bias-top', - type: t.sizeMaybePercent, - triggersBounds: diff.any - }, { - name: 'min-height-bias-bottom', - type: t.sizeMaybePercent, - triggersBounds: diff.any - }]; - var edgeLine = [{ - name: 'line-style', - type: t.lineStyle - }, { - name: 'line-color', - type: t.color - }, { - name: 'line-fill', - type: t.fill - }, { - name: 'line-cap', - type: t.lineCap - }, { - name: 'line-opacity', - type: t.zeroOneNumber - }, { - name: 'line-dash-pattern', - type: t.numbers - }, { - name: 'line-dash-offset', - type: t.number - }, { - name: 'line-gradient-stop-colors', - type: t.colors - }, { - name: 'line-gradient-stop-positions', - type: t.percentages - }, { - name: 'curve-style', - type: t.curveStyle, - triggersBounds: diff.any, - triggersBoundsOfParallelBeziers: true - }, { - name: 'haystack-radius', - type: t.zeroOneNumber, - triggersBounds: diff.any - }, { - name: 'source-endpoint', - type: t.edgeEndpoint, - triggersBounds: diff.any - }, { - name: 'target-endpoint', - type: t.edgeEndpoint, - triggersBounds: diff.any - }, { - name: 'control-point-step-size', - type: t.size, - triggersBounds: diff.any - }, { - name: 'control-point-distances', - type: t.bidirectionalSizes, - triggersBounds: diff.any - }, { - name: 'control-point-weights', - type: t.numbers, - triggersBounds: diff.any - }, { - name: 'segment-distances', - type: t.bidirectionalSizes, - triggersBounds: diff.any - }, { - name: 'segment-weights', - type: t.numbers, - triggersBounds: diff.any - }, { - name: 'taxi-turn', - type: t.bidirectionalSizeMaybePercent, - triggersBounds: diff.any - }, { - name: 'taxi-turn-min-distance', - type: t.size, - triggersBounds: diff.any - }, { - name: 'taxi-direction', - type: t.axisDirection, - triggersBounds: diff.any - }, { - name: 'edge-distances', - type: t.edgeDistances, - triggersBounds: diff.any - }, { - name: 'arrow-scale', - type: t.positiveNumber, - triggersBounds: diff.any - }, { - name: 'loop-direction', - type: t.angle, - triggersBounds: diff.any - }, { - name: 'loop-sweep', - type: t.angle, - triggersBounds: diff.any - }, { - name: 'source-distance-from-node', - type: t.size, - triggersBounds: diff.any - }, { - name: 'target-distance-from-node', - type: t.size, - triggersBounds: diff.any - }]; - var ghost = [{ - name: 'ghost', - type: t.bool, - triggersBounds: diff.any - }, { - name: 'ghost-offset-x', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'ghost-offset-y', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'ghost-opacity', - type: t.zeroOneNumber - }]; - var core = [{ - name: 'selection-box-color', - type: t.color - }, { - name: 'selection-box-opacity', - type: t.zeroOneNumber - }, { - name: 'selection-box-border-color', - type: t.color - }, { - name: 'selection-box-border-width', - type: t.size - }, { - name: 'active-bg-color', - type: t.color - }, { - name: 'active-bg-opacity', - type: t.zeroOneNumber - }, { - name: 'active-bg-size', - type: t.size - }, { - name: 'outside-texture-bg-color', - type: t.color - }, { - name: 'outside-texture-bg-opacity', - type: t.zeroOneNumber - }]; // pie backgrounds for nodes - - var pie = []; - styfn$6.pieBackgroundN = 16; // because the pie properties are numbered, give access to a constant N (for renderer use) - - pie.push({ - name: 'pie-size', - type: t.sizeMaybePercent - }); - - for (var i = 1; i <= styfn$6.pieBackgroundN; i++) { - pie.push({ - name: 'pie-' + i + '-background-color', - type: t.color - }); - pie.push({ - name: 'pie-' + i + '-background-size', - type: t.percent - }); - pie.push({ - name: 'pie-' + i + '-background-opacity', - type: t.zeroOneNumber - }); - } // edge arrows - - - var edgeArrow = []; - var arrowPrefixes = styfn$6.arrowPrefixes = ['source', 'mid-source', 'target', 'mid-target']; - [{ - name: 'arrow-shape', - type: t.arrowShape, - triggersBounds: diff.any - }, { - name: 'arrow-color', - type: t.color - }, { - name: 'arrow-fill', - type: t.arrowFill - }].forEach(function (prop) { - arrowPrefixes.forEach(function (prefix) { - var name = prefix + '-' + prop.name; - var type = prop.type, - triggersBounds = prop.triggersBounds; - edgeArrow.push({ - name: name, - type: type, - triggersBounds: triggersBounds - }); - }); - }, {}); - var props = styfn$6.properties = [].concat(behavior, transition, visibility, overlay, underlay, ghost, commonLabel, labelDimensions, mainLabel, sourceLabel, targetLabel, nodeBody, nodeBorder, backgroundImage, pie, compound, edgeLine, edgeArrow, core); - var propGroups = styfn$6.propertyGroups = { - // common to all eles - behavior: behavior, - transition: transition, - visibility: visibility, - overlay: overlay, - underlay: underlay, - ghost: ghost, - // labels - commonLabel: commonLabel, - labelDimensions: labelDimensions, - mainLabel: mainLabel, - sourceLabel: sourceLabel, - targetLabel: targetLabel, - // node props - nodeBody: nodeBody, - nodeBorder: nodeBorder, - backgroundImage: backgroundImage, - pie: pie, - compound: compound, - // edge props - edgeLine: edgeLine, - edgeArrow: edgeArrow, - core: core - }; - var propGroupNames = styfn$6.propertyGroupNames = {}; - var propGroupKeys = styfn$6.propertyGroupKeys = Object.keys(propGroups); - propGroupKeys.forEach(function (key) { - propGroupNames[key] = propGroups[key].map(function (prop) { - return prop.name; - }); - propGroups[key].forEach(function (prop) { - return prop.groupKey = key; - }); - }); // define aliases - - var aliases = styfn$6.aliases = [{ - name: 'content', - pointsTo: 'label' - }, { - name: 'control-point-distance', - pointsTo: 'control-point-distances' - }, { - name: 'control-point-weight', - pointsTo: 'control-point-weights' - }, { - name: 'edge-text-rotation', - pointsTo: 'text-rotation' - }, { - name: 'padding-left', - pointsTo: 'padding' - }, { - name: 'padding-right', - pointsTo: 'padding' - }, { - name: 'padding-top', - pointsTo: 'padding' - }, { - name: 'padding-bottom', - pointsTo: 'padding' - }]; // list of property names - - styfn$6.propertyNames = props.map(function (p) { - return p.name; - }); // allow access of properties by name ( e.g. style.properties.height ) - - for (var _i = 0; _i < props.length; _i++) { - var prop = props[_i]; - props[prop.name] = prop; // allow lookup by name - } // map aliases - - - for (var _i2 = 0; _i2 < aliases.length; _i2++) { - var alias = aliases[_i2]; - var pointsToProp = props[alias.pointsTo]; - var aliasProp = { - name: alias.name, - alias: true, - pointsTo: pointsToProp - }; // add alias prop for parsing - - props.push(aliasProp); - props[alias.name] = aliasProp; // allow lookup by name - } -})(); - -styfn$6.getDefaultProperty = function (name) { - return this.getDefaultProperties()[name]; -}; - -styfn$6.getDefaultProperties = function () { - var _p = this._private; - - if (_p.defaultProperties != null) { - return _p.defaultProperties; - } - - var rawProps = extend({ - // core props - 'selection-box-color': '#ddd', - 'selection-box-opacity': 0.65, - 'selection-box-border-color': '#aaa', - 'selection-box-border-width': 1, - 'active-bg-color': 'black', - 'active-bg-opacity': 0.15, - 'active-bg-size': 30, - 'outside-texture-bg-color': '#000', - 'outside-texture-bg-opacity': 0.125, - // common node/edge props - 'events': 'yes', - 'text-events': 'no', - 'text-valign': 'top', - 'text-halign': 'center', - 'text-justification': 'auto', - 'line-height': 1, - 'color': '#000', - 'text-outline-color': '#000', - 'text-outline-width': 0, - 'text-outline-opacity': 1, - 'text-opacity': 1, - 'text-decoration': 'none', - 'text-transform': 'none', - 'text-wrap': 'none', - 'text-overflow-wrap': 'whitespace', - 'text-max-width': 9999, - 'text-background-color': '#000', - 'text-background-opacity': 0, - 'text-background-shape': 'rectangle', - 'text-background-padding': 0, - 'text-border-opacity': 0, - 'text-border-width': 0, - 'text-border-style': 'solid', - 'text-border-color': '#000', - 'font-family': 'Helvetica Neue, Helvetica, sans-serif', - 'font-style': 'normal', - 'font-weight': 'normal', - 'font-size': 16, - 'min-zoomed-font-size': 0, - 'text-rotation': 'none', - 'source-text-rotation': 'none', - 'target-text-rotation': 'none', - 'visibility': 'visible', - 'display': 'element', - 'opacity': 1, - 'z-compound-depth': 'auto', - 'z-index-compare': 'auto', - 'z-index': 0, - 'label': '', - 'text-margin-x': 0, - 'text-margin-y': 0, - 'source-label': '', - 'source-text-offset': 0, - 'source-text-margin-x': 0, - 'source-text-margin-y': 0, - 'target-label': '', - 'target-text-offset': 0, - 'target-text-margin-x': 0, - 'target-text-margin-y': 0, - 'overlay-opacity': 0, - 'overlay-color': '#000', - 'overlay-padding': 10, - 'overlay-shape': 'round-rectangle', - 'underlay-opacity': 0, - 'underlay-color': '#000', - 'underlay-padding': 10, - 'underlay-shape': 'round-rectangle', - 'transition-property': 'none', - 'transition-duration': 0, - 'transition-delay': 0, - 'transition-timing-function': 'linear', - // node props - 'background-blacken': 0, - 'background-color': '#999', - 'background-fill': 'solid', - 'background-opacity': 1, - 'background-image': 'none', - 'background-image-crossorigin': 'anonymous', - 'background-image-opacity': 1, - 'background-image-containment': 'inside', - 'background-image-smoothing': 'yes', - 'background-position-x': '50%', - 'background-position-y': '50%', - 'background-offset-x': 0, - 'background-offset-y': 0, - 'background-width-relative-to': 'include-padding', - 'background-height-relative-to': 'include-padding', - 'background-repeat': 'no-repeat', - 'background-fit': 'none', - 'background-clip': 'node', - 'background-width': 'auto', - 'background-height': 'auto', - 'border-color': '#000', - 'border-opacity': 1, - 'border-width': 0, - 'border-style': 'solid', - 'height': 30, - 'width': 30, - 'shape': 'ellipse', - 'shape-polygon-points': '-1, -1, 1, -1, 1, 1, -1, 1', - 'bounds-expansion': 0, - // node gradient - 'background-gradient-direction': 'to-bottom', - 'background-gradient-stop-colors': '#999', - 'background-gradient-stop-positions': '0%', - // ghost props - 'ghost': 'no', - 'ghost-offset-y': 0, - 'ghost-offset-x': 0, - 'ghost-opacity': 0, - // compound props - 'padding': 0, - 'padding-relative-to': 'width', - 'position': 'origin', - 'compound-sizing-wrt-labels': 'include', - 'min-width': 0, - 'min-width-bias-left': 0, - 'min-width-bias-right': 0, - 'min-height': 0, - 'min-height-bias-top': 0, - 'min-height-bias-bottom': 0 - }, { - // node pie bg - 'pie-size': '100%' - }, [{ - name: 'pie-{{i}}-background-color', - value: 'black' - }, { - name: 'pie-{{i}}-background-size', - value: '0%' - }, { - name: 'pie-{{i}}-background-opacity', - value: 1 - }].reduce(function (css, prop) { - for (var i = 1; i <= styfn$6.pieBackgroundN; i++) { - var name = prop.name.replace('{{i}}', i); - var val = prop.value; - css[name] = val; - } - - return css; - }, {}), { - // edge props - 'line-style': 'solid', - 'line-color': '#999', - 'line-fill': 'solid', - 'line-cap': 'butt', - 'line-opacity': 1, - 'line-gradient-stop-colors': '#999', - 'line-gradient-stop-positions': '0%', - 'control-point-step-size': 40, - 'control-point-weights': 0.5, - 'segment-weights': 0.5, - 'segment-distances': 20, - 'taxi-turn': '50%', - 'taxi-turn-min-distance': 10, - 'taxi-direction': 'auto', - 'edge-distances': 'intersection', - 'curve-style': 'haystack', - 'haystack-radius': 0, - 'arrow-scale': 1, - 'loop-direction': '-45deg', - 'loop-sweep': '-90deg', - 'source-distance-from-node': 0, - 'target-distance-from-node': 0, - 'source-endpoint': 'outside-to-node', - 'target-endpoint': 'outside-to-node', - 'line-dash-pattern': [6, 3], - 'line-dash-offset': 0 - }, [{ - name: 'arrow-shape', - value: 'none' - }, { - name: 'arrow-color', - value: '#999' - }, { - name: 'arrow-fill', - value: 'filled' - }].reduce(function (css, prop) { - styfn$6.arrowPrefixes.forEach(function (prefix) { - var name = prefix + '-' + prop.name; - var val = prop.value; - css[name] = val; - }); - return css; - }, {})); - var parsedProps = {}; - - for (var i = 0; i < this.properties.length; i++) { - var prop = this.properties[i]; - - if (prop.pointsTo) { - continue; - } - - var name = prop.name; - var val = rawProps[name]; - var parsedProp = this.parse(name, val); - parsedProps[name] = parsedProp; - } - - _p.defaultProperties = parsedProps; - return _p.defaultProperties; -}; - -styfn$6.addDefaultStylesheet = function () { - this.selector(':parent').css({ - 'shape': 'rectangle', - 'padding': 10, - 'background-color': '#eee', - 'border-color': '#ccc', - 'border-width': 1 - }).selector('edge').css({ - 'width': 3 - }).selector(':loop').css({ - 'curve-style': 'bezier' - }).selector('edge:compound').css({ - 'curve-style': 'bezier', - 'source-endpoint': 'outside-to-line', - 'target-endpoint': 'outside-to-line' - }).selector(':selected').css({ - 'background-color': '#0169D9', - 'line-color': '#0169D9', - 'source-arrow-color': '#0169D9', - 'target-arrow-color': '#0169D9', - 'mid-source-arrow-color': '#0169D9', - 'mid-target-arrow-color': '#0169D9' - }).selector(':parent:selected').css({ - 'background-color': '#CCE1F9', - 'border-color': '#aec8e5' - }).selector(':active').css({ - 'overlay-color': 'black', - 'overlay-padding': 10, - 'overlay-opacity': 0.25 - }); - this.defaultLength = this.length; -}; - -var styfn$7 = {}; // a caching layer for property parsing - -styfn$7.parse = function (name, value, propIsBypass, propIsFlat) { - var self = this; // function values can't be cached in all cases, and there isn't much benefit of caching them anyway - - if (fn(value)) { - return self.parseImplWarn(name, value, propIsBypass, propIsFlat); - } - - var flatKey = propIsFlat === 'mapping' || propIsFlat === true || propIsFlat === false || propIsFlat == null ? 'dontcare' : propIsFlat; - var bypassKey = propIsBypass ? 't' : 'f'; - var valueKey = '' + value; - var argHash = hashStrings(name, valueKey, bypassKey, flatKey); - var propCache = self.propCache = self.propCache || []; - var ret; - - if (!(ret = propCache[argHash])) { - ret = propCache[argHash] = self.parseImplWarn(name, value, propIsBypass, propIsFlat); - } // - bypasses can't be shared b/c the value can be changed by animations or otherwise overridden - // - mappings can't be shared b/c mappings are per-element - - - if (propIsBypass || propIsFlat === 'mapping') { - // need a copy since props are mutated later in their lifecycles - ret = copy(ret); - - if (ret) { - ret.value = copy(ret.value); // because it could be an array, e.g. colour - } - } - - return ret; -}; - -styfn$7.parseImplWarn = function (name, value, propIsBypass, propIsFlat) { - var prop = this.parseImpl(name, value, propIsBypass, propIsFlat); - - if (!prop && value != null) { - warn("The style property `".concat(name, ": ").concat(value, "` is invalid")); - } - - if (prop && (prop.name === 'width' || prop.name === 'height') && value === 'label') { - warn('The style value of `label` is deprecated for `' + prop.name + '`'); - } - - return prop; -}; // parse a property; return null on invalid; return parsed property otherwise -// fields : -// - name : the name of the property -// - value : the parsed, native-typed value of the property -// - strValue : a string value that represents the property value in valid css -// - bypass : true iff the property is a bypass property - - -styfn$7.parseImpl = function (name, value, propIsBypass, propIsFlat) { - var self = this; - name = camel2dash(name); // make sure the property name is in dash form (e.g. 'property-name' not 'propertyName') - - var property = self.properties[name]; - var passedValue = value; - var types = self.types; - - if (!property) { - return null; - } // return null on property of unknown name - - - if (value === undefined) { - return null; - } // can't assign undefined - // the property may be an alias - - - if (property.alias) { - property = property.pointsTo; - name = property.name; - } - - var valueIsString = string(value); - - if (valueIsString) { - // trim the value to make parsing easier - value = value.trim(); - } - - var type = property.type; - - if (!type) { - return null; - } // no type, no luck - // check if bypass is null or empty string (i.e. indication to delete bypass property) - - - if (propIsBypass && (value === '' || value === null)) { - return { - name: name, - value: value, - bypass: true, - deleteBypass: true - }; - } // check if value is a function used as a mapper - - - if (fn(value)) { - return { - name: name, - value: value, - strValue: 'fn', - mapped: types.fn, - bypass: propIsBypass - }; - } // check if value is mapped - - - var data, mapData; - - if (!valueIsString || propIsFlat || value.length < 7 || value[1] !== 'a') ; else if (value.length >= 7 && value[0] === 'd' && (data = new RegExp(types.data.regex).exec(value))) { - if (propIsBypass) { - return false; - } // mappers not allowed in bypass - - - var mapped = types.data; - return { - name: name, - value: data, - strValue: '' + value, - mapped: mapped, - field: data[1], - bypass: propIsBypass - }; - } else if (value.length >= 10 && value[0] === 'm' && (mapData = new RegExp(types.mapData.regex).exec(value))) { - if (propIsBypass) { - return false; - } // mappers not allowed in bypass - - - if (type.multiple) { - return false; - } // impossible to map to num - - - var _mapped = types.mapData; // we can map only if the type is a colour or a number - - if (!(type.color || type.number)) { - return false; - } - - var valueMin = this.parse(name, mapData[4]); // parse to validate - - if (!valueMin || valueMin.mapped) { - return false; - } // can't be invalid or mapped - - - var valueMax = this.parse(name, mapData[5]); // parse to validate - - if (!valueMax || valueMax.mapped) { - return false; - } // can't be invalid or mapped - // check if valueMin and valueMax are the same - - - if (valueMin.pfValue === valueMax.pfValue || valueMin.strValue === valueMax.strValue) { - warn('`' + name + ': ' + value + '` is not a valid mapper because the output range is zero; converting to `' + name + ': ' + valueMin.strValue + '`'); - return this.parse(name, valueMin.strValue); // can't make much of a mapper without a range - } else if (type.color) { - var c1 = valueMin.value; - var c2 = valueMax.value; - var same = c1[0] === c2[0] // red - && c1[1] === c2[1] // green - && c1[2] === c2[2] // blue - && ( // optional alpha - c1[3] === c2[3] // same alpha outright - || (c1[3] == null || c1[3] === 1) && ( // full opacity for colour 1? - c2[3] == null || c2[3] === 1) // full opacity for colour 2? - ); - - if (same) { - return false; - } // can't make a mapper without a range - - } - - return { - name: name, - value: mapData, - strValue: '' + value, - mapped: _mapped, - field: mapData[1], - fieldMin: parseFloat(mapData[2]), - // min & max are numeric - fieldMax: parseFloat(mapData[3]), - valueMin: valueMin.value, - valueMax: valueMax.value, - bypass: propIsBypass - }; - } - - if (type.multiple && propIsFlat !== 'multiple') { - var vals; - - if (valueIsString) { - vals = value.split(/\s+/); - } else if (array(value)) { - vals = value; - } else { - vals = [value]; - } - - if (type.evenMultiple && vals.length % 2 !== 0) { - return null; - } - - var valArr = []; - var unitsArr = []; - var pfValArr = []; - var strVal = ''; - var hasEnum = false; - - for (var i = 0; i < vals.length; i++) { - var p = self.parse(name, vals[i], propIsBypass, 'multiple'); - hasEnum = hasEnum || string(p.value); - valArr.push(p.value); - pfValArr.push(p.pfValue != null ? p.pfValue : p.value); - unitsArr.push(p.units); - strVal += (i > 0 ? ' ' : '') + p.strValue; - } - - if (type.validate && !type.validate(valArr, unitsArr)) { - return null; - } - - if (type.singleEnum && hasEnum) { - if (valArr.length === 1 && string(valArr[0])) { - return { - name: name, - value: valArr[0], - strValue: valArr[0], - bypass: propIsBypass - }; - } else { - return null; - } - } - - return { - name: name, - value: valArr, - pfValue: pfValArr, - strValue: strVal, - bypass: propIsBypass, - units: unitsArr - }; - } // several types also allow enums - - - var checkEnums = function checkEnums() { - for (var _i = 0; _i < type.enums.length; _i++) { - var en = type.enums[_i]; - - if (en === value) { - return { - name: name, - value: value, - strValue: '' + value, - bypass: propIsBypass - }; - } - } - - return null; - }; // check the type and return the appropriate object - - - if (type.number) { - var units; - var implicitUnits = 'px'; // not set => px - - if (type.units) { - // use specified units if set - units = type.units; - } - - if (type.implicitUnits) { - implicitUnits = type.implicitUnits; - } - - if (!type.unitless) { - if (valueIsString) { - var unitsRegex = 'px|em' + (type.allowPercent ? '|\\%' : ''); - - if (units) { - unitsRegex = units; - } // only allow explicit units if so set - - - var match = value.match('^(' + number$1 + ')(' + unitsRegex + ')?' + '$'); - - if (match) { - value = match[1]; - units = match[2] || implicitUnits; - } - } else if (!units || type.implicitUnits) { - units = implicitUnits; // implicitly px if unspecified - } - } - - value = parseFloat(value); // if not a number and enums not allowed, then the value is invalid - - if (isNaN(value) && type.enums === undefined) { - return null; - } // check if this number type also accepts special keywords in place of numbers - // (i.e. `left`, `auto`, etc) - - - if (isNaN(value) && type.enums !== undefined) { - value = passedValue; - return checkEnums(); - } // check if value must be an integer - - - if (type.integer && !integer(value)) { - return null; - } // check value is within range - - - if (type.min !== undefined && (value < type.min || type.strictMin && value === type.min) || type.max !== undefined && (value > type.max || type.strictMax && value === type.max)) { - return null; - } - - var ret = { - name: name, - value: value, - strValue: '' + value + (units ? units : ''), - units: units, - bypass: propIsBypass - }; // normalise value in pixels - - if (type.unitless || units !== 'px' && units !== 'em') { - ret.pfValue = value; - } else { - ret.pfValue = units === 'px' || !units ? value : this.getEmSizeInPixels() * value; - } // normalise value in ms - - - if (units === 'ms' || units === 's') { - ret.pfValue = units === 'ms' ? value : 1000 * value; - } // normalise value in rad - - - if (units === 'deg' || units === 'rad') { - ret.pfValue = units === 'rad' ? value : deg2rad(value); - } // normalize value in % - - - if (units === '%') { - ret.pfValue = value / 100; - } - - return ret; - } else if (type.propList) { - var props = []; - var propsStr = '' + value; - - if (propsStr === 'none') ; else { - // go over each prop - var propsSplit = propsStr.split(/\s*,\s*|\s+/); - - for (var _i2 = 0; _i2 < propsSplit.length; _i2++) { - var propName = propsSplit[_i2].trim(); - - if (self.properties[propName]) { - props.push(propName); - } else { - warn('`' + propName + '` is not a valid property name'); - } - } - - if (props.length === 0) { - return null; - } - } - - return { - name: name, - value: props, - strValue: props.length === 0 ? 'none' : props.join(' '), - bypass: propIsBypass - }; - } else if (type.color) { - var tuple = color2tuple(value); - - if (!tuple) { - return null; - } - - return { - name: name, - value: tuple, - pfValue: tuple, - strValue: 'rgb(' + tuple[0] + ',' + tuple[1] + ',' + tuple[2] + ')', - // n.b. no spaces b/c of multiple support - bypass: propIsBypass - }; - } else if (type.regex || type.regexes) { - // first check enums - if (type.enums) { - var enumProp = checkEnums(); - - if (enumProp) { - return enumProp; - } - } - - var regexes = type.regexes ? type.regexes : [type.regex]; - - for (var _i3 = 0; _i3 < regexes.length; _i3++) { - var regex = new RegExp(regexes[_i3]); // make a regex from the type string - - var m = regex.exec(value); - - if (m) { - // regex matches - return { - name: name, - value: type.singleRegexMatchValue ? m[1] : m, - strValue: '' + value, - bypass: propIsBypass - }; - } - } - - return null; // didn't match any - } else if (type.string) { - // just return - return { - name: name, - value: '' + value, - strValue: '' + value, - bypass: propIsBypass - }; - } else if (type.enums) { - // check enums last because it's a combo type in others - return checkEnums(); - } else { - return null; // not a type we can handle - } -}; - -var Style = function Style(cy) { - if (!(this instanceof Style)) { - return new Style(cy); - } - - if (!core(cy)) { - error('A style must have a core reference'); - return; - } - - this._private = { - cy: cy, - coreStyle: {} - }; - this.length = 0; - this.resetToDefault(); -}; - -var styfn$8 = Style.prototype; - -styfn$8.instanceString = function () { - return 'style'; -}; // remove all contexts - - -styfn$8.clear = function () { - var _p = this._private; - var cy = _p.cy; - var eles = cy.elements(); - - for (var i = 0; i < this.length; i++) { - this[i] = undefined; - } - - this.length = 0; - _p.contextStyles = {}; - _p.propDiffs = {}; - this.cleanElements(eles, true); - eles.forEach(function (ele) { - var ele_p = ele[0]._private; - ele_p.styleDirty = true; - ele_p.appliedInitStyle = false; - }); - return this; // chaining -}; - -styfn$8.resetToDefault = function () { - this.clear(); - this.addDefaultStylesheet(); - return this; -}; // builds a style object for the 'core' selector - - -styfn$8.core = function (propName) { - return this._private.coreStyle[propName] || this.getDefaultProperty(propName); -}; // create a new context from the specified selector string and switch to that context - - -styfn$8.selector = function (selectorStr) { - // 'core' is a special case and does not need a selector - var selector = selectorStr === 'core' ? null : new Selector(selectorStr); - var i = this.length++; // new context means new index - - this[i] = { - selector: selector, - properties: [], - mappedProperties: [], - index: i - }; - return this; // chaining -}; // add one or many css rules to the current context - - -styfn$8.css = function () { - var self = this; - var args = arguments; - - if (args.length === 1) { - var map = args[0]; - - for (var i = 0; i < self.properties.length; i++) { - var prop = self.properties[i]; - var mapVal = map[prop.name]; - - if (mapVal === undefined) { - mapVal = map[dash2camel(prop.name)]; - } - - if (mapVal !== undefined) { - this.cssRule(prop.name, mapVal); - } - } - } else if (args.length === 2) { - this.cssRule(args[0], args[1]); - } // do nothing if args are invalid - - - return this; // chaining -}; - -styfn$8.style = styfn$8.css; // add a single css rule to the current context - -styfn$8.cssRule = function (name, value) { - // name-value pair - var property = this.parse(name, value); // add property to current context if valid - - if (property) { - var i = this.length - 1; - this[i].properties.push(property); - this[i].properties[property.name] = property; // allow access by name as well - - if (property.name.match(/pie-(\d+)-background-size/) && property.value) { - this._private.hasPie = true; - } - - if (property.mapped) { - this[i].mappedProperties.push(property); - } // add to core style if necessary - - - var currentSelectorIsCore = !this[i].selector; - - if (currentSelectorIsCore) { - this._private.coreStyle[property.name] = property; - } - } - - return this; // chaining -}; - -styfn$8.append = function (style) { - if (stylesheet(style)) { - style.appendToStyle(this); - } else if (array(style)) { - this.appendFromJson(style); - } else if (string(style)) { - this.appendFromString(style); - } // you probably wouldn't want to append a Style, since you'd duplicate the default parts - - - return this; -}; // static function - - -Style.fromJson = function (cy, json) { - var style = new Style(cy); - style.fromJson(json); - return style; -}; - -Style.fromString = function (cy, string) { - return new Style(cy).fromString(string); -}; - -[styfn, styfn$1, styfn$2, styfn$3, styfn$4, styfn$5, styfn$6, styfn$7].forEach(function (props) { - extend(styfn$8, props); -}); -Style.types = styfn$8.types; -Style.properties = styfn$8.properties; -Style.propertyGroups = styfn$8.propertyGroups; -Style.propertyGroupNames = styfn$8.propertyGroupNames; -Style.propertyGroupKeys = styfn$8.propertyGroupKeys; - -var corefn$7 = { - style: function style(newStyle) { - if (newStyle) { - var s = this.setStyle(newStyle); - s.update(); - } - - return this._private.style; - }, - setStyle: function setStyle(style) { - var _p = this._private; - - if (stylesheet(style)) { - _p.style = style.generateStyle(this); - } else if (array(style)) { - _p.style = Style.fromJson(this, style); - } else if (string(style)) { - _p.style = Style.fromString(this, style); - } else { - _p.style = Style(this); - } - - return _p.style; - }, - // e.g. cy.data() changed => recalc ele mappers - updateStyle: function updateStyle() { - this.mutableElements().updateStyle(); // just send to all eles - } -}; - -var defaultSelectionType = 'single'; -var corefn$8 = { - autolock: function autolock(bool) { - if (bool !== undefined) { - this._private.autolock = bool ? true : false; - } else { - return this._private.autolock; - } - - return this; // chaining - }, - autoungrabify: function autoungrabify(bool) { - if (bool !== undefined) { - this._private.autoungrabify = bool ? true : false; - } else { - return this._private.autoungrabify; - } - - return this; // chaining - }, - autounselectify: function autounselectify(bool) { - if (bool !== undefined) { - this._private.autounselectify = bool ? true : false; - } else { - return this._private.autounselectify; - } - - return this; // chaining - }, - selectionType: function selectionType(selType) { - var _p = this._private; - - if (_p.selectionType == null) { - _p.selectionType = defaultSelectionType; - } - - if (selType !== undefined) { - if (selType === 'additive' || selType === 'single') { - _p.selectionType = selType; - } - } else { - return _p.selectionType; - } - - return this; - }, - panningEnabled: function panningEnabled(bool) { - if (bool !== undefined) { - this._private.panningEnabled = bool ? true : false; - } else { - return this._private.panningEnabled; - } - - return this; // chaining - }, - userPanningEnabled: function userPanningEnabled(bool) { - if (bool !== undefined) { - this._private.userPanningEnabled = bool ? true : false; - } else { - return this._private.userPanningEnabled; - } - - return this; // chaining - }, - zoomingEnabled: function zoomingEnabled(bool) { - if (bool !== undefined) { - this._private.zoomingEnabled = bool ? true : false; - } else { - return this._private.zoomingEnabled; - } - - return this; // chaining - }, - userZoomingEnabled: function userZoomingEnabled(bool) { - if (bool !== undefined) { - this._private.userZoomingEnabled = bool ? true : false; - } else { - return this._private.userZoomingEnabled; - } - - return this; // chaining - }, - boxSelectionEnabled: function boxSelectionEnabled(bool) { - if (bool !== undefined) { - this._private.boxSelectionEnabled = bool ? true : false; - } else { - return this._private.boxSelectionEnabled; - } - - return this; // chaining - }, - pan: function pan() { - var args = arguments; - var pan = this._private.pan; - var dim, val, dims, x, y; - - switch (args.length) { - case 0: - // .pan() - return pan; - - case 1: - if (string(args[0])) { - // .pan('x') - dim = args[0]; - return pan[dim]; - } else if (plainObject(args[0])) { - // .pan({ x: 0, y: 100 }) - if (!this._private.panningEnabled) { - return this; - } - - dims = args[0]; - x = dims.x; - y = dims.y; - - if (number(x)) { - pan.x = x; - } - - if (number(y)) { - pan.y = y; - } - - this.emit('pan viewport'); - } - - break; - - case 2: - // .pan('x', 100) - if (!this._private.panningEnabled) { - return this; - } - - dim = args[0]; - val = args[1]; - - if ((dim === 'x' || dim === 'y') && number(val)) { - pan[dim] = val; - } - - this.emit('pan viewport'); - break; - // invalid - } - - this.notify('viewport'); - return this; // chaining - }, - panBy: function panBy(arg0, arg1) { - var args = arguments; - var pan = this._private.pan; - var dim, val, dims, x, y; - - if (!this._private.panningEnabled) { - return this; - } - - switch (args.length) { - case 1: - if (plainObject(arg0)) { - // .panBy({ x: 0, y: 100 }) - dims = args[0]; - x = dims.x; - y = dims.y; - - if (number(x)) { - pan.x += x; - } - - if (number(y)) { - pan.y += y; - } - - this.emit('pan viewport'); - } - - break; - - case 2: - // .panBy('x', 100) - dim = arg0; - val = arg1; - - if ((dim === 'x' || dim === 'y') && number(val)) { - pan[dim] += val; - } - - this.emit('pan viewport'); - break; - // invalid - } - - this.notify('viewport'); - return this; // chaining - }, - fit: function fit(elements, padding) { - var viewportState = this.getFitViewport(elements, padding); - - if (viewportState) { - var _p = this._private; - _p.zoom = viewportState.zoom; - _p.pan = viewportState.pan; - this.emit('pan zoom viewport'); - this.notify('viewport'); - } - - return this; // chaining - }, - getFitViewport: function getFitViewport(elements, padding) { - if (number(elements) && padding === undefined) { - // elements is optional - padding = elements; - elements = undefined; - } - - if (!this._private.panningEnabled || !this._private.zoomingEnabled) { - return; - } - - var bb; - - if (string(elements)) { - var sel = elements; - elements = this.$(sel); - } else if (boundingBox(elements)) { - // assume bb - var bbe = elements; - bb = { - x1: bbe.x1, - y1: bbe.y1, - x2: bbe.x2, - y2: bbe.y2 - }; - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - } else if (!elementOrCollection(elements)) { - elements = this.mutableElements(); - } - - if (elementOrCollection(elements) && elements.empty()) { - return; - } // can't fit to nothing - - - bb = bb || elements.boundingBox(); - var w = this.width(); - var h = this.height(); - var zoom; - padding = number(padding) ? padding : 0; - - if (!isNaN(w) && !isNaN(h) && w > 0 && h > 0 && !isNaN(bb.w) && !isNaN(bb.h) && bb.w > 0 && bb.h > 0) { - zoom = Math.min((w - 2 * padding) / bb.w, (h - 2 * padding) / bb.h); // crop zoom - - zoom = zoom > this._private.maxZoom ? this._private.maxZoom : zoom; - zoom = zoom < this._private.minZoom ? this._private.minZoom : zoom; - var pan = { - // now pan to middle - x: (w - zoom * (bb.x1 + bb.x2)) / 2, - y: (h - zoom * (bb.y1 + bb.y2)) / 2 - }; - return { - zoom: zoom, - pan: pan - }; - } - - return; - }, - zoomRange: function zoomRange(min, max) { - var _p = this._private; - - if (max == null) { - var opts = min; - min = opts.min; - max = opts.max; - } - - if (number(min) && number(max) && min <= max) { - _p.minZoom = min; - _p.maxZoom = max; - } else if (number(min) && max === undefined && min <= _p.maxZoom) { - _p.minZoom = min; - } else if (number(max) && min === undefined && max >= _p.minZoom) { - _p.maxZoom = max; - } - - return this; - }, - minZoom: function minZoom(zoom) { - if (zoom === undefined) { - return this._private.minZoom; - } else { - return this.zoomRange({ - min: zoom - }); - } - }, - maxZoom: function maxZoom(zoom) { - if (zoom === undefined) { - return this._private.maxZoom; - } else { - return this.zoomRange({ - max: zoom - }); - } - }, - getZoomedViewport: function getZoomedViewport(params) { - var _p = this._private; - var currentPan = _p.pan; - var currentZoom = _p.zoom; - var pos; // in rendered px - - var zoom; - var bail = false; - - if (!_p.zoomingEnabled) { - // zooming disabled - bail = true; - } - - if (number(params)) { - // then set the zoom - zoom = params; - } else if (plainObject(params)) { - // then zoom about a point - zoom = params.level; - - if (params.position != null) { - pos = modelToRenderedPosition(params.position, currentZoom, currentPan); - } else if (params.renderedPosition != null) { - pos = params.renderedPosition; - } - - if (pos != null && !_p.panningEnabled) { - // panning disabled - bail = true; - } - } // crop zoom - - - zoom = zoom > _p.maxZoom ? _p.maxZoom : zoom; - zoom = zoom < _p.minZoom ? _p.minZoom : zoom; // can't zoom with invalid params - - if (bail || !number(zoom) || zoom === currentZoom || pos != null && (!number(pos.x) || !number(pos.y))) { - return null; - } - - if (pos != null) { - // set zoom about position - var pan1 = currentPan; - var zoom1 = currentZoom; - var zoom2 = zoom; - var pan2 = { - x: -zoom2 / zoom1 * (pos.x - pan1.x) + pos.x, - y: -zoom2 / zoom1 * (pos.y - pan1.y) + pos.y - }; - return { - zoomed: true, - panned: true, - zoom: zoom2, - pan: pan2 - }; - } else { - // just set the zoom - return { - zoomed: true, - panned: false, - zoom: zoom, - pan: currentPan - }; - } - }, - zoom: function zoom(params) { - if (params === undefined) { - // get - return this._private.zoom; - } else { - // set - var vp = this.getZoomedViewport(params); - var _p = this._private; - - if (vp == null || !vp.zoomed) { - return this; - } - - _p.zoom = vp.zoom; - - if (vp.panned) { - _p.pan.x = vp.pan.x; - _p.pan.y = vp.pan.y; - } - - this.emit('zoom' + (vp.panned ? ' pan' : '') + ' viewport'); - this.notify('viewport'); - return this; // chaining - } - }, - viewport: function viewport(opts) { - var _p = this._private; - var zoomDefd = true; - var panDefd = true; - var events = []; // to trigger - - var zoomFailed = false; - var panFailed = false; - - if (!opts) { - return this; - } - - if (!number(opts.zoom)) { - zoomDefd = false; - } - - if (!plainObject(opts.pan)) { - panDefd = false; - } - - if (!zoomDefd && !panDefd) { - return this; - } - - if (zoomDefd) { - var z = opts.zoom; - - if (z < _p.minZoom || z > _p.maxZoom || !_p.zoomingEnabled) { - zoomFailed = true; - } else { - _p.zoom = z; - events.push('zoom'); - } - } - - if (panDefd && (!zoomFailed || !opts.cancelOnFailedZoom) && _p.panningEnabled) { - var p = opts.pan; - - if (number(p.x)) { - _p.pan.x = p.x; - panFailed = false; - } - - if (number(p.y)) { - _p.pan.y = p.y; - panFailed = false; - } - - if (!panFailed) { - events.push('pan'); - } - } - - if (events.length > 0) { - events.push('viewport'); - this.emit(events.join(' ')); - this.notify('viewport'); - } - - return this; // chaining - }, - center: function center(elements) { - var pan = this.getCenterPan(elements); - - if (pan) { - this._private.pan = pan; - this.emit('pan viewport'); - this.notify('viewport'); - } - - return this; // chaining - }, - getCenterPan: function getCenterPan(elements, zoom) { - if (!this._private.panningEnabled) { - return; - } - - if (string(elements)) { - var selector = elements; - elements = this.mutableElements().filter(selector); - } else if (!elementOrCollection(elements)) { - elements = this.mutableElements(); - } - - if (elements.length === 0) { - return; - } // can't centre pan to nothing - - - var bb = elements.boundingBox(); - var w = this.width(); - var h = this.height(); - zoom = zoom === undefined ? this._private.zoom : zoom; - var pan = { - // middle - x: (w - zoom * (bb.x1 + bb.x2)) / 2, - y: (h - zoom * (bb.y1 + bb.y2)) / 2 - }; - return pan; - }, - reset: function reset() { - if (!this._private.panningEnabled || !this._private.zoomingEnabled) { - return this; - } - - this.viewport({ - pan: { - x: 0, - y: 0 - }, - zoom: 1 - }); - return this; // chaining - }, - invalidateSize: function invalidateSize() { - this._private.sizeCache = null; - }, - size: function size() { - var _p = this._private; - var container = _p.container; - return _p.sizeCache = _p.sizeCache || (container ? function () { - var style = window$1.getComputedStyle(container); - - var val = function val(name) { - return parseFloat(style.getPropertyValue(name)); - }; - - return { - width: container.clientWidth - val('padding-left') - val('padding-right'), - height: container.clientHeight - val('padding-top') - val('padding-bottom') - }; - }() : { - // fallback if no container (not 0 b/c can be used for dividing etc) - width: 1, - height: 1 - }); - }, - width: function width() { - return this.size().width; - }, - height: function height() { - return this.size().height; - }, - extent: function extent() { - var pan = this._private.pan; - var zoom = this._private.zoom; - var rb = this.renderedExtent(); - var b = { - x1: (rb.x1 - pan.x) / zoom, - x2: (rb.x2 - pan.x) / zoom, - y1: (rb.y1 - pan.y) / zoom, - y2: (rb.y2 - pan.y) / zoom - }; - b.w = b.x2 - b.x1; - b.h = b.y2 - b.y1; - return b; - }, - renderedExtent: function renderedExtent() { - var width = this.width(); - var height = this.height(); - return { - x1: 0, - y1: 0, - x2: width, - y2: height, - w: width, - h: height - }; - }, - multiClickDebounceTime: function multiClickDebounceTime(_int) { - if (_int) this._private.multiClickDebounceTime = _int;else return this._private.multiClickDebounceTime; - return this; // chaining - } -}; // aliases - -corefn$8.centre = corefn$8.center; // backwards compatibility - -corefn$8.autolockNodes = corefn$8.autolock; -corefn$8.autoungrabifyNodes = corefn$8.autoungrabify; - -var fn$6 = { - data: define$3.data({ - field: 'data', - bindingEvent: 'data', - allowBinding: true, - allowSetting: true, - settingEvent: 'data', - settingTriggersEvent: true, - triggerFnName: 'trigger', - allowGetting: true, - updateStyle: true - }), - removeData: define$3.removeData({ - field: 'data', - event: 'data', - triggerFnName: 'trigger', - triggerEvent: true, - updateStyle: true - }), - scratch: define$3.data({ - field: 'scratch', - bindingEvent: 'scratch', - allowBinding: true, - allowSetting: true, - settingEvent: 'scratch', - settingTriggersEvent: true, - triggerFnName: 'trigger', - allowGetting: true, - updateStyle: true - }), - removeScratch: define$3.removeData({ - field: 'scratch', - event: 'scratch', - triggerFnName: 'trigger', - triggerEvent: true, - updateStyle: true - }) -}; // aliases - -fn$6.attr = fn$6.data; -fn$6.removeAttr = fn$6.removeData; - -var Core = function Core(opts) { - var cy = this; - opts = extend({}, opts); - var container = opts.container; // allow for passing a wrapped jquery object - // e.g. cytoscape({ container: $('#cy') }) - - if (container && !htmlElement(container) && htmlElement(container[0])) { - container = container[0]; - } - - var reg = container ? container._cyreg : null; // e.g. already registered some info (e.g. readies) via jquery - - reg = reg || {}; - - if (reg && reg.cy) { - reg.cy.destroy(); - reg = {}; // old instance => replace reg completely - } - - var readies = reg.readies = reg.readies || []; - - if (container) { - container._cyreg = reg; - } // make sure container assoc'd reg points to this cy - - - reg.cy = cy; - var head = window$1 !== undefined && container !== undefined && !opts.headless; - var options = opts; - options.layout = extend({ - name: head ? 'grid' : 'null' - }, options.layout); - options.renderer = extend({ - name: head ? 'canvas' : 'null' - }, options.renderer); - - var defVal = function defVal(def, val, altVal) { - if (val !== undefined) { - return val; - } else if (altVal !== undefined) { - return altVal; - } else { - return def; - } - }; - - var _p = this._private = { - container: container, - // html dom ele container - ready: false, - // whether ready has been triggered - options: options, - // cached options - elements: new Collection(this), - // elements in the graph - listeners: [], - // list of listeners - aniEles: new Collection(this), - // elements being animated - data: options.data || {}, - // data for the core - scratch: {}, - // scratch object for core - layout: null, - renderer: null, - destroyed: false, - // whether destroy was called - notificationsEnabled: true, - // whether notifications are sent to the renderer - minZoom: 1e-50, - maxZoom: 1e50, - zoomingEnabled: defVal(true, options.zoomingEnabled), - userZoomingEnabled: defVal(true, options.userZoomingEnabled), - panningEnabled: defVal(true, options.panningEnabled), - userPanningEnabled: defVal(true, options.userPanningEnabled), - boxSelectionEnabled: defVal(true, options.boxSelectionEnabled), - autolock: defVal(false, options.autolock, options.autolockNodes), - autoungrabify: defVal(false, options.autoungrabify, options.autoungrabifyNodes), - autounselectify: defVal(false, options.autounselectify), - styleEnabled: options.styleEnabled === undefined ? head : options.styleEnabled, - zoom: number(options.zoom) ? options.zoom : 1, - pan: { - x: plainObject(options.pan) && number(options.pan.x) ? options.pan.x : 0, - y: plainObject(options.pan) && number(options.pan.y) ? options.pan.y : 0 - }, - animation: { - // object for currently-running animations - current: [], - queue: [] - }, - hasCompoundNodes: false, - multiClickDebounceTime: defVal(250, options.multiClickDebounceTime) - }; - - this.createEmitter(); // set selection type - - this.selectionType(options.selectionType); // init zoom bounds - - this.zoomRange({ - min: options.minZoom, - max: options.maxZoom - }); - - var loadExtData = function loadExtData(extData, next) { - var anyIsPromise = extData.some(promise); - - if (anyIsPromise) { - return Promise$1$1.all(extData).then(next); // load all data asynchronously, then exec rest of init - } else { - next(extData); // exec synchronously for convenience - } - }; // start with the default stylesheet so we have something before loading an external stylesheet - - - if (_p.styleEnabled) { - cy.setStyle([]); - } // create the renderer - - - var rendererOptions = extend({}, options, options.renderer); // allow rendering hints in top level options - - cy.initRenderer(rendererOptions); - - var setElesAndLayout = function setElesAndLayout(elements, onload, ondone) { - cy.notifications(false); // remove old elements - - var oldEles = cy.mutableElements(); - - if (oldEles.length > 0) { - oldEles.remove(); - } - - if (elements != null) { - if (plainObject(elements) || array(elements)) { - cy.add(elements); - } - } - - cy.one('layoutready', function (e) { - cy.notifications(true); - cy.emit(e); // we missed this event by turning notifications off, so pass it on - - cy.one('load', onload); - cy.emitAndNotify('load'); - }).one('layoutstop', function () { - cy.one('done', ondone); - cy.emit('done'); - }); - var layoutOpts = extend({}, cy._private.options.layout); - layoutOpts.eles = cy.elements(); - cy.layout(layoutOpts).run(); - }; - - loadExtData([options.style, options.elements], function (thens) { - var initStyle = thens[0]; - var initEles = thens[1]; // init style - - if (_p.styleEnabled) { - cy.style().append(initStyle); - } // initial load - - - setElesAndLayout(initEles, function () { - // onready - cy.startAnimationLoop(); - _p.ready = true; // if a ready callback is specified as an option, the bind it - - if (fn(options.ready)) { - cy.on('ready', options.ready); - } // bind all the ready handlers registered before creating this instance - - - for (var i = 0; i < readies.length; i++) { - var fn$1 = readies[i]; - cy.on('ready', fn$1); - } - - if (reg) { - reg.readies = []; - } // clear b/c we've bound them all and don't want to keep it around in case a new core uses the same div etc - - - cy.emit('ready'); - }, options.done); - }); -}; - -var corefn$9 = Core.prototype; // short alias - -extend(corefn$9, { - instanceString: function instanceString() { - return 'core'; - }, - isReady: function isReady() { - return this._private.ready; - }, - destroyed: function destroyed() { - return this._private.destroyed; - }, - ready: function ready(fn) { - if (this.isReady()) { - this.emitter().emit('ready', [], fn); // just calls fn as though triggered via ready event - } else { - this.on('ready', fn); - } - - return this; - }, - destroy: function destroy() { - var cy = this; - if (cy.destroyed()) return; - cy.stopAnimationLoop(); - cy.destroyRenderer(); - this.emit('destroy'); - cy._private.destroyed = true; - return cy; - }, - hasElementWithId: function hasElementWithId(id) { - return this._private.elements.hasElementWithId(id); - }, - getElementById: function getElementById(id) { - return this._private.elements.getElementById(id); - }, - hasCompoundNodes: function hasCompoundNodes() { - return this._private.hasCompoundNodes; - }, - headless: function headless() { - return this._private.renderer.isHeadless(); - }, - styleEnabled: function styleEnabled() { - return this._private.styleEnabled; - }, - addToPool: function addToPool(eles) { - this._private.elements.merge(eles); - - return this; // chaining - }, - removeFromPool: function removeFromPool(eles) { - this._private.elements.unmerge(eles); - - return this; - }, - container: function container() { - return this._private.container || null; - }, - mount: function mount(container) { - if (container == null) { - return; - } - - var cy = this; - var _p = cy._private; - var options = _p.options; - - if (!htmlElement(container) && htmlElement(container[0])) { - container = container[0]; - } - - cy.stopAnimationLoop(); - cy.destroyRenderer(); - _p.container = container; - _p.styleEnabled = true; - cy.invalidateSize(); - cy.initRenderer(extend({}, options, options.renderer, { - // allow custom renderer name to be re-used, otherwise use canvas - name: options.renderer.name === 'null' ? 'canvas' : options.renderer.name - })); - cy.startAnimationLoop(); - cy.style(options.style); - cy.emit('mount'); - return cy; - }, - unmount: function unmount() { - var cy = this; - cy.stopAnimationLoop(); - cy.destroyRenderer(); - cy.initRenderer({ - name: 'null' - }); - cy.emit('unmount'); - return cy; - }, - options: function options() { - return copy(this._private.options); - }, - json: function json(obj) { - var cy = this; - var _p = cy._private; - var eles = cy.mutableElements(); - - var getFreshRef = function getFreshRef(ele) { - return cy.getElementById(ele.id()); - }; - - if (plainObject(obj)) { - // set - cy.startBatch(); - - if (obj.elements) { - var idInJson = {}; - - var updateEles = function updateEles(jsons, gr) { - var toAdd = []; - var toMod = []; - - for (var i = 0; i < jsons.length; i++) { - var json = jsons[i]; - - if (!json.data.id) { - warn('cy.json() cannot handle elements without an ID attribute'); - continue; - } - - var id = '' + json.data.id; // id must be string - - var ele = cy.getElementById(id); - idInJson[id] = true; - - if (ele.length !== 0) { - // existing element should be updated - toMod.push({ - ele: ele, - json: json - }); - } else { - // otherwise should be added - if (gr) { - json.group = gr; - toAdd.push(json); - } else { - toAdd.push(json); - } - } - } - - cy.add(toAdd); - - for (var _i = 0; _i < toMod.length; _i++) { - var _toMod$_i = toMod[_i], - _ele = _toMod$_i.ele, - _json = _toMod$_i.json; - - _ele.json(_json); - } - }; - - if (array(obj.elements)) { - // elements: [] - updateEles(obj.elements); - } else { - // elements: { nodes: [], edges: [] } - var grs = ['nodes', 'edges']; - - for (var i = 0; i < grs.length; i++) { - var gr = grs[i]; - var elements = obj.elements[gr]; - - if (array(elements)) { - updateEles(elements, gr); - } - } - } - - var parentsToRemove = cy.collection(); - eles.filter(function (ele) { - return !idInJson[ele.id()]; - }).forEach(function (ele) { - if (ele.isParent()) { - parentsToRemove.merge(ele); - } else { - ele.remove(); - } - }); // so that children are not removed w/parent - - parentsToRemove.forEach(function (ele) { - return ele.children().move({ - parent: null - }); - }); // intermediate parents may be moved by prior line, so make sure we remove by fresh refs - - parentsToRemove.forEach(function (ele) { - return getFreshRef(ele).remove(); - }); - } - - if (obj.style) { - cy.style(obj.style); - } - - if (obj.zoom != null && obj.zoom !== _p.zoom) { - cy.zoom(obj.zoom); - } - - if (obj.pan) { - if (obj.pan.x !== _p.pan.x || obj.pan.y !== _p.pan.y) { - cy.pan(obj.pan); - } - } - - if (obj.data) { - cy.data(obj.data); - } - - var fields = ['minZoom', 'maxZoom', 'zoomingEnabled', 'userZoomingEnabled', 'panningEnabled', 'userPanningEnabled', 'boxSelectionEnabled', 'autolock', 'autoungrabify', 'autounselectify', 'multiClickDebounceTime']; - - for (var _i2 = 0; _i2 < fields.length; _i2++) { - var f = fields[_i2]; - - if (obj[f] != null) { - cy[f](obj[f]); - } - } - - cy.endBatch(); - return this; // chaining - } else { - // get - var flat = !!obj; - var json = {}; - - if (flat) { - json.elements = this.elements().map(function (ele) { - return ele.json(); - }); - } else { - json.elements = {}; - eles.forEach(function (ele) { - var group = ele.group(); - - if (!json.elements[group]) { - json.elements[group] = []; - } - - json.elements[group].push(ele.json()); - }); - } - - if (this._private.styleEnabled) { - json.style = cy.style().json(); - } - - json.data = copy(cy.data()); - var options = _p.options; - json.zoomingEnabled = _p.zoomingEnabled; - json.userZoomingEnabled = _p.userZoomingEnabled; - json.zoom = _p.zoom; - json.minZoom = _p.minZoom; - json.maxZoom = _p.maxZoom; - json.panningEnabled = _p.panningEnabled; - json.userPanningEnabled = _p.userPanningEnabled; - json.pan = copy(_p.pan); - json.boxSelectionEnabled = _p.boxSelectionEnabled; - json.renderer = copy(options.renderer); - json.hideEdgesOnViewport = options.hideEdgesOnViewport; - json.textureOnViewport = options.textureOnViewport; - json.wheelSensitivity = options.wheelSensitivity; - json.motionBlur = options.motionBlur; - json.multiClickDebounceTime = options.multiClickDebounceTime; - return json; - } - } -}); -corefn$9.$id = corefn$9.getElementById; -[corefn, corefn$1, elesfn$v, corefn$2, corefn$3, corefn$4, corefn$5, corefn$6, corefn$7, corefn$8, fn$6].forEach(function (props) { - extend(corefn$9, props); -}); - -/* eslint-disable no-unused-vars */ - -var defaults$9 = { - fit: true, - // whether to fit the viewport to the graph - directed: false, - // whether the tree is directed downwards (or edges can point in any direction if false) - padding: 30, - // padding on fit - circle: false, - // put depths in concentric circles if true, put depths top down if false - grid: false, - // whether to create an even grid into which the DAG is placed (circle:false only) - spacingFactor: 1.75, - // positive spacing factor, larger => more space between nodes (N.B. n/a if causes overlap) - boundingBox: undefined, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - avoidOverlap: true, - // prevents node overlap, may overflow boundingBox if not enough space - nodeDimensionsIncludeLabels: false, - // Excludes the label when calculating node bounding boxes for the layout algorithm - roots: undefined, - // the roots of the trees - maximal: false, - // whether to shift nodes down their natural BFS depths in order to avoid upwards edges (DAGS only) - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled, - animateFilter: function animateFilter(node, i) { - return true; - }, - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: undefined, - // callback on layoutready - stop: undefined, - // callback on layoutstop - transform: function transform(node, position) { - return position; - } // transform a given node position. Useful for changing flow direction in discrete layouts - -}; -/* eslint-enable */ - -var getInfo = function getInfo(ele) { - return ele.scratch('breadthfirst'); -}; - -var setInfo = function setInfo(ele, obj) { - return ele.scratch('breadthfirst', obj); -}; - -function BreadthFirstLayout(options) { - this.options = extend({}, defaults$9, options); -} - -BreadthFirstLayout.prototype.run = function () { - var params = this.options; - var options = params; - var cy = params.cy; - var eles = options.eles; - var nodes = eles.nodes().filter(function (n) { - return !n.isParent(); - }); - var graph = eles; - var directed = options.directed; - var maximal = options.maximal || options.maximalAdjustments > 0; // maximalAdjustments for compat. w/ old code - - var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - var roots; - - if (elementOrCollection(options.roots)) { - roots = options.roots; - } else if (array(options.roots)) { - var rootsArray = []; - - for (var i = 0; i < options.roots.length; i++) { - var id = options.roots[i]; - var ele = cy.getElementById(id); - rootsArray.push(ele); - } - - roots = cy.collection(rootsArray); - } else if (string(options.roots)) { - roots = cy.$(options.roots); - } else { - if (directed) { - roots = nodes.roots(); - } else { - var components = eles.components(); - roots = cy.collection(); - - var _loop = function _loop(_i) { - var comp = components[_i]; - var maxDegree = comp.maxDegree(false); - var compRoots = comp.filter(function (ele) { - return ele.degree(false) === maxDegree; - }); - roots = roots.add(compRoots); - }; - - for (var _i = 0; _i < components.length; _i++) { - _loop(_i); - } - } - } - - var depths = []; - var foundByBfs = {}; - - var addToDepth = function addToDepth(ele, d) { - if (depths[d] == null) { - depths[d] = []; - } - - var i = depths[d].length; - depths[d].push(ele); - setInfo(ele, { - index: i, - depth: d - }); - }; - - var changeDepth = function changeDepth(ele, newDepth) { - var _getInfo = getInfo(ele), - depth = _getInfo.depth, - index = _getInfo.index; - - depths[depth][index] = null; - addToDepth(ele, newDepth); - }; // find the depths of the nodes - - - graph.bfs({ - roots: roots, - directed: options.directed, - visit: function visit(node, edge, pNode, i, depth) { - var ele = node[0]; - var id = ele.id(); - addToDepth(ele, depth); - foundByBfs[id] = true; - } - }); // check for nodes not found by bfs - - var orphanNodes = []; - - for (var _i2 = 0; _i2 < nodes.length; _i2++) { - var _ele = nodes[_i2]; - - if (foundByBfs[_ele.id()]) { - continue; - } else { - orphanNodes.push(_ele); - } - } // assign the nodes a depth and index - - - var assignDepthsAt = function assignDepthsAt(i) { - var eles = depths[i]; - - for (var j = 0; j < eles.length; j++) { - var _ele2 = eles[j]; - - if (_ele2 == null) { - eles.splice(j, 1); - j--; - continue; - } - - setInfo(_ele2, { - depth: i, - index: j - }); - } - }; - - var assignDepths = function assignDepths() { - for (var _i3 = 0; _i3 < depths.length; _i3++) { - assignDepthsAt(_i3); - } - }; - - var adjustMaximally = function adjustMaximally(ele, shifted) { - var eInfo = getInfo(ele); - var incomers = ele.incomers().filter(function (el) { - return el.isNode() && eles.has(el); - }); - var maxDepth = -1; - var id = ele.id(); - - for (var k = 0; k < incomers.length; k++) { - var incmr = incomers[k]; - var iInfo = getInfo(incmr); - maxDepth = Math.max(maxDepth, iInfo.depth); - } - - if (eInfo.depth <= maxDepth) { - if (shifted[id]) { - return null; - } - - changeDepth(ele, maxDepth + 1); - shifted[id] = true; - return true; - } - - return false; - }; // for the directed case, try to make the edges all go down (i.e. depth i => depth i + 1) - - - if (directed && maximal) { - var Q = []; - var shifted = {}; - - var enqueue = function enqueue(n) { - return Q.push(n); - }; - - var dequeue = function dequeue() { - return Q.shift(); - }; - - nodes.forEach(function (n) { - return Q.push(n); - }); - - while (Q.length > 0) { - var _ele3 = dequeue(); - - var didShift = adjustMaximally(_ele3, shifted); - - if (didShift) { - _ele3.outgoers().filter(function (el) { - return el.isNode() && eles.has(el); - }).forEach(enqueue); - } else if (didShift === null) { - warn('Detected double maximal shift for node `' + _ele3.id() + '`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.'); - break; // exit on failure - } - } - } - - assignDepths(); // clear holes - // find min distance we need to leave between nodes - - var minDistance = 0; - - if (options.avoidOverlap) { - for (var _i4 = 0; _i4 < nodes.length; _i4++) { - var n = nodes[_i4]; - var nbb = n.layoutDimensions(options); - var w = nbb.w; - var h = nbb.h; - minDistance = Math.max(minDistance, w, h); - } - } // get the weighted percent for an element based on its connectivity to other levels - - - var cachedWeightedPercent = {}; - - var getWeightedPercent = function getWeightedPercent(ele) { - if (cachedWeightedPercent[ele.id()]) { - return cachedWeightedPercent[ele.id()]; - } - - var eleDepth = getInfo(ele).depth; - var neighbors = ele.neighborhood(); - var percent = 0; - var samples = 0; - - for (var _i5 = 0; _i5 < neighbors.length; _i5++) { - var neighbor = neighbors[_i5]; - - if (neighbor.isEdge() || neighbor.isParent() || !nodes.has(neighbor)) { - continue; - } - - var bf = getInfo(neighbor); - - if (bf == null) { - continue; - } - - var index = bf.index; - var depth = bf.depth; // unassigned neighbours shouldn't affect the ordering - - if (index == null || depth == null) { - continue; - } - - var nDepth = depths[depth].length; - - if (depth < eleDepth) { - // only get influenced by elements above - percent += index / nDepth; - samples++; - } - } - - samples = Math.max(1, samples); - percent = percent / samples; - - if (samples === 0) { - // put lone nodes at the start - percent = 0; - } - - cachedWeightedPercent[ele.id()] = percent; - return percent; - }; // rearrange the indices in each depth level based on connectivity - - - var sortFn = function sortFn(a, b) { - var apct = getWeightedPercent(a); - var bpct = getWeightedPercent(b); - var diff = apct - bpct; - - if (diff === 0) { - return ascending(a.id(), b.id()); // make sure sort doesn't have don't-care comparisons - } else { - return diff; - } - }; // sort each level to make connected nodes closer - - - for (var _i6 = 0; _i6 < depths.length; _i6++) { - depths[_i6].sort(sortFn); - - assignDepthsAt(_i6); - } // assign orphan nodes to a new top-level depth - - - var orphanDepth = []; - - for (var _i7 = 0; _i7 < orphanNodes.length; _i7++) { - orphanDepth.push(orphanNodes[_i7]); - } - - depths.unshift(orphanDepth); - assignDepths(); - var biggestDepthSize = 0; - - for (var _i8 = 0; _i8 < depths.length; _i8++) { - biggestDepthSize = Math.max(depths[_i8].length, biggestDepthSize); - } - - var center = { - x: bb.x1 + bb.w / 2, - y: bb.x1 + bb.h / 2 - }; - var maxDepthSize = depths.reduce(function (max, eles) { - return Math.max(max, eles.length); - }, 0); - - var getPosition = function getPosition(ele) { - var _getInfo2 = getInfo(ele), - depth = _getInfo2.depth, - index = _getInfo2.index; - - var depthSize = depths[depth].length; - var distanceX = Math.max(bb.w / ((options.grid ? maxDepthSize : depthSize) + 1), minDistance); - var distanceY = Math.max(bb.h / (depths.length + 1), minDistance); - var radiusStepSize = Math.min(bb.w / 2 / depths.length, bb.h / 2 / depths.length); - radiusStepSize = Math.max(radiusStepSize, minDistance); - - if (!options.circle) { - var epos = { - x: center.x + (index + 1 - (depthSize + 1) / 2) * distanceX, - y: (depth + 1) * distanceY - }; - return epos; - } else { - var radius = radiusStepSize * depth + radiusStepSize - (depths.length > 0 && depths[0].length <= 3 ? radiusStepSize / 2 : 0); - var theta = 2 * Math.PI / depths[depth].length * index; - - if (depth === 0 && depths[0].length === 1) { - radius = 1; - } - - return { - x: center.x + radius * Math.cos(theta), - y: center.y + radius * Math.sin(theta) - }; - } - }; - - eles.nodes().layoutPositions(this, options, getPosition); - return this; // chaining -}; - -var defaults$a = { - fit: true, - // whether to fit the viewport to the graph - padding: 30, - // the padding on fit - boundingBox: undefined, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - avoidOverlap: true, - // prevents node overlap, may overflow boundingBox and radius if not enough space - nodeDimensionsIncludeLabels: false, - // Excludes the label when calculating node bounding boxes for the layout algorithm - spacingFactor: undefined, - // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up - radius: undefined, - // the radius of the circle - startAngle: 3 / 2 * Math.PI, - // where nodes start in radians - sweep: undefined, - // how many radians should be between the first and last node (defaults to full circle) - clockwise: true, - // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) - sort: undefined, - // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled - animateFilter: function animateFilter(node, i) { - return true; - }, - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: undefined, - // callback on layoutready - stop: undefined, - // callback on layoutstop - transform: function transform(node, position) { - return position; - } // transform a given node position. Useful for changing flow direction in discrete layouts - -}; - -function CircleLayout(options) { - this.options = extend({}, defaults$a, options); -} - -CircleLayout.prototype.run = function () { - var params = this.options; - var options = params; - var cy = params.cy; - var eles = options.eles; - var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise; - var nodes = eles.nodes().not(':parent'); - - if (options.sort) { - nodes = nodes.sort(options.sort); - } - - var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - var center = { - x: bb.x1 + bb.w / 2, - y: bb.y1 + bb.h / 2 - }; - var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / nodes.length : options.sweep; - var dTheta = sweep / Math.max(1, nodes.length - 1); - var r; - var minDistance = 0; - - for (var i = 0; i < nodes.length; i++) { - var n = nodes[i]; - var nbb = n.layoutDimensions(options); - var w = nbb.w; - var h = nbb.h; - minDistance = Math.max(minDistance, w, h); - } - - if (number(options.radius)) { - r = options.radius; - } else if (nodes.length <= 1) { - r = 0; - } else { - r = Math.min(bb.h, bb.w) / 2 - minDistance; - } // calculate the radius - - - if (nodes.length > 1 && options.avoidOverlap) { - // but only if more than one node (can't overlap) - minDistance *= 1.75; // just to have some nice spacing - - var dcos = Math.cos(dTheta) - Math.cos(0); - var dsin = Math.sin(dTheta) - Math.sin(0); - var rMin = Math.sqrt(minDistance * minDistance / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping - - r = Math.max(rMin, r); - } - - var getPos = function getPos(ele, i) { - var theta = options.startAngle + i * dTheta * (clockwise ? 1 : -1); - var rx = r * Math.cos(theta); - var ry = r * Math.sin(theta); - var pos = { - x: center.x + rx, - y: center.y + ry - }; - return pos; - }; - - eles.nodes().layoutPositions(this, options, getPos); - return this; // chaining -}; - -var defaults$b = { - fit: true, - // whether to fit the viewport to the graph - padding: 30, - // the padding on fit - startAngle: 3 / 2 * Math.PI, - // where nodes start in radians - sweep: undefined, - // how many radians should be between the first and last node (defaults to full circle) - clockwise: true, - // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) - equidistant: false, - // whether levels have an equal radial distance betwen them, may cause bounding box overflow - minNodeSpacing: 10, - // min spacing between outside of nodes (used for radius adjustment) - boundingBox: undefined, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - avoidOverlap: true, - // prevents node overlap, may overflow boundingBox if not enough space - nodeDimensionsIncludeLabels: false, - // Excludes the label when calculating node bounding boxes for the layout algorithm - height: undefined, - // height of layout area (overrides container height) - width: undefined, - // width of layout area (overrides container width) - spacingFactor: undefined, - // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up - concentric: function concentric(node) { - // returns numeric value for each node, placing higher nodes in levels towards the centre - return node.degree(); - }, - levelWidth: function levelWidth(nodes) { - // the variation of concentric values in each level - return nodes.maxDegree() / 4; - }, - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled - animateFilter: function animateFilter(node, i) { - return true; - }, - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: undefined, - // callback on layoutready - stop: undefined, - // callback on layoutstop - transform: function transform(node, position) { - return position; - } // transform a given node position. Useful for changing flow direction in discrete layouts - -}; - -function ConcentricLayout$1(options) { - this.options = extend({}, defaults$b, options); -} - -ConcentricLayout$1.prototype.run = function () { - var params = this.options; - var options = params; - var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise; - var cy = params.cy; - var eles = options.eles; - var nodes = eles.nodes().not(':parent'); - var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - var center = { - x: bb.x1 + bb.w / 2, - y: bb.y1 + bb.h / 2 - }; - var nodeValues = []; // { node, value } - - var maxNodeSize = 0; - - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var value = void 0; // calculate the node value - - value = options.concentric(node); - nodeValues.push({ - value: value, - node: node - }); // for style mapping - - node._private.scratch.concentric = value; - } // in case we used the `concentric` in style - - - nodes.updateStyle(); // calculate max size now based on potentially updated mappers - - for (var _i = 0; _i < nodes.length; _i++) { - var _node = nodes[_i]; - - var nbb = _node.layoutDimensions(options); - - maxNodeSize = Math.max(maxNodeSize, nbb.w, nbb.h); - } // sort node values in descreasing order - - - nodeValues.sort(function (a, b) { - return b.value - a.value; - }); - var levelWidth = options.levelWidth(nodes); // put the values into levels - - var levels = [[]]; - var currentLevel = levels[0]; - - for (var _i2 = 0; _i2 < nodeValues.length; _i2++) { - var val = nodeValues[_i2]; - - if (currentLevel.length > 0) { - var diff = Math.abs(currentLevel[0].value - val.value); - - if (diff >= levelWidth) { - currentLevel = []; - levels.push(currentLevel); - } - } - - currentLevel.push(val); - } // create positions from levels - - - var minDist = maxNodeSize + options.minNodeSpacing; // min dist between nodes - - if (!options.avoidOverlap) { - // then strictly constrain to bb - var firstLvlHasMulti = levels.length > 0 && levels[0].length > 1; - var maxR = Math.min(bb.w, bb.h) / 2 - minDist; - var rStep = maxR / (levels.length + firstLvlHasMulti ? 1 : 0); - minDist = Math.min(minDist, rStep); - } // find the metrics for each level - - - var r = 0; - - for (var _i3 = 0; _i3 < levels.length; _i3++) { - var level = levels[_i3]; - var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / level.length : options.sweep; - var dTheta = level.dTheta = sweep / Math.max(1, level.length - 1); // calculate the radius - - if (level.length > 1 && options.avoidOverlap) { - // but only if more than one node (can't overlap) - var dcos = Math.cos(dTheta) - Math.cos(0); - var dsin = Math.sin(dTheta) - Math.sin(0); - var rMin = Math.sqrt(minDist * minDist / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping - - r = Math.max(rMin, r); - } - - level.r = r; - r += minDist; - } - - if (options.equidistant) { - var rDeltaMax = 0; - var _r = 0; - - for (var _i4 = 0; _i4 < levels.length; _i4++) { - var _level = levels[_i4]; - var rDelta = _level.r - _r; - rDeltaMax = Math.max(rDeltaMax, rDelta); - } - - _r = 0; - - for (var _i5 = 0; _i5 < levels.length; _i5++) { - var _level2 = levels[_i5]; - - if (_i5 === 0) { - _r = _level2.r; - } - - _level2.r = _r; - _r += rDeltaMax; - } - } // calculate the node positions - - - var pos = {}; // id => position - - for (var _i6 = 0; _i6 < levels.length; _i6++) { - var _level3 = levels[_i6]; - var _dTheta = _level3.dTheta; - var _r2 = _level3.r; - - for (var j = 0; j < _level3.length; j++) { - var _val = _level3[j]; - var theta = options.startAngle + (clockwise ? 1 : -1) * _dTheta * j; - var p = { - x: center.x + _r2 * Math.cos(theta), - y: center.y + _r2 * Math.sin(theta) - }; - pos[_val.node.id()] = p; - } - } // position the nodes - - - eles.nodes().layoutPositions(this, options, function (ele) { - var id = ele.id(); - return pos[id]; - }); - return this; // chaining -}; - -/* -The CoSE layout was written by Gerardo Huck. -https://www.linkedin.com/in/gerardohuck/ - -Based on the following article: -http://dl.acm.org/citation.cfm?id=1498047 - -Modifications tracked on Github. -*/ -var DEBUG; -/** - * @brief : default layout options - */ - -var defaults$c = { - // Called on `layoutready` - ready: function ready() {}, - // Called on `layoutstop` - stop: function stop() {}, - // Whether to animate while running the layout - // true : Animate continuously as the layout is running - // false : Just show the end result - // 'end' : Animate with the end result, from the initial positions to the end positions - animate: true, - // Easing of the animation for animate:'end' - animationEasing: undefined, - // The duration of the animation for animate:'end' - animationDuration: undefined, - // A function that determines whether the node should be animated - // All nodes animated by default on animate enabled - // Non-animated nodes are positioned immediately when the layout starts - animateFilter: function animateFilter(node, i) { - return true; - }, - // The layout animates only after this many milliseconds for animate:true - // (prevents flashing on fast runs) - animationThreshold: 250, - // Number of iterations between consecutive screen positions update - refresh: 20, - // Whether to fit the network view after when done - fit: true, - // Padding on fit - padding: 30, - // Constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - boundingBox: undefined, - // Excludes the label when calculating node bounding boxes for the layout algorithm - nodeDimensionsIncludeLabels: false, - // Randomize the initial positions of the nodes (true) or use existing positions (false) - randomize: false, - // Extra spacing between components in non-compound graphs - componentSpacing: 40, - // Node repulsion (non overlapping) multiplier - nodeRepulsion: function nodeRepulsion(node) { - return 2048; - }, - // Node repulsion (overlapping) multiplier - nodeOverlap: 4, - // Ideal edge (non nested) length - idealEdgeLength: function idealEdgeLength(edge) { - return 32; - }, - // Divisor to compute edge forces - edgeElasticity: function edgeElasticity(edge) { - return 32; - }, - // Nesting factor (multiplier) to compute ideal edge length for nested edges - nestingFactor: 1.2, - // Gravity force (constant) - gravity: 1, - // Maximum number of iterations to perform - numIter: 1000, - // Initial temperature (maximum node displacement) - initialTemp: 1000, - // Cooling factor (how the temperature is reduced between consecutive iterations - coolingFactor: 0.99, - // Lower temperature threshold (below this point the layout will end) - minTemp: 1.0 -}; -/** - * @brief : constructor - * @arg options : object containing layout options - */ - -function CoseLayout(options) { - this.options = extend({}, defaults$c, options); - this.options.layout = this; -} -/** - * @brief : runs the layout - */ - - -CoseLayout.prototype.run = function () { - var options = this.options; - var cy = options.cy; - var layout = this; - layout.stopped = false; - - if (options.animate === true || options.animate === false) { - layout.emit({ - type: 'layoutstart', - layout: layout - }); - } // Set DEBUG - Global variable - - - if (true === options.debug) { - DEBUG = true; - } else { - DEBUG = false; - } // Initialize layout info - - - var layoutInfo = createLayoutInfo(cy, layout, options); // Show LayoutInfo contents if debugging - - if (DEBUG) { - printLayoutInfo(layoutInfo); - } // If required, randomize node positions - - - if (options.randomize) { - randomizePositions(layoutInfo); - } - - var startTime = performanceNow(); - - var refresh = function refresh() { - refreshPositions(layoutInfo, cy, options); // Fit the graph if necessary - - if (true === options.fit) { - cy.fit(options.padding); - } - }; - - var mainLoop = function mainLoop(i) { - if (layout.stopped || i >= options.numIter) { - // logDebug("Layout manually stopped. Stopping computation in step " + i); - return false; - } // Do one step in the phisical simulation - - - step$1(layoutInfo, options); // Update temperature - - layoutInfo.temperature = layoutInfo.temperature * options.coolingFactor; // logDebug("New temperature: " + layoutInfo.temperature); - - if (layoutInfo.temperature < options.minTemp) { - // logDebug("Temperature drop below minimum threshold. Stopping computation in step " + i); - return false; - } - - return true; - }; - - var done = function done() { - if (options.animate === true || options.animate === false) { - refresh(); // Layout has finished - - layout.one('layoutstop', options.stop); - layout.emit({ - type: 'layoutstop', - layout: layout - }); - } else { - var nodes = options.eles.nodes(); - var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes); - nodes.layoutPositions(layout, options, getScaledPos); - } - }; - - var i = 0; - var loopRet = true; - - if (options.animate === true) { - var frame = function frame() { - var f = 0; - - while (loopRet && f < options.refresh) { - loopRet = mainLoop(i); - i++; - f++; - } - - if (!loopRet) { - // it's done - separateComponents(layoutInfo, options); - done(); - } else { - var now = performanceNow(); - - if (now - startTime >= options.animationThreshold) { - refresh(); - } - - requestAnimationFrame$1(frame); - } - }; - - frame(); - } else { - while (loopRet) { - loopRet = mainLoop(i); - i++; - } - - separateComponents(layoutInfo, options); - done(); - } - - return this; // chaining -}; -/** - * @brief : called on continuous layouts to stop them before they finish - */ - - -CoseLayout.prototype.stop = function () { - this.stopped = true; - - if (this.thread) { - this.thread.stop(); - } - - this.emit('layoutstop'); - return this; // chaining -}; - -CoseLayout.prototype.destroy = function () { - if (this.thread) { - this.thread.stop(); - } - - return this; // chaining -}; -/** - * @brief : Creates an object which is contains all the data - * used in the layout process - * @arg cy : cytoscape.js object - * @return : layoutInfo object initialized - */ - - -var createLayoutInfo = function createLayoutInfo(cy, layout, options) { - // Shortcut - var edges = options.eles.edges(); - var nodes = options.eles.nodes(); - var layoutInfo = { - isCompound: cy.hasCompoundNodes(), - layoutNodes: [], - idToIndex: {}, - nodeSize: nodes.size(), - graphSet: [], - indexToGraph: [], - layoutEdges: [], - edgeSize: edges.size(), - temperature: options.initialTemp, - clientWidth: cy.width(), - clientHeight: cy.width(), - boundingBox: makeBoundingBox(options.boundingBox ? options.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }) - }; - var components = options.eles.components(); - var id2cmptId = {}; - - for (var i = 0; i < components.length; i++) { - var component = components[i]; - - for (var j = 0; j < component.length; j++) { - var node = component[j]; - id2cmptId[node.id()] = i; - } - } // Iterate over all nodes, creating layout nodes - - - for (var i = 0; i < layoutInfo.nodeSize; i++) { - var n = nodes[i]; - var nbb = n.layoutDimensions(options); - var tempNode = {}; - tempNode.isLocked = n.locked(); - tempNode.id = n.data('id'); - tempNode.parentId = n.data('parent'); - tempNode.cmptId = id2cmptId[n.id()]; - tempNode.children = []; - tempNode.positionX = n.position('x'); - tempNode.positionY = n.position('y'); - tempNode.offsetX = 0; - tempNode.offsetY = 0; - tempNode.height = nbb.w; - tempNode.width = nbb.h; - tempNode.maxX = tempNode.positionX + tempNode.width / 2; - tempNode.minX = tempNode.positionX - tempNode.width / 2; - tempNode.maxY = tempNode.positionY + tempNode.height / 2; - tempNode.minY = tempNode.positionY - tempNode.height / 2; - tempNode.padLeft = parseFloat(n.style('padding')); - tempNode.padRight = parseFloat(n.style('padding')); - tempNode.padTop = parseFloat(n.style('padding')); - tempNode.padBottom = parseFloat(n.style('padding')); // forces - - tempNode.nodeRepulsion = fn(options.nodeRepulsion) ? options.nodeRepulsion(n) : options.nodeRepulsion; // Add new node - - layoutInfo.layoutNodes.push(tempNode); // Add entry to id-index map - - layoutInfo.idToIndex[tempNode.id] = i; - } // Inline implementation of a queue, used for traversing the graph in BFS order - - - var queue = []; - var start = 0; // Points to the start the queue - - var end = -1; // Points to the end of the queue - - var tempGraph = []; // Second pass to add child information and - // initialize queue for hierarchical traversal - - for (var i = 0; i < layoutInfo.nodeSize; i++) { - var n = layoutInfo.layoutNodes[i]; - var p_id = n.parentId; // Check if node n has a parent node - - if (null != p_id) { - // Add node Id to parent's list of children - layoutInfo.layoutNodes[layoutInfo.idToIndex[p_id]].children.push(n.id); - } else { - // If a node doesn't have a parent, then it's in the root graph - queue[++end] = n.id; - tempGraph.push(n.id); - } - } // Add root graph to graphSet - - - layoutInfo.graphSet.push(tempGraph); // Traverse the graph, level by level, - - while (start <= end) { - // Get the node to visit and remove it from queue - var node_id = queue[start++]; - var node_ix = layoutInfo.idToIndex[node_id]; - var node = layoutInfo.layoutNodes[node_ix]; - var children = node.children; - - if (children.length > 0) { - // Add children nodes as a new graph to graph set - layoutInfo.graphSet.push(children); // Add children to que queue to be visited - - for (var i = 0; i < children.length; i++) { - queue[++end] = children[i]; - } - } - } // Create indexToGraph map - - - for (var i = 0; i < layoutInfo.graphSet.length; i++) { - var graph = layoutInfo.graphSet[i]; - - for (var j = 0; j < graph.length; j++) { - var index = layoutInfo.idToIndex[graph[j]]; - layoutInfo.indexToGraph[index] = i; - } - } // Iterate over all edges, creating Layout Edges - - - for (var i = 0; i < layoutInfo.edgeSize; i++) { - var e = edges[i]; - var tempEdge = {}; - tempEdge.id = e.data('id'); - tempEdge.sourceId = e.data('source'); - tempEdge.targetId = e.data('target'); // Compute ideal length - - var idealLength = fn(options.idealEdgeLength) ? options.idealEdgeLength(e) : options.idealEdgeLength; - var elasticity = fn(options.edgeElasticity) ? options.edgeElasticity(e) : options.edgeElasticity; // Check if it's an inter graph edge - - var sourceIx = layoutInfo.idToIndex[tempEdge.sourceId]; - var targetIx = layoutInfo.idToIndex[tempEdge.targetId]; - var sourceGraph = layoutInfo.indexToGraph[sourceIx]; - var targetGraph = layoutInfo.indexToGraph[targetIx]; - - if (sourceGraph != targetGraph) { - // Find lowest common graph ancestor - var lca = findLCA(tempEdge.sourceId, tempEdge.targetId, layoutInfo); // Compute sum of node depths, relative to lca graph - - var lcaGraph = layoutInfo.graphSet[lca]; - var depth = 0; // Source depth - - var tempNode = layoutInfo.layoutNodes[sourceIx]; - - while (-1 === lcaGraph.indexOf(tempNode.id)) { - tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]]; - depth++; - } // Target depth - - - tempNode = layoutInfo.layoutNodes[targetIx]; - - while (-1 === lcaGraph.indexOf(tempNode.id)) { - tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]]; - depth++; - } // logDebug('LCA of nodes ' + tempEdge.sourceId + ' and ' + tempEdge.targetId + - // ". Index: " + lca + " Contents: " + lcaGraph.toString() + - // ". Depth: " + depth); - // Update idealLength - - - idealLength *= depth * options.nestingFactor; - } - - tempEdge.idealLength = idealLength; - tempEdge.elasticity = elasticity; - layoutInfo.layoutEdges.push(tempEdge); - } // Finally, return layoutInfo object - - - return layoutInfo; -}; -/** - * @brief : This function finds the index of the lowest common - * graph ancestor between 2 nodes in the subtree - * (from the graph hierarchy induced tree) whose - * root is graphIx - * - * @arg node1: node1's ID - * @arg node2: node2's ID - * @arg layoutInfo: layoutInfo object - * - */ - - -var findLCA = function findLCA(node1, node2, layoutInfo) { - // Find their common ancester, starting from the root graph - var res = findLCA_aux(node1, node2, 0, layoutInfo); - - if (2 > res.count) { - // If aux function couldn't find the common ancester, - // then it is the root graph - return 0; - } else { - return res.graph; - } -}; -/** - * @brief : Auxiliary function used for LCA computation - * - * @arg node1 : node1's ID - * @arg node2 : node2's ID - * @arg graphIx : subgraph index - * @arg layoutInfo : layoutInfo object - * - * @return : object of the form {count: X, graph: Y}, where: - * X is the number of ancesters (max: 2) found in - * graphIx (and it's subgraphs), - * Y is the graph index of the lowest graph containing - * all X nodes - */ - - -var findLCA_aux = function findLCA_aux(node1, node2, graphIx, layoutInfo) { - var graph = layoutInfo.graphSet[graphIx]; // If both nodes belongs to graphIx - - if (-1 < graph.indexOf(node1) && -1 < graph.indexOf(node2)) { - return { - count: 2, - graph: graphIx - }; - } // Make recursive calls for all subgraphs - - - var c = 0; - - for (var i = 0; i < graph.length; i++) { - var nodeId = graph[i]; - var nodeIx = layoutInfo.idToIndex[nodeId]; - var children = layoutInfo.layoutNodes[nodeIx].children; // If the node has no child, skip it - - if (0 === children.length) { - continue; - } - - var childGraphIx = layoutInfo.indexToGraph[layoutInfo.idToIndex[children[0]]]; - var result = findLCA_aux(node1, node2, childGraphIx, layoutInfo); - - if (0 === result.count) { - // Neither node1 nor node2 are present in this subgraph - continue; - } else if (1 === result.count) { - // One of (node1, node2) is present in this subgraph - c++; - - if (2 === c) { - // We've already found both nodes, no need to keep searching - break; - } - } else { - // Both nodes are present in this subgraph - return result; - } - } - - return { - count: c, - graph: graphIx - }; -}; -/** - * @brief: printsLayoutInfo into js console - * Only used for debbuging - */ - - -var printLayoutInfo; -/** - * @brief : Randomizes the position of all nodes - */ - - -var randomizePositions = function randomizePositions(layoutInfo, cy) { - var width = layoutInfo.clientWidth; - var height = layoutInfo.clientHeight; - - for (var i = 0; i < layoutInfo.nodeSize; i++) { - var n = layoutInfo.layoutNodes[i]; // No need to randomize compound nodes or locked nodes - - if (0 === n.children.length && !n.isLocked) { - n.positionX = Math.random() * width; - n.positionY = Math.random() * height; - } - } -}; - -var getScaleInBoundsFn = function getScaleInBoundsFn(layoutInfo, options, nodes) { - var bb = layoutInfo.boundingBox; - var coseBB = { - x1: Infinity, - x2: -Infinity, - y1: Infinity, - y2: -Infinity - }; - - if (options.boundingBox) { - nodes.forEach(function (node) { - var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[node.data('id')]]; - coseBB.x1 = Math.min(coseBB.x1, lnode.positionX); - coseBB.x2 = Math.max(coseBB.x2, lnode.positionX); - coseBB.y1 = Math.min(coseBB.y1, lnode.positionY); - coseBB.y2 = Math.max(coseBB.y2, lnode.positionY); - }); - coseBB.w = coseBB.x2 - coseBB.x1; - coseBB.h = coseBB.y2 - coseBB.y1; - } - - return function (ele, i) { - var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[ele.data('id')]]; - - if (options.boundingBox) { - // then add extra bounding box constraint - var pctX = (lnode.positionX - coseBB.x1) / coseBB.w; - var pctY = (lnode.positionY - coseBB.y1) / coseBB.h; - return { - x: bb.x1 + pctX * bb.w, - y: bb.y1 + pctY * bb.h - }; - } else { - return { - x: lnode.positionX, - y: lnode.positionY - }; - } - }; -}; -/** - * @brief : Updates the positions of nodes in the network - * @arg layoutInfo : LayoutInfo object - * @arg cy : Cytoscape object - * @arg options : Layout options - */ - - -var refreshPositions = function refreshPositions(layoutInfo, cy, options) { - // var s = 'Refreshing positions'; - // logDebug(s); - var layout = options.layout; - var nodes = options.eles.nodes(); - var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes); - nodes.positions(getScaledPos); // Trigger layoutReady only on first call - - if (true !== layoutInfo.ready) { - // s = 'Triggering layoutready'; - // logDebug(s); - layoutInfo.ready = true; - layout.one('layoutready', options.ready); - layout.emit({ - type: 'layoutready', - layout: this - }); - } -}; -/** - * @brief : Logs a debug message in JS console, if DEBUG is ON - */ -// var logDebug = function(text) { -// if (DEBUG) { -// console.debug(text); -// } -// }; - -/** - * @brief : Performs one iteration of the physical simulation - * @arg layoutInfo : LayoutInfo object already initialized - * @arg cy : Cytoscape object - * @arg options : Layout options - */ - - -var step$1 = function step(layoutInfo, options, _step) { - // var s = "\n\n###############################"; - // s += "\nSTEP: " + step; - // s += "\n###############################\n"; - // logDebug(s); - // Calculate node repulsions - calculateNodeForces(layoutInfo, options); // Calculate edge forces - - calculateEdgeForces(layoutInfo); // Calculate gravity forces - - calculateGravityForces(layoutInfo, options); // Propagate forces from parent to child - - propagateForces(layoutInfo); // Update positions based on calculated forces - - updatePositions(layoutInfo); -}; -/** - * @brief : Computes the node repulsion forces - */ - - -var calculateNodeForces = function calculateNodeForces(layoutInfo, options) { - // Go through each of the graphs in graphSet - // Nodes only repel each other if they belong to the same graph - // var s = 'calculateNodeForces'; - // logDebug(s); - for (var i = 0; i < layoutInfo.graphSet.length; i++) { - var graph = layoutInfo.graphSet[i]; - var numNodes = graph.length; // s = "Set: " + graph.toString(); - // logDebug(s); - // Now get all the pairs of nodes - // Only get each pair once, (A, B) = (B, A) - - for (var j = 0; j < numNodes; j++) { - var node1 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]]; - - for (var k = j + 1; k < numNodes; k++) { - var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[k]]]; - nodeRepulsion(node1, node2, layoutInfo, options); - } - } - } -}; - -var randomDistance = function randomDistance(max) { - return -max + 2 * max * Math.random(); -}; -/** - * @brief : Compute the node repulsion forces between a pair of nodes - */ - - -var nodeRepulsion = function nodeRepulsion(node1, node2, layoutInfo, options) { - // var s = "Node repulsion. Node1: " + node1.id + " Node2: " + node2.id; - var cmptId1 = node1.cmptId; - var cmptId2 = node2.cmptId; - - if (cmptId1 !== cmptId2 && !layoutInfo.isCompound) { - return; - } // Get direction of line connecting both node centers - - - var directionX = node2.positionX - node1.positionX; - var directionY = node2.positionY - node1.positionY; - var maxRandDist = 1; // s += "\ndirectionX: " + directionX + ", directionY: " + directionY; - // If both centers are the same, apply a random force - - if (0 === directionX && 0 === directionY) { - directionX = randomDistance(maxRandDist); - directionY = randomDistance(maxRandDist); - } - - var overlap = nodesOverlap(node1, node2, directionX, directionY); - - if (overlap > 0) { - // s += "\nNodes DO overlap."; - // s += "\nOverlap: " + overlap; - // If nodes overlap, repulsion force is proportional - // to the overlap - var force = options.nodeOverlap * overlap; // Compute the module and components of the force vector - - var distance = Math.sqrt(directionX * directionX + directionY * directionY); // s += "\nDistance: " + distance; - - var forceX = force * directionX / distance; - var forceY = force * directionY / distance; - } else { - // s += "\nNodes do NOT overlap."; - // If there's no overlap, force is inversely proportional - // to squared distance - // Get clipping points for both nodes - var point1 = findClippingPoint(node1, directionX, directionY); - var point2 = findClippingPoint(node2, -1 * directionX, -1 * directionY); // Use clipping points to compute distance - - var distanceX = point2.x - point1.x; - var distanceY = point2.y - point1.y; - var distanceSqr = distanceX * distanceX + distanceY * distanceY; - var distance = Math.sqrt(distanceSqr); // s += "\nDistance: " + distance; - // Compute the module and components of the force vector - - var force = (node1.nodeRepulsion + node2.nodeRepulsion) / distanceSqr; - var forceX = force * distanceX / distance; - var forceY = force * distanceY / distance; - } // Apply force - - - if (!node1.isLocked) { - node1.offsetX -= forceX; - node1.offsetY -= forceY; - } - - if (!node2.isLocked) { - node2.offsetX += forceX; - node2.offsetY += forceY; - } // s += "\nForceX: " + forceX + " ForceY: " + forceY; - // logDebug(s); - - - return; -}; -/** - * @brief : Determines whether two nodes overlap or not - * @return : Amount of overlapping (0 => no overlap) - */ - - -var nodesOverlap = function nodesOverlap(node1, node2, dX, dY) { - if (dX > 0) { - var overlapX = node1.maxX - node2.minX; - } else { - var overlapX = node2.maxX - node1.minX; - } - - if (dY > 0) { - var overlapY = node1.maxY - node2.minY; - } else { - var overlapY = node2.maxY - node1.minY; - } - - if (overlapX >= 0 && overlapY >= 0) { - return Math.sqrt(overlapX * overlapX + overlapY * overlapY); - } else { - return 0; - } -}; -/** - * @brief : Finds the point in which an edge (direction dX, dY) intersects - * the rectangular bounding box of it's source/target node - */ - - -var findClippingPoint = function findClippingPoint(node, dX, dY) { - // Shorcuts - var X = node.positionX; - var Y = node.positionY; - var H = node.height || 1; - var W = node.width || 1; - var dirSlope = dY / dX; - var nodeSlope = H / W; // var s = 'Computing clipping point of node ' + node.id + - // " . Height: " + H + ", Width: " + W + - // "\nDirection " + dX + ", " + dY; - // - // Compute intersection - - var res = {}; // Case: Vertical direction (up) - - if (0 === dX && 0 < dY) { - res.x = X; // s += "\nUp direction"; - - res.y = Y + H / 2; - return res; - } // Case: Vertical direction (down) - - - if (0 === dX && 0 > dY) { - res.x = X; - res.y = Y + H / 2; // s += "\nDown direction"; - - return res; - } // Case: Intersects the right border - - - if (0 < dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) { - res.x = X + W / 2; - res.y = Y + W * dY / 2 / dX; // s += "\nRightborder"; - - return res; - } // Case: Intersects the left border - - - if (0 > dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) { - res.x = X - W / 2; - res.y = Y - W * dY / 2 / dX; // s += "\nLeftborder"; - - return res; - } // Case: Intersects the top border - - - if (0 < dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) { - res.x = X + H * dX / 2 / dY; - res.y = Y + H / 2; // s += "\nTop border"; - - return res; - } // Case: Intersects the bottom border - - - if (0 > dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) { - res.x = X - H * dX / 2 / dY; - res.y = Y - H / 2; // s += "\nBottom border"; - - return res; - } // s += "\nClipping point found at " + res.x + ", " + res.y; - // logDebug(s); - - - return res; -}; -/** - * @brief : Calculates all edge forces - */ - - -var calculateEdgeForces = function calculateEdgeForces(layoutInfo, options) { - // Iterate over all edges - for (var i = 0; i < layoutInfo.edgeSize; i++) { - // Get edge, source & target nodes - var edge = layoutInfo.layoutEdges[i]; - var sourceIx = layoutInfo.idToIndex[edge.sourceId]; - var source = layoutInfo.layoutNodes[sourceIx]; - var targetIx = layoutInfo.idToIndex[edge.targetId]; - var target = layoutInfo.layoutNodes[targetIx]; // Get direction of line connecting both node centers - - var directionX = target.positionX - source.positionX; - var directionY = target.positionY - source.positionY; // If both centers are the same, do nothing. - // A random force has already been applied as node repulsion - - if (0 === directionX && 0 === directionY) { - continue; - } // Get clipping points for both nodes - - - var point1 = findClippingPoint(source, directionX, directionY); - var point2 = findClippingPoint(target, -1 * directionX, -1 * directionY); - var lx = point2.x - point1.x; - var ly = point2.y - point1.y; - var l = Math.sqrt(lx * lx + ly * ly); - var force = Math.pow(edge.idealLength - l, 2) / edge.elasticity; - - if (0 !== l) { - var forceX = force * lx / l; - var forceY = force * ly / l; - } else { - var forceX = 0; - var forceY = 0; - } // Add this force to target and source nodes - - - if (!source.isLocked) { - source.offsetX += forceX; - source.offsetY += forceY; - } - - if (!target.isLocked) { - target.offsetX -= forceX; - target.offsetY -= forceY; - } // var s = 'Edge force between nodes ' + source.id + ' and ' + target.id; - // s += "\nDistance: " + l + " Force: (" + forceX + ", " + forceY + ")"; - // logDebug(s); - - } -}; -/** - * @brief : Computes gravity forces for all nodes - */ - - -var calculateGravityForces = function calculateGravityForces(layoutInfo, options) { - if (options.gravity === 0) { - return; - } - - var distThreshold = 1; // var s = 'calculateGravityForces'; - // logDebug(s); - - for (var i = 0; i < layoutInfo.graphSet.length; i++) { - var graph = layoutInfo.graphSet[i]; - var numNodes = graph.length; // s = "Set: " + graph.toString(); - // logDebug(s); - // Compute graph center - - if (0 === i) { - var centerX = layoutInfo.clientHeight / 2; - var centerY = layoutInfo.clientWidth / 2; - } else { - // Get Parent node for this graph, and use its position as center - var temp = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[0]]]; - var parent = layoutInfo.layoutNodes[layoutInfo.idToIndex[temp.parentId]]; - var centerX = parent.positionX; - var centerY = parent.positionY; - } // s = "Center found at: " + centerX + ", " + centerY; - // logDebug(s); - // Apply force to all nodes in graph - - - for (var j = 0; j < numNodes; j++) { - var node = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]]; // s = "Node: " + node.id; - - if (node.isLocked) { - continue; - } - - var dx = centerX - node.positionX; - var dy = centerY - node.positionY; - var d = Math.sqrt(dx * dx + dy * dy); - - if (d > distThreshold) { - var fx = options.gravity * dx / d; - var fy = options.gravity * dy / d; - node.offsetX += fx; - node.offsetY += fy; // s += ": Applied force: " + fx + ", " + fy; - } // s += ": skypped since it's too close to center"; - // logDebug(s); - - } - } -}; -/** - * @brief : This function propagates the existing offsets from - * parent nodes to its descendents. - * @arg layoutInfo : layoutInfo Object - * @arg cy : cytoscape Object - * @arg options : Layout options - */ - - -var propagateForces = function propagateForces(layoutInfo, options) { - // Inline implementation of a queue, used for traversing the graph in BFS order - var queue = []; - var start = 0; // Points to the start the queue - - var end = -1; // Points to the end of the queue - // logDebug('propagateForces'); - // Start by visiting the nodes in the root graph - - queue.push.apply(queue, layoutInfo.graphSet[0]); - end += layoutInfo.graphSet[0].length; // Traverse the graph, level by level, - - while (start <= end) { - // Get the node to visit and remove it from queue - var nodeId = queue[start++]; - var nodeIndex = layoutInfo.idToIndex[nodeId]; - var node = layoutInfo.layoutNodes[nodeIndex]; - var children = node.children; // We only need to process the node if it's compound - - if (0 < children.length && !node.isLocked) { - var offX = node.offsetX; - var offY = node.offsetY; // var s = "Propagating offset from parent node : " + node.id + - // ". OffsetX: " + offX + ". OffsetY: " + offY; - // s += "\n Children: " + children.toString(); - // logDebug(s); - - for (var i = 0; i < children.length; i++) { - var childNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[children[i]]]; // Propagate offset - - childNode.offsetX += offX; - childNode.offsetY += offY; // Add children to queue to be visited - - queue[++end] = children[i]; - } // Reset parent offsets - - - node.offsetX = 0; - node.offsetY = 0; - } - } -}; -/** - * @brief : Updates the layout model positions, based on - * the accumulated forces - */ - - -var updatePositions = function updatePositions(layoutInfo, options) { - // var s = 'Updating positions'; - // logDebug(s); - // Reset boundaries for compound nodes - for (var i = 0; i < layoutInfo.nodeSize; i++) { - var n = layoutInfo.layoutNodes[i]; - - if (0 < n.children.length) { - // logDebug("Resetting boundaries of compound node: " + n.id); - n.maxX = undefined; - n.minX = undefined; - n.maxY = undefined; - n.minY = undefined; - } - } - - for (var i = 0; i < layoutInfo.nodeSize; i++) { - var n = layoutInfo.layoutNodes[i]; - - if (0 < n.children.length || n.isLocked) { - // No need to set compound or locked node position - // logDebug("Skipping position update of node: " + n.id); - continue; - } // s = "Node: " + n.id + " Previous position: (" + - // n.positionX + ", " + n.positionY + ")."; - // Limit displacement in order to improve stability - - - var tempForce = limitForce(n.offsetX, n.offsetY, layoutInfo.temperature); - n.positionX += tempForce.x; - n.positionY += tempForce.y; - n.offsetX = 0; - n.offsetY = 0; - n.minX = n.positionX - n.width; - n.maxX = n.positionX + n.width; - n.minY = n.positionY - n.height; - n.maxY = n.positionY + n.height; // s += " New Position: (" + n.positionX + ", " + n.positionY + ")."; - // logDebug(s); - // Update ancestry boudaries - - updateAncestryBoundaries(n, layoutInfo); - } // Update size, position of compund nodes - - - for (var i = 0; i < layoutInfo.nodeSize; i++) { - var n = layoutInfo.layoutNodes[i]; - - if (0 < n.children.length && !n.isLocked) { - n.positionX = (n.maxX + n.minX) / 2; - n.positionY = (n.maxY + n.minY) / 2; - n.width = n.maxX - n.minX; - n.height = n.maxY - n.minY; // s = "Updating position, size of compound node " + n.id; - // s += "\nPositionX: " + n.positionX + ", PositionY: " + n.positionY; - // s += "\nWidth: " + n.width + ", Height: " + n.height; - // logDebug(s); - } - } -}; -/** - * @brief : Limits a force (forceX, forceY) to be not - * greater (in modulo) than max. - 8 Preserves force direction. - */ - - -var limitForce = function limitForce(forceX, forceY, max) { - // var s = "Limiting force: (" + forceX + ", " + forceY + "). Max: " + max; - var force = Math.sqrt(forceX * forceX + forceY * forceY); - - if (force > max) { - var res = { - x: max * forceX / force, - y: max * forceY / force - }; - } else { - var res = { - x: forceX, - y: forceY - }; - } // s += ".\nResult: (" + res.x + ", " + res.y + ")"; - // logDebug(s); - - - return res; -}; -/** - * @brief : Function used for keeping track of compound node - * sizes, since they should bound all their subnodes. - */ - - -var updateAncestryBoundaries = function updateAncestryBoundaries(node, layoutInfo) { - // var s = "Propagating new position/size of node " + node.id; - var parentId = node.parentId; - - if (null == parentId) { - // If there's no parent, we are done - // s += ". No parent node."; - // logDebug(s); - return; - } // Get Parent Node - - - var p = layoutInfo.layoutNodes[layoutInfo.idToIndex[parentId]]; - var flag = false; // MaxX - - if (null == p.maxX || node.maxX + p.padRight > p.maxX) { - p.maxX = node.maxX + p.padRight; - flag = true; // s += "\nNew maxX for parent node " + p.id + ": " + p.maxX; - } // MinX - - - if (null == p.minX || node.minX - p.padLeft < p.minX) { - p.minX = node.minX - p.padLeft; - flag = true; // s += "\nNew minX for parent node " + p.id + ": " + p.minX; - } // MaxY - - - if (null == p.maxY || node.maxY + p.padBottom > p.maxY) { - p.maxY = node.maxY + p.padBottom; - flag = true; // s += "\nNew maxY for parent node " + p.id + ": " + p.maxY; - } // MinY - - - if (null == p.minY || node.minY - p.padTop < p.minY) { - p.minY = node.minY - p.padTop; - flag = true; // s += "\nNew minY for parent node " + p.id + ": " + p.minY; - } // If updated boundaries, propagate changes upward - - - if (flag) { - // logDebug(s); - return updateAncestryBoundaries(p, layoutInfo); - } // s += ". No changes in boundaries/position of parent node " + p.id; - // logDebug(s); - - - return; -}; - -var separateComponents = function separateComponents(layoutInfo, options) { - var nodes = layoutInfo.layoutNodes; - var components = []; - - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var cid = node.cmptId; - var component = components[cid] = components[cid] || []; - component.push(node); - } - - var totalA = 0; - - for (var i = 0; i < components.length; i++) { - var c = components[i]; - - if (!c) { - continue; - } - - c.x1 = Infinity; - c.x2 = -Infinity; - c.y1 = Infinity; - c.y2 = -Infinity; - - for (var j = 0; j < c.length; j++) { - var n = c[j]; - c.x1 = Math.min(c.x1, n.positionX - n.width / 2); - c.x2 = Math.max(c.x2, n.positionX + n.width / 2); - c.y1 = Math.min(c.y1, n.positionY - n.height / 2); - c.y2 = Math.max(c.y2, n.positionY + n.height / 2); - } - - c.w = c.x2 - c.x1; - c.h = c.y2 - c.y1; - totalA += c.w * c.h; - } - - components.sort(function (c1, c2) { - return c2.w * c2.h - c1.w * c1.h; - }); - var x = 0; - var y = 0; - var usedW = 0; - var rowH = 0; - var maxRowW = Math.sqrt(totalA) * layoutInfo.clientWidth / layoutInfo.clientHeight; - - for (var i = 0; i < components.length; i++) { - var c = components[i]; - - if (!c) { - continue; - } - - for (var j = 0; j < c.length; j++) { - var n = c[j]; - - if (!n.isLocked) { - n.positionX += x - c.x1; - n.positionY += y - c.y1; - } - } - - x += c.w + options.componentSpacing; - usedW += c.w + options.componentSpacing; - rowH = Math.max(rowH, c.h); - - if (usedW > maxRowW) { - y += rowH + options.componentSpacing; - x = 0; - usedW = 0; - rowH = 0; - } - } -}; - -var defaults$d = { - fit: true, - // whether to fit the viewport to the graph - padding: 30, - // padding used on fit - boundingBox: undefined, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - avoidOverlap: true, - // prevents node overlap, may overflow boundingBox if not enough space - avoidOverlapPadding: 10, - // extra spacing around nodes when avoidOverlap: true - nodeDimensionsIncludeLabels: false, - // Excludes the label when calculating node bounding boxes for the layout algorithm - spacingFactor: undefined, - // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up - condense: false, - // uses all available space on false, uses minimal space on true - rows: undefined, - // force num of rows in the grid - cols: undefined, - // force num of columns in the grid - position: function position(node) {}, - // returns { row, col } for element - sort: undefined, - // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled - animateFilter: function animateFilter(node, i) { - return true; - }, - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: undefined, - // callback on layoutready - stop: undefined, - // callback on layoutstop - transform: function transform(node, position) { - return position; - } // transform a given node position. Useful for changing flow direction in discrete layouts - -}; - -function GridLayout(options) { - this.options = extend({}, defaults$d, options); -} - -GridLayout.prototype.run = function () { - var params = this.options; - var options = params; - var cy = params.cy; - var eles = options.eles; - var nodes = eles.nodes().not(':parent'); - - if (options.sort) { - nodes = nodes.sort(options.sort); - } - - var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - - if (bb.h === 0 || bb.w === 0) { - eles.nodes().layoutPositions(this, options, function (ele) { - return { - x: bb.x1, - y: bb.y1 - }; - }); - } else { - // width/height * splits^2 = cells where splits is number of times to split width - var cells = nodes.size(); - var splits = Math.sqrt(cells * bb.h / bb.w); - var rows = Math.round(splits); - var cols = Math.round(bb.w / bb.h * splits); - - var small = function small(val) { - if (val == null) { - return Math.min(rows, cols); - } else { - var min = Math.min(rows, cols); - - if (min == rows) { - rows = val; - } else { - cols = val; - } - } - }; - - var large = function large(val) { - if (val == null) { - return Math.max(rows, cols); - } else { - var max = Math.max(rows, cols); - - if (max == rows) { - rows = val; - } else { - cols = val; - } - } - }; - - var oRows = options.rows; - var oCols = options.cols != null ? options.cols : options.columns; // if rows or columns were set in options, use those values - - if (oRows != null && oCols != null) { - rows = oRows; - cols = oCols; - } else if (oRows != null && oCols == null) { - rows = oRows; - cols = Math.ceil(cells / rows); - } else if (oRows == null && oCols != null) { - cols = oCols; - rows = Math.ceil(cells / cols); - } // otherwise use the automatic values and adjust accordingly - // if rounding was up, see if we can reduce rows or columns - else if (cols * rows > cells) { - var sm = small(); - var lg = large(); // reducing the small side takes away the most cells, so try it first - - if ((sm - 1) * lg >= cells) { - small(sm - 1); - } else if ((lg - 1) * sm >= cells) { - large(lg - 1); - } - } else { - // if rounding was too low, add rows or columns - while (cols * rows < cells) { - var _sm = small(); - - var _lg = large(); // try to add to larger side first (adds less in multiplication) - - - if ((_lg + 1) * _sm >= cells) { - large(_lg + 1); - } else { - small(_sm + 1); - } - } - } - - var cellWidth = bb.w / cols; - var cellHeight = bb.h / rows; - - if (options.condense) { - cellWidth = 0; - cellHeight = 0; - } - - if (options.avoidOverlap) { - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var pos = node._private.position; - - if (pos.x == null || pos.y == null) { - // for bb - pos.x = 0; - pos.y = 0; - } - - var nbb = node.layoutDimensions(options); - var p = options.avoidOverlapPadding; - var w = nbb.w + p; - var h = nbb.h + p; - cellWidth = Math.max(cellWidth, w); - cellHeight = Math.max(cellHeight, h); - } - } - - var cellUsed = {}; // e.g. 'c-0-2' => true - - var used = function used(row, col) { - return cellUsed['c-' + row + '-' + col] ? true : false; - }; - - var use = function use(row, col) { - cellUsed['c-' + row + '-' + col] = true; - }; // to keep track of current cell position - - - var row = 0; - var col = 0; - - var moveToNextCell = function moveToNextCell() { - col++; - - if (col >= cols) { - col = 0; - row++; - } - }; // get a cache of all the manual positions - - - var id2manPos = {}; - - for (var _i = 0; _i < nodes.length; _i++) { - var _node = nodes[_i]; - var rcPos = options.position(_node); - - if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) { - // must have at least row or col def'd - var _pos = { - row: rcPos.row, - col: rcPos.col - }; - - if (_pos.col === undefined) { - // find unused col - _pos.col = 0; - - while (used(_pos.row, _pos.col)) { - _pos.col++; - } - } else if (_pos.row === undefined) { - // find unused row - _pos.row = 0; - - while (used(_pos.row, _pos.col)) { - _pos.row++; - } - } - - id2manPos[_node.id()] = _pos; - use(_pos.row, _pos.col); - } - } - - var getPos = function getPos(element, i) { - var x, y; - - if (element.locked() || element.isParent()) { - return false; - } // see if we have a manual position set - - - var rcPos = id2manPos[element.id()]; - - if (rcPos) { - x = rcPos.col * cellWidth + cellWidth / 2 + bb.x1; - y = rcPos.row * cellHeight + cellHeight / 2 + bb.y1; - } else { - // otherwise set automatically - while (used(row, col)) { - moveToNextCell(); - } - - x = col * cellWidth + cellWidth / 2 + bb.x1; - y = row * cellHeight + cellHeight / 2 + bb.y1; - use(row, col); - moveToNextCell(); - } - - return { - x: x, - y: y - }; - }; - - nodes.layoutPositions(this, options, getPos); - } - - return this; // chaining -}; - -var defaults$e = { - ready: function ready() {}, - // on layoutready - stop: function stop() {} // on layoutstop - -}; // constructor -// options : object containing layout options - -function NullLayout(options) { - this.options = extend({}, defaults$e, options); -} // runs the layout - - -NullLayout.prototype.run = function () { - var options = this.options; - var eles = options.eles; // elements to consider in the layout - - var layout = this; // cy is automatically populated for us in the constructor - // (disable eslint for next line as this serves as example layout code to external developers) - // eslint-disable-next-line no-unused-vars - - options.cy; - layout.emit('layoutstart'); // puts all nodes at (0, 0) - // n.b. most layouts would use layoutPositions(), instead of positions() and manual events - - eles.nodes().positions(function () { - return { - x: 0, - y: 0 - }; - }); // trigger layoutready when each node has had its position set at least once - - layout.one('layoutready', options.ready); - layout.emit('layoutready'); // trigger layoutstop when the layout stops (e.g. finishes) - - layout.one('layoutstop', options.stop); - layout.emit('layoutstop'); - return this; // chaining -}; // called on continuous layouts to stop them before they finish - - -NullLayout.prototype.stop = function () { - return this; // chaining -}; - -var defaults$f = { - positions: undefined, - // map of (node id) => (position obj); or function(node){ return somPos; } - zoom: undefined, - // the zoom level to set (prob want fit = false if set) - pan: undefined, - // the pan level to set (prob want fit = false if set) - fit: true, - // whether to fit to viewport - padding: 30, - // padding on fit - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled - animateFilter: function animateFilter(node, i) { - return true; - }, - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: undefined, - // callback on layoutready - stop: undefined, - // callback on layoutstop - transform: function transform(node, position) { - return position; - } // transform a given node position. Useful for changing flow direction in discrete layouts - -}; - -function PresetLayout(options) { - this.options = extend({}, defaults$f, options); -} - -PresetLayout.prototype.run = function () { - var options = this.options; - var eles = options.eles; - var nodes = eles.nodes(); - var posIsFn = fn(options.positions); - - function getPosition(node) { - if (options.positions == null) { - return copyPosition(node.position()); - } - - if (posIsFn) { - return options.positions(node); - } - - var pos = options.positions[node._private.data.id]; - - if (pos == null) { - return null; - } - - return pos; - } - - nodes.layoutPositions(this, options, function (node, i) { - var position = getPosition(node); - - if (node.locked() || position == null) { - return false; - } - - return position; - }); - return this; // chaining -}; - -var defaults$g = { - fit: true, - // whether to fit to viewport - padding: 30, - // fit padding - boundingBox: undefined, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled - animateFilter: function animateFilter(node, i) { - return true; - }, - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: undefined, - // callback on layoutready - stop: undefined, - // callback on layoutstop - transform: function transform(node, position) { - return position; - } // transform a given node position. Useful for changing flow direction in discrete layouts - -}; - -function RandomLayout(options) { - this.options = extend({}, defaults$g, options); -} - -RandomLayout.prototype.run = function () { - var options = this.options; - var cy = options.cy; - var eles = options.eles; - var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - - var getPos = function getPos(node, i) { - return { - x: bb.x1 + Math.round(Math.random() * bb.w), - y: bb.y1 + Math.round(Math.random() * bb.h) - }; - }; - - eles.nodes().layoutPositions(this, options, getPos); - return this; // chaining -}; - -var layout$2 = [{ - name: 'breadthfirst', - impl: BreadthFirstLayout -}, { - name: 'circle', - impl: CircleLayout -}, { - name: 'concentric', - impl: ConcentricLayout$1 -}, { - name: 'cose', - impl: CoseLayout -}, { - name: 'grid', - impl: GridLayout -}, { - name: 'null', - impl: NullLayout -}, { - name: 'preset', - impl: PresetLayout -}, { - name: 'random', - impl: RandomLayout -}]; - -function NullRenderer(options) { - this.options = options; - this.notifications = 0; // for testing -} - -var noop$1$1 = function noop() {}; - -var throwImgErr = function throwImgErr() { - throw new Error('A headless instance can not render images'); -}; - -NullRenderer.prototype = { - recalculateRenderedStyle: noop$1$1, - notify: function notify() { - this.notifications++; - }, - init: noop$1$1, - isHeadless: function isHeadless() { - return true; - }, - png: throwImgErr, - jpg: throwImgErr -}; - -var BRp = {}; -BRp.arrowShapeWidth = 0.3; - -BRp.registerArrowShapes = function () { - var arrowShapes = this.arrowShapes = {}; - var renderer = this; // Contract for arrow shapes: - // 0, 0 is arrow tip - // (0, 1) is direction towards node - // (1, 0) is right - // - // functional api: - // collide: check x, y in shape - // roughCollide: called before collide, no false negatives - // draw: draw - // spacing: dist(arrowTip, nodeBoundary) - // gap: dist(edgeTip, nodeBoundary), edgeTip may != arrowTip - - var bbCollide = function bbCollide(x, y, size, angle, translation, edgeWidth, padding) { - var x1 = translation.x - size / 2 - padding; - var x2 = translation.x + size / 2 + padding; - var y1 = translation.y - size / 2 - padding; - var y2 = translation.y + size / 2 + padding; - var inside = x1 <= x && x <= x2 && y1 <= y && y <= y2; - return inside; - }; - - var transform = function transform(x, y, size, angle, translation) { - var xRotated = x * Math.cos(angle) - y * Math.sin(angle); - var yRotated = x * Math.sin(angle) + y * Math.cos(angle); - var xScaled = xRotated * size; - var yScaled = yRotated * size; - var xTranslated = xScaled + translation.x; - var yTranslated = yScaled + translation.y; - return { - x: xTranslated, - y: yTranslated - }; - }; - - var transformPoints = function transformPoints(pts, size, angle, translation) { - var retPts = []; - - for (var i = 0; i < pts.length; i += 2) { - var x = pts[i]; - var y = pts[i + 1]; - retPts.push(transform(x, y, size, angle, translation)); - } - - return retPts; - }; - - var pointsToArr = function pointsToArr(pts) { - var ret = []; - - for (var i = 0; i < pts.length; i++) { - var p = pts[i]; - ret.push(p.x, p.y); - } - - return ret; - }; - - var standardGap = function standardGap(edge) { - return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').pfValue * 2; - }; - - var defineArrowShape = function defineArrowShape(name, defn) { - if (string(defn)) { - defn = arrowShapes[defn]; - } - - arrowShapes[name] = extend({ - name: name, - points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3], - collide: function collide(x, y, size, angle, translation, padding) { - var points = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); - var inside = pointInsidePolygonPoints(x, y, points); - return inside; - }, - roughCollide: bbCollide, - draw: function draw(context, size, angle, translation) { - var points = transformPoints(this.points, size, angle, translation); - renderer.arrowShapeImpl('polygon')(context, points); - }, - spacing: function spacing(edge) { - return 0; - }, - gap: standardGap - }, defn); - }; - - defineArrowShape('none', { - collide: falsify, - roughCollide: falsify, - draw: noop$1, - spacing: zeroify, - gap: zeroify - }); - defineArrowShape('triangle', { - points: [-0.15, -0.3, 0, 0, 0.15, -0.3] - }); - defineArrowShape('arrow', 'triangle'); - defineArrowShape('triangle-backcurve', { - points: arrowShapes['triangle'].points, - controlPoint: [0, -0.15], - roughCollide: bbCollide, - draw: function draw(context, size, angle, translation, edgeWidth) { - var ptsTrans = transformPoints(this.points, size, angle, translation); - var ctrlPt = this.controlPoint; - var ctrlPtTrans = transform(ctrlPt[0], ctrlPt[1], size, angle, translation); - renderer.arrowShapeImpl(this.name)(context, ptsTrans, ctrlPtTrans); - }, - gap: function gap(edge) { - return standardGap(edge) * 0.8; - } - }); - defineArrowShape('triangle-tee', { - points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], - pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4], - collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { - var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); - var teePts = pointsToArr(transformPoints(this.pointsTee, size + 2 * padding, angle, translation)); - var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts); - return inside; - }, - draw: function draw(context, size, angle, translation, edgeWidth) { - var triPts = transformPoints(this.points, size, angle, translation); - var teePts = transformPoints(this.pointsTee, size, angle, translation); - renderer.arrowShapeImpl(this.name)(context, triPts, teePts); - } - }); - defineArrowShape('circle-triangle', { - radius: 0.15, - pointsTr: [0, -0.15, 0.15, -0.45, -0.15, -0.45, 0, -0.15], - collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { - var t = translation; - var circleInside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2); - var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); - return pointInsidePolygonPoints(x, y, triPts) || circleInside; - }, - draw: function draw(context, size, angle, translation, edgeWidth) { - var triPts = transformPoints(this.pointsTr, size, angle, translation); - renderer.arrowShapeImpl(this.name)(context, triPts, translation.x, translation.y, this.radius * size); - }, - spacing: function spacing(edge) { - return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius; - } - }); - defineArrowShape('triangle-cross', { - points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], - baseCrossLinePts: [-0.15, -0.4, // first half of the rectangle - -0.15, -0.4, 0.15, -0.4, // second half of the rectangle - 0.15, -0.4], - crossLinePts: function crossLinePts(size, edgeWidth) { - // shift points so that the distance between the cross points matches edge width - var p = this.baseCrossLinePts.slice(); - var shiftFactor = edgeWidth / size; - var y0 = 3; - var y1 = 5; - p[y0] = p[y0] - shiftFactor; - p[y1] = p[y1] - shiftFactor; - return p; - }, - collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { - var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); - var teePts = pointsToArr(transformPoints(this.crossLinePts(size, edgeWidth), size + 2 * padding, angle, translation)); - var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts); - return inside; - }, - draw: function draw(context, size, angle, translation, edgeWidth) { - var triPts = transformPoints(this.points, size, angle, translation); - var crossLinePts = transformPoints(this.crossLinePts(size, edgeWidth), size, angle, translation); - renderer.arrowShapeImpl(this.name)(context, triPts, crossLinePts); - } - }); - defineArrowShape('vee', { - points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15], - gap: function gap(edge) { - return standardGap(edge) * 0.525; - } - }); - defineArrowShape('circle', { - radius: 0.15, - collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { - var t = translation; - var inside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2); - return inside; - }, - draw: function draw(context, size, angle, translation, edgeWidth) { - renderer.arrowShapeImpl(this.name)(context, translation.x, translation.y, this.radius * size); - }, - spacing: function spacing(edge) { - return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius; - } - }); - defineArrowShape('tee', { - points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0], - spacing: function spacing(edge) { - return 1; - }, - gap: function gap(edge) { - return 1; - } - }); - defineArrowShape('square', { - points: [-0.15, 0.00, 0.15, 0.00, 0.15, -0.3, -0.15, -0.3] - }); - defineArrowShape('diamond', { - points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0], - gap: function gap(edge) { - return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value; - } - }); - defineArrowShape('chevron', { - points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15], - gap: function gap(edge) { - return 0.95 * edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value; - } - }); -}; - -var BRp$1 = {}; // Project mouse - -BRp$1.projectIntoViewport = function (clientX, clientY) { - var cy = this.cy; - var offsets = this.findContainerClientCoords(); - var offsetLeft = offsets[0]; - var offsetTop = offsets[1]; - var scale = offsets[4]; - var pan = cy.pan(); - var zoom = cy.zoom(); - var x = ((clientX - offsetLeft) / scale - pan.x) / zoom; - var y = ((clientY - offsetTop) / scale - pan.y) / zoom; - return [x, y]; -}; - -BRp$1.findContainerClientCoords = function () { - if (this.containerBB) { - return this.containerBB; - } - - var container = this.container; - var rect = container.getBoundingClientRect(); - var style = window$1.getComputedStyle(container); - - var styleValue = function styleValue(name) { - return parseFloat(style.getPropertyValue(name)); - }; - - var padding = { - left: styleValue('padding-left'), - right: styleValue('padding-right'), - top: styleValue('padding-top'), - bottom: styleValue('padding-bottom') - }; - var border = { - left: styleValue('border-left-width'), - right: styleValue('border-right-width'), - top: styleValue('border-top-width'), - bottom: styleValue('border-bottom-width') - }; - var clientWidth = container.clientWidth; - var clientHeight = container.clientHeight; - var paddingHor = padding.left + padding.right; - var paddingVer = padding.top + padding.bottom; - var borderHor = border.left + border.right; - var scale = rect.width / (clientWidth + borderHor); - var unscaledW = clientWidth - paddingHor; - var unscaledH = clientHeight - paddingVer; - var left = rect.left + padding.left + border.left; - var top = rect.top + padding.top + border.top; - return this.containerBB = [left, top, unscaledW, unscaledH, scale]; -}; - -BRp$1.invalidateContainerClientCoordsCache = function () { - this.containerBB = null; -}; - -BRp$1.findNearestElement = function (x, y, interactiveElementsOnly, isTouch) { - return this.findNearestElements(x, y, interactiveElementsOnly, isTouch)[0]; -}; - -BRp$1.findNearestElements = function (x, y, interactiveElementsOnly, isTouch) { - var self = this; - var r = this; - var eles = r.getCachedZSortedEles(); - var near = []; // 1 node max, 1 edge max - - var zoom = r.cy.zoom(); - var hasCompounds = r.cy.hasCompoundNodes(); - var edgeThreshold = (isTouch ? 24 : 8) / zoom; - var nodeThreshold = (isTouch ? 8 : 2) / zoom; - var labelThreshold = (isTouch ? 8 : 2) / zoom; - var minSqDist = Infinity; - var nearEdge; - var nearNode; - - if (interactiveElementsOnly) { - eles = eles.interactive; - } - - function addEle(ele, sqDist) { - if (ele.isNode()) { - if (nearNode) { - return; // can't replace node - } else { - nearNode = ele; - near.push(ele); - } - } - - if (ele.isEdge() && (sqDist == null || sqDist < minSqDist)) { - if (nearEdge) { - // then replace existing edge - // can replace only if same z-index - if (nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value && nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value) { - for (var i = 0; i < near.length; i++) { - if (near[i].isEdge()) { - near[i] = ele; - nearEdge = ele; - minSqDist = sqDist != null ? sqDist : minSqDist; - break; - } - } - } - } else { - near.push(ele); - nearEdge = ele; - minSqDist = sqDist != null ? sqDist : minSqDist; - } - } - } - - function checkNode(node) { - var width = node.outerWidth() + 2 * nodeThreshold; - var height = node.outerHeight() + 2 * nodeThreshold; - var hw = width / 2; - var hh = height / 2; - var pos = node.position(); - - if (pos.x - hw <= x && x <= pos.x + hw // bb check x - && pos.y - hh <= y && y <= pos.y + hh // bb check y - ) { - var shape = r.nodeShapes[self.getNodeShape(node)]; - - if (shape.checkPoint(x, y, 0, width, height, pos.x, pos.y)) { - addEle(node, 0); - return true; - } - } - } - - function checkEdge(edge) { - var _p = edge._private; - var rs = _p.rscratch; - var styleWidth = edge.pstyle('width').pfValue; - var scale = edge.pstyle('arrow-scale').value; - var width = styleWidth / 2 + edgeThreshold; // more like a distance radius from centre - - var widthSq = width * width; - var width2 = width * 2; - var src = _p.source; - var tgt = _p.target; - var sqDist; - - if (rs.edgeType === 'segments' || rs.edgeType === 'straight' || rs.edgeType === 'haystack') { - var pts = rs.allpts; - - for (var i = 0; i + 3 < pts.length; i += 2) { - if (inLineVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], width2) && widthSq > (sqDist = sqdistToFiniteLine(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3]))) { - addEle(edge, sqDist); - return true; - } - } - } else if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') { - var pts = rs.allpts; - - for (var i = 0; i + 5 < rs.allpts.length; i += 4) { - if (inBezierVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5], width2) && widthSq > (sqDist = sqdistToQuadraticBezier(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5]))) { - addEle(edge, sqDist); - return true; - } - } - } // if we're close to the edge but didn't hit it, maybe we hit its arrows - - - var src = src || _p.source; - var tgt = tgt || _p.target; - var arSize = self.getArrowWidth(styleWidth, scale); - var arrows = [{ - name: 'source', - x: rs.arrowStartX, - y: rs.arrowStartY, - angle: rs.srcArrowAngle - }, { - name: 'target', - x: rs.arrowEndX, - y: rs.arrowEndY, - angle: rs.tgtArrowAngle - }, { - name: 'mid-source', - x: rs.midX, - y: rs.midY, - angle: rs.midsrcArrowAngle - }, { - name: 'mid-target', - x: rs.midX, - y: rs.midY, - angle: rs.midtgtArrowAngle - }]; - - for (var i = 0; i < arrows.length; i++) { - var ar = arrows[i]; - var shape = r.arrowShapes[edge.pstyle(ar.name + '-arrow-shape').value]; - var edgeWidth = edge.pstyle('width').pfValue; - - if (shape.roughCollide(x, y, arSize, ar.angle, { - x: ar.x, - y: ar.y - }, edgeWidth, edgeThreshold) && shape.collide(x, y, arSize, ar.angle, { - x: ar.x, - y: ar.y - }, edgeWidth, edgeThreshold)) { - addEle(edge); - return true; - } - } // for compound graphs, hitting edge may actually want a connected node instead (b/c edge may have greater z-index precedence) - - - if (hasCompounds && near.length > 0) { - checkNode(src); - checkNode(tgt); - } - } - - function preprop(obj, name, pre) { - return getPrefixedProperty(obj, name, pre); - } - - function checkLabel(ele, prefix) { - var _p = ele._private; - var th = labelThreshold; - var prefixDash; - - if (prefix) { - prefixDash = prefix + '-'; - } else { - prefixDash = ''; - } - - ele.boundingBox(); - var bb = _p.labelBounds[prefix || 'main']; - var text = ele.pstyle(prefixDash + 'label').value; - var eventsEnabled = ele.pstyle('text-events').strValue === 'yes'; - - if (!eventsEnabled || !text) { - return; - } - - var lx = preprop(_p.rscratch, 'labelX', prefix); - var ly = preprop(_p.rscratch, 'labelY', prefix); - var theta = preprop(_p.rscratch, 'labelAngle', prefix); - var ox = ele.pstyle(prefixDash + 'text-margin-x').pfValue; - var oy = ele.pstyle(prefixDash + 'text-margin-y').pfValue; - var lx1 = bb.x1 - th - ox; // (-ox, -oy) as bb already includes margin - - var lx2 = bb.x2 + th - ox; // and rotation is about (lx, ly) - - var ly1 = bb.y1 - th - oy; - var ly2 = bb.y2 + th - oy; - - if (theta) { - var cos = Math.cos(theta); - var sin = Math.sin(theta); - - var rotate = function rotate(x, y) { - x = x - lx; - y = y - ly; - return { - x: x * cos - y * sin + lx, - y: x * sin + y * cos + ly - }; - }; - - var px1y1 = rotate(lx1, ly1); - var px1y2 = rotate(lx1, ly2); - var px2y1 = rotate(lx2, ly1); - var px2y2 = rotate(lx2, ly2); - var points = [// with the margin added after the rotation is applied - px1y1.x + ox, px1y1.y + oy, px2y1.x + ox, px2y1.y + oy, px2y2.x + ox, px2y2.y + oy, px1y2.x + ox, px1y2.y + oy]; - - if (pointInsidePolygonPoints(x, y, points)) { - addEle(ele); - return true; - } - } else { - // do a cheaper bb check - if (inBoundingBox(bb, x, y)) { - addEle(ele); - return true; - } - } - } - - for (var i = eles.length - 1; i >= 0; i--) { - // reverse order for precedence - var ele = eles[i]; - - if (ele.isNode()) { - checkNode(ele) || checkLabel(ele); - } else { - // then edge - checkEdge(ele) || checkLabel(ele) || checkLabel(ele, 'source') || checkLabel(ele, 'target'); - } - } - - return near; -}; // 'Give me everything from this box' - - -BRp$1.getAllInBox = function (x1, y1, x2, y2) { - var eles = this.getCachedZSortedEles().interactive; - var box = []; - var x1c = Math.min(x1, x2); - var x2c = Math.max(x1, x2); - var y1c = Math.min(y1, y2); - var y2c = Math.max(y1, y2); - x1 = x1c; - x2 = x2c; - y1 = y1c; - y2 = y2c; - var boxBb = makeBoundingBox({ - x1: x1, - y1: y1, - x2: x2, - y2: y2 - }); - - for (var e = 0; e < eles.length; e++) { - var ele = eles[e]; - - if (ele.isNode()) { - var node = ele; - var nodeBb = node.boundingBox({ - includeNodes: true, - includeEdges: false, - includeLabels: false - }); - - if (boundingBoxesIntersect(boxBb, nodeBb) && !boundingBoxInBoundingBox(nodeBb, boxBb)) { - box.push(node); - } - } else { - var edge = ele; - var _p = edge._private; - var rs = _p.rscratch; - - if (rs.startX != null && rs.startY != null && !inBoundingBox(boxBb, rs.startX, rs.startY)) { - continue; - } - - if (rs.endX != null && rs.endY != null && !inBoundingBox(boxBb, rs.endX, rs.endY)) { - continue; - } - - if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound' || rs.edgeType === 'segments' || rs.edgeType === 'haystack') { - var pts = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts; - var allInside = true; - - for (var i = 0; i < pts.length; i++) { - if (!pointInBoundingBox(boxBb, pts[i])) { - allInside = false; - break; - } - } - - if (allInside) { - box.push(edge); - } - } else if (rs.edgeType === 'haystack' || rs.edgeType === 'straight') { - box.push(edge); - } - } - } - - return box; -}; - -var BRp$2 = {}; - -BRp$2.calculateArrowAngles = function (edge) { - var rs = edge._private.rscratch; - var isHaystack = rs.edgeType === 'haystack'; - var isBezier = rs.edgeType === 'bezier'; - var isMultibezier = rs.edgeType === 'multibezier'; - var isSegments = rs.edgeType === 'segments'; - var isCompound = rs.edgeType === 'compound'; - var isSelf = rs.edgeType === 'self'; // Displacement gives direction for arrowhead orientation - - var dispX, dispY; - var startX, startY, endX, endY, midX, midY; - - if (isHaystack) { - startX = rs.haystackPts[0]; - startY = rs.haystackPts[1]; - endX = rs.haystackPts[2]; - endY = rs.haystackPts[3]; - } else { - startX = rs.arrowStartX; - startY = rs.arrowStartY; - endX = rs.arrowEndX; - endY = rs.arrowEndY; - } - - midX = rs.midX; - midY = rs.midY; // source - // - - if (isSegments) { - dispX = startX - rs.segpts[0]; - dispY = startY - rs.segpts[1]; - } else if (isMultibezier || isCompound || isSelf || isBezier) { - var pts = rs.allpts; - var bX = qbezierAt(pts[0], pts[2], pts[4], 0.1); - var bY = qbezierAt(pts[1], pts[3], pts[5], 0.1); - dispX = startX - bX; - dispY = startY - bY; - } else { - dispX = startX - midX; - dispY = startY - midY; - } - - rs.srcArrowAngle = getAngleFromDisp(dispX, dispY); // mid target - // - - var midX = rs.midX; - var midY = rs.midY; - - if (isHaystack) { - midX = (startX + endX) / 2; - midY = (startY + endY) / 2; - } - - dispX = endX - startX; - dispY = endY - startY; - - if (isSegments) { - var pts = rs.allpts; - - if (pts.length / 2 % 2 === 0) { - var i2 = pts.length / 2; - var i1 = i2 - 2; - dispX = pts[i2] - pts[i1]; - dispY = pts[i2 + 1] - pts[i1 + 1]; - } else { - var i2 = pts.length / 2 - 1; - var i1 = i2 - 2; - var i3 = i2 + 2; - dispX = pts[i2] - pts[i1]; - dispY = pts[i2 + 1] - pts[i1 + 1]; - } - } else if (isMultibezier || isCompound || isSelf) { - var pts = rs.allpts; - var cpts = rs.ctrlpts; - var bp0x, bp0y; - var bp1x, bp1y; - - if (cpts.length / 2 % 2 === 0) { - var p0 = pts.length / 2 - 1; // startpt - - var ic = p0 + 2; - var p1 = ic + 2; - bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0); - bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0); - bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0001); - bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0001); - } else { - var ic = pts.length / 2 - 1; // ctrpt - - var p0 = ic - 2; // startpt - - var p1 = ic + 2; // endpt - - bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.4999); - bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.4999); - bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.5); - bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.5); - } - - dispX = bp1x - bp0x; - dispY = bp1y - bp0y; - } - - rs.midtgtArrowAngle = getAngleFromDisp(dispX, dispY); - rs.midDispX = dispX; - rs.midDispY = dispY; // mid source - // - - dispX *= -1; - dispY *= -1; - - if (isSegments) { - var pts = rs.allpts; - - if (pts.length / 2 % 2 === 0) ; else { - var i2 = pts.length / 2 - 1; - var i3 = i2 + 2; - dispX = -(pts[i3] - pts[i2]); - dispY = -(pts[i3 + 1] - pts[i2 + 1]); - } - } - - rs.midsrcArrowAngle = getAngleFromDisp(dispX, dispY); // target - // - - if (isSegments) { - dispX = endX - rs.segpts[rs.segpts.length - 2]; - dispY = endY - rs.segpts[rs.segpts.length - 1]; - } else if (isMultibezier || isCompound || isSelf || isBezier) { - var pts = rs.allpts; - var l = pts.length; - var bX = qbezierAt(pts[l - 6], pts[l - 4], pts[l - 2], 0.9); - var bY = qbezierAt(pts[l - 5], pts[l - 3], pts[l - 1], 0.9); - dispX = endX - bX; - dispY = endY - bY; - } else { - dispX = endX - midX; - dispY = endY - midY; - } - - rs.tgtArrowAngle = getAngleFromDisp(dispX, dispY); -}; - -BRp$2.getArrowWidth = BRp$2.getArrowHeight = function (edgeWidth, scale) { - var cache = this.arrowWidthCache = this.arrowWidthCache || {}; - var cachedVal = cache[edgeWidth + ', ' + scale]; - - if (cachedVal) { - return cachedVal; - } - - cachedVal = Math.max(Math.pow(edgeWidth * 13.37, 0.9), 29) * scale; - cache[edgeWidth + ', ' + scale] = cachedVal; - return cachedVal; -}; - -var BRp$3 = {}; - -BRp$3.findHaystackPoints = function (edges) { - for (var i = 0; i < edges.length; i++) { - var edge = edges[i]; - var _p = edge._private; - var rs = _p.rscratch; - - if (!rs.haystack) { - var angle = Math.random() * 2 * Math.PI; - rs.source = { - x: Math.cos(angle), - y: Math.sin(angle) - }; - angle = Math.random() * 2 * Math.PI; - rs.target = { - x: Math.cos(angle), - y: Math.sin(angle) - }; - } - - var src = _p.source; - var tgt = _p.target; - var srcPos = src.position(); - var tgtPos = tgt.position(); - var srcW = src.width(); - var tgtW = tgt.width(); - var srcH = src.height(); - var tgtH = tgt.height(); - var radius = edge.pstyle('haystack-radius').value; - var halfRadius = radius / 2; // b/c have to half width/height - - rs.haystackPts = rs.allpts = [rs.source.x * srcW * halfRadius + srcPos.x, rs.source.y * srcH * halfRadius + srcPos.y, rs.target.x * tgtW * halfRadius + tgtPos.x, rs.target.y * tgtH * halfRadius + tgtPos.y]; - rs.midX = (rs.allpts[0] + rs.allpts[2]) / 2; - rs.midY = (rs.allpts[1] + rs.allpts[3]) / 2; // always override as haystack in case set to different type previously - - rs.edgeType = 'haystack'; - rs.haystack = true; - this.storeEdgeProjections(edge); - this.calculateArrowAngles(edge); - this.recalculateEdgeLabelProjections(edge); - this.calculateLabelAngles(edge); - } -}; - -BRp$3.findSegmentsPoints = function (edge, pairInfo) { - // Segments (multiple straight lines) - var rs = edge._private.rscratch; - var posPts = pairInfo.posPts, - intersectionPts = pairInfo.intersectionPts, - vectorNormInverse = pairInfo.vectorNormInverse; - var edgeDistances = edge.pstyle('edge-distances').value; - var segmentWs = edge.pstyle('segment-weights'); - var segmentDs = edge.pstyle('segment-distances'); - var segmentsN = Math.min(segmentWs.pfValue.length, segmentDs.pfValue.length); - rs.edgeType = 'segments'; - rs.segpts = []; - - for (var s = 0; s < segmentsN; s++) { - var w = segmentWs.pfValue[s]; - var d = segmentDs.pfValue[s]; - var w1 = 1 - w; - var w2 = w; - var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts; - var adjustedMidpt = { - x: midptPts.x1 * w1 + midptPts.x2 * w2, - y: midptPts.y1 * w1 + midptPts.y2 * w2 - }; - rs.segpts.push(adjustedMidpt.x + vectorNormInverse.x * d, adjustedMidpt.y + vectorNormInverse.y * d); - } -}; - -BRp$3.findLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) { - // Self-edge - var rs = edge._private.rscratch; - var dirCounts = pairInfo.dirCounts, - srcPos = pairInfo.srcPos; - var ctrlptDists = edge.pstyle('control-point-distances'); - var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined; - var loopDir = edge.pstyle('loop-direction').pfValue; - var loopSwp = edge.pstyle('loop-sweep').pfValue; - var stepSize = edge.pstyle('control-point-step-size').pfValue; - rs.edgeType = 'self'; - var j = i; - var loopDist = stepSize; - - if (edgeIsUnbundled) { - j = 0; - loopDist = ctrlptDist; - } - - var loopAngle = loopDir - Math.PI / 2; - var outAngle = loopAngle - loopSwp / 2; - var inAngle = loopAngle + loopSwp / 2; // increase by step size for overlapping loops, keyed on direction and sweep values - - var dc = String(loopDir + '_' + loopSwp); - j = dirCounts[dc] === undefined ? dirCounts[dc] = 0 : ++dirCounts[dc]; - rs.ctrlpts = [srcPos.x + Math.cos(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.x + Math.cos(inAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(inAngle) * 1.4 * loopDist * (j / 3 + 1)]; -}; - -BRp$3.findCompoundLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) { - // Compound edge - var rs = edge._private.rscratch; - rs.edgeType = 'compound'; - var srcPos = pairInfo.srcPos, - tgtPos = pairInfo.tgtPos, - srcW = pairInfo.srcW, - srcH = pairInfo.srcH, - tgtW = pairInfo.tgtW, - tgtH = pairInfo.tgtH; - var stepSize = edge.pstyle('control-point-step-size').pfValue; - var ctrlptDists = edge.pstyle('control-point-distances'); - var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined; - var j = i; - var loopDist = stepSize; - - if (edgeIsUnbundled) { - j = 0; - loopDist = ctrlptDist; - } - - var loopW = 50; - var loopaPos = { - x: srcPos.x - srcW / 2, - y: srcPos.y - srcH / 2 - }; - var loopbPos = { - x: tgtPos.x - tgtW / 2, - y: tgtPos.y - tgtH / 2 - }; - var loopPos = { - x: Math.min(loopaPos.x, loopbPos.x), - y: Math.min(loopaPos.y, loopbPos.y) - }; // avoids cases with impossible beziers - - var minCompoundStretch = 0.5; - var compoundStretchA = Math.max(minCompoundStretch, Math.log(srcW * 0.01)); - var compoundStretchB = Math.max(minCompoundStretch, Math.log(tgtW * 0.01)); - rs.ctrlpts = [loopPos.x, loopPos.y - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchA, loopPos.x - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchB, loopPos.y]; -}; - -BRp$3.findStraightEdgePoints = function (edge) { - // Straight edge within bundle - edge._private.rscratch.edgeType = 'straight'; -}; - -BRp$3.findBezierPoints = function (edge, pairInfo, i, edgeIsUnbundled, edgeIsSwapped) { - var rs = edge._private.rscratch; - var vectorNormInverse = pairInfo.vectorNormInverse, - posPts = pairInfo.posPts, - intersectionPts = pairInfo.intersectionPts; - var edgeDistances = edge.pstyle('edge-distances').value; - var stepSize = edge.pstyle('control-point-step-size').pfValue; - var ctrlptDists = edge.pstyle('control-point-distances'); - var ctrlptWs = edge.pstyle('control-point-weights'); - var bezierN = ctrlptDists && ctrlptWs ? Math.min(ctrlptDists.value.length, ctrlptWs.value.length) : 1; - var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined; - var ctrlptWeight = ctrlptWs.value[0]; // (Multi)bezier - - var multi = edgeIsUnbundled; - rs.edgeType = multi ? 'multibezier' : 'bezier'; - rs.ctrlpts = []; - - for (var b = 0; b < bezierN; b++) { - var normctrlptDist = (0.5 - pairInfo.eles.length / 2 + i) * stepSize * (edgeIsSwapped ? -1 : 1); - var manctrlptDist = void 0; - var sign = signum(normctrlptDist); - - if (multi) { - ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[b] : stepSize; // fall back on step size - - ctrlptWeight = ctrlptWs.value[b]; - } - - if (edgeIsUnbundled) { - // multi or single unbundled - manctrlptDist = ctrlptDist; - } else { - manctrlptDist = ctrlptDist !== undefined ? sign * ctrlptDist : undefined; - } - - var distanceFromMidpoint = manctrlptDist !== undefined ? manctrlptDist : normctrlptDist; - var w1 = 1 - ctrlptWeight; - var w2 = ctrlptWeight; - var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts; - var adjustedMidpt = { - x: midptPts.x1 * w1 + midptPts.x2 * w2, - y: midptPts.y1 * w1 + midptPts.y2 * w2 - }; - rs.ctrlpts.push(adjustedMidpt.x + vectorNormInverse.x * distanceFromMidpoint, adjustedMidpt.y + vectorNormInverse.y * distanceFromMidpoint); - } -}; - -BRp$3.findTaxiPoints = function (edge, pairInfo) { - // Taxicab geometry with two turns maximum - var rs = edge._private.rscratch; - rs.edgeType = 'segments'; - var VERTICAL = 'vertical'; - var HORIZONTAL = 'horizontal'; - var LEFTWARD = 'leftward'; - var RIGHTWARD = 'rightward'; - var DOWNWARD = 'downward'; - var UPWARD = 'upward'; - var AUTO = 'auto'; - var posPts = pairInfo.posPts, - srcW = pairInfo.srcW, - srcH = pairInfo.srcH, - tgtW = pairInfo.tgtW, - tgtH = pairInfo.tgtH; - var edgeDistances = edge.pstyle('edge-distances').value; - var dIncludesNodeBody = edgeDistances !== 'node-position'; - var taxiDir = edge.pstyle('taxi-direction').value; - var rawTaxiDir = taxiDir; // unprocessed value - - var taxiTurn = edge.pstyle('taxi-turn'); - var turnIsPercent = taxiTurn.units === '%'; - var taxiTurnPfVal = taxiTurn.pfValue; - var turnIsNegative = taxiTurnPfVal < 0; // i.e. from target side - - var minD = edge.pstyle('taxi-turn-min-distance').pfValue; - var dw = dIncludesNodeBody ? (srcW + tgtW) / 2 : 0; - var dh = dIncludesNodeBody ? (srcH + tgtH) / 2 : 0; - var pdx = posPts.x2 - posPts.x1; - var pdy = posPts.y2 - posPts.y1; // take away the effective w/h from the magnitude of the delta value - - var subDWH = function subDWH(dxy, dwh) { - if (dxy > 0) { - return Math.max(dxy - dwh, 0); - } else { - return Math.min(dxy + dwh, 0); - } - }; - - var dx = subDWH(pdx, dw); - var dy = subDWH(pdy, dh); - var isExplicitDir = false; - - if (rawTaxiDir === AUTO) { - taxiDir = Math.abs(dx) > Math.abs(dy) ? HORIZONTAL : VERTICAL; - } else if (rawTaxiDir === UPWARD || rawTaxiDir === DOWNWARD) { - taxiDir = VERTICAL; - isExplicitDir = true; - } else if (rawTaxiDir === LEFTWARD || rawTaxiDir === RIGHTWARD) { - taxiDir = HORIZONTAL; - isExplicitDir = true; - } - - var isVert = taxiDir === VERTICAL; - var l = isVert ? dy : dx; - var pl = isVert ? pdy : pdx; - var sgnL = signum(pl); - var forcedDir = false; - - if (!(isExplicitDir && (turnIsPercent || turnIsNegative)) // forcing in this case would cause weird growing in the opposite direction - && (rawTaxiDir === DOWNWARD && pl < 0 || rawTaxiDir === UPWARD && pl > 0 || rawTaxiDir === LEFTWARD && pl > 0 || rawTaxiDir === RIGHTWARD && pl < 0)) { - sgnL *= -1; - l = sgnL * Math.abs(l); - forcedDir = true; - } - - var d; - - if (turnIsPercent) { - var p = taxiTurnPfVal < 0 ? 1 + taxiTurnPfVal : taxiTurnPfVal; - d = p * l; - } else { - var k = taxiTurnPfVal < 0 ? l : 0; - d = k + taxiTurnPfVal * sgnL; - } - - var getIsTooClose = function getIsTooClose(d) { - return Math.abs(d) < minD || Math.abs(d) >= Math.abs(l); - }; - - var isTooCloseSrc = getIsTooClose(d); - var isTooCloseTgt = getIsTooClose(Math.abs(l) - Math.abs(d)); - var isTooClose = isTooCloseSrc || isTooCloseTgt; - - if (isTooClose && !forcedDir) { - // non-ideal routing - if (isVert) { - // vertical fallbacks - var lShapeInsideSrc = Math.abs(pl) <= srcH / 2; - var lShapeInsideTgt = Math.abs(pdx) <= tgtW / 2; - - if (lShapeInsideSrc) { - // horizontal Z-shape (direction not respected) - var x = (posPts.x1 + posPts.x2) / 2; - var y1 = posPts.y1, - y2 = posPts.y2; - rs.segpts = [x, y1, x, y2]; - } else if (lShapeInsideTgt) { - // vertical Z-shape (distance not respected) - var y = (posPts.y1 + posPts.y2) / 2; - var x1 = posPts.x1, - x2 = posPts.x2; - rs.segpts = [x1, y, x2, y]; - } else { - // L-shape fallback (turn distance not respected, but works well with tree siblings) - rs.segpts = [posPts.x1, posPts.y2]; - } - } else { - // horizontal fallbacks - var _lShapeInsideSrc = Math.abs(pl) <= srcW / 2; - - var _lShapeInsideTgt = Math.abs(pdy) <= tgtH / 2; - - if (_lShapeInsideSrc) { - // vertical Z-shape (direction not respected) - var _y = (posPts.y1 + posPts.y2) / 2; - - var _x = posPts.x1, - _x2 = posPts.x2; - rs.segpts = [_x, _y, _x2, _y]; - } else if (_lShapeInsideTgt) { - // horizontal Z-shape (turn distance not respected) - var _x3 = (posPts.x1 + posPts.x2) / 2; - - var _y2 = posPts.y1, - _y3 = posPts.y2; - rs.segpts = [_x3, _y2, _x3, _y3]; - } else { - // L-shape (turn distance not respected, but works well for tree siblings) - rs.segpts = [posPts.x2, posPts.y1]; - } - } - } else { - // ideal routing - if (isVert) { - var _y4 = posPts.y1 + d + (dIncludesNodeBody ? srcH / 2 * sgnL : 0); - - var _x4 = posPts.x1, - _x5 = posPts.x2; - rs.segpts = [_x4, _y4, _x5, _y4]; - } else { - // horizontal - var _x6 = posPts.x1 + d + (dIncludesNodeBody ? srcW / 2 * sgnL : 0); - - var _y5 = posPts.y1, - _y6 = posPts.y2; - rs.segpts = [_x6, _y5, _x6, _y6]; - } - } -}; - -BRp$3.tryToCorrectInvalidPoints = function (edge, pairInfo) { - var rs = edge._private.rscratch; // can only correct beziers for now... - - if (rs.edgeType === 'bezier') { - var srcPos = pairInfo.srcPos, - tgtPos = pairInfo.tgtPos, - srcW = pairInfo.srcW, - srcH = pairInfo.srcH, - tgtW = pairInfo.tgtW, - tgtH = pairInfo.tgtH, - srcShape = pairInfo.srcShape, - tgtShape = pairInfo.tgtShape; - var badStart = !number(rs.startX) || !number(rs.startY); - var badAStart = !number(rs.arrowStartX) || !number(rs.arrowStartY); - var badEnd = !number(rs.endX) || !number(rs.endY); - var badAEnd = !number(rs.arrowEndX) || !number(rs.arrowEndY); - var minCpADistFactor = 3; - var arrowW = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth; - var minCpADist = minCpADistFactor * arrowW; - var startACpDist = dist$1({ - x: rs.ctrlpts[0], - y: rs.ctrlpts[1] - }, { - x: rs.startX, - y: rs.startY - }); - var closeStartACp = startACpDist < minCpADist; - var endACpDist = dist$1({ - x: rs.ctrlpts[0], - y: rs.ctrlpts[1] - }, { - x: rs.endX, - y: rs.endY - }); - var closeEndACp = endACpDist < minCpADist; - var overlapping = false; - - if (badStart || badAStart || closeStartACp) { - overlapping = true; // project control point along line from src centre to outside the src shape - // (otherwise intersection will yield nothing) - - var cpD = { - // delta - x: rs.ctrlpts[0] - srcPos.x, - y: rs.ctrlpts[1] - srcPos.y - }; - var cpL = Math.sqrt(cpD.x * cpD.x + cpD.y * cpD.y); // length of line - - var cpM = { - // normalised delta - x: cpD.x / cpL, - y: cpD.y / cpL - }; - var radius = Math.max(srcW, srcH); - var cpProj = { - // *2 radius guarantees outside shape - x: rs.ctrlpts[0] + cpM.x * 2 * radius, - y: rs.ctrlpts[1] + cpM.y * 2 * radius - }; - var srcCtrlPtIntn = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, cpProj.x, cpProj.y, 0); - - if (closeStartACp) { - rs.ctrlpts[0] = rs.ctrlpts[0] + cpM.x * (minCpADist - startACpDist); - rs.ctrlpts[1] = rs.ctrlpts[1] + cpM.y * (minCpADist - startACpDist); - } else { - rs.ctrlpts[0] = srcCtrlPtIntn[0] + cpM.x * minCpADist; - rs.ctrlpts[1] = srcCtrlPtIntn[1] + cpM.y * minCpADist; - } - } - - if (badEnd || badAEnd || closeEndACp) { - overlapping = true; // project control point along line from tgt centre to outside the tgt shape - // (otherwise intersection will yield nothing) - - var _cpD = { - // delta - x: rs.ctrlpts[0] - tgtPos.x, - y: rs.ctrlpts[1] - tgtPos.y - }; - - var _cpL = Math.sqrt(_cpD.x * _cpD.x + _cpD.y * _cpD.y); // length of line - - - var _cpM = { - // normalised delta - x: _cpD.x / _cpL, - y: _cpD.y / _cpL - }; - - var _radius = Math.max(srcW, srcH); - - var _cpProj = { - // *2 radius guarantees outside shape - x: rs.ctrlpts[0] + _cpM.x * 2 * _radius, - y: rs.ctrlpts[1] + _cpM.y * 2 * _radius - }; - var tgtCtrlPtIntn = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, _cpProj.x, _cpProj.y, 0); - - if (closeEndACp) { - rs.ctrlpts[0] = rs.ctrlpts[0] + _cpM.x * (minCpADist - endACpDist); - rs.ctrlpts[1] = rs.ctrlpts[1] + _cpM.y * (minCpADist - endACpDist); - } else { - rs.ctrlpts[0] = tgtCtrlPtIntn[0] + _cpM.x * minCpADist; - rs.ctrlpts[1] = tgtCtrlPtIntn[1] + _cpM.y * minCpADist; - } - } - - if (overlapping) { - // recalc endpts - this.findEndpoints(edge); - } - } -}; - -BRp$3.storeAllpts = function (edge) { - var rs = edge._private.rscratch; - - if (rs.edgeType === 'multibezier' || rs.edgeType === 'bezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') { - rs.allpts = []; - rs.allpts.push(rs.startX, rs.startY); - - for (var b = 0; b + 1 < rs.ctrlpts.length; b += 2) { - // ctrl pt itself - rs.allpts.push(rs.ctrlpts[b], rs.ctrlpts[b + 1]); // the midpt between ctrlpts as intermediate destination pts - - if (b + 3 < rs.ctrlpts.length) { - rs.allpts.push((rs.ctrlpts[b] + rs.ctrlpts[b + 2]) / 2, (rs.ctrlpts[b + 1] + rs.ctrlpts[b + 3]) / 2); - } - } - - rs.allpts.push(rs.endX, rs.endY); - var m, mt; - - if (rs.ctrlpts.length / 2 % 2 === 0) { - m = rs.allpts.length / 2 - 1; - rs.midX = rs.allpts[m]; - rs.midY = rs.allpts[m + 1]; - } else { - m = rs.allpts.length / 2 - 3; - mt = 0.5; - rs.midX = qbezierAt(rs.allpts[m], rs.allpts[m + 2], rs.allpts[m + 4], mt); - rs.midY = qbezierAt(rs.allpts[m + 1], rs.allpts[m + 3], rs.allpts[m + 5], mt); - } - } else if (rs.edgeType === 'straight') { - // need to calc these after endpts - rs.allpts = [rs.startX, rs.startY, rs.endX, rs.endY]; // default midpt for labels etc - - rs.midX = (rs.startX + rs.endX + rs.arrowStartX + rs.arrowEndX) / 4; - rs.midY = (rs.startY + rs.endY + rs.arrowStartY + rs.arrowEndY) / 4; - } else if (rs.edgeType === 'segments') { - rs.allpts = []; - rs.allpts.push(rs.startX, rs.startY); - rs.allpts.push.apply(rs.allpts, rs.segpts); - rs.allpts.push(rs.endX, rs.endY); - - if (rs.segpts.length % 4 === 0) { - var i2 = rs.segpts.length / 2; - var i1 = i2 - 2; - rs.midX = (rs.segpts[i1] + rs.segpts[i2]) / 2; - rs.midY = (rs.segpts[i1 + 1] + rs.segpts[i2 + 1]) / 2; - } else { - var _i = rs.segpts.length / 2 - 1; - - rs.midX = rs.segpts[_i]; - rs.midY = rs.segpts[_i + 1]; - } - } -}; - -BRp$3.checkForInvalidEdgeWarning = function (edge) { - var rs = edge[0]._private.rscratch; - - if (rs.nodesOverlap || number(rs.startX) && number(rs.startY) && number(rs.endX) && number(rs.endY)) { - rs.loggedErr = false; - } else { - if (!rs.loggedErr) { - rs.loggedErr = true; - warn('Edge `' + edge.id() + '` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap.'); - } - } -}; - -BRp$3.findEdgeControlPoints = function (edges) { - var _this = this; - - if (!edges || edges.length === 0) { - return; - } - - var r = this; - var cy = r.cy; - var hasCompounds = cy.hasCompoundNodes(); - var hashTable = { - map: new Map$1$1(), - get: function get(pairId) { - var map2 = this.map.get(pairId[0]); - - if (map2 != null) { - return map2.get(pairId[1]); - } else { - return null; - } - }, - set: function set(pairId, val) { - var map2 = this.map.get(pairId[0]); - - if (map2 == null) { - map2 = new Map$1$1(); - this.map.set(pairId[0], map2); - } - - map2.set(pairId[1], val); - } - }; - var pairIds = []; - var haystackEdges = []; // create a table of edge (src, tgt) => list of edges between them - - for (var i = 0; i < edges.length; i++) { - var edge = edges[i]; - var _p = edge._private; - var curveStyle = edge.pstyle('curve-style').value; // ignore edges who are not to be displayed - // they shouldn't take up space - - if (edge.removed() || !edge.takesUpSpace()) { - continue; - } - - if (curveStyle === 'haystack') { - haystackEdges.push(edge); - continue; - } - - var edgeIsUnbundled = curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'straight' || curveStyle === 'straight-triangle' || curveStyle === 'taxi'; - var edgeIsBezier = curveStyle === 'unbundled-bezier' || curveStyle === 'bezier'; - var src = _p.source; - var tgt = _p.target; - var srcIndex = src.poolIndex(); - var tgtIndex = tgt.poolIndex(); - var pairId = [srcIndex, tgtIndex].sort(); - var tableEntry = hashTable.get(pairId); - - if (tableEntry == null) { - tableEntry = { - eles: [] - }; - hashTable.set(pairId, tableEntry); - pairIds.push(pairId); - } - - tableEntry.eles.push(edge); - - if (edgeIsUnbundled) { - tableEntry.hasUnbundled = true; - } - - if (edgeIsBezier) { - tableEntry.hasBezier = true; - } - } // for each pair (src, tgt), create the ctrl pts - // Nested for loop is OK; total number of iterations for both loops = edgeCount - - - var _loop = function _loop(p) { - var pairId = pairIds[p]; - var pairInfo = hashTable.get(pairId); - var swappedpairInfo = void 0; - - if (!pairInfo.hasUnbundled) { - var pllEdges = pairInfo.eles[0].parallelEdges().filter(function (e) { - return e.isBundledBezier(); - }); - clearArray(pairInfo.eles); - pllEdges.forEach(function (edge) { - return pairInfo.eles.push(edge); - }); // for each pair id, the edges should be sorted by index - - pairInfo.eles.sort(function (edge1, edge2) { - return edge1.poolIndex() - edge2.poolIndex(); - }); - } - - var firstEdge = pairInfo.eles[0]; - var src = firstEdge.source(); - var tgt = firstEdge.target(); // make sure src/tgt distinction is consistent w.r.t. pairId - - if (src.poolIndex() > tgt.poolIndex()) { - var temp = src; - src = tgt; - tgt = temp; - } - - var srcPos = pairInfo.srcPos = src.position(); - var tgtPos = pairInfo.tgtPos = tgt.position(); - var srcW = pairInfo.srcW = src.outerWidth(); - var srcH = pairInfo.srcH = src.outerHeight(); - var tgtW = pairInfo.tgtW = tgt.outerWidth(); - var tgtH = pairInfo.tgtH = tgt.outerHeight(); - - var srcShape = pairInfo.srcShape = r.nodeShapes[_this.getNodeShape(src)]; - - var tgtShape = pairInfo.tgtShape = r.nodeShapes[_this.getNodeShape(tgt)]; - - pairInfo.dirCounts = { - 'north': 0, - 'west': 0, - 'south': 0, - 'east': 0, - 'northwest': 0, - 'southwest': 0, - 'northeast': 0, - 'southeast': 0 - }; - - for (var _i2 = 0; _i2 < pairInfo.eles.length; _i2++) { - var _edge = pairInfo.eles[_i2]; - var rs = _edge[0]._private.rscratch; - - var _curveStyle = _edge.pstyle('curve-style').value; - - var _edgeIsUnbundled = _curveStyle === 'unbundled-bezier' || _curveStyle === 'segments' || _curveStyle === 'taxi'; // whether the normalised pair order is the reverse of the edge's src-tgt order - - - var edgeIsSwapped = !src.same(_edge.source()); - - if (!pairInfo.calculatedIntersection && src !== tgt && (pairInfo.hasBezier || pairInfo.hasUnbundled)) { - pairInfo.calculatedIntersection = true; // pt outside src shape to calc distance/displacement from src to tgt - - var srcOutside = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, tgtPos.x, tgtPos.y, 0); - var srcIntn = pairInfo.srcIntn = srcOutside; // pt outside tgt shape to calc distance/displacement from src to tgt - - var tgtOutside = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, srcPos.x, srcPos.y, 0); - var tgtIntn = pairInfo.tgtIntn = tgtOutside; - var intersectionPts = pairInfo.intersectionPts = { - x1: srcOutside[0], - x2: tgtOutside[0], - y1: srcOutside[1], - y2: tgtOutside[1] - }; - var posPts = pairInfo.posPts = { - x1: srcPos.x, - x2: tgtPos.x, - y1: srcPos.y, - y2: tgtPos.y - }; - var dy = tgtOutside[1] - srcOutside[1]; - var dx = tgtOutside[0] - srcOutside[0]; - var l = Math.sqrt(dx * dx + dy * dy); - var vector = pairInfo.vector = { - x: dx, - y: dy - }; - var vectorNorm = pairInfo.vectorNorm = { - x: vector.x / l, - y: vector.y / l - }; - var vectorNormInverse = { - x: -vectorNorm.y, - y: vectorNorm.x - }; // if node shapes overlap, then no ctrl pts to draw - - pairInfo.nodesOverlap = !number(l) || tgtShape.checkPoint(srcOutside[0], srcOutside[1], 0, tgtW, tgtH, tgtPos.x, tgtPos.y) || srcShape.checkPoint(tgtOutside[0], tgtOutside[1], 0, srcW, srcH, srcPos.x, srcPos.y); - pairInfo.vectorNormInverse = vectorNormInverse; - swappedpairInfo = { - nodesOverlap: pairInfo.nodesOverlap, - dirCounts: pairInfo.dirCounts, - calculatedIntersection: true, - hasBezier: pairInfo.hasBezier, - hasUnbundled: pairInfo.hasUnbundled, - eles: pairInfo.eles, - srcPos: tgtPos, - tgtPos: srcPos, - srcW: tgtW, - srcH: tgtH, - tgtW: srcW, - tgtH: srcH, - srcIntn: tgtIntn, - tgtIntn: srcIntn, - srcShape: tgtShape, - tgtShape: srcShape, - posPts: { - x1: posPts.x2, - y1: posPts.y2, - x2: posPts.x1, - y2: posPts.y1 - }, - intersectionPts: { - x1: intersectionPts.x2, - y1: intersectionPts.y2, - x2: intersectionPts.x1, - y2: intersectionPts.y1 - }, - vector: { - x: -vector.x, - y: -vector.y - }, - vectorNorm: { - x: -vectorNorm.x, - y: -vectorNorm.y - }, - vectorNormInverse: { - x: -vectorNormInverse.x, - y: -vectorNormInverse.y - } - }; - } - - var passedPairInfo = edgeIsSwapped ? swappedpairInfo : pairInfo; - rs.nodesOverlap = passedPairInfo.nodesOverlap; - rs.srcIntn = passedPairInfo.srcIntn; - rs.tgtIntn = passedPairInfo.tgtIntn; - - if (hasCompounds && (src.isParent() || src.isChild() || tgt.isParent() || tgt.isChild()) && (src.parents().anySame(tgt) || tgt.parents().anySame(src) || src.same(tgt) && src.isParent())) { - _this.findCompoundLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled); - } else if (src === tgt) { - _this.findLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled); - } else if (_curveStyle === 'segments') { - _this.findSegmentsPoints(_edge, passedPairInfo); - } else if (_curveStyle === 'taxi') { - _this.findTaxiPoints(_edge, passedPairInfo); - } else if (_curveStyle === 'straight' || !_edgeIsUnbundled && pairInfo.eles.length % 2 === 1 && _i2 === Math.floor(pairInfo.eles.length / 2)) { - _this.findStraightEdgePoints(_edge); - } else { - _this.findBezierPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled, edgeIsSwapped); - } - - _this.findEndpoints(_edge); - - _this.tryToCorrectInvalidPoints(_edge, passedPairInfo); - - _this.checkForInvalidEdgeWarning(_edge); - - _this.storeAllpts(_edge); - - _this.storeEdgeProjections(_edge); - - _this.calculateArrowAngles(_edge); - - _this.recalculateEdgeLabelProjections(_edge); - - _this.calculateLabelAngles(_edge); - } // for pair edges - - }; - - for (var p = 0; p < pairIds.length; p++) { - _loop(p); - } // for pair ids - // haystacks avoid the expense of pairInfo stuff (intersections etc.) - - - this.findHaystackPoints(haystackEdges); -}; - -function getPts(pts) { - var retPts = []; - - if (pts == null) { - return; - } - - for (var i = 0; i < pts.length; i += 2) { - var x = pts[i]; - var y = pts[i + 1]; - retPts.push({ - x: x, - y: y - }); - } - - return retPts; -} - -BRp$3.getSegmentPoints = function (edge) { - var rs = edge[0]._private.rscratch; - var type = rs.edgeType; - - if (type === 'segments') { - this.recalculateRenderedStyle(edge); - return getPts(rs.segpts); - } -}; - -BRp$3.getControlPoints = function (edge) { - var rs = edge[0]._private.rscratch; - var type = rs.edgeType; - - if (type === 'bezier' || type === 'multibezier' || type === 'self' || type === 'compound') { - this.recalculateRenderedStyle(edge); - return getPts(rs.ctrlpts); - } -}; - -BRp$3.getEdgeMidpoint = function (edge) { - var rs = edge[0]._private.rscratch; - this.recalculateRenderedStyle(edge); - return { - x: rs.midX, - y: rs.midY - }; -}; - -var BRp$4 = {}; - -BRp$4.manualEndptToPx = function (node, prop) { - var r = this; - var npos = node.position(); - var w = node.outerWidth(); - var h = node.outerHeight(); - - if (prop.value.length === 2) { - var p = [prop.pfValue[0], prop.pfValue[1]]; - - if (prop.units[0] === '%') { - p[0] = p[0] * w; - } - - if (prop.units[1] === '%') { - p[1] = p[1] * h; - } - - p[0] += npos.x; - p[1] += npos.y; - return p; - } else { - var angle = prop.pfValue[0]; - angle = -Math.PI / 2 + angle; // start at 12 o'clock - - var l = 2 * Math.max(w, h); - var _p = [npos.x + Math.cos(angle) * l, npos.y + Math.sin(angle) * l]; - return r.nodeShapes[this.getNodeShape(node)].intersectLine(npos.x, npos.y, w, h, _p[0], _p[1], 0); - } -}; - -BRp$4.findEndpoints = function (edge) { - var r = this; - var intersect; - var source = edge.source()[0]; - var target = edge.target()[0]; - var srcPos = source.position(); - var tgtPos = target.position(); - var tgtArShape = edge.pstyle('target-arrow-shape').value; - var srcArShape = edge.pstyle('source-arrow-shape').value; - var tgtDist = edge.pstyle('target-distance-from-node').pfValue; - var srcDist = edge.pstyle('source-distance-from-node').pfValue; - var curveStyle = edge.pstyle('curve-style').value; - var rs = edge._private.rscratch; - var et = rs.edgeType; - var taxi = curveStyle === 'taxi'; - var self = et === 'self' || et === 'compound'; - var bezier = et === 'bezier' || et === 'multibezier' || self; - var multi = et !== 'bezier'; - var lines = et === 'straight' || et === 'segments'; - var segments = et === 'segments'; - var hasEndpts = bezier || multi || lines; - var overrideEndpts = self || taxi; - var srcManEndpt = edge.pstyle('source-endpoint'); - var srcManEndptVal = overrideEndpts ? 'outside-to-node' : srcManEndpt.value; - var tgtManEndpt = edge.pstyle('target-endpoint'); - var tgtManEndptVal = overrideEndpts ? 'outside-to-node' : tgtManEndpt.value; - rs.srcManEndpt = srcManEndpt; - rs.tgtManEndpt = tgtManEndpt; - var p1; // last known point of edge on target side - - var p2; // last known point of edge on source side - - var p1_i; // point to intersect with target shape - - var p2_i; // point to intersect with source shape - - if (bezier) { - var cpStart = [rs.ctrlpts[0], rs.ctrlpts[1]]; - var cpEnd = multi ? [rs.ctrlpts[rs.ctrlpts.length - 2], rs.ctrlpts[rs.ctrlpts.length - 1]] : cpStart; - p1 = cpEnd; - p2 = cpStart; - } else if (lines) { - var srcArrowFromPt = !segments ? [tgtPos.x, tgtPos.y] : rs.segpts.slice(0, 2); - var tgtArrowFromPt = !segments ? [srcPos.x, srcPos.y] : rs.segpts.slice(rs.segpts.length - 2); - p1 = tgtArrowFromPt; - p2 = srcArrowFromPt; - } - - if (tgtManEndptVal === 'inside-to-node') { - intersect = [tgtPos.x, tgtPos.y]; - } else if (tgtManEndpt.units) { - intersect = this.manualEndptToPx(target, tgtManEndpt); - } else if (tgtManEndptVal === 'outside-to-line') { - intersect = rs.tgtIntn; // use cached value from ctrlpt calc - } else { - if (tgtManEndptVal === 'outside-to-node' || tgtManEndptVal === 'outside-to-node-or-label') { - p1_i = p1; - } else if (tgtManEndptVal === 'outside-to-line' || tgtManEndptVal === 'outside-to-line-or-label') { - p1_i = [srcPos.x, srcPos.y]; - } - - intersect = r.nodeShapes[this.getNodeShape(target)].intersectLine(tgtPos.x, tgtPos.y, target.outerWidth(), target.outerHeight(), p1_i[0], p1_i[1], 0); - - if (tgtManEndptVal === 'outside-to-node-or-label' || tgtManEndptVal === 'outside-to-line-or-label') { - var trs = target._private.rscratch; - var lw = trs.labelWidth; - var lh = trs.labelHeight; - var lx = trs.labelX; - var ly = trs.labelY; - var lw2 = lw / 2; - var lh2 = lh / 2; - var va = target.pstyle('text-valign').value; - - if (va === 'top') { - ly -= lh2; - } else if (va === 'bottom') { - ly += lh2; - } - - var ha = target.pstyle('text-halign').value; - - if (ha === 'left') { - lx -= lw2; - } else if (ha === 'right') { - lx += lw2; - } - - var labelIntersect = polygonIntersectLine(p1_i[0], p1_i[1], [lx - lw2, ly - lh2, lx + lw2, ly - lh2, lx + lw2, ly + lh2, lx - lw2, ly + lh2], tgtPos.x, tgtPos.y); - - if (labelIntersect.length > 0) { - var refPt = srcPos; - var intSqdist = sqdist(refPt, array2point(intersect)); - var labIntSqdist = sqdist(refPt, array2point(labelIntersect)); - var minSqDist = intSqdist; - - if (labIntSqdist < intSqdist) { - intersect = labelIntersect; - minSqDist = labIntSqdist; - } - - if (labelIntersect.length > 2) { - var labInt2SqDist = sqdist(refPt, { - x: labelIntersect[2], - y: labelIntersect[3] - }); - - if (labInt2SqDist < minSqDist) { - intersect = [labelIntersect[2], labelIntersect[3]]; - } - } - } - } - } - - var arrowEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].spacing(edge) + tgtDist); - var edgeEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].gap(edge) + tgtDist); - rs.endX = edgeEnd[0]; - rs.endY = edgeEnd[1]; - rs.arrowEndX = arrowEnd[0]; - rs.arrowEndY = arrowEnd[1]; - - if (srcManEndptVal === 'inside-to-node') { - intersect = [srcPos.x, srcPos.y]; - } else if (srcManEndpt.units) { - intersect = this.manualEndptToPx(source, srcManEndpt); - } else if (srcManEndptVal === 'outside-to-line') { - intersect = rs.srcIntn; // use cached value from ctrlpt calc - } else { - if (srcManEndptVal === 'outside-to-node' || srcManEndptVal === 'outside-to-node-or-label') { - p2_i = p2; - } else if (srcManEndptVal === 'outside-to-line' || srcManEndptVal === 'outside-to-line-or-label') { - p2_i = [tgtPos.x, tgtPos.y]; - } - - intersect = r.nodeShapes[this.getNodeShape(source)].intersectLine(srcPos.x, srcPos.y, source.outerWidth(), source.outerHeight(), p2_i[0], p2_i[1], 0); - - if (srcManEndptVal === 'outside-to-node-or-label' || srcManEndptVal === 'outside-to-line-or-label') { - var srs = source._private.rscratch; - var _lw = srs.labelWidth; - var _lh = srs.labelHeight; - var _lx = srs.labelX; - var _ly = srs.labelY; - - var _lw2 = _lw / 2; - - var _lh2 = _lh / 2; - - var _va = source.pstyle('text-valign').value; - - if (_va === 'top') { - _ly -= _lh2; - } else if (_va === 'bottom') { - _ly += _lh2; - } - - var _ha = source.pstyle('text-halign').value; - - if (_ha === 'left') { - _lx -= _lw2; - } else if (_ha === 'right') { - _lx += _lw2; - } - - var _labelIntersect = polygonIntersectLine(p2_i[0], p2_i[1], [_lx - _lw2, _ly - _lh2, _lx + _lw2, _ly - _lh2, _lx + _lw2, _ly + _lh2, _lx - _lw2, _ly + _lh2], srcPos.x, srcPos.y); - - if (_labelIntersect.length > 0) { - var _refPt = tgtPos; - - var _intSqdist = sqdist(_refPt, array2point(intersect)); - - var _labIntSqdist = sqdist(_refPt, array2point(_labelIntersect)); - - var _minSqDist = _intSqdist; - - if (_labIntSqdist < _intSqdist) { - intersect = [_labelIntersect[0], _labelIntersect[1]]; - _minSqDist = _labIntSqdist; - } - - if (_labelIntersect.length > 2) { - var _labInt2SqDist = sqdist(_refPt, { - x: _labelIntersect[2], - y: _labelIntersect[3] - }); - - if (_labInt2SqDist < _minSqDist) { - intersect = [_labelIntersect[2], _labelIntersect[3]]; - } - } - } - } - } - - var arrowStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].spacing(edge) + srcDist); - var edgeStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].gap(edge) + srcDist); - rs.startX = edgeStart[0]; - rs.startY = edgeStart[1]; - rs.arrowStartX = arrowStart[0]; - rs.arrowStartY = arrowStart[1]; - - if (hasEndpts) { - if (!number(rs.startX) || !number(rs.startY) || !number(rs.endX) || !number(rs.endY)) { - rs.badLine = true; - } else { - rs.badLine = false; - } - } -}; - -BRp$4.getSourceEndpoint = function (edge) { - var rs = edge[0]._private.rscratch; - this.recalculateRenderedStyle(edge); - - switch (rs.edgeType) { - case 'haystack': - return { - x: rs.haystackPts[0], - y: rs.haystackPts[1] - }; - - default: - return { - x: rs.arrowStartX, - y: rs.arrowStartY - }; - } -}; - -BRp$4.getTargetEndpoint = function (edge) { - var rs = edge[0]._private.rscratch; - this.recalculateRenderedStyle(edge); - - switch (rs.edgeType) { - case 'haystack': - return { - x: rs.haystackPts[2], - y: rs.haystackPts[3] - }; - - default: - return { - x: rs.arrowEndX, - y: rs.arrowEndY - }; - } -}; - -var BRp$5 = {}; - -function pushBezierPts(r, edge, pts) { - var qbezierAt$1 = function qbezierAt$1(p1, p2, p3, t) { - return qbezierAt(p1, p2, p3, t); - }; - - var _p = edge._private; - var bpts = _p.rstyle.bezierPts; - - for (var i = 0; i < r.bezierProjPcts.length; i++) { - var p = r.bezierProjPcts[i]; - bpts.push({ - x: qbezierAt$1(pts[0], pts[2], pts[4], p), - y: qbezierAt$1(pts[1], pts[3], pts[5], p) - }); - } -} - -BRp$5.storeEdgeProjections = function (edge) { - var _p = edge._private; - var rs = _p.rscratch; - var et = rs.edgeType; // clear the cached points state - - _p.rstyle.bezierPts = null; - _p.rstyle.linePts = null; - _p.rstyle.haystackPts = null; - - if (et === 'multibezier' || et === 'bezier' || et === 'self' || et === 'compound') { - _p.rstyle.bezierPts = []; - - for (var i = 0; i + 5 < rs.allpts.length; i += 4) { - pushBezierPts(this, edge, rs.allpts.slice(i, i + 6)); - } - } else if (et === 'segments') { - var lpts = _p.rstyle.linePts = []; - - for (var i = 0; i + 1 < rs.allpts.length; i += 2) { - lpts.push({ - x: rs.allpts[i], - y: rs.allpts[i + 1] - }); - } - } else if (et === 'haystack') { - var hpts = rs.haystackPts; - _p.rstyle.haystackPts = [{ - x: hpts[0], - y: hpts[1] - }, { - x: hpts[2], - y: hpts[3] - }]; - } - - _p.rstyle.arrowWidth = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth; -}; - -BRp$5.recalculateEdgeProjections = function (edges) { - this.findEdgeControlPoints(edges); -}; - -/* global document */ - -var BRp$6 = {}; - -BRp$6.recalculateNodeLabelProjection = function (node) { - var content = node.pstyle('label').strValue; - - if (emptyString(content)) { - return; - } - - var textX, textY; - var _p = node._private; - var nodeWidth = node.width(); - var nodeHeight = node.height(); - var padding = node.padding(); - var nodePos = node.position(); - var textHalign = node.pstyle('text-halign').strValue; - var textValign = node.pstyle('text-valign').strValue; - var rs = _p.rscratch; - var rstyle = _p.rstyle; - - switch (textHalign) { - case 'left': - textX = nodePos.x - nodeWidth / 2 - padding; - break; - - case 'right': - textX = nodePos.x + nodeWidth / 2 + padding; - break; - - default: - // e.g. center - textX = nodePos.x; - } - - switch (textValign) { - case 'top': - textY = nodePos.y - nodeHeight / 2 - padding; - break; - - case 'bottom': - textY = nodePos.y + nodeHeight / 2 + padding; - break; - - default: - // e.g. middle - textY = nodePos.y; - } - - rs.labelX = textX; - rs.labelY = textY; - rstyle.labelX = textX; - rstyle.labelY = textY; - this.calculateLabelAngles(node); - this.applyLabelDimensions(node); -}; - -var lineAngleFromDelta = function lineAngleFromDelta(dx, dy) { - var angle = Math.atan(dy / dx); - - if (dx === 0 && angle < 0) { - angle = angle * -1; - } - - return angle; -}; - -var lineAngle = function lineAngle(p0, p1) { - var dx = p1.x - p0.x; - var dy = p1.y - p0.y; - return lineAngleFromDelta(dx, dy); -}; - -var bezierAngle = function bezierAngle(p0, p1, p2, t) { - var t0 = bound(0, t - 0.001, 1); - var t1 = bound(0, t + 0.001, 1); - var lp0 = qbezierPtAt(p0, p1, p2, t0); - var lp1 = qbezierPtAt(p0, p1, p2, t1); - return lineAngle(lp0, lp1); -}; - -BRp$6.recalculateEdgeLabelProjections = function (edge) { - var p; - var _p = edge._private; - var rs = _p.rscratch; - var r = this; - var content = { - mid: edge.pstyle('label').strValue, - source: edge.pstyle('source-label').strValue, - target: edge.pstyle('target-label').strValue - }; - - if (content.mid || content.source || content.target) ; else { - return; // no labels => no calcs - } // add center point to style so bounding box calculations can use it - // - - - p = { - x: rs.midX, - y: rs.midY - }; - - var setRs = function setRs(propName, prefix, value) { - setPrefixedProperty(_p.rscratch, propName, prefix, value); - setPrefixedProperty(_p.rstyle, propName, prefix, value); - }; - - setRs('labelX', null, p.x); - setRs('labelY', null, p.y); - var midAngle = lineAngleFromDelta(rs.midDispX, rs.midDispY); - setRs('labelAutoAngle', null, midAngle); - - var createControlPointInfo = function createControlPointInfo() { - if (createControlPointInfo.cache) { - return createControlPointInfo.cache; - } // use cache so only 1x per edge - - - var ctrlpts = []; // store each ctrlpt info init - - for (var i = 0; i + 5 < rs.allpts.length; i += 4) { - var p0 = { - x: rs.allpts[i], - y: rs.allpts[i + 1] - }; - var p1 = { - x: rs.allpts[i + 2], - y: rs.allpts[i + 3] - }; // ctrlpt - - var p2 = { - x: rs.allpts[i + 4], - y: rs.allpts[i + 5] - }; - ctrlpts.push({ - p0: p0, - p1: p1, - p2: p2, - startDist: 0, - length: 0, - segments: [] - }); - } - - var bpts = _p.rstyle.bezierPts; - var nProjs = r.bezierProjPcts.length; - - function addSegment(cp, p0, p1, t0, t1) { - var length = dist$1(p0, p1); - var prevSegment = cp.segments[cp.segments.length - 1]; - var segment = { - p0: p0, - p1: p1, - t0: t0, - t1: t1, - startDist: prevSegment ? prevSegment.startDist + prevSegment.length : 0, - length: length - }; - cp.segments.push(segment); - cp.length += length; - } // update each ctrlpt with segment info - - - for (var _i = 0; _i < ctrlpts.length; _i++) { - var cp = ctrlpts[_i]; - var prevCp = ctrlpts[_i - 1]; - - if (prevCp) { - cp.startDist = prevCp.startDist + prevCp.length; - } - - addSegment(cp, cp.p0, bpts[_i * nProjs], 0, r.bezierProjPcts[0]); // first - - for (var j = 0; j < nProjs - 1; j++) { - addSegment(cp, bpts[_i * nProjs + j], bpts[_i * nProjs + j + 1], r.bezierProjPcts[j], r.bezierProjPcts[j + 1]); - } - - addSegment(cp, bpts[_i * nProjs + nProjs - 1], cp.p2, r.bezierProjPcts[nProjs - 1], 1); // last - } - - return createControlPointInfo.cache = ctrlpts; - }; - - var calculateEndProjection = function calculateEndProjection(prefix) { - var angle; - var isSrc = prefix === 'source'; - - if (!content[prefix]) { - return; - } - - var offset = edge.pstyle(prefix + '-text-offset').pfValue; - - switch (rs.edgeType) { - case 'self': - case 'compound': - case 'bezier': - case 'multibezier': - { - var cps = createControlPointInfo(); - var selected; - var startDist = 0; - var totalDist = 0; // find the segment we're on - - for (var i = 0; i < cps.length; i++) { - var _cp = cps[isSrc ? i : cps.length - 1 - i]; - - for (var j = 0; j < _cp.segments.length; j++) { - var _seg = _cp.segments[isSrc ? j : _cp.segments.length - 1 - j]; - var lastSeg = i === cps.length - 1 && j === _cp.segments.length - 1; - startDist = totalDist; - totalDist += _seg.length; - - if (totalDist >= offset || lastSeg) { - selected = { - cp: _cp, - segment: _seg - }; - break; - } - } - - if (selected) { - break; - } - } - - var cp = selected.cp; - var seg = selected.segment; - var tSegment = (offset - startDist) / seg.length; - var segDt = seg.t1 - seg.t0; - var t = isSrc ? seg.t0 + segDt * tSegment : seg.t1 - segDt * tSegment; - t = bound(0, t, 1); - p = qbezierPtAt(cp.p0, cp.p1, cp.p2, t); - angle = bezierAngle(cp.p0, cp.p1, cp.p2, t); - break; - } - - case 'straight': - case 'segments': - case 'haystack': - { - var d = 0, - di, - d0; - var p0, p1; - var l = rs.allpts.length; - - for (var _i2 = 0; _i2 + 3 < l; _i2 += 2) { - if (isSrc) { - p0 = { - x: rs.allpts[_i2], - y: rs.allpts[_i2 + 1] - }; - p1 = { - x: rs.allpts[_i2 + 2], - y: rs.allpts[_i2 + 3] - }; - } else { - p0 = { - x: rs.allpts[l - 2 - _i2], - y: rs.allpts[l - 1 - _i2] - }; - p1 = { - x: rs.allpts[l - 4 - _i2], - y: rs.allpts[l - 3 - _i2] - }; - } - - di = dist$1(p0, p1); - d0 = d; - d += di; - - if (d >= offset) { - break; - } - } - - var pD = offset - d0; - - var _t = pD / di; - - _t = bound(0, _t, 1); - p = lineAt(p0, p1, _t); - angle = lineAngle(p0, p1); - break; - } - } - - setRs('labelX', prefix, p.x); - setRs('labelY', prefix, p.y); - setRs('labelAutoAngle', prefix, angle); - }; - - calculateEndProjection('source'); - calculateEndProjection('target'); - this.applyLabelDimensions(edge); -}; - -BRp$6.applyLabelDimensions = function (ele) { - this.applyPrefixedLabelDimensions(ele); - - if (ele.isEdge()) { - this.applyPrefixedLabelDimensions(ele, 'source'); - this.applyPrefixedLabelDimensions(ele, 'target'); - } -}; - -BRp$6.applyPrefixedLabelDimensions = function (ele, prefix) { - var _p = ele._private; - var text = this.getLabelText(ele, prefix); - var labelDims = this.calculateLabelDimensions(ele, text); - var lineHeight = ele.pstyle('line-height').pfValue; - var textWrap = ele.pstyle('text-wrap').strValue; - var lines = getPrefixedProperty(_p.rscratch, 'labelWrapCachedLines', prefix) || []; - var numLines = textWrap !== 'wrap' ? 1 : Math.max(lines.length, 1); - var normPerLineHeight = labelDims.height / numLines; - var labelLineHeight = normPerLineHeight * lineHeight; - var width = labelDims.width; - var height = labelDims.height + (numLines - 1) * (lineHeight - 1) * normPerLineHeight; - setPrefixedProperty(_p.rstyle, 'labelWidth', prefix, width); - setPrefixedProperty(_p.rscratch, 'labelWidth', prefix, width); - setPrefixedProperty(_p.rstyle, 'labelHeight', prefix, height); - setPrefixedProperty(_p.rscratch, 'labelHeight', prefix, height); - setPrefixedProperty(_p.rscratch, 'labelLineHeight', prefix, labelLineHeight); -}; - -BRp$6.getLabelText = function (ele, prefix) { - var _p = ele._private; - var pfd = prefix ? prefix + '-' : ''; - var text = ele.pstyle(pfd + 'label').strValue; - var textTransform = ele.pstyle('text-transform').value; - - var rscratch = function rscratch(propName, value) { - if (value) { - setPrefixedProperty(_p.rscratch, propName, prefix, value); - return value; - } else { - return getPrefixedProperty(_p.rscratch, propName, prefix); - } - }; // for empty text, skip all processing - - - if (!text) { - return ''; - } - - if (textTransform == 'none') ; else if (textTransform == 'uppercase') { - text = text.toUpperCase(); - } else if (textTransform == 'lowercase') { - text = text.toLowerCase(); - } - - var wrapStyle = ele.pstyle('text-wrap').value; - - if (wrapStyle === 'wrap') { - var labelKey = rscratch('labelKey'); // save recalc if the label is the same as before - - if (labelKey != null && rscratch('labelWrapKey') === labelKey) { - return rscratch('labelWrapCachedText'); - } - - var zwsp = "\u200B"; - var lines = text.split('\n'); - var maxW = ele.pstyle('text-max-width').pfValue; - var overflow = ele.pstyle('text-overflow-wrap').value; - var overflowAny = overflow === 'anywhere'; - var wrappedLines = []; - var wordsRegex = /[\s\u200b]+/; - var wordSeparator = overflowAny ? '' : ' '; - - for (var l = 0; l < lines.length; l++) { - var line = lines[l]; - var lineDims = this.calculateLabelDimensions(ele, line); - var lineW = lineDims.width; - - if (overflowAny) { - var processedLine = line.split('').join(zwsp); - line = processedLine; - } - - if (lineW > maxW) { - // line is too long - var words = line.split(wordsRegex); - var subline = ''; - - for (var w = 0; w < words.length; w++) { - var word = words[w]; - var testLine = subline.length === 0 ? word : subline + wordSeparator + word; - var testDims = this.calculateLabelDimensions(ele, testLine); - var testW = testDims.width; - - if (testW <= maxW) { - // word fits on current line - subline += word + wordSeparator; - } else { - // word starts new line - if (subline) { - wrappedLines.push(subline); - } - - subline = word + wordSeparator; - } - } // if there's remaining text, put it in a wrapped line - - - if (!subline.match(/^[\s\u200b]+$/)) { - wrappedLines.push(subline); - } - } else { - // line is already short enough - wrappedLines.push(line); - } - } // for - - - rscratch('labelWrapCachedLines', wrappedLines); - text = rscratch('labelWrapCachedText', wrappedLines.join('\n')); - rscratch('labelWrapKey', labelKey); - } else if (wrapStyle === 'ellipsis') { - var _maxW = ele.pstyle('text-max-width').pfValue; - var ellipsized = ''; - var ellipsis = "\u2026"; - var incLastCh = false; - - if (this.calculateLabelDimensions(ele, text).width < _maxW) { - // the label already fits - return text; - } - - for (var i = 0; i < text.length; i++) { - var widthWithNextCh = this.calculateLabelDimensions(ele, ellipsized + text[i] + ellipsis).width; - - if (widthWithNextCh > _maxW) { - break; - } - - ellipsized += text[i]; - - if (i === text.length - 1) { - incLastCh = true; - } - } - - if (!incLastCh) { - ellipsized += ellipsis; - } - - return ellipsized; - } // if ellipsize - - - return text; -}; - -BRp$6.getLabelJustification = function (ele) { - var justification = ele.pstyle('text-justification').strValue; - var textHalign = ele.pstyle('text-halign').strValue; - - if (justification === 'auto') { - if (ele.isNode()) { - switch (textHalign) { - case 'left': - return 'right'; - - case 'right': - return 'left'; - - default: - return 'center'; - } - } else { - return 'center'; - } - } else { - return justification; - } -}; - -BRp$6.calculateLabelDimensions = function (ele, text) { - var r = this; - var cacheKey = hashString(text, ele._private.labelDimsKey); - var cache = r.labelDimCache || (r.labelDimCache = []); - var existingVal = cache[cacheKey]; - - if (existingVal != null) { - return existingVal; - } - - var padding = 0; // add padding around text dims, as the measurement isn't that accurate - - var fStyle = ele.pstyle('font-style').strValue; - var size = ele.pstyle('font-size').pfValue; - var family = ele.pstyle('font-family').strValue; - var weight = ele.pstyle('font-weight').strValue; - var canvas = this.labelCalcCanvas; - var c2d = this.labelCalcCanvasContext; - - if (!canvas) { - canvas = this.labelCalcCanvas = document.createElement('canvas'); - c2d = this.labelCalcCanvasContext = canvas.getContext('2d'); - var ds = canvas.style; - ds.position = 'absolute'; - ds.left = '-9999px'; - ds.top = '-9999px'; - ds.zIndex = '-1'; - ds.visibility = 'hidden'; - ds.pointerEvents = 'none'; - } - - c2d.font = "".concat(fStyle, " ").concat(weight, " ").concat(size, "px ").concat(family); - var width = 0; - var height = 0; - var lines = text.split('\n'); - - for (var i = 0; i < lines.length; i++) { - var line = lines[i]; - var metrics = c2d.measureText(line); - var w = Math.ceil(metrics.width); - var h = size; - width = Math.max(w, width); - height += h; - } - - width += padding; - height += padding; - return cache[cacheKey] = { - width: width, - height: height - }; -}; - -BRp$6.calculateLabelAngle = function (ele, prefix) { - var _p = ele._private; - var rs = _p.rscratch; - var isEdge = ele.isEdge(); - var prefixDash = prefix ? prefix + '-' : ''; - var rot = ele.pstyle(prefixDash + 'text-rotation'); - var rotStr = rot.strValue; - - if (rotStr === 'none') { - return 0; - } else if (isEdge && rotStr === 'autorotate') { - return rs.labelAutoAngle; - } else if (rotStr === 'autorotate') { - return 0; - } else { - return rot.pfValue; - } -}; - -BRp$6.calculateLabelAngles = function (ele) { - var r = this; - var isEdge = ele.isEdge(); - var _p = ele._private; - var rs = _p.rscratch; - rs.labelAngle = r.calculateLabelAngle(ele); - - if (isEdge) { - rs.sourceLabelAngle = r.calculateLabelAngle(ele, 'source'); - rs.targetLabelAngle = r.calculateLabelAngle(ele, 'target'); - } -}; - -var BRp$7 = {}; -var TOO_SMALL_CUT_RECT = 28; -var warnedCutRect = false; - -BRp$7.getNodeShape = function (node) { - var r = this; - var shape = node.pstyle('shape').value; - - if (shape === 'cutrectangle' && (node.width() < TOO_SMALL_CUT_RECT || node.height() < TOO_SMALL_CUT_RECT)) { - if (!warnedCutRect) { - warn('The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead'); - warnedCutRect = true; - } - - return 'rectangle'; - } - - if (node.isParent()) { - if (shape === 'rectangle' || shape === 'roundrectangle' || shape === 'round-rectangle' || shape === 'cutrectangle' || shape === 'cut-rectangle' || shape === 'barrel') { - return shape; - } else { - return 'rectangle'; - } - } - - if (shape === 'polygon') { - var points = node.pstyle('shape-polygon-points').value; - return r.nodeShapes.makePolygon(points).name; - } - - return shape; -}; - -var BRp$8 = {}; - -BRp$8.registerCalculationListeners = function () { - var cy = this.cy; - var elesToUpdate = cy.collection(); - var r = this; - - var enqueue = function enqueue(eles) { - var dirtyStyleCaches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - elesToUpdate.merge(eles); - - if (dirtyStyleCaches) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var _p = ele._private; - var rstyle = _p.rstyle; - rstyle.clean = false; - rstyle.cleanConnected = false; - } - } - }; - - r.binder(cy).on('bounds.* dirty.*', function onDirtyBounds(e) { - var ele = e.target; - enqueue(ele); - }).on('style.* background.*', function onDirtyStyle(e) { - var ele = e.target; - enqueue(ele, false); - }); - - var updateEleCalcs = function updateEleCalcs(willDraw) { - if (willDraw) { - var fns = r.onUpdateEleCalcsFns; // because we need to have up-to-date style (e.g. stylesheet mappers) - // before calculating rendered style (and pstyle might not be called yet) - - elesToUpdate.cleanStyle(); - - for (var i = 0; i < elesToUpdate.length; i++) { - var ele = elesToUpdate[i]; - var rstyle = ele._private.rstyle; - - if (ele.isNode() && !rstyle.cleanConnected) { - enqueue(ele.connectedEdges()); - rstyle.cleanConnected = true; - } - } - - if (fns) { - for (var _i = 0; _i < fns.length; _i++) { - var fn = fns[_i]; - fn(willDraw, elesToUpdate); - } - } - - r.recalculateRenderedStyle(elesToUpdate); - elesToUpdate = cy.collection(); - } - }; - - r.flushRenderedStyleQueue = function () { - updateEleCalcs(true); - }; - - r.beforeRender(updateEleCalcs, r.beforeRenderPriorities.eleCalcs); -}; - -BRp$8.onUpdateEleCalcs = function (fn) { - var fns = this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || []; - fns.push(fn); -}; - -BRp$8.recalculateRenderedStyle = function (eles, useCache) { - var isCleanConnected = function isCleanConnected(ele) { - return ele._private.rstyle.cleanConnected; - }; - - var edges = []; - var nodes = []; // the renderer can't be used for calcs when destroyed, e.g. ele.boundingBox() - - if (this.destroyed) { - return; - } // use cache by default for perf - - - if (useCache === undefined) { - useCache = true; - } - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var _p = ele._private; - var rstyle = _p.rstyle; // an edge may be implicitly dirty b/c of one of its connected nodes - // (and a request for recalc may come in between frames) - - if (ele.isEdge() && (!isCleanConnected(ele.source()) || !isCleanConnected(ele.target()))) { - rstyle.clean = false; - } // only update if dirty and in graph - - - if (useCache && rstyle.clean || ele.removed()) { - continue; - } // only update if not display: none - - - if (ele.pstyle('display').value === 'none') { - continue; - } - - if (_p.group === 'nodes') { - nodes.push(ele); - } else { - // edges - edges.push(ele); - } - - rstyle.clean = true; - } // update node data from projections - - - for (var _i2 = 0; _i2 < nodes.length; _i2++) { - var _ele = nodes[_i2]; - var _p2 = _ele._private; - var _rstyle = _p2.rstyle; - - var pos = _ele.position(); - - this.recalculateNodeLabelProjection(_ele); - _rstyle.nodeX = pos.x; - _rstyle.nodeY = pos.y; - _rstyle.nodeW = _ele.pstyle('width').pfValue; - _rstyle.nodeH = _ele.pstyle('height').pfValue; - } - - this.recalculateEdgeProjections(edges); // update edge data from projections - - for (var _i3 = 0; _i3 < edges.length; _i3++) { - var _ele2 = edges[_i3]; - var _p3 = _ele2._private; - var _rstyle2 = _p3.rstyle; - var rs = _p3.rscratch; // update rstyle positions - - _rstyle2.srcX = rs.arrowStartX; - _rstyle2.srcY = rs.arrowStartY; - _rstyle2.tgtX = rs.arrowEndX; - _rstyle2.tgtY = rs.arrowEndY; - _rstyle2.midX = rs.midX; - _rstyle2.midY = rs.midY; - _rstyle2.labelAngle = rs.labelAngle; - _rstyle2.sourceLabelAngle = rs.sourceLabelAngle; - _rstyle2.targetLabelAngle = rs.targetLabelAngle; - } -}; - -var BRp$9 = {}; - -BRp$9.updateCachedGrabbedEles = function () { - var eles = this.cachedZSortedEles; - - if (!eles) { - // just let this be recalculated on the next z sort tick - return; - } - - eles.drag = []; - eles.nondrag = []; - var grabTargets = []; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var rs = ele._private.rscratch; - - if (ele.grabbed() && !ele.isParent()) { - grabTargets.push(ele); - } else if (rs.inDragLayer) { - eles.drag.push(ele); - } else { - eles.nondrag.push(ele); - } - } // put the grab target nodes last so it's on top of its neighbourhood - - - for (var i = 0; i < grabTargets.length; i++) { - var ele = grabTargets[i]; - eles.drag.push(ele); - } -}; - -BRp$9.invalidateCachedZSortedEles = function () { - this.cachedZSortedEles = null; -}; - -BRp$9.getCachedZSortedEles = function (forceRecalc) { - if (forceRecalc || !this.cachedZSortedEles) { - var eles = this.cy.mutableElements().toArray(); - eles.sort(zIndexSort); - eles.interactive = eles.filter(function (ele) { - return ele.interactive(); - }); - this.cachedZSortedEles = eles; - this.updateCachedGrabbedEles(); - } else { - eles = this.cachedZSortedEles; - } - - return eles; -}; - -var BRp$a = {}; -[BRp$1, BRp$2, BRp$3, BRp$4, BRp$5, BRp$6, BRp$7, BRp$8, BRp$9].forEach(function (props) { - extend(BRp$a, props); -}); - -var BRp$b = {}; - -BRp$b.getCachedImage = function (url, crossOrigin, onLoad) { - var r = this; - var imageCache = r.imageCache = r.imageCache || {}; - var cache = imageCache[url]; - - if (cache) { - if (!cache.image.complete) { - cache.image.addEventListener('load', onLoad); - } - - return cache.image; - } else { - cache = imageCache[url] = imageCache[url] || {}; - var image = cache.image = new Image(); // eslint-disable-line no-undef - - image.addEventListener('load', onLoad); - image.addEventListener('error', function () { - image.error = true; - }); // #1582 safari doesn't load data uris with crossOrigin properly - // https://bugs.webkit.org/show_bug.cgi?id=123978 - - var dataUriPrefix = 'data:'; - var isDataUri = url.substring(0, dataUriPrefix.length).toLowerCase() === dataUriPrefix; - - if (!isDataUri) { - image.crossOrigin = crossOrigin; // prevent tainted canvas - } - - image.src = url; - return image; - } -}; - -var BRp$c = {}; -/* global document, window, ResizeObserver, MutationObserver */ - -BRp$c.registerBinding = function (target, event, handler, useCapture) { - // eslint-disable-line no-unused-vars - var args = Array.prototype.slice.apply(arguments, [1]); // copy - - var b = this.binder(target); - return b.on.apply(b, args); -}; - -BRp$c.binder = function (tgt) { - var r = this; - var tgtIsDom = tgt === window || tgt === document || tgt === document.body || domElement(tgt); - - if (r.supportsPassiveEvents == null) { - // from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection - var supportsPassive = false; - - try { - var opts = Object.defineProperty({}, 'passive', { - get: function get() { - supportsPassive = true; - return true; - } - }); - window.addEventListener('test', null, opts); - } catch (err) {// not supported - } - - r.supportsPassiveEvents = supportsPassive; - } - - var on = function on(event, handler, useCapture) { - var args = Array.prototype.slice.call(arguments); - - if (tgtIsDom && r.supportsPassiveEvents) { - // replace useCapture w/ opts obj - args[2] = { - capture: useCapture != null ? useCapture : false, - passive: false, - once: false - }; - } - - r.bindings.push({ - target: tgt, - args: args - }); - (tgt.addEventListener || tgt.on).apply(tgt, args); - return this; - }; - - return { - on: on, - addEventListener: on, - addListener: on, - bind: on - }; -}; - -BRp$c.nodeIsDraggable = function (node) { - return node && node.isNode() && !node.locked() && node.grabbable(); -}; - -BRp$c.nodeIsGrabbable = function (node) { - return this.nodeIsDraggable(node) && node.interactive(); -}; - -BRp$c.load = function () { - var r = this; - - var isSelected = function isSelected(ele) { - return ele.selected(); - }; - - var triggerEvents = function triggerEvents(target, names, e, position) { - if (target == null) { - target = r.cy; - } - - for (var i = 0; i < names.length; i++) { - var name = names[i]; - target.emit({ - originalEvent: e, - type: name, - position: position - }); - } - }; - - var isMultSelKeyDown = function isMultSelKeyDown(e) { - return e.shiftKey || e.metaKey || e.ctrlKey; // maybe e.altKey - }; - - var allowPanningPassthrough = function allowPanningPassthrough(down, downs) { - var allowPassthrough = true; - - if (r.cy.hasCompoundNodes() && down && down.pannable()) { - // a grabbable compound node below the ele => no passthrough panning - for (var i = 0; downs && i < downs.length; i++) { - var down = downs[i]; //if any parent node in event hierarchy isn't pannable, reject passthrough - - if (down.isNode() && down.isParent() && !down.pannable()) { - allowPassthrough = false; - break; - } - } - } else { - allowPassthrough = true; - } - - return allowPassthrough; - }; - - var setGrabbed = function setGrabbed(ele) { - ele[0]._private.grabbed = true; - }; - - var setFreed = function setFreed(ele) { - ele[0]._private.grabbed = false; - }; - - var setInDragLayer = function setInDragLayer(ele) { - ele[0]._private.rscratch.inDragLayer = true; - }; - - var setOutDragLayer = function setOutDragLayer(ele) { - ele[0]._private.rscratch.inDragLayer = false; - }; - - var setGrabTarget = function setGrabTarget(ele) { - ele[0]._private.rscratch.isGrabTarget = true; - }; - - var removeGrabTarget = function removeGrabTarget(ele) { - ele[0]._private.rscratch.isGrabTarget = false; - }; - - var addToDragList = function addToDragList(ele, opts) { - var list = opts.addToList; - var listHasEle = list.has(ele); - - if (!listHasEle) { - list.merge(ele); - setGrabbed(ele); - } - }; // helper function to determine which child nodes and inner edges - // of a compound node to be dragged as well as the grabbed and selected nodes - - - var addDescendantsToDrag = function addDescendantsToDrag(node, opts) { - if (!node.cy().hasCompoundNodes()) { - return; - } - - if (opts.inDragLayer == null && opts.addToList == null) { - return; - } // nothing to do - - - var innerNodes = node.descendants(); - - if (opts.inDragLayer) { - innerNodes.forEach(setInDragLayer); - innerNodes.connectedEdges().forEach(setInDragLayer); - } - - if (opts.addToList) { - opts.addToList.unmerge(innerNodes); - } - }; // adds the given nodes and its neighbourhood to the drag layer - - - var addNodesToDrag = function addNodesToDrag(nodes, opts) { - opts = opts || {}; - var hasCompoundNodes = nodes.cy().hasCompoundNodes(); - - if (opts.inDragLayer) { - nodes.forEach(setInDragLayer); - nodes.neighborhood().stdFilter(function (ele) { - return !hasCompoundNodes || ele.isEdge(); - }).forEach(setInDragLayer); - } - - if (opts.addToList) { - nodes.forEach(function (ele) { - addToDragList(ele, opts); - }); - } - - addDescendantsToDrag(nodes, opts); // always add to drag - // also add nodes and edges related to the topmost ancestor - - updateAncestorsInDragLayer(nodes, { - inDragLayer: opts.inDragLayer - }); - r.updateCachedGrabbedEles(); - }; - - var addNodeToDrag = addNodesToDrag; - - var freeDraggedElements = function freeDraggedElements(grabbedEles) { - if (!grabbedEles) { - return; - } // just go over all elements rather than doing a bunch of (possibly expensive) traversals - - - r.getCachedZSortedEles().forEach(function (ele) { - setFreed(ele); - setOutDragLayer(ele); - removeGrabTarget(ele); - }); - r.updateCachedGrabbedEles(); - }; // helper function to determine which ancestor nodes and edges should go - // to the drag layer (or should be removed from drag layer). - - - var updateAncestorsInDragLayer = function updateAncestorsInDragLayer(node, opts) { - if (opts.inDragLayer == null && opts.addToList == null) { - return; - } // nothing to do - - - if (!node.cy().hasCompoundNodes()) { - return; - } // find top-level parent - - - var parent = node.ancestors().orphans(); // no parent node: no nodes to add to the drag layer - - if (parent.same(node)) { - return; - } - - var nodes = parent.descendants().spawnSelf().merge(parent).unmerge(node).unmerge(node.descendants()); - var edges = nodes.connectedEdges(); - - if (opts.inDragLayer) { - edges.forEach(setInDragLayer); - nodes.forEach(setInDragLayer); - } - - if (opts.addToList) { - nodes.forEach(function (ele) { - addToDragList(ele, opts); - }); - } - }; - - var blurActiveDomElement = function blurActiveDomElement() { - if (document.activeElement != null && document.activeElement.blur != null) { - document.activeElement.blur(); - } - }; - - var haveMutationsApi = typeof MutationObserver !== 'undefined'; - var haveResizeObserverApi = typeof ResizeObserver !== 'undefined'; // watch for when the cy container is removed from the dom - - if (haveMutationsApi) { - r.removeObserver = new MutationObserver(function (mutns) { - // eslint-disable-line no-undef - for (var i = 0; i < mutns.length; i++) { - var mutn = mutns[i]; - var rNodes = mutn.removedNodes; - - if (rNodes) { - for (var j = 0; j < rNodes.length; j++) { - var rNode = rNodes[j]; - - if (rNode === r.container) { - r.destroy(); - break; - } - } - } - } - }); - - if (r.container.parentNode) { - r.removeObserver.observe(r.container.parentNode, { - childList: true - }); - } - } else { - r.registerBinding(r.container, 'DOMNodeRemoved', function (e) { - // eslint-disable-line no-unused-vars - r.destroy(); - }); - } - - var onResize = util$2(function () { - r.cy.resize(); - }, 100); - - if (haveMutationsApi) { - r.styleObserver = new MutationObserver(onResize); // eslint-disable-line no-undef - - r.styleObserver.observe(r.container, { - attributes: true - }); - } // auto resize - - - r.registerBinding(window, 'resize', onResize); // eslint-disable-line no-undef - - if (haveResizeObserverApi) { - r.resizeObserver = new ResizeObserver(onResize); // eslint-disable-line no-undef - - r.resizeObserver.observe(r.container); - } - - var forEachUp = function forEachUp(domEle, fn) { - while (domEle != null) { - fn(domEle); - domEle = domEle.parentNode; - } - }; - - var invalidateCoords = function invalidateCoords() { - r.invalidateContainerClientCoordsCache(); - }; - - forEachUp(r.container, function (domEle) { - r.registerBinding(domEle, 'transitionend', invalidateCoords); - r.registerBinding(domEle, 'animationend', invalidateCoords); - r.registerBinding(domEle, 'scroll', invalidateCoords); - }); // stop right click menu from appearing on cy - - r.registerBinding(r.container, 'contextmenu', function (e) { - e.preventDefault(); - }); - - var inBoxSelection = function inBoxSelection() { - return r.selection[4] !== 0; - }; - - var eventInContainer = function eventInContainer(e) { - // save cycles if mouse events aren't to be captured - var containerPageCoords = r.findContainerClientCoords(); - var x = containerPageCoords[0]; - var y = containerPageCoords[1]; - var width = containerPageCoords[2]; - var height = containerPageCoords[3]; - var positions = e.touches ? e.touches : [e]; - var atLeastOnePosInside = false; - - for (var i = 0; i < positions.length; i++) { - var p = positions[i]; - - if (x <= p.clientX && p.clientX <= x + width && y <= p.clientY && p.clientY <= y + height) { - atLeastOnePosInside = true; - break; - } - } - - if (!atLeastOnePosInside) { - return false; - } - - var container = r.container; - var target = e.target; - var tParent = target.parentNode; - var containerIsTarget = false; - - while (tParent) { - if (tParent === container) { - containerIsTarget = true; - break; - } - - tParent = tParent.parentNode; - } - - if (!containerIsTarget) { - return false; - } // if target is outisde cy container, then this event is not for us - - - return true; - }; // Primary key - - - r.registerBinding(r.container, 'mousedown', function mousedownHandler(e) { - if (!eventInContainer(e)) { - return; - } - - e.preventDefault(); - blurActiveDomElement(); - r.hoverData.capture = true; - r.hoverData.which = e.which; - var cy = r.cy; - var gpos = [e.clientX, e.clientY]; - var pos = r.projectIntoViewport(gpos[0], gpos[1]); - var select = r.selection; - var nears = r.findNearestElements(pos[0], pos[1], true, false); - var near = nears[0]; - var draggedElements = r.dragData.possibleDragElements; - r.hoverData.mdownPos = pos; - r.hoverData.mdownGPos = gpos; - - var checkForTaphold = function checkForTaphold() { - r.hoverData.tapholdCancelled = false; - clearTimeout(r.hoverData.tapholdTimeout); - r.hoverData.tapholdTimeout = setTimeout(function () { - if (r.hoverData.tapholdCancelled) { - return; - } else { - var ele = r.hoverData.down; - - if (ele) { - ele.emit({ - originalEvent: e, - type: 'taphold', - position: { - x: pos[0], - y: pos[1] - } - }); - } else { - cy.emit({ - originalEvent: e, - type: 'taphold', - position: { - x: pos[0], - y: pos[1] - } - }); - } - } - }, r.tapholdDuration); - }; // Right click button - - - if (e.which == 3) { - r.hoverData.cxtStarted = true; - var cxtEvt = { - originalEvent: e, - type: 'cxttapstart', - position: { - x: pos[0], - y: pos[1] - } - }; - - if (near) { - near.activate(); - near.emit(cxtEvt); - r.hoverData.down = near; - } else { - cy.emit(cxtEvt); - } - - r.hoverData.downTime = new Date().getTime(); - r.hoverData.cxtDragged = false; // Primary button - } else if (e.which == 1) { - if (near) { - near.activate(); - } // Element dragging - - - { - // If something is under the cursor and it is draggable, prepare to grab it - if (near != null) { - if (r.nodeIsGrabbable(near)) { - var makeEvent = function makeEvent(type) { - return { - originalEvent: e, - type: type, - position: { - x: pos[0], - y: pos[1] - } - }; - }; - - var triggerGrab = function triggerGrab(ele) { - ele.emit(makeEvent('grab')); - }; - - setGrabTarget(near); - - if (!near.selected()) { - draggedElements = r.dragData.possibleDragElements = cy.collection(); - addNodeToDrag(near, { - addToList: draggedElements - }); - near.emit(makeEvent('grabon')).emit(makeEvent('grab')); - } else { - draggedElements = r.dragData.possibleDragElements = cy.collection(); - var selectedNodes = cy.$(function (ele) { - return ele.isNode() && ele.selected() && r.nodeIsGrabbable(ele); - }); - addNodesToDrag(selectedNodes, { - addToList: draggedElements - }); - near.emit(makeEvent('grabon')); - selectedNodes.forEach(triggerGrab); - } - - r.redrawHint('eles', true); - r.redrawHint('drag', true); - } - } - - r.hoverData.down = near; - r.hoverData.downs = nears; - r.hoverData.downTime = new Date().getTime(); - } - triggerEvents(near, ['mousedown', 'tapstart', 'vmousedown'], e, { - x: pos[0], - y: pos[1] - }); - - if (near == null) { - select[4] = 1; - r.data.bgActivePosistion = { - x: pos[0], - y: pos[1] - }; - r.redrawHint('select', true); - r.redraw(); - } else if (near.pannable()) { - select[4] = 1; // for future pan - } - - checkForTaphold(); - } // Initialize selection box coordinates - - - select[0] = select[2] = pos[0]; - select[1] = select[3] = pos[1]; - }, false); - r.registerBinding(window, 'mousemove', function mousemoveHandler(e) { - // eslint-disable-line no-undef - var capture = r.hoverData.capture; - - if (!capture && !eventInContainer(e)) { - return; - } - - var preventDefault = false; - var cy = r.cy; - var zoom = cy.zoom(); - var gpos = [e.clientX, e.clientY]; - var pos = r.projectIntoViewport(gpos[0], gpos[1]); - var mdownPos = r.hoverData.mdownPos; - var mdownGPos = r.hoverData.mdownGPos; - var select = r.selection; - var near = null; - - if (!r.hoverData.draggingEles && !r.hoverData.dragging && !r.hoverData.selecting) { - near = r.findNearestElement(pos[0], pos[1], true, false); - } - - var last = r.hoverData.last; - var down = r.hoverData.down; - var disp = [pos[0] - select[2], pos[1] - select[3]]; - var draggedElements = r.dragData.possibleDragElements; - var isOverThresholdDrag; - - if (mdownGPos) { - var dx = gpos[0] - mdownGPos[0]; - var dx2 = dx * dx; - var dy = gpos[1] - mdownGPos[1]; - var dy2 = dy * dy; - var dist2 = dx2 + dy2; - r.hoverData.isOverThresholdDrag = isOverThresholdDrag = dist2 >= r.desktopTapThreshold2; - } - - var multSelKeyDown = isMultSelKeyDown(e); - - if (isOverThresholdDrag) { - r.hoverData.tapholdCancelled = true; - } - - var updateDragDelta = function updateDragDelta() { - var dragDelta = r.hoverData.dragDelta = r.hoverData.dragDelta || []; - - if (dragDelta.length === 0) { - dragDelta.push(disp[0]); - dragDelta.push(disp[1]); - } else { - dragDelta[0] += disp[0]; - dragDelta[1] += disp[1]; - } - }; - - preventDefault = true; - triggerEvents(near, ['mousemove', 'vmousemove', 'tapdrag'], e, { - x: pos[0], - y: pos[1] - }); - - var goIntoBoxMode = function goIntoBoxMode() { - r.data.bgActivePosistion = undefined; - - if (!r.hoverData.selecting) { - cy.emit({ - originalEvent: e, - type: 'boxstart', - position: { - x: pos[0], - y: pos[1] - } - }); - } - - select[4] = 1; - r.hoverData.selecting = true; - r.redrawHint('select', true); - r.redraw(); - }; // trigger context drag if rmouse down - - - if (r.hoverData.which === 3) { - // but only if over threshold - if (isOverThresholdDrag) { - var cxtEvt = { - originalEvent: e, - type: 'cxtdrag', - position: { - x: pos[0], - y: pos[1] - } - }; - - if (down) { - down.emit(cxtEvt); - } else { - cy.emit(cxtEvt); - } - - r.hoverData.cxtDragged = true; - - if (!r.hoverData.cxtOver || near !== r.hoverData.cxtOver) { - if (r.hoverData.cxtOver) { - r.hoverData.cxtOver.emit({ - originalEvent: e, - type: 'cxtdragout', - position: { - x: pos[0], - y: pos[1] - } - }); - } - - r.hoverData.cxtOver = near; - - if (near) { - near.emit({ - originalEvent: e, - type: 'cxtdragover', - position: { - x: pos[0], - y: pos[1] - } - }); - } - } - } // Check if we are drag panning the entire graph - - } else if (r.hoverData.dragging) { - preventDefault = true; - - if (cy.panningEnabled() && cy.userPanningEnabled()) { - var deltaP; - - if (r.hoverData.justStartedPan) { - var mdPos = r.hoverData.mdownPos; - deltaP = { - x: (pos[0] - mdPos[0]) * zoom, - y: (pos[1] - mdPos[1]) * zoom - }; - r.hoverData.justStartedPan = false; - } else { - deltaP = { - x: disp[0] * zoom, - y: disp[1] * zoom - }; - } - - cy.panBy(deltaP); - cy.emit('dragpan'); - r.hoverData.dragged = true; - } // Needs reproject due to pan changing viewport - - - pos = r.projectIntoViewport(e.clientX, e.clientY); // Checks primary button down & out of time & mouse not moved much - } else if (select[4] == 1 && (down == null || down.pannable())) { - if (isOverThresholdDrag) { - if (!r.hoverData.dragging && cy.boxSelectionEnabled() && (multSelKeyDown || !cy.panningEnabled() || !cy.userPanningEnabled())) { - goIntoBoxMode(); - } else if (!r.hoverData.selecting && cy.panningEnabled() && cy.userPanningEnabled()) { - var allowPassthrough = allowPanningPassthrough(down, r.hoverData.downs); - - if (allowPassthrough) { - r.hoverData.dragging = true; - r.hoverData.justStartedPan = true; - select[4] = 0; - r.data.bgActivePosistion = array2point(mdownPos); - r.redrawHint('select', true); - r.redraw(); - } - } - - if (down && down.pannable() && down.active()) { - down.unactivate(); - } - } - } else { - if (down && down.pannable() && down.active()) { - down.unactivate(); - } - - if ((!down || !down.grabbed()) && near != last) { - if (last) { - triggerEvents(last, ['mouseout', 'tapdragout'], e, { - x: pos[0], - y: pos[1] - }); - } - - if (near) { - triggerEvents(near, ['mouseover', 'tapdragover'], e, { - x: pos[0], - y: pos[1] - }); - } - - r.hoverData.last = near; - } - - if (down) { - if (isOverThresholdDrag) { - // then we can take action - if (cy.boxSelectionEnabled() && multSelKeyDown) { - // then selection overrides - if (down && down.grabbed()) { - freeDraggedElements(draggedElements); - down.emit('freeon'); - draggedElements.emit('free'); - - if (r.dragData.didDrag) { - down.emit('dragfreeon'); - draggedElements.emit('dragfree'); - } - } - - goIntoBoxMode(); - } else if (down && down.grabbed() && r.nodeIsDraggable(down)) { - // drag node - var justStartedDrag = !r.dragData.didDrag; - - if (justStartedDrag) { - r.redrawHint('eles', true); - } - - r.dragData.didDrag = true; // indicate that we actually did drag the node - - var toTrigger = cy.collection(); // now, add the elements to the drag layer if not done already - - if (!r.hoverData.draggingEles) { - addNodesToDrag(draggedElements, { - inDragLayer: true - }); - } - - var totalShift = { - x: 0, - y: 0 - }; - - if (number(disp[0]) && number(disp[1])) { - totalShift.x += disp[0]; - totalShift.y += disp[1]; - - if (justStartedDrag) { - var dragDelta = r.hoverData.dragDelta; - - if (dragDelta && number(dragDelta[0]) && number(dragDelta[1])) { - totalShift.x += dragDelta[0]; - totalShift.y += dragDelta[1]; - } - } - } - - for (var i = 0; i < draggedElements.length; i++) { - var dEle = draggedElements[i]; - - if (r.nodeIsDraggable(dEle) && dEle.grabbed()) { - toTrigger.push(dEle); - } - } - - r.hoverData.draggingEles = true; - toTrigger.silentShift(totalShift).emit('position drag'); - r.redrawHint('drag', true); - r.redraw(); - } - } else { - // otherwise save drag delta for when we actually start dragging so the relative grab pos is constant - updateDragDelta(); - } - } // prevent the dragging from triggering text selection on the page - - - preventDefault = true; - } - - select[2] = pos[0]; - select[3] = pos[1]; - - if (preventDefault) { - if (e.stopPropagation) e.stopPropagation(); - if (e.preventDefault) e.preventDefault(); - return false; - } - }, false); - var clickTimeout, didDoubleClick, prevClickTimeStamp; - r.registerBinding(window, 'mouseup', function mouseupHandler(e) { - // eslint-disable-line no-undef - var capture = r.hoverData.capture; - - if (!capture) { - return; - } - - r.hoverData.capture = false; - var cy = r.cy; - var pos = r.projectIntoViewport(e.clientX, e.clientY); - var select = r.selection; - var near = r.findNearestElement(pos[0], pos[1], true, false); - var draggedElements = r.dragData.possibleDragElements; - var down = r.hoverData.down; - var multSelKeyDown = isMultSelKeyDown(e); - - if (r.data.bgActivePosistion) { - r.redrawHint('select', true); - r.redraw(); - } - - r.hoverData.tapholdCancelled = true; - r.data.bgActivePosistion = undefined; // not active bg now - - if (down) { - down.unactivate(); - } - - if (r.hoverData.which === 3) { - var cxtEvt = { - originalEvent: e, - type: 'cxttapend', - position: { - x: pos[0], - y: pos[1] - } - }; - - if (down) { - down.emit(cxtEvt); - } else { - cy.emit(cxtEvt); - } - - if (!r.hoverData.cxtDragged) { - var cxtTap = { - originalEvent: e, - type: 'cxttap', - position: { - x: pos[0], - y: pos[1] - } - }; - - if (down) { - down.emit(cxtTap); - } else { - cy.emit(cxtTap); - } - } - - r.hoverData.cxtDragged = false; - r.hoverData.which = null; - } else if (r.hoverData.which === 1) { - triggerEvents(near, ['mouseup', 'tapend', 'vmouseup'], e, { - x: pos[0], - y: pos[1] - }); - - if (!r.dragData.didDrag && // didn't move a node around - !r.hoverData.dragged && // didn't pan - !r.hoverData.selecting && // not box selection - !r.hoverData.isOverThresholdDrag // didn't move too much - ) { - triggerEvents(down, ["click", "tap", "vclick"], e, { - x: pos[0], - y: pos[1] - }); - didDoubleClick = false; - - if (e.timeStamp - prevClickTimeStamp <= cy.multiClickDebounceTime()) { - clickTimeout && clearTimeout(clickTimeout); - didDoubleClick = true; - prevClickTimeStamp = null; - triggerEvents(down, ["dblclick", "dbltap", "vdblclick"], e, { - x: pos[0], - y: pos[1] - }); - } else { - clickTimeout = setTimeout(function () { - if (didDoubleClick) return; - triggerEvents(down, ["oneclick", "onetap", "voneclick"], e, { - x: pos[0], - y: pos[1] - }); - }, cy.multiClickDebounceTime()); - prevClickTimeStamp = e.timeStamp; - } - } // Deselect all elements if nothing is currently under the mouse cursor and we aren't dragging something - - - if (down == null && // not mousedown on node - !r.dragData.didDrag // didn't move the node around - && !r.hoverData.selecting // not box selection - && !r.hoverData.dragged // didn't pan - && !isMultSelKeyDown(e)) { - cy.$(isSelected).unselect(['tapunselect']); - - if (draggedElements.length > 0) { - r.redrawHint('eles', true); - } - - r.dragData.possibleDragElements = draggedElements = cy.collection(); - } // Single selection - - - if (near == down && !r.dragData.didDrag && !r.hoverData.selecting) { - if (near != null && near._private.selectable) { - if (r.hoverData.dragging) ; else if (cy.selectionType() === 'additive' || multSelKeyDown) { - if (near.selected()) { - near.unselect(['tapunselect']); - } else { - near.select(['tapselect']); - } - } else { - if (!multSelKeyDown) { - cy.$(isSelected).unmerge(near).unselect(['tapunselect']); - near.select(['tapselect']); - } - } - - r.redrawHint('eles', true); - } - } - - if (r.hoverData.selecting) { - var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3])); - r.redrawHint('select', true); - - if (box.length > 0) { - r.redrawHint('eles', true); - } - - cy.emit({ - type: 'boxend', - originalEvent: e, - position: { - x: pos[0], - y: pos[1] - } - }); - - var eleWouldBeSelected = function eleWouldBeSelected(ele) { - return ele.selectable() && !ele.selected(); - }; - - if (cy.selectionType() === 'additive') { - box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect'); - } else { - if (!multSelKeyDown) { - cy.$(isSelected).unmerge(box).unselect(); - } - - box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect'); - } // always need redraw in case eles unselectable - - - r.redraw(); - } // Cancel drag pan - - - if (r.hoverData.dragging) { - r.hoverData.dragging = false; - r.redrawHint('select', true); - r.redrawHint('eles', true); - r.redraw(); - } - - if (!select[4]) { - r.redrawHint('drag', true); - r.redrawHint('eles', true); - var downWasGrabbed = down && down.grabbed(); - freeDraggedElements(draggedElements); - - if (downWasGrabbed) { - down.emit('freeon'); - draggedElements.emit('free'); - - if (r.dragData.didDrag) { - down.emit('dragfreeon'); - draggedElements.emit('dragfree'); - } - } - } - } // else not right mouse - - - select[4] = 0; - r.hoverData.down = null; - r.hoverData.cxtStarted = false; - r.hoverData.draggingEles = false; - r.hoverData.selecting = false; - r.hoverData.isOverThresholdDrag = false; - r.dragData.didDrag = false; - r.hoverData.dragged = false; - r.hoverData.dragDelta = []; - r.hoverData.mdownPos = null; - r.hoverData.mdownGPos = null; - }, false); - - var wheelHandler = function wheelHandler(e) { - if (r.scrollingPage) { - return; - } // while scrolling, ignore wheel-to-zoom - - - var cy = r.cy; - var zoom = cy.zoom(); - var pan = cy.pan(); - var pos = r.projectIntoViewport(e.clientX, e.clientY); - var rpos = [pos[0] * zoom + pan.x, pos[1] * zoom + pan.y]; - - if (r.hoverData.draggingEles || r.hoverData.dragging || r.hoverData.cxtStarted || inBoxSelection()) { - // if pan dragging or cxt dragging, wheel movements make no zoom - e.preventDefault(); - return; - } - - if (cy.panningEnabled() && cy.userPanningEnabled() && cy.zoomingEnabled() && cy.userZoomingEnabled()) { - e.preventDefault(); - r.data.wheelZooming = true; - clearTimeout(r.data.wheelTimeout); - r.data.wheelTimeout = setTimeout(function () { - r.data.wheelZooming = false; - r.redrawHint('eles', true); - r.redraw(); - }, 150); - var diff; - - if (e.deltaY != null) { - diff = e.deltaY / -250; - } else if (e.wheelDeltaY != null) { - diff = e.wheelDeltaY / 1000; - } else { - diff = e.wheelDelta / 1000; - } - - diff = diff * r.wheelSensitivity; - var needsWheelFix = e.deltaMode === 1; - - if (needsWheelFix) { - // fixes slow wheel events on ff/linux and ff/windows - diff *= 33; - } - - var newZoom = cy.zoom() * Math.pow(10, diff); - - if (e.type === 'gesturechange') { - newZoom = r.gestureStartZoom * e.scale; - } - - cy.zoom({ - level: newZoom, - renderedPosition: { - x: rpos[0], - y: rpos[1] - } - }); - cy.emit(e.type === 'gesturechange' ? 'pinchzoom' : 'scrollzoom'); - } - }; // Functions to help with whether mouse wheel should trigger zooming - // -- - - - r.registerBinding(r.container, 'wheel', wheelHandler, true); // disable nonstandard wheel events - // r.registerBinding(r.container, 'mousewheel', wheelHandler, true); - // r.registerBinding(r.container, 'DOMMouseScroll', wheelHandler, true); - // r.registerBinding(r.container, 'MozMousePixelScroll', wheelHandler, true); // older firefox - - r.registerBinding(window, 'scroll', function scrollHandler(e) { - // eslint-disable-line no-unused-vars - r.scrollingPage = true; - clearTimeout(r.scrollingPageTimeout); - r.scrollingPageTimeout = setTimeout(function () { - r.scrollingPage = false; - }, 250); - }, true); // desktop safari pinch to zoom start - - r.registerBinding(r.container, 'gesturestart', function gestureStartHandler(e) { - r.gestureStartZoom = r.cy.zoom(); - - if (!r.hasTouchStarted) { - // don't affect touch devices like iphone - e.preventDefault(); - } - }, true); - r.registerBinding(r.container, 'gesturechange', function (e) { - if (!r.hasTouchStarted) { - // don't affect touch devices like iphone - wheelHandler(e); - } - }, true); // Functions to help with handling mouseout/mouseover on the Cytoscape container - // Handle mouseout on Cytoscape container - - r.registerBinding(r.container, 'mouseout', function mouseOutHandler(e) { - var pos = r.projectIntoViewport(e.clientX, e.clientY); - r.cy.emit({ - originalEvent: e, - type: 'mouseout', - position: { - x: pos[0], - y: pos[1] - } - }); - }, false); - r.registerBinding(r.container, 'mouseover', function mouseOverHandler(e) { - var pos = r.projectIntoViewport(e.clientX, e.clientY); - r.cy.emit({ - originalEvent: e, - type: 'mouseover', - position: { - x: pos[0], - y: pos[1] - } - }); - }, false); - var f1x1, f1y1, f2x1, f2y1; // starting points for pinch-to-zoom - - var distance1, distance1Sq; // initial distance between finger 1 and finger 2 for pinch-to-zoom - - var center1, modelCenter1; // center point on start pinch to zoom - - var offsetLeft, offsetTop; - var containerWidth, containerHeight; - var twoFingersStartInside; - - var distance = function distance(x1, y1, x2, y2) { - return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); - }; - - var distanceSq = function distanceSq(x1, y1, x2, y2) { - return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1); - }; - - var touchstartHandler; - r.registerBinding(r.container, 'touchstart', touchstartHandler = function touchstartHandler(e) { - r.hasTouchStarted = true; - - if (!eventInContainer(e)) { - return; - } - - blurActiveDomElement(); - r.touchData.capture = true; - r.data.bgActivePosistion = undefined; - var cy = r.cy; - var now = r.touchData.now; - var earlier = r.touchData.earlier; - - if (e.touches[0]) { - var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); - now[0] = pos[0]; - now[1] = pos[1]; - } - - if (e.touches[1]) { - var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); - now[2] = pos[0]; - now[3] = pos[1]; - } - - if (e.touches[2]) { - var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); - now[4] = pos[0]; - now[5] = pos[1]; - } // record starting points for pinch-to-zoom - - - if (e.touches[1]) { - r.touchData.singleTouchMoved = true; - freeDraggedElements(r.dragData.touchDragEles); - var offsets = r.findContainerClientCoords(); - offsetLeft = offsets[0]; - offsetTop = offsets[1]; - containerWidth = offsets[2]; - containerHeight = offsets[3]; - f1x1 = e.touches[0].clientX - offsetLeft; - f1y1 = e.touches[0].clientY - offsetTop; - f2x1 = e.touches[1].clientX - offsetLeft; - f2y1 = e.touches[1].clientY - offsetTop; - twoFingersStartInside = 0 <= f1x1 && f1x1 <= containerWidth && 0 <= f2x1 && f2x1 <= containerWidth && 0 <= f1y1 && f1y1 <= containerHeight && 0 <= f2y1 && f2y1 <= containerHeight; - var pan = cy.pan(); - var zoom = cy.zoom(); - distance1 = distance(f1x1, f1y1, f2x1, f2y1); - distance1Sq = distanceSq(f1x1, f1y1, f2x1, f2y1); - center1 = [(f1x1 + f2x1) / 2, (f1y1 + f2y1) / 2]; - modelCenter1 = [(center1[0] - pan.x) / zoom, (center1[1] - pan.y) / zoom]; // consider context tap - - var cxtDistThreshold = 200; - var cxtDistThresholdSq = cxtDistThreshold * cxtDistThreshold; - - if (distance1Sq < cxtDistThresholdSq && !e.touches[2]) { - var near1 = r.findNearestElement(now[0], now[1], true, true); - var near2 = r.findNearestElement(now[2], now[3], true, true); - - if (near1 && near1.isNode()) { - near1.activate().emit({ - originalEvent: e, - type: 'cxttapstart', - position: { - x: now[0], - y: now[1] - } - }); - r.touchData.start = near1; - } else if (near2 && near2.isNode()) { - near2.activate().emit({ - originalEvent: e, - type: 'cxttapstart', - position: { - x: now[0], - y: now[1] - } - }); - r.touchData.start = near2; - } else { - cy.emit({ - originalEvent: e, - type: 'cxttapstart', - position: { - x: now[0], - y: now[1] - } - }); - } - - if (r.touchData.start) { - r.touchData.start._private.grabbed = false; - } - - r.touchData.cxt = true; - r.touchData.cxtDragged = false; - r.data.bgActivePosistion = undefined; - r.redraw(); - return; - } - } - - if (e.touches[2]) { - // ignore - // safari on ios pans the page otherwise (normally you should be able to preventdefault on touchmove...) - if (cy.boxSelectionEnabled()) { - e.preventDefault(); - } - } else if (e.touches[1]) ; else if (e.touches[0]) { - var nears = r.findNearestElements(now[0], now[1], true, true); - var near = nears[0]; - - if (near != null) { - near.activate(); - r.touchData.start = near; - r.touchData.starts = nears; - - if (r.nodeIsGrabbable(near)) { - var draggedEles = r.dragData.touchDragEles = cy.collection(); - var selectedNodes = null; - r.redrawHint('eles', true); - r.redrawHint('drag', true); - - if (near.selected()) { - // reset drag elements, since near will be added again - selectedNodes = cy.$(function (ele) { - return ele.selected() && r.nodeIsGrabbable(ele); - }); - addNodesToDrag(selectedNodes, { - addToList: draggedEles - }); - } else { - addNodeToDrag(near, { - addToList: draggedEles - }); - } - - setGrabTarget(near); - - var makeEvent = function makeEvent(type) { - return { - originalEvent: e, - type: type, - position: { - x: now[0], - y: now[1] - } - }; - }; - - near.emit(makeEvent('grabon')); - - if (selectedNodes) { - selectedNodes.forEach(function (n) { - n.emit(makeEvent('grab')); - }); - } else { - near.emit(makeEvent('grab')); - } - } - } - - triggerEvents(near, ['touchstart', 'tapstart', 'vmousedown'], e, { - x: now[0], - y: now[1] - }); - - if (near == null) { - r.data.bgActivePosistion = { - x: pos[0], - y: pos[1] - }; - r.redrawHint('select', true); - r.redraw(); - } // Tap, taphold - // ----- - - - r.touchData.singleTouchMoved = false; - r.touchData.singleTouchStartTime = +new Date(); - clearTimeout(r.touchData.tapholdTimeout); - r.touchData.tapholdTimeout = setTimeout(function () { - if (r.touchData.singleTouchMoved === false && !r.pinching // if pinching, then taphold unselect shouldn't take effect - && !r.touchData.selecting // box selection shouldn't allow taphold through - ) { - triggerEvents(r.touchData.start, ['taphold'], e, { - x: now[0], - y: now[1] - }); - } - }, r.tapholdDuration); - } - - if (e.touches.length >= 1) { - var sPos = r.touchData.startPosition = []; - - for (var i = 0; i < now.length; i++) { - sPos[i] = earlier[i] = now[i]; - } - - var touch0 = e.touches[0]; - r.touchData.startGPosition = [touch0.clientX, touch0.clientY]; - } - }, false); - var touchmoveHandler; - r.registerBinding(window, 'touchmove', touchmoveHandler = function touchmoveHandler(e) { - // eslint-disable-line no-undef - var capture = r.touchData.capture; - - if (!capture && !eventInContainer(e)) { - return; - } - - var select = r.selection; - var cy = r.cy; - var now = r.touchData.now; - var earlier = r.touchData.earlier; - var zoom = cy.zoom(); - - if (e.touches[0]) { - var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); - now[0] = pos[0]; - now[1] = pos[1]; - } - - if (e.touches[1]) { - var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); - now[2] = pos[0]; - now[3] = pos[1]; - } - - if (e.touches[2]) { - var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); - now[4] = pos[0]; - now[5] = pos[1]; - } - - var startGPos = r.touchData.startGPosition; - var isOverThresholdDrag; - - if (capture && e.touches[0] && startGPos) { - var disp = []; - - for (var j = 0; j < now.length; j++) { - disp[j] = now[j] - earlier[j]; - } - - var dx = e.touches[0].clientX - startGPos[0]; - var dx2 = dx * dx; - var dy = e.touches[0].clientY - startGPos[1]; - var dy2 = dy * dy; - var dist2 = dx2 + dy2; - isOverThresholdDrag = dist2 >= r.touchTapThreshold2; - } // context swipe cancelling - - - if (capture && r.touchData.cxt) { - e.preventDefault(); - var f1x2 = e.touches[0].clientX - offsetLeft, - f1y2 = e.touches[0].clientY - offsetTop; - var f2x2 = e.touches[1].clientX - offsetLeft, - f2y2 = e.touches[1].clientY - offsetTop; // var distance2 = distance( f1x2, f1y2, f2x2, f2y2 ); - - var distance2Sq = distanceSq(f1x2, f1y2, f2x2, f2y2); - var factorSq = distance2Sq / distance1Sq; - var distThreshold = 150; - var distThresholdSq = distThreshold * distThreshold; - var factorThreshold = 1.5; - var factorThresholdSq = factorThreshold * factorThreshold; // cancel ctx gestures if the distance b/t the fingers increases - - if (factorSq >= factorThresholdSq || distance2Sq >= distThresholdSq) { - r.touchData.cxt = false; - r.data.bgActivePosistion = undefined; - r.redrawHint('select', true); - var cxtEvt = { - originalEvent: e, - type: 'cxttapend', - position: { - x: now[0], - y: now[1] - } - }; - - if (r.touchData.start) { - r.touchData.start.unactivate().emit(cxtEvt); - r.touchData.start = null; - } else { - cy.emit(cxtEvt); - } - } - } // context swipe - - - if (capture && r.touchData.cxt) { - var cxtEvt = { - originalEvent: e, - type: 'cxtdrag', - position: { - x: now[0], - y: now[1] - } - }; - r.data.bgActivePosistion = undefined; - r.redrawHint('select', true); - - if (r.touchData.start) { - r.touchData.start.emit(cxtEvt); - } else { - cy.emit(cxtEvt); - } - - if (r.touchData.start) { - r.touchData.start._private.grabbed = false; - } - - r.touchData.cxtDragged = true; - var near = r.findNearestElement(now[0], now[1], true, true); - - if (!r.touchData.cxtOver || near !== r.touchData.cxtOver) { - if (r.touchData.cxtOver) { - r.touchData.cxtOver.emit({ - originalEvent: e, - type: 'cxtdragout', - position: { - x: now[0], - y: now[1] - } - }); - } - - r.touchData.cxtOver = near; - - if (near) { - near.emit({ - originalEvent: e, - type: 'cxtdragover', - position: { - x: now[0], - y: now[1] - } - }); - } - } // box selection - - } else if (capture && e.touches[2] && cy.boxSelectionEnabled()) { - e.preventDefault(); - r.data.bgActivePosistion = undefined; - this.lastThreeTouch = +new Date(); - - if (!r.touchData.selecting) { - cy.emit({ - originalEvent: e, - type: 'boxstart', - position: { - x: now[0], - y: now[1] - } - }); - } - - r.touchData.selecting = true; - r.touchData.didSelect = true; - select[4] = 1; - - if (!select || select.length === 0 || select[0] === undefined) { - select[0] = (now[0] + now[2] + now[4]) / 3; - select[1] = (now[1] + now[3] + now[5]) / 3; - select[2] = (now[0] + now[2] + now[4]) / 3 + 1; - select[3] = (now[1] + now[3] + now[5]) / 3 + 1; - } else { - select[2] = (now[0] + now[2] + now[4]) / 3; - select[3] = (now[1] + now[3] + now[5]) / 3; - } - - r.redrawHint('select', true); - r.redraw(); // pinch to zoom - } else if (capture && e.touches[1] && !r.touchData.didSelect // don't allow box selection to degrade to pinch-to-zoom - && cy.zoomingEnabled() && cy.panningEnabled() && cy.userZoomingEnabled() && cy.userPanningEnabled()) { - // two fingers => pinch to zoom - e.preventDefault(); - r.data.bgActivePosistion = undefined; - r.redrawHint('select', true); - var draggedEles = r.dragData.touchDragEles; - - if (draggedEles) { - r.redrawHint('drag', true); - - for (var i = 0; i < draggedEles.length; i++) { - var de_p = draggedEles[i]._private; - de_p.grabbed = false; - de_p.rscratch.inDragLayer = false; - } - } - - var _start = r.touchData.start; // (x2, y2) for fingers 1 and 2 - - var f1x2 = e.touches[0].clientX - offsetLeft, - f1y2 = e.touches[0].clientY - offsetTop; - var f2x2 = e.touches[1].clientX - offsetLeft, - f2y2 = e.touches[1].clientY - offsetTop; - var distance2 = distance(f1x2, f1y2, f2x2, f2y2); // var distance2Sq = distanceSq( f1x2, f1y2, f2x2, f2y2 ); - // var factor = Math.sqrt( distance2Sq ) / Math.sqrt( distance1Sq ); - - var factor = distance2 / distance1; - - if (twoFingersStartInside) { - // delta finger1 - var df1x = f1x2 - f1x1; - var df1y = f1y2 - f1y1; // delta finger 2 - - var df2x = f2x2 - f2x1; - var df2y = f2y2 - f2y1; // translation is the normalised vector of the two fingers movement - // i.e. so pinching cancels out and moving together pans - - var tx = (df1x + df2x) / 2; - var ty = (df1y + df2y) / 2; // now calculate the zoom - - var zoom1 = cy.zoom(); - var zoom2 = zoom1 * factor; - var pan1 = cy.pan(); // the model center point converted to the current rendered pos - - var ctrx = modelCenter1[0] * zoom1 + pan1.x; - var ctry = modelCenter1[1] * zoom1 + pan1.y; - var pan2 = { - x: -zoom2 / zoom1 * (ctrx - pan1.x - tx) + ctrx, - y: -zoom2 / zoom1 * (ctry - pan1.y - ty) + ctry - }; // remove dragged eles - - if (_start && _start.active()) { - var draggedEles = r.dragData.touchDragEles; - freeDraggedElements(draggedEles); - r.redrawHint('drag', true); - r.redrawHint('eles', true); - - _start.unactivate().emit('freeon'); - - draggedEles.emit('free'); - - if (r.dragData.didDrag) { - _start.emit('dragfreeon'); - - draggedEles.emit('dragfree'); - } - } - - cy.viewport({ - zoom: zoom2, - pan: pan2, - cancelOnFailedZoom: true - }); - cy.emit('pinchzoom'); - distance1 = distance2; - f1x1 = f1x2; - f1y1 = f1y2; - f2x1 = f2x2; - f2y1 = f2y2; - r.pinching = true; - } // Re-project - - - if (e.touches[0]) { - var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); - now[0] = pos[0]; - now[1] = pos[1]; - } - - if (e.touches[1]) { - var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); - now[2] = pos[0]; - now[3] = pos[1]; - } - - if (e.touches[2]) { - var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); - now[4] = pos[0]; - now[5] = pos[1]; - } - } else if (e.touches[0] && !r.touchData.didSelect // don't allow box selection to degrade to single finger events like panning - ) { - var start = r.touchData.start; - var last = r.touchData.last; - var near; - - if (!r.hoverData.draggingEles && !r.swipePanning) { - near = r.findNearestElement(now[0], now[1], true, true); - } - - if (capture && start != null) { - e.preventDefault(); - } // dragging nodes - - - if (capture && start != null && r.nodeIsDraggable(start)) { - if (isOverThresholdDrag) { - // then dragging can happen - var draggedEles = r.dragData.touchDragEles; - var justStartedDrag = !r.dragData.didDrag; - - if (justStartedDrag) { - addNodesToDrag(draggedEles, { - inDragLayer: true - }); - } - - r.dragData.didDrag = true; - var totalShift = { - x: 0, - y: 0 - }; - - if (number(disp[0]) && number(disp[1])) { - totalShift.x += disp[0]; - totalShift.y += disp[1]; - - if (justStartedDrag) { - r.redrawHint('eles', true); - var dragDelta = r.touchData.dragDelta; - - if (dragDelta && number(dragDelta[0]) && number(dragDelta[1])) { - totalShift.x += dragDelta[0]; - totalShift.y += dragDelta[1]; - } - } - } - - r.hoverData.draggingEles = true; - draggedEles.silentShift(totalShift).emit('position drag'); - r.redrawHint('drag', true); - - if (r.touchData.startPosition[0] == earlier[0] && r.touchData.startPosition[1] == earlier[1]) { - r.redrawHint('eles', true); - } - - r.redraw(); - } else { - // otherise keep track of drag delta for later - var dragDelta = r.touchData.dragDelta = r.touchData.dragDelta || []; - - if (dragDelta.length === 0) { - dragDelta.push(disp[0]); - dragDelta.push(disp[1]); - } else { - dragDelta[0] += disp[0]; - dragDelta[1] += disp[1]; - } - } - } // touchmove - - - { - triggerEvents(start || near, ['touchmove', 'tapdrag', 'vmousemove'], e, { - x: now[0], - y: now[1] - }); - - if ((!start || !start.grabbed()) && near != last) { - if (last) { - last.emit({ - originalEvent: e, - type: 'tapdragout', - position: { - x: now[0], - y: now[1] - } - }); - } - - if (near) { - near.emit({ - originalEvent: e, - type: 'tapdragover', - position: { - x: now[0], - y: now[1] - } - }); - } - } - - r.touchData.last = near; - } // check to cancel taphold - - if (capture) { - for (var i = 0; i < now.length; i++) { - if (now[i] && r.touchData.startPosition[i] && isOverThresholdDrag) { - r.touchData.singleTouchMoved = true; - } - } - } // panning - - - if (capture && (start == null || start.pannable()) && cy.panningEnabled() && cy.userPanningEnabled()) { - var allowPassthrough = allowPanningPassthrough(start, r.touchData.starts); - - if (allowPassthrough) { - e.preventDefault(); - - if (!r.data.bgActivePosistion) { - r.data.bgActivePosistion = array2point(r.touchData.startPosition); - } - - if (r.swipePanning) { - cy.panBy({ - x: disp[0] * zoom, - y: disp[1] * zoom - }); - cy.emit('dragpan'); - } else if (isOverThresholdDrag) { - r.swipePanning = true; - cy.panBy({ - x: dx * zoom, - y: dy * zoom - }); - cy.emit('dragpan'); - - if (start) { - start.unactivate(); - r.redrawHint('select', true); - r.touchData.start = null; - } - } - } // Re-project - - - var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); - now[0] = pos[0]; - now[1] = pos[1]; - } - } - - for (var j = 0; j < now.length; j++) { - earlier[j] = now[j]; - } // the active bg indicator should be removed when making a swipe that is neither for dragging nodes or panning - - - if (capture && e.touches.length > 0 && !r.hoverData.draggingEles && !r.swipePanning && r.data.bgActivePosistion != null) { - r.data.bgActivePosistion = undefined; - r.redrawHint('select', true); - r.redraw(); - } - }, false); - var touchcancelHandler; - r.registerBinding(window, 'touchcancel', touchcancelHandler = function touchcancelHandler(e) { - // eslint-disable-line no-unused-vars - var start = r.touchData.start; - r.touchData.capture = false; - - if (start) { - start.unactivate(); - } - }); - var touchendHandler, didDoubleTouch, touchTimeout, prevTouchTimeStamp; - r.registerBinding(window, 'touchend', touchendHandler = function touchendHandler(e) { - // eslint-disable-line no-unused-vars - var start = r.touchData.start; - var capture = r.touchData.capture; - - if (capture) { - if (e.touches.length === 0) { - r.touchData.capture = false; - } - - e.preventDefault(); - } else { - return; - } - - var select = r.selection; - r.swipePanning = false; - r.hoverData.draggingEles = false; - var cy = r.cy; - var zoom = cy.zoom(); - var now = r.touchData.now; - var earlier = r.touchData.earlier; - - if (e.touches[0]) { - var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); - now[0] = pos[0]; - now[1] = pos[1]; - } - - if (e.touches[1]) { - var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); - now[2] = pos[0]; - now[3] = pos[1]; - } - - if (e.touches[2]) { - var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); - now[4] = pos[0]; - now[5] = pos[1]; - } - - if (start) { - start.unactivate(); - } - - var ctxTapend; - - if (r.touchData.cxt) { - ctxTapend = { - originalEvent: e, - type: 'cxttapend', - position: { - x: now[0], - y: now[1] - } - }; - - if (start) { - start.emit(ctxTapend); - } else { - cy.emit(ctxTapend); - } - - if (!r.touchData.cxtDragged) { - var ctxTap = { - originalEvent: e, - type: 'cxttap', - position: { - x: now[0], - y: now[1] - } - }; - - if (start) { - start.emit(ctxTap); - } else { - cy.emit(ctxTap); - } - } - - if (r.touchData.start) { - r.touchData.start._private.grabbed = false; - } - - r.touchData.cxt = false; - r.touchData.start = null; - r.redraw(); - return; - } // no more box selection if we don't have three fingers - - - if (!e.touches[2] && cy.boxSelectionEnabled() && r.touchData.selecting) { - r.touchData.selecting = false; - var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3])); - select[0] = undefined; - select[1] = undefined; - select[2] = undefined; - select[3] = undefined; - select[4] = 0; - r.redrawHint('select', true); - cy.emit({ - type: 'boxend', - originalEvent: e, - position: { - x: now[0], - y: now[1] - } - }); - - var eleWouldBeSelected = function eleWouldBeSelected(ele) { - return ele.selectable() && !ele.selected(); - }; - - box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect'); - - if (box.nonempty()) { - r.redrawHint('eles', true); - } - - r.redraw(); - } - - if (start != null) { - start.unactivate(); - } - - if (e.touches[2]) { - r.data.bgActivePosistion = undefined; - r.redrawHint('select', true); - } else if (e.touches[1]) ; else if (e.touches[0]) ; else if (!e.touches[0]) { - r.data.bgActivePosistion = undefined; - r.redrawHint('select', true); - var draggedEles = r.dragData.touchDragEles; - - if (start != null) { - var startWasGrabbed = start._private.grabbed; - freeDraggedElements(draggedEles); - r.redrawHint('drag', true); - r.redrawHint('eles', true); - - if (startWasGrabbed) { - start.emit('freeon'); - draggedEles.emit('free'); - - if (r.dragData.didDrag) { - start.emit('dragfreeon'); - draggedEles.emit('dragfree'); - } - } - - triggerEvents(start, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, { - x: now[0], - y: now[1] - }); - start.unactivate(); - r.touchData.start = null; - } else { - var near = r.findNearestElement(now[0], now[1], true, true); - triggerEvents(near, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, { - x: now[0], - y: now[1] - }); - } - - var dx = r.touchData.startPosition[0] - now[0]; - var dx2 = dx * dx; - var dy = r.touchData.startPosition[1] - now[1]; - var dy2 = dy * dy; - var dist2 = dx2 + dy2; - var rdist2 = dist2 * zoom * zoom; // Tap event, roughly same as mouse click event for touch - - if (!r.touchData.singleTouchMoved) { - if (!start) { - cy.$(':selected').unselect(['tapunselect']); - } - - triggerEvents(start, ['tap', 'vclick'], e, { - x: now[0], - y: now[1] - }); - didDoubleTouch = false; - - if (e.timeStamp - prevTouchTimeStamp <= cy.multiClickDebounceTime()) { - touchTimeout && clearTimeout(touchTimeout); - didDoubleTouch = true; - prevTouchTimeStamp = null; - triggerEvents(start, ['dbltap', 'vdblclick'], e, { - x: now[0], - y: now[1] - }); - } else { - touchTimeout = setTimeout(function () { - if (didDoubleTouch) return; - triggerEvents(start, ['onetap', 'voneclick'], e, { - x: now[0], - y: now[1] - }); - }, cy.multiClickDebounceTime()); - prevTouchTimeStamp = e.timeStamp; - } - } // Prepare to select the currently touched node, only if it hasn't been dragged past a certain distance - - - if (start != null && !r.dragData.didDrag // didn't drag nodes around - && start._private.selectable && rdist2 < r.touchTapThreshold2 && !r.pinching // pinch to zoom should not affect selection - ) { - if (cy.selectionType() === 'single') { - cy.$(isSelected).unmerge(start).unselect(['tapunselect']); - start.select(['tapselect']); - } else { - if (start.selected()) { - start.unselect(['tapunselect']); - } else { - start.select(['tapselect']); - } - } - - r.redrawHint('eles', true); - } - - r.touchData.singleTouchMoved = true; - } - - for (var j = 0; j < now.length; j++) { - earlier[j] = now[j]; - } - - r.dragData.didDrag = false; // reset for next touchstart - - if (e.touches.length === 0) { - r.touchData.dragDelta = []; - r.touchData.startPosition = null; - r.touchData.startGPosition = null; - r.touchData.didSelect = false; - } - - if (e.touches.length < 2) { - if (e.touches.length === 1) { - // the old start global pos'n may not be the same finger that remains - r.touchData.startGPosition = [e.touches[0].clientX, e.touches[0].clientY]; - } - - r.pinching = false; - r.redrawHint('eles', true); - r.redraw(); - } //r.redraw(); - - }, false); // fallback compatibility layer for ms pointer events - - if (typeof TouchEvent === 'undefined') { - var pointers = []; - - var makeTouch = function makeTouch(e) { - return { - clientX: e.clientX, - clientY: e.clientY, - force: 1, - identifier: e.pointerId, - pageX: e.pageX, - pageY: e.pageY, - radiusX: e.width / 2, - radiusY: e.height / 2, - screenX: e.screenX, - screenY: e.screenY, - target: e.target - }; - }; - - var makePointer = function makePointer(e) { - return { - event: e, - touch: makeTouch(e) - }; - }; - - var addPointer = function addPointer(e) { - pointers.push(makePointer(e)); - }; - - var removePointer = function removePointer(e) { - for (var i = 0; i < pointers.length; i++) { - var p = pointers[i]; - - if (p.event.pointerId === e.pointerId) { - pointers.splice(i, 1); - return; - } - } - }; - - var updatePointer = function updatePointer(e) { - var p = pointers.filter(function (p) { - return p.event.pointerId === e.pointerId; - })[0]; - p.event = e; - p.touch = makeTouch(e); - }; - - var addTouchesToEvent = function addTouchesToEvent(e) { - e.touches = pointers.map(function (p) { - return p.touch; - }); - }; - - var pointerIsMouse = function pointerIsMouse(e) { - return e.pointerType === 'mouse' || e.pointerType === 4; - }; - - r.registerBinding(r.container, 'pointerdown', function (e) { - if (pointerIsMouse(e)) { - return; - } // mouse already handled - - - e.preventDefault(); - addPointer(e); - addTouchesToEvent(e); - touchstartHandler(e); - }); - r.registerBinding(r.container, 'pointerup', function (e) { - if (pointerIsMouse(e)) { - return; - } // mouse already handled - - - removePointer(e); - addTouchesToEvent(e); - touchendHandler(e); - }); - r.registerBinding(r.container, 'pointercancel', function (e) { - if (pointerIsMouse(e)) { - return; - } // mouse already handled - - - removePointer(e); - addTouchesToEvent(e); - touchcancelHandler(e); - }); - r.registerBinding(r.container, 'pointermove', function (e) { - if (pointerIsMouse(e)) { - return; - } // mouse already handled - - - e.preventDefault(); - updatePointer(e); - addTouchesToEvent(e); - touchmoveHandler(e); - }); - } -}; - -var BRp$d = {}; - -BRp$d.generatePolygon = function (name, points) { - return this.nodeShapes[name] = { - renderer: this, - name: name, - points: points, - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl('polygon', context, centerX, centerY, width, height, this.points); - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - return polygonIntersectLine(x, y, this.points, nodeX, nodeY, width / 2, height / 2, padding); - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - return pointInsidePolygon(x, y, this.points, centerX, centerY, width, height, [0, -1], padding); - } - }; -}; - -BRp$d.generateEllipse = function () { - return this.nodeShapes['ellipse'] = { - renderer: this, - name: 'ellipse', - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - return intersectLineEllipse(x, y, nodeX, nodeY, width / 2 + padding, height / 2 + padding); - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - return checkInEllipse(x, y, width, height, centerX, centerY, padding); - } - }; -}; - -BRp$d.generateRoundPolygon = function (name, points) { - // Pre-compute control points - // Since these points depend on the radius length (which in turns depend on the width/height of the node) we will only pre-compute - // the unit vectors. - // For simplicity the layout will be: - // [ p0, UnitVectorP0P1, p1, UniVectorP1P2, ..., pn, UnitVectorPnP0 ] - var allPoints = new Array(points.length * 2); - - for (var i = 0; i < points.length / 2; i++) { - var sourceIndex = i * 2; - var destIndex = void 0; - - if (i < points.length / 2 - 1) { - destIndex = (i + 1) * 2; - } else { - destIndex = 0; - } - - allPoints[i * 4] = points[sourceIndex]; - allPoints[i * 4 + 1] = points[sourceIndex + 1]; - var xDest = points[destIndex] - points[sourceIndex]; - var yDest = points[destIndex + 1] - points[sourceIndex + 1]; - var norm = Math.sqrt(xDest * xDest + yDest * yDest); - allPoints[i * 4 + 2] = xDest / norm; - allPoints[i * 4 + 3] = yDest / norm; - } - - return this.nodeShapes[name] = { - renderer: this, - name: name, - points: allPoints, - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl('round-polygon', context, centerX, centerY, width, height, this.points); - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - return roundPolygonIntersectLine(x, y, this.points, nodeX, nodeY, width, height); - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - return pointInsideRoundPolygon(x, y, this.points, centerX, centerY, width, height); - } - }; -}; - -BRp$d.generateRoundRectangle = function () { - return this.nodeShapes['round-rectangle'] = this.nodeShapes['roundrectangle'] = { - renderer: this, - name: 'round-rectangle', - points: generateUnitNgonPointsFitToSquare(4, 0), - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding); - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - var cornerRadius = getRoundRectangleRadius(width, height); - var diam = cornerRadius * 2; // Check hBox - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) { - return true; - } // Check vBox - - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) { - return true; - } // Check top left quarter circle - - - if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY - height / 2 + cornerRadius, padding)) { - return true; - } // Check top right quarter circle - - - if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY - height / 2 + cornerRadius, padding)) { - return true; - } // Check bottom right quarter circle - - - if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) { - return true; - } // Check bottom left quarter circle - - - if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) { - return true; - } - - return false; - } - }; -}; - -BRp$d.generateCutRectangle = function () { - return this.nodeShapes['cut-rectangle'] = this.nodeShapes['cutrectangle'] = { - renderer: this, - name: 'cut-rectangle', - cornerLength: getCutRectangleCornerLength(), - points: generateUnitNgonPointsFitToSquare(4, 0), - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); - }, - generateCutTrianglePts: function generateCutTrianglePts(width, height, centerX, centerY) { - var cl = this.cornerLength; - var hh = height / 2; - var hw = width / 2; - var xBegin = centerX - hw; - var xEnd = centerX + hw; - var yBegin = centerY - hh; - var yEnd = centerY + hh; // points are in clockwise order, inner (imaginary) triangle pt on [4, 5] - - return { - topLeft: [xBegin, yBegin + cl, xBegin + cl, yBegin, xBegin + cl, yBegin + cl], - topRight: [xEnd - cl, yBegin, xEnd, yBegin + cl, xEnd - cl, yBegin + cl], - bottomRight: [xEnd, yEnd - cl, xEnd - cl, yEnd, xEnd - cl, yEnd - cl], - bottomLeft: [xBegin + cl, yEnd, xBegin, yEnd - cl, xBegin + cl, yEnd - cl] - }; - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - var cPts = this.generateCutTrianglePts(width + 2 * padding, height + 2 * padding, nodeX, nodeY); - var pts = [].concat.apply([], [cPts.topLeft.splice(0, 4), cPts.topRight.splice(0, 4), cPts.bottomRight.splice(0, 4), cPts.bottomLeft.splice(0, 4)]); - return polygonIntersectLine(x, y, pts, nodeX, nodeY); - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - // Check hBox - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * this.cornerLength, [0, -1], padding)) { - return true; - } // Check vBox - - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * this.cornerLength, height, [0, -1], padding)) { - return true; - } - - var cutTrianglePts = this.generateCutTrianglePts(width, height, centerX, centerY); - return pointInsidePolygonPoints(x, y, cutTrianglePts.topLeft) || pointInsidePolygonPoints(x, y, cutTrianglePts.topRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomLeft); - } - }; -}; - -BRp$d.generateBarrel = function () { - return this.nodeShapes['barrel'] = { - renderer: this, - name: 'barrel', - points: generateUnitNgonPointsFitToSquare(4, 0), - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - // use two fixed t values for the bezier curve approximation - var t0 = 0.15; - var t1 = 0.5; - var t2 = 0.85; - var bPts = this.generateBarrelBezierPts(width + 2 * padding, height + 2 * padding, nodeX, nodeY); - - var approximateBarrelCurvePts = function approximateBarrelCurvePts(pts) { - // approximate curve pts based on the two t values - var m0 = qbezierPtAt({ - x: pts[0], - y: pts[1] - }, { - x: pts[2], - y: pts[3] - }, { - x: pts[4], - y: pts[5] - }, t0); - var m1 = qbezierPtAt({ - x: pts[0], - y: pts[1] - }, { - x: pts[2], - y: pts[3] - }, { - x: pts[4], - y: pts[5] - }, t1); - var m2 = qbezierPtAt({ - x: pts[0], - y: pts[1] - }, { - x: pts[2], - y: pts[3] - }, { - x: pts[4], - y: pts[5] - }, t2); - return [pts[0], pts[1], m0.x, m0.y, m1.x, m1.y, m2.x, m2.y, pts[4], pts[5]]; - }; - - var pts = [].concat(approximateBarrelCurvePts(bPts.topLeft), approximateBarrelCurvePts(bPts.topRight), approximateBarrelCurvePts(bPts.bottomRight), approximateBarrelCurvePts(bPts.bottomLeft)); - return polygonIntersectLine(x, y, pts, nodeX, nodeY); - }, - generateBarrelBezierPts: function generateBarrelBezierPts(width, height, centerX, centerY) { - var hh = height / 2; - var hw = width / 2; - var xBegin = centerX - hw; - var xEnd = centerX + hw; - var yBegin = centerY - hh; - var yEnd = centerY + hh; - var curveConstants = getBarrelCurveConstants(width, height); - var hOffset = curveConstants.heightOffset; - var wOffset = curveConstants.widthOffset; - var ctrlPtXOffset = curveConstants.ctrlPtOffsetPct * width; // points are in clockwise order, inner (imaginary) control pt on [4, 5] - - var pts = { - topLeft: [xBegin, yBegin + hOffset, xBegin + ctrlPtXOffset, yBegin, xBegin + wOffset, yBegin], - topRight: [xEnd - wOffset, yBegin, xEnd - ctrlPtXOffset, yBegin, xEnd, yBegin + hOffset], - bottomRight: [xEnd, yEnd - hOffset, xEnd - ctrlPtXOffset, yEnd, xEnd - wOffset, yEnd], - bottomLeft: [xBegin + wOffset, yEnd, xBegin + ctrlPtXOffset, yEnd, xBegin, yEnd - hOffset] - }; - pts.topLeft.isTop = true; - pts.topRight.isTop = true; - pts.bottomLeft.isBottom = true; - pts.bottomRight.isBottom = true; - return pts; - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - var curveConstants = getBarrelCurveConstants(width, height); - var hOffset = curveConstants.heightOffset; - var wOffset = curveConstants.widthOffset; // Check hBox - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * hOffset, [0, -1], padding)) { - return true; - } // Check vBox - - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * wOffset, height, [0, -1], padding)) { - return true; - } - - var barrelCurvePts = this.generateBarrelBezierPts(width, height, centerX, centerY); - - var getCurveT = function getCurveT(x, y, curvePts) { - var x0 = curvePts[4]; - var x1 = curvePts[2]; - var x2 = curvePts[0]; - var y0 = curvePts[5]; // var y1 = curvePts[ 3 ]; - - var y2 = curvePts[1]; - var xMin = Math.min(x0, x2); - var xMax = Math.max(x0, x2); - var yMin = Math.min(y0, y2); - var yMax = Math.max(y0, y2); - - if (xMin <= x && x <= xMax && yMin <= y && y <= yMax) { - var coeff = bezierPtsToQuadCoeff(x0, x1, x2); - var roots = solveQuadratic(coeff[0], coeff[1], coeff[2], x); - var validRoots = roots.filter(function (r) { - return 0 <= r && r <= 1; - }); - - if (validRoots.length > 0) { - return validRoots[0]; - } - } - - return null; - }; - - var curveRegions = Object.keys(barrelCurvePts); - - for (var i = 0; i < curveRegions.length; i++) { - var corner = curveRegions[i]; - var cornerPts = barrelCurvePts[corner]; - var t = getCurveT(x, y, cornerPts); - - if (t == null) { - continue; - } - - var y0 = cornerPts[5]; - var y1 = cornerPts[3]; - var y2 = cornerPts[1]; - var bezY = qbezierAt(y0, y1, y2, t); - - if (cornerPts.isTop && bezY <= y) { - return true; - } - - if (cornerPts.isBottom && y <= bezY) { - return true; - } - } - - return false; - } - }; -}; - -BRp$d.generateBottomRoundrectangle = function () { - return this.nodeShapes['bottom-round-rectangle'] = this.nodeShapes['bottomroundrectangle'] = { - renderer: this, - name: 'bottom-round-rectangle', - points: generateUnitNgonPointsFitToSquare(4, 0), - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - var topStartX = nodeX - (width / 2 + padding); - var topStartY = nodeY - (height / 2 + padding); - var topEndY = topStartY; - var topEndX = nodeX + (width / 2 + padding); - var topIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false); - - if (topIntersections.length > 0) { - return topIntersections; - } - - return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding); - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - var cornerRadius = getRoundRectangleRadius(width, height); - var diam = 2 * cornerRadius; // Check hBox - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) { - return true; - } // Check vBox - - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) { - return true; - } // check non-rounded top side - - - var outerWidth = width / 2 + 2 * padding; - var outerHeight = height / 2 + 2 * padding; - var points = [centerX - outerWidth, centerY - outerHeight, centerX - outerWidth, centerY, centerX + outerWidth, centerY, centerX + outerWidth, centerY - outerHeight]; - - if (pointInsidePolygonPoints(x, y, points)) { - return true; - } // Check bottom right quarter circle - - - if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) { - return true; - } // Check bottom left quarter circle - - - if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) { - return true; - } - - return false; - } - }; -}; - -BRp$d.registerNodeShapes = function () { - var nodeShapes = this.nodeShapes = {}; - var renderer = this; - this.generateEllipse(); - this.generatePolygon('triangle', generateUnitNgonPointsFitToSquare(3, 0)); - this.generateRoundPolygon('round-triangle', generateUnitNgonPointsFitToSquare(3, 0)); - this.generatePolygon('rectangle', generateUnitNgonPointsFitToSquare(4, 0)); - nodeShapes['square'] = nodeShapes['rectangle']; - this.generateRoundRectangle(); - this.generateCutRectangle(); - this.generateBarrel(); - this.generateBottomRoundrectangle(); - { - var diamondPoints = [0, 1, 1, 0, 0, -1, -1, 0]; - this.generatePolygon('diamond', diamondPoints); - this.generateRoundPolygon('round-diamond', diamondPoints); - } - this.generatePolygon('pentagon', generateUnitNgonPointsFitToSquare(5, 0)); - this.generateRoundPolygon('round-pentagon', generateUnitNgonPointsFitToSquare(5, 0)); - this.generatePolygon('hexagon', generateUnitNgonPointsFitToSquare(6, 0)); - this.generateRoundPolygon('round-hexagon', generateUnitNgonPointsFitToSquare(6, 0)); - this.generatePolygon('heptagon', generateUnitNgonPointsFitToSquare(7, 0)); - this.generateRoundPolygon('round-heptagon', generateUnitNgonPointsFitToSquare(7, 0)); - this.generatePolygon('octagon', generateUnitNgonPointsFitToSquare(8, 0)); - this.generateRoundPolygon('round-octagon', generateUnitNgonPointsFitToSquare(8, 0)); - var star5Points = new Array(20); - { - var outerPoints = generateUnitNgonPoints(5, 0); - var innerPoints = generateUnitNgonPoints(5, Math.PI / 5); // Outer radius is 1; inner radius of star is smaller - - var innerRadius = 0.5 * (3 - Math.sqrt(5)); - innerRadius *= 1.57; - - for (var i = 0; i < innerPoints.length / 2; i++) { - innerPoints[i * 2] *= innerRadius; - innerPoints[i * 2 + 1] *= innerRadius; - } - - for (var i = 0; i < 20 / 4; i++) { - star5Points[i * 4] = outerPoints[i * 2]; - star5Points[i * 4 + 1] = outerPoints[i * 2 + 1]; - star5Points[i * 4 + 2] = innerPoints[i * 2]; - star5Points[i * 4 + 3] = innerPoints[i * 2 + 1]; - } - } - star5Points = fitPolygonToSquare(star5Points); - this.generatePolygon('star', star5Points); - this.generatePolygon('vee', [-1, -1, 0, -0.333, 1, -1, 0, 1]); - this.generatePolygon('rhomboid', [-1, -1, 0.333, -1, 1, 1, -0.333, 1]); - this.nodeShapes['concavehexagon'] = this.generatePolygon('concave-hexagon', [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]); - { - var tagPoints = [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1]; - this.generatePolygon('tag', tagPoints); - this.generateRoundPolygon('round-tag', tagPoints); - } - - nodeShapes.makePolygon = function (points) { - // use caching on user-specified polygons so they are as fast as native shapes - var key = points.join('$'); - var name = 'polygon-' + key; - var shape; - - if (shape = this[name]) { - // got cached shape - return shape; - } // create and cache new shape - - - return renderer.generatePolygon(name, points); - }; -}; - -var BRp$e = {}; - -BRp$e.timeToRender = function () { - return this.redrawTotalTime / this.redrawCount; -}; - -BRp$e.redraw = function (options) { - options = options || staticEmptyObject(); - var r = this; - - if (r.averageRedrawTime === undefined) { - r.averageRedrawTime = 0; - } - - if (r.lastRedrawTime === undefined) { - r.lastRedrawTime = 0; - } - - if (r.lastDrawTime === undefined) { - r.lastDrawTime = 0; - } - - r.requestedFrame = true; - r.renderOptions = options; -}; - -BRp$e.beforeRender = function (fn, priority) { - // the renderer can't add tick callbacks when destroyed - if (this.destroyed) { - return; - } - - if (priority == null) { - error('Priority is not optional for beforeRender'); - } - - var cbs = this.beforeRenderCallbacks; - cbs.push({ - fn: fn, - priority: priority - }); // higher priority callbacks executed first - - cbs.sort(function (a, b) { - return b.priority - a.priority; - }); -}; - -var beforeRenderCallbacks = function beforeRenderCallbacks(r, willDraw, startTime) { - var cbs = r.beforeRenderCallbacks; - - for (var i = 0; i < cbs.length; i++) { - cbs[i].fn(willDraw, startTime); - } -}; - -BRp$e.startRenderLoop = function () { - var r = this; - var cy = r.cy; - - if (r.renderLoopStarted) { - return; - } else { - r.renderLoopStarted = true; - } - - var renderFn = function renderFn(requestTime) { - if (r.destroyed) { - return; - } - - if (cy.batching()) ; else if (r.requestedFrame && !r.skipFrame) { - beforeRenderCallbacks(r, true, requestTime); - var startTime = performanceNow(); - r.render(r.renderOptions); - var endTime = r.lastDrawTime = performanceNow(); - - if (r.averageRedrawTime === undefined) { - r.averageRedrawTime = endTime - startTime; - } - - if (r.redrawCount === undefined) { - r.redrawCount = 0; - } - - r.redrawCount++; - - if (r.redrawTotalTime === undefined) { - r.redrawTotalTime = 0; - } - - var duration = endTime - startTime; - r.redrawTotalTime += duration; - r.lastRedrawTime = duration; // use a weighted average with a bias from the previous average so we don't spike so easily - - r.averageRedrawTime = r.averageRedrawTime / 2 + duration / 2; - r.requestedFrame = false; - } else { - beforeRenderCallbacks(r, false, requestTime); - } - - r.skipFrame = false; - requestAnimationFrame$1(renderFn); - }; - - requestAnimationFrame$1(renderFn); -}; - -var BaseRenderer = function BaseRenderer(options) { - this.init(options); -}; - -var BR = BaseRenderer; -var BRp$f = BR.prototype; -BRp$f.clientFunctions = ['redrawHint', 'render', 'renderTo', 'matchCanvasSize', 'nodeShapeImpl', 'arrowShapeImpl']; - -BRp$f.init = function (options) { - var r = this; - r.options = options; - r.cy = options.cy; - var ctr = r.container = options.cy.container(); // prepend a stylesheet in the head such that - - if (window$1) { - var document = window$1.document; - var head = document.head; - var stylesheetId = '__________cytoscape_stylesheet'; - var className = '__________cytoscape_container'; - var stylesheetAlreadyExists = document.getElementById(stylesheetId) != null; - - if (ctr.className.indexOf(className) < 0) { - ctr.className = (ctr.className || '') + ' ' + className; - } - - if (!stylesheetAlreadyExists) { - var stylesheet = document.createElement('style'); - stylesheet.id = stylesheetId; - stylesheet.innerHTML = '.' + className + ' { position: relative; }'; - head.insertBefore(stylesheet, head.children[0]); // first so lowest priority - } - - var computedStyle = window$1.getComputedStyle(ctr); - var position = computedStyle.getPropertyValue('position'); - - if (position === 'static') { - warn('A Cytoscape container has style position:static and so can not use UI extensions properly'); - } - } - - r.selection = [undefined, undefined, undefined, undefined, 0]; // Coordinates for selection box, plus enabled flag - - r.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95]; //--Pointer-related data - - r.hoverData = { - down: null, - last: null, - downTime: null, - triggerMode: null, - dragging: false, - initialPan: [null, null], - capture: false - }; - r.dragData = { - possibleDragElements: [] - }; - r.touchData = { - start: null, - capture: false, - // These 3 fields related to tap, taphold events - startPosition: [null, null, null, null, null, null], - singleTouchStartTime: null, - singleTouchMoved: true, - now: [null, null, null, null, null, null], - earlier: [null, null, null, null, null, null] - }; - r.redraws = 0; - r.showFps = options.showFps; - r.debug = options.debug; - r.hideEdgesOnViewport = options.hideEdgesOnViewport; - r.textureOnViewport = options.textureOnViewport; - r.wheelSensitivity = options.wheelSensitivity; - r.motionBlurEnabled = options.motionBlur; // on by default - - r.forcedPixelRatio = number(options.pixelRatio) ? options.pixelRatio : null; - r.motionBlur = options.motionBlur; // for initial kick off - - r.motionBlurOpacity = options.motionBlurOpacity; - r.motionBlurTransparency = 1 - r.motionBlurOpacity; - r.motionBlurPxRatio = 1; - r.mbPxRBlurry = 1; //0.8; - - r.minMbLowQualFrames = 4; - r.fullQualityMb = false; - r.clearedForMotionBlur = []; - r.desktopTapThreshold = options.desktopTapThreshold; - r.desktopTapThreshold2 = options.desktopTapThreshold * options.desktopTapThreshold; - r.touchTapThreshold = options.touchTapThreshold; - r.touchTapThreshold2 = options.touchTapThreshold * options.touchTapThreshold; - r.tapholdDuration = 500; - r.bindings = []; - r.beforeRenderCallbacks = []; - r.beforeRenderPriorities = { - // higher priority execs before lower one - animations: 400, - eleCalcs: 300, - eleTxrDeq: 200, - lyrTxrDeq: 150, - lyrTxrSkip: 100 - }; - r.registerNodeShapes(); - r.registerArrowShapes(); - r.registerCalculationListeners(); -}; - -BRp$f.notify = function (eventName, eles) { - var r = this; - var cy = r.cy; // the renderer can't be notified after it's destroyed - - if (this.destroyed) { - return; - } - - if (eventName === 'init') { - r.load(); - return; - } - - if (eventName === 'destroy') { - r.destroy(); - return; - } - - if (eventName === 'add' || eventName === 'remove' || eventName === 'move' && cy.hasCompoundNodes() || eventName === 'load' || eventName === 'zorder' || eventName === 'mount') { - r.invalidateCachedZSortedEles(); - } - - if (eventName === 'viewport') { - r.redrawHint('select', true); - } - - if (eventName === 'load' || eventName === 'resize' || eventName === 'mount') { - r.invalidateContainerClientCoordsCache(); - r.matchCanvasSize(r.container); - } - - r.redrawHint('eles', true); - r.redrawHint('drag', true); - this.startRenderLoop(); - this.redraw(); -}; - -BRp$f.destroy = function () { - var r = this; - r.destroyed = true; - r.cy.stopAnimationLoop(); - - for (var i = 0; i < r.bindings.length; i++) { - var binding = r.bindings[i]; - var b = binding; - var tgt = b.target; - (tgt.off || tgt.removeEventListener).apply(tgt, b.args); - } - - r.bindings = []; - r.beforeRenderCallbacks = []; - r.onUpdateEleCalcsFns = []; - - if (r.removeObserver) { - r.removeObserver.disconnect(); - } - - if (r.styleObserver) { - r.styleObserver.disconnect(); - } - - if (r.resizeObserver) { - r.resizeObserver.disconnect(); - } - - if (r.labelCalcDiv) { - try { - document.body.removeChild(r.labelCalcDiv); // eslint-disable-line no-undef - } catch (e) {// ie10 issue #1014 - } - } -}; - -BRp$f.isHeadless = function () { - return false; -}; - -[BRp, BRp$a, BRp$b, BRp$c, BRp$d, BRp$e].forEach(function (props) { - extend(BRp$f, props); -}); - -var fullFpsTime = 1000 / 60; // assume 60 frames per second - -var defs = { - setupDequeueing: function setupDequeueing(opts) { - return function setupDequeueingImpl() { - var self = this; - var r = this.renderer; - - if (self.dequeueingSetup) { - return; - } else { - self.dequeueingSetup = true; - } - - var queueRedraw = util$2(function () { - r.redrawHint('eles', true); - r.redrawHint('drag', true); - r.redraw(); - }, opts.deqRedrawThreshold); - - var dequeue = function dequeue(willDraw, frameStartTime) { - var startTime = performanceNow(); - var avgRenderTime = r.averageRedrawTime; - var renderTime = r.lastRedrawTime; - var deqd = []; - var extent = r.cy.extent(); - var pixelRatio = r.getPixelRatio(); // if we aren't in a tick that causes a draw, then the rendered style - // queue won't automatically be flushed before dequeueing starts - - if (!willDraw) { - r.flushRenderedStyleQueue(); - } - - while (true) { - // eslint-disable-line no-constant-condition - var now = performanceNow(); - var duration = now - startTime; - var frameDuration = now - frameStartTime; - - if (renderTime < fullFpsTime) { - // if we're rendering faster than the ideal fps, then do dequeueing - // during all of the remaining frame time - var timeAvailable = fullFpsTime - (willDraw ? avgRenderTime : 0); - - if (frameDuration >= opts.deqFastCost * timeAvailable) { - break; - } - } else { - if (willDraw) { - if (duration >= opts.deqCost * renderTime || duration >= opts.deqAvgCost * avgRenderTime) { - break; - } - } else if (frameDuration >= opts.deqNoDrawCost * fullFpsTime) { - break; - } - } - - var thisDeqd = opts.deq(self, pixelRatio, extent); - - if (thisDeqd.length > 0) { - for (var i = 0; i < thisDeqd.length; i++) { - deqd.push(thisDeqd[i]); - } - } else { - break; - } - } // callbacks on dequeue - - - if (deqd.length > 0) { - opts.onDeqd(self, deqd); - - if (!willDraw && opts.shouldRedraw(self, deqd, pixelRatio, extent)) { - queueRedraw(); - } - } - }; - - var priority = opts.priority || noop$1; - r.beforeRender(dequeue, priority(self)); - }; - } -}; - -// Uses keys so elements may share the same cache. - -var ElementTextureCacheLookup = -/*#__PURE__*/ -function () { - function ElementTextureCacheLookup(getKey) { - var doesEleInvalidateKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : falsify; - - _classCallCheck(this, ElementTextureCacheLookup); - - this.idsByKey = new Map$1$1(); - this.keyForId = new Map$1$1(); - this.cachesByLvl = new Map$1$1(); - this.lvls = []; - this.getKey = getKey; - this.doesEleInvalidateKey = doesEleInvalidateKey; - } - - _createClass(ElementTextureCacheLookup, [{ - key: "getIdsFor", - value: function getIdsFor(key) { - if (key == null) { - error("Can not get id list for null key"); - } - - var idsByKey = this.idsByKey; - var ids = this.idsByKey.get(key); - - if (!ids) { - ids = new Set$1$1(); - idsByKey.set(key, ids); - } - - return ids; - } - }, { - key: "addIdForKey", - value: function addIdForKey(key, id) { - if (key != null) { - this.getIdsFor(key).add(id); - } - } - }, { - key: "deleteIdForKey", - value: function deleteIdForKey(key, id) { - if (key != null) { - this.getIdsFor(key)["delete"](id); - } - } - }, { - key: "getNumberOfIdsForKey", - value: function getNumberOfIdsForKey(key) { - if (key == null) { - return 0; - } else { - return this.getIdsFor(key).size; - } - } - }, { - key: "updateKeyMappingFor", - value: function updateKeyMappingFor(ele) { - var id = ele.id(); - var prevKey = this.keyForId.get(id); - var currKey = this.getKey(ele); - this.deleteIdForKey(prevKey, id); - this.addIdForKey(currKey, id); - this.keyForId.set(id, currKey); - } - }, { - key: "deleteKeyMappingFor", - value: function deleteKeyMappingFor(ele) { - var id = ele.id(); - var prevKey = this.keyForId.get(id); - this.deleteIdForKey(prevKey, id); - this.keyForId["delete"](id); - } - }, { - key: "keyHasChangedFor", - value: function keyHasChangedFor(ele) { - var id = ele.id(); - var prevKey = this.keyForId.get(id); - var newKey = this.getKey(ele); - return prevKey !== newKey; - } - }, { - key: "isInvalid", - value: function isInvalid(ele) { - return this.keyHasChangedFor(ele) || this.doesEleInvalidateKey(ele); - } - }, { - key: "getCachesAt", - value: function getCachesAt(lvl) { - var cachesByLvl = this.cachesByLvl, - lvls = this.lvls; - var caches = cachesByLvl.get(lvl); - - if (!caches) { - caches = new Map$1$1(); - cachesByLvl.set(lvl, caches); - lvls.push(lvl); - } - - return caches; - } - }, { - key: "getCache", - value: function getCache(key, lvl) { - return this.getCachesAt(lvl).get(key); - } - }, { - key: "get", - value: function get(ele, lvl) { - var key = this.getKey(ele); - var cache = this.getCache(key, lvl); // getting for an element may need to add to the id list b/c eles can share keys - - if (cache != null) { - this.updateKeyMappingFor(ele); - } - - return cache; - } - }, { - key: "getForCachedKey", - value: function getForCachedKey(ele, lvl) { - var key = this.keyForId.get(ele.id()); // n.b. use cached key, not newly computed key - - var cache = this.getCache(key, lvl); - return cache; - } - }, { - key: "hasCache", - value: function hasCache(key, lvl) { - return this.getCachesAt(lvl).has(key); - } - }, { - key: "has", - value: function has(ele, lvl) { - var key = this.getKey(ele); - return this.hasCache(key, lvl); - } - }, { - key: "setCache", - value: function setCache(key, lvl, cache) { - cache.key = key; - this.getCachesAt(lvl).set(key, cache); - } - }, { - key: "set", - value: function set(ele, lvl, cache) { - var key = this.getKey(ele); - this.setCache(key, lvl, cache); - this.updateKeyMappingFor(ele); - } - }, { - key: "deleteCache", - value: function deleteCache(key, lvl) { - this.getCachesAt(lvl)["delete"](key); - } - }, { - key: "delete", - value: function _delete(ele, lvl) { - var key = this.getKey(ele); - this.deleteCache(key, lvl); - } - }, { - key: "invalidateKey", - value: function invalidateKey(key) { - var _this = this; - - this.lvls.forEach(function (lvl) { - return _this.deleteCache(key, lvl); - }); - } // returns true if no other eles reference the invalidated cache (n.b. other eles may need the cache with the same key) - - }, { - key: "invalidate", - value: function invalidate(ele) { - var id = ele.id(); - var key = this.keyForId.get(id); // n.b. use stored key rather than current (potential key) - - this.deleteKeyMappingFor(ele); - var entireKeyInvalidated = this.doesEleInvalidateKey(ele); - - if (entireKeyInvalidated) { - // clear mapping for current key - this.invalidateKey(key); - } - - return entireKeyInvalidated || this.getNumberOfIdsForKey(key) === 0; - } - }]); - - return ElementTextureCacheLookup; -}(); - -var minTxrH = 25; // the size of the texture cache for small height eles (special case) - -var txrStepH = 50; // the min size of the regular cache, and the size it increases with each step up - -var minLvl = -4; // when scaling smaller than that we don't need to re-render - -var maxLvl = 3; // when larger than this scale just render directly (caching is not helpful) - -var maxZoom = 7.99; // beyond this zoom level, layered textures are not used - -var eleTxrSpacing = 8; // spacing between elements on textures to avoid blitting overlaps - -var defTxrWidth = 1024; // default/minimum texture width - -var maxTxrW = 1024; // the maximum width of a texture - -var maxTxrH = 1024; // the maximum height of a texture - -var minUtility = 0.2; // if usage of texture is less than this, it is retired - -var maxFullness = 0.8; // fullness of texture after which queue removal is checked - -var maxFullnessChecks = 10; // dequeued after this many checks - -var deqCost = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame - -var deqAvgCost = 0.1; // % of add'l rendering cost compared to average overall redraw time - -var deqNoDrawCost = 0.9; // % of avg frame time that can be used for dequeueing when not drawing - -var deqFastCost = 0.9; // % of frame time to be used when >60fps - -var deqRedrawThreshold = 100; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile - -var maxDeqSize = 1; // number of eles to dequeue and render at higher texture in each batch - -var getTxrReasons = { - dequeue: 'dequeue', - downscale: 'downscale', - highQuality: 'highQuality' -}; -var initDefaults = defaults$1({ - getKey: null, - doesEleInvalidateKey: falsify, - drawElement: null, - getBoundingBox: null, - getRotationPoint: null, - getRotationOffset: null, - isVisible: trueify, - allowEdgeTxrCaching: true, - allowParentTxrCaching: true -}); - -var ElementTextureCache = function ElementTextureCache(renderer, initOptions) { - var self = this; - self.renderer = renderer; - self.onDequeues = []; - var opts = initDefaults(initOptions); - extend(self, opts); - self.lookup = new ElementTextureCacheLookup(opts.getKey, opts.doesEleInvalidateKey); - self.setupDequeueing(); -}; - -var ETCp = ElementTextureCache.prototype; -ETCp.reasons = getTxrReasons; // the list of textures in which new subtextures for elements can be placed - -ETCp.getTextureQueue = function (txrH) { - var self = this; - self.eleImgCaches = self.eleImgCaches || {}; - return self.eleImgCaches[txrH] = self.eleImgCaches[txrH] || []; -}; // the list of usused textures which can be recycled (in use in texture queue) - - -ETCp.getRetiredTextureQueue = function (txrH) { - var self = this; - var rtxtrQs = self.eleImgCaches.retired = self.eleImgCaches.retired || {}; - var rtxtrQ = rtxtrQs[txrH] = rtxtrQs[txrH] || []; - return rtxtrQ; -}; // queue of element draw requests at different scale levels - - -ETCp.getElementQueue = function () { - var self = this; - var q = self.eleCacheQueue = self.eleCacheQueue || new Heap(function (a, b) { - return b.reqs - a.reqs; - }); - return q; -}; // queue of element draw requests at different scale levels (element id lookup) - - -ETCp.getElementKeyToQueue = function () { - var self = this; - var k2q = self.eleKeyToCacheQueue = self.eleKeyToCacheQueue || {}; - return k2q; -}; - -ETCp.getElement = function (ele, bb, pxRatio, lvl, reason) { - var self = this; - var r = this.renderer; - var zoom = r.cy.zoom(); - var lookup = this.lookup; - - if (!bb || bb.w === 0 || bb.h === 0 || isNaN(bb.w) || isNaN(bb.h) || !ele.visible() || ele.removed()) { - return null; - } - - if (!self.allowEdgeTxrCaching && ele.isEdge() || !self.allowParentTxrCaching && ele.isParent()) { - return null; - } - - if (lvl == null) { - lvl = Math.ceil(log2(zoom * pxRatio)); - } - - if (lvl < minLvl) { - lvl = minLvl; - } else if (zoom >= maxZoom || lvl > maxLvl) { - return null; - } - - var scale = Math.pow(2, lvl); - var eleScaledH = bb.h * scale; - var eleScaledW = bb.w * scale; - var scaledLabelShown = r.eleTextBiggerThanMin(ele, scale); - - if (!this.isVisible(ele, scaledLabelShown)) { - return null; - } - - var eleCache = lookup.get(ele, lvl); // if this get was on an unused/invalidated cache, then restore the texture usage metric - - if (eleCache && eleCache.invalidated) { - eleCache.invalidated = false; - eleCache.texture.invalidatedWidth -= eleCache.width; - } - - if (eleCache) { - return eleCache; - } - - var txrH; // which texture height this ele belongs to - - if (eleScaledH <= minTxrH) { - txrH = minTxrH; - } else if (eleScaledH <= txrStepH) { - txrH = txrStepH; - } else { - txrH = Math.ceil(eleScaledH / txrStepH) * txrStepH; - } - - if (eleScaledH > maxTxrH || eleScaledW > maxTxrW) { - return null; // caching large elements is not efficient - } - - var txrQ = self.getTextureQueue(txrH); // first try the second last one in case it has space at the end - - var txr = txrQ[txrQ.length - 2]; - - var addNewTxr = function addNewTxr() { - return self.recycleTexture(txrH, eleScaledW) || self.addTexture(txrH, eleScaledW); - }; // try the last one if there is no second last one - - - if (!txr) { - txr = txrQ[txrQ.length - 1]; - } // if the last one doesn't exist, we need a first one - - - if (!txr) { - txr = addNewTxr(); - } // if there's no room in the current texture, we need a new one - - - if (txr.width - txr.usedWidth < eleScaledW) { - txr = addNewTxr(); - } - - var scalableFrom = function scalableFrom(otherCache) { - return otherCache && otherCache.scaledLabelShown === scaledLabelShown; - }; - - var deqing = reason && reason === getTxrReasons.dequeue; - var highQualityReq = reason && reason === getTxrReasons.highQuality; - var downscaleReq = reason && reason === getTxrReasons.downscale; - var higherCache; // the nearest cache with a higher level - - for (var l = lvl + 1; l <= maxLvl; l++) { - var c = lookup.get(ele, l); - - if (c) { - higherCache = c; - break; - } - } - - var oneUpCache = higherCache && higherCache.level === lvl + 1 ? higherCache : null; - - var downscale = function downscale() { - txr.context.drawImage(oneUpCache.texture.canvas, oneUpCache.x, 0, oneUpCache.width, oneUpCache.height, txr.usedWidth, 0, eleScaledW, eleScaledH); - }; // reset ele area in texture - - - txr.context.setTransform(1, 0, 0, 1, 0, 0); - txr.context.clearRect(txr.usedWidth, 0, eleScaledW, txrH); - - if (scalableFrom(oneUpCache)) { - // then we can relatively cheaply rescale the existing image w/o rerendering - downscale(); - } else if (scalableFrom(higherCache)) { - // then use the higher cache for now and queue the next level down - // to cheaply scale towards the smaller level - if (highQualityReq) { - for (var _l = higherCache.level; _l > lvl; _l--) { - oneUpCache = self.getElement(ele, bb, pxRatio, _l, getTxrReasons.downscale); - } - - downscale(); - } else { - self.queueElement(ele, higherCache.level - 1); - return higherCache; - } - } else { - var lowerCache; // the nearest cache with a lower level - - if (!deqing && !highQualityReq && !downscaleReq) { - for (var _l2 = lvl - 1; _l2 >= minLvl; _l2--) { - var _c = lookup.get(ele, _l2); - - if (_c) { - lowerCache = _c; - break; - } - } - } - - if (scalableFrom(lowerCache)) { - // then use the lower quality cache for now and queue the better one for later - self.queueElement(ele, lvl); - return lowerCache; - } - - txr.context.translate(txr.usedWidth, 0); - txr.context.scale(scale, scale); - this.drawElement(txr.context, ele, bb, scaledLabelShown, false); - txr.context.scale(1 / scale, 1 / scale); - txr.context.translate(-txr.usedWidth, 0); - } - - eleCache = { - x: txr.usedWidth, - texture: txr, - level: lvl, - scale: scale, - width: eleScaledW, - height: eleScaledH, - scaledLabelShown: scaledLabelShown - }; - txr.usedWidth += Math.ceil(eleScaledW + eleTxrSpacing); - txr.eleCaches.push(eleCache); - lookup.set(ele, lvl, eleCache); - self.checkTextureFullness(txr); - return eleCache; -}; - -ETCp.invalidateElements = function (eles) { - for (var i = 0; i < eles.length; i++) { - this.invalidateElement(eles[i]); - } -}; - -ETCp.invalidateElement = function (ele) { - var self = this; - var lookup = self.lookup; - var caches = []; - var invalid = lookup.isInvalid(ele); - - if (!invalid) { - return; // override the invalidation request if the element key has not changed - } - - for (var lvl = minLvl; lvl <= maxLvl; lvl++) { - var cache = lookup.getForCachedKey(ele, lvl); - - if (cache) { - caches.push(cache); - } - } - - var noOtherElesUseCache = lookup.invalidate(ele); - - if (noOtherElesUseCache) { - for (var i = 0; i < caches.length; i++) { - var _cache = caches[i]; - var txr = _cache.texture; // remove space from the texture it belongs to - - txr.invalidatedWidth += _cache.width; // mark the cache as invalidated - - _cache.invalidated = true; // retire the texture if its utility is low - - self.checkTextureUtility(txr); - } - } // remove from queue since the old req was for the old state - - - self.removeFromQueue(ele); -}; - -ETCp.checkTextureUtility = function (txr) { - // invalidate all entries in the cache if the cache size is small - if (txr.invalidatedWidth >= minUtility * txr.width) { - this.retireTexture(txr); - } -}; - -ETCp.checkTextureFullness = function (txr) { - // if texture has been mostly filled and passed over several times, remove - // it from the queue so we don't need to waste time looking at it to put new things - var self = this; - var txrQ = self.getTextureQueue(txr.height); - - if (txr.usedWidth / txr.width > maxFullness && txr.fullnessChecks >= maxFullnessChecks) { - removeFromArray(txrQ, txr); - } else { - txr.fullnessChecks++; - } -}; - -ETCp.retireTexture = function (txr) { - var self = this; - var txrH = txr.height; - var txrQ = self.getTextureQueue(txrH); - var lookup = this.lookup; // retire the texture from the active / searchable queue: - - removeFromArray(txrQ, txr); - txr.retired = true; // remove the refs from the eles to the caches: - - var eleCaches = txr.eleCaches; - - for (var i = 0; i < eleCaches.length; i++) { - var eleCache = eleCaches[i]; - lookup.deleteCache(eleCache.key, eleCache.level); - } - - clearArray(eleCaches); // add the texture to a retired queue so it can be recycled in future: - - var rtxtrQ = self.getRetiredTextureQueue(txrH); - rtxtrQ.push(txr); -}; - -ETCp.addTexture = function (txrH, minW) { - var self = this; - var txrQ = self.getTextureQueue(txrH); - var txr = {}; - txrQ.push(txr); - txr.eleCaches = []; - txr.height = txrH; - txr.width = Math.max(defTxrWidth, minW); - txr.usedWidth = 0; - txr.invalidatedWidth = 0; - txr.fullnessChecks = 0; - txr.canvas = self.renderer.makeOffscreenCanvas(txr.width, txr.height); - txr.context = txr.canvas.getContext('2d'); - return txr; -}; - -ETCp.recycleTexture = function (txrH, minW) { - var self = this; - var txrQ = self.getTextureQueue(txrH); - var rtxtrQ = self.getRetiredTextureQueue(txrH); - - for (var i = 0; i < rtxtrQ.length; i++) { - var txr = rtxtrQ[i]; - - if (txr.width >= minW) { - txr.retired = false; - txr.usedWidth = 0; - txr.invalidatedWidth = 0; - txr.fullnessChecks = 0; - clearArray(txr.eleCaches); - txr.context.setTransform(1, 0, 0, 1, 0, 0); - txr.context.clearRect(0, 0, txr.width, txr.height); - removeFromArray(rtxtrQ, txr); - txrQ.push(txr); - return txr; - } - } -}; - -ETCp.queueElement = function (ele, lvl) { - var self = this; - var q = self.getElementQueue(); - var k2q = self.getElementKeyToQueue(); - var key = this.getKey(ele); - var existingReq = k2q[key]; - - if (existingReq) { - // use the max lvl b/c in between lvls are cheap to make - existingReq.level = Math.max(existingReq.level, lvl); - existingReq.eles.merge(ele); - existingReq.reqs++; - q.updateItem(existingReq); - } else { - var req = { - eles: ele.spawn().merge(ele), - level: lvl, - reqs: 1, - key: key - }; - q.push(req); - k2q[key] = req; - } -}; - -ETCp.dequeue = function (pxRatio -/*, extent*/ -) { - var self = this; - var q = self.getElementQueue(); - var k2q = self.getElementKeyToQueue(); - var dequeued = []; - var lookup = self.lookup; - - for (var i = 0; i < maxDeqSize; i++) { - if (q.size() > 0) { - var req = q.pop(); - var key = req.key; - var ele = req.eles[0]; // all eles have the same key - - var cacheExists = lookup.hasCache(ele, req.level); // clear out the key to req lookup - - k2q[key] = null; // dequeueing isn't necessary with an existing cache - - if (cacheExists) { - continue; - } - - dequeued.push(req); - var bb = self.getBoundingBox(ele); - self.getElement(ele, bb, pxRatio, req.level, getTxrReasons.dequeue); - } else { - break; - } - } - - return dequeued; -}; - -ETCp.removeFromQueue = function (ele) { - var self = this; - var q = self.getElementQueue(); - var k2q = self.getElementKeyToQueue(); - var key = this.getKey(ele); - var req = k2q[key]; - - if (req != null) { - if (req.eles.length === 1) { - // remove if last ele in the req - // bring to front of queue - req.reqs = MAX_INT; - q.updateItem(req); - q.pop(); // remove from queue - - k2q[key] = null; // remove from lookup map - } else { - // otherwise just remove ele from req - req.eles.unmerge(ele); - } - } -}; - -ETCp.onDequeue = function (fn) { - this.onDequeues.push(fn); -}; - -ETCp.offDequeue = function (fn) { - removeFromArray(this.onDequeues, fn); -}; - -ETCp.setupDequeueing = defs.setupDequeueing({ - deqRedrawThreshold: deqRedrawThreshold, - deqCost: deqCost, - deqAvgCost: deqAvgCost, - deqNoDrawCost: deqNoDrawCost, - deqFastCost: deqFastCost, - deq: function deq(self, pxRatio, extent) { - return self.dequeue(pxRatio, extent); - }, - onDeqd: function onDeqd(self, deqd) { - for (var i = 0; i < self.onDequeues.length; i++) { - var fn = self.onDequeues[i]; - fn(deqd); - } - }, - shouldRedraw: function shouldRedraw(self, deqd, pxRatio, extent) { - for (var i = 0; i < deqd.length; i++) { - var eles = deqd[i].eles; - - for (var j = 0; j < eles.length; j++) { - var bb = eles[j].boundingBox(); - - if (boundingBoxesIntersect(bb, extent)) { - return true; - } - } - } - - return false; - }, - priority: function priority(self) { - return self.renderer.beforeRenderPriorities.eleTxrDeq; - } -}); - -var defNumLayers = 1; // default number of layers to use - -var minLvl$1 = -4; // when scaling smaller than that we don't need to re-render - -var maxLvl$1 = 2; // when larger than this scale just render directly (caching is not helpful) - -var maxZoom$1 = 3.99; // beyond this zoom level, layered textures are not used - -var deqRedrawThreshold$1 = 50; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile - -var refineEleDebounceTime = 50; // time to debounce sharper ele texture updates - -var deqCost$1 = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame - -var deqAvgCost$1 = 0.1; // % of add'l rendering cost compared to average overall redraw time - -var deqNoDrawCost$1 = 0.9; // % of avg frame time that can be used for dequeueing when not drawing - -var deqFastCost$1 = 0.9; // % of frame time to be used when >60fps - -var maxDeqSize$1 = 1; // number of eles to dequeue and render at higher texture in each batch - -var invalidThreshold = 250; // time threshold for disabling b/c of invalidations - -var maxLayerArea = 4000 * 4000; // layers can't be bigger than this - -var useHighQualityEleTxrReqs = true; // whether to use high quality ele txr requests (generally faster and cheaper in the longterm) -// var log = function(){ console.log.apply( console, arguments ); }; - -var LayeredTextureCache = function LayeredTextureCache(renderer) { - var self = this; - var r = self.renderer = renderer; - var cy = r.cy; - self.layersByLevel = {}; // e.g. 2 => [ layer1, layer2, ..., layerN ] - - self.firstGet = true; - self.lastInvalidationTime = performanceNow() - 2 * invalidThreshold; - self.skipping = false; - self.eleTxrDeqs = cy.collection(); - self.scheduleElementRefinement = util$2(function () { - self.refineElementTextures(self.eleTxrDeqs); - self.eleTxrDeqs.unmerge(self.eleTxrDeqs); - }, refineEleDebounceTime); - r.beforeRender(function (willDraw, now) { - if (now - self.lastInvalidationTime <= invalidThreshold) { - self.skipping = true; - } else { - self.skipping = false; - } - }, r.beforeRenderPriorities.lyrTxrSkip); - - var qSort = function qSort(a, b) { - return b.reqs - a.reqs; - }; - - self.layersQueue = new Heap(qSort); - self.setupDequeueing(); -}; - -var LTCp = LayeredTextureCache.prototype; -var layerIdPool = 0; -var MAX_INT$1 = Math.pow(2, 53) - 1; - -LTCp.makeLayer = function (bb, lvl) { - var scale = Math.pow(2, lvl); - var w = Math.ceil(bb.w * scale); - var h = Math.ceil(bb.h * scale); - var canvas = this.renderer.makeOffscreenCanvas(w, h); - var layer = { - id: layerIdPool = ++layerIdPool % MAX_INT$1, - bb: bb, - level: lvl, - width: w, - height: h, - canvas: canvas, - context: canvas.getContext('2d'), - eles: [], - elesQueue: [], - reqs: 0 - }; // log('make layer %s with w %s and h %s and lvl %s', layer.id, layer.width, layer.height, layer.level); - - var cxt = layer.context; - var dx = -layer.bb.x1; - var dy = -layer.bb.y1; // do the transform on creation to save cycles (it's the same for all eles) - - cxt.scale(scale, scale); - cxt.translate(dx, dy); - return layer; -}; - -LTCp.getLayers = function (eles, pxRatio, lvl) { - var self = this; - var r = self.renderer; - var cy = r.cy; - var zoom = cy.zoom(); - var firstGet = self.firstGet; - self.firstGet = false; // log('--\nget layers with %s eles', eles.length); - //log eles.map(function(ele){ return ele.id() }) ); - - if (lvl == null) { - lvl = Math.ceil(log2(zoom * pxRatio)); - - if (lvl < minLvl$1) { - lvl = minLvl$1; - } else if (zoom >= maxZoom$1 || lvl > maxLvl$1) { - return null; - } - } - - self.validateLayersElesOrdering(lvl, eles); - var layersByLvl = self.layersByLevel; - var scale = Math.pow(2, lvl); - var layers = layersByLvl[lvl] = layersByLvl[lvl] || []; - var bb; - var lvlComplete = self.levelIsComplete(lvl, eles); - var tmpLayers; - - var checkTempLevels = function checkTempLevels() { - var canUseAsTmpLvl = function canUseAsTmpLvl(l) { - self.validateLayersElesOrdering(l, eles); - - if (self.levelIsComplete(l, eles)) { - tmpLayers = layersByLvl[l]; - return true; - } - }; - - var checkLvls = function checkLvls(dir) { - if (tmpLayers) { - return; - } - - for (var l = lvl + dir; minLvl$1 <= l && l <= maxLvl$1; l += dir) { - if (canUseAsTmpLvl(l)) { - break; - } - } - }; - - checkLvls(+1); - checkLvls(-1); // remove the invalid layers; they will be replaced as needed later in this function - - for (var i = layers.length - 1; i >= 0; i--) { - var layer = layers[i]; - - if (layer.invalid) { - removeFromArray(layers, layer); - } - } - }; - - if (!lvlComplete) { - // if the current level is incomplete, then use the closest, best quality layerset temporarily - // and later queue the current layerset so we can get the proper quality level soon - checkTempLevels(); - } else { - // log('level complete, using existing layers\n--'); - return layers; - } - - var getBb = function getBb() { - if (!bb) { - bb = makeBoundingBox(); - - for (var i = 0; i < eles.length; i++) { - updateBoundingBox(bb, eles[i].boundingBox()); - } - } - - return bb; - }; - - var makeLayer = function makeLayer(opts) { - opts = opts || {}; - var after = opts.after; - getBb(); - var area = bb.w * scale * (bb.h * scale); - - if (area > maxLayerArea) { - return null; - } - - var layer = self.makeLayer(bb, lvl); - - if (after != null) { - var index = layers.indexOf(after) + 1; - layers.splice(index, 0, layer); - } else if (opts.insert === undefined || opts.insert) { - // no after specified => first layer made so put at start - layers.unshift(layer); - } // if( tmpLayers ){ - //self.queueLayer( layer ); - // } - - - return layer; - }; - - if (self.skipping && !firstGet) { - // log('skip layers'); - return null; - } // log('do layers'); - - - var layer = null; - var maxElesPerLayer = eles.length / defNumLayers; - var allowLazyQueueing = !firstGet; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var rs = ele._private.rscratch; - var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; // log('look at ele', ele.id()); - - var existingLayer = caches[lvl]; - - if (existingLayer) { - // reuse layer for later eles - // log('reuse layer for', ele.id()); - layer = existingLayer; - continue; - } - - if (!layer || layer.eles.length >= maxElesPerLayer || !boundingBoxInBoundingBox(layer.bb, ele.boundingBox())) { - // log('make new layer for ele %s', ele.id()); - layer = makeLayer({ - insert: true, - after: layer - }); // if now layer can be built then we can't use layers at this level - - if (!layer) { - return null; - } // log('new layer with id %s', layer.id); - - } - - if (tmpLayers || allowLazyQueueing) { - // log('queue ele %s in layer %s', ele.id(), layer.id); - self.queueLayer(layer, ele); - } else { - // log('draw ele %s in layer %s', ele.id(), layer.id); - self.drawEleInLayer(layer, ele, lvl, pxRatio); - } - - layer.eles.push(ele); - caches[lvl] = layer; - } // log('--'); - - - if (tmpLayers) { - // then we only queued the current layerset and can't draw it yet - return tmpLayers; - } - - if (allowLazyQueueing) { - // log('lazy queue level', lvl); - return null; - } - - return layers; -}; // a layer may want to use an ele cache of a higher level to avoid blurriness -// so the layer level might not equal the ele level - - -LTCp.getEleLevelForLayerLevel = function (lvl, pxRatio) { - return lvl; -}; - -LTCp.drawEleInLayer = function (layer, ele, lvl, pxRatio) { - var self = this; - var r = this.renderer; - var context = layer.context; - var bb = ele.boundingBox(); - - if (bb.w === 0 || bb.h === 0 || !ele.visible()) { - return; - } - - lvl = self.getEleLevelForLayerLevel(lvl, pxRatio); - - { - r.setImgSmoothing(context, false); - } - - { - r.drawCachedElement(context, ele, null, null, lvl, useHighQualityEleTxrReqs); - } - - { - r.setImgSmoothing(context, true); - } -}; - -LTCp.levelIsComplete = function (lvl, eles) { - var self = this; - var layers = self.layersByLevel[lvl]; - - if (!layers || layers.length === 0) { - return false; - } - - var numElesInLayers = 0; - - for (var i = 0; i < layers.length; i++) { - var layer = layers[i]; // if there are any eles needed to be drawn yet, the level is not complete - - if (layer.reqs > 0) { - return false; - } // if the layer is invalid, the level is not complete - - - if (layer.invalid) { - return false; - } - - numElesInLayers += layer.eles.length; - } // we should have exactly the number of eles passed in to be complete - - - if (numElesInLayers !== eles.length) { - return false; - } - - return true; -}; - -LTCp.validateLayersElesOrdering = function (lvl, eles) { - var layers = this.layersByLevel[lvl]; - - if (!layers) { - return; - } // if in a layer the eles are not in the same order, then the layer is invalid - // (i.e. there is an ele in between the eles in the layer) - - - for (var i = 0; i < layers.length; i++) { - var layer = layers[i]; - var offset = -1; // find the offset - - for (var j = 0; j < eles.length; j++) { - if (layer.eles[0] === eles[j]) { - offset = j; - break; - } - } - - if (offset < 0) { - // then the layer has nonexistant elements and is invalid - this.invalidateLayer(layer); - continue; - } // the eles in the layer must be in the same continuous order, else the layer is invalid - - - var o = offset; - - for (var j = 0; j < layer.eles.length; j++) { - if (layer.eles[j] !== eles[o + j]) { - // log('invalidate based on ordering', layer.id); - this.invalidateLayer(layer); - break; - } - } - } -}; - -LTCp.updateElementsInLayers = function (eles, update) { - var self = this; - var isEles = element(eles[0]); // collect udpated elements (cascaded from the layers) and update each - // layer itself along the way - - for (var i = 0; i < eles.length; i++) { - var req = isEles ? null : eles[i]; - var ele = isEles ? eles[i] : eles[i].ele; - var rs = ele._private.rscratch; - var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; - - for (var l = minLvl$1; l <= maxLvl$1; l++) { - var layer = caches[l]; - - if (!layer) { - continue; - } // if update is a request from the ele cache, then it affects only - // the matching level - - - if (req && self.getEleLevelForLayerLevel(layer.level) !== req.level) { - continue; - } - - update(layer, ele, req); - } - } -}; - -LTCp.haveLayers = function () { - var self = this; - var haveLayers = false; - - for (var l = minLvl$1; l <= maxLvl$1; l++) { - var layers = self.layersByLevel[l]; - - if (layers && layers.length > 0) { - haveLayers = true; - break; - } - } - - return haveLayers; -}; - -LTCp.invalidateElements = function (eles) { - var self = this; - - if (eles.length === 0) { - return; - } - - self.lastInvalidationTime = performanceNow(); // log('update invalidate layer time from eles'); - - if (eles.length === 0 || !self.haveLayers()) { - return; - } - - self.updateElementsInLayers(eles, function invalAssocLayers(layer, ele, req) { - self.invalidateLayer(layer); - }); -}; - -LTCp.invalidateLayer = function (layer) { - // log('update invalidate layer time'); - this.lastInvalidationTime = performanceNow(); - - if (layer.invalid) { - return; - } // save cycles - - - var lvl = layer.level; - var eles = layer.eles; - var layers = this.layersByLevel[lvl]; // log('invalidate layer', layer.id ); - - removeFromArray(layers, layer); // layer.eles = []; - - layer.elesQueue = []; - layer.invalid = true; - - if (layer.replacement) { - layer.replacement.invalid = true; - } - - for (var i = 0; i < eles.length; i++) { - var caches = eles[i]._private.rscratch.imgLayerCaches; - - if (caches) { - caches[lvl] = null; - } - } -}; - -LTCp.refineElementTextures = function (eles) { - var self = this; // log('refine', eles.length); - - self.updateElementsInLayers(eles, function refineEachEle(layer, ele, req) { - var rLyr = layer.replacement; - - if (!rLyr) { - rLyr = layer.replacement = self.makeLayer(layer.bb, layer.level); - rLyr.replaces = layer; - rLyr.eles = layer.eles; // log('make replacement layer %s for %s with level %s', rLyr.id, layer.id, rLyr.level); - } - - if (!rLyr.reqs) { - for (var i = 0; i < rLyr.eles.length; i++) { - self.queueLayer(rLyr, rLyr.eles[i]); - } // log('queue replacement layer refinement', rLyr.id); - - } - }); -}; - -LTCp.enqueueElementRefinement = function (ele) { - - this.eleTxrDeqs.merge(ele); - this.scheduleElementRefinement(); -}; - -LTCp.queueLayer = function (layer, ele) { - var self = this; - var q = self.layersQueue; - var elesQ = layer.elesQueue; - var hasId = elesQ.hasId = elesQ.hasId || {}; // if a layer is going to be replaced, queuing is a waste of time - - if (layer.replacement) { - return; - } - - if (ele) { - if (hasId[ele.id()]) { - return; - } - - elesQ.push(ele); - hasId[ele.id()] = true; - } - - if (layer.reqs) { - layer.reqs++; - q.updateItem(layer); - } else { - layer.reqs = 1; - q.push(layer); - } -}; - -LTCp.dequeue = function (pxRatio) { - var self = this; - var q = self.layersQueue; - var deqd = []; - var eleDeqs = 0; - - while (eleDeqs < maxDeqSize$1) { - if (q.size() === 0) { - break; - } - - var layer = q.peek(); // if a layer has been or will be replaced, then don't waste time with it - - if (layer.replacement) { - // log('layer %s in queue skipped b/c it already has a replacement', layer.id); - q.pop(); - continue; - } // if this is a replacement layer that has been superceded, then forget it - - - if (layer.replaces && layer !== layer.replaces.replacement) { - // log('layer is no longer the most uptodate replacement; dequeued', layer.id) - q.pop(); - continue; - } - - if (layer.invalid) { - // log('replacement layer %s is invalid; dequeued', layer.id); - q.pop(); - continue; - } - - var ele = layer.elesQueue.shift(); - - if (ele) { - // log('dequeue layer %s', layer.id); - self.drawEleInLayer(layer, ele, layer.level, pxRatio); - eleDeqs++; - } - - if (deqd.length === 0) { - // we need only one entry in deqd to queue redrawing etc - deqd.push(true); - } // if the layer has all its eles done, then remove from the queue - - - if (layer.elesQueue.length === 0) { - q.pop(); - layer.reqs = 0; // log('dequeue of layer %s complete', layer.id); - // when a replacement layer is dequeued, it replaces the old layer in the level - - if (layer.replaces) { - self.applyLayerReplacement(layer); - } - - self.requestRedraw(); - } - } - - return deqd; -}; - -LTCp.applyLayerReplacement = function (layer) { - var self = this; - var layersInLevel = self.layersByLevel[layer.level]; - var replaced = layer.replaces; - var index = layersInLevel.indexOf(replaced); // if the replaced layer is not in the active list for the level, then replacing - // refs would be a mistake (i.e. overwriting the true active layer) - - if (index < 0 || replaced.invalid) { - // log('replacement layer would have no effect', layer.id); - return; - } - - layersInLevel[index] = layer; // replace level ref - // replace refs in eles - - for (var i = 0; i < layer.eles.length; i++) { - var _p = layer.eles[i]._private; - var cache = _p.imgLayerCaches = _p.imgLayerCaches || {}; - - if (cache) { - cache[layer.level] = layer; - } - } // log('apply replacement layer %s over %s', layer.id, replaced.id); - - - self.requestRedraw(); -}; - -LTCp.requestRedraw = util$2(function () { - var r = this.renderer; - r.redrawHint('eles', true); - r.redrawHint('drag', true); - r.redraw(); -}, 100); -LTCp.setupDequeueing = defs.setupDequeueing({ - deqRedrawThreshold: deqRedrawThreshold$1, - deqCost: deqCost$1, - deqAvgCost: deqAvgCost$1, - deqNoDrawCost: deqNoDrawCost$1, - deqFastCost: deqFastCost$1, - deq: function deq(self, pxRatio) { - return self.dequeue(pxRatio); - }, - onDeqd: noop$1, - shouldRedraw: trueify, - priority: function priority(self) { - return self.renderer.beforeRenderPriorities.lyrTxrDeq; - } -}); - -var CRp = {}; -var impl; - -function polygon(context, points) { - for (var i = 0; i < points.length; i++) { - var pt = points[i]; - context.lineTo(pt.x, pt.y); - } -} - -function triangleBackcurve(context, points, controlPoint) { - var firstPt; - - for (var i = 0; i < points.length; i++) { - var pt = points[i]; - - if (i === 0) { - firstPt = pt; - } - - context.lineTo(pt.x, pt.y); - } - - context.quadraticCurveTo(controlPoint.x, controlPoint.y, firstPt.x, firstPt.y); -} - -function triangleTee(context, trianglePoints, teePoints) { - if (context.beginPath) { - context.beginPath(); - } - - var triPts = trianglePoints; - - for (var i = 0; i < triPts.length; i++) { - var pt = triPts[i]; - context.lineTo(pt.x, pt.y); - } - - var teePts = teePoints; - var firstTeePt = teePoints[0]; - context.moveTo(firstTeePt.x, firstTeePt.y); - - for (var i = 1; i < teePts.length; i++) { - var pt = teePts[i]; - context.lineTo(pt.x, pt.y); - } - - if (context.closePath) { - context.closePath(); - } -} - -function circleTriangle(context, trianglePoints, rx, ry, r) { - if (context.beginPath) { - context.beginPath(); - } - - context.arc(rx, ry, r, 0, Math.PI * 2, false); - var triPts = trianglePoints; - var firstTrPt = triPts[0]; - context.moveTo(firstTrPt.x, firstTrPt.y); - - for (var i = 0; i < triPts.length; i++) { - var pt = triPts[i]; - context.lineTo(pt.x, pt.y); - } - - if (context.closePath) { - context.closePath(); - } -} - -function circle(context, rx, ry, r) { - context.arc(rx, ry, r, 0, Math.PI * 2, false); -} - -CRp.arrowShapeImpl = function (name) { - return (impl || (impl = { - 'polygon': polygon, - 'triangle-backcurve': triangleBackcurve, - 'triangle-tee': triangleTee, - 'circle-triangle': circleTriangle, - 'triangle-cross': triangleTee, - 'circle': circle - }))[name]; -}; - -var CRp$1 = {}; - -CRp$1.drawElement = function (context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity) { - var r = this; - - if (ele.isNode()) { - r.drawNode(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity); - } else { - r.drawEdge(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity); - } -}; - -CRp$1.drawElementOverlay = function (context, ele) { - var r = this; - - if (ele.isNode()) { - r.drawNodeOverlay(context, ele); - } else { - r.drawEdgeOverlay(context, ele); - } -}; - -CRp$1.drawElementUnderlay = function (context, ele) { - var r = this; - - if (ele.isNode()) { - r.drawNodeUnderlay(context, ele); - } else { - r.drawEdgeUnderlay(context, ele); - } -}; - -CRp$1.drawCachedElementPortion = function (context, ele, eleTxrCache, pxRatio, lvl, reason, getRotation, getOpacity) { - var r = this; - var bb = eleTxrCache.getBoundingBox(ele); - - if (bb.w === 0 || bb.h === 0) { - return; - } // ignore zero size case - - - var eleCache = eleTxrCache.getElement(ele, bb, pxRatio, lvl, reason); - - if (eleCache != null) { - var opacity = getOpacity(r, ele); - - if (opacity === 0) { - return; - } - - var theta = getRotation(r, ele); - var x1 = bb.x1, - y1 = bb.y1, - w = bb.w, - h = bb.h; - var x, y, sx, sy, smooth; - - if (theta !== 0) { - var rotPt = eleTxrCache.getRotationPoint(ele); - sx = rotPt.x; - sy = rotPt.y; - context.translate(sx, sy); - context.rotate(theta); - smooth = r.getImgSmoothing(context); - - if (!smooth) { - r.setImgSmoothing(context, true); - } - - var off = eleTxrCache.getRotationOffset(ele); - x = off.x; - y = off.y; - } else { - x = x1; - y = y1; - } - - var oldGlobalAlpha; - - if (opacity !== 1) { - oldGlobalAlpha = context.globalAlpha; - context.globalAlpha = oldGlobalAlpha * opacity; - } - - context.drawImage(eleCache.texture.canvas, eleCache.x, 0, eleCache.width, eleCache.height, x, y, w, h); - - if (opacity !== 1) { - context.globalAlpha = oldGlobalAlpha; - } - - if (theta !== 0) { - context.rotate(-theta); - context.translate(-sx, -sy); - - if (!smooth) { - r.setImgSmoothing(context, false); - } - } - } else { - eleTxrCache.drawElement(context, ele); // direct draw fallback - } -}; - -var getZeroRotation = function getZeroRotation() { - return 0; -}; - -var getLabelRotation = function getLabelRotation(r, ele) { - return r.getTextAngle(ele, null); -}; - -var getSourceLabelRotation = function getSourceLabelRotation(r, ele) { - return r.getTextAngle(ele, 'source'); -}; - -var getTargetLabelRotation = function getTargetLabelRotation(r, ele) { - return r.getTextAngle(ele, 'target'); -}; - -var getOpacity = function getOpacity(r, ele) { - return ele.effectiveOpacity(); -}; - -var getTextOpacity = function getTextOpacity(e, ele) { - return ele.pstyle('text-opacity').pfValue * ele.effectiveOpacity(); -}; - -CRp$1.drawCachedElement = function (context, ele, pxRatio, extent, lvl, requestHighQuality) { - var r = this; - var _r$data = r.data, - eleTxrCache = _r$data.eleTxrCache, - lblTxrCache = _r$data.lblTxrCache, - slbTxrCache = _r$data.slbTxrCache, - tlbTxrCache = _r$data.tlbTxrCache; - var bb = ele.boundingBox(); - var reason = requestHighQuality === true ? eleTxrCache.reasons.highQuality : null; - - if (bb.w === 0 || bb.h === 0 || !ele.visible()) { - return; - } - - if (!extent || boundingBoxesIntersect(bb, extent)) { - var isEdge = ele.isEdge(); - - var badLine = ele.element()._private.rscratch.badLine; - - r.drawElementUnderlay(context, ele); - r.drawCachedElementPortion(context, ele, eleTxrCache, pxRatio, lvl, reason, getZeroRotation, getOpacity); - - if (!isEdge || !badLine) { - r.drawCachedElementPortion(context, ele, lblTxrCache, pxRatio, lvl, reason, getLabelRotation, getTextOpacity); - } - - if (isEdge && !badLine) { - r.drawCachedElementPortion(context, ele, slbTxrCache, pxRatio, lvl, reason, getSourceLabelRotation, getTextOpacity); - r.drawCachedElementPortion(context, ele, tlbTxrCache, pxRatio, lvl, reason, getTargetLabelRotation, getTextOpacity); - } - - r.drawElementOverlay(context, ele); - } -}; - -CRp$1.drawElements = function (context, eles) { - var r = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - r.drawElement(context, ele); - } -}; - -CRp$1.drawCachedElements = function (context, eles, pxRatio, extent) { - var r = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - r.drawCachedElement(context, ele, pxRatio, extent); - } -}; - -CRp$1.drawCachedNodes = function (context, eles, pxRatio, extent) { - var r = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - - if (!ele.isNode()) { - continue; - } - - r.drawCachedElement(context, ele, pxRatio, extent); - } -}; - -CRp$1.drawLayeredElements = function (context, eles, pxRatio, extent) { - var r = this; - var layers = r.data.lyrTxrCache.getLayers(eles, pxRatio); - - if (layers) { - for (var i = 0; i < layers.length; i++) { - var layer = layers[i]; - var bb = layer.bb; - - if (bb.w === 0 || bb.h === 0) { - continue; - } - - context.drawImage(layer.canvas, bb.x1, bb.y1, bb.w, bb.h); - } - } else { - // fall back on plain caching if no layers - r.drawCachedElements(context, eles, pxRatio, extent); - } -}; - -/* global Path2D */ -var CRp$2 = {}; - -CRp$2.drawEdge = function (context, edge, shiftToOriginWithBb) { - var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; - var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; - var r = this; - var rs = edge._private.rscratch; - - if (shouldDrawOpacity && !edge.visible()) { - return; - } // if bezier ctrl pts can not be calculated, then die - - - if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) { - // isNaN in case edge is impossible and browser bugs (e.g. safari) - return; - } - - var bb; - - if (shiftToOriginWithBb) { - bb = shiftToOriginWithBb; - context.translate(-bb.x1, -bb.y1); - } - - var opacity = shouldDrawOpacity ? edge.pstyle('opacity').value : 1; - var lineOpacity = shouldDrawOpacity ? edge.pstyle('line-opacity').value : 1; - var curveStyle = edge.pstyle('curve-style').value; - var lineStyle = edge.pstyle('line-style').value; - var edgeWidth = edge.pstyle('width').pfValue; - var lineCap = edge.pstyle('line-cap').value; - var effectiveLineOpacity = opacity * lineOpacity; // separate arrow opacity would require arrow-opacity property - - var effectiveArrowOpacity = opacity * lineOpacity; - - var drawLine = function drawLine() { - var strokeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveLineOpacity; - - if (curveStyle === 'straight-triangle') { - r.eleStrokeStyle(context, edge, strokeOpacity); - r.drawEdgeTrianglePath(edge, context, rs.allpts); - } else { - context.lineWidth = edgeWidth; - context.lineCap = lineCap; - r.eleStrokeStyle(context, edge, strokeOpacity); - r.drawEdgePath(edge, context, rs.allpts, lineStyle); - context.lineCap = 'butt'; // reset for other drawing functions - } - }; - - var drawOverlay = function drawOverlay() { - if (!shouldDrawOverlay) { - return; - } - - r.drawEdgeOverlay(context, edge); - }; - - var drawUnderlay = function drawUnderlay() { - if (!shouldDrawOverlay) { - return; - } - - r.drawEdgeUnderlay(context, edge); - }; - - var drawArrows = function drawArrows() { - var arrowOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveArrowOpacity; - r.drawArrowheads(context, edge, arrowOpacity); - }; - - var drawText = function drawText() { - r.drawElementText(context, edge, null, drawLabel); - }; - - context.lineJoin = 'round'; - var ghost = edge.pstyle('ghost').value === 'yes'; - - if (ghost) { - var gx = edge.pstyle('ghost-offset-x').pfValue; - var gy = edge.pstyle('ghost-offset-y').pfValue; - var ghostOpacity = edge.pstyle('ghost-opacity').value; - var effectiveGhostOpacity = effectiveLineOpacity * ghostOpacity; - context.translate(gx, gy); - drawLine(effectiveGhostOpacity); - drawArrows(effectiveGhostOpacity); - context.translate(-gx, -gy); - } - - drawUnderlay(); - drawLine(); - drawArrows(); - drawOverlay(); - drawText(); - - if (shiftToOriginWithBb) { - context.translate(bb.x1, bb.y1); - } -}; - -var drawEdgeOverlayUnderlay = function drawEdgeOverlayUnderlay(overlayOrUnderlay) { - if (!['overlay', 'underlay'].includes(overlayOrUnderlay)) { - throw new Error('Invalid state'); - } - - return function (context, edge) { - if (!edge.visible()) { - return; - } - - var opacity = edge.pstyle("".concat(overlayOrUnderlay, "-opacity")).value; - - if (opacity === 0) { - return; - } - - var r = this; - var usePaths = r.usePaths(); - var rs = edge._private.rscratch; - var padding = edge.pstyle("".concat(overlayOrUnderlay, "-padding")).pfValue; - var width = 2 * padding; - var color = edge.pstyle("".concat(overlayOrUnderlay, "-color")).value; - context.lineWidth = width; - - if (rs.edgeType === 'self' && !usePaths) { - context.lineCap = 'butt'; - } else { - context.lineCap = 'round'; - } - - r.colorStrokeStyle(context, color[0], color[1], color[2], opacity); - r.drawEdgePath(edge, context, rs.allpts, 'solid'); - }; -}; - -CRp$2.drawEdgeOverlay = drawEdgeOverlayUnderlay('overlay'); -CRp$2.drawEdgeUnderlay = drawEdgeOverlayUnderlay('underlay'); - -CRp$2.drawEdgePath = function (edge, context, pts, type) { - var rs = edge._private.rscratch; - var canvasCxt = context; - var path; - var pathCacheHit = false; - var usePaths = this.usePaths(); - var lineDashPattern = edge.pstyle('line-dash-pattern').pfValue; - var lineDashOffset = edge.pstyle('line-dash-offset').pfValue; - - if (usePaths) { - var pathCacheKey = pts.join('$'); - var keyMatches = rs.pathCacheKey && rs.pathCacheKey === pathCacheKey; - - if (keyMatches) { - path = context = rs.pathCache; - pathCacheHit = true; - } else { - path = context = new Path2D(); - rs.pathCacheKey = pathCacheKey; - rs.pathCache = path; - } - } - - if (canvasCxt.setLineDash) { - // for very outofdate browsers - switch (type) { - case 'dotted': - canvasCxt.setLineDash([1, 1]); - break; - - case 'dashed': - canvasCxt.setLineDash(lineDashPattern); - canvasCxt.lineDashOffset = lineDashOffset; - break; - - case 'solid': - canvasCxt.setLineDash([]); - break; - } - } - - if (!pathCacheHit && !rs.badLine) { - if (context.beginPath) { - context.beginPath(); - } - - context.moveTo(pts[0], pts[1]); - - switch (rs.edgeType) { - case 'bezier': - case 'self': - case 'compound': - case 'multibezier': - for (var i = 2; i + 3 < pts.length; i += 4) { - context.quadraticCurveTo(pts[i], pts[i + 1], pts[i + 2], pts[i + 3]); - } - - break; - - case 'straight': - case 'segments': - case 'haystack': - for (var _i = 2; _i + 1 < pts.length; _i += 2) { - context.lineTo(pts[_i], pts[_i + 1]); - } - - break; - } - } - - context = canvasCxt; - - if (usePaths) { - context.stroke(path); - } else { - context.stroke(); - } // reset any line dashes - - - if (context.setLineDash) { - // for very outofdate browsers - context.setLineDash([]); - } -}; - -CRp$2.drawEdgeTrianglePath = function (edge, context, pts) { - // use line stroke style for triangle fill style - context.fillStyle = context.strokeStyle; - var edgeWidth = edge.pstyle('width').pfValue; - - for (var i = 0; i + 1 < pts.length; i += 2) { - var vector = [pts[i + 2] - pts[i], pts[i + 3] - pts[i + 1]]; - var length = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]); - var normal = [vector[1] / length, -vector[0] / length]; - var triangleHead = [normal[0] * edgeWidth / 2, normal[1] * edgeWidth / 2]; - context.beginPath(); - context.moveTo(pts[i] - triangleHead[0], pts[i + 1] - triangleHead[1]); - context.lineTo(pts[i] + triangleHead[0], pts[i + 1] + triangleHead[1]); - context.lineTo(pts[i + 2], pts[i + 3]); - context.closePath(); - context.fill(); - } -}; - -CRp$2.drawArrowheads = function (context, edge, opacity) { - var rs = edge._private.rscratch; - var isHaystack = rs.edgeType === 'haystack'; - - if (!isHaystack) { - this.drawArrowhead(context, edge, 'source', rs.arrowStartX, rs.arrowStartY, rs.srcArrowAngle, opacity); - } - - this.drawArrowhead(context, edge, 'mid-target', rs.midX, rs.midY, rs.midtgtArrowAngle, opacity); - this.drawArrowhead(context, edge, 'mid-source', rs.midX, rs.midY, rs.midsrcArrowAngle, opacity); - - if (!isHaystack) { - this.drawArrowhead(context, edge, 'target', rs.arrowEndX, rs.arrowEndY, rs.tgtArrowAngle, opacity); - } -}; - -CRp$2.drawArrowhead = function (context, edge, prefix, x, y, angle, opacity) { - if (isNaN(x) || x == null || isNaN(y) || y == null || isNaN(angle) || angle == null) { - return; - } - - var self = this; - var arrowShape = edge.pstyle(prefix + '-arrow-shape').value; - - if (arrowShape === 'none') { - return; - } - - var arrowClearFill = edge.pstyle(prefix + '-arrow-fill').value === 'hollow' ? 'both' : 'filled'; - var arrowFill = edge.pstyle(prefix + '-arrow-fill').value; - var edgeWidth = edge.pstyle('width').pfValue; - var edgeOpacity = edge.pstyle('opacity').value; - - if (opacity === undefined) { - opacity = edgeOpacity; - } - - var gco = context.globalCompositeOperation; - - if (opacity !== 1 || arrowFill === 'hollow') { - // then extra clear is needed - context.globalCompositeOperation = 'destination-out'; - self.colorFillStyle(context, 255, 255, 255, 1); - self.colorStrokeStyle(context, 255, 255, 255, 1); - self.drawArrowShape(edge, context, arrowClearFill, edgeWidth, arrowShape, x, y, angle); - context.globalCompositeOperation = gco; - } // otherwise, the opaque arrow clears it for free :) - - - var color = edge.pstyle(prefix + '-arrow-color').value; - self.colorFillStyle(context, color[0], color[1], color[2], opacity); - self.colorStrokeStyle(context, color[0], color[1], color[2], opacity); - self.drawArrowShape(edge, context, arrowFill, edgeWidth, arrowShape, x, y, angle); -}; - -CRp$2.drawArrowShape = function (edge, context, fill, edgeWidth, shape, x, y, angle) { - var r = this; - var usePaths = this.usePaths() && shape !== 'triangle-cross'; - var pathCacheHit = false; - var path; - var canvasContext = context; - var translation = { - x: x, - y: y - }; - var scale = edge.pstyle('arrow-scale').value; - var size = this.getArrowWidth(edgeWidth, scale); - var shapeImpl = r.arrowShapes[shape]; - - if (usePaths) { - var cache = r.arrowPathCache = r.arrowPathCache || []; - var key = hashString(shape); - var cachedPath = cache[key]; - - if (cachedPath != null) { - path = context = cachedPath; - pathCacheHit = true; - } else { - path = context = new Path2D(); - cache[key] = path; - } - } - - if (!pathCacheHit) { - if (context.beginPath) { - context.beginPath(); - } - - if (usePaths) { - // store in the path cache with values easily manipulated later - shapeImpl.draw(context, 1, 0, { - x: 0, - y: 0 - }, 1); - } else { - shapeImpl.draw(context, size, angle, translation, edgeWidth); - } - - if (context.closePath) { - context.closePath(); - } - } - - context = canvasContext; - - if (usePaths) { - // set transform to arrow position/orientation - context.translate(x, y); - context.rotate(angle); - context.scale(size, size); - } - - if (fill === 'filled' || fill === 'both') { - if (usePaths) { - context.fill(path); - } else { - context.fill(); - } - } - - if (fill === 'hollow' || fill === 'both') { - context.lineWidth = (shapeImpl.matchEdgeWidth ? edgeWidth : 1) / (usePaths ? size : 1); - context.lineJoin = 'miter'; - - if (usePaths) { - context.stroke(path); - } else { - context.stroke(); - } - } - - if (usePaths) { - // reset transform by applying inverse - context.scale(1 / size, 1 / size); - context.rotate(-angle); - context.translate(-x, -y); - } -}; - -var CRp$3 = {}; - -CRp$3.safeDrawImage = function (context, img, ix, iy, iw, ih, x, y, w, h) { - // detect problematic cases for old browsers with bad images (cheaper than try-catch) - if (iw <= 0 || ih <= 0 || w <= 0 || h <= 0) { - return; - } - - context.drawImage(img, ix, iy, iw, ih, x, y, w, h); -}; - -CRp$3.drawInscribedImage = function (context, img, node, index, nodeOpacity) { - var r = this; - var pos = node.position(); - var nodeX = pos.x; - var nodeY = pos.y; - var styleObj = node.cy().style(); - var getIndexedStyle = styleObj.getIndexedStyle.bind(styleObj); - var fit = getIndexedStyle(node, 'background-fit', 'value', index); - var repeat = getIndexedStyle(node, 'background-repeat', 'value', index); - var nodeW = node.width(); - var nodeH = node.height(); - var paddingX2 = node.padding() * 2; - var nodeTW = nodeW + (getIndexedStyle(node, 'background-width-relative-to', 'value', index) === 'inner' ? 0 : paddingX2); - var nodeTH = nodeH + (getIndexedStyle(node, 'background-height-relative-to', 'value', index) === 'inner' ? 0 : paddingX2); - var rs = node._private.rscratch; - var clip = getIndexedStyle(node, 'background-clip', 'value', index); - var shouldClip = clip === 'node'; - var imgOpacity = getIndexedStyle(node, 'background-image-opacity', 'value', index) * nodeOpacity; - var smooth = getIndexedStyle(node, 'background-image-smoothing', 'value', index); - var imgW = img.width || img.cachedW; - var imgH = img.height || img.cachedH; // workaround for broken browsers like ie - - if (null == imgW || null == imgH) { - document.body.appendChild(img); // eslint-disable-line no-undef - - imgW = img.cachedW = img.width || img.offsetWidth; - imgH = img.cachedH = img.height || img.offsetHeight; - document.body.removeChild(img); // eslint-disable-line no-undef - } - - var w = imgW; - var h = imgH; - - if (getIndexedStyle(node, 'background-width', 'value', index) !== 'auto') { - if (getIndexedStyle(node, 'background-width', 'units', index) === '%') { - w = getIndexedStyle(node, 'background-width', 'pfValue', index) * nodeTW; - } else { - w = getIndexedStyle(node, 'background-width', 'pfValue', index); - } - } - - if (getIndexedStyle(node, 'background-height', 'value', index) !== 'auto') { - if (getIndexedStyle(node, 'background-height', 'units', index) === '%') { - h = getIndexedStyle(node, 'background-height', 'pfValue', index) * nodeTH; - } else { - h = getIndexedStyle(node, 'background-height', 'pfValue', index); - } - } - - if (w === 0 || h === 0) { - return; // no point in drawing empty image (and chrome is broken in this case) - } - - if (fit === 'contain') { - var scale = Math.min(nodeTW / w, nodeTH / h); - w *= scale; - h *= scale; - } else if (fit === 'cover') { - var scale = Math.max(nodeTW / w, nodeTH / h); - w *= scale; - h *= scale; - } - - var x = nodeX - nodeTW / 2; // left - - var posXUnits = getIndexedStyle(node, 'background-position-x', 'units', index); - var posXPfVal = getIndexedStyle(node, 'background-position-x', 'pfValue', index); - - if (posXUnits === '%') { - x += (nodeTW - w) * posXPfVal; - } else { - x += posXPfVal; - } - - var offXUnits = getIndexedStyle(node, 'background-offset-x', 'units', index); - var offXPfVal = getIndexedStyle(node, 'background-offset-x', 'pfValue', index); - - if (offXUnits === '%') { - x += (nodeTW - w) * offXPfVal; - } else { - x += offXPfVal; - } - - var y = nodeY - nodeTH / 2; // top - - var posYUnits = getIndexedStyle(node, 'background-position-y', 'units', index); - var posYPfVal = getIndexedStyle(node, 'background-position-y', 'pfValue', index); - - if (posYUnits === '%') { - y += (nodeTH - h) * posYPfVal; - } else { - y += posYPfVal; - } - - var offYUnits = getIndexedStyle(node, 'background-offset-y', 'units', index); - var offYPfVal = getIndexedStyle(node, 'background-offset-y', 'pfValue', index); - - if (offYUnits === '%') { - y += (nodeTH - h) * offYPfVal; - } else { - y += offYPfVal; - } - - if (rs.pathCache) { - x -= nodeX; - y -= nodeY; - nodeX = 0; - nodeY = 0; - } - - var gAlpha = context.globalAlpha; - context.globalAlpha = imgOpacity; - var smoothingEnabled = r.getImgSmoothing(context); - var isSmoothingSwitched = false; - - if (smooth === 'no' && smoothingEnabled) { - r.setImgSmoothing(context, false); - isSmoothingSwitched = true; - } else if (smooth === 'yes' && !smoothingEnabled) { - r.setImgSmoothing(context, true); - isSmoothingSwitched = true; - } - - if (repeat === 'no-repeat') { - if (shouldClip) { - context.save(); - - if (rs.pathCache) { - context.clip(rs.pathCache); - } else { - r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH); - context.clip(); - } - } - - r.safeDrawImage(context, img, 0, 0, imgW, imgH, x, y, w, h); - - if (shouldClip) { - context.restore(); - } - } else { - var pattern = context.createPattern(img, repeat); - context.fillStyle = pattern; - r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH); - context.translate(x, y); - context.fill(); - context.translate(-x, -y); - } - - context.globalAlpha = gAlpha; - - if (isSmoothingSwitched) { - r.setImgSmoothing(context, smoothingEnabled); - } -}; - -var CRp$4 = {}; - -CRp$4.eleTextBiggerThanMin = function (ele, scale) { - if (!scale) { - var zoom = ele.cy().zoom(); - var pxRatio = this.getPixelRatio(); - var lvl = Math.ceil(log2(zoom * pxRatio)); // the effective texture level - - scale = Math.pow(2, lvl); - } - - var computedSize = ele.pstyle('font-size').pfValue * scale; - var minSize = ele.pstyle('min-zoomed-font-size').pfValue; - - if (computedSize < minSize) { - return false; - } - - return true; -}; - -CRp$4.drawElementText = function (context, ele, shiftToOriginWithBb, force, prefix) { - var useEleOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; - var r = this; - - if (force == null) { - if (useEleOpacity && !r.eleTextBiggerThanMin(ele)) { - return; - } - } else if (force === false) { - return; - } - - if (ele.isNode()) { - var label = ele.pstyle('label'); - - if (!label || !label.value) { - return; - } - - var justification = r.getLabelJustification(ele); - context.textAlign = justification; - context.textBaseline = 'bottom'; - } else { - var badLine = ele.element()._private.rscratch.badLine; - - var _label = ele.pstyle('label'); - - var srcLabel = ele.pstyle('source-label'); - var tgtLabel = ele.pstyle('target-label'); - - if (badLine || (!_label || !_label.value) && (!srcLabel || !srcLabel.value) && (!tgtLabel || !tgtLabel.value)) { - return; - } - - context.textAlign = 'center'; - context.textBaseline = 'bottom'; - } - - var applyRotation = !shiftToOriginWithBb; - var bb; - - if (shiftToOriginWithBb) { - bb = shiftToOriginWithBb; - context.translate(-bb.x1, -bb.y1); - } - - if (prefix == null) { - r.drawText(context, ele, null, applyRotation, useEleOpacity); - - if (ele.isEdge()) { - r.drawText(context, ele, 'source', applyRotation, useEleOpacity); - r.drawText(context, ele, 'target', applyRotation, useEleOpacity); - } - } else { - r.drawText(context, ele, prefix, applyRotation, useEleOpacity); - } - - if (shiftToOriginWithBb) { - context.translate(bb.x1, bb.y1); - } -}; - -CRp$4.getFontCache = function (context) { - var cache; - this.fontCaches = this.fontCaches || []; - - for (var i = 0; i < this.fontCaches.length; i++) { - cache = this.fontCaches[i]; - - if (cache.context === context) { - return cache; - } - } - - cache = { - context: context - }; - this.fontCaches.push(cache); - return cache; -}; // set up canvas context with font -// returns transformed text string - - -CRp$4.setupTextStyle = function (context, ele) { - var useEleOpacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; - // Font style - var labelStyle = ele.pstyle('font-style').strValue; - var labelSize = ele.pstyle('font-size').pfValue + 'px'; - var labelFamily = ele.pstyle('font-family').strValue; - var labelWeight = ele.pstyle('font-weight').strValue; - var opacity = useEleOpacity ? ele.effectiveOpacity() * ele.pstyle('text-opacity').value : 1; - var outlineOpacity = ele.pstyle('text-outline-opacity').value * opacity; - var color = ele.pstyle('color').value; - var outlineColor = ele.pstyle('text-outline-color').value; - context.font = labelStyle + ' ' + labelWeight + ' ' + labelSize + ' ' + labelFamily; - context.lineJoin = 'round'; // so text outlines aren't jagged - - this.colorFillStyle(context, color[0], color[1], color[2], opacity); - this.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], outlineOpacity); -}; // TODO ensure re-used - - -function roundRect(ctx, x, y, width, height) { - var radius = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 5; - ctx.beginPath(); - ctx.moveTo(x + radius, y); - ctx.lineTo(x + width - radius, y); - ctx.quadraticCurveTo(x + width, y, x + width, y + radius); - ctx.lineTo(x + width, y + height - radius); - ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); - ctx.lineTo(x + radius, y + height); - ctx.quadraticCurveTo(x, y + height, x, y + height - radius); - ctx.lineTo(x, y + radius); - ctx.quadraticCurveTo(x, y, x + radius, y); - ctx.closePath(); - ctx.fill(); -} - -CRp$4.getTextAngle = function (ele, prefix) { - var theta; - var _p = ele._private; - var rscratch = _p.rscratch; - var pdash = prefix ? prefix + '-' : ''; - var rotation = ele.pstyle(pdash + 'text-rotation'); - var textAngle = getPrefixedProperty(rscratch, 'labelAngle', prefix); - - if (rotation.strValue === 'autorotate') { - theta = ele.isEdge() ? textAngle : 0; - } else if (rotation.strValue === 'none') { - theta = 0; - } else { - theta = rotation.pfValue; - } - - return theta; -}; - -CRp$4.drawText = function (context, ele, prefix) { - var applyRotation = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - var useEleOpacity = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; - var _p = ele._private; - var rscratch = _p.rscratch; - var parentOpacity = useEleOpacity ? ele.effectiveOpacity() : 1; - - if (useEleOpacity && (parentOpacity === 0 || ele.pstyle('text-opacity').value === 0)) { - return; - } // use 'main' as an alias for the main label (i.e. null prefix) - - - if (prefix === 'main') { - prefix = null; - } - - var textX = getPrefixedProperty(rscratch, 'labelX', prefix); - var textY = getPrefixedProperty(rscratch, 'labelY', prefix); - var orgTextX, orgTextY; // used for rotation - - var text = this.getLabelText(ele, prefix); - - if (text != null && text !== '' && !isNaN(textX) && !isNaN(textY)) { - this.setupTextStyle(context, ele, useEleOpacity); - var pdash = prefix ? prefix + '-' : ''; - var textW = getPrefixedProperty(rscratch, 'labelWidth', prefix); - var textH = getPrefixedProperty(rscratch, 'labelHeight', prefix); - var marginX = ele.pstyle(pdash + 'text-margin-x').pfValue; - var marginY = ele.pstyle(pdash + 'text-margin-y').pfValue; - var isEdge = ele.isEdge(); - var halign = ele.pstyle('text-halign').value; - var valign = ele.pstyle('text-valign').value; - - if (isEdge) { - halign = 'center'; - valign = 'center'; - } - - textX += marginX; - textY += marginY; - var theta; - - if (!applyRotation) { - theta = 0; - } else { - theta = this.getTextAngle(ele, prefix); - } - - if (theta !== 0) { - orgTextX = textX; - orgTextY = textY; - context.translate(orgTextX, orgTextY); - context.rotate(theta); - textX = 0; - textY = 0; - } - - switch (valign) { - case 'top': - break; - - case 'center': - textY += textH / 2; - break; - - case 'bottom': - textY += textH; - break; - } - - var backgroundOpacity = ele.pstyle('text-background-opacity').value; - var borderOpacity = ele.pstyle('text-border-opacity').value; - var textBorderWidth = ele.pstyle('text-border-width').pfValue; - var backgroundPadding = ele.pstyle('text-background-padding').pfValue; - - if (backgroundOpacity > 0 || textBorderWidth > 0 && borderOpacity > 0) { - var bgX = textX - backgroundPadding; - - switch (halign) { - case 'left': - bgX -= textW; - break; - - case 'center': - bgX -= textW / 2; - break; - } - - var bgY = textY - textH - backgroundPadding; - var bgW = textW + 2 * backgroundPadding; - var bgH = textH + 2 * backgroundPadding; - - if (backgroundOpacity > 0) { - var textFill = context.fillStyle; - var textBackgroundColor = ele.pstyle('text-background-color').value; - context.fillStyle = 'rgba(' + textBackgroundColor[0] + ',' + textBackgroundColor[1] + ',' + textBackgroundColor[2] + ',' + backgroundOpacity * parentOpacity + ')'; - var styleShape = ele.pstyle('text-background-shape').strValue; - - if (styleShape.indexOf('round') === 0) { - roundRect(context, bgX, bgY, bgW, bgH, 2); - } else { - context.fillRect(bgX, bgY, bgW, bgH); - } - - context.fillStyle = textFill; - } - - if (textBorderWidth > 0 && borderOpacity > 0) { - var textStroke = context.strokeStyle; - var textLineWidth = context.lineWidth; - var textBorderColor = ele.pstyle('text-border-color').value; - var textBorderStyle = ele.pstyle('text-border-style').value; - context.strokeStyle = 'rgba(' + textBorderColor[0] + ',' + textBorderColor[1] + ',' + textBorderColor[2] + ',' + borderOpacity * parentOpacity + ')'; - context.lineWidth = textBorderWidth; - - if (context.setLineDash) { - // for very outofdate browsers - switch (textBorderStyle) { - case 'dotted': - context.setLineDash([1, 1]); - break; - - case 'dashed': - context.setLineDash([4, 2]); - break; - - case 'double': - context.lineWidth = textBorderWidth / 4; // 50% reserved for white between the two borders - - context.setLineDash([]); - break; - - case 'solid': - context.setLineDash([]); - break; - } - } - - context.strokeRect(bgX, bgY, bgW, bgH); - - if (textBorderStyle === 'double') { - var whiteWidth = textBorderWidth / 2; - context.strokeRect(bgX + whiteWidth, bgY + whiteWidth, bgW - whiteWidth * 2, bgH - whiteWidth * 2); - } - - if (context.setLineDash) { - // for very outofdate browsers - context.setLineDash([]); - } - - context.lineWidth = textLineWidth; - context.strokeStyle = textStroke; - } - } - - var lineWidth = 2 * ele.pstyle('text-outline-width').pfValue; // *2 b/c the stroke is drawn centred on the middle - - if (lineWidth > 0) { - context.lineWidth = lineWidth; - } - - if (ele.pstyle('text-wrap').value === 'wrap') { - var lines = getPrefixedProperty(rscratch, 'labelWrapCachedLines', prefix); - var lineHeight = getPrefixedProperty(rscratch, 'labelLineHeight', prefix); - var halfTextW = textW / 2; - var justification = this.getLabelJustification(ele); - - if (justification === 'auto') ; else if (halign === 'left') { - // auto justification : right - if (justification === 'left') { - textX += -textW; - } else if (justification === 'center') { - textX += -halfTextW; - } // else same as auto - - } else if (halign === 'center') { - // auto justfication : center - if (justification === 'left') { - textX += -halfTextW; - } else if (justification === 'right') { - textX += halfTextW; - } // else same as auto - - } else if (halign === 'right') { - // auto justification : left - if (justification === 'center') { - textX += halfTextW; - } else if (justification === 'right') { - textX += textW; - } // else same as auto - - } - - switch (valign) { - case 'top': - textY -= (lines.length - 1) * lineHeight; - break; - - case 'center': - case 'bottom': - textY -= (lines.length - 1) * lineHeight; - break; - } - - for (var l = 0; l < lines.length; l++) { - if (lineWidth > 0) { - context.strokeText(lines[l], textX, textY); - } - - context.fillText(lines[l], textX, textY); - textY += lineHeight; - } - } else { - if (lineWidth > 0) { - context.strokeText(text, textX, textY); - } - - context.fillText(text, textX, textY); - } - - if (theta !== 0) { - context.rotate(-theta); - context.translate(-orgTextX, -orgTextY); - } - } -}; - -/* global Path2D */ -var CRp$5 = {}; - -CRp$5.drawNode = function (context, node, shiftToOriginWithBb) { - var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; - var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; - var r = this; - var nodeWidth, nodeHeight; - var _p = node._private; - var rs = _p.rscratch; - var pos = node.position(); - - if (!number(pos.x) || !number(pos.y)) { - return; // can't draw node with undefined position - } - - if (shouldDrawOpacity && !node.visible()) { - return; - } - - var eleOpacity = shouldDrawOpacity ? node.effectiveOpacity() : 1; - var usePaths = r.usePaths(); - var path; - var pathCacheHit = false; - var padding = node.padding(); - nodeWidth = node.width() + 2 * padding; - nodeHeight = node.height() + 2 * padding; // - // setup shift - - var bb; - - if (shiftToOriginWithBb) { - bb = shiftToOriginWithBb; - context.translate(-bb.x1, -bb.y1); - } // - // load bg image - - - var bgImgProp = node.pstyle('background-image'); - var urls = bgImgProp.value; - var urlDefined = new Array(urls.length); - var image = new Array(urls.length); - var numImages = 0; - - for (var i = 0; i < urls.length; i++) { - var url = urls[i]; - var defd = urlDefined[i] = url != null && url !== 'none'; - - if (defd) { - var bgImgCrossOrigin = node.cy().style().getIndexedStyle(node, 'background-image-crossorigin', 'value', i); - numImages++; // get image, and if not loaded then ask to redraw when later loaded - - image[i] = r.getCachedImage(url, bgImgCrossOrigin, function () { - _p.backgroundTimestamp = Date.now(); - node.emitAndNotify('background'); - }); - } - } // - // setup styles - - - var darkness = node.pstyle('background-blacken').value; - var borderWidth = node.pstyle('border-width').pfValue; - var bgOpacity = node.pstyle('background-opacity').value * eleOpacity; - var borderColor = node.pstyle('border-color').value; - var borderStyle = node.pstyle('border-style').value; - var borderOpacity = node.pstyle('border-opacity').value * eleOpacity; - context.lineJoin = 'miter'; // so borders are square with the node shape - - var setupShapeColor = function setupShapeColor() { - var bgOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : bgOpacity; - r.eleFillStyle(context, node, bgOpy); - }; - - var setupBorderColor = function setupBorderColor() { - var bdrOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : borderOpacity; - r.colorStrokeStyle(context, borderColor[0], borderColor[1], borderColor[2], bdrOpy); - }; // - // setup shape - - - var styleShape = node.pstyle('shape').strValue; - var shapePts = node.pstyle('shape-polygon-points').pfValue; - - if (usePaths) { - context.translate(pos.x, pos.y); - var pathCache = r.nodePathCache = r.nodePathCache || []; - var key = hashStrings(styleShape === 'polygon' ? styleShape + ',' + shapePts.join(',') : styleShape, '' + nodeHeight, '' + nodeWidth); - var cachedPath = pathCache[key]; - - if (cachedPath != null) { - path = cachedPath; - pathCacheHit = true; - rs.pathCache = path; - } else { - path = new Path2D(); - pathCache[key] = rs.pathCache = path; - } - } - - var drawShape = function drawShape() { - if (!pathCacheHit) { - var npos = pos; - - if (usePaths) { - npos = { - x: 0, - y: 0 - }; - } - - r.nodeShapes[r.getNodeShape(node)].draw(path || context, npos.x, npos.y, nodeWidth, nodeHeight); - } - - if (usePaths) { - context.fill(path); - } else { - context.fill(); - } - }; - - var drawImages = function drawImages() { - var nodeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity; - var inside = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - var prevBging = _p.backgrounding; - var totalCompleted = 0; - - for (var _i = 0; _i < image.length; _i++) { - var bgContainment = node.cy().style().getIndexedStyle(node, 'background-image-containment', 'value', _i); - - if (inside && bgContainment === 'over' || !inside && bgContainment === 'inside') { - totalCompleted++; - continue; - } - - if (urlDefined[_i] && image[_i].complete && !image[_i].error) { - totalCompleted++; - r.drawInscribedImage(context, image[_i], node, _i, nodeOpacity); - } - } - - _p.backgrounding = !(totalCompleted === numImages); - - if (prevBging !== _p.backgrounding) { - // update style b/c :backgrounding state changed - node.updateStyle(false); - } - }; - - var drawPie = function drawPie() { - var redrawShape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var pieOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : eleOpacity; - - if (r.hasPie(node)) { - r.drawPie(context, node, pieOpacity); // redraw/restore path if steps after pie need it - - if (redrawShape) { - if (!usePaths) { - r.nodeShapes[r.getNodeShape(node)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight); - } - } - } - }; - - var darken = function darken() { - var darkenOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity; - var opacity = (darkness > 0 ? darkness : -darkness) * darkenOpacity; - var c = darkness > 0 ? 0 : 255; - - if (darkness !== 0) { - r.colorFillStyle(context, c, c, c, opacity); - - if (usePaths) { - context.fill(path); - } else { - context.fill(); - } - } - }; - - var drawBorder = function drawBorder() { - if (borderWidth > 0) { - context.lineWidth = borderWidth; - context.lineCap = 'butt'; - - if (context.setLineDash) { - // for very outofdate browsers - switch (borderStyle) { - case 'dotted': - context.setLineDash([1, 1]); - break; - - case 'dashed': - context.setLineDash([4, 2]); - break; - - case 'solid': - case 'double': - context.setLineDash([]); - break; - } - } - - if (usePaths) { - context.stroke(path); - } else { - context.stroke(); - } - - if (borderStyle === 'double') { - context.lineWidth = borderWidth / 3; - var gco = context.globalCompositeOperation; - context.globalCompositeOperation = 'destination-out'; - - if (usePaths) { - context.stroke(path); - } else { - context.stroke(); - } - - context.globalCompositeOperation = gco; - } // reset in case we changed the border style - - - if (context.setLineDash) { - // for very outofdate browsers - context.setLineDash([]); - } - } - }; - - var drawOverlay = function drawOverlay() { - if (shouldDrawOverlay) { - r.drawNodeOverlay(context, node, pos, nodeWidth, nodeHeight); - } - }; - - var drawUnderlay = function drawUnderlay() { - if (shouldDrawOverlay) { - r.drawNodeUnderlay(context, node, pos, nodeWidth, nodeHeight); - } - }; - - var drawText = function drawText() { - r.drawElementText(context, node, null, drawLabel); - }; - - var ghost = node.pstyle('ghost').value === 'yes'; - - if (ghost) { - var gx = node.pstyle('ghost-offset-x').pfValue; - var gy = node.pstyle('ghost-offset-y').pfValue; - var ghostOpacity = node.pstyle('ghost-opacity').value; - var effGhostOpacity = ghostOpacity * eleOpacity; - context.translate(gx, gy); - setupShapeColor(ghostOpacity * bgOpacity); - drawShape(); - drawImages(effGhostOpacity, true); - setupBorderColor(ghostOpacity * borderOpacity); - drawBorder(); - drawPie(darkness !== 0 || borderWidth !== 0); - drawImages(effGhostOpacity, false); - darken(effGhostOpacity); - context.translate(-gx, -gy); - } - - if (usePaths) { - context.translate(-pos.x, -pos.y); - } - - drawUnderlay(); - - if (usePaths) { - context.translate(pos.x, pos.y); - } - - setupShapeColor(); - drawShape(); - drawImages(eleOpacity, true); - setupBorderColor(); - drawBorder(); - drawPie(darkness !== 0 || borderWidth !== 0); - drawImages(eleOpacity, false); - darken(); - - if (usePaths) { - context.translate(-pos.x, -pos.y); - } - - drawText(); - drawOverlay(); // - // clean up shift - - if (shiftToOriginWithBb) { - context.translate(bb.x1, bb.y1); - } -}; - -var drawNodeOverlayUnderlay = function drawNodeOverlayUnderlay(overlayOrUnderlay) { - if (!['overlay', 'underlay'].includes(overlayOrUnderlay)) { - throw new Error('Invalid state'); - } - - return function (context, node, pos, nodeWidth, nodeHeight) { - var r = this; - - if (!node.visible()) { - return; - } - - var padding = node.pstyle("".concat(overlayOrUnderlay, "-padding")).pfValue; - var opacity = node.pstyle("".concat(overlayOrUnderlay, "-opacity")).value; - var color = node.pstyle("".concat(overlayOrUnderlay, "-color")).value; - var shape = node.pstyle("".concat(overlayOrUnderlay, "-shape")).value; - - if (opacity > 0) { - pos = pos || node.position(); - - if (nodeWidth == null || nodeHeight == null) { - var _padding = node.padding(); - - nodeWidth = node.width() + 2 * _padding; - nodeHeight = node.height() + 2 * _padding; - } - - r.colorFillStyle(context, color[0], color[1], color[2], opacity); - r.nodeShapes[shape].draw(context, pos.x, pos.y, nodeWidth + padding * 2, nodeHeight + padding * 2); - context.fill(); - } - }; -}; - -CRp$5.drawNodeOverlay = drawNodeOverlayUnderlay('overlay'); -CRp$5.drawNodeUnderlay = drawNodeOverlayUnderlay('underlay'); // does the node have at least one pie piece? - -CRp$5.hasPie = function (node) { - node = node[0]; // ensure ele ref - - return node._private.hasPie; -}; - -CRp$5.drawPie = function (context, node, nodeOpacity, pos) { - node = node[0]; // ensure ele ref - - pos = pos || node.position(); - var cyStyle = node.cy().style(); - var pieSize = node.pstyle('pie-size'); - var x = pos.x; - var y = pos.y; - var nodeW = node.width(); - var nodeH = node.height(); - var radius = Math.min(nodeW, nodeH) / 2; // must fit in node - - var lastPercent = 0; // what % to continue drawing pie slices from on [0, 1] - - var usePaths = this.usePaths(); - - if (usePaths) { - x = 0; - y = 0; - } - - if (pieSize.units === '%') { - radius = radius * pieSize.pfValue; - } else if (pieSize.pfValue !== undefined) { - radius = pieSize.pfValue / 2; - } - - for (var i = 1; i <= cyStyle.pieBackgroundN; i++) { - // 1..N - var size = node.pstyle('pie-' + i + '-background-size').value; - var color = node.pstyle('pie-' + i + '-background-color').value; - var opacity = node.pstyle('pie-' + i + '-background-opacity').value * nodeOpacity; - var percent = size / 100; // map integer range [0, 100] to [0, 1] - // percent can't push beyond 1 - - if (percent + lastPercent > 1) { - percent = 1 - lastPercent; - } - - var angleStart = 1.5 * Math.PI + 2 * Math.PI * lastPercent; // start at 12 o'clock and go clockwise - - var angleDelta = 2 * Math.PI * percent; - var angleEnd = angleStart + angleDelta; // ignore if - // - zero size - // - we're already beyond the full circle - // - adding the current slice would go beyond the full circle - - if (size === 0 || lastPercent >= 1 || lastPercent + percent > 1) { - continue; - } - - context.beginPath(); - context.moveTo(x, y); - context.arc(x, y, radius, angleStart, angleEnd); - context.closePath(); - this.colorFillStyle(context, color[0], color[1], color[2], opacity); - context.fill(); - lastPercent += percent; - } -}; - -var CRp$6 = {}; -var motionBlurDelay = 100; // var isFirefox = typeof InstallTrigger !== 'undefined'; - -CRp$6.getPixelRatio = function () { - var context = this.data.contexts[0]; - - if (this.forcedPixelRatio != null) { - return this.forcedPixelRatio; - } - - var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1; - return (window.devicePixelRatio || 1) / backingStore; // eslint-disable-line no-undef -}; - -CRp$6.paintCache = function (context) { - var caches = this.paintCaches = this.paintCaches || []; - var needToCreateCache = true; - var cache; - - for (var i = 0; i < caches.length; i++) { - cache = caches[i]; - - if (cache.context === context) { - needToCreateCache = false; - break; - } - } - - if (needToCreateCache) { - cache = { - context: context - }; - caches.push(cache); - } - - return cache; -}; - -CRp$6.createGradientStyleFor = function (context, shapeStyleName, ele, fill, opacity) { - var gradientStyle; - var usePaths = this.usePaths(); - var colors = ele.pstyle(shapeStyleName + '-gradient-stop-colors').value, - positions = ele.pstyle(shapeStyleName + '-gradient-stop-positions').pfValue; - - if (fill === 'radial-gradient') { - if (ele.isEdge()) { - var start = ele.sourceEndpoint(), - end = ele.targetEndpoint(), - mid = ele.midpoint(); - var d1 = dist$1(start, mid); - var d2 = dist$1(end, mid); - gradientStyle = context.createRadialGradient(mid.x, mid.y, 0, mid.x, mid.y, Math.max(d1, d2)); - } else { - var pos = usePaths ? { - x: 0, - y: 0 - } : ele.position(), - width = ele.paddedWidth(), - height = ele.paddedHeight(); - gradientStyle = context.createRadialGradient(pos.x, pos.y, 0, pos.x, pos.y, Math.max(width, height)); - } - } else { - if (ele.isEdge()) { - var _start = ele.sourceEndpoint(), - _end = ele.targetEndpoint(); - - gradientStyle = context.createLinearGradient(_start.x, _start.y, _end.x, _end.y); - } else { - var _pos = usePaths ? { - x: 0, - y: 0 - } : ele.position(), - _width = ele.paddedWidth(), - _height = ele.paddedHeight(), - halfWidth = _width / 2, - halfHeight = _height / 2; - - var direction = ele.pstyle('background-gradient-direction').value; - - switch (direction) { - case 'to-bottom': - gradientStyle = context.createLinearGradient(_pos.x, _pos.y - halfHeight, _pos.x, _pos.y + halfHeight); - break; - - case 'to-top': - gradientStyle = context.createLinearGradient(_pos.x, _pos.y + halfHeight, _pos.x, _pos.y - halfHeight); - break; - - case 'to-left': - gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y, _pos.x - halfWidth, _pos.y); - break; - - case 'to-right': - gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y, _pos.x + halfWidth, _pos.y); - break; - - case 'to-bottom-right': - case 'to-right-bottom': - gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y - halfHeight, _pos.x + halfWidth, _pos.y + halfHeight); - break; - - case 'to-top-right': - case 'to-right-top': - gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y + halfHeight, _pos.x + halfWidth, _pos.y - halfHeight); - break; - - case 'to-bottom-left': - case 'to-left-bottom': - gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y - halfHeight, _pos.x - halfWidth, _pos.y + halfHeight); - break; - - case 'to-top-left': - case 'to-left-top': - gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y + halfHeight, _pos.x - halfWidth, _pos.y - halfHeight); - break; - } - } - } - - if (!gradientStyle) return null; // invalid gradient style - - var hasPositions = positions.length === colors.length; - var length = colors.length; - - for (var i = 0; i < length; i++) { - gradientStyle.addColorStop(hasPositions ? positions[i] : i / (length - 1), 'rgba(' + colors[i][0] + ',' + colors[i][1] + ',' + colors[i][2] + ',' + opacity + ')'); - } - - return gradientStyle; -}; - -CRp$6.gradientFillStyle = function (context, ele, fill, opacity) { - var gradientStyle = this.createGradientStyleFor(context, 'background', ele, fill, opacity); - if (!gradientStyle) return null; // error - - context.fillStyle = gradientStyle; -}; - -CRp$6.colorFillStyle = function (context, r, g, b, a) { - context.fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching - // var cache = this.paintCache(context); - // var fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; - // if( cache.fillStyle !== fillStyle ){ - // context.fillStyle = cache.fillStyle = fillStyle; - // } -}; - -CRp$6.eleFillStyle = function (context, ele, opacity) { - var backgroundFill = ele.pstyle('background-fill').value; - - if (backgroundFill === 'linear-gradient' || backgroundFill === 'radial-gradient') { - this.gradientFillStyle(context, ele, backgroundFill, opacity); - } else { - var backgroundColor = ele.pstyle('background-color').value; - this.colorFillStyle(context, backgroundColor[0], backgroundColor[1], backgroundColor[2], opacity); - } -}; - -CRp$6.gradientStrokeStyle = function (context, ele, fill, opacity) { - var gradientStyle = this.createGradientStyleFor(context, 'line', ele, fill, opacity); - if (!gradientStyle) return null; // error - - context.strokeStyle = gradientStyle; -}; - -CRp$6.colorStrokeStyle = function (context, r, g, b, a) { - context.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching - // var cache = this.paintCache(context); - // var strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; - // if( cache.strokeStyle !== strokeStyle ){ - // context.strokeStyle = cache.strokeStyle = strokeStyle; - // } -}; - -CRp$6.eleStrokeStyle = function (context, ele, opacity) { - var lineFill = ele.pstyle('line-fill').value; - - if (lineFill === 'linear-gradient' || lineFill === 'radial-gradient') { - this.gradientStrokeStyle(context, ele, lineFill, opacity); - } else { - var lineColor = ele.pstyle('line-color').value; - this.colorStrokeStyle(context, lineColor[0], lineColor[1], lineColor[2], opacity); - } -}; // Resize canvas - - -CRp$6.matchCanvasSize = function (container) { - var r = this; - var data = r.data; - var bb = r.findContainerClientCoords(); - var width = bb[2]; - var height = bb[3]; - var pixelRatio = r.getPixelRatio(); - var mbPxRatio = r.motionBlurPxRatio; - - if (container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE] || container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]) { - pixelRatio = mbPxRatio; - } - - var canvasWidth = width * pixelRatio; - var canvasHeight = height * pixelRatio; - var canvas; - - if (canvasWidth === r.canvasWidth && canvasHeight === r.canvasHeight) { - return; // save cycles if same - } - - r.fontCaches = null; // resizing resets the style - - var canvasContainer = data.canvasContainer; - canvasContainer.style.width = width + 'px'; - canvasContainer.style.height = height + 'px'; - - for (var i = 0; i < r.CANVAS_LAYERS; i++) { - canvas = data.canvases[i]; - canvas.width = canvasWidth; - canvas.height = canvasHeight; - canvas.style.width = width + 'px'; - canvas.style.height = height + 'px'; - } - - for (var i = 0; i < r.BUFFER_COUNT; i++) { - canvas = data.bufferCanvases[i]; - canvas.width = canvasWidth; - canvas.height = canvasHeight; - canvas.style.width = width + 'px'; - canvas.style.height = height + 'px'; - } - - r.textureMult = 1; - - if (pixelRatio <= 1) { - canvas = data.bufferCanvases[r.TEXTURE_BUFFER]; - r.textureMult = 2; - canvas.width = canvasWidth * r.textureMult; - canvas.height = canvasHeight * r.textureMult; - } - - r.canvasWidth = canvasWidth; - r.canvasHeight = canvasHeight; -}; - -CRp$6.renderTo = function (cxt, zoom, pan, pxRatio) { - this.render({ - forcedContext: cxt, - forcedZoom: zoom, - forcedPan: pan, - drawAllLayers: true, - forcedPxRatio: pxRatio - }); -}; - -CRp$6.render = function (options) { - options = options || staticEmptyObject(); - var forcedContext = options.forcedContext; - var drawAllLayers = options.drawAllLayers; - var drawOnlyNodeLayer = options.drawOnlyNodeLayer; - var forcedZoom = options.forcedZoom; - var forcedPan = options.forcedPan; - var r = this; - var pixelRatio = options.forcedPxRatio === undefined ? this.getPixelRatio() : options.forcedPxRatio; - var cy = r.cy; - var data = r.data; - var needDraw = data.canvasNeedsRedraw; - var textureDraw = r.textureOnViewport && !forcedContext && (r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming); - var motionBlur = options.motionBlur !== undefined ? options.motionBlur : r.motionBlur; - var mbPxRatio = r.motionBlurPxRatio; - var hasCompoundNodes = cy.hasCompoundNodes(); - var inNodeDragGesture = r.hoverData.draggingEles; - var inBoxSelection = r.hoverData.selecting || r.touchData.selecting ? true : false; - motionBlur = motionBlur && !forcedContext && r.motionBlurEnabled && !inBoxSelection; - var motionBlurFadeEffect = motionBlur; - - if (!forcedContext) { - if (r.prevPxRatio !== pixelRatio) { - r.invalidateContainerClientCoordsCache(); - r.matchCanvasSize(r.container); - r.redrawHint('eles', true); - r.redrawHint('drag', true); - } - - r.prevPxRatio = pixelRatio; - } - - if (!forcedContext && r.motionBlurTimeout) { - clearTimeout(r.motionBlurTimeout); - } - - if (motionBlur) { - if (r.mbFrames == null) { - r.mbFrames = 0; - } - - r.mbFrames++; - - if (r.mbFrames < 3) { - // need several frames before even high quality motionblur - motionBlurFadeEffect = false; - } // go to lower quality blurry frames when several m/b frames have been rendered (avoids flashing) - - - if (r.mbFrames > r.minMbLowQualFrames) { - //r.fullQualityMb = false; - r.motionBlurPxRatio = r.mbPxRBlurry; - } - } - - if (r.clearingMotionBlur) { - r.motionBlurPxRatio = 1; - } // b/c drawToContext() may be async w.r.t. redraw(), keep track of last texture frame - // because a rogue async texture frame would clear needDraw - - - if (r.textureDrawLastFrame && !textureDraw) { - needDraw[r.NODE] = true; - needDraw[r.SELECT_BOX] = true; - } - - var style = cy.style(); - var zoom = cy.zoom(); - var effectiveZoom = forcedZoom !== undefined ? forcedZoom : zoom; - var pan = cy.pan(); - var effectivePan = { - x: pan.x, - y: pan.y - }; - var vp = { - zoom: zoom, - pan: { - x: pan.x, - y: pan.y - } - }; - var prevVp = r.prevViewport; - var viewportIsDiff = prevVp === undefined || vp.zoom !== prevVp.zoom || vp.pan.x !== prevVp.pan.x || vp.pan.y !== prevVp.pan.y; // we want the low quality motionblur only when the viewport is being manipulated etc (where it's not noticed) - - if (!viewportIsDiff && !(inNodeDragGesture && !hasCompoundNodes)) { - r.motionBlurPxRatio = 1; - } - - if (forcedPan) { - effectivePan = forcedPan; - } // apply pixel ratio - - - effectiveZoom *= pixelRatio; - effectivePan.x *= pixelRatio; - effectivePan.y *= pixelRatio; - var eles = r.getCachedZSortedEles(); - - function mbclear(context, x, y, w, h) { - var gco = context.globalCompositeOperation; - context.globalCompositeOperation = 'destination-out'; - r.colorFillStyle(context, 255, 255, 255, r.motionBlurTransparency); - context.fillRect(x, y, w, h); - context.globalCompositeOperation = gco; - } - - function setContextTransform(context, clear) { - var ePan, eZoom, w, h; - - if (!r.clearingMotionBlur && (context === data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] || context === data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG])) { - ePan = { - x: pan.x * mbPxRatio, - y: pan.y * mbPxRatio - }; - eZoom = zoom * mbPxRatio; - w = r.canvasWidth * mbPxRatio; - h = r.canvasHeight * mbPxRatio; - } else { - ePan = effectivePan; - eZoom = effectiveZoom; - w = r.canvasWidth; - h = r.canvasHeight; - } - - context.setTransform(1, 0, 0, 1, 0, 0); - - if (clear === 'motionBlur') { - mbclear(context, 0, 0, w, h); - } else if (!forcedContext && (clear === undefined || clear)) { - context.clearRect(0, 0, w, h); - } - - if (!drawAllLayers) { - context.translate(ePan.x, ePan.y); - context.scale(eZoom, eZoom); - } - - if (forcedPan) { - context.translate(forcedPan.x, forcedPan.y); - } - - if (forcedZoom) { - context.scale(forcedZoom, forcedZoom); - } - } - - if (!textureDraw) { - r.textureDrawLastFrame = false; - } - - if (textureDraw) { - r.textureDrawLastFrame = true; - - if (!r.textureCache) { - r.textureCache = {}; - r.textureCache.bb = cy.mutableElements().boundingBox(); - r.textureCache.texture = r.data.bufferCanvases[r.TEXTURE_BUFFER]; - var cxt = r.data.bufferContexts[r.TEXTURE_BUFFER]; - cxt.setTransform(1, 0, 0, 1, 0, 0); - cxt.clearRect(0, 0, r.canvasWidth * r.textureMult, r.canvasHeight * r.textureMult); - r.render({ - forcedContext: cxt, - drawOnlyNodeLayer: true, - forcedPxRatio: pixelRatio * r.textureMult - }); - var vp = r.textureCache.viewport = { - zoom: cy.zoom(), - pan: cy.pan(), - width: r.canvasWidth, - height: r.canvasHeight - }; - vp.mpan = { - x: (0 - vp.pan.x) / vp.zoom, - y: (0 - vp.pan.y) / vp.zoom - }; - } - - needDraw[r.DRAG] = false; - needDraw[r.NODE] = false; - var context = data.contexts[r.NODE]; - var texture = r.textureCache.texture; - var vp = r.textureCache.viewport; - context.setTransform(1, 0, 0, 1, 0, 0); - - if (motionBlur) { - mbclear(context, 0, 0, vp.width, vp.height); - } else { - context.clearRect(0, 0, vp.width, vp.height); - } - - var outsideBgColor = style.core('outside-texture-bg-color').value; - var outsideBgOpacity = style.core('outside-texture-bg-opacity').value; - r.colorFillStyle(context, outsideBgColor[0], outsideBgColor[1], outsideBgColor[2], outsideBgOpacity); - context.fillRect(0, 0, vp.width, vp.height); - var zoom = cy.zoom(); - setContextTransform(context, false); - context.clearRect(vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio); - context.drawImage(texture, vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio); - } else if (r.textureOnViewport && !forcedContext) { - // clear the cache since we don't need it - r.textureCache = null; - } - - var extent = cy.extent(); - var vpManip = r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming || r.hoverData.draggingEles || r.cy.animated(); - var hideEdges = r.hideEdgesOnViewport && vpManip; - var needMbClear = []; - needMbClear[r.NODE] = !needDraw[r.NODE] && motionBlur && !r.clearedForMotionBlur[r.NODE] || r.clearingMotionBlur; - - if (needMbClear[r.NODE]) { - r.clearedForMotionBlur[r.NODE] = true; - } - - needMbClear[r.DRAG] = !needDraw[r.DRAG] && motionBlur && !r.clearedForMotionBlur[r.DRAG] || r.clearingMotionBlur; - - if (needMbClear[r.DRAG]) { - r.clearedForMotionBlur[r.DRAG] = true; - } - - if (needDraw[r.NODE] || drawAllLayers || drawOnlyNodeLayer || needMbClear[r.NODE]) { - var useBuffer = motionBlur && !needMbClear[r.NODE] && mbPxRatio !== 1; - var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] : data.contexts[r.NODE]); - var clear = motionBlur && !useBuffer ? 'motionBlur' : undefined; - setContextTransform(context, clear); - - if (hideEdges) { - r.drawCachedNodes(context, eles.nondrag, pixelRatio, extent); - } else { - r.drawLayeredElements(context, eles.nondrag, pixelRatio, extent); - } - - if (r.debug) { - r.drawDebugPoints(context, eles.nondrag); - } - - if (!drawAllLayers && !motionBlur) { - needDraw[r.NODE] = false; - } - } - - if (!drawOnlyNodeLayer && (needDraw[r.DRAG] || drawAllLayers || needMbClear[r.DRAG])) { - var useBuffer = motionBlur && !needMbClear[r.DRAG] && mbPxRatio !== 1; - var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG] : data.contexts[r.DRAG]); - setContextTransform(context, motionBlur && !useBuffer ? 'motionBlur' : undefined); - - if (hideEdges) { - r.drawCachedNodes(context, eles.drag, pixelRatio, extent); - } else { - r.drawCachedElements(context, eles.drag, pixelRatio, extent); - } - - if (r.debug) { - r.drawDebugPoints(context, eles.drag); - } - - if (!drawAllLayers && !motionBlur) { - needDraw[r.DRAG] = false; - } - } - - if (r.showFps || !drawOnlyNodeLayer && needDraw[r.SELECT_BOX] && !drawAllLayers) { - var context = forcedContext || data.contexts[r.SELECT_BOX]; - setContextTransform(context); - - if (r.selection[4] == 1 && (r.hoverData.selecting || r.touchData.selecting)) { - var zoom = r.cy.zoom(); - var borderWidth = style.core('selection-box-border-width').value / zoom; - context.lineWidth = borderWidth; - context.fillStyle = 'rgba(' + style.core('selection-box-color').value[0] + ',' + style.core('selection-box-color').value[1] + ',' + style.core('selection-box-color').value[2] + ',' + style.core('selection-box-opacity').value + ')'; - context.fillRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]); - - if (borderWidth > 0) { - context.strokeStyle = 'rgba(' + style.core('selection-box-border-color').value[0] + ',' + style.core('selection-box-border-color').value[1] + ',' + style.core('selection-box-border-color').value[2] + ',' + style.core('selection-box-opacity').value + ')'; - context.strokeRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]); - } - } - - if (data.bgActivePosistion && !r.hoverData.selecting) { - var zoom = r.cy.zoom(); - var pos = data.bgActivePosistion; - context.fillStyle = 'rgba(' + style.core('active-bg-color').value[0] + ',' + style.core('active-bg-color').value[1] + ',' + style.core('active-bg-color').value[2] + ',' + style.core('active-bg-opacity').value + ')'; - context.beginPath(); - context.arc(pos.x, pos.y, style.core('active-bg-size').pfValue / zoom, 0, 2 * Math.PI); - context.fill(); - } - - var timeToRender = r.lastRedrawTime; - - if (r.showFps && timeToRender) { - timeToRender = Math.round(timeToRender); - var fps = Math.round(1000 / timeToRender); - context.setTransform(1, 0, 0, 1, 0, 0); - context.fillStyle = 'rgba(255, 0, 0, 0.75)'; - context.strokeStyle = 'rgba(255, 0, 0, 0.75)'; - context.lineWidth = 1; - context.fillText('1 frame = ' + timeToRender + ' ms = ' + fps + ' fps', 0, 20); - var maxFps = 60; - context.strokeRect(0, 30, 250, 20); - context.fillRect(0, 30, 250 * Math.min(fps / maxFps, 1), 20); - } - - if (!drawAllLayers) { - needDraw[r.SELECT_BOX] = false; - } - } // motionblur: blit rendered blurry frames - - - if (motionBlur && mbPxRatio !== 1) { - var cxtNode = data.contexts[r.NODE]; - var txtNode = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE]; - var cxtDrag = data.contexts[r.DRAG]; - var txtDrag = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]; - - var drawMotionBlur = function drawMotionBlur(cxt, txt, needClear) { - cxt.setTransform(1, 0, 0, 1, 0, 0); - - if (needClear || !motionBlurFadeEffect) { - cxt.clearRect(0, 0, r.canvasWidth, r.canvasHeight); - } else { - mbclear(cxt, 0, 0, r.canvasWidth, r.canvasHeight); - } - - var pxr = mbPxRatio; - cxt.drawImage(txt, // img - 0, 0, // sx, sy - r.canvasWidth * pxr, r.canvasHeight * pxr, // sw, sh - 0, 0, // x, y - r.canvasWidth, r.canvasHeight // w, h - ); - }; - - if (needDraw[r.NODE] || needMbClear[r.NODE]) { - drawMotionBlur(cxtNode, txtNode, needMbClear[r.NODE]); - needDraw[r.NODE] = false; - } - - if (needDraw[r.DRAG] || needMbClear[r.DRAG]) { - drawMotionBlur(cxtDrag, txtDrag, needMbClear[r.DRAG]); - needDraw[r.DRAG] = false; - } - } - - r.prevViewport = vp; - - if (r.clearingMotionBlur) { - r.clearingMotionBlur = false; - r.motionBlurCleared = true; - r.motionBlur = true; - } - - if (motionBlur) { - r.motionBlurTimeout = setTimeout(function () { - r.motionBlurTimeout = null; - r.clearedForMotionBlur[r.NODE] = false; - r.clearedForMotionBlur[r.DRAG] = false; - r.motionBlur = false; - r.clearingMotionBlur = !textureDraw; - r.mbFrames = 0; - needDraw[r.NODE] = true; - needDraw[r.DRAG] = true; - r.redraw(); - }, motionBlurDelay); - } - - if (!forcedContext) { - cy.emit('render'); - } -}; - -var CRp$7 = {}; // @O Polygon drawing - -CRp$7.drawPolygonPath = function (context, x, y, width, height, points) { - var halfW = width / 2; - var halfH = height / 2; - - if (context.beginPath) { - context.beginPath(); - } - - context.moveTo(x + halfW * points[0], y + halfH * points[1]); - - for (var i = 1; i < points.length / 2; i++) { - context.lineTo(x + halfW * points[i * 2], y + halfH * points[i * 2 + 1]); - } - - context.closePath(); -}; - -CRp$7.drawRoundPolygonPath = function (context, x, y, width, height, points) { - var halfW = width / 2; - var halfH = height / 2; - var cornerRadius = getRoundPolygonRadius(width, height); - - if (context.beginPath) { - context.beginPath(); - } - - for (var _i = 0; _i < points.length / 4; _i++) { - var sourceUv = void 0, - destUv = void 0; - - if (_i === 0) { - sourceUv = points.length - 2; - } else { - sourceUv = _i * 4 - 2; - } - - destUv = _i * 4 + 2; - var px = x + halfW * points[_i * 4]; - var py = y + halfH * points[_i * 4 + 1]; - var cosTheta = -points[sourceUv] * points[destUv] - points[sourceUv + 1] * points[destUv + 1]; - var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2); - var cp0x = px - offset * points[sourceUv]; - var cp0y = py - offset * points[sourceUv + 1]; - var cp1x = px + offset * points[destUv]; - var cp1y = py + offset * points[destUv + 1]; - - if (_i === 0) { - context.moveTo(cp0x, cp0y); - } else { - context.lineTo(cp0x, cp0y); - } - - context.arcTo(px, py, cp1x, cp1y, cornerRadius); - } - - context.closePath(); -}; // Round rectangle drawing - - -CRp$7.drawRoundRectanglePath = function (context, x, y, width, height) { - var halfWidth = width / 2; - var halfHeight = height / 2; - var cornerRadius = getRoundRectangleRadius(width, height); - - if (context.beginPath) { - context.beginPath(); - } // Start at top middle - - - context.moveTo(x, y - halfHeight); // Arc from middle top to right side - - context.arcTo(x + halfWidth, y - halfHeight, x + halfWidth, y, cornerRadius); // Arc from right side to bottom - - context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius); // Arc from bottom to left side - - context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius); // Arc from left side to topBorder - - context.arcTo(x - halfWidth, y - halfHeight, x, y - halfHeight, cornerRadius); // Join line - - context.lineTo(x, y - halfHeight); - context.closePath(); -}; - -CRp$7.drawBottomRoundRectanglePath = function (context, x, y, width, height) { - var halfWidth = width / 2; - var halfHeight = height / 2; - var cornerRadius = getRoundRectangleRadius(width, height); - - if (context.beginPath) { - context.beginPath(); - } // Start at top middle - - - context.moveTo(x, y - halfHeight); - context.lineTo(x + halfWidth, y - halfHeight); - context.lineTo(x + halfWidth, y); - context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius); - context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius); - context.lineTo(x - halfWidth, y - halfHeight); - context.lineTo(x, y - halfHeight); - context.closePath(); -}; - -CRp$7.drawCutRectanglePath = function (context, x, y, width, height) { - var halfWidth = width / 2; - var halfHeight = height / 2; - var cornerLength = getCutRectangleCornerLength(); - - if (context.beginPath) { - context.beginPath(); - } - - context.moveTo(x - halfWidth + cornerLength, y - halfHeight); - context.lineTo(x + halfWidth - cornerLength, y - halfHeight); - context.lineTo(x + halfWidth, y - halfHeight + cornerLength); - context.lineTo(x + halfWidth, y + halfHeight - cornerLength); - context.lineTo(x + halfWidth - cornerLength, y + halfHeight); - context.lineTo(x - halfWidth + cornerLength, y + halfHeight); - context.lineTo(x - halfWidth, y + halfHeight - cornerLength); - context.lineTo(x - halfWidth, y - halfHeight + cornerLength); - context.closePath(); -}; - -CRp$7.drawBarrelPath = function (context, x, y, width, height) { - var halfWidth = width / 2; - var halfHeight = height / 2; - var xBegin = x - halfWidth; - var xEnd = x + halfWidth; - var yBegin = y - halfHeight; - var yEnd = y + halfHeight; - var barrelCurveConstants = getBarrelCurveConstants(width, height); - var wOffset = barrelCurveConstants.widthOffset; - var hOffset = barrelCurveConstants.heightOffset; - var ctrlPtXOffset = barrelCurveConstants.ctrlPtOffsetPct * wOffset; - - if (context.beginPath) { - context.beginPath(); - } - - context.moveTo(xBegin, yBegin + hOffset); - context.lineTo(xBegin, yEnd - hOffset); - context.quadraticCurveTo(xBegin + ctrlPtXOffset, yEnd, xBegin + wOffset, yEnd); - context.lineTo(xEnd - wOffset, yEnd); - context.quadraticCurveTo(xEnd - ctrlPtXOffset, yEnd, xEnd, yEnd - hOffset); - context.lineTo(xEnd, yBegin + hOffset); - context.quadraticCurveTo(xEnd - ctrlPtXOffset, yBegin, xEnd - wOffset, yBegin); - context.lineTo(xBegin + wOffset, yBegin); - context.quadraticCurveTo(xBegin + ctrlPtXOffset, yBegin, xBegin, yBegin + hOffset); - context.closePath(); -}; - -var sin0 = Math.sin(0); -var cos0 = Math.cos(0); -var sin = {}; -var cos = {}; -var ellipseStepSize = Math.PI / 40; - -for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) { - sin[i] = Math.sin(i); - cos[i] = Math.cos(i); -} - -CRp$7.drawEllipsePath = function (context, centerX, centerY, width, height) { - if (context.beginPath) { - context.beginPath(); - } - - if (context.ellipse) { - context.ellipse(centerX, centerY, width / 2, height / 2, 0, 0, 2 * Math.PI); - } else { - var xPos, yPos; - var rw = width / 2; - var rh = height / 2; - - for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) { - xPos = centerX - rw * sin[i] * sin0 + rw * cos[i] * cos0; - yPos = centerY + rh * cos[i] * sin0 + rh * sin[i] * cos0; - - if (i === 0) { - context.moveTo(xPos, yPos); - } else { - context.lineTo(xPos, yPos); - } - } - } - - context.closePath(); -}; - -/* global atob, ArrayBuffer, Uint8Array, Blob */ -var CRp$8 = {}; - -CRp$8.createBuffer = function (w, h) { - var buffer = document.createElement('canvas'); // eslint-disable-line no-undef - - buffer.width = w; - buffer.height = h; - return [buffer, buffer.getContext('2d')]; -}; - -CRp$8.bufferCanvasImage = function (options) { - var cy = this.cy; - var eles = cy.mutableElements(); - var bb = eles.boundingBox(); - var ctrRect = this.findContainerClientCoords(); - var width = options.full ? Math.ceil(bb.w) : ctrRect[2]; - var height = options.full ? Math.ceil(bb.h) : ctrRect[3]; - var specdMaxDims = number(options.maxWidth) || number(options.maxHeight); - var pxRatio = this.getPixelRatio(); - var scale = 1; - - if (options.scale !== undefined) { - width *= options.scale; - height *= options.scale; - scale = options.scale; - } else if (specdMaxDims) { - var maxScaleW = Infinity; - var maxScaleH = Infinity; - - if (number(options.maxWidth)) { - maxScaleW = scale * options.maxWidth / width; - } - - if (number(options.maxHeight)) { - maxScaleH = scale * options.maxHeight / height; - } - - scale = Math.min(maxScaleW, maxScaleH); - width *= scale; - height *= scale; - } - - if (!specdMaxDims) { - width *= pxRatio; - height *= pxRatio; - scale *= pxRatio; - } - - var buffCanvas = document.createElement('canvas'); // eslint-disable-line no-undef - - buffCanvas.width = width; - buffCanvas.height = height; - buffCanvas.style.width = width + 'px'; - buffCanvas.style.height = height + 'px'; - var buffCxt = buffCanvas.getContext('2d'); // Rasterize the layers, but only if container has nonzero size - - if (width > 0 && height > 0) { - buffCxt.clearRect(0, 0, width, height); - buffCxt.globalCompositeOperation = 'source-over'; - var zsortedEles = this.getCachedZSortedEles(); - - if (options.full) { - // draw the full bounds of the graph - buffCxt.translate(-bb.x1 * scale, -bb.y1 * scale); - buffCxt.scale(scale, scale); - this.drawElements(buffCxt, zsortedEles); - buffCxt.scale(1 / scale, 1 / scale); - buffCxt.translate(bb.x1 * scale, bb.y1 * scale); - } else { - // draw the current view - var pan = cy.pan(); - var translation = { - x: pan.x * scale, - y: pan.y * scale - }; - scale *= cy.zoom(); - buffCxt.translate(translation.x, translation.y); - buffCxt.scale(scale, scale); - this.drawElements(buffCxt, zsortedEles); - buffCxt.scale(1 / scale, 1 / scale); - buffCxt.translate(-translation.x, -translation.y); - } // need to fill bg at end like this in order to fill cleared transparent pixels in jpgs - - - if (options.bg) { - buffCxt.globalCompositeOperation = 'destination-over'; - buffCxt.fillStyle = options.bg; - buffCxt.rect(0, 0, width, height); - buffCxt.fill(); - } - } - - return buffCanvas; -}; - -function b64ToBlob(b64, mimeType) { - var bytes = atob(b64); - var buff = new ArrayBuffer(bytes.length); - var buffUint8 = new Uint8Array(buff); - - for (var i = 0; i < bytes.length; i++) { - buffUint8[i] = bytes.charCodeAt(i); - } - - return new Blob([buff], { - type: mimeType - }); -} - -function b64UriToB64(b64uri) { - var i = b64uri.indexOf(','); - return b64uri.substr(i + 1); -} - -function output(options, canvas, mimeType) { - var getB64Uri = function getB64Uri() { - return canvas.toDataURL(mimeType, options.quality); - }; - - switch (options.output) { - case 'blob-promise': - return new Promise$1$1(function (resolve, reject) { - try { - canvas.toBlob(function (blob) { - if (blob != null) { - resolve(blob); - } else { - reject(new Error('`canvas.toBlob()` sent a null value in its callback')); - } - }, mimeType, options.quality); - } catch (err) { - reject(err); - } - }); - - case 'blob': - return b64ToBlob(b64UriToB64(getB64Uri()), mimeType); - - case 'base64': - return b64UriToB64(getB64Uri()); - - case 'base64uri': - default: - return getB64Uri(); - } -} - -CRp$8.png = function (options) { - return output(options, this.bufferCanvasImage(options), 'image/png'); -}; - -CRp$8.jpg = function (options) { - return output(options, this.bufferCanvasImage(options), 'image/jpeg'); -}; - -var CRp$9 = {}; - -CRp$9.nodeShapeImpl = function (name, context, centerX, centerY, width, height, points) { - switch (name) { - case 'ellipse': - return this.drawEllipsePath(context, centerX, centerY, width, height); - - case 'polygon': - return this.drawPolygonPath(context, centerX, centerY, width, height, points); - - case 'round-polygon': - return this.drawRoundPolygonPath(context, centerX, centerY, width, height, points); - - case 'roundrectangle': - case 'round-rectangle': - return this.drawRoundRectanglePath(context, centerX, centerY, width, height); - - case 'cutrectangle': - case 'cut-rectangle': - return this.drawCutRectanglePath(context, centerX, centerY, width, height); - - case 'bottomroundrectangle': - case 'bottom-round-rectangle': - return this.drawBottomRoundRectanglePath(context, centerX, centerY, width, height); - - case 'barrel': - return this.drawBarrelPath(context, centerX, centerY, width, height); - } -}; - -var CR = CanvasRenderer; -var CRp$a = CanvasRenderer.prototype; -CRp$a.CANVAS_LAYERS = 3; // - -CRp$a.SELECT_BOX = 0; -CRp$a.DRAG = 1; -CRp$a.NODE = 2; -CRp$a.BUFFER_COUNT = 3; // - -CRp$a.TEXTURE_BUFFER = 0; -CRp$a.MOTIONBLUR_BUFFER_NODE = 1; -CRp$a.MOTIONBLUR_BUFFER_DRAG = 2; - -function CanvasRenderer(options) { - var r = this; - r.data = { - canvases: new Array(CRp$a.CANVAS_LAYERS), - contexts: new Array(CRp$a.CANVAS_LAYERS), - canvasNeedsRedraw: new Array(CRp$a.CANVAS_LAYERS), - bufferCanvases: new Array(CRp$a.BUFFER_COUNT), - bufferContexts: new Array(CRp$a.CANVAS_LAYERS) - }; - var tapHlOffAttr = '-webkit-tap-highlight-color'; - var tapHlOffStyle = 'rgba(0,0,0,0)'; - r.data.canvasContainer = document.createElement('div'); // eslint-disable-line no-undef - - var containerStyle = r.data.canvasContainer.style; - r.data.canvasContainer.style[tapHlOffAttr] = tapHlOffStyle; - containerStyle.position = 'relative'; - containerStyle.zIndex = '0'; - containerStyle.overflow = 'hidden'; - var container = options.cy.container(); - container.appendChild(r.data.canvasContainer); - container.style[tapHlOffAttr] = tapHlOffStyle; - var styleMap = { - '-webkit-user-select': 'none', - '-moz-user-select': '-moz-none', - 'user-select': 'none', - '-webkit-tap-highlight-color': 'rgba(0,0,0,0)', - 'outline-style': 'none' - }; - - if (ms()) { - styleMap['-ms-touch-action'] = 'none'; - styleMap['touch-action'] = 'none'; - } - - for (var i = 0; i < CRp$a.CANVAS_LAYERS; i++) { - var canvas = r.data.canvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef - - r.data.contexts[i] = canvas.getContext('2d'); - Object.keys(styleMap).forEach(function (k) { - canvas.style[k] = styleMap[k]; - }); - canvas.style.position = 'absolute'; - canvas.setAttribute('data-id', 'layer' + i); - canvas.style.zIndex = String(CRp$a.CANVAS_LAYERS - i); - r.data.canvasContainer.appendChild(canvas); - r.data.canvasNeedsRedraw[i] = false; - } - - r.data.topCanvas = r.data.canvases[0]; - r.data.canvases[CRp$a.NODE].setAttribute('data-id', 'layer' + CRp$a.NODE + '-node'); - r.data.canvases[CRp$a.SELECT_BOX].setAttribute('data-id', 'layer' + CRp$a.SELECT_BOX + '-selectbox'); - r.data.canvases[CRp$a.DRAG].setAttribute('data-id', 'layer' + CRp$a.DRAG + '-drag'); - - for (var i = 0; i < CRp$a.BUFFER_COUNT; i++) { - r.data.bufferCanvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef - - r.data.bufferContexts[i] = r.data.bufferCanvases[i].getContext('2d'); - r.data.bufferCanvases[i].style.position = 'absolute'; - r.data.bufferCanvases[i].setAttribute('data-id', 'buffer' + i); - r.data.bufferCanvases[i].style.zIndex = String(-i - 1); - r.data.bufferCanvases[i].style.visibility = 'hidden'; //r.data.canvasContainer.appendChild(r.data.bufferCanvases[i]); - } - - r.pathsEnabled = true; - var emptyBb = makeBoundingBox(); - - var getBoxCenter = function getBoxCenter(bb) { - return { - x: (bb.x1 + bb.x2) / 2, - y: (bb.y1 + bb.y2) / 2 - }; - }; - - var getCenterOffset = function getCenterOffset(bb) { - return { - x: -bb.w / 2, - y: -bb.h / 2 - }; - }; - - var backgroundTimestampHasChanged = function backgroundTimestampHasChanged(ele) { - var _p = ele[0]._private; - var same = _p.oldBackgroundTimestamp === _p.backgroundTimestamp; - return !same; - }; - - var getStyleKey = function getStyleKey(ele) { - return ele[0]._private.nodeKey; - }; - - var getLabelKey = function getLabelKey(ele) { - return ele[0]._private.labelStyleKey; - }; - - var getSourceLabelKey = function getSourceLabelKey(ele) { - return ele[0]._private.sourceLabelStyleKey; - }; - - var getTargetLabelKey = function getTargetLabelKey(ele) { - return ele[0]._private.targetLabelStyleKey; - }; - - var drawElement = function drawElement(context, ele, bb, scaledLabelShown, useEleOpacity) { - return r.drawElement(context, ele, bb, false, false, useEleOpacity); - }; - - var drawLabel = function drawLabel(context, ele, bb, scaledLabelShown, useEleOpacity) { - return r.drawElementText(context, ele, bb, scaledLabelShown, 'main', useEleOpacity); - }; - - var drawSourceLabel = function drawSourceLabel(context, ele, bb, scaledLabelShown, useEleOpacity) { - return r.drawElementText(context, ele, bb, scaledLabelShown, 'source', useEleOpacity); - }; - - var drawTargetLabel = function drawTargetLabel(context, ele, bb, scaledLabelShown, useEleOpacity) { - return r.drawElementText(context, ele, bb, scaledLabelShown, 'target', useEleOpacity); - }; - - var getElementBox = function getElementBox(ele) { - ele.boundingBox(); - return ele[0]._private.bodyBounds; - }; - - var getLabelBox = function getLabelBox(ele) { - ele.boundingBox(); - return ele[0]._private.labelBounds.main || emptyBb; - }; - - var getSourceLabelBox = function getSourceLabelBox(ele) { - ele.boundingBox(); - return ele[0]._private.labelBounds.source || emptyBb; - }; - - var getTargetLabelBox = function getTargetLabelBox(ele) { - ele.boundingBox(); - return ele[0]._private.labelBounds.target || emptyBb; - }; - - var isLabelVisibleAtScale = function isLabelVisibleAtScale(ele, scaledLabelShown) { - return scaledLabelShown; - }; - - var getElementRotationPoint = function getElementRotationPoint(ele) { - return getBoxCenter(getElementBox(ele)); - }; - - var addTextMargin = function addTextMargin(prefix, pt, ele) { - var pre = prefix ? prefix + '-' : ''; - return { - x: pt.x + ele.pstyle(pre + 'text-margin-x').pfValue, - y: pt.y + ele.pstyle(pre + 'text-margin-y').pfValue - }; - }; - - var getRsPt = function getRsPt(ele, x, y) { - var rs = ele[0]._private.rscratch; - return { - x: rs[x], - y: rs[y] - }; - }; - - var getLabelRotationPoint = function getLabelRotationPoint(ele) { - return addTextMargin('', getRsPt(ele, 'labelX', 'labelY'), ele); - }; - - var getSourceLabelRotationPoint = function getSourceLabelRotationPoint(ele) { - return addTextMargin('source', getRsPt(ele, 'sourceLabelX', 'sourceLabelY'), ele); - }; - - var getTargetLabelRotationPoint = function getTargetLabelRotationPoint(ele) { - return addTextMargin('target', getRsPt(ele, 'targetLabelX', 'targetLabelY'), ele); - }; - - var getElementRotationOffset = function getElementRotationOffset(ele) { - return getCenterOffset(getElementBox(ele)); - }; - - var getSourceLabelRotationOffset = function getSourceLabelRotationOffset(ele) { - return getCenterOffset(getSourceLabelBox(ele)); - }; - - var getTargetLabelRotationOffset = function getTargetLabelRotationOffset(ele) { - return getCenterOffset(getTargetLabelBox(ele)); - }; - - var getLabelRotationOffset = function getLabelRotationOffset(ele) { - var bb = getLabelBox(ele); - var p = getCenterOffset(getLabelBox(ele)); - - if (ele.isNode()) { - switch (ele.pstyle('text-halign').value) { - case 'left': - p.x = -bb.w; - break; - - case 'right': - p.x = 0; - break; - } - - switch (ele.pstyle('text-valign').value) { - case 'top': - p.y = -bb.h; - break; - - case 'bottom': - p.y = 0; - break; - } - } - - return p; - }; - - var eleTxrCache = r.data.eleTxrCache = new ElementTextureCache(r, { - getKey: getStyleKey, - doesEleInvalidateKey: backgroundTimestampHasChanged, - drawElement: drawElement, - getBoundingBox: getElementBox, - getRotationPoint: getElementRotationPoint, - getRotationOffset: getElementRotationOffset, - allowEdgeTxrCaching: false, - allowParentTxrCaching: false - }); - var lblTxrCache = r.data.lblTxrCache = new ElementTextureCache(r, { - getKey: getLabelKey, - drawElement: drawLabel, - getBoundingBox: getLabelBox, - getRotationPoint: getLabelRotationPoint, - getRotationOffset: getLabelRotationOffset, - isVisible: isLabelVisibleAtScale - }); - var slbTxrCache = r.data.slbTxrCache = new ElementTextureCache(r, { - getKey: getSourceLabelKey, - drawElement: drawSourceLabel, - getBoundingBox: getSourceLabelBox, - getRotationPoint: getSourceLabelRotationPoint, - getRotationOffset: getSourceLabelRotationOffset, - isVisible: isLabelVisibleAtScale - }); - var tlbTxrCache = r.data.tlbTxrCache = new ElementTextureCache(r, { - getKey: getTargetLabelKey, - drawElement: drawTargetLabel, - getBoundingBox: getTargetLabelBox, - getRotationPoint: getTargetLabelRotationPoint, - getRotationOffset: getTargetLabelRotationOffset, - isVisible: isLabelVisibleAtScale - }); - var lyrTxrCache = r.data.lyrTxrCache = new LayeredTextureCache(r); - r.onUpdateEleCalcs(function invalidateTextureCaches(willDraw, eles) { - // each cache should check for sub-key diff to see that the update affects that cache particularly - eleTxrCache.invalidateElements(eles); - lblTxrCache.invalidateElements(eles); - slbTxrCache.invalidateElements(eles); - tlbTxrCache.invalidateElements(eles); // any change invalidates the layers - - lyrTxrCache.invalidateElements(eles); // update the old bg timestamp so diffs can be done in the ele txr caches - - for (var _i = 0; _i < eles.length; _i++) { - var _p = eles[_i]._private; - _p.oldBackgroundTimestamp = _p.backgroundTimestamp; - } - }); - - var refineInLayers = function refineInLayers(reqs) { - for (var i = 0; i < reqs.length; i++) { - lyrTxrCache.enqueueElementRefinement(reqs[i].ele); - } - }; - - eleTxrCache.onDequeue(refineInLayers); - lblTxrCache.onDequeue(refineInLayers); - slbTxrCache.onDequeue(refineInLayers); - tlbTxrCache.onDequeue(refineInLayers); -} - -CRp$a.redrawHint = function (group, bool) { - var r = this; - - switch (group) { - case 'eles': - r.data.canvasNeedsRedraw[CRp$a.NODE] = bool; - break; - - case 'drag': - r.data.canvasNeedsRedraw[CRp$a.DRAG] = bool; - break; - - case 'select': - r.data.canvasNeedsRedraw[CRp$a.SELECT_BOX] = bool; - break; - } -}; // whether to use Path2D caching for drawing - - -var pathsImpld = typeof Path2D !== 'undefined'; - -CRp$a.path2dEnabled = function (on) { - if (on === undefined) { - return this.pathsEnabled; - } - - this.pathsEnabled = on ? true : false; -}; - -CRp$a.usePaths = function () { - return pathsImpld && this.pathsEnabled; -}; - -CRp$a.setImgSmoothing = function (context, bool) { - if (context.imageSmoothingEnabled != null) { - context.imageSmoothingEnabled = bool; - } else { - context.webkitImageSmoothingEnabled = bool; - context.mozImageSmoothingEnabled = bool; - context.msImageSmoothingEnabled = bool; - } -}; - -CRp$a.getImgSmoothing = function (context) { - if (context.imageSmoothingEnabled != null) { - return context.imageSmoothingEnabled; - } else { - return context.webkitImageSmoothingEnabled || context.mozImageSmoothingEnabled || context.msImageSmoothingEnabled; - } -}; - -CRp$a.makeOffscreenCanvas = function (width, height) { - var canvas; - - if ((typeof OffscreenCanvas === "undefined" ? "undefined" : _typeof(OffscreenCanvas)) !== ( "undefined" )) { - canvas = new OffscreenCanvas(width, height); - } else { - canvas = document.createElement('canvas'); // eslint-disable-line no-undef - - canvas.width = width; - canvas.height = height; - } - - return canvas; -}; - -[CRp, CRp$1, CRp$2, CRp$3, CRp$4, CRp$5, CRp$6, CRp$7, CRp$8, CRp$9].forEach(function (props) { - extend(CRp$a, props); -}); - -var renderer = [{ - name: 'null', - impl: NullRenderer -}, { - name: 'base', - impl: BR -}, { - name: 'canvas', - impl: CR -}]; - -var incExts = [{ - type: 'layout', - extensions: layout$2 -}, { - type: 'renderer', - extensions: renderer -}]; - -var extensions = {}; // registered modules for extensions, indexed by name - -var modules = {}; - -function setExtension(type, name, registrant) { - var ext = registrant; - - var overrideErr = function overrideErr(field) { - warn('Can not register `' + name + '` for `' + type + '` since `' + field + '` already exists in the prototype and can not be overridden'); - }; - - if (type === 'core') { - if (Core.prototype[name]) { - return overrideErr(name); - } else { - Core.prototype[name] = registrant; - } - } else if (type === 'collection') { - if (Collection.prototype[name]) { - return overrideErr(name); - } else { - Collection.prototype[name] = registrant; - } - } else if (type === 'layout') { - // fill in missing layout functions in the prototype - var Layout = function Layout(options) { - this.options = options; - registrant.call(this, options); // make sure layout has _private for use w/ std apis like .on() - - if (!plainObject(this._private)) { - this._private = {}; - } - - this._private.cy = options.cy; - this._private.listeners = []; - this.createEmitter(); - }; - - var layoutProto = Layout.prototype = Object.create(registrant.prototype); - var optLayoutFns = []; - - for (var i = 0; i < optLayoutFns.length; i++) { - var fnName = optLayoutFns[i]; - - layoutProto[fnName] = layoutProto[fnName] || function () { - return this; - }; - } // either .start() or .run() is defined, so autogen the other - - - if (layoutProto.start && !layoutProto.run) { - layoutProto.run = function () { - this.start(); - return this; - }; - } else if (!layoutProto.start && layoutProto.run) { - layoutProto.start = function () { - this.run(); - return this; - }; - } - - var regStop = registrant.prototype.stop; - - layoutProto.stop = function () { - var opts = this.options; - - if (opts && opts.animate) { - var anis = this.animations; - - if (anis) { - for (var _i = 0; _i < anis.length; _i++) { - anis[_i].stop(); - } - } - } - - if (regStop) { - regStop.call(this); - } else { - this.emit('layoutstop'); - } - - return this; - }; - - if (!layoutProto.destroy) { - layoutProto.destroy = function () { - return this; - }; - } - - layoutProto.cy = function () { - return this._private.cy; - }; - - var getCy = function getCy(layout) { - return layout._private.cy; - }; - - var emitterOpts = { - addEventFields: function addEventFields(layout, evt) { - evt.layout = layout; - evt.cy = getCy(layout); - evt.target = layout; - }, - bubble: function bubble() { - return true; - }, - parent: function parent(layout) { - return getCy(layout); - } - }; - extend(layoutProto, { - createEmitter: function createEmitter() { - this._private.emitter = new Emitter(emitterOpts, this); - return this; - }, - emitter: function emitter() { - return this._private.emitter; - }, - on: function on(evt, cb) { - this.emitter().on(evt, cb); - return this; - }, - one: function one(evt, cb) { - this.emitter().one(evt, cb); - return this; - }, - once: function once(evt, cb) { - this.emitter().one(evt, cb); - return this; - }, - removeListener: function removeListener(evt, cb) { - this.emitter().removeListener(evt, cb); - return this; - }, - removeAllListeners: function removeAllListeners() { - this.emitter().removeAllListeners(); - return this; - }, - emit: function emit(evt, params) { - this.emitter().emit(evt, params); - return this; - } - }); - define$3.eventAliasesOn(layoutProto); - ext = Layout; // replace with our wrapped layout - } else if (type === 'renderer' && name !== 'null' && name !== 'base') { - // user registered renderers inherit from base - var BaseRenderer = getExtension('renderer', 'base'); - var bProto = BaseRenderer.prototype; - var RegistrantRenderer = registrant; - var rProto = registrant.prototype; - - var Renderer = function Renderer() { - BaseRenderer.apply(this, arguments); - RegistrantRenderer.apply(this, arguments); - }; - - var proto = Renderer.prototype; - - for (var pName in bProto) { - var pVal = bProto[pName]; - var existsInR = rProto[pName] != null; - - if (existsInR) { - return overrideErr(pName); - } - - proto[pName] = pVal; // take impl from base - } - - for (var _pName in rProto) { - proto[_pName] = rProto[_pName]; // take impl from registrant - } - - bProto.clientFunctions.forEach(function (name) { - proto[name] = proto[name] || function () { - error('Renderer does not implement `renderer.' + name + '()` on its prototype'); - }; - }); - ext = Renderer; - } - - return setMap({ - map: extensions, - keys: [type, name], - value: ext - }); -} - -function getExtension(type, name) { - return getMap({ - map: extensions, - keys: [type, name] - }); -} - -function setModule(type, name, moduleType, moduleName, registrant) { - return setMap({ - map: modules, - keys: [type, name, moduleType, moduleName], - value: registrant - }); -} - -function getModule(type, name, moduleType, moduleName) { - return getMap({ - map: modules, - keys: [type, name, moduleType, moduleName] - }); -} - -var extension$1 = function extension() { - // e.g. extension('renderer', 'svg') - if (arguments.length === 2) { - return getExtension.apply(null, arguments); - } // e.g. extension('renderer', 'svg', { ... }) - else if (arguments.length === 3) { - return setExtension.apply(null, arguments); - } // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse') - else if (arguments.length === 4) { - return getModule.apply(null, arguments); - } // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse', { ... }) - else if (arguments.length === 5) { - return setModule.apply(null, arguments); - } else { - error('Invalid extension access syntax'); - } -}; // allows a core instance to access extensions internally - - -Core.prototype.extension = extension$1; // included extensions - -incExts.forEach(function (group) { - group.extensions.forEach(function (ext) { - setExtension(group.type, ext.name, ext.impl); - }); -}); - -// (useful for init) - -var Stylesheet = function Stylesheet() { - if (!(this instanceof Stylesheet)) { - return new Stylesheet(); - } - - this.length = 0; -}; - -var sheetfn = Stylesheet.prototype; - -sheetfn.instanceString = function () { - return 'stylesheet'; -}; // just store the selector to be parsed later - - -sheetfn.selector = function (selector) { - var i = this.length++; - this[i] = { - selector: selector, - properties: [] - }; - return this; // chaining -}; // just store the property to be parsed later - - -sheetfn.css = function (name, value) { - var i = this.length - 1; - - if (string(name)) { - this[i].properties.push({ - name: name, - value: value - }); - } else if (plainObject(name)) { - var map = name; - var propNames = Object.keys(map); - - for (var j = 0; j < propNames.length; j++) { - var key = propNames[j]; - var mapVal = map[key]; - - if (mapVal == null) { - continue; - } - - var prop = Style.properties[key] || Style.properties[dash2camel(key)]; - - if (prop == null) { - continue; - } - - var _name = prop.name; - var _value = mapVal; - this[i].properties.push({ - name: _name, - value: _value - }); - } - } - - return this; // chaining -}; - -sheetfn.style = sheetfn.css; // generate a real style object from the dummy stylesheet - -sheetfn.generateStyle = function (cy) { - var style = new Style(cy); - return this.appendToStyle(style); -}; // append a dummy stylesheet object on a real style object - - -sheetfn.appendToStyle = function (style) { - for (var i = 0; i < this.length; i++) { - var context = this[i]; - var selector = context.selector; - var props = context.properties; - style.selector(selector); // apply selector - - for (var j = 0; j < props.length; j++) { - var prop = props[j]; - style.css(prop.name, prop.value); // apply property - } - } - - return style; -}; - -var version$2 = "3.20.0"; - -var cytoscape$1 = function cytoscape(options) { - // if no options specified, use default - if (options === undefined) { - options = {}; - } // create instance - - - if (plainObject(options)) { - return new Core(options); - } // allow for registration of extensions - else if (string(options)) { - return extension$1.apply(extension$1, arguments); - } -}; // e.g. cytoscape.use( require('cytoscape-foo'), bar ) - - -cytoscape$1.use = function (ext) { - var args = Array.prototype.slice.call(arguments, 1); // args to pass to ext - - args.unshift(cytoscape$1); // cytoscape is first arg to ext - - ext.apply(null, args); - return this; -}; - -cytoscape$1.warnings = function (bool) { - return warnings(bool); -}; // replaced by build system - - -cytoscape$1.version = version$2; // expose public apis (mostly for extensions) - -cytoscape$1.stylesheet = cytoscape$1.Stylesheet = Stylesheet; - -var cytoscape_cjs = cytoscape$1; - -// Material Design Icons v5.9.55 -var mdiAbTesting = "M4 2A2 2 0 0 0 2 4V12H4V8H6V12H8V4A2 2 0 0 0 6 2H4M4 4H6V6H4M22 15.5V14A2 2 0 0 0 20 12H16V22H20A2 2 0 0 0 22 20V18.5A1.54 1.54 0 0 0 20.5 17A1.54 1.54 0 0 0 22 15.5M20 20H18V18H20V20M20 16H18V14H20M5.79 21.61L4.21 20.39L18.21 2.39L19.79 3.61Z"; -var mdiAbacus = "M5 5H7V11H5V5M10 5H8V11H10V5M5 19H7V13H5V19M10 13H8V19H10V17H15V15H10V13M2 21H4V3H2V21M20 3V7H13V5H11V11H13V9H20V15H18V13H16V19H18V17H20V21H22V3H20Z"; -var mdiAbjadArabic = "M12 4C10.08 4 8.5 5.58 8.5 7.5C8.5 8.43 8.88 9.28 9.5 9.91C7.97 10.91 7 12.62 7 14.5C7 17.53 9.47 20 12.5 20C14.26 20 16 19.54 17.5 18.66L16.5 16.93C15.28 17.63 13.9 18 12.5 18C10.56 18 9 16.45 9 14.5C9 12.91 10.06 11.53 11.59 11.12L16.8 9.72L16.28 7.79L11.83 9C11.08 8.9 10.5 8.28 10.5 7.5C10.5 6.66 11.16 6 12 6C12.26 6 12.5 6.07 12.75 6.2L13.75 4.47C13.22 4.16 12.61 4 12 4Z"; -var mdiAbjadHebrew = "M3.9 4L9 10.03C7.58 10.17 6.36 11.18 6 12.59L4 20H6.07L7.92 13.11C8.09 12.46 8.69 12 9.36 12H10.69L17.47 20H20.1L15 13.97C16.42 13.83 17.64 12.82 18 11.41L20 4H17.93L16.08 10.89C15.91 11.54 15.31 12 14.64 12H13.31L6.53 4Z"; -var mdiAbugidaDevanagari = "M8 3V5H11C12.32 5 13.41 5.83 13.82 7H6V9H14V10H12C9.25 10 7 12.25 7 15C7 17.75 9.25 20 12 20C12.77 20 13.45 19.73 14 19.3V21H16V17H14C13.55 17.62 12.83 18 12 18C10.33 18 9 16.67 9 15C9 13.33 10.33 12 12 12H16V9H18V7H15.9C15.43 4.72 13.41 3 11 3H8Z"; -var mdiAbugidaThai = "M9 20C9 17.44 10.87 12.42 13.86 7.25C14.29 6.5 15.08 6 16 6C17.12 6 18 6.88 18 8V20H20V8C20 5.8 18.2 4 16 4C14.34 4 12.9 4.92 12.13 6.25C10.56 8.96 9.61 11.15 9 13.03V6.5C9 5.13 7.87 4 6.5 4C5.13 4 4 5.13 4 6.5C4 7.87 5.13 9 6.5 9C6.67 9 6.84 9 7 8.95V20M6.5 6C6.79 6 7 6.21 7 6.5C7 6.79 6.79 7 6.5 7C6.21 7 6 6.79 6 6.5C6 6.21 6.21 6 6.5 6Z"; -var mdiAccessPoint = "M4.93,4.93C3.12,6.74 2,9.24 2,12C2,14.76 3.12,17.26 4.93,19.07L6.34,17.66C4.89,16.22 4,14.22 4,12C4,9.79 4.89,7.78 6.34,6.34L4.93,4.93M19.07,4.93L17.66,6.34C19.11,7.78 20,9.79 20,12C20,14.22 19.11,16.22 17.66,17.66L19.07,19.07C20.88,17.26 22,14.76 22,12C22,9.24 20.88,6.74 19.07,4.93M7.76,7.76C6.67,8.85 6,10.35 6,12C6,13.65 6.67,15.15 7.76,16.24L9.17,14.83C8.45,14.11 8,13.11 8,12C8,10.89 8.45,9.89 9.17,9.17L7.76,7.76M16.24,7.76L14.83,9.17C15.55,9.89 16,10.89 16,12C16,13.11 15.55,14.11 14.83,14.83L16.24,16.24C17.33,15.15 18,13.65 18,12C18,10.35 17.33,8.85 16.24,7.76M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; -var mdiAccessPointCheck = "M20.59 14.84L21.75 16.25L17 21L14.25 18L15.41 16.84L17 18.43L20.59 14.84M19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12V12.34C20.68 12.59 21.33 12.96 21.88 13.43C21.95 12.96 22 12.5 22 12C22 9.24 20.88 6.74 19.07 4.93M15.96 12.36C16.6 12.13 17.28 12 18 12C18 10.35 17.33 8.85 16.24 7.76L14.83 9.17C15.55 9.89 16 10.89 16 12C16 12.12 15.97 12.24 15.96 12.36M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M6.34 6.34L4.93 4.93C3.12 6.74 2 9.24 2 12S3.12 17.26 4.93 19.07L6.34 17.66C4.89 16.22 4 14.22 4 12C4 9.79 4.89 7.78 6.34 6.34M7.76 7.76C6.67 8.85 6 10.35 6 12S6.67 15.15 7.76 16.24L9.17 14.83C8.45 14.11 8 13.11 8 12S8.45 9.89 9.17 9.17L7.76 7.76Z"; -var mdiAccessPointMinus = "M16 12C16 10.89 15.55 9.89 14.83 9.17L16.24 7.76C17.33 8.85 18 10.35 18 12C17.28 12 16.6 12.13 15.96 12.36C15.97 12.24 16 12.12 16 12M20 12.34C20.68 12.59 21.33 12.96 21.88 13.43C21.95 12.96 22 12.5 22 12C22 9.24 20.88 6.74 19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12C20 12.12 20 12.23 20 12.34M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M7.76 7.76C6.67 8.85 6 10.35 6 12S6.67 15.15 7.76 16.24L9.17 14.83C8.45 14.11 8 13.11 8 12S8.45 9.89 9.17 9.17L7.76 7.76M6.34 6.34L4.93 4.93C3.12 6.74 2 9.24 2 12S3.12 17.26 4.93 19.07L6.34 17.66C4.89 16.22 4 14.22 4 12C4 9.79 4.89 7.78 6.34 6.34M14 19H22V17H14V19Z"; -var mdiAccessPointNetwork = "M4.93,3.93C3.12,5.74 2,8.24 2,11C2,13.76 3.12,16.26 4.93,18.07L6.34,16.66C4.89,15.22 4,13.22 4,11C4,8.79 4.89,6.78 6.34,5.34L4.93,3.93M19.07,3.93L17.66,5.34C19.11,6.78 20,8.79 20,11C20,13.22 19.11,15.22 17.66,16.66L19.07,18.07C20.88,16.26 22,13.76 22,11C22,8.24 20.88,5.74 19.07,3.93M7.76,6.76C6.67,7.85 6,9.35 6,11C6,12.65 6.67,14.15 7.76,15.24L9.17,13.83C8.45,13.11 8,12.11 8,11C8,9.89 8.45,8.89 9.17,8.17L7.76,6.76M16.24,6.76L14.83,8.17C15.55,8.89 16,9.89 16,11C16,12.11 15.55,13.11 14.83,13.83L16.24,15.24C17.33,14.15 18,12.65 18,11C18,9.35 17.33,7.85 16.24,6.76M12,9A2,2 0 0,0 10,11A2,2 0 0,0 12,13A2,2 0 0,0 14,11A2,2 0 0,0 12,9M11,15V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V15H11Z"; -var mdiAccessPointNetworkOff = "M14.83,13.83C15.55,13.11 16,12.11 16,11C16,9.89 15.55,8.89 14.83,8.17L16.24,6.76C17.33,7.85 18,9.35 18,11C18,12.65 17.33,14.15 16.24,15.24L14.83,13.83M14,11A2,2 0 0,0 12,9C11.4,9 10.87,9.27 10.5,9.68L13.32,12.5C13.73,12.13 14,11.6 14,11M17.66,16.66L19.07,18.07C20.88,16.26 22,13.76 22,11C22,8.24 20.88,5.74 19.07,3.93L17.66,5.34C19.11,6.78 20,8.79 20,11C20,13.22 19.11,15.22 17.66,16.66M22,21.18V20H20.82L22,21.18M20.27,22L21,22.73L19.73,24L17.73,22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V15.27L8.34,12.61C8.54,13.07 8.82,13.5 9.17,13.83L7.76,15.24C6.67,14.15 6,12.65 6,11C6,10.77 6,10.54 6.04,10.31L4.37,8.64C4.14,9.39 4,10.18 4,11C4,13.22 4.89,15.22 6.34,16.66L4.93,18.07C3.12,16.26 2,13.76 2,11C2,9.61 2.29,8.28 2.81,7.08L1,5.27L2.28,4L3.7,5.42L5.15,6.87L6.63,8.35V8.35L8.17,9.9L10.28,12L11,12.71L18.27,20H18.28L20.28,22H20.27M15.73,20L13,17.27V19H14A1,1 0 0,1 15,20H15.73Z"; -var mdiAccessPointOff = "M20.84 22.73L12.1 14C12.06 14 12.03 14 12 14C10.9 14 10 13.11 10 12C10 11.97 10 11.94 10 11.9L8.4 10.29C8.15 10.81 8 11.38 8 12C8 13.11 8.45 14.11 9.17 14.83L7.76 16.24C6.67 15.15 6 13.65 6 12C6 10.83 6.34 9.74 6.93 8.82L5.5 7.37C4.55 8.67 4 10.27 4 12C4 14.22 4.89 16.22 6.34 17.66L4.93 19.07C3.12 17.26 2 14.76 2 12C2 9.72 2.77 7.63 4.06 5.95L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M15.93 12.73L17.53 14.33C17.83 13.61 18 12.83 18 12C18 10.35 17.33 8.85 16.24 7.76L14.83 9.17C15.55 9.89 16 10.89 16 12C16 12.25 15.97 12.5 15.93 12.73M19.03 15.83L20.5 17.28C21.44 15.75 22 13.94 22 12C22 9.24 20.88 6.74 19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12C20 13.39 19.65 14.7 19.03 15.83Z"; -var mdiAccessPointPlus = "M16 12C16 10.89 15.55 9.89 14.83 9.17L16.24 7.76C17.33 8.85 18 10.35 18 12C17.28 12 16.6 12.13 15.96 12.36C15.97 12.24 16 12.12 16 12M20 12.34C20.68 12.59 21.33 12.96 21.88 13.43C21.95 12.96 22 12.5 22 12C22 9.24 20.88 6.74 19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12C20 12.12 20 12.23 20 12.34M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M6.34 6.34L4.93 4.93C3.12 6.74 2 9.24 2 12S3.12 17.26 4.93 19.07L6.34 17.66C4.89 16.22 4 14.22 4 12C4 9.79 4.89 7.78 6.34 6.34M7.76 7.76C6.67 8.85 6 10.35 6 12S6.67 15.15 7.76 16.24L9.17 14.83C8.45 14.11 8 13.11 8 12S8.45 9.89 9.17 9.17L7.76 7.76M19 14H17V17H14V19H17V22H19V19H22V17H19V14Z"; -var mdiAccessPointRemove = "M16 12C16 10.89 15.55 9.89 14.83 9.17L16.24 7.76C17.33 8.85 18 10.35 18 12C17.28 12 16.6 12.13 15.96 12.36C15.97 12.24 16 12.12 16 12M6.34 6.34L4.93 4.93C3.12 6.74 2 9.24 2 12S3.12 17.26 4.93 19.07L6.34 17.66C4.89 16.22 4 14.22 4 12C4 9.79 4.89 7.78 6.34 6.34M19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12C20 12.12 20 12.23 20 12.34C20.68 12.59 21.33 12.96 21.88 13.43C21.95 12.96 22 12.5 22 12C22 9.24 20.88 6.74 19.07 4.93M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M7.76 7.76C6.67 8.85 6 10.35 6 12S6.67 15.15 7.76 16.24L9.17 14.83C8.45 14.11 8 13.11 8 12S8.45 9.89 9.17 9.17L7.76 7.76M20.12 14.46L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.53L18 19.41L20.12 21.53L21.53 20.12L19.41 18L21.53 15.88L20.12 14.46Z"; -var mdiAccount = "M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"; -var mdiAccountAlert = "M10 4A4 4 0 0 1 14 8A4 4 0 0 1 10 12A4 4 0 0 1 6 8A4 4 0 0 1 10 4M10 14C14.42 14 18 15.79 18 18V20H2V18C2 15.79 5.58 14 10 14M20 12V7H22V13H20M20 17V15H22V17H20Z"; -var mdiAccountAlertOutline = "M20 12V7H22V13H20M20 17H22V15H20M10 13C12.67 13 18 14.34 18 17V20H2V17C2 14.34 7.33 13 10 13M10 4A4 4 0 0 1 14 8A4 4 0 0 1 10 12A4 4 0 0 1 6 8A4 4 0 0 1 10 4M10 14.9C7.03 14.9 3.9 16.36 3.9 17V18.1H16.1V17C16.1 16.36 12.97 14.9 10 14.9M10 5.9A2.1 2.1 0 0 0 7.9 8A2.1 2.1 0 0 0 10 10.1A2.1 2.1 0 0 0 12.1 8A2.1 2.1 0 0 0 10 5.9Z"; -var mdiAccountArrowLeft = "M18,21L15,18L18,15V17H22V19H18V21M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,14C11.15,14 12.25,14.12 13.24,14.34C12.46,15.35 12,16.62 12,18C12,18.7 12.12,19.37 12.34,20H2V18C2,15.79 5.58,14 10,14Z"; -var mdiAccountArrowLeftOutline = "M18,21L15,18L18,15V17H22V19H18V21M13,18C13,18.71 13.15,19.39 13.42,20H2V17C2,14.79 5.58,13 10,13C11,13 11.96,13.09 12.85,13.26C13.68,13.42 14.44,13.64 15.11,13.92C13.83,14.83 13,16.32 13,18M4,17V18H11C11,16.96 11.23,15.97 11.64,15.08L10,15C6.69,15 4,15.9 4,17M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,6A2,2 0 0,0 8,8A2,2 0 0,0 10,10A2,2 0 0,0 12,8A2,2 0 0,0 10,6Z"; -var mdiAccountArrowRight = "M19,21V19H15V17H19V15L22,18L19,21M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,14C11.15,14 12.25,14.12 13.24,14.34C12.46,15.35 12,16.62 12,18C12,18.7 12.12,19.37 12.34,20H2V18C2,15.79 5.58,14 10,14Z"; -var mdiAccountArrowRightOutline = "M19,21V19H15V17H19V15L22,18L19,21M13,18C13,18.71 13.15,19.39 13.42,20H2V17C2,14.79 5.58,13 10,13C11,13 11.96,13.09 12.85,13.26C13.68,13.42 14.44,13.64 15.11,13.92C13.83,14.83 13,16.32 13,18M4,17V18H11C11,16.96 11.23,15.97 11.64,15.08L10,15C6.69,15 4,15.9 4,17M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,6A2,2 0 0,0 8,8A2,2 0 0,0 10,10A2,2 0 0,0 12,8A2,2 0 0,0 10,6Z"; -var mdiAccountBox = "M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9M3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5C3.89,3 3,3.9 3,5Z"; -var mdiAccountBoxMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H8A2,2 0 0,1 6,16V4A2,2 0 0,1 8,2H20M17,7A3,3 0 0,0 14,4A3,3 0 0,0 11,7A3,3 0 0,0 14,10A3,3 0 0,0 17,7M8,15V16H20V15C20,13 16,11.9 14,11.9C12,11.9 8,13 8,15Z"; -var mdiAccountBoxMultipleOutline = "M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6M18.5 14.25C18.5 12.75 15.5 12 14 12S9.5 12.75 9.5 14.25V15H18.5M14 10.25C15.24 10.25 16.25 9.24 16.25 8S15.24 5.75 14 5.75 11.75 6.76 11.75 8 12.76 10.25 14 10.25M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.89 21.1 2 20 2M20 16H8V4H20V16Z"; -var mdiAccountBoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z"; -var mdiAccountCancel = "M10 4A4 4 0 0 0 6 8A4 4 0 0 0 10 12A4 4 0 0 0 14 8A4 4 0 0 0 10 4M17.5 13C15 13 13 15 13 17.5C13 20 15 22 17.5 22C20 22 22 20 22 17.5C22 15 20 13 17.5 13M10 14C5.58 14 2 15.79 2 18V20H11.5A6.5 6.5 0 0 1 11 17.5A6.5 6.5 0 0 1 11.95 14.14C11.32 14.06 10.68 14 10 14M17.5 14.5C19.16 14.5 20.5 15.84 20.5 17.5C20.5 18.06 20.35 18.58 20.08 19L16 14.92C16.42 14.65 16.94 14.5 17.5 14.5M14.92 16L19 20.08C18.58 20.35 18.06 20.5 17.5 20.5C15.84 20.5 14.5 19.16 14.5 17.5C14.5 16.94 14.65 16.42 14.92 16Z"; -var mdiAccountCancelOutline = "M10 4A4 4 0 0 0 6 8A4 4 0 0 0 10 12A4 4 0 0 0 14 8A4 4 0 0 0 10 4M10 6A2 2 0 0 1 12 8A2 2 0 0 1 10 10A2 2 0 0 1 8 8A2 2 0 0 1 10 6M10 13C7.33 13 2 14.33 2 17V20H11.5A6.5 6.5 0 0 1 11.03 18.1H3.9V17C3.9 16.36 7.03 14.9 10 14.9C10.5 14.9 11 14.95 11.5 15.03A6.5 6.5 0 0 1 12.55 13.29C11.61 13.1 10.71 13 10 13M17.5 13C15 13 13 15 13 17.5C13 20 15 22 17.5 22C20 22 22 20 22 17.5C22 15 20 13 17.5 13M17.5 14.5C19.16 14.5 20.5 15.84 20.5 17.5C20.5 18.06 20.35 18.58 20.08 19L16 14.92C16.42 14.65 16.94 14.5 17.5 14.5M14.92 16L19 20.08C18.58 20.35 18.06 20.5 17.5 20.5C15.84 20.5 14.5 19.16 14.5 17.5C14.5 16.94 14.65 16.42 14.92 16Z"; -var mdiAccountCash = "M11 8C11 10.21 9.21 12 7 12C4.79 12 3 10.21 3 8C3 5.79 4.79 4 7 4C9.21 4 11 5.79 11 8M11 14.72V20H0V18C0 15.79 3.13 14 7 14C8.5 14 9.87 14.27 11 14.72M24 20H13V3H24V20M16 11.5C16 10.12 17.12 9 18.5 9C19.88 9 21 10.12 21 11.5C21 12.88 19.88 14 18.5 14C17.12 14 16 12.88 16 11.5M22 7C20.9 7 20 6.11 20 5H17C17 6.11 16.11 7 15 7V16C16.11 16 17 16.9 17 18H20C20 16.9 20.9 16 22 16V7Z"; -var mdiAccountCashOutline = "M16 11.5C16 10.12 17.12 9 18.5 9S21 10.12 21 11.5 19.88 14 18.5 14 16 12.88 16 11.5M13 3V20H24V3H13M22 16C20.9 16 20 16.9 20 18H17C17 16.9 16.11 16 15 16V7C16.11 7 17 6.11 17 5H20C20 6.11 20.9 7 22 7V16M7 6C8.1 6 9 6.9 9 8S8.1 10 7 10 5 9.1 5 8 5.9 6 7 6M7 4C4.79 4 3 5.79 3 8S4.79 12 7 12 11 10.21 11 8 9.21 4 7 4M7 14C3.13 14 0 15.79 0 18V20H11V18H2C2 17.42 3.75 16 7 16C8.83 16 10.17 16.45 11 16.95V14.72C9.87 14.27 8.5 14 7 14Z"; -var mdiAccountCheck = "M21.1,12.5L22.5,13.91L15.97,20.5L12.5,17L13.9,15.59L15.97,17.67L21.1,12.5M10,17L13,20H3V18C3,15.79 6.58,14 11,14L12.89,14.11L10,17M11,4A4,4 0 0,1 15,8A4,4 0 0,1 11,12A4,4 0 0,1 7,8A4,4 0 0,1 11,4Z"; -var mdiAccountCheckOutline = "M21.1,12.5L22.5,13.91L15.97,20.5L12.5,17L13.9,15.59L15.97,17.67L21.1,12.5M11,4A4,4 0 0,1 15,8A4,4 0 0,1 11,12A4,4 0 0,1 7,8A4,4 0 0,1 11,4M11,6A2,2 0 0,0 9,8A2,2 0 0,0 11,10A2,2 0 0,0 13,8A2,2 0 0,0 11,6M11,13C11.68,13 12.5,13.09 13.41,13.26L11.74,14.93L11,14.9C8.03,14.9 4.9,16.36 4.9,17V18.1H11.1L13,20H3V17C3,14.34 8.33,13 11,13Z"; -var mdiAccountChild = "M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M12,9C13.63,9 15.12,9.35 16.5,10.05C17.84,10.76 18.5,11.61 18.5,12.61V18.38C18.5,19.5 17.64,20.44 15.89,21.19V19C15.89,18.05 15.03,17.38 13.31,16.97C12.75,16.84 12.31,16.78 12,16.78C11.13,16.78 10.3,16.95 9.54,17.3C8.77,17.64 8.31,18.08 8.16,18.61C9.5,19.14 10.78,19.41 12,19.41L13,19.31V21.94L12,22C10.63,22 9.33,21.72 8.11,21.19C6.36,20.44 5.5,19.5 5.5,18.38V12.61C5.5,11.61 6.16,10.76 7.5,10.05C8.88,9.35 10.38,9 12,9M12,11A2,2 0 0,0 10,13A2,2 0 0,0 12,15A2,2 0 0,0 14,13A2,2 0 0,0 12,11Z"; -var mdiAccountChildCircle = "M12,12A1.5,1.5 0 0,1 13.5,13.5A1.5,1.5 0 0,1 12,15A1.5,1.5 0 0,1 10.5,13.5A1.5,1.5 0 0,1 12,12M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,16C12.72,16 13.4,16.15 14.04,16.5C14.68,16.8 15,17.2 15,17.67V19.41C16.34,18.81 17,18.08 17,17.2V12.8C17,12 16.5,11.35 15.45,10.8C14.4,10.26 13.25,10 12,10C10.75,10 9.6,10.26 8.55,10.8C7.5,11.35 7,12 7,12.8V17.2C7,18 7.53,18.69 8.63,19.22C9.72,19.75 10.84,20 12,20L13,19.92V17.91L12,18C11,18 10,17.8 9.05,17.39C9.17,17 9.53,16.69 10.13,16.41C10.72,16.13 11.34,16 12,16M12,4A2.5,2.5 0 0,0 9.5,6.5A2.5,2.5 0 0,0 12,9A2.5,2.5 0 0,0 14.5,6.5A2.5,2.5 0 0,0 12,4Z"; -var mdiAccountChildOutline = "M12 17C10.9 17 10 16.1 10 15C10 13.9 10.9 13 12 13C13.1 13 14 13.9 14 15C14 16.1 13.1 17 12 17M12 10C14.34 10 19 11.16 19 13.5V18.63C19 19.5 18.31 20.24 17.34 20.79V13.38C17.34 12.82 14.6 11.54 12 11.54C9.4 11.54 6.66 12.82 6.66 13.38V18.75C6.66 19 7.31 19.46 8.28 19.85C9 19 10.93 18.56 12 18.56C13.33 18.56 16 19.22 16 20.56V21.39C14.63 21.88 13.07 22.13 12 22.13C10.93 22.13 9.38 21.88 8 21.39H8C6.37 20.81 5 19.89 5 18.63V13.5C5 11.16 9.66 10 12 10M12 3.75C11.03 3.75 10.25 4.53 10.25 5.5C10.25 6.47 11.03 7.25 12 7.25C12.97 7.25 13.75 6.47 13.75 5.5C13.75 4.53 12.97 3.75 12 3.75M12 9C10.07 9 8.5 7.43 8.5 5.5C8.5 3.57 10.07 2 12 2C13.93 2 15.5 3.57 15.5 5.5C15.5 7.43 13.93 9 12 9Z"; -var mdiAccountCircle = "M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"; -var mdiAccountCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7.07,18.28C7.5,17.38 10.12,16.5 12,16.5C13.88,16.5 16.5,17.38 16.93,18.28C15.57,19.36 13.86,20 12,20C10.14,20 8.43,19.36 7.07,18.28M18.36,16.83C16.93,15.09 13.46,14.5 12,14.5C10.54,14.5 7.07,15.09 5.64,16.83C4.62,15.5 4,13.82 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,13.82 19.38,15.5 18.36,16.83M12,6C10.06,6 8.5,7.56 8.5,9.5C8.5,11.44 10.06,13 12,13C13.94,13 15.5,11.44 15.5,9.5C15.5,7.56 13.94,6 12,6M12,11A1.5,1.5 0 0,1 10.5,9.5A1.5,1.5 0 0,1 12,8A1.5,1.5 0 0,1 13.5,9.5A1.5,1.5 0 0,1 12,11Z"; -var mdiAccountClock = "M10.63,14.1C12.23,10.58 16.38,9.03 19.9,10.63C23.42,12.23 24.97,16.38 23.37,19.9C22.24,22.4 19.75,24 17,24C14.3,24 11.83,22.44 10.67,20H1V18C1.06,16.86 1.84,15.93 3.34,15.18C4.84,14.43 6.72,14.04 9,14C9.57,14 10.11,14.05 10.63,14.1V14.1M9,4C10.12,4.03 11.06,4.42 11.81,5.17C12.56,5.92 12.93,6.86 12.93,8C12.93,9.14 12.56,10.08 11.81,10.83C11.06,11.58 10.12,11.95 9,11.95C7.88,11.95 6.94,11.58 6.19,10.83C5.44,10.08 5.07,9.14 5.07,8C5.07,6.86 5.44,5.92 6.19,5.17C6.94,4.42 7.88,4.03 9,4M17,22A5,5 0 0,0 22,17A5,5 0 0,0 17,12A5,5 0 0,0 12,17A5,5 0 0,0 17,22M16,14H17.5V16.82L19.94,18.23L19.19,19.53L16,17.69V14Z"; -var mdiAccountClockOutline = "M16,14H17.5V16.82L19.94,18.23L19.19,19.53L16,17.69V14M17,12A5,5 0 0,0 12,17A5,5 0 0,0 17,22A5,5 0 0,0 22,17A5,5 0 0,0 17,12M17,10A7,7 0 0,1 24,17A7,7 0 0,1 17,24C14.21,24 11.8,22.36 10.67,20H1V17C1,14.34 6.33,13 9,13C9.6,13 10.34,13.07 11.12,13.2C12.36,11.28 14.53,10 17,10M10,17C10,16.3 10.1,15.62 10.29,15C9.87,14.93 9.43,14.9 9,14.9C6.03,14.9 2.9,16.36 2.9,17V18.1H10.09C10.03,17.74 10,17.37 10,17M9,4A4,4 0 0,1 13,8A4,4 0 0,1 9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4M9,5.9A2.1,2.1 0 0,0 6.9,8A2.1,2.1 0 0,0 9,10.1A2.1,2.1 0 0,0 11.1,8A2.1,2.1 0 0,0 9,5.9Z"; -var mdiAccountCog = "M10 4A4 4 0 0 0 6 8A4 4 0 0 0 10 12A4 4 0 0 0 14 8A4 4 0 0 0 10 4M17 12C16.87 12 16.76 12.09 16.74 12.21L16.55 13.53C16.25 13.66 15.96 13.82 15.7 14L14.46 13.5C14.35 13.5 14.22 13.5 14.15 13.63L13.15 15.36C13.09 15.47 13.11 15.6 13.21 15.68L14.27 16.5C14.25 16.67 14.24 16.83 14.24 17C14.24 17.17 14.25 17.33 14.27 17.5L13.21 18.32C13.12 18.4 13.09 18.53 13.15 18.64L14.15 20.37C14.21 20.5 14.34 20.5 14.46 20.5L15.7 20C15.96 20.18 16.24 20.35 16.55 20.47L16.74 21.79C16.76 21.91 16.86 22 17 22H19C19.11 22 19.22 21.91 19.24 21.79L19.43 20.47C19.73 20.34 20 20.18 20.27 20L21.5 20.5C21.63 20.5 21.76 20.5 21.83 20.37L22.83 18.64C22.89 18.53 22.86 18.4 22.77 18.32L21.7 17.5C21.72 17.33 21.74 17.17 21.74 17C21.74 16.83 21.73 16.67 21.7 16.5L22.76 15.68C22.85 15.6 22.88 15.47 22.82 15.36L21.82 13.63C21.76 13.5 21.63 13.5 21.5 13.5L20.27 14C20 13.82 19.73 13.65 19.42 13.53L19.23 12.21C19.22 12.09 19.11 12 19 12H17M10 14C5.58 14 2 15.79 2 18V20H11.68A7 7 0 0 1 11 17A7 7 0 0 1 11.64 14.09C11.11 14.03 10.56 14 10 14M18 15.5C18.83 15.5 19.5 16.17 19.5 17C19.5 17.83 18.83 18.5 18 18.5C17.16 18.5 16.5 17.83 16.5 17C16.5 16.17 17.17 15.5 18 15.5Z"; -var mdiAccountCogOutline = "M10 4A4 4 0 0 0 6 8A4 4 0 0 0 10 12A4 4 0 0 0 14 8A4 4 0 0 0 10 4M10 6A2 2 0 0 1 12 8A2 2 0 0 1 10 10A2 2 0 0 1 8 8A2 2 0 0 1 10 6M17 12C16.84 12 16.76 12.08 16.76 12.24L16.5 13.5C16.28 13.68 15.96 13.84 15.72 14L14.44 13.5C14.36 13.5 14.2 13.5 14.12 13.6L13.16 15.36C13.08 15.44 13.08 15.6 13.24 15.68L14.28 16.5V17.5L13.24 18.32C13.16 18.4 13.08 18.56 13.16 18.64L14.12 20.4C14.2 20.5 14.36 20.5 14.44 20.5L15.72 20C15.96 20.16 16.28 20.32 16.5 20.5L16.76 21.76C16.76 21.92 16.84 22 17 22H19C19.08 22 19.24 21.92 19.24 21.76L19.4 20.5C19.72 20.32 20.04 20.16 20.28 20L21.5 20.5C21.64 20.5 21.8 20.5 21.8 20.4L22.84 18.64C22.92 18.56 22.84 18.4 22.76 18.32L21.72 17.5V16.5L22.76 15.68C22.84 15.6 22.92 15.44 22.84 15.36L21.8 13.6C21.8 13.5 21.64 13.5 21.5 13.5L20.28 14C20.04 13.84 19.72 13.68 19.4 13.5L19.24 12.24C19.24 12.08 19.08 12 19 12H17M10 13C7.33 13 2 14.33 2 17V20H11.67C11.39 19.41 11.19 18.77 11.09 18.1H3.9V17C3.9 16.36 7.03 14.9 10 14.9C10.43 14.9 10.87 14.94 11.3 15C11.5 14.36 11.77 13.76 12.12 13.21C11.34 13.08 10.6 13 10 13M18.04 15.5C18.84 15.5 19.5 16.16 19.5 17.04C19.5 17.84 18.84 18.5 18.04 18.5C17.16 18.5 16.5 17.84 16.5 17.04C16.5 16.16 17.16 15.5 18.04 15.5Z"; -var mdiAccountConvert = "M12 0L11.34 .03L15.15 3.84L16.5 2.5C19.75 4.07 22.09 7.24 22.45 11H23.95C23.44 4.84 18.29 0 12 0M12 4C10.07 4 8.5 5.57 8.5 7.5C8.5 9.43 10.07 11 12 11C13.93 11 15.5 9.43 15.5 7.5C15.5 5.57 13.93 4 12 4M.05 13C.56 19.16 5.71 24 12 24L12.66 23.97L8.85 20.16L7.5 21.5C4.25 19.94 1.91 16.76 1.55 13H.05M12 13C8.13 13 5 14.57 5 16.5V18H19V16.5C19 14.57 15.87 13 12 13Z"; -var mdiAccountConvertOutline = "M12 0L11.34 .03L15.15 3.84L16.5 2.5C19.75 4.07 22.09 7.24 22.45 11H23.95C23.44 4.84 18.29 0 12 0M12 4C10.07 4 8.5 5.57 8.5 7.5C8.5 9.43 10.07 11 12 11C13.93 11 15.5 9.43 15.5 7.5C15.5 5.57 13.93 4 12 4M12 6C12.83 6 13.5 6.67 13.5 7.5C13.5 8.33 12.83 9 12 9C11.17 9 10.5 8.33 10.5 7.5C10.5 6.67 11.17 6 12 6M.05 13C.56 19.16 5.71 24 12 24L12.66 23.97L8.85 20.16L7.5 21.5C4.25 19.94 1.91 16.76 1.55 13H.05M12 13C8.13 13 5 14.57 5 16.5V18H19V16.5C19 14.57 15.87 13 12 13M12 15C14.11 15 15.61 15.53 16.39 16H7.61C8.39 15.53 9.89 15 12 15Z"; -var mdiAccountCowboyHat = "M20 22H4V20C4 17.8 7.6 16 12 16S20 17.8 20 20M8 9H16V10C16 12.2 14.2 14 12 14S8 12.2 8 10M19 4C18.4 4 18 4.4 18 5V6H16.5L15.1 3C15 2.8 14.9 2.6 14.7 2.5C14.2 2 13.4 1.9 12.7 2.2L12 2.4L11.3 2.1C10.6 1.8 9.8 1.9 9.3 2.4C9.1 2.6 9 2.8 8.9 3L7.5 6H6V5C6 4.4 5.6 4 5 4S4 4.4 4 5V6C4 7.1 4.9 8 6 8H18C19.1 8 20 7.1 20 6V5C20 4.5 19.6 4 19 4Z"; -var mdiAccountDetails = "M11 9C11 10.66 9.66 12 8 12C6.34 12 5 10.66 5 9C5 7.34 6.34 6 8 6C9.66 6 11 7.34 11 9M14 20H2V18C2 15.79 4.69 14 8 14C11.31 14 14 15.79 14 18M22 12V14H13V12M22 8V10H13V8M22 4V6H13V4Z"; -var mdiAccountDetailsOutline = "M11 9C11 10.66 9.66 12 8 12C6.34 12 5 10.66 5 9C5 7.34 6.34 6 8 6C9.66 6 11 7.34 11 9M14 20H2V18C2 15.79 4.69 14 8 14C11.31 14 14 15.79 14 18M7 9C7 9.55 7.45 10 8 10C8.55 10 9 9.55 9 9C9 8.45 8.55 8 8 8C7.45 8 7 8.45 7 9M4 18H12C12 16.9 10.21 16 8 16C5.79 16 4 16.9 4 18M22 12V14H13V12M22 8V10H13V8M22 4V6H13V4Z"; -var mdiAccountEdit = "M21.7,13.35L20.7,14.35L18.65,12.3L19.65,11.3C19.86,11.09 20.21,11.09 20.42,11.3L21.7,12.58C21.91,12.79 21.91,13.14 21.7,13.35M12,18.94L18.06,12.88L20.11,14.93L14.06,21H12V18.94M12,14C7.58,14 4,15.79 4,18V20H10V18.11L14,14.11C13.34,14.03 12.67,14 12,14M12,4A4,4 0 0,0 8,8A4,4 0 0,0 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4Z"; -var mdiAccountEditOutline = "M2 17V20H10V18.11H3.9V17C3.9 16.36 7.03 14.9 10 14.9C10.96 14.91 11.91 15.04 12.83 15.28L14.35 13.76C12.95 13.29 11.5 13.03 10 13C7.33 13 2 14.33 2 17M10 4C7.79 4 6 5.79 6 8S7.79 12 10 12 14 10.21 14 8 12.21 4 10 4M10 10C8.9 10 8 9.11 8 8S8.9 6 10 6 12 6.9 12 8 11.11 10 10 10M21.7 13.35L20.7 14.35L18.65 12.35L19.65 11.35C19.86 11.14 20.21 11.14 20.42 11.35L21.7 12.63C21.91 12.84 21.91 13.19 21.7 13.4M12 18.94L18.06 12.88L20.11 14.88L14.11 20.95H12V18.94"; -var mdiAccountGroup = "M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z"; -var mdiAccountGroupOutline = "M12,5A3.5,3.5 0 0,0 8.5,8.5A3.5,3.5 0 0,0 12,12A3.5,3.5 0 0,0 15.5,8.5A3.5,3.5 0 0,0 12,5M12,7A1.5,1.5 0 0,1 13.5,8.5A1.5,1.5 0 0,1 12,10A1.5,1.5 0 0,1 10.5,8.5A1.5,1.5 0 0,1 12,7M5.5,8A2.5,2.5 0 0,0 3,10.5C3,11.44 3.53,12.25 4.29,12.68C4.65,12.88 5.06,13 5.5,13C5.94,13 6.35,12.88 6.71,12.68C7.08,12.47 7.39,12.17 7.62,11.81C6.89,10.86 6.5,9.7 6.5,8.5C6.5,8.41 6.5,8.31 6.5,8.22C6.2,8.08 5.86,8 5.5,8M18.5,8C18.14,8 17.8,8.08 17.5,8.22C17.5,8.31 17.5,8.41 17.5,8.5C17.5,9.7 17.11,10.86 16.38,11.81C16.5,12 16.63,12.15 16.78,12.3C16.94,12.45 17.1,12.58 17.29,12.68C17.65,12.88 18.06,13 18.5,13C18.94,13 19.35,12.88 19.71,12.68C20.47,12.25 21,11.44 21,10.5A2.5,2.5 0 0,0 18.5,8M12,14C9.66,14 5,15.17 5,17.5V19H19V17.5C19,15.17 14.34,14 12,14M4.71,14.55C2.78,14.78 0,15.76 0,17.5V19H3V17.07C3,16.06 3.69,15.22 4.71,14.55M19.29,14.55C20.31,15.22 21,16.06 21,17.07V19H24V17.5C24,15.76 21.22,14.78 19.29,14.55M12,16C13.53,16 15.24,16.5 16.23,17H7.77C8.76,16.5 10.47,16 12,16Z"; -var mdiAccountHardHat = "M12,15C7.58,15 4,16.79 4,19V21H20V19C20,16.79 16.42,15 12,15M8,9A4,4 0 0,0 12,13A4,4 0 0,0 16,9M11.5,2C11.2,2 11,2.21 11,2.5V5.5H10V3C10,3 7.75,3.86 7.75,6.75C7.75,6.75 7,6.89 7,8H17C16.95,6.89 16.25,6.75 16.25,6.75C16.25,3.86 14,3 14,3V5.5H13V2.5C13,2.21 12.81,2 12.5,2H11.5Z"; -var mdiAccountHeart = "M15,14C12.3,14 7,15.3 7,18V20H23V18C23,15.3 17.7,14 15,14M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12M5,15L4.4,14.5C2.4,12.6 1,11.4 1,9.9C1,8.7 2,7.7 3.2,7.7C3.9,7.7 4.6,8 5,8.5C5.4,8 6.1,7.7 6.8,7.7C8,7.7 9,8.6 9,9.9C9,11.4 7.6,12.6 5.6,14.5L5,15Z"; -var mdiAccountHeartOutline = "M5,15L4.4,14.5C2.4,12.6 1,11.4 1,9.9C1,8.7 2,7.7 3.2,7.7C3.9,7.7 4.6,8 5,8.5C5.4,8 6.1,7.7 6.8,7.7C8,7.7 9,8.6 9,9.9C9,11.4 7.6,12.6 5.6,14.5L5,15M15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4M15,10.1A2.1,2.1 0 0,1 12.9,8A2.1,2.1 0 0,1 15,5.9C16.16,5.9 17.1,6.84 17.1,8C17.1,9.16 16.16,10.1 15,10.1M15,13C12.33,13 7,14.33 7,17V20H23V17C23,14.33 17.67,13 15,13M21.1,18.1H8.9V17C8.9,16.36 12,14.9 15,14.9C17.97,14.9 21.1,16.36 21.1,17V18.1Z"; -var mdiAccountKey = "M11,10V12H10V14H8V12H5.83C5.42,13.17 4.31,14 3,14A3,3 0 0,1 0,11A3,3 0 0,1 3,8C4.31,8 5.42,8.83 5.83,10H11M3,10A1,1 0 0,0 2,11A1,1 0 0,0 3,12A1,1 0 0,0 4,11A1,1 0 0,0 3,10M16,14C18.67,14 24,15.34 24,18V20H8V18C8,15.34 13.33,14 16,14M16,12A4,4 0 0,1 12,8A4,4 0 0,1 16,4A4,4 0 0,1 20,8A4,4 0 0,1 16,12Z"; -var mdiAccountKeyOutline = "M5.83,10C5.42,8.83 4.31,8 3,8A3,3 0 0,0 0,11A3,3 0 0,0 3,14C4.31,14 5.42,13.17 5.83,12H8V14H10V12H11V10H5.83M3,12A1,1 0 0,1 2,11A1,1 0 0,1 3,10A1,1 0 0,1 4,11A1,1 0 0,1 3,12M16,4A4,4 0 0,0 12,8A4,4 0 0,0 16,12A4,4 0 0,0 20,8A4,4 0 0,0 16,4M16,10.1A2.1,2.1 0 0,1 13.9,8A2.1,2.1 0 0,1 16,5.9C17.16,5.9 18.1,6.84 18.1,8C18.1,9.16 17.16,10.1 16,10.1M16,13C13.33,13 8,14.33 8,17V20H24V17C24,14.33 18.67,13 16,13M22.1,18.1H9.9V17C9.9,16.36 13,14.9 16,14.9C18.97,14.9 22.1,16.36 22.1,17V18.1Z"; -var mdiAccountLock = "M22 17V16.5C22 15.12 20.88 14 19.5 14S17 15.12 17 16.5V17C16.45 17 16 17.45 16 18V22C16 22.55 16.45 23 17 23H22C22.55 23 23 22.55 23 22V18C23 17.45 22.55 17 22 17M21 17H18V16.5C18 15.67 18.67 15 19.5 15S21 15.67 21 16.5V17M8 8C8 5.79 9.79 4 12 4S16 5.79 16 8 14.21 12 12 12 8 10.21 8 8M14 20H4V18C4 15.79 7.58 14 12 14C13.27 14 14.46 14.15 15.53 14.41C15.32 14.82 15.15 15.25 15.07 15.71C14.42 16.26 14 17.08 14 18V20Z"; -var mdiAccountLockOutline = "M22 17V16.5C22 15.12 20.88 14 19.5 14S17 15.12 17 16.5V17C16.45 17 16 17.45 16 18V22C16 22.55 16.45 23 17 23H22C22.55 23 23 22.55 23 22V18C23 17.45 22.55 17 22 17M21 17H18V16.5C18 15.67 18.67 15 19.5 15S21 15.67 21 16.5V17M14 20H4V17C4 14.33 9.33 13 12 13C13.08 13 14.6 13.22 16 13.66C15.61 14.15 15.33 14.74 15.16 15.38C14.19 15.1 13.09 14.9 12 14.9C9.03 14.9 5.9 16.36 5.9 17V18.1H14V20M12 12C14.21 12 16 10.21 16 8S14.21 4 12 4 8 5.79 8 8 9.79 12 12 12M12 6C13.11 6 14 6.9 14 8S13.11 10 12 10 10 9.11 10 8 10.9 6 12 6Z"; -var mdiAccountMinus = "M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M1,10V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z"; -var mdiAccountMinusOutline = "M15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4M15,5.9C16.16,5.9 17.1,6.84 17.1,8C17.1,9.16 16.16,10.1 15,10.1A2.1,2.1 0 0,1 12.9,8A2.1,2.1 0 0,1 15,5.9M1,10V12H9V10H1M15,13C12.33,13 7,14.33 7,17V20H23V17C23,14.33 17.67,13 15,13M15,14.9C17.97,14.9 21.1,16.36 21.1,17V18.1H8.9V17C8.9,16.36 12,14.9 15,14.9Z"; -var mdiAccountMultiple = "M16 17V19H2V17S2 13 9 13 16 17 16 17M12.5 7.5A3.5 3.5 0 1 0 9 11A3.5 3.5 0 0 0 12.5 7.5M15.94 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13M15 4A3.39 3.39 0 0 0 13.07 4.59A5 5 0 0 1 13.07 10.41A3.39 3.39 0 0 0 15 11A3.5 3.5 0 0 0 15 4Z"; -var mdiAccountMultipleCheck = "M19 17V19H7V17S7 13 13 13 19 17 19 17M16 8A3 3 0 1 0 13 11A3 3 0 0 0 16 8M19.2 13.06A5.6 5.6 0 0 1 21 17V19H24V17S24 13.55 19.2 13.06M18 5A2.91 2.91 0 0 0 17.11 5.14A5 5 0 0 1 17.11 10.86A2.91 2.91 0 0 0 18 11A3 3 0 0 0 18 5M7.34 8.92L8.5 10.33L3.75 15.08L1 12.08L2.16 10.92L3.75 12.5L7.34 8.92"; -var mdiAccountMultipleCheckOutline = "M13 11A3 3 0 1 0 10 8A3 3 0 0 0 13 11M13 7A1 1 0 1 1 12 8A1 1 0 0 1 13 7M17.11 10.86A5 5 0 0 0 17.11 5.14A2.91 2.91 0 0 1 18 5A3 3 0 0 1 18 11A2.91 2.91 0 0 1 17.11 10.86M13 13C7 13 7 17 7 17V19H19V17S19 13 13 13M9 17C9 16.71 9.32 15 13 15C16.5 15 16.94 16.56 17 17M24 17V19H21V17A5.6 5.6 0 0 0 19.2 13.06C24 13.55 24 17 24 17M7.34 8.92L8.5 10.33L3.75 15.08L1 12.08L2.16 10.92L3.75 12.5L7.34 8.92"; -var mdiAccountMultipleMinus = "M19 17V19H7V17S7 13 13 13 19 17 19 17M16 8A3 3 0 1 0 13 11A3 3 0 0 0 16 8M19.2 13.06A5.6 5.6 0 0 1 21 17V19H24V17S24 13.55 19.2 13.06M18 5A2.91 2.91 0 0 0 17.11 5.14A5 5 0 0 1 17.11 10.86A2.91 2.91 0 0 0 18 11A3 3 0 0 0 18 5M8 10H0V12H8Z"; -var mdiAccountMultipleMinusOutline = "M13 11A3 3 0 1 0 10 8A3 3 0 0 0 13 11M13 7A1 1 0 1 1 12 8A1 1 0 0 1 13 7M17.11 10.86A5 5 0 0 0 17.11 5.14A2.91 2.91 0 0 1 18 5A3 3 0 0 1 18 11A2.91 2.91 0 0 1 17.11 10.86M13 13C7 13 7 17 7 17V19H19V17S19 13 13 13M9 17C9 16.71 9.32 15 13 15C16.5 15 16.94 16.56 17 17M24 17V19H21V17A5.6 5.6 0 0 0 19.2 13.06C24 13.55 24 17 24 17M8 12H0V10H8Z"; -var mdiAccountMultipleOutline = "M13.07 10.41A5 5 0 0 0 13.07 4.59A3.39 3.39 0 0 1 15 4A3.5 3.5 0 0 1 15 11A3.39 3.39 0 0 1 13.07 10.41M5.5 7.5A3.5 3.5 0 1 1 9 11A3.5 3.5 0 0 1 5.5 7.5M7.5 7.5A1.5 1.5 0 1 0 9 6A1.5 1.5 0 0 0 7.5 7.5M16 17V19H2V17S2 13 9 13 16 17 16 17M14 17C13.86 16.22 12.67 15 9 15S4.07 16.31 4 17M15.95 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13Z"; -var mdiAccountMultiplePlus = "M19 17V19H7V17S7 13 13 13 19 17 19 17M16 8A3 3 0 1 0 13 11A3 3 0 0 0 16 8M19.2 13.06A5.6 5.6 0 0 1 21 17V19H24V17S24 13.55 19.2 13.06M18 5A2.91 2.91 0 0 0 17.11 5.14A5 5 0 0 1 17.11 10.86A2.91 2.91 0 0 0 18 11A3 3 0 0 0 18 5M8 10H5V7H3V10H0V12H3V15H5V12H8Z"; -var mdiAccountMultiplePlusOutline = "M13 11A3 3 0 1 0 10 8A3 3 0 0 0 13 11M13 7A1 1 0 1 1 12 8A1 1 0 0 1 13 7M17.11 10.86A5 5 0 0 0 17.11 5.14A2.91 2.91 0 0 1 18 5A3 3 0 0 1 18 11A2.91 2.91 0 0 1 17.11 10.86M13 13C7 13 7 17 7 17V19H19V17S19 13 13 13M9 17C9 16.71 9.32 15 13 15C16.5 15 16.94 16.56 17 17M24 17V19H21V17A5.6 5.6 0 0 0 19.2 13.06C24 13.55 24 17 24 17M8 12H5V15H3V12H0V10H3V7H5V10H8Z"; -var mdiAccountMultipleRemove = "M24 17V19H21V17C21 15.45 20.3 14.06 19.18 13.06C24 13.55 24 17 24 17M18 5C19.66 5 21 6.34 21 8C21 9.66 19.66 11 18 11C17.69 11 17.38 10.95 17.1 10.86C17.67 10.05 18 9.07 18 8C18 6.94 17.67 5.95 17.1 5.14C17.38 5.05 17.69 5 18 5M13 5C14.66 5 16 6.34 16 8C16 9.66 14.66 11 13 11C11.34 11 10 9.66 10 8C10 6.34 11.34 5 13 5M19 17V19H7V17C7 14.79 9.69 13 13 13C16.31 13 19 14.79 19 17M.464 13.12L2.59 11L.464 8.88L1.88 7.46L4 9.59L6.12 7.46L7.54 8.88L5.41 11L7.54 13.12L6.12 14.54L4 12.41L1.88 14.54Z"; -var mdiAccountMultipleRemoveOutline = "M24 17V19H21V17C21 15.45 20.3 14.06 19.18 13.06C24 13.55 24 17 24 17M18 5C19.66 5 21 6.34 21 8C21 9.66 19.66 11 18 11C17.69 11 17.38 10.95 17.1 10.86C17.67 10.05 18 9.07 18 8C18 6.94 17.67 5.95 17.1 5.14C17.38 5.05 17.69 5 18 5M13 5C14.66 5 16 6.34 16 8C16 9.66 14.66 11 13 11C11.34 11 10 9.66 10 8C10 6.34 11.34 5 13 5M19 17V19H7V17C7 14.79 9.69 13 13 13C16.31 13 19 14.79 19 17M13 7C12.45 7 12 7.45 12 8C12 8.55 12.45 9 13 9C13.55 9 14 8.55 14 8C14 7.45 13.55 7 13 7M13 15C10.79 15 9 15.9 9 17H17C17 15.9 15.21 15 13 15M.464 13.12L2.59 11L.464 8.88L1.88 7.46L4 9.59L6.12 7.46L7.54 8.88L5.41 11L7.54 13.12L6.12 14.54L4 12.41L1.88 14.54Z"; -var mdiAccountMusic = "M11,14C12,14 13.05,14.16 14.2,14.44C13.39,15.31 13,16.33 13,17.5C13,18.39 13.25,19.23 13.78,20H3V18C3,16.81 3.91,15.85 5.74,15.12C7.57,14.38 9.33,14 11,14M11,12C9.92,12 9,11.61 8.18,10.83C7.38,10.05 7,9.11 7,8C7,6.92 7.38,6 8.18,5.18C9,4.38 9.92,4 11,4C12.11,4 13.05,4.38 13.83,5.18C14.61,6 15,6.92 15,8C15,9.11 14.61,10.05 13.83,10.83C13.05,11.61 12.11,12 11,12M18.5,10H20L22,10V12H20V17.5A2.5,2.5 0 0,1 17.5,20A2.5,2.5 0 0,1 15,17.5A2.5,2.5 0 0,1 17.5,15C17.86,15 18.19,15.07 18.5,15.21V10Z"; -var mdiAccountMusicOutline = "M11,4A4,4 0 0,1 15,8A4,4 0 0,1 11,12A4,4 0 0,1 7,8A4,4 0 0,1 11,4M11,6A2,2 0 0,0 9,8A2,2 0 0,0 11,10A2,2 0 0,0 13,8A2,2 0 0,0 11,6M11,13C12.1,13 13.66,13.23 15.11,13.69C14.5,14.07 14,14.6 13.61,15.23C12.79,15.03 11.89,14.9 11,14.9C8.03,14.9 4.9,16.36 4.9,17V18.1H13.04C13.13,18.8 13.38,19.44 13.76,20H3V17C3,14.34 8.33,13 11,13M18.5,10H20L22,10V12H20V17.5A2.5,2.5 0 0,1 17.5,20A2.5,2.5 0 0,1 15,17.5A2.5,2.5 0 0,1 17.5,15C17.86,15 18.19,15.07 18.5,15.21V10Z"; -var mdiAccountNetwork = "M13,17V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H5V15.5C5,13.57 8.13,12 12,12C15.87,12 19,13.57 19,15.5V17H13M12,3A3.5,3.5 0 0,1 15.5,6.5A3.5,3.5 0 0,1 12,10A3.5,3.5 0 0,1 8.5,6.5A3.5,3.5 0 0,1 12,3Z"; -var mdiAccountNetworkOutline = "M12,10A3.5,3.5 0 0,0 15.5,6.5A3.5,3.5 0 0,0 12,3A3.5,3.5 0 0,0 8.5,6.5A3.5,3.5 0 0,0 12,10M12,5A1.5,1.5 0 0,1 13.5,6.5A1.5,1.5 0 0,1 12,8A1.5,1.5 0 0,1 10.5,6.5A1.5,1.5 0 0,1 12,5M15,20A1,1 0 0,0 14,19H13V17H19V15.5C19,13.57 15.87,12 12,12C8.13,12 5,13.57 5,15.5V17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7.61,15C8.39,14.53 9.89,14 12,14C14.11,14 15.61,14.53 16.39,15H7.61Z"; -var mdiAccountOff = "M12,4A4,4 0 0,1 16,8C16,9.95 14.6,11.58 12.75,11.93L8.07,7.25C8.42,5.4 10.05,4 12,4M12.28,14L18.28,20L20,21.72L18.73,23L15.73,20H4V18C4,16.16 6.5,14.61 9.87,14.14L2.78,7.05L4.05,5.78L12.28,14M20,18V19.18L15.14,14.32C18,14.93 20,16.35 20,18Z"; -var mdiAccountOffOutline = "M2.75,7L4.03,5.75L13.26,15L20,21.72L18.73,23L15.73,20H4V17C4,15.14 6.61,13.92 9.09,13.36L2.75,7M20,17V19.18L18.1,17.28V17C18.1,16.74 17.6,16.35 16.8,16L14,13.18C16.71,13.63 20,14.91 20,17M5.9,17V18.1H13.83L10.72,15C8.19,15.3 5.9,16.45 5.9,17M12,4A4,4 0 0,1 16,8C16,9.95 14.6,11.58 12.75,11.93L8.07,7.25C8.42,5.4 10.05,4 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6Z"; -var mdiAccountOutline = "M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M12,13C14.67,13 20,14.33 20,17V20H4V17C4,14.33 9.33,13 12,13M12,14.9C9.03,14.9 5.9,16.36 5.9,17V18.1H18.1V17C18.1,16.36 14.97,14.9 12,14.9Z"; -var mdiAccountPlus = "M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z"; -var mdiAccountPlusOutline = "M15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4M15,5.9C16.16,5.9 17.1,6.84 17.1,8C17.1,9.16 16.16,10.1 15,10.1A2.1,2.1 0 0,1 12.9,8A2.1,2.1 0 0,1 15,5.9M4,7V10H1V12H4V15H6V12H9V10H6V7H4M15,13C12.33,13 7,14.33 7,17V20H23V17C23,14.33 17.67,13 15,13M15,14.9C17.97,14.9 21.1,16.36 21.1,17V18.1H8.9V17C8.9,16.36 12,14.9 15,14.9Z"; -var mdiAccountQuestion = "M13,8A4,4 0 0,1 9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4A4,4 0 0,1 13,8M17,18V20H1V18C1,15.79 4.58,14 9,14C13.42,14 17,15.79 17,18M20.5,14.5V16H19V14.5H20.5M18.5,9.5H17V9A3,3 0 0,1 20,6A3,3 0 0,1 23,9C23,9.97 22.5,10.88 21.71,11.41L21.41,11.6C20.84,12 20.5,12.61 20.5,13.3V13.5H19V13.3C19,12.11 19.6,11 20.59,10.35L20.88,10.16C21.27,9.9 21.5,9.47 21.5,9A1.5,1.5 0 0,0 20,7.5A1.5,1.5 0 0,0 18.5,9V9.5Z"; -var mdiAccountQuestionOutline = "M20.5,14.5V16H19V14.5H20.5M18.5,9.5H17V9A3,3 0 0,1 20,6A3,3 0 0,1 23,9C23,9.97 22.5,10.88 21.71,11.41L21.41,11.6C20.84,12 20.5,12.61 20.5,13.3V13.5H19V13.3C19,12.11 19.6,11 20.59,10.35L20.88,10.16C21.27,9.9 21.5,9.47 21.5,9A1.5,1.5 0 0,0 20,7.5A1.5,1.5 0 0,0 18.5,9V9.5M9,13C11.67,13 17,14.34 17,17V20H1V17C1,14.34 6.33,13 9,13M9,4A4,4 0 0,1 13,8A4,4 0 0,1 9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4M9,14.9C6.03,14.9 2.9,16.36 2.9,17V18.1H15.1V17C15.1,16.36 11.97,14.9 9,14.9M9,5.9A2.1,2.1 0 0,0 6.9,8A2.1,2.1 0 0,0 9,10.1A2.1,2.1 0 0,0 11.1,8A2.1,2.1 0 0,0 9,5.9Z"; -var mdiAccountReactivate = "M21.5 9H16.5L18.36 7.14C16.9 5.23 14.59 4 12 4C7.58 4 4 7.58 4 12C4 13.83 4.61 15.5 5.64 16.85C6.86 15.45 9.15 14.5 12 14.5C14.85 14.5 17.15 15.45 18.36 16.85C19.39 15.5 20 13.83 20 12H22C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C15.14 2 17.95 3.45 19.78 5.72L21.5 4V9M12 7C13.66 7 15 8.34 15 10C15 11.66 13.66 13 12 13C10.34 13 9 11.66 9 10C9 8.34 10.34 7 12 7Z"; -var mdiAccountReactivateOutline = "M21.5 9H16.5L18.36 7.14C16.9 5.23 14.59 4 12 4C7.58 4 4 7.58 4 12C4 13.83 4.61 15.5 5.64 16.85C6.86 15.45 9.15 14.5 12 14.5C14.85 14.5 17.15 15.45 18.36 16.85C19.39 15.5 20 13.83 20 12H22C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C15.14 2 17.95 3.45 19.78 5.72L21.5 4V9M12 20C13.9 20 15.64 19.34 17 18.24C16.36 17.23 14.45 16.5 12 16.5C9.55 16.5 7.64 17.23 7 18.24C8.36 19.34 10.1 20 12 20M12 6C13.93 6 15.5 7.57 15.5 9.5C15.5 11.43 13.93 13 12 13C10.07 13 8.5 11.43 8.5 9.5C8.5 7.57 10.07 6 12 6M12 8C11.17 8 10.5 8.67 10.5 9.5C10.5 10.33 11.17 11 12 11C12.83 11 13.5 10.33 13.5 9.5C13.5 8.67 12.83 8 12 8Z"; -var mdiAccountRemove = "M15,14C17.67,14 23,15.33 23,18V20H7V18C7,15.33 12.33,14 15,14M15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12M5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88L2.88,7.46L5,9.59Z"; -var mdiAccountRemoveOutline = "M1.46,8.88L2.88,7.46L5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88M15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4M15,5.9A2.1,2.1 0 0,0 12.9,8A2.1,2.1 0 0,0 15,10.1C16.16,10.1 17.1,9.16 17.1,8C17.1,6.84 16.16,5.9 15,5.9M15,13C17.67,13 23,14.33 23,17V20H7V17C7,14.33 12.33,13 15,13M15,14.9C12,14.9 8.9,16.36 8.9,17V18.1H21.1V17C21.1,16.36 17.97,14.9 15,14.9Z"; -var mdiAccountSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M10,4A4,4 0 0,1 14,8C14,8.91 13.69,9.75 13.18,10.43C12.32,10.75 11.55,11.26 10.91,11.9L10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M2,20V18C2,15.88 5.31,14.14 9.5,14C9.18,14.78 9,15.62 9,16.5C9,17.79 9.38,19 10,20H2Z"; -var mdiAccountSearchOutline = "M10,13C9.65,13.59 9.36,14.24 9.19,14.93C6.5,15.16 3.9,16.42 3.9,17V18.1H9.2C9.37,18.78 9.65,19.42 10,20H2V17C2,14.34 7.33,13 10,13M10,4A4,4 0 0,1 14,8C14,8.91 13.69,9.75 13.18,10.43C12.32,10.75 11.55,11.26 10.91,11.9L10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,5.9A2.1,2.1 0 0,0 7.9,8A2.1,2.1 0 0,0 10,10.1A2.1,2.1 0 0,0 12.1,8A2.1,2.1 0 0,0 10,5.9M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14Z"; -var mdiAccountSettings = "M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z"; -var mdiAccountSettingsOutline = "M12 4C14.21 4 16 5.79 16 8S14.21 12 12 12 8 10.21 8 8 9.79 4 12 4M12 6C10.9 6 10 6.9 10 8S10.9 10 12 10 14 9.11 14 8 13.11 6 12 6M12 13C14.67 13 20 14.33 20 17V20H4V17C4 14.33 9.33 13 12 13M12 14.9C9.03 14.9 5.9 16.36 5.9 17V18.1H18.1V17C18.1 16.36 14.97 14.9 12 14.9M13 22H11V24H13V22M17 22H15V24H17V22M9 22H7V24H9V22Z"; -var mdiAccountStar = "M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12M5,13.28L7.45,14.77L6.8,11.96L9,10.08L6.11,9.83L5,7.19L3.87,9.83L1,10.08L3.18,11.96L2.5,14.77L5,13.28Z"; -var mdiAccountStarOutline = "M15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4M15,5.9A2.1,2.1 0 0,0 12.9,8A2.1,2.1 0 0,0 15,10.1C16.16,10.1 17.1,9.16 17.1,8C17.1,6.84 16.16,5.9 15,5.9M15,13C17.67,13 23,14.33 23,17V20H7V17C7,14.33 12.33,13 15,13M15,14.9C12,14.9 8.9,16.36 8.9,17V18.1H21.1V17C21.1,16.36 17.97,14.9 15,14.9M5,13.28L2.5,14.77L3.18,11.96L1,10.08L3.87,9.83L5,7.19L6.11,9.83L9,10.08L6.8,11.96L7.45,14.77L5,13.28Z"; -var mdiAccountSupervisor = "M16.5,12A2.5,2.5 0 0,0 19,9.5A2.5,2.5 0 0,0 16.5,7A2.5,2.5 0 0,0 14,9.5A2.5,2.5 0 0,0 16.5,12M9,11A3,3 0 0,0 12,8A3,3 0 0,0 9,5A3,3 0 0,0 6,8A3,3 0 0,0 9,11M16.5,14C14.67,14 11,14.92 11,16.75V19H22V16.75C22,14.92 18.33,14 16.5,14M9,13C6.67,13 2,14.17 2,16.5V19H9V16.75C9,15.9 9.33,14.41 11.37,13.28C10.5,13.1 9.66,13 9,13Z"; -var mdiAccountSupervisorCircle = "M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.6,8.34C16.67,8.34 17.53,9.2 17.53,10.27C17.53,11.34 16.67,12.2 15.6,12.2A1.93,1.93 0 0,1 13.67,10.27C13.66,9.2 14.53,8.34 15.6,8.34M9.6,6.76C10.9,6.76 11.96,7.82 11.96,9.12C11.96,10.42 10.9,11.5 9.6,11.5C8.3,11.5 7.24,10.42 7.24,9.12C7.24,7.81 8.29,6.76 9.6,6.76M9.6,15.89V19.64C7.2,18.89 5.3,17.04 4.46,14.68C5.5,13.56 8.13,13 9.6,13C10.13,13 10.8,13.07 11.5,13.21C9.86,14.08 9.6,15.23 9.6,15.89M12,20C11.72,20 11.46,20 11.2,19.96V15.89C11.2,14.47 14.14,13.76 15.6,13.76C16.67,13.76 18.5,14.15 19.44,14.91C18.27,17.88 15.38,20 12,20Z"; -var mdiAccountSupervisorCircleOutline = "M12.5 10C12.5 8.34 11.16 7 9.5 7C7.86 7 6.5 8.34 6.5 10C6.5 11.64 7.86 13 9.5 13C11.16 13 12.5 11.64 12.5 10M9.5 11C8.96 11 8.5 10.54 8.5 10C8.5 9.44 8.96 9 9.5 9C10.06 9 10.5 9.44 10.5 10C10.5 10.54 10.06 11 9.5 11M16 13C17.12 13 18 12.1 18 11C18 9.88 17.12 9 16 9C14.9 9 14 9.88 14 11C14 12.1 14.9 13 16 13M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2M5.85 17.11C6.53 16.57 8.12 16 9.5 16C9.58 16 9.66 16 9.74 16C10 15.37 10.41 14.72 11.04 14.15C10.5 14.05 9.95 14 9.5 14C8.21 14 6.12 14.44 4.78 15.42C4.28 14.38 4 13.22 4 12C4 7.58 7.59 4 12 4C16.41 4 20 7.58 20 12C20 13.19 19.73 14.33 19.25 15.36C18.25 14.77 16.89 14.5 16 14.5C14.5 14.5 11.5 15.3 11.5 17.19V19.97C9.24 19.84 7.22 18.76 5.85 17.11Z"; -var mdiAccountSupervisorOutline = "M16.5 15.5C18.22 15.5 20.25 16.3 20.5 16.78V17.5H12.5V16.78C12.75 16.3 14.78 15.5 16.5 15.5M16.5 14C14.67 14 11 14.92 11 16.75V19H22V16.75C22 14.92 18.33 14 16.5 14M9 13C6.67 13 2 14.17 2 16.5V19H9V17.5H3.5V16.5C3.5 15.87 6.29 14.34 9.82 14.5A5.12 5.12 0 0 1 11.37 13.25A12.28 12.28 0 0 0 9 13M9 6.5A1.5 1.5 0 1 1 7.5 8A1.5 1.5 0 0 1 9 6.5M9 5A3 3 0 1 0 12 8A3 3 0 0 0 9 5M16.5 8.5A1 1 0 1 1 15.5 9.5A1 1 0 0 1 16.5 8.5M16.5 7A2.5 2.5 0 1 0 19 9.5A2.5 2.5 0 0 0 16.5 7Z"; -var mdiAccountSwitch = "M16 9C22 9 22 13 22 13V15H16V13C16 13 16 11.31 14.85 9.8C14.68 9.57 14.47 9.35 14.25 9.14C14.77 9.06 15.34 9 16 9M2 13C2 13 2 9 8 9S14 13 14 13V15H2V13M9 17V19H15V17L18 20L15 23V21H9V23L6 20L9 17M8 1C6.34 1 5 2.34 5 4S6.34 7 8 7 11 5.66 11 4 9.66 1 8 1M16 1C14.34 1 13 2.34 13 4S14.34 7 16 7 19 5.66 19 4 17.66 1 16 1Z"; -var mdiAccountSwitchOutline = "M16 9C22 9 22 13 22 13V15H16V13C16 13 16 11.31 14.85 9.8C14.68 9.57 14.47 9.35 14.25 9.14C14.77 9.06 15.34 9 16 9M8 11C11.5 11 11.94 12.56 12 13H4C4.06 12.56 4.5 11 8 11M8 9C2 9 2 13 2 13V15H14V13C14 13 14 9 8 9M9 17V19H15V17L18 20L15 23V21H9V23L6 20L9 17M8 3C8.55 3 9 3.45 9 4S8.55 5 8 5 7 4.55 7 4 7.45 3 8 3M8 1C6.34 1 5 2.34 5 4S6.34 7 8 7 11 5.66 11 4 9.66 1 8 1M16 1C14.34 1 13 2.34 13 4S14.34 7 16 7 19 5.66 19 4 17.66 1 16 1Z"; -var mdiAccountTie = "M12 3C14.21 3 16 4.79 16 7S14.21 11 12 11 8 9.21 8 7 9.79 3 12 3M16 13.54C16 14.6 15.72 17.07 13.81 19.83L13 15L13.94 13.12C13.32 13.05 12.67 13 12 13S10.68 13.05 10.06 13.12L11 15L10.19 19.83C8.28 17.07 8 14.6 8 13.54C5.61 14.24 4 15.5 4 17V21H20V17C20 15.5 18.4 14.24 16 13.54Z"; -var mdiAccountTieOutline = "M16.36 12.76C18.31 13.42 20 14.5 20 16V21H4V16C4 14.5 5.69 13.42 7.65 12.76L8.27 14L8.5 14.5C7 14.96 5.9 15.62 5.9 16V19.1H10.12L11 14.03L10.06 12.15C10.68 12.08 11.33 12.03 12 12.03C12.67 12.03 13.32 12.08 13.94 12.15L13 14.03L13.88 19.1H18.1V16C18.1 15.62 17 14.96 15.5 14.5L15.73 14L16.36 12.76M12 5C10.9 5 10 5.9 10 7C10 8.1 10.9 9 12 9C13.1 9 14 8.1 14 7C14 5.9 13.1 5 12 5M12 11C9.79 11 8 9.21 8 7C8 4.79 9.79 3 12 3C14.21 3 16 4.79 16 7C16 9.21 14.21 11 12 11Z"; -var mdiAccountTieVoice = "M16.75 4.36C18.77 6.56 18.77 9.61 16.75 11.63L15.07 9.94C15.91 8.76 15.91 7.23 15.07 6.05L16.75 4.36M20.06 1C24 5.05 23.96 11.11 20.06 15L18.43 13.37C21.2 10.19 21.2 5.65 18.43 2.63L20.06 1M9 4C11.2 4 13 5.79 13 8S11.2 12 9 12 5 10.21 5 8 6.79 4 9 4M13 14.54C13 15.6 12.71 18.07 10.8 20.83L10 16L10.93 14.12C10.31 14.05 9.66 14 9 14S7.67 14.05 7.05 14.12L8 16L7.18 20.83C5.27 18.07 5 15.6 5 14.54C2.6 15.24 .994 16.5 .994 18V22H17V18C17 16.5 15.39 15.24 13 14.54Z"; -var mdiAccountTieVoiceOff = "M12.7 9.5L7.5 4.3C7.96 4.11 8.46 4 9 4C11.2 4 13 5.79 13 8C13 8.53 12.89 9.04 12.7 9.5M16.75 11.63C18.77 9.61 18.77 6.56 16.75 4.36L15.07 6.05C15.91 7.23 15.91 8.76 15.07 9.94L16.75 11.63M20.06 15C23.96 11.11 24 5.05 20.06 1L18.43 2.63C21.2 5.65 21.2 10.19 18.43 13.37L20.06 15M2.39 1.73L1.11 3L5.13 7C5.05 7.34 5 7.66 5 8C5 10.21 6.79 12 9 12C9.33 12 9.66 11.94 9.97 11.86L13 14.87C12.93 16.06 12.54 18.32 10.8 20.83L10 16L10.93 14.12C10.31 14.05 9.66 14 9 14C8.32 14 7.67 14.05 7.05 14.12L8 16L7.18 20.83C5.27 18.07 5 15.6 5 14.54C2.6 15.24 .994 16.5 .994 18V22H17V18.88L20.84 22.73L22.11 21.46L2.39 1.73Z"; -var mdiAccountTieVoiceOffOutline = "M9.22 6L7.5 4.3C7.96 4.11 8.47 4 9 4C11.21 4 13 5.79 13 8C13 8.53 12.89 9.04 12.7 9.5L11 7.78C10.87 6.86 10.14 6.13 9.22 6M20.06 15C23.96 11.11 24 5.05 20.06 1L18.43 2.63C21.2 5.65 21.2 10.19 18.43 13.37L20.06 15M16.75 11.63C18.77 9.61 18.77 6.56 16.75 4.36L15.07 6.05C15.91 7.23 15.91 8.76 15.07 9.94L16.75 11.63M2.39 1.73L1.11 3L5.14 7.03C5.06 7.34 5 7.66 5 8C5 10.21 6.79 12 9 12C9.34 12 9.66 11.94 9.97 11.86L12.86 14.75L12.73 15L12.5 15.5C13.3 15.74 13.97 16.05 14.44 16.33L15.1 17V20.1H10.88L10 15.03L10.94 13.15C10.32 13.08 9.67 13.03 9 13.03S7.68 13.08 7.06 13.15L8 15.03L7.12 20.1H2.9V17C2.9 16.62 4 15.96 5.5 15.5L5.27 15L4.65 13.76C2.69 14.42 1 15.5 1 17V22H17V18.89L20.84 22.73L22.11 21.46L2.39 1.73Z"; -var mdiAccountTieVoiceOutline = "M16.75 4.36C18.77 6.56 18.77 9.61 16.75 11.63L15.07 9.94C15.91 8.76 15.91 7.23 15.07 6.05L16.75 4.36M20.06 1C24 5.05 23.96 11.11 20.06 15L18.43 13.37C21.2 10.19 21.2 5.65 18.43 2.63L20.06 1M13.36 13.76C15.31 14.42 17 15.5 17 17V22H1V17C1 15.5 2.69 14.42 4.65 13.76L5.27 15L5.5 15.5C4 15.96 2.9 16.62 2.9 17V20.1H7.12L8 15.03L7.06 13.15C7.68 13.08 8.33 13.03 9 13.03S10.32 13.08 10.94 13.15L10 15.03L10.88 20.1H15.1V17C15.1 16.62 14 15.96 12.5 15.5L12.73 15L13.36 13.76M9 6C7.9 6 7 6.9 7 8S7.9 10 9 10 11 9.1 11 8 10.1 6 9 6M9 12C6.79 12 5 10.21 5 8S6.79 4 9 4 13 5.79 13 8 11.21 12 9 12Z"; -var mdiAccountVoice = "M9,5A4,4 0 0,1 13,9A4,4 0 0,1 9,13A4,4 0 0,1 5,9A4,4 0 0,1 9,5M9,15C11.67,15 17,16.34 17,19V21H1V19C1,16.34 6.33,15 9,15M16.76,5.36C18.78,7.56 18.78,10.61 16.76,12.63L15.08,10.94C15.92,9.76 15.92,8.23 15.08,7.05L16.76,5.36M20.07,2C24,6.05 23.97,12.11 20.07,16L18.44,14.37C21.21,11.19 21.21,6.65 18.44,3.63L20.07,2Z"; -var mdiAdjust = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12Z"; -var mdiAdobe = "M14.58,3H22V19.67L14.58,3M9.42,3H2V19.67L9.42,3M12,9.17L16.67,19.67H13.5L12.17,16.33H8.75L12,9.17Z"; -var mdiAdobeAcrobat = "M21.8 14.5C21.3 13.7 20.1 13.4 18.1 13.4C17.4 13.4 16.7 13.4 16 13.5C15.5 13.2 15 12.9 14.6 12.6C13.6 11.8 12.7 10.3 12 8.5C12 8.5 12 8.4 12.1 8.3C12.6 6.2 13.1 3.6 12.1 2.5C11.8 2.2 11.5 2.1 11.1 2.1H10.7C10.1 2.1 9.6 2.7 9.4 3.3C8.8 5.4 9.2 6.6 9.8 8.5C9.4 10 8.9 11.6 8 13.3C7.5 14.4 6.9 15.4 6.5 16.2C5.9 16.5 5.4 16.8 5.1 17C3.2 18.2 2.2 19.6 2.1 20.4C2 20.7 2 21 2.1 21.2V21.3L2.9 21.8C3.1 21.9 3.4 22 3.6 22C4.9 22 6.4 20.5 8.4 17C8.5 17 8.6 16.9 8.7 16.9C10.4 16.4 12.4 16 15.2 15.7C16.8 16.5 18.8 16.9 20 16.9C20.7 16.9 21.2 16.7 21.5 16.4C21.8 16.1 21.9 15.7 22 15.3C22 15 22 14.7 21.8 14.5M3.4 20.9C3.5 20.3 4.2 19.2 5.4 18.2C5.6 18.1 5.8 17.9 6.2 17.7C5 19.6 4.1 20.6 3.4 20.9M10.8 3.2C10.9 3.1 10.9 3 11 3L11.2 3.1C11.5 3.5 11.5 4 11.3 4.9V5.2C11.2 5.6 11.2 6 11 6.5C10.6 5 10.6 3.9 10.8 3.2M8.8 15.8L8.6 15.9C8.7 15.4 9.1 14.8 9.4 14.2C10.1 12.8 10.7 11.5 11 10.3C11.7 11.8 12.5 12.9 13.5 13.8C13.7 14 13.9 14.2 14.2 14.3C12.8 14.5 10.9 15 8.8 15.8M20.9 15.7H20.5C19.8 15.7 18.6 15.4 17.4 14.9C17.5 14.7 17.7 14.7 17.8 14.7C20.1 14.7 20.7 15.1 20.9 15.3C21 15.4 21 15.4 21 15.5C21 15.6 21 15.6 20.9 15.7Z"; -var mdiAirConditioner = "M6.59,0.66C8.93,-1.15 11.47,1.06 12.04,4.5C12.47,4.5 12.89,4.62 13.27,4.84C13.79,4.24 14.25,3.42 14.07,2.5C13.65,0.35 16.06,-1.39 18.35,1.58C20.16,3.92 17.95,6.46 14.5,7.03C14.5,7.46 14.39,7.89 14.16,8.27C14.76,8.78 15.58,9.24 16.5,9.06C18.63,8.64 20.38,11.04 17.41,13.34C15.07,15.15 12.53,12.94 11.96,9.5C11.53,9.5 11.11,9.37 10.74,9.15C10.22,9.75 9.75,10.58 9.93,11.5C10.35,13.64 7.94,15.39 5.65,12.42C3.83,10.07 6.05,7.53 9.5,6.97C9.5,6.54 9.63,6.12 9.85,5.74C9.25,5.23 8.43,4.76 7.5,4.94C5.37,5.36 3.62,2.96 6.59,0.66M5,16H7A2,2 0 0,1 9,18V24H7V22H5V24H3V18A2,2 0 0,1 5,16M5,18V20H7V18H5M12.93,16H15L12.07,24H10L12.93,16M18,16H21V18H18V22H21V24H18A2,2 0 0,1 16,22V18A2,2 0 0,1 18,16Z"; -var mdiAirFilter = "M19,18.31V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V16.3C4.54,16.12 3.95,16 3,16A1,1 0 0,1 2,15A1,1 0 0,1 3,14C3.82,14 4.47,14.08 5,14.21V12.3C4.54,12.12 3.95,12 3,12A1,1 0 0,1 2,11A1,1 0 0,1 3,10C3.82,10 4.47,10.08 5,10.21V8.3C4.54,8.12 3.95,8 3,8A1,1 0 0,1 2,7A1,1 0 0,1 3,6C3.82,6 4.47,6.08 5,6.21V4A2,2 0 0,1 7,2H17A2,2 0 0,1 19,4V6.16C20.78,6.47 21.54,7.13 21.71,7.29C22.1,7.68 22.1,8.32 21.71,8.71C21.32,9.1 20.8,9.09 20.29,8.71V8.71C20.29,8.71 19.25,8 17,8C15.74,8 14.91,8.41 13.95,8.9C12.91,9.41 11.74,10 10,10C9.64,10 9.31,10 9,9.96V7.95C9.3,8 9.63,8 10,8C11.26,8 12.09,7.59 13.05,7.11C14.09,6.59 15.27,6 17,6V4H7V20H17V18C18.5,18 18.97,18.29 19,18.31M17,10C15.27,10 14.09,10.59 13.05,11.11C12.09,11.59 11.26,12 10,12C9.63,12 9.3,12 9,11.95V13.96C9.31,14 9.64,14 10,14C11.74,14 12.91,13.41 13.95,12.9C14.91,12.42 15.74,12 17,12C19.25,12 20.29,12.71 20.29,12.71V12.71C20.8,13.1 21.32,13.1 21.71,12.71C22.1,12.32 22.1,11.69 21.71,11.29C21.5,11.08 20.25,10 17,10M17,14C15.27,14 14.09,14.59 13.05,15.11C12.09,15.59 11.26,16 10,16C9.63,16 9.3,16 9,15.95V17.96C9.31,18 9.64,18 10,18C11.74,18 12.91,17.41 13.95,16.9C14.91,16.42 15.74,16 17,16C19.25,16 20.29,16.71 20.29,16.71V16.71C20.8,17.1 21.32,17.1 21.71,16.71C22.1,16.32 22.1,15.69 21.71,15.29C21.5,15.08 20.25,14 17,14Z"; -var mdiAirHorn = "M19,2.8V6L19,9.2C19,9.5 18.7,9.8 18.4,9.7C18.4,9.7 14.5,7.1 10,7.1V9.5H10.2C10.7,9.5 11.2,9.7 11.4,10.1L12.7,11.9C12.9,12.1 13,12.4 13,12.6V20.6C13,21.3 12.3,22 11.5,22H6.5C5.7,22 5,21.4 5,20.6V12.6C5,12.3 5.1,12.1 5.3,11.9L6.6,10.1C6.9,9.7 7.3,9.5 7.8,9.5H8V8C7.6,8.5 7,8.8 6.4,8.8C5.1,8.8 4,7.5 4,6C4,4.5 5.1,3.2 6.4,3.2C7,3.3 7.6,3.6 8,4V2.6H10V5C14.5,5 18.4,2.4 18.4,2.4C18.7,2.3 19,2.5 19,2.8Z"; -var mdiAirHumidifier = "M11 9C8.79 9 7 10.79 7 13S8.79 17 11 17 15 15.21 15 13 13.21 9 11 9M11 15C9.9 15 9 14.11 9 13S9.9 11 11 11 13 11.9 13 13 12.11 15 11 15M7 4H14C16.21 4 18 5.79 18 8V9H16V8C16 6.9 15.11 6 14 6H7C5.9 6 5 6.9 5 8V20H16V18H18V22H3V8C3 5.79 4.79 4 7 4M19 10.5C19 10.5 21 12.67 21 14C21 15.1 20.1 16 19 16S17 15.1 17 14C17 12.67 19 10.5 19 10.5"; -var mdiAirHumidifierOff = "M22.1 21.5L2.4 1.7L1.1 3L3.8 5.7C3.3 6.3 3 7.1 3 8V22H18V19.9L20.8 22.7L22.1 21.5M9.6 11.5L12.4 14.3C12.1 14.7 11.6 15 11 15C9.9 15 9 14.1 9 13C9 12.4 9.3 11.9 9.6 11.5M16 17.9V20H5V8C5 7.7 5.1 7.4 5.2 7.1L8.2 10.1C7.5 10.8 7 11.9 7 13C7 15.2 8.8 17 11 17C12.1 17 13.2 16.5 13.9 15.8L16 17.9M17 13.8C17.1 12.5 19 10.5 19 10.5S21 12.7 21 14C21 15 20.2 15.9 19.2 16L17 13.8M9.2 6L7.2 4H14C16.2 4 18 5.8 18 8V9H16V8C16 6.9 15.1 6 14 6H9.2Z"; -var mdiAirPurifier = "M11,9A4,4 0 0,1 15,13A4,4 0 0,1 11,17A4,4 0 0,1 7,13A4,4 0 0,1 11,9M11,11A2,2 0 0,0 9,13A2,2 0 0,0 11,15A2,2 0 0,0 13,13A2,2 0 0,0 11,11M7,4H14A4,4 0 0,1 18,8V9H16V8A2,2 0 0,0 14,6H7A2,2 0 0,0 5,8V20H16V18H18V22H3V8A4,4 0 0,1 7,4M16,11C18.5,11 18.5,9 21,9V11C18.5,11 18.5,13 16,13V11M16,15C18.5,15 18.5,13 21,13V15C18.5,15 18.5,17 16,17V15Z"; -var mdiAirbag = "M14,8A5,5 0 0,1 9,13A5,5 0 0,1 4,8A5,5 0 0,1 9,3A5,5 0 0,1 14,8M10.46,15.55L13,18.03L11,18.05L7.5,21.58L6,20.09L10.46,15.55M17,2C18.08,2 19,2.88 19,4C19,5.08 18.12,6 17,6C15.92,6 15,5.12 15,4C15,2.92 15.89,2 17,2M14.41,15H11.59L17.29,20.71L18.71,19.29L14.41,15M15.12,14.29L19.41,18.59L19.63,18.8C19.86,18.42 20,18 20,17.5V9.5A2.5,2.5 0 0,0 17.5,7A2.5,2.5 0 0,0 15,9.5V14.17L15.12,14.29Z"; -var mdiAirballoon = "M11,23A2,2 0 0,1 9,21V19H15V21A2,2 0 0,1 13,23H11M12,1C12.71,1 13.39,1.09 14.05,1.26C15.22,2.83 16,5.71 16,9C16,11.28 15.62,13.37 15,16A2,2 0 0,1 13,18H11A2,2 0 0,1 9,16C8.38,13.37 8,11.28 8,9C8,5.71 8.78,2.83 9.95,1.26C10.61,1.09 11.29,1 12,1M20,8C20,11.18 18.15,15.92 15.46,17.21C16.41,15.39 17,11.83 17,9C17,6.17 16.41,3.61 15.46,1.79C18.15,3.08 20,4.82 20,8M4,8C4,4.82 5.85,3.08 8.54,1.79C7.59,3.61 7,6.17 7,9C7,11.83 7.59,15.39 8.54,17.21C5.85,15.92 4,11.18 4,8Z"; -var mdiAirballoonOutline = "M11 23C9.9 23 9 22.1 9 21V19H15V21C15 22.1 14.1 23 13 23H11M12 3C12.28 3 12.55 3 12.81 3.05C13.42 4.22 14 6.26 14 9C14 11.1 13 16 13 16H11C11 16 10 11.1 10 9C10 6.26 10.58 4.22 11.19 3.05C11.45 3 11.72 3 12 3M12 1C11.29 1 10.61 1.09 9.95 1.26C8.78 2.83 8 5.71 8 9C8 11.28 8.38 13.37 9 16C9 17.1 9.9 18 11 18H13C14.1 18 15 17.1 15 16C15.62 13.37 16 11.28 16 9C16 5.71 15.22 2.83 14.05 1.26C13.39 1.09 12.71 1 12 1M4 8C4 11.18 5.85 15.92 8.54 17.21C8 16.21 7.61 14.67 7.34 13C6.55 11.53 6 9.62 6 8C6 6.66 6.44 5.67 7.47 4.8C7.73 3.67 8.09 2.65 8.54 1.79C5.85 3.08 4 4.82 4 8M15.46 1.79C15.91 2.65 16.27 3.67 16.53 4.8C17.56 5.67 18 6.66 18 8C18 9.62 17.45 11.53 16.66 13C16.39 14.67 16 16.21 15.46 17.21C18.15 15.92 20 11.18 20 8S18.15 3.08 15.46 1.79Z"; -var mdiAirplane = "M21,16V14L13,9V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V9L2,14V16L10,13.5V19L8,20.5V22L11.5,21L15,22V20.5L13,19V13.5L21,16Z"; -var mdiAirplaneLanding = "M2.5,19H21.5V21H2.5V19M9.68,13.27L14.03,14.43L19.34,15.85C20.14,16.06 20.96,15.59 21.18,14.79C21.39,14 20.92,13.17 20.12,12.95L14.81,11.53L12.05,2.5L10.12,2V10.28L5.15,8.95L4.22,6.63L2.77,6.24V11.41L4.37,11.84L9.68,13.27Z"; -var mdiAirplaneOff = "M3.15,5.27L8.13,10.26L2.15,14V16L10.15,13.5V19L8.15,20.5V22L11.65,21L15.15,22V20.5L13.15,19V15.27L18.87,21L20.15,19.73L4.42,4M13.15,9V3.5A1.5,1.5 0 0,0 11.65,2A1.5,1.5 0 0,0 10.15,3.5V7.18L17.97,15L21.15,16V14L13.15,9Z"; -var mdiAirplaneTakeoff = "M2.5,19H21.5V21H2.5V19M22.07,9.64C21.86,8.84 21.03,8.36 20.23,8.58L14.92,10L8,3.57L6.09,4.08L10.23,11.25L5.26,12.58L3.29,11.04L1.84,11.43L3.66,14.59L4.43,15.92L6.03,15.5L11.34,14.07L15.69,12.91L21,11.5C21.81,11.26 22.28,10.44 22.07,9.64Z"; -var mdiAirport = "M14.97,5.92C14.83,5.41 14.3,5.1 13.79,5.24L10.39,6.15L5.95,2.03L4.72,2.36L7.38,6.95L4.19,7.8L2.93,6.82L2,7.07L3.66,9.95L14.28,7.11C14.8,6.96 15.1,6.43 14.97,5.92M21,10L20,12H15L14,10L15,9H17V7H18V9H20L21,10M22,20V22H2V20H15V13H20V20H22Z"; -var mdiAlarm = "M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12.5,8H11V14L15.75,16.85L16.5,15.62L12.5,13.25V8M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z"; -var mdiAlarmBell = "M15,18.66V22H5V18.66C8.09,20.45 11.91,20.45 15,18.66M22,4A2,2 0 0,0 20,2C19.69,2 19.39,2.07 19.12,2.21C18.82,2.36 18.56,2.58 18.36,2.85C17.72,3.75 17.94,5 18.85,5.64C19.18,5.87 19.59,6 20,6C20.08,6 20.16,6 20.24,6C21.97,10.43 20.66,15.46 17,18.5C16.68,18.75 16.35,19 16,19.22V21H17V19.74C20.14,17.5 22,13.86 22,10C22,8.5 21.72,7 21.17,5.62C21.69,5.24 22,4.64 22,4M18,10A8,8 0 0,1 10,18A8,8 0 0,1 2,10A8,8 0 0,1 10,2A8,8 0 0,1 18,10Z"; -var mdiAlarmCheck = "M10.54,14.53L8.41,12.4L7.35,13.46L10.53,16.64L16.53,10.64L15.47,9.58L10.54,14.53M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z"; -var mdiAlarmLight = "M6,6.9L3.87,4.78L5.28,3.37L7.4,5.5L6,6.9M13,1V4H11V1H13M20.13,4.78L18,6.9L16.6,5.5L18.72,3.37L20.13,4.78M4.5,10.5V12.5H1.5V10.5H4.5M19.5,10.5H22.5V12.5H19.5V10.5M6,20H18A2,2 0 0,1 20,22H4A2,2 0 0,1 6,20M12,5A6,6 0 0,1 18,11V19H6V11A6,6 0 0,1 12,5Z"; -var mdiAlarmLightOff = "M18 14.8L9 5.8C9.9 5.3 10.9 5 12 5C15.3 5 18 7.7 18 11V14.8M20.1 4.8L18.7 3.4L16.6 5.5L18 6.9L20.1 4.8M19.5 10.5V12.5H22.5V10.5H19.5M4.5 10.5H1.5V12.5H4.5V10.5M1.1 3L6.6 8.5C6.2 9.2 6 10.1 6 11V19H17.1L18.1 20H6C4.9 20 4 20.9 4 22H20.1L20.8 22.7L22.1 21.4L2.4 1.7L1.1 3M13 1H11V4H13V1Z"; -var mdiAlarmLightOffOutline = "M10.5 7.3L9 5.8C9.9 5.3 10.9 5 12 5C15.3 5 18 7.7 18 11V14.8L16 12.8V11C16 8.8 14.2 7 12 7C11.5 7 11 7.1 10.5 7.3M20.1 4.8L18.7 3.4L16.6 5.5L18 6.9L20.1 4.8M19.5 10.5V12.5H22.5V10.5H19.5M4.5 10.5H1.5V12.5H4.5V10.5M2.4 1.7L22.1 21.4L20.8 22.7L20.1 22H4C4 20.9 4.9 20 6 20H18.1L17.1 19H6V11C6 10.1 6.2 9.2 6.6 8.5L1.1 3L2.4 1.7M8 17H15.1L8.1 10C8.1 10.3 8 10.7 8 11V17M13 1H11V4H13V1Z"; -var mdiAlarmLightOutline = "M6,6.9L3.87,4.78L5.28,3.37L7.4,5.5L6,6.9M13,1V4H11V1H13M20.13,4.78L18,6.9L16.6,5.5L18.72,3.37L20.13,4.78M4.5,10.5V12.5H1.5V10.5H4.5M19.5,10.5H22.5V12.5H19.5V10.5M6,20H18A2,2 0 0,1 20,22H4A2,2 0 0,1 6,20M12,5A6,6 0 0,1 18,11V19H6V11A6,6 0 0,1 12,5M12,7A4,4 0 0,0 8,11V17H16V11A4,4 0 0,0 12,7Z"; -var mdiAlarmMultiple = "M9.29,3.25L5.16,6.72L4,5.34L8.14,1.87L9.29,3.25M22,5.35L20.84,6.73L16.7,3.25L17.86,1.87L22,5.35M13,4A8,8 0 0,1 21,12A8,8 0 0,1 13,20A8,8 0 0,1 5,12A8,8 0 0,1 13,4M13,6A6,6 0 0,0 7,12A6,6 0 0,0 13,18A6,6 0 0,0 19,12A6,6 0 0,0 13,6M12,7.5H13.5V12.03L16.72,13.5L16.1,14.86L12,13V7.5M1,14C1,11.5 2.13,9.3 3.91,7.83C3.33,9.1 3,10.5 3,12L3.06,13.13L3,14C3,16.28 4.27,18.26 6.14,19.28C7.44,20.5 9.07,21.39 10.89,21.78C10.28,21.92 9.65,22 9,22A8,8 0 0,1 1,14Z"; -var mdiAlarmNote = "M17.4,1.86L16.11,3.39L20.71,7.25L22,5.72L17.4,1.86M6.6,1.86L2,5.71L3.29,7.24L7.88,3.39L6.6,1.86M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22C12.33,22 12.67,22 13,21.94V19.94C12.67,20 12.33,20 12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6C15.1,6 17.83,8.03 18.71,11H20.78C19.85,6.9 16.2,4 12,4M23,15H20V20.5A2.5,2.5 0 0,1 17.5,23A2.5,2.5 0 0,1 15,20.5A2.5,2.5 0 0,1 17.5,18C18.04,18 18.57,18.18 19,18.5V13H23V15M11.5,8V13.25L7.5,15.62L8.25,16.85L13,14V8H11.5Z"; -var mdiAlarmNoteOff = "M19,13V15.8L20,16.8V15H23V13H19M2.38,1.73L1.11,3L3,4.88L2,5.71L3.29,7.24L4.41,6.3L5.21,7.1C1.95,10.85 2.35,16.54 6.11,19.8C7.74,21.22 9.83,22 12,22C12.33,22 12.67,22 13,21.94V19.94C12.67,20 12.33,20 12,20A7,7 0 0,1 5,13C5,11.36 5.57,9.77 6.63,8.5L11.41,13.3L7.5,15.62L8.25,16.85L12.44,14.33L16.38,18.27C15.14,18.88 14.64,20.38 15.25,21.62C15.86,22.86 17.36,23.36 18.6,22.75C19.09,22.5 19.5,22.11 19.73,21.62L20.84,22.73L22.11,21.46L2.38,1.73M12,6C15.1,6 17.83,8.03 18.71,11H20.78C19.85,6.9 16.2,4 12,4C10.65,4 9.31,4.3 8.1,4.9L9.62,6.42C10.38,6.14 11.19,6 12,6M11.5,8.3L13,9.8V8H11.5V8.3M7.88,3.39L6.6,1.86L5.76,2.56L7.18,4L7.88,3.39M17.4,1.86L16.11,3.39L20.71,7.25L22,5.72L17.4,1.86Z"; -var mdiAlarmOff = "M8,3.28L6.6,1.86L5.74,2.57L7.16,4M16.47,18.39C15.26,19.39 13.7,20 12,20A7,7 0 0,1 5,13C5,11.3 5.61,9.74 6.61,8.53M2.92,2.29L1.65,3.57L3,4.9L1.87,5.83L3.29,7.25L4.4,6.31L5.2,7.11C3.83,8.69 3,10.75 3,13A9,9 0 0,0 12,22C14.25,22 16.31,21.17 17.89,19.8L20.09,22L21.36,20.73L3.89,3.27L2.92,2.29M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,6A7,7 0 0,1 19,13C19,13.84 18.84,14.65 18.57,15.4L20.09,16.92C20.67,15.73 21,14.41 21,13A9,9 0 0,0 12,4C10.59,4 9.27,4.33 8.08,4.91L9.6,6.43C10.35,6.16 11.16,6 12,6Z"; -var mdiAlarmPanel = "M20 3H4C2.9 3 2 3.9 2 5V19C2 20.1 2.9 21 4 21H20C21.1 21 22 20.1 22 19V5C22 3.9 21.1 3 20 3M8 19H5V17H8V19M8 16H5V14H8V16M8 13H5V11H8V13M13.5 19H10.5V17H13.5V19M13.5 16H10.5V14H13.5V16M13.5 13H10.5V11H13.5V13M19 19H16V17H19V19M19 16H16V14H19V16M19 13H16V11H19V13M19 9H5V5H19V9Z"; -var mdiAlarmPanelOutline = "M9 12H6V10H9V12M13.5 10H10.5V12H13.5V10M18 10H15V12H18V10M18 6H6V9H18V6M20 5H4L4 19L20 19L20 5L20 5M20 3C21.1 3 22 3.9 22 5V19C22 20.1 21.1 21 20 21H4C2.9 21 2 20.1 2 19V5C2 3.9 2.9 3 4 3H20M9 13H6V15H9V13M13.5 13H10.5V15H13.5V13M18 13H15V15H18V13M9 16H6V18H9V16M13.5 16H10.5V18H13.5V16M18 16H15V18H18V16Z"; -var mdiAlarmPlus = "M13,9H11V12H8V14H11V17H13V14H16V12H13M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39Z"; -var mdiAlarmSnooze = "M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M9,11H12.63L9,15.2V17H15V15H11.37L15,10.8V9H9V11Z"; -var mdiAlbum = "M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12,16.5C9.5,16.5 7.5,14.5 7.5,12C7.5,9.5 9.5,7.5 12,7.5C14.5,7.5 16.5,9.5 16.5,12C16.5,14.5 14.5,16.5 12,16.5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiAlert = "M13 14H11V9H13M13 18H11V16H13M1 21H23L12 2L1 21Z"; -var mdiAlertBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M13,13V7H11V13H13M13,17V15H11V17H13Z"; -var mdiAlertBoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M11,15H13V17H11V15M11,7H13V13H11V7"; -var mdiAlertCircle = "M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiAlertCircleCheck = "M18.75 22.16L16 19.16L17.16 18L18.75 19.59L22.34 16L23.5 17.41L18.75 22.16M13 13V7H11V13H13M13 17V15H11V17H13M12 2C17.5 2 22 6.5 22 12L21.91 13.31C21.31 13.11 20.67 13 20 13C16.69 13 14 15.69 14 19C14 19.95 14.22 20.85 14.62 21.65C13.78 21.88 12.91 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2Z"; -var mdiAlertCircleCheckOutline = "M18.75 22.16L16 19.16L17.16 18L18.75 19.59L22.34 16L23.5 17.41L18.75 22.16M11 15H13V17H11V15M11 7H13V13H11V7M12 2C17.5 2 22 6.5 22 12L21.92 13.31C21.31 13.11 20.67 13 19.94 13L20 12C20 7.58 16.42 4 12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C12.71 20 13.39 19.91 14.05 19.74C14.13 20.42 14.33 21.06 14.62 21.65C13.78 21.88 12.9 22 12 22C6.47 22 2 17.5 2 12C2 6.5 6.47 2 12 2Z"; -var mdiAlertCircleOutline = "M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"; -var mdiAlertDecagram = "M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12M13,17H11V15H13V17M13,13H11V7H13V13Z"; -var mdiAlertDecagramOutline = "M23,12L20.56,14.78L20.9,18.46L17.29,19.28L15.4,22.46L12,21L8.6,22.47L6.71,19.29L3.1,18.47L3.44,14.78L1,12L3.44,9.21L3.1,5.53L6.71,4.72L8.6,1.54L12,3L15.4,1.54L17.29,4.72L20.9,5.54L20.56,9.22L23,12M20.33,12L18.5,9.89L18.74,7.1L16,6.5L14.58,4.07L12,5.18L9.42,4.07L8,6.5L5.26,7.09L5.5,9.88L3.67,12L5.5,14.1L5.26,16.9L8,17.5L9.42,19.93L12,18.81L14.58,19.92L16,17.5L18.74,16.89L18.5,14.1L20.33,12M11,15H13V17H11V15M11,7H13V13H11V7"; -var mdiAlertMinus = "M14 19C14 16.21 15.91 13.87 18.5 13.2L12 2L1 21H14.35C14.13 20.37 14 19.7 14 19M13 18H11V16H13V18M13 14H11V10H13V14M24 18V20H16V18H24Z"; -var mdiAlertMinusOutline = "M11 15.5H13V17.5H11V15.5M14 19C14 18.86 14 18.73 14 18.6H5.4L12 7.3L16.11 14.44C16.62 14 17.2 13.65 17.84 13.41L12 3.3L2 20.6H14.22C14.08 20.09 14 19.56 14 19M13 10.5H11V14.5H13V10.5M16 18V20H24V18H16Z"; -var mdiAlertOctagon = "M13 13H11V7H13M11 15H13V17H11M15.73 3H8.27L3 8.27V15.73L8.27 21H15.73L21 15.73V8.27L15.73 3Z"; -var mdiAlertOctagonOutline = "M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1M11,15H13V17H11V15M11,7H13V13H11V7"; -var mdiAlertOctagram = "M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06M13,17V15H11V17H13M13,13V7H11V13H13Z"; -var mdiAlertOctagramOutline = "M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06M4.81,9L6.05,12L4.81,15L7.79,16.21L9,19.19L12,17.95L15,19.19L16.21,16.21L19.19,15L17.95,12L19.19,9L16.21,7.79L15,4.81L12,6.05L9,4.81L7.79,7.79L4.81,9M11,15H13V17H11V15M11,7H13V13H11V7"; -var mdiAlertOutline = "M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16"; -var mdiAlertPlus = "M14 19C14 16.21 15.91 13.87 18.5 13.2L12 2L1 21H14.35C14.13 20.37 14 19.7 14 19M13 18H11V16H13V18M13 14H11V10H13V14M21 15V18H24V20H21V23H19V20H16V18H19V15H21Z"; -var mdiAlertPlusOutline = "M11 15.5H13V17.5H11V15.5M14 19C14 18.86 14 18.73 14 18.6H5.4L12 7.3L16.11 14.44C16.62 14 17.2 13.65 17.84 13.41L12 3.3L2 20.6H14.22C14.08 20.09 14 19.56 14 19M13 10.5H11V14.5H13V10.5M19 15V18H16V20H19V23H21V20H24V18H21V15H19Z"; -var mdiAlertRemove = "M14 19C14 16.21 15.91 13.87 18.5 13.2L12 2L1 21H14.35C14.13 20.37 14 19.7 14 19M13 18H11V16H13V18M13 14H11V10H13V14M23.54 16.88L21.41 19L23.54 21.12L22.12 22.54L20 20.41L17.88 22.54L16.47 21.12L18.59 19L16.47 16.88L17.88 15.47L20 17.59L22.12 15.46L23.54 16.88Z"; -var mdiAlertRemoveOutline = "M11 15.5H13V17.5H11V15.5M14 19C14 18.86 14 18.73 14 18.6H5.4L12 7.3L16.11 14.44C16.62 14 17.2 13.65 17.84 13.41L12 3.3L2 20.6H14.22C14.08 20.09 14 19.56 14 19M13 10.5H11V14.5H13V10.5M22.12 15.46L20 17.59L17.88 15.46L16.47 16.88L18.59 19L16.47 21.12L17.88 22.54L20 20.41L22.12 22.54L23.54 21.12L21.41 19L23.54 16.88L22.12 15.46Z"; -var mdiAlertRhombus = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M11 7H13V13H11V7M11 15H13V17H11V15Z"; -var mdiAlertRhombusOutline = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12M11 7V13H13V7M11 15V17H13V15Z"; -var mdiAlien = "M12,3C16.97,3 21,6.58 21,11C21,15.42 15,21 12,21C9,21 3,15.42 3,11C3,6.58 7.03,3 12,3M10.31,10.93C9.29,9.29 7.47,8.58 6.25,9.34C5.03,10.1 4.87,12.05 5.89,13.69C6.92,15.33 8.74,16.04 9.96,15.28C11.18,14.5 11.33,12.57 10.31,10.93M13.69,10.93C12.67,12.57 12.82,14.5 14.04,15.28C15.26,16.04 17.08,15.33 18.11,13.69C19.13,12.05 18.97,10.1 17.75,9.34C16.53,8.58 14.71,9.29 13.69,10.93M12,17.75C10,17.75 9.5,17 9.5,17C9.5,17.03 10,19 12,19C14,19 14.5,17 14.5,17C14.5,17 14,17.75 12,17.75Z"; -var mdiAlienOutline = "M10.31 10.93C11.33 12.57 11.18 14.5 9.96 15.28C8.74 16.04 6.92 15.33 5.89 13.69C4.87 12.05 5.03 10.1 6.25 9.34C7.47 8.58 9.29 9.29 10.31 10.93M12 17.75C14 17.75 14.5 17 14.5 17C14.5 17 14 19 12 19C10 19 9.5 17.03 9.5 17C9.5 17 10 17.75 12 17.75M17.75 9.34C18.97 10.1 19.13 12.05 18.11 13.69C17.08 15.33 15.26 16.04 14.04 15.28C12.82 14.5 12.67 12.57 13.69 10.93C14.71 9.29 16.53 8.58 17.75 9.34M12 20C14.5 20 20 14.86 20 11C20 7.14 16.41 4 12 4C7.59 4 4 7.14 4 11C4 14.86 9.5 20 12 20M12 2C17.5 2 22 6.04 22 11C22 15.08 16.32 22 12 22C7.68 22 2 15.08 2 11C2 6.04 6.5 2 12 2Z"; -var mdiAlignHorizontalCenter = "M20 19H13V22H11V19H4V13H11V11H7V5H11V2H13V5H17V11H13V13H20V19Z"; -var mdiAlignHorizontalLeft = "M22 13V19H6V13H22M6 5V11H16V5H6M2 2V22H4V2H2"; -var mdiAlignHorizontalRight = "M18 13V19H2V13H18M8 5V11H18V5H8M20 2V22H22V2H20Z"; -var mdiAlignVerticalBottom = "M11 18H5V2H11V18M19 8H13V18H19V8M22 20H2V22H22V20Z"; -var mdiAlignVerticalCenter = "M5 20V13H2V11H5V4H11V11H13V7H19V11H22V13H19V17H13V13H11V20H5Z"; -var mdiAlignVerticalTop = "M11 22H5V6H11V22M19 6H13V16H19V6M22 2H2V4H22V2Z"; -var mdiAllInclusive = "M18.6,6.62C17.16,6.62 15.8,7.18 14.83,8.15L7.8,14.39C7.16,15.03 6.31,15.38 5.4,15.38C3.53,15.38 2,13.87 2,12C2,10.13 3.53,8.62 5.4,8.62C6.31,8.62 7.16,8.97 7.84,9.65L8.97,10.65L10.5,9.31L9.22,8.2C8.2,7.18 6.84,6.62 5.4,6.62C2.42,6.62 0,9.04 0,12C0,14.96 2.42,17.38 5.4,17.38C6.84,17.38 8.2,16.82 9.17,15.85L16.2,9.61C16.84,8.97 17.69,8.62 18.6,8.62C20.47,8.62 22,10.13 22,12C22,13.87 20.47,15.38 18.6,15.38C17.7,15.38 16.84,15.03 16.16,14.35L15,13.34L13.5,14.68L14.78,15.8C15.8,16.81 17.15,17.37 18.6,17.37C21.58,17.37 24,14.96 24,12C24,9 21.58,6.62 18.6,6.62Z"; -var mdiAllergy = "M19.75 5.33A1.25 1.25 0 0 0 18.5 6.58V11.17H17.67V4.08A1.25 1.25 0 0 0 15.17 4.08V11.17H14.33V3.25A1.25 1.25 0 1 0 11.83 3.25V11.17H11V5.33A1.25 1.25 0 0 0 8.5 5.33V15.26L4.91 13.26A1 1 0 0 0 4.41 13.12A1 1 0 0 0 3.75 13.37L2.67 14.37L9.21 21A3.29 3.29 0 0 0 11.58 22H17.67A3.33 3.33 0 0 0 21 18.67V6.58A1.25 1.25 0 0 0 19.75 5.33M11 15A1 1 0 1 1 12 14A1 1 0 0 1 11 15M13 18A1 1 0 1 1 14 17A1 1 0 0 1 13 18M18 16A1 1 0 1 1 19 15A1 1 0 0 1 18 16M17 19A1 1 0 1 1 18 18A1 1 0 0 1 17 19M15 15A1 1 0 1 1 16 14A1 1 0 0 1 15 15Z"; -var mdiAlpha = "M18.08,17.8C17.62,17.93 17.21,18 16.85,18C15.65,18 14.84,17.12 14.43,15.35H14.38C13.39,17.26 12,18.21 10.25,18.21C8.94,18.21 7.89,17.72 7.1,16.73C6.31,15.74 5.92,14.5 5.92,13C5.92,11.25 6.37,9.85 7.26,8.76C8.15,7.67 9.36,7.12 10.89,7.12C11.71,7.12 12.45,7.35 13.09,7.8C13.73,8.26 14.22,8.9 14.56,9.73H14.6L15.31,7.33H17.87L15.73,12.65C15.97,13.89 16.22,14.74 16.5,15.19C16.74,15.64 17.08,15.87 17.5,15.87C17.74,15.87 17.93,15.83 18.1,15.76L18.08,17.8M13.82,12.56C13.61,11.43 13.27,10.55 12.81,9.95C12.36,9.34 11.81,9.04 11.18,9.04C10.36,9.04 9.7,9.41 9.21,10.14C8.72,10.88 8.5,11.79 8.5,12.86C8.5,13.84 8.69,14.65 9.12,15.31C9.54,15.97 10.11,16.29 10.82,16.29C11.42,16.29 11.97,16 12.46,15.45C12.96,14.88 13.37,14.05 13.7,12.96L13.82,12.56Z"; -var mdiAlphaA = "M11,7A2,2 0 0,0 9,9V17H11V13H13V17H15V9A2,2 0 0,0 13,7H11M11,9H13V11H11V9Z"; -var mdiAlphaABox = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M11,7A2,2 0 0,0 9,9V17H11V13H13V17H15V9A2,2 0 0,0 13,7H11M11,9H13V11H11V9Z"; -var mdiAlphaABoxOutline = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5M11,7H13A2,2 0 0,1 15,9V17H13V13H11V17H9V9A2,2 0 0,1 11,7M11,9V11H13V9H11Z"; -var mdiAlphaACircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,7A2,2 0 0,0 9,9V17H11V13H13V17H15V9A2,2 0 0,0 13,7H11M11,9H13V11H11V9Z"; -var mdiAlphaACircleOutline = "M11,7H13A2,2 0 0,1 15,9V17H13V13H11V17H9V9A2,2 0 0,1 11,7M11,9V11H13V9H11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaB = "M15,10.5V9A2,2 0 0,0 13,7H9V17H13A2,2 0 0,0 15,15V13.5C15,12.7 14.3,12 13.5,12C14.3,12 15,11.3 15,10.5M13,15H11V13H13V15M13,11H11V9H13V11Z"; -var mdiAlphaBBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,10.5V9A2,2 0 0,0 13,7H9V17H13A2,2 0 0,0 15,15V13.5C15,12.7 14.3,12 13.5,12C14.3,12 15,11.3 15,10.5M13,15H11V13H13V15M13,11H11V9H13V11Z"; -var mdiAlphaBBoxOutline = "M15,10.5C15,11.3 14.3,12 13.5,12C14.3,12 15,12.7 15,13.5V15A2,2 0 0,1 13,17H9V7H13A2,2 0 0,1 15,9V10.5M13,15V13H11V15H13M13,11V9H11V11H13M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z"; -var mdiAlphaBCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M15,10.5V9A2,2 0 0,0 13,7H9V17H13A2,2 0 0,0 15,15V13.5C15,12.7 14.3,12 13.5,12C14.3,12 15,11.3 15,10.5M13,15H11V13H13V15M13,11H11V9H13V11Z"; -var mdiAlphaBCircleOutline = "M15,10.5C15,11.3 14.3,12 13.5,12C14.3,12 15,12.7 15,13.5V15A2,2 0 0,1 13,17H9V7H13A2,2 0 0,1 15,9V10.5M13,15V13H11V15H13M13,11V9H11V11H13M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaC = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V14H13V15H11V9H13V10H15V9A2,2 0 0,0 13,7H11Z"; -var mdiAlphaCBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V14H13V15H11V9H13V10H15V9A2,2 0 0,0 13,7H11Z"; -var mdiAlphaCBoxOutline = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5M11,7H13A2,2 0 0,1 15,9V10H13V9H11V15H13V14H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7Z"; -var mdiAlphaCCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V14H13V15H11V9H13V10H15V9A2,2 0 0,0 13,7H11Z"; -var mdiAlphaCCircleOutline = "M11,7H13A2,2 0 0,1 15,9V10H13V9H11V15H13V14H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaD = "M9,7V17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H9M11,9H13V15H11V9Z"; -var mdiAlphaDBox = "M9,7V17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H9M11,9H13V15H11V9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaDBoxOutline = "M9,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H9V7M11,9V15H13V9H11M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z"; -var mdiAlphaDCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H9M11,9H13V15H11V9Z"; -var mdiAlphaDCircleOutline = "M9,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H9V7M11,9V15H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaE = "M9,7V17H15V15H11V13H15V11H11V9H15V7H9Z"; -var mdiAlphaEBox = "M9,7V17H15V15H11V13H15V11H11V9H15V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaEBoxOutline = "M9,7H15V9H11V11H15V13H11V15H15V17H9V7M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z"; -var mdiAlphaECircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H15V15H11V13H15V11H11V9H15V7H9Z"; -var mdiAlphaECircleOutline = "M9,7H15V9H11V11H15V13H11V15H15V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaF = "M9,7V17H11V13H14V11H11V9H15V7H9Z"; -var mdiAlphaFBox = "M9,7V17H11V13H14V11H11V9H15V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaFBoxOutline = "M9,7H15V9H11V11H14V13H11V17H9V7M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z"; -var mdiAlphaFCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H11V13H14V11H11V9H15V7H9Z"; -var mdiAlphaFCircleOutline = "M9,7H15V9H11V11H14V13H11V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaG = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V11H13V15H11V9H15V7H11Z"; -var mdiAlphaGBox = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V11H13V15H11V9H15V7H11M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaGBoxOutline = "M11,7H15V9H11V15H13V11H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z"; -var mdiAlphaGCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V11H13V15H11V9H15V7H11Z"; -var mdiAlphaGCircleOutline = "M11,7H15V9H11V15H13V11H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaH = "M9,7V17H11V13H13V17H15V7H13V11H11V7H9Z"; -var mdiAlphaHBox = "M9,7V17H11V13H13V17H15V7H13V11H11V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaHBoxOutline = "M9,7H11V11H13V7H15V17H13V13H11V17H9V7M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z"; -var mdiAlphaHCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H11V13H13V17H15V7H13V11H11V7H9Z"; -var mdiAlphaHCircleOutline = "M9,7H11V11H13V7H15V17H13V13H11V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaI = "M14,7V9H13V15H14V17H10V15H11V9H10V7H14Z"; -var mdiAlphaIBox = "M14,7H10V9H11V15H10V17H14V15H13V9H14V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaIBoxOutline = "M14,7V9H13V15H14V17H10V15H11V9H10V7H14M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaICircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M14,7H10V9H11V15H10V17H14V15H13V9H14V7Z"; -var mdiAlphaICircleOutline = "M14,7V9H13V15H14V17H10V15H11V9H10V7H14M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaJ = "M13,7V15H11V14H9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13Z"; -var mdiAlphaJBox = "M13,7V15H11V14H9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaJBoxOutline = "M13,7H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V14H11V15H13V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaJCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M13,7V15H11V14H9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13Z"; -var mdiAlphaJCircleOutline = "M13,7H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V14H11V15H13V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaK = "M9,7V17H11V13.67L13,17H15L12,12L15,7H13L11,10.33V7H9Z"; -var mdiAlphaKBox = "M9,7V17H11V13.67L13,17H15L12,12L15,7H13L11,10.33V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaKBoxOutline = "M9,7H11V10.33L13,7H15L12,12L15,17H13L11,13.67V17H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaKCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H11V13.67L13,17H15L12,12L15,7H13L11,10.33V7H9Z"; -var mdiAlphaKCircleOutline = "M9,7H11V10.33L13,7H15L12,12L15,17H13L11,13.67V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaL = "M9,7V17H15V15H11V7H9Z"; -var mdiAlphaLBox = "M9,7V17H15V15H11V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaLBoxOutline = "M9,7H11V15H15V17H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaLCircle = "M9,7V17H15V15H11V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaLCircleOutline = "M9,7H11V15H15V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaM = "M9,7A2,2 0 0,0 7,9V17H9V9H11V16H13V9H15V17H17V9A2,2 0 0,0 15,7H9Z"; -var mdiAlphaMBox = "M9,7A2,2 0 0,0 7,9V17H9V9H11V16H13V9H15V17H17V9A2,2 0 0,0 15,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaMBoxOutline = "M9,7H15A2,2 0 0,1 17,9V17H15V9H13V16H11V9H9V17H7V9A2,2 0 0,1 9,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaMCircle = "M9,7A2,2 0 0,0 7,9V17H9V9H11V16H13V9H15V17H17V9A2,2 0 0,0 15,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaMCircleOutline = "M9,7H15A2,2 0 0,1 17,9V17H15V9H13V16H11V9H9V17H7V9A2,2 0 0,1 9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaN = "M9,7V17H11V12L13,17H15V7H13V12L11,7H9Z"; -var mdiAlphaNBox = "M9,7V17H11V12L13,17H15V7H13V12L11,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaNBoxOutline = "M9,7H11L13,12V7H15V17H13L11,12V17H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaNCircle = "M9,7V17H11V12L13,17H15V7H13V12L11,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaNCircleOutline = "M9,7H11L13,12V7H15V17H13L11,12V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaO = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z"; -var mdiAlphaOBox = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaOBoxOutline = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z"; -var mdiAlphaOCircle = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaOCircleOutline = "M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaP = "M9,7V17H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9Z"; -var mdiAlphaPBox = "M9,7V17H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaPBoxOutline = "M9,7H13A2,2 0 0,1 15,9V11A2,2 0 0,1 13,13H11V17H9V7M11,9V11H13V9H11M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaPCircle = "M9,7V17H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaPCircleOutline = "M9,7H13A2,2 0 0,1 15,9V11A2,2 0 0,1 13,13H11V17H9V7M11,9V11H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaQ = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17V19H13V17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z"; -var mdiAlphaQBox = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17V19H13V17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M5,4H19A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V6A2,2 0 0,1 5,4Z"; -var mdiAlphaQBoxOutline = "M5,4H19A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V6A2,2 0 0,1 5,4M5,6V20H19V6H5M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17V19H11V17A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z"; -var mdiAlphaQCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17V19H13V17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z"; -var mdiAlphaQCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17V19H11V17A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z"; -var mdiAlphaR = "M9,7V17H11V13H11.8L13,17H15L13.76,12.85C14.5,12.55 15,11.84 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9Z"; -var mdiAlphaRBox = "M9,7V17H11V13H11.8L13,17H15L13.76,12.85C14.5,12.55 15,11.84 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaRBoxOutline = "M9,7H13A2,2 0 0,1 15,9V11C15,11.84 14.5,12.55 13.76,12.85L15,17H13L11.8,13H11V17H9V7M11,9V11H13V9H11M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaRCircle = "M9,7V17H11V13H11.8L13,17H15L13.76,12.85C14.5,12.55 15,11.84 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaRCircleOutline = "M9,7H13A2,2 0 0,1 15,9V11C15,11.84 14.5,12.55 13.76,12.85L15,17H13L11.8,13H11V17H9V7M11,9V11H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,16.41 7.58,20 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaS = "M11,7A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11Z"; -var mdiAlphaSBox = "M11,7A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaSBoxOutline = "M11,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H9V15H13V13H11A2,2 0 0,1 9,11V9A2,2 0 0,1 11,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaSCircle = "M11,7A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaSCircleOutline = "M11,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H9V15H13V13H11A2,2 0 0,1 9,11V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaT = "M9,7V9H11V17H13V9H15V7H9Z"; -var mdiAlphaTBox = "M9,7V9H11V17H13V9H15V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaTBoxOutline = "M9,7H15V9H13V17H11V9H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaTCircle = "M9,7V9H11V17H13V9H15V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaTCircleOutline = "M9,7H15V9H13V17H11V9H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaU = "M9,7V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13V15H11V7H9Z"; -var mdiAlphaUBox = "M9,7V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13V15H11V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaUBoxOutline = "M9,7H11V15H13V7H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaUCircle = "M9,7V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13V15H11V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaUCircleOutline = "M9,7H11V15H13V7H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaV = "M9,7L11,17H13L15,7H13L12,12L11,7H9Z"; -var mdiAlphaVBox = "M9,7L11,17H13L15,7H13L12,12L11,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaVBoxOutline = "M9,7H11L12,12L13,7H15L13,17H11L9,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaVCircle = "M9,7L11,17H13L15,7H13L12,12L11,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaVCircleOutline = "M9,7H11L12,12L13,7H15L13,17H11L9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaW = "M9,17A2,2 0 0,1 7,15V7H9V15H11V8H13V15H15V7H17V15A2,2 0 0,1 15,17H9Z"; -var mdiAlphaWBox = "M9,17H15A2,2 0 0,0 17,15V7H15V15H13V8H11V15H9V7H7V15A2,2 0 0,0 9,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaWBoxOutline = "M9,17A2,2 0 0,1 7,15V7H9V15H11V8H13V15H15V7H17V15A2,2 0 0,1 15,17H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaWCircle = "M9,17H15A2,2 0 0,0 17,15V7H15V15H13V8H11V15H9V7H7V15A2,2 0 0,0 9,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaWCircleOutline = "M9,17A2,2 0 0,1 7,15V7H9V15H11V8H13V15H15V7H17V15A2,2 0 0,1 15,17H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaX = "M9,7L11,12L9,17H11L12,14.5L13,17H15L13,12L15,7H13L12,9.5L11,7H9Z"; -var mdiAlphaXBox = "M9,7L11,12L9,17H11L12,14.5L13,17H15L13,12L15,7H13L12,9.5L11,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaXBoxOutline = "M9,7H11L12,9.5L13,7H15L13,12L15,17H13L12,14.5L11,17H9L11,12L9,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaXCircle = "M9,7L11,12L9,17H11L12,14.5L13,17H15L13,12L15,7H13L12,9.5L11,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaXCircleOutline = "M9,7H11L12,9.5L13,7H15L13,12L15,17H13L12,14.5L11,17H9L11,12L9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaY = "M9,7L11,13V17H13V13L15,7H13L12,10L11,7H9Z"; -var mdiAlphaYBox = "M9,7L11,13V17H13V13L15,7H13L12,10L11,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaYBoxOutline = "M9,7H11L12,10L13,7H15L13,13V17H11V13L9,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaYCircle = "M9,7L11,13V17H13V13L15,7H13L12,10L11,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaYCircleOutline = "M9,7H11L12,10L13,7H15L13,13V17H11V13L9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphaZ = "M9,7V9H13L9,15V17H15V15H11L15,9V7H9Z"; -var mdiAlphaZBox = "M9,7V9H13L9,15V17H15V15H11L15,9V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiAlphaZBoxOutline = "M9,7H15V9L11,15H15V17H9V15L13,9H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiAlphaZCircle = "M9,7V9H13L9,15V17H15V15H11L15,9V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiAlphaZCircleOutline = "M9,7H15V9L11,15H15V17H9V15L13,9H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiAlphabetAurebesh = "M3 4V11H14.23L22 4H19L13.46 9H5V4H3M3 13V20H5V15H13.46L19 20H22L14.23 13H3Z"; -var mdiAlphabetCyrillic = "M16 6C14.36 6 13 7.36 13 9V15C13 16.65 14.36 18 16 18H17C18.65 18 20 16.65 20 15V12C20 10.36 18.65 9 17 9H15C15 8.44 15.44 8 16 8H18C19.09 8 20 7.09 20 6M5 9V11H8C8.57 11 9 11.43 9 12H7C5.36 12 4 13.36 4 15C4 16.65 5.36 18 7 18H11V12C11 10.36 9.65 9 8 9M15 11H17C17.57 11 18 11.43 18 12V15C18 15.57 17.57 16 17 16H16C15.43 16 15 15.57 15 15M7 14H9V16H7C6.43 16 6 15.57 6 15C6 14.43 6.43 14 7 14Z"; -var mdiAlphabetGreek = "M16 6C14.36 6 13 7.36 13 9V21H15V9C15 8.43 15.43 8 16 8H17C17.57 8 18 8.43 18 9V10C18 10.57 17.57 11 17 11H16V13H17C17.57 13 18 13.43 18 14V15C18 15.57 17.57 16 17 16H16V18H17C18.65 18 20 16.65 20 15V14C20 13.18 19.59 12.46 19 12C19.59 11.54 20 10.82 20 10V9C20 7.36 18.65 6 17 6M7 9C5.36 9 4 10.36 4 12V15C4 16.65 5.36 18 7 18H7.7C8.2 18 8.65 17.81 9 17.5V18H11V9H9V9.5C8.65 9.19 8.2 9 7.7 9M7 11H8C8.57 11 9 11.43 9 12V15C9 15.57 8.57 16 8 16H7C6.43 16 6 15.57 6 15V12C6 11.43 6.43 11 7 11Z"; -var mdiAlphabetLatin = "M13 6V18H15V17.31C15.37 17.73 15.9 18 16.5 18H17C18.65 18 20 16.65 20 15V12C20 10.36 18.65 9 17 9H16.5C15.9 9 15.37 9.27 15 9.7V6M5 9V11H8C8.57 11 9 11.43 9 12H7C5.36 12 4 13.36 4 15C4 16.65 5.36 18 7 18H11V12C11 10.36 9.65 9 8 9M16 11H17C17.57 11 18 11.43 18 12V15C18 15.57 17.57 16 17 16H16C15.43 16 15 15.57 15 15V12C15 11.43 15.43 11 16 11M7 14H9V16H7C6.43 16 6 15.57 6 15C6 14.43 6.43 14 7 14Z"; -var mdiAlphabetPiqad = "M13.04 4L6.54 17.85C6.21 18.55 5.5 19 4.73 19H4V20H16C17.2 20 18.27 20.54 19 21.39H20C19.05 19.32 17 18 14.7 18H12C11.29 18 10.62 17.63 10.24 17.03C9.85 16.43 9.8 15.68 10.1 15.03L10.58 14H19V13H17.5C15.29 13 13.5 11.21 13.5 9C13.5 6.79 15.29 5 17.5 5H20V4Z"; -var mdiAlphabetTengwar = "M10 7L12.5 3H15L11 7H10M12.5 9C11.96 9 11.46 9.13 11 9.35V9H8V11H9V21H11V12.5C11 11.67 11.67 11 12.5 11C13.33 11 14 11.67 14 12.5V14.5C14 15.33 13.33 16 12.5 16H12V18H12.5C14.43 18 16 16.43 16 14.5V12.5C16 10.57 14.43 9 12.5 9Z"; -var mdiAlphabetical = "M6,11A2,2 0 0,1 8,13V17H4A2,2 0 0,1 2,15V13A2,2 0 0,1 4,11H6M4,13V15H6V13H4M20,13V15H22V17H20A2,2 0 0,1 18,15V13A2,2 0 0,1 20,11H22V13H20M12,7V11H14A2,2 0 0,1 16,13V15A2,2 0 0,1 14,17H12A2,2 0 0,1 10,15V7H12M12,15H14V13H12V15Z"; -var mdiAlphabeticalOff = "M22.11 21.46L16 15.31L14 13.31L13.65 13L10 9.34L2.39 1.73L1.11 3L10 11.89V15A2 2 0 0 0 12 17H14A1.92 1.92 0 0 0 14.89 16.78L20.84 22.73M12 15V13.89L13.11 15M16 12.78L14.22 11A2 2 0 0 1 16 12.78M20.2 17L18 14.8V13A2 2 0 0 1 20 11H22V13H20V15H22V17M6 11H4A2 2 0 0 0 2 13V15A2 2 0 0 0 4 17H8V13A2 2 0 0 0 6 11M6 15H4V13H6M12 8.8L10.2 7H12Z"; -var mdiAlphabeticalVariant = "M3 7A2 2 0 0 0 1 9V17H3V13H5V17H7V9A2 2 0 0 0 5 7H3M3 9H5V11H3M15 10.5V9A2 2 0 0 0 13 7H9V17H13A2 2 0 0 0 15 15V13.5A1.54 1.54 0 0 0 13.5 12A1.54 1.54 0 0 0 15 10.5M13 15H11V13H13V15M13 11H11V9H13M19 7A2 2 0 0 0 17 9V15A2 2 0 0 0 19 17H21A2 2 0 0 0 23 15V14H21V15H19V9H21V10H23V9A2 2 0 0 0 21 7Z"; -var mdiAlphabeticalVariantOff = "M12.2 9L10.2 7H13A2 2 0 0 1 15 9V10.5A1.47 1.47 0 0 1 14.64 11.44L13 9.8V9M23 10V9A2 2 0 0 0 21 7H19A2 2 0 0 0 17 9V13.8L20.2 17H21A2 2 0 0 0 23 15V14H21V15H19V9H21V10M15 14.35L22.11 21.46L20.84 22.73L14.46 16.35A2 2 0 0 1 13 17H9V10.89L7 8.89V17H5V13H3V17H1V9A2 2 0 0 1 3 7H5.12L1.12 3L2.39 1.73L9 8.34L11 10.34L11.66 11L15 14.34M5 9H3V11H5M13 14.89L11.11 13H11V15H13Z"; -var mdiAltimeter = "M7,3V5H17V3H7M9,7V9H15V7H9M2,7.96V16.04L6.03,12L2,7.96M22.03,7.96L18,12L22.03,16.04V7.96M7,11V13H17V11H7M9,15V17H15V15H9M7,19V21H17V19H7Z"; -var mdiAmazon = "M15.93,17.09C15.75,17.25 15.5,17.26 15.3,17.15C14.41,16.41 14.25,16.07 13.76,15.36C12.29,16.86 11.25,17.31 9.34,17.31C7.09,17.31 5.33,15.92 5.33,13.14C5.33,10.96 6.5,9.5 8.19,8.76C9.65,8.12 11.68,8 13.23,7.83V7.5C13.23,6.84 13.28,6.09 12.9,5.54C12.58,5.05 11.95,4.84 11.4,4.84C10.38,4.84 9.47,5.37 9.25,6.45C9.2,6.69 9,6.93 8.78,6.94L6.18,6.66C5.96,6.61 5.72,6.44 5.78,6.1C6.38,2.95 9.23,2 11.78,2C13.08,2 14.78,2.35 15.81,3.33C17.11,4.55 17,6.18 17,7.95V12.12C17,13.37 17.5,13.93 18,14.6C18.17,14.85 18.21,15.14 18,15.31L15.94,17.09H15.93M13.23,10.56V10C11.29,10 9.24,10.39 9.24,12.67C9.24,13.83 9.85,14.62 10.87,14.62C11.63,14.62 12.3,14.15 12.73,13.4C13.25,12.47 13.23,11.6 13.23,10.56M20.16,19.54C18,21.14 14.82,22 12.1,22C8.29,22 4.85,20.59 2.25,18.24C2.05,18.06 2.23,17.81 2.5,17.95C5.28,19.58 8.75,20.56 12.33,20.56C14.74,20.56 17.4,20.06 19.84,19.03C20.21,18.87 20.5,19.27 20.16,19.54M21.07,18.5C20.79,18.14 19.22,18.33 18.5,18.42C18.31,18.44 18.28,18.26 18.47,18.12C19.71,17.24 21.76,17.5 22,17.79C22.24,18.09 21.93,20.14 20.76,21.11C20.58,21.27 20.41,21.18 20.5,21C20.76,20.33 21.35,18.86 21.07,18.5Z"; -var mdiAmazonAlexa = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10.43,21.87V19.91C10.43,19.22 10,18.57 9.35,18.3C6.91,17.26 5.17,14.83 5.17,12C5.17,8.26 8.22,5.17 12,5.17C15.78,5.17 18.83,8.26 18.83,12C18.83,16.43 15.39,20.61 10.43,21.87Z"; -var mdiAmbulance = "M18,18.5A1.5,1.5 0 0,0 19.5,17A1.5,1.5 0 0,0 18,15.5A1.5,1.5 0 0,0 16.5,17A1.5,1.5 0 0,0 18,18.5M19.5,9.5H17V12H21.46L19.5,9.5M6,18.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 6,15.5A1.5,1.5 0 0,0 4.5,17A1.5,1.5 0 0,0 6,18.5M20,8L23,12V17H21A3,3 0 0,1 18,20A3,3 0 0,1 15,17H9A3,3 0 0,1 6,20A3,3 0 0,1 3,17H1V6C1,4.89 1.89,4 3,4H17V8H20M8,6V9H5V11H8V14H10V11H13V9H10V6H8Z"; -var mdiAmmunition = "M14,22H10V21H14V22M13,10V7H11V10L10,11.5V20H14V11.5L13,10M12,2C12,2 11,3 11,5V6H13V5C13,5 13,3 12,2M8,22H4V21H8V22M7,10V7H5V10L4,11.5V20H8V11.5L7,10M6,2C6,2 5,3 5,5V6H7V5C7,5 7,3 6,2M20,22H16V21H20V22M19,10V7H17V10L16,11.5V20H20V11.5L19,10M18,2C18,2 17,3 17,5V6H19V5C19,5 19,3 18,2Z"; -var mdiAmpersand = "M4.4,16.5C4.4,15.6 4.7,14.7 5.2,13.9C5.7,13.1 6.7,12.2 8.2,11.2C7.3,10.1 6.8,9.3 6.5,8.7C6.1,8 6,7.4 6,6.7C6,5.2 6.4,4.1 7.3,3.2C8.2,2.3 9.4,2 10.9,2C12.2,2 13.3,2.4 14.2,3.2C15.1,4 15.5,5 15.5,6.1C15.5,6.9 15.3,7.6 14.9,8.3C14.5,9 13.8,9.7 12.8,10.4L11.4,11.5L15.7,16.7C16.3,15.5 16.6,14.3 16.6,12.8H18.8C18.8,15.1 18.3,17 17.2,18.5L20,21.8H17L15.7,20.3C15,20.9 14.3,21.3 13.4,21.6C12.5,21.9 11.6,22.1 10.7,22.1C8.8,22.1 7.3,21.6 6.1,20.6C5,19.5 4.4,18.2 4.4,16.5M10.7,20C12,20 13.2,19.5 14.3,18.5L9.6,12.8L9.2,13.1C7.7,14.2 7,15.3 7,16.5C7,17.6 7.3,18.4 8,19C8.7,19.6 9.5,20 10.7,20M8.5,6.7C8.5,7.6 9,8.6 10.1,9.9L11.7,8.8C12.3,8.4 12.7,8 12.9,7.6C13.1,7.2 13.2,6.7 13.2,6.2C13.2,5.6 13,5.1 12.5,4.7C12.1,4.3 11.5,4.1 10.8,4.1C10.1,4.1 9.5,4.3 9.1,4.8C8.7,5.3 8.5,5.9 8.5,6.7Z"; -var mdiAmplifier = "M10,2H14A1,1 0 0,1 15,3H21V21H19A1,1 0 0,1 18,22A1,1 0 0,1 17,21H7A1,1 0 0,1 6,22A1,1 0 0,1 5,21H3V3H9A1,1 0 0,1 10,2M5,5V9H19V5H5M7,6A1,1 0 0,1 8,7A1,1 0 0,1 7,8A1,1 0 0,1 6,7A1,1 0 0,1 7,6M12,6H14V7H12V6M15,6H16V8H15V6M17,6H18V8H17V6M12,11A4,4 0 0,0 8,15A4,4 0 0,0 12,19A4,4 0 0,0 16,15A4,4 0 0,0 12,11M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6Z"; -var mdiAmplifierOff = "M22.1 21.5L2.4 1.7L1.1 3L3 4.9V21H5C5 21.6 5.4 22 6 22S7 21.6 7 21H17C17 21.6 17.4 22 18 22S19 21.6 19 21H19.1L20.8 22.7L22.1 21.5M5 9V6.9L7.1 9H5M12 19C9.8 19 8 17.2 8 15C8 13.6 8.7 12.4 9.8 11.7L15.3 17.2C14.6 18.3 13.4 19 12 19M14 6V7H12V6H14M10 6C10.6 6 11 6.4 11 7C11 7.2 10.9 7.4 10.8 7.6L9.4 6.2C9.6 6.1 9.8 6 10 6M8.2 5L6.2 3H9C9 2.4 9.4 2 10 2H14C14.6 2 15 2.4 15 3H21V17.8L12.2 9H19V5H8.2M16 6V8H15V6H16M18 6V8H17V6H18Z"; -var mdiAnchor = "M12 2A3 3 0 0 0 9 5A3 3 0 0 0 11 7.83V9H8V11H11V19.92C10.26 19.79 9.5 19.58 8.79 19.27C8.05 18.95 7.4 18.56 6.82 18.09C6.24 17.62 5.78 17.11 5.44 16.55L7 15L3 12V15C3 15.97 3.27 16.88 3.82 17.72C4.37 18.56 5.09 19.31 6 19.95C6.87 20.59 7.84 21.09 8.88 21.45C9.93 21.81 10.97 22 12 22C13.03 22 14.07 21.8 15.12 21.44C16.16 21.08 17.13 20.58 18 19.95C18.92 19.31 19.63 18.57 20.18 17.72C20.73 16.88 21 15.97 21 15V12L17 15L18.56 16.55C18.22 17.11 17.76 17.62 17.18 18.09C16.6 18.56 15.95 18.95 15.21 19.27C14.5 19.58 13.74 19.79 13 19.92V11H16V9H13V7.82A3 3 0 0 0 15 5A3 3 0 0 0 12 2M12 4A1 1 0 0 1 13 5A1 1 0 0 1 12 6A1 1 0 0 1 11 5A1 1 0 0 1 12 4Z"; -var mdiAndroid = "M16.61 15.15C16.15 15.15 15.77 14.78 15.77 14.32S16.15 13.5 16.61 13.5H16.61C17.07 13.5 17.45 13.86 17.45 14.32C17.45 14.78 17.07 15.15 16.61 15.15M7.41 15.15C6.95 15.15 6.57 14.78 6.57 14.32C6.57 13.86 6.95 13.5 7.41 13.5H7.41C7.87 13.5 8.24 13.86 8.24 14.32C8.24 14.78 7.87 15.15 7.41 15.15M16.91 10.14L18.58 7.26C18.67 7.09 18.61 6.88 18.45 6.79C18.28 6.69 18.07 6.75 18 6.92L16.29 9.83C14.95 9.22 13.5 8.9 12 8.91C10.47 8.91 9 9.24 7.73 9.82L6.04 6.91C5.95 6.74 5.74 6.68 5.57 6.78C5.4 6.87 5.35 7.08 5.44 7.25L7.1 10.13C4.25 11.69 2.29 14.58 2 18H22C21.72 14.59 19.77 11.7 16.91 10.14H16.91Z"; -var mdiAndroidAuto = "M22.78,17.91C22.94,18.16 23,18.42 23,18.7C23,19.08 22.87,19.39 22.57,19.64C22.27,19.89 21.94,20 21.56,20H19.08L12.42,8H11.58L4.92,20H2.39C1.92,20 1.53,19.8 1.22,19.38C0.91,18.96 0.89,18.5 1.17,18L10.78,1.69C11.09,1.22 11.5,1 12,1C12.53,1 12.92,1.22 13.17,1.69L22.78,17.91M4.78,22.31L12,9.38L19.22,22.31L18.5,23L12,20.34L5.44,23L4.78,22.31Z"; -var mdiAndroidDebugBridge = "M15,9A1,1 0 0,1 14,8A1,1 0 0,1 15,7A1,1 0 0,1 16,8A1,1 0 0,1 15,9M9,9A1,1 0 0,1 8,8A1,1 0 0,1 9,7A1,1 0 0,1 10,8A1,1 0 0,1 9,9M16.12,4.37L18.22,2.27L17.4,1.44L15.09,3.75C14.16,3.28 13.11,3 12,3C10.88,3 9.84,3.28 8.91,3.75L6.6,1.44L5.78,2.27L7.88,4.37C6.14,5.64 5,7.68 5,10V11H19V10C19,7.68 17.86,5.64 16.12,4.37M5,16C5,19.86 8.13,23 12,23A7,7 0 0,0 19,16V12H5V16Z"; -var mdiAndroidMessages = "M20,20H7A2,2 0 0,1 5,18V8.94L2.23,5.64C2.09,5.47 2,5.24 2,5A1,1 0 0,1 3,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M8.5,7A0.5,0.5 0 0,0 8,7.5V8.5A0.5,0.5 0 0,0 8.5,9H18.5A0.5,0.5 0 0,0 19,8.5V7.5A0.5,0.5 0 0,0 18.5,7H8.5M8.5,11A0.5,0.5 0 0,0 8,11.5V12.5A0.5,0.5 0 0,0 8.5,13H18.5A0.5,0.5 0 0,0 19,12.5V11.5A0.5,0.5 0 0,0 18.5,11H8.5M8.5,15A0.5,0.5 0 0,0 8,15.5V16.5A0.5,0.5 0 0,0 8.5,17H13.5A0.5,0.5 0 0,0 14,16.5V15.5A0.5,0.5 0 0,0 13.5,15H8.5Z"; -var mdiAndroidStudio = "M11,2H13V4H13.5A1.5,1.5 0 0,1 15,5.5V9L14.56,9.44L16.2,12.28C17.31,11.19 18,9.68 18,8H20C20,10.42 18.93,12.59 17.23,14.06L20.37,19.5L20.5,21.72L18.63,20.5L15.56,15.17C14.5,15.7 13.28,16 12,16C10.72,16 9.5,15.7 8.44,15.17L5.37,20.5L3.5,21.72L3.63,19.5L9.44,9.44L9,9V5.5A1.5,1.5 0 0,1 10.5,4H11V2M9.44,13.43C10.22,13.8 11.09,14 12,14C12.91,14 13.78,13.8 14.56,13.43L13.1,10.9H13.09C12.47,11.5 11.53,11.5 10.91,10.9H10.9L9.44,13.43M12,6A1,1 0 0,0 11,7A1,1 0 0,0 12,8A1,1 0 0,0 13,7A1,1 0 0,0 12,6Z"; -var mdiAngleAcute = "M20,19H4.09L14.18,4.43L15.82,5.57L11.28,12.13C12.89,12.96 14,14.62 14,16.54C14,16.7 14,16.85 13.97,17H20V19M7.91,17H11.96C12,16.85 12,16.7 12,16.54C12,15.28 11.24,14.22 10.14,13.78L7.91,17Z"; -var mdiAngleObtuse = "M21,19H9.31L4.07,5.36L5.93,4.64L8.96,12.5C9.5,12.29 10.09,12.17 10.71,12.17V12.17C13.38,12.17 15.56,14.34 15.58,17H21V19M10.69,17H13.58C13.56,15.42 12.3,14.17 10.71,14.17C10.34,14.17 10,14.24 9.67,14.36L10.69,17Z"; -var mdiAngleRight = "M5,4H7V11H13V17H20V19H5V4M7,17H11V13H7V17Z"; -var mdiAngular = "M12,2.5L20.84,5.65L19.5,17.35L12,21.5L4.5,17.35L3.16,5.65L12,2.5M12,4.6L6.47,17H8.53L9.64,14.22H14.34L15.45,17H17.5L12,4.6M13.62,12.5H10.39L12,8.63L13.62,12.5Z"; -var mdiAngularjs = "M12,2.5L20.84,5.65L19.5,17.35L12,21.5L4.5,17.35L3.16,5.65L12,2.5M12,4.5L5,7L6.08,16.22L12,19.5L17.92,16.22L19,7L12,4.5M12,5.72L16.58,16H14.87L13.94,13.72H10.04L9.12,16H7.41L12,5.72M13.34,12.3L12,9.07L10.66,12.3H13.34Z"; -var mdiAnimation = "M4,2C2.89,2 2,2.89 2,4V14H4V4H14V2H4M8,6C6.89,6 6,6.89 6,8V18H8V8H18V6H8M12,10C10.89,10 10,10.89 10,12V20C10,21.11 10.89,22 12,22H20C21.11,22 22,21.11 22,20V12C22,10.89 21.11,10 20,10H12Z"; -var mdiAnimationOutline = "M4,2A2,2 0 0,0 2,4V14H4V4H14V2H4M8,6A2,2 0 0,0 6,8V18H8V8H18V6H8M20,12V20H12V12H20M20,10H12A2,2 0 0,0 10,12V20A2,2 0 0,0 12,22H20A2,2 0 0,0 22,20V12A2,2 0 0,0 20,10Z"; -var mdiAnimationPlay = "M4,2H14V4H4V14H2V4C2,2.89 2.89,2 4,2M8,6H18V8H8V18H6V8C6,6.89 6.89,6 8,6M12,10H20C21.11,10 22,10.89 22,12V20C22,21.11 21.11,22 20,22H12C10.89,22 10,21.11 10,20V12C10,10.89 10.89,10 12,10M14,12V20L20,16L14,12Z"; -var mdiAnimationPlayOutline = "M4,2A2,2 0 0,0 2,4V14H4V4H14V2H4M8,6A2,2 0 0,0 6,8V18H8V8H18V6H8M20,12V20H12V12H20M20,10H12A2,2 0 0,0 10,12V20A2,2 0 0,0 12,22H20A2,2 0 0,0 22,20V12A2,2 0 0,0 20,10M14,13V19L18,16L14,13Z"; -var mdiAnsible = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2M16.1 17C15.91 17 15.76 16.9 15.55 16.73L10.39 12.56L8.66 16.9H7.17L11.54 6.39C11.65 6.11 11.89 5.97 12.17 5.97C12.45 5.97 12.67 6.11 12.79 6.39L16.77 15.97C16.81 16.08 16.84 16.19 16.84 16.26C16.83 16.68 16.5 17 16.1 17M12.17 8.11L14.76 14.5L10.85 11.42L12.17 8.11Z"; -var mdiAntenna = "M12 7.5C12.69 7.5 13.27 7.73 13.76 8.2S14.5 9.27 14.5 10C14.5 11.05 14 11.81 13 12.28V21H11V12.28C10 11.81 9.5 11.05 9.5 10C9.5 9.27 9.76 8.67 10.24 8.2S11.31 7.5 12 7.5M16.69 5.3C17.94 6.55 18.61 8.11 18.7 10C18.7 11.8 18.03 13.38 16.69 14.72L15.5 13.5C16.5 12.59 17 11.42 17 10C17 8.67 16.5 7.5 15.5 6.5L16.69 5.3M6.09 4.08C4.5 5.67 3.7 7.64 3.7 10S4.5 14.3 6.09 15.89L4.92 17.11C3 15.08 2 12.7 2 10C2 7.3 3 4.94 4.92 2.91L6.09 4.08M19.08 2.91C21 4.94 22 7.3 22 10C22 12.8 21 15.17 19.08 17.11L17.91 15.89C19.5 14.3 20.3 12.33 20.3 10S19.5 5.67 17.91 4.08L19.08 2.91M7.31 5.3L8.5 6.5C7.5 7.42 7 8.58 7 10C7 11.33 7.5 12.5 8.5 13.5L7.31 14.72C5.97 13.38 5.3 11.8 5.3 10C5.3 8.2 5.97 6.64 7.31 5.3Z"; -var mdiAnvil = "M9,5V10C13.03,12.47 8.44,14.97 6,16V19H21V16C14.59,13.27 17.47,9 22,8V5H9M2,6C2.81,8.13 4.42,9.5 7,10V6H2Z"; -var mdiApacheKafka = "M15.54 12.97C14.86 12.97 14.24 13.22 13.76 13.64L12.47 12.89C12.56 12.6 12.6 12.29 12.6 11.97C12.6 11.65 12.56 11.34 12.5 11.05L13.73 10.32C14.21 10.76 14.85 11 15.54 11C17.03 11 18.24 9.81 18.24 8.32S17.03 5.63 15.54 5.63 12.84 6.84 12.84 8.33C12.84 8.5 12.86 8.7 12.89 8.88L11.64 9.6C11.21 9.15 10.64 8.82 10 8.65V7.26C11.09 6.91 11.88 5.89 11.88 4.69C11.88 3.2 10.67 2 9.18 2C7.69 2 6.5 3.2 6.5 4.69C6.5 5.89 7.26 6.9 8.34 7.26V8.66C6.86 9.04 5.76 10.37 5.76 11.97C5.76 13.57 6.86 14.91 8.34 15.28V16.73C7.26 17.09 6.5 18.1 6.5 19.3C6.5 20.79 7.69 22 9.18 22C10.67 22 11.88 20.79 11.88 19.3C11.88 18.1 11.09 17.08 10 16.73V15.29C10.64 15.13 11.2 14.8 11.64 14.35L12.9 15.08C12.86 15.27 12.84 15.46 12.84 15.66C12.84 17.15 14.05 18.36 15.54 18.36S18.24 17.15 18.24 15.66 17.03 12.97 15.54 12.97M15.54 7C16.28 7 16.87 7.59 16.87 8.32S16.28 9.66 15.54 9.66 14.21 9.06 14.21 8.32 14.8 7 15.54 7M7.85 4.69C7.85 3.95 8.44 3.35 9.18 3.35C9.92 3.35 10.5 3.95 10.5 4.69S9.92 6.03 9.18 6.03C8.44 6.03 7.85 5.43 7.85 4.69M10.5 19.3C10.5 20.04 9.92 20.64 9.18 20.64C8.44 20.64 7.85 20.04 7.85 19.3C7.85 18.56 8.44 17.96 9.18 17.96C9.92 17.96 10.5 18.56 10.5 19.3M9.18 13.89C8.12 13.89 7.26 13.03 7.26 11.97C7.26 10.91 8.12 10.05 9.18 10.05S11.1 10.91 11.1 11.97C11.1 13.03 10.24 13.89 9.18 13.89M15.54 17C14.8 17 14.21 16.4 14.21 15.66S14.8 14.33 15.54 14.33 16.87 14.93 16.87 15.66 16.28 17 15.54 17Z"; -var mdiApi = "M7 7H5A2 2 0 0 0 3 9V17H5V13H7V17H9V9A2 2 0 0 0 7 7M7 11H5V9H7M14 7H10V17H12V13H14A2 2 0 0 0 16 11V9A2 2 0 0 0 14 7M14 11H12V9H14M20 9V15H21V17H17V15H18V9H17V7H21V9Z"; -var mdiApiOff = "M7 11H5V9H7M14 7H11.38L13.29 9H14V9.75L15.87 11.71C15.95 11.5 16 11.25 16 11V9C16 7.9 15.11 7 14 7M4.45 2.62L3 4L5.86 7H5C3.9 7 3 7.9 3 9V17H5V13H7V17H9V10.3L10 11.34V17H12V13.45L19.55 21.38L21 20M20.9 17H21V15H20V9H21V7H17V9H18V13.95Z"; -var mdiApple = "M18.71,19.5C17.88,20.74 17,21.95 15.66,21.97C14.32,22 13.89,21.18 12.37,21.18C10.84,21.18 10.37,21.95 9.1,22C7.79,22.05 6.8,20.68 5.96,19.47C4.25,17 2.94,12.45 4.7,9.39C5.57,7.87 7.13,6.91 8.82,6.88C10.1,6.86 11.32,7.75 12.11,7.75C12.89,7.75 14.37,6.68 15.92,6.84C16.57,6.87 18.39,7.1 19.56,8.82C19.47,8.88 17.39,10.1 17.41,12.63C17.44,15.65 20.06,16.66 20.09,16.67C20.06,16.74 19.67,18.11 18.71,19.5M13,3.5C13.73,2.67 14.94,2.04 15.94,2C16.07,3.17 15.6,4.35 14.9,5.19C14.21,6.04 13.07,6.7 11.95,6.61C11.8,5.46 12.36,4.26 13,3.5Z"; -var mdiAppleAirplay = "M6,22H18L12,16M21,3H3A2,2 0 0,0 1,5V17A2,2 0 0,0 3,19H7V17H3V5H21V17H17V19H21A2,2 0 0,0 23,17V5A2,2 0 0,0 21,3Z"; -var mdiAppleFinder = "M8 11C7.45 11 7 10.55 7 10V8C7 7.45 7.45 7 8 7C8.55 7 9 7.45 9 8V10C9 10.55 8.55 11 8 11M17 10V8C17 7.45 16.55 7 16 7C15.45 7 15 7.45 15 8V10C15 10.55 15.45 11 16 11C16.55 11 17 10.55 17 10M22 5V20C22 21.1 21.1 22 20 22H4C2.9 22 2 21.1 2 20V5C2 3.9 2.9 3 4 3H20C21.1 3 22 3.9 22 5M4 20L13.06 20C12.96 19.35 12.89 18.64 12.83 17.94C12.56 17.96 12.3 18 12 18C8.24 18 6.31 15.73 6.23 15.63C5.88 15.21 5.94 14.58 6.36 14.22C6.78 13.87 7.41 13.93 7.77 14.35C7.83 14.43 9.23 16 12 16C12.27 16 12.5 15.97 12.74 15.95C12.71 14.75 12.73 13.74 12.74 13.26H10.93C10.28 13.26 9.75 12.7 9.75 12C9.77 11.75 10.07 7.82 11 5H4L4 20M20 20L20 5H12.6C11.74 7.19 11.37 10.73 11.27 11.76H13.08C13.72 11.76 14.25 12.32 14.25 13C14.25 13.04 14.21 14.15 14.24 15.6C15.54 15.11 16.22 14.35 16.23 14.34C16.58 13.92 17.21 13.85 17.63 14.2C18.06 14.55 18.12 15.18 17.77 15.61C17.71 15.68 16.55 17.05 14.32 17.68C14.38 18.5 14.46 19.29 14.58 20H20Z"; -var mdiAppleIcloud = "M22,15.04C22,17.23 20.24,19 18.07,19H5.93C3.76,19 2,17.23 2,15.04C2,13.07 3.43,11.44 5.31,11.14C5.28,11 5.27,10.86 5.27,10.71C5.27,9.33 6.38,8.2 7.76,8.2C8.37,8.2 8.94,8.43 9.37,8.8C10.14,7.05 11.13,5.44 13.91,5.44C17.28,5.44 18.87,8.06 18.87,10.83C18.87,10.94 18.87,11.06 18.86,11.17C20.65,11.54 22,13.13 22,15.04Z"; -var mdiAppleIos = "M2.09 16.8H3.75V9.76H2.09M2.92 8.84C3.44 8.84 3.84 8.44 3.84 7.94C3.84 7.44 3.44 7.04 2.92 7.04C2.4 7.04 2 7.44 2 7.94C2 8.44 2.4 8.84 2.92 8.84M9.25 7.06C6.46 7.06 4.7 8.96 4.7 12C4.7 15.06 6.46 16.96 9.25 16.96C12.04 16.96 13.8 15.06 13.8 12C13.8 8.96 12.04 7.06 9.25 7.06M9.25 8.5C10.96 8.5 12.05 9.87 12.05 12C12.05 14.15 10.96 15.5 9.25 15.5C7.54 15.5 6.46 14.15 6.46 12C6.46 9.87 7.54 8.5 9.25 8.5M14.5 14.11C14.57 15.87 16 16.96 18.22 16.96C20.54 16.96 22 15.82 22 14C22 12.57 21.18 11.77 19.23 11.32L18.13 11.07C16.95 10.79 16.47 10.42 16.47 9.78C16.47 9 17.2 8.45 18.28 8.45C19.38 8.45 20.13 9 20.21 9.89H21.84C21.8 8.2 20.41 7.06 18.29 7.06C16.21 7.06 14.73 8.21 14.73 9.91C14.73 11.28 15.56 12.13 17.33 12.53L18.57 12.82C19.78 13.11 20.27 13.5 20.27 14.2C20.27 15 19.47 15.57 18.31 15.57C17.15 15.57 16.26 15 16.16 14.11H14.5Z"; -var mdiAppleKeyboardCaps = "M15,14V8H17.17L12,2.83L6.83,8H9V14H15M12,0L22,10H17V16H7V10H2L12,0M7,18H17V24H7V18M15,20H9V22H15V20Z"; -var mdiAppleKeyboardCommand = "M6,2A4,4 0 0,1 10,6V8H14V6A4,4 0 0,1 18,2A4,4 0 0,1 22,6A4,4 0 0,1 18,10H16V14H18A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18V16H10V18A4,4 0 0,1 6,22A4,4 0 0,1 2,18A4,4 0 0,1 6,14H8V10H6A4,4 0 0,1 2,6A4,4 0 0,1 6,2M16,18A2,2 0 0,0 18,20A2,2 0 0,0 20,18A2,2 0 0,0 18,16H16V18M14,10H10V14H14V10M6,16A2,2 0 0,0 4,18A2,2 0 0,0 6,20A2,2 0 0,0 8,18V16H6M8,6A2,2 0 0,0 6,4A2,2 0 0,0 4,6A2,2 0 0,0 6,8H8V6M18,8A2,2 0 0,0 20,6A2,2 0 0,0 18,4A2,2 0 0,0 16,6V8H18Z"; -var mdiAppleKeyboardControl = "M19.78,11.78L18.36,13.19L12,6.83L5.64,13.19L4.22,11.78L12,4L19.78,11.78Z"; -var mdiAppleKeyboardOption = "M3,4H9.11L16.15,18H21V20H14.88L7.84,6H3V4M14,4H21V6H14V4Z"; -var mdiAppleKeyboardShift = "M15,18V12H17.17L12,6.83L6.83,12H9V18H15M12,4L22,14H17V20H7V14H2L12,4Z"; -var mdiAppleSafari = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.09 4.8,16 6.11,17.41L9.88,9.88L17.41,6.11C16,4.8 14.09,4 12,4M12,20A8,8 0 0,0 20,12C20,9.91 19.2,8 17.89,6.59L14.12,14.12L6.59,17.89C8,19.2 9.91,20 12,20M12,12L11.23,11.23L9.7,14.3L12.77,12.77L12,12M12,17.5H13V19H12V17.5M15.88,15.89L16.59,15.18L17.65,16.24L16.94,16.95L15.88,15.89M17.5,12V11H19V12H17.5M12,6.5H11V5H12V6.5M8.12,8.11L7.41,8.82L6.35,7.76L7.06,7.05L8.12,8.11M6.5,12V13H5V12H6.5Z"; -var mdiApplication = "M19,4C20.11,4 21,4.9 21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V6A2,2 0 0,1 5,4H19M19,18V8H5V18H19Z"; -var mdiApplicationCog = "M21.7 18.6V17.6L22.8 16.8C22.9 16.7 23 16.6 22.9 16.5L21.9 14.8C21.9 14.7 21.7 14.7 21.6 14.7L20.4 15.2C20.1 15 19.8 14.8 19.5 14.7L19.3 13.4C19.3 13.3 19.2 13.2 19.1 13.2H17.1C16.9 13.2 16.8 13.3 16.8 13.4L16.6 14.7C16.3 14.9 16.1 15 15.8 15.2L14.6 14.7C14.5 14.7 14.4 14.7 14.3 14.8L13.3 16.5C13.3 16.6 13.3 16.7 13.4 16.8L14.5 17.6V18.6L13.4 19.4C13.3 19.5 13.2 19.6 13.3 19.7L14.3 21.4C14.4 21.5 14.5 21.5 14.6 21.5L15.8 21C16 21.2 16.3 21.4 16.6 21.5L16.8 22.8C16.9 22.9 17 23 17.1 23H19.1C19.2 23 19.3 22.9 19.3 22.8L19.5 21.5C19.8 21.3 20 21.2 20.3 21L21.5 21.4C21.6 21.4 21.7 21.4 21.8 21.3L22.8 19.6C22.9 19.5 22.9 19.4 22.8 19.4L21.7 18.6M18 19.5C17.2 19.5 16.5 18.8 16.5 18S17.2 16.5 18 16.5 19.5 17.2 19.5 18 18.8 19.5 18 19.5M11.29 20H5C3.89 20 3 19.1 3 18V6C3 4.89 3.9 4 5 4H19C20.11 4 21 4.9 21 6V11.68C20.38 11.39 19.71 11.18 19 11.08V8H5V18H11C11 18.7 11.11 19.37 11.29 20Z"; -var mdiApplicationExport = "M8,12H17.76L15.26,9.5L16.67,8.08L21.59,13L16.67,17.92L15.26,16.5L17.76,14H8V12M19,3C20.11,3 21,3.9 21,5V9.67L19,7.67V7H5V19H19V18.33L21,16.33V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19Z"; -var mdiApplicationImport = "M1,12H10.76L8.26,9.5L9.67,8.08L14.59,13L9.67,17.92L8.26,16.5L10.76,14H1V12M19,3C20.11,3 21,3.9 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V16H5V19H19V7H5V10H3V5A2,2 0 0,1 5,3H19Z"; -var mdiApplicationSettings = "M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22M5 4H19A2 2 0 0 1 21 6V18A2 2 0 0 1 19 20H5A2 2 0 0 1 3 18V6A2 2 0 0 1 5 4M5 8V18H19V8H5"; -var mdiApproximatelyEqual = "M18.9 9.2C18.1 10.1 16.6 11 15 11C13.5 11 12.6 10.5 11.8 10.1C11 9.8 10.2 9.3 8.9 9.3C7.7 9.3 6.6 10 6 10.6L5 9.1C5.9 8.2 7.3 7.2 8.9 7.2C10.4 7.2 11.3 7.8 12.1 8.1C12.9 8.4 13.7 9 15 9C16.2 9 17.3 8.2 17.9 7.6L18.9 9.2M19 14.1C18.1 15 16.7 16 15.1 16C13.6 16 12.7 15.5 11.9 15.1C11.1 14.8 10.3 14.2 9 14.2C7.8 14.2 6.7 15 6.1 15.6L5.1 14C6 13.1 7.4 12.1 9 12.1C10.5 12.1 11.4 12.6 12.2 13C13 13.3 13.8 13.8 15.1 13.8C16.3 13.8 17.4 13 18 12.4L19 14.1Z"; -var mdiApproximatelyEqualBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9.3 8.2C10.6 8.2 11.4 8.7 12.1 9C12.7 9.3 13.4 9.7 14.5 9.7C15.5 9.7 16.5 9 17 8.5L17.8 9.8C17.1 10.6 15.8 11.4 14.4 11.4C13.1 11.4 12.3 10.9 11.7 10.6C11.1 10.3 10.3 9.9 9.2 9.9C8.2 9.9 7.2 10.6 6.7 11.1L6 9.8C6.7 9 8 8.2 9.3 8.2M14.6 15.8C13.3 15.8 12.5 15.3 11.8 15C11.2 14.7 10.4 14.3 9.3 14.3C8.3 14.3 7.3 15 6.8 15.5L6 14.1C6.7 13.3 8 12.5 9.3 12.5C10.6 12.5 11.4 13 12.1 13.3C12.7 13.6 13.4 14 14.6 14C15.6 14 16.6 13.3 17.1 12.8L17.9 14.1C17.3 15 16 15.8 14.6 15.8Z"; -var mdiApps = "M16,20H20V16H16M16,14H20V10H16M10,8H14V4H10M16,8H20V4H16M10,14H14V10H10M4,14H8V10H4M4,20H8V16H4M10,20H14V16H10M4,8H8V4H4V8Z"; -var mdiAppsBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,7V9H9V7H7M11,7V9H13V7H11M15,7V9H17V7H15M7,11V13H9V11H7M11,11V13H13V11H11M15,11V13H17V11H15M7,15V17H9V15H7M11,15V17H13V15H11M15,15V17H17V15H15Z"; -var mdiArch = "M12,2C11.11,4.18 10.57,5.61 9.58,7.73C10.19,8.37 10.93,9.12 12.14,9.97C10.84,9.43 9.95,8.9 9.29,8.34C8,11 6.03,14.75 2,22C5.17,20.17 7.63,19.04 9.92,18.61C9.82,18.19 9.76,17.73 9.77,17.25V17.15C9.82,15.12 10.88,13.56 12.13,13.67C13.38,13.77 14.35,15.5 14.3,17.54C14.29,17.92 14.25,18.29 14.18,18.63C16.44,19.07 18.87,20.19 22,22C21.38,20.86 20.83,19.84 20.31,18.87C19.5,18.23 18.61,17.39 16.85,16.5C18.06,16.8 18.93,17.16 19.61,17.57C14.26,7.62 13.83,6.3 12,2Z"; -var mdiArchive = "M3,3H21V7H3V3M4,8H20V21H4V8M9.5,11A0.5,0.5 0 0,0 9,11.5V13H15V11.5A0.5,0.5 0 0,0 14.5,11H9.5Z"; -var mdiArchiveAlert = "M2 4H18V7H2V4M3 8H17V20H3V8M7.5 11C7.22 11 7 11.22 7 11.5V13H13V11.5C13 11.22 12.78 11 12.5 11H7.5M20 13V7H22V13H20M20 17V15H22V17H20Z"; -var mdiArchiveAlertOutline = "M2 4H18V7H2V4M7.5 11H12.5C12.78 11 13 11.22 13 11.5V13H7V11.5C7 11.22 7.22 11 7.5 11M20 13V7H22V13H20M20 17V15H22V17H20M3 8H5V18H15V8H17V20H3V8Z"; -var mdiArchiveArrowDown = "M3 3H21V7H3V3M4 21V8H20V21H4M14 14V11H10V14H7L12 19L17 14H14Z"; -var mdiArchiveArrowDownOutline = "M20 21H4V10H6V19H18V10H20V21M3 3H21V9H3V3M5 5V7H19V5M10.5 11V14H8L12 18L16 14H13.5V11"; -var mdiArchiveArrowUp = "M4 21H20V8H4M14 15V18H10V15H7L12 10L17 15M3 3H21V7H3"; -var mdiArchiveArrowUpOutline = "M20 21H4V10H6V19H18V10H20V21M3 3H21V9H3V3M5 5V7H19V5M10.5 17V14H8L12 10L16 14H13.5V17"; -var mdiArchiveOutline = "M20 21H4V10H6V19H18V10H20V21M3 3H21V9H3V3M9.5 11H14.5C14.78 11 15 11.22 15 11.5V13H9V11.5C9 11.22 9.22 11 9.5 11M5 5V7H19V5H5Z"; -var mdiArmFlex = "M3 18.34C3 18.34 4 7.09 7 3L12 4L11 7.09H9V14.25H10C12 11.18 16.14 10.06 18.64 11.18C21.94 12.71 21.64 17.32 18.64 19.36C16.24 21 9 22.43 3 18.34Z"; -var mdiArmFlexOutline = "M7 7.76V16.25H11.08L11.68 15.34C12.84 13.55 14.93 12.75 16.47 12.75C17 12.75 17.45 12.84 17.79 13C18.7 13.41 18.95 14.18 19 14.74C19.08 15.87 18.5 17.03 17.5 17.71C16.6 18.33 14.44 19 11.87 19C10.12 19 7.61 18.69 5.12 17.3C5.41 14.85 6 10.88 7 7.76M7 3C4 7.09 3 18.34 3 18.34C5.9 20.31 9.08 21 11.87 21C14.86 21 17.39 20.21 18.64 19.36C21.64 17.32 21.94 12.71 18.64 11.18C18 10.89 17.26 10.75 16.47 10.75C14.17 10.75 11.5 11.96 10 14.25H9V7.09H11L12 4L7 3Z"; -var mdiArrangeBringForward = "M2,2H16V16H2V2M22,8V22H8V18H10V20H20V10H18V8H22Z"; -var mdiArrangeBringToFront = "M2,2H11V6H9V4H4V9H6V11H2V2M22,13V22H13V18H15V20H20V15H18V13H22M8,8H16V16H8V8Z"; -var mdiArrangeSendBackward = "M2,2H16V16H2V2M22,8V22H8V18H18V8H22M4,4V14H14V4H4Z"; -var mdiArrangeSendToBack = "M2,2H11V11H2V2M9,4H4V9H9V4M22,13V22H13V13H22M15,20H20V15H15V20M16,8V11H13V8H16M11,16H8V13H11V16Z"; -var mdiArrowAll = "M13,11H18L16.5,9.5L17.92,8.08L21.84,12L17.92,15.92L16.5,14.5L18,13H13V18L14.5,16.5L15.92,17.92L12,21.84L8.08,17.92L9.5,16.5L11,18V13H6L7.5,14.5L6.08,15.92L2.16,12L6.08,8.08L7.5,9.5L6,11H11V6L9.5,7.5L8.08,6.08L12,2.16L15.92,6.08L14.5,7.5L13,6V11Z"; -var mdiArrowBottomLeft = "M19,6.41L17.59,5L7,15.59V9H5V19H15V17H8.41L19,6.41Z"; -var mdiArrowBottomLeftBoldOutline = "M18.36,19.78H4.22V5.64L8.47,9.88L14.12,4.22L19.78,9.88L14.12,15.54L18.36,19.78M6.34,17.66H13.41L11.29,15.54L16.95,9.88L14.12,7.05L8.46,12.71L6.34,10.59V17.66Z"; -var mdiArrowBottomLeftThick = "M15.5,5.69L18.31,8.5L11.94,14.89H16.89V18.31H5.69V7.11H9.12V12.06L15.5,5.69Z"; -var mdiArrowBottomLeftThinCircleOutline = "M12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03M12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22M10.12 12.47L8 10.36V16H13.64L11.53 13.88L16.5 8.9L15.1 7.5"; -var mdiArrowBottomRight = "M5,6.41L6.41,5L17,15.59V9H19V19H9V17H15.59L5,6.41Z"; -var mdiArrowBottomRightBoldOutline = "M9.88,15.54L4.22,9.88L9.88,4.22L15.54,9.88L19.78,5.64V19.78H5.64L9.88,15.54M17.66,10.59L15.54,12.71L9.88,7.05L7.05,9.88L12.71,15.54L10.59,17.66H17.66V10.59Z"; -var mdiArrowBottomRightThick = "M14.89,12.06V7.11H18.31V18.31H7.11V14.89H12.06L5.69,8.5L8.5,5.69L14.89,12.06Z"; -var mdiArrowBottomRightThinCircleOutline = "M12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 7.59 7.59 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03M12 22C17.54 22 22 17.54 22 12C22 6.46 17.54 2 12 2C6.46 2 2 6.46 2 12C2 17.54 6.46 22 12 22M13.88 12.47L16 10.36V16H10.36L12.47 13.88L7.5 8.9L8.9 7.5"; -var mdiArrowCollapse = "M19.5,3.09L15,7.59V4H13V11H20V9H16.41L20.91,4.5L19.5,3.09M4,13V15H7.59L3.09,19.5L4.5,20.91L9,16.41V20H11V13H4Z"; -var mdiArrowCollapseAll = "M19.5,3.09L20.91,4.5L16.41,9H20V11H13V4H15V7.59L19.5,3.09M20.91,19.5L19.5,20.91L15,16.41V20H13V13H20V15H16.41L20.91,19.5M4.5,3.09L9,7.59V4H11V11H4V9H7.59L3.09,4.5L4.5,3.09M3.09,19.5L7.59,15H4V13H11V20H9V16.41L4.5,20.91L3.09,19.5Z"; -var mdiArrowCollapseDown = "M19.92,12.08L12,20L4.08,12.08L5.5,10.67L11,16.17V2H13V16.17L18.5,10.66L19.92,12.08M12,20H2V22H22V20H12Z"; -var mdiArrowCollapseHorizontal = "M13,20V4H15.03V20H13M10,20V4H12.03V20H10M5,8L9.03,12L5,16V13H2V11H5V8M20,16L16,12L20,8V11H23V13H20V16Z"; -var mdiArrowCollapseLeft = "M11.92,19.92L4,12L11.92,4.08L13.33,5.5L7.83,11H22V13H7.83L13.34,18.5L11.92,19.92M4,12V2H2V22H4V12Z"; -var mdiArrowCollapseRight = "M12.08,4.08L20,12L12.08,19.92L10.67,18.5L16.17,13H2V11H16.17L10.67,5.5L12.08,4.08M20,12V22H22V2H20V12Z"; -var mdiArrowCollapseUp = "M4.08,11.92L12,4L19.92,11.92L18.5,13.33L13,7.83V22H11V7.83L5.5,13.33L4.08,11.92M12,4H22V2H2V4H12Z"; -var mdiArrowCollapseVertical = "M4,12H20V14H4V12M4,9H20V11H4V9M16,4L12,8L8,4H11V1H13V4H16M8,19L12,15L16,19H13V22H11V19H8Z"; -var mdiArrowDecision = "M11,5H8L12,1L16,5H13V9.43C12.25,9.89 11.58,10.46 11,11.12V5M22,11L18,7V10C14.39,9.85 11.31,12.57 11,16.17C9.44,16.72 8.62,18.44 9.17,20C9.72,21.56 11.44,22.38 13,21.83C14.56,21.27 15.38,19.56 14.83,18C14.53,17.14 13.85,16.47 13,16.17C13.47,12.17 17.47,11.97 17.95,11.97V14.97L22,11M10.63,11.59C9.3,10.57 7.67,10 6,10V7L2,11L6,15V12C7.34,12.03 8.63,12.5 9.64,13.4C9.89,12.76 10.22,12.15 10.63,11.59Z"; -var mdiArrowDecisionAuto = "M12,5H9L13,1L17,5H14V9.43C13.25,9.89 12.58,10.46 12,11.12V5M10.4,15H8.5L7.8,13H4.6L3.9,15H2L5.2,6H7.2L10.4,15M7.35,11.65L6.2,8L5.05,11.65H7.35M23,11L19,7V10C15.39,9.85 12.31,12.57 12,16.17C10.44,16.72 9.62,18.44 10.17,20C10.72,21.56 12.44,22.38 14,21.83C15.56,21.27 16.38,19.56 15.83,18C15.53,17.14 14.85,16.47 14,16.17C14.47,12.17 18.47,11.97 18.95,11.97V14.97L23,11Z"; -var mdiArrowDecisionAutoOutline = "M19,15V12C18.5,12 14.5,12.16 14.05,16.2C15.61,16.75 16.43,18.47 15.88,20.03C15.33,21.59 13.61,22.41 12.05,21.86C10.5,21.3 9.67,19.59 10.22,18.03C10.5,17.17 11.2,16.5 12.05,16.2C12.34,12.61 15.4,9.88 19,10V7L23,11L19,15M14,19A1,1 0 0,0 13,18A1,1 0 0,0 12,19A1,1 0 0,0 13,20A1,1 0 0,0 14,19M12,11.12C12.58,10.46 13.25,9.89 14,9.43V5H17L13,1L9,5H12V11.12M7.2,6H5.2L2,15H3.9L4.6,13H7.8L8.5,15H10.4L7.2,6M5.05,11.65L6.2,8L7.35,11.65H5.05Z"; -var mdiArrowDecisionOutline = "M9.64,13.4C8.63,12.5 7.34,12.03 6,12V15L2,11L6,7V10C7.67,10 9.3,10.57 10.63,11.59C10.22,12.15 9.89,12.76 9.64,13.4M18,15V12C17.5,12 13.5,12.16 13.05,16.2C14.61,16.75 15.43,18.47 14.88,20.03C14.33,21.59 12.61,22.41 11.05,21.86C9.5,21.3 8.67,19.59 9.22,18.03C9.5,17.17 10.2,16.5 11.05,16.2C11.34,12.61 14.4,9.88 18,10V7L22,11L18,15M13,19A1,1 0 0,0 12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19M11,11.12C11.58,10.46 12.25,9.89 13,9.43V5H16L12,1L8,5H11V11.12Z"; -var mdiArrowDown = "M11,4H13V16L18.5,10.5L19.92,11.92L12,19.84L4.08,11.92L5.5,10.5L11,16V4Z"; -var mdiArrowDownBold = "M9,4H15V12H19.84L12,19.84L4.16,12H9V4Z"; -var mdiArrowDownBoldBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,17L17,12H14V8H10V12H7L12,17Z"; -var mdiArrowDownBoldBoxOutline = "M12,17L7,12H10V8H14V12H17L12,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiArrowDownBoldCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,17L17,12H14V8H10V12H7L12,17Z"; -var mdiArrowDownBoldCircleOutline = "M12,17L7,12H10V8H14V12H17L12,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiArrowDownBoldHexagonOutline = "M12,17L7,12H10V8H14V12H17L12,17M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; -var mdiArrowDownBoldOutline = "M22,11L12,21L2,11H8V3H16V11H22M12,18L17,13H14V5H10V13H7L12,18Z"; -var mdiArrowDownBox = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M11,6V14.5L7.5,11L6.08,12.42L12,18.34L17.92,12.42L16.5,11L13,14.5V6H11Z"; -var mdiArrowDownCircle = "M11,6V14L7.5,10.5L6.08,11.92L12,17.84L17.92,11.92L16.5,10.5L13,14V6H11M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22Z"; -var mdiArrowDownCircleOutline = "M11,6H13V14L16.5,10.5L17.92,11.92L12,17.84L6.08,11.92L7.5,10.5L11,14V6M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20Z"; -var mdiArrowDownDropCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,10L12,15L17,10H7Z"; -var mdiArrowDownDropCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M7,10L12,15L17,10H7Z"; -var mdiArrowDownThick = "M10,4H14V13L17.5,9.5L19.92,11.92L12,19.84L4.08,11.92L6.5,9.5L10,13V4Z"; -var mdiArrowDownThinCircleOutline = "M12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03M12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22M11 13.54H8L12 17.5L16 13.54H13V6.5H11"; -var mdiArrowExpand = "M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z"; -var mdiArrowExpandAll = "M9.5,13.09L10.91,14.5L6.41,19H10V21H3V14H5V17.59L9.5,13.09M10.91,9.5L9.5,10.91L5,6.41V10H3V3H10V5H6.41L10.91,9.5M14.5,13.09L19,17.59V14H21V21H14V19H17.59L13.09,14.5L14.5,13.09M13.09,9.5L17.59,5H14V3H21V10H19V6.41L14.5,10.91L13.09,9.5Z"; -var mdiArrowExpandDown = "M22,4V2H2V4H11V18.17L5.5,12.67L4.08,14.08L12,22L19.92,14.08L18.5,12.67L13,18.17V4H22Z"; -var mdiArrowExpandHorizontal = "M9,11H15V8L19,12L15,16V13H9V16L5,12L9,8V11M2,20V4H4V20H2M20,20V4H22V20H20Z"; -var mdiArrowExpandLeft = "M20,22H22V2H20V11H5.83L11.33,5.5L9.92,4.08L2,12L9.92,19.92L11.33,18.5L5.83,13H20V22Z"; -var mdiArrowExpandRight = "M4,2H2V22H4V13H18.17L12.67,18.5L14.08,19.92L22,12L14.08,4.08L12.67,5.5L18.17,11H4V2Z"; -var mdiArrowExpandUp = "M2,20V22H22V20H13V5.83L18.5,11.33L19.92,9.92L12,2L4.08,9.92L5.5,11.33L11,5.83V20H2Z"; -var mdiArrowExpandVertical = "M13,9V15H16L12,19L8,15H11V9H8L12,5L16,9H13M4,2H20V4H4V2M4,20H20V22H4V20Z"; -var mdiArrowHorizontalLock = "M14.8 7V5.5C14.8 4.1 13.4 3 12 3S9.2 4.1 9.2 5.5V7C8.6 7 8 7.6 8 8.2V11.7C8 12.4 8.6 13 9.2 13H14.7C15.4 13 16 12.4 16 11.8V8.3C16 7.6 15.4 7 14.8 7M13.5 7H10.5V5.5C10.5 4.7 11.2 4.2 12 4.2S13.5 4.7 13.5 5.5V7M6 17V20L2 16L6 12V15H18V12L22 16L18 20V17H6Z"; -var mdiArrowLeft = "M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"; -var mdiArrowLeftBold = "M20,9V15H12V19.84L4.16,12L12,4.16V9H20Z"; -var mdiArrowLeftBoldBox = "M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M7,12L12,17V14H16V10H12V7L7,12Z"; -var mdiArrowLeftBoldBoxOutline = "M7,12L12,7V10H16V14H12V17L7,12M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M19,5H5V19H19V5Z"; -var mdiArrowLeftBoldCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7,12L12,17V14H16V10H12V7L7,12Z"; -var mdiArrowLeftBoldCircleOutline = "M7,12L12,7V10H16V14H12V17L7,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12Z"; -var mdiArrowLeftBoldHexagonOutline = "M7,12L12,7V10H16V14H12V17L7,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; -var mdiArrowLeftBoldOutline = "M13,22L3,12L13,2V8H21V16H13V22M6,12L11,17V14H19V10H11V7L6,12Z"; -var mdiArrowLeftBox = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M18,11H9.5L13,7.5L11.58,6.08L5.66,12L11.58,17.92L13,16.5L9.5,13H18V11Z"; -var mdiArrowLeftCircle = "M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M18,11H10L13.5,7.5L12.08,6.08L6.16,12L12.08,17.92L13.5,16.5L10,13H18V11Z"; -var mdiArrowLeftCircleOutline = "M18,11V13H10L13.5,16.5L12.08,17.92L6.16,12L12.08,6.08L13.5,7.5L10,11H18M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12Z"; -var mdiArrowLeftDropCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14,7L9,12L14,17V7Z"; -var mdiArrowLeftDropCircleOutline = "M22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12M14,7L9,12L14,17V7Z"; -var mdiArrowLeftRight = "M6.45,17.45L1,12L6.45,6.55L7.86,7.96L4.83,11H19.17L16.14,7.96L17.55,6.55L23,12L17.55,17.45L16.14,16.04L19.17,13H4.83L7.86,16.04L6.45,17.45Z"; -var mdiArrowLeftRightBold = "M8,14V18L2,12L8,6V10H16V6L22,12L16,18V14H8Z"; -var mdiArrowLeftRightBoldOutline = "M14,16V22L24,12L14,2V8H10V2L0,12L10,22V16H14M8,14V17L3,12L8,7V10H16V7L21,12L16,17V14H8Z"; -var mdiArrowLeftThick = "M20,10V14H11L14.5,17.5L12.08,19.92L4.16,12L12.08,4.08L14.5,6.5L11,10H20Z"; -var mdiArrowLeftThinCircleOutline = "M3.97 12C3.97 16.41 7.59 20.03 12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97C7.59 3.97 3.97 7.59 3.97 12M2 12C2 6.46 6.46 2 12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22C6.46 22 2 17.54 2 12M10.46 11V8L6.5 12L10.46 16V13H17.5V11"; -var mdiArrowRight = "M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z"; -var mdiArrowRightBold = "M4,15V9H12V4.16L19.84,12L12,19.84V15H4Z"; -var mdiArrowRightBoldBox = "M3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19M17,12L12,7V10H8V14H12V17L17,12Z"; -var mdiArrowRightBoldBoxOutline = "M17,12L12,17V14H8V10H12V7L17,12M3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19M5,19H19V5H5V19Z"; -var mdiArrowRightBoldCircle = "M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M17,12L12,7V10H8V14H12V17L17,12Z"; -var mdiArrowRightBoldCircleOutline = "M17,12L12,17V14H8V10H12V7L17,12M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12Z"; -var mdiArrowRightBoldHexagonOutline = "M17,12L12,17V14H8V10H12V7L17,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; -var mdiArrowRightBoldOutline = "M11,16H3V8H11V2L21,12L11,22V16M13,7V10H5V14H13V17L18,12L13,7Z"; -var mdiArrowRightBox = "M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5M6,13H14.5L11,16.5L12.42,17.92L18.34,12L12.42,6.08L11,7.5L14.5,11H6V13Z"; -var mdiArrowRightCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M6,13H14L10.5,16.5L11.92,17.92L17.84,12L11.92,6.08L10.5,7.5L14,11H6V13Z"; -var mdiArrowRightCircleOutline = "M6,13V11H14L10.5,7.5L11.92,6.08L17.84,12L11.92,17.92L10.5,16.5L14,13H6M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12Z"; -var mdiArrowRightDropCircle = "M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M10,17L15,12L10,7V17Z"; -var mdiArrowRightDropCircleOutline = "M2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12M4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12M10,17L15,12L10,7V17Z"; -var mdiArrowRightThick = "M4,10V14H13L9.5,17.5L11.92,19.92L19.84,12L11.92,4.08L9.5,6.5L13,10H4Z"; -var mdiArrowRightThinCircleOutline = "M20.03 12C20.03 7.59 16.41 3.97 12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03C16.41 20.03 20.03 16.41 20.03 12M22 12C22 17.54 17.54 22 12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2C17.54 2 22 6.46 22 12M13.54 13V16L17.5 12L13.54 8V11H6.5V13"; -var mdiArrowSplitHorizontal = "M8,18H11V15H2V13H22V15H13V18H16L12,22L8,18M12,2L8,6H11V9H2V11H22V9H13V6H16L12,2Z"; -var mdiArrowSplitVertical = "M18,16V13H15V22H13V2H15V11H18V8L22,12L18,16M2,12L6,16V13H9V22H11V2H9V11H6V8L2,12Z"; -var mdiArrowTopLeft = "M19,17.59L17.59,19L7,8.41V15H5V5H15V7H8.41L19,17.59Z"; -var mdiArrowTopLeftBoldOutline = "M14.12,8.46L19.78,14.12L14.12,19.78L8.46,14.12L4.22,18.36V4.22H18.36L14.12,8.46M6.34,13.41L8.46,11.29L14.12,16.95L16.95,14.12L11.29,8.47L13.41,6.34H6.34V13.41Z"; -var mdiArrowTopLeftBottomRight = "M13,21H21V13H19V17.59L6.41,5H11V3H3V11H5V6.41L17.59,19H13V21Z"; -var mdiArrowTopLeftBottomRightBold = "M5.83,8.66L3,11.5V3H11.5L8.66,5.83L18.17,15.34L21,12.5V21H12.5L15.34,18.17L5.83,8.66Z"; -var mdiArrowTopLeftThick = "M9.12,11.94V16.89H5.69V5.69H16.89V9.12H11.94L18.31,15.5L15.5,18.31L9.12,11.94Z"; -var mdiArrowTopLeftThinCircleOutline = "M12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 7.59 7.59 3.97 12 3.97M12 2C6.46 2 2 6.46 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12C22 6.46 17.54 2 12 2M10.12 11.53L8 13.64V8H13.64L11.53 10.12L16.5 15.1L15.1 16.5"; -var mdiArrowTopRight = "M5,17.59L15.59,7H9V5H19V15H17V8.41L6.41,19L5,17.59Z"; -var mdiArrowTopRightBoldOutline = "M5.64,4.22H19.78V18.36L15.54,14.12L9.88,19.78L4.22,14.12L9.88,8.46L5.64,4.22M17.66,6.34H10.59L12.71,8.46L7.05,14.12L9.88,16.95L15.54,11.29L17.66,13.41V6.34H17.66Z"; -var mdiArrowTopRightBottomLeft = "M11,21H3V13H5V17.59L17.59,5H13V3H21V11H19V6.41L6.41,19H11V21Z"; -var mdiArrowTopRightBottomLeftBold = "M18.17,8.66L21,11.5V3H12.5L15.34,5.83L5.83,15.34L3,12.5V21H11.5L8.66,18.17L18.17,8.66Z"; -var mdiArrowTopRightThick = "M8.5,18.31L5.69,15.5L12.06,9.12H7.11V5.69H18.31V16.89H14.89V11.94L8.5,18.31Z"; -var mdiArrowTopRightThinCircleOutline = "M12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97M12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2M13.88 11.53L16 13.64V8H10.36L12.47 10.12L7.5 15.1L8.9 16.5"; -var mdiArrowUp = "M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z"; -var mdiArrowUpBold = "M15,20H9V12H4.16L12,4.16L19.84,12H15V20Z"; -var mdiArrowUpBoldBox = "M19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21M12,7L7,12H10V16H14V12H17L12,7Z"; -var mdiArrowUpBoldBoxOutline = "M12,7L17,12H14V16H10V12H7L12,7M19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21M19,19V5H5V19H19Z"; -var mdiArrowUpBoldCircle = "M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,7L7,12H10V16H14V12H17L12,7Z"; -var mdiArrowUpBoldCircleOutline = "M12,7L17,12H14V16H10V12H7L12,7M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20Z"; -var mdiArrowUpBoldHexagonOutline = "M12,7L17,12H14V16H10V12H7L12,7M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; -var mdiArrowUpBoldOutline = "M16,13V21H8V13H2L12,3L22,13H16M7,11H10V19H14V11H17L12,6L7,11Z"; -var mdiArrowUpBox = "M21,19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19C20.11,3 21,3.9 21,5V19M13,18V9.5L16.5,13L17.92,11.58L12,5.66L6.08,11.58L7.5,13L11,9.5V18H13Z"; -var mdiArrowUpCircle = "M13,18V10L16.5,13.5L17.92,12.08L12,6.16L6.08,12.08L7.5,13.5L11,10V18H13M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiArrowUpCircleOutline = "M13,18H11V10L7.5,13.5L6.08,12.08L12,6.16L17.92,12.08L16.5,13.5L13,10V18M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiArrowUpDown = "M17.45,17.55L12,23L6.55,17.55L7.96,16.14L11,19.17V4.83L7.96,7.86L6.55,6.45L12,1L17.45,6.45L16.04,7.86L13,4.83V19.17L16.04,16.14L17.45,17.55Z"; -var mdiArrowUpDownBold = "M10,8H6L12,2L18,8H14V16H18L12,22L6,16H10V8Z"; -var mdiArrowUpDownBoldOutline = "M16,10H22L12,0L2,10H8V14H2L12,24L22,14H16V10M14,16H17L12,21L7,16H10V8H7L12,3L17,8H14V16Z"; -var mdiArrowUpDropCircle = "M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M17,14L12,9L7,14H17Z"; -var mdiArrowUpDropCircleOutline = "M12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M17,14L12,9L7,14H17Z"; -var mdiArrowUpThick = "M14,20H10V11L6.5,14.5L4.08,12.08L12,4.16L19.92,12.08L17.5,14.5L14,11V20Z"; -var mdiArrowUpThinCircleOutline = "M12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97M12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2M13 10.46H16L12 6.5L8 10.46H11V17.5H13"; -var mdiArrowVerticalLock = "M18.8 11V9.5C18.8 8.1 17.4 7 16 7S13.2 8.1 13.2 9.5V11C12.6 11 12 11.6 12 12.2V15.7C12 16.4 12.6 17 13.2 17H18.7C19.4 17 20 16.4 20 15.8V12.3C20 11.6 19.4 11 18.8 11M17.5 11H14.5V9.5C14.5 8.7 15.2 8.2 16 8.2C16.8 8.2 17.5 8.7 17.5 9.5V11M9 6H12L8 2L4 6H7V18H4L8 22L12 18H9V6Z"; -var mdiArtstation = "M1.77,16.88L3.5,19.86C3.84,20.54 4.54,21 5.33,21H16.79L14.43,16.88H1.77M22.23,16.9C22.23,16.5 22.11,16.11 21.9,15.78L15.17,4.1C14.82,3.44 14.15,3 13.35,3H9.8L20.18,21L21.82,18.14C22.13,17.6 22.23,17.36 22.23,16.9M12.73,13.94L8.1,5.92L3.45,13.94H12.73Z"; -var mdiAspectRatio = "M19,12H17V15H14V17H19V12M7,9H10V7H5V12H7V9M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H3V5H21V19Z"; -var mdiAssistant = "M19,2H5A2,2 0 0,0 3,4V18A2,2 0 0,0 5,20H9L12,23L15,20H19A2,2 0 0,0 21,18V4A2,2 0 0,0 19,2M13.88,12.88L12,17L10.12,12.88L6,11L10.12,9.12L12,5L13.88,9.12L18,11"; -var mdiAsterisk = "M10,2H14L13.21,9.91L19.66,5.27L21.66,8.73L14.42,12L21.66,15.27L19.66,18.73L13.21,14.09L14,22H10L10.79,14.09L4.34,18.73L2.34,15.27L9.58,12L2.34,8.73L4.34,5.27L10.79,9.91L10,2Z"; -var mdiAt = "M12,15C12.81,15 13.5,14.7 14.11,14.11C14.7,13.5 15,12.81 15,12C15,11.19 14.7,10.5 14.11,9.89C13.5,9.3 12.81,9 12,9C11.19,9 10.5,9.3 9.89,9.89C9.3,10.5 9,11.19 9,12C9,12.81 9.3,13.5 9.89,14.11C10.5,14.7 11.19,15 12,15M12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12V13.45C22,14.45 21.65,15.3 21,16C20.3,16.67 19.5,17 18.5,17C17.3,17 16.31,16.5 15.56,15.5C14.56,16.5 13.38,17 12,17C10.63,17 9.45,16.5 8.46,15.54C7.5,14.55 7,13.38 7,12C7,10.63 7.5,9.45 8.46,8.46C9.45,7.5 10.63,7 12,7C13.38,7 14.55,7.5 15.54,8.46C16.5,9.45 17,10.63 17,12V13.45C17,13.86 17.16,14.22 17.46,14.53C17.76,14.84 18.11,15 18.5,15C18.92,15 19.27,14.84 19.57,14.53C19.87,14.22 20,13.86 20,13.45V12C20,9.81 19.23,7.93 17.65,6.35C16.07,4.77 14.19,4 12,4C9.81,4 7.93,4.77 6.35,6.35C4.77,7.93 4,9.81 4,12C4,14.19 4.77,16.07 6.35,17.65C7.93,19.23 9.81,20 12,20H17V22H12C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,9.25 3,6.9 4.95,4.95C6.9,3 9.25,2 12,2Z"; -var mdiAtlassian = "M7.93,11.24C7.74,11 7.38,10.94 7.13,11.13C7.06,11.19 7,11.26 6.96,11.34L2.06,21.15C1.91,21.44 2.03,21.79 2.32,21.94C2.4,22 2.5,22 2.59,22H9.41C9.63,22 9.84,21.88 9.94,21.68C11.41,18.63 10.5,14 7.93,11.24M11.53,2.31C9.05,6.14 8.76,11 10.77,15.09L14.06,21.68C14.17,21.88 14.37,22 14.59,22H21.41A0.59,0.59 0 0,0 22,21.41C22,21.32 22,21.23 21.94,21.15C21.94,21.15 12.76,2.77 12.5,2.31C12.39,2.04 12.06,1.92 11.78,2.06C11.67,2.11 11.58,2.2 11.53,2.31Z"; -var mdiAtm = "M8,9V10.5H10.25V15H11.75V10.5H14V9H8M6,9H3A1,1 0 0,0 2,10V15H3.5V13.5H5.5V15H7V10A1,1 0 0,0 6,9M5.5,12H3.5V10.5H5.5V12M21,9H16.5A1,1 0 0,0 15.5,10V15H17V10.5H18V14H19.5V10.5H20.5V15H22V10A1,1 0 0,0 21,9Z"; -var mdiAtom = "M12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11M4.22,4.22C5.65,2.79 8.75,3.43 12,5.56C15.25,3.43 18.35,2.79 19.78,4.22C21.21,5.65 20.57,8.75 18.44,12C20.57,15.25 21.21,18.35 19.78,19.78C18.35,21.21 15.25,20.57 12,18.44C8.75,20.57 5.65,21.21 4.22,19.78C2.79,18.35 3.43,15.25 5.56,12C3.43,8.75 2.79,5.65 4.22,4.22M15.54,8.46C16.15,9.08 16.71,9.71 17.23,10.34C18.61,8.21 19.11,6.38 18.36,5.64C17.62,4.89 15.79,5.39 13.66,6.77C14.29,7.29 14.92,7.85 15.54,8.46M8.46,15.54C7.85,14.92 7.29,14.29 6.77,13.66C5.39,15.79 4.89,17.62 5.64,18.36C6.38,19.11 8.21,18.61 10.34,17.23C9.71,16.71 9.08,16.15 8.46,15.54M5.64,5.64C4.89,6.38 5.39,8.21 6.77,10.34C7.29,9.71 7.85,9.08 8.46,8.46C9.08,7.85 9.71,7.29 10.34,6.77C8.21,5.39 6.38,4.89 5.64,5.64M9.88,14.12C10.58,14.82 11.3,15.46 12,16.03C12.7,15.46 13.42,14.82 14.12,14.12C14.82,13.42 15.46,12.7 16.03,12C15.46,11.3 14.82,10.58 14.12,9.88C13.42,9.18 12.7,8.54 12,7.97C11.3,8.54 10.58,9.18 9.88,9.88C9.18,10.58 8.54,11.3 7.97,12C8.54,12.7 9.18,13.42 9.88,14.12M18.36,18.36C19.11,17.62 18.61,15.79 17.23,13.66C16.71,14.29 16.15,14.92 15.54,15.54C14.92,16.15 14.29,16.71 13.66,17.23C15.79,18.61 17.62,19.11 18.36,18.36Z"; -var mdiAtomVariant = "M18.36,2.64C20,2.64 21.36,4 21.36,5.64C21.36,7.29 20,8.64 18.36,8.64C16.71,8.64 15.36,7.29 15.36,5.64C15.36,5.34 15.41,5.06 15.5,4.8C14.43,4.29 13.25,4 12,4A8,8 0 0,0 4,12L4.04,12.84L2.05,13.05L2,12A10,10 0 0,1 12,2C13.69,2 15.28,2.42 16.67,3.16C17.16,2.83 17.74,2.64 18.36,2.64M18.36,4.64A1,1 0 0,0 17.36,5.64A1,1 0 0,0 18.36,6.64C18.92,6.64 19.36,6.19 19.36,5.64C19.36,5.08 18.92,4.64 18.36,4.64M5.64,15.36C7.29,15.36 8.64,16.71 8.64,18.36C8.64,18.66 8.59,18.94 8.5,19.2C9.57,19.71 10.75,20 12,20A8,8 0 0,0 20,12L19.96,11.16L21.95,10.95L22,12A10,10 0 0,1 12,22C10.31,22 8.72,21.58 7.33,20.84C6.84,21.17 6.26,21.36 5.64,21.36C4,21.36 2.64,20 2.64,18.36C2.64,16.71 4,15.36 5.64,15.36M5.64,17.36C5.08,17.36 4.64,17.81 4.64,18.36C4.64,18.92 5.08,19.36 5.64,19.36A1,1 0 0,0 6.64,18.36A1,1 0 0,0 5.64,17.36M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8Z"; -var mdiAttachment = "M7.5,18A5.5,5.5 0 0,1 2,12.5A5.5,5.5 0 0,1 7.5,7H18A4,4 0 0,1 22,11A4,4 0 0,1 18,15H9.5A2.5,2.5 0 0,1 7,12.5A2.5,2.5 0 0,1 9.5,10H17V11.5H9.5A1,1 0 0,0 8.5,12.5A1,1 0 0,0 9.5,13.5H18A2.5,2.5 0 0,0 20.5,11A2.5,2.5 0 0,0 18,8.5H7.5A4,4 0 0,0 3.5,12.5A4,4 0 0,0 7.5,16.5H17V18H7.5Z"; -var mdiAudioVideo = "M20,7H4A2,2 0 0,0 2,9V15A2,2 0 0,0 4,17H5V18C5,18.6 5.4,19 6,19H8C8.6,19 9,18.6 9,18V17H15V18C15,18.6 15.4,19 16,19H18C18.6,19 19,18.6 19,18V17H20A2,2 0 0,0 22,15V9A2,2 0 0,0 20,7M14,12H4V10H14V12M18,13A2,2 0 0,1 16,11A2,2 0 0,1 18,9A2,2 0 0,1 20,11A2,2 0 0,1 18,13M6,15H4V14H6V15M10,15H8V14H10V15M14,15H12V14H14V15Z"; -var mdiAudioVideoOff = "M22.1 21.5L2.4 1.7L1.1 3L5.1 7H4C2.9 7 2 7.9 2 9V15C2 16.1 2.9 17 4 17H5V18C5 18.6 5.4 19 6 19H8C8.6 19 9 18.6 9 18V17H15V18C15 18.6 15.4 19 16 19H17.1L20.8 22.7L22.1 21.5M6 15H4V14H6V15M4 12V10H8.1L10.1 12H4M10 15H8V14H10V15M12 15V14H12.1L13.1 15H12M14 10V10.8L20.2 17C21.2 16.9 22 16.1 22 15V9C22 7.9 21.1 7 20 7H10.2L13.2 10H14M18 9C19.1 9 20 9.9 20 11S19.1 13 18 13 16 12.1 16 11 16.9 9 18 9Z"; -var mdiAugmentedReality = "M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M7,9H10C10.6,9 11,9.5 11,10V15H9.5V13.5H7.5V15H6V10C6,9.5 6.4,9 7,9M13,9H16.5C17.35,9 18,9.65 18,10.5V11.5C18,12.1 17.6,12.65 17.1,12.9L18,15H16.5L15.65,13H14.5V15H13V9M7.5,10.5V12H9.5V10.5H7.5M14.5,10.5V11.5H16.5V10.5H14.5"; -var mdiAutoDownload = "M22 17V19H11V17H22M19 4.5V9.5H22L16.5 15L11 9.5H14V4.5H19M10.7 15H8.8L8.1 13H4.9L4.2 15H2.3L5.5 6H7.5L10.7 15M7.65 11.65L6.5 8L5.35 11.65H7.65Z"; -var mdiAutoFix = "M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z"; -var mdiAutoUpload = "M5.35,12.65L6.5,9L7.65,12.65M5.5,7L2.3,16H4.2L4.9,14H8.1L8.8,16H10.7L7.5,7M11,20H22V18H11M14,16H19V11H22L16.5,5.5L11,11H14V16Z"; -var mdiAutorenew = "M12,6V9L16,5L12,1V4A8,8 0 0,0 4,12C4,13.57 4.46,15.03 5.24,16.26L6.7,14.8C6.25,13.97 6,13 6,12A6,6 0 0,1 12,6M18.76,7.74L17.3,9.2C17.74,10.04 18,11 18,12A6,6 0 0,1 12,18V15L8,19L12,23V20A8,8 0 0,0 20,12C20,10.43 19.54,8.97 18.76,7.74Z"; -var mdiAvTimer = "M11,17A1,1 0 0,0 12,18A1,1 0 0,0 13,17A1,1 0 0,0 12,16A1,1 0 0,0 11,17M11,3V7H13V5.08C16.39,5.57 19,8.47 19,12A7,7 0 0,1 12,19A7,7 0 0,1 5,12C5,10.32 5.59,8.78 6.58,7.58L12,13L13.41,11.59L6.61,4.79V4.81C4.42,6.45 3,9.05 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M18,12A1,1 0 0,0 17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12M6,12A1,1 0 0,0 7,13A1,1 0 0,0 8,12A1,1 0 0,0 7,11A1,1 0 0,0 6,12Z"; -var mdiAws = "M7.64,10.38C7.64,10.63 7.66,10.83 7.71,11C7.76,11.12 7.83,11.28 7.92,11.46C7.96,11.5 7.97,11.56 7.97,11.61C7.97,11.68 7.93,11.74 7.84,11.81L7.42,12.09C7.36,12.13 7.3,12.15 7.25,12.15C7.18,12.15 7.12,12.11 7.05,12.05C6.96,11.95 6.88,11.85 6.81,11.74C6.75,11.63 6.68,11.5 6.61,11.35C6.09,11.96 5.44,12.27 4.65,12.27C4.09,12.27 3.65,12.11 3.32,11.79C3,11.47 2.83,11.04 2.83,10.5C2.83,9.95 3.03,9.5 3.43,9.14C3.84,8.8 4.38,8.62 5.06,8.62C5.29,8.62 5.5,8.64 5.77,8.68C6,8.71 6.27,8.76 6.53,8.82V8.34C6.53,7.83 6.43,7.5 6.22,7.27C6,7.06 5.65,6.97 5.14,6.97C4.9,6.97 4.66,7 4.42,7.05C4.17,7.11 3.93,7.18 3.7,7.28C3.59,7.32 3.5,7.35 3.47,7.36C3.42,7.38 3.39,7.38 3.36,7.38C3.27,7.38 3.22,7.32 3.22,7.18V6.85C3.22,6.75 3.23,6.67 3.27,6.62C3.3,6.57 3.36,6.53 3.45,6.5C3.69,6.36 3.96,6.26 4.29,6.18C4.62,6.09 4.96,6.05 5.33,6.05C6.12,6.05 6.7,6.23 7.07,6.59C7.44,6.95 7.62,7.5 7.62,8.23V10.38H7.64M4.94,11.4C5.16,11.4 5.38,11.36 5.62,11.28C5.86,11.2 6.07,11.05 6.25,10.85C6.36,10.72 6.44,10.58 6.5,10.42C6.5,10.26 6.55,10.07 6.55,9.84V9.57C6.35,9.5 6.15,9.5 5.93,9.45C5.72,9.43 5.5,9.41 5.31,9.41C4.86,9.41 4.54,9.5 4.32,9.68C4.1,9.86 4,10.11 4,10.44C4,10.76 4.07,11 4.24,11.15C4.4,11.32 4.63,11.4 4.94,11.4M10.28,12.11C10.16,12.11 10.08,12.09 10,12.05C9.97,12 9.92,11.91 9.88,11.79L8.32,6.65C8.28,6.5 8.26,6.43 8.26,6.38C8.26,6.27 8.31,6.21 8.42,6.21H9.07C9.2,6.21 9.29,6.23 9.33,6.28C9.39,6.32 9.43,6.41 9.47,6.54L10.58,10.94L11.62,6.54C11.65,6.41 11.69,6.32 11.75,6.28C11.8,6.24 11.89,6.21 12,6.21H12.55C12.67,6.21 12.76,6.23 12.81,6.28C12.86,6.32 12.91,6.41 12.94,6.54L14,11L15.14,6.54C15.18,6.41 15.23,6.32 15.27,6.28C15.33,6.24 15.41,6.21 15.53,6.21H16.15C16.26,6.21 16.32,6.27 16.32,6.38C16.32,6.41 16.31,6.45 16.3,6.5C16.3,6.5 16.28,6.58 16.26,6.65L14.65,11.79C14.61,11.93 14.57,12 14.5,12.05C14.46,12.09 14.37,12.12 14.26,12.12H13.69C13.56,12.12 13.5,12.1 13.42,12.05C13.37,12 13.32,11.92 13.3,11.79L12.27,7.5L11.24,11.78C11.21,11.91 11.17,12 11.12,12.05C11.06,12.09 10.97,12.11 10.85,12.11H10.28M18.83,12.29C18.5,12.29 18.13,12.25 17.8,12.17C17.47,12.09 17.21,12 17.04,11.91C16.93,11.85 16.86,11.78 16.83,11.72C16.8,11.66 16.79,11.6 16.79,11.54V11.2C16.79,11.06 16.84,11 16.94,11C17,11 17,11 17.06,11C17.1,11 17.16,11.05 17.23,11.08C17.45,11.18 17.7,11.26 17.96,11.31C18.23,11.36 18.5,11.39 18.75,11.39C19.17,11.39 19.5,11.32 19.72,11.17C19.95,11 20.07,10.81 20.07,10.54C20.07,10.35 20,10.2 19.89,10.07C19.77,9.95 19.54,9.83 19.22,9.73L18.25,9.43C17.77,9.27 17.41,9.05 17.19,8.75C16.97,8.46 16.86,8.13 16.86,7.78C16.86,7.5 16.92,7.26 17.04,7.05C17.16,6.83 17.32,6.65 17.5,6.5C17.72,6.35 17.94,6.24 18.21,6.16C18.47,6.08 18.75,6.04 19.05,6.04C19.19,6.04 19.34,6.05 19.5,6.07C19.64,6.09 19.78,6.12 19.92,6.14C20.06,6.18 20.18,6.21 20.3,6.25C20.42,6.29 20.5,6.33 20.58,6.37C20.67,6.42 20.74,6.47 20.78,6.53C20.82,6.59 20.84,6.66 20.84,6.75V7.07C20.84,7.21 20.79,7.28 20.69,7.28C20.64,7.28 20.55,7.25 20.43,7.2C20.06,7.03 19.63,6.94 19.16,6.94C18.78,6.94 18.5,7 18.27,7.13C18.07,7.25 17.96,7.45 17.96,7.72C17.96,7.91 18.03,8.07 18.16,8.19C18.29,8.32 18.54,8.44 18.89,8.56L19.84,8.86C20.32,9 20.66,9.22 20.87,9.5C21.07,9.77 21.17,10.08 21.17,10.43C21.17,10.71 21.11,10.97 21,11.2C20.88,11.42 20.72,11.62 20.5,11.78C20.31,11.95 20.06,12.07 19.78,12.16C19.5,12.25 19.16,12.29 18.83,12.29M20.08,15.53C17.89,17.14 14.71,18 12,18C8.15,18 4.7,16.58 2.09,14.23C1.88,14.04 2.07,13.79 2.32,13.94C5.14,15.57 8.61,16.56 12.21,16.56C14.64,16.56 17.31,16.06 19.76,15C20.13,14.85 20.44,15.26 20.08,15.53M21,14.5C20.71,14.13 19.14,14.32 18.43,14.4C18.22,14.43 18.19,14.24 18.38,14.1C19.63,13.23 21.69,13.5 21.92,13.77C22.16,14.07 21.86,16.13 20.69,17.11C20.5,17.26 20.33,17.18 20.41,17C20.68,16.32 21.27,14.84 21,14.5Z"; -var mdiAxe = "M12,2L22,8C22,12 20,14 16,15L13,10L9,6L12,2M4.11,19.84L2.12,18.33L9.19,9L11,10.81L4.11,19.84Z"; -var mdiAxis = "M2.61,21L1.61,19.27L11,13.85V3H13V13.85L22.39,19.27L21.39,21L12,15.58L2.61,21Z"; -var mdiAxisArrow = "M12,2L16,6H13V13.85L19.53,17.61L21,15.03L22.5,20.5L17,21.96L18.53,19.35L12,15.58L5.47,19.35L7,21.96L1.5,20.5L3,15.03L4.47,17.61L11,13.85V6H8L12,2Z"; -var mdiAxisArrowInfo = "M12 2L16 6H13V13.85L19.53 17.61L21 15.03L22.5 20.5L17 21.96L18.53 19.35L12 15.58L5.47 19.35L7 21.96L1.5 20.5L3 15.03L4.47 17.61L11 13.85V6H8L12 2M21 5H19V3H21V5M22 10V12H18V10H19V8H18V6H21V10H22Z"; -var mdiAxisArrowLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5M1.74,19.25L3.21,13.79L4.68,16.34L9,13.85V6H6L10,2L14,6H11V13.85L18.03,17.86L19.5,15.28L21,20.74L15.5,22.21L17.03,19.6L10,15.58L5.68,18.07L7.21,20.71L1.74,19.25Z"; -var mdiAxisLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5M11,13.82L20.39,19.25L19.39,21L10,15.56L3.17,19.5L2.17,17.77L9,13.82V3H11V13.82Z"; -var mdiAxisXArrow = "M1.5,20.5L3,15.03L4.46,17.6L11,13.82V3H13V13.82L22.39,19.25L21.39,21L12,15.56L5.46,19.33L7,21.96L1.5,20.5Z"; -var mdiAxisXArrowLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.31,2.2 17.69,2.58 17.54,3.2C17.5,3.29 17.5,3.39 17.5,3.5V5H20.5M1.74,19.25L3.21,13.79L4.67,16.32L9,13.82V3H11V13.82L20.39,19.25L19.39,21L10,15.56L5.67,18.06L7.21,20.71L1.74,19.25Z"; -var mdiAxisXRotateClockwise = "M12,10H14.91C14.57,6.55 13.4,4 12,4C10.42,4 9.12,7.27 9,11.42L7,12.57V12C7,6.5 9.24,2 12,2C14.42,2 16.44,5.44 16.9,10H20L16,14L12,10M12,22C10.12,22 8.47,19.92 7.62,16.84L9.37,15.83C9.87,18.31 10.86,20 12,20C13.27,20 14.36,17.89 14.79,14.92L16,16.12L16.7,15.42C16,19.26 14.16,22 12,22M2.11,18.87L1.11,17.13L1.06,17.06L11.12,11.25L12.72,12.84L2.15,18.94L2.11,18.87M21.89,5.13L22.89,6.87L19.2,9H17.77L17.5,7.66L21.89,5.13Z"; -var mdiAxisXRotateCounterclockwise = "M12,14L16,10L20,14H16.9C16.44,18.56 14.42,22 12,22C10.12,22 8.47,19.92 7.62,16.84L9.37,15.83C9.87,18.31 10.86,20 12,20C13.4,20 14.57,17.45 14.91,14H12M1.11,17.13L13.89,9.75L13.96,10.54L10.5,14H10.54L2.11,18.87L1.11,17.13M21.89,5.13L22.89,6.87L17.88,9.76C17.79,9.03 17.67,8.33 17.5,7.66L21.89,5.13M12,2C14.3,2 16.23,5.1 16.82,9.32L16,8.5L14.87,9.63C14.5,6.37 13.35,4 12,4C10.42,4 9.12,7.27 9,11.42L7,12.57V12C7,6.5 9.24,2 12,2Z"; -var mdiAxisXYArrowLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5M1.74,19.25L3.21,13.79L4.68,16.34L9,13.85V3H11V13.85L17.53,17.61L19,15.03L20.5,20.5L15,21.96L16.53,19.35L10,15.58L5.68,18.07L7.21,20.71L1.74,19.25Z"; -var mdiAxisYArrow = "M22.5,20.5L17,21.96L18.53,19.35L12,15.58L2.61,21L1.61,19.27L11,13.85V3H13V13.85L19.53,17.61L21,15.03L22.5,20.5Z"; -var mdiAxisYArrowLock = "M11,13.82L18,17.88L19.5,15.28L21,20.74L15.5,22.21L17,19.61L10,15.56L3.17,19.5L2.17,17.77L9,13.82V3H11V13.82M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5Z"; -var mdiAxisYRotateClockwise = "M12,10L16,14L20,10H16.9C16.44,5.44 14.42,2 12,2C10.12,2 8.47,4.08 7.62,7.16L9.37,8.17C9.87,5.69 10.86,4 12,4C13.4,4 14.57,6.55 14.91,10H12M1.11,6.87L13.89,14.25L13.96,13.46L10.5,10H10.54L2.11,5.13L1.11,6.87M21.89,18.87L22.89,17.13L17.88,14.24C17.79,14.97 17.67,15.67 17.5,16.34L21.89,18.87M12,22C14.3,22 16.23,18.9 16.82,14.68L16,15.5L14.87,14.37C14.5,17.63 13.35,20 12,20C10.42,20 9.12,16.73 9,12.58L7,11.43V12C7,17.5 9.24,22 12,22Z"; -var mdiAxisYRotateCounterclockwise = "M12,14H14.91C14.57,17.45 13.4,20 12,20C10.42,20 9.12,16.73 9,12.58L7,11.43V12C7,17.5 9.24,22 12,22C14.42,22 16.44,18.56 16.9,14H20L16,10L12,14M12,2C10.12,2 8.47,4.08 7.62,7.16L9.37,8.17C9.87,5.69 10.86,4 12,4C13.27,4 14.36,6.11 14.79,9.08L16,7.88L16.7,8.58C16,4.74 14.16,2 12,2M2.11,5.13L1.11,6.87L1.06,6.94L11.12,12.75L12.72,11.16L2.15,5.06L2.11,5.13M21.89,18.87L22.89,17.13L19.2,15H17.77L17.5,16.34L21.89,18.87Z"; -var mdiAxisZArrow = "M12,2L16,6H13V13.82L22.39,19.25L21.39,21L12,15.56L2.61,21L1.61,19.25L11,13.82V6H8L12,2Z"; -var mdiAxisZArrowLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5M10,2L14,6H11V13.82L20.39,19.25L19.39,21L10,15.56L3.17,19.5L2.17,17.77L9,13.82V6H6L10,2Z"; -var mdiAxisZRotateClockwise = "M14,12L10,16L14,20V16.9C18.56,16.44 22,14.42 22,12C22,9.58 18.56,7.56 14,7.1V9.09C17.45,9.43 20,10.6 20,12C20,13.4 17.45,14.57 14,14.91V12M4,12C4,10.6 6.55,9.43 10,9.09V7.1C5.44,7.56 2,9.58 2,12C2,14.16 4.74,16 8.58,16.7L7.88,16L9.08,14.79C6.11,14.36 4,13.27 4,12M13,2H11V13L13,11V2M13,22V21L11,19V22H13Z"; -var mdiAxisZRotateCounterclockwise = "M10,12L14,16L10,20V16.9C5.44,16.44 2,14.42 2,12C2,9.58 5.44,7.56 10,7.1V9.09C6.55,9.43 4,10.6 4,12C4,13.4 6.55,14.57 10,14.91V12M20,12C20,10.6 17.45,9.43 14,9.09V7.1C18.56,7.56 22,9.58 22,12C22,14.16 19.26,16 15.42,16.7L16.12,16L14.92,14.79C17.89,14.36 20,13.27 20,12M11,2H13V13L11,11V2M11,22V21L13,19V22H11Z"; -var mdiBabel = "M15.14 2C13.8 2.12 12.04 2.59 9.87 3.43C9.28 3.87 8.6 4.3 7.84 4.72V4.85C7.9 4.85 7.96 4.81 8.04 4.77C8.13 4.76 8.19 4.79 8.19 4.88L8.32 4.8L8.39 4.79L8.4 4.86C8.41 4.92 7.93 5.29 7 5.96L7.06 6.09H7L6.84 6.04C6.84 6.09 6.78 6.11 6.64 6.12L6.65 6.19L6.81 6.37C6.75 6.37 6.68 6.36 6.6 6.32C6.29 6.35 6 6.58 5.69 7L5.77 7.12C6.03 6.88 6.18 6.76 6.22 6.76L6.24 6.95C6.2 6.95 6.12 7 6.04 7.03L6.2 7.27C6.5 6.93 6.86 6.64 7.24 6.41C7.43 6.46 7.53 6.5 7.53 6.58L7.67 6.57C8.69 5.81 9.71 5.27 10.71 4.93L10.72 5.06C10.53 5.34 10.4 5.5 10.33 5.5C10.34 5.59 10.38 5.67 10.43 5.74C10.45 5.92 10 7.06 9.07 9.19C6.95 14.13 5.19 17.78 3.77 20.16C3.77 20.2 3.8 20.27 3.85 20.35C4.2 20.26 4.42 20.18 4.5 20.1L4.6 20.09L4.61 20.22L4.74 20.21L4.88 20.13C4.88 20.18 4.93 20.19 5 20.18L5.03 20.31C5.03 20.45 4.96 20.65 4.8 20.92C4.65 21.08 4.5 21.42 4.34 21.94V22H4.47C5.04 21.35 5.5 20.72 5.78 20.11C7.44 19.62 8.71 19.15 9.59 18.67C10.47 18.6 11.15 18.37 11.61 18L11.6 17.91L11.27 18H11.19L11.18 17.95C11.83 17.85 12.28 17.7 12.5 17.5C13.79 16.54 14.74 15.85 15.39 15.44C17.39 13.97 18.33 12.55 18.22 11.21C18.21 11.07 17.76 10.5 16.9 9.56C16.88 9.38 17.19 9.12 17.8 8.77L19.53 7.24C19.92 6.74 20.15 5.94 20.23 4.83L20.2 4.57C20.14 3.79 19.58 3.16 18.5 2.68C17.88 2.25 16.76 2.03 15.14 2M17.24 2.87C18.53 2.92 19.19 3.14 19.23 3.55L19.18 3.68L17.24 2.87M16 3.96C16.89 3.95 17.35 4.18 17.4 4.68L17.5 4.67V4.34L17.64 4.33C18 4.5 18.16 4.74 18.18 5C18.2 5.2 18.1 5.42 17.89 5.69C17.8 5.7 17.75 5.64 17.74 5.5H17.6L17.56 5.91C17 6.78 16.56 7.23 16.3 7.26C16.06 7.58 15.91 7.75 15.85 7.75C15.67 7.97 15.17 8.35 14.35 8.87C14.08 8.9 13.07 9.28 11.34 10.04C11.25 10 11.16 10 11.06 10L11.05 9.88C11.03 9.62 11.14 9.31 11.39 8.92C11.5 8.21 11.67 7.8 11.83 7.7L13.28 4.44C13.27 4.24 13.57 4.09 14.21 4L14.42 3.96L14.44 4.15C15.06 4.05 15.45 4 15.6 4C15.74 3.97 15.88 3.96 16 3.96M19 4.29H19.04C19.16 4.3 19.28 4.5 19.41 4.91L19.42 5.03C19.35 5.04 19.22 4.83 19.03 4.41L19 4.29M10.82 6.36H10.88L10.9 6.55C10.84 6.56 10.75 6.65 10.65 6.83L10.64 6.7C10.76 6.55 10.82 6.43 10.82 6.36M6.67 6.46L6.68 6.5C6.63 6.5 6.56 6.56 6.5 6.6L6.41 6.61L6.39 6.5L6.67 6.46M10.24 7.72L10.26 8H10.19L10.16 7.73L10.24 7.72M10.07 8.19C10.05 8.41 10 8.5 9.89 8.53L9.82 8.54C9.9 8.39 9.94 8.29 9.93 8.21L10.07 8.19M9.78 8.87L9.79 8.93L9.67 9.14L9.54 9.15L9.53 9.09C9.66 9.08 9.72 9 9.71 8.88L9.78 8.87M9.5 9.5L9.45 9.81H9.38L9.36 9.5H9.5M16.57 9.72L16.85 9.89C16.86 10 16.82 10.03 16.73 10.04C16.61 9.96 16.5 9.93 16.44 9.93L16.43 9.73L16.57 9.72M11 10.46L11.03 10.58L10.76 10.61L10.75 10.5L11 10.46M15.5 10.91C15.68 11 15.78 11.09 15.79 11.16L15.8 11.22C15.61 11.24 15.45 11.14 15.29 10.93L15.5 10.91M17.66 11.12C17.81 11.18 17.88 11.25 17.89 11.31L17.93 11.82C17.87 11.96 17.81 12.03 17.74 12.03L17.66 11.12M14.16 11.18C14.86 11.17 15.4 11.33 15.76 11.68L15.79 11.94C15.5 12.85 15.13 13.38 14.75 13.54L13 14.93C11.7 15.79 11 16.21 10.9 16.22C8.83 17.36 7.54 17.95 7.04 18H6.96C7.03 17.76 7.95 15.87 9.73 12.33C10.5 12.26 11.76 11.89 13.44 11.23L13.85 11.19C13.96 11.19 14.06 11.18 14.16 11.18M11.62 11.59L11.63 11.65L11.35 11.67L11.34 11.61L11.62 11.59M7.26 15.81C7.17 16.26 7.08 16.5 7 16.5L6.97 16.43C6.95 16.2 7.05 16 7.26 15.81M13.18 16.09L13.19 16.21C13.2 16.27 13 16.43 12.6 16.72C11.44 17.29 10.76 17.68 10.56 17.88C9.3 18.32 8.68 18.59 8.69 18.69C7.57 19.14 6.84 19.46 6.5 19.66C6.41 19.67 6.29 19.63 6.13 19.56C6.12 19.34 6.21 19.15 6.44 19C6.63 19 6.82 19 7 19.09C7.21 19 7.57 18.87 8.08 18.74L8.07 18.61L7.66 18.65C7.71 18.58 8.11 18.4 8.86 18.09L9.07 18.07L9.08 18.13C8.73 18.16 8.53 18.27 8.5 18.46C8.5 18.53 8.53 18.58 8.62 18.57C8.87 18.39 9 18.3 9 18.27C9.5 18.18 10.9 17.44 13.18 16.09M6.86 16.69L6.87 16.75C6.88 16.84 6.83 16.89 6.74 16.9V16.84C6.73 16.76 6.77 16.71 6.86 16.69M10 17.5C10.07 17.47 10.12 17.5 10.12 17.58C9.96 17.6 9.65 17.73 9.19 18H9.12L9.11 17.87C9.44 17.84 9.73 17.71 9.97 17.5H10M6.95 18.5L6.96 18.58C6.9 18.58 6.84 18.61 6.75 18.66L6.62 18.67C6.61 18.61 6.65 18.55 6.74 18.53L6.95 18.5M5.35 19.3L5.5 19.36C5.44 19.76 5.33 19.96 5.13 20C4.97 19.91 4.83 19.88 4.7 19.89L4.68 19.7C4.67 19.62 4.72 19.57 4.82 19.55C4.9 19.54 4.95 19.6 4.96 19.73C5.2 19.44 5.33 19.3 5.35 19.3Z"; -var mdiBaby = "M18.5,4A2.5,2.5 0 0,1 21,6.5A2.5,2.5 0 0,1 18.5,9A2.5,2.5 0 0,1 16,6.5A2.5,2.5 0 0,1 18.5,4M4.5,20A1.5,1.5 0 0,1 3,18.5A1.5,1.5 0 0,1 4.5,17H11.5A1.5,1.5 0 0,1 13,18.5A1.5,1.5 0 0,1 11.5,20H4.5M16.09,19L14.69,15H11L6.75,10.75C6.75,10.75 9,8.25 12.5,8.25C15.5,8.25 15.85,9.25 16.06,9.87L18.92,18C19.2,18.78 18.78,19.64 18,19.92C17.22,20.19 16.36,19.78 16.09,19Z"; -var mdiBabyBottle = "M11.28 2.8L10.78 3.3A5.5 5.5 0 0 0 6.41 2.87L6.33 2.8A2.5 2.5 0 0 0 2.8 6.33L2.87 6.41A5.5 5.5 0 0 0 3.3 10.78L2.8 11.28A1.5 1.5 0 0 0 2.8 13.4L4.21 14.82A1.5 1.5 0 0 0 6.33 14.82L6.68 14.46L13.76 21.53A1.5 1.5 0 0 0 15.88 21.53L21.53 15.88A1.5 1.5 0 0 0 21.53 13.76L14.46 6.68L14.82 6.33A1.5 1.5 0 0 0 14.82 4.21L13.4 2.8A1.5 1.5 0 0 0 11.28 2.8M13.76 5.27L5.27 13.76L3.86 12.34L12.34 3.86M14.82 11.63L11.63 14.82L10.57 13.76L13.76 10.57M16.94 13.76L13.76 16.94L12.69 15.88L15.88 12.69Z"; -var mdiBabyBottleOutline = "M11.28 2.8L10.78 3.3C9.44 2.55 7.84 2.4 6.41 2.87L6.33 2.8C5.36 1.82 3.77 1.82 2.8 2.8S1.82 5.36 2.8 6.33L2.87 6.41C2.4 7.84 2.55 9.44 3.3 10.78L2.8 11.28C2.21 11.87 2.21 12.81 2.8 13.4L4.21 14.82C4.8 15.4 5.74 15.4 6.33 14.82L6.68 14.46L13.76 21.53C14.34 22.12 15.29 22.12 15.88 21.53L21.53 15.88C22.12 15.29 22.12 14.34 21.53 13.75L14.46 6.68L14.82 6.33C15.4 5.74 15.4 4.8 14.82 4.21L13.4 2.79C12.82 2.21 11.87 2.21 11.28 2.8M4.25 7.05C4.33 6.71 4.47 6.38 4.66 6.07L3.86 5.27C3.75 5.16 3.67 5.04 3.63 4.9C3.5 4.56 3.57 4.14 3.86 3.86S4.56 3.5 4.9 3.63C5.04 3.67 5.16 3.75 5.27 3.86L6.07 4.66C6.38 4.47 6.71 4.33 7.05 4.25C7.91 4 8.83 4.06 9.65 4.42L4.42 9.65C4.06 8.83 4 7.91 4.25 7.05M20.47 14.82L14.82 20.47L7.75 13.4L13.4 7.75L20.47 14.82M13.76 5.27L5.27 13.76L3.86 12.34L12.34 3.86L13.76 5.27M14.82 11.63L11.63 14.82L10.57 13.76L13.76 10.57L14.82 11.63M16.94 13.76L13.76 16.94L12.69 15.88L15.88 12.69L16.94 13.76Z"; -var mdiBabyBuggy = "M17 20A2 2 0 0 1 15 22A2 2 0 0 1 13 20A2 2 0 0 1 15 18A2 2 0 0 1 17 20M7 20A2 2 0 0 1 5 22A2 2 0 0 1 3 20A2 2 0 0 1 5 18A2 2 0 0 1 7 20M17.61 3C16.95 3 16.44 3.2 16 3.5C15.32 3.91 14.88 4.59 14.47 5.07L5.71 15.35C5.16 16 5.62 17 6.47 17H14C15.11 17 16 16.1 16 15V6.38C16.58 5.7 16.93 5 17.61 5C18.38 5 19 5.66 19 6.5V7H21V6.5C21 4.56 19.5 3 17.61 3M8.86 3.09C7.04 3.16 5.23 3.76 3.68 4.9L8.44 9.66L12.32 5.1C12.59 4.78 12.91 4.38 13.3 4C12.14 3.45 10.9 3.15 9.65 3.09C9.39 3.08 9.12 3.08 8.86 3.09Z"; -var mdiBabyCarriage = "M13,2V10H21A8,8 0 0,0 13,2M19.32,15.89C20.37,14.54 21,12.84 21,11H6.44L5.5,9H2V11H4.22C4.22,11 6.11,15.07 6.34,15.42C5.24,16 4.5,17.17 4.5,18.5A3.5,3.5 0 0,0 8,22C9.76,22 11.22,20.7 11.46,19H13.54C13.78,20.7 15.24,22 17,22A3.5,3.5 0 0,0 20.5,18.5C20.5,17.46 20.04,16.53 19.32,15.89M8,20A1.5,1.5 0 0,1 6.5,18.5A1.5,1.5 0 0,1 8,17A1.5,1.5 0 0,1 9.5,18.5A1.5,1.5 0 0,1 8,20M17,20A1.5,1.5 0 0,1 15.5,18.5A1.5,1.5 0 0,1 17,17A1.5,1.5 0 0,1 18.5,18.5A1.5,1.5 0 0,1 17,20Z"; -var mdiBabyCarriageOff = "M22 10C22 5.6 18.4 2 14 2V10H22M14.2 11H22C22 12.8 21.4 14.5 20.3 15.9C21 16.5 21.4 17.4 21.5 18.3L14.2 11M20.8 22.7L22.1 21.4L2.4 1.7L1.1 3L9.1 11H7.4L6.5 9H3V11H5.2C5.2 11 7.1 15.1 7.3 15.4C6.3 15.9 5.6 16.9 5.5 18C5.2 19.9 6.6 21.7 8.5 22C10.4 22.3 12.2 20.9 12.5 19H14.6C14.7 19.4 14.8 19.8 15 20.2C15.9 21.9 18.1 22.5 19.7 21.6L20.8 22.7M10.5 18.5C10.5 19.3 9.8 20 9 20S7.5 19.3 7.5 18.5 8.2 17 9 17 10.5 17.7 10.5 18.5M18.1 20C17.2 20 16.5 19.3 16.5 18.5V18.4L18.1 20Z"; -var mdiBabyFace = "M1,12C1,10.19 2.2,8.66 3.86,8.17C5.29,5.11 8.4,3 12,3C15.6,3 18.71,5.11 20.15,8.17C21.8,8.66 23,10.19 23,12C23,13.81 21.8,15.34 20.15,15.83C18.71,18.89 15.6,21 12,21C8.4,21 5.29,18.89 3.86,15.83C2.2,15.34 1,13.81 1,12M14.5,9.25A1.25,1.25 0 0,0 13.25,10.5A1.25,1.25 0 0,0 14.5,11.75A1.25,1.25 0 0,0 15.75,10.5A1.25,1.25 0 0,0 14.5,9.25M9.5,9.25A1.25,1.25 0 0,0 8.25,10.5A1.25,1.25 0 0,0 9.5,11.75A1.25,1.25 0 0,0 10.75,10.5A1.25,1.25 0 0,0 9.5,9.25M7.5,14C8.26,15.77 10,17 12,17C14,17 15.74,15.77 16.5,14H7.5M3,12C3,12.82 3.5,13.53 4.21,13.84C4.07,13.25 4,12.63 4,12C4,11.37 4.07,10.75 4.21,10.16C3.5,10.47 3,11.18 3,12M21,12C21,11.18 20.5,10.47 19.79,10.16C19.93,10.75 20,11.37 20,12C20,12.63 19.93,13.25 19.79,13.84C20.5,13.53 21,12.82 21,12Z"; -var mdiBabyFaceOutline = "M14.5,9.25A1.25,1.25 0 0,1 15.75,10.5A1.25,1.25 0 0,1 14.5,11.75A1.25,1.25 0 0,1 13.25,10.5A1.25,1.25 0 0,1 14.5,9.25M9.5,9.25A1.25,1.25 0 0,1 10.75,10.5A1.25,1.25 0 0,1 9.5,11.75A1.25,1.25 0 0,1 8.25,10.5A1.25,1.25 0 0,1 9.5,9.25M7.5,14H16.5C15.74,15.77 14,17 12,17C10,17 8.26,15.77 7.5,14M1,12C1,10.19 2.2,8.66 3.86,8.17C5.29,5.11 8.4,3 12,3C15.6,3 18.71,5.11 20.15,8.17C21.8,8.66 23,10.19 23,12C23,13.81 21.8,15.34 20.15,15.83C18.71,18.89 15.6,21 12,21C8.4,21 5.29,18.89 3.86,15.83C2.2,15.34 1,13.81 1,12M12,5C8.82,5 6.14,7.12 5.28,10H5A2,2 0 0,0 3,12A2,2 0 0,0 5,14H5.28C6.14,16.88 8.82,19 12,19C15.18,19 17.86,16.88 18.72,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H18.72C17.86,7.12 15.18,5 12,5Z"; -var mdiBackburger = "M5,13L9,17L7.6,18.42L1.18,12L7.6,5.58L9,7L5,11H21V13H5M21,6V8H11V6H21M21,16V18H11V16H21Z"; -var mdiBackspace = "M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.31,21 7,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M19,15.59L17.59,17L14,13.41L10.41,17L9,15.59L12.59,12L9,8.41L10.41,7L14,10.59L17.59,7L19,8.41L15.41,12"; -var mdiBackspaceOutline = "M19,15.59L17.59,17L14,13.41L10.41,17L9,15.59L12.59,12L9,8.41L10.41,7L14,10.59L17.59,7L19,8.41L15.41,12L19,15.59M22,3A2,2 0 0,1 24,5V19A2,2 0 0,1 22,21H7C6.31,21 5.77,20.64 5.41,20.11L0,12L5.41,3.88C5.77,3.35 6.31,3 7,3H22M22,5H7L2.28,12L7,19H22V5Z"; -var mdiBackspaceReverse = "M2,21H17C17.7,21 18.2,20.6 18.6,20.1L24,12L18.6,3.9C18.2,3.4 17.7,3 17,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21M5,8.4L6.4,7L10,10.6L13.6,7L15,8.4L11.4,12L15,15.6L13.6,17L10,13.4L6.4,17L5,15.6L8.6,12"; -var mdiBackspaceReverseOutline = "M5,15.59L6.41,17L10,13.41L13.59,17L15,15.59L11.41,12L15,8.41L13.59,7L10,10.59L6.41,7L5,8.41L8.59,12L5,15.59M2,3A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H17C17.69,21 18.23,20.64 18.59,20.11L24,12L18.59,3.88C18.23,3.35 17.69,3 17,3H2M2,5H17L21.72,12L17,19H2V5Z"; -var mdiBackupRestore = "M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"; -var mdiBacteria = "M21,16C21,15.5 20.95,15.08 20.88,14.68L22.45,13.9L21.55,12.1L20.18,12.79C19.63,11.96 18.91,11.5 18.29,11.28L18.95,9.32L17.05,8.68L16.29,10.96C14.96,10.83 14.17,10.32 13.7,9.77L15.45,8.9L14.55,7.1L13,7.89C12.97,7.59 12.86,6.72 12.28,5.87L13.83,3.55L12.17,2.44L10.76,4.56C10.28,4.33 9.7,4.15 9,4.06V2H7V4.1C6.29,4.25 5.73,4.54 5.32,4.91L2.7,2.29L1.29,3.71L4.24,6.65C4,7.39 4,8 4,8H2V10H4.04C4.1,10.63 4.21,11.36 4.4,12.15L1.68,13.05L2.31,14.95L5,14.05C5.24,14.56 5.5,15.08 5.82,15.58L3.44,17.17L4.55,18.83L7.07,17.15C7.63,17.71 8.29,18.21 9.06,18.64L8.1,20.55L9.89,21.45L10.89,19.45L10.73,19.36C11.68,19.68 12.76,19.9 14,19.97V22H16V19.93C16.76,19.84 17.81,19.64 18.77,19.19L20.29,20.71L21.7,19.29L20.37,17.95C20.75,17.44 21,16.8 21,16M8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11M11,14A1,1 0 0,1 10,13A1,1 0 0,1 11,12A1,1 0 0,1 12,13A1,1 0 0,1 11,14M15.5,17A1.5,1.5 0 0,1 14,15.5A1.5,1.5 0 0,1 15.5,14A1.5,1.5 0 0,1 17,15.5A1.5,1.5 0 0,1 15.5,17Z"; -var mdiBacteriaOutline = "M9,2H7V4.1C6.29,4.25 5.73,4.54 5.32,4.91L2.7,2.29L1.29,3.71L4.24,6.65C4,7.39 4,8 4,8H2V10H4.04C4.1,10.63 4.21,11.36 4.4,12.15L1.68,13.05L2.31,14.95L5,14.05C5.24,14.56 5.5,15.08 5.82,15.58L3.44,17.17L4.55,18.83L7.07,17.15C7.63,17.71 8.29,18.21 9.06,18.64L8.1,20.55L9.89,21.45L10.89,19.45L10.73,19.36C11.68,19.68 12.76,19.9 14,19.97V22H16V19.93C16.76,19.84 17.81,19.64 18.77,19.19L20.29,20.71L21.7,19.29L20.37,17.95C20.75,17.44 21,16.8 21,16C21,15.5 20.95,15.08 20.88,14.68L22.45,13.9L21.55,12.1L20.18,12.79C19.63,11.96 18.91,11.5 18.29,11.28L18.95,9.32L17.05,8.68L16.29,10.96C14.96,10.83 14.17,10.32 13.7,9.77L15.45,8.9L14.55,7.1L13,7.89C12.97,7.59 12.86,6.72 12.28,5.87L13.83,3.55L12.17,2.44L10.76,4.56C10.28,4.33 9.7,4.15 9,4.06M15,18C12.06,18 9.81,17.18 8.31,15.56C5.68,12.72 6,8.2 6,8.17V8.11L6,8.03C6,7.1 6.39,6 8,6C10.63,6 10.97,7.43 11,8C11,10 12.6,13 17,13C17.33,13 19,13.15 19,16C19,17.89 15.03,18 15,18M8.5,8A1.5,1.5 0 0,0 7,9.5A1.5,1.5 0 0,0 8.5,11A1.5,1.5 0 0,0 10,9.5A1.5,1.5 0 0,0 8.5,8M11,12A1,1 0 0,0 10,13A1,1 0 0,0 11,14A1,1 0 0,0 12,13A1,1 0 0,0 11,12M15.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,17A1.5,1.5 0 0,0 17,15.5A1.5,1.5 0 0,0 15.5,14Z"; -var mdiBadgeAccount = "M17,3H14V6H10V3H7A2,2 0 0,0 5,5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V5A2,2 0 0,0 17,3M12,8A2,2 0 0,1 14,10A2,2 0 0,1 12,12A2,2 0 0,1 10,10A2,2 0 0,1 12,8M16,16H8V15C8,13.67 10.67,13 12,13C13.33,13 16,13.67 16,15V16M13,5H11V1H13V5M16,19H8V18H16V19M12,21H8V20H12V21Z"; -var mdiBadgeAccountAlert = "M15,3H12V6H8V3H5A2,2 0 0,0 3,5V21A2,2 0 0,0 5,23H15A2,2 0 0,0 17,21V5A2,2 0 0,0 15,3M10,8A2,2 0 0,1 12,10A2,2 0 0,1 10,12A2,2 0 0,1 8,10A2,2 0 0,1 10,8M14,16H6V15C6,13.67 8.67,13 10,13C11.33,13 14,13.67 14,15V16M11,5H9V1H11V5M14,19H6V18H14V19M10,21H6V20H10V21M19,13V7H21V13H19M19,17V15H21V17H19Z"; -var mdiBadgeAccountAlertOutline = "M15,3H12V5H15V21H5V5H8V3H5A2,2 0 0,0 3,5V21A2,2 0 0,0 5,23H15A2,2 0 0,0 17,21V5A2,2 0 0,0 15,3M10,7A2,2 0 0,1 12,9A2,2 0 0,1 10,11A2,2 0 0,1 8,9A2,2 0 0,1 10,7M14,15H6V14C6,12.67 8.67,12 10,12C11.33,12 14,12.67 14,14V15M14,18H6V17H14V18M10,20H6V19H10V20M11,5H9V1H11V5M19,13V7H21V13H19M19,17V15H21V17H19Z"; -var mdiBadgeAccountHorizontal = "M22,4H14V7H10V4H2A2,2 0 0,0 0,6V20A2,2 0 0,0 2,22H22A2,2 0 0,0 24,20V6A2,2 0 0,0 22,4M8,9A2,2 0 0,1 10,11A2,2 0 0,1 8,13A2,2 0 0,1 6,11A2,2 0 0,1 8,9M12,17H4V16C4,14.67 6.67,14 8,14C9.33,14 12,14.67 12,16V17M20,18H14V16H20V18M20,14H14V12H20V14M20,10H14V8H20V10M13,6H11V2H13V6Z"; -var mdiBadgeAccountHorizontalOutline = "M8,9A2,2 0 0,1 10,11A2,2 0 0,1 8,13A2,2 0 0,1 6,11A2,2 0 0,1 8,9M12,17H4V16C4,14.67 6.67,14 8,14C9.33,14 12,14.67 12,16V17M20,8H14V10H20V8M20,12H14V14H20V12M20,16H14V18H20V16M22,4H14V6H22V20H2V6H10V4H2A2,2 0 0,0 0,6V20A2,2 0 0,0 2,22H22A2,2 0 0,0 24,20V6A2,2 0 0,0 22,4M13,6H11V2H13V6Z"; -var mdiBadgeAccountOutline = "M17,3H14V5H17V21H7V5H10V3H7A2,2 0 0,0 5,5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V5A2,2 0 0,0 17,3M12,7A2,2 0 0,1 14,9A2,2 0 0,1 12,11A2,2 0 0,1 10,9A2,2 0 0,1 12,7M16,15H8V14C8,12.67 10.67,12 12,12C13.33,12 16,12.67 16,14V15M16,18H8V17H16V18M12,20H8V19H12V20M13,5H11V1H13V5Z"; -var mdiBadminton = "M12.3,2C11.33,2.03 10.58,2.84 10.61,3.8C10.62,4.04 10.67,4.27 10.77,4.5L11.06,5.14V5.14C11.1,5.27 11.03,5.41 10.89,5.45C10.8,5.5 10.7,5.45 10.63,5.37L10.21,4.82C9.88,4.4 9.38,4.14 8.85,4.13C7.88,4.11 7.08,4.88 7.06,5.84C7.05,6.26 7.19,6.66 7.45,7L7.87,7.5H7.88C7.96,7.63 7.93,7.79 7.82,7.87C7.73,7.94 7.61,7.94 7.53,7.87L7,7.45C6.66,7.19 6.25,7.05 5.84,7.06C4.88,7.08 4.11,7.88 4.13,8.85C4.14,9.38 4.4,9.88 4.82,10.21L5.39,10.65C5.5,10.75 5.5,10.91 5.38,11C5.31,11.07 5.21,11.09 5.12,11.05H5.11L4.5,10.77C4.27,10.68 4.04,10.62 3.8,10.61C2.84,10.58 2.03,11.34 2,12.31C2,13.03 2.4,13.69 3.06,13.97L14.45,19.04L19.04,14.45L13.97,3.06C13.69,2.39 13,1.97 12.3,2M13.13,6.1C13.55,6.09 13.93,6.33 14.09,6.71L17.14,13.55L13.19,9.61L12.26,7.5C11.96,6.87 12.42,6.12 13.13,6.1M9.85,8.85C10.12,8.85 10.37,8.95 10.56,9.15L15.37,13.96C15.77,14.34 15.78,14.97 15.4,15.37C15,15.77 14.38,15.78 13.96,15.37L9.15,10.56C8.75,10.18 8.74,9.54 9.13,9.15C9.32,8.95 9.58,8.85 9.85,8.85M7.13,12.17C7.26,12.17 7.4,12.21 7.5,12.26L9.63,13.2L13.57,17.14L6.71,14.09C5.69,13.65 6.03,12.14 7.13,12.17M20.28,16.04L16.04,20.28L16.89,21.13C17.65,21.88 18.75,22.17 19.78,21.9C20.81,21.62 21.62,20.81 21.9,19.78C22.17,18.75 21.88,17.65 21.13,16.89L20.28,16.04Z"; -var mdiBagCarryOn = "M14.6 21.4C15 21.8 15.4 22 16 22S17 21.8 17.4 21.4 18 20.6 18 20 17.8 19 17.4 18.6 16.5 18 16 18 15 18.2 14.6 18.6 14 19.4 14 20 14.2 21 14.6 21.4M6 19C6 19.5 6.2 20 6.6 20.4C7 20.8 7.5 21 8 21V7C7.5 7 7 7.2 6.6 7.6C6.2 8 6 8.5 6 9V19M16 2H12C12 2.5 12.2 3 12.6 3.4C13 3.8 13.5 4 14 4V7H9V21H13.2C13 20.5 13 20.2 13 20C13 19.2 13.3 18.5 13.9 17.9C14.5 17.3 15.2 17 16 17V2Z"; -var mdiBagCarryOnCheck = "M15.28,16.69L18.14,13.88L18.84,14.58L15.28,18.14L13.17,16L13.88,15.28L15.28,16.69M8,21A2,2 0 0,1 6,19V9A2,2 0 0,1 8,7V21M9,7H14V4A2,2 0 0,1 12,2H16V10A6,6 0 0,1 22,16A6,6 0 0,1 16,22C14.77,22 13.63,21.63 12.68,21H9V7M16,12A4,4 0 0,0 12,16A4,4 0 0,0 16,20A4,4 0 0,0 20,16A4,4 0 0,0 16,12Z"; -var mdiBagCarryOnOff = "M2.1 4.9L6 8.9V19C6 19.5 6.2 20 6.6 20.4C7 20.8 7.5 21 8 21V10.8L9 11.8V21H13.2C13.1 20.6 13 20.2 13 20C13 18.8 13.5 18 14.6 17.4L15.4 18.2C14.5 18.5 14.1 19.2 14.1 20.1C14.1 20.6 14.3 21.1 14.7 21.5C15 21.8 15.5 22 16 22C16.9 22 17.6 21.6 17.9 20.7L19.1 21.9L20.5 20.5L3.5 3.5L2.1 4.9M12 2C12 2.5 12.2 3 12.6 3.4S13.5 4 14 4V7H9.8L16 13.2V2H12Z"; -var mdiBagChecked = "M22 19H2V21H22V19M4 15C4 15.5 4.2 16 4.6 16.4C5 16.8 5.5 17 6 17V6C5.5 6 5 6.2 4.6 6.6C4.2 7 4 7.5 4 8V15M13.5 6H10.5C10.5 5.6 10.6 5.2 10.9 4.9C11.2 4.6 11.5 4.5 12 4.5C12.4 4.5 12.8 4.6 13.1 4.9C13.3 5.2 13.5 5.6 13.5 6M7 6V17H17V6H15C15 5.2 14.7 4.5 14.1 3.9S12.8 3 12 3C11.2 3 10.5 3.3 9.9 3.9C9.3 4.5 9 5.2 9 6H7M18 17C18.5 17 19 16.8 19.4 16.4C19.8 16 20 15.5 20 15V8C20 7.5 19.8 7 19.4 6.6C19 6.2 18.5 6 18 6V17Z"; -var mdiBagPersonal = "M16,5V4A2,2 0 0,0 14,2H10A2,2 0 0,0 8,4V5A4,4 0 0,0 4,9V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V9A4,4 0 0,0 16,5M10,4H14V5H10V4M12,9L14,11L12,13L10,11L12,9M18,16H9V18H8V16H6V15H18V16Z"; -var mdiBagPersonalOff = "M20,19.35L2.38,1.73L1.11,3L4.77,6.66C4.27,7.34 4,8.16 4,9V20A2,2 0 0,0 6,22H18C18.56,22 19.08,21.76 19.46,21.35L20.84,22.73L22.11,21.46L20,19.35M9,16V18H8V16H6V15H13.11L14.11,16H9M20,9A4,4 0 0,0 16,5V4A2,2 0 0,0 14,2H10A2,2 0 0,0 8,4V4.8L20,16.8V9M14,5H10V4H14V5Z"; -var mdiBagPersonalOffOutline = "M20,19.35L2.38,1.73L1.11,3L4.77,6.66C4.27,7.34 4,8.16 4,9V20A2,2 0 0,0 6,22H18C18.56,22 19.08,21.76 19.46,21.35L20.84,22.73L22.11,21.46L20,19.35M6,9C6,8.69 6.08,8.38 6.22,8.11L13.11,15H6V9M18,20H6V16H8V18H9V16H14.11L18,19.89V20M16,7A2,2 0 0,1 18,9V14.8L20,16.8V9A4,4 0 0,0 16,5V4A2,2 0 0,0 14,2H10A2,2 0 0,0 8,4V4.8L10.2,7H16M10,4H14V5H10V4Z"; -var mdiBagPersonalOutline = "M16,5V4A2,2 0 0,0 14,2H10A2,2 0 0,0 8,4V5A4,4 0 0,0 4,9V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V9A4,4 0 0,0 16,5M10,4H14V5H10V4M12,9L14,11L12,13L10,11L12,9M18,20H6V16H8V18H9V16H18V20M18,15H6V9A2,2 0 0,1 8,7H16A2,2 0 0,1 18,9V15Z"; -var mdiBagSuitcase = "M17.03 6C18.11 6 19 6.88 19 8V19C19 20.13 18.11 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19V8C5 6.88 5.89 6 6.97 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6H17.03M13.5 6V3.5H10.5V6H13.5M8 9V18H9.5V9H8M14.5 9V18H16V9H14.5M11.25 9V18H12.75V9H11.25Z"; -var mdiBagSuitcaseOff = "M2 4.77L3.28 3.5L21 21.22L19.73 22.5L18 20.76C17.71 20.93 17.38 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19V7.77L2 4.77M17.03 6C18.11 6 19 6.88 19 8V16.68L16 13.68V9H14.5V12.18L12.75 10.43V9H11.32L8.31 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6H17.03M8 18H9.5V12.27L8 10.77V18M11.25 18H12.75V15.5L11.25 14V18M14.5 18H15.23L14.5 17.27V18M13.5 6V3.5H10.5V6H13.5Z"; -var mdiBagSuitcaseOffOutline = "M2 4.77L3.28 3.5L21 21.22L19.73 22.5L18 20.76C17.71 20.93 17.38 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19L5 7.78L2 4.77M9.5 18H8V10.78L6.97 9.74V19H16.23L15.25 18H14.5V17.26L12.75 15.5V18H11.25V14L9.5 12.28V18M12.75 9V10.43L11.32 9H12.75M14.5 9H16V13.67L14.5 12.17V9M17.03 6C18.11 6 19 6.88 19 8V16.68L17.03 14.7V8H10.33L8.31 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6H17.03M10.5 3.5V6H13.5V3.5H10.5Z"; -var mdiBagSuitcaseOutline = "M9.5 18V9H8V18M12.75 18V9H11.25V18M16 18V9H14.5V18M17.03 6C18.11 6 19 6.88 19 8V19C19 20.13 18.11 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19V8C5 6.88 5.89 6 6.97 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6M10.5 3.5V6H13.5V3.5M17.03 19V8H6.97V19"; -var mdiBaguette = "M5 22C3.68 22 3.15 19.64 3.04 18.7A5.56 5.56 0 0 1 3.36 16A2.5 2.5 0 0 1 5.23 14.38C6.4 14.18 7.23 14.88 8.29 15.12A1.21 1.21 0 0 0 9.85 13.75C9.41 12.03 6.28 12 5 12C5 10.14 7.04 9.9 8.5 10.04A10.8 10.8 0 0 1 11.04 10.6C11.54 10.77 12.12 11.2 12.67 11.16C13.5 11.09 13.67 10.23 13.31 9.6C12.44 8.12 9.97 8 8.5 8C8.5 6 10.23 5.62 11.89 5.92A11.58 11.58 0 0 1 14.38 6.71C14.89 6.93 15.5 7.35 16.06 7.16C17.5 6.72 16 5.18 15.36 4.81A6.6 6.6 0 0 0 13.94 4.23C13.4 4.07 12.74 4.13 13.23 3.5A5.13 5.13 0 0 1 15.96 2.26C17.85 1.82 20.46 1.74 20.92 4.12A5.3 5.3 0 0 1 20.07 7.7A38.96 38.96 0 0 1 13.22 16.33A36.6 36.6 0 0 1 8.62 20.32C7.62 21.04 6.3 22 5 22Z"; -var mdiBalloon = "M13.16,12.74L14,14H12.5C12.35,16.71 12,19.41 11.5,22.08L10.5,21.92C11,19.3 11.34,16.66 11.5,14H10L10.84,12.74C8.64,11.79 7,8.36 7,6A5,5 0 0,1 12,1A5,5 0 0,1 17,6C17,8.36 15.36,11.79 13.16,12.74Z"; -var mdiBallot = "M13,9.5H18V7.5H13V9.5M13,16.5H18V14.5H13V16.5M19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21M6,11H11V6H6V11M7,7H10V10H7V7M6,18H11V13H6V18M7,14H10V17H7V14Z"; -var mdiBallotOutline = "M13,7.5H18V9.5H13V7.5M13,14.5H18V16.5H13V14.5M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M19,19V5H5V19H19M11,6V11H6V6H11M10,10V7H7V10H10M11,13V18H6V13H11M10,17V14H7V17H10Z"; -var mdiBallotRecount = "M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L19,23M10,17H7V14H10V17M10,7V10H7V7H10M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V11.17C20.5,11.06 20,11 19.5,11A6.5,6.5 0 0,0 13,17.5C13,18.79 13.38,20 14,21H5M13,9.5H18V7.5H13V9.5M11,13H6V18H11V13M11,6H6V11H11V6Z"; -var mdiBallotRecountOutline = "M6,18V13H11V18H6M7,14V17H10V14H7M13,7.5H18V9.5H13V7.5M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V11.17C20.5,11.06 20,11 19.5,11H19V5H5V19H13.17C13.34,19.72 13.63,20.39 14,21H5M11,6V11H6V6H11M10,10V7H7V10H10M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L19,23Z"; -var mdiBandage = "M17.73,12L21.71,8.04C22.1,7.65 22.1,7 21.71,6.63L17.37,2.29C17,1.9 16.35,1.9 15.96,2.29L12,6.27L8,2.29C7.8,2.1 7.55,2 7.29,2C7.04,2 6.78,2.1 6.59,2.29L2.25,6.63C1.86,7 1.86,7.65 2.25,8.04L6.23,12L2.25,16C1.86,16.39 1.86,17 2.25,17.41L6.59,21.75C7,22.14 7.61,22.14 8,21.75L12,17.77L15.96,21.75C16.16,21.95 16.41,22.04 16.67,22.04C16.93,22.04 17.18,21.94 17.38,21.75L21.72,17.41C22.11,17 22.11,16.39 21.72,16L17.73,12M12,9A1,1 0 0,1 13,10A1,1 0 0,1 12,11A1,1 0 0,1 11,10A1,1 0 0,1 12,9M7.29,10.96L3.66,7.34L7.29,3.71L10.91,7.33L7.29,10.96M10,13A1,1 0 0,1 9,12A1,1 0 0,1 10,11A1,1 0 0,1 11,12A1,1 0 0,1 10,13M12,15A1,1 0 0,1 11,14A1,1 0 0,1 12,13A1,1 0 0,1 13,14A1,1 0 0,1 12,15M14,11A1,1 0 0,1 15,12A1,1 0 0,1 14,13A1,1 0 0,1 13,12A1,1 0 0,1 14,11M16.66,20.34L13.03,16.72L16.66,13.09L20.28,16.71L16.66,20.34Z"; -var mdiBandcamp = "M22,6L15.5,18H2L8.5,6H22Z"; -var mdiBank = "M11.5,1L2,6V8H21V6M16,10V17H19V10M2,22H21V19H2M10,10V17H13V10M4,10V17H7V10H4Z"; -var mdiBankCheck = "M10.5 17V10H13.5V16.61C13.44 16.73 13.4 16.87 13.35 17H10.5M19 13C19.17 13 19.33 13 19.5 13.03V10H16.5V13.55C17.26 13.2 18.11 13 19 13M7.5 17V10H4.5V17H7.5M21.5 6L12 1L2.5 6V8H21.5V6M2.5 19V22H13.81C13.3 21.12 13 20.09 13 19H2.5M21.34 16L17.75 19.59L16.16 18L15 19.16L17.75 22.16L22.5 17.41L21.34 16Z"; -var mdiBankMinus = "M14,17H22V19H14V17M11.5,1L21,6V8H2V6L11.5,1M16,10H19V12.08L18,12C17.3,12 16.63,12.12 16,12.34V10M2,22V19H12.08C12.27,20.14 12.79,21.17 13.53,22H2M10,10H13V14.68C12.54,15.37 12.22,16.15 12.08,17H10V10M4,10H7V17H4V10Z"; -var mdiBankOff = "M11.2 8L6.89 3.69L12 1L21.5 6V8H11.2M19.5 16.3V10H16.5V13.3L19.5 16.3M21.5 20.85V20.84L19.66 19H19.65L17.65 17H17.66L16.5 15.84V15.85L13.5 12.85V12.84L10.66 10H10.66L8.66 8H8.66L2.39 1.73L1.11 3L3.56 5.45L2.5 6V8H6.11L10.5 12.39V17H13.5V15.39L17.11 19H2.5V22H20.11L20.84 22.73L22.11 21.46L21.5 20.85M4.5 10V17H7.5V10H4.5Z"; -var mdiBankOffOutline = "M17 13.8V10H19V15.8L17 13.8M12 3.26L17.21 6H9.2L11.2 8H21.5V6L12 1L6.89 3.69L8.37 5.17L12 3.26M5 10V17H7V10H5M21.5 20.85V20.84L19.66 19H19.65L17.65 17H17.66L17 16.34V16.35L13 12.35V12.34L11 10.34V10.35L8.66 8H8.66L2.39 1.73L1.11 3L3.56 5.45L2.5 6V8H6.11L11 12.89V17H13V14.89L17.11 19H2.5V21H19.11L20.84 22.73L22.11 21.46L21.5 20.85Z"; -var mdiBankOutline = "M6.5,10H4.5V17H6.5V10M12.5,10H10.5V17H12.5V10M21,19H2V21H21V19M18.5,10H16.5V17H18.5V10M11.5,3.26L16.71,6H6.29L11.5,3.26M11.5,1L2,6V8H21V6L11.5,1Z"; -var mdiBankPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11.5,1L21,6V8H2V6L11.5,1M16,10H19V12.08L18,12C17.3,12 16.63,12.12 16,12.34V10M2,22V19H12.08C12.27,20.14 12.79,21.17 13.53,22H2M10,10H13V14.68C12.54,15.37 12.22,16.15 12.08,17H10V10M4,10H7V17H4V10Z"; -var mdiBankRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M11.5,1L21,6V8H2V6L11.5,1M16,10H19V12.08L18,12C17.3,12 16.63,12.12 16,12.34V10M2,22V19H12.08C12.27,20.14 12.79,21.17 13.53,22H2M10,10H13V14.68C12.54,15.37 12.22,16.15 12.08,17H10V10M4,10H7V17H4V10Z"; -var mdiBankTransfer = "M15,14V11H18V9L22,12.5L18,16V14H15M14,7.7V9H2V7.7L8,4L14,7.7M7,10H9V15H7V10M3,10H5V15H3V10M13,10V12.5L11,14.3V10H13M9.1,16L8.5,16.5L10.2,18H2V16H9.1M17,15V18H14V20L10,16.5L14,13V15H17Z"; -var mdiBankTransferIn = "M2,15V12H5V10L9,13.5L5,17V15H2M22,8.7V10H10V8.7L16,5L22,8.7M10,17H22V19H10V17M15,11H17V16H15V11M11,11H13V16H11V11M19,11H21V16H19V11Z"; -var mdiBankTransferOut = "M15,15V12H18V10L22,13.5L18,17V15H15M14,8.7V10H2V8.7L8,5L14,8.7M2,17H14V19H2V17M7,11H9V16H7V11M3,11H5V16H3V11M11,11H13V16H11V11Z"; -var mdiBarcode = "M2,6H4V18H2V6M5,6H6V18H5V6M7,6H10V18H7V6M11,6H12V18H11V6M14,6H16V18H14V6M17,6H20V18H17V6M21,6H22V18H21V6Z"; -var mdiBarcodeOff = "M20.84 22.73L16 17.89V18H14V15.89L12 13.89V18H11V12.89L10 11.89V18H7V8.89L6 7.89V18H5V6.89L1.11 3L2.39 1.73L7 6.34L10 9.34L11 10.34L12 11.34L14 13.35V13.34L16 15.34V15.35L17 16.35V16.34L18.66 18H18.65L22.11 21.46L20.84 22.73M16 6H14V10.8L16 12.8V6M12 6H11V7.8L12 8.8V6M20 6H17V13.8L20 16.8V6M22 18V6H21V17.8L21.2 18H22M10 6H9.2L10 6.8V6M2 18H4V6H2V18Z"; -var mdiBarcodeScan = "M4,6H6V18H4V6M7,6H8V18H7V6M9,6H12V18H9V6M13,6H14V18H13V6M16,6H18V18H16V6M19,6H20V18H19V6M2,4V8H0V4A2,2 0 0,1 2,2H6V4H2M22,2A2,2 0 0,1 24,4V8H22V4H18V2H22M2,16V20H6V22H2A2,2 0 0,1 0,20V16H2M22,20V16H24V20A2,2 0 0,1 22,22H18V20H22Z"; -var mdiBarley = "M7.33,18.33C6.5,17.17 6.5,15.83 6.5,14.5C8.17,15.5 9.83,16.5 10.67,17.67L11,18.23V15.95C9.5,15.05 8.08,14.13 7.33,13.08C6.5,11.92 6.5,10.58 6.5,9.25C8.17,10.25 9.83,11.25 10.67,12.42L11,13V10.7C9.5,9.8 8.08,8.88 7.33,7.83C6.5,6.67 6.5,5.33 6.5,4C8.17,5 9.83,6 10.67,7.17C10.77,7.31 10.86,7.46 10.94,7.62C10.77,7 10.66,6.42 10.65,5.82C10.64,4.31 11.3,2.76 11.96,1.21C12.65,2.69 13.34,4.18 13.35,5.69C13.36,6.32 13.25,6.96 13.07,7.59C13.15,7.45 13.23,7.31 13.33,7.17C14.17,6 15.83,5 17.5,4C17.5,5.33 17.5,6.67 16.67,7.83C15.92,8.88 14.5,9.8 13,10.7V13L13.33,12.42C14.17,11.25 15.83,10.25 17.5,9.25C17.5,10.58 17.5,11.92 16.67,13.08C15.92,14.13 14.5,15.05 13,15.95V18.23L13.33,17.67C14.17,16.5 15.83,15.5 17.5,14.5C17.5,15.83 17.5,17.17 16.67,18.33C15.92,19.38 14.5,20.3 13,21.2V23H11V21.2C9.5,20.3 8.08,19.38 7.33,18.33Z"; -var mdiBarleyOff = "M11.96,1.21C11.3,2.76 10.64,4.31 10.65,5.82C10.66,6.42 10.77,7 10.94,7.62C10.86,7.46 10.77,7.31 10.67,7.17C9.83,6 8.17,5 6.5,4C6.5,4.8 6.5,5.59 6.68,6.36L13,12.68V10.7C14.5,9.8 15.92,8.88 16.67,7.83C17.5,6.67 17.5,5.33 17.5,4C15.83,5 14.17,6 13.33,7.17C13.23,7.31 13.15,7.45 13.07,7.59C13.25,6.96 13.36,6.32 13.35,5.69C13.34,4.18 12.65,2.69 11.96,1.21M3.28,5.5L2,6.77L6.64,11.41C6.75,12 6.95,12.55 7.33,13.08C8.08,14.13 9.5,15.05 11,15.95V18.23L10.67,17.67C9.83,16.5 8.17,15.5 6.5,14.5C6.5,15.83 6.5,17.17 7.33,18.33C8.08,19.38 9.5,20.3 11,21.2V23H13V21.2C13.74,20.76 14.45,20.31 15.07,19.84L18.73,23.5L20,22.22C14,16.23 9.1,11.32 3.28,5.5M17.5,9.25C15.83,10.25 14.17,11.25 13.33,12.42L13.12,12.79L15,14.66C15.67,14.16 16.27,13.64 16.67,13.08C17.5,11.92 17.5,10.58 17.5,9.25M17.5,14.5C16.93,14.84 16.38,15.18 15.85,15.53L17.29,16.97C17.5,16.17 17.5,15.33 17.5,14.5Z"; -var mdiBarn = "M12,3L3,8.2V21H9L11.9,18L15,21H21V8.2L12,3M7.9,20V14L10.9,17L7.9,20M8.9,13H14.9L11.9,16L8.9,13M15.9,20L12.9,17L15.9,14V20M15,11H8.8V9H15V11Z"; -var mdiBarrel = "M18,19H19V21H5V19H6V13H5V11H6V5H5V3H19V5H18V11H19V13H18V19M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13C15,11 12,7.63 12,7.63C12,7.63 9,11 9,13Z"; -var mdiBaseball = "M12,2C9.5,2 7.25,2.9 5.5,4.4C6,4.81 6.41,5.27 6.8,5.76L7.89,5.13L8.89,6.87L7.89,7.44C8.45,8.53 8.82,9.73 8.95,11H10V12L10,13H8.95C8.82,14.27 8.45,15.47 7.89,16.56L8.89,17.13L7.89,18.87L6.8,18.24C6.41,18.73 6,19.19 5.5,19.6C7.25,21.1 9.5,22 12,22C14.5,22 16.75,21.1 18.5,19.6C18,19.19 17.59,18.73 17.19,18.24L16.11,18.87L15.11,17.13L16.11,16.55C15.55,15.47 15.18,14.27 15.05,13H14V11H15.05C15.18,9.73 15.55,8.53 16.11,7.45L15.11,6.87L16.11,5.13L17.19,5.76C17.59,5.27 18,4.81 18.5,4.4C16.75,2.9 14.5,2 12,2M4.12,5.85C2.79,7.55 2,9.68 2,12C2,14.32 2.79,16.45 4.12,18.15C4.46,17.87 4.76,17.55 5.05,17.22L4.43,16.87L5.43,15.13L6.16,15.56C6.55,14.77 6.82,13.91 6.93,13H6V12L6,11H6.93C6.82,10.09 6.55,9.23 6.16,8.44L5.43,8.87L4.43,7.13L5.05,6.78C4.76,6.45 4.46,6.13 4.12,5.85M19.88,5.85C19.54,6.13 19.24,6.45 18.95,6.78L19.57,7.13L18.57,8.87L17.84,8.44C17.45,9.23 17.18,10.09 17.07,11H18V13H17.07C17.18,13.91 17.45,14.77 17.84,15.56L18.57,15.13L19.57,16.87L18.95,17.22C19.24,17.55 19.54,17.87 19.88,18.15C21.21,16.45 22,14.32 22,12C22,9.68 21.21,7.55 19.88,5.85Z"; -var mdiBaseballBat = "M20,2C19.72,2 19.5,2.11 19.29,2.29L9.79,11.79C9.75,11.83 9.72,11.87 7.23,15.35L4,18.59L3.71,18.29C3.5,18.1 3.26,18 3,18C2.44,18 2,18.44 2,19C2,19.26 2.1,19.5 2.29,19.71L4.29,21.71C4.68,22.11 5.31,22.12 5.71,21.74C6.11,21.35 6.12,20.72 5.71,20.29L5.41,20L8.64,16.77L12.21,14.21L21.71,4.71C22.1,4.32 22.1,3.68 21.71,3.29L20.71,2.29C20.5,2.1 20.26,2 20,2M18.5,13A2.5,2.5 0 0,0 16,15.5A2.5,2.5 0 0,0 18.5,18A2.5,2.5 0 0,0 21,15.5A2.5,2.5 0 0,0 18.5,13Z"; -var mdiBaseballDiamond = "M5.79 12.79L2 9C2 9 6 3 12 3S22 9 22 9L18.21 12.79L12 6.59L5.79 12.79M13.5 18H10.5V20L12 21L13.5 20V18M16.79 14.21L14.2 16.8C13.6 16.31 12.84 16 12 16S10.4 16.31 9.8 16.8L7.21 14.21L12 9.41L16.79 14.21M13 14C13 13.45 12.55 13 12 13S11 13.45 11 14 11.45 15 12 15 13 14.55 13 14Z"; -var mdiBaseballDiamondOutline = "M12 2C5 2 1 9 1 9L9.3 17.3C9.74 16.77 10.32 16.37 11 16.17L7.83 13L12 8.83L16.17 13L13 16.17C13.68 16.37 14.27 16.77 14.7 17.3L23 9C23 9 19 2 12 2M17.59 11.59L12 6L6.41 11.59L3.59 8.76C4.95 7 7.89 4 12 4C16.08 4 19.03 7 20.4 8.77L17.59 11.59M13 13C13 13.55 12.55 14 12 14S11 13.55 11 13 11.45 12 12 12 13 12.45 13 13M13.5 20L12 21L10.5 20V18H13.5V20Z"; -var mdiBash = "M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z"; -var mdiBasket = "M5.5,21C4.72,21 4.04,20.55 3.71,19.9V19.9L1.1,10.44L1,10A1,1 0 0,1 2,9H6.58L11.18,2.43C11.36,2.17 11.66,2 12,2C12.34,2 12.65,2.17 12.83,2.44L17.42,9H22A1,1 0 0,1 23,10L22.96,10.29L20.29,19.9C19.96,20.55 19.28,21 18.5,21H5.5M12,4.74L9,9H15L12,4.74M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13Z"; -var mdiBasketFill = "M3,2H6V5H3V2M6,7H9V10H6V7M8,2H11V5H8V2M17,11L12,6H15V2H19V6H22L17,11M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z"; -var mdiBasketMinus = "M23 18V20H15V18H23M23 10L22.96 10.29L22 13.8C21.11 13.29 20.09 13 19 13C15.69 13 13 15.69 13 19C13 19.7 13.13 20.37 13.35 21H5.5C4.72 21 4.04 20.55 3.71 19.9L1.1 10.44L1 10C1 9.45 1.45 9 2 9H6.58L11.18 2.43C11.36 2.17 11.66 2 12 2S12.65 2.17 12.83 2.44L17.42 9H22C22.55 9 23 9.45 23 10M14 15C14 13.9 13.11 13 12 13S10 13.9 10 15 10.9 17 12 17 14 16.11 14 15M15 9L12 4.74L9 9H15Z"; -var mdiBasketMinusOutline = "M23 18V20H15V18H23M12 13C10.9 13 10 13.9 10 15S10.9 17 12 17 14 16.1 14 15 13.1 13 12 13M13.35 21H5.5C4.58 21 3.81 20.38 3.58 19.54L1.04 10.27C1 10.18 1 10.09 1 10C1 9.45 1.45 9 2 9H6.79L11.17 2.45C11.36 2.16 11.68 2 12 2S12.64 2.16 12.83 2.44L17.21 9H22C22.55 9 23 9.45 23 10L22.97 10.27L22 13.81C21.43 13.5 20.79 13.24 20.12 13.11L20.7 11H3.31L5.5 19H13C13 19.7 13.13 20.37 13.35 21M9.2 9H14.8L12 4.8L9.2 9Z"; -var mdiBasketOff = "M23 10L22.96 10.29L20.9 17.7L12.2 9H15L12 4.74L10.32 7.12L8.89 5.69L11.18 2.43C11.36 2.17 11.66 2 12 2S12.65 2.17 12.83 2.44L17.42 9H22C22.55 9 23 9.45 23 10M22.11 21.46L20.84 22.73L19.03 20.92C18.86 20.97 18.68 21 18.5 21H5.5C4.72 21 4.04 20.55 3.71 19.9L1.1 10.44L1 10C1 9.45 1.45 9 2 9H6.58L6.8 8.69L1.11 3L2.39 1.73L22.11 21.46M13.85 15.74L11.26 13.15C10.5 13.44 10 14.16 10 15C10 16.11 10.9 17 12 17C12.84 17 13.56 16.5 13.85 15.74Z"; -var mdiBasketOffOutline = "M2.39 1.73L1.11 3L6.92 8.81L6.79 9H2C1.45 9 1 9.45 1 10C1 10.09 1 10.18 1.04 10.27L3.58 19.54C3.81 20.38 4.58 21 5.5 21H18.5C18.68 21 18.86 20.96 19.03 20.92L20.84 22.73L22.11 21.46L2.39 1.73M5.5 19L3.31 11H9.11L11.26 13.15C10.5 13.44 10 14.16 10 15C10 16.1 10.9 17 12 17C12.84 17 13.56 16.5 13.85 15.74L17.11 19H5.5M23 10L22.97 10.27L20.93 17.73L19.3 16.1L20.7 11H14.2L12.2 9H14.8L12 4.8L10.4 7.2L8.96 5.76L11.17 2.45C11.36 2.16 11.68 2 12 2S12.64 2.16 12.83 2.44L17.21 9H22C22.55 9 23 9.45 23 10Z"; -var mdiBasketOutline = "M22 9H17.21L12.83 2.44C12.64 2.16 12.32 2 12 2S11.36 2.16 11.17 2.45L6.79 9H2C1.45 9 1 9.45 1 10C1 10.09 1 10.18 1.04 10.27L3.58 19.54C3.81 20.38 4.58 21 5.5 21H18.5C19.42 21 20.19 20.38 20.43 19.54L22.97 10.27L23 10C23 9.45 22.55 9 22 9M12 4.8L14.8 9H9.2L12 4.8M18.5 19L5.5 19L3.31 11H20.7L18.5 19M12 13C10.9 13 10 13.9 10 15S10.9 17 12 17 14 16.1 14 15 13.1 13 12 13Z"; -var mdiBasketPlus = "M20 15V18H23V20H20V23H18V20H15V18H18V15H20M23 10L22.96 10.29L22 13.8C21.11 13.29 20.09 13 19 13C15.69 13 13 15.69 13 19C13 19.7 13.13 20.37 13.35 21H5.5C4.72 21 4.04 20.55 3.71 19.9L1.1 10.44L1 10C1 9.45 1.45 9 2 9H6.58L11.18 2.43C11.36 2.17 11.66 2 12 2S12.65 2.17 12.83 2.44L17.42 9H22C22.55 9 23 9.45 23 10M14 15C14 13.9 13.11 13 12 13S10 13.9 10 15 10.9 17 12 17 14 16.11 14 15M15 9L12 4.74L9 9H15Z"; -var mdiBasketPlusOutline = "M20 15V18H23V20H20V23H18V20H15V18H18V15H20M12 13C10.9 13 10 13.9 10 15S10.9 17 12 17 14 16.1 14 15 13.1 13 12 13M13.35 21H5.5C4.58 21 3.81 20.38 3.58 19.54L1.04 10.27C1 10.18 1 10.09 1 10C1 9.45 1.45 9 2 9H6.79L11.17 2.45C11.36 2.16 11.68 2 12 2S12.64 2.16 12.83 2.44L17.21 9H22C22.55 9 23 9.45 23 10L22.97 10.27L22 13.81C21.43 13.5 20.79 13.24 20.12 13.11L20.7 11H3.31L5.5 19H13C13 19.7 13.13 20.37 13.35 21M9.2 9H14.8L12 4.8L9.2 9Z"; -var mdiBasketRemove = "M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.46L22.54 16.88M23 10L22.96 10.29L22 13.8C21.11 13.29 20.09 13 19 13C15.69 13 13 15.69 13 19C13 19.7 13.13 20.37 13.35 21H5.5C4.72 21 4.04 20.55 3.71 19.9L1.1 10.44L1 10C1 9.45 1.45 9 2 9H6.58L11.18 2.43C11.36 2.17 11.66 2 12 2S12.65 2.17 12.83 2.44L17.42 9H22C22.55 9 23 9.45 23 10M14 15C14 13.9 13.11 13 12 13S10 13.9 10 15 10.9 17 12 17 14 16.11 14 15M15 9L12 4.74L9 9H15Z"; -var mdiBasketRemoveOutline = "M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.46L22.54 16.88M12 13C10.9 13 10 13.9 10 15S10.9 17 12 17 14 16.1 14 15 13.1 13 12 13M13.35 21H5.5C4.58 21 3.81 20.38 3.58 19.54L1.04 10.27C1 10.18 1 10.09 1 10C1 9.45 1.45 9 2 9H6.79L11.17 2.45C11.36 2.16 11.68 2 12 2S12.64 2.16 12.83 2.44L17.21 9H22C22.55 9 23 9.45 23 10L22.97 10.27L22 13.81C21.43 13.5 20.79 13.24 20.12 13.11L20.7 11H3.31L5.5 19H13C13 19.7 13.13 20.37 13.35 21M9.2 9H14.8L12 4.8L9.2 9Z"; -var mdiBasketUnfill = "M3,10H6V7H3V10M5,5H8V2H5V5M8,10H11V7H8V10M17,1L12,6H15V10H19V6H22L17,1M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z"; -var mdiBasketball = "M2.34,14.63C2.94,14.41 3.56,14.3 4.22,14.3C5.56,14.3 6.73,14.72 7.73,15.56L4.59,18.7C3.53,17.5 2.78,16.13 2.34,14.63M15.56,9.8C17.53,11.27 19.66,11.63 21.94,10.88C21.97,11.09 22,11.47 22,12C22,13.03 21.75,14.18 21.28,15.45C20.81,16.71 20.23,17.73 19.55,18.5L13.22,12.19L15.56,9.8M8.77,16.64C9.83,18.17 10.05,19.84 9.42,21.66C8,21.25 6.73,20.61 5.67,19.73L8.77,16.64M12.19,13.22L18.5,19.55C16.33,21.45 13.78,22.25 10.88,21.94C11.09,21.28 11.2,20.56 11.2,19.78C11.2,19.16 11.06,18.43 10.78,17.6C10.5,16.77 10.17,16.09 9.8,15.56L12.19,13.22M8.81,14.5C7.88,13.67 6.8,13.15 5.58,12.91C4.36,12.68 3.19,12.75 2.06,13.13C2.03,12.91 2,12.53 2,12C2,10.97 2.25,9.82 2.72,8.55C3.19,7.29 3.77,6.27 4.45,5.5L11.11,12.19L8.81,14.5M15.56,7.73C14.22,6.08 13.91,4.28 14.63,2.34C15.25,2.5 15.96,2.8 16.76,3.26C17.55,3.71 18.2,4.16 18.7,4.59L15.56,7.73M21.66,9.38C21.06,9.59 20.44,9.7 19.78,9.7C18.69,9.7 17.64,9.38 16.64,8.72L19.73,5.67C20.61,6.77 21.25,8 21.66,9.38M12.19,11.11L5.5,4.45C7.67,2.55 10.22,1.75 13.13,2.06C12.91,2.72 12.8,3.44 12.8,4.22C12.8,4.94 12.96,5.75 13.29,6.66C13.62,7.56 14,8.28 14.5,8.81L12.19,11.11Z"; -var mdiBasketballHoop = "M21,2H3A2,2 0 0,0 1,4V16A2,2 0 0,0 3,18H5V14H19V18H21A2,2 0 0,0 23,16V4A2,2 0 0,0 21,2M17,12H15V9H9V12H7V9A2,2 0 0,1 9,7H15A2,2 0 0,1 17,9V12M7,16V19.5L8,23L10,21L12,23L14,21L16,23L17,19.5V16H7Z"; -var mdiBasketballHoopOutline = "M21,2H3A2,2 0 0,0 1,4V16A2,2 0 0,0 3,18H6.57L8,23L10,21L12,23L14,21L16,23L17.43,18H21A2,2 0 0,0 23,16V4A2,2 0 0,0 21,2M21,16H18V14H17V9A2,2 0 0,0 15,7H9A2,2 0 0,0 7,9V14H6V16H3V4H21V16M9,14V9H15V14H9Z"; -var mdiBat = "M0.75,8C0.75,8 5,7 8,9C8,9 8.5,12.75 10.5,12.75V11C10.5,11 11,12 12,12C13,12 13.5,11 13.5,11V12.75C15.5,12.75 16,9 16,9C19,7 23.25,8 23.25,8C21.25,9 21,12.5 21,12.5C17,12.5 17,15.75 17,15.75C12,14.75 12,18.5 12,18.5C12,18.5 12,14.75 7,15.75C7,15.75 7,12.5 3,12.5C3,12.5 2.75,9 0.75,8Z"; -var mdiBattery = "M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; -var mdiBattery10 = "M16,18H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; -var mdiBattery10Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V18H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; -var mdiBattery20 = "M16,17H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; -var mdiBattery20Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V17H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; -var mdiBattery30 = "M16,15H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; -var mdiBattery30Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V15H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; -var mdiBattery40 = "M16,14H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; -var mdiBattery40Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V14H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; -var mdiBattery50 = "M16,13H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; -var mdiBattery50Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V13H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; -var mdiBattery60 = "M16,12H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; -var mdiBattery60Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V12H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; -var mdiBattery70 = "M16,10H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; -var mdiBattery70Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V10H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; -var mdiBattery80 = "M16,9H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; -var mdiBattery80Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V9H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; -var mdiBattery90 = "M16,8H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; -var mdiBattery90Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V8H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; -var mdiBatteryAlert = "M13 14H11V8H13M13 18H11V16H13M16.7 4H15V2H9V4H7.3C6.6 4 6 4.6 6 5.3V20.6C6 21.4 6.6 22 7.3 22H16.6C17.3 22 17.9 21.4 17.9 20.7V5.3C18 4.6 17.4 4 16.7 4Z"; -var mdiBatteryAlertBluetooth = "M5 2V4H3.3C2.6 4 2 4.6 2 5.3V20.6C2 21.4 2.6 22 3.3 22H12.6C13.3 22 13.9 21.4 13.9 20.7V5.3C14 4.6 13.4 4 12.7 4H11V2H5M19 8V11.8L16.7 9.5L16 10.2L18.8 13L16 15.8L16.7 16.5L19 14.2V18H19.5L22.4 15.1L20.2 13L22.3 10.9L19.5 8H19M7 8H9V14H7M20 9.9L20.9 10.8L20 11.8V9.9M20 14.2L20.9 15.1L20 16.1V14.2M7 16H9V18H7V16Z"; -var mdiBatteryAlertVariant = "M14.67 4H13V2H7V4H5.33C4.6 4 4 4.6 4 5.33V20.67C4 21.4 4.6 22 5.33 22H14.67C15.4 22 16 21.4 16 20.67V5.33C16 4.6 15.4 4 14.67 4M21 13H19V7H21V13M21 17H19V15H21V17Z"; -var mdiBatteryAlertVariantOutline = "M14 20H6V6H14M14.67 4H13V2H7V4H5.33C4.6 4 4 4.6 4 5.33V20.67C4 21.4 4.6 22 5.33 22H14.67C15.4 22 16 21.4 16 20.67V5.33C16 4.6 15.4 4 14.67 4M21 7H19V13H21V8M21 15H19V17H21V15Z"; -var mdiBatteryBluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z"; -var mdiBatteryBluetoothVariant = "M9,2V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4H15V2H9M11.83,8H12.33L15.18,10.85L13.04,13L15.17,15.14L12.33,18H11.83V14.21L9.54,16.5L8.83,15.79L11.62,13L8.83,10.21L9.54,9.5L11.83,11.79V8M12.83,9.91V11.79L13.77,10.85L12.83,9.91M12.83,14.21V16.08L13.77,15.14L12.83,14.21Z"; -var mdiBatteryCharging = "M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.66C17.4,22 18,21.4 18,20.67V5.33C18,4.6 17.4,4 16.67,4M11,20V14.5H9L13,7V12.5H15"; -var mdiBatteryCharging10 = "M23.05,11H20.05V4L15.05,14H18.05V22M12,18H4L4.05,6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z"; -var mdiBatteryCharging100 = "M23,11H20V4L15,14H18V22M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z"; -var mdiBatteryCharging20 = "M23.05,11H20.05V4L15.05,14H18.05V22M12.05,17H4.05V6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z"; -var mdiBatteryCharging30 = "M12,15H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z"; -var mdiBatteryCharging40 = "M13 4H11V2H5V4H3C2.4 4 2 4.4 2 5V21C2 21.6 2.4 22 3 22H13C13.6 22 14 21.6 14 21V5C14 4.4 13.6 4 13 4M12 14.5H4V6H12V14.5M23 11H20V4L15 14H18V22"; -var mdiBatteryCharging50 = "M23,11H20V4L15,14H18V22M12,13H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z"; -var mdiBatteryCharging60 = "M12,11H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z"; -var mdiBatteryCharging70 = "M12,10H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z"; -var mdiBatteryCharging80 = "M23,11H20V4L15,14H18V22M12,9H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z"; -var mdiBatteryCharging90 = "M23,11H20V4L15,14H18V22M12,8H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z"; -var mdiBatteryChargingHigh = "M12 20H4V6H12M12.67 4H11V2H5V4H3.33C2.6 4 2 4.6 2 5.33V20.67C2 21.4 2.6 22 3.33 22H12.67C13.41 22 14 21.41 14 20.67V5.33C14 4.6 13.4 4 12.67 4M11 16H5V19H11V16M11 7H5V10H11V7M11 11.5H5V14.5H11V11.5M23 10H20V3L15 13H18V21"; -var mdiBatteryChargingLow = "M12 20H4V6H12M12.67 4H11V2H5V4H3.33C2.6 4 2 4.6 2 5.33V20.67C2 21.4 2.6 22 3.33 22H12.67C13.41 22 14 21.41 14 20.67V5.33C14 4.6 13.4 4 12.67 4M11 16H5V19H11V16M23 10H20V3L15 13H18V21"; -var mdiBatteryChargingMedium = "M12 20H4V6H12M12.67 4H11V2H5V4H3.33C2.6 4 2 4.6 2 5.33V20.67C2 21.4 2.6 22 3.33 22H12.67C13.41 22 14 21.41 14 20.67V5.33C14 4.6 13.4 4 12.67 4M11 16H5V19H11V16M11 11.5H5V14.5H11V11.5M23 10H20V3L15 13H18V21"; -var mdiBatteryChargingOutline = "M23.05,11H20.05V4L15.05,14H18.05V22M12,20H4L4.05,6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z"; -var mdiBatteryChargingWireless = "M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76Z"; -var mdiBatteryChargingWireless10 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,18.5H4V6H12V18.5Z"; -var mdiBatteryChargingWireless20 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,17H4V6H12V17Z"; -var mdiBatteryChargingWireless30 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,16H4V6H12V16Z"; -var mdiBatteryChargingWireless40 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,14.5H4V6H12V14.5Z"; -var mdiBatteryChargingWireless50 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,13H4V6H12V13Z"; -var mdiBatteryChargingWireless60 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,11.6H4V6H12V11.6Z"; -var mdiBatteryChargingWireless70 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,10H4V6H12V10Z"; -var mdiBatteryChargingWireless80 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,9H4V6H12V9Z"; -var mdiBatteryChargingWireless90 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,7.5H4V6H12V7.5Z"; -var mdiBatteryChargingWirelessAlert = "M13 4H11V2H5V4H3C2.4 4 2 4.4 2 5V21C2 21.6 2.4 22 3 22H13C13.6 22 14 21.6 14 21V5C14 4.4 13.6 4 13 4M9 18H7V16H9V18M9 14H7V8H9V14M20.1 4.9L18.7 6.3C21.8 9.4 21.8 14.5 18.7 17.6L20.1 19C24 15.2 24 8.8 20.1 4.9M17.2 7.8L15.8 9.2C17.4 10.8 17.4 13.3 15.8 14.9L17.2 16.3C19.6 13.9 19.6 10.1 17.2 7.8Z"; -var mdiBatteryChargingWirelessOutline = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,20H4V6H12V20Z"; -var mdiBatteryHeart = "M12.67 4H11V2H5V4H3.33A1.34 1.34 0 0 0 2 5.33V20.67A1.34 1.34 0 0 0 3.33 22H12.67A1.34 1.34 0 0 0 14 20.67V5.33A1.34 1.34 0 0 0 12.67 4M19 16.17L18.42 15.64C16.36 13.77 15 12.54 15 11A2.18 2.18 0 0 1 17.2 8.8A2.4 2.4 0 0 1 19 9.63A2.4 2.4 0 0 1 20.8 8.8A2.18 2.18 0 0 1 23 11C23 12.5 21.64 13.74 19.58 15.61Z"; -var mdiBatteryHeartOutline = "M19 16.2L18.4 15.7C16.4 13.8 15 12.5 15 11C15 9.8 16 8.8 17.2 8.8C17.9 8.8 18.5 9.1 19 9.6C19.5 9.1 20.1 8.8 20.8 8.8C22 8.8 23 9.8 23 11C23 12.5 21.6 13.7 19.6 15.6L19 16.2M12.7 4H11V2H5V4H3.3C2.6 4 2 4.6 2 5.3V20.6C2 21.4 2.6 22 3.3 22H12.6C13.3 22 13.9 21.4 13.9 20.7V5.3C14 4.6 13.4 4 12.7 4M12 20H4V6H12V20Z"; -var mdiBatteryHeartVariant = "M16.67 4H15V2H9V4H7.33A1.34 1.34 0 0 0 6 5.33V20.67A1.34 1.34 0 0 0 7.33 22H16.67A1.34 1.34 0 0 0 18 20.67V5.33A1.34 1.34 0 0 0 16.67 4M12.58 15.64L12 16.17L11.42 15.64C9.36 13.77 8 12.54 8 11A2.18 2.18 0 0 1 10.2 8.8A2.4 2.4 0 0 1 12 9.63A2.4 2.4 0 0 1 13.8 8.8A2.18 2.18 0 0 1 16 11C16 12.54 14.64 13.77 12.58 15.64Z"; -var mdiBatteryHigh = "M16 20H8V6H16M16.67 4H15V2H9V4H7.33C6.6 4 6 4.6 6 5.33V20.67C6 21.4 6.6 22 7.33 22H16.67C17.41 22 18 21.41 18 20.67V5.33C18 4.6 17.4 4 16.67 4M15 16H9V19H15V16M15 7H9V10H15V7M15 11.5H9V14.5H15V11.5Z"; -var mdiBatteryLow = "M16 20H8V6H16M16.67 4H15V2H9V4H7.33C6.6 4 6 4.6 6 5.33V20.67C6 21.4 6.6 22 7.33 22H16.67C17.41 22 18 21.41 18 20.67V5.33C18 4.6 17.4 4 16.67 4M15 16H9V19H15V16"; -var mdiBatteryMedium = "M16 20H8V6H16M16.67 4H15V2H9V4H7.33C6.6 4 6 4.6 6 5.33V20.67C6 21.4 6.6 22 7.33 22H16.67C17.41 22 18 21.41 18 20.67V5.33C18 4.6 17.4 4 16.67 4M15 16H9V19H15V16M15 11.5H9V14.5H15V11.5Z"; -var mdiBatteryMinus = "M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M8,12V14H16V12"; -var mdiBatteryNegative = "M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M15,12H23V14H15V12M3,13H11V6H3V13Z"; -var mdiBatteryOff = "M18 14.8L7.21 4H9V2H15V4H16.67A1.34 1.34 0 0 1 18 5.33M18 17.35L3.38 2.73L2.11 4L6 7.89V20.67A1.34 1.34 0 0 0 7.33 22H16.67A1.34 1.34 0 0 0 18 20.67V19.89L20.84 22.73L22.11 21.46Z"; -var mdiBatteryOffOutline = "M18 17.35L3.38 2.73L2.11 4L6 7.89V20.67A1.34 1.34 0 0 0 7.33 22H16.67A1.34 1.34 0 0 0 18 20.67V19.89L20.84 22.73L22.11 21.46M16 20H8V9.89L16 17.89M16 6V12.8L18 14.8V5.33A1.34 1.34 0 0 0 16.67 4H15V2H9V4H7.21L9.21 6Z"; -var mdiBatteryOutline = "M16,20H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z"; -var mdiBatteryPlus = "M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M16,14V12H13V9H11V12H8V14H11V17H13V14H16Z"; -var mdiBatteryPositive = "M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M23,14H20V17H18V14H15V12H18V9H20V12H23V14M3,13H11V6H3V13Z"; -var mdiBatteryUnknown = "M15.07,12.25L14.17,13.17C13.63,13.71 13.25,14.18 13.09,15H11.05C11.16,14.1 11.56,13.28 12.17,12.67L13.41,11.41C13.78,11.05 14,10.55 14,10C14,8.89 13.1,8 12,8A2,2 0 0,0 10,10H8A4,4 0 0,1 12,6A4,4 0 0,1 16,10C16,10.88 15.64,11.68 15.07,12.25M13,19H11V17H13M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.67C17.4,22 18,21.4 18,20.66V5.33C18,4.59 17.4,4 16.67,4Z"; -var mdiBatteryUnknownBluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.66C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.66V5.33C14,4.59 13.4,4 12.67,4H11V2H5M8,6A4,4 0 0,1 12,10C12,10.88 11.64,11.68 11.07,12.25L10.17,13.17C9.63,13.71 9.25,14.18 9.09,15H7.05C7.16,14.1 7.56,13.28 8.17,12.67L9.41,11.41C9.78,11.05 10,10.55 10,10C10,8.89 9.1,8 8,8A2,2 0 0,0 6,10H4A4,4 0 0,1 8,6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21M7,17H9V19H7V17Z"; -var mdiBattlenet = "M19.92,10.76C19.92,10.76 22.5,12.24 22.5,13.89C22.5,15.5 19.5,16.06 16.18,15.9C16.18,15.9 14.77,17.87 13.42,18.7C14.88,21.44 16,22.5 15.97,22.5C15.97,22.5 15.23,22.69 13,19.04C11.66,19.89 10.17,20.23 9.56,19.7C8.94,19.17 9.42,18.28 9.68,17.85C9.41,18 8,18.83 6.75,18.83C5.26,18.83 5.05,17.72 5.05,17.15C5.05,15 7.12,12 7.12,12C7.12,12 6.16,9.88 6.05,8.22C4.17,8.06 2,8.39 1.53,8.54C1.4,8.54 1.84,8.22 2,8.18C2.15,8.13 3.91,7.67 6,7.67C6,5.93 6.35,4.33 7.41,4.33C8.13,4.33 8.71,5.45 8.71,5.45C8.71,5.45 8.7,1.5 10.74,1.5C12.8,1.5 15,6.11 15,6.11C15,6.11 17.22,6.32 18.85,7.09C19.5,5.73 20.09,5.11 20.81,3C21,3.7 20.2,5.5 19.35,7.3V7.3H19.35C19.35,7.3 21.65,8.5 21.65,9.83C21.65,10.84 19.92,10.76 19.92,10.76M10.68,18.58C11.36,18.69 12.41,18.1 12.4,18.1L11.58,16.57L10.4,17.4C10.39,17.41 9.64,18.38 10.68,18.58M20.15,9.76C20.15,9.1 18.95,8.35 18.81,8.27L17.89,9.75L19.17,10.37C19.59,10.34 20.15,10.35 20.15,9.76M8,5.63C7.7,5.63 7.09,6.07 7.09,7.64L8.83,7.7L8.72,6.3C8.6,6 8.3,5.63 8,5.63M10.18,15.78C8.92,15.13 8.16,14.06 7.54,12.9C7.54,12.9 5.96,15.55 6.97,16.22C8,16.89 9.64,16.16 10.18,15.78M12.97,17.76C14.11,16.89 17.19,14.73 17.45,11.08C14.57,9.44 10.62,8.71 10.62,8.71C10.62,8.71 10.61,8.21 10.7,7.86C11.64,7.97 14.59,8.47 17.03,9.43C16.35,8.28 15.84,7.85 15.37,7.5C16.53,7.76 17.36,9.26 17.36,9.26L18.28,7.96C18.28,7.96 13.91,5.61 10.19,7.42C10.11,10.3 11.59,14.56 11.59,14.56L10.82,14.89C10.3,13.84 9.63,12.09 9,8.67C8.7,9.08 8.17,9.55 8.16,11.09C7.7,9.8 8.66,8.43 8.67,8.42L7.07,8.26C7.17,9.92 8.05,14.2 10.68,15.53C13,14.21 15.5,11.54 16.13,10.77L16.82,11.28L12.35,15.97C13.59,16 14.32,15.72 14.82,15.5C14.1,16.25 12.86,16.32 12.27,16.32C12.28,16.34 12.57,17.07 12.97,17.76M14.03,6.05C14,5.97 12.66,3.69 11.47,3.86C10.69,4.11 10.24,5.43 10.23,6.87C10.76,6.56 12,6 14.03,6.05M16.71,15.07C16.71,15.07 20,15 19.9,13.76C19.9,12.56 17.92,11.33 17.92,11.35C17.93,13.47 16.71,15.07 16.71,15.07Z"; -var mdiBeach = "M15,18.54C17.13,18.21 19.5,18 22,18V22H5C5,21.35 8.2,19.86 13,18.9V12.4C12.16,12.65 11.45,13.21 11,13.95C10.39,12.93 9.27,12.25 8,12.25C6.73,12.25 5.61,12.93 5,13.95C5.03,10.37 8.5,7.43 13,7.04V7A1,1 0 0,1 14,6A1,1 0 0,1 15,7V7.04C19.5,7.43 22.96,10.37 23,13.95C22.39,12.93 21.27,12.25 20,12.25C18.73,12.25 17.61,12.93 17,13.95C16.55,13.21 15.84,12.65 15,12.39V18.54M7,2A5,5 0 0,1 2,7V2H7Z"; -var mdiBeaker = "M3,3V5A2,2 0 0,1 5,7V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V7A2,2 0 0,1 21,5V3H3M7,9H10V10H7V9M7,11H10V12H7V11M10,16H7V15H10V16M12,14H7V13H12V14M12,8H7V7H12V8Z"; -var mdiBeakerAlert = "M3 3H21V5C19.9 5 19 5.9 19 7V19C19 20.1 18.1 21 17 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12M21 13V7H23V13H21M21 17V15H23V17H21Z"; -var mdiBeakerAlertOutline = "M3 3H21V5C19.9 5 19 5.9 19 7V19C19 20.11 18.11 21 17 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3M7 5V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H17V5H7M21 13V7H23V13H21M21 17V15H23V17H21Z"; -var mdiBeakerCheck = "M17.75 21.16L15 18.16L16.16 17L17.75 18.59L21.34 15L22.5 16.41L17.75 21.16M3 3H21V5C19.9 5 19 5.9 19 7V12C15.69 12 13 14.69 13 18C13 19.09 13.29 20.12 13.8 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12Z"; -var mdiBeakerCheckOutline = "M17.75 21.16L15 18.16L16.16 17L17.75 18.59L21.34 15L22.5 16.41L17.75 21.16M3 3H21V5C19.9 5 19 5.9 19 7V12C18.3 12 17.63 12.12 17 12.34V5H7V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H13.08C13.2 19.72 13.45 20.39 13.8 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3Z"; -var mdiBeakerMinus = "M23 17V19H15V17H23M3 3H21V5C19.9 5 19 5.9 19 7V12C15.69 12 13 14.69 13 18C13 19.09 13.29 20.12 13.8 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12Z"; -var mdiBeakerMinusOutline = "M23 17V19H15V17M3 3H21V5C19.9 5 19 5.9 19 7V12C18.3 12 17.63 12.12 17 12.34V5H7V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H13.08C13.2 19.72 13.45 20.39 13.8 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3Z"; -var mdiBeakerOutline = "M3,3H21V5A2,2 0 0,0 19,7V19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V7A2,2 0 0,0 3,5V3M7,5V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H17V5H7Z"; -var mdiBeakerPlus = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M3 3H21V5C19.9 5 19 5.9 19 7V12C15.69 12 13 14.69 13 18C13 19.09 13.29 20.12 13.8 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12Z"; -var mdiBeakerPlusOutline = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M3 3H21V5C19.9 5 19 5.9 19 7V12C18.3 12 17.63 12.12 17 12.34V5H7V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H13.08C13.2 19.72 13.45 20.39 13.8 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3Z"; -var mdiBeakerQuestion = "M0 3H18V5C16.9 5 16 5.9 16 7V19C16 20.1 15.1 21 14 21H4C2.9 21 2 20.1 2 19V7C2 5.9 1.1 5 0 5V3M4 9V10H7V9H4M4 11V12H7V11H4M7 16V15H4V16H7M9 14V13H4V14H9M9 8V7H4V8H9M21.5 15.5V17H20V15.5H21.5M19.5 10.5H18V10C18 8.34 19.34 7 21 7C22.66 7 24 8.34 24 10C24 10.97 23.5 11.88 22.71 12.41L22.41 12.6C21.84 13 21.5 13.62 21.5 14.3V14.5H20V14.3C20 13.11 20.6 12 21.59 11.35L21.88 11.16C22.27 10.9 22.5 10.47 22.5 10C22.5 9.18 21.83 8.5 21 8.5C20.17 8.5 19.5 9.17 19.5 10V10.5Z"; -var mdiBeakerQuestionOutline = "M0 3H18V5C16.9 5 16 5.9 16 7V19C16 20.11 15.11 21 14 21H4C2.9 21 2 20.11 2 19V7C2 5.9 1.11 5 0 5V3M4 5V7H9V8H4V9H7V10H4V11H7V12H4V13H9V14H4V15H7V16H4V19H14V5H4M21.5 15.5V17H20V15.5H21.5M19.5 10.5H18V10C18 8.34 19.34 7 21 7C22.66 7 24 8.34 24 10C24 10.97 23.5 11.88 22.71 12.41L22.41 12.6C21.84 13 21.5 13.62 21.5 14.3V14.5H20V14.3C20 13.11 20.6 12 21.59 11.35L21.88 11.16C22.27 10.9 22.5 10.47 22.5 10C22.5 9.18 21.83 8.5 21 8.5C20.17 8.5 19.5 9.17 19.5 10V10.5Z"; -var mdiBeakerRemove = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M3 3H21V5C19.9 5 19 5.9 19 7V12C15.69 12 13 14.69 13 18C13 19.09 13.29 20.12 13.8 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12Z"; -var mdiBeakerRemoveOutline = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M3 3H21V5C19.9 5 19 5.9 19 7V12C18.3 12 17.63 12.12 17 12.34V5H7V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H13.08C13.2 19.72 13.45 20.39 13.8 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3Z"; -var mdiBed = "M19,7H11V14H3V5H1V20H3V17H21V20H23V11A4,4 0 0,0 19,7M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13Z"; -var mdiBedDouble = "M18 10V7A2 2 0 0 0 16 5H8A2 2 0 0 0 6 7V10A2 2 0 0 0 4 12V17H5.33L6 19H7L7.67 17H16.33L17 19H18L18.67 17H20V12A2 2 0 0 0 18 10M11 10H8V7H11M16 10H13V7H16Z"; -var mdiBedDoubleOutline = "M8 5C7.5 5 7 5.21 6.61 5.6S6 6.45 6 7V10C5.47 10 5 10.19 4.59 10.59S4 11.47 4 12V17H5.34L6 19H7L7.69 17H16.36L17 19H18L18.66 17H20V12C20 11.47 19.81 11 19.41 10.59S18.53 10 18 10V7C18 6.45 17.8 6 17.39 5.6S16.5 5 16 5M8 7H11V10H8M13 7H16V10H13M6 12H18V15H6Z"; -var mdiBedEmpty = "M19,7H5V14H3V5H1V20H3V17H21V20H23V11A4,4 0 0,0 19,7"; -var mdiBedKing = "M6 5C5.47 5 5 5.21 4.59 5.6S4 6.45 4 7V10C3.45 10 3 10.19 2.6 10.59S2 11.47 2 12V17H3.33L4 19H5L5.67 17H18.33L19 19H20L20.67 17H22V12C22 11.47 21.79 11 21.4 10.59C21 10.19 20.55 10 20 10V7C20 6.45 19.81 6 19.41 5.6S18.53 5 18 5M6 7H11V10H6M13 7H18V10H13Z"; -var mdiBedKingOutline = "M20 10V7A2 2 0 0 0 18 5H6A2 2 0 0 0 4 7V10A2 2 0 0 0 2 12V17H3.33L4 19H5L5.67 17H18.33L19 19H20L20.67 17H22V12A2 2 0 0 0 20 10M13 7H18V10H13M6 7H11V10H6M20 15H4V12H20Z"; -var mdiBedOutline = "M7 14C8.66 14 10 12.66 10 11C10 9.34 8.66 8 7 8C5.34 8 4 9.34 4 11C4 12.66 5.34 14 7 14M7 10C7.55 10 8 10.45 8 11C8 11.55 7.55 12 7 12C6.45 12 6 11.55 6 11C6 10.45 6.45 10 7 10M19 7H11V15H3V5H1V20H3V17H21V20H23V11C23 8.79 21.21 7 19 7M21 15H13V9H19C20.1 9 21 9.9 21 11Z"; -var mdiBedQueen = "M19 10V7A2 2 0 0 0 17 5H7A2 2 0 0 0 5 7V10A2 2 0 0 0 3 12V17H4.33L5 19H6L6.67 17H17.33L18 19H19L19.67 17H21V12A2 2 0 0 0 19 10M17 10H7V7H17Z"; -var mdiBedQueenOutline = "M19 10V7A2 2 0 0 0 17 5H7A2 2 0 0 0 5 7V10A2 2 0 0 0 3 12V17H4.33L5 19H6L6.67 17H17.33L18 19H19L19.67 17H21V12A2 2 0 0 0 19 10M7 7H17V10H7M19 15H5V12H19Z"; -var mdiBedSingle = "M17 10V7C17 5.9 16.11 5 15 5H9C7.9 5 7 5.9 7 7V10C5.9 10 4.89 10.9 5 12V17H6.33L7 19H8L8.67 17H15.33L16 19H17L17.67 17H19V12C19 10.9 18.11 10 17 10M15 10H9V7H15Z"; -var mdiBedSingleOutline = "M17 10V7C17 5.9 16.11 5 15 5H9C7.9 5 7 5.9 7 7V10C5.9 10 5 10.9 5 12V17H6.33L7 19H8L8.67 17H15.33L16 19H17L17.67 17H19V12C19 10.9 18.11 10 17 10M9 7H15V10H9M17 15H7V12H17Z"; -var mdiBee = "M17.4 9C17 7.8 16.2 7 15 6.5V5H14V6.4H13.6C12.5 6.4 11.6 6.8 10.8 7.6L10.4 8L9 7.5C8.7 7.4 8.4 7.3 8 7.3C7.4 7.3 6.8 7.5 6.3 7.9C5.7 8.3 5.4 8.8 5.2 9.3C5 10 5 10.6 5.2 11.3C5.5 12 5.8 12.5 6.3 12.8C5.9 14.3 6.2 15.6 7.3 16.7C8.1 17.5 9 17.9 10.1 17.9C10.6 17.9 10.9 17.9 11.2 17.8C11.8 18.6 12.6 19.1 13.6 19.1C13.9 19.1 14.3 19.1 14.6 19C15.2 18.8 15.6 18.4 16 17.9C16.4 17.3 16.6 16.8 16.6 16.2C16.6 15.8 16.6 15.5 16.5 15.2L16 13.6L16.6 13.2C17.4 12.4 17.8 11.3 17.7 10.1H19V9H17.4M7.7 11.3C7.1 11 6.9 10.6 7.1 10C7.3 9.4 7.7 9.2 8.3 9.4L11.5 10.6C9.9 11.4 8.7 11.6 7.7 11.3M14 16.9C13.4 17.1 13 16.9 12.7 16.3C12.4 15.3 12.6 14.1 13.4 12.5L14.6 15.6C14.8 16.3 14.6 16.7 14 16.9M15.2 11.6L14.6 10V9.9L14.3 9.6H14.2L12.6 9C13 8.7 13.4 8.5 13.9 8.5C14.4 8.5 14.9 8.7 15.3 9.1C15.7 9.5 15.9 9.9 15.9 10.4C15.7 10.7 15.5 11.2 15.2 11.6Z"; -var mdiBeeFlower = "M11.6 13V12.9L11.3 12.6H11.2L9.6 12C10 11.7 10.4 11.5 10.9 11.5C11.4 11.5 11.9 11.7 12.3 12.1C12.7 12.5 12.9 12.9 12.9 13.4C12.9 13.9 12.8 14.3 12.4 14.7L11.6 13M9.7 19.3C9.4 18.3 9.6 17.1 10.4 15.5L11.6 18.6C11.8 19.2 11.6 19.6 11 19.9C10.4 20.2 10 20 9.7 19.3M4.1 13.1C4.3 12.5 4.7 12.3 5.3 12.5L8.5 13.7C6.9 14.5 5.7 14.7 4.7 14.4C4.1 14.1 3.9 13.7 4.1 13.1M12 8.1H11V9.5H10.6C9.5 9.5 8.6 9.9 7.8 10.7L7.4 11.3L6 10.5C5.7 10.4 5.4 10.4 5 10.4C4.4 10.4 3.8 10.6 3.3 11S2.4 11.8 2.2 12.4C2 13.1 2 13.7 2.2 14.4C2.5 15.1 2.8 15.6 3.3 15.9C2.9 17.4 3.2 18.7 4.3 19.8C5.1 20.6 6 21 7.1 21C7.6 21 7.9 21 8.2 20.9C8.8 21.7 9.6 22.2 10.6 22.2C10.9 22.2 11.3 22.2 11.6 22.1C12.2 21.9 12.6 21.5 13 21C13.4 20.4 13.6 19.9 13.6 19.3C13.6 18.9 13.6 18.6 13.5 18.3L12.9 16.9L13.5 16.5C14.3 15.7 14.7 14.6 14.6 13.4H16V12.4H14.4C14 11.2 13.2 10.4 12 10V8.1M17.3 6.8C17.1 6.6 17 6.3 17 6.1C17 5.8 17.1 5.6 17.3 5.4C17.5 5.2 17.7 5.1 18 5.1S18.5 5.2 18.7 5.4C18.9 5.5 19 5.8 19 6.1C19 6.4 18.9 6.6 18.7 6.8C18.5 7 18.3 7 18 7S17.5 7 17.3 6.8M20.7 4.1H19.6L19.3 3.2C19.1 2.5 18.7 2.2 18 2.2C17.3 2.2 16.8 2.5 16.7 3.2L16.4 4.1H15.3C14.7 4.1 14.3 4.4 14 5C13.8 5.6 14 6.1 14.6 6.5L15.5 7L15.1 8.2C14.9 8.6 15 9 15.2 9.4C15.5 9.8 15.8 10 16.3 10C16.7 10 17 9.9 17.2 9.7L18 9.1L18.8 9.8C19 9.9 19.3 10 19.7 10C20.2 10 20.5 9.8 20.8 9.4C21 9 21.1 8.6 20.9 8.2L20.5 7L21.3 6.5C21.9 6.1 22.1 5.6 21.9 5C21.7 4.3 21.3 4.1 20.7 4.1Z"; -var mdiBeehiveOffOutline = "M1.1 3L4.7 6.5C3.7 7.2 3 8.2 3 9.5C3 10.1 3.2 10.7 3.5 11.2C2 11.6 1 12.9 1 14.5C1 15.8 1.7 16.8 2.7 17.5C2.2 18 2 18.7 2 19.5C2 21.4 3.6 23 5.5 23H18.5C19.3 23 20 22.7 20.6 22.3L21.3 23L22.6 21.7L2.4 1.7L1.1 3M9.2 11H6.5C5.7 11 5 10.3 5 9.5C5 8.8 5.5 8.2 6.2 8L9.2 11M9 21H5.5C4.7 21 4 20.3 4 19.5S4.7 18 5.5 18H9V21M9.2 16H4.5C3.7 16 3 15.3 3 14.5S3.7 13 4.5 13H11.2L12.2 14H12C10.7 14 9.6 14.8 9.2 16M18.5 21H15V18H16.2L19.1 20.9C18.9 21 18.7 21 18.5 21M7.1 3.9L5.7 2.5C6.3 1.6 7.3 1 8.5 1H15.5C17.4 1 19 2.6 19 4.5C19 5.1 18.8 5.7 18.5 6.2C20 6.6 21 7.9 21 9.5C21 10.1 20.8 10.7 20.5 11.2C21.9 11.7 23 13 23 14.5C23 15.8 22.3 16.8 21.3 17.5C21.6 17.9 21.8 18.3 21.9 18.7L19.2 16H19.5C20.3 16 21 15.3 21 14.5S20.3 13 19.5 13H16.2L14.2 11H17.5C18.3 11 19 10.3 19 9.5S18.3 8 17.5 8H11.2L9.2 6H15.5C16.3 6 17 5.3 17 4.5S16.3 3 15.5 3H8.5C7.9 3 7.3 3.4 7.1 3.9Z"; -var mdiBeehiveOutline = "M23 14.5C23 12.94 21.97 11.63 20.55 11.18C20.83 10.68 21 10.11 21 9.5C21 7.94 19.97 6.63 18.55 6.18C18.83 5.68 19 5.11 19 4.5C19 2.57 17.43 1 15.5 1H8.5C6.57 1 5 2.57 5 4.5C5 5.11 5.17 5.68 5.45 6.18C4.04 6.63 3 7.94 3 9.5C3 10.11 3.17 10.68 3.45 11.18C2.04 11.63 1 12.94 1 14.5C1 15.76 1.67 16.84 2.67 17.46C2.25 18.03 2 18.74 2 19.5C2 21.43 3.57 23 5.5 23H18.5C20.43 23 22 21.43 22 19.5C22 18.74 21.75 18.03 21.33 17.46C22.33 16.84 23 15.76 23 14.5M8.5 3H15.5C16.33 3 17 3.67 17 4.5S16.33 6 15.5 6H8.5C7.67 6 7 5.33 7 4.5S7.67 3 8.5 3M6.5 8H17.5C18.33 8 19 8.67 19 9.5S18.33 11 17.5 11H6.5C5.67 11 5 10.33 5 9.5S5.67 8 6.5 8M4 19.5C4 18.67 4.67 18 5.5 18H9V21H5.5C4.67 21 4 20.33 4 19.5M18.5 21H15V18H18.5C19.33 18 20 18.67 20 19.5S19.33 21 18.5 21M19.5 16H14.82C14.4 14.84 13.3 14 12 14S9.6 14.84 9.18 16H4.5C3.67 16 3 15.33 3 14.5S3.67 13 4.5 13H19.5C20.33 13 21 13.67 21 14.5S20.33 16 19.5 16Z"; -var mdiBeekeeper = "M19 5H16C16 3.34 14.21 2 12 2C9.79 2 8 3.34 8 5H5C4.45 5 4 5.45 4 6S4.45 7 5 7V14C5 15.11 5.9 16 7 16H17C18.11 16 19 15.11 19 14V7C19.55 7 20 6.55 20 6S19.55 5 19 5M17 14H7V7H17V14M15.86 8C15.94 8.32 16 8.65 16 9C16 11.21 14.21 13 12 13S8 11.21 8 9C8 8.65 8.06 8.32 8.14 8H10.28C10.11 8.3 10 8.63 10 9C10 10.1 10.9 11 12 11S14 10.1 14 9C14 8.63 13.89 8.3 13.72 8H15.86M20 19V22H4V19C4 18.22 4.47 17.55 5.18 17H12C9.28 17 6.19 18.29 6 19V20H18V19C17.81 18.29 14.72 17 12 17H18.82C19.53 17.55 20 18.22 20 19Z"; -var mdiBeer = "M4,2H19L17,22H6L4,2M6.2,4L7.8,20H8.8L7.43,6.34C8.5,6 9.89,5.89 11,7C12.56,8.56 15.33,7.69 16.5,7.23L16.8,4H6.2Z"; -var mdiBeerOutline = "M4 2L6 22H17L19 2H4M6.2 4H16.8L16.5 7.23C13.18 8.5 11.85 7.67 11.38 7.31C11.13 7.12 10.77 6.69 10.11 6.39C9.45 6.08 8.55 6 7.5 6.32C7.09 6.43 6.77 6.61 6.5 6.79L6.2 4M8.86 8.11C9.05 8.11 9.16 8.15 9.27 8.2C9.5 8.3 9.71 8.55 10.17 8.9C11.03 9.56 13.03 10.36 16.26 9.41L15.2 20H7.8L6.71 9.06C6.76 9 6.91 8.89 7.17 8.71C7.5 8.5 7.91 8.28 8 8.25L8 8.25H8.03C8.41 8.14 8.67 8.1 8.86 8.11Z"; -var mdiBell = "M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M14,21A2,2 0 0,1 12,23A2,2 0 0,1 10,21"; -var mdiBellAlert = "M23 7V13H21V7M21 15H23V17H21M12 2A2 2 0 0 0 10 4A2 2 0 0 0 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H21V19L19 17V11C19 7.82 16.88 5.14 14 4.29A2 2 0 0 0 14 4A2 2 0 0 0 12 2M10 21A2 2 0 0 0 12 23A2 2 0 0 0 14 21Z"; -var mdiBellAlertOutline = "M12 2A2 2 0 0 0 10 4A2 2 0 0 0 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H21V19L19 17V11C19 7.82 16.88 5.14 14 4.29A2 2 0 0 0 14 4A2 2 0 0 0 12 2M12 6A5 5 0 0 1 17 11V18H7V11A5 5 0 0 1 12 6M21 7V13H23V7H21M21 15V17H23V15H21M10 21A2 2 0 0 0 12 23A2 2 0 0 0 14 21H10Z"; -var mdiBellCancel = "M17.5 13A4.5 4.5 0 0 0 13 17.5A4.5 4.5 0 0 0 17.5 22A4.5 4.5 0 0 0 22 17.5A4.5 4.5 0 0 0 17.5 13M17.5 14.5A3 3 0 0 1 20.5 17.5A3 3 0 0 1 20.08 19L16 14.92A3 3 0 0 1 17.5 14.5M14.92 16L19 20.08A3 3 0 0 1 17.5 20.5A3 3 0 0 1 14.5 17.5A3 3 0 0 1 14.92 16M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H11.5A6.5 6.5 0 0 1 11 17.5A6.5 6.5 0 0 1 17.5 11A6.5 6.5 0 0 1 19 11.18V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.5 23 12.97 22.81 13.33 22.5A6.5 6.5 0 0 1 12.03 21Z"; -var mdiBellCancelOutline = "M17.5 13A4.5 4.5 0 0 0 13 17.5A4.5 4.5 0 0 0 17.5 22A4.5 4.5 0 0 0 22 17.5A4.5 4.5 0 0 0 17.5 13M17.5 14.5A3 3 0 0 1 20.5 17.5A3 3 0 0 1 20.08 19L16 14.92A3 3 0 0 1 17.5 14.5M14.92 16L19 20.08A3 3 0 0 1 17.5 20.5A3 3 0 0 1 14.5 17.5A3 3 0 0 1 14.92 16M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H11.5A6.5 6.5 0 0 1 11.03 18H7V11A5 5 0 0 1 12 6A5 5 0 0 1 17 11V11A6.5 6.5 0 0 1 17.5 11A6.5 6.5 0 0 1 19 11.18V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.5 23 12.97 22.81 13.33 22.5A6.5 6.5 0 0 1 12.03 21Z"; -var mdiBellCheck = "M17.75 21.16L15 18.16L16.16 17L17.75 18.59L21.34 15L22.5 16.41L17.75 21.16M3 20V19L5 17V11C5 7.9 7.03 5.18 10 4.29V4C10 2.9 10.9 2 12 2C13.11 2 14 2.9 14 4V4.29C16.97 5.18 19 7.9 19 11V12.08L18 12C14.69 12 12 14.69 12 18C12 18.7 12.12 19.37 12.34 20H3M12 23C10.9 23 10 22.11 10 21H12.8C13.04 21.41 13.33 21.79 13.65 22.13C13.29 22.66 12.69 23 12 23Z"; -var mdiBellCheckOutline = "M17.75 21.16L15 18.16L16.16 17L17.75 18.59L21.34 15L22.5 16.41L17.75 21.16M10 21H12.8C13.04 21.41 13.33 21.79 13.65 22.13C13.29 22.66 12.69 23 12 23C10.9 23 10 22.11 10 21M3 20V19L5 17V11C5 7.9 7.03 5.18 10 4.29V4C10 2.9 10.9 2 12 2C13.11 2 14 2.9 14 4V4.29C16.97 5.18 19 7.9 19 11V12.08L18 12L17 12.08V11C17 8.24 14.76 6 12 6C9.24 6 7 8.24 7 11V18H12C12 18.7 12.12 19.37 12.34 20H3Z"; -var mdiBellCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M17,16V15L16,14V11.39C16,10.3 15.73,9.34 15.21,8.53C14.7,7.72 13.96,7.21 13,7V6.5A1,1 0 0,0 12,5.5A1,1 0 0,0 11,6.5V7C10.04,7.21 9.3,7.72 8.79,8.53C8.27,9.34 8,10.3 8,11.39V14L7,15V16H17M13.5,17H10.5A1.5,1.5 0 0,0 12,18.5A1.5,1.5 0 0,0 13.5,17Z"; -var mdiBellCircleOutline = "M17,16H7V15L8,14V11.39C8,10.3 8.27,9.34 8.79,8.53C9.3,7.72 10.04,7.21 11,7V6.5A1,1 0 0,1 12,5.5A1,1 0 0,1 13,6.5V7C13.96,7.21 14.7,7.72 15.21,8.53C15.73,9.34 16,10.3 16,11.39V14L17,15V16M13.5,17A1.5,1.5 0 0,1 12,18.5A1.5,1.5 0 0,1 10.5,17H13.5M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiBellMinus = "M22 19V17H14V19H22M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18C12 14.69 14.69 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21H10Z"; -var mdiBellMinusOutline = "M12 2C10.9 2 10 2.9 10 4V4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18H7V11C7 8.24 9.24 6 12 6S17 8.24 17 11V12.09C17.33 12.03 17.67 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29V4C14 2.9 13.11 2 12 2M14 17V19H22V17M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21H10Z"; -var mdiBellOff = "M20.84,22.73L18.11,20H3V19L5,17V11C5,9.86 5.29,8.73 5.83,7.72L1.11,3L2.39,1.73L22.11,21.46L20.84,22.73M19,15.8V11C19,7.9 16.97,5.17 14,4.29C14,4.19 14,4.1 14,4A2,2 0 0,0 12,2A2,2 0 0,0 10,4C10,4.1 10,4.19 10,4.29C9.39,4.47 8.8,4.74 8.26,5.09L19,15.8M12,23A2,2 0 0,0 14,21H10A2,2 0 0,0 12,23Z"; -var mdiBellOffOutline = "M22.11,21.46L2.39,1.73L1.11,3L5.83,7.72C5.29,8.73 5,9.86 5,11V17L3,19V20H18.11L20.84,22.73L22.11,21.46M7,18V11C7,10.39 7.11,9.79 7.34,9.23L16.11,18H7M10,21H14A2,2 0 0,1 12,23A2,2 0 0,1 10,21M8.29,5.09C8.82,4.75 9.4,4.5 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V15.8L17,13.8V11A5,5 0 0,0 12,6C11.22,6 10.45,6.2 9.76,6.56L8.29,5.09Z"; -var mdiBellOutline = "M16,17H7V10.5C7,8 9,6 11.5,6C14,6 16,8 16,10.5M18,16V10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18M11.5,22A2,2 0 0,0 13.5,20H9.5A2,2 0 0,0 11.5,22Z"; -var mdiBellPlus = "M17 14V17H14V19H17V22H19V19H22V17H19V14M12 2A2 2 0 0 0 10 4A2 2 0 0 0 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35A6 6 0 0 1 12 18A6 6 0 0 1 18 12A6 6 0 0 1 19 12.09V11C19 7.82 16.88 5.14 14 4.29A2 2 0 0 0 14 4A2 2 0 0 0 12 2M10 21A2 2 0 0 0 12 23A2 2 0 0 0 13.65 22.13A6 6 0 0 1 12.81 21Z"; -var mdiBellPlusOutline = "M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18H7V11C7 8.24 9.24 6 12 6C14.76 6 17 8.24 17 11V12.09C17.33 12.03 17.67 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M17 14V17H14V19H17V22H19V19H22V17H19V14M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21Z"; -var mdiBellRemove = "M20.12 14.46L18 16.59L15.88 14.46L14.46 15.88L16.59 18L14.46 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18C12 14.69 14.69 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21Z"; -var mdiBellRemoveOutline = "M20.12 14.46L18 16.59L15.88 14.46L14.46 15.88L16.59 18L14.46 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18H7V11A5 5 0 0 1 12 6A5 5 0 0 1 17 11V12.09C17.33 12.04 17.66 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21Z"; -var mdiBellRing = "M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M14,21A2,2 0 0,1 12,23A2,2 0 0,1 10,21M19.75,3.19L18.33,4.61C20.04,6.3 21,8.6 21,11H23C23,8.07 21.84,5.25 19.75,3.19M1,11H3C3,8.6 3.96,6.3 5.67,4.61L4.25,3.19C2.16,5.25 1,8.07 1,11Z"; -var mdiBellRingOutline = "M10,21H14A2,2 0 0,1 12,23A2,2 0 0,1 10,21M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M17,11A5,5 0 0,0 12,6A5,5 0 0,0 7,11V18H17V11M19.75,3.19L18.33,4.61C20.04,6.3 21,8.6 21,11H23C23,8.07 21.84,5.25 19.75,3.19M1,11H3C3,8.6 3.96,6.3 5.67,4.61L4.25,3.19C2.16,5.25 1,8.07 1,11Z"; -var mdiBellSleep = "M10,21H14A2,2 0 0,1 12,23A2,2 0 0,1 10,21M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M15,9H9V11H12.24L9,13.7V16H15V14H11.76L15,11.3V9Z"; -var mdiBellSleepOutline = "M10,21H14A2,2 0 0,1 12,23A2,2 0 0,1 10,21M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M17,11A5,5 0 0,0 12,6A5,5 0 0,0 7,11V18H17V11M9,9V11H12.24L9,13.7V16H15V14H11.76L15,11.3V9H9Z"; -var mdiBeta = "M9.23,17.59V23.12H6.88V6.72C6.88,5.27 7.31,4.13 8.16,3.28C9,2.43 10.17,2 11.61,2C13,2 14.07,2.34 14.87,3C15.66,3.68 16.05,4.62 16.05,5.81C16.05,6.63 15.79,7.4 15.27,8.11C14.75,8.82 14.08,9.31 13.25,9.58V9.62C14.5,9.82 15.47,10.27 16.13,11C16.79,11.71 17.12,12.62 17.12,13.74C17.12,15.06 16.66,16.14 15.75,16.97C14.83,17.8 13.63,18.21 12.13,18.21C11.07,18.21 10.1,18 9.23,17.59M10.72,10.75V8.83C11.59,8.72 12.3,8.4 12.87,7.86C13.43,7.31 13.71,6.7 13.71,6C13.71,4.62 13,3.92 11.6,3.92C10.84,3.92 10.25,4.16 9.84,4.65C9.43,5.14 9.23,5.82 9.23,6.71V15.5C10.14,16.03 11.03,16.29 11.89,16.29C12.73,16.29 13.39,16.07 13.86,15.64C14.33,15.2 14.56,14.58 14.56,13.79C14.56,12 13.28,11 10.72,10.75Z"; -var mdiBetamax = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M8,9A4,4 0 0,1 12,13A4,4 0 0,1 8,17A4,4 0 0,1 4,13A4,4 0 0,1 8,9M13,9H20V17H13V9M8,11A2,2 0 0,0 6,13A2,2 0 0,0 8,15A2,2 0 0,0 10,13A2,2 0 0,0 8,11Z"; -var mdiBiathlon = "M12.88,3.64C13.65,3.64 14.28,4.27 14.28,5.04C14.28,5.81 13.65,6.44 12.88,6.44C12.11,6.44 11.5,5.81 11.5,5.04C11.5,4.27 12.11,3.64 12.88,3.64M15,13H16.5V19H15V13M15,8.5H16.5V10H15V8.5M10.04,2.6L8,2.04L6.06,8.58L3.9,11.42L7.17,12.37L10.04,2.6M19.67,18.55C19.31,18.93 18.88,19.5 18.4,19.7C17.91,19.92 17.54,20 17,20H13.5L13.43,17C13.42,16.83 13.37,16.67 13.28,16.5L10.88,12.24L11.76,9.5C12.34,10.55 13,11.73 13.06,11.83C13.21,12 13.45,12.13 13.69,12.13H15.9A0.81,0.81 0 0,0 16.71,11.32C16.71,10.9 16.38,10.56 15.96,10.53L14.29,10.4L12.4,7C12.4,7 12,6.42 11.14,6.42C10.27,6.42 10,6.84 9.83,7.42L6,20H3V22H17C18.37,22 19.53,21.34 20.5,20.37L19.67,18.55M9.75,14.39L11.62,17.39L11.75,20H7.75L9.75,14.39Z"; -var mdiBicycle = "M19 10C18.44 10 17.91 10.11 17.41 10.28L14.46 4.5H11V6H13.54L14.42 7.72L12 13.13L10.23 8.95C10.5 8.85 10.74 8.58 10.74 8.25C10.74 7.84 10.41 7.5 10 7.5H8C7.58 7.5 7.24 7.84 7.24 8.25S7.58 9 8 9H8.61L10.86 14.25H9.92C9.56 11.85 7.5 10 5 10C2.24 10 0 12.24 0 15S2.24 20 5 20C7.5 20 9.56 18.15 9.92 15.75H12.5L15.29 9.43L16.08 10.96C14.82 11.87 14 13.34 14 15C14 17.76 16.24 20 19 20S24 17.76 24 15 21.76 10 19 10M5 18.5C3.07 18.5 1.5 16.93 1.5 15S3.07 11.5 5 11.5C6.67 11.5 8.07 12.68 8.41 14.25H4V15.75H8.41C8.07 17.32 6.67 18.5 5 18.5M19 18.5C17.07 18.5 15.5 16.93 15.5 15C15.5 13.92 16 12.97 16.77 12.33L18.57 15.85L19.89 15.13L18.1 11.63C18.39 11.56 18.69 11.5 19 11.5C20.93 11.5 22.5 13.07 22.5 15S20.93 18.5 19 18.5Z"; -var mdiBicycleBasket = "M11.74 13.36L14.14 7.71L13.06 5.5H10.5V4H14L14.73 5.5H21.75L20.75 9H16.44L17.11 10.37C17.69 10.13 18.33 10 19 10C21.76 10 24 12.24 24 15C24 17.76 21.76 20 19 20C16.24 20 14 17.76 14 15C14 13.45 14.71 12.06 15.82 11.15L15 9.5L12.25 16H9.9C9.44 18.28 7.42 20 5 20C2.24 20 0 17.76 0 15C0 12.24 2.24 10 5 10C7.59 10 9.72 11.97 10 14.5H10.58L8.3 9H7.5C7.09 9 6.75 8.66 6.75 8.25C6.75 7.84 7.09 7.5 7.5 7.5H10.25C10.66 7.5 11 7.84 11 8.25C11 8.66 10.66 9 10.25 9H9.97L11.74 13.36M5 11.5C3.07 11.5 1.5 13.07 1.5 15C1.5 16.93 3.07 18.5 5 18.5C6.59 18.5 7.93 17.45 8.36 16H4V14.5H8.47C8.22 12.8 6.76 11.5 5 11.5M19 11.5C18.57 11.5 18.15 11.58 17.77 11.72L19.7 15.68L18.35 16.34L16.5 12.55C15.88 13.18 15.5 14.05 15.5 15C15.5 16.93 17.07 18.5 19 18.5C20.93 18.5 22.5 16.93 22.5 15C22.5 13.07 20.93 11.5 19 11.5Z"; -var mdiBicycleElectric = "M19 7C18.44 7 17.91 7.11 17.41 7.28L14.46 1.5H11V3H13.54L14.42 4.72L12 10.13L10.23 5.95C10.5 5.85 10.74 5.58 10.74 5.25C10.74 4.84 10.41 4.5 10 4.5H8C7.58 4.5 7.24 4.84 7.24 5.25S7.58 6 8 6H8.61L10.86 11.25H9.92C9.56 8.85 7.5 7 5 7C2.24 7 0 9.24 0 12S2.24 17 5 17C7.5 17 9.56 15.15 9.92 12.75H12.5L15.29 6.43L16.08 7.96C14.82 8.87 14 10.34 14 12C14 14.76 16.24 17 19 17S24 14.76 24 12 21.76 7 19 7M5 15.5C3.07 15.5 1.5 13.93 1.5 12S3.07 8.5 5 8.5C6.67 8.5 8.07 9.68 8.41 11.25H4V12.75H8.41C8.07 14.32 6.67 15.5 5 15.5M19 15.5C17.07 15.5 15.5 13.93 15.5 12C15.5 10.92 16 9.97 16.77 9.33L18.57 12.85L19.89 12.13L18.1 8.63C18.39 8.56 18.69 8.5 19 8.5C20.93 8.5 22.5 10.07 22.5 12S20.93 15.5 19 15.5M11 20H7L13 23V21H17L11 18V20Z"; -var mdiBicyclePennyFarthing = "M15.5 5.06V2H12V4H13.5V5.04C12.71 5.11 11.94 5.27 11.2 5.5C11.03 5.2 10.72 5 10.36 5H7C6.45 5 6 5.45 6 6S6.45 7 7 7H8.05C5.09 9 3.12 12.36 3 16.18C1.85 16.59 1 17.69 1 19C1 20.66 2.34 22 4 22S7 20.66 7 19C7 17.7 6.17 16.61 5 16.19C5.07 14.67 5.46 13.25 6.14 12C6.05 12.5 6 13 6 13.5C6 18.19 9.81 22 14.5 22C19.19 22 23 18.19 23 13.5C23 9.14 19.72 5.56 15.5 5.06M4 20C3.45 20 3 19.55 3 19S3.45 18 4 18 5 18.45 5 19 4.55 20 4 20M14.5 20C10.92 20 8 17.08 8 13.5C8 10.26 10.39 7.57 13.5 7.09V15H15.5V7.09C18.61 7.57 21 10.26 21 13.5C21 17.08 18.08 20 14.5 20Z"; -var mdiBike = "M5,20.5A3.5,3.5 0 0,1 1.5,17A3.5,3.5 0 0,1 5,13.5A3.5,3.5 0 0,1 8.5,17A3.5,3.5 0 0,1 5,20.5M5,12A5,5 0 0,0 0,17A5,5 0 0,0 5,22A5,5 0 0,0 10,17A5,5 0 0,0 5,12M14.8,10H19V8.2H15.8L13.86,4.93C13.57,4.43 13,4.1 12.4,4.1C11.93,4.1 11.5,4.29 11.2,4.6L7.5,8.29C7.19,8.6 7,9 7,9.5C7,10.13 7.33,10.66 7.85,10.97L11.2,13V18H13V11.5L10.75,9.85L13.07,7.5M19,20.5A3.5,3.5 0 0,1 15.5,17A3.5,3.5 0 0,1 19,13.5A3.5,3.5 0 0,1 22.5,17A3.5,3.5 0 0,1 19,20.5M19,12A5,5 0 0,0 14,17A5,5 0 0,0 19,22A5,5 0 0,0 24,17A5,5 0 0,0 19,12M16,4.8C17,4.8 17.8,4 17.8,3C17.8,2 17,1.2 16,1.2C15,1.2 14.2,2 14.2,3C14.2,4 15,4.8 16,4.8Z"; -var mdiBikeFast = "M16 1.2C15 1.2 14.2 2 14.2 3S15 4.8 16 4.8 17.8 4 17.8 3 17 1.2 16 1.2M12.4 4.1C11.93 4.1 11.5 4.29 11.2 4.6L7.5 8.29C7.19 8.6 7 9 7 9.5C7 10.13 7.33 10.66 7.85 10.97L11.2 13V18H13V11.5L10.75 9.85L13.07 7.5L14.8 10H19V8.2H15.8L13.86 4.93C13.57 4.43 13 4.1 12.4 4.1M10 3H3C2.45 3 2 2.55 2 2S2.45 1 3 1H12.79C12.58 1.34 12.41 1.71 12.32 2.11C11.46 2.13 10.65 2.45 10 3M5 12C2.24 12 0 14.24 0 17S2.24 22 5 22 10 19.76 10 17 7.76 12 5 12M5 20.5C3.07 20.5 1.5 18.93 1.5 17S3.07 13.5 5 13.5 8.5 15.07 8.5 17 6.93 20.5 5 20.5M19 12C16.24 12 14 14.24 14 17S16.24 22 19 22 24 19.76 24 17 21.76 12 19 12M19 20.5C17.07 20.5 15.5 18.93 15.5 17S17.07 13.5 19 13.5 22.5 15.07 22.5 17 20.93 20.5 19 20.5M5.32 11H1C.448 11 0 10.55 0 10S.448 9 1 9H5.05C5.03 9.16 5 9.33 5 9.5C5 10.03 5.12 10.54 5.32 11M6 7H2C1.45 7 1 6.55 1 6S1.45 5 2 5H7.97L6.09 6.87C6.05 6.91 6 6.96 6 7Z"; -var mdiBillboard = "M20 22H18V17H20M6 22H4V17H6M23 4V13A2 2 0 0 1 21 15H3A2 2 0 0 1 1 13V4A2 2 0 0 1 3 2H21A2 2 0 0 1 23 4M21 4H3V13H21M20 6H15V8H20M18 9H15V11H18M14 11H4L6.73 7.36L8.73 10.09L9.46 9.55L8.2 7.82L9.91 5.55Z"; -var mdiBilliards = "M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9A2,2 0 0,0 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15A2,2 0 0,0 11,17M12,1C5.92,1 1,5.92 1,12C1,18.08 5.92,23 12,23C18.08,23 23,18.08 23,12C23,5.92 18.08,1 12,1M12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19Z"; -var mdiBilliardsRack = "M20.31,16.44L14.54,6.47C13.72,5.04 11.89,4.55 10.46,5.38C10,5.64 9.63,6 9.36,6.47L3.6,16.44C2.77,17.87 3.26,19.69 4.69,20.5C5.14,20.78 5.65,20.92 6.18,20.92H17.73C19.38,20.91 20.72,19.57 20.71,17.92C20.71,17.4 20.57,16.89 20.31,16.44M5.37,17.43L11.11,7.47C11.38,7 12,6.82 12.46,7.1C12.62,7.18 12.75,7.31 12.84,7.47L18.58,17.43C18.85,17.91 18.69,18.5 18.21,18.79C18.06,18.88 17.89,18.93 17.72,18.93H6.21C5.66,18.92 5.21,18.47 5.22,17.92C5.22,17.75 5.26,17.58 5.35,17.43H5.37M11.97,13.45C10.87,13.45 10,12.56 10,11.46C10,10.35 10.87,9.46 11.97,9.46A2,2 0 0,1 13.97,11.46C13.97,12.56 13.07,13.45 11.95,13.45H11.97M9.46,17.93C8.36,17.93 7.47,17.04 7.47,15.94C7.47,14.84 8.36,13.95 9.46,13.95C10.56,13.95 11.46,14.84 11.46,15.94C11.46,17.04 10.56,17.93 9.46,17.93M14.44,17.93A2,2 0 0,1 12.45,15.94A2,2 0 0,1 14.44,13.95C15.54,13.95 16.44,14.84 16.44,15.94C16.44,17.04 15.54,17.93 14.44,17.93Z"; -var mdiBinoculars = "M11,6H13V13H11V6M9,20A1,1 0 0,1 8,21H5A1,1 0 0,1 4,20V15L6,6H10V13A1,1 0 0,1 9,14V20M10,5H7V3H10V5M15,20V14A1,1 0 0,1 14,13V6H18L20,15V20A1,1 0 0,1 19,21H16A1,1 0 0,1 15,20M14,5V3H17V5H14Z"; -var mdiBio = "M17,12H20A2,2 0 0,1 22,14V17A2,2 0 0,1 20,19H17A2,2 0 0,1 15,17V14A2,2 0 0,1 17,12M17,14V17H20V14H17M2,7H7A2,2 0 0,1 9,9V11A2,2 0 0,1 7,13A2,2 0 0,1 9,15V17A2,2 0 0,1 7,19H2V13L2,7M4,9V12H7V9H4M4,17H7V14H4V17M11,13H13V19H11V13M11,9H13V11H11V9Z"; -var mdiBiohazard = "M23,16.06C23,16.29 23,16.5 22.96,16.7C22.78,14.14 20.64,12.11 18,12.11C17.63,12.11 17.27,12.16 16.92,12.23C16.96,12.5 17,12.73 17,13C17,15.35 15.31,17.32 13.07,17.81C13.42,20.05 15.31,21.79 17.65,21.96C17.43,22 17.22,22 17,22C14.92,22 13.07,20.94 12,19.34C10.93,20.94 9.09,22 7,22C6.78,22 6.57,22 6.35,21.96C8.69,21.79 10.57,20.06 10.93,17.81C8.68,17.32 7,15.35 7,13C7,12.73 7.04,12.5 7.07,12.23C6.73,12.16 6.37,12.11 6,12.11C3.36,12.11 1.22,14.14 1.03,16.7C1,16.5 1,16.29 1,16.06C1,12.85 3.59,10.24 6.81,10.14C6.3,9.27 6,8.25 6,7.17C6,4.94 7.23,3 9.06,2C7.81,2.9 7,4.34 7,6C7,7.35 7.56,8.59 8.47,9.5C9.38,8.59 10.62,8.04 12,8.04C13.37,8.04 14.62,8.59 15.5,9.5C16.43,8.59 17,7.35 17,6C17,4.34 16.18,2.9 14.94,2C16.77,3 18,4.94 18,7.17C18,8.25 17.7,9.27 17.19,10.14C20.42,10.24 23,12.85 23,16.06M9.27,10.11C10.05,10.62 11,10.92 12,10.92C13,10.92 13.95,10.62 14.73,10.11C14,9.45 13.06,9.03 12,9.03C10.94,9.03 10,9.45 9.27,10.11M12,14.47C12.82,14.47 13.5,13.8 13.5,13A1.5,1.5 0 0,0 12,11.5A1.5,1.5 0 0,0 10.5,13C10.5,13.8 11.17,14.47 12,14.47M10.97,16.79C10.87,14.9 9.71,13.29 8.05,12.55C8.03,12.7 8,12.84 8,13C8,14.82 9.27,16.34 10.97,16.79M15.96,12.55C14.29,13.29 13.12,14.9 13,16.79C14.73,16.34 16,14.82 16,13C16,12.84 15.97,12.7 15.96,12.55Z"; -var mdiBird = "M23 11.5L19.95 10.37C19.69 9.22 19.04 8.56 19.04 8.56C17.4 6.92 14.75 6.92 13.11 8.56L11.63 10.04L5 3C4 7 5 11 7.45 14.22L2 19.5C2 19.5 10.89 21.5 16.07 17.45C18.83 15.29 19.45 14.03 19.84 12.7L23 11.5M17.71 11.72C17.32 12.11 16.68 12.11 16.29 11.72C15.9 11.33 15.9 10.7 16.29 10.31C16.68 9.92 17.32 9.92 17.71 10.31C18.1 10.7 18.1 11.33 17.71 11.72Z"; -var mdiBitbucket = "M2.65 3C2.3 3 2 3.3 2 3.65C2 3.69 2 3.73 2 3.77L4.73 20.27C4.8 20.69 5.16 21 5.58 21H18.63C18.94 21 19.22 20.78 19.27 20.46L22 3.77C22.05 3.42 21.81 3.09 21.46 3.04C21.43 3.03 21.39 3.03 21.35 3.03L2.65 3M14.1 14.95H9.94L8.81 9.07H15.11L14.1 14.95Z"; -var mdiBitcoin = "M14.24 10.56C13.93 11.8 12 11.17 11.4 11L11.95 8.82C12.57 9 14.56 9.26 14.24 10.56M11.13 12.12L10.53 14.53C11.27 14.72 13.56 15.45 13.9 14.09C14.26 12.67 11.87 12.3 11.13 12.12M21.7 14.42C20.36 19.78 14.94 23.04 9.58 21.7C4.22 20.36 .963 14.94 2.3 9.58C3.64 4.22 9.06 .964 14.42 2.3C19.77 3.64 23.03 9.06 21.7 14.42M14.21 8.05L14.66 6.25L13.56 6L13.12 7.73C12.83 7.66 12.54 7.59 12.24 7.53L12.68 5.76L11.59 5.5L11.14 7.29C10.9 7.23 10.66 7.18 10.44 7.12L10.44 7.12L8.93 6.74L8.63 7.91C8.63 7.91 9.45 8.1 9.43 8.11C9.88 8.22 9.96 8.5 9.94 8.75L8.71 13.68C8.66 13.82 8.5 14 8.21 13.95C8.22 13.96 7.41 13.75 7.41 13.75L6.87 15L8.29 15.36C8.56 15.43 8.82 15.5 9.08 15.56L8.62 17.38L9.72 17.66L10.17 15.85C10.47 15.93 10.76 16 11.04 16.08L10.59 17.87L11.69 18.15L12.15 16.33C14 16.68 15.42 16.54 16 14.85C16.5 13.5 16 12.7 15 12.19C15.72 12 16.26 11.55 16.41 10.57C16.61 9.24 15.59 8.53 14.21 8.05Z"; -var mdiBlackMesa = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.39 5.05,16.53 6.71,18H9V12H17L19.15,15.59C19.69,14.5 20,13.29 20,12A8,8 0 0,0 12,4Z"; -var mdiBlender = "M19,5H17.8L18,2H4L5,4H6L6.94,16.19L5,22H19L17.06,16.17L17.2,14H19C20.3,14 21,12.97 21,12V7C21,5.7 19.97,5 19,5M12,20A1.5,1.5 0 0,1 10.5,18.5A1.5,1.5 0 0,1 12,17A1.5,1.5 0 0,1 13.5,18.5A1.5,1.5 0 0,1 12,20M15.13,15H8.85L8.7,13H13V12H8.62L8.47,10H13V9H8.39L8.24,7H13V6H8.16L8,4H15.86L15.13,15M19,12H17.33L17.67,7H19V12Z"; -var mdiBlenderSoftware = "M12.58,3.12V3.13C12.27,3.13 11.96,3.22 11.71,3.39C11.21,3.74 11.15,4.32 11.6,4.69L14.46,7L5.73,7.03H5.72C5,7.03 4.3,7.5 4.16,8.1C4,8.71 4.5,9.22 5.26,9.22L9.69,9.21L1.76,15.3C1,15.87 0.77,16.82 1.24,17.42C1.72,18.03 2.73,18.03 3.5,17.42L7.8,13.89C7.8,13.89 7.73,14.37 7.74,14.65C7.74,14.94 7.84,15.5 7.97,15.93C8.26,16.86 8.75,17.71 9.43,18.46C10.13,19.23 11,19.85 12,20.29C13.03,20.76 14.17,21 15.34,21C16.5,21 17.65,20.75 18.69,20.28C19.69,19.84 20.55,19.21 21.25,18.44C21.93,17.69 22.42,16.83 22.71,15.91C22.85,15.44 22.94,14.97 23,14.5C23,14.03 23,13.56 22.94,13.09C22.81,12.18 22.5,11.32 22,10.54C21.56,9.83 21,9.2 20.31,8.67V8.67L13.42,3.38C13.19,3.21 12.89,3.12 12.58,3.12M15.34,9.21C16.5,9.21 17.59,9.59 18.46,10.29C18.9,10.65 19.25,11.07 19.5,11.54C19.77,12 19.94,12.55 20,13.11C20.04,13.67 19.96,14.23 19.77,14.77C19.57,15.31 19.25,15.81 18.82,16.26C17.93,17.16 16.69,17.68 15.34,17.68C14,17.68 12.75,17.17 11.86,16.27C11.43,15.83 11.11,15.32 10.91,14.78C10.72,14.25 10.64,13.69 10.69,13.12C10.74,12.56 10.91,12.03 11.17,11.55C11.43,11.08 11.79,10.66 12.23,10.3C13.09,9.59 14.19,9.21 15.34,9.21M15.44,10.61C14.66,10.61 13.94,10.89 13.41,11.34C12.87,11.8 12.5,12.44 12.47,13.18C12.43,13.93 12.73,14.63 13.26,15.15C13.8,15.68 14.58,16 15.44,16C16.3,16 17.07,15.68 17.62,15.15C18.15,14.63 18.45,13.93 18.41,13.18C18.37,12.44 18,11.8 17.47,11.34C16.94,10.89 16.22,10.61 15.44,10.61Z"; -var mdiBlinds = "M3,2H21A1,1 0 0,1 22,3V5A1,1 0 0,1 21,6H20V13A1,1 0 0,1 19,14H13V16.17C14.17,16.58 15,17.69 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.69 9.83,16.58 11,16.17V14H5A1,1 0 0,1 4,13V6H3A1,1 0 0,1 2,5V3A1,1 0 0,1 3,2M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z"; -var mdiBlindsOpen = "M3 2H21C21.55 2 22 2.45 22 3V5C22 5.55 21.55 6 21 6H20V7C20 7.55 19.55 8 19 8H13V10.17C14.17 10.58 15 11.7 15 13C15 14.66 13.66 16 12 16C10.34 16 9 14.66 9 13C9 11.69 9.84 10.58 11 10.17V8H5C4.45 8 4 7.55 4 7V6H3C2.45 6 2 5.55 2 5V3C2 2.45 2.45 2 3 2M12 12C11.45 12 11 12.45 11 13C11 13.55 11.45 14 12 14C12.55 14 13 13.55 13 13C13 12.45 12.55 12 12 12Z"; -var mdiBlockHelper = "M12,0A12,12 0 0,1 24,12A12,12 0 0,1 12,24A12,12 0 0,1 0,12A12,12 0 0,1 12,0M12,2A10,10 0 0,0 2,12C2,14.4 2.85,16.6 4.26,18.33L18.33,4.26C16.6,2.85 14.4,2 12,2M12,22A10,10 0 0,0 22,12C22,9.6 21.15,7.4 19.74,5.67L5.67,19.74C7.4,21.15 9.6,22 12,22Z"; -var mdiBlogger = "M12.5 10H10C9.45 10 9 9.55 9 9C9 8.45 9.45 8 10 8H12.5C13.05 8 13.5 8.45 13.5 9C13.5 9.55 13.05 10 12.5 10M15 14C15 13.45 14.55 13 14 13H10C9.45 13 9 13.45 9 14C9 14.55 9.45 15 10 15H14C14.55 15 15 14.55 15 14M22 4V20C22 21.11 21.11 22 20 22H4C2.89 22 2 21.11 2 20V4C2 2.89 2.89 2 4 2H20C21.11 2 22 2.89 22 4M18 12C18 12 18 11 17 11C16.05 11.03 16 10 16 10L16 8C16 6.34 14.66 5 13 5H9C7.34 5 6 6.34 6 8V15C6 16.66 7.34 18 9 18H15C16.66 18 18 16.66 18 15L18 12Z"; -var mdiBloodBag = "M21,7C20,7 20,6 20,6V5H18V7H16V6C16,4.27 14.75,1 10,1C5.25,1 4,4.27 4,6V19C4,19.33 3.9,21 2,21V23C4.93,23 6,20.61 6,19V6C6,5.88 6.05,3 10,3C13.83,3 14,5.7 14,6V7H12V5H10V6C10,6 10,7 9,7C8,7 8,8 8,8V20C8,20 8,22 13,22C13.24,22 14.13,22 17,22C22,22 22,20 22,20V8C22,8 22,7 21,7M15,19.4A3,3 0 0,1 12,16.4C12,14.4 15,11 15,11C15,11 18,14.4 18,16.4A3,3 0 0,1 15,19.4Z"; -var mdiBluetooth = "M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12L17.71,7.71Z"; -var mdiBluetoothAudio = "M12.88,16.29L11,18.17V14.41M11,5.83L12.88,7.71L11,9.58M15.71,7.71L10,2H9V9.58L4.41,5L3,6.41L8.59,12L3,17.58L4.41,19L9,14.41V22H10L15.71,16.29L11.41,12M19.53,6.71L18.26,8C18.89,9.18 19.25,10.55 19.25,12C19.25,13.45 18.89,14.82 18.26,16L19.46,17.22C20.43,15.68 21,13.87 21,11.91C21,10 20.46,8.23 19.53,6.71M14.24,12L16.56,14.33C16.84,13.6 17,12.82 17,12C17,11.18 16.84,10.4 16.57,9.68L14.24,12Z"; -var mdiBluetoothConnect = "M19,10L17,12L19,14L21,12M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12M7,12L5,10L3,12L5,14L7,12Z"; -var mdiBluetoothOff = "M13,5.83L14.88,7.71L13.28,9.31L14.69,10.72L17.71,7.7L12,2H11V7.03L13,9.03M5.41,4L4,5.41L10.59,12L5,17.59L6.41,19L11,14.41V22H12L16.29,17.71L18.59,20L20,18.59M13,18.17V14.41L14.88,16.29"; -var mdiBluetoothSettings = "M14.88,14.29L13,16.17V12.41L14.88,14.29M13,3.83L14.88,5.71L13,7.59M17.71,5.71L12,0H11V7.59L6.41,3L5,4.41L10.59,10L5,15.59L6.41,17L11,12.41V20H12L17.71,14.29L13.41,10L17.71,5.71M15,24H17V22H15M7,24H9V22H7M11,24H13V22H11V24Z"; -var mdiBluetoothTransfer = "M14.71,7.71L10.41,12L14.71,16.29L9,22H8V14.41L3.41,19L2,17.59L7.59,12L2,6.41L3.41,5L8,9.59V2H9L14.71,7.71M10,5.83V9.59L11.88,7.71L10,5.83M11.88,16.29L10,14.41V18.17L11.88,16.29M22,8H20V11H18V8H16L19,4L22,8M22,16L19,20L16,16H18V13H20V16H22Z"; -var mdiBlur = "M14,8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 14,11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5M14,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,14A1.5,1.5 0 0,0 14,12.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M10,8.5A1.5,1.5 0 0,0 8.5,10A1.5,1.5 0 0,0 10,11.5A1.5,1.5 0 0,0 11.5,10A1.5,1.5 0 0,0 10,8.5M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18A1,1 0 0,0 14,17M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5M18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13M10,12.5A1.5,1.5 0 0,0 8.5,14A1.5,1.5 0 0,0 10,15.5A1.5,1.5 0 0,0 11.5,14A1.5,1.5 0 0,0 10,12.5M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10A1,1 0 0,0 6,9M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13Z"; -var mdiBlurLinear = "M13,17A1,1 0 0,0 14,16A1,1 0 0,0 13,15A1,1 0 0,0 12,16A1,1 0 0,0 13,17M13,13A1,1 0 0,0 14,12A1,1 0 0,0 13,11A1,1 0 0,0 12,12A1,1 0 0,0 13,13M13,9A1,1 0 0,0 14,8A1,1 0 0,0 13,7A1,1 0 0,0 12,8A1,1 0 0,0 13,9M17,12.5A0.5,0.5 0 0,0 17.5,12A0.5,0.5 0 0,0 17,11.5A0.5,0.5 0 0,0 16.5,12A0.5,0.5 0 0,0 17,12.5M17,8.5A0.5,0.5 0 0,0 17.5,8A0.5,0.5 0 0,0 17,7.5A0.5,0.5 0 0,0 16.5,8A0.5,0.5 0 0,0 17,8.5M3,3V5H21V3M17,16.5A0.5,0.5 0 0,0 17.5,16A0.5,0.5 0 0,0 17,15.5A0.5,0.5 0 0,0 16.5,16A0.5,0.5 0 0,0 17,16.5M9,17A1,1 0 0,0 10,16A1,1 0 0,0 9,15A1,1 0 0,0 8,16A1,1 0 0,0 9,17M5,13.5A1.5,1.5 0 0,0 6.5,12A1.5,1.5 0 0,0 5,10.5A1.5,1.5 0 0,0 3.5,12A1.5,1.5 0 0,0 5,13.5M5,9.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 3.5,8A1.5,1.5 0 0,0 5,9.5M3,21H21V19H3M9,9A1,1 0 0,0 10,8A1,1 0 0,0 9,7A1,1 0 0,0 8,8A1,1 0 0,0 9,9M9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13M5,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,14.5A1.5,1.5 0 0,0 3.5,16A1.5,1.5 0 0,0 5,17.5Z"; -var mdiBlurOff = "M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M2.5,5.27L6.28,9.05L6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10C7,9.9 6.97,9.81 6.94,9.72L9.75,12.53C9.04,12.64 8.5,13.26 8.5,14A1.5,1.5 0 0,0 10,15.5C10.74,15.5 11.36,14.96 11.47,14.25L14.28,17.06C14.19,17.03 14.1,17 14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18C15,17.9 14.97,17.81 14.94,17.72L18.72,21.5L20,20.23L3.77,4L2.5,5.27M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7M18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11M18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M13.8,11.5H14A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5A1.5,1.5 0 0,0 12.5,10V10.2C12.61,10.87 13.13,11.39 13.8,11.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7Z"; -var mdiBlurRadial = "M14,13A1,1 0 0,0 13,14A1,1 0 0,0 14,15A1,1 0 0,0 15,14A1,1 0 0,0 14,13M14,16.5A0.5,0.5 0 0,0 13.5,17A0.5,0.5 0 0,0 14,17.5A0.5,0.5 0 0,0 14.5,17A0.5,0.5 0 0,0 14,16.5M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,9.5A0.5,0.5 0 0,0 16.5,10A0.5,0.5 0 0,0 17,10.5A0.5,0.5 0 0,0 17.5,10A0.5,0.5 0 0,0 17,9.5M17,13.5A0.5,0.5 0 0,0 16.5,14A0.5,0.5 0 0,0 17,14.5A0.5,0.5 0 0,0 17.5,14A0.5,0.5 0 0,0 17,13.5M14,7.5A0.5,0.5 0 0,0 14.5,7A0.5,0.5 0 0,0 14,6.5A0.5,0.5 0 0,0 13.5,7A0.5,0.5 0 0,0 14,7.5M14,9A1,1 0 0,0 13,10A1,1 0 0,0 14,11A1,1 0 0,0 15,10A1,1 0 0,0 14,9M10,7.5A0.5,0.5 0 0,0 10.5,7A0.5,0.5 0 0,0 10,6.5A0.5,0.5 0 0,0 9.5,7A0.5,0.5 0 0,0 10,7.5M7,13.5A0.5,0.5 0 0,0 6.5,14A0.5,0.5 0 0,0 7,14.5A0.5,0.5 0 0,0 7.5,14A0.5,0.5 0 0,0 7,13.5M10,16.5A0.5,0.5 0 0,0 9.5,17A0.5,0.5 0 0,0 10,17.5A0.5,0.5 0 0,0 10.5,17A0.5,0.5 0 0,0 10,16.5M7,9.5A0.5,0.5 0 0,0 6.5,10A0.5,0.5 0 0,0 7,10.5A0.5,0.5 0 0,0 7.5,10A0.5,0.5 0 0,0 7,9.5M10,13A1,1 0 0,0 9,14A1,1 0 0,0 10,15A1,1 0 0,0 11,14A1,1 0 0,0 10,13M10,9A1,1 0 0,0 9,10A1,1 0 0,0 10,11A1,1 0 0,0 11,10A1,1 0 0,0 10,9Z"; -var mdiBolnisiCross = "M22,7L21.5,6.5C19.93,8 18.47,9.4 16.93,10.18C15.5,10.91 14.44,10.91 13,11C13.09,9.56 13.09,8.5 13.82,7.07C14.6,5.53 16,4.07 17.5,2.5L17,2C15.32,3.23 13.64,3.83 12,3.83C10.36,3.83 8.68,3.23 7,2L6.5,2.5C8,4.07 9.4,5.53 10.18,7.07C10.91,8.5 10.91,9.56 11,11C9.56,10.91 8.5,10.91 7.07,10.18C5.53,9.4 4.06,8 2.5,6.5L2,7C3.23,8.68 3.83,10.36 3.83,12C3.83,13.64 3.23,15.32 2,17L2.5,17.5C4.07,16 5.53,14.6 7.07,13.82C8.5,13.09 9.56,13.09 11,13C10.91,14.44 10.91,15.5 10.18,16.93C9.4,18.47 8,19.93 6.5,21.5L7,22C8.68,20.77 10.36,20.17 12,20.17C13.64,20.17 15.32,20.77 17,22L17.5,21.5C16,19.93 14.6,18.47 13.82,16.93C13.09,15.5 13.09,14.44 13,13C14.44,13.09 15.5,13.09 16.93,13.82C18.47,14.6 19.93,16 21.5,17.5L22,17C20.77,15.32 20.17,13.64 20.17,12C20.17,10.36 20.77,8.68 22,7Z"; -var mdiBolt = "M14,17.7V21H10V20.3L14,17.7M17,3H7V6H17V3M15,7L14,7.7V7H10V10.3L9,11V12L15,8.1V7M15,11L14,11.7V9.7L10,12.4V14.4L9,15V16L15,12.1V11M15,15L14,15.7V13.7L10,16.4V18.4L9,19V20L15,16.1V15Z"; -var mdiBomb = "M11.25,6A3.25,3.25 0 0,1 14.5,2.75A3.25,3.25 0 0,1 17.75,6C17.75,6.42 18.08,6.75 18.5,6.75C18.92,6.75 19.25,6.42 19.25,6V5.25H20.75V6A2.25,2.25 0 0,1 18.5,8.25A2.25,2.25 0 0,1 16.25,6A1.75,1.75 0 0,0 14.5,4.25A1.75,1.75 0 0,0 12.75,6H14V7.29C16.89,8.15 19,10.83 19,14A7,7 0 0,1 12,21A7,7 0 0,1 5,14C5,10.83 7.11,8.15 10,7.29V6H11.25M22,6H24V7H22V6M19,4V2H20V4H19M20.91,4.38L22.33,2.96L23.04,3.67L21.62,5.09L20.91,4.38Z"; -var mdiBombOff = "M14.5,2.75C12.7,2.75 11.25,4.2 11.25,6H10V7.29C9.31,7.5 8.67,7.81 8.08,8.2L17.79,17.91C18.58,16.76 19,15.39 19,14C19,10.83 16.89,8.15 14,7.29V6H12.75A1.75,1.75 0 0,1 14.5,4.25A1.75,1.75 0 0,1 16.25,6A2.25,2.25 0 0,0 18.5,8.25C19.74,8.25 20.74,7.24 20.74,6V5.25H19.25V6C19.25,6.42 18.91,6.75 18.5,6.75C18.08,6.75 17.75,6.42 17.75,6C17.75,4.2 16.29,2.75 14.5,2.75M3.41,6.36L2,7.77L5.55,11.32C5.2,12.14 5,13.04 5,14C5,17.86 8.13,21 12,21C12.92,21 13.83,20.81 14.68,20.45L18.23,24L19.64,22.59L3.41,6.36Z"; -var mdiBone = "M8,14A3,3 0 0,1 5,17A3,3 0 0,1 2,14C2,13.23 2.29,12.53 2.76,12C2.29,11.47 2,10.77 2,10A3,3 0 0,1 5,7A3,3 0 0,1 8,10C9.33,10.08 10.67,10.17 12,10.17C13.33,10.17 14.67,10.08 16,10A3,3 0 0,1 19,7A3,3 0 0,1 22,10C22,10.77 21.71,11.47 21.24,12C21.71,12.53 22,13.23 22,14A3,3 0 0,1 19,17A3,3 0 0,1 16,14C14.67,13.92 13.33,13.83 12,13.83C10.67,13.83 9.33,13.92 8,14Z"; -var mdiBook = "M18,22A2,2 0 0,0 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18Z"; -var mdiBookAccount = "M18 2H12V9L9.5 7.5L7 9V2H6A2 2 0 0 0 4 4V20A2 2 0 0 0 6 22H18A2 2 0 0 0 20 20V4A2 2 0 0 0 18 2M14 12A2 2 0 1 1 12 14A2 2 0 0 1 14 12M18 20H10V19C10 17.67 12.67 17 14 17S18 17.67 18 19Z"; -var mdiBookAccountOutline = "M18 2A2 2 0 0 1 20 4V20A2 2 0 0 1 18 22H6A2 2 0 0 1 4 20V4A2 2 0 0 1 6 2H18M18 4H13V9L10.5 6.7L8 9V4H6V20H18M13 11A2 2 0 1 1 11 13A2 2 0 0 1 13 11M17 19H9V18C9 16.67 11.67 16 13 16S17 16.67 17 18V19"; -var mdiBookAlert = "M18 4V20C18 21.11 17.11 22 16 22H4C2.9 22 2 21.11 2 20V4C2 2.9 2.9 2 4 2H5V9L7.5 7.5L10 9V2H16C17.1 2 18 2.89 18 4M20 17H22V15H20V17M20 7V13H22V7H20Z"; -var mdiBookAlertOutline = "M16 2H4C2.9 2 2 2.9 2 4V20C2 21.11 2.9 22 4 22H16C17.11 22 18 21.11 18 20V4C18 2.9 17.11 2 16 2M16 20H4V4H6V12L8.5 9.75L11 12V4H16V20M20 15H22V17H20V15M22 7V13H20V7H22Z"; -var mdiBookAlphabet = "M5.81,2C4.83,2.09 4,3 4,4V20C4,21.05 4.95,22 6,22H18C19.05,22 20,21.05 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6C5.94,2 5.87,2 5.81,2M12,13H13A1,1 0 0,1 14,14V18H13V16H12V18H11V14A1,1 0 0,1 12,13M12,14V15H13V14H12M15,15H18V16L16,19H18V20H15V19L17,16H15V15Z"; -var mdiBookArrowDown = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M20 20V16H18V20H16L19 23L22 20H20Z"; -var mdiBookArrowDownOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M20 20V16H18V20H16L19 23L22 20H20Z"; -var mdiBookArrowLeft = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M18 18V16L15 19L18 22V20H22V18H18Z"; -var mdiBookArrowLeftOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M18 18V16L15 19L18 22V20H22V18H18Z"; -var mdiBookArrowRight = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M23 19L20 16V18H16V20H20V22L23 19Z"; -var mdiBookArrowRightOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M23 19L20 16V18H16V20H20V22L23 19Z"; -var mdiBookArrowUp = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M19 15L16 18H18V22H20V18H22L19 15Z"; -var mdiBookArrowUpOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M19 15L16 18H18V22H20V18H22L19 15Z"; -var mdiBookCancel = "M12 18.5C12 19.79 12.39 21 13.04 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V12.18C19.5 12.07 19 12 18.5 12C14.91 12 12 14.91 12 18.5M23 18.5C23 21 21 23 18.5 23S14 21 14 18.5 16 14 18.5 14 23 16 23 18.5M20 21.08L15.92 17C15.65 17.42 15.5 17.94 15.5 18.5C15.5 20.16 16.84 21.5 18.5 21.5C19.06 21.5 19.58 21.35 20 21.08M21.5 18.5C21.5 16.84 20.16 15.5 18.5 15.5C17.94 15.5 17.42 15.65 17 15.92L21.08 20C21.35 19.58 21.5 19.06 21.5 18.5Z"; -var mdiBookCancelOutline = "M12.18 20C12.36 20.72 12.65 21.39 13.04 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V12.18C19.5 12.07 19 12 18.5 12C18.33 12 18.17 12 18 12.03V4H13V12L10.5 9.75L8 12V4H6V20H12.18M23 18.5C23 21 21 23 18.5 23S14 21 14 18.5 16 14 18.5 14 23 16 23 18.5M20 21.08L15.92 17C15.65 17.42 15.5 17.94 15.5 18.5C15.5 20.16 16.84 21.5 18.5 21.5C19.06 21.5 19.58 21.35 20 21.08M21.5 18.5C21.5 16.84 20.16 15.5 18.5 15.5C17.94 15.5 17.42 15.65 17 15.92L21.08 20C21.35 19.58 21.5 19.06 21.5 18.5Z"; -var mdiBookCheck = "M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M6 22C4.89 22 4 21.1 4 20V4C4 2.89 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.34C19.37 13.12 18.7 13 18 13C14.69 13 12 15.69 12 19C12 20.09 12.29 21.12 12.8 22H6Z"; -var mdiBookCheckOutline = "M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M18 2C19.1 2 20 2.9 20 4V13.34C19.37 13.12 18.7 13 18 13V4H13V12L10.5 9.75L8 12V4H6V20H12.08C12.2 20.72 12.45 21.39 12.8 22H6C4.9 22 4 21.1 4 20V4C4 2.9 4.9 2 6 2H18Z"; -var mdiBookClock = "M16.5 17.25L19.36 18.94L18.61 20.16L15 18V13H16.5V17.25M23 17C23 20.87 19.87 24 16 24C14.09 24 12.37 23.24 11.11 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V11.26C21.81 12.53 23 14.62 23 17M21 17C21 14.24 18.76 12 16 12S11 14.24 11 17 13.24 22 16 22 21 19.76 21 17Z"; -var mdiBookClockOutline = "M20 11.26V4C20 2.9 19.11 2 18 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H11.11C12.37 23.24 14.09 24 16 24C19.87 24 23 20.87 23 17C23 14.62 21.81 12.53 20 11.26M18 4V10.29C17.37 10.11 16.7 10 16 10C14.93 10 13.91 10.25 13 10.68V4H18M6 4H8V12L10.5 9.75L12.1 11.19C10.23 12.45 9 14.58 9 17C9 18.08 9.25 19.09 9.68 20H6V4M16 22C13.24 22 11 19.76 11 17S13.24 12 16 12 21 14.24 21 17 18.76 22 16 22M16.5 17.25L19.36 18.94L18.61 20.16L15 18V13H16.5V17.25Z"; -var mdiBookCog = "M12 19C12 20.08 12.25 21.09 12.68 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V12.08C19.67 12.03 19.34 12 19 12C15.13 12 12 15.13 12 19M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; -var mdiBookCogOutline = "M18 4H13V12L10.5 9.75L8 12V4H6V20H12.08C12.18 20.71 12.39 21.38 12.69 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V12.08C19.67 12.03 19.34 12 19 12C18.66 12 18.33 12.03 18 12.08V4M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; -var mdiBookCross = "M5.81,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20C20,21.05 19.05,22 18,22H6C4.95,22 4,21.05 4,20V4C4,3 4.83,2.09 5.81,2M13,10V13H10V15H13V20H15V15H18V13H15V10H13Z"; -var mdiBookEdit = "M19.39 10.74L11 19.13V22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V10.3C19.78 10.42 19.57 10.56 19.39 10.74M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47Z"; -var mdiBookEditOutline = "M6 20H11V22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V10.3C19.78 10.42 19.57 10.56 19.39 10.74L18 12.13V4H13V12L10.5 9.75L8 12V4H6V20M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96Z"; -var mdiBookEducation = "M8.82 17L13 19.28V22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V12.54L18.5 11.72L8.82 17M24 17L18.5 14L13 17L18.5 20L24 17M15 19.09V21.09L18.5 23L22 21.09V19.09L18.5 21L15 19.09Z"; -var mdiBookEducationOutline = "M6 20H13V22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V12.54L18.5 11.72L18 12V4H13V12L10.5 9.75L8 12V4H6V20M24 17L18.5 14L13 17L18.5 20L24 17M15 19.09V21.09L18.5 23L22 21.09V19.09L18.5 21L15 19.09Z"; -var mdiBookInformationVariant = "M18 2H12V9L9.5 7.5L7 9V2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.89 19.1 2 18 2M17.68 18.41C17.57 18.5 16.47 19.25 16.05 19.5C15.63 19.79 14 20.72 14.26 18.92C14.89 15.28 16.11 13.12 14.65 14.06C14.27 14.29 14.05 14.43 13.91 14.5C13.78 14.61 13.79 14.6 13.68 14.41S13.53 14.23 13.67 14.13C13.67 14.13 15.9 12.34 16.72 12.28C17.5 12.21 17.31 13.17 17.24 13.61C16.78 15.46 15.94 18.15 16.07 18.54C16.18 18.93 17 18.31 17.44 18C17.44 18 17.5 17.93 17.61 18.05C17.72 18.22 17.83 18.3 17.68 18.41M16.97 11.06C16.4 11.06 15.94 10.6 15.94 10.03C15.94 9.46 16.4 9 16.97 9C17.54 9 18 9.46 18 10.03C18 10.6 17.54 11.06 16.97 11.06Z"; -var mdiBookLock = "M14.2 14.5V14.74C13.5 15.34 13 16.24 13 17.2V20.7C13 21.16 13.1 21.6 13.27 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V10.11C19.68 10.04 19.34 10 19 10C16.4 10 14.2 12.06 14.2 14.5M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; -var mdiBookLockOpen = "M14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.7C13 21.16 13.1 21.6 13.27 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V9.11C19.68 9.04 19.34 9 19 9C16.4 9 14.2 11.06 14.2 13.5M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; -var mdiBookLockOpenOutline = "M13 20.7C13 21.16 13.1 21.6 13.27 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V9.11C19.68 9.04 19.34 9 19 9S18.32 9.04 18 9.11V4H13V12L10.5 9.75L8 12V4H6V20H13V20.7M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; -var mdiBookLockOutline = "M13 20.7C13 21.16 13.1 21.6 13.27 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V10.11C19.68 10.04 19.34 10 19 10S18.32 10.04 18 10.11V4H13V12L10.5 9.75L8 12V4H6V20H13V20.7M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; -var mdiBookMarker = "M13 15.5C13 17.78 14.7 20.41 15.91 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V10.22C19.5 10.08 19 10 18.5 10C15.5 10 13 12.5 13 15.5M22 15.5C22 18.1 18.5 22 18.5 22S15 18.1 15 15.5C15 13.6 16.6 12 18.5 12S22 13.6 22 15.5M19.7 15.6C19.7 15 19.1 14.4 18.5 14.4S17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8S19.8 16.2 19.7 15.6Z"; -var mdiBookMarkerOutline = "M14.55 20C15 20.76 15.5 21.44 15.91 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V10.22C19.5 10.08 19 10 18.5 10C18.33 10 18.17 10 18 10.03V4H13V12L10.5 9.75L8 12V4H6V20H14.55M22 15.5C22 18.1 18.5 22 18.5 22S15 18.1 15 15.5C15 13.6 16.6 12 18.5 12S22 13.6 22 15.5M19.7 15.6C19.7 15 19.1 14.4 18.5 14.4S17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8S19.8 16.2 19.7 15.6Z"; -var mdiBookMinus = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M15 18V20H23V18H15Z"; -var mdiBookMinusMultiple = "M13.09 20H5V6H3V20C3 21.11 3.9 22 5 22H13.81C13.44 21.39 13.2 20.71 13.09 20M19 2H14V7L12 5.5L10 7V2H9C7.9 2 7 2.9 7 4V16C7 17.11 7.9 18 9 18H13.09C13.64 14.73 16.74 12.53 20 13.08C20.34 13.14 20.68 13.23 21 13.34V4C21 2.9 20.11 2 19 2M23 18V20H15V18H23Z"; -var mdiBookMinusMultipleOutline = "M13.09 20H5V6H3V20C3 21.11 3.9 22 5 22H13.81C13.44 21.39 13.2 20.71 13.09 20M19 2H9C7.9 2 7 2.9 7 4V16C7 17.11 7.9 18 9 18H13.09C13.2 17.29 13.44 16.61 13.81 16H9V4H11V10L13.5 7.75L16 10V4H19V13C19.68 13 20.36 13.11 21 13.34V4C21 2.9 20.11 2 19 2M23 18V20H15V18H23Z"; -var mdiBookMinusOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M15 18V20H23V18H15Z"; -var mdiBookMultiple = "M19,18H9A2,2 0 0,1 7,16V4A2,2 0 0,1 9,2H10V7L12,5.5L14,7V2H19A2,2 0 0,1 21,4V16A2,2 0 0,1 19,18M17,20V22H5A2,2 0 0,1 3,20V6H5V20H17Z"; -var mdiBookMultipleOutline = "M19 2A2 2 0 0 1 21 4V16A2 2 0 0 1 19 18H9A2 2 0 0 1 7 16V4A2 2 0 0 1 9 2H19M19 4H16V10L13.5 7.75L11 10V4H9V16H19M3 20A2 2 0 0 0 5 22H17V20H5V6H3Z"; -var mdiBookMusic = "M13 20.5C13 21.03 13.09 21.53 13.26 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V11H16.5V16.11C14.5 16.57 13 18.36 13 20.5M20 13H18.5V18.21C18.19 18.07 17.86 18 17.5 18C16.12 18 15 19.12 15 20.5S16.12 23 17.5 23 20 21.88 20 20.5V15H22V13H20Z"; -var mdiBookMusicOutline = "M13 20.5C13 21.03 13.09 21.53 13.26 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V11H18V4H13V12L10.5 9.75L8 12V4H6V20H13.04C13.03 20.17 13 20.33 13 20.5M20 13H18.5V18.21C18.19 18.07 17.86 18 17.5 18C16.12 18 15 19.12 15 20.5S16.12 23 17.5 23 20 21.88 20 20.5V15H22V13H20Z"; -var mdiBookOff = "M18.68 2.12L12 8.8V2H18C18.24 2 18.46 2.05 18.68 2.12M9.5 7.5L7 9V2H6C4.89 2 4 2.9 4 4V16.8L11.88 8.93L9.5 7.5M21.61 1.73L1.89 21.46L3.16 22.73L4.54 21.35C4.9 21.75 5.42 22 6 22H18C19.11 22 20 21.11 20 20V5.89L22.89 3L21.61 1.73Z"; -var mdiBookOffOutline = "M6 14.8L4 16.8V4C4 2.9 4.89 2 6 2H18C18.24 2 18.47 2.04 18.68 2.12L16.8 4H13V7.8L10.79 10L10.5 9.75L8 12V4H6V14.8M22.89 3L20 5.89V20C20 21.11 19.11 22 18 22H6C5.42 22 4.9 21.75 4.54 21.35L3.16 22.73L1.89 21.46L21.61 1.73L22.89 3M18 7.89L6 19.89V20H18V7.89Z"; -var mdiBookOpen = "M13,12H20V13.5H13M13,9.5H20V11H13M13,14.5H20V16H13M21,4H3A2,2 0 0,0 1,6V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V6A2,2 0 0,0 21,4M21,19H12V6H21"; -var mdiBookOpenBlankVariant = "M21,5C19.89,4.65 18.67,4.5 17.5,4.5C15.55,4.5 13.45,4.9 12,6C10.55,4.9 8.45,4.5 6.5,4.5C4.55,4.5 2.45,4.9 1,6V20.65C1,20.9 1.25,21.15 1.5,21.15C1.6,21.15 1.65,21.1 1.75,21.1C3.1,20.45 5.05,20 6.5,20C8.45,20 10.55,20.4 12,21.5C13.35,20.65 15.8,20 17.5,20C19.15,20 20.85,20.3 22.25,21.05C22.35,21.1 22.4,21.1 22.5,21.1C22.75,21.1 23,20.85 23,20.6V6C22.4,5.55 21.75,5.25 21,5M21,18.5C19.9,18.15 18.7,18 17.5,18C15.8,18 13.35,18.65 12,19.5V8C13.35,7.15 15.8,6.5 17.5,6.5C18.7,6.5 19.9,6.65 21,7V18.5Z"; -var mdiBookOpenOutline = "M21,4H3A2,2 0 0,0 1,6V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V6A2,2 0 0,0 21,4M3,19V6H11V19H3M21,19H13V6H21V19M14,9.5H20V11H14V9.5M14,12H20V13.5H14V12M14,14.5H20V16H14V14.5Z"; -var mdiBookOpenPageVariant = "M19 2L14 6.5V17.5L19 13V2M6.5 5C4.55 5 2.45 5.4 1 6.5V21.16C1 21.41 1.25 21.66 1.5 21.66C1.6 21.66 1.65 21.59 1.75 21.59C3.1 20.94 5.05 20.5 6.5 20.5C8.45 20.5 10.55 20.9 12 22C13.35 21.15 15.8 20.5 17.5 20.5C19.15 20.5 20.85 20.81 22.25 21.56C22.35 21.61 22.4 21.59 22.5 21.59C22.75 21.59 23 21.34 23 21.09V6.5C22.4 6.05 21.75 5.75 21 5.5V19C19.9 18.65 18.7 18.5 17.5 18.5C15.8 18.5 13.35 19.15 12 20V6.5C10.55 5.4 8.45 5 6.5 5Z"; -var mdiBookOpenPageVariantOutline = "M19 1L14 6V17L19 12.5V1M21 5V18.5C19.9 18.15 18.7 18 17.5 18C15.8 18 13.35 18.65 12 19.5V6C10.55 4.9 8.45 4.5 6.5 4.5C4.55 4.5 2.45 4.9 1 6V20.65C1 20.9 1.25 21.15 1.5 21.15C1.6 21.15 1.65 21.1 1.75 21.1C3.1 20.45 5.05 20 6.5 20C8.45 20 10.55 20.4 12 21.5C13.35 20.65 15.8 20 17.5 20C19.15 20 20.85 20.3 22.25 21.05C22.35 21.1 22.4 21.1 22.5 21.1C22.75 21.1 23 20.85 23 20.6V6C22.4 5.55 21.75 5.25 21 5M10 18.41C8.75 18.09 7.5 18 6.5 18C5.44 18 4.18 18.19 3 18.5V7.13C3.91 6.73 5.14 6.5 6.5 6.5C7.86 6.5 9.09 6.73 10 7.13V18.41Z"; -var mdiBookOpenVariant = "M17.5 14.33C18.29 14.33 19.13 14.41 20 14.57V16.07C19.38 15.91 18.54 15.83 17.5 15.83C15.6 15.83 14.11 16.16 13 16.82V15.13C14.17 14.6 15.67 14.33 17.5 14.33M13 12.46C14.29 11.93 15.79 11.67 17.5 11.67C18.29 11.67 19.13 11.74 20 11.9V13.4C19.38 13.24 18.54 13.16 17.5 13.16C15.6 13.16 14.11 13.5 13 14.15M17.5 10.5C15.6 10.5 14.11 10.82 13 11.5V9.84C14.23 9.28 15.73 9 17.5 9C18.29 9 19.13 9.08 20 9.23V10.78C19.26 10.59 18.41 10.5 17.5 10.5M21 18.5V7C19.96 6.67 18.79 6.5 17.5 6.5C15.45 6.5 13.62 7 12 8V19.5C13.62 18.5 15.45 18 17.5 18C18.69 18 19.86 18.16 21 18.5M17.5 4.5C19.85 4.5 21.69 5 23 6V20.56C23 20.68 22.95 20.8 22.84 20.91C22.73 21 22.61 21.08 22.5 21.08C22.39 21.08 22.31 21.06 22.25 21.03C20.97 20.34 19.38 20 17.5 20C15.45 20 13.62 20.5 12 21.5C10.66 20.5 8.83 20 6.5 20C4.84 20 3.25 20.36 1.75 21.07C1.72 21.08 1.68 21.08 1.63 21.1C1.59 21.11 1.55 21.12 1.5 21.12C1.39 21.12 1.27 21.08 1.16 21C1.05 20.89 1 20.78 1 20.65V6C2.34 5 4.18 4.5 6.5 4.5C8.83 4.5 10.66 5 12 6C13.34 5 15.17 4.5 17.5 4.5Z"; -var mdiBookOutline = "M18,2A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H18M18,4H13V12L10.5,9.75L8,12V4H6V20H18V4Z"; -var mdiBookPlay = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M17 16V22L22 19L17 16Z"; -var mdiBookPlayOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M17 16V22L22 19L17 16Z"; -var mdiBookPlus = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; -var mdiBookPlusMultiple = "M13.09 20H5V6H3V20A2 2 0 0 0 5 22H13.81A5.5 5.5 0 0 1 13.09 20M19 2H14V7L12 5.5L10 7V2H9A2 2 0 0 0 7 4V16A2 2 0 0 0 9 18H13.09A6 6 0 0 1 21 13.34V4A2 2 0 0 0 19 2M20 15V18H23V20H20V23H18V20H15V18H18V15Z"; -var mdiBookPlusMultipleOutline = "M13.09 20H5V6H3V20A2 2 0 0 0 5 22H13.81A5.5 5.5 0 0 1 13.09 20M19 2H9A2 2 0 0 0 7 4V16A2 2 0 0 0 9 18H13.09A5.5 5.5 0 0 1 13.81 16H9V4H11V10L13.5 7.75L16 10V4H19V13A6 6 0 0 1 21 13.34V4A2 2 0 0 0 19 2M20 15V18H23V20H20V23H18V20H15V18H18V15Z"; -var mdiBookPlusOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; -var mdiBookRefresh = "M12 18.5C12 19.79 12.39 21 13.04 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V12.18C19.5 12.07 19 12 18.5 12C14.91 12 12 14.91 12 18.5M22 18.5V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22Z"; -var mdiBookRefreshOutline = "M12.18 20C12.36 20.72 12.65 21.39 13.04 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V12.18C19.5 12.07 19 12 18.5 12C18.33 12 18.17 12 18 12.03V4H13V12L10.5 9.75L8 12V4H6V20H12.18M22 18.5V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22Z"; -var mdiBookRemove = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; -var mdiBookRemoveMultiple = "M13.09 20H5V6H3V20A2 2 0 0 0 5 22H13.81A5.5 5.5 0 0 1 13.09 20M19 2H14V7L12 5.5L10 7V2H9A2 2 0 0 0 7 4V16A2 2 0 0 0 9 18H13.09A6 6 0 0 1 21 13.34V4A2 2 0 0 0 19 2M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z"; -var mdiBookRemoveMultipleOutline = "M13.09 20H5V6H3V20A2 2 0 0 0 5 22H13.81A5.5 5.5 0 0 1 13.09 20M19 2H9A2 2 0 0 0 7 4V16A2 2 0 0 0 9 18H13.09A5.5 5.5 0 0 1 13.81 16H9V4H11V10L13.5 7.75L16 10V4H19V13A6 6 0 0 1 21 13.34V4A2 2 0 0 0 19 2M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z"; -var mdiBookRemoveOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; -var mdiBookSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M6,22A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V11.81C18.83,10.69 17.25,10 15.5,10A6.5,6.5 0 0,0 9,16.5C9,18.81 10.21,20.85 12.03,22H6Z"; -var mdiBookSearchOutline = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M13,4V12L10.5,9.75L8,12V4H6V20H10C10.54,20.81 11.23,21.5 12.03,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H18A2,2 0 0,1 20,4V11.81C19.42,11.26 18.75,10.81 18,10.5V4H13Z"; -var mdiBookSettings = "M20 2V18C20 19.11 19.11 20 18 20H6C4.89 20 4 19.11 4 18V2C4 .895 4.89 0 6 0H7V7L9.5 5.5L12 7V0H18C19.1 0 20 .89 20 2M7 24H9V22H7V24M15 24H17V22H15V24M11 24H13V22H11V24Z"; -var mdiBookSettingsOutline = "M18 0H6C4.89 0 4 .895 4 2V18C4 19.11 4.89 20 6 20H18C19.11 20 20 19.11 20 18V2C20 .895 19.11 0 18 0M18 18H6V2H8V10L10.5 7.75L13 10V2H18V18M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22Z"; -var mdiBookSync = "M13 17.5C13 19.25 13.69 20.83 14.82 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V11.03C19.84 11 19.67 11 19.5 11C15.91 11 13 13.91 13 17.5M19 20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20M19 13.5V12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5Z"; -var mdiBookSyncOutline = "M13.5 20C13.81 20.75 14.26 21.42 14.82 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V11.03C19.84 11 19.67 11 19.5 11C19 11 18.5 11.07 18 11.18V4H13V12L10.5 9.75L8 12V4H6V20H13.5M19 20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20M19 13.5V12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5Z"; -var mdiBookVariant = "M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z"; -var mdiBookVariantMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,12L17.5,10.5L15,12V4H20V12Z"; -var mdiBookmark = "M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z"; -var mdiBookmarkCheck = "M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,14L17.25,7.76L15.84,6.34L11,11.18L8.41,8.59L7,10L11,14Z"; -var mdiBookmarkCheckOutline = "M9.47 9.65L8.06 11.07L11 14L16.19 8.82L14.78 7.4L11 11.18M17 3H7C5.9 3 5 3.9 5 5L5 21L12 18L19 21V5C19 3.9 18.1 3 17 3M17 18L12 15.82L7 18V5H17Z"; -var mdiBookmarkMinus = "M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5A2,2 0 0,0 17,3M15,11H9V9H15V11Z"; -var mdiBookmarkMinusOutline = "M9,11V9H15V11H9M19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17C18.11,3 19,3.9 19,5M17,5H7V18L12,15.82L17,18V5Z"; -var mdiBookmarkMultiple = "M15,5A2,2 0 0,1 17,7V23L10,20L3,23V7C3,5.89 3.9,5 5,5H15M9,1H19A2,2 0 0,1 21,3V19L19,18.13V3H7A2,2 0 0,1 9,1Z"; -var mdiBookmarkMultipleOutline = "M9,1H19A2,2 0 0,1 21,3V19L19,18.13V3H7A2,2 0 0,1 9,1M15,20V7H5V20L10,17.82L15,20M15,5C16.11,5 17,5.9 17,7V23L10,20L3,23V7A2,2 0 0,1 5,5H15Z"; -var mdiBookmarkMusic = "M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,11A2,2 0 0,0 9,13A2,2 0 0,0 11,15A2,2 0 0,0 13,13V8H16V6H12V11.27C11.71,11.1 11.36,11 11,11Z"; -var mdiBookmarkMusicOutline = "M7 3C5.9 3 5 3.9 5 5V21L12 18L19 21V5C19 3.89 18.1 3 17 3H7M7 5H17V18L12 15.82L7 18V5M12 6V11.3C11.7 11.1 11.4 11 11 11C9.9 11 9 11.9 9 13C9 14.11 9.9 15 11 15C12.11 15 13 14.11 13 13V8H15V6H12Z"; -var mdiBookmarkOff = "M20,20.72L18.73,22L16.78,20.05L12,18L5,21V8.27L2,5.27L3.28,4L20,20.72M19,17.16V5C19,3.89 18.1,3 17,3H7C6.41,3 5.89,3.27 5.5,3.68L19,17.16Z"; -var mdiBookmarkOffOutline = "M3.28,4L2,5.27L5,8.27V21L12,18L16.78,20.05L18.73,22L20,20.72L3.28,4M7,18V10.27L13,16.25L12,15.82L7,18M7,5.16L5.5,3.67C5.88,3.26 6.41,3 7,3H17A2,2 0 0,1 19,5V17.16L17,15.16V5H7V5.16Z"; -var mdiBookmarkOutline = "M17,18L12,15.82L7,18V5H17M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z"; -var mdiBookmarkPlus = "M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7V9H9V11H11V13H13V11H15V9H13V7H11Z"; -var mdiBookmarkPlusOutline = "M17,18V5H7V18L12,15.82L17,18M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7H13V9H15V11H13V13H11V11H9V9H11V7Z"; -var mdiBookmarkRemove = "M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M8.17,8.58L10.59,11L8.17,13.41L9.59,14.83L12,12.41L14.41,14.83L15.83,13.41L13.41,11L15.83,8.58L14.41,7.17L12,9.58L9.59,7.17L8.17,8.58Z"; -var mdiBookmarkRemoveOutline = "M7 3C5.9 3 5 3.9 5 5V21L12 18L19 21V5C19 3.89 18.1 3 17 3H7M7 5H17V18L12 15.82L7 18V5M9.88 7.47L8.47 8.88L10.59 11L8.47 13.12L9.88 14.54L12 12.42L14.12 14.53L15.54 13.12L13.42 11L15.53 8.88L14.12 7.47L12 9.59L9.88 7.47Z"; -var mdiBookshelf = "M9 3V18H12V3H9M12 5L16 18L19 17L15 4L12 5M5 5V18H8V5H5M3 19V21H21V19H3Z"; -var mdiBoomGate = "M20,9H8.22C7.11,7.77 5.21,7.68 4,8.8C3.36,9.36 3,10.16 3,11V20A1,1 0 0,0 2,21V22H10V21A1,1 0 0,0 9,20V13H20A2,2 0 0,0 22,11A2,2 0 0,0 20,9M6,12.5A1.5,1.5 0 0,1 4.5,11A1.5,1.5 0 0,1 6,9.5A1.5,1.5 0 0,1 7.5,11A1.5,1.5 0 0,1 6,12.5M10.5,12L9,10H10.5L12,12H10.5M14.5,12L13,10H14.5L16,12H14.5M18.5,12L17,10H18.5L20,12H18.5Z"; -var mdiBoomGateAlert = "M19.9 3C19.3 2 18.1 1.7 17.2 2.3L6.9 8.2C6.6 8.1 6.3 8 6 8C4.3 8 3 9.3 3 11V20C2.4 20 2 20.4 2 21V22H10V21C10 20.4 9.6 20 9 20V11.6L19.1 5.8C20.1 5.2 20.4 4 19.9 3M6 12.5C5.2 12.5 4.5 11.8 4.5 11S5.2 9.5 6 9.5 7.5 10.2 7.5 11 6.8 12.5 6 12.5M10.4 9.6L8.1 8.6L9.4 7.8L11.7 8.8L10.4 9.6M13.9 7.6L11.6 6.6L12.9 5.8L15.2 6.8L13.9 7.6M17.3 5.6L15 4.6L16.3 3.8L18.6 4.8L17.3 5.6M20 18H18V20H20V18M20 10H18V16H20V10Z"; -var mdiBoomGateAlertOutline = "M19.9 3C19.3 2 18.1 1.7 17.2 2.3L6.9 8.2C6.6 8.1 6.3 8 6 8C4.3 8 3 9.3 3 11V20C2.4 20 2 20.4 2 21V22H10V21C10 20.4 9.6 20 9 20V11.6L19.1 5.8C20.1 5.2 20.4 4 19.9 3M7.5 20H4.5V13.6C5.4 14.1 6.6 14.1 7.5 13.6V20M6 12.5C5.2 12.5 4.5 11.8 4.5 11S5.2 9.5 6 9.5 7.5 10.2 7.5 11 6.8 12.5 6 12.5M10.4 9.6L8.1 8.6L9.4 7.8L11.7 8.8L10.4 9.6M13.9 7.6L11.6 6.6L12.9 5.8L15.2 6.8L13.9 7.6M17.3 5.6L15 4.6L16.3 3.8L18.6 4.8L17.3 5.6M20 16H18V10H20V16M20 20H18V18H20V20Z"; -var mdiBoomGateDown = "M19.86,3C19.31,2.04 18.09,1.71 17.12,2.27L6.92,8.16C6.62,8.06 6.31,8 6,8A3,3 0 0,0 3,11V20A1,1 0 0,0 2,21V22H10V21A1,1 0 0,0 9,20V11.58L19.12,5.73C20.08,5.18 20.41,3.96 19.86,3M6,12.5A1.5,1.5 0 0,1 4.5,11A1.5,1.5 0 0,1 6,9.5A1.5,1.5 0 0,1 7.5,11A1.5,1.5 0 0,1 6,12.5M10.4,9.62L8.1,8.62L9.4,7.87L11.7,8.87L10.4,9.62M13.86,7.62L11.56,6.62L12.86,5.87L15.16,6.87L13.86,7.62M17.33,5.62L15.03,4.62L16.33,3.87L18.62,4.87L17.33,5.62M17,20L12,15H15V11H19V15H22L17,20"; -var mdiBoomGateDownOutline = "M19.86,3C20.41,3.96 20.08,5.18 19.12,5.73L9,11.58V20A1,1 0 0,1 10,21V22H2V21A1,1 0 0,1 3,20V11A3,3 0 0,1 6,8C6.31,8 6.62,8.06 6.92,8.16L17.12,2.27C18.09,1.71 19.31,2.04 19.86,3M7.5,20V13.6C6.57,14.14 5.43,14.14 4.5,13.6V20H7.5M6,12.5A1.5,1.5 0 0,0 7.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,11A1.5,1.5 0 0,0 6,12.5M10.4,9.62L11.7,8.87L9.4,7.87L8.1,8.62L10.4,9.62M13.86,7.62L15.16,6.87L12.86,5.87L11.56,6.62L13.86,7.62M17.33,5.62L18.62,4.87L16.33,3.87L15.03,4.62L17.33,5.62M16,11.16H18V16.17L21,16.16L17,20L13,16.16L16,16.17V11.16Z"; -var mdiBoomGateOutline = "M20,9H8.22C7.11,7.77 5.21,7.68 4,8.8C3.36,9.36 3,10.16 3,11V20A1,1 0 0,0 2,21V22H10V21A1,1 0 0,0 9,20V13H20A2,2 0 0,0 22,11A2,2 0 0,0 20,9M7.5,20H4.5V13.6C5.43,14.14 6.57,14.14 7.5,13.6V20M6,12.5A1.5,1.5 0 0,1 4.5,11A1.5,1.5 0 0,1 6,9.5A1.5,1.5 0 0,1 7.5,11A1.5,1.5 0 0,1 6,12.5M10.5,12L9,10H10.5L12,12H10.5M14.5,12L13,10H14.5L16,12H14.5M18.5,12L17,10H18.5L20,12H18.5Z"; -var mdiBoomGateUp = "M19.86,3C19.31,2.04 18.09,1.71 17.12,2.27L6.92,8.16C6.62,8.06 6.31,8 6,8A3,3 0 0,0 3,11V20A1,1 0 0,0 2,21V22H10V21A1,1 0 0,0 9,20V11.58L19.12,5.73C20.08,5.18 20.41,3.96 19.86,3M6,12.5A1.5,1.5 0 0,1 4.5,11A1.5,1.5 0 0,1 6,9.5A1.5,1.5 0 0,1 7.5,11A1.5,1.5 0 0,1 6,12.5M10.4,9.62L8.1,8.62L9.4,7.87L11.7,8.87L10.4,9.62M13.86,7.62L11.56,6.62L12.86,5.87L15.16,6.87L13.86,7.62M17.33,5.62L15.03,4.62L16.33,3.87L18.62,4.87L17.33,5.62M17,11L22,16H19V20H15V16H12L17,11"; -var mdiBoomGateUpOutline = "M19.86,3C20.41,3.96 20.08,5.18 19.12,5.73L9,11.58V20A1,1 0 0,1 10,21V22H2V21A1,1 0 0,1 3,20V11A3,3 0 0,1 6,8C6.31,8 6.62,8.06 6.92,8.16L17.12,2.27C18.09,1.71 19.31,2.04 19.86,3M7.5,20V13.6C6.57,14.14 5.43,14.14 4.5,13.6V20H7.5M6,12.5A1.5,1.5 0 0,0 7.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,11A1.5,1.5 0 0,0 6,12.5M10.4,9.62L11.7,8.87L9.4,7.87L8.1,8.62L10.4,9.62M13.86,7.62L15.16,6.87L12.86,5.87L11.56,6.62L13.86,7.62M17.33,5.62L18.62,4.87L16.33,3.87L15.03,4.62L17.33,5.62M16,20V15H13L17,11.16L21,15H18V20H16Z"; -var mdiBoombox = "M7,5L5,7V8H3A1,1 0 0,0 2,9V17A1,1 0 0,0 3,18H21A1,1 0 0,0 22,17V9A1,1 0 0,0 21,8H19V7L17,5H7M7,7H17V8H7V7M11,9H13A0.5,0.5 0 0,1 13.5,9.5A0.5,0.5 0 0,1 13,10H11A0.5,0.5 0 0,1 10.5,9.5A0.5,0.5 0 0,1 11,9M7.5,10.5A3,3 0 0,1 10.5,13.5A3,3 0 0,1 7.5,16.5A3,3 0 0,1 4.5,13.5A3,3 0 0,1 7.5,10.5M16.5,10.5A3,3 0 0,1 19.5,13.5A3,3 0 0,1 16.5,16.5A3,3 0 0,1 13.5,13.5A3,3 0 0,1 16.5,10.5M7.5,12A1.5,1.5 0 0,0 6,13.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 9,13.5A1.5,1.5 0 0,0 7.5,12M16.5,12A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,13.5A1.5,1.5 0 0,0 16.5,12Z"; -var mdiBoomerang = "M10 2H4C2.9 2 2 2.9 2 4S2.9 6 4 6H8L10 2M18 2C20.2 2 22 3.8 22 6V12L18 14C18 9.6 14.4 6 10 6L12 2H18M18 20V16L22 14V20C22 21.1 21.1 22 20 22S18 21.1 18 20Z"; -var mdiBootstrap = "M11.79 11.5H9.72V8.19H12.19C13.45 8.19 14.15 8.75 14.15 9.78C14.15 10.9 13.32 11.5 11.79 11.5M12.16 12.63H9.72V16.27L12.28 16.27C13.84 16.27 14.66 15.64 14.66 14.44S13.81 12.63 12.16 12.63M22 5.31V18.69C22 20.5 20.5 22 18.69 22H5.31C3.5 22 2 20.5 2 18.69V5.31C2 3.5 3.5 2 5.31 2H18.69C20.5 2 22 3.5 22 5.31M16 14.5C16 13.12 15.08 12.13 13.67 11.95V11.89C14.67 11.71 15.46 10.71 15.46 9.63C15.46 8.08 14.26 7.05 12.5 7.05H8.43V17.41H12.47C14.68 17.41 16 16.32 16 14.5Z"; -var mdiBorderAll = "M19,11H13V5H19M19,19H13V13H19M11,11H5V5H11M11,19H5V13H11M3,21H21V3H3V21Z"; -var mdiBorderAllVariant = "M3,21V3H21V21H3M5,5V19H19V5H5Z"; -var mdiBorderBottom = "M5,15H3V17H5M3,21H21V19H3M5,11H3V13H5M19,9H21V7H19M19,5H21V3H19M5,7H3V9H5M19,17H21V15H19M19,13H21V11H19M17,3H15V5H17M13,3H11V5H13M17,11H15V13H17M13,7H11V9H13M5,3H3V5H5M13,11H11V13H13M9,3H7V5H9M13,15H11V17H13M9,11H7V13H9V11Z"; -var mdiBorderBottomVariant = "M5,15H3V17H5M3,21H21V19H3M5,11H3V13H5M19,9H21V7H19M19,5H21V3H19M5,7H3V9H5M19,17H21V15H19M19,13H21V11H19M17,3H15V5H17M13,3H11V5H13M5,3H3V5H5M9,3H7V5H9"; -var mdiBorderColor = "M20.71,4.04C21.1,3.65 21.1,3 20.71,2.63L18.37,0.29C18,-0.1 17.35,-0.1 16.96,0.29L15,2.25L18.75,6M17.75,7L14,3.25L4,13.25V17H7.75L17.75,7Z"; -var mdiBorderHorizontal = "M19,21H21V19H19M15,21H17V19H15M11,17H13V15H11M19,9H21V7H19M19,5H21V3H19M3,13H21V11H3M11,21H13V19H11M19,17H21V15H19M13,3H11V5H13M13,7H11V9H13M17,3H15V5H17M9,3H7V5H9M5,3H3V5H5M7,21H9V19H7M3,17H5V15H3M5,7H3V9H5M3,21H5V19H3V21Z"; -var mdiBorderInside = "M19,17H21V15H19M19,21H21V19H19M13,3H11V11H3V13H11V21H13V13H21V11H13M15,21H17V19H15M19,5H21V3H19M19,9H21V7H19M17,3H15V5H17M5,3H3V5H5M9,3H7V5H9M3,17H5V15H3M5,7H3V9H5M7,21H9V19H7M3,21H5V19H3V21Z"; -var mdiBorderLeft = "M15,5H17V3H15M15,13H17V11H15M19,21H21V19H19M19,13H21V11H19M19,5H21V3H19M19,17H21V15H19M15,21H17V19H15M19,9H21V7H19M3,21H5V3H3M7,13H9V11H7M7,5H9V3H7M7,21H9V19H7M11,13H13V11H11M11,9H13V7H11M11,5H13V3H11M11,17H13V15H11M11,21H13V19H11V21Z"; -var mdiBorderLeftVariant = "M15,5H17V3H15M19,21H21V19H19M19,13H21V11H19M19,5H21V3H19M19,17H21V15H19M15,21H17V19H15M19,9H21V7H19M3,21H5V3H3M7,5H9V3H7M7,21H9V19H7M11,5H13V3H11M11,21H13V19H11V21Z"; -var mdiBorderNone = "M15,5H17V3H15M15,13H17V11H15M15,21H17V19H15M11,5H13V3H11M19,5H21V3H19M11,9H13V7H11M19,9H21V7H19M19,21H21V19H19M19,13H21V11H19M19,17H21V15H19M11,13H13V11H11M3,5H5V3H3M3,9H5V7H3M3,13H5V11H3M3,17H5V15H3M3,21H5V19H3M11,21H13V19H11M11,17H13V15H11M7,21H9V19H7M7,13H9V11H7M7,5H9V3H7V5Z"; -var mdiBorderNoneVariant = "M15,5H17V3H15M15,21H17V19H15M11,5H13V3H11M19,5H21V3H19M19,9H21V7H19M19,21H21V19H19M19,13H21V11H19M19,17H21V15H19M3,5H5V3H3M3,9H5V7H3M3,13H5V11H3M3,17H5V15H3M3,21H5V19H3M11,21H13V19H11M7,21H9V19H7M7,5H9V3H7V5Z"; -var mdiBorderOutside = "M9,11H7V13H9M13,15H11V17H13M19,19H5V5H19M3,21H21V3H3M17,11H15V13H17M13,11H11V13H13M13,7H11V9H13V7Z"; -var mdiBorderRight = "M11,9H13V7H11M11,5H13V3H11M11,13H13V11H11M15,5H17V3H15M15,21H17V19H15M19,21H21V3H19M15,13H17V11H15M11,17H13V15H11M3,9H5V7H3M3,17H5V15H3M3,13H5V11H3M11,21H13V19H11M3,21H5V19H3M7,13H9V11H7M7,5H9V3H7M3,5H5V3H3M7,21H9V19H7V21Z"; -var mdiBorderRightVariant = "M11,5H13V3H11M15,5H17V3H15M15,21H17V19H15M19,21H21V3H19M3,9H5V7H3M3,17H5V15H3M3,13H5V11H3M11,21H13V19H11M3,21H5V19H3M7,5H9V3H7M3,5H5V3H3M7,21H9V19H7V21Z"; -var mdiBorderStyle = "M15,21H17V19H15M19,21H21V19H19M7,21H9V19H7M11,21H13V19H11M19,17H21V15H19M19,13H21V11H19M3,3V21H5V5H21V3M19,9H21V7H19"; -var mdiBorderTop = "M15,13H17V11H15M19,21H21V19H19M11,9H13V7H11M15,21H17V19H15M19,17H21V15H19M3,5H21V3H3M19,13H21V11H19M19,9H21V7H19M11,17H13V15H11M3,9H5V7H3M3,13H5V11H3M3,21H5V19H3M3,17H5V15H3M11,21H13V19H11M11,13H13V11H11M7,13H9V11H7M7,21H9V19H7V21Z"; -var mdiBorderTopVariant = "M19,21H21V19H19M15,21H17V19H15M19,17H21V15H19M3,5H21V3H3M19,13H21V11H19M19,9H21V7H19M3,9H5V7H3M3,13H5V11H3M3,21H5V19H3M3,17H5V15H3M11,21H13V19H11M7,21H9V19H7V21Z"; -var mdiBorderVertical = "M15,13H17V11H15M15,21H17V19H15M15,5H17V3H15M19,9H21V7H19M19,5H21V3H19M19,13H21V11H19M19,21H21V19H19M11,21H13V3H11M19,17H21V15H19M7,5H9V3H7M3,17H5V15H3M3,21H5V19H3M3,13H5V11H3M7,13H9V11H7M7,21H9V19H7M3,5H5V3H3M3,9H5V7H3V9Z"; -var mdiBottleSoda = "M15 11V20A2 2 0 0 1 13 22H11A2 2 0 0 1 9 20V11A2 2 0 0 1 9.6 9.58C11.1 7.89 11 4 11 4H10V2H14V4H13S12.9 7.89 14.4 9.58A2 2 0 0 1 15 11Z"; -var mdiBottleSodaClassic = "M15 13.77A3 3 0 0 0 15 18.23V20A2 2 0 0 1 13 22H11A2 2 0 0 1 9 20V18.23A3 3 0 0 0 9 13.77V9A12.28 12.28 0 0 0 10.91 4H10V2H14V4H13.09A12.28 12.28 0 0 0 15 9Z"; -var mdiBottleSodaClassicOutline = "M10 2V4H10.91C10.65 5.79 9 7.5 8 9V13.77C9.32 14.96 9.32 17.04 8 18.23V20C8 21.11 8.9 22 10 22H14C15.11 22 16 21.11 16 20V18.23C14.68 17.04 14.68 14.96 16 13.77V9C15 7.5 13.35 5.79 13.09 4H14V2M12 6.5C12.24 7 13.54 8.5 13.9 8.91L14 9V13C13.35 13.87 13 14.92 13 16C13 17.08 13.35 18.13 14 19V20H10V19C10.65 18.13 11 17.08 11 16C11 14.92 10.65 13.87 10 13V9L10.1 8.91C10.46 8.5 11.76 7 12 6.5Z"; -var mdiBottleSodaOutline = "M14.4 9.58C12.9 7.89 13 4 13 4H14V2H10V4H11S11.1 7.89 9.6 9.58A2 2 0 0 0 9 11V20A2 2 0 0 0 11 22H13A2 2 0 0 0 15 20V11A2 2 0 0 0 14.4 9.58M13 20H11V11L11.1 10.91A6.26 6.26 0 0 0 12 9.5A6.26 6.26 0 0 0 12.9 10.91L13 11Z"; -var mdiBottleTonic = "M13 4H11L10 2H14L13 4M19 13V22H5V13C5 10.24 7.24 8 10 8V6H9V5H15V6H14V8C16.76 8 19 10.24 19 13Z"; -var mdiBottleTonicOutline = "M13 4H11L10 2H14L13 4M19 13V22H5V13C5 10.24 7.24 8 10 8V6H9V5H15V6H14V8C16.76 8 19 10.24 19 13M17 13C17 11.35 15.65 10 14 10H10C8.35 10 7 11.35 7 13V20H17V13Z"; -var mdiBottleTonicPlus = "M13 4H11L10 2H14L13 4M14 8V6H15V5H9V6H10V8C7.24 8 5 10.24 5 13V22H19V13C19 10.24 16.76 8 14 8M16 17H13V20H11V17H8V15H11V12H13V15H16V17Z"; -var mdiBottleTonicPlusOutline = "M13 4H11L10 2H14L13 4M19 13V22H5V13C5 10.24 7.24 8 10 8V6H9V5H15V6H14V8C16.76 8 19 10.24 19 13M17 13C17 11.35 15.65 10 14 10H10C8.35 10 7 11.35 7 13V20H17V13M15 16H13V18H11V16H9V14H11V12H13V14H15V16Z"; -var mdiBottleTonicSkull = "M19 13V22H5V13C5 10.24 7.24 8 10 8V6H9V5H15V6H14V8C16.76 8 19 10.24 19 13M13 4L14 2H10L11 4H13M12 11C9.79 11 8 12.79 8 15C8 16 8.39 16.9 9 17.59V19H10.25V17.5H11.38V19H12.63V17.5H13.75V19H15V17.59C15.61 16.9 16 16 16 15C16 12.79 14.21 11 12 11M10.5 15C9.95 15 9.5 14.55 9.5 14S9.95 13 10.5 13 11.5 13.45 11.5 14 11.05 15 10.5 15M11.25 16.25L12 15L12.75 16.25H11.25M13.5 15C12.95 15 12.5 14.55 12.5 14S12.95 13 13.5 13 14.5 13.45 14.5 14 14.05 15 13.5 15Z"; -var mdiBottleTonicSkullOutline = "M13 4H11L10 2H14L13 4M14 8V6H15V5H9V6H10V8C7.24 8 5 10.24 5 13V22H19V13C19 10.24 16.76 8 14 8M17 20H7V13C7 11.35 8.35 10 10 10H14C15.65 10 17 11.35 17 13V20M12 11C9.79 11 8 12.79 8 15C8 16 8.39 16.9 9 17.59V19H10.25V17.5H11.38V19H12.63V17.5H13.75V19H15V17.59C15.61 16.9 16 16 16 15C16 12.79 14.21 11 12 11M10.5 15C9.95 15 9.5 14.55 9.5 14S9.95 13 10.5 13 11.5 13.45 11.5 14 11.05 15 10.5 15M11.25 16.25L12 15L12.75 16.25H11.25M13.5 15C12.95 15 12.5 14.55 12.5 14S12.95 13 13.5 13 14.5 13.45 14.5 14 14.05 15 13.5 15Z"; -var mdiBottleWine = "M10,22A1,1 0 0,1 9,21V11C9,9 10,7.25 11,7V2.5A0.5,0.5 0 0,1 11.5,2H12.5A0.5,0.5 0 0,1 13,2.5V7C14,7.25 15,9 15,11V21A1,1 0 0,1 14,22H10Z"; -var mdiBottleWineOutline = "M11.5 2C11.22 2 11 2.22 11 2.5V7C10.93 7 10.85 7 10.78 7.03C9.82 7.27 9.21 8 8.76 8.89C8.3 9.76 8 10.84 8 12C8.05 15 8 18.03 8 21C8 21.55 8.45 22 9 22C11 22 13 22 15 22C15.55 22 16 21.55 16 21C16.04 18 16 15 16 12C16 10.84 15.74 9.76 15.28 8.88C14.83 8 14.22 7.27 13.26 7.04C13.18 7 13.05 7 13 7V2.5C13 2.22 12.78 2 12.5 2M12 8.85C12.32 8.85 12.63 8.9 12.78 9C12.85 9.03 13.2 9.26 13.5 9.81C13.78 10.37 14 11.17 14 12V20H10V12C10 11.17 10.22 10.37 10.5 9.81C10.8 9.26 11.15 9.03 11.22 9C11.36 8.9 11.68 8.85 12 8.85Z"; -var mdiBowTie = "M15,14L21,17V7L15,10V14M9,14L3,17V7L9,10V14M10,10H14V14H10V10Z"; -var mdiBowl = "M22 15C22 18.9 18.9 22 15 22H9C5.1 22 2 18.9 2 15V12H22V15Z"; -var mdiBowlMix = "M16.2 11L20.3 4.5L22 5.5L18.6 11H16.2M15.6 12H2V15C2 18.9 5.1 22 9 22H15C18.9 22 22 18.9 22 15V12H15.6Z"; -var mdiBowlMixOutline = "M15.6 12H2V15C2 18.9 5.1 22 9 22H15C18.9 22 22 18.9 22 15V12H15.6M20 15C20 17.8 17.8 20 15 20H9C6.2 20 4 17.8 4 15V14H20V15M16.2 11L20.3 4.4L22 5.5L18.6 11H16.2Z"; -var mdiBowlOutline = "M2 12V15C2 18.9 5.1 22 9 22H15C18.9 22 22 18.9 22 15V12H2M4 14H20V15C20 17.8 17.8 20 15 20H9C6.2 20 4 17.8 4 15V14Z"; -var mdiBowling = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12.5,11A1.5,1.5 0 0,0 11,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,12.5A1.5,1.5 0 0,0 12.5,11M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M5.93,8.5C5.38,9.45 5.71,10.67 6.66,11.22C7.62,11.78 8.84,11.45 9.4,10.5C9.95,9.53 9.62,8.31 8.66,7.76C7.71,7.21 6.5,7.53 5.93,8.5Z"; -var mdiBox = "M15.39,14.04V14.04C15.39,12.62 14.24,11.47 12.82,11.47C11.41,11.47 10.26,12.62 10.26,14.04V14.04C10.26,15.45 11.41,16.6 12.82,16.6C14.24,16.6 15.39,15.45 15.39,14.04M17.1,14.04C17.1,16.4 15.18,18.31 12.82,18.31C11.19,18.31 9.77,17.39 9.05,16.04C8.33,17.39 6.91,18.31 5.28,18.31C2.94,18.31 1.04,16.43 1,14.11V14.11H1V7H1V7C1,6.56 1.39,6.18 1.86,6.18C2.33,6.18 2.7,6.56 2.71,7V7H2.71V10.62C3.43,10.08 4.32,9.76 5.28,9.76C6.91,9.76 8.33,10.68 9.05,12.03C9.77,10.68 11.19,9.76 12.82,9.76C15.18,9.76 17.1,11.68 17.1,14.04V14.04M7.84,14.04V14.04C7.84,12.62 6.69,11.47 5.28,11.47C3.86,11.47 2.71,12.62 2.71,14.04V14.04C2.71,15.45 3.86,16.6 5.28,16.6C6.69,16.6 7.84,15.45 7.84,14.04M22.84,16.96V16.96C22.95,17.12 23,17.3 23,17.47C23,17.73 22.88,18 22.66,18.15C22.5,18.26 22.33,18.32 22.15,18.32C21.9,18.32 21.65,18.21 21.5,18L19.59,15.47L17.7,18V18C17.53,18.21 17.28,18.32 17.03,18.32C16.85,18.32 16.67,18.26 16.5,18.15C16.29,18 16.17,17.72 16.17,17.46C16.17,17.29 16.23,17.11 16.33,16.96V16.96H16.33V16.96L18.5,14.04L16.33,11.11V11.11H16.33V11.11C16.22,10.96 16.17,10.79 16.17,10.61C16.17,10.35 16.29,10.1 16.5,9.93C16.89,9.65 17.41,9.72 17.7,10.09V10.09L19.59,12.61L21.5,10.09C21.76,9.72 22.29,9.65 22.66,9.93C22.89,10.1 23,10.36 23,10.63C23,10.8 22.95,10.97 22.84,11.11V11.11H22.84V11.11L20.66,14.04L22.84,16.96V16.96H22.84Z"; -var mdiBoxCutter = "M7.22,11.91C6.89,12.24 6.71,12.65 6.66,13.08L12.17,15.44L20.66,6.96C21.44,6.17 21.44,4.91 20.66,4.13L19.24,2.71C18.46,1.93 17.2,1.93 16.41,2.71L7.22,11.91M5,16V21.75L10.81,16.53L5.81,14.53L5,16M17.12,4.83C17.5,4.44 18.15,4.44 18.54,4.83C18.93,5.23 18.93,5.86 18.54,6.25C18.15,6.64 17.5,6.64 17.12,6.25C16.73,5.86 16.73,5.23 17.12,4.83Z"; -var mdiBoxCutterOff = "M20.84 22.73L12.86 14.75L12.17 15.44L6.66 13.08C6.71 12.65 6.89 12.24 7.22 11.91L8.62 10.5L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M15.41 12.21L11.16 7.96L16.41 2.71C17.2 1.93 18.46 1.93 19.24 2.71L20.66 4.13C21.44 4.91 21.44 6.17 20.66 6.96L15.41 12.21M17.12 6.25C17.5 6.64 18.15 6.64 18.54 6.25C18.93 5.86 18.93 5.23 18.54 4.83C18.15 4.44 17.5 4.44 17.12 4.83C16.73 5.23 16.73 5.86 17.12 6.25M5 16V21.75L10.81 16.53L5.81 14.53L5 16Z"; -var mdiBoxShadow = "M3,3H18V18H3V3M19,19H21V21H19V19M19,16H21V18H19V16M19,13H21V15H19V13M19,10H21V12H19V10M19,7H21V9H19V7M16,19H18V21H16V19M13,19H15V21H13V19M10,19H12V21H10V19M7,19H9V21H7V19Z"; -var mdiBoxingGlove = "M19,16V6H22V16H19M12,4C8,4 7,4 7,4C7,4 2,4 2,8V14C2,15.77 3,16.76 4.07,17.31C4.4,15.43 6.03,14 8,14H11V16H8A2,2 0 0,0 6,18C6,19.11 6.9,20 8,20H13C17,20 17,16 17,16V6C17,6 16,4 12,4Z"; -var mdiBraille = "M7,8A1,1 0 0,1 8,7A1,1 0 0,1 9,8V12.47L10.21,12.6L15.15,14.79C15.67,15.03 16,15.56 16,16.14V20.5C15.97,21.32 15.32,21.97 14.5,22H8C7.62,22 7.26,21.85 7,21.57L2.1,17.37L2.84,16.6C3.03,16.39 3.3,16.28 3.58,16.28H3.8L7,18V8M19.5,2A1.5,1.5 0 0,0 18,3.5A1.5,1.5 0 0,0 19.5,5A1.5,1.5 0 0,0 21,3.5A1.5,1.5 0 0,0 19.5,2M19.5,7A1.5,1.5 0 0,0 18,8.5A1.5,1.5 0 0,0 19.5,10A1.5,1.5 0 0,0 21,8.5A1.5,1.5 0 0,0 19.5,7M14.5,7A1.5,1.5 0 0,0 13,8.5A1.5,1.5 0 0,0 14.5,10A1.5,1.5 0 0,0 16,8.5A1.5,1.5 0 0,0 14.5,7M19.5,12A1.5,1.5 0 0,0 18,13.5A1.5,1.5 0 0,0 19.5,15A1.5,1.5 0 0,0 21,13.5A1.5,1.5 0 0,0 19.5,12Z"; -var mdiBrain = "M21.33,12.91C21.42,14.46 20.71,15.95 19.44,16.86L20.21,18.35C20.44,18.8 20.47,19.33 20.27,19.8C20.08,20.27 19.69,20.64 19.21,20.8L18.42,21.05C18.25,21.11 18.06,21.14 17.88,21.14C17.37,21.14 16.89,20.91 16.56,20.5L14.44,18C13.55,17.85 12.71,17.47 12,16.9C11.5,17.05 11,17.13 10.5,17.13C9.62,17.13 8.74,16.86 8,16.34C7.47,16.5 6.93,16.57 6.38,16.56C5.59,16.57 4.81,16.41 4.08,16.11C2.65,15.47 1.7,14.07 1.65,12.5C1.57,11.78 1.69,11.05 2,10.39C1.71,9.64 1.68,8.82 1.93,8.06C2.3,7.11 3,6.32 3.87,5.82C4.45,4.13 6.08,3 7.87,3.12C9.47,1.62 11.92,1.46 13.7,2.75C14.12,2.64 14.56,2.58 15,2.58C16.36,2.55 17.65,3.15 18.5,4.22C20.54,4.75 22,6.57 22.08,8.69C22.13,9.8 21.83,10.89 21.22,11.82C21.29,12.18 21.33,12.54 21.33,12.91M16.33,11.5C16.9,11.57 17.35,12 17.35,12.57A1,1 0 0,1 16.35,13.57H15.72C15.4,14.47 14.84,15.26 14.1,15.86C14.35,15.95 14.61,16 14.87,16.07C20,16 19.4,12.87 19.4,12.82C19.34,11.39 18.14,10.27 16.71,10.33A1,1 0 0,1 15.71,9.33A1,1 0 0,1 16.71,8.33C17.94,8.36 19.12,8.82 20.04,9.63C20.09,9.34 20.12,9.04 20.12,8.74C20.06,7.5 19.5,6.42 17.25,6.21C16,3.25 12.85,4.89 12.85,5.81V5.81C12.82,6.04 13.06,6.53 13.1,6.56A1,1 0 0,1 14.1,7.56C14.1,8.11 13.65,8.56 13.1,8.56V8.56C12.57,8.54 12.07,8.34 11.67,8C11.19,8.31 10.64,8.5 10.07,8.56V8.56C9.5,8.61 9.03,8.21 9,7.66C8.92,7.1 9.33,6.61 9.88,6.56C10.04,6.54 10.82,6.42 10.82,5.79V5.79C10.82,5.13 11.07,4.5 11.5,4C10.58,3.75 9.59,4.08 8.59,5.29C6.75,5 6,5.25 5.45,7.2C4.5,7.67 4,8 3.78,9C4.86,8.78 5.97,8.87 7,9.25C7.5,9.44 7.78,10 7.59,10.54C7.4,11.06 6.82,11.32 6.3,11.13C5.57,10.81 4.75,10.79 4,11.07C3.68,11.34 3.68,11.9 3.68,12.34C3.68,13.08 4.05,13.77 4.68,14.17C5.21,14.44 5.8,14.58 6.39,14.57C6.24,14.31 6.11,14.04 6,13.76C5.81,13.22 6.1,12.63 6.64,12.44C7.18,12.25 7.77,12.54 7.96,13.08C8.36,14.22 9.38,15 10.58,15.13C11.95,15.06 13.17,14.25 13.77,13C14,11.62 15.11,11.5 16.33,11.5M18.33,18.97L17.71,17.67L17,17.83L18,19.08L18.33,18.97M13.68,10.36C13.7,9.83 13.3,9.38 12.77,9.33C12.06,9.29 11.37,9.53 10.84,10C10.27,10.58 9.97,11.38 10,12.19A1,1 0 0,0 11,13.19C11.57,13.19 12,12.74 12,12.19C12,11.92 12.07,11.65 12.23,11.43C12.35,11.33 12.5,11.28 12.66,11.28C13.21,11.31 13.68,10.9 13.68,10.36Z"; -var mdiBreadSlice = "M12,2C17.5,2 22,5.36 22,9.5C22,11.19 21.26,12.75 20,14V22H4V14C2.74,12.75 2,11.19 2,9.5C2,5.36 6.5,2 12,2M8,18H12V14H8V18Z"; -var mdiBreadSliceOutline = "M12,2C17.5,2 22,5.36 22,9.5C22,11.19 21.26,12.75 20,14V22H4V14C2.74,12.75 2,11.19 2,9.5C2,5.36 6.5,2 12,2M18,13.14C19.24,12.17 20,10.89 20,9.5C20,6.46 16.42,4 12,4C7.58,4 4,6.46 4,9.5C4,10.89 4.76,12.17 6,13.14V20H18V13.14M8,18V14H12V18H8Z"; -var mdiBridge = "M7,14V10.91C6.28,10.58 5.61,10.18 5,9.71V14H7M5,18H3V16H1V14H3V7H5V8.43C6.8,10 9.27,11 12,11C14.73,11 17.2,10 19,8.43V7H21V14H23V16H21V18H19V16H5V18M17,10.91V14H19V9.71C18.39,10.18 17.72,10.58 17,10.91M16,14V11.32C15.36,11.55 14.69,11.72 14,11.84V14H16M13,14V11.96L12,12L11,11.96V14H13M10,14V11.84C9.31,11.72 8.64,11.55 8,11.32V14H10Z"; -var mdiBriefcase = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z"; -var mdiBriefcaseAccount = "M20,6H16V4A2,2 0 0,0 14,2H10C8.89,2 8,2.89 8,4V6H4C2.89,6 2,6.89 2,8V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V8A2,2 0 0,0 20,6M10,4H14V6H10V4M12,9A2.5,2.5 0 0,1 14.5,11.5A2.5,2.5 0 0,1 12,14A2.5,2.5 0 0,1 9.5,11.5A2.5,2.5 0 0,1 12,9M17,19H7V17.75C7,16.37 9.24,15.25 12,15.25C14.76,15.25 17,16.37 17,17.75V19Z"; -var mdiBriefcaseAccountOutline = "M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14M12,9A2.25,2.25 0 0,1 14.25,11.25C14.25,12.5 13.24,13.5 12,13.5A2.25,2.25 0 0,1 9.75,11.25C9.75,10 10.76,9 12,9M16.5,18H7.5V16.88C7.5,15.63 9.5,14.63 12,14.63C14.5,14.63 16.5,15.63 16.5,16.88V18Z"; -var mdiBriefcaseCheck = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14M10.5,17.5L17.09,10.91L15.68,9.5L10.5,14.67L8.41,12.59L7,14L10.5,17.5Z"; -var mdiBriefcaseCheckOutline = "M20 6C20.58 6 21.05 6.2 21.42 6.59C21.8 7 22 7.45 22 8V19C22 19.55 21.8 20 21.42 20.41C21.05 20.8 20.58 21 20 21H4C3.42 21 2.95 20.8 2.58 20.41C2.2 20 2 19.55 2 19V8C2 7.45 2.2 7 2.58 6.59C2.95 6.2 3.42 6 4 6H8V4C8 3.42 8.2 2.95 8.58 2.58C8.95 2.2 9.42 2 10 2H14C14.58 2 15.05 2.2 15.42 2.58C15.8 2.95 16 3.42 16 4V6H20M4 8V19H20V8H4M14 6V4H10V6H14M10.46 17.5L17.05 10.91L15.64 9.5L10.46 14.67L8.37 12.59L6.96 14L10.46 17.5Z"; -var mdiBriefcaseClock = "M21 11.11V7A2 2 0 0 0 19 5H15V3A2 2 0 0 0 13 1H9A2 2 0 0 0 7 3V5H3A2 2 0 0 0 1 7V18A2 2 0 0 0 3 20H10.26A7 7 0 1 0 21 11.11M9 3H13V5H9M19 20A5 5 0 0 1 13 20A5 5 0 1 1 19 20M15 13H16.5V15.82L18.94 17.23L18.19 18.53L15 16.69V13"; -var mdiBriefcaseClockOutline = "M21 11.11V7A2 2 0 0 0 20.42 5.59A1.87 1.87 0 0 0 19 5H15V3A1.9 1.9 0 0 0 14.42 1.58A1.9 1.9 0 0 0 13 1H9A1.9 1.9 0 0 0 7.58 1.58A1.9 1.9 0 0 0 7 3V5H3A1.87 1.87 0 0 0 1.58 5.59A2 2 0 0 0 1 7V18A2 2 0 0 0 1.58 19.41A1.87 1.87 0 0 0 3 20H10.26A7 7 0 1 0 21 11.11M9 3H13V5H9M3 18V7H19V9.68A6.84 6.84 0 0 0 16 9A7 7 0 0 0 9 16A6.91 6.91 0 0 0 9.29 18M19 20A5 5 0 0 1 13 20A4.94 4.94 0 0 1 11 16A5 5 0 0 1 16 11A4.94 4.94 0 0 1 19 12A5 5 0 0 1 19 20M15 13H16.5V15.82L18.94 17.23L18.19 18.53L15 16.69V13"; -var mdiBriefcaseDownload = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M12,19L17,14H14V10H10V14H7L12,19Z"; -var mdiBriefcaseDownloadOutline = "M12,18L7,13H10V9H14V13H17L12,18M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M4,8V19H20V8H4Z"; -var mdiBriefcaseEdit = "M14,2A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8L10.85,19C10.85,20.1 10.85,19.5 10.85,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2H14M14,6V4H10V6H14M21.04,12.13C20.9,12.13 20.76,12.19 20.65,12.3L19.65,13.3L21.7,15.35L22.7,14.35C22.92,14.14 22.92,13.79 22.7,13.58L21.42,12.3C21.31,12.19 21.18,12.13 21.04,12.13M19.07,13.88L13,19.94V22H15.06L21.12,15.93L19.07,13.88Z"; -var mdiBriefcaseEditOutline = "M21.04,12.13C21.18,12.13 21.31,12.19 21.42,12.3L22.7,13.58C22.92,13.79 22.92,14.14 22.7,14.35L21.7,15.35L19.65,13.3L20.65,12.3C20.76,12.19 20.9,12.13 21.04,12.13M19.07,13.88L21.12,15.93L15.06,22H13V19.94L19.07,13.88M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8L20,10V8H4V19H11V21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14Z"; -var mdiBriefcaseMinus = "M22,17V19H14V17H22M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C20.94,12.58 19.54,12 18,12A6,6 0 0,0 12,18C12,19.09 12.29,20.12 12.8,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z"; -var mdiBriefcaseMinusOutline = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C21.42,13 20.75,12.6 20,12.34V8H4V19H12.08C12.2,19.72 12.45,20.39 12.8,21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14M14,17H22V19H14V17Z"; -var mdiBriefcaseOff = "M22.11 21.46L20.84 22.73L19.11 21H4C2.89 21 2 20.1 2 19V8C2 6.89 2.89 6 4 6H4.11L1.11 3L2.39 1.73L22.11 21.46M22 18.8L8 4.8V4C8 2.89 8.89 2 10 2H14C15.11 2 16 2.9 16 4V6H20C21.11 6 22 6.9 22 8V18.8M14 4H10V6H14V4Z"; -var mdiBriefcaseOffOutline = "M20 8V16.8L22 18.8V8C22 7.45 21.8 7 21.42 6.59C21.05 6.2 20.58 6 20 6H16V4C16 3.42 15.8 2.95 15.42 2.58C15.05 2.2 14.58 2 14 2H10C9.42 2 8.95 2.2 8.58 2.58C8.2 2.95 8 3.42 8 4V4.8L11.2 8H20M10 4H14V6H10V4M2.39 1.73L1.11 3L4.11 6H4C3.42 6 2.95 6.2 2.58 6.59C2.2 7 2 7.45 2 8V19C2 19.55 2.2 20 2.58 20.41C2.95 20.8 3.42 21 4 21H19.11L20.84 22.73L22.11 21.46L2.39 1.73M4 19V8H6.11L17.11 19H4Z"; -var mdiBriefcaseOutline = "M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14Z"; -var mdiBriefcasePlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C20.94,12.58 19.54,12 18,12A6,6 0 0,0 12,18C12,19.09 12.29,20.12 12.8,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z"; -var mdiBriefcasePlusOutline = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C21.42,13 20.75,12.6 20,12.34V8H4V19H12.08C12.2,19.72 12.45,20.39 12.8,21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14M14,17H17V14H19V17H22V19H19V22H17V19H14V17Z"; -var mdiBriefcaseRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C20.94,12.58 19.54,12 18,12A6,6 0 0,0 12,18C12,19.09 12.29,20.12 12.8,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z"; -var mdiBriefcaseRemoveOutline = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C21.42,13 20.75,12.6 20,12.34V8H4V19H12.08C12.2,19.72 12.45,20.39 12.8,21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88Z"; -var mdiBriefcaseSearch = "M16.5,12C19,12 21,14 21,16.5C21,17.38 20.75,18.21 20.31,18.9L23.39,22L22,23.39L18.88,20.32C18.19,20.75 17.37,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12M16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19A2.5,2.5 0 0,0 19,16.5A2.5,2.5 0 0,0 16.5,14M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.03C20.85,11.21 18.82,10 16.5,10A6.5,6.5 0 0,0 10,16.5C10,18.25 10.69,19.83 11.81,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z"; -var mdiBriefcaseSearchOutline = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.03C21.5,12.23 20.8,11.54 20,11V8H4V19H10.5C10.81,19.75 11.26,20.42 11.81,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M20.31,18.9L23.39,22L22,23.39L18.88,20.32C18.19,20.75 17.37,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12C19,12 21,14 21,16.5C21,17.38 20.75,18.21 20.31,18.9M16.5,19A2.5,2.5 0 0,0 19,16.5A2.5,2.5 0 0,0 16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19Z"; -var mdiBriefcaseUpload = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M12,9L7,14H10V18H14V14H17L12,9Z"; -var mdiBriefcaseUploadOutline = "M12,9L17,14H14V18H10V14H7L12,9M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M4,8V19H20V8H4Z"; -var mdiBriefcaseVariant = "M10 16V15H3L3 19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V15H14V16H10M20 7H16V5L14 3H10L8 5V7H4C2.9 7 2 7.9 2 9V12C2 13.11 2.89 14 4 14H10V12H14V14H20C21.1 14 22 13.1 22 12V9C22 7.9 21.1 7 20 7M14 7H10V5H14V7Z"; -var mdiBriefcaseVariantOff = "M10 6.8L8.1 4.9L10 3H14L16 5V7H20C21.1 7 22 7.9 22 9V12C22 13.1 21.1 14 20 14H17.2L10.2 7H14V5H10V6.8M2.39 1.73L1.11 3L5.11 7H4C2.9 7 2 7.9 2 9V12C2 13.11 2.89 14 4 14H10V12H10.11L14 15.89V16H10V15H3V19C3 20.11 3.89 21 5 21H19C19.03 21 19.07 21 19.1 21L20.84 22.73L22.11 21.46L2.39 1.73M21 17.8V15H18.2L21 17.8Z"; -var mdiBriefcaseVariantOffOutline = "M10 6.8L8.1 4.9L10 3H14L16 5V7H20C21.1 7 22 7.9 22 9V14C22 14.73 21.59 15.37 21 15.72V17.8L17.2 14H20V9H12.2L10.2 7H14V5H10V6.8M22.11 21.46L20.84 22.73L19.1 21C19.07 21 19.03 21 19 21H5C3.89 21 3 20.11 3 19V15.73C2.4 15.38 2 14.75 2 14V9C2 7.9 2.9 7 4 7H5.11L1.11 3L2.39 1.73L22.11 21.46M11 15H13V14.89L11.11 13H11V15M9 14V11H9.11L7.11 9H4V14H9M17.11 19L15 16.89V17H9V16H5V19H17.11Z"; -var mdiBriefcaseVariantOutline = "M20 7H16V5L14 3H10L8 5V7H4C2.9 7 2 7.9 2 9V14C2 14.75 2.4 15.38 3 15.73V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V15.72C21.59 15.37 22 14.73 22 14V9C22 7.9 21.1 7 20 7M10 5H14V7H10V5M4 9H20V14H15V11H9V14H4V9M13 15H11V13H13V15M19 19H5V16H9V17H15V16H19V19Z"; -var mdiBrightness1 = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiBrightness2 = "M10,2C8.18,2 6.47,2.5 5,3.35C8,5.08 10,8.3 10,12C10,15.7 8,18.92 5,20.65C6.47,21.5 8.18,22 10,22A10,10 0 0,0 20,12A10,10 0 0,0 10,2Z"; -var mdiBrightness3 = "M9,2C7.95,2 6.95,2.16 6,2.46C10.06,3.73 13,7.5 13,12C13,16.5 10.06,20.27 6,21.54C6.95,21.84 7.95,22 9,22A10,10 0 0,0 19,12A10,10 0 0,0 9,2Z"; -var mdiBrightness4 = "M12,18C11.11,18 10.26,17.8 9.5,17.45C11.56,16.5 13,14.42 13,12C13,9.58 11.56,7.5 9.5,6.55C10.26,6.2 11.11,6 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z"; -var mdiBrightness5 = "M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z"; -var mdiBrightness6 = "M12,18V6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z"; -var mdiBrightness7 = "M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z"; -var mdiBrightnessAuto = "M14.3,16L13.6,14H10.4L9.7,16H7.8L11,7H13L16.2,16H14.3M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69M10.85,12.65H13.15L12,9L10.85,12.65Z"; -var mdiBrightnessPercent = "M20.04,8.71V4H15.34L12,0.69L8.71,4H4V8.71L0.69,12L4,15.34V20.04H8.71L12,23.35L15.34,20.04H20.04V15.34L23.35,12L20.04,8.71M8.83,7.05C9.81,7.05 10.6,7.84 10.6,8.83A1.77,1.77 0 0,1 8.83,10.6C7.84,10.6 7.05,9.81 7.05,8.83C7.05,7.84 7.84,7.05 8.83,7.05M15.22,17C14.24,17 13.45,16.2 13.45,15.22A1.77,1.77 0 0,1 15.22,13.45C16.2,13.45 17,14.24 17,15.22A1.78,1.78 0 0,1 15.22,17M8.5,17.03L7,15.53L15.53,7L17.03,8.5L8.5,17.03Z"; -var mdiBroadcast = "M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M18 12C18 8.7 15.3 6 12 6S6 8.7 6 12C6 14.2 7.2 16.1 9 17.2L10 15.5C8.8 14.8 8 13.5 8 12.1C8 9.9 9.8 8.1 12 8.1S16 9.9 16 12.1C16 13.6 15.2 14.9 14 15.5L15 17.2C16.8 16.2 18 14.2 18 12M12 2C6.5 2 2 6.5 2 12C2 15.7 4 18.9 7 20.6L8 18.9C5.6 17.5 4 14.9 4 12C4 7.6 7.6 4 12 4S20 7.6 20 12C20 15 18.4 17.5 16 18.9L17 20.6C20 18.9 22 15.7 22 12C22 6.5 17.5 2 12 2Z"; -var mdiBroadcastOff = "M17.6 14.2C17.9 13.5 18 12.8 18 12C18 8.7 15.3 6 12 6C11.2 6 10.4 6.2 9.8 6.4L11.4 8H12C14.2 8 16 9.8 16 12C16 12.2 16 12.4 15.9 12.6L17.6 14.2M12 4C16.4 4 20 7.6 20 12C20 13.4 19.6 14.6 19 15.7L20.5 17.2C21.4 15.7 22 13.9 22 12C22 6.5 17.5 2 12 2C10.1 2 8.3 2.5 6.8 3.5L8.3 5C9.4 4.3 10.6 4 12 4M3.3 2.5L2 3.8L4.1 5.9C2.8 7.6 2 9.7 2 12C2 15.7 4 18.9 7 20.6L8 18.9C5.6 17.5 4 14.9 4 12C4 10.2 4.6 8.6 5.5 7.3L7 8.8C6.4 9.7 6 10.8 6 12C6 14.2 7.2 16.1 9 17.2L10 15.5C8.8 14.8 8 13.5 8 12.1C8 11.5 8.2 10.9 8.4 10.3L10 11.9V12.1C10 13.2 10.9 14.1 12 14.1H12.2L19.7 21.6L21 20.3L4.3 3.5L3.3 2.5Z"; -var mdiBroom = "M19.36,2.72L20.78,4.14L15.06,9.85C16.13,11.39 16.28,13.24 15.38,14.44L9.06,8.12C10.26,7.22 12.11,7.37 13.65,8.44L19.36,2.72M5.93,17.57C3.92,15.56 2.69,13.16 2.35,10.92L7.23,8.83L14.67,16.27L12.58,21.15C10.34,20.81 7.94,19.58 5.93,17.57Z"; -var mdiBrush = "M20.71,4.63L19.37,3.29C19,2.9 18.35,2.9 17.96,3.29L9,12.25L11.75,15L20.71,6.04C21.1,5.65 21.1,5 20.71,4.63M7,14A3,3 0 0,0 4,17C4,18.31 2.84,19 2,19C2.92,20.22 4.5,21 6,21A4,4 0 0,0 10,17A3,3 0 0,0 7,14Z"; -var mdiBucket = "M3 4H21V7H20L17.5 21H6.5L4 7H3V4Z"; -var mdiBucketOutline = "M3 4H21V7H20L17.5 21H6.5L4 7H3V4M17.97 7H6.03L8.15 19H15.85L17.97 7Z"; -var mdiBuddhism = "M11,2V3C9.27,3.2 7.69,3.9 6.4,4.94L5.64,4.18L4.22,5.6L5,6.35C3.9,7.68 3.21,9.3 3,11H2V13H3C3.21,14.68 3.9,16.26 5,17.56L4.22,18.32L5.64,19.74L6.39,19C7.71,20.07 9.3,20.77 11,21V22H13V21C14.69,20.77 16.29,20.07 17.6,19L18.36,19.74L19.78,18.32L19,17.57C20.1,16.27 20.79,14.68 21,13H22V11H21C20.79,9.3 20.1,7.69 19,6.36L19.78,5.6L18.36,4.18L17.61,4.94C16.29,3.87 14.69,3.2 13,3V2H11M11,5V8L10,8.5L7.81,6.35C8.72,5.67 9.81,5.17 11,5M13,5C14.16,5.18 15.26,5.64 16.2,6.35L14,8.5L13,8V5M6.4,7.76L8.5,10L8,11H5C5.16,9.84 5.7,8.7 6.39,7.75L6.4,7.76M17.6,7.76C18.33,8.71 18.81,9.82 19,11H16L15.5,10L17.61,7.76H17.6M12,10C13.12,10 14,10.88 14,12C14,13.12 13.12,14 12,14C10.88,14 10,13.12 10,12C10,10.88 10.88,10 12,10M5,13H8L8.57,14L6.39,16.15C5.67,15.24 5.19,14.16 5,13V13M16,13H19C18.81,14.15 18.33,15.24 17.61,16.16L15.5,14L16,13M10,15.5L11,16V19C9.83,18.8 8.73,18.31 7.8,17.57L10,15.5M14,15.5L16.19,17.57C15.28,18.25 14.19,18.83 13,19V16L14,15.5Z"; -var mdiBuffer = "M12.6,2.86C15.27,4.1 18,5.39 20.66,6.63C20.81,6.7 21,6.75 21,6.95C21,7.15 20.81,7.19 20.66,7.26C18,8.5 15.3,9.77 12.62,11C12.21,11.21 11.79,11.21 11.38,11C8.69,9.76 6,8.5 3.32,7.25C3.18,7.19 3,7.14 3,6.94C3,6.76 3.18,6.71 3.31,6.65C6,5.39 8.74,4.1 11.44,2.85C11.73,2.72 12.3,2.73 12.6,2.86M12,21.15C11.8,21.15 11.66,21.07 11.38,20.97C8.69,19.73 6,18.47 3.33,17.22C3.19,17.15 3,17.11 3,16.9C3,16.7 3.19,16.66 3.34,16.59C3.78,16.38 4.23,16.17 4.67,15.96C5.12,15.76 5.56,15.76 6,15.97C7.79,16.8 9.57,17.63 11.35,18.46C11.79,18.67 12.23,18.66 12.67,18.46C14.45,17.62 16.23,16.79 18,15.96C18.44,15.76 18.87,15.75 19.29,15.95C19.77,16.16 20.24,16.39 20.71,16.61C20.78,16.64 20.85,16.68 20.91,16.73C21.04,16.83 21.04,17 20.91,17.08C20.83,17.14 20.74,17.19 20.65,17.23C18,18.5 15.33,19.72 12.66,20.95C12.46,21.05 12.19,21.15 12,21.15M12,16.17C11.9,16.17 11.55,16.07 11.36,16C8.68,14.74 6,13.5 3.34,12.24C3.2,12.18 3,12.13 3,11.93C3,11.72 3.2,11.68 3.35,11.61C3.8,11.39 4.25,11.18 4.7,10.97C5.13,10.78 5.56,10.78 6,11C7.78,11.82 9.58,12.66 11.38,13.5C11.79,13.69 12.21,13.69 12.63,13.5C14.43,12.65 16.23,11.81 18.04,10.97C18.45,10.78 18.87,10.78 19.29,10.97C19.76,11.19 20.24,11.41 20.71,11.63C20.77,11.66 20.84,11.69 20.9,11.74C21.04,11.85 21.04,12 20.89,12.12C20.84,12.16 20.77,12.19 20.71,12.22C18,13.5 15.31,14.75 12.61,16C12.42,16.09 12.08,16.17 12,16.17Z"; -var mdiBuffet = "M9 14C9.55 14 10 14.45 10 15C10 15.55 9.55 16 9 16C8.45 16 8 15.55 8 15C8 14.45 8.45 14 9 14M15 14C15.55 14 16 14.45 16 15C16 15.55 15.55 16 15 16C14.45 16 14 15.55 14 15C14 14.45 14.45 14 15 14M3 22L4 19H3C2.45 19 2 18.55 2 18V12C2 11.45 2.45 11 3 11H21C21.55 11 22 11.45 22 12V18C22 18.55 21.55 19 21 19H20L21 22H19L18 19H6L5 22H3M13 13V17H20V13H13M4 13V17H11V13H4Z"; -var mdiBug = "M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z"; -var mdiBugCheck = "M18,7H15.19C14.74,6.2 14.12,5.5 13.37,5L15,3.41L13.59,2L11.42,4.17C10.96,4.06 10.5,4 10,4C9.5,4 9.05,4.06 8.59,4.17L6.41,2L5,3.41L6.62,5C5.87,5.5 5.26,6.21 4.81,7H2V9H4.09C4.03,9.33 4,9.66 4,10V11H2V13H4V14C4,14.34 4.03,14.67 4.09,15H2V17H4.81C6.26,19.5 9.28,20.61 12,19.65C12,19.43 12,19.22 12,19C12,16.46 13.61,14.2 16,13.35V13H18V11H16V10C16,9.66 15.97,9.33 15.91,9H18V7M12,15H8V13H12V15M12,11H8V9H12V11M17.75,22.16L15,19.16L16.16,18L17.75,19.59L21.34,16L22.5,17.41L17.75,22.16Z"; -var mdiBugCheckOutline = "M18,7H15.19C14.74,6.2 14.12,5.5 13.37,5L15,3.41L13.59,2L11.42,4.17C10.96,4.06 10.5,4 10,4C9.5,4 9.05,4.06 8.59,4.17L6.41,2L5,3.41L6.62,5C5.87,5.5 5.26,6.21 4.81,7H2V9H4.09C4.03,9.33 4,9.66 4,10V11H2V13H4V14C4,14.34 4.03,14.67 4.09,15H2V17H4.81C6.26,19.5 9.28,20.61 12,19.65C12,19.43 12,19.22 12,19C12,18.43 12.09,17.86 12.25,17.31C11.59,17.76 10.8,18 10,18A4,4 0 0,1 6,14V10A4,4 0 0,1 10,6A4,4 0 0,1 14,10V14C14,14.19 14,14.39 13.95,14.58C14.54,14.04 15.24,13.62 16,13.35V13H18V11H16V10C16,9.66 15.97,9.33 15.91,9H18V7M21.34,16L17.75,19.59L16.16,18L15,19.16L17.75,22.16L22.5,17.41L21.34,16M12,9V11H8V9H12M12,13V15H8V13H12Z"; -var mdiBugOutline = "M20,8H17.19C16.74,7.2 16.12,6.5 15.37,6L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.05,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6C7.87,6.5 7.26,7.21 6.81,8H4V10H6.09C6.03,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.03,15.67 6.09,16H4V18H6.81C8.47,20.87 12.14,21.84 15,20.18C15.91,19.66 16.67,18.9 17.19,18H20V16H17.91C17.97,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.97,10.33 17.91,10H20V8M16,15A4,4 0 0,1 12,19A4,4 0 0,1 8,15V11A4,4 0 0,1 12,7A4,4 0 0,1 16,11V15M14,10V12H10V10H14M10,14H14V16H10V14Z"; -var mdiBugle = "M21,6C21,11 12,11 12,11C12,11 6,11 5,11C4,11 3,10 3,10H2V14H3C3,14 4,13 5,13C5.2,13 5.7,13 6.3,13C5.5,13.5 5,14.2 5,15C5,16.8 7.3,18 10.5,18C13.7,18 16,16.8 16,15C16,14.4 15.7,13.8 15.2,13.3C17.8,13.8 21,15 21,18H22V6H21M10.5,16.7C8.2,16.7 6.4,15.9 6.4,15C6.4,14.1 8.2,13.3 10.5,13.3C12.8,13.3 14.6,14.1 14.6,15C14.6,15.9 12.8,16.7 10.5,16.7Z"; -var mdiBulldozer = "M4,4A1,1 0 0,0 3,5V10C2.54,10 2.14,10.31 2.03,10.76V13.97H2.29C2.65,13.37 3.3,13 4,13H13C13.7,13 14.35,13.37 14.71,13.97H16.03L16,11V11A1,1 0 0,0 15,10H13V8A1,1 0 0,0 12,7A1,1 0 0,0 11,8V10H9V5A1,1 0 0,0 8,4H4M5,6H7V10L7,11H5V6M17,11V19H22V18L19,17L18,11H17M4,15A2,2 0 0,0 2,17A2,2 0 0,0 4,19H13A2,2 0 0,0 15,17A2,2 0 0,0 13,15H4Z"; -var mdiBullet = "M14,22H10V21H14V22M13,10V7H11V10L10,11.5V20H14V11.5L13,10M12,2C12,2 11,3 11,5V6H13V5C13,5 13,3 12,2Z"; -var mdiBulletinBoard = "M12.04,2.5L9.53,5H14.53L12.04,2.5M4,7V20H20V7H4M12,0L17,5V5H20A2,2 0 0,1 22,7V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V7A2,2 0 0,1 4,5H7V5L12,0M7,18V14H12V18H7M14,17V10H18V17H14M6,12V9H11V12H6Z"; -var mdiBullhorn = "M12,8H4A2,2 0 0,0 2,10V14A2,2 0 0,0 4,16H5V20A1,1 0 0,0 6,21H8A1,1 0 0,0 9,20V16H12L17,20V4L12,8M21.5,12C21.5,13.71 20.54,15.26 19,16V8C20.53,8.75 21.5,10.3 21.5,12Z"; -var mdiBullhornOutline = "M12,8H4A2,2 0 0,0 2,10V14A2,2 0 0,0 4,16H5V20A1,1 0 0,0 6,21H8A1,1 0 0,0 9,20V16H12L17,20V4L12,8M15,15.6L13,14H4V10H13L15,8.4V15.6M21.5,12C21.5,13.71 20.54,15.26 19,16V8C20.53,8.75 21.5,10.3 21.5,12Z"; -var mdiBullseye = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; -var mdiBullseyeArrow = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,10.84 21.79,9.69 21.39,8.61L19.79,10.21C19.93,10.8 20,11.4 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.6,4 13.2,4.07 13.79,4.21L15.4,2.6C14.31,2.21 13.16,2 12,2M19,2L15,6V7.5L12.45,10.05C12.3,10 12.15,10 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,11.85 14,11.7 13.95,11.55L16.5,9H18L22,5H19V2M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12H16A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8V6Z"; -var mdiBulma = "M11.38 2L6.38 7L5.13 15.75L11.38 22L18.88 17L13.88 12L17.63 8.25L11.38 2Z"; -var mdiBunkBed = "M1 2V23H3V21H21V23H23V7C23 4.79 21.21 3 19 3H10V8H3V2M6.5 2A2.5 2.5 0 0 0 4 4.5A2.5 2.5 0 0 0 6.5 7A2.5 2.5 0 0 0 9 4.5A2.5 2.5 0 0 0 6.5 2M3 11H21V13.56C20.41 13.21 19.73 13 19 13H10V18H3M6.5 12A2.5 2.5 0 0 0 4 14.5A2.5 2.5 0 0 0 6.5 17A2.5 2.5 0 0 0 9 14.5A2.5 2.5 0 0 0 6.5 12Z"; -var mdiBunkBedOutline = "M1 2H3V9H10V3H19C21.2 3 23 4.8 23 7V23H21V21H3V23H1V2M12 5V9H21V7C21 5.9 20.1 5 19 5H12M3 11V19H10V13H19C19.7 13 20.4 13.2 21 13.6V11H3M6.5 13C7.9 13 9 14.1 9 15.5S7.9 18 6.5 18 4 16.9 4 15.5 5.1 13 6.5 13M6.5 14.6C6 14.6 5.6 15 5.6 15.5S6 16.4 6.5 16.4 7.4 16 7.4 15.5 7 14.6 6.5 14.6M12 15V19H21V17C21 15.9 20.1 15 19 15H12M6.5 3C7.9 3 9 4.1 9 5.5S7.9 8 6.5 8 4 6.9 4 5.5 5.1 3 6.5 3M6.5 4.6C6 4.6 5.6 5 5.6 5.5S6 6.4 6.5 6.4 7.4 6 7.4 5.5 7 4.6 6.5 4.6Z"; -var mdiBus = "M18,11H6V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M4,16C4,16.88 4.39,17.67 5,18.22V20A1,1 0 0,0 6,21H7A1,1 0 0,0 8,20V19H16V20A1,1 0 0,0 17,21H18A1,1 0 0,0 19,20V18.22C19.61,17.67 20,16.88 20,16V6C20,2.5 16.42,2 12,2C7.58,2 4,2.5 4,6V16Z"; -var mdiBusAlert = "M16,1A7,7 0 0,1 23,8C23,11.53 20.39,14.45 17,14.93V18C17,18.84 16.65,19.58 15.96,20.2V22C15.96,22.27 15.87,22.5 15.68,22.71C15.5,22.91 15.26,23 15,23H14C13.71,23 13.47,22.91 13.27,22.71C13.06,22.5 12.96,22.27 12.96,22V21H5.04V22C5.04,22.27 4.94,22.5 4.73,22.71C4.53,22.91 4.29,23 4,23H3C2.74,23 2.5,22.91 2.32,22.71C2.13,22.5 2.04,22.27 2.04,22V20.2C1.35,19.58 1,18.84 1,18V8C1,6.42 1.7,5.35 3.07,4.8C4.44,4.26 6.42,4 9,4L10.23,4.03C11.5,2.2 13.61,1 16,1M16,3A5,5 0 0,0 11,8A5,5 0 0,0 16,13A5,5 0 0,0 21,8A5,5 0 0,0 16,3M15,10H17V12H15V10M15,4H17V9H15V4M3,13H11.09C9.8,11.72 9,9.96 9,8H3V13M4.5,16C3.69,16 3,16.67 3,17.5A1.5,1.5 0 0,0 4.5,19C5.35,19 6,18.33 6,17.5A1.5,1.5 0 0,0 4.5,16M13.5,16C12.65,16 12,16.67 12,17.5A1.5,1.5 0 0,0 13.5,19C14.31,19 15,18.33 15,17.5A1.5,1.5 0 0,0 13.5,16Z"; -var mdiBusArticulatedEnd = "M21.5,6L20,7.5L21.5,9L20,10.5L21.5,12L20,13.5L21.5,15H12.5A3,3 0 0,1 9.5,18A3,3 0 0,1 6.5,15H2.5V8C2.5,6.89 3.39,6 4.5,6H21.5M18.5,7.5H15V10H18.5V7.5M13.5,7.5H9.5V10H13.5V7.5M8,7.5H4V10H8V7.5M9.5,13.5A1.5,1.5 0 0,0 8,15A1.5,1.5 0 0,0 9.5,16.5A1.5,1.5 0 0,0 11,15A1.5,1.5 0 0,0 9.5,13.5Z"; -var mdiBusArticulatedFront = "M1,6L2.5,7.5L1,9L2.5,10.5L1,12L2.5,13.5L1,15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V8C23,6.89 22.11,6 21,6H1M4,7.5H6.5V10H4V7.5M8,7.5H12V10H8V7.5M13.5,7.5H17.5V10H13.5V7.5M19,7.5H21.5V13L19,11V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; -var mdiBusClock = "M16.5,4V8.25L19.36,9.94L18.61,11.16L15,9V4H16.5M16,13C17.36,13 18.54,12.5 19.5,11.53C20.5,10.56 21,9.39 21,8C21,6.64 20.5,5.46 19.5,4.5C18.54,3.5 17.36,3 16,3C14.61,3 13.44,3.5 12.47,4.5C11.5,5.46 11,6.64 11,8C11,9.39 11.5,10.56 12.47,11.53C13.44,12.5 14.61,13 16,13M13.5,19C13.94,19 14.3,18.84 14.58,18.54C14.86,18.24 15,17.89 15,17.5C15,17.08 14.86,16.73 14.58,16.43C14.3,16.13 13.94,16 13.5,16C13.06,16 12.7,16.13 12.42,16.43C12.14,16.73 12,17.08 12,17.5C12,17.89 12.14,18.24 12.42,18.54C12.7,18.84 13.06,19 13.5,19M3,13H11.11C9.7,11.64 9,10 9,8H3V13M4.5,19C4.94,19 5.3,18.84 5.58,18.54C5.86,18.24 6,17.89 6,17.5C6,17.08 5.86,16.73 5.58,16.43C5.3,16.13 4.94,16 4.5,16C4.06,16 3.7,16.13 3.42,16.43C3.14,16.73 3,17.08 3,17.5C3,17.89 3.14,18.24 3.42,18.54C3.7,18.84 4.06,19 4.5,19M16,1C17.92,1 19.58,1.67 20.95,3.05C22.33,4.42 23,6.08 23,8C23,9.77 22.44,11.29 21.28,12.59C20.13,13.88 18.7,14.66 17,14.91V18C17,18.84 16.67,19.58 16,20.2V22C16,22.27 15.89,22.5 15.7,22.71C15.5,22.91 15.28,23 15,23H14C13.73,23 13.5,22.91 13.29,22.71C13.09,22.5 13,22.27 13,22V21H5V22C5,22.27 4.91,22.5 4.71,22.71C4.5,22.91 4.27,23 4,23H3C2.72,23 2.5,22.91 2.3,22.71C2.11,22.5 2,22.27 2,22V20.2C1.33,19.58 1,18.84 1,18V8C1,6.42 1.67,5.35 3.05,4.8C4.42,4.26 6.41,4 9,4C9.13,4 9.33,4 9.61,4C9.89,4 10.09,4.03 10.22,4.03C11.63,2 13.55,1 16,1Z"; -var mdiBusDoubleDecker = "M3,4C1.89,4 1,4.89 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V14C23,12.89 22.11,12 21,12H19V9.5H23V6C23,4.89 22.11,4 21,4H3M2.5,5.5H6.5V8H2.5V5.5M8,5.5H12V8H8V5.5M13.5,5.5H17.5V8H13.5V5.5M19,5.5H21.5V8H19V5.5M13.5,9.5H17.5V12H13.5V9.5M2.5,9.5H6.5V12H2.5V9.5M8,9.5H12V12H8V9.5M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z"; -var mdiBusMarker = "M12 2C7.58 2 4 2.5 4 6V16A3 3 0 0 0 5 18.22V20A1 1 0 0 0 6 21H7A1 1 0 0 0 8 20V19H14A8 8 0 0 1 13 15.5A5.55 5.55 0 0 1 15.38 11H6V6H18V10A4.07 4.07 0 0 1 18.5 10A5.34 5.34 0 0 1 20 10.22V6C20 2.5 16.42 2 12 2M7.5 14A1.5 1.5 0 1 1 6 15.5A1.5 1.5 0 0 1 7.5 14M18.5 12A3.54 3.54 0 0 0 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5A3.54 3.54 0 0 0 18.5 12M18.5 16.8A1.2 1.2 0 1 1 18.5 14.4A1.29 1.29 0 0 1 19.7 15.6A1.15 1.15 0 0 1 18.5 16.8Z"; -var mdiBusMultiple = "M10 5C5.58 5 2 5.5 2 9V19C2 19.85 2.37 20.66 3 21.22V23C3 23.55 3.45 24 4 24H5C5.55 24 6 23.55 6 23V22H14V23C14 23.55 14.45 24 15 24H16C16.55 24 17 23.55 17 23V21.22C17.63 20.66 18 19.85 18 19V9C18 5.5 14.42 5 10 5M5.5 20C4.67 20 4 19.33 4 18.5S4.67 17 5.5 17 7 17.67 7 18.5 6.33 20 5.5 20M14.5 20C13.67 20 13 19.33 13 18.5S13.67 17 14.5 17 16 17.67 16 18.5 15.33 20 14.5 20M16 14H4V9H16V14M22 5V15C22 15.85 21.63 16.66 21 17.22V19C21 19.55 20.55 20 20 20H19.88C19.95 19.68 20 19.35 20 19V9C20 3 13 3 10 3C9.09 3 7.8 3 6.46 3.17C7.55 1.32 10.5 1 14 1C18.42 1 22 1.5 22 5Z"; -var mdiBusSchool = "M3,6C1.89,6 1,6.89 1,8V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19V8C19,6.89 18.11,6 17,6H3M13.5,7.5H17.5V10H13.5V7.5M2.5,7.5H6.5V10H2.5V7.5M8,7.5H12V10H8V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; -var mdiBusSide = "M3,6C1.89,6 1,6.89 1,8V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V8C23,6.89 22.11,6 21,6H3M2.5,7.5H6.5V10H2.5V7.5M8,7.5H12V10H8V7.5M13.5,7.5H17.5V10H13.5V7.5M19,7.5H21.5V13L19,11V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; -var mdiBusStop = "M22 7V16C22 16.71 21.62 17.36 21 17.72V19.25C21 19.66 20.66 20 20.25 20H19.75C19.34 20 19 19.66 19 19.25V18H12V19.25C12 19.66 11.66 20 11.25 20H10.75C10.34 20 10 19.66 10 19.25V17.72C9.39 17.36 9 16.71 9 16V7C9 4 12 4 15.5 4S22 4 22 7M13 15C13 14.45 12.55 14 12 14S11 14.45 11 15 11.45 16 12 16 13 15.55 13 15M20 15C20 14.45 19.55 14 19 14S18 14.45 18 15 18.45 16 19 16 20 15.55 20 15M20 7H11V11H20V7M7 9.5C6.97 8.12 5.83 7 4.45 7.05C3.07 7.08 1.97 8.22 2 9.6C2.03 10.77 2.86 11.77 4 12V20H5V12C6.18 11.76 7 10.71 7 9.5Z"; -var mdiBusStopCovered = "M20 3H7V2H6A1.78 1.78 0 0 0 4.59 3H2V5H3.73C2 10.58 2 22 2 22H7V5H20M22 8.5A2.5 2.5 0 1 0 19 11V22H20V11A2.5 2.5 0 0 0 22 8.5M15 11.5V16H14V22H12.5V17H11.5V22H10V16H9V11.5A1.5 1.5 0 0 1 10.5 10H13.5A1.5 1.5 0 0 1 15 11.5M12 6.5A1.5 1.5 0 1 0 13.5 8A1.5 1.5 0 0 0 12 6.5Z"; -var mdiBusStopUncovered = "M6 22V19H4V22H2V14A1 1 0 0 1 3 13A1 1 0 0 1 4 14V17H7A1 1 0 0 1 8 18V22M20 11V22H19V11A2.5 2.5 0 1 1 20 11M15 11.55V16H14V22H12.5V17H11.5V22H10V16H9V11.5A1.5 1.5 0 0 1 10.5 10H13.5A1.5 1.5 0 0 1 15 11.5M12 6.55A1.5 1.5 0 1 0 13.5 8A1.5 1.5 0 0 0 12 6.5Z"; -var mdiButterfly = "M13 21H11V6L9.03 3.97L10 3L12 5L14 3L15 4L13 6V21M7 6C4.24 6 2 8.24 2 11C2 12.64 2.79 14.09 4 15H4V17C4 19.21 5.79 21 8 21C8.72 21 9.39 20.81 9.97 20.5L10 20.46V7C9.16 6.37 8.13 6 7 6M6.5 12.5L5 11L6.5 9.5L8 11L6.5 12.5M22 11C22 8.24 19.76 6 17 6C15.88 6 14.85 6.37 14 7L14 7V20.46C14.59 20.81 15.27 21 16 21C18.21 21 20 19.21 20 17V15H20C21.21 14.09 22 12.64 22 11M17.5 12.5L16 11L17.5 9.5L19 11L17.5 12.5Z"; -var mdiButterflyOutline = "M13 21H11V6L9.03 3.97L10 3L12 5L14 3L15 4L13 6V21M14 9H14V7C14.84 6.37 15.88 6 17 6C19.76 6 22 8.24 22 11C22 12.64 21.21 14.09 20 15H20V17C20 19.21 18.21 21 16 21C15.27 21 14.59 20.81 14 20.46V18.46C14.59 18.81 15.27 19 16 19C17.1 19 18 18.1 18 17V13.83C19.17 13.42 20 12.31 20 11C20 9.35 18.67 8 17 8H17C15.88 8 14.84 8.37 14 9M10 9H10C9.16 8.37 8.13 8 7 8H7C5.33 8 4 9.35 4 11C4 12.31 4.84 13.42 6 13.83V17C6 18.1 6.9 19 8 19C8.73 19 9.41 18.81 10 18.46V20.46C9.41 20.81 8.73 21 8 21C5.79 21 4 19.21 4 17V15H4C2.79 14.09 2 12.64 2 11C2 8.24 4.24 6 7 6C8.13 6 9.16 6.37 10 7V9M9 11L7.5 9.5L6 11L7.5 12.5L9 11M18 11L16.5 9.5L15 11L16.5 12.5L18 11Z"; -var mdiCableData = "M7.05 3.5C5.68 4.88 5.68 7.1 7.05 8.47L15.54 16.95C16.12 17.54 16.12 18.5 15.54 19.07C14.95 19.66 14 19.66 13.41 19.07L9.17 14.83L10.23 13.77L6.7 10.23L6.34 10.59L4.93 9.17C4.54 8.78 3.91 8.78 3.5 9.17L2.1 10.59C1.71 11 1.71 11.61 2.1 12L3.5 13.41L3.16 13.77L6.7 17.3L7.76 16.24L12 20.5C13.37 21.85 15.58 21.85 16.95 20.5C18.32 19.12 18.32 16.9 16.95 15.54L8.46 7.05C7.88 6.46 7.88 5.5 8.46 4.93C9.05 4.34 10 4.34 10.59 4.93L14.83 9.17L13.77 10.23L17.3 13.77L17.66 13.41L19.07 14.83C19.46 15.22 20.1 15.22 20.5 14.83L21.9 13.41C22.29 13 22.29 12.39 21.9 12L20.5 10.59L20.84 10.23L17.3 6.7L16.24 7.76L12 3.5C10.63 2.15 8.42 2.15 7.05 3.5M2.81 11.29L4.22 9.88L5.64 11.29L4.22 12.71M18.36 12.71L19.78 11.29L21.19 12.71L19.78 14.12Z"; -var mdiCached = "M19,8L15,12H18A6,6 0 0,1 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20A8,8 0 0,0 20,12H23M6,12A6,6 0 0,1 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4A8,8 0 0,0 4,12H1L5,16L9,12"; -var mdiCactus = "M14,16V21H10V18H9A3,3 0 0,1 6,15V12A1,1 0 0,1 7,11A1,1 0 0,1 8,12V15C8,15.56 8.45,16 9,16H10V6A2,2 0 0,1 12,4A2,2 0 0,1 14,6V14H15A1,1 0 0,0 16,13V11A1,1 0 0,1 17,10A1,1 0 0,1 18,11V13A3,3 0 0,1 15,16H14Z"; -var mdiCake = "M11.5,0.5C12,0.75 13,2.4 13,3.5C13,4.6 12.33,5 11.5,5C10.67,5 10,4.85 10,3.75C10,2.65 11,2 11.5,0.5M18.5,9C21,9 23,11 23,13.5C23,15.06 22.21,16.43 21,17.24V23H12L3,23V17.24C1.79,16.43 1,15.06 1,13.5C1,11 3,9 5.5,9H10V6H13V9H18.5M12,16A2.5,2.5 0 0,0 14.5,13.5H16A2.5,2.5 0 0,0 18.5,16A2.5,2.5 0 0,0 21,13.5A2.5,2.5 0 0,0 18.5,11H5.5A2.5,2.5 0 0,0 3,13.5A2.5,2.5 0 0,0 5.5,16A2.5,2.5 0 0,0 8,13.5H9.5A2.5,2.5 0 0,0 12,16Z"; -var mdiCakeLayered = "M21,21V17C21,15.89 20.1,15 19,15H18V12C18,10.89 17.1,10 16,10H13V8H11V10H8C6.89,10 6,10.89 6,12V15H5C3.89,15 3,15.89 3,17V21H1V23H23V21M12,7A2,2 0 0,0 14,5C14,4.62 13.9,4.27 13.71,3.97L12,1L10.28,3.97C10.1,4.27 10,4.62 10,5A2,2 0 0,0 12,7Z"; -var mdiCakeVariant = "M12,6C13.11,6 14,5.1 14,4C14,3.62 13.9,3.27 13.71,2.97L12,0L10.29,2.97C10.1,3.27 10,3.62 10,4A2,2 0 0,0 12,6M16.6,16L15.53,14.92L14.45,16C13.15,17.29 10.87,17.3 9.56,16L8.5,14.92L7.4,16C6.75,16.64 5.88,17 4.96,17C4.23,17 3.56,16.77 3,16.39V21A1,1 0 0,0 4,22H20A1,1 0 0,0 21,21V16.39C20.44,16.77 19.77,17 19.04,17C18.12,17 17.25,16.64 16.6,16M18,9H13V7H11V9H6A3,3 0 0,0 3,12V13.54C3,14.62 3.88,15.5 4.96,15.5C5.5,15.5 6,15.3 6.34,14.93L8.5,12.8L10.61,14.93C11.35,15.67 12.64,15.67 13.38,14.93L15.5,12.8L17.65,14.93C18,15.3 18.5,15.5 19.03,15.5C20.11,15.5 21,14.62 21,13.54V12A3,3 0 0,0 18,9Z"; -var mdiCalculator = "M7,2H17A2,2 0 0,1 19,4V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V4A2,2 0 0,1 7,2M7,4V8H17V4H7M7,10V12H9V10H7M11,10V12H13V10H11M15,10V12H17V10H15M7,14V16H9V14H7M11,14V16H13V14H11M15,14V16H17V14H15M7,18V20H9V18H7M11,18V20H13V18H11M15,18V20H17V18H15Z"; -var mdiCalculatorVariant = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M13 7.1L14.1 6L15.5 7.4L16.9 6L18 7.1L16.6 8.5L18 9.9L16.9 11L15.5 9.6L14.1 11L13 9.9L14.4 8.5L13 7.1M6.2 7.7H11.2V9.2H6.2V7.7M11.5 16H9.5V18H8V16H6V14.5H8V12.5H9.5V14.5H11.5V16M18 17.2H13V15.7H18V17.2M18 14.8H13V13.3H18V14.8Z"; -var mdiCalculatorVariantOutline = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M19 19H5V5H19V19M6.2 7.7H11.2V9.2H6.2V7.7M13 15.8H18V17.3H13V15.8M13 13.2H18V14.7H13V13.2M8 18H9.5V16H11.5V14.5H9.5V12.5H8V14.5H6V16H8V18M14.1 10.9L15.5 9.5L16.9 10.9L18 9.9L16.6 8.5L18 7.1L16.9 6L15.5 7.4L14.1 6L13 7.1L14.4 8.5L13 9.9L14.1 10.9Z"; -var mdiCalendar = "M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z"; -var mdiCalendarAccount = "M12,10C14,10 15,12.42 13.59,13.84C12.17,15.26 9.75,14.25 9.75,12.25C9.75,11 10.75,10 12,10M16.5,19H7.5V17.88C7.5,16.63 9.5,15.63 12,15.63C14.5,15.63 16.5,16.63 16.5,17.88M19,20H5V9H19M16,2V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4H18V2H16Z"; -var mdiCalendarAccountOutline = "M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M19,8H5V6H19M12,11C14,11 15,13.42 13.59,14.84C12.17,16.26 9.75,15.25 9.75,13.25C9.75,12 10.75,11 12,11M16.5,18.88V19H7.5V18.88C7.5,17.63 9.5,16.63 12,16.63C14.5,16.63 16.5,17.63 16.5,18.88Z"; -var mdiCalendarAlert = "M6 1V3H5C3.89 3 3 3.89 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3H18V1H16V3H8V1H6M5 8H19V19H5V7M11 9V14H13V9H11M11 16V18H13V16H11Z"; -var mdiCalendarArrowLeft = "M19 3H18V1H16V3H8V1H6V3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M19 19H5V8H19V19M12 10V12H16V15H12V17L8 13.5L12 10Z"; -var mdiCalendarArrowRight = "M19 3H18V1H16V3H8V1H6V3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M19 19H5V8H19V19M12 17V15H8V12H12V10L16 13.5L12 17Z"; -var mdiCalendarBlank = "M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1"; -var mdiCalendarBlankMultiple = "M21 17V8H7V17H21M21 3C22.1 3 23 3.9 23 5V17C23 18.1 22.1 19 21 19H7C5.89 19 5 18.1 5 17V5C5 3.9 5.9 3 7 3H8V1H10V3H18V1H20V3H21M3 21H17V23H3C1.89 23 1 22.1 1 21V9H3V21Z"; -var mdiCalendarBlankOutline = "M19,4H18V2H16V4H8V2H6V4H5C3.89,4 3,4.9 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M19,8H5V6H19V8Z"; -var mdiCalendarCheck = "M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M16.53,11.06L15.47,10L10.59,14.88L8.47,12.76L7.41,13.82L10.59,17L16.53,11.06Z"; -var mdiCalendarCheckOutline = "M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M5,8V6H19V8H5M10.56,18.46L16.5,12.53L15.43,11.47L10.56,16.34L8.45,14.23L7.39,15.29L10.56,18.46Z"; -var mdiCalendarClock = "M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z"; -var mdiCalendarClockOutline = "M6 1V3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H11.1C12.36 22.24 14.09 23 16 23C19.87 23 23 19.87 23 16C23 14.09 22.24 12.36 21 11.1V5C21 3.9 20.11 3 19 3H18V1H16V3H8V1M5 5H19V7H5M5 9H19V9.67C18.09 9.24 17.07 9 16 9C12.13 9 9 12.13 9 16C9 17.07 9.24 18.09 9.67 19H5M16 11.15C18.68 11.15 20.85 13.32 20.85 16C20.85 18.68 18.68 20.85 16 20.85C13.32 20.85 11.15 18.68 11.15 16C11.15 13.32 13.32 11.15 16 11.15M15 13V16.69L18.19 18.53L18.94 17.23L16.5 15.82V13Z"; -var mdiCalendarCursor = "M21.7 20.26L20.29 21.67L17.06 18.5L16 20.97L14 14L21 16L18.47 17.03L21.7 20.26M19 8H5V19H13.41L13.97 21H5C3.89 21 3 20.1 3 19L3 5C3 3.9 3.89 3 5 3H6V1H8V3H16V1H18V3H19C20.1 3 21 3.9 21 5V13.95L19 13.35V8M12 10V15H7V10H12Z"; -var mdiCalendarEdit = "M19,3H18V1H16V3H8V1H6V3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H10V19H5V8H19V9H21V5A2,2 0 0,0 19,3M21.7,13.35L20.7,14.35L18.65,12.35L19.65,11.35C19.85,11.14 20.19,11.13 20.42,11.35L21.7,12.63C21.89,12.83 21.89,13.15 21.7,13.35M12,18.94L18.07,12.88L20.12,14.88L14.06,21H12V18.94Z"; -var mdiCalendarEnd = "M22 14V22H20V18L16 22V19H11V17H16V14L20 18V14H22M5 19L9 19V21L5 21C3.9 21 3 20.1 3 19V5C3 3.89 3.9 3 5 3H6V.998H8V3H16V.998H18V3H19C20.11 3 21 3.89 21 5L21 12H19V8H5V19Z"; -var mdiCalendarExport = "M12,22L16,18H13V12H11V18H8M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H8V20H5V9H19V20H16V22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4Z"; -var mdiCalendarHeart = "M19,20V9H5V20H19M16,2H18V4H19A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2M12,18.17L11.42,17.64C9.36,15.77 8,14.54 8,13.03C8,11.8 8.97,10.83 10.2,10.83C10.9,10.83 11.56,11.15 12,11.66C12.44,11.15 13.1,10.83 13.8,10.83C15.03,10.83 16,11.8 16,13.03C16,14.54 14.64,15.77 12.58,17.64L12,18.17Z"; -var mdiCalendarImport = "M12,12L8,16H11V22H13V16H16M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H9V20H5V9H19V20H15V22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4Z"; -var mdiCalendarLock = "M13 21C13 21.35 13.07 21.69 13.18 22H5C3.9 22 3 21.11 3 20V6C3 4.89 3.89 4 5 4H6V2H8V4H16V2H18V4H19C20.1 4 21 4.89 21 6V11.78C20.42 11.38 19.74 11.13 19 11.05V9H5V20H13V21M22 17V21C22 21.55 21.55 22 21 22H16C15.45 22 15 21.55 15 21V17C15 16.45 15.45 16 16 16V15.5C16 14.12 17.12 13 18.5 13S21 14.12 21 15.5V16C21.55 16 22 16.45 22 17M20 15.5C20 14.67 19.33 14 18.5 14S17 14.67 17 15.5V16H20V15.5Z"; -var mdiCalendarLockOutline = "M13 20H5V10H19V11.05C19.74 11.13 20.42 11.38 21 11.78V6C21 4.89 20.11 4 19 4H18V2H16V4H8V2H6V4H5C3.89 4 3 4.9 3 6V20C3 21.11 3.9 22 5 22H13.18C13.07 21.69 13 21.35 13 21V20M5 6H19V8H5V6M21 16V15.5C21 14.12 19.88 13 18.5 13S16 14.12 16 15.5V16C15.45 16 15 16.45 15 17V21C15 21.55 15.45 22 16 22H21C21.55 22 22 21.55 22 21V17C22 16.45 21.55 16 21 16M20 16H17V15.5C17 14.67 17.67 14 18.5 14S20 14.67 20 15.5V16Z"; -var mdiCalendarMinus = "M19 19V8H5V19H19M16 1H18V3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.89 21 3 20.1 3 19V5C3 3.89 3.89 3 5 3H6V1H8V3H16V1M16 12.5V14.5H8V12.5H16Z"; -var mdiCalendarMonth = "M9,10V12H7V10H9M13,10V12H11V10H13M17,10V12H15V10H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H6V1H8V3H16V1H18V3H19M19,19V8H5V19H19M9,14V16H7V14H9M13,14V16H11V14H13M17,14V16H15V14H17Z"; -var mdiCalendarMonthOutline = "M7,12H9V14H7V12M21,6V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2H18V4H19A2,2 0 0,1 21,6M5,8H19V6H5V8M19,20V10H5V20H19M15,14V12H17V14H15M11,14V12H13V14H11M7,16H9V18H7V16M15,18V16H17V18H15M11,18V16H13V18H11Z"; -var mdiCalendarMultiple = "M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21M19,15H15V11H19V15Z"; -var mdiCalendarMultipleCheck = "M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M17.53,11.06L13.09,15.5L10.41,12.82L11.47,11.76L13.09,13.38L16.47,10L17.53,11.06M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21Z"; -var mdiCalendarMultiselect = "M19,19V8H5V19H19M16,1H18V3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1M7,10H9V12H7V10M15,10H17V12H15V10M11,14H13V16H11V14M15,14H17V16H15V14Z"; -var mdiCalendarOutline = "M19,4H18V2H16V4H8V2H6V4H5C3.89,4 3,4.9 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M19,8H5V6H19V8M12,13H17V18H12V13Z"; -var mdiCalendarPlus = "M19 19V8H5V19H19M16 1H18V3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.89 21 3 20.1 3 19V5C3 3.89 3.89 3 5 3H6V1H8V3H16V1M11 9.5H13V12.5H16V14.5H13V17.5H11V14.5H8V12.5H11V9.5Z"; -var mdiCalendarQuestion = "M6,1V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H18V1H16V3H8V1H6M5,8H19V19H5V8M12.19,9C11.32,9 10.62,9.2 10.08,9.59C9.56,10 9.3,10.57 9.31,11.36L9.32,11.39H11.25C11.26,11.09 11.35,10.86 11.53,10.7C11.71,10.55 11.93,10.47 12.19,10.47C12.5,10.47 12.76,10.57 12.94,10.75C13.12,10.94 13.2,11.2 13.2,11.5C13.2,11.82 13.13,12.09 12.97,12.32C12.83,12.55 12.62,12.75 12.36,12.91C11.85,13.25 11.5,13.55 11.31,13.82C11.11,14.08 11,14.5 11,15H13C13,14.69 13.04,14.44 13.13,14.26C13.22,14.08 13.39,13.9 13.64,13.74C14.09,13.5 14.46,13.21 14.75,12.81C15.04,12.41 15.19,12 15.19,11.5C15.19,10.74 14.92,10.13 14.38,9.68C13.85,9.23 13.12,9 12.19,9M11,16V18H13V16H11Z"; -var mdiCalendarRange = "M9,10H7V12H9V10M13,10H11V12H13V10M17,10H15V12H17V10M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V8H19V19Z"; -var mdiCalendarRangeOutline = "M7,12H9V14H7V12M21,6V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2H18V4H19A2,2 0 0,1 21,6M5,8H19V6H5V8M19,20V10H5V20H19M15,14H17V12H15V14M11,14H13V12H11V14Z"; -var mdiCalendarRefresh = "M19 3H18V1H16V3H8V1H6V3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H14C13.4 20.5 12.9 19.8 12.5 19H5V8H19V10.6C19.7 10.7 20.4 10.9 21 11.3V5C21 3.9 20.1 3 19 3M18 12.5C19.1 12.5 20.1 12.9 20.8 13.7L22 12.5V16.5H18L19.8 14.7C19.3 14.3 18.7 14 18 14C16.6 14 15.5 15.1 15.5 16.5S16.6 19 18 19C18.8 19 19.5 18.6 20 18H21.7C21.1 19.5 19.7 20.5 18 20.5C15.8 20.5 14 18.7 14 16.5S15.8 12.5 18 12.5Z"; -var mdiCalendarRefreshOutline = "M19 3H18V1H16V3H8V1H6V3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H14C13.4 20.5 12.9 19.8 12.5 19H5V9H19V10.6C19.7 10.7 20.4 10.9 21 11.3V5C21 3.9 20.1 3 19 3M19 7H5V5H19M18 12.5C19.1 12.5 20.1 12.9 20.8 13.7L22 12.5V16.5H18L19.8 14.7C19.3 14.3 18.7 14 18 14C16.6 14 15.5 15.1 15.5 16.5S16.6 19 18 19C18.8 19 19.5 18.6 20 18H21.7C21.1 19.5 19.7 20.5 18 20.5C15.8 20.5 14 18.7 14 16.5S15.8 12.5 18 12.5Z"; -var mdiCalendarRemove = "M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9.31,17L11.75,14.56L14.19,17L15.25,15.94L12.81,13.5L15.25,11.06L14.19,10L11.75,12.44L9.31,10L8.25,11.06L10.69,13.5L8.25,15.94L9.31,17Z"; -var mdiCalendarRemoveOutline = "M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M5,8V6H19V8H5M8.23,17.41L9.29,18.47L11.73,16.03L14.17,18.47L15.23,17.41L12.79,14.97L15.23,12.53L14.17,11.47L11.73,13.91L9.29,11.47L8.23,12.53L10.67,14.97L8.23,17.41Z"; -var mdiCalendarSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M19,8H5V19H9.5C9.81,19.75 10.26,20.42 10.81,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V13.03C20.5,12.22 19.8,11.54 19,11V8Z"; -var mdiCalendarStar = "M19,20H5V9H19M16,2V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4H18V2M10.88,13H7.27L10.19,15.11L9.08,18.56L12,16.43L14.92,18.56L13.8,15.12L16.72,13H13.12L12,9.56L10.88,13Z"; -var mdiCalendarStart = "M2 14H4V17H9V14L13 18L9 22V19H4V22H2V14M19 19V8H5V12H3L3 5C3 3.89 3.89 3 5 3H6V.998H8V3H16V.998H18V3H19C20.1 3 21 3.89 21 5V19C21 20.1 20.1 21 19 21L12.83 21L14.83 19L19 19Z"; -var mdiCalendarSync = "M18,11V12.5C21.19,12.5 23.09,16.05 21.33,18.71L20.24,17.62C21.06,15.96 19.85,14 18,14V15.5L15.75,13.25L18,11M18,22V20.5C14.81,20.5 12.91,16.95 14.67,14.29L15.76,15.38C14.94,17.04 16.15,19 18,19V17.5L20.25,19.75L18,22M19,3H18V1H16V3H8V1H6V3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H14C13.36,20.45 12.86,19.77 12.5,19H5V8H19V10.59C19.71,10.7 20.39,10.94 21,11.31V5A2,2 0 0,0 19,3Z"; -var mdiCalendarSyncOutline = "M18,11V12.5C21.19,12.5 23.09,16.05 21.33,18.71L20.24,17.62C21.06,15.96 19.85,14 18,14V15.5L15.75,13.25L18,11M18,22V20.5C14.81,20.5 12.91,16.95 14.67,14.29L15.76,15.38C14.94,17.04 16.15,19 18,19V17.5L20.25,19.75L18,22M19,3H18V1H16V3H8V1H6V3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H14C13.36,20.45 12.86,19.77 12.5,19H5V9H19V10.59C19.71,10.7 20.39,10.94 21,11.31V5A2,2 0 0,0 19,3M19,7H5V5H19"; -var mdiCalendarText = "M14,14H7V16H14M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M17,10H7V12H17V10Z"; -var mdiCalendarTextOutline = "M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M5,8V6H19V8H5M7,12H17V14H7V12M7,16H14V18H7V16Z"; -var mdiCalendarToday = "M7,10H12V15H7M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiCalendarWeek = "M6 1H8V3H16V1H18V3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.89 21 3 20.1 3 19V5C3 3.89 3.89 3 5 3H6V1M5 8V19H19V8H5M7 10H17V12H7V10Z"; -var mdiCalendarWeekBegin = "M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M9,10H7V17H9V10Z"; -var mdiCalendarWeekend = "M19,20V9H5V20H19M16,2H18V4H19A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2M7,18V11H9V18H7M15,11H17V18H15V11Z"; -var mdiCalendarWeekendOutline = "M19,4A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2H18V4H19M19,20V10H5V20H19M19,8V6H5V8H19M7,12H9V18H7V12M15,12H17V18H15V12Z"; -var mdiCallMade = "M9,5V7H15.59L4,18.59L5.41,20L17,8.41V15H19V5"; -var mdiCallMerge = "M17,20.41L18.41,19L15,15.59L13.59,17M7.5,8H11V13.59L5.59,19L7,20.41L13,14.41V8H16.5L12,3.5"; -var mdiCallMissed = "M19.59,7L12,14.59L6.41,9H11V7H3V15H5V10.41L12,17.41L21,8.41"; -var mdiCallReceived = "M20,5.41L18.59,4L7,15.59V9H5V19H15V17H8.41"; -var mdiCallSplit = "M14,4L16.29,6.29L13.41,9.17L14.83,10.59L17.71,7.71L20,10V4M10,4H4V10L6.29,7.71L11,12.41V20H13V11.59L7.71,6.29"; -var mdiCamcorder = "M7 2C4.24 2 2 4.24 2 7V20C2 21.1 2.9 22 4 22H10C11.1 22 12 21.1 12 20V7C12 4.24 9.76 2 7 2M5 20C4.45 20 4 19.55 4 19S4.45 18 5 18 6 18.45 6 19 5.55 20 5 20M7 10C5.34 10 4 8.66 4 7S5.34 4 7 4 10 5.34 10 7 8.66 10 7 10M22 9V14C22 15.1 21.1 16 20 16H13V14H20V9H13V7H20C21.1 7 22 7.9 22 9Z"; -var mdiCamcorderOff = "M22.1 21.5L9.4 8.8L2.4 1.8L1.1 3L2.7 4.6C2.2 5.3 2 6.1 2 7V20C2 21.1 2.9 22 4 22H10C11.1 22 12 21.1 12 20V13.9L13 14.9V16H14.1L20.8 22.7L22.1 21.5M5 20C4.5 20 4 19.5 4 19S4.5 18 5 18 6 18.5 6 19 5.5 20 5 20M7 10C5.3 10 4 8.7 4 7C4 6.7 4.1 6.4 4.2 6.1L8 9.9C7.6 9.9 7.3 10 7 10M7.2 4L5.5 2.3C6 2.1 6.5 2 7 2C9.8 2 12 4.2 12 7V8.8L10 6.8C9.9 5.3 8.7 4.1 7.2 4M20 9H13V7H20C21.1 7 22 7.9 22 9V14C22 15.1 21.1 16 20 16H19.2L17.2 14H20V9Z"; -var mdiCamera = "M4,4H7L9,2H15L17,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z"; -var mdiCameraAccount = "M4,5H7L9,3H15L17,5H20A2,2 0 0,1 22,7V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V7A2,2 0 0,1 4,5M16,17V16C16,14.67 13.33,14 12,14C10.67,14 8,14.67 8,16V17H16M12,9A2,2 0 0,0 10,11A2,2 0 0,0 12,13A2,2 0 0,0 14,11A2,2 0 0,0 12,9Z"; -var mdiCameraBurst = "M1,5H3V19H1V5M5,5H7V19H5V5M22,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H22A1,1 0 0,0 23,18V6A1,1 0 0,0 22,5M11,17L13.5,13.85L15.29,16L17.79,12.78L21,17H11Z"; -var mdiCameraControl = "M9,12C9,11.19 9.3,10.5 9.89,9.89C10.5,9.3 11.19,9 12,9C12.81,9 13.5,9.3 14.11,9.89C14.7,10.5 15,11.19 15,12C15,12.81 14.7,13.5 14.11,14.11C13.5,14.7 12.81,15 12,15C11.19,15 10.5,14.7 9.89,14.11C9.3,13.5 9,12.81 9,12M5.53,8.44L7.31,10.22L5.53,12L7.31,13.78L5.53,15.56L2,12L5.53,8.44M8.44,18.47L10.22,16.69L12,18.47L13.78,16.69L15.56,18.47L12,22L8.44,18.47M18.47,15.56L16.69,13.78L18.47,12L16.69,10.22L18.47,8.44L22,12L18.47,15.56M15.56,5.53L13.78,7.31L12,5.53L10.22,7.31L8.44,5.53L12,2L15.56,5.53Z"; -var mdiCameraEnhance = "M9,3L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5H16.83L15,3M12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18M12,17L13.25,14.25L16,13L13.25,11.75L12,9L10.75,11.75L8,13L10.75,14.25"; -var mdiCameraEnhanceOutline = "M12,10L11.06,12.06L9,13L11.06,13.94L12,16L12.94,13.94L15,13L12.94,12.06L12,10M20,5H16.83L15,3H9L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5M20,19H4V7H8.05L8.64,6.35L9.88,5H14.12L15.36,6.35L15.95,7H20V19M12,8A5,5 0 0,0 7,13A5,5 0 0,0 12,18A5,5 0 0,0 17,13A5,5 0 0,0 12,8M12,16A3,3 0 0,1 9,13A3,3 0 0,1 12,10A3,3 0 0,1 15,13A3,3 0 0,1 12,16Z"; -var mdiCameraFlip = "M20 5H17L15 3H9L7 5H4C2.9 5 2 5.9 2 7V19C2 20.11 2.9 21 4 21H20C21.11 21 22 20.11 22 19V7C22 5.9 21.11 5 20 5M5 12H7.1C7.65 9.29 10.29 7.55 13 8.1C13.76 8.25 14.43 8.59 15 9L13.56 10.45C13.11 10.17 12.58 10 12 10C10.74 10 9.6 10.8 9.18 12H11L8 15L5 12M16.91 14C16.36 16.71 13.72 18.45 11 17.9C10.25 17.74 9.58 17.41 9 17L10.44 15.55C10.9 15.83 11.43 16 12 16C13.27 16 14.41 15.2 14.83 14H13L16 11L19 14H16.91Z"; -var mdiCameraFlipOutline = "M20 5H16.83L15 3H9L7.17 5H4C2.9 5 2 5.9 2 7V19C2 20.11 2.9 21 4 21H20C21.11 21 22 20.11 22 19V7C22 5.9 21.11 5 20 5M20 19H4V7H8.05L9.88 5H14.12L16 7H20V19M5 12H7.1C7.65 9.29 10.29 7.55 13 8.1C13.76 8.25 14.43 8.59 15 9L13.56 10.45C13.11 10.17 12.58 10 12 10C10.74 10 9.6 10.8 9.18 12H11L8 15L5 12M16.91 14C16.36 16.71 13.72 18.45 11 17.9C10.25 17.74 9.58 17.41 9 17L10.44 15.55C10.9 15.83 11.43 16 12 16C13.27 16 14.41 15.2 14.83 14H13L16 11L19 14H16.91Z"; -var mdiCameraFront = "M7,2H17V12.5C17,10.83 13.67,10 12,10C10.33,10 7,10.83 7,12.5M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M12,8A2,2 0 0,0 14,6A2,2 0 0,0 12,4A2,2 0 0,0 10,6A2,2 0 0,0 12,8M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z"; -var mdiCameraFrontVariant = "M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M11,1V3H13V1H11M6,4V16.5C6,15.12 8.69,14 12,14C15.31,14 18,15.12 18,16.5V4H6M13,18H9V20H13V22L16,19L13,16V18Z"; -var mdiCameraGopro = "M20,5H15A2,2 0 0,0 13,7V12A2,2 0 0,0 15,14H20A2,2 0 0,0 22,12V7A2,2 0 0,0 20,5M17.5,12.5A3,3 0 0,1 14.5,9.5A3,3 0 0,1 17.5,6.5A3,3 0 0,1 20.5,9.5A3,3 0 0,1 17.5,12.5M17.5,11A1.5,1.5 0 0,1 16,9.5A1.5,1.5 0 0,1 17.5,8A1.5,1.5 0 0,1 19,9.5A1.5,1.5 0 0,1 17.5,11M12,15V5H4A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V15H12M10,12H4V7H10V12Z"; -var mdiCameraImage = "M4,5H7L9,3H15L17,5H20A2,2 0 0,1 22,7V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V7A2,2 0 0,1 4,5M13.09,9.45L11.05,12.18L12.6,14.25L11.73,14.91L9.27,11.64L6,16H18L13.09,9.45Z"; -var mdiCameraIris = "M13.73,15L9.83,21.76C10.53,21.91 11.25,22 12,22C14.4,22 16.6,21.15 18.32,19.75L14.66,13.4M2.46,15C3.38,17.92 5.61,20.26 8.45,21.34L12.12,15M8.54,12L4.64,5.25C3,7 2,9.39 2,12C2,12.68 2.07,13.35 2.2,14H9.69M21.8,10H14.31L14.6,10.5L19.36,18.75C21,16.97 22,14.6 22,12C22,11.31 21.93,10.64 21.8,10M21.54,9C20.62,6.07 18.39,3.74 15.55,2.66L11.88,9M9.4,10.5L14.17,2.24C13.47,2.09 12.75,2 12,2C9.6,2 7.4,2.84 5.68,4.25L9.34,10.6L9.4,10.5Z"; -var mdiCameraMeteringCenter = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 12,10.5M12,7.5C14.14,7.5 15.93,9 16.39,11H14.83C14.42,9.83 13.31,9 12,9C10.69,9 9.58,9.83 9.17,11H7.61C8.07,9 9.86,7.5 12,7.5M12,16.5C9.86,16.5 8.07,15 7.61,13H9.17C9.58,14.17 10.69,15 12,15C13.31,15 14.42,14.17 14.83,13H16.39C15.93,15 14.14,16.5 12,16.5Z"; -var mdiCameraMeteringMatrix = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M5.5,7.5H11V9.17C10.15,9.47 9.47,10.15 9.17,11H5.5V7.5M18.5,7.5V11H14.83C14.53,10.15 13.85,9.47 13,9.17V7.5H18.5M18.5,16.5H13V14.83C13.85,14.53 14.53,13.85 14.83,13H18.5V16.5M5.5,16.5V13H9.17C9.47,13.85 10.15,14.53 11,14.83V16.5H5.5M12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 12,10.5Z"; -var mdiCameraMeteringPartial = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M12,7.5C14.14,7.5 15.93,9 16.39,11H14.83C14.42,9.83 13.31,9 12,9C10.69,9 9.58,9.83 9.17,11H7.61C8.07,9 9.86,7.5 12,7.5M12,16.5C9.86,16.5 8.07,15 7.61,13H9.17C9.58,14.17 10.69,15 12,15C13.31,15 14.42,14.17 14.83,13H16.39C15.93,15 14.14,16.5 12,16.5Z"; -var mdiCameraMeteringSpot = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 12,10.5Z"; -var mdiCameraOff = "M1.2,4.47L2.5,3.2L20,20.72L18.73,22L16.73,20H4A2,2 0 0,1 2,18V6C2,5.78 2.04,5.57 2.1,5.37L1.2,4.47M7,4L9,2H15L17,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L16.33,14.5C16.76,13.77 17,12.91 17,12A5,5 0 0,0 12,7C11.09,7 10.23,7.24 9.5,7.67L5.82,4H7M7,12A5,5 0 0,0 12,17C12.5,17 13.03,16.92 13.5,16.77L11.72,15C10.29,14.85 9.15,13.71 9,12.28L7.23,10.5C7.08,10.97 7,11.5 7,12M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9Z"; -var mdiCameraOutline = "M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M20,18H4V6H8.05L9.88,4H14.12L15.95,6H20V18M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15Z"; -var mdiCameraPartyMode = "M12,17C10.37,17 8.94,16.21 8,15H12A3,3 0 0,0 15,12C15,11.65 14.93,11.31 14.82,11H16.9C16.96,11.32 17,11.66 17,12A5,5 0 0,1 12,17M12,7C13.63,7 15.06,7.79 16,9H12A3,3 0 0,0 9,12C9,12.35 9.07,12.68 9.18,13H7.1C7.03,12.68 7,12.34 7,12A5,5 0 0,1 12,7M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"; -var mdiCameraPlus = "M3 4V1H5V4H8V6H5V9H3V6H0V4M6 10V7H9V4H16L17.8 6H21C22.1 6 23 6.9 23 8V20C23 21.1 22.1 22 21 22H5C3.9 22 3 21.1 3 20V10M13 19C17.45 19 19.69 13.62 16.54 10.46C13.39 7.31 8 9.55 8 14C8 16.76 10.24 19 13 19M9.8 14C9.8 16.85 13.25 18.28 15.26 16.26C17.28 14.25 15.85 10.8 13 10.8C11.24 10.8 9.8 12.24 9.8 14Z"; -var mdiCameraPlusOutline = "M21 6H17.8L16 4H10V6H15.1L17 8H21V20H5V11H3V20C3 21.1 3.9 22 5 22H21C22.1 22 23 21.1 23 20V8C23 6.9 22.1 6 21 6M8 14C8 18.45 13.39 20.69 16.54 17.54C19.69 14.39 17.45 9 13 9C10.24 9 8 11.24 8 14M13 11C14.64 11.05 15.95 12.36 16 14C15.95 15.64 14.64 16.95 13 17C11.36 16.95 10.05 15.64 10 14C10.05 12.36 11.36 11.05 13 11M5 6H8V4H5V1H3V4H0V6H3V9H5"; -var mdiCameraRear = "M12,6C10.89,6 10,5.1 10,4A2,2 0 0,1 12,2C13.09,2 14,2.9 14,4A2,2 0 0,1 12,6M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z"; -var mdiCameraRearVariant = "M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,2A2,2 0 0,0 10,4A2,2 0 0,0 12,6A2,2 0 0,0 14,4A2,2 0 0,0 12,2M13,18H9V20H13V22L16,19L13,16V18Z"; -var mdiCameraRetake = "M20,5H17L15,3H9L7,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5M12,18C10.92,18 9.86,17.65 9,17L10.44,15.56C10.91,15.85 11.45,16 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10C10.74,10 9.6,10.8 9.18,12H11L8,15L5,12H7.1C7.65,9.29 10.29,7.55 13,8.1C15.7,8.65 17.45,11.29 16.9,14C16.42,16.33 14.38,18 12,18Z"; -var mdiCameraRetakeOutline = "M20,5H16.83L15,3H9L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5M20,19H4V7H8.05L9.88,5H14.12L16,7H20V19M12,18C10.92,18 9.86,17.65 9,17L10.44,15.56C10.91,15.85 11.45,16 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10C10.74,10 9.6,10.8 9.18,12H11L8,15L5,12H7.1C7.65,9.29 10.29,7.55 13,8.1C15.7,8.65 17.45,11.29 16.9,14C16.42,16.33 14.38,18 12,18Z"; -var mdiCameraSwitch = "M15,15.5V13H9V15.5L5.5,12L9,8.5V11H15V8.5L18.5,12M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"; -var mdiCameraSwitchOutline = "M20 4H16.8L15 2H9L7.2 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4M9.9 4H14.1L15.9 6H20V18H4V6H8.1M15 11H9V8.5L5.5 12L9 15.5V13H15V15.5L18.5 12L15 8.5V11Z"; -var mdiCameraTimer = "M4.94,6.35C4.55,5.96 4.55,5.32 4.94,4.93C5.33,4.54 5.96,4.54 6.35,4.93L13.07,10.31L13.42,10.59C14.2,11.37 14.2,12.64 13.42,13.42C12.64,14.2 11.37,14.2 10.59,13.42L10.31,13.07L4.94,6.35M12,20A8,8 0 0,0 20,12C20,9.79 19.1,7.79 17.66,6.34L19.07,4.93C20.88,6.74 22,9.24 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12H4A8,8 0 0,0 12,20M12,1A2,2 0 0,1 14,3A2,2 0 0,1 12,5A2,2 0 0,1 10,3A2,2 0 0,1 12,1Z"; -var mdiCameraWireless = "M12,10.8A3.2,3.2 0 0,1 15.2,14A3.2,3.2 0 0,1 12,17.2A3.2,3.2 0 0,1 8.8,14A3.2,3.2 0 0,1 12,10.8M16,3.33V2A6,6 0 0,1 22,8H20.67C20.67,5.42 18.58,3.33 16,3.33M16,6V4.67C17.84,4.67 19.33,6.16 19.33,8H18C18,6.89 17.11,6 16,6M17,9H22V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8A2,2 0 0,1 4,6H7.17L9,4H15V7C16.11,7 17,7.89 17,9M12,19A5,5 0 0,0 17,14A5,5 0 0,0 12,9A5,5 0 0,0 7,14A5,5 0 0,0 12,19Z"; -var mdiCameraWirelessOutline = "M20,9V20H4V8H8.05L9.88,6H15V4H9L7.17,6H4A2,2 0 0,0 2,8V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V9H20M20.67,8H22C22,4.68 19.31,2 16,2V3.33C18.58,3.33 20.66,5.41 20.67,8M18,8H19.33C19.32,6.15 17.84,4.67 16,4.67V6C17.11,6 18,6.89 18,8M7,14A5,5 0 0,0 12,19A5,5 0 0,0 17,14A5,5 0 0,0 12,9A5,5 0 0,0 7,14M15,14A3,3 0 0,1 12,17A3,3 0 0,1 9,14A3,3 0 0,1 12,11A3,3 0 0,1 15,14Z"; -var mdiCampfire = "M15.9,18.5L21.9,20.1L21.5,22L12.1,19.5L2.7,22L2.2,20.1L8.2,18.5L2.1,16.9L2.6,15L12,17.5L21.4,15L21.9,16.9L15.9,18.5M16.07,7.92C15.91,7.7 15.71,7.5 15.5,7.33C15.05,6.9 14.5,6.59 14.06,6.13C13,5.08 12.79,3.34 13.44,2C12.79,2.17 12.18,2.54 11.67,2.95C9.84,4.46 9.11,7.1 10,9.38C10,9.45 10.04,9.53 10.04,9.62C10.04,9.78 9.93,9.92 9.79,10C9.63,10.05 9.46,10 9.33,9.9C9.28,9.86 9.25,9.82 9.22,9.77C8.42,8.74 8.29,7.26 8.84,6.07C7.65,7.06 7,8.72 7.11,10.29C7.13,10.65 7.18,11 7.3,11.36C7.41,11.8 7.59,12.23 7.82,12.61C8.57,13.86 9.9,14.76 11.32,14.94C12.84,15.14 14.46,14.85 15.63,13.79C16.93,12.59 17.4,10.67 16.71,9L16.61,8.83C16.47,8.5 16.28,8.2 16.04,7.93L16.07,7.92M13.83,12.47C13.63,12.65 13.31,12.83 13.05,12.91C12.26,13.19 11.46,12.79 11,12.31C11.84,12.11 12.34,11.47 12.5,10.83C12.61,10.25 12.39,9.78 12.29,9.22C12.21,8.69 12.22,8.23 12.42,7.73C12.55,8 12.69,8.28 12.86,8.5C13.41,9.22 14.27,9.54 14.45,10.5C14.47,10.63 14.5,10.72 14.5,10.83C14.5,11.43 14.26,12.07 13.82,12.47"; -var mdiCancel = "M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z"; -var mdiCandle = "M12.5,2C10.84,2 9.5,5.34 9.5,7A3,3 0 0,0 12.5,10A3,3 0 0,0 15.5,7C15.5,5.34 14.16,2 12.5,2M12.5,6.5A1,1 0 0,1 13.5,7.5A1,1 0 0,1 12.5,8.5A1,1 0 0,1 11.5,7.5A1,1 0 0,1 12.5,6.5M10,11A1,1 0 0,0 9,12V20H7A1,1 0 0,1 6,19V18A1,1 0 0,0 5,17A1,1 0 0,0 4,18V19A3,3 0 0,0 7,22H19A1,1 0 0,0 20,21A1,1 0 0,0 19,20H16V12A1,1 0 0,0 15,11H10Z"; -var mdiCandycane = "M10,10A2,2 0 0,1 8,12A2,2 0 0,1 6,10V8C6,7.37 6.1,6.77 6.27,6.2L10,9.93V10M12,2C12.74,2 13.44,2.13 14.09,2.38L11.97,6C11.14,6 10.44,6.5 10.15,7.25L7.24,4.34C8.34,2.92 10.06,2 12,2M17.76,6.31L14,10.07V8C14,7.62 13.9,7.27 13.72,6.97L15.83,3.38C16.74,4.13 17.42,5.15 17.76,6.31M18,13.09L14,17.09V12.9L18,8.9V13.09M18,20A2,2 0 0,1 16,22A2,2 0 0,1 14,20V19.91L18,15.91V20Z"; -var mdiCannabis = "M11.5,22V17.35C11,18.13 10,19.09 8.03,19.81C8.03,19.81 8.53,18.1 9.94,16.95C8.64,17.23 6.68,17.19 4,16C4,16 6.47,14.59 9.28,14.97C7.69,14 5.7,12.08 4.17,8.11C4.17,8.11 8.67,9.34 10.91,13.14C8.88,8.24 12,2 12,2C14.43,7.47 13.91,11.1 13.12,13.1C15.37,9.33 19.83,8.11 19.83,8.11C18.3,12.08 16.31,14 14.72,14.97C17.53,14.59 20,16 20,16C17.32,17.19 15.36,17.23 14.06,16.95C15.47,18.1 15.97,19.81 15.97,19.81C14,19.09 13,18.13 12.5,17.35V22H11.5Z"; -var mdiCannabisOff = "M16.62 13.42L14.5 11.32C16.84 8.94 19.83 8.11 19.83 8.11C18.87 10.6 17.73 12.27 16.62 13.42M12 2C12 2 10.86 4.3 10.41 7.21L13.72 10.5C13.92 8.45 13.61 5.63 12 2M20.84 22.73L22.11 21.46L2.39 1.73L1.11 3L8.62 10.5C6.5 8.75 4.17 8.11 4.17 8.11C5.7 12.08 7.69 14 9.28 14.97C6.47 14.59 4 16 4 16C6.68 17.19 8.64 17.23 9.94 16.95C8.53 18.1 8.03 19.81 8.03 19.81C10 19.09 11 18.13 11.5 17.35V22H12.5V17.35C13 18.13 14 19.09 15.97 19.81C15.97 19.81 15.47 18.1 14.06 16.95C14.39 17 14.77 17.07 15.2 17.09L20.84 22.73Z"; -var mdiCapsLock = "M9.96,13.71L12,8.29L14.03,13.72M11.14,6L6.43,18H8.36L9.32,15.43H14.68L15.64,18H17.57L12.86,6H11.14M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.9,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.1,2 20,2M20,20H4V4H20V20Z"; -var mdiCar = "M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z"; -var mdiCar2Plus = "M8 16C8 13.6 9.1 11.5 10.7 10H3L4.5 5.5H15.5L16.3 8C16.9 8 17.5 8.1 18 8.3L16.9 5C16.7 4.4 16.1 4 15.5 4H4.5C3.8 4 3.3 4.4 3.1 5L1 11V19C1 19.5 1.5 20 2 20H3C3.5 20 4 19.5 4 19V18H8.3C8.1 17.4 8 16.7 8 16M4.5 15C3.7 15 3 14.3 3 13.5S3.7 12 4.5 12 6 12.7 6 13.5 5.3 15 4.5 15M16 20V18H13V17H14C15.1 17 16 16.1 16 15V14C16 12.9 15.1 12 14 12H11V14H14V15H13C11.9 15 11 15.9 11 17V20M23 17H21V19H19V17H17V15H19V13H21V15H23V17Z"; -var mdiCar3Plus = "M16.9 5C16.7 4.4 16.1 4 15.5 4H4.5C3.8 4 3.3 4.4 3.1 5L1 11V19C1 19.5 1.5 20 2 20H3C3.5 20 4 19.5 4 19V18H8.3C8.1 17.4 8 16.7 8 16C8 13.6 9.1 11.5 10.7 10H3L4.5 5.5H15.5L16.3 8C16.9 8 17.5 8.1 18 8.3L16.9 5M4.5 12C5.3 12 6 12.7 6 13.5S5.3 15 4.5 15 3 14.3 3 13.5 3.7 12 4.5 12M23 17H21V19H19V17H17V15H19V13H21V15H23V17M14.5 16C15.3 16 16 14.8 16 14C16 12.9 15.1 12 14 12H11V14H14V15H12V17H14V18H11V20H14C15.1 20 16 19.1 16 18C16 17.2 15.3 16 14.5 16Z"; -var mdiCarArrowLeft = "M12 18C12 14.69 14.69 12 18 12C19.09 12 20.12 12.3 21 12.81V12L18.92 6C18.72 5.42 18.16 5 17.5 5H6.5C5.84 5 5.28 5.42 5.08 6L3 12V20C3 20.55 3.45 21 4 21H5C5.55 21 6 20.55 6 20V19H12.09C12.04 18.67 12 18.34 12 18M6.5 6.5H17.5L19 11H5L6.5 6.5M6.5 16C5.67 16 5 15.33 5 14.5S5.67 13 6.5 13 8 13.67 8 14.5 7.33 16 6.5 16M18 15V17H22V19H18V21L15 18L18 15"; -var mdiCarArrowRight = "M12 18C12 14.69 14.69 12 18 12C19.09 12 20.12 12.3 21 12.81V12L18.92 6C18.72 5.42 18.16 5 17.5 5H6.5C5.84 5 5.28 5.42 5.08 6L3 12V20C3 20.55 3.45 21 4 21H5C5.55 21 6 20.55 6 20V19H12.09C12.04 18.67 12 18.34 12 18M6.5 6.5H17.5L19 11H5L6.5 6.5M6.5 16C5.67 16 5 15.33 5 14.5S5.67 13 6.5 13 8 13.67 8 14.5 7.33 16 6.5 16M19 21V19H15V17H19V15L22 18L19 21"; -var mdiCarBack = "M6,11L7,7H17L18,11M18.92,6C18.71,5.4 18.14,5 17.5,5H6.5C5.86,5 5.29,5.4 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V18H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6M7,16H5V14H7V16M19,16H17V14H19V16M14,16H10V14H14V16Z"; -var mdiCarBattery = "M4,3V6H1V20H23V6H20V3H14V6H10V3H4M3,8H21V18H3V8M15,10V12H13V14H15V16H17V14H19V12H17V10H15M5,12V14H11V12H5Z"; -var mdiCarBrakeAbs = "M24,12C24,15.31 22.66,18.31 20.5,20.5L19.42,19.42C21.32,17.5 22.5,14.9 22.5,12C22.5,9.11 21.32,6.5 19.42,4.58L20.5,3.5C22.66,5.69 24,8.69 24,12M20,9.6V8H16.8C15.92,8 15.2,8.72 15.2,9.6V11.2A1.6,1.6 0 0,0 16.8,12.8H18.4V14.4H15.2V16H18.4C19.28,16 20,15.28 20,14.4V12.8A1.6,1.6 0 0,0 18.4,11.2H16.8V9.6H20M8.42,6C9.47,5.37 10.69,5 12,5C13.31,5 14.53,5.37 15.58,6H18.69C17.05,4.16 14.66,3 12,3C9.34,3 6.95,4.16 5.31,6H8.42M13.2,12C13.84,12 14.4,12.56 14.4,13.2V14.4A1.6,1.6 0 0,1 12.8,16H9.6V8H12.8A1.6,1.6 0 0,1 14.4,9.6V10.8C14.4,11.44 13.84,12 13.2,12M12.8,12.8H11.2V14.4H12.8V12.8M12.8,9.6H11.2V11.2H12.8V9.6M4.58,4.58L3.5,3.5C1.34,5.69 0,8.69 0,12C0,15.31 1.34,18.31 3.5,20.5L4.58,19.42C2.68,17.5 1.5,14.9 1.5,12C1.5,9.11 2.68,6.5 4.58,4.58M7.2,16V12.8H5.6V16H4V9.6A1.6,1.6 0 0,1 5.6,8H7.2C8.08,8 8.8,8.72 8.8,9.6V16H7.2M7.2,11.2V9.6H5.6V11.2H7.2M15.58,18C14.53,18.63 13.31,19 12,19C10.69,19 9.47,18.63 8.42,18H5.31C6.95,19.84 9.34,21 12,21C14.66,21 17.05,19.84 18.69,18H15.58Z"; -var mdiCarBrakeAlert = "M11,15H13V17H11V15M11,7H13V13H11V7M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M12,19C8.14,19 5,15.86 5,12C5,8.14 8.14,5 12,5C15.86,5 19,8.14 19,12C19,15.86 15.86,19 12,19M20.5,20.5C22.66,18.31 24,15.31 24,12C24,8.69 22.66,5.69 20.5,3.5L19.42,4.58C21.32,6.5 22.5,9.11 22.5,12C22.5,14.9 21.32,17.5 19.42,19.42L20.5,20.5M4.58,19.42C2.68,17.5 1.5,14.9 1.5,12C1.5,9.11 2.68,6.5 4.58,4.58L3.5,3.5C1.34,5.69 0,8.69 0,12C0,15.31 1.34,18.31 3.5,20.5L4.58,19.42Z"; -var mdiCarBrakeHold = "M12,3C7,3 3,7 3,12C3,17 7,21 12,21C17,21 21,17 21,12C21,7 17,3 12,3M12,19C8.1,19 5,15.9 5,12C5,8.1 8.1,5 12,5C15.9,5 19,8.1 19,12C19,15.9 15.9,19 12,19M20.5,20.5C22.7,18.3 24,15.3 24,12C24,8.7 22.7,5.7 20.5,3.5L19.4,4.6C21.3,6.5 22.5,9.1 22.5,12C22.5,14.9 21.3,17.5 19.4,19.4L20.5,20.5M4.6,19.4C2.7,17.5 1.5,14.9 1.5,12C1.5,9.1 2.7,6.5 4.6,4.6L3.5,3.5C1.3,5.7 0,8.7 0,12C0,15.3 1.3,18.3 3.5,20.5L4.6,19.4M9,7V17H11V13H13V17H15V7H13V11H11V7H9Z"; -var mdiCarBrakeParking = "M12,3C7,3 3,7 3,12C3,17 7,21 12,21C17,21 21,17 21,12C21,7 17,3 12,3M12,19C8.1,19 5,15.9 5,12C5,8.1 8.1,5 12,5C15.9,5 19,8.1 19,12C19,15.9 15.9,19 12,19M20.5,20.5C22.7,18.3 24,15.3 24,12C24,8.7 22.7,5.7 20.5,3.5L19.4,4.6C21.3,6.5 22.5,9.1 22.5,12C22.5,14.9 21.3,17.5 19.4,19.4L20.5,20.5M4.6,19.4C2.7,17.5 1.5,14.9 1.5,12C1.5,9.1 2.7,6.5 4.6,4.6L3.5,3.5C1.3,5.7 0,8.7 0,12C0,15.3 1.3,18.3 3.5,20.5L4.6,19.4M9.5,7V17H11.5V13H13.5A2,2 0 0,0 15.5,11V9A2,2 0 0,0 13.5,7H9.5M11.5,9H13.5V11H11.5V9Z"; -var mdiCarBrakeRetarder = "M12 3C7 3 3 7 3 12S7 21 12 21 21 17 21 12 17 3 12 3M12 19C8.1 19 5 15.9 5 12S8.1 5 12 5 19 8.1 19 12 15.9 19 12 19M20.5 20.5C22.7 18.3 24 15.3 24 12S22.7 5.7 20.5 3.5L19.4 4.6C21.3 6.5 22.5 9.1 22.5 12S21.3 17.5 19.4 19.4L20.5 20.5M4.6 19.4C2.7 17.5 1.5 14.9 1.5 12S2.7 6.5 4.6 4.6L3.5 3.5C1.3 5.7 0 8.7 0 12S1.3 18.3 3.5 20.5L4.6 19.4M15.3 10.5C15.96 10.5 16.5 11.17 16.5 12C16.5 12.81 15.95 13.5 15.3 13.5C14.93 13.5 14.66 13.29 14.5 13.11L14.47 13.08L14.44 13.05L13.38 12L14.47 10.92L14.5 10.89L14.53 10.86C14.74 10.63 15 10.5 15.3 10.5M8.7 10.5C9.07 10.5 9.34 10.71 9.5 10.88L9.5 10.92L9.56 10.95L10.62 12L9.53 13.08L9.5 13.11L9.47 13.15C9.26 13.37 9 13.5 8.7 13.5C8.05 13.5 7.5 12.81 7.5 12S8.05 10.5 8.7 10.5M15.3 9C14.58 9 13.9 9.31 13.42 9.85L12 11.25L10.61 9.88C10.1 9.31 9.42 9 8.7 9C7.21 9 6 10.35 6 12S7.21 15 8.7 15C9.42 15 10.1 14.69 10.59 14.15L12 12.75L13.39 14.12C13.9 14.68 14.58 15 15.3 15C16.79 15 18 13.65 18 12C18 10.33 16.79 9 15.3 9Z"; -var mdiCarChildSeat = "M17 4.5C17 5.9 15.9 7 14.5 7S12 5.9 12 4.5 13.1 2 14.5 2 17 3.1 17 4.5M15 8H14.2C12.1 8 10.1 6.8 9.1 4.9C9 4.8 8.9 4.7 8.9 4.6L7.1 5.4C7.6 6.8 9.2 8.6 11.5 9.5L9.7 14.5L5.8 13.4L3 18.9L5 19.4L6.8 15.8L11.3 17C12.3 17.2 13.3 16.7 13.7 15.8L16 9.4C16.2 8.7 15.7 8 15 8M18.9 7L15.5 16.4C14.9 18 13.4 19 11.8 19C11.5 19 11.1 19 10.8 18.9L7.9 18.1L7 19.9L9 20.4L10.4 20.8C10.9 20.9 11.4 21 11.9 21C14.4 21 16.6 19.5 17.5 17.1L21 7H18.9Z"; -var mdiCarClutch = "M10 18.84L14 20.7V23L8 20V14H5V10H8V4L14 1V3.3L10 5.16V18.84M19 10H15V5.41L12 6.8V17.2L15 18.6V14H19V10Z"; -var mdiCarCog = "M6.5 5C5.84 5 5.28 5.42 5.08 6L3 12V20A1 1 0 0 0 4 21H5A1 1 0 0 0 6 20V19H11.3A7 7 0 0 1 11 17A7 7 0 0 1 14.41 11H5L6.5 6.5H17.5L18.68 10.03A7 7 0 0 1 20.47 10.46L18.92 6C18.72 5.42 18.16 5 17.5 5H6.5M17 12C16.87 12 16.76 12.09 16.74 12.21L16.55 13.53C16.25 13.66 15.96 13.82 15.7 14L14.46 13.5C14.35 13.5 14.22 13.5 14.15 13.63L13.15 15.36C13.09 15.47 13.11 15.6 13.21 15.68L14.27 16.5C14.25 16.67 14.24 16.83 14.24 17C14.24 17.17 14.25 17.33 14.27 17.5L13.21 18.32C13.12 18.4 13.09 18.53 13.15 18.64L14.15 20.37C14.21 20.5 14.34 20.5 14.46 20.5L15.7 20C15.96 20.18 16.24 20.35 16.55 20.47L16.74 21.79C16.76 21.91 16.86 22 17 22H19C19.11 22 19.22 21.91 19.24 21.79L19.43 20.47C19.73 20.34 20 20.18 20.27 20L21.5 20.5C21.63 20.5 21.76 20.5 21.83 20.37L22.83 18.64C22.89 18.53 22.86 18.4 22.77 18.32L21.7 17.5C21.72 17.33 21.74 17.17 21.74 17C21.74 16.83 21.73 16.67 21.7 16.5L22.76 15.68C22.85 15.6 22.88 15.47 22.82 15.36L21.82 13.63C21.76 13.5 21.63 13.5 21.5 13.5L20.27 14C20 13.82 19.73 13.65 19.42 13.53L19.23 12.21C19.22 12.09 19.11 12 19 12H17M6.5 13A1.5 1.5 0 0 1 8 14.5A1.5 1.5 0 0 1 6.5 16A1.5 1.5 0 0 1 5 14.5A1.5 1.5 0 0 1 6.5 13M18 15.5C18.83 15.5 19.5 16.17 19.5 17C19.5 17.83 18.83 18.5 18 18.5C17.16 18.5 16.5 17.83 16.5 17C16.5 16.17 17.17 15.5 18 15.5Z"; -var mdiCarConnected = "M5,14H19L17.5,9.5H6.5L5,14M17.5,19A1.5,1.5 0 0,0 19,17.5A1.5,1.5 0 0,0 17.5,16A1.5,1.5 0 0,0 16,17.5A1.5,1.5 0 0,0 17.5,19M6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19M18.92,9L21,15V23A1,1 0 0,1 20,24H19A1,1 0 0,1 18,23V22H6V23A1,1 0 0,1 5,24H4A1,1 0 0,1 3,23V15L5.08,9C5.28,8.42 5.85,8 6.5,8H17.5C18.15,8 18.72,8.42 18.92,9M12,0C14.12,0 16.15,0.86 17.65,2.35L16.23,3.77C15.11,2.65 13.58,2 12,2C10.42,2 8.89,2.65 7.77,3.77L6.36,2.35C7.85,0.86 9.88,0 12,0M12,4C13.06,4 14.07,4.44 14.82,5.18L13.4,6.6C13.03,6.23 12.53,6 12,6C11.5,6 10.97,6.23 10.6,6.6L9.18,5.18C9.93,4.44 10.94,4 12,4Z"; -var mdiCarConvertible = "M16,6L15,6.75L17.5,10H13.5V8.5H12V10H3C1.89,10 1,10.89 1,12V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19L16,6M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; -var mdiCarCoolantLevel = "M19 7V5H21V3H13V5H15V7H1V21H23V7H19M21 14.42C20.71 14.13 20.5 14 20 14C19.33 14 19.21 14.21 18.71 14.71S17.33 16 16 16 13.79 15.21 13.29 14.71 12.67 14 12 14C11.78 14 11.63 14.03 11.5 14.08C11.22 14.18 11.05 14.37 10.71 14.71C10.21 15.21 9.33 16 8 16S5.79 15.21 5.29 14.71 4.67 14 4 14C3.5 14 3.29 14.13 3 14.42V9H21V14.42Z"; -var mdiCarCruiseControl = "M22,15C22,17.6 20.8,19.9 18.9,21.3L18.4,20.8L16.3,18.7L17.7,17.3L18.9,18.5C19.4,17.8 19.8,16.9 19.9,16H18V14H19.9C19.7,13.1 19.4,12.3 18.9,11.5L17.7,12.7L16.3,11.3L17.5,10.1C16.8,9.6 15.9,9.2 15,9.1V11H13V9.1C12.1,9.3 11.3,9.6 10.5,10.1L13.5,13.1C13.7,13.1 13.8,13 14,13A2,2 0 0,1 16,15A2,2 0 0,1 14,17A2,2 0 0,1 12,15C12,14.8 12,14.7 12.1,14.5L9.1,11.5C8.6,12.2 8.2,13.1 8.1,14H10V16H8.1C8.3,16.9 8.6,17.7 9.1,18.5L10.3,17.3L11.7,18.7L9.1,21.3C7.2,19.9 6,17.6 6,15A8,8 0 0,1 14,7A8,8 0 0,1 22,15M6.7,5.3L3.4,2L2,3.4L5.3,6.7L4,8H8V4L6.7,5.3Z"; -var mdiCarDefrostFront = "M15,23C14.7,23 14.5,22.9 14.3,22.7C13.9,22.3 14,21.7 14.4,21.3V21.3C14.9,20.9 16.1,19.5 16.1,18.4C16.1,17.8 15.7,17.2 15.3,16.5C14.8,15.7 14.1,14.7 14.1,13.5C14.1,11.2 15.4,10.3 15.6,10.2C16.1,9.9 16.7,10.1 17,10.5C17.3,11 17.1,11.6 16.7,11.9V11.9C16.7,11.9 16.2,12.3 16.2,13.5C16.2,14.1 16.6,14.7 17,15.4C17.5,16.2 18.2,17.2 18.2,18.4C18.2,20.6 16.1,22.6 15.9,22.8C15.5,22.9 15.2,23 15,23M11.7,22.7C11.9,22.5 14,20.5 14,18.3C14,17.1 13.4,16.1 12.8,15.3C12.4,14.6 12,14 12,13.4C12,12.2 12.5,11.8 12.5,11.8V11.8C13,11.5 13.1,10.9 12.8,10.4C12.5,9.9 11.9,9.8 11.4,10.1C11.2,10.2 9.9,11.1 9.9,13.4C9.9,14.6 10.5,15.6 11.1,16.4C11.5,17.1 11.9,17.7 11.9,18.3C11.9,19.4 10.7,20.8 10.2,21.2V21.2C9.8,21.6 9.8,22.2 10.1,22.6C10.3,22.8 10.6,22.9 10.8,22.9C11.2,23 11.5,22.9 11.7,22.7M7.7,22.7C7.9,22.5 10,20.5 10,18.3C10,17.1 9.4,16.1 8.8,15.3C8.4,14.7 8,14.1 8,13.4C8,12.2 8.5,11.8 8.5,11.8V11.8C9,11.5 9.1,10.9 8.8,10.4C8.6,10 7.9,9.9 7.5,10.1C7.3,10.2 6,11.1 6,13.4C6,14.6 6.6,15.6 7.2,16.4C7.6,17.1 8,17.7 8,18.3C8,19.4 6.8,20.8 6.3,21.2V21.2C5.9,21.6 5.9,22.2 6.2,22.6C6.5,22.9 6.7,23 7,23C7.2,23 7.5,22.9 7.7,22.7M12,3C9.4,3 1,3.3 1,7C1,9.4 2.2,15.4 2.8,18H4L4.8,18H5V16H4.4C3.8,13.1 3,8.8 3,7C3,6 7.4,5 12,5C16.6,5 21,6 21,7C21,8.8 20.2,13.1 19.6,16H19V18H19.2L20,18H21.2C21.8,15.4 23,9.4 23,7C23,3.3 14.6,3 12,3Z"; -var mdiCarDefrostRear = "M10,18.3C10,20.5 7.9,22.5 7.7,22.7C7.5,22.9 7.2,23 7,23C6.7,23 6.5,22.9 6.2,22.6C5.9,22.2 5.9,21.6 6.3,21.2C6.8,20.8 8,19.4 8,18.3C8,17.7 7.6,17.1 7.2,16.4C6.6,15.6 6,14.6 6,13.4C6,11.1 7.3,10.2 7.5,10.1C7.9,9.9 8.6,10 8.8,10.4C9.1,10.9 9,11.5 8.5,11.8C8.5,11.8 8,12.2 8,13.4C8,14.1 8.4,14.7 8.8,15.3C9.4,16.1 10,17.1 10,18.3M12,13.4C12,12.2 12.5,11.8 12.5,11.8C13,11.5 13.1,10.9 12.8,10.4C12.5,9.9 11.9,9.8 11.4,10.1C11.2,10.2 9.9,11.1 9.9,13.4C9.9,14.6 10.5,15.6 11.1,16.4C11.5,17.1 11.9,17.7 11.9,18.3C11.9,19.4 10.7,20.8 10.2,21.2C9.8,21.6 9.8,22.2 10.1,22.6C10.3,22.8 10.6,22.9 10.8,22.9C11.2,23 11.5,22.9 11.7,22.7C11.9,22.5 14,20.5 14,18.3C14,17.1 13.4,16.1 12.8,15.3C12.4,14.6 12,14 12,13.4M20,3H4A2,2 0 0,0 2,5V16A2,2 0 0,0 4,18H5V16H4V5H20V16H19V18H20A2,2 0 0,0 22,16V5A2,2 0 0,0 20,3M16.2,13.5C16.2,12.3 16.7,11.9 16.7,11.9C17.1,11.6 17.3,11 17,10.5C16.7,10.1 16.1,9.9 15.6,10.2C15.4,10.3 14.1,11.2 14.1,13.5C14.1,14.7 14.8,15.7 15.3,16.5C15.7,17.2 16.1,17.8 16.1,18.4C16.1,19.5 14.9,20.9 14.4,21.3C14,21.7 13.9,22.3 14.3,22.7C14.5,22.9 14.7,23 15,23C15.2,23 15.5,22.9 15.9,22.8C16.1,22.6 18.2,20.6 18.2,18.4C18.2,17.2 17.5,16.2 17,15.4C16.6,14.7 16.2,14.1 16.2,13.5Z"; -var mdiCarDoor = "M19,14H16V16H19V14M22,21H3V11L11,3H21A1,1 0 0,1 22,4V21M11.83,5L5.83,11H20V5H11.83Z"; -var mdiCarDoorLock = "M21 3H11L3 11V12H4.5C7.5 12 10 14.91 10 18.5V21H22V4A1 1 0 0 0 21 3M19 16H16V14H19M20 11H5.83L11.83 5H20M7 17V16.5A2.5 2.5 0 0 0 2 16.5V17A1 1 0 0 0 1 18V22A1 1 0 0 0 2 23H7A1 1 0 0 0 8 22V18A1 1 0 0 0 7 17M6.2 17H2.8V16.5A1.7 1.7 0 0 1 6.2 16.5Z"; -var mdiCarElectric = "M18.92 2C18.72 1.42 18.16 1 17.5 1H6.5C5.84 1 5.29 1.42 5.08 2L3 8V16C3 16.55 3.45 17 4 17H5C5.55 17 6 16.55 6 16V15H18V16C18 16.55 18.45 17 19 17H20C20.55 17 21 16.55 21 16V8L18.92 2M6.5 12C5.67 12 5 11.33 5 10.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12M17.5 12C16.67 12 16 11.33 16 10.5S16.67 9 17.5 9 19 9.67 19 10.5 18.33 12 17.5 12M5 7L6.5 2.5H17.5L19 7H5M7 20H11V18L17 21H13V23L7 20Z"; -var mdiCarElectricOutline = "M18.92 2C18.72 1.42 18.16 1 17.5 1H6.5C5.84 1 5.29 1.42 5.08 2L3 8V16C3 16.55 3.45 17 4 17H5C5.55 17 6 16.55 6 16V15H18V16C18 16.55 18.45 17 19 17H20C20.55 17 21 16.55 21 16V8L18.92 2M6.85 3H17.14L18.22 6.11H5.77L6.85 3M19 13H5V8H19V13M7.5 9C8.33 9 9 9.67 9 10.5S8.33 12 7.5 12 6 11.33 6 10.5 6.67 9 7.5 9M16.5 9C17.33 9 18 9.67 18 10.5S17.33 12 16.5 12C15.67 12 15 11.33 15 10.5S15.67 9 16.5 9M7 20H11V18L17 21H13V23L7 20Z"; -var mdiCarEmergency = "M11 0V3H13V0H11M7.88 1.46L6.46 2.87L8.59 5L10 3.58L7.88 1.46M16.12 1.46L14 3.58L15.41 5L17.54 2.88L16.12 1.46M12 5A2 2 0 0 0 10 7V8H6.5C5.84 8 5.28 8.42 5.08 9L3 15V23A1 1 0 0 0 4 24H5A1 1 0 0 0 6 23V22H18V23A1 1 0 0 0 19 24H20A1 1 0 0 0 21 23V15L18.92 9C18.72 8.42 18.16 8 17.5 8H14V7A2 2 0 0 0 12 5M6.5 9.5H17.5L19 14H5L6.5 9.5M6.5 16A1.5 1.5 0 0 1 8 17.5A1.5 1.5 0 0 1 6.5 19A1.5 1.5 0 0 1 5 17.5A1.5 1.5 0 0 1 6.5 16M17.5 16A1.5 1.5 0 0 1 19 17.5A1.5 1.5 0 0 1 17.5 19A1.5 1.5 0 0 1 16 17.5A1.5 1.5 0 0 1 17.5 16Z"; -var mdiCarEsp = "M5.31,6C6.95,4.16 9.34,3 12,3C14.66,3 17.05,4.16 18.69,6H15.58C14.53,5.37 13.31,5 12,5C10.69,5 9.47,5.37 8.42,6H5.31M14.4,9.6V8H11.2A1.6,1.6 0 0,0 9.6,9.6V11.2C9.6,12.08 10.32,12.8 11.2,12.8H12.8V14.4H9.6V16H12.8A1.6,1.6 0 0,0 14.4,14.4V12.8C14.4,11.92 13.68,11.2 12.8,11.2H11.2V9.6H14.4M18.4,8H15.2V16H16.8V12.8H18.4A1.6,1.6 0 0,0 20,11.2V9.6C20,8.72 19.28,8 18.4,8M18.4,11.2H16.8V9.6H18.4V11.2M8.8,9.6V8H4V16H8.8V14.4H5.6V12.8H8.8V11.2H5.6V9.6H8.8M15.58,18C14.53,18.63 13.31,19 12,19C10.69,19 9.47,18.63 8.42,18H5.31C6.95,19.84 9.34,21 12,21C14.66,21 17.05,19.84 18.69,18H15.58M20.5,3.5L19.42,4.58C21.32,6.5 22.5,9.11 22.5,12C22.5,14.9 21.32,17.5 19.42,19.42L20.5,20.5C22.66,18.31 24,15.31 24,12C24,8.69 22.66,5.69 20.5,3.5M4.58,4.58L3.5,3.5C1.34,5.69 0,8.69 0,12C0,15.31 1.34,18.31 3.5,20.5L4.58,19.42C2.68,17.5 1.5,14.9 1.5,12C1.5,9.11 2.68,6.5 4.58,4.58Z"; -var mdiCarEstate = "M3,6H16L19,10H21C22.11,10 23,10.89 23,12V15H21A3,3 0 0,1 18,18A3,3 0 0,1 15,15H9A3,3 0 0,1 6,18A3,3 0 0,1 3,15H1V8C1,6.89 1.89,6 3,6M2.5,7.5V10H10.5V7.5H2.5M12,7.5V10H17.14L15.25,7.5H12M6,13.5A1.5,1.5 0 0,0 4.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 6,13.5M18,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,16.5A1.5,1.5 0 0,0 19.5,15A1.5,1.5 0 0,0 18,13.5Z"; -var mdiCarHatchback = "M16,6H6L1,12V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19L16,6M6.5,7.5H10.5V10H4.5L6.5,7.5M12,7.5H15.5L17.46,10H12V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; -var mdiCarInfo = "M19 15H17V13H19M20 20V22H16V20H17V18H16V16H19V20M18.92 5A1.5 1.5 0 0 0 17.5 4H6.5A1.5 1.5 0 0 0 5.08 5L3 11V19A1 1 0 0 0 4 20H5A1 1 0 0 0 6 19V18H11A7 7 0 0 1 18 11A6.84 6.84 0 0 1 21 11.68V11M6.5 15A1.5 1.5 0 1 1 8 13.5A1.5 1.5 0 0 1 6.5 15M5 10L6.5 5.5H17.5L19 10Z"; -var mdiCarKey = "M9.5,0A3,3 0 0,0 6.5,3A3,3 0 0,0 9.5,6C10.81,6 11.92,5.17 12.33,4H14.5V6H16.5V4H17.5V2H12.33C11.92,0.83 10.81,0 9.5,0M9.5,2A1,1 0 0,1 10.5,3A1,1 0 0,1 9.5,4A1,1 0 0,1 8.5,3A1,1 0 0,1 9.5,2M6.5,8C5.84,8 5.28,8.42 5.08,9L3,15V23A1,1 0 0,0 4,24H5A1,1 0 0,0 6,23V22H18V23A1,1 0 0,0 19,24H20A1,1 0 0,0 21,23V15L18.92,9C18.72,8.42 18.16,8 17.5,8H6.5M6.5,9.5H17.5L19,14H5L6.5,9.5M6.5,16A1.5,1.5 0 0,1 8,17.5A1.5,1.5 0 0,1 6.5,19A1.5,1.5 0 0,1 5,17.5A1.5,1.5 0 0,1 6.5,16M17.5,16A1.5,1.5 0 0,1 19,17.5A1.5,1.5 0 0,1 17.5,19A1.5,1.5 0 0,1 16,17.5A1.5,1.5 0 0,1 17.5,16Z"; -var mdiCarLiftedPickup = "M18 14L18.79 14.1L18.77 14.33L19.24 14.5L19.39 14.34C19.89 14.6 20.32 15 20.6 15.5L20.43 15.67L20.63 16.12L20.86 16.1C20.95 16.39 21 16.69 21 17L20.9 17.78L20.66 17.77L20.47 18.24L20.66 18.39C20.39 18.9 20 19.32 19.5 19.6L19.33 19.42L18.87 19.62L18.89 19.86C18.61 19.95 18.31 20 18 20L17.21 19.9L17.22 19.65L16.76 19.47L16.6 19.66C16.1 19.39 15.67 19 15.39 18.5L15.57 18.32L15.37 17.86L15.13 17.88C15.05 17.6 15 17.31 15 17L15.11 16.2L15.34 16.21L15.53 15.75L15.35 15.6C15.62 15.09 16 14.68 16.5 14.39L16.67 14.56L17.13 14.36L17.11 14.14C17.39 14.05 17.69 14 18 14M18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5M6 14L6.79 14.1L6.77 14.33L7.24 14.5L7.39 14.34C7.89 14.6 8.32 15 8.6 15.5L8.43 15.67L8.63 16.12L8.86 16.1C8.95 16.39 9 16.69 9 17L8.9 17.78L8.65 17.77L8.47 18.24L8.66 18.39C8.39 18.9 8 19.32 7.5 19.6L7.33 19.42L6.87 19.62L6.89 19.86C6.61 19.95 6.31 20 6 20L5.21 19.9L5.22 19.65L4.76 19.47L4.6 19.66C4.1 19.39 3.67 19 3.39 18.5L3.57 18.32L3.37 17.86L3.13 17.88C3.05 17.6 3 17.31 3 17L3.11 16.2L3.34 16.21L3.53 15.75L3.35 15.6C3.62 15.09 4 14.68 4.5 14.39L4.67 14.56L5.13 14.36L5.11 14.14C5.39 14.05 5.69 14 6 14M6 15.5C5.17 15.5 4.5 16.17 4.5 17C4.5 17.83 5.17 18.5 6 18.5C6.83 18.5 7.5 17.83 7.5 17C7.5 16.17 6.83 15.5 6 15.5M16 6L19 10H21C22.11 10 23 10.89 23 12V15H21C21 13.34 19.66 12 18 12C16.34 12 15 13.34 15 15H9C9 13.34 7.66 12 6 12C4.34 12 3 13.34 3 15H1V10H10.5V6L16 6M12 7.5V10H17.46L15.5 7.5H12Z"; -var mdiCarLightDimmed = "M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 15.9,17.1 13.1,17.2M8,10.5C8,11 7.9,11.5 7.9,12C7.9,12.2 7.9,12.4 7.9,12.6L2.4,14L1.9,12.1L8,10.5M2,7L9.4,5.1C9.2,5.4 9,5.8 8.9,6.3C8.8,6.6 8.7,7 8.6,7.4L2.5,8.9L2,7M8.2,15.5C8.3,16.2 8.5,16.9 8.7,17.4L2.4,19L1.9,17.1L8.2,15.5Z"; -var mdiCarLightFog = "M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 16,17.1 13.1,17.2M6,8V11H8C8,11.3 8,11.7 8,12C8,12.3 8,12.7 8,13H6V16H8.4C8.6,16.7 8.8,17.4 9,18H6V21H4V18H2V16H4V13H2V11H4V8H2V6H4V3H6V6H9C9,6.1 8.9,6.2 8.9,6.4C8.7,6.9 8.5,7.4 8.4,8H6Z"; -var mdiCarLightHigh = "M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 16,17.1 13.1,17.2M2,5H9.5C9.3,5.4 9,5.8 8.9,6.4C8.8,6.6 8.8,6.8 8.7,7H2V5M8,11H2V9H8.2C8.1,9.6 8.1,10.3 8,11M8.7,17C8.9,17.8 9.2,18.4 9.6,19H2.1V17H8.7M8.2,15H2V13H8C8.1,13.7 8.1,14.4 8.2,15Z"; -var mdiCarLimousine = "M1,6L2.5,7.5L1,9L2.5,10.5L1,12L2.5,13.5L1,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19L16,6H1M4.62,7.5H10.5V10H4.12L3.12,9L4.62,7.5M12,7.5H15.5L17.46,10H12V7.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; -var mdiCarMultiple = "M8,11L9.5,6.5H18.5L20,11M18.5,16A1.5,1.5 0 0,1 17,14.5A1.5,1.5 0 0,1 18.5,13A1.5,1.5 0 0,1 20,14.5A1.5,1.5 0 0,1 18.5,16M9.5,16A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 9.5,13A1.5,1.5 0 0,1 11,14.5A1.5,1.5 0 0,1 9.5,16M19.92,6C19.71,5.4 19.14,5 18.5,5H9.5C8.86,5 8.29,5.4 8.08,6L6,12V20A1,1 0 0,0 7,21H8A1,1 0 0,0 9,20V19H19V20A1,1 0 0,0 20,21H21A1,1 0 0,0 22,20V12L19.92,6M14.92,3C14.71,2.4 14.14,2 13.5,2H4.5C3.86,2 3.29,2.4 3.08,3L1,9V17A1,1 0 0,0 2,18H3A1,1 0 0,0 4,17V12.91C3.22,12.63 2.82,11.77 3.1,11C3.32,10.4 3.87,10 4.5,10H4.57L5.27,8H3L4.5,3.5H15.09L14.92,3Z"; -var mdiCarOff = "M20.5,19.85L6.41,5.76L2.41,1.76L1.11,3L4.57,6.46L3,11V19A1,1 0 0,0 4,20H5A1,1 0 0,0 6,19V18H16.11L20.84,22.73L22.11,21.46L20.5,19.85M6.5,15A1.5,1.5 0 0,1 5,13.5A1.5,1.5 0 0,1 6.5,12A1.5,1.5 0 0,1 8,13.5A1.5,1.5 0 0,1 6.5,15M5,10L5.78,7.67L8.11,10H5M17.5,5.5L19,10H13.2L16.12,12.92C16.5,12.17 17.37,11.86 18.12,12.21C18.87,12.57 19.18,13.47 18.83,14.21C18.68,14.5 18.43,14.77 18.12,14.92L21,17.8V11L18.92,5C18.71,4.4 18.14,4 17.5,4H7.2L8.7,5.5H17.5Z"; -var mdiCarOutline = "M18.9 6C18.7 5.4 18.1 5 17.5 5H6.5C5.8 5 5.3 5.4 5.1 6L3 12V20C3 20.5 3.5 21 4 21H5C5.6 21 6 20.5 6 20V19H18V20C18 20.5 18.5 21 19 21H20C20.5 21 21 20.5 21 20V12L18.9 6M6.8 7H17.1L18.2 10H5.8L6.8 7M19 17H5V12H19V17M7.5 13C8.3 13 9 13.7 9 14.5S8.3 16 7.5 16 6 15.3 6 14.5 6.7 13 7.5 13M16.5 13C17.3 13 18 13.7 18 14.5S17.3 16 16.5 16C15.7 16 15 15.3 15 14.5S15.7 13 16.5 13Z"; -var mdiCarParkingLights = "M7.3,9.2C8.1,9.6 9,10.5 9,12C9,13.5 8.1,14.4 7.3,14.8C6.9,13.4 6.9,10.6 7.3,9.2M6.5,7C4.5,7 4.5,17 6.5,17C8.5,17 11,15.1 11,12C11,8.9 8.5,7 6.5,7M16.7,9.2C17,10.6 17,13.4 16.7,14.8C15.9,14.4 15,13.5 15,12C15,10.5 15.9,9.6 16.7,9.2M17.5,7C15.5,7 13,8.9 13,12C13,15.1 15.5,17 17.5,17C19.5,17 19.5,7 17.5,7M4.9,6.2L2.5,4.6L1.4,6.3L4,8C4.2,7.3 4.5,6.6 4.9,6.2M20,8L22.6,6.3L21.5,4.6L19.1,6.2C19.4,6.6 19.8,7.2 20,8M4,16L1.4,17.7L2.5,19.4L4.9,17.8C4.6,17.4 4.2,16.8 4,16M20.5,11C20.5,11.3 20.5,11.7 20.5,12C20.5,12.3 20.5,12.6 20.5,13H24V11H20.5M19.1,17.8L21.5,19.4L22.6,17.7L20,16C19.8,16.7 19.5,17.4 19.1,17.8M3.5,12C3.5,11.7 3.5,11.4 3.5,11H0V13H3.5C3.5,12.7 3.5,12.3 3.5,12Z"; -var mdiCarPickup = "M16,6H10.5V10H1V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19L16,6M12,7.5H15.5L17.46,10H12V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; -var mdiCarSeat = "M7 18C7 18 4 10 4 6S6 2 6 2H7C7 2 8 2 8 3S7 4 7 6 10 10 10 13 7 18 7 18M12 17C11 17 8 19.5 8 19.5C7.7 19.7 7.8 20 8 20.3C8 20.3 9 22.1 11 22.1H17C18.1 22.1 19 21.2 19 20.1V19.1C19 18 18.1 17.1 17 17.1H12Z"; -var mdiCarSeatCooler = "M20.8 10.2L19.4 10.6L18.2 9.9V8.2L19.4 7.5L20.8 7.9L21.1 6.8L20 6.5L20.3 5.4L19.2 5.1L18.8 6.5L17.6 7.2L16.1 6.3V5L17.1 4L16.3 3.2L15.5 4L14.7 3.2L13.9 4L14.9 5V6.3L13.4 7.2L12.2 6.5L11.9 5.1L10.8 5.4L11.1 6.5L10 6.7L10.3 7.8L11.7 7.4L12.9 8.1V9.8L11.7 10.5L10.3 10.1L10 11.4L11.1 11.7L10.8 12.7L11.9 13L12.3 11.6L13.5 10.9L15 11.8V13.1L14 14.1L14.8 14.9L15.6 14.1L16.4 14.9L17.2 14.1L16.2 13.1V11.8L17.7 10.9L18.9 11.6L19.3 13L20.4 12.7L20 11.6L21.1 11.3L20.8 10.2M14 8.2L15.5 7.3L17 8.2V9.9L15.5 10.8L14 9.9V8.2M5 18C5 18 2 10 2 6S4 2 4 2H5C5 2 6 2 6 3S5 4 5 6 8 10 8 13 5 18 5 18M15 17C16.1 17 17 17.9 17 19V20C17 21.1 16.1 22 15 22H9C7 22 6 20.2 6 20.2C5.8 20 5.7 19.6 6 19.4C6 19.4 9 16.9 10 16.9H15Z"; -var mdiCarSeatHeater = "M5 18C5 18 2 10 2 6S4 2 4 2H5C5 2 6 2 6 3S5 4 5 6 8 10 8 13 5 18 5 18M15 17C16.1 17 17 17.9 17 19V20C17 21.1 16.1 22 15 22H9C7 22 6 20.2 6 20.2C5.8 20 5.7 19.6 6 19.4C6 19.4 9 16.9 10 16.9H15M13.7 3.4L12.3 6.8L13.7 10.2L11.7 15L10 13.6L11.4 10.2L10 6.8L12 2L13.7 3.4M17.9 3.4L16.5 6.8L17.9 10.2L15.9 15L14.2 13.6L15.6 10.2L14.2 6.8L16.2 2L17.9 3.4M22 3.4L20.6 6.8L22 10.2L20 15L18.3 13.6L19.7 10.2L18.3 6.8L20.3 2L22 3.4"; -var mdiCarSettings = "M15 22H17V24H15M11 22H13V24H11M7 22H9V24H7M5 11L6.5 6.5H17.5L19 11M17.5 16A1.5 1.5 0 0 1 16 14.5A1.5 1.5 0 0 1 17.5 13A1.5 1.5 0 0 1 19 14.5A1.5 1.5 0 0 1 17.5 16M6.5 16A1.5 1.5 0 0 1 5 14.5A1.5 1.5 0 0 1 6.5 13A1.5 1.5 0 0 1 8 14.5A1.5 1.5 0 0 1 6.5 16M18.92 6C18.72 5.42 18.16 5 17.5 5H6.5C5.84 5 5.28 5.42 5.08 6L3 12V20A1 1 0 0 0 4 21H5A1 1 0 0 0 6 20V19H18V20A1 1 0 0 0 19 21H20A1 1 0 0 0 21 20V12Z"; -var mdiCarShiftPattern = "M8 5H4V2H8V5M4 22H8V19H4V22M14 2H10V5H14V2M10 22H14V19H10V22M16 2V5H20V2H16M17 11H13V7H11V11H7V7H5V17H7V13H11V17H13V13H19V7H17V11Z"; -var mdiCarSide = "M16,6L19,10H21C22.11,10 23,10.89 23,12V15H21A3,3 0 0,1 18,18A3,3 0 0,1 15,15H9A3,3 0 0,1 6,18A3,3 0 0,1 3,15H1V12C1,10.89 1.89,10 3,10L6,6H16M10.5,7.5H6.75L4.86,10H10.5V7.5M12,7.5V10H17.14L15.25,7.5H12M6,13.5A1.5,1.5 0 0,0 4.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 6,13.5M18,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,16.5A1.5,1.5 0 0,0 19.5,15A1.5,1.5 0 0,0 18,13.5Z"; -var mdiCarSports = "M12,8.5H7L4,11H3C1.89,11 1,11.89 1,13V16H3.17C3.6,17.2 4.73,18 6,18C7.27,18 8.4,17.2 8.82,16H15.17C15.6,17.2 16.73,18 18,18C19.27,18 20.4,17.2 20.82,16H23V15C23,13.89 21.97,13.53 21,13L12,8.5M5.25,12L7.5,10H11.5L15.5,12H5.25M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z"; -var mdiCarTireAlert = "M11,13H13V15H11V13M11,5H13V11H11V5M17,4.76C18.86,6.19 20,8.61 20,11C20,14 18.33,16.64 15.86,18H8.14C5.67,16.64 4,14 4,11C4,8.61 5.09,6.17 7,4.76V2H5V3.86C3.15,5.68 2,8.2 2,11C2,13.8 3.15,16.32 5,18.14V22H7V20H9V22H11V20H13V22H15V20H17V22H19V18.14C20.85,16.32 22,13.8 22,11C22,8.2 20.85,5.68 19,3.86V2H17V4.76Z"; -var mdiCarTractionControl = "M9.5,11H10.5C10.8,11 11,10.8 11,10.5V9H19V10.5C19,10.8 19.2,11 19.5,11H20.5C20.8,11 21,10.8 21,10.5V9L21,8.5V6L19.6,1.7C19.5,1.3 19.1,1 18.7,1H11.4C11,1 10.6,1.3 10.5,1.7L9,6V8.5L9,9V10.5C9,10.8 9.2,11 9.5,11M11.3,2H18.6L19.5,5H10.4L11.3,2M12,23H10C10,22.2 8.1,21.5 6.6,20.9C4.5,20.1 2,19.2 2,17C2,14.7 4.3,14.1 6.2,13.5C7.9,13.1 9,12.7 9,12H11C11,14.3 8.7,14.9 6.8,15.5C5.1,15.9 4,16.3 4,17C4,17.8 5.9,18.5 7.4,19.1C9.5,19.9 12,20.8 12,23M22,23H20C20,22.2 18.1,21.5 16.6,20.9C14.5,20.1 12,19.2 12,17C12,14.7 14.3,14.1 16.2,13.5C17.8,13 19,12.7 19,12H21C21,14.3 18.7,14.9 16.8,15.5C15.2,15.9 14,16.3 14,17C14,17.8 15.9,18.5 17.4,19.1C19.5,19.9 22,20.8 22,23Z"; -var mdiCarTurbocharger = "M22 13V15H18.32C18.75 14.09 19 13.08 19 12C19 8.14 15.86 5 12 5H2V3H12C16.97 3 21 7.03 21 12C21 12.34 20.97 12.67 20.94 13H22M12 19C8.14 19 5 15.86 5 12C5 10.93 5.25 9.91 5.69 9H2V11H3.06C3.03 11.33 3 11.66 3 12C3 16.97 7.03 21 12 21H22V19H12M16.86 12.2C15.93 12.94 14.72 12.47 14 12.05V12C16.79 10.31 15.39 7.89 15.39 7.89S14.33 6.04 14.61 7.89C14.78 9.07 13.76 9.88 13.04 10.3L13 10.28C12.93 7 10.13 7 10.13 7S8 7 9.74 7.69C10.85 8.13 11.04 9.42 11.05 10.25L11 10.28C8.14 8.7 6.74 11.12 6.74 11.12S5.67 12.97 7.14 11.8C8.07 11.07 9.28 11.54 10 11.95V12C7.21 13.7 8.61 16.12 8.61 16.12S9.67 17.97 9.4 16.11C9.22 14.94 10.25 14.13 10.97 13.7L11 13.73C11.07 17 13.87 17 13.87 17S16 17 14.26 16.31C13.15 15.87 12.96 14.58 12.95 13.75L13 13.73C15.86 15.31 17.26 12.88 17.26 12.88S18.33 11.04 16.86 12.2Z"; -var mdiCarWash = "M5,13L6.5,8.5H17.5L19,13M17.5,18A1.5,1.5 0 0,1 16,16.5A1.5,1.5 0 0,1 17.5,15A1.5,1.5 0 0,1 19,16.5A1.5,1.5 0 0,1 17.5,18M6.5,18A1.5,1.5 0 0,1 5,16.5A1.5,1.5 0 0,1 6.5,15A1.5,1.5 0 0,1 8,16.5A1.5,1.5 0 0,1 6.5,18M18.92,8C18.72,7.42 18.16,7 17.5,7H6.5C5.84,7 5.28,7.42 5.08,8L3,14V22A1,1 0 0,0 4,23H5A1,1 0 0,0 6,22V21H18V22A1,1 0 0,0 19,23H20A1,1 0 0,0 21,22V14M7,5A1.5,1.5 0 0,0 8.5,3.5C8.5,2.5 7,0.8 7,0.8C7,0.8 5.5,2.5 5.5,3.5A1.5,1.5 0 0,0 7,5M12,5A1.5,1.5 0 0,0 13.5,3.5C13.5,2.5 12,0.8 12,0.8C12,0.8 10.5,2.5 10.5,3.5A1.5,1.5 0 0,0 12,5M17,5A1.5,1.5 0 0,0 18.5,3.5C18.5,2.5 17,0.8 17,0.8C17,0.8 15.5,2.5 15.5,3.5A1.5,1.5 0 0,0 17,5Z"; -var mdiCarWindshield = "M22.63 15.5L20.21 5.85A1 1 0 0 0 19.14 5.1C17.8 5.24 14.14 5.5 12 5.5S6.2 5.24 4.86 5.1A1 1 0 0 0 3.79 5.85L1.37 15.5A1.5 1.5 0 0 0 2.55 17.36A61.5 61.5 0 0 0 12 18A61.5 61.5 0 0 0 21.45 17.36A1.5 1.5 0 0 0 22.63 15.5Z"; -var mdiCarWindshieldOutline = "M22.63 15.5L20.21 5.85A1 1 0 0 0 19.14 5.1C17.8 5.24 14.14 5.5 12 5.5S6.2 5.24 4.86 5.1A1 1 0 0 0 3.79 5.85L1.37 15.5A1.5 1.5 0 0 0 2.55 17.36A61.5 61.5 0 0 0 12 18A61.5 61.5 0 0 0 21.45 17.36A1.5 1.5 0 0 0 22.63 15.5M12 16A63.33 63.33 0 0 1 3.44 15.5L5.5 7.18C7 7.32 10.16 7.5 12 7.5S17 7.32 18.5 7.18L20.56 15.5A63.33 63.33 0 0 1 12 16Z"; -var mdiCarabiner = "M8 17.5C8 18.33 7.33 19 6.5 19S5 18.33 5 17.5 5.67 16 6.5 16 8 16.67 8 17.5M18 5.59C17.79 3.54 16.18 2 14.24 2H8.88C6.95 2 5.36 3.5 5.15 5.53L5 6.59C4.92 7.34 5.5 8 6.24 8C6.87 8 7.39 7.53 7.47 6.91L7.61 5.82C7.68 5.07 8.23 4.5 8.88 4.5H14.24C14.89 4.5 15.44 5.07 15.5 5.82L16.5 16.88C16.59 17.74 16 18.5 15.25 18.5L10.04 17.82C9.95 18.77 9.5 19.6 8.8 20.18L14.93 21L15.09 21H15.25C16.27 21 17.26 20.56 17.96 19.78C18.71 18.94 19.09 17.8 19 16.65L18 5.59M11.66 7.94C11.08 7.57 10.31 7.75 9.94 8.34L6.39 14C6.43 14 6.46 14 6.5 14C7.38 14 8.18 14.34 8.8 14.88L12.06 9.66C12.43 9.08 12.25 8.31 11.66 7.94Z"; -var mdiCaravan = "M5,7A2,2 0 0,0 3,9V15A2,2 0 0,0 5,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17H21V15H19V9A2,2 0 0,0 17,7H5M5,9H10V12H5V9M13,9H17V12H13V9M10,16A1,1 0 0,1 11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17A1,1 0 0,1 10,16Z"; -var mdiCard = "M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20Z"; -var mdiCardAccountDetails = "M2,3H22C23.05,3 24,3.95 24,5V19C24,20.05 23.05,21 22,21H2C0.95,21 0,20.05 0,19V5C0,3.95 0.95,3 2,3M14,6V7H22V6H14M14,8V9H21.5L22,9V8H14M14,10V11H21V10H14M8,13.91C6,13.91 2,15 2,17V18H14V17C14,15 10,13.91 8,13.91M8,6A3,3 0 0,0 5,9A3,3 0 0,0 8,12A3,3 0 0,0 11,9A3,3 0 0,0 8,6Z"; -var mdiCardAccountDetailsOutline = "M22,3H2C0.91,3.04 0.04,3.91 0,5V19C0.04,20.09 0.91,20.96 2,21H22C23.09,20.96 23.96,20.09 24,19V5C23.96,3.91 23.09,3.04 22,3M22,19H2V5H22V19M14,17V15.75C14,14.09 10.66,13.25 9,13.25C7.34,13.25 4,14.09 4,15.75V17H14M9,7A2.5,2.5 0 0,0 6.5,9.5A2.5,2.5 0 0,0 9,12A2.5,2.5 0 0,0 11.5,9.5A2.5,2.5 0 0,0 9,7M14,7V8H20V7H14M14,9V10H20V9H14M14,11V12H18V11H14"; -var mdiCardAccountDetailsStar = "M20 22.09L22.45 23.58L21.8 20.77L24 18.89L21.11 18.64L20 16L18.87 18.64L16 18.89L18.18 20.77L17.5 23.58L20 22.09M14.08 21H2C.95 21 0 20.05 0 19V5C0 3.95 .95 3 2 3H22C23.05 3 24 3.95 24 5V15.53C22.94 14.58 21.54 14 20 14C16.69 14 14 16.69 14 20C14 20.34 14.03 20.68 14.08 21M8 13.91C6 13.91 2 15 2 17V18H14V17C14 15 10 13.91 8 13.91M8 6C6.35 6 5 7.35 5 9C5 10.65 6.35 12 8 12C9.65 12 11 10.65 11 9C11 7.35 9.65 6 8 6M21 10H14V11H21V10M22 8H14V9H22V8M22 6H14V7H22V6Z"; -var mdiCardAccountDetailsStarOutline = "M20 22.09L22.45 23.58L21.8 20.77L24 18.89L21.11 18.64L20 16L18.87 18.64L16 18.89L18.18 20.77L17.5 23.58L20 22.09M14.08 21H2C.91 20.96 .04 20.09 0 19V5C.04 3.91 .91 3.04 2 3H22C23.09 3.04 23.96 3.91 24 5V15.53C23.42 15 22.75 14.61 22 14.34V5H2V19H14.08C14.03 19.33 14 19.66 14 20C14 20.34 14.03 20.68 14.08 21M14 17H4V15.75C4 14.09 7.34 13.25 9 13.25C10.66 13.25 14 14.09 14 15.75V17M14 11H18V12H14V11M9 7C7.63 7 6.5 8.13 6.5 9.5C6.5 10.87 7.63 12 9 12C10.37 12 11.5 10.87 11.5 9.5C11.5 8.13 10.37 7 9 7M14 9H20V10H14V9M14 7H20V8H14V7Z"; -var mdiCardAccountMail = "M21,8V7L18,9L15,7V8L18,10M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M8,6A3,3 0 0,1 11,9A3,3 0 0,1 8,12A3,3 0 0,1 5,9A3,3 0 0,1 8,6M14,18H2V17C2,15 6,13.9 8,13.9C10,13.9 14,15 14,17M22,12H14V6H22"; -var mdiCardAccountMailOutline = "M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M22,19H2V5H22V19M21,6H14V11H21V6M20,8L17.5,9.75L15,8V7L17.5,8.75L20,7V8M9,12A3,3 0 0,0 12,9A3,3 0 0,0 9,6A3,3 0 0,0 6,9A3,3 0 0,0 9,12M9,8A1,1 0 0,1 10,9A1,1 0 0,1 9,10A1,1 0 0,1 8,9A1,1 0 0,1 9,8M15,16.59C15,14.09 11.03,13 9,13C6.97,13 3,14.09 3,16.59V18H15V16.59M5.5,16C6.22,15.5 7.7,15 9,15C10.3,15 11.77,15.5 12.5,16H5.5Z"; -var mdiCardAccountPhone = "M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M8,6A3,3 0 0,1 11,9A3,3 0 0,1 8,12A3,3 0 0,1 5,9A3,3 0 0,1 8,6M14,18H2V17C2,15 6,13.9 8,13.9C10,13.9 14,15 14,17V18M17.85,14H19.5L21,16L19,18C17.7,17 16.73,15.61 16.28,14C16.1,13.36 16,12.69 16,12C16,11.31 16.1,10.64 16.28,10C16.73,8.38 17.7,7 19,6L21,8L19.5,10H17.85C17.63,10.63 17.5,11.3 17.5,12C17.5,12.7 17.63,13.37 17.85,14Z"; -var mdiCardAccountPhoneOutline = "M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M22,19H2V5H22V19M19,18L21,16L19.5,14H17.85C17.63,13.37 17.5,12.7 17.5,12C17.5,11.3 17.63,10.63 17.85,10H19.5L21,8L19,6C17.7,7 16.73,8.38 16.28,10C16.1,10.64 16,11.31 16,12C16,12.69 16.1,13.36 16.28,14C16.73,15.61 17.7,17 19,18M9,12A3,3 0 0,0 12,9A3,3 0 0,0 9,6A3,3 0 0,0 6,9A3,3 0 0,0 9,12M9,8A1,1 0 0,1 10,9A1,1 0 0,1 9,10A1,1 0 0,1 8,9A1,1 0 0,1 9,8M15,16.59C15,14.09 11.03,13 9,13C6.97,13 3,14.09 3,16.59V18H15V16.59M5.5,16C6.22,15.5 7.7,15 9,15C10.3,15 11.77,15.5 12.5,16H5.5Z"; -var mdiCardBulleted = "M20,4A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20M11,13H9V15H11V13M19,13H13V15H19V13M7,9H5V11H7V9M19,9H9V11H19V9Z"; -var mdiCardBulletedOff = "M3.35,3.58L20.65,20.87L19.23,22.29L16.94,20H4A2,2 0 0,1 2,18V6C2,5.72 2.06,5.46 2.16,5.22L1.23,4.29L2.65,2.87L3.35,3.58M6.6,4H20A2,2 0 0,1 22,6V18C22,18.4 21.88,18.77 21.68,19.08L17.6,15H20V13H15.6L13.6,11H20V9H11.6L6.6,4M9.94,13H9V15H11V14.06L9.94,13M5.94,9H5V11H7V10.06L5.94,9Z"; -var mdiCardBulletedOffOutline = "M20.59,20.87L19.17,22.29L16.88,20H4A2,2 0 0,1 2,18V6C2,5.74 2.05,5.5 2.14,5.26L1.17,4.29L2.59,2.87L3.73,4L20.59,20.87V20.87M6.54,4H20A2,2 0 0,1 22,6V18C22,18.41 21.87,18.8 21.66,19.12L20,17.46V6H8.54L6.54,4M4,18H14.88L11.88,15H10V13.12L7.88,11H6V9.12L4,7.12V18M18,15H17.54L15.54,13H18V15M18,11H13.54L11.54,9H18V11Z"; -var mdiCardBulletedOutline = "M12,15H10V13H12V15M18,15H14V13H18V15M8,11H6V9H8V11M18,11H10V9H18V11M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4Z"; -var mdiCardBulletedSettings = "M9,22V24H7V22H9M13,22V24H11V22H13M17,22V24H15V22H17M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M11,13H9V15H11V13M19,13H13V15H19V13M7,9H5V11H7V9M19,9H9V11H19V9Z"; -var mdiCardBulletedSettingsOutline = "M9,22V24H7V22H9M13,22V24H11V22H13M17,22V24H15V22H17M12,15H10V13H12V15M18,15H14V13H18V15M8,11H6V9H8V11M18,11H10V9H18V11M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4Z"; -var mdiCardMinus = "M23 18V20H15V18H23M19 13C20.09 13 21.12 13.3 22 13.81V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 15.69 15.69 13 19 13Z"; -var mdiCardMinusOutline = "M23 18V20H15V18H23M13.09 18H4V6H20V13.09C20.72 13.21 21.39 13.46 22 13.81V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 18.66 13.04 18.33 13.09 18Z"; -var mdiCardOff = "M21.88 18.68L7.2 4H20C21.11 4 22 4.89 22 6V18C22 18.24 21.96 18.47 21.88 18.68M20.56 19.91L20.57 19.91L2.39 1.73L1.11 3L2.65 4.54C2.25 4.9 2 5.42 2 6V18C2 19.11 2.9 20 4 20H18.11L20.84 22.73L22.11 21.46L20.56 19.91Z"; -var mdiCardOffOutline = "M9.2 6L7.2 4H20C21.11 4 22 4.89 22 6V18C22 18.24 21.96 18.47 21.88 18.68L20 16.8V6H9.2M22.11 21.46L20.84 22.73L18.11 20H4C2.9 20 2 19.11 2 18V6C2 5.42 2.25 4.9 2.65 4.54L1.11 3L2.39 1.73L6.66 6L18.65 18H18.66L20.57 19.91L20.56 19.91L22.11 21.46M16.11 18L4.11 6H4V18H16.11Z"; -var mdiCardOutline = "M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4Z"; -var mdiCardPlus = "M13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H20C21.11 4 22 4.89 22 6V13.81C21.12 13.3 20.09 13 19 13C15.69 13 13 15.69 13 19C13 19.34 13.04 19.67 13.09 20M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; -var mdiCardPlusOutline = "M21 15V18H24V20H21V23H19V20H16V18H19V15H21M14 18H3V6H19V13H21V6C21 4.89 20.11 4 19 4H3C1.9 4 1 4.89 1 6V18C1 19.11 1.9 20 3 20H14V18Z"; -var mdiCardRemove = "M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19M19 13C20.09 13 21.12 13.3 22 13.81V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 15.69 15.69 13 19 13Z"; -var mdiCardRemoveOutline = "M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19M13.09 18H4V6H20V13.09C20.72 13.21 21.39 13.46 22 13.81V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 18.66 13.04 18.33 13.09 18Z"; -var mdiCardSearch = "M11.5 9C10.12 9 9 10.12 9 11.5S10.12 14 11.5 14 14 12.88 14 11.5 12.88 9 11.5 9M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4M16.79 18.21L13.88 15.3C13.19 15.74 12.37 16 11.5 16C9 16 7 14 7 11.5S9 7 11.5 7 16 9 16 11.5C16 12.38 15.74 13.19 15.3 13.89L18.21 16.79L16.79 18.21Z"; -var mdiCardSearchOutline = "M11.5 16C12.37 16 13.19 15.74 13.88 15.3L16.32 17.74L17.74 16.32L15.3 13.89C15.74 13.19 16 12.38 16 11.5C16 9 14 7 11.5 7S7 9 7 11.5 9 16 11.5 16M11.5 9C12.88 9 14 10.12 14 11.5S12.88 14 11.5 14 9 12.88 9 11.5 10.12 9 11.5 9M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4M20 18H4V6H20V18Z"; -var mdiCardText = "M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M5,13V15H16V13H5M5,9V11H19V9H5Z"; -var mdiCardTextOutline = "M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4M6,9H18V11H6V9M6,13H16V15H6V13Z"; -var mdiCards = "M21.47,4.35L20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.77 21.47,4.35M1.97,8.05L6.93,20C7.24,20.77 7.97,21.24 8.74,21.26C9,21.26 9.27,21.21 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.26C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05M18.12,4.25A2,2 0 0,0 16.12,2.25H14.67L18.12,10.59"; -var mdiCardsClub = "M12,2C14.3,2 16.3,4 16.3,6.2C16.21,8.77 14.34,9.83 14.04,10C15.04,9.5 16.5,9.5 16.5,9.5C19,9.5 21,11.3 21,13.8C21,16.3 19,18 16.5,18C16.5,18 15,18 13,17C13,17 12.7,19 15,22H9C11.3,19 11,17 11,17C9,18 7.5,18 7.5,18C5,18 3,16.3 3,13.8C3,11.3 5,9.5 7.5,9.5C7.5,9.5 8.96,9.5 9.96,10C9.66,9.83 7.79,8.77 7.7,6.2C7.7,4 9.7,2 12,2Z"; -var mdiCardsDiamond = "M19,12L12,22L5,12L12,2"; -var mdiCardsDiamondOutline = "M12 2L5 12L12 22L19 12M7.44 12L12 5.5L16.56 12L12 18.5"; -var mdiCardsHeart = "M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35Z"; -var mdiCardsOutline = "M11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05L6.93,20C7.24,20.77 7.97,21.23 8.74,21.25C9,21.25 9.27,21.22 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.25C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25M14.67,2.25L18.12,10.6V4.25A2,2 0 0,0 16.12,2.25M20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.78 21.47,4.36M11.19,4.22L16.17,16.24L8.78,19.3L3.8,7.29"; -var mdiCardsPlayingOutline = "M11.19,2.25C11.97,2.26 12.71,2.73 13,3.5L18,15.45C18.09,15.71 18.14,16 18.13,16.25C18.11,17 17.65,17.74 16.9,18.05L9.53,21.1C9.27,21.22 9,21.25 8.74,21.25C7.97,21.23 7.24,20.77 6.93,20L1.97,8.05C1.55,7.04 2.04,5.87 3.06,5.45L10.42,2.4C10.67,2.31 10.93,2.25 11.19,2.25M14.67,2.25H16.12A2,2 0 0,1 18.12,4.25V10.6L14.67,2.25M20.13,3.79L21.47,4.36C22.5,4.78 22.97,5.94 22.56,6.96L20.13,12.82V3.79M11.19,4.22L3.8,7.29L8.77,19.3L16.17,16.24L11.19,4.22M8.65,8.54L11.88,10.95L11.44,14.96L8.21,12.54L8.65,8.54Z"; -var mdiCardsSpade = "M12,2C9,7 4,9 4,14C4,16 6,18 8,18C9,18 10,18 11,17C11,17 11.32,19 9,22H15C13,19 13,17 13,17C14,18 15,18 16,18C18,18 20,16 20,14C20,9 15,7 12,2Z"; -var mdiCardsVariant = "M5,2H19A1,1 0 0,1 20,3V13A1,1 0 0,1 19,14H5A1,1 0 0,1 4,13V3A1,1 0 0,1 5,2M6,4V12H18V4H6M20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17V16H20V17M20,21A1,1 0 0,1 19,22H5A1,1 0 0,1 4,21V20H20V21Z"; -var mdiCarrot = "M16,10L15.8,11H13.5A0.5,0.5 0 0,0 13,11.5A0.5,0.5 0 0,0 13.5,12H15.6L14.6,17H12.5A0.5,0.5 0 0,0 12,17.5A0.5,0.5 0 0,0 12.5,18H14.4L14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20L9,15H10.5A0.5,0.5 0 0,0 11,14.5A0.5,0.5 0 0,0 10.5,14H8.8L8,10C8,8.8 8.93,7.77 10.29,7.29L8.9,5.28C8.59,4.82 8.7,4.2 9.16,3.89C9.61,3.57 10.23,3.69 10.55,4.14L11,4.8V3A1,1 0 0,1 12,2A1,1 0 0,1 13,3V5.28L14.5,3.54C14.83,3.12 15.47,3.07 15.89,3.43C16.31,3.78 16.36,4.41 16,4.84L13.87,7.35C15.14,7.85 16,8.85 16,10Z"; -var mdiCart = "M17,18C15.89,18 15,18.89 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20C19,18.89 18.1,18 17,18M1,2V4H3L6.6,11.59L5.24,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42A0.25,0.25 0 0,1 7.17,14.75C7.17,14.7 7.18,14.66 7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.58 17.3,11.97L20.88,5.5C20.95,5.34 21,5.17 21,5A1,1 0 0,0 20,4H5.21L4.27,2M7,18C5.89,18 5,18.89 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20C9,18.89 8.1,18 7,18Z"; -var mdiCartArrowDown = "M10,0V4H8L12,8L16,4H14V0M1,2V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18Z"; -var mdiCartArrowRight = "M9,20A2,2 0 0,1 7,22A2,2 0 0,1 5,20A2,2 0 0,1 7,18A2,2 0 0,1 9,20M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.2,14.63C7.19,14.67 7.19,14.71 7.2,14.75A0.25,0.25 0 0,0 7.45,15H19V17H7A2,2 0 0,1 5,15C5,14.65 5.07,14.31 5.24,14L6.6,11.59L3,4H1V2H4.27L5.21,4H20A1,1 0 0,1 21,5C21,5.17 20.95,5.34 20.88,5.5L17.3,12C16.94,12.62 16.27,13 15.55,13H8.1L7.2,14.63M9,9.5H13V11.5L16,8.5L13,5.5V7.5H9V9.5Z"; -var mdiCartArrowUp = "M12,0L8,4H10V8H14V4H16M1,2V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18Z"; -var mdiCartCheck = "M9 20C9 21.11 8.11 22 7 22S5 21.11 5 20 5.9 18 7 18 9 18.9 9 20M17 18C15.9 18 15 18.9 15 20S15.9 22 17 22 19 21.11 19 20 18.11 18 17 18M7.17 14.75L7.2 14.63L8.1 13H15.55C16.3 13 16.96 12.59 17.3 11.97L21.16 4.96L19.42 4H19.41L18.31 6L15.55 11H8.53L8.4 10.73L6.16 6L5.21 4L4.27 2H1V4H3L6.6 11.59L5.25 14.04C5.09 14.32 5 14.65 5 15C5 16.11 5.9 17 7 17H19V15H7.42C7.29 15 7.17 14.89 7.17 14.75M18 2.76L16.59 1.34L11.75 6.18L9.16 3.59L7.75 5L11.75 9L18 2.76Z"; -var mdiCartMinus = "M16,6V4H8V6M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2H1V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75Z"; -var mdiCartOff = "M22.73,22.73L1.27,1.27L0,2.54L4.39,6.93L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H14.46L15.84,18.38C15.34,18.74 15,19.33 15,20A2,2 0 0,0 17,22C17.67,22 18.26,21.67 18.62,21.16L21.46,24L22.73,22.73M7.42,15A0.25,0.25 0 0,1 7.17,14.75L7.2,14.63L8.1,13H10.46L12.46,15H7.42M15.55,13C16.3,13 16.96,12.59 17.3,11.97L20.88,5.5C20.96,5.34 21,5.17 21,5A1,1 0 0,0 20,4H6.54L15.55,13M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18Z"; -var mdiCartOutline = "M17,18A2,2 0 0,1 19,20A2,2 0 0,1 17,22C15.89,22 15,21.1 15,20C15,18.89 15.89,18 17,18M1,2H4.27L5.21,4H20A1,1 0 0,1 21,5C21,5.17 20.95,5.34 20.88,5.5L17.3,11.97C16.96,12.58 16.3,13 15.55,13H8.1L7.2,14.63L7.17,14.75A0.25,0.25 0 0,0 7.42,15H19V17H7C5.89,17 5,16.1 5,15C5,14.65 5.09,14.32 5.24,14.04L6.6,11.59L3,4H1V2M7,18A2,2 0 0,1 9,20A2,2 0 0,1 7,22C5.89,22 5,21.1 5,20C5,18.89 5.89,18 7,18M16,11L18.78,6H6.14L8.5,11H16Z"; -var mdiCartPlus = "M11,9H13V6H16V4H13V1H11V4H8V6H11M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2H1V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75Z"; -var mdiCartRemove = "M14.12,8.53L12,6.41L9.88,8.54L8.46,7.12L10.59,5L8.47,2.88L9.88,1.47L12,3.59L14.12,1.46L15.54,2.88L13.41,5L15.53,7.12L14.12,8.53M7,18A2,2 0 0,1 9,20A2,2 0 0,1 7,22A2,2 0 0,1 5,20A2,2 0 0,1 7,18M17,18A2,2 0 0,1 19,20A2,2 0 0,1 17,22A2,2 0 0,1 15,20A2,2 0 0,1 17,18M7.17,14.75A0.25,0.25 0 0,0 7.42,15H19V17H7A2,2 0 0,1 5,15C5,14.65 5.09,14.32 5.25,14.04L6.6,11.59L3,4H1V2H4.27L5.21,4L6.16,6L8.4,10.73L8.53,11H15.55L18.31,6L19.41,4H19.42L21.16,4.96L17.3,11.97C16.96,12.59 16.3,13 15.55,13H8.1L7.2,14.63L7.17,14.75Z"; -var mdiCartVariant = "M19 20C19 21.11 18.11 22 17 22C15.89 22 15 21.1 15 20C15 18.89 15.89 18 17 18C18.11 18 19 18.9 19 20M7 18C5.89 18 5 18.89 5 20C5 21.1 5.89 22 7 22C8.11 22 9 21.11 9 20S8.11 18 7 18M7.2 14.63L7.17 14.75C7.17 14.89 7.28 15 7.42 15H19V17H7C5.89 17 5 16.1 5 15C5 14.65 5.09 14.32 5.24 14.04L6.6 11.59L3 4H1V2H4.27L5.21 4H20C20.55 4 21 4.45 21 5C21 5.17 20.95 5.34 20.88 5.5L17.3 11.97C16.96 12.58 16.3 13 15.55 13H8.1L7.2 14.63M8.5 11H10V9H7.56L8.5 11M11 9V11H14V9H11M14 8V6H11V8H14M17.11 9H15V11H16L17.11 9M18.78 6H15V8H17.67L18.78 6M6.14 6L7.08 8H10V6H6.14Z"; -var mdiCaseSensitiveAlt = "M20,14C20,12.5 19.5,12 18,12H16V11C16,10 16,10 14,10V15.4L14,19H16L18,19C19.5,19 20,18.47 20,17V14M12,12C12,10.5 11.47,10 10,10H6C4.5,10 4,10.5 4,12V19H6V16H10V19H12V12M10,7H14V5H10V7M22,9V20C22,21.11 21.11,22 20,22H4A2,2 0 0,1 2,20V9C2,7.89 2.89,7 4,7H8V5L10,3H14L16,5V7H20A2,2 0 0,1 22,9H22M16,17H18V14H16V17M6,12H10V14H6V12Z"; -var mdiCash = "M3,6H21V18H3V6M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M7,8A2,2 0 0,1 5,10V14A2,2 0 0,1 7,16H17A2,2 0 0,1 19,14V10A2,2 0 0,1 17,8H7Z"; -var mdiCash100 = "M2,5H22V20H2V5M20,18V7H4V18H20M17,8A2,2 0 0,0 19,10V15A2,2 0 0,0 17,17H7A2,2 0 0,0 5,15V10A2,2 0 0,0 7,8H17M17,13V12C17,10.9 16.33,10 15.5,10C14.67,10 14,10.9 14,12V13C14,14.1 14.67,15 15.5,15C16.33,15 17,14.1 17,13M15.5,11A0.5,0.5 0 0,1 16,11.5V13.5A0.5,0.5 0 0,1 15.5,14A0.5,0.5 0 0,1 15,13.5V11.5A0.5,0.5 0 0,1 15.5,11M13,13V12C13,10.9 12.33,10 11.5,10C10.67,10 10,10.9 10,12V13C10,14.1 10.67,15 11.5,15C12.33,15 13,14.1 13,13M11.5,11A0.5,0.5 0 0,1 12,11.5V13.5A0.5,0.5 0 0,1 11.5,14A0.5,0.5 0 0,1 11,13.5V11.5A0.5,0.5 0 0,1 11.5,11M8,15H9V10H8L7,10.5V11.5L8,11V15Z"; -var mdiCashCheck = "M3 6V18H13.32C13.1 17.33 13 16.66 13 16H7C7 14.9 6.11 14 5 14V10C6.11 10 7 9.11 7 8H17C17 9.11 17.9 10 19 10V10.06C19.67 10.06 20.34 10.18 21 10.4V6H3M12 9C10.3 9.03 9 10.3 9 12C9 13.7 10.3 14.94 12 15C12.38 15 12.77 14.92 13.14 14.77C13.41 13.67 13.86 12.63 14.97 11.61C14.85 10.28 13.59 8.97 12 9M21.63 12.27L17.76 16.17L16.41 14.8L15 16.22L17.75 19L23.03 13.68L21.63 12.27Z"; -var mdiCashLock = "M21.8 15C22.4 15 23 15.6 23 16.3V19.8C23 20.4 22.4 21 21.7 21H16.2C15.6 21 15 20.4 15 19.7V16.2C15 15.6 15.6 15 16.2 15V13.5C16.2 12.1 17.6 11 19 11C20.4 11 21.8 12.1 21.8 13.5V15M20.5 15V13.5C20.5 12.7 19.8 12.2 19 12.2C18.2 12.2 17.5 12.7 17.5 13.5V15H20.5M2 6H20V9.1L19 9C18.18 9 17.41 9.2 16.73 9.54C16.28 9.18 16 8.62 16 8H6C6 9.11 5.11 10 4 10V14C5.11 14 6 14.9 6 16H13.04L13 16.5V18H2V6M11 9C12.66 9 14 10.34 14 12C14 13.66 12.66 15 11 15C9.34 15 8 13.66 8 12C8 10.34 9.34 9 11 9Z"; -var mdiCashLockOpen = "M21.8 16C22.4 16 23 16.6 23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V13.5C16.2 12.1 17.6 11 19 11C20.4 11 21.8 12.1 21.8 13.5V14H20.5V13.5C20.5 12.7 19.8 12.2 19 12.2C18.2 12.2 17.5 12.7 17.5 13.5V16H21.8M2 6H20V9.1L19 9C18.18 9 17.41 9.2 16.73 9.54C16.28 9.18 16 8.62 16 8H6C6 9.11 5.11 10 4 10V14C5.11 14 6 14.9 6 16H13.04L13 16.5V18H2V6M11 9C12.66 9 14 10.34 14 12C14 13.66 12.66 15 11 15C9.34 15 8 13.66 8 12C8 10.34 9.34 9 11 9Z"; -var mdiCashMarker = "M18.5,16.8C17.8,16.8 17.3,16.2 17.3,15.6C17.3,14.9 17.9,14.4 18.5,14.4C19.1,14.4 19.7,15 19.7,15.6C19.8,16.2 19.2,16.8 18.5,16.8M18.5,12C16.6,12 15,13.6 15,15.5C15,18.1 18.5,22 18.5,22C18.5,22 22,18.1 22,15.5C22,13.6 20.4,12 18.5,12M14.9,11.3C14.6,10 13.4,9 12,9C10.3,9 9,10.3 9,12C9,13.7 10.3,15 12,15C12.4,15 12.7,14.9 13,14.8C13.2,13.4 13.9,12.2 14.9,11.3M13,16H7A2,2 0 0,0 5,14V10A2,2 0 0,0 7,8H17A2,2 0 0,0 19,10C19,10 20,10 21,10.6V6H3V18H13.5C13.3,17.3 13.1,16.7 13,16Z"; -var mdiCashMinus = "M15 15V17H23V15M14.97 11.61C14.85 10.28 13.59 8.97 12 9C10.3 9.03 9 10.3 9 12C9 13.7 10.3 14.94 12 15C12.38 15 12.77 14.92 13.14 14.77C13.41 13.67 13.86 12.63 14.97 11.61M13 16H7C7 14.9 6.11 14 5 14V10C6.11 10 7 9.11 7 8H17C17 9.11 17.9 10 19 10V10.06C19.67 10.06 20.34 10.18 21 10.4V6H3V18H13.32C13.1 17.33 13 16.66 13 16Z"; -var mdiCashMultiple = "M5,6H23V18H5V6M14,9A3,3 0 0,1 17,12A3,3 0 0,1 14,15A3,3 0 0,1 11,12A3,3 0 0,1 14,9M9,8A2,2 0 0,1 7,10V14A2,2 0 0,1 9,16H19A2,2 0 0,1 21,14V10A2,2 0 0,1 19,8H9M1,10H3V20H19V22H1V10Z"; -var mdiCashPlus = "M15 15V17H18V20H20V17H23V15H20V12H18V15M14.97 11.61C14.85 10.28 13.59 8.97 12 9C10.3 9.03 9 10.3 9 12C9 13.7 10.3 14.94 12 15C12.38 15 12.77 14.92 13.14 14.77C13.41 13.67 13.86 12.63 14.97 11.61M13 16H7C7 14.9 6.11 14 5 14V10C6.11 10 7 9.11 7 8H17C17 9.11 17.9 10 19 10V10.06C19.67 10.06 20.34 10.18 21 10.4V6H3V18H13.32C13.1 17.33 13 16.66 13 16Z"; -var mdiCashRefund = "M12.3 8.93L9.88 6.5H15.5V10H17V5H9.88L12.3 2.57L11.24 1.5L7 5.75L11.24 10L12.3 8.93M12 14A3 3 0 1 0 15 17A3 3 0 0 0 12 14M3 11V23H21V11M19 19A2 2 0 0 0 17 21H7A2 2 0 0 0 5 19V15A2 2 0 0 0 7 13H17A2 2 0 0 0 19 15Z"; -var mdiCashRegister = "M2,17H22V21H2V17M6.25,7H9V6H6V3H14V6H11V7H17.8C18.8,7 19.8,8 20,9L20.5,16H3.5L4.05,9C4.05,8 5.05,7 6.25,7M13,9V11H18V9H13M6,9V10H8V9H6M9,9V10H11V9H9M6,11V12H8V11H6M9,11V12H11V11H9M6,13V14H8V13H6M9,13V14H11V13H9M7,4V5H13V4H7Z"; -var mdiCashRemove = "M15.46 18.12L16.88 19.54L19 17.41L21.12 19.54L22.54 18.12L20.41 16L22.54 13.88L21.12 12.46L19 14.59L16.88 12.46L15.46 13.88L17.59 16M14.97 11.62C14.86 10.28 13.58 8.97 12 9C10.3 9.04 9 10.3 9 12C9 13.7 10.3 14.94 12 15C12.39 15 12.77 14.92 13.14 14.77C13.41 13.67 13.86 12.63 14.97 11.62M13 16H7C7 14.9 6.1 14 5 14V10C6.1 10 7 9.1 7 8H17C17 9.1 17.9 10 19 10V10.05C19.67 10.06 20.34 10.18 21 10.4V6H3V18H13.32C13.1 17.33 13 16.66 13 16Z"; -var mdiCashUsd = "M20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V6C22 4.89 21.1 4 20 4M15 10H11V11H14C14.55 11 15 11.45 15 12V15C15 15.55 14.55 16 14 16H13V17H11V16H9V14H13V13H10C9.45 13 9 12.55 9 12V9C9 8.45 9.45 8 10 8H11V7H13V8H15V10Z"; -var mdiCashUsdOutline = "M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M11,17H13V16H14A1,1 0 0,0 15,15V12A1,1 0 0,0 14,11H11V10H15V8H13V7H11V8H10A1,1 0 0,0 9,9V12A1,1 0 0,0 10,13H13V14H9V16H11V17Z"; -var mdiCassette = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H6L7,17H17L18,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M9,10H15V13H9V10M17.5,10A1.5,1.5 0 0,1 19,11.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 16,11.5A1.5,1.5 0 0,1 17.5,10Z"; -var mdiCast = "M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3Z"; -var mdiCastAudio = "M2 11V13C7 13 11 17 11 22H13C13 15.9 8.1 11 2 11M20 2H10C8.9 2 8 2.9 8 4V10.5C9 11 9.9 11.7 10.7 12.4C11.6 11 13.2 10 15 10C17.8 10 20 12.2 20 15S17.8 20 15 20H14.8C14.9 20.7 15 21.3 15 22H20C21.1 22 22 21.1 22 20V4C22 2.9 21.1 2 20 2M15 8C13.9 8 13 7.1 13 6C13 4.9 13.9 4 15 4C16.1 4 17 4.9 17 6S16.1 8 15 8M15 18C14.8 18 14.5 18 14.3 17.9C13.8 16.4 13.1 15.1 12.2 13.9C12.6 12.8 13.7 11.9 15 11.9C16.7 11.9 18 13.2 18 14.9S16.7 18 15 18M2 15V17C4.8 17 7 19.2 7 22H9C9 18.1 5.9 15 2 15M2 19V22H5C5 20.3 3.7 19 2 19"; -var mdiCastConnected = "M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M19,7H5V8.63C8.96,9.91 12.09,13.04 13.37,17H19M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18Z"; -var mdiCastEducation = "M21,3H3A2,2 0 0,0 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M1,18V21H4A3,3 0 0,0 1,18M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M11,11.09V13.09L14.5,15L18,13.09V11.09L14.5,13L11,11.09M14.5,6L9,9L14.5,12L20,9L14.5,6Z"; -var mdiCastOff = "M1.6,1.27L0.25,2.75L1.41,3.8C1.16,4.13 1,4.55 1,5V8H3V5.23L18.2,19H14V21H20.41L22.31,22.72L23.65,21.24M6.5,3L8.7,5H21V16.14L23,17.95V5C23,3.89 22.1,3 21,3M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.08,10 1,10M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18Z"; -var mdiCastle = "M2,13H4V15H6V13H8V15H10V13H12V15H14V10L17,7V1H19L23,3L19,5V7L22,10V22H11V19A2,2 0 0,0 9,17A2,2 0 0,0 7,19V22H2V13M18,10C17.45,10 17,10.54 17,11.2V13H19V11.2C19,10.54 18.55,10 18,10Z"; -var mdiCat = "M12,8L10.67,8.09C9.81,7.07 7.4,4.5 5,4.5C5,4.5 3.03,7.46 4.96,11.41C4.41,12.24 4.07,12.67 4,13.66L2.07,13.95L2.28,14.93L4.04,14.67L4.18,15.38L2.61,16.32L3.08,17.21L4.53,16.32C5.68,18.76 8.59,20 12,20C15.41,20 18.32,18.76 19.47,16.32L20.92,17.21L21.39,16.32L19.82,15.38L19.96,14.67L21.72,14.93L21.93,13.95L20,13.66C19.93,12.67 19.59,12.24 19.04,11.41C20.97,7.46 19,4.5 19,4.5C16.6,4.5 14.19,7.07 13.33,8.09L12,8M9,11A1,1 0 0,1 10,12A1,1 0 0,1 9,13A1,1 0 0,1 8,12A1,1 0 0,1 9,11M15,11A1,1 0 0,1 16,12A1,1 0 0,1 15,13A1,1 0 0,1 14,12A1,1 0 0,1 15,11M11,14H13L12.3,15.39C12.5,16.03 13.06,16.5 13.75,16.5A1.5,1.5 0 0,0 15.25,15H15.75A2,2 0 0,1 13.75,17C13,17 12.35,16.59 12,16V16H12C11.65,16.59 11,17 10.25,17A2,2 0 0,1 8.25,15H8.75A1.5,1.5 0 0,0 10.25,16.5C10.94,16.5 11.5,16.03 11.7,15.39L11,14Z"; -var mdiCctv = "M18.15,4.94C17.77,4.91 17.37,5 17,5.2L8.35,10.2C7.39,10.76 7.07,12 7.62,12.94L9.12,15.53C9.67,16.5 10.89,16.82 11.85,16.27L13.65,15.23C13.92,15.69 14.32,16.06 14.81,16.27V18.04C14.81,19.13 15.7,20 16.81,20H22V18.04H16.81V16.27C17.72,15.87 18.31,14.97 18.31,14C18.31,13.54 18.19,13.11 17.97,12.73L20.5,11.27C21.47,10.71 21.8,9.5 21.24,8.53L19.74,5.94C19.4,5.34 18.79,5 18.15,4.94M6.22,13.17L2,13.87L2.75,15.17L4.75,18.63L5.5,19.93L8.22,16.63L6.22,13.17Z"; -var mdiCeilingLight = "M8,9H11V4H13V9H16L20,17H4L8,9M14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18H14Z"; -var mdiCellphone = "M17,19H7V5H17M17,1H7C5.89,1 5,1.89 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3C19,1.89 18.1,1 17,1Z"; -var mdiCellphoneAndroid = "M17.25,18H6.75V4H17.25M14,21H10V20H14M16,1H8A3,3 0 0,0 5,4V20A3,3 0 0,0 8,23H16A3,3 0 0,0 19,20V4A3,3 0 0,0 16,1Z"; -var mdiCellphoneArrowDown = "M17,1H7A2,2 0 0,0 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1M17,19H7V5H17V19M16,13H13V8H11V13H8L12,17L16,13Z"; -var mdiCellphoneBasic = "M15,2A1,1 0 0,0 14,3V6H10C8.89,6 8,6.89 8,8V20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V8C17,7.26 16.6,6.62 16,6.28V3A1,1 0 0,0 15,2M10,8H15V13H10V8M10,15H11V16H10V15M12,15H13V16H12V15M14,15H15V16H14V15M10,17H11V18H10V17M12,17H13V18H12V17M14,17H15V18H14V17M10,19H11V20H10V19M12,19H13V20H12V19M14,19H15V20H14V19Z"; -var mdiCellphoneCharging = "M11 18.5V13H9L13 5.5V11H15M17 19H7V5H17M17 1H7C5.89 1 5 1.89 5 3V21A2 2 0 0 0 7 23H17A2 2 0 0 0 19 21V3C19 1.89 18.1 1 17 1Z"; -var mdiCellphoneCog = "M9.82,12.5C9.84,12.33 9.86,12.17 9.86,12C9.86,11.83 9.84,11.67 9.82,11.5L10.9,10.69C11,10.62 11,10.5 10.96,10.37L9.93,8.64C9.87,8.53 9.73,8.5 9.62,8.53L8.34,9.03C8.07,8.83 7.78,8.67 7.47,8.54L7.27,7.21C7.27,7.09 7.16,7 7.03,7H5C4.85,7 4.74,7.09 4.72,7.21L4.5,8.53C4.21,8.65 3.92,8.83 3.65,9L2.37,8.5C2.25,8.47 2.12,8.5 2.06,8.63L1.03,10.36C0.97,10.5 1,10.61 1.1,10.69L2.18,11.5C2.16,11.67 2.15,11.84 2.15,12C2.15,12.17 2.17,12.33 2.19,12.5L1.1,13.32C1,13.39 1,13.53 1.04,13.64L2.07,15.37C2.13,15.5 2.27,15.5 2.38,15.5L3.66,15C3.93,15.18 4.22,15.34 4.53,15.47L4.73,16.79C4.74,16.91 4.85,17 5,17H7.04C7.17,17 7.28,16.91 7.29,16.79L7.5,15.47C7.8,15.35 8.09,15.17 8.36,15L9.64,15.5C9.76,15.53 9.89,15.5 9.95,15.37L11,13.64C11.04,13.53 11,13.4 10.92,13.32L9.82,12.5M6,13.75C5,13.75 4.2,12.97 4.2,12C4.2,11.03 5,10.25 6,10.25C7,10.25 7.8,11.03 7.8,12C7.8,12.97 7,13.75 6,13.75M17,1H7A2,2 0 0,0 5,3V6H7V4H17V20H7V18H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1Z"; -var mdiCellphoneDock = "M16,15H8V5H16M16,1H8C6.89,1 6,1.89 6,3V17A2,2 0 0,0 8,19H16A2,2 0 0,0 18,17V3C18,1.89 17.1,1 16,1M8,23H16V21H8V23Z"; -var mdiCellphoneErase = "M11,8.2L10,7.2L6,11.2L2,7.2L1,8.2L5,12.2L1,16.2L2,17.2L6,13.2L10,17.2L11,16.2L7,12.2L11,8.2M17,1H7A2,2 0 0,0 5,3V6H7V4H17V20H7V18H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1Z"; -var mdiCellphoneInformation = "M13 7H11V9H13V7M13 11H11V17H13V11M17 1H7C5.9 1 5 1.9 5 3V21C5 22.1 5.9 23 7 23H17C18.1 23 19 22.1 19 21V3C19 1.9 18.1 1 17 1M17 19H7V5H17V19Z"; -var mdiCellphoneIphone = "M16,18H7V4H16M11.5,22A1.5,1.5 0 0,1 10,20.5A1.5,1.5 0 0,1 11.5,19A1.5,1.5 0 0,1 13,20.5A1.5,1.5 0 0,1 11.5,22M15.5,1H7.5A2.5,2.5 0 0,0 5,3.5V20.5A2.5,2.5 0 0,0 7.5,23H15.5A2.5,2.5 0 0,0 18,20.5V3.5A2.5,2.5 0 0,0 15.5,1Z"; -var mdiCellphoneKey = "M7,1A2,2 0 0,0 5,3V7H7V4H17V20H7V17H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1H7M6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C7.31,15 8.42,14.17 8.83,13H11V15H13V13H14V11H8.83C8.42,9.83 7.31,9 6,9M6,11A1,1 0 0,1 7,12A1,1 0 0,1 6,13A1,1 0 0,1 5,12A1,1 0 0,1 6,11Z"; -var mdiCellphoneLink = "M22,17H18V10H22M23,8H17A1,1 0 0,0 16,9V19A1,1 0 0,0 17,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6H22V4H4A2,2 0 0,0 2,6V17H0V20H14V17H4V6Z"; -var mdiCellphoneLinkOff = "M23,8H17A1,1 0 0,0 16,9V13.18L18,15.18V10H22V17H19.82L22.82,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6.27L14.73,17H4V6.27M1.92,1.65L0.65,2.92L2.47,4.74C2.18,5.08 2,5.5 2,6V17H0V20H17.73L20.08,22.35L21.35,21.08L3.89,3.62L1.92,1.65M22,6V4H6.82L8.82,6H22Z"; -var mdiCellphoneLock = "M17,1H7A2,2 0 0,0 5,3V6H7V4H17V20H7V18H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1M8.8,11V9.5C8.8,8.1 7.4,7 6,7C4.6,7 3.2,8.1 3.2,9.5V11C2.6,11 2,11.6 2,12.2V15.7C2,16.4 2.6,17 3.2,17H8.7C9.4,17 10,16.4 10,15.8V12.3C10,11.6 9.4,11 8.8,11M7.5,11H4.5V9.5C4.5,8.7 5.2,8.2 6,8.2C6.8,8.2 7.5,8.7 7.5,9.5V11Z"; -var mdiCellphoneMessage = "M11,17V7H4V17H11M11,3A2,2 0 0,1 13,5V19A2,2 0 0,1 11,21H4C2.89,21 2,20.1 2,19V5A2,2 0 0,1 4,3H11M16.5,3H21.5A1.5,1.5 0 0,1 23,4.5V7.5A1.5,1.5 0 0,1 21.5,9H18L15,12V9L15,4.5A1.5,1.5 0 0,1 16.5,3Z"; -var mdiCellphoneMessageOff = "M2.39 1.73L1.11 3L2.22 4.11C2.08 4.38 2 4.68 2 5V19C2 20.1 2.89 21 4 21H11C12.1 21 13 20.1 13 19V14.89L20.84 22.73L22.11 21.46L2.39 1.73M11 17H4V7H5.11L11 12.89V17M23 4.5V7.5C23 8.33 22.33 9 21.5 9H18L15.1 11.9L15 11.8V4.5C15 3.67 15.67 3 16.5 3H21.5C22.33 3 23 3.67 23 4.5M10.2 7L6.2 3H11C12.1 3 13 3.9 13 5V9.8L11 7.8V7H10.2"; -var mdiCellphoneNfc = "M2,16V18A5,5 0 0,1 7,23H9A7,7 0 0,0 2,16M2,20V23H5A3,3 0 0,0 2,20M2,12V14A9,9 0 0,1 11,23H13C13,16.92 8.08,12 2,12M17,1H7A2,2 0 0,0 5,3V10.37C5.69,10.53 6.36,10.74 7,11V5H17V18H13.97C14.5,19.25 14.81,20.59 14.92,22H17A2,2 0 0,0 19,20V3A2,2 0 0,0 17,1Z"; -var mdiCellphoneNfcOff = "M20.84 22.73L18.85 20.74C18.56 21.5 17.84 22 17 22H14.92C14.81 20.59 14.5 19.25 13.97 18H16.11L7 8.89V11C6.36 10.74 5.69 10.53 5 10.37V6.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M17 5V13.8L19 15.8V3C19 1.9 18.11 1 17 1H7C6.24 1 5.59 1.43 5.25 2.05L8.2 5H17M2 20V23H5C5 21.34 3.66 20 2 20M2 16V18C4.76 18 7 20.24 7 23H9C9 19.13 5.87 16 2 16M2 12V14C6.97 14 11 18.03 11 23H13C13 16.92 8.08 12 2 12Z"; -var mdiCellphoneOff = "M2.38,1.73L1.11,3L5,6.89V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V20.89L20.84,22.73L22.11,21.46M17,19H7V8.89L17,18.89V19M17,5V13.8L19,15.8V3A2,2 0 0,0 17,1H7C6.28,1 5.6,1.37 5.24,2L8.24,5H17Z"; -var mdiCellphonePlay = "M17 19H7V5H17M17 1H7C5.89 1 5 1.89 5 3V21C5 22.1 5.9 23 7 23H17C18.1 23 19 22.1 19 21V3C19 1.89 18.1 1 17 1M10 9V15L14 12L10 9Z"; -var mdiCellphoneScreenshot = "M7,1A2,2 0 0,0 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1H7M7,4H17V20H7V4M9,6V10H10.5V7.5H13V6H9M13.5,14V16.5H11V18H15V14H13.5Z"; -var mdiCellphoneSettings = "M16,16H8V4H16M16,0H8A2,2 0 0,0 6,2V18A2,2 0 0,0 8,20H16A2,2 0 0,0 18,18V2A2,2 0 0,0 16,0M15,24H17V22H15M11,24H13V22H11M7,24H9V22H7V24Z"; -var mdiCellphoneSound = "M19.1,8.7C20.9,10.5 20.9,13.3 19.1,15.2L20.1,16.2C22.6,13.9 22.6,10.1 20.1,7.7L19.1,8.7M18,9.8L17,10.8C17.5,11.5 17.5,12.4 17,13.1L18,14.1C19.2,12.9 19.2,11.1 18,9.8M14,1H4A2,2 0 0,0 2,3V21A2,2 0 0,0 4,23H14A2,2 0 0,0 16,21V3A2,2 0 0,0 14,1M14,20H4V4H14V20Z"; -var mdiCellphoneText = "M17,19V5H7V19H17M17,1A2,2 0 0,1 19,3V21A2,2 0 0,1 17,23H7C5.89,23 5,22.1 5,21V3C5,1.89 5.89,1 7,1H17M9,7H15V9H9V7M9,11H13V13H9V11Z"; -var mdiCellphoneWireless = "M20.07,4.93C21.88,6.74 23,9.24 23,12C23,14.76 21.88,17.26 20.07,19.07L18.66,17.66C20.11,16.22 21,14.22 21,12C21,9.79 20.11,7.78 18.66,6.34L20.07,4.93M17.24,7.76C18.33,8.85 19,10.35 19,12C19,13.65 18.33,15.15 17.24,16.24L15.83,14.83C16.55,14.11 17,13.11 17,12C17,10.89 16.55,9.89 15.83,9.17L17.24,7.76M13,10A2,2 0 0,1 15,12A2,2 0 0,1 13,14A2,2 0 0,1 11,12A2,2 0 0,1 13,10M11.5,1A2.5,2.5 0 0,1 14,3.5V8H12V4H3V19H12V16H14V20.5A2.5,2.5 0 0,1 11.5,23H3.5A2.5,2.5 0 0,1 1,20.5V3.5A2.5,2.5 0 0,1 3.5,1H11.5Z"; -var mdiCelticCross = "M17.8,8C17.26,5.89 15.61,4.24 13.5,3.7V2H10.5V3.7C8.39,4.24 6.74,5.89 6.2,8H4V11H6.2C6.74,13.11 8.39,14.76 10.5,15.3V22H13.5V15.3C15.61,14.76 17.26,13.11 17.8,11H19.97V8H17.8M12.04,9.53L14.5,11H15.76C15.35,12.03 14.53,12.84 13.5,13.26V12L12.06,9.56L12,9.5L11.94,9.56L10.5,12V13.26C9.47,12.84 8.66,12.03 8.24,11H9.5L11.96,9.53L12,9.5H11.96L9.5,8H8.24C8.65,6.97 9.47,6.16 10.5,5.74V7L11.94,9.44L12,9.5L12.06,9.44L13.5,7V5.74C14.53,6.16 15.35,6.97 15.76,8H14.5L12.04,9.5H12L12.04,9.53Z"; -var mdiCentos = "M19.07 14.93L22 12L19.07 9.07V4.93H14.93L12 2L9.07 4.93H4.93V9.07L2 12L4.93 14.93V19.07H9.07L12 22L14.93 19.07H19.07V14.93M21.41 12L19.07 14.34V12.46H13.69L13.23 12L13.69 11.54H19.07V9.66L21.41 12M18.66 14.76L17.32 16.09L14.11 12.87H18.66V14.76M12.46 13.1L12 12.65L11.54 13.1V12.46H10.9L11.36 12L10.9 11.54H11.54V10.9L12 11.36L12.46 10.9V11.54H13.1L12.65 12L13.1 12.46H12.46V13.1M14.11 11.13L17.32 7.91L18.66 9.24V11.13H14.11M18.66 5.35V8.65L17.32 7.32L13.5 11.13H12.87V10.5L16.68 6.68L15.35 5.35H18.66M12.87 9.89V5.35H14.76L16.09 6.68L12.87 9.89M12 2.59L14.34 4.93H12.46V10.31L12 10.77L11.54 10.31V4.93H9.66L12 2.59M11.13 9.89L7.91 6.68L9.24 5.35H11.13V9.89M5.35 5.35H8.65L7.32 6.68L11.13 10.5V11.13H10.5L6.68 7.32L5.35 8.65V5.35M5.35 9.24L6.68 7.91L9.89 11.13H5.35V9.24M2.59 12L4.93 9.66V11.54H10.31L10.77 12L10.31 12.46H4.93V14.34L2.59 12M9.89 12.87L6.68 16.09L5.35 14.76V12.87H9.89M5.35 18.66V15.35L6.68 16.68L10.5 12.87H11.13V13.5L7.32 17.32L8.65 18.65H5.35M11.13 14.11V18.66H9.24L7.91 17.32L11.13 14.11M12 21.41L9.66 19.07H11.54V13.69L12 13.23L12.46 13.69V19.07H14.34L12 21.41M12.87 14.11L16.09 17.32L14.76 18.66H12.87V14.11M15.35 18.66L16.68 17.32L12.87 13.5V12.87H13.5L17.32 16.68L18.65 15.35V18.66H15.35Z"; -var mdiCertificate = "M4,3C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H12V22L15,19L18,22V17H20A2,2 0 0,0 22,15V8L22,6V5A2,2 0 0,0 20,3H16V3H4M12,5L15,7L18,5V8.5L21,10L18,11.5V15L15,13L12,15V11.5L9,10L12,8.5V5M4,5H9V7H4V5M4,9H7V11H4V9M4,13H9V15H4V13Z"; -var mdiCertificateOutline = "M13 21L15 20L17 21V14H13M17 9V7L15 8L13 7V9L11 10L13 11V13L15 12L17 13V11L19 10M20 3H4A2 2 0 0 0 2 5V15A2 2 0 0 0 4 17H11V15H4V5H20V15H19V17H20A2 2 0 0 0 22 15V5A2 2 0 0 0 20 3M11 8H5V6H11M9 11H5V9H9M11 14H5V12H11Z"; -var mdiChairRolling = "M22 10V13H19V10H22M2 13H5V10H2V13M17 5C17 3.9 16.1 3 15 3H9C7.9 3 7 3.9 7 5V13H17V5M7 15H6V17H11V18L7 22H9.8L12 19.8L14.2 22H17L13 18V17H18V15H7Z"; -var mdiChairSchool = "M22,5V7H17L13.53,12H16V14H14.46L18.17,22H15.97L15.04,20H6.38L5.35,22H3.1L7.23,14H7C6.55,14 6.17,13.7 6.04,13.3L2.87,3.84L3.82,3.5C4.34,3.34 4.91,3.63 5.08,4.15L7.72,12H12.1L15.57,7H12V5H22M9.5,14L7.42,18H14.11L12.26,14H9.5Z"; -var mdiCharity = "M12.75,3.94C13.75,3.22 14.91,2.86 16.22,2.86C16.94,2.86 17.73,3.05 18.59,3.45C19.45,3.84 20.13,4.3 20.63,4.83C21.66,6.11 22.09,7.6 21.94,9.3C21.78,11 21.22,12.33 20.25,13.27L12.66,20.86C12.47,21.05 12.23,21.14 11.95,21.14C11.67,21.14 11.44,21.05 11.25,20.86C11.06,20.67 10.97,20.44 10.97,20.16C10.97,19.88 11.06,19.64 11.25,19.45L15.84,14.86C16.09,14.64 16.09,14.41 15.84,14.16C15.59,13.91 15.36,13.91 15.14,14.16L10.55,18.75C10.36,18.94 10.13,19.03 9.84,19.03C9.56,19.03 9.33,18.94 9.14,18.75C8.95,18.56 8.86,18.33 8.86,18.05C8.86,17.77 8.95,17.53 9.14,17.34L13.73,12.75C14,12.5 14,12.25 13.73,12C13.5,11.75 13.28,11.75 13.03,12L8.44,16.64C8.25,16.83 8,16.92 7.73,16.92C7.45,16.92 7.21,16.83 7,16.64C6.8,16.45 6.7,16.22 6.7,15.94C6.7,15.66 6.81,15.41 7.03,15.19L11.63,10.59C11.88,10.34 11.88,10.11 11.63,9.89C11.38,9.67 11.14,9.67 10.92,9.89L6.28,14.5C6.06,14.7 5.83,14.81 5.58,14.81C5.3,14.81 5.06,14.71 4.88,14.5C4.69,14.3 4.59,14.06 4.59,13.78C4.59,13.5 4.69,13.27 4.88,13.08C7.94,10 9.83,8.14 10.55,7.45L14.11,10.97C14.5,11.34 14.95,11.53 15.5,11.53C16.2,11.53 16.75,11.25 17.16,10.69C17.44,10.28 17.54,9.83 17.46,9.33C17.38,8.83 17.17,8.41 16.83,8.06L12.75,3.94M14.81,10.27L10.55,6L3.47,13.08C2.63,12.23 2.15,10.93 2.04,9.16C1.93,7.4 2.41,5.87 3.47,4.59C4.66,3.41 6.08,2.81 7.73,2.81C9.39,2.81 10.8,3.41 11.95,4.59L16.22,8.86C16.41,9.05 16.5,9.28 16.5,9.56C16.5,9.84 16.41,10.08 16.22,10.27C16.03,10.45 15.8,10.55 15.5,10.55C15.23,10.55 15,10.45 14.81,10.27V10.27Z"; -var mdiChartArc = "M16.18,19.6L14.17,16.12C15.15,15.4 15.83,14.28 15.97,13H20C19.83,15.76 18.35,18.16 16.18,19.6M13,7.03V3C17.3,3.26 20.74,6.7 21,11H16.97C16.74,8.91 15.09,7.26 13,7.03M7,12.5C7,13.14 7.13,13.75 7.38,14.3L3.9,16.31C3.32,15.16 3,13.87 3,12.5C3,7.97 6.54,4.27 11,4V8.03C8.75,8.28 7,10.18 7,12.5M11.5,21C8.53,21 5.92,19.5 4.4,17.18L7.88,15.17C8.7,16.28 10,17 11.5,17C12.14,17 12.75,16.87 13.3,16.62L15.31,20.1C14.16,20.68 12.87,21 11.5,21Z"; -var mdiChartAreaspline = "M17.45,15.18L22,7.31V19L22,21H2V3H4V15.54L9.5,6L16,9.78L20.24,2.45L21.97,3.45L16.74,12.5L10.23,8.75L4.31,19H6.57L10.96,11.44L17.45,15.18Z"; -var mdiChartAreasplineVariant = "M22,21H2V3H4V15.54L9.5,6L16,9.78L20.24,2.45L21.97,3.45L22,21Z"; -var mdiChartBar = "M22,21H2V3H4V19H6V10H10V19H12V6H16V19H18V14H22V21Z"; -var mdiChartBarStacked = "M22,21H2V3H4V19H6V17H10V19H12V16H16V19H18V17H22V21M18,14H22V16H18V14M12,6H16V9H12V6M16,15H12V10H16V15M6,10H10V12H6V10M10,16H6V13H10V16Z"; -var mdiChartBellCurve = "M9.96,11.31C10.82,8.1 11.5,6 13,6C14.5,6 15.18,8.1 16.04,11.31C17,14.92 18.1,19 22,19V17C19.8,17 19,14.54 17.97,10.8C17.08,7.46 16.15,4 13,4C9.85,4 8.92,7.46 8.03,10.8C7.03,14.54 6.2,17 4,17V2H2V22H22V20H4V19C7.9,19 9,14.92 9.96,11.31Z"; -var mdiChartBellCurveCumulative = "M4 19V20H22V22H2V2H4V17C7 17 10 15 12.1 11.4C15.1 6.4 18.4 4 22 4V6C19.2 6 16.5 8.1 13.9 12.5C11.3 16.6 7.7 19 4 19Z"; -var mdiChartBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9 17H7V10H9V17M13 17H11V7H13V17M17 17H15V13H17V17Z"; -var mdiChartBoxOutline = "M9 17H7V10H9V17M13 17H11V7H13V17M17 17H15V13H17V17M19.5 19.1H4.5V5H19.5V19.1M19.5 3H4.5C3.4 3 2.5 3.9 2.5 5V19C2.5 20.1 3.4 21 4.5 21H19.5C20.6 21 21.5 20.1 21.5 19V5C21.5 3.9 20.6 3 19.5 3Z"; -var mdiChartBoxPlusOutline = "M22 5V7H19V10H17V7H14V5H17V2H19V5H22M19 19H5V5H11V3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V13H19V19M15 13V17H17V13H15M11 17H13V9H11V17M9 17V11H7V17H9Z"; -var mdiChartBubble = "M7.2,11.2C8.97,11.2 10.4,12.63 10.4,14.4C10.4,16.17 8.97,17.6 7.2,17.6C5.43,17.6 4,16.17 4,14.4C4,12.63 5.43,11.2 7.2,11.2M14.8,16A2,2 0 0,1 16.8,18A2,2 0 0,1 14.8,20A2,2 0 0,1 12.8,18A2,2 0 0,1 14.8,16M15.2,4A4.8,4.8 0 0,1 20,8.8C20,11.45 17.85,13.6 15.2,13.6A4.8,4.8 0 0,1 10.4,8.8C10.4,6.15 12.55,4 15.2,4Z"; -var mdiChartDonut = "M13,2.05V5.08C16.39,5.57 19,8.47 19,12C19,12.9 18.82,13.75 18.5,14.54L21.12,16.07C21.68,14.83 22,13.45 22,12C22,6.82 18.05,2.55 13,2.05M12,19A7,7 0 0,1 5,12C5,8.47 7.61,5.57 11,5.08V2.05C5.94,2.55 2,6.81 2,12A10,10 0 0,0 12,22C15.3,22 18.23,20.39 20.05,17.91L17.45,16.38C16.17,18 14.21,19 12,19Z"; -var mdiChartDonutVariant = "M13,2.05C18.05,2.55 22,6.82 22,12C22,13.45 21.68,14.83 21.12,16.07L18.5,14.54C18.82,13.75 19,12.9 19,12C19,8.47 16.39,5.57 13,5.08V2.05M12,19C14.21,19 16.17,18 17.45,16.38L20.05,17.91C18.23,20.39 15.3,22 12,22C6.47,22 2,17.5 2,12C2,6.81 5.94,2.55 11,2.05V5.08C7.61,5.57 5,8.47 5,12A7,7 0 0,0 12,19M12,6A6,6 0 0,1 18,12C18,14.97 15.84,17.44 13,17.92V14.83C14.17,14.42 15,13.31 15,12A3,3 0 0,0 12,9L11.45,9.05L9.91,6.38C10.56,6.13 11.26,6 12,6M6,12C6,10.14 6.85,8.5 8.18,7.38L9.72,10.05C9.27,10.57 9,11.26 9,12C9,13.31 9.83,14.42 11,14.83V17.92C8.16,17.44 6,14.97 6,12Z"; -var mdiChartGantt = "M2,5H10V2H12V22H10V18H6V15H10V13H4V10H10V8H2V5M14,5H17V8H14V5M14,10H19V13H14V10M14,15H22V18H14V15Z"; -var mdiChartHistogram = "M3,3H5V13H9V7H13V11H17V15H21V21H3V3Z"; -var mdiChartLine = "M16,11.78L20.24,4.45L21.97,5.45L16.74,14.5L10.23,10.75L5.46,19H22V21H2V3H4V17.54L9.5,8L16,11.78Z"; -var mdiChartLineStacked = "M17.45,15.18L22,6.81V19L22,21H2V3H4V15.54L4,19H4.31L6,19H6.57L10.96,11.44L17.45,15.18M22,3L21.97,3.45L17,11L10,6L6,12V3H22Z"; -var mdiChartLineVariant = "M3.5,18.5L9.5,12.5L13.5,16.5L22,6.92L20.59,5.5L13.5,13.5L9.5,9.5L2,17L3.5,18.5Z"; -var mdiChartMultiline = "M22,6.92L20.59,5.5L17.74,8.72C15.68,6.4 12.83,5 9.61,5C6.72,5 4.07,6.16 2,8L3.42,9.42C5.12,7.93 7.27,7 9.61,7C12.35,7 14.7,8.26 16.38,10.24L13.5,13.5L9.5,9.5L2,17L3.5,18.5L9.5,12.5L13.5,16.5L17.55,11.93C18.3,13.28 18.8,14.83 19,16.5H21C20.78,14.18 20.05,12.09 18.96,10.34L22,6.92Z"; -var mdiChartMultiple = "M22 16V18H6V2H8V13.57L13.71 4.57L16.87 6.68L19.29 4.26L20.71 5.68L17.13 9.29L14.29 7.4L8.82 16M4 20V4H2V22H22V20Z"; -var mdiChartPie = "M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z"; -var mdiChartPpf = "M5 6V8C8.2 8 11.36 9.18 13.57 11.15C15.64 13 16.83 15.5 17 18H18.97A14 12.5 0 0 0 5 6M22 21H2V3H4V19H22Z"; -var mdiChartSankey = "M22 5H4V2H2V22H22V20H4V9C8.09 9 10.13 11 12.29 13.21S17.09 18 22 18V16C17.91 16 15.87 14 13.71 11.79S8.91 7 4 7H22Z"; -var mdiChartSankeyVariant = "M20 4V6H4V4H2V12H4V10C8.16 10 9.92 12.11 11.77 14.34S15.65 19 20 19V21H22V15H20V17C16.59 17 15.07 15.17 13.31 13.06C11.34 10.69 9.1 8 4 8H20V10H22V4Z"; -var mdiChartScatterPlot = "M2,2H4V20H22V22H2V2M9,10A3,3 0 0,1 12,13A3,3 0 0,1 9,16A3,3 0 0,1 6,13A3,3 0 0,1 9,10M13,2A3,3 0 0,1 16,5A3,3 0 0,1 13,8A3,3 0 0,1 10,5A3,3 0 0,1 13,2M18,12A3,3 0 0,1 21,15A3,3 0 0,1 18,18A3,3 0 0,1 15,15A3,3 0 0,1 18,12Z"; -var mdiChartScatterPlotHexbin = "M2,2H4V20H22V22H2V2M14,14.5L12,18H7.94L5.92,14.5L7.94,11H12L14,14.5M14.08,6.5L12.06,10H8L6,6.5L8,3H12.06L14.08,6.5M21.25,10.5L19.23,14H15.19L13.17,10.5L15.19,7H19.23L21.25,10.5Z"; -var mdiChartTimeline = "M2,2H4V20H22V22H2V2M7,10H17V13H7V10M11,15H21V18H11V15M6,4H22V8H20V6H8V8H6V4Z"; -var mdiChartTimelineVariant = "M3,14L3.5,14.07L8.07,9.5C7.89,8.85 8.06,8.11 8.59,7.59C9.37,6.8 10.63,6.8 11.41,7.59C11.94,8.11 12.11,8.85 11.93,9.5L14.5,12.07L15,12C15.18,12 15.35,12 15.5,12.07L19.07,8.5C19,8.35 19,8.18 19,8A2,2 0 0,1 21,6A2,2 0 0,1 23,8A2,2 0 0,1 21,10C20.82,10 20.65,10 20.5,9.93L16.93,13.5C17,13.65 17,13.82 17,14A2,2 0 0,1 15,16A2,2 0 0,1 13,14L13.07,13.5L10.5,10.93C10.18,11 9.82,11 9.5,10.93L4.93,15.5L5,16A2,2 0 0,1 3,18A2,2 0 0,1 1,16A2,2 0 0,1 3,14Z"; -var mdiChartTimelineVariantShimmer = "M21 8C19.5 8 18.7 9.4 19.1 10.5L15.5 14.1C15.2 14 14.8 14 14.5 14.1L11.9 11.5C12.3 10.4 11.5 9 10 9C8.6 9 7.7 10.4 8.1 11.5L3.5 16C2.4 15.7 1 16.5 1 18C1 19.1 1.9 20 3 20C4.4 20 5.3 18.6 4.9 17.5L9.4 12.9C9.7 13 10.1 13 10.4 12.9L13 15.5C12.7 16.5 13.5 18 15 18C16.5 18 17.3 16.6 16.9 15.5L20.5 11.9C21.6 12.2 23 11.4 23 10C23 8.9 22.1 8 21 8M15 9L15.9 6.9L18 6L15.9 5.1L15 3L14.1 5.1L12 6L14.1 6.9L15 9M3.5 11L4 9L6 8.5L4 8L3.5 6L3 8L1 8.5L3 9L3.5 11Z"; -var mdiChartTree = "M14,6H22V22H14V6M2,4H22V2H2V4M2,8H12V6H2V8M9,22H12V10H9V22M2,22H7V10H2V22Z"; -var mdiChat = "M12,3C17.5,3 22,6.58 22,11C22,15.42 17.5,19 12,19C10.76,19 9.57,18.82 8.47,18.5C5.55,21 2,21 2,21C4.33,18.67 4.7,17.1 4.75,16.5C3.05,15.07 2,13.13 2,11C2,6.58 6.5,3 12,3Z"; -var mdiChatAlert = "M12,3C17.5,3 22,6.58 22,11C22,15.42 17.5,19 12,19C10.76,19 9.57,18.82 8.47,18.5C5.55,21 2,21 2,21C4.33,18.67 4.7,17.1 4.75,16.5C3.05,15.07 2,13.13 2,11C2,6.58 6.5,3 12,3M11,14V16H13V14H11M11,12H13V6H11V12Z"; -var mdiChatAlertOutline = "M12 3C6.5 3 2 6.58 2 11C2.05 13.15 3.06 15.17 4.75 16.5C4.75 17.1 4.33 18.67 2 21C4.37 20.89 6.64 20 8.47 18.5C9.61 18.83 10.81 19 12 19C17.5 19 22 15.42 22 11S17.5 3 12 3M12 17C7.58 17 4 14.31 4 11S7.58 5 12 5 20 7.69 20 11 16.42 17 12 17M11 13V15H13V13H11M11 11H13V7H11V11Z"; -var mdiChatMinus = "M23 17V19H15V17H23M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C20.95 12.25 20 12 19 12C15.69 12 13 14.69 13 18L13.08 18.95L12 19C10.76 19 9.57 18.82 8.47 18.5C5.55 21 2 21 2 21C4.33 18.67 4.7 17.1 4.75 16.5C3.05 15.07 2 13.14 2 11C2 6.58 6.5 3 12 3Z"; -var mdiChatMinusOutline = "M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C21.19 12.38 20.55 12.16 19.88 12.06C19.96 11.72 20 11.36 20 11C20 7.69 16.42 5 12 5S4 7.69 4 11 7.58 17 12 17L13.09 16.95L13 18L13.08 18.95L12 19C10.81 19 9.62 18.83 8.47 18.5C6.64 20 4.37 20.89 2 21C4.33 18.67 4.75 17.1 4.75 16.5C3.06 15.17 2.05 13.15 2 11C2 6.58 6.5 3 12 3M23 17V19H15V17H23Z"; -var mdiChatOutline = "M12,3C6.5,3 2,6.58 2,11C2.05,13.15 3.06,15.17 4.75,16.5C4.75,17.1 4.33,18.67 2,21C4.37,20.89 6.64,20 8.47,18.5C9.61,18.83 10.81,19 12,19C17.5,19 22,15.42 22,11C22,6.58 17.5,3 12,3M12,17C7.58,17 4,14.31 4,11C4,7.69 7.58,5 12,5C16.42,5 20,7.69 20,11C20,14.31 16.42,17 12,17Z"; -var mdiChatPlus = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C20.95 12.25 20 12 19 12C15.69 12 13 14.69 13 18L13.08 18.95L12 19C10.76 19 9.57 18.82 8.47 18.5C5.55 21 2 21 2 21C4.33 18.67 4.7 17.1 4.75 16.5C3.05 15.07 2 13.14 2 11C2 6.58 6.5 3 12 3Z"; -var mdiChatPlusOutline = "M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C21.19 12.38 20.55 12.16 19.88 12.06C19.96 11.72 20 11.36 20 11C20 7.69 16.42 5 12 5C7.58 5 4 7.69 4 11C4 14.31 7.58 17 12 17L13.09 16.95L13 18L13.08 18.95L12 19C10.81 19 9.62 18.83 8.47 18.5C6.64 20 4.37 20.89 2 21C4.33 18.67 4.75 17.1 4.75 16.5C3.06 15.17 2.05 13.15 2 11C2 6.58 6.5 3 12 3M18 14H20V17H23V19H20V22H18V19H15V17H18V14Z"; -var mdiChatProcessing = "M12,3C17.5,3 22,6.58 22,11C22,15.42 17.5,19 12,19C10.76,19 9.57,18.82 8.47,18.5C5.55,21 2,21 2,21C4.33,18.67 4.7,17.1 4.75,16.5C3.05,15.07 2,13.13 2,11C2,6.58 6.5,3 12,3M17,12V10H15V12H17M13,12V10H11V12H13M9,12V10H7V12H9Z"; -var mdiChatProcessingOutline = "M12 3C6.5 3 2 6.58 2 11C2.05 13.15 3.06 15.17 4.75 16.5C4.75 17.1 4.33 18.67 2 21C4.37 20.89 6.64 20 8.47 18.5C9.61 18.83 10.81 19 12 19C17.5 19 22 15.42 22 11S17.5 3 12 3M12 17C7.58 17 4 14.31 4 11S7.58 5 12 5 20 7.69 20 11 16.42 17 12 17M17 12V10H15V12H17M13 12V10H11V12H13M9 12V10H7V12H9Z"; -var mdiChatQuestion = "M12 3C6.5 3 2 6.6 2 11C2 13.1 3 15.1 4.8 16.5C4.8 17.1 4.4 18.7 2 21C2 21 5.5 21 8.5 18.5C9.6 18.8 10.8 19 12 19C17.5 19 22 15.4 22 11S17.5 3 12 3M13 15H11V13H13V15M14.8 10C14.5 10.4 14.1 10.6 13.7 10.8C13.4 11 13.3 11.1 13.2 11.3C13 11.5 13 11.7 13 12H11C11 11.5 11.1 11.2 11.3 10.9C11.5 10.7 11.9 10.4 12.4 10.1C12.7 10 12.9 9.8 13 9.6C13.1 9.4 13.2 9.1 13.2 8.9C13.2 8.6 13.1 8.4 12.9 8.2C12.7 8 12.4 7.9 12.1 7.9C11.8 7.9 11.6 8 11.4 8.1C11.2 8.2 11.1 8.4 11.1 8.7H9.1C9.2 8 9.5 7.4 10 7C10.5 6.6 11.2 6.5 12.1 6.5C13 6.5 13.8 6.7 14.3 7.1C14.8 7.5 15.1 8.1 15.1 8.8C15.2 9.2 15.1 9.6 14.8 10Z"; -var mdiChatQuestionOutline = "M12 3C6.5 3 2 6.6 2 11C2 13.2 3.1 15.2 4.8 16.5C4.8 17.1 4.4 18.7 2 21C4.4 20.9 6.6 20 8.5 18.5C9.6 18.8 10.8 19 12 19C17.5 19 22 15.4 22 11S17.5 3 12 3M12 17C7.6 17 4 14.3 4 11S7.6 5 12 5 20 7.7 20 11 16.4 17 12 17M12.2 6.5C11.3 6.5 10.6 6.7 10.1 7C9.5 7.4 9.2 8 9.3 8.7H11.3C11.3 8.4 11.4 8.2 11.6 8.1C11.8 8 12 7.9 12.3 7.9C12.6 7.9 12.9 8 13.1 8.2C13.3 8.4 13.4 8.6 13.4 8.9C13.4 9.2 13.3 9.4 13.2 9.6C13 9.8 12.8 10 12.6 10.1C12.1 10.4 11.7 10.7 11.5 10.9C11.1 11.2 11 11.5 11 12H13C13 11.7 13.1 11.5 13.1 11.3C13.2 11.1 13.4 11 13.6 10.8C14.1 10.6 14.4 10.3 14.7 9.9C15 9.5 15.1 9.1 15.1 8.7C15.1 8 14.8 7.4 14.3 7C13.9 6.7 13.1 6.5 12.2 6.5M11 13V15H13V13H11Z"; -var mdiChatRemove = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.54 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.54L15.46 20.12L17.59 18L15.47 15.88M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C20.95 12.25 20 12 19 12C15.69 12 13 14.69 13 18L13.08 18.95L12 19C10.76 19 9.57 18.82 8.47 18.5C5.55 21 2 21 2 21C4.33 18.67 4.7 17.1 4.75 16.5C3.05 15.07 2 13.14 2 11C2 6.58 6.5 3 12 3Z"; -var mdiChatRemoveOutline = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.54 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.54L15.46 20.12L17.59 18L15.47 15.88M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C21.19 12.38 20.55 12.16 19.88 12.06C19.96 11.72 20 11.36 20 11C20 7.69 16.42 5 12 5C7.58 5 4 7.69 4 11C4 14.31 7.58 17 12 17L13.09 16.95L13 18L13.08 18.95L12 19C10.81 19 9.62 18.83 8.47 18.5C6.64 20 4.37 20.89 2 21C4.33 18.67 4.75 17.1 4.75 16.5C3.06 15.17 2.05 13.15 2 11C2 6.58 6.5 3 12 3Z"; -var mdiChatSleep = "M12 3C6.5 3 2 6.58 2 11C2 13.13 3.05 15.07 4.75 16.5C4.7 17.1 4.33 18.67 2 21C2 21 5.55 21 8.47 18.5C9.57 18.82 10.76 19 12 19C17.5 19 22 15.42 22 11S17.5 3 12 3M15 9.3L11.76 13H15V15H9V12.7L12.24 9H9V7H15V9.3Z"; -var mdiChatSleepOutline = "M12 3C6.5 3 2 6.58 2 11C2.05 13.15 3.06 15.17 4.75 16.5C4.75 17.1 4.33 18.67 2 21C4.37 20.89 6.64 20 8.47 18.5C9.61 18.83 10.81 19 12 19C17.5 19 22 15.42 22 11S17.5 3 12 3M12 17C7.58 17 4 14.31 4 11S7.58 5 12 5 20 7.69 20 11 16.42 17 12 17M15 7H9V9H12.24L9 12.7V15H15V13H11.76L15 9.3V7Z"; -var mdiCheck = "M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"; -var mdiCheckAll = "M0.41,13.41L6,19L7.41,17.58L1.83,12M22.24,5.58L11.66,16.17L7.5,12L6.07,13.41L11.66,19L23.66,7M18,7L16.59,5.58L10.24,11.93L11.66,13.34L18,7Z"; -var mdiCheckBold = "M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z"; -var mdiCheckBoxMultipleOutline = "M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,16H8V4H20V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16M18.53,8.06L17.47,7L12.59,11.88L10.47,9.76L9.41,10.82L12.59,14L18.53,8.06Z"; -var mdiCheckBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,5V19H5V5H19M10,17L6,13L7.41,11.58L10,14.17L16.59,7.58L18,9"; -var mdiCheckCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z"; -var mdiCheckCircleOutline = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20M16.59 7.58L10 14.17L7.41 11.59L6 13L10 17L18 9L16.59 7.58Z"; -var mdiCheckDecagram = "M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9L10,17Z"; -var mdiCheckDecagramOutline = "M23 12L20.6 9.2L20.9 5.5L17.3 4.7L15.4 1.5L12 3L8.6 1.5L6.7 4.7L3.1 5.5L3.4 9.2L1 12L3.4 14.8L3.1 18.5L6.7 19.3L8.6 22.5L12 21L15.4 22.5L17.3 19.3L20.9 18.5L20.6 14.8L23 12M18.7 16.9L16 17.5L14.6 19.9L12 18.8L9.4 19.9L8 17.5L5.3 16.9L5.5 14.1L3.7 12L5.5 9.9L5.3 7.1L8 6.5L9.4 4.1L12 5.2L14.6 4.1L16 6.5L18.7 7.1L18.5 9.9L20.3 12L18.5 14.1L18.7 16.9M16.6 7.6L18 9L10 17L6 13L7.4 11.6L10 14.2L16.6 7.6Z"; -var mdiCheckNetwork = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M8.25,10.08L9.41,8.92L11,10.5L14.59,6.92L15.75,8.33L11,13.08L8.25,10.08Z"; -var mdiCheckNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M8,10.37L9.24,9.13L10.93,10.83L14.76,7L16,8.5L10.93,13.57L8,10.37Z"; -var mdiCheckOutline = "M19.78,2.2L24,6.42L8.44,22L0,13.55L4.22,9.33L8.44,13.55L19.78,2.2M19.78,5L8.44,16.36L4.22,12.19L2.81,13.55L8.44,19.17L21.19,6.42L19.78,5Z"; -var mdiCheckUnderline = "M21,5L9,17L3.5,11.5L4.91,10.09L9,14.17L19.59,3.59L21,5M3,21V19H21V21H3Z"; -var mdiCheckUnderlineCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,18H7V16H17V18M10.3,14L7,10.7L8.4,9.3L10.3,11.2L15.6,5.9L17,7.3L10.3,14Z"; -var mdiCheckUnderlineCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M7,15H17V17H7V15M10.3,11.2L8.4,9.3L7,10.7L10.3,14L17,7.3L15.6,5.9L10.3,11.2Z"; -var mdiCheckbook = "M5,14H19V15H5V14M21,17V8H3V17H21M1,5H23V19H1V5M5,10H12V12H5V10Z"; -var mdiCheckboxBlank = "M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiCheckboxBlankCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiCheckboxBlankCircleOutline = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiCheckboxBlankOff = "M20.84 22.73L19.1 21C19.06 21 19.03 21 19 21H5C3.9 21 3 20.11 3 19V5C3 4.97 3 4.94 3 4.9L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M21 5C21 3.89 20.1 3 19 3H6.2L21 17.8V5Z"; -var mdiCheckboxBlankOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L3 4.9V19C3 20.11 3.9 21 5 21H19.1L20.84 22.73L22.11 21.46M5 19V6.89L17.11 19H5M8.2 5L6.2 3H19C20.1 3 21 3.89 21 5V17.8L19 15.8V5H8.2Z"; -var mdiCheckboxBlankOutline = "M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z"; -var mdiCheckboxIntermediate = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M17,17H7V7H17V17Z"; -var mdiCheckboxMarked = "M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiCheckboxMarkedCircle = "M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiCheckboxMarkedCircleOutline = "M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2,4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"; -var mdiCheckboxMarkedOutline = "M19,19H5V5H15V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V11H19M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"; -var mdiCheckboxMultipleBlank = "M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z"; -var mdiCheckboxMultipleBlankCircle = "M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z"; -var mdiCheckboxMultipleBlankCircleOutline = "M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M14,4C17.32,4 20,6.69 20,10C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z"; -var mdiCheckboxMultipleBlankOutline = "M20,16V4H8V16H20M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z"; -var mdiCheckboxMultipleMarked = "M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16M13,14L20,7L18.59,5.59L13,11.17L9.91,8.09L8.5,9.5L13,14Z"; -var mdiCheckboxMultipleMarkedCircle = "M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82M18.09,6.08L19.5,7.5L13,14L9.21,10.21L10.63,8.79L13,11.17"; -var mdiCheckboxMultipleMarkedCircleOutline = "M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10H20C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4C14.43,4 14.86,4.05 15.27,4.14L16.88,2.54C15.96,2.18 15,2 14,2M20.59,3.58L14,10.17L11.62,7.79L10.21,9.21L14,13L22,5M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z"; -var mdiCheckboxMultipleMarkedOutline = "M20,16V10H22V16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H16V4H8V16H20M10.91,7.08L14,10.17L20.59,3.58L22,5L14,13L9.5,8.5L10.91,7.08M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z"; -var mdiCheckerboard = "M2 2V22H22V2H2M20 12H16V16H20V20H16V16H12V20H8V16H4V12H8V8H4V4H8V8H12V4H16V8H20V12M16 8V12H12V8H16M12 12V16H8V12H12Z"; -var mdiCheckerboardMinus = "M14 17V19H22V17M8 16H12V12H8V16M12 12H16V8H12V12M2 2V22H13.5C13 21.4 12.6 20.7 12.3 20H8V16H4V12H8V8H4V4H8V8H12V4H16V8H20V12.4C20.7 12.7 21.4 13.1 22 13.6V2H2Z"; -var mdiCheckerboardPlus = "M19 17H22V19H19V22H17V19H14V17H17V14H19V17M8 16H12V12H8V16M12 12H16V8H12V12M2 2V22H13.54C13 21.42 12.63 20.74 12.36 20H8V16H4V12H8V8H4V4H8V8H12V4H16V8H20V12.36C20.74 12.63 21.42 13 22 13.54V2H2Z"; -var mdiCheckerboardRemove = "M8 16H12V12H8V16M12 12H16V8H12V12M2 2V22H13.5C13 21.4 12.6 20.7 12.3 20H8V16H4V12H8V8H4V4H8V8H12V4H16V8H20V12.4C20.7 12.7 21.4 13.1 22 13.6V2H2M20.1 14.5L18 16.6L15.9 14.5L14.5 15.9L16.6 18L14.5 20.1L15.9 21.5L18 19.4L20.1 21.5L21.5 20.1L19.4 18L21.5 15.9L20.1 14.5Z"; -var mdiCheese = "M11 17.5C11 16.67 11.67 16 12.5 16C12.79 16 13.06 16.09 13.29 16.23L20.75 11.93C20.35 11.22 19.9 10.55 19.41 9.9C19.29 9.96 19.15 10 19 10C18.45 10 18 9.55 18 9C18 8.8 18.08 8.62 18.18 8.46C16.45 6.64 14.34 5.2 12 4.25C11.85 5.24 11 6 10 6C8.9 6 8 5.11 8 4C8 3.72 8.06 3.45 8.16 3.21C7.3 3.08 6.41 3 5.5 3C5.33 3 5.17 3 5 3.03V9.05C6.14 9.28 7 10.29 7 11.5S6.14 13.72 5 13.95V21L11 17.54C11 17.53 11 17.5 11 17.5M14 9C15.11 9 16 9.9 16 11S15.11 13 14 13 12 12.11 12 11 12.9 9 14 9M9 16C8.45 16 8 15.55 8 15S8.45 14 9 14 10 14.45 10 15 9.55 16 9 16M9 10C8.45 10 8 9.55 8 9S8.45 8 9 8 10 8.45 10 9 9.55 10 9 10Z"; -var mdiCheeseOff = "M3.5 1.7L2.2 3L6.1 6.9V9C7.2 9.2 8.1 10.2 8.1 11.5S7.2 13.7 6.1 14V21L12.1 17.5C12.1 16.7 12.8 16 13.6 16C13.9 16 14.2 16.1 14.4 16.2L15.1 15.8L20.3 21L21.6 19.7L3.5 1.7M10.1 16C9.6 16 9.1 15.5 9.1 15S9.6 14 10.1 14 11.1 14.5 11.1 15 10.6 16 10.1 16M13.8 9.5L9.9 5.6C10.2 5.9 10.6 6 11.1 6C12.1 6 12.9 5.2 13.1 4.2C15.4 5.2 17.6 6.6 19.3 8.4C19.2 8.6 19.1 8.7 19.1 8.9C19.1 9.4 19.6 9.9 20.1 9.9C20.3 9.9 20.4 9.9 20.5 9.8C21 10.4 21.4 11.1 21.8 11.8L18.3 13.8L16.6 12.1C16.9 11.8 17.1 11.3 17.1 10.8C17.1 9.7 16.2 8.8 15.1 8.8C14.6 9 14.1 9.2 13.8 9.5M9.5 5.2L7.3 3C8 3 8.6 3.1 9.2 3.2C9.1 3.5 9.1 3.7 9.1 4C9.1 4.4 9.2 4.9 9.5 5.2Z"; -var mdiChefHat = "M12.5,1.5C10.73,1.5 9.17,2.67 8.67,4.37C8.14,4.13 7.58,4 7,4A4,4 0 0,0 3,8C3,9.82 4.24,11.41 6,11.87V19H19V11.87C20.76,11.41 22,9.82 22,8A4,4 0 0,0 18,4C17.42,4 16.86,4.13 16.33,4.37C15.83,2.67 14.27,1.5 12.5,1.5M12,10.5H13V17.5H12V10.5M9,12.5H10V17.5H9V12.5M15,12.5H16V17.5H15V12.5M6,20V21A1,1 0 0,0 7,22H18A1,1 0 0,0 19,21V20H6Z"; -var mdiChemicalWeapon = "M11,7.83C9.83,7.42 9,6.3 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6.31 14.16,7.42 13,7.83V10.64C12.68,10.55 12.35,10.5 12,10.5C11.65,10.5 11.32,10.55 11,10.64V7.83M18.3,21.1C17.16,20.45 16.62,19.18 16.84,17.96L14.4,16.55C14.88,16.09 15.24,15.5 15.4,14.82L17.84,16.23C18.78,15.42 20.16,15.26 21.29,15.91C22.73,16.74 23.22,18.57 22.39,20C21.56,21.44 19.73,21.93 18.3,21.1M2.7,15.9C3.83,15.25 5.21,15.42 6.15,16.22L8.6,14.81C8.76,15.5 9.11,16.08 9.6,16.54L7.15,17.95C7.38,19.17 6.83,20.45 5.7,21.1C4.26,21.93 2.43,21.44 1.6,20C0.77,18.57 1.26,16.73 2.7,15.9M14,14A2,2 0 0,1 12,16C10.89,16 10,15.1 10,14A2,2 0 0,1 12,12C13.11,12 14,12.9 14,14M17,14L16.97,14.57L15.5,13.71C15.4,12.64 14.83,11.71 14,11.12V9.41C15.77,10.19 17,11.95 17,14M14.97,18.03C14.14,18.64 13.11,19 12,19C10.89,19 9.86,18.64 9.03,18L10.5,17.17C10.96,17.38 11.47,17.5 12,17.5C12.53,17.5 13.03,17.38 13.5,17.17L14.97,18.03M7.03,14.56L7,14C7,11.95 8.23,10.19 10,9.42V11.13C9.17,11.71 8.6,12.64 8.5,13.7L7.03,14.56Z"; -var mdiChessBishop = "M19,22H5V20H19V22M17.16,8.26C18.22,9.63 18.86,11.28 19,13C19,15.76 15.87,18 12,18C8.13,18 5,15.76 5,13C5,10.62 7.33,6.39 10.46,5.27C10.16,4.91 10,4.46 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.46 13.84,4.91 13.54,5.27C14.4,5.6 15.18,6.1 15.84,6.74L11.29,11.29L12.71,12.71L17.16,8.26Z"; -var mdiChessKing = "M19,22H5V20H19V22M17,10C15.58,10 14.26,10.77 13.55,12H13V7H16V5H13V2H11V5H8V7H11V12H10.45C9.35,10.09 6.9,9.43 5,10.54C3.07,11.64 2.42,14.09 3.5,16C4.24,17.24 5.57,18 7,18H17A4,4 0 0,0 21,14A4,4 0 0,0 17,10Z"; -var mdiChessKnight = "M19,22H5V20H19V22M13,2V2C11.75,2 10.58,2.62 9.89,3.66L7,8L9,10L11.06,8.63C11.5,8.32 12.14,8.44 12.45,8.9C12.47,8.93 12.5,8.96 12.5,9V9C12.8,9.59 12.69,10.3 12.22,10.77L7.42,15.57C6.87,16.13 6.87,17.03 7.43,17.58C7.69,17.84 8.05,18 8.42,18H17V6A4,4 0 0,0 13,2Z"; -var mdiChessPawn = "M19 22H5V20H19V22M16 18H8L10.18 10H8V8H10.72L10.79 7.74C10.1 7.44 9.55 6.89 9.25 6.2C8.58 4.68 9.27 2.91 10.79 2.25C12.31 1.58 14.08 2.27 14.74 3.79C15.41 5.31 14.72 7.07 13.2 7.74L13.27 8H16V10H13.82L16 18Z"; -var mdiChessQueen = "M18,3A2,2 0 0,1 20,5C20,5.81 19.5,6.5 18.83,6.82L17,13.15V18H7V13.15L5.17,6.82C4.5,6.5 4,5.81 4,5A2,2 0 0,1 6,3A2,2 0 0,1 8,5C8,5.5 7.82,5.95 7.5,6.3L10.3,9.35L10.83,5.62C10.33,5.26 10,4.67 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.67 13.67,5.26 13.17,5.62L13.7,9.35L16.47,6.29C16.18,5.94 16,5.5 16,5A2,2 0 0,1 18,3M5,20H19V22H5V20Z"; -var mdiChessRook = "M5,20H19V22H5V20M17,2V5H15V2H13V5H11V2H9V5H7V2H5V8H7V18H17V8H19V2H17Z"; -var mdiChevronDoubleDown = "M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z"; -var mdiChevronDoubleLeft = "M18.41,7.41L17,6L11,12L17,18L18.41,16.59L13.83,12L18.41,7.41M12.41,7.41L11,6L5,12L11,18L12.41,16.59L7.83,12L12.41,7.41Z"; -var mdiChevronDoubleRight = "M5.59,7.41L7,6L13,12L7,18L5.59,16.59L10.17,12L5.59,7.41M11.59,7.41L13,6L19,12L13,18L11.59,16.59L16.17,12L11.59,7.41Z"; -var mdiChevronDoubleUp = "M7.41,18.41L6,17L12,11L18,17L16.59,18.41L12,13.83L7.41,18.41M7.41,12.41L6,11L12,5L18,11L16.59,12.41L12,7.83L7.41,12.41Z"; -var mdiChevronDown = "M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"; -var mdiChevronDownBox = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M12,15.71L6,9.71L7.41,8.29L12,12.88L16.59,8.29L18,9.71L12,15.71Z"; -var mdiChevronDownBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M7.41,8.29L12,12.88L16.59,8.29L18,9.71L12,15.71L6,9.71L7.41,8.29Z"; -var mdiChevronDownCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M6,10L12,16L18,10L16.6,8.6L12,13.2L7.4,8.6L6,10Z"; -var mdiChevronDownCircleOutline = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M6,10L12,16L18,10L16.6,8.6L12,13.2L7.4,8.6L6,10Z"; -var mdiChevronLeft = "M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z"; -var mdiChevronLeftBox = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M15.71,16.59L14.29,18L8.29,12L14.29,6L15.71,7.41L11.12,12L15.71,16.59Z"; -var mdiChevronLeftBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M15.71,7.41L11.12,12L15.71,16.59L14.29,18L8.29,12L14.29,6L15.71,7.41Z"; -var mdiChevronLeftCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.4,16.6L10.8,12L15.4,7.4L14,6L8,12L14,18L15.4,16.6Z"; -var mdiChevronLeftCircleOutline = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M15.4,16.6L10.8,12L15.4,7.4L14,6L8,12L14,18L15.4,16.6Z"; -var mdiChevronRight = "M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"; -var mdiChevronRightBox = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M9.71,18L8.29,16.59L12.88,12L8.29,7.41L9.71,6L15.71,12L9.71,18Z"; -var mdiChevronRightBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M8.29,16.59L12.88,12L8.29,7.41L9.71,6L15.71,12L9.71,18L8.29,16.59Z"; -var mdiChevronRightCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10,18L16,12L10,6L8.6,7.4L13.2,12L8.6,16.6L10,18Z"; -var mdiChevronRightCircleOutline = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M8.6,16.6L13.2,12L8.6,7.4L10,6L16,12L10,18L8.6,16.6Z"; -var mdiChevronTripleDown = "M7.41,14.58L12,19.17L16.59,14.58L18,16L12,22L6,16L7.41,14.58M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58M7.41,2.58L12,7.17L16.59,2.58L18,4L12,10L6,4L7.41,2.58Z"; -var mdiChevronTripleLeft = "M9.42,7.41L4.83,12L9.42,16.59L8,18L2,12L8,6L9.42,7.41M15.42,7.41L10.83,12L15.42,16.59L14,18L8,12L14,6L15.42,7.41M21.42,7.41L16.83,12L21.42,16.59L20,18L14,12L20,6L21.42,7.41Z"; -var mdiChevronTripleRight = "M14.58,16.59L19.17,12L14.58,7.41L16,6L22,12L16,18L14.58,16.59M8.58,16.59L13.17,12L8.58,7.41L10,6L16,12L10,18L8.58,16.59M2.58,16.59L7.17,12L2.58,7.41L4,6L10,12L4,18L2.58,16.59Z"; -var mdiChevronTripleUp = "M16.59,9.42L12,4.83L7.41,9.42L6,8L12,2L18,8L16.59,9.42M16.59,15.42L12,10.83L7.41,15.42L6,14L12,8L18,14L16.59,15.42M16.59,21.42L12,16.83L7.41,21.42L6,20L12,14L18,20L16.59,21.42Z"; -var mdiChevronUp = "M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z"; -var mdiChevronUpBox = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M16.59,15.71L12,11.12L7.41,15.71L6,14.29L12,8.29L18,14.29L16.59,15.71Z"; -var mdiChevronUpBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M16.59,15.71L12,11.12L7.41,15.71L6,14.29L12,8.29L18,14.29L16.59,15.71Z"; -var mdiChevronUpCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7.4,15.4L12,10.8L16.6,15.4L18,14L12,8L6,14L7.4,15.4Z"; -var mdiChevronUpCircleOutline = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M7.4,15.4L12,10.8L16.6,15.4L18,14L12,8L6,14L7.4,15.4Z"; -var mdiChiliHot = "M17.75,9L18.95,8.24C19.58,8.58 20,9.24 20,10V21.75C20,21.75 12,20 12,11V10C12,9.27 12.39,8.63 12.97,8.28L14.43,9L16,8L17.75,9M14,2C15.53,2 16.8,3.15 17,4.64C18,4.93 18.81,5.67 19.22,6.63L17.75,7.5L16,6.5L14.43,7.5L12.76,6.67C13.15,5.72 13.95,5 14.94,4.66C14.8,4.28 14.43,4 14,4V2M10,10C10,18 13.63,19.84 16,21.75C16,21.75 8,20 8,11V10C8,9.27 8.39,8.63 8.97,8.28L10.3,8.94C10.11,9.25 10,9.61 10,10M10.43,7.5L8.76,6.67C9.15,5.72 9.95,5 10.94,4.66C10.8,4.28 10.43,4 10,4V2C10.77,2 11.47,2.29 12,2.76V4C12.43,4 12.8,4.28 12.94,4.66C11.95,5 11.15,5.72 10.43,7.5M6,10C6,18 9.63,19.84 12,21.75C12,21.75 4,20 4,11V10C4,9.27 4.39,8.63 4.97,8.28L6.3,8.94C6.11,9.25 6,9.61 6,10M6.43,7.5L4.76,6.67C5.15,5.72 5.95,5 6.94,4.66C6.8,4.28 6.43,4 6,4V2C6.77,2 7.47,2.29 8,2.76V4C8.43,4 8.8,4.28 8.94,4.66C7.95,5 7.15,5.72 6.43,7.5Z"; -var mdiChiliMedium = "M15.75,9L16.95,8.24C17.58,8.58 18,9.24 18,10V21.75C18,21.75 10,20 10,11V10C10,9.27 10.39,8.63 10.97,8.28L12.43,9L14,8L15.75,9M12,2C13.53,2 14.8,3.15 15,4.64C16,4.93 16.81,5.67 17.22,6.63L15.75,7.5L14,6.5L12.43,7.5L10.76,6.67C11.15,5.72 11.95,5 12.94,4.66C12.8,4.28 12.43,4 12,4V2M8,10C8,18 11.63,19.84 14,21.75C14,21.75 6,20 6,11V10C6,9.27 6.39,8.63 6.97,8.28L8.3,8.94C8.11,9.25 8,9.61 8,10M8.43,7.5L6.76,6.67C7.15,5.72 7.95,5 8.94,4.66C8.8,4.28 8.43,4 8,4V2C8.77,2 9.47,2.29 10,2.76V4C10.43,4 10.8,4.28 10.94,4.66C9.95,5 9.15,5.72 8.43,7.5Z"; -var mdiChiliMild = "M13.75,9L14.95,8.24C15.58,8.58 16,9.24 16,10V21.75C16,21.75 8,20 8,11V10C8,9.27 8.39,8.63 8.97,8.28L10.43,9L12,8L13.75,9M10,2C11.53,2 12.8,3.15 13,4.64C14,4.93 14.81,5.67 15.22,6.63L13.75,7.5L12,6.5L10.43,7.5L8.76,6.67C9.15,5.72 9.95,5 10.94,4.66C10.8,4.28 10.43,4 10,4V2Z"; -var mdiChiliOff = "M20.8 22.7L16 17.9V21.8C16 21.8 8 20 8 11V10 9.9L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M13.8 9L12 8L11.5 8.3L16 12.8V10C16 9.2 15.6 8.6 15 8.2L13.8 9M12 6.5L13.8 7.5L15.3 6.6C14.9 5.6 14.1 4.9 13.1 4.6C12.8 3.2 11.5 2 10 2V4C10.4 4 10.8 4.3 10.9 4.7C10.2 4.9 9.6 5.4 9.2 6L10.6 7.4L12 6.5Z"; -var mdiChip = "M6,4H18V5H21V7H18V9H21V11H18V13H21V15H18V17H21V19H18V20H6V19H3V17H6V15H3V13H6V11H3V9H6V7H3V5H6V4M11,15V18H12V15H11M13,15V18H14V15H13M15,15V18H16V15H15Z"; -var mdiChristianity = "M10.5,2H13.5V8H19V11H13.5V22H10.5V11H5V8H10.5V2Z"; -var mdiChristianityOutline = "M15.5,6V1H8.5V6H3V13H8.5V23H15.5V13H21V6H15.5M19,11H13.5V21H10.5V11H5V8H10.5V3H13.5V8H19V11Z"; -var mdiChurch = "M11,2H13V4H15V6H13V9.4L22,13V15L20,14.2V22H14V17A2,2 0 0,0 12,15A2,2 0 0,0 10,17V22H4V14.2L2,15V13L11,9.4V6H9V4H11V2M6,20H8V15L7,14L6,15V20M16,20H18V15L17,14L16,15V20Z"; -var mdiCigar = "M16 10.2H14.5A2 2 0 0 1 12.65 8.2A1.78 1.78 0 0 1 14.5 6.45V5A3.35 3.35 0 1 0 14.5 11.7H16A1.93 1.93 0 0 1 18 13.7V15H19.5V13.36A3.31 3.31 0 0 0 16 10.2M18.82 7.73A3.34 3.34 0 0 0 16.5 2V3.5A1.85 1.85 0 1 1 16.5 7.2V8.7A4 4 0 0 1 20.5 12.77V15H22V12.76A5.55 5.55 0 0 0 18.85 7.73M18 16V22H19.5V16M20.5 16V22H22V16M12 16V17.27A2 2 0 0 1 12 20.73V22H17V16M2.88 16.88A3 3 0 0 0 5 22H10V20.73A2 2 0 0 1 10 17.27V16H5A3 3 0 0 0 2.88 16.88M12 19A1 1 0 1 1 11 18A1 1 0 0 1 12 19Z"; -var mdiCigarOff = "M20.84 22.73L18.11 20H18V19.89L17 18.89V20H12V18.73C12.3 18.56 12.55 18.31 12.73 18C13.28 17.05 12.96 15.83 12 15.27V14H12.11L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M14.5 9.7H16C17.07 9.66 17.96 10.5 18 11.56C18 11.61 18 11.65 18 11.7V13H19.5V11.36C19.42 9.53 17.88 8.12 16.05 8.2L16 8.2H14.5C13.45 8.12 12.65 7.25 12.65 6.2C12.67 5.22 13.5 4.43 14.46 4.45L14.5 4.45V3C12.65 3 11.15 4.5 11.15 6.35S12.65 9.7 14.5 9.7M20.5 10.7L20.5 10.77V13H22V10.76C22 8.62 20.78 6.66 18.85 5.73H18.82C19.58 5 19.9 4 19.8 3H18.32C18.34 3.11 18.35 3.23 18.35 3.35C18.35 4.37 17.5 5.2 16.5 5.2H16.5V6.7C18.71 6.7 20.5 8.5 20.5 10.7M9.27 16C9.45 15.7 9.7 15.45 10 15.27V14H5C4.21 14 3.44 14.32 2.88 14.88C1.71 16.05 1.71 17.95 2.88 19.12C3.45 19.68 4.21 20 5 20H10V18.73C9.05 18.18 8.72 16.95 9.27 16M18 14.8L19.5 16.3V14H18V14.8M20.5 17.3L22 18.8V14H20.5V17.3M11 16C10.45 16 10 16.45 10 17S10.45 18 11 18 12 17.55 12 17 11.55 16 11 16Z"; -var mdiCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiCircleBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 16C9.79 16 8 14.21 8 12S9.79 8 12 8 16 9.79 16 12 14.21 16 12 16Z"; -var mdiCircleBoxOutline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 8C9.79 8 8 9.79 8 12S9.79 16 12 16 16 14.21 16 12 14.21 8 12 8Z"; -var mdiCircleDouble = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8Z"; -var mdiCircleEditOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12H20A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4V2M18.78,3C18.61,3 18.43,3.07 18.3,3.2L17.08,4.41L19.58,6.91L20.8,5.7C21.06,5.44 21.06,5 20.8,4.75L19.25,3.2C19.12,3.07 18.95,3 18.78,3M16.37,5.12L9,12.5V15H11.5L18.87,7.62L16.37,5.12Z"; -var mdiCircleExpand = "M16,4L20,8V4M20,16L16,20H20M8,20L4,16V20M4,8L8,4H4M16.95,7.05C14.22,4.32 9.78,4.32 7.05,7.05C4.32,9.78 4.32,14.22 7.05,16.95C9.78,19.68 14.22,19.68 16.95,16.95C19.68,14.22 19.68,9.79 16.95,7.05M15.85,15.85C13.72,18 10.28,18 8.15,15.85C6,13.72 6,10.28 8.15,8.15C10.28,6 13.72,6 15.85,8.15C18,10.28 18,13.72 15.85,15.85Z"; -var mdiCircleHalf = "M12 2A10 10 0 0 0 2 12A10 10 0 0 0 12 22V2Z"; -var mdiCircleHalfFull = "M12 2A10 10 0 0 0 2 12A10 10 0 0 0 12 22A10 10 0 0 0 22 12A10 10 0 0 0 12 2M12 4A8 8 0 0 1 20 12A8 8 0 0 1 12 20V4Z"; -var mdiCircleMedium = "M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8Z"; -var mdiCircleMultiple = "M15 4A8 8 0 1 1 7 12A8 8 0 0 1 15 4M3 12A6 6 0 0 0 7 17.65V19.74A8 8 0 0 1 7 4.26V6.35A6 6 0 0 0 3 12Z"; -var mdiCircleMultipleOutline = "M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18M3,12C3,14.61 4.67,16.83 7,17.65V19.74C3.55,18.85 1,15.73 1,12C1,8.27 3.55,5.15 7,4.26V6.35C4.67,7.17 3,9.39 3,12Z"; -var mdiCircleOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L4.06 5.95C2.78 7.63 2 9.72 2 12C2 17.5 6.5 22 12 22C14.28 22 16.37 21.23 18.05 19.94L20.84 22.73L22.11 21.46M12 20C7.58 20 4 16.42 4 12C4 10.27 4.56 8.68 5.5 7.38L16.62 18.5C15.32 19.45 13.73 20 12 20M8.17 4.97L6.72 3.5C8.25 2.56 10.06 2 12 2C17.5 2 22 6.5 22 12C22 13.94 21.44 15.75 20.5 17.28L19.03 15.83C19.65 14.69 20 13.39 20 12C20 7.58 16.42 4 12 4C10.61 4 9.31 4.35 8.17 4.97Z"; -var mdiCircleOutline = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiCircleSlice1 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C13.93 5 15.68 5.78 16.95 7.05L12 12V5Z"; -var mdiCircleSlice2 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12H12V5Z"; -var mdiCircleSlice3 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 13.93 18.22 15.68 16.95 16.95L12 12V5Z"; -var mdiCircleSlice4 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19V5Z"; -var mdiCircleSlice5 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19C10.07 19 8.32 18.22 7.05 16.95L12 12V5Z"; -var mdiCircleSlice6 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12H12V5Z"; -var mdiCircleSlice7 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12C5 10.07 5.78 8.32 7.05 7.05L12 12V5Z"; -var mdiCircleSlice8 = "M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4Z"; -var mdiCircleSmall = "M12,10A2,2 0 0,0 10,12C10,13.11 10.9,14 12,14C13.11,14 14,13.11 14,12A2,2 0 0,0 12,10Z"; -var mdiCircularSaw = "M13,11A1,1 0 0,1 14,12A1,1 0 0,1 13,13A1,1 0 0,1 12,12A1,1 0 0,1 13,11M7.86,6.25C9.14,4.87 10.97,4 13,4C16.5,4 19.44,6.61 19.93,10H22V12H16A3,3 0 0,0 13,9A3,3 0 0,0 10,12H2V10H2.05C2.25,7.73 3.14,5.66 4.5,4L7.86,6.25M6.73,7.89L5.06,6.77C4.53,7.75 4.18,8.84 4.06,10H6.07C6.18,9.25 6.4,8.54 6.73,7.89M7.4,15.4L6,14H11.79C12.03,14.42 12.5,14.7 13,14.7C13.5,14.7 13.97,14.42 14.21,14H20V15.4C18.39,14.42 18.46,15.75 18.46,15.75V17.71L16.5,19.67C16,17.92 15.1,18.9 15.1,18.9L13.7,20.3H10.9C11.88,18.69 10.55,18.76 10.55,18.76H8.59L6.63,16.8C8.38,16.31 7.4,15.4 7.4,15.4Z"; -var mdiCity = "M19,15H17V13H19M19,19H17V17H19M13,7H11V5H13M13,11H11V9H13M13,15H11V13H13M13,19H11V17H13M7,11H5V9H7M7,15H5V13H7M7,19H5V17H7M15,11V5L12,2L9,5V7H3V21H21V11H15Z"; -var mdiCityVariant = "M19,9V7A2,2 0 0,0 17,5H16V2H14V5H13A2,2 0 0,0 11,7V9A2,2 0 0,0 9,11V12H5A2,2 0 0,0 3,14V22H6V20H8V22H12V20H14V22H16V20H18V22H21V11A2,2 0 0,0 19,9M8,18H6V16H8V18M14,18H12V16H14V18M14,14H12V12H14V14M13,9V7H17V9H13M18,18H16V16H18V18M18,14H16V12H18V14Z"; -var mdiCityVariantOutline = "M15,23H13V21H15V23M19,21H17V23H19V21M15,17H13V19H15V17M7,21H5V23H7V21M7,17H5V19H7V17M19,17H17V19H19V17M15,13H13V15H15V13M19,13H17V15H19V13M21,9A2,2 0 0,1 23,11V23H21V11H11V23H9V15H3V23H1V15A2,2 0 0,1 3,13H9V11A2,2 0 0,1 11,9V7A2,2 0 0,1 13,5H15V1H17V5H19A2,2 0 0,1 21,7V9M19,9V7H13V9H19Z"; -var mdiClipboard = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3"; -var mdiClipboardAccount = "M18,19H6V17.6C6,15.6 10,14.5 12,14.5C14,14.5 18,15.6 18,17.6M12,7A3,3 0 0,1 15,10A3,3 0 0,1 12,13A3,3 0 0,1 9,10A3,3 0 0,1 12,7M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiClipboardAccountOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M12,9A2,2 0 0,1 14,11A2,2 0 0,1 12,13A2,2 0 0,1 10,11A2,2 0 0,1 12,9M8,17V16C8,14.9 9.79,14 12,14C14.21,14 16,14.9 16,16V17H8Z"; -var mdiClipboardAlert = "M12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5M13,14H11V8H13M13,18H11V16H13M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiClipboardAlertOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M11,9H13V13.5H11V9M11,15H13V17H11V15Z"; -var mdiClipboardArrowDown = "M12,18L7,13H10V9H14V13H17M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiClipboardArrowDownOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M12,18L7,13H10V9H14V13H17L12,18Z"; -var mdiClipboardArrowLeft = "M16,15H12V18L7,13L12,8V11H16M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiClipboardArrowLeftOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M7,13L12,18V15H16V11H12V8L7,13Z"; -var mdiClipboardArrowRight = "M17,13L12,18V15H8V11H12V8M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiClipboardArrowRightOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M16.91,13L11.91,18V15H7.91V11H11.91V8L16.91,13Z"; -var mdiClipboardArrowUp = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,8L7,13H10V17H14V13H17L12,8M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3Z"; -var mdiClipboardArrowUpOutline = "M12,8L17,13H14V17H10V13H7L12,8M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7Z"; -var mdiClipboardCheck = "M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiClipboardCheckMultiple = "M4 7H2V21C2 22.1 2.9 23 4 23H18V21H4M20 3H16.8C16.4 1.8 15.3 1 14 1C12.7 1 11.6 1.8 11.2 3H8C6.9 3 6 3.9 6 5V17C6 18.1 6.9 19 8 19H20C21.1 19 22 18.1 22 17V5C22 3.9 21.1 3 20 3M14 3C14.6 3 15 3.5 15 4C15 4.5 14.5 5 14 5C13.5 5 13 4.5 13 4C13 3.5 13.4 3 14 3M12.3 15.1L9 11.8L10.4 10.4L12.3 12.3L17.6 7L19 8.4"; -var mdiClipboardCheckMultipleOutline = "M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M12.8 15.35L9.5 12.05L10.9 10.65L12.8 12.55L17.1 8.25L18.5 9.65L12.8 15.35M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.18C11.6 1.84 12.7 1 14 1C15.3 1 16.4 1.84 16.82 3H20M14 3C13.45 3 13 3.45 13 4C13 4.55 13.45 5 14 5C14.55 5 15 4.55 15 4C15 3.45 14.55 3 14 3M10 7V5H8V17H20V5H18V7H10Z"; -var mdiClipboardCheckOutline = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7M7.5,13.5L9,12L11,14L15.5,9.5L17,11L11,17L7.5,13.5Z"; -var mdiClipboardClock = "M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25M23 16C23 19.87 19.87 23 16 23C14.09 23 12.37 22.24 11.11 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1S14.4 1.84 14.82 3H19C20.11 3 21 3.9 21 5V11.11C22.24 12.37 23 14.09 23 16M11 4C11 4.55 11.45 5 12 5S13 4.55 13 4 12.55 3 12 3 11 3.45 11 4M21 16C21 13.24 18.76 11 16 11S11 13.24 11 16 13.24 21 16 21 21 18.76 21 16Z"; -var mdiClipboardClockOutline = "M21 11.11V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H11.11C12.37 22.24 14.09 23 16 23C19.87 23 23 19.87 23 16C23 14.09 22.24 12.37 21 11.11M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M5 19V5H7V7H17V5H19V9.68C18.09 9.25 17.08 9 16 9C12.13 9 9 12.13 9 16C9 17.08 9.25 18.09 9.68 19H5M16 21C13.24 21 11 18.76 11 16S13.24 11 16 11 21 13.24 21 16 18.76 21 16 21M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25Z"; -var mdiClipboardEdit = "M21.04 12.13C21.18 12.13 21.31 12.19 21.42 12.3L22.7 13.58C22.92 13.79 22.92 14.14 22.7 14.35L21.7 15.35L19.65 13.3L20.65 12.3C20.76 12.19 20.9 12.13 21.04 12.13M19.07 13.88L21.12 15.93L15.06 22H13V19.94L19.07 13.88M19 3C20.1 3 21 3.9 21 5V9L11 19V21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3Z"; -var mdiClipboardEditOutline = "M21.04 12.13C21.18 12.13 21.31 12.19 21.42 12.3L22.7 13.58C22.92 13.79 22.92 14.14 22.7 14.35L21.7 15.35L19.65 13.3L20.65 12.3C20.76 12.19 20.9 12.13 21.04 12.13M19.07 13.88L21.12 15.93L15.06 22H13V19.94L19.07 13.88M11 19L9 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19C20.1 3 21 3.9 21 5V9L19 11V5H17V7H7V5H5V19H11M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3Z"; -var mdiClipboardFile = "M19 3C20.1 3 21 3.9 21 5V9.17L19.83 8H15C12.79 8 11 9.79 11 12V21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3M15 23C13.9 23 13 22.11 13 21V12C13 10.9 13.9 10 15 10H19L23 14V21C23 22.11 22.11 23 21 23H15M21 14.83L18.17 12H18V15H21V14.83Z"; -var mdiClipboardFileOutline = "M15 23C13.9 23 13 22.11 13 21V12C13 10.9 13.9 10 15 10H19L23 14V21C23 22.11 22.11 23 21 23H15M15 21H21V14.83L18.17 12H15V21M19 3C20.1 3 21 3.9 21 5V9.17L19.83 8H19V5H17V7H7V5H5V19H11V21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3Z"; -var mdiClipboardFlow = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M15,19L11,15H14V8H16V15H19L15,19M10,16H8V9H5L9,5L13,9H10V16"; -var mdiClipboardFlowOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M7 7H17V5H19V19H5V5H7V7M10 16H8V11H6L9 8L12 11H10V16M14 10H16V15H18L15 18L12 15H14V10Z"; -var mdiClipboardList = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7 8H9V12H8V9H7V8M10 17V18H7V17.08L9 15H7V14H9.25C9.66 14 10 14.34 10 14.75C10 14.95 9.92 15.14 9.79 15.27L8.12 17H10M11 4C11 3.45 11.45 3 12 3S13 3.45 13 4 12.55 5 12 5 11 4.55 11 4M17 17H12V15H17V17M17 11H12V9H17V11Z"; -var mdiClipboardListOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M7 7H17V5H19V19H5V5H7V7M12 17V15H17V17H12M12 11V9H17V11H12M8 12V9H7V8H9V12H8M9.25 14C9.66 14 10 14.34 10 14.75C10 14.95 9.92 15.14 9.79 15.27L8.12 17H10V18H7V17.08L9 15H7V14H9.25"; -var mdiClipboardMinus = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M16 14H8V12H16V14Z"; -var mdiClipboardMinusOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M19 19H5V5H7V7H17V5H19V19M8 12H16V14H8V12Z"; -var mdiClipboardMultiple = "M4 7H2V21C2 22.1 2.9 23 4 23H18V21H4M20 3H16.8C16.4 1.8 15.3 1 14 1C12.7 1 11.6 1.8 11.2 3H8C6.9 3 6 3.9 6 5V17C6 18.1 6.9 19 8 19H20C21.1 19 22 18.1 22 17V5C22 3.9 21.1 3 20 3M14 3C14.6 3 15 3.5 15 4C15 4.5 14.5 5 14 5C13.5 5 13 4.5 13 4C13 3.5 13.4 3 14 3Z"; -var mdiClipboardMultipleOutline = "M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.18C11.6 1.84 12.7 1 14 1C15.3 1 16.4 1.84 16.82 3H20M14 3C13.45 3 13 3.45 13 4C13 4.55 13.45 5 14 5C14.55 5 15 4.55 15 4C15 3.45 14.55 3 14 3M10 7V5H8V17H20V5H18V7H10Z"; -var mdiClipboardOff = "M21 5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H6.2L21 17.8V5M12 5C11.45 5 11 4.55 11 4S11.45 3 12 3 13 3.45 13 4 12.55 5 12 5M22.11 21.46L20.84 22.73L19.1 21C19.07 21 19.03 21 19 21H5C3.9 21 3 20.11 3 19V5C3 4.97 3 4.93 3 4.9L1.11 3L2.39 1.73L22.11 21.46Z"; -var mdiClipboardOffOutline = "M2.39 1.73L1.11 3L3 4.9C3 4.93 3 4.97 3 5V19C3 20.11 3.9 21 5 21H19C19.03 21 19.07 21 19.1 21L20.84 22.73L22.11 21.46L2.39 1.73M5 19V6.89L17.11 19H5M17 7V5H19V15.8L21 17.8V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H6.2L10.2 7H17M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3Z"; -var mdiClipboardOutline = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7Z"; -var mdiClipboardPlay = "M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M10,17V9L15,13L10,17Z"; -var mdiClipboardPlayMultiple = "M4 21H18V23H4C2.9 23 2 22.1 2 21V7H4M22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.2C11.6 1.8 12.7 1 14 1C15.3 1 16.4 1.8 16.8 3H20C21.1 3 22 3.9 22 5M13 4C13 4.5 13.5 5 14 5C14.5 5 15 4.5 15 4C15 3.5 14.6 3 14 3C13.4 3 13 3.5 13 4M17 12L12 8V16"; -var mdiClipboardPlayMultipleOutline = "M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.2C11.6 1.8 12.7 1 14 1C15.3 1 16.4 1.8 16.8 3H20M14 3C13.4 3 13 3.5 13 4C13 4.5 13.4 5 14 5C14.6 5 15 4.6 15 4C15 3.4 14.6 3 14 3M10 7V5H8V17H20V5H18V7M12 15V9L17 12"; -var mdiClipboardPlayOutline = "M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7M10,17V9L15,13L10,17Z"; -var mdiClipboardPlus = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M13,12H16V14H13V17H11V14H8V12H11V9H13V12Z"; -var mdiClipboardPlusOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M7 7H17V5H19V19H5V5H7V7M13 12H16V14H13V17H11V14H8V12H11V9H13V12Z"; -var mdiClipboardPulse = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M5,13.46H7.17L10.5,7.08L11.44,14.05L13.93,10.86L16.53,13.46H19V15H15.89L14.07,13.21L10.38,17.92L9.62,12.15L8.11,15H5V13.46Z"; -var mdiClipboardPulseOutline = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M5,15H8.11L9.62,12.15L10.38,17.92L14.07,13.21L15.89,15H19V19H5V15M19,13.46H16.53L13.93,10.86L11.44,14.05L10.5,7.08L7.17,13.46H5V5H7V6H17V5H19V6L19,13.46Z"; -var mdiClipboardRemove = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M15.54 15.12L14.12 16.54L12 14.41L9.88 16.54L8.47 15.12L10.59 13L8.47 10.88L9.88 9.47L12 11.59L14.12 9.47L15.54 10.88L13.41 13L15.54 15.12Z"; -var mdiClipboardRemoveOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M19 19H5V5H7V7H17V5H19V19M15.54 10.88L13.41 13L15.54 15.12L14.12 16.54L12 14.41L9.88 16.54L8.47 15.12L10.59 13L8.47 10.88L9.88 9.47L12 11.59L14.12 9.47L15.54 10.88Z"; -var mdiClipboardSearch = "M11.9 10.9C14.41 8.4 18.45 8.37 21 10.82V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H13.06C12.65 20.74 12.26 20.45 11.9 20.1C9.37 17.56 9.37 13.44 11.9 10.9M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z"; -var mdiClipboardSearchOutline = "M11.03 19H5V5H7V7H17V5H19V9.5C19.72 9.8 20.4 10.24 21 10.82V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H13.06C12.65 20.74 12.26 20.45 11.9 20.1C11.57 19.76 11.27 19.39 11.03 19M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z"; -var mdiClipboardText = "M17,9H7V7H17M17,13H7V11H17M14,17H7V15H14M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiClipboardTextMultiple = "M20 3H16.8C16.4 1.8 15.3 1 14 1C12.7 1 11.6 1.8 11.2 3H8C6.9 3 6 3.9 6 5V17C6 18.1 6.9 19 8 19H20C21.1 19 22 18.1 22 17V5C22 3.9 21.1 3 20 3M14 3C14.6 3 15 3.5 15 4C15 4.5 14.5 5 14 5C13.5 5 13 4.5 13 4C13 3.5 13.4 3 14 3M16 14H9V12H16M19 10H9V8H19M4 21H18V23H4C2.9 23 2 22.1 2 21V7H4"; -var mdiClipboardTextMultipleOutline = "M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.18C11.6 1.84 12.7 1 14 1C15.3 1 16.4 1.84 16.82 3H20M14 3C13.45 3 13 3.45 13 4C13 4.55 13.45 5 14 5C14.55 5 15 4.55 15 4C15 3.45 14.55 3 14 3M10 7V5H8V17H20V5H18V7M15 15H10V13H15M18 11H10V9H18V11Z"; -var mdiClipboardTextOff = "M2.39 1.73L1.11 3L3 4.9C3 4.93 3 4.97 3 5V19C3 20.11 3.9 21 5 21H19C19.03 21 19.07 21 19.1 21L20.84 22.73L22.11 21.46L2.39 1.73M7 11H9.11L11.11 13H7V11M14 17H7V15H13.11L14 15.89V17M17 7V9H12.2L14.2 11H17V13H16.2L21 17.8V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H6.2L10.2 7H17M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3Z"; -var mdiClipboardTextOffOutline = "M17 7V5H19V15.8L21 17.8V5C21 3.9 20.11 3 19 3H14.82C14.25 1.44 12.53 .64 11 1.2C10.14 1.5 9.5 2.16 9.18 3H6.2L10.2 7H17M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M14.2 11L12.2 9H17V11H14.2M2.39 1.73L1.11 3L3 4.9C3 4.93 3 4.97 3 5V19C3 20.11 3.9 21 5 21H19C19.03 21 19.07 21 19.1 21L20.84 22.73L22.11 21.46L2.39 1.73M5 19V6.89L7.11 9H7V11H9.11L11.11 13H7V15H13.11L17.11 19H5Z"; -var mdiClipboardTextOutline = "M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7M17,11H7V9H17V11M15,15H7V13H15V15Z"; -var mdiClipboardTextPlay = "M19,3A2,2 0 0,1 21,5V13.34C20.36,13.11 19.68,13 19,13C15.68,13 13,15.69 13,19C13,19.68 13.11,20.36 13.34,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.5,2.16 10.14,1.5 11,1.2C12.53,0.64 14.25,1.44 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M11,17V15H7V17H11M13,13V11H7V13H13M17,9V7H7V9H17M17,16L22,19L17,22V16Z"; -var mdiClipboardTextPlayOutline = "M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H15V19H5V5H7V7H17V5H19V14H21V5A2,2 0 0,0 19,3M12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5M17,16V22L22,19L17,16M17,11H7V9H17V11M15,15H7V13H15V15Z"; -var mdiClipboardTextSearch = "M10.18 17H7V15H10C10.08 14.32 10.23 13.64 10.5 13H7V11H11.82C11.85 10.97 11.87 10.94 11.9 10.9C13.17 9.64 14.84 9 16.5 9H7V7H17V9H16.5C18.12 9 19.74 9.61 21 10.82V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H13.06C12.65 20.74 12.26 20.45 11.9 20.1C11 19.21 10.45 18.13 10.18 17M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z"; -var mdiClipboardTextSearchOutline = "M17 9H16.5 17M7 15H10C10.08 14.32 10.23 13.64 10.5 13H7V15M11.9 10.9C13.17 9.64 14.84 9 16.5 9H7V11H11.82C11.85 10.97 11.87 10.94 11.9 10.9M11.9 20.1C12.26 20.45 12.65 20.74 13.06 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3H9.18C9.5 2.16 10.14 1.5 11 1.2C12.53 .64 14.25 1.44 14.82 3H19C20.11 3 21 3.9 21 5V10.82C20.4 10.24 19.72 9.8 19 9.5V5H17V7H7V5H5V19H11.03C11.27 19.39 11.57 19.76 11.9 20.1M11 4C11 4.55 11.45 5 12 5S13 4.55 13 4 12.55 3 12 3 11 3.45 11 4M23.39 21L22 22.39L18.88 19.32C18.19 19.75 17.37 20 16.5 20C14 20 12 18 12 15.5S14 11 16.5 11 21 13 21 15.5C21 16.38 20.75 17.21 20.31 17.9L23.39 21M19 15.5C19 14.12 17.88 13 16.5 13S14 14.12 14 15.5 15.12 18 16.5 18 19 16.88 19 15.5Z"; -var mdiClippy = "M15,15.5A2.5,2.5 0 0,1 12.5,18A2.5,2.5 0 0,1 10,15.5V13.75A0.75,0.75 0 0,1 10.75,13A0.75,0.75 0 0,1 11.5,13.75V15.5A1,1 0 0,0 12.5,16.5A1,1 0 0,0 13.5,15.5V11.89C12.63,11.61 12,10.87 12,10C12,8.9 13,8 14.25,8C15.5,8 16.5,8.9 16.5,10C16.5,10.87 15.87,11.61 15,11.89V15.5M8.25,8C9.5,8 10.5,8.9 10.5,10C10.5,10.87 9.87,11.61 9,11.89V17.25A3.25,3.25 0 0,0 12.25,20.5A3.25,3.25 0 0,0 15.5,17.25V13.75A0.75,0.75 0 0,1 16.25,13A0.75,0.75 0 0,1 17,13.75V17.25A4.75,4.75 0 0,1 12.25,22A4.75,4.75 0 0,1 7.5,17.25V11.89C6.63,11.61 6,10.87 6,10C6,8.9 7,8 8.25,8M10.06,6.13L9.63,7.59C9.22,7.37 8.75,7.25 8.25,7.25C7.34,7.25 6.53,7.65 6.03,8.27L4.83,7.37C5.46,6.57 6.41,6 7.5,5.81V5.75A3.75,3.75 0 0,1 11.25,2A3.75,3.75 0 0,1 15,5.75V5.81C16.09,6 17.04,6.57 17.67,7.37L16.47,8.27C15.97,7.65 15.16,7.25 14.25,7.25C13.75,7.25 13.28,7.37 12.87,7.59L12.44,6.13C12.77,6 13.13,5.87 13.5,5.81V5.75C13.5,4.5 12.5,3.5 11.25,3.5C10,3.5 9,4.5 9,5.75V5.81C9.37,5.87 9.73,6 10.06,6.13M14.25,9.25C13.7,9.25 13.25,9.59 13.25,10C13.25,10.41 13.7,10.75 14.25,10.75C14.8,10.75 15.25,10.41 15.25,10C15.25,9.59 14.8,9.25 14.25,9.25M8.25,9.25C7.7,9.25 7.25,9.59 7.25,10C7.25,10.41 7.7,10.75 8.25,10.75C8.8,10.75 9.25,10.41 9.25,10C9.25,9.59 8.8,9.25 8.25,9.25Z"; -var mdiClock = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z"; -var mdiClockAlert = "M20 12H22V18H20V12M20 20H22V22H20V20M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22C14.3 22 16.3 21.2 18 20V10H21.8C20.9 5.4 16.8 2 12 2M16.2 16.2L11 13V7H12.5V12.2L17 14.9L16.2 16.2Z"; -var mdiClockAlertOutline = "M11 7V13L16.2 16.1L17 14.9L12.5 12.2V7H11M20 12V18H22V12H20M20 20V22H22V20H20M18 20C16.3 21.3 14.3 22 12 22C6.5 22 2 17.5 2 12S6.5 2 12 2C16.8 2 20.9 5.4 21.8 10H19.7C18.8 6.6 15.7 4 12 4C7.6 4 4 7.6 4 12S7.6 20 12 20C14.4 20 16.5 18.9 18 17.3V20Z"; -var mdiClockCheck = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M13 19C13 17.5 13.5 16.2 14.4 15.1L11 13V7H12.5V12.2L15.6 14.1C16.6 13.4 17.7 13 19 13C20 13 21 13.3 21.8 13.7C21.9 13.1 22 12.6 22 12C22 6.5 17.5 2 12 2S2 6.5 2 12 6.5 22 12 22C12.6 22 13.2 21.9 13.7 21.8C13.3 21 13 20 13 19Z"; -var mdiClockCheckOutline = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M13.1 19.9C12.7 20 12.4 20 12 20C7.6 20 4 16.4 4 12S7.6 4 12 4 20 7.6 20 12C20 12.4 20 12.7 19.9 13.1C20.6 13.2 21.2 13.4 21.8 13.7C21.9 13.1 22 12.6 22 12C22 6.5 17.5 2 12 2S2 6.5 2 12C2 17.5 6.5 22 12 22C12.6 22 13.2 21.9 13.7 21.8C13.4 21.3 13.2 20.6 13.1 19.9M15.6 14.1L12.5 12.3V7H11V13L14.5 15.1C14.8 14.7 15.2 14.4 15.6 14.1Z"; -var mdiClockDigital = "M2,6A2,2 0 0,0 0,8V16A2,2 0 0,0 2,18H22A2,2 0 0,0 24,16V8A2,2 0 0,0 22,6M2,8H22V16H2M3,9V10.5H6.25L3,15H4.75L8,10.5V9M9.25,9V10.5H10.75V9M12,9V10.5H13.5V15H15V9M17,9A1,1 0 0,0 16,10V14A1,1 0 0,0 17,15H20A1,1 0 0,0 21,14V10A1,1 0 0,0 20,9M17.5,10.5H19.5V13.5H17.5M9.25,13.5V15H10.75V13.5"; -var mdiClockEnd = "M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M15,16V19H3V21H15V24L19,20M19,20V24H21V16H19"; -var mdiClockFast = "M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6M14,8H15.5V11.78L17.83,14.11L16.77,15.17L14,12.4V8M2,18A1,1 0 0,1 1,17A1,1 0 0,1 2,16H5.83C6.14,16.71 6.54,17.38 7,18H2M3,13A1,1 0 0,1 2,12A1,1 0 0,1 3,11H5.05L5,12L5.05,13H3M4,8A1,1 0 0,1 3,7A1,1 0 0,1 4,6H7C6.54,6.62 6.14,7.29 5.83,8H4Z"; -var mdiClockIn = "M2.21,0.79L0.79,2.21L4.8,6.21L3,8H8V3L6.21,4.8M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12"; -var mdiClockOut = "M18,1L19.8,2.79L15.79,6.79L17.21,8.21L21.21,4.21L23,6V1M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12"; -var mdiClockOutline = "M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z"; -var mdiClockStart = "M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M4,16V24H6V21H18V24L22,20L18,16V19H6V16"; -var mdiClockTimeEight = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M7.7 15.5L7 14.2L11 11.9V7H12.5V12.8L7.7 15.5Z"; -var mdiClockTimeEightOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 12.8L7.7 15.6L7 14.2L11 11.9V7H12.5V12.8Z"; -var mdiClockTimeEleven = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H11L8.5 8.6L9.8 7.8L11 10V7H12.5V13Z"; -var mdiClockTimeElevenOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 7V13H11L8.5 8.6L9.8 7.8L11 10V7H12.5Z"; -var mdiClockTimeFive = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M14 17L11 11.8V7H12.5V11.4L15.3 16.3L14 17Z"; -var mdiClockTimeFiveOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M15.3 16.2L14 17L11 11.8V7H12.5V11.4L15.3 16.2Z"; -var mdiClockTimeFour = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M16.3 15.2L11 12.3V7H12.5V11.4L17 13.9L16.3 15.2Z"; -var mdiClockTimeFourOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M17 13.9L16.3 15.2L11 12.3V7H12.5V11.4L17 13.9Z"; -var mdiClockTimeNine = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H7V11.5H11V7H12.5V13Z"; -var mdiClockTimeNineOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 7V13H7V11.5H11V7H12.5Z"; -var mdiClockTimeOne = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.3 13H11V7H12.5V9.7L14 7.1L15.3 7.9L12.3 13Z"; -var mdiClockTimeOneOutline = "M12 20C16.42 20 20 16.42 20 12S16.42 4 12 4 4 7.58 4 12 7.58 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.47 22 2 17.5 2 12C2 6.5 6.5 2 12 2M15.3 7.8L12.3 13H11V7H12.5V9.65L14 7.05L15.3 7.8Z"; -var mdiClockTimeSeven = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 12.2L9.8 17L8.5 16.2L11 11.8V7H12.5V12.2Z"; -var mdiClockTimeSevenOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 7V12.2L9.8 17L8.5 16.2L11 11.8V7H12.5Z"; -var mdiClockTimeSix = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 17H11V7H12.5V17Z"; -var mdiClockTimeSixOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 7V17H11V7H12.5Z"; -var mdiClockTimeTen = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H11L7 10.7L7.8 9.4L11.1 11.3V7H12.6V13Z"; -var mdiClockTimeTenOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 13H11L7 10.7L7.8 9.4L11.1 11.3V7H12.6V13Z"; -var mdiClockTimeThree = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M17 13H11V7H12.5V11.5H17V13Z"; -var mdiClockTimeThreeOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M17 11.5V13H11V7H12.5V11.5H17Z"; -var mdiClockTimeTwelve = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H11V7H12.5V13Z"; -var mdiClockTimeTwelveOutline = "M12 20C16.42 20 20 16.42 20 12S16.42 4 12 4 4 7.58 4 12 7.58 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.47 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 13.03H11V7H12.5V13.03Z"; -var mdiClockTimeTwo = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H11V7H12.5V11.3L16.2 9.2L17 10.5L12.5 13Z"; -var mdiClockTimeTwoOutline = "M12 20C16.42 20 20 16.42 20 12S16.42 4 12 4 4 7.58 4 12 7.58 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.47 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 13V13H11V7H12.5V11.26L16.2 9.13L16.95 10.43L12.5 13Z"; -var mdiClose = "M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"; -var mdiCloseBox = "M19,3H16.3H7.7H5A2,2 0 0,0 3,5V7.7V16.4V19A2,2 0 0,0 5,21H7.7H16.4H19A2,2 0 0,0 21,19V16.3V7.7V5A2,2 0 0,0 19,3M15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4L13.4,12L17,15.6L15.6,17Z"; -var mdiCloseBoxMultiple = "M4 20H18V22H4C2.9 22 2 21.11 2 20V6H4V20M20.22 2H7.78C6.8 2 6 2.8 6 3.78V16.22C6 17.2 6.8 18 7.78 18H20.22C21.2 18 22 17.2 22 16.22V3.78C22 2.8 21.2 2 20.22 2M19 13.6L17.6 15L14 11.4L10.4 15L9 13.6L12.6 10L9 6.4L10.4 5L14 8.6L17.6 5L19 6.4L15.4 10L19 13.6Z"; -var mdiCloseBoxMultipleOutline = "M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M20 16H8V4H20V16M4 6V20H18V22H4C2.9 22 2 21.11 2 20V6H4M9.77 12.84L12.6 10L9.77 7.15L11.17 5.75L14 8.6L16.84 5.77L18.24 7.17L15.4 10L18.23 12.84L16.83 14.24L14 11.4L11.17 14.24L9.77 12.84Z"; -var mdiCloseBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M17,8.4L13.4,12L17,15.6L15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4Z"; -var mdiCloseCircle = "M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z"; -var mdiCloseCircleMultiple = "M2 12C2 9.21 3.64 6.8 6 5.68V3.5C2.5 4.76 0 8.09 0 12S2.5 19.24 6 20.5V18.32C3.64 17.2 2 14.79 2 12M15 3C10.04 3 6 7.04 6 12S10.04 21 15 21 24 16.96 24 12 19.96 3 15 3M20 15.59L18.59 17L15 13.41L11.41 17L10 15.59L13.59 12L10 8.41L11.41 7L15 10.59L18.59 7L20 8.41L16.41 12L20 15.59Z"; -var mdiCloseCircleMultipleOutline = "M18.54 9.88L17.12 8.47L15 10.59L12.88 8.47L11.47 9.88L13.59 12L11.47 14.12L12.88 15.54L15 13.41L17.12 15.54L18.54 14.12L16.41 12M2 12C2 9.21 3.64 6.8 6 5.68V3.5C2.5 4.76 0 8.09 0 12S2.5 19.24 6 20.5V18.32C3.64 17.2 2 14.79 2 12M15 3C10.04 3 6 7.04 6 12S10.04 21 15 21 24 16.96 24 12 19.96 3 15 3M15 19C11.14 19 8 15.86 8 12S11.14 5 15 5 22 8.14 22 12 18.86 19 15 19Z"; -var mdiCloseCircleOutline = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z"; -var mdiCloseNetwork = "M14.59,6L12,8.59L9.41,6L8,7.41L10.59,10L8,12.59L9.41,14L12,11.41L14.59,14L16,12.59L13.41,10L16,7.41L14.59,6M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z"; -var mdiCloseNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M15.54,12.12L13.41,10L15.53,7.87L14.12,6.46L12,8.59L9.88,6.46L8.47,7.87L10.59,10L8.47,12.13L9.88,13.54L12,11.41L14.12,13.54L15.54,12.12Z"; -var mdiCloseOctagon = "M8.27,3L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27L15.73,3M8.41,7L12,10.59L15.59,7L17,8.41L13.41,12L17,15.59L15.59,17L12,13.41L8.41,17L7,15.59L10.59,12L7,8.41"; -var mdiCloseOctagonOutline = "M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1M9.12,7.71L7.71,9.12L10.59,12L7.71,14.88L9.12,16.29L12,13.41L14.88,16.29L16.29,14.88L13.41,12L16.29,9.12L14.88,7.71L12,10.59"; -var mdiCloseOutline = "M3,16.74L7.76,12L3,7.26L7.26,3L12,7.76L16.74,3L21,7.26L16.24,12L21,16.74L16.74,21L12,16.24L7.26,21L3,16.74M12,13.41L16.74,18.16L18.16,16.74L13.41,12L18.16,7.26L16.74,5.84L12,10.59L7.26,5.84L5.84,7.26L10.59,12L5.84,16.74L7.26,18.16L12,13.41Z"; -var mdiCloseThick = "M20 6.91L17.09 4L12 9.09L6.91 4L4 6.91L9.09 12L4 17.09L6.91 20L12 14.91L17.09 20L20 17.09L14.91 12L20 6.91Z"; -var mdiClosedCaption = "M18,11H16.5V10.5H14.5V13.5H16.5V13H18V14A1,1 0 0,1 17,15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,11H9.5V10.5H7.5V13.5H9.5V13H11V14A1,1 0 0,1 10,15H7A1,1 0 0,1 6,14V10A1,1 0 0,1 7,9H10A1,1 0 0,1 11,10M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z"; -var mdiClosedCaptionOutline = "M5,4C4.45,4 4,4.18 3.59,4.57C3.2,4.96 3,5.44 3,6V18C3,18.56 3.2,19.04 3.59,19.43C4,19.82 4.45,20 5,20H19C19.5,20 20,19.81 20.39,19.41C20.8,19 21,18.53 21,18V6C21,5.47 20.8,5 20.39,4.59C20,4.19 19.5,4 19,4H5M4.5,5.5H19.5V18.5H4.5V5.5M7,9C6.7,9 6.47,9.09 6.28,9.28C6.09,9.47 6,9.7 6,10V14C6,14.3 6.09,14.53 6.28,14.72C6.47,14.91 6.7,15 7,15H10C10.27,15 10.5,14.91 10.71,14.72C10.91,14.53 11,14.3 11,14V13H9.5V13.5H7.5V10.5H9.5V11H11V10C11,9.7 10.91,9.47 10.71,9.28C10.5,9.09 10.27,9 10,9H7M14,9C13.73,9 13.5,9.09 13.29,9.28C13.09,9.47 13,9.7 13,10V14C13,14.3 13.09,14.53 13.29,14.72C13.5,14.91 13.73,15 14,15H17C17.3,15 17.53,14.91 17.72,14.72C17.91,14.53 18,14.3 18,14V13H16.5V13.5H14.5V10.5H16.5V11H18V10C18,9.7 17.91,9.47 17.72,9.28C17.53,9.09 17.3,9 17,9H14Z"; -var mdiCloud = "M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z"; -var mdiCloudAlert = "M19 20H6C2.7 20 0 17.3 0 14C0 10.9 2.3 8.4 5.3 8C6.6 5.6 9.1 4 12 4C15.6 4 18.7 6.6 19.4 10C22 10.2 24 12.3 24 15C24 17.7 21.7 20 19 20M11 15V17H13V15H11M11 13H13V7H11V13Z"; -var mdiCloudBraces = "M6,20A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4C15.63,4 18.66,6.58 19.35,10C21.95,10.19 24,12.36 24,15A5,5 0 0,1 19,20H6M18.5,12H18A1,1 0 0,1 17,11V10A2,2 0 0,0 15,8H13.5V10H15V11A2,2 0 0,0 17,13A2,2 0 0,0 15,15V16H13.5V18H15A2,2 0 0,0 17,16V15A1,1 0 0,1 18,14H18.5V12M5.5,12V14H6A1,1 0 0,1 7,15V16A2,2 0 0,0 9,18H10.5V16H9V15A2,2 0 0,0 7,13A2,2 0 0,0 9,11V10H10.5V8H9A2,2 0 0,0 7,10V11A1,1 0 0,1 6,12H5.5Z"; -var mdiCloudCheck = "M10,17L6.5,13.5L7.91,12.08L10,14.17L15.18,9L16.59,10.41M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z"; -var mdiCloudCheckOutline = "M19 18H6C3.79 18 2 16.21 2 14S3.79 10 6 10H6.71C7.37 7.69 9.5 6 12 6C15.04 6 17.5 8.46 17.5 11.5V12H19C20.66 12 22 13.34 22 15S20.66 18 19 18M19.35 10.03C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.03C2.34 8.36 0 10.9 0 14C0 17.31 2.69 20 6 20H19C21.76 20 24 17.76 24 15C24 12.36 21.95 10.22 19.35 10.03M10 17L6.5 13.5L7.91 12.08L10 14.17L14.59 9.59L16 11"; -var mdiCloudCircle = "M16.5,16H8A3,3 0 0,1 5,13A3,3 0 0,1 8,10C8.05,10 8.09,10 8.14,10C8.58,8.28 10.13,7 12,7A4,4 0 0,1 16,11H16.5A2.5,2.5 0 0,1 19,13.5A2.5,2.5 0 0,1 16.5,16M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiCloudDownload = "M17,13L12,18L7,13H10V9H14V13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z"; -var mdiCloudDownloadOutline = "M8,13H10.55V10H13.45V13H16L12,17L8,13M19.35,10.04C21.95,10.22 24,12.36 24,15A5,5 0 0,1 19,20H6A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4C15.64,4 18.67,6.59 19.35,10.04M19,18A3,3 0 0,0 22,15C22,13.45 20.78,12.14 19.22,12.04L17.69,11.93L17.39,10.43C16.88,7.86 14.62,6 12,6C9.94,6 8.08,7.14 7.13,8.97L6.63,9.92L5.56,10.03C3.53,10.24 2,11.95 2,14A4,4 0 0,0 6,18H19Z"; -var mdiCloudLock = "M22 17C22.5 17 23 17.5 23 18V22C23 22.5 22.5 23 22 23H17C16.5 23 16 22.5 16 22V18C16 17.5 16.5 17 17 17V15.5C17 14.1 18.1 13 19.5 13C20.9 13 22 14.1 22 15.5V17M21 17V15.5C21 14.7 20.3 14 19.5 14C18.7 14 18 14.7 18 15.5V17H21M19.36 9.03C21.95 9.22 24 11.36 24 14L23.94 14.77C23.59 12.63 21.74 11 19.5 11C17 11 15 13 15 15.5L15 15.76C14.39 16.31 14 17.11 14 18V19H6C2.69 19 0 16.31 0 13C0 9.9 2.34 7.36 5.35 7.04C6.6 4.64 9.11 3 12 3C15.64 3 18.67 5.59 19.36 9.03Z"; -var mdiCloudLockOutline = "M22 17C22.5 17 23 17.5 23 18V22C23 22.5 22.5 23 22 23H17C16.5 23 16 22.5 16 22V18C16 17.5 16.5 17 17 17V15.5C17 14.1 18.1 13 19.5 13C20.9 13 22 14.1 22 15.5V17M21 17V15.5C21 14.7 20.3 14 19.5 14C18.7 14 18 14.7 18 15.5V17H21M17.5 11V10.5C17.5 7.46 15.04 5 12 5C9.5 5 7.37 6.69 6.71 9H6C3.79 9 2 10.79 2 13C2 15.21 3.79 17 6 17H14.17C14.06 17.31 14 17.65 14 18V19H6C2.69 19 0 16.31 0 13C0 9.9 2.34 7.36 5.35 7.04C6.6 4.64 9.11 3 12 3C15.64 3 18.67 5.6 19.36 9.04C21.95 9.22 24 11.36 24 14L23.94 14.77C23.59 12.63 21.74 11 19.5 11H17.5Z"; -var mdiCloudOffOutline = "M7.73,10L15.73,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10M3,5.27L5.75,8C2.56,8.15 0,10.77 0,14A6,6 0 0,0 6,20H17.73L19.73,22L21,20.73L4.27,4M19.35,10.03C18.67,6.59 15.64,4 12,4C10.5,4 9.15,4.43 8,5.17L9.45,6.63C10.21,6.23 11.08,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15C22,16.13 21.36,17.11 20.44,17.62L21.89,19.07C23.16,18.16 24,16.68 24,15C24,12.36 21.95,10.22 19.35,10.03Z"; -var mdiCloudOutline = "M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10H6.71C7.37,7.69 9.5,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z"; -var mdiCloudPrint = "M12,2C9.11,2 6.6,3.64 5.35,6.04C2.34,6.36 0,8.91 0,12A6,6 0 0,0 6,18V22H18V18H19A5,5 0 0,0 24,13C24,10.36 21.95,8.22 19.35,8.04C18.67,4.59 15.64,2 12,2M8,13H16V20H8V13M9,14V15H15V14H9M9,16V17H15V16H9M9,18V19H15V18H9Z"; -var mdiCloudPrintOutline = "M19,16A3,3 0 0,0 22,13A3,3 0 0,0 19,10H17.5V9.5A5.5,5.5 0 0,0 12,4C9.5,4 7.37,5.69 6.71,8H6A4,4 0 0,0 2,12A4,4 0 0,0 6,16V11H18V16H19M19.36,8.04C21.95,8.22 24,10.36 24,13A5,5 0 0,1 19,18H18V22H6V18A6,6 0 0,1 0,12C0,8.91 2.34,6.36 5.35,6.04C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.6 19.36,8.04M8,13V20H16V13H8M9,18H15V19H9V18M15,17H9V16H15V17M9,14H15V15H9V14Z"; -var mdiCloudQuestion = "M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03M13,17H11V15H13V17M14.8,11.82C14.5,12.21 14.13,12.5 13.67,12.75C13.41,12.91 13.24,13.07 13.15,13.26C13.06,13.45 13,13.69 13,14H11C11,13.45 11.11,13.08 11.3,12.82C11.5,12.56 11.85,12.25 12.37,11.91C12.63,11.75 12.84,11.56 13,11.32C13.15,11.09 13.23,10.81 13.23,10.5C13.23,10.18 13.14,9.94 12.96,9.76C12.78,9.56 12.5,9.47 12.2,9.47C11.93,9.47 11.71,9.55 11.5,9.7C11.35,9.85 11.25,10.08 11.25,10.39H9.28C9.23,9.64 9.5,9 10.06,8.59C10.6,8.2 11.31,8 12.2,8C13.14,8 13.89,8.23 14.43,8.68C14.97,9.13 15.24,9.75 15.24,10.5C15.24,11 15.09,11.41 14.8,11.82Z"; -var mdiCloudRefresh = "M12 4C15.64 4 18.67 6.59 19.35 10.04C21.95 10.22 24 12.36 24 15C24 17.76 21.76 20 19 20H6C2.69 20 0 17.31 0 14C0 10.91 2.34 8.36 5.35 8.04C6.6 5.64 9.11 4 12 4M17 13V9L16 10C15.09 8.79 13.64 8 12 8C9.24 8 7 10.24 7 13C7 15.76 9.24 18 12 18C14.05 18 15.81 16.77 16.58 15H14.24C13.69 15.61 12.89 16 12 16C10.34 16 9 14.66 9 13C9 11.34 10.34 10 12 10C13.09 10 14.04 10.58 14.56 11.44L13 13H17Z"; -var mdiCloudSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M19.35,8.03C21.95,8.22 24,10.36 24,13C24,14.64 23.21,16.1 22,17V16.5A6.5,6.5 0 0,0 15.5,10A6.5,6.5 0 0,0 9,16.5C9,17 9.06,17.5 9.17,18H6A6,6 0 0,1 0,12C0,8.9 2.34,6.36 5.35,6.03C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.59 19.35,8.03Z"; -var mdiCloudSearchOutline = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M22,13A3,3 0 0,0 19,10H17.5V9.5A5.5,5.5 0 0,0 12,4C9.5,4 7.37,5.69 6.71,8H6A4,4 0 0,0 2,12A4,4 0 0,0 6,16H9V16.5C9,17 9.06,17.5 9.17,18H6A6,6 0 0,1 0,12C0,8.9 2.34,6.36 5.35,6.04C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.59 19.36,8.04C21.95,8.22 24,10.36 24,13C24,14.65 23.21,16.1 22,17V16.5C22,15.77 21.88,15.06 21.65,14.4C21.87,14 22,13.5 22,13Z"; -var mdiCloudSync = "M19 12V13.5C21.21 13.5 23 15.29 23 17.5C23 18.32 22.75 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L16.72 14.22C16.78 14.17 16.85 14.13 19 12M19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5L21.25 20.75L21.28 20.78C21.22 20.83 21.15 20.87 19 23M13 17.5C13 13.91 15.91 11 19.5 11C20.78 11 21.97 11.38 23 12C22.13 10.9 20.84 10.14 19.35 10.03C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.03C2.34 8.36 0 10.9 0 14C0 17.31 2.69 20 6 20H13.5C13.18 19.23 13 18.39 13 17.5Z"; -var mdiCloudSyncOutline = "M19 12V13.5C21.21 13.5 23 15.29 23 17.5C23 18.32 22.75 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L16.72 14.22C16.78 14.17 16.85 14.13 19 12M19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5L21.25 20.75L21.28 20.78C21.22 20.83 21.15 20.87 19 23M13.03 18H6C3.79 18 2 16.21 2 14S3.79 10 6 10H6.71C7.37 7.69 9.5 6 12 6C15 6 17.4 8.37 17.5 11.32C18.12 11.11 18.8 11 19.5 11C20.78 11 21.97 11.38 23 12C22.13 10.9 20.84 10.14 19.35 10.03C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.03C2.34 8.36 0 10.9 0 14C0 17.31 2.69 20 6 20H13.5C13.24 19.38 13.08 18.7 13.03 18Z"; -var mdiCloudTags = "M6,20A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4C15.63,4 18.66,6.58 19.35,10C21.95,10.19 24,12.36 24,15A5,5 0 0,1 19,20H6M9.09,8.4L4.5,13L9.09,17.6L10.5,16.18L7.32,13L10.5,9.82L9.09,8.4M14.91,8.4L13.5,9.82L16.68,13L13.5,16.18L14.91,17.6L19.5,13L14.91,8.4Z"; -var mdiCloudUpload = "M14,13V17H10V13H7L12,8L17,13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z"; -var mdiCloudUploadOutline = "M19.35,10.04C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.04C2.34,8.36 0,10.91 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.04M19,18H6A4,4 0 0,1 2,14C2,11.95 3.53,10.24 5.56,10.03L6.63,9.92L7.13,8.97C8.08,7.14 9.94,6 12,6C14.62,6 16.88,7.86 17.39,10.43L17.69,11.93L19.22,12.04C20.78,12.14 22,13.45 22,15A3,3 0 0,1 19,18M8,13H10.55V16H13.45V13H16L12,9L8,13Z"; -var mdiClover = "M12,11.18C15.3,8.18 17,6.64 17,4.69C17,3.19 15.75,2 14.25,2C13.39,2 12.57,2.36 12,3C11.43,2.36 10.61,2 9.69,2C8.19,2 7,3.25 7,4.75C7,6.64 8.7,8.18 12,11.18M11.18,12C8.18,8.7 6.64,7 4.69,7C3.19,7 2,8.25 2,9.75C2,10.61 2.36,11.43 3,12C2.36,12.57 2,13.39 2,14.31C2,15.81 3.25,17 4.75,17C6.64,17 8.18,15.3 11.18,12M12.83,12C15.82,15.3 17.36,17 19.31,17C20.81,17 22,15.75 22,14.25C22,13.39 21.64,12.57 21,12C21.64,11.43 22,10.61 22,9.69C22,8.19 20.75,7 19.25,7C17.36,7 15.82,8.7 12.83,12M12,12.82C8.7,15.82 7,17.36 7,19.31C7,20.81 8.25,22 9.75,22C10.61,22 11.43,21.64 12,21C12.57,21.64 13.39,22 14.31,22C15.81,22 17,20.75 17,19.25C17,17.36 15.3,15.82 12,12.82Z"; -var mdiCoachLamp = "M16 5L15 2H13L12 5L6 8H8L8.6 11H4V7H2V17H4V13H9L10 18L12 20L13 22H15L16 20L18 18L20 8H22M16.16 17H11.84L10 8H18Z"; -var mdiCoatRack = "M18.33 7.78A1 1 0 0 0 16.66 8.89A2 2 0 1 1 13 10V7.82A3 3 0 1 0 11 7.82V10A2 2 0 1 1 7.34 8.89A1 1 0 1 0 5.67 7.78A4 4 0 0 0 11 13.46V20A2 2 0 0 0 9 22H15A2 2 0 0 0 13 20V13.46A4 4 0 0 0 18.33 7.78M12 4A1 1 0 1 1 11 5A1 1 0 0 1 12 4Z"; -var mdiCodeArray = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M6,6V18H10V16H8V8H10V6H6M16,16H14V18H18V6H14V8H16V16Z"; -var mdiCodeBraces = "M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z"; -var mdiCodeBracesBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M11 8H9V10C9 11.1 8.1 12 7 12C8.1 12 9 12.9 9 14V16H11V18H9C7.9 18 7 17.1 7 16V15C7 13.9 6.1 13 5 13V11C6.1 11 7 10.1 7 9V8C7 6.9 7.9 6 9 6H11V8M19 13C17.9 13 17 13.9 17 15V16C17 17.1 16.1 18 15 18H13V16H15V14C15 12.9 15.9 12 17 12C15.9 12 15 11.1 15 10V8H13V6H15C16.1 6 17 6.9 17 8V9C17 10.1 17.9 11 19 11V13Z"; -var mdiCodeBrackets = "M15,4V6H18V18H15V20H20V4M4,4V20H9V18H6V6H9V4H4Z"; -var mdiCodeEqual = "M6,13H11V15H6M13,13H18V15H13M13,9H18V11H13M6,9H11V11H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z"; -var mdiCodeGreaterThan = "M10.41,7.41L15,12L10.41,16.6L9,15.18L12.18,12L9,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z"; -var mdiCodeGreaterThanOrEqual = "M13,13H18V15H13M13,9H18V11H13M6.91,7.41L11.5,12L6.91,16.6L5.5,15.18L8.68,12L5.5,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z"; -var mdiCodeJson = "M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z"; -var mdiCodeLessThan = "M13.59,7.41L9,12L13.59,16.6L15,15.18L11.82,12L15,8.82M19,3C20.11,3 21,3.9 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19Z"; -var mdiCodeLessThanOrEqual = "M13,13H18V15H13M13,9H18V11H13M10.09,7.41L11.5,8.82L8.32,12L11.5,15.18L10.09,16.6L5.5,12M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z"; -var mdiCodeNotEqual = "M6,15H8V17H6M11,13H18V15H11M11,9H18V11H11M6,7H8V13H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z"; -var mdiCodeNotEqualVariant = "M11,6.5V9.33L8.33,12L11,14.67V17.5L5.5,12M13,6.43L18.57,12L13,17.57V14.74L15.74,12L13,9.26M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z"; -var mdiCodeParentheses = "M17.62,3C19.13,5.27 20,8.55 20,12C20,15.44 19.13,18.72 17.62,21L16,19.96C17.26,18.07 18,15.13 18,12C18,8.87 17.26,5.92 16,4.03L17.62,3M6.38,3L8,4.04C6.74,5.92 6,8.87 6,12C6,15.13 6.74,18.08 8,19.96L6.38,21C4.87,18.73 4,15.45 4,12C4,8.55 4.87,5.27 6.38,3Z"; -var mdiCodeParenthesesBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M10 17.3L8.4 18C6.9 16.5 6 14.3 6 12S6.9 7.5 8.4 6L10 6.7C8.7 7.9 8 9.9 8 12S8.7 16.1 10 17.3M15.6 18L14 17.3C15.3 16 16 14.1 16 12S15.3 7.9 14 6.7L15.6 6C17.1 7.5 18 9.7 18 12C18 14.3 17.1 16.5 15.6 18Z"; -var mdiCodeString = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M12.5,11H11.5A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 11.5,8H12.5A1.5,1.5 0 0,1 14,9.5H16A3.5,3.5 0 0,0 12.5,6H11.5A3.5,3.5 0 0,0 8,9.5A3.5,3.5 0 0,0 11.5,13H12.5A1.5,1.5 0 0,1 14,14.5A1.5,1.5 0 0,1 12.5,16H11.5A1.5,1.5 0 0,1 10,14.5H8A3.5,3.5 0 0,0 11.5,18H12.5A3.5,3.5 0 0,0 16,14.5A3.5,3.5 0 0,0 12.5,11Z"; -var mdiCodeTags = "M14.6,16.6L19.2,12L14.6,7.4L16,6L22,12L16,18L14.6,16.6M9.4,16.6L4.8,12L9.4,7.4L8,6L2,12L8,18L9.4,16.6Z"; -var mdiCodeTagsCheck = "M6.59,3.41L2,8L6.59,12.6L8,11.18L4.82,8L8,4.82L6.59,3.41M12.41,3.41L11,4.82L14.18,8L11,11.18L12.41,12.6L17,8L12.41,3.41M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13L21.59,11.59Z"; -var mdiCodepen = "M8.21 12L6.88 12.89V11.11L8.21 12M11.47 9.82V7.34L7.31 10.12L9.16 11.36L11.47 9.82M16.7 10.12L12.53 7.34V9.82L14.84 11.36L16.7 10.12M7.31 13.88L11.47 16.66V14.18L9.16 12.64L7.31 13.88M12.53 14.18V16.66L16.7 13.88L14.84 12.64L12.53 14.18M12 10.74L10.12 12L12 13.26L13.88 12L12 10.74M22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12M18.18 10.12C18.18 10.09 18.18 10.07 18.18 10.05L18.17 10L18.17 10L18.16 9.95C18.15 9.94 18.15 9.93 18.14 9.91L18.13 9.89L18.11 9.85L18.1 9.83L18.08 9.8L18.06 9.77L18.03 9.74L18 9.72L18 9.7L17.96 9.68L17.95 9.67L12.3 5.91C12.12 5.79 11.89 5.79 11.71 5.91L6.05 9.67L6.05 9.68L6 9.7C6 9.71 6 9.72 6 9.72L5.97 9.74L5.94 9.77L5.93 9.8L5.9 9.83L5.89 9.85L5.87 9.89L5.86 9.91L5.84 9.95L5.84 10L5.83 10L5.82 10.05C5.82 10.07 5.82 10.09 5.82 10.12V13.88C5.82 13.91 5.82 13.93 5.82 13.95L5.83 14L5.84 14L5.84 14.05C5.85 14.06 5.85 14.07 5.86 14.09L5.87 14.11L5.89 14.15L5.9 14.17L5.92 14.2L5.94 14.23C5.95 14.24 5.96 14.25 5.97 14.26L6 14.28L6 14.3L6.04 14.32L6.05 14.33L11.71 18.1C11.79 18.16 11.9 18.18 12 18.18C12.1 18.18 12.21 18.15 12.3 18.1L17.95 14.33L17.96 14.32L18 14.3L18 14.28L18.03 14.26L18.06 14.23L18.08 14.2L18.1 14.17L18.11 14.15L18.13 14.11L18.14 14.09L18.16 14.05L18.16 14L18.17 14L18.18 13.95C18.18 13.93 18.18 13.91 18.18 13.88V10.12M17.12 12.89V11.11L15.79 12L17.12 12.89Z"; -var mdiCoffee = "M2,21H20V19H2M20,8H18V5H20M20,3H4V13A4,4 0 0,0 8,17H14A4,4 0 0,0 18,13V10H20A2,2 0 0,0 22,8V5C22,3.89 21.1,3 20,3Z"; -var mdiCoffeeMaker = "M21 1V4H7V21H21V23H2V3C2 1.89 2.89 1 4 1H21M22 13V15C22 16.11 21.11 17 20 17H18C18 20 15 20 14 20S10 20 10 17V11H20C21.11 11 22 11.9 22 13M20 13H18V15H20V13M17 9L19 5H9L11 9H17Z"; -var mdiCoffeeOff = "M3.27 2L22 20.72L20.72 22L19.73 21H2V19H17.73L15.44 16.71C15 16.89 14.5 17 14 17H8C5.79 17 4 15.21 4 13V5.27L2 3.27L3.27 2M22 5V8C22 9.1 21.1 10 20 10H18V13C18 13.36 17.94 13.7 17.85 14.04L6.81 3H20C21.1 3 22 3.89 22 5M20 5H18V8H20V5Z"; -var mdiCoffeeOffOutline = "M2 3.27L4 5.27V13C4 15.21 5.79 17 8 17H14C14.5 17 15 16.89 15.44 16.71L17.73 19H2V21H19.73L20.72 22L22 20.72L3.27 2L2 3.27M8 15C6.9 15 6 14.1 6 13V7.27L13.73 15H8M20 3H6.81L8.81 5H16V12.19L17.85 14.04C17.94 13.7 18 13.36 18 13V10H20C21.1 10 22 9.1 22 8V5C22 3.9 21.1 3 20 3M20 8H18V5H20V8Z"; -var mdiCoffeeOutline = "M2,21V19H20V21H2M20,8V5H18V8H20M20,3A2,2 0 0,1 22,5V8A2,2 0 0,1 20,10H18V13A4,4 0 0,1 14,17H8A4,4 0 0,1 4,13V3H20M16,5H6V13A2,2 0 0,0 8,15H14A2,2 0 0,0 16,13V5Z"; -var mdiCoffeeToGo = "M3,19V17H17L15.26,15.24L16.67,13.83L20.84,18L16.67,22.17L15.26,20.76L17,19H3M17,8V5H15V8H17M17,3C18.11,3 19,3.9 19,5V8C19,9.11 18.11,10 17,10H15V11A4,4 0 0,1 11,15H7A4,4 0 0,1 3,11V3H17Z"; -var mdiCoffeeToGoOutline = "M3 3V11A4 4 0 0 0 7 15H11A4 4 0 0 0 15 11V10H17C18.11 10 19 9.11 19 8V5C19 3.9 18.11 3 17 3H3M5 5H13V11A2 2 0 0 1 11 13H7A2 2 0 0 1 5 11V5M15 5H17V8H15V5M16.67 13.83L15.26 15.24L17 17H3V19H17L15.26 20.76L16.67 22.17L20.84 18L16.67 13.83Z"; -var mdiCoffin = "M8,22L5,8L8,2H16L19,8L16,22H8M11,6V8H9V10H11V15H13V10H15V8H13V6H11Z"; -var mdiCog = "M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z"; -var mdiCogBox = "M17.25,12C17.25,12.23 17.23,12.46 17.2,12.68L18.68,13.84C18.81,13.95 18.85,14.13 18.76,14.29L17.36,16.71C17.27,16.86 17.09,16.92 16.93,16.86L15.19,16.16C14.83,16.44 14.43,16.67 14,16.85L13.75,18.7C13.72,18.87 13.57,19 13.4,19H10.6C10.43,19 10.28,18.87 10.25,18.7L10,16.85C9.56,16.67 9.17,16.44 8.81,16.16L7.07,16.86C6.91,16.92 6.73,16.86 6.64,16.71L5.24,14.29C5.15,14.13 5.19,13.95 5.32,13.84L6.8,12.68C6.77,12.46 6.75,12.23 6.75,12C6.75,11.77 6.77,11.54 6.8,11.32L5.32,10.16C5.19,10.05 5.15,9.86 5.24,9.71L6.64,7.29C6.73,7.13 6.91,7.07 7.07,7.13L8.81,7.84C9.17,7.56 9.56,7.32 10,7.15L10.25,5.29C10.28,5.13 10.43,5 10.6,5H13.4C13.57,5 13.72,5.13 13.75,5.29L14,7.15C14.43,7.32 14.83,7.56 15.19,7.84L16.93,7.13C17.09,7.07 17.27,7.13 17.36,7.29L18.76,9.71C18.85,9.86 18.81,10.05 18.68,10.16L17.2,11.32C17.23,11.54 17.25,11.77 17.25,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M12,10C10.89,10 10,10.89 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,10.89 13.1,10 12,10Z"; -var mdiCogClockwise = "M12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C14 21 15.92 20.34 17.5 19.14L16.06 17.7C14.87 18.54 13.45 19 12 19C8.13 19 5 15.87 5 12S8.13 5 12 5 19 8.13 19 12H16L20 16L24 12H21C21 7.03 16.97 3 12 3M7.71 13.16C7.62 13.23 7.59 13.35 7.64 13.45L8.54 15C8.6 15.12 8.72 15.12 8.82 15.12L9.95 14.67C10.19 14.83 10.44 14.97 10.7 15.09L10.88 16.28C10.9 16.39 11 16.47 11.1 16.47H12.9C13 16.5 13.11 16.41 13.13 16.3L13.31 15.12C13.58 15 13.84 14.85 14.07 14.67L15.19 15.12C15.3 15.16 15.42 15.11 15.47 15L16.37 13.5C16.42 13.38 16.39 13.26 16.31 13.19L15.31 12.45C15.34 12.15 15.34 11.85 15.31 11.55L16.31 10.79C16.4 10.72 16.42 10.61 16.37 10.5L15.47 8.95C15.41 8.85 15.3 8.81 15.19 8.85L14.07 9.3C13.83 9.13 13.57 9 13.3 8.88L13.13 7.69C13.11 7.58 13 7.5 12.9 7.5H11.14C11.04 7.5 10.95 7.57 10.93 7.67L10.76 8.85C10.5 8.97 10.23 9.12 10 9.3L8.85 8.88C8.74 8.84 8.61 8.89 8.56 9L7.65 10.5C7.6 10.62 7.63 10.74 7.71 10.81L8.71 11.55C8.69 11.7 8.69 11.85 8.71 12C8.7 12.15 8.7 12.3 8.71 12.45L7.71 13.19M12 13.5H12C11.16 13.5 10.5 12.82 10.5 12C10.5 11.17 11.17 10.5 12 10.5S13.5 11.17 13.5 12 12.83 13.5 12 13.5"; -var mdiCogCounterclockwise = "M12 3C7.03 3 3 7.03 3 12H0L4 16L8 12H5C5 8.13 8.13 5 12 5S19 8.13 19 12 15.87 19 12 19C10.55 19 9.13 18.54 7.94 17.7L6.5 19.14C8.08 20.34 10 21 12 21C16.97 21 21 16.97 21 12S16.97 3 12 3M16.29 13.19L15.29 12.45C15.3 12.3 15.3 12.15 15.29 12C15.31 11.85 15.31 11.7 15.29 11.55L16.29 10.81C16.37 10.74 16.4 10.62 16.35 10.5L15.44 9C15.39 8.89 15.26 8.84 15.15 8.88L14 9.3C13.77 9.12 13.5 8.97 13.24 8.85L13.07 7.67C13.05 7.57 12.96 7.5 12.86 7.5H11.1C11 7.5 10.89 7.58 10.87 7.69L10.7 8.88C10.43 9 10.17 9.13 9.93 9.3L8.81 8.85C8.71 8.81 8.59 8.85 8.53 8.95L7.63 10.5C7.58 10.61 7.6 10.72 7.69 10.79L8.69 11.55C8.66 11.85 8.66 12.15 8.69 12.45L7.69 13.19C7.61 13.26 7.58 13.38 7.63 13.5L8.53 15C8.58 15.11 8.7 15.16 8.81 15.12L9.93 14.67C10.16 14.85 10.42 15 10.69 15.12L10.87 16.3C10.89 16.41 11 16.5 11.1 16.47H12.9C13 16.47 13.11 16.39 13.12 16.28L13.3 15.09C13.56 14.97 13.81 14.83 14.05 14.67L15.18 15.12C15.28 15.12 15.4 15.12 15.46 15L16.36 13.45C16.41 13.35 16.38 13.23 16.29 13.16M12 13.5C11.17 13.5 10.5 12.83 10.5 12S11.17 10.5 12 10.5 13.5 11.17 13.5 12C13.5 12.82 12.84 13.5 12 13.5H12"; -var mdiCogOff = "M22.12 21.46L2.4 1.73L1.12 3L4 5.87L2.34 8.73C2.21 8.95 2.27 9.22 2.46 9.37L4.57 11C4.53 11.34 4.5 11.67 4.5 12S4.53 12.65 4.57 12.97L2.46 14.63C2.27 14.78 2.21 15.05 2.34 15.27L4.34 18.73C4.46 18.95 4.73 19.03 4.95 18.95L7.44 17.94C7.96 18.34 8.5 18.68 9.13 18.93L9.5 21.58C9.54 21.82 9.75 22 10 22H14C14.25 22 14.46 21.82 14.5 21.58L14.87 18.93C15.38 18.72 15.83 18.45 16.26 18.14L20.85 22.73L22.12 21.46M12 15.5C10.07 15.5 8.5 13.93 8.5 12C8.5 11.5 8.62 11.08 8.79 10.67L13.33 15.21C12.92 15.39 12.5 15.5 12 15.5M11.74 8.53L8.56 5.35C8.75 5.25 8.93 5.15 9.13 5.07L9.5 2.42C9.54 2.18 9.75 2 10 2H14C14.25 2 14.46 2.18 14.5 2.42L14.87 5.07C15.5 5.32 16.04 5.66 16.56 6.05L19.05 5.05C19.27 4.96 19.54 5.05 19.66 5.27L21.66 8.73C21.78 8.95 21.73 9.22 21.54 9.37L19.43 11C19.47 11.34 19.5 11.67 19.5 12S19.47 12.65 19.43 12.97L21.54 14.63C21.73 14.78 21.78 15.05 21.66 15.27L20.5 17.29L15.47 12.26C15.5 12.18 15.5 12.09 15.5 12C15.5 10.07 13.93 8.5 12 8.5C11.91 8.5 11.83 8.5 11.74 8.53Z"; -var mdiCogOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L4 5.88L2.34 8.73C2.21 8.95 2.27 9.22 2.46 9.37L4.57 11L4.5 12L4.57 12.97L2.46 14.63C2.27 14.78 2.21 15.05 2.34 15.27L4.34 18.73C4.46 18.95 4.73 19.03 4.95 18.95L7.44 17.94C7.96 18.34 8.5 18.68 9.13 18.93L9.5 21.58C9.54 21.82 9.75 22 10 22H14C14.25 22 14.46 21.82 14.5 21.58L14.87 18.93C15.38 18.73 15.83 18.45 16.26 18.15L20.84 22.73L22.11 21.46M10 11.9L12.1 14C12.06 14 12.03 14 12 14C10.9 14 10 13.11 10 12C10 11.97 10 11.94 10 11.9M13.13 17.39L12.76 20H11.24L10.87 17.38C9.68 17.14 8.63 16.5 7.86 15.62L5.43 16.66L4.68 15.36L6.8 13.8C6.4 12.64 6.4 11.37 6.8 10.2L4.69 8.65L5.44 7.35L5.5 7.37L8.4 10.29C8.15 10.8 8 11.38 8 12C8 14.21 9.79 16 12 16C12.62 16 13.2 15.86 13.71 15.6L14.83 16.72C14.31 17.03 13.74 17.26 13.13 17.39M10.06 6.86L8.55 5.35C8.74 5.26 8.93 5.15 9.13 5.07L9.5 2.42C9.54 2.18 9.75 2 10 2H14C14.25 2 14.46 2.18 14.5 2.42L14.87 5.07C15.5 5.32 16.04 5.66 16.56 6.05L19.05 5.05C19.27 4.96 19.54 5.05 19.66 5.27L21.66 8.73C21.79 8.95 21.73 9.22 21.54 9.37L19.43 11L19.5 12L19.43 13L21.54 14.63C21.73 14.78 21.79 15.05 21.66 15.27L20.5 17.29L19.04 15.84L19.32 15.36L17.2 13.81C17.6 12.64 17.6 11.37 17.2 10.2L19.31 8.65L18.56 7.35L16.15 8.39C15.38 7.5 14.32 6.86 13.12 6.62L12.75 4H11.25L10.88 6.61C10.6 6.67 10.32 6.75 10.06 6.86M12 8C14.21 8 16 9.79 16 12C16 12.25 15.97 12.5 15.93 12.73L11.27 8.07C11.5 8.03 11.75 8 12 8Z"; -var mdiCogOutline = "M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M10,22C9.75,22 9.54,21.82 9.5,21.58L9.13,18.93C8.5,18.68 7.96,18.34 7.44,17.94L4.95,18.95C4.73,19.03 4.46,18.95 4.34,18.73L2.34,15.27C2.21,15.05 2.27,14.78 2.46,14.63L4.57,12.97L4.5,12L4.57,11L2.46,9.37C2.27,9.22 2.21,8.95 2.34,8.73L4.34,5.27C4.46,5.05 4.73,4.96 4.95,5.05L7.44,6.05C7.96,5.66 8.5,5.32 9.13,5.07L9.5,2.42C9.54,2.18 9.75,2 10,2H14C14.25,2 14.46,2.18 14.5,2.42L14.87,5.07C15.5,5.32 16.04,5.66 16.56,6.05L19.05,5.05C19.27,4.96 19.54,5.05 19.66,5.27L21.66,8.73C21.79,8.95 21.73,9.22 21.54,9.37L19.43,11L19.5,12L19.43,13L21.54,14.63C21.73,14.78 21.79,15.05 21.66,15.27L19.66,18.73C19.54,18.95 19.27,19.04 19.05,18.95L16.56,17.95C16.04,18.34 15.5,18.68 14.87,18.93L14.5,21.58C14.46,21.82 14.25,22 14,22H10M11.25,4L10.88,6.61C9.68,6.86 8.62,7.5 7.85,8.39L5.44,7.35L4.69,8.65L6.8,10.2C6.4,11.37 6.4,12.64 6.8,13.8L4.68,15.36L5.43,16.66L7.86,15.62C8.63,16.5 9.68,17.14 10.87,17.38L11.24,20H12.76L13.13,17.39C14.32,17.14 15.37,16.5 16.14,15.62L18.57,16.66L19.32,15.36L17.2,13.81C17.6,12.64 17.6,11.37 17.2,10.2L19.31,8.65L18.56,7.35L16.15,8.39C15.38,7.5 14.32,6.86 13.12,6.62L12.75,4H11.25Z"; -var mdiCogRefresh = "M18 14.5C19.1 14.5 20.1 14.9 20.8 15.7L22 14.5V18.5H18L19.8 16.7C19.3 16.3 18.7 16 18 16C16.6 16 15.5 17.1 15.5 18.5S16.6 21 18 21C18.8 21 19.5 20.6 20 20H21.7C21.1 21.5 19.7 22.5 18 22.5C15.8 22.5 14 20.7 14 18.5S15.8 14.5 18 14.5M11.5 18.5C11.5 17.4 11.8 16.4 12.2 15.5H12C10.1 15.5 8.5 13.9 8.5 12S10.1 8.5 12 8.5 15.5 10.1 15.5 12C15.5 12.2 15.5 12.4 15.4 12.5C16.2 12.2 17 12 18 12C18.5 12 19 12.1 19.5 12.2V12C19.5 11.7 19.5 11.3 19.4 11L21.5 9.4C21.7 9.2 21.7 9 21.6 8.8L19.6 5.3C19.5 5 19.3 5 19 5L16.5 6C16 5.6 15.4 5.3 14.8 5L14.4 2.3C14.5 2.2 14.2 2 14 2H10C9.8 2 9.5 2.2 9.5 2.4L9.1 5.1C8.5 5.3 8 5.7 7.4 6L5 5C4.7 5 4.5 5 4.3 5.3L2.3 8.8C2.2 9 2.3 9.2 2.5 9.4L4.6 11C4.6 11.3 4.5 11.7 4.5 12S4.5 12.7 4.6 13L2.5 14.7C2.3 14.9 2.3 15.1 2.4 15.3L4.4 18.8C4.5 19 4.7 19 5 19L7.5 18C8 18.4 8.6 18.7 9.2 19L9.6 21.7C9.6 21.9 9.8 22.1 10.1 22.1H12.6C11.9 21 11.5 19.8 11.5 18.5Z"; -var mdiCogRefreshOutline = "M18 14.5C19.1 14.5 20.1 14.9 20.8 15.7L22 14.5V18.5H18L19.8 16.7C19.3 16.3 18.7 16 18 16C16.6 16 15.5 17.1 15.5 18.5S16.6 21 18 21C18.8 21 19.5 20.6 20 20H21.7C21.1 21.5 19.7 22.5 18 22.5C15.8 22.5 14 20.7 14 18.5S15.8 14.5 18 14.5M11.7 20H11.3L10.9 17.4C9.7 17.2 8.7 16.5 7.9 15.6L5.5 16.6L4.7 15.3L6.8 13.7C6.4 12.5 6.4 11.3 6.8 10.1L4.7 8.7L5.5 7.4L7.9 8.4C8.7 7.5 9.7 6.9 10.9 6.6L11.2 4H12.7L13.1 6.6C14.3 6.8 15.4 7.5 16.1 8.4L18.5 7.4L19.3 8.7L17.2 10.2C17.4 10.8 17.5 11.4 17.5 12H18C18.5 12 19 12.1 19.5 12.2V12L19.4 11L21.5 9.4C21.7 9.2 21.7 9 21.6 8.8L19.6 5.3C19.5 5 19.3 5 19 5L16.5 6C16 5.6 15.4 5.3 14.8 5L14.4 2.3C14.5 2.2 14.2 2 14 2H10C9.8 2 9.5 2.2 9.5 2.4L9.1 5.1C8.5 5.3 8 5.7 7.4 6L5 5C4.7 5 4.5 5 4.3 5.3L2.3 8.8C2.2 9 2.3 9.2 2.5 9.4L4.6 11L4.5 12L4.6 13L2.5 14.7C2.3 14.9 2.3 15.1 2.4 15.3L4.4 18.8C4.5 19 4.7 19 5 19L7.5 18C8 18.4 8.6 18.7 9.2 19L9.6 21.7C9.6 21.9 9.8 22.1 10.1 22.1H12.6C12.1 21.4 11.9 20.7 11.7 20M16 12.3V12C16 9.8 14.2 8 12 8S8 9.8 8 12C8 14.2 9.8 16 12 16C12.7 14.3 14.2 12.9 16 12.3M10 12C10 10.9 10.9 10 12 10S14 10.9 14 12 13.1 14 12 14 10 13.1 10 12Z"; -var mdiCogSync = "M11.5 18.5C11.5 17.4 11.8 16.4 12.2 15.5H12C10.1 15.5 8.5 13.9 8.5 12S10.1 8.5 12 8.5 15.5 10.1 15.5 12C15.5 12.2 15.5 12.4 15.4 12.5C16.2 12.2 17 12 18 12C18.5 12 19 12.1 19.5 12.2V12C19.5 11.7 19.5 11.3 19.4 11L21.5 9.4C21.7 9.2 21.7 9 21.6 8.8L19.6 5.3C19.5 5 19.3 5 19 5L16.5 6C16 5.6 15.4 5.3 14.8 5L14.4 2.3C14.5 2.2 14.2 2 14 2H10C9.8 2 9.5 2.2 9.5 2.4L9.1 5.1C8.5 5.3 8 5.7 7.4 6L5 5C4.7 5 4.5 5 4.3 5.3L2.3 8.8C2.2 9 2.3 9.2 2.5 9.4L4.6 11C4.6 11.3 4.5 11.7 4.5 12S4.5 12.7 4.6 13L2.5 14.7C2.3 14.9 2.3 15.1 2.4 15.3L4.4 18.8C4.5 19 4.7 19 5 19L7.5 18C8 18.4 8.6 18.7 9.2 19L9.6 21.7C9.6 21.9 9.8 22.1 10.1 22.1H12.6C11.9 21 11.5 19.8 11.5 18.5M18 14.5V13L15.8 15.2L18 17.4V16C19.4 16 20.5 17.1 20.5 18.5C20.5 18.9 20.4 19.3 20.2 19.6L21.3 20.7C22.5 18.9 22 16.4 20.2 15.2C19.6 14.7 18.8 14.5 18 14.5M18 21C16.6 21 15.5 19.9 15.5 18.5C15.5 18.1 15.6 17.7 15.8 17.4L14.7 16.3C13.5 18.1 14 20.6 15.8 21.8C16.5 22.2 17.2 22.5 18 22.5V24L20.2 21.8L18 19.5V21Z"; -var mdiCogSyncOutline = "M11.7 20H11.3L10.9 17.4C9.7 17.2 8.7 16.5 7.9 15.6L5.5 16.6L4.7 15.3L6.8 13.7C6.4 12.5 6.4 11.3 6.8 10.1L4.7 8.7L5.5 7.4L7.9 8.4C8.7 7.5 9.7 6.9 10.9 6.6L11.2 4H12.7L13.1 6.6C14.3 6.8 15.4 7.5 16.1 8.4L18.5 7.4L19.3 8.7L17.2 10.2C17.4 10.8 17.5 11.4 17.5 12H18C18.5 12 19 12.1 19.5 12.2V12L19.4 11L21.5 9.4C21.7 9.2 21.7 9 21.6 8.8L19.6 5.3C19.5 5 19.3 5 19 5L16.5 6C16 5.6 15.4 5.3 14.8 5L14.4 2.3C14.5 2.2 14.2 2 14 2H10C9.8 2 9.5 2.2 9.5 2.4L9.1 5.1C8.5 5.3 8 5.7 7.4 6L5 5C4.7 5 4.5 5 4.3 5.3L2.3 8.8C2.2 9 2.3 9.2 2.5 9.4L4.6 11L4.5 12L4.6 13L2.5 14.7C2.3 14.9 2.3 15.1 2.4 15.3L4.4 18.8C4.5 19 4.7 19 5 19L7.5 18C8 18.4 8.6 18.7 9.2 19L9.6 21.7C9.6 21.9 9.8 22.1 10.1 22.1H12.6C12.1 21.4 11.9 20.7 11.7 20M16 12.3V12C16 9.8 14.2 8 12 8S8 9.8 8 12C8 14.2 9.8 16 12 16C12.7 14.3 14.2 12.9 16 12.3M10 12C10 10.9 10.9 10 12 10S14 10.9 14 12 13.1 14 12 14 10 13.1 10 12M18 14.5V13L15.8 15.2L18 17.4V16C19.4 16 20.5 17.1 20.5 18.5C20.5 18.9 20.4 19.3 20.2 19.6L21.3 20.7C22.5 18.9 22 16.4 20.2 15.2C19.6 14.7 18.8 14.5 18 14.5M18 21C16.6 21 15.5 19.9 15.5 18.5C15.5 18.1 15.6 17.7 15.8 17.4L14.7 16.3C13.5 18.1 14 20.6 15.8 21.8C16.5 22.2 17.2 22.5 18 22.5V24L20.2 21.8L18 19.5V21Z"; -var mdiCogTransfer = "M14 18V16L10 19.5L14 23V21H17V18H14M22 15.5L18 12V14H15V17H18V19L22 15.5M21.66 8.73L19.66 5.27C19.54 5.05 19.28 4.96 19.05 5.05L16.56 6.05C16.05 5.64 15.5 5.31 14.87 5.05L14.5 2.42C14.46 2.18 14.25 2 14 2H10C9.75 2 9.54 2.18 9.5 2.42L9.13 5.07C8.5 5.33 7.96 5.66 7.44 6.07L5 5.05C4.77 4.96 4.5 5.05 4.39 5.27L2.39 8.73C2.26 8.94 2.31 9.22 2.5 9.37L4.57 11C4.53 11.33 4.5 11.67 4.5 12C4.5 12.33 4.53 12.67 4.57 13L2.46 14.63C2.26 14.78 2.21 15.06 2.34 15.27L4.34 18.73C4.45 19 4.74 19.11 5 19L5 19L7.5 18C7.74 18.19 8 18.37 8.26 18.53L11.77 15.53C9.84 15.4 8.38 13.73 8.5 11.8C8.65 9.87 10.32 8.41 12.25 8.55C13.69 8.64 14.92 9.62 15.35 11H19.43L21.54 9.37C21.73 9.22 21.78 8.94 21.66 8.73Z"; -var mdiCogTransferOutline = "M15 17V14H18V12L22 15.5L18 19V17H15M17 18V21H14V23L10 19.5L14 16V18H17M12 8C9.79 8 8 9.8 8 12C8 13.91 9.35 15.54 11.21 15.92L16 11.86C15.93 9.71 14.16 8 12 8M12 14C10.9 14 10 13.11 10 12S10.9 10 12 10 14 10.9 14 12 13.11 14 12 14M21.66 8.73L19.66 5.27C19.54 5.05 19.28 4.96 19.05 5.05L16.56 6.05C16.05 5.64 15.5 5.31 14.87 5.05L14.5 2.42C14.46 2.18 14.25 2 14 2H10C9.75 2 9.54 2.18 9.5 2.42L9.13 5.07C8.5 5.33 7.96 5.66 7.44 6.07L5 5.05C4.77 4.96 4.5 5.05 4.39 5.27L2.39 8.73C2.26 8.94 2.31 9.22 2.5 9.37L4.57 11L4.5 12L4.57 13L2.46 14.63C2.26 14.78 2.21 15.06 2.34 15.27L4.34 18.73C4.45 19 4.74 19.11 5 19L5 19L7.5 18C7.74 18.19 8 18.37 8.26 18.53L9.91 17.13C9.14 16.8 8.46 16.31 7.91 15.68L5.5 16.68L4.73 15.38L6.8 13.8C6.4 12.63 6.4 11.37 6.8 10.2L4.69 8.65L5.44 7.35L7.85 8.35C8.63 7.45 9.68 6.82 10.85 6.57L11.25 4H12.75L13.12 6.62C14.29 6.86 15.34 7.5 16.12 8.39L18.53 7.39L19.28 8.69L17.2 10.2C17.29 10.46 17.36 10.73 17.4 11H19.4L21.5 9.37C21.72 9.23 21.78 8.95 21.66 8.73M12 8C9.79 8 8 9.8 8 12C8 13.91 9.35 15.54 11.21 15.92L16 11.86C15.93 9.71 14.16 8 12 8M12 14C10.9 14 10 13.11 10 12S10.9 10 12 10 14 10.9 14 12 13.11 14 12 14M12 8C9.79 8 8 9.8 8 12C8 13.91 9.35 15.54 11.21 15.92L16 11.86C15.93 9.71 14.16 8 12 8M12 14C10.9 14 10 13.11 10 12S10.9 10 12 10 14 10.9 14 12 13.11 14 12 14Z"; -var mdiCogs = "M15.9,18.45C17.25,18.45 18.35,17.35 18.35,16C18.35,14.65 17.25,13.55 15.9,13.55C14.54,13.55 13.45,14.65 13.45,16C13.45,17.35 14.54,18.45 15.9,18.45M21.1,16.68L22.58,17.84C22.71,17.95 22.75,18.13 22.66,18.29L21.26,20.71C21.17,20.86 21,20.92 20.83,20.86L19.09,20.16C18.73,20.44 18.33,20.67 17.91,20.85L17.64,22.7C17.62,22.87 17.47,23 17.3,23H14.5C14.32,23 14.18,22.87 14.15,22.7L13.89,20.85C13.46,20.67 13.07,20.44 12.71,20.16L10.96,20.86C10.81,20.92 10.62,20.86 10.54,20.71L9.14,18.29C9.05,18.13 9.09,17.95 9.22,17.84L10.7,16.68L10.65,16L10.7,15.31L9.22,14.16C9.09,14.05 9.05,13.86 9.14,13.71L10.54,11.29C10.62,11.13 10.81,11.07 10.96,11.13L12.71,11.84C13.07,11.56 13.46,11.32 13.89,11.15L14.15,9.29C14.18,9.13 14.32,9 14.5,9H17.3C17.47,9 17.62,9.13 17.64,9.29L17.91,11.15C18.33,11.32 18.73,11.56 19.09,11.84L20.83,11.13C21,11.07 21.17,11.13 21.26,11.29L22.66,13.71C22.75,13.86 22.71,14.05 22.58,14.16L21.1,15.31L21.15,16L21.1,16.68M6.69,8.07C7.56,8.07 8.26,7.37 8.26,6.5C8.26,5.63 7.56,4.92 6.69,4.92A1.58,1.58 0 0,0 5.11,6.5C5.11,7.37 5.82,8.07 6.69,8.07M10.03,6.94L11,7.68C11.07,7.75 11.09,7.87 11.03,7.97L10.13,9.53C10.08,9.63 9.96,9.67 9.86,9.63L8.74,9.18L8,9.62L7.81,10.81C7.79,10.92 7.7,11 7.59,11H5.79C5.67,11 5.58,10.92 5.56,10.81L5.4,9.62L4.64,9.18L3.5,9.63C3.41,9.67 3.3,9.63 3.24,9.53L2.34,7.97C2.28,7.87 2.31,7.75 2.39,7.68L3.34,6.94L3.31,6.5L3.34,6.06L2.39,5.32C2.31,5.25 2.28,5.13 2.34,5.03L3.24,3.47C3.3,3.37 3.41,3.33 3.5,3.37L4.63,3.82L5.4,3.38L5.56,2.19C5.58,2.08 5.67,2 5.79,2H7.59C7.7,2 7.79,2.08 7.81,2.19L8,3.38L8.74,3.82L9.86,3.37C9.96,3.33 10.08,3.37 10.13,3.47L11.03,5.03C11.09,5.13 11.07,5.25 11,5.32L10.03,6.06L10.06,6.5L10.03,6.94Z"; -var mdiCollage = "M5,3C3.89,3 3,3.89 3,5V19C3,20.11 3.89,21 5,21H11V3M13,3V11H21V5C21,3.89 20.11,3 19,3M13,13V21H19C20.11,21 21,20.11 21,19V13"; -var mdiCollapseAll = "M14,4H4V14H2V4A2,2 0 0,1 4,2H14V4M18,6H8A2,2 0 0,0 6,8V18H8V8H18V6M22,12V20A2,2 0 0,1 20,22H12A2,2 0 0,1 10,20V12A2,2 0 0,1 12,10H20A2,2 0 0,1 22,12M20,15H12V17H20V15Z"; -var mdiCollapseAllOutline = "M4,2A2,2 0 0,0 2,4V14H4V4H14V2H4M8,6A2,2 0 0,0 6,8V18H8V8H18V6H8M20,12V20H12V12H20M20,10H12A2,2 0 0,0 10,12V20A2,2 0 0,0 12,22H20A2,2 0 0,0 22,20V12A2,2 0 0,0 20,10M19,17H13V15H19V17Z"; -var mdiColorHelper = "M0,24H24V20H0V24Z"; -var mdiComma = "M7,3H16.95V12.96L12.96,20.94H8L11.97,12.96H7V3Z"; -var mdiCommaBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,13V7H9V13H12L10,17H13L15,13Z"; -var mdiCommaBoxOutline = "M10,17L12,13H9V7H15V13L13,17H10M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiCommaCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15,13L13,17H10L12,13H9V7H15V13Z"; -var mdiCommaCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M10,17H13L15,13V7H9V13H12L10,17Z"; -var mdiComment = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9Z"; -var mdiCommentAccount = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M16,14V13C16,11.67 13.33,11 12,11C10.67,11 8,11.67 8,13V14H16M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6Z"; -var mdiCommentAccountOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16,14H8V13C8,11.67 10.67,11 12,11C13.33,11 16,11.67 16,13V14M12,6A2,2 0 0,1 14,8A2,2 0 0,1 12,10A2,2 0 0,1 10,8A2,2 0 0,1 12,6Z"; -var mdiCommentAlert = "M9 22C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V16C22 17.1 21.1 18 20 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9M13 11V5H11V11M13 15V13H11V15H13Z"; -var mdiCommentAlertOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M13,10H11V6H13V10M13,14H11V12H13V14Z"; -var mdiCommentArrowLeft = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M16 11H11.5L13.3 12.8L12 14L8 10L12 6L13.2 7.2L11.5 9H16V11Z"; -var mdiCommentArrowLeftOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H13.1L10 19.1V16H4V4H20V16M16 11V9H11.5L13.3 7.2L12 6L8 10L12 14L13.2 12.8L11.5 11H16Z"; -var mdiCommentArrowRight = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M12 14L10.8 12.8L12.6 11H8V9H12.5L10.7 7.2L12 6L16 10L12 14Z"; -var mdiCommentArrowRightOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H13.1L10 19.1V16H4V4H20V16M8 9V11H12.5L10.7 12.8L12 14L16 10L12 6L10.8 7.2L12.5 9H8Z"; -var mdiCommentBookmark = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M19 13L16.5 11.5L14 13V5H19V13Z"; -var mdiCommentBookmarkOutline = "M9 22C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V16C22 17.1 21.1 18 20 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9M10 16V19.1L13.1 16H20V4H4V16H10M18 14V6H13V14L15.5 12.5L18 14Z"; -var mdiCommentCheck = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,15L18,7L16.59,5.58L10,12.17L7.41,9.59L6,11L10,15Z"; -var mdiCommentCheckOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16.5,8L11,13.5L7.5,10L8.91,8.59L11,10.67L15.09,6.59L16.5,8Z"; -var mdiCommentEdit = "M20 2H4C2.89 2 2 2.89 2 4V16C2 17.11 2.9 18 4 18H8V21C8 21.55 8.45 22 9 22H9.5C9.75 22 10 21.9 10.2 21.71L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.89 21.1 2 20 2M9.08 15H7V12.91L13.17 6.72L15.24 8.8L9.08 15M16.84 7.2L15.83 8.21L13.76 6.18L14.77 5.16C14.97 4.95 15.31 4.94 15.55 5.16L16.84 6.41C17.05 6.62 17.06 6.96 16.84 7.2Z"; -var mdiCommentEditOutline = "M9 22C8.45 22 8 21.55 8 21V18H4C2.9 18 2 17.11 2 16V4C2 2.89 2.9 2 4 2H20C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H13.9L10.2 21.71C10 21.9 9.75 22 9.5 22H9M10 16V19.08L13.08 16H20V4H4V16H10M15.84 8.2L14.83 9.21L12.76 7.18L13.77 6.16C13.97 5.95 14.31 5.94 14.55 6.16L15.84 7.41C16.05 7.62 16.06 7.96 15.84 8.2M8 11.91L12.17 7.72L14.24 9.8L10.08 14H8V11.91Z"; -var mdiCommentEye = "M20,12V16C20,17.11 19.11,18 18,18H13.9L10.2,21.71C10,21.89 9.76,22 9.5,22H9A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V6C2,4.89 2.9,4 4,4H9.5C8.95,4.67 8.5,5.42 8.14,6.25L7.85,7L8.14,7.75C9.43,10.94 12.5,13 16,13C17.44,13 18.8,12.63 20,12M16,6C16.56,6 17,6.44 17,7C17,7.56 16.56,8 16,8C15.44,8 15,7.56 15,7C15,6.44 15.44,6 16,6M16,3C18.73,3 21.06,4.66 22,7C21.06,9.34 18.73,11 16,11C13.27,11 10.94,9.34 10,7C10.94,4.66 13.27,3 16,3M16,4.5A2.5,2.5 0 0,0 13.5,7A2.5,2.5 0 0,0 16,9.5A2.5,2.5 0 0,0 18.5,7A2.5,2.5 0 0,0 16,4.5"; -var mdiCommentEyeOutline = "M16,6C16.56,6 17,6.44 17,7C17,7.56 16.56,8 16,8C15.44,8 15,7.56 15,7C15,6.44 15.44,6 16,6M16,3C18.73,3 21.06,4.66 22,7C21.06,9.34 18.73,11 16,11C13.27,11 10.94,9.34 10,7C10.94,4.66 13.27,3 16,3M16,4.5A2.5,2.5 0 0,0 13.5,7A2.5,2.5 0 0,0 16,9.5A2.5,2.5 0 0,0 18.5,7A2.5,2.5 0 0,0 16,4.5M18,12.75V16H13.08L10,19.08V16H4V6H8.27C8.59,5.27 9,4.6 9.5,4H4A2,2 0 0,0 2,6V16C2,17.11 2.9,18 4,18H8V21A1,1 0 0,0 9,22H9.5C9.75,22 10,21.9 10.2,21.71L13.9,18H18C19.11,18 20,17.11 20,16V12C19.37,12.33 18.7,12.58 18,12.75Z"; -var mdiCommentFlash = "M22.5 16H20.3L22 12H17V18H19V23L22.5 16M15 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V10H15V18Z"; -var mdiCommentFlashOutline = "M22.5 16H20.3L22 12H17V18H19V23L22.5 16M15 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V10H20V4H4V16H10V19.1L13.1 16H15V18Z"; -var mdiCommentMinus = "M20 2H4C2.9 2 2 2.89 2 4V16C2 17.11 2.9 18 4 18H8V21C8 21.55 8.45 22 9 22H9.5C9.75 22 10 21.9 10.2 21.71L13.9 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M16 11H8V9H16V11Z"; -var mdiCommentMinusOutline = "M16 11H8V9H16V11M22 4V16C22 17.11 21.11 18 20 18H13.9L10.2 21.71C10 21.9 9.75 22 9.5 22H9C8.45 22 8 21.55 8 21V18H4C2.9 18 2 17.11 2 16V4C2 2.89 2.9 2 4 2H20C21.11 2 22 2.9 22 4M20 4H4V16H10V19.08L13.08 16H20V4"; -var mdiCommentMultiple = "M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7A2,2 0 0,1 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.89 12.76,23 12.5,23H12M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15Z"; -var mdiCommentMultipleOutline = "M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7C5,5.89 5.9,5 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.9 12.75,23 12.5,23V23H12M13,17V20.08L16.08,17H21V7H7V17H13M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15Z"; -var mdiCommentOff = "M22.11 21.46L20.84 22.73L16.11 18H13.9L10.2 21.71C10 21.9 9.75 22 9.5 22H9C8.45 22 8 21.55 8 21V18H4C2.9 18 2 17.11 2 16V4 3.9L1.11 3L2.39 1.73L22.11 21.46M22 16V4C22 2.9 21.11 2 20 2H5.2L20.95 17.75C21.57 17.41 22 16.76 22 16Z"; -var mdiCommentOffOutline = "M7.2 4L5.2 2H20C21.11 2 22 2.9 22 4V16C22 16.76 21.57 17.41 20.95 17.75L19.2 16H20V4H7.2M22.11 21.46L20.84 22.73L16.11 18H13.9L10.2 21.71C10 21.9 9.75 22 9.5 22H9C8.45 22 8 21.55 8 21V18H4C2.9 18 2 17.11 2 16V4C2 3.97 2 3.93 2 3.9L1.11 3L2.39 1.73L22.11 21.46M14.11 16L4 5.89V16H10V19.08L13.08 16H14.11Z"; -var mdiCommentOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10Z"; -var mdiCommentPlus = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22H9M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z"; -var mdiCommentPlusOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z"; -var mdiCommentProcessing = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M17,11V9H15V11H17M13,11V9H11V11H13M9,11V9H7V11H9Z"; -var mdiCommentProcessingOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M17,11H15V9H17V11M13,11H11V9H13V11M9,11H7V9H9V11Z"; -var mdiCommentQuestion = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2M12.19,5.5C11.3,5.5 10.59,5.68 10.05,6.04C9.5,6.4 9.22,7 9.27,7.69H11.24C11.24,7.41 11.34,7.2 11.5,7.06C11.7,6.92 11.92,6.85 12.19,6.85C12.5,6.85 12.77,6.93 12.95,7.11C13.13,7.28 13.22,7.5 13.22,7.8C13.22,8.08 13.14,8.33 13,8.54C12.83,8.76 12.62,8.94 12.36,9.08C11.84,9.4 11.5,9.68 11.29,9.92C11.1,10.16 11,10.5 11,11H13C13,10.72 13.05,10.5 13.14,10.32C13.23,10.15 13.4,10 13.66,9.85C14.12,9.64 14.5,9.36 14.79,9C15.08,8.63 15.23,8.24 15.23,7.8C15.23,7.1 14.96,6.54 14.42,6.12C13.88,5.71 13.13,5.5 12.19,5.5M11,12V14H13V12H11Z"; -var mdiCommentQuestionOutline = "M4,2A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H8V21A1,1 0 0,0 9,22H9.5V22C9.75,22 10,21.9 10.2,21.71L13.9,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2H4M4,4H20V16H13.08L10,19.08V16H4V4M12.19,5.5C11.3,5.5 10.59,5.68 10.05,6.04C9.5,6.4 9.22,7 9.27,7.69C0.21,7.69 6.57,7.69 11.24,7.69C11.24,7.41 11.34,7.2 11.5,7.06C11.7,6.92 11.92,6.85 12.19,6.85C12.5,6.85 12.77,6.93 12.95,7.11C13.13,7.28 13.22,7.5 13.22,7.8C13.22,8.08 13.14,8.33 13,8.54C12.83,8.76 12.62,8.94 12.36,9.08C11.84,9.4 11.5,9.68 11.29,9.92C11.1,10.16 11,10.5 11,11H13C13,10.72 13.05,10.5 13.14,10.32C13.23,10.15 13.4,10 13.66,9.85C14.12,9.64 14.5,9.36 14.79,9C15.08,8.63 15.23,8.24 15.23,7.8C15.23,7.1 14.96,6.54 14.42,6.12C13.88,5.71 13.13,5.5 12.19,5.5M11,12V14H13V12H11Z"; -var mdiCommentQuote = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M11 13H7V8.8L8.3 6H10.3L8.9 9H11V13M17 13H13V8.8L14.3 6H16.3L14.9 9H17V13Z"; -var mdiCommentQuoteOutline = "M9 22C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V16C22 17.1 21.1 18 20 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9M10 16V19.1L13.1 16H20V4H4V16H10M16.3 6L14.9 9H17V13H13V8.8L14.3 6H16.3M10.3 6L8.9 9H11V13H7V8.8L8.3 6H10.3Z"; -var mdiCommentRemove = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M9.41,6L8,7.41L10.59,10L8,12.59L9.41,14L12,11.41L14.59,14L16,12.59L13.41,10L16,7.41L14.59,6L12,8.59L9.41,6Z"; -var mdiCommentRemoveOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M9.41,6L12,8.59L14.59,6L16,7.41L13.41,10L16,12.59L14.59,14L12,11.41L9.41,14L8,12.59L10.59,10L8,7.41L9.41,6Z"; -var mdiCommentSearch = "M15.5,2C18,2 20,4 20,6.5C20,7.38 19.75,8.2 19.31,8.89L22.41,12L21,13.39L17.89,10.31C17.2,10.75 16.38,11 15.5,11C13,11 11,9 11,6.5C11,4 13,2 15.5,2M15.5,4A2.5,2.5 0 0,0 13,6.5A2.5,2.5 0 0,0 15.5,9A2.5,2.5 0 0,0 18,6.5A2.5,2.5 0 0,0 15.5,4M4,4H9.5C9.19,4.79 9,5.64 9,6.5A6.5,6.5 0 0,0 15.5,13C16.18,13 16.83,12.89 17.46,12.69L20,15.23V16A2,2 0 0,1 18,18H13.9L10.2,21.71C10,21.89 9.76,22 9.5,22H9A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V6A2,2 0 0,1 4,4Z"; -var mdiCommentSearchOutline = "M4,4H9.5C9.25,4.64 9.09,5.31 9.04,6H4V16H10V19.08L13.08,16H18V13.23L20,15.23V16A2,2 0 0,1 18,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22H9A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V6C2,4.89 2.9,4 4,4M15.5,2C18,2 20,4 20,6.5C20,7.38 19.75,8.2 19.31,8.89L22.41,12L21,13.39L17.89,10.31C17.2,10.75 16.38,11 15.5,11C13,11 11,9 11,6.5C11,4 13,2 15.5,2M15.5,4A2.5,2.5 0 0,0 13,6.5A2.5,2.5 0 0,0 15.5,9A2.5,2.5 0 0,0 18,6.5A2.5,2.5 0 0,0 15.5,4Z"; -var mdiCommentText = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M5,5V7H19V5H5M5,9V11H13V9H5M5,13V15H15V13H5Z"; -var mdiCommentTextMultiple = "M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7A2,2 0 0,1 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.89 12.76,23 12.5,23H12M9,9V11H19V9H9M9,13V15H17V13H9Z"; -var mdiCommentTextMultipleOutline = "M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7A2,2 0 0,1 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.89 12.76,23 12.5,23H12M13,17V20.08L16.08,17H21V7H7V17H13M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15M9,9H19V11H9V9M9,13H17V15H9V13Z"; -var mdiCommentTextOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M6,7H18V9H6V7M6,11H15V13H6V11Z"; -var mdiCompare = "M19,3H14V5H19V18L14,12V21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,18H5L10,12M10,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H10V23H12V1H10V3Z"; -var mdiCompareHorizontal = "M9 14H2V16H9V19L13 15L9 11V14M15 13V10H22V8H15V5L11 9L15 13Z"; -var mdiCompareVertical = "M14 15V22H16V15H19L15 11L11 15H14M13 9H10V2H8V9H5L9 13L13 9Z"; -var mdiCompass = "M14.19,14.19L6,18L9.81,9.81L18,6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,10.9A1.1,1.1 0 0,0 10.9,12A1.1,1.1 0 0,0 12,13.1A1.1,1.1 0 0,0 13.1,12A1.1,1.1 0 0,0 12,10.9Z"; -var mdiCompassOff = "M1,3.5L2.28,2.25L21.75,21.72L20.5,23L17.7,20.22C16.08,21.34 14.12,22 12,22A10,10 0 0,1 2,12C2,9.88 2.66,7.92 3.78,6.3L1,3.5M6,18L12.47,15L9,11.53L6,18M18,6L11.56,9L6.33,3.76C7.94,2.65 9.9,2 12,2A10,10 0 0,1 22,12C22,14.1 21.35,16.06 20.24,17.67L15,12.44L18,6Z"; -var mdiCompassOffOutline = "M1,3.5L2.28,2.25L21.75,21.72L20.5,23L17.7,20.22C16.08,21.34 14.12,22 12,22A10,10 0 0,1 2,12C2,9.88 2.66,7.92 3.78,6.3L1,3.5M7,17L9.39,11.91L5.23,7.74C4.45,9 4,10.44 4,12A8,8 0 0,0 12,20C13.56,20 15,19.55 16.26,18.77L12.09,14.61L7,17M17,7L14.62,12.05L11.95,9.38L17,7M12,2A10,10 0 0,1 22,12C22,14.1 21.35,16.06 20.24,17.67L18.8,16.22C19.56,15 20,13.55 20,12A8,8 0 0,0 12,4C10.45,4 9,4.44 7.78,5.2L6.33,3.76C7.94,2.65 9.9,2 12,2Z"; -var mdiCompassOutline = "M7,17L10.2,10.2L17,7L13.8,13.8L7,17M12,11.1A0.9,0.9 0 0,0 11.1,12A0.9,0.9 0 0,0 12,12.9A0.9,0.9 0 0,0 12.9,12A0.9,0.9 0 0,0 12,11.1M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiCompassRose = "M15 9L12 0L9 9L0 12L9 15L12 24L15 15L24 12L15 9M4 12L10 10L11 12H4M12 20L10 14L12 13V20M12 4L14 10L12 11V4M14 14L13 12H20L14 14M8.7 17.3L5 19L6.7 15.3L8.3 15.8L8.7 17.3M17.3 15.3L19 19L15.3 17.3L15.8 15.7L17.3 15.3M6.7 8.7L5 5L8.7 6.7L8.2 8.2L6.7 8.7M15.3 6.7L19 5L17.3 8.7L15.7 8.2L15.3 6.7Z"; -var mdiConcourseCi = "M10.94 12.09A1.06 1.06 0 1 0 11.91 10.95A1.06 1.06 0 0 0 10.94 12.09M13.54 13.21A2.62 2.62 0 0 1 12.58 13.88L12.57 13.89A11.17 11.17 0 0 0 13.87 16.92A4.83 4.83 0 0 1 12.92 17.3A4.9 4.9 0 0 1 12.24 17.44L12.16 17.45L12.06 17.46L11.87 17.47C11.75 17.47 11.64 17.5 11.5 17.47A5 5 0 0 1 10.79 17.4A5.13 5.13 0 0 1 10.09 17.23A4.78 4.78 0 0 1 9.46 17A5 5 0 0 1 8.93 16.68A4.45 4.45 0 0 1 8.5 16.38C8.38 16.29 8.28 16.19 8.2 16.12L7.95 15.87C7.95 15.87 8 15.97 8.16 16.15C8.24 16.23 8.32 16.34 8.44 16.45A4.93 4.93 0 0 0 8.82 16.82A5.21 5.21 0 0 0 9.33 17.2A5.08 5.08 0 0 0 9.96 17.56A5.43 5.43 0 0 0 10.68 17.85A5.5 5.5 0 0 0 11.46 18.03C11.6 18.06 11.74 18.07 11.88 18.08L12.07 18.1H12.27A5.5 5.5 0 0 0 13.07 18.05A5.61 5.61 0 0 0 14.39 17.7Q14.63 18.03 14.9 18.34L14.87 18.36L14.66 18.5H14.62C14.59 18.53 14.67 18.5 14.66 18.5H14.64L14.58 18.54L14.44 18.61L14.37 18.64L14.33 18.66L14.32 18.67H14.31C14.3 18.68 14.36 18.66 14.33 18.67H14.32L14.17 18.74Q14.09 18.77 14 18.81V18.82L13.93 18.84L13.84 18.87A6.5 6.5 0 0 1 12.25 19.26A6.4 6.4 0 0 1 11.31 19.3H11.19L11.07 19.29L10.81 19.27C10.65 19.24 10.5 19.23 10.33 19.2A6.59 6.59 0 0 1 8.5 18.57C8.35 18.5 8.21 18.43 8.08 18.35C7.95 18.27 7.83 18.19 7.71 18.11A6.64 6.64 0 0 1 7.07 17.6A6.35 6.35 0 0 1 6.57 17.11C6.43 16.96 6.32 16.82 6.22 16.7C6.13 16.58 6.06 16.5 6 16.42L5.94 16.32L6 16.43C6.04 16.5 6.1 16.6 6.18 16.73C6.26 16.86 6.36 17 6.5 17.18A6.5 6.5 0 0 0 6.94 17.73A6.86 6.86 0 0 0 7.55 18.31C7.67 18.41 7.78 18.5 7.91 18.6C8.04 18.7 8.17 18.79 8.31 18.88A7.12 7.12 0 0 0 9.21 19.37A7.2 7.2 0 0 0 10.2 19.74C10.37 19.8 10.55 19.83 10.73 19.87L11 19.92L11.11 19.94L11.25 19.96A7.27 7.27 0 0 0 12.29 20.03A7.38 7.38 0 0 0 14.14 19.77L14.23 19.74L14.28 19.73L14.34 19.71C14.4 19.69 14.46 19.68 14.5 19.66L14.68 19.6L14.85 19.54L15 19.5L15.06 19.45H15.08L15.13 19.43L15.14 19.42L15.17 19.41L15.39 19.3L15.67 19.16C15.86 19.34 16.06 19.5 16.26 19.69C16.26 19.69 17.23 20.69 17.76 20.28C18.26 19.89 17.68 18.68 17.68 18.68A11.2 11.2 0 0 0 13.54 13.21M10.16 11.57L10.15 11.56A11.18 11.18 0 0 0 6.91 11.11A4.72 4.72 0 0 1 7.34 9.39L7.38 9.31L7.42 9.23L7.5 9.06C7.57 8.96 7.62 8.85 7.69 8.75A4.97 4.97 0 0 1 8.14 8.17A5.05 5.05 0 0 1 8.66 7.67A4.77 4.77 0 0 1 9.2 7.27A5.06 5.06 0 0 1 9.74 7A4.88 4.88 0 0 1 10.22 6.78C10.37 6.72 10.5 6.69 10.61 6.66C10.82 6.6 10.95 6.58 10.95 6.58S10.82 6.59 10.6 6.61C10.5 6.63 10.35 6.64 10.19 6.68A4.94 4.94 0 0 0 9.67 6.82A5.34 5.34 0 0 0 9.08 7.05A5.08 5.08 0 0 0 8.45 7.39A5.47 5.47 0 0 0 7.82 7.84A5.55 5.55 0 0 0 7.25 8.41C7.16 8.5 7.08 8.63 7 8.74L6.88 8.89L6.82 8.97L6.76 9.06A5.5 5.5 0 0 0 6.38 9.77A5.61 5.61 0 0 0 5.97 11.14L5.96 11.16C5.7 11.18 5.43 11.21 5.16 11.26V11.12L5.17 10.87V10.82C5.17 10.78 5.16 10.88 5.16 10.87V10.84L5.17 10.77L5.18 10.62L5.19 10.54V10.5H5.2V10.47C5.2 10.46 5.19 10.5 5.19 10.5L5.22 10.32L5.24 10.14L5.25 10.12V10.11L5.24 10.13L5.25 10.12V10.11L5.26 10.07L5.27 9.97A6.5 6.5 0 0 1 6.26 7.59L6.32 7.5L6.39 7.4L6.55 7.19C6.65 7.07 6.74 6.94 6.86 6.82A6.61 6.61 0 0 1 8.37 5.59C8.5 5.5 8.64 5.43 8.77 5.37C8.9 5.29 9.04 5.24 9.17 5.18A6.76 6.76 0 0 1 9.94 4.9A6.5 6.5 0 0 1 10.62 4.74C10.82 4.69 11 4.68 11.15 4.66C11.3 4.64 11.42 4.64 11.5 4.63L11.62 4.62H11.5C11.42 4.62 11.3 4.61 11.15 4.61C11 4.61 10.82 4.61 10.61 4.63A6.41 6.41 0 0 0 9.9 4.73A7.03 7.03 0 0 0 9.08 4.93C8.94 5 8.79 5.03 8.65 5.09C8.5 5.14 8.35 5.21 8.2 5.28A7.26 7.26 0 0 0 7.31 5.78A7.33 7.33 0 0 0 6.47 6.42C6.33 6.54 6.2 6.68 6.07 6.8L5.9 7L5.82 7.09L5.72 7.19A7.25 7.25 0 0 0 5.12 8.04A7.38 7.38 0 0 0 4.36 9.75L4.33 9.84L4.32 9.89L4.3 9.95L4.25 10.13L4.21 10.29L4.18 10.5L4.15 10.63C4.14 10.65 4.14 10.67 4.14 10.7L4.13 10.72V10.78L4.12 10.81L4.09 11.06L4.05 11.5C3.79 11.57 3.53 11.65 3.28 11.74C3.28 11.74 1.93 12.05 2 12.72C2.08 13.35 3.41 13.5 3.41 13.5A11.21 11.21 0 0 0 10.24 12.74A2.62 2.62 0 0 1 10.16 11.57M19.7 10.84A7.19 7.19 0 0 0 19.53 9.79C19.5 9.62 19.43 9.45 19.38 9.27L19.3 9.03L19.26 8.91L19.21 8.77A7.23 7.23 0 0 0 18.75 7.83A7.35 7.35 0 0 0 17.62 6.35L17.55 6.28L17.5 6.25L17.47 6.2L17.33 6.08L17.21 5.97L17.06 5.85L16.94 5.75L16.89 5.7L16.88 5.69H16.87L16.83 5.66L16.8 5.64L16.59 5.5L16.32 5.31Q16.42 4.88 16.5 4.45S16.88 3.11 16.25 2.85C15.67 2.61 14.91 3.72 14.91 3.72A11.21 11.21 0 0 0 12.25 10.05A2.63 2.63 0 0 1 13.32 10.55A11.2 11.2 0 0 0 15.25 8A4.73 4.73 0 0 1 16.08 8.66A4.81 4.81 0 0 1 16.53 9.19L16.58 9.25L16.63 9.33L16.74 9.5C16.8 9.59 16.86 9.69 16.92 9.8A4.89 4.89 0 0 1 17.4 11.16A4.78 4.78 0 0 1 17.5 11.83A4.88 4.88 0 0 1 17.5 12.44A4.76 4.76 0 0 1 17.44 12.96C17.42 13.11 17.39 13.25 17.36 13.36C17.31 13.57 17.27 13.7 17.27 13.7L17.41 13.37C17.45 13.26 17.5 13.14 17.54 13A5.06 5.06 0 0 0 17.67 12.46A5.34 5.34 0 0 0 17.75 11.83A5.04 5.04 0 0 0 17.76 11.11A5.38 5.38 0 0 0 17.43 9.57C17.38 9.44 17.32 9.31 17.27 9.19L17.18 9L17.14 8.93L17.09 8.83A5.53 5.53 0 0 0 15.67 7.16C15.79 6.9 15.89 6.65 16 6.38L16.03 6.41L16.25 6.53L16.28 6.54V6.55H16.29C16.32 6.57 16.24 6.5 16.25 6.53H16.26L16.27 6.54L16.33 6.58L16.45 6.66L16.5 6.71L16.56 6.73L16.57 6.74H16.58L16.56 6.73H16.57L16.71 6.84L16.85 6.94L16.87 6.96L16.86 6.95L16.87 6.96L16.91 7L17 7.05A6.46 6.46 0 0 1 18.6 9.05L18.65 9.15L18.71 9.27L18.82 9.5C18.87 9.65 18.94 9.79 19 9.95A6.69 6.69 0 0 1 19.24 10.9A6.78 6.78 0 0 1 19.35 11.86C19.36 12 19.36 12.17 19.35 12.32C19.35 12.5 19.34 12.62 19.33 12.77A6.79 6.79 0 0 1 19.2 13.58A6.4 6.4 0 0 1 19 14.25C18.96 14.45 18.89 14.62 18.84 14.76C18.78 14.9 18.73 15 18.7 15.07L18.64 15.19L18.71 15.08C18.75 15 18.81 14.91 18.88 14.78C18.95 14.64 19.04 14.5 19.12 14.29A6.5 6.5 0 0 0 19.37 13.62A6.93 6.93 0 0 0 19.59 12.81C19.61 12.66 19.64 12.5 19.66 12.35C19.68 12.19 19.7 12.03 19.7 11.87A7.1 7.1 0 0 0 19.69 10.84"; -var mdiConnection = "M21.4 7.5C22.2 8.3 22.2 9.6 21.4 10.3L18.6 13.1L10.8 5.3L13.6 2.5C14.4 1.7 15.7 1.7 16.4 2.5L18.2 4.3L21.2 1.3L22.6 2.7L19.6 5.7L21.4 7.5M15.6 13.3L14.2 11.9L11.4 14.7L9.3 12.6L12.1 9.8L10.7 8.4L7.9 11.2L6.4 9.8L3.6 12.6C2.8 13.4 2.8 14.7 3.6 15.4L5.4 17.2L1.4 21.2L2.8 22.6L6.8 18.6L8.6 20.4C9.4 21.2 10.7 21.2 11.4 20.4L14.2 17.6L12.8 16.2L15.6 13.3Z"; -var mdiConsole = "M20,19V7H4V19H20M20,3A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5C2,3.89 2.9,3 4,3H20M13,17V15H18V17H13M9.58,13L5.57,9H8.4L11.7,12.3C12.09,12.69 12.09,13.33 11.7,13.72L8.42,17H5.59L9.58,13Z"; -var mdiConsoleLine = "M13,19V16H21V19H13M8.5,13L2.47,7H6.71L11.67,11.95C12.25,12.54 12.25,13.5 11.67,14.07L6.74,19H2.5L8.5,13Z"; -var mdiConsoleNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7A2,2 0 0,1 5,15V5A2,2 0 0,1 7,3H17M7,7L11,11L7,15H9.85L13.13,11.72C13.5,11.33 13.5,10.7 13.13,10.3L9.83,7H7M17,13H14V15H17V13Z"; -var mdiConsoleNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M8,6.89L11.56,10.45L8,14H10.53L13.45,11.08C13.78,10.74 13.78,10.18 13.45,9.82L10.5,6.89H8M16,12.22H13.33V14H16V12.22Z"; -var mdiConsolidate = "M18 9H20V4H22V9A2 2 0 0 1 20 11H18V13L15 10L18 7M14 10A2 2 0 1 0 12 12A2 2 0 0 0 14 10M2 11V16H4V11H6V13L9 10L6 7V9H4A2 2 0 0 0 2 11M15 16L12 13L9 16H11V18A2 2 0 0 0 13 20H18V18H13V16"; -var mdiContactlessPayment = "M16.79,23C16.37,22.83 16.07,22.45 16,22C15.95,21.74 16,21.56 16.4,20.84C17.9,18.14 18.67,15.09 18.63,12C18.67,9 17.94,6.07 16.5,3.44C16.29,3 16.1,2.58 15.94,2.13C16,1.75 16.19,1.4 16.5,1.19C16.95,0.95 17.5,1 17.91,1.28C18.19,1.64 18.43,2 18.63,2.42C19.71,4.5 20.44,6.7 20.8,9C21.03,10.81 21.06,12.65 20.89,14.47C20.58,16.81 19.89,19.07 18.83,21.18C18.19,22.46 17.83,23 17.45,23C17.37,23 17.28,23 17.2,23C17.06,23 16.93,23 16.79,23V23M12.43,20.79C11.86,20.63 11.5,20.05 11.62,19.47C11.62,19.35 11.93,18.8 12.21,18.24C13.39,15.97 13.9,13.41 13.67,10.86C13.53,9.03 13,7.25 12.13,5.64C11.5,4.38 11.46,4.18 11.83,3.64C12.27,3.15 13,3.08 13.54,3.5C14.26,4.56 14.83,5.72 15.25,6.94C16.53,10.73 16.33,14.86 14.69,18.5C13.85,20.39 13.26,21 12.43,20.74V20.79M7.93,18.56C7.57,18.4 7.3,18.08 7.2,17.7C7.2,17.5 7.2,17.24 7.65,16.44C9.14,13.74 9.14,10.46 7.65,7.76C7,6.5 7,6.24 7.53,5.76C7.72,5.54 8,5.43 8.3,5.47C8.94,5.47 9.3,5.78 9.84,6.91C10.69,8.47 11.13,10.22 11.12,12C11.16,13.81 10.72,15.61 9.85,17.2C9.31,18.25 9.04,18.5 8.5,18.59C8.31,18.61 8.11,18.59 7.93,18.5V18.56M3.72,16.43C3.39,16.27 3.13,16 3,15.65C2.9,15.3 3,15 3.4,14.36C3.9,13.68 4.14,12.84 4.09,12C4.16,11.15 3.93,10.31 3.44,9.61C3.27,9.36 3.13,9.09 3,8.82C2.89,8.19 3.31,7.59 4,7.47C4.54,7.37 4.92,7.6 5.42,8.36C6.87,10.57 6.87,13.42 5.42,15.63C4.91,16.4 4.33,16.63 3.73,16.43H3.72Z"; -var mdiContactlessPaymentCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M8.43 14.44L7.07 13.83C7.35 13.27 7.5 12.67 7.5 12.05C7.5 11.39 7.35 10.76 7.07 10.17L8.43 9.56C8.81 10.37 9 11.2 9 12.05C9 12.8 8.81 13.6 8.43 14.44M11.53 15.94L10.22 15.29C10.75 14.16 11 13 11 11.86C11 10.73 10.75 9.69 10.22 8.71L11.53 7.96C12.19 9.12 12.5 10.42 12.5 11.86C12.5 13.33 12.19 14.69 11.53 15.94M14.68 17.35L13.31 16.65C14.1 15.11 14.5 13.57 14.5 12S14.1 8.87 13.31 7.31L14.68 6.65C15.55 8.43 16 10.22 16 12C16 13.82 15.55 15.6 14.68 17.35Z"; -var mdiContactlessPaymentCircleOutline = "M12 4C16.41 4 20 7.59 20 12S16.41 20 12 20 4 16.41 4 12 7.59 4 12 4M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M8.43 14.44L7.07 13.83C7.35 13.27 7.5 12.67 7.5 12.05C7.5 11.39 7.35 10.76 7.07 10.17L8.43 9.56C8.81 10.37 9 11.2 9 12.05C9 12.8 8.81 13.6 8.43 14.44M11.53 15.94L10.22 15.29C10.75 14.16 11 13 11 11.86C11 10.73 10.75 9.69 10.22 8.71L11.53 7.96C12.19 9.12 12.5 10.42 12.5 11.86C12.5 13.33 12.19 14.69 11.53 15.94M14.68 17.35L13.31 16.65C14.1 15.11 14.5 13.57 14.5 12S14.1 8.87 13.31 7.31L14.68 6.65C15.55 8.43 16 10.22 16 12C16 13.82 15.55 15.6 14.68 17.35Z"; -var mdiContacts = "M20,0H4V2H20V0M4,24H20V22H4V24M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M12,6.75A2.25,2.25 0 0,1 14.25,9A2.25,2.25 0 0,1 12,11.25A2.25,2.25 0 0,1 9.75,9A2.25,2.25 0 0,1 12,6.75M17,17H7V15.5C7,13.83 10.33,13 12,13C13.67,13 17,13.83 17,15.5V17Z"; -var mdiContactsOutline = "M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4M20 18H4V6H20V18M4 0H20V2H4M4 22H20V24H4M12 12C13.38 12 14.5 10.88 14.5 9.5S13.38 7 12 7 9.5 8.12 9.5 9.5 10.62 12 12 12M12 8.5C12.55 8.5 13 8.95 13 9.5S12.55 10.5 12 10.5 11 10.05 11 9.5 11.45 8.5 12 8.5M17 16C17 13.9 13.69 13 12 13S7 13.9 7 16V17H17V16M8.81 15.5C9.42 15 10.84 14.5 12 14.5C13.17 14.5 14.59 15 15.2 15.5H8.81Z"; -var mdiContain = "M2,3H8V5H4V19H8V21H2V3M7,17V15H9V17H7M11,17V15H13V17H11M15,17V15H17V17H15M22,3V21H16V19H20V5H16V3H22Z"; -var mdiContainEnd = "M7,17V15H9V17H7M11,17V15H13V17H11M15,17V15H17V17H15M22,3V21H16V19H20V5H16V3H22Z"; -var mdiContainStart = "M2,3H8V5H4V19H8V21H2V3M7,17V15H9V17H7M11,17V15H13V17H11M15,17V15H17V17H15Z"; -var mdiContentCopy = "M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"; -var mdiContentCut = "M19,3L13,9L15,11L22,4V3M12,12.5A0.5,0.5 0 0,1 11.5,12A0.5,0.5 0 0,1 12,11.5A0.5,0.5 0 0,1 12.5,12A0.5,0.5 0 0,1 12,12.5M6,20A2,2 0 0,1 4,18C4,16.89 4.9,16 6,16A2,2 0 0,1 8,18C8,19.11 7.1,20 6,20M6,8A2,2 0 0,1 4,6C4,4.89 4.9,4 6,4A2,2 0 0,1 8,6C8,7.11 7.1,8 6,8M9.64,7.64C9.87,7.14 10,6.59 10,6A4,4 0 0,0 6,2A4,4 0 0,0 2,6A4,4 0 0,0 6,10C6.59,10 7.14,9.87 7.64,9.64L10,12L7.64,14.36C7.14,14.13 6.59,14 6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22A4,4 0 0,0 10,18C10,17.41 9.87,16.86 9.64,16.36L12,14L19,21H22V20L9.64,7.64Z"; -var mdiContentDuplicate = "M11,17H4A2,2 0 0,1 2,15V3A2,2 0 0,1 4,1H16V3H4V15H11V13L15,16L11,19V17M19,21V7H8V13H6V7A2,2 0 0,1 8,5H19A2,2 0 0,1 21,7V21A2,2 0 0,1 19,23H8A2,2 0 0,1 6,21V19H8V21H19Z"; -var mdiContentPaste = "M19,20H5V4H7V7H17V4H19M12,2A1,1 0 0,1 13,3A1,1 0 0,1 12,4A1,1 0 0,1 11,3A1,1 0 0,1 12,2M19,2H14.82C14.4,0.84 13.3,0 12,0C10.7,0 9.6,0.84 9.18,2H5A2,2 0 0,0 3,4V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V4A2,2 0 0,0 19,2Z"; -var mdiContentSave = "M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z"; -var mdiContentSaveAlert = "M13 9H3V5H13M10 19C8.3 19 7 17.7 7 16S8.3 13 10 13 13 14.3 13 16 11.7 19 10 19M15 3H3C1.9 3 1 3.9 1 5V19C1 20.1 1.9 21 3 21H17C18.1 21 19 20.1 19 19V7L15 3M23 14H21V7H23V14M23 18H21V16H23V18Z"; -var mdiContentSaveAlertOutline = "M15 3H3C1.9 3 1 3.9 1 5V19C1 20.1 1.9 21 3 21H17C18.1 21 19 20.1 19 19V7L15 3M17 19H3V5H14.2L17 7.8V19M10 12C8.3 12 7 13.3 7 15S8.3 18 10 18 13 16.7 13 15 11.7 12 10 12M4 6H13V10H4V6M23 14H21V7H23V14M23 18H21V16H23V18Z"; -var mdiContentSaveAll = "M17,7V3H7V7H17M14,17A3,3 0 0,0 17,14A3,3 0 0,0 14,11A3,3 0 0,0 11,14A3,3 0 0,0 14,17M19,1L23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V3A2,2 0 0,1 7,1H19M1,7H3V21H17V23H3A2,2 0 0,1 1,21V7Z"; -var mdiContentSaveAllOutline = "M1 7H3V21H17V23H3C1.9 23 1 22.11 1 21V7M19 1H7C5.89 1 5 1.9 5 3V17C5 18.1 5.89 19 7 19H21C22.1 19 23 18.1 23 17V5L19 1M21 17H7V3H18.17L21 5.83V17M14 10C12.34 10 11 11.34 11 13S12.34 16 14 16 17 14.66 17 13 15.66 10 14 10M8 4H17V8H8V4Z"; -var mdiContentSaveCog = "M21 11.7V7L17 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11.7C11.4 20.3 11.2 19.6 11.1 18.8C9.9 18.4 9 17.3 9 16C9 14.3 10.3 13 12 13C12.3 13 12.6 13.1 12.9 13.2C14.2 11.8 16 11 18 11C19.1 11 20.1 11.2 21 11.7M15 9H5V5H15V9M21.7 18.6V17.6L22.8 16.8C22.9 16.7 23 16.6 22.9 16.5L21.9 14.8C21.9 14.7 21.7 14.7 21.6 14.7L20.4 15.2C20.1 15 19.8 14.8 19.5 14.7L19.3 13.4C19.3 13.3 19.2 13.2 19.1 13.2H17.1C16.9 13.2 16.8 13.3 16.8 13.4L16.6 14.7C16.3 14.9 16.1 15 15.8 15.2L14.6 14.7C14.5 14.7 14.4 14.7 14.3 14.8L13.3 16.5C13.3 16.6 13.3 16.7 13.4 16.8L14.5 17.6V18.6L13.4 19.4C13.3 19.5 13.2 19.6 13.3 19.7L14.3 21.4C14.4 21.5 14.5 21.5 14.6 21.5L15.8 21C16 21.2 16.3 21.4 16.6 21.5L16.8 22.8C16.9 22.9 17 23 17.1 23H19.1C19.2 23 19.3 22.9 19.3 22.8L19.5 21.5C19.8 21.3 20 21.2 20.3 21L21.5 21.4C21.6 21.4 21.7 21.4 21.8 21.3L22.8 19.6C22.9 19.5 22.9 19.4 22.8 19.4L21.7 18.6M18 19.5C17.2 19.5 16.5 18.8 16.5 18S17.2 16.5 18 16.5 19.5 17.2 19.5 18 18.8 19.5 18 19.5Z"; -var mdiContentSaveCogOutline = "M11.1 19C11.2 19.7 11.4 20.4 11.7 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H17L21 7V11.7C20.4 11.4 19.7 11.2 19 11.1V7.8L16.2 5H5V19H11.1M12 12C10.3 12 9 13.3 9 15C9 16.3 9.8 17.4 11 17.8C11.1 15.6 12.1 13.7 13.7 12.5C13.2 12.2 12.6 12 12 12M15 10V6H6V10H15M22.8 19.6L21.8 21.3C21.7 21.4 21.6 21.4 21.5 21.4L20.3 21C20 21.2 19.8 21.3 19.5 21.5L19.3 22.8C19.3 22.9 19.2 23 19.1 23H17.1C17 23 16.9 22.9 16.8 22.8L16.6 21.5C16.3 21.4 16 21.2 15.8 21L14.6 21.5C14.5 21.5 14.4 21.5 14.3 21.4L13.3 19.7C13.2 19.6 13.3 19.5 13.4 19.4L14.5 18.6V17.6L13.4 16.8C13.3 16.7 13.3 16.6 13.3 16.5L14.3 14.8C14.4 14.7 14.5 14.7 14.6 14.7L15.8 15.2C16.1 15 16.3 14.9 16.6 14.7L16.8 13.4C16.8 13.3 16.9 13.2 17.1 13.2H19.1C19.2 13.2 19.3 13.3 19.3 13.4L19.5 14.7C19.8 14.8 20.1 15 20.4 15.2L21.6 14.7C21.7 14.7 21.9 14.7 21.9 14.8L22.9 16.5C23 16.6 22.9 16.7 22.8 16.8L21.7 17.6V18.6L22.8 19.4C22.9 19.4 22.9 19.5 22.8 19.6M19.5 18C19.5 17.2 18.8 16.5 18 16.5S16.5 17.2 16.5 18 17.2 19.5 18 19.5C18.8 19.5 19.5 18.8 19.5 18Z"; -var mdiContentSaveEdit = "M10,19L10.14,18.86C8.9,18.5 8,17.36 8,16A3,3 0 0,1 11,13C12.36,13 13.5,13.9 13.86,15.14L20,9V7L16,3H4C2.89,3 2,3.9 2,5V19A2,2 0 0,0 4,21H10V19M4,5H14V9H4V5M20.04,12.13C19.9,12.13 19.76,12.19 19.65,12.3L18.65,13.3L20.7,15.35L21.7,14.35C21.92,14.14 21.92,13.79 21.7,13.58L20.42,12.3C20.31,12.19 20.18,12.13 20.04,12.13M18.07,13.88L12,19.94V22H14.06L20.12,15.93L18.07,13.88Z"; -var mdiContentSaveEditOutline = "M4 19H10V21H4C2.89 21 2 20.1 2 19V5C2 3.9 2.89 3 4 3H16L20 7V9.12L18 11.12V7.83L15.17 5H4V19M14 10V6H5V10H14M20.42 12.3C20.31 12.19 20.18 12.13 20.04 12.13C19.9 12.13 19.76 12.19 19.65 12.3L18.65 13.3L20.7 15.35L21.7 14.35C21.92 14.14 21.92 13.79 21.7 13.58L20.42 12.3M12 19.94V22H14.06L20.12 15.93L18.07 13.88L12 19.94M14 15C14 13.34 12.66 12 11 12S8 13.34 8 15 9.34 18 11 18C11.04 18 11.08 18 11.13 18L14 15.13C14 15.09 14 15.05 14 15"; -var mdiContentSaveMove = "M17,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H11.81C11.42,20.34 11.17,19.6 11.07,18.84C9.5,18.31 8.66,16.6 9.2,15.03C9.61,13.83 10.73,13 12,13C12.44,13 12.88,13.1 13.28,13.29C15.57,11.5 18.83,11.59 21,13.54V7L17,3M15,9H5V5H15V9M13,17H17V14L22,18.5L17,23V20H13V17"; -var mdiContentSaveMoveOutline = "M13 17H17V14L22 18.5L17 23V20H13V17M14 12.8C13.5 12.31 12.78 12 12 12C10.34 12 9 13.34 9 15C9 16.31 9.84 17.41 11 17.82C11.07 15.67 12.27 13.8 14 12.8M11.09 19H5V5H16.17L19 7.83V12.35C19.75 12.61 20.42 13 21 13.54V7L17 3H5C3.89 3 3 3.9 3 5V19C3 20.1 3.89 21 5 21H11.81C11.46 20.39 11.21 19.72 11.09 19M6 10H15V6H6V10Z"; -var mdiContentSaveOff = "M8.2 5L6.2 3H17L21 7V17.8L12.2 9H15V5H8.2M22.11 21.46L20.84 22.73L19.1 21C19.07 21 19.03 21 19 21H5C3.9 21 3 20.11 3 19V5C3 4.97 3 4.93 3 4.9L1.11 3L2.39 1.73L22.11 21.46M7.11 9L5 6.89V9H7.11M14.89 16.78L11.22 13.11C9.95 13.46 9 14.61 9 16C9 17.66 10.34 19 12 19C13.39 19 14.54 18.05 14.89 16.78Z"; -var mdiContentSaveOffOutline = "M8.2 5L6.2 3H17L21 7V17.8L19 15.8V7.83L16.17 5H8.2M15 10V6H9.2L13.2 10H15M22.11 21.46L20.84 22.73L19.1 21C19.07 21 19.03 21 19 21H5C3.89 21 3 20.1 3 19V5C3 4.97 3 4.93 3 4.9L1.11 3L2.39 1.73L22.11 21.46M17.11 19L14.59 16.5C14.08 17.39 13.12 18 12 18C10.34 18 9 16.66 9 15C9 13.88 9.61 12.92 10.5 12.41L8.11 10H6V7.89L5 6.89V19H17.11Z"; -var mdiContentSaveOutline = "M17 3H5C3.89 3 3 3.9 3 5V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V7L17 3M19 19H5V5H16.17L19 7.83V19M12 12C10.34 12 9 13.34 9 15S10.34 18 12 18 15 16.66 15 15 13.66 12 12 12M6 6H15V10H6V6Z"; -var mdiContentSaveSettings = "M15,8V4H5V8H15M12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18M17,2L21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V4A2,2 0 0,1 5,2H17M11,22H13V24H11V22M7,22H9V24H7V22M15,22H17V24H15V22Z"; -var mdiContentSaveSettingsOutline = "M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22M17 2H5C3.89 2 3 2.9 3 4V18C3 19.1 3.89 20 5 20H19C20.1 20 21 19.1 21 18V6L17 2M19 18H5V4H16.17L19 6.83V18M12 11C10.34 11 9 12.34 9 14S10.34 17 12 17 15 15.66 15 14 13.66 11 12 11M6 5H15V9H6V5Z"; -var mdiContrast = "M4.38,20.9C3.78,20.71 3.3,20.23 3.1,19.63L19.63,3.1C20.23,3.3 20.71,3.78 20.9,4.38L4.38,20.9M20,16V18H13V16H20M3,6H6V3H8V6H11V8H8V11H6V8H3V6Z"; -var mdiContrastBox = "M17,15.5H12V17H17M19,19H5L19,5M5.5,7.5H7.5V5.5H9V7.5H11V9H9V11H7.5V9H5.5M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiContrastCircle = "M12,20C9.79,20 7.79,19.1 6.34,17.66L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20M6,8H8V6H9.5V8H11.5V9.5H9.5V11.5H8V9.5H6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16H17V14.5H12V16Z"; -var mdiControllerClassic = "M6,7H18A5,5 0 0,1 23,12A5,5 0 0,1 18,17C16.36,17 14.91,16.21 14,15H10C9.09,16.21 7.64,17 6,17A5,5 0 0,1 1,12A5,5 0 0,1 6,7M19.75,9.5A1.25,1.25 0 0,0 18.5,10.75A1.25,1.25 0 0,0 19.75,12A1.25,1.25 0 0,0 21,10.75A1.25,1.25 0 0,0 19.75,9.5M17.25,12A1.25,1.25 0 0,0 16,13.25A1.25,1.25 0 0,0 17.25,14.5A1.25,1.25 0 0,0 18.5,13.25A1.25,1.25 0 0,0 17.25,12M5,9V11H3V13H5V15H7V13H9V11H7V9H5Z"; -var mdiControllerClassicOutline = "M17.5,7A5.5,5.5 0 0,1 23,12.5A5.5,5.5 0 0,1 17.5,18C15.79,18 14.27,17.22 13.26,16H10.74C9.73,17.22 8.21,18 6.5,18A5.5,5.5 0 0,1 1,12.5A5.5,5.5 0 0,1 6.5,7H17.5M6.5,9A3.5,3.5 0 0,0 3,12.5A3.5,3.5 0 0,0 6.5,16C7.9,16 9.1,15.18 9.66,14H14.34C14.9,15.18 16.1,16 17.5,16A3.5,3.5 0 0,0 21,12.5A3.5,3.5 0 0,0 17.5,9H6.5M5.75,10.25H7.25V11.75H8.75V13.25H7.25V14.75H5.75V13.25H4.25V11.75H5.75V10.25M16.75,12.5A1,1 0 0,1 17.75,13.5A1,1 0 0,1 16.75,14.5A1,1 0 0,1 15.75,13.5A1,1 0 0,1 16.75,12.5M18.75,10.5A1,1 0 0,1 19.75,11.5A1,1 0 0,1 18.75,12.5A1,1 0 0,1 17.75,11.5A1,1 0 0,1 18.75,10.5Z"; -var mdiCookie = "M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12C21,11.5 20.96,11 20.87,10.5C20.6,10 20,10 20,10H18V9C18,8 17,8 17,8H15V7C15,6 14,6 14,6H13V4C13,3 12,3 12,3M9.5,6A1.5,1.5 0 0,1 11,7.5A1.5,1.5 0 0,1 9.5,9A1.5,1.5 0 0,1 8,7.5A1.5,1.5 0 0,1 9.5,6M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M11.5,11A1.5,1.5 0 0,1 13,12.5A1.5,1.5 0 0,1 11.5,14A1.5,1.5 0 0,1 10,12.5A1.5,1.5 0 0,1 11.5,11M16.5,13A1.5,1.5 0 0,1 18,14.5A1.5,1.5 0 0,1 16.5,16H16.5A1.5,1.5 0 0,1 15,14.5H15A1.5,1.5 0 0,1 16.5,13M11,16A1.5,1.5 0 0,1 12.5,17.5A1.5,1.5 0 0,1 11,19A1.5,1.5 0 0,1 9.5,17.5A1.5,1.5 0 0,1 11,16Z"; -var mdiCookieAlert = "M18 10H16V9C16 8 15 8 15 8H13V7C13 6 12 6 12 6H11V4C11 3 10 3 10 3C5 3 1 7 1 12S5 21 10 21 19 17 19 12C19 11.5 19 11 18.9 10.5C18.6 10 18 10 18 10M4.5 13C3.7 13 3 12.3 3 11.5S3.7 10 4.5 10 6 10.7 6 11.5 5.3 13 4.5 13M6 7.5C6 6.7 6.7 6 7.5 6S9 6.7 9 7.5 8.3 9 7.5 9 6 8.3 6 7.5M9 19C8.2 19 7.5 18.3 7.5 17.5S8.2 16 9 16 10.5 16.7 10.5 17.5 9.8 19 9 19M9.5 14C8.7 14 8 13.3 8 12.5S8.7 11 9.5 11 11 11.7 11 12.5 10.3 14 9.5 14M14.5 16C13.7 16 13 15.3 13 14.5S13.7 13 14.5 13C15.3 13 16 13.7 16 14.5S15.3 16 14.5 16M21 15H23V17H21V15M23 7V13H21V7H23Z"; -var mdiCookieAlertOutline = "M16 14.5C16 15.3 15.3 16 14.5 16S13 15.3 13 14.5 13.7 13 14.5 13C15.3 13 16 13.7 16 14.5M18.9 10.5C19 11 19 11.5 19 12C19 17 15 21 10 21S1 17 1 12 5 3 10 3C10 3 11 3 11 4V6H12C12 6 13 6 13 7V8H15C15 8 16 8 16 9V10H18C18 10 18.6 10 18.9 10.5M17 12H15.5C14.7 12 14 11.3 14 10.5V10H12.5C11.7 10 11 9.3 11 8.5V8H10.5C9.7 8 9 7.3 9 6.5V5.1C5.9 5.5 3.5 8 3.1 11.1C3.2 10.5 3.8 10 4.5 10C5.3 10 6 10.7 6 11.5S5.3 13 4.5 13C3.7 13 3.1 12.4 3 11.6C3 12.1 3 12.6 3.1 13.1C3.5 15.8 5.6 18 8.2 18.7C7.8 18.4 7.5 18 7.5 17.5C7.5 16.7 8.2 16 9 16S10.5 16.7 10.5 17.5C10.5 18.2 10 18.8 9.3 19C13.5 19.4 17 16.1 17 12M9.5 11C8.7 11 8 11.7 8 12.5S8.7 14 9.5 14 11 13.3 11 12.5 10.3 11 9.5 11M9 7.5C9 6.7 8.3 6 7.5 6S6 6.7 6 7.5 6.7 9 7.5 9 9 8.3 9 7.5M21 17H23V15H21V17M21 7V13H23V7H21Z"; -var mdiCookieCheck = "M15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13C16.8 13 17.08 13.09 17.32 13.24C17.85 13.09 18.42 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 17.22 13.78 15.63 15 14.53M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M22.5 17.25L17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25Z"; -var mdiCookieCheckOutline = "M15 10H14.5C13.67 10 13 9.33 13 8.5V8H12.5C11.67 8 11 7.33 11 6.5V5.07C7.91 5.5 5.47 8 5.07 11.08C5.25 10.46 5.82 10 6.5 10C7.33 10 8 10.67 8 11.5S7.33 13 6.5 13C5.71 13 5.07 12.39 5 11.62C5 12.11 5 12.61 5.09 13.12C5.5 15.81 7.54 18.04 10.16 18.74C9.76 18.47 9.5 18 9.5 17.5C9.5 16.67 10.17 16 11 16S12.5 16.67 12.5 17.5C12.5 18.22 12 18.82 11.32 18.96C11.9 19 12.46 19 13 18.92C13 18.95 13 18.97 13 19C13 19.66 13.12 20.3 13.32 20.89C12.89 20.96 12.45 21 12 21C7.03 21 3 16.97 3 12S7.03 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 12.45 20.96 12.89 20.89 13.32C20.3 13.12 19.66 13 19 13C18.97 13 18.95 13 18.92 13C18.97 12.68 19 12.34 19 12H17.5C16.67 12 16 11.33 16 10.5V10H15M15 14.5C15 14.5 15 14.5 15 14.53C15.66 13.95 16.45 13.5 17.32 13.24C17.08 13.09 16.8 13 16.5 13C15.67 13 15 13.67 15 14.5M11.5 14C12.33 14 13 13.33 13 12.5S12.33 11 11.5 11 10 11.67 10 12.5 10.67 14 11.5 14M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; -var mdiCookieClock = "M19.97 10.24C19.95 10 19.91 9.74 19.87 9.5C19.6 9 19 9 19 9H17V8C17 7 16 7 16 7H14V6C14 5 13 5 13 5H12V3C12 2 11 2 11 2C6.03 2 2 6.03 2 11C2 15.71 5.62 19.57 10.23 19.96C11.5 21.8 13.61 23 16 23C19.87 23 23 19.87 23 16C23 13.61 21.8 11.5 19.97 10.24M11.64 10.53C10.87 11.15 10.23 11.92 9.78 12.81C9.32 12.55 9 12.06 9 11.5C9 10.67 9.67 10 10.5 10C10.96 10 11.36 10.21 11.64 10.53M5.5 12C4.67 12 4 11.33 4 10.5S4.67 9 5.5 9 7 9.67 7 10.5 6.33 12 5.5 12M7 6.5C7 5.67 7.67 5 8.5 5S10 5.67 10 6.5 9.33 8 8.5 8 7 7.33 7 6.5M8.5 16.5C8.5 16.04 8.71 15.64 9.03 15.36C9 15.57 9 15.79 9 16C9 16.62 9.09 17.22 9.24 17.79C8.8 17.5 8.5 17.05 8.5 16.5M16 21C13.24 21 11 18.76 11 16S13.24 11 16 11 21 13.24 21 16 18.76 21 16 21M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25Z"; -var mdiCookieClockOutline = "M8.5 8C7.67 8 7 7.33 7 6.5S7.67 5 8.5 5 10 5.67 10 6.5 9.33 8 8.5 8M16.5 12H15V17L18.61 19.16L19.36 17.94L16.5 16.25V12M23 16C23 19.87 19.87 23 16 23C13.61 23 11.5 21.8 10.23 19.96C5.62 19.57 2 15.71 2 11C2 6.03 6.03 2 11 2C11 2 12 2 12 3V5H13C13 5 14 5 14 6V7H16C16 7 17 7 17 8V9H19C19 9 19.6 9 19.87 9.5C19.91 9.74 19.95 10 19.97 10.24C21.8 11.5 23 13.61 23 16M9.16 17.74C8.76 17.47 8.5 17 8.5 16.5C8.5 16.04 8.71 15.64 9.03 15.36C9.12 14.45 9.38 13.59 9.78 12.81C9.32 12.55 9 12.06 9 11.5C9 10.67 9.67 10 10.5 10C10.96 10 11.36 10.21 11.64 10.53C12.59 9.77 13.74 9.26 15 9.08V9H13.5C12.67 9 12 8.33 12 7.5V7H11.5C10.67 7 10 6.33 10 5.5V4.07C6.91 4.5 4.47 7 4.07 10.08C4.25 9.46 4.82 9 5.5 9C6.33 9 7 9.67 7 10.5S6.33 12 5.5 12C4.71 12 4.07 11.39 4 10.62C4 11.11 4 11.61 4.09 12.12C4.5 14.81 6.54 17.04 9.16 17.74M21 16C21 13.24 18.76 11 16 11S11 13.24 11 16 13.24 21 16 21 21 18.76 21 16Z"; -var mdiCookieCog = "M21 12.29C21 12.19 21 12.1 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.1 21 12.19 21 12.29 21C12.11 20.36 12 19.69 12 19C12 18.86 12 18.73 12 18.59C11.75 18.84 11.4 19 11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16C11.59 16 12.1 16.35 12.34 16.84C13.25 14.03 15.89 12 19 12C19.69 12 20.36 12.11 21 12.29M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M9.5 9C8.67 9 8 8.33 8 7.5S8.67 6 9.5 6 11 6.67 11 7.5 10.33 9 9.5 9M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M22.7 19.6V18.6L23.8 17.8C23.9 17.7 24 17.6 23.9 17.5L22.9 15.8C22.9 15.7 22.7 15.7 22.6 15.7L21.4 16.2C21.1 16 20.8 15.8 20.5 15.7L20.3 14.4C20.3 14.3 20.2 14.2 20.1 14.2H18.1C17.9 14.2 17.8 14.3 17.8 14.4L17.6 15.7C17.3 15.9 17.1 16 16.8 16.2L15.6 15.7C15.5 15.7 15.4 15.7 15.3 15.8L14.3 17.5C14.3 17.6 14.3 17.7 14.4 17.8L15.5 18.6V19.6L14.4 20.4C14.3 20.5 14.2 20.6 14.3 20.7L15.3 22.4C15.4 22.5 15.5 22.5 15.6 22.5L16.8 22C17 22.2 17.3 22.4 17.6 22.5L17.8 23.8C17.9 23.9 18 24 18.1 24H20.1C20.2 24 20.3 23.9 20.3 23.8L20.5 22.5C20.8 22.3 21 22.2 21.3 22L22.5 22.4C22.6 22.4 22.7 22.4 22.8 22.3L23.8 20.6C23.9 20.5 23.9 20.4 23.8 20.4L22.7 19.6M19 20.5C18.2 20.5 17.5 19.8 17.5 19S18.2 17.5 19 17.5 20.5 18.2 20.5 19 19.8 20.5 19 20.5Z"; -var mdiCookieCogOutline = "M14.5 10C13.67 10 13 9.33 13 8.5V8H12.5C11.67 8 11 7.33 11 6.5V5.07C7.91 5.5 5.47 8 5.07 11.08C5.25 10.46 5.82 10 6.5 10C7.33 10 8 10.67 8 11.5S7.33 13 6.5 13C5.71 13 5.07 12.39 5 11.62C5 12.11 5 12.61 5.09 13.12C5.5 15.81 7.54 18.04 10.16 18.74C9.76 18.47 9.5 18 9.5 17.5C9.5 16.67 10.17 16 11 16C11.59 16 12.1 16.35 12.34 16.84C12.16 17.39 12.06 17.97 12 18.57C11.83 18.76 11.6 18.9 11.32 18.96C11.55 19 11.78 19 12 19V19C12 19.69 12.11 20.36 12.29 21C12.19 21 12.1 21 12 21C7.03 21 3 16.97 3 12S7.03 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 12.1 21 12.19 21 12.29C20.36 12.11 19.69 12 19 12H17.5C16.67 12 16 11.33 16 10.5V10H14.5M11.5 11C10.67 11 10 11.67 10 12.5S10.67 14 11.5 14 13 13.33 13 12.5 12.33 11 11.5 11M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; -var mdiCookieEdit = "M15.1 15.03C15.04 14.86 15 14.69 15 14.5C15 13.67 15.67 13 16.5 13C16.69 13 16.86 13.04 17.03 13.1L19.39 10.74C19.69 10.44 20.05 10.24 20.44 10.12C20.21 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12C3 16.63 6.5 20.44 11 20.94V19.13L11.14 19C11.1 19 11.05 19 11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5C12.5 17.55 12.5 17.6 12.5 17.64L15.1 15.03M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M9.5 9C8.67 9 8 8.33 8 7.5S8.67 6 9.5 6 11 6.67 11 7.5 10.33 9 9.5 9M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M22.85 14.19L21.87 15.17L19.83 13.13L20.81 12.15C21 11.95 21.33 11.95 21.53 12.15L22.85 13.47C23.05 13.67 23.05 14 22.85 14.19M19.13 13.83L21.17 15.87L15.04 22H13V19.96L19.13 13.83Z"; -var mdiCookieEditOutline = "M9.5 6C10.33 6 11 6.67 11 7.5S10.33 9 9.5 9 8 8.33 8 7.5 8.67 6 9.5 6M11.5 11C10.67 11 10 11.67 10 12.5S10.67 14 11.5 14 13 13.33 13 12.5 12.33 11 11.5 11M11 16C10.17 16 9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16V10.5C16 11.33 16.67 12 17.5 12H18.13L19.39 10.74C19.69 10.44 20.05 10.24 20.44 10.12C20.21 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12C3 16.63 6.5 20.44 11 20.94V19.13L12.47 17.66C12.5 17.6 12.5 17.55 12.5 17.5C12.5 16.67 11.83 16 11 16M15 14.5C15 14.69 15.04 14.86 15.1 15.03L17.03 13.1C16.86 13.04 16.69 13 16.5 13C15.67 13 15 13.67 15 14.5M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96Z"; -var mdiCookieLock = "M18.5 11C19.42 11 20.27 11.29 21 11.77C21 11.35 20.95 10.92 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.34 21 12.67 21 13 20.94V17C13 16.08 13.42 15.26 14.07 14.71C14.45 12.6 16.29 11 18.5 11M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M21 16V15.5C21 14.12 19.88 13 18.5 13S16 14.12 16 15.5V16C15.45 16 15 16.45 15 17V21C15 21.55 15.45 22 16 22H21C21.55 22 22 21.55 22 21V17C22 16.45 21.55 16 21 16M20 16H17V15.5C17 14.67 17.67 14 18.5 14S20 14.67 20 15.5V16Z"; -var mdiCookieLockOutline = "M10 12.5C10 11.67 10.67 11 11.5 11S13 11.67 13 12.5 12.33 14 11.5 14 10 13.33 10 12.5M16 10V10.5C16 10.9 16.16 11.26 16.41 11.53C17.04 11.2 17.75 11 18.5 11C19.42 11 20.27 11.29 21 11.77C21 11.35 20.95 10.92 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.34 21 12.67 21 13 20.94V18.92C12.46 19 11.9 19 11.32 18.96C12 18.82 12.5 18.22 12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M22 17V21C22 21.55 21.55 22 21 22H16C15.45 22 15 21.55 15 21V17C15 16.45 15.45 16 16 16V15.5C16 14.12 17.12 13 18.5 13S21 14.12 21 15.5V16C21.55 16 22 16.45 22 17M20 15.5C20 14.67 19.33 14 18.5 14S17 14.67 17 15.5V16H20V15.5Z"; -var mdiCookieMinus = "M15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13C16.8 13 17.08 13.09 17.32 13.24C17.85 13.09 18.42 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 17.22 13.78 15.63 15 14.53M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M23 18V20H15V18H23Z"; -var mdiCookieMinusOutline = "M15 10H14.5C13.67 10 13 9.33 13 8.5V8H12.5C11.67 8 11 7.33 11 6.5V5.07C7.91 5.5 5.47 8 5.07 11.08C5.25 10.46 5.82 10 6.5 10C7.33 10 8 10.67 8 11.5S7.33 13 6.5 13C5.71 13 5.07 12.39 5 11.62C5 12.11 5 12.61 5.09 13.12C5.5 15.81 7.54 18.04 10.16 18.74C9.76 18.47 9.5 18 9.5 17.5C9.5 16.67 10.17 16 11 16S12.5 16.67 12.5 17.5C12.5 18.22 12 18.82 11.32 18.96C11.9 19 12.46 19 13 18.92C13 18.95 13 18.97 13 19C13 19.66 13.12 20.3 13.32 20.89C12.89 20.96 12.45 21 12 21C7.03 21 3 16.97 3 12S7.03 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 12.45 20.96 12.89 20.89 13.32C20.3 13.12 19.66 13 19 13C18.97 13 18.95 13 18.92 13C18.97 12.68 19 12.34 19 12H17.5C16.67 12 16 11.33 16 10.5V10H15M15 14.5C15 14.5 15 14.5 15 14.53C15.66 13.95 16.45 13.5 17.32 13.24C17.08 13.09 16.8 13 16.5 13C15.67 13 15 13.67 15 14.5M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M11.5 14C12.33 14 13 13.33 13 12.5S12.33 11 11.5 11 10 11.67 10 12.5 10.67 14 11.5 14M15 18V20H23V18H15Z"; -var mdiCookieOff = "M9.25 6.05L7.45 4.25C8.79 3.46 10.34 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 13.66 20.54 15.22 19.75 16.55L17.95 14.75C17.97 14.67 18 14.59 18 14.5C18 13.67 17.33 13 16.5 13C16.41 13 16.33 13.03 16.25 13.05L10.95 7.75C10.97 7.67 11 7.59 11 7.5C11 6.67 10.33 6 9.5 6C9.41 6 9.33 6.03 9.25 6.05M22.11 21.46L20.84 22.73L17.34 19.23C15.85 20.34 14 21 12 21C7.03 21 3 16.97 3 12C3 10 3.66 8.15 4.77 6.66L1.11 3L2.39 1.73L22.11 21.46M8 11.5C8 10.67 7.33 10 6.5 10S5 10.67 5 11.5 5.67 13 6.5 13 8 12.33 8 11.5M10 12.5C10 13.33 10.67 14 11.5 14C11.68 14 11.85 13.96 12 13.9L10.1 12C10.04 12.15 10 12.32 10 12.5M12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5 10.17 19 11 19 12.5 18.33 12.5 17.5Z"; -var mdiCookieOffOutline = "M8.93 5.73L7.45 4.25C8.79 3.46 10.34 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 13.66 20.54 15.22 19.75 16.55L18.28 15.08C18.74 14.15 19 13.11 19 12H17.5C16.67 12 16 11.33 16 10.5V10H14.5C13.67 10 13 9.33 13 8.5V8H12.5C11.67 8 11 7.33 11 6.5V5.07C10.26 5.18 9.57 5.41 8.93 5.73M9.25 6.05L10.95 7.75C10.97 7.67 11 7.59 11 7.5C11 6.67 10.33 6 9.5 6C9.41 6 9.33 6.03 9.25 6.05M16.25 13.05L17.95 14.75C17.97 14.67 18 14.59 18 14.5C18 13.67 17.33 13 16.5 13C16.41 13 16.33 13.03 16.25 13.05M22.11 21.46L20.84 22.73L17.34 19.23C15.85 20.34 14 21 12 21C7.03 21 3 16.97 3 12C3 10 3.66 8.15 4.77 6.66L1.11 3L2.39 1.73L22.11 21.46M15.9 17.79L12 13.9C11.85 13.96 11.68 14 11.5 14C10.67 14 10 13.33 10 12.5C10 12.32 10.04 12.15 10.1 12L6.21 8.1C5.62 9 5.21 10 5.07 11.08C5.25 10.46 5.82 10 6.5 10C7.33 10 8 10.67 8 11.5S7.33 13 6.5 13C5.71 13 5.07 12.39 5 11.62C5 12.11 5 12.61 5.09 13.12C5.5 15.81 7.54 18.04 10.16 18.74C9.76 18.47 9.5 18 9.5 17.5C9.5 16.67 10.17 16 11 16S12.5 16.67 12.5 17.5C12.5 18.22 12 18.82 11.32 18.96C13.03 19.12 14.61 18.66 15.9 17.79Z"; -var mdiCookieOutline = "M20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C16.97 21 21 16.97 21 12C21 11.5 20.96 11 20.87 10.5M11.32 18.96C12 18.82 12.5 18.22 12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16V10.5C16 11.33 16.67 12 17.5 12H19C19 16.08 15.5 19.36 11.32 18.96M9.5 9C8.67 9 8 8.33 8 7.5S8.67 6 9.5 6 11 6.67 11 7.5 10.33 9 9.5 9M13 12.5C13 13.33 12.33 14 11.5 14S10 13.33 10 12.5 10.67 11 11.5 11 13 11.67 13 12.5M18 14.5C18 15.33 17.33 16 16.5 16S15 15.33 15 14.5 15.67 13 16.5 13 18 13.67 18 14.5Z"; -var mdiCookiePlus = "M15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13C16.8 13 17.08 13.09 17.32 13.24C17.85 13.09 18.42 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 17.22 13.78 15.63 15 14.53M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z"; -var mdiCookiePlusOutline = "M16.5 13C16.8 13 17.08 13.09 17.32 13.24C16.45 13.5 15.66 13.95 15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13M16 10V10.5C16 11.33 16.67 12 17.5 12H19C19 12.34 18.97 12.68 18.92 13C18.95 13 18.97 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 18.97 13 18.95 13 18.92C12.46 19 11.9 19 11.32 18.96C12 18.82 12.5 18.22 12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16M11.5 14C12.33 14 13 13.33 13 12.5S12.33 11 11.5 11 10 11.67 10 12.5 10.67 14 11.5 14M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; -var mdiCookieRefresh = "M11 16C11.53 16 12 16.28 12.26 16.69C13.04 14 15.54 12 18.5 12C19.38 12 20.21 12.18 21 12.5C21 12.33 21 12.17 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.17 21 12.33 21 12.5 21C12.19 20.24 12 19.44 12 18.61C11.74 18.85 11.39 19 11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16M13 12.5C13 13.33 12.33 14 11.5 14S10 13.33 10 12.5 10.67 11 11.5 11 13 11.67 13 12.5M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M18 18.5L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5S16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5S15.79 14.5 18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18Z"; -var mdiCookieRefreshOutline = "M13 12.5C13 13.33 12.33 14 11.5 14S10 13.33 10 12.5 10.67 11 11.5 11 13 11.67 13 12.5M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M15 10H16V10.5C16 11.33 16.67 12 17.5 12H19L19 12.03C19.69 12.09 20.36 12.24 21 12.5C21 12.33 21 12.17 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.17 21 12.33 21 12.5 21C12.24 20.36 12.09 19.69 12.03 19C11.8 19 11.56 19 11.32 18.96C11.59 18.9 11.81 18.76 12 18.58C12 18.55 12 18.53 12 18.5C12 17.87 12.1 17.27 12.26 16.69C12 16.28 11.53 16 11 16C10.17 16 9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H15M22 18.5V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22Z"; -var mdiCookieRemove = "M16.5 13C16.8 13 17.08 13.09 17.32 13.24C17.85 13.09 18.42 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 17.22 13.78 15.63 15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19Z"; -var mdiCookieRemoveOutline = "M17.32 13.24C16.45 13.5 15.66 13.95 15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13C16.8 13 17.08 13.09 17.32 13.24M16 10V10.5C16 11.33 16.67 12 17.5 12H19C19 12.34 18.97 12.68 18.92 13C18.95 13 18.97 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 18.97 13 18.95 13 18.92C12.46 19 11.9 19 11.32 18.96C12 18.82 12.5 18.22 12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M11.5 14C12.33 14 13 13.33 13 12.5S12.33 11 11.5 11 10 11.67 10 12.5 10.67 14 11.5 14M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; -var mdiCookieSettings = "M20.87 9.5C20.6 9 20 9 20 9H18V8C18 7 17 7 17 7H15V6C15 5 14 5 14 5H13V3C13 2 12 2 12 2C7.03 2 3 6.03 3 11S7.03 20 12 20 21 15.97 21 11C21 10.5 20.96 10 20.87 9.5M6.5 12C5.67 12 5 11.33 5 10.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12M8 6.5C8 5.67 8.67 5 9.5 5S11 5.67 11 6.5 10.33 8 9.5 8 8 7.33 8 6.5M11 18C10.17 18 9.5 17.33 9.5 16.5S10.17 15 11 15 12.5 15.67 12.5 16.5 11.83 18 11 18M11.5 13C10.67 13 10 12.33 10 11.5S10.67 10 11.5 10 13 10.67 13 11.5 12.33 13 11.5 13M16.5 15C15.67 15 15 14.33 15 13.5S15.67 12 16.5 12 18 12.67 18 13.5 17.33 15 16.5 15M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22Z"; -var mdiCookieSettingsOutline = "M13 11.5C13 12.33 12.33 13 11.5 13S10 12.33 10 11.5 10.67 10 11.5 10 13 10.67 13 11.5M11 6.5C11 5.67 10.33 5 9.5 5S8 5.67 8 6.5 8.67 8 9.5 8 11 7.33 11 6.5M21 11C21 15.97 16.97 20 12 20S3 15.97 3 11 7.03 2 12 2C12 2 13 2 13 3V5H14C14 5 15 5 15 6V7H17C17 7 18 7 18 8V9H20C20 9 20.6 9 20.87 9.5C20.96 10 21 10.5 21 11M19 11H17.5C16.67 11 16 10.33 16 9.5V9H14.5C13.67 9 13 8.33 13 7.5V7H12.5C11.67 7 11 6.33 11 5.5V4.07C7.91 4.5 5.47 7 5.07 10.08C5.25 9.46 5.82 9 6.5 9C7.33 9 8 9.67 8 10.5S7.33 12 6.5 12C5.71 12 5.07 11.39 5 10.62C5 11.11 5 11.61 5.09 12.12C5.5 14.81 7.54 17.04 10.16 17.74C9.76 17.47 9.5 17 9.5 16.5C9.5 15.67 10.17 15 11 15S12.5 15.67 12.5 16.5C12.5 17.22 12 17.82 11.32 17.96C15.5 18.36 19 15.08 19 11M16.5 12C15.67 12 15 12.67 15 13.5S15.67 15 16.5 15 18 14.33 18 13.5 17.33 12 16.5 12M7 24H9V22H7V24M15 24H17V22H15V24M11 24H13V22H11V24Z"; -var mdiCoolantTemperature = "M11.5,1A1.5,1.5 0 0,0 10,2.5V14.5C9.37,14.97 9,15.71 9,16.5A2.5,2.5 0 0,0 11.5,19A2.5,2.5 0 0,0 14,16.5C14,15.71 13.63,15 13,14.5V13H17V11H13V9H17V7H13V5H17V3H13V2.5A1.5,1.5 0 0,0 11.5,1M0,15V17C0.67,17 0.79,17.21 1.29,17.71C1.79,18.21 2.67,19 4,19C5.33,19 6.21,18.21 6.71,17.71C6.82,17.59 6.91,17.5 7,17.41V15.16C6.21,15.42 5.65,15.93 5.29,16.29C4.79,16.79 4.67,17 4,17C3.33,17 3.21,16.79 2.71,16.29C2.21,15.79 1.33,15 0,15M16,15V17C16.67,17 16.79,17.21 17.29,17.71C17.79,18.21 18.67,19 20,19C21.33,19 22.21,18.21 22.71,17.71C23.21,17.21 23.33,17 24,17V15C22.67,15 21.79,15.79 21.29,16.29C20.79,16.79 20.67,17 20,17C19.33,17 19.21,16.79 18.71,16.29C18.21,15.79 17.33,15 16,15M8,20C6.67,20 5.79,20.79 5.29,21.29C4.79,21.79 4.67,22 4,22C3.33,22 3.21,21.79 2.71,21.29C2.35,20.93 1.79,20.42 1,20.16V22.41C1.09,22.5 1.18,22.59 1.29,22.71C1.79,23.21 2.67,24 4,24C5.33,24 6.21,23.21 6.71,22.71C7.21,22.21 7.33,22 8,22C8.67,22 8.79,22.21 9.29,22.71C9.73,23.14 10.44,23.8 11.5,23.96C11.66,24 11.83,24 12,24C13.33,24 14.21,23.21 14.71,22.71C15.21,22.21 15.33,22 16,22C16.67,22 16.79,22.21 17.29,22.71C17.79,23.21 18.67,24 20,24C21.33,24 22.21,23.21 22.71,22.71C22.82,22.59 22.91,22.5 23,22.41V20.16C22.21,20.42 21.65,20.93 21.29,21.29C20.79,21.79 20.67,22 20,22C19.33,22 19.21,21.79 18.71,21.29C18.21,20.79 17.33,20 16,20C14.67,20 13.79,20.79 13.29,21.29C12.79,21.79 12.67,22 12,22C11.78,22 11.63,21.97 11.5,21.92C11.22,21.82 11.05,21.63 10.71,21.29C10.21,20.79 9.33,20 8,20Z"; -var mdiCopyright = "M10.08,10.86C10.13,10.53 10.24,10.24 10.38,10C10.5,9.74 10.72,9.53 10.97,9.37C11.21,9.22 11.5,9.15 11.88,9.14C12.11,9.15 12.32,9.19 12.5,9.27C12.71,9.36 12.89,9.5 13.03,9.63C13.17,9.78 13.28,9.96 13.37,10.16C13.46,10.36 13.5,10.58 13.5,10.8H15.3C15.28,10.33 15.19,9.9 15,9.5C14.85,9.12 14.62,8.78 14.32,8.5C14,8.22 13.66,8 13.24,7.84C12.82,7.68 12.36,7.61 11.85,7.61C11.2,7.61 10.63,7.72 10.15,7.95C9.67,8.18 9.27,8.5 8.95,8.87C8.63,9.26 8.39,9.71 8.24,10.23C8.09,10.75 8,11.29 8,11.87V12.14C8,12.72 8.08,13.26 8.23,13.78C8.38,14.3 8.62,14.75 8.94,15.13C9.26,15.5 9.66,15.82 10.14,16.04C10.62,16.26 11.19,16.38 11.84,16.38C12.31,16.38 12.75,16.3 13.16,16.15C13.57,16 13.93,15.79 14.24,15.5C14.55,15.25 14.8,14.94 15,14.58C15.16,14.22 15.27,13.84 15.28,13.43H13.5C13.5,13.64 13.43,13.83 13.34,14C13.25,14.19 13.13,14.34 13,14.47C12.83,14.6 12.66,14.7 12.46,14.77C12.27,14.84 12.07,14.86 11.86,14.87C11.5,14.86 11.2,14.79 10.97,14.64C10.72,14.5 10.5,14.27 10.38,14C10.24,13.77 10.13,13.47 10.08,13.14C10.03,12.81 10,12.47 10,12.14V11.87C10,11.5 10.03,11.19 10.08,10.86M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20Z"; -var mdiCordova = "M20.18,21.55H16.94L17.17,18.82H15.58L15.35,21.55H8.65L8.42,18.82H6.83L7.06,21.55H3.82L2,9.73L6.55,2.45H17.45L22,9.73L20.18,21.55M16.55,6.09H13.62L13.82,7.45H10.18L10.38,6.09H7.45L5.64,9.73L6.55,17H17.45L18.36,9.73L16.55,6.09M14.95,14.59C14.7,14.59 14.5,13.83 14.5,12.9C14.5,11.96 14.7,11.2 14.95,11.2C15.21,11.2 15.41,11.96 15.41,12.9C15.41,13.83 15.21,14.59 14.95,14.59M9.22,14.73C8.96,14.73 8.76,13.97 8.76,13.04C8.76,12.1 8.96,11.35 9.22,11.35C9.47,11.35 9.67,12.1 9.67,13.04C9.67,13.97 9.47,14.73 9.22,14.73Z"; -var mdiCorn = "M11,12H8.82C9.62,12.5 10.35,13.07 11,13.68V12M7,11C7.27,5.88 9.37,2 12,2C14.66,2 16.77,5.94 17,11.12C18.5,10.43 20.17,10 22,10C16.25,12.57 18.25,22 12,22C6,22 7.93,12.57 2,10C3.82,10 5.5,10.4 7,11M11,11V9H8.24L8.03,11H11M11,8V6H9.05C8.8,6.6 8.6,7.27 8.43,8H11M11,5V3.3C10.45,3.63 9.95,4.22 9.5,5H11M12,3V5H13V6H12V8H14V9H12V11H15V12H12V14H14V15H12.23C13.42,16.45 14.15,18 14.32,19.23C15.31,17.56 15.96,14.84 16,11.76C15.94,7 14.13,3 12,3Z"; -var mdiCornOff = "M22.1 21.5L2.4 1.7L1.1 3L7.2 9.1C7.1 9.7 7 10.3 7 11C5.5 10.4 3.8 10 2 10C7.9 12.6 6 22 12 22C14.5 22 15.7 20.5 16.6 18.5L20.9 22.8L22.1 21.5M8.1 10L9.1 11H8L8.1 10M8.8 12H10.1L11 12.9V13.7C10.3 13.1 9.6 12.5 8.8 12M14.3 19.2C14.1 18 13.4 16.4 12.2 15H13.1L15.2 17.1C15 17.9 14.7 18.6 14.3 19.2M11 6V7.8L12.2 9H14V8H12V6H13V5H12V3C14.1 3 15.9 7 16 11.8V12.8L18 14.8C18.8 12.8 19.9 10.9 22 10C20.2 10 18.5 10.4 17 11.1C16.8 5.9 14.7 2 12 2C10.5 2 9.2 3.2 8.3 5.1L9.2 6H11M11 3.3V5H9.5C10 4.2 10.5 3.6 11 3.3M15 11.8L14.2 11H15V11.8Z"; -var mdiCosineWave = "M22 2V4C20.26 4 19 8.58 17.96 12.27C16.57 17.27 15.26 22 12 22C8.74 22 7.43 17.27 6.04 12.27C5 8.58 3.74 4 2 4V2C5.26 2 6.57 6.73 7.96 11.73C9 15.42 10.26 20 12 20C13.74 20 15 15.42 16.04 11.73C17.43 6.73 18.74 2 22 2Z"; -var mdiCounter = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H11V6H4M20,18V6H18.76C19,6.54 18.95,7.07 18.95,7.13C18.88,7.8 18.41,8.5 18.24,8.75L15.91,11.3L19.23,11.28L19.24,12.5L14.04,12.47L14,11.47C14,11.47 17.05,8.24 17.2,7.95C17.34,7.67 17.91,6 16.5,6C15.27,6.05 15.41,7.3 15.41,7.3L13.87,7.31C13.87,7.31 13.88,6.65 14.25,6H13V18H15.58L15.57,17.14L16.54,17.13C16.54,17.13 17.45,16.97 17.46,16.08C17.5,15.08 16.65,15.08 16.5,15.08C16.37,15.08 15.43,15.13 15.43,15.95H13.91C13.91,15.95 13.95,13.89 16.5,13.89C19.1,13.89 18.96,15.91 18.96,15.91C18.96,15.91 19,17.16 17.85,17.63L18.37,18H20M8.92,16H7.42V10.2L5.62,10.76V9.53L8.76,8.41H8.92V16Z"; -var mdiCow = "M10.5,18A0.5,0.5 0 0,1 11,18.5A0.5,0.5 0 0,1 10.5,19A0.5,0.5 0 0,1 10,18.5A0.5,0.5 0 0,1 10.5,18M13.5,18A0.5,0.5 0 0,1 14,18.5A0.5,0.5 0 0,1 13.5,19A0.5,0.5 0 0,1 13,18.5A0.5,0.5 0 0,1 13.5,18M10,11A1,1 0 0,1 11,12A1,1 0 0,1 10,13A1,1 0 0,1 9,12A1,1 0 0,1 10,11M14,11A1,1 0 0,1 15,12A1,1 0 0,1 14,13A1,1 0 0,1 13,12A1,1 0 0,1 14,11M18,18C18,20.21 15.31,22 12,22C8.69,22 6,20.21 6,18C6,17.1 6.45,16.27 7.2,15.6C6.45,14.6 6,13.35 6,12L6.12,10.78C5.58,10.93 4.93,10.93 4.4,10.78C3.38,10.5 1.84,9.35 2.07,8.55C2.3,7.75 4.21,7.6 5.23,7.9C5.82,8.07 6.45,8.5 6.82,8.96L7.39,8.15C6.79,7.05 7,4 10,3L9.91,3.14V3.14C9.63,3.58 8.91,4.97 9.67,6.47C10.39,6.17 11.17,6 12,6C12.83,6 13.61,6.17 14.33,6.47C15.09,4.97 14.37,3.58 14.09,3.14L14,3C17,4 17.21,7.05 16.61,8.15L17.18,8.96C17.55,8.5 18.18,8.07 18.77,7.9C19.79,7.6 21.7,7.75 21.93,8.55C22.16,9.35 20.62,10.5 19.6,10.78C19.07,10.93 18.42,10.93 17.88,10.78L18,12C18,13.35 17.55,14.6 16.8,15.6C17.55,16.27 18,17.1 18,18M12,16C9.79,16 8,16.9 8,18C8,19.1 9.79,20 12,20C14.21,20 16,19.1 16,18C16,16.9 14.21,16 12,16M12,14C13.12,14 14.17,14.21 15.07,14.56C15.65,13.87 16,13 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13 8.35,13.87 8.93,14.56C9.83,14.21 10.88,14 12,14M14.09,3.14V3.14Z"; -var mdiCpu32Bit = "M9,3V5H7A2,2 0 0,0 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11H21V9H19V7A2,2 0 0,0 17,5H15V3H13V5H11V3M7,9H10.5A1,1 0 0,1 11.5,10V14A1,1 0 0,1 10.5,15H7V13.5H10V12.75H8.5V11.25H10V10.5H7M12.5,9H16A1,1 0 0,1 17,10V11.75A1,1 0 0,1 16,12.75H14V13.5H17V15H12.5V12.25A1,1 0 0,1 13.5,11.25H15.5V10.5H12.5"; -var mdiCpu64Bit = "M9,3V5H7A2,2 0 0,0 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11H21V9H19V7A2,2 0 0,0 17,5H15V3H13V5H11V3M8,9H11.5V10.5H8.5V11.25H10.5A1,1 0 0,1 11.5,12.25V14A1,1 0 0,1 10.5,15H8A1,1 0 0,1 7,14V10A1,1 0 0,1 8,9M12.5,9H14V11H15.5V9H17V15H15.5V12.5H12.5M8.5,12.75V13.5H10V12.75"; -var mdiCrane = "M20,6V5A1,1 0 0,0 19,4H9V3H6V4H5V6H6V15H5V13H3V15H2V17H3V21H5V17H10V21H12V19.92L12,17H13V15H12V13H10V15H9V6H17V10.62C16.53,10.79 16.19,11.23 16.19,11.76C16.19,12.2 16.43,12.6 16.8,12.82V14H17.42C17.76,14 18.03,14.28 18.03,14.62C18.03,14.96 17.76,15.24 17.42,15.24C17.2,15.24 17,15.12 16.89,14.93C16.71,14.64 16.34,14.54 16.05,14.71C15.75,14.87 15.65,15.25 15.82,15.55C16.15,16.11 16.76,16.47 17.42,16.47C18.43,16.47 19.26,15.64 19.26,14.62C19.26,13.84 18.76,13.14 18.03,12.88V12.82C18.41,12.6 18.65,12.2 18.65,11.76C18.65,11.3 18.38,10.91 18,10.7V6H20M8,13.66L7,14.66V13.24L8,12.24V13.66M8,10.71L7,11.71V10.29L8,9.29V10.71M7,8.71V7.29L8,6.29V7.71L7,8.71Z"; -var mdiCreation = "M19,1L17.74,3.75L15,5L17.74,6.26L19,9L20.25,6.26L23,5L20.25,3.75M9,4L6.5,9.5L1,12L6.5,14.5L9,20L11.5,14.5L17,12L11.5,9.5M19,15L17.74,17.74L15,19L17.74,20.25L19,23L20.25,20.25L23,19L20.25,17.74"; -var mdiCreativeCommons = "M11.89,10.34L10.55,11.04C10.41,10.74 10.24,10.53 10.03,10.41C9.82,10.29 9.62,10.23 9.45,10.23C8.55,10.23 8.11,10.82 8.11,12C8.11,12.54 8.22,12.97 8.45,13.29C8.67,13.61 9,13.77 9.45,13.77C10.03,13.77 10.44,13.5 10.68,12.91L11.91,13.54C11.65,14.03 11.29,14.41 10.82,14.69C10.36,14.97 9.85,15.11 9.29,15.11C8.39,15.11 7.67,14.84 7.12,14.29C6.58,13.74 6.3,13 6.3,12C6.3,11.05 6.58,10.3 7.13,9.74C7.69,9.18 8.39,8.9 9.23,8.9C10.47,8.89 11.36,9.38 11.89,10.34M17.66,10.34L16.34,11.04C16.2,10.74 16,10.53 15.81,10.41C15.6,10.29 15.4,10.23 15.21,10.23C14.32,10.23 13.87,10.82 13.87,12C13.87,12.54 14,12.97 14.21,13.29C14.44,13.61 14.77,13.77 15.21,13.77C15.8,13.77 16.21,13.5 16.45,12.91L17.7,13.54C17.42,14.03 17.05,14.41 16.59,14.69C16.12,14.97 15.62,15.11 15.07,15.11C14.17,15.11 13.44,14.84 12.9,14.29C12.36,13.74 12.09,13 12.09,12C12.09,11.05 12.37,10.3 12.92,9.74C13.47,9.18 14.17,8.9 15,8.9C16.26,8.89 17.14,9.38 17.66,10.34M12,3.5A8.5,8.5 0 0,1 20.5,12A8.5,8.5 0 0,1 12,20.5A8.5,8.5 0 0,1 3.5,12A8.5,8.5 0 0,1 12,3.5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiCreditCard = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 11H4V8H20Z"; -var mdiCreditCardCheck = "M20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.03 19.67 13 19.34 13 19C13 15.69 15.69 13 19 13C20.06 13 21.09 13.28 22 13.81V6C22 4.89 21.11 4 20 4M20 11H4V8H20M17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25L17.75 22"; -var mdiCreditCardCheckOutline = "M13 19C13 18.66 13.04 18.33 13.09 18H3V12H19V13C19.7 13 20.37 13.13 21 13.35V6C21 4.89 20.11 4 19 4H3C1.89 4 1 4.89 1 6V18C1 19.1 1.89 20 3 20H13.09C13.04 19.67 13 19.34 13 19M3 6H19V8H3V6M17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25L17.75 22"; -var mdiCreditCardClock = "M16,14H17.5V16.82L19.94,18.23L19.19,19.53L16,17.69V14M24,17A7,7 0 0,1 17,24C14.21,24 11.8,22.36 10.67,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V12.1C23.24,13.36 24,15.09 24,17M17,12A5,5 0 0,0 12,17A5,5 0 0,0 17,22A5,5 0 0,0 22,17A5,5 0 0,0 17,12M20,10V7H4V10H20Z"; -var mdiCreditCardClockOutline = "M16,14H17.5V16.82L19.94,18.23L19.19,19.53L16,17.69V14M24,17A7,7 0 0,1 17,24C14.21,24 11.8,22.36 10.67,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V12.1C23.24,13.36 24,15.09 24,17M10,17C10,15.04 10.81,13.27 12.1,12H4V18H10.07C10,17.67 10,17.34 10,17M17,12A5,5 0 0,0 12,17A5,5 0 0,0 17,22A5,5 0 0,0 22,17A5,5 0 0,0 17,12M20,8V6H4V8H20Z"; -var mdiCreditCardMarker = "M18.5 12C16.6 12 15 13.6 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5C22 13.6 20.4 12 18.5 12M18.5 16.8C17.8 16.8 17.3 16.2 17.3 15.6C17.3 14.9 17.9 14.4 18.5 14.4S19.7 15 19.7 15.6C19.8 16.2 19.2 16.8 18.5 16.8M14.55 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H20C21.11 4 22 4.89 22 6V11.3C21.42 10.81 20.74 10.44 20 10.22V8H4V11H15.39C13.96 12 13 13.66 13 15.5C13 17 13.72 18.61 14.55 20Z"; -var mdiCreditCardMarkerOutline = "M13.5,18H4V12H14.3C15.3,10.8 16.8,10 18.5,10C19.8,10 21,10.5 22,11.3V6A2,2 0 0,0 20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H14.6C14.2,19.4 13.8,18.7 13.5,18M4,6H20V8H4V6M18.5,12C16.6,12 15,13.6 15,15.5C15,18.1 18.5,22 18.5,22C18.5,22 22,18.1 22,15.5C22,13.6 20.4,12 18.5,12M18.5,16.8C17.8,16.8 17.3,16.2 17.3,15.6C17.3,14.9 17.9,14.4 18.5,14.4C19.1,14.4 19.7,15 19.7,15.6C19.8,16.2 19.2,16.8 18.5,16.8Z"; -var mdiCreditCardMinus = "M20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.03 19.67 13 19.34 13 19C13 15.69 15.69 13 19 13C20.06 13 21.09 13.28 22 13.81V6C22 4.89 21.11 4 20 4M20 11H4V8H20M23 18V20H15V18H23Z"; -var mdiCreditCardMinusOutline = "M24 18V20H16V18M19 8V6H3V8H19M19 12H3V18H14V20H3C1.89 20 1 19.1 1 18V6C1 4.89 1.89 4 3 4H19C20.11 4 21 4.89 21 6V13H19V12Z"; -var mdiCreditCardMultiple = "M21 9V6H7V9H21M21 3A2 2 0 0 1 23 5V15A2 2 0 0 1 21 17H7A2 2 0 0 1 5 15V5A2 2 0 0 1 7 3H21M3 19H18V21H3A2 2 0 0 1 1 19V8H3Z"; -var mdiCreditCardMultipleOutline = "M21,8V6H7V8H21M21,16V11H7V16H21M21,4A2,2 0 0,1 23,6V16A2,2 0 0,1 21,18H7C5.89,18 5,17.1 5,16V6C5,4.89 5.89,4 7,4H21M3,20H18V22H3A2,2 0 0,1 1,20V9H3V20Z"; -var mdiCreditCardOff = "M11.2 8L7.2 4H20A2 2 0 0 1 22 6V18A1.91 1.91 0 0 1 21.88 18.68L14.2 11H20V8M20.84 22.73L18.11 20H4A2 2 0 0 1 2 18V6A2 2 0 0 1 2.65 4.54L1.11 3L2.39 1.73L22.11 21.46M9.11 11L6.11 8H4V11Z"; -var mdiCreditCardOffOutline = "M0.93,4.2L2.21,2.93L20,20.72L18.73,22L16.73,20H4C2.89,20 2,19.1 2,18V6C2,5.78 2.04,5.57 2.11,5.38L0.93,4.2M20,8V6H7.82L5.82,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L19.82,18H20V12H13.82L9.82,8H20M4,8H4.73L4,7.27V8M4,12V18H14.73L8.73,12H4Z"; -var mdiCreditCardOutline = "M20,8H4V6H20M20,18H4V12H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"; -var mdiCreditCardPlus = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H13.09A5.47 5.47 0 0 1 13 19A6 6 0 0 1 19 13A5.88 5.88 0 0 1 22 13.81V6A2 2 0 0 0 20 4M20 11H4V8H20M20 15V18H23V20H20V23H18V20H15V18H18V15Z"; -var mdiCreditCardPlusOutline = "M21,18H24V20H21V23H19V20H16V18H19V15H21V18M19,8V6H3V8H19M19,12H3V18H14V20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H19A2,2 0 0,1 21,6V13H19V12Z"; -var mdiCreditCardRefresh = "M20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H11.68C11.57 19.5 11.5 19 11.5 18.5C11.5 14.91 14.41 12 18 12C19.5 12 20.9 12.53 22 13.4V6C22 4.89 21.11 4 20 4M20 11H4V8H20V11M20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5S16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5S15.79 14.5 18 14.5C19.11 14.5 20.11 14.95 20.83 15.67Z"; -var mdiCreditCardRefreshOutline = "M20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H11.68C11.57 19.5 11.5 19 11.5 18.5C11.5 18.33 11.5 18.17 11.53 18H4V12H20V12.32C20.74 12.56 21.41 12.93 22 13.4V6C22 4.89 21.1 4 20 4M20 8H4V6H20V8M20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5S16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5S15.79 14.5 18 14.5C19.11 14.5 20.11 14.95 20.83 15.67Z"; -var mdiCreditCardRefund = "M18 11H6A2 2 0 0 0 4 13V21A2 2 0 0 0 6 23H18A2 2 0 0 0 20 21V13A2 2 0 0 0 18 11M18 17H6V14H18M17 5V10H15.5V6.5H9.88L12.3 8.93L11.24 10L7 5.75L11.24 1.5L12.3 2.57L9.88 5Z"; -var mdiCreditCardRefundOutline = "M18,11H6A2,2 0 0,0 4,13V21A2,2 0 0,0 6,23H18A2,2 0 0,0 20,21V13A2,2 0 0,0 18,11M18,21H6V17H18V21M18,15H6V13H18V15M17,5V10H15.5V6.5H9.88L12.3,8.93L11.24,10L7,5.75L11.24,1.5L12.3,2.57L9.88,5H17Z"; -var mdiCreditCardRemove = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H13.09A5.47 5.47 0 0 1 13 19A6 6 0 0 1 19 13A5.88 5.88 0 0 1 22 13.81V6A2 2 0 0 0 20 4M20 11H4V8H20M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z"; -var mdiCreditCardRemoveOutline = "M13 19C13 18.66 13.04 18.33 13.09 18H3V12H19V13C19.7 13 20.37 13.13 21 13.35V6C21 4.89 20.11 4 19 4H3C1.89 4 1 4.89 1 6V18C1 19.1 1.89 20 3 20H13.09C13.04 19.67 13 19.34 13 19M3 6H19V8H3V6M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.46L22.54 16.88Z"; -var mdiCreditCardScan = "M18 6H6A2 2 0 0 0 4 8V16A2 2 0 0 0 6 18H18A2 2 0 0 0 20 16V8A2 2 0 0 0 18 6M18 12H6V9H18M2 4H6V2H2A2 2 0 0 0 0 4V8H2V4M22 2H18V4H22V8H24V4A2 2 0 0 0 22 2M2 16H0V20A2 2 0 0 0 2 22H6V20H2V16M22 20H18V22H22A2 2 0 0 0 24 20V16H22V20"; -var mdiCreditCardScanOutline = "M2,4H6V2H2A2,2 0 0,0 0,4V8H2V4M22,2H18V4H22V8H24V4A2,2 0 0,0 22,2M2,16H0V20A2,2 0 0,0 2,22H6V20H2V16M22,20H18V22H22A2,2 0 0,0 24,20V16H22V20M4,8V16A2,2 0 0,0 6,18H18A2,2 0 0,0 20,16V8A2,2 0 0,0 18,6H6A2,2 0 0,0 4,8M6,16V12H18V16H6M18,8V10H6V8H18Z"; -var mdiCreditCardSearch = "M11.82 11C9.4 13.5 9.4 17.5 11.82 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H20C21.11 4 22 4.89 22 6V12.06C21.74 11.65 21.45 11.26 21.1 10.9C20.76 10.57 20.39 10.27 20 10.03V8H4V11H11.82M23.39 21L22 22.39L18.88 19.32C18.19 19.75 17.37 20 16.5 20C14 20 12 18 12 15.5S14 11 16.5 11 21 13 21 15.5C21 16.38 20.75 17.21 20.31 17.9L23.39 21M19 15.5C19 14.12 17.88 13 16.5 13S14 14.12 14 15.5 15.12 18 16.5 18 19 16.88 19 15.5Z"; -var mdiCreditCardSearchOutline = "M11.03 12C11.28 11.61 11.57 11.24 11.9 10.9C14.44 8.37 18.56 8.37 21.1 10.9C21.45 11.26 21.74 11.65 22 12.06V6C22 4.89 21.1 4 20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H11.82C11.24 19.4 10.8 18.72 10.5 18H4V12H11.03M4 6H20V8H4V6M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z"; -var mdiCreditCardSettings = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 11H4V8H20M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15Z"; -var mdiCreditCardSettingsOutline = "M20,8H4V6H20M20,18H4V12H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z"; -var mdiCreditCardSync = "M13 17.5C13 18.39 13.18 19.23 13.5 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H20C21.11 4 22 4.89 22 6V11.5C21.23 11.18 20.39 11 19.5 11H20V8H4V11H19.5C15.91 11 13 13.91 13 17.5M19 20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20M19 13.5V12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5Z"; -var mdiCreditCardSyncOutline = "M4 18V12H16.05C17.05 11.37 18.23 11 19.5 11C20.39 11 21.23 11.18 22 11.5V6C22 4.89 21.1 4 20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.5C13.24 19.38 13.08 18.7 13.03 18H4M4 6H20V8H4V6M23 17.5C23 18.32 22.75 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L19 12V13.5C21.21 13.5 23 15.29 23 17.5M19 18.5L21.25 20.75L19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5Z"; -var mdiCreditCardWireless = "M4.93 4.92L6.34 6.33C9.46 3.2 14.53 3.2 17.66 6.33L19.07 4.92C15.17 1 8.84 1 4.93 4.92M7.76 7.75L9.17 9.16C10.73 7.6 13.26 7.6 14.83 9.16L16.24 7.75C13.9 5.41 10.1 5.41 7.76 7.75M18 11H6C4.89 11 4 11.9 4 13V21C4 22.11 4.89 23 6 23H18C19.11 23 20 22.11 20 21V13C20 11.9 19.11 11 18 11M18 17H6V14H18V17Z"; -var mdiCreditCardWirelessOff = "M12 2C9.85 2 7.7 2.69 5.9 4.08L7.32 5.5C10.45 3.24 14.84 3.5 17.66 6.33L19.07 4.92C17.12 2.96 14.56 2 12 2M3.28 4L2 5.27L7.73 11H6C4.89 11 4 11.9 4 13V21C4 22.11 4.89 23 6 23H18C18.5 23 18.92 22.82 19.27 22.54L19.73 23L21 21.72M12 6C10.87 6 9.75 6.31 8.77 6.94L10.24 8.41C11.73 7.68 13.58 7.92 14.83 9.16L16.24 7.75C15.07 6.58 13.54 6 12 6M12.82 11L15.82 14H18V16.18L20 18.18V13C20 11.9 19.11 11 18 11M6 14H10.73L13.73 17H6Z"; -var mdiCreditCardWirelessOffOutline = "M12 2C9.85 2 7.7 2.69 5.9 4.08L7.32 5.5C10.45 3.24 14.84 3.5 17.66 6.33L19.07 4.92C17.12 2.96 14.56 2 12 2M3.28 4L2 5.27L7.73 11H6C4.89 11 4 11.9 4 13V21C4 22.11 4.89 23 6 23H18C18.47 23 18.92 22.84 19.27 22.54L19.73 23L21 21.72M12 6C10.87 6 9.75 6.31 8.77 6.94L10.24 8.41C11.73 7.68 13.58 7.92 14.83 9.16L16.24 7.75C15.07 6.58 13.54 6 12 6M12.82 11L14.82 13H18V15H16.82L20 18.18V13C20 11.9 19.11 11 18 11M6 13H9.73L11.73 15H6M6 17H13.73L17.73 21H6Z"; -var mdiCreditCardWirelessOutline = "M18,11H6A2,2 0 0,0 4,13V21A2,2 0 0,0 6,23H18A2,2 0 0,0 20,21V13A2,2 0 0,0 18,11M18,21H6V17H18V21M18,15H6V13H18V15M4.93,4.92L6.34,6.33C9.46,3.2 14.53,3.2 17.66,6.33L19.07,4.92C15.17,1 8.84,1 4.93,4.92M7.76,7.75L9.17,9.16C10.73,7.6 13.26,7.6 14.83,9.16L16.24,7.75C13.9,5.41 10.1,5.41 7.76,7.75Z"; -var mdiCricket = "M14.34,17.77L15.75,16.36L20,20.58L18.56,22L14.34,17.77M18.5,2A3.5,3.5 0 0,1 22,5.5A3.5,3.5 0 0,1 18.5,9A3.5,3.5 0 0,1 15,5.5A3.5,3.5 0 0,1 18.5,2M2.24,7.11L5.07,4.28C5.46,3.89 6.09,3.89 6.5,4.28L14.97,12.77C15.36,13.16 15.36,13.79 14.97,14.18L12.14,17C11.75,17.4 11.12,17.4 10.72,17L2.24,8.53C1.85,8.13 1.85,7.5 2.24,7.11Z"; -var mdiCrop = "M7,17V1H5V5H1V7H5V17A2,2 0 0,0 7,19H17V23H19V19H23V17M17,15H19V7C19,5.89 18.1,5 17,5H9V7H17V15Z"; -var mdiCropFree = "M19,3H15V5H19V9H21V5C21,3.89 20.1,3 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M5,15H3V19A2,2 0 0,0 5,21H9V19H5M3,5V9H5V5H9V3H5A2,2 0 0,0 3,5Z"; -var mdiCropLandscape = "M19,17H5V7H19M19,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H19A2,2 0 0,0 21,17V7C21,5.89 20.1,5 19,5Z"; -var mdiCropPortrait = "M17,19H7V5H17M17,3H7A2,2 0 0,0 5,5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V5C19,3.89 18.1,3 17,3Z"; -var mdiCropRotate = "M7.47,21.5C4.2,19.93 1.86,16.76 1.5,13H0C0.5,19.16 5.66,24 11.95,24C12.18,24 12.39,24 12.61,23.97L8.8,20.15L7.47,21.5M12.05,0C11.82,0 11.61,0 11.39,0.04L15.2,3.85L16.53,2.5C19.8,4.07 22.14,7.24 22.5,11H24C23.5,4.84 18.34,0 12.05,0M16,14H18V8C18,6.89 17.1,6 16,6H10V8H16V14M8,16V4H6V6H4V8H6V16A2,2 0 0,0 8,18H16V20H18V18H20V16H8Z"; -var mdiCropSquare = "M18,18H6V6H18M18,4H6A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V6C20,4.89 19.1,4 18,4Z"; -var mdiCrosshairs = "M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z"; -var mdiCrosshairsGps = "M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z"; -var mdiCrosshairsOff = "M20.94 11C20.5 6.83 17.17 3.5 13 3.06V1H11V3.06C9.87 3.18 8.81 3.5 7.84 4.03L9.34 5.53C10.16 5.19 11.06 5 12 5C15.87 5 19 8.13 19 12C19 12.94 18.81 13.84 18.5 14.65L20 16.15C20.5 15.19 20.82 14.13 20.95 13H23V11H20.94M3 4.27L5.04 6.31C3.97 7.62 3.25 9.23 3.06 11H1V13H3.06C3.5 17.17 6.83 20.5 11 20.94V23H13V20.94C14.77 20.74 16.38 20.03 17.69 18.96L19.73 21L21 19.73L4.27 3L3 4.27M16.27 17.54C15.09 18.45 13.61 19 12 19C8.13 19 5 15.87 5 12C5 10.39 5.55 8.91 6.46 7.73L16.27 17.54Z"; -var mdiCrosshairsQuestion = "M3.05 13H1V11H3.05C3.5 6.83 6.83 3.5 11 3.05V1H13V3.05C17.17 3.5 20.5 6.83 20.95 11H23V13H20.95C20.5 17.17 17.17 20.5 13 20.95V23H11V20.95C6.83 20.5 3.5 17.17 3.05 13M12 5C8.13 5 5 8.13 5 12S8.13 19 12 19 19 15.87 19 12 15.87 5 12 5M11.13 17.25H12.88V15.5H11.13V17.25M12 6.75C10.07 6.75 8.5 8.32 8.5 10.25H10.25C10.25 9.28 11.03 8.5 12 8.5S13.75 9.28 13.75 10.25C13.75 12 11.13 11.78 11.13 14.63H12.88C12.88 12.66 15.5 12.44 15.5 10.25C15.5 8.32 13.93 6.75 12 6.75Z"; -var mdiCrown = "M5 16L3 5L8.5 10L12 4L15.5 10L21 5L19 16H5M19 19C19 19.6 18.6 20 18 20H6C5.4 20 5 19.6 5 19V18H19V19Z"; -var mdiCrownOutline = "M12 8L15 13.2L18 10.5L17.3 14H6.7L6 10.5L9 13.2L12 8M12 4L8.5 10L3 5L5 16H19L21 5L15.5 10L12 4M19 18H5V19C5 19.6 5.4 20 6 20H18C18.6 20 19 19.6 19 19V18Z"; -var mdiCryengine = "M23.03,12.4M23.03,12.5V12.5C23,13 20.91,15.23 17.82,16.24C14.05,17.5 7.97,17.03 7.97,12.3C7.97,10.08 9.78,8.27 12,8.27C14.25,8.27 16.05,10.09 16.05,12.31C16.05,13.39 15.58,14.44 14.87,15.18C15.54,15.17 17.94,15 20.21,13.12C20.46,12.88 20.62,12.68 20.69,12.55C20.71,12.5 20.74,12.46 20.73,12.4C20.73,11.92 18.12,8.19 12.72,7.12C19.22,7.46 23,11.32 23.03,12.4V12.5H23.03M12,10C10.74,10 9.71,11.04 9.71,12.3C9.71,13.57 10.74,14.59 12,14.59C13.27,14.59 14.29,13.57 14.29,12.3C14.29,11.04 13.27,10 12,10M3.31,12.34C3.31,12.34 3.31,12.31 3.31,12.42V12.42C3.41,12.94 4.82,15.41 10.28,16.88C3.96,16.37 1.12,13.28 1.04,12.42H1.03C1.03,12.31 1.03,12.36 1.03,12.35C1.03,11.5 4.96,7.58 10.92,7.15C6.14,8.26 3.31,11.87 3.31,12.34V12.34Z"; -var mdiCrystalBall = "M9.38,8.38L11.5,9.34L13.62,8.38L12.66,10.5L13.62,12.62L11.5,11.66L9.38,12.62L10.34,10.5L9.38,8.38M16.5,2.5L17.59,5.41L20.5,6.5L17.59,7.59L16.5,10.5L15.41,7.59L12.5,6.5L15.41,5.41L16.5,2.5M6,19H7V18A1,1 0 0,1 8,17H8.26C6,15.7 4.5,13.28 4.5,10.5A7.5,7.5 0 0,1 12,3C13.05,3 14.05,3.22 14.96,3.61L14.59,4.59L13.17,5.12C12.79,5.04 12.4,5 12,5A5.5,5.5 0 0,0 6.5,10.5A5.5,5.5 0 0,0 12,16C14.91,16 17.3,13.73 17.5,10.87L18.41,8.41L19.12,8.14C19.37,8.88 19.5,9.68 19.5,10.5C19.5,13.28 18,15.7 15.74,17H16A1,1 0 0,1 17,18V19H18A2,2 0 0,1 20,21V22H4V21A2,2 0 0,1 6,19Z"; -var mdiCube = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15Z"; -var mdiCubeOff = "M20.84 22.73L17.28 19.17L12.57 21.82C12.41 21.94 12.21 22 12 22S11.59 21.94 11.43 21.82L3.53 17.38C3.21 17.21 3 16.88 3 16.5V7.5C3 7.12 3.21 6.79 3.53 6.62L4.3 6.19L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M12 4.15L17.96 7.5L13.31 10.11L20.53 17.33C20.82 17.16 21 16.85 21 16.5V7.5C21 7.12 20.79 6.79 20.47 6.62L12.57 2.18C12.41 2.06 12.21 2 12 2S11.59 2.06 11.43 2.18L7.56 4.36L9 5.82L12 4.15Z"; -var mdiCubeOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L4.3 6.19L3.53 6.62C3.21 6.79 3 7.12 3 7.5V16.5C3 16.88 3.21 17.21 3.53 17.38L11.43 21.82C11.59 21.94 11.79 22 12 22S12.41 21.94 12.57 21.82L17.28 19.17L20.84 22.73L22.11 21.46M5 15.91V9.21L10.29 12.18L11 12.89V19.29L5 15.91M13 19.29V14.89L15.82 17.7L13 19.29M9 5.82L7.56 4.36L11.43 2.18C11.59 2.06 11.79 2 12 2S12.41 2.06 12.57 2.18L20.47 6.62C20.79 6.79 21 7.12 21 7.5V16.5C21 16.85 20.82 17.16 20.53 17.33L19 15.8V9.21L14.78 11.58L13.31 10.11L17.96 7.5L12 4.15L9 5.82Z"; -var mdiCubeOutline = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z"; -var mdiCubeScan = "M17,22V20H20V17H22V20.5C22,20.89 21.84,21.24 21.54,21.54C21.24,21.84 20.89,22 20.5,22H17M7,22H3.5C3.11,22 2.76,21.84 2.46,21.54C2.16,21.24 2,20.89 2,20.5V17H4V20H7V22M17,2H20.5C20.89,2 21.24,2.16 21.54,2.46C21.84,2.76 22,3.11 22,3.5V7H20V4H17V2M7,2V4H4V7H2V3.5C2,3.11 2.16,2.76 2.46,2.46C2.76,2.16 3.11,2 3.5,2H7M13,17.25L17,14.95V10.36L13,12.66V17.25M12,10.92L16,8.63L12,6.28L8,8.63L12,10.92M7,14.95L11,17.25V12.66L7,10.36V14.95M18.23,7.59C18.73,7.91 19,8.34 19,8.91V15.23C19,15.8 18.73,16.23 18.23,16.55L12.75,19.73C12.25,20.05 11.75,20.05 11.25,19.73L5.77,16.55C5.27,16.23 5,15.8 5,15.23V8.91C5,8.34 5.27,7.91 5.77,7.59L11.25,4.41C11.5,4.28 11.75,4.22 12,4.22C12.25,4.22 12.5,4.28 12.75,4.41L18.23,7.59Z"; -var mdiCubeSend = "M16,4L9,8.04V15.96L16,20L23,15.96V8.04M16,6.31L19.8,8.5L16,10.69L12.21,8.5M0,7V9H7V7M11,10.11L15,12.42V17.11L11,14.81M21,10.11V14.81L17,17.11V12.42M2,11V13H7V11M4,15V17H7V15"; -var mdiCubeUnfolded = "M6,9V4H13V9H23V16H18V21H11V16H1V9H6M16,16H13V19H16V16M8,9H11V6H8V9M6,14V11H3V14H6M18,11V14H21V11H18M13,11V14H16V11H13M8,11V14H11V11H8Z"; -var mdiCup = "M18.32,8H5.67L5.23,4H18.77M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z"; -var mdiCupOff = "M1,4.27L2.28,3L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.97,22 5.13,21.23 5,20.23L3.53,6.8L1,4.27M18.32,8L18.77,4H5.82L3.82,2H21L19.29,17.47L9.82,8H18.32Z"; -var mdiCupOffOutline = "M3.83 2L5.83 4H18.78L17.5 15.66L19.3 17.5L21 2M2.27 3L1 4.27L3.53 6.8L5 20.23C5.13 21.23 5.97 22 7 22H17C17.47 22 17.91 21.82 18.26 21.54L19.73 23L21 21.73M5.78 9.06L16.73 20H7Z"; -var mdiCupOutline = "M3 2L5 20.23C5.13 21.23 5.97 22 7 22H17C18 22 18.87 21.23 19 20.23L21 2H3M5.22 4H18.78L17 20H7L5.22 4Z"; -var mdiCupWater = "M18.32,8H5.67L5.23,4H18.77M12,19A3,3 0 0,1 9,16C9,14 12,10.6 12,10.6C12,10.6 15,14 15,16A3,3 0 0,1 12,19M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z"; -var mdiCupboard = "M17 2H7C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2M10 18H8V15H10V18M16 18H14V15H16V18M17 12H7V9H17V12M17 7H7V4H17V7Z"; -var mdiCupboardOutline = "M7 2C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2H7M7 4H17V7H7V4M7 9H17V12H7V9M7 14H11V19H7V14M13 14H17V19H13V14M8 15V18H10V15H8M14 15V18H16V15H14Z"; -var mdiCupcake = "M12,1.5A2.5,2.5 0 0,1 14.5,4A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 9.5,4A2.5,2.5 0 0,1 12,1.5M15.87,5C18,5 20,7 20,9C22.7,9 22.7,13 20,13H4C1.3,13 1.3,9 4,9C4,7 6,5 8.13,5C8.57,6.73 10.14,8 12,8C13.86,8 15.43,6.73 15.87,5M5,15H8L9,22H7L5,15M10,15H14L13,22H11L10,15M16,15H19L17,22H15L16,15Z"; -var mdiCurling = "M10,3V5C12.5,5 13.9,5.05 14.72,5.41C15.26,5.65 15.73,6.21 16.25,7H5V9H19.62L18.89,7.55C17.86,5.5 16.96,4.22 15.53,3.59C14.1,2.95 12.5,3 10,3M6,11C3.78,11 2,12.78 2,15V18C2,20.22 3.78,22 6,22H18C20.22,22 22,20.22 22,18V15C22,12.78 20.22,11 18,11H6Z"; -var mdiCurrencyBdt = "M18.09,10.5V9H9.59V4.5A1.5,1.5 0 0,0 8.09,3A1.5,1.5 0 0,0 6.59,4.5A1.5,1.5 0 0,0 8.09,6V9H5.09V10.5H8.09V16.7C8.09,19.06 10,20.97 12.34,21C14.68,20.96 16.54,19.04 16.5,16.7C16.5,15.11 15.75,13.61 14.5,12.62C14.28,12.44 14.05,12.28 13.8,12.15C13.58,12.05 13.34,12 13.1,12C12.39,12 11.74,12.39 11.39,13C11.2,13.3 11.1,13.65 11.1,14C11.11,15.1 12,16 13.11,16C13.73,16 14.31,15.69 14.69,15.2C14.9,15.67 15,16.18 15,16.7C15.04,18.2 13.86,19.45 12.34,19.5C10.81,19.5 9.58,18.23 9.59,16.7V10.5H18.09Z"; -var mdiCurrencyBrl = "M12,15H14C14,16.08 15.37,17 17,17C18.63,17 20,16.08 20,15C20,13.9 18.96,13.5 16.76,12.97C14.64,12.44 12,11.78 12,9C12,7.21 13.47,5.69 15.5,5.18V3H18.5V5.18C20.53,5.69 22,7.21 22,9H20C20,7.92 18.63,7 17,7C15.37,7 14,7.92 14,9C14,10.1 15.04,10.5 17.24,11.03C19.36,11.56 22,12.22 22,15C22,16.79 20.53,18.31 18.5,18.82V21H15.5V18.82C13.47,18.31 12,16.79 12,15M2,3H5.5A5.5,5.5 0 0,1 11,8.5C11,10.69 9.71,12.59 7.86,13.47L11.64,21H9.4L5.88,14H5.5L4,14V21H2V3M5.5,12A3.5,3.5 0 0,0 9,8.5A3.5,3.5 0 0,0 5.5,5H4V12H5.5Z"; -var mdiCurrencyBtc = "M6,4H8V2H10V4H12V2H14V4.03C16.25,4.28 18,6.18 18,8.5C18,9.8 17.45,11 16.56,11.8C17.73,12.61 18.5,13.97 18.5,15.5C18.5,18 16.5,20 14,20V22H12V20H10V22H8V20H6L6.5,18H8V6H6V4M10,13V18H14A2.5,2.5 0 0,0 16.5,15.5A2.5,2.5 0 0,0 14,13H10M10,6V11H13.5A2.5,2.5 0 0,0 16,8.5A2.5,2.5 0 0,0 13.5,6H13.5L10,6Z"; -var mdiCurrencyCny = "M11,21V16H6V14H11V13.71L10.16,12H6V10H9.19L5.77,3H8L12,11.2L16,3H18.23L14.81,10H18V12H13.84L13,13.71V14H18V16H13V21H11Z"; -var mdiCurrencyEth = "M6,5H18V7H6M7,11H17V13H7M5.5,17H18.5V19H5.5"; -var mdiCurrencyEur = "M7.07,11L7,12L7.07,13H17.35L16.5,15H7.67C8.8,17.36 11.21,19 14,19C16.23,19 18.22,17.96 19.5,16.33V19.12C18,20.3 16.07,21 14,21C10.08,21 6.75,18.5 5.5,15H2L3,13H5.05L5,12L5.05,11H2L3,9H5.5C6.75,5.5 10.08,3 14,3C16.5,3 18.8,4.04 20.43,5.71L19.57,7.75C18.29,6.08 16.27,5 14,5C11.21,5 8.8,6.64 7.67,9H19.04L18.19,11H7.07Z"; -var mdiCurrencyEurOff = "M22.11 21.46L2.39 1.73L1.11 3L6 7.89C5.81 8.25 5.64 8.62 5.5 9H3L2 11H5.05L5 12L5.05 13H3L2 15H5.5C6.75 18.5 10.08 21 14 21C15.5 21 16.89 20.65 18.12 20L20.84 22.73L22.11 21.46M7 12L7.07 11H9.12L11.12 13H7.07L7 12M14 19C11.21 19 8.8 17.37 7.67 15H13.12L16.6 18.5C15.79 18.81 14.92 19 14 19M17 13.81L16.21 13H17.35L17 13.81M18.19 11H14.21L12.21 9H19.04L18.19 11M9.7 6.5L8.27 5.07C9.83 3.78 11.82 3 14 3C16.5 3 18.8 4.05 20.43 5.72L19.57 7.76C18.29 6.09 16.27 5 14 5C12.38 5 10.89 5.58 9.7 6.5Z"; -var mdiCurrencyGbp = "M6,21V19C10,17 9.5,13 9.5,13H7V11H9.5C8.5,6.5 10,3 14,3C16,3 17,3.5 17,3.5V5.5C11,3.5 11,8 11.5,11H16V13H11.5C11.5,13 12,17 9.5,19H18V21H6Z"; -var mdiCurrencyIls = "M22,16A5,5 0 0,1 17,21H8V9H10V19H17A3,3 0 0,0 20,16V3H22V16M16,8V15H14V8A3,3 0 0,0 11,5H4V21H2V3H11A5,5 0 0,1 16,8Z"; -var mdiCurrencyInr = "M8,3H18L17,5H13.74C14.22,5.58 14.58,6.26 14.79,7H18L17,9H15C14.75,11.57 12.74,13.63 10.2,13.96V14H9.5L15.5,21H13L7,14V12H9.5V12C11.26,12 12.72,10.7 12.96,9H7L8,7H12.66C12.1,5.82 10.9,5 9.5,5H7L8,3Z"; -var mdiCurrencyJpy = "M11,21V16H6V14H11V13.71L10.16,12H6V10H9.19L5.77,3H8L12,11.2L16,3H18.23L14.81,10H18V12H13.84L13,13.71V14H18V16H13V21H11Z"; -var mdiCurrencyKrw = "M2,3H4L5.33,9H9.33L10.67,3H13.33L14.67,9H18.67L20,3H22L20.67,9H22V11H20.22L19.78,13H22V15H19.33L18,21H15.33L14,15H10L8.67,21H6L4.67,15H2V13H4.22L3.78,11H2V9H3.33L2,3M13.11,11H10.89L10.44,13H13.56L13.11,11M7.33,18L8,15H6.67L7.33,18M8.89,11H5.78L6.22,13H8.44L8.89,11M16.67,18L17.33,15H16L16.67,18M18.22,11H15.11L15.56,13H17.78L18.22,11M12,6L11.33,9H12.67L12,6Z"; -var mdiCurrencyKzt = "M5,3H19V5H5V3M5,6H19V8H13V21H11V8H5V6Z"; -var mdiCurrencyMnt = "M13 5V8.62L17 7.17V9.29L13 10.74V12.5L17 11.07V13.2L13 14.65V21H11V15.38L7 16.84V14.71L11 13.24V11.47L7 12.92V10.8L11 9.35V5H5V3H19V5H13Z"; -var mdiCurrencyNgn = "M4,9H6V3H8L11.42,9H16V3H18V9H20V11H18V13H20V15H18V21H16L12.57,15H8V21H6V15H4V13H6V11H4V9M8,9H9.13L8,7.03V9M8,11V13H11.42L10.28,11H8M16,17V15H14.85L16,17M12.56,11L13.71,13H16V11H12.56Z"; -var mdiCurrencyPhp = "M5,2V6H3V8H5V10H3V12H5V22H7V16H13C15.7,16 18.16,14.44 19.32,12H22V10H19.92C20.03,9.34 20.03,8.66 19.92,8H22V6H19.32C18.16,3.56 15.7,2 13,2M7,4H13C14.57,4 16.06,4.74 17,6H7V4M13,14H7V12H17C16.06,13.26 14.57,14 13,14M18,9C18,9.34 17.96,9.67 17.9,10H7V8H17.9C17.96,8.33 18,8.66 18,9Z"; -var mdiCurrencyRial = "M11,17H13V19H11V17M14,17H16V19H14V17M9,4H11V15A4,4 0 0,1 7,19H5A3,3 0 0,1 2,16V12H4V16A1,1 0 0,0 5,17H7C8.11,17 9,16.11 9,15V4M12,4H14V13H17V8H19V13C19,14.11 18.11,15 17,15H14C12.89,15 12,14.11 12,13V4M20,10H22V17A3,3 0 0,1 19,20H17V18H19A1,1 0 0,0 20,17V10Z"; -var mdiCurrencyRub = "M6,10H7V3H14.5C17,3 19,5 19,7.5C19,10 17,12 14.5,12H9V14H15V16H9V21H7V16H6V14H7V12H6V10M14.5,5H9V10H14.5A2.5,2.5 0 0,0 17,7.5A2.5,2.5 0 0,0 14.5,5Z"; -var mdiCurrencySign = "M4.41 3L3 4.41L5.69 7.1C4.63 8.46 4 10.15 4 12C4 13.85 4.63 15.55 5.69 16.9L3 19.59L4.41 21L7.1 18.31C8.46 19.37 10.15 20 12 20C13.85 20 15.55 19.37 16.9 18.31L19.59 21L21 19.59L18.31 16.9C19.37 15.54 20 13.85 20 12C20 10.15 19.37 8.45 18.31 7.1L21 4.41L19.59 3L16.9 5.69C15.54 4.63 13.85 4 12 4C10.15 4 8.45 4.63 7.1 5.69L4.41 3M12 6C15.31 6 18 8.69 18 12C18 15.31 15.31 18 12 18C8.69 18 6 15.31 6 12C6 8.69 8.69 6 12 6Z"; -var mdiCurrencyTry = "M19,12A9,9 0 0,1 10,21H8V12.77L5,13.87V11.74L8,10.64V8.87L5,9.96V7.84L8,6.74V3H10V6L15,4.2V6.32L10,8.14V9.92L15,8.1V10.23L10,12.05V19A7,7 0 0,0 17,12H19Z"; -var mdiCurrencyTwd = "M3,11H21V13H15V19H21V21H15A2,2 0 0,1 13,19V13H10.35L5.73,21L4,20L8.04,13H3V11M5,3H19V5H5V3Z"; -var mdiCurrencyUsd = "M7,15H9C9,16.08 10.37,17 12,17C13.63,17 15,16.08 15,15C15,13.9 13.96,13.5 11.76,12.97C9.64,12.44 7,11.78 7,9C7,7.21 8.47,5.69 10.5,5.18V3H13.5V5.18C15.53,5.69 17,7.21 17,9H15C15,7.92 13.63,7 12,7C10.37,7 9,7.92 9,9C9,10.1 10.04,10.5 12.24,11.03C14.36,11.56 17,12.22 17,15C17,16.79 15.53,18.31 13.5,18.82V21H10.5V18.82C8.47,18.31 7,16.79 7,15Z"; -var mdiCurrencyUsdCircle = "M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2M15 10H11V11H14A1 1 0 0 1 15 12V15A1 1 0 0 1 14 16H13V17H11V16H9V14H13V13H10A1 1 0 0 1 9 12V9A1 1 0 0 1 10 8H11V7H13V8H15Z"; -var mdiCurrencyUsdCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,17V16H9V14H13V13H10A1,1 0 0,1 9,12V9A1,1 0 0,1 10,8H11V7H13V8H15V10H11V11H14A1,1 0 0,1 15,12V15A1,1 0 0,1 14,16H13V17H11Z"; -var mdiCurrencyUsdOff = "M3,4.27L4.28,3L21,19.72L19.73,21L16.06,17.33C15.44,18 14.54,18.55 13.5,18.82V21H10.5V18.82C8.47,18.31 7,16.79 7,15H9C9,16.08 10.37,17 12,17C13.13,17 14.14,16.56 14.65,15.92L11.68,12.95C9.58,12.42 7,11.75 7,9C7,8.77 7,8.55 7.07,8.34L3,4.27M10.5,5.18V3H13.5V5.18C15.53,5.69 17,7.21 17,9H15C15,7.92 13.63,7 12,7C11.63,7 11.28,7.05 10.95,7.13L9.4,5.58L10.5,5.18Z"; -var mdiCurrentAc = "M12.43 11C12.28 10.84 10 7 7 7S2.32 10.18 2 11V13H11.57C11.72 13.16 14 17 17 17S21.68 13.82 22 13V11H12.43M7 9C8.17 9 9.18 9.85 10 11H4.31C4.78 10.17 5.54 9 7 9M17 15C15.83 15 14.82 14.15 14 13H19.69C19.22 13.83 18.46 15 17 15Z"; -var mdiCurrentDc = "M2,9V11H22V9H2M2,13V15H7V13H2M9,13V15H15V13H9M17,13V15H22V13H17Z"; -var mdiCursorDefault = "M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z"; -var mdiCursorDefaultClick = "M10.76,8.69A0.76,0.76 0 0,0 10,9.45V20.9C10,21.32 10.34,21.66 10.76,21.66C10.95,21.66 11.11,21.6 11.24,21.5L13.15,19.95L14.81,23.57C14.94,23.84 15.21,24 15.5,24C15.61,24 15.72,24 15.83,23.92L18.59,22.64C18.97,22.46 19.15,22 18.95,21.63L17.28,18L19.69,17.55C19.85,17.5 20,17.43 20.12,17.29C20.39,16.97 20.35,16.5 20,16.21L11.26,8.86L11.25,8.87C11.12,8.76 10.95,8.69 10.76,8.69M15,10V8H20V10H15M13.83,4.76L16.66,1.93L18.07,3.34L15.24,6.17L13.83,4.76M10,0H12V5H10V0M3.93,14.66L6.76,11.83L8.17,13.24L5.34,16.07L3.93,14.66M3.93,3.34L5.34,1.93L8.17,4.76L6.76,6.17L3.93,3.34M7,10H2V8H7V10"; -var mdiCursorDefaultClickOutline = "M11.5,11L17.88,16.37L17,16.55L16.36,16.67C15.73,16.8 15.37,17.5 15.65,18.07L15.92,18.65L17.28,21.59L15.86,22.25L14.5,19.32L14.24,18.74C13.97,18.15 13.22,17.97 12.72,18.38L12.21,18.78L11.5,19.35V11M10.76,8.69A0.76,0.76 0 0,0 10,9.45V20.9C10,21.32 10.34,21.66 10.76,21.66C10.95,21.66 11.11,21.6 11.24,21.5L13.15,19.95L14.81,23.57C14.94,23.84 15.21,24 15.5,24C15.61,24 15.72,24 15.83,23.92L18.59,22.64C18.97,22.46 19.15,22 18.95,21.63L17.28,18L19.69,17.55C19.85,17.5 20,17.43 20.12,17.29C20.39,16.97 20.35,16.5 20,16.21L11.26,8.86L11.25,8.87C11.12,8.76 10.95,8.69 10.76,8.69M15,10V8H20V10H15M13.83,4.76L16.66,1.93L18.07,3.34L15.24,6.17L13.83,4.76M10,0H12V5H10V0M3.93,14.66L6.76,11.83L8.17,13.24L5.34,16.07L3.93,14.66M3.93,3.34L5.34,1.93L8.17,4.76L6.76,6.17L3.93,3.34M7,10H2V8H7V10"; -var mdiCursorDefaultGesture = "M15.59 8C15.26 8 15 8.27 15 8.6V17.57C15 17.9 15.26 18.17 15.59 18.17C15.74 18.17 15.86 18.12 15.96 18.04L17.45 16.83L18.74 19.66C18.84 19.88 19.05 20 19.27 20C19.36 20 19.44 20 19.53 19.94L21.67 18.93C21.97 18.79 22.11 18.43 21.95 18.14L20.66 15.3L22.53 14.94C22.65 14.91 22.77 14.85 22.86 14.74C23.07 14.5 23.04 14.12 22.77 13.89L16 8.13C15.88 8.05 15.74 8 15.59 8M12.5 6.73C12.72 6.66 13.17 7.19 13.59 7.76L15 6.71C14.87 6.5 14.69 6.25 14.47 5.96C14.31 5.75 13.59 4.93 12.66 4.8C12.04 4.72 10.81 5.06 10.6 6.61C10.47 7.58 10.76 8.19 11.21 9.08C11.46 9.6 12.04 10.96 12.18 11.78C12.33 12.59 12.06 13.16 11.74 13.12C11.44 13.08 11.2 12.65 11.03 12.41C10.89 12.22 10 10.82 9.67 10.23C9.22 9.5 8.04 7.96 6.44 7.74C4.35 7.46 3.44 9.2 3.18 10.36L1 10.06V11.88L2.93 12.15C2.75 15.6 4.5 16.82 5.67 17C6.92 17.15 8.08 16.28 8.24 15.06C8.41 13.84 7.56 11.5 4.96 10.69C5.1 10.15 5.21 9.43 6.36 9.59C7.26 9.71 8.21 11.26 8.93 12.44C9.58 13.53 10.1 14.39 10.83 14.72C11.45 15 12.16 14.97 12.73 14.65C13.42 14.26 13.86 13.55 14 12.63C14.22 10.9 12.7 8.17 12.57 7.84C12.4 7.46 12.12 6.82 12.5 6.73M6.5 14.78C6.43 15.11 6.1 15.25 5.88 15.22C5.38 15.16 4.66 14.5 4.71 12.53C6.17 13.13 6.53 14.35 6.5 14.78Z"; -var mdiCursorDefaultGestureOutline = "M16.5 10.54L20.37 13.83L18.5 14.18L19.29 15.92L20.22 17.96L19.72 18.19L18.81 16.2L18 14.43L16.5 15.66V10.54M15.59 8C15.26 8 15 8.27 15 8.6V17.57C15 17.9 15.26 18.17 15.59 18.17C15.74 18.17 15.86 18.12 15.96 18.04L17.45 16.83L18.74 19.66C18.84 19.88 19.05 20 19.27 20C19.36 20 19.44 20 19.53 19.94L21.67 18.93C21.97 18.79 22.11 18.43 21.95 18.14L20.66 15.3L22.53 14.94C22.65 14.91 22.77 14.85 22.86 14.74C23.07 14.5 23.04 14.12 22.77 13.89L16 8.13C15.88 8.05 15.74 8 15.59 8M12.5 6.73C12.72 6.66 13.17 7.19 13.59 7.76L15 6.71C14.87 6.5 14.69 6.25 14.47 5.96C14.31 5.75 13.59 4.93 12.66 4.8C12.04 4.72 10.81 5.06 10.6 6.61C10.47 7.58 10.76 8.19 11.21 9.08C11.46 9.6 12.04 10.96 12.18 11.78C12.33 12.59 12.06 13.16 11.74 13.12C11.44 13.08 11.2 12.65 11.03 12.41C10.89 12.22 10 10.82 9.67 10.23C9.22 9.5 8.04 7.96 6.44 7.74C4.35 7.46 3.44 9.2 3.18 10.36L1 10.06V11.88L2.93 12.15C2.75 15.6 4.5 16.82 5.67 17C6.92 17.15 8.08 16.28 8.24 15.06C8.41 13.84 7.56 11.5 4.96 10.69C5.1 10.15 5.21 9.43 6.36 9.59C7.26 9.71 8.21 11.26 8.93 12.44C9.58 13.53 10.1 14.39 10.83 14.72C11.45 15 12.16 14.97 12.73 14.65C13.42 14.26 13.86 13.55 14 12.63C14.22 10.9 12.7 8.17 12.57 7.84C12.4 7.46 12.12 6.82 12.5 6.73M6.5 14.78C6.43 15.11 6.1 15.25 5.88 15.22C5.38 15.16 4.66 14.5 4.71 12.53C6.17 13.13 6.53 14.35 6.5 14.78Z"; -var mdiCursorDefaultOutline = "M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z"; -var mdiCursorMove = "M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z"; -var mdiCursorPointer = "M13.75,10.19L14.38,10.32L18.55,12.4C19.25,12.63 19.71,13.32 19.65,14.06V14.19L19.65,14.32L18.75,20.44C18.69,20.87 18.5,21.27 18.15,21.55C17.84,21.85 17.43,22 17,22H10.12C9.63,22 9.18,21.82 8.85,21.47L2.86,15.5L3.76,14.5C4,14.25 4.38,14.11 4.74,14.13H5.03L9,15V4.5A2,2 0 0,1 11,2.5A2,2 0 0,1 13,4.5V10.19H13.75Z"; -var mdiCursorText = "M13,19A1,1 0 0,0 14,20H16V22H13.5C12.95,22 12,21.55 12,21C12,21.55 11.05,22 10.5,22H8V20H10A1,1 0 0,0 11,19V5A1,1 0 0,0 10,4H8V2H10.5C11.05,2 12,2.45 12,3C12,2.45 12.95,2 13.5,2H16V4H14A1,1 0 0,0 13,5V19Z"; -var mdiDanceBallroom = "M14 3.5C14 4.33 13.33 5 12.5 5S11 4.33 11 3.5 11.67 2 12.5 2 14 2.67 14 3.5M8.5 5C7.67 5 7 5.67 7 6.5S7.67 8 8.5 8 10 7.33 10 6.5 9.33 5 8.5 5M14 12L13.22 9.75H16.18L18.34 8.67C18.71 8.5 18.86 8.04 18.67 7.67C18.5 7.3 18.04 7.14 17.67 7.33L16.85 7.74L16.36 6.9C16.07 6.25 15.36 5.88 14.66 6.04L12.19 6.57C11.5 6.72 11 7.35 11 8.07V8.77L8.57 10.39H8.58C8.5 10.46 8.39 10.55 8.33 10.67L7.44 12.44L5.66 13.33C5.29 13.5 5.14 13.97 5.33 14.34C5.46 14.6 5.73 14.75 6 14.75C6.11 14.75 6.23 14.73 6.34 14.67L8.56 13.56L9.6 11.5L11 13C10 16 3 20 3 20S7 22 12 22 21 20 21 20 16 16 14 12M16.85 11.09L16.53 11.25H15.33L15.39 11.41C15.91 12.44 16.67 13.5 17.5 14.44L16.97 11.03L16.85 11.09Z"; -var mdiDancePole = "M12 1V2L11.23 1.36L7.76 5.5L11 7.5V5.16L10.78 5L12 3.56V23H14V13.24L15.93 11.31C18.5 11.71 21.13 10.36 22.66 8.83L21.24 7.41C20.1 8.56 17.7 9.61 16 9.26L14 7.24V1M17 4A2 2 0 0 0 15 6A2 2 0 0 0 17 8A2 2 0 0 0 19 6A2 2 0 0 0 17 4M11 7.76L7.1 11.66C5.25 13.5 4.31 14.85 3.06 18.16L4.94 18.86C5.94 16.2 6.66 15.14 7.87 13.84L9.22 15.19L4.27 20.14L5.69 21.56L11 16.24Z"; -var mdiDataMatrix = "M2 2V22H22V20H20V18H22V16H20V14H22V12H18V10H16V12H14V10H12V8H8V12H12V16H10V18H12V20H10V18H8V16H6V14H4V12H6V6H4V2H2M6 6H8V2H6V6M8 16H10V14H8V16M18 10H22V8H18V10M18 8V4H16V6H14V8H18M16 4V2H14V4H16M18 4H20V2H18V4M20 4V6H22V4H20M10 2V6H12V2H10M14 14H16V16H18V20H14V14M4 18H6V20H4V18Z"; -var mdiDataMatrixEdit = "M20 12.1C19.9 12.1 19.7 12.2 19.6 12.3L18.6 13.3L20.7 15.4L21.7 14.4C21.9 14.2 21.9 13.8 21.7 13.6L20.4 12.3C20.3 12.2 20.2 12.1 20 12.1M18.1 13.9L12 19.9V22H14.1L20.2 15.9L18.1 13.9M8 6H6V2H8V6M10 16H8V14H10V16M12 6H10V2H12V6M16 2V4H14V2H16M20 4H18V2H20V4M10 20V18H8V16H6V14H4V12H6V6H4V2H2V22H10V20M6 20H4V18H6V20M22 10H18V8H22V10M20 6V4H22V6H20M18 4V8H14V6H16V4H18M10 18V16H12V12H8V8H12V10H14V12H16V10H18V11.1L15.1 14H14V15.1L11.1 18H10Z"; -var mdiDataMatrixMinus = "M16 2V4H14V2H16M12 2H10V6H12V2M10 14H8V16H10V14M16 4V6H14V8H18V4H16M8 2H6V6H8V2M20 2H18V4H20V2M13.8 22H2V2H4V6H6V12H4V14H6V16H8V18H10V20H12V18H10V16H12V12H8V8H12V10H14V12H16V10H18V12H22V13.8C21.1 13.3 20.1 13 19 13C17.8 13 16.6 13.4 15.7 14H14V15.7C13.4 16.6 13 17.8 13 19C13 20.1 13.3 21.1 13.8 22M6 18H4V20H6V18M22 8H18V10H22V8M22 6V4H20V6H22M15 18V20H23V18H15Z"; -var mdiDataMatrixPlus = "M16 2V4H14V2H16M12 2H10V6H12V2M10 14H8V16H10V14M16 4V6H14V8H18V4H16M8 2H6V6H8V2M20 2H18V4H20V2M13.8 22H2V2H4V6H6V12H4V14H6V16H8V18H10V20H12V18H10V16H12V12H8V8H12V10H14V12H16V10H18V12H22V13.8C21.1 13.3 20.1 13 19 13C17.8 13 16.6 13.4 15.7 14H14V15.7C13.4 16.6 13 17.8 13 19C13 20.1 13.3 21.1 13.8 22M6 18H4V20H6V18M22 8H18V10H22V8M22 6V4H20V6H22M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; -var mdiDataMatrixRemove = "M16 2V4H14V2H16M12 2H10V6H12V2M10 14H8V16H10V14M16 4V6H14V8H18V4H16M8 2H6V6H8V2M20 2H18V4H20V2M13.8 22H2V2H4V6H6V12H4V14H6V16H8V18H10V20H12V18H10V16H12V12H8V8H12V10H14V12H16V10H18V12H22V13.8C21.1 13.3 20.1 13 19 13C17.8 13 16.6 13.4 15.7 14H14V15.7C13.4 16.6 13 17.8 13 19C13 20.1 13.3 21.1 13.8 22M6 18H4V20H6V18M22 8H18V10H22V8M22 6V4H20V6H22M21.1 15.5L19 17.6L16.9 15.5L15.5 16.9L17.6 19L15.5 21.1L16.9 22.5L19 20.4L21.1 22.5L22.5 21.1L20.4 19L22.5 16.9L21.1 15.5Z"; -var mdiDataMatrixScan = "M2 2H6V0H2C.9 0 0 .9 0 2V6H2V2M22 0H18V2H22V6H24V2C24 .9 23.1 0 22 0M2 18H0V22C0 23.1 .9 24 2 24H6V22H2V18M22 22H18V24H22C23.1 24 24 23.1 24 22V18H22V22M8 6V4H10V6H8M10 14V12H12V14H10M16 4H18V6H16V4M18 6H20V8H18V6M18 14H20V16H18V14M20 12H16V18H20V20H4V4H6V6H8V10H6V12H8V14H10V16H12V18H14V16H12V14H14V10H10V6H12V4H14V8H16V10H20V12M8 18V16H6V18H8Z"; -var mdiDatabase = "M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M4,9V12C4,14.21 7.58,16 12,16C16.42,16 20,14.21 20,12V9C20,11.21 16.42,13 12,13C7.58,13 4,11.21 4,9M4,14V17C4,19.21 7.58,21 12,21C16.42,21 20,19.21 20,17V14C20,16.21 16.42,18 12,18C7.58,18 4,16.21 4,14Z"; -var mdiDatabaseAlert = "M18 7C18 9.21 14.42 11 10 11S2 9.21 2 7 5.58 3 10 3 18 4.79 18 7M10 18C5.58 18 2 16.21 2 14V17C2 19.21 5.58 21 10 21S18 19.21 18 17V14C18 16.21 14.42 18 10 18M10 13C5.58 13 2 11.21 2 9V12C2 14.21 5.58 16 10 16S18 14.21 18 12V9C18 11.21 14.42 13 10 13M20 17H22V15H20V17M20 7V13H22V7H20Z"; -var mdiDatabaseAlertOutline = "M10 3C5.58 3 2 4.79 2 7V17C2 19.21 5.59 21 10 21S18 19.21 18 17V7C18 4.79 14.42 3 10 3M16 17C16 17.5 13.87 19 10 19S4 17.5 4 17V14.77C5.61 15.55 7.72 16 10 16S14.39 15.55 16 14.77V17M16 12.45C14.7 13.4 12.42 14 10 14S5.3 13.4 4 12.45V9.64C5.47 10.47 7.61 11 10 11S14.53 10.47 16 9.64V12.45M10 9C6.13 9 4 7.5 4 7S6.13 5 10 5 16 6.5 16 7 13.87 9 10 9M22 7V13H20V7H22M20 15H22V17H20V15Z"; -var mdiDatabaseArrowDown = "M19 13C16.83 13 14.93 14.16 13.88 15.89C13.28 15.96 12.65 16 12 16C7.58 16 4 14.21 4 12V9C4 11.21 7.58 13 12 13S20 11.21 20 9V12C20 12.36 19.9 12.71 19.72 13.05C19.5 13 19.24 13 19 13M12 11C16.42 11 20 9.21 20 7S16.42 3 12 3 4 4.79 4 7 7.58 11 12 11M13.1 17.96C12.74 18 12.37 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19C13 18.64 13.04 18.3 13.1 17.96M20 20V16H18V20H16L19 23L22 20H20Z"; -var mdiDatabaseArrowDownOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M22 20L19 23L16 20H18V16H20V20H22Z"; -var mdiDatabaseArrowLeft = "M4 7C4 4.79 7.58 3 12 3S20 4.79 20 7 16.42 11 12 11 4 9.21 4 7M19.72 13.05C19.9 12.71 20 12.36 20 12V9C20 11.21 16.42 13 12 13S4 11.21 4 9V12C4 14.21 7.58 16 12 16C12.65 16 13.28 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.24 13 19.5 13 19.72 13.05M13.1 17.96C12.74 18 12.37 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19C13 18.64 13.04 18.3 13.1 17.96M18 18V16L15 19L18 22V20H22V18H18Z"; -var mdiDatabaseArrowLeftOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M22 18V20H18V22L15 19L18 16V18H22Z"; -var mdiDatabaseArrowRight = "M4 7C4 4.79 7.58 3 12 3S20 4.79 20 7 16.42 11 12 11 4 9.21 4 7M19.72 13.05C19.9 12.71 20 12.36 20 12V9C20 11.21 16.42 13 12 13S4 11.21 4 9V12C4 14.21 7.58 16 12 16C12.65 16 13.28 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.24 13 19.5 13 19.72 13.05M13.1 17.96C12.74 18 12.37 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19C13 18.64 13.04 18.3 13.1 17.96M23 19L20 16V18H16V20H20V22L23 19Z"; -var mdiDatabaseArrowRightOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M20 22V20H16V18H20V16L23 19L20 22Z"; -var mdiDatabaseArrowUp = "M19 13C16.83 13 14.93 14.16 13.88 15.89C13.28 15.96 12.65 16 12 16C7.58 16 4 14.21 4 12V9C4 11.21 7.58 13 12 13S20 11.21 20 9V12C20 12.36 19.9 12.71 19.72 13.05C19.5 13 19.24 13 19 13M12 11C16.42 11 20 9.21 20 7S16.42 3 12 3 4 4.79 4 7 7.58 11 12 11M13.1 17.96C12.74 18 12.37 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19C13 18.64 13.04 18.3 13.1 17.96M19 15L16 18H18V22H20V18H22L19 15Z"; -var mdiDatabaseArrowUpOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M22 18H20V22H18V18H16L19 15L22 18Z"; -var mdiDatabaseCheck = "M12 3C16.42 3 20 4.79 20 7S16.42 11 12 11 4 9.21 4 7 7.58 3 12 3M4 9C4 11.21 7.58 13 12 13S20 11.21 20 9V12.08L19 12C16.41 12 14.2 13.64 13.36 15.94L12 16C7.58 16 4 14.21 4 12V9M4 14C4 16.21 7.58 18 12 18H13C13 19.05 13.27 20.04 13.75 20.9L12 21C7.58 21 4 19.21 4 17V14M18 21.08L15.25 18.08L16.41 16.92L18 18.5L21.59 14.92L22.75 16.33L18 21.08"; -var mdiDatabaseCheckOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M22.5 17.25L17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25Z"; -var mdiDatabaseClock = "M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25M23 16C23 19.87 19.87 23 16 23C13.61 23 11.5 21.8 10.25 20C6.18 19.79 3 18.08 3 16V13C3 14.88 5.58 16.44 9.06 16.88C9.03 16.59 9 16.3 9 16C9 15.62 9.04 15.25 9.1 14.88C5.6 14.45 3 12.88 3 11V8C3 10.09 6.2 11.8 10.27 12C10.87 11.14 11.64 10.44 12.53 9.93C12.04 9.97 11.5 10 11 10C6.58 10 3 8.21 3 6S6.58 2 11 2 19 3.79 19 6C19 7.2 17.93 8.28 16.25 9C17 9.04 17.75 9.19 18.44 9.45C18.79 9 19 8.5 19 8V9.68C21.36 10.81 23 13.21 23 16M21 16C21 13.24 18.76 11 16 11S11 13.24 11 16 13.24 21 16 21 21 18.76 21 16Z"; -var mdiDatabaseClockOutline = "M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25M23 16C23 19.87 19.87 23 16 23C13.61 23 11.5 21.8 10.25 20C6.19 19.79 3 18.08 3 16V6C3 3.79 6.58 2 11 2S19 3.79 19 6V9.68C21.36 10.81 23 13.21 23 16M17 9.08V8.64C16.77 8.77 16.5 8.9 16.24 9C16.5 9 16.75 9.04 17 9.08M5 6C5 6.5 7.13 8 11 8S17 6.5 17 6 14.87 4 11 4 5 5.5 5 6M5 11.45C6.07 12.23 7.8 12.76 9.72 12.93C10.33 11.67 11.32 10.62 12.54 9.92C12.04 9.97 11.53 10 11 10C8.61 10 6.47 9.47 5 8.64V11.45M9.26 17.87C9.1 17.27 9 16.65 9 16C9 15.61 9.04 15.23 9.1 14.86C7.56 14.69 6.15 14.33 5 13.77V16C5 16.42 6.5 17.5 9.26 17.87M21 16C21 13.24 18.76 11 16 11S11 13.24 11 16 13.24 21 16 21 21 18.76 21 16Z"; -var mdiDatabaseCog = "M4 7C4 4.79 7.58 3 12 3S20 4.79 20 7 16.42 11 12 11 4 9.21 4 7M12.08 18L12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.1 21 12.2 21 12.29 21C12.11 20.36 12 19.69 12 19C12 18.66 12.03 18.33 12.08 18M20 12.08C20 12.05 20 12.03 20 12V9C20 11.21 16.42 13 12 13S4 11.21 4 9V12C4 14.21 7.58 16 12 16C12.23 16 12.46 16 12.69 16C13.82 13.63 16.22 12 19 12C19.34 12 19.67 12.03 20 12.08M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; -var mdiDatabaseCogOutline = "M12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.08C18.33 12.03 18.66 12 19 12C19.34 12 19.67 12.03 20 12.08V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.1 21 12.2 21 12.29 21C12.11 20.36 12 19.69 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.24 16 12.47 16 12.7 15.97C13.1 15.14 13.65 14.41 14.32 13.81C13.58 13.93 12.8 14 12 14M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M22.7 19.6V18.6L23.8 17.8C23.9 17.7 24 17.6 23.9 17.5L22.9 15.8C22.9 15.7 22.7 15.7 22.6 15.7L21.4 16.2C21.1 16 20.8 15.8 20.5 15.7L20.3 14.4C20.3 14.3 20.2 14.2 20.1 14.2H18.1C17.9 14.2 17.8 14.3 17.8 14.4L17.6 15.7C17.3 15.9 17.1 16 16.8 16.2L15.6 15.7C15.5 15.7 15.4 15.7 15.3 15.8L14.3 17.5C14.3 17.6 14.3 17.7 14.4 17.8L15.5 18.6V19.6L14.4 20.4C14.3 20.5 14.2 20.6 14.3 20.7L15.3 22.4C15.4 22.5 15.5 22.5 15.6 22.5L16.8 22C17 22.2 17.3 22.4 17.6 22.5L17.8 23.8C17.9 23.9 18 24 18.1 24H20.1C20.2 24 20.3 23.9 20.3 23.8L20.5 22.5C20.8 22.3 21 22.2 21.3 22L22.5 22.4C22.6 22.4 22.7 22.4 22.8 22.3L23.8 20.6C23.9 20.5 23.9 20.4 23.8 20.4L22.7 19.6M19 20.5C18.2 20.5 17.5 19.8 17.5 19S18.2 17.5 19 17.5 20.5 18.2 20.5 19 19.8 20.5 19 20.5Z"; -var mdiDatabaseEdit = "M4,14V17C4,19 7.05,20.72 11,21V18.11L11.13,18C7.12,17.76 4,16.06 4,14M12,13C7.58,13 4,11.21 4,9V12C4,14.21 7.58,16 12,16C12.39,16 12.77,16 13.16,16L17,12.12C15.4,12.72 13.71,13 12,13M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M21,11.13C20.85,11.13 20.71,11.19 20.61,11.3L19.61,12.3L21.66,14.3L22.66,13.3C22.87,13.1 22.88,12.76 22.66,12.53L21.42,11.3C21.32,11.19 21.18,11.13 21.04,11.13M19.04,12.88L13,18.94V21H15.06L21.12,14.93L19.04,12.88Z"; -var mdiDatabaseEditOutline = "M12 16C12.8 16 13.57 15.93 14.31 15.82L17.22 12.91C15.89 13.59 14 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.13L19.39 10.74C19.57 10.56 19.78 10.42 20 10.3V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.04 7.06 20.72 11 20.97V19.13L11.17 18.96C7.84 18.76 6 17.46 6 17V14.77C7.61 15.55 9.72 16 12 16M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M19.13 13.83L21.17 15.87L15.04 22H13V19.96L19.13 13.83M22.85 14.19L21.87 15.17L19.83 13.13L20.81 12.15C21 11.95 21.33 11.95 21.53 12.15L22.85 13.47C23.05 13.67 23.05 14 22.85 14.19Z"; -var mdiDatabaseExport = "M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C12.5,11 13,10.97 13.5,10.92V9.5H16.39L15.39,8.5L18.9,5C17.5,3.8 14.94,3 12,3M18.92,7.08L17.5,8.5L20,11H15V13H20L17.5,15.5L18.92,16.92L23.84,12M4,9V12C4,14.21 7.58,16 12,16C13.17,16 14.26,15.85 15.25,15.63L16.38,14.5H13.5V12.92C13,12.97 12.5,13 12,13C7.58,13 4,11.21 4,9M4,14V17C4,19.21 7.58,21 12,21C14.94,21 17.5,20.2 18.9,19L17,17.1C15.61,17.66 13.9,18 12,18C7.58,18 4,16.21 4,14Z"; -var mdiDatabaseExportOutline = "M17.86 18L18.9 19C17.5 20.2 14.94 21 12 21C7.59 21 4 19.21 4 17V7C4 4.79 7.58 3 12 3C14.95 3 17.5 3.8 18.9 5L17.86 6L17.5 6.4C16.65 5.77 14.78 5 12 5C8.13 5 6 6.5 6 7S8.13 9 12 9C13.37 9 14.5 8.81 15.42 8.54L16.38 9.5H13.5V10.92C13 10.97 12.5 11 12 11C9.61 11 7.47 10.47 6 9.64V12.45C7.3 13.4 9.58 14 12 14C12.5 14 13 13.97 13.5 13.92V14.5H16.38L15.38 15.5L15.5 15.61C14.41 15.86 13.24 16 12 16C9.72 16 7.61 15.55 6 14.77V17C6 17.5 8.13 19 12 19C14.78 19 16.65 18.23 17.5 17.61L17.86 18M18.92 7.08L17.5 8.5L20 11H15V13H20L17.5 15.5L18.92 16.92L23.84 12L18.92 7.08Z"; -var mdiDatabaseImport = "M12,3C8.59,3 5.69,4.07 4.54,5.57L9.79,10.82C10.5,10.93 11.22,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M3.92,7.08L2.5,8.5L5,11H0V13H5L2.5,15.5L3.92,16.92L8.84,12M20,9C20,11.21 16.42,13 12,13C11.34,13 10.7,12.95 10.09,12.87L7.62,15.34C8.88,15.75 10.38,16 12,16C16.42,16 20,14.21 20,12M20,14C20,16.21 16.42,18 12,18C9.72,18 7.67,17.5 6.21,16.75L4.53,18.43C5.68,19.93 8.59,21 12,21C16.42,21 20,19.21 20,17"; -var mdiDatabaseImportOutline = "M8.84 12L3.92 16.92L2.5 15.5L5 13H0V11H5L2.5 8.5L3.92 7.08L8.84 12M12 3C8.59 3 5.68 4.07 4.53 5.57L5 6L6.03 7.07C6 7.05 6 7 6 7C6 6.5 8.13 5 12 5S18 6.5 18 7 15.87 9 12 9C9.38 9 7.58 8.31 6.68 7.72L9.8 10.84C10.5 10.94 11.24 11 12 11C14.39 11 16.53 10.47 18 9.64V12.45C16.7 13.4 14.42 14 12 14C11.04 14 10.1 13.9 9.24 13.73L7.59 15.37C8.91 15.77 10.41 16 12 16C14.28 16 16.39 15.55 18 14.77V17C18 17.5 15.87 19 12 19S6 17.5 6 17V16.96L5 18L4.54 18.43C5.69 19.93 8.6 21 12 21C16.41 21 20 19.21 20 17V7C20 4.79 16.42 3 12 3Z"; -var mdiDatabaseLock = "M11,3C15.42,3 19,4.79 19,7C19,9.21 15.42,11 11,11C6.58,11 3,9.21 3,7C3,4.79 6.58,3 11,3M19,12.03C17.11,12.24 15.57,13.62 15.13,15.43C13.92,15.79 12.5,16 11,16C6.58,16 3,14.21 3,12V9C3,11.21 6.58,13 11,13C15.42,13 19,11.21 19,9V12.03M14,17.71V20.71C13.07,20.9 12.06,21 11,21C6.58,21 3,19.21 3,17V14C3,16.21 6.58,18 11,18C12.06,18 13.07,17.9 14,17.71M19.5,14A2.5,2.5 0 0,1 22,16.5V17A1,1 0 0,1 23,18V22A1,1 0 0,1 22,23H17A1,1 0 0,1 16,22V18A1,1 0 0,1 17,17V16.5A2.5,2.5 0 0,1 19.5,14M19.5,15A1.5,1.5 0 0,0 18,16.5V17H21V16.5A1.5,1.5 0 0,0 19.5,15Z"; -var mdiDatabaseLockOutline = "M6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V11.05C18.17 11.03 18.33 11 18.5 11C19.03 11 19.53 11.1 20 11.26V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.34 21 12.67 21 13 20.97V18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.41 16 12.81 15.97 13.21 15.94C13.4 15.46 13.68 15.03 14.07 14.7C14.13 14.39 14.23 14.09 14.34 13.8C13.6 13.93 12.81 14 12 14C9.58 14 7.3 13.4 6 12.45M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M21 16V15.5C21 14.12 19.88 13 18.5 13S16 14.12 16 15.5V16C15.45 16 15 16.45 15 17V21C15 21.55 15.45 22 16 22H21C21.55 22 22 21.55 22 21V17C22 16.45 21.55 16 21 16M20 16H17V15.5C17 14.67 17.67 14 18.5 14S20 14.67 20 15.5V16Z"; -var mdiDatabaseMarker = "M18.5 12C16.6 12 15 13.6 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5C22 13.6 20.4 12 18.5 12M18.5 16.8C17.8 16.8 17.3 16.2 17.3 15.6C17.3 14.9 17.9 14.4 18.5 14.4S19.7 15 19.7 15.6C19.8 16.2 19.2 16.8 18.5 16.8M4 12V9C4 11.21 7.58 13 12 13C12.57 13 13.13 12.97 13.67 12.91C13.25 13.69 13 14.57 13 15.5C13 15.65 13 15.81 13.03 15.96C12.69 16 12.35 16 12 16C7.58 16 4 14.21 4 12M4 7C4 4.79 7.58 3 12 3S20 4.79 20 7 16.42 11 12 11 4 9.21 4 7M15 20.71C14.07 20.9 13.06 21 12 21C7.58 21 4 19.21 4 17V14C4 16.21 7.58 18 12 18C12.5 18 13.03 17.97 13.5 17.93C13.9 18.91 14.44 19.87 15 20.71Z"; -var mdiDatabaseMarkerOutline = "M12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.35 16 12.69 15.97 13.03 15.95C13 15.8 13 15.65 13 15.5C13 14.96 13.09 14.44 13.24 13.94C12.83 14 12.42 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V10.03C18.17 10 18.33 10 18.5 10C19 10 19.5 10.08 20 10.22V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C13.06 21 14.07 20.89 15 20.71C14.62 20.14 14.25 19.5 13.93 18.85C13.34 18.94 12.71 19 12 19M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M18.5 12C16.6 12 15 13.6 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5C22 13.6 20.4 12 18.5 12M18.5 16.8C17.8 16.8 17.3 16.2 17.3 15.6C17.3 14.9 17.9 14.4 18.5 14.4S19.7 15 19.7 15.6C19.8 16.2 19.2 16.8 18.5 16.8Z"; -var mdiDatabaseMinus = "M23 17V19H15V17M12 3C16.42 3 20 4.79 20 7S16.42 11 12 11 4 9.21 4 7 7.58 3 12 3M4 9C4 11.21 7.58 13 12 13S20 11.21 20 9V12.08L19 12C16.41 12 14.2 13.64 13.36 15.94L12 16C7.58 16 4 14.21 4 12V9M4 14C4 16.21 7.58 18 12 18H13C13 19.05 13.27 20.04 13.75 20.9L12 21C7.58 21 4 19.21 4 17V14Z"; -var mdiDatabaseMinusOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M23 18V20H15V18H23Z"; -var mdiDatabaseOff = "M19.07 15.87C19.66 15.31 20 14.68 20 14V16.8L19.07 15.87M20 9C20 10.54 18.27 11.86 15.73 12.53L17.89 14.69C19.19 14 20 13.04 20 12V9M20 7C20 4.79 16.42 3 12 3C10.13 3 8.42 3.33 7.06 3.86L14.06 10.86C17.5 10.41 20 8.85 20 7M2.39 1.73L1.11 3L4.21 6.1C4.08 6.39 4 6.69 4 7C4 8.63 5.96 10.04 8.77 10.66L11.08 12.97C7.1 12.74 4 11.06 4 9V12C4 14.21 7.58 16 12 16C12.69 16 13.35 15.95 14 15.87L15.66 17.55C14.57 17.84 13.32 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C14.31 21 16.38 20.5 17.84 19.73L20.84 22.73L22.11 21.46L2.39 1.73Z"; -var mdiDatabaseOffOutline = "M2.39 1.73L1.11 3L4.21 6.1C4.08 6.39 4 6.69 4 7V17C4 19.21 7.59 21 12 21C14.3 21 16.38 20.5 17.84 19.73L20.84 22.73L22.11 21.46L2.39 1.73M6 9.64C6.76 10.07 7.7 10.42 8.76 10.65L12.11 14C12.07 14 12.04 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64M12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.68 16 13.34 15.95 14 15.87L16.34 18.23C15.33 18.65 13.87 19 12 19M8.64 5.44L7.06 3.86C8.42 3.33 10.13 3 12 3C16.42 3 20 4.79 20 7V16.8L18 14.8V14.77L18 14.78L16.45 13.25C17.05 13.03 17.58 12.76 18 12.45V9.64C16.97 10.22 15.61 10.65 14.06 10.86L12.19 9C15.94 8.94 18 7.5 18 7C18 6.5 15.87 5 12 5C10.66 5 9.54 5.18 8.64 5.44Z"; -var mdiDatabaseOutline = "M12 3C7.58 3 4 4.79 4 7V17C4 19.21 7.59 21 12 21S20 19.21 20 17V7C20 4.79 16.42 3 12 3M18 17C18 17.5 15.87 19 12 19S6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16S16.39 15.55 18 14.77V17M18 12.45C16.7 13.4 14.42 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11C14.39 11 16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5C15.87 5 18 6.5 18 7S15.87 9 12 9Z"; -var mdiDatabasePlus = "M18,14H20V17H23V19H20V22H18V19H15V17H18V14M12,3C16.42,3 20,4.79 20,7C20,9.21 16.42,11 12,11C7.58,11 4,9.21 4,7C4,4.79 7.58,3 12,3M4,9C4,11.21 7.58,13 12,13C16.42,13 20,11.21 20,9V9L20,12.08L19,12C16.41,12 14.2,13.64 13.36,15.94L12,16C7.58,16 4,14.21 4,12V9M4,14C4,16.21 7.58,18 12,18H13C13,19.05 13.27,20.04 13.75,20.9L12,21C7.58,21 4,19.21 4,17V14Z"; -var mdiDatabasePlusOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z"; -var mdiDatabaseRefresh = "M12 3C16.42 3 20 4.79 20 7C20 9.21 16.42 11 12 11C7.58 11 4 9.21 4 7C4 4.79 7.58 3 12 3M4 9C4 11.21 7.58 13 12 13C13.11 13 14.18 12.89 15.14 12.68C14.19 13.54 13.5 14.67 13.18 15.96L12 16C7.58 16 4 14.21 4 12V9M20 9V11L19.5 11L18.9 11.03C19.6 10.43 20 9.74 20 9M4 14C4 16.21 7.58 18 12 18L13 17.97C13.09 19.03 13.42 20 13.95 20.88L12 21C7.58 21 4 19.21 4 17V14M19 13.5C20.11 13.5 21.11 13.95 21.83 14.67L23 13.5V17.5H19L20.77 15.73C20.32 15.28 19.69 15 19 15C17.62 15 16.5 16.12 16.5 17.5C16.5 18.88 17.62 20 19 20C19.82 20 20.54 19.61 21 19H22.71C22.12 20.47 20.68 21.5 19 21.5C16.79 21.5 15 19.71 15 17.5C15 15.29 16.79 13.5 19 13.5Z"; -var mdiDatabaseRefreshOutline = "M6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.03C18.17 12 18.33 12 18.5 12C19 12 19.5 12.07 20 12.18V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.17 21 12.33 21 12.5 21C12.24 20.37 12.09 19.7 12.03 19L12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.17 16 12.34 16 12.5 16C12.85 15.18 13.34 14.46 13.95 13.86C13.32 13.95 12.67 14 12 14C9.58 14 7.3 13.4 6 12.45M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M18 18.5L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5S16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5S15.79 14.5 18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18Z"; -var mdiDatabaseRemove = "M15.46,15.88L16.88,14.46L19,16.59L21.12,14.47L22.53,15.88L20.41,18L22.54,20.12L21.12,21.54L19,19.41L16.88,21.53L15.47,20.12L17.59,18L15.46,15.88M12,3C16.42,3 20,4.79 20,7C20,9.21 16.42,11 12,11C7.58,11 4,9.21 4,7C4,4.79 7.58,3 12,3M4,9C4,11.21 7.58,13 12,13C16.42,13 20,11.21 20,9V12.08L19,12C16.41,12 14.2,13.64 13.36,15.94L12,16C7.58,16 4,14.21 4,12V9M4,14C4,16.21 7.58,18 12,18H13C13,19.05 13.27,20.04 13.75,20.9L12,21C7.58,21 4,19.21 4,17V14Z"; -var mdiDatabaseRemoveOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19"; -var mdiDatabaseSearch = "M18.68,12.32C16.92,10.56 14.07,10.57 12.32,12.33C10.56,14.09 10.56,16.94 12.32,18.69C13.81,20.17 16.11,20.43 17.89,19.32L21,22.39L22.39,21L19.3,17.89C20.43,16.12 20.17,13.8 18.68,12.32M17.27,17.27C16.29,18.25 14.71,18.24 13.73,17.27C12.76,16.29 12.76,14.71 13.74,13.73C14.71,12.76 16.29,12.76 17.27,13.73C18.24,14.71 18.24,16.29 17.27,17.27M10.9,20.1C10.25,19.44 9.74,18.65 9.42,17.78C6.27,17.25 4,15.76 4,14V17C4,19.21 7.58,21 12,21V21C11.6,20.74 11.23,20.44 10.9,20.1M4,9V12C4,13.68 6.07,15.12 9,15.7C9,15.63 9,15.57 9,15.5C9,14.57 9.2,13.65 9.58,12.81C6.34,12.3 4,10.79 4,9M12,3C7.58,3 4,4.79 4,7C4,9 7,10.68 10.85,11H10.9C12.1,9.74 13.76,9 15.5,9C16.41,9 17.31,9.19 18.14,9.56C19.17,9.09 19.87,8.12 20,7C20,4.79 16.42,3 12,3Z"; -var mdiDatabaseSearchOutline = "M11 18.95C7.77 18.72 6 17.45 6 17V14.77C7.13 15.32 8.5 15.69 10 15.87C10 15.21 10.04 14.54 10.21 13.89C8.5 13.67 6.97 13.16 6 12.45V9.64C7.43 10.45 9.5 10.97 11.82 11C11.85 10.97 11.87 10.93 11.9 10.9C14.1 8.71 17.5 8.41 20 10.03V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.34 21 12.68 21 13 20.97C12.62 20.72 12.24 20.44 11.9 20.1C11.55 19.74 11.25 19.36 11 18.95M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z"; -var mdiDatabaseSettings = "M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22M12,3C16.42,3 20,4.79 20,7C20,9.21 16.42,11 12,11C7.58,11 4,9.21 4,7C4,4.79 7.58,3 12,3M4,9C4,11.21 7.58,13 12,13C16.42,13 20,11.21 20,9V12C20,14.21 16.42,16 12,16C7.58,16 4,14.21 4,12V9M4,14C4,16.21 7.58,18 12,18C16.42,18 20,16.21 20,14V17C20,18.19 18.95,19.27 17.29,20H6.71C5.05,19.27 4,18.19 4,17V14Z"; -var mdiDatabaseSettingsOutline = "M12 3C7.58 3 4 4.79 4 7V17C4 18.2 5.06 19.27 6.73 20H17.27C18.94 19.27 20 18.2 20 17V7C20 4.79 16.42 3 12 3M18 17C18 17.5 15.87 19 12 19S6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16S16.39 15.55 18 14.77V17M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M7 22H9V24H7V22M15 22H17V24H15V22M11 22H13V24H11V22Z"; -var mdiDatabaseSync = "M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L19,23M12,3C16.42,3 20,4.79 20,7C20,9.21 16.42,11 12,11C7.58,11 4,9.21 4,7C4,4.79 7.58,3 12,3M4,9C4,11.21 7.58,13 12,13C13.11,13 14.17,12.89 15.14,12.68C14.19,13.54 13.5,14.67 13.18,15.96L12,16C7.58,16 4,14.21 4,12V9M20,9V11H19.5L18.9,11.03C19.6,10.43 20,9.74 20,9M4,14C4,16.21 7.58,18 12,18L13,17.97C13.09,19.03 13.42,20 13.95,20.88L12,21C7.58,21 4,19.21 4,17V14Z"; -var mdiDatabaseSyncOutline = "M12 16C12.41 16 12.81 15.97 13.21 15.94C13.4 15.18 13.72 14.46 14.16 13.83C13.47 13.94 12.74 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V11.19C18.5 11.07 19 11 19.55 11C19.7 11 19.85 11 20 11.03V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.66 21 13.31 20.96 13.92 20.88C13.57 20.29 13.31 19.64 13.16 18.94C12.79 19 12.41 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M23 17.5C23 18.32 22.75 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L19 12V13.5C21.21 13.5 23 15.29 23 17.5M19 18.5L21.25 20.75L19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5Z"; -var mdiDeathStar = "M2.05,13H21.95C21.45,18.05 17.19,22 12,22C6.82,22 2.55,18.05 2.05,13M21.95,11H2.05C2.55,5.95 6.82,2 12,2C17.18,2 21.45,5.95 21.95,11M12,6.75A2.5,2.5 0 0,0 9.5,4.25A2.5,2.5 0 0,0 7,6.75A2.5,2.5 0 0,0 9.5,9.25A2.5,2.5 0 0,0 12,6.75Z"; -var mdiDeathStarVariant = "M2.05,13H21.94C21.88,13.69 21.74,14.36 21.54,15H14V17H17V19H15V21H12.5V22C12.33,22 12.17,22 12,22C6.82,22 2.55,18.05 2.05,13M21.94,11H2.05C2.55,5.95 6.82,2 12,2C13.62,2 15.15,2.39 16.5,3.08V5H18.5V7H20V9H21.54C21.74,9.64 21.88,10.31 21.94,11M12,6.75A2.5,2.5 0 0,0 9.5,4.25A2.5,2.5 0 0,0 7,6.75A2.5,2.5 0 0,0 9.5,9.25A2.5,2.5 0 0,0 12,6.75Z"; -var mdiDeathlyHallows = "M12,2L1,21H23L12,2M12.75,11.47C14.56,11.87 15.7,13.67 15.3,15.5C15,16.75 14,17.75 12.75,18.03V11.47M11.25,18C9.44,17.6 8.3,15.8 8.7,14C9,12.72 10,11.72 11.25,11.44V18M16.88,14.72C16.83,12.35 15.09,10.36 12.75,10V6.29L20.4,19.5H13.07C15.29,19 16.87,17.03 16.88,14.75V14.72M11.25,6.29V10C8.6,10.4 6.77,12.88 7.18,15.54C7.5,17.5 8.97,19.12 10.93,19.55H3.6L11.25,6.29Z"; -var mdiDebian = "M18.5,10.57L18.3,10.94C18.56,10.16 18.41,9.31 18.45,8.57L18.38,8.55C18.31,6.7 16.71,4.73 15.29,4.07C14.06,3.5 12.17,3.4 11.3,3.83C11.42,3.72 11.9,3.68 11.75,3.6C10.38,3.73 10.69,4.07 9.64,4.34C9.35,4.62 10.5,4.12 9.87,4.5C9.31,4.63 9.05,4.38 8.22,5.24C8.29,5.36 8.75,4.89 8.37,5.36C7.58,5.27 5.89,7.16 5.53,7.78L5.72,7.82C5.41,8.59 5,9.08 4.95,9.54C4.87,10.68 4.5,12.75 5.03,13.39L4.97,13.92L5.2,14.37L5.08,14.38C5.66,16.21 5.7,14.42 6.47,16.32C6.36,16.28 6.24,16.24 6.08,16C6.06,16.19 6.32,16.69 6.62,17.08L6.5,17.22C6.66,17.53 6.82,17.6 6.93,17.71C6.3,17.36 7.5,18.84 7.63,19.03L7.73,18.86C7.71,19.1 7.9,19.42 8.26,19.87L8.56,19.86C8.69,20.1 9.14,20.54 9.41,20.56L9.23,20.8C9.92,21 9.56,21.09 10.41,21.39L10.24,21.09C10.67,21.46 10.8,21.79 11.41,22.07C12.26,22.37 12.37,22.25 13.23,22.5C12.5,22.5 11.64,22.5 11.06,22.28C7.1,21.21 3.5,16.56 3.74,11.78C3.68,10.81 3.84,9.6 3.68,9.36C3.9,8.62 4.16,7.72 4.69,6.65C4.65,6.58 4.78,6.86 5.05,6.41C5.21,6.05 5.34,5.66 5.55,5.31L5.65,5.28C5.76,4.67 7.08,3.73 7.5,3.26V3.44C8.36,2.63 9.9,2.09 10.76,1.71C10.53,1.96 11.27,1.68 11.8,1.65L11.31,1.93C11.94,1.77 11.91,2 12.56,1.9C12.33,1.93 12.06,2 12.1,2.06C12.82,2.14 12.94,1.84 13.61,2.06L13.56,1.86C14.5,2.2 14.69,2.14 15.7,2.68C16.06,2.69 16.1,2.46 16.63,2.68C16.73,2.84 16.61,2.87 17.27,3.27C17.34,3.24 17.14,3.05 17,2.9C18.3,3.61 19.75,5.12 20.18,6.74C19.77,6 20.14,7.13 20,7.07C20.18,7.56 20.33,8.07 20.43,8.6C20.31,8.17 20.04,7.12 19.57,6.45C19.54,6.88 18.97,6.15 19.28,7.11C19.5,7.45 19.33,6.76 19.62,7.36C19.62,7.65 19.73,7.94 19.8,8.31C19.7,8.29 19.58,7.9 19.5,8C19.6,8.5 19.77,8.72 19.83,8.76C19.8,8.84 19.71,8.68 19.71,9C19.75,9.74 19.92,9.43 20,9.46C19.91,9.83 19.59,10.25 19.75,10.88L19.55,10.32C19.5,10.85 19.66,10.95 19.42,11.6C19.6,11 19.58,10.5 19.41,10.75C19.5,11.57 18.76,12.2 18.83,12.73L18.62,12.44C18.05,13.27 18.61,12.89 18.22,13.5C18.36,13.27 18.15,13.42 18.33,13.14C18.21,13.15 17.78,13.67 17.39,13.97C15.85,15.2 14,15.37 12.24,14.7H12.23C12.24,14.66 12.23,14.61 12.11,14.53C10.6,13.38 9.71,12.4 10,10.12C10.25,9.95 10.31,9 10.84,8.67C11.16,7.96 12.12,7.31 13.15,7.29C14.2,7.23 15.09,7.85 15.54,8.43C14.72,7.68 13.4,7.45 12.26,8C11.11,8.53 10.42,9.8 10.5,11.07C10.56,11 10.6,11.05 10.62,10.89C10.59,13.36 13.28,15.17 15.22,14.26L15.25,14.31C16.03,14.09 15.93,13.92 16.44,13.56C16.4,13.65 16.1,13.86 16.28,13.86C16.53,13.8 17.31,13.07 17.7,12.73C17.87,12.35 17.6,12.5 17.85,12.04L18.15,11.89C18.32,11.41 18.5,11.14 18.5,10.57"; -var mdiDebugStepInto = "M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,2V13L17.5,8.5L18.92,9.92L12,16.84L5.08,9.92L6.5,8.5L11,13V2H13Z"; -var mdiDebugStepOut = "M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,16H11V6L6.5,10.5L5.08,9.08L12,2.16L18.92,9.08L17.5,10.5L13,6V16Z"; -var mdiDebugStepOver = "M12,14A2,2 0 0,1 14,16A2,2 0 0,1 12,18A2,2 0 0,1 10,16A2,2 0 0,1 12,14M23.46,8.86L21.87,15.75L15,14.16L18.8,11.78C17.39,9.5 14.87,8 12,8C8.05,8 4.77,10.86 4.12,14.63L2.15,14.28C2.96,9.58 7.06,6 12,6C15.58,6 18.73,7.89 20.5,10.72L23.46,8.86Z"; -var mdiDecagram = "M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12Z"; -var mdiDecagramOutline = "M23,12L20.56,14.78L20.9,18.46L17.29,19.28L15.4,22.46L12,21L8.6,22.47L6.71,19.29L3.1,18.47L3.44,14.78L1,12L3.44,9.21L3.1,5.53L6.71,4.72L8.6,1.54L12,3L15.4,1.54L17.29,4.72L20.9,5.54L20.56,9.22L23,12M20.33,12L18.5,9.89L18.74,7.1L16,6.5L14.58,4.07L12,5.18L9.42,4.07L8,6.5L5.26,7.09L5.5,9.88L3.67,12L5.5,14.1L5.26,16.9L8,17.5L9.42,19.93L12,18.81L14.58,19.92L16,17.5L18.74,16.89L18.5,14.1L20.33,12Z"; -var mdiDecimal = "M10 7A3 3 0 0 0 7 10V13A3 3 0 0 0 13 13V10A3 3 0 0 0 10 7M11 13A1 1 0 0 1 9 13V10A1 1 0 0 1 11 10M17 7A3 3 0 0 0 14 10V13A3 3 0 0 0 20 13V10A3 3 0 0 0 17 7M18 13A1 1 0 0 1 16 13V10A1 1 0 0 1 18 10M6 15A1 1 0 1 1 5 14A1 1 0 0 1 6 15Z"; -var mdiDecimalComma = "M10 7A3 3 0 0 1 13 10V13A3 3 0 0 1 7 13V10A3 3 0 0 1 10 7M10 9A1 1 0 0 0 9 10V13A1 1 0 0 0 11 13V10A1 1 0 0 0 10 9M17 7A3 3 0 0 1 20 10V13A3 3 0 0 1 14 13V10A3 3 0 0 1 17 7M17 9A1 1 0 0 0 16 10V13A1 1 0 0 0 18 13V10A1 1 0 0 0 17 9M5 14A1 1 0 0 0 4 15L5 18H6V15A1 1 0 0 0 5 14Z"; -var mdiDecimalCommaDecrease = "M5 13V16H4L3 13A1 1 0 0 1 5 13M15 16V14L12 17L15 20V18H21V16M12 11A3 3 0 0 1 6 11V8A3 3 0 0 1 12 8M10 8A1 1 0 0 0 8 8V11A1 1 0 0 0 10 11Z"; -var mdiDecimalCommaIncrease = "M9 5A3 3 0 0 0 6 8V11A3 3 0 0 0 12 11V8A3 3 0 0 0 9 5M10 11A1 1 0 0 1 8 11V8A1 1 0 0 1 10 8M16 14A3 3 0 0 0 19 11V8A3 3 0 0 0 13 8V11A3 3 0 0 0 16 14M15 8A1 1 0 0 1 17 8V11A1 1 0 0 1 15 11M19 20V18H13V16H19V14L22 17M5 13V16H4L3 13A1 1 0 0 1 5 13Z"; -var mdiDecimalDecrease = "M12,17L15,20V18H21V16H15V14L12,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z"; -var mdiDecimalIncrease = "M22,17L19,20V18H13V16H19V14L22,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M16,5A3,3 0 0,1 19,8V11A3,3 0 0,1 16,14A3,3 0 0,1 13,11V8A3,3 0 0,1 16,5M16,7A1,1 0 0,0 15,8V11A1,1 0 0,0 16,12A1,1 0 0,0 17,11V8A1,1 0 0,0 16,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z"; -var mdiDelete = "M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z"; -var mdiDeleteAlert = "M17 4V6H3V4H6.5L7.5 3H12.5L13.5 4H17M4 19V7H16V19C16 20.1 15.1 21 14 21H6C4.9 21 4 20.1 4 19M19 15H21V17H19V15M19 7H21V13H19V7Z"; -var mdiDeleteAlertOutline = "M4 19V7H16V19C16 20.1 15.1 21 14 21H6C4.9 21 4 20.1 4 19M6 9V19H14V9H6M13.5 4H17V6H3V4H6.5L7.5 3H12.5L13.5 4M19 17V15H21V17H19M19 13V7H21V13H19Z"; -var mdiDeleteCircle = "M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M17,7H14.5L13.5,6H10.5L9.5,7H7V9H17V7M9,18H15A1,1 0 0,0 16,17V10H8V17A1,1 0 0,0 9,18Z"; -var mdiDeleteCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M16,10V17A1,1 0 0,1 15,18H9A1,1 0 0,1 8,17V10H16M13.5,6L14.5,7H17V9H7V7H9.5L10.5,6H13.5Z"; -var mdiDeleteClock = "M15 13H16.5V15.82L18.94 17.23L18.19 18.53L15 16.69V13M23 16C23 19.87 19.87 23 16 23C14.09 23 12.36 22.24 11.1 21H8C6.9 21 6 20.1 6 19V7H18V9.29C20.89 10.15 23 12.83 23 16M16 11C13.24 11 11 13.24 11 16C11 18.76 13.24 21 16 21C18.76 21 21 18.76 21 16C21 13.24 18.76 11 16 11M19 4V6H5V4H8.5L9.5 3H14.5L15.5 4H19Z"; -var mdiDeleteClockOutline = "M15 13H16.5V15.82L18.94 17.23L18.19 18.53L15 16.69V13M23 16C23 19.87 19.87 23 16 23C14.09 23 12.36 22.24 11.1 21H8C6.9 21 6 20.1 6 19V7H18V9.29C20.89 10.15 23 12.83 23 16M9 16C9 12.13 12.13 9 16 9H8V19H9.67C9.24 18.09 9 17.07 9 16M16 11C13.24 11 11 13.24 11 16C11 18.76 13.24 21 16 21C18.76 21 21 18.76 21 16C21 13.24 18.76 11 16 11M15.5 4H19V6H5V4H8.5L9.5 3H14.5L15.5 4Z"; -var mdiDeleteEmpty = "M20.37,8.91L19.37,10.64L7.24,3.64L8.24,1.91L11.28,3.66L12.64,3.29L16.97,5.79L17.34,7.16L20.37,8.91M6,19V7H11.07L18,11V19A2,2 0 0,1 16,21H8A2,2 0 0,1 6,19Z"; -var mdiDeleteEmptyOutline = "M20.37,8.91L19.37,10.64L7.24,3.64L8.24,1.91L11.28,3.66L12.64,3.29L16.97,5.79L17.34,7.16L20.37,8.91M6,19V7H11.07L18,11V19A2,2 0 0,1 16,21H8A2,2 0 0,1 6,19M8,19H16V12.2L10.46,9H8V19Z"; -var mdiDeleteForever = "M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8.46,11.88L9.87,10.47L12,12.59L14.12,10.47L15.53,11.88L13.41,14L15.53,16.12L14.12,17.53L12,15.41L9.88,17.53L8.47,16.12L10.59,14L8.46,11.88M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z"; -var mdiDeleteForeverOutline = "M14.12,10.47L12,12.59L9.87,10.47L8.46,11.88L10.59,14L8.47,16.12L9.88,17.53L12,15.41L14.12,17.53L15.53,16.12L13.41,14L15.53,11.88L14.12,10.47M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8,9H16V19H8V9Z"; -var mdiDeleteOff = "M2 5.27L3.28 4L5 5.72L5.28 6L6.28 7L18 18.72L20 20.72L18.73 22L17.27 20.54C16.93 20.83 16.5 21 16 21H8C6.9 21 6 20.1 6 19V9.27L2 5.27M19 4V6H7.82L5.82 4H8.5L9.5 3H14.5L15.5 4H19M18 7V16.18L8.82 7H18Z"; -var mdiDeleteOffOutline = "M2 5.27L3.28 4L5 5.72L5.28 6L6.28 7L8.28 9L16 16.72L18 18.72L20 20.72L18.73 22L17.27 20.54C16.93 20.83 16.5 21 16 21H8C6.9 21 6 20.1 6 19V9.27L2 5.27M8 19H15.73L8 11.27V19M18 7V16.18L16 14.18V9H10.82L8.82 7H18M15.5 4H19V6H7.82L5.82 4H8.5L9.5 3H14.5L15.5 4Z"; -var mdiDeleteOutline = "M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8,9H16V19H8V9M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z"; -var mdiDeleteRestore = "M14,14H16L12,10L8,14H10V18H14V14M6,7H18V19C18,19.5 17.8,20 17.39,20.39C17,20.8 16.5,21 16,21H8C7.5,21 7,20.8 6.61,20.39C6.2,20 6,19.5 6,19V7M19,4V6H5V4H8.5L9.5,3H14.5L15.5,4H19Z"; -var mdiDeleteSweep = "M15,16H19V18H15V16M15,8H22V10H15V8M15,12H21V14H15V12M3,18A2,2 0 0,0 5,20H11A2,2 0 0,0 13,18V8H3V18M14,5H11L10,4H6L5,5H2V7H14V5Z"; -var mdiDeleteSweepOutline = "M15,16H19V18H15V16M15,8H22V10H15V8M15,12H21V14H15V12M11,10V18H5V10H11M13,8H3V18A2,2 0 0,0 5,20H11A2,2 0 0,0 13,18V8M14,5H11L10,4H6L5,5H2V7H14V5Z"; -var mdiDeleteVariant = "M21.03,3L18,20.31C17.83,21.27 17,22 16,22H8C7,22 6.17,21.27 6,20.31L2.97,3H21.03M5.36,5L8,20H16L18.64,5H5.36M9,18V14H13V18H9M13,13.18L9.82,10L13,6.82L16.18,10L13,13.18Z"; -var mdiDelta = "M12,7.77L18.39,18H5.61L12,7.77M12,4L2,20H22"; -var mdiDesk = "M3 6H21C21.55 6 22 6.45 22 7C22 7.55 21.55 8 21 8V19H19V17H15V19H13V8H5V19H3V8C2.45 8 2 7.55 2 7C2 6.45 2.45 6 3 6M16 10.5V11H18V10.5C18 10.22 17.78 10 17.5 10H16.5C16.22 10 16 10.22 16 10.5M16 14.5V15H18V14.5C18 14.22 17.78 14 17.5 14H16.5C16.22 14 16 14.22 16 14.5Z"; -var mdiDeskLamp = "M10.85,2L9.18,4.5L10.32,5.25L7.14,10C7.1,10 7.05,10 7,10A2,2 0 0,0 5,12C5,12.94 5.66,13.75 6.58,13.95L10.62,20H7V22H17V20H13L8.53,13.28C8.83,12.92 9,12.47 9,12C9,11.7 8.93,11.4 8.8,11.13L12,6.37C11.78,8.05 12.75,9.89 14.45,11L18.89,4.37C17.2,3.24 15.12,3.04 13.65,3.87L10.85,2M18.33,7L16.67,9.5C17.35,9.95 18.29,9.77 18.75,9.08C19.21,8.39 19,7.46 18.33,7Z"; -var mdiDeskphone = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,5V19H19V5H15M5,5V9H13V5H5M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M5,14V16H7V14H5M8,14V16H10V14H8M11,14V16H13V14H11M11,17V19H13V17H11M8,17V19H10V17H8M5,17V19H7V17H5Z"; -var mdiDesktopClassic = "M6,2C4.89,2 4,2.89 4,4V12C4,13.11 4.89,14 6,14H18C19.11,14 20,13.11 20,12V4C20,2.89 19.11,2 18,2H6M6,4H18V12H6V4M4,15C2.89,15 2,15.89 2,17V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V17C22,15.89 21.11,15 20,15H4M8,17H20V20H8V17M9,17.75V19.25H13V17.75H9M15,17.75V19.25H19V17.75H15Z"; -var mdiDesktopMac = "M21,14H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10L8,21V22H16V21L14,18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z"; -var mdiDesktopMacDashboard = "M21,14V4H3V14H21M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H14L16,21V22H8V21L10,18H3C1.89,18 1,17.1 1,16V4C1,2.89 1.89,2 3,2H21M4,5H15V10H4V5M16,5H20V7H16V5M20,8V13H16V8H20M4,11H9V13H4V11M10,11H15V13H10V11Z"; -var mdiDesktopTower = "M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,4V6H16V4H8M16,8H8V10H16V8M16,18H14V20H16V18Z"; -var mdiDesktopTowerMonitor = "M22,18H17A1,1 0 0,1 16,17V7A1,1 0 0,1 17,6H22A1,1 0 0,1 23,7V17A1,1 0 0,1 22,18M22,8H17V9H22V8M22,10H17V11H22V10M9,15V17H10V18H5V17H6V15H2A1,1 0 0,1 1,14V7A1,1 0 0,1 2,6H13A1,1 0 0,1 14,7V14A1,1 0 0,1 13,15H9M12,8H3V13H12V8Z"; -var mdiDetails = "M6.38,6H17.63L12,16L6.38,6M3,4L12,20L21,4H3Z"; -var mdiDevTo = "M7.73 11.93C7.73 13.65 7.71 13.76 7.5 14C7.31 14.17 7.12 14.23 6.74 14.23L6.23 14.24L6.2 11.97L6.18 9.7H6.7C7.05 9.7 7.3 9.77 7.47 9.91C7.71 10.12 7.73 10.16 7.73 11.93M22 7.5V16.5C22 17.61 21.11 18.5 20 18.5H4C2.89 18.5 2 17.61 2 16.5V7.5C2 6.39 2.89 5.5 4 5.5H20C21.11 5.5 22 6.39 22 7.5M8.93 11.73C8.9 9.89 8.88 9.74 8.64 9.34C8.24 8.66 7.79 8.5 6.28 8.5H5V15.5H6.21C7.54 15.5 8.1 15.33 8.5 14.79C8.91 14.26 9 13.81 8.93 11.73M13.12 8.5H11.64C10.15 8.5 10.14 8.5 9.93 8.78S9.7 9.21 9.7 12V14.96L9.97 15.23C10.22 15.5 10.28 15.5 11.68 15.5H13.12V14.31L12.03 14.27L10.93 14.24V12.6L11.61 12.57L12.27 12.53V11.34H10.88V9.7H13.12V8.5M19 8.56C19 8.5 18.7 8.5 18.34 8.5L17.66 8.56L17.07 10.91C16.69 12.39 16.45 13.18 16.4 13.04C16.32 12.77 15.26 8.6 15.26 8.55C15.26 8.5 14.95 8.5 14.58 8.5H13.89L14.3 10.05C14.5 10.92 14.89 12.33 15.11 13.2C15.45 14.55 15.57 14.85 15.86 15.14C16.06 15.36 16.31 15.5 16.47 15.5C16.8 15.5 17.23 15.16 17.37 14.77C17.5 14.5 19 8.69 19 8.56Z"; -var mdiDeveloperBoard = "M22,9V7H20V5A2,2 0 0,0 18,3H4A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21H18A2,2 0 0,0 20,19V17H22V15H20V13H22V11H20V9H22M18,19H4V5H18V19M6,13H11V17H6V13M12,7H16V10H12V7M6,7H11V12H6V7M12,11H16V17H12V11Z"; -var mdiDeviantart = "M6,6H12L14,2H18V6L14.5,13H18V18H12L10,22H6V18L9.5,11H6V6Z"; -var mdiDevices = "M3 6H21V4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H7V18H3V6M13 12H9V13.78C8.39 14.33 8 15.11 8 16C8 16.89 8.39 17.67 9 18.22V20H13V18.22C13.61 17.67 14 16.88 14 16S13.61 14.33 13 13.78V12M11 17.5C10.17 17.5 9.5 16.83 9.5 16S10.17 14.5 11 14.5 12.5 15.17 12.5 16 11.83 17.5 11 17.5M22 8H16C15.5 8 15 8.5 15 9V19C15 19.5 15.5 20 16 20H22C22.5 20 23 19.5 23 19V9C23 8.5 22.5 8 22 8M21 18H17V10H21V18Z"; -var mdiDiabetes = "M14.73 2.29A1 1 0 0 1 16.14 3.7L13 6.79L13.76 7.74L15.7 12.74A1.46 1.46 0 0 1 15.36 14.29L12.27 17.38A1.55 1.55 0 0 1 10.15 17.38L5.55 12.78A1.37 1.37 0 0 1 5.15 11.78L4.65 5.34H5.72A1 1 0 0 1 6.47 5.64L6.61 5.81L7.66 9.29M7.66 22L2 16.36L4.12 14.24L9.78 19.9M19.5 4.5S17 7.26 17 9A2.5 2.5 0 1 0 22 9C22 7.26 19.5 4.5 19.5 4.5Z"; -var mdiDialpad = "M12,19A2,2 0 0,0 10,21A2,2 0 0,0 12,23A2,2 0 0,0 14,21A2,2 0 0,0 12,19M6,1A2,2 0 0,0 4,3A2,2 0 0,0 6,5A2,2 0 0,0 8,3A2,2 0 0,0 6,1M6,7A2,2 0 0,0 4,9A2,2 0 0,0 6,11A2,2 0 0,0 8,9A2,2 0 0,0 6,7M6,13A2,2 0 0,0 4,15A2,2 0 0,0 6,17A2,2 0 0,0 8,15A2,2 0 0,0 6,13M18,5A2,2 0 0,0 20,3A2,2 0 0,0 18,1A2,2 0 0,0 16,3A2,2 0 0,0 18,5M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13M18,13A2,2 0 0,0 16,15A2,2 0 0,0 18,17A2,2 0 0,0 20,15A2,2 0 0,0 18,13M18,7A2,2 0 0,0 16,9A2,2 0 0,0 18,11A2,2 0 0,0 20,9A2,2 0 0,0 18,7M12,7A2,2 0 0,0 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9A2,2 0 0,0 12,7M12,1A2,2 0 0,0 10,3A2,2 0 0,0 12,5A2,2 0 0,0 14,3A2,2 0 0,0 12,1Z"; -var mdiDiameter = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,15V13H7V15L4,12L7,9V11H17V9L20,12L17,15Z"; -var mdiDiameterOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16,15V13H8V15L5,12L8,9V11H16V9L19,12L16,15Z"; -var mdiDiameterVariant = "M4.15,21.46L5.47,19.58C3.35,17.74 2,15.03 2,12A10,10 0 0,1 12,2C13.78,2 15.44,2.46 16.89,3.27L18.21,1.39L19.85,2.54L18.53,4.42C20.65,6.26 22,8.97 22,12A10,10 0 0,1 12,22C10.22,22 8.56,21.54 7.11,20.73L5.79,22.61L4.15,21.46M12,4A8,8 0 0,0 4,12C4,14.35 5,16.46 6.63,17.93L15.73,4.92C14.62,4.33 13.35,4 12,4M12,20A8,8 0 0,0 20,12C20,9.65 19,7.54 17.37,6.07L8.27,19.08C9.38,19.67 10.65,20 12,20Z"; -var mdiDiamond = "M6,2L2,8L12,22L22,8L18,2H6Z"; -var mdiDiamondOutline = "M18,2H6L2,8L12,22L22,8L18,2M4.43,8L7.07,4H16.93L19.57,8L12,18.56L4.43,8Z"; -var mdiDiamondStone = "M16,9H19L14,16M10,9H14L12,17M5,9H8L10,16M15,4H17L19,7H16M11,4H13L14,7H10M7,4H9L8,7H5M6,2L2,8L12,22L22,8L18,2H6Z"; -var mdiDice1 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; -var mdiDice1Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 10.5C11.17 10.5 10.5 11.17 10.5 12S11.17 13.5 12 13.5 13.5 12.83 13.5 12 12.83 10.5 12 10.5"; -var mdiDice2 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z"; -var mdiDice2Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M7.5 6C6.67 6 6 6.67 6 7.5S6.67 9 7.5 9 9 8.33 9 7.5 8.33 6 7.5 6M16.5 15C15.67 15 15 15.67 15 16.5C15 17.33 15.67 18 16.5 18C17.33 18 18 17.33 18 16.5C18 15.67 17.33 15 16.5 15Z"; -var mdiDice3 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z"; -var mdiDice3Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M12 10.5C11.2 10.5 10.5 11.2 10.5 12S11.2 13.5 12 13.5 13.5 12.8 13.5 12 12.8 10.5 12 10.5M7.5 6C6.7 6 6 6.7 6 7.5S6.7 9 7.5 9 9 8.3 9 7.5 8.3 6 7.5 6M16.5 15C15.7 15 15 15.7 15 16.5C15 17.3 15.7 18 16.5 18C17.3 18 18 17.3 18 16.5C18 15.7 17.3 15 16.5 15Z"; -var mdiDice4 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z"; -var mdiDice4Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M7.5 6C6.67 6 6 6.67 6 7.5S6.67 9 7.5 9 9 8.33 9 7.5 8.33 6 7.5 6M16.5 15C15.67 15 15 15.67 15 16.5C15 17.33 15.67 18 16.5 18C17.33 18 18 17.33 18 16.5C18 15.67 17.33 15 16.5 15M16.5 6C15.67 6 15 6.67 15 7.5S15.67 9 16.5 9C17.33 9 18 8.33 18 7.5S17.33 6 16.5 6M7.5 15C6.67 15 6 15.67 6 16.5C6 17.33 6.67 18 7.5 18S9 17.33 9 16.5C9 15.67 8.33 15 7.5 15Z"; -var mdiDice5 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z"; -var mdiDice5Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7.5 6C6.7 6 6 6.7 6 7.5S6.7 9 7.5 9 9 8.3 9 7.5 8.3 6 7.5 6M16.5 15C15.7 15 15 15.7 15 16.5C15 17.3 15.7 18 16.5 18C17.3 18 18 17.3 18 16.5C18 15.7 17.3 15 16.5 15M16.5 6C15.7 6 15 6.7 15 7.5S15.7 9 16.5 9C17.3 9 18 8.3 18 7.5S17.3 6 16.5 6M12 10.5C11.2 10.5 10.5 11.2 10.5 12S11.2 13.5 12 13.5 13.5 12.8 13.5 12 12.8 10.5 12 10.5M7.5 15C6.7 15 6 15.7 6 16.5C6 17.3 6.7 18 7.5 18S9 17.3 9 16.5C9 15.7 8.3 15 7.5 15Z"; -var mdiDice6 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,10A2,2 0 0,0 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,10A2,2 0 0,0 5,12A2,2 0 0,0 7,14A2,2 0 0,0 9,12A2,2 0 0,0 7,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z"; -var mdiDice6Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7.5 6C6.7 6 6 6.7 6 7.5S6.7 9 7.5 9 9 8.3 9 7.5 8.3 6 7.5 6M16.5 15C15.7 15 15 15.7 15 16.5C15 17.3 15.7 18 16.5 18C17.3 18 18 17.3 18 16.5C18 15.7 17.3 15 16.5 15M16.5 10.5C15.7 10.5 15 11.2 15 12S15.7 13.5 16.5 13.5C17.3 13.5 18 12.8 18 12S17.3 10.5 16.5 10.5M16.5 6C15.7 6 15 6.7 15 7.5S15.7 9 16.5 9C17.3 9 18 8.3 18 7.5S17.3 6 16.5 6M7.5 10.5C6.7 10.5 6 11.2 6 12S6.7 13.5 7.5 13.5 9 12.8 9 12 8.3 10.5 7.5 10.5M7.5 15C6.7 15 6 15.7 6 16.5C6 17.3 6.7 18 7.5 18S9 17.3 9 16.5C9 15.7 8.3 15 7.5 15Z"; -var mdiDiceD10 = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M14.07 8.21C15.5 8.21 16.64 9.36 16.64 10.78V13.42C16.64 14.84 15.5 16 14.07 16C12.64 16 11.5 14.84 11.5 13.42V10.78C11.5 9.36 12.65 8.21 14.07 8.21M10.36 8.41H10.5V16H9V10.21L7.22 10.76V9.53L10.36 8.41M14.06 9.65C13.47 9.65 13 10.13 13 10.71V13.5C13 14.07 13.47 14.54 14.06 14.54C14.64 14.54 15.14 14.06 15.14 13.5V10.71C15.14 10.12 14.64 9.65 14.06 9.65Z"; -var mdiDiceD10Outline = "M10.5 16H9V10.21L7.22 10.76V9.53L10.36 8.41H10.5V16M14.07 8.21C15.5 8.21 16.64 9.36 16.64 10.78V13.42C16.64 14.84 15.5 16 14.07 16C12.64 16 11.5 14.84 11.5 13.42V10.78C11.5 9.36 12.65 8.21 14.07 8.21M14.06 9.65C13.47 9.65 13 10.13 13 10.71V13.5C13 14.07 13.47 14.54 14.06 14.54C14.64 14.54 15.14 14.06 15.14 13.5V10.71C15.14 10.12 14.64 9.65 14.06 9.65M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12Z"; -var mdiDiceD12 = "M12 2L1.5 9.64L5.5 22H18.5L22.5 9.64L12 2M10.5 17H8.89V10.89L7 11.47V10.19L10.31 9H10.5V17M17 17H11.66V15.91C11.66 15.91 15.23 12.45 15.23 11.4C15.23 10.12 14.18 10.25 14.18 10.25C13.5 10.3 13 10.87 13 11.55H11.44C11.5 10.09 12.72 8.94 14.27 9C16.74 9 16.77 10.85 16.77 11.3C16.77 13.07 13.58 15.77 13.58 15.77L17 15.75V17Z"; -var mdiDiceD12Outline = "M12,2L1.5,9.64L5.5,22H18.5L22.5,9.64L12,2M17,20H7L3.85,10.4L12,4.47L20.15,10.4L17,20M17,15.75V17H11.66V15.91C11.66,15.91 15.23,12.45 15.23,11.4C15.23,10.12 14.18,10.25 14.18,10.25C13.5,10.3 13,10.87 13,11.55H11.44C11.5,10.09 12.72,8.94 14.27,9C16.74,9 16.77,10.85 16.77,11.3C16.77,13.07 13.58,15.77 13.58,15.77L17,15.75M10.5,17H8.89V10.89L7,11.47V10.19L10.31,9H10.5V17Z"; -var mdiDiceD20 = "M20.47 6.62L12.57 2.18C12.41 2.06 12.21 2 12 2S11.59 2.06 11.43 2.18L3.53 6.62C3.21 6.79 3 7.12 3 7.5V16.5C3 16.88 3.21 17.21 3.53 17.38L11.43 21.82C11.59 21.94 11.79 22 12 22S12.41 21.94 12.57 21.82L20.47 17.38C20.79 17.21 21 16.88 21 16.5V7.5C21 7.12 20.79 6.79 20.47 6.62M11.45 15.96L6.31 15.93V14.91C6.31 14.91 9.74 11.58 9.75 10.57C9.75 9.33 8.73 9.46 8.73 9.46S7.75 9.5 7.64 10.71L6.14 10.76C6.14 10.76 6.18 8.26 8.83 8.26C11.2 8.26 11.23 10.04 11.23 10.5C11.23 12.18 8.15 14.77 8.15 14.77L11.45 14.76V15.96M17.5 13.5C17.5 14.9 16.35 16.05 14.93 16.05C13.5 16.05 12.36 14.9 12.36 13.5V10.84C12.36 9.42 13.5 8.27 14.93 8.27S17.5 9.42 17.5 10.84V13.5M16 10.77V13.53C16 14.12 15.5 14.6 14.92 14.6C14.34 14.6 13.86 14.12 13.86 13.53V10.77C13.86 10.18 14.34 9.71 14.92 9.71C15.5 9.71 16 10.18 16 10.77Z"; -var mdiDiceD20Outline = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15M14.93,8.27A2.57,2.57 0 0,1 17.5,10.84V13.5C17.5,14.9 16.35,16.05 14.93,16.05C13.5,16.05 12.36,14.9 12.36,13.5V10.84A2.57,2.57 0 0,1 14.93,8.27M14.92,9.71C14.34,9.71 13.86,10.18 13.86,10.77V13.53C13.86,14.12 14.34,14.6 14.92,14.6C15.5,14.6 16,14.12 16,13.53V10.77C16,10.18 15.5,9.71 14.92,9.71M11.45,14.76V15.96L6.31,15.93V14.91C6.31,14.91 9.74,11.58 9.75,10.57C9.75,9.33 8.73,9.46 8.73,9.46C8.73,9.46 7.75,9.5 7.64,10.71L6.14,10.76C6.14,10.76 6.18,8.26 8.83,8.26C11.2,8.26 11.23,10.04 11.23,10.5C11.23,12.18 8.15,14.77 8.15,14.77L11.45,14.76Z"; -var mdiDiceD4 = "M10.25 15.15L11.92 12.47V15.15H10.25M21.92 21H2.08C1.24 21 .72 20.08 1.16 19.36L11.08 3.13C11.5 2.44 12.5 2.44 12.92 3.13L22.84 19.36C23.28 20.08 22.76 21 21.92 21M14.29 15.15H13.43V10.42H11.91L8.75 15.41L8.82 16.36H11.92V18H13.43V16.36H14.29V15.15Z"; -var mdiDiceD4Outline = "M13.43,15.15H14.29V16.36H13.43V18H11.92V16.36H8.82L8.75,15.41L11.91,10.42H13.43V15.15M10.25,15.15H11.92V12.47L10.25,15.15M22,21H2C1.64,21 1.31,20.81 1.13,20.5C0.95,20.18 0.96,19.79 1.15,19.5L11.15,3C11.5,2.38 12.5,2.38 12.86,3L22.86,19.5C23.04,19.79 23.05,20.18 22.87,20.5C22.69,20.81 22.36,21 22,21M3.78,19H20.23L12,5.43L3.78,19Z"; -var mdiDiceD6 = "M13.05 13.5C13.05 14.27 12.61 14.83 12 14.83S10.85 14.27 10.85 13.5L10.83 12.78C10.83 12.78 11.21 12 11.95 12.1C12.56 12.1 13.05 12.73 13.05 13.5M21 5V19C21 20.11 20.11 21 19 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3H19C20.11 3 21 3.9 21 5M14.55 13.41C14.5 11.45 13.19 10.87 12.53 10.87C11.41 10.87 10.86 11.53 10.86 11.53S10.89 9.5 13.39 9.53V8.33C13.39 8.33 9.33 7.94 9.3 12.66C9.27 16.86 12.77 16 12.77 16S14.61 15.47 14.55 13.41Z"; -var mdiDiceD6Outline = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5M13.39,9.53C10.89,9.5 10.86,11.53 10.86,11.53C10.86,11.53 11.41,10.87 12.53,10.87C13.19,10.87 14.5,11.45 14.55,13.41C14.61,15.47 12.77,16 12.77,16C12.77,16 9.27,16.86 9.3,12.66C9.33,7.94 13.39,8.33 13.39,8.33V9.53M11.95,12.1C11.21,12 10.83,12.78 10.83,12.78L10.85,13.5C10.85,14.27 11.39,14.83 12,14.83C12.61,14.83 13.05,14.27 13.05,13.5C13.05,12.73 12.56,12.1 11.95,12.1Z"; -var mdiDiceD8 = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 8.25C13.31 8.25 14.38 9.2 14.38 10.38C14.38 11.07 14 11.68 13.44 12.07C14.14 12.46 14.6 13.13 14.6 13.9C14.6 15.12 13.44 16.1 12 16.1C10.56 16.1 9.4 15.12 9.4 13.9C9.4 13.13 9.86 12.46 10.56 12.07C10 11.68 9.63 11.07 9.63 10.38C9.63 9.2 10.69 8.25 12 8.25M12 9.5C11.5 9.5 11.1 9.95 11.1 10.5C11.1 11.05 11.5 11.5 12 11.5C12.5 11.5 12.9 11.05 12.9 10.5C12.9 9.95 12.5 9.5 12 9.5M12 12.65C11.39 12.65 10.9 13.14 10.9 13.75C10.9 14.36 11.39 14.85 12 14.85C12.61 14.85 13.1 14.36 13.1 13.75C13.1 13.14 12.61 12.65 12 12.65Z"; -var mdiDiceD8Outline = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12M12 8.25C13.31 8.25 14.38 9.2 14.38 10.38C14.38 11.07 14 11.68 13.44 12.07C14.14 12.46 14.6 13.13 14.6 13.9C14.6 15.12 13.44 16.1 12 16.1C10.56 16.1 9.4 15.12 9.4 13.9C9.4 13.13 9.86 12.46 10.56 12.07C10 11.68 9.63 11.07 9.63 10.38C9.63 9.2 10.69 8.25 12 8.25M12 12.65C11.39 12.65 10.9 13.14 10.9 13.75C10.9 14.36 11.39 14.85 12 14.85C12.61 14.85 13.1 14.36 13.1 13.75C13.1 13.14 12.61 12.65 12 12.65M12 9.5C11.5 9.5 11.1 9.95 11.1 10.5C11.1 11.05 11.5 11.5 12 11.5C12.5 11.5 12.9 11.05 12.9 10.5C12.9 9.95 12.5 9.5 12 9.5"; -var mdiDiceMultiple = "M19.78,3H11.22C10.55,3 10,3.55 10,4.22V8H16V14H19.78C20.45,14 21,13.45 21,12.78V4.22C21,3.55 20.45,3 19.78,3M12.44,6.67C11.76,6.67 11.21,6.12 11.21,5.44C11.21,4.76 11.76,4.21 12.44,4.21A1.23,1.23 0 0,1 13.67,5.44C13.67,6.12 13.12,6.67 12.44,6.67M18.56,12.78C17.88,12.79 17.33,12.24 17.32,11.56C17.31,10.88 17.86,10.33 18.54,10.32C19.22,10.31 19.77,10.86 19.78,11.56C19.77,12.23 19.23,12.77 18.56,12.78M18.56,6.67C17.88,6.68 17.33,6.13 17.32,5.45C17.31,4.77 17.86,4.22 18.54,4.21C19.22,4.2 19.77,4.75 19.78,5.44C19.78,6.12 19.24,6.66 18.56,6.67M4.22,10H12.78A1.22,1.22 0 0,1 14,11.22V19.78C14,20.45 13.45,21 12.78,21H4.22C3.55,21 3,20.45 3,19.78V11.22C3,10.55 3.55,10 4.22,10M8.5,14.28C7.83,14.28 7.28,14.83 7.28,15.5C7.28,16.17 7.83,16.72 8.5,16.72C9.17,16.72 9.72,16.17 9.72,15.5A1.22,1.22 0 0,0 8.5,14.28M5.44,11.22C4.77,11.22 4.22,11.77 4.22,12.44A1.22,1.22 0 0,0 5.44,13.66C6.11,13.66 6.66,13.11 6.66,12.44V12.44C6.66,11.77 6.11,11.22 5.44,11.22M11.55,17.33C10.88,17.33 10.33,17.88 10.33,18.55C10.33,19.22 10.88,19.77 11.55,19.77A1.22,1.22 0 0,0 12.77,18.55H12.77C12.77,17.88 12.23,17.34 11.56,17.33H11.55Z"; -var mdiDiceMultipleOutline = "M14 8C13.45 8 13 7.55 13 7S13.45 6 14 6C14.55 6 15 6.45 15 7C15 7.55 14.55 8 14 8M12 12V19H5V12H12M12.78 10H4.22C3.55 10 3 10.55 3 11.22V19.78C3 20.45 3.55 21 4.22 21H12.78C13.45 21 14 20.45 14 19.78V11.22C14 10.55 13.45 10 12.78 10M19.78 3H11.22C10.55 3 10 3.55 10 4.22V8H12V5H19V12H16V14H19.78C20.45 14 21 13.45 21 12.78V4.22C21 3.55 20.45 3 19.78 3M17 8C16.45 8 16 7.55 16 7S16.45 6 17 6C17.55 6 18 6.45 18 7C18 7.55 17.55 8 17 8M17 11C16.45 11 16 10.55 16 10S16.45 9 17 9C17.55 9 18 9.45 18 10C18 10.55 17.55 11 17 11M7 15C6.45 15 6 14.55 6 14S6.45 13 7 13C7.55 13 8 13.45 8 14C8 14.55 7.55 15 7 15M10 18C9.45 18 9 17.55 9 17S9.45 16 10 16C10.55 16 11 16.45 11 17C11 17.55 10.55 18 10 18"; -var mdiDigitalOcean = "M6 12H2C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22V18H8V14H12V18C15.32 18 18 15.31 18 12C18 8.69 15.31 6 12 6C8.69 6 6 8.69 6 12M8 18V21H5V18H8M3 16H5V18H3V16Z"; -var mdiDipSwitch = "M3,4H7A1,1 0 0,1 8,5V19A1,1 0 0,1 7,20H3A1,1 0 0,1 2,19V5A1,1 0 0,1 3,4M10,4H14A1,1 0 0,1 15,5V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V5A1,1 0 0,1 10,4M17,4H21A1,1 0 0,1 22,5V19A1,1 0 0,1 21,20H17A1,1 0 0,1 16,19V5A1,1 0 0,1 17,4M4,18H6V13H4V18M11,11H13V6H11V11M18,18H20V13H18V18Z"; -var mdiDirections = "M14,14.5V12H10V15H8V11A1,1 0 0,1 9,10H14V7.5L17.5,11M21.71,11.29L12.71,2.29H12.7C12.31,1.9 11.68,1.9 11.29,2.29L2.29,11.29C1.9,11.68 1.9,12.32 2.29,12.71L11.29,21.71C11.68,22.09 12.31,22.1 12.71,21.71L21.71,12.71C22.1,12.32 22.1,11.68 21.71,11.29Z"; -var mdiDirectionsFork = "M3,4V12.5L6,9.5L9,13C10,14 10,15 10,15V21H14V14C14,14 14,13 13.47,12C12.94,11 12,10 12,10L9,6.58L11.5,4M18,4L13.54,8.47L14,9C14,9 14.93,10 15.47,11C15.68,11.4 15.8,11.79 15.87,12.13L21,7"; -var mdiDisc = "M12,14C10.89,14 10,13.1 10,12C10,10.89 10.89,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiDiscAlert = "M10 14C8.9 14 8 13.1 8 12C8 10.9 8.9 10 10 10C11.1 10 12 10.9 12 12S11.1 14 10 14M10 4C5.6 4 2 7.6 2 12S5.6 20 10 20 18 16.4 18 12 14.4 4 10 4M20 13H22V7H20M20 17H22V15H20V17Z"; -var mdiDiscPlayer = "M14.5,10.37C15.54,10.37 16.38,9.53 16.38,8.5C16.38,7.46 15.54,6.63 14.5,6.63C13.46,6.63 12.63,7.46 12.63,8.5A1.87,1.87 0 0,0 14.5,10.37M14.5,1A7.5,7.5 0 0,1 22,8.5C22,10.67 21.08,12.63 19.6,14H9.4C7.93,12.63 7,10.67 7,8.5C7,4.35 10.36,1 14.5,1M6,21V22H4V21H2V15H22V21H20V22H18V21H6M4,18V19H13V18H4M15,17V19H17V17H15M19,17A1,1 0 0,0 18,18A1,1 0 0,0 19,19A1,1 0 0,0 20,18A1,1 0 0,0 19,17Z"; -var mdiDiscord = "M22,24L16.75,19L17.38,21H4.5A2.5,2.5 0 0,1 2,18.5V3.5A2.5,2.5 0 0,1 4.5,1H19.5A2.5,2.5 0 0,1 22,3.5V24M12,6.8C9.32,6.8 7.44,7.95 7.44,7.95C8.47,7.03 10.27,6.5 10.27,6.5L10.1,6.33C8.41,6.36 6.88,7.53 6.88,7.53C5.16,11.12 5.27,14.22 5.27,14.22C6.67,16.03 8.75,15.9 8.75,15.9L9.46,15C8.21,14.73 7.42,13.62 7.42,13.62C7.42,13.62 9.3,14.9 12,14.9C14.7,14.9 16.58,13.62 16.58,13.62C16.58,13.62 15.79,14.73 14.54,15L15.25,15.9C15.25,15.9 17.33,16.03 18.73,14.22C18.73,14.22 18.84,11.12 17.12,7.53C17.12,7.53 15.59,6.36 13.9,6.33L13.73,6.5C13.73,6.5 15.53,7.03 16.56,7.95C16.56,7.95 14.68,6.8 12,6.8M9.93,10.59C10.58,10.59 11.11,11.16 11.1,11.86C11.1,12.55 10.58,13.13 9.93,13.13C9.29,13.13 8.77,12.55 8.77,11.86C8.77,11.16 9.28,10.59 9.93,10.59M14.1,10.59C14.75,10.59 15.27,11.16 15.27,11.86C15.27,12.55 14.75,13.13 14.1,13.13C13.46,13.13 12.94,12.55 12.94,11.86C12.94,11.16 13.45,10.59 14.1,10.59Z"; -var mdiDishwasher = "M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2M10,4A1,1 0 0,1 11,5A1,1 0 0,1 10,6A1,1 0 0,1 9,5A1,1 0 0,1 10,4M7,4A1,1 0 0,1 8,5A1,1 0 0,1 7,6A1,1 0 0,1 6,5A1,1 0 0,1 7,4M18,20H6V8H18V20M14.67,15.33C14.69,16.03 14.41,16.71 13.91,17.21C12.86,18.26 11.15,18.27 10.09,17.21C9.59,16.71 9.31,16.03 9.33,15.33C9.4,14.62 9.63,13.94 10,13.33C10.37,12.5 10.81,11.73 11.33,11L12,10C13.79,12.59 14.67,14.36 14.67,15.33"; -var mdiDishwasherAlert = "M16 2H4C2.9 2 2 2.9 2 4V20C2 21.11 2.9 22 4 22H16C17.11 22 18 21.11 18 20V4C18 2.9 17.11 2 16 2M8 4C8.55 4 9 4.45 9 5S8.55 6 8 6 7 5.55 7 5 7.45 4 8 4M5 4C5.55 4 6 4.45 6 5S5.55 6 5 6 4 5.55 4 5 4.45 4 5 4M16 20H4V8H16V20M12.67 15.33C12.69 16.03 12.41 16.71 11.91 17.21C10.86 18.26 9.15 18.27 8.09 17.21C7.59 16.71 7.31 16.03 7.33 15.33C7.4 14.62 7.63 13.94 8 13.33C8.37 12.5 8.81 11.73 9.33 11L10 10C11.79 12.59 12.67 14.36 12.67 15.33M20 15H22V17H20V15M20 7H22V13H20V7Z"; -var mdiDishwasherOff = "M22.11 21.46L2.39 1.73L1.11 3L4 5.89V20C4 21.11 4.89 22 6 22H18C18.58 22 19.1 21.75 19.46 21.35L20.84 22.73L22.11 21.46M18 20H6V8H6.11L10.5 12.37C10.31 12.69 10.15 13 10 13.33C9.63 13.94 9.4 14.62 9.33 15.33C9.31 16.03 9.59 16.71 10.09 17.21C11.15 18.27 12.86 18.26 13.91 17.21C14.16 16.97 14.35 16.68 14.5 16.36L18 19.89V20M11.2 8H18V14.8L20 16.8V4C20 2.9 19.11 2 18 2H6C5.76 2 5.54 2.05 5.33 2.13L11.2 8M10 4C10.55 4 11 4.45 11 5S10.55 6 10 6 9 5.55 9 5 9.45 4 10 4Z"; -var mdiDisqus = "M12.08,22C9.63,22 7.39,21.11 5.66,19.63L1.41,20.21L3.05,16.15C2.5,14.88 2.16,13.5 2.16,12C2.16,6.5 6.6,2 12.08,2C17.56,2 22,6.5 22,12C22,17.5 17.56,22 12.08,22M17.5,11.97V11.94C17.5,9.06 15.46,7 11.95,7H8.16V17H11.9C15.43,17 17.5,14.86 17.5,11.97M12,14.54H10.89V9.46H12C13.62,9.46 14.7,10.39 14.7,12V12C14.7,13.63 13.62,14.54 12,14.54Z"; -var mdiDistributeHorizontalCenter = "M8 2V5H10V19H8V22H6V19H4V5H6V2H8M16 2V7H14V17H16V22H18V17H20V7H18V2H16Z"; -var mdiDistributeHorizontalLeft = "M21 7V17H16V22H14V2H16V7H21M5 2H3V22H5V19H10V5H5V2Z"; -var mdiDistributeHorizontalRight = "M3 17V7H8V2H10V22H8V17H3M19 22H21V2H19V5H14V19H19V22Z"; -var mdiDistributeVerticalBottom = "M7 3H17V8H22V10H2V8H7V3M2 19V21H22V19H19V14H5V19H2Z"; -var mdiDistributeVerticalCenter = "M2 16H5V14H19V16H22V18H19V20H5V18H2V16M2 8H7V10H17V8H22V6H17V4H7V6H2V8Z"; -var mdiDistributeVerticalTop = "M17 21H7V16H2V14H22V16H17V21M22 5V3H2V5H5V10H19V5H22Z"; -var mdiDivingFlippers = "M20.28,3.66C19.28,3.44 18.54,2.25 17.57,2.04C16.6,1.83 15.4,2.59 14.42,2.37C13.38,2 12.22,2.13 11.28,2.71L11.21,17L11,18C10.64,19.62 11.67,21.22 13.29,21.58C14.9,21.93 16.5,20.91 16.86,19.29L17.07,18.29L23,5.28C22.39,4.35 21.39,3.76 20.28,3.66M14.91,18.86C14.79,19.41 14.25,19.76 13.7,19.65C13.14,19.53 12.79,19 12.91,18.43L13.77,14.5C13.86,13.97 14.37,13.6 14.92,13.69C15.46,13.78 15.83,14.3 15.74,14.84C15.74,14.88 15.73,14.91 15.72,14.95L14.91,18.86M9.72,21.34C9.33,20.73 9.08,20.05 9,19.34L8.24,16C8.1,15.47 8.41,14.92 9,14.76C9.07,14.75 9.15,14.75 9.22,14.76V3.43C8.31,3.43 7.22,2.86 6.38,3.06C5.54,3.26 4.69,4.44 3.72,4.66C2.61,4.76 1.61,5.35 1,6.28L6.93,19.28L7.14,20.28C7.5,21.9 9.09,22.92 10.71,22.57H10.81C10.38,22.22 10,21.81 9.72,21.34Z"; -var mdiDivingHelmet = "M16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12M19.45,7.89L18.07,8.58L18.32,9H20V15H18.33C17.84,16.03 17.11,16.92 16.21,17.6C17.85,18.11 19.1,18.91 19.67,19.86C18.69,21.1 15.62,22 12,22C8.38,22 5.31,21.1 4.33,19.86C4.9,18.91 6.15,18.11 7.79,17.6C6.89,16.92 6.16,16.03 5.67,15H4V9H5.68C6.37,7.54 7.54,6.37 9,5.68V4H15V5.68C15.68,6 16.29,6.46 16.82,7L18.55,6.14C19.93,5.42 20,4.1 20,2H22C22,4.06 22,6.62 19.45,7.89M17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12Z"; -var mdiDivingScuba = "M12,15C13.31,15 14.42,15.83 14.83,17H18A4,4 0 0,1 22,21V22H20V21A2,2 0 0,0 18,19H14.83C14.42,20.17 13.31,21 12,21A3,3 0 0,1 9,18A3,3 0 0,1 12,15M12,17A1,1 0 0,0 11,18A1,1 0 0,0 12,19A1,1 0 0,0 13,18A1,1 0 0,0 12,17M18,3A2,2 0 0,1 20,5V10A2,2 0 0,1 18,12H14.85C14.43,12 14.05,12.24 13.9,12.63C13.7,13.23 13.23,13.71 12.62,13.91C11.58,14.25 10.44,13.68 10.1,12.63C9.95,12.24 9.57,12 9.15,12H6A2,2 0 0,1 4,10V5A2,2 0 0,1 6,3H18M18,10V5H6V10H10.65C10.9,9.46 11.41,9.09 12,9C12.59,9.09 13.1,9.46 13.35,10H18Z"; -var mdiDivingScubaFlag = "M2,6L19,20H2V6M5,4L22,18V4H5Z"; -var mdiDivingScubaTank = "M19,18.5A2.5,2.5 0 0,1 16.5,21A2.5,2.5 0 0,1 14,18.5C14,17.47 14.62,16.59 15.5,16.21V6H11V7.35C12.22,7.93 13,9.15 13,10.5V22H6V10.5C6,9.15 6.78,7.93 8,7.35V6H6V4H8V3.5A1.5,1.5 0 0,1 9.5,2A1.5,1.5 0 0,1 11,3.5V4H15.5A2,2 0 0,1 17.5,6V16.21C18.38,16.59 19,17.47 19,18.5Z"; -var mdiDivingScubaTankMultiple = "M22,18.5A2.5,2.5 0 0,1 19.5,21A2.5,2.5 0 0,1 17,18.5C17,17.47 17.62,16.59 18.5,16.21V6H14V7.35C15.22,7.93 16,9.15 16,10.5V22H2V10.5C2,9.15 2.78,7.93 4,7.35V6H2V4H4V3.5A1.5,1.5 0 0,1 5.5,2A1.5,1.5 0 0,1 7,3.5V4H11V3.5A1.5,1.5 0 0,1 12.5,2A1.5,1.5 0 0,1 14,3.5V4H18.5A2,2 0 0,1 20.5,6V16.21C21.38,16.59 22,17.47 22,18.5M11,7.35V6H7V7.35C8.22,7.93 9,9.15 9,10.5C9,9.15 9.78,7.93 11,7.35Z"; -var mdiDivingSnorkel = "M16,3H4A2,2 0 0,0 2,5V10A2,2 0 0,0 4,12H7.15C7.57,12 7.95,12.24 8.1,12.63C8.44,13.68 9.58,14.25 10.62,13.91C11.23,13.71 11.7,13.23 11.9,12.63C12.05,12.24 12.43,12 12.85,12H16A2,2 0 0,0 18,10V5A2,2 0 0,0 16,3M16,10H11.35C11.1,9.46 10.59,9.09 10,9C9.41,9.09 8.9,9.46 8.65,10H4V5H16V10M22,2V15.5A6.5,6.5 0 0,1 15.5,22C13.79,22 12.15,21.32 10.93,20.12C8.95,20.58 6.88,19.79 5.71,18.12L7.62,17.29C8.5,18.22 9.84,18.5 11,18C11.2,17.91 11.39,17.8 11.56,17.67C12.4,17.05 12.87,16.04 12.78,15L14.69,14.17C15.1,16.04 14.41,18 12.9,19.17C13.66,19.71 14.57,20 15.5,20C18,20 20,18 20,15.5V2H22Z"; -var mdiDivision = "M19,13H5V11H19V13M12,5A2,2 0 0,1 14,7A2,2 0 0,1 12,9A2,2 0 0,1 10,7A2,2 0 0,1 12,5M12,15A2,2 0 0,1 14,17A2,2 0 0,1 12,19A2,2 0 0,1 10,17A2,2 0 0,1 12,15Z"; -var mdiDivisionBox = "M17,13V11H7V13H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7M12,15A1,1 0 0,0 11,16A1,1 0 0,0 12,17A1,1 0 0,0 13,16A1,1 0 0,0 12,15Z"; -var mdiDlna = "M21.38,12.56H12.85C11.97,12.56 11.1,12.96 10.61,13.61V13.6C10.12,14.28 9.32,14.72 8.41,14.72C6.92,14.72 5.71,13.5 5.71,12C5.71,10.5 6.92,9.31 8.41,9.31C9.32,9.31 10.12,9.75 10.61,10.43V10.42C11.1,11.07 11.97,11.5 12.85,11.5H21.29C21.45,11.5 22,11.4 22,10.67C21.26,6.43 17.1,3.18 12.06,3.18C8.96,3.18 6.19,4.41 4.34,6.35C4.05,6.79 4.35,6.92 4.63,6.96H10.14C11,6.96 11.89,6.54 12.38,5.89V5.91C12.88,5.23 13.67,4.78 14.58,4.78C16.07,4.78 17.28,6 17.28,7.5C17.28,9 16.07,10.2 14.58,10.2C13.67,10.2 12.88,9.75 12.38,9.07V9.08C11.89,8.44 11,8.03 10.14,8.03H4.13L4.15,8.03C4.15,8.03 3.26,8 2.72,8.75C2.3,9.42 2,10.85 2,12C2,13.16 2.17,14.21 2.72,15.27C3.19,16.03 4.15,16 4.15,16H4.11L10.14,16C11,16 11.89,15.58 12.38,14.93V14.94C12.88,14.26 13.67,13.81 14.58,13.81C16.07,13.81 17.28,15.03 17.28,16.5C17.28,18 16.07,19.23 14.58,19.23C13.67,19.23 12.88,18.78 12.38,18.1V18.12C11.89,17.47 11,17.05 10.14,17.05H4.64C4.36,17.09 4.06,17.22 4.32,17.64C6.17,19.58 8.95,20.82 12.06,20.82C17.11,20.82 21.28,17.57 22,13.31C22,12.72 21.59,12.58 21.38,12.56"; -var mdiDna = "M4,2H6V4C6,5.44 6.68,6.61 7.88,7.78C8.74,8.61 9.89,9.41 11.09,10.2L9.26,11.39C8.27,10.72 7.31,10 6.5,9.21C5.07,7.82 4,6.1 4,4V2M18,2H20V4C20,6.1 18.93,7.82 17.5,9.21C16.09,10.59 14.29,11.73 12.54,12.84C10.79,13.96 9.09,15.05 7.88,16.22C6.68,17.39 6,18.56 6,20V22H4V20C4,17.9 5.07,16.18 6.5,14.79C7.91,13.41 9.71,12.27 11.46,11.16C13.21,10.04 14.91,8.95 16.12,7.78C17.32,6.61 18,5.44 18,4V2M14.74,12.61C15.73,13.28 16.69,14 17.5,14.79C18.93,16.18 20,17.9 20,20V22H18V20C18,18.56 17.32,17.39 16.12,16.22C15.26,15.39 14.11,14.59 12.91,13.8L14.74,12.61M7,3H17V4L16.94,4.5H7.06L7,4V3M7.68,6H16.32C16.08,6.34 15.8,6.69 15.42,7.06L14.91,7.5H9.07L8.58,7.06C8.2,6.69 7.92,6.34 7.68,6M9.09,16.5H14.93L15.42,16.94C15.8,17.31 16.08,17.66 16.32,18H7.68C7.92,17.66 8.2,17.31 8.58,16.94L9.09,16.5M7.06,19.5H16.94L17,20V21H7V20L7.06,19.5Z"; -var mdiDns = "M7,9A2,2 0 0,1 5,7A2,2 0 0,1 7,5A2,2 0 0,1 9,7A2,2 0 0,1 7,9M20,3H4A1,1 0 0,0 3,4V10A1,1 0 0,0 4,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M7,19A2,2 0 0,1 5,17A2,2 0 0,1 7,15A2,2 0 0,1 9,17A2,2 0 0,1 7,19M20,13H4A1,1 0 0,0 3,14V20A1,1 0 0,0 4,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13Z"; -var mdiDnsOutline = "M19,15V19H5V15H19M20,13H4A1,1 0 0,0 3,14V20A1,1 0 0,0 4,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13M7,18.5A1.5,1.5 0 0,1 5.5,17A1.5,1.5 0 0,1 7,15.5A1.5,1.5 0 0,1 8.5,17A1.5,1.5 0 0,1 7,18.5M19,5V9H5V5H19M20,3H4A1,1 0 0,0 3,4V10A1,1 0 0,0 4,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M7,8.5A1.5,1.5 0 0,1 5.5,7A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 8.5,7A1.5,1.5 0 0,1 7,8.5Z"; -var mdiDoNotDisturb = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,13H7V11H17V13Z"; -var mdiDoNotDisturbOff = "M17,11V13H15.54L20.22,17.68C21.34,16.07 22,14.11 22,12A10,10 0 0,0 12,2C9.89,2 7.93,2.66 6.32,3.78L13.54,11H17M2.27,2.27L1,3.54L3.78,6.32C2.66,7.93 2,9.89 2,12A10,10 0 0,0 12,22C14.11,22 16.07,21.34 17.68,20.22L20.46,23L21.73,21.73L2.27,2.27M7,13V11H8.46L10.46,13H7Z"; -var mdiDockBottom = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 13H4V6H20Z"; -var mdiDockLeft = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 18H9V6H20Z"; -var mdiDockRight = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z"; -var mdiDockTop = "M4 20H20C21.11 20 22 19.11 22 18V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20M4 11H20V18H4V11Z"; -var mdiDockWindow = "M18 18V20H4A2 2 0 0 1 2 18V8H4V18M22 6V14A2 2 0 0 1 20 16H8A2 2 0 0 1 6 14V6A2 2 0 0 1 8 4H20A2 2 0 0 1 22 6M20 6H8V14H20Z"; -var mdiDocker = "M21.81 10.25C21.75 10.21 21.25 9.82 20.17 9.82C19.89 9.82 19.61 9.85 19.33 9.9C19.12 8.5 17.95 7.79 17.9 7.76L17.61 7.59L17.43 7.86C17.19 8.22 17 8.63 16.92 9.05C16.72 9.85 16.84 10.61 17.25 11.26C16.76 11.54 15.96 11.61 15.79 11.61H2.62C2.28 11.61 2 11.89 2 12.24C2 13.39 2.18 14.54 2.58 15.62C3.03 16.81 3.71 17.69 4.58 18.23C5.56 18.83 7.17 19.17 9 19.17C9.79 19.17 10.61 19.1 11.42 18.95C12.54 18.75 13.62 18.36 14.61 17.79C15.43 17.32 16.16 16.72 16.78 16C17.83 14.83 18.45 13.5 18.9 12.35H19.09C20.23 12.35 20.94 11.89 21.33 11.5C21.59 11.26 21.78 10.97 21.92 10.63L22 10.39L21.81 10.25M3.85 11.24H5.61C5.69 11.24 5.77 11.17 5.77 11.08V9.5C5.77 9.42 5.7 9.34 5.61 9.34H3.85C3.76 9.34 3.69 9.41 3.69 9.5V11.08C3.7 11.17 3.76 11.24 3.85 11.24M6.28 11.24H8.04C8.12 11.24 8.2 11.17 8.2 11.08V9.5C8.2 9.42 8.13 9.34 8.04 9.34H6.28C6.19 9.34 6.12 9.41 6.12 9.5V11.08C6.13 11.17 6.19 11.24 6.28 11.24M8.75 11.24H10.5C10.6 11.24 10.67 11.17 10.67 11.08V9.5C10.67 9.42 10.61 9.34 10.5 9.34H8.75C8.67 9.34 8.6 9.41 8.6 9.5V11.08C8.6 11.17 8.66 11.24 8.75 11.24M11.19 11.24H12.96C13.04 11.24 13.11 11.17 13.11 11.08V9.5C13.11 9.42 13.05 9.34 12.96 9.34H11.19C11.11 9.34 11.04 9.41 11.04 9.5V11.08C11.04 11.17 11.11 11.24 11.19 11.24M6.28 9H8.04C8.12 9 8.2 8.91 8.2 8.82V7.25C8.2 7.16 8.13 7.09 8.04 7.09H6.28C6.19 7.09 6.12 7.15 6.12 7.25V8.82C6.13 8.91 6.19 9 6.28 9M8.75 9H10.5C10.6 9 10.67 8.91 10.67 8.82V7.25C10.67 7.16 10.61 7.09 10.5 7.09H8.75C8.67 7.09 8.6 7.15 8.6 7.25V8.82C8.6 8.91 8.66 9 8.75 9M11.19 9H12.96C13.04 9 13.11 8.91 13.11 8.82V7.25C13.11 7.16 13.04 7.09 12.96 7.09H11.19C11.11 7.09 11.04 7.15 11.04 7.25V8.82C11.04 8.91 11.11 9 11.19 9M11.19 6.72H12.96C13.04 6.72 13.11 6.65 13.11 6.56V5C13.11 4.9 13.04 4.83 12.96 4.83H11.19C11.11 4.83 11.04 4.89 11.04 5V6.56C11.04 6.64 11.11 6.72 11.19 6.72M13.65 11.24H15.41C15.5 11.24 15.57 11.17 15.57 11.08V9.5C15.57 9.42 15.5 9.34 15.41 9.34H13.65C13.57 9.34 13.5 9.41 13.5 9.5V11.08C13.5 11.17 13.57 11.24 13.65 11.24"; -var mdiDoctor = "M14.84,16.26C17.86,16.83 20,18.29 20,20V22H4V20C4,18.29 6.14,16.83 9.16,16.26L12,21L14.84,16.26M8,8H16V10A4,4 0 0,1 12,14A4,4 0 0,1 8,10V8M8,7L8.41,2.9C8.46,2.39 8.89,2 9.41,2H14.6C15.11,2 15.54,2.39 15.59,2.9L16,7H8M12,3H11V4H10V5H11V6H12V5H13V4H12V3Z"; -var mdiDog = "M18,4C16.29,4 15.25,4.33 14.65,4.61C13.88,4.23 13,4 12,4C11,4 10.12,4.23 9.35,4.61C8.75,4.33 7.71,4 6,4C3,4 1,12 1,14C1,14.83 2.32,15.59 4.14,15.9C4.78,18.14 7.8,19.85 11.5,20V15.72C10.91,15.35 10,14.68 10,14C10,13 12,13 12,13C12,13 14,13 14,14C14,14.68 13.09,15.35 12.5,15.72V20C16.2,19.85 19.22,18.14 19.86,15.9C21.68,15.59 23,14.83 23,14C23,12 21,4 18,4M4.15,13.87C3.65,13.75 3.26,13.61 3,13.5C3.25,10.73 5.2,6.4 6.05,6C6.59,6 7,6.06 7.37,6.11C5.27,8.42 4.44,12.04 4.15,13.87M9,12A1,1 0 0,1 8,11C8,10.46 8.45,10 9,10A1,1 0 0,1 10,11C10,11.56 9.55,12 9,12M15,12A1,1 0 0,1 14,11C14,10.46 14.45,10 15,10A1,1 0 0,1 16,11C16,11.56 15.55,12 15,12M19.85,13.87C19.56,12.04 18.73,8.42 16.63,6.11C17,6.06 17.41,6 17.95,6C18.8,6.4 20.75,10.73 21,13.5C20.75,13.61 20.36,13.75 19.85,13.87Z"; -var mdiDogService = "M14,8L17,11V21H15V15H8L6,18V21H4V15L5,14V11L2,8L3,7L5,9H7V12A1,1 0 0,0 8,13H12A1,1 0 0,0 13,12V9L14,8M19,5V3L15,7L18,10L19,9L20,10L22,8L19,5M11.5,9.5L4.5,2.5C4.23,2.22 3.79,2.22 3.5,2.5V2.5C3.22,2.77 3.22,3.21 3.5,3.5L10.5,10.5C10.77,10.78 11.21,10.78 11.5,10.5V10.5C11.78,10.23 11.78,9.79 11.5,9.5Z"; -var mdiDogSide = "M19,3L15,7L18,10L19,9L20,10L22,8L19,5V3M3,7L2,8L5,11V14L4,15V21H6V18L8,15H15V21H17V11L14,8L13,9H5L3,7Z"; -var mdiDogSideOff = "M18 10L15 7L19 3V5L22 8L20 10L19 9L18 10M17 11L14 8L13 9H12.2L17 13.8V11M2.39 1.73L1.11 3L7.11 9H5L3 7L2 8L5 11V14L4 15V21H6V18L8 15H13.11L15 16.89V21H17V18.89L20.84 22.73L22.11 21.46L2.39 1.73Z"; -var mdiDolby = "M2,5V19H22V5H2M6,17H4V7H6C8.86,7.09 11.1,9.33 11,12C11.1,14.67 8.86,16.91 6,17M20,17H18C15.14,16.91 12.9,14.67 13,12C12.9,9.33 15.14,7.09 18,7H20V17Z"; -var mdiDolly = "M11.97,19.88C10.93,20.26 9.78,19.72 9.4,18.69C9,17.65 9.55,16.5 10.59,16.13C11.63,15.75 12.78,16.28 13.16,17.31C13.54,18.35 13,19.5 11.97,19.88M9.9,14.25C7.83,15 6.76,17.3 7.5,19.38C8.28,21.45 10.58,22.5 12.66,21.75C14.73,21 15.79,18.7 15.04,16.63C14.28,14.55 11.97,13.5 9.9,14.25M15.94,4.58L9.37,7L10.75,10.74L17.32,8.33M20.32,13.62L15.54,15.37C15.71,15.66 15.85,15.96 15.97,16.28C16.09,16.6 16.17,16.93 16.22,17.25L21,15.5M19.54,8.58L11.09,11.68L11.58,13C12.83,13.09 14,13.64 14.89,14.55L20.92,12.34M2,2V4H5.09L8.66,13.75C8.94,13.57 9.24,13.43 9.56,13.31C9.88,13.19 10.21,13.11 10.53,13.06L6.5,2"; -var mdiDomain = "M18,15H16V17H18M18,11H16V13H18M20,19H12V17H14V15H12V13H14V11H12V9H20M10,7H8V5H10M10,11H8V9H10M10,15H8V13H10M10,19H8V17H10M6,7H4V5H6M6,11H4V9H6M6,15H4V13H6M6,19H4V17H6M12,7V3H2V21H22V7H12Z"; -var mdiDomainOff = "M12,19H16L14,17H12V19M10,15V13H8V15H10M10,19V17H8V19H10M6,11V9H4V11H6M6,15V13H4V15H6M6,19V17H4V19H6M1.31,1.78L22.31,22.69L21,24L18,21H2V5L0.09,3.09L1.31,1.78M16,11H18V13H16V11M8,5V5.91L5.11,3H12V7H22V19.92L20,17.91V9H12V9.89L9.09,7H10V5H8Z"; -var mdiDomainPlus = "M12 7V3H2V21H13.35A5.8 5.8 0 0 1 13 19H12V17H13.35A5 5 0 0 1 14 15.69V15H12V13H14V11H12V9H20V13.09A5.58 5.58 0 0 1 22 13.81V7M6 19H4V17H6M6 15H4V13H6M6 11H4V9H6M6 7H4V5H6M10 19H8V17H10M10 15H8V13H10M10 11H8V9H10M10 7H8V5H10M16 13H18V11H16M16 11V13H18V11M16 11V13H18V11M20 15V18H23V20H20V23H18V20H15V18H18V15Z"; -var mdiDomainRemove = "M12 7V3H2V21H13.35A5.8 5.8 0 0 1 13 19H12V17H13.35A5 5 0 0 1 14 15.69V15H12V13H14V11H12V9H20V13.09A5.58 5.58 0 0 1 22 13.81V7M6 19H4V17H6M6 15H4V13H6M6 11H4V9H6M6 7H4V5H6M10 19H8V17H10M10 15H8V13H10M10 11H8V9H10M10 7H8V5H10M16 13H18V11H16M16 11V13H18V11M16 11V13H18V11M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z"; -var mdiDomeLight = "M21 10C21 14.97 16.97 19 12 19C7.03 19 3 14.97 3 10V9.03C3 8.76 3.11 8.5 3.3 8.3C3.5 8.11 3.76 8 4.03 8H20C20.25 8 20.5 8.11 20.7 8.3C20.89 8.5 21 8.75 21 9V10M5 10C5 13.86 8.14 17 12 17C15.86 17 19 13.86 19 10H5M20 6V7H4V6C4 5.73 4.1 5.5 4.29 5.29C4.5 5.1 4.73 5 5 5H10V3H14V5H19C19.25 5 19.5 5.11 19.7 5.3C19.89 5.5 20 5.75 20 6Z"; -var mdiDominoMask = "M15.83 9.81C14.7 9.7 13.69 10.38 13.46 11.5C13.46 11.84 14.81 12.29 16.05 12.29C17.29 12.29 18.41 11.5 18.41 11.28C18.41 11.05 17.63 9.93 15.83 9.81M8.18 9.81C6.38 9.93 5.59 10.94 5.59 11.27C5.59 11.5 6.82 12.29 7.95 12.29S10.54 11.84 10.54 11.5C10.31 10.38 9.19 9.7 8.18 9.81M16.95 16C15.04 16 13.8 13.75 12 13.75S8.85 16 7.05 16C4.69 16 3 13.86 3 10.04C3 7.68 3.68 7 6.71 7S10.54 8.24 12 8.24 14.36 7 17.29 7 21 7.79 21 10.04C21 13.86 19.31 16 16.95 16Z"; -var mdiDonkey = "M21.34,10.35L21.27,10.28L21.18,10.19L18,7V6A0.5,0.5 0 0,0 17.5,5.5C17.36,5.5 17.22,5.56 17.13,5.66L13.46,9H7C6.32,9 5.69,9.35 5.32,9.92L2.62,12.59C2.29,13.04 2.39,13.66 2.84,14C3.18,14.24 3.65,14.25 4,14L5,13.07V19H8V15H13V19H16V13.83C16,13.3 16.21,12.79 16.59,12.42L18,11L20,12V12C20.15,12.08 20.32,12.13 20.5,12.13C21.1,12.11 21.59,11.61 21.58,11C21.57,10.76 21.5,10.53 21.34,10.35Z"; -var mdiDoor = "M8,3C6.89,3 6,3.89 6,5V21H18V5C18,3.89 17.11,3 16,3H8M8,5H16V19H8V5M13,11V13H15V11H13Z"; -var mdiDoorClosed = "M16,11H18V13H16V11M12,3H19C20.11,3 21,3.89 21,5V19H22V21H2V19H10V5C10,3.89 10.89,3 12,3M12,5V19H19V5H12Z"; -var mdiDoorClosedLock = "M16 11H18V13H16V11M12 3H19A2 2 0 0 1 21 5V19H22V21H2V19H10V5A2 2 0 0 1 12 3M12 5V19H19V5M6.2 5H2.8V4.5A1.7 1.7 0 0 1 6.2 4.5M7 5V4.5A2.5 2.5 0 0 0 2 4.5V5A1 1 0 0 0 1 6V10A1 1 0 0 0 2 11H7A1 1 0 0 0 8 10V6A1 1 0 0 0 7 5"; -var mdiDoorOpen = "M12,3C10.89,3 10,3.89 10,5H3V19H2V21H22V19H21V5C21,3.89 20.11,3 19,3H12M12,5H19V19H12V5M5,11H7V13H5V11Z"; -var mdiDoorbell = "M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M16 2H8C6.9 2 6 2.9 6 4V20C6 21.1 6.9 22 8 22H16C17.1 22 18 21.1 18 20V4C18 2.9 17.1 2 16 2M16 20H8V4H16V20Z"; -var mdiDoorbellVideo = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M18 4V20C18 21.1 17.11 22 16 22H8C6.9 22 6 21.11 6 20V4C6 2.9 6.9 2 8 2H16C17.11 2 18 2.9 18 4M10.5 7C10.5 7.83 11.17 8.5 12 8.5S13.5 7.83 13.5 7 12.83 5.5 12 5.5 10.5 6.17 10.5 7M16 10H8V20H16V10Z"; -var mdiDotNet = "M2,15A1,1 0 0,1 3,16A1,1 0 0,1 2,17A1,1 0 0,1 1,16A1,1 0 0,1 2,15M21,17H19V9H17V7H23V9H21V17M16,7V9H14V11H16V13H14V15H16V17H12V7H16M11,7V17H9L6,11V17H4V7H6L9,13V7H11Z"; -var mdiDotsGrid = "M12 16C13.1 16 14 16.9 14 18S13.1 20 12 20 10 19.1 10 18 10.9 16 12 16M12 10C13.1 10 14 10.9 14 12S13.1 14 12 14 10 13.1 10 12 10.9 10 12 10M12 4C13.1 4 14 4.9 14 6S13.1 8 12 8 10 7.1 10 6 10.9 4 12 4M6 16C7.1 16 8 16.9 8 18S7.1 20 6 20 4 19.1 4 18 4.9 16 6 16M6 10C7.1 10 8 10.9 8 12S7.1 14 6 14 4 13.1 4 12 4.9 10 6 10M6 4C7.1 4 8 4.9 8 6S7.1 8 6 8 4 7.1 4 6 4.9 4 6 4M18 16C19.1 16 20 16.9 20 18S19.1 20 18 20 16 19.1 16 18 16.9 16 18 16M18 10C19.1 10 20 10.9 20 12S19.1 14 18 14 16 13.1 16 12 16.9 10 18 10M18 4C19.1 4 20 4.9 20 6S19.1 8 18 8 16 7.1 16 6 16.9 4 18 4Z"; -var mdiDotsHexagon = "M16 12C16 10.9 16.9 10 18 10S20 10.9 20 12 19.1 14 18 14 16 13.1 16 12M10 12C10 10.9 10.9 10 12 10S14 10.9 14 12 13.1 14 12 14 10 13.1 10 12M4 12C4 10.9 4.9 10 6 10S8 10.9 8 12 7.1 14 6 14 4 13.1 4 12M13 18C13 16.9 13.9 16 15 16S17 16.9 17 18 16.1 20 15 20 13 19.1 13 18M7 18C7 16.9 7.9 16 9 16S11 16.9 11 18 10.1 20 9 20 7 19.1 7 18M13 6C13 4.9 13.9 4 15 4S17 4.9 17 6 16.1 8 15 8 13 7.1 13 6M7 6C7 4.9 7.9 4 9 4S11 4.9 11 6 10.1 8 9 8 7 7.1 7 6"; -var mdiDotsHorizontal = "M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z"; -var mdiDotsHorizontalCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5M6.5,10.5A1.5,1.5 0 0,0 5,12A1.5,1.5 0 0,0 6.5,13.5A1.5,1.5 0 0,0 8,12A1.5,1.5 0 0,0 6.5,10.5M17.5,10.5A1.5,1.5 0 0,0 16,12A1.5,1.5 0 0,0 17.5,13.5A1.5,1.5 0 0,0 19,12A1.5,1.5 0 0,0 17.5,10.5Z"; -var mdiDotsHorizontalCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 12,10.5M7.5,10.5A1.5,1.5 0 0,1 9,12A1.5,1.5 0 0,1 7.5,13.5A1.5,1.5 0 0,1 6,12A1.5,1.5 0 0,1 7.5,10.5M16.5,10.5A1.5,1.5 0 0,1 18,12A1.5,1.5 0 0,1 16.5,13.5A1.5,1.5 0 0,1 15,12A1.5,1.5 0 0,1 16.5,10.5Z"; -var mdiDotsSquare = "M12 16C13.1 16 14 16.9 14 18S13.1 20 12 20 10 19.1 10 18 10.9 16 12 16M12 4C13.1 4 14 4.9 14 6S13.1 8 12 8 10 7.1 10 6 10.9 4 12 4M6 16C7.1 16 8 16.9 8 18S7.1 20 6 20 4 19.1 4 18 4.9 16 6 16M6 10C7.1 10 8 10.9 8 12S7.1 14 6 14 4 13.1 4 12 4.9 10 6 10M6 4C7.1 4 8 4.9 8 6S7.1 8 6 8 4 7.1 4 6 4.9 4 6 4M18 16C19.1 16 20 16.9 20 18S19.1 20 18 20 16 19.1 16 18 16.9 16 18 16M18 10C19.1 10 20 10.9 20 12S19.1 14 18 14 16 13.1 16 12 16.9 10 18 10M18 4C19.1 4 20 4.9 20 6S19.1 8 18 8 16 7.1 16 6 16.9 4 18 4Z"; -var mdiDotsTriangle = "M12 16C13.1 16 14 16.9 14 18S13.1 20 12 20 10 19.1 10 18 10.9 16 12 16M15 10C16.1 10 17 10.9 17 12S16.1 14 15 14 13 13.1 13 12 13.9 10 15 10M6 16C7.1 16 8 16.9 8 18S7.1 20 6 20 4 19.1 4 18 4.9 16 6 16M9 10C10.1 10 11 10.9 11 12S10.1 14 9 14 7 13.1 7 12 7.9 10 9 10M12 4C13.1 4 14 4.9 14 6S13.1 8 12 8 10 7.1 10 6 10.9 4 12 4M18 16C19.1 16 20 16.9 20 18S19.1 20 18 20 16 19.1 16 18 16.9 16 18 16"; -var mdiDotsVertical = "M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z"; -var mdiDotsVerticalCircle = "M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5A1.5,1.5 0 0,0 10.5,12M10.5,17.5A1.5,1.5 0 0,0 12,19A1.5,1.5 0 0,0 13.5,17.5A1.5,1.5 0 0,0 12,16A1.5,1.5 0 0,0 10.5,17.5M10.5,6.5A1.5,1.5 0 0,0 12,8A1.5,1.5 0 0,0 13.5,6.5A1.5,1.5 0 0,0 12,5A1.5,1.5 0 0,0 10.5,6.5Z"; -var mdiDotsVerticalCircleOutline = "M10.5,12A1.5,1.5 0 0,1 12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12M10.5,16.5A1.5,1.5 0 0,1 12,15A1.5,1.5 0 0,1 13.5,16.5A1.5,1.5 0 0,1 12,18A1.5,1.5 0 0,1 10.5,16.5M10.5,7.5A1.5,1.5 0 0,1 12,6A1.5,1.5 0 0,1 13.5,7.5A1.5,1.5 0 0,1 12,9A1.5,1.5 0 0,1 10.5,7.5M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiDouban = "M20,6H4V4H20V6M20,18V20H4V18H7.33L6.26,14H5V8H19V14H17.74L16.67,18H20M7,12H17V10H7V12M9.4,18H14.6L15.67,14H8.33L9.4,18Z"; -var mdiDownload = "M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z"; -var mdiDownloadBox = "M5 3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3M8 17H16V15H8V17M16 10H13.5V7H10.5V10H8L12 14L16 10Z"; -var mdiDownloadBoxOutline = "M8 17V15H16V17H8M16 10L12 14L8 10H10.5V7H13.5V10H16M5 3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3M5 5V19H19V5H5Z"; -var mdiDownloadCircle = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M8 17H16V15H8V17M16 10H13.5V6H10.5V10H8L12 14L16 10Z"; -var mdiDownloadCircleOutline = "M8 17V15H16V17H8M16 10L12 14L8 10H10.5V6H13.5V10H16M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4Z"; -var mdiDownloadLock = "M5 20H14V18H5M19 9H15V3H9V9H5L12 16M22 16A1.08 1.08 0 0 1 23 17V21A1.08 1.08 0 0 1 22 22H17A1.08 1.08 0 0 1 16 21V17A1.08 1.08 0 0 1 17 16V14.5A2.5 2.5 0 0 1 22 14.5V16M21 16V14.5A1.5 1.5 0 0 0 18 14.5V16H21"; -var mdiDownloadLockOutline = "M22 16A1.08 1.08 0 0 1 23 17V21A1.08 1.08 0 0 1 22 22H17A1.08 1.08 0 0 1 16 21V17A1.08 1.08 0 0 1 17 16V14.5A2.5 2.5 0 0 1 22 14.5V16M21 16V14.5A1.5 1.5 0 0 0 18 14.5V16H21M13 5V11H14.17L12 13.17L9.83 11H11V5H13M15 3H9V9H5L12 16L19 9H15V3M14 18H5V20H14Z"; -var mdiDownloadMultiple = "M9,1V7H5L12,14L19,7H15V1H9M5,16V18H19V16H5M5,20V22H19V20H5Z"; -var mdiDownloadNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17M12,14.5L16.5,10H13V6H11V10H7.5L12,14.5Z"; -var mdiDownloadNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M12,14L16,10H13V6H11V10H8L12,14Z"; -var mdiDownloadOff = "M20.84 22.73L18.11 20H5V18H16.11L13.06 14.95L12 16L5 9H7.11L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M19 9H15V3H9V5.8L15.6 12.4L19 9Z"; -var mdiDownloadOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L7.11 9H5L12 16L13.06 14.95L16.11 18H5V20H18.11L20.84 22.73L22.11 21.46M11 5H13V9.8L15.6 12.4L19 9H15V3H9V5.8L11 7.8V5Z"; -var mdiDownloadOutline = "M13,5V11H14.17L12,13.17L9.83,11H11V5H13M15,3H9V9H5L12,16L19,9H15V3M19,18H5V20H19V18Z"; -var mdiDrag = "M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z"; -var mdiDragHorizontal = "M3,15V13H5V15H3M3,11V9H5V11H3M7,15V13H9V15H7M7,11V9H9V11H7M11,15V13H13V15H11M11,11V9H13V11H11M15,15V13H17V15H15M15,11V9H17V11H15M19,15V13H21V15H19M19,11V9H21V11H19Z"; -var mdiDragHorizontalVariant = "M21 11H3V9H21V11M21 13H3V15H21V13Z"; -var mdiDragVariant = "M22.67,12L18.18,16.5L15.67,14L17.65,12L15.67,10.04L18.18,7.53L22.67,12M12,1.33L16.47,5.82L13.96,8.33L12,6.35L10,8.33L7.5,5.82L12,1.33M12,22.67L7.53,18.18L10.04,15.67L12,17.65L14,15.67L16.5,18.18L12,22.67M1.33,12L5.82,7.5L8.33,10L6.35,12L8.33,13.96L5.82,16.47L1.33,12M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10Z"; -var mdiDragVertical = "M9,3H11V5H9V3M13,3H15V5H13V3M9,7H11V9H9V7M13,7H15V9H13V7M9,11H11V13H9V11M13,11H15V13H13V11M9,15H11V17H9V15M13,15H15V17H13V15M9,19H11V21H9V19M13,19H15V21H13V19Z"; -var mdiDragVerticalVariant = "M11 21H9V3H11V21M15 3H13V21H15V3Z"; -var mdiDramaMasks = "M8.11,19.45C5.94,18.65 4.22,16.78 3.71,14.35L2.05,6.54C1.81,5.46 2.5,4.4 3.58,4.17L13.35,2.1L13.38,2.09C14.45,1.88 15.5,2.57 15.72,3.63L16.07,5.3L20.42,6.23H20.45C21.5,6.47 22.18,7.53 21.96,8.59L20.3,16.41C19.5,20.18 15.78,22.6 12,21.79C10.42,21.46 9.08,20.61 8.11,19.45V19.45M20,8.18L10.23,6.1L8.57,13.92V13.95C8,16.63 9.73,19.27 12.42,19.84C15.11,20.41 17.77,18.69 18.34,16L20,8.18M16,16.5C15.37,17.57 14.11,18.16 12.83,17.89C11.56,17.62 10.65,16.57 10.5,15.34L16,16.5M8.47,5.17L4,6.13L5.66,13.94L5.67,13.97C5.82,14.68 6.12,15.32 6.53,15.87C6.43,15.1 6.45,14.3 6.62,13.5L7.05,11.5C6.6,11.42 6.21,11.17 6,10.81C6.06,10.2 6.56,9.66 7.25,9.5C7.33,9.5 7.4,9.5 7.5,9.5L8.28,5.69C8.32,5.5 8.38,5.33 8.47,5.17M15.03,12.23C15.35,11.7 16.03,11.42 16.72,11.57C17.41,11.71 17.91,12.24 18,12.86C17.67,13.38 17,13.66 16.3,13.5C15.61,13.37 15.11,12.84 15.03,12.23M10.15,11.19C10.47,10.66 11.14,10.38 11.83,10.53C12.5,10.67 13.03,11.21 13.11,11.82C12.78,12.34 12.11,12.63 11.42,12.5C10.73,12.33 10.23,11.8 10.15,11.19M11.97,4.43L13.93,4.85L13.77,4.05L11.97,4.43Z"; -var mdiDraw = "M9.75 20.85C11.53 20.15 11.14 18.22 10.24 17C9.35 15.75 8.12 14.89 6.88 14.06C6 13.5 5.19 12.8 4.54 12C4.26 11.67 3.69 11.06 4.27 10.94C4.86 10.82 5.88 11.4 6.4 11.62C7.31 12 8.21 12.44 9.05 12.96L10.06 11.26C8.5 10.23 6.5 9.32 4.64 9.05C3.58 8.89 2.46 9.11 2.1 10.26C1.78 11.25 2.29 12.25 2.87 13.03C4.24 14.86 6.37 15.74 7.96 17.32C8.3 17.65 8.71 18.04 8.91 18.5C9.12 18.94 9.07 18.97 8.6 18.97C7.36 18.97 5.81 18 4.8 17.36L3.79 19.06C5.32 20 7.88 21.47 9.75 20.85M20.84 5.25C21.06 5.03 21.06 4.67 20.84 4.46L19.54 3.16C19.33 2.95 18.97 2.95 18.76 3.16L17.74 4.18L19.82 6.26M11 10.92V13H13.08L19.23 6.85L17.15 4.77L11 10.92Z"; -var mdiDrawing = "M8.5,3A5.5,5.5 0 0,1 14,8.5C14,9.83 13.53,11.05 12.74,12H21V21H12V12.74C11.05,13.53 9.83,14 8.5,14A5.5,5.5 0 0,1 3,8.5A5.5,5.5 0 0,1 8.5,3Z"; -var mdiDrawingBox = "M18,18H12V12.21C11.34,12.82 10.47,13.2 9.5,13.2C7.46,13.2 5.8,11.54 5.8,9.5A3.7,3.7 0 0,1 9.5,5.8C11.54,5.8 13.2,7.46 13.2,9.5C13.2,10.47 12.82,11.34 12.21,12H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiDresser = "M4 3C2.9 3 2 3.9 2 5V8H22V5C22 3.9 21.11 3 20 3H4M10 5H14V6H10V5M2 9V14H22V9H2M10 11H14V12H10V11M2 15V18C2 19.11 2.9 20 4 20V21H6V20H18V21H20V20C21.11 20 22 19.11 22 18V15H2M10 17H14V18H10V17Z"; -var mdiDresserOutline = "M4 3C2.9 3 2 3.9 2 5V18C2 19.11 2.9 20 4 20V21H6V20H18V21H20V20C21.11 20 22 19.11 22 18V5C22 3.9 21.11 3 20 3H4M4 5H20V8H4V5M10 6V7H14V6H10M4 10H20V13H4V10M10 11V12H14V11H10M4 15H20V18H4V15M10 16V17H14V16H10Z"; -var mdiDrone = "M22,11H21L20,9H13.75L16,12.5H14L10.75,9H4C3.45,9 2,8.55 2,8C2,7.45 3.5,5.5 5.5,5.5C7.5,5.5 7.67,6.5 9,7H21A1,1 0 0,1 22,8V9L22,11M10.75,6.5L14,3H16L13.75,6.5H10.75M18,11V9.5H19.75L19,11H18M3,19A1,1 0 0,1 2,18A1,1 0 0,1 3,17A4,4 0 0,1 7,21A1,1 0 0,1 6,22A1,1 0 0,1 5,21A2,2 0 0,0 3,19M11,21A1,1 0 0,1 10,22A1,1 0 0,1 9,21A6,6 0 0,0 3,15A1,1 0 0,1 2,14A1,1 0 0,1 3,13A8,8 0 0,1 11,21Z"; -var mdiDropbox = "M3 6.2L8 9.39L13 6.2L8 3L3 6.2M13 6.2L18 9.39L23 6.2L18 3L13 6.2M3 12.55L8 15.74L13 12.55L8 9.35L3 12.55M18 9.35L13 12.55L18 15.74L23 12.55L18 9.35M8.03 16.8L13.04 20L18.04 16.8L13.04 13.61L8.03 16.8Z"; -var mdiDrupal = "M20.47,14.65C20.47,15.29 20.25,16.36 19.83,17.1C19.4,17.85 19.08,18.06 18.44,18.06C17.7,17.95 16.31,15.82 15.36,15.72C14.18,15.72 11.73,18.17 9.71,18.17C8.54,18.17 8.11,17.95 7.79,17.74C7.15,17.31 6.94,16.67 6.94,15.82C6.94,14.22 8.43,12.84 10.24,12.84C12.59,12.84 14.18,15.18 15.36,15.08C16.31,15.08 18.23,13.16 19.19,13.16C20.15,12.95 20.47,14 20.47,14.65M16.63,5.28C15.57,4.64 14.61,4.32 13.54,3.68C12.91,3.25 12.05,2.3 11.31,1.44C11,2.83 10.78,3.36 10.24,3.79C9.18,4.53 8.64,4.85 7.69,5.28C6.94,5.7 3,8.05 3,13.16C3,18.27 7.37,22 12.05,22C16.85,22 21,18.5 21,13.27C21.21,8.05 17.27,5.7 16.63,5.28Z"; -var mdiDuck = "M8.5,5A1.5,1.5 0 0,0 7,6.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 10,6.5A1.5,1.5 0 0,0 8.5,5M10,2A5,5 0 0,1 15,7C15,8.7 14.15,10.2 12.86,11.1C14.44,11.25 16.22,11.61 18,12.5C21,14 22,12 22,12C22,12 21,21 15,21H9C9,21 4,21 4,16C4,13 7,12 6,10C2,10 2,6.5 2,6.5C3,7 4.24,7 5,6.65C5.19,4.05 7.36,2 10,2Z"; -var mdiDumbbell = "M20.57,14.86L22,13.43L20.57,12L17,15.57L8.43,7L12,3.43L10.57,2L9.14,3.43L7.71,2L5.57,4.14L4.14,2.71L2.71,4.14L4.14,5.57L2,7.71L3.43,9.14L2,10.57L3.43,12L7,8.43L15.57,17L12,20.57L13.43,22L14.86,20.57L16.29,22L18.43,19.86L19.86,21.29L21.29,19.86L19.86,18.43L22,16.29L20.57,14.86Z"; -var mdiDumpTruck = "M20,8H19L17,8H15V14H2V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5M17,12V9.5H19.5L21.46,12H17M18,7H14V13H3L1.57,8H1V6H13L14,5H18V7Z"; -var mdiEarHearing = "M17,20C16.71,20 16.44,19.94 16.24,19.85C15.53,19.5 15.03,18.97 14.53,17.47C14,15.91 13.06,15.18 12.14,14.47C11.35,13.86 10.53,13.23 9.82,11.94C9.29,11 9,9.93 9,9C9,6.2 11.2,4 14,4C16.8,4 19,6.2 19,9H21C21,5.07 17.93,2 14,2C10.07,2 7,5.07 7,9C7,10.26 7.38,11.65 8.07,12.9C9,14.55 10.05,15.38 10.92,16.05C11.73,16.67 12.31,17.12 12.63,18.1C13.23,19.92 14,20.94 15.36,21.65C15.87,21.88 16.43,22 17,22A4,4 0 0,0 21,18H19A2,2 0 0,1 17,20M7.64,2.64L6.22,1.22C4.23,3.21 3,5.96 3,9C3,12.04 4.23,14.79 6.22,16.78L7.63,15.37C6,13.74 5,11.5 5,9C5,6.5 6,4.26 7.64,2.64M11.5,9A2.5,2.5 0 0,0 14,11.5A2.5,2.5 0 0,0 16.5,9A2.5,2.5 0 0,0 14,6.5A2.5,2.5 0 0,0 11.5,9Z"; -var mdiEarHearingOff = "M1,4.27L2.28,3L20,20.72L18.73,22L12.91,16.18C12.19,16.74 11.67,17.19 11.37,18.1C10.77,19.92 10,20.94 8.64,21.65C8.13,21.88 7.57,22 7,22A4,4 0 0,1 3,18H5A2,2 0 0,0 7,20C7.29,20 7.56,19.94 7.76,19.85C8.47,19.5 8.97,18.97 9.47,17.47C9.91,16.12 10.69,15.39 11.5,14.76L5.04,8.31C5,8.54 5,8.77 5,9H3C3,8.17 3.14,7.39 3.39,6.66L1,4.27M14.18,11.94C14.71,11 15,9.93 15,9C15,6.2 12.8,4 10,4C8.81,4 7.74,4.39 6.89,5.06L5.46,3.63C6.67,2.61 8.25,2 10,2C13.93,2 17,5.07 17,9C17,10.26 16.62,11.65 15.93,12.9L15.47,13.65L14.03,12.2L14.18,11.94M16.36,2.64L17.78,1.22C19.77,3.21 21,5.96 21,9C21,11.83 19.93,14.41 18.18,16.36L16.77,14.94C18.15,13.36 19,11.28 19,9C19,6.5 18,4.26 16.36,2.64M12.5,9C12.5,9.5 12.36,9.93 12.13,10.31L8.69,6.87C9.07,6.64 9.5,6.5 10,6.5A2.5,2.5 0 0,1 12.5,9Z"; -var mdiEarth = "M17.9,17.39C17.64,16.59 16.89,16 16,16H15V13A1,1 0 0,0 14,12H8V10H10A1,1 0 0,0 11,9V7H13A2,2 0 0,0 15,5V4.59C17.93,5.77 20,8.64 20,12C20,14.08 19.2,15.97 17.9,17.39M11,19.93C7.05,19.44 4,16.08 4,12C4,11.38 4.08,10.78 4.21,10.21L9,15V16A2,2 0 0,0 11,18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiEarthArrowRight = "M19 21V19H15V17H19V15L22 18L19 21M12 18C12 15.8 13.2 13.9 15 12.8C14.9 12.3 14.5 12 14 12H8V10H10C10.6 10 11 9.6 11 9V7H13C14.1 7 15 6.1 15 5V4.6C17.9 5.8 20 8.6 20 12V12.3C20.7 12.5 21.3 12.9 21.9 13.4C22 13 22 12.5 22 12C22 6.5 17.5 2 12 2S2 6.5 2 12 6.5 22 12 22C12.5 22 13 22 13.4 21.9C12.5 20.8 12 19.5 12 18M11 19.9C7 19.4 4 16.1 4 12C4 11.4 4.1 10.8 4.2 10.2L9 15V16C9 17.1 9.9 18 11 18V19.9Z"; -var mdiEarthBox = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M15.78,5H19V17.18C18.74,16.38 17.69,15.79 16.8,15.79H15.8V12.79A1,1 0 0,0 14.8,11.79H8.8V9.79H10.8A1,1 0 0,0 11.8,8.79V6.79H13.8C14.83,6.79 15.67,6 15.78,5M5,10.29L9.8,14.79V15.79C9.8,16.9 10.7,17.79 11.8,17.79V19H5V10.29Z"; -var mdiEarthBoxMinus = "M22 17V19H14V17H22M5 3H19C20.1 3 21 3.89 21 5V12.8C20.39 12.45 19.72 12.2 19 12.08V5H15.78C15.67 6 14.83 6.79 13.8 6.79H11.8V8.79C11.8 9.35 11.35 9.79 10.8 9.79H8.8V11.79H14.8C15.23 11.79 15.6 12.06 15.74 12.44C13.6 13.31 12.07 15.39 12 17.83C10.7 17.79 9.8 16.9 9.8 15.79V14.79L5 10.29V19H12.08C12.2 19.72 12.45 20.39 12.8 21H5C3.9 21 3 20.11 3 19V5C3 3.89 3.89 3 5 3Z"; -var mdiEarthBoxOff = "M23,4.27L21,6.27V19A2,2 0 0,1 19,21H6.27L4.27,23L3,21.72L21.72,3L23,4.27M5,3H19.18L17.18,5H15.78C15.67,6 14.83,6.79 13.8,6.79H11.8V8.79C11.8,9.35 11.35,9.79 10.8,9.79H8.8V11.79H10.38L8.55,13.62L5,10.29V17.18L3,19.18V5C3,3.89 3.89,3 5,3M11.8,19V17.79C11.17,17.79 10.6,17.5 10.23,17.04L8.27,19H11.8M15.8,12.79V15.79H16.8C17.69,15.79 18.74,16.38 19,17.18V8.27L15.33,11.94C15.61,12.12 15.8,12.43 15.8,12.79Z"; -var mdiEarthBoxPlus = "M17 14H19V17H22V19H19V22H17V19H14V17H17V14M5 3H19C20.1 3 21 3.89 21 5V12.8C20.39 12.45 19.72 12.2 19 12.08V5H15.78C15.67 6 14.83 6.79 13.8 6.79H11.8V8.79C11.8 9.35 11.35 9.79 10.8 9.79H8.8V11.79H14.8C15.23 11.79 15.6 12.06 15.74 12.44C13.6 13.31 12.07 15.39 12 17.83C10.7 17.79 9.8 16.9 9.8 15.79V14.79L5 10.29V19H12.08C12.2 19.72 12.45 20.39 12.8 21H5C3.9 21 3 20.11 3 19V5C3 3.89 3.89 3 5 3Z"; -var mdiEarthBoxRemove = "M14.46 15.88L15.88 14.46L18 16.59L20.12 14.47L21.54 15.88L19.41 18L21.54 20.12L20.12 21.54L18 19.41L15.88 21.54L14.46 20.12L16.59 18L14.47 15.88M5 3H19C20.1 3 21 3.89 21 5V12.8C20.39 12.45 19.72 12.2 19 12.08V5H15.78C15.67 6 14.83 6.79 13.8 6.79H11.8V8.79C11.8 9.35 11.35 9.79 10.8 9.79H8.8V11.79H14.8C15.23 11.79 15.6 12.06 15.74 12.44C13.6 13.31 12.07 15.39 12 17.83C10.7 17.79 9.8 16.9 9.8 15.79V14.79L5 10.29V19H12.08C12.2 19.72 12.45 20.39 12.8 21H5C3.9 21 3 20.11 3 19V5C3 3.89 3.89 3 5 3Z"; -var mdiEarthMinus = "M14 17H22V19H14V17M20 12C20 8.64 17.93 5.77 15 4.59V5C15 6.1 14.1 7 13 7H11V9C11 9.55 10.55 10 10 10H8V12H14C14.5 12 14.9 12.35 15 12.81C13.2 13.85 12 15.79 12 18C12 19.5 12.54 20.85 13.44 21.9L12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12L21.9 13.44C21.34 12.96 20.7 12.59 20 12.34L20 12M11 19.93V18C9.9 18 9 17.1 9 16V15L4.21 10.21C4.08 10.78 4 11.38 4 12C4 16.08 7.06 19.44 11 19.93Z"; -var mdiEarthOff = "M22,5.27L20.5,6.75C21.46,8.28 22,10.07 22,12A10,10 0 0,1 12,22C10.08,22 8.28,21.46 6.75,20.5L5.27,22L4,20.72L20.72,4L22,5.27M17.9,17.39C19.2,15.97 20,14.08 20,12C20,10.63 19.66,9.34 19.05,8.22L14.83,12.44C14.94,12.6 15,12.79 15,13V16H16C16.89,16 17.64,16.59 17.9,17.39M11,19.93V18C10.5,18 10.07,17.83 9.73,17.54L8.22,19.05C9.07,19.5 10,19.8 11,19.93M15,4.59V5A2,2 0 0,1 13,7H11V9A1,1 0 0,1 10,10H8V12H10.18L8.09,14.09L4.21,10.21C4.08,10.78 4,11.38 4,12C4,13.74 4.56,15.36 5.5,16.67L4.08,18.1C2.77,16.41 2,14.3 2,12A10,10 0 0,1 12,2C14.3,2 16.41,2.77 18.1,4.08L16.67,5.5C16.16,5.14 15.6,4.83 15,4.59Z"; -var mdiEarthPlus = "M17 14H19V17H22V19H19V22H17V19H14V17H17V14M20 12C20 8.64 17.93 5.77 15 4.59V5C15 6.1 14.1 7 13 7H11V9C11 9.55 10.55 10 10 10H8V12H14C14.5 12 14.9 12.35 15 12.81C13.2 13.85 12 15.79 12 18C12 19.5 12.54 20.85 13.44 21.9L12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12L21.9 13.44C21.34 12.96 20.7 12.59 20 12.34L20 12M11 19.93V18C9.9 18 9 17.1 9 16V15L4.21 10.21C4.08 10.78 4 11.38 4 12C4 16.08 7.06 19.44 11 19.93Z"; -var mdiEarthRemove = "M14.46 15.88L15.88 14.46L18 16.59L20.12 14.47L21.54 15.88L19.41 18L21.54 20.12L20.12 21.54L18 19.41L15.88 21.54L14.46 20.12L16.59 18L14.47 15.88M20 12C20 8.64 17.93 5.77 15 4.59V5C15 6.1 14.1 7 13 7H11V9C11 9.55 10.55 10 10 10H8V12H14C14.5 12 14.9 12.35 15 12.81C13.2 13.85 12 15.79 12 18C12 19.5 12.54 20.85 13.44 21.9L12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12L21.9 13.44C21.34 12.96 20.7 12.59 20 12.34L20 12M11 19.93V18C9.9 18 9 17.1 9 16V15L4.21 10.21C4.08 10.78 4 11.38 4 12C4 16.08 7.06 19.44 11 19.93Z"; -var mdiEgg = "M19.5,14.5A7.5,7.5 0 0,1 12,22A7.5,7.5 0 0,1 4.5,14.5C4.5,10.36 7.86,2 12,2C16.14,2 19.5,10.36 19.5,14.5Z"; -var mdiEggEaster = "M6.89,6.36C8.23,3.91 10,2 12,2C14,2 15.77,3.91 17.11,6.36C16.26,6.57 15.5,7.07 15,7.77C13.79,6.11 11.46,5.75 9.8,6.97C9.5,7.19 9.22,7.46 9,7.77C8.5,7.07 7.74,6.57 6.89,6.36M15,18.06L12,15.06L9,18.06L6,15.06L4.73,16.33C5.75,20.35 9.83,22.77 13.84,21.76C16.5,21.08 18.59,19 19.27,16.33L18,15.06L15,18.06M9,15.94L12,12.94L15,15.94L18,12.94L19.5,14.44C19.37,12.13 18.8,9.86 17.81,7.76C16.65,7.86 15.75,8.83 15.75,10H14.25A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10H8.25C8.25,8.83 7.35,7.86 6.19,7.76C5.2,9.86 4.63,12.13 4.5,14.44L6,12.94L9,15.94Z"; -var mdiEggOff = "M22.1 21.5L2.4 1.7L1.1 3L6.1 8C5.1 10.3 4.5 12.8 4.5 14.5C4.5 18.6 7.9 22 12 22C14.2 22 16.2 21 17.6 19.5L20.8 22.7L22.1 21.5M19.5 14.5C19.5 10.4 16.1 2 12 2C10.5 2 9.1 3.1 7.9 4.7L19.3 16.1C19.4 15.6 19.5 15.1 19.5 14.5Z"; -var mdiEggOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L6.1 8C5.1 10.28 4.5 12.76 4.5 14.5C4.5 18.64 7.86 22 12 22C14.23 22 16.22 21 17.59 19.5L20.84 22.73L22.11 21.46M12 20C8.97 20 6.5 17.53 6.5 14.5C6.5 13.08 6.95 11.25 7.63 9.5L16.17 18.06C15.16 19.24 13.67 20 12 20M9.36 6.16L7.92 4.72C9.1 3.11 10.5 2 12 2C16.14 2 19.5 10.36 19.5 14.5C19.5 15.06 19.43 15.6 19.32 16.12L17.5 14.29C17.38 10.46 14.28 4 12 4C11.17 4 10.22 4.87 9.36 6.16Z"; -var mdiEggOutline = "M12 4C14.32 4 17.5 10.7 17.5 14.5C17.5 17.53 15.03 20 12 20S6.5 17.53 6.5 14.5C6.5 10.7 9.68 4 12 4M12 2C7.86 2 4.5 10.36 4.5 14.5C4.5 18.64 7.86 22 12 22S19.5 18.64 19.5 14.5C19.5 10.36 16.14 2 12 2Z"; -var mdiEiffelTower = "M8.21 17C8.65 16.15 9.06 15.16 9.44 14H9V12H10C10.61 9.4 11 6.13 11 2H13C13 6.13 13.4 9.4 14 12H15V14H14.56C14.94 15.16 15.35 16.15 15.79 17H17L17 19L19 22H16.58C15.81 20.24 14.05 19 12 19C9.95 19 8.19 20.24 7.42 22H5L7 19L6.97 17H8.21M12.59 14H11.41C11.07 15.13 10.69 16.13 10.28 17H13.72C13.32 16.13 12.93 15.13 12.59 14Z"; -var mdiEightTrack = "M7,2L5,5V16L6,20C6.27,21.07 6.9,22 8,22H16A2,2 0 0,0 18,20L19,16V5L17,2H15V3H13V2H7M7,6H17V16H7V6Z"; -var mdiEject = "M12,5L5.33,15H18.67M5,17H19V19H5V17Z"; -var mdiEjectOutline = "M5,17H19V19H5V17M12,5L5.33,15H18.67L12,5M12,8.6L14.93,13H9.07L12,8.6Z"; -var mdiElectricSwitch = "M1,11H3.17C3.58,9.83 4.69,9 6,9C6.65,9 7.25,9.21 7.74,9.56L14.44,4.87L15.58,6.5L8.89,11.2C8.96,11.45 9,11.72 9,12A3,3 0 0,1 6,15C4.69,15 3.58,14.17 3.17,13H1V11M23,11V13H20.83C20.42,14.17 19.31,15 18,15A3,3 0 0,1 15,12A3,3 0 0,1 18,9C19.31,9 20.42,9.83 20.83,11H23M6,11A1,1 0 0,0 5,12A1,1 0 0,0 6,13A1,1 0 0,0 7,12A1,1 0 0,0 6,11M18,11A1,1 0 0,0 17,12A1,1 0 0,0 18,13A1,1 0 0,0 19,12A1,1 0 0,0 18,11Z"; -var mdiElectricSwitchClosed = "M20.83 11A3 3 0 0 0 15.18 11H8.82A3 3 0 0 0 3.17 11H1V13H3.17A3 3 0 0 0 8.82 13H15.18A3 3 0 0 0 20.83 13H23V11M6 13A1 1 0 1 1 7 12A1 1 0 0 1 6 13M18 13A1 1 0 1 1 19 12A1 1 0 0 1 18 13Z"; -var mdiElectronFramework = "M12 22C10.33 22 8.84 20.5 7.9 17.93C7.83 17.73 7.93 17.5 8.14 17.44C8.34 17.36 8.56 17.47 8.63 17.67C9.44 19.9 10.7 21.23 12 21.23C12.94 21.23 13.87 20.55 14.62 19.31C14.73 19.13 14.96 19.07 15.15 19.18C15.33 19.29 15.39 19.53 15.28 19.71C14.38 21.19 13.22 22 12 22M15.91 17.72C15.87 17.72 15.83 17.71 15.8 17.7C15.59 17.63 15.5 17.42 15.54 17.21C16 15.81 16.22 14.18 16.22 12.5C16.22 8.65 14.97 5.24 13.19 4.14C12.94 4.5 12.5 4.78 12 4.78C11.24 4.78 10.61 4.16 10.61 3.39C10.61 2.62 11.24 2 12 2C12.77 2 13.4 2.61 13.41 3.37C15.53 4.5 17 8.21 17 12.5C17 14.25 16.75 15.96 16.28 17.45C16.23 17.61 16.08 17.72 15.91 17.72M12 2.77C11.66 2.77 11.38 3.05 11.38 3.39C11.38 3.73 11.67 4 12 4C12.35 4 12.64 3.73 12.64 3.39C12.64 3.05 12.35 2.77 12 2.77M4.08 18.54C3.31 18.54 2.68 17.91 2.68 17.15C2.68 16.66 2.94 16.22 3.33 15.97C3.19 13.56 5.68 10.41 9.5 8.22C11.09 7.32 12.75 6.67 14.32 6.34C14.5 6.29 14.73 6.42 14.77 6.63C14.82 6.84 14.69 7.05 14.5 7.09C13 7.41 11.41 8.03 9.9 8.89C6.46 10.86 4.1 13.68 4.1 15.76C4.86 15.77 5.5 16.39 5.5 17.15C5.5 17.92 4.85 18.54 4.08 18.54M4.08 16.53C3.74 16.53 3.46 16.81 3.46 17.15C3.46 17.5 3.74 17.77 4.08 17.77S4.71 17.5 4.71 17.15C4.71 16.81 4.42 16.53 4.08 16.53M18.5 13.44C18.43 13.44 18.34 13.41 18.27 13.35C18.11 13.21 18.09 12.97 18.23 12.8C19.77 11 20.3 9.26 19.64 8.14C19.17 7.33 18.1 6.88 16.63 6.86C16.41 6.86 16.24 6.68 16.25 6.47C16.25 6.26 16.43 6.1 16.64 6.09C18.39 6.11 19.7 6.7 20.31 7.75C21.15 9.19 20.6 11.21 18.82 13.3C18.74 13.39 18.63 13.44 18.5 13.44M16.5 18.9C14.5 18.9 11.94 18.16 9.5 16.77C7.95 15.88 6.57 14.79 5.5 13.63C5.35 13.47 5.36 13.23 5.5 13.08C5.68 12.94 5.92 12.95 6.07 13.11C7.08 14.21 8.4 15.25 9.89 16.1C13.2 18 16.77 18.63 18.65 17.72C18.57 17.55 18.5 17.35 18.5 17.15C18.5 16.38 19.15 15.76 19.92 15.76C20.69 15.76 21.32 16.38 21.32 17.15C21.32 17.92 20.69 18.54 19.92 18.54C19.64 18.54 19.39 18.46 19.17 18.32C18.47 18.71 17.56 18.9 16.5 18.9M19.5 17.63C19.63 17.71 19.77 17.77 19.92 17.77C20.27 17.77 20.55 17.5 20.55 17.15C20.55 16.81 20.27 16.53 19.92 16.53S19.3 16.81 19.3 17.15C19.3 17.29 19.35 17.42 19.43 17.53C19.47 17.55 19.5 17.59 19.5 17.63M4.46 12C4.33 12 4.2 11.92 4.13 11.8C3.23 10.25 3.08 8.81 3.7 7.74C4.54 6.3 6.58 5.76 9.31 6.25C9.5 6.29 9.66 6.5 9.62 6.7C9.59 6.91 9.39 7.05 9.18 7C6.82 6.59 5 7 4.37 8.13C3.89 8.95 4.04 10.11 4.8 11.41C4.9 11.6 4.84 11.83 4.65 11.94C4.59 11.97 4.53 12 4.46 12M12.21 13.4C11.71 13.5 11.21 13.19 11.11 12.69C11 12.2 11.32 11.71 11.81 11.6C12.31 11.5 12.81 11.81 12.91 12.31C13 12.8 12.7 13.29 12.21 13.4Z"; -var mdiElephant = "M19.5,15.5A0.5,0.5 0 0,1 19,16A0.5,0.5 0 0,1 18.5,15.5V8.5C18.5,6.57 16.43,5 14.5,5H6A4,4 0 0,0 2,9V19H6V15H11V19H15V14.5A0.5,0.5 0 0,1 15.5,14A0.5,0.5 0 0,1 16,14.5V16A3,3 0 0,0 19,19A3,3 0 0,0 22,16V14H19.5V15.5Z"; -var mdiElevationDecline = "M21,21H3V11.25L9.45,15L13.22,12.8L21,17.29V21M3,8.94V6.75L9.45,10.5L13.22,8.3L21,12.79V15L13.22,10.5L9.45,12.67L3,8.94Z"; -var mdiElevationRise = "M3,21V17.29L10.78,12.8L14.55,15L21,11.25V21H3M21,8.94L14.55,12.67L10.78,10.5L3,15V12.79L10.78,8.3L14.55,10.5L21,6.75V8.94Z"; -var mdiElevator = "M7,2L11,6H8V10H6V6H3L7,2M17,10L13,6H16V2H18V6H21L17,10M7,12H17A2,2 0 0,1 19,14V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V14A2,2 0 0,1 7,12M7,14V20H17V14H7Z"; -var mdiElevatorDown = "M7 10L11 6H8V2H6V6H3L7 10M17 10L13 6H16V2H18V6H21L17 10M7 12H17C18.11 12 19 12.9 19 14V20C19 21.11 18.11 22 17 22H7C5.9 22 5 21.11 5 20V14C5 12.9 5.9 12 7 12M7 14V20H17V14H7Z"; -var mdiElevatorPassenger = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M8 5C8.8 5 9.5 5.7 9.5 6.5S8.8 8 8 8 6.5 7.3 6.5 6.5 7.2 5 8 5M11 14H9.5V19H6.5V14H5V11C5 9.9 5.9 9 7 9H9C10.1 9 11 9.9 11 11V14M15.9 19L13 14.2H18.8L15.9 19M13 10L16 5L19 10H13Z"; -var mdiElevatorUp = "M7 2L11 6H8V10H6V6H3L7 2M17 2L13 6H16V10H18V6H21L17 2M7 12H17C18.11 12 19 12.9 19 14V20C19 21.11 18.11 22 17 22H7C5.9 22 5 21.11 5 20V14C5 12.9 5.9 12 7 12M7 14V20H17V14H7Z"; -var mdiEllipse = "M12,4C6.5,4 2,7.58 2,12C2,16.42 6.5,20 12,20C17.5,20 22,16.42 22,12C22,7.58 17.5,4 12,4Z"; -var mdiEllipseOutline = "M12,6C16.41,6 20,8.69 20,12C20,15.31 16.41,18 12,18C7.59,18 4,15.31 4,12C4,8.69 7.59,6 12,6M12,4C6.5,4 2,7.58 2,12C2,16.42 6.5,20 12,20C17.5,20 22,16.42 22,12C22,7.58 17.5,4 12,4Z"; -var mdiEmail = "M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"; -var mdiEmailAlert = "M18 8L10 13L2 8V6L10 11L18 6M18 4H2C.9 4 0 4.9 0 6V18C0 19.1 .9 20 2 20H18C19.1 20 20 19.1 20 18V6C20 4.9 19.1 4 18 4M24 7H22V13H24V7M24 15H22V17H24V15Z"; -var mdiEmailAlertOutline = "M24 7H22V13H24V7M24 15H22V17H24V15M20 6C20 4.9 19.1 4 18 4H2C.9 4 0 4.9 0 6V18C0 19.1 .9 20 2 20H18C19.1 20 20 19.1 20 18V6M18 6L10 11L2 6H18M18 18H2V8L10 13L18 8V18Z"; -var mdiEmailBox = "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M6.4,6.5H17.6C18.37,6.5 19,7.12 19,7.9V16.1A1.4,1.4 0 0,1 17.6,17.5H6.4C5.63,17.5 5,16.87 5,16.1V7.9C5,7.12 5.62,6.5 6.4,6.5M6,8V10L12,14L18,10V8L12,12L6,8Z"; -var mdiEmailCheck = "M21,13.34C20.37,13.12 19.7,13 19,13A6,6 0 0,0 13,19C13,19.34 13.03,19.67 13.08,20H3A2,2 0 0,1 1,18V6C1,4.89 1.89,4 3,4H19A2,2 0 0,1 21,6V13.34M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M3,6V8L11,13L19,8V6L11,11L3,6Z"; -var mdiEmailCheckOutline = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M13 18H3V8L11 13L19 8V13H21V6C21 4.9 20.1 4 19 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H13V18M19 6L11 11L3 6H19Z"; -var mdiEmailEdit = "M21,12.13C20.85,12.14 20.71,12.19 20.61,12.3L19.61,13.3L21.66,15.3L22.66,14.3C22.88,14.09 22.88,13.74 22.66,13.53L21.42,12.3C21.32,12.19 21.18,12.14 21.04,12.13M19.04,13.88L13,19.94V22H15.06L21.12,15.93M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H11V19.11L19.24,10.89C19.71,10.4 20.36,10.13 21.04,10.13C21.38,10.13 21.72,10.19 22.04,10.32V6C22.04,4.88 21.12,4 20,4M20,8L12,13L4,8V6L12,11L20,6"; -var mdiEmailEditOutline = "M19.07 13.88L13 19.94V22H15.06L21.12 15.93M22.7 13.58L21.42 12.3C21.32 12.19 21.18 12.13 21.04 12.13C20.89 12.14 20.75 12.19 20.65 12.3L19.65 13.3L21.7 15.3L22.7 14.3C22.89 14.1 22.89 13.78 22.7 13.58M11 18H4V8L12 13L20 8V10H22V6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H11V18M20 6L12 11L4 6H20Z"; -var mdiEmailLock = "M20.5,0A2.5,2.5 0 0,1 23,2.5V3A1,1 0 0,1 24,4V8A1,1 0 0,1 23,9H18A1,1 0 0,1 17,8V4A1,1 0 0,1 18,3V2.5A2.5,2.5 0 0,1 20.5,0M12,11L4,6V8L12,13L16.18,10.39C16.69,10.77 17.32,11 18,11H22V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H15V8C15,8.36 15.06,8.7 15.18,9L12,11M20.5,1A1.5,1.5 0 0,0 19,2.5V3H22V2.5A1.5,1.5 0 0,0 20.5,1Z"; -var mdiEmailMarkAsUnread = "M18.84,7H16.22L10.5,4L4,7.41V17A2,2 0 0,1 2,15V7.17C2,6.5 2.28,6.06 2.81,5.81L10.5,2L18.05,5.81C18.5,6.09 18.78,6.5 18.84,7M7,8H20A2,2 0 0,1 22,10V19A2,2 0 0,1 20,21H7A2,2 0 0,1 5,19V10A2,2 0 0,1 7,8M20,11.67V10L13.5,13.31L7,10V11.67L13.5,15L20,11.67Z"; -var mdiEmailMinus = "M3,4C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H14.09C14.03,19.67 14,19.34 14,19A6,6 0 0,1 20,13C20.34,13 20.67,13.03 21,13.09V6C21,4.89 20.1,4 19,4H3M3,6L11,11L19,6V8L11,13L3,8V6M16,18V20H24V18H16Z"; -var mdiEmailMinusOutline = "M16 18V20H24V18H16M14 19C14 18.66 14.04 18.33 14.09 18H3V8L11 13L19 8V13.09C19.33 13.04 19.66 13 20 13S20.67 13.04 21 13.09V6C21 4.9 20.1 4 19 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H14.09C14.04 19.67 14 19.34 14 19M19 6L11 11L3 6H19Z"; -var mdiEmailMultiple = "M22,6V4L14,9L6,4V6L14,11L22,6M22,2A2,2 0 0,1 24,4V16A2,2 0 0,1 22,18H6C4.89,18 4,17.1 4,16V4C4,2.89 4.89,2 6,2H22M2,6V20H20V22H2A2,2 0 0,1 0,20V6H2Z"; -var mdiEmailMultipleOutline = "M2 6V20H20V22H2C.895 22 0 21.11 0 20V6H2M24 4C24 2.9 23.1 2 22 2H6C4.9 2 4 2.9 4 4V16C4 17.1 4.9 18 6 18H22C23.1 18 24 17.1 24 16V4M22 4L14 9L6 4H22M22 16H6V6L14 11L22 6V16Z"; -var mdiEmailNewsletter = "M12 .64L8.23 3H5V5L2.97 6.29C2.39 6.64 2 7.27 2 8V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V8C22 7.27 21.61 6.64 21.03 6.29L19 5V3H15.77M7 5H17V9.88L12 13L7 9.88M8 6V7.5H16V6M5 7.38V8.63L4 8M19 7.38L20 8L19 8.63M8 8.5V10H16V8.5Z"; -var mdiEmailOff = "M22.1 21.5L2.4 1.7L1.1 3L2.6 4.5C2.2 4.9 2 5.4 2 6V18C2 19.1 2.9 20 4 20H18.1L20.8 22.7L22.1 21.5M4 8V6L4.3 6.2L9.6 11.5L4 8M13.4 10.2L7.2 4H20C21.1 4 22 4.9 22 6V18C22 18.2 22 18.5 21.9 18.7L14.6 11.4L20 8V6L13.4 10.2Z"; -var mdiEmailOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L2.6 4.5C2.3 4.9 2 5.4 2 6V18C2 19.1 2.9 20 4 20H18.1L20.8 22.7L22.1 21.5M4 18V8L9.6 11.5L16.1 18H4M9.2 6L7.2 4H20C21.1 4 22 4.9 22 6V18C22 18.2 22 18.5 21.9 18.7L20 16.8V8L14.6 11.4L13.4 10.2L20 6H9.2Z"; -var mdiEmailOpen = "M4,8L12,13L20,8V8L12,3L4,8V8M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V8C2,7.27 2.39,6.64 2.97,6.29L12,0.64L21.03,6.29C21.61,6.64 22,7.27 22,8Z"; -var mdiEmailOpenMultiple = "M6,8L14,13L22,8V8L14,3L6,8V8M24,8V18A2,2 0 0,1 22,20H6A2,2 0 0,1 4,18V8C4,7.27 4.39,6.64 4.97,6.29L14,0.64L23.03,6.29C23.61,6.64 24,7.27 24,8M2,8V22H20V24H2A2,2 0 0,1 0,22V8H2Z"; -var mdiEmailOpenMultipleOutline = "M2 8V22H20V24H2C.895 24 0 23.11 0 22V8H2M23.03 6.29L14 .64L4.97 6.29C4.39 6.64 4 7.27 4 8V18C4 19.1 4.9 20 6 20H22C23.1 20 24 19.1 24 18V8C24 7.27 23.61 6.64 23.03 6.29M22 18H6V10L14 15L22 10V18M14 13L6 8L14 3L22 8L14 13Z"; -var mdiEmailOpenOutline = "M21.03 6.29L12 .64L2.97 6.29C2.39 6.64 2 7.27 2 8V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 7.27 21.61 6.64 21.03 6.29M20 18H4V10L12 15L20 10V18M12 13L4 8L12 3L20 8L12 13Z"; -var mdiEmailOutline = "M22 6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6M20 6L12 11L4 6H20M20 18H4V8L12 13L20 8V18Z"; -var mdiEmailPlus = "M3,4C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H14.09C14.03,19.67 14,19.34 14,19A6,6 0 0,1 20,13C20.34,13 20.67,13.03 21,13.09V6C21,4.89 20.1,4 19,4H3M3,6L11,11L19,6V8L11,13L3,8V6M19,15V18H16V20H19V23H21V20H24V18H21V15H19Z"; -var mdiEmailPlusOutline = "M19 15V18H16V20H19V23H21V20H24V18H21V15H19M14 18H3V8L11 13L19 8V13H21V6C21 4.9 20.1 4 19 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H14V18M19 6L11 11L3 6H19Z"; -var mdiEmailReceive = "M22 20H18V23L13 18.5L18 14V17H22V20M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H11.35A5.8 5.8 0 0 1 11 18A6 6 0 0 1 22 14.69V6A2 2 0 0 0 20 4M20 8L12 13L4 8V6L12 11L20 6Z"; -var mdiEmailReceiveOutline = "M22 20H18V23L13 18.5L18 14V17H22V20M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H11V18H4V8L12 13L20 8V15H22V6A2 2 0 0 0 20 4M12 11L4 6H20Z"; -var mdiEmailRemove = "M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.89 4 4 4H20C21.1 4 22 4.89 22 6V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M20 8V6L12 11L4 6V8L12 13L20 8Z"; -var mdiEmailRemoveOutline = "M13.09 18H4V8L12 13L20 8V13.09C20.72 13.21 21.39 13.46 22 13.81V6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 18.66 13.04 18.33 13.09 18M20 6L12 11L4 6H20M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19Z"; -var mdiEmailSearch = "M3,4H19A2,2 0 0,1 21,6V10.82C20,9.85 18.7,9.23 17.31,9.06L19,8V6L11,11L3,6V8L10.62,12.76C10.21,13.62 10,14.55 10,15.5C10,17.18 10.65,18.79 11.81,20H3A2,2 0 0,1 1,18V6C1,4.89 1.89,4 3,4M16.5,11C19,11 21,13 21,15.5C21,16.38 20.75,17.21 20.31,17.9L23.39,21L22,22.39L18.88,19.32C18.19,19.75 17.37,20 16.5,20C14,20 12,18 12,15.5C12,13 14,11 16.5,11M16.5,13A2.5,2.5 0 0,0 14,15.5A2.5,2.5 0 0,0 16.5,18A2.5,2.5 0 0,0 19,15.5A2.5,2.5 0 0,0 16.5,13Z"; -var mdiEmailSearchOutline = "M16.5 11C19 11 21 13 21 15.5C21 16.38 20.75 17.21 20.31 17.9L23.39 21L22 22.39L18.88 19.32C18.19 19.75 17.37 20 16.5 20C14 20 12 18 12 15.5S14 11 16.5 11M16.5 13C15.12 13 14 14.12 14 15.5S15.12 18 16.5 18 19 16.88 19 15.5 17.88 13 16.5 13M10.5 18H3V8L10.62 12.76C11.65 10.54 13.9 9 16.5 9C16.77 9 17.04 9 17.31 9.06L19 8V9.5C19.75 9.81 20.42 10.27 21 10.82V6C21 4.9 20.1 4 19 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H11.82C11.27 19.42 10.82 18.75 10.5 18M19 6L11 11L3 6H19Z"; -var mdiEmailSend = "M13 17H17V14L22 18.5L17 23V20H13V17M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H11.35A5.8 5.8 0 0 1 11 18A6 6 0 0 1 22 14.69V6A2 2 0 0 0 20 4M20 8L12 13L4 8V6L12 11L20 6Z"; -var mdiEmailSendOutline = "M13 17H17V14L22 18.5L17 23V20H13V17M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H11V18H4V8L12 13L20 8V14H22V6A2 2 0 0 0 20 4M12 11L4 6H20Z"; -var mdiEmailSync = "M3 4C1.89 4 1 4.89 1 6V18C1 19.11 1.9 20 3 20H13.5A6.5 6.5 0 0 1 13 17.5A6.5 6.5 0 0 1 19.5 11A6.5 6.5 0 0 1 21 11.18V6C21 4.89 20.1 4 19 4H3M3 6L11 11L19 6V8L11 13L3 8V6M19 12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5V12M15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29Z"; -var mdiEmailSyncOutline = "M3 4C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H13.5A6.5 6.5 0 0 1 13 18H3V8L11 13L19 8V11A6.5 6.5 0 0 1 19.5 11A6.5 6.5 0 0 1 21 11.18V6C21 4.9 20.1 4 19 4H3M3 6H19L11 11L3 6M19 12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5V12M15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29Z"; -var mdiEmailVariant = "M12,13L2,6.76V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V6.75L12,13M22,18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V9.11L4,10.36V18H20V10.36L22,9.11V18Z"; -var mdiEmber = "M22,14.22C22,14.22 17.61,17.35 14.72,17.39C11.84,17.44 12.13,15.56 12.13,15.56C12.13,15.56 22.71,11.94 19.83,4.79C18.53,2.95 17,2.37 14.89,2.42C12.76,2.46 10.17,3.76 8.46,7.6C7.64,9.44 7.41,11.18 7.24,12.5V12.5C7.24,12.5 5.32,12.88 4.32,12.04C3.32,11.2 2.77,12.04 2.77,12.04C2.77,12.04 1.03,14.2 2.75,14.87C4.46,15.54 7.12,15.82 7.12,15.82V15.82C7.36,17 8.08,19 10.17,20.6C13.3,23 19.32,20.4 19.32,20.4M11.63,12.33C11.76,7.36 15,5.18 16.15,6.27C17.27,7.36 16.86,9.7 14.72,11.16C12.59,12.63 11.63,12.33 11.63,12.33Z"; -var mdiEmby = "M11,2L6,7L7,8L2,13L7,18L8,17L13,22L18,17L17,16L22,11L17,6L16,7L11,2M10,8.5L16,12L10,15.5V8.5Z"; -var mdiEmoticon = "M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.5,8A1.5,1.5 0 0,1 17,9.5A1.5,1.5 0 0,1 15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8M8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8M12,17.5C9.67,17.5 7.69,16.04 6.89,14H17.11C16.3,16.04 14.33,17.5 12,17.5Z"; -var mdiEmoticonAngry = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5V8L10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5M14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5L17,8V9.5Z"; -var mdiEmoticonAngryOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5V8L10,9.5M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5L17,8V9.5"; -var mdiEmoticonConfused = "M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2M8.5 8A1.5 1.5 0 1 1 7 9.5A1.54 1.54 0 0 1 8.5 8M17 16H13A4 4 0 0 0 9.53 18L7.8 17A6 6 0 0 1 13 14H17M15.5 11A1.5 1.5 0 1 1 17 9.5A1.54 1.54 0 0 1 15.5 11Z"; -var mdiEmoticonConfusedOutline = "M20 12A8 8 0 1 0 12 20A8 8 0 0 0 20 12M22 12A10 10 0 1 1 12 2A10 10 0 0 1 22 12M15.5 8A1.5 1.5 0 1 1 14 9.5A1.54 1.54 0 0 1 15.5 8M10 9.5A1.5 1.5 0 1 1 8.5 8A1.54 1.54 0 0 1 10 9.5M17 15H13A4 4 0 0 0 9.53 17L7.8 16A6 6 0 0 1 13 13H17Z"; -var mdiEmoticonCool = "M3.22,7.22C4.91,4.11 8.21,2 12,2C15.79,2 19.09,4.11 20.78,7.22L20,8H4L3.22,7.22M21.4,8.6C21.78,9.67 22,10.81 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,10.81 2.22,9.67 2.6,8.6L4,10H5C5,11.38 7.12,12.5 8.5,12.5C9.88,12.5 11.25,11.38 11.25,10H12.75C12.75,11.38 14.12,12.5 15.5,12.5C16.88,12.5 19,11.38 19,10H20L21.4,8.6M16.19,15.42L14.77,14C14.32,14.72 13.25,15.23 12,15.23C10.75,15.23 9.68,14.72 9.23,14L7.81,15.42C8.71,16.5 10.25,17.23 12,17.23C13.75,17.23 15.29,16.5 16.19,15.42Z"; -var mdiEmoticonCoolOutline = "M19,10C19,11.38 16.88,12.5 15.5,12.5C14.12,12.5 12.75,11.38 12.75,10H11.25C11.25,11.38 9.88,12.5 8.5,12.5C7.12,12.5 5,11.38 5,10H4.25C4.09,10.64 4,11.31 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,11.31 19.91,10.64 19.75,10H19M12,4C9.04,4 6.45,5.61 5.07,8H18.93C17.55,5.61 14.96,4 12,4M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z"; -var mdiEmoticonCry = "M5.14,17.57C5.14,16.5 6.32,14.5 7.57,12.81C8.82,14.5 10,16.5 10,17.57A2.43,2.43 0 0,1 7.57,20C6.23,20 5.14,18.91 5.14,17.57M22,12A10,10 0 0,1 12,22C11.08,22 10.18,21.86 9.33,21.63C10.9,20.95 12,19.39 12,17.57C12,17.12 11.89,16.6 11.69,16C11.79,16 11.89,16 12,16C13.25,16 14.32,16.5 14.77,17.23L16.19,15.81C15.29,14.72 13.75,14 12,14C11.59,14 11.19,14.04 10.81,14.12C10.38,13.36 9.85,12.53 9.19,11.63L8.71,11C9.42,10.87 10,10.23 10,9.5C10,8.7 9.3,8 8.5,8C7.7,8 7,8.7 7,9.5C7,9.69 7.04,9.87 7.11,10.04L5.96,11.63C4.4,13.75 3.5,15.5 3.23,16.81C2.45,15.38 2,13.74 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M17,9.5C17,8.7 16.3,8 15.5,8C14.7,8 14,8.7 14,9.5C14,10.3 14.7,11 15.5,11C16.3,11 17,10.3 17,9.5Z"; -var mdiEmoticonCryOutline = "M7.57,20C6.23,20 5.14,18.91 5.14,17.57C5.14,16.5 6.32,14.5 7.57,12.81C8.82,14.5 10,16.5 10,17.57A2.43,2.43 0 0,1 7.57,20M12,2A10,10 0 0,0 2,12C2,13.75 2.45,15.38 3.24,16.81C3.4,16 3.81,15.07 4.31,14.17C4.11,13.5 4,12.75 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20C11.76,20 11.53,20 11.29,19.96C10.82,20.7 10.14,21.28 9.34,21.63C10.19,21.87 11.08,22 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,14C11.59,14 11.19,14.04 10.81,14.12C11.16,14.75 11.47,15.4 11.69,16C11.79,16 11.89,16 12,16C13.25,16 14.32,16.5 14.77,17.23L16.19,15.81C15.29,14.72 13.75,14 12,14M15.5,8C14.7,8 14,8.7 14,9.5C14,10.3 14.7,11 15.5,11C16.3,11 17,10.3 17,9.5C17,8.7 16.3,8 15.5,8M10,9.5C10,8.7 9.3,8 8.5,8C7.7,8 7,8.7 7,9.5C7,10.3 7.7,11 8.5,11C9.3,11 10,10.3 10,9.5"; -var mdiEmoticonDead = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M6.76,8.82L7.82,7.76L8.88,8.82L9.94,7.76L11,8.82L9.94,9.88L11,10.94L9.94,12L8.88,10.94L7.82,12L6.76,10.94L7.82,9.88L6.76,8.82M6.89,17.5C7.69,15.46 9.67,14 12,14C14.33,14 16.31,15.46 17.11,17.5H6.89M17.24,10.94L16.18,12L15.12,10.94L14.06,12L13,10.94L14.06,9.88L13,8.82L14.06,7.76L15.12,8.82L16.18,7.76L17.24,8.82L16.18,9.88L17.24,10.94Z"; -var mdiEmoticonDeadOutline = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16.18,7.76L15.12,8.82L14.06,7.76L13,8.82L14.06,9.88L13,10.94L14.06,12L15.12,10.94L16.18,12L17.24,10.94L16.18,9.88L17.24,8.82L16.18,7.76M7.82,12L8.88,10.94L9.94,12L11,10.94L9.94,9.88L11,8.82L9.94,7.76L8.88,8.82L7.82,7.76L6.76,8.82L7.82,9.88L6.76,10.94L7.82,12M12,14C9.67,14 7.69,15.46 6.89,17.5H17.11C16.31,15.46 14.33,14 12,14Z"; -var mdiEmoticonDevil = "M22.5,2.09C21.6,3 20.13,3.73 18.31,4.25C16.59,2.84 14.39,2 12,2C9.61,2 7.41,2.84 5.69,4.25C3.87,3.73 2.4,3 1.5,2.09C1.53,3.72 2.35,5.21 3.72,6.4C2.63,8 2,9.92 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,9.92 21.37,8 20.28,6.4C21.65,5.21 22.47,3.72 22.5,2.09M7.5,8.5L10.5,10C10.5,10.8 9.8,11.5 9,11.5C8.2,11.5 7.5,10.8 7.5,10V8.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23M16.5,10C16.5,10.8 15.8,11.5 15,11.5C14.2,11.5 13.5,10.8 13.5,10L16.5,8.5V10Z"; -var mdiEmoticonDevilOutline = "M1.5,2.09C2.4,3 3.87,3.73 5.69,4.25C7.41,2.84 9.61,2 12,2C14.39,2 16.59,2.84 18.31,4.25C20.13,3.73 21.6,3 22.5,2.09C22.47,3.72 21.65,5.21 20.28,6.4C21.37,8 22,9.92 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,9.92 2.63,8 3.72,6.4C2.35,5.21 1.53,3.72 1.5,2.09M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M10.5,10C10.5,10.8 9.8,11.5 9,11.5C8.2,11.5 7.5,10.8 7.5,10V8.5L10.5,10M16.5,10C16.5,10.8 15.8,11.5 15,11.5C14.2,11.5 13.5,10.8 13.5,10L16.5,8.5V10M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z"; -var mdiEmoticonExcited = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M8.88,7.82L11,9.94L9.94,11L8.88,9.94L7.82,11L6.76,9.94L8.88,7.82M12,17.5C9.67,17.5 7.69,16.04 6.89,14H17.11C16.31,16.04 14.33,17.5 12,17.5M16.18,11L15.12,9.94L14.06,11L13,9.94L15.12,7.82L17.24,9.94L16.18,11Z"; -var mdiEmoticonExcitedOutline = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M13,9.94L14.06,11L15.12,9.94L16.18,11L17.24,9.94L15.12,7.82L13,9.94M8.88,9.94L9.94,11L11,9.94L8.88,7.82L6.76,9.94L7.82,11L8.88,9.94M12,17.5C14.33,17.5 16.31,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5Z"; -var mdiEmoticonFrown = "M12 2C6.47 2 2 6.5 2 12S6.47 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M15.5 8C16.33 8 17 8.67 17 9.5S16.33 11 15.5 11 14 10.33 14 9.5 14.67 8 15.5 8M8.5 8C9.33 8 10 8.67 10 9.5S9.33 11 8.5 11 7 10.33 7 9.5 7.67 8 8.5 8M6.89 17C7.69 14.96 9.67 13.5 12 13.5S16.31 14.96 17.11 17H6.89Z"; -var mdiEmoticonFrownOutline = "M12 2C6.47 2 2 6.5 2 12S6.47 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12 20C7.58 20 4 16.42 4 12S7.58 4 12 4 20 7.58 20 12 16.42 20 12 20M15.5 11C16.33 11 17 10.33 17 9.5S16.33 8 15.5 8 14 8.67 14 9.5 14.67 11 15.5 11M8.5 11C9.33 11 10 10.33 10 9.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11M12 13.5C9.67 13.5 7.69 14.96 6.89 17H17.11C16.31 14.96 14.33 13.5 12 13.5Z"; -var mdiEmoticonHappy = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23M15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11Z"; -var mdiEmoticonHappyOutline = "M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z"; -var mdiEmoticonKiss = "M18.9,18.94L15.94,16C15.76,15.79 15.55,15.5 15.55,15.05A1.3,1.3 0 0,1 16.85,13.75C17.19,13.75 17.53,13.89 17.77,14.15L18.91,15.26L20.03,14.13C20.27,13.89 20.61,13.75 20.95,13.75A1.3,1.3 0 0,1 22.25,15.05C22.25,15.39 22.11,15.73 21.87,15.97L18.9,18.94M17.46,19.62C15.72,21.1 13.47,22 11,22A10,10 0 0,1 1,12A10,10 0 0,1 11,2A10,10 0 0,1 21,12C21,12.09 21,12.17 20.95,12.25C20.21,12.25 19.5,12.55 18.97,13.07L18.9,13.14L18.84,13.09C18.32,12.55 17.6,12.25 16.85,12.25A2.8,2.8 0 0,0 14.05,15.05C14.05,15.78 14.34,16.5 14.87,17.03L17.46,19.62M13,9.5C13,10.3 13.7,11 14.5,11C15.3,11 16,10.3 16,9.5C16,8.7 15.3,8 14.5,8C13.7,8 13,8.7 13,9.5M9,9.5C9,8.7 8.3,8 7.5,8C6.7,8 6,8.7 6,9.5C6,10.3 6.7,11 7.5,11C8.3,11 9,10.3 9,9.5M12.94,15.18L14,14.12L11.88,12L10.82,13.06L11.88,14.12L10.82,15.18L11.88,16.24L10.82,17.3L11.88,18.36L14,16.24L12.94,15.18Z"; -var mdiEmoticonKissOutline = "M9,9.5C9,10.3 8.3,11 7.5,11C6.7,11 6,10.3 6,9.5C6,8.7 6.7,8 7.5,8C8.3,8 9,8.7 9,9.5M16,9.5C16,10.3 15.3,11 14.5,11C13.7,11 13,10.3 13,9.5C13,8.7 13.7,8 14.5,8C15.3,8 16,8.7 16,9.5M14,14.12L11.88,12L10.82,13.06L11.88,14.12L10.82,15.18L11.88,16.24L10.82,17.3L11.88,18.36L14,16.24L12.94,15.18L14,14.12M16.85,13A2.05,2.05 0 0,0 14.8,15.05C14.8,15.62 15.03,16.12 15.4,16.5L18.9,20L22.4,16.5C22.77,16.13 23,15.61 23,15.05A2.05,2.05 0 0,0 20.95,13C20.4,13 19.87,13.23 19.5,13.6L18.9,14.2L18.3,13.61C17.93,13.23 17.4,13 16.85,13M15,18.92C13.82,19.6 12.46,20 11,20A8,8 0 0,1 3,12A8,8 0 0,1 11,4C15.26,4 18.73,7.33 19,11.5C19.58,11.19 20.26,11 20.95,11C20.45,5.95 16.18,2 11,2A10,10 0 0,0 1,12A10,10 0 0,0 11,22C13,22 14.88,21.4 16.45,20.38L15,18.92Z"; -var mdiEmoticonLol = "M15.07 8.93V4.93A4.06 4.06 0 0 1 15.73 2.72A10 10 0 0 0 2.73 15.72A4.06 4.06 0 0 1 4.94 15.06H8.94V19.06A4.06 4.06 0 0 1 8.28 21.27A10 10 0 0 0 21.28 8.27A4.06 4.06 0 0 1 19.07 8.93M11 6H12.5V7.5H14V9H11M7.5 14V12.5H6V11H9V14M15.89 15.9A5.5 5.5 0 0 1 9.8 17L17 9.8A5.5 5.5 0 0 1 15.89 15.89M4.89 21.08A2 2 0 0 1 2.89 19.08A2 2 0 0 1 4.89 17.08H6.89V19.08A2 2 0 0 1 4.93 21.07M19.07 2.93A2 2 0 0 1 21.07 4.93A2 2 0 0 1 19.07 6.93H17.07V4.93A2 2 0 0 1 19.07 2.93Z"; -var mdiEmoticonLolOutline = "M6 11V12.5H7.5V14H9V11M12.5 6H11V9H14V7.5H12.5M9.8 17A5.5 5.5 0 0 0 17 9.8M6.34 6.34A8 8 0 0 1 15.08 4.62A4.11 4.11 0 0 1 15.73 2.72A10 10 0 0 0 2.73 15.72A4.11 4.11 0 0 1 4.63 15.07A8 8 0 0 1 6.34 6.34M17.66 17.66A8 8 0 0 1 8.92 19.38A4.11 4.11 0 0 1 8.27 21.28A10 10 0 0 0 21.27 8.28A4.11 4.11 0 0 1 19.37 8.93A8 8 0 0 1 17.66 17.66M6 11V12.5H7.5V14H9V11M9.8 17A5.5 5.5 0 0 0 17 9.8M12.5 6H11V9H14V7.5H12.5M6 11V12.5H7.5V14H9V11M12.5 6H11V9H14V7.5H12.5M9.8 17A5.5 5.5 0 0 0 17 9.8M4.93 21A2 2 0 0 1 2.93 19A2 2 0 0 1 4.93 17H6.93V19A2 2 0 0 1 4.93 21.07M19.07 2.93A2 2 0 0 1 21.07 4.93A2 2 0 0 1 19.07 6.93H17.07V4.93A2 2 0 0 1 19.07 2.93Z"; -var mdiEmoticonNeutral = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11A1.5,1.5 0 0,1 7,9.5M16,16H8V14H16V16M15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8A1.5,1.5 0 0,1 17,9.5A1.5,1.5 0 0,1 15.5,11Z"; -var mdiEmoticonNeutralOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11M17,9.5A1.5,1.5 0 0,1 15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8A1.5,1.5 0 0,1 17,9.5M16,14V16H8V14H16Z"; -var mdiEmoticonOutline = "M12,17.5C14.33,17.5 16.3,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5M8.5,11A1.5,1.5 0 0,0 10,9.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 7,9.5A1.5,1.5 0 0,0 8.5,11M15.5,11A1.5,1.5 0 0,0 17,9.5A1.5,1.5 0 0,0 15.5,8A1.5,1.5 0 0,0 14,9.5A1.5,1.5 0 0,0 15.5,11M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiEmoticonPoop = "M11.36,2C11.15,2 10.87,2.12 10.57,2.32C10,2.7 8.85,3.9 8.4,5.1C8.06,6 8.05,6.82 8.19,7.43C7.63,7.53 7.22,7.71 7.06,7.78C6.55,8 5.47,8.96 5.37,10.45C5.34,10.97 5.41,11.5 5.57,12C4.91,12.19 4.53,12.43 4.5,12.44C4.18,12.56 3.65,12.93 3.5,13.13C3.15,13.53 2.92,14 2.79,14.5C2.5,15.59 2.6,16.83 3.13,17.83C3.42,18.39 3.82,19 4.26,19.43C5.7,20.91 8.18,21.47 10.14,21.79C12.53,22.19 15.03,22.05 17.26,21.13C20.61,19.74 21.5,17.5 21.64,16.89C21.93,15.5 21.57,14.19 21.42,13.87C21.2,13.41 20.84,12.94 20.25,12.64C19.85,12.39 19.5,12.26 19.24,12.2C19.5,11.25 19.13,10.5 18.62,9.94C17.85,9.12 17.06,9 17.06,9V9C17.32,8.5 17.42,7.9 17.28,7.32C17.12,6.61 16.73,6.16 16.22,5.86C15.7,5.55 15.06,5.4 14.4,5.28C14.08,5.22 12.75,5.03 12.2,4.27C11.75,3.65 11.74,2.53 11.62,2.2C11.57,2.07 11.5,2 11.36,2M16,9.61C16.07,9.61 16.13,9.62 16.19,9.62C17.62,9.78 18.64,11.16 18.47,12.69C18.3,14.22 17,15.34 15.57,15.18V15.18C14.14,15 13.12,13.65 13.29,12.11C13.45,10.66 14.64,9.56 16,9.61M8.62,9.61C9.95,9.65 11.06,10.78 11.16,12.21C11.28,13.75 10.21,15.08 8.78,15.19H8.77C7.34,15.3 6.08,14.14 5.96,12.6V12.6C5.85,11.06 6.92,9.73 8.35,9.62V9.62C8.44,9.61 8.53,9.61 8.62,9.61M8.64,11.31C8.6,11.31 8.57,11.31 8.53,11.32C7.97,11.39 7.57,11.9 7.64,12.45C7.7,13 8.21,13.39 8.77,13.32C9.33,13.25 9.73,12.74 9.67,12.19C9.61,11.67 9.15,11.3 8.64,11.31M15.94,11.33C15.42,11.35 15,11.75 14.96,12.28C14.92,12.83 15.35,13.31 15.91,13.34C16.5,13.38 16.96,12.95 17,12.4C17.04,11.84 16.61,11.36 16.05,11.33C16,11.33 16,11.33 15.94,11.33M8.71,16.15C9,16.14 9.26,16.23 9.5,16.28C10.68,16.5 11.7,16.53 12.19,16.53C12.68,16.53 13.69,16.5 14.86,16.28C15.27,16.2 15.74,16.03 16.11,16.28C16.59,16.6 16.24,17.75 15.5,18.53C15.04,19 13.97,19.91 12.19,19.91C10.41,19.91 9.33,19 8.88,18.53C8.14,17.75 7.79,16.6 8.26,16.28C8.4,16.19 8.55,16.15 8.71,16.15Z"; -var mdiEmoticonPoopOutline = "M21.42,13.87C21.2,13.41 20.84,12.94 20.25,12.64C19.85,12.39 19.5,12.26 19.24,12.2C19.5,11.25 19.13,10.5 18.62,9.94C17.85,9.12 17.06,9 17.06,9C17.32,8.5 17.42,7.9 17.28,7.32C17.12,6.61 16.73,6.16 16.22,5.86C15.7,5.55 15.06,5.4 14.4,5.28C14.08,5.22 12.75,5.03 12.2,4.27C11.75,3.65 11.74,2.53 11.62,2.2C11.57,2.07 11.5,2 11.36,2C11.15,2 10.87,2.12 10.57,2.32C10,2.7 8.85,3.9 8.4,5.1C8.06,6 8.05,6.82 8.19,7.43C7.63,7.53 7.22,7.71 7.06,7.78C6.55,8 5.47,8.96 5.37,10.45C5.34,10.89 5.41,11.34 5.5,11.78C5.5,11.86 5.5,11.94 5.5,12.03C4.88,12.22 4.53,12.43 4.5,12.44C4.18,12.56 3.65,12.93 3.5,13.13C3.15,13.53 2.92,14 2.79,14.5C2.5,15.59 2.6,16.83 3.13,17.83C3.42,18.39 3.82,19 4.26,19.43C5.7,20.91 8.18,21.47 10.14,21.79C10.96,21.93 11.8,22 12.63,22C14.22,22 15.8,21.73 17.26,21.13C20.61,19.74 21.5,17.5 21.64,16.89C21.93,15.5 21.57,14.19 21.42,13.87M16.05,11.33C16.61,11.36 17.04,11.84 17,12.4C16.96,12.95 16.5,13.38 15.91,13.34C15.35,13.31 14.92,12.83 14.96,12.28C15,11.75 15.42,11.35 15.94,11.33C16,11.33 16,11.33 16.05,11.33M20.18,16.55C20.17,16.57 19.7,18.5 16.69,19.74C15.47,20.25 14.1,20.5 12.63,20.5C11.9,20.5 11.14,20.44 10.38,20.31C8.76,20.05 6.5,19.56 5.31,18.36C5.04,18.09 4.72,17.63 4.46,17.13C4.12,16.5 4.04,15.65 4.24,14.88C4.32,14.58 4.45,14.32 4.63,14.12L4.65,14.09C4.74,14 4.95,13.88 5.03,13.84V13.84L5.14,13.8L5.26,13.74C5.32,13.7 5.46,13.63 5.67,13.55C6.13,14.81 7.28,15.7 8.59,15.7C8.67,15.7 8.74,15.69 8.82,15.69C9.65,15.63 10.41,15.22 10.94,14.55C11.47,13.89 11.73,13.04 11.66,12.17C11.54,10.5 10.22,9.16 8.64,9.11H8.62C8.5,9.11 8.4,9.11 8.31,9.12C8,9.15 7.73,9.23 7.46,9.34C7.55,9.24 7.63,9.17 7.66,9.15C7.79,9.1 8.07,9 8.45,8.91L10,8.63L9.65,7.09C9.61,6.9 9.53,6.35 9.81,5.63C9.96,5.2 10.27,4.76 10.58,4.38C10.68,4.65 10.81,4.91 11,5.15C11.77,6.23 13.12,6.58 14.06,6.74L14.13,6.76C14.6,6.84 15.13,6.95 15.46,7.15C15.67,7.28 15.76,7.41 15.82,7.67C15.87,7.87 15.84,8.1 15.73,8.31L15.21,9.2C13.95,9.5 12.95,10.64 12.79,12.06C12.59,13.87 13.78,15.46 15.5,15.68C15.62,15.69 15.74,15.7 15.85,15.7C16.56,15.7 17.25,15.44 17.82,14.95C18.23,14.59 18.54,14.13 18.74,13.62L18.9,13.66C19,13.68 19.17,13.74 19.45,13.91L19.5,13.95L19.57,14C19.78,14.08 19.94,14.26 20.05,14.5C20.13,14.67 20.38,15.6 20.18,16.55M7.64,12.45C7.57,11.9 7.97,11.39 8.53,11.32C8.57,11.31 8.6,11.31 8.64,11.31C9.15,11.3 9.61,11.67 9.67,12.19C9.73,12.74 9.33,13.25 8.77,13.32C8.21,13.39 7.7,13 7.64,12.45M8.71,16.15C9,16.14 9.26,16.23 9.5,16.28C10.68,16.5 11.7,16.53 12.19,16.53C12.68,16.53 13.69,16.5 14.86,16.28C15.27,16.2 15.74,16.03 16.11,16.28C16.59,16.6 16.24,17.75 15.5,18.53C15.04,19 13.97,19.91 12.19,19.91C10.41,19.91 9.33,19 8.88,18.53C8.14,17.75 7.79,16.6 8.26,16.28C8.4,16.19 8.55,16.15 8.71,16.15Z"; -var mdiEmoticonSad = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5M14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23M15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11Z"; -var mdiEmoticonSadOutline = "M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14Z"; -var mdiEmoticonSick = "M21 9C19.9 9 19 8.1 19 7S21 3 21 3 23 5.9 23 7 22.1 9 21 9M17.5 7C17.5 6.27 17.91 5.29 18.42 4.34C16.68 2.88 14.44 2 12 2C6.47 2 2 6.5 2 12S6.47 22 12 22C17.5 22 22 17.5 22 12C22 11.45 21.94 10.91 21.86 10.38C21.58 10.45 21.3 10.5 21 10.5C19.07 10.5 17.5 8.93 17.5 7M15.62 7.38L16.68 8.44L15.62 9.5L16.68 10.56L15.62 11.62L13.5 9.5L15.62 7.38M7.32 8.44L8.38 7.38L10.5 9.5L8.38 11.62L7.32 10.56L8.38 9.5L7.32 8.44M15.44 17C14.75 15.81 13.47 15 12 15S9.25 15.81 8.56 17H6.88C7.18 16.24 7.64 15.57 8.22 15L5.24 13.3C4.79 13.56 4.23 13.58 3.75 13.3C3.03 12.89 2.79 11.97 3.2 11.25S4.53 10.29 5.25 10.7C5.73 11 6 11.5 6 12L9.57 14.06C10.3 13.7 11.12 13.5 12 13.5C14.33 13.5 16.32 14.95 17.12 17H15.44Z"; -var mdiEmoticonSickOutline = "M7.32 10.56L8.38 9.5L7.32 8.44L8.38 7.38L10.5 9.5L8.38 11.62L7.32 10.56M4.5 9C4.53 9 4.55 9 4.58 9C5.77 6.07 8.64 4 12 4C14.19 4 16.16 4.88 17.61 6.3C17.76 5.7 18.06 5 18.42 4.34C16.68 2.88 14.44 2 12 2C7.11 2 3.05 5.5 2.18 10.14C2.74 9.44 3.59 9 4.5 9M21 10.5C20.58 10.5 20.18 10.41 19.81 10.28C19.93 10.83 20 11.41 20 12C20 16.42 16.42 20 12 20C8.64 20 5.77 17.93 4.58 15C4.55 15 4.53 15 4.5 15C4 15 3.46 14.86 3 14.6C2.68 14.42 2.41 14.18 2.18 13.9C3.07 18.5 7.11 22 12 22C17.5 22 22 17.5 22 12C22 11.45 21.94 10.91 21.86 10.38C21.58 10.45 21.3 10.5 21 10.5M21 3C21 3 19 5.9 19 7S19.9 9 21 9 23 8.1 23 7 21 3 21 3M15.62 7.38L13.5 9.5L15.62 11.62L16.68 10.56L15.62 9.5L16.68 8.44L15.62 7.38M8.56 17C9.25 15.81 10.53 15 12 15S14.75 15.81 15.44 17H17.12C16.32 14.95 14.33 13.5 12 13.5C11.13 13.5 10.3 13.7 9.57 14.07L6 12C6 11.5 5.73 11 5.25 10.71C4.53 10.3 3.62 10.54 3.2 11.26C2.79 12 3.03 12.89 3.75 13.31C4.23 13.59 4.8 13.56 5.24 13.31L8.21 15.03C7.64 15.56 7.18 16.24 6.88 17H8.56Z"; -var mdiEmoticonTongue = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7.27,11C7.1,10.71 7,10.36 7,10C7,8.89 7.89,8 9,8A2,2 0 0,1 11,10C11,10.36 10.9,10.71 10.73,11C10.39,10.4 9.74,10 9,10C8.26,10 7.61,10.4 7.27,11M16,15H15C15,17 14.1,18 13,18C11.9,18 11,17 11,15H8V13H16V15M16.73,11C16.39,10.4 15.74,10 15,10C14.26,10 13.61,10.4 13.27,11C13.1,10.71 13,10.36 13,10C13,8.89 13.89,8 15,8A2,2 0 0,1 17,10C17,10.36 16.9,10.71 16.73,11Z"; -var mdiEmoticonTongueOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M9,10C8.26,10 7.61,10.4 7.27,11C7.1,10.71 7,10.36 7,10A2,2 0 0,1 9,8C10.11,8 11,8.9 11,10C11,10.36 10.9,10.71 10.73,11C10.39,10.4 9.74,10 9,10M17,10C17,10.36 16.9,10.71 16.73,11C16.39,10.4 15.74,10 15,10C14.26,10 13.61,10.4 13.27,11C13.1,10.71 13,10.36 13,10A2,2 0 0,1 15,8C16.11,8 17,8.9 17,10M16,13V15H15C15,17 14.1,18 13,18C11.9,18 11,17 11,15H8V13H16Z"; -var mdiEmoticonWink = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23M17,10H13V9H17V10Z"; -var mdiEmoticonWinkOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23M17,10H13V9H17V10Z"; -var mdiEngine = "M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z"; -var mdiEngineOff = "M3.78,2.5L21.5,20.22L20.23,21.5L18,19.27V20H10L8,18H5V15H3V18H1V10H3V13H5V10L6.87,8.14L2.5,3.77L3.78,2.5M20,9V12H18V8H12V6H15V4H7.82L22.82,19H23V9H20Z"; -var mdiEngineOffOutline = "M2.5,3.77L6.87,8.14L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V19.27L21.23,22.5L22.5,21.22L3.78,2.5L2.5,3.77M16,18H11L9,16H7V11L8,10H8.73L16,17.27V18M23,9V19H22.82L16,12.18V10H13.82L7.82,4H15V6H12V8H18V12H20V9H23Z"; -var mdiEngineOutline = "M8,10H16V18H11L9,16H7V11M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z"; -var mdiEpsilon = "M15.05 7.78L16.15 6.18C16.15 6.18 14.91 5 12.77 5C10.04 5 8.35 6.84 8.35 8.76C8.35 10.68 10.08 11.69 10.08 11.69C10.08 11.69 8 12.38 8 15C8 17.63 10.14 19 12.44 19C15.38 19 17 17.04 17 17.04L15.6 15.5C15.6 15.5 14.14 16.87 12.59 16.87C10.66 16.87 10.21 15.69 10.21 14.92C10.21 13.87 10.54 12.65 13.83 12.65L13.82 10.77C13.82 10.77 10.44 11.11 10.44 8.78C10.44 7.21 11.9 6.92 12.64 6.92C14.28 6.92 15.05 7.78 15.05 7.78"; -var mdiEqual = "M19,10H5V8H19V10M19,16H5V14H19V16Z"; -var mdiEqualBox = "M17,16V14H7V16H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M17,10V8H7V10H17Z"; -var mdiEqualizer = "M10,20H14V4H10V20M4,20H8V12H4V20M16,9V20H20V9H16Z"; -var mdiEqualizerOutline = "M15,21H9V3H15V21M11,19H13V5H11V19M8,21H2V11H8V21M4,19H6V13H4V19M22,21H16V8H22V21M18,19H20V10H18V19Z"; -var mdiEraser = "M16.24,3.56L21.19,8.5C21.97,9.29 21.97,10.55 21.19,11.34L12,20.53C10.44,22.09 7.91,22.09 6.34,20.53L2.81,17C2.03,16.21 2.03,14.95 2.81,14.16L13.41,3.56C14.2,2.78 15.46,2.78 16.24,3.56M4.22,15.58L7.76,19.11C8.54,19.9 9.8,19.9 10.59,19.11L14.12,15.58L9.17,10.63L4.22,15.58Z"; -var mdiEraserVariant = "M15.14,3C14.63,3 14.12,3.2 13.73,3.59L2.59,14.73C1.81,15.5 1.81,16.77 2.59,17.56L5.03,20H12.69L21.41,11.27C22.2,10.5 22.2,9.23 21.41,8.44L16.56,3.59C16.17,3.2 15.65,3 15.14,3M17,18L15,20H22V18"; -var mdiEscalator = "M20,8H18.95L6.95,20H4A2,2 0 0,1 2,18A2,2 0 0,1 4,16H5.29L7,14.29V10A1,1 0 0,1 8,9H9A1,1 0 0,1 10,10V11.29L17.29,4H20A2,2 0 0,1 22,6A2,2 0 0,1 20,8M8.5,5A1.5,1.5 0 0,1 10,6.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 7,6.5A1.5,1.5 0 0,1 8.5,5Z"; -var mdiEscalatorBox = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M14.34 6H17.05C18.16 6 19.05 6.9 19.05 8C19.05 9.11 18.16 10 17.05 10H16L10 18H7.05C5.95 18 5.05 17.11 5.05 16C5.05 14.9 5.95 14 7.05 14H8.34L14.34 6Z"; -var mdiEscalatorDown = "M20 8H18.95L6.95 20H4C2.9 20 2 19.11 2 18C2 16.9 2.9 16 4 16H5.29L7 14.29V10C7 9.45 7.45 9 8 9H9C9.55 9 10 9.45 10 10V11.29L17.29 4H20C21.11 4 22 4.89 22 6C22 7.11 21.11 8 20 8M8.5 5C9.33 5 10 5.67 10 6.5C10 7.33 9.33 8 8.5 8C7.67 8 7 7.33 7 6.5C7 5.67 7.67 5 8.5 5M14.83 17.34L20.34 11.83L22.17 13.66L16.66 19.17L18.5 21H13V15.5L14.83 17.34Z"; -var mdiEscalatorUp = "M20 8H18.95L6.95 20H4C2.9 20 2 19.11 2 18C2 16.9 2.9 16 4 16H5.29L7 14.29V10C7 9.45 7.45 9 8 9H9C9.55 9 10 9.45 10 10V11.29L17.29 4H20C21.11 4 22 4.89 22 6C22 7.11 21.11 8 20 8M8.5 5C9.33 5 10 5.67 10 6.5C10 7.33 9.33 8 8.5 8C7.67 8 7 7.33 7 6.5C7 5.67 7.67 5 8.5 5M20.17 15.66L14.66 21.17L12.83 19.34L18.34 13.83L16.5 12H22V17.5L20.17 15.66Z"; -var mdiEslint = "M7.95,9.55L11.84,7.3C11.94,7.25 12.06,7.25 12.16,7.3L16.05,9.55C16.15,9.61 16.21,9.71 16.21,9.82V14.32C16.21,14.43 16.15,14.53 16.05,14.59L12.16,16.84C12.06,16.89 11.94,16.89 11.84,16.84L7.95,14.59C7.85,14.53 7.79,14.43 7.79,14.32V9.82C7.79,9.71 7.85,9.61 7.95,9.55M22.12,11.6C22.29,11.89 22.29,12.23 22.12,12.53L17.47,20.56C17.3,20.86 17,21 16.65,21H7.35C7,21 6.7,20.85 6.53,20.56L1.88,12.53C1.71,12.24 1.71,11.87 1.88,11.58L6.53,3.5C6.7,3.22 7,3 7.35,3H16.65C17,3 17.3,3.22 17.47,3.5L22.12,11.6M18.27,15.5V8.65C18.27,8.53 18.2,8.42 18.09,8.36L12.16,4.95C12.06,4.89 11.93,4.89 11.83,4.95L5.91,8.36C5.8,8.42 5.73,8.53 5.73,8.65V15.5C5.73,15.61 5.8,15.72 5.91,15.78L11.84,19.19C11.94,19.25 12.07,19.25 12.17,19.19L18.09,15.78C18.2,15.72 18.27,15.61 18.27,15.5Z"; -var mdiEt = "M23,8.78L21.71,7.22C21.45,7.42 20.53,8 19.77,8C19.26,8 18.3,7.75 17.45,7.53C16.39,7.26 15.39,7 14.6,7C14,7 13.43,7.15 12.93,7.35C12.62,5.45 11,4 9,4C4.58,4 2,7.58 2,12C2,16.42 5.58,19 10,19C12.06,19 13.93,18.43 15.34,17.39L15,21.29L17,21.47L18,9.74C18.66,9.89 19.27,10 19.77,10C21.38,10 22.84,8.91 23,8.78M9,6A2,2 0 0,1 11,8A2,2 0 0,1 9,10H4.23C4.8,7.67 6.39,6 9,6M10,17C6.69,17 4,15.31 4,12H9C10.6,12 11.83,11.17 12.5,9.91V9.91C12.76,9.71 13.85,9 14.6,9C14.94,9 15.5,9.11 16.05,9.25L15.65,13.89C14.82,15.95 12.6,17 10,17Z"; -var mdiEthereum = "M12,1.75L5.75,12.25L12,16L18.25,12.25L12,1.75M5.75,13.5L12,22.25L18.25,13.5L12,17.25L5.75,13.5Z"; -var mdiEthernet = "M7,15H9V18H11V15H13V18H15V15H17V18H19V9H15V6H9V9H5V18H7V15M4.38,3H19.63C20.94,3 22,4.06 22,5.38V19.63A2.37,2.37 0 0,1 19.63,22H4.38C3.06,22 2,20.94 2,19.63V5.38C2,4.06 3.06,3 4.38,3Z"; -var mdiEthernetCable = "M11,3V7H13V3H11M8,4V11H16V4H14V8H10V4H8M10,12V22H14V12H10Z"; -var mdiEthernetCableOff = "M11,3H13V7H11V3M8,4H10V8H14V4H16V11H12.82L8,6.18V4M20,20.72L18.73,22L14,17.27V22H10V13.27L2,5.27L3.28,4L20,20.72Z"; -var mdiEvPlugCcs1 = "M16 15H15.59C17.63 13.78 19 11.55 19 9C19 5.47 16.39 2.57 13 2.08V.949H11V2.08C7.61 2.57 5 5.47 5 9C5 11.55 6.37 13.78 8.41 15H8C5.79 15 4 16.79 4 19S5.79 23 8 23H16C18.21 23 20 21.21 20 19S18.21 15 16 15M17.5 11C17.5 11.83 16.83 12.5 16 12.5S14.5 11.83 14.5 11 15.17 9.5 16 9.5 17.5 10.17 17.5 11M15 5C16.11 5 17 5.9 17 7S16.11 9 15 9 13 8.11 13 7 13.9 5 15 5M9 5C10.11 5 11 5.9 11 7S10.11 9 9 9 7 8.11 7 7 7.9 5 9 5M8 12.5C7.17 12.5 6.5 11.83 6.5 11S7.17 9.5 8 9.5 9.5 10.17 9.5 11 8.83 12.5 8 12.5M9 21.82V21H7V21.82C5.84 21.4 5 20.3 5 19C5 17.34 6.34 16 8 16S11 17.34 11 19C11 20.3 10.16 21.4 9 21.82M10 12C10 10.9 10.9 10 12 10S14 10.9 14 12 13.11 14 12 14 10 13.11 10 12M17 21.82V21H15V21.82C13.84 21.4 13 20.3 13 19C13 17.34 14.34 16 16 16S19 17.34 19 19C19 20.3 18.16 21.4 17 21.82M14.5 7C14.5 6.72 14.72 6.5 15 6.5S15.5 6.72 15.5 7 15.28 7.5 15 7.5 14.5 7.28 14.5 7M8.5 7C8.5 6.72 8.72 6.5 9 6.5S9.5 6.72 9.5 7 9.28 7.5 9 7.5 8.5 7.28 8.5 7M9 19C9 19.55 8.55 20 8 20S7 19.55 7 19 7.45 18 8 18 9 18.45 9 19M17 19C17 19.55 16.55 20 16 20S15 19.55 15 19 15.45 18 16 18 17 18.45 17 19M12.5 12C12.5 12.28 12.28 12.5 12 12.5S11.5 12.28 11.5 12 11.72 11.5 12 11.5 12.5 11.72 12.5 12Z"; -var mdiEvPlugCcs2 = "M14 4.5C14 4.22 14.22 4 14.5 4S15 4.22 15 4.5 14.78 5 14.5 5 14 4.78 14 4.5M20 19C20 21.21 18.21 23 16 23H8C5.79 23 4 21.21 4 19C4 16.79 5.79 15 8 15H8.13C5.67 13.64 4 11 4 8C4 5.61 5.06 3.47 6.72 2H17.28C18.94 3.47 20 5.61 20 8C20 11 18.33 13.64 15.87 15H16C18.21 15 20 16.79 20 19M16.5 12C16.5 10.9 15.61 10 14.5 10S12.5 10.9 12.5 12C12.5 13.11 13.4 14 14.5 14S16.5 13.11 16.5 12M17 6C15.9 6 15 6.9 15 8C15 9.11 15.9 10 17 10S19 9.11 19 8C19 6.9 18.11 6 17 6M13 4.5C13 5.33 13.67 6 14.5 6S16 5.33 16 4.5 15.33 3 14.5 3 13 3.67 13 4.5M12 6C10.9 6 10 6.9 10 8C10 9.11 10.9 10 12 10S14 9.11 14 8C14 6.9 13.11 6 12 6M8 4.5C8 5.33 8.67 6 9.5 6S11 5.33 11 4.5 10.33 3 9.5 3 8 3.67 8 4.5M7 10C8.11 10 9 9.11 9 8C9 6.9 8.11 6 7 6S5 6.9 5 8C5 9.11 5.9 10 7 10M9.5 14C10.61 14 11.5 13.11 11.5 12C11.5 10.9 10.61 10 9.5 10S7.5 10.9 7.5 12C7.5 13.11 8.4 14 9.5 14M11 19C11 17.34 9.66 16 8 16S5 17.34 5 19 6.34 22 8 22 11 20.66 11 19M19 19C19 17.34 17.66 16 16 16S13 17.34 13 19 14.34 22 16 22 19 20.66 19 19M17 8.5C17.28 8.5 17.5 8.28 17.5 8S17.28 7.5 17 7.5 16.5 7.72 16.5 8 16.72 8.5 17 8.5M14.5 11.5C14.22 11.5 14 11.72 14 12S14.22 12.5 14.5 12.5 15 12.28 15 12 14.78 11.5 14.5 11.5M16 18C15.45 18 15 18.45 15 19C15 19.55 15.45 20 16 20S17 19.55 17 19C17 18.45 16.55 18 16 18M12 8.5C12.28 8.5 12.5 8.28 12.5 8S12.28 7.5 12 7.5 11.5 7.72 11.5 8 11.72 8.5 12 8.5M8 18C7.45 18 7 18.45 7 19C7 19.55 7.45 20 8 20S9 19.55 9 19C9 18.45 8.55 18 8 18M7 7.5C6.72 7.5 6.5 7.72 6.5 8S6.72 8.5 7 8.5 7.5 8.28 7.5 8 7.28 7.5 7 7.5M9.5 5C9.78 5 10 4.78 10 4.5S9.78 4 9.5 4 9 4.22 9 4.5 9.22 5 9.5 5M10 12C10 11.72 9.78 11.5 9.5 11.5S9 11.72 9 12 9.22 12.5 9.5 12.5 10 12.28 10 12Z"; -var mdiEvPlugChademo = "M8 10.5C8.83 10.5 9.5 11.17 9.5 12S8.83 13.5 8 13.5 6.5 12.83 6.5 12 7.17 10.5 8 10.5M8 9C6.34 9 5 10.34 5 12S6.34 15 8 15 11 13.66 11 12 9.66 9 8 9M16 10.5C16.83 10.5 17.5 11.17 17.5 12S16.83 13.5 16 13.5C15.17 13.5 14.5 12.83 14.5 12S15.17 10.5 16 10.5M16 9C14.34 9 13 10.34 13 12S14.34 15 16 15 19 13.66 19 12 17.66 9 16 9M14.12 8.41L12.71 7L14.12 5.59L13.41 4.88L12 6.29L10.59 4.88L9.88 5.59L11.29 7L9.88 8.41L10.59 9.12L12 7.71L13.41 9.12L14.12 8.41M14.12 18.41L12.71 17L14.12 15.59L13.41 14.88L12 16.29L10.59 14.88L9.88 15.59L11.29 17L9.88 18.41L10.59 19.12L12 17.71L13.41 19.12L14.12 18.41M19.74 5.67L20.5 4.93L19.07 3.5L18.33 4.26C16.6 2.85 14.4 2 12 2S7.4 2.85 5.67 4.26L4.93 3.5L3.5 4.93L4.26 5.67C2.85 7.4 2 9.6 2 12C2 17.5 6.5 22 12 22S22 17.5 22 12C22 9.6 21.15 7.4 19.74 5.67M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20Z"; -var mdiEvPlugTesla = "M6 9C6 8.45 6.45 8 7 8S8 8.45 8 9 7.55 10 7 10 6 9.55 6 9M17 10C17.55 10 18 9.55 18 9S17.55 8 17 8 16 8.45 16 9 16.45 10 17 10M22 9.93V11C22 15.97 17.97 20 13 20H11C6.03 20 2 16 2 11V9.93C2 6.65 4.65 4 7.93 4H16.07C19.35 4 22 6.65 22 9.93M14.5 9C14.5 10.38 15.62 11.5 17 11.5S19.5 10.38 19.5 9 18.38 6.5 17 6.5 14.5 7.62 14.5 9M4.5 9C4.5 10.38 5.62 11.5 7 11.5S9.5 10.38 9.5 9 8.38 6.5 7 6.5 4.5 7.62 4.5 9M9 17C9 16.45 8.55 16 8 16S7 16.45 7 17 7.45 18 8 18 9 17.55 9 17M13.5 17C13.5 16.17 12.83 15.5 12 15.5S10.5 16.17 10.5 17 11.17 18.5 12 18.5 13.5 17.83 13.5 17M17 17C17 16.45 16.55 16 16 16S15 16.45 15 17 15.45 18 16 18 17 17.55 17 17M19.97 11.66C19.23 12.5 18.18 13 17 13C14.79 13 13 11.21 13 9C13 7.8 13.54 6.73 14.38 6H9.62C10.46 6.73 11 7.8 11 9C11 11.21 9.21 13 7 13C5.82 13 4.76 12.5 4.03 11.66C4.19 13.32 4.93 14.82 6.04 15.94C7.71 14.73 9.76 14 12 14C14.24 14 16.29 14.73 17.96 15.94C19.07 14.82 19.81 13.32 19.97 11.66Z"; -var mdiEvPlugType1 = "M12.5 15C12.5 15.28 12.28 15.5 12 15.5S11.5 15.28 11.5 15 11.72 14.5 12 14.5 12.5 14.72 12.5 15M15 10.5C15.28 10.5 15.5 10.28 15.5 10S15.28 9.5 15 9.5 14.5 9.72 14.5 10 14.72 10.5 15 10.5M9 10.5C9.28 10.5 9.5 10.28 9.5 10S9.28 9.5 9 9.5 8.5 9.72 8.5 10 8.72 10.5 9 10.5M13 18.92V20H11V18.92C7.61 18.43 5 15.53 5 12S7.61 5.57 11 5.08V4H13V5.08C16.39 5.57 19 8.5 19 12S16.39 18.43 13 18.92M13 10C13 11.11 13.9 12 15 12S17 11.11 17 10 16.11 8 15 8 13 8.9 13 10M7 10C7 11.11 7.9 12 9 12S11 11.11 11 10 10.11 8 9 8 7 8.9 7 10M9.5 14C9.5 13.17 8.83 12.5 8 12.5S6.5 13.17 6.5 14 7.17 15.5 8 15.5 9.5 14.83 9.5 14M14 15C14 13.9 13.11 13 12 13S10 13.9 10 15 10.9 17 12 17 14 16.11 14 15M16 15.5C16.83 15.5 17.5 14.83 17.5 14S16.83 12.5 16 12.5 14.5 13.17 14.5 14 15.17 15.5 16 15.5Z"; -var mdiEvPlugType2 = "M7.5 11C7.5 11.28 7.28 11.5 7 11.5S6.5 11.28 6.5 11 6.72 10.5 7 10.5 7.5 10.72 7.5 11M9.5 14.5C9.22 14.5 9 14.72 9 15S9.22 15.5 9.5 15.5 10 15.28 10 15 9.78 14.5 9.5 14.5M9.5 8C9.78 8 10 7.78 10 7.5S9.78 7 9.5 7 9 7.22 9 7.5 9.22 8 9.5 8M14.5 8C14.78 8 15 7.78 15 7.5S14.78 7 14.5 7 14 7.22 14 7.5 14.22 8 14.5 8M12 10.5C11.72 10.5 11.5 10.72 11.5 11S11.72 11.5 12 11.5 12.5 11.28 12.5 11 12.28 10.5 12 10.5M20 11C20 15.42 16.42 19 12 19S4 15.42 4 11C4 8.61 5.06 6.47 6.72 5H17.28C18.94 6.47 20 8.61 20 11M13 7.5C13 8.33 13.67 9 14.5 9S16 8.33 16 7.5 15.33 6 14.5 6 13 6.67 13 7.5M8 7.5C8 8.33 8.67 9 9.5 9S11 8.33 11 7.5 10.33 6 9.5 6 8 6.67 8 7.5M7 13C8.11 13 9 12.11 9 11C9 9.9 8.11 9 7 9S5 9.9 5 11C5 12.11 5.9 13 7 13M11.5 15C11.5 13.9 10.61 13 9.5 13S7.5 13.9 7.5 15C7.5 16.11 8.4 17 9.5 17S11.5 16.11 11.5 15M12 13C13.11 13 14 12.11 14 11C14 9.9 13.11 9 12 9S10 9.9 10 11C10 12.11 10.9 13 12 13M16.5 15C16.5 13.9 15.61 13 14.5 13S12.5 13.9 12.5 15C12.5 16.11 13.4 17 14.5 17S16.5 16.11 16.5 15M19 11C19 9.9 18.11 9 17 9S15 9.9 15 11C15 12.11 15.9 13 17 13S19 12.11 19 11M17 10.5C16.72 10.5 16.5 10.72 16.5 11S16.72 11.5 17 11.5 17.5 11.28 17.5 11 17.28 10.5 17 10.5M14.5 14.5C14.22 14.5 14 14.72 14 15S14.22 15.5 14.5 15.5 15 15.28 15 15 14.78 14.5 14.5 14.5Z"; -var mdiEvStation = "M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7.03 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14A2,2 0 0,0 15,12H14V5A2,2 0 0,0 12,3H6A2,2 0 0,0 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M8,18V13.5H6L10,6V11H12L8,18Z"; -var mdiEvernote = "M15.09,11.63C15.09,11.63 15.28,10.35 16,10.35C16.76,10.35 17.78,12.06 17.78,12.06C17.78,12.06 15.46,11.63 15.09,11.63M19,4.69C18.64,4.09 16.83,3.41 15.89,3.41C14.96,3.41 13.5,3.41 13.5,3.41C13.5,3.41 12.7,2 10.88,2C9.05,2 9.17,2.81 9.17,3.5V6.32L8.34,7.19H4.5C4.5,7.19 3.44,7.91 3.44,9.44C3.44,11 3.92,16.35 7.13,16.85C10.93,17.43 11.58,15.67 11.58,15.46C11.58,14.56 11.6,13.21 11.6,13.21C11.6,13.21 12.71,15.33 14.39,15.33C16.07,15.33 17.04,16.3 17.04,17.29C17.04,18.28 17.04,19.13 17.04,19.13C17.04,19.13 17,20.28 16,20.28C15,20.28 13.89,20.28 13.89,20.28C13.89,20.28 13.2,19.74 13.2,19C13.2,18.25 13.53,18.05 13.93,18.05C14.32,18.05 14.65,18.09 14.65,18.09V16.53C14.65,16.53 11.47,16.5 11.47,18.94C11.47,21.37 13.13,22 14.46,22C15.8,22 16.63,22 16.63,22C16.63,22 20.56,21.5 20.56,13.75C20.56,6 19.33,5.28 19,4.69M7.5,6.31H4.26L8.32,2.22V5.5L7.5,6.31Z"; -var mdiExcavator = "M18.5 18.5C19.04 18.5 19.5 18.96 19.5 19.5S19.04 20.5 18.5 20.5H6.5C5.96 20.5 5.5 20.04 5.5 19.5S5.96 18.5 6.5 18.5H18.5M18.5 17H6.5C5.13 17 4 18.13 4 19.5S5.13 22 6.5 22H18.5C19.88 22 21 20.88 21 19.5S19.88 17 18.5 17M21 11H18V7H13L10 11V16H22L21 11M11.54 11L13.5 8.5H16V11H11.54M9.76 3.41L4.76 2L2 11.83C1.66 13.11 2.41 14.44 3.7 14.8L4.86 15.12L8.15 12.29L4.27 11.21L6.15 4.46L8.94 5.24C9.5 5.53 10.71 6.34 11.47 7.37L12.5 6H12.94C11.68 4.41 9.85 3.46 9.76 3.41Z"; -var mdiExclamation = "M 11,4L 13,4L 13,15L 11,15L 11,4 Z M 13,18L 13,20L 11,20L 11,18L 13,18 Z"; -var mdiExclamationThick = "M10 3H14V14H10V3M10 21V17H14V21H10Z"; -var mdiExitRun = "M13.34,8.17C12.41,8.17 11.65,7.4 11.65,6.47A1.69,1.69 0 0,1 13.34,4.78C14.28,4.78 15.04,5.54 15.04,6.47C15.04,7.4 14.28,8.17 13.34,8.17M10.3,19.93L4.37,18.75L4.71,17.05L8.86,17.9L10.21,11.04L8.69,11.64V14.5H7V10.54L11.4,8.67L12.07,8.59C12.67,8.59 13.17,8.93 13.5,9.44L14.36,10.79C15.04,12 16.39,12.82 18,12.82V14.5C16.14,14.5 14.44,13.67 13.34,12.4L12.84,14.94L14.61,16.63V23H12.92V17.9L11.14,16.21L10.3,19.93M21,23H19V3H6V16.11L4,15.69V1H21V23M6,23H4V19.78L6,20.2V23Z"; -var mdiExitToApp = "M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z"; -var mdiExpandAll = "M18,8H8V18H6V8A2,2 0 0,1 8,6H18V8M14,2H4A2,2 0 0,0 2,4V14H4V4H14V2M22,12V20A2,2 0 0,1 20,22H12A2,2 0 0,1 10,20V12A2,2 0 0,1 12,10H20A2,2 0 0,1 22,12M20,15H17V12H15V15H12V17H15V20H17V17H20V15Z"; -var mdiExpandAllOutline = "M4,2A2,2 0 0,0 2,4V14H4V4H14V2H4M8,6A2,2 0 0,0 6,8V18H8V8H18V6H8M20,12V20H12V12H20M20,10H12A2,2 0 0,0 10,12V20A2,2 0 0,0 12,22H20A2,2 0 0,0 22,20V12A2,2 0 0,0 20,10M19,17H17V19H15V17H13V15H15V13H17V15H19V17Z"; -var mdiExpansionCard = "M2,7V8.5H3V17H4.5V7C3.7,7 2.8,7 2,7M6,7V7L6,16H7V17H14V16H22V7H6M17.5,9A2.5,2.5 0 0,1 20,11.5A2.5,2.5 0 0,1 17.5,14A2.5,2.5 0 0,1 15,11.5A2.5,2.5 0 0,1 17.5,9Z"; -var mdiExpansionCardVariant = "M2 7H4.5V17H3V8.5H2M22 7V16H14V17H7V16H6V7M10 9H8V12H10M13 9H11V12H13M20 9H15V14H20V9Z"; -var mdiExponent = "M15.38,3L17.77,8.75C17.55,9.68 17.27,10.32 17,10.7C16.67,11.18 16.44,11.25 16.19,11.25V12.75C16.94,12.75 17.74,12.35 18.24,11.56C19.87,8.94 22,3 22,3H20.38L18.69,7.05L17,3H15.38M3.42,8.59L2,10L6.79,14.79L2,19.59L3.41,21L8.21,16.21L13,21L14.41,19.59L9.62,14.79L14.41,10L13,8.59L8.21,13.38L3.41,8.59H3.42Z"; -var mdiExponentBox = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M13.76,6H15.39L16.5,8.6L17.59,6H19.24C19.24,6 17.5,10.57 16.46,12.32C16.08,12.89 15.35,13.27 14.5,13.25V11.75C14.96,11.76 15.25,11.5 15.5,11.13C15.61,11 15.68,10.8 15.74,10.64L13.76,6M6.41,9.59L9.21,12.38L12,9.59L13.41,11L10.62,13.79L13.41,16.59L12,18L9.21,15.21L6.41,18L5,16.59L7.79,13.79L5,11L6.41,9.59Z"; -var mdiExport = "M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z"; -var mdiExportVariant = "M12,1L8,5H11V14H13V5H16M18,23H6C4.89,23 4,22.1 4,21V9A2,2 0 0,1 6,7H9V9H6V21H18V9H15V7H18A2,2 0 0,1 20,9V21A2,2 0 0,1 18,23Z"; -var mdiEye = "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z"; -var mdiEyeCheck = "M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,17C12.5,17 12.97,16.93 13.42,16.79C13.15,17.5 13,18.22 13,19V19.45L12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5C17,4.5 21.27,7.61 23,12C22.75,12.64 22.44,13.26 22.08,13.85C21.18,13.31 20.12,13 19,13C18.22,13 17.5,13.15 16.79,13.42C16.93,12.97 17,12.5 17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17Z"; -var mdiEyeCheckOutline = "M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C22.75,12.65 22.44,13.26 22.08,13.85C21.5,13.5 20.86,13.25 20.18,13.12L20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12C4.83,15.36 8.24,17.5 12,17.5L13.21,17.43C13.07,17.93 13,18.46 13,19V19.46L12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5Z"; -var mdiEyeCircle = "M12,9.5A2.5,2.5 0 0,0 9.5,12A2.5,2.5 0 0,0 12,14.5A2.5,2.5 0 0,0 14.5,12A2.5,2.5 0 0,0 12,9.5M12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13M12,9.5A2.5,2.5 0 0,0 9.5,12A2.5,2.5 0 0,0 12,14.5A2.5,2.5 0 0,0 14.5,12A2.5,2.5 0 0,0 12,9.5M12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16C9.37,16 7,14.43 6,12C7.38,8.69 11.19,7.12 14.5,8.5C16.08,9.16 17.34,10.42 18,12C17,14.43 14.63,16 12,16M12,9.5A2.5,2.5 0 0,0 9.5,12A2.5,2.5 0 0,0 12,14.5A2.5,2.5 0 0,0 14.5,12A2.5,2.5 0 0,0 12,9.5M12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13Z"; -var mdiEyeCircleOutline = "M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11M12,8C14.63,8 17,9.57 18,12C16.62,15.31 12.81,16.88 9.5,15.5C7.92,14.84 6.66,13.58 6,12C7,9.57 9.37,8 12,8M12,9.5A2.5,2.5 0 0,0 9.5,12A2.5,2.5 0 0,0 12,14.5A2.5,2.5 0 0,0 14.5,12A2.5,2.5 0 0,0 12,9.5"; -var mdiEyeMinus = "M12 4.5A11.8 11.8 0 0 0 1 12A11.8 11.8 0 0 0 12 19.5H13.1A3.8 3.8 0 0 1 13 18.5A9.9 9.9 0 0 1 13.2 16.8L12 17A5 5 0 1 1 17 12A2.8 2.8 0 0 1 16.9 12.9A5.2 5.2 0 0 1 19 12.5A5.6 5.6 0 0 1 22.3 13.5A10.1 10.1 0 0 0 23 12A11.8 11.8 0 0 0 12 4.5M12 9A3 3 0 1 0 15 12A2.9 2.9 0 0 0 12 9M15 17.5V19.5H23V17.5Z"; -var mdiEyeMinusOutline = "M12 4.5A11.8 11.8 0 0 0 1 12A11.8 11.8 0 0 0 12 19.5H13.1A3.8 3.8 0 0 1 13 18.5A4.1 4.1 0 0 1 13.1 17.4H12A9.6 9.6 0 0 1 3.2 12A9.6 9.6 0 0 1 12 6.5A9.6 9.6 0 0 1 20.8 12L20.4 12.7A4.6 4.6 0 0 1 22.3 13.5A10.1 10.1 0 0 0 23 12A11.8 11.8 0 0 0 12 4.5M12 9A3 3 0 1 0 15 12A2.9 2.9 0 0 0 12 9M15 17.5V19.5H23V17.5Z"; -var mdiEyeOff = "M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z"; -var mdiEyeOffOutline = "M2,5.27L3.28,4L20,20.72L18.73,22L15.65,18.92C14.5,19.3 13.28,19.5 12,19.5C7,19.5 2.73,16.39 1,12C1.69,10.24 2.79,8.69 4.19,7.46L2,5.27M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9M12,4.5C17,4.5 21.27,7.61 23,12C22.18,14.08 20.79,15.88 19,17.19L17.58,15.76C18.94,14.82 20.06,13.54 20.82,12C19.17,8.64 15.76,6.5 12,6.5C10.91,6.5 9.84,6.68 8.84,7L7.3,5.47C8.74,4.85 10.33,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C12.69,17.5 13.37,17.43 14,17.29L11.72,15C10.29,14.85 9.15,13.71 9,12.28L5.6,8.87C4.61,9.72 3.78,10.78 3.18,12Z"; -var mdiEyeOutline = "M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z"; -var mdiEyePlus = "M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C12.36,19.5 12.72,19.5 13.08,19.45C13.03,19.13 13,18.82 13,18.5C13,17.94 13.08,17.38 13.24,16.84C12.83,16.94 12.42,17 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12C17,12.29 16.97,12.59 16.92,12.88C17.58,12.63 18.29,12.5 19,12.5C20.17,12.5 21.31,12.84 22.29,13.5C22.56,13 22.8,12.5 23,12C21.27,7.61 17,4.5 12,4.5M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M18,14.5V17.5H15V19.5H18V22.5H20V19.5H23V17.5H20V14.5H18Z"; -var mdiEyePlusOutline = "M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C12.36,19.5 12.72,19.5 13.08,19.45C13.03,19.13 13,18.82 13,18.5C13,18.14 13.04,17.78 13.1,17.42C12.74,17.46 12.37,17.5 12,17.5C8.24,17.5 4.83,15.36 3.18,12C4.83,8.64 8.24,6.5 12,6.5C15.76,6.5 19.17,8.64 20.82,12C20.7,12.24 20.56,12.45 20.43,12.68C21.09,12.84 21.72,13.11 22.29,13.5C22.56,13 22.8,12.5 23,12C21.27,7.61 17,4.5 12,4.5M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M18,14.5V17.5H15V19.5H18V22.5H20V19.5H23V17.5H20V14.5H18Z"; -var mdiEyeRemove = "M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88M12 9C10.34 9 9 10.34 9 12S10.34 15 12 15 15 13.66 15 12 13.66 9 12 9M12 17C9.24 17 7 14.76 7 12S9.24 7 12 7 17 9.24 17 12C17 12.5 16.9 13 16.77 13.43C17.46 13.16 18.21 13 19 13C20.12 13 21.17 13.32 22.07 13.85C22.43 13.27 22.74 12.65 23 12C21.27 7.61 17 4.5 12 4.5S2.73 7.61 1 12C2.73 16.39 7 19.5 12 19.5C12.35 19.5 12.69 19.5 13.03 19.45C13 19.3 13 19.15 13 19C13 18.21 13.16 17.46 13.43 16.77C13 16.9 12.5 17 12 17Z"; -var mdiEyeRemoveOutline = "M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88M12 9C10.34 9 9 10.34 9 12S10.34 15 12 15 15 13.66 15 12 13.66 9 12 9M12 17.5C8.24 17.5 4.83 15.36 3.18 12C4.83 8.64 8.24 6.5 12 6.5S19.17 8.64 20.82 12C20.63 12.39 20.41 12.77 20.17 13.13C20.85 13.26 21.5 13.5 22.07 13.85C22.43 13.27 22.74 12.65 23 12C21.27 7.61 17 4.5 12 4.5S2.73 7.61 1 12C2.73 16.39 7 19.5 12 19.5C12.35 19.5 12.69 19.5 13.03 19.45C13 19.3 13 19.15 13 19C13 18.45 13.08 17.92 13.22 17.41C12.82 17.46 12.41 17.5 12 17.5Z"; -var mdiEyeSettings = "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7.14,4.5 2.78,7.5 1,12C3.39,18.08 10.25,21.06 16.33,18.67C19.38,17.47 21.8,15.06 23,12C21.22,7.5 16.86,4.5 12,4.5M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z"; -var mdiEyeSettingsOutline = "M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C16.86,4.5 21.22,7.5 23,12C20.61,18.08 13.75,21.06 7.67,18.67C4.62,17.47 2.2,15.06 1,12C2.78,7.5 7.14,4.5 12,4.5M3.18,12C5.56,16.87 11.45,18.89 16.32,16.5C18.28,15.54 19.86,13.96 20.82,12C18.44,7.13 12.55,5.11 7.68,7.5C5.72,8.46 4.14,10.04 3.18,12M9,22H7V24H9V22M13,22H11V24H13V22M17,22H15V24H17V22Z"; -var mdiEyedropper = "M19.35,11.72L17.22,13.85L15.81,12.43L8.1,20.14L3.5,22L2,20.5L3.86,15.9L11.57,8.19L10.15,6.78L12.28,4.65L19.35,11.72M16.76,3C17.93,1.83 19.83,1.83 21,3C22.17,4.17 22.17,6.07 21,7.24L19.08,9.16L14.84,4.92L16.76,3M5.56,17.03L4.5,19.5L6.97,18.44L14.4,11L13,9.6L5.56,17.03Z"; -var mdiEyedropperMinus = "M19.35 11.72L17.22 13.85L15.81 12.43L8.1 20.14L3.5 22L2 20.5L3.86 15.9L11.57 8.19L10.15 6.78L12.28 4.65L19.35 11.72M16.76 3C17.93 1.83 19.83 1.83 21 3S22.17 6.07 21 7.24L19.08 9.16L14.84 4.92L16.76 3M5.56 17.03L4.5 19.5L6.97 18.44L14.4 11L13 9.6L5.56 17.03M9 4V6H1V4H9Z"; -var mdiEyedropperOff = "M21 7.24L19.08 9.16L14.84 4.92L16.76 3C17.93 1.83 19.83 1.83 21 3S22.17 6.07 21 7.24M10.94 8.82L12.36 10.24L13 9.6L14.4 11L13.76 11.64L15.18 13.06L15.81 12.43L17.22 13.85L19.35 11.72L12.28 4.65L10.15 6.78L11.57 8.19L10.94 8.82M19.86 20.29L18.58 21.57L12.63 15.61L8.1 20.14L3.5 22L2 20.5L3.86 15.9L8.39 11.37L1.86 4.85L3.14 3.57L19.86 20.29M11.21 14.2L9.81 12.79L5.56 17.03L4.5 19.5L6.97 18.44L11.21 14.2Z"; -var mdiEyedropperPlus = "M19.35 11.72L17.22 13.85L15.81 12.43L8.1 20.14L3.5 22L2 20.5L3.86 15.9L11.57 8.19L10.15 6.78L12.28 4.65L19.35 11.72M16.76 3C17.93 1.83 19.83 1.83 21 3S22.17 6.07 21 7.24L19.08 9.16L14.84 4.92L16.76 3M5.56 17.03L4.5 19.5L6.97 18.44L14.4 11L13 9.6L5.56 17.03M6 1V4H9V6H6V9H4V6H1V4H4V1H6Z"; -var mdiEyedropperRemove = "M19.35 11.72L17.22 13.85L15.81 12.43L8.1 20.14L3.5 22L2 20.5L3.86 15.9L11.57 8.19L10.15 6.78L12.28 4.65L19.35 11.72M16.76 3C17.93 1.83 19.83 1.83 21 3S22.17 6.07 21 7.24L19.08 9.16L14.84 4.92L16.76 3M5.56 17.03L4.5 19.5L6.97 18.44L14.4 11L13 9.6L5.56 17.03M8.54 2.88L6.41 5L8.54 7.12L7.12 8.54L5 6.41L2.88 8.54L1.46 7.12L3.59 5L1.46 2.88L2.88 1.47L5 3.59L7.12 1.47L8.54 2.88Z"; -var mdiEyedropperVariant = "M6.92,19L5,17.08L13.06,9L15,10.94M20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L13.84,6.41L11.91,4.5L10.5,5.91L11.92,7.33L3,16.25V21H7.75L16.67,12.08L18.09,13.5L19.5,12.09L17.58,10.17L20.7,7.05C21.1,6.65 21.1,6 20.71,5.63Z"; -var mdiFace = "M9,11.75A1.25,1.25 0 0,0 7.75,13A1.25,1.25 0 0,0 9,14.25A1.25,1.25 0 0,0 10.25,13A1.25,1.25 0 0,0 9,11.75M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,11.71 4,11.42 4.05,11.14C6.41,10.09 8.28,8.16 9.26,5.77C11.07,8.33 14.05,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20Z"; -var mdiFaceAgent = "M18.72,14.76C19.07,13.91 19.26,13 19.26,12C19.26,11.28 19.15,10.59 18.96,9.95C18.31,10.1 17.63,10.18 16.92,10.18C13.86,10.18 11.15,8.67 9.5,6.34C8.61,8.5 6.91,10.26 4.77,11.22C4.73,11.47 4.73,11.74 4.73,12A7.27,7.27 0 0,0 12,19.27C13.05,19.27 14.06,19.04 14.97,18.63C15.54,19.72 15.8,20.26 15.78,20.26C14.14,20.81 12.87,21.08 12,21.08C9.58,21.08 7.27,20.13 5.57,18.42C4.53,17.38 3.76,16.11 3.33,14.73H2V10.18H3.09C3.93,6.04 7.6,2.92 12,2.92C14.4,2.92 16.71,3.87 18.42,5.58C19.69,6.84 20.54,8.45 20.89,10.18H22V14.67H22V14.69L22,14.73H21.94L18.38,18L13.08,17.4V15.73H17.91L18.72,14.76M9.27,11.77C9.57,11.77 9.86,11.89 10.07,12.11C10.28,12.32 10.4,12.61 10.4,12.91C10.4,13.21 10.28,13.5 10.07,13.71C9.86,13.92 9.57,14.04 9.27,14.04C8.64,14.04 8.13,13.54 8.13,12.91C8.13,12.28 8.64,11.77 9.27,11.77M14.72,11.77C15.35,11.77 15.85,12.28 15.85,12.91C15.85,13.54 15.35,14.04 14.72,14.04C14.09,14.04 13.58,13.54 13.58,12.91A1.14,1.14 0 0,1 14.72,11.77Z"; -var mdiFaceMask = "M20.25 6C18.79 6 17.61 7.14 17.5 8.58L12.55 7.16C12.19 7.05 11.81 7.05 11.45 7.16L6.5 8.58C6.39 7.14 5.21 6 3.75 6C2.23 6 1 7.23 1 8.75V12.25C1 13.77 2.23 15 3.75 15H5.68C6.81 17.36 9.21 19 12 19S17.19 17.36 18.32 15H20.25C21.77 15 23 13.77 23 12.25V8.75C23 7.23 21.77 6 20.25 6M5 13.5H3.75C3.06 13.5 2.5 12.94 2.5 12.25V8.75C2.5 8.06 3.06 7.5 3.75 7.5S5 8.06 5 8.75V13.5M15 12L12.4 11.3C12.1 11.2 11.8 11.2 11.6 11.3L9 12V11L11.3 10.3C11.7 10.2 12.2 10.2 12.7 10.3L15 11V12M21.5 12.25C21.5 12.94 20.94 13.5 20.25 13.5H19V8.75C19 8.06 19.56 7.5 20.25 7.5S21.5 8.06 21.5 8.75V12.25Z"; -var mdiFaceMaskOutline = "M15 12L12.4 11.3C12.1 11.2 11.8 11.2 11.6 11.3L9 12V11L11.3 10.3C11.7 10.2 12.2 10.2 12.7 10.3L15 11V12M20.25 6C18.79 6 17.61 7.14 17.5 8.58L12.55 7.16C12.37 7.11 12.19 7.08 12 7.08C11.82 7.08 11.63 7.11 11.45 7.16L6.5 8.58C6.39 7.14 5.21 6 3.75 6C2.23 6 1 7.23 1 8.75V12.25C1 13.77 2.23 15 3.75 15H5.68C6.81 17.36 9.21 19 12 19S17.19 17.36 18.32 15H20.25C21.77 15 23 13.77 23 12.25V8.75C23 7.23 21.77 6 20.25 6M5 13.5H3.75C3.06 13.5 2.5 12.94 2.5 12.25V8.75C2.5 8.06 3.06 7.5 3.75 7.5S5 8.06 5 8.75V13.5M17 12C17 14.76 14.76 17 12 17S7 14.76 7 12L7 10.5L12 9.08H12L17 10.5V12M21.5 12.25C21.5 12.94 20.94 13.5 20.25 13.5H19V8.75C19 8.06 19.56 7.5 20.25 7.5S21.5 8.06 21.5 8.75V12.25Z"; -var mdiFaceOutline = "M10.25,13A1.25,1.25 0 0,1 9,14.25A1.25,1.25 0 0,1 7.75,13A1.25,1.25 0 0,1 9,11.75A1.25,1.25 0 0,1 10.25,13M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10.66,4.12C12.06,6.44 14.6,8 17.5,8C17.96,8 18.41,7.95 18.84,7.88C17.44,5.56 14.9,4 12,4C11.54,4 11.09,4.05 10.66,4.12M4.42,9.47C6.13,8.5 7.45,6.92 8.08,5.03C6.37,6 5.05,7.58 4.42,9.47M20,12C20,11.22 19.88,10.47 19.67,9.76C18.97,9.91 18.25,10 17.5,10C14.37,10 11.58,8.56 9.74,6.31C8.69,8.87 6.6,10.88 4,11.86C4,11.9 4,11.95 4,12C4,16.41 7.59,20 12,20C16.41,20 20,16.41 20,12Z"; -var mdiFaceProfile = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,8.39C13.57,9.4 15.42,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20C9,20 6.39,18.34 5,15.89L6.75,14V13A1.25,1.25 0 0,1 8,11.75A1.25,1.25 0 0,1 9.25,13V14H12M16,11.75A1.25,1.25 0 0,0 14.75,13A1.25,1.25 0 0,0 16,14.25A1.25,1.25 0 0,0 17.25,13A1.25,1.25 0 0,0 16,11.75Z"; -var mdiFaceProfileWoman = "M17.25 13C17.25 13.69 16.69 14.25 16 14.25S14.75 13.69 14.75 13 15.31 11.75 16 11.75 17.25 12.31 17.25 13M22 12C22 17.5 17.5 22 12 22H2V12C2 6.5 6.5 2 12 2S22 6.5 22 12M7 18C8.41 19.23 10 20 12 20C16.41 20 20 16.41 20 12C20 11.21 19.88 10.45 19.67 9.74C18.95 9.91 18.2 10 17.42 10C15.42 10 13.57 9.4 12 8.39C12 8.39 10.54 13.76 8.03 13C7.37 12.8 7 13.31 7 14"; -var mdiFaceRecognition = "M9,11.75A1.25,1.25 0 0,0 7.75,13A1.25,1.25 0 0,0 9,14.25A1.25,1.25 0 0,0 10.25,13A1.25,1.25 0 0,0 9,11.75M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12C3.97,11.71 3.97,11.43 4,11.14C6.38,10.1 8.27,8.17 9.26,5.77C11.13,8.42 14.17,10 17.42,10C18.18,10 18.93,9.91 19.67,9.74C20.92,14 18.5,18.43 14.26,19.67C13.5,19.89 12.76,20 12,20M0,2A2,2 0 0,1 2,0H6V2H2V6H0V2M24,22A2,2 0 0,1 22,24H18V22H22V18H24V22M2,24A2,2 0 0,1 0,22V18H2V22H6V24H2M22,0A2,2 0 0,1 24,2V6H22V2H18V0H22Z"; -var mdiFaceShimmer = "M18.41 3.41L16 4.5L18.41 5.59L19.5 8L20.6 5.59L23 4.5L20.6 3.41L19.5 1M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 10.53 21.67 9.13 21.1 7.87L19.86 10.59C19.94 11.05 20 11.5 20 12C20 16.43 16.43 20 12 20C7.57 20 4 16.43 4 12C4 11.96 4 11.91 4 11.87A10 10 0 0 0 9.74 6.31A10 10 0 0 0 17.5 10A10 10 0 0 0 18.83 9.91L17.35 6.65L12.6 4.5L16.13 2.9C14.87 2.33 13.47 2 12 2M9 11.75A1.25 1.25 0 0 0 7.75 13A1.25 1.25 0 0 0 9 14.25A1.25 1.25 0 0 0 10.25 13A1.25 1.25 0 0 0 9 11.75M15 11.75A1.25 1.25 0 0 0 13.75 13A1.25 1.25 0 0 0 15 14.25A1.25 1.25 0 0 0 16.25 13A1.25 1.25 0 0 0 15 11.75Z"; -var mdiFaceShimmerOutline = "M19.5 1L18.41 3.41L16 4.5L18.41 5.59L19.5 8L20.6 5.59L23 4.5L20.6 3.41L19.5 1M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 10.53 21.67 9.13 21.1 7.87L19.86 10.57C19.95 11.04 20 11.5 20 12C20 16.43 16.43 20 12 20C7.57 20 4 16.43 4 12C4 11.95 4 11.91 4 11.86A10 10 0 0 0 9.74 6.31C11.61 8.61 14.44 10 17.5 10C17.94 10 18.39 9.97 18.83 9.91L17.96 8C17.81 8 17.65 8 17.5 8C14.68 8 12.1 6.5 10.66 4.12C11.1 4.05 11.54 4 12 4C12.5 4 12.96 4.05 13.42 4.13L16.13 2.91C14.87 2.33 13.47 2 12 2M8.09 5A8 8 0 0 1 4.41 9.5C5.04 7.57 6.37 6 8.09 5M9 11.75A1.25 1.25 0 0 0 7.75 13A1.25 1.25 0 0 0 9 14.25A1.25 1.25 0 0 0 10.25 13A1.25 1.25 0 0 0 9 11.75M15 11.75A1.25 1.25 0 0 0 13.75 13A1.25 1.25 0 0 0 15 14.25A1.25 1.25 0 0 0 16.25 13A1.25 1.25 0 0 0 15 11.75Z"; -var mdiFaceWoman = "M13.75 13C13.75 12.31 14.31 11.75 15 11.75S16.25 12.31 16.25 13 15.69 14.25 15 14.25 13.75 13.69 13.75 13M22 12V22H2V12C2 6.5 6.5 2 12 2S22 6.5 22 12M4 12C4 16.41 7.59 20 12 20S20 16.41 20 12C20 11.21 19.88 10.45 19.67 9.74C18.95 9.91 18.2 10 17.42 10C14.05 10 11.07 8.33 9.26 5.77C8.28 8.16 6.41 10.09 4.05 11.14C4 11.42 4 11.71 4 12M9 14.25C9.69 14.25 10.25 13.69 10.25 13S9.69 11.75 9 11.75 7.75 12.31 7.75 13 8.31 14.25 9 14.25Z"; -var mdiFaceWomanOutline = "M12 2C6.5 2 2 6.5 2 12V22H22V12C22 6.5 17.5 2 12 2M12 4C14.9 4 17.44 5.56 18.84 7.88C18.41 7.95 17.96 8 17.5 8C14.6 8 12.06 6.44 10.66 4.12C11.09 4.05 11.54 4 12 4M8.08 5.03C7.45 6.92 6.13 8.5 4.42 9.47C5.05 7.58 6.37 6 8.08 5.03M4 11.86C6.6 10.88 8.69 8.87 9.74 6.31C11.58 8.56 14.37 10 17.5 10C18.25 10 18.97 9.91 19.67 9.76C19.88 10.47 20 11.22 20 12C20 16.41 16.41 20 12 20S4 16.41 4 12V11.86M4 20V18C4.57 18.75 5.25 19.43 6 20H4M20 20H18C18.75 19.43 19.43 18.75 20 18V20M13.75 13C13.75 12.31 14.31 11.75 15 11.75S16.25 12.31 16.25 13 15.69 14.25 15 14.25 13.75 13.69 13.75 13M7.75 13C7.75 12.31 8.31 11.75 9 11.75S10.25 12.31 10.25 13 9.69 14.25 9 14.25 7.75 13.69 7.75 13Z"; -var mdiFaceWomanShimmer = "M19.5 1L18.41 3.41L16 4.5L18.41 5.59L19.5 8L20.6 5.59L23 4.5L20.6 3.41L19.5 1M12 2C6.5 2 2 6.5 2 12V22H22V12C22 10.53 21.67 9.13 21.1 7.87L19.86 10.59C19.94 11.05 20 11.5 20 12C20 16.43 16.43 20 12 20C7.57 20 4 16.43 4 12C4 11.96 4 11.91 4 11.87A10 10 0 0 0 9.74 6.31A10 10 0 0 0 17.5 10A10 10 0 0 0 18.83 9.91L17.35 6.65L12.6 4.5L16.13 2.9C14.87 2.33 13.47 2 12 2M9 11.75A1.25 1.25 0 0 0 7.75 13A1.25 1.25 0 0 0 9 14.25A1.25 1.25 0 0 0 10.25 13A1.25 1.25 0 0 0 9 11.75M15 11.75A1.25 1.25 0 0 0 13.75 13A1.25 1.25 0 0 0 15 14.25A1.25 1.25 0 0 0 16.25 13A1.25 1.25 0 0 0 15 11.75Z"; -var mdiFaceWomanShimmerOutline = "M19.5 1L18.41 3.41L16 4.5L18.41 5.59L19.5 8L20.6 5.59L23 4.5L20.6 3.41M12 2C6.5 2 2 6.5 2 12V22H22V12C22 10.53 21.67 9.13 21.1 7.87L19.86 10.57C19.95 11.04 20 11.5 20 12C20 16.43 16.43 20 12 20C7.57 20 4 16.43 4 12C4 11.95 4 11.91 4 11.86C6.61 10.89 8.69 8.88 9.74 6.31C11.61 8.61 14.44 10 17.5 10C17.94 10 18.39 9.97 18.83 9.91L17.96 8C17.81 8 17.65 8 17.5 8C14.68 8 12.1 6.5 10.66 4.12C11.1 4.05 11.54 4 12 4C12.5 4 12.96 4.05 13.42 4.13L16.13 2.91C14.87 2.33 13.47 2 12 2M8.09 5C7.46 6.91 6.15 8.5 4.41 9.5C5.04 7.57 6.37 6 8.09 5M9 11.75C8.31 11.75 7.75 12.31 7.75 13C7.75 13.69 8.31 14.25 9 14.25C9.69 14.25 10.25 13.69 10.25 13C10.25 12.31 9.69 11.75 9 11.75M15 11.75C14.31 11.75 13.75 12.31 13.75 13C13.75 13.69 14.31 14.25 15 14.25C15.69 14.25 16.25 13.69 16.25 13C16.25 12.31 15.69 11.75 15 11.75M4 17.97C4.58 18.74 5.26 19.42 6.03 20H4M20 17.97V20H17.97C18.74 19.42 19.42 18.74 20 17.97Z"; -var mdiFacebook = "M12 2.04C6.5 2.04 2 6.53 2 12.06C2 17.06 5.66 21.21 10.44 21.96V14.96H7.9V12.06H10.44V9.85C10.44 7.34 11.93 5.96 14.22 5.96C15.31 5.96 16.45 6.15 16.45 6.15V8.62H15.19C13.95 8.62 13.56 9.39 13.56 10.18V12.06H16.34L15.89 14.96H13.56V21.96A10 10 0 0 0 22 12.06C22 6.53 17.5 2.04 12 2.04Z"; -var mdiFacebookGaming = "M9.5 14.5V9.5H21V21H15.5V14.5H9.5M3 3H21L21 8.5H8.5V15.5H14.5V21H3V3Z"; -var mdiFacebookMessenger = "M12,2C6.36,2 2,6.13 2,11.7C2,14.61 3.19,17.14 5.14,18.87C5.3,19 5.4,19.22 5.41,19.44L5.46,21.22C5.5,21.79 6.07,22.16 6.59,21.93L8.57,21.06C8.74,21 8.93,20.97 9.1,21C10,21.27 11,21.4 12,21.4C17.64,21.4 22,17.27 22,11.7C22,6.13 17.64,2 12,2M18,9.46L15.07,14.13C14.6,14.86 13.6,15.05 12.9,14.5L10.56,12.77C10.35,12.61 10.05,12.61 9.84,12.77L6.68,15.17C6.26,15.5 5.71,15 6,14.54L8.93,9.87C9.4,9.14 10.4,8.95 11.1,9.47L13.44,11.23C13.66,11.39 13.95,11.39 14.16,11.23L17.32,8.83C17.74,8.5 18.29,9 18,9.46Z"; -var mdiFacebookWorkplace = "M19.69,16.12C19.42,16.43 18.95,16.92 18.19,16.92C17.13,16.92 16.78,16.15 16.46,15.34L14.86,11.41L13.26,15.34C13,16 12.7,16.92 11.53,16.92C10.36,16.92 10.07,16 9.79,15.34L7.11,8.72H9.37L11.53,14.17L13.14,10.2C13.39,9.57 13.69,8.62 14.86,8.62C16,8.62 16.32,9.57 16.58,10.2L18.33,14.5C19.22,13.14 19.6,11.5 19.38,9.89C19.16,8.28 18.37,6.8 17.14,5.73C15.92,4.66 14.34,4.06 12.72,4.06C11.03,4.05 9.39,4.58 8,5.56C6.66,6.55 5.64,7.94 5.12,9.54C4.6,11.14 4.6,12.87 5.12,14.47C5.64,16.07 6.66,17.46 8.03,18.44C9.4,19.43 11.04,19.95 12.72,19.94C13.45,19.94 14.17,19.84 14.87,19.64V21.75C14.16,21.91 13.44,22 12.72,22C10.61,22 8.54,21.34 6.82,20.1C5.1,18.86 3.82,17.11 3.17,15.1C2.5,13.09 2.5,10.92 3.16,8.9C3.82,6.89 5.1,5.14 6.82,3.9C8.53,2.66 10.6,2 12.72,2C17.56,2 21.5,5.94 21.5,10.79C21.5,12.71 20.86,14.59 19.69,16.12V16.12Z"; -var mdiFactory = "M4,18V20H8V18H4M4,14V16H14V14H4M10,18V20H14V18H10M16,14V16H20V14H16M16,18V20H20V18H16M2,22V8L7,12V8L12,12V8L17,12L18,2H21L22,12V22H2Z"; -var mdiFamilyTree = "M12 1A2.5 2.5 0 0 0 9.5 3.5A2.5 2.5 0 0 0 11 5.79V7H7A2 2 0 0 0 5 9V9.71A2.5 2.5 0 0 0 3.5 12A2.5 2.5 0 0 0 5 14.29V15H4A2 2 0 0 0 2 17V18.21A2.5 2.5 0 0 0 .5 20.5A2.5 2.5 0 0 0 3 23A2.5 2.5 0 0 0 5.5 20.5A2.5 2.5 0 0 0 4 18.21V17H8V18.21A2.5 2.5 0 0 0 6.5 20.5A2.5 2.5 0 0 0 9 23A2.5 2.5 0 0 0 11.5 20.5A2.5 2.5 0 0 0 10 18.21V17A2 2 0 0 0 8 15H7V14.29A2.5 2.5 0 0 0 8.5 12A2.5 2.5 0 0 0 7 9.71V9H17V9.71A2.5 2.5 0 0 0 15.5 12A2.5 2.5 0 0 0 17 14.29V15H16A2 2 0 0 0 14 17V18.21A2.5 2.5 0 0 0 12.5 20.5A2.5 2.5 0 0 0 15 23A2.5 2.5 0 0 0 17.5 20.5A2.5 2.5 0 0 0 16 18.21V17H20V18.21A2.5 2.5 0 0 0 18.5 20.5A2.5 2.5 0 0 0 21 23A2.5 2.5 0 0 0 23.5 20.5A2.5 2.5 0 0 0 22 18.21V17A2 2 0 0 0 20 15H19V14.29A2.5 2.5 0 0 0 20.5 12A2.5 2.5 0 0 0 19 9.71V9A2 2 0 0 0 17 7H13V5.79A2.5 2.5 0 0 0 14.5 3.5A2.5 2.5 0 0 0 12 1M12 2.5A1 1 0 0 1 13 3.5A1 1 0 0 1 12 4.5A1 1 0 0 1 11 3.5A1 1 0 0 1 12 2.5M6 11A1 1 0 0 1 7 12A1 1 0 0 1 6 13A1 1 0 0 1 5 12A1 1 0 0 1 6 11M18 11A1 1 0 0 1 19 12A1 1 0 0 1 18 13A1 1 0 0 1 17 12A1 1 0 0 1 18 11M3 19.5A1 1 0 0 1 4 20.5A1 1 0 0 1 3 21.5A1 1 0 0 1 2 20.5A1 1 0 0 1 3 19.5M9 19.5A1 1 0 0 1 10 20.5A1 1 0 0 1 9 21.5A1 1 0 0 1 8 20.5A1 1 0 0 1 9 19.5M15 19.5A1 1 0 0 1 16 20.5A1 1 0 0 1 15 21.5A1 1 0 0 1 14 20.5A1 1 0 0 1 15 19.5M21 19.5A1 1 0 0 1 22 20.5A1 1 0 0 1 21 21.5A1 1 0 0 1 20 20.5A1 1 0 0 1 21 19.5Z"; -var mdiFan = "M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12.5,2C17,2 17.11,5.57 14.75,6.75C13.76,7.24 13.32,8.29 13.13,9.22C13.61,9.42 14.03,9.73 14.35,10.13C18.05,8.13 22.03,8.92 22.03,12.5C22.03,17 18.46,17.1 17.28,14.73C16.78,13.74 15.72,13.3 14.79,13.11C14.59,13.59 14.28,14 13.88,14.34C15.87,18.03 15.08,22 11.5,22C7,22 6.91,18.42 9.27,17.24C10.25,16.75 10.69,15.71 10.89,14.79C10.4,14.59 9.97,14.27 9.65,13.87C5.96,15.85 2,15.07 2,11.5C2,7 5.56,6.89 6.74,9.26C7.24,10.25 8.29,10.68 9.22,10.87C9.41,10.39 9.73,9.97 10.14,9.65C8.15,5.96 8.94,2 12.5,2Z"; -var mdiFanAlert = "M10 11C9.43 11 9 11.45 9 12S9.43 13 10 13C10.54 13 11 12.55 11 12S10.54 11 10 11M10.5 2C15 2 15.09 5.57 12.73 6.75C11.74 7.24 11.3 8.29 11.11 9.22C11.59 9.42 12 9.73 12.33 10.13C16.03 8.13 20 8.92 20 12.5C20 17 16.43 17.1 15.26 14.73C14.76 13.74 13.7 13.3 12.77 13.11C12.57 13.59 12.26 14 11.86 14.34C13.85 18.03 13.06 22 9.5 22C5 22 4.9 18.42 7.26 17.24C8.24 16.75 8.68 15.71 8.88 14.79C8.39 14.59 7.96 14.27 7.64 13.87C3.95 15.85 0 15.07 0 11.5C0 7 3.56 6.89 4.73 9.26C5.23 10.25 6.28 10.68 7.21 10.87C7.4 10.39 7.72 9.97 8.13 9.65C6.14 5.96 6.93 2 10.5 2M22 13V7H24V13H22M22 17V15H24V17H22Z"; -var mdiFanAuto = "M12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2M12 11C12.54 11 13 11.45 13 12C13 12.55 12.54 13 12 13C11.43 13 11 12.55 11 12C11 11.45 11.43 11 12 11M18 15C16.89 15 16 15.9 16 17V23H18V21H20V23H22V17C22 15.9 21.1 15 20 15M18 17H20V19H18Z"; -var mdiFanChevronDown = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M19 19.17L22.17 16L23.59 17.41L19 22L14.41 17.41L15.83 16L19 19.17"; -var mdiFanChevronUp = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M19 17.83L15.83 21L14.41 19.59L19 15L23.59 19.59L22.17 21L19 17.83"; -var mdiFanMinus = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M23 18V20H15V18H23Z"; -var mdiFanOff = "M12.5,2C9.64,2 8.57,4.55 9.29,7.47L15,13.16C15.87,13.37 16.81,13.81 17.28,14.73C18.46,17.1 22.03,17 22.03,12.5C22.03,8.92 18.05,8.13 14.35,10.13C14.03,9.73 13.61,9.42 13.13,9.22C13.32,8.29 13.76,7.24 14.75,6.75C17.11,5.57 17,2 12.5,2M3.28,4L2,5.27L4.47,7.73C3.22,7.74 2,8.87 2,11.5C2,15.07 5.96,15.85 9.65,13.87C9.97,14.27 10.4,14.59 10.89,14.79C10.69,15.71 10.25,16.75 9.27,17.24C6.91,18.42 7,22 11.5,22C13.8,22 14.94,20.36 14.94,18.21L18.73,22L20,20.72L3.28,4Z"; -var mdiFanPlus = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M20 15V18H23V20H20V23H18V20H15V18H18V15H20Z"; -var mdiFanRemove = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88Z"; -var mdiFanSpeed1 = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M17 15V17H18V23H20V15H17Z"; -var mdiFanSpeed2 = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M16 15V17H19V18H18C16.9 18 16 18.9 16 20V23H21V21H18V20H19C20.11 20 21 19.11 21 18V17C21 15.9 20.11 15 19 15H16Z"; -var mdiFanSpeed3 = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M21 21V20.5C21 19.67 20.33 19 19.5 19C20.33 19 21 18.33 21 17.5V17C21 15.89 20.1 15 19 15H16V17H19V18H17V20H19V21H16V23H19C20.11 23 21 22.11 21 21"; -var mdiFastForward = "M13,6V18L21.5,12M4,18L12.5,12L4,6V18Z"; -var mdiFastForward10 = "M10,12V22H8V14H6V12H10M18,14V20C18,21.11 17.11,22 16,22H14A2,2 0 0,1 12,20V14A2,2 0 0,1 14,12H16C17.11,12 18,12.9 18,14M14,14V20H16V14H14M11.5,3C14.15,3 16.55,4 18.4,5.6L21,3V10H14L16.62,7.38C15.23,6.22 13.46,5.5 11.5,5.5C7.96,5.5 4.95,7.81 3.9,11L1.53,10.22C2.92,6.03 6.85,3 11.5,3Z"; -var mdiFastForward30 = "M11.5,3C6.85,3 2.92,6.03 1.53,10.22L3.9,11C4.95,7.81 7.96,5.5 11.5,5.5C13.46,5.5 15.23,6.22 16.62,7.38L14,10H21V3L18.4,5.6C16.55,4 14.15,3 11.5,3M19,14V20C19,21.11 18.11,22 17,22H15A2,2 0 0,1 13,20V14A2,2 0 0,1 15,12H17C18.11,12 19,12.9 19,14M15,14V20H17V14H15M11,20C11,21.11 10.1,22 9,22H5V20H9V18H7V16H9V14H5V12H9A2,2 0 0,1 11,14V15.5A1.5,1.5 0 0,1 9.5,17A1.5,1.5 0 0,1 11,18.5V20Z"; -var mdiFastForward5 = "M11.5 3C14.15 3 16.55 4 18.4 5.6L21 3V10H14L16.62 7.38C15.23 6.22 13.46 5.5 11.5 5.5C7.96 5.5 4.95 7.81 3.9 11L1.53 10.22C2.92 6.03 6.85 3 11.5 3M9 12H15V14H11V16H13C14.11 16 15 16.9 15 18V20C15 21.11 14.11 22 13 22H9V20H13V18H9V12Z"; -var mdiFastForward60 = "M11.5 3C6.8 3 2.9 6 1.5 10.2L3.9 11C4.9 7.8 8 5.5 11.5 5.5C13.5 5.5 15.2 6.2 16.6 7.4L14 10H21V3L18.4 5.6C16.5 4 14.1 3 11.5 3M19 14V20C19 21.1 18.1 22 17 22H15C13.9 22 13 21.1 13 20V14C13 12.9 13.9 12 15 12H17C18.1 12 19 12.9 19 14M15 14V20H17V14H15M7 12C5.9 12 5 12.9 5 14V20C5 21.1 5.9 22 7 22H9C10.1 22 11 21.1 11 20V18C11 16.9 10.1 16 9 16H7V14H11V12H7M7 18H9V20H7V18Z"; -var mdiFastForwardOutline = "M15,9.9L18,12L15,14.1V9.9M6,9.9L9,12L6,14.1V9.9M13,6V18L21.5,12L13,6M4,6V18L12.5,12L4,6Z"; -var mdiFax = "M11,6H16V8H11V6M8,9V3H19V9A3,3 0 0,1 22,12V18H19V21H8V18H7V9H8M10,5V9H17V5H10M10,15V19H17V15H10M19,11A1,1 0 0,0 18,12A1,1 0 0,0 19,13A1,1 0 0,0 20,12A1,1 0 0,0 19,11M4,9H5A1,1 0 0,1 6,10V17A1,1 0 0,1 5,18H4A2,2 0 0,1 2,16V11A2,2 0 0,1 4,9Z"; -var mdiFeather = "M22,2C22,2 14.36,1.63 8.34,9.88C3.72,16.21 2,22 2,22L3.94,21C5.38,18.5 6.13,17.47 7.54,16C10.07,16.74 12.71,16.65 15,14C13,13.44 11.4,13.57 9.04,13.81C11.69,12 13.5,11.6 16,12L17,10C15.2,9.66 14,9.63 12.22,10.04C14.19,8.65 15.56,7.87 18,8L19.21,6.07C17.65,5.96 16.71,6.13 14.92,6.57C16.53,5.11 18,4.45 20.14,4.32C20.14,4.32 21.19,2.43 22,2Z"; -var mdiFeatureSearch = "M20,20A2,2 0 0,1 18,22H4A2,2 0 0,1 2,20V6A2,2 0 0,1 4,4H9.5C9.2,4.8 9,5.6 9,6.5C9,10.1 11.9,13 15.5,13C16.3,13 17,12.9 17.6,12.6L20,15V20M19.3,8.9C19.7,8.2 20,7.4 20,6.5C20,4 18,2 15.5,2C13,2 11,4 11,6.5C11,9 13,11 15.5,11C16.4,11 17.2,10.7 17.9,10.3L21,13.4L22.4,12L19.3,8.9M15.5,9C14.1,9 13,7.9 13,6.5C13,5.1 14.1,4 15.5,4C16.9,4 18,5.1 18,6.5C18,7.9 16.9,9 15.5,9Z"; -var mdiFeatureSearchOutline = "M15.5,2C13,2 11,4 11,6.5C11,9 13,11 15.5,11C16.4,11 17.2,10.7 17.9,10.3L21,13.4L22.4,12L19.3,8.9C19.7,8.2 20,7.4 20,6.5C20,4 18,2 15.5,2M4,4A2,2 0 0,0 2,6V20A2,2 0 0,0 4,22H18A2,2 0 0,0 20,20V15L18,13V20H4V6H9.03C9.09,5.3 9.26,4.65 9.5,4H4M15.5,4C16.9,4 18,5.1 18,6.5C18,7.9 16.9,9 15.5,9C14.1,9 13,7.9 13,6.5C13,5.1 14.1,4 15.5,4Z"; -var mdiFedora = "M4.4,22C3.07,22 2,20.93 2,19.6V12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22H4.4M14.9,4.4C12.3,4.4 10.2,6.5 10.2,9.1V11.6H8.3C7.69,11.6 7.2,12.09 7.2,12.7C7.2,13.31 7.69,13.8 8.3,13.8H9.8C10,13.8 10.2,14 10.2,14.2V16.3C10.2,17.68 9.08,18.8 7.7,18.8C7.55,18.8 7.41,18.79 7.27,18.76C7.19,18.74 7.1,18.73 7,18.73C6.41,18.73 5.91,19.23 5.91,19.83C5.91,20.37 6.3,20.81 6.8,20.91V20.91C7.09,20.97 7.39,21 7.7,21C10.3,21 12.4,18.9 12.4,16.3V13.8H14.3C14.91,13.8 15.4,13.31 15.4,12.7A1.1,1.1 0 0,0 14.3,11.6H12.8A0.4,0.4 0 0,1 12.4,11.2V9.1A2.5,2.5 0 0,1 14.9,6.6C15.05,6.6 15.2,6.61 15.34,6.64C15.42,6.66 15.5,6.67 15.59,6.67C16.19,6.67 16.69,6.17 16.69,5.57C16.69,5.03 16.3,4.58 15.8,4.5V4.5C15.5,4.43 15.21,4.4 14.9,4.4M6.8,12.7C6.8,12.58 6.81,12.46 6.84,12.34L6.31,11.81C6.1,11.87 5.89,11.95 5.7,12.05L6.91,13.26C6.84,13.08 6.8,12.9 6.8,12.7M6.54,18.5H6.47L6.5,18.5H6.54M5.61,19.83C5.61,19.6 5.67,19.38 5.77,19.19L3,16.42C3,16.76 3.05,17.08 3.13,17.4L5.61,19.88V19.83M5.86,20.63C5.77,20.5 5.71,20.37 5.67,20.22L3.24,17.79C3.67,19.07 4.63,20.1 5.86,20.63M15.8,12.7C15.8,12.82 15.79,12.94 15.76,13.06L16.29,13.59C16.5,13.53 16.71,13.45 16.9,13.35L15.69,12.14C15.76,12.32 15.8,12.5 15.8,12.7M16.06,6.88L16.13,6.92L16.08,6.88H16.06M17,5.57C17,5.8 16.93,6 16.83,6.21L19.6,9C19.59,8.64 19.55,8.32 19.47,8L17,5.5V5.57M16.74,4.77C16.83,4.9 16.89,5.03 16.93,5.18L19.36,7.61C18.93,6.33 17.97,5.3 16.74,4.77M16.07,13.65L15.69,13.27C15.61,13.46 15.5,13.63 15.35,13.78V13.78C15.6,13.76 15.84,13.71 16.07,13.65M18.23,12.42L16.67,10.86C16.53,11 16.37,11.13 16.2,11.24L17.78,12.82C17.94,12.69 18.09,12.56 18.23,12.42M17.62,12.94L16,11.34C15.82,11.44 15.61,11.5 15.39,11.55L17.09,13.26C17.27,13.16 17.45,13.05 17.62,12.94M18.75,11.8L17.15,10.2C17.05,10.39 16.94,10.56 16.81,10.71L18.37,12.27C18.5,12.12 18.63,11.97 18.75,11.8M19.16,11.09L17.39,9.32C17.37,9.56 17.32,9.79 17.23,10L18.86,11.63C18.97,11.46 19.07,11.28 19.16,11.09M19.6,9.26L16.72,6.38C16.6,6.55 16.45,6.69 16.28,6.79L19.5,10C19.56,9.77 19.59,9.5 19.6,9.26M19.46,10.25L17.08,7.87C17.27,8.22 17.39,8.62 17.4,9.04L19.25,10.89C19.33,10.68 19.4,10.47 19.46,10.25M4.82,12.58C4.66,12.71 4.5,12.84 4.37,13L5.93,14.54C6.07,14.4 6.23,14.27 6.4,14.16L4.82,12.58M5.5,12.14C5.33,12.24 5.15,12.35 5,12.46L6.58,14.06C6.78,13.96 7,13.89 7.21,13.85L5.5,12.14M7.25,11.62C7,11.64 6.76,11.69 6.53,11.75L6.91,12.13C7,11.94 7.11,11.77 7.25,11.62V11.62M3.09,15.38C3.04,15.63 3,15.88 3,16.14L5.88,19C6,18.85 6.15,18.71 6.32,18.61L3.09,15.38M3.74,13.77C3.63,13.94 3.53,14.12 3.44,14.31L5.21,16.08C5.23,15.84 5.28,15.61 5.37,15.4L3.74,13.77M3.35,14.5C3.27,14.72 3.2,14.93 3.14,15.15L5.5,17.53C5.33,17.18 5.21,16.78 5.2,16.36L3.35,14.5M4.23,13.13C4.1,13.28 3.97,13.43 3.85,13.6L5.45,15.2C5.55,15 5.66,14.84 5.79,14.69L4.23,13.13Z"; -var mdiFencing = "M4.5 17.42L5.58 18.5L3.28 20.78C3 21.07 2.5 21.07 2.22 20.78S1.93 20 2.22 19.72L4.5 17.42M18.29 5.42L18.29 4L12 10.29L5.71 4L5.71 5.42L11.29 11L7.5 14.81C6.32 13.97 4.68 14.07 3.63 15.12L7.88 19.37C8.93 18.32 9.03 16.68 8.2 15.5L18.29 5.42M21.78 19.72L19.5 17.42L18.42 18.5L20.72 20.78C21 21.07 21.5 21.07 21.78 20.78S22.07 20 21.78 19.72M16.5 14.81L13.42 11.71L12.71 12.42L15.81 15.5C14.97 16.68 15.07 18.32 16.12 19.37L20.37 15.12C19.32 14.07 17.68 13.97 16.5 14.81Z"; -var mdiFerrisWheel = "M12,19C12.86,19 13.59,19.54 13.87,20.29C14.42,20.17 14.95,20 15.46,19.77L13.7,15.62C13.18,15.87 12.61,16 12,16C11.39,16 10.82,15.87 10.3,15.62L8.54,19.77C9.05,20 9.58,20.17 10.13,20.29C10.41,19.54 11.14,19 12,19M18.25,17.76C18,17.42 17.81,17 17.81,16.5C17.81,15.41 18.71,14.5 19.81,14.5L20.12,14.53C20.37,13.73 20.5,12.88 20.5,12C20.5,11.12 20.37,10.27 20.12,9.5H19.81C18.7,9.5 17.81,8.61 17.81,7.5C17.81,7 17.97,6.59 18.25,6.24C17.1,5 15.59,4.09 13.87,3.71C13.59,4.46 12.86,5 12,5C11.14,5 10.41,4.46 10.13,3.71C8.41,4.09 6.9,5 5.75,6.24C6.03,6.59 6.2,7.03 6.2,7.5C6.2,8.61 5.3,9.5 4.2,9.5H3.88C3.63,10.28 3.5,11.12 3.5,12C3.5,12.89 3.64,13.74 3.89,14.55L4.2,14.5C5.31,14.5 6.2,15.42 6.2,16.5C6.2,17 6.04,17.43 5.76,17.77C6.08,18.12 6.44,18.44 6.81,18.73L8.71,14.27C8.26,13.62 8,12.84 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12C16,12.84 15.74,13.62 15.29,14.27L17.19,18.73C17.57,18.44 17.92,18.11 18.25,17.76M12,23C11,23 10.16,22.26 10,21.29C9.37,21.16 8.75,20.95 8.15,20.69L7.17,23H5L6.41,19.68C5.88,19.3 5.39,18.86 4.96,18.37C4.72,18.47 4.47,18.5 4.2,18.5A2,2 0 0,1 2.2,16.5C2.2,15.88 2.5,15.32 2.97,14.95C2.66,14 2.5,13.03 2.5,12C2.5,11 2.66,10 2.96,9.08C2.5,8.71 2.2,8.15 2.2,7.5C2.2,6.41 3.09,5.5 4.2,5.5C4.46,5.5 4.71,5.56 4.93,5.65C6.25,4.18 8,3.13 10,2.71C10.16,1.74 11,1 12,1C13,1 13.84,1.74 14,2.71C16,3.13 17.74,4.18 19.06,5.64C19.29,5.55 19.54,5.5 19.81,5.5A2,2 0 0,1 21.81,7.5C21.81,8.14 21.5,8.71 21.04,9.07C21.34,10 21.5,11 21.5,12C21.5,13 21.34,14 21.04,14.93C21.5,15.3 21.81,15.87 21.81,16.5C21.81,17.62 20.92,18.5 19.81,18.5C19.54,18.5 19.29,18.46 19.05,18.36C18.61,18.85 18.12,19.29 17.59,19.68L19,23H16.83L15.85,20.69C15.25,20.95 14.63,21.16 14,21.29C13.84,22.26 13,23 12,23Z"; -var mdiFerry = "M6,6H18V9.96L12,8L6,9.96M3.94,19H4C5.6,19 7,18.12 8,17C9,18.12 10.4,19 12,19C13.6,19 15,18.12 16,17C17,18.12 18.4,19 20,19H20.05L21.95,12.31C22.03,12.06 22,11.78 21.89,11.54C21.76,11.3 21.55,11.12 21.29,11.04L20,10.62V6C20,4.89 19.1,4 18,4H15V1H9V4H6A2,2 0 0,0 4,6V10.62L2.71,11.04C2.45,11.12 2.24,11.3 2.11,11.54C2,11.78 1.97,12.06 2.05,12.31M20,21C18.61,21 17.22,20.53 16,19.67C13.56,21.38 10.44,21.38 8,19.67C6.78,20.53 5.39,21 4,21H2V23H4C5.37,23 6.74,22.65 8,22C10.5,23.3 13.5,23.3 16,22C17.26,22.65 18.62,23 20,23H22V21H20Z"; -var mdiFile = "M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"; -var mdiFileAccount = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M14,20V19C14,17.67 11.33,17 10,17C8.67,17 6,17.67 6,19V20H14M10,12A2,2 0 0,0 8,14A2,2 0 0,0 10,16A2,2 0 0,0 12,14A2,2 0 0,0 10,12Z"; -var mdiFileAccountOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M13 13C13 14.1 12.1 15 11 15S9 14.1 9 13 9.9 11 11 11 13 11.9 13 13M15 18V19H7V18C7 16.67 9.67 16 11 16S15 16.67 15 18Z"; -var mdiFileAlert = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M9 19H7V17H9M9 15H7V9H9M13 9V3.5L18.5 9H13Z"; -var mdiFileAlertOutline = "M10 18H8V16H10V18M10 14H8V8H10V14M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20Z"; -var mdiFileCabinet = "M14,8H10V6H14V8M20,4V20C20,21.11 19.11,22 18,22H6C4.89,22 4,21.11 4,20V4A2,2 0 0,1 6,2H18C19.11,2 20,2.9 20,4M18,13H6V20H18V13M18,4H6V11H18V4M14,15H10V17H14V15Z"; -var mdiFileCad = "M6 2C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M13 3.5L18.5 9H13M9.88 9.25H11.12V10.19C11.81 10.18 12.38 10.75 12.38 11.44V13.5L12.26 13.63L13.15 15.17C13.47 14.67 13.63 14.09 13.62 13.5H14.88C14.88 14.54 14.5 15.55 13.83 16.35L15.5 19.25V20.5L14.42 19.88L12.87 17.19C12.17 17.65 11.34 17.89 10.5 17.89C9.66 17.89 8.84 17.65 8.13 17.19L6.58 19.88L5.5 20.5V19.25L8.74 13.63L8.62 13.5V11.44C8.62 10.75 9.19 10.18 9.88 10.19M10.5 11.44C9.81 11.44 9.46 12.28 9.95 12.77C10.44 13.26 11.28 12.92 11.28 12.22C11.28 11.79 10.93 11.44 10.5 11.44M9.66 14.54L8.76 16.11C9.81 16.82 11.19 16.82 12.24 16.11L11.34 14.54C10.87 15 10.13 15 9.66 14.54Z"; -var mdiFileCadBox = "M5 3C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M11.25 5.25H12.75V6.38C13.58 6.38 14.25 7.05 14.25 7.88V10.37L14.11 10.5L15.18 12.36C15.55 11.76 15.75 11.07 15.75 10.36H17.25C17.26 11.61 16.81 12.82 16 13.77L18 17.25V18.75L16.7 18L14.84 14.78C13.12 15.91 10.89 15.91 9.16 14.78L7.3 18L6 18.75V17.25L9.89 10.5L9.75 10.37V7.88C9.75 7.05 10.42 6.38 11.25 6.38M12 7.88C11.16 7.88 10.74 8.9 11.34 9.5C11.94 10.08 12.95 9.65 12.94 8.81C12.94 8.29 12.5 7.88 12 7.88M11 11.6L9.91 13.5C11.17 14.36 12.83 14.36 14.09 13.5L13 11.6C12.43 12.11 11.57 12.11 11 11.6Z"; -var mdiFileCancel = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M10.5,11C8,11 6,13 6,15.5C6,18 8,20 10.5,20C13,20 15,18 15,15.5C15,13 13,11 10.5,11M10.5,12.5A3,3 0 0,1 13.5,15.5C13.5,16.06 13.35,16.58 13.08,17L9,12.92C9.42,12.65 9.94,12.5 10.5,12.5M7.5,15.5C7.5,14.94 7.65,14.42 7.92,14L12,18.08C11.58,18.35 11.06,18.5 10.5,18.5A3,3 0 0,1 7.5,15.5Z"; -var mdiFileCancelOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M11.5,10C14,10 16,12 16,14.5C16,17 14,19 11.5,19C9,19 7,17 7,14.5C7,12 9,10 11.5,10M11.5,11.5C10.94,11.5 10.42,11.65 10,11.92L14.08,16C14.35,15.58 14.5,15.06 14.5,14.5A3,3 0 0,0 11.5,11.5M8.5,14.5A3,3 0 0,0 11.5,17.5C12.06,17.5 12.58,17.35 13,17.08L8.92,13C8.65,13.42 8.5,13.94 8.5,14.5Z"; -var mdiFileCertificate = "M14 2H7A2 2 0 0 0 5 4V18A2 2 0 0 0 7 20H10V23L12 22L14 23V20H17A2 2 0 0 0 19 18V7M14 15V17L12 16L10 17V15L8 14L10 13V11L12 12L14 11V13L16 14M13 8V3.5L17.5 8Z"; -var mdiFileCertificateOutline = "M14 13V11L12 12L10 11V13L8 14L10 15V17L12 16L14 17V15L16 14M14 2H7A2 2 0 0 0 5 4V18A2 2 0 0 0 7 20H8V18H7V4H13V8H17V18H16V20H17A2 2 0 0 0 19 18V7M14 13V11L12 12L10 11V13L8 14L10 15V17L12 16L14 17V15L16 14M10 23L12 22L14 23V18H10M14 13V11L12 12L10 11V13L8 14L10 15V17L12 16L14 17V15L16 14Z"; -var mdiFileChart = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M7,20H9V14H7V20M11,20H13V12H11V20M15,20H17V16H15V20Z"; -var mdiFileChartOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20M9 13V19H7V13H9M15 15V19H17V15H15M11 11V19H13V11H11Z"; -var mdiFileCheck = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M11.2,18.46L15.95,13.71L14.78,12.3L11.2,15.88L9.61,14.3L8.45,15.46L11.2,18.46Z"; -var mdiFileCheckOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M11.2,18.46L8.45,15.46L9.61,14.3L11.2,15.88L14.78,12.3L15.95,13.71L11.2,18.46Z"; -var mdiFileClock = "M4 2C2.89 2 2 2.89 2 4V20A2 2 0 0 0 4 22H12.41A7 7 0 0 0 16 23A7 7 0 0 0 23 16A7 7 0 0 0 18 9.3V8L12 2H4M11 3.5L16.5 9H11V3.5M16 11A5 5 0 0 1 21 16A5 5 0 0 1 16 21A5 5 0 0 1 11 16A5 5 0 0 1 16 11M15 12V17L18.61 19.16L19.36 17.94L16.5 16.25V12H15Z"; -var mdiFileClockOutline = "M4 2A2 2 0 0 0 2 4V20A2 2 0 0 0 4 22H12.41A7 7 0 0 0 16 23A7 7 0 0 0 23 16A7 7 0 0 0 18 9.3V8L12 2H4M4 4H11V9H16A7 7 0 0 0 9 16A7 7 0 0 0 10.26 20H4V4M16 11A5 5 0 0 1 21 16A5 5 0 0 1 16 21A5 5 0 0 1 11 16A5 5 0 0 1 16 11M15 12V17L18.61 19.16L19.36 17.94L16.5 16.25V12H15Z"; -var mdiFileCloud = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15.68,15C15.34,13.3 13.82,12 12,12C10.55,12 9.3,12.82 8.68,14C7.17,14.18 6,15.45 6,17A3,3 0 0,0 9,20H15.5A2.5,2.5 0 0,0 18,17.5C18,16.18 16.97,15.11 15.68,15Z"; -var mdiFileCloudOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17 16.92C17 18.07 16.07 19 14.92 19H9.5C8.12 19 7 17.88 7 16.5C7 15.21 8 14.15 9.23 14C9.75 13 10.79 12.33 12 12.33C13.5 12.33 14.78 13.42 15.07 14.83C16.14 14.93 17 15.82 17 16.92Z"; -var mdiFileCode = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6.12,15.5L9.86,19.24L11.28,17.83L8.95,15.5L11.28,13.17L9.86,11.76L6.12,15.5M17.28,15.5L13.54,11.76L12.12,13.17L14.45,15.5L12.12,17.83L13.54,19.24L17.28,15.5Z"; -var mdiFileCodeOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M9.54 15.65L11.63 17.74L10.35 19L7 15.65L10.35 12.3L11.63 13.56L9.54 15.65M17 15.65L13.65 19L12.38 17.74L14.47 15.65L12.38 13.56L13.65 12.3L17 15.65Z"; -var mdiFileCog = "M6 2C4.89 2 4 2.89 4 4V20A2 2 0 0 0 6 22H12.68A7 7 0 0 1 12 19A7 7 0 0 1 19 12A7 7 0 0 1 20 12.08V8L14 2H6M13 3.5L18.5 9H13V3.5M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14H18M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z"; -var mdiFileCogOutline = "M6 2C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H12V20H6V4H13V9H18V12H20V8L14 2M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z"; -var mdiFileCompare = "M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z"; -var mdiFileDelimited = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M15 16L13 20H10L12 16H9V11H15V16M13 9V3.5L18.5 9H13Z"; -var mdiFileDelimitedOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20M10 19L12 15H9V10H15V15L13 19H10"; -var mdiFileDocument = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15,18V16H6V18H15M18,14V12H6V14H18Z"; -var mdiFileDocumentEdit = "M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V20.09L12.09,18H6V16H14.09L16.09,14H6V12H18.09L20,10.09V8L14,2H6M13,3.5L18.5,9H13V3.5M20.15,13C20,13 19.86,13.05 19.75,13.16L18.73,14.18L20.82,16.26L21.84,15.25C22.05,15.03 22.05,14.67 21.84,14.46L20.54,13.16C20.43,13.05 20.29,13 20.15,13M18.14,14.77L12,20.92V23H14.08L20.23,16.85L18.14,14.77Z"; -var mdiFileDocumentEditOutline = "M8,12H16V14H8V12M10,20H6V4H13V9H18V12.1L20,10.1V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H10V20M8,18H12.1L13,17.1V16H8V18M20.2,13C20.3,13 20.5,13.1 20.6,13.2L21.9,14.5C22.1,14.7 22.1,15.1 21.9,15.3L20.9,16.3L18.8,14.2L19.8,13.2C19.9,13.1 20,13 20.2,13M20.2,16.9L14.1,23H12V20.9L18.1,14.8L20.2,16.9Z"; -var mdiFileDocumentMultiple = "M4 4V22H20V24H4C2.9 24 2 23.1 2 22V4H4M15 7H20.5L15 1.5V7M8 0H16L22 6V18C22 19.11 21.11 20 20 20H8C6.89 20 6 19.1 6 18V2C6 .89 6.89 0 8 0M17 16V14H8V16H17M20 12V10H8V12H20Z"; -var mdiFileDocumentMultipleOutline = "M16 0H8C6.9 0 6 .9 6 2V18C6 19.1 6.9 20 8 20H20C21.1 20 22 19.1 22 18V6L16 0M20 18H8V2H15V7H20V18M4 4V22H20V24H4C2.9 24 2 23.1 2 22V4H4M10 10V12H18V10H10M10 14V16H15V14H10Z"; -var mdiFileDocumentOutline = "M6,2A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M6,4H13V9H18V20H6V4M8,12V14H16V12H8M8,16V18H13V16H8Z"; -var mdiFileDownload = "M14,2H6C4.89,2 4,2.89 4,4V20C4,21.11 4.89,22 6,22H18C19.11,22 20,21.11 20,20V8L14,2M12,19L8,15H10.5V12H13.5V15H16L12,19M13,9V3.5L18.5,9H13Z"; -var mdiFileDownloadOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M12,19L8,15H10.5V12H13.5V15H16L12,19Z"; -var mdiFileEdit = "M6 2C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H10V20.1L20 10.1V8L14 2H6M13 3.5L18.5 9H13V3.5M20.1 13C20 13 19.8 13.1 19.7 13.2L18.7 14.2L20.8 16.3L21.8 15.3C22 15.1 22 14.7 21.8 14.5L20.5 13.2C20.4 13.1 20.3 13 20.1 13M18.1 14.8L12 20.9V23H14.1L20.2 16.9L18.1 14.8Z"; -var mdiFileEditOutline = "M10 20H6V4H13V9H18V12.1L20 10.1V8L14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H10V20M20.2 13C20.3 13 20.5 13.1 20.6 13.2L21.9 14.5C22.1 14.7 22.1 15.1 21.9 15.3L20.9 16.3L18.8 14.2L19.8 13.2C19.9 13.1 20 13 20.2 13M20.2 16.9L14.1 23H12V20.9L18.1 14.8L20.2 16.9Z"; -var mdiFileExcel = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M15.8,20H14L12,16.6L10,20H8.2L11.1,15.5L8.2,11H10L12,14.4L14,11H15.8L12.9,15.5L15.8,20M13,9V3.5L18.5,9H13Z"; -var mdiFileExcelBox = "M16.2,17H14.2L12,13.2L9.8,17H7.8L11,12L7.8,7H9.8L12,10.8L14.2,7H16.2L13,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiFileExcelBoxOutline = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M5 5H19V19H5V5M13 12L16.2 17H14.2L12 13.2L9.8 17H7.8L11 12L7.8 7H9.8L12 10.8L14.2 7H16.2L13 12Z"; -var mdiFileExcelOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M12.9 14.5L15.8 19H14L12 15.6L10 19H8.2L11.1 14.5L8.2 10H10L12 13.4L14 10H15.8L12.9 14.5Z"; -var mdiFileExport = "M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M8.93,12.22H16V19.29L13.88,17.17L11.05,20L8.22,17.17L11.05,14.35"; -var mdiFileExportOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20M16 11V18.1L13.9 16L11.1 18.8L8.3 16L11.1 13.2L8.9 11H16Z"; -var mdiFileEye = "M17,18C17.56,18 18,18.44 18,19C18,19.56 17.56,20 17,20C16.44,20 16,19.56 16,19C16,18.44 16.44,18 17,18M17,15C14.27,15 11.94,16.66 11,19C11.94,21.34 14.27,23 17,23C19.73,23 22.06,21.34 23,19C22.06,16.66 19.73,15 17,15M17,21.5A2.5,2.5 0 0,1 14.5,19A2.5,2.5 0 0,1 17,16.5A2.5,2.5 0 0,1 19.5,19A2.5,2.5 0 0,1 17,21.5M9.14,19.75L8.85,19L9.14,18.26C10.43,15.06 13.5,13 17,13C18.05,13 19.06,13.21 20,13.56V8L14,2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10.5C9.95,21.34 9.5,20.58 9.14,19.75M13,3.5L18.5,9H13V3.5Z"; -var mdiFileEyeOutline = "M17,18C17.56,18 18,18.44 18,19C18,19.56 17.56,20 17,20C16.44,20 16,19.56 16,19C16,18.44 16.44,18 17,18M17,15C14.27,15 11.94,16.66 11,19C11.94,21.34 14.27,23 17,23C19.73,23 22.06,21.34 23,19C22.06,16.66 19.73,15 17,15M17,21.5A2.5,2.5 0 0,1 14.5,19A2.5,2.5 0 0,1 17,16.5A2.5,2.5 0 0,1 19.5,19A2.5,2.5 0 0,1 17,21.5M9.27,20H6V4H13V9H18V13.07C18.7,13.15 19.36,13.32 20,13.56V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H10.5C10,21.41 9.59,20.73 9.27,20Z"; -var mdiFileFind = "M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10A3,3 0 0,0 9,13M20,19.59V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18C18.45,22 18.85,21.85 19.19,21.6L14.76,17.17C13.96,17.69 13,18 12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13C17,14 16.69,14.96 16.17,15.75L20,19.59Z"; -var mdiFileFindOutline = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M6,4H13L18,9V17.58L16.16,15.74C17.44,13.8 17.23,11.17 15.5,9.46C14.55,8.5 13.28,8 12,8C10.72,8 9.45,8.5 8.47,9.46C6.5,11.41 6.5,14.57 8.47,16.5C9.44,17.5 10.72,17.97 12,17.97C12.96,17.97 13.92,17.69 14.75,17.14L17.6,20H6V4M14.11,15.1C13.55,15.66 12.8,16 12,16C11.2,16 10.45,15.67 9.89,15.1C9.33,14.54 9,13.79 9,13C9,12.19 9.32,11.44 9.89,10.88C10.45,10.31 11.2,10 12,10C12.8,10 13.55,10.31 14.11,10.88C14.67,11.44 15,12.19 15,13C15,13.79 14.68,14.54 14.11,15.1Z"; -var mdiFileHidden = "M13,9H14V11H11V7H13V9M18.5,9L16.38,6.88L17.63,5.63L20,8V10H18V11H15V9H18.5M13,3.5V2H12V4H13V6H11V4H9V2H8V4H6V5H4V4C4,2.89 4.89,2 6,2H14L16.36,4.36L15.11,5.61L13,3.5M20,20A2,2 0 0,1 18,22H16V20H18V19H20V20M18,15H20V18H18V15M12,22V20H15V22H12M8,22V20H11V22H8M6,22C4.89,22 4,21.1 4,20V18H6V20H7V22H6M4,14H6V17H4V14M4,10H6V13H4V10M18,11H20V14H18V11M4,6H6V9H4V6Z"; -var mdiFileImage = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6,20H15L18,20V12L14,16L12,14L6,20M8,9A2,2 0 0,0 6,11A2,2 0 0,0 8,13A2,2 0 0,0 10,11A2,2 0 0,0 8,9Z"; -var mdiFileImageOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M17,13V19H7L12,14L14,16M10,10.5A1.5,1.5 0 0,1 8.5,12A1.5,1.5 0 0,1 7,10.5A1.5,1.5 0 0,1 8.5,9A1.5,1.5 0 0,1 10,10.5Z"; -var mdiFileImport = "M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M10.05,11.22L12.88,14.05L15,11.93V19H7.93L10.05,16.88L7.22,14.05"; -var mdiFileImportOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M15 11.93V19H7.93L10.05 16.88L7.22 14.05L10.05 11.22L12.88 14.05L15 11.93Z"; -var mdiFileKey = "M11 16A1 1 0 1 1 10 15A1 1 0 0 1 11 16M20 8V20A2 2 0 0 1 18 22H6A2 2 0 0 1 4 20V4A2 2 0 0 1 6 2H14M17 15H12.83A3 3 0 1 0 12.83 17H14V19H16V17H17M18.5 9L13 3.5V9Z"; -var mdiFileKeyOutline = "M14 2H6A2 2 0 0 0 4 4V20A2 2 0 0 0 6 22H18A2 2 0 0 0 20 20V8L14 2M18 20H6V4H13V9H18M12.83 15A3 3 0 1 0 12.83 17H14V19H16V17H17V15M10 17A1 1 0 1 1 11 16A1 1 0 0 1 10 17Z"; -var mdiFileLink = "M14 2H6C4.89 2 4 2.89 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M11 20H10C8.39 20 6 18.94 6 16C6 13.07 8.39 12 10 12H11V14H10C9.54 14 8 14.17 8 16C8 17.9 9.67 18 10 18H11V20M15 15V17H9V15H15M14 20H13V18H14C14.46 18 16 17.83 16 16C16 14.1 14.33 14 14 14H13V12H14C15.61 12 18 13.07 18 16C18 18.94 15.61 20 14 20M13 9V3.5L18.5 9H13Z"; -var mdiFileLinkOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M11 19H10.75C9.45 19 7 18.22 7 15.25S9.45 11.5 10.75 11.5H11V13H10.75C10.38 13 8.5 13.13 8.5 15.25C8.5 17.44 10.5 17.5 10.75 17.5H11V19M14 16H10V14.5H14V16M13 11.5H13.25C14.55 11.5 17 12.28 17 15.25S14.55 19 13.25 19H13V17.5H13.25C13.62 17.5 15.5 17.37 15.5 15.25C15.5 13.06 13.5 13 13.25 13H13V11.5Z"; -var mdiFileLock = "M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M13,3.5L18.5,9H13V3.5M12,11A3,3 0 0,1 15,14V15H16V19H8V15H9V14C9,12.36 10.34,11 12,11M12,13A1,1 0 0,0 11,14V15H13V14C13,13.47 12.55,13 12,13Z"; -var mdiFileLockOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M15 15V14C15 12.34 13.66 11 12 11S9 12.36 9 14V15H8V19H16V15H15M13 15H11V14C11 13.45 11.45 13 12 13S13 13.47 13 14V15Z"; -var mdiFileMove = "M14,17H18V14L23,18.5L18,23V20H14V17M13,9H18.5L13,3.5V9M6,2H14L20,8V12.34C19.37,12.12 18.7,12 18,12A6,6 0 0,0 12,18C12,19.54 12.58,20.94 13.53,22H6C4.89,22 4,21.1 4,20V4A2,2 0 0,1 6,2Z"; -var mdiFileMoveOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 20.41 4.12 20.8 4.34 21.12C4.41 21.23 4.5 21.33 4.59 21.41C4.95 21.78 5.45 22 6 22H13.53C13 21.42 12.61 20.75 12.35 20H6V4H13V9H18V12C18.7 12 19.37 12.12 20 12.34V8L14 2M18 23L23 18.5L20 15.8L18 14V17H14V20H18V23Z"; -var mdiFileMultiple = "M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z"; -var mdiFileMultipleOutline = "M16 0H8C6.9 0 6 .9 6 2V18C6 19.1 6.9 20 8 20H20C21.1 20 22 19.1 22 18V6L16 0M20 18H8V2H15V7H20V18M4 4V22H20V24H4C2.9 24 2 23.1 2 22V4H4Z"; -var mdiFileMusic = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,13H11V18A2,2 0 0,1 9,20A2,2 0 0,1 7,18A2,2 0 0,1 9,16C9.4,16 9.7,16.1 10,16.3V11H13V13M13,9V3.5L18.5,9H13Z"; -var mdiFileMusicOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M13,10V12H11V17A2,2 0 0,1 9,19A2,2 0 0,1 7,17A2,2 0 0,1 9,15C9.4,15 9.7,15.1 10,15.3V10H13Z"; -var mdiFileOutline = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z"; -var mdiFilePdf = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M10.1,11.4C10.08,11.44 9.81,13.16 8,16.09C8,16.09 4.5,17.91 5.33,19.27C6,20.35 7.65,19.23 9.07,16.59C9.07,16.59 10.89,15.95 13.31,15.77C13.31,15.77 17.17,17.5 17.7,15.66C18.22,13.8 14.64,14.22 14,14.41C14,14.41 12,13.06 11.5,11.2C11.5,11.2 12.64,7.25 10.89,7.3C9.14,7.35 9.8,10.43 10.1,11.4M10.91,12.44C10.94,12.45 11.38,13.65 12.8,14.9C12.8,14.9 10.47,15.36 9.41,15.8C9.41,15.8 10.41,14.07 10.91,12.44M14.84,15.16C15.42,15 17.17,15.31 17.1,15.64C17.04,15.97 14.84,15.16 14.84,15.16M7.77,17C7.24,18.24 6.33,19 6.1,19C5.87,19 6.8,17.4 7.77,17M10.91,10.07C10.91,10 10.55,7.87 10.91,7.92C11.45,8 10.91,10 10.91,10.07Z"; -var mdiFilePdfBox = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M10.59,10.08C10.57,10.13 10.3,11.84 8.5,14.77C8.5,14.77 5,16.58 5.83,17.94C6.5,19 8.15,17.9 9.56,15.27C9.56,15.27 11.38,14.63 13.79,14.45C13.79,14.45 17.65,16.19 18.17,14.34C18.69,12.5 15.12,12.9 14.5,13.09C14.5,13.09 12.46,11.75 12,9.89C12,9.89 13.13,5.95 11.38,6C9.63,6.05 10.29,9.12 10.59,10.08M11.4,11.13C11.43,11.13 11.87,12.33 13.29,13.58C13.29,13.58 10.96,14.04 9.9,14.5C9.9,14.5 10.9,12.75 11.4,11.13M15.32,13.84C15.9,13.69 17.64,14 17.58,14.32C17.5,14.65 15.32,13.84 15.32,13.84M8.26,15.7C7.73,16.91 6.83,17.68 6.6,17.67C6.37,17.66 7.3,16.07 8.26,15.7M11.4,8.76C11.39,8.71 11.03,6.57 11.4,6.61C11.94,6.67 11.4,8.71 11.4,8.76Z"; -var mdiFilePdfBoxOutline = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M19 5V19H5V5H19M17.9 13.5C17.6 13 16.9 12.8 15.7 12.8C15.3 12.8 14.9 12.8 14.5 12.9C14.2 12.7 13.9 12.5 13.7 12.3C13.1 11.8 12.5 10.9 12.2 9.8V9.7C12.5 8.4 12.8 6.9 12.2 6.2C11.9 6.1 11.7 6 11.5 6H11.3C10.9 6 10.6 6.4 10.5 6.7C10.1 8 10.4 8.7 10.7 9.9C10.5 10.8 10.1 11.7 9.7 12.7C9.3 13.4 9 14 8.7 14.5C8.3 14.7 8 14.8 7.8 15C6.7 15.7 6.1 16.5 6 17V17.5L6.5 17.8C6.7 18 6.8 18 7 18C7.8 18 8.7 17.1 9.9 15H10C11 14.7 12.2 14.5 13.9 14.3C14.9 14.8 16.1 15 16.8 15C17.2 15 17.5 14.9 17.7 14.7C17.9 14.5 18 14.3 18 14.1C18 13.8 18 13.6 17.9 13.5M6.8 17.3C6.8 16.9 7.3 16.3 8 15.7C8.1 15.6 8.3 15.5 8.5 15.4C7.8 16.5 7.2 17.2 6.8 17.3M11.3 6.7C11.3 6.7 11.3 6.6 11.4 6.6H11.5C11.7 6.8 11.7 7.1 11.6 7.7V7.9C11.5 8.1 11.5 8.4 11.4 8.7C11.1 7.8 11.1 7.1 11.3 6.7M10.1 14.3H10C10.1 14 10.3 13.7 10.5 13.3C10.9 12.5 11.3 11.7 11.5 11C11.9 11.9 12.4 12.6 13 13.1C13.1 13.2 13.3 13.3 13.4 13.4C12.5 13.5 11.3 13.8 10.1 14.3M17.3 14.2H17.1C16.7 14.2 16 14 15.3 13.7C15.4 13.6 15.5 13.6 15.5 13.6C16.9 13.6 17.2 13.8 17.3 13.9L17.4 14C17.4 14.2 17.4 14.2 17.3 14.2Z"; -var mdiFilePdfOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M10.92,12.31C10.68,11.54 10.15,9.08 11.55,9.04C12.95,9 12.03,12.16 12.03,12.16C12.42,13.65 14.05,14.72 14.05,14.72C14.55,14.57 17.4,14.24 17,15.72C16.57,17.2 13.5,15.81 13.5,15.81C11.55,15.95 10.09,16.47 10.09,16.47C8.96,18.58 7.64,19.5 7.1,18.61C6.43,17.5 9.23,16.07 9.23,16.07C10.68,13.72 10.9,12.35 10.92,12.31M11.57,13.15C11.17,14.45 10.37,15.84 10.37,15.84C11.22,15.5 13.08,15.11 13.08,15.11C11.94,14.11 11.59,13.16 11.57,13.15M14.71,15.32C14.71,15.32 16.46,15.97 16.5,15.71C16.57,15.44 15.17,15.2 14.71,15.32M9.05,16.81C8.28,17.11 7.54,18.39 7.72,18.39C7.9,18.4 8.63,17.79 9.05,16.81M11.57,11.26C11.57,11.21 12,9.58 11.57,9.53C11.27,9.5 11.56,11.22 11.57,11.26Z"; -var mdiFilePercent = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M7.37,20L15,12.35L13.65,11L6,18.65L7.37,20M13,9H18.5L13,3.5V9M7.5,11A1.5,1.5 0 0,0 6,12.5A1.5,1.5 0 0,0 7.5,14A1.5,1.5 0 0,0 9,12.5A1.5,1.5 0 0,0 7.5,11M13.5,17A1.5,1.5 0 0,0 12,18.5A1.5,1.5 0 0,0 13.5,20A1.5,1.5 0 0,0 15,18.5A1.5,1.5 0 0,0 13.5,17Z"; -var mdiFilePercentOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M10 11.5C10 12.33 9.33 13 8.5 13S7 12.33 7 11.5 7.67 10 8.5 10 10 10.67 10 11.5M16 17.5C16 18.33 15.33 19 14.5 19S13 18.33 13 17.5 13.67 16 14.5 16 16 16.67 16 17.5M16 11.35L8.37 19L7 17.65L14.65 10L16 11.35Z"; -var mdiFilePhone = "M14 2H6C4.89 2 4 2.89 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M17 19.44C17 19.75 16.75 20 16.44 20C11.23 20 7 15.77 7 10.56C7 10.25 7.25 10 7.56 10H9.5C9.81 10 10.06 10.25 10.06 10.56C10.06 11.25 10.17 11.92 10.37 12.54C10.43 12.73 10.39 12.95 10.23 13.11L9 14.33C9.81 15.9 11.1 17.19 12.67 18L13.9 16.77C14.05 16.61 14.27 16.57 14.46 16.63C15.08 16.83 15.75 16.95 16.45 16.95C16.75 16.95 17 17.19 17 17.5V19.44M13 9V3.5L18.5 9H13Z"; -var mdiFilePhoneOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M9 13.33C9.81 14.9 11.1 16.19 12.67 17L13.89 15.77C14.05 15.61 14.27 15.57 14.46 15.63C15.08 15.83 15.75 15.95 16.44 15.95C16.75 15.95 17 16.19 17 16.5V18.45C17 18.75 16.75 19 16.44 19C11.23 19 7 14.77 7 9.56C7 9.25 7.25 9 7.56 9H9.5C9.81 9 10.06 9.25 10.06 9.56C10.06 10.25 10.17 10.92 10.37 11.54C10.43 11.73 10.39 11.95 10.23 12.11L9 13.33Z"; -var mdiFilePlus = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M11,15V12H9V15H6V17H9V20H11V17H14V15H11Z"; -var mdiFilePlusOutline = "M12,14V11H10V14H7V16H10V19H12V16H15V14M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18"; -var mdiFilePowerpoint = "M12.6,12.3H10.6V15.5H12.7C13.3,15.5 13.6,15.3 13.9,15C14.2,14.7 14.3,14.4 14.3,13.9C14.3,13.4 14.2,13.1 13.9,12.8C13.6,12.5 13.2,12.3 12.6,12.3M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M15.2,16C14.6,16.5 14.1,16.7 12.8,16.7H10.6V20H9V11H12.8C14.1,11 14.7,11.3 15.2,11.8C15.8,12.4 16,13 16,13.9C16,14.8 15.8,15.5 15.2,16M13,9V3.5L18.5,9H13Z"; -var mdiFilePowerpointBox = "M9.8,13.4H12.3C13.8,13.4 14.46,13.12 15.1,12.58C15.74,12.03 16,11.25 16,10.23C16,9.26 15.75,8.5 15.1,7.88C14.45,7.29 13.83,7 12.3,7H8V17H9.8V13.4M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M9.8,12V8.4H12.1C12.76,8.4 13.27,8.65 13.6,9C13.93,9.35 14.1,9.72 14.1,10.24C14.1,10.8 13.92,11.19 13.6,11.5C13.28,11.81 12.9,12 12.22,12H9.8Z"; -var mdiFilePowerpointBoxOutline = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M5 5H19V19H5V5M15.1 7.88C14.45 7.29 13.83 7 12.3 7H8V17H9.8V13.4H12.3C13.8 13.4 14.46 13.12 15.1 12.58C15.74 12.03 16 11.25 16 10.23C16 9.26 15.75 8.5 15.1 7.88M13.6 11.5C13.28 11.81 12.9 12 12.22 12H9.8V8.4H12.1C12.76 8.4 13.27 8.65 13.6 9C13.93 9.35 14.1 9.72 14.1 10.24C14.1 10.8 13.92 11.19 13.6 11.5Z"; -var mdiFilePowerpointOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M15.2 10.8C14.7 10.3 14.1 10 12.8 10H9V19H10.6V15.7H12.8C14.1 15.7 14.6 15.5 15.2 15C15.8 14.5 16 13.8 16 12.9C16 12 15.8 11.4 15.2 10.8M13.9 14C13.6 14.3 13.3 14.5 12.7 14.5H10.6V11.3H12.6C13.2 11.3 13.6 11.5 13.9 11.8C14.2 12.1 14.3 12.4 14.3 12.9S14.2 13.7 13.9 14Z"; -var mdiFilePresentationBox = "M19,16H5V8H19M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiFileQuestion = "M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M13,3.5L18.5,9H13V3.5M12,11A3,3 0 0,1 15,14C15,15.88 12.75,16.06 12.75,17.75H11.25C11.25,15.31 13.5,15.5 13.5,14A1.5,1.5 0 0,0 12,12.5A1.5,1.5 0 0,0 10.5,14H9A3,3 0 0,1 12,11M11.25,18.5H12.75V20H11.25V18.5Z"; -var mdiFileQuestionOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M15 13C15 14.89 12.75 15.07 12.75 16.76H11.25C11.25 14.32 13.5 14.5 13.5 13C13.5 12.18 12.83 11.5 12 11.5S10.5 12.18 10.5 13H9C9 11.35 10.34 10 12 10S15 11.35 15 13M12.75 17.5V19H11.25V17.5H12.75Z"; -var mdiFileRefresh = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M13 9H18.5L13 3.5V9M6 2H14L20 8V12.17C19.5 12.06 19 12 18.5 12C14.91 12 12 14.91 12 18.5C12 19.79 12.37 21 13 22H6C4.88 22 4 21.1 4 20L4 4C4 2.89 4.89 2 6 2Z"; -var mdiFileRefreshOutline = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M14 2L20 8V12.17C19.5 12.06 19 12 18.5 12L18 12V9H13V4H6V20H12.17C12.34 20.72 12.63 21.39 13 22H6C4.9 22 4 21.1 4 20V4C4 2.9 4.9 2 6 2H14Z"; -var mdiFileRemove = "M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M13,9H18.5L13,3.5V9M10,14.59L7.88,12.46L6.46,13.88L8.59,16L6.46,18.12L7.88,19.54L10,17.41L12.12,19.54L13.54,18.12L11.41,16L13.54,13.88L12.12,12.46L10,14.59Z"; -var mdiFileRemoveOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M11.95 15.46L14.08 17.58L12.66 19L10.54 16.87L8.42 19L7 17.58L9.13 15.46L7 13.34L8.42 11.92L10.54 14.05L12.66 11.92L14.08 13.34L11.95 15.46Z"; -var mdiFileReplace = "M14,12H19.5L14,6.5V12M8,5H15L21,11V21A2,2 0 0,1 19,23H8C6.89,23 6,22.1 6,21V18H11V20L15,17L11,14V16H6V7A2,2 0 0,1 8,5M13.5,3H4V16H6V18H4A2,2 0 0,1 2,16V3A2,2 0 0,1 4,1H11.5L13.5,3Z"; -var mdiFileReplaceOutline = "M14,3L12,1H4A2,2 0 0,0 2,3V15A2,2 0 0,0 4,17H11V19L15,16L11,13V15H4V3H14M21,10V21A2,2 0 0,1 19,23H8A2,2 0 0,1 6,21V19H8V21H19V12H14V7H8V13H6V7A2,2 0 0,1 8,5H16L21,10Z"; -var mdiFileRestore = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12,18C9.95,18 8.19,16.76 7.42,15H9.13C9.76,15.9 10.81,16.5 12,16.5A3.5,3.5 0 0,0 15.5,13A3.5,3.5 0 0,0 12,9.5C10.65,9.5 9.5,10.28 8.9,11.4L10.5,13H6.5V9L7.8,10.3C8.69,8.92 10.23,8 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18Z"; -var mdiFileRestoreOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13L18 9V20M17 13.24C17 15.86 14.87 18 12.24 18C10.29 18 8.61 16.82 7.88 15.14H9.5C10.11 16 11.11 16.57 12.24 16.57C14.08 16.57 15.57 15.07 15.57 13.24S14.08 9.9 12.24 9.9C10.95 9.9 9.86 10.65 9.29 11.71L10.81 13.24H7V9.43L8.24 10.67C9.09 9.35 10.55 8.5 12.24 8.5C14.87 8.47 17 10.61 17 13.24Z"; -var mdiFileSearch = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H13C12.59,21.75 12.2,21.44 11.86,21.1C9.22,18.67 9.05,14.56 11.5,11.92C13.69,9.5 17.33,9.13 20,11V8L14,2M13,9V3.5L18.5,9H13M20.31,18.9C21.64,16.79 21,14 18.91,12.68C16.8,11.35 14,12 12.69,14.08C11.35,16.19 12,18.97 14.09,20.3C15.55,21.23 17.41,21.23 18.88,20.32L22,23.39L23.39,22L20.31,18.9M16.5,19A2.5,2.5 0 0,1 14,16.5A2.5,2.5 0 0,1 16.5,14A2.5,2.5 0 0,1 19,16.5A2.5,2.5 0 0,1 16.5,19Z"; -var mdiFileSearchOutline = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H13C12.59,21.75 12.2,21.44 11.86,21.1C11.53,20.77 11.25,20.4 11,20H6V4H13V9H18V10.18C18.71,10.34 19.39,10.61 20,11V8L14,2M20.31,18.9C21.64,16.79 21,14 18.91,12.68C16.8,11.35 14,12 12.69,14.08C11.35,16.19 12,18.97 14.09,20.3C15.55,21.23 17.41,21.23 18.88,20.32L22,23.39L23.39,22L20.31,18.9M16.5,19A2.5,2.5 0 0,1 14,16.5A2.5,2.5 0 0,1 16.5,14A2.5,2.5 0 0,1 19,16.5A2.5,2.5 0 0,1 16.5,19Z"; -var mdiFileSend = "M14,2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12.54,19.37V17.37H8.54V15.38H12.54V13.38L15.54,16.38L12.54,19.37M13,9V3.5L18.5,9H13Z"; -var mdiFileSendOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M12.54 18.5V16.5H8.54V14.5H12.54V12.5L15.54 15.5L12.54 18.5Z"; -var mdiFileSettings = "M6 0C4.89 0 4 .89 4 2V18A2 2 0 0 0 6 20H18A2 2 0 0 0 20 18V6L14 0H6M13 1.5L18.5 7H13V1.5M7 22V24H9V22H7M11 22V24H13V22H11M15 22V24H17V22H15Z"; -var mdiFileSettingsOutline = "M6 0A2 2 0 0 0 4 2V18A2 2 0 0 0 6 20H18A2 2 0 0 0 20 18V6L14 0H6M6 2H13V7H18V18H6V2M7 22V24H9V22H7M11 22V24H13V22H11M15 22V24H17V22H15Z"; -var mdiFileStar = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M14.5 18.9L12 17.5L9.5 19L10.2 16.2L8 14.3L10.9 14.1L12 11.4L13.1 14L16 14.2L13.8 16.1L14.5 18.9M13 9V3.5L18.5 9H13Z"; -var mdiFileStarOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20M9.5 18L10.2 15.2L8 13.3L10.9 13.1L12 10.4L13.1 13L16 13.2L13.8 15.1L14.5 17.9L12 16.5L9.5 18Z"; -var mdiFileSwap = "M14 2H6A2 2 0 0 0 4 4V20A2 2 0 0 0 6 22H18A2 2 0 0 0 20 20V8M14 18V16H10V18L7 15L10 12V14H14V12L17 15M13 9V3.5L18.5 9Z"; -var mdiFileSwapOutline = "M17 15L14 12V14H10V12L7 15L10 18V16H14V18M14 2H6A2 2 0 0 0 4 4V20A2 2 0 0 0 6 22H18A2 2 0 0 0 20 20V8L14 2M18 20H6V4H13V9H18Z"; -var mdiFileSync = "M11 17.5C11 13.9 13.9 11 17.5 11C18.4 11 19.2 11.2 20 11.5V8L14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H12.8C11.7 20.8 11 19.2 11 17.5M13 3.5L18.5 9H13V3.5M17 12V13.5C19.2 13.5 21 15.3 21 17.5C21 18.3 20.8 19.1 20.3 19.7L19.2 18.6C19.4 18.3 19.5 17.9 19.5 17.5C19.5 16.1 18.4 15 17 15V16.5L14.8 14.3L17 12M17 23V21.5C14.8 21.5 13 19.7 13 17.5C13 16.7 13.2 15.9 13.7 15.3L14.8 16.4C14.6 16.7 14.5 17.1 14.5 17.5C14.5 18.9 15.6 20 17 20V18.5L19.2 20.7L17 23Z"; -var mdiFileSyncOutline = "M12.8 22H6C4.9 22 4 21.1 4 20V4C4 2.9 4.9 2 6 2H14L20 8V11.5C19.4 11.2 18.7 11.1 18 11V9H13V4H6V20H11.5C11.8 20.7 12.3 21.4 12.8 22M17 12L14.8 14.2L17 16.4V15C18.4 15 19.5 16.1 19.5 17.5C19.5 17.9 19.4 18.3 19.2 18.6L20.3 19.7C20.7 19.1 21 18.3 21 17.5C21 15.3 19.2 13.5 17 13.5V12M19.2 20.8L17 18.5V20C15.6 20 14.5 18.9 14.5 17.5C14.5 17.1 14.6 16.7 14.8 16.4L13.7 15.3C13.3 15.9 13 16.7 13 17.5C13 19.7 14.8 21.5 17 21.5V23L19.2 20.8Z"; -var mdiFileTable = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M10,19H7V17H10V19M10,16H7V14H10V16M10,13H7V11H10V13M14,19H11V17H14V19M14,16H11V14H14V16M14,13H11V11H14V13M13,9V3.5L18.5,9H13Z"; -var mdiFileTableBox = "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M9 18H6V16H9V18M9 15H6V13H9V15M9 12H6V10H9V12M13 18H10V16H13V18M13 15H10V13H13V15M13 12H10V10H13V12Z"; -var mdiFileTableBoxMultiple = "M3 5V21H19V23H3C1.9 23 1 22.1 1 21V5H3M21 1H7C5.89 1 5 1.89 5 3V17C5 18.11 5.9 19 7 19H21C22.11 19 23 18.11 23 17V3C23 1.89 22.1 1 21 1M11 16H8V14H11V16M11 13H8V11H11V13M11 10H8V8H11V10M15 16H12V14H15V16M15 13H12V11H15V13M15 10H12V8H15V10Z"; -var mdiFileTableBoxMultipleOutline = "M3 5V21H19V23H3C1.9 23 1 22.1 1 21V5H3M21 1H7C5.89 1 5 1.89 5 3V17C5 18.1 5.9 19 7 19H21C22.11 19 23 18.11 23 17V3C23 1.9 22.1 1 21 1M21 17H7V3H21V17M11 14H8V16H11V14M15 14H12V16H15V14M11 11H8V13H11V11M15 11H12V13H15V11M11 8H8V10H11V8M15 8H12V10H15V8Z"; -var mdiFileTableBoxOutline = "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3M19 19H5V5H19V19M9 18H6V16H9V18M13 18H10V16H13V18M9 15H6V13H9V15M13 15H10V13H13V15M9 12H6V10H9V12M13 12H10V10H13V12Z"; -var mdiFileTableOutline = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20M10,13H7V11H10V13M14,13H11V11H14V13M10,16H7V14H10V16M14,16H11V14H14V16M10,19H7V17H10V19M14,19H11V17H14V19Z"; -var mdiFileTree = "M3,3H9V7H3V3M15,10H21V14H15V10M15,17H21V21H15V17M13,13H7V18H13V20H7L5,20V9H7V11H13V13Z"; -var mdiFileTreeOutline = "M12 13H7V18H12V20H5V10H7V11H12V13M8 4V6H4V4H8M10 2H2V8H10V2M20 11V13H16V11H20M22 9H14V15H22V9M20 18V20H16V18H20M22 16H14V22H22V16Z"; -var mdiFileUndo = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M12.16,14.31C10.6,14.31 9.19,14.89 8.11,15.83L6,13.72V19H11.28L9.15,16.88C9.97,16.2 11,15.78 12.16,15.78C14.23,15.78 16,17.13 16.61,19L18,18.54C17.19,16.09 14.88,14.31 12.16,14.31Z"; -var mdiFileUndoOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17 17.61L15.84 18C15.33 16.44 13.86 15.31 12.13 15.31C11.17 15.31 10.31 15.66 9.63 16.23L11.4 18H7V13.6L8.76 15.36C9.66 14.57 10.83 14.09 12.13 14.09C14.4 14.09 16.33 15.57 17 17.61Z"; -var mdiFileUpload = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13.5,16V19H10.5V16H8L12,12L16,16H13.5M13,9V3.5L18.5,9H13Z"; -var mdiFileUploadOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M12,12L16,16H13.5V19H10.5V16H8L12,12Z"; -var mdiFileVideo = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M17,19V13L14,15.2V13H7V19H14V16.8L17,19Z"; -var mdiFileVideoOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M16,18L13.5,16.3V18H8V13H13.5V14.7L16,13V18Z"; -var mdiFileWord = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M15.2,20H13.8L12,13.2L10.2,20H8.8L6.6,11H8.1L9.5,17.8L11.3,11H12.6L14.4,17.8L15.8,11H17.3L15.2,20M13,9V3.5L18.5,9H13Z"; -var mdiFileWordBox = "M15.5,17H14L12,9.5L10,17H8.5L6.1,7H7.8L9.34,14.5L11.3,7H12.7L14.67,14.5L16.2,7H17.9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiFileWordBoxOutline = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M5 5H19V19H5V5M17.9 7L15.5 17H14L12 9.5L10 17H8.5L6.1 7H7.8L9.34 14.5L11.3 7H12.7L14.67 14.5L16.2 7H17.9Z"; -var mdiFileWordOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17.35 10L15.25 19H13.85L12.05 12.21L10.25 19H8.85L6.65 10H8.15L9.55 16.81L11.35 10H12.65L14.45 16.81L15.85 10H17.35Z"; -var mdiFilm = "M3.5,3H5V1.8C5,1.36 5.36,1 5.8,1H10.2C10.64,1 11,1.36 11,1.8V3H12.5A1.5,1.5 0 0,1 14,4.5V5H22V20H14V20.5A1.5,1.5 0 0,1 12.5,22H3.5A1.5,1.5 0 0,1 2,20.5V4.5A1.5,1.5 0 0,1 3.5,3M18,7V9H20V7H18M14,7V9H16V7H14M10,7V9H12V7H10M14,16V18H16V16H14M18,16V18H20V16H18M10,16V18H12V16H10Z"; -var mdiFilmstrip = "M18,9H16V7H18M18,13H16V11H18M18,17H16V15H18M8,9H6V7H8M8,13H6V11H8M8,17H6V15H8M18,3V5H16V3H8V5H6V3H4V21H6V19H8V21H16V19H18V21H20V3H18Z"; -var mdiFilmstripBox = "M19 3C20.1 3 21 3.9 21 5V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19M7 18V16H5V18H7M7 13V11H5V13H7M7 8V6H5V8H7M19 18V16H17V18H19M19 13V11H17V13H19M19 8V6H17V8H19Z"; -var mdiFilmstripBoxMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M10,15H8V13H10V15M10,11H8V9H10V11M10,7H8V5H10V7M20,15H18V13H20V15M20,11H18V9H20V11M20,7H18V5H20V7Z"; -var mdiFilmstripOff = "M1,4.27L2.28,3L21,21.72L19.73,23L16,19.27V21H8V19H6V21H4V7.27L1,4.27M18,9V7H16V9H18M18,13V11H16V13H18M18,15H16.82L6.82,5H8V3H16V5H18V3H20V18.18L18,16.18V15M8,13V11.27L7.73,11H6V13H8M8,17V15H6V17H8M6,3V4.18L4.82,3H6Z"; -var mdiFilter = "M14,12V19.88C14.04,20.18 13.94,20.5 13.71,20.71C13.32,21.1 12.69,21.1 12.3,20.71L10.29,18.7C10.06,18.47 9.96,18.16 10,17.87V12H9.97L4.21,4.62C3.87,4.19 3.95,3.56 4.38,3.22C4.57,3.08 4.78,3 5,3V3H19V3C19.22,3 19.43,3.08 19.62,3.22C20.05,3.56 20.13,4.19 19.79,4.62L14.03,12H14Z"; -var mdiFilterMenu = "M11 11L16.76 3.62A1 1 0 0 0 16.59 2.22A1 1 0 0 0 16 2H2A1 1 0 0 0 1.38 2.22A1 1 0 0 0 1.21 3.62L7 11V16.87A1 1 0 0 0 7.29 17.7L9.29 19.7A1 1 0 0 0 10.7 19.7A1 1 0 0 0 11 18.87V11M13 16L18 21L23 16Z"; -var mdiFilterMenuOutline = "M12 18.88A1 1 0 0 1 11.71 19.71A1 1 0 0 1 10.3 19.71L6.3 15.71A1 1 0 0 1 6 14.87V9.75L1.21 3.62A1 1 0 0 1 1.38 2.22A1 1 0 0 1 2 2H16A1 1 0 0 1 16.62 2.22A1 1 0 0 1 16.79 3.62L12 9.75V18.88M4 4L8 9.06V14.58L10 16.58V9.05L14 4M13 16L18 21L23 16Z"; -var mdiFilterMinus = "M12 12V19.88C12.04 20.18 11.94 20.5 11.71 20.71C11.32 21.1 10.69 21.1 10.3 20.71L8.29 18.7C8.06 18.47 7.96 18.16 8 17.86V12H7.97L2.21 4.62C1.87 4.19 1.95 3.56 2.38 3.22C2.57 3.08 2.78 3 3 3V3H17V3C17.22 3 17.43 3.08 17.62 3.22C18.05 3.56 18.13 4.19 17.79 4.62L12.03 12H12M15 17H23V19H15V17Z"; -var mdiFilterMinusOutline = "M15 17H23V19H15V17M13 19.88C13.04 20.18 12.94 20.5 12.72 20.71C12.32 21.1 11.69 21.1 11.3 20.71L7.29 16.7C7.06 16.47 6.96 16.16 7 15.87V10.75L2.21 4.62C1.87 4.19 1.95 3.56 2.38 3.22C2.57 3.08 2.78 3 3 3V3H17V3C17.22 3 17.43 3.08 17.62 3.22C18.05 3.56 18.13 4.19 17.79 4.62L13 10.75V19.88M5.04 5L9 10.07V15.58L11 17.58V10.05L14.96 5H5.04Z"; -var mdiFilterOff = "M2.39 1.73L1.11 3L9.5 11.37L9.97 12H10V17.87C9.96 18.16 10.06 18.47 10.29 18.7L12.3 20.71C12.69 21.1 13.32 21.1 13.71 20.71C13.94 20.5 14.04 20.18 14 19.88V15.89L20.84 22.73L22.11 21.46L14 13.35L9.41 8.76L4.15 3.5L2.39 1.73M6.21 3L14.54 11.34L19.79 4.62C20.13 4.19 20.05 3.56 19.62 3.22C19.43 3.08 19.22 3 19 3H6.21Z"; -var mdiFilterOffOutline = "M2.39 1.73L1.11 3L9 10.89V15.87C8.96 16.16 9.06 16.47 9.29 16.7L13.3 20.71C13.69 21.1 14.32 21.1 14.71 20.71C14.94 20.5 15.04 20.18 15 19.88V16.89L20.84 22.73L22.11 21.46L15 14.35V14.34L13 12.35L11 10.34L4.15 3.5L2.39 1.73M6.21 3L8.2 5H16.96L13.11 9.91L15 11.8V10.75L19.79 4.62C20.13 4.19 20.05 3.56 19.62 3.22C19.43 3.08 19.22 3 19 3H6.21M11 12.89L13 14.89V17.58L11 15.58V12.89Z"; -var mdiFilterOutline = "M15,19.88C15.04,20.18 14.94,20.5 14.71,20.71C14.32,21.1 13.69,21.1 13.3,20.71L9.29,16.7C9.06,16.47 8.96,16.16 9,15.87V10.75L4.21,4.62C3.87,4.19 3.95,3.56 4.38,3.22C4.57,3.08 4.78,3 5,3V3H19V3C19.22,3 19.43,3.08 19.62,3.22C20.05,3.56 20.13,4.19 19.79,4.62L15,10.75V19.88M7.04,5L11,10.06V15.58L13,17.58V10.05L16.96,5H7.04Z"; -var mdiFilterPlus = "M12 12V19.88C12.04 20.18 11.94 20.5 11.71 20.71C11.32 21.1 10.69 21.1 10.3 20.71L8.29 18.7C8.06 18.47 7.96 18.16 8 17.87V12H7.97L2.21 4.62C1.87 4.19 1.95 3.56 2.38 3.22C2.57 3.08 2.78 3 3 3H17C17.22 3 17.43 3.08 17.62 3.22C18.05 3.56 18.13 4.19 17.79 4.62L12.03 12H12M15 17H18V14H20V17H23V19H20V22H18V19H15V17Z"; -var mdiFilterPlusOutline = "M15 17H18V14H20V17H23V19H20V22H18V19H15V17M13 19.88C13.04 20.18 12.94 20.5 12.72 20.71C12.32 21.1 11.69 21.1 11.3 20.71L7.29 16.7C7.06 16.47 6.96 16.16 7 15.87V10.75L2.21 4.62C1.87 4.19 1.95 3.56 2.38 3.22C2.57 3.08 2.78 3 3 3V3H17V3C17.22 3 17.43 3.08 17.62 3.22C18.05 3.56 18.13 4.19 17.79 4.62L13 10.75V19.88M5.04 5L9 10.07V15.58L11 17.58V10.05L14.96 5H5.04Z"; -var mdiFilterRemove = "M14.76,20.83L17.6,18L14.76,15.17L16.17,13.76L19,16.57L21.83,13.76L23.24,15.17L20.43,18L23.24,20.83L21.83,22.24L19,19.4L16.17,22.24L14.76,20.83M12,12V19.88C12.04,20.18 11.94,20.5 11.71,20.71C11.32,21.1 10.69,21.1 10.3,20.71L8.29,18.7C8.06,18.47 7.96,18.16 8,17.87V12H7.97L2.21,4.62C1.87,4.19 1.95,3.56 2.38,3.22C2.57,3.08 2.78,3 3,3V3H17V3C17.22,3 17.43,3.08 17.62,3.22C18.05,3.56 18.13,4.19 17.79,4.62L12.03,12H12Z"; -var mdiFilterRemoveOutline = "M14.73,20.83L17.58,18L14.73,15.17L16.15,13.76L19,16.57L21.8,13.76L23.22,15.17L20.41,18L23.22,20.83L21.8,22.24L19,19.4L16.15,22.24L14.73,20.83M13,19.88C13.04,20.18 12.94,20.5 12.71,20.71C12.32,21.1 11.69,21.1 11.3,20.71L7.29,16.7C7.06,16.47 6.96,16.16 7,15.87V10.75L2.21,4.62C1.87,4.19 1.95,3.56 2.38,3.22C2.57,3.08 2.78,3 3,3V3H17V3C17.22,3 17.43,3.08 17.62,3.22C18.05,3.56 18.13,4.19 17.79,4.62L13,10.75V19.88M5.04,5L9,10.06V15.58L11,17.58V10.05L14.96,5H5.04Z"; -var mdiFilterVariant = "M6,13H18V11H6M3,6V8H21V6M10,18H14V16H10V18Z"; -var mdiFilterVariantMinus = "M21 8H3V6H21V8M13.81 16H10V18H13.09C13.21 17.28 13.46 16.61 13.81 16M18 11H6V13H18V11M23 18H15V20H23V18Z"; -var mdiFilterVariantPlus = "M21 8H3V6H21V8M13.81 16H10V18H13.09C13.21 17.28 13.46 16.61 13.81 16M18 11H6V13H18V11M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; -var mdiFilterVariantRemove = "M21 8H3V6H21V8M13.81 16H10V18H13.09C13.21 17.28 13.46 16.61 13.81 16M18 11H6V13H18V11M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z"; -var mdiFinance = "M6,16.5L3,19.44V11H6M11,14.66L9.43,13.32L8,14.64V7H11M16,13L13,16V3H16M18.81,12.81L17,11H22V16L20.21,14.21L13,21.36L9.53,18.34L5.75,22H3L9.47,15.66L13,18.64"; -var mdiFindReplace = "M11,6C12.38,6 13.63,6.56 14.54,7.46L12,10H18V4L15.95,6.05C14.68,4.78 12.93,4 11,4C7.47,4 4.57,6.61 4.08,10H6.1C6.56,7.72 8.58,6 11,6M16.64,15.14C17.3,14.24 17.76,13.17 17.92,12H15.9C15.44,14.28 13.42,16 11,16C9.62,16 8.37,15.44 7.46,14.54L10,12H4V18L6.05,15.95C7.32,17.22 9.07,18 11,18C12.55,18 14,17.5 15.14,16.64L20,21.5L21.5,20L16.64,15.14Z"; -var mdiFingerprint = "M17.81,4.47C17.73,4.47 17.65,4.45 17.58,4.41C15.66,3.42 14,3 12,3C10.03,3 8.15,3.47 6.44,4.41C6.2,4.54 5.9,4.45 5.76,4.21C5.63,3.97 5.72,3.66 5.96,3.53C7.82,2.5 9.86,2 12,2C14.14,2 16,2.47 18.04,3.5C18.29,3.65 18.38,3.95 18.25,4.19C18.16,4.37 18,4.47 17.81,4.47M3.5,9.72C3.4,9.72 3.3,9.69 3.21,9.63C3,9.47 2.93,9.16 3.09,8.93C4.08,7.53 5.34,6.43 6.84,5.66C10,4.04 14,4.03 17.15,5.65C18.65,6.42 19.91,7.5 20.9,8.9C21.06,9.12 21,9.44 20.78,9.6C20.55,9.76 20.24,9.71 20.08,9.5C19.18,8.22 18.04,7.23 16.69,6.54C13.82,5.07 10.15,5.07 7.29,6.55C5.93,7.25 4.79,8.25 3.89,9.5C3.81,9.65 3.66,9.72 3.5,9.72M9.75,21.79C9.62,21.79 9.5,21.74 9.4,21.64C8.53,20.77 8.06,20.21 7.39,19C6.7,17.77 6.34,16.27 6.34,14.66C6.34,11.69 8.88,9.27 12,9.27C15.12,9.27 17.66,11.69 17.66,14.66A0.5,0.5 0 0,1 17.16,15.16A0.5,0.5 0 0,1 16.66,14.66C16.66,12.24 14.57,10.27 12,10.27C9.43,10.27 7.34,12.24 7.34,14.66C7.34,16.1 7.66,17.43 8.27,18.5C8.91,19.66 9.35,20.15 10.12,20.93C10.31,21.13 10.31,21.44 10.12,21.64C10,21.74 9.88,21.79 9.75,21.79M16.92,19.94C15.73,19.94 14.68,19.64 13.82,19.05C12.33,18.04 11.44,16.4 11.44,14.66A0.5,0.5 0 0,1 11.94,14.16A0.5,0.5 0 0,1 12.44,14.66C12.44,16.07 13.16,17.4 14.38,18.22C15.09,18.7 15.92,18.93 16.92,18.93C17.16,18.93 17.56,18.9 17.96,18.83C18.23,18.78 18.5,18.96 18.54,19.24C18.59,19.5 18.41,19.77 18.13,19.82C17.56,19.93 17.06,19.94 16.92,19.94M14.91,22C14.87,22 14.82,22 14.78,22C13.19,21.54 12.15,20.95 11.06,19.88C9.66,18.5 8.89,16.64 8.89,14.66C8.89,13.04 10.27,11.72 11.97,11.72C13.67,11.72 15.05,13.04 15.05,14.66C15.05,15.73 16,16.6 17.13,16.6C18.28,16.6 19.21,15.73 19.21,14.66C19.21,10.89 15.96,7.83 11.96,7.83C9.12,7.83 6.5,9.41 5.35,11.86C4.96,12.67 4.76,13.62 4.76,14.66C4.76,15.44 4.83,16.67 5.43,18.27C5.53,18.53 5.4,18.82 5.14,18.91C4.88,19 4.59,18.87 4.5,18.62C4,17.31 3.77,16 3.77,14.66C3.77,13.46 4,12.37 4.45,11.42C5.78,8.63 8.73,6.82 11.96,6.82C16.5,6.82 20.21,10.33 20.21,14.65C20.21,16.27 18.83,17.59 17.13,17.59C15.43,17.59 14.05,16.27 14.05,14.65C14.05,13.58 13.12,12.71 11.97,12.71C10.82,12.71 9.89,13.58 9.89,14.65C9.89,16.36 10.55,17.96 11.76,19.16C12.71,20.1 13.62,20.62 15.03,21C15.3,21.08 15.45,21.36 15.38,21.62C15.33,21.85 15.12,22 14.91,22Z"; -var mdiFingerprintOff = "M1.5,4.77L2.78,3.5L20.5,21.22L19.23,22.5L16.67,19.94C15.58,19.9 14.62,19.6 13.82,19.05C12.34,18.05 11.46,16.43 11.44,14.71L10.27,13.53C10.03,13.85 9.89,14.23 9.89,14.65C9.89,16.36 10.55,17.96 11.76,19.16C12.71,20.1 13.62,20.62 15.03,21C15.3,21.08 15.45,21.36 15.38,21.62C15.33,21.85 15.12,22 14.91,22H14.78C13.19,21.54 12.15,20.95 11.06,19.88C9.66,18.5 8.89,16.64 8.89,14.66C8.89,13.97 9.14,13.33 9.56,12.83L8.5,11.77C7.78,12.54 7.34,13.55 7.34,14.66C7.34,16.1 7.66,17.43 8.27,18.5C8.91,19.66 9.35,20.15 10.12,20.93C10.31,21.13 10.31,21.44 10.12,21.64C10,21.74 9.88,21.79 9.75,21.79C9.62,21.79 9.5,21.74 9.4,21.64C8.53,20.77 8.06,20.21 7.39,19C6.7,17.77 6.34,16.27 6.34,14.66C6.34,13.28 6.89,12 7.79,11.06L6.7,9.97C6.15,10.5 5.69,11.15 5.35,11.86C4.96,12.67 4.76,13.62 4.76,14.66C4.76,15.44 4.83,16.67 5.43,18.27C5.53,18.53 5.4,18.82 5.14,18.91C4.88,19 4.59,18.87 4.5,18.62C4,17.31 3.77,16 3.77,14.66C3.77,13.46 4,12.37 4.45,11.42C4.84,10.61 5.36,9.88 6,9.26L4.97,8.24C4.58,8.63 4.22,9.05 3.89,9.5C3.81,9.65 3.66,9.72 3.5,9.72L3.21,9.63C3,9.47 2.93,9.16 3.09,8.93C3.45,8.43 3.84,7.96 4.27,7.53L1.5,4.77M17.81,4.47L17.58,4.41C15.66,3.42 14,3 12,3C10.03,3 8.15,3.47 6.44,4.41L6.29,4.46L5.71,3.89C5.73,3.74 5.82,3.61 5.96,3.53C7.82,2.5 9.86,2 12,2C14.14,2 16,2.47 18.04,3.5C18.29,3.65 18.38,3.95 18.25,4.19C18.16,4.37 18,4.47 17.81,4.47M17.15,5.65C18.65,6.42 19.91,7.5 20.9,8.9C21.06,9.12 21,9.44 20.78,9.6C20.55,9.76 20.24,9.71 20.08,9.5C19.18,8.22 18.04,7.23 16.69,6.54C14.06,5.19 10.76,5.08 8.03,6.21L7.27,5.45C10.34,4.04 14.14,4.1 17.15,5.65M12,9.27C15.12,9.27 17.66,11.69 17.66,14.66A0.5,0.5 0 0,1 17.16,15.16L16.93,15.11L16.72,14.89L16.66,14.66C16.66,12.27 14.62,10.32 12.09,10.27L11.15,9.33L12,9.27M14.38,18.22C14.71,18.45 15.07,18.62 15.47,18.73L12.63,15.9C12.92,16.82 13.53,17.65 14.38,18.22M19.21,14.66C19.21,10.89 15.96,7.83 11.96,7.83C11.26,7.83 10.58,7.93 9.93,8.11L9.12,7.3C10,7 10.97,6.82 11.96,6.82C16.5,6.82 20.21,10.33 20.21,14.65C20.21,15.65 19.69,16.53 18.89,17.06L18.17,16.34C18.79,16 19.21,15.38 19.21,14.66Z"; -var mdiFire = "M17.66 11.2C17.43 10.9 17.15 10.64 16.89 10.38C16.22 9.78 15.46 9.35 14.82 8.72C13.33 7.26 13 4.85 13.95 3C13 3.23 12.17 3.75 11.46 4.32C8.87 6.4 7.85 10.07 9.07 13.22C9.11 13.32 9.15 13.42 9.15 13.55C9.15 13.77 9 13.97 8.8 14.05C8.57 14.15 8.33 14.09 8.14 13.93C8.08 13.88 8.04 13.83 8 13.76C6.87 12.33 6.69 10.28 7.45 8.64C5.78 10 4.87 12.3 5 14.47C5.06 14.97 5.12 15.47 5.29 15.97C5.43 16.57 5.7 17.17 6 17.7C7.08 19.43 8.95 20.67 10.96 20.92C13.1 21.19 15.39 20.8 17.03 19.32C18.86 17.66 19.5 15 18.56 12.72L18.43 12.46C18.22 12 17.66 11.2 17.66 11.2M14.5 17.5C14.22 17.74 13.76 18 13.4 18.1C12.28 18.5 11.16 17.94 10.5 17.28C11.69 17 12.4 16.12 12.61 15.23C12.78 14.43 12.46 13.77 12.33 13C12.21 12.26 12.23 11.63 12.5 10.94C12.69 11.32 12.89 11.7 13.13 12C13.9 13 15.11 13.44 15.37 14.8C15.41 14.94 15.43 15.08 15.43 15.23C15.46 16.05 15.1 16.95 14.5 17.5H14.5Z"; -var mdiFireAlert = "M15.66 11.2C15.43 10.9 15.15 10.64 14.89 10.38C14.22 9.78 13.46 9.35 12.82 8.72C11.33 7.26 11 4.85 11.95 3C11 3.23 10.17 3.75 9.46 4.32C6.87 6.4 5.85 10.07 7.07 13.22C7.11 13.32 7.15 13.42 7.15 13.55C7.15 13.77 7 13.97 6.8 14.05C6.57 14.15 6.33 14.09 6.14 13.93C6.08 13.88 6.04 13.83 6 13.76C4.87 12.33 4.69 10.28 5.45 8.64C3.78 10 2.87 12.3 3 14.47C3.06 14.97 3.12 15.47 3.29 15.97C3.43 16.57 3.7 17.17 4 17.7C5.08 19.43 6.95 20.67 8.96 20.92C11.1 21.19 13.39 20.8 15.03 19.32C16.86 17.66 17.5 15 16.56 12.72L16.43 12.46C16.22 12 15.66 11.2 15.66 11.2M12.5 17.5C12.22 17.74 11.76 18 11.4 18.1C10.28 18.5 9.16 17.94 8.5 17.28C9.69 17 10.4 16.12 10.61 15.23C10.78 14.43 10.46 13.77 10.33 13C10.21 12.26 10.23 11.63 10.5 10.94C10.69 11.32 10.89 11.7 11.13 12C11.9 13 13.11 13.44 13.37 14.8C13.41 14.94 13.43 15.08 13.43 15.23C13.46 16.05 13.1 16.95 12.5 17.5H12.5M21 13H19V7H21V13M21 17H19V15H21V17Z"; -var mdiFireExtinguisher = "M10.5,7H11.75L12,5H10.25L6,7.5V9H4V6.5L10,3H12V2H14V3H16L17,2.5V5.5L16,5H14L14.25,7H15.5A1.5,1.5 0 0,1 17,8.5V22H9V8.5A1.5,1.5 0 0,1 10.5,7Z"; -var mdiFireHydrant = "M5 15V14H4V12H5V11H7V15H5M19 12V11H17V15H19V14H20V12H19M18 6H15.86C15.5 4.6 14.4 3.5 13 3.14V2H11V3.14C9.6 3.5 8.5 4.6 8.14 6H6V8H18V6M18 22H6C6 20.9 6.9 20 8 20V9H16V20C17.11 20 18 20.9 18 22M10 13C10 14.11 10.9 15 12 15S14 14.11 14 13 13.11 11 12 11 10 11.9 10 13Z"; -var mdiFireHydrantAlert = "M22 7H20V13H22V7M22 15H20V17H22V15M3 15V14H2V12H3V11H5V15H3M17 12V11H15V15H17V14H18V12H17M16 6H13.86C13.5 4.6 12.4 3.5 11 3.14V2H9V3.14C7.6 3.5 6.5 4.6 6.14 6H4V8H16V6M16 22H4C4 20.9 4.89 20 6 20V9H14V20C15.11 20 16 20.9 16 22M8 13C8 14.11 8.9 15 10 15S12 14.11 12 13 11.11 11 10 11 8 11.9 8 13Z"; -var mdiFireHydrantOff = "M20.84 22.73L22.11 21.46L2.39 1.73L1.11 3L8 9.89V20C6.9 20 6 20.9 6 22H18C18 20.9 17.11 20 16 20V17.89L20.84 22.73M10.22 12.11L12.89 14.78C12.62 14.92 12.32 15 12 15C10.9 15 10 14.11 10 13C10 12.68 10.08 12.38 10.22 12.11M11.2 8L8.44 5.24C8.94 4.21 9.87 3.43 11 3.14V2H13V3.14C14.4 3.5 15.5 4.6 15.86 6H18V8H11.2M19 11V12H20V14H19V15H18.2L17 13.8V11H19M5 15V14H4V12H5V11H7V15H5M16 12.8L12.2 9H16V12.8Z"; -var mdiFireOff = "M22.11 21.46L2.39 1.73L1.11 3L7.09 9C5.66 10.36 4.88 12.47 5 14.47C5.06 14.97 5.12 15.47 5.29 15.97C5.43 16.57 5.7 17.17 6 17.7C7.08 19.43 8.95 20.67 10.96 20.92C13.1 21.19 15.39 20.8 17.03 19.32C17.1 19.26 17.15 19.18 17.22 19.11L20.84 22.73L22.11 21.46M8.8 14.05C8.57 14.15 8.33 14.09 8.14 13.93C8.08 13.88 8.04 13.83 8 13.76C7 12.47 6.74 10.69 7.26 9.15L8.58 10.47C8.58 11.4 8.73 12.33 9.07 13.22C9.11 13.32 9.15 13.42 9.15 13.55C9.15 13.77 9 13.97 8.8 14.05M14.5 17.5C14.22 17.74 13.76 18 13.4 18.1C12.28 18.5 11.16 17.94 10.5 17.28C11.69 17 12.4 16.12 12.61 15.23C12.66 15 12.66 14.76 12.64 14.53L15 16.88C14.85 17.11 14.69 17.33 14.5 17.5M18.92 15.72L9.65 6.46C10.12 5.65 10.72 4.92 11.46 4.32C12.17 3.75 13 3.23 13.95 3C13 4.85 13.33 7.26 14.82 8.72C15.46 9.35 16.22 9.78 16.89 10.38C17.15 10.64 17.43 10.9 17.66 11.2C17.66 11.2 18.22 12 18.43 12.46L18.56 12.72C18.96 13.69 19.06 14.72 18.92 15.72Z"; -var mdiFireTruck = "M17.04,2C16.85,2 16.66,2.04 16.5,2.14L5.59,8.5H9.55L17.5,3.86C18,3.58 18.13,2.97 17.85,2.5C17.68,2.2 17.38,2 17.04,2M16,8V10H3A2,2 0 0,0 1,12H2V15H1V19H3A3,3 0 0,0 6,22A3,3 0 0,0 9,19H15A3,3 0 0,0 18,22A3,3 0 0,0 21,19H23V12.5L19.5,8H16M18,9.5H19L21.5,12.5V13.5H18V9.5M4,12H7V15H4V12M9,12H12V15H9V12M14,12H16V15H14V12M6,17.5A1.5,1.5 0 0,1 7.5,19A1.5,1.5 0 0,1 6,20.5A1.5,1.5 0 0,1 4.5,19A1.5,1.5 0 0,1 6,17.5M18,17.5A1.5,1.5 0 0,1 19.5,19A1.5,1.5 0 0,1 18,20.5A1.5,1.5 0 0,1 16.5,19A1.5,1.5 0 0,1 18,17.5Z"; -var mdiFirebase = "M20,18.69L12.7,22.74C12.2,23 11.7,23 11.2,22.74L4,18.69L17.05,5.54L17.4,5.44C17.7,5.44 17.87,5.57 17.9,5.84L20,18.69M9.35,5.74L4.8,13.29L6.7,1.34C6.73,1.07 6.9,0.94 7.2,0.94C7.4,0.94 7.53,1 7.6,1.19L9.75,5.14L9.35,5.74M13.85,7L4.3,16.59L11.55,4.29C11.65,4.09 11.8,4 12,4C12.2,4 12.33,4.09 12.4,4.29L13.85,7Z"; -var mdiFirefox = "M9.27 7.94C9.27 7.94 9.27 7.94 9.27 7.94M6.85 6.74C6.86 6.74 6.86 6.74 6.85 6.74M21.28 8.6C20.85 7.55 19.96 6.42 19.27 6.06C19.83 7.17 20.16 8.28 20.29 9.1L20.29 9.12C19.16 6.3 17.24 5.16 15.67 2.68C15.59 2.56 15.5 2.43 15.43 2.3C15.39 2.23 15.36 2.16 15.32 2.09C15.26 1.96 15.2 1.83 15.17 1.69C15.17 1.68 15.16 1.67 15.15 1.67H15.13L15.12 1.67L15.12 1.67L15.12 1.67C12.9 2.97 11.97 5.26 11.74 6.71C11.05 6.75 10.37 6.92 9.75 7.22C9.63 7.27 9.58 7.41 9.62 7.53C9.67 7.67 9.83 7.74 9.96 7.68C10.5 7.42 11.1 7.27 11.7 7.23L11.75 7.23C11.83 7.22 11.92 7.22 12 7.22C12.5 7.21 12.97 7.28 13.44 7.42L13.5 7.44C13.6 7.46 13.67 7.5 13.75 7.5C13.8 7.54 13.86 7.56 13.91 7.58L14.05 7.64C14.12 7.67 14.19 7.7 14.25 7.73C14.28 7.75 14.31 7.76 14.34 7.78C14.41 7.82 14.5 7.85 14.54 7.89C14.58 7.91 14.62 7.94 14.66 7.96C15.39 8.41 16 9.03 16.41 9.77C15.88 9.4 14.92 9.03 14 9.19C17.6 11 16.63 17.19 11.64 16.95C11.2 16.94 10.76 16.85 10.34 16.7C10.24 16.67 10.14 16.63 10.05 16.58C10 16.56 9.93 16.53 9.88 16.5C8.65 15.87 7.64 14.68 7.5 13.23C7.5 13.23 8 11.5 10.83 11.5C11.14 11.5 12 10.64 12.03 10.4C12.03 10.31 10.29 9.62 9.61 8.95C9.24 8.59 9.07 8.42 8.92 8.29C8.84 8.22 8.75 8.16 8.66 8.1C8.43 7.3 8.42 6.45 8.63 5.65C7.6 6.12 6.8 6.86 6.22 7.5H6.22C5.82 7 5.85 5.35 5.87 5C5.86 5 5.57 5.16 5.54 5.18C5.19 5.43 4.86 5.71 4.56 6C4.21 6.37 3.9 6.74 3.62 7.14C3 8.05 2.5 9.09 2.28 10.18C2.28 10.19 2.18 10.59 2.11 11.1L2.08 11.33C2.06 11.5 2.04 11.65 2 11.91L2 11.94L2 12.27L2 12.32C2 17.85 6.5 22.33 12 22.33C16.97 22.33 21.08 18.74 21.88 14C21.9 13.89 21.91 13.76 21.93 13.63C22.13 11.91 21.91 10.11 21.28 8.6Z"; -var mdiFireplace = "M22,22H2V20H22V22M22,6H2V3H22V6M20,7V19H17V11C17,11 14.5,10 12,10C9.5,10 7,11 7,11V19H4V7H20M14.5,14.67H14.47L14.81,15.22L14.87,15.34C15.29,16.35 15,17.5 14.21,18.24C13.5,18.9 12.5,19.07 11.58,18.95C10.71,18.84 9.9,18.29 9.45,17.53C9.3,17.3 9.19,17.03 9.13,16.77L9,16.11C8.96,15.15 9.34,14.14 10.06,13.54C9.73,14.26 9.81,15.16 10.3,15.79L10.36,15.87C10.44,15.94 10.55,15.97 10.64,15.92C10.73,15.89 10.8,15.8 10.8,15.7L10.76,15.56C10.23,14.17 10.68,12.55 11.79,11.63C12.1,11.38 12.5,11.15 12.87,11.05C12.46,11.87 12.61,12.93 13.25,13.57L14.14,14.3L14.5,14.67M13.11,17.44V17.44C13.37,17.2 13.53,16.8 13.5,16.44V16.25C13.38,15.65 12.85,15.46 12.5,15L12.26,14.55C12.13,14.85 12.12,15.13 12.17,15.46C12.23,15.8 12.37,16.09 12.29,16.44C12.2,16.83 11.9,17.22 11.37,17.35C11.67,17.64 12.15,17.87 12.64,17.71L13.11,17.44Z"; -var mdiFireplaceOff = "M22,22H2V20H22V22M22,6H2V3H22V6M20,7V19H17V11C17,11 14.5,10 12,10C9.5,10 7,11 7,11V19H4V7H20Z"; -var mdiFirework = "M5.8,16.59L4.5,15.28L12.26,7.5L16.5,11.74L8.72,19.5L7.29,18.09C7.04,18.16 6.8,18.28 6.63,18.5C6.57,18.57 6.5,18.65 6.5,18.74C6.42,18.88 6.38,19 6.32,19.15C6.21,19.42 6.09,19.69 5.93,19.93C5.81,20.1 5.68,20.26 5.53,20.39C5.42,20.5 5.29,20.59 5.16,20.66C5.08,20.71 5,20.76 4.9,20.79C4.3,21.04 3.63,21 3,21V19C3.23,19 3.83,19 3.9,19C4,19 4.08,19 4.16,18.94C4.18,18.92 4.19,18.91 4.21,18.89C4.28,18.81 4.34,18.7 4.39,18.6C4.47,18.42 4.53,18.24 4.6,18.06L4.64,17.96C4.76,17.69 4.9,17.45 5.08,17.23C5.18,17.1 5.3,17 5.42,16.87C5.54,16.77 5.66,16.67 5.8,16.59M21,3L19.88,11.19L12.81,4.12L21,3Z"; -var mdiFireworkOff = "M20.84 22.73L13.17 15.06L8.72 19.5L7.29 18.09C7.04 18.16 6.8 18.28 6.63 18.5C6.57 18.57 6.5 18.65 6.5 18.74C6.42 18.88 6.38 19 6.32 19.15C6.21 19.42 6.09 19.69 5.93 19.93C5.81 20.1 5.68 20.26 5.53 20.39C5.42 20.5 5.29 20.59 5.16 20.66C5.08 20.71 5 20.76 4.9 20.79C4.3 21.04 3.63 21 3 21V19H3.9C4 19 4.08 19 4.16 18.94L4.21 18.89C4.28 18.81 4.34 18.7 4.39 18.6C4.47 18.42 4.53 18.24 4.6 18.06L4.64 17.96C4.76 17.69 4.9 17.45 5.08 17.23C5.18 17.1 5.3 17 5.42 16.87C5.54 16.77 5.66 16.67 5.8 16.59L4.5 15.28L8.94 10.83L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M21 3L12.81 4.12L19.88 11.19L21 3M16.5 11.74L12.26 7.5L11.5 8.28L15.72 12.5L16.5 11.74Z"; -var mdiFish = "M12,20L12.76,17C9.5,16.79 6.59,15.4 5.75,13.58C5.66,14.06 5.53,14.5 5.33,14.83C4.67,16 3.33,16 2,16C3.1,16 3.5,14.43 3.5,12.5C3.5,10.57 3.1,9 2,9C3.33,9 4.67,9 5.33,10.17C5.53,10.5 5.66,10.94 5.75,11.42C6.4,10 8.32,8.85 10.66,8.32L9,5C11,5 13,5 14.33,5.67C15.46,6.23 16.11,7.27 16.69,8.38C19.61,9.08 22,10.66 22,12.5C22,14.38 19.5,16 16.5,16.66C15.67,17.76 14.86,18.78 14.17,19.33C13.33,20 12.67,20 12,20M17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12A1,1 0 0,0 17,11Z"; -var mdiFishOff = "M20.8 22.7L15.7 17.6C15.1 18.3 14.6 18.9 14.1 19.3C13.3 20 12.7 20 12 20L12.8 17C9.5 16.8 6.6 15.4 5.8 13.6C5.7 14.1 5.6 14.5 5.4 14.8C4.7 16 3.3 16 2 16C3.1 16 3.5 14.4 3.5 12.5S3.1 9 2 9C3.3 9 4.7 9 5.3 10.2C5.5 10.5 5.6 11 5.7 11.4C6 10.7 6.7 10 7.6 9.5L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M9.8 6.6L9 5C11 5 13 5 14.3 5.7C15.4 6.3 16.1 7.3 16.7 8.4C19.6 9.1 22 10.7 22 12.5C22 13.8 20.8 15 19 15.8L9.8 6.6M16 12C16 12.6 16.4 13 17 13S18 12.6 18 12 17.6 11 17 11 16 11.4 16 12Z"; -var mdiFishbowl = "M19.11,5H21V3H3V5H4.89C3.11,6.8 2,9.27 2,12C2,15.97 4.31,19.39 7.66,21H16.34C19.69,19.39 22,15.97 22,12C22,9.27 20.89,6.8 19.11,5M13.25,17C12.09,17 11.06,16.64 10.33,16.17C9.67,17 8.33,17 7,17C8.1,17 8.5,15.88 8.5,14.5C8.5,13.12 8.1,12 7,12C8.33,12 9.67,12 10.37,12.91C11.06,12.36 12.09,12 13.25,12C15.32,12 17,13.12 17,14.5C17,15.88 15.32,17 13.25,17M16,7C13.56,8.71 10.44,8.71 8,7C7.06,7.66 6,8.09 4.95,8.25C5.31,7.58 5.77,6.96 6.32,6.41L7.7,5H16.3L17.68,6.41C18.23,6.96 18.69,7.58 19.05,8.25C18,8.09 16.94,7.66 16,7Z"; -var mdiFishbowlOutline = "M19.11,5H21V3H3V5H4.89C3.11,6.8 2,9.27 2,12C2,15.97 4.31,19.39 7.66,21H16.34C19.69,19.39 22,15.97 22,12C22,9.27 20.89,6.8 19.11,5M6.32,6.41L7.7,5H16.3L17.68,6.41C18.23,6.96 18.69,7.58 19.05,8.25C18,8.09 16.94,7.66 16,7C13.56,8.71 10.44,8.71 8,7C7.06,7.66 6,8.09 4.95,8.25C5.31,7.58 5.77,6.96 6.32,6.41M15.85,19H8.15C5.58,17.59 4,14.95 4,12C4,11.43 4.07,10.86 4.19,10.32C5.5,10.29 6.8,9.95 8,9.33C10.5,10.63 13.5,10.63 16,9.33C17.2,9.95 18.5,10.29 19.81,10.32C19.93,10.86 20,11.43 20,12C20,14.95 18.42,17.59 15.85,19M17,14.5C17,15.88 15.32,17 13.25,17C12.09,17 11.06,16.64 10.33,16.16C9.67,17 8.33,17 7,17C8.1,17 8.5,15.88 8.5,14.5C8.5,13.12 8.1,12 7,12C8.33,12 9.67,12 10.37,12.91C11.06,12.36 12.09,12 13.25,12C15.32,12 17,13.12 17,14.5Z"; -var mdiFitToPage = "M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2M12,4L15,7H13V9H11V7H9M7,15L4,12L7,9V11H9V13H7M12,20L9,17H11V15H13V17H15M17,15V13H15V11H17V9L20,12"; -var mdiFitToPageOutline = "M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2M20,20H4V4H20M13,8V10H11V8H9L12,5L15,8M16,15V13H14V11H16V9L19,12M10,13H8V15L5,12L8,9V11H10M15,16L12,19L9,16H11V14H13V16"; -var mdiFlag = "M14.4,6L14,4H5V21H7V14H12.6L13,16H20V6H14.4Z"; -var mdiFlagCheckered = "M14.4,6H20V16H13L12.6,14H7V21H5V4H14L14.4,6M14,14H16V12H18V10H16V8H14V10L13,8V6H11V8H9V6H7V8H9V10H7V12H9V10H11V12H13V10L14,12V14M11,10V8H13V10H11M14,10H16V12H14V10Z"; -var mdiFlagMinus = "M12.4,5H18V15H11L10.6,13H5V20H3V3H12L12.4,5M14,17H22V19H14V17Z"; -var mdiFlagMinusOutline = "M12.36 6L12.76 8H18V14H14.64L14.24 12H7V6H12.36M14 4H5V21H7V14H12.6L13 16H20V6H14.4M23 18H15V20H23V18Z"; -var mdiFlagOutline = "M12.36,6L12.76,8H18V14H14.64L14.24,12H7V6H12.36M14,4H5V21H7V14H12.6L13,16H20V6H14.4"; -var mdiFlagPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M12.4,5H18V12C15.78,12 13.84,13.21 12.8,15H11L10.6,13H5V20H3V3H12L12.4,5Z"; -var mdiFlagPlusOutline = "M13 16L12.6 14H7V21H5V4H14L14.4 6H20V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V8H12.76L12.36 6H7V12H14.24L14.64 14H15.69C14.92 14.5 14.27 15.2 13.81 16H13M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; -var mdiFlagRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M12.4,5H18V12C15.78,12 13.84,13.21 12.8,15H11L10.6,13H5V20H3V3H12L12.4,5Z"; -var mdiFlagRemoveOutline = "M13 16L12.6 14H7V21H5V4H14L14.4 6H20V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V8H12.76L12.36 6H7V12H14.24L14.64 14H15.69C14.92 14.5 14.27 15.2 13.81 16H13M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z"; -var mdiFlagTriangle = "M7,2H9V22H7V2M19,9L11,14.6V3.4L19,9Z"; -var mdiFlagVariant = "M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3Z"; -var mdiFlagVariantOutline = "M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3M7,7.25V11.5C7,11.5 9,10 11,10C13,10 14,12 16,12C18,12 18,11 18,11V7.5C18,7.5 17,8 16,8C14,8 13,6 11,6C9,6 7,7.25 7,7.25Z"; -var mdiFlare = "M7,11H1V13H7V11M9.17,7.76L7.05,5.64L5.64,7.05L7.76,9.17L9.17,7.76M13,1H11V7H13V1M18.36,7.05L16.95,5.64L14.83,7.76L16.24,9.17L18.36,7.05M17,11V13H23V11H17M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M14.83,16.24L16.95,18.36L18.36,16.95L16.24,14.83L14.83,16.24M5.64,16.95L7.05,18.36L9.17,16.24L7.76,14.83L5.64,16.95M11,23H13V17H11V23Z"; -var mdiFlash = "M7,2V13H10V22L17,10H13L17,2H7Z"; -var mdiFlashAlert = "M5,2V13H8V22L15,10H11L15,2M17,15H19V17H17V15M17,7H19V13H17V7Z"; -var mdiFlashAlertOutline = "M5,2H15L11.5,9H15L8,22V14H5V2M7,4V12H10V14.66L12,11H8.24L11.76,4M17,15H19V17H17V15M17,7H19V13H17V7Z"; -var mdiFlashAuto = "M16.85,7.65L18,4L19.15,7.65M19,2H17L13.8,11H15.7L16.4,9H19.6L20.3,11H22.2M3,2V14H6V23L13,11H9L13,2H3Z"; -var mdiFlashCircle = "M11.5,20L16.36,10.27H13V4L8,13.73H11.5V20M12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12C22,14.75 21,17.1 19.05,19.05C17.1,21 14.75,22 12,22C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,9.25 3,6.9 4.95,4.95C6.9,3 9.25,2 12,2Z"; -var mdiFlashOff = "M17,10H13L17,2H7V4.18L15.46,12.64M3.27,3L2,4.27L7,9.27V13H10V22L13.58,15.86L17.73,20L19,18.73L3.27,3Z"; -var mdiFlashOutline = "M7,2H17L13.5,9H17L10,22V14H7V2M9,4V12H12V14.66L14,11H10.24L13.76,4H9Z"; -var mdiFlashRedEye = "M16,5C15.44,5 15,5.44 15,6C15,6.56 15.44,7 16,7C16.56,7 17,6.56 17,6C17,5.44 16.56,5 16,5M16,2C13.27,2 10.94,3.66 10,6C10.94,8.34 13.27,10 16,10C18.73,10 21.06,8.34 22,6C21.06,3.66 18.73,2 16,2M16,3.5A2.5,2.5 0 0,1 18.5,6A2.5,2.5 0 0,1 16,8.5A2.5,2.5 0 0,1 13.5,6A2.5,2.5 0 0,1 16,3.5M3,2V14H6V23L13,11H9L10.12,8.5C9.44,7.76 8.88,6.93 8.5,6C9.19,4.29 10.5,2.88 12.11,2H3Z"; -var mdiFlashlight = "M9,10L6,5H18L15,10H9M18,4H6V2H18V4M9,22V11H15V22H9M12,13A1,1 0 0,0 11,14A1,1 0 0,0 12,15A1,1 0 0,0 13,14A1,1 0 0,0 12,13Z"; -var mdiFlashlightOff = "M2,5.27L3.28,4L20,20.72L18.73,22L15,18.27V22H9V12.27L2,5.27M18,5L15,10H11.82L6.82,5H18M18,4H6V2H18V4M15,11V13.18L12.82,11H15Z"; -var mdiFlask = "M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L16.53,14.47L14,17L8.93,11.93L5.18,18.43C5.07,18.59 5,18.79 5,19M13,10A1,1 0 0,0 12,11A1,1 0 0,0 13,12A1,1 0 0,0 14,11A1,1 0 0,0 13,10Z"; -var mdiFlaskEmpty = "M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z"; -var mdiFlaskEmptyMinus = "M23 17V19H15V17H23M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C14.92 12.84 13 15.2 13 18C13 19.54 13.58 20.94 14.53 22H6Z"; -var mdiFlaskEmptyMinusOutline = "M23 17V19H15V17H23M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19Z"; -var mdiFlaskEmptyOff = "M20.8 22.7L19.6 21.5C19.1 21.8 18.6 22 18 22H6C4.3 22 3 20.7 3 19C3 18.4 3.2 17.8 3.5 17.4L7.9 9.8L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M15 7.8V6C15.6 6 16 5.6 16 5V4C16 2.9 15.1 2 14 2H10C8.9 2 8 2.9 8 4V4.8L20.4 17.2L15 7.8Z"; -var mdiFlaskEmptyOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L7.9 9.8L3.5 17.4C3.2 17.8 3 18.4 3 19C3 20.7 4.3 22 6 22H18C18.6 22 19.2 21.8 19.6 21.5L20.8 22.7L22.1 21.5M18 20H6C5.4 20 5 19.6 5 19C5 18.8 5.1 18.6 5.2 18.4L9.4 11.2L18 20C18.1 20 18 20 18 20M11 7.8L8 4.8V4C8 2.9 8.9 2 10 2H14C15.1 2 16 2.9 16 4V5C16 5.6 15.6 6 15 6V7.8L20.4 17.2L15 11.8L13 8.4V4H11V7.8Z"; -var mdiFlaskEmptyOutline = "M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z"; -var mdiFlaskEmptyPlus = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C14.92 12.84 13 15.2 13 18C13 19.54 13.58 20.94 14.53 22H6Z"; -var mdiFlaskEmptyPlusOutline = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19Z"; -var mdiFlaskEmptyRemove = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C14.92 12.84 13 15.2 13 18C13 19.54 13.58 20.94 14.53 22H6Z"; -var mdiFlaskEmptyRemoveOutline = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19Z"; -var mdiFlaskMinus = "M23 17V19H15V17H23M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C15.5 12.7 13.86 14.26 13.26 16.26L8.93 11.93L5.18 18.43C5.07 18.59 5 18.79 5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6M13 10C12.45 10 12 10.45 12 11C12 11.55 12.45 12 13 12C13.55 12 14 11.55 14 11C14 10.45 13.55 10 13 10Z"; -var mdiFlaskMinusOutline = "M23 17V19H15V17H23M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19M13 16L13.58 15.42C13.21 16.2 13 17.08 13 18H7.73L10.39 13.39L13 16M12.5 12C12.78 12 13 12.22 13 12.5C13 12.78 12.78 13 12.5 13C12.22 13 12 12.78 12 12.5C12 12.22 12.22 12 12.5 12Z"; -var mdiFlaskOff = "M22.1 21.5L2.4 1.7L1.1 3L7.9 9.8L3.5 17.4C3.2 17.8 3 18.4 3 19C3 20.7 4.3 22 6 22H18C18.6 22 19.2 21.8 19.6 21.5L20.8 22.7L22.1 21.5M18 20H6C5.4 20 5 19.6 5 19C5 18.8 5.1 18.6 5.2 18.4L9 11.9L14 17L14.6 16.4L18 20C18.1 20 18 20 18 20M8 4.8V4C8 2.9 8.9 2 10 2H14C15.1 2 16 2.9 16 4V5C16 5.6 15.6 6 15 6V7.8L20.4 17.2L8 4.8Z"; -var mdiFlaskOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L7.9 9.8L3.5 17.4C3.2 17.8 3 18.4 3 19C3 20.7 4.3 22 6 22H18C18.6 22 19.2 21.8 19.6 21.5L20.8 22.7L22.1 21.5M18 20H6C5.4 20 5 19.6 5 19C5 18.8 5.1 18.6 5.2 18.4L9.4 11.2L13.6 15.4L13 16L10.4 13.4L7.7 18H16.1L18 20C18.1 20 18 20 18 20M11 7.8L8 4.8V4C8 2.9 8.9 2 10 2H14C15.1 2 16 2.9 16 4V5C16 5.6 15.6 6 15 6V7.8L20.4 17.2L15 11.8L13 8.4V4H11V7.8Z"; -var mdiFlaskOutline = "M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M13,16L14.34,14.66L16.27,18H7.73L10.39,13.39L13,16M12.5,12A0.5,0.5 0 0,1 13,12.5A0.5,0.5 0 0,1 12.5,13A0.5,0.5 0 0,1 12,12.5A0.5,0.5 0 0,1 12.5,12Z"; -var mdiFlaskPlus = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C15.5 12.7 13.86 14.26 13.26 16.26L8.93 11.93L5.18 18.43C5.07 18.59 5 18.79 5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6M13 10C12.45 10 12 10.45 12 11C12 11.55 12.45 12 13 12C13.55 12 14 11.55 14 11C14 10.45 13.55 10 13 10Z"; -var mdiFlaskPlusOutline = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19M13 16L13.58 15.42C13.21 16.2 13 17.08 13 18H7.73L10.39 13.39L13 16M12.5 12C12.78 12 13 12.22 13 12.5C13 12.78 12.78 13 12.5 13C12.22 13 12 12.78 12 12.5C12 12.22 12.22 12 12.5 12Z"; -var mdiFlaskRemove = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C15.5 12.7 13.86 14.26 13.26 16.26L8.93 11.93L5.18 18.43C5.07 18.59 5 18.79 5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6M13 10C12.45 10 12 10.45 12 11C12 11.55 12.45 12 13 12C13.55 12 14 11.55 14 11C14 10.45 13.55 10 13 10Z"; -var mdiFlaskRemoveOutline = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19M13 16L13.58 15.42C13.21 16.2 13 17.08 13 18H7.73L10.39 13.39L13 16M12.5 12C12.78 12 13 12.22 13 12.5C13 12.78 12.78 13 12.5 13C12.22 13 12 12.78 12 12.5C12 12.22 12.22 12 12.5 12Z"; -var mdiFlaskRoundBottom = "M19 15C19 18.87 15.87 22 12 22C8.13 22 5 18.87 5 15C5 12.21 6.64 9.8 9 8.67V5C9 4.45 9.45 4 10 4H10.5L9.5 2H14.5L13.5 4H14C14.55 4 15 4.45 15 5V8.67C17.36 9.8 19 12.21 19 15M11 6V10.1C8.72 10.56 7 12.58 7 15L7.08 15.91L9 13.93L13.07 18L16.93 14.14C16.58 12.12 15 10.5 13 10.1V6H11M13.07 12C13.62 12 14.07 12.45 14.07 13C14.07 13.55 13.62 14 13.07 14C12.5 14 12.07 13.55 12.07 13C12.07 12.45 12.5 12 13.07 12Z"; -var mdiFlaskRoundBottomEmpty = "M19 15C19 18.87 15.87 22 12 22C8.13 22 5 18.87 5 15C5 12.21 6.64 9.8 9 8.67V5C9 4.45 9.45 4 10 4H10.5L9.5 2H14.5L13.5 4H14C14.55 4 15 4.45 15 5V8.67C17.36 9.8 19 12.21 19 15Z"; -var mdiFlaskRoundBottomEmptyOutline = "M19 15C19 18.87 15.87 22 12 22C8.13 22 5 18.87 5 15C5 12.21 6.64 9.8 9 8.67V5C9 4.45 9.45 4 10 4H10.5L9.5 2H14.5L13.5 4H14C14.55 4 15 4.45 15 5V8.67C17.36 9.8 19 12.21 19 15M11 6V10.1C8.72 10.56 7 12.58 7 15C7 17.76 9.24 20 12 20C14.76 20 17 17.76 17 15C17 12.58 15.28 10.56 13 10.1V6H11Z"; -var mdiFlaskRoundBottomOutline = "M15 15C15 16.66 13.66 18 12 18C10.34 18 9 16.66 9 15V14H11V15C11 15.55 11.45 16 12 16C12.55 16 13 15.55 13 15V14H15V15M19 15C19 18.87 15.87 22 12 22C8.13 22 5 18.87 5 15C5 12.21 6.64 9.8 9 8.67V5C9 4.45 9.45 4 10 4H10.5L9.5 2H14.5L13.5 4H14C14.55 4 15 4.45 15 5V8.67C17.36 9.8 19 12.21 19 15M11 6V10.1C8.72 10.56 7 12.58 7 15C7 17.76 9.24 20 12 20C14.76 20 17 17.76 17 15C17 12.58 15.28 10.56 13 10.1V6H11Z"; -var mdiFleurDeLis = "M12 2S9 4 9 7 11 12 11 16H10S10 14 9 12C7 8 3 10 3 13S5 16 5 16C5 13 8.5 13 8.5 16H7V18H10.5L9 20S10 21 11 20L12 22L13 20C14 21 15 20 15 20L13.5 18H17V16H15.5C15.5 13 19 13 19 16C19 16 21 16 21 13S17 8 15 12C14 14 14 16 14 16H13C13 12 15 10 15 7S12 2 12 2Z"; -var mdiFlipHorizontal = "M15 21H17V19H15M19 9H21V7H19M3 5V19C3 20.1 3.9 21 5 21H9V19H5V5H9V3H5C3.9 3 3 3.9 3 5M19 3V5H21C21 3.9 20.1 3 19 3M11 23H13V1H11M19 17H21V15H19M15 5H17V3H15M19 13H21V11H19M19 21C20.1 21 21 20.1 21 19H19Z"; -var mdiFlipToBack = "M15,17H17V15H15M15,5H17V3H15M5,7H3V19A2,2 0 0,0 5,21H17V19H5M19,17A2,2 0 0,0 21,15H19M19,9H21V7H19M19,13H21V11H19M9,17V15H7A2,2 0 0,0 9,17M13,3H11V5H13M19,3V5H21C21,3.89 20.1,3 19,3M13,15H11V17H13M9,3C7.89,3 7,3.89 7,5H9M9,11H7V13H9M9,7H7V9H9V7Z"; -var mdiFlipToFront = "M7,21H9V19H7M11,21H13V19H11M19,15H9V5H19M19,3H9C7.89,3 7,3.89 7,5V15A2,2 0 0,0 9,17H14L18,17H19A2,2 0 0,0 21,15V5C21,3.89 20.1,3 19,3M15,21H17V19H15M3,9H5V7H3M5,21V19H3A2,2 0 0,0 5,21M3,17H5V15H3M3,13H5V11H3V13Z"; -var mdiFlipVertical = "M3 15V17H5V15M15 19V21H17V19M19 3H5C3.9 3 3 3.9 3 5V9H5V5H19V9H21V5C21 3.9 20.1 3 19 3M21 19H19V21C20.1 21 21 20.1 21 19M1 11V13H23V11M7 19V21H9V19M19 15V17H21V15M11 19V21H13V19M3 19C3 20.1 3.9 21 5 21V19Z"; -var mdiFloorLamp = "M15,2L17,9H7L9,2M11,10H13V20H16V22H8V20H11V10Z"; -var mdiFloorLampDual = "M11.73 10.06L10.17 11.24L11 12.2V20H8V22H16V20H13V12.3L13.85 11.26L12.27 10.07L11.73 10.06M9.08 10.82L3 6.81L9.39 2L11.55 8.93L9.08 10.82M14.61 2L21 6.81L14.92 10.82L12.44 8.95L14.61 2Z"; -var mdiFloorLampVariant = "M7 2L10 9H14L17 2H7M15.92 22L13 15V22H11V15L8.08 22H5.92L10.92 10H13.08L18.08 22H15.92Z"; -var mdiFloorPlan = "M10,5V10H9V5H5V13H9V12H10V17H9V14H5V19H12V17H13V19H19V17H21V21H3V3H21V15H19V10H13V15H12V9H19V5H10Z"; -var mdiFloppy = "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5.5L18.5,3H17V9A1,1 0 0,1 16,10H8A1,1 0 0,1 7,9V3H5M12,4V9H15V4H12M7,12H17A1,1 0 0,1 18,13V19H6V13A1,1 0 0,1 7,12Z"; -var mdiFloppyVariant = "M3,3V21H21V3H3M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,15A1,1 0 0,1 13,16V19A1,1 0 0,1 12,20A1,1 0 0,1 11,19V16A1,1 0 0,1 12,15Z"; -var mdiFlower = "M3,13A9,9 0 0,0 12,22C12,17 7.97,13 3,13M12,5.5A2.5,2.5 0 0,1 14.5,8A2.5,2.5 0 0,1 12,10.5A2.5,2.5 0 0,1 9.5,8A2.5,2.5 0 0,1 12,5.5M5.6,10.25A2.5,2.5 0 0,0 8.1,12.75C8.63,12.75 9.12,12.58 9.5,12.31C9.5,12.37 9.5,12.43 9.5,12.5A2.5,2.5 0 0,0 12,15A2.5,2.5 0 0,0 14.5,12.5C14.5,12.43 14.5,12.37 14.5,12.31C14.88,12.58 15.37,12.75 15.9,12.75C17.28,12.75 18.4,11.63 18.4,10.25C18.4,9.25 17.81,8.4 16.97,8C17.81,7.6 18.4,6.74 18.4,5.75C18.4,4.37 17.28,3.25 15.9,3.25C15.37,3.25 14.88,3.41 14.5,3.69C14.5,3.63 14.5,3.56 14.5,3.5A2.5,2.5 0 0,0 12,1A2.5,2.5 0 0,0 9.5,3.5C9.5,3.56 9.5,3.63 9.5,3.69C9.12,3.41 8.63,3.25 8.1,3.25A2.5,2.5 0 0,0 5.6,5.75C5.6,6.74 6.19,7.6 7.03,8C6.19,8.4 5.6,9.25 5.6,10.25M12,22A9,9 0 0,0 21,13C16,13 12,17 12,22Z"; -var mdiFlowerOutline = "M8.66,13.07C6.92,13.07 5.5,11.66 5.5,9.93C5.5,9.22 5.76,8.54 6.19,8C5.77,7.46 5.5,6.78 5.5,6.07C5.5,4.34 6.93,2.93 8.66,2.93L9.09,2.96C9.56,1.81 10.69,1 12,1C13.31,1 14.44,1.81 14.91,2.96L15.34,2.93C17.07,2.93 18.5,4.34 18.5,6.07C18.5,6.78 18.24,7.46 17.81,8C18.23,8.54 18.5,9.22 18.5,9.93C18.5,11.66 17.07,13.07 15.34,13.07L14.91,13.04C14.44,14.19 13.31,15 12,15C10.69,15 9.56,14.19 9.09,13.04L8.66,13.07M12,13C12.62,13 13.12,12.5 13.14,11.9L13.03,10.81C12.71,10.93 12.36,11 12,11C11.64,11 11.3,10.93 11,10.81L10.86,11.9C10.88,12.5 11.38,13 12,13M15.34,11.07C15.97,11.07 16.5,10.56 16.5,9.92C16.5,9.5 16.23,9.08 15.83,8.89L14.95,8.47C14.83,9.21 14.44,9.85 13.89,10.3L14.7,10.87C14.88,11 15.1,11.07 15.34,11.07M14.69,5.13L13.87,5.69C14.43,6.14 14.82,6.78 14.94,7.5L15.82,7.1C16.23,6.9 16.5,6.5 16.5,6.07C16.5,5.44 15.97,4.93 15.34,4.93C15.11,4.93 14.89,5 14.69,5.13M12,3C11.38,3 10.88,3.5 10.86,4.1L11,5.19C11.3,5.07 11.64,5 12,5C12.36,5 12.71,5.07 13.03,5.19L13.14,4.1C13.12,3.5 12.62,3 12,3M8.66,4.93C8.03,4.93 7.5,5.44 7.5,6.07C7.5,6.5 7.77,6.9 8.17,7.1L9.05,7.5C9.17,6.78 9.56,6.14 10.11,5.69L9.3,5.13C9.12,5 8.9,4.93 8.66,4.93M8.17,8.9C7.77,9.1 7.5,9.5 7.5,9.92C7.5,10.55 8.03,11.06 8.66,11.06C8.89,11.06 9.11,11 9.31,10.86L10.12,10.31C9.56,9.86 9.17,9.22 9.05,8.5L8.17,8.9M12,22A9,9 0 0,1 3,13A9,9 0 0,1 12,22A9,9 0 0,1 21,13A9,9 0 0,1 12,22M14.44,19.56C16.34,18.85 17.85,17.34 18.56,15.44C16.66,16.14 15.15,17.66 14.44,19.56M5.44,15.44C6.15,17.34 7.66,18.85 9.56,19.56C8.86,17.66 7.34,16.15 5.44,15.44Z"; -var mdiFlowerPoppy = "M18.5,12A3.5,3.5 0 0,0 22,8.5A6.5,6.5 0 0,0 15.5,2A3.5,3.5 0 0,0 12,5.5A3.5,3.5 0 0,0 8.5,2A6.5,6.5 0 0,0 2,8.5A3.5,3.5 0 0,0 5.5,12A3.5,3.5 0 0,0 2,15.5A6.5,6.5 0 0,0 8.5,22A3.5,3.5 0 0,0 12,18.5A3.5,3.5 0 0,0 15.5,22A6.5,6.5 0 0,0 22,15.5A3.5,3.5 0 0,0 18.5,12M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M14.5,12A2.5,2.5 0 0,1 12,14.5A2.5,2.5 0 0,1 9.5,12A2.5,2.5 0 0,1 12,9.5A2.5,2.5 0 0,1 14.5,12Z"; -var mdiFlowerTulip = "M3,13A9,9 0 0,0 12,22A9,9 0 0,0 3,13M12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,22M18,3V8A6,6 0 0,1 12,14A6,6 0 0,1 6,8V3C6.74,3 7.47,3.12 8.16,3.39C8.71,3.62 9.2,3.96 9.61,4.39L12,2L14.39,4.39C14.8,3.96 15.29,3.62 15.84,3.39C16.53,3.12 17.26,3 18,3Z"; -var mdiFlowerTulipOutline = "M3,13A9,9 0 0,0 12,22A9,9 0 0,0 3,13M5.44,15.44C7.35,16.15 8.85,17.65 9.56,19.56C7.65,18.85 6.15,17.35 5.44,15.44M12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,22M14.42,19.57C15.11,17.64 16.64,16.11 18.57,15.42C17.86,17.34 16.34,18.86 14.42,19.57M12,14A6,6 0 0,0 18,8V3C17.26,3 16.53,3.12 15.84,3.39C15.29,3.62 14.8,3.96 14.39,4.39L12,2L9.61,4.39C9.2,3.96 8.71,3.62 8.16,3.39C7.47,3.12 6.74,3 6,3V8A6,6 0 0,0 12,14M8,5.61L9.57,7.26L12,4.83L14.43,7.26L16,5.61V8A4,4 0 0,1 12,12A4,4 0 0,1 8,8V5.61Z"; -var mdiFocusAuto = "M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M8 7C6.9 7 6 7.9 6 9V17H8V13H10V17H12V9C12 7.9 11.1 7 10 7H8M8 9H10V11H8V9M13 7V17H15V13H17V11H15V9H18V7H13Z"; -var mdiFocusField = "M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M7 11H9V13H7V11M11 11H13V13H11V11M15 11H17V13H15V11M7 7H9V9H7V7M11 7H13V9H11V7M15 7H17V9H15V7M7 15H9V17H7V15M11 15H13V17H11V15M15 15H17V17H15V15Z"; -var mdiFocusFieldHorizontal = "M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M7 11H9V13H7V11M11 11H13V13H11V11M15 11H17V13H15V11Z"; -var mdiFocusFieldVertical = "M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M11 11H13V13H11V11M11 7H13V9H11V7M11 15H13V17H11V15Z"; -var mdiFolder = "M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"; -var mdiFolderAccount = "M19,17H11V16C11,14.67 13.67,14 15,14C16.33,14 19,14.67 19,16M15,9A2,2 0 0,1 17,11A2,2 0 0,1 15,13A2,2 0 0,1 13,11C13,9.89 13.9,9 15,9M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z"; -var mdiFolderAccountOutline = "M15 14C16.33 14 19 14.67 19 16V17H11V16C11 14.67 13.67 14 15 14M15 13C16.11 13 17 12.11 17 11S16.11 9 15 9C13.9 9 13 9.89 13 11C13 12.11 13.9 13 15 13M22 8V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H10L12 6H20C21.11 6 22 6.9 22 8M20 8H4V18H20V8Z"; -var mdiFolderAlert = "M15,12H17V17H15V12M15,18H17V20H15V18M23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z"; -var mdiFolderAlertOutline = "M15,12H17V17H15V12M15,18H17V20H15V18M16,9C17.07,9 18.09,9.24 19,9.67V8H3V18H9.29C9.1,17.36 9,16.69 9,16A7,7 0 0,1 16,9M23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z"; -var mdiFolderClock = "M3,4C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H10.26C11.57,21.88 13.71,23 16,23A7,7 0 0,0 23,16C23,14.17 22.28,12.42 21,11.11V8C21,6.89 20.1,6 19,6H11L9,4H3M16,11A5,5 0 0,1 21,16A5,5 0 0,1 16,21A5,5 0 0,1 11,16A5,5 0 0,1 16,11M15,12V17L18.61,19.16L19.36,17.94L16.5,16.25V12H15Z"; -var mdiFolderClockOutline = "M15,12H16.5V16.25L19.36,17.94L18.61,19.16L15,17V12M19,8H3V18H9.29C9.1,17.37 9,16.7 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M3,20C1.89,20 1,19.1 1,18V6A2,2 0 0,1 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z"; -var mdiFolderCog = "M4 4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H12.08A7 7 0 0 1 12 19A7 7 0 0 1 19 12A7 7 0 0 1 22 12.69V8C22 6.89 21.1 6 20 6H12L10 4H4M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14H18M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z"; -var mdiFolderCogOutline = "M4 4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H12V18H4V8H20V12H22V8C22 6.89 21.1 6 20 6H12L10 4M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z"; -var mdiFolderDownload = "M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19.25,13H16V9H14V13H10.75L15,17.25"; -var mdiFolderDownloadOutline = "M20 18H4V8H20M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M14 9H16V13H19L15 17L11 13H14Z"; -var mdiFolderEdit = "M3,4C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H11V18.11L21,8.11V8C21,6.89 20.1,6 19,6H11L9,4H3M21.04,11.13C20.9,11.13 20.76,11.19 20.65,11.3L19.65,12.3L21.7,14.35L22.7,13.35C22.92,13.14 22.92,12.79 22.7,12.58L21.42,11.3C21.31,11.19 21.18,11.13 21.04,11.13M19.07,12.88L13,18.94V21H15.06L21.12,14.93L19.07,12.88Z"; -var mdiFolderEditOutline = "M21,11.11C20.92,11.11 20.72,11.21 20.62,11.31L19.62,12.31L21.72,14.42L22.72,13.41C22.92,13.21 22.92,12.81 22.72,12.61L21.42,11.31C21.32,11.21 21.22,11.11 21,11.11M19.12,12.91L13,18.92V21H15.12L21.22,14.92L19.12,12.91M21,8V8.11L19,10.11V8H3V18H11V20H3A2,2 0 0,1 1,18V6C1,4.91 1.9,4 3,4H9L11,6H19C20.12,6 21,6.91 21,8Z"; -var mdiFolderGoogleDrive = "M13.75,9H16.14L19,14H16.05L13.5,9.46M18.3,17H12.75L14.15,14.5H19.27L19.53,14.96M11.5,17L10.4,14.86L13.24,9.9L14.74,12.56L12.25,17M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z"; -var mdiFolderHeart = "M20 6H12L10 4H4C2.89 4 2 4.89 2 6V18C2 19.1 2.89 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6M18.42 13.5L15 17L11.59 13.5C11.22 13.12 11 12.62 11 12.05C11 10.92 11.9 10 13 10C13.54 10 14.05 10.23 14.42 10.61L15 11.2L15.59 10.6C15.95 10.23 16.46 10 17 10C18.1 10 19 10.92 19 12.05C19 12.61 18.78 13.13 18.42 13.5Z"; -var mdiFolderHeartOutline = "M20 18H4V8H20M20 6H12L10 4H4C2.89 4 2 4.89 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.89 21.1 6 20 6M13 10C11.9 10 11 10.92 11 12.05C11 12.62 11.22 13.12 11.59 13.5L15 17L18.42 13.5C18.78 13.13 19 12.61 19 12.05C19 10.92 18.1 10 17 10C16.46 10 15.95 10.23 15.59 10.6L15 11.2L14.42 10.61C14.05 10.23 13.54 10 13 10Z"; -var mdiFolderHome = "M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M17 13V17H15V14H13V17H11V13H9L14 9L19 13Z"; -var mdiFolderHomeOutline = "M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M20 18H4V8H20M13 17V14H15V17H17V13H19L14 9L9 13H11V17Z"; -var mdiFolderImage = "M5,17L9.5,11L13,15.5L15.5,12.5L19,17M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6Z"; -var mdiFolderInformation = "M21 11.1V8C21 6.9 20.1 6 19 6H11L9 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H10.3C11.6 21.9 13.8 23 16 23C19.9 23 23 19.9 23 16C23 14.2 22.3 12.4 21 11.1M16 21C13.2 21 11 18.8 11 16S13.2 11 16 11 21 13.2 21 16 18.8 21 16 21M17 20H15V15H17V20M17 14H15V12H17V14Z"; -var mdiFolderInformationOutline = "M21 11.1V8C21 6.9 20.1 6 19 6H11L9 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H10.2C11.4 21.8 13.6 23 16 23C19.9 23 23 19.9 23 16C23 14.1 22.2 12.4 21 11.1M9.3 18H3V8H19V9.7C18.1 9.2 17.1 9 16 9C12.1 9 9 12.1 9 16C9 16.7 9.1 17.4 9.3 18M16 21C13.2 21 11 18.8 11 16S13.2 11 16 11 21 13.2 21 16 18.8 21 16 21M17 14H15V12H17V14M17 20H15V15H17V20Z"; -var mdiFolderKey = "M4,4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6H12L10,4M11,10C12.31,10 13.42,10.84 13.83,12H19V14H18V16H16V14H13.83C13.42,15.17 12.31,16 11,16A3,3 0 0,1 8,13A3,3 0 0,1 11,10M11,12A1,1 0 0,0 10,13C10,13.56 10.45,14 11,14A1,1 0 0,0 12,13A1,1 0 0,0 11,12Z"; -var mdiFolderKeyNetwork = "M6,5C4.89,5 4,5.89 4,7V15A2,2 0 0,0 6,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V17H18A2,2 0 0,0 20,15V9A2,2 0 0,0 18,7H12L10,5H6M9,9C10.31,9 11.42,9.83 11.83,11H17V13H16V15H14V13H11.83C11.42,14.17 10.31,15 9,15A3,3 0 0,1 6,12A3,3 0 0,1 9,9M9,11A1,1 0 0,0 8,12C8,12.56 8.45,13 9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11Z"; -var mdiFolderKeyNetworkOutline = "M9 8C7.34 8 6 9.34 6 11S7.34 14 9 14C10.31 14 11.42 13.17 11.83 12H14V14H16V12H17V10H11.83C11.42 8.83 10.31 8 9 8M9 12C8.45 12 8 11.55 8 11S8.45 10 9 10 10 10.45 10 11 9.55 12 9 12M15 20C15 19.45 14.55 19 14 19H13V17H19C20.11 17 21 16.11 21 15V7C21 5.9 20.11 5 19 5H13L11 3H5C3.9 3 3 3.9 3 5V15C3 16.11 3.9 17 5 17H11V19H10C9.45 19 9 19.45 9 20H2V22H9C9 22.55 9.45 23 10 23H14C14.55 23 15 22.55 15 22H22V20H15M5 15V7H19V15H5Z"; -var mdiFolderKeyOutline = "M20 18H4V8H20M20 6H12L10 4H4C2.89 4 2 4.89 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.89 21.1 6 20 6M13.83 12C13.42 10.84 12.31 10 11 10C9.34 10 8 11.34 8 13S9.34 16 11 16C12.31 16 13.42 15.17 13.83 14H16V16H18V14H19V12H13.83M11 14C10.45 14 10 13.56 10 13C10 12.45 10.45 12 11 12S12 12.45 12 13 11.55 14 11 14Z"; -var mdiFolderLock = "M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18V12A3,3 0 0,0 15,9A3,3 0 0,0 12,12V13H11V17H19M15,11A1,1 0 0,1 16,12V13H14V12A1,1 0 0,1 15,11Z"; -var mdiFolderLockOpen = "M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18L16,13H14V11A1,1 0 0,1 15,10A1,1 0 0,1 16,11H18A3,3 0 0,0 15,8A3,3 0 0,0 12,11V13H11V17H19Z"; -var mdiFolderMarker = "M10 4L12 6H20C21.1 6 22 6.89 22 8V11.34C21.04 10.5 19.82 10 18.5 10C15.5 10 13 12.65 13 15.5C13 16.97 13.65 18.55 14.5 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10M18.5 12C20.4 12 22 13.6 22 15.5C22 18.1 18.5 22 18.5 22C18.5 22 15 18.1 15 15.5C15 13.6 16.6 12 18.5 12M18.5 16.8C19.2 16.8 19.8 16.2 19.7 15.6C19.7 15 19.1 14.4 18.5 14.4C17.9 14.4 17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8Z"; -var mdiFolderMarkerOutline = "M18.5 12C20.4 12 22 13.6 22 15.5C22 18.1 18.5 22 18.5 22C18.5 22 15 18.1 15 15.5C15 13.6 16.6 12 18.5 12M18.5 16.8C19.2 16.8 19.8 16.2 19.7 15.6C19.7 15 19.1 14.4 18.5 14.4C17.9 14.4 17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8M20 8H4V18H13.5C13.79 18.68 14.13 19.35 14.5 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10L12 6H20C21.1 6 22 6.89 22 8V11.34C21.42 10.84 20.74 10.45 20 10.23V8Z"; -var mdiFolderMove = "M14,18V15H10V11H14V8L19,13M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z"; -var mdiFolderMoveOutline = "M20 18H4V8H20V18M12 6L10 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V8C22 6.9 21.11 6 20 6H12M11 14V12H15V9L19 13L15 17V14H11Z"; -var mdiFolderMultiple = "M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z"; -var mdiFolderMultipleImage = "M7,15L11.5,9L15,13.5L17.5,10.5L21,15M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z"; -var mdiFolderMultipleOutline = "M22,4A2,2 0 0,1 24,6V16A2,2 0 0,1 22,18H6A2,2 0 0,1 4,16V4A2,2 0 0,1 6,2H12L14,4H22M2,6V20H20V22H2A2,2 0 0,1 0,20V11H0V6H2M6,6V16H22V6H6Z"; -var mdiFolderMultiplePlus = "M2 20V6H0V20C0 21.1 .9 22 2 22H20V20H2M22 4H14L12 2H6C5.6 2 5.2 2.1 4.9 2.3L4.3 2.9C4.1 3.2 4 3.6 4 4V16C4 16.4 4.1 16.8 4.3 17.1C4.4 17.2 4.5 17.3 4.5 17.4C5 17.8 5.5 18 6 18H22C23.1 18 24 17.1 24 16V6C24 4.9 23.1 4 22 4M22 12H19V15H17V12H14V10H17V7H19V10H22V12Z"; -var mdiFolderMultiplePlusOutline = "M22 4C23.1 4 24 4.9 24 6V16C24 17.1 23.1 18 22 18H6C4.9 18 4 17.1 4 16V4C4 2.9 4.9 2 6 2H12L14 4H22M2 6V20H20V22H2C.9 22 0 21.1 0 20V6H2M6 6V16H22V6H6M14 10H16V8H18V10H20V12H18V14H16V12H14V10Z"; -var mdiFolderMusic = "M10 4L12 6H20C21.1 6 22 6.89 22 8V18C22 19.1 21.1 20 20 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10M19 9H15.5V13.06L15 13C13.9 13 13 13.9 13 15C13 16.11 13.9 17 15 17C16.11 17 17 16.11 17 15V11H19V9Z"; -var mdiFolderMusicOutline = "M20 18V8H4V18H20M20 6C21.1 6 22 6.89 22 8V18C22 19.1 21.1 20 20 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10L12 6H20M18 9V11H16V15C16 16.11 15.11 17 14 17C12.9 17 12 16.11 12 15C12 13.9 12.9 13 14 13C14.17 13 14.34 13 14.5 13.06V9H18Z"; -var mdiFolderNetwork = "M3,15V5A2,2 0 0,1 5,3H11L13,5H19A2,2 0 0,1 21,7V15A2,2 0 0,1 19,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H5A2,2 0 0,1 3,15Z"; -var mdiFolderNetworkOutline = "M15 20C15 19.45 14.55 19 14 19H13V17H19C20.11 17 21 16.11 21 15V7C21 5.9 20.11 5 19 5H13L11 3H5C3.9 3 3 3.9 3 5V15C3 16.11 3.9 17 5 17H11V19H10C9.45 19 9 19.45 9 20H2V22H9C9 22.55 9.45 23 10 23H14C14.55 23 15 22.55 15 22H22V20H15M5 15V7H19V15H5Z"; -var mdiFolderOpen = "M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z"; -var mdiFolderOpenOutline = "M6.1,10L4,18V8H21A2,2 0 0,0 19,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H19C19.9,20 20.7,19.4 20.9,18.5L23.2,10H6.1M19,18H6L7.6,12H20.6L19,18Z"; -var mdiFolderOutline = "M20,18H4V8H20M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z"; -var mdiFolderPlus = "M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M15,9V12H12V14H15V17H17V14H20V12H17V9H15Z"; -var mdiFolderPlusOutline = "M12 12H14V10H16V12H18V14H16V16H14V14H12V12M22 8V18C22 19.11 21.11 20 20 20H4C2.89 20 2 19.11 2 18V6C2 4.89 2.89 4 4 4H10L12 6H20C21.11 6 22 6.89 22 8M20 8H4V18H20V8Z"; -var mdiFolderPound = "M15.25,13H17.25L16.75,15H14.75L15.25,13M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20A2,2 0 0,1 22,8M20,12H18.5L19,10H18L17.5,12H15.5L16,10H15L14.5,12H13V13H14.25L13.75,15H12V16H13.5L13,18H14L14.5,16H16.5L16,18H17L17.5,16H19V15H17.75L18.25,13H20V12Z"; -var mdiFolderPoundOutline = "M20,18H4V8H20M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6M19,12V11H17.5L18,9H17L16.5,11H14.5L15,9H14L13.5,11H12V12H13.25L12.75,14H11V15H12.5L12,17H13L13.5,15H15.5L15,17H16L16.5,15H18V14H16.75L17.25,12H19M15.75,14H13.75L14.25,12H16.25L15.75,14Z"; -var mdiFolderRefresh = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M10 4L12 6H20C21.1 6 22 6.89 22 8V13C21 12.38 19.79 12 18.5 12C14.91 12 12 14.91 12 18.5C12 19 12.06 19.5 12.17 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10Z"; -var mdiFolderRefreshOutline = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M20 8H4V18H12L12 18.5C12 19 12.06 19.5 12.17 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10L12 6H20C21.1 6 22 6.89 22 8V13C21.39 12.63 20.72 12.34 20 12.17V8Z"; -var mdiFolderRemove = "M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M12.46,10.88L14.59,13L12.46,15.12L13.88,16.54L16,14.41L18.12,16.54L19.54,15.12L17.41,13L19.54,10.88L18.12,9.46L16,11.59L13.88,9.46L12.46,10.88Z"; -var mdiFolderRemoveOutline = "M11.46 10.88L12.88 9.46L15 11.59L17.12 9.46L18.54 10.88L16.41 13L18.54 15.12L17.12 16.54L15 14.41L12.88 16.54L11.46 15.12L13.59 13L11.46 10.88M22 8V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H10L12 6H20C21.11 6 22 6.9 22 8M20 8H4V18H20V8Z"; -var mdiFolderSearch = "M16.5,12C19,12 21,14 21,16.5C21,17.38 20.75,18.21 20.31,18.9L23.39,22L22,23.39L18.88,20.32C18.19,20.75 17.37,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12M16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19A2.5,2.5 0 0,0 19,16.5A2.5,2.5 0 0,0 16.5,14M9,4L11,6H19A2,2 0 0,1 21,8V11.81C19.83,10.69 18.25,10 16.5,10A6.5,6.5 0 0,0 10,16.5C10,17.79 10.37,19 11,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9Z"; -var mdiFolderSearchOutline = "M16.5,12C19,12 21,14 21,16.5C21,17.38 20.75,18.21 20.31,18.9L23.39,22L22,23.39L18.88,20.32C18.19,20.75 17.37,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12M16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19A2.5,2.5 0 0,0 19,16.5A2.5,2.5 0 0,0 16.5,14M19,8H3V18H10.17C10.34,18.72 10.63,19.39 11,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.81C20.42,11.26 19.75,10.81 19,10.5V8Z"; -var mdiFolderSettings = "M4 4C2.89 4 2 4.89 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8C22 6.89 21.1 6 20 6H12L10 4H4M7 22V24H9V22H7M11 22V24H13V22H11M15 22V24H17V22H15Z"; -var mdiFolderSettingsOutline = "M4 4C2.89 4 2 4.89 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8C22 6.89 21.1 6 20 6H12L10 4H4M4 8H20V18H4V8M7 22V24H9V22H7M11 22V24H13V22H11M15 22V24H17V22H15"; -var mdiFolderStar = "M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M17.94,17L15,15.28L12.06,17L12.84,13.67L10.25,11.43L13.66,11.14L15,8L16.34,11.14L19.75,11.43L17.16,13.67L17.94,17Z"; -var mdiFolderStarMultiple = "M2 6H0V20C0 21.11 .895 22 2 22H20V20H2V6M22 4H14L12 2H6C4.89 2 4 2.89 4 4V16C4 17.1 4.89 18 6 18H22C23.11 18 24 17.1 24 16V6C24 4.89 23.11 4 22 4M19.94 15L17 13.27L14.06 15L14.84 11.66L12.25 9.42L15.66 9.13L17 6L18.34 9.13L21.75 9.42L19.16 11.66L19.94 15Z"; -var mdiFolderStarMultipleOutline = "M2 6V20H20V22H2C.895 22 0 21.11 0 20V6H2M12.78 10.05L15.81 9.79L17 7L18.19 9.79L21.22 10.05L18.92 12.04L19.61 15L17 13.47L14.39 15L15.08 12.04L12.78 10.05M24 6V16C24 17.11 23.11 18 22 18H6C4.9 18 4 17.11 4 16V4C4 2.89 4.9 2 6 2H12L14 4H22C23.11 4 24 4.9 24 6M22 6H6V16H22V6Z"; -var mdiFolderStarOutline = "M10.78 12.05L13.81 11.79L15 9L16.19 11.79L19.22 12.05L16.92 14.04L17.61 17L15 15.47L12.39 17L13.08 14.04L10.78 12.05M22 8V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H10L12 6H20C21.11 6 22 6.9 22 8M20 8H4V18H20V8Z"; -var mdiFolderSwap = "M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M15 16V14H9V16L6 13L9 10V12H15V10L18 13Z"; -var mdiFolderSwapOutline = "M20 18H4V8H20M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M18 13L15 10V12H9V10L6 13L9 16V14H15V16Z"; -var mdiFolderSync = "M10,4L12,6H20A2,2 0 0,1 22,8V11.5C21.23,11.18 20.39,11 19.5,11A6.5,6.5 0 0,0 13,17.5C13,18.39 13.18,19.23 13.5,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L19,23Z"; -var mdiFolderSyncOutline = "M10,4L12,6H20A2,2 0 0,1 22,8V11.5C21.38,11.24 20.7,11.07 20,11V8H4V18H13C13.07,18.7 13.24,19.38 13.5,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L16.72,14.22C16.78,14.17 16.85,14.13 19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L21.28,20.78C21.22,20.83 21.15,20.87 19,23Z"; -var mdiFolderTable = "M4 4C2.89 4 2 4.89 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8C22 6.89 21.1 6 20 6H12L10 4H4M12 9H15V11H12V9M16 9H19V11H16V9M12 12H15V14H12V12M16 12H19V14H16V12M12 15H15V17H12V15M16 15H19V17H16V15Z"; -var mdiFolderTableOutline = "M4 4C2.89 4 2 4.89 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8C22 6.89 21.1 6 20 6H12L10 4H4M4 8H20V18H4V8M12 9V11H15V9H12M16 9V11H19V9H16M12 12V14H15V12H12M16 12V14H19V12H16M12 15V17H15V15H12M16 15V17H19V15H16Z"; -var mdiFolderText = "M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M15,16H6V14H15V16M18,12H6V10H18V12Z"; -var mdiFolderTextOutline = "M20,18H4V8H20M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M15,16H6V14H15V16M18,12H6V10H18V12Z"; -var mdiFolderUpload = "M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75"; -var mdiFolderUploadOutline = "M20 18H4V8H20M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M16 17H14V13H11L15 9L19 13H16Z"; -var mdiFolderZip = "M20 6H12L10 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6M18 12H16V14H18V16H16V18H14V16H16V14H14V12H16V10H14V8H16V10H18V12Z"; -var mdiFolderZipOutline = "M20 6H12L10 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6M20 18H16V16H14V18H4V8H14V10H16V8H20V18M16 12V10H18V12H16M14 12H16V14H14V12M18 16H16V14H18V16Z"; -var mdiFontAwesome = "M19.76 2H4.24C3 2 2 3 2 4.24V19.76C2 21 3 22 4.24 22H19.76C21 22 22 21 22 19.76V4.24C22 3 21 2 19.76 2M17.73 14.69C17.73 14.88 17.57 14.96 17.38 15.04C16.64 15.36 15.84 15.65 15 15.65C13.78 15.65 13.22 14.91 11.78 14.91C10.74 14.91 9.65 15.28 8.77 15.68C8.71 15.71 8.66 15.71 8.61 15.73V17.76C8.61 17.84 8.61 17.92 8.58 17.97V18.03C8.47 18.4 8.13 18.67 7.73 18.67C7.22 18.67 6.82 18.26 6.82 17.76V8C6.47 7.73 6.24 7.31 6.24 6.83C6.24 6 6.9 5.33 7.73 5.33C8.56 5.33 9.23 6 9.23 6.83C9.23 7.31 9 7.73 8.64 8V8.83C8.72 8.8 8.8 8.77 8.88 8.72C9.71 8.37 10.7 8.08 11.63 8.08C12.64 8.08 13.44 8.35 14.35 8.69C14.54 8.77 14.72 8.8 14.93 8.8C15.95 8.8 17.07 8.08 17.34 8.08C17.55 8.08 17.74 8.24 17.74 8.43V14.69H17.73Z"; -var mdiFood = "M15.5,21L14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.5,21H15.5M5,11H10A3,3 0 0,1 13,14H2A3,3 0 0,1 5,11M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13M3,15H8L9.5,16.5L11,15H12A1,1 0 0,1 13,16A1,1 0 0,1 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15Z"; -var mdiFoodApple = "M20,10C22,13 17,22 15,22C13,22 13,21 12,21C11,21 11,22 9,22C7,22 2,13 4,10C6,7 9,7 11,8V5C5.38,8.07 4.11,3.78 4.11,3.78C4.11,3.78 6.77,0.19 11,5V3H13V8C15,7 18,7 20,10Z"; -var mdiFoodAppleOutline = "M20,10C18.58,7.57 15.5,6.69 13,8V3H11V8C8.5,6.69 5.42,7.57 4,10C2,13 7,22 9,22C11,22 11,21 12,21C13,21 13,22 15,22C17,22 22,13 20,10M18.25,13.38C17.63,15.85 16.41,18.12 14.7,20C14.5,20 14.27,19.9 14.1,19.75C12.87,18.76 11.13,18.76 9.9,19.75C9.73,19.9 9.5,20 9.3,20C7.59,18.13 6.36,15.85 5.75,13.39C5.5,12.66 5.45,11.87 5.66,11.12C6.24,10.09 7.32,9.43 8.5,9.4C9.06,9.41 9.61,9.54 10.11,9.79L11,10.24H13L13.89,9.79C14.39,9.54 14.94,9.41 15.5,9.4C16.68,9.43 17.76,10.08 18.34,11.11C18.55,11.86 18.5,12.65 18.25,13.38M11,5C5.38,8.07 4.11,3.78 4.11,3.78C4.11,3.78 6.77,0.19 11,5Z"; -var mdiFoodCroissant = "M22,19L19,17L22,15V19M15,15L19,9L22,13L18,16L15,15M5,17L2,19V15L5,17M9,15L6,16L2,13L5,9L9,15M14,6L18,8L13,15H11L6,8L10,6H14Z"; -var mdiFoodDrumstick = "M20.16 12.73C22.93 9.96 22.57 5.26 19.09 3C17.08 1.67 14.39 1.66 12.36 2.97C10.6 4.1 9.63 5.86 9.46 7.68C9.33 9 8.83 10.23 7.91 11.15L7.88 11.18C6.72 12.34 6.72 14.11 7.81 15.19L8.8 16.18C9.89 17.27 11.66 17.27 12.75 16.18C13.72 15.21 15 14.68 16.39 14.53C17.76 14.38 19.1 13.78 20.16 12.73M6.26 19.86C6.53 20.42 6.44 21.1 5.97 21.56C5.39 22.15 4.44 22.15 3.85 21.56C3.58 21.29 3.44 20.94 3.42 20.58C3.06 20.56 2.71 20.42 2.44 20.15C1.85 19.56 1.85 18.61 2.44 18.03C2.9 17.57 3.59 17.47 4.14 17.74L6.62 15.31C6.76 15.5 6.92 15.72 7.1 15.9L8.09 16.89C8.3 17.09 8.5 17.26 8.76 17.41L6.26 19.86Z"; -var mdiFoodDrumstickOff = "M20.8 22.7L13.6 15.5C13.3 15.7 13 15.9 12.7 16.2C11.6 17.3 9.8 17.3 8.7 16.2L7.7 15.2C6.6 14.1 6.6 12.3 7.8 11.2C8 11 8.2 10.7 8.4 10.4L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M8.1 16.9L7.1 15.9C6.9 15.7 6.8 15.5 6.6 15.3L4.1 17.7C3.5 17.4 2.9 17.5 2.4 18C1.8 18.6 1.8 19.5 2.4 20.1C2.7 20.4 3 20.5 3.4 20.5C3.4 20.9 3.6 21.2 3.8 21.5C4.4 22.1 5.3 22.1 5.9 21.5C6.4 21 6.5 20.4 6.2 19.8L8.7 17.4C8.5 17.3 8.3 17.1 8.1 16.9M20.2 12.7C23 9.9 22.6 5.2 19.1 3C17.1 1.7 14.4 1.7 12.4 3C11 3.9 10.1 5.1 9.7 6.5L17.5 14.3C18.5 14 19.4 13.5 20.2 12.7Z"; -var mdiFoodDrumstickOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L8.5 10.4C8.3 10.7 8.1 10.9 7.9 11.2C6.7 12.4 6.7 14.1 7.8 15.2L8.8 16.2C9.3 16.7 10.1 17 10.8 17C11.5 17 12.2 16.7 12.8 16.2C13.1 15.9 13.4 15.7 13.7 15.5L20.9 22.7L22.1 21.5M11.3 14.8C11.1 15 10.9 15 10.8 15S10.4 15 10.2 14.8L9.2 13.8C9 13.6 9 13.4 9 13.2C9 13 9.1 12.7 9.3 12.5C9.5 12.3 9.7 12 9.9 11.8L12.1 14C11.9 14.3 11.6 14.5 11.3 14.8M11.4 8.2L9.7 6.5C10.1 5.1 11 3.9 12.4 3C13.4 2.4 14.6 2 15.7 2C16.9 2 18.1 2.3 19.1 3C22.6 5.3 22.9 10 20.2 12.7C19.4 13.5 18.5 14 17.5 14.3L15.8 12.6C15.9 12.6 16 12.5 16.2 12.5C17.2 12.4 18.1 12 18.8 11.3C19.7 10.4 20.2 9.1 20 7.8C19.9 6.5 19.2 5.4 18 4.6C17.3 4.2 16.5 4 15.7 4C14.9 4 14.1 4.2 13.4 4.7C12.2 5.4 11.5 6.6 11.4 7.9V8.2M8.8 17.4L6.3 19.8C6.6 20.4 6.5 21 6 21.5C5.4 22.1 4.5 22.1 3.9 21.5C3.6 21.2 3.5 20.9 3.5 20.5C3.1 20.5 2.8 20.3 2.5 20.1C1.9 19.5 1.9 18.6 2.5 18C3 17.5 3.6 17.4 4.2 17.7L6.7 15.3C6.8 15.5 7 15.7 7.2 15.9L8.2 16.9C8.3 17.1 8.5 17.3 8.8 17.4"; -var mdiFoodDrumstickOutline = "M15.71 4C16.54 4 17.33 4.22 18 4.66C19.14 5.4 19.84 6.53 20 7.84C20.11 9.13 19.66 10.4 18.75 11.31C18.05 12 17.16 12.44 16.18 12.54C14.27 12.74 12.59 13.5 11.34 14.77C11.13 14.97 10.9 15 10.77 15C10.65 15 10.42 14.97 10.21 14.77L9.22 13.78C9.04 13.6 9 13.39 9 13.25C9 13 9.11 12.78 9.32 12.57C10.53 11.35 11.27 9.73 11.45 7.87C11.58 6.54 12.29 5.4 13.45 4.65C14.11 4.22 14.89 4 15.71 4M15.71 2C14.54 2 13.37 2.32 12.36 2.97C10.6 4.1 9.63 5.86 9.46 7.68C9.33 9 8.83 10.23 7.91 11.15L7.88 11.18C6.72 12.34 6.72 14.11 7.81 15.19L8.8 16.18C9.35 16.73 10.06 17 10.77 17S12.2 16.73 12.75 16.18C13.72 15.21 15 14.68 16.39 14.53C17.76 14.38 19.1 13.78 20.16 12.73C22.93 9.96 22.57 5.26 19.09 3C18.08 2.33 16.9 2 15.71 2M6.26 19.86C6.53 20.42 6.44 21.1 5.97 21.56C5.39 22.15 4.44 22.15 3.85 21.56C3.58 21.29 3.44 20.94 3.42 20.58C3.06 20.56 2.71 20.42 2.44 20.15C1.85 19.56 1.85 18.61 2.44 18.03C2.9 17.57 3.59 17.47 4.14 17.74L6.62 15.31C6.76 15.5 6.92 15.72 7.1 15.9L8.09 16.89C8.3 17.09 8.5 17.26 8.76 17.41L6.26 19.86Z"; -var mdiFoodForkDrink = "M3,3A1,1 0 0,0 2,4V8L2,9.5C2,11.19 3.03,12.63 4.5,13.22V19.5A1.5,1.5 0 0,0 6,21A1.5,1.5 0 0,0 7.5,19.5V13.22C8.97,12.63 10,11.19 10,9.5V8L10,4A1,1 0 0,0 9,3A1,1 0 0,0 8,4V8A0.5,0.5 0 0,1 7.5,8.5A0.5,0.5 0 0,1 7,8V4A1,1 0 0,0 6,3A1,1 0 0,0 5,4V8A0.5,0.5 0 0,1 4.5,8.5A0.5,0.5 0 0,1 4,8V4A1,1 0 0,0 3,3M19.88,3C19.75,3 19.62,3.09 19.5,3.16L16,5.25V9H12V11H13L14,21H20L21,11H22V9H18V6.34L20.5,4.84C21,4.56 21.13,4 20.84,3.5C20.63,3.14 20.26,2.95 19.88,3Z"; -var mdiFoodHalal = "M7 5V15C7 16.11 6.11 17 5 17H4C3.45 17 3 16.55 3 16V13H1V16C1 17.66 2.34 19 4 19H5C7.21 19 9 17.21 9 15V5M23 13.38L21.77 12.15C21.03 11.41 20.04 11 19 11H17V13H19C19.5 13 20 13.2 20.35 13.56L20.7 13.91L19.5 14.6C19.04 14.86 18.53 15 18 15H17C16.44 15 16 14.56 16 14V6H14V9.81L13.38 9.12C12.7 8.37 11.6 8 10.59 8H10V10H10.59C11.23 10 11.84 10.25 12.29 10.71L14 12.41V14C14 15.12 13.12 16 12 16H10V18H12C13.37 18 14.5 17.3 15.17 16.24C15.63 16.71 16.25 17 17 17H18C18.88 17 19.74 16.77 20.5 16.33L23 14.89Z"; -var mdiFoodKosher = "M1 7V9H3C3.57 9 4 9.43 4 10V17H6V10C6 8.36 4.64 7 3 7H1M7 7V14C7 15.65 8.36 17 10 17H14C15.65 17 17 15.65 17 14V7H15V14C15 14.57 14.57 15 14 15H10C9.43 15 9 14.57 9 14V13H10C11.65 13 13 11.65 13 10V7H11V10C11 10.57 10.57 11 10 11H9V7H7M18 7V9H20C20.57 9 21 9.43 21 10V14C21 14.57 20.57 15 20 15H18V17H20C21.65 17 23 15.65 23 14V10C23 8.36 21.65 7 20 7H18Z"; -var mdiFoodOff = "M2,5.27L3.28,4L21,21.72L19.73,23L17.73,21H15.5L15.21,18.5L12.97,16.24C12.86,16.68 12.47,17 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15H8L9.5,16.5L11,15H11.73L10.73,14H2A3,3 0 0,1 5,11H7.73L2,5.27M14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.74,18.92L14.54,12.72L14,8M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13Z"; -var mdiFoodSteak = "M11.9 2C8 2 4.9 5.4 5 9.3C5.1 11.9 6.6 14.1 8.7 15.2C10.1 15.9 11 17.3 11 18.8V19C11 20.7 12.3 22 14 22C18 22 19 17 19 9C19 9 19 2 11.9 2M14 20C13.4 20 13 19.6 13 19V18.8C13 16.6 11.7 14.5 9.7 13.4C8.1 12.6 7.1 11 7 9.2C7 7.9 7.5 6.5 8.4 5.5C9.3 4.5 10.6 4 11.8 4C16.7 4 17 8.2 17 9C17 18.9 15.3 20 14 20M15.8 7.6L8.3 10.3C8.1 10 8 9.6 8 9.1C8 8.4 8.2 7.8 8.5 7.1L13.7 5.2C14.9 5.8 15.5 6.7 15.8 7.6M12.9 15.1L15.7 14.1C15.6 15.6 15.3 16.7 15.1 17.4L13.8 17.9C13.8 16.9 13.5 16 12.9 15.1M16 9.2C16 10.4 16 11.5 15.9 12.4L11.9 13.9C11.4 13.4 10.8 12.9 10.1 12.6C9.7 12.4 9.3 12.1 9 11.8L16 9.2Z"; -var mdiFoodSteakOff = "M2.39 1.73L1.11 3L5.27 7.16C5.08 7.83 5 8.53 5 9.26C5.1 11.83 6.59 14.05 8.74 15.19C10.1 15.9 11 17.25 11 18.79V19C11 20.66 12.34 22 14 22C15.68 22 16.83 21.11 17.6 19.5L20.84 22.73L22.11 21.46L2.39 1.73M14 20C13.45 20 13 19.55 13 19V18.79C13 16.56 11.72 14.5 9.67 13.42C8.09 12.58 7.07 10.96 7 9.18C7 9.09 7 9 7 8.9L8.16 10.05C8.19 10.15 8.21 10.25 8.24 10.35L8.4 10.29L9.62 11.5L9.08 11.71C9.38 12.04 9.73 12.32 10.14 12.53C10.81 12.89 11.4 13.34 11.91 13.85L11.95 13.84L13.17 15.06L12.95 15.14C13.46 15.96 13.8 16.89 13.93 17.85L15.2 17.39C15.22 17.32 15.25 17.24 15.27 17.16L16.07 17.96C15.47 19.68 14.68 20 14 20M15.79 7.6L12.14 8.94L9.88 6.68L13.69 5.3C14.94 5.77 15.53 6.72 15.79 7.6M8.59 5.39L7.17 3.97C8.41 2.77 10.07 2 11.88 2H11.88C19 2 19 9 19 9C19 11.46 18.9 13.63 18.66 15.46L16.84 13.64C16.94 12.36 17 10.83 17 9C17 8.18 16.69 4 11.88 4H11.88C10.67 4 9.5 4.5 8.59 5.39M15.68 12.5L13.36 10.15L16 9.19C16 10.41 15.97 11.46 15.92 12.4L15.68 12.5Z"; -var mdiFoodTurkey = "M5.44 7.96L5.96 7.43C6.54 6.85 7.5 6.85 8.1 7.47L8.12 7.5C8.61 8 9.26 8.24 9.97 8.31C10.94 8.4 11.88 8.92 12.5 9.86C13.18 10.94 13.17 12.38 12.46 13.45C11.26 15.3 8.75 15.5 7.28 14C6.72 13.45 6.4 12.74 6.32 12C6.24 11.27 5.95 10.58 5.44 10.07C4.86 9.5 4.86 8.54 5.44 7.96M9.64 16C8.47 16 7.38 15.55 6.57 14.72C5.87 14 5.43 13.1 5.32 12.12C5.29 11.82 5.2 11.43 4.96 11.07C4.36 11.9 4 12.9 4 14C4 15.64 4.8 17.09 6.03 18H19V17C19 13.4 16.61 10.35 13.34 9.35C14.23 10.75 14.21 12.62 13.3 14C12.5 15.25 11.12 16 9.64 16M14.78 7.56H16.05C16.92 7.56 17.68 8.17 17.68 9.26V10H18.93V9C18.93 7.5 17.6 6.36 16.05 6.36H14.78C13.95 6.36 13.24 5.54 13.24 4.7S13.95 3.24 14.78 3.24V2C13.24 2 12 3.24 12 4.78S13.24 7.56 14.78 7.56M4.5 7.55C4.56 7.45 4.64 7.35 4.73 7.25L5.25 6.73C5.34 6.64 5.44 6.57 5.54 6.5L4.13 5.07C4.27 4.8 4.22 4.45 4 4.22C3.7 3.93 3.22 3.93 2.93 4.22C2.79 4.36 2.72 4.53 2.71 4.71C2.53 4.72 2.36 4.79 2.22 4.93C1.93 5.22 1.93 5.7 2.22 6C2.45 6.22 2.79 6.27 3.07 6.13L4.5 7.55M18.39 4.39C18.9 3.88 19.22 3.19 19.22 2.42H17.97C17.97 3.25 17.27 3.95 16.44 3.95V5.19C18.3 5.19 19.76 6.71 19.76 8.57V11H21V8.57C21 6.72 19.94 5.13 18.39 4.39M5 21H19C20.11 21 21 20.11 21 19H3C3 20.11 3.9 21 5 21Z"; -var mdiFoodVariant = "M22,18A4,4 0 0,1 18,22H15A4,4 0 0,1 11,18V16H17.79L20.55,11.23L22.11,12.13L19.87,16H22V18M9,22H2C2,19 2,16 2.33,12.83C2.6,10.3 3.08,7.66 3.6,5H3V3H4L7,3H8V5H7.4C7.92,7.66 8.4,10.3 8.67,12.83C9,16 9,19 9,22Z"; -var mdiFoodVariantOff = "M2.28 3L1 4.27L3.31 6.58C2.91 8.7 2.55 10.8 2.33 12.83C2 16 2 19 2 22H9C9 19 9 16 8.67 12.83C8.63 12.5 8.58 12.15 8.54 11.81L12.73 16H11V18C11 20.21 12.79 22 15 22H18C18.23 22 18.45 22 18.67 21.94L19.73 23L21 21.72M4.82 3L7.53 5.71C7.5 5.47 7.45 5.24 7.4 5H8V3H7M20.55 11.23L17.8 16L21.59 19.76C21.86 19.21 22 18.61 22 18V16H19.87L22.11 12.13Z"; -var mdiFootPrint = "M16 2A2 2 0 1 1 14 4A2 2 0 0 1 16 2M12.04 3A1.5 1.5 0 1 1 10.54 4.5A1.5 1.5 0 0 1 12.04 3M9.09 4.5A1 1 0 1 1 8.09 5.5A1 1 0 0 1 9.09 4.5M7.04 6A1 1 0 1 1 6.04 7A1 1 0 0 1 7.04 6M14.53 12A2.5 2.5 0 0 0 17 9.24A2.6 2.6 0 0 0 14.39 7H11.91A6 6 0 0 0 6.12 11.4A2 2 0 0 0 6.23 12.8A6.8 6.8 0 0 1 6.91 15.76A6.89 6.89 0 0 1 6.22 18.55A1.92 1.92 0 0 0 6.3 20.31A3.62 3.62 0 0 0 10.19 21.91A3.5 3.5 0 0 0 12.36 16.63A2.82 2.82 0 0 1 11.91 15S11.68 12 14.53 12Z"; -var mdiFootball = "M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C15.46,3.67 17.5,3.83 18.6,4C19.71,4.15 19.87,4.31 20.03,5.41C20.18,6.5 20.33,8.55 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C8.55,20.33 6.5,20.18 5.41,20.03C4.31,19.87 4.15,19.71 4,18.6C3.83,17.5 3.67,15.46 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M7.3,15.79L8.21,16.7L9.42,15.5L10.63,16.7L11.54,15.79L10.34,14.58L12,12.91L13.21,14.12L14.12,13.21L12.91,12L14.58,10.34L15.79,11.54L16.7,10.63L15.5,9.42L16.7,8.21L15.79,7.3L14.58,8.5L13.37,7.3L12.46,8.21L13.66,9.42L12,11.09L10.79,9.88L9.88,10.79L11.09,12L9.42,13.66L8.21,12.46L7.3,13.37L8.5,14.58L7.3,15.79Z"; -var mdiFootballAustralian = "M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C18,3 21,6 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C6,21 3,18 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M10.62,11.26L10.26,11.62L12.38,13.74L12.74,13.38L10.62,11.26M11.62,10.26L11.26,10.62L13.38,12.74L13.74,12.38L11.62,10.26M9.62,12.26L9.26,12.62L11.38,14.74L11.74,14.38L9.62,12.26M12.63,9.28L12.28,9.63L14.4,11.75L14.75,11.4L12.63,9.28M8.63,13.28L8.28,13.63L10.4,15.75L10.75,15.4L8.63,13.28M13.63,8.28L13.28,8.63L15.4,10.75L15.75,10.4L13.63,8.28Z"; -var mdiFootballHelmet = "M13.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,15A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 13.5,12M13.5,3C18.19,3 22,6.58 22,11C22,12.62 22,14 21.09,16C17,16 16,20 12.5,20C10.32,20 9.27,18.28 9.05,16H9L8.24,16L6.96,20.3C6.81,20.79 6.33,21.08 5.84,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19V16A1,1 0 0,1 2,15A1,1 0 0,1 3,14H6.75L7.23,12.39C6.72,12.14 6.13,12 5.5,12H5.07L5,11C5,6.58 8.81,3 13.5,3M5,16V19H5.26L6.15,16H5Z"; -var mdiForklift = "M6,4V11H4C2.89,11 2,11.89 2,13V17A3,3 0 0,0 5,20A3,3 0 0,0 8,17H10A3,3 0 0,0 13,20A3,3 0 0,0 16,17V13L12,4H6M17,5V19H22V17.5H18.5V5H17M7.5,5.5H11.2L14.5,13H7.5V5.5M5,15.5A1.5,1.5 0 0,1 6.5,17A1.5,1.5 0 0,1 5,18.5A1.5,1.5 0 0,1 3.5,17A1.5,1.5 0 0,1 5,15.5M13,15.5A1.5,1.5 0 0,1 14.5,17A1.5,1.5 0 0,1 13,18.5A1.5,1.5 0 0,1 11.5,17A1.5,1.5 0 0,1 13,15.5Z"; -var mdiFormDropdown = "M17 5H20L18.5 7L17 5M3 2H21C22.11 2 23 2.9 23 4V8C23 9.11 22.11 10 21 10H16V20C16 21.11 15.11 22 14 22H3C1.9 22 1 21.11 1 20V4C1 2.9 1.9 2 3 2M3 4V8H14V4H3M21 8V4H16V8H21M3 20H14V10H3V20M5 12H12V14H5V12M5 16H12V18H5V16Z"; -var mdiFormSelect = "M15 5H18L16.5 7L15 5M5 2H19C20.11 2 21 2.9 21 4V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V4C3 2.9 3.9 2 5 2M5 4V8H19V4H5M5 20H19V10H5V20M7 12H17V14H7V12M7 16H17V18H7V16Z"; -var mdiFormTextarea = "M13 9H4V23H2V7H13M23 9V7H17V5A1 1 0 0 1 18 4H20V2H17.5C17 2 16 2.45 16 3C16 2.45 15.05 2 14.5 2H12V4H14A1 1 0 0 1 15 5V19A1 1 0 0 1 14 20H12V22H14.5C15.05 22 16 21.55 16 21C16 21.55 16.95 22 17.5 22H20V20H18A1 1 0 0 1 17 19V9Z"; -var mdiFormTextbox = "M17,7H22V17H17V19A1,1 0 0,0 18,20H20V22H17.5C16.95,22 16,21.55 16,21C16,21.55 15.05,22 14.5,22H12V20H14A1,1 0 0,0 15,19V5A1,1 0 0,0 14,4H12V2H14.5C15.05,2 16,2.45 16,3C16,2.45 16.95,2 17.5,2H20V4H18A1,1 0 0,0 17,5V7M2,7H13V9H4V15H13V17H2V7M20,15V9H17V15H20Z"; -var mdiFormTextboxLock = "M2 7H6V9H4V15H6V17H2V7M10 7H22V12C21.42 11.56 20.74 11.25 20 11.1V9H10V15H14.25C13.56 15 13 15.56 13 16.25V17H10V19C10 19.55 10.45 20 11 20H13V22H10.5C9.95 22 9 21.55 9 21C9 21.55 8.05 22 7.5 22H5V20H7C7.55 20 8 19.55 8 19V5C8 4.45 7.55 4 7 4H5V2H7.5C8.05 2 9 2.45 9 3C9 2.45 9.95 2 10.5 2H13V4H11C10.45 4 10 4.45 10 5V7M21.8 17C22.4 17 23 17.6 23 18.3V21.8C23 22.4 22.4 23 21.7 23H16.2C15.6 23 15 22.4 15 21.7V18.2C15 17.6 15.6 17 16.2 17V15.5C16.2 14.1 17.6 13 19 13C20.4 13 21.8 14.1 21.8 15.5V17M20.5 17V15.5C20.5 14.7 19.8 14.2 19 14.2C18.2 14.2 17.5 14.7 17.5 15.5V17H20.5Z"; -var mdiFormTextboxPassword = "M17,7H22V17H17V19A1,1 0 0,0 18,20H20V22H17.5C16.95,22 16,21.55 16,21C16,21.55 15.05,22 14.5,22H12V20H14A1,1 0 0,0 15,19V5A1,1 0 0,0 14,4H12V2H14.5C15.05,2 16,2.45 16,3C16,2.45 16.95,2 17.5,2H20V4H18A1,1 0 0,0 17,5V7M2,7H13V9H4V15H13V17H2V7M20,15V9H17V15H20M8.5,12A1.5,1.5 0 0,0 7,10.5A1.5,1.5 0 0,0 5.5,12A1.5,1.5 0 0,0 7,13.5A1.5,1.5 0 0,0 8.5,12M13,10.89C12.39,10.33 11.44,10.38 10.88,11C10.32,11.6 10.37,12.55 11,13.11C11.55,13.63 12.43,13.63 13,13.11V10.89Z"; -var mdiFormatAlignBottom = "M13,9L15.5,6.5L16.92,7.92L12,12.84L7.08,7.92L8.5,6.5L11,9V3H13V9M3,15H21V17H3V15M3,19H13V21H3V19Z"; -var mdiFormatAlignCenter = "M3,3H21V5H3V3M7,7H17V9H7V7M3,11H21V13H3V11M7,15H17V17H7V15M3,19H21V21H3V19Z"; -var mdiFormatAlignJustify = "M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z"; -var mdiFormatAlignLeft = "M3,3H21V5H3V3M3,7H15V9H3V7M3,11H21V13H3V11M3,15H15V17H3V15M3,19H21V21H3V19Z"; -var mdiFormatAlignMiddle = "M13,6L15,4L16.42,5.42L12,9.84L7.58,5.42L9,4L11,6V2H13V6M3,11H21V13H3V11M13,18V22H11V18L9,20L7.58,18.58L12,14.16L16.42,18.58L15,20L13,18Z"; -var mdiFormatAlignRight = "M3,3H21V5H3V3M9,7H21V9H9V7M3,11H21V13H3V11M9,15H21V17H9V15M3,19H21V21H3V19Z"; -var mdiFormatAlignTop = "M13,15L15.5,17.5L16.92,16.08L12,11.16L7.08,16.08L8.5,17.5L11,15V21H13V15M3,3H21V5H3V3M3,7H13V9H3V7Z"; -var mdiFormatAnnotationMinus = "M10.5,7H8.5L3,21H5.2L6.3,18H12.5L13.6,21H16L10.5,7M7.1,16L9.5,9.7L11.9,16H7.1M22,7H14V5H22V7Z"; -var mdiFormatAnnotationPlus = "M8.5,7H10.5L16,21H13.6L12.5,18H6.3L5.2,21H3L8.5,7M7.1,16H11.9L9.5,9.7L7.1,16M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z"; -var mdiFormatBold = "M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z"; -var mdiFormatClear = "M6,5V5.18L8.82,8H11.22L10.5,9.68L12.6,11.78L14.21,8H20V5H6M3.27,5L2,6.27L8.97,13.24L6.5,19H9.5L11.07,15.34L16.73,21L18,19.73L3.55,5.27L3.27,5Z"; -var mdiFormatColorFill = "M19,11.5C19,11.5 17,13.67 17,15A2,2 0 0,0 19,17A2,2 0 0,0 21,15C21,13.67 19,11.5 19,11.5M5.21,10L10,5.21L14.79,10M16.56,8.94L7.62,0L6.21,1.41L8.59,3.79L3.44,8.94C2.85,9.5 2.85,10.47 3.44,11.06L8.94,16.56C9.23,16.85 9.62,17 10,17C10.38,17 10.77,16.85 11.06,16.56L16.56,11.06C17.15,10.47 17.15,9.5 16.56,8.94Z"; -var mdiFormatColorHighlight = "M4,17L6.75,14.25L6.72,14.23C6.14,13.64 6.14,12.69 6.72,12.11L11.46,7.37L15.7,11.61L10.96,16.35C10.39,16.93 9.46,16.93 8.87,16.37L8.24,17H4M15.91,2.91C16.5,2.33 17.45,2.33 18.03,2.91L20.16,5.03C20.74,5.62 20.74,6.57 20.16,7.16L16.86,10.45L12.62,6.21L15.91,2.91Z"; -var mdiFormatColorMarkerCancel = "M16.5 8C14 8 12 10 12 12.5S14 17 16.5 17 21 15 21 12.5 19 8 16.5 8M16.5 15.5C14.8 15.5 13.5 14.2 13.5 12.5C13.5 11.9 13.7 11.4 13.9 11L18 15.1C17.6 15.3 17.1 15.5 16.5 15.5M19.1 14L15 9.9C15.4 9.6 15.9 9.5 16.5 9.5C18.2 9.5 19.5 10.8 19.5 12.5C19.5 13.1 19.3 13.6 19.1 14M12.1 7.7L10.6 6.2L13.9 2.9C14.5 2.3 15.4 2.3 16 2.9L18.2 5C18.6 5.4 18.7 5.8 18.6 6.3C18 6.1 17.3 6 16.6 6C14.8 6 13.3 6.7 12.1 7.7M10.5 14.9L9 16.3C8.4 16.9 7.5 16.9 6.9 16.3L6.2 17H2L4.8 14.2C4.2 13.6 4.2 12.7 4.8 12.1L9.5 7.4L11.1 9C10.4 10 10 11.2 10 12.5C10 13.3 10.2 14.1 10.5 14.9Z"; -var mdiFormatColorText = "M9.62,12L12,5.67L14.37,12M11,3L5.5,17H7.75L8.87,14H15.12L16.25,17H18.5L13,3H11Z"; -var mdiFormatColumns = "M3,3H11V5H3V3M13,3H21V5H13V3M3,7H11V9H3V7M13,7H21V9H13V7M3,11H11V13H3V11M13,11H21V13H13V11M3,15H11V17H3V15M13,15H21V17H13V15M3,19H11V21H3V19M13,19H21V21H13V19Z"; -var mdiFormatFloatCenter = "M9,7H15V13H9V7M3,3H21V5H3V3M3,15H21V17H3V15M3,19H17V21H3V19Z"; -var mdiFormatFloatLeft = "M3,7H9V13H3V7M3,3H21V5H3V3M21,7V9H11V7H21M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z"; -var mdiFormatFloatNone = "M3,7H9V13H3V7M3,3H21V5H3V3M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z"; -var mdiFormatFloatRight = "M15,7H21V13H15V7M3,3H21V5H3V3M13,7V9H3V7H13M9,11V13H3V11H9M3,15H17V17H3V15M3,19H21V21H3V19Z"; -var mdiFormatFont = "M17,8H20V20H21V21H17V20H18V17H14L12.5,20H14V21H10V20H11L17,8M18,9L14.5,16H18V9M5,3H10C11.11,3 12,3.89 12,5V16H9V11H6V16H3V5C3,3.89 3.89,3 5,3M6,5V9H9V5H6Z"; -var mdiFormatFontSizeDecrease = "M5.12,14L7.5,7.67L9.87,14M6.5,5L1,19H3.25L4.37,16H10.62L11.75,19H14L8.5,5H6.5M18,17L23,11.93L21.59,10.5L19,13.1V7H17V13.1L14.41,10.5L13,11.93L18,17Z"; -var mdiFormatFontSizeIncrease = "M5.12,14L7.5,7.67L9.87,14M6.5,5L1,19H3.25L4.37,16H10.62L11.75,19H14L8.5,5H6.5M18,7L13,12.07L14.41,13.5L17,10.9V17H19V10.9L21.59,13.5L23,12.07L18,7Z"; -var mdiFormatHeader1 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M14,18V16H16V6.31L13.5,7.75V5.44L16,4H18V16H20V18H14Z"; -var mdiFormatHeader2 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M21,18H15A2,2 0 0,1 13,16C13,15.47 13.2,15 13.54,14.64L18.41,9.41C18.78,9.05 19,8.55 19,8A2,2 0 0,0 17,6A2,2 0 0,0 15,8H13A4,4 0 0,1 17,4A4,4 0 0,1 21,8C21,9.1 20.55,10.1 19.83,10.83L15,16H21V18Z"; -var mdiFormatHeader3 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V15H15V16H19V12H15V10H19V6H15V7H13V6A2,2 0 0,1 15,4Z"; -var mdiFormatHeader4 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M18,18V13H13V11L18,4H20V11H21V13H20V18H18M18,11V7.42L15.45,11H18Z"; -var mdiFormatHeader5 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H20V6H15V10H17A4,4 0 0,1 21,14A4,4 0 0,1 17,18H15A2,2 0 0,1 13,16V15H15V16H17A2,2 0 0,0 19,14A2,2 0 0,0 17,12H15A2,2 0 0,1 13,10V6A2,2 0 0,1 15,4Z"; -var mdiFormatHeader6 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V7H19V6H15V10H19A2,2 0 0,1 21,12V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V6A2,2 0 0,1 15,4M15,12V16H19V12H15Z"; -var mdiFormatHeaderDecrease = "M4,4H6V10H10V4H12V18H10V12H6V18H4V4M20.42,7.41L16.83,11L20.42,14.59L19,16L14,11L19,6L20.42,7.41Z"; -var mdiFormatHeaderEqual = "M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14,10V8H21V10H14M14,12H21V14H14V12Z"; -var mdiFormatHeaderIncrease = "M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14.59,7.41L18.17,11L14.59,14.59L16,16L21,11L16,6L14.59,7.41Z"; -var mdiFormatHeaderPound = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M13,8H15.31L15.63,5H17.63L17.31,8H19.31L19.63,5H21.63L21.31,8H23V10H21.1L20.9,12H23V14H20.69L20.37,17H18.37L18.69,14H16.69L16.37,17H14.37L14.69,14H13V12H14.9L15.1,10H13V8M17.1,10L16.9,12H18.9L19.1,10H17.1Z"; -var mdiFormatHorizontalAlignCenter = "M19,16V13H23V11H19V8L15,12L19,16M5,8V11H1V13H5V16L9,12L5,8M11,20H13V4H11V20Z"; -var mdiFormatHorizontalAlignLeft = "M11,16V13H21V11H11V8L7,12L11,16M3,20H5V4H3V20Z"; -var mdiFormatHorizontalAlignRight = "M13,8V11H3V13H13V16L17,12L13,8M19,20H21V4H19V20Z"; -var mdiFormatIndentDecrease = "M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M3,21H21V19H3M3,12L7,16V8M11,17H21V15H11V17Z"; -var mdiFormatIndentIncrease = "M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M11,17H21V15H11M3,8V16L7,12M3,21H21V19H3V21Z"; -var mdiFormatItalic = "M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z"; -var mdiFormatLetterCase = "M20.06,18C20,17.83 19.91,17.54 19.86,17.11C19.19,17.81 18.38,18.16 17.45,18.16C16.62,18.16 15.93,17.92 15.4,17.45C14.87,17 14.6,16.39 14.6,15.66C14.6,14.78 14.93,14.1 15.6,13.61C16.27,13.12 17.21,12.88 18.43,12.88H19.83V12.24C19.83,11.75 19.68,11.36 19.38,11.07C19.08,10.78 18.63,10.64 18.05,10.64C17.53,10.64 17.1,10.76 16.75,11C16.4,11.25 16.23,11.54 16.23,11.89H14.77C14.77,11.46 14.92,11.05 15.22,10.65C15.5,10.25 15.93,9.94 16.44,9.71C16.95,9.5 17.5,9.36 18.13,9.36C19.11,9.36 19.87,9.6 20.42,10.09C20.97,10.58 21.26,11.25 21.28,12.11V16C21.28,16.8 21.38,17.42 21.58,17.88V18H20.06M17.66,16.88C18.11,16.88 18.54,16.77 18.95,16.56C19.35,16.35 19.65,16.07 19.83,15.73V14.16H18.7C16.93,14.16 16.04,14.63 16.04,15.57C16.04,16 16.19,16.3 16.5,16.53C16.8,16.76 17.18,16.88 17.66,16.88M5.46,13.71H9.53L7.5,8.29L5.46,13.71M6.64,6H8.36L13.07,18H11.14L10.17,15.43H4.82L3.86,18H1.93L6.64,6Z"; -var mdiFormatLetterCaseLower = "M20.06,18C20,17.83 19.91,17.54 19.86,17.11C19.19,17.81 18.38,18.16 17.45,18.16C16.62,18.16 15.93,17.92 15.4,17.45C14.87,17 14.6,16.39 14.6,15.66C14.6,14.78 14.93,14.1 15.6,13.61C16.27,13.12 17.21,12.88 18.43,12.88H19.83V12.24C19.83,11.75 19.68,11.36 19.38,11.07C19.08,10.78 18.63,10.64 18.05,10.64C17.53,10.64 17.1,10.76 16.75,11C16.4,11.25 16.23,11.54 16.23,11.89H14.77C14.77,11.46 14.92,11.05 15.22,10.65C15.5,10.25 15.93,9.94 16.44,9.71C16.95,9.5 17.5,9.36 18.13,9.36C19.11,9.36 19.87,9.6 20.42,10.09C20.97,10.58 21.26,11.25 21.28,12.11V16C21.28,16.8 21.38,17.42 21.58,17.88V18H20.06M17.66,16.88C18.11,16.88 18.54,16.77 18.95,16.56C19.35,16.35 19.65,16.07 19.83,15.73V14.16H18.7C16.93,14.16 16.04,14.63 16.04,15.57C16.04,16 16.19,16.3 16.5,16.53C16.8,16.76 17.18,16.88 17.66,16.88M5.46,13.71H9.53L7.5,8.29L5.46,13.71M6.64,6H8.36L13.07,18H11.14L10.17,15.43H4.82L3.86,18H1.93L6.64,6M22,20V22H14.5V20H22Z"; -var mdiFormatLetterCaseUpper = "M20.06,18C20,17.83 19.91,17.54 19.86,17.11C19.19,17.81 18.38,18.16 17.45,18.16C16.62,18.16 15.93,17.92 15.4,17.45C14.87,17 14.6,16.39 14.6,15.66C14.6,14.78 14.93,14.1 15.6,13.61C16.27,13.12 17.21,12.88 18.43,12.88H19.83V12.24C19.83,11.75 19.68,11.36 19.38,11.07C19.08,10.78 18.63,10.64 18.05,10.64C17.53,10.64 17.1,10.76 16.75,11C16.4,11.25 16.23,11.54 16.23,11.89H14.77C14.77,11.46 14.92,11.05 15.22,10.65C15.5,10.25 15.93,9.94 16.44,9.71C16.95,9.5 17.5,9.36 18.13,9.36C19.11,9.36 19.87,9.6 20.42,10.09C20.97,10.58 21.26,11.25 21.28,12.11V16C21.28,16.8 21.38,17.42 21.58,17.88V18H20.06M17.66,16.88C18.11,16.88 18.54,16.77 18.95,16.56C19.35,16.35 19.65,16.07 19.83,15.73V14.16H18.7C16.93,14.16 16.04,14.63 16.04,15.57C16.04,16 16.19,16.3 16.5,16.53C16.8,16.76 17.18,16.88 17.66,16.88M5.46,13.71H9.53L7.5,8.29L5.46,13.71M6.64,6H8.36L13.07,18H11.14L10.17,15.43H4.82L3.86,18H1.93L6.64,6M2,20H13V22H2V20Z"; -var mdiFormatLetterEndsWith = "M11.14 4L6.43 16H8.36L9.32 13.43H14.67L15.64 16H17.57L12.86 4M12 6.29L14.03 11.71H9.96M20 14V18H2V20H22V14Z"; -var mdiFormatLetterMatches = "M11.14 4L6.43 16H8.36L9.32 13.43H14.67L15.64 16H17.57L12.86 4M12 6.29L14.03 11.71H9.96M20 14V18H4V15H2V20H22V14Z"; -var mdiFormatLetterStartsWith = "M11.14 4L6.43 16H8.36L9.32 13.43H14.67L15.64 16H17.57L12.86 4M12 6.29L14.03 11.71H9.96M4 18V15H2V20H22V18Z"; -var mdiFormatLineSpacing = "M10,13H22V11H10M10,19H22V17H10M10,7H22V5H10M6,7H8.5L5,3.5L1.5,7H4V17H1.5L5,20.5L8.5,17H6V7Z"; -var mdiFormatLineStyle = "M3,16H8V14H3V16M9.5,16H14.5V14H9.5V16M16,16H21V14H16V16M3,20H5V18H3V20M7,20H9V18H7V20M11,20H13V18H11V20M15,20H17V18H15V20M19,20H21V18H19V20M3,12H11V10H3V12M13,12H21V10H13V12M3,4V8H21V4H3Z"; -var mdiFormatLineWeight = "M3,17H21V15H3V17M3,20H21V19H3V20M3,13H21V10H3V13M3,4V8H21V4H3Z"; -var mdiFormatListBulleted = "M7,5H21V7H7V5M7,13V11H21V13H7M4,4.5A1.5,1.5 0 0,1 5.5,6A1.5,1.5 0 0,1 4,7.5A1.5,1.5 0 0,1 2.5,6A1.5,1.5 0 0,1 4,4.5M4,10.5A1.5,1.5 0 0,1 5.5,12A1.5,1.5 0 0,1 4,13.5A1.5,1.5 0 0,1 2.5,12A1.5,1.5 0 0,1 4,10.5M7,19V17H21V19H7M4,16.5A1.5,1.5 0 0,1 5.5,18A1.5,1.5 0 0,1 4,19.5A1.5,1.5 0 0,1 2.5,18A1.5,1.5 0 0,1 4,16.5Z"; -var mdiFormatListBulletedSquare = "M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9"; -var mdiFormatListBulletedTriangle = "M5,15.5L7.5,20H2.5L5,15.5M9,19H21V17H9V19M5,9.5L7.5,14H2.5L5,9.5M9,13H21V11H9V13M5,3.5L7.5,8H2.5L5,3.5M9,7H21V5H9V7Z"; -var mdiFormatListBulletedType = "M5,9.5L7.5,14H2.5L5,9.5M3,4H7V8H3V4M5,20A2,2 0 0,0 7,18A2,2 0 0,0 5,16A2,2 0 0,0 3,18A2,2 0 0,0 5,20M9,5V7H21V5H9M9,19H21V17H9V19M9,13H21V11H9V13Z"; -var mdiFormatListCheckbox = "M21,19V17H8V19H21M21,13V11H8V13H21M8,7H21V5H8V7M4,5V7H6V5H4M3,5A1,1 0 0,1 4,4H6A1,1 0 0,1 7,5V7A1,1 0 0,1 6,8H4A1,1 0 0,1 3,7V5M4,11V13H6V11H4M3,11A1,1 0 0,1 4,10H6A1,1 0 0,1 7,11V13A1,1 0 0,1 6,14H4A1,1 0 0,1 3,13V11M4,17V19H6V17H4M3,17A1,1 0 0,1 4,16H6A1,1 0 0,1 7,17V19A1,1 0 0,1 6,20H4A1,1 0 0,1 3,19V17Z"; -var mdiFormatListChecks = "M3,5H9V11H3V5M5,7V9H7V7H5M11,7H21V9H11V7M11,15H21V17H11V15M5,20L1.5,16.5L2.91,15.09L5,17.17L9.59,12.59L11,14L5,20Z"; -var mdiFormatListNumbered = "M7,13V11H21V13H7M7,19V17H21V19H7M7,7V5H21V7H7M3,8V5H2V4H4V8H3M2,17V16H5V20H2V19H4V18.5H3V17.5H4V17H2M4.25,10A0.75,0.75 0 0,1 5,10.75C5,10.95 4.92,11.14 4.79,11.27L3.12,13H5V14H2V13.08L4,11H2V10H4.25Z"; -var mdiFormatListNumberedRtl = "M3,13V11H17V13H3M3,19V17H17V19H3M3,7V5H17V7H3M20,8V5H19V4H21V8H20M19,17V16H22V20H19V19H21V18.5H20V17.5H21V17H19M21.25,10C21.67,10 22,10.34 22,10.75C22,10.95 21.92,11.14 21.79,11.27L20.12,13H22V14H19V13.08L21,11H19V10H21.25Z"; -var mdiFormatListText = "M2 14H8V20H2M16 8H10V10H16M2 10H8V4H2M10 4V6H22V4M10 20H16V18H10M10 16H22V14H10"; -var mdiFormatOverline = "M5,5H19V3H5V5M9.62,16L12,9.67L14.37,16M11,7L5.5,21H7.75L8.87,18H15.12L16.25,21H18.5L13,7H11Z"; -var mdiFormatPageBreak = "M18,20H6V18H4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V18H18V20M14,2H6A2,2 0 0,0 4,4V12H6V4H14V8H18V12H20V8L14,2M11,16H8V14H11V16M16,16H13V14H16V16M3,14H6V16H3V14M21,16H18V14H21V16Z"; -var mdiFormatPaint = "M18,4V3A1,1 0 0,0 17,2H5A1,1 0 0,0 4,3V7A1,1 0 0,0 5,8H17A1,1 0 0,0 18,7V6H19V10H9V21A1,1 0 0,0 10,22H12A1,1 0 0,0 13,21V12H21V4H18Z"; -var mdiFormatParagraph = "M13,4A4,4 0 0,1 17,8A4,4 0 0,1 13,12H11V18H9V4H13M13,10A2,2 0 0,0 15,8A2,2 0 0,0 13,6H11V10H13Z"; -var mdiFormatPilcrow = "M10,11A4,4 0 0,1 6,7A4,4 0 0,1 10,3H18V5H16V21H14V5H12V21H10V11Z"; -var mdiFormatQuoteClose = "M14,17H17L19,13V7H13V13H16M6,17H9L11,13V7H5V13H8L6,17Z"; -var mdiFormatQuoteCloseOutline = "M13 6V14H14.88L12.88 18H18.62L21 13.24V6M15 8H19V12.76L17.38 16H16.12L18.12 12H15M3 6V14H4.88L2.88 18H8.62L11 13.24V6M5 8H9V12.76L7.38 16H6.12L8.12 12H5Z"; -var mdiFormatQuoteOpen = "M10,7L8,11H11V17H5V11L7,7H10M18,7L16,11H19V17H13V11L15,7H18Z"; -var mdiFormatQuoteOpenOutline = "M11 18V10H9.12L11.12 6H5.38L3 10.76V18M9 16H5V11.24L6.62 8H7.88L5.88 12H9M21 18V10H19.12L21.12 6H15.38L13 10.76V18M19 16H15V11.24L16.62 8H17.88L15.88 12H19Z"; -var mdiFormatRotate90 = "M7.34,6.41L0.86,12.9L7.35,19.38L13.84,12.9L7.34,6.41M3.69,12.9L7.35,9.24L11,12.9L7.34,16.56L3.69,12.9M19.36,6.64C17.61,4.88 15.3,4 13,4V0.76L8.76,5L13,9.24V6C14.79,6 16.58,6.68 17.95,8.05C20.68,10.78 20.68,15.22 17.95,17.95C16.58,19.32 14.79,20 13,20C12.03,20 11.06,19.79 10.16,19.39L8.67,20.88C10,21.62 11.5,22 13,22C15.3,22 17.61,21.12 19.36,19.36C22.88,15.85 22.88,10.15 19.36,6.64Z"; -var mdiFormatSection = "M15.67,4.42C14.7,3.84 13.58,3.54 12.45,3.56C10.87,3.56 9.66,4.34 9.66,5.56C9.66,6.96 11,7.47 13,8.14C15.5,8.95 17.4,9.97 17.4,12.38C17.36,13.69 16.69,14.89 15.6,15.61C16.25,16.22 16.61,17.08 16.6,17.97C16.6,20.79 14,21.97 11.5,21.97C10.04,22.03 8.59,21.64 7.35,20.87L8,19.34C9.04,20.05 10.27,20.43 11.53,20.44C13.25,20.44 14.53,19.66 14.53,18.24C14.53,17 13.75,16.31 11.25,15.45C8.5,14.5 6.6,13.5 6.6,11.21C6.67,9.89 7.43,8.69 8.6,8.07C7.97,7.5 7.61,6.67 7.6,5.81C7.6,3.45 9.77,2 12.53,2C13.82,2 15.09,2.29 16.23,2.89L15.67,4.42M11.35,13.42C12.41,13.75 13.44,14.18 14.41,14.71C15.06,14.22 15.43,13.45 15.41,12.64C15.41,11.64 14.77,10.76 13,10.14C11.89,9.77 10.78,9.31 9.72,8.77C8.97,9.22 8.5,10.03 8.5,10.91C8.5,11.88 9.23,12.68 11.35,13.42Z"; -var mdiFormatSize = "M2 4V7H7V19H10V7H15V4H2M21 9H12V12H15V19H18V12H21V9Z"; -var mdiFormatStrikethrough = "M3,14H21V12H3M5,4V7H10V10H14V7H19V4M10,19H14V16H10V19Z"; -var mdiFormatStrikethroughVariant = "M23,12V14H18.61C19.61,16.14 19.56,22 12.38,22C4.05,22.05 4.37,15.5 4.37,15.5L8.34,15.55C8.37,18.92 11.5,18.92 12.12,18.88C12.76,18.83 15.15,18.84 15.34,16.5C15.42,15.41 14.32,14.58 13.12,14H1V12H23M19.41,7.89L15.43,7.86C15.43,7.86 15.6,5.09 12.15,5.08C8.7,5.06 9,7.28 9,7.56C9.04,7.84 9.34,9.22 12,9.88H5.71C5.71,9.88 2.22,3.15 10.74,2C19.45,0.8 19.43,7.91 19.41,7.89Z"; -var mdiFormatSubscript = "M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,21.03H16.97V20.03L17.86,19.23C18.62,18.58 19.18,18.04 19.56,17.6C19.93,17.16 20.12,16.75 20.13,16.36C20.14,16.08 20.05,15.85 19.86,15.66C19.68,15.5 19.39,15.38 19,15.38C18.69,15.38 18.42,15.44 18.16,15.56L17.5,15.94L17.05,14.77C17.32,14.56 17.64,14.38 18.03,14.24C18.42,14.1 18.85,14 19.32,14C20.1,14.04 20.7,14.25 21.1,14.66C21.5,15.07 21.72,15.59 21.72,16.23C21.71,16.79 21.53,17.31 21.18,17.78C20.84,18.25 20.42,18.7 19.91,19.14L19.27,19.66V19.68H21.85V21.03Z"; -var mdiFormatSuperscript = "M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,9H16.97V8L17.86,7.18C18.62,6.54 19.18,6 19.56,5.55C19.93,5.11 20.12,4.7 20.13,4.32C20.14,4.04 20.05,3.8 19.86,3.62C19.68,3.43 19.39,3.34 19,3.33C18.69,3.34 18.42,3.4 18.16,3.5L17.5,3.89L17.05,2.72C17.32,2.5 17.64,2.33 18.03,2.19C18.42,2.05 18.85,2 19.32,2C20.1,2 20.7,2.2 21.1,2.61C21.5,3 21.72,3.54 21.72,4.18C21.71,4.74 21.53,5.26 21.18,5.73C20.84,6.21 20.42,6.66 19.91,7.09L19.27,7.61V7.63H21.85V9Z"; -var mdiFormatText = "M18.5,4L19.66,8.35L18.7,8.61C18.25,7.74 17.79,6.87 17.26,6.43C16.73,6 16.11,6 15.5,6H13V16.5C13,17 13,17.5 13.33,17.75C13.67,18 14.33,18 15,18V19H9V18C9.67,18 10.33,18 10.67,17.75C11,17.5 11,17 11,16.5V6H8.5C7.89,6 7.27,6 6.74,6.43C6.21,6.87 5.75,7.74 5.3,8.61L4.34,8.35L5.5,4H18.5Z"; -var mdiFormatTextRotationAngleDown = "M14.25 21H10.03L11.44 19.59L2.58 10.73L4.03 9.33L12.84 18.19L14.25 16.78M12.61 8L15.23 10.64L17.43 5.77M19.41 4.92L14.95 16.03L13.5 14.58L14.39 12.38L10.88 8.81L8.68 9.75L7.22 8.25L18.33 3.84Z"; -var mdiFormatTextRotationAngleUp = "M20.58 9.33V13.55L19.17 12.14L10.31 21L8.91 19.59L17.72 10.73L16.31 9.33M7.59 11L10.22 8.39L5.34 6.14M4.5 4.22L15.61 8.63L14.16 10.13L11.96 9.19L8.39 12.75L9.33 14.91L7.83 16.41L3.42 5.25Z"; -var mdiFormatTextRotationDown = "M6,19.73L3,16.73H5V4.27H7V16.73H9L6,19.73M14,9.38V13.13L19.03,11.25L14,9.38M21,12L10,16.73V14.67L12.19,13.73V8.77L10,7.83V5.77L21,10.5V12Z"; -var mdiFormatTextRotationDownVertical = "M15.25 4H13.75L9 15H11.1L12 12.8H17L17.9 15H20L15.25 4M12.63 11L14.5 6L16.37 11H12.63M5 17.5L8 14.5H6V2H4V14.5H2L5 17.5M22 20L19 17V19H6.5V21H19V23L22 20Z"; -var mdiFormatTextRotationNone = "M20.5,18L17.5,21V19H5V17H17.5V15L20.5,18M10.13,10H13.88L12,4.97L10.13,10M12.75,3L17.5,14H15.42L14.5,11.81H9.5L8.58,14H6.5L11.25,3H12.75Z"; -var mdiFormatTextRotationUp = "M3 12V13.5L14 18.25V16.15L11.8 15.25V10.25L14 9.35V7.25L3 12M10 14.62L5 12.75L10 10.88V14.62M18 4.25L15 7.25H17V19.75H19V7.25H21L18 4.25Z"; -var mdiFormatTextRotationVertical = "M15.75 5H14.25L9.5 16H11.6L12.5 13.8H17.5L18.4 16H20.5L15.75 5M13.13 12L15 7L16.87 12H13.13M6 19.75L9 16.75H7V4.25H5V16.75H3L6 19.75Z"; -var mdiFormatTextVariant = "M9.6,14L12,7.7L14.4,14M11,5L5.5,19H7.7L8.8,16H15L16.1,19H18.3L13,5H11Z"; -var mdiFormatTextVariantOutline = "M11 3C10.18 3 9.44 3.5 9.14 4.27L3.64 18.27C3.12 19.58 4.09 21 5.5 21H7.75C8.59 21 9.33 20.5 9.62 19.7L10.26 18H13.74L14.38 19.7C14.67 20.5 15.42 21 16.25 21H18.5C19.91 21 20.88 19.58 20.36 18.27L14.86 4.27C14.56 3.5 13.82 3 13 3M11 5H13L18.5 19H16.25L15.12 16H8.87L7.75 19H5.5M12 7.67L9.62 14H14.37Z"; -var mdiFormatTextWrappingClip = "M7,21H5V3H7V21M17,3V11H9V13H17V21H19V3H17Z"; -var mdiFormatTextWrappingOverflow = "M7,21H5V3H7V21M14,3H12V9H14V3M14,15H12V21H14V15M19,12L16,9V11H9V13H16V15L19,12Z"; -var mdiFormatTextWrappingWrap = "M7,21H5V3H7V21M19,3H17V21H19V3M13,8H9V10H12.97C13.14,10 14,10.16 14,12C14,13.84 13.14,14 13,14H11V12L8,15L11,18V16H13C14.04,16 16,15.16 16,12C16,8.84 14.04,8 13,8Z"; -var mdiFormatTextbox = "M21,7V3H17V4H7V3H3V7H4V17H3V21H7V20H17V21H21V17H20V7H21M18,4H20V6H18V4M4,4H6V6H4V4M6,20H4V18H6V20M20,20H18V18H20V20M18,17H17V18H7V17H6V7H7V6H17V7H18V17M16,8V10H13V16H11V10H8V8H16Z"; -var mdiFormatTextdirectionLToR = "M21,18L17,14V17H5V19H17V22M9,10V15H11V4H13V15H15V4H17V2H9A4,4 0 0,0 5,6A4,4 0 0,0 9,10Z"; -var mdiFormatTextdirectionRToL = "M8,17V14L4,18L8,22V19H20V17M10,10V15H12V4H14V15H16V4H18V2H10A4,4 0 0,0 6,6A4,4 0 0,0 10,10Z"; -var mdiFormatTitle = "M5,4V7H10.5V19H13.5V7H19V4H5Z"; -var mdiFormatUnderline = "M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z"; -var mdiFormatVerticalAlignBottom = "M16,13H13V3H11V13H8L12,17L16,13M4,19V21H20V19H4Z"; -var mdiFormatVerticalAlignCenter = "M8,19H11V23H13V19H16L12,15L8,19M16,5H13V1H11V5H8L12,9L16,5M4,11V13H20V11H4Z"; -var mdiFormatVerticalAlignTop = "M8,11H11V21H13V11H16L12,7L8,11M4,3V5H20V3H4Z"; -var mdiFormatWrapInline = "M8,7L13,17H3L8,7M3,3H21V5H3V3M21,15V17H14V15H21M3,19H21V21H3V19Z"; -var mdiFormatWrapSquare = "M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H6V9H3V7M21,7V9H18V7H21M3,11H6V13H3V11M21,11V13H18V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z"; -var mdiFormatWrapTight = "M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H9V9H3V7M21,7V9H15V7H21M3,11H7V13H3V11M21,11V13H17V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z"; -var mdiFormatWrapTopBottom = "M12,7L17,17H7L12,7M3,3H21V5H3V3M3,19H21V21H3V19Z"; -var mdiForum = "M17,12V3A1,1 0 0,0 16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z"; -var mdiForumOutline = "M15,4V11H5.17L4,12.17V4H15M16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12V3A1,1 0 0,0 16,2M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z"; -var mdiForward = "M12,8V4L20,12L12,20V16H4V8H12Z"; -var mdiForwardburger = "M19,13H3V11H19L15,7L16.4,5.6L22.8,12L16.4,18.4L15,17L19,13M3,6H13V8H3V6M13,16V18H3V16H13Z"; -var mdiFountain = "M7.5,2C4.47,2 2,4.46 2,7.5V7.5L2,8H4V7.5A3.5,3.5 0 0,1 7.5,4C9,4 10.26,4.93 10.76,6.24C10.37,6.08 9.95,6 9.5,6C8.11,6 6.9,6.82 6.34,8L8.08,9C8.29,8.42 8.85,8 9.5,8A1.5,1.5 0 0,1 11,9.5V11H13V9.5A1.5,1.5 0 0,1 14.5,8C15.16,8 15.71,8.42 15.92,9L17.66,8C17.1,6.82 15.9,6 14.5,6C14.05,6 13.63,6.08 13.24,6.24C13.74,4.93 15,4 16.5,4A3.5,3.5 0 0,1 20,7.5V8H22V7.5H22A5.5,5.5 0 0,0 16.5,2C14.64,2 13,2.93 12,4.34C11,2.93 9.36,2 7.5,2M6,12V14H7.42C7.92,15.15 8.85,16.07 10,16.57C10,17.38 10,18.19 10,19H2C2,19 2.82,20.23 3.41,21.11C3.78,21.67 4.4,22 5.07,22H18.93C19.6,22 20.22,21.67 20.59,21.11L22,19H14C14,18.19 14,17.38 14,16.57C15.15,16.07 16.08,15.15 16.58,14H18V12H6Z"; -var mdiFountainPen = "M6.95,14.93L11.19,9.27L19.68,2.2C20.07,1.81 20.72,1.81 21.09,2.2L21.8,2.91C22.19,3.28 22.19,3.93 21.8,4.32L14.73,12.81L9.07,17.05L6.95,14.93M8.36,17.76L6.24,15.64L3.41,17.05L2,21.29L4.12,19.17C4.32,19 4.63,19 4.83,19.17C5,19.37 5,19.68 4.83,19.88L2.71,22L6.95,20.59L8.36,17.76Z"; -var mdiFountainPenTip = "M15.54,3.5L20.5,8.47L19.07,9.88L14.12,4.93L15.54,3.5M3.5,19.78L10,13.31C9.9,13 9.97,12.61 10.23,12.35C10.62,11.96 11.26,11.96 11.65,12.35C12.04,12.75 12.04,13.38 11.65,13.77C11.39,14.03 11,14.1 10.69,14L4.22,20.5L14.83,16.95L18.36,10.59L13.42,5.64L7.05,9.17L3.5,19.78Z"; -var mdiFreebsd = "M2.69,2C3.54,1.95 6.08,3.16 6.13,3.19C4.84,4 3.74,5.09 2.91,6.38C2.09,4.81 1.34,2.91 2,2.25C2.17,2.08 2.4,2 2.69,2M20.84,2.13C21.25,2.08 21.58,2.14 21.78,2.34C22.85,3.42 19.88,8.15 19.38,8.66C18.87,9.16 17.57,8.7 16.5,7.63C15.43,6.55 14.97,5.26 15.47,4.75C15.88,4.34 19.09,2.3 20.84,2.13M12,2.56C13.29,2.56 14.53,2.82 15.66,3.28C15.17,3.6 14.81,3.85 14.69,3.97C13.7,4.96 14.14,6.83 15.72,8.41C16.7,9.38 17.84,9.97 18.78,9.97C19.46,9.97 19.92,9.68 20.16,9.44C20.33,9.27 20.6,8.88 20.91,8.41C21.42,9.59 21.69,10.88 21.69,12.25C21.69,17.61 17.36,21.97 12,21.97C6.64,21.97 2.31,17.61 2.31,12.25C2.31,6.89 6.64,2.56 12,2.56Z"; -var mdiFrequentlyAskedQuestions = "M18,15H6L2,19V3A1,1 0 0,1 3,2H18A1,1 0 0,1 19,3V14A1,1 0 0,1 18,15M23,9V23L19,19H8A1,1 0 0,1 7,18V17H21V8H22A1,1 0 0,1 23,9M8.19,4C7.32,4 6.62,4.2 6.08,4.59C5.56,5 5.3,5.57 5.31,6.36L5.32,6.39H7.25C7.26,6.09 7.35,5.86 7.53,5.7C7.71,5.55 7.93,5.47 8.19,5.47C8.5,5.47 8.76,5.57 8.94,5.75C9.12,5.94 9.2,6.2 9.2,6.5C9.2,6.82 9.13,7.09 8.97,7.32C8.83,7.55 8.62,7.75 8.36,7.91C7.85,8.25 7.5,8.55 7.31,8.82C7.11,9.08 7,9.5 7,10H9C9,9.69 9.04,9.44 9.13,9.26C9.22,9.08 9.39,8.9 9.64,8.74C10.09,8.5 10.46,8.21 10.75,7.81C11.04,7.41 11.19,7 11.19,6.5C11.19,5.74 10.92,5.13 10.38,4.68C9.85,4.23 9.12,4 8.19,4M7,11V13H9V11H7M13,13H15V11H13V13M13,4V10H15V4H13Z"; -var mdiFridge = "M7,2H17A2,2 0 0,1 19,4V9H5V4A2,2 0 0,1 7,2M19,19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V10H19V19M8,5V7H10V5H8M8,12V15H10V12H8Z"; -var mdiFridgeAlert = "M5 2H15C16.11 2 17 2.9 17 4V9H3V4C3 2.9 3.9 2 5 2M17 19C17 20.11 16.11 21 15 21V22H13V21H7V22H5V21C3.9 21 3 20.11 3 19V10H17V19M6 5V7H8V5H6M6 12V15H8V12H6M19 15H21V17H19V15M19 7H21V13H19V7Z"; -var mdiFridgeAlertOutline = "M7 21V22H5V21C3.9 21 3 20.11 3 19V4C3 2.9 3.9 2 5 2H15C16.11 2 17 2.9 17 4V19C17 20.11 16.11 21 15 21V22H13V21H7M5 4V9H15V4H5M5 19H15V11H5V19M6 12H8V15H6V12M6 6H8V8H6V6M19 15H21V17H19V15M19 7H21V13H19V7Z"; -var mdiFridgeBottom = "M7,2A2,2 0 0,0 5,4V19A2,2 0 0,0 7,21V22H9V21H15V22H17V21A2,2 0 0,0 19,19V4A2,2 0 0,0 17,2H7M8,6H10V8H8V6M7,11H17V19H7V11M8,12V15H10V12H8Z"; -var mdiFridgeIndustrial = "M17 2H7C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2M10 15H8V10H10V15Z"; -var mdiFridgeIndustrialAlert = "M15 2H5C3.9 2 3 2.9 3 4V19C3 20.11 3.9 21 5 21V22H7V21H13V22H15V21C16.11 21 17 20.11 17 19V4C17 2.9 16.11 2 15 2M8 15H6V10H8V15M21 7V13H19V7H21M19 15H21V17H19V15Z"; -var mdiFridgeIndustrialAlertOutline = "M8 15H6V10H8V15M17 4V19C17 20.11 16.11 21 15 21V22H13V21H7V22H5V21C3.9 21 3 20.11 3 19V4C3 2.9 3.9 2 5 2H15C16.11 2 17 2.9 17 4M15 4H5V19H15V4M19 17H21V15H19V17M19 7V13H21V7H19Z"; -var mdiFridgeIndustrialOff = "M19 15.8L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V15.8M22.11 21.46L20.84 22.73L18.46 20.35C18.1 20.75 17.58 21 17 21V22H15V21H9V22H7V21C5.9 21 5 20.11 5 19V6.89L1.11 3L2.39 1.73L22.11 21.46M10 11.89L8.11 10H8V15H10V11.89Z"; -var mdiFridgeIndustrialOffOutline = "M7.2 4L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V15.8L17 13.8V4H7.2M22.11 21.46L20.84 22.73L18.46 20.35C18.1 20.75 17.58 21 17 21V22H15V21H9V22H7V21C5.9 21 5 20.11 5 19V6.89L1.11 3L2.39 1.73L22.11 21.46M17 18.89L10 11.89V15H8V10H8.11L7 8.89V19H17V18.89Z"; -var mdiFridgeIndustrialOutline = "M17 2H7C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2M17 19H7V4H17V19M10 15H8V10H10V15Z"; -var mdiFridgeOff = "M22.11 21.46L2.39 1.73L1.11 3L5 6.89V9H7.11L8.11 10H5V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C17.58 21 18.1 20.75 18.46 20.35L20.84 22.73L22.11 21.46M10 15H8V12H10V15M19 15.8L13.2 10H19V15.8M8.2 5L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V9H12.2L10 6.8V5H8.2Z"; -var mdiFridgeOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L5 6.89V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C17.58 21 18.1 20.75 18.46 20.35L20.84 22.73L22.11 21.46M17 19H7V11H9.11L17 18.89V19M7.2 4L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V15.8L17 13.8V11H14.2L12.2 9H17V4H7.2M8 12H10V15H8V12Z"; -var mdiFridgeOutline = "M9,21V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9M7,4V9H17V4H7M7,19H17V11H7V19M8,12H10V15H8V12M8,6H10V8H8V6Z"; -var mdiFridgeTop = "M8,8V6H10V8H8M7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2M7,4V9H17V4H7M8,12V15H10V12H8Z"; -var mdiFridgeVariant = "M19 4V19C19 20.11 18.11 21 17 21V22H15V21H12.5V2H17C18.11 2 19 2.9 19 4M7 2H11.5V21H9V22H7V21C5.9 21 5 20.11 5 19V4C5 2.9 5.9 2 7 2M10 10H7V14H10V10Z"; -var mdiFridgeVariantAlert = "M17 4V19C17 20.11 16.11 21 15 21V22H13V21H10.5V2H15C16.11 2 17 2.9 17 4M5 2H9.5V21H7V22H5V21C3.9 21 3 20.11 3 19V4C3 2.9 3.9 2 5 2M8 10H5V14H8V10M19 7V13H21V7H19M19 17H21V15H19V17Z"; -var mdiFridgeVariantAlertOutline = "M15 2H5C3.9 2 3 2.9 3 4V19C3 20.11 3.9 21 5 21V22H7V21H13V22H15V21C16.11 21 17 20.11 17 19V4C17 2.9 16.11 2 15 2M9 19H5V14H8V10H5V4H9V19M15 19H11V4H15V19M19 15H21V17H19V15M21 7V13H19V7H21Z"; -var mdiFridgeVariantOff = "M2.39 1.73L1.11 3L5 6.89V19C5 20.11 5.9 21 7 21V22H9V21H11.5V13.39L12.5 14.39V21H15V22H17V21C17.58 21 18.1 20.75 18.46 20.35L20.84 22.73L22.11 21.46L2.39 1.73M10 14H7V10H8.11L10 11.89V14M19 15.8L12.5 9.3V2H17C18.11 2 19 2.9 19 4V15.8M11.5 8.3L5.7 2.5C6.05 2.19 6.5 2 7 2H11.5V8.3Z"; -var mdiFridgeVariantOffOutline = "M7.2 4L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V15.8L17 13.8V4H13V9.8L11 7.8V4H7.2M22.11 21.46L20.84 22.73L18.46 20.35C18.1 20.75 17.58 21 17 21V22H15V21H9V22H7V21C5.9 21 5 20.11 5 19V6.89L1.11 3L2.39 1.73L22.11 21.46M7 10H8.11L7 8.89V10M11 12.89L10 11.89V14H7V19H11V12.89M17 18.89L13 14.89V19H17V18.89Z"; -var mdiFridgeVariantOutline = "M17 2H7C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2M7 19V14H10V10H7V4H11V19H7M17 19H13V4H17V19Z"; -var mdiFruitCherries = "M16 13H15.5C14.8 11.7 14.3 10 13.8 8.3L14.7 9.2C17.4 11.3 19.8 10.9 19.8 10.9S20.5 7.1 17.8 5.1C15.5 3.3 13.4 3.3 12.8 3.4C12.7 2.8 12.7 2.3 12.6 1.9L11.2 2C11.2 5.2 8.5 11.1 7.6 13C5.6 13.2 4 14.9 4 17C4 19.2 5.8 21 8 21C9.1 21 10 20.6 10.7 19.9C10.3 19 10 18 10 17S10.3 15 10.7 14.1C10.3 13.7 9.7 13.4 9.2 13.2C9.9 11.7 11.1 9 11.9 6.4C12.3 8.7 13.1 11.4 14.1 13.5C12.9 14.2 12 15.5 12 17C12 19.2 13.8 21 16 21S20 19.2 20 17 18.2 13 16 13M8 15.5C7.2 15.5 6.5 16.2 6.5 17H5.5C5.5 15.6 6.6 14.5 8 14.5V15.5M16 15.5C15.2 15.5 14.5 16.2 14.5 17H13.5C13.5 15.6 14.6 14.5 16 14.5V15.5Z"; -var mdiFruitCherriesOff = "M22.1 21.5L2.4 1.7L1.1 3L8.7 10.6C8.3 11.6 7.9 12.5 7.6 13C5.6 13.2 4 14.9 4 17C4 19.2 5.8 21 8 21C9.1 21 10 20.6 10.7 19.9C10.3 19 10 18 10 17S10.3 15 10.7 14.1C10.3 13.7 9.7 13.4 9.2 13.2C9.4 12.8 9.6 12.3 9.9 11.7L12.8 14.6C12.3 15.3 12 16.1 12 17C12 19.2 13.8 21 16 21C16.9 21 17.7 20.7 18.3 20.2L20.8 22.7L22.1 21.5M8 15.5C7.2 15.5 6.5 16.2 6.5 17H5.5C5.5 15.6 6.6 14.5 8 14.5V15.5M14.5 17H13.5C13.5 16.5 13.6 16.1 13.8 15.7L14.6 16.5C14.5 16.7 14.5 16.8 14.5 17M20 16.8L16.2 13C18.2 13.1 19.9 14.8 20 16.8M11.3 8.1L10.1 6.9C10.7 5.1 11.2 3.3 11.2 2L12.6 1.9C12.7 2.3 12.7 2.8 12.8 3.4C13.4 3.3 15.5 3.3 17.8 5.1C20.5 7.1 19.8 10.9 19.8 10.9S17.4 11.3 14.7 9.2L13.8 8.3C14.1 9.5 14.5 10.7 14.9 11.7L12.6 9.4C12.3 8.4 12.1 7.4 11.9 6.4C11.7 7 11.5 7.6 11.3 8.1Z"; -var mdiFruitCitrus = "M9 15.9C6.9 15.7 5.1 14.9 4 13.6C3.2 13.6 2.4 13.1 2.1 12.3C1.8 11.5 2.1 10.7 2.8 10.2C2.9 7.2 5.6 4.1 9.7 2.7C13.8 1.3 18 2.1 20 4.4C20.8 4.4 21.6 4.9 21.9 5.7C22.2 6.5 21.9 7.3 21.2 7.8C21.2 8.6 21 9.4 20.6 10.2C19.4 9.5 18 9 16.5 9C12.6 9 9.3 12 9 15.9M22 16.5C22 19.5 19.5 22 16.5 22S11 19.5 11 16.5 13.5 11 16.5 11 22 13.5 22 16.5M13.3 18L15.6 16.5L13.3 15C13.1 15.5 13 16 13 16.5S13.1 17.5 13.3 18M16 17.4L13.9 18.8C14.4 19.4 15.2 19.8 16 20V17.4M16 13.1C15.2 13.2 14.4 13.6 13.9 14.3L16 15.7V13.1M17 15.6L19.1 14.2C18.6 13.6 17.8 13.2 17 13V15.6M19.1 18.8L17 17.4V19.9C17.8 19.8 18.6 19.4 19.1 18.8M20 16.5C20 16 19.9 15.5 19.7 15L17.4 16.5L19.7 18C19.9 17.5 20 17 20 16.5Z"; -var mdiFruitCitrusOff = "M22.1 21.5L2.4 1.7L1.1 3L4.4 6.3C3.4 7.5 2.9 8.9 2.8 10.2C2.1 10.7 1.8 11.5 2.1 12.3C2.4 13.1 3.2 13.6 4 13.6C5.1 14.9 6.9 15.7 9 15.9C9.1 14.5 9.6 13.3 10.3 12.2L11.8 13.7C11.3 14.5 11 15.5 11 16.5C11 19.5 13.5 22 16.5 22C17.5 22 18.5 21.7 19.3 21.2L20.8 22.7L22.1 21.5M13 16.5C13 16 13.1 15.6 13.3 15.1L15 16.8L13.3 18C13.1 17.5 13 17 13 16.5M13.9 18.8L15.7 17.6L16 17.9V20C15.2 19.8 14.4 19.4 13.9 18.8M17 19.9V18.9L17.8 19.7C17.5 19.8 17.3 19.9 17 19.9M20 16.8V16.5C20 16 19.9 15.5 19.7 15L18.8 15.6L18.1 14.9L19.1 14.2C18.6 13.6 17.8 13.2 17 13V13.8L14.6 11.4C15.2 11.2 15.9 11 16.5 11C19.5 11 22 13.5 22 16.5C22 17.2 21.9 17.8 21.6 18.4L20 16.8M13 9.8L7.1 3.9C7.9 3.4 8.8 3 9.7 2.7C13.8 1.3 18 2.1 20 4.4C20.8 4.4 21.6 4.9 21.9 5.7C22.2 6.5 21.9 7.3 21.2 7.8C21.2 8.6 21 9.4 20.6 10.2C19.4 9.5 18 9 16.5 9C15.3 9 14.1 9.3 13 9.8Z"; -var mdiFruitGrapes = "M14 12C14 13.1 13.1 14 12 14S10 13.1 10 12 10.9 10 12 10 14 10.9 14 12M7 10C5.9 10 5 10.9 5 12S5.9 14 7 14 9 13.1 9 12 8.1 10 7 10M17 10C15.9 10 15 10.9 15 12S15.9 14 17 14 19 13.1 19 12 18.1 10 17 10M14.5 6C13.4 6 12.5 6.9 12.5 8S13.4 10 14.5 10 16.5 9.1 16.5 8 15.6 6 14.5 6M9.5 6C8.4 6 7.5 6.9 7.5 8S8.4 10 9.5 10 11.5 9.1 11.5 8 10.6 6 9.5 6M14.5 14C13.4 14 12.5 14.9 12.5 16S13.4 18 14.5 18 16.5 17.1 16.5 16 15.6 14 14.5 14M9.5 14C8.4 14 7.5 14.9 7.5 16S8.4 18 9.5 18 11.5 17.1 11.5 16 10.6 14 9.5 14M12 18C10.9 18 10 18.9 10 20S10.9 22 12 22 14 21.1 14 20 13.1 18 12 18M14.4 2.2L13.6 1C11.4 2 11.2 5.6 11.2 6H12.7C12.8 5.2 13.1 2.7 14.4 2.2Z"; -var mdiFruitGrapesOutline = "M19 12C19 10.61 18.05 9.47 16.78 9.12C16.92 8.78 17 8.4 17 8C17 6.34 15.66 5 14 5C13.57 5 13.17 5.1 12.81 5.26C13 4.19 13.39 2.59 14.4 2.2L13.6 1C11.9 1.77 11.4 4.09 11.26 5.29C10.87 5.11 10.45 5 10 5C8.34 5 7 6.34 7 8C7 8.4 7.08 8.77 7.22 9.12C5.94 9.46 5 10.62 5 12C5 13.39 5.95 14.54 7.23 14.88C7.09 15.22 7 15.6 7 16C7 17.39 7.94 18.54 9.22 18.88C9.08 19.23 9 19.61 9 20C9 21.66 10.34 23 12 23S15 21.66 15 20C15 19.61 14.92 19.23 14.78 18.88C16.06 18.54 17 17.39 17 16C17 15.6 16.92 15.23 16.77 14.88C18.05 14.54 19 13.39 19 12M16.31 9.88V9.9H16.3L16.31 9.88M14 6.5C14.83 6.5 15.5 7.17 15.5 8S14.83 9.5 14 9.5 12.5 8.83 12.5 8 13.17 6.5 14 6.5M13.5 12C13.5 12.83 12.83 13.5 12 13.5S10.5 12.83 10.5 12 11.17 10.5 12 10.5 13.5 11.17 13.5 12M10 6.5C10.83 6.5 11.5 7.17 11.5 8S10.83 9.5 10 9.5 8.5 8.83 8.5 8 9.17 6.5 10 6.5M6.5 12C6.5 11.17 7.17 10.5 8 10.5S9.5 11.17 9.5 12 8.83 13.5 8 13.5 6.5 12.83 6.5 12M8.5 16C8.5 15.17 9.17 14.5 10 14.5S11.5 15.17 11.5 16 10.83 17.5 10 17.5 8.5 16.83 8.5 16M12 21.5C11.17 21.5 10.5 20.83 10.5 20S11.17 18.5 12 18.5 13.5 19.17 13.5 20 12.83 21.5 12 21.5M14 17.5C13.17 17.5 12.5 16.83 12.5 16S13.17 14.5 14 14.5 15.5 15.17 15.5 16 14.83 17.5 14 17.5M16 13.5C15.17 13.5 14.5 12.83 14.5 12S15.17 10.5 16 10.5 17.5 11.17 17.5 12 16.83 13.5 16 13.5Z"; -var mdiFruitPineapple = "M14.4 7.7C16.4 6.4 19 7 19 7C17.2 4.6 15.1 4.7 13.6 5.2V5C14.7 3.4 16.9 3.5 16.9 3.5C15.3 2.1 13.9 2.5 13 3C12.5 1.8 12 1 12 1C11.6 1.7 11.3 2.4 11 3.1C10.1 2.5 8.6 2.1 7 3.5C7 3.5 9.3 3.5 10.4 5.2C8.9 4.7 6.8 4.6 5 7C5 7 7.6 6.4 9.6 7.7C7.5 8.9 6 11.7 6 15C6 19.4 8.7 23 12 23S18 19.4 18 15C18 11.7 16.5 8.9 14.4 7.7M15.8 16.8C15.7 17.2 15.6 17.6 15.4 18L14 16L12.5 18L14.1 20.1C13.8 20.3 13.6 20.5 13.3 20.7L12 19L10.7 20.7C10.4 20.6 10.1 20.4 9.9 20.1L11.5 18L10 16L8.5 17.9C8.4 17.5 8.2 17.1 8.1 16.7L9.5 15L8.2 13.2C8.3 12.8 8.4 12.4 8.6 12L10 14L11.5 12L9.9 9.9C10.2 9.7 10.4 9.5 10.7 9.3L12 11L13.3 9.3C13.6 9.4 13.9 9.6 14.1 9.9L12.5 12L14 14L15.5 12.1C15.6 12.5 15.8 12.9 15.9 13.3L14.5 15L15.8 16.8M12 13L13.5 15L12 17L10.5 15L12 13Z"; -var mdiFruitWatermelon = "M16.4 16.4C19.8 13 19.8 7.5 16.4 4.2L4.2 16.4C7.5 19.8 13 19.8 16.4 16.4M16 7C16.6 7 17 7.4 17 8C17 8.6 16.6 9 16 9S15 8.6 15 8C15 7.4 15.4 7 16 7M16 11C16.6 11 17 11.4 17 12C17 12.6 16.6 13 16 13S15 12.6 15 12C15 11.4 15.4 11 16 11M12 11C12.6 11 13 11.4 13 12C13 12.6 12.6 13 12 13S11 12.6 11 12C11 11.4 11.4 11 12 11M12 15C12.6 15 13 15.4 13 16C13 16.6 12.6 17 12 17S11 16.6 11 16C11 15.4 11.4 15 12 15M8 17C7.4 17 7 16.6 7 16C7 15.4 7.4 15 8 15S9 15.4 9 16C9 16.6 8.6 17 8 17M18.6 18.6C14 23.2 6.6 23.2 2 18.6L3.4 17.2C7.2 21 13.3 21 17.1 17.2C20.9 13.4 20.9 7.3 17.1 3.5L18.6 2C23.1 6.6 23.1 14 18.6 18.6Z"; -var mdiFuel = "M3,2H6C6.28,2 6.53,2.11 6.71,2.29L8.79,4.38L9.59,3.59C10,3.2 10.5,3 11,3H17C17.5,3 18,3.2 18.41,3.59L19.41,4.59C19.8,5 20,5.5 20,6V19A2,2 0 0,1 18,21H8A2,2 0 0,1 6,19V13L6,12V8C6,7.5 6.2,7 6.59,6.59L7.38,5.79L5.59,4H3V2M11,5V7H17V5H11M11.41,11L9.41,9H8V10.41L10,12.41V15.59L8,17.59V19H9.41L11.41,17H14.59L16.59,19H18V17.59L16,15.59V12.41L18,10.41V9H16.59L14.59,11H11.41M12,13H14V15H12V13Z"; -var mdiFullscreen = "M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"; -var mdiFullscreenExit = "M14,14H19V16H16V19H14V14M5,14H10V19H8V16H5V14M8,5H10V10H5V8H8V5M19,8V10H14V5H16V8H19Z"; -var mdiFunction = "M15.6,5.29C14.5,5.19 13.53,6 13.43,7.11L13.18,10H16V12H13L12.56,17.07C12.37,19.27 10.43,20.9 8.23,20.7C6.92,20.59 5.82,19.86 5.17,18.83L6.67,17.33C6.91,18.07 7.57,18.64 8.4,18.71C9.5,18.81 10.47,18 10.57,16.89L11,12H8V10H11.17L11.44,6.93C11.63,4.73 13.57,3.1 15.77,3.3C17.08,3.41 18.18,4.14 18.83,5.17L17.33,6.67C17.09,5.93 16.43,5.36 15.6,5.29Z"; -var mdiFunctionVariant = "M12.42,5.29C11.32,5.19 10.35,6 10.25,7.11L10,10H12.82V12H9.82L9.38,17.07C9.18,19.27 7.24,20.9 5.04,20.7C3.79,20.59 2.66,19.9 2,18.83L3.5,17.33C3.83,18.38 4.96,18.97 6,18.63C6.78,18.39 7.33,17.7 7.4,16.89L7.82,12H4.82V10H8L8.27,6.93C8.46,4.73 10.39,3.1 12.6,3.28C13.86,3.39 15,4.09 15.66,5.17L14.16,6.67C13.91,5.9 13.23,5.36 12.42,5.29M22,13.65L20.59,12.24L17.76,15.07L14.93,12.24L13.5,13.65L16.35,16.5L13.5,19.31L14.93,20.72L17.76,17.89L20.59,20.72L22,19.31L19.17,16.5L22,13.65Z"; -var mdiFuriganaHorizontal = "M8.5 2C7.12 2 6 3.12 6 4.5S7.12 7 8.5 7 11 5.88 11 4.5 9.88 2 8.5 2M15.5 2C14.12 2 13 3.12 13 4.5S14.12 7 15.5 7 18 5.88 18 4.5 16.88 2 15.5 2M11 8V10H5V12H14.95C14.53 13.13 13.5 14.5 12.16 15.67C11.12 14.74 10.35 13.82 9.82 13H7.5C8.08 14.25 9.13 15.62 10.62 16.96L6.55 20.22L5.76 20.84L7 22.41L7.8 21.78L12.17 18.28L16.55 21.78L17.33 22.41L18.58 20.84L17.8 20.22L13.73 16.97C15.34 15.5 16.7 13.85 17.07 12H19V10H13V8H11Z"; -var mdiFuriganaVertical = "M8 5V7H2V9H11.95C11.53 10.13 10.5 11.5 9.16 12.67C8.12 11.74 7.35 10.82 6.82 10H4.5C5.08 11.25 6.13 12.62 7.62 13.96L3.55 17.22L2.76 17.84L4 19.41L4.8 18.78L9.17 15.28L13.55 18.78L14.33 19.41L15.58 17.84L14.8 17.22L10.73 13.97C12.34 12.5 13.7 10.85 14.07 9H16V7H10V5H8M19.5 6C18.12 6 17 7.12 17 8.5S18.12 11 19.5 11 22 9.88 22 8.5 20.88 6 19.5 6M19.47 13C18.09 13 16.97 14.12 16.97 15.5S18.09 18 19.47 18 21.97 16.88 21.97 15.5 20.85 13 19.47 13Z"; -var mdiFuse = "M8,7V17H15V7H8M11.16,16V12.87H9.41L11.91,8V11.14H13.59L11.16,16M16,2V6H7V2A1,1 0 0,1 8,1H15A1,1 0 0,1 16,2M16,18V22A1,1 0 0,1 15,23H8A1,1 0 0,1 7,22V18H16Z"; -var mdiFuseAlert = "M6 7V17H13V7H6M9.16 16V12.87H7.41L9.91 8V11.14H11.59L9.16 16M14 2V6H5V2C5 1.45 5.45 1 6 1H13C13.55 1 14 1.45 14 2M14 18V22C14 22.55 13.55 23 13 23H6C5.45 23 5 22.55 5 22V18H14M19 13H17V7H19V13M19 17H17V15H19V17Z"; -var mdiFuseBlade = "M10,21H8L6,19V16H10V21M18,16H14V21H16L18,19V16M3,3V4A1,1 0 0,0 4,5V14A1,1 0 0,0 5,15H19A1,1 0 0,0 20,14V5H20A1,1 0 0,0 21,4V3H3M11.83,13V9.73H10L12.61,4.66V7.93H14.36L11.83,13Z"; -var mdiFuseOff = "M15 11.8L10.2 7H15V11.8M16 6V2C16 1.45 15.55 1 15 1H8C7.45 1 7 1.45 7 2V3.8L9.2 6H16M2.39 1.73L1.11 3L8 9.89V17H15.11L20.84 22.73L22.11 21.46L2.39 1.73M7 22C7 22.55 7.45 23 8 23H15C15.55 23 16 22.55 16 22V18H7V22Z"; -var mdiGamepad = "M16.5,9L13.5,12L16.5,15H22V9M9,16.5V22H15V16.5L12,13.5M7.5,9H2V15H7.5L10.5,12M15,7.5V2H9V7.5L12,10.5L15,7.5Z"; -var mdiGamepadCircle = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8Z"; -var mdiGamepadCircleDown = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M12,3A2,2 0 0,0 10,5A2,2 0 0,0 12,7A2,2 0 0,0 14,5A2,2 0 0,0 12,3M5,10A2,2 0 0,0 3,12A2,2 0 0,0 5,14A2,2 0 0,0 7,12A2,2 0 0,0 5,10M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10Z"; -var mdiGamepadCircleLeft = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10M12,17A2,2 0 0,0 10,19A2,2 0 0,0 12,21A2,2 0 0,0 14,19A2,2 0 0,0 12,17M12,3A2,2 0 0,0 10,5A2,2 0 0,0 12,7A2,2 0 0,0 14,5A2,2 0 0,0 12,3Z"; -var mdiGamepadCircleOutline = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M5,10A2,2 0 0,0 3,12A2,2 0 0,0 5,14A2,2 0 0,0 7,12A2,2 0 0,0 5,10M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,3A2,2 0 0,0 10,5A2,2 0 0,0 12,7A2,2 0 0,0 14,5A2,2 0 0,0 12,3M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M12,17A2,2 0 0,0 10,19A2,2 0 0,0 12,21A2,2 0 0,0 14,19A2,2 0 0,0 12,17M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10Z"; -var mdiGamepadCircleRight = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M12,3A2,2 0 0,0 10,5A2,2 0 0,0 12,7A2,2 0 0,0 14,5A2,2 0 0,0 12,3M5,10A2,2 0 0,0 3,12A2,2 0 0,0 5,14A2,2 0 0,0 7,12A2,2 0 0,0 5,10M12,17A2,2 0 0,0 10,19A2,2 0 0,0 12,21A2,2 0 0,0 14,19A2,2 0 0,0 12,17Z"; -var mdiGamepadCircleUp = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M5,10A2,2 0 0,0 3,12A2,2 0 0,0 5,14A2,2 0 0,0 7,12A2,2 0 0,0 5,10M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10M12,17A2,2 0 0,0 10,19A2,2 0 0,0 12,21A2,2 0 0,0 14,19A2,2 0 0,0 12,17Z"; -var mdiGamepadDown = "M9,2V7.5L12,10.5L15,7.5V2H9M2,9V15H7.5L10.5,12L7.5,9H2M16.5,9L13.5,12L16.5,15H22V9H16.5M12,13.5L9,16.5V22H15V16.5L12,13.5M11,18H13V20H11V18Z"; -var mdiGamepadLeft = "M9,2V7.5L12,10.5L15,7.5V2H9M2,9V15H7.5L10.5,12L7.5,9H2M16.5,9L13.5,12L16.5,15H22V9H16.5M4,11H6V13H4V11M12,13.5L9,16.5V22H15V16.5L12,13.5Z"; -var mdiGamepadRight = "M9,2V7.5L12,10.5L15,7.5V2H9M2,9V15H7.5L10.5,12L7.5,9H2M16.5,9L13.5,12L16.5,15H22V9H16.5M18,11H20V13H18V11M12,13.5L9,16.5V22H15V16.5L12,13.5Z"; -var mdiGamepadRound = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8Z"; -var mdiGamepadRoundDown = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M10,16V20H14V16H10Z"; -var mdiGamepadRoundLeft = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M4,10V14H8V10H4Z"; -var mdiGamepadRoundOutline = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M4,10V14H10V20H14V14H20V10H14V4H10V10H4Z"; -var mdiGamepadRoundRight = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M16,10V14H20V10H16Z"; -var mdiGamepadRoundUp = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M10,4V8H14V4H10Z"; -var mdiGamepadSquare = "M21,6H3A2,2 0 0,0 1,8V16A2,2 0 0,0 3,18H21A2,2 0 0,0 23,16V8A2,2 0 0,0 21,6M11,13H8V16H6V13H3V11H6V8H8V11H11M15.5,15A1.5,1.5 0 0,1 14,13.5A1.5,1.5 0 0,1 15.5,12A1.5,1.5 0 0,1 17,13.5A1.5,1.5 0 0,1 15.5,15M19.5,12A1.5,1.5 0 0,1 18,10.5A1.5,1.5 0 0,1 19.5,9A1.5,1.5 0 0,1 21,10.5A1.5,1.5 0 0,1 19.5,12Z"; -var mdiGamepadSquareOutline = "M21,6H3A2,2 0 0,0 1,8V16A2,2 0 0,0 3,18H21A2,2 0 0,0 23,16V8A2,2 0 0,0 21,6M21,16H3V8H21M6,15H8V13H10V11H8V9H6V11H4V13H6M14.5,12A1.5,1.5 0 0,1 16,13.5A1.5,1.5 0 0,1 14.5,15A1.5,1.5 0 0,1 13,13.5A1.5,1.5 0 0,1 14.5,12M18.5,9A1.5,1.5 0 0,1 20,10.5A1.5,1.5 0 0,1 18.5,12A1.5,1.5 0 0,1 17,10.5A1.5,1.5 0 0,1 18.5,9Z"; -var mdiGamepadUp = "M9,2V7.5L12,10.5L15,7.5V2H9M11,4H13V6H11V4M2,9V15H7.5L10.5,12L7.5,9H2M16.5,9L13.5,12L16.5,15H22V9H16.5M12,13.5L9,16.5V22H15V16.5L12,13.5Z"; -var mdiGamepadVariant = "M7,6H17A6,6 0 0,1 23,12A6,6 0 0,1 17,18C15.22,18 13.63,17.23 12.53,16H11.47C10.37,17.23 8.78,18 7,18A6,6 0 0,1 1,12A6,6 0 0,1 7,6M6,9V11H4V13H6V15H8V13H10V11H8V9H6M15.5,12A1.5,1.5 0 0,0 14,13.5A1.5,1.5 0 0,0 15.5,15A1.5,1.5 0 0,0 17,13.5A1.5,1.5 0 0,0 15.5,12M18.5,9A1.5,1.5 0 0,0 17,10.5A1.5,1.5 0 0,0 18.5,12A1.5,1.5 0 0,0 20,10.5A1.5,1.5 0 0,0 18.5,9Z"; -var mdiGamepadVariantOutline = "M6,9H8V11H10V13H8V15H6V13H4V11H6V9M18.5,9A1.5,1.5 0 0,1 20,10.5A1.5,1.5 0 0,1 18.5,12A1.5,1.5 0 0,1 17,10.5A1.5,1.5 0 0,1 18.5,9M15.5,12A1.5,1.5 0 0,1 17,13.5A1.5,1.5 0 0,1 15.5,15A1.5,1.5 0 0,1 14,13.5A1.5,1.5 0 0,1 15.5,12M17,5A7,7 0 0,1 24,12A7,7 0 0,1 17,19C15.04,19 13.27,18.2 12,16.9C10.73,18.2 8.96,19 7,19A7,7 0 0,1 0,12A7,7 0 0,1 7,5H17M7,7A5,5 0 0,0 2,12A5,5 0 0,0 7,17C8.64,17 10.09,16.21 11,15H13C13.91,16.21 15.36,17 17,17A5,5 0 0,0 22,12A5,5 0 0,0 17,7H7Z"; -var mdiGamma = "M11.76 19C12.92 19 13.58 18 13.58 16.29C13.58 15.2 13.5 13.88 13.3 12.67L18 5H15.28L12.71 9.82L12.55 9.33C11.83 7.19 10.82 5 8.68 5C8 5 7.45 5.18 7 5.54C6 6.39 6 8 6 8.5H6.91C6.97 8.06 7.21 6.83 8.25 6.83C10 6.83 10.8 10 11.4 12.42C10.5 14.58 10 16.14 10 16.97C10 17.95 10.56 19 11.76 19"; -var mdiGantryCrane = "M21,6H22V4H21V3H18V4H6V3H3V4H2V6H3V20H2V22H7V20H6V6H11V7H11.5V10.62C11,10.79 10.69,11.25 10.69,11.76C10.69,12.2 10.92,12.6 11.3,12.82V14H11.92C12.26,14 12.54,14.27 12.55,14.61C12.55,14.96 12.28,15.24 11.93,15.24C11.71,15.24 11.5,15.12 11.39,14.93C11.22,14.64 10.84,14.54 10.55,14.71C10.26,14.87 10.15,15.25 10.32,15.55C10.65,16.12 11.26,16.47 11.92,16.47C12.94,16.46 13.76,15.62 13.75,14.6C13.74,13.83 13.26,13.14 12.53,12.88V12.82C13.12,12.5 13.34,11.78 13.03,11.2C12.92,11 12.74,10.81 12.53,10.7V7H13V6H18V20H17V22H22V20H21V6M5,15.29V16.71L4,17.71V16.29L5,15.29M4,20V19.24L5,18.24V19.66L4.66,20H4M4,7.29L5,6.29V7.71L4,8.71V7.29M4,10.29L5,9.29V10.71L4,11.71V10.29M4,13.29L5,12.29V13.71L4,14.71V13.24L4,13.29M20,15.29V16.71L19,17.71V16.29L20,15.29M19,20V19.24L20,18.24V19.66L19.66,20H19M19,7.29L20,6.29V7.71L19,8.71V7.29M19,10.29L20,9.29V10.71L19,11.71V10.29M19,13.29L20,12.29V13.71L19,14.71V13.24L19,13.29Z"; -var mdiGarage = "M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12M8,15H16V17H8V15M16,18V20H8V18H16Z"; -var mdiGarageAlert = "M17,20H15V11H5V20H3V9L10,5L17,9V20M6,12H14V14H6V12M6,15H14V17H6V15M19,15V10H21V15H19M19,19V17H21V19H19Z"; -var mdiGarageAlertVariant = "M20 9V20H18V11H2V20H0V9L10 5L20 9M17 12H3V14H17V12M17 15H3V17H17V15M22 15V10H24V15H22M22 19V17H24V19H22Z"; -var mdiGarageOpen = "M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12Z"; -var mdiGarageOpenVariant = "M22 9V20H20V11H4V20H2V9L12 5L22 9M19 12H5V14H19V12Z"; -var mdiGarageVariant = "M22 9V20H20V11H4V20H2V9L12 5L22 9M19 12H5V14H19V12M19 18H5V20H19V18M19 15H5V17H19V15Z"; -var mdiGasCylinder = "M16,9V14L16,20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V14L8,9C8,7.14 9.27,5.57 11,5.13V4H9V2H15V4H13V5.13C14.73,5.57 16,7.14 16,9Z"; -var mdiGasStation = "M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M12,10H6V5H12M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14C17,12.89 16.1,12 15,12H14V5C14,3.89 13.1,3 12,3H6C4.89,3 4,3.89 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23Z"; -var mdiGasStationOff = "M1 4.27L2.28 3L21 21.72L19.73 23L17.71 21C16.56 20.85 15.65 19.94 15.5 18.78L14 17.27V21H4V7.27L1 4.27M18 10C18.55 10 19 9.55 19 9C19 8.45 18.55 8 18 8C17.45 8 17 8.45 17 9C17 9.55 17.45 10 18 10M12 10V5H6.82L5.06 3.23C5.34 3.08 5.66 3 6 3H12C13.1 3 14 3.89 14 5V12H15C16.1 12 17 12.89 17 14V15.18L11.82 10H12M6 10H6.73L6 9.27V10M19.77 7.23C20.22 7.68 20.5 8.31 20.5 9L20.5 18.67L19 17.18V11.29C18.69 11.42 18.36 11.5 18 11.5C16.62 11.5 15.5 10.38 15.5 9C15.5 7.93 16.17 7.03 17.11 6.67L15 4.56L16.06 3.5L19.78 7.22L19.77 7.23Z"; -var mdiGasStationOffOutline = "M1 4.27L2.28 3L6 6.72L21 21.72L19.73 23L17.72 21C16.56 20.85 15.65 19.94 15.5 18.78L14 17.27V21H4V7.27L1 4.27M19.77 7.23C20.22 7.68 20.5 8.31 20.5 9L20.5 18.67L19 17.18V11.29C18.69 11.42 18.36 11.5 18 11.5C16.62 11.5 15.5 10.38 15.5 9C15.5 7.93 16.17 7.03 17.11 6.67L15 4.56L16.06 3.5L19.78 7.22L19.77 7.23M11.82 10H12V5H6.82L5.06 3.24C5.34 3.09 5.66 3 6 3H12C13.1 3 14 3.9 14 5V12H15C16.1 12 17 12.9 17 14V15.18L11.82 10M6 10H6.73L6 9.27V10M6 12V19H12V15.27L8.73 12H6M18 10C18.55 10 19 9.55 19 9C19 8.45 18.55 8 18 8C17.45 8 17 8.45 17 9C17 9.55 17.45 10 18 10Z"; -var mdiGasStationOutline = "M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7.03 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14A2,2 0 0,0 15,12H14V5A2,2 0 0,0 12,3H6A2,2 0 0,0 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23M12,13.5V19H6V12H12V13.5M12,10H6V5H12V10M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10Z"; -var mdiGate = "M9,5V10H7V6H5V10H3V8H1V20H3V18H5V20H7V18H9V20H11V18H13V20H15V18H17V20H19V18H21V20H23V8H21V10H19V6H17V10H15V5H13V10H11V5H9M3,12H5V16H3V12M7,12H9V16H7V12M11,12H13V16H11V12M15,12H17V16H15V12M19,12H21V16H19V12Z"; -var mdiGateAnd = "M2,4V20H14A8,8 0 0,0 22,12A8,8 0 0,0 14,4H2M4,6H14A6,6 0 0,1 20,12A6,6 0 0,1 14,18H4V6Z"; -var mdiGateArrowRight = "M15 5V10H13V6H11V10H9V8H7V20H9V18H11V20H12.09A6 6 0 0 1 12 19A6 6 0 0 1 13 15.69V12H15V13.81A6 6 0 0 1 17 13.09V12H19V13.09A6 6 0 0 1 21 13.81V12H22V10H21V5H19V10H17V5H15M9 12H11V16H9V12M19 16V18H15V20H19V22L22 19L19 16Z"; -var mdiGateNand = "M2,4V20H10C13.43,20 16.5,17.84 17.6,14.6C18,14.8 18.5,15 19,15A3,3 0 0,0 22,12A3,3 0 0,0 19,9C18.5,9 18.03,9.15 17.6,9.4C16.5,6.16 13.43,4 10,4H2M4,6H10A6,6 0 0,1 16,12A6,6 0 0,1 10,18H4V6M19,11C19.5,11 20,11.5 20,12C20,12.5 19.5,13 19,13A1,1 0 0,1 18,12C18,11.5 18.5,11 19,11Z"; -var mdiGateNor = "M2,4C5,10 5,14 2,20H5C9.4,20 13,17.7 16.6,13.7C17.15,14.5 18.04,15 19,15A3,3 0 0,0 22,12A3,3 0 0,0 19,9C18.04,9 17.15,9.5 16.6,10.3C13,6.3 9.4,4 5,4H2M5,6C8.8,6 12,8.1 15.3,12C12,15.9 8.8,18 5,18C6.5,14 6.5,10 5,6M19,11C19.5,11 20,11.5 20,12C20,12.5 19.5,13 19,13A1,1 0 0,1 18,12C18,11.5 18.5,11 19,11Z"; -var mdiGateNot = "M2,4V20L16.2,13C16.62,14.19 17.74,15 19,15A3,3 0 0,0 22,12A3,3 0 0,0 19,9C17.74,9 16.62,9.81 16.2,11L2,4M4,7.3L13.7,12L4,16.7V7.3M19,11C19.5,11 20,11.5 20,12C20,12.5 19.5,13 19,13A1,1 0 0,1 18,12C18,11.5 18.5,11 19,11Z"; -var mdiGateOpen = "M7 20V6H5V10H3V8H1V20H3V18H5V20H7M3 16V12H5V16H3M21 8V10H19V6H17V20H19V18H21V20H23V8H21M21 16H19V12H21V16Z"; -var mdiGateOr = "M2,4C5,10 5,14 2,20H8C13,20 19,16 22,12C19,8 13,4 8,4H2M5,6H8C11.5,6 16.3,9 19.3,12C16.3,15 11.5,18 8,18H5C6.4,13.9 6.4,10.1 5,6Z"; -var mdiGateXnor = "M2,4C5,10 5,14 2,20H4C7,14 7,10 4.1,4H2M6,4C9,10 9,14 6,20H9C12.2,20 14.8,16.8 16.7,14C17.28,14.65 18.12,15 19,15A3,3 0 0,0 22,12A3,3 0 0,0 19,9C18.12,9 17.28,9.35 16.7,10C14.7,7.2 12.2,4 9,4H6M9,6C12,6 14,10 15.5,12C14,14 12,18 9,18C10.6,14 10.6,10 9,6M19,11C19.5,11 20,11.5 20,12C20,12.5 19.5,13 19,13A1,1 0 0,1 18,12C18,11.5 18.5,11 19,11Z"; -var mdiGateXor = "M2,4C5,10 5,14 2,20H4C7,14 7,10 4.1,4H2M6,4C9,10 9,14 6,20H9C14,20 18,17 22,12C18,7 14,4 9,4H6M9,6C12.8,6 16,8.1 19.3,12C15.9,15.9 12.8,18 9,18C10.5,14 10.5,10 9,6Z"; -var mdiGatsby = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C8.27,4 5.14,6.55 4.25,10L14,19.75C17.45,18.86 20,15.73 20,12H14.75V13.5H18.2C17.71,15.54 16.24,17.19 14.31,17.94L6.06,9.69C7,7.31 9.3,5.63 12,5.63C14.13,5.63 16,6.67 17.18,8.28L18.41,7.22C16.95,5.26 14.63,4 12,4M4,12A8,8 0 0,0 12,20C12.04,20 12.09,20 4,12Z"; -var mdiGauge = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12C20,14.4 19,16.5 17.3,18C15.9,16.7 14,16 12,16C10,16 8.2,16.7 6.7,18C5,16.5 4,14.4 4,12A8,8 0 0,1 12,4M14,5.89C13.62,5.9 13.26,6.15 13.1,6.54L11.81,9.77L11.71,10C11,10.13 10.41,10.6 10.14,11.26C9.73,12.29 10.23,13.45 11.26,13.86C12.29,14.27 13.45,13.77 13.86,12.74C14.12,12.08 14,11.32 13.57,10.76L13.67,10.5L14.96,7.29L14.97,7.26C15.17,6.75 14.92,6.17 14.41,5.96C14.28,5.91 14.15,5.89 14,5.89M10,6A1,1 0 0,0 9,7A1,1 0 0,0 10,8A1,1 0 0,0 11,7A1,1 0 0,0 10,6M7,9A1,1 0 0,0 6,10A1,1 0 0,0 7,11A1,1 0 0,0 8,10A1,1 0 0,0 7,9M17,9A1,1 0 0,0 16,10A1,1 0 0,0 17,11A1,1 0 0,0 18,10A1,1 0 0,0 17,9Z"; -var mdiGaugeEmpty = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.4 5,16.5 6.7,18C8.1,16.7 10,16 12,16C14,16 15.8,16.7 17.3,18C19,16.5 20,14.4 20,12A8,8 0 0,0 12,4M14,6A1,1 0 0,1 15,7A1,1 0 0,1 14,8A1,1 0 0,1 13,7A1,1 0 0,1 14,6M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6M6.91,8.94C7.04,8.94 7.16,8.97 7.3,9L10.5,10.32L10.77,10.43C11.33,10 12.09,9.88 12.75,10.15C13.77,10.56 14.27,11.73 13.85,12.75C13.44,13.77 12.27,14.27 11.25,13.85C10.59,13.59 10.12,13 10,12.28L9.77,12.18L6.55,10.88L6.53,10.87C6,10.66 5.77,10.08 5.97,9.56C6.13,9.18 6.5,8.93 6.91,8.94V8.94M17,9A1,1 0 0,1 18,10A1,1 0 0,1 17,11A1,1 0 0,1 16,10A1,1 0 0,1 17,9Z"; -var mdiGaugeFull = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12C20,14.4 19,16.5 17.3,18C15.9,16.7 14,16 12,16C10,16 8.2,16.7 6.7,18C5,16.5 4,14.4 4,12A8,8 0 0,1 12,4M10,6A1,1 0 0,0 9,7A1,1 0 0,0 10,8A1,1 0 0,0 11,7A1,1 0 0,0 10,6M14,6A1,1 0 0,0 13,7A1,1 0 0,0 14,8A1,1 0 0,0 15,7A1,1 0 0,0 14,6M17.09,8.94C16.96,8.94 16.84,8.97 16.7,9L13.5,10.32L13.23,10.43C12.67,10 11.91,9.88 11.25,10.15C10.23,10.56 9.73,11.73 10.15,12.75C10.56,13.77 11.73,14.27 12.75,13.85C13.41,13.59 13.88,13 14,12.28L14.23,12.18L17.45,10.88L17.47,10.87C18,10.66 18.23,10.08 18.03,9.56C17.87,9.18 17.5,8.93 17.09,8.94M7,9A1,1 0 0,0 6,10A1,1 0 0,0 7,11A1,1 0 0,0 8,10A1,1 0 0,0 7,9Z"; -var mdiGaugeLow = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.4 5,16.5 6.7,18C8.1,16.7 10,16 12,16C14,16 15.8,16.7 17.3,18C19,16.5 20,14.4 20,12A8,8 0 0,0 12,4M10,5.89C10.38,5.9 10.74,6.15 10.9,6.54L12.19,9.77L12.29,10C13,10.13 13.59,10.6 13.86,11.26C14.27,12.29 13.77,13.45 12.74,13.86C11.71,14.27 10.55,13.77 10.14,12.74C9.88,12.08 10,11.32 10.43,10.76L10.33,10.5L9.04,7.29L9.03,7.26C8.83,6.75 9.08,6.17 9.59,5.96C9.72,5.91 9.85,5.89 10,5.89V5.89M14,6A1,1 0 0,1 15,7A1,1 0 0,1 14,8A1,1 0 0,1 13,7A1,1 0 0,1 14,6M17,9A1,1 0 0,1 18,10A1,1 0 0,1 17,11A1,1 0 0,1 16,10A1,1 0 0,1 17,9M7,9A1,1 0 0,1 8,10A1,1 0 0,1 7,11A1,1 0 0,1 6,10A1,1 0 0,1 7,9Z"; -var mdiGavel = "M2.3,20.28L11.9,10.68L10.5,9.26L9.78,9.97C9.39,10.36 8.76,10.36 8.37,9.97L7.66,9.26C7.27,8.87 7.27,8.24 7.66,7.85L13.32,2.19C13.71,1.8 14.34,1.8 14.73,2.19L15.44,2.9C15.83,3.29 15.83,3.92 15.44,4.31L14.73,5L16.15,6.43C16.54,6.04 17.17,6.04 17.56,6.43C17.95,6.82 17.95,7.46 17.56,7.85L18.97,9.26L19.68,8.55C20.07,8.16 20.71,8.16 21.1,8.55L21.8,9.26C22.19,9.65 22.19,10.29 21.8,10.68L16.15,16.33C15.76,16.72 15.12,16.72 14.73,16.33L14.03,15.63C13.63,15.24 13.63,14.6 14.03,14.21L14.73,13.5L13.32,12.09L3.71,21.7C3.32,22.09 2.69,22.09 2.3,21.7C1.91,21.31 1.91,20.67 2.3,20.28M20,19A2,2 0 0,1 22,21V22H12V21A2,2 0 0,1 14,19H20Z"; -var mdiGenderFemale = "M12,4A6,6 0 0,1 18,10C18,12.97 15.84,15.44 13,15.92V18H15V20H13V22H11V20H9V18H11V15.92C8.16,15.44 6,12.97 6,10A6,6 0 0,1 12,4M12,6A4,4 0 0,0 8,10A4,4 0 0,0 12,14A4,4 0 0,0 16,10A4,4 0 0,0 12,6Z"; -var mdiGenderMale = "M9,9C10.29,9 11.5,9.41 12.47,10.11L17.58,5H13V3H21V11H19V6.41L13.89,11.5C14.59,12.5 15,13.7 15,15A6,6 0 0,1 9,21A6,6 0 0,1 3,15A6,6 0 0,1 9,9M9,11A4,4 0 0,0 5,15A4,4 0 0,0 9,19A4,4 0 0,0 13,15A4,4 0 0,0 9,11Z"; -var mdiGenderMaleFemale = "M17.58,4H14V2H21V9H19V5.41L15.17,9.24C15.69,10.03 16,11 16,12C16,14.42 14.28,16.44 12,16.9V19H14V21H12V23H10V21H8V19H10V16.9C7.72,16.44 6,14.42 6,12A5,5 0 0,1 11,7C12,7 12.96,7.3 13.75,7.83L17.58,4M11,9A3,3 0 0,0 8,12A3,3 0 0,0 11,15A3,3 0 0,0 14,12A3,3 0 0,0 11,9Z"; -var mdiGenderMaleFemaleVariant = "M7 3A5 5 0 0 0 9 7A5 5 0 0 0 7 11A5 5 0 0 0 11 15.9V18H9V20H11V22H13V20H15V18H13V15.9A5 5 0 0 0 17 11A5 5 0 0 0 15 7A5 5 0 0 0 17 3H15A3 3 0 0 1 12 6A3 3 0 0 1 9 3M12 8A3 3 0 0 1 15 11A3 3 0 0 1 12 14A3 3 0 0 1 9 11A3 3 0 0 1 12 8Z"; -var mdiGenderNonBinary = "M13 3H11V5.27L9.04 4.13L8.04 5.87L10 7L8.04 8.13L9.04 9.87L11 8.73V12.1C8.72 12.56 7 14.58 7 17C7 19.76 9.24 22 12 22S17 19.76 17 17C17 14.58 15.28 12.56 13 12.1V8.73L14.96 9.87L15.96 8.13L14 7L15.96 5.87L14.96 4.13L13 5.27V3M12 20C10.35 20 9 18.65 9 17S10.35 14 12 14 15 15.35 15 17 13.65 20 12 20Z"; -var mdiGenderTransgender = "M19.58,3H15V1H23V9H21V4.41L16.17,9.24C16.69,10.03 17,11 17,12C17,14.42 15.28,16.44 13,16.9V19H15V21H13V23H11V21H9V19H11V16.9C8.72,16.44 7,14.42 7,12C7,11 7.3,10.04 7.82,9.26L6.64,8.07L5.24,9.46L3.83,8.04L5.23,6.65L3,4.42V8H1V1H8V3H4.41L6.64,5.24L8.08,3.81L9.5,5.23L8.06,6.66L9.23,7.84C10,7.31 11,7 12,7C13,7 13.96,7.3 14.75,7.83L19.58,3M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; -var mdiGentoo = "M10.28,2C9.93,2 9.57,2.03 9.23,2.1C5.61,2.76 3.06,5.89 2.85,7.96C2.74,8.97 3.29,9.73 3.59,10.06C4.4,10.97 6.03,11.66 7.07,12.23C5.56,13.5 4.87,14.14 4.19,14.86C3.17,15.93 2.45,17.1 2.45,17.95C2.45,18.22 2.4,19.09 2.76,19.77C2.89,20.03 3.27,20.89 4.41,21.53C5.14,21.94 6.17,22.09 7.19,21.95C10.33,21.5 14.54,18.83 17.55,16.35C19.46,14.77 20.86,13.23 21.26,12.5C21.59,11.87 21.63,10.78 21.44,10.09C20.9,8.14 16.53,4.15 12.96,2.55C12.14,2.18 11.2,2 10.28,2M11.34,4.91C11.59,4.91 11.81,4.94 12,5C13.15,5.3 15.08,6.68 14.91,7.94C14.68,9.6 13.23,10.27 11.56,10.03C10.58,9.9 8.63,8.8 8.78,6.89C8.89,5.4 10.3,4.9 11.34,4.91M11.32,6.65C11.05,6.65 10.84,6.71 10.74,6.87C10.27,7.59 10.5,8.09 10.92,8.42C11.07,8.04 12.71,8.45 12.75,8.79C14.17,7.72 12.36,6.66 11.32,6.65Z"; -var mdiGesture = "M4.59,6.89C5.29,6.18 6,5.54 6.3,5.67C6.8,5.87 6.3,6.7 6,7.19C5.75,7.61 3.14,11.08 3.14,13.5C3.14,14.78 3.62,15.84 4.5,16.5C5.23,17.04 6.22,17.21 7.12,16.94C8.19,16.63 9.07,15.54 10.18,14.17C11.39,12.68 13,10.73 14.26,10.73C15.89,10.73 15.91,11.74 16,12.5C12.24,13.16 10.64,16.19 10.64,17.89C10.64,19.59 12.08,21 13.85,21C15.5,21 18.14,19.65 18.54,14.88H21V12.38H18.53C18.38,10.73 17.44,8.18 14.5,8.18C12.25,8.18 10.32,10.09 9.56,11C9,11.75 7.5,13.5 7.27,13.74C7,14.04 6.59,14.58 6.16,14.58C5.71,14.58 5.44,13.75 5.8,12.66C6.15,11.57 7.2,9.8 7.65,9.14C8.43,8 8.95,7.22 8.95,5.86C8.95,3.69 7.31,3 6.44,3C5.12,3 3.97,4 3.72,4.25C3.36,4.61 3.06,4.91 2.84,5.18L4.59,6.89M13.88,18.55C13.57,18.55 13.14,18.29 13.14,17.83C13.14,17.23 13.87,15.63 16,15.07C15.71,17.76 14.58,18.55 13.88,18.55Z"; -var mdiGestureDoubleTap = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M11,5A4,4 0 0,1 15,9C15,10.5 14.2,11.77 13,12.46V11.24C13.61,10.69 14,9.89 14,9A3,3 0 0,0 11,6A3,3 0 0,0 8,9C8,9.89 8.39,10.69 9,11.24V12.46C7.8,11.77 7,10.5 7,9A4,4 0 0,1 11,5M11,3A6,6 0 0,1 17,9C17,10.7 16.29,12.23 15.16,13.33L14.16,12.88C15.28,11.96 16,10.56 16,9A5,5 0 0,0 11,4A5,5 0 0,0 6,9C6,11.05 7.23,12.81 9,13.58V14.66C6.67,13.83 5,11.61 5,9A6,6 0 0,1 11,3Z"; -var mdiGesturePinch = "M13,9A1,1 0 0,1 14,8A1,1 0 0,1 15,9V13.47L16.21,13.6L21.15,15.8C21.67,16.04 22,16.56 22,17.14V21.5C21.97,22.32 21.32,22.97 20.5,23H14C13.62,23 13.26,22.85 13,22.57L8.1,18.37L8.84,17.6C9.03,17.39 9.3,17.28 9.58,17.28H9.8L13,19V9M14,5C15.42,5 16.74,5.76 17.45,7C18.56,8.9 17.91,11.35 16,12.46V11.23C16.64,10.67 17,9.85 17,9A3,3 0 0,0 14,6A3,3 0 0,0 11,9C11,9.85 11.36,10.67 12,11.23V12.46C10.77,11.75 10,10.43 10,9A4,4 0 0,1 14,5M4,9L7,12H5V15H3V12H1L4,9M4,7L1,4H3V1H5V4H7L4,7M9,14C9.73,14 10.41,14.19 11,14.54V15.76C10.47,15.29 9.77,15 9,15A3,3 0 0,0 6,18C6,19 6.5,19.87 7.22,20.42L9.31,22H9A4,4 0 0,1 5,18A4,4 0 0,1 9,14Z"; -var mdiGestureSpread = "M4,1L7,4H5V7H3V4H1L4,1M4,15L1,12H3V9H5V12H7L4,15M13,9A1,1 0 0,1 14,8A1,1 0 0,1 15,9V13.47L16.21,13.6L21.15,15.8C21.67,16.04 22,16.56 22,17.14V21.5C21.97,22.32 21.32,22.97 20.5,23H14C13.62,23 13.26,22.85 13,22.57L8.1,18.37L8.84,17.6C9.03,17.39 9.3,17.28 9.58,17.28H9.8L13,19V9M14,5C15.42,5 16.74,5.76 17.45,7C18.56,8.9 17.91,11.35 16,12.46V11.23C16.64,10.67 17,9.85 17,9A3,3 0 0,0 14,6A3,3 0 0,0 11,9C11,9.85 11.36,10.67 12,11.23V12.46C10.77,11.75 10,10.43 10,9A4,4 0 0,1 14,5M9,14C9.73,14 10.41,14.19 11,14.54V15.76C10.47,15.29 9.77,15 9,15A3,3 0 0,0 6,18C6,19 6.5,19.87 7.22,20.42L9.31,22H9A4,4 0 0,1 5,18A4,4 0 0,1 9,14Z"; -var mdiGestureSwipe = "M20.11,3.89L22,2V7H17L19.08,4.92C18.55,4.23 17.64,3.66 16.36,3.19C15.08,2.72 13.63,2.5 12,2.5C10.38,2.5 8.92,2.72 7.64,3.19C6.36,3.66 5.45,4.23 4.92,4.92L7,7H2V2L3.89,3.89C4.64,3 5.74,2.31 7.2,1.78C8.65,1.25 10.25,1 12,1C13.75,1 15.35,1.25 16.8,1.78C18.26,2.31 19.36,3 20.11,3.89M19.73,16.27V16.45L19,21.7C18.92,22.08 18.76,22.39 18.5,22.64C18.23,22.89 17.91,23 17.53,23H10.73C10.36,23 10,22.86 9.7,22.55L4.73,17.63L5.53,16.83C5.75,16.61 6,16.5 6.33,16.5H6.56L10,17.25V6.5C10,6.11 10.13,5.76 10.43,5.46C10.73,5.16 11.08,5 11.5,5C11.89,5 12.24,5.16 12.54,5.46C12.84,5.76 13,6.11 13,6.5V12.5H13.78C13.88,12.5 14.05,12.55 14.3,12.61L18.84,14.86C19.44,15.14 19.73,15.61 19.73,16.27Z"; -var mdiGestureSwipeDown = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M1,9L4,12L7,9H5V3H3V9H1Z"; -var mdiGestureSwipeHorizontal = "M6,1L3,4L6,7V5H9V7L12,4L9,1V3H6V1M11,8A1,1 0 0,0 10,9V19L6.8,17.28H6.58C6.3,17.28 6.03,17.39 5.84,17.6L5.1,18.37L10,22.57C10.26,22.85 10.62,23 11,23H17.5A1.5,1.5 0 0,0 19,21.5V17.14C19,16.56 18.68,16.03 18.15,15.79L13.21,13.6L12,13.47V9A1,1 0 0,0 11,8Z"; -var mdiGestureSwipeLeft = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M3,4L6,7V5H12V3H6V1L3,4Z"; -var mdiGestureSwipeRight = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M12,4L9,1V3H3V5H9V7L12,4Z"; -var mdiGestureSwipeUp = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M7,6L4,3L1,6H3V12H5V6H7Z"; -var mdiGestureSwipeVertical = "M4,3L1,6H3V9H1L4,12L7,9H5V6H7L4,3M11,8A1,1 0 0,0 10,9V19L6.8,17.28H6.58C6.3,17.28 6.03,17.39 5.84,17.6L5.1,18.37L10,22.57C10.26,22.85 10.62,23 11,23H17.5A1.5,1.5 0 0,0 19,21.5V17.14C19,16.56 18.68,16.03 18.15,15.79L13.21,13.6L12,13.47V9A1,1 0 0,0 11,8Z"; -var mdiGestureTap = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M11,5A4,4 0 0,1 15,9C15,10.5 14.2,11.77 13,12.46V11.24C13.61,10.69 14,9.89 14,9A3,3 0 0,0 11,6A3,3 0 0,0 8,9C8,9.89 8.39,10.69 9,11.24V12.46C7.8,11.77 7,10.5 7,9A4,4 0 0,1 11,5Z"; -var mdiGestureTapBox = "M20 2H4C2.89 2 2 2.89 2 4V20C2 21.11 2.89 22 4 22H20C21.11 22 22 21.11 22 20V4C22 2.89 21.11 2 20 2M11 4C13.21 4 15 5.79 15 8C15 9.5 14.2 10.77 13 11.46V10.24C13.61 9.69 14 8.89 14 8C14 6.34 12.66 5 11 5S8 6.34 8 8C8 8.89 8.39 9.69 9 10.24V11.46C7.8 10.77 7 9.5 7 8C7 5.79 8.79 4 11 4M18 18.5C17.97 19.32 17.32 19.97 16.5 20H11C10.62 20 10.26 19.85 10 19.57L6 15.37L6.74 14.6C6.93 14.39 7.2 14.28 7.5 14.28H7.7L10 16V8C10 7.45 10.45 7 11 7S12 7.45 12 8V12.47L13.21 12.6L17.15 14.79C17.68 15.03 18 15.56 18 16.14V18.5Z"; -var mdiGestureTapButton = "M13 5C15.21 5 17 6.79 17 9C17 10.5 16.2 11.77 15 12.46V11.24C15.61 10.69 16 9.89 16 9C16 7.34 14.66 6 13 6S10 7.34 10 9C10 9.89 10.39 10.69 11 11.24V12.46C9.8 11.77 9 10.5 9 9C9 6.79 10.79 5 13 5M20 20.5C19.97 21.32 19.32 21.97 18.5 22H13C12.62 22 12.26 21.85 12 21.57L8 17.37L8.74 16.6C8.93 16.39 9.2 16.28 9.5 16.28H9.7L12 18V9C12 8.45 12.45 8 13 8S14 8.45 14 9V13.47L15.21 13.6L19.15 15.79C19.68 16.03 20 16.56 20 17.14V20.5M20 2H4C2.9 2 2 2.9 2 4V12C2 13.11 2.9 14 4 14H8V12L4 12L4 4H20L20 12H18V14H20V13.96L20.04 14C21.13 14 22 13.09 22 12V4C22 2.9 21.11 2 20 2Z"; -var mdiGestureTapHold = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M9,12.44V9A2,2 0 0,1 11,7A2,2 0 0,1 13,9V12.44C14.19,11.75 15,10.47 15,9A4,4 0 0,0 11,5A4,4 0 0,0 7,9C7,10.47 7.81,11.75 9,12.44Z"; -var mdiGestureTwoDoubleTap = "M19,15.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V7A1,1 0 0,1 13,6A1,1 0 0,1 14,7V12L18.15,13.84C18.66,14.07 19,14.58 19,15.14M13,3A4,4 0 0,1 17,7C17,8.5 16.2,9.77 15,10.46V9.24C15.61,8.69 16,7.89 16,7A3,3 0 0,0 13,4C11.65,4 10.5,4.9 10.13,6.13C8.9,6.5 8,7.65 8,9C8,9.89 8.39,10.69 9,11.24V12.46C7.8,11.77 7,10.5 7,9C7,7.38 7.97,6 9.35,5.35C10,3.97 11.38,3 13,3M13,1A6,6 0 0,1 19,7C19,9.06 17.96,10.88 16.38,11.96L15.26,11.46C16.89,10.64 18,8.95 18,7A5,5 0 0,0 13,2C11.11,2 9.46,3.05 8.61,4.61C7.05,5.46 6,7.11 6,9C6,11.05 7.23,12.81 9,13.58V14.66C6.67,13.83 5,11.61 5,9C5,6.83 6.15,4.93 7.88,3.88C8.93,2.15 10.83,1 13,1Z"; -var mdiGestureTwoTap = "M19,15.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V7A1,1 0 0,1 13,6A1,1 0 0,1 14,7V12L18.15,13.84C18.66,14.07 19,14.58 19,15.14M15,10.45V9.24L15,9.23C15.23,9.03 15.42,8.79 15.57,8.54C15.84,8.09 16,7.56 16,7A3,3 0 0,0 13,4C12.21,4 11.5,4.31 10.95,4.81L10.81,4.95C10.68,5.09 10.56,5.24 10.46,5.4C10.36,5.56 10.27,5.74 10.2,5.92C10.17,6 10.15,6.06 10.13,6.13C8.9,6.5 8,7.65 8,9C8,9.7 8.24,10.34 8.64,10.85C8.74,11 8.87,11.11 9,11.23V11.24L9,12.46V12.46C7.8,11.77 7,10.5 7,9C7,7.38 7.97,6 9.35,5.35C10,3.97 11.38,3 13,3A4,4 0 0,1 17,7C17,8.5 16.2,9.77 15,10.46V10.45Z"; -var mdiGhost = "M12,2A9,9 0 0,0 3,11V22L6,19L9,22L12,19L15,22L18,19L21,22V11A9,9 0 0,0 12,2M9,8A2,2 0 0,1 11,10A2,2 0 0,1 9,12A2,2 0 0,1 7,10A2,2 0 0,1 9,8M15,8A2,2 0 0,1 17,10A2,2 0 0,1 15,12A2,2 0 0,1 13,10A2,2 0 0,1 15,8Z"; -var mdiGhostOff = "M2,3.27L3.28,2L22,20.72L20.73,22L17.87,19.13L15,22L12,19L9,22L6,19L3,22V11C3,9.09 3.59,7.33 4.6,5.87L2,3.27M12,2A9,9 0 0,1 21,11V17.18L15.7,11.88C16.46,11.59 17,10.86 17,10A2,2 0 0,0 15,8C14.14,8 13.41,8.54 13.13,9.3L7.2,3.38C8.59,2.5 10.24,2 12,2M7,10A2,2 0 0,0 9,12C9.5,12 9.93,11.83 10.27,11.54L7.46,8.73C7.17,9.07 7,9.5 7,10Z"; -var mdiGhostOffOutline = "M8.29 5.09L6.84 3.64C8.3 2.61 10.08 2 12 2C16.97 2 21 6.03 21 11V17.8L19 15.8V11C19 7.14 15.86 4 12 4C10.63 4 9.36 4.4 8.29 5.09M22.11 21.46L20.84 22.73L17.56 19.45L15 22L12 19L9 22L6 19L3 22V11C3 9.26 3.5 7.63 4.36 6.25L1.11 3L2.39 1.73L6.89 6.23L8.69 8.03H8.69L10.97 10.31V10.31L17.41 16.76L17.42 16.76L21 20.34V20.35L22.11 21.46M16.14 18.03L9.89 11.78C9.62 11.92 9.32 12 9 12C7.9 12 7 11.11 7 10C7 9.68 7.08 9.38 7.22 9.11L5.82 7.71C5.3 8.69 5 9.81 5 11V17.17L6 16.17L7.41 17.59L9 19.17L10.59 17.59L12 16.17L13.41 17.59L15 19.17L16.14 18.03M15 8C13.96 8 13.11 8.8 13 9.82L15.18 12C16.2 11.89 17 11.04 17 10C17 8.9 16.11 8 15 8Z"; -var mdiGhostOutline = "M12 2C7.03 2 3 6.03 3 11V22L6 19L9 22L12 19L15 22L18 19L21 22V11C21 6.03 16.97 2 12 2M19 17.17L18 16.17L16.59 17.59L15 19.17L13.41 17.59L12 16.17L10.59 17.59L9 19.17L7.41 17.59L6 16.17L5 17.17V11C5 7.14 8.14 4 12 4S19 7.14 19 11V17.17M11 10C11 11.11 10.11 12 9 12S7 11.11 7 10 7.9 8 9 8 11 8.9 11 10M17 10C17 11.11 16.11 12 15 12S13 11.11 13 10 13.9 8 15 8 17 8.9 17 10Z"; -var mdiGif = "M11,8H13V16H11V8M7.67,8H4.33C3.53,8 3,8.67 3,9.33V14.67C3,15.33 3.53,16 4.33,16H7.67C8.47,16 9,15.33 9,14.67V12H7V14H5V10H9V9.33C9,8.67 8.47,8 7.67,8M21,10V8H15V16H17V14H19.5V12H17V10H21Z"; -var mdiGift = "M9.06,1.93C7.17,1.92 5.33,3.74 6.17,6H3A2,2 0 0,0 1,8V10A1,1 0 0,0 2,11H11V8H13V11H22A1,1 0 0,0 23,10V8A2,2 0 0,0 21,6H17.83C19,2.73 14.6,0.42 12.57,3.24L12,4L11.43,3.22C10.8,2.33 9.93,1.94 9.06,1.93M9,4C9.89,4 10.34,5.08 9.71,5.71C9.08,6.34 8,5.89 8,5A1,1 0 0,1 9,4M15,4C15.89,4 16.34,5.08 15.71,5.71C15.08,6.34 14,5.89 14,5A1,1 0 0,1 15,4M2,12V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V12H13V20H11V12H2Z"; -var mdiGiftOff = "M1.11 3L4.14 6.04H3C1.9 6.04 1 6.93 1 8.04V10.04C1 10.59 1.45 11.04 2 11.04H9.15L10.15 12.04H2V20.04C2 21.14 2.9 22.04 4 22.04H20C20.05 22.04 20.09 22.03 20.13 22L21.56 23.45L22.83 22.18L2.39 1.73L1.11 3M11 12.89L13 14.89V20.04H11V12.89M22 12.04V18.8L15.24 12.04H22M21 6.04H17.83C19 2.77 14.6 .455 12.57 3.28L12 4.04L11.43 3.26C10.8 2.37 9.93 2 9.06 1.97C8.06 1.96 7.08 2.5 6.5 3.3L8.04 4.84C8.13 4.38 8.5 4.04 9 4.04C9.89 4.04 10.34 5.12 9.71 5.75C9.56 5.89 9.39 6 9.21 6L11.24 8.04H13V9.8L14.24 11.04H22C22.55 11.04 23 10.59 23 10.04V8.04C23 6.93 22.11 6.04 21 6.04M15.71 5.75C15.08 6.38 14 5.93 14 5.04C14 4.5 14.45 4.04 15 4.04C15.89 4.04 16.34 5.12 15.71 5.75Z"; -var mdiGiftOffOutline = "M21 6H17.83C17.94 5.69 18 5.35 18 5C18 3.34 16.66 2 15 2C14 2 13.12 2.5 12.57 3.24V3.23L12 4L11.43 3.23V3.24C10.88 2.5 10 2 9 2C7.97 2 7.06 2.5 6.5 3.32L8.03 4.83C8.12 4.36 8.5 4 9 4C9.55 4 10 4.45 10 5C10 5.5 9.64 5.88 9.17 5.97L13 9.8V8H21V10H13.2L15.2 12H20V16.8L22 18.8V12C22.55 12 23 11.55 23 11V8C23 6.9 22.11 6 21 6M15 6C14.45 6 14 5.55 14 5S14.45 4 15 4 16 4.45 16 5 15.55 6 15 6M1.11 3L4.11 6H3C1.9 6 1 6.9 1 8V11C1 11.55 1.45 12 2 12V20C2 21.11 2.9 22 4 22H20C20.03 22 20.07 22 20.1 22L21.56 23.45L22.83 22.18L2.39 1.73L1.11 3M13 14.89L18.11 20H13V14.89M11 12.89V20H4V12H10.11L11 12.89M8.11 10H3V8H6.11L8.11 10Z"; -var mdiGiftOpen = "M22 10.92L19.26 9.33C21.9 7.08 19.25 2.88 16.08 4.31L15.21 4.68L15.1 3.72C15 2.64 14.44 1.87 13.7 1.42C12.06 .467 9.56 1.12 9.16 3.5L6.41 1.92C5.45 1.36 4.23 1.69 3.68 2.65L2.68 4.38C2.4 4.86 2.57 5.47 3.05 5.75L10.84 10.25L12.34 7.65L14.07 8.65L12.57 11.25L20.36 15.75C20.84 16 21.46 15.86 21.73 15.38L22.73 13.65C23.28 12.69 22.96 11.47 22 10.92M12.37 5C11.5 5.25 10.8 4.32 11.24 3.55C11.5 3.07 12.13 2.91 12.61 3.18C13.38 3.63 13.23 4.79 12.37 5M17.56 8C16.7 8.25 16 7.32 16.44 6.55C16.71 6.07 17.33 5.91 17.8 6.18C18.57 6.63 18.42 7.79 17.56 8M20.87 16.88C21.28 16.88 21.67 16.74 22 16.5V20C22 21.11 21.11 22 20 22H4C2.9 22 2 21.11 2 20V11H10.15L11 11.5V20H13V12.65L19.87 16.61C20.17 16.79 20.5 16.88 20.87 16.88Z"; -var mdiGiftOpenOutline = "M22 10.87L19.26 9.28C19.5 9.07 19.73 8.8 19.9 8.5C20.73 7.07 20.24 5.23 18.8 4.4C17.94 3.9 16.93 3.9 16.08 4.26L16.09 4.25L15.21 4.64L15.1 3.68L15.09 3.69C15 2.78 14.47 1.9 13.61 1.4C12.17 .575 10.34 1.07 9.5 2.5C9.33 2.8 9.22 3.13 9.16 3.45L6.41 1.87C5.45 1.32 4.23 1.64 3.68 2.6L2.18 5.2C1.9 5.68 2.07 6.29 2.55 6.56L4.28 7.56L8.5 10H2V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V14.87L22.73 13.6C23.28 12.64 22.96 11.42 22 10.87M16.44 6.5C16.71 6 17.33 5.86 17.8 6.13C18.28 6.41 18.45 7 18.17 7.5C17.89 8 17.28 8.14 16.8 7.87C16.33 7.59 16.16 7 16.44 6.5M14.07 8.6L21 12.6L20 14.33L13.07 10.33L14.07 8.6M11 20H4V12H11V20M11.34 9.33L4.41 5.33L5.41 3.6L12.34 7.6L11.34 9.33M11.61 4.87C11.13 4.59 10.97 4 11.24 3.5C11.5 3 12.13 2.86 12.61 3.13C13.09 3.41 13.25 4 12.97 4.5C12.7 5 12.09 5.14 11.61 4.87M13 20V12.6L20 16.64V20H13Z"; -var mdiGiftOutline = "M22,12V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12A1,1 0 0,1 1,11V8A2,2 0 0,1 3,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H21A2,2 0 0,1 23,8V11A1,1 0 0,1 22,12M4,20H11V12H4V20M20,20V12H13V20H20M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M3,8V10H11V8H3M13,8V10H21V8H13Z"; -var mdiGit = "M2.6,10.59L8.38,4.8L10.07,6.5C9.83,7.35 10.22,8.28 11,8.73V14.27C10.4,14.61 10,15.26 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.26 13.6,14.61 13,14.27V9.41L15.07,11.5C15,11.65 15,11.82 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10C16.82,10 16.65,10 16.5,10.07L13.93,7.5C14.19,6.57 13.71,5.55 12.78,5.16C12.35,5 11.9,4.96 11.5,5.07L9.8,3.38L10.59,2.6C11.37,1.81 12.63,1.81 13.41,2.6L21.4,10.59C22.19,11.37 22.19,12.63 21.4,13.41L13.41,21.4C12.63,22.19 11.37,22.19 10.59,21.4L2.6,13.41C1.81,12.63 1.81,11.37 2.6,10.59Z"; -var mdiGithub = "M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z"; -var mdiGitlab = "M21.94 13.11L20.89 9.89C20.89 9.86 20.88 9.83 20.87 9.8L18.76 3.32C18.65 3 18.33 2.75 17.96 2.75C17.6 2.75 17.28 3 17.17 3.33L15.17 9.5H8.84L6.83 3.33C6.72 3 6.4 2.75 6.04 2.75H6.04C5.67 2.75 5.35 3 5.24 3.33L3.13 9.82C3.13 9.82 3.13 9.83 3.13 9.83L2.06 13.11C1.9 13.61 2.07 14.15 2.5 14.45L11.72 21.16C11.89 21.28 12.11 21.28 12.28 21.15L21.5 14.45C21.93 14.15 22.1 13.61 21.94 13.11M8.15 10.45L10.72 18.36L4.55 10.45M13.28 18.37L15.75 10.78L15.85 10.45H19.46L13.87 17.61M17.97 3.94L19.78 9.5H16.16M14.86 10.45L13.07 15.96L12 19.24L9.14 10.45M6.03 3.94L7.84 9.5H4.23M3.05 13.69C2.96 13.62 2.92 13.5 2.96 13.4L3.75 10.97L9.57 18.42M20.95 13.69L14.44 18.42L14.46 18.39L20.25 10.97L21.04 13.4C21.08 13.5 21.04 13.62 20.95 13.69"; -var mdiGlassCocktail = "M7.5,7L5.5,5H18.5L16.5,7M11,13V19H6V21H18V19H13V13L21,5V3H3V5L11,13Z"; -var mdiGlassCocktailOff = "M13.33 12.67L7.66 7L6.13 5.47L2.39 1.73L1.11 3L3 4.89V5L11 13V19H6V21H18V19.89L20.84 22.73L22.11 21.46L13.33 12.67M13 19V14.89L17.11 19H13M8.2 5L6.2 3H21V5L14.6 11.4L10.2 7H16.5L18.5 5H8.2Z"; -var mdiGlassFlute = "M8,2H16C15.67,5 15.33,8 14.75,9.83C14.17,11.67 13.33,12.33 12.92,14.08C12.5,15.83 12.5,18.67 13.08,20C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,20C11.5,18.67 11.5,15.83 11.08,14.08C10.67,12.33 9.83,11.67 9.25,9.83C8.67,8 8.33,5 8,2M10,4C10.07,5.03 10.15,6.07 10.24,7H13.76C13.85,6.07 13.93,5.03 14,4H10Z"; -var mdiGlassMug = "M10,4V7H18V4H10M8,2H20L21,2V3L20,4V20L21,21V22H20L8,22H7V21L8,20V18.6L4.2,16.83C3.5,16.5 3,15.82 3,15V8A2,2 0 0,1 5,6H8V4L7,3V2H8M5,15L8,16.39V8H5V15Z"; -var mdiGlassMugOff = "M20 19.35V19.34L6.66 6L6.07 5.41L2.39 1.73L1.11 3L4.26 6.15C3.5 6.44 3 7.16 3 8V15C3 15.82 3.5 16.5 4.2 16.83L8 18.6V20L7 21V22H20.11L20.84 22.73L22.11 21.46L20 19.35M8 16.39L5 15V8H6.11L8 9.89V16.39M8 4L7 3V2H21V3L20 4V16.8L10.2 7H18V4H10V6.8L8 4.8V4Z"; -var mdiGlassMugVariant = "M9.5 3C7.56 3 5.85 4.24 5.23 6.08C3.36 6.44 2 8.09 2 10C2 12.21 3.79 14 6 14V22H17V20H20C20.55 20 21 19.55 21 19V11C21 10.45 20.55 10 20 10H18V8C18 5.79 16.21 4 14 4H12.32C11.5 3.35 10.53 3 9.5 3M9.5 5C10.29 5 11.03 5.37 11.5 6H14C15.11 6 16 6.9 16 8H12C10 8 9.32 9.13 8.5 10.63C7.68 12.13 6 12 6 12C4.89 12 4 11.11 4 10C4 8.9 4.89 8 6 8H7V7.5C7 6.12 8.12 5 9.5 5M17 12H19V18H17Z"; -var mdiGlassMugVariantOff = "M8.44 5.24L7 3.79C7.71 3.29 8.57 3 9.5 3C10.53 3 11.5 3.35 12.32 4H14C16.21 4 18 5.79 18 8V10H20C20.55 10 21 10.45 21 11V17.8L19 15.8V12H17V13.8L11.26 8.06C11.5 8 11.73 8 12 8H16C16 6.9 15.11 6 14 6H11.5C11.03 5.37 10.29 5 9.5 5C9.12 5 8.76 5.09 8.44 5.24M22.11 21.46L20.84 22.73L18.11 20H17V22H6V14C3.79 14 2 12.21 2 10C2 8.37 3 6.94 4.44 6.33L1.11 3L2.39 1.73L7.19 6.54L9.61 8.96L17 16.34V16.35L18.65 18H18.66L20.5 19.84V19.85L22.11 21.46M8.59 10.5L6.11 8H6C4.89 8 4 8.9 4 10C4 11.11 4.89 12 6 12C6 12 7.68 12.13 8.5 10.63L8.59 10.5Z"; -var mdiGlassPintOutline = "M4 2L6 22H17L19 2H4M6.2 4H16.8L15.2 20H7.8L6.2 4Z"; -var mdiGlassStange = "M8,2H16V22H8V2M10,4V7H14V4H10Z"; -var mdiGlassTulip = "M8,2H16C15.67,2.67 15.33,3.33 15.58,5C15.83,6.67 16.67,9.33 16.25,10.74C15.83,12.14 14.17,12.28 13.33,13.86C12.5,15.44 12.5,18.47 13.08,19.9C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,19.9C11.5,18.47 11.5,15.44 10.67,13.86C9.83,12.28 8.17,12.14 7.75,10.74C7.33,9.33 8.17,6.67 8.42,5C8.67,3.33 8.33,2.67 8,2M10,4C10,5.19 9.83,6.17 9.64,7H14.27C14.13,6.17 14,5.19 14,4H10Z"; -var mdiGlassWine = "M15.5,21.27L14.66,21.18C13.9,21.11 13.25,20.6 13,19.87C12.47,17.91 12.47,15.83 13,13.87C15.32,13.4 17,11.37 17,9C17,7 15,2 15,2H9C9,2 7,7 7,9C7,11.38 8.67,13.42 11,13.9C11.53,15.86 11.53,17.94 11,19.9C10.76,20.62 10.12,21.13 9.37,21.21L8.5,21.3C8.5,21.3 8,21.28 8,22H16C16,21.28 15.5,21.27 15.5,21.27M9.44,7L10.44,4H13.56L14.56,7H9.44Z"; -var mdiGlasses = "M3,10C2.76,10 2.55,10.09 2.41,10.25C2.27,10.4 2.21,10.62 2.24,10.86L2.74,13.85C2.82,14.5 3.4,15 4,15H7C7.64,15 8.36,14.44 8.5,13.82L9.56,10.63C9.6,10.5 9.57,10.31 9.5,10.19C9.39,10.07 9.22,10 9,10H3M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17M15,10C14.78,10 14.61,10.07 14.5,10.19C14.42,10.31 14.4,10.5 14.45,10.7L15.46,13.75C15.64,14.44 16.36,15 17,15H20C20.59,15 21.18,14.5 21.25,13.89L21.76,10.82C21.79,10.62 21.73,10.4 21.59,10.25C21.45,10.09 21.24,10 21,10H15Z"; -var mdiGlobeLight = "M13 8.08V2H11V8.08C7.61 8.57 5 11.47 5 15C5 18.87 8.13 22 12 22S19 18.87 19 15C19 11.47 16.39 8.57 13 8.08M12 20C9.24 20 7 17.76 7 15C7 13.87 7.39 12.84 8.03 12H15.97C16.61 12.84 17 13.87 17 15C17 17.76 14.76 20 12 20Z"; -var mdiGlobeModel = "M17.36,2.64L15.95,4.06C17.26,5.37 18,7.14 18,9A7,7 0 0,1 11,16C9.15,16 7.37,15.26 6.06,13.95L4.64,15.36C6.08,16.8 7.97,17.71 10,17.93V20H6V22H16V20H12V17.94C16.55,17.43 20,13.58 20,9C20,6.62 19.05,4.33 17.36,2.64M11,3.5A5.5,5.5 0 0,0 5.5,9A5.5,5.5 0 0,0 11,14.5A5.5,5.5 0 0,0 16.5,9A5.5,5.5 0 0,0 11,3.5M11,5.5C12.94,5.5 14.5,7.07 14.5,9A3.5,3.5 0 0,1 11,12.5A3.5,3.5 0 0,1 7.5,9A3.5,3.5 0 0,1 11,5.5Z"; -var mdiGmail = "M20,18H18V9.25L12,13L6,9.25V18H4V6H5.2L12,10.25L18.8,6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"; -var mdiGnome = "M18.42,2C14.26,2 13.5,7.93 15.82,7.93C18.16,7.93 22.58,2 18.42,2M12,2.73C11.92,2.73 11.85,2.73 11.78,2.74C9.44,3.04 10.26,7.12 11.5,7.19C12.72,7.27 14.04,2.73 12,2.73M7.93,4.34C7.81,4.34 7.67,4.37 7.53,4.43C5.65,5.21 7.24,8.41 8.3,8.2C9.27,8 9.39,4.3 7.93,4.34M4.93,6.85C4.77,6.84 4.59,6.9 4.41,7.03C2.9,8.07 4.91,10.58 5.8,10.19C6.57,9.85 6.08,6.89 4.93,6.85M13.29,8.77C10.1,8.8 6.03,10.42 5.32,13.59C4.53,17.11 8.56,22 12.76,22C14.83,22 17.21,20.13 17.66,17.77C18,15.97 13.65,16.69 13.81,17.88C14,19.31 12.76,20 11.55,19.1C7.69,16.16 17.93,14.7 17.25,10.69C17.03,9.39 15.34,8.76 13.29,8.77Z"; -var mdiGoKart = "M18,10H15.53L14.38,8.28L15.8,7.33L14.7,5.67L10.2,8.67L11.3,10.33L12.73,9.38L13.88,11.12L13,12H10.2L5.83,5.45L4.17,6.55L5.87,9.11C3.04,9.65 1,12.12 1,15V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V15A5,5 0 0,0 18,10M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5Z"; -var mdiGoKartTrack = "M22,5.5A3.5,3.5 0 0,0 18.5,2A3.5,3.5 0 0,0 15,5.5V6A3,3 0 0,1 12,9C10,9 9,6 6,6A4,4 0 0,0 2,10V11H4V10A2,2 0 0,1 6,8C6.86,8 7.42,8.45 8.32,9.24C9.28,10.27 10.6,10.9 12,11A5,5 0 0,0 17,6V5.5A1.5,1.5 0 0,1 18.5,4A1.5,1.5 0 0,1 20,5.5C19.86,6.35 19.58,7.18 19.17,7.94C18.5,9.2 18.11,10.58 18,12C18.09,13.37 18.5,14.71 19.21,15.89C19.6,16.54 19.87,17.25 20,18A2,2 0 0,1 18,20A2,2 0 0,1 16,18A3.75,3.75 0 0,0 12.25,14.25A3.75,3.75 0 0,0 8.5,18V18.5A1.5,1.5 0 0,1 7,20A3,3 0 0,1 4,17V15H6V13H0V15H2V17A5,5 0 0,0 7,22A3.5,3.5 0 0,0 10.5,18.5V18A1.75,1.75 0 0,1 12.25,16.25A1.75,1.75 0 0,1 14,18A4,4 0 0,0 18,22A4,4 0 0,0 22,18C22,16 20,14 20,12C20,10 22,7.5 22,5.5Z"; -var mdiGog = "M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M10.46,5.54C9.95,5.54 9.54,5.95 9.54,6.46V9.54A0.92,0.92 0 0,0 10.46,10.46H13.54A0.92,0.92 0 0,0 14.46,9.54V6.46C14.46,5.95 14.05,5.54 13.54,5.54H10.46M11.08,6.77H12.92A0.31,0.31 0 0,1 13.23,7.08V8.92A0.31,0.31 0 0,1 12.92,9.23H11.08A0.31,0.31 0 0,1 10.77,8.92V7.08A0.31,0.31 0 0,1 11.08,6.77M4.92,5.54A0.92,0.92 0 0,0 4,6.46V9.54C4,10.05 4.41,10.46 4.92,10.46H7.08V9.23H5.54C5.37,9.23 5.23,9.09 5.23,8.92V7.08C5.23,6.91 5.37,6.77 5.54,6.77H7.38A0.31,0.31 0 0,1 7.69,7.08V10.77A0.31,0.31 0 0,1 7.38,11.08H4V12.31H8C8.5,12.31 8.92,11.89 8.92,11.38V6.46A0.92,0.92 0 0,0 8,5.54H4.92M16,5.54C15.5,5.54 15.08,5.95 15.08,6.46V9.54C15.08,10.05 15.5,10.46 16,10.46H18.15V9.23H16.62C16.45,9.23 16.31,9.09 16.31,8.92V7.08C16.31,6.91 16.45,6.77 16.62,6.77H18.46C18.63,6.77 18.77,6.91 18.77,7.08V10.77C18.77,10.94 18.63,11.08 18.46,11.08H15.08V12.31H19.08C19.59,12.31 20,11.89 20,11.38V6.46C20,5.95 19.59,5.54 19.08,5.54H16M9.85,13.54C9.34,13.54 8.92,13.95 8.92,14.46V17.54C8.92,18.05 9.34,18.46 9.85,18.46H12.92C13.43,18.46 13.85,18.05 13.85,17.54V14.46C13.85,13.95 13.43,13.54 12.92,13.54H9.85M10.46,14.77H12.31C12.5,14.77 12.62,14.91 12.62,15.08V16.92A0.31,0.31 0 0,1 12.31,17.23H10.46C10.29,17.23 10.15,17.09 10.15,16.92V15.08A0.31,0.31 0 0,1 10.46,14.77M4.92,13.54C4.41,13.54 4,13.95 4,14.46V17.54C4,18.05 4.41,18.46 4.92,18.46H8.31V17.23H5.54C5.37,17.23 5.23,17.09 5.23,16.92V15.08C5.23,14.91 5.37,14.77 5.54,14.77H8.31V13.54H4.92M15.38,13.54C14.87,13.54 14.46,13.95 14.46,14.46V18.46H15.69V15.08A0.31,0.31 0 0,1 16,14.77H16.62V18.46H17.85V14.77H18.77V18.46H20V13.54H15.38Z"; -var mdiGold = "M1 22L2.5 17H9.5L11 22H1M13 22L14.5 17H21.5L23 22H13M6 15L7.5 10H14.5L16 15H6M23 6.05L19.14 7.14L18.05 11L16.96 7.14L13.1 6.05L16.96 4.96L18.05 1.1L19.14 4.96L23 6.05Z"; -var mdiGolf = "M19.5,18A1.5,1.5 0 0,1 21,19.5A1.5,1.5 0 0,1 19.5,21A1.5,1.5 0 0,1 18,19.5A1.5,1.5 0 0,1 19.5,18M17,5.92L11,9V18.03C13.84,18.19 16,19 16,20C16,21.1 13.31,22 10,22C6.69,22 4,21.1 4,20C4,19.26 5.21,18.62 7,18.27V20H9V2L17,5.92Z"; -var mdiGolfCart = "M19.89 12.37L18.25 5H19V3H3V7H1V9H3V12.54A6 6 0 0 0 1 17V19H3A3 3 0 0 0 9 19H15A3 3 0 0 0 21 19H23V17A5 5 0 0 0 19.89 12.37M6 20.5A1.5 1.5 0 1 1 7.5 19A1.5 1.5 0 0 1 6 20.5M15.53 12L14.38 10.28L15.8 9.33L14.7 7.67L10.2 10.67L11.3 12.33L12.73 11.38L13.88 13.12L13 14H10.2L5 7V5H16.2L17.75 12M18 20.5A1.5 1.5 0 1 1 19.5 19A1.5 1.5 0 0 1 18 20.5Z"; -var mdiGolfTee = "M7 19V17H17V19H15C14.5 19 14 19.2 13.6 19.6S13 20.5 13 21V22H11V21C11 20.5 10.8 20 10.4 19.6S9.5 19 9 19H7M11 6C11 5.7 11.1 5.5 11.3 5.3S11.7 5 12 5 12.5 5.1 12.7 5.3 13 5.7 13 6 12.9 6.5 12.7 6.7 12.3 7 12 7 11.5 6.9 11.3 6.7 11 6.3 11 6M13 8C13 7.7 13.1 7.5 13.3 7.3S13.7 7 14 7 14.5 7.1 14.7 7.3 15 7.7 15 8 14.9 8.5 14.7 8.7 14.3 9 14 9 13.5 8.9 13.3 8.7 13 8.3 13 8M9 8C9 7.7 9.1 7.5 9.3 7.3S9.7 7 10 7 10.5 7.1 10.7 7.3 11 7.7 11 8 10.9 8.5 10.7 8.7 10.3 9 10 9 9.5 8.9 9.3 8.7 9 8.3 9 8M16.9 4.1C15.5 2.7 13.9 2.1 12 2.1S8.4 2.8 7.1 4.1 5 7.1 5 9 5.7 12.6 7 13.9 10 15.9 11.9 15.9 15.5 15.2 16.8 13.9 18.8 10.9 18.8 9 18.3 5.4 16.9 4.1M15.5 12.5C14.5 13.5 13.3 14 12 14S9.4 13.5 8.5 12.5 7 10.4 7 9 7.5 6.4 8.5 5.5 10.6 4 12 4 14.6 4.5 15.5 5.5 17 7.6 17 9 16.5 11.6 15.5 12.5Z"; -var mdiGondola = "M18,10H13V7.59L22.12,6.07L21.88,4.59L16.41,5.5C16.46,5.35 16.5,5.18 16.5,5A1.5,1.5 0 0,0 15,3.5A1.5,1.5 0 0,0 13.5,5C13.5,5.35 13.63,5.68 13.84,5.93L13,6.07V5H11V6.41L10.41,6.5C10.46,6.35 10.5,6.18 10.5,6A1.5,1.5 0 0,0 9,4.5A1.5,1.5 0 0,0 7.5,6C7.5,6.36 7.63,6.68 7.83,6.93L1.88,7.93L2.12,9.41L11,7.93V10H6C4.89,10 4,10.9 4,12V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V12A2,2 0 0,0 18,10M6,12H8.25V16H6V12M9.75,16V12H14.25V16H9.75M18,16H15.75V12H18V16Z"; -var mdiGoodreads = "M17,12.77C15.96,14.42 14.22,15.5 12.25,15.5C9.07,15.5 6.5,12.7 6.5,9.25C6.5,5.8 9.07,3 12.25,3C14.22,3 15.96,4.08 17,5.73V3H18V15.25C18,20.71 14.54,21 11.5,21C9,21 7.55,19.31 7.13,17H8.14C8.5,18.75 9.54,20 11.5,20C13.72,20 17,20.05 17,15.25V15.25L17,12.77M12.25,4C9.63,4 7.5,6.35 7.5,9.25C7.5,12.15 9.63,14.5 12.25,14.5C14.87,14.5 17,12.15 17,9.25C17,6.35 14.87,4 12.25,4Z"; -var mdiGoogle = "M21.35,11.1H12.18V13.83H18.69C18.36,17.64 15.19,19.27 12.19,19.27C8.36,19.27 5,16.25 5,12C5,7.9 8.2,4.73 12.2,4.73C15.29,4.73 17.1,6.7 17.1,6.7L19,4.72C19,4.72 16.56,2 12.1,2C6.42,2 2.03,6.8 2.03,12C2.03,17.05 6.16,22 12.25,22C17.6,22 21.5,18.33 21.5,12.91C21.5,11.76 21.35,11.1 21.35,11.1V11.1Z"; -var mdiGoogleAds = "M12.25 1.47C11.55 1.42 10.82 1.58 10.17 1.96C8.41 2.97 7.81 5.21 8.82 6.96L16.16 19.66C17.17 21.42 19.41 22 21.17 21C22.92 20 23.5 17.75 22.5 16L15.18 3.3C14.54 2.2 13.43 1.56 12.25 1.47M6.82 6.76L1.5 16A3.67 3.67 0 0 0 1 17.83A3.67 3.67 0 0 0 4.67 21.5A3.67 3.67 0 0 0 7.84 19.66V19.67L11 14.19C9.65 11.89 8.27 9.6 7.03 7.23C6.95 7.08 6.88 6.92 6.83 6.76ZL16.4 5Z"; -var mdiGoogleAnalytics = "M15.86 4.39V19.39C15.86 21.06 17 22 18.25 22C19.39 22 20.64 21.21 20.64 19.39V4.5C20.64 2.96 19.5 2 18.25 2S15.86 3.06 15.86 4.39M9.61 12V19.39C9.61 21.07 10.77 22 12 22C13.14 22 14.39 21.21 14.39 19.39V12.11C14.39 10.57 13.25 9.61 12 9.61S9.61 10.67 9.61 12M5.75 17.23C7.07 17.23 8.14 18.3 8.14 19.61C8.14 20.93 7.07 22 5.75 22S3.36 20.93 3.36 19.61C3.36 18.3 4.43 17.23 5.75 17.23Z"; -var mdiGoogleAssistant = "M7,2A6,6 0 0,0 1,8A6,6 0 0,0 7,14A6,6 0 0,0 13,8A6,6 0 0,0 7,2M21.5,6A1.5,1.5 0 0,0 20,7.5A1.5,1.5 0 0,0 21.5,9A1.5,1.5 0 0,0 23,7.5A1.5,1.5 0 0,0 21.5,6M17,8A3,3 0 0,0 14,11A3,3 0 0,0 17,14A3,3 0 0,0 20,11A3,3 0 0,0 17,8M17,15A3.5,3.5 0 0,0 13.5,18.5A3.5,3.5 0 0,0 17,22A3.5,3.5 0 0,0 20.5,18.5A3.5,3.5 0 0,0 17,15Z"; -var mdiGoogleCardboard = "M20.74,6H3.2C2.55,6 2,6.57 2,7.27V17.73C2,18.43 2.55,19 3.23,19H8C8.54,19 9,18.68 9.16,18.21L10.55,14.74C10.79,14.16 11.35,13.75 12,13.75C12.65,13.75 13.21,14.16 13.45,14.74L14.84,18.21C15.03,18.68 15.46,19 15.95,19H20.74C21.45,19 22,18.43 22,17.73V7.27C22,6.57 21.45,6 20.74,6M7.22,14.58C6,14.58 5,13.55 5,12.29C5,11 6,10 7.22,10C8.44,10 9.43,11 9.43,12.29C9.43,13.55 8.44,14.58 7.22,14.58M16.78,14.58C15.56,14.58 14.57,13.55 14.57,12.29C14.57,11.03 15.56,10 16.78,10C18,10 19,11.03 19,12.29C19,13.55 18,14.58 16.78,14.58Z"; -var mdiGoogleChrome = "M12,20L15.46,14H15.45C15.79,13.4 16,12.73 16,12C16,10.8 15.46,9.73 14.62,9H19.41C19.79,9.93 20,10.94 20,12A8,8 0 0,1 12,20M4,12C4,10.54 4.39,9.18 5.07,8L8.54,14H8.55C9.24,15.19 10.5,16 12,16C12.45,16 12.88,15.91 13.29,15.77L10.89,19.91C7,19.37 4,16.04 4,12M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12M12,4C14.96,4 17.54,5.61 18.92,8H12C10.06,8 8.45,9.38 8.08,11.21L5.7,7.08C7.16,5.21 9.44,4 12,4M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiGoogleCircles = "M16.66,15H17C18,15 19,14.8 19.87,14.46C19.17,18.73 15.47,22 11,22C6,22 2,17.97 2,13C2,8.53 5.27,4.83 9.54,4.13C9.2,5 9,6 9,7V7.34C6.68,8.16 5,10.38 5,13A6,6 0 0,0 11,19C13.62,19 15.84,17.32 16.66,15M17,10A3,3 0 0,0 20,7A3,3 0 0,0 17,4A3,3 0 0,0 14,7A3,3 0 0,0 17,10M17,1A6,6 0 0,1 23,7A6,6 0 0,1 17,13A6,6 0 0,1 11,7C11,3.68 13.69,1 17,1Z"; -var mdiGoogleCirclesCommunities = "M15,12C13.89,12 13,12.89 13,14A2,2 0 0,0 15,16A2,2 0 0,0 17,14C17,12.89 16.1,12 15,12M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M14,9C14,7.89 13.1,7 12,7C10.89,7 10,7.89 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9M9,12A2,2 0 0,0 7,14A2,2 0 0,0 9,16A2,2 0 0,0 11,14C11,12.89 10.1,12 9,12Z"; -var mdiGoogleCirclesExtended = "M18,19C16.89,19 16,18.1 16,17C16,15.89 16.89,15 18,15A2,2 0 0,1 20,17A2,2 0 0,1 18,19M18,13A4,4 0 0,0 14,17A4,4 0 0,0 18,21A4,4 0 0,0 22,17A4,4 0 0,0 18,13M12,11.1A1.9,1.9 0 0,0 10.1,13A1.9,1.9 0 0,0 12,14.9A1.9,1.9 0 0,0 13.9,13A1.9,1.9 0 0,0 12,11.1M6,19C4.89,19 4,18.1 4,17C4,15.89 4.89,15 6,15A2,2 0 0,1 8,17A2,2 0 0,1 6,19M6,13A4,4 0 0,0 2,17A4,4 0 0,0 6,21A4,4 0 0,0 10,17A4,4 0 0,0 6,13M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M12,10A4,4 0 0,0 16,6A4,4 0 0,0 12,2A4,4 0 0,0 8,6A4,4 0 0,0 12,10Z"; -var mdiGoogleCirclesGroup = "M5,10A2,2 0 0,0 3,12C3,13.11 3.9,14 5,14C6.11,14 7,13.11 7,12A2,2 0 0,0 5,10M5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16M10.5,11H14V8L18,12L14,16V13H10.5V11M5,6C4.55,6 4.11,6.05 3.69,6.14C5.63,3.05 9.08,1 13,1C19.08,1 24,5.92 24,12C24,18.08 19.08,23 13,23C9.08,23 5.63,20.95 3.69,17.86C4.11,17.95 4.55,18 5,18C5.8,18 6.56,17.84 7.25,17.56C8.71,19.07 10.74,20 13,20A8,8 0 0,0 21,12A8,8 0 0,0 13,4C10.74,4 8.71,4.93 7.25,6.44C6.56,6.16 5.8,6 5,6Z"; -var mdiGoogleClassroom = "M23,2H1A1,1 0 0,0 0,3V21A1,1 0 0,0 1,22H23A1,1 0 0,0 24,21V3A1,1 0 0,0 23,2M22,20H20V19H15V20H2V4H22V20M10.29,9.71A1.71,1.71 0 0,1 12,8C12.95,8 13.71,8.77 13.71,9.71C13.71,10.66 12.95,11.43 12,11.43C11.05,11.43 10.29,10.66 10.29,9.71M5.71,11.29C5.71,10.58 6.29,10 7,10A1.29,1.29 0 0,1 8.29,11.29C8.29,12 7.71,12.57 7,12.57C6.29,12.57 5.71,12 5.71,11.29M15.71,11.29A1.29,1.29 0 0,1 17,10A1.29,1.29 0 0,1 18.29,11.29C18.29,12 17.71,12.57 17,12.57C16.29,12.57 15.71,12 15.71,11.29M20,15.14V16H16L14,16H10L8,16H4V15.14C4,14.2 5.55,13.43 7,13.43C7.55,13.43 8.11,13.54 8.6,13.73C9.35,13.04 10.7,12.57 12,12.57C13.3,12.57 14.65,13.04 15.4,13.73C15.89,13.54 16.45,13.43 17,13.43C18.45,13.43 20,14.2 20,15.14Z"; -var mdiGoogleCloud = "M23 14.75C23 18.2 20.2 21 16.75 21H7.25C3.8 21 1 18.2 1 14.75C1 12.61 2.08 10.72 3.71 9.6C4.58 5.82 7.96 3 12 3C16.04 3 19.42 5.82 20.29 9.6C21.93 10.72 23 12.61 23 14.75M16.63 17C17.94 17 19 15.94 19 14.63C19 13.35 18 12.3 16.72 12.25L16.75 11.75C16.75 9.13 14.62 7 12 7C10.58 7 9.3 7.62 8.43 8.61C9.93 8.9 11.23 9.72 12.14 10.86L9.5 13.5C9.08 12.77 8.29 12.25 7.38 12.25C6.06 12.25 5 13.31 5 14.63C5 15.9 6 16.93 7.25 17V17H16.63Z"; -var mdiGoogleController = "M7.97,16L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.21,7.81 5.14,6 7.5,6H16.5C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75A1.75,1.75 0 0,1 20.25,19.5C19.77,19.5 19.33,19.3 19,19L16.03,16H7.97M7,8V10H5V11H7V13H8V11H10V10H8V8H7M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z"; -var mdiGoogleControllerOff = "M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H7.97L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.1,9.09 3.53,8.17 4.19,7.46L2,5.27M5,10V11H7V13H8V11.27L6.73,10H5M16.5,6C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75C22,18.41 21.64,19 21.1,19.28L7.82,6H16.5M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z"; -var mdiGoogleDownasaur = "M13 2V3H12V9H11V10H9V11H8V12H7V13H5V12H4V11H3V9H2V15H3V16H4V17H5V18H6V22H8V21H7V20H8V19H9V18H10V19H11V22H13V21H12V17H13V16H14V15H15V12H16V13H17V11H15V9H20V8H17V7H22V3H21V2M14 3H15V4H14Z"; -var mdiGoogleDrive = "M7.71,3.5L1.15,15L4.58,21L11.13,9.5M9.73,15L6.3,21H19.42L22.85,15M22.28,14L15.42,2H8.58L8.57,2L15.43,14H22.28Z"; -var mdiGoogleEarth = "M12,12.14C11.09,10.77 10.14,9.78 9.14,9.19C8.14,8.59 7.27,8.38 6.5,8.55C5.77,8.73 5.14,9.14 4.64,9.8C4.2,10.39 4,11.06 4,11.81V12C4,12.78 4.11,13.58 4.36,14.39C4.45,14.64 4.5,14.64 4.55,14.39C4.67,13.77 4.96,13.31 5.41,13.03C5.87,12.75 6.47,12.76 7.22,13.05C7.97,13.35 8.7,14 9.42,14.95C10.7,16.67 12.2,17.72 13.92,18.09C16.14,18.41 17.81,17.7 18.94,16C19.25,15.39 19.5,14.86 19.64,14.39C19.73,14.08 19.69,14.05 19.5,14.3C19.03,14.92 18.4,15.33 17.6,15.5C16.8,15.7 15.89,15.5 14.86,15C13.83,14.43 12.88,13.5 12,12.14M16.97,8.16C15.41,5.81 13.72,4.5 11.91,4.17C10.47,3.95 8.91,4.45 7.22,5.67C7,5.83 6.9,5.91 6.91,5.93C6.93,5.95 7.06,5.89 7.31,5.77C9.81,4.55 12.22,5.83 14.53,9.61C15.03,10.45 15.55,11.11 16.1,11.58C16.65,12.05 17.16,12.33 17.65,12.42C18.13,12.5 18.57,12.5 18.96,12.38C19.35,12.25 19.7,12.05 20,11.77C20,11.17 19.91,10.5 19.69,9.8C19.19,9.92 18.74,9.88 18.35,9.68C17.96,9.5 17.5,8.97 16.97,8.16M12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12C22,14.75 21,17.1 19.05,19.05C17.1,21 14.75,22 12,22C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,9.25 3,6.9 4.95,4.95C6.9,3 9.25,2 12,2Z"; -var mdiGoogleFit = "M17,4A5,5 0 0,1 22,9C22,10.38 21.44,11.63 20.54,12.54L12,21.07L3.46,12.54C2.56,11.63 2,10.38 2,9A5,5 0 0,1 7,4C8.38,4 9.63,4.56 10.54,5.46L12,6.93L13.46,5.46C14.37,4.56 15.62,4 17,4M15.59,7.59L9.17,14L12,16.83L18.41,10.41C18.78,10.05 19,9.55 19,9A2,2 0 0,0 17,7C16.45,7 15.95,7.22 15.59,7.59M8.41,7.59C8.05,7.22 7.55,7 7,7A2,2 0 0,0 5,9C5,9.55 5.22,10.05 5.59,10.41L7.05,11.88L9.88,9.05L8.41,7.59Z"; -var mdiGoogleGlass = "M20 2H4C2.9 2 2 2.9 2 4V20C2 21.1 2.9 22 4 22H20C21.1 22 22 21.1 22 20V4C22 2.9 21.1 2 20 2M16.75 18H15.25V8.9L6.72 18H4.66L15.45 6.5C15.66 6.26 16 6.19 16.27 6.3C16.56 6.42 16.75 6.69 16.75 7V18Z"; -var mdiGoogleHangouts = "M15,11L14,13H12.5L13.5,11H12V8H15M11,11L10,13H8.5L9.5,11H8V8H11M11.5,2A8.5,8.5 0 0,0 3,10.5A8.5,8.5 0 0,0 11.5,19H12V22.5C16.86,20.15 20,15 20,10.5C20,5.8 16.19,2 11.5,2Z"; -var mdiGoogleHome = "M8.06,7.78C7.5,7.78 7.17,7.73 7.08,7.64L6.66,13.73C7.19,14.05 7.88,14.3 8.72,14.5C9.56,14.71 10.78,14.77 12.38,14.67C13.97,14.58 15.63,14.23 17.34,13.64L16.55,4.22C15.67,5.09 14.38,5.91 12.66,6.66C11.13,7.31 9.81,7.69 8.72,7.78H8.06M7.97,5.34C7.28,5.94 7,6.34 7.13,6.56C7.22,6.78 7.7,6.84 8.58,6.75C9.67,6.66 10.91,6.31 12.28,5.72C13.22,5.31 14.03,4.88 14.72,4.41C15.41,3.94 15.88,3.55 16.13,3.23C16.38,2.92 16.47,2.7 16.41,2.58C16.34,2.42 16.03,2.34 15.47,2.34C14.34,2.34 12.94,2.7 11.25,3.42C9.81,4.05 8.72,4.69 7.97,5.34M17.34,2.2C17.41,2.33 17.44,2.47 17.44,2.63L18.61,17C18.61,18.73 18,20.09 16.83,21.07C15.64,22.05 14.03,22.55 12,22.55C10,22.55 8.4,22.04 7.2,21C6,20 5.39,18.64 5.39,16.92L6.09,6.47C6.09,6.22 6.2,5.94 6.42,5.63C6.64,5.31 6.84,5.06 7.03,4.88L7.36,4.59C8.33,3.78 9.5,3.08 10.88,2.5C11.81,2.08 12.73,1.77 13.62,1.57C14.5,1.37 15.3,1.3 16,1.38C16.71,1.46 17.16,1.73 17.34,2.2Z"; -var mdiGoogleKeep = "M4 2H20C21.11 2 22 2.9 22 4V17.33L17.33 22H4C2.9 22 2 21.11 2 20V4C2 2.9 2.9 2 4 2M17 17V20.25L20.25 17H17M10 19H14V18H15V13C16.21 12.09 17 10.64 17 9C17 6.24 14.76 4 12 4S7 6.24 7 9C7 10.64 7.79 12.09 9 13V18H10V19M14 17H10V15H14V17M12 5C14.21 5 16 6.79 16 9C16 10.5 15.2 11.77 14 12.46V14H10V12.46C8.8 11.77 8 10.5 8 9C8 6.79 9.79 5 12 5Z"; -var mdiGoogleLens = "M6,2H18A4,4 0 0,1 22,6V12H20V6A2,2 0 0,0 18,4H6A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H12V22H6A4,4 0 0,1 2,18V6A4,4 0 0,1 6,2M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M18,16A2,2 0 0,1 20,18A2,2 0 0,1 18,20A2,2 0 0,1 16,18A2,2 0 0,1 18,16Z"; -var mdiGoogleMaps = "M18.27 6C19.28 8.17 19.05 10.73 17.94 12.81C17 14.5 15.65 15.93 14.5 17.5C14 18.2 13.5 18.95 13.13 19.76C13 20.03 12.91 20.31 12.81 20.59C12.71 20.87 12.62 21.15 12.53 21.43C12.44 21.69 12.33 22 12 22H12C11.61 22 11.5 21.56 11.42 21.26C11.18 20.53 10.94 19.83 10.57 19.16C10.15 18.37 9.62 17.64 9.08 16.93L18.27 6M9.12 8.42L5.82 12.34C6.43 13.63 7.34 14.73 8.21 15.83C8.42 16.08 8.63 16.34 8.83 16.61L13 11.67L12.96 11.68C11.5 12.18 9.88 11.44 9.3 10C9.22 9.83 9.16 9.63 9.12 9.43C9.07 9.06 9.06 8.79 9.12 8.43L9.12 8.42M6.58 4.62L6.57 4.63C4.95 6.68 4.67 9.53 5.64 11.94L9.63 7.2L9.58 7.15L6.58 4.62M14.22 2.36L11 6.17L11.04 6.16C12.38 5.7 13.88 6.28 14.56 7.5C14.71 7.78 14.83 8.08 14.87 8.38C14.93 8.76 14.95 9.03 14.88 9.4L14.88 9.41L18.08 5.61C17.24 4.09 15.87 2.93 14.23 2.37L14.22 2.36M9.89 6.89L13.8 2.24L13.76 2.23C13.18 2.08 12.59 2 12 2C10.03 2 8.17 2.85 6.85 4.31L6.83 4.32L9.89 6.89Z"; -var mdiGoogleMyBusiness = "M22 8.5C22 9.87 20.88 11 19.5 11S17 9.87 17 8.5C17 9.87 15.88 11 14.5 11C13.12 11 12 9.87 12 8.5C12 9.87 10.88 11 9.5 11S7 9.87 7 8.5C7 9.87 5.88 11 4.5 11S2 9.87 2 8.5L3.39 3.08C3.39 3.08 3.68 2 4.7 2H19.3C20.32 2 20.61 3.08 20.61 3.08L22 8.5M21 12.2V20C21 21.1 20.1 22 19 22H5C3.9 22 3 21.1 3 20V12.2C3.46 12.39 3.97 12.5 4.5 12.5C5.45 12.5 6.32 12.17 7 11.62C7.69 12.17 8.56 12.5 9.5 12.5C10.45 12.5 11.32 12.17 12 11.62C12.69 12.17 13.56 12.5 14.5 12.5C15.45 12.5 16.32 12.17 17 11.62C17.68 12.17 18.56 12.5 19.5 12.5C20.03 12.5 20.54 12.39 21 12.2M19 17.33C19 17.13 19 16.92 18.95 16.7L18.92 16.54H15.95V17.71H17.76C17.7 17.93 17.62 18.15 17.45 18.33C17.12 18.66 16.67 18.84 16.19 18.84C15.69 18.84 15.2 18.63 14.84 18.28C14.15 17.57 14.15 16.42 14.86 15.7C15.55 15 16.69 15 17.41 15.67L17.55 15.8L18.39 14.95L18.23 14.81C17.67 14.29 16.93 14 16.15 14H16.14C15.33 14 14.57 14.31 14 14.87C13.41 15.45 13.08 16.21 13.08 17C13.08 17.8 13.39 18.54 13.96 19.09H13.96C14.54 19.66 15.35 20 16.18 20H16.2C17 20 17.71 19.71 18.23 19.2C18.7 18.72 19 18 19 17.33Z"; -var mdiGoogleNearby = "M21.36,10.46L13.54,2.64C12.69,1.79 11.31,1.79 10.46,2.64L2.64,10.46C1.79,11.31 1.79,12.69 2.64,13.54L10.46,21.36C11.31,22.21 12.69,22.21 13.54,21.36L21.36,13.54C22.21,12.69 22.21,11.31 21.36,10.46M12,19L5,12L12,5L19,12L12,19M16.5,12L12,16.5L7.5,12L12,7.5L16.5,12Z"; -var mdiGooglePhotos = "M10,13C10.55,13 11,13.18 11.41,13.57C11.8,13.96 12,14.44 12,15V22C12,22.17 11.91,22.27 11.72,22.27C11.66,22.27 11.58,22.22 11.5,22.13L7,17.67V13H10M12.5,1.88L17,6.33V11H14C13.45,11 13,10.82 12.59,10.43C12.2,10.04 12,9.56 12,9V2C12,1.83 12.09,1.73 12.28,1.73C12.34,1.73 12.42,1.78 12.5,1.88M22,12C22.17,12 22.27,12.09 22.27,12.28C22.27,12.34 22.22,12.42 22.13,12.5L17.67,17H13V14C13,13.45 13.18,13 13.57,12.59C13.96,12.2 14.44,12 15,12H22M6.33,7H11V10C11,10.55 10.82,11 10.43,11.41C10.04,11.8 9.56,12 9,12H2C1.83,12 1.73,11.91 1.73,11.72C1.73,11.66 1.78,11.58 1.88,11.5L6.33,7Z"; -var mdiGooglePlay = "M3,20.5V3.5C3,2.91 3.34,2.39 3.84,2.15L13.69,12L3.84,21.85C3.34,21.6 3,21.09 3,20.5M16.81,15.12L6.05,21.34L14.54,12.85L16.81,15.12M20.16,10.81C20.5,11.08 20.75,11.5 20.75,12C20.75,12.5 20.53,12.9 20.18,13.18L17.89,14.5L15.39,12L17.89,9.5L20.16,10.81M6.05,2.66L16.81,8.88L14.54,11.15L6.05,2.66Z"; -var mdiGooglePlus = "M23,11H21V9H19V11H17V13H19V15H21V13H23M8,11V13.4H12C11.8,14.4 10.8,16.4 8,16.4C5.6,16.4 3.7,14.4 3.7,12C3.7,9.6 5.6,7.6 8,7.6C9.4,7.6 10.3,8.2 10.8,8.7L12.7,6.9C11.5,5.7 9.9,5 8,5C4.1,5 1,8.1 1,12C1,15.9 4.1,19 8,19C12,19 14.7,16.2 14.7,12.2C14.7,11.7 14.7,11.4 14.6,11H8Z"; -var mdiGooglePodcast = "M17.68,7.22V8.62C17.68,9.3 17.13,9.86 16.43,9.86C15.74,9.86 15.18,9.3 15.18,8.62V7.22A1.25,1.25 0 0,1 16.43,5.97C17.13,5.97 17.68,6.53 17.68,7.22M13.25,8.36V15.63C13.25,16.32 12.69,16.88 12,16.88C11.31,16.88 10.75,16.32 10.75,15.63V8.36C10.75,7.68 11.31,7.11 12,7.11C12.69,7.11 13.25,7.68 13.25,8.36M22,11.3V12.7C22,13.38 21.44,13.94 20.75,13.94C20.06,13.94 19.5,13.38 19.5,12.7V11.3C19.5,10.61 20.06,10.06 20.75,10.06C21.44,10.06 22,10.61 22,11.3M4.5,11.3V12.7C4.5,13.38 3.94,13.94 3.25,13.94C2.55,13.94 2,13.38 2,12.7V11.3C2,10.61 2.55,10.06 3.25,10.06C3.94,10.06 4.5,10.61 4.5,11.3M8.82,15.38V16.77C8.82,17.45 8.26,18 7.57,18C6.88,18 6.32,17.45 6.32,16.77V15.38C6.32,14.68 6.88,14.13 7.57,14.13A1.25,1.25 0 0,1 8.82,15.38M13.25,19.36V20.75A1.25,1.25 0 0,1 12,22A1.25,1.25 0 0,1 10.75,20.75V19.36A1.25,1.25 0 0,1 12,18.11A1.25,1.25 0 0,1 13.25,19.36M13.25,3.25V4.64A1.25,1.25 0 0,1 12,5.89A1.25,1.25 0 0,1 10.75,4.64V3.25C10.75,2.55 11.31,2 12,2A1.25,1.25 0 0,1 13.25,3.25M17.68,12.34V16.77C17.68,17.46 17.13,18 16.43,18C15.74,18 15.18,17.46 15.18,16.77V12.34C15.18,11.64 15.74,11.09 16.43,11.09C17.13,11.09 17.68,11.64 17.68,12.34M8.82,7.22V11.65C8.82,12.35 8.26,12.9 7.57,12.9A1.25,1.25 0 0,1 6.32,11.65V7.22A1.25,1.25 0 0,1 7.57,5.97A1.25,1.25 0 0,1 8.82,7.22Z"; -var mdiGoogleSpreadsheet = "M19,11V9H11V5H9V9H5V11H9V19H11V11H19M19,3C19.5,3 20,3.2 20.39,3.61C20.8,4 21,4.5 21,5V19C21,19.5 20.8,20 20.39,20.39C20,20.8 19.5,21 19,21H5C4.5,21 4,20.8 3.61,20.39C3.2,20 3,19.5 3,19V5C3,4.5 3.2,4 3.61,3.61C4,3.2 4.5,3 5,3H19Z"; -var mdiGoogleStreetView = "M11.95,9.27C13.96,9.27 15.59,7.64 15.59,5.63C15.59,3.63 13.96,2 11.95,2C9.94,2 8.32,3.63 8.32,5.63C8.32,7.64 9.94,9.27 11.95,9.27M9.36,12.97C9.36,12.97 8.27,15.94 7.96,16.5C7.85,16.71 7.87,16.77 7.6,16.77C7.33,16.77 6.91,16.5 6.91,16.5C6.91,16.5 6.71,16.37 6.79,16.14C7.03,15.4 8.12,11.08 8.35,10.25C8.6,9.36 9.28,9.39 9.28,9.39H9.93L12.03,13.04L14.14,9.39H14.92C14.92,9.39 15.23,9.43 15.46,9.7C15.7,9.97 15.75,10.44 15.75,10.44L17.14,15.84C17.14,15.84 17.24,16.22 17.21,16.33C17.17,16.5 17.08,16.5 17.08,16.5C17.08,16.5 16.69,16.62 16.47,16.69C16.07,16.82 16,16.44 16,16.44L14.7,13.04L14.55,22H12.6L12.27,16.89C12.27,16.89 12.21,16.76 12.03,16.76C11.86,16.76 11.8,16.89 11.8,16.89L11.45,22H9.5L9.37,12.97H9.36Z"; -var mdiGoogleTranslate = "M20,5H10.88L10,2H4A2,2 0 0,0 2,4V17A2,2 0 0,0 4,19H11L12,22H20A2,2 0 0,0 22,20V7A2,2 0 0,0 20,5M7.17,14.59A4.09,4.09 0 0,1 3.08,10.5A4.09,4.09 0 0,1 7.17,6.41C8.21,6.41 9.16,6.78 9.91,7.5L10,7.54L8.75,8.72L8.69,8.67C8.4,8.4 7.91,8.08 7.17,8.08C5.86,8.08 4.79,9.17 4.79,10.5C4.79,11.83 5.86,12.92 7.17,12.92C8.54,12.92 9.13,12.05 9.29,11.46H7.08V9.91H11.03L11.04,10C11.08,10.19 11.09,10.38 11.09,10.59C11.09,12.94 9.5,14.59 7.17,14.59M13.2,12.88C13.53,13.5 13.94,14.06 14.39,14.58L13.85,15.11L13.2,12.88M13.97,12.12H13L12.67,11.08H16.66C16.66,11.08 16.32,12.39 15.1,13.82C14.58,13.2 14.21,12.59 13.97,12.12M21,20A1,1 0 0,1 20,21H13L15,19L14.19,16.23L15.11,15.31L17.79,18L18.5,17.27L15.81,14.59C16.71,13.56 17.41,12.34 17.73,11.08H19V10.04H15.36V9H14.32V10.04H12.36L11.18,6H20A1,1 0 0,1 21,7V20Z"; -var mdiGradient = "M11,9H13V11H11V9M9,11H11V13H9V11M13,11H15V13H13V11M15,9H17V11H15V9M7,9H9V11H7V9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,18H7V16H9V18M13,18H11V16H13V18M17,18H15V16H17V18M19,11H17V13H19V15H17V13H15V15H13V13H11V15H9V13H7V15H5V13H7V11H5V5H19V11Z"; -var mdiGrain = "M10,12A2,2 0 0,0 8,14A2,2 0 0,0 10,16A2,2 0 0,0 12,14A2,2 0 0,0 10,12M6,8A2,2 0 0,0 4,10A2,2 0 0,0 6,12A2,2 0 0,0 8,10A2,2 0 0,0 6,8M6,16A2,2 0 0,0 4,18A2,2 0 0,0 6,20A2,2 0 0,0 8,18A2,2 0 0,0 6,16M18,8A2,2 0 0,0 20,6A2,2 0 0,0 18,4A2,2 0 0,0 16,6A2,2 0 0,0 18,8M14,16A2,2 0 0,0 12,18A2,2 0 0,0 14,20A2,2 0 0,0 16,18A2,2 0 0,0 14,16M18,12A2,2 0 0,0 16,14A2,2 0 0,0 18,16A2,2 0 0,0 20,14A2,2 0 0,0 18,12M14,8A2,2 0 0,0 12,10A2,2 0 0,0 14,12A2,2 0 0,0 16,10A2,2 0 0,0 14,8M10,4A2,2 0 0,0 8,6A2,2 0 0,0 10,8A2,2 0 0,0 12,6A2,2 0 0,0 10,4Z"; -var mdiGraph = "M19.5 17C19.37 17 19.24 17 19.11 17.04L17.5 13.79C17.95 13.34 18.25 12.71 18.25 12C18.25 10.62 17.13 9.5 15.75 9.5C15.62 9.5 15.5 9.5 15.36 9.54L13.73 6.29C14.21 5.84 14.5 5.21 14.5 4.5C14.5 3.12 13.38 2 12 2S9.5 3.12 9.5 4.5C9.5 5.21 9.79 5.84 10.26 6.29L8.64 9.54C8.5 9.5 8.38 9.5 8.25 9.5C6.87 9.5 5.75 10.62 5.75 12C5.75 12.71 6.05 13.34 6.5 13.79L4.89 17.04C4.76 17 4.63 17 4.5 17C3.12 17 2 18.12 2 19.5C2 20.88 3.12 22 4.5 22S7 20.88 7 19.5C7 18.8 6.71 18.16 6.24 17.71L7.86 14.46C8 14.5 8.12 14.5 8.25 14.5C8.38 14.5 8.5 14.5 8.64 14.46L10.27 17.71C9.8 18.16 9.5 18.8 9.5 19.5C9.5 20.88 10.62 22 12 22S14.5 20.88 14.5 19.5C14.5 18.12 13.38 17 12 17C11.87 17 11.74 17 11.61 17.04L10 13.79C10.46 13.34 10.75 12.71 10.75 12S10.46 10.66 10 10.21L11.61 6.96C11.74 7 11.87 7 12 7S12.26 7 12.39 6.96L14 10.21C13.55 10.66 13.25 11.3 13.25 12C13.25 13.38 14.37 14.5 15.75 14.5C15.88 14.5 16 14.5 16.14 14.46L17.77 17.71C17.3 18.16 17 18.8 17 19.5C17 20.88 18.12 22 19.5 22S22 20.88 22 19.5C22 18.12 20.88 17 19.5 17Z"; -var mdiGraphOutline = "M19.5 17C19.36 17 19.24 17 19.11 17.04L17.5 13.8C17.95 13.35 18.25 12.71 18.25 12C18.25 10.62 17.13 9.5 15.75 9.5C15.61 9.5 15.5 9.5 15.35 9.54L13.74 6.3C14.21 5.84 14.5 5.21 14.5 4.5C14.5 3.12 13.38 2 12 2S9.5 3.12 9.5 4.5C9.5 5.2 9.79 5.84 10.26 6.29L8.65 9.54C8.5 9.5 8.39 9.5 8.25 9.5C6.87 9.5 5.75 10.62 5.75 12C5.75 12.71 6.04 13.34 6.5 13.79L4.89 17.04C4.76 17 4.64 17 4.5 17C3.12 17 2 18.12 2 19.5C2 20.88 3.12 22 4.5 22S7 20.88 7 19.5C7 18.8 6.71 18.16 6.24 17.71L7.86 14.46C8 14.5 8.12 14.5 8.25 14.5C8.38 14.5 8.5 14.5 8.63 14.46L10.26 17.71C9.79 18.16 9.5 18.8 9.5 19.5C9.5 20.88 10.62 22 12 22S14.5 20.88 14.5 19.5C14.5 18.12 13.38 17 12 17C11.87 17 11.74 17 11.61 17.04L10 13.8C10.45 13.35 10.75 12.71 10.75 12C10.75 11.3 10.46 10.67 10 10.21L11.61 6.96C11.74 7 11.87 7 12 7C12.13 7 12.26 7 12.39 6.96L14 10.21C13.54 10.66 13.25 11.3 13.25 12C13.25 13.38 14.37 14.5 15.75 14.5C15.88 14.5 16 14.5 16.13 14.46L17.76 17.71C17.29 18.16 17 18.8 17 19.5C17 20.88 18.12 22 19.5 22S22 20.88 22 19.5C22 18.12 20.88 17 19.5 17M4.5 20.5C3.95 20.5 3.5 20.05 3.5 19.5S3.95 18.5 4.5 18.5 5.5 18.95 5.5 19.5 5.05 20.5 4.5 20.5M13 19.5C13 20.05 12.55 20.5 12 20.5S11 20.05 11 19.5 11.45 18.5 12 18.5 13 18.95 13 19.5M7.25 12C7.25 11.45 7.7 11 8.25 11S9.25 11.45 9.25 12 8.8 13 8.25 13 7.25 12.55 7.25 12M11 4.5C11 3.95 11.45 3.5 12 3.5S13 3.95 13 4.5 12.55 5.5 12 5.5 11 5.05 11 4.5M14.75 12C14.75 11.45 15.2 11 15.75 11S16.75 11.45 16.75 12 16.3 13 15.75 13 14.75 12.55 14.75 12M19.5 20.5C18.95 20.5 18.5 20.05 18.5 19.5S18.95 18.5 19.5 18.5 20.5 18.95 20.5 19.5 20.05 20.5 19.5 20.5Z"; -var mdiGraphql = "M12,5.37L11.56,5.31L6,14.9C6.24,15.11 6.4,15.38 6.47,15.68H17.53C17.6,15.38 17.76,15.11 18,14.9L12.44,5.31L12,5.37M6.6,16.53L10.88,19.06C11.17,18.79 11.57,18.63 12,18.63C12.43,18.63 12.83,18.79 13.12,19.06L17.4,16.53H6.6M12,22A1.68,1.68 0 0,1 10.32,20.32L10.41,19.76L6.11,17.21C5.8,17.57 5.35,17.79 4.84,17.79A1.68,1.68 0 0,1 3.16,16.11C3.16,15.32 3.69,14.66 4.42,14.47V9.36C3.59,9.25 2.95,8.54 2.95,7.68A1.68,1.68 0 0,1 4.63,6C5.18,6 5.66,6.26 5.97,6.66L10.38,4.13L10.32,3.68C10.32,2.75 11.07,2 12,2C12.93,2 13.68,2.75 13.68,3.68L13.62,4.13L18.03,6.66C18.34,6.26 18.82,6 19.37,6A1.68,1.68 0 0,1 21.05,7.68C21.05,8.54 20.41,9.25 19.58,9.36V14.47C20.31,14.66 20.84,15.32 20.84,16.11A1.68,1.68 0 0,1 19.16,17.79C18.65,17.79 18.2,17.57 17.89,17.21L13.59,19.76L13.68,20.32A1.68,1.68 0 0,1 12,22M10.8,4.86L6.3,7.44L6.32,7.68C6.32,8.39 5.88,9 5.26,9.25L5.29,14.5L10.8,4.86M13.2,4.86L18.71,14.5L18.74,9.25C18.12,9 17.68,8.39 17.68,7.68L17.7,7.44L13.2,4.86Z"; -var mdiGrass = "M12 20H2V18H7.75C7 15.19 4.81 13 2 12.26C2.64 12.1 3.31 12 4 12C8.42 12 12 15.58 12 20M22 12.26C21.36 12.1 20.69 12 20 12C17.07 12 14.5 13.58 13.12 15.93C13.41 16.59 13.65 17.28 13.79 18C13.92 18.65 14 19.32 14 20H22V18H16.24C17 15.19 19.19 13 22 12.26M15.64 11C16.42 8.93 17.87 7.18 19.73 6C15.44 6.16 12 9.67 12 14V14C12.95 12.75 14.2 11.72 15.64 11M11.42 8.85C10.58 6.66 8.88 4.89 6.7 4C8.14 5.86 9 8.18 9 10.71C9 10.92 8.97 11.12 8.96 11.32C9.39 11.56 9.79 11.84 10.18 12.14C10.39 10.96 10.83 9.85 11.42 8.85Z"; -var mdiGraveStone = "M10,2H14C17.31,2 19,4.69 19,8V18.66C16.88,17.63 15.07,17 12,17C8.93,17 7.12,17.63 5,18.66V8C5,4.69 6.69,2 10,2M8,8V9.5H16V8H8M9,12V13.5H15V12H9M3,22V21.31C5.66,19.62 13.23,15.84 21,21.25V22H3Z"; -var mdiGreasePencil = "M18.62,1.5C18.11,1.5 17.6,1.69 17.21,2.09L10.75,8.55L14.95,12.74L21.41,6.29C22.2,5.5 22.2,4.24 21.41,3.46L20.04,2.09C19.65,1.69 19.14,1.5 18.62,1.5M9.8,9.5L3.23,16.07L3.93,16.77C3.4,17.24 2.89,17.78 2.38,18.29C1.6,19.08 1.6,20.34 2.38,21.12C3.16,21.9 4.42,21.9 5.21,21.12C5.72,20.63 6.25,20.08 6.73,19.58L7.43,20.27L14,13.7"; -var mdiGreaterThan = "M5.5,4.14L4.5,5.86L15,12L4.5,18.14L5.5,19.86L19,12L5.5,4.14Z"; -var mdiGreaterThanOrEqual = "M6.5,2.27L20,10.14L6.5,18L5.5,16.27L16.03,10.14L5.5,4L6.5,2.27M20,20V22H5V20H20Z"; -var mdiGrid = "M10,4V8H14V4H10M16,4V8H20V4H16M16,10V14H20V10H16M16,16V20H20V16H16M14,20V16H10V20H14M8,20V16H4V20H8M8,14V10H4V14H8M8,8V4H4V8H8M10,14H14V10H10V14M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4C2.92,22 2,21.1 2,20V4A2,2 0 0,1 4,2Z"; -var mdiGridLarge = "M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4C2.92,22 2,21.1 2,20V4A2,2 0 0,1 4,2M4,4V11H11V4H4M4,20H11V13H4V20M20,20V13H13V20H20M20,4H13V11H20V4Z"; -var mdiGridOff = "M0,2.77L1.28,1.5L22.5,22.72L21.23,24L19.23,22H4C2.92,22 2,21.1 2,20V4.77L0,2.77M10,4V7.68L8,5.68V4H6.32L4.32,2H20A2,2 0 0,1 22,4V19.7L20,17.7V16H18.32L16.32,14H20V10H16V13.68L14,11.68V10H12.32L10.32,8H14V4H10M16,4V8H20V4H16M16,20H17.23L16,18.77V20M4,8H5.23L4,6.77V8M10,14H11.23L10,12.77V14M14,20V16.77L13.23,16H10V20H14M8,20V16H4V20H8M8,14V10.77L7.23,10H4V14H8Z"; -var mdiGrill = "M8.06,2C7.88,3.17 8.17,4.16 8.95,4.97C9.45,5.47 9.61,6.14 9.42,7H10.41C10.53,6.45 10.55,6 10.45,5.55C10.36,5.13 10.05,4.63 9.5,4.03C9.05,3.47 8.89,2.8 9.05,2H8.06M10.55,2C10.36,3.17 10.66,4.16 11.44,4.97C11.94,5.47 12.09,6.14 11.91,7H12.89C13,6.45 13.03,6 12.94,5.55C12.84,5.13 12.53,4.63 12,4.03C11.53,3.47 11.38,2.8 11.53,2H10.55M13.08,2C12.89,3.17 13.19,4.16 13.97,4.97C14.47,5.47 14.61,6.14 14.39,7H15.42C15.55,6.45 15.56,6 15.47,5.55C15.38,5.13 15.06,4.63 14.53,4.03C14.06,3.47 13.91,2.8 14.06,2H13.08M5,8C5,9.42 5.39,10.7 6.14,11.84C6.87,12.96 7.91,13.85 9.14,14.39L5.16,20.44C5.06,20.56 5,20.75 5,21C5,21.41 5.16,21.69 5.44,21.84C5.56,21.94 5.75,22 6,22C6.41,22 6.69,21.84 6.84,21.56L7.83,19.97H14.2C14.41,20.55 14.79,21.05 15.28,21.42C15.78,21.8 16.36,22 17,22C17.83,22 18.53,21.69 19.13,21.09C19.72,20.5 20,19.8 20,19C20,18.17 19.72,17.47 19.13,16.88C18.53,16.28 17.83,16 17,16C16.36,16 15.78,16.17 15.28,16.55C14.78,16.92 14.42,17.41 14.2,18H9.14L11.11,14.95C11.27,15 11.56,15 12,15C12.44,15 12.73,15 12.89,14.95L13.88,16.5C14.29,15.96 14.84,15.54 15.47,15.28L14.91,14.39C16.03,13.89 17,13 17.79,11.77C18.59,10.5 19,9.27 19,8H5M17,18C17.3,18 17.53,18.09 17.72,18.28C17.91,18.47 18,18.72 18,19C18,19.27 17.91,19.5 17.72,19.71C17.54,19.91 17.28,20 17,20C16.74,20 16.5,19.91 16.29,19.71C16.09,19.5 16,19.26 16,19C16,18.7 16.09,18.47 16.29,18.28C16.5,18.09 16.73,18 17,18Z"; -var mdiGrillOutline = "M17 22A3 3 0 1 0 14.18 18H9.14L11.13 14.94A6.36 6.36 0 0 0 12.87 14.94L13.89 16.5C14.31 16 14.85 15.56 15.5 15.3L14.89 14.37A7 7 0 0 0 19 8H5A7 7 0 0 0 9.12 14.37L5.17 20.45A1 1 0 0 0 6.84 21.54L7.84 20H14.18A3 3 0 0 0 17 22M17 18A1 1 0 0 1 18 19C18 19.55 17.55 20 17 20S16 19.55 16 19A1 1 0 0 1 17 18M7.42 10H16.58A5 5 0 0 1 7.42 10M9.41 7H10.41C10.56 5.85 10.64 5.36 9.5 4.04C9.1 3.54 8.84 3.27 9.06 2H8.07A3.14 3.14 0 0 0 8.96 4.96C9.18 5.2 9.75 5.63 9.41 7M11.89 7H12.89C13.04 5.85 13.12 5.36 12 4.04C11.58 3.54 11.32 3.26 11.54 2H10.55A3.14 3.14 0 0 0 11.44 4.96C11.67 5.2 12.24 5.63 11.89 7M14.41 7H15.41C15.56 5.85 15.64 5.36 14.5 4.04C14.1 3.54 13.84 3.27 14.06 2H13.07A3.14 3.14 0 0 0 13.96 4.96C14.18 5.2 14.75 5.63 14.41 7Z"; -var mdiGroup = "M1,1V5H2V19H1V23H5V22H19V23H23V19H22V5H23V1H19V2H5V1M5,4H19V5H20V19H19V20H5V19H4V5H5M6,6V14H9V18H18V9H14V6M8,8H12V12H8M14,11H16V16H11V14H14"; -var mdiGuitarAcoustic = "M19.59,3H22V5H20.41L16.17,9.24C15.8,8.68 15.32,8.2 14.76,7.83L19.59,3M12,8A4,4 0 0,1 16,12C16,13.82 14.77,15.42 13,15.87V16A5,5 0 0,1 8,21A5,5 0 0,1 3,16A5,5 0 0,1 8,11H8.13C8.58,9.24 10.17,8 12,8M12,10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5M6.94,14.24L6.23,14.94L9.06,17.77L9.77,17.06L6.94,14.24Z"; -var mdiGuitarElectric = "M19.59,3H22V5H20.41L15.12,10.29L13.71,8.9L19.59,3M12,9C12.26,9 12.5,9.1 12.71,9.3L14.71,11.3C14.89,11.5 15,11.73 15,12L14.9,12.4L10.9,20.4C10.71,20.75 10.36,20.93 10,20.93C9.65,20.93 9.29,20.75 9.11,20.4L7.25,16.7L3.55,14.9C3.18,14.7 3,14.35 3,14C3,13.65 3.18,13.3 3.55,13.1L11.55,9.1C11.69,9 11.84,9 12,9M9.35,11.82L8.65,12.5L11.5,15.35L12.18,14.65L9.35,11.82M7.94,13.23L7.23,13.94L10.06,16.77L10.77,16.06L7.94,13.23Z"; -var mdiGuitarPick = "M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1Z"; -var mdiGuitarPickOutline = "M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1M18.2,10.2C17.1,12.9 16.1,14.9 14.8,16.7C14.6,16.9 14.5,17.2 14.3,17.4C13.8,18.2 12.6,20 12,20C12,20 12,20 12,20C11.3,20 10.2,18.3 9.6,17.4C9.4,17.2 9.3,16.9 9.1,16.7C7.9,14.9 6.8,12.9 5.7,10.2C5.5,9.5 4.7,7 6.3,5.5C6.8,5 7.6,4.7 8.6,4.4C9,4.4 10.7,4 11.8,4C11.8,4 12.1,4 12.1,4C13.2,4 14.9,4.3 15.3,4.4C16.3,4.7 17.1,5 17.6,5.5C19.3,7 18.5,9.5 18.2,10.2Z"; -var mdiGuyFawkesMask = "M21,13A9,9 0 0,1 12,22A9,9 0 0,1 3,13L3.03,4.43C5.68,2.88 8.76,2 12.05,2C15.3,2 18.36,2.87 21,4.38V13M13,19.93C16.39,19.44 19,16.5 19,13V5.59C16.9,4.57 14.54,4 12.05,4C9.5,4 7.08,4.6 4.94,5.66L5,13C5,16.5 7.63,19.44 11,19.93V18H13V19.93M11,16H8L6,13L9,14H10L11,13H13L14,14H15L18,13L16,16H13L12,15L11,16M6,9.03C6.64,8.4 7.5,8.05 8.5,8.05C9.45,8.05 10.34,8.4 11,9.03C10.34,9.65 9.45,10 8.5,10C7.5,10 6.64,9.65 6,9.03M13,9.03C13.64,8.4 14.5,8.05 15.5,8.05C16.45,8.05 17.34,8.4 18,9.03C17.34,9.65 16.45,10 15.5,10C14.5,10 13.64,9.65 13,9.03Z"; -var mdiHail = "M4,16H7V22H4V16M19,2.39C18.92,3.86 18.55,5.13 17.86,6.21C17.17,7.29 16.22,8 15,8.39V22H13V16H11V22H9V10.08C8.72,10.17 8.5,10.28 8.39,10.41C7.45,11.16 7,12.19 7,13.5V14H5V13.5C5,11.53 5.72,9.94 7.13,8.72C8.53,7.56 10.16,7 12,7C13.41,7 14.56,6.64 15.47,5.95C16.5,5.11 17,3.95 17,2.5V2H19V2.39M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2Z"; -var mdiHairDryer = "M22 9A4.32 4.32 0 0 1 19.78 8.45A3.4 3.4 0 0 0 18 8V7A4.32 4.32 0 0 1 20.22 7.55A3.4 3.4 0 0 0 22 8M22 6A3.4 3.4 0 0 1 20.22 5.55A4.32 4.32 0 0 0 18 5V6A3.4 3.4 0 0 1 19.78 6.45A4.32 4.32 0 0 0 22 7M22 10A3.4 3.4 0 0 1 20.22 9.55A4.32 4.32 0 0 0 18 9V10A3.4 3.4 0 0 1 19.78 10.45A4.32 4.32 0 0 0 22 11M10 12.73A70.39 70.39 0 0 0 17 11V4S10.5 2 7.5 2A5.5 5.5 0 0 0 6.12 12.82L7 19H8A3 3 0 0 0 9.46 21.33A3.15 3.15 0 0 1 11 24H12A4.12 4.12 0 0 0 10.09 20.55C9.39 20 9 19.63 9 19H10M7.5 10A2.5 2.5 0 1 1 10 7.5A2.5 2.5 0 0 1 7.5 10Z"; -var mdiHairDryerOutline = "M10 12.73A70.39 70.39 0 0 0 17 11V4S10.5 2 7.5 2A5.5 5.5 0 0 0 6.12 12.82L7 19H8A3 3 0 0 0 9.46 21.33A3.15 3.15 0 0 1 11 24H12A4.12 4.12 0 0 0 10.09 20.55C9.39 20 9 19.63 9 19H10M4 7.5A3.5 3.5 0 0 1 7.5 4A37.08 37.08 0 0 1 15 5.5V9.5A37.08 37.08 0 0 1 7.5 11A3.5 3.5 0 0 1 4 7.5M22 9A4.32 4.32 0 0 1 19.78 8.45A3.4 3.4 0 0 0 18 8V7A4.32 4.32 0 0 1 20.22 7.55A3.4 3.4 0 0 0 22 8M22 6A3.4 3.4 0 0 1 20.22 5.55A4.32 4.32 0 0 0 18 5V6A3.4 3.4 0 0 1 19.78 6.45A4.32 4.32 0 0 0 22 7M22 10A3.4 3.4 0 0 1 20.22 9.55A4.32 4.32 0 0 0 18 9V10A3.4 3.4 0 0 1 19.78 10.45A4.32 4.32 0 0 0 22 11M9 7.5A1.5 1.5 0 1 1 7.5 6A1.5 1.5 0 0 1 9 7.5Z"; -var mdiHalloween = "M6.5,6C7.47,6 8.37,6.5 9.11,7.38C9.66,6.79 10.31,6.36 11,6.15V4A2,2 0 0,1 13,2H15V4H13V6.15C13.69,6.36 14.34,6.79 14.89,7.38C15.63,6.5 16.53,6 17.5,6C20,6 22,9.36 22,13.5C22,17.64 20,21 17.5,21C16.53,21 15.63,20.5 14.89,19.62C14.08,20.5 13.08,21 12,21C10.92,21 9.92,20.5 9.11,19.62C8.37,20.5 7.47,21 6.5,21C4,21 2,17.64 2,13.5C2,9.36 4,6 6.5,6M9,10L7.75,12.25H10.25L9,10M15,10L13.75,12.25H16.25L15,10M8,17H10L11,16L12,17H14L15,16L16,17L17.5,14L13.92,14.62L13,16L12,15H10L9,16L8,15L6,14L8,17Z"; -var mdiHamburger = "M2,16H22V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V16M6,4H18C20.22,4 22,5.78 22,8V10H2V8C2,5.78 3.78,4 6,4M4,11H15L17,13L19,11H20C21.11,11 22,11.89 22,13C22,14.11 21.11,15 20,15H4C2.89,15 2,14.11 2,13C2,11.89 2.89,11 4,11Z"; -var mdiHammer = "M2 19.63L13.43 8.2L12.72 7.5L14.14 6.07L12 3.89C13.2 2.7 15.09 2.7 16.27 3.89L19.87 7.5L18.45 8.91H21.29L22 9.62L18.45 13.21L17.74 12.5V9.62L16.27 11.04L15.56 10.33L4.13 21.76L2 19.63Z"; -var mdiHammerScrewdriver = "M16.06 13.09L21.69 18.68L18.37 21.96L12.78 16.37V15.45L15.14 13.09H16.06M16.97 10.56L16 9.6L11.21 14.4V16.37L5.58 22L2.3 18.68L7.89 13.09H9.86L10.64 12.31L6.8 8.46H5.5L2.69 5.62L5.31 3L8.11 5.8V7.11L12 10.95L14.66 8.29L13.7 7.28L15 5.97H12.34L11.69 5.32L15 2L15.66 2.66V5.32L16.97 4L20.25 7.28C21.34 8.38 21.34 10.17 20.25 11.26L18.28 9.25L16.97 10.56Z"; -var mdiHammerWrench = "M13.78 15.3L19.78 21.3L21.89 19.14L15.89 13.14L13.78 15.3M17.5 10.1C17.11 10.1 16.69 10.05 16.36 9.91L4.97 21.25L2.86 19.14L10.27 11.74L8.5 9.96L7.78 10.66L6.33 9.25V12.11L5.63 12.81L2.11 9.25L2.81 8.55H5.62L4.22 7.14L7.78 3.58C8.95 2.41 10.83 2.41 12 3.58L9.89 5.74L11.3 7.14L10.59 7.85L12.38 9.63L14.2 7.75C14.06 7.42 14 7 14 6.63C14 4.66 15.56 3.11 17.5 3.11C18.09 3.11 18.61 3.25 19.08 3.53L16.41 6.2L17.91 7.7L20.58 5.03C20.86 5.5 21 6 21 6.63C21 8.55 19.45 10.1 17.5 10.1Z"; -var mdiHand = "M6.58,19H14.58V22H6.58V19M19.74,11.6C19.55,11.4 19.29,11.28 19,11.28L18.78,11.31L15.58,13V11.83L16.09,2.9C16.12,2.35 15.7,1.87 15.15,1.84C14.6,1.81 14.12,2.23 14.09,2.78L13.82,7.47H13.58L12.54,7.58V2A1,1 0 0,0 11.54,1C11,1 10.54,1.45 10.54,2V8.41L9.72,8.78L9.03,3.32C8.96,2.77 8.46,2.38 7.91,2.45C7.36,2.5 6.97,3 7.04,3.57L7.81,9.63L7.43,9.8C7.3,9.85 7.18,9.93 7.07,10L5.97,6.11C5.81,5.54 5.25,5.2 4.71,5.34C4.18,5.5 3.88,6.08 4.04,6.65L6.61,15.77C6.61,15.8 6.63,15.84 6.64,15.87L6.67,16H6.68C6.9,16.57 7.47,17 8.08,17H14.58C14.97,17 15.32,16.84 15.58,16.57L20.5,12.37L19.74,11.6Z"; -var mdiHandHeart = "M20 17Q20.86 17 21.45 17.6T22.03 19L14 22L7 20V11H8.95L16.22 13.69Q17 14 17 14.81 17 15.28 16.66 15.63T15.8 16H13L11.25 15.33L10.92 16.27L13 17H20M16 3.23Q17.06 2 18.7 2 20.06 2 21 3T22 5.3Q22 6.33 21 7.76T19.03 10.15 16 13Q13.92 11.11 12.94 10.15T10.97 7.76 10 5.3Q10 3.94 10.97 3T13.31 2Q14.91 2 16 3.23M.984 11H5V22H.984V11Z"; -var mdiHandHeartOutline = "M16 3.23C16.71 2.41 17.61 2 18.7 2C19.61 2 20.37 2.33 21 3C21.63 3.67 21.96 4.43 22 5.3C22 6 21.67 6.81 21 7.76S19.68 9.5 19.03 10.15C18.38 10.79 17.37 11.74 16 13C14.61 11.74 13.59 10.79 12.94 10.15S11.63 8.71 10.97 7.76C10.31 6.81 10 6 10 5.3C10 4.39 10.32 3.63 10.97 3C11.62 2.37 12.4 2.04 13.31 2C14.38 2 15.27 2.41 16 3.23M22 19V20L14 22.5L7 20.56V22H1V11H8.97L15.13 13.3C16.25 13.72 17 14.8 17 16H19C20.66 16 22 17.34 22 19M5 20V13H3V20H5M19.9 18.57C19.74 18.24 19.39 18 19 18H13.65C13.11 18 12.58 17.92 12.07 17.75L9.69 16.96L10.32 15.06L12.7 15.85C13 15.95 15 16 15 16C15 15.63 14.77 15.3 14.43 15.17L8.61 13H7V18.5L13.97 20.41L19.9 18.57Z"; -var mdiHandLeft = "M3,6.58V18.67C3,20.5 4.5,22 6.33,22H12.42C13.32,22 14.17,21.64 14.79,21L21.33,14.36C21.33,14.36 20.28,13.33 20.25,13.32C20.07,13.16 19.84,13.07 19.59,13.07C19.41,13.07 19.24,13.12 19.09,13.21C19.06,13.22 15.5,15.26 15.5,15.26V5.33A1.25,1.25 0 0,0 14.25,4.08A1.25,1.25 0 0,0 13,5.33V11.17H12.17V3.25A1.25,1.25 0 0,0 10.92,2A1.25,1.25 0 0,0 9.67,3.25V11.17H8.83V4.08A1.25,1.25 0 0,0 7.58,2.83A1.25,1.25 0 0,0 6.33,4.08V11.17H5.5V6.58A1.25,1.25 0 0,0 4.25,5.33A1.25,1.25 0 0,0 3,6.58Z"; -var mdiHandOkay = "M13.3,19.26L18.96,13.61L21.08,15.73L15.42,21.38L13.3,19.26M16.5,11.13L13.4,8.05C13.27,7.92 13.13,7.83 13,7.76L11.88,3.47C11.74,2.93 11.2,2.61 10.66,2.75C10.13,2.88 9.81,3.43 9.94,3.96L11,8.03V8.03L8.67,3.19C8.44,2.69 7.84,2.5 7.34,2.71C6.84,2.95 6.63,3.55 6.87,4.05L8.56,7.59L5.19,4.25C4.8,3.86 4.16,3.86 3.77,4.25C3.38,4.65 3.39,5.28 3.78,5.67L7.5,9.37L6.8,9.64L5.72,10.07L3.81,11.39C3.81,11.39 3,12.44 2.93,12.89C2.85,13.34 3.72,15.6 3.72,15.6H3.73C3.89,15.94 4.23,16.18 4.63,16.18A1,1 0 0,0 5.63,15.18C5.63,15.08 5.6,15 5.57,14.91L5.59,14.9L5,13.17L6.23,12.19C6.7,12.21 7.71,12.29 8.2,12.32C10.93,14.77 8.35,15.73 8.35,15.73L4.89,16.79L4.72,16.93C4.5,17.13 4.41,17.4 4.42,17.68L4.44,18.75L10.87,18.25C11.25,18.26 11.61,18.12 11.89,17.85L16.5,13.25C17.03,12.71 17.05,11.7 16.5,11.13Z"; -var mdiHandPeace = "M7,19H15V22H7V19M16.15,12V12L12.97,10.34C12.82,10.34 12.69,10.4 12.6,10.5L12.3,10.81L12.89,13.23L11.91,13.47L10.72,8.5L9.25,9.18L10.29,13.47L9.32,13.7L8.32,9.59L7.85,9.8C7.35,10 7,10.53 7,11.14V15.5C7,16.3 7.73,17 8.5,17H15C15.39,17 15.74,16.84 16,16.57L16.5,16.16C16.5,16.16 17,15.78 17,15.36V13.7C17,13.7 17,12.56 16.15,12M16.94,1C16.4,0.91 15.87,1.25 15.76,1.8L14.69,7.97C14.47,7.94 14.38,7.86 14.08,7.83L13.65,7.88L12.41,1.8C12.3,1.26 11.78,0.91 11.24,1C10.69,1.13 10.34,1.66 10.45,2.2L11.65,8.11V8.11L12,9.67C12.28,9.47 12.61,9.34 12.97,9.34H13.31L16.31,10.95L17.72,2.2C17.83,1.66 17.5,1.13 16.94,1Z"; -var mdiHandPeaceVariant = "M7,19H15V22H7V19M16.94,1C16.4,0.91 15.87,1.25 15.76,1.8L14.75,7.57C14.53,7.54 14.29,7.5 14,7.47L13.57,7.5L12.41,1.8C12.31,1.26 11.78,0.91 11.24,1C10.7,1.13 10.35,1.66 10.45,2.2L11.65,8.11L7.85,9.8C7.35,10 7,10.53 7,11.14V15.5C7,16.3 7.73,17 8.5,17H15C15.39,17 15.74,16.84 16,16.57L16.5,16.16C16.5,16.16 17,15.78 17,15.36V13C17,13 17,11.86 16.13,11.3L17.71,2.2C17.83,1.66 17.5,1.13 16.94,1Z"; -var mdiHandPointingDown = "M9.9,21V11L6.7,12.69L6.5,12.72C6.19,12.72 5.93,12.6 5.74,12.4L5,11.63L9.9,7.43C10.16,7.16 10.5,7 10.9,7H17.4C18.17,7 18.9,7.7 18.9,8.5V12.86C18.9,13.47 18.55,14 18.05,14.2L13.11,16.4L11.9,16.53V21A1,1 0 0,1 10.9,22A1,1 0 0,1 9.9,21M18.9,5H10.9V2H18.9V5Z"; -var mdiHandPointingLeft = "M3,9H13L11.31,5.8L11.28,5.58C11.28,5.29 11.4,5.03 11.6,4.84L12.37,4.1L16.57,9C16.84,9.26 17,9.61 17,10V16.5C17,17.27 16.3,18 15.5,18H11.14C10.53,18 10,17.65 9.8,17.15L7.6,12.21L7.47,11H3A1,1 0 0,1 2,10A1,1 0 0,1 3,9M19,18V10H22V18H19Z"; -var mdiHandPointingRight = "M21,9A1,1 0 0,1 22,10A1,1 0 0,1 21,11H16.53L16.4,12.21L14.2,17.15C14,17.65 13.47,18 12.86,18H8.5C7.7,18 7,17.27 7,16.5V10C7,9.61 7.16,9.26 7.43,9L11.63,4.1L12.4,4.84C12.6,5.03 12.72,5.29 12.72,5.58L12.69,5.8L11,9H21M2,18V10H5V18H2Z"; -var mdiHandPointingUp = "M14,3V13L17.2,11.31L17.42,11.28C17.71,11.28 17.97,11.4 18.16,11.6L18.9,12.37L14,16.57C13.74,16.84 13.39,17 13,17H6.5C5.73,17 5,16.3 5,15.5V11.14C5,10.53 5.35,10 5.85,9.8L10.79,7.6L12,7.47V3A1,1 0 0,1 13,2A1,1 0 0,1 14,3M5,19H13V22H5V19Z"; -var mdiHandRight = "M21,6.58V18.67A3.33,3.33 0 0,1 17.67,22H11.58C10.68,22 9.83,21.64 9.21,21L2.67,14.36C2.67,14.36 3.72,13.33 3.75,13.32C3.93,13.16 4.16,13.07 4.41,13.07C4.59,13.07 4.76,13.12 4.91,13.21C4.94,13.22 8.5,15.26 8.5,15.26V5.33A1.25,1.25 0 0,1 9.75,4.08A1.25,1.25 0 0,1 11,5.33V11.17H11.83V3.25A1.25,1.25 0 0,1 13.08,2C13.78,2 14.33,2.56 14.33,3.25V11.17H15.17V4.08C15.17,3.39 15.72,2.83 16.42,2.83A1.25,1.25 0 0,1 17.67,4.08V11.17H18.5V6.58A1.25,1.25 0 0,1 19.75,5.33A1.25,1.25 0 0,1 21,6.58Z"; -var mdiHandSaw = "M9.8,17L5.9,11.6L20,2L22,5V8H19V11H16V14H13V17M9.7,18.7L9.2,21.5L7.6,22.7C6.7,23.3 5.5,23.1 4.8,22.2L1.3,17.3C0.7,16.4 0.9,15.2 1.8,14.5L5.1,12.2L9.7,18.7M4.6,15L3,16.1L6.5,21L8.1,19.8L4.6,15Z"; -var mdiHandWash = "M17 5L17.62 6.37L19 7L17.62 7.63L17 9L16.36 7.63L15 7L16.36 6.37L17 5M11 6.13V4H13C13.57 4 14.1 4.17 14.55 4.45L16 3C15.15 2.39 14.13 2 13 2H7.5V4H9V6.14C7.23 6.5 5.81 7.8 5.26 9.5H9.24L15 11.65V11.03C15 8.61 13.28 6.59 11 6.13M1 22H5V11H1V22M20 17H13L10.91 16.27L11.24 15.33L13 16H15.82C16.47 16 17 15.47 17 14.82C17 14.33 16.69 13.89 16.23 13.71L8.97 11H7V20L14 22L22 19C22 17.9 21.11 17 20 17M20 14C21.1 14 22 13.1 22 12S20 8 20 8 18 10.9 18 12 18.9 14 20 14Z"; -var mdiHandWashOutline = "M17 5L17.62 6.37L19 7L17.62 7.63L17 9L16.36 7.63L15 7L16.36 6.37L17 5M20 14C21.1 14 22 13.1 22 12S20 8 20 8 18 10.9 18 12 18.9 14 20 14M11 6.1V4H13C13.57 4 14.1 4.17 14.55 4.45L16 3C15.15 2.39 14.13 2 13 2H7.5V4H9V6.11C7.22 6.5 5.8 7.79 5.25 9.5H7.41C7.94 8.61 8.89 8 10 8C11.62 8 12.94 9.29 13 10.9L15 11.65V11C15 8.58 13.28 6.56 11 6.1M22 19V20L14 22.5L7 20.56V22H1V11H8.97L15.13 13.3C16.25 13.72 17 14.8 17 16H19C20.66 16 22 17.34 22 19M5 20V13H3V20H5M19.9 18.57C19.74 18.24 19.39 18 19 18H13.65C13.11 18 12.58 17.92 12.07 17.75L9.69 16.96L10.32 15.06L12.7 15.85C13 15.95 15 16 15 16C15 15.63 14.77 15.3 14.43 15.17L8.61 13H7V18.5L13.97 20.41L19.9 18.57Z"; -var mdiHandWater = "M17.42 22.5H5.33C3.5 22.5 2 21 2 19.17V13.08C2 12.18 2.36 11.33 3 10.71L8.63 5.17C8.63 5.17 9.66 6.22 9.67 6.25C9.83 6.43 9.92 6.66 9.92 6.91C9.92 7.09 9.87 7.26 9.78 7.41C9.77 7.44 8 10 8 10H18.67C19.36 10 19.92 10.56 19.92 11.25C19.92 11.94 19.36 12.5 18.67 12.5H12.83V13.33H20.75C21.44 13.33 22 13.89 22 14.58C22 15.28 21.44 15.83 20.75 15.83H12.83V16.67H19.92C20.61 16.67 21.17 17.22 21.17 17.92C21.17 18.61 20.61 19.17 19.92 19.17H12.83V20H17.42C18.11 20 18.67 20.56 18.67 21.25C18.67 21.94 18.11 22.5 17.42 22.5M13.5 4.8C13.5 4.8 12 6.46 12 7.5C12 9.5 15 9.5 15 7.5C15 6.46 13.5 4.8 13.5 4.8M18.5 1C18.5 1 16 3.76 16 5.5C16 8.83 21 8.83 21 5.5C21 3.76 18.5 1 18.5 1Z"; -var mdiHandball = "M15.83 10.43A6.93 6.93 0 0 1 18.39 14.86A6.64 6.64 0 0 1 17.5 19.5L15.78 18.5A5 5 0 0 0 16.44 16A5.22 5.22 0 0 0 15.46 13.06L9.18 23.93L7.44 22.95L10.44 17.75L8.71 16.76L7.21 19.34L5.5 18.36L10.63 9.45A7 7 0 0 1 8.8 5.46A6.91 6.91 0 0 1 9.69 1.1L11.43 2.13A4.84 4.84 0 0 0 10.91 5.9A4.74 4.74 0 0 0 13.21 8.93M16 5A2 2 0 1 0 18 7A2 2 0 0 0 16 5M13.5 1A1.5 1.5 0 1 0 15 2.5A1.5 1.5 0 0 0 13.5 1Z"; -var mdiHandcuffs = "M20.24 6.76C18.4 4.91 15.65 4.53 13.42 5.59L12.46 4.63C12.07 4.24 11.44 4.24 11.05 4.63L10.97 4.72C10.83 3.75 10 3 9 3C7.9 3 7 3.9 7 5C7 5.09 7 5.18 7.03 5.26C6.42 5.61 6 6.25 6 7C6 7.46 6.16 7.87 6.42 8.21C6.17 8.39 6 8.67 6 9V10.35C3.67 11.17 2 13.39 2 16C2 19.31 4.69 22 8 22S14 19.31 14 16C14 13.39 12.33 11.17 10 10.35V9C10 8.67 9.83 8.39 9.58 8.21C9.84 7.87 10 7.46 10 7C10 6.91 10 6.82 9.97 6.74C10.15 6.64 10.3 6.5 10.43 6.38C11.36 6.88 12 7.86 12 9V9.08C12.13 9.15 12.25 9.25 12.38 9.33C12.57 8.91 12.83 8.5 13.17 8.17C14.73 6.61 17.27 6.61 18.83 8.17C20.39 9.73 20.39 12.27 18.83 13.83C18.03 14.63 17 15 15.93 15C16 15.32 16 15.66 16 16C16 16.34 15.97 16.67 15.93 17C17.5 17 19.05 16.43 20.24 15.24C22.59 12.9 22.59 9.1 20.24 6.76M9 4C9.55 4 10 4.45 10 5C10 5.33 9.83 5.61 9.58 5.79C9.22 5.31 8.65 5 8 5C8 4.45 8.45 4 9 4M7.42 6.21C7.78 6.69 8.35 7 9 7C9 7.55 8.55 8 8 8S7 7.55 7 7C7 6.67 7.17 6.39 7.42 6.21M12 16C12 18.21 10.21 20 8 20S4 18.21 4 16C4 13.79 5.79 12 8 12S12 13.79 12 16Z"; -var mdiHandshake = "M11 6H14L17.29 2.7A1 1 0 0 1 18.71 2.7L21.29 5.29A1 1 0 0 1 21.29 6.7L19 9H11V11A1 1 0 0 1 10 12A1 1 0 0 1 9 11V8A2 2 0 0 1 11 6M5 11V15L2.71 17.29A1 1 0 0 0 2.71 18.7L5.29 21.29A1 1 0 0 0 6.71 21.29L11 17H15A1 1 0 0 0 16 16V15H17A1 1 0 0 0 18 14V13H19A1 1 0 0 0 20 12V11H13V12A2 2 0 0 1 11 14H9A2 2 0 0 1 7 12V9Z"; -var mdiHandshakeOutline = "M21.71 8.71C22.96 7.46 22.39 6 21.71 5.29L18.71 2.29C17.45 1.04 16 1.61 15.29 2.29L13.59 4H11C9.1 4 8 5 7.44 6.15L3 10.59V14.59L2.29 15.29C1.04 16.55 1.61 18 2.29 18.71L5.29 21.71C5.83 22.25 6.41 22.45 6.96 22.45C7.67 22.45 8.32 22.1 8.71 21.71L11.41 19H15C16.7 19 17.56 17.94 17.87 16.9C19 16.6 19.62 15.74 19.87 14.9C21.42 14.5 22 13.03 22 12V9H21.41L21.71 8.71M20 12C20 12.45 19.81 13 19 13L18 13L18 14C18 14.45 17.81 15 17 15L16 15L16 16C16 16.45 15.81 17 15 17H10.59L7.31 20.28C7 20.57 6.82 20.4 6.71 20.29L3.72 17.31C3.43 17 3.6 16.82 3.71 16.71L5 15.41V11.41L7 9.41V11C7 12.21 7.8 14 10 14S13 12.21 13 11H20V12M20.29 7.29L18.59 9H11V11C11 11.45 10.81 12 10 12S9 11.45 9 11V8C9 7.54 9.17 6 11 6H14.41L16.69 3.72C17 3.43 17.18 3.6 17.29 3.71L20.28 6.69C20.57 7 20.4 7.18 20.29 7.29Z"; -var mdiHanger = "M12 4A3.5 3.5 0 0 0 8.5 7.5H10.5A1.5 1.5 0 0 1 12 6A1.5 1.5 0 0 1 13.5 7.5A1.5 1.5 0 0 1 12 9C11.45 9 11 9.45 11 10V11.75L2.4 18.2A1 1 0 0 0 3 20H21A1 1 0 0 0 21.6 18.2L13 11.75V10.85A3.5 3.5 0 0 0 15.5 7.5A3.5 3.5 0 0 0 12 4M12 13.5L18 18H6Z"; -var mdiHardHat = "M9.87,12.15L9,6.46C10.95,5.84 13.05,5.84 15,6.46L14.13,12.15C14.06,12.64 13.63,13 13.13,13H10.86C10.37,13 9.94,12.64 9.87,12.15M22,16V16C22,15.21 21.53,14.5 20.8,14.17C20.32,11.86 18.96,9.83 17,8.5L15.24,13.34C15.1,13.74 14.72,14 14.3,14H9.7C9.28,14 8.9,13.74 8.76,13.34L7,8.5C5.04,9.83 3.68,11.86 3.2,14.16C2.47,14.5 2,15.2 2,16L8.45,17.84C8.81,17.94 9.18,18 9.55,18H14.43C14.8,18 15.17,17.94 15.53,17.84L22,16Z"; -var mdiHarddisk = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12,4A6,6 0 0,0 6,10C6,13.31 8.69,16 12.1,16L11.22,13.77C10.95,13.29 11.11,12.68 11.59,12.4L12.45,11.9C12.93,11.63 13.54,11.79 13.82,12.27L15.74,14.69C17.12,13.59 18,11.9 18,10A6,6 0 0,0 12,4M12,9A1,1 0 0,1 13,10A1,1 0 0,1 12,11A1,1 0 0,1 11,10A1,1 0 0,1 12,9M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M12.09,13.27L14.58,19.58L17.17,18.08L12.95,12.77L12.09,13.27Z"; -var mdiHarddiskPlus = "M12 9A1 1 0 1 0 13 10A1 1 0 0 0 12 9M12 9A1 1 0 1 0 13 10A1 1 0 0 0 12 9M18 2H6A2 2 0 0 0 4 4V13.09A5.47 5.47 0 0 1 5 13A5.71 5.71 0 0 1 7 13.36A6 6 0 1 1 15.71 14.69L13.79 12.27A1 1 0 0 0 12.42 11.9L11.56 12.4A1 1 0 0 0 11.19 13.77L12.1 16A6.12 6.12 0 0 1 10 15.62A6 6 0 0 1 10.19 22H18A2 2 0 0 0 20 20V4A2 2 0 0 0 18 2M14.58 19.58L12.09 13.27L12.95 12.77L17.17 18.08M12 11A1 1 0 1 0 11 10A1 1 0 0 0 12 11M9 20H6V23H4V20H1V18H4V15H6V18H9Z"; -var mdiHarddiskRemove = "M12 9A1 1 0 1 0 13 10A1 1 0 0 0 12 9M12 9A1 1 0 1 0 13 10A1 1 0 0 0 12 9M18 2H6A2 2 0 0 0 4 4V13.09A5.47 5.47 0 0 1 5 13A5.71 5.71 0 0 1 7 13.36A6 6 0 1 1 15.71 14.69L13.79 12.27A1 1 0 0 0 12.42 11.9L11.56 12.4A1 1 0 0 0 11.19 13.77L12.1 16A6.12 6.12 0 0 1 10 15.62A6 6 0 0 1 10.19 22H18A2 2 0 0 0 20 20V4A2 2 0 0 0 18 2M14.58 19.58L12.09 13.27L12.95 12.77L17.17 18.08M12 11A1 1 0 1 0 11 10A1 1 0 0 0 12 11M7.12 22.54L5 20.41L2.88 22.54L1.46 21.12L3.59 19L1.46 16.88L2.88 15.46L5 17.59L7.12 15.46L8.54 16.88L6.41 19L8.54 21.12Z"; -var mdiHatFedora = "M19.11,11.92C19.13,11.71 19.14,11.5 19.14,11.29C19.14,7.86 17.71,4.14 16.28,4.14C14.85,4.14 13.42,5.57 12,5.57C10.57,5.57 9.14,4.14 7.71,4.14C6.28,4.14 4.86,7.79 4.86,11.29C4.86,11.5 4.86,11.71 4.88,11.92C7.22,12.45 9.6,12.72 12,12.71C14.45,12.71 16.83,12.44 19.11,11.92M3.45,18.18C9,19.85 14.96,19.86 20.54,18.18C20.96,18.04 21.33,17.77 21.59,17.41C21.85,17.05 22,16.61 22,16.17C22,15.72 21.86,15.29 21.61,14.92C21.35,14.56 21,14.29 20.56,14.14C17.86,15 15,15.45 12,15.45C9,15.45 6.13,15 3.43,14.14C3,14.29 2.65,14.57 2.39,14.93C2.14,15.29 2,15.72 2,16.17C2,17.11 2.61,17.9 3.45,18.18V18.18Z"; -var mdiHazardLights = "M12,12L14.33,16H9.68L12,12M12,8L6.21,18H17.8L12,8M12,2L1,21H23L12,2M12,6L19.53,19H4.47L12,6Z"; -var mdiHdr = "M21,11.5V10.5C21,9.7 20.3,9 19.5,9H16V15H17.5V13H18.6L19.5,15H21L20.1,12.9C20.6,12.6 21,12.1 21,11.5M19.5,11.5H17.5V10.5H19.5V11.5M6.5,11H4.5V9H3V15H4.5V12.5H6.5V15H8V9H6.5V11M13,9H9.5V15H13C13.8,15 14.5,14.3 14.5,13.5V10.5C14.5,9.7 13.8,9 13,9M13,13.5H11V10.5H13V13.5Z"; -var mdiHdrOff = "M17.5,15V13H18.6L19.5,15H21L20.1,12.9C20.6,12.7 21,12.1 21,11.5V10.5C21,9.7 20.3,9 19.5,9H16V13.9L17.1,15H17.5M17.5,10.5H19.5V11.5H17.5V10.5M13,10.5V10.9L14.5,12.4V10.5C14.5,9.7 13.8,9 13,9H11.1L12.6,10.5H13M9.5,9.5L2.5,2.5L1.4,3.5L6.9,9H6.5V11H4.5V9H3V15H4.5V12.5H6.5V15H8V10.1L9.5,11.6V15H12.9L20.5,22.6L21.6,21.5L9.5,9.5Z"; -var mdiHead = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3"; -var mdiHeadAlert = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M14 15H12V13H14V14M14 11H12V5H14V11Z"; -var mdiHeadAlertOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M14 15H12V13H14V15M14 11H12V5H14"; -var mdiHeadCheck = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M12.47 13L9 9.5L10.4 8.09L12.47 10.17L16.6 6L18 7.41L12.47 13Z"; -var mdiHeadCheckOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.42 1 4.61 4.43 4.06 8.91L2.5 11C1.92 11.72 1.82 12.72 2.24 13.59C2.6 14.31 3.24 14.8 4 14.95V16C4 17.86 5.28 19.43 7 19.87V23H18V17.47C20.5 15.83 22 13.06 22 10C22 5.04 17.96 1 13 1M12.47 13L9 9.5L10.4 8.09L12.47 10.17L16.6 6L18 7.41L12.47 13Z"; -var mdiHeadCog = "M13 8.58C13.78 8.58 14.44 9.19 14.44 10S13.78 11.44 13 11.44 11.58 10.78 11.58 10 12.19 8.58 13 8.58M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M16 10C16 9.84 16 9.75 15.94 9.61L16.83 8.95C16.88 8.91 16.92 8.77 16.88 8.67L16.08 7.31C16.03 7.22 15.89 7.17 15.8 7.22L14.81 7.64C14.63 7.45 14.39 7.31 14.16 7.22L14 6.19C13.97 6.05 13.92 6 13.78 6H12.19C12.09 6 12 6.05 12 6.19L11.86 7.22C11.63 7.31 11.39 7.45 11.2 7.64L10.17 7.22C10.08 7.17 10 7.22 9.94 7.31L9.14 8.67C9.09 8.81 9.09 8.91 9.19 8.95L10.03 9.61C10.03 9.75 10 9.89 10 10C10 10.13 10.03 10.27 10.03 10.41L9.19 11.06C9.09 11.11 9.09 11.2 9.14 11.3L9.94 12.7C10 12.8 10.08 12.8 10.17 12.8L11.16 12.37C11.39 12.56 11.58 12.66 11.86 12.75L12 13.83C12 13.92 12.09 14 12.19 14H13.78C13.92 14 13.97 13.92 14 13.83L14.16 12.75C14.39 12.66 14.63 12.56 14.81 12.38L15.8 12.8C15.89 12.8 16.03 12.8 16.08 12.7L16.88 11.3C16.92 11.2 16.88 11.11 16.83 11.06L16 10.41V10Z"; -var mdiHeadCogOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.42 1 4.61 4.43 4.06 8.91L2.5 11C1.92 11.72 1.82 12.72 2.24 13.59C2.6 14.31 3.24 14.8 4 14.95V16C4 17.86 5.28 19.43 7 19.87V23H18V17.47C20.5 15.83 22 13.06 22 10C22 5.04 17.96 1 13 1M16.1 9.42V9C16.1 8.85 16.1 8.76 16.04 8.62L16.93 7.96C17 7.92 17 7.78 17 7.68L16.18 6.32C16.13 6.23 16 6.18 15.9 6.23L14.91 6.65C14.73 6.46 14.5 6.32 14.26 6.23L14.1 5.2C14.07 5.06 14 5 13.88 5H12.29C12.19 5 12.1 5.06 12.1 5.2L11.96 6.23C11.73 6.32 11.5 6.46 11.3 6.65L10.27 6.23C10.18 6.18 10.1 6.23 10.04 6.32L9.24 7.68C9.19 7.82 9.19 7.92 9.29 7.96L10.13 8.62C10.13 8.76 10.1 8.9 10.1 9C10.1 9.14 10.13 9.28 10.13 9.42L9.29 10.07C9.19 10.12 9.19 10.21 9.24 10.31L10.04 11.71C10.1 11.81 10.18 11.81 10.27 11.81L11.26 11.38C11.5 11.57 11.68 11.67 11.96 11.76L12.1 12.84C12.1 12.93 12.19 13 12.29 13H13.88C14 13 14.07 12.93 14.1 12.84L14.26 11.76C14.5 11.67 14.73 11.57 14.91 11.39L15.9 11.81C16 11.81 16.13 11.81 16.18 11.71L17 10.31C17 10.21 17 10.12 16.93 10.07L16.1 9.42M13.1 10.45C12.32 10.45 11.68 9.79 11.68 9S12.29 7.59 13.1 7.59C13.88 7.59 14.54 8.2 14.54 9S13.88 10.45 13.1 10.45Z"; -var mdiHeadDotsHorizontal = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M10 11C9.45 11 9 10.55 9 10S9.45 9 10 9 11 9.45 11 10 10.55 11 10 11M13 11C12.45 11 12 10.55 12 10S12.45 9 13 9 14 9.45 14 10 13.55 11 13 11M16 11C15.45 11 15 10.55 15 10S15.45 9 16 9 17 9.45 17 10 16.55 11 16 11Z"; -var mdiHeadDotsHorizontalOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M10 10C9.4 10 9 9.6 9 9S9.4 8 10 8 11 8.4 11 9 10.6 10 10 10M13 10C12.4 10 12 9.6 12 9S12.4 8 13 8 14 8.4 14 9 13.6 10 13 10M16 10C15.5 10 15 9.6 15 9S15.5 8 16 8 17 8.4 17 9 16.5 10 16 10Z"; -var mdiHeadFlash = "M13 3C9.2 3 6.2 6 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M15 9L11.9 15L12.5 11H10.5L12.5 6H15L13.5 9H15Z"; -var mdiHeadFlashOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M15 9L11.9 15L12.5 11H10.4L12.5 6H15L13.5 9H15Z"; -var mdiHeadHeart = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M17 8.83C17 10.37 15.64 11.6 13.58 13.47L13 14L12.42 13.47C10.36 11.6 9 10.37 9 8.83C9 7.63 9.96 6.64 11.16 6.63H11.2C11.89 6.63 12.55 6.94 13 7.46C13.45 6.94 14.11 6.63 14.8 6.63C16 6.62 17 7.59 17 8.79V8.83Z"; -var mdiHeadHeartOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.41 1 4.61 4.42 4.06 8.9L2.5 11L2.47 11L2.45 11.03C1.9 11.79 1.83 12.79 2.26 13.62C2.62 14.31 3.26 14.79 4 14.94V16C4 17.85 5.28 19.42 7 19.87V23H18V17.5C20.5 15.83 22 13.06 22 10C22 5.03 17.96 1 13 1M17 8.83C17 10.37 15.64 11.6 13.58 13.47L13 14L12.42 13.47C10.36 11.6 9 10.37 9 8.83C9 7.63 9.96 6.64 11.16 6.63H11.2C11.89 6.63 12.55 6.94 13 7.46C13.45 6.94 14.11 6.63 14.8 6.63C16 6.62 17 7.59 17 8.79V8.83Z"; -var mdiHeadLightbulb = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M14 14H12V13H14V14M15.6 9.5C15.34 9.94 14.96 10.32 14.5 10.58V12H11.5V10.58C10.07 9.75 9.57 7.92 10.4 6.5S13.07 4.56 14.5 5.38 16.43 8.05 15.6 9.5Z"; -var mdiHeadLightbulbOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M14 14H12V13H14V14M15.6 9.5C15.3 9.9 15 10.3 14.5 10.6V12H11.5V10.6C10.1 9.8 9.6 7.9 10.4 6.5S13.1 4.6 14.5 5.4 16.4 8.1 15.6 9.5Z"; -var mdiHeadMinus = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M17 10H9V8H17V10Z"; -var mdiHeadMinusOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.7 1.8 12.7 2.2 13.6C2.6 14.3 3.2 14.8 4 15V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.9 22 13.1 22 10C22 5 18 1 13 1M17 10H9V8H17V10Z"; -var mdiHeadOutline = "M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C2 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.8 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 6 9.2 3 13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3Z"; -var mdiHeadPlus = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M17 10H14V13H12V10H9V8H12V5H14V8H17V10Z"; -var mdiHeadPlusOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.7 1.8 12.7 2.2 13.6C2.6 14.3 3.2 14.8 4 15V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.9 22 13.1 22 10C22 5 18 1 13 1M17 10H14V13H12V10H9V8H12V5H14V8H17V10Z"; -var mdiHeadQuestion = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M14 14H12V12H14V14M15.75 8.81C15.46 9.21 15.09 9.5 14.64 9.74C14.39 9.9 14.22 10.07 14.13 10.26C14.04 10.44 14 10.69 14 11H12C12 10.5 12.11 10.08 12.31 9.82C12.5 9.55 12.85 9.25 13.36 8.91C13.62 8.75 13.83 8.55 13.97 8.32C14.13 8.09 14.2 7.82 14.2 7.5C14.2 7.2 14.12 6.94 13.94 6.75C13.76 6.57 13.5 6.47 13.19 6.47C12.93 6.47 12.71 6.55 12.53 6.7C12.35 6.86 12.26 7.09 12.25 7.39H10.32L10.31 7.36C10.3 6.57 10.56 6 11.08 5.59C11.62 5.2 12.32 5 13.19 5C14.12 5 14.85 5.23 15.38 5.68C15.92 6.13 16.19 6.74 16.19 7.5C16.19 8 16.04 8.41 15.75 8.81Z"; -var mdiHeadQuestionOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M10.32 7.39H12.25C12.26 7.09 12.35 6.86 12.53 6.7C12.71 6.55 12.93 6.47 13.19 6.47C13.5 6.47 13.76 6.57 13.94 6.75C14.12 6.94 14.2 7.2 14.2 7.5C14.2 7.82 14.13 8.09 13.97 8.32C13.83 8.55 13.62 8.75 13.36 8.91C12.85 9.25 12.5 9.55 12.31 9.82C12.11 10.08 12 10.5 12 11H14C14 10.69 14.04 10.44 14.13 10.26C14.22 10.07 14.39 9.9 14.64 9.74C15.09 9.5 15.46 9.21 15.75 8.81C16.04 8.41 16.19 8 16.19 7.5C16.19 6.74 15.92 6.13 15.38 5.68C14.85 5.23 14.12 5 13.19 5C12.32 5 11.62 5.2 11.08 5.59C10.56 6 10.3 6.57 10.31 7.36L10.32 7.39M12 14H14V12H12V14M13 1C8.41 1 4.61 4.42 4.06 8.9L2.5 11L2.47 11L2.45 11.03C1.9 11.79 1.83 12.79 2.26 13.62C2.62 14.31 3.26 14.79 4 14.94V16C4 17.85 5.28 19.42 7 19.87V23H18V17.5C20.5 15.83 22 13.06 22 10C22 5.03 17.96 1 13 1Z"; -var mdiHeadRemove = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M15.1 12.5L13 10.4L10.9 12.5L9.5 11.1L11.6 9L9.5 6.9L10.9 5.5L13 7.6L15.1 5.5L16.5 6.9L14.4 9L16.5 11.1L15.1 12.5Z"; -var mdiHeadRemoveOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.7 1.8 12.7 2.2 13.6C2.6 14.3 3.2 14.8 4 15V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.9 22 13.1 22 10C22 5 18 1 13 1M16.5 6.9L14.4 9L16.5 11.1L15.1 12.5L13 10.4L10.9 12.5L9.5 11.1L11.6 9L9.5 6.9L10.9 5.5L13 7.6L15.1 5.5L16.5 6.9Z"; -var mdiHeadSnowflake = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M17.06 9.57L15.1 10.09L16.54 11.54C16.89 11.88 16.89 12.46 16.54 12.81C16.19 13.16 15.61 13.16 15.27 12.81L13.81 11.37L13.3 13.33C13.18 13.82 12.68 14.1 12.21 13.97C11.72 13.84 11.44 13.35 11.57 12.87L12.1 10.9L10.13 11.43C9.65 11.56 9.15 11.28 9.03 10.79C8.9 10.32 9.18 9.82 9.67 9.7L11.63 9.19L10.19 7.73C9.84 7.39 9.84 6.82 10.19 6.46C10.54 6.11 11.12 6.11 11.46 6.46L12.91 7.9L13.43 5.94C13.55 5.46 14.04 5.18 14.5 5.3C15 5.43 15.28 5.92 15.16 6.41L14.63 8.37L16.59 7.84C17.08 7.72 17.57 8 17.7 8.5C17.82 8.96 17.54 9.45 17.06 9.57Z"; -var mdiHeadSnowflakeOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.41 1 4.61 4.42 4.06 8.9L2.5 11L2.47 11L2.45 11.03C1.9 11.79 1.83 12.79 2.26 13.62C2.62 14.31 3.26 14.79 4 14.94V16C4 17.85 5.28 19.42 7 19.87V23H18V17.5C20.5 15.83 22 13.06 22 10C22 5.03 17.96 1 13 1M17.33 9.3L15.37 9.81L16.81 11.27C17.16 11.61 17.16 12.19 16.81 12.54S15.88 12.89 15.54 12.54L14.09 11.1L13.57 13.06C13.45 13.55 12.96 13.82 12.5 13.7C12 13.57 11.72 13.08 11.84 12.59L12.37 10.63L10.41 11.16C9.92 11.28 9.43 11 9.3 10.5C9.18 10.05 9.46 9.55 9.94 9.43L11.9 8.91L10.46 7.46C10.11 7.12 10.11 6.55 10.46 6.19C10.81 5.84 11.39 5.84 11.73 6.19L13.19 7.63L13.7 5.67C13.82 5.18 14.32 4.9 14.79 5.03C15.28 5.16 15.56 5.65 15.43 6.13L14.9 8.1L16.87 7.57C17.35 7.44 17.84 7.72 17.97 8.21C18.1 8.68 17.82 9.18 17.33 9.3Z"; -var mdiHeadSync = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M13 15V13.5C10.79 13.5 9 11.71 9 9.5C9 8.68 9.25 7.92 9.67 7.29L10.76 8.38C10.59 8.72 10.5 9.1 10.5 9.5C10.5 10.88 11.62 12 13 12V10.5L15.25 12.75L13 15M16.33 11.71L15.24 10.62C15.41 10.28 15.5 9.9 15.5 9.5C15.5 8.12 14.38 7 13 7V8.5L10.75 6.25L13 4V5.5C15.21 5.5 17 7.29 17 9.5C17 10.32 16.75 11.08 16.33 11.71Z"; -var mdiHeadSyncOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.41 1 4.61 4.42 4.06 8.9L2.5 11L2.47 11L2.45 11.03C1.9 11.79 1.83 12.79 2.26 13.62C2.62 14.31 3.26 14.79 4 14.94V16C4 17.85 5.28 19.42 7 19.87V23H18V17.5C20.5 15.83 22 13.06 22 10C22 5.03 17.96 1 13 1M14 15V13.5C11.79 13.5 10 11.71 10 9.5C10 8.68 10.25 7.92 10.67 7.29L11.76 8.38C11.59 8.72 11.5 9.1 11.5 9.5C11.5 10.88 12.62 12 14 12V10.5L16.25 12.75L14 15M17.33 11.71L16.24 10.62C16.41 10.28 16.5 9.9 16.5 9.5C16.5 8.12 15.38 7 14 7V8.5L11.75 6.25L14 4V5.5C16.21 5.5 18 7.29 18 9.5C18 10.32 17.75 11.08 17.33 11.71Z"; -var mdiHeadphones = "M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H18A3,3 0 0,0 21,17V10C21,5 16.97,1 12,1Z"; -var mdiHeadphonesBluetooth = "M8,6A6,6 0 0,0 2,12V16.8C2,17.46 2.54,18 3.2,18H6V14H4V12A4,4 0 0,1 8,8A4,4 0 0,1 12,12V14H10V18H12.8A1.2,1.2 0 0,0 14,16.8V12A6,6 0 0,0 8,6M19,7V10.79L16.71,8.5L16,9.21L18.79,12L16,14.79L16.71,15.5L19,13.21V17H19.5L22.35,14.14L20.21,12L22.35,9.85L19.5,7H19M20,8.91L20.94,9.85L20,10.79V8.91M20,13.21L20.94,14.14L20,15.08V13.21Z"; -var mdiHeadphonesBox = "M7.2,18C6.54,18 6,17.46 6,16.8V13.2L6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12V13.2L18,16.8A1.2,1.2 0 0,1 16.8,18H14V14H16V12A4,4 0 0,0 12,8A4,4 0 0,0 8,12V14H10V18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiHeadphonesOff = "M12,1A9,9 0 0,1 21,10V17C21,17.62 20.81,18.19 20.5,18.67L15,13.18V12H19V10A7,7 0 0,0 12,3C10,3 8.23,3.82 6.96,5.14L5.55,3.72C7.18,2.04 9.47,1 12,1M2.78,3.5L20.5,21.22L19.23,22.5L16.73,20H15V18.27L9,12.27V20H6A3,3 0 0,1 3,17V10C3,8.89 3.2,7.82 3.57,6.84L1.5,4.77L2.78,3.5M5.17,8.44C5.06,8.94 5,9.46 5,10V12H8.73L5.17,8.44Z"; -var mdiHeadphonesSettings = "M12,1A9,9 0 0,1 21,10V17A3,3 0 0,1 18,20H15V12H19V10A7,7 0 0,0 12,3A7,7 0 0,0 5,10V12H9V20H6A3,3 0 0,1 3,17V10A9,9 0 0,1 12,1M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z"; -var mdiHeadset = "M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H19V21H12V23H18A3,3 0 0,0 21,20V10C21,5 16.97,1 12,1Z"; -var mdiHeadsetDock = "M2,18H9V6.13C7.27,6.57 6,8.14 6,10V11H8V17H6A2,2 0 0,1 4,15V10A6,6 0 0,1 10,4H11A6,6 0 0,1 17,10V12H18V9H20V12A2,2 0 0,1 18,14H17V15A2,2 0 0,1 15,17H13V11H15V10C15,8.14 13.73,6.57 12,6.13V18H22V20H2V18Z"; -var mdiHeadsetOff = "M1.5,4.77L3.57,6.84C3.2,7.82 3,8.89 3,10V20A3,3 0 0,0 6,23H12V21H5V20H9V12.27L15,18.27V20H16.73L19.23,22.5L20.5,21.22L2.78,3.5L1.5,4.77M12,1C9.47,1 7.18,2.04 5.55,3.72L6.96,5.14C8.23,3.82 10,3 12,3A7,7 0 0,1 19,10V12H15V13.18L20.5,18.67C20.81,18.19 21,17.62 21,17V10A9,9 0 0,0 12,1M5,12V10C5,9.46 5.06,8.94 5.17,8.44L8.73,12H5Z"; -var mdiHeart = "M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35Z"; -var mdiHeartBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,17L12.72,16.34C15.3,14 17,12.46 17,10.57C17,9.03 15.79,7.82 14.25,7.82C13.38,7.82 12.55,8.23 12,8.87C11.45,8.23 10.62,7.82 9.75,7.82C8.21,7.82 7,9.03 7,10.57C7,12.46 8.7,14 11.28,16.34L12,17Z"; -var mdiHeartBoxOutline = "M12,17L11.28,16.34C8.7,14 7,12.46 7,10.57C7,9.03 8.21,7.82 9.75,7.82C10.62,7.82 11.45,8.23 12,8.87C12.55,8.23 13.38,7.82 14.25,7.82C15.79,7.82 17,9.03 17,10.57C17,12.46 15.3,14 12.72,16.34L12,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z"; -var mdiHeartBroken = "M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C8.17,3 8.82,3.12 9.44,3.33L13,9.35L9,14.35L12,21.35V21.35M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L11,14.35L15.5,9.35L12.85,4.27C13.87,3.47 15.17,3 16.5,3Z"; -var mdiHeartBrokenOutline = "M7.5,5C7.7,5 7.9,5 8.1,5.1L10.5,9.2L6.8,13.8C5.1,11.8 4,10.2 4,8.5C4,6.5 5.5,5 7.5,5M7.5,3C4.4,3 2,5.4 2,8.5C2,12.3 5.4,15.4 10.6,20L12,21.3L9,14.3L13,9.3L9.4,3.3C8.8,3.1 8.2,3 7.5,3M16.5,5C18.5,5 20,6.5 20,8.5C20,11.1 17.4,13.7 13.4,17.3L13.1,15L17.9,9.7L15.6,5.2C15.9,5 16.2,5 16.5,5M16.5,3C15.2,3 13.9,3.5 12.9,4.3L15.5,9.4L11,14.4L12,21.4L13.4,20.1C18.6,15.4 22,12.3 22,8.6C22,5.4 19.6,3 16.5,3Z"; -var mdiHeartCircle = "M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M9.75,7.82C10.62,7.82 11.45,8.23 12,8.87C12.55,8.23 13.38,7.82 14.25,7.82C15.79,7.82 17,9.03 17,10.57C17,12.46 15.3,14 12.72,16.34L12,17L11.28,16.34C8.7,14 7,12.46 7,10.57C7,9.03 8.21,7.82 9.75,7.82Z"; -var mdiHeartCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M9.75,7.82C8.21,7.82 7,9.03 7,10.57C7,12.46 8.7,14 11.28,16.34L12,17L12.72,16.34C15.3,14 17,12.46 17,10.57C17,9.03 15.79,7.82 14.25,7.82C13.38,7.82 12.55,8.23 12,8.87C11.45,8.23 10.62,7.82 9.75,7.82Z"; -var mdiHeartCog = "M12 19C12 19.71 12.12 20.4 12.32 21.06L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.8 21.59 11 20.84 12.25C20.25 12.09 19.63 12 19 12C15.14 12 12 15.14 12 19M23.83 20.64L22.83 22.37C22.76 22.5 22.63 22.5 22.5 22.5L21.27 22C21 22.18 20.73 22.34 20.43 22.47L20.24 23.79C20.22 23.91 20.11 24 20 24H18C17.86 24 17.76 23.91 17.74 23.79L17.55 22.47C17.24 22.35 16.96 22.18 16.7 22L15.46 22.5C15.34 22.5 15.21 22.5 15.15 22.37L14.15 20.64C14.09 20.53 14.12 20.4 14.21 20.32L15.27 19.5C15.25 19.33 15.24 19.17 15.24 19S15.25 18.67 15.27 18.5L14.21 17.68C14.11 17.6 14.09 17.47 14.15 17.36L15.15 15.63C15.22 15.5 15.35 15.5 15.46 15.5L16.7 16C16.96 15.82 17.25 15.66 17.55 15.53L17.74 14.21C17.76 14.09 17.87 14 18 14H20C20.11 14 20.22 14.09 20.23 14.21L20.42 15.53C20.73 15.65 21 15.82 21.27 16L22.5 15.5C22.63 15.5 22.76 15.5 22.82 15.63L23.82 17.36C23.88 17.47 23.85 17.6 23.76 17.68L22.7 18.5C22.73 18.67 22.74 18.83 22.74 19S22.72 19.33 22.7 19.5L23.77 20.32C23.86 20.4 23.89 20.53 23.83 20.64M20.5 19C20.5 18.17 19.83 17.5 19 17.5S17.5 18.17 17.5 19 18.16 20.5 19 20.5C19.83 20.5 20.5 19.83 20.5 19Z"; -var mdiHeartCogOutline = "M16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12 18.63C12 18.75 12 18.88 12 19C12 19.71 12.12 20.4 12.32 21.06L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.8 21.59 11 20.84 12.25C20.25 12.09 19.63 12 19 12C18.87 12 18.74 12 18.6 12C19.5 10.79 20 9.65 20 8.5C20 6.5 18.5 5 16.5 5M23.83 20.64L22.83 22.37C22.76 22.5 22.63 22.5 22.5 22.5L21.27 22C21 22.18 20.73 22.34 20.43 22.47L20.24 23.79C20.22 23.91 20.11 24 20 24H18C17.86 24 17.76 23.91 17.74 23.79L17.55 22.47C17.24 22.35 16.96 22.18 16.7 22L15.46 22.5C15.34 22.5 15.21 22.5 15.15 22.37L14.15 20.64C14.09 20.53 14.12 20.4 14.21 20.32L15.27 19.5C15.25 19.33 15.24 19.17 15.24 19S15.25 18.67 15.27 18.5L14.21 17.68C14.11 17.6 14.09 17.47 14.15 17.36L15.15 15.63C15.22 15.5 15.35 15.5 15.46 15.5L16.7 16C16.96 15.82 17.25 15.66 17.55 15.53L17.74 14.21C17.76 14.09 17.87 14 18 14H20C20.11 14 20.22 14.09 20.23 14.21L20.42 15.53C20.73 15.65 21 15.82 21.27 16L22.5 15.5C22.63 15.5 22.76 15.5 22.82 15.63L23.82 17.36C23.88 17.47 23.85 17.6 23.76 17.68L22.7 18.5C22.73 18.67 22.74 18.83 22.74 19S22.72 19.33 22.7 19.5L23.77 20.32C23.86 20.4 23.89 20.53 23.83 20.64M20.5 19C20.5 18.17 19.83 17.5 19 17.5S17.5 18.17 17.5 19 18.16 20.5 19 20.5C19.83 20.5 20.5 19.83 20.5 19Z"; -var mdiHeartFlash = "M16.5,2.83C14.76,2.83 13.09,3.64 12,4.9C10.91,3.64 9.24,2.83 7.5,2.83C4.42,2.83 2,5.24 2,8.33C2,12.1 5.4,15.19 10.55,19.86L12,21.17L13.45,19.86C18.6,15.19 22,12.1 22,8.33C22,5.24 19.58,2.83 16.5,2.83M12,17.83V13.83H9L12,6.83V10.83H15"; -var mdiHeartHalf = "M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z"; -var mdiHeartHalfFull = "M16.5,5C15,5 13.58,5.91 13,7.2V17.74C17.25,13.87 20,11.2 20,8.5C20,6.5 18.5,5 16.5,5M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3Z"; -var mdiHeartHalfOutline = "M4,8.5C4,11.2 6.75,13.87 11,17.74V7.2C10.42,5.91 9,5 7.5,5C5.5,5 4,6.5 4,8.5M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z"; -var mdiHeartMinus = "M12 18C12 19 12.25 19.92 12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C19.83 12.23 18.94 12 18 12C14.69 12 12 14.69 12 18M14 17V19H22V17H14Z"; -var mdiHeartMinusOutline = "M12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C20 12.31 19.31 12.11 18.59 12.04C19.5 10.8 20 9.65 20 8.5C20 6.5 18.5 5 16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12.04 18.61C12.12 19.37 12.34 20.09 12.67 20.74M14 17V19H22V17H14Z"; -var mdiHeartMultiple = "M13.5,20C6.9,13.9 3.5,10.8 3.5,7.1C3.5,4 5.9,1.6 9,1.6C10.7,1.6 12.4,2.4 13.5,3.7C14.6,2.4 16.3,1.6 18,1.6C21.1,1.6 23.5,4 23.5,7.1C23.5,10.9 20.1,14 13.5,20M12,21.1C5.4,15.2 1.5,11.7 1.5,7C1.5,6.8 1.5,6.6 1.5,6.4C0.9,7.3 0.5,8.4 0.5,9.6C0.5,13.4 3.9,16.5 10.5,22.4L12,21.1Z"; -var mdiHeartMultipleOutline = "M12,21.1L10.5,22.4C3.9,16.5 0.5,13.4 0.5,9.6C0.5,8.4 0.9,7.3 1.5,6.4C1.5,6.6 1.5,6.8 1.5,7C1.5,11.7 5.4,15.2 12,21.1M13.6,17C18.3,12.7 21.5,9.9 21.6,7C21.6,5 20.1,3.5 18.1,3.5C16.5,3.5 15,4.5 14.5,5.9H12.6C12,4.5 10.5,3.5 9,3.5C7,3.5 5.5,5 5.5,7C5.5,9.9 8.6,12.7 13.4,17L13.5,17.1M18,1.5C21.1,1.5 23.5,3.9 23.5,7C23.5,10.7 20.1,13.8 13.5,19.8C6.9,13.9 3.5,10.8 3.5,7C3.5,3.9 5.9,1.5 9,1.5C10.7,1.5 12.4,2.3 13.5,3.6C14.6,2.3 16.3,1.5 18,1.5Z"; -var mdiHeartOff = "M1,4.27L2.28,3L20,20.72L18.73,22L15.18,18.44L13.45,20.03L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,7.55 2.23,6.67 2.63,5.9L1,4.27M7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,11.07 20.42,13.32 17.79,15.97L5.27,3.45C5.95,3.16 6.7,3 7.5,3Z"; -var mdiHeartOffOutline = "M2.39 1.73L1.11 3L3.19 5.08C2.45 6 2 7.19 2 8.5C2 12.27 5.4 15.36 10.55 20.03L12 21.35L13.45 20.03C14.32 19.24 15.14 18.5 15.9 17.79L20 22L21.27 20.73M12.1 18.55L12 18.65L11.89 18.55C7.14 14.24 4 11.39 4 8.5C4 7.74 4.22 7.06 4.61 6.5L14.5 16.37C13.74 17.06 12.95 17.78 12.1 18.55M8.3 5.1L6.33 3.13C6.7 3.05 7.1 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 10.84 20.69 12.92 18.47 15.27L17.06 13.86C18.91 11.88 20 10.2 20 8.5C20 6.5 18.5 5 16.5 5C15.1 5 13.74 5.83 13.11 7H10.89C10.38 6.06 9.39 5.34 8.3 5.1Z"; -var mdiHeartOutline = "M12.1,18.55L12,18.65L11.89,18.55C7.14,14.24 4,11.39 4,8.5C4,6.5 5.5,5 7.5,5C9.04,5 10.54,6 11.07,7.36H12.93C13.46,6 14.96,5 16.5,5C18.5,5 20,6.5 20,8.5C20,11.39 16.86,14.24 12.1,18.55M16.5,3C14.76,3 13.09,3.81 12,5.08C10.91,3.81 9.24,3 7.5,3C4.42,3 2,5.41 2,8.5C2,12.27 5.4,15.36 10.55,20.03L12,21.35L13.45,20.03C18.6,15.36 22,12.27 22,8.5C22,5.41 19.58,3 16.5,3Z"; -var mdiHeartPlus = "M12 18C12 19 12.25 19.92 12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C19.83 12.23 18.94 12 18 12C14.69 12 12 14.69 12 18M19 14H17V17H14V19H17V22H19V19H22V17H19V14Z"; -var mdiHeartPlusOutline = "M12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C20 12.31 19.31 12.11 18.59 12.04C19.5 10.8 20 9.65 20 8.5C20 6.5 18.5 5 16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12.04 18.61C12.12 19.37 12.34 20.09 12.67 20.74M17 14V17H14V19H17V22H19V19H22V17H19V14H17Z"; -var mdiHeartPulse = "M7.5,4A5.5,5.5 0 0,0 2,9.5C2,10 2.09,10.5 2.22,11H6.3L7.57,7.63C7.87,6.83 9.05,6.75 9.43,7.63L11.5,13L12.09,11.58C12.22,11.25 12.57,11 13,11H21.78C21.91,10.5 22,10 22,9.5A5.5,5.5 0 0,0 16.5,4C14.64,4 13,4.93 12,6.34C11,4.93 9.36,4 7.5,4V4M3,12.5A1,1 0 0,0 2,13.5A1,1 0 0,0 3,14.5H5.44L11,20C12,20.9 12,20.9 13,20L18.56,14.5H21A1,1 0 0,0 22,13.5A1,1 0 0,0 21,12.5H13.4L12.47,14.8C12.07,15.81 10.92,15.67 10.55,14.83L8.5,9.5L7.54,11.83C7.39,12.21 7.05,12.5 6.6,12.5H3Z"; -var mdiHeartRemove = "M12 18C12 19 12.25 19.92 12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C19.83 12.23 18.94 12 18 12C14.69 12 12 14.69 12 18M21.54 15.88L20.12 14.47L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88Z"; -var mdiHeartRemoveOutline = "M12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C20 12.31 19.31 12.11 18.59 12.04C19.5 10.8 20 9.65 20 8.5C20 6.5 18.5 5 16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12.04 18.61C12.12 19.37 12.34 20.09 12.67 20.74M20.12 14.46L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88L20.12 14.46Z"; -var mdiHeartSettings = "M15 22H17V24H15V22M11 24H13V22H11V24M7 24H9V22H7V24M16.5 3C14.76 3 13.09 3.81 12 5.08C10.91 3.81 9.24 3 7.5 3C4.42 3 2 5.41 2 8.5C2 12.27 5.4 15.36 10.55 20.03L12 21.35L13.45 20.03C18.6 15.36 22 12.27 22 8.5C22 5.41 19.58 3 16.5 3Z"; -var mdiHeartSettingsOutline = "M7 22H9V24H7V22M11 24H13V22H11V24M15 24H17V22H15V24M22 8.5C22 12.27 18.6 15.36 13.45 20.03L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5M20 8.5C20 6.5 18.5 5 16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12.1 18.55C16.86 14.24 20 11.39 20 8.5Z"; -var mdiHelicopter = "M3,3H17V5H3V3M23,6V10.5L14.75,12.2C14.91,12.6 15,13.04 15,13.5C15,14.9 14.18,16.1 13,16.66V17L13,19H16V21H4A3,3 0 0,1 1,18V17H3V18A1,1 0 0,0 4,19H5V16.74C3.25,16.13 2,14.46 2,12.5C2,10 4,8 6.5,8H9V6H11V8H21V6H23M11,19V17H7V19H11M7.5,10C6.12,10 5,10.9 5,12C5,13.1 6.12,14 7.5,14C8.88,14 10,13.1 10,12C10,10.9 8.88,10 7.5,10Z"; -var mdiHelp = "M10,19H13V22H10V19M12,2C17.35,2.22 19.68,7.62 16.5,11.67C15.67,12.67 14.33,13.33 13.67,14.17C13,15 13,16 13,17H10C10,15.33 10,13.92 10.67,12.92C11.33,11.92 12.67,11.33 13.5,10.67C15.92,8.43 15.32,5.26 12,5A3,3 0 0,0 9,8H6A6,6 0 0,1 12,2Z"; -var mdiHelpBox = "M11,18H13V16H11V18M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"; -var mdiHelpCircle = "M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"; -var mdiHelpCircleOutline = "M11,18H13V16H11V18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6Z"; -var mdiHelpNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17M12.19,5C11.32,5 10.62,5.2 10.08,5.59C9.56,6 9.3,6.57 9.31,7.36L9.32,7.39H11.25C11.26,7.09 11.35,6.86 11.53,6.7C11.71,6.55 11.93,6.47 12.19,6.47C12.5,6.47 12.76,6.57 12.94,6.75C13.12,6.94 13.2,7.2 13.2,7.5C13.2,7.82 13.13,8.09 12.97,8.32C12.83,8.55 12.62,8.75 12.36,8.91C11.85,9.25 11.5,9.55 11.31,9.82C11.11,10.08 11,10.5 11,11H13C13,10.69 13.04,10.44 13.13,10.26C13.22,10.07 13.39,9.9 13.64,9.74C14.09,9.5 14.46,9.21 14.75,8.81C15.04,8.41 15.19,8 15.19,7.5C15.19,6.74 14.92,6.13 14.38,5.68C13.85,5.23 13.12,5 12.19,5M11,12V14H13V12H11Z"; -var mdiHelpNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M11.95,6C11.17,6 10.55,6.18 10.07,6.5C9.61,6.89 9.38,7.4 9.39,8.1L9.4,8.13H11.11C11.12,7.86 11.2,7.65 11.36,7.5C11.5,7.38 11.72,7.31 11.95,7.31C12.22,7.31 12.45,7.4 12.61,7.56C12.77,7.73 12.85,7.96 12.85,8.22C12.85,8.5 12.78,8.75 12.64,8.95C12.5,9.16 12.33,9.33 12.1,9.5C11.65,9.78 11.34,10.05 11.17,10.29C11,10.5 10.89,10.89 10.89,11.33H12.67C12.67,11.06 12.7,10.84 12.78,10.68C12.86,10.5 13,10.36 13.24,10.21C13.64,10 13.97,9.74 14.22,9.39C14.5,9.03 14.62,8.67 14.62,8.22C14.62,7.55 14.38,7 13.9,6.61C13.42,6.2 12.77,6 11.95,6M10.89,12.22V14H12.67V12.22H10.89Z"; -var mdiHelpRhombus = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 6.95C14.7 7.06 15.87 9.78 14.28 11.81C13.86 12.31 13.19 12.64 12.85 13.07C12.5 13.5 12.5 14 12.5 14.5H11C11 13.65 11 12.94 11.35 12.44C11.68 11.94 12.35 11.64 12.77 11.31C14 10.18 13.68 8.59 12 8.46C11.18 8.46 10.5 9.13 10.5 9.97H9C9 8.3 10.35 6.95 12 6.95M11 15.5H12.5V17H11V15.5Z"; -var mdiHelpRhombusOutline = "M11 15.5H12.5V17H11V15.5M12 6.95C14.7 7.06 15.87 9.78 14.28 11.81C13.86 12.31 13.19 12.64 12.85 13.07C12.5 13.5 12.5 14 12.5 14.5H11C11 13.65 11 12.94 11.35 12.44C11.68 11.94 12.35 11.64 12.77 11.31C14 10.18 13.68 8.59 12 8.46C11.18 8.46 10.5 9.13 10.5 9.97H9C9 8.3 10.35 6.95 12 6.95M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12Z"; -var mdiHexadecimal = "M7 7C5.9 7 5 7.9 5 9V15C5 16.11 5.9 17 7 17H9C10.11 17 11 16.11 11 15V9C11 7.9 10.11 7 9 7H7M7 9H9V15H7V9M17.6 17L15.5 14.9L13.4 17L12 15.6L14.1 13.5L12 11.4L13.4 10L15.5 12.1L17.6 10L19 11.4L16.9 13.5L19 15.6L17.6 17Z"; -var mdiHexagon = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5Z"; -var mdiHexagonMultiple = "M10.25,2C10.44,2 10.61,2.11 10.69,2.26L12.91,6.22L13,6.5L12.91,6.78L10.69,10.74C10.61,10.89 10.44,11 10.25,11H5.75C5.56,11 5.39,10.89 5.31,10.74L3.09,6.78L3,6.5L3.09,6.22L5.31,2.26C5.39,2.11 5.56,2 5.75,2H10.25M10.25,13C10.44,13 10.61,13.11 10.69,13.26L12.91,17.22L13,17.5L12.91,17.78L10.69,21.74C10.61,21.89 10.44,22 10.25,22H5.75C5.56,22 5.39,21.89 5.31,21.74L3.09,17.78L3,17.5L3.09,17.22L5.31,13.26C5.39,13.11 5.56,13 5.75,13H10.25M19.5,7.5C19.69,7.5 19.86,7.61 19.94,7.76L22.16,11.72L22.25,12L22.16,12.28L19.94,16.24C19.86,16.39 19.69,16.5 19.5,16.5H15C14.81,16.5 14.64,16.39 14.56,16.24L12.34,12.28L12.25,12L12.34,11.72L14.56,7.76C14.64,7.61 14.81,7.5 15,7.5H19.5Z"; -var mdiHexagonMultipleOutline = "M9.37 4L10.78 6.5L9.37 9H6.63L5.23 6.5L6.63 4H9.37M10.25 2H5.75C5.56 2 5.39 2.11 5.31 2.26L3.09 6.22L3 6.5L3.09 6.78L5.31 10.74C5.39 10.89 5.56 11 5.75 11H10.25C10.44 11 10.61 10.89 10.69 10.74L12.91 6.78L13 6.5L12.91 6.22L10.69 2.26C10.61 2.11 10.44 2 10.25 2M18.62 9.5L20 12L18.62 14.5H15.88L14.5 12L15.88 9.5H18.62M19.5 7.5H15C14.81 7.5 14.64 7.61 14.56 7.76L12.34 11.72L12.25 12L12.34 12.28L14.56 16.24C14.64 16.39 14.81 16.5 15 16.5H19.5C19.69 16.5 19.86 16.39 19.94 16.24L22.16 12.28L22.25 12L22.16 11.72L19.94 7.76C19.86 7.61 19.69 7.5 19.5 7.5M9.37 15L10.78 17.5L9.37 20H6.63L5.23 17.5L6.63 15H9.37M10.25 13H5.75C5.56 13 5.39 13.11 5.31 13.26L3.09 17.22L3 17.5L3.09 17.78L5.31 21.74C5.39 21.89 5.56 22 5.75 22H10.25C10.44 22 10.61 21.89 10.69 21.74L12.91 17.78L13 17.5L12.91 17.22L10.69 13.26C10.61 13.11 10.44 13 10.25 13Z"; -var mdiHexagonOutline = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; -var mdiHexagonSlice1 = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15M12,12V5.32L17.94,8.66L12,12Z"; -var mdiHexagonSlice2 = "M18,15.38L12,12V5.32L18,8.69V15.38M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; -var mdiHexagonSlice3 = "M12,5.32L18,8.69V15.31L12,18.68V5.32M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; -var mdiHexagonSlice4 = "M12,5.32L18,8.69V15.31L12,18.68L6.06,15.34L12,12V5.32M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; -var mdiHexagonSlice5 = "M12,5.32L18,8.69V15.31L12,18.68L6,15.31V8.69L12,12V5.32M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; -var mdiHexagonSlice6 = "M12,5.32L18,8.69V15.31L12,18.68L6,15.31V8.69L12,5.32M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z"; -var mdiHexagram = "M14.5,7.66L20.64,6.97L17,12L20.68,16.97L14.5,16.32L12.03,22L9.5,16.34L3.36,17.03L7,12L3.32,7.03L9.5,7.68L11.97,2L14.5,7.66Z"; -var mdiHexagramOutline = "M12,7L13.3,9.8L16.5,9.4L14.5,12L16.4,14.5L13.2,14.1L12,17L10.7,14.2L7.5,14.6L9.5,12L7.6,9.5L10.8,9.9L12,7M12,2L9.5,7.7L3.3,7L7,12L3.4,17L9.6,16.3L12,22L14.5,16.3L20.7,16.9L17,12L20.6,7L14.4,7.7L12,2Z"; -var mdiHighDefinition = "M5,7H7V11H9V7H11V17H9V13H7V17H5V7M13,7H16A3,3 0 0,1 19,10V14A3,3 0 0,1 16,17H13V7M16,15A1,1 0 0,0 17,14V10A1,1 0 0,0 16,9H15V15H16Z"; -var mdiHighDefinitionBox = "M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,15H9.5V13H7.5V15H6V9H7.5V11.5H9.5V9H11V15M13,9H17A1,1 0 0,1 18,10V14A1,1 0 0,1 17,15H13V9M14.5,13.5H16.5V10.5H14.5V13.5Z"; -var mdiHighway = "M10,2L8,8H11V2H10M13,2V8H16L14,2H13M2,9V10H4V11H6V10H18L18.06,11H20V10H22V9H2M7,11L3.34,22H11V11H7M13,11V22H20.66L17,11H13Z"; -var mdiHiking = "M9.8,8.9L7,23H9.1L10.9,15L13,17V23H15V15.5L12.9,13.5L13.5,10.5C14.63,11.81 16.29,12.73 18.15,12.95L16,23H17L20,9L19.04,8.8L18.58,11C16.86,10.85 15.44,9.89 14.7,8.6L13.7,7C13.5,6.65 13.2,6.37 12.84,6.2C12.5,6 12.08,5.96 11.68,6C11.28,6.09 10.92,6.27 10.63,6.55C10.34,6.83 10.14,7.19 10.06,7.58L9.8,8.9M7.08,6.92L9.4,7.38L8.4,12.46L6.08,12L7.08,6.92M13.5,5.5A2,2 0 0,0 15.5,3.5A2,2 0 0,0 13.5,1.5A2,2 0 0,0 11.5,3.5A2,2 0 0,0 13.5,5.5Z"; -var mdiHinduism = "M15,2L13.5,3.5L15,5L16.5,3.5L15,2M11,3C10,9 17,10 20,6L18,4.5C17,6 13,8 11,3M9,7C7,7 4.5,8.5 4.5,8.5L6,11C7,10 9,9.5 10,10C12,11 9,13 7,12V15.5C10,14 12,16 11,17.5C8,22 3,16 3,13C1,19 6,22 9,22C12,22 14,20 12.5,15H14C12.5,19.5 18,24 21,18C22,16 22,9.5 17,9.5C13,9.5 14,15 10.5,13.5C14,10 12,7 9,7M19,12C22,15 15,21 15,15C15,13 17,10.5 19,12Z"; -var mdiHistory = "M13.5,8H12V13L16.28,15.54L17,14.33L13.5,12.25V8M13,3A9,9 0 0,0 4,12H1L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3"; -var mdiHockeyPuck = "M12,5C6.5,5 2,6.57 2,8.5C2,10.43 6.5,12 12,12C17.5,12 22,10.43 22,8.5C22,6.57 17.5,5 12,5M2,11.76V16.5C2,18.43 6.5,20 12,20C17.5,20 22,18.43 22,16.5V11.76C21.33,12.22 20.58,12.57 19.73,12.86C17.62,13.6 14.95,14 12,14C9.05,14 6.38,13.6 4.27,12.86C3.42,12.57 2.67,12.22 2,11.76Z"; -var mdiHockeySticks = "M7.58,3L5.05,4.61L9.04,10.87L10.82,8.08L7.58,3M16.43,3L7.5,17H2V21H8.5L18.96,4.61L16.43,3M14.97,14.59L13.19,17.38L15.5,21H22V17H16.5L14.97,14.59Z"; -var mdiHololens = "M12,8C12,8 22,8 22,11C22,11 22.09,14.36 21.75,14.25C21,11 12,11 12,11C12,11 3,11 2.25,14.25C1.91,14.36 2,11 2,11C2,8 12,8 12,8M12,12C20,12 20.75,14.25 20.75,14.25C19.75,17.25 19,18 15,18C12,18 13,16.5 12,16.5C11,16.5 12,18 9,18C5,18 4.25,17.25 3.25,14.25C3.25,14.25 4,12 12,12Z"; -var mdiHome = "M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"; -var mdiHomeAccount = "M12,3L2,12H5V20H19V12H22L12,3M12,8.75A2.25,2.25 0 0,1 14.25,11A2.25,2.25 0 0,1 12,13.25A2.25,2.25 0 0,1 9.75,11A2.25,2.25 0 0,1 12,8.75M12,15C13.5,15 16.5,15.75 16.5,17.25V18H7.5V17.25C7.5,15.75 10.5,15 12,15Z"; -var mdiHomeAlert = "M12 3L2 12H5V20H19V12H22L12 3M13 18H11V16H13V18M13 14H11V8H13V14Z"; -var mdiHomeAlertOutline = "M12 5.7L17 10.2V18H7V10.2L12 5.7M19 20V12H22L12 3L2 12H5V20M13 8H11V13H13V8M13 15H11V17H13V15"; -var mdiHomeAnalytics = "M12,3L2,12H5V20H19V12H22M9,18H7V12H9M13,18H11V10H13M17,18H15V14H17"; -var mdiHomeAssistant = "M21.8,13H20V21H13V17.67L15.79,14.88L16.5,15C17.66,15 18.6,14.06 18.6,12.9C18.6,11.74 17.66,10.8 16.5,10.8A2.1,2.1 0 0,0 14.4,12.9L14.5,13.61L13,15.13V9.65C13.66,9.29 14.1,8.6 14.1,7.8A2.1,2.1 0 0,0 12,5.7A2.1,2.1 0 0,0 9.9,7.8C9.9,8.6 10.34,9.29 11,9.65V15.13L9.5,13.61L9.6,12.9A2.1,2.1 0 0,0 7.5,10.8A2.1,2.1 0 0,0 5.4,12.9A2.1,2.1 0 0,0 7.5,15L8.21,14.88L11,17.67V21H4V13H2.25C1.83,13 1.42,13 1.42,12.79C1.43,12.57 1.85,12.15 2.28,11.72L11,3C11.33,2.67 11.67,2.33 12,2.33C12.33,2.33 12.67,2.67 13,3L17,7V6H19V9L21.78,11.78C22.18,12.18 22.59,12.59 22.6,12.8C22.6,13 22.2,13 21.8,13M7.5,12A0.9,0.9 0 0,1 8.4,12.9A0.9,0.9 0 0,1 7.5,13.8A0.9,0.9 0 0,1 6.6,12.9A0.9,0.9 0 0,1 7.5,12M16.5,12C17,12 17.4,12.4 17.4,12.9C17.4,13.4 17,13.8 16.5,13.8A0.9,0.9 0 0,1 15.6,12.9A0.9,0.9 0 0,1 16.5,12M12,6.9C12.5,6.9 12.9,7.3 12.9,7.8C12.9,8.3 12.5,8.7 12,8.7C11.5,8.7 11.1,8.3 11.1,7.8C11.1,7.3 11.5,6.9 12,6.9Z"; -var mdiHomeAutomation = "M12,3L2,12H5V20H19V12H22L12,3M12,8.5C14.34,8.5 16.46,9.43 18,10.94L16.8,12.12C15.58,10.91 13.88,10.17 12,10.17C10.12,10.17 8.42,10.91 7.2,12.12L6,10.94C7.54,9.43 9.66,8.5 12,8.5M12,11.83C13.4,11.83 14.67,12.39 15.6,13.3L14.4,14.47C13.79,13.87 12.94,13.5 12,13.5C11.06,13.5 10.21,13.87 9.6,14.47L8.4,13.3C9.33,12.39 10.6,11.83 12,11.83M12,15.17C12.94,15.17 13.7,15.91 13.7,16.83C13.7,17.75 12.94,18.5 12,18.5C11.06,18.5 10.3,17.75 10.3,16.83C10.3,15.91 11.06,15.17 12,15.17Z"; -var mdiHomeCircle = "M19.07,4.93C17.22,3 14.66,1.96 12,2C9.34,1.96 6.79,3 4.94,4.93C3,6.78 1.96,9.34 2,12C1.96,14.66 3,17.21 4.93,19.06C6.78,21 9.34,22.04 12,22C14.66,22.04 17.21,21 19.06,19.07C21,17.22 22.04,14.66 22,12C22.04,9.34 21,6.78 19.07,4.93M17,12V18H13.5V13H10.5V18H7V12H5L12,5L19.5,12H17Z"; -var mdiHomeCircleOutline = "M12 20C7.6 20 4 16.4 4 12S7.6 4 12 4 20 7.6 20 12 16.4 20 12 20M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M11 14H13V17H16V12H18L12 7L6 12H8V17H11V14"; -var mdiHomeCity = "M0,21V10L7.5,5L15,10V21H10V14H5V21H0M24,2V21H17V8.93L16,8.27V6H14V6.93L10,4.27V2H24M21,14H19V16H21V14M21,10H19V12H21V10M21,6H19V8H21V6Z"; -var mdiHomeCityOutline = "M10,2V4.26L12,5.59V4H22V19H17V21H24V2H10M7.5,5L0,10V21H15V10L7.5,5M14,6V6.93L15.61,8H16V6H14M18,6V8H20V6H18M7.5,7.5L13,11V19H10V13H5V19H2V11L7.5,7.5M18,10V12H20V10H18M18,14V16H20V14H18Z"; -var mdiHomeCurrencyUsd = "M12,3L22,12H19V20H5V12H2L12,3M9.22,8.93C8.75,9.4 8.5,10.03 8.5,10.75C8.5,12.43 10.54,13.07 11.76,13.46C13.26,13.93 13.47,14.21 13.5,14.25C13.5,15 12.15,15 12,15V15C11.37,15 11.03,14.88 10.86,14.78C10.67,14.67 10.5,14.5 10.5,14H8.5C8.5,15.43 9.24,16.16 9.85,16.5C10.18,16.7 10.57,16.84 11,16.92V18H13V16.91C14.53,16.61 15.5,15.62 15.5,14.25C15.5,12.67 13.88,12.03 12.36,11.55C10.8,11.06 10.53,10.77 10.5,10.75C10.5,10.5 10.57,10.41 10.64,10.34C10.85,10.13 11.36,10 12,10V10C12.68,10 13.5,10.13 13.5,10.75H15.5C15.5,9.34 14.56,8.37 13,8.09V7H11V8.08C10.26,8.21 9.65,8.5 9.22,8.93Z"; -var mdiHomeEdit = "M12 3L2 12H5V20H10V14H14V15.11L19.43 9.68L12 3M21.04 11.14C20.9 11.14 20.76 11.2 20.65 11.3L19.65 12.3L21.7 14.35L22.7 13.35C22.91 13.14 22.91 12.79 22.7 12.58L21.42 11.3C21.32 11.2 21.18 11.14 21.04 11.14M19.06 12.88L13 18.94V21H15.06L21.11 14.93L19.06 12.88Z"; -var mdiHomeEditOutline = "M12 3L2 12H5V20H11V14H13V16.11L15 14.11V12H9V18H7V10.19L12 5.69L17 10.19V12.11L19.43 9.68L12 3M21.04 11.14C20.9 11.14 20.76 11.2 20.65 11.3L19.65 12.3L21.7 14.35L22.7 13.35C22.91 13.14 22.91 12.79 22.7 12.58L21.42 11.3C21.32 11.2 21.18 11.14 21.04 11.14M19.06 12.88L13 18.94V21H15.06L21.11 14.93L19.06 12.88Z"; -var mdiHomeExportOutline = "M24 13L20 9V12H11V14H20V17M18 16V21H2V12H0L10 2L18 10H15L10 5L4 11V19H16V16H18Z"; -var mdiHomeFlood = "M5,11H2L12,2L22,11H19V15.92C17.95,15.75 16.93,15.32 16,14.67C15.37,15.11 14.7,15.43 14,15.65V13H10V15.65C9.3,15.43 8.63,15.11 8,14.67C7.07,15.32 6.05,15.75 5,15.92M20,18C18.61,18 17.22,17.53 16,16.67C13.56,18.38 10.44,18.38 8,16.67C6.78,17.53 5.39,18 4,18H2V22H22V18"; -var mdiHomeFloor0 = "M11,10H13V16H11V10M22,12H19V20H5V12H2L12,3L22,12M15,10A2,2 0 0,0 13,8H11A2,2 0 0,0 9,10V16A2,2 0 0,0 11,18H13A2,2 0 0,0 15,16V10Z"; -var mdiHomeFloor1 = "M12,3L2,12H5V20H19V12H22L12,3M10,8H14V18H12V10H10V8Z"; -var mdiHomeFloor2 = "M12,3L2,12H5V20H19V12H22L12,3M9,8H13A2,2 0 0,1 15,10V12A2,2 0 0,1 13,14H11V16H15V18H9V14A2,2 0 0,1 11,12H13V10H9V8Z"; -var mdiHomeFloor3 = "M12,3L22,12H19V20H5V12H2L12,3M15,11.5V10C15,8.89 14.1,8 13,8H9V10H13V12H11V14H13V16H9V18H13A2,2 0 0,0 15,16V14.5A1.5,1.5 0 0,0 13.5,13A1.5,1.5 0 0,0 15,11.5Z"; -var mdiHomeFloorA = "M12,3L2,12H5V20H19V12H22L12,3M11,8H13A2,2 0 0,1 15,10V18H13V15H11V18H9V10C9,8.89 9.9,8 11,8M11,10V13H13V10H11Z"; -var mdiHomeFloorB = "M12,3L2,12H5V20H19V12H22L12,3M9,8H13A2,2 0 0,1 15,10V11.5A1.5,1.5 0 0,1 13.5,13A1.5,1.5 0 0,1 15,14.5V16A2,2 0 0,1 13,18H9V8M11,10V12H13V10H11M11,14V16H13V14H11Z"; -var mdiHomeFloorG = "M12,3L2,12H5V20H19V12H22L12,3M11,8H15V10H11V16H13V12H15V16C15,17.11 14.1,18 13,18H11A2,2 0 0,1 9,16V10C9,8.89 9.9,8 11,8Z"; -var mdiHomeFloorL = "M12,3L2,12H5V20H19V12H22L12,3M9,8H11V16H15V18H9V8Z"; -var mdiHomeFloorNegative1 = "M12,3L2,12H5V20H19V12H22L12,3M11,15H7V13H11V15M15,18H13V10H11V8H15V18Z"; -var mdiHomeGroup = "M17,16H15V22H12V17H8V22H5V16H3L10,10L17,16M6,2L10,6H9V9H7V6H5V9H3V6H2L6,2M18,3L23,8H22V12H19V9H17V12H15.34L14,10.87V8H13L18,3Z"; -var mdiHomeHeart = "M2,12L12,3L22,12H19V20H5V12H2M12,18L12.72,17.34C15.3,15 17,13.46 17,11.57C17,10.03 15.79,8.82 14.25,8.82C13.38,8.82 12.55,9.23 12,9.87C11.45,9.23 10.62,8.82 9.75,8.82C8.21,8.82 7,10.03 7,11.57C7,13.46 8.7,15 11.28,17.34L12,18Z"; -var mdiHomeImportOutline = "M15 13L11 9V12H2V14H11V17M22 12H20V21H4V16H6V19H18V11L12 5L7 10H4L12 2L22 12Z"; -var mdiHomeLightbulb = "M12 3L2 12H5V20H19V12H22M13 18H11V17H13M13.5 14.58V16H10.5V14.58A3 3 0 1 1 13.5 14.58Z"; -var mdiHomeLightbulbOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M13.5 14.58V16H10.5V14.58C9.07 13.75 8.57 11.92 9.4 10.5C10.23 9.05 12.07 8.56 13.5 9.38S15.43 12.05 14.6 13.5C14.34 13.94 13.96 14.32 13.5 14.58M13 17H11V18H13V17Z"; -var mdiHomeLock = "M12,3L2,12H5V20H19V12H22L12,3M12,9A3,3 0 0,1 15,12V13H16V17H8V13H9V12A3,3 0 0,1 12,9M12,11A1,1 0 0,0 11,12V13H13V12C13,11.5 12.6,11 12,11Z"; -var mdiHomeLockOpen = "M12,3L2,12H5V20H19V12H22L12,3M12,8A3,3 0 0,1 15,11H13A1,1 0 0,0 12,10A1,1 0 0,0 11,11V13H16V17H8V13H9V11A3,3 0 0,1 12,8Z"; -var mdiHomeMapMarker = "M12,3L2,12H5V20H19V12H22L12,3M12,7.7C14.1,7.7 15.8,9.4 15.8,11.5C15.8,14.5 12,18 12,18C12,18 8.2,14.5 8.2,11.5C8.2,9.4 9.9,7.7 12,7.7M12,10A1.5,1.5 0 0,0 10.5,11.5A1.5,1.5 0 0,0 12,13A1.5,1.5 0 0,0 13.5,11.5A1.5,1.5 0 0,0 12,10Z"; -var mdiHomeMinus = "M12,3L2,12H5V20H19V12H22L12,3M16,13V15H8V13H16Z"; -var mdiHomeMinusOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M16 13V15H8V13H16Z"; -var mdiHomeModern = "M6,21V8A2,2 0 0,1 8,6L16,3V6A2,2 0 0,1 18,8V21H12V16H8V21H6M14,19H16V16H14V19M8,13H10V9H8V13M12,13H16V9H12V13Z"; -var mdiHomeOutline = "M12 5.69L17 10.19V18H15V12H9V18H7V10.19L12 5.69M12 3L2 12H5V20H11V14H13V20H19V12H22L12 3Z"; -var mdiHomePlus = "M12,3L2,12H5V20H19V12H22L12,3M11,10H13V13H16V15H13V18H11V15H8V13H11V10Z"; -var mdiHomePlusOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M11 10H13V13H16V15H13V18H11V15H8V13H11V10Z"; -var mdiHomeRemove = "M12 3L2 12H5V20H19V12H22L12 3M15.54 16.12L14.12 17.54L12 15.41L9.88 17.54L8.47 16.12L10.59 14L8.47 11.88L9.88 10.47L12 12.59L14.12 10.47L15.54 11.88L13.41 14L15.54 16.12Z"; -var mdiHomeRemoveOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M14.12 10.46L15.54 11.88L13.41 14L15.54 16.12L14.12 17.54L12 15.41L9.88 17.54L8.47 16.12L10.59 14L8.47 11.88L9.88 10.47L12 12.59L14.12 10.46Z"; -var mdiHomeRoof = "M19 16H22L12 7L2 16H5L12 9.69L19 16M7 8.81V7H4V11.5L7 8.81Z"; -var mdiHomeSearch = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M5 20V12H2L12 3L22 12H20.18C19 10.77 17.34 10 15.5 10C11.92 10 9 12.92 9 16.5C9 17.79 9.38 19 10.03 20H5Z"; -var mdiHomeSearchOutline = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M5 20V12H2L12 3L22 12H20.18C19.33 11.11 18.23 10.47 17 10.18L12 5.69L7 10.19V18H9.18C9.35 18.72 9.64 19.39 10.03 20H5Z"; -var mdiHomeThermometer = "M12 3L2 12H5V20H19V12H22L12 3M12 8A1 1 0 0 1 13 9V14.27A2 2 0 0 1 14 16A2 2 0 0 1 12 18A2 2 0 0 1 10 16A2 2 0 0 1 11 14.27V9A1 1 0 0 1 12 8Z"; -var mdiHomeThermometerOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M12 8C11.45 8 11 8.45 11 9V13.27C10.38 13.63 10 14.29 10 15C10 16.11 10.9 17 12 17S14 16.11 14 15C14 14.29 13.62 13.63 13 13.27V9C13 8.45 12.55 8 12 8Z"; -var mdiHomeVariant = "M12,3L20,9V21H15V14H9V21H4V9L12,3Z"; -var mdiHomeVariantOutline = "M9,13H15V19H18V10L12,5.5L6,10V19H9V13M4,21V9L12,3L20,9V21H4Z"; -var mdiHook = "M18,6C18,7.82 16.76,9.41 15,9.86V17A5,5 0 0,1 10,22A5,5 0 0,1 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V9.86C11.23,9.4 10,7.8 10,5.97C10,3.76 11.8,2 14,2C16.22,2 18,3.79 18,6M14,8A2,2 0 0,0 16,6A2,2 0 0,0 14,4A2,2 0 0,0 12,6A2,2 0 0,0 14,8Z"; -var mdiHookOff = "M13,9.86V11.18L15,13.18V9.86C17.14,9.31 18.43,7.13 17.87,5C17.32,2.85 15.14,1.56 13,2.11C10.86,2.67 9.57,4.85 10.13,7C10.5,8.4 11.59,9.5 13,9.86M14,4A2,2 0 0,1 16,6A2,2 0 0,1 14,8A2,2 0 0,1 12,6A2,2 0 0,1 14,4M18.73,22L14.86,18.13C14.21,20.81 11.5,22.46 8.83,21.82C6.6,21.28 5,19.29 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V16.27L2,5.27L3.28,4L13,13.72L15,15.72L20,20.72L18.73,22Z"; -var mdiHops = "M21,12C21,12 12.5,10 12.5,2C12.5,2 21,2 21,12M3,12C3,2 11.5,2 11.5,2C11.5,10 3,12 3,12M12,6.5C12,6.5 13,8.66 15,10.5C14.76,14.16 12,16 12,16C12,16 9.24,14.16 9,10.5C11,8.66 12,6.5 12,6.5M20.75,13.25C20.75,13.25 20,17 18,19C18,19 15.53,17.36 14.33,14.81C15.05,13.58 15.5,12.12 15.75,11.13C17.13,12.18 18.75,13 20.75,13.25M15.5,18.25C14.5,20.25 12,21.75 12,21.75C12,21.75 9.5,20.25 8.5,18.25C8.5,18.25 9.59,17.34 10.35,15.8C10.82,16.35 11.36,16.79 12,17C12.64,16.79 13.18,16.35 13.65,15.8C14.41,17.34 15.5,18.25 15.5,18.25M3.25,13.25C5.25,13 6.87,12.18 8.25,11.13C8.5,12.12 8.95,13.58 9.67,14.81C8.47,17.36 6,19 6,19C4,17 3.25,13.25 3.25,13.25Z"; -var mdiHorizontalRotateClockwise = "M12 14L8 10L4 14H7.1C7.56 18.56 9.58 22 12 22S16.44 18.56 16.9 14H14.91C14.57 17.45 13.4 20 12 20S9.43 17.45 9.09 14H12M12 4C13.4 4 14.57 6.55 14.91 10H16.9C16.44 5.44 14.42 2 12 2C9.84 2 8 4.74 7.3 8.58L8 7.88L9.21 9.08C9.64 6.11 10.73 4 12 4M22 13V11H11L13 13H22M2 13H3L5 11H2V13Z"; -var mdiHorizontalRotateCounterclockwise = "M12 10H9.09C9.43 6.55 10.6 4 12 4S14.57 6.55 14.91 10H16.9C16.44 5.44 14.42 2 12 2S7.56 5.44 7.1 10H4L8 14L12 10M12 20C10.73 20 9.64 17.89 9.21 14.92L8 16.12L7.3 15.42C8 19.26 9.84 22 12 22C14.42 22 16.44 18.56 16.9 14H14.91C14.57 17.45 13.4 20 12 20M22 11H13L11 13H22V11M2 13H5L3 11H2V13"; -var mdiHorse = "M22 6V9.5L20.5 10L18.96 7.54C18.83 7.33 18.5 7.42 18.5 7.67V11.25C18.5 12.23 18.11 13.11 17.5 13.78V21H15V15C14.92 15 14.84 15 14.75 15C14.54 15 14.33 14.97 14.13 14.94L9.69 14.2L8.57 16.21L9.53 21H7L6 16.25C5.97 15.95 6 15.65 6.16 15.39L7.18 13.58C6.2 13.03 5.53 12 5.5 10.81C5.46 10.96 5.44 11.18 5.47 11.5C5.5 11.94 5.61 12.59 5.54 13.31C5.5 14.03 5.17 14.77 4.75 15.26C4.32 15.75 3.85 16.09 3.35 16.35L2.65 15.65C2.84 15.18 3.03 14.76 3.07 14.37C3.13 14 3.06 13.7 2.95 13.43L2.42 12.3C2.21 11.79 1.95 11.05 2 10.18C2.03 9.33 2.5 8.22 3.39 7.61C4.29 7 5.26 6.92 6.05 7.08C6.55 7.18 7.06 7.42 7.5 7.76C7.87 7.59 8.3 7.5 8.75 7.5H14.5V7C14.5 4.79 16.29 3 18.5 3H22L21.11 4.34C21.65 4.7 22 5.31 22 6Z"; -var mdiHorseHuman = "M10 3.5C10 2.67 10.67 2 11.5 2S13 2.67 13 3.5 12.33 5 11.5 5 10 4.33 10 3.5M22 8V11.5L20.97 11.85C20.8 13.06 19.76 14 18.5 14H18.42C18.28 14.68 17.95 15.29 17.5 15.78V22H15V17C14.92 17 14.84 17 14.75 17C14.54 17 14.33 16.97 14.13 16.94L9.69 16.2L8.57 18.21L9.32 22H6.78L6 18.25C5.97 17.95 6 17.65 6.16 17.39L7.18 15.58C6.2 15.03 5.53 14 5.5 12.81C5.46 12.96 5.44 13.18 5.47 13.5C5.5 13.94 5.61 14.59 5.54 15.31C5.5 16.03 5.17 16.77 4.75 17.26C4.32 17.75 3.85 18.09 3.35 18.35L2.65 17.65C2.84 17.18 3.03 16.76 3.07 16.37C3.13 16 3.06 15.7 2.95 15.43L2.42 14.3C2.21 13.79 1.95 13.05 2 12.18C2.03 11.33 2.5 10.22 3.39 9.61C4.29 9 5.26 8.91 6.05 9.08C6.55 9.18 7.06 9.42 7.5 9.76C7.87 9.59 8.3 9.5 8.75 9.5H9V8.11C9 7.11 9.68 6.19 10.66 6.03C11.92 5.82 13 6.79 13 8V9.5H14.5V9C14.5 6.79 16.29 5 18.5 5H22L21.11 6.34C21.65 6.7 22 7.31 22 8M20 11.2L18.96 9.54C18.83 9.33 18.5 9.42 18.5 9.67V13C19.33 13 20 12.33 20 11.5V11.2Z"; -var mdiHorseVariant = "M20 8V16L17 17L13.91 11.5C13.65 11.04 12.92 11.27 13 11.81L14 21L4 17L5.15 8.94C5.64 5.53 8.56 3 12 3H20L18.42 5.37C19.36 5.88 20 6.86 20 8Z"; -var mdiHorseshoe = "M19,4H20V1H16V4C16,4 18,8 18,12C18,16 16,19 12,19C8,19 6,16 6,12C6,8 8,4 8,4V1H4V4H5C5,4 2,8 2,14C2,19 7,23 12,23C17,23 22,19 22,14C22,8 19,4 19,4M4,13C3.4,13 3,12.6 3,12C3,11.4 3.4,11 4,11C4.6,11 5,11.4 5,12C5,12.6 4.6,13 4,13M6,19C5.4,19 5,18.6 5,18C5,17.4 5.4,17 6,17C6.6,17 7,17.4 7,18C7,18.6 6.6,19 6,19M12,22C11.4,22 11,21.6 11,21C11,20.4 11.4,20 12,20C12.6,20 13,20.4 13,21C13,21.6 12.6,22 12,22M18,19C17.4,19 17,18.6 17,18C17,17.4 17.4,17 18,17C18.6,17 19,17.4 19,18C19,18.6 18.6,19 18,19M20,13C19.4,13 19,12.6 19,12C19,11.4 19.4,11 20,11C20.6,11 21,11.4 21,12C21,12.6 20.6,13 20,13Z"; -var mdiHospital = "M18 14H14V18H10V14H6V10H10V6H14V10H18"; -var mdiHospitalBox = "M18,14H14V18H10V14H6V10H10V6H14V10H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiHospitalBoxOutline = "M18 14H14V18H10V14H6V10H10V6H14V10H18M20 2H4C2.9 2 2 2.9 2 4V20C2 21.1 2.9 22 4 22H20C21.1 22 22 21.1 22 20V4C22 2.9 21.1 2 20 2M20 20H4V4H20V20Z"; -var mdiHospitalBuilding = "M2,22V7A1,1 0 0,1 3,6H7V2H17V6H21A1,1 0 0,1 22,7V22H14V17H10V22H2M9,4V10H11V8H13V10H15V4H13V6H11V4H9M4,20H8V17H4V20M4,15H8V12H4V15M16,20H20V17H16V20M16,15H20V12H16V15M10,15H14V12H10V15Z"; -var mdiHospitalMarker = "M12,2C15.86,2 19,5.13 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M9,6V12H11V10H13V12H15V6H13V8H11V6H9Z"; -var mdiHotTub = "M7,4A2,2 0 0,1 9,6A2,2 0 0,1 7,8A2,2 0 0,1 5,6A2,2 0 0,1 7,4M11.15,12H22V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12H5V11.25C5,10 6,9 7.25,9H7.28C7.62,9 7.95,9.09 8.24,9.23C8.5,9.35 8.74,9.5 8.93,9.73L10.33,11.28C10.56,11.54 10.84,11.78 11.15,12M7,20V14H5V20H7M11,20V14H9V20H11M15,20V14H13V20H15M19,20V14H17V20H19M18.65,5.86C19.68,6.86 20.16,8.21 19.95,9.57L19.89,10H18L18.09,9.41C18.24,8.62 18,7.83 17.42,7.21L17.35,7.15C16.32,6.14 15.85,4.79 16.05,3.43L16.11,3H18L17.91,3.59C17.76,4.38 18,5.17 18.58,5.79L18.65,5.86M14.65,5.86C15.68,6.86 16.16,8.21 15.95,9.57L15.89,10H14L14.09,9.41C14.24,8.62 14,7.83 13.42,7.21L13.35,7.15C12.32,6.14 11.85,4.79 12.05,3.43L12.11,3H14L13.91,3.59C13.76,4.38 14,5.17 14.58,5.79L14.65,5.86Z"; -var mdiHours24 = "M13 2.05V4.07C16.95 4.56 20 7.92 20 12C20 15.21 18.08 18 15.28 19.28L13 17V22H18L16.78 20.78C19.91 19.07 22 15.76 22 12C22 6.82 18.05 2.55 13 2.05M11 2C9.05 2.2 7.2 2.96 5.68 4.21L7.1 5.63C8.23 4.75 9.58 4.2 11 4V2M4.2 5.68C2.96 7.2 2.2 9.05 2 11H4C4.19 9.58 4.75 8.23 5.63 7.1L4.2 5.68M6 8V10H9V11H8C6.9 11 6 11.9 6 13V16H11V14H8V13H9C10.11 13 11 12.11 11 11V10C11 8.9 10.11 8 9 8H6M12 8V13H15V16H17V13H18V11H17V8H15V11H14V8H12M2 13C2.2 14.95 2.97 16.8 4.22 18.32L5.64 16.9C4.76 15.77 4.2 14.42 4 13H2M7.11 18.37L5.68 19.79C7.2 21.03 9.05 21.8 11 22V20C9.58 19.81 8.24 19.25 7.11 18.37Z"; -var mdiHubspot = "M17.1,8.6V6.2C17.7,5.9 18.2,5.3 18.2,4.6V4.5C18.2,3.5 17.4,2.7 16.4,2.7H16.3C15.3,2.7 14.5,3.5 14.5,4.5V4.6C14.5,5.3 14.9,5.9 15.6,6.2V8.6C14.7,8.7 13.8,9.1 13.1,9.7L6.5,4.6C6.8,3.5 6.1,2.3 5,2.1C3.9,1.9 2.8,2.4 2.5,3.5C2.2,4.6 2.9,5.8 4,6.1C4.5,6.2 5.1,6.2 5.6,5.9L12,10.9C10.8,12.7 10.8,15 12.1,16.8L10.1,18.8C9.9,18.8 9.8,18.7 9.6,18.7C8.7,18.7 7.9,19.5 7.9,20.4C7.9,21.3 8.7,22 9.6,22C10.5,22 11.3,21.2 11.3,20.3V20.3C11.3,20.1 11.3,20 11.2,19.8L13.1,17.9C15.4,19.6 18.7,19.2 20.4,16.9C22.1,14.6 21.7,11.3 19.4,9.6C18.8,9.1 18,8.7 17.1,8.6M16.3,16.4C14.8,16.4 13.6,15.2 13.6,13.7C13.6,12.2 14.8,11 16.3,11C17.8,11 19,12.2 19,13.7C19,15.2 17.8,16.4 16.3,16.4"; -var mdiHulu = "M19.5,12.8V22H14.7V13.9C14.7,13.2 14.1,12.6 13.4,12.6H10.5C9.8,12.6 9.2,13.2 9.2,13.9V22H4.5V2H9.3V8.4C9.6,8.3 9.9,8.2 10.2,8.2H15C17.5,8.2 19.5,10.3 19.5,12.8Z"; -var mdiHuman = "M21,9H15V22H13V16H11V22H9V9H3V7H21M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6C10.89,6 10,5.1 10,4C10,2.89 10.89,2 12,2Z"; -var mdiHumanBabyChangingTable = "M6.5 6.08C5.72 6.12 5 6.62 4.72 7.4L3 12.13V22H7V12.84L8.42 8.94L10.7 10H14V8H11.15L7.29 6.2C7.03 6.11 6.76 6.07 6.5 6.08M9 17H21V19H9M10 3.5A2 2 0 0 1 8 5.5A2 2 0 0 1 6 3.5A2 2 0 0 1 8 1.5A2 2 0 0 1 10 3.5M21 14.5A1.5 1.5 0 0 1 19.5 16A1.5 1.5 0 0 1 18 14.5A1.5 1.5 0 0 1 19.5 13A1.5 1.5 0 0 1 21 14.5M9 11V13H11V14C11 15.11 11.89 16 13 16H15C16.11 16 17 15.11 17 14V11H15V13H13V12A1 1 0 0 0 12 11Z"; -var mdiHumanCane = "M18 12.24V22H17.06V12.24C17.06 12.09 17 12 16.93 11.89C16.84 11.8 16.74 11.76 16.62 11.76C16.47 11.76 16.36 11.8 16.27 11.89C16.18 12 16.14 12.1 16.14 12.24V13.16H15.23V12.5C14.53 12.33 13.9 12.04 13.35 11.63C12.8 11.22 12.34 10.74 11.96 10.19L11.61 11.39C11.5 11.81 11.5 12.24 11.5 12.68L11.5 13L11.5 13.33L13.35 15.94V22H11.5V17.34L9.82 15L9.65 18.25L6.86 22L5.38 20.87L7.77 17.64V12.68C7.77 12.15 7.82 11.63 7.91 11.11L8.25 9.54L6.86 10.32V13.63H5V9.23L10 6.4C10.29 6.26 10.59 6.18 10.91 6.18C11.23 6.18 11.54 6.27 11.83 6.44C12.15 6.62 12.39 6.88 12.57 7.23L13.31 8.8C13.6 9.38 14.04 9.87 14.64 10.26C15.23 10.65 15.89 10.85 16.62 10.85C17 10.85 17.32 11 17.6 11.24C17.88 11.5 18 11.83 18 12.24M12 2C13.11 2 14 2.9 14 4C14 5.11 13.11 6 12 6C10.9 6 10 5.11 10 4C10 2.9 10.9 2 12 2Z"; -var mdiHumanCapacityDecrease = "M16 4C16 2.9 16.9 2 18 2S20 2.9 20 4 19.1 6 18 6 16 5.1 16 4M20.78 7.58C19.93 7.21 19 7 18 7C17.33 7 16.69 7.1 16.08 7.28C16.66 7.83 17 8.6 17 9.43V10H22V9.43C22 8.62 21.5 7.9 20.78 7.58M6 6C7.1 6 8 5.1 8 4S7.1 2 6 2 4 2.9 4 4 4.9 6 6 6M7.92 7.28C7.31 7.1 6.67 7 6 7C5 7 4.07 7.21 3.22 7.58C2.5 7.9 2 8.62 2 9.43V10H7V9.43C7 8.6 7.34 7.83 7.92 7.28M10 4C10 2.9 10.9 2 12 2S14 2.9 14 4 13.1 6 12 6 10 5.1 10 4M16 10H8V9.43C8 8.62 8.5 7.9 9.22 7.58C10.07 7.21 11 7 12 7C13 7 13.93 7.21 14.78 7.58C15.5 7.9 16 8.62 16 9.43V10M15 16C15 14.9 15.9 14 17 14S19 14.9 19 16 18.1 18 17 18 15 17.1 15 16M21 22H13V21.43C13 20.62 13.5 19.9 14.22 19.58C15.07 19.21 16 19 17 19C18 19 18.93 19.21 19.78 19.58C20.5 19.9 21 20.62 21 21.43V22M5 16C5 14.9 5.9 14 7 14S9 14.9 9 16 8.1 18 7 18 5 17.1 5 16M11 22H3V21.43C3 20.62 3.5 19.9 4.22 19.58C5.07 19.21 6 19 7 19C8 19 8.93 19.21 9.78 19.58C10.5 19.9 11 20.62 11 21.43V22M12.75 13V11H11.25V13H9L12 16L15 13H12.75Z"; -var mdiHumanCapacityIncrease = "M16 4C16 2.9 16.9 2 18 2C19.1 2 20 2.9 20 4C20 5.1 19.1 6 18 6C16.9 6 16 5.1 16 4M20.78 7.58C19.93 7.21 19 7 18 7C17.33 7 16.69 7.1 16.08 7.28C16.66 7.83 17 8.6 17 9.43V10H22V9.43C22 8.62 21.5 7.9 20.78 7.58M6 6C7.1 6 8 5.1 8 4C8 2.9 7.1 2 6 2C4.9 2 4 2.9 4 4C4 5.1 4.9 6 6 6M7.92 7.28C7.31 7.1 6.67 7 6 7C5 7 4.07 7.21 3.22 7.58C2.5 7.9 2 8.62 2 9.43V10H7V9.43C7 8.6 7.34 7.83 7.92 7.28M10 4C10 2.9 10.9 2 12 2C13.1 2 14 2.9 14 4C14 5.1 13.1 6 12 6C10.9 6 10 5.1 10 4M16 10H8V9.43C8 8.62 8.5 7.9 9.22 7.58C10.07 7.21 11 7 12 7C13 7 13.93 7.21 14.78 7.58C15.5 7.9 16 8.62 16 9.43M15 16C15 14.9 15.9 14 17 14C18.1 14 19 14.9 19 16C19 17.1 18.1 18 17 18C15.9 18 15 17.1 15 16M21 22H13V21.43C13 20.62 13.5 19.9 14.22 19.58C15.07 19.21 16 19 17 19C18 19 18.93 19.21 19.78 19.58C20.5 19.9 21 20.62 21 21.43M5 16C5 14.9 5.9 14 7 14C8.1 14 9 14.9 9 16C9 17.1 8.1 18 7 18C5.9 18 5 17.1 5 16M11 22H3V21.43C3 20.62 3.5 19.9 4.22 19.58C5.07 19.21 6 19 7 19C8 19 8.93 19.21 9.78 19.58C10.5 19.9 11 20.62 11 21.43M12.75 14V16H11.25V14H9L12 11L15 14Z"; -var mdiHumanChild = "M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M11,22H8V16H6V9H18V16H16V22H13V18H11V22Z"; -var mdiHumanEdit = "M19.07 14.88L21.12 16.93L15.06 23H13V20.94L19.07 14.88M21.04 13.13C21.18 13.13 21.31 13.19 21.42 13.3L22.7 14.58C22.92 14.79 22.92 15.14 22.7 15.35L21.7 16.35L19.65 14.3L20.65 13.3C20.76 13.19 20.9 13.13 21.04 13.13M21 9H15V16L13 18V16H11V22H9V9H3V7H21V9M12 2C13.1 2 14 2.9 14 4C14 5.1 13.1 6 12 6C10.9 6 10 5.1 10 4C10 2.9 10.9 2 12 2Z"; -var mdiHumanFemale = "M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,22V16H7.5L10.09,8.41C10.34,7.59 11.1,7 12,7C12.9,7 13.66,7.59 13.91,8.41L16.5,16H13.5V22H10.5Z"; -var mdiHumanFemaleBoy = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,22V16H3L5.6,8.4C5.9,7.6 6.6,7 7.5,7C8.4,7 9.2,7.6 9.4,8.4L12,16H9V22H6M14.5,12A2,2 0 0,1 16.5,10A2,2 0 0,1 18.5,12A2,2 0 0,1 16.5,14A2,2 0 0,1 14.5,12M13.5,15H19.5V19H18V22H15V19H13.5V15Z"; -var mdiHumanFemaleDance = "M17 17H15V23H13V17H10.88L9.34 18.93L11.71 21.29L10.29 22.71L7.93 20.34C7.58 20 7.38 19.53 7.35 19.04C7.32 18.55 7.47 18.06 7.78 17.68L8.32 17H7L9 13V10C8.38 10.47 7.88 11.07 7.53 11.76C7.18 12.46 7 13.22 7 14H5C5 12.14 5.74 10.36 7.05 9.05C8.36 7.74 10.14 7 12 7C13.33 7 14.6 6.47 15.54 5.54C16.47 4.6 17 3.33 17 2H19C19 3.32 18.62 4.62 17.91 5.73C17.2 6.85 16.2 7.74 15 8.31V13L17 17M14 4C14 4.4 13.88 4.78 13.66 5.11C13.44 5.44 13.13 5.7 12.77 5.85C12.4 6 12 6.04 11.61 5.96C11.22 5.88 10.87 5.69 10.59 5.41C10.31 5.13 10.12 4.78 10.04 4.39C9.96 4 10 3.6 10.15 3.24C10.3 2.87 10.56 2.56 10.89 2.34C11.22 2.12 11.6 2 12 2C12.53 2 13.04 2.21 13.41 2.59C13.79 2.96 14 3.47 14 4Z"; -var mdiHumanFemaleFemale = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,22V16H3L5.6,8.4C5.9,7.6 6.6,7 7.5,7C8.4,7 9.2,7.6 9.4,8.4L12,16L14.6,8.4C14.9,7.6 15.6,7 16.5,7C17.4,7 18.2,7.6 18.4,8.4L21,16H18V22H15V16H12L9,16V22H6M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2Z"; -var mdiHumanFemaleGirl = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,22V16H3L5.6,8.4C5.9,7.6 6.6,7 7.5,7C8.4,7 9.2,7.6 9.4,8.4L12,16H9V22H6M14.5,12A2,2 0 0,1 16.5,10A2,2 0 0,1 18.5,12A2,2 0 0,1 16.5,14A2,2 0 0,1 14.5,12M15,15H18L19.5,19H18V22H15V19H13.5L15,15Z"; -var mdiHumanGreeting = "M1.5,4V5.5C1.5,9.65 3.71,13.28 7,15.3V20H22V18C22,15.34 16.67,14 14,14C14,14 13.83,14 13.75,14C9,14 5,10 5,5.5V4M14,4A4,4 0 0,0 10,8A4,4 0 0,0 14,12A4,4 0 0,0 18,8A4,4 0 0,0 14,4Z"; -var mdiHumanGreetingProximity = "M11 14H9C9 9.03 13.03 5 18 5V7C14.13 7 11 10.13 11 14M18 11V9C15.24 9 13 11.24 13 14H15C15 12.34 16.34 11 18 11M7 4C7 2.89 6.11 2 5 2S3 2.89 3 4 3.89 6 5 6 7 5.11 7 4M11.45 4.5H9.45C9.21 5.92 8 7 6.5 7H3.5C2.67 7 2 7.67 2 8.5V11H8V8.74C9.86 8.15 11.25 6.5 11.45 4.5M19 17C20.11 17 21 16.11 21 15S20.11 13 19 13 17 13.89 17 15 17.89 17 19 17M20.5 18H17.5C16 18 14.79 16.92 14.55 15.5H12.55C12.75 17.5 14.14 19.15 16 19.74V22H22V19.5C22 18.67 21.33 18 20.5 18Z"; -var mdiHumanHandsdown = "M12,1C10.89,1 10,1.9 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3A2,2 0 0,0 12,1M10,6C9.73,6 9.5,6.11 9.31,6.28H9.3L4,11.59L5.42,13L9,9.41V22H11V15H13V22H15V9.41L18.58,13L20,11.59L14.7,6.28C14.5,6.11 14.27,6 14,6"; -var mdiHumanHandsup = "M5,1C5,3.7 6.56,6.16 9,7.32V22H11V15H13V22H15V7.31C17.44,6.16 19,3.7 19,1H17A5,5 0 0,1 12,6A5,5 0 0,1 7,1M12,1C10.89,1 10,1.89 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3C14,1.89 13.11,1 12,1Z"; -var mdiHumanMale = "M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,7H13.5A2,2 0 0,1 15.5,9V14.5H14V22H10V14.5H8.5V9A2,2 0 0,1 10.5,7Z"; -var mdiHumanMaleBoy = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M14.5,12A2,2 0 0,1 16.5,10A2,2 0 0,1 18.5,12A2,2 0 0,1 16.5,14A2,2 0 0,1 14.5,12M13.5,15H19.5V19H18V22H15V19H13.5V15Z"; -var mdiHumanMaleChild = "M7 2C5.9 2 5 2.9 5 4S5.9 6 7 6 9 5.11 9 4 8.11 2 7 2M5 7C3.89 7 3 7.89 3 9V15H5V22H10V11.6L12.53 16H14.97L16 14.66V22H20V17H21V14C21 12.89 20.11 12 19 12H16.5C15.9 12 15.37 12.26 15 12.68C14.67 13.1 14.32 13.56 14 14H13.69L10 7.66C9.84 7.38 9.22 7 8.5 7H5M18 8C17.17 8 16.5 8.67 16.5 9.5S17.17 11 18 11 19.5 10.33 19.5 9.5 18.83 8 18 8Z"; -var mdiHumanMaleFemale = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2M15,22V16H12L14.59,8.41C14.84,7.59 15.6,7 16.5,7C17.4,7 18.16,7.59 18.41,8.41L21,16H18V22H15Z"; -var mdiHumanMaleGirl = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M14.5,12A2,2 0 0,1 16.5,10A2,2 0 0,1 18.5,12A2,2 0 0,1 16.5,14A2,2 0 0,1 14.5,12M15,15H18L19.5,19H18V22H15V19H13.5L15,15Z"; -var mdiHumanMaleHeight = "M7,2C8.78,2 9.67,4.16 8.42,5.42C7.16,6.67 5,5.78 5,4A2,2 0 0,1 7,2M5.5,7H8.5A2,2 0 0,1 10.5,9V14.5H9V22H5V14.5H3.5V9A2,2 0 0,1 5.5,7M21,8H15V10H21M21,11H18V13H21M21,2H15V4H21M21,5H18V7H21M21,14H15V16H21M21,20H15V22H21M21,17H18V19H21"; -var mdiHumanMaleHeightVariant = "M7,2C8.78,2 9.67,4.16 8.42,5.42C7.16,6.67 5,5.78 5,4A2,2 0 0,1 7,2M5.5,7H8.5A2,2 0 0,1 10.5,9V14.5H9V22H5V14.5H3.5V9A2,2 0 0,1 5.5,7M19,8H21L18,4L15,8H17V16H15L18,20L21,16H19M22,2H14V4H22M22,20H14V22H22"; -var mdiHumanMaleMale = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2M15,7H18A2,2 0 0,1 20,9V14.5H18.5V22H14.5V14.5H13V9A2,2 0 0,1 15,7Z"; -var mdiHumanPregnant = "M9,4C9,2.89 9.89,2 11,2C12.11,2 13,2.89 13,4C13,5.11 12.11,6 11,6C9.89,6 9,5.11 9,4M16,13C16,11.66 15.17,10.5 14,10A3,3 0 0,0 11,7A3,3 0 0,0 8,10V17H10V22H13V17H16V13Z"; -var mdiHumanQueue = "M5 6C3.9 6 3 6.9 3 8S3.9 10 5 10 7 9.11 7 8 6.11 6 5 6M12 4C10.9 4 10 4.89 10 6S10.9 8 12 8 14 7.11 14 6 13.11 4 12 4M19 2C17.9 2 17 2.9 17 4S17.9 6 19 6 21 5.11 21 4 20.11 2 19 2M3.5 11C2.67 11 2 11.67 2 12.5V17H3V22H7V17H8V12.5C8 11.67 7.33 11 6.5 11H3.5M10.5 9C9.67 9 9 9.67 9 10.5V15H10V20H14V15H15V10.5C15 9.67 14.33 9 13.5 9H10.5M17.5 7C16.67 7 16 7.67 16 8.5V13H17V18H21V13H22V8.5C22 7.67 21.33 7 20.5 7H17.5Z"; -var mdiHumanScooter = "M16.5 2.25C17.33 2.25 18 2.92 18 3.75C18 4.58 17.33 5.25 16.5 5.25C15.67 5.25 15 4.58 15 3.75C15 2.92 15.67 2.25 16.5 2.25M20 18C21.11 18 22 18.9 22 20C22 21.11 21.11 22 20 22C19.26 22 18.61 21.6 18.27 21H8.73C8.39 21.6 7.74 22 7 22C5.9 22 5 21.11 5 20C5 18.9 5.9 18 7 18C7.74 18 8.39 18.4 8.73 19H13V13.5L9.73 11.23L6.77 14C6.36 14.37 5.73 14.34 5.35 13.94L2.28 10.65C1.91 10.24 1.93 9.61 2.33 9.23C2.74 8.86 3.37 8.88 3.74 9.28L6.13 11.84L13.26 5.2L13.3 5.18C13.72 4.82 14.35 4.88 14.71 5.3L16.97 8H20C20.55 8 21 8.45 21 9C21 9.55 20.55 10 20 10H16.5C16.15 10 15.85 9.82 15.67 9.56L14.17 7.77L11.64 10.13L14.57 12.18H14.57C14.83 12.36 15 12.66 15 13V19H15.61C16.04 17.13 17.63 15.7 19.58 15.5L18.81 11H20.31L21.39 17.34C20.97 17.12 20.5 17 20 17C18.69 17 17.58 17.84 17.17 19H18.27C18.61 18.4 19.26 18 20 18Z"; -var mdiHumanWheelchair = "M8.5 4A2 2 0 0 1 6.5 6A2 2 0 0 1 4.5 4A2 2 0 0 1 6.5 2A2 2 0 0 1 8.5 4M5 7C3.89 7 3 7.89 3 9V15H5V22H8.61A7 7 0 0 1 6.5 17A7 7 0 0 1 10 10.95V9C10 7.89 9.11 7 8 7M13 8V16H18.5L21.2 19.6L22.8 18.4L19.5 14H15V8M12 12.23A5 5 0 0 0 8.5 17A5 5 0 0 0 13.5 22A5 5 0 0 0 18.5 17H16.5A3 3 0 0 1 13.5 20A3 3 0 0 1 10.5 17A3 3 0 0 1 12 14.41Z"; -var mdiHumbleBundle = "M16.91,18.12C14.09,18.12 18.43,2.13 18.43,2.13H15.53C15.53,2.13 14.34,5.89 13.55,10.07H11.05C11.11,9.21 11.15,8.34 11.13,7.5C11,0.59 7,1.87 5.18,3.45C3.47,4.95 2.03,7.8 2,10C2.27,10 3.35,10 3.35,10C3.35,10 4.25,5.88 7.07,5.88C9.89,5.88 5.54,21.87 5.54,21.87H8.45C8.45,21.87 9.95,17.59 10.7,12.81L13.09,12.8C12.95,14.04 12.91,15.4 12.93,16.67C13.04,23.56 17.06,22.08 18.86,20.5C20.67,18.92 22,15.58 22,14H20.61C20.62,14.12 19.73,18.12 16.91,18.12V18.12Z"; -var mdiHvac = "M8.58 14C8.3 13.55 8.11 13.03 8.06 12.5H15.94C15.89 13.03 15.7 13.55 15.47 14H8.58M12 16C10.97 16 10.08 15.61 9.38 15H14.63C13.92 15.61 13.03 16 12 16M12 8C13.03 8 13.92 8.39 14.63 9H9.38C10.08 8.39 10.97 8 12 8M8.58 10H15.42C15.7 10.45 15.89 10.97 15.94 11.5H8.06C8.11 10.97 8.3 10.45 8.58 10M3 3V21H21V3H3M12 18C8.67 18 6 15.33 6 12S8.67 6 12 6 18 8.67 18 12 15.33 18 12 18Z"; -var mdiHvacOff = "M22.11 21.46L2.39 1.73L1.11 3L3 4.89V21H19.11L20.84 22.73L22.11 21.46M12 18C8.67 18 6 15.33 6 12C6 10.82 6.34 9.73 6.92 8.81L8.43 10.32C8.24 10.69 8.1 11.09 8.06 11.5H9.61L10.61 12.5H8.06C8.11 13.03 8.3 13.55 8.58 14H12.11L13.11 15H9.38C10.08 15.61 10.97 16 12 16C12.63 16 13.19 15.84 13.7 15.59L15.19 17.08C14.27 17.66 13.18 18 12 18M12 8C13.03 8 13.92 8.39 14.63 9H12.2L11.27 8.07C11.5 8.03 11.75 8 12 8M9.67 6.47L6.2 3H21V17.8L17.53 14.33C17.83 13.62 18 12.83 18 12C18 8.67 15.33 6 12 6C11.17 6 10.38 6.17 9.67 6.47M15.94 11.5H14.7L13.2 10H15.42C15.7 10.45 15.89 10.97 15.94 11.5Z"; -var mdiHydraulicOilLevel = "M15 18C13.34 18 12 16.66 12 15C12 13 15 9.63 15 9.63S18 13 18 15C18 16.66 16.66 18 15 18M20 4V20H10V4H8V20C8 21.11 8.89 22 10 22H20C21.11 22 22 21.11 22 20V4H20M2 19L7 14L2 9V19M16 6V2H14V6H11V8H19V6H16Z"; -var mdiHydraulicOilTemperature = "M9 18C7.34 18 6 16.66 6 15C6 13 9 9.63 9 9.63S12 13 12 15C12 16.66 10.66 18 9 18M14 4V20H4V4H2V20C2 21.11 2.89 22 4 22H14C15.11 22 16 21.11 16 20V4H14M10 6V2H8V6H5V8H13V6H10M21 17.5V5.5C21 4.67 20.33 4 19.5 4S18 4.67 18 5.5V17.5C17.37 17.97 17 18.71 17 19.5C17 20.88 18.12 22 19.5 22S22 20.88 22 19.5C22 18.71 21.63 18 21 17.5M20 13H19V6H20V13Z"; -var mdiHydroPower = "M17.12 3.55A2 2 0 0 0 15.2 4.95L14.4 7.5A3 3 0 0 0 13.33 7.74L11.5 5.77L10.17 4.29A2 2 0 0 0 10.05 7.12L11.86 9.09A3 3 0 0 0 11.64 9.6A3 3 0 0 0 11.53 10.13L8.92 10.71L6.96 11.15A2 2 0 0 0 9.35 12.67L11.96 12.08A3 3 0 0 0 12.7 12.89L11.9 15.44L11.3 17.35A2 2 0 0 0 13.8 16.04L14.61 13.5A3 3 0 0 0 15.68 13.26L17.5 15.23L18.83 16.7A2 2 0 0 0 18.96 13.88L17.15 11.91A3 3 0 0 0 17.36 11.4A3 3 0 0 0 17.5 10.86L20.09 10.28L22.04 9.85A2 2 0 0 0 19.66 8.33L17.05 8.91A3 3 0 0 0 16.31 8.11L17.11 5.55L17.71 3.65A2 2 0 0 0 17.12 3.55M14.56 9A1.5 1.5 0 0 1 14.95 9.07A1.5 1.5 0 0 1 15.93 10.95A1.5 1.5 0 0 1 14.05 11.93A1.5 1.5 0 0 1 13.07 10.05A1.5 1.5 0 0 1 14.55 9M8 13.67C6.78 14.53 5.39 15 4 15H2V17H4C5.37 17 6.74 16.65 8 16C8.77 16.4 9.58 16.66 10.41 16.81L10.94 15.14L11.03 14.88C9.97 14.73 8.93 14.32 8 13.67M20.45 15C20.5 15.7 20.33 16.41 19.91 17C19.93 17 19.97 17 20 17H22V15H20.45M8 17.67C6.78 18.53 5.39 19 4 19H2V21H4C5.37 21 6.74 20.65 8 20C10.5 21.3 13.5 21.3 16 20C17.26 20.65 18.62 21 20 21H22V19H20C18.61 19 17.22 18.53 16 17.67C13.56 19.38 10.44 19.38 8 17.67Z"; -var mdiIceCream = "M17.5 6.05C17.25 3.22 14.89 1 12 1S6.75 3.22 6.5 6.05C5.09 6.28 4 7.5 4 9C4 10.66 5.34 12 7 12L12 22L17 12C18.66 12 20 10.66 20 9C20 7.5 18.91 6.28 17.5 6.05M12 17.53L8.89 11.31C8.95 11.26 9 11.21 9.08 11.16C9.93 11.69 10.93 12 12 12S14.07 11.69 14.92 11.16C15 11.21 15.05 11.26 15.11 11.31L12 17.53Z"; -var mdiIceCreamOff = "M22.11 21.46L2.39 1.73L1.11 3L4.95 6.84C4.37 7.38 4 8.14 4 9C4 10.66 5.34 12 7 12L12 22L14.7 16.59L20.84 22.73L22.11 21.46M12 17.53L8.89 11.31C8.95 11.26 9 11.21 9.08 11.16C9.21 11.24 9.35 11.3 9.5 11.37L13.21 15.1L12 17.53M7.15 3.95C8.07 2.2 9.89 1 12 1C14.89 1 17.25 3.22 17.5 6.05C18.91 6.28 20 7.5 20 9C20 10.66 18.66 12 17 12L16.4 13.2L7.15 3.95Z"; -var mdiIcePop = "M18.15 14.96L9.95 18.65L5.85 9.65C7.21 9.13 8.12 7.82 8.15 6.36C8.14 5 7.36 3.76 6.15 3.15C6.54 2.8 7 2.5 7.45 2.25C9.71 1.25 12.37 2.23 13.45 4.46M13.15 18.36L14.75 21.86L17.45 20.65L15.85 17.15"; -var mdiIdCard = "M4 4C2.89 4 2 4.89 2 6V18C2 19.11 2.89 20 4 20H20C21.11 20 22 19.11 22 18V6C22 4.89 21.11 4 20 4H4M4 6H20V10H4V6M4 12H8V14H4V12M10 12H20V14H10V12M4 16H14V18H4V16M16 16H20V18H16V16Z"; -var mdiIdentifier = "M10 7V9H9V15H10V17H6V15H7V9H6V7H10M16 7C17.11 7 18 7.9 18 9V15C18 16.11 17.11 17 16 17H12V7M16 9H14V15H16V9Z"; -var mdiIdeogramCjk = "M11 4V6H4V10H6V8H18V10H20V6H13V4M8 10V12H13.59L11.59 14H4V16H11V18H10V20H13V16H20V14H14.21L16 12.21V10Z"; -var mdiIdeogramCjkVariant = "M11 4V6H4V8H15.36C15.13 8.87 14.63 9.77 13.88 10.69C13.35 11.35 12.71 12 12 12.67C11.29 12 10.65 11.35 10.12 10.69C9.65 10.12 9.3 9.55 9.03 9H6.85C7.21 10.05 7.82 11.03 8.56 11.95C9.13 12.66 9.79 13.34 10.5 14L5.36 18.23L6.64 19.77L12 15.34L17.36 19.77L18.64 18.23L13.5 14C14.21 13.34 14.87 12.66 15.44 11.95C16.41 10.74 17.16 9.43 17.4 8H20V6H13V4Z"; -var mdiIframe = "M21,2H3A2,2 0 0,0 1,4V20A2,2 0 0,0 3,22H21A2,2 0 0,0 23,20V4A2,2 0 0,0 21,2M11,17.5L9.5,19L5,14.5L9.5,10L11,11.5L8,14.5L11,17.5M14.5,19L13,17.5L16,14.5L13,11.5L14.5,10L19,14.5L14.5,19M21,7H3V4H21V7Z"; -var mdiIframeArray = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M10 11H8V18H10V20H6V9H10V11M18 20H14V18H16V11H14V9H18V20M21 7H3V4H21V7Z"; -var mdiIframeArrayOutline = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M21 20H3V6H21V20M6 8V18H10V16H8V10H10V8H6M16 16H14V18H18V8H14V10H16V16"; -var mdiIframeBraces = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M11 11H9V12.5C9 13.6 8.1 14.5 7 14.5C8.1 14.5 9 15.4 9 16.5V18H11V20H9C7.9 20 7 19.1 7 18V17.5C7 16.4 6.1 15.5 5 15.5V13.5C6.1 13.5 7 12.6 7 11.5V11C7 9.9 7.9 9 9 9H11V11M19 15.5C17.9 15.5 17 16.4 17 17.5V18C17 19.1 16.1 20 15 20H13V18H15V16.5C15 15.4 15.9 14.5 17 14.5C15.9 14.5 15 13.6 15 12.5V11H13V9H15C16.1 9 17 9.9 17 11V11.5C17 12.6 17.9 13.5 19 13.5V15.5M21 7H3V4H21V7Z"; -var mdiIframeBracesOutline = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M21 20H3V6H21V20M9 8C7.9 8 7 8.9 7 10C7 11.1 6.1 12 5 12V14C6.1 14 7 14.9 7 16C7 17.1 7.9 18 9 18H11V16H9V15C9 13.9 8.1 13 7 13C8.1 13 9 12.1 9 11V10H11V8M15 8C16.1 8 17 8.9 17 10C17 11.1 17.9 12 19 12V14C17.9 14 17 14.9 17 16C17 17.1 16.1 18 15 18H13V16H15V15C15 13.9 15.9 13 17 13C15.9 13 15 12.1 15 11V10H13V8H15Z"; -var mdiIframeOutline = "M9.5,8.5L11,10L8,13L11,16L9.5,17.5L5,13L9.5,8.5M14.5,17.5L13,16L16,13L13,10L14.5,8.5L19,13L14.5,17.5M21,2H3A2,2 0 0,0 1,4V20A2,2 0 0,0 3,22H21A2,2 0 0,0 23,20V4A2,2 0 0,0 21,2M21,20H3V6H21V20Z"; -var mdiIframeParentheses = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M10 19.4L8.4 20C6.9 18.6 6 16.6 6 14.5S6.9 10.4 8.4 9L10 9.6C8.7 10.7 8 12.6 8 14.5S8.7 18.2 10 19.4M15.6 20L14 19.4C15.3 18.2 16 16.4 16 14.5S15.3 10.8 14 9.6L15.6 9C17.1 10.4 18 12.4 18 14.5C18 16.6 17.1 18.6 15.6 20M21 7H3V4H21V7Z"; -var mdiIframeParenthesesOutline = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M21 20H3V6H21V20M15.6 8C17.1 9.3 18 11.1 18 13C18 14.9 17.1 16.7 15.6 18L14 17.4C15.3 16.4 16 14.7 16 13S15.3 9.6 14 8.6L15.6 8M8.4 8L10 8.6C8.7 9.6 8 11.3 8 13S8.7 16.4 10 17.4L8.4 18C6.9 16.7 6 14.9 6 13S6.9 9.3 8.4 8Z"; -var mdiIframeVariable = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M7.4 20C5.9 18.6 5 16.6 5 14.5S5.9 10.4 7.4 9L9 9.6C7.7 10.7 7 12.6 7 14.5S7.7 18.2 9 19.4L7.4 20M12.7 18L11.9 16L10.5 18H9L11.3 14.9L10 12H11.3L12.1 14L13.5 12H15L12.8 15L14.1 18H12.7M16.6 20L15 19.4C16.3 18.2 17 16.4 17 14.5S16.3 10.8 15 9.6L16.6 9C18.1 10.4 19 12.4 19 14.5C19 16.6 18.1 18.6 16.6 20M21 7H3V4H21V7Z"; -var mdiIframeVariableOutline = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M21 20H3V6H21V20M16.6 8C18.1 9.3 19 11.1 19 13C19 14.9 18.1 16.7 16.6 18L15 17.4C16.3 16.4 17 14.7 17 13S16.3 9.6 15 8.6L16.6 8M7.4 8L9 8.6C7.7 9.6 7 11.3 7 13S7.7 16.4 9 17.4L7.4 18C5.9 16.7 5 14.9 5 13S5.9 9.3 7.4 8M12.1 12L13.5 10H15L12.8 13L14.1 16H12.8L12 14L10.6 16H9L11.3 12.9L10 10H11.3L12.1 12Z"; -var mdiImage = "M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z"; -var mdiImageAlbum = "M6,19L9,15.14L11.14,17.72L14.14,13.86L18,19H6M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z"; -var mdiImageArea = "M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M5,16H19L14.5,10L11,14.5L8.5,11.5L5,16Z"; -var mdiImageAreaClose = "M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M5,14H19L14.5,8L11,12.5L8.5,9.5L5,14Z"; -var mdiImageAutoAdjust = "M19 10V19H5V5H14V3H5C3.92 3 3 3.9 3 5V19C3 20.1 3.92 21 5 21H19C20.12 21 21 20.1 21 19V10H19M17 10L17.94 7.94L20 7L17.94 6.06L17 4L16.06 6.06L14 7L16.06 7.94L17 10M13.25 10.75L12 8L10.75 10.75L8 12L10.75 13.25L12 16L13.25 13.25L16 12L13.25 10.75Z"; -var mdiImageBroken = "M19,3A2,2 0 0,1 21,5V11H19V13H19L17,13V15H15V17H13V19H11V21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19M21,15V19A2,2 0 0,1 19,21H19L15,21V19H17V17H19V15H21M19,8.5A0.5,0.5 0 0,0 18.5,8H5.5A0.5,0.5 0 0,0 5,8.5V15.5A0.5,0.5 0 0,0 5.5,16H11V15H13V13H15V11H17V9H19V8.5Z"; -var mdiImageBrokenVariant = "M21,5V11.59L18,8.58L14,12.59L10,8.59L6,12.59L3,9.58V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M18,11.42L21,14.43V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V12.42L6,15.41L10,11.41L14,15.41"; -var mdiImageEdit = "M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z"; -var mdiImageEditOutline = "M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M11.21 15.83L9.25 13.47L6.5 17H13.12L15.66 14.55L13.96 12.29L11.21 15.83M11 19.9V19.05L11.05 19H5V5H19V11.31L21 9.38V5C21 3.9 20.11 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H11V19.9Z"; -var mdiImageFilterBlackWhite = "M19,19L12,11V19H5L12,11V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiImageFilterCenterFocus = "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z"; -var mdiImageFilterCenterFocusStrong = "M12 8C8.44 8 6.65 12.31 9.17 14.83C11.69 17.35 16 15.56 16 12C16 9.79 14.21 8 12 8M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19"; -var mdiImageFilterCenterFocusStrongOutline = "M17 12C17 7.55 11.62 5.31 8.46 8.46C5.31 11.61 7.55 17 12 17C14.76 17 17 14.76 17 12M12 15C9.33 15 8 11.77 9.88 9.88C11.77 8 15 9.33 15 12C15 13.66 13.66 15 12 15M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19"; -var mdiImageFilterCenterFocusWeak = "M5,15H3V19A2,2 0 0,0 5,21H9V19H5M5,5H9V3H5A2,2 0 0,0 3,5V9H5M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14Z"; -var mdiImageFilterDrama = "M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10A4,4 0 0,1 10,14H12C12,11.24 10.14,8.92 7.6,8.22C8.61,6.88 10.2,6 12,6C15.03,6 17.5,8.47 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.04C18.67,6.59 15.64,4 12,4C9.11,4 6.61,5.64 5.36,8.04C2.35,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.04Z"; -var mdiImageFilterFrames = "M18,8H6V18H18M20,20H4V6H8.5L12.04,2.5L15.5,6H20M20,4H16L12,0L8,4H4A2,2 0 0,0 2,6V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V6A2,2 0 0,0 20,4Z"; -var mdiImageFilterHdr = "M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z"; -var mdiImageFilterNone = "M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; -var mdiImageFilterTiltShift = "M5.68,19.74C7.16,20.95 9,21.75 11,21.95V19.93C9.54,19.75 8.21,19.17 7.1,18.31M13,19.93V21.95C15,21.75 16.84,20.95 18.32,19.74L16.89,18.31C15.79,19.17 14.46,19.75 13,19.93M18.31,16.9L19.74,18.33C20.95,16.85 21.75,15 21.95,13H19.93C19.75,14.46 19.17,15.79 18.31,16.9M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12M4.07,13H2.05C2.25,15 3.05,16.84 4.26,18.32L5.69,16.89C4.83,15.79 4.25,14.46 4.07,13M5.69,7.1L4.26,5.68C3.05,7.16 2.25,9 2.05,11H4.07C4.25,9.54 4.83,8.21 5.69,7.1M19.93,11H21.95C21.75,9 20.95,7.16 19.74,5.68L18.31,7.1C19.17,8.21 19.75,9.54 19.93,11M18.32,4.26C16.84,3.05 15,2.25 13,2.05V4.07C14.46,4.25 15.79,4.83 16.9,5.69M11,4.07V2.05C9,2.25 7.16,3.05 5.68,4.26L7.1,5.69C8.21,4.83 9.54,4.25 11,4.07Z"; -var mdiImageFilterVintage = "M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M18.7,12.4C18.42,12.24 18.13,12.11 17.84,12C18.13,11.89 18.42,11.76 18.7,11.6C20.62,10.5 21.69,8.5 21.7,6.41C19.91,5.38 17.63,5.3 15.7,6.41C15.42,6.57 15.16,6.76 14.92,6.95C14.97,6.64 15,6.32 15,6C15,3.78 13.79,1.85 12,0.81C10.21,1.85 9,3.78 9,6C9,6.32 9.03,6.64 9.08,6.95C8.84,6.75 8.58,6.56 8.3,6.4C6.38,5.29 4.1,5.37 2.3,6.4C2.3,8.47 3.37,10.5 5.3,11.59C5.58,11.75 5.87,11.88 6.16,12C5.87,12.1 5.58,12.23 5.3,12.39C3.38,13.5 2.31,15.5 2.3,17.58C4.09,18.61 6.37,18.69 8.3,17.58C8.58,17.42 8.84,17.23 9.08,17.04C9.03,17.36 9,17.68 9,18C9,20.22 10.21,22.15 12,23.19C13.79,22.15 15,20.22 15,18C15,17.68 14.97,17.36 14.92,17.05C15.16,17.25 15.42,17.43 15.7,17.59C17.62,18.7 19.9,18.62 21.7,17.59C21.69,15.5 20.62,13.5 18.7,12.4Z"; -var mdiImageFrame = "M10,14.29L6.5,19H17.46L14.75,15.46L12.78,17.8L10,14.29M5,21V7H18.96V21H5M12,2.4L14.61,5.03H9.37L12,2.4M5,5.03C4.5,5.03 4,5.22 3.61,5.61C3.2,6 3,6.46 3,7V21C3,21.5 3.2,22 3.61,22.39C4,22.8 4.5,23 5,23H18.96C19.5,23 19.96,22.8 20.37,22.39C20.77,22 21,21.5 21,21V7C21,6.46 20.77,6 20.37,5.61C19.96,5.22 19.5,5.03 18.96,5.03H16L12,1L7.96,5.03H5Z"; -var mdiImageMinus = "M5 3C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H14.09C14.03 20.67 14 20.34 14 20C14 19.32 14.12 18.64 14.35 18H5L8.5 13.5L11 16.5L14.5 12L16.73 14.97C17.7 14.34 18.84 14 20 14C20.34 14 20.67 14.03 21 14.09V5C21 3.89 20.1 3 19 3H5M16 19V21H24V19H16Z"; -var mdiImageMove = "M15,3H19V0L24,5L19,10V7H15V3M21,11.94V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H12.06C12,3.33 12,3.67 12,4A8,8 0 0,0 20,12C20.33,12 20.67,12 21,11.94M19,18L14.5,12L11,16.5L8.5,13.5L5,18H19Z"; -var mdiImageMultiple = "M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6"; -var mdiImageMultipleOutline = "M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z"; -var mdiImageOff = "M21 17.2L6.8 3H19C20.1 3 21 3.9 21 5V17.2M20.7 22L19.7 21H5C3.9 21 3 20.1 3 19V4.3L2 3.3L3.3 2L22 20.7L20.7 22M16.8 18L12.9 14.1L11 16.5L8.5 13.5L5 18H16.8Z"; -var mdiImageOffOutline = "M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8"; -var mdiImageOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13.96,12.29L11.21,15.83L9.25,13.47L6.5,17H17.5L13.96,12.29Z"; -var mdiImagePlus = "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H14.09C14.03,20.67 14,20.34 14,20C14,19.32 14.12,18.64 14.35,18H5L8.5,13.5L11,16.5L14.5,12L16.73,14.97C17.7,14.34 18.84,14 20,14C20.34,14 20.67,14.03 21,14.09V5C21,3.89 20.1,3 19,3H5M19,16V19H16V21H19V24H21V21H24V19H21V16H19Z"; -var mdiImageRemove = "M5 3C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H14.09C14.03 20.67 14 20.34 14 20C14 19.32 14.12 18.64 14.35 18H5L8.5 13.5L11 16.5L14.5 12L16.73 14.97C17.7 14.34 18.84 14 20 14C20.34 14 20.67 14.03 21 14.09V5C21 3.89 20.1 3 19 3H5M16.47 17.88L18.59 20L16.47 22.12L17.88 23.54L20 21.41L22.12 23.54L23.54 22.12L21.41 20L23.54 17.88L22.12 16.46L20 18.59L17.88 16.47L16.46 17.88Z"; -var mdiImageSearch = "M15.5,2C18,2 20,4 20,6.5C20,7.38 19.75,8.21 19.31,8.9L22.39,12L21,13.39L17.88,10.32C17.19,10.75 16.37,11 15.5,11C13,11 11,9 11,6.5C11,4 13,2 15.5,2M15.5,4A2.5,2.5 0 0,0 13,6.5A2.5,2.5 0 0,0 15.5,9A2.5,2.5 0 0,0 18,6.5A2.5,2.5 0 0,0 15.5,4M7.5,14.5L4,19H18L13.5,13L10,17.5L7.5,14.5M20,20A2,2 0 0,1 18,22H4A2,2 0 0,1 2,20V6A2,2 0 0,1 4,4H9.5C9.18,4.77 9,5.61 9,6.5A6.5,6.5 0 0,0 15.5,13C16.18,13 16.84,12.89 17.46,12.7L20,15.24V20Z"; -var mdiImageSearchOutline = "M15.5,9C16.2,9 16.79,8.76 17.27,8.27C17.76,7.79 18,7.2 18,6.5C18,5.83 17.76,5.23 17.27,4.73C16.79,4.23 16.2,4 15.5,4C14.83,4 14.23,4.23 13.73,4.73C13.23,5.23 13,5.83 13,6.5C13,7.2 13.23,7.79 13.73,8.27C14.23,8.76 14.83,9 15.5,9M19.31,8.91L22.41,12L21,13.41L17.86,10.31C17.08,10.78 16.28,11 15.47,11C14.22,11 13.16,10.58 12.3,9.7C11.45,8.83 11,7.77 11,6.5C11,5.27 11.45,4.2 12.33,3.33C13.2,2.45 14.27,2 15.5,2C16.77,2 17.83,2.45 18.7,3.33C19.58,4.2 20,5.27 20,6.5C20,7.33 19.78,8.13 19.31,8.91M16.5,18H5.5L8.25,14.5L10.22,16.83L12.94,13.31L16.5,18M18,13L20,15V20C20,20.55 19.81,21 19.41,21.4C19,21.79 18.53,22 18,22H4C3.45,22 3,21.79 2.6,21.4C2.21,21 2,20.55 2,20V6C2,5.47 2.21,5 2.6,4.59C3,4.19 3.45,4 4,4H9.5C9.2,4.64 9.03,5.31 9,6H4V20H18V13Z"; -var mdiImageSizeSelectActual = "M21,3H3C2,3 1,4 1,5V19A2,2 0 0,0 3,21H21C22,21 23,20 23,19V5C23,4 22,3 21,3M5,17L8.5,12.5L11,15.5L14.5,11L19,17H5Z"; -var mdiImageSizeSelectLarge = "M21,15H23V17H21V15M21,11H23V13H21V11M23,19H21V21C22,21 23,20 23,19M13,3H15V5H13V3M21,7H23V9H21V7M21,3V5H23C23,4 22,3 21,3M1,7H3V9H1V7M17,3H19V5H17V3M17,19H19V21H17V19M3,3C2,3 1,4 1,5H3V3M9,3H11V5H9V3M5,3H7V5H5V3M1,11V19A2,2 0 0,0 3,21H15V11H1M3,19L5.5,15.79L7.29,17.94L9.79,14.72L13,19H3Z"; -var mdiImageSizeSelectSmall = "M23,15H21V17H23V15M23,11H21V13H23V11M23,19H21V21C22,21 23,20 23,19M15,3H13V5H15V3M23,7H21V9H23V7M21,3V5H23C23,4 22,3 21,3M3,21H11V15H1V19A2,2 0 0,0 3,21M3,7H1V9H3V7M15,19H13V21H15V19M19,3H17V5H19V3M19,19H17V21H19V19M3,3C2,3 1,4 1,5H3V3M3,11H1V13H3V11M11,3H9V5H11V3M7,3H5V5H7V3Z"; -var mdiImageText = "M22 13H14V11H22V13M22 7H14V9H22V7M14 17H22V15H14V17M12 9V15C12 16.1 11.1 17 10 17H4C2.9 17 2 16.1 2 15V9C2 7.9 2.9 7 4 7H10C11.1 7 12 7.9 12 9M10.5 15L8.3 12L6.5 14.3L5.3 12.8L3.5 15H10.5Z"; -var mdiImport = "M14,12L10,8V11H2V13H10V16M20,18V6C20,4.89 19.1,4 18,4H6A2,2 0 0,0 4,6V9H6V6H18V18H6V15H4V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18Z"; -var mdiInbox = "M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiInboxArrowDown = "M16,10H14V7H10V10H8L12,14M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiInboxArrowDownOutline = "M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19M16 10H14V7H10V10H8L12 14"; -var mdiInboxArrowUp = "M14,14H10V11H8L12,7L16,11H14V14M16,11M5,15V5H19V15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3"; -var mdiInboxArrowUpOutline = "M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19M8 11H10V14H14V11H16L12 7"; -var mdiInboxFull = "M19 15V5H5V15H9C9 16.66 10.34 18 12 18C13.66 18 15 16.66 15 15H19M19 3C20.1 3 21 3.9 21 5V19C21 20.1 20.1 21 19 21H5C3.89 21 3 20.1 3 19L3 5C3 3.9 3.89 3 5 3H19M7 13V11H17V13H7M7 9V7H17V9H7Z"; -var mdiInboxFullOutline = "M19 3C20.1 3 21 3.9 21 5V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19M5 19H9.4C8.79 18.47 8.35 17.78 8.13 17H5V19M19 19V17H15.87C15.65 17.78 15.21 18.47 14.6 19H19M19 15V5H5V15H10V16C10 18.67 14 18.67 14 16V15H19M7 7H17V9H7V7M17 11V13H7V11H17Z"; -var mdiInboxMultiple = "M19,8V5H5V8H9A3,3 0 0,0 12,11A3,3 0 0,0 15,8H19M19,3A2,2 0 0,1 21,5V12A2,2 0 0,1 19,14H5A2,2 0 0,1 3,12V5A2,2 0 0,1 5,3H19M3,15H9A3,3 0 0,0 12,18A3,3 0 0,0 15,15H21V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V15Z"; -var mdiInboxMultipleOutline = "M19,3A2,2 0 0,1 21,5V12A2,2 0 0,1 19,14H5A2,2 0 0,1 3,12V5A2,2 0 0,1 5,3H19M5,10V12H9.4C8.8,11.47 8.34,10.78 8.13,10H5M19,12V10H15.87C15.66,10.78 15.2,11.47 14.6,12H19M19,8V5H5V8H10V9C10,10.07 10.93,11 12,11C13.07,11 14,10.07 14,9V8H19M21,19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V15H10V16C10,17.07 10.93,18 12,18C13.07,18 14,17.07 14,16V15H21V19M5,17V19H9.4C8.8,18.47 8.34,17.78 8.13,17H5M19,19V17H15.87C15.66,17.78 15.2,18.47 14.6,19H19Z"; -var mdiInboxOutline = "M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19Z"; -var mdiInboxRemove = "M19 15H15C15 16.7 13.7 18 12 18S9 16.7 9 15H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M14.1 6.5L15.5 7.9L13.4 10L15.5 12.1L14.1 13.5L12 11.4L9.9 13.5L8.5 12.1L10.6 10L8.5 7.9L9.9 6.5L12 8.6L14.1 6.5Z"; -var mdiInboxRemoveOutline = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M5 19V17H8.1C8.3 17.8 8.8 18.5 9.4 19M19 19H14.6C15.2 18.5 15.7 17.8 15.9 17H19M19 15H14V16C14 17.1 13.1 18 12 18S10 17.1 10 16V15H5V5H19V15M14.1 6.5L15.5 7.9L13.4 10L15.5 12.1L14.1 13.5L12 11.4L9.9 13.5L8.5 12.1L10.6 10L8.5 7.9L9.9 6.5L12 8.6L14.1 6.5Z"; -var mdiIncognito = "M17.06 13C15.2 13 13.64 14.33 13.24 16.1C12.29 15.69 11.42 15.8 10.76 16.09C10.35 14.31 8.79 13 6.94 13C4.77 13 3 14.79 3 17C3 19.21 4.77 21 6.94 21C9 21 10.68 19.38 10.84 17.32C11.18 17.08 12.07 16.63 13.16 17.34C13.34 19.39 15 21 17.06 21C19.23 21 21 19.21 21 17C21 14.79 19.23 13 17.06 13M6.94 19.86C5.38 19.86 4.13 18.58 4.13 17S5.39 14.14 6.94 14.14C8.5 14.14 9.75 15.42 9.75 17S8.5 19.86 6.94 19.86M17.06 19.86C15.5 19.86 14.25 18.58 14.25 17S15.5 14.14 17.06 14.14C18.62 14.14 19.88 15.42 19.88 17S18.61 19.86 17.06 19.86M22 10.5H2V12H22V10.5M15.53 2.63C15.31 2.14 14.75 1.88 14.22 2.05L12 2.79L9.77 2.05L9.72 2.04C9.19 1.89 8.63 2.17 8.43 2.68L6 9H18L15.56 2.68L15.53 2.63Z"; -var mdiIncognitoCircle = "M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M14.92 12.81C13.84 12.81 12.95 13.56 12.71 14.56C12.17 14.33 11.66 14.39 11.29 14.55C11.05 13.55 10.15 12.81 9.08 12.81C7.83 12.81 6.82 13.82 6.82 15.07C6.82 16.32 7.83 17.33 9.08 17.33C10.28 17.33 11.24 16.42 11.33 15.25C11.53 15.12 12.04 14.86 12.67 15.26C12.77 16.42 13.73 17.33 14.92 17.33C16.17 17.33 17.18 16.32 17.18 15.07C17.18 13.82 16.17 12.81 14.92 12.81M9.08 13.45C10 13.45 10.7 14.18 10.7 15.07C10.7 15.96 10 16.69 9.08 16.69C8.19 16.69 7.46 15.96 7.46 15.07C7.46 14.18 8.19 13.45 9.08 13.45M14.92 13.45C15.81 13.45 16.54 14.18 16.54 15.07C16.54 15.96 15.81 16.69 14.92 16.69C14 16.69 13.3 15.96 13.3 15.07C13.3 14.18 14 13.45 14.92 13.45M17.83 11.5H6.17V12.17H17.83V11.5M14.15 6.89C14 6.59 13.67 6.43 13.35 6.53L12 7L10.65 6.53L10.61 6.5C10.29 6.43 9.95 6.61 9.84 6.92L8.36 10.83H15.64L14.16 6.92L14.15 6.89Z"; -var mdiIncognitoCircleOff = "M22.11 21.46L2.39 1.73L1.11 3L4.06 5.95C2.77 7.63 2 9.72 2 12C2 17.5 6.5 22 12 22C14.28 22 16.37 21.23 18.05 19.94L20.84 22.73L22.11 21.46M8.94 10.83H8.36L8.5 10.41L8.94 10.83M6.17 11.5H9.61L10.28 12.17H6.17V11.5M14.92 17.33C13.73 17.33 12.77 16.42 12.67 15.26C12.04 14.86 11.53 15.12 11.33 15.25C11.24 16.42 10.28 17.33 9.08 17.33C7.83 17.33 6.82 16.32 6.82 15.07C6.82 13.82 7.83 12.81 9.08 12.81C10.15 12.81 11.05 13.55 11.29 14.55C11.65 14.4 12.13 14.34 12.65 14.54L13.31 15.2C13.37 16 14 16.61 14.78 16.67L15.38 17.27C15.23 17.3 15.08 17.33 14.92 17.33M9.94 6.74L6.72 3.5C8.25 2.56 10.06 2 12 2C17.5 2 22 6.5 22 12C22 13.94 21.44 15.75 20.5 17.28L15.37 12.17H17.83V11.5H14.7L14.03 10.83H15.64L14.16 6.92L14.15 6.89C14 6.59 13.67 6.43 13.35 6.53L12 7L10.65 6.53L10.61 6.5C10.36 6.45 10.1 6.55 9.94 6.74M10.7 15.07C10.7 15.96 10 16.69 9.08 16.69C8.19 16.69 7.46 15.96 7.46 15.07S8.19 13.45 9.08 13.45C10 13.45 10.7 14.18 10.7 15.07Z"; -var mdiIncognitoOff = "M22.11 21.46L2.39 1.73L1.11 3L6.31 8.2L6 9H7.11L8.61 10.5H2V12H10.11L13.5 15.37C13.38 15.61 13.3 15.85 13.24 16.1C12.29 15.69 11.41 15.8 10.76 16.09C10.35 14.31 8.79 13 6.94 13C4.77 13 3 14.79 3 17C3 19.21 4.77 21 6.94 21C9 21 10.68 19.38 10.84 17.32C11.18 17.08 12.07 16.63 13.16 17.34C13.34 19.39 15 21 17.06 21C17.66 21 18.22 20.86 18.72 20.61L20.84 22.73L22.11 21.46M6.94 19.86C5.38 19.86 4.13 18.58 4.13 17C4.13 15.42 5.39 14.14 6.94 14.14C8.5 14.14 9.75 15.42 9.75 17C9.75 18.58 8.5 19.86 6.94 19.86M17.06 19.86C15.5 19.86 14.25 18.58 14.25 17C14.25 16.74 14.29 16.5 14.36 16.25L17.84 19.73C17.59 19.81 17.34 19.86 17.06 19.86M22 12H15.2L13.7 10.5H22V12M17.06 13C19.23 13 21 14.79 21 17C21 17.25 20.97 17.5 20.93 17.73L19.84 16.64C19.68 15.34 18.66 14.32 17.38 14.17L16.29 13.09C16.54 13.03 16.8 13 17.06 13M12.2 9L7.72 4.5L8.43 2.68C8.63 2.17 9.19 1.89 9.72 2.04L9.77 2.05L12 2.79L14.22 2.05C14.75 1.88 15.32 2.14 15.54 2.63L15.56 2.68L18 9H12.2Z"; -var mdiInfinity = "M18.6,6.62C21.58,6.62 24,9 24,12C24,14.96 21.58,17.37 18.6,17.37C17.15,17.37 15.8,16.81 14.78,15.8L12,13.34L9.17,15.85C8.2,16.82 6.84,17.38 5.4,17.38C2.42,17.38 0,14.96 0,12C0,9.04 2.42,6.62 5.4,6.62C6.84,6.62 8.2,7.18 9.22,8.2L12,10.66L14.83,8.15C15.8,7.18 17.16,6.62 18.6,6.62M7.8,14.39L10.5,12L7.84,9.65C7.16,8.97 6.31,8.62 5.4,8.62C3.53,8.62 2,10.13 2,12C2,13.87 3.53,15.38 5.4,15.38C6.31,15.38 7.16,15.03 7.8,14.39M16.2,9.61L13.5,12L16.16,14.35C16.84,15.03 17.7,15.38 18.6,15.38C20.47,15.38 22,13.87 22,12C22,10.13 20.47,8.62 18.6,8.62C17.69,8.62 16.84,8.97 16.2,9.61Z"; -var mdiInformation = "M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiInformationOutline = "M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z"; -var mdiInformationVariant = "M13.5,4A1.5,1.5 0 0,0 12,5.5A1.5,1.5 0 0,0 13.5,7A1.5,1.5 0 0,0 15,5.5A1.5,1.5 0 0,0 13.5,4M13.14,8.77C11.95,8.87 8.7,11.46 8.7,11.46C8.5,11.61 8.56,11.6 8.72,11.88C8.88,12.15 8.86,12.17 9.05,12.04C9.25,11.91 9.58,11.7 10.13,11.36C12.25,10 10.47,13.14 9.56,18.43C9.2,21.05 11.56,19.7 12.17,19.3C12.77,18.91 14.38,17.8 14.54,17.69C14.76,17.54 14.6,17.42 14.43,17.17C14.31,17 14.19,17.12 14.19,17.12C13.54,17.55 12.35,18.45 12.19,17.88C12,17.31 13.22,13.4 13.89,10.71C14,10.07 14.3,8.67 13.14,8.77Z"; -var mdiInstagram = "M7.8,2H16.2C19.4,2 22,4.6 22,7.8V16.2A5.8,5.8 0 0,1 16.2,22H7.8C4.6,22 2,19.4 2,16.2V7.8A5.8,5.8 0 0,1 7.8,2M7.6,4A3.6,3.6 0 0,0 4,7.6V16.4C4,18.39 5.61,20 7.6,20H16.4A3.6,3.6 0 0,0 20,16.4V7.6C20,5.61 18.39,4 16.4,4H7.6M17.25,5.5A1.25,1.25 0 0,1 18.5,6.75A1.25,1.25 0 0,1 17.25,8A1.25,1.25 0 0,1 16,6.75A1.25,1.25 0 0,1 17.25,5.5M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; -var mdiInstrumentTriangle = "M11.5 2H10.5V6.2C10.4 6.3 10.3 6.3 10.2 6.5L2.1 20.7C1.8 21.3 2.2 22 2.9 22H16V20H4.8L11 9.2L16.7 19.2L18.4 18.2L11.8 6.4L11.5 6.1V2M21 6H20V18L19.5 22H21.5L21 18V6Z"; -var mdiInvertColors = "M12,19.58V19.58C10.4,19.58 8.89,18.96 7.76,17.83C6.62,16.69 6,15.19 6,13.58C6,12 6.62,10.47 7.76,9.34L12,5.1M17.66,7.93L12,2.27V2.27L6.34,7.93C3.22,11.05 3.22,16.12 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C14.05,21.58 16.1,20.8 17.66,19.24C20.78,16.12 20.78,11.05 17.66,7.93Z"; -var mdiInvertColorsOff = "M20.65,20.87L18.3,18.5L12,12.23L8.44,8.66L7,7.25L4.27,4.5L3,5.77L5.78,8.55C3.23,11.69 3.42,16.31 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C13.79,21.58 15.57,21 17.03,19.8L19.73,22.5L21,21.23L20.65,20.87M12,19.59C10.4,19.59 8.89,18.97 7.76,17.83C6.62,16.69 6,15.19 6,13.59C6,12.27 6.43,11 7.21,10L12,14.77V19.59M12,5.1V9.68L19.25,16.94C20.62,14 20.09,10.37 17.65,7.93L12,2.27L8.3,5.97L9.71,7.38L12,5.1Z"; -var mdiIobroker = "M12 2C11.5 2 11 2.04 10.5 2.11V4.85C11 4.75 11.5 4.7 12 4.7C12.5 4.7 13 4.75 13.5 4.85V2.12C13 2.04 12.5 2 12 2M9.82 2.25C5.4 3.25 2.11 7.24 2.11 12C2.11 17.5 6.53 22 12 22C17.47 22 21.89 17.5 21.89 12C21.89 7.24 18.6 3.25 14.19 2.25V5.03C17.17 5.96 19.34 8.73 19.34 12C19.34 16 16.05 19.3 12 19.3C7.96 19.3 4.67 16 4.67 12C4.67 8.73 6.84 5.96 9.82 5.03M12 5.45C11.5 5.45 11 5.5 10.5 5.62V18.27C11 18.38 11.5 18.44 12 18.44C12.5 18.44 13 18.39 13.5 18.27V5.62C13 5.5 12.5 5.45 12 5.45Z"; -var mdiIp = "M16,11H14V9H16V11M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M10,7H8V17H10V7M12,17H14V13H16A2,2 0 0,0 18,11V9A2,2 0 0,0 16,7H12V17Z"; -var mdiIpNetwork = "M15,9H13V7H15V9M22,20V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7A2,2 0 0,1 5,15V5A2,2 0 0,1 7,3H17A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22M9,5H7V15H9V5M11,15H13V11H15A2,2 0 0,0 17,9V7A2,2 0 0,0 15,5H11V15Z"; -var mdiIpNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M10,6H8V14H10V6M14,6H11V14H13V12H14A2,2 0 0,0 16,10V8A2,2 0 0,0 14,6M14,10H13V8H14V10Z"; -var mdiIpod = "M7,2A2,2 0 0,0 5,4V20A2,2 0 0,0 7,22H17A2,2 0 0,0 19,20V4A2,2 0 0,0 17,2H7M7,4H17V10H7V4M12,12A4,4 0 0,1 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12M12,14A2,2 0 0,0 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16A2,2 0 0,0 12,14Z"; -var mdiIslam = "M12.3,2C12.2,2 12.1,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22C15,22 16.7,21 18.5,19.5C13,21 8,17 8,12C8,7 13,3 18.5,4.5C16.86,2.86 14.62,1.96 12.3,2M16.8,6.2L15.3,9.7L11.6,10L14.5,12.5L13.6,16L16.8,14L20,16L19,12.5L22,10L18.3,9.7L16.8,6.2Z"; -var mdiIsland = "M20 20C18.61 20 17.22 19.53 16 18.67C13.56 20.38 10.44 20.38 8 18.67C6.78 19.53 5.39 20 4 20H2V22H4C5.37 22 6.74 21.65 8 21C10.5 22.3 13.5 22.3 16 21C17.26 21.65 18.62 22 20 22H22V20H20M20.78 19H20C18.82 19 17.64 18.6 16.58 17.85L16 17.45L15.42 17.85C14.39 18.57 13.21 18.95 12 18.95C10.77 18.95 9.59 18.57 8.56 17.85L8 17.45L7.43 17.85C6.36 18.6 5.18 19 4 19H3.22C3.75 17.54 5.58 15 12 15C14 15 15 15.24 15 15.24C15.68 13.87 16.83 10.77 16 6.82L17.06 7.53C17.39 8.96 18 11.75 16.8 15.65C19.43 16.5 20.42 18 20.78 19M22 7.59C21.21 6.5 20 5.71 18.58 5.53C18.7 5.67 18.81 5.83 18.92 6C20.12 7.91 19.87 10.32 18.47 11.95C19.06 10.5 19 8.79 18.08 7.36C18 7.28 17.96 7.2 17.9 7.11C17.5 6.53 16.96 6.06 16.38 5.72C14.35 6.37 12.88 8.27 12.88 10.5C12.88 11.03 12.96 11.53 13.1 12C12.5 11.17 12.16 10.17 12.16 9.07C12.16 7.41 12.96 5.95 14.2 5.03C13.16 4.95 12.09 5.18 11.14 5.78C10.7 6.05 10.32 6.38 10 6.76C10.39 5.82 11.05 5 12 4.4C13.04 3.74 14.25 3.5 15.39 3.69C15.1 3.29 14.75 2.92 14.33 2.6C13.92 2.29 13.47 2.05 13 1.88C14 1.91 15.04 2.24 15.91 2.89C16.35 3.22 16.7 3.62 17 4.05C17.06 4.05 17.12 4.04 17.19 4.04C19.45 4.04 21.37 5.53 22 7.59Z"; -var mdiIvBag = "M14 1H10C5 1 5 3 5 3V15C5 15 5 17 10 17V19H11V20C11 21.21 11.8 23 14 23H18V21H14C13.19 21 13 20.45 13 20V19H14V17C19 17 19 15 19 15V3C19 3 19 1 14 1M17 12H14V11H17V12M17 5H14V6H17V8H14V9H17V10H7V3.5C7.3 3.32 8.13 3 10 3H14C15.88 3 16.7 3.32 17 3.5V5Z"; -var mdiJabber = "M5.23,5.72C4.61,5.55 5,3.19 5,3.17C5,3.19 12.58,-0.71 16.7,5.73C20.8,12.15 15.86,14.86 13.97,16.06C12.08,17.27 12.73,19.72 12.73,20.13C12.73,20.53 12.16,20.97 12,20.41C11.88,19.84 11.25,16.55 13.33,15.16C17.13,12.61 17.9,10.1 16,6.42C14.2,3 8.28,3.41 7.03,4.08C5.78,4.75 5.86,5.89 5.23,5.72M9.33,12.63L9.11,12.16C9.23,10.28 7.63,10.39 8.08,13.33C8.21,14.16 7.47,13.8 7.45,13.73C6.89,11.44 7.42,10.22 8.55,10.45C9.62,10.68 9.53,11.83 9.53,11.83C9.56,11.78 11,10.17 11.5,10.92C12.58,12.5 10.53,14.47 10.41,14.63C10.28,14.78 10.14,15.05 9.92,14.84C9.7,14.64 9.72,14.5 9.89,14.27C12.77,10 9.59,12.22 9.33,12.63M6.5,15.33V15.31C6.5,15.31 8,18.13 10.61,17.08C11,16.92 11.17,17.14 11.2,17.27C11.27,17.53 11.13,17.64 10.86,17.73C7.86,18.72 5.89,16.63 5.63,16.13C5.39,15.68 5.5,15.38 5.75,15.22C6,15.06 6.5,15.33 6.5,15.33M6,17.5C6,17.5 7.67,19.5 10.8,19C11.09,18.94 11.2,19.13 11.25,19.38C11.3,19.63 11.22,19.84 10.92,19.94C10.63,20.03 7.08,20.5 5.13,17.72C5,17.56 5.3,17.36 5.47,17.36C5.64,17.36 6.03,17.5 6,17.5M5.95,19.39C7.53,21.5 10.33,21.55 11.28,20.88C11.5,20.73 11.7,21.05 11.56,21.19C9.64,23.16 5.67,21 5.27,20.33C5.09,20.05 5.13,19.66 5.31,19.45C5.5,19.25 5.93,19.38 5.95,19.39Z"; -var mdiJeepney = "M19,13V7H20V4H4V7H5V13H2C2,13.93 2.5,14.71 3.5,14.93V20A1,1 0 0,0 4.5,21H5.5A1,1 0 0,0 6.5,20V19H17.5V20A1,1 0 0,0 18.5,21H19.5A1,1 0 0,0 20.5,20V14.93C21.5,14.7 22,13.93 22,13H19M8,15A1.5,1.5 0 0,1 6.5,13.5A1.5,1.5 0 0,1 8,12A1.5,1.5 0 0,1 9.5,13.5A1.5,1.5 0 0,1 8,15M16,15A1.5,1.5 0 0,1 14.5,13.5A1.5,1.5 0 0,1 16,12A1.5,1.5 0 0,1 17.5,13.5A1.5,1.5 0 0,1 16,15M17.5,10.5C15.92,10.18 14.03,10 12,10C9.97,10 8,10.18 6.5,10.5V7H17.5V10.5Z"; -var mdiJellyfish = "M19.5,14.5C18.92,14.43 18.43,14.92 18.5,15.5C18.5,16.17 17.5,16.17 17.5,15.5V13.2L19.2,12.7C19.92,12.36 20.41,11.68 20.5,10.9C20.5,5.5 16.7,2 12,2C7.3,2 3.5,5.5 3.5,10.9C3.56,11.7 4.06,12.4 4.8,12.7L6.5,13.2V15.5A0.5,0.5 0 0,1 6,16A0.5,0.5 0 0,1 5.5,15.5C5.57,14.92 5.08,14.43 4.5,14.5C3.92,14.43 3.43,14.92 3.5,15.5C3.44,16.91 4.59,18.06 6,18C7.41,18.06 8.56,16.91 8.5,15.5V13.7H9.5V19.4C9.5,20.07 8.5,20.07 8.5,19.4C8.57,18.82 8.08,18.33 7.5,18.4C6.92,18.33 6.43,18.82 6.5,19.4C6.38,20.84 7.55,22.07 9,22C10.41,22.06 11.56,20.91 11.5,19.5V14H12.5V19.5C12.44,20.91 13.59,22.06 15,22C16.41,22.06 17.56,20.91 17.5,19.5C17.5,18.17 15.5,18.17 15.5,19.5C15.5,20.17 14.5,20.17 14.5,19.5V13.8H15.5V15.6C15.5,16.96 16.63,18.06 18,18C19.41,18.06 20.56,16.91 20.5,15.5C20.57,14.92 20.08,14.43 19.5,14.5M10.6,4.7C9.09,5.03 7.79,5.97 7,7.3C6.83,7.5 6.5,7.57 6.3,7.4C6.08,7.23 6.04,6.92 6.2,6.7C7.16,5.19 8.67,4.12 10.4,3.7C10.67,3.68 10.91,3.85 11,4.1C11.06,4.37 10.88,4.65 10.6,4.7Z"; -var mdiJellyfishOutline = "M12,4C15.8,4 18.5,6.8 18.5,10.8C14.31,12.39 9.69,12.39 5.5,10.8C5.5,6.8 8.2,4 12,4M12,2C7.3,2 3.5,5.5 3.5,10.9C3.56,11.7 4.06,12.4 4.8,12.7L6.5,13.2V15.5A0.5,0.5 0 0,1 6,16A0.5,0.5 0 0,1 5.5,15.5C5.57,14.92 5.08,14.43 4.5,14.5C3.92,14.43 3.43,14.92 3.5,15.5C3.44,16.86 4.54,18 5.9,18H6C7.41,18.06 8.56,16.91 8.5,15.5V13.7H9.5V19.4C9.5,20.07 8.5,20.07 8.5,19.4C8.57,18.82 8.08,18.33 7.5,18.4C6.92,18.33 6.43,18.82 6.5,19.4C6.39,20.8 7.5,22 8.9,22H9C10.41,22.06 11.56,20.91 11.5,19.5V14H12.5V19.5C12.44,20.91 13.59,22.06 15,22H15.1C16.47,22 17.56,20.86 17.5,19.5C17.5,18.17 15.5,18.17 15.5,19.5C15.5,20.17 14.5,20.17 14.5,19.5V13.8H15.5V15.6C15.5,16.96 16.63,18.06 18,18H18.1C19.47,18 20.56,16.86 20.5,15.5C20.5,14.17 18.5,14.17 18.5,15.5C18.5,16.17 17.5,16.17 17.5,15.5V13.2L19.2,12.7C19.92,12.36 20.41,11.68 20.5,10.9C20.5,5.5 16.7,2 12,2M12,6.2C10.53,6.6 9.24,7.53 8.4,8.8C8,9.33 7.2,8.73 7.6,8.2C8.6,6.73 10.09,5.67 11.8,5.2C12.08,5.14 12.35,5.32 12.4,5.6C12.5,5.9 12.3,6.1 12,6.2Z"; -var mdiJira = "M11.53,2C11.53,4.4 13.5,6.35 15.88,6.35H17.66V8.05C17.66,10.45 19.6,12.39 22,12.4V2.84A0.84,0.84 0 0,0 21.16,2H11.53M6.77,6.8C6.78,9.19 8.72,11.13 11.11,11.14H12.91V12.86C12.92,15.25 14.86,17.19 17.25,17.2V7.63C17.24,7.17 16.88,6.81 16.42,6.8H6.77M2,11.6C2,14 3.95,15.94 6.35,15.94H8.13V17.66C8.14,20.05 10.08,22 12.47,22V12.43A0.84,0.84 0 0,0 11.63,11.59L2,11.6Z"; -var mdiJquery = "M22.88,10.41C20.77,12.18 17.61,11.9 15.84,9.79C14.06,7.67 14.34,4.5 16.45,2.75L16.96,2.37C15.27,4.19 15.16,7.03 16.8,9C18.43,10.94 21.25,11.32 23.34,9.97L22.88,10.41M21.1,14.5C17.93,17.17 13.2,16.76 10.54,13.58C7.87,10.41 8.29,5.68 11.46,3L12.38,2.36C9.96,5.09 9.84,9.26 12.26,12.14C14.68,15 18.8,15.63 21.91,13.72L21.1,14.5M19.97,19.38C15.53,23.11 8.9,22.53 5.17,18.08C1.45,13.64 2.03,7 6.47,3.29L7.58,2.5C4.07,6.3 3.85,12.23 7.28,16.32C10.71,20.4 16.59,21.22 20.96,18.43L19.97,19.38Z"; -var mdiJsfiddle = "M17.34 13.7C17.34 15 16.23 16.04 14.86 16.04C13.65 16.04 12.64 15 11.75 14.04L11.5 13.79C11.5 13.76 11.47 13.73 11.45 13.7C10.74 12.96 9.96 12.22 9.21 12.22C8.32 12.22 7.6 12.88 7.6 13.69C7.6 14.5 8.32 15.17 9.21 15.17C9.97 15.17 10.35 14.75 10.63 14.45L10.7 14.37C10.86 14.2 11.14 14.19 11.31 14.35C11.5 14.5 11.5 14.79 11.33 14.96L11.27 15.03C10.94 15.38 10.35 16.03 9.21 16.03C7.84 16.03 6.73 15 6.73 13.69C6.73 12.4 7.84 11.35 9.21 11.35C10.42 11.35 11.43 12.41 12.32 13.35L12.56 13.6C12.58 13.63 12.6 13.66 12.62 13.69C13.33 14.43 14.11 15.17 14.86 15.17C15.75 15.17 16.47 14.5 16.47 13.69C16.47 12.88 15.75 12.22 14.86 12.22C14.11 12.22 13.72 12.64 13.44 12.94L13.37 13C13.21 13.19 12.94 13.2 12.76 13.04C12.59 12.87 12.58 12.6 12.74 12.42L12.81 12.36C13.13 12 13.73 11.36 14.86 11.36C16.23 11.36 17.34 12.4 17.34 13.7M22 14.85C22 15.96 21.57 17 20.78 17.79C20 18.57 18.95 19 17.84 19H6.28C3.96 18.96 2.07 17.06 2.07 14.75C2.07 13.37 2.76 12.07 3.89 11.28C3.85 11.09 3.83 10.9 3.83 10.7C3.83 9.03 5.2 7.67 6.88 7.67C7.39 7.67 7.88 7.79 8.32 8.03C9.41 6.17 11.43 5 13.6 5C16.97 5 19.7 7.72 19.7 11.07L19.7 11.14C21.11 11.84 22 13.27 22 14.85M21.13 14.85C21.13 13.5 20.33 12.32 19.09 11.81C18.92 11.74 18.81 11.57 18.82 11.38L18.83 11.29C18.83 11.22 18.84 11.14 18.84 11.07C18.84 8.2 16.5 5.87 13.6 5.87C11.6 5.87 9.74 7.03 8.87 8.83C8.82 8.95 8.71 9.04 8.58 9.07C8.46 9.1 8.32 9.07 8.22 9C7.83 8.69 7.37 8.53 6.88 8.53C5.68 8.53 4.7 9.5 4.7 10.7C4.7 10.92 4.73 11.14 4.8 11.34C4.86 11.54 4.78 11.75 4.61 11.85C3.56 12.47 2.94 13.55 2.94 14.75C2.94 16.59 4.44 18.1 6.29 18.13H17.83C18.72 18.13 19.54 17.79 20.16 17.17C20.79 16.55 21.13 15.73 21.13 14.85Z"; -var mdiJudaism = "M12,2L9.1,7H3.3L6.3,12L3.3,17H9.1L12,22L14.9,17H20.7L17.7,12L20.7,7H14.9L12,2M12,5L13.2,7H10.8L12,5M8.2,8.5L7.1,10.5L5.9,8.5H8.2M10,8.5H14L16,12L14,15.5H10L8,12L10,8.5M18,8.5L16.8,10.5L15.7,8.5H18M7.1,13.5L8.2,15.5H6L7.1,13.5M16.9,13.5L18.1,15.5H15.8L16.9,13.5M13.3,17L12,19L10.8,17H13.3Z"; -var mdiJumpRope = "M21 4.5V10.5C21 11.2 20.5 11.9 19.8 12V17.3C19.8 18.6 19 21.1 16 21.1H14.5C14.9 20.7 15.3 20.2 15.5 19.6H16C18.1 19.6 18.2 17.7 18.2 17.4V12C17.5 11.9 17 11.3 17 10.5V4.5C17 3.7 17.7 3 18.5 3H19.5C20.3 3 21 3.7 21 4.5M14.8 18.2C14.8 19.7 13.6 21 12 21H8C5 21 4.2 18.5 4.2 17.2V12C3.5 11.9 3 11.2 3 10.5V4.5C3 3.7 3.7 3 4.5 3H5.5C6.3 3 7 3.7 7 4.5V10.5C7 11.2 6.5 11.9 5.8 12V17.3C5.8 17.7 5.9 19.5 8 19.5H9.6C9.4 19.1 9.3 18.7 9.3 18.3V8.3C9.3 6.8 10.5 5.5 12.1 5.5S14.8 6.7 14.8 8.3M13.2 8.2C13.2 7.6 12.7 7 12 7S10.8 7.6 10.8 8.2V18.2C10.8 18.9 11.4 19.4 12 19.4S13.2 18.8 13.2 18.2V8.2Z"; -var mdiKabaddi = "M11.2 10.6C12.2 11.6 13.4 12.1 14.8 12.1L14.9 14.2C13 14.2 11.3 13.5 9.8 12.1L9.1 11.4L6.8 13.8L9 15.9V21.9H7V16.7L5.7 15.5V17.7L1.5 22L.1 20.6L3.7 17L2.5 13.5C2.3 12.9 2.6 12.4 3.1 12L6.4 8.7C6.8 8.2 7.3 8 7.8 8C8.3 8 8.6 8.1 8.9 8.3L11.2 10.6M24 11.9H22V8.5L20.2 7.8L21.1 12.2L22.1 17.4L23 21.8H20.9L19.1 13.8L17 15.8V21.8H15V14.3L17.1 12.3L16.5 9.3C15.9 9.9 15.2 10.5 14.4 10.9C13.5 10.8 12.6 10.4 11.9 9.7C13.5 9.4 14.6 8.6 15.3 7.4L16.3 5.8C16.9 4.8 17.8 4.5 18.9 5L24 7.2V11.9M11.4 4.4C12.5 4.4 13.4 5.3 13.4 6.4C13.4 7.5 12.5 8.4 11.4 8.4C10.3 8.4 9.4 7.5 9.4 6.4C9.4 5.3 10.3 4.4 11.4 4.4M16.5 .3C17.6 .3 18.5 1.2 18.5 2.3C18.5 3.4 17.6 4.3 16.5 4.3C15.4 4.3 14.5 3.4 14.5 2.3C14.5 1.2 15.4 .3 16.5 .3Z"; -var mdiKangaroo = "M19.8 6.59L19 7.97V10.04L17.69 11.61L17.31 13.25L16 14L15.5 13.12L16.44 12.59L16.7 11.45L16.7 11.45L16.77 11.15L16.77 11.15V11.15L17.47 10.31C17.65 10.1 17.62 9.78 17.41 9.61C17.2 9.43 16.88 9.46 16.7 9.67L15.85 10.69L15.56 11.93C15.38 11.96 15.2 12 15 12C14.31 12 13.68 11.76 13.23 11.4C13.15 12.7 12.73 13.81 12.13 14.43L10.5 16.19L9.96 19.79L8.07 21L7.53 20.17L9.04 19.19L9.5 15.92L9.5 15.91L10 14.54C9.47 14.08 9.08 13.28 8.88 12.3L8.71 12.61C8.35 13.25 8 13.9 7.56 14.56C7.11 15.2 6.66 15.9 5.78 16.44C5.34 16.72 4.7 16.84 4.17 16.73C3.61 16.61 3.14 16.26 2.86 15.89C2.31 15.13 2.15 14.35 2 13.62L2.97 13.36C3.2 14 3.5 14.65 3.88 15C4.26 15.33 4.57 15.26 4.84 15C5.16 14.73 5.47 14.15 5.73 13.55C6 12.94 6.22 12.28 6.45 11.6C6.93 10.24 7.39 8.82 8.2 7.36C8.62 6.64 9.13 5.89 9.92 5.22C10.7 4.55 11.73 4 13 4S15.7 5.22 16.58 6.34C17 6.89 17.87 6.82 18.22 6.21L19.14 4.63C19 4.58 18.89 4.5 18.79 4.4C18.4 4 18.4 3.38 18.79 3L19.93 4.13C19.96 4.13 20 4.11 20 4.11C20.41 4.11 20.75 4.35 20.91 4.69L22 7L21 7.5L19.8 6.59Z"; -var mdiKarate = "M19,1.27C18.04,0.72 16.82,1.04 16.27,2C15.71,2.95 16.04,4.18 17,4.73C17.95,5.28 19.17,4.96 19.73,4C20.28,3.04 19.95,1.82 19,1.27M21.27,9.34L18.7,13.79L16.96,12.79L18.69,9.79L17.14,8.5L14,13.92V22H12V13.39L2.47,7.89L3.47,6.16L11.27,10.66L13.67,6.5L7.28,4.17L8,2.29L14.73,4.74L15,4.84C15.39,5 15.76,5.15 16.12,5.35L16.96,5.84C17.31,6.04 17.65,6.28 17.96,6.54L18.19,6.74L21.27,9.34Z"; -var mdiKeg = "M5,22V20H6V16H5V14H6V11H5V7H11V3H10V2H11L13,2H14V3H13V7H19V11H18V14H19V16H18V20H19V22H5M17,9A1,1 0 0,0 16,8H14A1,1 0 0,0 13,9A1,1 0 0,0 14,10H16A1,1 0 0,0 17,9Z"; -var mdiKettle = "M12.5,3C7.81,3 4,5.69 4,9V9C4,10.19 4.5,11.34 5.44,12.33C4.53,13.5 4,14.96 4,16.5C4,17.64 4,18.83 4,20C4,21.11 4.89,22 6,22H19C20.11,22 21,21.11 21,20C21,18.85 21,17.61 21,16.5C21,15.28 20.66,14.07 20,13L22,11L19,8L16.9,10.1C15.58,9.38 14.05,9 12.5,9C10.65,9 8.95,9.53 7.55,10.41C7.19,9.97 7,9.5 7,9C7,7.21 9.46,5.75 12.5,5.75V5.75C13.93,5.75 15.3,6.08 16.33,6.67L18.35,4.65C16.77,3.59 14.68,3 12.5,3M12.5,11C12.84,11 13.17,11.04 13.5,11.09C10.39,11.57 8,14.25 8,17.5V20H6V17.5A6.5,6.5 0 0,1 12.5,11Z"; -var mdiKettleAlert = "M9.5 3C4.8 3 1 5.7 1 9C1 10.2 1.5 11.3 2.4 12.3C1.5 13.5 1 15 1 16.5V20C1 21.1 1.9 22 3 22H16C17.1 22 18 21.1 18 20V16.5C18 15.3 17.7 14.1 17 13L19 11L16 8L13.9 10.1C12.6 9.4 11.1 9 9.5 9C7.7 9 5.9 9.5 4.6 10.4C4.2 10 4 9.5 4 9C4 7.2 6.5 5.8 9.5 5.8C10.9 5.8 12.3 6.1 13.3 6.7L15.3 4.7C13.8 3.6 11.7 3 9.5 3M9.5 11C9.8 11 10.2 11 10.5 11.1C7.4 11.6 5 14.2 5 17.5V20H3V17.5C3 13.9 5.9 11 9.5 11M21 13V7H23V13H21M21 17V15H23V17H21Z"; -var mdiKettleAlertOutline = "M9.5 3C4.8 3 1 5.7 1 9C1 10.2 1.5 11.3 2.4 12.3C1.5 13.5 1 15 1 16.5V20C1 21.1 1.9 22 3 22H16C17.1 22 18 21.1 18 20V16.5C18 15.3 17.7 14.1 17 13L19 11L16 8L13.9 10.1C11 8.5 7.4 8.6 4.6 10.4C4.2 10 4 9.5 4 9C4 7.2 6.5 5.7 9.5 5.7C10.9 5.7 12.3 6.1 13.3 6.7L15.3 4.7C13.6 3.5 11.6 3 9.5 3M9.5 11C13 11 16 14 16 16.5V20H3V16.5C3 14 6 11 9.5 11M10 12.5C7 12.5 5 14 5 17V18H7V17C7 16 7 13.5 10 12.5M21 13V7H23V13H21M21 17V15H23V17H21Z"; -var mdiKettleOff = "M22.1 21.5L2.4 1.7L1.1 3L4.7 6.6C4.3 7.3 4 8.1 4 9C4 10.2 4.5 11.3 5.4 12.3C4.5 13.5 4 15 4 16.5V20C4 21.1 4.9 22 6 22H19C19.3 22 19.6 21.9 19.9 21.8L20.8 22.7L22.1 21.5M8.2 10.1L7.6 10.4C7.2 10 7 9.5 7 9V8.9L8.2 10.1M8 17.5V20H6V17.5C6 14.9 7.5 12.7 9.7 11.6L10.5 12.4C9 13.6 8 15.4 8 17.5M16.9 10.1L19 8L22 11L20 13C20.7 14.1 21 15.3 21 16.5V17.8L12.2 9H12.5C14 9 15.6 9.4 16.9 10.1M9.5 6.3L7.4 4.2C8.8 3.5 10.6 3 12.5 3C14.7 3 16.8 3.6 18.3 4.7L16.3 6.7C15.3 6.1 13.9 5.8 12.5 5.8C11.4 5.8 10.4 5.9 9.5 6.3Z"; -var mdiKettleOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L4.7 6.6C4.3 7.3 4 8.1 4 9C4 10.2 4.5 11.3 5.4 12.3C4.5 13.5 4 15 4 16.5V20C4 21.1 4.9 22 6 22H19C19.3 22 19.6 21.9 19.9 21.8L20.8 22.7L22.1 21.5M8.2 10.1L7.6 10.4C7.2 10 7 9.5 7 9V8.9L8.2 10.1M6 20V16.5C6 14.7 7.6 12.6 9.7 11.6L10.9 12.8C9.1 13.4 8 14.8 8 17V18H10V17C10 16.2 10 14.5 11.4 13.3L18.1 20H6M16.9 10.1L19 8L22 11L20 13C20.7 14.1 21 15.3 21 16.5V17.8L18.9 15.7C18.5 13.9 16.8 12.1 14.6 11.4L12.2 9C13.8 8.9 15.4 9.3 16.9 10.1M9.5 6.3L7.4 4.2C8.8 3.5 10.6 3 12.5 3C14.6 3 16.6 3.5 18.3 4.7L16.3 6.7C15.3 6.1 13.9 5.7 12.5 5.7C11.4 5.7 10.3 5.9 9.5 6.3Z"; -var mdiKettleOutline = "M12.5 3C7.8 3 4 5.7 4 9C4 10.2 4.5 11.3 5.4 12.3A6.8 6.8 0 0 0 4 16.5V20C4 21.1 4.9 22 6 22H19A2 2 0 0 0 21 20V16.5C21 15.3 20.7 14.1 20 13L22 11L19 8L16.9 10.1A9.2 9.2 0 0 0 7.6 10.4A2 2 0 0 1 7 9C7 7.2 9.5 5.7 12.5 5.7C13.9 5.7 15.3 6.1 16.3 6.7L18.3 4.7A10 10 0 0 0 12.5 3M12.5 11C16 11 19 14 19 16.5V20H6V16.5C6 14 9 11 12.5 11M13 12.5C10 12.5 8 14 8 17V18H10V17C10 16 10 13.5 13 12.5Z"; -var mdiKettlePourOver = "M10 4C9.4 4 9 4.4 9 5V6H14V5C14 4.4 13.6 4 13 4H10M3 7L4.1 14.1C4.2 14.8 4.5 15.5 5.1 16.1C5.5 16.6 6.2 16.9 7 17C7 17.6 7.4 18 8 18H16C16.6 18 17 17.6 17 17L15 11H17L20.3 16L22 15L18.7 10L20 9.2L19 7.5L16.4 9H15V7H8V11L7.2 16C6.5 15.9 6.1 15.7 5.8 15.4C5.4 15 5.2 14.5 5.1 13.9L4 7H3M4 19V21H20V19H4Z"; -var mdiKettleSteam = "M19 11L16 8L13.9 10.1C12.58 9.38 11.05 9 9.5 9C7.65 9 5.95 9.53 4.55 10.41C4.19 9.97 4 9.5 4 9C4 7.21 6.46 5.75 9.5 5.75C10.93 5.75 12.3 6.08 13.33 6.67L15.35 4.65C13.77 3.59 11.68 3 9.5 3C4.81 3 1 5.69 1 9C1 10.19 1.5 11.34 2.44 12.33C1.53 13.5 1 14.96 1 16.5V20C1 21.11 1.89 22 3 22H16C17.11 22 18 21.11 18 20V16.5C18 15.28 17.66 14.07 17 13L19 11M5 17.5V20H3V17.5C3 13.91 5.91 11 9.5 11C9.84 11 10.17 11.04 10.5 11.09C7.39 11.57 5 14.25 5 17.5M23 7.3C23 8.93 21.91 10.6 20.38 10.97L19.71 10.29L19 9.6H19.75C20.75 9.6 21.5 8.22 21.5 7.2C21.5 6.18 20.65 5.14 19.65 5.14V3.64C21.5 3.64 23 5.45 23 7.3M17.65 6.73C17.03 6.12 16.65 5.28 16.65 4.35C16.65 2.5 18.15 1 20 1V2.5C19 2.5 18.15 3.33 18.15 4.35C18.15 5.37 19 6.2 20 6.2V7.7C19.18 7.7 18.42 7.95 17.79 8.38L16.72 7.31C17 7.09 17.32 6.89 17.65 6.73Z"; -var mdiKettleSteamOutline = "M9.5 3C4.8 3 1 5.7 1 9C1 10.2 1.5 11.3 2.4 12.3C1.5 13.5 .985 15 1 16.5V20C1 21.1 1.9 22 3 22H16C17.11 22 18 21.11 18 20V16.5C18 15.3 17.7 14.1 17 13L19 11L16 8L13.9 10.1C10.97 8.5 7.42 8.63 4.6 10.4C4.22 10.03 4 9.53 4 9C4 7.2 6.5 5.7 9.5 5.7C10.9 5.7 12.3 6.1 13.3 6.7L15.3 4.7C13.59 3.55 11.56 2.96 9.5 3M9.5 11C13 11 16 14 16 16.5V20H3V16.5C3 14 6 11 9.5 11M10 12.5C7 12.5 5 14 5 17V18H7V17C7 16 7 13.5 10 12.5M23 7.3C23 8.93 21.91 10.6 20.38 10.97L19.71 10.29L19 9.6H19.75C20.75 9.6 21.5 8.22 21.5 7.2C21.5 6.18 20.65 5.14 19.65 5.14V3.64C21.5 3.64 23 5.45 23 7.3M17.65 6.73C17.03 6.12 16.65 5.28 16.65 4.35C16.65 2.5 18.15 1 20 1V2.5C19 2.5 18.15 3.33 18.15 4.35C18.15 5.37 19 6.2 20 6.2V7.7C19.18 7.7 18.42 7.95 17.79 8.38L16.72 7.31C17 7.09 17.32 6.89 17.65 6.73Z"; -var mdiKettlebell = "M16.2 10.7L16.8 8.3C16.9 8 17.3 6.6 16.5 5.4C15.9 4.5 14.7 4 13 4H11C9.3 4 8.1 4.5 7.5 5.4C6.7 6.6 7.1 7.9 7.2 8.3L7.8 10.7C6.7 11.8 6 13.3 6 15C6 17.1 7.1 18.9 8.7 20H15.3C16.9 18.9 18 17.1 18 15C18 13.3 17.3 11.8 16.2 10.7M9.6 9.5L9.1 7.8V7.7C9.1 7.7 8.9 7 9.2 6.6C9.4 6.2 10 6 11 6H13C13.9 6 14.6 6.2 14.9 6.5C15.2 6.9 15 7.6 15 7.6L14.5 9.5C13.7 9.2 12.9 9 12 9C11.1 9 10.3 9.2 9.6 9.5Z"; -var mdiKey = "M7,14A2,2 0 0,1 5,12A2,2 0 0,1 7,10A2,2 0 0,1 9,12A2,2 0 0,1 7,14M12.65,10C11.83,7.67 9.61,6 7,6A6,6 0 0,0 1,12A6,6 0 0,0 7,18C9.61,18 11.83,16.33 12.65,14H17V18H21V14H23V10H12.65Z"; -var mdiKeyArrowRight = "M10.7 6C10.1 4.2 8.4 3 6.5 3C4 3 2 5 2 7.5S4 12 6.5 12C8.5 12 10.1 10.8 10.7 9H15V12H18V9H22V6H10.7M6.5 9C5.7 9 5 8.3 5 7.5S5.7 6 6.5 6 8 6.7 8 7.5 7.3 9 6.5 9M13 21V19H8V17H13V15L16 18L13 21"; -var mdiKeyChain = "M12.67 13.67C12.2 14.13 11.63 14.5 11 14.73V23H8V21H5V18H8V14.72C6.26 14.1 5 12.46 5 10.5C5 8 7 6 9.5 6C9.54 6 9.57 6 9.6 6C9.13 6.95 8.92 8 9.03 9.08C8.44 9.28 8 9.84 8 10.5C8 11.33 8.67 12 9.5 12C9.73 12 9.95 11.94 10.15 11.85C10.79 12.69 11.67 13.32 12.67 13.67M20.73 19.44L17.97 20.6L17.19 18.76L14.43 19.93L13.26 17.16L16.03 16L14.76 13C12.91 13.08 11.11 12.05 10.35 10.25C9.39 7.96 10.47 5.32 12.76 4.35C13 4.25 13.26 4.18 13.5 4.12C12.84 2.87 11.5 2 10 2C7.79 2 6 3.79 6 6C6 6.08 6 6.16 6 6.24C5.7 6.5 5.4 6.82 5.15 7.15C5.06 6.78 5 6.4 5 6C5 3.24 7.24 1 10 1S15 3.24 15 6C15 7.42 14.4 8.67 13.45 9.57C13.87 10 14.5 10.13 15.08 9.88C15.85 9.56 16.2 8.68 15.88 7.92C15.85 7.83 15.8 7.74 15.74 7.66C15.9 7.13 16 6.58 16 6C16 5.37 15.9 4.76 15.72 4.19C17 4.55 18.1 5.44 18.65 6.76C19.41 8.56 18.89 10.57 17.5 11.81L20.73 19.44M13 8.6C13.37 8.19 13.65 7.71 13.82 7.18C13.28 7.45 12.97 8 13 8.6Z"; -var mdiKeyChainVariant = "M12.66 13.67C12.32 14 11.93 14.29 11.5 14.5V21L9.5 23L7.5 21L9.5 19.29L8 18L9.5 16.71L7.5 15V14.5C6 13.77 5 12.26 5 10.5C5 8 7 6 9.5 6C9.54 6 9.58 6 9.61 6C9.59 6.07 9.54 6.12 9.5 6.18C9.23 6.79 9.08 7.43 9.03 8.08C8.43 8.28 8 8.84 8 9.5C8 10.33 8.67 11 9.5 11C9.53 11 9.57 11 9.6 11C10.24 12.25 11.34 13.2 12.66 13.67M16 6C16 5.37 15.9 4.75 15.72 4.18C17.06 4.56 18.21 5.55 18.73 6.96C19.33 8.62 18.89 10.39 17.75 11.59L20 17.68L18.78 20.25L16.22 19.05L17.5 16.76L15.66 16.06L16.63 14.34L14.16 13.41L14 12.95C12.36 12.77 10.88 11.7 10.27 10.04C9.42 7.71 10.63 5.12 12.96 4.27C13.14 4.21 13.33 4.17 13.5 4.13C12.84 2.87 11.53 2 10 2C7.79 2 6 3.79 6 6C6 6.09 6 6.17 6.03 6.26C5.7 6.53 5.4 6.82 5.15 7.15C5.06 6.78 5 6.4 5 6C5 3.24 7.24 1 10 1S15 3.24 15 6C15 7.16 14.6 8.21 13.94 9.06C16.08 8.88 16 6 16 6M12.81 8.1C12.87 8.27 12.96 8.41 13.06 8.54C13.62 7.88 13.97 7.04 14 6.11C13.89 6.13 13.8 6.15 13.7 6.18C12.92 6.47 12.5 7.33 12.81 8.1Z"; -var mdiKeyChange = "M6.5,2C8.46,2 10.13,3.25 10.74,5H22V8H18V11H15V8H10.74C10.13,9.75 8.46,11 6.5,11C4,11 2,9 2,6.5C2,4 4,2 6.5,2M6.5,5A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 8,6.5A1.5,1.5 0 0,0 6.5,5M6.5,13C8.46,13 10.13,14.25 10.74,16H22V19H20V22H18V19H16V22H13V19H10.74C10.13,20.75 8.46,22 6.5,22C4,22 2,20 2,17.5C2,15 4,13 6.5,13M6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16Z"; -var mdiKeyLink = "M6.5 3C4 3 2 5 2 7.5S4 12 6.5 12C8.46 12 10.13 10.75 10.74 9H15V12H18V9H22V6H10.74C10.13 4.25 8.46 3 6.5 3M6.5 6C7.33 6 8 6.67 8 7.5S7.33 9 6.5 9 5 8.33 5 7.5 5.67 6 6.5 6M10 14C8.39 14 6 15.07 6 18C6 20.94 8.39 22 10 22H11V20H10C9.67 20 8 19.9 8 18C8 16.17 9.54 16 10 16H11V14M13 14V16H14C14.33 16 16 16.1 16 18C16 19.83 14.46 20 14 20H13V22H14C15.61 22 18 20.94 18 18C18 15.07 15.61 14 14 14M9 17V19H15V17Z"; -var mdiKeyMinus = "M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H16V19H8V17Z"; -var mdiKeyOutline = "M22,19H16V15H13.32C12.18,17.42 9.72,19 7,19C3.14,19 0,15.86 0,12C0,8.14 3.14,5 7,5C9.72,5 12.17,6.58 13.32,9H24V15H22V19M18,17H20V13H22V11H11.94L11.71,10.33C11,8.34 9.11,7 7,7A5,5 0 0,0 2,12A5,5 0 0,0 7,17C9.11,17 11,15.66 11.71,13.67L11.94,13H18V17M7,15A3,3 0 0,1 4,12A3,3 0 0,1 7,9A3,3 0 0,1 10,12A3,3 0 0,1 7,15M7,11A1,1 0 0,0 6,12A1,1 0 0,0 7,13A1,1 0 0,0 8,12A1,1 0 0,0 7,11Z"; -var mdiKeyPlus = "M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H11V14H13V17H16V19H13V22H11V19H8V17Z"; -var mdiKeyRemove = "M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M14.59,14L16,15.41L13.41,18L16,20.59L14.59,22L12,19.41L9.41,22L8,20.59L10.59,18L8,15.41L9.41,14L12,16.59L14.59,14Z"; -var mdiKeyStar = "M6.5 3C4 3 2 5 2 7.5S4 12 6.5 12C8.46 12 10.13 10.75 10.74 9H15V12H18V9H22V6H10.74C10.13 4.25 8.46 3 6.5 3M6.5 6C7.33 6 8 6.67 8 7.5S7.33 9 6.5 9 5 8.33 5 7.5 5.67 6 6.5 6M12 14L10.87 16.64L8 16.89L10.18 18.77L9.5 21.58L12 20.09L14.45 21.58L13.8 18.77L16 16.89L13.11 16.64Z"; -var mdiKeyVariant = "M22,18V22H18V19H15V16H12L9.74,13.74C9.19,13.91 8.61,14 8,14A6,6 0 0,1 2,8A6,6 0 0,1 8,2A6,6 0 0,1 14,8C14,8.61 13.91,9.19 13.74,9.74L22,18M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z"; -var mdiKeyWireless = "M4.93 5.92L6.34 7.33A8 8 0 0 1 17.66 7.33L19.07 5.92A10 10 0 0 0 4.93 5.92M7.76 8.75L9.17 10.16A4 4 0 0 1 14.83 10.16L16.24 8.75A6 6 0 0 0 7.76 8.75M10.76 15A4.5 4.5 0 1 0 10.76 18H15V21H18V18H22V15M6.5 18A1.5 1.5 0 1 1 8 16.5A1.5 1.5 0 0 1 6.5 18Z"; -var mdiKeyboard = "M19,10H17V8H19M19,13H17V11H19M16,10H14V8H16M16,13H14V11H16M16,17H8V15H16M7,10H5V8H7M7,13H5V11H7M8,11H10V13H8M8,8H10V10H8M11,11H13V13H11M11,8H13V10H11M20,5H4C2.89,5 2,5.89 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7C22,5.89 21.1,5 20,5Z"; -var mdiKeyboardBackspace = "M21,11H6.83L10.41,7.41L9,6L3,12L9,18L10.41,16.58L6.83,13H21V11Z"; -var mdiKeyboardCaps = "M6,18H18V16H6M12,8.41L16.59,13L18,11.58L12,5.58L6,11.58L7.41,13L12,8.41Z"; -var mdiKeyboardClose = "M12,23L16,19H8M19,8H17V6H19M19,11H17V9H19M16,8H14V6H16M16,11H14V9H16M16,15H8V13H16M7,8H5V6H7M7,11H5V9H7M8,9H10V11H8M8,6H10V8H8M11,9H13V11H11M11,6H13V8H11M20,3H4C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H20A2,2 0 0,0 22,15V5C22,3.89 21.1,3 20,3Z"; -var mdiKeyboardEsc = "M1 7H7V9H3V11H7V13H3V15H7V17H1V7M11 7H15V9H11V11H13C14.11 11 15 11.9 15 13V15C15 16.11 14.11 17 13 17H9V15H13V13H11C9.9 13 9 12.11 9 11V9C9 7.9 9.9 7 11 7M19 7H21C22.11 7 23 7.9 23 9V10H21V9H19V15H21V14H23V15C23 16.11 22.11 17 21 17H19C17.9 17 17 16.11 17 15V9C17 7.9 17.9 7 19 7Z"; -var mdiKeyboardF1 = "M6 7H12V9H8V11H11V13H8V17H6V7M14 7H18V17H16V9H14V7Z"; -var mdiKeyboardF10 = "M2 7H8V9H4V11H7V13H4V17H2V7M10 7H14V17H12V9H10V7M18 7H20C21.11 7 22 7.9 22 9V15C22 16.11 21.11 17 20 17H18C16.9 17 16 16.11 16 15V9C16 7.9 16.9 7 18 7M18 9V15H20V9H18Z"; -var mdiKeyboardF11 = "M3 7H9V9H5V11H8V13H5V17H3V7M11 7H15V17H13V9H11V7M17 7H21V17H19V9H17V7Z"; -var mdiKeyboardF12 = "M2 7H8V9H4V11H7V13H4V17H2V7M16 7H20C21.11 7 22 7.9 22 9V11C22 12.11 21.11 13 20 13H18V15H22V17H16V13C16 11.9 16.9 11 18 11H20V9H16V7M10 7H14V17H12V9H10V7Z"; -var mdiKeyboardF2 = "M5 7H11V9H7V11H10V13H7V17H5V7M13 7H17C18.11 7 19 7.9 19 9V11C19 12.11 18.11 13 17 13H15V15H19V17H13V13C13 11.9 13.9 11 15 11H17V9H13V7Z"; -var mdiKeyboardF3 = "M5 7H11V9H7V11H10V13H7V17H5V7M19 15C19 16.11 18.11 17 17 17H13V15H17V13H15V11H17V9H13V7H17C18.1 7 19 7.89 19 9V10.5C19 11.33 18.33 12 17.5 12C18.33 12 19 12.67 19 13.5V15Z"; -var mdiKeyboardF4 = "M5 7H11V9H7V11H10V13H7V17H5V7M13 7H15V11H17V7H19V17H17V13H13V7Z"; -var mdiKeyboardF5 = "M5 7H11V9H7V11H10V13H7V17H5V7M13 7H19V9H15V11H17C18.11 11 19 11.9 19 13V15C19 16.11 18.11 17 17 17H13V15H17V13H13V7Z"; -var mdiKeyboardF6 = "M5 7H11V9H7V11H10V13H7V17H5V7M15 7H19V9H15V11H17C18.11 11 19 11.9 19 13V15C19 16.11 18.11 17 17 17H15C13.9 17 13 16.11 13 15V9C13 7.9 13.9 7 15 7M15 13V15H17V13H15Z"; -var mdiKeyboardF7 = "M5 7H11V9H7V11H10V13H7V17H5V7M15 17H13L17 9H13V7H19V9L15 17Z"; -var mdiKeyboardF8 = "M5 7H11V9H7V11H10V13H7V17H5V7M15 13V15H17V13H15M15 9V11H17V9H15M15 17C13.9 17 13 16.11 13 15V13.5C13 12.67 13.67 12 14.5 12C13.67 12 13 11.33 13 10.5V9C13 7.9 13.9 7 15 7H17C18.1 7 19 7.89 19 9V10.5C19 11.33 18.33 12 17.5 12C18.33 12 19 12.67 19 13.5V15C19 16.11 18.11 17 17 17H15Z"; -var mdiKeyboardF9 = "M5 7H11V9H7V11H10V13H7V17H5V7M17 17H13V15H17V13H15C13.9 13 13 12.11 13 11V9C13 7.9 13.9 7 15 7H17C18.11 7 19 7.9 19 9V15C19 16.11 18.11 17 17 17M17 11V9H15V11H17Z"; -var mdiKeyboardOff = "M1,4.27L2.28,3L20,20.72L18.73,22L15.73,19H4C2.89,19 2,18.1 2,17V7C2,6.5 2.18,6.07 2.46,5.73L1,4.27M19,10V8H17V10H19M19,13V11H17V13H19M16,10V8H14V10H16M16,13V11H14V12.18L11.82,10H13V8H11V9.18L9.82,8L6.82,5H20A2,2 0 0,1 22,7V17C22,17.86 21.46,18.59 20.7,18.87L14.82,13H16M8,15V17H13.73L11.73,15H8M5,10H6.73L5,8.27V10M7,13V11H5V13H7M8,13H9.73L8,11.27V13Z"; -var mdiKeyboardOffOutline = "M1,4.27L2.47,5.74C2.18,6.08 2,6.5 2,7V17A2,2 0 0,0 4,19H15.73L18.73,22L20,20.72L2.28,3L1,4.27M4,17V7.27L5,8.27V10H6.73L8,11.27V13H9.73L10.73,14H8V16H12.73L13.73,17H4M5,11H7V13H5V11M17,11H19V13H17V11M19,10H17V8H19V10M14,11H16V13H14.83L14,12.17V11M13,10H11.83L11,9.17V8H13V10M22,7V17C22,17.86 21.45,18.58 20.7,18.87L18.83,17H20V7H8.83L6.83,5H20A2,2 0 0,1 22,7M16,10H14V8H16V10Z"; -var mdiKeyboardOutline = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M4,7H20V17H4V7M5,8V10H7V8H5M8,8V10H10V8H8M11,8V10H13V8H11M14,8V10H16V8H14M17,8V10H19V8H17M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M14,11V13H16V11H14M17,11V13H19V11H17M8,14V16H16V14H8Z"; -var mdiKeyboardReturn = "M19,7V11H5.83L9.41,7.41L8,6L2,12L8,18L9.41,16.58L5.83,13H21V7H19Z"; -var mdiKeyboardSettings = "M19,10H17V8H19M19,13H17V11H19M16,10H14V8H16M16,13H14V11H16M16,17H8V15H16M7,10H5V8H7M7,13H5V11H7M8,11H10V13H8M8,8H10V10H8M11,11H13V13H11M11,8H13V10H11M20,5H4A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z"; -var mdiKeyboardSettingsOutline = "M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M4,7H20V17H4V7M5,8V10H7V8H5M8,8V10H10V8H8M11,8V10H13V8H11M14,8V10H16V8H14M17,8V10H19V8H17M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M14,11V13H16V11H14M17,11V13H19V11H17M8,14V16H16V14H8Z"; -var mdiKeyboardSpace = "M3 15H5V19H19V15H21V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V15Z"; -var mdiKeyboardTab = "M20,18H22V6H20M11.59,7.41L15.17,11H1V13H15.17L11.59,16.58L13,18L19,12L13,6L11.59,7.41Z"; -var mdiKeyboardVariant = "M6,16H18V18H6V16M6,13V15H2V13H6M7,15V13H10V15H7M11,15V13H13V15H11M14,15V13H17V15H14M18,15V13H22V15H18M2,10H5V12H2V10M19,12V10H22V12H19M18,12H16V10H18V12M8,12H6V10H8V12M12,12H9V10H12V12M15,12H13V10H15V12M2,9V7H4V9H2M5,9V7H7V9H5M8,9V7H10V9H8M11,9V7H13V9H11M14,9V7H16V9H14M17,9V7H22V9H17Z"; -var mdiKhanda = "M16 20C19.72 18 22 15.27 22 12C22 9.34 20.46 6.9 17.89 5H17.82C19 6.35 19.68 8.09 19.68 10C19.68 13 18 15 15.5 16.83C15.5 16.84 14.38 17.54 13 18.41V17.33L15 16C15 16 14.8 15.4 14.58 14.46C16.6 13.58 18 11.69 18 9.5C18 7.34 16.64 5.47 14.65 4.57C14.84 3.63 15 3 15 3L12 1L9 3C9 3 9.16 3.63 9.35 4.57C7.37 5.47 6 7.34 6 9.5C6 11.69 7.4 13.58 9.42 14.46C9.2 15.4 9 16 9 16L11 17.33V18.41C9.62 17.54 8.5 16.84 8.5 16.83C6 15 4.32 13 4.32 10C4.32 8.09 5 6.35 6.18 5H6.12C3.54 6.9 2 9.34 2 12C2 15.27 4.29 18 8 20L9 18.5L10.92 19.73L7.34 22L8 23L11 21.07V23H13V21.07L16 23L16.66 22L13.08 19.73L15 18.5L16 20M16.75 9.5C16.75 11.09 15.76 12.46 14.31 13.19C14.14 12.23 14 11.12 14 10C14 8.67 14.2 7.15 14.42 5.86C15.81 6.6 16.75 7.95 16.75 9.5M7.25 9.5C7.25 7.95 8.19 6.6 9.59 5.86C9.8 7.15 10 8.67 10 10C10 11.12 9.86 12.23 9.69 13.19C8.24 12.46 7.25 11.09 7.25 9.5Z"; -var mdiKickstarter = "M19.3 10.2L17.5 12L19.3 13.8C21.19 15.67 21.19 18.72 19.3 20.59C17.42 22.46 14.35 22.46 12.47 20.59L11.8 19.93C10.93 21.19 9.5 22 7.83 22C5.16 22 3 19.85 3 17.2V6.8C3 4.15 5.16 2 7.83 2C9.5 2 10.93 2.82 11.8 4.07L12.47 3.41C14.35 1.54 17.42 1.54 19.3 3.41C21.19 5.28 21.19 8.33 19.3 10.2Z"; -var mdiKlingon = "M4.79 21.5L4.71 21.24C4.53 20.65 4.47 20.08 4.5 19.4C4.6 18.17 5.14 17.31 5.82 16.59C5.64 16 5.53 15.39 5.53 14.74C5.53 13 6.26 11.44 7.45 10.3C8.33 9.46 9.46 8.86 10.71 8.6C11.37 6.23 11.8 3.8 12 1.5C12.24 3.5 12.65 6.12 13.3 8.58C14.6 8.82 15.76 9.43 16.67 10.3C17.85 11.44 18.59 13 18.59 14.74C18.59 15.35 18.5 15.93 18.33 16.5C19.21 16.92 20.2 17.17 21.5 17.29L21.44 17.44C21.32 17.77 21 18 20.71 18.18L20.69 18.19C20.13 18.57 19.18 19 17.85 19C17.7 19 17.56 19 17.41 19C17.23 19 17.06 18.97 16.9 18.95C16.83 19 16.75 19.1 16.67 19.18C15.5 20.31 13.86 21 12.06 21C10.27 21 8.64 20.31 7.46 19.18C7.42 19.14 7.38 19.1 7.34 19.06C6.34 19.59 5.54 20.33 4.94 21.27L4.8 21.5M6.5 15.94C6.65 15.82 8.2 14.5 8.63 13.78L8.73 13.61C9.65 15 10.4 16.28 11.43 18.08L11.22 18.09C10.08 18.16 9.05 18.37 8.15 18.7C9.17 19.62 10.55 20.19 12.06 20.19C13.54 20.19 14.88 19.65 15.89 18.77C15.64 18.72 15.39 18.65 15.15 18.59C14.38 18.41 13.65 18.22 12.81 18.19L12.62 18.18L12.7 18C13.1 17.2 14.8 14.41 15.23 13.63L15.34 13.81C16 14.77 16.73 15.5 17.58 16.07C17.69 15.64 17.75 15.2 17.75 14.75C17.75 13.25 17.11 11.89 16.09 10.9C15.4 10.24 14.53 9.74 13.55 9.5C13.85 10.5 14.2 11.5 14.59 12.35L14.62 12.4L14.59 12.46C14.2 13.22 13.76 13.95 13.33 14.66C12.94 15.3 12.54 15.96 12.18 16.64L12.08 16.83L11.96 16.65C11.39 15.82 9.75 13.06 9.41 12.5C9.81 11.5 10.15 10.5 10.45 9.5C9.5 9.78 8.7 10.26 8.03 10.9C7 11.88 6.37 13.25 6.37 14.74C6.37 15.16 6.42 15.56 6.5 15.95"; -var mdiKnife = "M20.62,2C23.97,7.61 12.47,20.15 12.47,20.15L9.6,17.28L4.91,22L2.77,19.86L20.62,2Z"; -var mdiKnifeMilitary = "M22,2L17.39,3.75L10.46,10.68L14,14.22L20.92,7.29C22.43,5.78 22,2 22,2M8.33,10L6.92,11.39L8.33,12.8L2.68,18.46L6.21,22L11.87,16.34L13.28,17.76L14.7,16.34L8.33,10Z"; -var mdiKoala = "M19 3C18.1 3 15.5 3 14.3 6.1C13.9 6 13.4 6 13 6H11C10.6 6 10.1 6 9.7 6.1C8.5 3 5.9 3 5 3C4 3 1 4 1 9C1 12.6 3.5 13.6 5 13.9V15C5 18.3 7.7 21 11 21H13C16.3 21 19 18.3 19 15V13.9C20.5 13.6 23 12.6 23 9C23 4 20 3 19 3M5 12V12.4C2.9 11.8 3.3 9.5 4.3 8.7C4 8.3 3 9 3 8.6C3 8.1 4.8 7.4 5.1 7.3C4.8 6.8 3.6 7 3.6 6.6C3.6 6.3 4.8 5.8 5.8 6C6.3 6.1 6.9 6.3 7.4 6.7C6 8 5 9.8 5 12M8.5 15C6.5 15 6.5 12 8.5 12C10.5 12 10.5 15 8.5 15M12.5 18H11.5C10.8 18 10.3 17.3 10.6 16.7L11.3 13.7C11.4 13.3 11.8 13.1 12.1 13C12.4 13 12.7 13.2 12.9 13.7L13.6 16.7C13.7 17.3 13.2 18 12.5 18M15.5 15C13.5 15 13.5 12 15.5 12C17.5 12 17.5 15 15.5 15M19.7 8.6C20.7 9.4 21.1 11.7 19 12.3C19.1 10.1 18.1 8 16.6 6.7C17.1 6.3 17.7 6.1 18.2 6C19.2 5.8 20.4 6.2 20.4 6.6C20.4 7 19.2 6.8 18.9 7.2C19.2 7.4 21 8.1 21 8.6C21 9 20.1 8.3 19.7 8.6Z"; -var mdiKodi = "M12.03,1C11.82,1 11.6,1.11 11.41,1.31C10.56,2.16 9.72,3 8.88,3.84C8.66,4.06 8.6,4.18 8.38,4.38C8.09,4.62 7.96,4.91 7.97,5.28C8,6.57 8,7.84 8,9.13C8,10.46 8,11.82 8,13.16C8,13.26 8,13.34 8.03,13.44C8.11,13.75 8.31,13.82 8.53,13.59C9.73,12.39 10.8,11.3 12,10.09C13.36,8.73 14.73,7.37 16.09,6C16.5,5.6 16.5,5.15 16.09,4.75C14.94,3.6 13.77,2.47 12.63,1.31C12.43,1.11 12.24,1 12.03,1M18.66,7.66C18.45,7.66 18.25,7.75 18.06,7.94C16.91,9.1 15.75,10.24 14.59,11.41C14.2,11.8 14.2,12.23 14.59,12.63C15.74,13.78 16.88,14.94 18.03,16.09C18.43,16.5 18.85,16.5 19.25,16.09C20.36,15 21.5,13.87 22.59,12.75C22.76,12.58 22.93,12.42 23,12.19V11.88C22.93,11.64 22.76,11.5 22.59,11.31C21.47,10.19 20.37,9.06 19.25,7.94C19.06,7.75 18.86,7.66 18.66,7.66M4.78,8.09C4.65,8.04 4.58,8.14 4.5,8.22C3.35,9.39 2.34,10.43 1.19,11.59C0.93,11.86 0.93,12.24 1.19,12.5C1.81,13.13 2.44,13.75 3.06,14.38C3.6,14.92 4,15.33 4.56,15.88C4.72,16.03 4.86,16 4.94,15.81C5,15.71 5,15.58 5,15.47C5,14.29 5,13.37 5,12.19C5,11 5,9.81 5,8.63C5,8.55 5,8.45 4.97,8.38C4.95,8.25 4.9,8.14 4.78,8.09M12.09,14.25C11.89,14.25 11.66,14.34 11.47,14.53C10.32,15.69 9.18,16.87 8.03,18.03C7.63,18.43 7.63,18.85 8.03,19.25C9.14,20.37 10.26,21.47 11.38,22.59C11.54,22.76 11.71,22.93 11.94,23H12.22C12.44,22.94 12.62,22.79 12.78,22.63C13.9,21.5 15.03,20.38 16.16,19.25C16.55,18.85 16.5,18.4 16.13,18C14.97,16.84 13.84,15.69 12.69,14.53C12.5,14.34 12.3,14.25 12.09,14.25Z"; -var mdiKubernetes = "M13.95 13.5H13.72C13.54 13.61 13.46 13.82 13.54 14L14.4 16.11C15.23 15.58 15.86 14.79 16.19 13.86L13.96 13.5H13.95M10.5 13.79C10.44 13.62 10.29 13.5 10.12 13.5H10.04L7.82 13.87C8.15 14.79 8.78 15.57 9.61 16.1L10.46 14.03V14C10.5 13.95 10.5 13.86 10.5 13.79M12.33 14.6C12.23 14.42 12 14.35 11.82 14.45C11.75 14.5 11.7 14.53 11.67 14.6H11.66L10.57 16.57C11.35 16.83 12.19 16.88 13 16.69C13.14 16.66 13.29 16.62 13.43 16.57L12.34 14.6H12.33M15.78 10.03L14.1 11.5L14.11 11.53C13.95 11.67 13.93 11.91 14.07 12.06C14.12 12.12 14.18 12.16 14.25 12.18L14.26 12.19L16.43 12.81C16.5 11.84 16.29 10.86 15.78 10.03M12.67 10.19C12.68 10.4 12.85 10.56 13.06 10.55C13.14 10.55 13.21 10.53 13.27 10.5H13.28L15.11 9.19C14.41 8.5 13.5 8.07 12.54 7.95L12.67 10.19M10.73 10.5C10.9 10.61 11.13 10.58 11.25 10.41C11.3 10.35 11.32 10.28 11.33 10.2H11.34L11.46 7.95C11.31 7.97 11.16 8 11 8.03C10.2 8.21 9.46 8.61 8.88 9.19L10.72 10.5H10.73M9.74 12.19C9.94 12.14 10.06 11.93 10 11.73C10 11.65 9.95 11.59 9.89 11.54V11.53L8.21 10C7.69 10.86 7.47 11.84 7.58 12.82L9.74 12.2V12.19M11.38 12.85L12 13.15L12.62 12.85L12.77 12.18L12.34 11.65H11.65L11.22 12.18L11.38 12.85M22.27 14.17L20.5 6.5C20.41 6.08 20.13 5.74 19.76 5.56L12.59 2.13C12.22 1.96 11.78 1.96 11.4 2.13L4.24 5.56C3.87 5.74 3.59 6.08 3.5 6.5L1.73 14.17C1.68 14.37 1.68 14.57 1.73 14.76C1.74 14.82 1.76 14.88 1.78 14.94C1.81 15.03 1.86 15.13 1.91 15.21C1.94 15.25 1.96 15.29 2 15.32L6.95 21.5C6.97 21.5 7 21.54 7 21.56C7.1 21.65 7.19 21.72 7.28 21.78C7.4 21.86 7.54 21.92 7.68 21.95C7.79 22 7.91 22 8 22H16.12C16.19 22 16.26 21.97 16.32 21.95C16.37 21.94 16.42 21.92 16.46 21.91C16.5 21.89 16.53 21.88 16.57 21.86C16.62 21.84 16.67 21.81 16.72 21.78C16.84 21.7 16.95 21.6 17.05 21.5L17.2 21.3L22 15.32C22.1 15.2 22.17 15.07 22.22 14.94C22.24 14.88 22.26 14.82 22.27 14.76C22.32 14.57 22.32 14.36 22.27 14.17M14.84 17.16C14.86 17.22 14.88 17.28 14.91 17.33C14.87 17.41 14.85 17.5 14.88 17.59C15 17.83 15.11 18.05 15.26 18.27C15.34 18.38 15.42 18.5 15.5 18.61C15.5 18.64 15.53 18.69 15.54 18.73C15.66 18.93 15.6 19.19 15.39 19.32S14.92 19.37 14.8 19.17C14.79 19.14 14.78 19.12 14.77 19.09C14.75 19.06 14.73 19 14.71 19C14.66 18.85 14.62 18.72 14.59 18.59C14.5 18.34 14.42 18.1 14.29 17.87C14.24 17.8 14.16 17.75 14.08 17.73L14 17.57C12.71 18.05 11.3 18.05 10.03 17.56L9.93 17.74C9.86 17.75 9.79 17.78 9.74 17.83C9.6 18.07 9.5 18.32 9.41 18.6C9.38 18.73 9.34 18.86 9.29 19C9.27 19 9.25 19.07 9.23 19.1C9.15 19.32 8.91 19.44 8.68 19.36C8.46 19.28 8.34 19.04 8.42 18.81C8.43 18.78 8.45 18.76 8.46 18.73C8.5 18.7 8.5 18.65 8.5 18.62C8.59 18.5 8.66 18.39 8.74 18.27C8.9 18.06 9.03 17.82 9.13 17.58C9.14 17.5 9.13 17.41 9.1 17.33L9.17 17.15C8 16.45 7.12 15.36 6.7 14.06L6.5 14.09C6.44 14.04 6.35 14 6.27 14C6 14.05 5.76 14.13 5.5 14.22C5.39 14.28 5.26 14.33 5.13 14.37C5.1 14.38 5.06 14.39 5 14.4C4.78 14.47 4.54 14.35 4.46 14.13C4.39 13.9 4.5 13.66 4.74 13.58C4.76 13.58 4.79 13.57 4.82 13.57V13.56H4.83L4.94 13.54C5.08 13.5 5.22 13.5 5.35 13.5C5.61 13.5 5.87 13.44 6.12 13.38C6.2 13.33 6.26 13.27 6.31 13.19L6.5 13.14C6.29 11.78 6.6 10.41 7.36 9.27L7.22 9.15C7.22 9.06 7.19 8.97 7.14 8.9C6.94 8.73 6.73 8.58 6.5 8.45C6.38 8.39 6.26 8.32 6.14 8.24C6.12 8.22 6.08 8.19 6.06 8.17L6.05 8.16C5.85 8 5.8 7.74 5.94 7.53C6.03 7.43 6.15 7.38 6.29 7.38C6.4 7.39 6.5 7.43 6.59 7.5L6.68 7.57C6.78 7.66 6.87 7.77 6.96 7.87C7.14 8.06 7.33 8.24 7.54 8.39C7.62 8.43 7.71 8.44 7.8 8.42L7.95 8.53C8.7 7.73 9.68 7.17 10.75 6.93C11 6.87 11.27 6.83 11.53 6.81L11.54 6.63C11.61 6.57 11.65 6.5 11.68 6.4C11.69 6.14 11.67 5.88 11.63 5.63C11.6 5.5 11.58 5.36 11.57 5.22V5.1C11.55 4.86 11.72 4.65 11.96 4.62S12.4 4.77 12.43 5V5.22C12.42 5.36 12.4 5.5 12.37 5.63C12.33 5.88 12.31 6.14 12.32 6.4C12.34 6.5 12.39 6.57 12.46 6.62L12.47 6.81C13.83 6.93 15.09 7.54 16.03 8.53L16.19 8.41C16.28 8.43 16.37 8.42 16.45 8.38C16.66 8.23 16.86 8.05 17.03 7.86C17.12 7.76 17.21 7.66 17.31 7.56C17.34 7.54 17.38 7.5 17.41 7.5C17.58 7.32 17.85 7.32 18 7.5C18.19 7.66 18.18 7.93 18 8.1C18 8.12 17.97 8.14 17.94 8.16C17.92 8.18 17.88 8.21 17.85 8.23C17.74 8.31 17.62 8.38 17.5 8.44C17.27 8.57 17.05 8.72 16.86 8.89C16.8 8.96 16.77 9.04 16.78 9.13L16.62 9.27C17.39 10.4 17.7 11.78 17.5 13.13L17.69 13.18C17.73 13.26 17.8 13.32 17.88 13.36C18.13 13.43 18.39 13.47 18.65 13.5H19.06C19.09 13.53 19.14 13.54 19.18 13.55C19.42 13.58 19.58 13.8 19.55 14.04C19.5 14.27 19.31 14.44 19.07 14.41C19.04 14.4 19 14.4 19 14.39V14.38C18.94 14.38 18.9 14.37 18.86 14.36C18.73 14.32 18.61 14.27 18.5 14.21C18.24 14.11 18 14.04 17.73 14C17.64 14 17.56 14 17.5 14.08C17.43 14.07 17.37 14.06 17.31 14.05C16.9 15.36 16 16.46 14.84 17.16Z"; -var mdiLabel = "M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z"; -var mdiLabelMultiple = "M4 19H13L11 21H4C3.5 21 2.97 20.79 2.59 20.41C2.21 20.03 2 19.5 2 19V9H4V19M17.63 5.84C17.27 5.33 16.67 5 16 5H8C6.9 5 6 5.9 6 7V15C6 16.1 6.9 17 8 17H16C16.67 17 17.27 16.66 17.63 16.15L22 11L17.63 5.84Z"; -var mdiLabelMultipleOutline = "M4 18H13L11 20H4C3.5 20 2.97 19.79 2.59 19.41C2.21 19.03 2 18.5 2 18V8H4V18M17.63 4.84C17.27 4.33 16.67 4 16 4H8C6.9 4 6 4.9 6 6V14C6 15.1 6.9 16 8 16H16C16.67 16 17.27 15.66 17.63 15.15L22 10L17.63 4.84M16 14H8V6H16L19.55 10Z"; -var mdiLabelOff = "M2,4.27L3.28,3L20,19.72L18.73,21L16.63,18.9C16.43,18.96 16.22,19 16,19H5A2,2 0 0,1 3,17V7C3,6.5 3.17,6.07 3.46,5.73L2,4.27M17.63,5.84L22,12L19,16.2L7.83,5H16C16.67,5 17.27,5.33 17.63,5.84Z"; -var mdiLabelOffOutline = "M2,4.27L3.28,3L20,19.72L18.73,21L16.63,18.9C16.43,18.96 16.22,19 16,19H5A2,2 0 0,1 3,17V7C3,6.5 3.17,6.07 3.46,5.73L2,4.27M5,17H14.73L5,7.27V17M19.55,12L16,7H9.82L7.83,5H16C16.67,5 17.27,5.33 17.63,5.84L22,12L19,16.2L17.59,14.76L19.55,12Z"; -var mdiLabelOutline = "M16,17H5V7H16L19.55,12M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z"; -var mdiLabelPercent = "M17.63 5.84C17.27 5.33 16.67 5 16 5H5C3.9 5 3 5.9 3 7V17C3 18.11 3.9 19 5 19H16C16.67 19 17.27 18.66 17.63 18.15L22 12L17.63 5.84M8.45 8.03C9.23 8.03 9.87 8.67 9.87 9.45S9.23 10.87 8.45 10.87 7.03 10.23 7.03 9.45 7.67 8.03 8.45 8.03M13.55 15.97C12.77 15.97 12.13 15.33 12.13 14.55S12.77 13.13 13.55 13.13 14.97 13.77 14.97 14.55 14.33 15.97 13.55 15.97M8.2 16L7 14.8L13.8 8L15 9.2L8.2 16Z"; -var mdiLabelPercentOutline = "M16 17H5V7H16L19.55 12M17.63 5.84C17.27 5.33 16.67 5 16 5H5C3.9 5 3 5.9 3 7V17C3 18.11 3.9 19 5 19H16C16.67 19 17.27 18.66 17.63 18.15L22 12L17.63 5.84M13.8 8L15 9.2L8.2 16L7 14.8M8.45 8.03C9.23 8.03 9.87 8.67 9.87 9.45S9.23 10.87 8.45 10.87 7.03 10.23 7.03 9.45 7.67 8.03 8.45 8.03M13.55 13.13C14.33 13.13 14.97 13.77 14.97 14.55C14.97 15.33 14.33 15.97 13.55 15.97C12.77 15.97 12.13 15.33 12.13 14.55C12.13 13.77 12.77 13.13 13.55 13.13Z"; -var mdiLabelVariant = "M3.5,19L8.34,12L3.5,5H14.5C15.17,5 15.72,5.3 16.13,5.86L20.5,12L16.13,18.14C15.72,18.7 15.17,19 14.5,19H3.5Z"; -var mdiLabelVariantOutline = "M6.5,17H15L18.5,12L15,7H6.5L10,12L6.5,17M15,19H3L7.5,12L3,5H15C15.69,5 16.23,5.3 16.64,5.86L21,12L16.64,18.14C16.23,18.7 15.69,19 15,19Z"; -var mdiLadder = "M14 1V3H10V1H8V22H10V20H14V22H16V1H14M14 5V8H10V5H14M14 10V13H10V10H14M10 18V15H14V18H10Z"; -var mdiLadybug = "M12,5C12.74,5 13.47,5.1 14.15,5.29L15.78,2.46C16.06,2 16.67,1.82 17.15,2.1C17.63,2.37 17.79,3 17.5,3.46L16,6.07C17.22,6.78 18.23,7.79 18.93,9H5.07C5.77,7.79 6.78,6.78 8,6.07L6.5,3.46C6.21,3 6.37,2.37 6.85,2.1C7.33,1.82 7.94,2 8.22,2.46L9.85,5.29C10.53,5.1 11.26,5 12,5M20,13C20,17.17 16.82,20.59 12.75,20.97V10.5H19.6C19.86,11.29 20,12.13 20,13M4,13C4,12.13 4.14,11.29 4.4,10.5H11.25V20.97C7.18,20.59 4,17.17 4,13Z"; -var mdiLambda = "M6,20L10.16,7.91L9.34,6H8V4H10C10.42,4 10.78,4.26 10.93,4.63L16.66,18H18V20H16C15.57,20 15.21,19.73 15.07,19.36L11.33,10.65L8.12,20H6Z"; -var mdiLamp = "M8,2H16L20,14H4L8,2M11,15H13V20H18V22H6V20H11V15Z"; -var mdiLamps = "M10 2L12 9H2L4 2M6 10H8V20H11V22H3V20H6V10M20 8L22 15H12L14 8M16 16H18V20H21V22H13V20H16V16Z"; -var mdiLan = "M10,2C8.89,2 8,2.89 8,4V7C8,8.11 8.89,9 10,9H11V11H2V13H6V15H5C3.89,15 3,15.89 3,17V20C3,21.11 3.89,22 5,22H9C10.11,22 11,21.11 11,20V17C11,15.89 10.11,15 9,15H8V13H16V15H15C13.89,15 13,15.89 13,17V20C13,21.11 13.89,22 15,22H19C20.11,22 21,21.11 21,20V17C21,15.89 20.11,15 19,15H18V13H22V11H13V9H14C15.11,9 16,8.11 16,7V4C16,2.89 15.11,2 14,2H10M10,4H14V7H10V4M5,17H9V20H5V17M15,17H19V20H15V17Z"; -var mdiLanCheck = "M4 1C2.89 1 2 1.89 2 3V7C2 8.11 2.89 9 4 9H1V11H13V9H10C11.11 9 12 8.11 12 7V3C12 1.89 11.11 1 10 1H4M4 3H10V7H4V3M14 13C12.89 13 12 13.89 12 15V19C12 20.11 12.89 21 14 21H11V23H23V21H20C21.11 21 22 20.11 22 19V15C22 13.89 21.11 13 20 13H14M14 15H20V19H14V15M5.5 20.5L10.5 15.5L9 14L5.5 17.5L3.5 15.5L2 17L5.5 20.5Z"; -var mdiLanConnect = "M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,13V18L3,20H10V18H5V13H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M14,15H20V19H14V15Z"; -var mdiLanDisconnect = "M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3.88,13.46L2.46,14.88L4.59,17L2.46,19.12L3.88,20.54L6,18.41L8.12,20.54L9.54,19.12L7.41,17L9.54,14.88L8.12,13.46L6,15.59L3.88,13.46M14,15H20V19H14V15Z"; -var mdiLanPending = "M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,12V14H5V12H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3,15V17H5V15H3M14,15H20V19H14V15M3,18V20H5V18H3M6,18V20H8V18H6M9,18V20H11V18H9Z"; -var mdiLanguageC = "M15.45,15.97L15.87,18.41C15.61,18.55 15.19,18.68 14.63,18.8C14.06,18.93 13.39,19 12.62,19C10.41,18.96 8.75,18.3 7.64,17.04C6.5,15.77 5.96,14.16 5.96,12.21C6,9.9 6.68,8.13 8,6.89C9.28,5.64 10.92,5 12.9,5C13.65,5 14.3,5.07 14.84,5.19C15.38,5.31 15.78,5.44 16.04,5.59L15.44,8.08L14.4,7.74C14,7.64 13.53,7.59 13,7.59C11.85,7.58 10.89,7.95 10.14,8.69C9.38,9.42 9,10.54 8.96,12.03C8.97,13.39 9.33,14.45 10.04,15.23C10.75,16 11.74,16.4 13.03,16.41L14.36,16.29C14.79,16.21 15.15,16.1 15.45,15.97Z"; -var mdiLanguageCpp = "M10.5,15.97L10.91,18.41C10.65,18.55 10.23,18.68 9.67,18.8C9.1,18.93 8.43,19 7.66,19C5.45,18.96 3.79,18.3 2.68,17.04C1.56,15.77 1,14.16 1,12.21C1.05,9.9 1.72,8.13 3,6.89C4.32,5.64 5.96,5 7.94,5C8.69,5 9.34,5.07 9.88,5.19C10.42,5.31 10.82,5.44 11.08,5.59L10.5,8.08L9.44,7.74C9.04,7.64 8.58,7.59 8.05,7.59C6.89,7.58 5.93,7.95 5.18,8.69C4.42,9.42 4.03,10.54 4,12.03C4,13.39 4.37,14.45 5.08,15.23C5.79,16 6.79,16.4 8.07,16.41L9.4,16.29C9.83,16.21 10.19,16.1 10.5,15.97M11,11H13V9H15V11H17V13H15V15H13V13H11V11M18,11H20V9H22V11H24V13H22V15H20V13H18V11Z"; -var mdiLanguageCsharp = "M11.5,15.97L11.91,18.41C11.65,18.55 11.23,18.68 10.67,18.8C10.1,18.93 9.43,19 8.66,19C6.45,18.96 4.79,18.3 3.68,17.04C2.56,15.77 2,14.16 2,12.21C2.05,9.9 2.72,8.13 4,6.89C5.32,5.64 6.96,5 8.94,5C9.69,5 10.34,5.07 10.88,5.19C11.42,5.31 11.82,5.44 12.08,5.59L11.5,8.08L10.44,7.74C10.04,7.64 9.58,7.59 9.05,7.59C7.89,7.58 6.93,7.95 6.18,8.69C5.42,9.42 5.03,10.54 5,12.03C5,13.39 5.37,14.45 6.08,15.23C6.79,16 7.79,16.4 9.07,16.41L10.4,16.29C10.83,16.21 11.19,16.1 11.5,15.97M13.89,19L14.5,15H13L13.34,13H14.84L15.16,11H13.66L14,9H15.5L16.11,5H18.11L17.5,9H18.5L19.11,5H21.11L20.5,9H22L21.66,11H20.16L19.84,13H21.34L21,15H19.5L18.89,19H16.89L17.5,15H16.5L15.89,19H13.89M16.84,13H17.84L18.16,11H17.16L16.84,13Z"; -var mdiLanguageCss3 = "M5,3L4.35,6.34H17.94L17.5,8.5H3.92L3.26,11.83H16.85L16.09,15.64L10.61,17.45L5.86,15.64L6.19,14H2.85L2.06,18L9.91,21L18.96,18L20.16,11.97L20.4,10.76L21.94,3H5Z"; -var mdiLanguageFortran = "M5 4V6H6C6.55 6 7 6.45 7 7V17C7 17.55 6.55 18 6 18H5V20H14V18H12C11.45 18 11 17.55 11 17V13H13C13.55 13 14 13.45 14 14V16H16V8H14V10C14 10.55 13.55 11 13 11H11V6H16C17.11 6 18 7.34 18 9V10H20V4Z"; -var mdiLanguageGo = "M2.64,10.33L2.62,10.27L2.84,10L2.96,9.92H6.8L6.83,10L6.65,10.26L6.54,10.32L2.64,10.33M1.03,11.31L1,11.26L1.22,10.97L1.34,10.91H6.24L6.29,11L6.21,11.24L6.11,11.31H1.03M3.63,12.3L3.59,12.24L3.75,11.96L3.85,11.9H6L6.07,11.97L6.05,12.22L5.97,12.3H3.63M14.78,10.14L13,10.61C12.81,10.65 12.8,10.66 12.66,10.5C12.5,10.32 12.39,10.21 12.16,10.1C11.5,9.76 10.83,9.86 10.22,10.25C9.5,10.73 9.11,11.42 9.12,12.3C9.13,13.16 9.72,13.87 10.57,14C11.3,14.09 11.91,13.83 12.4,13.28L12.69,12.89H10.62C10.4,12.89 10.35,12.75 10.42,12.57L10.97,11.39C11,11.33 11.08,11.22 11.24,11.22H14.68C14.83,10.72 15.09,10.26 15.43,9.81C16.21,8.78 17.16,8.24 18.43,8C19.5,7.82 20.56,7.93 21.5,8.57C22.34,9.15 22.87,9.93 23,10.96C23.19,12.41 22.76,13.59 21.76,14.61C21.05,15.33 20.18,15.78 19.19,16L18.33,16.08C17.35,16.06 16.46,15.78 15.71,15.13C15.19,14.68 14.83,14.14 14.65,13.5C14.5,13.74 14.38,13.97 14.21,14.2C13.44,15.22 12.43,15.85 11.15,16C10.1,16.16 9.12,15.95 8.26,15.31C7.47,14.71 7,13.91 6.9,12.92C6.76,11.75 7.1,10.7 7.81,9.78C8.57,8.78 9.58,8.15 10.82,7.92C11.82,7.74 12.79,7.86 13.66,8.44C14.23,8.82 14.63,9.34 14.9,9.96C14.94,10.05 14.9,10.11 14.78,10.14M20.89,11.74L20.86,11.38C20.67,10.32 19.69,9.72 18.67,9.95C17.66,10.17 17,10.8 16.79,11.81C16.6,12.65 17,13.5 17.77,13.84C18.36,14.1 18.96,14.06 19.53,13.78C20.37,13.35 20.84,12.66 20.89,11.74Z"; -var mdiLanguageHaskell = "M2.08,19L6.75,12L2.08,5H5.58L10.25,12L5.58,19H2.08M6.75,19L11.42,12L6.75,5H10.25L19.59,19H16.09L13.17,14.63L10.25,19H6.75M18.03,14.92L16.5,12.58H21.92V14.92H18.03M15.7,11.42L14.14,9.08H21.92V11.42H15.7Z"; -var mdiLanguageHtml5 = "M12,17.56L16.07,16.43L16.62,10.33H9.38L9.2,8.3H16.8L17,6.31H7L7.56,12.32H14.45L14.22,14.9L12,15.5L9.78,14.9L9.64,13.24H7.64L7.93,16.43L12,17.56M4.07,3H19.93L18.5,19.2L12,21L5.5,19.2L4.07,3Z"; -var mdiLanguageJava = "M16.5,6.08C16.5,6.08 9.66,7.79 12.94,11.56C13.91,12.67 12.69,13.67 12.69,13.67C12.69,13.67 15.14,12.42 14,10.82C12.94,9.35 12.14,8.62 16.5,6.08M12.03,7.28C16.08,4.08 14,2 14,2C14.84,5.3 11.04,6.3 9.67,8.36C8.73,9.76 10.13,11.27 12,13C11.29,11.3 8.78,9.84 12.03,7.28M9.37,17.47C6.29,18.33 11.25,20.1 15.16,18.43C14.78,18.28 14.41,18.1 14.06,17.89C12.7,18.2 11.3,18.26 9.92,18.07C8.61,17.91 9.37,17.47 9.37,17.47M14.69,15.79C12.94,16.17 11.13,16.26 9.35,16.05C8.04,15.92 8.9,15.28 8.9,15.28C5.5,16.41 10.78,17.68 15.5,16.3C15.21,16.19 14.93,16 14.69,15.79M18.11,19.09C18.11,19.09 18.68,19.56 17.5,19.92C15.22,20.6 8.07,20.81 6.09,19.95C5.38,19.64 6.72,19.21 7.14,19.12C7.37,19.06 7.6,19.04 7.83,19.04C7.04,18.5 2.7,20.14 5.64,20.6C13.61,21.9 20.18,20 18.11,19.09M15.37,14.23C15.66,14.04 15.97,13.88 16.29,13.74C16.29,13.74 14.78,14 13.27,14.14C11.67,14.3 10.06,14.32 8.46,14.2C6.11,13.89 9.75,13 9.75,13C8.65,13 7.57,13.26 6.59,13.75C4.54,14.75 11.69,15.2 15.37,14.23M16.27,16.65C16.25,16.69 16.23,16.72 16.19,16.75C21.2,15.44 19.36,12.11 16.96,12.94C16.83,13 16.72,13.08 16.65,13.19C16.79,13.14 16.93,13.1 17.08,13.07C18.28,12.83 20,14.7 16.27,16.65M16.4,21.26C13.39,21.78 10.31,21.82 7.28,21.4C7.28,21.4 7.74,21.78 10.09,21.93C13.69,22.16 19.22,21.8 19.35,20.1C19.38,20.11 19.12,20.75 16.4,21.26Z"; -var mdiLanguageJavascript = "M3,3H21V21H3V3M7.73,18.04C8.13,18.89 8.92,19.59 10.27,19.59C11.77,19.59 12.8,18.79 12.8,17.04V11.26H11.1V17C11.1,17.86 10.75,18.08 10.2,18.08C9.62,18.08 9.38,17.68 9.11,17.21L7.73,18.04M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86Z"; -var mdiLanguageKotlin = "M2 2H22L12 12L22 22H2Z"; -var mdiLanguageLua = "M10.5,5A8.5,8.5 0 0,0 2,13.5A8.5,8.5 0 0,0 10.5,22A8.5,8.5 0 0,0 19,13.5A8.5,8.5 0 0,0 10.5,5M13.5,13A2.5,2.5 0 0,1 11,10.5A2.5,2.5 0 0,1 13.5,8A2.5,2.5 0 0,1 16,10.5A2.5,2.5 0 0,1 13.5,13M19.5,2A2.5,2.5 0 0,0 17,4.5A2.5,2.5 0 0,0 19.5,7A2.5,2.5 0 0,0 22,4.5A2.5,2.5 0 0,0 19.5,2"; -var mdiLanguageMarkdown = "M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z"; -var mdiLanguageMarkdownOutline = "M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M3.44 6.94C3.18 6.94 2.96 7.15 2.96 7.41V16.6C2.96 16.85 3.18 17.06 3.44 17.06H20.56C20.82 17.06 21.04 16.85 21.04 16.6V7.41C21.04 7.15 20.82 6.94 20.56 6.94H3.44M4.89 15.19V8.81H6.81L8.73 11.16L10.65 8.81H12.58V15.19H10.65V11.53L8.73 13.88L6.81 11.53V15.19H4.89M16.9 15.19L14 12.09H15.94V8.81H17.86V12.09H19.79L16.9 15.19"; -var mdiLanguagePhp = "M12,18.08C5.37,18.08 0,15.36 0,12C0,8.64 5.37,5.92 12,5.92C18.63,5.92 24,8.64 24,12C24,15.36 18.63,18.08 12,18.08M6.81,10.13C7.35,10.13 7.72,10.23 7.9,10.44C8.08,10.64 8.12,11 8.03,11.47C7.93,12 7.74,12.34 7.45,12.56C7.17,12.78 6.74,12.89 6.16,12.89H5.29L5.82,10.13H6.81M3.31,15.68H4.75L5.09,13.93H6.32C6.86,13.93 7.3,13.87 7.65,13.76C8,13.64 8.32,13.45 8.61,13.18C8.85,12.96 9.04,12.72 9.19,12.45C9.34,12.19 9.45,11.89 9.5,11.57C9.66,10.79 9.55,10.18 9.17,9.75C8.78,9.31 8.18,9.1 7.35,9.1H4.59L3.31,15.68M10.56,7.35L9.28,13.93H10.7L11.44,10.16H12.58C12.94,10.16 13.18,10.22 13.29,10.34C13.4,10.46 13.42,10.68 13.36,11L12.79,13.93H14.24L14.83,10.86C14.96,10.24 14.86,9.79 14.56,9.5C14.26,9.23 13.71,9.1 12.91,9.1H11.64L12,7.35H10.56M18,10.13C18.55,10.13 18.91,10.23 19.09,10.44C19.27,10.64 19.31,11 19.22,11.47C19.12,12 18.93,12.34 18.65,12.56C18.36,12.78 17.93,12.89 17.35,12.89H16.5L17,10.13H18M14.5,15.68H15.94L16.28,13.93H17.5C18.05,13.93 18.5,13.87 18.85,13.76C19.2,13.64 19.5,13.45 19.8,13.18C20.04,12.96 20.24,12.72 20.38,12.45C20.53,12.19 20.64,11.89 20.7,11.57C20.85,10.79 20.74,10.18 20.36,9.75C20,9.31 19.37,9.1 18.54,9.1H15.79L14.5,15.68Z"; -var mdiLanguagePython = "M19.14,7.5A2.86,2.86 0 0,1 22,10.36V14.14A2.86,2.86 0 0,1 19.14,17H12C12,17.39 12.32,17.96 12.71,17.96H17V19.64A2.86,2.86 0 0,1 14.14,22.5H9.86A2.86,2.86 0 0,1 7,19.64V15.89C7,14.31 8.28,13.04 9.86,13.04H15.11C16.69,13.04 17.96,11.76 17.96,10.18V7.5H19.14M14.86,19.29C14.46,19.29 14.14,19.59 14.14,20.18C14.14,20.77 14.46,20.89 14.86,20.89A0.71,0.71 0 0,0 15.57,20.18C15.57,19.59 15.25,19.29 14.86,19.29M4.86,17.5C3.28,17.5 2,16.22 2,14.64V10.86C2,9.28 3.28,8 4.86,8H12C12,7.61 11.68,7.04 11.29,7.04H7V5.36C7,3.78 8.28,2.5 9.86,2.5H14.14C15.72,2.5 17,3.78 17,5.36V9.11C17,10.69 15.72,11.96 14.14,11.96H8.89C7.31,11.96 6.04,13.24 6.04,14.82V17.5H4.86M9.14,5.71C9.54,5.71 9.86,5.41 9.86,4.82C9.86,4.23 9.54,4.11 9.14,4.11C8.75,4.11 8.43,4.23 8.43,4.82C8.43,5.41 8.75,5.71 9.14,5.71Z"; -var mdiLanguageR = "M12,4.29C6.5,4.29 2,7.29 2,11C2,14.28 5.56,17 10.24,17.58V19.71H13.65V17.59C14.5,17.5 15.29,17.34 16.04,17.11L17.42,19.71H21.28L18.96,15.8C20.83,14.58 22,12.87 22,11C22,7.29 17.5,4.29 12,4.29V4.29M13.53,6.91C17.73,6.91 20.83,8.31 20.83,11.5C20.83,13.21 19.91,14.41 18.41,15.15C18.32,15.1 18.24,15.05 18.19,15C17.83,14.84 17.23,14.66 17.23,14.66C17.23,14.66 20.21,14.44 20.21,11.47C20.21,8.5 17.09,8.45 17.09,8.45H10.24V15.61C7.69,14.87 5.93,13.3 5.93,11.5C5.93,8.96 9.33,6.91 13.53,6.91M13.68,10.89H15.75C15.75,10.89 16.7,10.84 16.7,11.83C16.7,12.8 15.75,12.8 15.75,12.8H13.68V10.89M13.65,15.3H14.57C14.75,15.3 14.84,15.35 15,15.5C15.13,15.6 15.27,15.79 15.39,15.96C14.84,16.03 14.26,16.06 13.65,16.06V15.3Z"; -var mdiLanguageRuby = "M18.8,2.07C21.32,2.5 22.04,4.23 22,6.04V6L20.86,20.93L6.08,21.94H6.09C4.86,21.89 2.13,21.77 2,17.95L3.37,15.45L6.14,21.91L8.5,14.29L8.45,14.3L8.47,14.28L16.18,16.74L14.19,8.96L21.54,8.5L15.75,3.76L18.8,2.06V2.07M2,17.91V17.93L2,17.91V17.91M6.28,6.23C9.24,3.28 13.07,1.54 14.54,3.03C16,4.5 14.46,8.12 11.5,11.06C8.5,14 4.73,15.84 3.26,14.36C1.79,12.87 3.3,9.17 6.27,6.23H6.28Z"; -var mdiLanguageRubyOnRails = "M19.8,16.7C19.8,16.7 21.6,16.5 21.6,14.3C21.6,12.1 19.5,11.8 19.5,11.8H15.7V19H17.6V17.3L19.3,19H22L19.8,16.7M19,15.3H17.5V13.7H19C19,13.7 19.4,13.9 19.4,14.5C19.5,15.1 19,15.3 19,15.3M21.3,8.2V8.4C13.2,6.1 10,13.2 10.6,18.7C10.6,18.7 4.9,18.7 4.3,18.7C5,13.3 11.8,2.6 21.3,8.2M20.5,6.9C19.8,6.6 19.1,6.3 18.4,6.1L18.5,4.8L20.6,5.6L20.5,6.9M18.5,8.7C19.2,8.7 19.9,8.8 20.6,9L20.5,10.2L18.7,10L18.5,8.7M13.9,5.8L13.5,4.6L15.6,4.4L16,5.7C15.8,5.7 14.1,5.8 13.9,5.8M15.2,9.5C15.6,9.3 16.3,9 17.2,8.8L17.6,10L15.8,10.7L15.2,9.5M11.8,6.5C11.2,6.8 10.6,7.1 10,7.5L9.2,6.2L11,5.2L11.8,6.5M14.3,10.1L15.1,11.3L14,12.6L12.9,11.6C13.2,11 13.7,10.5 14.3,10.1M11.6,15C11.7,14.2 11.9,13.5 12.2,12.7L13.4,13.7L13.1,15.6L11.6,15M7.9,9.3C7.4,9.8 6.9,10.4 6.5,10.9L5.2,9.8L6.7,8.2L7.9,9.3M4.8,13.7C4.4,14.5 4.1,15.3 3.8,16L2,15.3L2.9,13L4.8,13.7M11.5,16.3L13.3,16.9L13.6,18.9L11.6,18.4C11.6,18.2 11.5,17.5 11.5,16.3Z"; -var mdiLanguageRust = "M21.9 11.7L21 11.2V11L21.7 10.3C21.8 10.2 21.8 10 21.7 9.9L21.6 9.8L20.7 9.5C20.7 9.4 20.7 9.3 20.6 9.3L21.2 8.5C21.3 8.4 21.3 8.2 21.1 8.1C21.1 8.1 21 8.1 21 8L20 7.8C20 7.7 19.9 7.7 19.9 7.6L20.3 6.7V6.4C20.2 6.3 20.1 6.3 20 6.3H19C19 6.3 19 6.2 18.9 6.2L19.1 5.2C19.1 5 19 4.9 18.9 4.9H18.8L17.8 5.1C17.8 5 17.7 5 17.6 4.9V3.9C17.6 3.7 17.5 3.6 17.3 3.6H17.2L16.3 4H16.2L16 3C16 2.8 15.8 2.7 15.7 2.8H15.6L14.8 3.4C14.7 3.4 14.6 3.4 14.6 3.3L14.3 2.4C14.2 2.3 14.1 2.2 13.9 2.2C13.9 2.2 13.8 2.2 13.8 2.3L13 3H12.8L12.3 2.2C12.2 2 12 2 11.8 2L11.7 2.1L11.2 3H11L10.3 2.3C10.2 2.2 10 2.2 9.9 2.3L9.8 2.4L9.5 3.3C9.4 3.3 9.3 3.3 9.3 3.4L8.5 2.8C8.3 2.7 8.1 2.7 8 2.9V3L7.8 4C7.8 4 7.7 4 7.6 4.1L6.7 3.7C6.6 3.6 6.4 3.7 6.3 3.8V4.9C6.3 5 6.2 5 6.2 5.1L5.2 4.9C5 4.8 4.9 4.9 4.9 5.1V5.2L5.1 6.2C5 6.2 5 6.3 4.9 6.3H3.9C3.7 6.3 3.6 6.4 3.6 6.6V6.7L4 7.6V7.8L3 8C2.8 8 2.7 8.2 2.7 8.3V8.4L3.3 9.2C3.3 9.3 3.3 9.4 3.2 9.4L2.4 9.8C2.3 9.9 2.2 10 2.2 10.2C2.2 10.2 2.2 10.3 2.3 10.3L3 11V11.2L2.2 11.7C2 11.8 2 12 2 12.1L2.1 12.2L3 12.8V13L2.3 13.7C2.2 13.8 2.2 14 2.3 14.1L2.4 14.2L3.3 14.5C3.3 14.6 3.3 14.7 3.4 14.7L2.8 15.5C2.7 15.6 2.7 15.8 2.9 15.9C2.9 15.9 3 15.9 3 16L4 16.2C4 16.3 4.1 16.3 4.1 16.4L3.7 17.3C3.6 17.4 3.7 17.6 3.8 17.7H4.9C5 17.7 5 17.8 5.1 17.8L4.9 18.8C4.9 19 5 19.1 5.1 19.1H5.2L6.2 18.9C6.2 19 6.3 19 6.4 19.1V20.1C6.4 20.3 6.5 20.4 6.7 20.4H6.8L7.7 20H7.8L8 21C8 21.2 8.2 21.3 8.3 21.2H8.4L9.2 20.6C9.3 20.6 9.4 20.6 9.4 20.7L9.7 21.6C9.8 21.7 9.9 21.8 10.1 21.8C10.1 21.8 10.2 21.8 10.2 21.7L11 21H11.2L11.7 21.8C11.8 21.9 12 22 12.1 21.9L12.2 21.8L12.7 21H12.9L13.6 21.7C13.7 21.8 13.9 21.8 14 21.7L14.1 21.6L14.4 20.7C14.5 20.7 14.6 20.7 14.6 20.6L15.4 21.2C15.5 21.3 15.7 21.3 15.8 21.1C15.8 21.1 15.8 21 15.9 21L16.1 20C16.2 20 16.2 19.9 16.3 19.9L17.2 20.3C17.3 20.4 17.5 20.3 17.6 20.2V19.1L17.8 18.9L18.8 19.1C19 19.1 19.1 19 19.1 18.9V18.8L18.9 17.8L19.1 17.6H20.1C20.3 17.6 20.4 17.5 20.4 17.3V17.2L20 16.3C20 16.2 20.1 16.2 20.1 16.1L21.1 15.9C21.3 15.9 21.4 15.7 21.3 15.6V15.5L20.7 14.7L20.8 14.5L21.7 14.2C21.8 14.1 21.9 14 21.9 13.8C21.9 13.8 21.9 13.7 21.8 13.7L21 13V12.8L21.8 12.3C22 12.2 22 12 21.9 11.7C21.9 11.8 21.9 11.8 21.9 11.7M16.2 18.7C15.9 18.6 15.7 18.3 15.7 18C15.8 17.7 16.1 17.5 16.4 17.5C16.7 17.6 16.9 17.9 16.9 18.2C16.9 18.6 16.6 18.8 16.2 18.7M16 16.8C15.7 16.7 15.4 16.9 15.4 17.2L15 18.6C14.1 19 13.1 19.2 12 19.2C10.9 19.2 9.9 19 8.9 18.5L8.6 17.1C8.5 16.8 8.3 16.6 8 16.7L6.8 17C6.6 16.8 6.4 16.5 6.2 16.3H12.2C12.3 16.3 12.3 16.3 12.3 16.2V14.1C12.3 14 12.3 14 12.2 14H10.5V12.7H12.4C12.6 12.7 13.3 12.7 13.6 13.7C13.7 14 13.8 15 14 15.3C14.1 15.6 14.6 16.3 15.1 16.3H18.2C18 16.6 17.8 16.8 17.5 17.1L16 16.8M7.7 18.7C7.4 18.8 7.1 18.6 7 18.2C6.9 17.9 7.1 17.6 7.5 17.5S8.1 17.6 8.2 18C8.2 18.3 8 18.6 7.7 18.7M5.4 9.5C5.5 9.8 5.4 10.2 5.1 10.3C4.8 10.4 4.4 10.3 4.3 10C4.2 9.7 4.3 9.3 4.6 9.2C5 9.1 5.3 9.2 5.4 9.5M4.7 11.1L6 10.6C6.3 10.5 6.4 10.2 6.3 9.9L6 9.3H7V14H5C4.7 13 4.6 12.1 4.7 11.1M10.3 10.7V9.3H12.8C12.9 9.3 13.7 9.4 13.7 10C13.7 10.5 13.1 10.7 12.6 10.7H10.3M19.3 11.9V12.4H18.5C18.4 12.4 18.4 12.4 18.4 12.5V12.8C18.4 13.6 17.9 13.8 17.5 13.8C17.1 13.8 16.7 13.6 16.6 13.4C16.4 12.1 16 11.9 15.4 11.4C16.1 10.9 16.9 10.2 16.9 9.3C16.9 8.3 16.2 7.7 15.8 7.4C15.1 7 14.4 6.9 14.2 6.9H6.6C7.7 5.7 9.1 4.9 10.7 4.6L11.6 5.6C11.8 5.8 12.1 5.8 12.4 5.6L13.4 4.6C15.5 5 17.3 6.3 18.4 8.2L17.7 9.8C17.6 10.1 17.7 10.4 18 10.5L19.3 11.1V11.9M11.6 3.9C11.8 3.7 12.2 3.7 12.4 3.9C12.6 4.1 12.6 4.5 12.4 4.7C12.1 5 11.8 5 11.5 4.7C11.3 4.5 11.4 4.2 11.6 3.9M18.5 9.5C18.6 9.2 19 9.1 19.3 9.2C19.6 9.3 19.7 9.7 19.6 10C19.5 10.3 19.1 10.4 18.8 10.3C18.5 10.2 18.4 9.8 18.5 9.5Z"; -var mdiLanguageSwift = "M17.09,19.72C14.73,21.08 11.5,21.22 8.23,19.82C5.59,18.7 3.4,16.74 2,14.5C2.67,15.05 3.46,15.5 4.3,15.9C7.67,17.47 11.03,17.36 13.4,15.9C10.03,13.31 7.16,9.94 5.03,7.19C4.58,6.74 4.25,6.18 3.91,5.68C12.19,11.73 11.83,13.27 6.32,4.67C11.21,9.61 15.75,12.41 15.75,12.41C15.91,12.5 16,12.57 16.11,12.63C16.21,12.38 16.3,12.12 16.37,11.85C17.16,9 16.26,5.73 14.29,3.04C18.84,5.79 21.54,10.95 20.41,15.28C20.38,15.39 20.35,15.5 20.36,15.67C22.6,18.5 22,21.45 21.71,20.89C20.5,18.5 18.23,19.24 17.09,19.72V19.72Z"; -var mdiLanguageTypescript = "M3,3H21V21H3V3M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86M13,11.25H8V12.75H9.5V20H11.25V12.75H13V11.25Z"; -var mdiLanguageXaml = "M16.93 7.9L19.31 12L16.95 16.09L16.33 15L17.8 12.5C17.97 12.19 17.97 11.83 17.8 11.54L16.32 9L16.93 7.9M16.92 6.57C16.89 6.57 16.85 6.59 16.83 6.62L15.56 8.87C15.5 8.94 15.5 9 15.56 9.09L17.18 11.9C17.22 11.97 17.22 12.05 17.18 12.12L15.57 14.91C15.53 14.97 15.53 15.06 15.57 15.13L16.85 17.36C16.87 17.4 16.91 17.42 16.94 17.42C17 17.42 17 17.4 17.04 17.36L20 12.23C20.08 12.09 20.08 11.92 20 11.79L17 6.62C17 6.59 16.96 6.57 16.92 6.57M21.91 11.67L17.23 3.58C17.11 3.38 16.89 3.25 16.66 3.25H7.28C7.05 3.25 6.83 3.38 6.71 3.58L2 11.67C1.91 11.87 1.91 12.13 2 12.33L6.71 20.42C6.83 20.62 7.05 20.75 7.28 20.75H16.66C16.89 20.75 17.11 20.62 17.23 20.42L21.91 12.33C22.03 12.13 22.03 11.88 21.91 11.67M7.3 3.95H16.12L11.76 11.65H6.93L10.87 4.82C10.91 4.75 10.86 4.66 10.78 4.66L8.21 4.65C8.13 4.65 8.06 4.7 8 4.76L4.04 11.65H2.84L7.3 3.95M6.17 12.46L9.74 18.63L8.5 18.63L4.87 12.35L4.67 12L4.87 11.65L8.5 5.37L9.73 5.37L6.17 11.53C6.15 11.57 6.13 11.61 6.11 11.65C6.03 11.88 6.03 12.13 6.12 12.35C6.13 12.39 6.15 12.43 6.17 12.46M7.3 20.05L2.85 12.35H4.05L8.03 19.23C8.07 19.3 8.14 19.34 8.22 19.34L10.79 19.34C10.87 19.34 10.92 19.25 10.88 19.18L6.94 12.35H11.77L16.17 20.05H7.3M16.8 19.75L12.37 12L16.78 4.21L21.29 12L16.8 19.75Z"; -var mdiLaptop = "M4,6H20V16H4M20,18A2,2 0 0,0 22,16V6C22,4.89 21.1,4 20,4H4C2.89,4 2,4.89 2,6V16A2,2 0 0,0 4,18H0V20H24V18H20Z"; -var mdiLaptopChromebook = "M20,15H4V5H20M14,18H10V17H14M22,18V3H2V18H0V20H24V18H22Z"; -var mdiLaptopMac = "M12,19A1,1 0 0,1 11,18A1,1 0 0,1 12,17A1,1 0 0,1 13,18A1,1 0 0,1 12,19M4,5H20V16H4M20,18A2,2 0 0,0 22,16V5C22,3.89 21.1,3 20,3H4C2.89,3 2,3.89 2,5V16A2,2 0 0,0 4,18H0A2,2 0 0,0 2,20H22A2,2 0 0,0 24,18H20Z"; -var mdiLaptopOff = "M1,4.27L2.28,3L20,20.72L18.73,22L16.73,20H0V18H4C2.89,18 2,17.1 2,16V6C2,5.78 2.04,5.57 2.1,5.37L1,4.27M4,16H12.73L4,7.27V16M20,16V6H7.82L5.82,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H21.82L17.82,16H20Z"; -var mdiLaptopWindows = "M3,4H21A1,1 0 0,1 22,5V16A1,1 0 0,1 21,17H22L24,20V21H0V20L2,17H3A1,1 0 0,1 2,16V5A1,1 0 0,1 3,4M4,6V15H20V6H4Z"; -var mdiLaravel = "M21.7 6.53C21.71 6.55 21.71 6.58 21.71 6.61V10.9C21.71 11 21.65 11.12 21.56 11.17L17.95 13.25V17.36C17.95 17.47 17.9 17.57 17.8 17.63L10.28 21.96C10.26 21.97 10.24 22 10.22 22L10.2 22C10.15 22 10.09 22 10.04 22C10.03 22 10 22 10 22C10 22 10 21.97 9.96 21.96L2.44 17.63C2.35 17.58 2.29 17.47 2.29 17.36V4.5C2.29 4.45 2.29 4.42 2.3 4.4C2.3 4.39 2.31 4.38 2.31 4.37C2.31 4.35 2.32 4.34 2.33 4.32C2.33 4.31 2.34 4.3 2.35 4.29C2.36 4.28 2.37 4.27 2.38 4.26C2.39 4.25 2.4 4.24 2.41 4.23C2.42 4.22 2.43 4.21 2.44 4.21L6.2 2.04C6.3 2 6.42 2 6.5 2.04L10.28 4.21H10.28C10.29 4.22 10.3 4.22 10.31 4.23C10.32 4.24 10.33 4.25 10.34 4.26C10.35 4.27 10.36 4.28 10.37 4.29C10.38 4.3 10.39 4.31 10.39 4.32C10.4 4.34 10.41 4.35 10.41 4.37C10.41 4.38 10.42 4.39 10.42 4.4C10.43 4.43 10.43 4.45 10.43 4.5V12.5L13.57 10.72V6.61C13.57 6.58 13.57 6.55 13.58 6.53L13.59 6.5C13.59 6.5 13.6 6.47 13.61 6.45C13.61 6.44 13.62 6.43 13.63 6.42C13.64 6.41 13.65 6.4 13.66 6.39C13.67 6.38 13.68 6.37 13.69 6.36C13.7 6.35 13.71 6.34 13.72 6.34L17.5 4.17C17.58 4.11 17.7 4.11 17.8 4.17L21.56 6.34C21.57 6.34 21.58 6.35 21.59 6.36L21.62 6.39C21.63 6.4 21.64 6.41 21.65 6.42C21.66 6.43 21.66 6.44 21.67 6.45C21.68 6.47 21.68 6.5 21.69 6.5C21.7 6.5 21.7 6.5 21.7 6.53M21.09 10.72V7.15L17.95 8.95V12.5L21.09 10.72M17.33 17.18V13.6L10.43 17.54V21.15L17.33 17.18M2.91 5V17.18L9.81 21.15V17.54L6.21 15.5L6.2 15.5L6.2 15.5C6.19 15.5 6.18 15.5 6.17 15.47C6.16 15.47 6.15 15.46 6.14 15.45V15.45C6.13 15.44 6.12 15.43 6.11 15.42C6.1 15.41 6.1 15.4 6.09 15.39V15.39C6.08 15.37 6.08 15.36 6.07 15.35C6.07 15.33 6.06 15.32 6.06 15.31C6.05 15.3 6.05 15.28 6.05 15.27C6.05 15.25 6.05 15.24 6.05 15.23V6.82L2.91 5M6.36 2.68L3.23 4.5L6.36 6.28L9.5 4.5L6.36 2.68M9.81 12.88V5L6.67 6.82V14.69L9.81 12.88M17.64 4.8L14.5 6.61L17.64 8.41L20.77 6.61L17.64 4.8M17.33 8.95L14.19 7.15V10.72L17.33 12.5V8.95M10.12 17L17 13.06L13.88 11.26L7 15.23L10.12 17Z"; -var mdiLaserPointer = "M9 13L5 16C4 16.88 3.86 18.12 4 19C4.13 20 4.91 21.22 6 21.68C7.57 22.35 9.09 21.9 10.04 20.92L19 13C20.86 11.62 20 9 18 9H12L19.46 4.61C19.9 4.29 20.08 3.82 20.06 3.37C20 2.67 19.46 2 18.6 2H18.54C18.19 2 17.86 2.11 17.56 2.29L5 9C4.19 9.46 3.94 10.24 4 11C4.05 12.03 4.74 13 6 13M5 18.5C5 17.12 6.12 16 7.5 16S10 17.12 10 18.5 8.88 21 7.5 21 5 19.88 5 18.5Z"; -var mdiLasso = "M12 2C17.5 2 22 5.13 22 9C22 12.26 18.81 15 14.5 15.78L14.5 15.5C14.5 14.91 14.4 14.34 14.21 13.81C17.55 13.21 20 11.28 20 9C20 6.24 16.42 4 12 4C7.58 4 4 6.24 4 9C4 10.19 4.67 11.29 5.79 12.15C5.35 12.64 5 13.21 4.78 13.85C3.06 12.59 2 10.88 2 9C2 5.13 6.5 2 12 2M9.5 12C11.43 12 13 13.57 13 15.5C13 17.4 11.5 18.95 9.6 19C9.39 19.36 9.18 20 9.83 20.68C11 21.88 13.28 19.72 16.39 19.71C18.43 19.7 20.03 19.97 20.03 19.97C20.03 19.97 21.08 20.1 20.97 21.04C20.86 21.97 19.91 21.97 19.91 21.97C19.53 21.93 18.03 21.58 16.22 21.68C14.41 21.77 13.47 22.41 12.56 22.69C11.66 22.97 9.91 23.38 8.3 22.05C6.97 20.96 7.46 19.11 7.67 18.5C6.67 17.87 6 16.76 6 15.5C6 13.57 7.57 12 9.5 12M9.5 14C8.67 14 8 14.67 8 15.5C8 16.33 8.67 17 9.5 17C10.33 17 11 16.33 11 15.5C11 14.67 10.33 14 9.5 14Z"; -var mdiLastpass = "M14,12A2,2 0 0,1 16,10A2,2 0 0,1 18,12A2,2 0 0,1 16,14A2,2 0 0,1 14,12M8,12A2,2 0 0,1 10,10A2,2 0 0,1 12,12A2,2 0 0,1 10,14A2,2 0 0,1 8,12M2,12A2,2 0 0,1 4,10A2,2 0 0,1 6,12A2,2 0 0,1 4,14A2,2 0 0,1 2,12M22,5H20V19H22V5Z"; -var mdiLatitude = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 4C15 4 17.5 5.6 18.9 8H5.1C6.5 5.6 9 4 12 4M12 20C9 20 6.5 18.4 5.1 16H18.9C17.5 18.4 15 20 12 20M4.3 14C4.1 13.4 4 12.7 4 12S4.1 10.6 4.3 10H19.8C20 10.6 20.1 11.3 20.1 12S20 13.4 19.8 14H4.3Z"; -var mdiLaunch = "M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z"; -var mdiLavaLamp = "M10,3L8,16H16L14,3H10M11.5,5.75A0.75,0.75 0 0,1 12.25,6.5A0.75,0.75 0 0,1 11.5,7.25A0.75,0.75 0 0,1 10.75,6.5A0.75,0.75 0 0,1 11.5,5.75M12.5,8.5A1,1 0 0,1 13.5,9.5A1,1 0 0,1 12.5,10.5A1,1 0 0,1 11.5,9.5A1,1 0 0,1 12.5,8.5M11.5,12A1.5,1.5 0 0,1 13,13.5A1.5,1.5 0 0,1 11.5,15A1.5,1.5 0 0,1 10,13.5A1.5,1.5 0 0,1 11.5,12M8,17L10,19L8,21H16L14,19L16,17H8Z"; -var mdiLayers = "M12,16L19.36,10.27L21,9L12,2L3,9L4.63,10.27M12,18.54L4.62,12.81L3,14.07L12,21.07L21,14.07L19.37,12.8L12,18.54Z"; -var mdiLayersMinus = "M22,17V19H14V17H22M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z"; -var mdiLayersOff = "M3.27,1L2,2.27L6.22,6.5L3,9L4.63,10.27L12,16L14.1,14.37L15.53,15.8L12,18.54L4.63,12.81L3,14.07L12,21.07L16.95,17.22L20.73,21L22,19.73L3.27,1M19.36,10.27L21,9L12,2L9.09,4.27L16.96,12.15L19.36,10.27M19.81,15L21,14.07L19.57,12.64L18.38,13.56L19.81,15Z"; -var mdiLayersOffOutline = "M12,4.53L10.83,5.44L9.41,4L12,2L21,9L17.28,11.89L15.85,10.47L17.74,9L12,4.53M21,14.07L20.13,14.75L18.7,13.32L19.37,12.8L21,14.07M3.41,0.86L22.14,19.59L20.73,21L16.95,17.22L12,21.07L3,14.07L4.62,12.81L12,18.54L15.5,15.79L14.1,14.37L12,16L3,9L6.22,6.5L2,2.27L3.41,0.86M12,13.47L12.67,12.94L7.65,7.92L6.26,9L12,13.47Z"; -var mdiLayersOutline = "M12,18.54L19.37,12.8L21,14.07L12,21.07L3,14.07L4.62,12.81L12,18.54M12,16L3,9L12,2L21,9L12,16M12,4.53L6.26,9L12,13.47L17.74,9L12,4.53Z"; -var mdiLayersPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z"; -var mdiLayersRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z"; -var mdiLayersSearch = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M9.59 19.2L3 14.07L4.62 12.81L9 16.22C9 16.32 9 16.41 9 16.5C9 17.46 9.22 18.38 9.59 19.2M4.63 10.27L3 9L12 2L21 9L19.36 10.27L18.65 10.82C17.72 10.3 16.64 10 15.5 10C12.79 10 10.46 11.68 9.5 14.05L4.63 10.27Z"; -var mdiLayersSearchOutline = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M9.59 19.2L3 14.07L4.62 12.81L9 16.22C9 16.32 9 16.41 9 16.5C9 17.46 9.22 18.38 9.59 19.2M9.5 14.04L3 9L12 2L21 9L18.66 10.82C17.96 10.44 17.19 10.18 16.37 10.07L17.74 9L12 4.53L6.26 9L10.53 12.32C10.1 12.84 9.74 13.42 9.5 14.04Z"; -var mdiLayersTriple = "M12 0L3 7L4.63 8.27L12 14L19.36 8.27L21 7L12 0M19.37 10.73L12 16.47L4.62 10.74L3 12L12 19L21 12L19.37 10.73M19.37 15.73L12 21.47L4.62 15.74L3 17L12 24L21 17L19.37 15.73Z"; -var mdiLayersTripleOutline = "M12 16.54L19.37 10.8L21 12.07L12 19.07L3 12.07L4.62 10.81L12 16.54M12 14L3 7L12 0L21 7L12 14M12 2.53L6.26 7L12 11.47L17.74 7L12 2.53M12 21.47L19.37 15.73L21 17L12 24L3 17L4.62 15.74L12 21.47"; -var mdiLeadPencil = "M16.84,2.73C16.45,2.73 16.07,2.88 15.77,3.17L13.65,5.29L18.95,10.6L21.07,8.5C21.67,7.89 21.67,6.94 21.07,6.36L17.9,3.17C17.6,2.88 17.22,2.73 16.84,2.73M12.94,6L4.84,14.11L7.4,14.39L7.58,16.68L9.86,16.85L10.15,19.41L18.25,11.3M4.25,15.04L2.5,21.73L9.2,19.94L8.96,17.78L6.65,17.61L6.47,15.29"; -var mdiLeaf = "M17,8C8,10 5.9,16.17 3.82,21.34L5.71,22L6.66,19.7C7.14,19.87 7.64,20 8,20C19,20 22,3 22,3C21,5 14,5.25 9,6.25C4,7.25 2,11.5 2,13.5C2,15.5 3.75,17.25 3.75,17.25C7,8 17,8 17,8Z"; -var mdiLeafMaple = "M21.79,13L16,16L17,18L13,17.25V21H11V17.25L7,18L8,16L2.21,13L3.21,11.27L1.61,8L5.21,7.77L6.21,6L9.63,9.9L8,5H10L12,2L14,5H16L14.37,9.9L17.79,6L18.79,7.73L22.39,7.96L20.79,11.19L21.79,13Z"; -var mdiLeafMapleOff = "M18.11 14.91L8.2 5H10L12 2L14 5H16L14.37 9.9L17.79 6L18.79 7.73L22.39 7.96L20.79 11.19L21.79 13L18.11 14.91M2.39 1.73L1.11 3L5.45 7.34L5.21 7.77L1.61 8L3.21 11.27L2.21 13L8 16L7 18L11 17.25V21H13V17.25L15.91 17.8L20.84 22.73L22.11 21.46L2.39 1.73Z"; -var mdiLeafOff = "M20.84 22.73L15.14 17.03C13.26 18.79 10.92 20 8 20C7.64 20 7.14 19.87 6.66 19.7L5.71 22L3.82 21.34C5.15 18.03 6.5 14.32 9.66 11.55L8.77 10.66C6.76 12.03 4.86 14.1 3.75 17.25C3.75 17.25 2 15.5 2 13.5C2 12 3.12 9.32 5.72 7.61L1.11 3L2.39 1.73C2.39 1.73 16.39 15.74 16.39 15.74L22.11 21.46L20.84 22.73M17 8C15.35 8.37 13.93 8.88 12.7 9.5L17.5 14.29C20.87 9.35 22 3 22 3C21.03 4.95 14.35 5.24 9.38 6.18L12.15 8.95C14.81 8 17 8 17 8Z"; -var mdiLeak = "M6,3H3V6A3,3 0 0,0 6,3M14,3H12A9,9 0 0,1 3,12V14C9.08,14 14,9.07 14,3M10,3H8A5,5 0 0,1 3,8V10A7,7 0 0,0 10,3M10,21H12A9,9 0 0,1 21,12V10A11,11 0 0,0 10,21M18,21H21V18A3,3 0 0,0 18,21M14,21H16A5,5 0 0,1 21,16V14A7,7 0 0,0 14,21Z"; -var mdiLeakOff = "M10,3H8C8,3.37 7.96,3.72 7.88,4.06L9.47,5.65C9.81,4.84 10,3.94 10,3M3,4.27L5.84,7.11C5.03,7.67 4.06,8 3,8V10C4.61,10 6.09,9.45 7.27,8.54L8.7,9.97C7.14,11.24 5.16,12 3,12V14C5.71,14 8.19,13 10.11,11.38L12.61,13.88C11,15.81 10,18.29 10,21H12C12,18.84 12.76,16.86 14.03,15.31L15.46,16.74C14.55,17.91 14,19.39 14,21H16C16,19.94 16.33,18.97 16.89,18.16L19.73,21L21,19.73L4.27,3L3,4.27M14,3H12C12,4.5 11.63,5.91 11,7.16L12.44,8.62C13.42,7 14,5.06 14,3M19.94,16.12C20.28,16.04 20.63,16 21,16V14C20.06,14 19.16,14.19 18.34,14.5L19.94,16.12M15.38,11.56L16.84,13C18.09,12.37 19.5,12 21,12V10C18.94,10 17,10.58 15.38,11.56Z"; -var mdiLedOff = "M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6Z"; -var mdiLedOn = "M11,0V4H13V0H11M18.3,2.29L15.24,5.29L16.64,6.71L19.7,3.71L18.3,2.29M5.71,2.29L4.29,3.71L7.29,6.71L8.71,5.29L5.71,2.29M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M2,9V11H6V9H2M18,9V11H22V9H18Z"; -var mdiLedOutline = "M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M12,8A2,2 0 0,1 14,10V15H10V10A2,2 0 0,1 12,8Z"; -var mdiLedStrip = "M2.81,8.46L14.83,20.5L15.54,19.78L16.95,21.19L18.36,19.78L16.95,18.36L18.36,16.95L19.78,18.36L21.19,16.95L19.78,15.54L20.5,14.83L8.46,2.81L2.81,8.46M5.64,8.46L8.46,5.64L17.66,14.83L14.83,17.66L5.64,8.46M7.05,8.46L8.46,9.88L9.88,8.46L8.46,7.05L7.05,8.46M9.17,10.59L10.59,12L12,10.59L10.59,9.17L9.17,10.59M11.29,12.71L12.71,14.12L14.12,12.71L12.71,11.29L11.29,12.71M13.41,14.83L14.83,16.24L16.24,14.83L14.83,13.41L13.41,14.83Z"; -var mdiLedStripVariant = "M2.95 3L2 6.91L19.34 11.25L20.29 7.34L2.95 3M6.09 6.89L4.16 6.41L4.64 4.46L6.57 4.94L6.09 6.89M9.94 7.86L8 7.38L8.5 5.42L10.42 5.91L9.94 7.86M13.8 8.82L11.87 8.34L12.35 6.39L14.27 6.87L13.8 8.82M17.65 9.79L15.72 9.31L16.2 7.35L18.13 7.84L17.65 9.79M4.66 12.75L3.71 16.66L21.05 21L22 17.1L4.66 12.75M7.8 16.65L5.88 16.16L6.35 14.21L8.28 14.69L7.8 16.65M11.65 17.61L9.73 17.13L10.2 15.18L12.13 15.66L11.65 17.61M15.5 18.58L13.58 18.09L14.06 16.14L16 16.62L15.5 18.58M19.36 19.54L17.43 19.06L17.91 17.11L19.84 17.59L19.36 19.54M6.25 12.11L11 10.2L17.75 11.89L13 13.8L6.25 12.11Z"; -var mdiLedVariantOff = "M12,3C10.05,3 8.43,4.4 8.08,6.25L16.82,15H18V13H16V7A4,4 0 0,0 12,3M3.28,4L2,5.27L8,11.27V13H6V15H9V21H11V15H11.73L13,16.27V21H15V18.27L18.73,22L20,20.72L15,15.72L8,8.72L3.28,4Z"; -var mdiLedVariantOn = "M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3Z"; -var mdiLedVariantOutline = "M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3M12,5A2,2 0 0,1 14,7V12H10V7A2,2 0 0,1 12,5Z"; -var mdiLeek = "M10 2V5.55L12 7.55L14 5.55V2H10M6.34 4L3.87 6.5L15 17.62V12.67L6.34 4M17.66 4L13.06 8.61L15.54 11.09L20.13 6.5L17.66 4M9 13.74V20A2 2 0 0 0 11 22H13A2 2 0 0 0 15 20V19.74L13 17.74V20H11V15.74L9 13.74Z"; -var mdiLessThan = "M18.5,4.14L19.5,5.86L8.97,12L19.5,18.14L18.5,19.86L5,12L18.5,4.14Z"; -var mdiLessThanOrEqual = "M18.5,2.27L5,10.14L18.5,18L19.5,16.27L8.97,10.14L19.5,4L18.5,2.27M5,20V22H20V20H5Z"; -var mdiLibrary = "M12,8A3,3 0 0,0 15,5A3,3 0 0,0 12,2A3,3 0 0,0 9,5A3,3 0 0,0 12,8M12,11.54C9.64,9.35 6.5,8 3,8V19C6.5,19 9.64,20.35 12,22.54C14.36,20.35 17.5,19 21,19V8C17.5,8 14.36,9.35 12,11.54Z"; -var mdiLibraryShelves = "M19.5,9V1.5H16.5V9H13.5V1.5H10.5V9H7.5V1.5H4.65V9H3V10.5H21V9H19.5M19.5,13.5H16.5V21H13.5V13.5H10.5V21H7.5V13.5H4.65V21H3V22.5H21V21H19.5V13.5Z"; -var mdiLicense = "M9 10A3.04 3.04 0 0 1 12 7A3.04 3.04 0 0 1 15 10A3.04 3.04 0 0 1 12 13A3.04 3.04 0 0 1 9 10M12 19L16 20V16.92A7.54 7.54 0 0 1 12 18A7.54 7.54 0 0 1 8 16.92V20M12 4A5.78 5.78 0 0 0 7.76 5.74A5.78 5.78 0 0 0 6 10A5.78 5.78 0 0 0 7.76 14.23A5.78 5.78 0 0 0 12 16A5.78 5.78 0 0 0 16.24 14.23A5.78 5.78 0 0 0 18 10A5.78 5.78 0 0 0 16.24 5.74A5.78 5.78 0 0 0 12 4M20 10A8.04 8.04 0 0 1 19.43 12.8A7.84 7.84 0 0 1 18 15.28V23L12 21L6 23V15.28A7.9 7.9 0 0 1 4 10A7.68 7.68 0 0 1 6.33 4.36A7.73 7.73 0 0 1 12 2A7.73 7.73 0 0 1 17.67 4.36A7.68 7.68 0 0 1 20 10Z"; -var mdiLifebuoy = "M19.79,15.41C20.74,13.24 20.74,10.75 19.79,8.59L17.05,9.83C17.65,11.21 17.65,12.78 17.06,14.17L19.79,15.41M15.42,4.21C13.25,3.26 10.76,3.26 8.59,4.21L9.83,6.94C11.22,6.35 12.79,6.35 14.18,6.95L15.42,4.21M4.21,8.58C3.26,10.76 3.26,13.24 4.21,15.42L6.95,14.17C6.35,12.79 6.35,11.21 6.95,9.82L4.21,8.58M8.59,19.79C10.76,20.74 13.25,20.74 15.42,19.78L14.18,17.05C12.8,17.65 11.22,17.65 9.84,17.06L8.59,19.79M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8Z"; -var mdiLightSwitch = "M7,1A2,2 0 0,0 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1H7M7,3H17V21H7V3M9,6V18H15V6H9M10,7H14V11H10V7M10,13H14V17H10V13Z"; -var mdiLightbulb = "M12,2A7,7 0 0,0 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H15A1,1 0 0,0 16,17V14.74C17.81,13.47 19,11.38 19,9A7,7 0 0,0 12,2M9,21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9V21Z"; -var mdiLightbulbCfl = "M10.5 2C11.88 2 13 3.12 13 4.5V14H14V4.47C14 3.56 13.63 2.7 13 2.05C13.17 2 13.33 2 13.5 2C14.88 2 16 3.12 16 4.5V14H17V17C17 17.55 16.55 18 16 18H8C7.45 18 7 17.55 7 17V14H8V4.5C8 3.12 9.12 2 10.5 2M10.5 4C10.22 4 10 4.22 10 4.5V14H11V4.5C11 4.22 10.78 4 10.5 4M9 20H15V21C15 21.55 14.55 22 14 22H10C9.45 22 9 21.55 9 21V20Z"; -var mdiLightbulbCflOff = "M14 4.47C14 3.56 13.63 2.7 13 2.05C13.17 2 13.33 2 13.5 2C14.88 2 16 3.12 16 4.5V14H17V15.18L14 12.18V4.5L14 4.47M10 4.5C10 4.22 10.22 4 10.5 4S11 4.22 11 4.5V9.18L13 11.18V4.5C13 3.12 11.88 2 10.5 2S8 3.12 8 4.5V6.18L10 8.18V4.5M9 21C9 21.55 9.45 22 10 22H14C14.55 22 15 21.55 15 21V20H9V21M20 20.72L18.73 22L14.73 18H8C7.45 18 7 17.55 7 17V14H8V11.27L2 5.27L3.28 4L20 20.72Z"; -var mdiLightbulbCflSpiral = "M11 2C10.84 2 10.69 2.03 10.55 2.1L8.55 3.1C7.56 3.66 8 5 9 5C9.16 5 9.32 4.95 9.45 4.9L11.45 3.9C12.43 3.36 12 2 11 2M15 4C14.83 4 14.69 4.03 14.55 4.1L8.55 7.1C7.56 7.68 8 9 9 9C9.18 9 9.32 8.95 9.45 8.9L15.45 5.9C16.41 5.43 16 4 15 4M15 8C14.84 8 14.69 8.03 14.55 8.1L8.7 11.03C8.2 11.25 8 11.6 8 12V14H7V17C7 17.55 7.44 18 8 18H16C16.55 18 17 17.55 17 17V14H16V13C16 12.44 15.55 12 15 12C14.45 12 14 12.45 14 13V14H10V12.62L15.45 9.9C16.42 9.34 16 8 15 8M9 20V21C9 21.57 9.46 22 10 22H14C14.56 22 15 21.55 15 21V20"; -var mdiLightbulbCflSpiralOff = "M15.45 9.9L13.88 10.68L12.38 9.18L14.55 8.1C14.69 8.03 14.84 8 15 8C16 8 16.42 9.34 15.45 9.9M11.22 8L15.45 5.9C16.41 5.43 16 4 15 4C14.83 4 14.69 4.03 14.55 4.1L9.72 6.5L11.22 8M20.84 22.73L16.09 18H8C7.44 18 7 17.55 7 17V14H8V12C8 11.6 8.2 11.25 8.7 11.03L9 10.88L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M12.11 14L10.5 12.38L10 12.62V14H12.11M9 21C9 21.57 9.46 22 10 22H14C14.56 22 15 21.55 15 21V20H9V21M9 5C9.16 5 9.32 4.95 9.45 4.9L11.45 3.9C12.43 3.36 12 2 11 2C10.84 2 10.69 2.03 10.55 2.1L8.55 3.1C7.56 3.66 8 5 9 5Z"; -var mdiLightbulbGroup = "M15 14V16A1 1 0 0 1 14 17H10A1 1 0 0 1 9 16V14A5 5 0 1 1 15 14M14 18H10V19A1 1 0 0 0 11 20H13A1 1 0 0 0 14 19M7 19V18H5V19A1 1 0 0 0 6 20H7.17A2.93 2.93 0 0 1 7 19M5 10A6.79 6.79 0 0 1 5.68 7A4 4 0 0 0 4 14.45V16A1 1 0 0 0 5 17H7V14.88A6.92 6.92 0 0 1 5 10M17 18V19A2.93 2.93 0 0 1 16.83 20H18A1 1 0 0 0 19 19V18M18.32 7A6.79 6.79 0 0 1 19 10A6.92 6.92 0 0 1 17 14.88V17H19A1 1 0 0 0 20 16V14.45A4 4 0 0 0 18.32 7Z"; -var mdiLightbulbGroupOff = "M20.84 22.73L18.09 20C18.06 20 18.03 20 18 20H16.83C16.94 19.68 17 19.34 17 19V18.89L14.75 16.64C14.57 16.86 14.31 17 14 17H10C9.45 17 9 16.55 9 16V14C7.4 12.8 6.74 10.84 7.12 9L5.5 7.4C5.18 8.23 5 9.11 5 10C5 11.83 5.72 13.58 7 14.88V17H5C4.45 17 4 16.55 4 16V14.45C2.86 13.79 2.12 12.62 2 11.31C1.85 9.27 3.25 7.5 5.2 7.09L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M15 6C13.22 4.67 10.86 4.72 9.13 5.93L16.08 12.88C17.63 10.67 17.17 7.63 15 6M19.79 16.59C19.91 16.42 20 16.22 20 16V14.45C21.91 13.34 22.57 10.9 21.46 9C20.8 7.85 19.63 7.11 18.32 7C18.77 7.94 19 8.96 19 10C19 11.57 18.47 13.09 17.5 14.31L19.79 16.59M10 19C10 19.55 10.45 20 11 20H13C13.55 20 14 19.55 14 19V18H10V19M7 18H5V19C5 19.55 5.45 20 6 20H7.17C7.06 19.68 7 19.34 7 19V18Z"; -var mdiLightbulbGroupOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L5.2 7.09C3.25 7.5 1.85 9.27 2 11.31C2.12 12.62 2.86 13.79 4 14.45V16C4 16.55 4.45 17 5 17H7V14.88C5.72 13.58 5 11.83 5 10C5 9.11 5.18 8.23 5.5 7.4L7.12 9C6.74 10.84 7.4 12.8 9 14V16C9 16.55 9.45 17 10 17H14C14.31 17 14.57 16.86 14.75 16.64L17 18.89V19C17 19.34 16.94 19.68 16.83 20H18C18.03 20 18.06 20 18.09 20L20.84 22.73L22.11 21.46M9.23 11.12L10.87 12.76C10.11 12.46 9.53 11.86 9.23 11.12M13 15H11V12.89L13 14.89V15M10.57 7.37L9.13 5.93C10.86 4.72 13.22 4.67 15 6C16.26 6.94 17 8.43 17 10C17 11.05 16.67 12.05 16.08 12.88L14.63 11.43C14.86 11 15 10.5 15 10C15 8.34 13.67 7 12 7C11.5 7 11 7.14 10.57 7.37M17.5 14.31C18.47 13.09 19 11.57 19 10C19 8.96 18.77 7.94 18.32 7C19.63 7.11 20.8 7.85 21.46 9C22.57 10.9 21.91 13.34 20 14.45V16C20 16.22 19.91 16.42 19.79 16.59L17.5 14.31M10 18H14V19C14 19.55 13.55 20 13 20H11C10.45 20 10 19.55 10 19V18M7 19C7 19.34 7.06 19.68 7.17 20H6C5.45 20 5 19.55 5 19V18H7V19Z"; -var mdiLightbulbGroupOutline = "M7 19A2.93 2.93 0 0 0 7.17 20H6A1 1 0 0 1 5 19V18H7M10 19A1 1 0 0 0 11 20H13A1 1 0 0 0 14 19V18H10M4 16A1 1 0 0 0 5 17H7V14.88A6.92 6.92 0 0 1 5 10A6.79 6.79 0 0 1 5.68 7A4 4 0 0 0 4 14.45M17 19A2.93 2.93 0 0 1 16.83 20H18A1 1 0 0 0 19 19V18H17M17 10A5 5 0 0 1 15 14V16A1 1 0 0 1 14 17H10A1 1 0 0 1 9 16V14A5 5 0 1 1 17 10M15 10A3 3 0 1 0 11 12.82V15H13V12.82A3 3 0 0 0 15 10M18.32 7A6.79 6.79 0 0 1 19 10A6.92 6.92 0 0 1 17 14.88V17H19A1 1 0 0 0 20 16V14.45A4 4 0 0 0 18.32 7Z"; -var mdiLightbulbMultiple = "M17 16V18C17 18.55 16.53 19 16 19H12C11.42 19 11 18.55 11 18V16C8.77 14.34 8.32 11.21 10 9S14.77 6.34 17 8 19.63 12.79 18 15C17.69 15.38 17.35 15.72 17 16M16 20H12V21C12 21.55 12.42 22 13 22H15C15.53 22 16 21.55 16 21M7.66 15H7V16C7 16.55 7.42 17 8 17H9V16.88C8.44 16.33 8 15.7 7.66 15M13.58 5C12.46 2.47 9.5 1.33 7 2.45S3.31 6.5 4.43 9.04C4.77 9.81 5.3 10.5 6 11V13C6 13.55 6.42 14 7 14H7.28C7.07 13.35 6.97 12.68 7 12C6.97 8.29 9.87 5.21 13.58 5Z"; -var mdiLightbulbMultipleOff = "M20.84 22.73L16.74 18.63C16.55 18.85 16.29 19 16 19H12C11.42 19 11 18.55 11 18V16C9.37 14.8 8.71 12.82 9.1 11L7.5 9.39C7.17 10.2 6.97 11.08 7 12C6.97 12.68 7.07 13.35 7.28 14H7C6.42 14 6 13.55 6 13V11C5.3 10.5 4.77 9.81 4.43 9.04C4 8.05 3.91 7 4.12 6L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M13.58 5C12.46 2.47 9.5 1.33 7 2.45C6.68 2.58 6.39 2.75 6.13 2.93L9.67 6.47C10.76 5.63 12.1 5.08 13.58 5M18.06 14.86C19.6 12.66 19.14 9.62 17 8C15.2 6.67 12.84 6.72 11.12 7.92L18.06 14.86M12 21C12 21.55 12.42 22 13 22H15C15.53 22 16 21.55 16 21V20H12V21M7 15V16C7 16.55 7.42 17 8 17H9V16.88C8.43 16.33 8 15.7 7.66 15H7Z"; -var mdiLightbulbMultipleOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L4.14 6.03C3.93 7 4 8.05 4.45 9.04C4.79 9.81 5.33 10.5 6 11V13C6 13.55 6.45 14 7 14H7.3C7.1 13.35 7 12.68 7 12C7 11.08 7.19 10.21 7.5 9.41L9.11 11C9.05 11.33 9 11.66 9 12C9 13.57 9.74 15.06 11 16V18C11 18.55 11.45 19 12 19H16C16.31 19 16.57 18.86 16.75 18.64L20.84 22.73L22.11 21.46M11.23 13.12L12.87 14.76C12.1 14.44 11.53 13.85 11.23 13.12M15 17H13V14.89L15 16.89V17M9.69 6.5L6.14 2.94C6.41 2.75 6.7 2.58 7 2.44C9.53 1.33 12.5 2.47 13.6 5C12.12 5.09 10.77 5.63 9.69 6.5M11.12 7.92C11.94 7.35 12.93 7 14 7C15.57 7 17.06 7.74 18 9C19.33 10.78 19.28 13.14 18.07 14.87L16.62 13.42C16.7 13.28 16.77 13.14 16.83 13C17.38 11.43 16.56 9.72 15 9.16C14.16 8.87 13.29 8.97 12.57 9.37L11.12 7.92M7.68 15C8 15.7 8.46 16.33 9 16.88V17H8C7.45 17 7 16.55 7 16V15H7.68M12 20H16V21C16 21.55 15.55 22 15 22H13C12.45 22 12 21.55 12 21V20Z"; -var mdiLightbulbMultipleOutline = "M12 21C12 21.55 12.45 22 13 22H15C15.55 22 16 21.55 16 21V20H12M14 7C11.24 7 9 9.24 9 12C9 13.57 9.74 15.06 11 16V18C11 18.55 11.45 19 12 19H16C16.55 19 17 18.55 17 18V16C19.21 14.34 19.66 11.21 18 9C17.06 7.74 15.57 7 14 7M15 14.82V17H13V14.82C11.44 14.27 10.62 12.55 11.17 11C11.72 9.43 13.44 8.61 15 9.16C16.56 9.72 17.38 11.43 16.83 13C16.53 13.85 15.85 14.5 15 14.82M7.68 15H7V16C7 16.55 7.45 17 8 17H9V16.88C8.46 16.33 8 15.7 7.68 15M13.6 5C12.5 2.47 9.53 1.33 7 2.45S3.34 6.5 4.45 9.04C4.79 9.81 5.33 10.5 6 11V13C6 13.55 6.45 14 7 14H7.3C7.1 13.35 7 12.68 7 12C7 8.29 9.89 5.21 13.6 5Z"; -var mdiLightbulbOff = "M12,2C9.76,2 7.78,3.05 6.5,4.68L16.31,14.5C17.94,13.21 19,11.24 19,9A7,7 0 0,0 12,2M3.28,4L2,5.27L5.04,8.3C5,8.53 5,8.76 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H14.73L18.73,22L20,20.72L3.28,4M9,20V21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9Z"; -var mdiLightbulbOffOutline = "M12,2C9.76,2 7.78,3.05 6.5,4.68L7.93,6.11C8.84,4.84 10.32,4 12,4A5,5 0 0,1 17,9C17,10.68 16.16,12.16 14.89,13.06L16.31,14.5C17.94,13.21 19,11.24 19,9A7,7 0 0,0 12,2M3.28,4L2,5.27L5.04,8.3C5,8.53 5,8.76 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H14.73L18.73,22L20,20.72L3.28,4M7.23,10.5L12.73,16H10V13.58C8.68,13 7.66,11.88 7.23,10.5M9,20V21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9Z"; -var mdiLightbulbOn = "M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63Z"; -var mdiLightbulbOnOutline = "M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M11,18H13V15.87C14.73,15.43 16,13.86 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13.86 9.27,15.43 11,15.87V18Z"; -var mdiLightbulbOutline = "M12,2A7,7 0 0,1 19,9C19,11.38 17.81,13.47 16,14.74V17A1,1 0 0,1 15,18H9A1,1 0 0,1 8,17V14.74C6.19,13.47 5,11.38 5,9A7,7 0 0,1 12,2M9,21V20H15V21A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21M12,4A5,5 0 0,0 7,9C7,11.05 8.23,12.81 10,13.58V16H14V13.58C15.77,12.81 17,11.05 17,9A5,5 0 0,0 12,4Z"; -var mdiLighthouse = "M8,10V8H9V4H8V3L12,1L16,3V4H15V8H16V10H14.74L8.44,13.64L9,10H8M13,8V4H11V8H13M7,23L7.04,22.76L16.15,17.5L16.67,20.88L13,23H7M8.05,16.17L15.31,12L15.83,15.37L7.43,20.22L8.05,16.17Z"; -var mdiLighthouseOn = "M1,10V2L10,5V7L1,10M8,10V8H13V4H8V3L12,1L16,3V4H15V8H16V10H14.74L8.44,13.64L9,10H8M7,23L7.04,22.76L16.15,17.5L16.67,20.88L13,23H7M8.05,16.17L15.31,12L15.83,15.37L7.43,20.22L8.05,16.17Z"; -var mdiLightningBolt = "M11 15H6L13 1V9H18L11 23V15Z"; -var mdiLightningBoltOutline = "M11 9.47V11H14.76L13 14.53V13H9.24L11 9.47M13 1L6 15H11V23L18 9H13V1Z"; -var mdiLingerie = "M22 7H20V2H18V4.34L12 6.91L6 4.34V2H4V7H2V9H4.05C4.3 11.25 6.19 13 8.5 13C9.92 13 11.18 12.33 12 11.3C12.83 12.33 14.08 13 15.5 13C17.81 13 19.7 11.25 19.95 9H22V7M8.5 11C7.12 11 6 9.88 6 8.5V6.5L11 8.65C10.9 9.96 9.83 11 8.5 11M18 8.5C18 9.88 16.88 11 15.5 11C14.17 11 13.1 9.96 13 8.65L18 6.5V8.5M2 15V17H3C5.97 17 8.43 19.17 8.91 22H15.09C15.57 19.17 18.03 17 21 17H22V15H2M13.59 20H10.41C9.94 18.84 9.21 17.82 8.29 17H15.71C14.79 17.82 14.06 18.84 13.59 20Z"; -var mdiLink = "M3.9,12C3.9,10.29 5.29,8.9 7,8.9H11V7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H11V15.1H7C5.29,15.1 3.9,13.71 3.9,12M8,13H16V11H8V13M17,7H13V8.9H17C18.71,8.9 20.1,10.29 20.1,12C20.1,13.71 18.71,15.1 17,15.1H13V17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7Z"; -var mdiLinkBox = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,16H10C8.39,16 6,14.94 6,12C6,9.07 8.39,8 10,8H11V10H10C9.54,10 8,10.17 8,12C8,13.9 9.67,14 10,14H11V16M15,11V13H9V11H15M14,16H13V14H14C14.46,14 16,13.83 16,12C16,10.1 14.33,10 14,10H13V8H14C15.61,8 18,9.07 18,12C18,14.94 15.61,16 14,16Z"; -var mdiLinkBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M11,16H10C8.39,16 6,14.94 6,12C6,9.07 8.39,8 10,8H11V10H10C9.54,10 8,10.17 8,12C8,13.9 9.67,14 10,14H11V16M14,16H13V14H14C14.46,14 16,13.83 16,12C16,10.1 14.33,10 14,10H13V8H14C15.61,8 18,9.07 18,12C18,14.94 15.61,16 14,16M15,13H9V11H15V13Z"; -var mdiLinkBoxVariant = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13.94,14.81L11.73,17C11.08,17.67 10.22,18 9.36,18C8.5,18 7.64,17.67 7,17C5.67,15.71 5.67,13.58 7,12.26L8.35,10.9L8.34,11.5C8.33,12 8.41,12.5 8.57,12.94L8.62,13.09L8.22,13.5C7.91,13.8 7.74,14.21 7.74,14.64C7.74,15.07 7.91,15.47 8.22,15.78C8.83,16.4 9.89,16.4 10.5,15.78L12.7,13.59C13,13.28 13.18,12.87 13.18,12.44C13.18,12 13,11.61 12.7,11.3C12.53,11.14 12.44,10.92 12.44,10.68C12.44,10.45 12.53,10.23 12.7,10.06C13.03,9.73 13.61,9.74 13.94,10.06C14.57,10.7 14.92,11.54 14.92,12.44C14.92,13.34 14.57,14.18 13.94,14.81M17,11.74L15.66,13.1V12.5C15.67,12 15.59,11.5 15.43,11.06L15.38,10.92L15.78,10.5C16.09,10.2 16.26,9.79 16.26,9.36C16.26,8.93 16.09,8.53 15.78,8.22C15.17,7.6 14.1,7.61 13.5,8.22L11.3,10.42C11,10.72 10.82,11.13 10.82,11.56C10.82,12 11,12.39 11.3,12.7C11.47,12.86 11.56,13.08 11.56,13.32C11.56,13.56 11.47,13.78 11.3,13.94C11.13,14.11 10.91,14.19 10.68,14.19C10.46,14.19 10.23,14.11 10.06,13.94C8.75,12.63 8.75,10.5 10.06,9.19L12.27,7C13.58,5.67 15.71,5.68 17,7C17.65,7.62 18,8.46 18,9.36C18,10.26 17.65,11.1 17,11.74Z"; -var mdiLinkBoxVariantOutline = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M13.94,10.06C14.57,10.7 14.92,11.54 14.92,12.44C14.92,13.34 14.57,14.18 13.94,14.81L11.73,17C11.08,17.67 10.22,18 9.36,18C8.5,18 7.64,17.67 7,17C5.67,15.71 5.67,13.58 7,12.26L8.35,10.9L8.34,11.5C8.33,12 8.41,12.5 8.57,12.94L8.62,13.09L8.22,13.5C7.91,13.8 7.74,14.21 7.74,14.64C7.74,15.07 7.91,15.47 8.22,15.78C8.83,16.4 9.89,16.4 10.5,15.78L12.7,13.59C13,13.28 13.18,12.87 13.18,12.44C13.18,12 13,11.61 12.7,11.3C12.53,11.14 12.44,10.92 12.44,10.68C12.44,10.45 12.53,10.23 12.7,10.06C13.03,9.73 13.61,9.74 13.94,10.06M18,9.36C18,10.26 17.65,11.1 17,11.74L15.66,13.1V12.5C15.67,12 15.59,11.5 15.43,11.06L15.38,10.92L15.78,10.5C16.09,10.2 16.26,9.79 16.26,9.36C16.26,8.93 16.09,8.53 15.78,8.22C15.17,7.6 14.1,7.61 13.5,8.22L11.3,10.42C11,10.72 10.82,11.13 10.82,11.56C10.82,12 11,12.39 11.3,12.7C11.47,12.86 11.56,13.08 11.56,13.32C11.56,13.56 11.47,13.78 11.3,13.94C11.13,14.11 10.91,14.19 10.68,14.19C10.46,14.19 10.23,14.11 10.06,13.94C8.75,12.63 8.75,10.5 10.06,9.19L12.27,7C13.58,5.67 15.71,5.68 17,7C17.65,7.62 18,8.46 18,9.36Z"; -var mdiLinkLock = "M23 16V15.5A2.5 2.5 0 0 0 18 15.5V16A1 1 0 0 0 17 17V21A1 1 0 0 0 18 22H23A1 1 0 0 0 24 21V17A1 1 0 0 0 23 16M22 16H19V15.5A1.5 1.5 0 0 1 22 15.5M7 8.9H11V7H7A5 5 0 0 0 7 17H11V15.1H7A3.1 3.1 0 0 1 7 8.9M8 11V13H16V11M13 15.1V17H15V15.1M17 7H13V8.9H17A3.09 3.09 0 0 1 19.94 11A5.12 5.12 0 0 1 20.5 11H21.9A5 5 0 0 0 17 7Z"; -var mdiLinkOff = "M17,7H13V8.9H17C18.71,8.9 20.1,10.29 20.1,12C20.1,13.43 19.12,14.63 17.79,15L19.25,16.44C20.88,15.61 22,13.95 22,12A5,5 0 0,0 17,7M16,11H13.81L15.81,13H16V11M2,4.27L5.11,7.38C3.29,8.12 2,9.91 2,12A5,5 0 0,0 7,17H11V15.1H7C5.29,15.1 3.9,13.71 3.9,12C3.9,10.41 5.11,9.1 6.66,8.93L8.73,11H8V13H10.73L13,15.27V17H14.73L18.74,21L20,19.74L3.27,3L2,4.27Z"; -var mdiLinkPlus = "M7,7H11V9H7A3,3 0 0,0 4,12A3,3 0 0,0 7,15H11V17H7A5,5 0 0,1 2,12A5,5 0 0,1 7,7M17,7A5,5 0 0,1 22,12H20A3,3 0 0,0 17,9H13V7H17M8,11H16V13H8V11M17,12H19V15H22V17H19V20H17V17H14V15H17V12Z"; -var mdiLinkVariant = "M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z"; -var mdiLinkVariantMinus = "M10.6 13.4A1 1 0 0 1 9.2 14.8A4.8 4.8 0 0 1 9.2 7.8L12.7 4.2A5.1 5.1 0 0 1 19.8 4.2A5.1 5.1 0 0 1 19.8 11.3L18.3 12.8A6.4 6.4 0 0 0 17.9 10.4L18.4 9.9A3.2 3.2 0 0 0 18.4 5.6A3.2 3.2 0 0 0 14.1 5.6L10.6 9.2A2.9 2.9 0 0 0 10.6 13.4M23 18V20H15V18M16.2 13.7A4.8 4.8 0 0 0 14.8 9.2A1 1 0 0 0 13.4 10.6A2.9 2.9 0 0 1 13.4 14.8L9.9 18.4A3.2 3.2 0 0 1 5.6 18.4A3.2 3.2 0 0 1 5.6 14.1L6.1 13.7A7.3 7.3 0 0 1 5.7 11.2L4.2 12.7A5.1 5.1 0 0 0 4.2 19.8A5.1 5.1 0 0 0 11.3 19.8L13.1 18A6 6 0 0 1 16.2 13.7Z"; -var mdiLinkVariantOff = "M2,5.27L3.28,4L20,20.72L18.73,22L13.9,17.17L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L12.5,15.76L10.88,14.15C10.87,14.39 10.77,14.64 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C8.12,13.77 7.63,12.37 7.72,11L2,5.27M12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.79,8.97L9.38,7.55L12.71,4.22M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.2,10.54 16.61,12.5 16.06,14.23L14.28,12.46C14.23,11.78 13.94,11.11 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z"; -var mdiLinkVariantPlus = "M10.6 13.4A1 1 0 0 1 9.2 14.8A4.8 4.8 0 0 1 9.2 7.8L12.7 4.2A5.1 5.1 0 0 1 19.8 4.2A5.1 5.1 0 0 1 19.8 11.3L18.3 12.8A6.4 6.4 0 0 0 17.9 10.4L18.4 9.9A3.2 3.2 0 0 0 18.4 5.6A3.2 3.2 0 0 0 14.1 5.6L10.6 9.2A2.9 2.9 0 0 0 10.6 13.4M23 18V20H20V23H18V20H15V18H18V15H20V18M16.2 13.7A4.8 4.8 0 0 0 14.8 9.2A1 1 0 0 0 13.4 10.6A2.9 2.9 0 0 1 13.4 14.8L9.9 18.4A3.2 3.2 0 0 1 5.6 18.4A3.2 3.2 0 0 1 5.6 14.1L6.1 13.7A7.3 7.3 0 0 1 5.7 11.2L4.2 12.7A5.1 5.1 0 0 0 4.2 19.8A5.1 5.1 0 0 0 11.3 19.8L13.1 18A6 6 0 0 1 16.2 13.7Z"; -var mdiLinkVariantRemove = "M10.6 13.4A1 1 0 0 1 9.2 14.8A4.8 4.8 0 0 1 9.2 7.8L12.7 4.2A5.1 5.1 0 0 1 19.8 4.2A5.1 5.1 0 0 1 19.8 11.3L18.3 12.8A6.4 6.4 0 0 0 17.9 10.4L18.4 9.9A3.2 3.2 0 0 0 18.4 5.6A3.2 3.2 0 0 0 14.1 5.6L10.6 9.2A2.9 2.9 0 0 0 10.6 13.4M16.2 13.7A4.8 4.8 0 0 0 14.8 9.2A1 1 0 0 0 13.4 10.6A2.9 2.9 0 0 1 13.4 14.8L9.9 18.4A3.2 3.2 0 0 1 5.6 18.4A3.2 3.2 0 0 1 5.6 14.1L6.1 13.7A7.3 7.3 0 0 1 5.7 11.2L4.2 12.7A5.1 5.1 0 0 0 4.2 19.8A5.1 5.1 0 0 0 11.3 19.8L13.1 18A6 6 0 0 1 16.2 13.7M21.1 15.5L19 17.6L16.9 15.5L15.5 16.9L17.6 19L15.5 21.1L16.9 22.5L19 20.4L21.1 22.5L22.5 21.1L20.4 19L22.5 16.9Z"; -var mdiLinkedin = "M19 3A2 2 0 0 1 21 5V19A2 2 0 0 1 19 21H5A2 2 0 0 1 3 19V5A2 2 0 0 1 5 3H19M18.5 18.5V13.2A3.26 3.26 0 0 0 15.24 9.94C14.39 9.94 13.4 10.46 12.92 11.24V10.13H10.13V18.5H12.92V13.57C12.92 12.8 13.54 12.17 14.31 12.17A1.4 1.4 0 0 1 15.71 13.57V18.5H18.5M6.88 8.56A1.68 1.68 0 0 0 8.56 6.88C8.56 5.95 7.81 5.19 6.88 5.19A1.69 1.69 0 0 0 5.19 6.88C5.19 7.81 5.95 8.56 6.88 8.56M8.27 18.5V10.13H5.5V18.5H8.27Z"; -var mdiLinux = "M14.62,8.35C14.2,8.63 12.87,9.39 12.67,9.54C12.28,9.85 11.92,9.83 11.53,9.53C11.33,9.37 10,8.61 9.58,8.34C9.1,8.03 9.13,7.64 9.66,7.42C11.3,6.73 12.94,6.78 14.57,7.45C15.06,7.66 15.08,8.05 14.62,8.35M21.84,15.63C20.91,13.54 19.64,11.64 18,9.97C17.47,9.42 17.14,8.8 16.94,8.09C16.84,7.76 16.77,7.42 16.7,7.08C16.5,6.2 16.41,5.3 16,4.47C15.27,2.89 14,2.07 12.16,2C10.35,2.05 9,2.81 8.21,4.4C8,4.83 7.85,5.28 7.75,5.74C7.58,6.5 7.43,7.29 7.25,8.06C7.1,8.71 6.8,9.27 6.29,9.77C4.68,11.34 3.39,13.14 2.41,15.12C2.27,15.41 2.13,15.7 2.04,16C1.85,16.66 2.33,17.12 3.03,16.96C3.47,16.87 3.91,16.78 4.33,16.65C4.74,16.5 4.9,16.6 5,17C5.65,19.15 7.07,20.66 9.24,21.5C13.36,23.06 18.17,20.84 19.21,16.92C19.28,16.65 19.38,16.55 19.68,16.65C20.14,16.79 20.61,16.89 21.08,17C21.57,17.09 21.93,16.84 22,16.36C22.03,16.1 21.94,15.87 21.84,15.63"; -var mdiLinuxMint = "M2,3.23V6.8H3.5C4.59,6.8 4.78,7.53 4.78,8.55V14.86C4.78,18.12 7.65,20.77 11.18,20.77H19.9C21,20.77 22,20.07 22,19V9.2C22,5.93 19.13,3.28 15.6,3.28H11.93V3.27L2,3.23V3.23M6.62,5.46H8.37V14.45C8.37,15.65 9.19,16.59 10.16,16.59L16.13,16.61C17.38,16.61 18.35,15.75 18.35,14.73L18.34,9.96C18.34,9.65 18.24,9.41 18,9.19C17.79,8.96 17.56,8.86 17.25,8.86C16.94,8.86 16.71,8.96 16.5,9.19C16.27,9.41 16.16,9.65 16.16,9.96V14.05H14.31V9.96C14.31,9.65 14.21,9.41 14,9.19C13.77,8.96 13.54,8.86 13.22,8.86C12.92,8.86 12.68,8.96 12.46,9.19C12.24,9.41 12.14,9.65 12.14,9.96V14.05H10.29V9.96C10.29,9.15 10.58,8.44 11.15,7.86C11.72,7.29 12.43,7 13.22,7C14,7 14.68,7.28 15.24,7.82C15.79,7.28 16.47,7 17.25,7C18.05,7 18.76,7.29 19.32,7.86C19.89,8.44 20.19,9.15 20.19,9.96L20.2,15.06C20.11,15.91 19.75,16.67 19.13,17.31V17.31C18.4,18.04 17.5,18.42 16.5,18.42H9.83C9,18.34 8.29,17.95 7.69,17.36C7,16.65 6.62,15.79 6.62,14.79V5.46H6.62Z"; -var mdiLipstick = "M9 23C8.45 23 8 22.55 8 22V13C8 12.45 8.45 12 9 12H15C15.55 12 16 12.45 16 13V22C16 22.55 15.55 23 15 23H9M10 11C9.45 11 9 10.55 9 10V5.25C9 5.25 11 3 11.75 1C12.83 1.67 13.92 2.33 14.46 3.83C15 5.33 15 7.67 15 10C15 10.55 14.55 11 14 11H10Z"; -var mdiListStatus = "M16.5 11L13 7.5L14.4 6.1L16.5 8.2L20.7 4L22.1 5.4L16.5 11M11 7H2V9H11V7M21 13.4L19.6 12L17 14.6L14.4 12L13 13.4L15.6 16L13 18.6L14.4 20L17 17.4L19.6 20L21 18.6L18.4 16L21 13.4M11 15H2V17H11V15Z"; -var mdiLitecoin = "M12.55,15.92L13.16,13.78L14.81,13.19L16.25,7.63L14.56,8.31L16.25,2H8L5.38,11.77L3.72,12.34L2.22,17.91L4,17.27L2.66,22H20.16L21.78,15.92H12.55M19.39,21H4L5.46,15.65L3.72,16.3L4.58,13.11L6.24,12.54L8.74,3H15L13.13,10L14.83,9.3L14,12.42L12.33,13L11.22,16.91H20.5L19.39,21Z"; -var mdiLoading = "M12,4V2A10,10 0 0,0 2,12H4A8,8 0 0,1 12,4Z"; -var mdiLocationEnter = "M14 12L10 8V11H2V13H10V16M22 12A10 10 0 0 1 2.46 15H4.59A8 8 0 1 0 4.59 9H2.46A10 10 0 0 1 22 12Z"; -var mdiLocationExit = "M22 12L18 8V11H10V13H18V16M20 18A10 10 0 1 1 20 6H17.27A8 8 0 1 0 17.27 18Z"; -var mdiLock = "M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"; -var mdiLockAlert = "M10 17C11.1 17 12 16.1 12 15C12 13.9 11.1 13 10 13C8.9 13 8 13.9 8 15S8.9 17 10 17M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H5V6C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 3C8.3 3 7 4.3 7 6V8H13V6C13 4.3 11.7 3 10 3M22 13H20V7H22V13M22 17H20V15H22V17Z"; -var mdiLockAlertOutline = "M10 17C8.9 17 8 16.1 8 15C8 13.9 8.9 13 10 13C11.1 13 12 13.9 12 15S11.1 17 10 17M16 20V10H4V20H16M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H5V6C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 3C8.3 3 7 4.3 7 6V8H13V6C13 4.3 11.7 3 10 3M22 7H20V13H22V7M22 15H20V17H22V15Z"; -var mdiLockCheck = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.9 8 4 8.89 4 10V20C4 21.11 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13C13.1 13 14 13.89 14 15C14 16.11 13.11 17 12 17M22.5 17.25L17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25Z"; -var mdiLockCheckOutline = "M14 15C14 16.11 13.11 17 12 17C10.89 17 10 16.1 10 15C10 13.89 10.89 13 12 13C13.11 13 14 13.9 14 15M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.1 4 20V10C4 8.89 4.89 8 6 8H7V6C7 3.24 9.24 1 12 1S17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V10H6V20H13.09M9 8H15V6C15 4.34 13.66 3 12 3S9 4.34 9 6V8M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; -var mdiLockClock = "M8.5,2C6,2 4,4 4,6.5V7C2.89,7 2,7.89 2,9V18C2,19.11 2.89,20 4,20H8.72C10.18,21.29 12.06,22 14,22A8,8 0 0,0 22,14A8,8 0 0,0 14,6C13.66,6 13.32,6.03 13,6.08C12.76,3.77 10.82,2 8.5,2M8.5,4A2.5,2.5 0 0,1 11,6.5V7H6V6.5A2.5,2.5 0 0,1 8.5,4M14,8A6,6 0 0,1 20,14A6,6 0 0,1 14,20A6,6 0 0,1 8,14A6,6 0 0,1 14,8M13,10V15L16.64,17.19L17.42,15.9L14.5,14.15V10H13Z"; -var mdiLockMinus = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.9 8 4 8.89 4 10V20C4 21.11 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13C13.1 13 14 13.89 14 15C14 16.11 13.11 17 12 17M23 18V20H15V18H23Z"; -var mdiLockMinusOutline = "M14 15C14 16.11 13.11 17 12 17C10.89 17 10 16.1 10 15C10 13.89 10.89 13 12 13C13.11 13 14 13.9 14 15M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.1 4 20V10C4 8.89 4.89 8 6 8H7V6C7 3.24 9.24 1 12 1S17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V10H6V20H13.09M9 8H15V6C15 4.34 13.66 3 12 3S9 4.34 9 6V8M15 18V20H23V18H15Z"; -var mdiLockOff = "M9 5.82L7.36 4.16C8.09 2.31 9.89 1 12 1C14.76 1 17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V16.8L11.2 8H15V6C15 4.34 13.66 3 12 3C10.41 3 9.11 4.25 9 5.82M22.11 21.46L20.84 22.73L19.46 21.35C19.1 21.75 18.58 22 18 22H6C4.89 22 4 21.11 4 20V10C4 8.89 4.9 8 6 8H6.11L1.11 3L2.39 1.73L22.11 21.46M13.85 15.74L11.26 13.15C10.5 13.44 10 14.16 10 15C10 16.11 10.9 17 12 17C12.84 17 13.56 16.5 13.85 15.74Z"; -var mdiLockOffOutline = "M9 5.82L7.36 4.16C8.09 2.31 9.89 1 12 1C14.76 1 17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V16.8L18 14.8V10H13.2L11.2 8H15V6C15 4.34 13.66 3 12 3C10.41 3 9.11 4.25 9 5.82M22.11 21.46L20.84 22.73L19.46 21.35C19.1 21.75 18.58 22 18 22H6C4.89 22 4 21.1 4 20V10C4 8.89 4.89 8 6 8H6.11L1.11 3L2.39 1.73L22.11 21.46M18 19.89L13.85 15.74C13.56 16.5 12.84 17 12 17C10.89 17 10 16.1 10 15C10 14.15 10.5 13.44 11.26 13.15L8.11 10H6V20H18V19.89Z"; -var mdiLockOpen = "M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z"; -var mdiLockOpenAlert = "M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H13V6C13 4.3 11.7 3 10 3S7 4.3 7 6H5C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 17C11.1 17 12 16.1 12 15S11.1 13 10 13 8 13.9 8 15 8.9 17 10 17M22 13H20V7H22V13M22 17H20V15H22V17Z"; -var mdiLockOpenAlertOutline = "M16 20V10H4V20H16M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H13V6C13 4.3 11.7 3 10 3S7 4.3 7 6H5C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 17C8.9 17 8 16.1 8 15S8.9 13 10 13 12 13.9 12 15 11.1 17 10 17M22 7H20V13H22V7M22 15H20V17H22V15Z"; -var mdiLockOpenCheck = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13 14 13.9 14 15 13.11 17 12 17M22.5 17.25L17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25Z"; -var mdiLockOpenCheckOutline = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; -var mdiLockOpenMinus = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13 14 13.9 14 15 13.11 17 12 17M23 18V20H15V18H23Z"; -var mdiLockOpenMinusOutline = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M15 18V20H23V18H15Z"; -var mdiLockOpenOutline = "M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z"; -var mdiLockOpenPlus = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13 14 13.9 14 15 13.11 17 12 17M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z"; -var mdiLockOpenPlusOutline = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; -var mdiLockOpenRemove = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13 14 13.9 14 15 13.11 17 12 17M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19Z"; -var mdiLockOpenRemoveOutline = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; -var mdiLockOpenVariant = "M18 1C15.24 1 13 3.24 13 6V8H4C2.9 8 2 8.89 2 10V20C2 21.11 2.9 22 4 22H16C17.11 22 18 21.11 18 20V10C18 8.9 17.11 8 16 8H15V6C15 4.34 16.34 3 18 3C19.66 3 21 4.34 21 6V8H23V6C23 3.24 20.76 1 18 1M10 13C11.1 13 12 13.89 12 15C12 16.11 11.11 17 10 17C8.9 17 8 16.11 8 15C8 13.9 8.9 13 10 13Z"; -var mdiLockOpenVariantOutline = "M10 13C11.1 13 12 13.89 12 15C12 16.11 11.11 17 10 17S8 16.11 8 15 8.9 13 10 13M18 1C15.24 1 13 3.24 13 6V8H4C2.9 8 2 8.9 2 10V20C2 21.1 2.9 22 4 22H16C17.1 22 18 21.1 18 20V10C18 8.9 17.1 8 16 8H15V6C15 4.34 16.34 3 18 3S21 4.34 21 6V8H23V6C23 3.24 20.76 1 18 1M16 10V20H4V10H16Z"; -var mdiLockOutline = "M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10C4,8.89 4.89,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"; -var mdiLockPattern = "M7,3A4,4 0 0,1 11,7C11,8.86 9.73,10.43 8,10.87V13.13C8.37,13.22 8.72,13.37 9.04,13.56L13.56,9.04C13.2,8.44 13,7.75 13,7A4,4 0 0,1 17,3A4,4 0 0,1 21,7A4,4 0 0,1 17,11C16.26,11 15.57,10.8 15,10.45L10.45,15C10.8,15.57 11,16.26 11,17A4,4 0 0,1 7,21A4,4 0 0,1 3,17C3,15.14 4.27,13.57 6,13.13V10.87C4.27,10.43 3,8.86 3,7A4,4 0 0,1 7,3M17,13A4,4 0 0,1 21,17A4,4 0 0,1 17,21A4,4 0 0,1 13,17A4,4 0 0,1 17,13M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z"; -var mdiLockPlus = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.9 8 4 8.89 4 10V20C4 21.11 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13C13.1 13 14 13.89 14 15C14 16.11 13.11 17 12 17M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z"; -var mdiLockPlusOutline = "M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.89 8 4 8.89 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M14 15C14 16.11 13.11 17 12 17C10.89 17 10 16.1 10 15C10 13.89 10.89 13 12 13C13.11 13 14 13.9 14 15M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z"; -var mdiLockQuestion = "M12,1A5,5 0 0,0 7,6V8H6A2,2 0 0,0 4,10V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V10A2,2 0 0,0 18,8H17V6A5,5 0 0,0 12,1M12,2.9C13.71,2.9 15.1,4.29 15.1,6V8H8.9V6C8.9,4.29 10.29,2.9 12,2.9M12.19,10.5C13.13,10.5 13.88,10.71 14.42,11.12C14.96,11.54 15.23,12.1 15.23,12.8C15.23,13.24 15.08,13.63 14.79,14C14.5,14.36 14.12,14.64 13.66,14.85C13.4,15 13.23,15.15 13.14,15.32C13.05,15.5 13,15.72 13,16H11C11,15.5 11.1,15.16 11.29,14.92C11.5,14.68 11.84,14.4 12.36,14.08C12.62,13.94 12.83,13.76 13,13.54C13.14,13.33 13.22,13.08 13.22,12.8C13.22,12.5 13.13,12.28 12.95,12.11C12.77,11.93 12.5,11.85 12.19,11.85C11.92,11.85 11.7,11.92 11.5,12.06C11.34,12.2 11.24,12.41 11.24,12.69H9.27C9.22,12 9.5,11.4 10.05,11.04C10.59,10.68 11.3,10.5 12.19,10.5M11,17H13V19H11V17Z"; -var mdiLockRemove = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.9 8 4 8.89 4 10V20C4 21.11 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13C13.1 13 14 13.89 14 15C14 16.11 13.11 17 12 17M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19Z"; -var mdiLockRemoveOutline = "M14 15C14 16.11 13.11 17 12 17C10.89 17 10 16.1 10 15C10 13.89 10.89 13 12 13C13.11 13 14 13.9 14 15M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.1 4 20V10C4 8.89 4.89 8 6 8H7V6C7 3.24 9.24 1 12 1S17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V10H6V20H13.09M9 8H15V6C15 4.34 13.66 3 12 3S9 4.34 9 6V8M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; -var mdiLockReset = "M12.63,2C18.16,2 22.64,6.5 22.64,12C22.64,17.5 18.16,22 12.63,22C9.12,22 6.05,20.18 4.26,17.43L5.84,16.18C7.25,18.47 9.76,20 12.64,20A8,8 0 0,0 20.64,12A8,8 0 0,0 12.64,4C8.56,4 5.2,7.06 4.71,11H7.47L3.73,14.73L0,11H2.69C3.19,5.95 7.45,2 12.63,2M15.59,10.24C16.09,10.25 16.5,10.65 16.5,11.16V15.77C16.5,16.27 16.09,16.69 15.58,16.69H10.05C9.54,16.69 9.13,16.27 9.13,15.77V11.16C9.13,10.65 9.54,10.25 10.04,10.24V9.23C10.04,7.7 11.29,6.46 12.81,6.46C14.34,6.46 15.59,7.7 15.59,9.23V10.24M12.81,7.86C12.06,7.86 11.44,8.47 11.44,9.23V10.24H14.19V9.23C14.19,8.47 13.57,7.86 12.81,7.86Z"; -var mdiLockSmart = "M12,2A6,6 0 0,0 6,8V16A6,6 0 0,0 12,22A6,6 0 0,0 18,16V8A6,6 0 0,0 12,2M8,6H10V8H8V6M11,6H13V8H11V6M14,6H16V8H14V6M8,9H10V11H8V9M11,9H13V11H11V9M14,9H16V11H14V9M8,12H10V14H8V12M11,12H13V14H11V12M14,12H16V14H14V12M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16Z"; -var mdiLocker = "M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,4V20H16V4H8M10,13H12V17H10V13M10,6H14V7.5H10V6M10,9H14V10.5H10V9Z"; -var mdiLockerMultiple = "M3,2H21A2,2 0 0,1 23,4V20A2,2 0 0,1 21,22H3A2,2 0 0,1 1,20V4A2,2 0 0,1 3,2M13,4V20H21V4H13M3,4V20H11V4H3M5,13H7V17H5V13M5,6H9V7.5H5V6M5,9H9V10.5H5V9M15,13H17V17H15V13M15,6H19V7.5H15V6M15,9H19V10.5H15V9Z"; -var mdiLogin = "M10,17V14H3V10H10V7L15,12L10,17M10,2H19A2,2 0 0,1 21,4V20A2,2 0 0,1 19,22H10A2,2 0 0,1 8,20V18H10V20H19V4H10V6H8V4A2,2 0 0,1 10,2Z"; -var mdiLoginVariant = "M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z"; -var mdiLogout = "M16,17V14H9V10H16V7L21,12L16,17M14,2A2,2 0 0,1 16,4V6H14V4H5V20H14V18H16V20A2,2 0 0,1 14,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2H14Z"; -var mdiLogoutVariant = "M14.08,15.59L16.67,13H7V11H16.67L14.08,8.41L15.5,7L20.5,12L15.5,17L14.08,15.59M19,3A2,2 0 0,1 21,5V9.67L19,7.67V5H5V19H19V16.33L21,14.33V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19Z"; -var mdiLongitude = "M12 2A10 10 0 1 0 22 12A10.03 10.03 0 0 0 12 2M9.4 19.6A8.05 8.05 0 0 1 9.4 4.4A16.45 16.45 0 0 0 7.5 12A16.45 16.45 0 0 0 9.4 19.6M12 20A13.81 13.81 0 0 1 9.5 12A13.81 13.81 0 0 1 12 4A13.81 13.81 0 0 1 14.5 12A13.81 13.81 0 0 1 12 20M14.6 19.6A16.15 16.15 0 0 0 14.6 4.4A8.03 8.03 0 0 1 20 12A7.9 7.9 0 0 1 14.6 19.6Z"; -var mdiLooks = "M12,6A11,11 0 0,0 1,17H3C3,12.04 7.04,8 12,8C16.96,8 21,12.04 21,17H23A11,11 0 0,0 12,6M12,10C8.14,10 5,13.14 5,17H7A5,5 0 0,1 12,12A5,5 0 0,1 17,17H19C19,13.14 15.86,10 12,10Z"; -var mdiLotion = "M15.5 6.5C15.5 5.66 17 4 17 4S18.5 5.66 18.5 6.5C18.5 7.33 17.83 8 17 8S15.5 7.33 15.5 6.5M19.5 15C20.88 15 22 13.88 22 12.5C22 10.83 19.5 8 19.5 8S17 10.83 17 12.5C17 13.88 18.12 15 19.5 15M16 12V22H4V12C4 9.03 6.16 6.57 9 6.09V4H7V2H13C14.13 2 15.15 2.39 16 3L14.56 4.44C14.1 4.17 13.57 4 13 4H11V6.09C13.84 6.57 16 9.03 16 12Z"; -var mdiLotionOutline = "M15.5 6.5C15.5 5.66 17 4 17 4S18.5 5.66 18.5 6.5C18.5 7.33 17.83 8 17 8S15.5 7.33 15.5 6.5M19.5 15C20.88 15 22 13.88 22 12.5C22 10.83 19.5 8 19.5 8S17 10.83 17 12.5C17 13.88 18.12 15 19.5 15M16 12V20C16 21.1 15.1 22 14 22H6C4.9 22 4 21.1 4 20V12C4 9.03 6.16 6.57 9 6.09V4H7V2H13C14.13 2 15.15 2.39 16 3L14.56 4.44C14.1 4.17 13.57 4 13 4H11V6.09C13.84 6.57 16 9.03 16 12M14 12C14 9.79 12.21 8 10 8S6 9.79 6 12V20H14V12Z"; -var mdiLotionPlus = "M15.5 6.5C15.5 5.66 17 4 17 4S18.5 5.66 18.5 6.5C18.5 7.33 17.83 8 17 8S15.5 7.33 15.5 6.5M19.5 15C20.88 15 22 13.88 22 12.5C22 10.83 19.5 8 19.5 8S17 10.83 17 12.5C17 13.88 18.12 15 19.5 15M13 14H11V12H9V14H7V16H9V18H11V16H13V14M16 12V22H4V12C4 9.03 6.16 6.57 9 6.09V4H7V2H13C14.13 2 15.15 2.39 16 3L14.56 4.44C14.1 4.17 13.57 4 13 4H11V6.09C13.84 6.57 16 9.03 16 12Z"; -var mdiLotionPlusOutline = "M15.5 6.5C15.5 5.66 17 4 17 4S18.5 5.66 18.5 6.5C18.5 7.33 17.83 8 17 8S15.5 7.33 15.5 6.5M19.5 15C20.88 15 22 13.88 22 12.5C22 10.83 19.5 8 19.5 8S17 10.83 17 12.5C17 13.88 18.12 15 19.5 15M13 14H11V12H9V14H7V16H9V18H11V16H13V14M16 12V20C16 21.1 15.1 22 14 22H6C4.9 22 4 21.1 4 20V12C4 9.03 6.16 6.57 9 6.09V4H7V2H13C14.13 2 15.15 2.39 16 3L14.56 4.44C14.1 4.17 13.57 4 13 4H11V6.09C13.84 6.57 16 9.03 16 12M14 12C14 9.79 12.21 8 10 8S6 9.79 6 12V20H14V12Z"; -var mdiLoupe = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22H20A2,2 0 0,0 22,20V12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z"; -var mdiLumx = "M12.35,1.75L20.13,9.53L13.77,15.89L12.35,14.47L17.3,9.53L10.94,3.16L12.35,1.75M15.89,9.53L14.47,10.94L10.23,6.7L5.28,11.65L3.87,10.23L10.23,3.87L15.89,9.53M10.23,8.11L11.65,9.53L6.7,14.47L13.06,20.84L11.65,22.25L3.87,14.47L10.23,8.11M8.11,14.47L9.53,13.06L13.77,17.3L18.72,12.35L20.13,13.77L13.77,20.13L8.11,14.47Z"; -var mdiLungs = "M15.47 3.11C15 2.85 14.37 3.05 14.11 3.54C14.04 3.68 14 3.84 14 4V6.59L13.29 5.88C13.1 5.69 13 5.44 13 5.18V1H11V5.17C11 5.44 10.9 5.69 10.71 5.88L10 6.59V4C10 3.44 9.54 3 9 3C8.83 3 8.67 3.04 8.53 3.11C4.72 5 2 9.97 2 15.77C2 17.67 2.33 19.55 3 21.32C3.19 21.85 3.76 22.13 4.29 21.94C4.34 21.92 4.39 21.9 4.44 21.87L9.5 19.07C9.81 18.9 10 18.56 10 18.19V9.41L11.3 8.12C11.69 7.73 12.32 7.73 12.71 8.12L14 9.42V18.2C14 18.56 14.21 18.9 14.5 19.08L19.58 21.88C20.07 22.14 20.68 21.96 20.94 21.46C20.96 21.42 21 21.37 21 21.32C21.67 19.55 22 17.67 22 15.77C22 9.97 19.29 5 15.47 3.11Z"; -var mdiMagnet = "M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3"; -var mdiMagnetOn = "M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3M13,1.5L9,9H11V14.5L15,7H13V1.5Z"; -var mdiMagnify = "M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"; -var mdiMagnifyClose = "M9,2A7,7 0 0,1 16,9C16,10.5 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.5,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M11.12,5.46L9,7.59L6.88,5.46L5.46,6.88L7.59,9L5.46,11.12L6.88,12.54L9,10.41L11.12,12.54L12.54,11.12L10.41,9L12.54,6.88L11.12,5.46Z"; -var mdiMagnifyMinus = "M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z"; -var mdiMagnifyMinusCursor = "M11,4A7,7 0 0,1 18,11C18,12.5 17.5,14 16.61,15.19L17.42,16H18L23,21L21,23L16,18V17.41L15.19,16.6C12.1,18.92 7.71,18.29 5.39,15.2C3.07,12.11 3.7,7.72 6.79,5.4C8,4.5 9.5,4 11,4M7,10V12H15V10H7M1,1V8L8,1H1Z"; -var mdiMagnifyMinusOutline = "M15.5,14H14.71L14.43,13.73C15.41,12.59 16,11.11 16,9.5A6.5,6.5 0 0,0 9.5,3A6.5,6.5 0 0,0 3,9.5A6.5,6.5 0 0,0 9.5,16C11.11,16 12.59,15.41 13.73,14.43L14,14.71V15.5L19,20.5L20.5,19L15.5,14M9.5,14C7,14 5,12 5,9.5C5,7 7,5 9.5,5C12,5 14,7 14,9.5C14,12 12,14 9.5,14M7,9H12V10H7V9Z"; -var mdiMagnifyPlus = "M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z"; -var mdiMagnifyPlusCursor = "M11,4A7,7 0 0,1 18,11C18,12.5 17.5,14 16.61,15.19L17.42,16H18L23,21L21,23L16,18V17.41L15.19,16.6C12.1,18.92 7.71,18.29 5.39,15.2C3.07,12.11 3.7,7.72 6.79,5.4C8,4.5 9.5,4 11,4M10,7V10H7V12H10V15H12V12H15V10H12V7H10M1,1V8L8,1H1Z"; -var mdiMagnifyPlusOutline = "M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14M12,10H10V12H9V10H7V9H9V7H10V9H12V10Z"; -var mdiMagnifyRemoveCursor = "M1 1V8L8 1H1M18 16H17.42L16.61 15.19C17.5 14 18 12.5 18 11C18 7.13 14.87 4 11 4C9.5 4 8 4.5 6.79 5.4C3.7 7.72 3.07 12.11 5.39 15.2C7.71 18.29 12.1 18.92 15.19 16.6L16 17.41V18L21 23L23 21L18 16M14.6 13.16L13.18 14.58L11.06 12.45L8.94 14.58L7.5 13.16L9.65 11.04L7.5 8.92L8.94 7.5L11.06 9.63L13.18 7.5L14.6 8.92L12.47 11.04L14.6 13.16Z"; -var mdiMagnifyRemoveOutline = "M15.5 14H14.71L14.43 13.73C15.41 12.59 16 11.11 16 9.5C16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16C11.11 16 12.59 15.41 13.73 14.43L14 14.71V15.5L19 20.5L20.5 19L15.5 14M9.5 14C7 14 5 12 5 9.5S7 5 9.5 5 14 7 14 9.5 12 14 9.5 14M10.91 11.62L9.5 10.21L8.09 11.62L7.38 10.91L8.79 9.5L7.38 8.09L8.09 7.38L9.5 8.79L10.91 7.38L11.62 8.09L10.21 9.5L11.62 10.91L10.91 11.62Z"; -var mdiMagnifyScan = "M17 22V20H20V17H22V20.5C22 20.89 21.84 21.24 21.54 21.54C21.24 21.84 20.89 22 20.5 22H17M7 22H3.5C3.11 22 2.76 21.84 2.46 21.54C2.16 21.24 2 20.89 2 20.5V17H4V20H7V22M17 2H20.5C20.89 2 21.24 2.16 21.54 2.46C21.84 2.76 22 3.11 22 3.5V7H20V4H17V2M7 2V4H4V7H2V3.5C2 3.11 2.16 2.76 2.46 2.46C2.76 2.16 3.11 2 3.5 2H7M10.5 6C13 6 15 8 15 10.5C15 11.38 14.75 12.2 14.31 12.9L17.57 16.16L16.16 17.57L12.9 14.31C12.2 14.75 11.38 15 10.5 15C8 15 6 13 6 10.5C6 8 8 6 10.5 6M10.5 8C9.12 8 8 9.12 8 10.5C8 11.88 9.12 13 10.5 13C11.88 13 13 11.88 13 10.5C13 9.12 11.88 8 10.5 8Z"; -var mdiMail = "M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M17,17H7V15H17M17,13H7V11H17M20,9H17V6H20"; -var mdiMailbox = "M17,4H7A5,5 0 0,0 2,9V20H20A2,2 0 0,0 22,18V9A5,5 0 0,0 17,4M10,18H4V9A3,3 0 0,1 7,6A3,3 0 0,1 10,9V18M19,15H17V13H13V11H19V15M9,11H5V9H9V11Z"; -var mdiMailboxOpen = "M8,4A5,5 0 0,0 3,9V18H1V20H21A2,2 0 0,0 23,18V9A5,5 0 0,0 18,4H8M8,6A3,3 0 0,1 11,9V18H5V9A3,3 0 0,1 8,6M14,11H20V15H18V13H14V11Z"; -var mdiMailboxOpenOutline = "M14,11H20V15H18V13H14V11M18,4H8A5,5 0 0,0 3,9V18H1V20H21A2,2 0 0,0 23,18V9A5,5 0 0,0 18,4M11,18H5V9A3,3 0 0,1 8,6A3,3 0 0,1 11,9V18M21,18H13V9C13,7.92 12.65,6.86 12,6H18A3,3 0 0,1 21,9V18Z"; -var mdiMailboxOpenUp = "M8,4A5,5 0 0,0 3,9V18H1V20H21A2,2 0 0,0 23,18V9A5,5 0 0,0 18,4H8M8,6A3,3 0 0,1 11,9V18H5V9A3,3 0 0,1 8,6M13,13V7H17V9H15V13H13Z"; -var mdiMailboxOpenUpOutline = "M14,12.85V6.85H18V8.85H16V12.85H14M18,3.85H8A5,5 0 0,0 3,8.85V17.85H1V19.85H21A2,2 0 0,0 23,17.85V8.85A5,5 0 0,0 18,3.85M11,17.85H5V8.85A3,3 0 0,1 8,5.85A3,3 0 0,1 11,8.85V17.85M21,17.85H13V8.85C13,7.76 12.65,6.71 12,5.85H18A3,3 0 0,1 21,8.85V17.85Z"; -var mdiMailboxOutline = "M17,4H7A5,5 0 0,0 2,9V20H20A2,2 0 0,0 22,18V9A5,5 0 0,0 17,4M10,18H4V9A3,3 0 0,1 7,6A3,3 0 0,1 10,9V18M20,18H12V9C12,7.92 11.65,6.86 11,6H17A3,3 0 0,1 20,9V18M13,11V13H17V15H19V11H13M9,11H5V9H9V11Z"; -var mdiMailboxUp = "M5,9H9V11H5V9M22,9V18A2,2 0 0,1 20,20H2V9A5,5 0 0,1 7,4H17A5,5 0 0,1 22,9M10,9A3,3 0 0,0 7,6A3,3 0 0,0 4,9V18H10V9M16,7H12V13H14V9H16V7Z"; -var mdiMailboxUpOutline = "M17,4H7A5,5 0 0,0 2,9V20H20A2,2 0 0,0 22,18V9A5,5 0 0,0 17,4M10,18H4V9A3,3 0 0,1 7,6A3,3 0 0,1 10,9V18M20,18H12V9C12,7.92 11.65,6.86 11,6H17A3,3 0 0,1 20,9V18M13,13H15V9H17V7H13V13M9,11H5V9H9V11Z"; -var mdiManjaro = "M2 2V22H7.6V7.6H14.8V2H2M9.2 9.2V22H14.8V9.2H9.2M16.4 2V22H22V2H16.4Z"; -var mdiMap = "M15,19L9,16.89V5L15,7.11M20.5,3C20.44,3 20.39,3 20.34,3L15,5.1L9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21C3.55,21 3.61,21 3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3Z"; -var mdiMapCheck = "M18.25,22L15.5,19L16.66,17.82L18.25,19.41L21.84,15.82L23,17.23M20.5,3A0.5,0.5 0 0,1 21,3.5V13.36C20.36,13.13 19.69,13 19,13C17.46,13 16.06,13.6 15,14.56V7.1L9,5V16.9L13.04,18.3C13,18.54 13,18.77 13,19C13,19.46 13.06,19.92 13.16,20.36L9,18.9L3.66,20.97C3.59,21 3.55,21 3.5,21A0.5,0.5 0 0,1 3,20.5V5.38C3,5.15 3.16,4.97 3.35,4.9L9,3L15,5.1L20.33,3"; -var mdiMapCheckOutline = "M18.25,22L15.5,19L16.66,17.82L18.25,19.41L21.84,15.82L23,17.23L18.25,22M20.5,3A0.5,0.5 0 0,1 21,3.5V13.34C20.37,13.12 19.7,13 19,13V5.7L16,6.86V13.8C15.2,14.27 14.5,14.91 14,15.68V6.87L10,5.47V17.13L13.05,18.2L13,19C13,19.46 13.05,19.92 13.15,20.35L9,18.9L3.66,20.97L3.5,21A0.5,0.5 0 0,1 3,20.5V5.38C3,5.15 3.15,4.97 3.36,4.9L9,3L15,5.1L20.34,3.03L20.5,3M5,6.46V18.31L8,17.15V5.45L5,6.46Z"; -var mdiMapClock = "M15,12H16.5V16.25L19.36,17.94L18.61,19.16L15,17V12M23,16A7,7 0 0,1 16,23C13,23 10.4,21.08 9.42,18.4L8,17.9L2.66,19.97L2.5,20A0.5,0.5 0 0,1 2,19.5V4.38C2,4.15 2.15,3.97 2.36,3.9L8,2L14,4.1L19.34,2H19.5A0.5,0.5 0 0,1 20,2.5V10.25C21.81,11.5 23,13.62 23,16M9,16C9,12.83 11.11,10.15 14,9.29V6.11L8,4V15.89L9,16.24C9,16.16 9,16.08 9,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z"; -var mdiMapClockOutline = "M15,12H16.5V16.25L19.36,17.94L18.61,19.16L15,17V12M16,9C16.69,9 17.37,9.1 18,9.29V4.7L15,5.86V9.07C15.33,9 15.66,9 16,9M23,16A7,7 0 0,1 16,23C13,23 10.4,21.08 9.42,18.4L8,17.9L2.66,19.97L2.5,20A0.5,0.5 0 0,1 2,19.5V4.38C2,4.15 2.15,3.97 2.36,3.9L8,2L14,4.1L19.34,2.03L19.5,2A0.5,0.5 0 0,1 20,2.5V10.25C21.81,11.5 23,13.62 23,16M9,16C9,13.21 10.63,10.8 13,9.67V5.87L9,4.47V16.13H9C9,16.09 9,16.04 9,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11M4,5.46V17.31L7,16.15V4.45L4,5.46Z"; -var mdiMapLegend = "M9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21L3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19.03 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3L20.34,3.03L15,5.1L9,3M8,5.45V17.15L5,18.31V6.46L8,5.45M10,5.47L14,6.87V18.53L10,17.13V5.47M19,5.7V17.54L16,18.55V6.86L19,5.7M7.46,6.3L5.57,6.97V9.12L7.46,8.45V6.3M7.46,9.05L5.57,9.72V11.87L7.46,11.2V9.05M7.46,11.8L5.57,12.47V14.62L7.46,13.95V11.8M7.46,14.55L5.57,15.22V17.37L7.46,16.7V14.55Z"; -var mdiMapMarker = "M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"; -var mdiMapMarkerAlert = "M12 2C15.9 2 19 5.1 19 9C19 14.2 12 22 12 22S5 14.2 5 9C5 5.1 8.1 2 12 2M11 6V12H13V6H11M11 14V16H13V14H11Z"; -var mdiMapMarkerAlertOutline = "M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4M11,6H13V11H11V6M11,13H13V15H11V13Z"; -var mdiMapMarkerCheck = "M12,2C15.86,2 19,5.14 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9C5,5.14 8.14,2 12,2M10.47,14L17,7.41L15.6,6L10.47,11.18L8.4,9.09L7,10.5L10.47,14Z"; -var mdiMapMarkerCheckOutline = "M12 4C14.8 4 17 6.2 17 9C17 11.9 14.1 16.2 12 18.9C9.9 16.2 7 11.9 7 9C7 6.2 9.2 4 12 4M12 2C8.1 2 5 5.1 5 9C5 14.2 12 22 12 22S19 14.2 19 9C19 5.1 15.9 2 12 2M11.3 14L16.2 9L14.8 7.6L11.3 11.2L9.7 9.6L8.3 11L11.3 14Z"; -var mdiMapMarkerCircle = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,12.5A1.5,1.5 0 0,1 10.5,11A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 13.5,11A1.5,1.5 0 0,1 12,12.5M12,7.2C9.9,7.2 8.2,8.9 8.2,11C8.2,14 12,17.5 12,17.5C12,17.5 15.8,14 15.8,11C15.8,8.9 14.1,7.2 12,7.2Z"; -var mdiMapMarkerDistance = "M6.5,8.11C5.61,8.11 4.89,7.39 4.89,6.5A1.61,1.61 0 0,1 6.5,4.89C7.39,4.89 8.11,5.61 8.11,6.5V6.5A1.61,1.61 0 0,1 6.5,8.11M6.5,2C4,2 2,4 2,6.5C2,9.87 6.5,14.86 6.5,14.86C6.5,14.86 11,9.87 11,6.5C11,4 9,2 6.5,2M17.5,8.11A1.61,1.61 0 0,1 15.89,6.5C15.89,5.61 16.61,4.89 17.5,4.89C18.39,4.89 19.11,5.61 19.11,6.5A1.61,1.61 0 0,1 17.5,8.11M17.5,2C15,2 13,4 13,6.5C13,9.87 17.5,14.86 17.5,14.86C17.5,14.86 22,9.87 22,6.5C22,4 20,2 17.5,2M17.5,16C16.23,16 15.1,16.8 14.68,18H9.32C8.77,16.44 7.05,15.62 5.5,16.17C3.93,16.72 3.11,18.44 3.66,20C4.22,21.56 5.93,22.38 7.5,21.83C8.35,21.53 9,20.85 9.32,20H14.69C15.24,21.56 16.96,22.38 18.5,21.83C20.08,21.28 20.9,19.56 20.35,18C19.92,16.8 18.78,16 17.5,16V16M17.5,20.5A1.5,1.5 0 0,1 16,19A1.5,1.5 0 0,1 17.5,17.5A1.5,1.5 0 0,1 19,19A1.5,1.5 0 0,1 17.5,20.5Z"; -var mdiMapMarkerDown = "M12 2A7 7 0 0 0 5 9C5 14.25 12 22 12 22S19 14.25 19 9A7 7 0 0 0 12 2M7.5 10H10V5H14V10H16.5L12 14.5Z"; -var mdiMapMarkerLeft = "M15 11.5C13.62 11.5 12.5 10.38 12.5 9S13.62 6.5 15 6.5 17.5 7.62 17.5 9 16.38 11.5 15 11.5M8 9C8 14.25 15 22 15 22S22 14.25 22 9C22 5.13 18.87 2 15 2S8 5.13 8 9M6 7L1 12L6 17V7Z"; -var mdiMapMarkerLeftOutline = "M15 6.5C16.38 6.5 17.5 7.62 17.5 9S16.38 11.5 15 11.5 12.5 10.38 12.5 9 13.62 6.5 15 6.5M15 2C18.87 2 22 5.13 22 9C22 14.25 15 22 15 22S8 14.25 8 9C8 5.13 11.13 2 15 2M10 9C10 10 10 12 15 18.71C20 12 20 10 20 9C20 6.24 17.76 4 15 4S10 6.24 10 9M6 7L1 12L6 17V7Z"; -var mdiMapMarkerMinus = "M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H23V19H15V17Z"; -var mdiMapMarkerMinusOutline = "M15 17H23V19H15V17M9 6.5C10.4 6.5 11.5 7.6 11.5 9S10.4 11.5 9 11.5 6.5 10.4 6.5 9 7.6 6.5 9 6.5M9 2C12.9 2 16 5.1 16 9C16 14.2 9 22 9 22S2 14.2 2 9C2 5.1 5.1 2 9 2M9 4C6.2 4 4 6.2 4 9C4 10 4 12 9 18.7C14 12 14 10 14 9C14 6.2 11.8 4 9 4Z"; -var mdiMapMarkerMultiple = "M14,11.5A2.5,2.5 0 0,0 16.5,9A2.5,2.5 0 0,0 14,6.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 14,11.5M14,2C17.86,2 21,5.13 21,9C21,14.25 14,22 14,22C14,22 7,14.25 7,9A7,7 0 0,1 14,2M5,9C5,13.5 10.08,19.66 11,20.81L10,22C10,22 3,14.25 3,9C3,5.83 5.11,3.15 8,2.29C6.16,3.94 5,6.33 5,9Z"; -var mdiMapMarkerMultipleOutline = "M11.5 9C11.5 7.62 12.62 6.5 14 6.5C15.1 6.5 16.03 7.21 16.37 8.19C16.45 8.45 16.5 8.72 16.5 9C16.5 10.38 15.38 11.5 14 11.5C12.91 11.5 12 10.81 11.64 9.84C11.55 9.58 11.5 9.29 11.5 9M5 9C5 13.5 10.08 19.66 11 20.81L10 22C10 22 3 14.25 3 9C3 5.83 5.11 3.15 8 2.29C6.16 3.94 5 6.33 5 9M14 2C17.86 2 21 5.13 21 9C21 14.25 14 22 14 22C14 22 7 14.25 7 9C7 5.13 10.14 2 14 2M14 4C11.24 4 9 6.24 9 9C9 10 9 12 14 18.71C19 12 19 10 19 9C19 6.24 16.76 4 14 4Z"; -var mdiMapMarkerOff = "M16.37,16.1L11.75,11.47L11.64,11.36L3.27,3L2,4.27L5.18,7.45C5.06,7.95 5,8.46 5,9C5,14.25 12,22 12,22C12,22 13.67,20.15 15.37,17.65L18.73,21L20,19.72M12,6.5A2.5,2.5 0 0,1 14.5,9C14.5,9.73 14.17,10.39 13.67,10.85L17.3,14.5C18.28,12.62 19,10.68 19,9A7,7 0 0,0 12,2C10,2 8.24,2.82 6.96,4.14L10.15,7.33C10.61,6.82 11.26,6.5 12,6.5Z"; -var mdiMapMarkerOffOutline = "M20 19.7L3.3 3L2 4.3L5.2 7.5C5.1 8 5 8.5 5 9C5 14.2 12 22 12 22S13.7 20.1 15.4 17.6L18.8 21L20 19.7M12 18.7C7.4 12.5 7 10.4 7 9.3L13.8 16.1C13.3 16.9 12.7 17.7 12 18.7M8.4 5.6L7 4.2C8.2 2.8 10 2 12 2C15.9 2 19 5.1 19 9C19 10.7 18.3 12.6 17.3 14.5L15.8 13C17 10.6 17 9.6 17 9C17 6.2 14.8 4 12 4C10.6 4 9.3 4.6 8.4 5.6M12 6.5C13.4 6.5 14.5 7.6 14.5 9C14.5 9.7 14.2 10.4 13.7 10.9L10.2 7.4C10.6 6.8 11.3 6.5 12 6.5Z"; -var mdiMapMarkerOutline = "M12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4Z"; -var mdiMapMarkerPath = "M18,15A3,3 0 0,1 21,18A3,3 0 0,1 18,21C16.69,21 15.58,20.17 15.17,19H14V17H15.17C15.58,15.83 16.69,15 18,15M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,8A1.43,1.43 0 0,0 19.43,6.57C19.43,5.78 18.79,5.14 18,5.14C17.21,5.14 16.57,5.78 16.57,6.57A1.43,1.43 0 0,0 18,8M18,2.57A4,4 0 0,1 22,6.57C22,9.56 18,14 18,14C18,14 14,9.56 14,6.57A4,4 0 0,1 18,2.57M8.83,17H10V19H8.83C8.42,20.17 7.31,21 6,21A3,3 0 0,1 3,18C3,16.69 3.83,15.58 5,15.17V14H7V15.17C7.85,15.47 8.53,16.15 8.83,17M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,3A3,3 0 0,1 9,6C9,7.31 8.17,8.42 7,8.83V10H5V8.83C3.83,8.42 3,7.31 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M11,19V17H13V19H11M7,13H5V11H7V13Z"; -var mdiMapMarkerPlus = "M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H18V14H20V17H23V19H20V22H18V19H15V17Z"; -var mdiMapMarkerPlusOutline = "M15 17H18V14H20V17H23V19H20V22H18V19H15V17M9 6.5C10.4 6.5 11.5 7.6 11.5 9S10.4 11.5 9 11.5 6.5 10.4 6.5 9 7.6 6.5 9 6.5M9 2C12.9 2 16 5.1 16 9C16 14.2 9 22 9 22S2 14.2 2 9C2 5.1 5.1 2 9 2M9 4C6.2 4 4 6.2 4 9C4 10 4 12 9 18.7C14 12 14 10 14 9C14 6.2 11.8 4 9 4Z"; -var mdiMapMarkerQuestion = "M12,2C8.14,2 5,5.14 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9C19,5.14 15.86,2 12,2M12.88,15.75H11.13V14H12.88M12.88,12.88H11.13C11.13,10.04 13.75,10.26 13.75,8.5A1.75,1.75 0 0,0 12,6.75A1.75,1.75 0 0,0 10.25,8.5H8.5A3.5,3.5 0 0,1 12,5A3.5,3.5 0 0,1 15.5,8.5C15.5,10.69 12.88,10.91 12.88,12.88Z"; -var mdiMapMarkerQuestionOutline = "M12,1C7.59,1 4,4.59 4,9C4,14.57 10.96,22.34 11.26,22.67L12,23.5L12.74,22.67C13.04,22.34 20,14.57 20,9C20,4.59 16.41,1 12,1M12,20.47C9.82,17.86 6,12.54 6,9A6,6 0 0,1 12,3A6,6 0 0,1 18,9C18,12.83 13.75,18.36 12,20.47M11.13,14H12.88V15.75H11.13M12,5A3.5,3.5 0 0,0 8.5,8.5H10.25A1.75,1.75 0 0,1 12,6.75A1.75,1.75 0 0,1 13.75,8.5C13.75,10.26 11.13,10.04 11.13,12.88H12.88C12.88,10.91 15.5,10.69 15.5,8.5A3.5,3.5 0 0,0 12,5Z"; -var mdiMapMarkerRadius = "M12,2C15.31,2 18,4.66 18,7.95C18,12.41 12,19 12,19C12,19 6,12.41 6,7.95C6,4.66 8.69,2 12,2M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M20,19C20,21.21 16.42,23 12,23C7.58,23 4,21.21 4,19C4,17.71 5.22,16.56 7.11,15.83L7.75,16.74C6.67,17.19 6,17.81 6,18.5C6,19.88 8.69,21 12,21C15.31,21 18,19.88 18,18.5C18,17.81 17.33,17.19 16.25,16.74L16.89,15.83C18.78,16.56 20,17.71 20,19Z"; -var mdiMapMarkerRadiusOutline = "M12 4C14.2 4 16 5.8 16 8C16 10.1 13.9 13.5 12 15.9C10.1 13.4 8 10.1 8 8C8 5.8 9.8 4 12 4M12 2C8.7 2 6 4.7 6 8C6 12.5 12 19 12 19S18 12.4 18 8C18 4.7 15.3 2 12 2M12 6C10.9 6 10 6.9 10 8S10.9 10 12 10 14 9.1 14 8 13.1 6 12 6M20 19C20 21.2 16.4 23 12 23S4 21.2 4 19C4 17.7 5.2 16.6 7.1 15.8L7.7 16.7C6.7 17.2 6 17.8 6 18.5C6 19.9 8.7 21 12 21S18 19.9 18 18.5C18 17.8 17.3 17.2 16.2 16.7L16.8 15.8C18.8 16.6 20 17.7 20 19Z"; -var mdiMapMarkerRemove = "M9,2C5.14,2 2,5.14 2,9C2,14.25 9,22 9,22C9,22 16,14.25 16,9A7,7 0 0,0 9,2M9,6.5A2.5,2.5 0 0,1 11.5,9A2.5,2.5 0 0,1 9,11.5A2.5,2.5 0 0,1 6.5,9A2.5,2.5 0 0,1 9,6.5M16.58,14.16L15.17,15.58L17.58,18L15.17,20.41L16.58,21.82L19,19.41L21.41,21.82L22.83,20.41L20.41,18L22.83,15.58L21.41,14.16L19,16.58"; -var mdiMapMarkerRemoveOutline = "M16.6 14.2L15.2 15.6L17.6 18L15.2 20.4L16.6 21.8L19 19.4L21.4 21.8L22.8 20.4L20.4 18L22.8 15.6L21.4 14.2L19 16.6M9 6.5C10.4 6.5 11.5 7.6 11.5 9S10.4 11.5 9 11.5 6.5 10.4 6.5 9 7.6 6.5 9 6.5M9 2C12.9 2 16 5.1 16 9C16 14.2 9 22 9 22S2 14.2 2 9C2 5.1 5.1 2 9 2M9 4C6.2 4 4 6.2 4 9C4 10 4 12 9 18.7C14 12 14 10 14 9C14 6.2 11.8 4 9 4Z"; -var mdiMapMarkerRemoveVariant = "M12,2C8.14,2 5,5.14 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9C19,5.14 15.86,2 12,2M9.59,5.17L12,7.58L14.41,5.17L15.83,6.58L13.41,9L15.83,11.41L14.41,12.83L12,10.41L9.59,12.83L8.17,11.41L10.59,9L8.17,6.58"; -var mdiMapMarkerRight = "M9 11.5C7.62 11.5 6.5 10.38 6.5 9S7.62 6.5 9 6.5 11.5 7.62 11.5 9 10.38 11.5 9 11.5M9 2C5.13 2 2 5.13 2 9C2 14.25 9 22 9 22S16 14.25 16 9C16 5.13 12.87 2 9 2M18 17L23 12L18 7V17Z"; -var mdiMapMarkerRightOutline = "M9 6.5C10.38 6.5 11.5 7.62 11.5 9S10.38 11.5 9 11.5 6.5 10.38 6.5 9 7.62 6.5 9 6.5M9 2C12.87 2 16 5.13 16 9C16 14.25 9 22 9 22S2 14.25 2 9C2 5.13 5.13 2 9 2M9 4C6.24 4 4 6.24 4 9C4 10 4 12 9 18.71C14 12 14 10 14 9C14 6.24 11.76 4 9 4M18 17L23 12L18 7V17Z"; -var mdiMapMarkerStar = "M12 2C8.1 2 5 5.1 5 9C5 14.2 12 22 12 22S19 14.2 19 9C19 5.1 15.9 2 12 2M14.5 13L12 11.5L9.5 13L10.2 10.2L8 8.3L10.9 8.1L12 5.4L13.1 8L16 8.3L13.8 10.2L14.5 13Z"; -var mdiMapMarkerStarOutline = "M12 2C15.9 2 19 5.1 19 9C19 14.2 12 22 12 22S5 14.2 5 9C5 5.1 8.1 2 12 2M12 4C9.2 4 7 6.2 7 9C7 10 7 12 12 18.7C17 12 17 10 17 9C17 6.2 14.8 4 12 4M12 11.5L14.4 13L13.8 10.2L16 8.3L13.1 8.1L12 5.4L10.9 8L8 8.3L10.2 10.2L9.5 13L12 11.5Z"; -var mdiMapMarkerUp = "M12 2A7 7 0 0 0 5 9C5 14.25 12 22 12 22S19 14.25 19 9A7 7 0 0 0 12 2M16.5 9H14V14H10V9H7.5L12 4.5Z"; -var mdiMapMinus = "M15 18V20H23V18H15M13.16 20.36L9 18.9L3.66 20.97C3.6 21 3.55 21 3.5 21C3.22 21 3 20.78 3 20.5V5.38C3 5.15 3.16 4.97 3.36 4.9L9 3L15 5.1L20.34 3H20.5C20.78 3 21 3.22 21 3.5V13.35C20.37 13.13 19.7 13 19 13C17.46 13 16.06 13.58 15 14.54V7.1L9 5V16.9L13.04 18.32C13 18.54 13 18.77 13 19C13 19.47 13.06 19.92 13.16 20.36Z"; -var mdiMapOutline = "M20.5,3L20.34,3.03L15,5.1L9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21L3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19.03 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3M10,5.47L14,6.87V18.53L10,17.13V5.47M5,6.46L8,5.45V17.15L5,18.31V6.46M19,17.54L16,18.55V6.86L19,5.7V17.54Z"; -var mdiMapPlus = "M9,3L3.36,4.9C3.16,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21C3.55,21 3.6,21 3.66,20.97L9,18.9L13.16,20.36C13.06,19.92 13,19.46 13,19C13,18.77 13,18.54 13.04,18.3L9,16.9V5L15,7.1V14.56C16.07,13.6 17.47,13 19,13C19.7,13 20.37,13.13 21,13.36V3.5A0.5,0.5 0 0,0 20.5,3H20.34L15,5.1L9,3M18,15V18H15V20H18V23H20V20H23V18H20V15H18Z"; -var mdiMapSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M14,6.11L8,4V15.89L9,16.24V16.5C9,17.14 9.09,17.76 9.26,18.34L8,17.9L2.66,19.97L2.5,20A0.5,0.5 0 0,1 2,19.5V4.38C2,4.15 2.15,3.97 2.36,3.9L8,2L14,4.1L19.34,2H19.5A0.5,0.5 0 0,1 20,2.5V11.81C18.83,10.69 17.25,10 15.5,10C15,10 14.5,10.06 14,10.17V6.11Z"; -var mdiMapSearchOutline = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.2 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M19.5,2A0.5,0.5 0 0,1 20,2.5V11.81C19.42,11.26 18.75,10.81 18,10.5V4.7L15,5.86V10C14.3,10.07 13.62,10.24 13,10.5V5.87L9,4.47V16.13H9V16.5C9,17.14 9.09,17.76 9.26,18.34L8,17.9L2.66,19.97L2.5,20A0.5,0.5 0 0,1 2,19.5V4.38C2,4.15 2.15,3.97 2.36,3.9L8,2L14,4.1L19.34,2.03L19.5,2M4,5.46V17.31L7,16.15V4.45L4,5.46Z"; -var mdiMapbox = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M16.75,14.45C18.65,12.55 18.58,9.39 16.59,7.41C14.6,5.43 11.45,5.35 9.55,7.25C6.12,10.68 7.22,16.78 7.22,16.78C7.22,16.78 13.33,17.87 16.75,14.45M13.15,7.86L14.13,9.87L16.14,10.85L14.13,11.83L13.15,13.84L12.17,11.83L10.16,10.85L12.17,9.87L13.15,7.86Z"; -var mdiMargin = "M20,4V9L18.5,7.5L5.5,20.5L3.5,18.5L16.5,5.5L15,4H20M17,20A3,3 0 0,1 14,17V15A3,3 0 0,1 17,12A3,3 0 0,1 20,15V17A3,3 0 0,1 17,20M17,14A1,1 0 0,0 16,15V17A1,1 0 0,0 17,18A1,1 0 0,0 18,17V15A1,1 0 0,0 17,14M7,12A3,3 0 0,1 4,9V7A3,3 0 0,1 7,4A3,3 0 0,1 10,7V9A3,3 0 0,1 7,12M7,6A1,1 0 0,0 6,7V9A1,1 0 0,0 7,10A1,1 0 0,0 8,9V7A1,1 0 0,0 7,6Z"; -var mdiMarker = "M18.5,1.15C17.97,1.15 17.46,1.34 17.07,1.73L11.26,7.55L16.91,13.2L22.73,7.39C23.5,6.61 23.5,5.35 22.73,4.56L19.89,1.73C19.5,1.34 19,1.15 18.5,1.15M10.3,8.5L4.34,14.46C3.56,15.24 3.56,16.5 4.36,17.31C3.14,18.54 1.9,19.77 0.67,21H6.33L7.19,20.14C7.97,20.9 9.22,20.89 10,20.12L15.95,14.16"; -var mdiMarkerCancel = "M17.5,13C20,13 22,15 22,17.5C22,20 20,22 17.5,22C15,22 13,20 13,17.5C13,15 15,13 17.5,13M17.5,14.5C16.94,14.5 16.42,14.65 16,14.92L20.08,19C20.35,18.58 20.5,18.06 20.5,17.5A3,3 0 0,0 17.5,14.5M14.5,17.5A3,3 0 0,0 17.5,20.5C18.06,20.5 18.58,20.35 19,20.08L14.92,16C14.65,16.42 14.5,16.94 14.5,17.5M18.5,1.15C19,1.15 19.5,1.34 19.89,1.73L22.73,4.56C23.5,5.35 23.5,6.61 22.73,7.39L18.95,11.16C18.5,11.06 18,11 17.5,11C16.67,11 15.88,11.16 15.15,11.44L11.26,7.55L17.07,1.73C17.46,1.34 17.97,1.15 18.5,1.15M10.3,8.5L13.89,12.1C12.15,13.26 11,15.25 11,17.5C11,18 11.06,18.5 11.16,18.95L10,20.12C9.22,20.89 7.97,20.9 7.19,20.14L6.33,21H0.67L4.36,17.31C3.56,16.5 3.56,15.24 4.34,14.46L10.3,8.5Z"; -var mdiMarkerCheck = "M10,16L5,11L6.41,9.58L10,13.17L17.59,5.58L19,7M19,1H5C3.89,1 3,1.89 3,3V15.93C3,16.62 3.35,17.23 3.88,17.59L12,23L20.11,17.59C20.64,17.23 21,16.62 21,15.93V3C21,1.89 20.1,1 19,1Z"; -var mdiMastodon = "M20.94,14C20.66,15.41 18.5,16.96 15.97,17.26C14.66,17.41 13.37,17.56 12,17.5C9.75,17.39 8,16.96 8,16.96V17.58C8.32,19.8 10.22,19.93 12.03,20C13.85,20.05 15.47,19.54 15.47,19.54L15.55,21.19C15.55,21.19 14.27,21.87 12,22C10.75,22.07 9.19,21.97 7.38,21.5C3.46,20.45 2.78,16.26 2.68,12L2.67,8.57C2.67,4.23 5.5,2.96 5.5,2.96C6.95,2.3 9.41,2 11.97,2H12.03C14.59,2 17.05,2.3 18.5,2.96C18.5,2.96 21.33,4.23 21.33,8.57C21.33,8.57 21.37,11.78 20.94,14M18,8.91C18,7.83 17.7,7 17.15,6.35C16.59,5.72 15.85,5.39 14.92,5.39C13.86,5.39 13.05,5.8 12.5,6.62L12,7.5L11.5,6.62C10.94,5.8 10.14,5.39 9.07,5.39C8.15,5.39 7.41,5.72 6.84,6.35C6.29,7 6,7.83 6,8.91V14.17H8.1V9.06C8.1,8 8.55,7.44 9.46,7.44C10.46,7.44 10.96,8.09 10.96,9.37V12.16H13.03V9.37C13.03,8.09 13.53,7.44 14.54,7.44C15.44,7.44 15.89,8 15.89,9.06V14.17H18V8.91Z"; -var mdiMaterialDesign = "M21,12C21,9.97 20.33,8.09 19,6.38V17.63C20.33,15.97 21,14.09 21,12M17.63,19H6.38C7.06,19.55 7.95,20 9.05,20.41C10.14,20.8 11.13,21 12,21C12.88,21 13.86,20.8 14.95,20.41C16.05,20 16.94,19.55 17.63,19M11,17L7,9V17H11M17,9L13,17H17V9M12,14.53L15.75,7H8.25L12,14.53M17.63,5C15.97,3.67 14.09,3 12,3C9.91,3 8.03,3.67 6.38,5H17.63M5,17.63V6.38C3.67,8.09 3,9.97 3,12C3,14.09 3.67,15.97 5,17.63M23,12C23,15.03 21.94,17.63 19.78,19.78C17.63,21.94 15.03,23 12,23C8.97,23 6.38,21.94 4.22,19.78C2.06,17.63 1,15.03 1,12C1,8.97 2.06,6.38 4.22,4.22C6.38,2.06 8.97,1 12,1C15.03,1 17.63,2.06 19.78,4.22C21.94,6.38 23,8.97 23,12Z"; -var mdiMaterialUi = "M8,16.61V15.37L14,11.91V7.23L9,10.12L4,7.23V13L3,13.58L2,13V5L3.07,4.38L9,7.81L12.93,5.54L14.93,4.38L16,5V13.06L10.92,16L14.97,18.33L20,15.43V11L21,10.42L22,11V16.58L14.97,20.64L8,16.61M22,9.75L21,10.33L20,9.75V8.58L21,8L22,8.58V9.75Z"; -var mdiMathCompass = "M20,19.88V22L18.2,20.83L13.41,11.83C14.07,11.62 14.67,11.28 15.19,10.83L20,19.88M15,7A3,3 0 0,1 12,10C11.85,10 11.71,10 11.56,10L5.8,20.83L4,22V19.88L9.79,9C8.69,7.77 8.79,5.87 10.03,4.76C10.57,4.28 11.27,4 12,4V2A1,1 0 0,1 13,3V4.18C14.2,4.6 15,5.73 15,7M13,7A1,1 0 0,0 12,6A1,1 0 0,0 11,7A1,1 0 0,0 12,8A1,1 0 0,0 13,7Z"; -var mdiMathCos = "M4,7A2,2 0 0,0 2,9V15A2,2 0 0,0 4,17H6A2,2 0 0,0 8,15V14H6V15H4V9H6V10H8V9A2,2 0 0,0 6,7H4M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M18,7A2,2 0 0,0 16,9V11A2,2 0 0,0 18,13H20V15H16V17H20A2,2 0 0,0 22,15V13A2,2 0 0,0 20,11H18V9H22V7H18Z"; -var mdiMathIntegral = "M11.5 19.1C11.3 20.2 10.9 21 10.2 21.5C9.5 22 8.6 22.1 7.5 21.9C7.1 21.8 6.3 21.7 6 21.5L6.5 20C6.8 20.1 7.4 20.3 7.7 20.3C8.8 20.5 9.4 20 9.6 18.8L12 5.2C12.2 4 12.7 3.2 13.4 2.6C14.1 2.1 15.1 1.9 16.2 2.1C16.6 2.2 17.4 2.3 18 2.6L17.5 4C17.3 3.9 16.6 3.8 16.3 3.7C15 3.5 14.3 4.1 14 5.6L11.5 19.1Z"; -var mdiMathIntegralBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M15.9 6.9C15.9 6.9 15.2 6.6 14.9 6.6C14.3 6.5 13.9 6.7 13.7 7.7L12 16.8C11.8 17.6 11.5 18.2 11 18.6C10.6 18.9 10.2 19 9.7 19C8.9 19 7.7 18.5 7.7 18.5L8.2 17.1C8.2 17.1 9 17.4 9.2 17.4C9.5 17.5 9.7 17.4 9.9 17.3C10.1 17.2 10.2 16.9 10.3 16.6L11.9 7.4C12 6.6 12.4 6 12.9 5.5C13.5 5.1 14.2 5 15 5.1C15.7 5.2 16.5 5.6 16.5 5.6L15.9 6.9Z"; -var mdiMathLog = "M18 7C16.9 7 16 7.9 16 9V15C16 16.1 16.9 17 18 17H20C21.1 17 22 16.1 22 15V11H20V15H18V9H22V7H18M2 7V17H8V15H4V7H2M11 7C9.9 7 9 7.9 9 9V15C9 16.1 9.9 17 11 17H13C14.1 17 15 16.1 15 15V9C15 7.9 14.1 7 13 7H11M11 9H13V15H11V9Z"; -var mdiMathNorm = "M14 21V3H16V21H14M8 21V3H10V21H8Z"; -var mdiMathNormBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M10 18H8V6H10V18M16 18H14V6H16V18Z"; -var mdiMathSin = "M4,7A2,2 0 0,0 2,9V11A2,2 0 0,0 4,13H6V15H2V17H6A2,2 0 0,0 8,15V13A2,2 0 0,0 6,11H4V9H8V7H4M14,7V9H13V15H14V17H10V15H11V9H10V7H14M16,7V17H18V12L20,17H22V7H20V12L18,7H16Z"; -var mdiMathTan = "M2,7V9H4V17H6V9H8V7H2M11,7A2,2 0 0,0 9,9V17H11V13H13V17H15V9A2,2 0 0,0 13,7H11M11,9H13V11H11V9M16,7V17H18V12L20,17H22V7H20V12L18,7H16Z"; -var mdiMatrix = "M2,2H6V4H4V20H6V22H2V2M20,4H18V2H22V22H18V20H20V4M9,5H10V10H11V11H8V10H9V6L8,6.5V5.5L9,5M15,13H16V18H17V19H14V18H15V14L14,14.5V13.5L15,13M9,13C10.1,13 11,14.34 11,16C11,17.66 10.1,19 9,19C7.9,19 7,17.66 7,16C7,14.34 7.9,13 9,13M9,14C8.45,14 8,14.9 8,16C8,17.1 8.45,18 9,18C9.55,18 10,17.1 10,16C10,14.9 9.55,14 9,14M15,5C16.1,5 17,6.34 17,8C17,9.66 16.1,11 15,11C13.9,11 13,9.66 13,8C13,6.34 13.9,5 15,5M15,6C14.45,6 14,6.9 14,8C14,9.1 14.45,10 15,10C15.55,10 16,9.1 16,8C16,6.9 15.55,6 15,6Z"; -var mdiMedal = "M20,2H4V4L9.81,8.36C6.14,9.57 4.14,13.53 5.35,17.2C6.56,20.87 10.5,22.87 14.19,21.66C17.86,20.45 19.86,16.5 18.65,12.82C17.95,10.71 16.3,9.05 14.19,8.36L20,4V2M14.94,19.5L12,17.78L9.06,19.5L9.84,16.17L7.25,13.93L10.66,13.64L12,10.5L13.34,13.64L16.75,13.93L14.16,16.17L14.94,19.5Z"; -var mdiMedalOutline = "M14.94 19.5L12 17.77L9.06 19.5L9.84 16.16L7.25 13.92L10.66 13.63L12 10.5L13.34 13.63L16.75 13.92L14.16 16.16M20 2H4V4L8.86 7.64A8 8 0 1 0 15.14 7.64L20 4M18 15A6 6 0 1 1 10.82 9.12A5.86 5.86 0 0 1 13.18 9.12A6 6 0 0 1 18 15M12.63 7H11.37L7.37 4H16.71Z"; -var mdiMedicalBag = "M10,3L8,5V7H5C3.85,7 3.12,8 3,9L2,19C1.88,20 2.54,21 4,21H20C21.46,21 22.12,20 22,19L21,9C20.88,8 20.06,7 19,7H16V5L14,3H10M10,5H14V7H10V5M11,10H13V13H16V15H13V18H11V15H8V13H11V10Z"; -var mdiMeditation = "M12 4C13.11 4 14 4.89 14 6S13.11 8 12 8 10 7.11 10 6 10.9 4 12 4M21 16V14C18.76 14 16.84 13.04 15.4 11.32L14.06 9.72C13.68 9.26 13.12 9 12.53 9H11.5C10.89 9 10.33 9.26 9.95 9.72L8.61 11.32C7.16 13.04 5.24 14 3 14V16C5.77 16 8.19 14.83 10 12.75V15L6.12 16.55C5.45 16.82 5 17.5 5 18.21C5 19.2 5.8 20 6.79 20H9V19.5C9 18.12 10.12 17 11.5 17H14.5C14.78 17 15 17.22 15 17.5S14.78 18 14.5 18H11.5C10.67 18 10 18.67 10 19.5V20H17.21C18.2 20 19 19.2 19 18.21C19 17.5 18.55 16.82 17.88 16.55L14 15V12.75C15.81 14.83 18.23 16 21 16Z"; -var mdiMemory = "M17,17H7V7H17M21,11V9H19V7C19,5.89 18.1,5 17,5H15V3H13V5H11V3H9V5H7C5.89,5 5,5.89 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11M13,13H11V11H13M15,9H9V15H15V9Z"; -var mdiMenu = "M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z"; -var mdiMenuDown = "M7,10L12,15L17,10H7Z"; -var mdiMenuDownOutline = "M18,9V10.5L12,16.5L6,10.5V9H18M12,13.67L14.67,11H9.33L12,13.67Z"; -var mdiMenuLeft = "M14,7L9,12L14,17V7Z"; -var mdiMenuLeftOutline = "M15,18H13.5L7.5,12L13.5,6H15V18M10.33,12L13,14.67V9.33L10.33,12Z"; -var mdiMenuOpen = "M21,15.61L19.59,17L14.58,12L19.59,7L21,8.39L17.44,12L21,15.61M3,6H16V8H3V6M3,13V11H13V13H3M3,18V16H16V18H3Z"; -var mdiMenuRight = "M10,17L15,12L10,7V17Z"; -var mdiMenuRightOutline = "M9,6H10.5L16.5,12L10.5,18H9V6M13.67,12L11,9.33V14.67L13.67,12Z"; -var mdiMenuSwap = "M12,6L7,11H17L12,6M7,13L12,18L17,13H7Z"; -var mdiMenuSwapOutline = "M12,3.5L6,9.5V11H18V9.5L12,3.5M12,6.33L14.67,9H9.33L12,6.33M6,13V14.5L12,20.5L18,14.5V13H6M9.33,15H14.67L12,17.67L9.33,15Z"; -var mdiMenuUp = "M7,15L12,10L17,15H7Z"; -var mdiMenuUpOutline = "M18,16V14.5L12,8.5L6,14.5V16H18M12,11.33L14.67,14H9.33L12,11.33Z"; -var mdiMerge = "M8 17L12 13H15.2C15.6 14.2 16.7 15 18 15C19.7 15 21 13.7 21 12S19.7 9 18 9C16.7 9 15.6 9.8 15.2 11H12L8 7V3H3V8H6L10.2 12L6 16H3V21H8V17Z"; -var mdiMessage = "M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z"; -var mdiMessageAlert = "M13 11H11V5H13M13 15H11V13H13M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2Z"; -var mdiMessageAlertOutline = "M13,10H11V6H13V10M13,12H11V14H13V12M22,4V16A2,2 0 0,1 20,18H6L2,22V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4M20,4H4V17.2L5.2,16H20V4Z"; -var mdiMessageArrowLeft = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M16 11H11.5L13.3 12.8L12 14L8 10L12 6L13.2 7.2L11.5 9H16V11Z"; -var mdiMessageArrowLeftOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M16 11V9H11.5L13.3 7.2L12 6L8 10L12 14L13.2 12.8L11.5 11H16Z"; -var mdiMessageArrowRight = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M12 14L10.8 12.8L12.6 11H8V9H12.5L10.7 7.2L12 6L16 10L12 14Z"; -var mdiMessageArrowRightOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M8 9V11H12.5L10.7 12.8L12 14L16 10L12 6L10.8 7.2L12.5 9H8Z"; -var mdiMessageBookmark = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M19 13L16.5 11.5L14 13V5H19V13Z"; -var mdiMessageBookmarkOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M18 14V6H13V14L15.5 12.5L18 14"; -var mdiMessageBulleted = "M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M8,14H6V12H8V14M8,11H6V9H8V11M8,8H6V6H8V8M15,14H10V12H15V14M18,11H10V9H18V11M18,8H10V6H18V8Z"; -var mdiMessageBulletedOff = "M1.27,1.73L0,3L2,5V22L6,18H15L20.73,23.73L22,22.46L1.27,1.73M8,14H6V12H8V14M6,11V9L8,11H6M20,2H4.08L10,7.92V6H18V8H10.08L11.08,9H18V11H13.08L20.07,18C21.14,17.95 22,17.08 22,16V4A2,2 0 0,0 20,2Z"; -var mdiMessageCog = "M13.5,10A1.5,1.5 0 0,1 12,11.5C11.16,11.5 10.5,10.83 10.5,10A1.5,1.5 0 0,1 12,8.5A1.5,1.5 0 0,1 13.5,10M22,4V16A2,2 0 0,1 20,18H6L2,22V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4M16.77,11.32L15.7,10.5C15.71,10.33 15.71,10.16 15.7,10C15.72,9.84 15.72,9.67 15.7,9.5L16.76,8.68C16.85,8.6 16.88,8.47 16.82,8.36L15.82,6.63C15.76,6.5 15.63,6.47 15.5,6.5L14.27,7C14,6.8 13.73,6.63 13.42,6.5L13.23,5.19C13.21,5.08 13.11,5 13,5H11C10.88,5 10.77,5.09 10.75,5.21L10.56,6.53C10.26,6.65 9.97,6.81 9.7,7L8.46,6.5C8.34,6.46 8.21,6.5 8.15,6.61L7.15,8.34C7.09,8.45 7.11,8.58 7.21,8.66L8.27,9.5C8.23,9.82 8.23,10.16 8.27,10.5L7.21,11.32C7.12,11.4 7.09,11.53 7.15,11.64L8.15,13.37C8.21,13.5 8.34,13.53 8.46,13.5L9.7,13C9.96,13.2 10.24,13.37 10.55,13.5L10.74,14.81C10.77,14.93 10.88,15 11,15H13C13.12,15 13.23,14.91 13.25,14.79L13.44,13.47C13.74,13.34 14,13.18 14.28,13L15.53,13.5C15.65,13.5 15.78,13.5 15.84,13.37L16.84,11.64C16.9,11.53 16.87,11.4 16.77,11.32Z"; -var mdiMessageCogOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M16.8 11.3L15.7 10.5V10 9.5L16.8 8.7C16.9 8.6 16.9 8.5 16.9 8.4L15.9 6.7C15.8 6.6 15.7 6.5 15.6 6.6L14.3 7C14 6.8 13.8 6.6 13.4 6.5L13.2 5.2C13.2 5.1 13.1 5 13 5H11C10.9 5 10.8 5.1 10.8 5.2L10.6 6.5C10.3 6.7 10 6.8 9.7 7L8.5 6.5C8.4 6.5 8.3 6.5 8.2 6.6L7.2 8.3C7.1 8.4 7.2 8.5 7.3 8.6L8.4 9.4V10.4L7.3 11.2C7.2 11.3 7.2 11.4 7.2 11.5L8.2 13.2C8.3 13.3 8.4 13.4 8.5 13.3L9.7 13C10 13.2 10.2 13.4 10.5 13.5L10.7 14.8C10.7 14.9 10.8 15 11 15H13C13.1 15 13.2 14.9 13.2 14.8L13.4 13.5C13.7 13.4 14 13.2 14.2 13L15.4 13.5C15.5 13.5 15.6 13.5 15.7 13.4L16.7 11.7C16.9 11.5 16.9 11.4 16.8 11.3M12 11.5C11.2 11.5 10.5 10.8 10.5 10S11.2 8.5 12 8.5 13.5 9.2 13.5 10 12.8 11.5 12 11.5Z"; -var mdiMessageDraw = "M18,14H10.5L12.5,12H18M6,14V11.5L12.88,4.64C13.07,4.45 13.39,4.45 13.59,4.64L15.35,6.41C15.55,6.61 15.55,6.92 15.35,7.12L8.47,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z"; -var mdiMessageFlash = "M22 4C22 2.9 21.1 2 20 2H4C2.9 2 2 2.9 2 4V22L6 18H15V10H22V4M22.5 16H20.3L22 12H17V18H19V23L22.5 16Z"; -var mdiMessageFlashOutline = "M4 17.2V4H20V10H22V4C22 2.9 21.1 2 20 2H4C2.9 2 2 2.9 2 4V22L6 18H15V16H5.2L4 17.2M22.5 16H20.3L22 12H17V18H19V23L22.5 16Z"; -var mdiMessageImage = "M5,14L8.5,9.5L11,12.5L14.5,8L19,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z"; -var mdiMessageImageOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M5 14L8.5 9.5L11 12.5L14.5 8L19 14"; -var mdiMessageLock = "M20.5 0A2.5 2.5 0 0 0 18 2.5V3A1 1 0 0 0 17 4V8A1 1 0 0 0 18 9H23A1 1 0 0 0 24 8V4A1 1 0 0 0 23 3V2.5A2.5 2.5 0 0 0 20.5 0M20.5 1A1.5 1.5 0 0 1 22 2.5V3H19V2.5A1.5 1.5 0 0 1 20.5 1M4 2A2 2 0 0 0 2 4V22L6 18H20A2 2 0 0 0 22 16V11H17C15.89 11 15 10.11 15 9V2H4Z"; -var mdiMessageLockOutline = "M23 3V2.5C23 1.1 21.9 0 20.5 0S18 1.1 18 2.5V3C17.5 3 17 3.5 17 4V8C17 8.5 17.5 9 18 9H23C23.5 9 24 8.5 24 8V4C24 3.5 23.5 3 23 3M22 3H19V2.5C19 1.7 19.7 1 20.5 1S22 1.7 22 2.5V3M22 11V16C22 17.1 21.1 18 20 18H6L2 22V4C2 2.9 2.9 2 4 2H15V4H4V17.2L5.2 16H20V11H22Z"; -var mdiMessageMinus = "M20 2C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H6L2 22V4C2 2.89 2.9 2 4 2H20M8 9V11H16V9H8Z"; -var mdiMessageMinusOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M8 9V11H16V9H8Z"; -var mdiMessageOff = "M20.95 17.75L5.2 2H20C21.1 2 22 2.89 22 4V16C22 16.76 21.57 17.41 20.95 17.75M2.39 1.73L1.11 3L2 3.9C2 3.93 2 3.97 2 4V22L6 18H16.11L20.84 22.73L22.11 21.46L2.39 1.73Z"; -var mdiMessageOffOutline = "M7.2 4L5.2 2H20C21.11 2 22 2.9 22 4V16C22 16.76 21.57 17.41 20.95 17.75L19.2 16H20V4H7.2M22.11 21.46L20.84 22.73L16.11 18H6L2 22V4C2 3.97 2 3.93 2 3.9L1.11 3L2.39 1.73L6.1 5.44L16.65 16H16.66L18.66 18H18.65L22.11 21.46M14.11 16L4 5.89V18L6 16H14.11Z"; -var mdiMessageOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16Z"; -var mdiMessagePlus = "M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z"; -var mdiMessagePlusOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M16 9V11H13V14H11V11H8V9H11V6H13V9H16Z"; -var mdiMessageProcessing = "M17,11H15V9H17M13,11H11V9H13M9,11H7V9H9M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z"; -var mdiMessageProcessingOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M17 11H15V9H17M13 11H11V9H13M9 11H7V9H9"; -var mdiMessageQuestion = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M13 14H11V12H13V14M14.8 9C14.5 9.4 14.1 9.6 13.7 9.8C13.4 10 13.3 10.1 13.2 10.3C13 10.5 13 10.7 13 11H11C11 10.5 11.1 10.2 11.3 9.9C11.5 9.7 11.9 9.4 12.4 9.1C12.7 9 12.9 8.8 13 8.6C13.1 8.4 13.2 8.1 13.2 7.9C13.2 7.6 13.1 7.4 12.9 7.2C12.7 7 12.4 6.9 12.1 6.9C11.8 6.9 11.6 7 11.4 7.1C11.2 7.2 11.1 7.4 11.1 7.7H9.1C9.2 7 9.5 6.4 10 6C10.5 5.6 11.2 5.5 12.1 5.5C13 5.5 13.8 5.7 14.3 6.1C14.8 6.5 15.1 7.1 15.1 7.8C15.2 8.2 15.1 8.6 14.8 9Z"; -var mdiMessageQuestionOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M12.2 5.5C11.3 5.5 10.6 5.7 10.1 6C9.5 6.4 9.2 7 9.3 7.7H11.3C11.3 7.4 11.4 7.2 11.6 7.1C11.8 7 12 6.9 12.3 6.9C12.6 6.9 12.9 7 13.1 7.2C13.3 7.4 13.4 7.6 13.4 7.9C13.4 8.2 13.3 8.4 13.2 8.6C13 8.8 12.8 9 12.6 9.1C12.1 9.4 11.7 9.7 11.5 9.9C11.1 10.2 11 10.5 11 11H13C13 10.7 13.1 10.5 13.1 10.3C13.2 10.1 13.4 10 13.6 9.8C14.1 9.6 14.4 9.3 14.7 8.9C15 8.5 15.1 8.1 15.1 7.7C15.1 7 14.8 6.4 14.3 6C13.9 5.7 13.1 5.5 12.2 5.5M11 12V14H13V12H11Z"; -var mdiMessageReply = "M22,4C22,2.89 21.1,2 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z"; -var mdiMessageReplyOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H18L22 22V4C22 2.9 21.1 2 20 2M20 17.2L18.8 16H4V4H20V17.2Z"; -var mdiMessageReplyText = "M18,8H6V6H18V8M18,11H6V9H18V11M18,14H6V12H18V14M22,4A2,2 0 0,0 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z"; -var mdiMessageReplyTextOutline = "M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"; -var mdiMessageSettings = "M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M11,24H13V22H11V24M7,24H9V22H7V24M15,24H17V22H15V24Z"; -var mdiMessageSettingsOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M11 24H13V22H11V24M7 24H9V22H7V24M15 24H17V22H15V24"; -var mdiMessageText = "M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M6,9H18V11H6M14,14H6V12H14M18,8H6V6H18"; -var mdiMessageTextClock = "M22 12.41V4C22 2.9 21.11 2 20 2H4C2.9 2 2 2.9 2 4V22L6 18H9.29C10.15 20.89 12.83 23 16 23C19.86 23 23 19.87 23 16C23 14.69 22.63 13.46 22 12.41M6 6H18V8H6V6M16 9C14.1 9 12.37 9.77 11.11 11H6V9H16M6 12H10.26C9.84 12.6 9.5 13.28 9.3 14H6V12M16 20.85C13.32 20.85 11.15 18.68 11.15 16S13.32 11.15 16 11.15C18.67 11.15 20.85 13.32 20.85 16S18.67 20.85 16 20.85M16.5 15.82L18.94 17.23L18.19 18.53L15 16.69V13H16.5V15.82Z"; -var mdiMessageTextClockOutline = "M22 12.41V4C22 2.9 21.11 2 20 2H4C2.9 2 2 2.89 2 4V22L6 18H9.29C10.15 20.89 12.83 23 16 23C19.86 23 23 19.87 23 16C23 14.69 22.63 13.46 22 12.41M5.17 16L4 17.17V4H20V10.26C18.86 9.47 17.5 9 16 9C14.1 9 12.37 9.77 11.11 11H6V13H9.69C9.25 13.91 9 14.93 9 16H5.17M16 20.85C13.32 20.85 11.15 18.68 11.15 16S13.32 11.15 16 11.15C18.67 11.15 20.85 13.32 20.85 16S18.67 20.85 16 20.85M18 9H6V7H18V9M16.5 15.82L18.94 17.23L18.19 18.53L15 16.69V13H16.5V15.82Z"; -var mdiMessageTextLock = "M20.5 0A2.5 2.5 0 0 0 18 2.5V3A1 1 0 0 0 17 4V8A1 1 0 0 0 18 9H23A1 1 0 0 0 24 8V4A1 1 0 0 0 23 3V2.5A2.5 2.5 0 0 0 20.5 0M20.5 1A1.5 1.5 0 0 1 22 2.5V3H19V2.5A1.5 1.5 0 0 1 20.5 1M4 2A2 2 0 0 0 2 4V22L6 18H20A2 2 0 0 0 22 16V11H17C15.89 11 15 10.11 15 9V2H4M6 6H13V8H6V6M6 9H13V11H6V9M6 12H14V14H6V12Z"; -var mdiMessageTextLockOutline = "M23 3V2.5C23 1.12 21.88 0 20.5 0S18 1.12 18 2.5V3C17.45 3 17 3.45 17 4V8C17 8.55 17.45 9 18 9H23C23.55 9 24 8.55 24 8V4C24 3.45 23.55 3 23 3M22 3H19V2.5C19 1.67 19.67 1 20.5 1S22 1.67 22 2.5V3M6 11H15V13H6V11M6 7H15V9H6V7M22 11V16C22 17.11 21.11 18 20 18H6L2 22V4C2 2.89 2.9 2 4 2H15V4H4V17.17L5.17 16H20V11H22Z"; -var mdiMessageTextOutline = "M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M4,4V17.17L5.17,16H20V4H4M6,7H18V9H6V7M6,11H15V13H6V11Z"; -var mdiMessageVideo = "M18,14L14,10.8V14H6V6H14V9.2L18,6M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z"; -var mdiMeteor = "M2.8,3L19.67,18.82C19.67,18.82 20,19.27 19.58,19.71C19.17,20.15 18.63,19.77 18.63,19.77L2.8,3M7.81,4.59L20.91,16.64C20.91,16.64 21.23,17.08 20.82,17.5C20.4,17.97 19.86,17.59 19.86,17.59L7.81,4.59M4.29,8L17.39,20.03C17.39,20.03 17.71,20.47 17.3,20.91C16.88,21.36 16.34,21 16.34,21L4.29,8M12.05,5.96L21.2,14.37C21.2,14.37 21.42,14.68 21.13,15C20.85,15.3 20.47,15.03 20.47,15.03L12.05,5.96M5.45,11.91L14.6,20.33C14.6,20.33 14.82,20.64 14.54,20.95C14.25,21.26 13.87,21 13.87,21L5.45,11.91M16.38,7.92L20.55,11.74C20.55,11.74 20.66,11.88 20.5,12.03C20.38,12.17 20.19,12.05 20.19,12.05L16.38,7.92M7.56,16.1L11.74,19.91C11.74,19.91 11.85,20.06 11.7,20.2C11.56,20.35 11.37,20.22 11.37,20.22L7.56,16.1Z"; -var mdiMetronome = "M12,1.75L8.57,2.67L4.06,19.53C4.03,19.68 4,19.84 4,20C4,21.11 4.89,22 6,22H18C19.11,22 20,21.11 20,20C20,19.84 19.97,19.68 19.94,19.53L18.58,14.42L17,16L17.2,17H13.41L16.25,14.16L14.84,12.75L10.59,17H6.8L10.29,4H13.71L15.17,9.43L16.8,7.79L15.43,2.67L12,1.75M11.25,5V14.75L12.75,13.25V5H11.25M19.79,7.8L16.96,10.63L16.25,9.92L14.84,11.34L17.66,14.16L19.08,12.75L18.37,12.04L21.2,9.21L19.79,7.8Z"; -var mdiMetronomeTick = "M12,1.75L8.57,2.67L4.07,19.5C4.06,19.5 4,19.84 4,20C4,21.11 4.89,22 6,22H18C19.11,22 20,21.11 20,20C20,19.84 19.94,19.5 19.93,19.5L15.43,2.67L12,1.75M10.29,4H13.71L17.2,17H13V12H11V17H6.8L10.29,4M11,5V9H10V11H14V9H13V5H11Z"; -var mdiMicroSd = "M8,2A2,2 0 0,0 6,4V11L4,13V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2H8M9,4H11V8H9V4M12,4H14V8H12V4M15,4H17V8H15V4Z"; -var mdiMicrophone = "M12,2A3,3 0 0,1 15,5V11A3,3 0 0,1 12,14A3,3 0 0,1 9,11V5A3,3 0 0,1 12,2M19,11C19,14.53 16.39,17.44 13,17.93V21H11V17.93C7.61,17.44 5,14.53 5,11H7A5,5 0 0,0 12,16A5,5 0 0,0 17,11H19Z"; -var mdiMicrophoneMinus = "M9,2A3,3 0 0,1 12,5V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V5A3,3 0 0,1 9,2M16,11C16,14.5 13.44,17.43 10,17.93V21H8V17.93C4.56,17.43 2,14.5 2,11H4A5,5 0 0,0 9,16A5,5 0 0,0 14,11H16M15,5H23V7H15V5Z"; -var mdiMicrophoneOff = "M19,11C19,12.19 18.66,13.3 18.1,14.28L16.87,13.05C17.14,12.43 17.3,11.74 17.3,11H19M15,11.16L9,5.18V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V11L15,11.16M4.27,3L21,19.73L19.73,21L15.54,16.81C14.77,17.27 13.91,17.58 13,17.72V21H11V17.72C7.72,17.23 5,14.41 5,11H6.7C6.7,14 9.24,16.1 12,16.1C12.81,16.1 13.6,15.91 14.31,15.58L12.65,13.92L12,14A3,3 0 0,1 9,11V10.28L3,4.27L4.27,3Z"; -var mdiMicrophoneOutline = "M17.3,11C17.3,14 14.76,16.1 12,16.1C9.24,16.1 6.7,14 6.7,11H5C5,14.41 7.72,17.23 11,17.72V21H13V17.72C16.28,17.23 19,14.41 19,11M10.8,4.9C10.8,4.24 11.34,3.7 12,3.7C12.66,3.7 13.2,4.24 13.2,4.9L13.19,11.1C13.19,11.76 12.66,12.3 12,12.3C11.34,12.3 10.8,11.76 10.8,11.1M12,14A3,3 0 0,0 15,11V5A3,3 0 0,0 12,2A3,3 0 0,0 9,5V11A3,3 0 0,0 12,14Z"; -var mdiMicrophonePlus = "M9,2A3,3 0 0,1 12,5V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V5A3,3 0 0,1 9,2M16,11C16,14.5 13.44,17.43 10,17.93V21H8V17.93C4.56,17.43 2,14.5 2,11H4A5,5 0 0,0 9,16A5,5 0 0,0 14,11H16M15,5H18V2H20V5H23V7H20V10H18V7H15V5Z"; -var mdiMicrophoneSettings = "M19,10H17.3C17.3,13 14.76,15.1 12,15.1C9.24,15.1 6.7,13 6.7,10H5C5,13.41 7.72,16.23 11,16.72V20H13V16.72C16.28,16.23 19,13.41 19,10M15,24H17V22H15M11,24H13V22H11M12,13A3,3 0 0,0 15,10V4A3,3 0 0,0 12,1A3,3 0 0,0 9,4V10A3,3 0 0,0 12,13M7,24H9V22H7V24Z"; -var mdiMicrophoneVariant = "M9,3A4,4 0 0,1 13,7H5A4,4 0 0,1 9,3M11.84,9.82L11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V14A4,4 0 0,1 18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V19A4,4 0 0,1 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.67,9.32 5.31,8.7 5.13,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11Z"; -var mdiMicrophoneVariantOff = "M2,5.27L3.28,4L20,20.72L18.73,22L16,19.26C15.86,21.35 14.12,23 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.82,9.47 5.53,9.06 5.33,8.6L2,5.27M9,3A4,4 0 0,1 13,7H8.82L6.08,4.26C6.81,3.5 7.85,3 9,3M11.84,9.82L11.82,10L9.82,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V17.27L11.35,14.62L11,18M18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V14.18L14.3,12.5C14.9,11 16.33,10 18,10M8,12A1,1 0 0,0 9,13C9.21,13 9.4,12.94 9.56,12.83L8.17,11.44C8.06,11.6 8,11.79 8,12Z"; -var mdiMicroscope = "M9.46,6.28L11.05,9C8.47,9.26 6.5,11.41 6.5,14A5,5 0 0,0 11.5,19C13.55,19 15.31,17.77 16.08,16H13.5V14H21.5V16H19.25C18.84,17.57 17.97,18.96 16.79,20H19.5V22H3.5V20H6.21C4.55,18.53 3.5,16.39 3.5,14C3.5,10.37 5.96,7.2 9.46,6.28M12.74,2.07L13.5,3.37L14.36,2.87L17.86,8.93L14.39,10.93L10.89,4.87L11.76,4.37L11,3.07L12.74,2.07Z"; -var mdiMicrosoft = "M2,3H11V12H2V3M11,22H2V13H11V22M21,3V12H12V3H21M21,22H12V13H21V22Z"; -var mdiMicrosoftAccess = "M14.5 2.63Q15.84 2.63 17.18 2.77L17.85 2.86Q18.3 2.93 18.84 3.04 19.37 3.15 19.93 3.31 20.5 3.47 20.96 3.69 21.42 3.91 21.71 4.19 22 4.47 22 4.81V19.19Q22 19.53 21.71 19.81 21.41 20.09 20.96 20.31 20.5 20.53 19.93 20.69 19.37 20.85 18.83 20.96 18.3 21.07 17.86 21.14 17.41 21.21 17.17 21.23 15.84 21.38 14.5 21.38 13.15 21.38 11.82 21.23 11.59 21.21 11.15 21.14 10.7 21.07 10.16 20.96 9.63 20.85 9.07 20.69 8.5 20.53 8.05 20.31 7.59 20.09 7.29 19.81 7 19.53 7 19.19V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H7V4.81Q7 4.47 7.29 4.19 7.59 3.91 8.05 3.69 8.5 3.47 9.07 3.31 9.63 3.15 10.17 3.04 10.7 2.93 11.14 2.86 11.59 2.8 11.83 2.77 13.15 2.63 14.5 2.63M14.5 3.88Q13.87 3.88 13.08 3.92 12.3 3.96 11.5 4.07 10.69 4.18 9.93 4.36 9.17 4.54 8.58 4.81 9.19 5.1 9.95 5.28 10.7 5.46 11.5 5.56 12.29 5.66 13.07 5.71 13.85 5.75 14.5 5.75 15.16 5.75 15.93 5.71 16.71 5.66 17.5 5.56 18.3 5.46 19.06 5.28 19.81 5.1 20.42 4.81 19.83 4.54 19.07 4.36 18.31 4.18 17.5 4.07 16.7 3.96 15.92 3.92 15.14 3.88 14.5 3.88M5.94 13.79H8.06L8.55 15.28H10.22L7.83 8.72H6.2L3.78 15.28H5.44M20.75 19V16Q20.11 16.31 19.31 16.5 18.5 16.68 17.67 16.79 16.83 16.9 16 16.95 15.19 17 14.5 17 13.79 17 13.08 16.96 12.37 16.91 11.67 16.83 11.44 17 11.17 17H8.25V19Q8.53 19.21 9 19.38 9.5 19.56 10.07 19.68 10.65 19.81 11.29 19.9 11.92 20 12.5 20.03 13.12 20.09 13.64 20.11 14.16 20.13 14.5 20.13 14.84 20.12 15.36 20.1 15.88 20.09 16.5 20.03 17.08 20 17.71 19.9 18.35 19.81 18.93 19.68 19.5 19.56 20 19.38 20.47 19.21 20.75 19M20.75 14.63V11Q20.11 11.31 19.31 11.5 18.5 11.68 17.67 11.79 16.83 11.9 16 11.95 15.19 12 14.5 12 13.88 12 13.25 11.97 12.63 11.93 12 11.87V15.62Q12.63 15.69 13.25 15.72 13.88 15.75 14.5 15.75 14.86 15.75 15.38 15.73 15.9 15.71 16.5 15.66 17.08 15.6 17.7 15.5 18.33 15.44 18.9 15.31 19.5 15.18 19.96 15 20.45 14.85 20.75 14.63M20.75 9.63V6Q20.11 6.31 19.31 6.5 18.5 6.68 17.67 6.79 16.83 6.9 16 6.95 15.19 7 14.5 7 13.81 7 13 6.95 12.17 6.9 11.33 6.79 10.5 6.68 9.69 6.5 8.89 6.31 8.25 6V7H11.17Q11.5 7 11.76 7.24 12 7.5 12 7.83V10.62Q12.63 10.69 13.25 10.72 13.88 10.75 14.5 10.75 14.86 10.75 15.38 10.73 15.9 10.71 16.5 10.66 17.08 10.6 17.7 10.5 18.33 10.44 18.9 10.31 19.5 10.18 19.96 10 20.44 9.85 20.75 9.63M6.32 12.5L7 10.5L7.65 12.5Z"; -var mdiMicrosoftAzure = "M13.05,4.24L6.56,18.05L2,18L7.09,9.24L13.05,4.24M13.75,5.33L22,19.76H6.74L16.04,18.1L11.17,12.31L13.75,5.33Z"; -var mdiMicrosoftAzureDevops = "M22 18L17 22L9 19V22L4.81 16.25L17.72 17.3V6.34L22 5.65V18M4.81 16.25V8.96L17.72 6.34L10.6 2V4.84L3.97 6.76L2 9.38V15.07L4.81 16.25Z"; -var mdiMicrosoftBing = "M5,3V19L8.72,21L18,15.82V11.73H18L9.77,8.95L11.38,12.84L13.94,14L8.7,16.92V4.27L5,3"; -var mdiMicrosoftDynamics365 = "M6,2L17.25,8.5L13.5,11.5L6,8V2M6,9L9.5,11.25L6,22L18,9V15L6,22V9Z"; -var mdiMicrosoftEdge = "M10.86 15.37C10.17 14.6 9.7 13.68 9.55 12.65C9.25 13.11 9 13.61 8.82 14.15C7.9 16.9 9.5 20.33 12.22 21.33C14.56 22.11 17.19 20.72 18.92 19.2C19.18 18.85 21.23 17.04 20.21 16.84C17.19 18.39 13.19 17.95 10.86 15.37M11.46 9.56C12.5 9.55 11.5 9.13 11.07 8.81C10.03 8.24 8.81 7.96 7.63 7.96C3.78 8 .995 10.41 2.3 14.4C3.24 18.28 6.61 21.4 10.59 21.9C8.54 20.61 7.3 18.19 7.3 15.78C7.38 13.25 8.94 10.28 11.46 9.56M2.78 8.24C5.82 6 10.66 6.18 13.28 9C14.3 10.11 15 12 14.07 13.37C12.33 15.25 17.15 15.5 18.18 15.22C21.92 14.5 22.91 10.15 21.13 7.15C19.43 3.75 15.66 1.97 11.96 2C7.9 1.93 4.25 4.5 2.78 8.24Z"; -var mdiMicrosoftEdgeLegacy = "M 2.73675,10.8077C 3.8293,-1.36109 22.5157,-1.36109 21.1971,13.5579L 8.61392,13.5579C 8.61392,17.8527 14.4157,19.209 19.5394,16.3081L 19.5394,20.5276C 13.2478,23.8806 4.9972,21.4318 4.9972,14.0853C 4.9972,8.58476 9.97019,6.8142 9.97019,6.8142C 9.97019,6.8142 8.57624,8.58489 8.53857,10.0542L 15.6967,10.0542C 15.6967,2.93376 5.90137,5.57095 2.73675,10.8077 Z"; -var mdiMicrosoftExcel = "M21.17 3.25Q21.5 3.25 21.76 3.5 22 3.74 22 4.08V19.92Q22 20.26 21.76 20.5 21.5 20.75 21.17 20.75H7.83Q7.5 20.75 7.24 20.5 7 20.26 7 19.92V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H7V4.08Q7 3.74 7.24 3.5 7.5 3.25 7.83 3.25M7 13.06L8.18 15.28H9.97L8 12.06L9.93 8.89H8.22L7.13 10.9L7.09 10.96L7.06 11.03Q6.8 10.5 6.5 9.96 6.25 9.43 5.97 8.89H4.16L6.05 12.08L4 15.28H5.78M13.88 19.5V17H8.25V19.5M13.88 15.75V12.63H12V15.75M13.88 11.38V8.25H12V11.38M13.88 7V4.5H8.25V7M20.75 19.5V17H15.13V19.5M20.75 15.75V12.63H15.13V15.75M20.75 11.38V8.25H15.13V11.38M20.75 7V4.5H15.13V7Z"; -var mdiMicrosoftInternetExplorer = "M13,3L14,3.06C16.8,1.79 19.23,1.64 20.5,2.92C21.5,3.93 21.58,5.67 20.92,7.72C21.61,9 22,10.45 22,12L21.95,13H9.08C9.45,15.28 11.06,17 13,17C14.31,17 15.47,16.21 16.2,15H21.5C20.25,18.5 16.92,21 13,21C11.72,21 10.5,20.73 9.41,20.25C6.5,21.68 3.89,21.9 2.57,20.56C1,18.96 1.68,15.57 4,12C4.93,10.54 6.14,9.06 7.57,7.65L8.38,6.88C7.21,7.57 5.71,8.62 4.19,10.17C5.03,6.08 8.66,3 13,3M13,7C11.21,7 9.69,8.47 9.18,10.5H16.82C16.31,8.47 14.79,7 13,7M20.06,4.06C19.4,3.39 18.22,3.35 16.74,3.81C18.22,4.5 19.5,5.56 20.41,6.89C20.73,5.65 20.64,4.65 20.06,4.06M3.89,20C4.72,20.84 6.4,20.69 8.44,19.76C6.59,18.67 5.17,16.94 4.47,14.88C3.27,17.15 3,19.07 3.89,20Z"; -var mdiMicrosoftOffice = "M19.94 5.59V18.39Q19.94 19.06 19.55 19.59 19.16 20.11 18.5 20.29L12.77 21.94Q12.65 21.97 12.5 22H12.28Q11.95 22 11.68 21.91 11.41 21.82 11.13 21.67L7.38 19.55Q7.17 19.43 7.05 19.24 6.93 19.05 6.93 18.81 6.93 18.45 7.19 18.2 7.44 17.95 7.8 17.95H12.66V6.14L9 7.44Q8.57 7.6 8.3 8 8.03 8.38 8.03 8.85V15.58Q8.03 16 7.82 16.34 7.62 16.68 7.25 16.88L5.53 17.82Q5.29 17.95 5.05 17.95 4.64 17.95 4.35 17.66 4.06 17.37 4.06 16.95V7.47Q4.06 6.95 4.33 6.5 4.61 6 5.06 5.74L11.22 2.24Q11.43 2.12 11.67 2.06 11.91 2 12.15 2 12.32 2 12.46 2.03 12.6 2.05 12.77 2.1L18.5 3.69Q18.83 3.78 19.09 3.96 19.35 4.14 19.54 4.39 19.74 4.65 19.84 4.95 19.94 5.26 19.94 5.59M18.62 18.39V5.59Q18.62 5.36 18.5 5.19 18.35 5 18.13 4.96L15.31 4.18Q15 4.09 14.65 4 14.32 3.89 14 3.81V20.21L18.13 19Q18.35 18.96 18.5 18.79 18.62 18.62 18.62 18.39Z"; -var mdiMicrosoftOnedrive = "M18.21 10.29Q19 10.34 19.7 10.68 20.39 11 20.9 11.57 21.41 12.12 21.71 12.83 22 13.54 22 14.34 22 15.18 21.68 15.92 21.36 16.66 20.8 17.21 20.25 17.76 19.5 18.08 18.78 18.41 17.94 18.41H7Q5.97 18.41 5.06 18 4.15 17.61 3.47 16.94 2.79 16.26 2.4 15.35 2 14.44 2 13.41 2 12.59 2.26 11.83 2.5 11.08 3 10.45 3.44 9.82 4.08 9.35 4.72 8.88 5.5 8.63 5.87 8.5 6.21 8.5 6.56 8.43 6.93 8.41H6.94Q7.37 7.75 7.95 7.23 8.5 6.71 9.2 6.34 9.87 6 10.62 5.78 11.37 5.59 12.16 5.59 13.22 5.59 14.2 5.94 15.18 6.29 16 6.91 16.8 7.53 17.37 8.39 17.95 9.26 18.21 10.29M12.16 6.84Q11.05 6.84 10.06 7.3 9.06 7.75 8.36 8.6 8.73 8.7 9.07 8.85 9.4 9 9.73 9.2L13.71 11.58L16 10.62Q16.21 10.53 16.44 10.45 16.67 10.38 16.92 10.33 16.68 9.55 16.21 8.91 15.74 8.27 15.11 7.81 14.5 7.35 13.73 7.1 13 6.84 12.16 6.84M4 15.66L12.27 12.18L9.08 10.26Q8.59 9.97 8.06 9.81 7.5 9.66 6.95 9.66 6.19 9.66 5.5 9.96 4.84 10.26 4.34 10.77 3.84 11.29 3.54 11.97 3.25 12.65 3.25 13.41 3.25 14 3.45 14.59 3.64 15.19 4 15.66M17.94 17.16Q18.41 17.16 18.84 17 19.27 16.86 19.64 16.58L13.61 13L5.03 16.59Q5.47 16.86 5.97 17 6.47 17.16 7 17.16M20.45 15.61Q20.75 15 20.75 14.34 20.75 13.7 20.5 13.17 20.26 12.65 19.85 12.28 19.43 11.91 18.88 11.71 18.32 11.5 17.7 11.5 17.35 11.5 17 11.6 16.66 11.68 16.33 11.81 16 11.93 15.67 12.08 15.35 12.23 15.04 12.37Z"; -var mdiMicrosoftOnenote = "M21.17 3.25Q21.5 3.25 21.76 3.5 22 3.74 22 4.08V19.92Q22 20.26 21.76 20.5 21.5 20.75 21.17 20.75H7.83Q7.5 20.75 7.24 20.5 7 20.26 7 19.92V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H7V4.08Q7 3.74 7.24 3.5 7.5 3.25 7.83 3.25M5.8 11.17L8.16 15.27H9.65V8.73H8.2V12.92L5.93 8.73H4.35V15.27H5.8M20.75 19.5V17H18.25V19.5M20.75 15.75V13.25H18.25V15.75M20.75 12V9.5H18.25V12M20.75 8.25V4.5H8.25V7H11.17Q11.5 7 11.76 7.24 12 7.5 12 7.83V16.17Q12 16.5 11.76 16.76 11.5 17 11.17 17H8.25V19.5H17V8.25Z"; -var mdiMicrosoftOutlook = "M8.56 12.03Q8.56 12.41 8.5 12.76 8.39 13.1 8.2 13.38 8 13.65 7.71 13.81 7.41 13.97 7 13.97 6.58 13.97 6.29 13.8 6 13.63 5.81 13.35 5.62 13.07 5.54 12.72 5.45 12.37 5.45 12 5.45 11.64 5.54 11.28 5.62 10.93 5.81 10.65 6 10.37 6.31 10.2 6.61 10.03 7.03 10.03 7.46 10.03 7.75 10.2 8.05 10.38 8.23 10.66 8.41 10.95 8.5 11.3 8.56 11.66 8.56 12.03M22 12V19.81Q22 20.2 21.73 20.5 21.45 20.75 21.06 20.75H7.94Q7.55 20.75 7.27 20.5 7 20.2 7 19.81V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H8.25V4.13Q8.25 3.76 8.5 3.5 8.76 3.25 9.13 3.25H19.87Q20.24 3.25 20.5 3.5 20.75 3.76 20.75 4.13V11.04L21.79 11.64H21.8Q21.88 11.7 21.94 11.8 22 11.89 22 12M17 5.13V7.63H19.5V5.13M17 8.88V11.38H19.5V8.88M17 12.63V14.15L19.54 12.63M12.63 5.13V7.63H15.75V5.13M12.63 8.88V11.38H15.75V8.88M12.63 12.63V14.32L14.64 15.56L15.75 14.9V12.63M9.5 5.13V7H11.27Q11.33 7 11.38 7.04V5.12M7 15.32Q7.73 15.32 8.32 15.06 8.9 14.8 9.31 14.35 9.71 13.9 9.91 13.28 10.12 12.66 10.13 11.94 10.13 11.25 9.92 10.65 9.72 10.06 9.32 9.62 8.93 9.18 8.37 8.93 7.8 8.68 7.08 8.68 6.31 8.68 5.71 8.93 5.12 9.18 4.71 9.63 4.3 10.09 4.09 10.71 3.88 11.34 3.88 12.08 3.88 12.78 4.09 13.38 4.31 13.97 4.71 14.4 5.11 14.83 5.68 15.08 6.26 15.32 7 15.32M8.25 19.5H18.57L12 15.4V16.17Q12 16.5 11.76 16.76 11.5 17 11.17 17H8.25M20.75 19.39V13.36L15.83 16.31Z"; -var mdiMicrosoftPowerpoint = "M13.25 3.25Q14.46 3.25 15.58 3.56 16.7 3.88 17.67 4.45 18.64 5 19.44 5.81 20.23 6.61 20.8 7.58 21.38 8.55 21.69 9.67 22 10.79 22 12 22 13.21 21.69 14.33 21.38 15.45 20.8 16.42 20.23 17.39 19.44 18.19 18.64 19 17.67 19.55 16.7 20.13 15.58 20.44 14.46 20.75 13.25 20.75 12.18 20.75 11.15 20.5 10.12 20.24 9.2 19.76 8.28 19.27 7.5 18.58 6.69 17.88 6.07 17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.25 2.5 7 2.83 7H6.07Q6.69 6.12 7.5 5.42 8.28 4.72 9.2 4.24 10.13 3.76 11.15 3.5 12.18 3.25 13.25 3.25M13.88 4.53V11.37H20.72Q20.6 10 20.03 8.81 19.46 7.62 18.55 6.7 17.64 5.79 16.43 5.22 15.23 4.65 13.88 4.53M9.5 10.84Q9.5 10.27 9.3 9.87 9.11 9.46 8.78 9.21 8.45 8.95 8 8.84 7.55 8.72 7 8.72H4.37V15.27H5.91V13H6.94Q7.42 13 7.87 12.84 8.33 12.7 8.69 12.43 9.05 12.17 9.27 11.76 9.5 11.36 9.5 10.84M13.25 19.5Q14.23 19.5 15.14 19.26 16.04 19 16.85 18.58 17.66 18.13 18.33 17.5 19 16.89 19.5 16.13 20 15.36 20.33 14.47 20.64 13.58 20.72 12.62H12.64V4.53Q11.19 4.65 9.91 5.29 8.63 5.93 7.67 7H11.17Q11.5 7 11.76 7.25 12 7.5 12 7.83V16.17Q12 16.5 11.76 16.76 11.5 17 11.17 17H7.67Q8.2 17.6 8.84 18.06 9.5 18.5 10.19 18.84 10.91 19.17 11.68 19.33 12.45 19.5 13.25 19.5M6.85 10Q7.32 10 7.61 10.19 7.89 10.38 7.89 10.89 7.89 11.11 7.79 11.25 7.69 11.39 7.53 11.5 7.37 11.57 7.18 11.6 7 11.64 6.8 11.64H5.91V10H6.85Z"; -var mdiMicrosoftSharepoint = "M22 13.25Q22 14.29 21.6 15.2 21.21 16.1 20.53 16.78 19.85 17.46 18.94 17.86 18.03 18.25 17 18.25 16.36 18.25 15.73 18.09 15.64 18.92 15.27 19.63 14.89 20.35 14.3 20.88 13.72 21.41 12.97 21.7 12.21 22 11.38 22 10.47 22 9.67 21.65 8.88 21.31 8.28 20.72 7.69 20.13 7.35 19.33 7 18.53 7 17.63V17.31Q7.03 17.16 7.05 17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H5.78Q5.9 5.94 6.39 5 6.87 4.11 7.63 3.44 8.38 2.76 9.34 2.38 10.3 2 11.38 2 12.54 2 13.56 2.44 14.59 2.89 15.35 3.65 16.11 4.41 16.56 5.44 17 6.46 17 7.63V7.94Q17 8.09 16.96 8.25 18 8.25 18.91 8.64 19.83 9.03 20.5 9.71 21.21 10.38 21.6 11.29 22 12.21 22 13.25M11.37 3.25Q10.56 3.25 9.83 3.54 9.09 3.82 8.5 4.32 7.94 4.82 7.55 5.5 7.17 6.2 7.05 7H11.17Q11.5 7 11.76 7.25 12 7.5 12 7.83V11.95L12.18 11.92Q12.35 11.3 12.68 10.74 13 10.17 13.47 9.72 13.92 9.27 14.5 8.93 15.04 8.6 15.67 8.43 15.75 8 15.75 7.63 15.75 6.72 15.4 5.92 15.06 5.13 14.46 4.54 13.87 3.95 13.08 3.6 12.28 3.25 11.37 3.25M7.1 15.25Q7.55 15.25 8 15.16 8.42 15.07 8.76 14.85 9.1 14.64 9.31 14.29 9.5 13.93 9.5 13.41 9.5 12.88 9.3 12.53 9.08 12.18 8.75 11.94 8.42 11.71 8.04 11.56L7.32 11.27Q7 11.14 6.77 11 6.55 10.85 6.55 10.62 6.55 10.46 6.67 10.35 6.79 10.25 6.95 10.2 7.11 10.13 7.28 10.11 7.46 10.1 7.58 10.1 8.07 10.1 8.46 10.22 8.84 10.35 9.25 10.6V9.12Q9 9.05 8.81 9 8.61 8.95 8.42 8.92 8.22 8.89 8 8.87 7.8 8.86 7.55 8.86 7.12 8.86 6.67 8.95 6.22 9.05 5.85 9.27 5.5 9.5 5.26 9.83 5.03 10.18 5.03 10.69 5.03 11.19 5.25 11.5 5.47 11.85 5.8 12.09 6.13 12.32 6.5 12.5L7.22 12.79Q7.56 12.93 7.78 13.08 8 13.24 8 13.46 8 13.65 7.89 13.76 7.79 13.87 7.63 13.92 7.5 14 7.31 14H7Q6.41 14 5.96 13.82 5.5 13.62 5.04 13.3V14.86Q6.03 15.25 7.1 15.25M11.37 20.75Q12 20.75 12.58 20.5 13.15 20.26 13.58 19.84 14 19.41 14.25 18.84 14.5 18.27 14.5 17.63 14.5 17.07 14.31 16.56 14.13 16.05 13.8 15.65 13.46 15.24 13 14.96 12.55 14.68 12 14.56V16.17Q12 16.5 11.76 16.76 11.5 17 11.17 17H8.31Q8.25 17.31 8.25 17.63 8.25 18.27 8.5 18.84 8.74 19.41 9.16 19.84 9.59 20.26 10.16 20.5 10.73 20.75 11.37 20.75M17 17Q17.77 17 18.45 16.71 19.14 16.42 19.65 15.9 20.16 15.39 20.46 14.71 20.75 14.03 20.75 13.25 20.75 12.5 20.46 11.8 20.16 11.11 19.65 10.6 19.14 10.09 18.45 9.79 17.77 9.5 17 9.5 16.23 9.5 15.55 9.8 14.87 10.1 14.36 10.61 13.85 11.12 13.55 11.8 13.25 12.5 13.25 13.25V13.46L13.27 13.68Q13.73 13.9 14.12 14.22 14.5 14.54 14.82 14.93 15.12 15.33 15.34 15.79 15.55 16.25 15.66 16.74 16.32 17 17 17Z"; -var mdiMicrosoftTeams = "M19.19 8.77Q18.73 8.77 18.33 8.6 17.94 8.43 17.64 8.13 17.34 7.83 17.17 7.44 17 7.04 17 6.58 17 6.13 17.17 5.73 17.34 5.33 17.64 5.04 17.94 4.74 18.33 4.57 18.73 4.39 19.19 4.4 19.64 4.39 20.04 4.57 20.44 4.74 20.74 5.04 21.03 5.33 21.21 5.73 21.38 6.13 21.38 6.58 21.38 7.04 21.21 7.44 21.04 7.83 20.74 8.13 20.44 8.43 20.04 8.6 19.64 8.77 19.19 8.77M19.19 5.65Q18.8 5.65 18.5 5.92 18.25 6.19 18.25 6.58 18.25 6.97 18.5 7.25 18.8 7.5 19.19 7.5 19.58 7.5 19.85 7.25 20.13 7 20.13 6.58 20.13 6.19 19.85 5.92 19.58 5.65 19.19 5.65M22 10.33V15Q22 15.63 21.76 16.2 21.5 16.77 21.09 17.19 20.66 17.62 20.09 17.86 19.5 18.11 18.88 18.11 18.5 18.11 18.12 18 17.73 17.93 17.41 17.75 17.17 18.54 16.7 19.19 16.23 19.84 15.6 20.3 14.97 20.76 14.21 21 13.45 21.27 12.63 21.27 11.67 21.27 10.82 20.94 10 20.61 9.32 20 8.66 19.43 8.23 18.64 7.79 17.84 7.66 16.9H2.83Q2.5 16.9 2.24 16.65 2 16.41 2 16.07V7.73Q2 7.39 2.24 7.14 2.5 6.9 2.83 6.9H10Q9.71 6.3 9.71 5.65 9.71 5.04 9.94 4.5 10.16 4 10.56 3.58 10.96 3.19 11.5 2.96 12 2.73 12.62 2.73 13.23 2.73 13.76 2.96 14.29 3.19 14.69 3.58 15.09 4 15.31 4.5 15.54 5.04 15.54 5.65 15.54 6.25 15.31 6.79 15.09 7.32 14.69 7.71 14.29 8.11 13.76 8.34 13.23 8.57 12.62 8.57 12.47 8.57 12.31 8.55 12.16 8.53 12 8.5V9.4H21.06Q21.45 9.4 21.73 9.67 22 9.94 22 10.33M12.63 4Q12.28 4 12 4.11 11.67 4.24 11.44 4.47 11.22 4.7 11.09 5 10.96 5.31 10.96 5.65 10.96 6 11.09 6.3 11.22 6.6 11.44 6.83 11.67 7.05 12 7.19 12.28 7.32 12.63 7.32 12.97 7.32 13.27 7.19 13.57 7.05 13.8 6.83 14.03 6.6 14.16 6.3 14.3 6 14.3 5.65 14.3 5.31 14.16 5 14.03 4.7 13.8 4.47 13.57 4.24 13.27 4.11 12.97 4 12.63 4M7.78 10.18H9.66V8.62H4.34V10.18H6.22V15.18H7.78M16.38 16.27V10.65H12V16.07Q12 16.41 11.76 16.65 11.5 16.9 11.17 16.9H8.92Q9.05 17.57 9.39 18.15 9.73 18.72 10.21 19.14 10.69 19.55 11.31 19.79 11.92 20 12.63 20 13.4 20 14.08 19.73 14.76 19.43 15.28 18.92 15.79 18.41 16.08 17.73 16.38 17.05 16.38 16.27M20.75 15V10.65H17.63V16.36Q17.88 16.61 18.2 16.74 18.5 16.86 18.88 16.86 19.27 16.86 19.61 16.71 19.95 16.56 20.2 16.31 20.46 16.06 20.6 15.71 20.75 15.37 20.75 15Z"; -var mdiMicrosoftVisualStudio = "M17,8.5L12.25,12.32L17,16V8.5M4.7,18.4L2,16.7V7.7L5,6.7L9.3,10.03L18,2L22,4.5V20L17,22L9.34,14.66L4.7,18.4M5,14L6.86,12.28L5,10.5V14Z"; -var mdiMicrosoftVisualStudioCode = "M17,16.47V7.39L11,11.93M2.22,9.19C1.92,8.87 1.91,8.37 2.2,8.04L3.4,6.93C3.6,6.75 4.09,6.67 4.45,6.93L7.87,9.54L15.8,2.29C16.12,1.97 16.67,1.84 17.3,2.17L21.3,4.08C21.66,4.29 22,4.62 22,5.23V18.73C22,19.13 21.71,19.56 21.4,19.73L17,21.83C16.68,21.96 16.08,21.84 15.87,21.63L7.85,14.33L4.45,16.93C4.07,17.19 3.6,17.12 3.4,16.93L2.2,15.83C1.88,15.5 1.92,14.96 2.25,14.63L5.25,11.93"; -var mdiMicrosoftWindows = "M3,12V6.75L9,5.43V11.91L3,12M20,3V11.75L10,11.9V5.21L20,3M3,13L9,13.09V19.9L3,18.75V13M20,13.25V22L10,20.09V13.1L20,13.25Z"; -var mdiMicrosoftWindowsClassic = "M2.67,5.3V5.91L1.96,6.21V5.6L2.67,5.3M2.67,11.24V11.86L1.96,12.15V11.56L2.67,11.24M2.67,17.27V17.89L1.96,18.18V17.59L2.67,17.27M2.6,7.29V7.84L2.03,8.1V7.56L2.6,7.29M2.6,9.28V9.82L2.03,10.08V9.54L2.6,9.28M2.6,13.31V13.84L2.03,14.1V13.56L2.6,13.31M2.6,15.33V15.87L2.03,16.13V15.6L2.6,15.33M4.5,5.64V6.36L3.5,6.73V6L4.5,5.64M4.5,11.66V12.37L3.5,12.74V12.03L4.5,11.66M4.5,17.7V18.41L3.5,18.81V18.1L4.5,17.7M4.43,7.72V8.38L3.64,8.68V8L4.43,7.72M4.43,9.73V10.37L3.65,10.67V10L4.43,9.73M4.43,13.74V14.38L3.65,14.69V14.03L4.43,13.74M4.43,15.76V16.41L3.65,16.72V16.06L4.43,15.76M6.31,6.09V6.94L5.05,7.43V6.59L6.31,6.09M6.31,12.11V12.96L5.05,13.45V12.61L6.31,12.11M6.31,18.08V18.93L5.05,19.43V18.58L6.31,18.08M6.25,8.18V8.94L5.19,9.34V8.61L6.25,8.18M6.25,10.18V10.93L5.19,11.35V10.6L6.25,10.18M6.25,14.19V14.94L5.19,15.37V14.62L6.25,14.19M6.25,16.14V16.9L5.19,17.32V16.57L6.25,16.14M8.29,6.04V7.16L6.72,7.78V6.67L8.29,6.04M8.29,12.06V13.19L6.72,13.8V12.68L8.29,12.06M8.29,18.03V19.15L6.72,19.77V18.66L8.29,18.03M8.2,8.13V9.16L6.89,9.69V8.66L8.2,8.13M8.2,10.13V11.15L6.89,11.68V10.65L8.2,10.13M8.2,14.15V15.18L6.89,15.7V14.67L8.2,14.15M8.2,16.1V17.12L6.89,17.64V16.63L8.2,16.1M10.34,5.85V7.32L8.61,8V6.56L10.34,5.85M10.34,11.87V13.33L8.61,14.03V12.56L10.34,11.87M10.34,17.84V19.3L8.61,20V18.54L10.34,17.84M10.26,8.05V9.28L8.78,9.87V8.64L10.26,8.05M10.26,9.97V11.2L8.78,11.78V10.56L10.26,9.97M10.26,14.06V15.31L8.78,15.88V14.65L10.26,14.06M10.26,16V17.25L8.78,17.84V16.6L10.26,16M12.45,5.12V7.12L10.59,7.89V6C11.23,5.65 11.85,5.35 12.45,5.12M12.45,7.33V9.06L10.59,9.84V8.1L12.45,7.33M12.45,9.28V11.04L10.59,11.82V10.06L12.45,9.28M12.45,11.25V13L10.59,13.77V12L12.45,11.25M12.45,13.21V15L10.59,15.78V14L12.45,13.21M12.45,15.21V16.96L10.59,17.76V16L12.45,15.21M12.45,17.17V19.04C11.72,19.32 11.1,19.59 10.59,19.84V17.96L12.45,17.17M22.04,5.18V19.23C20.85,18.44 19.37,18.05 17.59,18.05C16.12,18.05 14.47,18.35 12.65,18.96V17.06C13.62,16.69 14.68,16.42 15.84,16.26V11.69C14.86,11.81 13.8,12.15 12.65,12.71V11.4C13.64,10.94 14.71,10.63 15.84,10.46V6C14.82,6.18 13.76,6.53 12.65,7V5.03C14.27,4.34 15.86,4 17.41,4C19.09,4 20.63,4.39 22.04,5.18M20.15,6.41C19.39,6 18.5,5.82 17.42,5.82C17.29,5.82 17.17,5.83 17.05,5.84V10.38L17.46,10.37C18.37,10.37 19.27,10.5 20.15,10.8V6.41M20.15,12.1C19.34,11.74 18.43,11.56 17.44,11.56C17.31,11.56 17.18,11.57 17.05,11.58V16.16H17.46C18.45,16.16 19.35,16.28 20.15,16.53V12.1H20.15Z"; -var mdiMicrosoftWord = "M21.17 3.25Q21.5 3.25 21.76 3.5 22 3.74 22 4.08V19.92Q22 20.26 21.76 20.5 21.5 20.75 21.17 20.75H7.83Q7.5 20.75 7.24 20.5 7 20.26 7 19.92V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H7V4.08Q7 3.74 7.24 3.5 7.5 3.25 7.83 3.25M7.03 11.34L8.23 15.28H9.6L10.91 8.72H9.53L8.75 12.6L7.64 8.85H6.5L5.31 12.62L4.53 8.72H3.09L4.4 15.28H5.77M20.75 19.5V17H8.25V19.5M20.75 15.75V12.63H12V15.75M20.75 11.38V8.25H12V11.38M20.75 7V4.5H8.25V7Z"; -var mdiMicrosoftXbox = "M6.43,3.72C6.5,3.66 6.57,3.6 6.62,3.56C8.18,2.55 10,2 12,2C13.88,2 15.64,2.5 17.14,3.42C17.25,3.5 17.54,3.69 17.7,3.88C16.25,2.28 12,5.7 12,5.7C10.5,4.57 9.17,3.8 8.16,3.5C7.31,3.29 6.73,3.5 6.46,3.7M19.34,5.21C19.29,5.16 19.24,5.11 19.2,5.06C18.84,4.66 18.38,4.56 18,4.59C17.61,4.71 15.9,5.32 13.8,7.31C13.8,7.31 16.17,9.61 17.62,11.96C19.07,14.31 19.93,16.16 19.4,18.73C21,16.95 22,14.59 22,12C22,9.38 21,7 19.34,5.21M15.73,12.96C15.08,12.24 14.13,11.21 12.86,9.95C12.59,9.68 12.3,9.4 12,9.1C12,9.1 11.53,9.56 10.93,10.17C10.16,10.94 9.17,11.95 8.61,12.54C7.63,13.59 4.81,16.89 4.65,18.74C4.65,18.74 4,17.28 5.4,13.89C6.3,11.68 9,8.36 10.15,7.28C10.15,7.28 9.12,6.14 7.82,5.35L7.77,5.32C7.14,4.95 6.46,4.66 5.8,4.62C5.13,4.67 4.71,5.16 4.71,5.16C3.03,6.95 2,9.35 2,12A10,10 0 0,0 12,22C14.93,22 17.57,20.74 19.4,18.73C19.4,18.73 19.19,17.4 17.84,15.5C17.53,15.07 16.37,13.69 15.73,12.96Z"; -var mdiMicrosoftXboxController = "M8.75,15.75C6.75,15.75 6,18 4,19C2,19 0.5,16 4.5,7.5H4.75L5.19,6.67C5.19,6.67 8,5 9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23.5,16 22,19 20,19C18,18 17.25,15.75 15.25,15.75H8.75M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z"; -var mdiMicrosoftXboxControllerBatteryAlert = "M21,19V7H15V19H21M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8M17,9H19V14H17V9M17,15H19V17H17V15Z"; -var mdiMicrosoftXboxControllerBatteryCharging = "M20,5H21.67C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5M21,7H15V19H21V7M15.5,14L18.5,7.5V12H20.5L17.5,18.5V14H15.5M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z"; -var mdiMicrosoftXboxControllerBatteryEmpty = "M21,19V7H15V19H21M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z"; -var mdiMicrosoftXboxControllerBatteryFull = "M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z"; -var mdiMicrosoftXboxControllerBatteryLow = "M21,16V7H15V16H21M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z"; -var mdiMicrosoftXboxControllerBatteryMedium = "M21,12V7H15V12H21M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z"; -var mdiMicrosoftXboxControllerBatteryUnknown = "M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8M18.19,8C17.32,8 16.62,8.2 16.08,8.59C15.56,9 15.3,9.57 15.31,10.36L15.32,10.39H17.25C17.26,10.09 17.35,9.86 17.53,9.7C17.71,9.55 17.93,9.47 18.19,9.47C18.5,9.47 18.76,9.57 18.94,9.75C19.12,9.94 19.2,10.2 19.2,10.5C19.2,10.82 19.13,11.09 18.97,11.32C18.83,11.55 18.62,11.75 18.36,11.91C17.85,12.25 17.5,12.55 17.31,12.82C17.11,13.08 17,13.5 17,14H19C19,13.69 19.04,13.44 19.13,13.26C19.22,13.08 19.39,12.9 19.64,12.74C20.09,12.5 20.46,12.21 20.75,11.81C21.04,11.41 21.19,11 21.19,10.5C21.19,9.74 20.92,9.13 20.38,8.68C19.85,8.23 19.12,8 18.19,8M17,15V17H19V15H17Z"; -var mdiMicrosoftXboxControllerMenu = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M6,7H18V9H6V7M6,11H18V13H6V11M6,15H18V17H6V15Z"; -var mdiMicrosoftXboxControllerOff = "M2,5.27L3.28,4L20,20.72L18.73,22L12.5,15.75H8.75C6.75,15.75 6,18 4,19C2,19 0.5,16.04 4.42,7.69L2,5.27M9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23,15 22.28,18.2 20.69,18.87L7.62,5.8C8.25,5.73 8.87,5.81 9.33,6.23M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z"; -var mdiMicrosoftXboxControllerView = "M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M6,7H15V9H8V14H6V7M9,10H18V17H9V10M11,12V15H16V12H11Z"; -var mdiMicrosoftYammer = "M22 12Q22 12.43 21.97 12.94 21.95 13.45 21.89 13.97 21.84 14.5 21.76 15 21.68 15.5 21.56 15.89 21.5 16.07 21.38 16.19 21.24 16.3 21.04 16.3 20.95 16.3 20.66 16.23 20.37 16.16 20.03 16.07L19.39 15.88Q19.09 15.79 18.96 15.76 18.75 16.54 18.41 17.38 18.08 18.21 17.65 19 17.22 19.8 16.7 20.5 16.18 21.25 15.61 21.82L15.43 21.95Q15.33 22 15.21 22 15 22 14.84 21.84L10.1 17.11H2.85Q2.5 17.11 2.25 16.86 2 16.61 2 16.26V7.74Q2 7.39 2.25 7.14 2.5 6.89 2.85 6.89H10.1L14.83 2.16Q15 2 15.21 2 15.33 2 15.42 2.05 15.5 2.09 15.59 2.18 15.85 2.44 16.08 2.71 16.3 3 16.5 3.28 18.23 5.55 18.96 8.28 19.14 8.23 19.44 8.14 19.74 8.05 20.06 7.96 20.37 7.87 20.65 7.8 20.92 7.74 21.04 7.74 21.24 7.74 21.38 7.85 21.5 7.97 21.56 8.15 21.68 8.56 21.77 9.05 21.85 9.55 21.91 10.06 21.96 10.57 22 11.08V12M9.82 9.37Q9.82 9.06 9.62 8.85 9.4 8.64 9.1 8.64 8.9 8.64 8.72 8.74 8.55 8.85 8.45 9.03L7.15 11.47L5.89 9.03Q5.77 8.8 5.57 8.72 5.37 8.64 5.13 8.64 4.82 8.64 4.61 8.85 4.4 9.06 4.4 9.36 4.4 9.57 4.5 9.73L6.25 12.87Q6.27 12.91 6.29 12.97 6.3 13.03 6.3 13.08V14.63Q6.3 15 6.56 15.19 6.81 15.36 7.15 15.36 7.39 15.36 7.54 15.27 7.68 15.18 7.76 15.03 7.84 14.88 7.87 14.69 7.9 14.5 7.9 14.28 7.9 14 7.88 13.76 7.86 13.5 7.86 13.28 7.86 13.14 7.87 13.03 7.88 12.93 7.93 12.85L9.73 9.73Q9.83 9.55 9.83 9.37M15.17 3.63L11.8 7Q12 7.12 12.1 7.31 12.22 7.5 12.22 7.74V10.07L17.72 8.61Q17.34 7.19 16.71 6 16.08 4.77 15.17 3.63M17.73 15.42L12.22 13.95V16.26Q12.22 16.5 12.1 16.69 12 16.88 11.8 17L15.18 20.37Q16.07 19.29 16.72 18.04 17.37 16.79 17.73 15.43V15.42M20.47 14.84Q20.6 14.14 20.66 13.43 20.72 12.73 20.72 12 20.72 11.29 20.66 10.59 20.6 9.89 20.47 9.19 18.4 9.74 16.35 10.29 14.3 10.83 12.22 11.39 12.21 11.55 12.21 11.7V12.32L12.22 12.63Q14.3 13.19 16.35 13.73 18.4 14.27 20.47 14.84Z"; -var mdiMicrowave = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M4,7H16V17H4V7M19,7A1,1 0 0,1 20,8A1,1 0 0,1 19,9A1,1 0 0,1 18,8A1,1 0 0,1 19,7M13,9V15H15V9H13M19,11A1,1 0 0,1 20,12A1,1 0 0,1 19,13A1,1 0 0,1 18,12A1,1 0 0,1 19,11Z"; -var mdiMicrowaveOff = "M22.11 21.46L2.39 1.73L1.11 3L3.26 5.15C2.5 5.44 2 6.16 2 7V17C2 18.11 2.9 19 4 19H17.11L20.84 22.73L22.11 21.46M4 17V7H5.11L15.11 17H4M16 7V12.8L21.5 18.31C21.81 17.95 22 17.5 22 17V7C22 5.9 21.11 5 20 5H8.2L10.2 7H16M19 7C19.55 7 20 7.45 20 8S19.55 9 19 9 18 8.55 18 8 18.45 7 19 7M19 11C19.55 11 20 11.45 20 12S19.55 13 19 13 18 12.55 18 12 18.45 11 19 11M13 9.8V9H15V11.8L13 9.8Z"; -var mdiMiddleware = "M23 12L19 8V11H14.82C14.4 9.84 13.3 9 12 9S9.6 9.84 9.18 11H5L2 8V16L5 13H9.18C9.6 14.16 10.7 15 12 15S14.4 14.16 14.82 13H19V16L23 12Z"; -var mdiMiddlewareOutline = "M23 12L19 8V11H15.86C15.41 9.28 13.86 8 12 8S8.59 9.28 8.14 11H5L2 8V16L5 13H8.14C8.59 14.72 10.14 16 12 16S15.41 14.72 15.86 13H19V16L23 12M12 14C10.9 14 10 13.1 10 12C10 10.9 10.9 10 12 10S14 10.9 14 12C14 13.1 13.1 14 12 14Z"; -var mdiMidi = "M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z"; -var mdiMidiPort = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M20.18,12C20.18,8.18 17.55,4.96 14,4.07V6H10V4.07C6.45,4.96 3.82,8.18 3.82,12A8.18,8.18 0 0,0 12,20.18A8.18,8.18 0 0,0 20.18,12M7,10.64A1.36,1.36 0 0,1 8.36,12A1.36,1.36 0 0,1 7,13.36C6.25,13.36 5.64,12.75 5.64,12C5.64,11.25 6.25,10.64 7,10.64M17,10.64A1.36,1.36 0 0,1 18.36,12A1.36,1.36 0 0,1 17,13.36A1.36,1.36 0 0,1 15.64,12A1.36,1.36 0 0,1 17,10.64M8.36,14.27A1.37,1.37 0 0,1 9.73,15.64C9.73,16.39 9.12,17 8.36,17A1.36,1.36 0 0,1 7,15.64C7,14.88 7.61,14.27 8.36,14.27M15.64,14.27C16.39,14.27 17,14.88 17,15.64A1.36,1.36 0 0,1 15.64,17C14.88,17 14.27,16.39 14.27,15.64A1.37,1.37 0 0,1 15.64,14.27M12,15.64A1.36,1.36 0 0,1 13.36,17A1.36,1.36 0 0,1 12,18.36A1.36,1.36 0 0,1 10.64,17A1.36,1.36 0 0,1 12,15.64Z"; -var mdiMine = "M23,13V11H19.93C19.75,9.58 19.19,8.23 18.31,7.1L20.5,4.93L19.07,3.5L16.9,5.69C15.77,4.81 14.42,4.25 13,4.07V1H11V4.07C9.58,4.25 8.23,4.81 7.1,5.69L4.93,3.5L3.5,4.93L5.69,7.1C4.81,8.23 4.25,9.58 4.07,11H1V13H4.07C4.25,14.42 4.81,15.77 5.69,16.9L3.5,19.07L4.93,20.5L7.1,18.31C8.23,19.19 9.58,19.75 11,19.93V23H13V19.93C14.42,19.75 15.77,19.19 16.9,18.31L19.07,20.5L20.5,19.07L18.31,16.9C19.19,15.77 19.75,14.42 19.93,13H23M12,8A4,4 0 0,0 8,12H6A6,6 0 0,1 12,6V8Z"; -var mdiMinecraft = "M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M6,6V10H10V12H8V18H10V16H14V18H16V12H14V10H18V6H14V10H10V6H6Z"; -var mdiMiniSd = "M6,4A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V12L18,10V6A2,2 0 0,0 16,4H6M7,6H9V10H7V6M10,6H12V10H10V6M13,6H15V10H13V6Z"; -var mdiMinidisc = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M12,5C15.09,5 17.82,7.04 18.7,10H16A1,1 0 0,0 15,11V13A1,1 0 0,0 16,14H18.71C17.82,16.97 15.09,19 12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; -var mdiMinus = "M19,13H5V11H19V13Z"; -var mdiMinusBox = "M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiMinusBoxMultiple = "M19 11H9V9H19M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6Z"; -var mdiMinusBoxMultipleOutline = "M18 11H10V9H18M20 4V16H8V4H20M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6Z"; -var mdiMinusBoxOutline = "M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M17,11V13H7V11H17Z"; -var mdiMinusCircle = "M17,13H7V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiMinusCircleMultiple = "M2 12C2 9.21 3.64 6.8 6 5.68V3.5C2.5 4.76 0 8.09 0 12S2.5 19.24 6 20.5V18.32C3.64 17.2 2 14.79 2 12M15 3C10.04 3 6 7.04 6 12S10.04 21 15 21 24 16.96 24 12 19.96 3 15 3M20 13H10V11H20V13Z"; -var mdiMinusCircleMultipleOutline = "M11 11V13H19V11H11M2 12C2 9.21 3.64 6.8 6 5.68V3.5C2.5 4.76 0 8.09 0 12S2.5 19.24 6 20.5V18.32C3.64 17.2 2 14.79 2 12M15 3C10.04 3 6 7.04 6 12S10.04 21 15 21 24 16.96 24 12 19.96 3 15 3M15 19C11.14 19 8 15.86 8 12S11.14 5 15 5 22 8.14 22 12 18.86 19 15 19Z"; -var mdiMinusCircleOff = "M22.1 21.5L2.4 1.7L1.1 3L4.1 6C2.8 7.6 2 9.7 2 12C2 17.5 6.5 22 12 22C14.3 22 16.4 21.2 18 19.9L20.8 22.7L22.1 21.5M7 13V11H9.1L11.1 13H7M14.2 11L6.7 3.5C8.3 2.6 10.1 2 12 2C17.5 2 22 6.5 22 12C22 13.9 21.4 15.7 20.5 17.3L16.2 13H17V11H14.2Z"; -var mdiMinusCircleOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L4.1 6C2.8 7.6 2 9.7 2 12C2 17.5 6.5 22 12 22C14.3 22 16.4 21.2 18 19.9L20.8 22.7L22.1 21.5M12 20C7.6 20 4 16.4 4 12C4 10.3 4.6 8.7 5.5 7.4L9.1 11H7V13H11.1L16.6 18.5C15.3 19.4 13.7 20 12 20M8.2 5L6.7 3.5C8.3 2.6 10.1 2 12 2C17.5 2 22 6.5 22 12C22 13.9 21.4 15.7 20.5 17.3L19 15.8C19.6 14.7 20 13.4 20 12C20 7.6 16.4 4 12 4C10.6 4 9.3 4.4 8.2 5M16.2 13L14.2 11H17V13H16.2Z"; -var mdiMinusCircleOutline = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,13H17V11H7"; -var mdiMinusNetwork = "M16,11V9H8V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z"; -var mdiMinusNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M15,11V9H9V11H15"; -var mdiMinusThick = "M20 14H4V10H20V14Z"; -var mdiMirror = "M12 1C16.69 1 20.5 5.93 20.5 12C20.5 18.08 16.69 23 12 23C7.31 23 3.5 18.08 3.5 12C3.5 5.93 7.31 1 12 1M12 3C8.41 3 5.5 7.03 5.5 12C5.5 16.97 8.41 21 12 21C15.59 21 18.5 16.97 18.5 12C18.5 7.03 15.59 3 12 3M8.29 10.28L11.53 7.03L12.59 8.09L9.35 11.34L8.29 10.28M8.7 14.61L14.36 8.95L15.42 10L9.76 15.67L8.7 14.61Z"; -var mdiMixedMartialArts = "M15,10V7H7V10H15M18,7C18.28,7 18.5,7.09 18.7,7.29C18.89,7.5 19,7.73 19,8V10.78C19,10.97 18.97,11.11 18.94,11.2L18.14,15.19C18,15.72 17.7,16 17.2,16H6.8C6.27,16 5.95,15.72 5.86,15.19L5.06,11.2C5.03,11.11 5,10.97 5,10.78V5C5,4.5 5.21,4 5.6,3.61C6,3.2 6.45,3 7,3H15C15.53,3 16,3.2 16.41,3.61C16.81,4 17,4.5 17,5V8C17,7.73 17.11,7.5 17.3,7.29C17.5,7.09 17.72,7 18,7M7,20V17H17V20C17,20.3 16.91,20.53 16.71,20.72C16.5,20.91 16.27,21 16,21H8C7.73,21 7.5,20.91 7.29,20.72C7.09,20.53 7,20.3 7,20Z"; -var mdiMixedReality = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3M8.25,15H9.75L10.75,11.57V15H12.25V9H10L9,12.43L8,9H5.75V15H7.25V11.57L8.25,15M13.5,9V15H15V13H16.15L17,15H18.5L17.6,12.9C18.1,12.65 18.5,12.1 18.5,11.5V10.5C18.5,9.65 17.85,9 17,9H13.5M15,10.5H17V11.5H15V10.5Z"; -var mdiMolecule = "M7.27,10L9,7H14.42L15.58,5L15.5,4.5A1.5,1.5 0 0,1 17,3A1.5,1.5 0 0,1 18.5,4.5C18.5,5.21 18,5.81 17.33,5.96L16.37,7.63L17.73,10L18.59,8.5L18.5,8A1.5,1.5 0 0,1 20,6.5A1.5,1.5 0 0,1 21.5,8C21.5,8.71 21,9.3 20.35,9.46L18.89,12L20.62,15C21.39,15.07 22,15.71 22,16.5A1.5,1.5 0 0,1 20.5,18A1.5,1.5 0 0,1 19,16.5V16.24L17.73,14L16.37,16.37L17.33,18.04C18,18.19 18.5,18.79 18.5,19.5A1.5,1.5 0 0,1 17,21A1.5,1.5 0 0,1 15.5,19.5L15.58,19L14.42,17H10.58L9.42,19L9.5,19.5A1.5,1.5 0 0,1 8,21A1.5,1.5 0 0,1 6.5,19.5C6.5,18.79 7,18.19 7.67,18.04L8.63,16.37L4.38,9C3.61,8.93 3,8.29 3,7.5A1.5,1.5 0 0,1 4.5,6A1.5,1.5 0 0,1 6,7.5C6,7.59 6,7.68 6,7.76L7.27,10M10.15,9L8.42,12L10.15,15H14.85L16.58,12L14.85,9H10.15Z"; -var mdiMoleculeCo = "M8 7C6.9 7 6 7.9 6 9V15C6 16.11 6.9 17 8 17H11V15H8V9H11V7H8M14 7C12.9 7 12 7.9 12 9V15C12 16.11 12.9 17 14 17H16C17.11 17 18 16.11 18 15V9C18 7.9 17.11 7 16 7H14M14 9H16V15H14V9"; -var mdiMoleculeCo2 = "M5,7A2,2 0 0,0 3,9V15A2,2 0 0,0 5,17H8V15H5V9H8V7H5M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M16,10.5V12H19V13.5H17.5A1.5,1.5 0 0,0 16,15V18H20.5V16.5H17.5V15H19A1.5,1.5 0 0,0 20.5,13.5V12A1.5,1.5 0 0,0 19,10.5H16Z"; -var mdiMonitor = "M21,16H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z"; -var mdiMonitorCellphone = "M23,11H18A1,1 0 0,0 17,12V21A1,1 0 0,0 18,22H23A1,1 0 0,0 24,21V12A1,1 0 0,0 23,11M23,20H18V13H23V20M20,2H2C0.89,2 0,2.89 0,4V16A2,2 0 0,0 2,18H9V20H7V22H15V20H13V18H15V16H2V4H20V9H22V4C22,2.89 21.1,2 20,2Z"; -var mdiMonitorCellphoneStar = "M23,11H18A1,1 0 0,0 17,12V21A1,1 0 0,0 18,22H23A1,1 0 0,0 24,21V12A1,1 0 0,0 23,11M23,20H18V13H23V20M20,2H2C0.89,2 0,2.89 0,4V16A2,2 0 0,0 2,18H9V20H7V22H15V20H13V18H15V16H2V4H20V9H22V4C22,2.89 21.1,2 20,2M11.97,9L11,6L10.03,9H7L9.47,10.76L8.53,13.67L11,11.87L13.47,13.67L12.53,10.76L15,9H11.97Z"; -var mdiMonitorClean = "M21 16H3V4H21M21 2H3C1.89 2 1 2.89 1 4V16C1 17.11 1.9 18 3 18H10V20H8V22H16V20H14V18H21C22.11 18 23 17.11 23 16V4C23 2.89 22.1 2 21 2M15 5.5L14.38 6.87L13 7.5L14.38 8.13L15 9.5L15.63 8.13L17 7.5L15.63 6.87L15 5.5M10.5 7.5L9.41 9.91L7 11L9.41 12.09L10.5 14.5L11.6 12.09L14 11L11.6 9.91L10.5 7.5"; -var mdiMonitorDashboard = "M21,16V4H3V16H21M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H14V20H16V22H8V20H10V18H3C1.89,18 1,17.1 1,16V4C1,2.89 1.89,2 3,2H21M5,6H14V11H5V6M15,6H19V8H15V6M19,9V14H15V9H19M5,12H9V14H5V12M10,12H14V14H10V12Z"; -var mdiMonitorEdit = "M21 2H3C1.9 2 1 2.9 1 4V16C1 17.11 1.9 18 3 18H10V20H8V22H16V20H14V18H21C22.11 18 23 17.11 23 16V4C23 2.9 22.11 2 21 2M21 16H3V4H21V16M15.84 8.2L14.83 9.21L12.76 7.18L13.77 6.16C13.97 5.95 14.31 5.94 14.55 6.16L15.84 7.41C16.05 7.62 16.06 7.96 15.84 8.2M8 11.91L12.17 7.72L14.24 9.8L10.08 14H8V11.91Z"; -var mdiMonitorEye = "M3 4V16H21V4H3M3 2H21C22.1 2 23 2.89 23 4V16C23 16.53 22.79 17.04 22.41 17.41C22.04 17.79 21.53 18 21 18H14V20H16V22H8V20H10V18H3C2.47 18 1.96 17.79 1.59 17.41C1.21 17.04 1 16.53 1 16V4C1 2.89 1.89 2 3 2M10.84 8.93C11.15 8.63 11.57 8.45 12 8.45C12.43 8.46 12.85 8.63 13.16 8.94C13.46 9.24 13.64 9.66 13.64 10.09C13.64 10.53 13.46 10.94 13.16 11.25C12.85 11.56 12.43 11.73 12 11.73C11.57 11.73 11.15 11.55 10.84 11.25C10.54 10.94 10.36 10.53 10.36 10.09C10.36 9.66 10.54 9.24 10.84 8.93M10.07 12C10.58 12.53 11.28 12.82 12 12.82C12.72 12.82 13.42 12.53 13.93 12C14.44 11.5 14.73 10.81 14.73 10.09C14.73 9.37 14.44 8.67 13.93 8.16C13.42 7.65 12.72 7.36 12 7.36C11.28 7.36 10.58 7.65 10.07 8.16C9.56 8.67 9.27 9.37 9.27 10.09C9.27 10.81 9.56 11.5 10.07 12M6 10.09C6.94 7.7 9.27 6 12 6C14.73 6 17.06 7.7 18 10.09C17.06 12.5 14.73 14.18 12 14.18C9.27 14.18 6.94 12.5 6 10.09Z"; -var mdiMonitorLock = "M20.5,13A2.5,2.5 0 0,1 23,15.5V16A1,1 0 0,1 24,17V21A1,1 0 0,1 23,22H18A1,1 0 0,1 17,21V17A1,1 0 0,1 18,16V15.5A2.5,2.5 0 0,1 20.5,13M20.5,14A1.5,1.5 0 0,0 19,15.5V16H22V15.5A1.5,1.5 0 0,0 20.5,14M20,4H2V16H15V18H13V20H15V22H7V20H9V18H2C0.89,18 0,17.1 0,16V4C0,2.89 0.89,2 2,2H20A2,2 0 0,1 22,4V11.53C21.41,11.19 20.73,11 20,11V4Z"; -var mdiMonitorMultiple = "M22,17V7H6V17H22M22,5A2,2 0 0,1 24,7V17C24,18.11 23.1,19 22,19H16V21H18V23H10V21H12V19H6C4.89,19 4,18.11 4,17V7A2,2 0 0,1 6,5H22M2,3V15H0V3A2,2 0 0,1 2,1H20V3H2Z"; -var mdiMonitorOff = "M14,18V20H16V22H8V20H10V18H3A2,2 0 0,1 1,16V4L0,3L1.41,1.58L22.16,22.34L20.75,23.75L15,18H14M3,16H13L3,6V16M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H20.66L18.66,16H21V4H6.66L4.66,2H21Z"; -var mdiMonitorScreenshot = "M9,6H5V10H7V8H9M19,10H17V12H15V14H19M21,16H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2"; -var mdiMonitorShare = "M23 4V16C23 17.11 22.11 18 21 18H15V16H21V4H3V16H9V18H3C1.9 18 1 17.11 1 16V4C1 2.89 1.89 2 3 2H21C22.1 2 23 2.89 23 4M13 13H16L12 9L8 13H11V20H8V22H16V20H13V13Z"; -var mdiMonitorSpeaker = "M10 20V18H3C1.9 18 1 17.1 1 16V4C1 2.89 1.89 2 3 2H21C22.1 2 23 2.89 23 4V8H21V4H3V16H12V22H8V20H10M18.5 15C17.12 15 16 16.12 16 17.5S17.12 20 18.5 20 21 18.88 21 17.5 19.88 15 18.5 15M23 10V21C23 21.55 22.55 22 22 22H15C14.45 22 14 21.55 14 21V10C14 9.45 14.45 9 15 9H22C22.55 9 23 9.45 23 10M17 11.5C17 12.33 17.67 13 18.5 13S20 12.33 20 11.5 19.33 10 18.5 10 17 10.67 17 11.5M22 17.5C22 15.57 20.43 14 18.5 14S15 15.57 15 17.5 16.57 21 18.5 21 22 19.43 22 17.5Z"; -var mdiMonitorSpeakerOff = "M23.1 22.5L1.4.7.1 2L1.2 3.1C1.1 3.4 1 3.7 1 4V16C1 17.1 1.9 18 3 18H10V20H8V22H12V16H3V4.9L14 15.9V21C14 21.6 14.5 22 15 22H20.1L21.8 23.7L23.1 22.5M18.5 21C16.6 21 15 19.4 15 17.5C15 17.3 15 17.1 15.1 16.9L16.1 17.9C16.3 18.9 17.1 19.7 18.1 19.9L19.1 20.9C18.9 21 18.7 21 18.5 21M21 17.5V17.8L18.2 15H18.5C19.9 15 21 16.1 21 17.5M23 19.8V10C23 9.4 22.5 9 22 9H15C14.4 9 14 9.5 14 10V10.8L17.4 14.2C17.7 14.1 18.1 14 18.5 14C20.4 14 22 15.6 22 17.5C22 17.9 21.9 18.3 21.8 18.6L23 19.8M18.5 13C17.7 13 17 12.3 17 11.5S17.7 10 18.5 10 20 10.7 20 11.5 19.3 13 18.5 13M7.2 4L5.2 2H21C22.1 2 23 2.9 23 4V8H21V4H7.2Z"; -var mdiMonitorStar = "M21,16V4H3V16H21M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H14V20H16V22H8V20H10V18H3C1.89,18 1,17.1 1,16V4C1,2.89 1.89,2 3,2H21M12.97,9H16L13.53,10.76L14.47,13.67L12,11.87L9.53,13.67L10.47,10.76L8,9H11.03L12,6L12.97,9Z"; -var mdiMoonFirstQuarter = "M12 2V22A10 10 0 0 0 12 2Z"; -var mdiMoonFull = "M12 2A10 10 0 1 1 2 12A10 10 0 0 1 12 2Z"; -var mdiMoonLastQuarter = "M12 2A10 10 0 0 0 12 22Z"; -var mdiMoonNew = "M12 20A8 8 0 1 1 20 12A8 8 0 0 1 12 20M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2Z"; -var mdiMoonWaningCrescent = "M2 12A10 10 0 0 0 15 21.54A10 10 0 0 1 15 2.46A10 10 0 0 0 2 12Z"; -var mdiMoonWaningGibbous = "M18 12C18 7.5 16.08 3.26 12 2A10 10 0 0 0 12 22C16.08 20.74 18 16.5 18 12Z"; -var mdiMoonWaxingCrescent = "M12 2A9.91 9.91 0 0 0 9 2.46A10 10 0 0 1 9 21.54A10 10 0 1 0 12 2Z"; -var mdiMoonWaxingGibbous = "M6 12C6 7.5 7.93 3.26 12 2A10 10 0 0 1 12 22C7.93 20.74 6 16.5 6 12Z"; -var mdiMoped = "M19 15C19.55 15 20 15.45 20 16C20 16.55 19.55 17 19 17S18 16.55 18 16C18 15.45 18.45 15 19 15M19 13C17.34 13 16 14.34 16 16S17.34 19 19 19 22 17.66 22 16 20.66 13 19 13M10 6H5V8H10V6M17 5H14V7H17V9.65L13.5 14H10V9H6C3.79 9 2 10.79 2 13V16H4C4 17.66 5.34 19 7 19S10 17.66 10 16H14.5L19 10.35V7C19 5.9 18.11 5 17 5M7 17C6.45 17 6 16.55 6 16H8C8 16.55 7.55 17 7 17Z"; -var mdiMopedElectric = "M19 5C19 3.9 18.1 3 17 3H14V5H17V7.65L13.5 12H10V7H6C3.79 7 2 8.79 2 11V14H4C4 15.66 5.34 17 7 17S10 15.66 10 14H14.5L19 8.35V5M7 15C6.45 15 6 14.55 6 14H8C8 14.55 7.55 15 7 15M5 4H10V6H5V4M19 11C17.34 11 16 12.34 16 14S17.34 17 19 17 22 15.66 22 14 20.66 11 19 11M19 15C18.45 15 18 14.55 18 14S18.45 13 19 13 20 13.45 20 14 19.55 15 19 15M7 20H11V18L17 21H13V23L7 20Z"; -var mdiMopedElectricOutline = "M19 5C19 3.9 18.1 3 17 3H14V5H17V7.65L13.5 12H10V7H6C3.79 7 2 8.79 2 11V14H4C4 15.66 5.34 17 7 17S10 15.66 10 14H14.5L19 8.35V5M4 12V11C4 9.9 4.9 9 6 9H8V12H4M7 15C6.45 15 6 14.55 6 14H8C8 14.55 7.55 15 7 15M5 4H10V6H5V4M19 11C17.34 11 16 12.34 16 14S17.34 17 19 17 22 15.66 22 14 20.66 11 19 11M19 15C18.45 15 18 14.55 18 14S18.45 13 19 13 20 13.45 20 14 19.55 15 19 15M7 20H11V18L17 21H13V23L7 20Z"; -var mdiMopedOutline = "M19 7C19 5.9 18.11 5 17 5H14V7H17V9.65L13.5 14H10V9H6C3.79 9 2 10.79 2 13V16H4C4 17.66 5.34 19 7 19S10 17.66 10 16H14.5L19 10.35V7M7 17C6.45 17 6 16.55 6 16H8C8 16.55 7.55 17 7 17M8 14H4V13C4 11.9 4.9 11 6 11H8V14M19 13C17.34 13 16 14.34 16 16S17.34 19 19 19 22 17.66 22 16 20.66 13 19 13M19 17C18.45 17 18 16.55 18 16S18.45 15 19 15 20 15.45 20 16 19.55 17 19 17M10 8H5V6H10V8Z"; -var mdiMore = "M19,13.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 19,13.5M14,13.5A1.5,1.5 0 0,1 12.5,12A1.5,1.5 0 0,1 14,10.5A1.5,1.5 0 0,1 15.5,12A1.5,1.5 0 0,1 14,13.5M9,13.5A1.5,1.5 0 0,1 7.5,12A1.5,1.5 0 0,1 9,10.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 9,13.5M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.37,21 7.06,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3Z"; -var mdiMotherHeart = "M12 2C13.66 2 15 3.34 15 5S13.66 8 12 8 9 6.66 9 5 10.34 2 12 2M20 18L18 12.56C17.65 11.57 17.34 10.71 16 10C14.63 9.3 13.63 9 12 9C10.39 9 9.39 9.3 8 10C6.68 10.71 6.37 11.57 6 12.56L4 18C3.77 19.13 6.38 20.44 8.13 21.19C9.34 21.72 10.64 22 12 22C13.38 22 14.67 21.72 15.89 21.19C17.64 20.44 20.25 19.13 20 18M15.42 17.5L12 21L8.58 17.5C8.22 17.12 8 16.61 8 16.05C8 14.92 8.9 14 10 14C10.55 14 11.06 14.23 11.42 14.61L12 15.2L12.58 14.6C12.94 14.23 13.45 14 14 14C15.11 14 16 14.92 16 16.05C16 16.61 15.78 17.13 15.42 17.5Z"; -var mdiMotherNurse = "M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M20,18L18,12.56C17.65,11.57 17.34,10.71 16,10C14.62,9.3 13.62,9 12,9C10.37,9 9.38,9.3 8,10C6.66,10.71 6.35,11.57 6,12.56L4,18C3.68,19.35 6.36,20.44 8.11,21.19V19C8.11,18.05 8.97,17.38 10.69,16.97C10.85,16.93 11,16.91 11.12,16.89C10.58,16.07 10.36,15.34 10.34,15.28L12.11,14.68C12.12,14.7 12.63,16.27 13.84,17.06C14.05,17.13 14.26,17.21 14.46,17.3C15.23,17.64 15.69,18.08 15.84,18.61C14.5,19.14 13.22,19.41 12,19.41L11,19.31V21.94L12,22C13.37,22 14.67,21.72 15.89,21.19C17.64,20.44 20.25,19.13 20,18M15.5,17A1.5,1.5 0 0,1 14,15.5A1.5,1.5 0 0,1 15.5,14A1.5,1.5 0 0,1 17,15.5A1.5,1.5 0 0,1 15.5,17Z"; -var mdiMotion = "M7 13H3C2.45 13 2 12.55 2 12S2.45 11 3 11H7C7.55 11 8 11.45 8 12S7.55 13 7 13M6 8C6 7.45 5.55 7 5 7H4C3.45 7 3 7.45 3 8S3.45 9 4 9H5C5.55 9 6 8.55 6 8M22 12C22 14.76 19.76 17 17 17H4C3.45 17 3 16.55 3 16S3.45 15 4 15H13C12.58 14.42 12.25 13.74 12.1 13H10C9.45 13 9 12.55 9 12S9.45 11 10 11H12.1C12.25 10.26 12.58 9.58 13 9H8C7.45 9 7 8.55 7 8S7.45 7 8 7H17C19.76 7 22 9.24 22 12Z"; -var mdiMotionOutline = "M7 13H3C2.45 13 2 12.55 2 12S2.45 11 3 11H7C7.55 11 8 11.45 8 12S7.55 13 7 13M6 8C6 7.45 5.55 7 5 7H4C3.45 7 3 7.45 3 8S3.45 9 4 9H5C5.55 9 6 8.55 6 8M22 12C22 14.76 19.76 17 17 17H4C3.45 17 3 16.55 3 16S3.45 15 4 15H13C12.58 14.42 12.25 13.74 12.1 13H10C9.45 13 9 12.55 9 12S9.45 11 10 11H12.1C12.25 10.26 12.58 9.58 13 9H8C7.45 9 7 8.55 7 8S7.45 7 8 7H17C19.76 7 22 9.24 22 12M20 12C20 10.35 18.65 9 17 9S14 10.35 14 12C14 13.65 15.35 15 17 15S20 13.65 20 12Z"; -var mdiMotionPause = "M22 12C22 6.46 17.54 2 12 2C10.83 2 9.7 2.19 8.62 2.56L9.32 4.5C10.17 4.16 11.06 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 11.06 4.16 10.12 4.5 9.28L2.56 8.62C2.19 9.7 2 10.83 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12M5.47 3.97C6.32 3.97 7 4.68 7 5.47C7 6.32 6.32 7 5.47 7C4.68 7 3.97 6.32 3.97 5.47C3.97 4.68 4.68 3.97 5.47 3.97M18 12C18 8.67 15.33 6 12 6C8.67 6 6 8.67 6 12C6 15.33 8.67 18 12 18C15.33 18 18 15.33 18 12M11 9V15H9V9M15 9V15H13V9"; -var mdiMotionPauseOutline = "M22 12C22 6.46 17.54 2 12 2C10.83 2 9.7 2.19 8.62 2.56L9.32 4.5C10.17 4.16 11.06 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 11.06 4.16 10.12 4.5 9.28L2.56 8.62C2.19 9.7 2 10.83 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12M5.47 7C4.68 7 3.97 6.32 3.97 5.47C3.97 4.68 4.68 3.97 5.47 3.97C6.32 3.97 7 4.68 7 5.47C7 6.32 6.32 7 5.47 7M9 9H11V15H9M13 9H15V15H13"; -var mdiMotionPlay = "M22 12C22 6.46 17.54 2 12 2C10.83 2 9.7 2.19 8.62 2.56L9.32 4.5C10.17 4.16 11.06 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 11.06 4.16 10.12 4.5 9.28L2.56 8.62C2.19 9.7 2 10.83 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12M5.47 3.97C6.32 3.97 7 4.68 7 5.47C7 6.32 6.32 7 5.47 7C4.68 7 3.97 6.32 3.97 5.47C3.97 4.68 4.68 3.97 5.47 3.97M18 12C18 8.67 15.33 6 12 6C8.67 6 6 8.67 6 12C6 15.33 8.67 18 12 18C15.33 18 18 15.33 18 12M15 12L10 15V9"; -var mdiMotionPlayOutline = "M10 16.5L16 12L10 7.5M22 12C22 6.46 17.54 2 12 2C10.83 2 9.7 2.19 8.62 2.56L9.32 4.5C10.17 4.16 11.06 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 11.06 4.16 10.12 4.5 9.28L2.56 8.62C2.19 9.7 2 10.83 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12M5.47 3.97C6.32 3.97 7 4.68 7 5.47C7 6.32 6.32 7 5.47 7C4.68 7 3.97 6.32 3.97 5.47C3.97 4.68 4.68 3.97 5.47 3.97Z"; -var mdiMotionSensor = "M10,0.2C9,0.2 8.2,1 8.2,2C8.2,3 9,3.8 10,3.8C11,3.8 11.8,3 11.8,2C11.8,1 11,0.2 10,0.2M15.67,1A7.33,7.33 0 0,0 23,8.33V7A6,6 0 0,1 17,1H15.67M18.33,1C18.33,3.58 20.42,5.67 23,5.67V4.33C21.16,4.33 19.67,2.84 19.67,1H18.33M21,1A2,2 0 0,0 23,3V1H21M7.92,4.03C7.75,4.03 7.58,4.06 7.42,4.11L2,5.8V11H3.8V7.33L5.91,6.67L2,22H3.8L6.67,13.89L9,17V22H10.8V15.59L8.31,11.05L9.04,8.18L10.12,10H15V8.2H11.38L9.38,4.87C9.08,4.37 8.54,4.03 7.92,4.03Z"; -var mdiMotionSensorOff = "M11.4 8.2H15V10H13.2L11.4 8.2M19.67 1H18.33C18.33 3.58 20.42 5.67 23 5.67V4.33C21.16 4.33 19.67 2.84 19.67 1M21 1C21 2.11 21.9 3 23 3V1H21M17 1H15.67C15.67 5.05 18.95 8.33 23 8.33V7C19.69 7 17 4.31 17 1M10 3.8C11 3.8 11.8 3 11.8 2S11 .2 10 .2 8.2 1 8.2 2 9 3.8 10 3.8M2.39 1.73L1.11 3L3.46 5.35L2 5.8V11H3.8V7.33L5.05 6.94L5.68 7.57L2 22H3.8L6.67 13.89L9 17V22H10.8V15.59L8.31 11.05L8.5 10.37L20.84 22.73L22.11 21.46L2.39 1.73M9.38 4.87C9.08 4.37 8.54 4.03 7.92 4.03C7.75 4.03 7.58 4.06 7.42 4.11L7.34 4.14L11.35 8.15L9.38 4.87Z"; -var mdiMotorbike = "M17.42,10L13.41,6H9V8H12.59L14.59,10H6.5C4,10 2,12 2,14.5C2,17 4,19 6.5,19C8.72,19 10.56,17.38 10.92,15.27L13.04,14C13,14.17 13,14.33 13,14.5C13,17 15,19 17.5,19C20,19 22,17 22,14.5C22,12 20,10 17.5,10M8.84,15.26C8.5,16.27 7.58,17 6.47,17C5.09,17 3.97,15.88 3.97,14.5C3.97,13.12 5.09,12 6.47,12C7.59,12 8.5,12.74 8.84,13.75H6V15.25L8.84,15.26M17.47,17C16.09,17 14.97,15.88 14.97,14.5C14.97,13.12 16.09,12 17.47,12A2.5,2.5 0 0,1 19.97,14.5A2.5,2.5 0 0,1 17.47,17Z"; -var mdiMotorbikeElectric = "M17.42 8L13.41 4H9V6H12.59L14.59 8H6.5C4 8 2 10 2 12.5S4 17 6.5 17C8.72 17 10.56 15.38 10.92 13.27L13.04 12C13 12.17 13 12.33 13 12.5C13 15 15 17 17.5 17S22 15 22 12.5 20 8 17.5 8M8.84 13.26C8.5 14.27 7.58 15 6.47 15C5.09 15 3.97 13.88 3.97 12.5S5.09 10 6.47 10C7.59 10 8.5 10.74 8.84 11.75H6V13.25L8.84 13.26M17.47 15C16.09 15 14.97 13.88 14.97 12.5S16.09 10 17.47 10C18.85 10 19.97 11.12 19.97 12.5S18.85 15 17.47 15M11 20H7L13 23V21H17L11 18V20Z"; -var mdiMouse = "M11,1.07C7.05,1.56 4,4.92 4,9H11M4,15A8,8 0 0,0 12,23A8,8 0 0,0 20,15V11H4M13,1.07V9H20C20,4.92 16.94,1.56 13,1.07Z"; -var mdiMouseBluetooth = "M20,7H20.5L23.35,9.85L21.21,12L23.35,14.14L20.5,17H20V13.21L17.71,15.5L17,14.79L19.79,12L17,9.21L17.71,8.5L20,10.79V7M21,8.91V10.79L21.94,9.85L21,8.91M21,13.21V15.08L21.94,14.14L21,13.21M15,9V10H9V2.07C12.39,2.56 15,5.47 15,9M1,10V9C1,5.47 3.61,2.56 7,2.07V10H1M15,15A7,7 0 0,1 8,22A7,7 0 0,1 1,15V12H15V15Z"; -var mdiMouseMoveDown = "M7 9H2C2 6.04 4.17 3.57 7 3.09V9M20 7H18V13H15L19 17L23 13H20V7M9 3.09V9H14C14 6.04 11.83 3.57 9 3.09M2 15C2 18.3 4.7 21 8 21S14 18.3 14 15V11H2V15Z"; -var mdiMouseMoveUp = "M7 9H2C2 6.04 4.17 3.57 7 3.09V9M18 17H20V11H23L19 7L15 11H18V17M9 3.09V9H14C14 6.04 11.83 3.57 9 3.09M2 15C2 18.3 4.7 21 8 21S14 18.3 14 15V11H2V15Z"; -var mdiMouseMoveVertical = "M20 6H23L19 2L15 6H18V18H15L19 22L23 18H20V6M9 3.09C11.83 3.57 14 6.04 14 9H9V3.09M14 11V15C14 18.3 11.3 21 8 21S2 18.3 2 15V11H14M7 9H2C2 6.04 4.17 3.57 7 3.09V9Z"; -var mdiMouseOff = "M2,5.27L3.28,4L20,20.72L18.73,22L17.5,20.79C16.08,22.16 14.14,23 12,23A8,8 0 0,1 4,15V11H7.73L5.73,9H4C4,8.46 4.05,7.93 4.15,7.42L2,5.27M11,1.07V9H10.82L5.79,3.96C7.05,2.4 8.9,1.33 11,1.07M20,11V15C20,15.95 19.83,16.86 19.53,17.71L12.82,11H20M13,1.07C16.94,1.56 20,4.92 20,9H13V1.07Z"; -var mdiMouseVariant = "M14,7H10V2.1C12.28,2.56 14,4.58 14,7M4,7C4,4.58 5.72,2.56 8,2.1V7H4M14,12C14,14.42 12.28,16.44 10,16.9V18A3,3 0 0,0 13,21A3,3 0 0,0 16,18V13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13H18V18A5,5 0 0,1 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H14V12Z"; -var mdiMouseVariantOff = "M2,5.27L3.28,4L20,20.72L18.73,22L17.29,20.56C16.42,22 14.82,23 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H5.73L2,5.27M14,7H10V2.1C12.28,2.56 14,4.58 14,7M8,2.1V6.18L5.38,3.55C6.07,2.83 7,2.31 8,2.1M14,12V12.17L10.82,9H14V12M10,16.9V18A3,3 0 0,0 13,21C14.28,21 15.37,20.2 15.8,19.07L12.4,15.67C11.74,16.28 10.92,16.71 10,16.9M16,13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13V16.18L16,14.18V13Z"; -var mdiMoveResize = "M9,1V2H10V5H9V6H12V5H11V2H12V1M9,7C7.89,7 7,7.89 7,9V21C7,22.11 7.89,23 9,23H21C22.11,23 23,22.11 23,21V9C23,7.89 22.11,7 21,7M1,9V12H2V11H5V12H6V9H5V10H2V9M9,9H21V21H9M14,10V11H15V16H11V15H10V18H11V17H15V19H14V20H17V19H16V17H19V18H20V15H19V16H16V11H17V10"; -var mdiMoveResizeVariant = "M1.88,0.46L0.46,1.88L5.59,7H2V9H9V2H7V5.59M11,7V9H21V15H23V9A2,2 0 0,0 21,7M7,11V21A2,2 0 0,0 9,23H15V21H9V11M15.88,14.46L14.46,15.88L19.6,21H17V23H23V17H21V19.59"; -var mdiMovie = "M18,4L20,8H17L15,4H13L15,8H12L10,4H8L10,8H7L5,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V4H18Z"; -var mdiMovieCheck = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; -var mdiMovieCheckOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; -var mdiMovieCog = "M12 19C12 19.34 12.03 19.67 12.08 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V12.68C21.09 12.25 20.08 12 19 12C15.13 12 12 15.13 12 19M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; -var mdiMovieCogOutline = "M12 19C12 19.34 12.03 19.67 12.08 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V12.68C21.38 12.39 20.71 12.18 20 12.08V10H5.76L4 6.47V18H12.08C12.03 18.33 12 18.66 12 19M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; -var mdiMovieEdit = "M21.04 11.13C20.9 11.13 20.76 11.19 20.65 11.3L19.65 12.3L21.7 14.35L22.7 13.35C22.92 13.14 22.92 12.79 22.7 12.58L21.42 11.3C21.31 11.19 21.18 11.13 21.04 11.13M19.07 12.88L13 18.94V21H15.06L21.12 14.93L19.07 12.88M11 20H3C1.9 20 1 19.11 1 18V6C1 4.89 1.9 4 3 4H4L6 8H9L7 4H9L11 8H14L12 4H14L16 8H19L17 4H21V8.12L11 18.11V20Z"; -var mdiMovieEditOutline = "M21 4V8.12L19.12 10H4.76L3 6.47V18H11V20H3C1.9 20 1 19.11 1 18V6C1 4.89 1.9 4 3 4H4L6 8H9L7 4H9L11 8H14L12 4H14L16 8H19L17 4H21M21.42 12.3L22.7 13.58C22.92 13.79 22.92 14.14 22.7 14.35L21.7 15.35L19.65 13.3L20.65 12.3C20.76 12.19 20.9 12.13 21.04 12.13C21.18 12.13 21.31 12.19 21.42 12.3M21.12 15.93L15.06 22H13V19.94L19.07 13.88L21.12 15.93Z"; -var mdiMovieFilter = "M18 4L20 7H17L15 4H13L15 7H12L10 4H8L10 7H7L5 4H4C2.9 4 2 4.9 2 6L2 18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V4H18M11.25 15.25L10 18L8.75 15.25L6 14L8.75 12.75L10 10L11.25 12.75L14 14L11.25 15.25M16.94 11.94L16 14L15.06 11.94L13 11L15.06 10.06L16 8L16.94 10.06L19 11L16.94 11.94Z"; -var mdiMovieFilterOutline = "M10 11L9.06 13.06L7 14L9.06 14.94L10 17L10.94 14.94L13 14L10.94 13.06M18 4L20 8H17L15 4H13L15 8H12L10 4H8L10 8H7L5 4H4C2.91 4 2 4.9 2 6L2 18C2 19.1 2.91 20 4 20H20C21.11 20 22 19.1 22 18V4H18M20 18H4V6.47L5.77 10H16L15.37 11.37L14 12L15.37 12.63L16 14L16.63 12.63L18 12L16.63 11.37L16 10H20V18Z"; -var mdiMovieMinus = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M15 18V20H23V18H15Z"; -var mdiMovieMinusOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M15 18V20H23V18H15Z"; -var mdiMovieOff = "M22.11 21.46L20.84 22.73L18.11 20H4C2.9 20 2 19.11 2 18V6C2 5.42 2.25 4.9 2.65 4.54L1.11 3L2.39 1.73L22.11 21.46M21.88 18.68C21.96 18.47 22 18.24 22 18V4H18L20 8H17L15 4H13L15 8H12L10 4H8L8.8 5.6L21.88 18.68Z"; -var mdiMovieOffOutline = "M2.39 1.73L1.11 3L2.65 4.54C2.25 4.9 2 5.42 2 6V18C2 19.11 2.9 20 4 20H18.11L20.84 22.73L22.11 21.46L2.39 1.73M4 18V6.47L5.76 10H8.11L16.11 18H4M8.8 5.6L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V18C22 18.24 21.96 18.47 21.88 18.68L20 16.8V10H13.2L8.8 5.6Z"; -var mdiMovieOpen = "M20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1L20.84 2.18M13.97 3.54L12 3.93L14.75 7.46L16.71 7.07L13.97 3.54M9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05L9.07 4.5M4.16 5.5L3.18 5.69A2 2 0 0 0 1.61 8.04L2 10L6.9 9.03L4.16 5.5M2 10V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V10H2Z"; -var mdiMovieOpenCheck = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; -var mdiMovieOpenCheckOutline = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M4 20V12H20V13.09C20.72 13.21 21.39 13.46 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.46 21.39 13.22 20.72 13.09 20H4M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z"; -var mdiMovieOpenCog = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M19 12C20.08 12 21.09 12.25 22 12.68V10H2V20C2 21.11 2.9 22 4 22H12.68C12.25 21.09 12 20.08 12 19C12 15.13 15.13 12 19 12M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; -var mdiMovieOpenCogOutline = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M4 20V12H20V12.08C20.71 12.18 21.38 12.39 22 12.69V10H2V20C2 21.11 2.9 22 4 22H12.68C12.39 21.38 12.18 20.71 12.08 20H4M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; -var mdiMovieOpenEdit = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M2 10V20C2 21.11 2.9 22 4 22H11V19.13L20.13 10H2M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47Z"; -var mdiMovieOpenEditOutline = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M4 12H18.13L20.13 10H2V20C2 21.11 2.9 22 4 22H11V20H4V12M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47Z"; -var mdiMovieOpenMinus = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M15 18V20H23V18H15Z"; -var mdiMovieOpenMinusOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H4C2.9 22 2 21.11 2 20V10H22V13.81C21.39 13.46 20.72 13.22 20 13.09V12H4V20H13.09M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M15 18V20H23V18H15Z"; -var mdiMovieOpenOff = "M13.2 10H22V18.8L13.2 10M21.6 6.1L20.8 2.2L16.9 3L19.6 6.5L21.6 6.1M11.8 8L9.1 4.5L7.9 4.7L11.3 8.1L11.8 8M2.4 1.7L1.1 3L3.7 5.6L3.2 5.7C2.1 5.9 1.4 7 1.6 8L2 10L7.1 9L8.1 10H2V20C2 21.1 2.9 22 4 22H20.1L20.8 22.7L22.1 21.4L2.4 1.7M16.7 7.1L14 3.5L12 3.9L14.8 7.4L16.7 7.1Z"; -var mdiMovieOpenOffOutline = "M19.7 6.5L16.9 3L20.8 2.2L21.6 6.1L19.7 6.5M22.1 21.5L20.8 22.8L20.1 22H4C2.9 22 2 21.1 2 20V10H8.1L7.1 9L2 10L1.6 8C1.4 7 2.1 5.9 3.2 5.7L3.7 5.6L1.1 3L2.4 1.7L22.1 21.5M18.1 20L10.1 12H4V20H18.1M22 18.8V10H13.2L15.2 12H20V16.8L22 18.8M16.7 7.1L14 3.5L12 3.9L14.8 7.4L16.7 7.1M11.8 8L9.1 4.5L7.9 4.7L11.3 8.1L11.8 8Z"; -var mdiMovieOpenOutline = "M20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1L20.84 2.18M13.97 3.54L12 3.93L14.75 7.46L16.71 7.07L13.97 3.54M9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05L9.07 4.5M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M20 12V20H4V12H20M22 10H2V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V10Z"; -var mdiMovieOpenPlay = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M2 10V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13C20.1 13 21.12 13.3 22 13.81V10H2M17 22L22 19L17 16V22Z"; -var mdiMovieOpenPlayOutline = "M22 10V13.81C21.39 13.46 20.72 13.22 20 13.09V12H4V20H13.09C13.21 20.72 13.46 21.39 13.81 22H4C2.9 22 2 21.11 2 20V10H22M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M17 22L22 19L17 16V22Z"; -var mdiMovieOpenPlus = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; -var mdiMovieOpenPlusOutline = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M4 20V12H20V13.09C20.72 13.21 21.39 13.46 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.46 21.39 13.22 20.72 13.09 20H4M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; -var mdiMovieOpenRemove = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; -var mdiMovieOpenRemoveOutline = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4 20V12H20V13.09C20.72 13.21 21.39 13.46 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.46 21.39 13.22 20.72 13.09 20H4M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; -var mdiMovieOpenSettings = "M14.75 5.46L12 1.93L13.97 1.54L16.71 5.07L14.75 5.46M21.62 4.1L20.84 .18L16.91 .96L19.65 4.5L21.62 4.1M11.81 6.05L9.07 2.5L7.1 2.91L9.85 6.44L11.81 6.05M2 8V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V8H2M4.16 3.5L3.18 3.69C2.1 3.91 1.4 4.96 1.61 6.04L2 8L6.9 7.03L4.16 3.5M11 24H13V22H11V24M7 24H9V22H7V24M15 24H17V22H15V24Z"; -var mdiMovieOpenSettingsOutline = "M19.65 4.5L16.91 .96L20.84 .18L21.62 4.1L19.65 4.5M16.71 5.07L13.97 1.54L12 1.93L14.75 5.46L16.71 5.07M11.81 6.05L9.07 2.5L7.1 2.91L9.85 6.44L11.81 6.05M4.16 3.5L3.18 3.69C2.1 3.9 1.39 4.96 1.61 6.04L2 8L6.9 7.03L4.16 3.5M22 8V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V8H22M20 10H4V18H20V10M7 24H9V22H7V24M15 24H17V22H15V24M11 24H13V22H11V24Z"; -var mdiMovieOpenStar = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M23 17.89L20.11 17.64L19 15L17.87 17.64L15 17.89L17.18 19.77L16.5 22.58L19 21.09L21.45 22.58L20.8 19.77L23 17.89Z"; -var mdiMovieOpenStarOutline = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4 20V12H20V13.09C20.72 13.21 21.39 13.46 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.46 21.39 13.22 20.72 13.09 20H4M23 17.89L20.11 17.64L19 15L17.87 17.64L15 17.89L17.18 19.77L16.5 22.58L19 21.09L21.45 22.58L20.8 19.77L23 17.89Z"; -var mdiMovieOutline = "M5.76,10H20V18H4V6.47M22,4H18L20,8H17L15,4H13L15,8H12L10,4H8L10,8H7L5,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V4Z"; -var mdiMoviePlay = "M22 4V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22M17 22L22 19L17 16V22Z"; -var mdiMoviePlayOutline = "M22 4V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22M17 22L22 19L17 16V22Z"; -var mdiMoviePlus = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; -var mdiMoviePlusOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; -var mdiMovieRemove = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; -var mdiMovieRemoveOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; -var mdiMovieRoll = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A2.5,2.5 0 0,0 9.5,6.5A2.5,2.5 0 0,0 12,9A2.5,2.5 0 0,0 14.5,6.5A2.5,2.5 0 0,0 12,4M4.4,9.53C3.97,10.84 4.69,12.25 6,12.68C7.32,13.1 8.73,12.39 9.15,11.07C9.58,9.76 8.86,8.35 7.55,7.92C6.24,7.5 4.82,8.21 4.4,9.53M19.61,9.5C19.18,8.21 17.77,7.5 16.46,7.92C15.14,8.34 14.42,9.75 14.85,11.07C15.28,12.38 16.69,13.1 18,12.67C19.31,12.25 20.03,10.83 19.61,9.5M7.31,18.46C8.42,19.28 10,19.03 10.8,17.91C11.61,16.79 11.36,15.23 10.24,14.42C9.13,13.61 7.56,13.86 6.75,14.97C5.94,16.09 6.19,17.65 7.31,18.46M16.7,18.46C17.82,17.65 18.07,16.09 17.26,14.97C16.45,13.85 14.88,13.6 13.77,14.42C12.65,15.23 12.4,16.79 13.21,17.91C14,19.03 15.59,19.27 16.7,18.46M12,10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5Z"; -var mdiMovieSearch = "M11.03 20H4C2.9 20 2 19.1 2 18L2 6C2 4.9 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.05C20.85 11.22 18.82 10 16.5 10C12.92 10 10 12.92 10 16.5C10 17.79 10.38 19 11.03 20M23.39 22L22 23.39L18.88 20.32C18.19 20.75 17.37 21 16.5 21C14 21 12 19 12 16.5S14 12 16.5 12 21 14 21 16.5C21 17.38 20.75 18.21 20.31 18.9L23.39 22M19 16.5C19 15.12 17.88 14 16.5 14S14 15.12 14 16.5 15.12 19 16.5 19 19 17.88 19 16.5Z"; -var mdiMovieSearchOutline = "M11 20H4C2.9 20 2 19.1 2 18V6C2 4.9 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13C21.5 12.2 20.8 11.5 20 11V10H5.8L4 6.5V18H10.2C10.4 18.7 10.6 19.4 11 20M20.3 18.9C20.7 18.2 21 17.4 21 16.5C21 14 19 12 16.5 12S12 14 12 16.5 14 21 16.5 21C17.4 21 18.2 20.8 18.9 20.3L22 23.4L23.4 22L20.3 18.9M16.5 19C15.1 19 14 17.9 14 16.5S15.1 14 16.5 14 19 15.1 19 16.5 17.9 19 16.5 19Z"; -var mdiMovieSettings = "M22 4V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22M7 24H9V22H7V24M11 24H13V22H11V24M15 24H17V22H15V24Z"; -var mdiMovieSettingsOutline = "M18 4L20 8H17L15 4H13L15 8H12L10 4H8L10 8H7L5 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V4H18M20 18H4V6.47L5.76 10H20V18M11 22H13V24H11V22M7 22H9V24H7V22M15 22H17V24H15V22Z"; -var mdiMovieStar = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M23 17.89L20.11 17.64L19 15L17.87 17.64L15 17.89L17.18 19.77L16.5 22.58L19 21.09L21.45 22.58L20.8 19.77L23 17.89Z"; -var mdiMovieStarOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M23 17.89L20.11 17.64L19 15L17.87 17.64L15 17.89L17.18 19.77L16.5 22.58L19 21.09L21.45 22.58L20.8 19.77L23 17.89Z"; -var mdiMower = "M18.5 14C17.55 14 16.69 14.38 16.06 15H9.39L5.74 3H2V5H4.26L7 14.05C6.85 14.03 6.68 14 6.5 14C4.57 14 3 15.57 3 17.5S4.57 21 6.5 21C7.89 21 9.09 20.18 9.65 19H15.35C15.91 20.18 17.11 21 18.5 21C20.43 21 22 19.43 22 17.5S20.43 14 18.5 14M6.5 19C5.67 19 5 18.33 5 17.5S5.67 16 6.5 16 8 16.67 8 17.5 7.33 19 6.5 19M18.5 19C17.67 19 17 18.33 17 17.5S17.67 16 18.5 16 20 16.67 20 17.5 19.33 19 18.5 19M10.13 14L9.53 12H12.76C13.5 12 14.21 12.43 14.55 13.11L15 14H10.13Z"; -var mdiMowerBag = "M11.95 14L10.82 12H14.76C15.5 12 16.21 12.43 16.55 13.11L17 14H11.95M23 18C23 19.66 21.66 21 20 21C18.7 21 17.6 20.16 17.18 19H11.65C11.09 20.18 9.89 21 8.5 21S5.91 20.18 5.35 19H2C1.45 19 1 18.55 1 18V11C1 10.67 1.17 10.36 1.44 10.17C1.71 10 2.06 9.95 2.37 10.07L7.43 12.09L3.42 5H1V3H4.58L11.37 15H20C21.66 15 23 16.34 23 18M7.34 14.21L3 12.5V17H5.05C5.24 15.7 6.13 14.64 7.34 14.21M10 17.5C10 16.67 9.33 16 8.5 16S7 16.67 7 17.5 7.67 19 8.5 19 10 18.33 10 17.5M21 18C21 17.45 20.55 17 20 17S19 17.45 19 18 19.45 19 20 19 21 18.55 21 18Z"; -var mdiMuffin = "M16,5C16,5 15,2 12,2C9,2 8,5 8,5C6,5 4,7 4,9C1.3,9 1.3,13 4,13H20C22.7,13 22.7,9 20,9C20,7 18,5 16,5M5,15L7,22H9L8,15H5M10,15L11,22H13L14,15H10M16,15L15,22H17L19,15H16Z"; -var mdiMultiplication = "M11,3H13V10.27L19.29,6.64L20.29,8.37L14,12L20.3,15.64L19.3,17.37L13,13.72V21H11V13.73L4.69,17.36L3.69,15.63L10,12L3.72,8.36L4.72,6.63L11,10.26V3Z"; -var mdiMultiplicationBox = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M11,17H13V13.73L15.83,15.36L16.83,13.63L14,12L16.83,10.36L15.83,8.63L13,10.27V7H11V10.27L8.17,8.63L7.17,10.36L10,12L7.17,13.63L8.17,15.36L11,13.73V17Z"; -var mdiMushroom = "M12,2A10,10 0 0,1 22,12A2,2 0 0,1 20,14H4A2,2 0 0,1 2,12A10,10 0 0,1 12,2M12,8A2,2 0 0,0 14,6A2,2 0 0,0 12,4A2,2 0 0,0 10,6A2,2 0 0,0 12,8M17,12A2,2 0 0,0 19,10A2,2 0 0,0 17,8A2,2 0 0,0 15,10A2,2 0 0,0 17,12M7,12A2,2 0 0,0 9,10A2,2 0 0,0 7,8A2,2 0 0,0 5,10A2,2 0 0,0 7,12M15,15L16.27,19.45L16.35,20C16.35,21.1 15.45,22 14.35,22H9.65A2,2 0 0,1 7.65,20L7.73,19.45L9,15H15Z"; -var mdiMushroomOff = "M22.1 21.5L2.4 1.7L1.1 3L4.1 6C2.8 7.6 2 9.7 2 12C2 13.1 2.9 14 4 14H12.1L13.1 15H9L7.7 19.5V20C7.7 21.1 8.6 22 9.7 22H14.4C15.5 22 16.4 21.1 16.4 20L16.3 19.5L15.8 17.7L20.9 22.8L22.1 21.5M7 12C5.9 12 5 11.1 5 10C5 9.2 5.5 8.4 6.3 8.1L8.9 10.7C8.6 11.5 7.8 12 7 12M10 6C10 4.9 10.9 4 12 4S14 4.9 14 6 13.1 8 12 8C11.5 8 11.1 7.8 10.7 7.5L17.2 14H20C21.1 14 22 13.1 22 12C22 6.5 17.5 2 12 2C10.1 2 8.3 2.6 6.7 3.5L10.4 7.2C10.2 6.9 10 6.5 10 6M17 8C18.1 8 19 8.9 19 10S18.1 12 17 12 15 11.1 15 10 15.9 8 17 8Z"; -var mdiMushroomOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L4.1 6C2.8 7.6 2 9.7 2 12C2 13.1 2.9 14 4 14H12.1L13.1 15H9L8 18.5L7.7 19.5C7.4 20.6 8.1 21.7 9.1 21.9L9.7 22H14.4C15.5 22 16.4 21.1 16.4 20L16.3 19.5L16 18.5L15.8 17.6L20.9 22.7L22.1 21.5M4 12C4 10.3 4.6 8.7 5.5 7.4L6.2 8.1C6.1 8.4 6 8.7 6 9C6 10.1 6.9 11 8 11C8.3 11 8.6 10.9 8.9 10.8L10.1 12H4M9.7 20L10 19L10.6 17H13.6L14.2 19L14.5 20H9.7M16 11C14.9 11 14 10.1 14 9S14.9 7 16 7 18 7.9 18 9 17.1 11 16 11M8.2 5L6.7 3.5C8.3 2.6 10.1 2 12 2C17.5 2 22 6.5 22 12C22 13.1 21.1 14 20 14H17.2L15.2 12H20C20 8.3 17.4 5.1 14 4.2C13.9 5.2 13 6 12 6S10.1 5.2 10 4.2C9.4 4.4 8.7 4.7 8.2 5Z"; -var mdiMushroomOutline = "M4,12H20C20,8.27 17.44,5.13 14,4.25C13.86,5.24 13,6 12,6C11,6 10.14,5.24 10,4.25C6.56,5.13 4,8.27 4,12M12,2A10,10 0 0,1 22,12A2,2 0 0,1 20,14H4A2,2 0 0,1 2,12A10,10 0 0,1 12,2M13.5,17H10.5L9.92,19L9.65,20H14.35L14.08,19L13.5,17M15,15L16,18.5L16.27,19.45L16.35,20C16.35,21.1 15.45,22 14.35,22H9.65L9.17,21.94C8.1,21.66 7.45,20.57 7.73,19.5L8,18.5L9,15H15M16,7A2,2 0 0,1 18,9A2,2 0 0,1 16,11A2,2 0 0,1 14,9A2,2 0 0,1 16,7M8,7A2,2 0 0,1 10,9A2,2 0 0,1 8,11A2,2 0 0,1 6,9A2,2 0 0,1 8,7Z"; -var mdiMusic = "M21,3V15.5A3.5,3.5 0 0,1 17.5,19A3.5,3.5 0 0,1 14,15.5A3.5,3.5 0 0,1 17.5,12C18.04,12 18.55,12.12 19,12.34V6.47L9,8.6V17.5A3.5,3.5 0 0,1 5.5,21A3.5,3.5 0 0,1 2,17.5A3.5,3.5 0 0,1 5.5,14C6.04,14 6.55,14.12 7,14.34V6L21,3Z"; -var mdiMusicAccidentalDoubleFlat = "M15.5 9C14.8 9 14.11 9.28 13.5 9.67V5H11.5V9.62C11.04 9.24 10.39 9 9.5 9C8.8 9 8.11 9.28 7.5 9.67V5H5.5V19C8.5 17.32 10.43 15.79 11.5 14.41V19C16.36 16.26 18.5 13.91 18.5 12C18.5 10.59 17.79 9 15.5 9M7.5 15.38V12.26C8.12 11.59 8.95 11 9.5 11C10.09 11 10.5 11.07 10.5 12C10.5 12.15 10.4 13.3 7.5 15.38M13.5 15.38V12.26C14.12 11.59 14.95 11 15.5 11C16.09 11 16.5 11.07 16.5 12C16.5 12.15 16.4 13.3 13.5 15.38Z"; -var mdiMusicAccidentalDoubleSharp = "M15.41 10H17V7H14V8.59L12 10.59L10 8.59V7H7V10H8.59L10.59 12L8.59 14H7V17H10V15.41L12 13.41L14 15.41V17H17V14H15.41L13.41 12L15.41 10Z"; -var mdiMusicAccidentalFlat = "M8.5 19C13.36 16.26 15.5 13.91 15.5 12C15.5 10.59 14.79 9 12.5 9C11.8 9 11.11 9.28 10.5 9.67V5H8.5M10.5 15.38V12.26C11.12 11.59 11.95 11 12.5 11C13.09 11 13.5 11.07 13.5 12C13.5 12.15 13.4 13.3 10.5 15.38Z"; -var mdiMusicAccidentalNatural = "M10 8.75V3.5H8V17.5L14 15.25V20.5H16V6.5L10 8.75M14 13.25L10 14.75V10.75L14 9.25V13.25Z"; -var mdiMusicAccidentalSharp = "M17 9.5V7.5L15 8.1V5.5H13V8.7L11 9.3V6.5H9V9.9L7 10.5V12.5L9 11.9V13.9L7 14.5V16.5L9 15.9V18.5H11V15.3L13 14.7V17.5H15V14.1L17 13.5V11.5L15 12.1V10.1L17 9.5M13 12.7L11 13.3V11.3L13 10.7V12.7Z"; -var mdiMusicBox = "M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiMusicBoxMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4M18,7H15V12.5A2.5,2.5 0 0,1 12.5,15A2.5,2.5 0 0,1 10,12.5A2.5,2.5 0 0,1 12.5,10C13.07,10 13.58,10.19 14,10.5V5H18M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2Z"; -var mdiMusicBoxMultipleOutline = "M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,16H8V4H20M12.5,15A2.5,2.5 0 0,0 15,12.5V7H18V5H14V10.5C13.58,10.19 13.07,10 12.5,10A2.5,2.5 0 0,0 10,12.5A2.5,2.5 0 0,0 12.5,15M4,6H2V20A2,2 0 0,0 4,22H18V20H4"; -var mdiMusicBoxOutline = "M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16V9M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M5,5V19H19V5H5Z"; -var mdiMusicCircle = "M16,9V7H12V12.5C11.58,12.19 11.07,12 10.5,12A2.5,2.5 0 0,0 8,14.5A2.5,2.5 0 0,0 10.5,17A2.5,2.5 0 0,0 13,14.5V9H16M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiMusicCircleOutline = "M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiMusicClefAlto = "M5 4H7V20H5M15.46 13H14.83L13.83 12L14.83 11H15.46A3.5 3.5 0 1 0 11.96 7.5H13.96A1.5 1.5 0 1 1 15.46 9H14L12 11H11V4H9V20H11V13H12L14 15H15.46A1.5 1.5 0 1 1 13.96 16.5H11.96A3.5 3.5 0 1 0 15.46 13Z"; -var mdiMusicClefBass = "M18.5 5A1.5 1.5 0 1 1 17 6.5A1.5 1.5 0 0 1 18.5 5M18.5 11A1.5 1.5 0 1 1 17 12.5A1.5 1.5 0 0 1 18.5 11M10 4A5 5 0 0 0 5 9V10A2 2 0 1 0 7.18 8A3 3 0 0 1 10 6A4 4 0 0 1 14 10C14 13.59 11.77 16.19 7 18.2L7.76 20.04C13.31 17.72 16 14.43 16 10A6 6 0 0 0 10 4Z"; -var mdiMusicClefTreble = "M13 11V7.5L15.2 5.29C16 4.5 16.15 3.24 15.59 2.26C15.14 1.47 14.32 1 13.45 1C13.24 1 13 1.03 12.81 1.09C11.73 1.38 11 2.38 11 3.5V6.74L7.86 9.91C6.2 11.6 5.7 14.13 6.61 16.34C7.38 18.24 9.06 19.55 11 19.89V20.5C11 20.76 10.77 21 10.5 21H9V23H10.5C11.85 23 13 21.89 13 20.5V20C15.03 20 17.16 18.08 17.16 15.25C17.16 12.95 15.24 11 13 11M13 3.5C13 3.27 13.11 3.09 13.32 3.03C13.54 2.97 13.77 3.06 13.88 3.26C14 3.46 13.96 3.71 13.8 3.87L13 4.73V3.5M11 11.5C10.03 12.14 9.3 13.24 9.04 14.26L11 14.78V17.83C9.87 17.53 8.9 16.71 8.43 15.57C7.84 14.11 8.16 12.45 9.26 11.33L11 9.5V11.5M13 18V12.94C14.17 12.94 15.18 14.04 15.18 15.25C15.18 17 13.91 18 13 18Z"; -var mdiMusicNote = "M12 3V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V7H18V3H12Z"; -var mdiMusicNoteBluetooth = "M22 9.85L19.14 7H18.64V10.79L16.35 8.5L15.64 9.21L18.43 12L15.64 14.79L16.35 15.5L18.64 13.21V17H19.14L22 14.15L19.85 12L22 9.85M19.64 8.91L20.58 9.85L19.64 10.79V8.91M20.58 14.15L19.64 15.09V13.21L20.58 14.15M9.64 3V13.55C9.05 13.21 8.37 13 7.64 13C5.43 13 3.64 14.79 3.64 17S5.43 21 7.64 21 11.64 19.21 11.64 17V7H15.64V3H9.64Z"; -var mdiMusicNoteBluetoothOff = "M22 9.85L19.14 7H18.64V10.79L16.35 8.5L15.64 9.21L18.43 12L15.64 14.79L16.35 15.5L18.64 13.21V17H19.14L22 14.15L19.85 12L22 9.85M19.64 8.91L20.58 9.85L19.64 10.79V8.91M20.58 14.15L19.64 15.09V13.21L20.58 14.15M1.96 3L.687 4.27L9.69 13.27V13.55C9.1 13.21 8.42 13 7.69 13C5.5 13 3.69 14.79 3.69 17S5.5 21 7.69 21 11.69 19.21 11.69 17V15.27L17.42 21L18.69 19.73L1.96 3M11.69 7H15.69V3H9.69V8.18L11.69 10.18V7Z"; -var mdiMusicNoteEighth = "M12 3V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V7H18V3H12Z"; -var mdiMusicNoteEighthDotted = "M12 3V13.55A4 4 0 1 0 14 17V7H18V3M16.5 20A1.5 1.5 0 1 1 18 18.5A1.5 1.5 0 0 1 16.5 20Z"; -var mdiMusicNoteHalf = "M16 3H14V13.56A3.96 3.96 0 0 0 12 13A4 4 0 1 0 16 17V3M12 19A2 2 0 1 1 14 17A2 2 0 0 1 12 19Z"; -var mdiMusicNoteHalfDotted = "M14 3H12V13.56A3.96 3.96 0 0 0 10 13A4 4 0 1 0 14 17V3M10 19A2 2 0 1 1 12 17A2 2 0 0 1 10 19M16.5 20A1.5 1.5 0 1 1 18 18.5A1.5 1.5 0 0 1 16.5 20Z"; -var mdiMusicNoteOff = "M4.27 3L3 4.27L12 13.27V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V15.27L19.73 21L21 19.73L4.27 3M14 7H18V3H12V8.18L14 10.18Z"; -var mdiMusicNoteOffOutline = "M14 7H18V3H12V7.61L14 9.61M12 10.44L4.41 2.86L3 4.27L12 13.27V13.55A3.94 3.94 0 0 0 8.67 13.23A4 4 0 0 0 10.65 20.95A4.1 4.1 0 0 0 14 16.85V15.27L19.73 21L21.14 19.59M10 19A2 2 0 1 1 12 17A2 2 0 0 1 10 19Z"; -var mdiMusicNoteOutline = "M12 3V13.55A4 4 0 1 0 14 17V7H18V3M10 19A2 2 0 1 1 12 17A2 2 0 0 1 10 19Z"; -var mdiMusicNotePlus = "M17 9V12H14V14H17V17H19V14H22V12H19V9H17M9 3V13.55C8.41 13.21 7.73 13 7 13C4.79 13 3 14.79 3 17S4.79 21 7 21 11 19.21 11 17V7H15V3H9Z"; -var mdiMusicNoteQuarter = "M14 3V13.56C13.41 13.21 12.73 13 12 13C9.79 13 8 14.79 8 17S9.79 21 12 21 16 19.21 16 17V3H14Z"; -var mdiMusicNoteQuarterDotted = "M12 13V13.56A3.96 3.96 0 0 0 10 13A4 4 0 1 0 14 17V3H12M16.5 17A1.5 1.5 0 1 1 15 18.5A1.5 1.5 0 0 1 16.5 17Z"; -var mdiMusicNoteSixteenth = "M18 7V3H12V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V11H18V8H14V7H18Z"; -var mdiMusicNoteSixteenthDotted = "M18 18.5A1.5 1.5 0 1 1 16.5 17A1.5 1.5 0 0 1 18 18.5M18 7V3H12V13.55A4 4 0 1 0 14 17V11H18V8H14V7Z"; -var mdiMusicNoteWhole = "M12 15A2 2 0 1 1 10 17A2 2 0 0 1 12 15M12 13A4 4 0 1 0 16 17A4 4 0 0 0 12 13Z"; -var mdiMusicNoteWholeDotted = "M10 15A2 2 0 1 1 8 17A2 2 0 0 1 10 15M10 13A4 4 0 1 0 14 17A4 4 0 0 0 10 13M16.5 17A1.5 1.5 0 1 1 15 18.5A1.5 1.5 0 0 1 16.5 17Z"; -var mdiMusicOff = "M2,5.27L3.28,4L20,20.72L18.73,22L9,12.27V17.5A3.5,3.5 0 0,1 5.5,21A3.5,3.5 0 0,1 2,17.5A3.5,3.5 0 0,1 5.5,14C6.04,14 6.55,14.12 7,14.34V10.27L2,5.27M21,3V15.5C21,16.5 20.57,17.42 19.88,18.06L14.94,13.12C15.58,12.43 16.5,12 17.5,12C18.04,12 18.55,12.12 19,12.34V6.47L10.17,8.35L7.66,5.84L21,3Z"; -var mdiMusicRestEighth = "M14 6A5.56 5.56 0 0 1 10.95 7.86A1.5 1.5 0 1 0 9.5 9H9.74A6.32 6.32 0 0 0 13.25 7.93L10 18H12L16 6Z"; -var mdiMusicRestHalf = "M6 14H8V10H16V14H18V15H6V14Z"; -var mdiMusicRestQuarter = "M11.71 16.81C10.91 17.6 10.88 18.84 11.64 19.58L10.19 21C8.66 19.5 8.72 17.03 10.32 15.46C10.85 14.94 11.5 14.61 12.16 14.42L9 11.34L10.45 9.92L10.82 9.57C11.82 8.59 11.85 7.04 10.9 6.11L9.16 4.42L10.62 3L14.78 7.06C15.54 7.81 15.5 9.05 14.71 9.83L12.53 11.95L16 15.33L15.61 15.72C15.11 16.21 14.38 16.46 13.72 16.28C13.04 16.1 12.26 16.28 11.71 16.81Z"; -var mdiMusicRestSixteenth = "M15 3A5.56 5.56 0 0 1 11.95 4.86A1.5 1.5 0 1 0 10.5 6H10.74A6.32 6.32 0 0 0 14.25 4.93L12.9 9.1A5.56 5.56 0 0 1 9.95 10.86A1.5 1.5 0 1 0 8.5 12H8.74A6.32 6.32 0 0 0 12.25 10.93L9 21H11L17 3Z"; -var mdiMusicRestWhole = "M18 10H16V14H8V10H6V9H18V10Z"; -var mdiMustache = "M21 12C19 12 18 9 15 9S12 11 12 11 12 9 9 9 5 12 3 12C2 12 1 11 1 11S2 16 6 16C11 16 12 13 12 13S13 16 18 16C22 16 23 11 23 11S22 12 21 12Z"; -var mdiNail = "M13.5,5V16L12,22L10.5,16V5H13.5M17,2H7V4H17V2Z"; -var mdiNas = "M4,5C2.89,5 2,5.89 2,7V17C2,18.11 2.89,19 4,19H20C21.11,19 22,18.11 22,17V7C22,5.89 21.11,5 20,5H4M4.5,7A1,1 0 0,1 5.5,8A1,1 0 0,1 4.5,9A1,1 0 0,1 3.5,8A1,1 0 0,1 4.5,7M7,7H20V17H7V7M8,8V16H11V8H8M12,8V16H15V8H12M16,8V16H19V8H16M9,9H10V10H9V9M13,9H14V10H13V9M17,9H18V10H17V9Z"; -var mdiNativescript = "M7.5,3H16.5C19,3 21,5 21,7.5V16.5C21,19 19,21 16.5,21H7.5C5,21 3,19 3,16.5V7.5C3,5 5,3 7.5,3M6,13.5V16.5A1.5,1.5 0 0,0 7.5,18H9V10.5L15,18H16.5A1.5,1.5 0 0,0 18,16.5V13.5A1.5,1.5 0 0,1 19.5,12A1.5,1.5 0 0,1 18,10.5V7.5A1.5,1.5 0 0,0 16.5,6H15V13.5L9,6H7.5A1.5,1.5 0 0,0 6,7.5V10.5A1.5,1.5 0 0,1 4.5,12A1.5,1.5 0 0,1 6,13.5Z"; -var mdiNature = "M13,16.12C16.47,15.71 19.17,12.76 19.17,9.17C19.17,5.3 16.04,2.17 12.17,2.17A7,7 0 0,0 5.17,9.17C5.17,12.64 7.69,15.5 11,16.06V20H5V22H19V20H13V16.12Z"; -var mdiNaturePeople = "M4.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,8A1.5,1.5 0 0,0 3,9.5A1.5,1.5 0 0,0 4.5,11M22.17,9.17C22.17,5.3 19.04,2.17 15.17,2.17A7,7 0 0,0 8.17,9.17C8.17,12.64 10.69,15.5 14,16.06V20H6V17H7V13A1,1 0 0,0 6,12H3A1,1 0 0,0 2,13V17H3V22H19V20H16V16.12C19.47,15.71 22.17,12.76 22.17,9.17Z"; -var mdiNavigation = "M12,2L4.5,20.29L5.21,21L12,18L18.79,21L19.5,20.29L12,2Z"; -var mdiNavigationOutline = "M12 7.3L16.3 17.7L12.8 16.2L12 15.8L11.2 16.2L7.7 17.7L12 7.3M12 2L4.5 20.3L5.2 21L12 18L18.8 21L19.5 20.3L12 2Z"; -var mdiNearMe = "M21,3L3,10.53V11.5L9.84,14.16L12.5,21H13.46L21,3Z"; -var mdiNecklace = "M21.5 5H19.5C19.5 9.14 16.14 12.5 12 12.5C7.86 12.5 4.5 9.14 4.5 5H2.5C2.55 10.11 6.59 14.29 11.7 14.5C11.1 15.4 10 17.2 10 18C10 20.67 14 20.67 14 18C14 17.2 12.9 15.4 12.3 14.5C17.41 14.29 21.45 10.11 21.5 5Z"; -var mdiNeedle = "M11.15,15.18L9.73,13.77L11.15,12.35L12.56,13.77L13.97,12.35L12.56,10.94L13.97,9.53L15.39,10.94L16.8,9.53L13.97,6.7L6.9,13.77L9.73,16.6L11.15,15.18M3.08,19L6.2,15.89L4.08,13.77L13.97,3.87L16.1,6L17.5,4.58L16.1,3.16L17.5,1.75L21.75,6L20.34,7.4L18.92,6L17.5,7.4L19.63,9.53L9.73,19.42L7.61,17.3L3.08,21.84V19Z"; -var mdiNetflix = "M6.5,2H10.5L13.44,10.83L13.5,2H17.5V22C16.25,21.78 14.87,21.64 13.41,21.58L10.5,13L10.43,21.59C9.03,21.65 7.7,21.79 6.5,22V2Z"; -var mdiNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z"; -var mdiNetworkOff = "M1,5.27L5,9.27V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H17.73L19.73,24L21,22.72L2.28,4L1,5.27M15,20A1,1 0 0,0 14,19H13V17.27L15.73,20H15M17.69,16.87L5.13,4.31C5.41,3.55 6.14,3 7,3H17A2,2 0 0,1 19,5V15C19,15.86 18.45,16.59 17.69,16.87M22,20V21.18L20.82,20H22Z"; -var mdiNetworkOffOutline = "M1.04,5.27L5,9.23V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H17.77L19.77,24L21.04,22.72L2.32,4L1.04,5.27M7,11.23L10.77,15H7V11.23M15,20A1,1 0 0,0 14,19H13V17.23L15.77,20H15M22,20V21.14L20.86,20H22M7,6.14L5.14,4.28C5.43,3.53 6.16,3 7,3H17A2,2 0 0,1 19,5V15C19,15.85 18.47,16.57 17.72,16.86L15.86,15H17V5H7V6.14Z"; -var mdiNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7Z"; -var mdiNetworkStrength1 = "M1,21H21V1M19,5.83V19H11V13.83"; -var mdiNetworkStrength1Alert = "M21 1L1 21H17V19H11V13.8L19 5.8V9H21M19 11V17H21V11M19 19V21H21V19"; -var mdiNetworkStrength2 = "M1,21H21V1M19,5.83V19H13V11.83"; -var mdiNetworkStrength2Alert = "M21 1L1 21H17V19H13V11.8L19 5.8V9H21M19 11V17H21V11M19 19V21H21V19"; -var mdiNetworkStrength3 = "M1,21H21V1M19,5.83V19H16V8.83"; -var mdiNetworkStrength3Alert = "M21 1L1 21H17V19H16V8.8L19 5.8V9H21M19 11V17H21V11M19 19V21H21V19"; -var mdiNetworkStrength4 = "M1,21H21V1"; -var mdiNetworkStrength4Alert = "M19 17H21V11H19M19 21H21V19H19M1 21H17V9H21V1"; -var mdiNetworkStrengthOff = "M21,1L12.4,9.6L21,18.19M4.77,4.5L3.5,5.77L9.86,12.13L1,21H18.73L20.73,23L22,21.73"; -var mdiNetworkStrengthOffOutline = "M21,1L12.4,9.6L13.85,11.05L19,5.83V16.19L21,18.19M4.77,4.5L3.5,5.77L9.86,12.13L1,21H18.73L20.73,23L22,21.73M11.33,13.6L16.73,19H6"; -var mdiNetworkStrengthOutline = "M1,21H21V1M19,5.83V19H6"; -var mdiNewBox = "M20,4C21.11,4 22,4.89 22,6V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V6C2,4.89 2.89,4 4,4H20M8.5,15V9H7.25V12.5L4.75,9H3.5V15H4.75V11.5L7.3,15H8.5M13.5,10.26V9H9.5V15H13.5V13.75H11V12.64H13.5V11.38H11V10.26H13.5M20.5,14V9H19.25V13.5H18.13V10H16.88V13.5H15.75V9H14.5V14A1,1 0 0,0 15.5,15H19.5A1,1 0 0,0 20.5,14Z"; -var mdiNewspaper = "M20,11H4V8H20M20,15H13V13H20M20,19H13V17H20M11,19H4V13H11M20.33,4.67L18.67,3L17,4.67L15.33,3L13.67,4.67L12,3L10.33,4.67L8.67,3L7,4.67L5.33,3L3.67,4.67L2,3V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V3L20.33,4.67Z"; -var mdiNewspaperMinus = "M22,17V19H14V17H22M20,11V8H4V11H20M13,13V14.68C12.37,15.63 12,16.77 12,18C12,19.09 12.29,20.12 12.8,21H4A2,2 0 0,1 2,19V3L3.67,4.67L5.33,3L7,4.67L8.67,3L10.33,4.67L12,3L13.67,4.67L15.33,3L17,4.67L18.67,3L20.33,4.67L22,3V13.5C20.93,12.58 19.53,12 18,12C16.77,12 15.63,12.37 14.68,13H13M11,19V13H4V19H11Z"; -var mdiNewspaperPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M20,11V8H4V11H20M13,13V14.68C12.37,15.63 12,16.77 12,18C12,19.09 12.29,20.12 12.8,21H4A2,2 0 0,1 2,19V3L3.67,4.67L5.33,3L7,4.67L8.67,3L10.33,4.67L12,3L13.67,4.67L15.33,3L17,4.67L18.67,3L20.33,4.67L22,3V13.5C20.93,12.58 19.53,12 18,12C16.77,12 15.63,12.37 14.68,13H13M11,19V13H4V19H11Z"; -var mdiNewspaperVariant = "M20 3H4C2.89 3 2 3.89 2 5V19C2 20.11 2.89 21 4 21H20C21.11 21 22 20.11 22 19V5C22 3.89 21.11 3 20 3M5 7H10V13H5V7M19 17H5V15H19V17M19 13H12V11H19V13M19 9H12V7H19V9Z"; -var mdiNewspaperVariantMultiple = "M4 7V19H19V21H4C2 21 2 19 2 19V7H4M21.3 3H7.7C6.76 3 6 3.7 6 4.55V15.45C6 16.31 6.76 17 7.7 17H21.3C22.24 17 23 16.31 23 15.45V4.55C23 3.7 22.24 3 21.3 3M8 5H13V11H8V5M21 15H8V13H21V15M21 11H15V9H21V11M21 7H15V5H21V7Z"; -var mdiNewspaperVariantMultipleOutline = "M4 7V19H19V21H4C2 21 2 19 2 19V7H4M21 5V15H8V5H21M21.3 3H7.7C6.76 3 6 3.7 6 4.55V15.45C6 16.31 6.76 17 7.7 17H21.3C22.24 17 23 16.31 23 15.45V4.55C23 3.7 22.24 3 21.3 3M9 6H12V11H9V6M20 14H9V12H20V14M20 8H14V6H20V8M20 11H14V9H20V11Z"; -var mdiNewspaperVariantOutline = "M20 5L20 19L4 19L4 5H20M20 3H4C2.89 3 2 3.89 2 5V19C2 20.11 2.89 21 4 21H20C21.11 21 22 20.11 22 19V5C22 3.89 21.11 3 20 3M18 15H6V17H18V15M10 7H6V13H10V7M12 9H18V7H12V9M18 11H12V13H18V11Z"; -var mdiNfc = "M7.24 2C5.6 2 3.96 2 3.55 2.04C2.67 2.09 2.08 2.73 2.04 3.56C2 4.37 2 19.59 2.04 20.41C2.09 21.23 2.71 21.86 3.55 21.91C4.46 21.96 7.44 21.97 8.29 21.97C6.76 20.91 6.55 18.92 6.41 15.23C6.33 13.04 6.4 5.36 6.41 5.04L6.45 2.94L14.5 11V13.5L8.09 7.11C8.08 8.38 8.06 10.03 8.06 11.54C8.06 13 8.08 14.34 8.12 15.05C8.36 19.07 8.74 20.96 10.83 21.7C11.5 21.93 12.07 22 13.07 22C13.89 22 19.63 22 20.45 21.96C21.33 21.91 21.93 21.27 21.97 20.44C22 19.63 22 4.45 21.97 3.62C21.91 2.8 21.29 2.18 20.45 2.13C19.54 2.08 16.57 2.03 15.71 2.03C17.24 3.09 17.44 5.08 17.59 8.78C17.67 10.97 17.6 18.64 17.59 18.97L17.55 21.06L9.53 13V10.5L15.91 16.89C15.92 15.62 15.94 13.97 15.94 12.46C15.94 11 15.92 9.66 15.88 8.96C15.64 4.93 15.26 3.04 13.17 2.3C12.53 2.07 11.93 2 10.93 2H7.24Z"; -var mdiNfcSearchVariant = "M16.5,12C19,12 21,14 21,16.5C21,17.38 20.76,18.21 20.32,18.9L23.4,22L22,23.39L18.89,20.32C18.2,20.75 17.38,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12M16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19C17.89,19 19,17.88 19,16.5A2.5,2.5 0 0,0 16.5,14M18,6V10.18C17.33,10 16.66,9.97 16,10V8H13V10.28L13.53,10.72C12.34,11.33 11.35,12.3 10.72,13.53C10.28,13.17 10,12.62 10,12C10,11.26 10.41,10.62 11,10.28V8A2,2 0 0,1 13,6H18M6,18V6H8L10,6V8H8V16H10C9.96,16.68 10,17.35 10.17,18H6M20,4H4V20H11C11.53,20.8 12.21,21.5 13.03,22H4C2.89,22 2,21.1 2,20V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4V13.04C21.5,12.24 20.82,11.54 20,11V4Z"; -var mdiNfcTap = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M4,4H11A2,2 0 0,1 13,6V9H11V6H4V11H6V9L9,12L6,15V13H4A2,2 0 0,1 2,11V6A2,2 0 0,1 4,4M20,20H13A2,2 0 0,1 11,18V15H13V18H20V13H18V15L15,12L18,9V11H20A2,2 0 0,1 22,13V18A2,2 0 0,1 20,20Z"; -var mdiNfcVariant = "M18,6H13A2,2 0 0,0 11,8V10.28C10.41,10.62 10,11.26 10,12A2,2 0 0,0 12,14C13.11,14 14,13.1 14,12C14,11.26 13.6,10.62 13,10.28V8H16V16H8V8H10V6H8L6,6V18H18M20,20H4V4H20M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20C21.11,22 22,21.1 22,20V4C22,2.89 21.11,2 20,2Z"; -var mdiNfcVariantOff = "M1.25,2.05L21.95,22.75L20.7,24L18.7,22H4A2,2 0 0,1 2,20V5.3L0,3.3L1.25,2.05M3.81,2C3.87,2 3.94,2 4,2H20C21.11,2 22,2.89 22,4V20C22,20.06 22,20.13 22,20.19L20,18.2V4H5.8L3.81,2M6,9.3L4,7.3V20H16.7L14.7,18H6V9.3M18,16.2L16,14.2V8H13V10.28C13.6,10.62 14,11.26 14,12C14,12.06 14,12.13 14,12.19L11,9.2V8A2,2 0 0,1 13,6H18V16.2M8,16H12.7L8,11.3V16M10,8H9.8L7.8,6H10V8Z"; -var mdiNinja = "M7.75,13C7.74,12.65 7.9,12.31 8.17,12.08C8.92,12.24 9.62,12.55 10.25,13C10.25,13.68 9.69,14.24 9,14.24C8.31,14.24 7.76,13.69 7.75,13M13.75,13C14.38,12.56 15.08,12.25 15.83,12.09C16.1,12.32 16.26,12.66 16.25,13C16.25,13.7 15.69,14.26 15,14.26C14.31,14.26 13.75,13.7 13.75,13V13M12,9C9.23,8.96 6.5,9.65 4.07,11L4,12C4,13.23 4.29,14.44 4.84,15.54C7.21,15.18 9.6,15 12,15C14.4,15 16.79,15.18 19.16,15.54C19.71,14.44 20,13.23 20,12L19.93,11C17.5,9.65 14.77,8.96 12,9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiNintendoGameBoy = "M7 1C5.9 1 5 1.9 5 3V21C5 22.11 5.9 23 7 23H14C16.76 23 19 20.76 19 18V3C19 1.9 18.11 1 17 1H7M8 4H16V11H8V4M9 14H10V16H12V17H10V19H9V17H7V16H9V14M16 15C16.55 15 17 15.45 17 16C17 16.55 16.55 17 16 17C15.45 17 15 16.55 15 16C15 15.45 15.45 15 16 15M14 17C14.55 17 15 17.45 15 18C15 18.55 14.55 19 14 19C13.45 19 13 18.55 13 18C13 17.45 13.45 17 14 17Z"; -var mdiNintendoSwitch = "M10.04,20.4H7.12C6.19,20.4 5.3,20 4.64,19.36C4,18.7 3.6,17.81 3.6,16.88V7.12C3.6,6.19 4,5.3 4.64,4.64C5.3,4 6.19,3.62 7.12,3.62H10.04V20.4M7.12,2A5.12,5.12 0 0,0 2,7.12V16.88C2,19.71 4.29,22 7.12,22H11.65V2H7.12M5.11,8C5.11,9.04 5.95,9.88 7,9.88C8.03,9.88 8.87,9.04 8.87,8C8.87,6.96 8.03,6.12 7,6.12C5.95,6.12 5.11,6.96 5.11,8M17.61,11C18.72,11 19.62,11.89 19.62,13C19.62,14.12 18.72,15 17.61,15C16.5,15 15.58,14.12 15.58,13C15.58,11.89 16.5,11 17.61,11M16.88,22A5.12,5.12 0 0,0 22,16.88V7.12C22,4.29 19.71,2 16.88,2H13.65V22H16.88Z"; -var mdiNintendoWii = "M17.84,16.94H15.97V10.79H17.84V16.94M18,8.58C18,9.19 17.5,9.69 16.9,9.69A1.11,1.11 0 0,1 15.79,8.58C15.79,7.96 16.29,7.46 16.9,7.46C17.5,7.46 18,7.96 18,8.58M21.82,16.94H19.94V10.79H21.82V16.94M22,8.58C22,9.19 21.5,9.69 20.88,9.69A1.11,1.11 0 0,1 19.77,8.58C19.77,7.96 20.27,7.46 20.88,7.46C21.5,7.46 22,7.96 22,8.58M12.9,8.05H14.9L12.78,15.5C12.78,15.5 12.5,17.04 11.28,17.04C10.07,17.04 9.79,15.5 9.79,15.5L8.45,10.64L7.11,15.5C7.11,15.5 6.82,17.04 5.61,17.04C4.4,17.04 4.12,15.5 4.12,15.5L2,8.05H4L5.72,14.67L7.11,9.3C7.43,7.95 8.45,7.97 8.45,7.97C8.45,7.97 9.47,7.95 9.79,9.3L11.17,14.67L12.9,8.05Z"; -var mdiNintendoWiiu = "M2,15.96C2,18.19 3.54,19.5 5.79,19.5H18.57C20.47,19.5 22,18.2 22,16.32V6.97C22,5.83 21.15,4.6 20.11,4.6H17.15V12.3C17.15,18.14 6.97,18.09 6.97,12.41V4.5H4.72C3.26,4.5 2,5.41 2,6.85V15.96M9.34,11.23C9.34,15.74 14.66,15.09 14.66,11.94V4.5H9.34V11.23Z"; -var mdiNix = "M9.9 8.7L5 17.2L3.9 15.3L5.2 13H2.6L2 12L2.6 11H6.3L7.6 8.7H9.9M10.2 15.5H19.9L18.8 17.4H16.2L17.5 19.7L16.9 20.7H15.8L14 17.4H11.3L10.2 15.5M15.9 11.8L11 3.3H13.2L14.5 5.6L15.8 3.3H16.9L17.5 4.3L15.6 7.5L17 9.8L15.9 11.8M13.8 8.5H4L5.1 6.6H7.7L6.4 4.3L7 3.3H8.1L10 6.5H12.7L13.8 8.5M14.1 15.3L19 6.8L20.1 8.7L18.8 11H21.4L22 12L21.4 13H17.7L16.4 15.3H14.1M8.1 12.2L13 20.6H10.8L9.5 18.3L8.4 20.6H7.1L6.5 19.6L8.4 16.4L7 14.2L8.1 12.2Z"; -var mdiNodejs = "M12,1.85C11.73,1.85 11.45,1.92 11.22,2.05L3.78,6.35C3.3,6.63 3,7.15 3,7.71V16.29C3,16.85 3.3,17.37 3.78,17.65L5.73,18.77C6.68,19.23 7,19.24 7.44,19.24C8.84,19.24 9.65,18.39 9.65,16.91V8.44C9.65,8.32 9.55,8.22 9.43,8.22H8.5C8.37,8.22 8.27,8.32 8.27,8.44V16.91C8.27,17.57 7.59,18.22 6.5,17.67L4.45,16.5C4.38,16.45 4.34,16.37 4.34,16.29V7.71C4.34,7.62 4.38,7.54 4.45,7.5L11.89,3.21C11.95,3.17 12.05,3.17 12.11,3.21L19.55,7.5C19.62,7.54 19.66,7.62 19.66,7.71V16.29C19.66,16.37 19.62,16.45 19.55,16.5L12.11,20.79C12.05,20.83 11.95,20.83 11.88,20.79L10,19.65C9.92,19.62 9.84,19.61 9.79,19.64C9.26,19.94 9.16,20 8.67,20.15C8.55,20.19 8.36,20.26 8.74,20.47L11.22,21.94C11.46,22.08 11.72,22.15 12,22.15C12.28,22.15 12.54,22.08 12.78,21.94L20.22,17.65C20.7,17.37 21,16.85 21,16.29V7.71C21,7.15 20.7,6.63 20.22,6.35L12.78,2.05C12.55,1.92 12.28,1.85 12,1.85M14,8C11.88,8 10.61,8.89 10.61,10.39C10.61,12 11.87,12.47 13.91,12.67C16.34,12.91 16.53,13.27 16.53,13.75C16.53,14.58 15.86,14.93 14.3,14.93C12.32,14.93 11.9,14.44 11.75,13.46C11.73,13.36 11.64,13.28 11.53,13.28H10.57C10.45,13.28 10.36,13.37 10.36,13.5C10.36,14.74 11.04,16.24 14.3,16.24C16.65,16.24 18,15.31 18,13.69C18,12.08 16.92,11.66 14.63,11.35C12.32,11.05 12.09,10.89 12.09,10.35C12.09,9.9 12.29,9.3 14,9.3C15.5,9.3 16.09,9.63 16.32,10.66C16.34,10.76 16.43,10.83 16.53,10.83H17.5C17.55,10.83 17.61,10.81 17.65,10.76C17.69,10.72 17.72,10.66 17.7,10.6C17.56,8.82 16.38,8 14,8Z"; -var mdiNoodles = "M22 3L10 4.41V6H22V7H10V12H22C22 13.81 21.43 15.46 20.32 16.95S17.77 19.53 16 20.25V22H8V20.25C6.24 19.53 4.79 18.43 3.68 16.95S2 13.81 2 12H5V4L22 2V3M6 4.88V6H7V4.78L6 4.88M6 7V12H7V7H6M9 12V7H8V12H9M9 6V4.55L8 4.64V6H9Z"; -var mdiNotEqual = "M21,10H9V8H21V10M21,16H9V14H21V16M4,5H6V16H4V5M6,18V20H4V18H6Z"; -var mdiNotEqualVariant = "M14.08,4.61L15.92,5.4L14.8,8H19V10H13.95L12.23,14H19V16H11.38L9.92,19.4L8.08,18.61L9.2,16H5V14H10.06L11.77,10H5V8H12.63L14.08,4.61Z"; -var mdiNote = "M14,10V4.5L19.5,10M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V9L15,3H5Z"; -var mdiNoteMinus = "M15 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H19C20.11 21 21 20.11 21 19V9L15 3M14 15H6V13H14V15M14 10V4.5L19.5 10H14Z"; -var mdiNoteMinusOutline = "M16 3H4C2.89 3 2 3.89 2 5V19C2 20.1 2.89 21 4 21H20C21.11 21 22 20.11 22 19V9L16 3M20 19H4V5H13V12H20V19M15 10V4.5L20.5 10H15M6 13H12V15H6V13Z"; -var mdiNoteMultiple = "M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3Z"; -var mdiNoteMultipleOutline = "M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M7,4V18H21V11H14V4H7Z"; -var mdiNoteOutline = "M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,5V19H19V12H12V5H5Z"; -var mdiNotePlus = "M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M9,18H11V15H14V13H11V10H9V13H6V15H9V18Z"; -var mdiNotePlusOutline = "M15,10H20.5L15,4.5V10M4,3H16L22,9V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V5C2,3.89 2.89,3 4,3M4,5V19H20V12H13V5H4M8,17V15H6V13H8V11H10V13H12V15H10V17H8Z"; -var mdiNoteRemove = "M15 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H19C20.11 21 21 20.11 21 19V9L15 3M13.54 16.12L12.12 17.54L10 15.41L7.88 17.54L6.47 16.12L8.59 14L6.47 11.88L7.88 10.47L10 12.59L12.12 10.47L13.54 11.88L11.41 14L13.54 16.12M14 10V4.5L19.5 10H14Z"; -var mdiNoteRemoveOutline = "M16 3H4C2.89 3 2 3.89 2 5V19C2 20.1 2.89 21 4 21H20C21.11 21 22 20.11 22 19V9L16 3M20 19H4V5H13V12H20V19M15 10V4.5L20.5 10H15M11.83 12.59L10.41 14L11.83 15.41L10.41 16.83L9 15.41L7.59 16.83L6.17 15.41L7.59 14L6.17 12.59L7.59 11.17L9 12.59L10.41 11.17L11.83 12.59Z"; -var mdiNoteSearch = "M15 3H5C3.89 3 3 3.89 3 5V10.82C5.55 8.37 9.59 8.4 12.1 10.9C14.63 13.44 14.63 17.56 12.1 20.1C11.74 20.45 11.35 20.74 10.94 21H19C20.11 21 21 20.11 21 19V9L15 3M14 10V4.5L19.5 10H14M7.5 11C5 11 3 13 3 15.5C3 16.38 3.25 17.21 3.69 17.9L.61 21L2 22.39L5.12 19.32C5.81 19.75 6.63 20 7.5 20C10 20 12 18 12 15.5S10 11 7.5 11M7.5 18C6.12 18 5 16.88 5 15.5S6.12 13 7.5 13 10 14.12 10 15.5 8.88 18 7.5 18Z"; -var mdiNoteSearchOutline = "M15 3H5C3.89 3 3 3.89 3 5V10.82C3.6 10.24 4.28 9.8 5 9.5V5H12V10.82C12.03 10.85 12.07 10.87 12.1 10.9C12.44 11.24 12.73 11.61 12.97 12H19V19H12.97C12.73 19.39 12.44 19.76 12.1 20.1C11.74 20.45 11.35 20.74 10.94 21H19C20.11 21 21 20.11 21 19V9L15 3M14 10V4.5L19.5 10H14M7.5 11C5 11 3 13 3 15.5C3 16.38 3.25 17.21 3.69 17.9L.61 21L2 22.39L5.12 19.32C5.81 19.75 6.63 20 7.5 20C10 20 12 18 12 15.5S10 11 7.5 11M7.5 18C6.12 18 5 16.88 5 15.5S6.12 13 7.5 13 10 14.12 10 15.5 8.88 18 7.5 18Z"; -var mdiNoteText = "M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,12V14H19V12H5M5,16V18H14V16H5Z"; -var mdiNoteTextOutline = "M15 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V9L15 3M19 19H5V5H14V10H19M17 14H7V12H17M14 17H7V15H14"; -var mdiNotebook = "M3,7V5H5V4C5,2.89 5.9,2 7,2H13V9L15.5,7.5L18,9V2H19C20.05,2 21,2.95 21,4V20C21,21.05 20.05,22 19,22H7C5.95,22 5,21.05 5,20V19H3V17H5V13H3V11H5V7H3M7,11H5V13H7V11M7,7V5H5V7H7M7,19V17H5V19H7Z"; -var mdiNotebookCheck = "M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M3 7V5H5V4C5 2.89 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20.05 2 21 2.95 21 4V13.8C20.12 13.29 19.09 13 18 13C14.69 13 12 15.69 12 19C12 20.09 12.29 21.12 12.8 22H7C5.95 22 5 21.05 5 20V19H3V17H5V13H3V11H5V7H3M5 5V7H7V5H5M5 19H7V17H5V19M5 13H7V11H5V13Z"; -var mdiNotebookCheckOutline = "M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M17 4V10L15 8L13 10V4H9V20H12.08C12.2 20.72 12.45 21.39 12.8 22H7C5.95 22 5 21.05 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.89 5.9 2 7 2H19C20.05 2 21 2.95 21 4V13.8C20.39 13.45 19.72 13.2 19 13.08V4H17M5 19H7V17H5V19M5 13H7V11H5V13M5 7H7V5H5V7Z"; -var mdiNotebookEdit = "M21.04 13.13C21.18 13.13 21.31 13.19 21.42 13.3L22.7 14.58C22.92 14.79 22.92 15.14 22.7 15.35L21.7 16.35L19.65 14.3L20.65 13.3C20.76 13.19 20.9 13.13 21.04 13.13M19.07 14.88L21.12 16.93L15.06 23H13V20.94L19.07 14.88M3 7V5H5V4C5 2.89 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20.05 2 21 2.95 21 4V10L11 20V22H7C5.95 22 5 21.05 5 20V19H3V17H5V13H3V11H5V7H3M5 7H7V5H5V7M5 11V13H7V11H5M5 17V19H7V17H5Z"; -var mdiNotebookEditOutline = "M19.07 14.88L21.12 16.93L15.06 23H13V20.94L19.07 14.88M21.04 13.13C21.18 13.13 21.31 13.19 21.42 13.3L22.7 14.58C22.92 14.79 22.92 15.14 22.7 15.35L21.7 16.35L19.65 14.3L20.65 13.3C20.76 13.19 20.9 13.13 21.04 13.13M17 4V10L15 8L13 10V4H9V20H11V22H7C5.95 22 5 21.05 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.89 5.9 2 7 2H19C20.05 2 21 2.95 21 4V10L19 12V4H17M5 5V7H7V5H5M5 11V13H7V11H5M5 17V19H7V17H5Z"; -var mdiNotebookMinus = "M3 7V5H5V4C5 2.9 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20 2 21 3 21 4V13.8C20.1 13.3 19.1 13 18 13C14.7 13 12 15.7 12 19C12 20.1 12.3 21.1 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3M5 5V7H7V5H5M5 19H7V17H5V19M5 13H7V11H5V13M14 18V20H22V18H14Z"; -var mdiNotebookMinusOutline = "M17 4V10L15 8L13 10V4H9V20H12.1C12.2 20.7 12.5 21.4 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.9 5.9 2 7 2H19C20 2 21 3 21 4V13.8C20.4 13.4 19.7 13.2 19 13.1V4H17M5 19H7V17H5V19M5 13H7V11H5V13M5 7H7V5H5V7M14 18V20H22V18H14Z"; -var mdiNotebookMultiple = "M9.05,9H7.06V6H9.05V4.03H7.06V3.03C7.06,1.92 7.95,1.04 9.05,1.04H15.03V8L17.5,6.5L20,8V1.04H21C22.05,1.04 23,2 23,3.03V17C23,18.03 22.05,19 21,19H9.05C8,19 7.06,18.05 7.06,17V16H9.05V14H7.06V11H9.05V9M1,18H3V15H1V13H3V10H1V8H3V5H5V8H3V10H5V13H3V15H5V18H3V20H5V21H21V23H5A2,2 0 0,1 3,21V20H1V18Z"; -var mdiNotebookOutline = "M17,4V10L15,8L13,10V4H9V20H19V4H17M3,7V5H5V4C5,2.89 5.9,2 7,2H19C20.05,2 21,2.95 21,4V20C21,21.05 20.05,22 19,22H7C5.95,22 5,21.05 5,20V19H3V17H5V13H3V11H5V7H3M5,5V7H7V5H5M5,19H7V17H5V19M5,13H7V11H5V13Z"; -var mdiNotebookPlus = "M3 7V5H5V4C5 2.9 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20 2 21 3 21 4V13.8C20.1 13.3 19.1 13 18 13C14.7 13 12 15.7 12 19C12 20.1 12.3 21.1 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3M5 5V7H7V5H5M5 19H7V17H5V19M5 13H7V11H5V13M17 15V18H14V20H17V23H19V20H22V18H19V15H17Z"; -var mdiNotebookPlusOutline = "M17 4V10L15 8L13 10V4H9V20H12.1C12.2 20.7 12.5 21.4 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.9 5.9 2 7 2H19C20 2 21 3 21 4V13.8C20.4 13.4 19.7 13.2 19 13.1V4H17M5 19H7V17H5V19M5 13H7V11H5V13M5 7H7V5H5V7M17 15V18H14V20H17V23H19V20H22V18H19V15H17Z"; -var mdiNotebookRemove = "M3 7V5H5V4C5 2.9 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20 2 21 3 21 4V13.8C20.1 13.3 19.1 13 18 13C14.7 13 12 15.7 12 19C12 20.1 12.3 21.1 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3M5 5V7H7V5H5M5 19H7V17H5V19M5 13H7V11H5V13M20.1 15.5L18 17.6L15.9 15.5L14.5 16.9L16.6 19L14.5 21.1L15.9 22.5L18 20.4L20.1 22.5L21.5 21.1L19.4 19L21.5 16.9L20.1 15.5Z"; -var mdiNotebookRemoveOutline = "M17 4V10L15 8L13 10V4H9V20H12.1C12.2 20.7 12.5 21.4 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.9 5.9 2 7 2H19C20 2 21 3 21 4V13.8C20.4 13.4 19.7 13.2 19 13.1V4H17M5 19H7V17H5V19M5 13H7V11H5V13M5 7H7V5H5V7M20.1 15.5L18 17.6L15.9 15.5L14.5 16.9L16.6 19L14.5 21.1L15.9 22.5L18 20.4L20.1 22.5L21.5 21.1L19.4 19L21.5 16.9L20.1 15.5Z"; -var mdiNotificationClearAll = "M5,13H19V11H5M3,17H17V15H3M7,7V9H21V7"; -var mdiNpm = "M4,10V14H6V11H7V14H8V10H4M9,10V15H11V14H13V10H9M12,11V13H11V11H12M14,10V14H16V11H17V14H18V11H19V14H20V10H14M3,9H21V15H12V16H8V15H3V9Z"; -var mdiNuke = "M14.04,12H10V11H5.5A3.5,3.5 0 0,1 2,7.5A3.5,3.5 0 0,1 5.5,4C6.53,4 7.45,4.44 8.09,5.15C8.5,3.35 10.08,2 12,2C13.92,2 15.5,3.35 15.91,5.15C16.55,4.44 17.47,4 18.5,4A3.5,3.5 0 0,1 22,7.5A3.5,3.5 0 0,1 18.5,11H14.04V12M10,16.9V15.76H5V13.76H19V15.76H14.04V16.92L20,19.08C20.58,19.29 21,19.84 21,20.5A1.5,1.5 0 0,1 19.5,22H4.5A1.5,1.5 0 0,1 3,20.5C3,19.84 3.42,19.29 4,19.08L10,16.9Z"; -var mdiNull = "M12,2C13.85,2 15.55,2.78 16.9,4.1L18.6,1.93L20.18,3.16L18.2,5.68C19.33,7.41 20,9.6 20,12C20,17.5 16.42,22 12,22C10.15,22 8.45,21.22 7.1,19.9L5.4,22.07L3.82,20.84L5.8,18.32C4.67,16.59 4,14.4 4,12C4,6.5 7.58,2 12,2M12,4C8.69,4 6,7.58 6,12C6,13.73 6.41,15.33 7.11,16.64L15.67,5.67C14.66,4.62 13.38,4 12,4M12,20C15.31,20 18,16.42 18,12C18,10.27 17.59,8.67 16.89,7.36L8.33,18.33C9.34,19.38 10.62,20 12,20Z"; -var mdiNumeric = "M4,17V9H2V7H6V17H4M22,15C22,16.11 21.1,17 20,17H16V15H20V13H18V11H20V9H16V7H20A2,2 0 0,1 22,9V10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 22,13.5V15M14,15V17H8V13C8,11.89 8.9,11 10,11H12V9H8V7H12A2,2 0 0,1 14,9V11C14,12.11 13.1,13 12,13H10V15H14Z"; -var mdiNumeric0 = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z"; -var mdiNumeric0Box = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z"; -var mdiNumeric0BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M13,5A2,2 0 0,0 11,7V13A2,2 0 0,0 13,15H15A2,2 0 0,0 17,13V7A2,2 0 0,0 15,5H13M13,7H15V13H13V7Z"; -var mdiNumeric0BoxMultipleOutline = "M21,17V3H7V17H21M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,5H15A2,2 0 0,1 17,7V13A2,2 0 0,1 15,15H13A2,2 0 0,1 11,13V7A2,2 0 0,1 13,5M13,7V13H15V7H13Z"; -var mdiNumeric0BoxOutline = "M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z"; -var mdiNumeric0Circle = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiNumeric0CircleOutline = "M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiNumeric1 = "M10,7V9H12V17H14V7H10Z"; -var mdiNumeric1Box = "M14,17H12V9H10V7H14M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiNumeric1BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M14,15H16V5H12V7H14V15Z"; -var mdiNumeric1BoxMultipleOutline = "M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M14,15H16V5H12V7H14M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; -var mdiNumeric1BoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,17H14V7H10V9H12"; -var mdiNumeric1Circle = "M10,7V9H12V17H14V7H10M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiNumeric1CircleOutline = "M10,7H14V17H12V9H10V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiNumeric10 = "M10 7H6V9H8V17H10V7M16 7H14C12.9 7 12 7.9 12 9V15C12 16.11 12.9 17 14 17H16C17.11 17 18 16.11 18 15V9C18 7.9 17.11 7 16 7M16 15H14V9H16V15Z"; -var mdiNumeric10Box = "M14,9H16V15H14V9M21,5V19C21,20.11 20.11,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19C20.11,3 21,3.9 21,5M10,7H6V9H8V17H10V7M18,9A2,2 0 0,0 16,7H14A2,2 0 0,0 12,9V15C12,16.11 12.9,17 14,17H16C17.11,17 18,16.11 18,15V9Z"; -var mdiNumeric10BoxMultiple = "M3 5V21H19V23H3C1.9 23 1 22.11 1 21V5H3M16 13H18V7H16V13M21 1H7C5.9 1 5 1.9 5 3V17C5 18.11 5.9 19 7 19H21C22.11 19 23 18.11 23 17V3C23 1.9 22.11 1 21 1M12 15H10V7H8V5H12V15M20 13C20 14.11 19.11 15 18 15H16C14.9 15 14 14.11 14 13V7C14 5.9 14.9 5 16 5H18C19.11 5 20 5.9 20 7V13Z"; -var mdiNumeric10BoxMultipleOutline = "M21 17V3H7V17H21M21 1C22.11 1 23 1.9 23 3V17C23 18.11 22.11 19 21 19H7C5.9 19 5 18.11 5 17V3C5 1.9 5.9 1 7 1H21M3 5V21H19V23H3C1.9 23 1 22.11 1 21V5H3M12 5H8V7H10V15H12V5M18 5H16C14.9 5 14 5.9 14 7V13C14 14.11 14.9 15 16 15H18C19.11 15 20 14.11 20 13V7C20 5.9 19.11 5 18 5M18 13H16V7H18V13Z"; -var mdiNumeric10BoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M8,17H10V7H6V9H8M14,7H16C17.11,7 18,7.9 18,9V15C18,16.11 17.11,17 16,17H14A2,2 0 0,1 12,15V9A2,2 0 0,1 14,7M14,9V15H16V9H14Z"; -var mdiNumeric10Circle = "M14 9H16V15H14V9M22 12C22 17.5 17.5 22 12 22S2 17.5 2 12 6.5 2 12 2 22 6.5 22 12M10 7H6V9H8V17H10V7M18 9C18 7.9 17.11 7 16 7H14C12.9 7 12 7.9 12 9V15C12 16.11 12.9 17 14 17H16C17.11 17 18 16.11 18 15V9Z"; -var mdiNumeric10CircleOutline = "M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12S7.58 20 12 20 20 16.42 20 12 16.42 4 12 4M10 7H6V9H8V17H10V7M16 7H14C12.9 7 12 7.9 12 9V15C12 16.11 12.9 17 14 17H16C17.11 17 18 16.11 18 15V9C18 7.9 17.11 7 16 7M16 15H14V9H16V15Z"; -var mdiNumeric2 = "M9,7V9H13V11H11A2,2 0 0,0 9,13V17H11L15,17V15H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9Z"; -var mdiNumeric2Box = "M15,11C15,12.11 14.1,13 13,13H11V15H15V17H9V13C9,11.89 9.9,11 11,11H13V9H9V7H13A2,2 0 0,1 15,9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiNumeric2BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M17,13H13V11H15A2,2 0 0,0 17,9V7C17,5.89 16.1,5 15,5H11V7H15V9H13A2,2 0 0,0 11,11V15H17V13M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z"; -var mdiNumeric2BoxMultipleOutline = "M17,13H13V11H15A2,2 0 0,0 17,9V7C17,5.89 16.1,5 15,5H11V7H15V9H13A2,2 0 0,0 11,11V15H17M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; -var mdiNumeric2BoxOutline = "M15,15H11V13H13A2,2 0 0,0 15,11V9C15,7.89 14.1,7 13,7H9V9H13V11H11A2,2 0 0,0 9,13V17H15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiNumeric2Circle = "M9,7V9H13V11H11A2,2 0 0,0 9,13V17H11L15,17V15H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiNumeric2CircleOutline = "M9,7H13A2,2 0 0,1 15,9V11A2,2 0 0,1 13,13H11V15H15V17H11L9,17V13A2,2 0 0,1 11,11H13V9H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiNumeric3 = "M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15"; -var mdiNumeric3Box = "M15,10.5A1.5,1.5 0 0,1 13.5,12C14.34,12 15,12.67 15,13.5V15C15,16.11 14.11,17 13,17H9V15H13V13H11V11H13V9H9V7H13C14.11,7 15,7.89 15,9M19,3H5C3.91,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19C20.11,21 21,20.1 21,19V5A2,2 0 0,0 19,3Z"; -var mdiNumeric3BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H11V7H15V9H13V11H15V13H11V15H15A2,2 0 0,0 17,13M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z"; -var mdiNumeric3BoxMultipleOutline = "M17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H11V7H15V9H13V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z"; -var mdiNumeric3BoxOutline = "M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiNumeric3Circle = "M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiNumeric3CircleOutline = "M15,15A2,2 0 0,1 13,17H9V15H13V13H11V11H13V9H9V7H13A2,2 0 0,1 15,9V10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 15,13.5V15M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiNumeric4 = "M9,7V13H13V17H15V7H13V11H11V7H9Z"; -var mdiNumeric4Box = "M15,17H13V13H9V7H11V11H13V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiNumeric4BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M15,15H17V5H15V9H13V5H11V11H15V15Z"; -var mdiNumeric4BoxMultipleOutline = "M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M15,15H17V5H15V9H13V5H11V11H15M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; -var mdiNumeric4BoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13,17H15V7H13V11H11V7H9V13H13"; -var mdiNumeric4Circle = "M9,7V13H13V17H15V7H13V11H11V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiNumeric4CircleOutline = "M9,7H11V11H13V7H15V17H13V13H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiNumeric5 = "M9,7V13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H9Z"; -var mdiNumeric5Box = "M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H9V15H13V13H9V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiNumeric5BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H11V11H15V13H11V15H15A2,2 0 0,0 17,13Z"; -var mdiNumeric5BoxMultipleOutline = "M17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H11V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z"; -var mdiNumeric5BoxOutline = "M15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H9V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiNumeric5Circle = "M9,7V13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiNumeric5CircleOutline = "M9,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H9V15H13V13H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiNumeric6 = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M11,13H13V15H11V13Z"; -var mdiNumeric6Box = "M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H11A2,2 0 0,1 9,15V9C9,7.89 9.9,7 11,7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,15H13V13H11V15Z"; -var mdiNumeric6BoxMultiple = "M13,11H15V13H13V11M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M13,15H15A2,2 0 0,0 17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H13A2,2 0 0,0 11,7V13C11,14.11 11.9,15 13,15Z"; -var mdiNumeric6BoxMultipleOutline = "M13,11H15V13H13M13,15H15A2,2 0 0,0 17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H13A2,2 0 0,0 11,7V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; -var mdiNumeric6BoxOutline = "M11,13H13V15H11M11,17H13A2,2 0 0,0 15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H11A2,2 0 0,0 9,9V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiNumeric6Circle = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M11,13H13V15H11V13M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiNumeric6CircleOutline = "M11,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,13V15H13V13H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiNumeric7 = "M11,17L15,9V7H9V9H13L9,17"; -var mdiNumeric7Box = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17L15,9V7H9V9H13L9,17H11Z"; -var mdiNumeric7BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,15L17,7V5H11V7H15L11,15H13M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z"; -var mdiNumeric7BoxMultipleOutline = "M13,15L17,7V5H11V7H15L11,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; -var mdiNumeric7BoxOutline = "M11,17L15,9V7H9V9H13L9,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiNumeric7Circle = "M11,17L15,9V7H9V9H13L9,17H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiNumeric7CircleOutline = "M11,17H9L13,9H9V7H15V9L11,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiNumeric8 = "M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17"; -var mdiNumeric8Box = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M11,13H13V15H11V13M11,9H13V11H11V9Z"; -var mdiNumeric8BoxMultiple = "M13,11H15V13H13V11M13,7H15V9H13V7M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,15H15A2,2 0 0,0 17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H13A2,2 0 0,0 11,7V8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 11,11.5V13C11,14.11 11.9,15 13,15M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z"; -var mdiNumeric8BoxMultipleOutline = "M13,11H15V13H13M13,7H15V9H13M13,15H15A2,2 0 0,0 17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H13A2,2 0 0,0 11,7V8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 11,11.5V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; -var mdiNumeric8BoxOutline = "M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiNumeric8Circle = "M11,13H13V15H11V13M11,9H13V11H11V9M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiNumeric8CircleOutline = "M11,13V15H13V13H11M11,9V11H13V9H11M11,17A2,2 0 0,1 9,15V13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 9,10.5V9A2,2 0 0,1 11,7H13A2,2 0 0,1 15,9V10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 15,13.5V15A2,2 0 0,1 13,17H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiNumeric9 = "M13,17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13M13,11H11V9H13V11Z"; -var mdiNumeric9Box = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M13,11H11V9H13V11M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7Z"; -var mdiNumeric9BoxMultiple = "M15,9H13V7H15V9M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M15,5H13A2,2 0 0,0 11,7V9C11,10.11 11.9,11 13,11H15V13H11V15H15A2,2 0 0,0 17,13V7C17,5.89 16.1,5 15,5M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z"; -var mdiNumeric9BoxMultipleOutline = "M15,9H13V7H15M15,5H13A2,2 0 0,0 11,7V9C11,10.11 11.9,11 13,11H15V13H11V15H15A2,2 0 0,0 17,13V7C17,5.89 16.1,5 15,5M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; -var mdiNumeric9BoxOutline = "M13,11H11V9H13M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z"; -var mdiNumeric9Circle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M13,17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13M13,11H11V9H13V11Z"; -var mdiNumeric9CircleOutline = "M13,17H9V15H13V13H11A2,2 0 0,1 9,11V9A2,2 0 0,1 11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17M13,11V9H11V11H13M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiNumeric9Plus = "M19 11H17V9H15V11H13V13H15V15H17V13H19V11M10 7H8C6.9 7 6 7.9 6 9V11C6 12.11 6.9 13 8 13H10V15H6V17H10C11.11 17 12 16.11 12 15V9C12 7.89 11.1 7 10 7M10 11H8V9H10V11Z"; -var mdiNumeric9PlusBox = "M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M19,11H17V9H15V11H13V13H15V15H17V13H19V11M10,7H8A2,2 0 0,0 6,9V11C6,12.11 6.9,13 8,13H10V15H6V17H10A2,2 0 0,0 12,15V9C12,7.89 11.1,7 10,7M8,9H10V11H8V9Z"; -var mdiNumeric9PlusBoxMultiple = "M11,9V8H12V9H11M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M15,9V11H17V13H19V11H21V9H19V7H17V9H15M14,12V8C14,6.89 13.1,6 12,6H11A2,2 0 0,0 9,8V9C9,10.11 9.9,11 11,11H12V12H9V14H12A2,2 0 0,0 14,12Z"; -var mdiNumeric9PlusBoxMultipleOutline = "M21,9H19V7H17V9H15V11H17V13H19V11H21V17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M11,9V8H12V9M14,12V8C14,6.89 13.1,6 12,6H11A2,2 0 0,0 9,8V9C9,10.11 9.9,11 11,11H12V12H9V14H12A2,2 0 0,0 14,12M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z"; -var mdiNumeric9PlusBoxOutline = "M19,11H17V9H15V11H13V13H15V15H17V13H19V19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,11V10H10V11M12,14V10C12,8.89 11.1,8 10,8H9A2,2 0 0,0 7,10V11C7,12.11 7.9,13 9,13H10V14H7V16H10A2,2 0 0,0 12,14Z"; -var mdiNumeric9PlusCircle = "M19,11H17V9H15V11H13V13H15V15H17V13H19V11M10,7H8A2,2 0 0,0 6,9V11C6,12.11 6.9,13 8,13H10V15H6V17H10A2,2 0 0,0 12,15V9C12,7.89 11.1,7 10,7M8,9H10V11H8V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z"; -var mdiNumeric9PlusCircleOutline = "M19,11V13H17V15H15V13H13V11H15V9H17V11H19M10,7A2,2 0 0,1 12,9V15C12,16.11 11.1,17 10,17H6V15H10V13H8A2,2 0 0,1 6,11V9C6,7.89 6.9,7 8,7H10M8,9V11H10V9H8M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiNumericNegative1 = "M13 7V9H15V17H17V7H13M11 13H5V11H11V13Z"; -var mdiNumericPositive1 = "M13 7V9H15V17H17V7H13M11 13H9V15H7V13H5V11H7V9H9V11H11V13Z"; -var mdiNut = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z"; -var mdiNutrition = "M22,18A4,4 0 0,1 18,22H14A4,4 0 0,1 10,18V16H22V18M4,3H14A2,2 0 0,1 16,5V14H8V19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,6V8H6V6H4M14,8V6H8V8H14M4,10V12H6V10H4M8,10V12H14V10H8M4,14V16H6V14H4Z"; -var mdiNuxt = "M21.8 18.36L16.03 8.08C15.93 8 15.63 7.43 15.03 7.43C14.78 7.43 14.43 7.53 14.07 8.08L13.33 9.26L11.31 5.65C11.26 5.55 10.91 5 10.31 5C10.06 5 9.66 5.1 9.36 5.65L2.18 18.31C2.13 18.41 1.83 19 2.13 19.5C2.23 19.75 2.53 20 3.19 20H20.85C20.95 20 21.6 20 21.9 19.5C22 19.26 22.1 18.86 21.8 18.36M8.1 18.31L7.95 18.86H3.24L10.36 6.34L12.66 10.47L8.1 18.31M9.21 18.86L13.32 11.66L17.5 18.86H9.21M18.74 18.86L18.54 18.31L14 10.46L15.03 8.73L20.75 18.86H18.74Z"; -var mdiOar = "M20.23,15.21C18.77,13.75 14.97,10.2 12.77,11.27L4.5,3L3,4.5L11.28,12.79C10.3,15 13.88,18.62 15.35,20.08C17.11,21.84 18.26,20.92 19.61,19.57C21.1,18.08 21.61,16.61 20.23,15.21Z"; -var mdiOcarina = "M20,12C16.8,10.4 13.4,9.7 10.8,9.3L9.7,5.9C9.3,4.8 7.7,4.8 7.3,5.9L6.3,9C3.9,9.4 2,11.5 2,14C2,16.8 4.2,19 7,19C7,19 14,19 20,16C20,16 22,15 22,14C22,13 20,12 20,12M5,14C4.4,14 4,13.6 4,13C4,12.4 4.4,12 5,12C5.6,12 6,12.4 6,13C6,13.5 5.6,14 5,14M7,17C6.4,17 6,16.6 6,16C6,15.4 6.4,15 7,15C7.6,15 8,15.4 8,16C8,16.5 7.6,17 7,17M9,14C8.4,14 8,13.6 8,13C8,12.4 8.4,12 9,12C9.6,12 10,12.4 10,13C10,13.5 9.6,14 9,14M11,17C10.4,17 10,16.6 10,16C10,15.4 10.4,15 11,15C11.6,15 12,15.4 12,16C12,16.5 11.6,17 11,17M16,14C15.4,14 15,13.6 15,13C15,12.4 15.4,12 16,12C16.6,12 17,12.4 17,13C17,13.5 16.6,14 16,14M19,15C18.4,15 18,14.6 18,14C18,13.4 18.4,13 19,13C19.6,13 20,13.4 20,14C20,14.5 19.6,15 19,15Z"; -var mdiOci = "M2 2V22H22V2M19.12 19.03H4.87V5H19.13V19.03M14.83 10.71H17.69V17.59H14.83M14.83 6.41H17.69V9.27H14.83M6.3 6.41V17.59H13.4V14.72H9.17V9.28H13.4V6.41Z"; -var mdiOcr = "M2 5V19H14V17H12C10.89 17 10 16.11 10 15V9C10 7.89 10.89 7 12 7H14V5M14 7V9H16V7M14 9H12V15H14M14 15V17H16V15M5 7H7C8.11 7 9 7.89 9 9V15C9 16.11 8.11 17 7 17H5C3.89 17 3 16.11 3 15V9C3 7.89 3.89 7 5 7M17 7V17H19V13H20V14H21V17H23V14H22V12H23V8H22V7M5 9V15H7V9M19 9H21V11H19Z"; -var mdiOctagon = "M15.73,3H8.27L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27"; -var mdiOctagonOutline = "M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1"; -var mdiOctagram = "M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06Z"; -var mdiOctagramOutline = "M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06M4.81,9L6.05,12L4.81,15L7.79,16.21L9,19.19L12,17.95L15,19.19L16.21,16.21L19.19,15L17.95,12L19.19,9L16.21,7.79L15,4.81L12,6.05L9,4.81L7.79,7.79L4.81,9Z"; -var mdiOdnoklassniki = "M17.83,12.74C17.55,12.17 16.76,11.69 15.71,12.5C14.28,13.64 12,13.64 12,13.64C12,13.64 9.72,13.64 8.29,12.5C7.24,11.69 6.45,12.17 6.17,12.74C5.67,13.74 6.23,14.23 7.5,15.04C8.59,15.74 10.08,16 11.04,16.1L10.24,16.9C9.1,18.03 8,19.12 7.25,19.88C6.8,20.34 6.8,21.07 7.25,21.5L7.39,21.66C7.84,22.11 8.58,22.11 9.03,21.66L12,18.68C13.15,19.81 14.24,20.9 15,21.66C15.45,22.11 16.18,22.11 16.64,21.66L16.77,21.5C17.23,21.07 17.23,20.34 16.77,19.88L13.79,16.9L13,16.09C13.95,16 15.42,15.73 16.5,15.04C17.77,14.23 18.33,13.74 17.83,12.74M12,4.57C13.38,4.57 14.5,5.69 14.5,7.06C14.5,8.44 13.38,9.55 12,9.55C10.62,9.55 9.5,8.44 9.5,7.06C9.5,5.69 10.62,4.57 12,4.57M12,12.12C14.8,12.12 17.06,9.86 17.06,7.06C17.06,4.27 14.8,2 12,2C9.2,2 6.94,4.27 6.94,7.06C6.94,9.86 9.2,12.12 12,12.12Z"; -var mdiOffer = "M21 13C21.6 13 22.1 13.2 22.4 13.6C22.8 14 23 14.5 23 15L15 18L8 16V7H9.9L17.2 9.7C17.7 9.9 18 10.3 18 10.8C18 11.1 17.9 11.4 17.7 11.6C17.5 11.8 17.2 12 16.8 12H14L12.3 11.3L12 12.2L14 13H21M2 7H6V18H2V7Z"; -var mdiOfficeBuilding = "M5,3V21H11V17.5H13V21H19V3H5M7,5H9V7H7V5M11,5H13V7H11V5M15,5H17V7H15V5M7,9H9V11H7V9M11,9H13V11H11V9M15,9H17V11H15V9M7,13H9V15H7V13M11,13H13V15H11V13M15,13H17V15H15V13M7,17H9V19H7V17M15,17H17V19H15V17Z"; -var mdiOfficeBuildingMarker = "M15.19 21C14.12 19.43 13 17.36 13 15.5C13 13.67 13.96 12 15.4 11H15V9H17V10.23C17.5 10.09 18 10 18.5 10C18.67 10 18.84 10 19 10.03V3H5V21H11V17.5H13V21H15.19M15 5H17V7H15V5M9 19H7V17H9V19M9 15H7V13H9V15M9 11H7V9H9V11M9 7H7V5H9V7M11 5H13V7H11V5M11 9H13V11H11V9M11 15V13H13V15H11M18.5 12C16.6 12 15 13.61 15 15.5C15 18.11 18.5 22 18.5 22S22 18.11 22 15.5C22 13.61 20.4 12 18.5 12M18.5 16.81C17.8 16.81 17.3 16.21 17.3 15.61C17.3 14.91 17.9 14.41 18.5 14.41S19.7 15 19.7 15.61C19.8 16.21 19.2 16.81 18.5 16.81Z"; -var mdiOfficeBuildingMarkerOutline = "M15 9H17V11H15V9M17 5H15V7H17V5M11 15H13V13H11V15M13 5H11V7H13V5M11 11H13V9H11V11M9 5H7V7H9V5M9 9H7V11H9V9M14.55 21H13V17.5H11V21H5V3H19V11.03C19.71 11.09 20.39 11.31 21 11.63V1H3V23H15.91C15.5 22.44 15 21.76 14.55 21M7 19H9V17H7V19M9 13H7V15H9V13M22 16.5C22 19.1 18.5 23 18.5 23S15 19.1 15 16.5C15 14.6 16.6 13 18.5 13S22 14.6 22 16.5M19.7 16.6C19.7 16 19.1 15.4 18.5 15.4S17.3 15.9 17.3 16.6C17.3 17.2 17.8 17.8 18.5 17.8S19.8 17.2 19.7 16.6Z"; -var mdiOfficeBuildingOutline = "M19 3V21H13V17.5H11V21H5V3H19M15 7H17V5H15V7M11 7H13V5H11V7M7 7H9V5H7V7M15 11H17V9H15V11M11 11H13V9H11V11M7 11H9V9H7V11M15 15H17V13H15V15M11 15H13V13H11V15M7 15H9V13H7V15M15 19H17V17H15V19M7 19H9V17H7V19M21 1H3V23H21V1Z"; -var mdiOil = "M22,12.5C22,12.5 24,14.67 24,16A2,2 0 0,1 22,18A2,2 0 0,1 20,16C20,14.67 22,12.5 22,12.5M6,6H10A1,1 0 0,1 11,7A1,1 0 0,1 10,8H9V10H11C11.74,10 12.39,10.4 12.73,11L19.24,7.24L22.5,9.13C23,9.4 23.14,10 22.87,10.5C22.59,10.97 22,11.14 21.5,10.86L19.4,9.65L15.75,15.97C15.41,16.58 14.75,17 14,17H5A2,2 0 0,1 3,15V12A2,2 0 0,1 5,10H7V8H6A1,1 0 0,1 5,7A1,1 0 0,1 6,6M5,12V15H14L16.06,11.43L12.6,13.43L11.69,12H5M0.38,9.21L2.09,7.5C2.5,7.11 3.11,7.11 3.5,7.5C3.89,7.89 3.89,8.5 3.5,8.91L1.79,10.62C1.4,11 0.77,11 0.38,10.62C0,10.23 0,9.6 0.38,9.21Z"; -var mdiOilLamp = "M5,20H16V22H5M11,5H10A2,2 0 0,0 8,7H13A2,2 0 0,0 11,5M16,8H22A2,2 0 0,1 20,10H19A4,4 0 0,0 15,14V15A4,4 0 0,1 11,19H10A4,4 0 0,1 6,15H4A2,2 0 0,1 2,13V10A2,2 0 0,1 4,8M6,10H4V13H6M19,5A2,2 0 0,1 21,7H22A2.9,2.9 0 0,0 19,4A2,2 0 0,1 17,2H16A2.9,2.9 0 0,0 19,5"; -var mdiOilLevel = "M8 18C6.67 18 5.79 18.79 5.29 19.29S4.67 20 4 20 3.21 19.79 2.71 19.29C2.35 18.93 1.79 18.42 1 18.16V20.41C1.09 20.5 1.18 20.59 1.29 20.71C1.79 21.21 2.67 22 4 22S6.21 21.21 6.71 20.71 7.33 20 8 20 8.79 20.21 9.29 20.71C9.73 21.14 10.44 21.8 11.5 21.96C11.66 22 11.83 22 12 22C13.33 22 14.21 21.21 14.71 20.71S15.33 20 16 20 16.79 20.21 17.29 20.71 18.67 22 20 22 22.21 21.21 22.71 20.71C22.82 20.59 22.91 20.5 23 20.41V18.16C22.21 18.42 21.65 18.93 21.29 19.29C20.79 19.79 20.67 20 20 20S19.21 19.79 18.71 19.29 17.33 18 16 18 13.79 18.79 13.29 19.29 12.67 20 12 20C11.78 20 11.63 19.97 11.5 19.92C11.22 19.82 11.05 19.63 10.71 19.29C10.21 18.79 9.33 18 8 18M22 10.5C22 10.5 24 12.67 24 14C24 15.1 23.1 16 22 16S20 15.1 20 14C20 12.67 22 10.5 22 10.5M22.5 7.13L19.24 5.24L12.73 9C12.39 8.4 11.74 8 11 8H9V6H10C10.55 6 11 5.55 11 5S10.55 4 10 4H6C5.45 4 5 4.45 5 5S5.45 6 6 6H7V8H5C3.9 8 3 8.9 3 10V13C3 14.1 3.9 15 5 15H14C14.75 15 15.41 14.58 15.75 13.97L19.4 7.65L21.5 8.86C22 9.14 22.59 8.97 22.87 8.5C23.14 8 23 7.4 22.5 7.13M14 13H5V10H11.69L12.6 11.43L16.06 9.43L14 13M3.5 6.92L1.79 8.62A1 1 0 0 1 .38 7.21L2.09 5.5A1 1 0 0 1 3.5 5.5C3.89 5.89 3.89 6.5 3.5 6.92Z"; -var mdiOilTemperature = "M10 5H13V3H10V2C10 1.4 9.6 1 9 1S8 1.4 8 2V15.3C7.4 15.6 7 16.3 7 17C7 18.1 7.9 19 9 19S11 18.1 11 17C11 16.3 10.6 15.6 10 15.3V13H13V11H10V9H13V7H10V5M22 17.5C22 17.5 24 19.7 24 21C24 22.1 23.1 23 22 23S20 22.1 20 21C20 19.7 22 17.5 22 17.5M22.9 15.5C22.6 16 22 16.1 21.5 15.9L19.4 14.7L15.8 21C15.5 21.6 14.8 22 14 22H5C3.9 22 3 21.1 3 20V17C3 15.9 3.9 15 5 15V20H14L16.1 16.4L13 18.2V15.8L19.2 12.2L22.5 14.1C23 14.4 23.1 15 22.9 15.5M3.5 13.9L1.8 15.6C1.4 16 .8 16 .4 15.6S0 14.6.4 14.2L2.1 12.5C2.5 12.1 3.1 12.1 3.5 12.5S3.9 13.5 3.5 13.9Z"; -var mdiOmega = "M19.15,19H13.39V16.87C15.5,15.25 16.59,13.24 16.59,10.84C16.59,9.34 16.16,8.16 15.32,7.29C14.47,6.42 13.37,6 12.03,6C10.68,6 9.57,6.42 8.71,7.3C7.84,8.17 7.41,9.37 7.41,10.88C7.41,13.26 8.5,15.26 10.61,16.87V19H4.85V16.87H8.41C6.04,15.32 4.85,13.23 4.85,10.6C4.85,8.5 5.5,6.86 6.81,5.66C8.12,4.45 9.84,3.85 11.97,3.85C14.15,3.85 15.89,4.45 17.19,5.64C18.5,6.83 19.15,8.5 19.15,10.58C19.15,13.21 17.95,15.31 15.55,16.87H19.15V19Z"; -var mdiOneUp = "M10,19V19C9.4,19 9,18.6 9,18V17C9,16.5 9.4,16 10,16V16C10.5,16 11,16.4 11,17V18C11,18.6 10.6,19 10,19M15,18V17C15,16.5 14.6,16 14,16V16C13.5,16 13,16.4 13,17V18C13,18.5 13.4,19 14,19V19C14.6,19 15,18.6 15,18M22,12C22,14.6 20.4,16.9 18,18.4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V18.4C3.6,16.9 2,14.6 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7,10C7,8.9 6.4,7.9 5.5,7.4C4.5,8.7 4,10.3 4,12C4,12.3 4,12.7 4.1,13C5.7,12.9 7,11.6 7,10M9,9C9,10.7 10.3,12 12,12C13.7,12 15,10.7 15,9C15,7.3 13.7,6 12,6C10.3,6 9,7.3 9,9M16,20V15.5C14.8,15.2 13.4,15 12,15C10.6,15 9.2,15.2 8,15.5V20H16M19.9,13C20,12.7 20,12.3 20,12C20,10.3 19.5,8.7 18.5,7.4C17.6,7.9 17,8.9 17,10C17,11.6 18.3,12.9 19.9,13Z"; -var mdiOnepassword = "M12,1C5.92,1 1,5.92 1,12C1,18.08 5.92,23 12,23C18.08,23 23,18.08 23,12C23,5.92 18.08,1 12,1M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M13,13.5C13,14.13 13.4,14.7 14,14.91V18H10V11.91C10.78,11.64 11.19,10.8 10.93,10C10.78,9.58 10.44,9.24 10,9.09V6H14V12.09C13.4,12.3 13,12.87 13,13.5Z"; -var mdiOpacity = "M17.66,8L12,2.35L6.34,8C4.78,9.56 4,11.64 4,13.64C4,15.64 4.78,17.75 6.34,19.31C7.9,20.87 9.95,21.66 12,21.66C14.05,21.66 16.1,20.87 17.66,19.31C19.22,17.75 20,15.64 20,13.64C20,11.64 19.22,9.56 17.66,8M6,14C6,12 6.62,10.73 7.76,9.6L12,5.27L16.24,9.65C17.38,10.77 18,12 18,14H6Z"; -var mdiOpenInApp = "M12,10L8,14H11V20H13V14H16M19,4H5C3.89,4 3,4.9 3,6V18A2,2 0 0,0 5,20H9V18H5V8H19V18H15V20H19A2,2 0 0,0 21,18V6A2,2 0 0,0 19,4Z"; -var mdiOpenInNew = "M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z"; -var mdiOpenSourceInitiative = "M15.41,22C15.35,22 15.28,22 15.22,22C15.1,21.95 15,21.85 14.96,21.73L12.74,15.93C12.65,15.69 12.77,15.42 13,15.32C13.71,15.06 14.28,14.5 14.58,13.83C15.22,12.4 14.58,10.73 13.15,10.09C11.72,9.45 10.05,10.09 9.41,11.5C9.11,12.21 9.09,13 9.36,13.69C9.66,14.43 10.25,15 11,15.28C11.24,15.37 11.37,15.64 11.28,15.89L9,21.69C8.96,21.81 8.87,21.91 8.75,21.96C8.63,22 8.5,22 8.39,21.96C3.24,19.97 0.67,14.18 2.66,9.03C4.65,3.88 10.44,1.31 15.59,3.3C18.06,4.26 20.05,6.15 21.13,8.57C22.22,11 22.29,13.75 21.33,16.22C20.32,18.88 18.23,21 15.58,22C15.5,22 15.47,22 15.41,22M12,3.59C7.03,3.46 2.9,7.39 2.77,12.36C2.68,16.08 4.88,19.47 8.32,20.9L10.21,16C8.38,15 7.69,12.72 8.68,10.89C9.67,9.06 11.96,8.38 13.79,9.36C15.62,10.35 16.31,12.64 15.32,14.47C14.97,15.12 14.44,15.65 13.79,16L15.68,20.93C17.86,19.95 19.57,18.16 20.44,15.93C22.28,11.31 20.04,6.08 15.42,4.23C14.33,3.8 13.17,3.58 12,3.59Z"; -var mdiOpenid = "M14,2L11,3.5V19.94C7,19.5 4,17.46 4,15C4,12.75 6.5,10.85 10,10.22V8.19C4.86,8.88 1,11.66 1,15C1,18.56 5.36,21.5 11,21.94C11.03,21.94 11.06,21.94 11.09,21.94L14,20.5V2M15,8.19V10.22C16.15,10.43 17.18,10.77 18.06,11.22L16.5,12L23,13.5L22.5,9L20.5,10C19,9.12 17.12,8.47 15,8.19Z"; -var mdiOpera = "M9.04,17.07C8.04,15.9 7.4,14.16 7.35,12.21V11.79C7.4,9.84 8.04,8.1 9.04,6.93C9.86,5.95 10.93,5.37 12.1,5.37C14.72,5.37 16.84,8.34 16.84,12C16.84,15.66 14.72,18.63 12.1,18.63C10.93,18.63 10.33,18.5 9.04,17.07M12.03,3H12A9,9 0 0,0 3,12C3,16.83 6.8,20.77 11.57,21H12C14.3,21 16.4,20.13 18,18.71C19.84,17.06 21,14.67 21,12C21,9.33 19.84,6.94 18,5.29C16.41,3.87 14.32,3 12.03,3Z"; -var mdiOrbit = "M8.11,1.75C9.3,1.25 10.62,1 12,1C18.08,1 23,5.92 23,12C23,18.08 18.08,23 12,23C5.92,23 1,18.08 1,12C1,10.62 1.25,9.3 1.72,8.08C2.24,8.61 2.83,8.96 3.45,9.18C3.16,10.07 3,11 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3C11,3 10.07,3.16 9.18,3.45C8.96,2.83 8.61,2.24 8.11,1.75M4.93,2.93C6.03,2.93 6.93,3.82 6.93,4.93A2,2 0 0,1 4.93,6.93C3.82,6.93 2.93,6.03 2.93,4.93C2.93,3.82 3.82,2.93 4.93,2.93M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7Z"; -var mdiOrbitVariant = "M19 8L15 12H18C18 15.31 15.31 18 12 18C11 18 10.03 17.75 9.2 17.3L7.74 18.76C8.97 19.54 10.43 20 12 20C16.42 20 20 16.42 20 12H23M6 12C6 8.69 8.69 6 12 6C13 6 13.97 6.25 14.8 6.7L16.26 5.24C15.03 4.46 13.57 4 12 4C7.58 4 4 7.58 4 12H1L5 16L9 12M14 12C14 13.11 13.11 14 12 14S10 13.11 10 12 10.9 10 12 10 14 10.9 14 12Z"; -var mdiOrderAlphabeticalAscending = "M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12M9 13V15L5.67 19H9V21H3V19L6.33 15H3V13M7 3H5C3.9 3 3 3.9 3 5V11H5V9H7V11H9V5C9 3.9 8.11 3 7 3M7 7H5V5H7Z"; -var mdiOrderAlphabeticalDescending = "M7 13H5C3.9 13 3 13.9 3 15V21H5V19H7V21H9V15C9 13.9 8.11 13 7 13M7 17H5V15H7M9 3V5L5.67 9H9V11H3V9L6.33 5H3V3M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z"; -var mdiOrderBoolAscending = "M6 3C3.79 3 2 4.79 2 7S3.79 11 6 11 10 9.21 10 7 8.21 3 6 3M6 9C4.9 9 4 8.1 4 7S4.9 5 6 5 8 5.9 8 7 7.1 9 6 9M6 13C3.79 13 2 14.79 2 17S3.79 21 6 21 10 19.21 10 17 8.21 13 6 13M12 5H22V7H12V5M12 19V17H22V19H12M12 11H22V13H12V11Z"; -var mdiOrderBoolAscendingVariant = "M4 13C2.89 13 2 13.89 2 15V19C2 20.11 2.89 21 4 21H8C9.11 21 10 20.11 10 19V15C10 13.89 9.11 13 8 13M8.2 14.5L9.26 15.55L5.27 19.5L2.74 16.95L3.81 15.9L5.28 17.39M4 3C2.89 3 2 3.89 2 5V9C2 10.11 2.89 11 4 11H8C9.11 11 10 10.11 10 9V5C10 3.89 9.11 3 8 3M4 5H8V9H4M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z"; -var mdiOrderBoolDescending = "M6 13C3.79 13 2 14.79 2 17S3.79 21 6 21 10 19.21 10 17 8.21 13 6 13M6 19C4.9 19 4 18.1 4 17S4.9 15 6 15 8 15.9 8 17 7.1 19 6 19M6 3C3.79 3 2 4.79 2 7S3.79 11 6 11 10 9.21 10 7 8.21 3 6 3M12 5H22V7H12V5M12 19V17H22V19H12M12 11H22V13H12V11Z"; -var mdiOrderBoolDescendingVariant = "M4 3C2.89 3 2 3.89 2 5V9C2 10.11 2.89 11 4 11H8C9.11 11 10 10.11 10 9V5C10 3.89 9.11 3 8 3M8.2 4.5L9.26 5.55L5.27 9.5L2.74 6.95L3.81 5.9L5.28 7.39M4 13C2.89 13 2 13.89 2 15V19C2 20.11 2.89 21 4 21H8C9.11 21 10 20.11 10 19V15C10 13.89 9.11 13 8 13M4 15H8V19H4M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z"; -var mdiOrderNumericAscending = "M7 21H3V19H7V18H5C3.9 18 3 17.11 3 16V15C3 13.9 3.9 13 5 13H7C8.11 13 9 13.9 9 15V19C9 20.11 8.11 21 7 21M7 15H5V16H7M5 3H7C8.11 3 9 3.9 9 5V9C9 10.11 8.11 11 7 11H5C3.9 11 3 10.11 3 9V5C3 3.9 3.9 3 5 3M5 9H7V5H5M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z"; -var mdiOrderNumericDescending = "M7 11H3V9H7V8H5C3.9 8 3 7.11 3 6V5C3 3.9 3.9 3 5 3H7C8.11 3 9 3.9 9 5V9C9 10.11 8.11 11 7 11M7 5H5V6H7M5 13H7C8.11 13 9 13.9 9 15V19C9 20.11 8.11 21 7 21H5C3.9 21 3 20.11 3 19V15C3 13.9 3.9 13 5 13M5 19H7V15H5M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z"; -var mdiOrigin = "M12,2.13C12,2.23 11.95,2.33 11.89,2.41C11.5,3 11.16,3.64 11.04,4.33L11,4.56L12,4.5A7.5,7.5 0 0,1 19.5,12C19.5,13.62 19,15.11 18.12,16.34C16.73,18.68 14.72,20.65 12.34,21.97C12.25,22 12.12,22 12.06,21.93C12,21.83 12,21.7 12.09,21.61C12.47,21.09 12.73,20.5 12.87,19.85L12.93,19.44L12,19.5A7.5,7.5 0 0,1 4.5,12C4.5,10.39 5,8.89 5.88,7.67C7.26,5.32 9.28,3.34 11.67,2C11.78,1.95 11.94,2 12,2.13M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; -var mdiOrnament = "M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M6.34,16H7.59L6,14.43C6.05,15 6.17,15.5 6.34,16M12.59,16L8.59,12H6.41L10.41,16H12.59M17.66,12H16.41L18,13.57C17.95,13 17.83,12.5 17.66,12M11.41,12L15.41,16H17.59L13.59,12H11.41M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20Z"; -var mdiOrnamentVariant = "M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20M12,12A2,2 0 0,0 10,14A2,2 0 0,0 12,16A2,2 0 0,0 14,14A2,2 0 0,0 12,12M18,14C18,13.31 17.88,12.65 17.67,12C16.72,12.19 16,13 16,14C16,15 16.72,15.81 17.67,15.97C17.88,15.35 18,14.69 18,14M6,14C6,14.69 6.12,15.35 6.33,15.97C7.28,15.81 8,15 8,14C8,13 7.28,12.19 6.33,12C6.12,12.65 6,13.31 6,14Z"; -var mdiOutdoorLamp = "M15 22H13C11.9 22 11 21.1 11 20V15H17V20C17 21.1 16.1 22 15 22M7 14H21L15 9.71V6C15 4.39 13.94 2 11 2S7 4.39 7 6C7 6.45 6.81 7 6 7H5V3H3V12H5V9H6C8.2 9 9 7.21 9 6C9 5.67 9.1 4 11 4C12.83 4 13 5.54 13 6V9.71L7 14Z"; -var mdiOverscan = "M12 5.5L10 8H14L12 5.5M18 10V14L20.5 12L18 10M6 10L3.5 12L6 14V10M14 16H10L12 18.5L14 16M21 3H3C1.9 3 1 3.9 1 5V19C1 20.1 1.9 21 3 21H21C22.1 21 23 20.1 23 19V5C23 3.9 22.1 3 21 3M21 19H3V5H21V19Z"; -var mdiOwl = "M12,16C12.56,16.84 13.31,17.53 14.2,18L12,20.2L9.8,18C10.69,17.53 11.45,16.84 12,16M17,11.2A2,2 0 0,0 15,13.2A2,2 0 0,0 17,15.2A2,2 0 0,0 19,13.2C19,12.09 18.1,11.2 17,11.2M7,11.2A2,2 0 0,0 5,13.2A2,2 0 0,0 7,15.2A2,2 0 0,0 9,13.2C9,12.09 8.1,11.2 7,11.2M17,8.7A4,4 0 0,1 21,12.7A4,4 0 0,1 17,16.7A4,4 0 0,1 13,12.7A4,4 0 0,1 17,8.7M7,8.7A4,4 0 0,1 11,12.7A4,4 0 0,1 7,16.7A4,4 0 0,1 3,12.7A4,4 0 0,1 7,8.7M2.24,1C4,4.7 2.73,7.46 1.55,10.2C1.19,11 1,11.83 1,12.7A6,6 0 0,0 7,18.7C7.21,18.69 7.42,18.68 7.63,18.65L10.59,21.61L12,23L13.41,21.61L16.37,18.65C16.58,18.68 16.79,18.69 17,18.7A6,6 0 0,0 23,12.7C23,11.83 22.81,11 22.45,10.2C21.27,7.46 20,4.7 21.76,1C19.12,3.06 15.36,4.69 12,4.7C8.64,4.69 4.88,3.06 2.24,1Z"; -var mdiPacMan = "M12,12L19.07,19.07C15.17,23 8.83,23 4.93,19.07C1,15.17 1,8.84 4.93,4.93C8.83,1 15.16,1 19.07,4.93L12,12M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10Z"; -var mdiPackage = "M5.12,5H18.87L17.93,4H5.93L5.12,5M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M6,18H12V15H6V18Z"; -var mdiPackageDown = "M5.12,5L5.93,4H17.93L18.87,5M12,17.5L6.5,12H10V10H14V12H17.5L12,17.5M20.54,5.23L19.15,3.55C18.88,3.21 18.47,3 18,3H6C5.53,3 5.12,3.21 4.84,3.55L3.46,5.23C3.17,5.57 3,6 3,6.5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V6.5C21,6 20.83,5.57 20.54,5.23Z"; -var mdiPackageUp = "M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M5.12,5H18.87L17.93,4H5.93L5.12,5M12,9.5L6.5,15H10V17H14V15H17.5L12,9.5Z"; -var mdiPackageVariant = "M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z"; -var mdiPackageVariantClosed = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L10.11,5.22L16,8.61L17.96,7.5L12,4.15M6.04,7.5L12,10.85L13.96,9.75L8.08,6.35L6.04,7.5M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z"; -var mdiPageFirst = "M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z"; -var mdiPageLast = "M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z"; -var mdiPageLayoutBody = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M6,8V16H18V8H6Z"; -var mdiPageLayoutFooter = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M6,16V20H18V16H6Z"; -var mdiPageLayoutHeader = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M6,4V8H18V4H6Z"; -var mdiPageLayoutHeaderFooter = "M18 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V4C20 2.9 19.11 2 18 2M18 20H6V16H18V20M18 8H6V4H18V8Z"; -var mdiPageLayoutSidebarLeft = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M6,8V16H10V8H6Z"; -var mdiPageLayoutSidebarRight = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M14,8V16H18V8H14Z"; -var mdiPageNext = "M20,3H5A2,2 0 0,0 3,5V11H7V9L11,12L7,15V13H3V19A2,2 0 0,0 5,21H20A2,2 0 0,0 22,19V5A2,2 0 0,0 20,3M17,17H13V15H17V17M20,13H13V11H20V13M20,9H13V7H20V9M3,13H0V11H3V13Z"; -var mdiPageNextOutline = "M22,3H5A2,2 0 0,0 3,5V9H5V5H22V19H5V15H3V19A2,2 0 0,0 5,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M7,15V13H0V11H7V9L11,12L7,15M20,13H13V11H20V13M20,9H13V7H20V9M17,17H13V15H17V17Z"; -var mdiPagePrevious = "M4,21H19A2,2 0 0,0 21,19V13H17V15L13,12L17,9V11H21V5A2,2 0 0,0 19,3H4A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21M4,15H8V17H4V15M4,11H11V13H4V11M4,7H11V9H4V7M21,11H24V13H21V11Z"; -var mdiPagePreviousOutline = "M2,3H19A2,2 0 0,1 21,5V9H19V5H2V19H19V15H21V19A2,2 0 0,1 19,21H2A2,2 0 0,1 0,19V5A2,2 0 0,1 2,3M17,15V13H24V11H17V9L13,12L17,15M4,13H11V11H4V13M4,9H11V7H4V9M4,17H8V15H4V17Z"; -var mdiPail = "M11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L11.5 7.63M7 21L5.79 14.97L13.21 10.69C14 10.26 14.5 9.44 14.5 8.5C14.5 7.12 13.38 6 12 6C11.53 6 11.09 6.13 10.71 6.36L4.76 9.79L4 6H3V4H21V6H20L17 21H7Z"; -var mdiPailMinus = "M12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36M13 19C13 15.82 15.47 13.23 18.6 13L20 6H21V4H3V6H4L4.76 9.79L10.71 6.36C11.09 6.13 11.53 6 12 6C13.38 6 14.5 7.12 14.5 8.5C14.5 9.44 14 10.26 13.21 10.69L5.79 14.97L7 21H13.35C13.13 20.37 13 19.7 13 19M15 18V20H23V18H15Z"; -var mdiPailMinusOutline = "M4 6H3V4H21V6H20L18.6 13C17.83 13.07 17.11 13.26 16.45 13.58L17.96 6H6.04L6.5 8.22L4.65 9.27L4 6M12.86 8C12.58 7.5 11.97 7.35 11.5 7.63L3.27 12.38C2.79 12.66 2.62 13.27 2.9 13.75C3.18 14.23 3.79 14.39 4.27 14.11L12.5 9.36C12.97 9.09 13.14 8.47 12.86 8M13 19H8.64L7.73 14.43L5.9 15.5L7 21H13.35C13.13 20.37 13 19.7 13 19M15 18V20H23V18H15Z"; -var mdiPailOff = "M20.84 22.73L17.35 19.24L17 21H7L5.79 14.97L10.41 12.3L9.31 11.2L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L7.85 9.74L6.75 8.64L4.76 9.79L4 6H3V4.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M10.71 6.36C11.09 6.13 11.53 6 12 6C13.38 6 14.5 7.12 14.5 8.5C14.5 9.27 14.16 9.94 13.6 10.4L18.2 15L20 6H21V4H7.2L10 6.78L10.71 6.36M11.5 7.63L11.08 7.88L12.53 9.33C12.97 9.05 13.13 8.46 12.86 8C12.58 7.5 11.97 7.35 11.5 7.63Z"; -var mdiPailOffOutline = "M20.84 22.73L17.35 19.24L17 21H7L5.9 15.5L7.73 14.43L8.64 19H15.36L15.65 17.54L9.31 11.2L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L7.85 9.74L6.38 8.27L4.65 9.27L4 6H3V4.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M17.96 6L16.5 13.3L18.2 15L20 6H21V4H7.2L9.2 6H17.96M11.5 7.63L11.08 7.88L12.53 9.33C12.97 9.05 13.13 8.46 12.86 8C12.58 7.5 11.97 7.35 11.5 7.63Z"; -var mdiPailOutline = "M11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75S2.79 12.66 3.27 12.38L11.5 7.63M3 4V6H4L4.65 9.27L6.5 8.22L6.04 6H17.96L15.36 19H8.64L7.73 14.43L5.9 15.5L7 21H17L20 6H21V4H3Z"; -var mdiPailPlus = "M12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36M13 19C13 15.82 15.47 13.23 18.6 13L20 6H21V4H3V6H4L4.76 9.79L10.71 6.36C11.09 6.13 11.53 6 12 6C13.38 6 14.5 7.12 14.5 8.5C14.5 9.44 14 10.26 13.21 10.69L5.79 14.97L7 21H13.35C13.13 20.37 13 19.7 13 19M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; -var mdiPailPlusOutline = "M4 6H3V4H21V6H20L18.6 13C17.83 13.07 17.11 13.26 16.45 13.58L17.96 6H6.04L6.5 8.22L4.65 9.27L4 6M12.86 8C12.58 7.5 11.97 7.35 11.5 7.63L3.27 12.38C2.79 12.66 2.62 13.27 2.9 13.75C3.18 14.23 3.79 14.39 4.27 14.11L12.5 9.36C12.97 9.09 13.14 8.47 12.86 8M13 19H8.64L7.73 14.43L5.9 15.5L7 21H13.35C13.13 20.37 13 19.7 13 19M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; -var mdiPailRemove = "M12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36M13 19C13 15.82 15.47 13.23 18.6 13L20 6H21V4H3V6H4L4.76 9.79L10.71 6.36C11.09 6.13 11.53 6 12 6C13.38 6 14.5 7.12 14.5 8.5C14.5 9.44 14 10.26 13.21 10.69L5.79 14.97L7 21H13.35C13.13 20.37 13 19.7 13 19M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z"; -var mdiPailRemoveOutline = "M4 6H3V4H21V6H20L18.6 13C17.83 13.07 17.11 13.26 16.45 13.58L17.96 6H6.04L6.5 8.22L4.65 9.27L4 6M12.86 8C12.58 7.5 11.97 7.35 11.5 7.63L3.27 12.38C2.79 12.66 2.62 13.27 2.9 13.75C3.18 14.23 3.79 14.39 4.27 14.11L12.5 9.36C12.97 9.09 13.14 8.47 12.86 8M13 19H8.64L7.73 14.43L5.9 15.5L7 21H13.35C13.13 20.37 13 19.7 13 19M21.12 15.46L19 17.59L16.88 15.46L15.46 16.88L17.58 19L15.46 21.12L16.87 22.54L19 20.41L21.12 22.54L22.53 21.12L20.41 19L22.53 16.88L21.12 15.46Z"; -var mdiPalette = "M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z"; -var mdiPaletteAdvanced = "M22,22H10V20H22V22M2,22V20H9V22H2M18,18V10H22V18H18M18,3H22V9H18V3M2,18V3H16V18H2M9,14.56A3,3 0 0,0 12,11.56C12,9.56 9,6.19 9,6.19C9,6.19 6,9.56 6,11.56A3,3 0 0,0 9,14.56Z"; -var mdiPaletteOutline = "M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2C17.5,2 22,6 22,11A6,6 0 0,1 16,17H14.2C13.9,17 13.7,17.2 13.7,17.5C13.7,17.6 13.8,17.7 13.8,17.8C14.2,18.3 14.4,18.9 14.4,19.5C14.5,20.9 13.4,22 12,22M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C12.3,20 12.5,19.8 12.5,19.5C12.5,19.3 12.4,19.2 12.4,19.1C12,18.6 11.8,18.1 11.8,17.5C11.8,16.1 12.9,15 14.3,15H16A4,4 0 0,0 20,11C20,7.1 16.4,4 12,4M6.5,10C7.3,10 8,10.7 8,11.5C8,12.3 7.3,13 6.5,13C5.7,13 5,12.3 5,11.5C5,10.7 5.7,10 6.5,10M9.5,6C10.3,6 11,6.7 11,7.5C11,8.3 10.3,9 9.5,9C8.7,9 8,8.3 8,7.5C8,6.7 8.7,6 9.5,6M14.5,6C15.3,6 16,6.7 16,7.5C16,8.3 15.3,9 14.5,9C13.7,9 13,8.3 13,7.5C13,6.7 13.7,6 14.5,6M17.5,10C18.3,10 19,10.7 19,11.5C19,12.3 18.3,13 17.5,13C16.7,13 16,12.3 16,11.5C16,10.7 16.7,10 17.5,10Z"; -var mdiPaletteSwatch = "M2.53,19.65L3.87,20.21V11.18L1.44,17.04C1.03,18.06 1.5,19.23 2.53,19.65M22.03,15.95L17.07,4C16.76,3.23 16.03,2.77 15.26,2.75C15,2.75 14.73,2.79 14.47,2.9L7.1,5.95C6.35,6.26 5.89,7 5.87,7.75C5.86,8 5.91,8.29 6,8.55L11,20.5C11.29,21.28 12.03,21.74 12.81,21.75C13.07,21.75 13.33,21.7 13.58,21.6L20.94,18.55C21.96,18.13 22.45,16.96 22.03,15.95M7.88,8.75A1,1 0 0,1 6.88,7.75A1,1 0 0,1 7.88,6.75C8.43,6.75 8.88,7.2 8.88,7.75C8.88,8.3 8.43,8.75 7.88,8.75M5.88,19.75A2,2 0 0,0 7.88,21.75H9.33L5.88,13.41V19.75Z"; -var mdiPaletteSwatchOutline = "M2.5 19.6L3.8 20.2V11.2L1.4 17C1 18.1 1.5 19.2 2.5 19.6M15.2 4.8L20.2 16.8L12.9 19.8L7.9 7.9V7.8L15.2 4.8M15.3 2.8C15 2.8 14.8 2.8 14.5 2.9L7.1 6C6.4 6.3 5.9 7 5.9 7.8C5.9 8 5.9 8.3 6 8.6L11 20.5C11.3 21.3 12 21.7 12.8 21.7C13.1 21.7 13.3 21.7 13.6 21.6L21 18.5C22 18.1 22.5 16.9 22.1 15.9L17.1 4C16.8 3.2 16 2.8 15.3 2.8M10.5 9.9C9.9 9.9 9.5 9.5 9.5 8.9S9.9 7.9 10.5 7.9C11.1 7.9 11.5 8.4 11.5 8.9S11.1 9.9 10.5 9.9M5.9 19.8C5.9 20.9 6.8 21.8 7.9 21.8H9.3L5.9 13.5V19.8Z"; -var mdiPalmTree = "M12 9C13.59 16.61 10 22 10 22H13C14.88 16.2 14 12.09 13.5 10M15.66 7.16C15.83 7.37 16 7.59 16.13 7.82C17.84 10.53 17.5 13.95 15.5 16.26C16.34 14.21 16.22 11.79 14.95 9.77C14.87 9.64 14.78 9.53 14.7 9.41C14.11 8.58 13.36 7.92 12.54 7.43C9.66 8.35 7.58 11.04 7.58 14.22C7.58 14.96 7.69 15.67 7.89 16.33C7.05 15.16 6.56 13.73 6.56 12.19C6.56 9.84 7.7 7.76 9.45 6.46C8 6.35 6.46 6.67 5.12 7.5C4.5 7.91 3.96 8.38 3.5 8.91C4.05 7.58 5 6.39 6.3 5.57C7.8 4.63 9.5 4.32 11.14 4.56C10.73 4 10.23 3.47 9.63 3C9.05 2.58 8.42 2.24 7.76 2C9.2 2.04 10.64 2.5 11.87 3.43C12.5 3.9 13 4.47 13.4 5.07C13.5 5.07 13.59 5.06 13.69 5.06C16.89 5.06 19.6 7.17 20.5 10.08C19.38 8.5 17.65 7.43 15.66 7.16Z"; -var mdiPan = "M12,2.5L8,7H16L12,2.5M7,8L2.5,12L7,16V8M17,8V16L21.5,12L17,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M8,17L12,21.5L16,17H8Z"; -var mdiPanBottomLeft = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M5.35,13L11,18.65L5,19L5.35,13Z"; -var mdiPanBottomRight = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M13,18.65L18.65,13L19,19L13,18.65Z"; -var mdiPanDown = "M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M8,17L12,21.5L16,17H8Z"; -var mdiPanHorizontal = "M7,8L2.5,12L7,16V8M17,8V16L21.5,12L17,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; -var mdiPanLeft = "M7,8L2.5,12L7,16V8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; -var mdiPanRight = "M17,8V16L21.5,12L17,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; -var mdiPanTopLeft = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M11,5.35L5.35,11L5,5L11,5.35Z"; -var mdiPanTopRight = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M18.65,11L13,5.35L19,5L18.65,11Z"; -var mdiPanUp = "M12,2.5L8,7H16L12,2.5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; -var mdiPanVertical = "M12,2.5L8,7H16L12,2.5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M8,17L12,21.5L16,17H8Z"; -var mdiPanda = "M12,3C13.74,3 15.36,3.5 16.74,4.35C17.38,3.53 18.38,3 19.5,3A3.5,3.5 0 0,1 23,6.5C23,8 22.05,9.28 20.72,9.78C20.9,10.5 21,11.23 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12C3,11.23 3.1,10.5 3.28,9.78C1.95,9.28 1,8 1,6.5A3.5,3.5 0 0,1 4.5,3C5.62,3 6.62,3.53 7.26,4.35C8.64,3.5 10.26,3 12,3M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5M16.19,10.3C16.55,11.63 16.08,12.91 15.15,13.16C14.21,13.42 13.17,12.54 12.81,11.2C12.45,9.87 12.92,8.59 13.85,8.34C14.79,8.09 15.83,8.96 16.19,10.3M7.81,10.3C8.17,8.96 9.21,8.09 10.15,8.34C11.08,8.59 11.55,9.87 11.19,11.2C10.83,12.54 9.79,13.42 8.85,13.16C7.92,12.91 7.45,11.63 7.81,10.3M12,14C12.6,14 13.13,14.19 13.5,14.5L12.5,15.5C12.5,15.92 12.84,16.25 13.25,16.25A0.75,0.75 0 0,0 14,15.5A0.5,0.5 0 0,1 14.5,15A0.5,0.5 0 0,1 15,15.5A1.75,1.75 0 0,1 13.25,17.25C12.76,17.25 12.32,17.05 12,16.72C11.68,17.05 11.24,17.25 10.75,17.25A1.75,1.75 0 0,1 9,15.5A0.5,0.5 0 0,1 9.5,15A0.5,0.5 0 0,1 10,15.5A0.75,0.75 0 0,0 10.75,16.25A0.75,0.75 0 0,0 11.5,15.5L10.5,14.5C10.87,14.19 11.4,14 12,14Z"; -var mdiPandora = "M10,20A1,1 0 0,1 9,21H4V3H13.71A6.75,6.75 0 0,1 20.46,9.75C20.46,13.5 17.44,16.5 13.71,16.5H10V20Z"; -var mdiPanorama = "M8.5,12.5L11,15.5L14.5,11L19,17H5M23,18V6A2,2 0 0,0 21,4H3A2,2 0 0,0 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18Z"; -var mdiPanoramaFisheye = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2Z"; -var mdiPanoramaHorizontal = "M21.43,4C21.33,4 21.23,4 21.12,4.06C18.18,5.16 15.09,5.7 12,5.7C8.91,5.7 5.82,5.15 2.88,4.06C2.77,4 2.66,4 2.57,4C2.23,4 2,4.23 2,4.63V19.38C2,19.77 2.23,20 2.57,20C2.67,20 2.77,20 2.88,19.94C5.82,18.84 8.91,18.3 12,18.3C15.09,18.3 18.18,18.85 21.12,19.94C21.23,20 21.33,20 21.43,20C21.76,20 22,19.77 22,19.37V4.63C22,4.23 21.76,4 21.43,4M20,6.54V17.45C17.4,16.68 14.72,16.29 12,16.29C9.28,16.29 6.6,16.68 4,17.45V6.54C6.6,7.31 9.28,7.7 12,7.7C14.72,7.71 17.4,7.32 20,6.54Z"; -var mdiPanoramaVertical = "M6.54,20C7.31,17.4 7.7,14.72 7.7,12C7.7,9.28 7.31,6.6 6.54,4H17.45C16.68,6.6 16.29,9.28 16.29,12C16.29,14.72 16.68,17.4 17.45,20M19.94,21.12C18.84,18.18 18.3,15.09 18.3,12C18.3,8.91 18.85,5.82 19.94,2.88C20,2.77 20,2.66 20,2.57C20,2.23 19.77,2 19.37,2H4.63C4.23,2 4,2.23 4,2.57C4,2.67 4,2.77 4.06,2.88C5.16,5.82 5.71,8.91 5.71,12C5.71,15.09 5.16,18.18 4.07,21.12C4,21.23 4,21.34 4,21.43C4,21.76 4.23,22 4.63,22H19.38C19.77,22 20,21.76 20,21.43C20,21.33 20,21.23 19.94,21.12Z"; -var mdiPanoramaWideAngle = "M12,4C9.27,4 6.78,4.24 4.05,4.72L3.12,4.88L2.87,5.78C2.29,7.85 2,9.93 2,12C2,14.07 2.29,16.15 2.87,18.22L3.12,19.11L4.05,19.27C6.78,19.76 9.27,20 12,20C14.73,20 17.22,19.76 19.95,19.28L20.88,19.12L21.13,18.23C21.71,16.15 22,14.07 22,12C22,9.93 21.71,7.85 21.13,5.78L20.88,4.89L19.95,4.73C17.22,4.24 14.73,4 12,4M12,6C14.45,6 16.71,6.2 19.29,6.64C19.76,8.42 20,10.22 20,12C20,13.78 19.76,15.58 19.29,17.36C16.71,17.8 14.45,18 12,18C9.55,18 7.29,17.8 4.71,17.36C4.24,15.58 4,13.78 4,12C4,10.22 4.24,8.42 4.71,6.64C7.29,6.2 9.55,6 12,6Z"; -var mdiPaperCutVertical = "M11.43,3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H20A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8A2,2 0 0,1 4,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23M4,8V20H11A1,1 0 0,1 12,19A1,1 0 0,1 13,20H20V8H15L14.9,8L17,10.92L15.4,12.1L12.42,8H11.58L8.6,12.1L7,10.92L9.1,8H9L4,8M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M12,16A1,1 0 0,1 13,17A1,1 0 0,1 12,18A1,1 0 0,1 11,17A1,1 0 0,1 12,16M12,13A1,1 0 0,1 13,14A1,1 0 0,1 12,15A1,1 0 0,1 11,14A1,1 0 0,1 12,13M12,10A1,1 0 0,1 13,11A1,1 0 0,1 12,12A1,1 0 0,1 11,11A1,1 0 0,1 12,10Z"; -var mdiPaperRoll = "M9 3C5.69 3 3.14 5.69 3 9V21H12V13.46C13.1 14.45 14.5 15 16 15C19.31 15 22 12.31 22 9C22 5.69 19.31 3 16 3H9M16 5C18.21 5 20 6.79 20 9C20 11.21 18.21 13 16 13C13.79 13 12 11.21 12 9C12 6.79 13.79 5 16 5M16 7.25C15.03 7.25 14.25 8.03 14.25 9C14.25 9.97 15.03 10.75 16 10.75C16.97 10.75 17.75 9.97 17.75 9C17.75 8.03 16.97 7.25 16 7.25M4 12H5V13H4V12M6 12H7V13H6V12M8 12H9V13H8V12M10 12H11V13H10V12Z"; -var mdiPaperRollOutline = "M9 3C5.69 3 3.14 5.69 3 9V21H12V13.46C13.1 14.45 14.5 15 16 15C19.31 15 22 12.31 22 9C22 5.69 19.31 3 16 3H9M9 5H11.54C10.55 6.1 10 7.5 10 9V12H9V13H10V19H5V13H6V12H5V9C5 6.79 6.79 5 9 5M16 5C18.21 5 20 6.79 20 9C20 11.21 18.21 13 16 13C13.79 13 12 11.21 12 9C12 6.79 13.79 5 16 5M16 7.25C15.03 7.25 14.25 8.03 14.25 9C14.25 9.97 15.03 10.75 16 10.75C16.97 10.75 17.75 9.97 17.75 9C17.75 8.03 16.97 7.25 16 7.25M7 12V13H8V12H7Z"; -var mdiPaperclip = "M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z"; -var mdiParachute = "M21.2,10.95L12,23L2.78,10.96L2.87,10.88C3.08,10.67 3.33,10.5 3.58,10.36L10.73,19.69L8.58,13L9.24,11.81L12,20.38L14.73,11.8L15.4,13L13.27,19.69L20.41,10.35C20.66,10.5 20.9,10.64 21.1,10.85L21.2,10.95M5,9C6.5,9 7.81,9.86 8.5,11.1C9.17,9.86 10.47,9 12,9C13.5,9 14.8,9.85 15.5,11.09C16.16,9.84 17.47,9 19,9C20.09,9 21.09,9.42 21.81,10.14C20.94,5.5 16.88,2 12,2C7.09,2 3.03,5.5 2.16,10.17C2.89,9.45 3.89,9 5,9Z"; -var mdiParachuteOutline = "M21.2,10.95L12,23L2.78,10.96L2.87,10.88C3.08,10.67 3.33,10.5 3.58,10.36L10.73,19.69L8.58,13L9.24,11.81L12,20.38L14.73,11.8L15.4,13L13.27,19.69L20.41,10.35C20.66,10.5 20.9,10.64 21.1,10.85L21.2,10.95M12,4C14.5,4 16.77,5.17 18.25,7.03C17.24,7.15 16.28,7.54 15.47,8.13C14.47,7.41 13.26,7 12,7C10.71,7 9.5,7.41 8.5,8.14C7.68,7.55 6.72,7.17 5.71,7.04C7.19,5.17 9.47,4 12,4M12,2C7.09,2 3.03,5.5 2.16,10.17C2.89,9.45 3.89,9 5,9C6.5,9 7.81,9.86 8.5,11.1C9.17,9.86 10.47,9 12,9C13.5,9 14.8,9.85 15.5,11.09C16.16,9.84 17.47,9 19,9C20.09,9 21.09,9.42 21.81,10.14C20.94,5.5 16.88,2 12,2Z"; -var mdiParking = "M13.2,11H10V7H13.2A2,2 0 0,1 15.2,9A2,2 0 0,1 13.2,11M13,3H6V21H10V15H13A6,6 0 0,0 19,9C19,5.68 16.31,3 13,3Z"; -var mdiPartyPopper = "M14.53 1.45L13.45 2.53L15.05 4.13C15.27 4.38 15.38 4.67 15.38 5S15.27 5.64 15.05 5.86L11.5 9.47L12.5 10.55L16.13 6.94C16.66 6.35 16.92 5.7 16.92 5C16.92 4.3 16.66 3.64 16.13 3.05L14.53 1.45M10.55 3.47L9.47 4.55L10.08 5.11C10.3 5.33 10.41 5.63 10.41 6S10.3 6.67 10.08 6.89L9.47 7.45L10.55 8.53L11.11 7.92C11.64 7.33 11.91 6.69 11.91 6C11.91 5.28 11.64 4.63 11.11 4.03L10.55 3.47M21 5.06C20.31 5.06 19.67 5.33 19.08 5.86L13.45 11.5L14.53 12.5L20.11 6.94C20.36 6.69 20.66 6.56 21 6.56S21.64 6.69 21.89 6.94L22.5 7.55L23.53 6.47L22.97 5.86C22.38 5.33 21.72 5.06 21 5.06M7 8L2 22L16 17L7 8M19 11.06C18.3 11.06 17.66 11.33 17.06 11.86L15.47 13.45L16.55 14.53L18.14 12.94C18.39 12.69 18.67 12.56 19 12.56C19.33 12.56 19.63 12.69 19.88 12.94L21.5 14.53L22.55 13.5L20.95 11.86C20.36 11.33 19.7 11.06 19 11.06Z"; -var mdiPassport = "M6,2A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2H6M12,5A5,5 0 0,1 17,10A5,5 0 0,1 12,15A5,5 0 0,1 7,10A5,5 0 0,1 12,5M12,6C11.59,6.62 11.25,7.29 11.04,8H12.96C12.75,7.29 12.42,6.62 12,6M10.7,6.22C9.78,6.53 9,7.17 8.54,8H10C10.18,7.38 10.4,6.78 10.7,6.22M13.29,6.22C13.59,6.78 13.82,7.38 14,8H15.46C15,7.17 14.21,6.54 13.29,6.22M8.13,9C8.05,9.32 8,9.65 8,10C8,10.35 8.05,10.68 8.13,11H9.82C9.78,10.67 9.75,10.34 9.75,10C9.75,9.66 9.78,9.33 9.82,9H8.13M10.83,9C10.78,9.32 10.75,9.66 10.75,10C10.75,10.34 10.78,10.67 10.83,11H13.17C13.21,10.67 13.25,10.34 13.25,10C13.25,9.66 13.21,9.32 13.17,9H10.83M14.18,9C14.22,9.33 14.25,9.66 14.25,10C14.25,10.34 14.22,10.67 14.18,11H15.87C15.95,10.68 16,10.35 16,10C16,9.65 15.95,9.32 15.87,9H14.18M8.54,12C9,12.83 9.78,13.46 10.7,13.78C10.4,13.22 10.18,12.63 10,12H8.54M11.04,12C11.25,12.72 11.59,13.38 12,14C12.42,13.38 12.75,12.72 12.96,12H11.04M14,12C13.82,12.63 13.59,13.22 13.29,13.78C14.21,13.46 15,12.83 15.46,12H14M7,17H17V19H7V17Z"; -var mdiPassportBiometric = "M4,4A2,2 0 0,0 2,6V11H8.13C8.59,9.24 10.18,8 12,8C13.82,8 15.41,9.24 15.87,11H22V6A2,2 0 0,0 20,4H4M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M2,13V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V13H15.87C15.41,14.76 13.82,16 12,16C10.18,16 8.59,14.76 8.13,13H2Z"; -var mdiPasta = "M4 16.5V8H3V7H4V6H3V5H4V4H3V3H9C9.5 3.03 9.95 3.24 10.34 3.63S10.95 4.5 11 5H21V6H11C10.95 6.53 10.73 7 10.34 7.43S9.5 8.05 9 8H7V15.05C7.05 15.05 7.13 15.04 7.24 15S7.44 15 7.5 15C8.06 15 8.7 15.14 9.42 15.42C9.83 14.5 10.53 13.68 11.53 13S13.53 12 14.53 12C16.06 12 17.36 12.53 18.42 13.59S20 15.95 20 17.5C20 17.55 20 17.64 20 17.77S19.97 17.97 19.97 18H3.14C3.27 17.5 3.55 17 4 16.5M6 15.23V8H5V15.7C5.5 15.45 5.81 15.3 6 15.23M9 7V6H7V7H9M9 4H7V5H9V4M5 4V5H6V4H5M5 6V7H6V6H5M2 19H22L20 21H4L2 19Z"; -var mdiPatioHeater = "M15 22H9V21H15V22M19 4L15 2H9L5 4H19M8 5L8.4 6H15.6L16 5H8M10 10H11V15C10.4 15 10 15.4 10 16V20H14V16C14 15.4 13.6 15 13 15V10H14L14.4 9H9.6L10 10M9.2 8H14.8L15.2 7H8.8L9.2 8Z"; -var mdiPatreon = "M14.82 2.41C18.78 2.41 22 5.65 22 9.62C22 13.58 18.78 16.8 14.82 16.8C10.85 16.8 7.61 13.58 7.61 9.62C7.61 5.65 10.85 2.41 14.82 2.41M2 21.6H5.5V2.41H2V21.6Z"; -var mdiPause = "M14,19H18V5H14M6,19H10V5H6V19Z"; -var mdiPauseCircle = "M15,16H13V8H15M11,16H9V8H11M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiPauseCircleOutline = "M13,16V8H15V16H13M9,16V8H11V16H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiPauseOctagon = "M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M15,16V8H13V16H15M11,16V8H9V16H11Z"; -var mdiPauseOctagonOutline = "M15,16H13V8H15V16M11,16H9V8H11V16M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M14.9,5H9.1L5,9.1V14.9L9.1,19H14.9L19,14.9V9.1L14.9,5Z"; -var mdiPaw = "M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.5,7.67 10.85,9.25 9.67,9.43C8.5,9.61 7.24,8.32 6.87,6.54C6.5,4.77 7.17,3.19 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6M19.33,18.38C19.37,19.32 18.65,20.36 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.88,13.09 9.88,10.44 11.89,10.44C13.89,10.44 14.95,13.05 16.3,14.5C17.41,15.72 19.26,16.75 19.33,18.38Z"; -var mdiPawOff = "M2,4.27L3.28,3L21.5,21.22L20.23,22.5L18.23,20.5C18.09,20.6 17.94,20.68 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.21,13.77 8.84,12.69 9.55,11.82L2,4.27M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.32,6.75 11.26,7.56 11,8.19L7.03,4.2C7.29,3.55 7.75,3.1 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6Z"; -var mdiPawOffOutline = "M22.83 8.25C22.56 7.5 22.05 6.96 21.39 6.68C20.22 6.18 18.8 6.6 17.7 7.66C17.81 7.37 17.91 7.06 18 6.73C18.25 5.38 18 4.03 17.38 3.12C16.95 2.5 16.33 2.11 15.64 2C14.1 1.78 12.57 3.08 11.93 5C11.28 3.05 9.74 1.76 8.19 2C7.5 2.12 6.88 2.53 6.45 3.16C6.44 3.18 6.43 3.2 6.42 3.22L7.91 4.71C7.96 4.54 8 4.4 8.1 4.29C8.22 4.12 8.36 4 8.5 4C9 3.91 9.88 4.69 10.16 6.1C10.23 6.44 10.24 6.75 10.22 7L11.88 8.68C11.89 8.65 11.91 8.62 11.93 8.58C11.97 8.69 12.04 8.78 12.09 8.89L13.43 10.23C13.63 10.32 13.83 10.39 14.04 10.42C14.16 10.44 14.29 10.45 14.41 10.45C15.13 10.45 15.83 10.12 16.43 9.57C16 10.64 15.96 11.73 16.29 12.63C16.56 13.35 17.07 13.91 17.73 14.2C18.07 14.34 18.43 14.41 18.8 14.41C20.18 14.41 21.66 13.4 22.5 11.77C23.08 10.58 23.21 9.3 22.83 8.25M16 6.33C15.72 7.73 14.83 8.5 14.34 8.44C14.28 8.43 14.12 8.41 13.94 8.15C13.69 7.79 13.5 7.07 13.7 6.1C13.97 4.76 14.8 4 15.29 4C15.31 4 15.34 4 15.36 4C15.5 4 15.63 4.11 15.75 4.27C16.07 4.73 16.18 5.54 16 6.33M20.7 10.87C20.12 12 19.08 12.6 18.53 12.36C18.47 12.34 18.28 12.26 18.16 11.93C18 11.43 18.07 10.68 18.39 10C18.9 9.04 19.74 8.47 20.33 8.47C20.43 8.47 20.5 8.5 20.6 8.5H20.6C20.75 8.58 20.87 8.72 20.95 8.94C21.09 9.34 21.1 10.06 20.7 10.87M1.11 3L4.8 6.69C4.06 6.41 3.29 6.39 2.6 6.68C1.94 6.97 1.43 7.53 1.17 8.27C.793 9.31 .919 10.58 1.5 11.77C2.34 13.4 3.82 14.41 5.21 14.41C5.57 14.41 5.93 14.34 6.27 14.2C6.93 13.91 7.44 13.35 7.71 12.63C8 11.79 8 10.77 7.64 9.76C7.83 9.91 8.04 10.03 8.24 10.13L9.73 11.62C8.94 12.5 8.27 13.7 7.47 14.5C6.41 15.59 4.62 16.39 4.44 17.88C4.31 18.96 5 20.26 6 20.75C6.35 20.93 6.72 21 7.1 21C8.61 21 10.3 19.87 11.89 19.87C13.5 19.87 15.18 20.97 16.71 20.97C17.08 20.97 17.44 20.91 17.79 20.75C18 20.65 18.23 20.5 18.43 20.32L20.84 22.73L22.11 21.46L2.39 1.73L1.11 3M11.15 13.04L17 18.9C17 18.91 16.97 18.92 16.96 18.93C16.92 18.95 16.85 18.97 16.71 18.97C16.28 18.97 15.63 18.75 15 18.54C14.08 18.23 13.03 17.87 11.89 17.87C10.75 17.87 9.7 18.24 8.78 18.56C8.15 18.77 7.5 19 7.1 19C6.97 19 6.92 19 6.88 18.95C6.66 18.84 6.4 18.37 6.43 18.12C6.5 17.89 7.23 17.31 7.59 17C8.03 16.68 8.5 16.33 8.89 15.91C9.44 15.36 9.89 14.73 10.33 14.12C10.55 13.8 10.86 13.38 11.15 13.04M5.6 10C5.93 10.68 6 11.43 5.84 11.93C5.71 12.26 5.53 12.34 5.47 12.36C4.92 12.6 3.88 12 3.3 10.87C2.9 10.06 2.91 9.35 3.05 8.94C3.13 8.73 3.25 8.58 3.4 8.5C3.5 8.5 3.57 8.46 3.68 8.46C4.26 8.46 5.1 9.03 5.6 10Z"; -var mdiPawOutline = "M22.83 8.25C22.56 7.5 22.05 6.96 21.4 6.68C20.23 6.18 18.81 6.6 17.7 7.66C17.81 7.37 17.91 7.06 18 6.73C18.25 5.38 18.03 4.03 17.38 3.12C16.95 2.5 16.33 2.11 15.64 2C14.1 1.78 12.57 3.08 11.93 5C11.29 3.05 9.74 1.76 8.19 2C7.5 2.12 6.88 2.53 6.45 3.16C5.81 4.09 5.61 5.39 5.89 6.74C5.94 7 6 7.24 6.09 7.47C5 6.56 3.7 6.2 2.6 6.68C1.94 6.97 1.44 7.53 1.17 8.27C.794 9.31 .92 10.58 1.5 11.77C2.34 13.4 3.82 14.41 5.21 14.41C5.57 14.41 5.93 14.34 6.27 14.2C6.93 13.91 7.44 13.35 7.71 12.63C8.03 11.79 8 10.77 7.64 9.76C8.19 10.19 8.81 10.45 9.45 10.45C9.57 10.45 9.7 10.44 9.82 10.42C10.5 10.32 11.12 9.92 11.55 9.3C11.7 9.08 11.83 8.84 11.93 8.58C12.03 8.84 12.15 9.08 12.3 9.29C12.73 9.91 13.35 10.31 14.04 10.42C14.16 10.44 14.29 10.45 14.41 10.45C15.13 10.45 15.83 10.12 16.43 9.57C16 10.64 15.96 11.73 16.29 12.63C16.56 13.36 17.07 13.91 17.73 14.2C18.07 14.34 18.43 14.41 18.8 14.41C20.18 14.41 21.66 13.4 22.5 11.77C23.08 10.58 23.21 9.3 22.83 8.25M5.84 11.93C5.72 12.26 5.53 12.34 5.47 12.36C4.92 12.6 3.88 12 3.3 10.87C2.9 10.06 2.91 9.35 3.05 8.94C3.13 8.73 3.25 8.58 3.4 8.5C3.5 8.5 3.58 8.46 3.68 8.46C4.26 8.46 5.1 9.03 5.6 10C5.93 10.68 6.03 11.43 5.84 11.93M9.91 8.16C9.79 8.32 9.66 8.42 9.5 8.44C9 8.5 8.14 7.73 7.85 6.34C7.65 5.38 7.85 4.66 8.1 4.29C8.22 4.12 8.36 4 8.5 4C9 3.91 9.88 4.69 10.16 6.1C10.36 7.07 10.16 7.8 9.91 8.16M16 6.33C15.72 7.73 14.83 8.5 14.34 8.44C14.28 8.43 14.12 8.41 13.94 8.15C13.69 7.79 13.5 7.07 13.7 6.1C13.97 4.76 14.8 4 15.29 4C15.32 4 15.34 4 15.36 4C15.5 4 15.63 4.11 15.75 4.27C16.07 4.73 16.18 5.54 16 6.33M20.7 10.87C20.12 12 19.08 12.6 18.53 12.36C18.47 12.34 18.28 12.26 18.16 11.93C18 11.43 18.07 10.68 18.39 10C18.9 9.04 19.75 8.47 20.33 8.47C20.43 8.47 20.5 8.5 20.6 8.5H20.61C20.76 8.58 20.87 8.72 20.95 8.94C21.1 9.34 21.11 10.06 20.7 10.87M16.3 14.5C14.95 13.05 13.89 10.44 11.89 10.44C9.88 10.44 8.88 13.09 7.47 14.5C6.41 15.59 4.62 16.39 4.44 17.88C4.31 18.96 5 20.26 6 20.75C6.35 20.93 6.72 21 7.1 21C8.61 21 10.3 19.87 11.89 19.87C13.5 19.87 15.18 20.97 16.71 20.97C17.08 20.97 17.44 20.91 17.79 20.75C18.65 20.36 19.37 19.32 19.33 18.38C19.26 16.75 17.41 15.72 16.3 14.5M16.96 18.93C16.92 18.95 16.85 18.97 16.71 18.97C16.29 18.97 15.63 18.75 15 18.54C14.08 18.23 13.03 17.87 11.89 17.87C10.75 17.87 9.7 18.24 8.78 18.56C8.15 18.77 7.5 19 7.1 19C6.97 19 6.92 19 6.88 18.95C6.66 18.84 6.4 18.37 6.43 18.12C6.5 17.89 7.23 17.31 7.59 17C8.03 16.68 8.5 16.33 8.89 15.91C9.44 15.36 9.89 14.73 10.33 14.12C10.78 13.5 11.53 12.44 11.89 12.44C12.29 12.44 13.08 13.56 13.56 14.22C13.95 14.78 14.36 15.35 14.82 15.85C15.21 16.27 15.62 16.64 16 17C16.54 17.45 17.32 18.14 17.33 18.44C17.32 18.58 17.12 18.86 16.96 18.93Z"; -var mdiPdfBox = "M12,10.5H13V13.5H12V10.5M7,11.5H8V10.5H7V11.5M20,6V18A2,2 0 0,1 18,20H6A2,2 0 0,1 4,18V6A2,2 0 0,1 6,4H18A2,2 0 0,1 20,6M9.5,10.5A1.5,1.5 0 0,0 8,9H5.5V15H7V13H8A1.5,1.5 0 0,0 9.5,11.5V10.5M14.5,10.5A1.5,1.5 0 0,0 13,9H10.5V15H13A1.5,1.5 0 0,0 14.5,13.5V10.5M18.5,9H15.5V15H17V13H18.5V11.5H17V10.5H18.5V9Z"; -var mdiPeace = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,14.41V19.93C9.58,19.75 8.23,19.19 7.1,18.31L11,14.41M13,14.41L16.9,18.31C15.77,19.19 14.42,19.75 13,19.93V14.41M4,12C4,7.97 7,4.57 11,4.07V11.59L5.69,16.9C4.59,15.5 4,13.78 4,12M18.31,16.9L13,11.59V4.07C17,4.57 20,7.97 20,12C20,13.78 19.41,15.5 18.31,16.9Z"; -var mdiPeanut = "M16 12.77A2 2 0 0 1 15.86 10.12A5 5 0 0 0 13.04 2.12A5.74 5.74 0 0 0 12 2A5 5 0 0 0 7 7A5 5 0 0 0 8.11 10.12A2 2 0 0 1 8 12.72A5.5 5.5 0 0 0 10.81 21.87A5.42 5.42 0 0 0 12 22A5.5 5.5 0 0 0 16 12.77M13 5A1 1 0 1 1 12 6A1 1 0 0 1 13 5M11 18A1 1 0 1 1 12 17A1 1 0 0 1 11 18M12 15A1 1 0 1 1 13 16A1 1 0 0 1 12 15M14 19A1 1 0 1 1 15 18A1 1 0 0 1 14 19Z"; -var mdiPeanutOff = "M15.9 10.12A5 5 0 0 0 13.08 2.12A5.74 5.74 0 0 0 12 2A5 5 0 0 0 7.68 4.5L16.38 13.18A4.35 4.35 0 0 0 16.04 12.77A2 2 0 0 1 15.9 10.12M13 7A1 1 0 1 1 14 6A1 1 0 0 1 13 7M7 6.39L2.39 1.73L1.11 3L7.8 9.69C7.9 9.84 8 10 8.11 10.12A2 2 0 0 1 8 12.72A5.5 5.5 0 0 0 10.81 21.87A5.42 5.42 0 0 0 12 22A5.5 5.5 0 0 0 17 18.86L20.87 22.73L22.14 21.46M11 18A1 1 0 1 1 12 17A1 1 0 0 1 11 18M14 19A1 1 0 1 1 15 18A1 1 0 0 1 14 19M13 16A1 1 0 0 1 12 15A1 1 0 0 1 12.35 14.24L13.76 15.65A1 1 0 0 1 13 16Z"; -var mdiPeanutOffOutline = "M22.11 21.46L20.84 22.73L17.69 19.58C17.36 20.21 16.93 20.77 16.41 21.25C14.86 22.71 12.69 23.31 10.61 22.85C7.1 22.1 4.87 18.64 5.62 15.13C5.87 13.95 6.45 12.87 7.28 12C7.62 11.64 7.62 11.08 7.28 10.72C6.63 9.91 6.21 8.95 6.04 7.93L1.11 3L2.39 1.73L22.11 21.46M15.3 19.56C15.69 19.13 16 18.63 16.19 18.08L13.75 15.64C13.57 15.87 13.29 16 13 16C12.45 16 12 15.55 12 15C12 14.71 12.13 14.43 12.36 14.25L9.55 11.44C9.53 12.18 9.24 12.88 8.73 13.41C7.03 15.22 7.13 18.07 8.94 19.77L8.95 19.78C10.76 21.47 13.61 21.37 15.3 19.56M14 17C12.71 17 12.72 19 14 19C15.28 19 15.29 17 14 17M6.9 3.7L8.43 5.23C8.68 4.71 9.05 4.25 9.5 3.89C10.2 3.31 11.09 3 12 3H12.88C13.47 3.14 14 3.41 14.5 3.79C16.22 5.17 16.5 7.69 15.12 9.41C14.7 9.93 14.46 10.58 14.45 11.25L18.32 15.12C18.07 13.97 17.5 12.92 16.72 12.06C16.37 11.7 16.33 11.13 16.62 10.72C16.62 10.72 18 9 18 7S15.97.997 12 .997 6.9 3.7 6.9 3.7M12 17C12 15.71 10 15.72 10 17C10 18.28 12 18.29 12 17M13 5C11.71 5 11.72 7 13 7C14.28 7 14.29 5 13 5Z"; -var mdiPeanutOutline = "M12 23C11.53 23 11.07 22.95 10.61 22.85C7.1 22.1 4.87 18.64 5.62 15.13C5.87 13.95 6.45 12.87 7.28 12C7.62 11.64 7.62 11.08 7.28 10.72C5.2 8.14 5.6 4.36 8.18 2.28S14.54.607 16.62 3.19C18.39 5.38 18.39 8.5 16.62 10.72C16.33 11.13 16.37 11.7 16.72 12.06C19.17 14.68 19.04 18.8 16.41 21.25C15.22 22.37 13.64 23 12 23M12 3C11.09 3 10.2 3.31 9.5 3.89C8.55 4.65 8 5.79 8 7C8 7.91 8.31 8.79 8.88 9.5C9.84 10.64 9.77 12.33 8.73 13.41C7.03 15.22 7.13 18.07 8.94 19.77S13.6 21.38 15.3 19.56C16.92 17.83 16.92 15.14 15.3 13.41C14.23 12.32 14.15 10.6 15.12 9.41C16.5 7.69 16.22 5.17 14.5 3.79C14 3.41 13.47 3.14 12.88 3C12.59 3 12.29 3 12 3M12 6C12 6.55 12.45 7 13 7S14 6.55 14 6 13.55 5 13 5 12 5.45 12 6M14 19C14.55 19 15 18.55 15 18S14.55 17 14 17 13 17.45 13 18 13.45 19 14 19M13 16C13.55 16 14 15.55 14 15S13.55 14 13 14 12 14.45 12 15 12.45 16 13 16M11 18C11.55 18 12 17.55 12 17S11.55 16 11 16 10 16.45 10 17 10.45 18 11 18Z"; -var mdiPen = "M20.71,7.04C20.37,7.38 20.04,7.71 20.03,8.04C20,8.36 20.34,8.69 20.66,9C21.14,9.5 21.61,9.95 21.59,10.44C21.57,10.93 21.06,11.44 20.55,11.94L16.42,16.08L15,14.66L19.25,10.42L18.29,9.46L16.87,10.87L13.12,7.12L16.96,3.29C17.35,2.9 18,2.9 18.37,3.29L20.71,5.63C21.1,6 21.1,6.65 20.71,7.04M3,17.25L12.56,7.68L16.31,11.43L6.75,21H3V17.25Z"; -var mdiPenLock = "M21.7,7C21.4,7.4 21,7.7 21,8C21,8.3 21.3,8.6 21.6,9C22.1,9.5 22.6,9.9 22.5,10.4C22.5,10.9 22,11.4 21.5,11.9L17.4,16L16,14.7L20.2,10.5L19.2,9.5L17.8,10.9L14,7.1L18,3.3C18.4,2.9 19,2.9 19.4,3.3L21.7,5.6C22.1,6 22.1,6.7 21.7,7M4,17.2L13.6,7.6L17.3,11.4L7.8,21H4V17.2M8,5V4.5C8,3.1 6.9,2 5.5,2C4.1,2 3,3.1 3,4.5V5C2.4,5 2,5.4 2,6V10C2,10.6 2.4,11 3,11H8C8.6,11 9,10.6 9,10V6C9,5.4 8.6,5 8,5M7,5H4V4.5C4,3.7 4.7,3 5.5,3C6.3,3 7,3.7 7,4.5V5Z"; -var mdiPenMinus = "M20.7,7C20.4,7.4 20,7.7 20,8C20,8.3 20.3,8.6 20.6,9C21.1,9.5 21.6,9.9 21.5,10.4C21.5,10.9 21,11.4 20.5,11.9L16.4,16L15,14.7L19.2,10.5L18.2,9.5L16.8,10.9L13,7.1L17,3.3C17.4,2.9 18,2.9 18.4,3.3L20.7,5.6C21.1,6 21.1,6.7 20.7,7M3,17.2L12.6,7.6L16.3,11.4L6.8,21H3V17.2M10,5V7H2V5H10Z"; -var mdiPenOff = "M2.3,5L1,6.3L7.5,12.8L3,17.2V21H6.8L11.3,16.5L17.8,23L19.1,21.7L2.3,5M16.9,10.9L13.1,7.1L17,3.3C17.4,2.9 18,2.9 18.4,3.3L20.7,5.6C21.1,6 21.1,6.6 20.7,7C20.4,7.4 20,7.7 20,8C20,8.3 20.3,8.7 20.6,9C21.1,9.5 21.6,10 21.5,10.4C21.5,10.9 21,11.4 20.5,11.9L16.4,16L15,14.7L19.2,10.5L18.2,9.5L16.9,10.9M10,10.2L12.5,7.7L16.3,11.5L13.8,14L10,10.2Z"; -var mdiPenPlus = "M20.7,7C20.4,7.4 20,7.7 20,8C20,8.3 20.3,8.6 20.6,9C21.1,9.5 21.6,9.9 21.5,10.4C21.5,10.9 21,11.4 20.5,11.9L16.4,16L15,14.7L19.2,10.5L18.2,9.5L16.8,10.9L13,7.1L17,3.3C17.4,2.9 18,2.9 18.4,3.3L20.7,5.6C21.1,6 21.1,6.7 20.7,7M3,17.2L12.6,7.6L16.3,11.4L6.8,21H3V17.2M7,2V5H10V7H7V10H5V7H2V5H5V2H7Z"; -var mdiPenRemove = "M20.7,7C20.4,7.4 20,7.7 20,8C20,8.3 20.3,8.6 20.6,9C21.1,9.5 21.6,9.9 21.5,10.4C21.5,10.9 21,11.4 20.5,11.9L16.4,16L15,14.7L19.2,10.5L18.2,9.5L16.8,10.9L13,7.1L17,3.3C17.4,2.9 18,2.9 18.4,3.3L20.7,5.6C21.1,6 21.1,6.7 20.7,7M3,17.2L12.6,7.6L16.3,11.4L6.8,21H3V17.2M3.88,2.46L6,4.59L8.12,2.46L9.54,3.88L7.41,6L9.54,8.12L8.12,9.54L6,7.41L3.88,9.54L2.46,8.12L4.59,6L2.46,3.88L3.88,2.46Z"; -var mdiPencil = "M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"; -var mdiPencilBox = "M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35C16.92,9.14 16.92,8.79 16.7,8.58L15.42,7.3C15.21,7.08 14.86,7.08 14.65,7.3L13.65,8.3L15.7,10.35L16.7,9.35M7,14.94V17H9.06L15.12,10.94L13.06,8.88L7,14.94Z"; -var mdiPencilBoxMultiple = "M20.22 2H7.78C6.8 2 6 2.8 6 3.78V16.22C6 17.2 6.8 18 7.78 18H20.22C21.2 18 22 17.21 22 16.22V3.78C22 2.8 21.2 2 20.22 2M11.06 15H9V12.94L15.06 6.88L17.12 8.94L11.06 15M18.7 7.35L17.7 8.35L15.65 6.3L16.65 5.3C16.86 5.08 17.21 5.08 17.42 5.3L18.7 6.58C18.92 6.79 18.92 7.14 18.7 7.35M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6Z"; -var mdiPencilBoxMultipleOutline = "M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6M18.7 7.35L17.7 8.35L15.65 6.3L16.65 5.3C16.86 5.08 17.21 5.08 17.42 5.3L18.7 6.58C18.92 6.79 18.92 7.14 18.7 7.35M9 12.94L15.06 6.88L17.12 8.94L11.06 15H9V12.94M20 4L20 4L20 16L8 16L8 4H20M20 2H8C6.9 2 6 2.9 6 4V16C6 17.1 6.9 18 8 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2Z"; -var mdiPencilBoxOutline = "M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35L15.7,10.35L13.65,8.3L14.65,7.3C14.86,7.08 15.21,7.08 15.42,7.3L16.7,8.58C16.92,8.79 16.92,9.14 16.7,9.35M7,14.94L13.06,8.88L15.12,10.94L9.06,17H7V14.94Z"; -var mdiPencilCircle = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M15.1,7.07C15.24,7.07 15.38,7.12 15.5,7.23L16.77,8.5C17,8.72 17,9.07 16.77,9.28L15.77,10.28L13.72,8.23L14.72,7.23C14.82,7.12 14.96,7.07 15.1,7.07M13.13,8.81L15.19,10.87L9.13,16.93H7.07V14.87L13.13,8.81Z"; -var mdiPencilCircleOutline = "M7,14.94L13.06,8.88L15.12,10.94L9.06,17H7V14.94M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M16.7,9.35L15.7,10.35L13.65,8.3L14.65,7.3C14.86,7.08 15.21,7.08 15.42,7.3L16.7,8.58C16.92,8.79 16.92,9.14 16.7,9.35M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2"; -var mdiPencilLock = "M5.5,2A2.5,2.5 0 0,0 3,4.5V5A1,1 0 0,0 2,6V10A1,1 0 0,0 3,11H8A1,1 0 0,0 9,10V6A1,1 0 0,0 8,5V4.5A2.5,2.5 0 0,0 5.5,2M5.5,3A1.5,1.5 0 0,1 7,4.5V5H4V4.5A1.5,1.5 0 0,1 5.5,3M19.66,3C19.4,3 19.16,3.09 18.97,3.28L17.13,5.13L20.88,8.88L22.72,7.03C23.11,6.64 23.11,6 22.72,5.63L20.38,3.28C20.18,3.09 19.91,3 19.66,3M16.06,6.19L5,17.25V21H8.75L19.81,9.94L16.06,6.19Z"; -var mdiPencilLockOutline = "M16.1,9L17,9.9L7.9,19H7V18.1L16.1,9M19.7,3C19.5,3 19.2,3.1 19,3.3L17.2,5.1L20.9,8.9L22.7,7C23.1,6.6 23.1,6 22.7,5.6L20.4,3.3C20.2,3.1 19.9,3 19.7,3M16.1,6.2L5,17.2V21H8.8L19.8,9.9L16.1,6.2M8,5V4.5C8,3.1 6.9,2 5.5,2C4.1,2 3,3.1 3,4.5V5C2.4,5 2,5.4 2,6V10C2,10.6 2.4,11 3,11H8C8.6,11 9,10.6 9,10V6C9,5.4 8.6,5 8,5M7,5H4V4.5C4,3.7 4.7,3 5.5,3C6.3,3 7,3.7 7,4.5V5Z"; -var mdiPencilMinus = "M20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18,2.9 17.4,2.9 17,3.3L15.2,5.1L19,8.9M3,17.2V21H6.8L17.8,9.9L14.1,6.1L3,17.2M10,5V7H2V5H10Z"; -var mdiPencilMinusOutline = "M14.1,9L15,9.9L5.9,19H5V18.1L14.1,9M17.7,3C17.5,3 17.2,3.1 17,3.3L15.2,5.1L18.9,8.9L20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18.2,3.1 17.9,3 17.7,3M14.1,6.2L3,17.2V21H6.8L17.8,9.9L14.1,6.2M10,5V7H2V5H10Z"; -var mdiPencilOff = "M18.66,2C18.4,2 18.16,2.09 17.97,2.28L16.13,4.13L19.88,7.88L21.72,6.03C22.11,5.64 22.11,5 21.72,4.63L19.38,2.28C19.18,2.09 18.91,2 18.66,2M3.28,4L2,5.28L8.5,11.75L4,16.25V20H7.75L12.25,15.5L18.72,22L20,20.72L13.5,14.25L9.75,10.5L3.28,4M15.06,5.19L11.03,9.22L14.78,12.97L18.81,8.94L15.06,5.19Z"; -var mdiPencilOffOutline = "M10,10.2L14,6.2L17.8,10L13.8,14L12.4,12.6L15,9.9L14.1,9L11.5,11.6L10,10.2M20.7,5.6L18.4,3.3C18.2,3.1 17.9,3 17.7,3C17.5,3 17.2,3.1 17,3.3L15.2,5.1L19,8.9L20.7,7C21.1,6.7 21.1,6 20.7,5.6M19,21.7L17.7,23L11.2,16.5L6.8,21H3V17.2L7.5,12.7L1,6.3L2.3,5L19,21.7M9.8,15.1L8.9,14.2L5,18.1V19H5.9L9.8,15.1Z"; -var mdiPencilOutline = "M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z"; -var mdiPencilPlus = "M20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18,2.9 17.4,2.9 17,3.3L15.2,5.1L19,8.9M3,17.2V21H6.8L17.8,9.9L14.1,6.1L3,17.2M7,2V5H10V7H7V10H5V7H2V5H5V2H7Z"; -var mdiPencilPlusOutline = "M14.1,9L15,9.9L5.9,19H5V18.1L14.1,9M17.7,3C17.5,3 17.2,3.1 17,3.3L15.2,5.1L18.9,8.9L20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18.2,3.1 17.9,3 17.7,3M14.1,6.2L3,17.2V21H6.8L17.8,9.9L14.1,6.2M7,2V5H10V7H7V10H5V7H2V5H5V2H7Z"; -var mdiPencilRemove = "M20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18,2.9 17.4,2.9 17,3.3L15.2,5.1L19,8.9M3,17.2V21H6.8L17.8,9.9L14.1,6.1L3,17.2M3.9,2.4L6,4.5L8.1,2.4L9.5,3.8L7.4,5.9L9.5,8L8.1,9.5L6,7.4L3.9,9.5L2.5,8.1L4.6,6L2.5,3.8L3.9,2.4Z"; -var mdiPencilRemoveOutline = "M17.7,3C17.5,3 17.2,3.1 17,3.3L15.2,5.1L18.9,8.9L20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18.2,3.1 17.9,3 17.7,3M14.1,6.2L3,17.2V21H6.8L17.8,9.9L14.1,6.2M5.9,19H5V18.1L14.1,9L15,9.9L5.9,19M3.9,2.5L6,4.6L8.1,2.5L9.5,3.9L7.4,6L9.5,8.1L8.1,9.5L6,7.4L3.9,9.5L2.5,8.1L4.6,6L2.5,3.9L3.9,2.5Z"; -var mdiPencilRuler = "M3 17.25V21H6.75L17.81 9.93L14.06 6.18L3 17.25M22.61 18.36L18.36 22.61L13.16 17.41L14.93 15.64L15.93 16.64L18.4 14.16L19.82 15.58L18.36 17L19.42 18L20.84 16.6L22.61 18.36M6.61 10.83L1.39 5.64L5.64 1.39L7.4 3.16L4.93 5.64L6 6.7L8.46 4.22L9.88 5.64L8.46 7.05L9.46 8.05L6.61 10.83M20.71 7C21.1 6.61 21.1 6 20.71 5.59L18.37 3.29C18 2.9 17.35 2.9 16.96 3.29L15.12 5.12L18.87 8.87L20.71 7Z"; -var mdiPenguin = "M19,16C19,17.72 18.37,19.3 17.34,20.5C17.75,20.89 18,21.41 18,22H6C6,21.41 6.25,20.89 6.66,20.5C5.63,19.3 5,17.72 5,16H3C3,14.75 3.57,13.64 4.46,12.91L4.47,12.89C6,11.81 7,10 7,8V7A5,5 0 0,1 12,2A5,5 0 0,1 17,7V8C17,10 18,11.81 19.53,12.89L19.54,12.91C20.43,13.64 21,14.75 21,16H19M16,16A4,4 0 0,0 12,12A4,4 0 0,0 8,16A4,4 0 0,0 12,20A4,4 0 0,0 16,16M10,9L12,10.5L14,9L12,7.5L10,9M10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5M14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5Z"; -var mdiPentagon = "M12,2.5L2,9.8L5.8,21.5H18.2L22,9.8L12,2.5Z"; -var mdiPentagonOutline = "M12,5L19.6,10.5L16.7,19.4H7.3L4.4,10.5L12,5M12,2.5L2,9.8L5.8,21.5H18.1L22,9.8L12,2.5Z"; -var mdiPentagram = "M16.15 14.4L18.71 22.26L12 17.4L5.28 22.3L7.85 14.37L1.15 9.5H9.44L12 1.61L14.56 9.5H22.89L16.15 14.4M13.3 16.47L15.86 18.33L14.88 15.32L13.3 16.47M11 9.5H13L12 6.47L11 9.5M10.74 16.47L9.13 15.3L8.13 18.37L10.74 16.47M18.28 11H15.05L15.67 12.9L18.28 11M10.53 11L9.62 13.8L12 15.54L14.39 13.82L13.47 11H10.53M5.76 11L8.34 12.87L8.95 11H5.76Z"; -var mdiPercent = "M18.5,3.5L3.5,18.5L5.5,20.5L20.5,5.5M7,4A3,3 0 0,0 4,7A3,3 0 0,0 7,10A3,3 0 0,0 10,7A3,3 0 0,0 7,4M17,14A3,3 0 0,0 14,17A3,3 0 0,0 17,20A3,3 0 0,0 20,17A3,3 0 0,0 17,14Z"; -var mdiPercentOutline = "M18.5 3.5L20.5 5.5L5.5 20.5L3.5 18.5L18.5 3.5M7 4C8.66 4 10 5.34 10 7C10 8.66 8.66 10 7 10C5.34 10 4 8.66 4 7C4 5.34 5.34 4 7 4M17 14C18.66 14 20 15.34 20 17C20 18.66 18.66 20 17 20C15.34 20 14 18.66 14 17C14 15.34 15.34 14 17 14M7 6C6.45 6 6 6.45 6 7C6 7.55 6.45 8 7 8C7.55 8 8 7.55 8 7C8 6.45 7.55 6 7 6M17 16C16.45 16 16 16.45 16 17C16 17.55 16.45 18 17 18C17.55 18 18 17.55 18 17C18 16.45 17.55 16 17 16Z"; -var mdiPeriodicTable = "M2,4V6H4V4H2M20,4V6H22V4H20M2,7V9H4V7H2M5,7V9H7V7H5M14,7V9H16V7H14M17,7V9H19V7H17M20,7V9H22V7H20M2,10V12H4V10H2M5,10V12H7V10H5M8,10V12H10V10H8M11,10V12H13V10H11M14,10V12H16V10H14M17,10V12H19V10H17M20,10V12H22V10H20M2,13V15H4V13H2M5,13V15H7V13H5M8,13V15H10V13H8M11,13V15H13V13H11M14,13V15H16V13H14M17,13V15H19V13H17M20,13V15H22V13H20M5,17V19H7V17H5M8,17V19H10V17H8M11,17V19H13V17H11M14,17V19H16V17H14M17,17V19H19V17H17Z"; -var mdiPerspectiveLess = "M16.56,12L19.23,20H4.78L7.44,12H16.56M7,1L3,5L7,9V6H11V4H7V1M17,1V4H13V6H17V9L21,5L17,1M18,10H6L2,22H22L18,10Z"; -var mdiPerspectiveMore = "M16.56,12L19.23,20H4.78L7.44,12H16.56M17,1L13,5L17,9V6H21V4H17V1M7,1V4H3V6H7V9L11,5L7,1M18,10H6L2,22H22L18,10Z"; -var mdiPharmacy = "M16,14H13V17H11V14H8V12H11V9H13V12H16M21,5H18.35L19.5,1.85L17.15,1L15.69,5H3V7L5,13L3,19V21H21V19L19,13L21,7V5Z"; -var mdiPhone = "M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z"; -var mdiPhoneAlert = "M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4C3,3.44 3.45,3 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.24 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.58L6.62,10.79M17,12V10H19V12H17M17,8V2H19V8H17Z"; -var mdiPhoneAlertOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M17 12V10H19V12H17M17 8V2H19V8H17Z"; -var mdiPhoneBluetooth = "M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,7.21L18.94,8.14L18,9.08M18,2.91L18.94,3.85L18,4.79M14.71,9.5L17,7.21V11H17.5L20.35,8.14L18.21,6L20.35,3.85L17.5,1H17V4.79L14.71,2.5L14,3.21L16.79,6L14,8.79L14.71,9.5Z"; -var mdiPhoneBluetoothOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M18 7.21L18.94 8.14L18 9.08M18 2.91L18.94 3.85L18 4.79M14.71 9.5L17 7.21V11H17.5L20.35 8.14L18.21 6L20.35 3.85L17.5 1H17V4.79L14.71 2.5L14 3.21L16.79 6L14 8.79L14.71 9.5Z"; -var mdiPhoneCancel = "M6.62 10.79C8.06 13.62 10.38 15.94 13.21 17.38L15.41 15.18C15.69 14.9 16.08 14.82 16.43 14.93C17.55 15.3 18.75 15.5 20 15.5C20.55 15.5 21 15.95 21 16.5V20C21 20.55 20.55 21 20 21C10.61 21 3 13.39 3 4C3 3.45 3.45 3 4 3H7.5C8.05 3 8.5 3.45 8.5 4C8.5 5.25 8.7 6.45 9.07 7.57C9.18 7.92 9.1 8.31 8.82 8.59L6.62 10.79M16.5 2C14 2 12 4 12 6.5S14 11 16.5 11 21 9 21 6.5 19 2 16.5 2M16.5 9.5C14.84 9.5 13.5 8.16 13.5 6.5C13.5 5.94 13.65 5.42 13.92 5L18 9.08C17.58 9.35 17.06 9.5 16.5 9.5M19.08 8L15 3.92C15.42 3.65 15.94 3.5 16.5 3.5C18.16 3.5 19.5 4.84 19.5 6.5C19.5 7.06 19.35 7.58 19.08 8Z"; -var mdiPhoneCancelOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M16.5 2C14 2 12 4 12 6.5S14 11 16.5 11 21 9 21 6.5 19 2 16.5 2M16.5 9.5C14.84 9.5 13.5 8.16 13.5 6.5C13.5 5.94 13.65 5.42 13.92 5L18 9.08C17.58 9.35 17.06 9.5 16.5 9.5M19.08 8L15 3.92C15.42 3.65 15.94 3.5 16.5 3.5C18.16 3.5 19.5 4.84 19.5 6.5C19.5 7.06 19.35 7.58 19.08 8Z"; -var mdiPhoneCheck = "M6.62 10.79A15.1 15.1 0 0 0 13.21 17.38L15.41 15.18A1 1 0 0 1 16.41 14.93A11.36 11.36 0 0 0 20 15.5A1 1 0 0 1 21 16.5V20A1 1 0 0 1 20 21A17 17 0 0 1 3 4A1 1 0 0 1 4 3H7.5A1 1 0 0 1 8.5 4A11.36 11.36 0 0 0 9.07 7.57A1 1 0 0 1 8.82 8.57M21.71 4.71L20.29 3.29L15 8.59L12.71 6.29L11.29 7.71L15 11.41Z"; -var mdiPhoneCheckOutline = "M20 15.5A11.36 11.36 0 0 1 16.43 14.93A1 1 0 0 0 15.43 15.18L13.23 17.38A15.1 15.1 0 0 1 6.64 10.79L8.84 8.59A1 1 0 0 0 9.09 7.59A11.36 11.36 0 0 1 8.5 4A1 1 0 0 0 7.5 3H4A1 1 0 0 0 3 4A17 17 0 0 0 20 21A1 1 0 0 0 21 20V16.5A1 1 0 0 0 20 15.5M5 5H6.54A12.54 12.54 0 0 0 7 7.59L5.79 8.8A15 15 0 0 1 5 5M19 19A15 15 0 0 1 15.2 18.24L16.41 17A12.31 12.31 0 0 0 19 17.45M15 11.44L11.29 7.74L12.71 6.32L15 8.59L20.29 3.29L21.71 4.71Z"; -var mdiPhoneClassic = "M12,3C7.46,3 3.34,4.78 0.29,7.67C0.11,7.85 0,8.1 0,8.38C0,8.66 0.11,8.91 0.29,9.09L2.77,11.57C2.95,11.75 3.2,11.86 3.5,11.86C3.75,11.86 4,11.75 4.18,11.58C4.97,10.84 5.87,10.22 6.84,9.73C7.17,9.57 7.4,9.23 7.4,8.83V5.73C8.85,5.25 10.39,5 12,5C13.59,5 15.14,5.25 16.59,5.72V8.82C16.59,9.21 16.82,9.56 17.15,9.72C18.13,10.21 19,10.84 19.82,11.57C20,11.75 20.25,11.85 20.5,11.85C20.8,11.85 21.05,11.74 21.23,11.56L23.71,9.08C23.89,8.9 24,8.65 24,8.37C24,8.09 23.88,7.85 23.7,7.67C20.65,4.78 16.53,3 12,3M9,7V10C9,10 3,15 3,18V22H21V18C21,15 15,10 15,10V7H13V9H11V7H9M12,12A4,4 0 0,1 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12M12,13.5A2.5,2.5 0 0,0 9.5,16A2.5,2.5 0 0,0 12,18.5A2.5,2.5 0 0,0 14.5,16A2.5,2.5 0 0,0 12,13.5Z"; -var mdiPhoneClassicOff = "M12 3C16.53 3 20.65 4.78 23.7 7.67C23.88 7.85 24 8.09 24 8.37C24 8.65 23.89 8.9 23.71 9.08L21.23 11.56C21.05 11.74 20.8 11.85 20.5 11.85C20.25 11.85 20 11.75 19.82 11.57C19 10.84 18.13 10.21 17.15 9.72C16.82 9.56 16.59 9.21 16.59 8.82V5.72C15.14 5.25 13.59 5 12 5C10.44 5 8.93 5.24 7.5 5.69L5.94 4.11C7.82 3.4 9.86 3 12 3M9 7H11V9H13V7H15V10C15 10 21 15 21 18V19.18L9 7.18V7M1 4.27L2.28 3L21.5 22.22L20.23 23.5L18.73 22H3V18C3 15.86 6.05 12.71 7.8 11.07L6.59 9.86C5.71 10.33 4.9 10.9 4.18 11.58C4 11.75 3.75 11.86 3.5 11.86C3.2 11.86 2.95 11.75 2.77 11.57L.29 9.09C.11 8.91 0 8.66 0 8.38C0 8.1 .11 7.85 .29 7.67C.996 7 2.58 5.85 2.58 5.85L1 4.27M8 16C8 18.21 9.79 20 12 20C13.29 20 14.44 19.39 15.17 18.44L14.1 17.36C13.65 18.05 12.88 18.5 12 18.5C10.62 18.5 9.5 17.38 9.5 16C9.5 15.12 9.95 14.35 10.64 13.91L9.56 12.83C8.61 13.56 8 14.71 8 16Z"; -var mdiPhoneDial = "M6.6 10.8C8 13.6 10.4 15.9 13.2 17.4L15.4 15.2C15.7 14.9 16.1 14.8 16.4 15C17.5 15.4 18.7 15.6 20 15.6C20.6 15.6 21 16 21 16.6V20C21 20.6 20.6 21 20 21C10.6 21 3 13.4 3 4C3 3.4 3.5 3 4 3H7.5C8.1 3 8.5 3.4 8.5 4C8.5 5.2 8.7 6.4 9.1 7.6C9.2 7.9 9.1 8.3 8.9 8.6L6.6 10.8M14 3C13.4 3 13 3.4 13 4S13.4 5 14 5 15 4.6 15 4 14.6 3 14 3M17 3C16.4 3 16 3.4 16 4S16.4 5 17 5 18 4.6 18 4 17.6 3 17 3M20 3C19.4 3 19 3.4 19 4S19.4 5 20 5 21 4.6 21 4 20.6 3 20 3M14 6C13.4 6 13 6.4 13 7S13.4 8 14 8 15 7.6 15 7 14.6 6 14 6M17 6C16.4 6 16 6.4 16 7S16.4 8 17 8 18 7.6 18 7 17.6 6 17 6M20 6C19.4 6 19 6.4 19 7S19.4 8 20 8 21 7.6 21 7 20.6 6 20 6M14 9C13.4 9 13 9.4 13 10S13.4 11 14 11 15 10.6 15 10 14.6 9 14 9M17 9C16.4 9 16 9.4 16 10S16.4 11 17 11 18 10.6 18 10 17.6 9 17 9M20 9C19.4 9 19 9.4 19 10S19.4 11 20 11 21 10.6 21 10 20.6 9 20 9Z"; -var mdiPhoneDialOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M15 4C15 4.6 14.6 5 14 5S13 4.6 13 4 13.4 3 14 3 15 3.4 15 4M18 4C18 4.6 17.6 5 17 5S16 4.6 16 4 16.4 3 17 3 18 3.4 18 4M21 4C21 4.6 20.6 5 20 5S19 4.6 19 4 19.4 3 20 3 21 3.4 21 4M15 7C15 7.6 14.6 8 14 8S13 7.6 13 7 13.4 6 14 6 15 6.4 15 7M18 7C18 7.6 17.6 8 17 8S16 7.6 16 7 16.4 6 17 6 18 6.4 18 7M21 7C21 7.6 20.6 8 20 8S19 7.6 19 7 19.4 6 20 6 21 6.4 21 7M15 10C15 10.6 14.6 11 14 11S13 10.6 13 10 13.4 9 14 9 15 9.4 15 10M18 10C18 10.6 17.6 11 17 11S16 10.6 16 10 16.4 9 17 9 18 9.4 18 10M21 10C21 10.6 20.6 11 20 11S19 10.6 19 10 19.4 9 20 9 21 9.4 21 10Z"; -var mdiPhoneForward = "M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,11L23,6L18,1V4H14V8H18V11Z"; -var mdiPhoneForwardOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M18 11L23 6L18 1V4H14V8H18V11Z"; -var mdiPhoneHangup = "M12,9C10.4,9 8.85,9.25 7.4,9.72V12.82C7.4,13.22 7.17,13.56 6.84,13.72C5.86,14.21 4.97,14.84 4.17,15.57C4,15.75 3.75,15.86 3.5,15.86C3.2,15.86 2.95,15.74 2.77,15.56L0.29,13.08C0.11,12.9 0,12.65 0,12.38C0,12.1 0.11,11.85 0.29,11.67C3.34,8.77 7.46,7 12,7C16.54,7 20.66,8.77 23.71,11.67C23.89,11.85 24,12.1 24,12.38C24,12.65 23.89,12.9 23.71,13.08L21.23,15.56C21.05,15.74 20.8,15.86 20.5,15.86C20.25,15.86 20,15.75 19.82,15.57C19.03,14.84 18.14,14.21 17.16,13.72C16.83,13.56 16.6,13.22 16.6,12.82V9.72C15.15,9.25 13.6,9 12,9Z"; -var mdiPhoneHangupOutline = "M23.71 11.67A17 17 0 0 0 .29 11.67A1 1 0 0 0 0 12.38A1 1 0 0 0 .29 13.08L2.77 15.56A1 1 0 0 0 3.5 15.85A1 1 0 0 0 4.18 15.57A11.5 11.5 0 0 1 6.84 13.72A1 1 0 0 0 7.4 12.82V9.72A14.91 14.91 0 0 1 12 9A14.5 14.5 0 0 1 16.59 9.73V12.83A1 1 0 0 0 17.15 13.73A11.27 11.27 0 0 1 19.82 15.58A1 1 0 0 0 20.5 15.86A1 1 0 0 0 21.23 15.57L23.71 13.09A1 1 0 0 0 23.71 11.67M5.4 12.22A13.68 13.68 0 0 0 3.53 13.5L2.46 12.42A15.54 15.54 0 0 1 5.4 10.5M20.5 13.5A13.75 13.75 0 0 0 18.6 12.23V10.53A14.26 14.26 0 0 1 21.55 12.43Z"; -var mdiPhoneInTalk = "M15,12H17A5,5 0 0,0 12,7V9A3,3 0 0,1 15,12M19,12H21C21,7 16.97,3 12,3V5C15.86,5 19,8.13 19,12M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z"; -var mdiPhoneInTalkOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M15 12H17A5 5 0 0 0 12 7V9A3 3 0 0 1 15 12M19 12H21C21 7 16.97 3 12 3V5C15.86 5 19 8.13 19 12Z"; -var mdiPhoneIncoming = "M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M19,11V9.5H15.5L21,4L20,3L14.5,8.5V5H13V11H19Z"; -var mdiPhoneIncomingOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M19 11V9.5H15.5L21 4L20 3L14.5 8.5V5H13V11H19Z"; -var mdiPhoneLock = "M19.2,4H15.8V3.5C15.8,2.56 16.56,1.8 17.5,1.8C18.44,1.8 19.2,2.56 19.2,3.5M20,4V3.5A2.5,2.5 0 0,0 17.5,1A2.5,2.5 0 0,0 15,3.5V4A1,1 0 0,0 14,5V9A1,1 0 0,0 15,10H20A1,1 0 0,0 21,9V5A1,1 0 0,0 20,4M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z"; -var mdiPhoneLockOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M19.2 4H15.8V3.5C15.8 2.56 16.56 1.8 17.5 1.8C18.44 1.8 19.2 2.56 19.2 3.5M20 4V3.5A2.5 2.5 0 0 0 17.5 1A2.5 2.5 0 0 0 15 3.5V4A1 1 0 0 0 14 5V9A1 1 0 0 0 15 10H20A1 1 0 0 0 21 9V5A1 1 0 0 0 20 4Z"; -var mdiPhoneLog = "M20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.24 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.58L6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5M12,3H14V5H12M15,3H21V5H15M12,6H14V8H12M15,6H21V8H15M12,9H14V11H12M15,9H21V11H15"; -var mdiPhoneLogOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M12 3H14V5H12M15 3H21V5H15M12 6H14V8H12M15 6H21V8H15M12 9H14V11H12M15 9H21V11H15Z"; -var mdiPhoneMessage = "M20 15.5C18.75 15.5 17.55 15.3 16.43 14.93C16.08 14.82 15.69 14.9 15.41 15.17L13.21 17.37C10.38 15.93 8.06 13.62 6.62 10.79L8.82 8.58C9.1 8.31 9.18 7.92 9.07 7.57C8.7 6.45 8.5 5.25 8.5 4C8.5 3.45 8.05 3 7.5 3H4C3.45 3 3 3.45 3 4C3 13.39 10.61 21 20 21C20.55 21 21 20.55 21 20V16.5C21 15.95 20.55 15.5 20 15.5M12 3V13L15 10H21V3H12Z"; -var mdiPhoneMessageOutline = "M20 15.5C18.75 15.5 17.55 15.3 16.43 14.93C16.33 14.9 16.22 14.88 16.12 14.88C15.86 14.88 15.61 15 15.41 15.17L13.21 17.37C10.38 15.93 8.06 13.62 6.62 10.79L8.82 8.58C9.1 8.31 9.18 7.92 9.07 7.57C8.7 6.45 8.5 5.25 8.5 4C8.5 3.45 8.05 3 7.5 3H4C3.45 3 3 3.45 3 4C3 13.39 10.61 21 20 21C20.55 21 21 20.55 21 20V16.5C21 15.95 20.55 15.5 20 15.5M5.03 5H6.53C6.6 5.88 6.75 6.75 7 7.59L5.79 8.8C5.38 7.59 5.12 6.32 5.03 5M19 18.97C17.68 18.88 16.4 18.62 15.2 18.21L16.4 17C17.25 17.25 18.12 17.4 19 17.46V18.97M12 3V13L15 10H21V3H12M19 8H14V5H19V8Z"; -var mdiPhoneMinus = "M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M13,6V8H21V6"; -var mdiPhoneMinusOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M13 6V8H21V6Z"; -var mdiPhoneMissed = "M23.71,16.67C20.66,13.77 16.54,12 12,12C7.46,12 3.34,13.77 0.29,16.67C0.11,16.85 0,17.1 0,17.38C0,17.65 0.11,17.9 0.29,18.08L2.77,20.56C2.95,20.74 3.2,20.86 3.5,20.86C3.75,20.86 4,20.75 4.18,20.57C4.97,19.83 5.86,19.21 6.84,18.72C7.17,18.56 7.4,18.22 7.4,17.82V14.72C8.85,14.25 10.39,14 12,14C13.6,14 15.15,14.25 16.6,14.72V17.82C16.6,18.22 16.83,18.56 17.16,18.72C18.14,19.21 19.03,19.83 19.82,20.57C20,20.75 20.25,20.86 20.5,20.86C20.8,20.86 21.05,20.74 21.23,20.56L23.71,18.08C23.89,17.9 24,17.65 24,17.38C24,17.1 23.89,16.85 23.71,16.67M6.5,5.5L12,11L19,4L18,3L12,9L7.5,4.5H11V3H5V9H6.5V5.5Z"; -var mdiPhoneMissedOutline = "M18.6 15.5v1.8c.7.4 1.3.8 1.9 1.3l1.1-1.1c-.9-.9-1.9-1.5-3-2m-13.2 0c-1 .5-2 1.1-2.9 1.9l1.1 1.1c.6-.5 1.2-.9 1.9-1.3v-1.7M12 12c4.5 0 8.7 1.7 11.7 4.7.2.2.3.4.3.7 0 .3-.1.5-.3.7l-2.5 2.5c-.2.2-.4.3-.7.3-.2 0-.5-.1-.7-.3-.8-.7-1.7-1.4-2.7-1.8-.3-.2-.6-.5-.6-.9v-3.1c-1.5-.5-3-.7-4.6-.7-1.6 0-3.1.2-4.6.7v3.1c0 .4-.2.7-.6.9-1 .5-1.9 1.1-2.7 1.8-.2.2-.4.3-.7.3-.3 0-.5-.1-.7-.3L.1 18.1c0-.2-.1-.5-.1-.7 0-.3.1-.5.3-.7C3.3 13.8 7.5 12 12 12zM6.5 5.5V9H5V3h6v1.5H7.5L12 9l6-6 1 1-7 7-5.5-5.5z"; -var mdiPhoneOff = "M20.22,2.5L2.5,20.22L3.77,21.5L8.65,16.62C11.76,19.43 15.81,21 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C12.06,16.8 11,16.06 10.06,15.21L21.5,3.77L20.22,2.5M4,3A1,1 0 0,0 3,4C3,7.57 4.14,11.05 6.24,13.94L7.66,12.5C7.28,11.97 6.93,11.39 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4Z"; -var mdiPhoneOffOutline = "M16.4 17C17.2 17.2 18.1 17.4 19 17.5V19C17.7 18.9 16.4 18.7 15.2 18.2L16.4 17M20.2 2.5L2.5 20.2L3.8 21.5L8.7 16.6C11.8 19.4 15.8 21 20 21C20.6 21 21 20.6 21 20V16.5C21 15.9 20.6 15.5 20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C12.1 16.8 11 16.1 10.1 15.2L21.5 3.8L20.2 2.5M6.5 5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5H6.5M7.5 3H4C3.4 3 3 3.4 3 4C3 7.6 4.1 11 6.2 13.9L7.6 12.5C7.2 12 6.9 11.4 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.4 8.5 5.2 8.5 4C8.5 3.4 8.1 3 7.5 3Z"; -var mdiPhoneOutgoing = "M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M15,3V4.5H18.5L13,10L14,11L19.5,5.5V9H21V3H15Z"; -var mdiPhoneOutgoingOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M15 3V4.5H18.5L13 10L14 11L19.5 5.5V9H21V3H15Z"; -var mdiPhoneOutline = "M20,15.5C18.8,15.5 17.5,15.3 16.4,14.9C16.3,14.9 16.2,14.9 16.1,14.9C15.8,14.9 15.6,15 15.4,15.2L13.2,17.4C10.4,15.9 8,13.6 6.6,10.8L8.8,8.6C9.1,8.3 9.2,7.9 9,7.6C8.7,6.5 8.5,5.2 8.5,4C8.5,3.5 8,3 7.5,3H4C3.5,3 3,3.5 3,4C3,13.4 10.6,21 20,21C20.5,21 21,20.5 21,20V16.5C21,16 20.5,15.5 20,15.5M5,5H6.5C6.6,5.9 6.8,6.8 7,7.6L5.8,8.8C5.4,7.6 5.1,6.3 5,5M19,19C17.7,18.9 16.4,18.6 15.2,18.2L16.4,17C17.2,17.2 18.1,17.4 19,17.4V19Z"; -var mdiPhonePaused = "M19,10H21V3H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,3H15V10H17V3Z"; -var mdiPhonePausedOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M19 10H21V3H19M17 3H15V10H17V3Z"; -var mdiPhonePlus = "M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M16,3V6H13V8H16V11H18V8H21V6H18V3"; -var mdiPhonePlusOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M16 3V6H13V8H16V11H18V8H21V6H18V3Z"; -var mdiPhoneRemove = "M4 3C3.4 3 3 3.4 3 4C3 13.4 10.6 21 20 21C20.6 21 21 20.6 21 20V16.5C21 15.9 20.6 15.5 20 15.5C18.8 15.5 17.5 15.3 16.4 14.9C16 14.8 15.7 14.9 15.4 15.1L13.2 17.3C10.4 15.9 8.1 13.5 6.6 10.7L8.8 8.5C9.1 8.2 9.2 7.8 9 7.5C8.7 6.4 8.5 5.2 8.5 4C8.5 3.4 8.1 3 7.5 3M19.1 3.5L17 5.6L14.9 3.5L13.5 4.9L15.6 7L13.5 9.1L14.9 10.5L17 8.4L19.1 10.5L20.5 9.1L18.4 7L20.5 4.9"; -var mdiPhoneRemoveOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M19.1 3.5L17 5.6L14.9 3.5L13.5 4.9L15.6 7L13.5 9.1L14.9 10.5L17 8.4L19.1 10.5L20.5 9.1L18.4 7L20.5 4.9L19.1 3.5Z"; -var mdiPhoneReturn = "M21,6V11H19.5V7.5H13.87L16.3,9.93L15.24,11L11,6.75L15.24,2.5L16.3,3.57L13.87,6H21M8.82,8.58C9.08,8.32 9.17,7.93 9.06,7.58C8.69,6.42 8.5,5.22 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.79,15.5 17.58,15.31 16.43,14.93C16.08,14.82 15.69,14.91 15.43,15.17L13.23,17.37C10.39,15.92 8.09,13.62 6.64,10.78L8.82,8.58Z"; -var mdiPhoneReturnOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M21 6V11H19.5V7.5H13.87L16.3 9.93L15.24 11L11 6.75L15.24 2.5L16.3 3.57L13.87 6H21Z"; -var mdiPhoneRing = "M23.71 16.67C20.66 13.78 16.54 12 12 12S3.34 13.78.29 16.67c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2.48 2.48c.18.18.43.29.71.29.27 0 .52-.11.7-.28.79-.74 1.69-1.36 2.66-1.85.33-.16.56-.5.56-.9v-3.1c1.45-.48 3-.73 4.6-.73s3.15.25 4.6.72v3.1c0 .39.23.74.56.9.98.49 1.87 1.12 2.66 1.85.18.18.43.28.7.28.28 0 .53-.11.71-.29l2.48-2.48c.18-.18.29-.43.29-.71a.99.99 0 0 0-.29-.7zM21.16 6.26l-1.41-1.41-3.56 3.55 1.41 1.41s3.45-3.52 3.56-3.55zM13 2h-2v5h2V2zM6.4 9.81L7.81 8.4 4.26 4.84 2.84 6.26c.11.03 3.56 3.55 3.56 3.55z"; -var mdiPhoneRingOutline = "M23.71 16.67C20.66 13.78 16.54 12 12 12S3.34 13.78.29 16.67c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2.48 2.48c.18.18.43.29.71.29.27 0 .52-.11.7-.28.79-.74 1.69-1.36 2.66-1.85.33-.16.56-.5.56-.9v-3.1c1.45-.48 3-.73 4.6-.73s3.15.25 4.6.72v3.1c0 .39.23.74.56.9.98.49 1.87 1.12 2.66 1.85.18.18.43.28.7.28.28 0 .53-.11.71-.29l2.48-2.48c.18-.18.29-.43.29-.71a.99.99 0 0 0-.29-.7zm-18.31.56c-.66.37-1.29.8-1.87 1.27l-1.07-1.07c.91-.75 1.9-1.39 2.95-1.9v1.7H5.4zm15.07 1.26c-.59-.48-1.21-.9-1.87-1.27v-1.7c1.04.51 2.03 1.15 2.94 1.9l-1.07 1.07zm.69-12.23l-1.41-1.41-3.56 3.55 1.41 1.41s3.45-3.52 3.56-3.55zM11 2h2v5h-2V2zM6.4 9.81L7.81 8.4 4.26 4.84 2.84 6.26c.11.03 3.56 3.55 3.56 3.55z"; -var mdiPhoneRotateLandscape = "M9,1H3A2,2 0 0,0 1,3V16A2,2 0 0,0 3,18H9A2,2 0 0,0 11,16V3A2,2 0 0,0 9,1M9,15H3V3H9V15M21,13H13V15H21V21H9V20H6V21A2,2 0 0,0 8,23H21A2,2 0 0,0 23,21V15A2,2 0 0,0 21,13M23,10L19,8L20.91,7.09C19.74,4.31 17,2.5 14,2.5V1A9,9 0 0,1 23,10Z"; -var mdiPhoneRotatePortrait = "M9,1H3A2,2 0 0,0 1,3V16A2,2 0 0,0 3,18H4V15H3V3H9V11H11V3A2,2 0 0,0 9,1M23,21V15A2,2 0 0,0 21,13H8A2,2 0 0,0 6,15V21A2,2 0 0,0 8,23H21A2,2 0 0,0 23,21M9,21V15H21V21H9M23,10H21.5C21.5,7 19.69,4.27 16.92,3.09L16,5L14,1A9,9 0 0,1 23,10Z"; -var mdiPhoneSettings = "M19,11H21V9H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,9H15V11H17M13,9H11V11H13V9Z"; -var mdiPhoneSettingsOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M17 9H15V11H17M13 9H11V11H13V9M19 11H21V9H19Z"; -var mdiPhoneVoip = "M13,17V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H13M23.7,7.67C23.88,7.85 24,8.09 24,8.37C24,8.65 23.89,8.9 23.71,9.08L21.23,11.56C21.05,11.74 20.8,11.85 20.5,11.85C20.25,11.85 20,11.75 19.82,11.57C19,10.84 18.13,10.21 17.15,9.72C16.82,9.56 16.59,9.21 16.59,8.82V5.72C15.14,5.25 13.59,5 12,5C10.4,5 8.85,5.25 7.4,5.73V8.83C7.4,9.23 7.17,9.57 6.84,9.73C5.87,10.22 4.97,10.84 4.18,11.58C4,11.75 3.75,11.86 3.5,11.86C3.2,11.86 2.95,11.75 2.77,11.57L0.29,9.09C0.11,8.91 0,8.66 0,8.38C0,8.1 0.11,7.85 0.29,7.67C3.34,4.78 7.46,3 12,3C16.53,3 20.65,4.78 23.7,7.67M11,10V15H10V10H11M12,10H15V13H13V15H12V10M14,12V11H13V12H14Z"; -var mdiPi = "M4,5V7H6V19H8V7H14V16A3,3 0 0,0 17,19A3,3 0 0,0 20,16H18A1,1 0 0,1 17,17A1,1 0 0,1 16,16V7H18V5"; -var mdiPiBox = "M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M6,7H17V9H15V14A1,1 0 0,0 16,15A1,1 0 0,0 17,14H19A3,3 0 0,1 16,17A3,3 0 0,1 13,14V9H10V17H8V9H6"; -var mdiPiHole = "M5.62,2C9.5,2 11.57,4.29 11.77,7.93C12.5,3.57 15.93,4.08 15.93,4.08C16.1,6.55 14.07,8.05 11.77,8.17C11.12,6.81 7.25,3.47 7.25,3.47C7.23,3.5 10.97,6.74 10.83,8.15C8.33,7.88 5.82,6 5.62,2M6.06,13.11L9.92,9.25C11.09,8.08 13,8.08 14.16,9.25L18,13.11C19.19,14.28 19.19,16.18 18,17.35L14.16,21.21C13,22.38 11.09,22.38 9.92,21.21L6.06,17.35C4.89,16.18 4.89,14.28 6.06,13.11M9.39,19.59C9.39,18.36 10.15,16.85 12.09,16.85C13.4,16.85 14.87,18.1 16.31,17.96C14.87,17.92 13.59,16.85 13.59,15.19C13.59,13.86 14.69,12.9 14.69,11.34C14.63,12.33 13.82,13.77 12,13.77C10.59,13.77 9.55,12.63 7.87,12.63C8.58,12.67 10.5,13.3 10.5,15.35C10.5,17 9.39,17.5 9.39,19.59Z"; -var mdiPiano = "M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M4,5V19H8V13H6.75V5H4M9,19H15V13H13.75V5H10.25V13H9V19M16,19H20V5H17.25V13H16V19Z"; -var mdiPickaxe = "M14.79,10.62L3.5,21.9L2.1,20.5L13.38,9.21L14.79,10.62M19.27,7.73L19.86,7.14L19.07,6.35L19.71,5.71L18.29,4.29L17.65,4.93L16.86,4.14L16.27,4.73C14.53,3.31 12.57,2.17 10.47,1.37L9.64,3.16C11.39,4.08 13,5.19 14.5,6.5L14,7L17,10L17.5,9.5C18.81,11 19.92,12.61 20.84,14.36L22.63,13.53C21.83,11.43 20.69,9.47 19.27,7.73Z"; -var mdiPictureInPictureBottomRight = "M19,11H11V17H19V11M23,19V5C23,3.88 22.1,3 21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19M21,19H3V4.97H21V19Z"; -var mdiPictureInPictureBottomRightOutline = "M19,11H11V17H19V11M17,15H13V13H17V15M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5C23,3.88 22.1,3 21,3M21,19H3V4.97H21V19Z"; -var mdiPictureInPictureTopRight = "M19,7H11V13H19V7M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H3V5H21V19Z"; -var mdiPictureInPictureTopRightOutline = "M19,7H11V13H19V7M17,11H13V9H17V11M21,3H3A2,2 0 0,0 1,5V19C1,20.11 1.9,21 3,21H21A2,2 0 0,0 23,19V5C23,3.91 22.1,3 21,3M21,19H3V5H21V19Z"; -var mdiPier = "M20,18C18.6,18 17.2,17.5 16,16.7C13.6,18.4 10.4,18.4 8,16.7C6.8,17.5 5.4,18 4,18H2V20H4C5.4,20 6.7,19.6 8,19C10.5,20.3 13.5,20.3 16,19C17.3,19.6 18.6,20 20,20H22V18H20M20,13H19V16.9C18.3,16.8 17.6,16.6 17,16.2V13H12V17C11.3,17 10.7,16.9 10,16.7V13H5V16.9C4.7,17 4.3,17 4,17H3V13H2V11H3V9H5V11H10V9H12V11H17V9H19V11H20V13Z"; -var mdiPierCrane = "M20,20C18.61,20 17.22,19.53 16,18.67C13.56,20.38 10.44,20.38 8,18.67C6.78,19.53 5.39,20 4,20H2V22H4C5.37,22 6.74,21.65 8,21C10.5,22.3 13.5,22.3 16,21C17.26,21.65 18.62,22 20,22H22V20H20M20,4V3A1,1 0 0,0 19,2H9V1H6V2H5V4H6V13H5V11H3V13H2V15H3V19H4C4.33,19 4.67,18.97 5,18.92V15H10V18.65C10.65,18.85 11.33,18.95 12,18.95V18.92L12,15H13V13H12V11H10V13H9V4H17V8.62C16.53,8.79 16.19,9.23 16.19,9.76C16.19,10.2 16.43,10.6 16.8,10.82V12H17.42C17.76,12 18.03,12.28 18.03,12.62C18.03,12.96 17.76,13.24 17.42,13.24C17.2,13.24 17,13.12 16.88,12.93C16.71,12.64 16.34,12.54 16.05,12.71C15.75,12.87 15.65,13.25 15.82,13.55C16.15,14.11 16.76,14.47 17.42,14.47C18.43,14.47 19.26,13.64 19.26,12.62C19.26,11.84 18.76,11.14 18.03,10.88V10.82C18.41,10.6 18.65,10.2 18.65,9.76C18.65,9.3 18.38,8.91 18,8.7V4H20M8,11.66L7,12.66V11.24L8,10.24V11.66M8,8.71L7,9.71V8.29L8,7.29V8.71M7,6.71V5.29L8,4.29V5.71L7,6.71Z"; -var mdiPig = "M9.5,9A1.5,1.5 0 0,0 8,10.5A1.5,1.5 0 0,0 9.5,12A1.5,1.5 0 0,0 11,10.5A1.5,1.5 0 0,0 9.5,9M14.5,9A1.5,1.5 0 0,0 13,10.5A1.5,1.5 0 0,0 14.5,12A1.5,1.5 0 0,0 16,10.5A1.5,1.5 0 0,0 14.5,9M12,4L12.68,4.03C13.62,3.24 14.82,2.59 15.72,2.35C17.59,1.85 20.88,2.23 21.31,3.83C21.62,5 20.6,6.45 19.03,7.38C20.26,8.92 21,10.87 21,13A9,9 0 0,1 12,22A9,9 0 0,1 3,13C3,10.87 3.74,8.92 4.97,7.38C3.4,6.45 2.38,5 2.69,3.83C3.12,2.23 6.41,1.85 8.28,2.35C9.18,2.59 10.38,3.24 11.32,4.03L12,4M10,16A1,1 0 0,1 11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17A1,1 0 0,1 10,16M14,16A1,1 0 0,1 15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17A1,1 0 0,1 14,16M12,13C9.24,13 7,15.34 7,17C7,18.66 9.24,20 12,20C14.76,20 17,18.66 17,17C17,15.34 14.76,13 12,13M7.76,4.28C7.31,4.16 4.59,4.35 4.59,4.35C4.59,4.35 6.8,6.1 7.24,6.22C7.69,6.34 9.77,6.43 9.91,5.9C10.06,5.36 8.2,4.4 7.76,4.28M16.24,4.28C15.8,4.4 13.94,5.36 14.09,5.9C14.23,6.43 16.31,6.34 16.76,6.22C17.2,6.1 19.41,4.35 19.41,4.35C19.41,4.35 16.69,4.16 16.24,4.28Z"; -var mdiPigVariant = "M20 12C20 8.69 16.42 6 12 6C11.15 6 10.34 6.1 9.57 6.28L7 5V7.32C5.5 8.22 4.45 9.5 4.12 11H2V15H5.08C5.58 15.65 6.23 16.22 7 16.68V20H9V17.56C9.93 17.84 10.94 18 12 18S14.07 17.84 15 17.56V20H17V16.68C18.15 16 19.03 15.06 19.54 14H22V12H20M7 11C6.45 11 6 10.55 6 10S6.45 9 7 9 8 9.45 8 10 7.55 11 7 11Z"; -var mdiPigVariantOutline = "M9 12C8.4 12 8 11.6 8 11S8.4 10 9 10 10 10.4 10 11 9.6 12 9 12M22 12H20C20 8.7 16.4 6 12 6C11.2 6 10.3 6.1 9.6 6.3L7 5V7.3C5.5 8.2 4.5 9.5 4.1 11H2V15H5.1C5.6 15.6 6.2 16.2 7 16.7V20H9V17.6C9.9 17.9 10.9 18 12 18S14.1 17.8 15 17.6V20H17V16.7C18.1 16 19 15.1 19.5 14H22V12M12 16C8.7 16 6 14.2 6 12S8.7 8 12 8 18 9.8 18 12 15.3 16 12 16Z"; -var mdiPiggyBank = "M13 1C14.66 1 16 2.34 16 4S14.66 7 13 7 10 5.66 10 4 11.34 1 13 1M20 14C20 11.64 18.17 9.6 15.5 8.62C15 9.45 14.06 10 13 10C11.76 10 10.69 9.24 10.24 8.17C10 8.2 9.78 8.23 9.57 8.29L7 7V9.32C5.5 10.22 4.45 11.5 4.12 13H2V17H5.08C5.58 17.65 6.23 18.22 7 18.68V22H9V19.56C9.93 19.84 10.94 20 12 20S14.07 19.84 15 19.56V22H17V18.68C18.15 18 19.03 17.06 19.54 16H22V14H20M7 13C6.45 13 6 12.55 6 12S6.45 11 7 11 8 11.45 8 12 7.55 13 7 13Z"; -var mdiPiggyBankOutline = "M22 14H20C20 11.6 18.2 9.6 15.5 8.6C15 9.4 14.1 10 13 10C11.7 10 10.7 9.2 10.2 8.2C10 8.2 9.8 8.3 9.5 8.3L7 7V9.3C5.5 10.2 4.4 11.5 4.1 13H2V17H5.1C5.6 17.6 6.2 18.2 7 18.7V22H9V19.6C9.9 19.9 10.9 20 12 20S14.1 19.8 15 19.6V22H17V18.7C18.1 18 19 17.1 19.5 16H22V14M12 18C8.7 18 6 16.2 6 14C6 12.5 7.4 11.1 9.4 10.4C10.3 11.4 11.6 12 13 12C14.1 12 15.1 11.7 16 11C17.3 11.8 18 12.9 18 14C18 16.2 15.3 18 12 18M13 3C13.6 3 14 3.4 14 4S13.6 5 13 5 12 4.6 12 4 12.4 3 13 3M13 1C11.3 1 10 2.3 10 4S11.3 7 13 7 16 5.7 16 4 14.7 1 13 1M10 13C10 13.6 9.6 14 9 14S8 13.6 8 13 8.4 12 9 12 10 12.4 10 13"; -var mdiPill = "M4.22,11.29L11.29,4.22C13.64,1.88 17.43,1.88 19.78,4.22C22.12,6.56 22.12,10.36 19.78,12.71L12.71,19.78C10.36,22.12 6.56,22.12 4.22,19.78C1.88,17.43 1.88,13.64 4.22,11.29M5.64,12.71C4.59,13.75 4.24,15.24 4.6,16.57L10.59,10.59L14.83,14.83L18.36,11.29C19.93,9.73 19.93,7.2 18.36,5.64C16.8,4.07 14.27,4.07 12.71,5.64L5.64,12.71Z"; -var mdiPillar = "M6,5H18A1,1 0 0,1 19,6A1,1 0 0,1 18,7H6A1,1 0 0,1 5,6A1,1 0 0,1 6,5M21,2V4H3V2H21M15,8H17V22H15V8M7,8H9V22H7V8M11,8H13V22H11V8Z"; -var mdiPin = "M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z"; -var mdiPinOff = "M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z"; -var mdiPinOffOutline = "M8,6.2V4H7V2H17V4H16V12L18,14V16H17.8L14,12.2V4H10V8.2L8,6.2M20,20.7L18.7,22L12.8,16.1V22H11.2V16H6V14L8,12V11.3L2,5.3L3.3,4L20,20.7M8.8,14H10.6L9.7,13.1L8.8,14Z"; -var mdiPinOutline = "M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12M8.8,14L10,12.8V4H14V12.8L15.2,14H8.8Z"; -var mdiPineTree = "M10,21V18H3L8,13H5L10,8H7L12,3L17,8H14L19,13H16L21,18H14V21H10Z"; -var mdiPineTreeBox = "M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M11,19H13V17H18L14,13H17L13,9H16L12,5L8,9H11L7,13H10L6,17H11V19Z"; -var mdiPineTreeFire = "M22.14 14.84L22.12 14.85C22.35 15.13 22.55 15.44 22.7 15.77L22.79 15.96C23.5 17.65 23 19.6 21.69 20.82C20.5 21.91 18.84 22.2 17.3 22C15.84 21.82 14.5 20.9 13.73 19.63C13.5 19.24 13.3 18.8 13.2 18.35C13.07 18 13.03 17.62 13 17.25C12.91 15.65 13.55 13.95 14.76 12.95C14.21 14.16 14.34 15.67 15.15 16.72L15.26 16.85C15.4 16.97 15.57 17 15.73 16.94C15.88 16.88 16 16.73 16 16.57L15.93 16.33C15.05 14 15.79 11.3 17.66 9.77C18.17 9.35 18.8 8.97 19.46 8.8C18.78 10.16 19 11.94 20.09 13C20.55 13.5 21.11 13.79 21.58 14.23L22.14 14.84M19.86 19.5L19.85 19.47C20.3 19.08 20.55 18.41 20.53 17.81L20.5 17.5C20.3 16.5 19.43 16.16 18.87 15.43C18.7 15.21 18.55 14.93 18.44 14.65C18.22 15.15 18.2 15.62 18.29 16.16C18.39 16.73 18.61 17.22 18.5 17.81C18.34 18.46 17.83 19.11 16.94 19.32C17.44 19.81 18.25 20.2 19.06 19.92C19.32 19.85 19.65 19.66 19.86 19.5M9 21V18H2L7 13H4L9 8H6L11 3L16 8H13L14.82 9.82C12.55 11.06 11 13.59 11 16.5C11 18.19 11.5 19.75 12.4 21H9Z"; -var mdiPinterest = "M9.04,21.54C10,21.83 10.97,22 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12C2,16.25 4.67,19.9 8.44,21.34C8.35,20.56 8.26,19.27 8.44,18.38L9.59,13.44C9.59,13.44 9.3,12.86 9.3,11.94C9.3,10.56 10.16,9.53 11.14,9.53C12,9.53 12.4,10.16 12.4,10.97C12.4,11.83 11.83,13.06 11.54,14.24C11.37,15.22 12.06,16.08 13.06,16.08C14.84,16.08 16.22,14.18 16.22,11.5C16.22,9.1 14.5,7.46 12.03,7.46C9.21,7.46 7.55,9.56 7.55,11.77C7.55,12.63 7.83,13.5 8.29,14.07C8.38,14.13 8.38,14.21 8.35,14.36L8.06,15.45C8.06,15.62 7.95,15.68 7.78,15.56C6.5,15 5.76,13.18 5.76,11.71C5.76,8.55 8,5.68 12.32,5.68C15.76,5.68 18.44,8.15 18.44,11.43C18.44,14.87 16.31,17.63 13.26,17.63C12.29,17.63 11.34,17.11 11,16.5L10.33,18.87C10.1,19.73 9.47,20.88 9.04,21.57V21.54Z"; -var mdiPinwheel = "M12,12C12,9 14.5,6.5 17.5,6.5C20.5,6.5 23,9 23,12H12M12,12C12,15 9.5,17.5 6.5,17.5C3.5,17.5 1,15 1,12H12M12,12C9,12 6.5,9.5 6.5,6.5C6.5,3.5 9,1 12,1V12M12,12C15,12 17.5,14.5 17.5,17.5C17.5,20.5 15,23 12,23V12Z"; -var mdiPinwheelOutline = "M12,23H11V16.43C9.93,17.4 8.5,18 7,18C3.75,18 1,15.25 1,12V11H7.57C6.6,9.93 6,8.5 6,7C6,3.75 8.75,1 12,1H13V7.57C14.07,6.6 15.5,6 17,6C20.25,6 23,8.75 23,12V13H16.43C17.4,14.07 18,15.5 18,17C18,20.25 15.25,23 12,23M13,13.13V20.87C14.7,20.41 16,18.83 16,17C16,15.17 14.7,13.59 13,13.13M3.13,13C3.59,14.7 5.17,16 7,16C8.83,16 10.41,14.7 10.87,13H3.13M13.13,11H20.87C20.41,9.3 18.82,8 17,8C15.18,8 13.59,9.3 13.13,11M11,3.13C9.3,3.59 8,5.18 8,7C8,8.82 9.3,10.41 11,10.87V3.13Z"; -var mdiPipe = "M22,14H20V16H14V13H16V11H14V6A2,2 0 0,0 12,4H4V2H2V10H4V8H10V11H8V13H10V18A2,2 0 0,0 12,20H20V22H22"; -var mdiPipeDisconnected = "M16,9V11H8V9H10V8H4V10H2V2H4V4H12A2,2 0 0,1 14,6V9H16M10,15V18A2,2 0 0,0 12,20H20V22H22V14H20V16H14V15H16V13H8V15H10Z"; -var mdiPipeLeak = "M2,5V13H4V11H10L12,9L10,7H4V5H2M20,5V7H12L14,9L12,11H20V13H22V5H20M12,13C12,13 10,15.17 10,16.5A2,2 0 0,0 12,18.5A2,2 0 0,0 14,16.5C14,15.17 12,13 12,13Z"; -var mdiPipeWrench = "M16.17 5.63L14.06 7.78L11.91 5.63L16.17 1.41L19.69 4.92C20.86 6.09 20.86 8 19.69 9.19L16.17 5.63M4.83 12.7L7 14.81L10.5 11.3L8.39 9.19L4.83 12.7M15.47 7.78L19 11.3L17.58 12.7L16.88 12L6.23 22.59L3.42 19.78L11.91 11.3L7.69 7.03L9.8 4.92L14.06 9.19L15.47 7.78Z"; -var mdiPirate = "M8.2,12.1C7.9,12.3 7.7,12.7 7.8,13C7.8,13.7 8.5,14.2 9.1,14.2C9.7,14.2 10.3,13.7 10.3,13C9.7,12.6 9,12.3 8.2,12.1M22,11L23,7C23,7 21,7 18,5C15,3 15,1 12,1C9,1 9,3 6,5C3,7 1,7 1,7L2,11H2.1C2,11.3 2,11.7 2,12C2,15.5 3.8,18.6 6.5,20.4L6,21.3C12.4,25.4 18,21.3 18,21.3L17.5,20.4C20.2,18.6 22,15.5 22,12C22,11.7 22,11.3 22,11M11.3,4.5L9.9,3.1L10.6,2.4L12,3.8L13.4,2.4L14.1,3.1L12.7,4.5L14.1,5.9L13.4,6.6L12,5.2L10.6,6.6L9.9,5.9L11.3,4.5M9.3,8.5C10.3,8.2 11.3,8 12,8C14.2,8 17.9,9.6 19.8,10.4C19.9,10.7 19.9,11 19.9,11.3L9.3,8.5M13.6,19.1C12.9,19.5 12.2,19.8 11.4,19.9C10.9,19.5 10.9,18.7 11.4,18.3C11.8,17.9 12.7,17.7 13.2,18.2C13.5,18.3 13.6,18.8 13.6,19.1M20,13.4C19.5,15.5 18.2,17.4 16.5,18.6L15,16H9L7.5,18.6C5.4,17.2 4,14.8 4,12C4,11.5 4.1,11 4.2,10.5C4.7,10.3 5.3,10 6,9.7L13.1,11.6V14C13.1,14.5 13.5,15 14.1,15H16.1C16.6,15 17.1,14.6 17.1,14V12.6L20,13.4Z"; -var mdiPistol = "M7,5H23V9H22V10H16A1,1 0 0,0 15,11V12A2,2 0 0,1 13,14H9.62C9.24,14 8.89,14.22 8.72,14.56L6.27,19.45C6.1,19.79 5.76,20 5.38,20H2C2,20 -1,20 3,14C3,14 6,10 2,10V5H3L3.5,4H6.5L7,5M14,12V11A1,1 0 0,0 13,10H12C12,10 11,11 12,12A2,2 0 0,1 10,10A1,1 0 0,0 9,11V12A1,1 0 0,0 10,13H13A1,1 0 0,0 14,12Z"; -var mdiPiston = "M13,16.18C13.5,16.35 13.9,16.63 14.23,17H15V21H14.21C13.89,21.35 13.5,21.63 13,21.8C11.85,22.22 10.58,21.87 9.78,21H9V17H9.77C10.1,16.63 10.5,16.35 11,16.18V12H13V16.18M12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20M17,4H15V5H17V11H7V5H9V4H7V2H17V4M12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9Z"; -var mdiPitchfork = "M15.9 .9L13.1 3.7C12.3 4.5 12.3 5.7 13.1 6.5L14.5 8L9.2 13.4L7.8 12C7 11.2 5.8 11.2 5 12L1 16L2.4 17.4L6.4 13.4L7.8 14.8L3.8 18.8L5.2 20.2L9.2 16.2L10.6 17.6L9.9 18.4L6.7 21.6L8 23L12 19C12.8 18.2 12.8 17 12 16.2L10.6 14.8L15.9 9.4L17.3 10.8C18.1 11.6 19.3 11.6 20.1 10.8L23 8L15.9 .9M18.7 9.4L14.5 5.2L15.9 3.8L20.1 8L18.7 9.4Z"; -var mdiPizza = "M12,15A2,2 0 0,1 10,13C10,11.89 10.9,11 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M7,7C7,5.89 7.89,5 9,5A2,2 0 0,1 11,7A2,2 0 0,1 9,9C7.89,9 7,8.1 7,7M12,2C8.43,2 5.23,3.54 3,6L12,22L21,6C18.78,3.54 15.57,2 12,2Z"; -var mdiPlay = "M8,5.14V19.14L19,12.14L8,5.14Z"; -var mdiPlayBox = "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M10 16V8L15 12"; -var mdiPlayBoxMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M12,14.5V5.5L18,10L12,14.5Z"; -var mdiPlayBoxMultipleOutline = "M4 6H2V20C2 21.1 2.9 22 4 22H18V20H4V6M20 4V16H8V4H20M20 2H8C6.9 2 6 2.9 6 4V16C6 17.1 6.9 18 8 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M12 14.5V5.5L18 10L12 14.5Z"; -var mdiPlayBoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,8V16L15,12L10,8Z"; -var mdiPlayCircle = "M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiPlayCircleOutline = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10,16.5L16,12L10,7.5V16.5Z"; -var mdiPlayNetwork = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M10,14V6L15,10L10,14Z"; -var mdiPlayNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M10,14V6L15,10L10,14Z"; -var mdiPlayOutline = "M8.5,8.64L13.77,12L8.5,15.36V8.64M6.5,5V19L17.5,12"; -var mdiPlayPause = "M3,5V19L11,12M13,19H16V5H13M18,5V19H21V5"; -var mdiPlayProtectedContent = "M2,5V18H11V16H4V7H17V11H19V5H2M9,9V14L12.5,11.5L9,9M21.04,11.67L16.09,16.62L13.96,14.5L12.55,15.91L16.09,19.45L22.45,13.09L21.04,11.67Z"; -var mdiPlaySpeed = "M13,2.05V4.05C17.39,4.59 20.5,8.58 19.96,12.97C19.5,16.61 16.64,19.5 13,19.93V21.93C18.5,21.38 22.5,16.5 21.95,11C21.5,6.25 17.73,2.5 13,2.03V2.05M5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37L5.67,19.74M7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06C9.05,2.25 7.19,3 5.67,4.26L7.1,5.74M5.69,7.1L4.26,5.67C3,7.19 2.25,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1M4.06,13H2.06C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13M10,16.5L16,12L10,7.5V16.5Z"; -var mdiPlaylistCheck = "M14,10H2V12H14V10M14,6H2V8H14V6M2,16H10V14H2V16M21.5,11.5L23,13L16,20L11.5,15.5L13,14L16,17L21.5,11.5Z"; -var mdiPlaylistEdit = "M2,6V8H14V6H2M2,10V12H14V10H2M20.04,10.13C19.9,10.13 19.76,10.19 19.65,10.3L18.65,11.3L20.7,13.35L21.7,12.35C21.92,12.14 21.92,11.79 21.7,11.58L20.42,10.3C20.31,10.19 20.18,10.13 20.04,10.13M18.07,11.88L12,17.94V20H14.06L20.12,13.93L18.07,11.88M2,14V16H10V14H2Z"; -var mdiPlaylistMinus = "M2,16H10V14H2M12,14V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z"; -var mdiPlaylistMusic = "M15,6H3V8H15V6M15,10H3V12H15V10M3,16H11V14H3V16M17,6V14.18C16.69,14.07 16.35,14 16,14A3,3 0 0,0 13,17A3,3 0 0,0 16,20A3,3 0 0,0 19,17V8H22V6H17Z"; -var mdiPlaylistMusicOutline = "M15,6V8H3V6H15M15,10V12H3V10H15M3,16V14H11V16H3M17,6H22V8H19V17A3,3 0 0,1 16,20A3,3 0 0,1 13,17A3,3 0 0,1 16,14C16.35,14 16.69,14.07 17,14.18V6M16,16A1,1 0 0,0 15,17A1,1 0 0,0 16,18A1,1 0 0,0 17,17A1,1 0 0,0 16,16Z"; -var mdiPlaylistPlay = "M19,9H2V11H19V9M19,5H2V7H19V5M2,15H15V13H2V15M17,13V19L22,16L17,13Z"; -var mdiPlaylistPlus = "M2,16H10V14H2M18,14V10H16V14H12V16H16V20H18V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z"; -var mdiPlaylistRemove = "M2,6V8H14V6H2M2,10V12H11V10H2M14.17,10.76L12.76,12.17L15.59,15L12.76,17.83L14.17,19.24L17,16.41L19.83,19.24L21.24,17.83L18.41,15L21.24,12.17L19.83,10.76L17,13.59L14.17,10.76M2,14V16H11V14H2Z"; -var mdiPlaylistStar = "M17,19.09L19.45,20.58L18.8,17.77L21,15.89L18.11,15.64L17,13L15.87,15.64L13,15.89L15.18,17.77L14.5,20.58L17,19.09M4,14H12V16H4V14M4,6H16V8H4V6M4,10H16V12H4V10Z"; -var mdiPlex = "M4,2C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2H4M8.56,6H12.06L15.5,12L12.06,18H8.56L12,12L8.56,6Z"; -var mdiPlus = "M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"; -var mdiPlusBox = "M17,13H13V17H11V13H7V11H11V7H13V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiPlusBoxMultiple = "M19,11H15V15H13V11H9V9H13V5H15V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z"; -var mdiPlusBoxMultipleOutline = "M18 11H15V14H13V11H10V9H13V6H15V9H18M20 4V16H8V4H20M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6Z"; -var mdiPlusBoxOutline = "M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M11,7H13V11H17V13H13V17H11V13H7V11H11V7Z"; -var mdiPlusCircle = "M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiPlusCircleMultiple = "M2 12C2 9.2 3.6 6.8 6 5.7V3.5C2.5 4.8 0 8.1 0 12S2.5 19.2 6 20.5V18.3C3.6 17.2 2 14.8 2 12M15 3C10 3 6 7 6 12S10 21 15 21 24 17 24 12 20 3 15 3M20 13H16V17H14V13H10V11H14V7H16V11H20V13Z"; -var mdiPlusCircleMultipleOutline = "M16,8H14V11H11V13H14V16H16V13H19V11H16M2,12C2,9.21 3.64,6.8 6,5.68V3.5C2.5,4.76 0,8.09 0,12C0,15.91 2.5,19.24 6,20.5V18.32C3.64,17.2 2,14.79 2,12M15,3C10.04,3 6,7.04 6,12C6,16.96 10.04,21 15,21C19.96,21 24,16.96 24,12C24,7.04 19.96,3 15,3M15,19C11.14,19 8,15.86 8,12C8,8.14 11.14,5 15,5C18.86,5 22,8.14 22,12C22,15.86 18.86,19 15,19Z"; -var mdiPlusCircleOutline = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z"; -var mdiPlusMinus = "M11,4V9H6V11H11V16H13V11H18V9H13V4H11M6,18V20H18V18H6Z"; -var mdiPlusMinusBox = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M11,6H13V9H16V11H13V14H11V11H8V9H11V6M8,16H16V18H8V16Z"; -var mdiPlusMinusVariant = "M3 7H6V4H8V7H11V9H8V12H6V9H3V7M13 15H21V17H13V15M16.04 3H18.35L7.96 21H5.65L16.04 3Z"; -var mdiPlusNetwork = "M16,11V9H13V6H11V9H8V11H11V14H13V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z"; -var mdiPlusNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M15,11H13V13H11V11H9V9H11V7H13V9H15V11Z"; -var mdiPlusOne = "M10,8V12H14V14H10V18H8V14H4V12H8V8H10M14.5,6.08L19,5V18H17V7.4L14.5,7.9V6.08Z"; -var mdiPlusOutline = "M4,9H9V4H15V9H20V15H15V20H9V15H4V9M11,13V18H13V13H18V11H13V6H11V11H6V13H11Z"; -var mdiPlusThick = "M20 14H14V20H10V14H4V10H10V4H14V10H20V14Z"; -var mdiPodcast = "M17,18.25V21.5H7V18.25C7,16.87 9.24,15.75 12,15.75C14.76,15.75 17,16.87 17,18.25M12,5.5A6.5,6.5 0 0,1 18.5,12C18.5,13.25 18.15,14.42 17.54,15.41L16,14.04C16.32,13.43 16.5,12.73 16.5,12C16.5,9.5 14.5,7.5 12,7.5C9.5,7.5 7.5,9.5 7.5,12C7.5,12.73 7.68,13.43 8,14.04L6.46,15.41C5.85,14.42 5.5,13.25 5.5,12A6.5,6.5 0 0,1 12,5.5M12,1.5A10.5,10.5 0 0,1 22.5,12C22.5,14.28 21.77,16.39 20.54,18.11L19.04,16.76C19.96,15.4 20.5,13.76 20.5,12A8.5,8.5 0 0,0 12,3.5A8.5,8.5 0 0,0 3.5,12C3.5,13.76 4.04,15.4 4.96,16.76L3.46,18.11C2.23,16.39 1.5,14.28 1.5,12A10.5,10.5 0 0,1 12,1.5M12,9.5A2.5,2.5 0 0,1 14.5,12A2.5,2.5 0 0,1 12,14.5A2.5,2.5 0 0,1 9.5,12A2.5,2.5 0 0,1 12,9.5Z"; -var mdiPodium = "M12,7.09L14.45,8.58L13.8,5.77L16,3.89L13.11,3.64L12,1L10.87,3.64L8,3.89L10.18,5.77L9.5,8.58L12,7.09M4,13.09L6.45,14.58L5.8,11.77L8,9.89L5.11,9.64L4,7L2.87,9.64L0,9.89L2.18,11.77L1.5,14.58L4,13.09M20,10.09L22.45,11.58L21.8,8.77L24,6.89L21.11,6.64L20,4L18.87,6.64L16,6.89L18.18,8.77L17.5,11.58L20,10.09M15,23H9V10H15V23M7,23H1V17H7V23M23,23H17V13H23V23Z"; -var mdiPodiumBronze = "M4,13.09L6.45,14.58L5.8,11.77L8,9.89L5.11,9.64L4,7L2.87,9.64L0,9.89L2.18,11.77L1.5,14.58L4,13.09M7,23H1V17H7V23M9,10V23H15V10H9M13,21H11V12H13V21M17,13V23H23V13H17M21,21H19V15H21V21Z"; -var mdiPodiumGold = "M12,7.09L14.45,8.58L13.8,5.77L16,3.89L13.11,3.64L12,1L10.87,3.64L8,3.89L10.18,5.77L9.5,8.58L12,7.09M15,23H9V10H15V23M1,17V23H7V17H1M5,21H3V19H5V21M17,13V23H23V13H17M21,21H19V15H21V21Z"; -var mdiPodiumSilver = "M20,10.09L22.45,11.58L21.8,8.77L24,6.89L21.11,6.64L20,4L18.87,6.64L16,6.89L18.18,8.77L17.5,11.58L20,10.09M23,23H17V13H23V23M1,17V23H7V17H1M5,21H3V19H5V21M9,10V23H15V10H9M13,21H11V12H13V21Z"; -var mdiPointOfSale = "M20,5C19.4,5 19,5.5 19,6.1V16C19,16.6 19.4,17 20,17.1C20.6,17.1 21,16.6 21,16V6.1C21,5.5 20.6,5 20,5M16.4,2H4.6C3.7,2 3,2.7 3,3.6V17.4C3,18.3 3.7,19 4.6,19H6V21C6,21.6 6.4,22 7,22H13C13.6,22 14,21.6 14,21V19H16.4C17.3,19 18,18.3 18,17.4V3.6C18,2.7 17.3,2 16.4,2M5,8H8V10H5V8M12,11V13H9V11H12M9,10V8H12V10H9M12,14V16H9V14H12M5,11H8V13H5V11M5,16V14H8V16H5M8,21H7V19H8V21M13,21H10V19H13V21M16,16H13V14H16V16M16,13H13V11H16V13M16,10H13V8H16V10M16,6H5V4H16V6Z"; -var mdiPokeball = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.92,4 4.55,7.05 4.06,11H8.13C8.57,9.27 10.14,8 12,8C13.86,8 15.43,9.27 15.87,11H19.94C19.45,7.05 16.08,4 12,4M12,20C16.08,20 19.45,16.95 19.94,13H15.87C15.43,14.73 13.86,16 12,16C10.14,16 8.57,14.73 8.13,13H4.06C4.55,16.95 7.92,20 12,20M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; -var mdiPokemonGo = "M12,2A7,7 0 0,1 19,9C19,10.4 18.59,11.71 17.88,12.8L12,22.21L6.12,12.8C5.41,11.71 5,10.4 5,9A7,7 0 0,1 12,2M12,3.5C9.3,3.5 7.06,5.44 6.59,8H9.17C9.58,6.83 10.69,6 12,6C13.31,6 14.42,6.83 14.83,8H17.41C16.94,5.44 14.7,3.5 12,3.5M12,12C10.69,12 9.58,11.17 9.17,10H6.59C6.72,10.69 6.97,11.34 7.34,11.91V11.91L7.38,12C8.36,13.5 10.06,14.5 12,14.5C13.94,14.5 15.64,13.5 16.62,12L16.66,11.91V11.91C17.03,11.34 17.28,10.69 17.41,10H14.83C14.42,11.17 13.31,12 12,12M12,7.5A1.5,1.5 0 0,0 10.5,9A1.5,1.5 0 0,0 12,10.5A1.5,1.5 0 0,0 13.5,9A1.5,1.5 0 0,0 12,7.5Z"; -var mdiPokerChip = "M23,12C23,18.08 18.08,23 12,23C5.92,23 1,18.08 1,12C1,5.92 5.92,1 12,1C18.08,1 23,5.92 23,12M13,4.06C15.13,4.33 17.07,5.45 18.37,7.16L20.11,6.16C18.45,3.82 15.86,2.3 13,2V4.06M3.89,6.16L5.63,7.16C6.93,5.45 8.87,4.33 11,4.06V2C8.14,2.3 5.55,3.82 3.89,6.16M2.89,16.1L4.62,15.1C3.79,13.12 3.79,10.88 4.62,8.9L2.89,7.9C1.7,10.5 1.7,13.5 2.89,16.1M11,19.94C8.87,19.67 6.93,18.55 5.63,16.84L3.89,17.84C5.55,20.18 8.14,21.7 11,22V19.94M20.11,17.84L18.37,16.84C17.07,18.55 15.13,19.67 13,19.94V21.94C15.85,21.65 18.44,20.16 20.11,17.84M21.11,16.1C22.3,13.5 22.3,10.5 21.11,7.9L19.38,8.9C20.21,10.88 20.21,13.12 19.38,15.1L21.11,16.1M15,12L12,7L9,12L12,17L15,12Z"; -var mdiPolaroid = "M6,3H18A2,2 0 0,1 20,5V19A2,2 0 0,1 18,21H6A2,2 0 0,1 4,19V5A2,2 0 0,1 6,3M6,5V17H18V5H6Z"; -var mdiPoliceBadge = "M22 4L20 2C18.85 2.64 17.4 3 16 3C14.6 3 13.14 2.63 12 2C10.86 2.63 9.4 3 8 3C6.6 3 5.15 2.64 4 2L2 4C2 4 4 6 4 8S2 14 2 16C2 20 12 22 12 22S22 20 22 16C22 14 20 10 20 8S22 4 22 4M15.05 16.45L11.97 14.59L8.9 16.45L9.72 12.95L7 10.61L10.58 10.3L11.97 7L13.37 10.29L16.95 10.6L14.23 12.94L15.05 16.45Z"; -var mdiPoliceBadgeOutline = "M12 4.21C13.24 4.72 14.65 5 16 5C17.05 5 18.1 4.84 19.08 4.54C18.5 5.5 18 6.71 18 8C18 9.32 18.54 10.93 19.1 12.63C19.5 13.83 20 15.33 20 16C20 17.03 16.47 19 12 19.96C7.54 19 4 17.03 4 16C4 15.33 4.5 13.83 4.9 12.63C5.46 10.93 6 9.32 6 8C6 6.71 5.5 5.5 4.92 4.54C5.9 4.84 6.96 5 8 5C9.35 5 10.76 4.72 12 4.21M20 2C18.85 2.64 17.4 3 16 3C14.6 3 13.14 2.63 12 2C10.86 2.63 9.4 3 8 3C6.6 3 5.15 2.64 4 2L2 4C2 4 4 6 4 8S2 14 2 16C2 20 12 22 12 22S22 20 22 16C22 14 20 10 20 8S22 4 22 4L20 2M15.05 16.45L11.97 14.59L8.9 16.45L9.72 12.95L7 10.61L10.58 10.3L11.97 7L13.37 10.29L16.95 10.6L14.23 12.94L15.05 16.45"; -var mdiPoll = "M3,22V8H7V22H3M10,22V2H14V22H10M17,22V14H21V22H17Z"; -var mdiPollBox = "M17,17H15V13H17M13,17H11V7H13M9,17H7V10H9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiPollBoxOutline = "M9 17H7V10H9M13 17H11V7H13M17 17H15V13H17M19.5 19.1H4.5V5H19.5M19.5 3H4.5C3.4 3 2.5 3.9 2.5 5V19C2.5 20.1 3.4 21 4.5 21H19.5C20.6 21 21.5 20.1 21.5 19V5C21.5 3.9 20.6 3 19.5 3Z"; -var mdiPolo = "M22 9.5C22 10.88 20.88 12 19.5 12S17 10.88 17 9.5 18.12 7 19.5 7 22 8.12 22 9.5M11 17V3H8V17H2L6 21H13V17H11M16 17H14V21H16V17Z"; -var mdiPolymer = "M19,4H15L7.1,16.63L4.5,12L9,4H5L0.5,12L5,20H9L16.89,7.37L19.5,12L15,20H19L23.5,12L19,4Z"; -var mdiPool = "M2,15C3.67,14.25 5.33,13.5 7,13.17V5A3,3 0 0,1 10,2C11.31,2 12.42,2.83 12.83,4H10A1,1 0 0,0 9,5V6H14V5A3,3 0 0,1 17,2C18.31,2 19.42,2.83 19.83,4H17A1,1 0 0,0 16,5V14.94C18,14.62 20,13 22,13V15C19.78,15 17.56,17 15.33,17C13.11,17 10.89,15 8.67,15C6.44,15 4.22,16 2,17V15M14,8H9V10H14V8M14,12H9V13C10.67,13.16 12.33,14.31 14,14.79V12M2,19C4.22,18 6.44,17 8.67,17C10.89,17 13.11,19 15.33,19C17.56,19 19.78,17 22,17V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V19Z"; -var mdiPopcorn = "M7,22H4.75C4.75,22 4,22 3.81,20.65L2.04,3.81L2,3.5C2,2.67 2.9,2 4,2C5.1,2 6,2.67 6,3.5C6,2.67 6.9,2 8,2C9.1,2 10,2.67 10,3.5C10,2.67 10.9,2 12,2C13.09,2 14,2.66 14,3.5V3.5C14,2.67 14.9,2 16,2C17.1,2 18,2.67 18,3.5C18,2.67 18.9,2 20,2C21.1,2 22,2.67 22,3.5L21.96,3.81L20.19,20.65C20,22 19.25,22 19.25,22H17L16.5,22H13.75L10.25,22H7.5L7,22M17.85,4.93C17.55,4.39 16.84,4 16,4C15.19,4 14.36,4.36 14,4.87L13.78,20H16.66L17.85,4.93M10,4.87C9.64,4.36 8.81,4 8,4C7.16,4 6.45,4.39 6.15,4.93L7.34,20H10.22L10,4.87Z"; -var mdiPost = "M3 3V21H21V3H3M18 18H6V17H18V18M18 16H6V15H18V16M18 12H6V6H18V12Z"; -var mdiPostOutline = "M19 5V19H5V5H19M21 3H3V21H21V3M17 17H7V16H17V17M17 15H7V14H17V15M17 12H7V7H17V12Z"; -var mdiPostageStamp = "M2,2V5.5C3.1,5.5 4,6.62 4,8C4,9.38 3.1,10.5 2,10.5V13.5C3.1,13.5 4,14.62 4,16C4,17.38 3.1,18.5 2,18.5V22H5.5C5.5,20.9 6.62,20 8,20C9.38,20 10.5,20.9 10.5,22H13.5C13.5,20.9 14.62,20 16,20C17.38,20 18.5,20.9 18.5,22H22V18.5C20.9,18.5 20,17.38 20,16V16C20,14.62 20.9,13.5 22,13.5V10.5C20.9,10.5 20,9.38 20,8V8C20,6.62 20.9,5.5 22,5.5V2H18.5C18.5,3.1 17.38,4 16,4C14.62,4 13.5,3.1 13.5,2H10.5C10.5,3.1 9.38,4 8,4C6.62,4 5.5,3.1 5.5,2H2M6,6H18V18H6V6M9,7A2,2 0 0,0 7,9A2,2 0 0,0 9,11A2,2 0 0,0 11,9A2,2 0 0,0 9,7M17,10L14,13L12,12L7,17H17V10Z"; -var mdiPot = "M19 19C19 20.1 18.1 21 17 21H7C5.9 21 5 20.1 5 19V12H3V10H21V12H19V19Z"; -var mdiPotMix = "M14.6 9L18 3.1L19.7 4.1L16.9 9H14.6M14 10H3V12H5V19C5 20.1 5.9 21 7 21H17C18.1 21 19 20.1 19 19V12H21V10H14Z"; -var mdiPotMixOutline = "M14.6 9L18 3.1L19.7 4.1L16.9 9H14.6M16.3 10H21V12H19V19C19 20.1 18.1 21 17 21H7C5.9 21 5 20.1 5 19V12H3V10H16.3M17 12H7V19H17V12Z"; -var mdiPotOutline = "M3 10V12H5V19C5 20.1 5.9 21 7 21H17C18.1 21 19 20.1 19 19V12H21V10H3M7 12H17V19H7V12Z"; -var mdiPotSteam = "M19 19C19 20.11 18.11 21 17 21H7C5.9 21 5 20.11 5 19V12H3V10H21V12H19M8 1.5C6.15 1.5 4.65 3 4.65 4.85C4.65 6.7 6.15 8.2 8 8.2H9.53C9.92 8.2 10.29 8.3 10.61 8.5H12.63C12.05 7.45 10.86 6.75 9.53 6.75H8C7 6.75 6.15 5.77 6.15 4.75C6.15 3.73 7 3 8 3M12.85 2C12.85 3 12 3.85 11 3.85V5.35C12.92 5.35 14.5 6.7 14.89 8.5H16.42C16.12 6.67 14.96 5.15 13.35 4.38C13.97 3.77 14.35 2.93 14.35 2Z"; -var mdiPotSteamOutline = "M8 1.5C6.15 1.5 4.65 3 4.65 4.85C4.65 6.7 6.15 8.2 8 8.2H9.53C9.92 8.2 10.29 8.3 10.61 8.5H12.63C12.05 7.45 10.86 6.75 9.53 6.75H8C7 6.75 6.15 5.77 6.15 4.75C6.15 3.73 7 3 8 3V1.5M12.85 2C12.85 3 12 3.85 11 3.85V5.35C12.92 5.35 14.5 6.7 14.89 8.5H16.42C16.12 6.67 14.96 5.15 13.35 4.38C13.97 3.77 14.35 2.93 14.35 2H12.85M3 10V12H5V19C5 20.11 5.9 21 7 21H17C18.11 21 19 20.11 19 19V12H21V10H3M7 12H17V19H7V12Z"; -var mdiPound = "M5.41,21L6.12,17H2.12L2.47,15H6.47L7.53,9H3.53L3.88,7H7.88L8.59,3H10.59L9.88,7H15.88L16.59,3H18.59L17.88,7H21.88L21.53,9H17.53L16.47,15H20.47L20.12,17H16.12L15.41,21H13.41L14.12,17H8.12L7.41,21H5.41M9.53,9L8.47,15H14.47L15.53,9H9.53Z"; -var mdiPoundBox = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M7,18H9L9.35,16H13.35L13,18H15L15.35,16H17.35L17.71,14H15.71L16.41,10H18.41L18.76,8H16.76L17.12,6H15.12L14.76,8H10.76L11.12,6H9.12L8.76,8H6.76L6.41,10H8.41L7.71,14H5.71L5.35,16H7.35L7,18M10.41,10H14.41L13.71,14H9.71L10.41,10Z"; -var mdiPoundBoxOutline = "M19 19H5V5H19M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M7 9H9.31L9.63 6H11.63L11.31 9H13.31L13.63 6H15.63L15.31 9H17V11H15.1L14.9 13H17V15H14.69L14.37 18H12.37L12.69 15H10.69L10.37 18H8.37L8.69 15H7V13H8.9L9.1 11H7V9M11.1 11L10.9 13H12.9L13.1 11Z"; -var mdiPower = "M16.56,5.44L15.11,6.89C16.84,7.94 18,9.83 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12C6,9.83 7.16,7.94 8.88,6.88L7.44,5.44C5.36,6.88 4,9.28 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,9.28 18.64,6.88 16.56,5.44M13,3H11V13H13"; -var mdiPowerCycle = "M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19M13,17H11V7H13V17Z"; -var mdiPowerOff = "M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19Z"; -var mdiPowerOn = "M11,3H13V21H11V3Z"; -var mdiPowerPlug = "M16,7V3H14V7H10V3H8V7H8C7,7 6,8 6,9V14.5L9.5,18V21H14.5V18L18,14.5V9C18,8 17,7 16,7Z"; -var mdiPowerPlugOff = "M20.84 22.73L15.31 17.2L14.5 18V21H9.5V18L6 14.5V9C6 8.7 6.1 8.41 6.25 8.14L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M18 14.5V9C18 8 17 7 16 7V3H14V7H10.2L17.85 14.65L18 14.5M10 3H8V4.8L10 6.8V3Z"; -var mdiPowerPlugOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L6.25 8.14C6.1 8.41 6 8.7 6 9V14.5L9.5 18V21H14.5V18L15.31 17.2L20.84 22.73L22.11 21.46M13.09 16.59L12.67 17H11.33L10.92 16.59L8 13.67V9.89L13.89 15.78L13.09 16.59M12.2 9L10.2 7H14V3H16V7C17 7 18 8 18 9V14.5L17.85 14.65L16 12.8V9.09C16 9.06 15.95 9 15.92 9H12.2M10 6.8L8 4.8V3H10V6.8Z"; -var mdiPowerPlugOutline = "M16 7V3H14V7H10V3H8V7C7 7 6 8 6 9V14.5L9.5 18V21H14.5V18L18 14.5V9C18 8 17 7 16 7M16 13.67L13.09 16.59L12.67 17H11.33L10.92 16.59L8 13.67V9.09C8 9.06 8.06 9 8.09 9H15.92C15.95 9 16 9.06 16 9.09V13.67Z"; -var mdiPowerSettings = "M15,24H17V22H15M16.56,4.44L15.11,5.89C16.84,6.94 18,8.83 18,11A6,6 0 0,1 12,17A6,6 0 0,1 6,11C6,8.83 7.16,6.94 8.88,5.88L7.44,4.44C5.36,5.88 4,8.28 4,11A8,8 0 0,0 12,19A8,8 0 0,0 20,11C20,8.28 18.64,5.88 16.56,4.44M13,2H11V12H13M11,24H13V22H11M7,24H9V22H7V24Z"; -var mdiPowerSleep = "M18.73,18C15.4,21.69 9.71,22 6,18.64C2.33,15.31 2.04,9.62 5.37,5.93C6.9,4.25 9,3.2 11.27,3C7.96,6.7 8.27,12.39 12,15.71C13.63,17.19 15.78,18 18,18C18.25,18 18.5,18 18.73,18Z"; -var mdiPowerSocket = "M15,15H17V11H15M7,15H9V11H7M11,13H13V9H11M8.83,7H15.2L19,10.8V17H5V10.8M8,5L3,10V19H21V10L16,5H8Z"; -var mdiPowerSocketAu = "M4.22,2A2.22,2.22 0 0,0 2,4.22V19.78C2,21 3,22 4.22,22H19.78A2.22,2.22 0 0,0 22,19.78V4.22C22,3 21,2 19.78,2H4.22M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M8.27,7.54L6.27,11L8,12L10,8.54L8.27,7.54M15.73,7.54L14,8.54L16,12L17.73,11L15.73,7.54M11,14V18H13V14H11Z"; -var mdiPowerSocketDe = "M4.22 2A2.22 2.22 0 0 0 2 4.22V19.78C2 21 3 22 4.22 22H19.78A2.22 2.22 0 0 0 22 19.78V4.22C22 3 21 2 19.78 2H4.22M11 4.07V6H13V4.07A8 8 0 0 1 20 12A8 8 0 0 1 13 19.93V18H11V19.93A8 8 0 0 1 4 12A8 8 0 0 1 11 4.07M7.5 10.5A1.5 1.5 0 0 0 6 12C6 12.83 6.66 13.5 7.5 13.5A1.5 1.5 0 0 0 9 12A1.5 1.5 0 0 0 7.5 10.5M16.5 10.5A1.5 1.5 0 0 0 15 12A1.5 1.5 0 0 0 16.5 13.5A1.5 1.5 0 0 0 18 12A1.5 1.5 0 0 0 16.5 10.5Z"; -var mdiPowerSocketEu = "M7.5,10.5A1.5,1.5 0 0,1 9,12A1.5,1.5 0 0,1 7.5,13.5C6.66,13.5 6,12.83 6,12A1.5,1.5 0 0,1 7.5,10.5M16.5,10.5A1.5,1.5 0 0,1 18,12A1.5,1.5 0 0,1 16.5,13.5A1.5,1.5 0 0,1 15,12A1.5,1.5 0 0,1 16.5,10.5M4.22,2H19.78C21,2 22,3 22,4.22V19.78A2.22,2.22 0 0,1 19.78,22H4.22C3,22 2,21 2,19.78V4.22A2.22,2.22 0 0,1 4.22,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiPowerSocketFr = "M4.22 2A2.22 2.22 0 0 0 2 4.22V19.78C2 21 3 22 4.22 22H19.78A2.22 2.22 0 0 0 22 19.78V4.22C22 3 21 2 19.78 2H4.22M12 4A8 8 0 0 1 20 12A8 8 0 0 1 12 20A8 8 0 0 1 4 12A8 8 0 0 1 12 4M12 6A1.5 1.5 0 0 0 10.5 7.5A1.5 1.5 0 0 0 12 9A1.5 1.5 0 0 0 13.5 7.5A1.5 1.5 0 0 0 12 6M7.5 10.5A1.5 1.5 0 0 0 6 12C6 12.83 6.66 13.5 7.5 13.5A1.5 1.5 0 0 0 9 12A1.5 1.5 0 0 0 7.5 10.5M16.5 10.5A1.5 1.5 0 0 0 15 12A1.5 1.5 0 0 0 16.5 13.5A1.5 1.5 0 0 0 18 12A1.5 1.5 0 0 0 16.5 10.5Z"; -var mdiPowerSocketIt = "M10.5 16.5C10.5 15.68 11.17 15 12 15C12.83 15 13.5 15.68 13.5 16.5C13.5 17.34 12.83 18 12 18C11.17 18 10.5 17.34 10.5 16.5M10.5 7.5C10.5 6.67 11.17 6 12 6C12.83 6 13.5 6.67 13.5 7.5C13.5 8.33 12.83 9 12 9C11.17 9 10.5 8.33 10.5 7.5M4.22 2H19.78C21 2 22 3 22 4.22V19.78C22 21 21 22 19.78 22H4.22C3 22 2 21 2 19.78V4.22C2 3 3 2 4.22 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M10.5 12C10.5 11.17 11.17 10.5 12 10.5C12.83 10.5 13.5 11.17 13.5 12C13.5 12.83 12.83 13.5 12 13.5C11.17 13.5 10.5 12.83 10.5 12Z"; -var mdiPowerSocketJp = "M10 9.5V14.5H8V9.5M19.78 2C21 2 22 3 22 4.22V19.78C22 21 21 22 19.78 22H4.22C3 22 2 21 2 19.78V4.22C2 3 3 2 4.22 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M16 9.5V14.5H14V9.5Z"; -var mdiPowerSocketUk = "M4 2A2 2 0 0 0 2 4V20A2 2 0 0 0 4 22H20A2 2 0 0 0 22 20V4A2 2 0 0 0 20 2H4M4 4H20V20H4V4M11 7V11H13V7H11M6 14.75V17H9.5V14.75H6M14.5 14.75V17H18V14.75H14.5Z"; -var mdiPowerSocketUs = "M8,7H10V12H8V7M4.22,2H19.78C21,2 22,3 22,4.22V19.78A2.22,2.22 0 0,1 19.78,22H4.22C3,22 2,21 2,19.78V4.22A2.22,2.22 0 0,1 4.22,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M14,7.5H16V11.5H14V7.5M10.5,16.25A1.5,1.5 0 0,1 12,14.75A1.5,1.5 0 0,1 13.5,16.25V17H10.5V16.25Z"; -var mdiPowerStandby = "M13,3H11V13H13V3M17.83,5.17L16.41,6.59C18.05,7.91 19,9.9 19,12A7,7 0 0,1 12,19C8.14,19 5,15.88 5,12C5,9.91 5.95,7.91 7.58,6.58L6.17,5.17C2.38,8.39 1.92,14.07 5.14,17.86C8.36,21.64 14.04,22.1 17.83,18.88C19.85,17.17 21,14.65 21,12C21,9.37 19.84,6.87 17.83,5.17Z"; -var mdiPowershell = "M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z"; -var mdiPrescription = "M4,4V10L4,14H6V10H8L13.41,15.41L9.83,19L11.24,20.41L14.83,16.83L18.41,20.41L19.82,19L16.24,15.41L19.82,11.83L18.41,10.41L14.83,14L10.83,10H11A3,3 0 0,0 14,7A3,3 0 0,0 11,4H4M6,6H11A1,1 0 0,1 12,7A1,1 0 0,1 11,8H6V6Z"; -var mdiPresentation = "M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5Z"; -var mdiPresentationPlay = "M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5M11.85,11.85C11.76,11.94 11.64,12 11.5,12A0.5,0.5 0 0,1 11,11.5V7.5A0.5,0.5 0 0,1 11.5,7C11.64,7 11.76,7.06 11.85,7.15L13.25,8.54C13.57,8.86 13.89,9.18 13.89,9.5C13.89,9.82 13.57,10.14 13.25,10.46L11.85,11.85Z"; -var mdiPretzel = "M5.15 15.84C3.81 14.27 3 12.23 3 10V9.97C3 7.22 5.25 5 8 5C9.64 5 11.09 5.79 12 7C12.91 5.79 14.37 5 16 5C18.76 5 21 7.24 21 10C21 12.23 20.19 14.27 18.85 15.84L20.21 17.2L18.79 18.61L17.39 17.21C15.89 18.33 14 19 12 19C10 19 8.11 18.33 6.61 17.21L5.21 18.61L3.79 17.2L5.15 15.84M15.96 15.77L12 11.82L8.04 15.77C9.17 16.55 10.53 17 12 17C13.47 17 14.83 16.55 15.96 15.77M11 10C11 8.34 9.65 7 8 7C6.34 7 5 8.34 5 10C5 11.68 5.59 13.21 6.57 14.42L11 10M17.43 14.42C18.41 13.21 19 11.68 19 10V10C19 8.33 17.65 7 16 7C14.35 7 13 8.34 13 10L17.43 14.42Z"; -var mdiPrinter = "M18,3H6V7H18M19,12A1,1 0 0,1 18,11A1,1 0 0,1 19,10A1,1 0 0,1 20,11A1,1 0 0,1 19,12M16,19H8V14H16M19,8H5A3,3 0 0,0 2,11V17H6V21H18V17H22V11A3,3 0 0,0 19,8Z"; -var mdiPrinter3d = "M19,6A1,1 0 0,0 20,5A1,1 0 0,0 19,4A1,1 0 0,0 18,5A1,1 0 0,0 19,6M19,2A3,3 0 0,1 22,5V11H18V7H6V11H2V5A3,3 0 0,1 5,2H19M18,18.25C18,18.63 17.79,18.96 17.47,19.13L12.57,21.82C12.4,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L6.53,19.13C6.21,18.96 6,18.63 6,18.25V13C6,12.62 6.21,12.29 6.53,12.12L11.43,9.68C11.59,9.56 11.79,9.5 12,9.5C12.21,9.5 12.4,9.56 12.57,9.68L17.47,12.12C17.79,12.29 18,12.62 18,13V18.25M12,11.65L9.04,13L12,14.6L14.96,13L12,11.65M8,17.66L11,19.29V16.33L8,14.71V17.66M16,17.66V14.71L13,16.33V19.29L16,17.66Z"; -var mdiPrinter3dNozzle = "M7,2H17V8H19V13H16.5L13,17H11L7.5,13H5V8H7V2M10,22H2V20H10A1,1 0 0,0 11,19V18H13V19A3,3 0 0,1 10,22Z"; -var mdiPrinter3dNozzleAlert = "M7 2H17V8H19V13H16.5L13 17H11L7.5 13H5V8H7V2M10 22H2V20H10C10.6 20 11 19.5 11 19V18H13V19C13 20.7 11.7 22 10 22M21 13V7H23V13H21M21 17V15H23V17H21Z"; -var mdiPrinter3dNozzleAlertOutline = "M7 2H17V7H19V13H16.5L13 17H11L7.5 13H5V7H7V2M10 22H2V20H10C10.6 20 11 19.5 11 19V18H13V19C13 20.7 11.7 22 10 22M7 9V11H8.5L12 15L15.5 11H17V9H15V4H9V9H7M21 13V7H23V13H21M21 17V15H23V17H21Z"; -var mdiPrinter3dNozzleOutline = "M7,2H17V7H19V13H16.5L13,17H11L7.5,13H5V7H7V2M10,22H2V20H10A1,1 0 0,0 11,19V18H13V19A3,3 0 0,1 10,22M7,9V11H8.5L12,15L15.5,11H17V9H15V4H9V9H7Z"; -var mdiPrinterAlert = "M16 3H4V7H16M17 12C16.4 12 16 11.6 16 11S16.4 10 17 10 18 10.4 18 11 17.6 12 17 12M14 19H6V14H14M17 8H3C1.3 8 0 9.3 0 11V17H4V21H16V17H20V11C20 9.3 18.7 8 17 8M24 13H22V7H24V13M24 17H22V15H24V17Z"; -var mdiPrinterCheck = "M18 7H6V3H18V7M6 21V17H2V11C2 9.34 3.34 8 5 8H19C20.66 8 22 9.34 22 11V13.81C21.12 13.3 20.1 13 19 13C17.77 13 16.64 13.37 15.69 14H8V19H13C13 19.7 13.13 20.37 13.35 21H6M18 11C18 11.55 18.45 12 19 12S20 11.55 20 11 19.55 10 19 10 18 10.45 18 11M23.5 17L22 15.5L18.5 19L16.5 17L15 18.5L18.5 22L23.5 17"; -var mdiPrinterEye = "M9.8 21C9.6 20.6 9.3 20.2 9.2 19.7L8.8 19H8V14H13C14.2 13.4 15.6 13 17 13C18.9 13 20.6 13.6 22 14.6V11C22 9.3 20.7 8 19 8H5C3.3 8 2 9.3 2 11V17H6V21H9.8M19 10C19.6 10 20 10.4 20 11S19.6 12 19 12 18 11.6 18 11 18.4 10 19 10M18 7H6V3H18V7M17 18C17.6 18 18 18.4 18 19S17.6 20 17 20 16 19.6 16 19 16.4 18 17 18M17 15C14.3 15 11.9 16.7 11 19C11.9 21.3 14.3 23 17 23S22.1 21.3 23 19C22.1 16.7 19.7 15 17 15M17 21.5C15.6 21.5 14.5 20.4 14.5 19S15.6 16.5 17 16.5 19.5 17.6 19.5 19 18.4 21.5 17 21.5Z"; -var mdiPrinterOff = "M6,3V4.18L8.82,7H18V3H6M2.28,3L1,4.27L4.75,8C3.19,8.15 2,9.44 2,11V17H6V21H17.73L19.73,23L21,21.72L2.28,3M9.82,8L18.82,17H22V11A3,3 0 0,0 19,8H9.82M19,10A1,1 0 0,1 20,11A1,1 0 0,1 19,12A1,1 0 0,1 18,11A1,1 0 0,1 19,10M8,14H10.73L15.73,19H8V14Z"; -var mdiPrinterPos = "M18 10H6A2 2 0 0 0 4 12V19H20V12A2 2 0 0 0 18 10M18 14H14V12H18M17 9H7V4H17Z"; -var mdiPrinterSearch = "M20.3 18.9C20.7 18.2 21 17.4 21 16.5C21 14 19 12 16.5 12S12 14 12 16.5 14 21 16.5 21C17.4 21 18.2 20.8 18.9 20.3L22 23.4L23.4 22L20.3 18.9M16.5 19C15.1 19 14 17.9 14 16.5S15.1 14 16.5 14 19 15.1 19 16.5 17.9 19 16.5 19M18 7H6V3H18V7M6 21V17H2V11C2 9.3 3.3 8 5 8H19C20.7 8 22 9.3 22 11V13C20.8 11.2 18.8 10 16.5 10C13.8 10 11.5 11.7 10.5 14H8V19H10.5C10.8 19.7 11.3 20.4 11.8 21H6Z"; -var mdiPrinterSettings = "M18,2V6H6V2H18M19,11A1,1 0 0,0 20,10A1,1 0 0,0 19,9A1,1 0 0,0 18,10A1,1 0 0,0 19,11M16,18V13H8V18H16M19,7A3,3 0 0,1 22,10V16H18V20H6V16H2V10A3,3 0 0,1 5,7H19M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z"; -var mdiPrinterWireless = "M4.93,3.92L6.34,5.33C9.46,2.2 14.53,2.2 17.66,5.33L19.07,3.92C15.17,0 8.84,0 4.93,3.92M7.76,6.75L9.17,8.16C10.73,6.6 13.26,6.6 14.83,8.16L16.24,6.75C13.9,4.41 10.1,4.41 7.76,6.75M19,14A1,1 0 0,1 18,13A1,1 0 0,1 19,12A1,1 0 0,1 20,13A1,1 0 0,1 19,14M16,20H8V15H16V20M19,10H5A3,3 0 0,0 2,13V18H6V22H18V18H22V13A3,3 0 0,0 19,10Z"; -var mdiPriorityHigh = "M14,19H22V17H14V19M14,13.5H22V11.5H14V13.5M14,8H22V6H14V8M2,12.5C2,8.92 4.92,6 8.5,6H9V4L12,7L9,10V8H8.5C6,8 4,10 4,12.5C4,15 6,17 8.5,17H12V19H8.5C4.92,19 2,16.08 2,12.5Z"; -var mdiPriorityLow = "M14,5H22V7H14V5M14,10.5H22V12.5H14V10.5M14,16H22V18H14V16M2,11.5C2,15.08 4.92,18 8.5,18H9V20L12,17L9,14V16H8.5C6,16 4,14 4,11.5C4,9 6,7 8.5,7H12V5H8.5C4.92,5 2,7.92 2,11.5Z"; -var mdiProfessionalHexagon = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M5,9V15H6.25V13H7A2,2 0 0,0 9,11A2,2 0 0,0 7,9H5M6.25,12V10H6.75A1,1 0 0,1 7.75,11A1,1 0 0,1 6.75,12H6.25M9.75,9V15H11V13H11.75L12.41,15H13.73L12.94,12.61C13.43,12.25 13.75,11.66 13.75,11A2,2 0 0,0 11.75,9H9.75M11,12V10H11.5A1,1 0 0,1 12.5,11A1,1 0 0,1 11.5,12H11M17,9C15.62,9 14.5,10.34 14.5,12C14.5,13.66 15.62,15 17,15C18.38,15 19.5,13.66 19.5,12C19.5,10.34 18.38,9 17,9M17,10.25C17.76,10.25 18.38,11.03 18.38,12C18.38,12.97 17.76,13.75 17,13.75C16.24,13.75 15.63,12.97 15.63,12C15.63,11.03 16.24,10.25 17,10.25Z"; -var mdiProgressAlert = "M13,2V4C17.39,4.54 20.5,8.53 19.96,12.92C19.5,16.56 16.64,19.43 13,19.88V21.88C18.5,21.28 22.45,16.34 21.85,10.85C21.33,6.19 17.66,2.5 13,2M11,2C9.04,2.18 7.19,2.95 5.67,4.2L7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06M4.26,5.67C3,7.19 2.24,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1L4.26,5.67M2.06,13C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13H2.06M7.06,18.37L5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37H7.06M13,13V7H11V13H13M13,17V15H11V17H13Z"; -var mdiProgressCheck = "M13,2.03V2.05L13,4.05C17.39,4.59 20.5,8.58 19.96,12.97C19.5,16.61 16.64,19.5 13,19.93V21.93C18.5,21.38 22.5,16.5 21.95,11C21.5,6.25 17.73,2.5 13,2.03M11,2.06C9.05,2.25 7.19,3 5.67,4.26L7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06M4.26,5.67C3,7.19 2.25,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1L4.26,5.67M15.5,8.5L10.62,13.38L8.5,11.26L7.44,12.32L10.62,15.5L16.56,9.56L15.5,8.5M2.06,13C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13H2.06M7.1,18.37L5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37Z"; -var mdiProgressClock = "M13,2.03V2.05L13,4.05C17.39,4.59 20.5,8.58 19.96,12.97C19.5,16.61 16.64,19.5 13,19.93V21.93C18.5,21.38 22.5,16.5 21.95,11C21.5,6.25 17.73,2.5 13,2.03M11,2.06C9.05,2.25 7.19,3 5.67,4.26L7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06M4.26,5.67C3,7.19 2.25,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1L4.26,5.67M2.06,13C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13H2.06M7.1,18.37L5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z"; -var mdiProgressClose = "M13 2.03V4.05C17.39 4.59 20.5 8.58 19.96 12.97C19.5 16.61 16.64 19.5 13 19.93V21.93C18.5 21.38 22.5 16.5 21.95 11C21.5 6.25 17.73 2.5 13 2.03M11 2.06C9.05 2.25 7.19 3 5.67 4.26L7.1 5.74C8.22 4.84 9.57 4.26 11 4.06V2.06M4.26 5.67C3 7.19 2.25 9.04 2.05 11H4.05C4.24 9.58 4.8 8.23 5.69 7.1L4.26 5.67M2.06 13C2.26 14.96 3.03 16.81 4.27 18.33L5.69 16.9C4.81 15.77 4.24 14.42 4.06 13H2.06M7.1 18.37L5.67 19.74C7.18 21 9.04 21.79 11 22V20C9.58 19.82 8.23 19.25 7.1 18.37M14.59 8L12 10.59L9.41 8L8 9.41L10.59 12L8 14.59L9.41 16L12 13.41L14.59 16L16 14.59L13.41 12L16 9.41L14.59 8Z"; -var mdiProgressDownload = "M13,2.03C17.73,2.5 21.5,6.25 21.95,11C22.5,16.5 18.5,21.38 13,21.93V19.93C16.64,19.5 19.5,16.61 19.96,12.97C20.5,8.58 17.39,4.59 13,4.05V2.05L13,2.03M11,2.06V4.06C9.57,4.26 8.22,4.84 7.1,5.74L5.67,4.26C7.19,3 9.05,2.25 11,2.06M4.26,5.67L5.69,7.1C4.8,8.23 4.24,9.58 4.05,11H2.05C2.25,9.04 3,7.19 4.26,5.67M2.06,13H4.06C4.24,14.42 4.81,15.77 5.69,16.9L4.27,18.33C3.03,16.81 2.26,14.96 2.06,13M7.1,18.37C8.23,19.25 9.58,19.82 11,20V22C9.04,21.79 7.18,21 5.67,19.74L7.1,18.37M12,16.5L7.5,12H11V8H13V12H16.5L12,16.5Z"; -var mdiProgressQuestion = "M13 2.03V4.05C17.39 4.59 20.5 8.58 19.96 12.97C19.5 16.61 16.64 19.5 13 19.93V21.93C18.5 21.38 22.5 16.5 21.95 11C21.5 6.25 17.73 2.5 13 2.03M11 2.06C9.05 2.25 7.19 3 5.67 4.26L7.1 5.74C8.22 4.84 9.57 4.26 11 4.06V2.06M4.26 5.67C3 7.19 2.25 9.04 2.05 11H4.05C4.24 9.58 4.8 8.23 5.69 7.1L4.26 5.67M2.06 13C2.26 14.96 3.03 16.81 4.27 18.33L5.69 16.9C4.81 15.77 4.24 14.42 4.06 13H2.06M7.1 18.37L5.67 19.74C7.18 21 9.04 21.79 11 22V20C9.58 19.82 8.23 19.25 7.1 18.37M20 4H44M13 18H11V16H13V18M13 15H11C11 11.75 14 12 14 10C14 8.9 13.1 8 12 8S10 8.9 10 10H8C8 7.79 9.79 6 12 6S16 7.79 16 10C16 12.5 13 12.75 13 15Z"; -var mdiProgressUpload = "M13,2.03C17.73,2.5 21.5,6.25 21.95,11C22.5,16.5 18.5,21.38 13,21.93V19.93C16.64,19.5 19.5,16.61 19.96,12.97C20.5,8.58 17.39,4.59 13,4.05V2.05L13,2.03M11,2.06V4.06C9.57,4.26 8.22,4.84 7.1,5.74L5.67,4.26C7.19,3 9.05,2.25 11,2.06M4.26,5.67L5.69,7.1C4.8,8.23 4.24,9.58 4.05,11H2.05C2.25,9.04 3,7.19 4.26,5.67M2.06,13H4.06C4.24,14.42 4.81,15.77 5.69,16.9L4.27,18.33C3.03,16.81 2.26,14.96 2.06,13M7.1,18.37C8.23,19.25 9.58,19.82 11,20V22C9.04,21.79 7.18,21 5.67,19.74L7.1,18.37M12,7.5L7.5,12H11V16H13V12H16.5L12,7.5Z"; -var mdiProgressWrench = "M13,2.03V2.05L13,4.05C17.39,4.59 20.5,8.58 19.96,12.97C19.5,16.61 16.64,19.5 13,19.93V21.93C18.5,21.38 22.5,16.5 21.95,11C21.5,6.25 17.73,2.5 13,2.03M11,2.06C9.05,2.25 7.19,3 5.67,4.26L7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06M4.26,5.67C3,7.19 2.25,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1L4.26,5.67M2.06,13C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13H2.06M7.1,18.37L5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37M16.82,15.19L12.71,11.08C13.12,10.04 12.89,8.82 12.03,7.97C11.13,7.06 9.78,6.88 8.69,7.38L10.63,9.32L9.28,10.68L7.29,8.73C6.75,9.82 7,11.17 7.88,12.08C8.74,12.94 9.96,13.16 11,12.76L15.11,16.86C15.29,17.05 15.56,17.05 15.74,16.86L16.78,15.83C17,15.65 17,15.33 16.82,15.19Z"; -var mdiProjector = "M16,6C14.87,6 13.77,6.35 12.84,7H4C2.89,7 2,7.89 2,9V15C2,16.11 2.89,17 4,17H5V18A1,1 0 0,0 6,19H8A1,1 0 0,0 9,18V17H15V18A1,1 0 0,0 16,19H18A1,1 0 0,0 19,18V17H20C21.11,17 22,16.11 22,15V9C22,7.89 21.11,7 20,7H19.15C18.23,6.35 17.13,6 16,6M16,7.5A3.5,3.5 0 0,1 19.5,11A3.5,3.5 0 0,1 16,14.5A3.5,3.5 0 0,1 12.5,11A3.5,3.5 0 0,1 16,7.5M4,9H8V10H4V9M16,9A2,2 0 0,0 14,11A2,2 0 0,0 16,13A2,2 0 0,0 18,11A2,2 0 0,0 16,9M4,11H8V12H4V11M4,13H8V14H4V13Z"; -var mdiProjectorScreen = "M4,2A1,1 0 0,0 3,3V4A1,1 0 0,0 4,5H5V14H11V16.59L6.79,20.79L8.21,22.21L11,19.41V22H13V19.41L15.79,22.21L17.21,20.79L13,16.59V14H19V5H20A1,1 0 0,0 21,4V3A1,1 0 0,0 20,2H4Z"; -var mdiProjectorScreenOutline = "M20 2H4C3.45 2 3 2.45 3 3V4C3 4.55 3.45 5 4 5H5V14H11V16.59L6.79 20.79L8.21 22.21L11 19.41V22H13V19.41L15.79 22.21L17.21 20.79L13 16.59V14H19V5H20C20.55 5 21 4.55 21 4V3C21 2.45 20.55 2 20 2M17 12H7V5H17V12Z"; -var mdiPropaneTank = "M16 6H16V4C16 2.9 15.11 2 14 2H10C8.9 2 8 2.9 8 4V6H8C5.79 6 4 7.79 4 10V17C4 18.86 5.28 20.41 7 20.86V22H17V20.86C18.72 20.42 20 18.86 20 17V10C20 7.79 18.21 6 16 6M10 4H14V6H10V4Z"; -var mdiPropaneTankOutline = "M16 6V4C16 2.9 15.11 2 14 2H10C8.9 2 8 2.9 8 4V6C5.79 6 4 7.79 4 10V17C4 18.86 5.28 20.41 7 20.86V22H17V20.86C18.72 20.42 20 18.86 20 17V10C20 7.79 18.21 6 16 6M10 4H14V6H10V4M18 17C18 18.1 17.1 19 16 19H8C6.9 19 6 18.1 6 17V10C6 8.9 6.9 8 8 8H16C17.1 8 18 8.9 18 10V17Z"; -var mdiProtocol = "M18 20H14L18 4H22M16 4H12L8 20H12M2 16.5A2.5 2.5 0 0 0 4.5 19A2.5 2.5 0 0 0 7 16.5A2.5 2.5 0 0 0 4.5 14A2.5 2.5 0 0 0 2 16.5M2 9.5A2.5 2.5 0 0 0 4.5 12A2.5 2.5 0 0 0 7 9.5A2.5 2.5 0 0 0 4.5 7A2.5 2.5 0 0 0 2 9.5Z"; -var mdiPublish = "M5,4V6H19V4H5M5,14H9V20H15V14H19L12,7L5,14Z"; -var mdiPulse = "M3,13H5.79L10.1,4.79L11.28,13.75L14.5,9.66L17.83,13H21V15H17L14.67,12.67L9.92,18.73L8.94,11.31L7,15H3V13Z"; -var mdiPump = "M2 21V15H3.5C3.18 14.06 3 13.05 3 12C3 7.03 7.03 3 12 3H22V9H20.5C20.82 9.94 21 10.95 21 12C21 16.97 16.97 21 12 21H2M5 12C5 13.28 5.34 14.47 5.94 15.5L9.4 13.5C9.15 13.06 9 12.55 9 12C9 11.35 9.21 10.75 9.56 10.26L6.3 7.93C5.5 9.08 5 10.5 5 12M12 19C14.59 19 16.85 17.59 18.06 15.5L14.6 13.5C14.08 14.4 13.11 15 12 15L11.71 15L11.33 18.97L12 19M12 9C13.21 9 14.26 9.72 14.73 10.76L18.37 9.1C17.27 6.68 14.83 5 12 5V9M12 11C11.45 11 11 11.45 11 12C11 12.55 11.45 13 12 13C12.55 13 13 12.55 13 12C13 11.45 12.55 11 12 11Z"; -var mdiPumpkin = "M6.5,6C7.47,6 8.37,6.5 9.11,7.38C9.66,6.79 10.31,6.36 11,6.15V4A2,2 0 0,1 13,2H15V4H13V6.15C13.69,6.36 14.34,6.79 14.89,7.38C15.63,6.5 16.53,6 17.5,6C20,6 22,9.36 22,13.5C22,17.64 20,21 17.5,21C16.53,21 15.63,20.5 14.89,19.62C14.08,20.5 13.08,21 12,21C10.92,21 9.92,20.5 9.11,19.62C8.37,20.5 7.47,21 6.5,21C4,21 2,17.64 2,13.5C2,9.36 4,6 6.5,6Z"; -var mdiPurse = "M22,19.1L21,10.5A1.65,1.65 0 0,0 19.3,9H16V5L14,3H10L8,5V9H4.7A1.65,1.65 0 0,0 3,10.5L2,19.1A1.74,1.74 0 0,0 3.7,21H20.3A1.74,1.74 0 0,0 22,19.1M10,5H14V9H10"; -var mdiPurseOutline = "M19,11L20,19H4L5,11H19M14,3H10L8,5V9H4.7A1.65,1.65 0 0,0 3,10.5L2,19.1A1.74,1.74 0 0,0 3.7,21H20.3A1.74,1.74 0 0,0 22,19.1L21,10.5A1.65,1.65 0 0,0 19.3,9H16V5L14,3M10,9V5H14V9"; -var mdiPuzzle = "M20.5,11H19V7C19,5.89 18.1,5 17,5H13V3.5A2.5,2.5 0 0,0 10.5,1A2.5,2.5 0 0,0 8,3.5V5H4A2,2 0 0,0 2,7V10.8H3.5C5,10.8 6.2,12 6.2,13.5C6.2,15 5,16.2 3.5,16.2H2V20A2,2 0 0,0 4,22H7.8V20.5C7.8,19 9,17.8 10.5,17.8C12,17.8 13.2,19 13.2,20.5V22H17A2,2 0 0,0 19,20V16H20.5A2.5,2.5 0 0,0 23,13.5A2.5,2.5 0 0,0 20.5,11Z"; -var mdiPuzzleCheck = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M20.5 11C21.88 11 23 12.12 23 13.5C23 13.81 22.94 14.11 22.84 14.39C21.8 13.5 20.46 13 19 13C15.69 13 13 15.69 13 19V19.54C12.64 18.5 11.65 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.1 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.89 2.9 5 4 5H8V3.5C8 2.12 9.12 .998 10.5 .998S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5"; -var mdiPuzzleCheckOutline = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M22 13.5L22 13.8C21.37 13.44 20.67 13.19 19.94 13.07C19.75 12.45 19.18 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4C9.67 4 9 4.67 9 5.5V7H4L4 9.12C5.76 9.8 7 11.5 7 13.5C7 15.5 5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.47 17 12.37 17.3 13.12 17.8L13 19C13 20.09 13.29 21.12 13.8 22H13.2V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.1 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5C5 12 3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2C12.26 2 13.72 3.3 13.96 5H17C18.1 5 19 5.9 19 7V10.04C20.7 10.28 22 11.74 22 13.5Z"; -var mdiPuzzleEdit = "M21.04 12.13C20.9 12.13 20.76 12.19 20.65 12.3L19.65 13.3L21.7 15.35L22.7 14.35C22.92 14.14 22.92 13.79 22.7 13.58L21.42 12.3C21.31 12.19 21.18 12.13 21.04 12.13M19.07 13.88L13 19.94V22H15.06L21.12 15.93L19.07 13.88M19 11.12L11.91 18.2C11.5 17.95 11 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11.12Z"; -var mdiPuzzleEditOutline = "M21.04 12.13C20.9 12.13 20.76 12.19 20.65 12.3L19.65 13.3L21.7 15.35L22.7 14.35C22.92 14.14 22.92 13.79 22.7 13.58L21.42 12.3C21.31 12.19 21.18 12.13 21.04 12.13M19.07 13.88L13 19.94V22H15.06L21.12 15.93L19.07 13.88M11.05 19.06C10.87 19 10.69 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C19.36 10.09 19.69 10.21 20 10.36C19.73 10.5 19.46 10.66 19.24 10.89L18.12 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.26 17 12 17.18 12.61 17.5L11.05 19.06Z"; -var mdiPuzzleHeart = "M19 22.3L18.4 21.8C16.4 19.9 15 18.7 15 17.2C15 16 16 15 17.2 15C17.9 15 18.6 15.3 19 15.8C19.4 15.3 20.1 15 20.8 15C22 15 23 15.9 23 17.2C23 18.7 21.6 19.9 19.6 21.8L19 22.3M20.5 11H19V7C19 5.89 18.1 5 17 5H13V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4C2.9 5 2 5.9 2 7V10.8H3.5C5 10.8 6.2 12 6.2 13.5S5 16.2 3.5 16.2H2V20C2 21.11 2.9 22 4 22H7.8V20.5C7.8 19 9 17.8 10.5 17.8C11.44 17.8 12.27 18.27 12.75 19H13.09C13.04 18.67 13 18.34 13 18C13 14.69 15.69 12 19 12C20.54 12 21.94 12.58 23 13.53C23 13.5 23 13.5 23 13.5C23 12.12 21.88 11 20.5 11Z"; -var mdiPuzzleHeartOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.45 10.25 21.61 11.34 21.91 12.76C21.05 12.28 20.06 12 19 12C18.89 12 18.78 12 18.67 12C18.61 12 18.56 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.43 17 12.29 17.28 13 17.74C13 17.83 13 17.91 13 18C13 19.54 13.58 20.94 14.54 22H13.2M19 22.3L19.6 21.8C21.6 19.9 23 18.7 23 17.2C23 15.9 22 15 20.8 15C20.1 15 19.4 15.3 19 15.8C18.6 15.3 17.9 15 17.2 15C16 15 15 16 15 17.2C15 18.7 16.4 19.9 18.4 21.8L19 22.3"; -var mdiPuzzleMinus = "M13.04 19.61C12.67 18.55 11.68 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5C21.88 11 23 12.12 23 13.5C23 13.82 22.94 14.12 22.83 14.39C21.79 13.53 20.46 13 19 13C15.69 13 13 15.69 13 19C13 19.2 13 19.41 13.04 19.61M15 18V20H23V18H15Z"; -var mdiPuzzleMinusOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.7 10.28 22 11.74 22 13.5C22 13.6 22 13.7 21.97 13.79C21.35 13.44 20.67 13.2 19.93 13.08C19.75 12.46 19.18 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.47 17 12.37 17.3 13.12 17.81C13.04 18.19 13 18.59 13 19C13 20.1 13.3 21.12 13.81 22H13.2M15 18V20H23V18H15Z"; -var mdiPuzzleOutline = "M22,13.5C22,15.26 20.7,16.72 19,16.96V20A2,2 0 0,1 17,22H13.2V21.7A2.7,2.7 0 0,0 10.5,19C9,19 7.8,20.21 7.8,21.7V22H4A2,2 0 0,1 2,20V16.2H2.3C3.79,16.2 5,15 5,13.5C5,12 3.79,10.8 2.3,10.8H2V7A2,2 0 0,1 4,5H7.04C7.28,3.3 8.74,2 10.5,2C12.26,2 13.72,3.3 13.96,5H17A2,2 0 0,1 19,7V10.04C20.7,10.28 22,11.74 22,13.5M17,15H18.5A1.5,1.5 0 0,0 20,13.5A1.5,1.5 0 0,0 18.5,12H17V7H12V5.5A1.5,1.5 0 0,0 10.5,4A1.5,1.5 0 0,0 9,5.5V7H4V9.12C5.76,9.8 7,11.5 7,13.5C7,15.5 5.75,17.2 4,17.88V20H6.12C6.8,18.25 8.5,17 10.5,17C12.5,17 14.2,18.25 14.88,20H17V15Z"; -var mdiPuzzlePlus = "M13.04 19.61C12.67 18.55 11.68 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5C21.88 11 23 12.12 23 13.5C23 13.82 22.94 14.12 22.83 14.39C21.79 13.53 20.46 13 19 13C15.69 13 13 15.69 13 19C13 19.2 13 19.41 13.04 19.61M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; -var mdiPuzzlePlusOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.7 10.28 22 11.74 22 13.5C22 13.6 22 13.7 21.97 13.79C21.35 13.44 20.67 13.2 19.93 13.08C19.75 12.46 19.18 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.47 17 12.37 17.3 13.12 17.81C13.04 18.19 13 18.59 13 19C13 20.1 13.3 21.12 13.81 22H13.2M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z"; -var mdiPuzzleRemove = "M13.04 19.61C12.67 18.55 11.68 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5C21.88 11 23 12.12 23 13.5C23 13.82 22.94 14.12 22.83 14.39C21.79 13.53 20.46 13 19 13C15.69 13 13 15.69 13 19C13 19.2 13 19.41 13.04 19.61M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z"; -var mdiPuzzleRemoveOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.7 10.28 22 11.74 22 13.5C22 13.6 22 13.7 21.97 13.79C21.35 13.44 20.67 13.2 19.93 13.08C19.75 12.46 19.18 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.47 17 12.37 17.3 13.12 17.81C13.04 18.19 13 18.59 13 19C13 20.1 13.3 21.12 13.81 22H13.2M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z"; -var mdiPuzzleStar = "M19 20.09L21.45 21.58L20.8 18.77L23 16.89L20.11 16.64L19 14L17.87 16.64L15 16.89L17.18 18.77L16.5 21.58L19 20.09M23 13.5C23 13.5 23 13.5 23 13.53C21.94 12.58 20.54 12 19 12C15.69 12 13 14.69 13 18C13 18.34 13.04 18.67 13.09 19H12.75C12.27 18.27 11.44 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5C21.88 11 23 12.12 23 13.5Z"; -var mdiPuzzleStarOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.45 10.25 21.61 11.34 21.91 12.76C21.05 12.28 20.06 12 19 12C18.89 12 18.78 12 18.67 12C18.61 12 18.56 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.43 17 12.29 17.28 13 17.74C13 17.83 13 17.91 13 18C13 19.54 13.58 20.94 14.54 22H13.2M19 20.09L16.5 21.58L17.18 18.77L15 16.89L17.87 16.64L19 14L20.11 16.64L23 16.89L20.8 18.77L21.45 21.58L19 20.09"; -var mdiQi = "M12.09,6.56V14.64C12.09,14.72 12,14.79 11.94,14.79C9.62,14.79 7.75,12.91 7.75,10.6C7.75,8.28 9.62,6.4 11.94,6.4C12,6.4 12.09,6.47 12.09,6.56M12.09,17.86V20.29C12.06,21.69 13.12,22.87 14.5,23C14.66,23 14.78,22.89 14.79,22.73V4.47C14.78,4.3 14.68,4.15 14.5,4.09C10.92,2.67 6.86,4.44 5.44,8.03C4,11.63 5.79,15.69 9.38,17.11C10.16,17.42 11,17.58 11.81,17.6C11.95,17.59 12.07,17.71 12.08,17.87M16.19,5.5V15.72C16.19,16 16.19,16.2 16.46,16V16C19.42,13.5 19.81,9.09 17.33,6.13C17.07,5.81 16.77,5.5 16.46,5.26C16.19,5.05 16.19,5.26 16.19,5.53M14.79,2.43C14.79,1.66 15.42,1.03 16.19,1.03C16.96,1.03 17.59,1.66 17.59,2.43C17.59,3.2 16.96,3.83 16.19,3.83V3.83C15.42,3.83 14.79,3.2 14.79,2.43"; -var mdiQqchat = "M3.18,13.54C3.76,12.16 4.57,11.14 5.17,10.92C5.16,10.12 5.31,9.62 5.56,9.22C5.56,9.19 5.5,8.86 5.72,8.45C5.87,4.85 8.21,2 12,2C15.79,2 18.13,4.85 18.28,8.45C18.5,8.86 18.44,9.19 18.44,9.22C18.69,9.62 18.84,10.12 18.83,10.92C19.43,11.14 20.24,12.16 20.82,13.55C21.57,15.31 21.69,17 21.09,17.3C20.68,17.5 20.03,17 19.42,16.12C19.18,17.1 18.58,18 17.73,18.71C18.63,19.04 19.21,19.58 19.21,20.19C19.21,21.19 17.63,22 15.69,22C13.93,22 12.5,21.34 12.21,20.5H11.79C11.5,21.34 10.07,22 8.31,22C6.37,22 4.79,21.19 4.79,20.19C4.79,19.58 5.37,19.04 6.27,18.71C5.42,18 4.82,17.1 4.58,16.12C3.97,17 3.32,17.5 2.91,17.3C2.31,17 2.43,15.31 3.18,13.54Z"; -var mdiQrcode = "M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z"; -var mdiQrcodeEdit = "M5,5H7V7H5V5M1,1H11V11H1V1M3,3V9H9V3H3M5,17H7V19H5V17M1,13H11V23H1V13M3,15V21H9V15H3M13,13H17V15H19V13H23V15H19V17H23V23H19V21H15V23H13V21H15V19H13V13M21,21V19H19V21H21M19,17H17V15H15V19H19V17M22.7,3.35L21.7,4.35L19.65,2.35L20.65,1.35C20.85,1.14 21.19,1.13 21.42,1.35L22.7,2.58C22.91,2.78 22.92,3.12 22.7,3.35M13,8.94L19.07,2.88L21.12,4.93L15.06,11H13V8.94Z"; -var mdiQrcodeMinus = "M5 5H7V7H5V5M1 1H11V11H1V1M3 3V9H9V3H3M5 17H7V19H5V17M1 13H11V23H1V13M3 15V21H9V15H3M13 13H17V15H19V13H23V15H19V17H23V23H19V21H15V23H13V21H15V19H13V13M21 21V19H19V21H21M19 17H17V15H15V19H19V17M14 5V7H22V5Z"; -var mdiQrcodePlus = "M5 5H7V7H5V5M1 1H11V11H1V1M3 3V9H9V3H3M5 17H7V19H5V17M1 13H11V23H1V13M3 15V21H9V15H3M13 13H17V15H19V13H23V15H19V17H23V23H19V21H15V23H13V21H15V19H13V13M21 21V19H19V21H21M19 17H17V15H15V19H19V17M17 2V5H14V7H17V10H19V7H22V5H19V2Z"; -var mdiQrcodeRemove = "M5 5H7V7H5V5M1 1H11V11H1V1M3 3V9H9V3H3M5 17H7V19H5V17M1 13H11V23H1V13M3 15V21H9V15H3M13 13H17V15H19V13H23V15H19V17H23V23H19V21H15V23H13V21H15V19H13V13M21 21V19H19V21H21M19 17H17V15H15V19H19V17M15.17 1.76L13.76 3.17L16.59 6L13.76 8.83L15.17 10.24L18 7.41L20.83 10.24L22.24 8.83L19.41 6L22.24 3.17L20.83 1.76L18 4.59L15.17 1.76Z"; -var mdiQrcodeScan = "M4,4H10V10H4V4M20,4V10H14V4H20M14,15H16V13H14V11H16V13H18V11H20V13H18V15H20V18H18V20H16V18H13V20H11V16H14V15M16,15V18H18V15H16M4,20V14H10V20H4M6,6V8H8V6H6M16,6V8H18V6H16M6,16V18H8V16H6M4,11H6V13H4V11M9,11H13V15H11V13H9V11M11,6H13V10H11V6M2,2V6H0V2A2,2 0 0,1 2,0H6V2H2M22,0A2,2 0 0,1 24,2V6H22V2H18V0H22M2,18V22H6V24H2A2,2 0 0,1 0,22V18H2M22,22V18H24V22A2,2 0 0,1 22,24H18V22H22Z"; -var mdiQuadcopter = "M5.5,1C8,1 10,3 10,5.5C10,6.38 9.75,7.2 9.31,7.9L9.41,8H14.59L14.69,7.9C14.25,7.2 14,6.38 14,5.5C14,3 16,1 18.5,1C21,1 23,3 23,5.5C23,8 21,10 18.5,10C17.62,10 16.8,9.75 16.1,9.31L15,10.41V13.59L16.1,14.69C16.8,14.25 17.62,14 18.5,14C21,14 23,16 23,18.5C23,21 21,23 18.5,23C16,23 14,21 14,18.5C14,17.62 14.25,16.8 14.69,16.1L14.59,16H9.41L9.31,16.1C9.75,16.8 10,17.62 10,18.5C10,21 8,23 5.5,23C3,23 1,21 1,18.5C1,16 3,14 5.5,14C6.38,14 7.2,14.25 7.9,14.69L9,13.59V10.41L7.9,9.31C7.2,9.75 6.38,10 5.5,10C3,10 1,8 1,5.5C1,3 3,1 5.5,1M5.5,3A2.5,2.5 0 0,0 3,5.5A2.5,2.5 0 0,0 5.5,8A2.5,2.5 0 0,0 8,5.5A2.5,2.5 0 0,0 5.5,3M5.5,16A2.5,2.5 0 0,0 3,18.5A2.5,2.5 0 0,0 5.5,21A2.5,2.5 0 0,0 8,18.5A2.5,2.5 0 0,0 5.5,16M18.5,3A2.5,2.5 0 0,0 16,5.5A2.5,2.5 0 0,0 18.5,8A2.5,2.5 0 0,0 21,5.5A2.5,2.5 0 0,0 18.5,3M18.5,16A2.5,2.5 0 0,0 16,18.5A2.5,2.5 0 0,0 18.5,21A2.5,2.5 0 0,0 21,18.5A2.5,2.5 0 0,0 18.5,16M3.91,17.25L5.04,17.91C5.17,17.81 5.33,17.75 5.5,17.75A0.75,0.75 0 0,1 6.25,18.5L6.24,18.6L7.37,19.25L7.09,19.75L5.96,19.09C5.83,19.19 5.67,19.25 5.5,19.25A0.75,0.75 0 0,1 4.75,18.5L4.76,18.4L3.63,17.75L3.91,17.25M3.63,6.25L4.76,5.6L4.75,5.5A0.75,0.75 0 0,1 5.5,4.75C5.67,4.75 5.83,4.81 5.96,4.91L7.09,4.25L7.37,4.75L6.24,5.4L6.25,5.5A0.75,0.75 0 0,1 5.5,6.25C5.33,6.25 5.17,6.19 5.04,6.09L3.91,6.75L3.63,6.25M16.91,4.25L18.04,4.91C18.17,4.81 18.33,4.75 18.5,4.75A0.75,0.75 0 0,1 19.25,5.5L19.24,5.6L20.37,6.25L20.09,6.75L18.96,6.09C18.83,6.19 18.67,6.25 18.5,6.25A0.75,0.75 0 0,1 17.75,5.5L17.76,5.4L16.63,4.75L16.91,4.25M16.63,19.25L17.75,18.5A0.75,0.75 0 0,1 18.5,17.75C18.67,17.75 18.83,17.81 18.96,17.91L20.09,17.25L20.37,17.75L19.25,18.5A0.75,0.75 0 0,1 18.5,19.25C18.33,19.25 18.17,19.19 18.04,19.09L16.91,19.75L16.63,19.25Z"; -var mdiQualityHigh = "M14.5,13.5H16.5V10.5H14.5M18,14A1,1 0 0,1 17,15H16.25V16.5H14.75V15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,15H9.5V13H7.5V15H6V9H7.5V11.5H9.5V9H11M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z"; -var mdiQualityLow = "M14.5,13.5H16.5V10.5H14.5M18,14C18,14.6 17.6,15 17,15H16.25V16.5H14.75V15H14C13.4,15 13,14.6 13,14V10C13,9.4 13.4,9 14,9H17C17.6,9 18,9.4 18,10M19,4H5A2,2 0 0,0 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6A2,2 0 0,0 19,4M11,13.5V15H6V9H7.5V13.5H11Z"; -var mdiQualityMedium = "M21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4H19A2,2 0 0,1 21,6M12,10C12,9.5 11.5,9 11,9H6.5C6,9 5.5,9.5 5.5,10V15H7V10.5H8V14H9.5V10.5H10.5V15H12V10M14.5,9A1,1 0 0,0 13.5,10V14A1,1 0 0,0 14.5,15H15.5V16.5H16.75V15H17.5A1,1 0 0,0 18.5,14V10A1,1 0 0,0 17.5,9H14.5M15,10.5H17V13.5H15V10.5Z"; -var mdiQuora = "M19.7,18.8C20.2,18.2 20.1,17.7 20.1,17.7H21.6C21.6,17.7 21.6,18.1 21.5,18.6C21.4,19 21.3,19.3 21.2,19.6C21,20.3 20,21.1 20,21.1C18.9,22 17.7,21.9 17.7,21.9C17.7,21.9 16.3,22.1 15.2,21.4C14.1,20.7 13.2,19.2 13.2,19.2C13.2,19.2 8.8,20.4 5.4,17.5C2,14.6 2.2,11.1 2.2,10.8C2.2,10.1 2.6,2.3 10.8,2C15.6,1.8 18.2,4.8 19.2,7.2C19.9,8.9 19.9,10.2 19.9,10.4C19.9,10.6 19.9,11.5 19.7,12.4C19.6,13.3 19.2,14.3 18.9,14.8C18.6,15.3 18.2,16 17.7,16.5C17.2,17.1 16.6,17.6 16.5,17.7C16.5,17.7 17.5,18.9 18.1,19.1C18.3,19.1 19.2,19.4 19.7,18.8M12.7,17.3C12.8,17.2 12.4,16.7 12.2,16.4C12,16.1 12.3,16.5 11.5,15.4C11.2,14.9 10.8,14.7 10.2,14.6C10,14.6 9.7,14.6 9.5,14.6C9,14.6 8.7,14.7 8.6,14.7C8.6,14.6 8.4,14.4 8.3,14.2C8.2,14 8.2,13.7 8.2,13.7C8.2,13.5 9.7,12.8 11.4,12.8C12.8,12.8 13.8,13.6 14.2,14C14.6,14.3 14.7,14.7 15.1,15C15.1,15 15.2,15 15.2,15.1C15.6,15.4 16.1,12.1 16,9.9C15.9,7.7 15.8,6.6 15,5.5C14.3,4.5 12.8,3.7 11.4,3.7C10.7,3.7 8.4,3.8 7.4,5.5C6.2,7.5 6.4,11.1 6.4,11.1C6.4,11.1 6.1,14.3 7.8,16C9.5,17.7 11.2,17.4 12,17.4L12.7,17.3Z"; -var mdiRabbit = "M18.05,21L15.32,16.26C15.32,14.53 14.25,13.42 12.95,13.42C12.05,13.42 11.27,13.92 10.87,14.66C11.2,14.47 11.59,14.37 12,14.37C13.3,14.37 14.36,15.43 14.36,16.73C14.36,18.04 13.31,19.11 12,19.11H15.3V21H6.79C6.55,21 6.3,20.91 6.12,20.72C5.75,20.35 5.75,19.75 6.12,19.38V19.38L6.62,18.88C6.28,18.73 6,18.5 5.72,18.26C5.5,18.76 5,19.11 4.42,19.11C3.64,19.11 3,18.47 3,17.68C3,16.9 3.64,16.26 4.42,16.26L4.89,16.34V14.37C4.89,11.75 7,9.63 9.63,9.63H9.65C11.77,9.64 13.42,10.47 13.42,9.16C13.42,8.23 13.62,7.86 13.96,7.34C13.23,7 12.4,6.79 11.53,6.79C11,6.79 10.58,6.37 10.58,5.84C10.58,5.41 10.86,5.05 11.25,4.93L10.58,4.89C10.06,4.89 9.63,4.47 9.63,3.95C9.63,3.42 10.06,3 10.58,3H11.53C13.63,3 15.47,4.15 16.46,5.85L16.74,5.84C17.45,5.84 18.11,6.07 18.65,6.45L19.1,6.83C21.27,8.78 21,10.1 21,10.11C21,11.39 19.94,12.44 18.65,12.44L18.16,12.39V12.47C18.16,13.58 17.68,14.57 16.93,15.27L20.24,21H18.05M18.16,7.74C17.63,7.74 17.21,8.16 17.21,8.68C17.21,9.21 17.63,9.63 18.16,9.63C18.68,9.63 19.11,9.21 19.11,8.68C19.11,8.16 18.68,7.74 18.16,7.74Z"; -var mdiRacingHelmet = "M2.2,11.2C2,13.6 2.7,15.6 4.2,17.4C5.7,19.2 7.7,20 10.1,20H20.1C20.6,20 21.1,19.8 21.5,19.4C21.9,19 22.1,18.5 22.1,18V17.2C22.1,16.6 22,15.9 21.9,15H13.7C12.7,15 11.9,14.6 11.2,13.9C10.5,13.2 10.1,12.3 10.1,11.4C10.1,9.8 10.8,8.7 12.3,8.1L17.1,6C15.4,4.8 13.4,4.1 11.1,4C8.9,3.8 6.9,4.5 5.1,5.9C3.3,7.3 2.4,9 2.2,11.2M12.1,11.4C12.1,11.8 12.3,12.2 12.6,12.5C12.9,12.8 13.3,13 13.7,13H21.5C20.9,10.8 20,9 18.7,7.6L13.1,9.9C12.4,10.1 12.1,10.6 12.1,11.4Z"; -var mdiRacquetball = "M18.5,16C19.9,16 21,17.1 21,18.5C21,19.9 19.9,21 18.5,21C17.1,21 16,19.9 16,18.5C16,17.1 17.1,16 18.5,16M10.5,1C3,1 3,3.7 3,9.8C3,13.2 6.4,16.9 9,18.1V23H12V18.1C14.6,16.9 18,13.2 18,9.8C18,3.6 18,1 10.5,1M15.4,4.2C15.7,4.6 15.8,5.2 15.9,6H15V3.8C15.2,3.9 15.3,4.1 15.4,4.2M16,9.8C16,9.9 16,10 16,10H15V7H16C16,7.8 16,8.7 16,9.8M14,14H11V11H14V14M7,14V11H10V14H7M5,9.8C5,8.8 5,7.9 5,7H6V10H5C5,9.9 5,9.8 5,9.8M7,7H10V10H7V7M11,3C12.4,3 13.4,3.2 14,3.3V6H11V3M10,6H7V3.4C7.6,3.2 8.6,3 10,3V6M11,10V7H14V10H11M6,3.8V6H5.1C5.2,5.2 5.3,4.6 5.6,4.2C5.7,4.1 5.8,4 6,3.8M5.2,11H6V12.7C5.7,12.1 5.4,11.6 5.2,11M8,15H10V16.3L9.8,16.2C9.2,16 8.6,15.5 8,15M11.2,16.3H11V15H13C12.4,15.5 11.8,16 11.2,16.3M15,12.7V11H15.8C15.6,11.5 15.3,12.1 15,12.7Z"; -var mdiRadar = "M19.07,4.93L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12C4,7.92 7.05,4.56 11,4.07V6.09C8.16,6.57 6,9.03 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12C18,10.34 17.33,8.84 16.24,7.76L14.83,9.17C15.55,9.9 16,10.9 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12C8,10.14 9.28,8.59 11,8.14V10.28C10.4,10.63 10,11.26 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,11.26 13.6,10.62 13,10.28V2H12A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,9.24 20.88,6.74 19.07,4.93Z"; -var mdiRadiator = "M7.95,3L6.53,5.19L7.95,7.4H7.94L5.95,10.5L4.22,9.6L5.64,7.39L4.22,5.19L6.22,2.09L7.95,3M13.95,2.89L12.53,5.1L13.95,7.3L13.94,7.31L11.95,10.4L10.22,9.5L11.64,7.3L10.22,5.1L12.22,2L13.95,2.89M20,2.89L18.56,5.1L20,7.3V7.31L18,10.4L16.25,9.5L17.67,7.3L16.25,5.1L18.25,2L20,2.89M2,22V14A2,2 0 0,1 4,12H20A2,2 0 0,1 22,14V22H20V20H4V22H2M6,14A1,1 0 0,0 5,15V17A1,1 0 0,0 6,18A1,1 0 0,0 7,17V15A1,1 0 0,0 6,14M10,14A1,1 0 0,0 9,15V17A1,1 0 0,0 10,18A1,1 0 0,0 11,17V15A1,1 0 0,0 10,14M14,14A1,1 0 0,0 13,15V17A1,1 0 0,0 14,18A1,1 0 0,0 15,17V15A1,1 0 0,0 14,14M18,14A1,1 0 0,0 17,15V17A1,1 0 0,0 18,18A1,1 0 0,0 19,17V15A1,1 0 0,0 18,14Z"; -var mdiRadiatorDisabled = "M20,12H4A2,2 0 0,0 2,14V22H4V20H20V22H22V14A2,2 0 0,0 20,12M7,17A1,1 0 0,1 6,18A1,1 0 0,1 5,17V15A1,1 0 0,1 6,14A1,1 0 0,1 7,15V17M11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17V15A1,1 0 0,1 10,14A1,1 0 0,1 11,15V17M15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17V15A1,1 0 0,1 14,14A1,1 0 0,1 15,15V17M19,17A1,1 0 0,1 18,18A1,1 0 0,1 17,17V15A1,1 0 0,1 18,14A1,1 0 0,1 19,15V17Z"; -var mdiRadiatorOff = "M3.28,2L2,3.27L4.77,6.04L5.64,7.39L4.22,9.6L5.95,10.5L7.23,8.5L10.73,12H4A2,2 0 0,0 2,14V22H4V20H18.73L20,21.27V22H22V20.73L22,20.72V20.72L3.28,2M7,17A1,1 0 0,1 6,18A1,1 0 0,1 5,17V15A1,1 0 0,1 6,14A1,1 0 0,1 7,15V17M11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17V15A1,1 0 0,1 10,14A1,1 0 0,1 11,15V17M15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17V15C13,14.79 13.08,14.61 13.18,14.45L15,16.27V17M16.25,9.5L17.67,7.3L16.25,5.1L18.25,2L20,2.89L18.56,5.1L20,7.3V7.31L18,10.4L16.25,9.5M22,14V18.18L19,15.18V15A1,1 0 0,0 18,14C17.95,14 17.9,14 17.85,14.03L15.82,12H20C21.11,12 22,12.9 22,14M11.64,7.3L10.22,5.1L12.22,2L13.95,2.89L12.53,5.1L13.95,7.3L13.94,7.31L12.84,9L11.44,7.62L11.64,7.3M7.5,3.69L6.1,2.28L6.22,2.09L7.95,3L7.5,3.69Z"; -var mdiRadio = "M20,6A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8C2,7.15 2.53,6.42 3.28,6.13L15.71,1L16.47,2.83L8.83,6H20M20,8H4V12H16V10H18V12H20V8M7,14A3,3 0 0,0 4,17A3,3 0 0,0 7,20A3,3 0 0,0 10,17A3,3 0 0,0 7,14Z"; -var mdiRadioAm = "M5,7A2,2 0 0,0 3,9V17H5V13H7V17H9V9A2,2 0 0,0 7,7H5M5,9H7V11H5V9M13,7A2,2 0 0,0 11,9V17H13V9H15V16H17V9H19V17H21V9A2,2 0 0,0 19,7H13Z"; -var mdiRadioFm = "M3,7V17H5V13H8V11H5V9H9V7H3M13,7A2,2 0 0,0 11,9V17H13V9H15V16H17V9H19V17H21V9A2,2 0 0,0 19,7H13Z"; -var mdiRadioHandheld = "M9,2A1,1 0 0,0 8,3C8,8.67 8,14.33 8,20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V9C17,7.89 16.11,7 15,7H10V3A1,1 0 0,0 9,2M10,9H15V13H10V9Z"; -var mdiRadioOff = "M1 4.27L3 6.27C2.4 6.61 2 7.26 2 8V20C2 21.11 2.9 22 4 22H18.73L20.73 24L22 22.72L2.28 3L1 4.27M20 6H8.83L16.47 2.83L15.71 1L6.59 4.76L9.82 8H20V12H18V10H16V12H13.82L22 20.18V8C22 6.9 21.11 6 20 6M4 8H4.73L8.73 12H4V8M7 14C8.66 14 10 15.34 10 17C10 18.66 8.66 20 7 20C5.34 20 4 18.66 4 17C4 15.34 5.34 14 7 14Z"; -var mdiRadioTower = "M12,10A2,2 0 0,1 14,12C14,12.5 13.82,12.94 13.53,13.29L16.7,22H14.57L12,14.93L9.43,22H7.3L10.47,13.29C10.18,12.94 10,12.5 10,12A2,2 0 0,1 12,10M12,8A4,4 0 0,0 8,12C8,12.5 8.1,13 8.28,13.46L7.4,15.86C6.53,14.81 6,13.47 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12C18,13.47 17.47,14.81 16.6,15.86L15.72,13.46C15.9,13 16,12.5 16,12A4,4 0 0,0 12,8M12,4A8,8 0 0,0 4,12C4,14.36 5,16.5 6.64,17.94L5.92,19.94C3.54,18.11 2,15.23 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12C22,15.23 20.46,18.11 18.08,19.94L17.36,17.94C19,16.5 20,14.36 20,12A8,8 0 0,0 12,4Z"; -var mdiRadioactive = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,22C10.05,22 8.22,21.44 6.69,20.47L10,15.47C10.6,15.81 11.28,16 12,16C12.72,16 13.4,15.81 14,15.47L17.31,20.47C15.78,21.44 13.95,22 12,22M2,12C2,7.86 4.5,4.3 8.11,2.78L10.34,8.36C8.96,9 8,10.38 8,12H2M16,12C16,10.38 15.04,9 13.66,8.36L15.89,2.78C19.5,4.3 22,7.86 22,12H16Z"; -var mdiRadioactiveOff = "M1,4.27L2.28,3L21,21.72L19.73,23L17.25,20.5C15.72,21.46 13.92,22 12,22C10.05,22 8.22,21.44 6.69,20.47L10,15.47C10.6,15.81 11.28,16 12,16C12.23,16 12.46,16 12.67,15.94L8.06,11.33C8,11.54 8,11.77 8,12H2C2,10.08 2.54,8.28 3.5,6.75L1,4.27M12,10A2,2 0 0,1 14,12V12.17L11.83,10H12M8.11,2.78L10.23,8.41L5.9,4.08C6.57,3.56 7.32,3.12 8.11,2.78M16,12C16,10.38 15.04,9 13.66,8.36L15.89,2.78C19.5,4.3 22,7.86 22,12H16Z"; -var mdiRadioboxBlank = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiRadioboxMarked = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z"; -var mdiRadiologyBox = "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3M17.1 13H13V14H17C17 14 16.94 17 15.5 17C14.15 17 14.5 15.47 13 15V17C13 17.55 12.55 18 12 18S11 17.55 11 17V15C9.5 15.47 9.85 17 8.5 17C7.06 17 7 14 7 14H11V13H6.9C6.85 12.69 6.84 12.35 6.8 12H11V11H6.81C6.83 10.67 6.91 10.33 7 10H11V9H7.34C7.5 8.65 7.65 8.31 7.83 8H11V7C11 6.45 11.45 6 12 6S13 6.45 13 7V8H16.17C16.35 8.31 16.5 8.65 16.66 9H13V10H17C17.1 10.33 17.17 10.67 17.19 11H13V12H17.2C17.16 12.35 17.15 12.69 17.1 13Z"; -var mdiRadiologyBoxOutline = "M19 5V19H5V5H19M19 3H5C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3M12 6C12.55 6 13 6.45 13 7V8H16.17C16.35 8.31 16.5 8.65 16.66 9H13V10H17C17.1 10.33 17.17 10.67 17.19 11H13V12H17.2C17.16 12.35 17.15 12.69 17.1 13H13V14H17C17 14 16.94 17 15.5 17C14.15 17 14.5 15.47 13 15V17C13 17.55 12.55 18 12 18S11 17.55 11 17V15C9.5 15.47 9.85 17 8.5 17C7.06 17 7 14 7 14H11V13H6.9C6.85 12.69 6.84 12.35 6.8 12H11V11H6.81C6.83 10.67 6.91 10.33 7 10H11V9H7.34C7.5 8.65 7.65 8.31 7.83 8H11V7C11 6.45 11.45 6 12 6Z"; -var mdiRadius = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,15V13H13.72C13.36,13.62 12.71,14 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10C12.71,10 13.36,10.38 13.72,11H17V9L20,12L17,15Z"; -var mdiRadiusOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16,15V13H13.72C13.36,13.62 12.71,14 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10C12.71,10 13.36,10.38 13.72,11H16V9L19,12L16,15Z"; -var mdiRailroadLight = "M17.67,10.5C16.4,10.5 15.27,11.3 14.85,12.5H13.17V7.77L16.66,9.86L17.66,8.14L14.11,6L17.68,3.86L16.68,2.14L13.17,4.23V2H11.17V4.23L7.68,2.14L6.68,3.86L10.23,6L6.66,8.14L7.66,9.86L11.17,7.77V12.5H9.5C8.36,9.32 3.66,10.13 3.66,13.5C3.66,16.87 8.36,17.68 9.5,14.5H11.17V20A2,2 0 0,0 9.17,22H15.17A2,2 0 0,0 13.17,20V14.5H14.85C15.66,16.8 18.73,17.22 20.13,15.23C21.53,13.24 20.1,10.5 17.67,10.5M6.67,14.5C5.78,14.5 5.33,13.42 5.96,12.79C6.59,12.16 7.67,12.61 7.67,13.5A1,1 0 0,1 6.67,14.5M17.67,14.5C16.78,14.5 16.33,13.42 16.96,12.79C17.59,12.16 18.67,12.61 18.67,13.5A1,1 0 0,1 17.67,14.5Z"; -var mdiRake = "M10.5 17.05L9.43 16L22.07 3.35L20.66 1.93L8 14.58L6.95 13.5C6.17 12.73 4.9 12.73 4.12 13.5L2 15.64L2.71 16.34L4.83 14.22L5.54 14.93L3.41 17.05L4.12 17.76L6.24 15.64L6.95 16.34L4.83 18.46L5.54 19.17L7.66 17.05L8.36 17.76L6.24 19.88L6.95 20.59L9.07 18.46L9.78 19.17L7.66 21.29L8.36 22L10.5 19.88C11.27 19.1 11.27 17.83 10.5 17.05Z"; -var mdiRaspberryPi = "M20,8H22V10H20V8M4,5H20A2,2 0 0,1 22,7H19V9H5V13H8V16H19V17H22A2,2 0 0,1 20,19H16V20H14V19H11V20H7V19H4A2,2 0 0,1 2,17V7A2,2 0 0,1 4,5M19,15H9V10H19V11H22V13H19V15M13,12V14H15V12H13M5,6V8H6V6H5M7,6V8H8V6H7M9,6V8H10V6H9M11,6V8H12V6H11M13,6V8H14V6H13M15,6V8H16V6H15M20,14H22V16H20V14Z"; -var mdiRayEnd = "M20,9C18.69,9 17.58,9.83 17.17,11H2V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9Z"; -var mdiRayEndArrow = "M1,12L5,16V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9C18.69,9 17.58,9.83 17.17,11H5V8L1,12Z"; -var mdiRayStart = "M4,9C5.31,9 6.42,9.83 6.83,11H22V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z"; -var mdiRayStartArrow = "M23,12L19,16V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9C5.31,9 6.42,9.83 6.83,11H19V8L23,12Z"; -var mdiRayStartEnd = "M4,9C5.31,9 6.42,9.83 6.83,11H17.17C17.58,9.83 18.69,9 20,9A3,3 0 0,1 23,12A3,3 0 0,1 20,15C18.69,15 17.58,14.17 17.17,13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z"; -var mdiRayStartVertexEnd = "M20 9C18.69 9 17.58 9.83 17.17 11H14.82C14.4 9.84 13.3 9 12 9S9.6 9.84 9.18 11H6.83C6.42 9.83 5.31 9 4 9C2.34 9 1 10.34 1 12S2.34 15 4 15C5.31 15 6.42 14.17 6.83 13H9.18C9.6 14.16 10.7 15 12 15S14.4 14.16 14.82 13H17.17C17.58 14.17 18.69 15 20 15C21.66 15 23 13.66 23 12S21.66 9 20 9"; -var mdiRayVertex = "M2,11H9.17C9.58,9.83 10.69,9 12,9C13.31,9 14.42,9.83 14.83,11H22V13H14.83C14.42,14.17 13.31,15 12,15C10.69,15 9.58,14.17 9.17,13H2V11Z"; -var mdiReact = "M12,10.11C13.03,10.11 13.87,10.95 13.87,12C13.87,13 13.03,13.85 12,13.85C10.97,13.85 10.13,13 10.13,12C10.13,10.95 10.97,10.11 12,10.11M7.37,20C8,20.38 9.38,19.8 10.97,18.3C10.45,17.71 9.94,17.07 9.46,16.4C8.64,16.32 7.83,16.2 7.06,16.04C6.55,18.18 6.74,19.65 7.37,20M8.08,14.26L7.79,13.75C7.68,14.04 7.57,14.33 7.5,14.61C7.77,14.67 8.07,14.72 8.38,14.77C8.28,14.6 8.18,14.43 8.08,14.26M14.62,13.5L15.43,12L14.62,10.5C14.32,9.97 14,9.5 13.71,9.03C13.17,9 12.6,9 12,9C11.4,9 10.83,9 10.29,9.03C10,9.5 9.68,9.97 9.38,10.5L8.57,12L9.38,13.5C9.68,14.03 10,14.5 10.29,14.97C10.83,15 11.4,15 12,15C12.6,15 13.17,15 13.71,14.97C14,14.5 14.32,14.03 14.62,13.5M12,6.78C11.81,7 11.61,7.23 11.41,7.5C11.61,7.5 11.8,7.5 12,7.5C12.2,7.5 12.39,7.5 12.59,7.5C12.39,7.23 12.19,7 12,6.78M12,17.22C12.19,17 12.39,16.77 12.59,16.5C12.39,16.5 12.2,16.5 12,16.5C11.8,16.5 11.61,16.5 11.41,16.5C11.61,16.77 11.81,17 12,17.22M16.62,4C16,3.62 14.62,4.2 13.03,5.7C13.55,6.29 14.06,6.93 14.54,7.6C15.36,7.68 16.17,7.8 16.94,7.96C17.45,5.82 17.26,4.35 16.62,4M15.92,9.74L16.21,10.25C16.32,9.96 16.43,9.67 16.5,9.39C16.23,9.33 15.93,9.28 15.62,9.23C15.72,9.4 15.82,9.57 15.92,9.74M17.37,2.69C18.84,3.53 19,5.74 18.38,8.32C20.92,9.07 22.75,10.31 22.75,12C22.75,13.69 20.92,14.93 18.38,15.68C19,18.26 18.84,20.47 17.37,21.31C15.91,22.15 13.92,21.19 12,19.36C10.08,21.19 8.09,22.15 6.62,21.31C5.16,20.47 5,18.26 5.62,15.68C3.08,14.93 1.25,13.69 1.25,12C1.25,10.31 3.08,9.07 5.62,8.32C5,5.74 5.16,3.53 6.62,2.69C8.09,1.85 10.08,2.81 12,4.64C13.92,2.81 15.91,1.85 17.37,2.69M17.08,12C17.42,12.75 17.72,13.5 17.97,14.26C20.07,13.63 21.25,12.73 21.25,12C21.25,11.27 20.07,10.37 17.97,9.74C17.72,10.5 17.42,11.25 17.08,12M6.92,12C6.58,11.25 6.28,10.5 6.03,9.74C3.93,10.37 2.75,11.27 2.75,12C2.75,12.73 3.93,13.63 6.03,14.26C6.28,13.5 6.58,12.75 6.92,12M15.92,14.26C15.82,14.43 15.72,14.6 15.62,14.77C15.93,14.72 16.23,14.67 16.5,14.61C16.43,14.33 16.32,14.04 16.21,13.75L15.92,14.26M13.03,18.3C14.62,19.8 16,20.38 16.62,20C17.26,19.65 17.45,18.18 16.94,16.04C16.17,16.2 15.36,16.32 14.54,16.4C14.06,17.07 13.55,17.71 13.03,18.3M8.08,9.74C8.18,9.57 8.28,9.4 8.38,9.23C8.07,9.28 7.77,9.33 7.5,9.39C7.57,9.67 7.68,9.96 7.79,10.25L8.08,9.74M10.97,5.7C9.38,4.2 8,3.62 7.37,4C6.74,4.35 6.55,5.82 7.06,7.96C7.83,7.8 8.64,7.68 9.46,7.6C9.94,6.93 10.45,6.29 10.97,5.7Z"; -var mdiRead = "M21.59,11.59L23,13L13.5,22.5L8.42,17.41L9.83,16L13.5,19.68L21.59,11.59M4,16V3H6L9,3A4,4 0 0,1 13,7C13,8.54 12.13,9.88 10.85,10.55L14,16H12L9.11,11H6V16H4M6,9H9A2,2 0 0,0 11,7A2,2 0 0,0 9,5H6V9Z"; -var mdiReceipt = "M3,22L4.5,20.5L6,22L7.5,20.5L9,22L10.5,20.5L12,22L13.5,20.5L15,22L16.5,20.5L18,22L19.5,20.5L21,22V2L19.5,3.5L18,2L16.5,3.5L15,2L13.5,3.5L12,2L10.5,3.5L9,2L7.5,3.5L6,2L4.5,3.5L3,2M18,9H6V7H18M18,13H6V11H18M18,17H6V15H18V17Z"; -var mdiRecord = "M19,12C19,15.86 15.86,19 12,19C8.14,19 5,15.86 5,12C5,8.14 8.14,5 12,5C15.86,5 19,8.14 19,12Z"; -var mdiRecordCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z"; -var mdiRecordCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; -var mdiRecordPlayer = "M5,17.5A0.5,0.5 0 0,1 4.5,18H3.5A0.5,0.5 0 0,1 3,17.5V17H2A1,1 0 0,1 1,16V13A1,1 0 0,1 2,12H19V10H7L6,11V9A1,1 0 0,1 7,8H19V7H21V8A1,1 0 0,1 22,9V10H21V12H22A1,1 0 0,1 23,13V16A1,1 0 0,1 22,17H21V17.5A0.5,0.5 0 0,1 20.5,18H19.5A0.5,0.5 0 0,1 19,17.5V17H5V17.5M3,14V15H5V14H3M6,14V15H8V14H6M20.5,13.5A1,1 0 0,0 19.5,14.5A1,1 0 0,0 20.5,15.5A1,1 0 0,0 21.5,14.5A1,1 0 0,0 20.5,13.5Z"; -var mdiRecordRec = "M12.5,5A7.5,7.5 0 0,0 5,12.5A7.5,7.5 0 0,0 12.5,20A7.5,7.5 0 0,0 20,12.5A7.5,7.5 0 0,0 12.5,5M7,10H9A1,1 0 0,1 10,11V12C10,12.5 9.62,12.9 9.14,12.97L10.31,15H9.15L8,13V15H7M12,10H14V11H12V12H14V13H12V14H14V15H12A1,1 0 0,1 11,14V11A1,1 0 0,1 12,10M16,10H18V11H16V14H18V15H16A1,1 0 0,1 15,14V11A1,1 0 0,1 16,10M8,11V12H9V11"; -var mdiRectangle = "M4,6V19H20V6H4Z"; -var mdiRectangleOutline = "M4,6V19H20V6H4M18,17H6V8H18V17Z"; -var mdiRecycle = "M21.82,15.42L19.32,19.75C18.83,20.61 17.92,21.06 17,21H15V23L12.5,18.5L15,14V16H17.82L15.6,12.15L19.93,9.65L21.73,12.77C22.25,13.54 22.32,14.57 21.82,15.42M9.21,3.06H14.21C15.19,3.06 16.04,3.63 16.45,4.45L17.45,6.19L19.18,5.19L16.54,9.6L11.39,9.69L13.12,8.69L11.71,6.24L9.5,10.09L5.16,7.59L6.96,4.47C7.37,3.64 8.22,3.06 9.21,3.06M5.05,19.76L2.55,15.43C2.06,14.58 2.13,13.56 2.64,12.79L3.64,11.06L1.91,10.06L7.05,10.14L9.7,14.56L7.97,13.56L6.56,16H11V21H7.4C6.47,21.07 5.55,20.61 5.05,19.76Z"; -var mdiRecycleVariant = "M7.17 7.91L8.9 8.91L12.08 3.42L14.33 7.31L11.73 8.81L17.19 10.27L18.66 4.81L16.06 6.31L13.81 2.41C13.26 1.45 12.03 1.12 11.08 1.68C10.81 1.83 10.58 2.05 10.41 2.31M10 20V18L3.66 18L5.9 14.1L8.5 15.6L7.04 10.14L1.57 11.6L4.17 13.1L1.92 17C1.37 17.96 1.7 19.18 2.65 19.73C2.92 19.89 3.22 19.97 3.54 20M19.06 11.5L17.32 12.5L20.5 18H16V15L12 19L16 23V20H20.5C21.61 20 22.5 19.11 22.5 18C22.5 17.69 22.42 17.38 22.28 17.11Z"; -var mdiReddit = "M14.5 15.41C14.58 15.5 14.58 15.69 14.5 15.8C13.77 16.5 12.41 16.56 12 16.56C11.61 16.56 10.25 16.5 9.54 15.8C9.44 15.69 9.44 15.5 9.54 15.41C9.65 15.31 9.82 15.31 9.92 15.41C10.38 15.87 11.33 16 12 16C12.69 16 13.66 15.87 14.1 15.41C14.21 15.31 14.38 15.31 14.5 15.41M10.75 13.04C10.75 12.47 10.28 12 9.71 12C9.14 12 8.67 12.47 8.67 13.04C8.67 13.61 9.14 14.09 9.71 14.08C10.28 14.08 10.75 13.61 10.75 13.04M14.29 12C13.72 12 13.25 12.5 13.25 13.05S13.72 14.09 14.29 14.09C14.86 14.09 15.33 13.61 15.33 13.05C15.33 12.5 14.86 12 14.29 12M22 12C22 17.5 17.5 22 12 22S2 17.5 2 12C2 6.5 6.5 2 12 2S22 6.5 22 12M18.67 12C18.67 11.19 18 10.54 17.22 10.54C16.82 10.54 16.46 10.7 16.2 10.95C15.2 10.23 13.83 9.77 12.3 9.71L12.97 6.58L15.14 7.05C15.16 7.6 15.62 8.04 16.18 8.04C16.75 8.04 17.22 7.57 17.22 7C17.22 6.43 16.75 5.96 16.18 5.96C15.77 5.96 15.41 6.2 15.25 6.55L12.82 6.03C12.75 6 12.68 6.03 12.63 6.07C12.57 6.11 12.54 6.17 12.53 6.24L11.79 9.72C10.24 9.77 8.84 10.23 7.82 10.96C7.56 10.71 7.2 10.56 6.81 10.56C6 10.56 5.35 11.21 5.35 12C5.35 12.61 5.71 13.11 6.21 13.34C6.19 13.5 6.18 13.62 6.18 13.78C6.18 16 8.79 17.85 12 17.85C15.23 17.85 17.85 16.03 17.85 13.78C17.85 13.64 17.84 13.5 17.81 13.34C18.31 13.11 18.67 12.6 18.67 12Z"; -var mdiRedhat = "M15.34 13.16C16.66 13.16 18.56 12.89 18.56 11.32C18.57 11.2 18.56 11.08 18.53 10.96L17.75 7.56C17.57 6.81 17.41 6.47 16.09 5.81C15.07 5.29 12.85 4.43 12.19 4.43C11.58 4.43 11.4 5.22 10.67 5.22C9.97 5.22 9.45 4.63 8.79 4.63C8.16 4.63 7.75 5.06 7.43 5.94C7.43 5.94 6.55 8.44 6.43 8.8C6.42 8.87 6.41 8.93 6.41 9C6.41 9.97 10.23 13.15 15.34 13.15M18.77 11.96C18.95 12.82 18.95 12.91 18.95 13C18.95 14.5 17.29 15.31 15.12 15.31C10.2 15.31 5.89 12.43 5.89 10.53C5.89 10.26 5.95 10 6.05 9.76C4.28 9.84 2 10.16 2 12.18C2 15.5 9.84 19.57 16.05 19.57C20.81 19.57 22 17.42 22 15.72C22 14.38 20.85 12.86 18.77 11.96"; -var mdiRedo = "M18.4,10.6C16.55,9 14.15,8 11.5,8C6.85,8 2.92,11.03 1.54,15.22L3.9,16C4.95,12.81 7.95,10.5 11.5,10.5C13.45,10.5 15.23,11.22 16.62,12.38L13,16H22V7L18.4,10.6Z"; -var mdiRedoVariant = "M10.5,7A6.5,6.5 0 0,0 4,13.5A6.5,6.5 0 0,0 10.5,20H14V18H10.5C8,18 6,16 6,13.5C6,11 8,9 10.5,9H16.17L13.09,12.09L14.5,13.5L20,8L14.5,2.5L13.08,3.91L16.17,7H10.5M18,18H16V20H18V18Z"; -var mdiReflectHorizontal = "M22,20H14A1,1 0 0,1 13,19V4.97C13,4.5 13.31,4.12 13.74,4C14.19,3.88 14.65,4.08 14.87,4.47L22.89,18.5C23.07,18.81 23.07,19.19 22.89,19.5C22.71,19.81 22.38,20 22,20M2,20C1.62,20 1.29,19.81 1.11,19.5C0.93,19.19 0.93,18.81 1.11,18.5L9.13,4.47C9.35,4.08 9.81,3.88 10.26,4C10.69,4.12 11,4.5 11,4.97V19A1,1 0 0,1 10,20H2M9,18V8.74L3.71,18H9Z"; -var mdiReflectVertical = "M18,23H6C5.61,23 5.26,22.79 5.09,22.45C4.92,22.11 4.96,21.7 5.19,21.4L11.2,13.38C11.58,12.87 12.42,12.87 12.8,13.38L18.81,21.4C19.04,21.7 19.08,22.11 18.91,22.45C18.74,22.79 18.39,23 18,23M18,1C18.39,1 18.74,1.21 18.91,1.55C19.08,1.89 19.04,2.3 18.81,2.6L12.8,10.62C12.42,11.13 11.58,11.13 11.2,10.62L5.19,2.6C4.96,2.3 4.92,1.89 5.09,1.55C5.26,1.21 5.61,1 6,1H18M8,3L12,8.35L16,3H8Z"; -var mdiRefresh = "M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z"; -var mdiRefreshCircle = "M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2M18 11H13L14.81 9.19A3.94 3.94 0 0 0 12 8A4 4 0 1 0 15.86 13H17.91A6 6 0 1 1 12 6A5.91 5.91 0 0 1 16.22 7.78L18 6Z"; -var mdiRegex = "M16,16.92C15.67,16.97 15.34,17 15,17C14.66,17 14.33,16.97 14,16.92V13.41L11.5,15.89C11,15.5 10.5,15 10.11,14.5L12.59,12H9.08C9.03,11.67 9,11.34 9,11C9,10.66 9.03,10.33 9.08,10H12.59L10.11,7.5C10.3,7.25 10.5,7 10.76,6.76V6.76C11,6.5 11.25,6.3 11.5,6.11L14,8.59V5.08C14.33,5.03 14.66,5 15,5C15.34,5 15.67,5.03 16,5.08V8.59L18.5,6.11C19,6.5 19.5,7 19.89,7.5L17.41,10H20.92C20.97,10.33 21,10.66 21,11C21,11.34 20.97,11.67 20.92,12H17.41L19.89,14.5C19.7,14.75 19.5,15 19.24,15.24V15.24C19,15.5 18.75,15.7 18.5,15.89L16,13.41V16.92H16V16.92M5,19A2,2 0 0,1 7,17A2,2 0 0,1 9,19A2,2 0 0,1 7,21A2,2 0 0,1 5,19H5Z"; -var mdiRegisteredTrademark = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12.25,13.27H10.81V16.5H9V7.71H12.26C13.29,7.71 14.09,7.94 14.66,8.4C15.22,8.87 15.5,9.5 15.5,10.36C15.5,10.96 15.37,11.46 15.11,11.86C14.85,12.26 14.46,12.58 13.93,12.81L15.83,16.4V16.5H13.89L12.25,13.27M10.81,11.81H12.27C12.72,11.81 13.07,11.69 13.32,11.46C13.57,11.23 13.69,10.91 13.69,10.5C13.69,10.09 13.58,9.77 13.34,9.53C13.11,9.29 12.75,9.18 12.26,9.18H10.81V11.81Z"; -var mdiReiterate = "M10.5 4A6.5 6.5 0 0 0 4 10H1L5 14L9 10H6.03A4.5 4.5 0 0 1 10.5 6A4.5 4.5 0 0 1 15 10.5A4.5 4.5 0 0 1 10.5 15H2V17H10.5A6.5 6.5 0 0 0 17 10.5A6.5 6.5 0 0 0 10.5 4M19 12V15H16.5A7.5 7.5 0 0 1 14.24 17H19V20L23 16Z"; -var mdiRelationManyToMany = "M22 13V19H21L19 17H11V9H5L3 11H2V5H3L5 7H13V15H19L21 13Z"; -var mdiRelationManyToOne = "M22 15V17H19V19H17V17H11V9H5L3 11H2V5H3L5 7H13V15H17V13H19V15Z"; -var mdiRelationManyToOneOrMany = "M22 13V19H21L19 17V19H17V17H11V9H5L3 11H2V5H3L5 7H13V15H17V13H19V15L21 13Z"; -var mdiRelationManyToOnlyOne = "M22 15V17H21V19H19V17H18V19H16V17H11V9H5L3 11H2V5H3L5 7H13V15H16V13H18V15H19V13H21V15Z"; -var mdiRelationManyToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H5L3 5H2V11H3L5 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; -var mdiRelationManyToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H5L3 5H2V11H3L5 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; -var mdiRelationOneOrManyToMany = "M22 13V19H21L19 17H11V9H7V11H5V9L3 11H2V5H3L5 7V5H7V7H13V15H19L21 13Z"; -var mdiRelationOneOrManyToOne = "M22 15V17H19V19H17V17H11V9H7V11H5V9L3 11H2V5H3L5 7V5H7V7H13V15H17V13H19V15Z"; -var mdiRelationOneOrManyToOneOrMany = "M22 13V19H21L19 17V19H17V17H11V9H7V11H5V9L3 11H2V5H3L5 7V5H7V7H13V15H17V13H19V15L21 13Z"; -var mdiRelationOneOrManyToOnlyOne = "M22 15V17H21V19H19V17H18V19H16V17H11V9H7V11H5V9L3 11H2V5H3L5 7V5H7V7H13V15H16V13H18V15H19V13H21V15Z"; -var mdiRelationOneOrManyToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H7V5H5V7L3 5H2V11H3L5 9V11H7V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; -var mdiRelationOneOrManyToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H7V5H5V7L3 5H2V11H3L5 9V11H7V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; -var mdiRelationOneToMany = "M22 13V19H21L19 17H11V9H7V11H5V9H2V7H5V5H7V7H13V15H19L21 13Z"; -var mdiRelationOneToOne = "M22 15V17H19V19H17V17H11V9H7V11H5V9H2V7H5V5H7V7H13V15H17V13H19V15Z"; -var mdiRelationOneToOneOrMany = "M22 13V19H21L19 17V19H17V17H11V9H7V11H5V9H2V7H5V5H7V7H13V15H17V13H19V15L21 13Z"; -var mdiRelationOneToOnlyOne = "M22 15V17H21V19H19V17H18V19H16V17H11V9H7V11H5V9H2V7H5V5H7V7H13V15H16V13H18V15H19V13H21V15Z"; -var mdiRelationOneToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H7V5H5V7H2V9H5V11H7V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; -var mdiRelationOneToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H7V5H5V7H2V9H5V11H7V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; -var mdiRelationOnlyOneToMany = "M22 13V19H21L19 17H11V9H8V11H6V9H5V11H3V9H2V7H3V5H5V7H6V5H8V7H13V15H19L21 13Z"; -var mdiRelationOnlyOneToOne = "M22 15V17H19V19H17V17H11V9H8V11H6V9H5V11H3V9H2V7H3V5H5V7H6V5H8V7H13V15H17V13H19V15Z"; -var mdiRelationOnlyOneToOneOrMany = "M22 13V19H21L19 17V19H17V17H11V9H8V11H6V9H5V11H3V9H2V7H3V5H5V7H6V5H8V7H13V15H17V13H19V15L21 13Z"; -var mdiRelationOnlyOneToOnlyOne = "M22 15V17H21V19H19V17H18V19H16V17H11V9H8V11H6V9H5V11H3V9H2V7H3V5H5V7H6V5H8V7H13V15H16V13H18V15H19V13H21V15Z"; -var mdiRelationOnlyOneToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H8V5H6V7H5V5H3V7H2V9H3V11H5V9H6V11H8V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; -var mdiRelationOnlyOneToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H8V5H6V7H5V5H3V7H2V9H3V11H5V9H6V11H8V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; -var mdiRelationZeroOrManyToMany = "M21 13L19 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H19L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; -var mdiRelationZeroOrManyToOne = "M19 15V13H17V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H17V19H19V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; -var mdiRelationZeroOrManyToOneOrMany = "M21 13L19 15V13H17V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H17V19H19V17L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; -var mdiRelationZeroOrManyToOnlyOne = "M21 15V13H19V15H18V13H16V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H16V19H18V17H19V19H21V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; -var mdiRelationZeroOrManyToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; -var mdiRelationZeroOrManyToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; -var mdiRelationZeroOrOneToMany = "M21 13L19 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H19L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; -var mdiRelationZeroOrOneToOne = "M19 15V13H17V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H17V19H19V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; -var mdiRelationZeroOrOneToOneOrMany = "M21 13L19 15V13H17V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H17V19H19V17L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; -var mdiRelationZeroOrOneToOnlyOne = "M21 15V13H19V15H18V13H16V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H16V19H18V17H19V19H21V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z"; -var mdiRelationZeroOrOneToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; -var mdiRelationZeroOrOneToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z"; -var mdiRelativeScale = "M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M12,10H10V12H12M8,10H6V12H8M16,14H14V16H16M16,10H14V12H16V10Z"; -var mdiReload = "M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z"; -var mdiReloadAlert = "M2 12C2 17 6 21 11 21C13.4 21 15.7 20.1 17.4 18.4L15.9 16.9C14.6 18.3 12.9 19 11 19C4.8 19 1.6 11.5 6.1 7.1S18 5.8 18 12H15L19 16H19.1L23 12H20C20 7 16 3 11 3S2 7 2 12M10 15H12V17H10V15M10 7H12V13H10V7"; -var mdiReminder = "M7.25,3C7.9,3 8.5,3.21 9,3.56V3A2,2 0 0,1 11,1A2,2 0 0,1 13,3V3.57C13.5,3.22 14.1,3 14.75,3A3,3 0 0,1 17.75,6C17.75,7.58 16.54,8.87 15,9H13V10H14.24L14.72,10.13L19.31,12.42C20.13,12.73 20.53,13.34 20.53,14.25L20.5,14.39V14.53L19.5,21.28C19.44,21.75 19.22,22.16 18.84,22.5C18.47,22.84 18.05,23 17.58,23H10C9.45,23 9,22.81 8.58,22.41L2,15.84L3.05,14.77C3.33,14.5 3.69,14.34 4.13,14.34H4.45L9,15.33V10L9,9H7V9C5.46,8.86 4.25,7.57 4.25,6A3,3 0 0,1 7.25,3M9,6A1.75,1.75 0 0,0 7.25,4.25A1.75,1.75 0 0,0 5.5,6C5.5,6.88 6.15,7.61 7,7.73V7.75H9V6M15,7.75V7.74C15.85,7.62 16.5,6.89 16.5,6C16.5,5.04 15.72,4.26 14.75,4.26C13.78,4.26 13,5.04 13,6V7.75H15Z"; -var mdiRemote = "M12,0C8.96,0 6.21,1.23 4.22,3.22L5.63,4.63C7.26,3 9.5,2 12,2C14.5,2 16.74,3 18.36,4.64L19.77,3.23C17.79,1.23 15.04,0 12,0M7.05,6.05L8.46,7.46C9.37,6.56 10.62,6 12,6C13.38,6 14.63,6.56 15.54,7.46L16.95,6.05C15.68,4.78 13.93,4 12,4C10.07,4 8.32,4.78 7.05,6.05M12,15A2,2 0 0,1 10,13A2,2 0 0,1 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M15,9H9A1,1 0 0,0 8,10V22A1,1 0 0,0 9,23H15A1,1 0 0,0 16,22V10A1,1 0 0,0 15,9Z"; -var mdiRemoteDesktop = "M3,2A2,2 0 0,0 1,4V16C1,17.11 1.9,18 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4A2,2 0 0,0 21,2M3,4H21V16H3M15,5L11.5,8.5L15,12L16.4,10.6L14.3,8.5L16.4,6.4M9,8L7.6,9.4L9.7,11.5L7.6,13.6L9,15L12.5,11.5"; -var mdiRemoteOff = "M2,5.27L3.28,4L21,21.72L19.73,23L16,19.27V22A1,1 0 0,1 15,23H9C8.46,23 8,22.55 8,22V11.27L2,5.27M12,0C15.05,0 17.8,1.23 19.77,3.23L18.36,4.64C16.75,3 14.5,2 12,2C9.72,2 7.64,2.85 6.06,4.24L4.64,2.82C6.59,1.07 9.17,0 12,0M12,4C13.94,4 15.69,4.78 16.95,6.05L15.55,7.46C14.64,6.56 13.39,6 12,6C10.83,6 9.76,6.4 8.9,7.08L7.5,5.66C8.7,4.62 10.28,4 12,4M15,9C15.56,9 16,9.45 16,10V14.18L13.5,11.69L13.31,11.5L10.82,9H15M10.03,13.3C10.16,14.16 10.84,14.85 11.71,15L10.03,13.3Z"; -var mdiRemoteTv = "M9,2C7.89,2 7,2.89 7,4V20C7,21.11 7.89,22 9,22H15C16.11,22 17,21.11 17,20V4C17,2.89 16.11,2 15,2H13V4H11V2H9M11,6H13V8H15V10H13V12H11V10H9V8H11V6M9,14H11V16H9V14M13,14H15V16H13V14M9,18H11V20H9V18M13,18H15V20H13V18Z"; -var mdiRemoteTvOff = "M2,5.27L3.28,4L20,20.72L18.73,22L17,20.25C16.86,21.24 16,22 15,22H9A2,2 0 0,1 7,20V10.27L2,5.27M9,2H11V4H13V2H15A2,2 0 0,1 17,4V15.18L13,11.18V10H15V8H13V6H11V8H9.82L7,5.18V4A2,2 0 0,1 9,2M9,20H11V18H9V20M13,20H15V18.27L14.73,18H13V20M9,14V16H11V14.27L10.73,14H9Z"; -var mdiRenameBox = "M18,17H10.5L12.5,15H18M6,17V14.5L13.88,6.65C14.07,6.45 14.39,6.45 14.59,6.65L16.35,8.41C16.55,8.61 16.55,8.92 16.35,9.12L8.47,17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiReorderHorizontal = "M3,15H21V13H3V15M3,19H21V17H3V19M3,11H21V9H3V11M3,5V7H21V5H3Z"; -var mdiReorderVertical = "M9,3V21H11V3H9M5,3V21H7V3H5M13,3V21H15V3H13M19,3H17V21H19V3Z"; -var mdiRepeat = "M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z"; -var mdiRepeatOff = "M2,5.27L3.28,4L20,20.72L18.73,22L15.73,19H7V22L3,18L7,14V17H13.73L7,10.27V11H5V8.27L2,5.27M17,13H19V17.18L17,15.18V13M17,5V2L21,6L17,10V7H8.82L6.82,5H17Z"; -var mdiRepeatOnce = "M13,15V9H12L10,10V11H11.5V15M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z"; -var mdiReplay = "M12,5V1L7,6L12,11V7A6,6 0 0,1 18,13A6,6 0 0,1 12,19A6,6 0 0,1 6,13H4A8,8 0 0,0 12,21A8,8 0 0,0 20,13A8,8 0 0,0 12,5Z"; -var mdiReply = "M10,9V5L3,12L10,19V14.9C15,14.9 18.5,16.5 21,20C20,15 17,10 10,9Z"; -var mdiReplyAll = "M13,9V5L6,12L13,19V14.9C18,14.9 21.5,16.5 24,20C23,15 20,10 13,9M7,8V5L0,12L7,19V16L3,12L7,8Z"; -var mdiReplyAllOutline = "M11,9.8V10.7L12.7,10.9C15.3,11.3 17.2,12.3 18.6,13.6C16.9,13.1 15.1,12.8 13,12.8H11V14.1L8.8,12L11,9.8M13,5L6,12L13,19V14.9C18,14.9 21.5,16.5 24,20C23,15 20,10 13,9M7,8V5L0,12L7,19V16L3,12"; -var mdiReplyCircle = "M2 12C2 17.5 6.5 22 12 22S22 17.5 22 12 17.5 2 12 2 2 6.5 2 12M5 11L10 6V9C15.06 9.73 17.28 13.33 18 17C16.19 14.43 13.61 13 10 13V16L5 11Z"; -var mdiReplyOutline = "M8,9.8V10.7L9.7,11C12.3,11.4 14.2,12.4 15.6,13.7C13.9,13.2 12.1,12.9 10,12.9H8V14.2L5.8,12L8,9.8M10,5L3,12L10,19V14.9C15,14.9 18.5,16.5 21,20C20,15 17,10 10,9"; -var mdiReproduction = "M12.72,13.15L13.62,12.26C13.6,11 14.31,9.44 15.62,8.14C17.57,6.18 20.11,5.55 21.28,6.72C22.45,7.89 21.82,10.43 19.86,12.38C18.56,13.69 17,14.4 15.74,14.38L14.85,15.28C14.5,15.61 14,15.66 13.6,15.41C12.76,15.71 12,16.08 11.56,16.8C11.03,17.68 11.03,19.1 10.47,19.95C9.91,20.81 8.79,21.1 7.61,21.1C6.43,21.1 5,21 3.95,19.5L6.43,19.92C7,20 8.5,19.39 9.05,18.54C9.61,17.68 9.61,16.27 10.14,15.38C10.61,14.6 11.5,14.23 12.43,13.91C12.42,13.64 12.5,13.36 12.72,13.15M7,2A5,5 0 0,1 12,7A5,5 0 0,1 7,12A5,5 0 0,1 2,7A5,5 0 0,1 7,2M7,4A3,3 0 0,0 4,7A3,3 0 0,0 7,10A3,3 0 0,0 10,7A3,3 0 0,0 7,4Z"; -var mdiResistor = "M2,11H7L10.07,15.35L13.11,4L18,11H22V13H17L13.93,8.65L10.89,20L6,13H2V11Z"; -var mdiResistorNodes = "M2,11H3.67C4.08,9.83 5.19,9 6.5,9A3,3 0 0,1 9.5,12C9.5,12.65 9.29,13.25 8.94,13.74L10.07,15.35L13.11,4L14.61,6.13L16.7,9.11L17.5,9C18.81,9 19.92,9.83 20.33,11H22V13H20.33C19.92,14.17 18.81,15 17.5,15A3,3 0 0,1 14.5,12C14.5,11.35 14.71,10.75 15.06,10.26L13.93,8.65L10.89,20L7.3,14.89C7.05,14.96 6.78,15 6.5,15C5.19,15 4.08,14.17 3.67,13H2V11M17.5,10.5A1.5,1.5 0 0,0 16,12A1.5,1.5 0 0,0 17.5,13.5A1.5,1.5 0 0,0 19,12A1.5,1.5 0 0,0 17.5,10.5M6.5,10.5A1.5,1.5 0 0,0 5,12A1.5,1.5 0 0,0 6.5,13.5A1.5,1.5 0 0,0 8,12A1.5,1.5 0 0,0 6.5,10.5Z"; -var mdiResize = "M10.59,12L14.59,8H11V6H18V13H16V9.41L12,13.41V16H20V4H8V12H10.59M22,2V18H12V22H2V12H6V2H22M10,14H4V20H10V14Z"; -var mdiResizeBottomRight = "M22,22H20V20H22V22M22,18H20V16H22V18M18,22H16V20H18V22M18,18H16V16H18V18M14,22H12V20H14V22M22,14H20V12H22V14Z"; -var mdiResponsive = "M4,6V16H9V12A2,2 0 0,1 11,10H16A2,2 0 0,1 18,12V16H20V6H4M0,20V18H4A2,2 0 0,1 2,16V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H18V20C18,21.11 17.1,22 16,22H11A2,2 0 0,1 9,20H9L0,20M11.5,20A0.5,0.5 0 0,0 11,20.5A0.5,0.5 0 0,0 11.5,21A0.5,0.5 0 0,0 12,20.5A0.5,0.5 0 0,0 11.5,20M15.5,20A0.5,0.5 0 0,0 15,20.5A0.5,0.5 0 0,0 15.5,21A0.5,0.5 0 0,0 16,20.5A0.5,0.5 0 0,0 15.5,20M13,20V21H14V20H13M11,12V19H16V12H11Z"; -var mdiRestart = "M12,4C14.1,4 16.1,4.8 17.6,6.3C20.7,9.4 20.7,14.5 17.6,17.6C15.8,19.5 13.3,20.2 10.9,19.9L11.4,17.9C13.1,18.1 14.9,17.5 16.2,16.2C18.5,13.9 18.5,10.1 16.2,7.7C15.1,6.6 13.5,6 12,6V10.6L7,5.6L12,0.6V4M6.3,17.6C3.7,15 3.3,11 5.1,7.9L6.6,9.4C5.5,11.6 5.9,14.4 7.8,16.2C8.3,16.7 8.9,17.1 9.6,17.4L9,19.4C8,19 7.1,18.4 6.3,17.6Z"; -var mdiRestartAlert = "M10 4.03V.633L5 5.63L10 10.63V6.03C11.5 6.03 13.11 6.63 14.21 7.73C16.5 10.13 16.5 13.93 14.21 16.23C12.91 17.53 11.11 18.13 9.4 17.93L8.9 19.93C11.31 20.23 13.81 19.53 15.61 17.63C18.7 14.53 18.7 9.43 15.61 6.33C14.11 4.83 12.11 4.03 10 4.03M4.31 17.63C5.11 18.43 6 19.03 7 19.43L7.61 17.43C6.91 17.13 6.31 16.73 5.81 16.23C3.91 14.43 3.5 11.63 4.61 9.43L3.11 7.93C1.31 11.03 1.71 15.03 4.31 17.63M20 13H22V7H20V13M20 17H22V15H20V17Z"; -var mdiRestartOff = "M20.8,22.7L16.6,18.5C14.9,19.7 12.9,20.2 10.9,19.9L11.4,17.9C12.7,18 14,17.7 15.1,17L1.1,3L2.4,1.7L16.5,15.8L17.9,17.2L22.1,21.4L20.8,22.7M12,6C13.5,6 15.1,6.6 16.2,7.8C18,9.6 18.4,12.2 17.5,14.4L19,15.9C20.7,12.9 20.2,9 17.6,6.4C16.1,4.8 14,4 12,4V0.7L7.9,4.7L12,8.8V6M6.6,9.4L5.1,7.9C3.3,11 3.7,15 6.3,17.7C7.1,18.4 8,19 9,19.4L9.5,17.4C8.9,17.1 8.3,16.7 7.7,16.2C5.9,14.4 5.5,11.6 6.6,9.4Z"; -var mdiRestore = "M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3Z"; -var mdiRestoreAlert = "M13 3C8 3 4 7 4 12H1L4.9 15.9L5 16L9 12H6C6 8.1 9.1 5 13 5S20 8.1 20 12 16.9 19 13 19C11.1 19 9.3 18.2 8.1 16.9L6.7 18.3C8.3 20 10.5 21 13 21C18 21 22 17 22 12S18 3 13 3M12 15H14V17H12V15M12 7H14V13H12V7"; -var mdiRewind = "M11.5,12L20,18V6M11,18V6L2.5,12L11,18Z"; -var mdiRewind10 = "M12.5,3C17.15,3 21.08,6.03 22.47,10.22L20.1,11C19.05,7.81 16.04,5.5 12.5,5.5C10.54,5.5 8.77,6.22 7.38,7.38L10,10H3V3L5.6,5.6C7.45,4 9.85,3 12.5,3M10,12V22H8V14H6V12H10M18,14V20C18,21.11 17.11,22 16,22H14A2,2 0 0,1 12,20V14A2,2 0 0,1 14,12H16C17.11,12 18,12.9 18,14M14,14V20H16V14H14Z"; -var mdiRewind30 = "M19,14V20C19,21.11 18.11,22 17,22H15A2,2 0 0,1 13,20V14A2,2 0 0,1 15,12H17C18.11,12 19,12.9 19,14M15,14V20H17V14H15M11,20C11,21.11 10.1,22 9,22H5V20H9V18H7V16H9V14H5V12H9A2,2 0 0,1 11,14V15.5A1.5,1.5 0 0,1 9.5,17A1.5,1.5 0 0,1 11,18.5V20M12.5,3C17.15,3 21.08,6.03 22.47,10.22L20.1,11C19.05,7.81 16.04,5.5 12.5,5.5C10.54,5.5 8.77,6.22 7.38,7.38L10,10H3V3L5.6,5.6C7.45,4 9.85,3 12.5,3Z"; -var mdiRewind5 = "M12.5 3C17.15 3 21.08 6.03 22.47 10.22L20.1 11C19.05 7.81 16.04 5.5 12.5 5.5C10.54 5.5 8.77 6.22 7.38 7.38L10 10H3V3L5.6 5.6C7.45 4 9.85 3 12.5 3M9 12H15V14H11V16H13C14.11 16 15 16.9 15 18V20C15 21.11 14.11 22 13 22H9V20H13V18H9V12Z"; -var mdiRewind60 = "M19 14V20C19 21.1 18.1 22 17 22H15C13.9 22 13 21.1 13 20V14C13 12.9 13.9 12 15 12H17C18.1 12 19 12.9 19 14M15 14V20H17V14H15M12.5 3C17.1 3 21.1 6 22.5 10.2L20.1 11C19 7.8 16 5.5 12.5 5.5C10.5 5.5 8.8 6.2 7.4 7.4L10 10H3V3L5.6 5.6C7.4 4 9.9 3 12.5 3M7 12C5.9 12 5 12.9 5 14V20C5 21.1 5.9 22 7 22H9C10.1 22 11 21.1 11 20V18C11 16.9 10.1 16 9 16H7V14H11V12H7M7 18H9V20H7V18Z"; -var mdiRewindOutline = "M10,9.9L7,12L10,14.1V9.9M19,9.9L16,12L19,14.1V9.9M12,6V18L3.5,12L12,6M21,6V18L12.5,12L21,6Z"; -var mdiRhombus = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2Z"; -var mdiRhombusMedium = "M12 6.46C11.72 6.46 11.44 6.56 11.22 6.78L6.78 11.22C6.35 11.65 6.35 12.35 6.78 12.78L11.22 17.22C11.65 17.65 12.35 17.65 12.78 17.22L17.22 12.78C17.65 12.35 17.65 11.65 17.22 11.22L12.78 6.78C12.56 6.56 12.28 6.46 12 6.46Z"; -var mdiRhombusMediumOutline = "M12 6.46C11.72 6.46 11.44 6.56 11.22 6.78L6.78 11.22C6.35 11.65 6.35 12.35 6.78 12.78L11.22 17.22C11.65 17.65 12.35 17.65 12.78 17.22L17.22 12.78C17.65 12.35 17.65 11.65 17.22 11.22L12.78 6.78C12.56 6.56 12.28 6.46 12 6.46M12 8.83L15.17 12L12 15.17L8.83 12L12 8.83Z"; -var mdiRhombusOutline = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12Z"; -var mdiRhombusSplit = "M12 2C11.5 2 11 2.19 10.59 2.59L7.29 5.88L12 10.58L16.71 5.88L13.41 2.59C13 2.19 12.5 2 12 2M5.88 7.29L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L5.88 16.71L10.58 12L5.88 7.29M18.12 7.29L13.42 12L18.12 16.71L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L18.12 7.29M12 13.42L7.29 18.12L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L16.71 18.12L12 13.42Z"; -var mdiRhombusSplitOutline = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L15.29 7.29L12 10.59L8.71 7.29L12 4M7.29 8.71L10.59 12L7.29 15.29L4 12L7.29 8.71M16.71 8.71L20 12L16.71 15.29L13.41 12L16.71 8.71M12 13.41L15.29 16.71L12 20L8.71 16.71L12 13.41Z"; -var mdiRibbon = "M13.41,19.31L16.59,22.5L18,21.07L14.83,17.9M15.54,11.53H15.53L12,15.07L8.47,11.53H8.46V11.53C7.56,10.63 7,9.38 7,8A5,5 0 0,1 12,3A5,5 0 0,1 17,8C17,9.38 16.44,10.63 15.54,11.53M16.9,13C18.2,11.73 19,9.96 19,8A7,7 0 0,0 12,1A7,7 0 0,0 5,8C5,9.96 5.81,11.73 7.1,13V13L10.59,16.5L6,21.07L7.41,22.5L16.9,13Z"; -var mdiRice = "M22,11H19.7C19.4,9.9 18.9,8.8 18.2,8L21.6,2.6L19.9,1.5L16.7,6.6C16.3,6.3 16,6.1 15.5,5.9L16.4,2.3L14.5,1.8L13.7,5.2C13.1,5.1 12.6,5 12,5C8.3,5 5.2,7.6 4.3,11H2C2,15.1 4.5,18.6 8,20.2V22H16V20.2C19.5,18.6 22,15.1 22,11M12,7C14.6,7 16.8,8.7 17.6,11H6.4C7.2,8.7 9.4,7 12,7Z"; -var mdiRickshaw = "M20 14.05V12.73C20 12.26 19.84 11.8 19.54 11.44L15.6 6.72C15.22 6.26 14.66 6 14.06 6H4C2.9 6 2 6.9 2 8V15C2 16.1 2.9 17 4 17H4.05C4.28 18.14 5.29 19 6.5 19S8.72 18.14 8.95 17H17.05C17.28 18.14 18.29 19 19.5 19C20.88 19 22 17.88 22 16.5C22 15.29 21.14 14.28 20 14.05M3.5 8C3.5 7.73 3.73 7.5 4 7.5H7V12H3.5V8M6.5 17.5C5.95 17.5 5.5 17.05 5.5 16.5S5.95 15.5 6.5 15.5 7.5 15.95 7.5 16.5 7.05 17.5 6.5 17.5M13 15.5H9V14H11V12H9V7.5H13V15.5M15 8.34L18.05 12H15V8.34M19.5 17.5C18.95 17.5 18.5 17.05 18.5 16.5S18.95 15.5 19.5 15.5 20.5 15.95 20.5 16.5 20.05 17.5 19.5 17.5Z"; -var mdiRickshawElectric = "M20 12.05V10.73C20 10.26 19.84 9.8 19.54 9.44L15.6 4.72C15.22 4.26 14.66 4 14.06 4H4C2.9 4 2 4.9 2 6V13C2 14.1 2.9 15 4 15H4.05C4.28 16.14 5.29 17 6.5 17S8.72 16.14 8.95 15H17.05C17.28 16.14 18.29 17 19.5 17C20.88 17 22 15.88 22 14.5C22 13.29 21.14 12.28 20 12.05M3.5 6C3.5 5.73 3.73 5.5 4 5.5H7V10H3.5V6M6.5 15.5C5.95 15.5 5.5 15.05 5.5 14.5S5.95 13.5 6.5 13.5 7.5 13.95 7.5 14.5 7.05 15.5 6.5 15.5M13 13.5H9V12H11V10H9V5.5H13V13.5M15 6.34L18.05 10H15V6.34M19.5 15.5C18.95 15.5 18.5 15.05 18.5 14.5S18.95 13.5 19.5 13.5 20.5 13.95 20.5 14.5 20.05 15.5 19.5 15.5M11 20H7L13 23V21H17L11 18V20Z"; -var mdiRing = "M12,10L8,4.4L9.6,2H14.4L16,4.4L12,10M15.5,6.8L14.3,8.5C16.5,9.4 18,11.5 18,14A6,6 0 0,1 12,20A6,6 0 0,1 6,14C6,11.5 7.5,9.4 9.7,8.5L8.5,6.8C5.8,8.1 4,10.8 4,14A8,8 0 0,0 12,22A8,8 0 0,0 20,14C20,10.8 18.2,8.1 15.5,6.8Z"; -var mdiRivet = "M11.43,2C10.61,2 9.94,2.65 9.94,3.5C9.94,4.64 9.94,5.8 9.94,6.96H7.95V7.95H15.91V6.96H13.92C13.92,5.8 13.92,4.64 13.92,3.5C13.92,2.65 13.25,2 12.43,2H11.43M10.94,8.95V21.87L11.93,22.87L12.92,21.87V8.95H10.94Z"; -var mdiRoad = "M11,16H13V20H11M11,10H13V14H11M11,4H13V8H11M4,22H20V2H4V22Z"; -var mdiRoadVariant = "M18.1,4.8C18,4.3 17.6,4 17.1,4H13L13.2,7H10.8L11,4H6.8C6.3,4 5.9,4.4 5.8,4.8L3.1,18.8C3,19.4 3.5,20 4.1,20H10L10.3,15H13.7L14,20H19.8C20.4,20 20.9,19.4 20.8,18.8L18.1,4.8M10.4,13L10.6,9H13.2L13.4,13H10.4Z"; -var mdiRobber = "M10.7 12.5C10.7 12.8 9.4 13.2 8.4 13.2S6.3 12.5 6.3 12.3C6.3 12 7 11.1 8.6 11C9.5 10.9 10.5 11.5 10.7 12.5M15.4 11C14.4 10.9 13.5 11.5 13.3 12.5C13.3 12.8 14.5 13.2 15.6 13.2C16.7 13.2 17.7 12.5 17.7 12.3S17 11.1 15.4 11M22 12C22 17.5 17.5 22 12 22S2 17.5 2 12 6.5 2 12 2 22 6.5 22 12M20 11.2C20 9.2 19.3 8.5 16.7 8.5C14.1 8.5 13.3 9.6 12 9.6S10 8.5 7.3 8.5 4 9.1 4 11.2C4 14.6 5.5 16.5 7.6 16.5C9.2 16.5 10.4 14.5 12 14.5S14.7 16.5 16.4 16.5C18.5 16.5 20 14.6 20 11.2Z"; -var mdiRobot = "M12,2A2,2 0 0,1 14,4C14,4.74 13.6,5.39 13,5.73V7H14A7,7 0 0,1 21,14H22A1,1 0 0,1 23,15V18A1,1 0 0,1 22,19H21V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V19H2A1,1 0 0,1 1,18V15A1,1 0 0,1 2,14H3A7,7 0 0,1 10,7H11V5.73C10.4,5.39 10,4.74 10,4A2,2 0 0,1 12,2M7.5,13A2.5,2.5 0 0,0 5,15.5A2.5,2.5 0 0,0 7.5,18A2.5,2.5 0 0,0 10,15.5A2.5,2.5 0 0,0 7.5,13M16.5,13A2.5,2.5 0 0,0 14,15.5A2.5,2.5 0 0,0 16.5,18A2.5,2.5 0 0,0 19,15.5A2.5,2.5 0 0,0 16.5,13Z"; -var mdiRobotAngry = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M7.5 18C6.12 18 5 16.88 5 15.5C5 14.68 5.4 13.96 6 13.5L9.83 16.38C9.5 17.32 8.57 18 7.5 18M16.5 18C15.43 18 14.5 17.32 14.17 16.38L18 13.5C18.6 13.96 19 14.68 19 15.5C19 16.88 17.88 18 16.5 18Z"; -var mdiRobotAngryOutline = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M21 17H19V20H5V17H3V16H5V14C5 11.24 7.24 9 10 9H14C16.76 9 19 11.24 19 14V16H21V17M17.5 15.5C17.5 16.61 16.61 17.5 15.5 17.5C14.53 17.5 13.73 16.81 13.54 15.9L16.5 13.78C17.1 14.13 17.5 14.76 17.5 15.5M7.5 13.78L10.46 15.9C10.28 16.81 9.47 17.5 8.5 17.5C7.4 17.5 6.5 16.61 6.5 15.5C6.5 14.76 6.9 14.13 7.5 13.78Z"; -var mdiRobotConfused = "M20 4H18V3H20.5C20.78 3 21 3.22 21 3.5V5.5C21 5.78 20.78 6 20.5 6H20V7H19V5H20V4M19 9H20V8H19V9M17 3H16V7H17V3M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C14.34 7 14.67 7.03 15 7.08V10H19.74C20.53 11.13 21 12.5 21 14H22C22.55 14 23 14.45 23 15M10 15.5C10 14.12 8.88 13 7.5 13S5 14.12 5 15.5 6.12 18 7.5 18 10 16.88 10 15.5M19 15.5C19 14.12 17.88 13 16.5 13S14 14.12 14 15.5 15.12 18 16.5 18 19 16.88 19 15.5M17 8H16V9H17V8Z"; -var mdiRobotConfusedOutline = "M19 8H20V9H19V8M20 5H19V7H20V6H20.5C20.78 6 21 5.78 21 5.5V3.5C21 3.22 20.78 3 20.5 3H18V4H20V5M17 3H16V7H17V3M13.5 15.5C13.5 16.61 14.4 17.5 15.5 17.5S17.5 16.61 17.5 15.5 16.61 13.5 15.5 13.5 13.5 14.4 13.5 15.5M17 8H16V9H17V8M22 14H21C21 12.5 20.53 11.13 19.74 10H16.97C18.19 10.91 19 12.36 19 14V16H21V17H19V20H5V17H3V16H5V14C5 11.24 7.24 9 10 9H14C14.34 9 14.68 9.04 15 9.1V7.08C14.67 7.03 14.34 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M8.5 13.5C7.4 13.5 6.5 14.4 6.5 15.5S7.4 17.5 8.5 17.5 10.5 16.61 10.5 15.5 9.61 13.5 8.5 13.5Z"; -var mdiRobotDead = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M9.86 16.68L8.68 17.86L7.5 16.68L6.32 17.86L5.14 16.68L6.32 15.5L5.14 14.32L6.32 13.14L7.5 14.32L8.68 13.14L9.86 14.32L8.68 15.5L9.86 16.68M18.86 16.68L17.68 17.86L16.5 16.68L15.32 17.86L14.14 16.68L15.32 15.5L14.14 14.32L15.32 13.14L16.5 14.32L17.68 13.14L18.86 14.32L17.68 15.5L18.86 16.68Z"; -var mdiRobotDeadOutline = "M10.62 14.44L9.56 15.5L10.62 16.56L9.56 17.62L8.5 16.56L7.44 17.62L6.38 16.56L7.44 15.5L6.38 14.44L7.44 13.38L8.5 14.44L9.56 13.38L10.62 14.44M16.56 13.38L15.5 14.44L14.44 13.38L13.38 14.44L14.44 15.5L13.38 16.56L14.44 17.62L15.5 16.56L16.56 17.62L17.62 16.56L16.56 15.5L17.62 14.44L16.56 13.38M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M21 16H19V14C19 11.24 16.76 9 14 9H10C7.24 9 5 11.24 5 14V16H3V17H5V20H19V17H21V16Z"; -var mdiRobotExcited = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M8.68 17.04L7.5 15.86L6.32 17.04L5.14 15.86L7.5 13.5L9.86 15.86L8.68 17.04M17.68 17.04L16.5 15.86L15.32 17.04L14.14 15.86L16.5 13.5L18.86 15.86L17.68 17.04Z"; -var mdiRobotExcitedOutline = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M21 17H19V20H5V17H3V16H5V14C5 11.24 7.24 9 10 9H14C16.76 9 19 11.24 19 14V16H21V17M8.5 13.5L10.86 15.86L9.68 17.04L8.5 15.86L7.32 17.04L6.14 15.86L8.5 13.5M15.5 13.5L17.86 15.86L16.68 17.04L15.5 15.86L14.32 17.04L13.14 15.86L15.5 13.5Z"; -var mdiRobotHappy = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M9.79 16.5C9.4 15.62 8.53 15 7.5 15S5.6 15.62 5.21 16.5C5.08 16.19 5 15.86 5 15.5C5 14.12 6.12 13 7.5 13S10 14.12 10 15.5C10 15.86 9.92 16.19 9.79 16.5M18.79 16.5C18.4 15.62 17.5 15 16.5 15S14.6 15.62 14.21 16.5C14.08 16.19 14 15.86 14 15.5C14 14.12 15.12 13 16.5 13S19 14.12 19 15.5C19 15.86 18.92 16.19 18.79 16.5Z"; -var mdiRobotHappyOutline = "M10.5 15.5C10.5 15.87 10.4 16.2 10.22 16.5C9.88 15.91 9.24 15.5 8.5 15.5S7.12 15.91 6.78 16.5C6.61 16.2 6.5 15.87 6.5 15.5C6.5 14.4 7.4 13.5 8.5 13.5S10.5 14.4 10.5 15.5M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M21 16H19V14C19 11.24 16.76 9 14 9H10C7.24 9 5 11.24 5 14V16H3V17H5V20H19V17H21V16M15.5 13.5C14.4 13.5 13.5 14.4 13.5 15.5C13.5 15.87 13.61 16.2 13.78 16.5C14.12 15.91 14.76 15.5 15.5 15.5S16.88 15.91 17.22 16.5C17.4 16.2 17.5 15.87 17.5 15.5C17.5 14.4 16.61 13.5 15.5 13.5Z"; -var mdiRobotIndustrial = "M18.41,4L16,6.41V6.59L18.41,9H22V11H17.59L16,9.41V12H15A2,2 0 0,1 13,10V7.5H9.86C9.77,7.87 9.62,8.22 9.42,8.55L15.18,19H20A2,2 0 0,1 22,21V22H2V21A2,2 0 0,1 4,19H10.61L5.92,10.5C4.12,10.47 2.56,9.24 2.11,7.5C1.56,5.36 2.85,3.18 5,2.63C7.13,2.08 9.31,3.36 9.86,5.5H13V3A2,2 0 0,1 15,1H16V3.59L17.59,2H22V4H18.41M6,4.5A2,2 0 0,0 4,6.5A2,2 0 0,0 6,8.5A2,2 0 0,0 8,6.5A2,2 0 0,0 6,4.5Z"; -var mdiRobotLove = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M9.7 15.45L8.97 16.18L7.5 17.65L5.3 15.45C4.9 15.05 4.9 14.39 5.3 14C5.71 13.58 6.36 13.58 6.77 14L7.5 14.72L8.23 14C8.64 13.58 9.29 13.58 9.7 14C10.1 14.39 10.1 15.05 9.7 15.45M18.7 15.45L17.97 16.18L16.5 17.65L14.3 15.45C13.9 15.05 13.9 14.39 14.3 14C14.71 13.58 15.36 13.58 15.77 14L16.5 14.72L17.23 14C17.64 13.58 18.29 13.58 18.7 14C19.1 14.39 19.1 15.05 18.7 15.45Z"; -var mdiRobotLoveOutline = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M21 17H19V20H5V17H3V16H5V14C5 11.24 7.24 9 10 9H14C16.76 9 19 11.24 19 14V16H21V17M10.7 14C11.1 14.39 11.1 15.05 10.7 15.45L9.97 16.18L8.5 17.65L6.3 15.45C5.9 15.05 5.9 14.39 6.3 14C6.71 13.58 7.36 13.58 7.77 14L8.5 14.72L9.23 14C9.64 13.58 10.29 13.58 10.7 14M17.7 14C18.1 14.39 18.1 15.05 17.7 15.45L16.97 16.18L15.5 17.65L13.3 15.45C12.9 15.05 12.9 14.39 13.3 14C13.71 13.58 14.36 13.58 14.77 14L15.5 14.72L16.23 14C16.64 13.58 17.29 13.58 17.7 14Z"; -var mdiRobotMower = "M1 14V5H13C18.5 5 23 9.5 23 15V17H20.83C20.42 18.17 19.31 19 18 19C16.69 19 15.58 18.17 15.17 17H10C9.09 18.21 7.64 19 6 19C3.24 19 1 16.76 1 14M6 11C4.34 11 3 12.34 3 14C3 15.66 4.34 17 6 17C7.66 17 9 15.66 9 14C9 12.34 7.66 11 6 11M15 10V12H20.25C19.92 11.27 19.5 10.6 19 10H15Z"; -var mdiRobotMowerOutline = "M1 14C1 16.76 3.24 19 6 19C7.64 19 9.09 18.21 10 17H15.17C15.58 18.17 16.7 19 18 19C19.31 19 20.42 18.17 20.83 17H23V15C23 9.5 18.5 5 13 5H1V14M21 15H10.9C10.97 14.68 11 14.34 11 14C11 11.24 8.76 9 6 9C4.87 9 3.84 9.37 3 10V7H12.5C15.1 7 17.42 8.16 19 10H15V12H20.25C20.67 12.92 20.92 13.94 21 15M6 11C7.66 11 9 12.34 9 14C9 15.66 7.66 17 6 17C4.34 17 3 15.66 3 14C3 12.34 4.34 11 6 11Z"; -var mdiRobotOff = "M23 15V18C23 18.5 22.64 18.88 22.17 18.97L18.97 15.77C19 15.68 19 15.59 19 15.5C19 14.12 17.88 13 16.5 13C16.41 13 16.32 13 16.23 13.03L10.2 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M22.11 21.46L20.84 22.73L19.89 21.78C19.62 21.92 19.32 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 11.53 4.29 9.36 6.22 8.11L1.11 3L2.39 1.73L22.11 21.46M10 15.5C10 14.12 8.88 13 7.5 13S5 14.12 5 15.5 6.12 18 7.5 18 10 16.88 10 15.5M16.07 17.96L14.04 15.93C14.23 16.97 15.04 17.77 16.07 17.96Z"; -var mdiRobotOffOutline = "M23 15V18C23 18.5 22.64 18.88 22.17 18.97L20.2 17H21V16H19.2L19 15.8V14C19 11.24 16.76 9 14 9H12.2L10.2 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M8.5 13.5C7.4 13.5 6.5 14.4 6.5 15.5S7.4 17.5 8.5 17.5 10.5 16.61 10.5 15.5 9.61 13.5 8.5 13.5M22.11 21.46L20.84 22.73L19.89 21.78C19.62 21.92 19.32 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 11.53 4.29 9.36 6.22 8.11L1.11 3L2.39 1.73L22.11 21.46M18.11 20L15.6 17.5C15.57 17.5 15.53 17.5 15.5 17.5C14.4 17.5 13.5 16.61 13.5 15.5C13.5 15.47 13.5 15.43 13.5 15.4L7.7 9.59C6.1 10.42 5 12.08 5 14V16H3V17H5V20H18.11Z"; -var mdiRobotOutline = "M17.5 15.5C17.5 16.61 16.61 17.5 15.5 17.5S13.5 16.61 13.5 15.5 14.4 13.5 15.5 13.5 17.5 14.4 17.5 15.5M8.5 13.5C7.4 13.5 6.5 14.4 6.5 15.5S7.4 17.5 8.5 17.5 10.5 16.61 10.5 15.5 9.61 13.5 8.5 13.5M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M21 16H19V14C19 11.24 16.76 9 14 9H10C7.24 9 5 11.24 5 14V16H3V17H5V20H19V17H21V16Z"; -var mdiRobotVacuum = "M12,2C14.65,2 17.19,3.06 19.07,4.93L17.65,6.35C16.15,4.85 14.12,4 12,4C9.88,4 7.84,4.84 6.35,6.35L4.93,4.93C6.81,3.06 9.35,2 12,2M3.66,6.5L5.11,7.94C4.39,9.17 4,10.57 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,10.57 19.61,9.17 18.88,7.94L20.34,6.5C21.42,8.12 22,10.04 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,10.04 2.58,8.12 3.66,6.5M12,6A6,6 0 0,1 18,12C18,13.59 17.37,15.12 16.24,16.24L14.83,14.83C14.08,15.58 13.06,16 12,16C10.94,16 9.92,15.58 9.17,14.83L7.76,16.24C6.63,15.12 6,13.59 6,12A6,6 0 0,1 12,6M12,8A1,1 0 0,0 11,9A1,1 0 0,0 12,10A1,1 0 0,0 13,9A1,1 0 0,0 12,8Z"; -var mdiRobotVacuumVariant = "M5,3A2,2 0 0,0 3,5V7H5V5H19V7H21V5A2,2 0 0,0 19,3H5M8,7V9H16V7H8M3,9V12A9,9 0 0,0 12,21A9,9 0 0,0 21,12V9H19V12A7,7 0 0,1 12,19A7,7 0 0,1 5,12V9H3M12,12A2.5,2.5 0 0,0 9.5,14.5A2.5,2.5 0 0,0 12,17A2.5,2.5 0 0,0 14.5,14.5A2.5,2.5 0 0,0 12,12Z"; -var mdiRocket = "M20 22L16.14 20.45C16.84 18.92 17.34 17.34 17.65 15.73L20 22M7.86 20.45L4 22L6.35 15.73C6.66 17.34 7.16 18.92 7.86 20.45M12 2C12 2 17 4 17 12C17 15.1 16.25 17.75 15.33 19.83C15 20.55 14.29 21 13.5 21H10.5C9.71 21 9 20.55 8.67 19.83C7.76 17.75 7 15.1 7 12C7 4 12 2 12 2M12 12C13.1 12 14 11.1 14 10C14 8.9 13.1 8 12 8C10.9 8 10 8.9 10 10C10 11.1 10.9 12 12 12Z"; -var mdiRocketLaunch = "M13.13 22.19L11.5 18.36C13.07 17.78 14.54 17 15.9 16.09L13.13 22.19M5.64 12.5L1.81 10.87L7.91 8.1C7 9.46 6.22 10.93 5.64 12.5M21.61 2.39C21.61 2.39 16.66 .269 11 5.93C8.81 8.12 7.5 10.53 6.65 12.64C6.37 13.39 6.56 14.21 7.11 14.77L9.24 16.89C9.79 17.45 10.61 17.63 11.36 17.35C13.5 16.53 15.88 15.19 18.07 13C23.73 7.34 21.61 2.39 21.61 2.39M14.54 9.46C13.76 8.68 13.76 7.41 14.54 6.63S16.59 5.85 17.37 6.63C18.14 7.41 18.15 8.68 17.37 9.46C16.59 10.24 15.32 10.24 14.54 9.46M8.88 16.53L7.47 15.12L8.88 16.53M6.24 22L9.88 18.36C9.54 18.27 9.21 18.12 8.91 17.91L4.83 22H6.24M2 22H3.41L8.18 17.24L6.76 15.83L2 20.59V22M2 19.17L6.09 15.09C5.88 14.79 5.73 14.47 5.64 14.12L2 17.76V19.17Z"; -var mdiRocketLaunchOutline = "M13.13 22.19L11.5 18.36C13.07 17.78 14.54 17 15.9 16.09L13.13 22.19M5.64 12.5L1.81 10.87L7.91 8.1C7 9.46 6.22 10.93 5.64 12.5M19.22 4C19.5 4 19.75 4 19.96 4.05C20.13 5.44 19.94 8.3 16.66 11.58C14.96 13.29 12.93 14.6 10.65 15.47L8.5 13.37C9.42 11.06 10.73 9.03 12.42 7.34C15.18 4.58 17.64 4 19.22 4M19.22 2C17.24 2 14.24 2.69 11 5.93C8.81 8.12 7.5 10.53 6.65 12.64C6.37 13.39 6.56 14.21 7.11 14.77L9.24 16.89C9.62 17.27 10.13 17.5 10.66 17.5C10.89 17.5 11.13 17.44 11.36 17.35C13.5 16.53 15.88 15.19 18.07 13C23.73 7.34 21.61 2.39 21.61 2.39S20.7 2 19.22 2M14.54 9.46C13.76 8.68 13.76 7.41 14.54 6.63S16.59 5.85 17.37 6.63C18.14 7.41 18.15 8.68 17.37 9.46C16.59 10.24 15.32 10.24 14.54 9.46M8.88 16.53L7.47 15.12L8.88 16.53M6.24 22L9.88 18.36C9.54 18.27 9.21 18.12 8.91 17.91L4.83 22H6.24M2 22H3.41L8.18 17.24L6.76 15.83L2 20.59V22M2 19.17L6.09 15.09C5.88 14.79 5.73 14.47 5.64 14.12L2 17.76V19.17Z"; -var mdiRocketOutline = "M12 2C12 2 7 4 7 12C7 15.1 7.76 17.75 8.67 19.83C9 20.55 9.71 21 10.5 21H13.5C14.29 21 15 20.55 15.33 19.83C16.25 17.75 17 15.1 17 12C17 4 12 2 12 2M13.5 19H10.5C9.5 16.76 9 14.41 9 12C9 7.36 10.9 5.2 12 4.33C13.1 5.2 15 7.36 15 12C15 14.41 14.5 16.76 13.5 19M20 22L16.14 20.45C16.84 18.92 17.34 17.34 17.65 15.73M7.86 20.45L4 22L6.35 15.73C6.66 17.34 7.16 18.92 7.86 20.45M12 12C10.9 12 10 11.1 10 10C10 8.9 10.9 8 12 8C13.1 8 14 8.9 14 10C14 11.1 13.1 12 12 12Z"; -var mdiRodent = "M21.33 17.39C22.73 18.66 21.8 21 19.92 21H11.06C8.25 21 6 18.75 6 15.94V15.89C3.7 15.42 2 13.41 2 11C2 8.25 4.22 6 7 6H9.5C9.8 6 10 5.77 10 5.5S9.8 5 9.5 5H7V3H9.5C10.88 3 12 4.13 12 5.5C12 6.89 10.88 8 9.5 8H7C5.34 8 4 9.33 4 11C4 12.37 4.92 13.5 6.14 13.87C6.7 11.67 8.67 10 11.06 10C11.86 10 12.66 10.22 13.36 10.55C11.95 11.34 11 12.8 11 14.5C11 15.75 11.5 16.87 12.33 17.67L13.03 16.97C12.38 16.36 12 15.47 12 14.5C12 11.91 14.34 11 15.5 11C17.58 11 19.45 12.89 18.94 15.23L21.33 17.39M18 19C18.56 19 19 18.56 19 18S18.56 17 18 17 17 17.44 17 18 17.44 19 18 19Z"; -var mdiRollerSkate = "M19,15C19,15 19,16 17,16C15,16 4,16 4,16V3H11L11.21,4.5H9.24V6H11.43L11.64,7.5H9.24V9H11.86L12,10H14C14,10 19,10 19,15M6.5,17A2.5,2.5 0 0,0 4,19.5A2.5,2.5 0 0,0 6.5,22A2.5,2.5 0 0,0 9,19.5A2.5,2.5 0 0,0 6.5,17M16.5,17A2.5,2.5 0 0,0 14,19.5A2.5,2.5 0 0,0 16.5,22A2.5,2.5 0 0,0 19,19.5A2.5,2.5 0 0,0 16.5,17Z"; -var mdiRollerSkateOff = "M20.84 22.73L18.73 20.62C18.32 21.43 17.5 22 16.5 22C15.12 22 14 20.88 14 19.5C14 18.5 14.57 17.68 15.38 17.27L14.11 16H4V5.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M19 15C19 10 14 10 14 10H13.2L18.72 15.5C19 15.27 19 15 19 15M11.64 7.5L11.43 6H9.24V4.5H11.21L11 3H6.2L10.7 7.5H11.64M6.5 17C5.12 17 4 18.12 4 19.5S5.12 22 6.5 22 9 20.88 9 19.5 7.88 17 6.5 17Z"; -var mdiRollerblade = "M19,15C19,15 19,16 17,16C15,16 4,16 4,16V3H11L11.21,4.5H9.24V6H11.43L11.64,7.5H9.24V9H11.86L12,10H14C14,10 19,10 19,15M5.5,17A2.5,2.5 0 0,0 3,19.5A2.5,2.5 0 0,0 5.5,22A2.5,2.5 0 0,0 8,19.5A2.5,2.5 0 0,0 5.5,17M17.5,17A2.5,2.5 0 0,0 15,19.5A2.5,2.5 0 0,0 17.5,22A2.5,2.5 0 0,0 20,19.5A2.5,2.5 0 0,0 17.5,17M11.5,17A2.5,2.5 0 0,0 9,19.5A2.5,2.5 0 0,0 11.5,22A2.5,2.5 0 0,0 14,19.5A2.5,2.5 0 0,0 11.5,17Z"; -var mdiRollerbladeOff = "M20.84 22.73L19.32 21.21C18.86 21.69 18.22 22 17.5 22C16.12 22 15 20.88 15 19.5C15 18.78 15.31 18.14 15.79 17.68L14.11 16H4V5.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M11.64 7.5L11.43 6H9.24V4.5H11.21L11 3H6.2L10.7 7.5H11.64M19 15C19 10 14 10 14 10H13.2L18.72 15.5C19 15.27 19 15 19 15M11.5 17C10.12 17 9 18.12 9 19.5S10.12 22 11.5 22 14 20.88 14 19.5 12.88 17 11.5 17M5.5 17C4.12 17 3 18.12 3 19.5S4.12 22 5.5 22 8 20.88 8 19.5 6.88 17 5.5 17Z"; -var mdiRollupjs = "M19.46,8.64C19.46,11.11 18.11,13.26 16.12,14.4C16,14.5 15.93,14.66 16,14.81L19.41,21.55C19.5,21.76 19.36,22 19.13,22H6.1L6.17,21.96C6.66,21.68 10.06,14.97 13.38,11.79C16.7,8.61 17.12,9.67 15.29,6.21C15.29,6.21 16.7,8.96 15.5,9.17C14.56,9.34 12.4,7.25 13.2,5.37C14,3.53 17.15,3.88 18.6,5.38C19.15,6.34 19.46,7.45 19.46,8.64M7.16,13.13C5.84,15.56 5,17.33 4.54,18.57V2.31C4.54,2.14 4.68,2 4.85,2H12.92C15.26,2.04 17.31,3.28 18.46,5.15C17.62,4.1 16.3,3.5 15,3.5C12.53,3.5 11.91,4.4 7.16,13.13Z"; -var mdiRomanNumeral1 = "M14 7V9H13V15H14V17H10V15H11V9H10V7H14Z"; -var mdiRomanNumeral10 = "M9 7L11 12L9 17H11L12 14.5L13 17H15L13 12L15 7H13L12 9.5L11 7H9Z"; -var mdiRomanNumeral2 = "M11 7V9H10V15H11V17H7V15H8V9H7V7H11M17 7V9H16V15H17V17H13V15H14V9H13V7H17Z"; -var mdiRomanNumeral3 = "M9 7V9H8V15H9V17H5V15H6V9H5V7H9M14 7V9H13V15H14V17H10V15H11V9H10V7H14M19 7V9H18V15H19V17H15V15H16V9H15V7H19Z"; -var mdiRomanNumeral4 = "M12 7L14 17H16L18 7H16L15 12L14 7H12M11 7V9H10V15H11V17H7V15H8V9H7V7H11Z"; -var mdiRomanNumeral5 = "M9 7L11 17H13L15 7H13L12 12L11 7H9Z"; -var mdiRomanNumeral6 = "M6 7L8 17H10L12 7H10L9 12L8 7H6M17 7V9H16V15H17V17H13V15H14V9H13V7H17Z"; -var mdiRomanNumeral7 = "M4 7L6 17H8L10 7H8L7 12L6 7H4M15 7V9H14V15H15V17H11V15H12V9H11V7H15M20 7V9H19V15H20V17H16V15H17V9H16V7H20Z"; -var mdiRomanNumeral8 = "M1 7L3 17H5L7 7H5L4 12L3 7H1M12 7V9H11V15H12V17H8V15H9V9H8V7H12M17 7V9H16V15H17V17H13V15H14V9H13V7H17M22 7V9H21V15H22V17H18V15H19V9H18V7H22Z"; -var mdiRomanNumeral9 = "M11 7V9H10V15H11V17H7V15H8V9H7V7H11M12 7L14 12L12 17H14L15 14.5L16 17H18L16 12L18 7H16L15 9.5L14 7H12Z"; -var mdiRoomService = "M12,5A2,2 0 0,1 14,7C14,7.24 13.96,7.47 13.88,7.69C17.95,8.5 21,11.91 21,16H3C3,11.91 6.05,8.5 10.12,7.69C10.04,7.47 10,7.24 10,7A2,2 0 0,1 12,5M22,19H2V17H22V19Z"; -var mdiRoomServiceOutline = "M12,5A2,2 0 0,1 14,7C14,7.24 13.96,7.47 13.88,7.69C17.95,8.5 21,11.91 21,16H3C3,11.91 6.05,8.5 10.12,7.69C10.04,7.47 10,7.24 10,7A2,2 0 0,1 12,5M22,19H2V17H22V19M12,9.5C8.89,9.5 6.25,11.39 5.34,14H18.66C17.75,11.39 15.11,9.5 12,9.5Z"; -var mdiRotate3d = "M7.47,21.5C4.2,19.94 1.86,16.76 1.5,13H0C0.5,19.16 5.66,24 11.95,24L12.61,23.97L8.8,20.16L7.47,21.5M8.36,14.96C8.17,14.96 8,14.93 7.84,14.88C7.68,14.82 7.55,14.75 7.44,14.64C7.33,14.54 7.24,14.42 7.18,14.27C7.12,14.13 7.09,13.97 7.09,13.8H5.79C5.79,14.16 5.86,14.5 6,14.75C6.14,15 6.33,15.25 6.56,15.44C6.8,15.62 7.07,15.76 7.38,15.85C7.68,15.95 8,16 8.34,16C8.71,16 9.06,15.95 9.37,15.85C9.69,15.75 9.97,15.6 10.2,15.41C10.43,15.22 10.62,15 10.75,14.69C10.88,14.4 10.95,14.08 10.95,13.72C10.95,13.53 10.93,13.34 10.88,13.16C10.83,13 10.76,12.81 10.65,12.65C10.55,12.5 10.41,12.35 10.25,12.22C10.08,12.09 9.88,12 9.64,11.91C9.84,11.82 10,11.71 10.16,11.58C10.31,11.45 10.43,11.31 10.53,11.16C10.63,11 10.7,10.86 10.75,10.7C10.8,10.54 10.82,10.38 10.82,10.22C10.82,9.86 10.76,9.54 10.64,9.26C10.5,9 10.35,8.75 10.13,8.57C9.93,8.38 9.66,8.24 9.36,8.14C9.05,8.05 8.71,8 8.34,8C8,8 7.65,8.05 7.34,8.16C7.04,8.27 6.77,8.42 6.55,8.61C6.34,8.8 6.17,9 6.04,9.28C5.92,9.54 5.86,9.82 5.86,10.13H7.16C7.16,9.96 7.19,9.81 7.25,9.68C7.31,9.55 7.39,9.43 7.5,9.34C7.61,9.25 7.73,9.17 7.88,9.12C8.03,9.07 8.18,9.04 8.36,9.04C8.76,9.04 9.06,9.14 9.25,9.35C9.44,9.55 9.54,9.84 9.54,10.21C9.54,10.39 9.5,10.55 9.46,10.7C9.41,10.85 9.32,10.97 9.21,11.07C9.1,11.17 8.96,11.25 8.8,11.31C8.64,11.37 8.44,11.4 8.22,11.4H7.45V12.43H8.22C8.44,12.43 8.64,12.45 8.82,12.5C9,12.55 9.15,12.63 9.27,12.73C9.39,12.84 9.5,12.97 9.56,13.13C9.63,13.29 9.66,13.5 9.66,13.7C9.66,14.11 9.54,14.42 9.31,14.63C9.08,14.86 8.76,14.96 8.36,14.96M16.91,9.04C16.59,8.71 16.21,8.45 15.77,8.27C15.34,8.09 14.85,8 14.31,8H11.95V16H14.25C14.8,16 15.31,15.91 15.76,15.73C16.21,15.55 16.6,15.3 16.92,14.97C17.24,14.64 17.5,14.24 17.66,13.78C17.83,13.31 17.92,12.79 17.92,12.21V11.81C17.92,11.23 17.83,10.71 17.66,10.24C17.5,9.77 17.23,9.37 16.91,9.04M16.5,12.2C16.5,12.62 16.47,13 16.38,13.33C16.28,13.66 16.14,13.95 15.95,14.18C15.76,14.41 15.5,14.59 15.24,14.71C14.95,14.83 14.62,14.89 14.25,14.89H13.34V9.12H14.31C15.03,9.12 15.58,9.35 15.95,9.81C16.33,10.27 16.5,10.93 16.5,11.8M11.95,0L11.29,0.03L15.1,3.84L16.43,2.5C19.7,4.06 22.04,7.23 22.39,11H23.89C23.39,4.84 18.24,0 11.95,0Z"; -var mdiRotate3dVariant = "M12,5C16.97,5 21,7.69 21,11C21,12.68 19.96,14.2 18.29,15.29C19.36,14.42 20,13.32 20,12.13C20,9.29 16.42,7 12,7V10L8,6L12,2V5M12,19C7.03,19 3,16.31 3,13C3,11.32 4.04,9.8 5.71,8.71C4.64,9.58 4,10.68 4,11.88C4,14.71 7.58,17 12,17V14L16,18L12,22V19Z"; -var mdiRotateLeft = "M13,4.07V1L8.45,5.55L13,10V6.09C15.84,6.57 18,9.03 18,12C18,14.97 15.84,17.43 13,17.91V19.93C16.95,19.44 20,16.08 20,12C20,7.92 16.95,4.56 13,4.07M7.1,18.32C8.26,19.22 9.61,19.76 11,19.93V17.9C10.13,17.75 9.29,17.41 8.54,16.87L7.1,18.32M6.09,13H4.07C4.24,14.39 4.79,15.73 5.69,16.89L7.1,15.47C6.58,14.72 6.23,13.88 6.09,13M7.11,8.53L5.7,7.11C4.8,8.27 4.24,9.61 4.07,11H6.09C6.23,10.13 6.58,9.28 7.11,8.53Z"; -var mdiRotateLeftVariant = "M4,2H7A2,2 0 0,1 9,4V20A2,2 0 0,1 7,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M20,15A2,2 0 0,1 22,17V20A2,2 0 0,1 20,22H11V15H20M14,4A8,8 0 0,1 22,12L21.94,13H19.92L20,12A6,6 0 0,0 14,6V9L10,5L14,1V4Z"; -var mdiRotateOrbit = "M8,14.25L4.75,11H7C7.25,5.39 9.39,1 12,1C14,1 15.77,3.64 16.55,7.45C20.36,8.23 23,10 23,12C23,13.83 20.83,15.43 17.6,16.3L17.89,14.27C19.8,13.72 21,12.91 21,12C21,10.94 19.35,10 16.87,9.5C16.95,10.29 17,11.13 17,12C17,18.08 14.76,23 12,23C10.17,23 8.57,20.83 7.7,17.6L9.73,17.89C10.28,19.8 11.09,21 12,21C13.66,21 15,16.97 15,12C15,11 14.95,10.05 14.85,9.15C13.95,9.05 13,9 12,9L10.14,9.06L10.43,7.05L12,7C12.87,7 13.71,7.05 14.5,7.13C14,4.65 13.06,3 12,3C10.46,3 9.18,6.5 9,11H11.25L8,14.25M14.25,16L11,19.25V17C5.39,16.75 1,14.61 1,12C1,10.17 3.17,8.57 6.4,7.7L6.11,9.73C4.2,10.28 3,11.09 3,12C3,13.54 6.5,14.82 11,15V12.75L14.25,16Z"; -var mdiRotateRight = "M16.89,15.5L18.31,16.89C19.21,15.73 19.76,14.39 19.93,13H17.91C17.77,13.87 17.43,14.72 16.89,15.5M13,17.9V19.92C14.39,19.75 15.74,19.21 16.9,18.31L15.46,16.87C14.71,17.41 13.87,17.76 13,17.9M19.93,11C19.76,9.61 19.21,8.27 18.31,7.11L16.89,8.53C17.43,9.28 17.77,10.13 17.91,11M15.55,5.55L11,1V4.07C7.06,4.56 4,7.92 4,12C4,16.08 7.05,19.44 11,19.93V17.91C8.16,17.43 6,14.97 6,12C6,9.03 8.16,6.57 11,6.09V10L15.55,5.55Z"; -var mdiRotateRightVariant = "M10,4V1L14,5L10,9V6A6,6 0 0,0 4,12L4.08,13H2.06L2,12A8,8 0 0,1 10,4M17,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H17A2,2 0 0,1 15,20V4A2,2 0 0,1 17,2M4,15H13V22H4A2,2 0 0,1 2,20V17A2,2 0 0,1 4,15Z"; -var mdiRoundedCorner = "M19,19H21V21H19V19M19,17H21V15H19V17M3,13H5V11H3V13M3,17H5V15H3V17M3,9H5V7H3V9M3,5H5V3H3V5M7,5H9V3H7V5M15,21H17V19H15V21M11,21H13V19H11V21M15,21H17V19H15V21M7,21H9V19H7V21M3,21H5V19H3V21M21,8A5,5 0 0,0 16,3H11V5H16A3,3 0 0,1 19,8V13H21V8Z"; -var mdiRouter = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2M12 20C7.58 20 4 16.42 4 12C4 7.58 7.58 4 12 4C16.42 4 20 7.58 20 12C20 16.42 16.42 20 12 20M13 13V16H15L12 19L9 16H11V13M5 13H8V15L11 12L8 9V11H5M11 11V8H9L12 5L15 8H13V11M19 11H16V9L13 12L16 15V13H19"; -var mdiRouterNetwork = "M5 9C3.9 9 3 9.9 3 11V15C3 16.11 3.9 17 5 17H11V19H10C9.45 19 9 19.45 9 20H2V22H9C9 22.55 9.45 23 10 23H14C14.55 23 15 22.55 15 22H22V20H15C15 19.45 14.55 19 14 19H13V17H19C20.11 17 21 16.11 21 15V11C21 9.9 20.11 9 19 9H5M6 12H8V14H6V12M9.5 12H11.5V14H9.5V12M13 12H15V14H13V12Z"; -var mdiRouterWireless = "M20.2,5.9L21,5.1C19.6,3.7 17.8,3 16,3C14.2,3 12.4,3.7 11,5.1L11.8,5.9C13,4.8 14.5,4.2 16,4.2C17.5,4.2 19,4.8 20.2,5.9M19.3,6.7C18.4,5.8 17.2,5.3 16,5.3C14.8,5.3 13.6,5.8 12.7,6.7L13.5,7.5C14.2,6.8 15.1,6.5 16,6.5C16.9,6.5 17.8,6.8 18.5,7.5L19.3,6.7M19,13H17V9H15V13H5A2,2 0 0,0 3,15V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V15A2,2 0 0,0 19,13M8,18H6V16H8V18M11.5,18H9.5V16H11.5V18M15,18H13V16H15V18Z"; -var mdiRouterWirelessOff = "M11.8 5.9L11 5.1C12.4 3.7 14.2 3 16 3S19.6 3.7 21 5.1L20.2 5.9C19 4.8 17.5 4.2 16 4.2S13 4.8 11.8 5.9M21 15C21 13.9 20.1 13 19 13H17V9H15V11.8L21 17.8V15M18.5 7.5L19.3 6.7C18.4 5.8 17.2 5.3 16 5.3S13.6 5.8 12.7 6.7L13.5 7.5C14.2 6.8 15.1 6.5 16 6.5C16.9 6.5 17.8 6.8 18.5 7.5M22.1 21.5L20.8 22.8L19.1 21H5C3.9 21 3 20.1 3 19V15C3 13.9 3.9 13 5 13H11.1L1.1 3L2.4 1.7L22.1 21.5M8 16H6V18H8V16M11.5 16H9.5V18H11.5V16M15 16.9L14.1 16H13V18H15V16.9Z"; -var mdiRouterWirelessSettings = "M20.2,4.9C19,3.8 17.5,3.2 16,3.2C14.5,3.2 13,3.8 11.8,4.9L11,4.1C12.4,2.7 14.2,2 16,2C17.8,2 19.6,2.7 21,4.1L20.2,4.9M19.3,5.7L18.5,6.5C17.8,5.8 16.9,5.5 16,5.5C15.1,5.5 14.2,5.8 13.5,6.5L12.7,5.7C13.6,4.8 14.8,4.3 16,4.3C17.2,4.3 18.4,4.8 19.3,5.7M19,12A2,2 0 0,1 21,14V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V14A2,2 0 0,1 5,12H15V8H17V12H19M8,17V15H6V17H8M11.5,17V15H9.5V17H11.5M15,17V15H13V17H15M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z"; -var mdiRoutes = "M11,10H5L3,8L5,6H11V3L12,2L13,3V4H19L21,6L19,8H13V10H19L21,12L19,14H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V10Z"; -var mdiRoutesClock = "M16.5 13H15V16.69L18.19 18.53L18.94 17.23L16.5 15.82V13M16 9C14.04 9 12.27 9.82 11 11.12V7H17L19 5L17 3H11V2L10 1L9 2V6H3L1 8L3 10H9V20C7.9 20 7 20.9 7 22H12.41C13.46 22.63 14.69 23 16 23C19.87 23 23 19.87 23 16S19.87 9 16 9M16 20.85C13.32 20.85 11.15 18.68 11.15 16S13.32 11.15 16 11.15 20.85 13.32 20.85 16 18.68 20.85 16 20.85Z"; -var mdiRowing = "M8.5,14.5L4,19L5.5,20.5L9,17H11L8.5,14.5M15,1A2,2 0 0,0 13,3A2,2 0 0,0 15,5A2,2 0 0,0 17,3A2,2 0 0,0 15,1M21,21L18,24L15,21V19.5L7.91,12.41C7.6,12.46 7.3,12.5 7,12.5V10.32C8.66,10.35 10.61,9.45 11.67,8.28L13.07,6.73C13.26,6.5 13.5,6.35 13.76,6.23C14.05,6.09 14.38,6 14.72,6H14.75C16,6 17,7 17,8.26V14C17,14.85 16.65,15.62 16.08,16.17L12.5,12.59V10.32C11.87,10.84 11.07,11.34 10.21,11.71L16.5,18H18L21,21Z"; -var mdiRss = "M6.18,15.64A2.18,2.18 0 0,1 8.36,17.82C8.36,19 7.38,20 6.18,20C5,20 4,19 4,17.82A2.18,2.18 0 0,1 6.18,15.64M4,4.44A15.56,15.56 0 0,1 19.56,20H16.73A12.73,12.73 0 0,0 4,7.27V4.44M4,10.1A9.9,9.9 0 0,1 13.9,20H11.07A7.07,7.07 0 0,0 4,12.93V10.1Z"; -var mdiRssBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,18A1.5,1.5 0 0,0 9,16.5A1.5,1.5 0 0,0 7.5,15M6,10V12A6,6 0 0,1 12,18H14A8,8 0 0,0 6,10M6,6V8A10,10 0 0,1 16,18H18A12,12 0 0,0 6,6Z"; -var mdiRssOff = "M2.5,3.77L3.78,2.5L21.5,20.22L20.23,21.5L18.73,20H16.73C16.73,19.25 16.67,18.5 16.54,17.81L6.19,7.46C5.5,7.33 4.75,7.27 4,7.27V5.27L2.5,3.77M6.18,15.64A2.18,2.18 0 0,1 8.36,17.82C8.36,19 7.38,20 6.18,20C5,20 4,19 4,17.82A2.18,2.18 0 0,1 6.18,15.64M4,10.1A9.9,9.9 0 0,1 13.9,20H11.07A7.07,7.07 0 0,0 4,12.93V10.1M9.13,5.31C13.59,6.87 17.13,10.41 18.69,14.87L9.13,5.31Z"; -var mdiRug = "M12 14C10.9 14 10 13.11 10 12S10.9 10 12 10 14 10.9 14 12 13.11 14 12 14M23 19H1V17H4V15H1V13H4V11H1V9H4V7H1V5H23V7H20V9H23V11H20V13H23V15H20V17H23V19M12 15.92C12.62 16.62 13.66 16.81 14.5 16.33C15.34 15.85 15.69 14.84 15.4 13.96C16.31 13.78 17 12.97 17 12S16.31 10.22 15.4 10.04C15.69 9.16 15.34 8.15 14.5 7.67C13.66 7.19 12.62 7.38 12 8.08C11.38 7.38 10.34 7.19 9.5 7.67C8.66 8.15 8.31 9.16 8.61 10.04C7.69 10.22 7 11.03 7 12S7.69 13.78 8.61 13.96C8.31 14.84 8.66 15.85 9.5 16.33C10.34 16.82 11.38 16.62 12 15.92Z"; -var mdiRugby = "M16.22,16.22C18.25,14.19 19.33,11.5 19.45,8.2C18.36,10.61 16.81,12.81 14.81,14.81C12.81,16.81 10.61,18.36 8.2,19.45C11.5,19.36 14.16,18.28 16.22,16.22M7.78,7.78C5.75,9.81 4.67,12.5 4.55,15.8C5,14.8 5.7,13.65 6.61,12.35C7.5,11.05 8.38,10 9.19,9.19C11.19,7.19 13.39,5.64 15.8,4.55C12.5,4.64 9.84,5.72 7.78,7.78M20.5,3.5C21,4.05 21.34,5.11 21.47,6.7C21.59,8.3 21.35,10.16 20.74,12.3C20.13,14.45 19.11,16.23 17.67,17.67C16.36,19 14.8,19.95 13,20.55C11.21,21.16 9.44,21.47 7.69,21.47C5.56,21.47 4.17,21.14 3.5,20.5C3,19.95 2.66,18.89 2.53,17.3C2.41,15.7 2.65,13.84 3.26,11.7C3.87,9.55 4.89,7.77 6.33,6.33C7.64,5 9.2,4.05 11,3.45C12.79,2.84 14.56,2.53 16.31,2.53C18.44,2.53 19.83,2.86 20.5,3.5Z"; -var mdiRuler = "M1.39,18.36L3.16,16.6L4.58,18L5.64,16.95L4.22,15.54L5.64,14.12L8.11,16.6L9.17,15.54L6.7,13.06L8.11,11.65L9.53,13.06L10.59,12L9.17,10.59L10.59,9.17L13.06,11.65L14.12,10.59L11.65,8.11L13.06,6.7L14.47,8.11L15.54,7.05L14.12,5.64L15.54,4.22L18,6.7L19.07,5.64L16.6,3.16L18.36,1.39L22.61,5.64L5.64,22.61L1.39,18.36Z"; -var mdiRulerSquare = "M3,5V21H9V19.5H7V18H9V16.5H5V15H9V13.5H7V12H9V10.5H5V9H9V5H10.5V9H12V7H13.5V9H15V5H16.5V9H18V7H19.5V9H21V3H5A2,2 0 0,0 3,5M6,7A1,1 0 0,1 5,6A1,1 0 0,1 6,5A1,1 0 0,1 7,6A1,1 0 0,1 6,7Z"; -var mdiRulerSquareCompass = "M20 19.88V22L18.2 20.83L13.41 11.83A4.94 4.94 0 0 0 15.19 10.83M15 7A3 3 0 0 1 12 10A3.27 3.27 0 0 1 11.56 10L5.8 20.83L4 22V19.88L9.79 9A3 3 0 0 1 12 4V2A1 1 0 0 1 13 3V4.18A3 3 0 0 1 15 7M13 7A1 1 0 1 0 12 8A1 1 0 0 0 13 7M4.22 10L6 11.8L4.56 14.56L2.1 12.1M12 17.76L10.5 16.25L9 19L12 22L15 19L13.53 16.23M19.78 10L18 11.8L19.5 14.56L21.9 12.1Z"; -var mdiRun = "M13.5,5.5C14.59,5.5 15.5,4.58 15.5,3.5C15.5,2.38 14.59,1.5 13.5,1.5C12.39,1.5 11.5,2.38 11.5,3.5C11.5,4.58 12.39,5.5 13.5,5.5M9.89,19.38L10.89,15L13,17V23H15V15.5L12.89,13.5L13.5,10.5C14.79,12 16.79,13 19,13V11C17.09,11 15.5,10 14.69,8.58L13.69,7C13.29,6.38 12.69,6 12,6C11.69,6 11.5,6.08 11.19,6.08L6,8.28V13H8V9.58L9.79,8.88L8.19,17L3.29,16L2.89,18L9.89,19.38Z"; -var mdiRunFast = "M16.5,5.5A2,2 0 0,0 18.5,3.5A2,2 0 0,0 16.5,1.5A2,2 0 0,0 14.5,3.5A2,2 0 0,0 16.5,5.5M12.9,19.4L13.9,15L16,17V23H18V15.5L15.9,13.5L16.5,10.5C17.89,12.09 19.89,13 22,13V11C20.24,11.03 18.6,10.11 17.7,8.6L16.7,7C16.34,6.4 15.7,6 15,6C14.7,6 14.5,6.1 14.2,6.1L9,8.3V13H11V9.6L12.8,8.9L11.2,17L6.3,16L5.9,18L12.9,19.4M4,9A1,1 0 0,1 3,8A1,1 0 0,1 4,7H7V9H4M5,5A1,1 0 0,1 4,4A1,1 0 0,1 5,3H10V5H5M3,13A1,1 0 0,1 2,12A1,1 0 0,1 3,11H7V13H3Z"; -var mdiRvTruck = "M20 8H22V6L20 4H3A2 2 0 0 0 1 6V15A2 2 0 0 0 3 17H4A3 3 0 0 0 7 20A3 3 0 0 0 10 17H15A3 3 0 0 0 21 17H23V12M7 18.5A1.5 1.5 0 0 1 7 15.5A1.5 1.5 0 0 1 7 18.5M9 12H3V9H9M14 15H11V9H14M18 18.5A1.5 1.5 0 1 1 19.5 17A1.54 1.54 0 0 1 18 18.5M17 12V9.5H19.5L21.5 12Z"; -var mdiSack = "M16,9C20,11 21,18 21,18C21,18 22,22 16,22C10,22 8,22 8,22C2,22 3,18 3,18C3,18 4,11 8,9M14,4L12,2L10,4L6,2L8,7H16L18,2L14,4Z"; -var mdiSackPercent = "M8,7L6,2L10,4L12,2L14,4L18,2L16,7H8M16,22C10,22 8,22 8,22C2,22 3,18 3,18C3,18 4,11 8,9H16C20,11 21,18 21,18C21,18 22,22 16,22M7.5,12.5A1.5,1.5 0 0,0 9,14A1.5,1.5 0 0,0 10.5,12.5A1.5,1.5 0 0,0 9,11A1.5,1.5 0 0,0 7.5,12.5M16.5,18.5A1.5,1.5 0 0,0 15,17A1.5,1.5 0 0,0 13.5,18.5A1.5,1.5 0 0,0 15,20A1.5,1.5 0 0,0 16.5,18.5M16.5,12.35L15.15,11L7.5,18.65L8.87,20L16.5,12.35Z"; -var mdiSafe = "M4,4A2,2 0 0,0 2,6V17A2,2 0 0,0 4,19V20H6V19H17V20H19V19A2,2 0 0,0 21,17V16H22V14H21V9H22V7H21V6A2,2 0 0,0 19,4H4M4,6H19V17H4V6M13.5,7.5A4,4 0 0,0 9.5,11.5A4,4 0 0,0 13.5,15.5A4,4 0 0,0 17.5,11.5A4,4 0 0,0 13.5,7.5M5,9V14H7V9H5M13.5,9.5A2,2 0 0,1 15.5,11.5A2,2 0 0,1 13.5,13.5A2,2 0 0,1 11.5,11.5A2,2 0 0,1 13.5,9.5Z"; -var mdiSafeSquare = "M20 2C21.1 2 22 2.9 22 4V20C22 21.1 21.1 22 20 22H19V23H15V22H9V23H5V22H4C2.9 22 2 21.1 2 20V4C2 2.9 2.9 2 4 2H20M17 12C17 11 16.7 10 16.2 9.2L17.7 7.7L16.3 6.3L14.8 7.8C14 7.3 13 7 12 7C11 7 10 7.3 9.2 7.8L7.8 6.3L6.3 7.8L7.8 9.3C7.3 10 7 11 7 12C7 13 7.3 14 7.8 14.8L6.3 16.3L7.8 17.7L9.3 16.2C10 16.7 11 17 12 17C13 17 14 16.7 14.8 16.2L16.3 17.7L17.7 16.3L16.2 14.8C16.7 14 17 13 17 12M12 9C13.7 9 15 10.3 15 12C15 13.7 13.7 15 12 15C10.3 15 9 13.7 9 12C9 10.3 10.3 9 12 9M12 14C13.1 14 14 13.1 14 12C14 10.9 13.1 10 12 10C10.9 10 10 10.9 10 12C10 13.1 10.9 14 12 14Z"; -var mdiSafeSquareOutline = "M10 12C10 10.9 10.9 10 12 10C13.1 10 14 10.9 14 12C14 13.1 13.1 14 12 14C10.9 14 10 13.1 10 12M7.8 17.7L6.3 16.3L7.8 14.8C7.3 14 7 13 7 12C7 11 7.3 10 7.8 9.3L6.3 7.8L7.8 6.3L9.2 7.8C10 7.3 11 7 12 7C13 7 14 7.3 14.8 7.8L16.3 6.3L17.7 7.7L16.2 9.2C16.7 10 17 11 17 12C17 13 16.7 14 16.2 14.8L17.7 16.3L16.3 17.7L14.8 16.2C14 16.7 13 17 12 17C11 17 10 16.7 9.3 16.2L7.8 17.7M12 9C10.3 9 9 10.3 9 12C9 13.7 10.3 15 12 15C13.7 15 15 13.7 15 12C15 10.3 13.7 9 12 9M20 2C21.1 2 22 2.9 22 4V20C22 21.1 21.1 22 20 22H19V23H15V22H9V23H5V22H4C2.9 22 2 21.1 2 20V4C2 2.9 2.9 2 4 2H20M20 20V4H4V20H20Z"; -var mdiSafetyGoggles = "M18,9C19.11,9 20,9.89 20,11V14C20,15.11 19.11,16 18,16H15.77L14.53,14.77C13.78,14 12.77,13.6 11.7,13.6C10.63,13.6 9.63,14 8.87,14.77L7.64,16H6C4.89,16 4,15.11 4,14V11C4,9.89 4.89,9 6,9H18M18,7H6A4,4 0 0,0 2,11H2L1,11V14H2V14A4,4 0 0,0 6,18H8.5C8.54,17.94 8.59,17.88 10.29,16.18C10.68,15.79 11.19,15.6 11.7,15.6C12.22,15.6 12.73,15.79 13.12,16.18L14.91,18H18A4,4 0 0,0 22,14H22L23,14V11H22V11A4,4 0 0,0 18,7Z"; -var mdiSailBoat = "M14,3L5,14H14M3,16L6,21H18L21,16"; -var mdiSale = "M18.65,2.85L19.26,6.71L22.77,8.5L21,12L22.78,15.5L19.24,17.29L18.63,21.15L14.74,20.54L11.97,23.3L9.19,20.5L5.33,21.14L4.71,17.25L1.22,15.47L3,11.97L1.23,8.5L4.74,6.69L5.35,2.86L9.22,3.5L12,0.69L14.77,3.46L18.65,2.85M9.5,7A1.5,1.5 0 0,0 8,8.5A1.5,1.5 0 0,0 9.5,10A1.5,1.5 0 0,0 11,8.5A1.5,1.5 0 0,0 9.5,7M14.5,14A1.5,1.5 0 0,0 13,15.5A1.5,1.5 0 0,0 14.5,17A1.5,1.5 0 0,0 16,15.5A1.5,1.5 0 0,0 14.5,14M8.41,17L17,8.41L15.59,7L7,15.59L8.41,17Z"; -var mdiSalesforce = "M18.38,6.37C17.68,6.37 17.07,6.58 16.47,6.78C15.77,5.57 14.46,4.77 13.05,4.77C11.95,4.77 10.95,5.27 10.24,5.97C9.44,4.97 8.23,4.26 6.83,4.26C4.5,4.26 2.5,6.17 2.5,8.5C2.5,9.09 2.71,9.69 2.91,10.29C1.8,10.9 1,12.1 1,13.5C1,15.5 2.61,17.22 4.62,17.22C4.92,17.22 5.22,17.22 5.42,17.12C5.82,18.63 7.33,19.74 9.14,19.74C10.84,19.74 12.25,18.73 12.75,17.32C13.26,17.53 13.76,17.73 14.26,17.73C15.57,17.73 16.77,17 17.37,15.92C17.68,16 18,16 18.28,16C20.89,16 23,13.91 23,11.2C23.1,8.5 21,6.37 18.38,6.37Z"; -var mdiSass = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M10,15.33C10.16,15.87 10.14,16.37 10,16.83C10,16.88 9.96,16.93 9.94,17C9.92,17 9.9,17.07 9.87,17.12C9.76,17.36 9.6,17.59 9.41,17.79C8.83,18.43 8,18.67 7.67,18.47C7.29,18.25 7.5,17.35 8.16,16.64C8.88,15.88 9.92,15.38 9.92,15.38V15.38L10,15.33M18.27,6.28C17.82,4.5 14.87,3.92 12.09,4.91C10.43,5.5 8.63,6.42 7.34,7.63C5.81,9.07 5.56,10.32 5.66,10.84C6,12.68 8.54,13.89 9.58,14.78V14.79C9.28,14.94 7.04,16.07 6.5,17.23C5.96,18.45 6.6,19.33 7,19.45C8.34,19.81 9.69,19.16 10.41,18.07C11.11,17.03 11.06,15.68 10.75,15C11.17,14.9 11.66,14.85 12.28,14.92C14.04,15.13 14.38,16.22 14.31,16.68C14.25,17.14 13.88,17.39 13.76,17.47C13.64,17.54 13.6,17.57 13.61,17.63C13.62,17.71 13.68,17.71 13.78,17.69C13.93,17.66 14.71,17.32 14.74,16.47C14.78,15.39 13.75,14.19 11.93,14.22C11.18,14.24 10.71,14.31 10.37,14.44L10.29,14.35C9.16,13.15 7.08,12.3 7.17,10.68C7.2,10.09 7.4,8.55 11.17,6.67C14.25,5.13 16.72,5.55 17.15,6.5C17.76,7.83 15.83,10.32 12.63,10.68C11.41,10.82 10.76,10.34 10.6,10.17C10.43,10 10.41,9.97 10.35,10C10.24,10.07 10.31,10.23 10.35,10.33C10.44,10.58 10.84,11 11.5,11.24C12.09,11.43 13.53,11.54 15.26,10.87C17.2,10.12 18.72,8.03 18.27,6.28Z"; -var mdiSatellite = "M5,18L8.5,13.5L11,16.5L14.5,12L19,18M5,12V10A5,5 0 0,0 10,5H12A7,7 0 0,1 5,12M5,5H8A3,3 0 0,1 5,8M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiSatelliteUplink = "M11.86,2L11.34,3.93C15.75,4.78 19.2,8.23 20.05,12.65L22,12.13C20.95,7.03 16.96,3.04 11.86,2M10.82,5.86L10.3,7.81C13.34,8.27 15.72,10.65 16.18,13.68L18.12,13.16C17.46,9.44 14.55,6.5 10.82,5.86M3.72,9.69C3.25,10.73 3,11.86 3,13C3,14.95 3.71,16.82 5,18.28V22H8V20.41C8.95,20.8 9.97,21 11,21C12.14,21 13.27,20.75 14.3,20.28L3.72,9.69M9.79,9.76L9.26,11.72A3,3 0 0,1 12.26,14.72L14.23,14.2C14,11.86 12.13,10 9.79,9.76Z"; -var mdiSatelliteVariant = "M11.62,1L17.28,6.67L15.16,8.79L13.04,6.67L11.62,8.09L13.95,10.41L12.79,11.58L13.24,12.04C14.17,11.61 15.31,11.77 16.07,12.54L12.54,16.07C11.77,15.31 11.61,14.17 12.04,13.24L11.58,12.79L10.41,13.95L8.09,11.62L6.67,13.04L8.79,15.16L6.67,17.28L1,11.62L3.14,9.5L5.26,11.62L6.67,10.21L3.84,7.38C3.06,6.6 3.06,5.33 3.84,4.55L4.55,3.84C5.33,3.06 6.6,3.06 7.38,3.84L10.21,6.67L11.62,5.26L9.5,3.14L11.62,1M18,14A4,4 0 0,1 14,18V16A2,2 0 0,0 16,14H18M22,14A8,8 0 0,1 14,22V20A6,6 0 0,0 20,14H22Z"; -var mdiSausage = "M3.5,3H9.5L7.96,5.32C9.16,5.87 10,7.09 10,8.5A5.5,5.5 0 0,0 15.5,14C16.91,14 18.13,14.84 18.68,16.04L21,14.5V20.5L18.68,18.96C18.13,20.16 16.91,21 15.5,21A12.5,12.5 0 0,1 3,8.5C3,7.09 3.84,5.87 5.04,5.32L3.5,3Z"; -var mdiSawBlade = "M20,15C20,15 18.6,16.3 21.1,17L18.3,19.8H15.5C15.5,19.8 13.6,19.7 15,22H11L9,20C9,20 7.7,18.6 7,21.1L4.2,18.3V15.5C4.2,15.5 4.3,13.6 2,15V11L4,9C4,9 5.4,7.7 2.8,7.1L5.6,4.2H8.5C8.5,4.2 10.4,4.3 9,2H13L15,4C15,4 16.3,5.4 17,2.8L19.8,5.6V8.5C19.8,8.5 19.7,10.4 22,9V13L20,15M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"; -var mdiSawtoothWave = "M11 22V6.83L2 16V13.17L13 2V17.17L22 8V10.83L11 22Z"; -var mdiSaxophone = "M4,2A1,1 0 0,0 3,3A1,1 0 0,0 4,4A3,3 0 0,1 7,7V8.66L7,15.5C7,19.1 9.9,22 13.5,22C17.1,22 20,19.1 20,15.5V13A1,1 0 0,0 21,12A1,1 0 0,0 20,11H14A1,1 0 0,0 13,12A1,1 0 0,0 14,13V15A1,1 0 0,1 13,16A1,1 0 0,1 12,15V11A1,1 0 0,0 13,10A1,1 0 0,0 12,9V8A1,1 0 0,0 13,7A1,1 0 0,0 12,6V5.5A3.5,3.5 0 0,0 8.5,2H4Z"; -var mdiScale = "M8.46,15.06L7.05,16.47L5.68,15.1C4.82,16.21 4.24,17.54 4.06,19H6V21H2V20C2,15.16 5.44,11.13 10,10.2V8.2L2,5V3H22V5L14,8.2V10.2C18.56,11.13 22,15.16 22,20V21H18V19H19.94C19.76,17.54 19.18,16.21 18.32,15.1L16.95,16.47L15.54,15.06L16.91,13.68C15.8,12.82 14.46,12.24 13,12.06V14H11V12.06C9.54,12.24 8.2,12.82 7.09,13.68L8.46,15.06M12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22C11.68,22 11.38,21.93 11.12,21.79L7.27,20L11.12,18.21C11.38,18.07 11.68,18 12,18Z"; -var mdiScaleBalance = "M12,3C10.73,3 9.6,3.8 9.18,5H3V7H4.95L2,14C1.53,16 3,17 5.5,17C8,17 9.56,16 9,14L6.05,7H9.17C9.5,7.85 10.15,8.5 11,8.83V20H2V22H22V20H13V8.82C13.85,8.5 14.5,7.85 14.82,7H17.95L15,14C14.53,16 16,17 18.5,17C21,17 22.56,16 22,14L19.05,7H21V5H14.83C14.4,3.8 13.27,3 12,3M12,5A1,1 0 0,1 13,6A1,1 0 0,1 12,7A1,1 0 0,1 11,6A1,1 0 0,1 12,5M5.5,10.25L7,14H4L5.5,10.25M18.5,10.25L20,14H17L18.5,10.25Z"; -var mdiScaleBathroom = "M5,2H19A2,2 0 0,1 21,4V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2M12,4A4,4 0 0,0 8,8H11.26L10.85,5.23L12.9,8H16A4,4 0 0,0 12,4M5,10V20H19V10H5Z"; -var mdiScaleOff = "M22.11 21.46L20.84 22.73L19.11 21H18V19.89L12.11 14H11V12.89L10.31 12.2A7.92 7.92 0 0 0 7.09 13.68L8.46 15.06L7.05 16.47L5.68 15.1A7.94 7.94 0 0 0 4.06 19H6V21H2V20A10 10 0 0 1 8.68 10.57L3.85 5.74L2 5V3.89L1.11 3L2.39 1.73M21.91 18.71A10 10 0 0 0 14 10.2V8.2L22 5V3H6.2M12 18A1.84 1.84 0 0 0 11.12 18.21L7.27 20L11.12 21.79A1.84 1.84 0 0 0 12 22A2 2 0 0 0 12 18Z"; -var mdiScanHelper = "M0 2A2 2 0 0 1 2 0H6V2H2V6H0V2M24 22A2 2 0 0 1 22 24H18V22H22V18H24V22M2 24A2 2 0 0 1 0 22V18H2V22H6V24H2M22 0A2 2 0 0 1 24 2V6H22V2H18V0H22Z"; -var mdiScanner = "M4.2,10.7L19.8,5L20.5,6.9L6.4,12H19A2,2 0 0,1 21,14V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V12.5C3,11.7 3.5,10.9 4.2,10.7M17,17H19V15H17V17M5,17H15V15H5V17Z"; -var mdiScannerOff = "M2,5.27L3.28,4L20,20.72L18.73,22L16.73,20H5A2,2 0 0,1 3,18V12.5C3,11.7 3.5,10.9 4.2,10.7L6.57,9.84L2,5.27M6.4,12H8.73L8.11,11.38L6.4,12M5,15V17H13.73L11.73,15H5M19.8,5L20.5,6.9L11.85,10.03L10.3,8.47L19.8,5M19,12A2,2 0 0,1 21,14V18C21,18.34 20.91,18.66 20.76,18.94L19,17.18V15H16.82L13.82,12H19Z"; -var mdiScatterPlot = "M7,11A3,3 0 0,1 10,14A3,3 0 0,1 7,17A3,3 0 0,1 4,14A3,3 0 0,1 7,11M11,3A3,3 0 0,1 14,6A3,3 0 0,1 11,9A3,3 0 0,1 8,6A3,3 0 0,1 11,3M16.6,14.6C18.25,14.6 19.6,15.94 19.6,17.6A3,3 0 0,1 16.6,20.6C14.94,20.6 13.6,19.25 13.6,17.6A3,3 0 0,1 16.6,14.6Z"; -var mdiScatterPlotOutline = "M7,18A4,4 0 0,1 3,14A4,4 0 0,1 7,10A4,4 0 0,1 11,14A4,4 0 0,1 7,18M7,12A2,2 0 0,0 5,14A2,2 0 0,0 7,16A2,2 0 0,0 9,14A2,2 0 0,0 7,12M11,10A4,4 0 0,1 7,6A4,4 0 0,1 11,2A4,4 0 0,1 15,6A4,4 0 0,1 11,10M11,4A2,2 0 0,0 9,6A2,2 0 0,0 11,8A2,2 0 0,0 13,6A2,2 0 0,0 11,4M16.6,21.6C14.39,21.6 12.6,19.81 12.6,17.6A4,4 0 0,1 16.6,13.6C18.81,13.6 20.6,15.39 20.6,17.6A4,4 0 0,1 16.6,21.6M16.6,15.6A2,2 0 0,0 14.6,17.6C14.6,18.7 15.5,19.6 16.6,19.6A2,2 0 0,0 18.6,17.6C18.6,16.5 17.7,15.6 16.6,15.6Z"; -var mdiSchool = "M12,3L1,9L12,15L21,10.09V17H23V9M5,13.18V17.18L12,21L19,17.18V13.18L12,17L5,13.18Z"; -var mdiSchoolOutline = "M12 3L1 9L5 11.18V17.18L12 21L19 17.18V11.18L21 10.09V17H23V9L12 3M18.82 9L12 12.72L5.18 9L12 5.28L18.82 9M17 16L12 18.72L7 16V12.27L12 15L17 12.27V16Z"; -var mdiScissorsCutting = "M11,21H7V19H11V21M15.5,19H17V21H13V19H13.2L11.8,12.9L9.3,13.5C9.2,14 9,14.4 8.8,14.8C7.9,16.3 6,16.7 4.5,15.8C3,14.9 2.6,13 3.5,11.5C4.4,10 6.3,9.6 7.8,10.5C8.2,10.7 8.5,11.1 8.7,11.4L11.2,10.8L10.6,8.3C10.2,8.2 9.8,8 9.4,7.8C8,6.9 7.5,5 8.4,3.5C9.3,2 11.2,1.6 12.7,2.5C14.2,3.4 14.6,5.3 13.7,6.8C13.5,7.2 13.1,7.5 12.8,7.7L15.5,19M7,11.8C6.3,11.3 5.3,11.6 4.8,12.3C4.3,13 4.6,14 5.3,14.4C6,14.9 7,14.7 7.5,13.9C7.9,13.2 7.7,12.2 7,11.8M12.4,6C12.9,5.3 12.6,4.3 11.9,3.8C11.2,3.3 10.2,3.6 9.7,4.3C9.3,5 9.5,6 10.3,6.5C11,6.9 12,6.7 12.4,6M12.8,11.3C12.6,11.2 12.4,11.2 12.3,11.4C12.2,11.6 12.2,11.8 12.4,11.9C12.6,12 12.8,12 12.9,11.8C13.1,11.6 13,11.4 12.8,11.3M21,8.5L14.5,10L15,12.2L22.5,10.4L23,9.7L21,8.5M23,19H19V21H23V19M5,19H1V21H5V19Z"; -var mdiScooter = "M7.82 19H15V18C15 15.79 16.79 14 19 14H19.74L17.84 5.56C17.63 4.65 16.82 4 15.89 4H12V6H15.89L17.29 12.25H17.28C15.12 12.9 13.47 14.73 13.09 17H7.82C7.34 15.66 5.96 14.76 4.4 15.06C3.22 15.29 2.27 16.26 2.05 17.44C1.7 19.34 3.16 21 5 21C6.3 21 7.4 20.16 7.82 19M5 19C4.45 19 4 18.55 4 18S4.45 17 5 17 6 17.45 6 18 5.55 19 5 19M19 15C17.34 15 16 16.34 16 18S17.34 21 19 21 22 19.66 22 18 20.66 15 19 15M19 19C18.45 19 18 18.55 18 18S18.45 17 19 17 20 17.45 20 18 19.55 19 19 19Z"; -var mdiScooterElectric = "M7.82 16H15V15C15 12.79 16.79 11 19 11H19.74L17.84 2.56C17.63 1.65 16.82 1 15.89 1H12V3H15.89L17.29 9.25H17.28C15.12 9.9 13.47 11.73 13.09 14H7.82C7.34 12.66 5.96 11.76 4.4 12.06C3.22 12.29 2.27 13.26 2.05 14.44C1.7 16.34 3.16 18 5 18C6.3 18 7.4 17.16 7.82 16M5 16C4.45 16 4 15.55 4 15S4.45 14 5 14 6 14.45 6 15 5.55 16 5 16M19 12C17.34 12 16 13.34 16 15S17.34 18 19 18 22 16.66 22 15 20.66 12 19 12M19 16C18.45 16 18 15.55 18 15S18.45 14 19 14 20 14.45 20 15 19.55 16 19 16M11 20H7L13 23V21H17L11 18V20Z"; -var mdiScoreboard = "M6 9H8V15H6V9M16 9H18V15H16V9M21 3C22.1 3 23 3.9 23 5V19C23 20.1 22.1 21 21 21H3C1.9 21 1 20.1 1 19V5C1 3.9 1.9 3 3 3H21M5 7C4.4 7 4 7.4 4 8V16C4 16.6 4.4 17 5 17H9C9.6 17 10 16.6 10 16V8C10 7.4 9.6 7 9 7H5M15 7C14.4 7 14 7.4 14 8V16C14 16.6 14.4 17 15 17H19C19.6 17 20 16.6 20 16V8C20 7.4 19.6 7 19 7H15M12 11C12.6 11 13 10.6 13 10C13 9.4 12.6 9 12 9C11.4 9 11 9.4 11 10C11 10.6 11.4 11 12 11M12 15C12.6 15 13 14.6 13 14C13 13.4 12.6 13 12 13C11.4 13 11 13.4 11 14C11 14.6 11.4 15 12 15Z"; -var mdiScoreboardOutline = "M21 3H3C1.9 3 1 3.9 1 5V19C1 20.1 1.9 21 3 21H21C22.1 21 23 20.1 23 19V5C23 3.9 22.1 3 21 3M21 19H3V5H21M5 7H9C9.6 7 10 7.4 10 8V16C10 16.6 9.6 17 9 17H5C4.4 17 4 16.6 4 16V8C4 7.4 4.4 7 5 7M6 9V15H8V9M15 7H19C19.6 7 20 7.4 20 8V16C20 16.6 19.6 17 19 17H15C14.4 17 14 16.6 14 16V8C14 7.4 14.4 7 15 7M16 9V15H18V9M12 11C12.6 11 13 10.6 13 10C13 9.4 12.6 9 12 9C11.4 9 11 9.4 11 10C11 10.6 11.4 11 12 11M12 15C12.6 15 13 14.6 13 14C13 13.4 12.6 13 12 13C11.4 13 11 13.4 11 14C11 14.6 11.4 15 12 15Z"; -var mdiScreenRotation = "M7.5,21.5C4.25,19.94 1.91,16.76 1.55,13H0.05C0.56,19.16 5.71,24 12,24L12.66,23.97L8.85,20.16M14.83,21.19L2.81,9.17L9.17,2.81L21.19,14.83M10.23,1.75C9.64,1.16 8.69,1.16 8.11,1.75L1.75,8.11C1.16,8.7 1.16,9.65 1.75,10.23L13.77,22.25C14.36,22.84 15.31,22.84 15.89,22.25L22.25,15.89C22.84,15.3 22.84,14.35 22.25,13.77L10.23,1.75M16.5,2.5C19.75,4.07 22.09,7.24 22.45,11H23.95C23.44,4.84 18.29,0 12,0L11.34,0.03L15.15,3.84L16.5,2.5Z"; -var mdiScreenRotationLock = "M16.8,2.5C16.8,1.56 17.56,0.8 18.5,0.8C19.44,0.8 20.2,1.56 20.2,2.5V3H16.8V2.5M16,9H21A1,1 0 0,0 22,8V4A1,1 0 0,0 21,3V2.5A2.5,2.5 0 0,0 18.5,0A2.5,2.5 0 0,0 16,2.5V3A1,1 0 0,0 15,4V8A1,1 0 0,0 16,9M8.47,20.5C5.2,18.94 2.86,15.76 2.5,12H1C1.5,18.16 6.66,23 12.95,23L13.61,22.97L9.8,19.15L8.47,20.5M23.25,12.77L20.68,10.2L19.27,11.61L21.5,13.83L15.83,19.5L4.5,8.17L10.17,2.5L12.27,4.61L13.68,3.2L11.23,0.75C10.64,0.16 9.69,0.16 9.11,0.75L2.75,7.11C2.16,7.7 2.16,8.65 2.75,9.23L14.77,21.25C15.36,21.84 16.31,21.84 16.89,21.25L23.25,14.89C23.84,14.3 23.84,13.35 23.25,12.77Z"; -var mdiScrewFlatTop = "M13.5,17V19L12,22L10.5,19L13.5,17M14.5,6.3L13.5,7V6H10.5V9L9.5,9.7V10.7L14.5,7.4V6.3M14.5,10.3L13.5,11V9L10.5,11V13L9.5,13.7V14.7L14.5,11.4V10.3M14.5,14.3L13.5,15V13L10.5,15V17L9.5,17.7V18.7L14.5,15.4V14.3M8,2C8,2 7,2 7,3L10,5H14L17,3C17,3 17,2 16,2C15,2 8,2 8,2Z"; -var mdiScrewLag = "M10,19.3L14,16.6V20L12,22L10,20V19.3M14,12.7L10,15.4V17.4L9,18V19L15,15.1V14L14,14.7V12.7M7,2V5H17V2H7M9,6V9L10,9.7V13.4L9,14V15L15,11.1V10L14,10.7C14,10.7 14,10.3 14,9.7L15,9V6H9Z"; -var mdiScrewMachineFlatTop = "M14.5,7.3L13.5,8V7H10.5V10L9.5,10.7V11.7L14.5,8.4V7.3M14.5,11.3L13.5,12V10L10.5,12V14L9.5,14.7V15.7L14.5,12.4V11.3M14.5,15.3L13.5,16V14L10.5,16V18L9.5,18.7V19.7L14.5,16.4V15.3M8,3C8,3 7,3 7,4L10,6H14L17,4C17,4 17,3 16,3C15,3 8,3 8,3M13.5,18V21H10.5V20L13.5,18Z"; -var mdiScrewMachineRoundTop = "M14.5,7.3L13.5,8V7H10.5V10L9.5,10.7V11.7L14.5,8.4V7.3M14.5,11.3L13.5,12V10L10.5,12V14L9.5,14.7V15.7L14.5,12.4V11.3M14.5,15.3L13.5,16V14L10.5,16V18L9.5,18.7V19.7L14.5,16.4V15.3M7,6H17C17,6 16,3 12,3C8,3 7,6 7,6M13.5,18V21H10.5V20L13.5,18Z"; -var mdiScrewRoundTop = "M13.5,17V19L12,22L10.5,19L13.5,17M14.5,6.3L13.5,7V6H10.5V9L9.5,9.7V10.7L14.5,7.4V6.3M14.5,10.3L13.5,11V9L10.5,11V13L9.5,13.7V14.7L14.5,11.4V10.3M14.5,14.3L13.5,15V13L10.5,15V17L9.5,17.7V18.7L14.5,15.4V14.3M7,5H17C17,5 16,2 12,2C8,2 7,5 7,5Z"; -var mdiScrewdriver = "M18,1.83C17.5,1.83 17,2 16.59,2.41C13.72,5.28 8,11 8,11L9.5,12.5L6,16H4L2,20L4,22L8,20V18L11.5,14.5L13,16C13,16 18.72,10.28 21.59,7.41C22.21,6.5 22.37,5.37 21.59,4.59L19.41,2.41C19,2 18.5,1.83 18,1.83M18,4L20,6L13,13L11,11L18,4Z"; -var mdiScript = "M17.8,20C17.4,21.2 16.3,22 15,22H5C3.3,22 2,20.7 2,19V18H5L14.2,18C14.6,19.2 15.7,20 17,20H17.8M19,2H8C6.3,2 5,3.3 5,5V16H16V17C16,17.6 16.4,18 17,18H18V5C18,4.4 18.4,4 19,4C19.6,4 20,4.4 20,5V6H22V5C22,3.3 20.7,2 19,2Z"; -var mdiScriptOutline = "M15,20A1,1 0 0,0 16,19V4H8A1,1 0 0,0 7,5V16H5V5A3,3 0 0,1 8,2H19A3,3 0 0,1 22,5V6H20V5A1,1 0 0,0 19,4A1,1 0 0,0 18,5V9L18,19A3,3 0 0,1 15,22H5A3,3 0 0,1 2,19V18H13A2,2 0 0,0 15,20Z"; -var mdiScriptText = "M17.8,20C17.4,21.2 16.3,22 15,22H5C3.3,22 2,20.7 2,19V18H5L14.2,18C14.6,19.2 15.7,20 17,20H17.8M19,2C20.7,2 22,3.3 22,5V6H20V5C20,4.4 19.6,4 19,4C18.4,4 18,4.4 18,5V18H17C16.4,18 16,17.6 16,17V16H5V5C5,3.3 6.3,2 8,2H19M8,6V8H15V6H8M8,10V12H14V10H8Z"; -var mdiScriptTextKey = "M19 2H8C6.3 2 5 3.3 5 5V16H13C13.8 15.4 14.9 15 16 15C16.7 15 17.4 15.2 18 15.4V5C18 4.4 18.4 4 19 4S20 4.4 20 5V6H22V5C22 3.3 20.7 2 19 2M14 12H8V10H14V12M15 8H8V6H15V8M11.4 22H5C3.3 22 2 20.7 2 19V18H11.4C11.1 18.6 11 19.3 11 20S11.1 21.4 11.4 22M18.8 19C18.4 17.8 17.3 17 16 17C14.3 17 13 18.3 13 20S14.3 23 16 23C17.3 23 18.4 22.2 18.8 21H20V23H22V21H23V19H18.8M16 21.3C15.3 21.3 14.7 20.7 14.7 20S15.3 18.7 16 18.7C16.7 18.7 17.3 19.3 17.3 20S16.7 21.3 16 21.3Z"; -var mdiScriptTextKeyOutline = "M11.4 22H5C3.3 22 2 20.7 2 19V18H11.4C11.1 18.6 11 19.3 11 20S11.2 21.4 11.4 22M19 2H8C6.3 2 5 3.3 5 5V16H7V5C7 4.4 7.4 4 8 4H16V15C16.7 15 17.4 15.2 18 15.4V5C18 4.4 18.4 4 19 4S20 4.4 20 5V6H22V5C22 3.3 20.7 2 19 2M9 8H14V6H9V8M9 16H13C13.3 15.8 13.6 15.6 14 15.4V14H9V16M9 12H14V10H9V12M23 19V21H22V23H20V21H18.8C18.4 22.2 17.3 23 16 23C14.3 23 13 21.7 13 20S14.3 17 16 17C17.3 17 18.4 17.8 18.8 19H23M17.3 20C17.3 19.3 16.7 18.7 16 18.7S14.7 19.3 14.7 20 15.3 21.3 16 21.3 17.3 20.7 17.3 20Z"; -var mdiScriptTextOutline = "M15,20A1,1 0 0,0 16,19V4H8A1,1 0 0,0 7,5V16H5V5A3,3 0 0,1 8,2H19A3,3 0 0,1 22,5V6H20V5A1,1 0 0,0 19,4A1,1 0 0,0 18,5V9L18,19A3,3 0 0,1 15,22H5A3,3 0 0,1 2,19V18H13A2,2 0 0,0 15,20M9,6H14V8H9V6M9,10H14V12H9V10M9,14H14V16H9V14Z"; -var mdiScriptTextPlay = "M13.8 22H5C3.3 22 2 20.7 2 19V18H13.1C13 18.3 13 18.7 13 19C13 20.1 13.3 21.1 13.8 22M13.8 16H5V5C5 3.3 6.3 2 8 2H19C20.7 2 22 3.3 22 5V6H20V5C20 4.4 19.6 4 19 4S18 4.4 18 5V13.1C16.2 13.4 14.7 14.5 13.8 16M8 8H15V6H8V8M8 12H14V10H8V12M17 16V22L22 19L17 16Z"; -var mdiScriptTextPlayOutline = "M9 14H14V15.7C13.9 15.8 13.9 15.9 13.8 16H9V14M9 12H14V10H9V12M9 8H14V6H9V8M7 5C7 4.4 7.4 4 8 4H16V13.8C16.6 13.4 17.3 13.2 18 13.1V5C18 4.4 18.4 4 19 4S20 4.4 20 5V6H22V5C22 3.3 20.7 2 19 2H8C6.3 2 5 3.3 5 5V16H7V5M13 19V18.4 18H2V19C2 20.7 3.3 22 5 22H13.8C13.3 21.1 13 20.1 13 19M17 16V22L22 19L17 16Z"; -var mdiSd = "M18,8H16V4H18M15,8H13V4H15M12,8H10V4H12M18,2H10L4,8V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z"; -var mdiSeal = "M20.39,19.37L16.38,18L15,22L11.92,16L9,22L7.62,18L3.61,19.37L6.53,13.37C5.57,12.17 5,10.65 5,9A7,7 0 0,1 12,2A7,7 0 0,1 19,9C19,10.65 18.43,12.17 17.47,13.37L20.39,19.37M7,9L9.69,10.34L9.5,13.34L12,11.68L14.5,13.33L14.33,10.34L17,9L14.32,7.65L14.5,4.67L12,6.31L9.5,4.65L9.67,7.66L7,9Z"; -var mdiSealVariant = "M17.71 6.15C17.46 5.38 16.79 5.21 16.45 4.77C16.14 4.31 16.18 3.62 15.53 3.15S14.23 2.92 13.7 2.77 12.81 2 12 2 10.82 2.58 10.3 2.77 9.13 2.67 8.47 3.15 7.86 4.31 7.55 4.77C7.21 5.21 6.55 5.38 6.29 6.15S6.5 7.45 6.5 8 6 9.08 6.29 9.85 7.21 10.79 7.55 11.23C7.86 11.69 7.82 12.38 8.47 12.85S9.77 13.08 10.3 13.23 11.19 14 12 14 13.18 13.42 13.7 13.23 14.87 13.33 15.53 12.85 16.14 11.69 16.45 11.23C16.79 10.79 17.45 10.62 17.71 9.85S17.5 8.55 17.5 8 18 6.92 17.71 6.15M12 12A4 4 0 1 1 16 8A4 4 0 0 1 12 12M14 8A2 2 0 1 1 12 6A2 2 0 0 1 14 8M13.71 15.56L13.08 19.16L12.35 23.29L9.74 20.8L6.44 22.25L7.77 14.75A4 4 0 0 0 9.66 15.17A4.15 4.15 0 0 0 11 15.85A3.32 3.32 0 0 0 12 16A3.5 3.5 0 0 0 13.71 15.56M17.92 18.78L15.34 17.86L15.85 14.92A3.2 3.2 0 0 0 16.7 14.47L16.82 14.37Z"; -var mdiSearchWeb = "M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,4.5L8.95,4.53C8.71,5.05 8.34,5.93 8.07,7H10.93C10.66,5.93 10.29,5.05 10.05,4.53C9.87,4.5 9.69,4.5 9.5,4.5M13.83,7C13.24,5.97 12.29,5.17 11.15,4.78C11.39,5.31 11.7,6.08 11.93,7H13.83M5.17,7H7.07C7.3,6.08 7.61,5.31 7.85,4.78C6.71,5.17 5.76,5.97 5.17,7M4.5,9.5C4.5,10 4.58,10.53 4.73,11H6.87L6.75,9.5L6.87,8H4.73C4.58,8.47 4.5,9 4.5,9.5M14.27,11C14.42,10.53 14.5,10 14.5,9.5C14.5,9 14.42,8.47 14.27,8H12.13C12.21,8.5 12.25,9 12.25,9.5C12.25,10 12.21,10.5 12.13,11H14.27M7.87,8L7.75,9.5L7.87,11H11.13C11.21,10.5 11.25,10 11.25,9.5C11.25,9 11.21,8.5 11.13,8H7.87M9.5,14.5C9.68,14.5 9.86,14.5 10.03,14.47C10.28,13.95 10.66,13.07 10.93,12H8.07C8.34,13.07 8.72,13.95 8.97,14.47L9.5,14.5M13.83,12H11.93C11.7,12.92 11.39,13.69 11.15,14.22C12.29,13.83 13.24,13.03 13.83,12M5.17,12C5.76,13.03 6.71,13.83 7.85,14.22C7.61,13.69 7.3,12.92 7.07,12H5.17Z"; -var mdiSeat = "M4,18V21H7V18H17V21H20V15H4V18M19,10H22V13H19V10M2,10H5V13H2V10M17,13H7V5A2,2 0 0,1 9,3H15A2,2 0 0,1 17,5V13Z"; -var mdiSeatFlat = "M22,11V13H9V7H18A4,4 0 0,1 22,11M2,14V16H8V18H16V16H22V14M7.14,12.1C8.3,10.91 8.28,9 7.1,7.86C5.91,6.7 4,6.72 2.86,7.9C1.7,9.09 1.72,11 2.9,12.14C4.09,13.3 6,13.28 7.14,12.1Z"; -var mdiSeatFlatAngled = "M22.25,14.29L21.56,16.18L9.2,11.71L11.28,6.05L19.84,9.14C21.94,9.9 23,12.2 22.25,14.29M1.5,12.14L8,14.5V19H16V17.37L20.5,19L21.21,17.11L2.19,10.25M7.3,10.2C8.79,9.5 9.42,7.69 8.71,6.2C8,4.71 6.2,4.08 4.7,4.8C3.21,5.5 2.58,7.3 3.3,8.8C4,10.29 5.8,10.92 7.3,10.2Z"; -var mdiSeatIndividualSuite = "M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13M19,7H11V14H3V7H1V17H23V11A4,4 0 0,0 19,7Z"; -var mdiSeatLegroomExtra = "M4,12V3H2V12A5,5 0 0,0 7,17H13V15H7A3,3 0 0,1 4,12M22.83,17.24C22.45,16.5 21.54,16.27 20.8,16.61L19.71,17.11L16.3,10.13C15.96,9.45 15.27,9 14.5,9H11V3H5V11A3,3 0 0,0 8,14H15L18.41,21L22.13,19.3C22.9,18.94 23.23,18 22.83,17.24Z"; -var mdiSeatLegroomNormal = "M5,12V3H3V12A5,5 0 0,0 8,17H14V15H8A3,3 0 0,1 5,12M20.5,18H19V11A2,2 0 0,0 17,9H12V3H6V11A3,3 0 0,0 9,14H16V21H20.5A1.5,1.5 0 0,0 22,19.5A1.5,1.5 0 0,0 20.5,18Z"; -var mdiSeatLegroomReduced = "M19.97,19.2C20.15,20.16 19.42,21 18.5,21H14V18L15,14H9A3,3 0 0,1 6,11V3H12V9H17A2,2 0 0,1 19,11L17,18H18.44C19.17,18 19.83,18.5 19.97,19.2M5,12V3H3V12A5,5 0 0,0 8,17H12V15H8A3,3 0 0,1 5,12Z"; -var mdiSeatOutline = "M15,5V12H9V5H15M15,3H9A2,2 0 0,0 7,5V14H17V5A2,2 0 0,0 15,3M22,10H19V13H22V10M5,10H2V13H5V10M20,15H4V21H6V17H18V21H20V15Z"; -var mdiSeatPassenger = "M9 19H15V21H9C6.24 21 4 18.76 4 16V7H6V16C6 17.66 7.34 19 9 19M10.42 5.41C11.2 4.63 11.2 3.36 10.42 2.58C9.64 1.8 8.37 1.8 7.59 2.58C6.81 3.36 6.81 4.63 7.59 5.41C8.37 6.2 9.63 6.2 10.42 5.41M11.5 9C11.5 7.9 10.6 7 9.5 7H9C7.9 7 7 7.9 7 9V15C7 16.66 8.34 18 10 18H15.07L18.57 21.5L20 20.07L14.93 15H11.5L11.5 9Z"; -var mdiSeatReclineExtra = "M5.35,5.64C4.45,5 4.23,3.76 4.86,2.85C5.5,1.95 6.74,1.73 7.65,2.36C8.55,3 8.77,4.24 8.14,5.15C7.5,6.05 6.26,6.27 5.35,5.64M16,19H8.93C7.45,19 6.19,17.92 5.97,16.46L4,7H2L4,16.76C4.37,19.2 6.47,21 8.94,21H16M16.23,15H11.35L10.32,10.9C11.9,11.79 13.6,12.44 15.47,12.12V10C13.84,10.3 12.03,9.72 10.78,8.74L9.14,7.47C8.91,7.29 8.65,7.17 8.38,7.09C8.06,7 7.72,6.97 7.39,7.03H7.37C6.14,7.25 5.32,8.42 5.53,9.64L6.88,15.56C7.16,17 8.39,18 9.83,18H16.68L20.5,21L22,19.5"; -var mdiSeatReclineNormal = "M7.59,5.41C6.81,4.63 6.81,3.36 7.59,2.58C8.37,1.8 9.64,1.8 10.42,2.58C11.2,3.36 11.2,4.63 10.42,5.41C9.63,6.2 8.37,6.2 7.59,5.41M6,16V7H4V16A5,5 0 0,0 9,21H15V19H9A3,3 0 0,1 6,16M20,20.07L14.93,15H11.5V11.32C12.9,12.47 15.1,13.5 17,13.5V11.32C15.34,11.34 13.39,10.45 12.33,9.28L10.93,7.73C10.74,7.5 10.5,7.35 10.24,7.23C9.95,7.09 9.62,7 9.28,7H9.25C8,7 7,8 7,9.25V15A3,3 0 0,0 10,18H15.07L18.57,21.5"; -var mdiSeatbelt = "M12,2C13.11,2 14,2.9 14,4C14,5.11 13.11,6 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M12.39,14.79C14.03,14.79 15.46,14.89 16.64,15.04C16.7,12.32 16.46,9.92 16,9C15.87,8.73 15.69,8.5 15.5,8.3L7.43,15.22C8.79,15 10.5,14.79 12.39,14.79M7.46,17C7.59,18.74 7.85,20.5 8.27,22H10.34C10.05,21.12 9.84,20.09 9.68,19C9.68,19 12,18.56 14.32,19C14.16,20.09 13.95,21.12 13.66,22H15.73C16.17,20.45 16.43,18.61 16.56,16.79C15.41,16.65 14,16.54 12.39,16.54C10.46,16.54 8.78,16.75 7.46,17M12,7C12,7 9,7 8,9C7.66,9.68 7.44,11.15 7.37,12.96L13.92,7.34C12.93,7 12,7 12,7M18.57,5.67L17.43,4.34L13.92,7.35C14.47,7.54 15.05,7.84 15.5,8.3L18.57,5.67M20.67,15.83C20.58,15.8 19.14,15.33 16.64,15.04C16.63,15.61 16.6,16.2 16.56,16.79C18.81,17.07 20.1,17.5 20.12,17.5L20.67,15.83M7.37,12.96L3.43,16.34L4.32,17.82C4.34,17.81 5.5,17.36 7.46,17C7.35,15.59 7.32,14.2 7.37,12.96Z"; -var mdiSecurity = "M12,12H19C18.47,16.11 15.72,19.78 12,20.92V12H5V6.3L12,3.19M12,1L3,5V11C3,16.55 6.84,21.73 12,23C17.16,21.73 21,16.55 21,11V5L12,1Z"; -var mdiSecurityNetwork = "M13,19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17.34C8.07,16.13 6,13 6,9.67V5.67L12,3L18,5.67V9.67C18,13 15.93,16.13 13,17.34V19M12,5L8,6.69V10H12V5M12,10V16C13.91,15.53 16,13.06 16,11V10H12Z"; -var mdiSeed = "M20.7,3.3C20.7,3.3 19.3,3 17.2,3C11.7,3 1.6,5.1 3.2,20.8C4.3,20.9 5.4,21 6.4,21C24.3,21 20.7,3.3 20.7,3.3M7,17C7,17 7,7 17,7C17,7 11,9 7,17Z"; -var mdiSeedOff = "M22.1 21.5L2.4 1.7L1.1 3L5.9 7.8C3.8 10.5 2.6 14.6 3.2 20.8C4.3 20.9 5.4 21 6.4 21C10.9 21 14.1 19.9 16.3 18.2L20.9 22.8L22.1 21.5M7 17C7 17 7 13.7 8.9 10.8L10.2 12.1C9.1 13.4 8 15 7 17M11.6 8.4L8.5 5.3C11.3 3.4 14.7 3 17.2 3C19.3 3 20.7 3.3 20.7 3.3S22.1 10.3 18.7 15.5L12.8 9.6C15.1 7.6 17 7 17 7C14.7 7 12.9 7.5 11.6 8.4Z"; -var mdiSeedOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L5.9 7.8C3.8 10.5 2.6 14.6 3.2 20.8C4.3 20.9 5.4 21 6.4 21C10.9 21 14.1 19.9 16.3 18.2L20.9 22.8L22.1 21.5M6.4 19H5.1C4.9 14.8 5.6 11.5 7.3 9.2L8.9 10.8C7 13.7 7 17 7 17C8 15 9.1 13.4 10.2 12.1L14.8 16.7C12.8 18.2 10 19 6.4 19M10 6.8L8.5 5.3C11.3 3.4 14.7 3 17.2 3C19.3 3 20.7 3.3 20.7 3.3S22.1 10.3 18.7 15.5L17.2 14C19.1 10.9 19 7.1 18.9 5.1C18.4 5 17.8 5 17.2 5C15.1 5 12.3 5.3 10 6.8M12.8 9.6L11.6 8.4C12.9 7.5 14.7 7 17 7C17 7 15.1 7.6 12.8 9.6Z"; -var mdiSeedOutline = "M17.2,5V5C17.8,5 18.4,5 18.9,5.1C19.1,7.4 19.1,12 16.4,15.2C14.4,17.7 11,19 6.4,19C6,19 5.5,19 5.1,19C4.9,14.4 5.8,10.8 7.9,8.5C10.4,5.6 14.4,5 17.2,5M17.2,3C11.7,3 1.6,5.1 3.2,20.8C4.3,20.9 5.4,21 6.4,21C24.3,21 20.7,3.3 20.7,3.3C20.7,3.3 19.3,3 17.2,3M17,7C7,7 7,17 7,17C11,9 17,7 17,7Z"; -var mdiSeesaw = "M21.68 13.26L22.04 15.23L2.35 18.77L2 16.8L4.95 16.27L4.6 14.3C4.5 13.76 4.86 13.24 5.41 13.14C5.95 13.04 6.47 13.4 6.57 13.95L6.92 15.91L16.76 14.15L16.41 12.18C16.31 11.63 16.67 11.11 17.22 11C17.76 10.92 18.28 11.28 18.38 11.82L18.73 13.79L21.68 13.26M10.06 18.4L8 22H16L13.58 17.77L10.06 18.4Z"; -var mdiSegment = "M21,8H3V6H21M9,13H21V11H9M9,18H21V16H9"; -var mdiSelect = "M4,3H5V5H3V4A1,1 0 0,1 4,3M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M21,20A1,1 0 0,1 20,21H19V19H21V20M15,21V19H17V21H15M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M3,7H5V9H3V7M21,7V9H19V7H21Z"; -var mdiSelectAll = "M9,9H15V15H9M7,17H17V7H7M15,5H17V3H15M15,21H17V19H15M19,17H21V15H19M19,9H21V7H19M19,21A2,2 0 0,0 21,19H19M19,13H21V11H19M11,21H13V19H11M9,3H7V5H9M3,17H5V15H3M5,21V19H3A2,2 0 0,0 5,21M19,3V5H21A2,2 0 0,0 19,3M13,3H11V5H13M3,9H5V7H3M7,21H9V19H7M3,13H5V11H3M3,5H5V3A2,2 0 0,0 3,5Z"; -var mdiSelectColor = "M3.88,3C3.38,3.06 3,3.5 3,4V4L3,5H4L5,5V4L5,3H4L3.88,3M7,3V5H9V3H7M11,3V5H13V3H11M15,3V5H17V3H15M19,3V4L19,5H20L21,5V4L21,3.88C20.94,3.38 20.5,3 20,3H19M3,7V9H5V7H3M19,7V9H21V7H19M3,11V13H5V11H3M19.31,12C19.18,12 19.05,12.05 18.95,12.14L17.39,13.71L16.43,12.75L15.72,13.46L16.43,14.17L11.97,18.63V21H14.35L18.8,16.54L19.5,17.25L20.22,16.54L19.26,15.58L20.82,14.03C21,13.83 21,13.5 20.82,13.31L19.65,12.14C19.56,12.05 19.44,12 19.31,12M3,15V17H5V15H3M17,15L17.97,15.97L13.93,20L12.97,19.04L17,15M3,19V20L3,20.12C3.06,20.62 3.5,21 4,21V21H5V20L5,19H4L3,19M7,19V21H9V19H7Z"; -var mdiSelectCompare = "M13,23H11V1H13V23M9,19H5V5H9V3H5C3.89,3 3,3.89 3,5V19C3,20.11 3.9,21 5,21H9V19M19,7V9H21V7H19M19,5H21C21,3.89 20.1,3 19,3V5M21,15H19V17H21V15M19,11V13H21V11H19M17,3H15V5H17V3M19,21C20.11,21 21,20.11 21,19H19V21M17,19H15V21H17V19Z"; -var mdiSelectDrag = "M13,17H17V13H19V17H23V19H19V23H17V19H13V17M11,17V19H9V17H11M7,17V19H5V17H7M19,9V11H17V9H19M19,5V7H17V5H19M15,5V7H13V5H15M11,5V7H9V5H11M7,5V7H5V5H7M7,13V15H5V13H7M7,9V11H5V9H7Z"; -var mdiSelectGroup = "M5 3A2 2 0 0 0 3 5H5M7 3V5H9V3M11 3V5H13V3M15 3V5H17V3M19 3V5H21A2 2 0 0 0 19 3M3 7V9H5V7M7 7V11H11V7M13 7V11H17V7M19 7V9H21V7M3 11V13H5V11M19 11V13H21V11M7 13V17H11V13M13 13V17H17V13M3 15V17H5V15M19 15V17H21V15M3 19A2 2 0 0 0 5 21V19M7 19V21H9V19M11 19V21H13V19M15 19V21H17V19M19 19V21A2 2 0 0 0 21 19Z"; -var mdiSelectInverse = "M5,3H7V5H9V3H11V5H13V3H15V5H17V3H19V5H21V7H19V9H21V11H19V13H21V15H19V17H21V19H19V21H17V19H15V21H13V19H11V21H9V19H7V21H5V19H3V17H5V15H3V13H5V11H3V9H5V7H3V5H5V3Z"; -var mdiSelectMarker = "M4 3H5V5H3V4C3 3.45 3.45 3 4 3M20 3C20.55 3 21 3.45 21 4V5H19V3H20M15 5V3H17V5H15M11 5V3H13V5H11M7 5V3H9V5H7M11 21V19H13V21H11M7 21V19H9V21H7M4 21C3.45 21 3 20.55 3 20V19H5V21H4M3 15H5V17H3V15M3 11H5V13H3V11M3 7H5V9H3V7M21 7V9H19V7H21M19.5 13C21.4 13 23 14.6 23 16.5C23 19.1 19.5 23 19.5 23C19.5 23 16 19.1 16 16.5C16 14.6 17.6 13 19.5 13M19.5 17.8C20.2 17.8 20.8 17.2 20.7 16.6C20.7 16 20.1 15.4 19.5 15.4C18.9 15.4 18.3 15.9 18.3 16.6C18.3 17.2 18.8 17.8 19.5 17.8Z"; -var mdiSelectMultiple = "M18 12H20V14H18V12M14 16H16V18H14V16M20 17C20 17.55 19.55 18 19 18H18V16H20V17M7 4H8V6H6V5C6 4.45 6.45 4 7 4M19 4C19.55 4 20 4.45 20 5V6H18V4H19M14 6V4H16V6H14M10 6V4H12V6H10M10 18V16H12V18H10M7 18C6.45 18 6 17.55 6 17V16H8V18H7M6 12H8V14H6V12M6 8H8V10H6V8M20 8V10H18V8H20M3 8H4V20H16V21C16 21.54 15.57 22 15.03 22H15L3 22C2.45 22 2 21.55 2 21V9C2 8.45 2.45 8 3 8Z"; -var mdiSelectMultipleMarker = "M7 4H8V6H6V5C6 4.45 6.45 4 7 4M19 4C19.55 4 20 4.45 20 5V6H18V4H19M14 6V4H16V6H14M10 6V4H12V6H10M10 18V16H12V18H10M7 18C6.45 18 6 17.55 6 17V16H8V18H7M6 12H8V14H6V12M6 8H8V10H6V8M20 8V10H18V8H20M3 8H4V20H14.58L16.03 22L3 22C2.45 22 2 21.55 2 21V9C2 8.45 2.45 8 3 8M18.5 12C20.4 12 22 13.6 22 15.5C22 18.1 18.5 22 18.5 22C18.5 22 15 18.1 15 15.5C15 13.6 16.6 12 18.5 12M18.5 16.8C19.2 16.8 19.8 16.2 19.7 15.6C19.7 15 19.1 14.4 18.5 14.4C17.9 14.4 17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8Z"; -var mdiSelectOff = "M1,4.27L2.28,3L21,21.72L19.73,23L17,20.27V21H15V19H15.73L5,8.27V9H3V7H3.73L1,4.27M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M21,7V9H19V7H21Z"; -var mdiSelectPlace = "M4 3H5V5H3V4C3 3.5 3.5 3 4 3M20 3C20.5 3 21 3.5 21 4V5H19V3H20M15 5V3H17V5H15M11 5V3H13V5H11M7 5V3H9V5H7M21 12C21 12.5 20.5 13 20 13H19V11H21V12M15 13V11H17V13H15M11 13V11H13V13H11M7 13V11H9V13H7M4 13C3.5 13 3 12.5 3 12V11H5V13H4M3 7H5V9H3V7M21 7V9H19V7H21M7 16L12 21L17 16H7Z"; -var mdiSelectSearch = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M21 9H19V7H21V9M21 5H19V3H20C20.55 3 21 3.45 21 4V5M19 11.03V11H21V13H20.97C20.46 12.21 19.79 11.54 19 11.03M17 5H15V3H17V5M13 5H11V3H13V5M3 7H5V9H3V7M7 19H9V21H7V19M3 11H5V13H3V11M4 3H5V5H3V4C3 3.45 3.45 3 4 3M9 5H7V3H9V5M3 19H5V21H4C3.45 21 3 20.55 3 20V19M3 15H5V17H3V15Z"; -var mdiSelection = "M2,4C2,2.89 2.9,2 4,2H7V4H4V7H2V4M22,4V7H20V4H17V2H20A2,2 0 0,1 22,4M20,20V17H22V20C22,21.11 21.1,22 20,22H17V20H20M2,20V17H4V20H7V22H4A2,2 0 0,1 2,20M10,2H14V4H10V2M10,20H14V22H10V20M20,10H22V14H20V10M2,10H4V14H2V10Z"; -var mdiSelectionDrag = "M14,17H17V14H19V17H22V19H19V22H17V19H14V17M12,17V19H9V17H12M7,17V19H3V15H5V17H7M3,13V10H5V13H3M3,8V4H7V6H5V8H3M9,4H12V6H9V4M15,4H19V8H17V6H15V4M19,10V12H17V10H19Z"; -var mdiSelectionEllipse = "M6.35,20.25L7.56,18.66C8.42,19.23 9.39,19.64 10.43,19.85L10.16,21.83C8.77,21.57 7.5,21 6.35,20.25M16.43,18.66L17.64,20.26C16.5,21.03 15.23,21.57 13.84,21.83L13.57,19.85C14.61,19.64 15.57,19.23 16.43,18.66M19.84,13.59L21.83,13.86C21.57,15.25 21,16.54 20.24,17.66L18.65,16.45C19.22,15.6 19.63,14.63 19.84,13.59M2.17,13.84L4.15,13.57C4.36,14.61 4.77,15.58 5.34,16.44L3.75,17.65C3,16.5 2.43,15.23 2.17,13.84M18.66,7.56L20.25,6.35C21.03,7.5 21.58,8.78 21.83,10.18L19.85,10.45C19.64,9.4 19.23,8.42 18.66,7.56M13.57,4.15L13.84,2.17C15.23,2.43 16.5,3 17.65,3.75L16.44,5.34C15.58,4.77 14.61,4.36 13.57,4.15M7.56,5.34L6.35,3.75C7.5,3 8.77,2.43 10.16,2.17L10.43,4.15C9.39,4.36 8.42,4.77 7.56,5.34M4.15,10.43L2.17,10.16C2.43,8.77 3,7.5 3.75,6.35L5.34,7.56C4.77,8.42 4.36,9.39 4.15,10.43Z"; -var mdiSelectionEllipseArrowInside = "M11.2 4C9.94 4.12 8.72 4.53 7.64 5.2L6.64 3.47C7.95 2.64 9.45 2.13 11 2M17.53 6.25C16.62 5.39 15.53 4.73 14.34 4.33L15 2.39C16.5 2.84 17.89 3.66 19 4.78M5.34 7.41C4.64 8.44 4.19 9.6 4 10.83L2 10.55C2.2 9 2.79 7.5 3.7 6.23M22 12V12.66L20 12.5V12C20 10.92 19.81 9.86 19.39 8.86L21.22 8.06C21.75 9.31 22 10.65 22 12M6 17.3L4.5 18.61C3.47 17.43 2.72 16.04 2.3 14.53L4.17 14C4.53 15.22 5.16 16.35 6 17.3M12.14 22H12C10.5 22 9 21.68 7.64 21.07L8.53 19.24C9.62 19.75 10.8 20 12 20H12.19M17 21H15V15H21V17H18.42L21.14 19.76L19.73 21.17L17 18.5"; -var mdiSelectionMarker = "M2 4C2 2.89 2.9 2 4 2H7V4H4V7H2V4M22 4V7H20V4H17V2H20C21.1 2 22 2.89 22 4M2 20V17H4V20H7V22H4C2.9 22 2 21.11 2 20M10 2H14V4H10V2M10 20H14V22H10V20M2 10H4V14H2V10M18.5 13C20.4 13 22 14.6 22 16.5C22 19.1 18.5 23 18.5 23C18.5 23 15 19.1 15 16.5C15 14.6 16.6 13 18.5 13M18.5 17.8C19.2 17.8 19.8 17.2 19.7 16.6C19.7 16 19.1 15.4 18.5 15.4C17.9 15.4 17.3 15.9 17.3 16.6C17.3 17.2 17.8 17.8 18.5 17.8M20 10H22V12.34C21.42 11.84 20.74 11.45 20 11.23V10Z"; -var mdiSelectionMultiple = "M11 6V4H15V6H11M6 9H8V13H6V9M6 6C6 4.89 6.9 4 8 4H9V6H8V7H6V6M8 18C6.89 18 6 17.1 6 16V15H8V16H9V18H8M18 4C19.11 4 20 4.9 20 6V7H18V6H17V4H18M15 16V18H11V16H15M20 13H18V9H20V13M20 16C20 17.11 19.1 18 18 18H17V16H18V15H20V16M3 8H4V20H16V21C16 21.54 15.57 22 15.03 22H15L3 22C2.45 22 2 21.55 2 21V9C2 8.45 2.45 8 3 8Z"; -var mdiSelectionMultipleMarker = "M7 4H9V6H8V7H6V5C6 4.45 6.45 4 7 4M19 4C19.55 4 20 4.45 20 5V7H18V6H17V4H19M11 6V4H15V6H11M7 18C6.45 18 6 17.55 6 17V15H8V16H9V18H7M6 9H8V13H6V9M3 8H4V20H14.58L16.03 22L3 22C2.45 22 2 21.55 2 21V9C2 8.45 2.45 8 3 8M18.5 12C20.4 12 22 13.6 22 15.5C22 18.1 18.5 22 18.5 22C18.5 22 15 18.1 15 15.5C15 13.6 16.6 12 18.5 12M18.5 16.8C19.2 16.8 19.8 16.2 19.7 15.6C19.7 15 19.1 14.4 18.5 14.4C17.9 14.4 17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8M11 18V16H13C13.09 16.66 13.27 17.33 13.5 18H11M20 9V10.23C19.5 10.08 19 10 18.5 10L18 10.03V9H20Z"; -var mdiSelectionOff = "M0.5,3.77L1.78,2.5L21.5,22.22L20.23,23.5L18.73,22H17V20.27L3.73,7H2V5.27L0.5,3.77M4,2H7V4H5.82L3.83,2H4M22,4V7H20V4H17V2H20A2,2 0 0,1 22,4M20,17H22V20L22,20.17L20,18.18V17M2,20V17H4V20H7V22H4A2,2 0 0,1 2,20M10,2H14V4H10V2M10,20H14V22H10V20M20,10H22V14H20V10M2,10H4V14H2V10Z"; -var mdiSelectionSearch = "M19.27 18.9C19.7 18.21 19.95 17.38 19.95 16.5C19.95 14 17.95 12 15.46 12S10.96 14 10.96 16.5 12.96 21 15.46 21C16.33 21 17.15 20.75 17.84 20.32L20.96 23.39L22.35 22L19.27 18.9M15.46 19C14.07 19 12.96 17.88 12.96 16.5S14.07 14 15.46 14 17.95 15.12 17.95 16.5 16.84 19 15.46 19M22 14H21.45C21.12 13.19 20.62 12.47 20 11.86V10H22V14M20 4H17V2H20C21.11 2 22 2.9 22 4V7H20V4M14 4H10V2H14V4M4 2H7V4H4V7H2V4C2 2.89 2.9 2 4 2M12 22H10V20C10.5 20.82 11.2 21.5 12 22M4 20H7V22H4C2.9 22 2 21.11 2 20V17H4V20M4 14H2V10H4V14Z"; -var mdiSemanticWeb = "M12.9 4.22C18.73 6.84 20 2 20 2S18.89 8.07 13.79 10.55C12.75 11.06 12.1 11.33 12.1 11.33L3.73 7.25L12.1 3.82C12.1 3.82 11.9 3.76 12.9 4.22M11.12 22L3.33 17.78V9.07L11.12 13.04V22M12.88 22L20.68 17.78V9.07L12.88 13.04V22Z"; -var mdiSend = "M2,21L23,12L2,3V10L17,12L2,14V21Z"; -var mdiSendCheck = "M2 3V10L17 12L2 14V21L23 12M22 15.5L18.5 19L16.5 17L15 18.5L18.5 22L23.5 17Z"; -var mdiSendCheckOutline = "M2 3V10L17 12L2 14V21L23 12M4 6.03L11.53 9.25L4 8.25M11.53 14.75L4 17.97V15.75M22 15.5L18.5 19L16.5 17L15 18.5L18.5 22L23.5 17Z"; -var mdiSendCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M8,7.71V11.05L15.14,12L8,12.95V16.29L18,12L8,7.71Z"; -var mdiSendCircleOutline = "M8,7.71L18,12L8,16.29V12.95L15.14,12L8,11.05V7.71M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiSendClock = "M2 3V10L11 12L2 14V21L9.27 17.89A7 7 0 0 0 16 23A7 7 0 0 0 23 16A7 7 0 0 0 16 9L2 3M16 11A5 5 0 0 1 21 16A5 5 0 0 1 16 21A5 5 0 0 1 11 16A5 5 0 0 1 16 11M15 12.5V16.5L18 18.5L18.75 17.25L16.5 15.75V12.5H15Z"; -var mdiSendClockOutline = "M2 3V10L11 12L2 14V21L9.27 17.89A7 7 0 0 0 16 23A7 7 0 0 0 23 16A7 7 0 0 0 16 9L2 3M4 6.03L12.78 9.8A7 7 0 0 0 12.1 10.2L4 8.4V6.03M16 11A5 5 0 0 1 21 16A5 5 0 0 1 16 21A5 5 0 0 1 11 16A5 5 0 0 1 16 11M15 12.5V16.5L18 18.5L18.75 17.25L16.5 15.75V12.5H15M9.18 14.45A7 7 0 0 0 9 15.82L4 17.97V15.6L9.18 14.45Z"; -var mdiSendLock = "M23,18V17.5A2.5,2.5 0 0,0 20.5,15A2.5,2.5 0 0,0 18,17.5V18A1,1 0 0,0 17,19V23A1,1 0 0,0 18,24H23A1,1 0 0,0 24,23V19A1,1 0 0,0 23,18M22,18H19V17.5A1.5,1.5 0 0,1 20.5,16A1.5,1.5 0 0,1 22,17.5V18M23,12L2,21V14L17,12L2,10V3L23,12Z"; -var mdiSendLockOutline = "M23 18V17.5C23 16.12 21.88 15 20.5 15S18 16.12 18 17.5V18C17.45 18 17 18.45 17 19V23C17 23.55 17.45 24 18 24H23C23.55 24 24 23.55 24 23V19C24 18.45 23.55 18 23 18M22 18H19V17.5C19 16.67 19.67 16 20.5 16S22 16.67 22 17.5V18M4 6.03L11.5 9.25L4 8.25L4 6.03M11.5 14.75L4 17.97V15.75L11.5 14.75M2 3L2 10L17 12L2 14L2 21L23 12L2 3Z"; -var mdiSendOutline = "M4 6.03L11.5 9.25L4 8.25L4 6.03M11.5 14.75L4 17.97V15.75L11.5 14.75M2 3L2 10L17 12L2 14L2 21L23 12L2 3Z"; -var mdiSerialPort = "M7,3H17V5H19V8H16V14H8V8H5V5H7V3M17,9H19V14H17V9M11,15H13V22H11V15M5,9H7V14H5V9Z"; -var mdiServer = "M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H4A1,1 0 0,1 3,6V2A1,1 0 0,1 4,1M4,9H20A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9M4,17H20A1,1 0 0,1 21,18V22A1,1 0 0,1 20,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17M9,5H10V3H9V5M9,13H10V11H9V13M9,21H10V19H9V21M5,3V5H7V3H5M5,11V13H7V11H5M5,19V21H7V19H5Z"; -var mdiServerMinus = "M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H16V18H8V16Z"; -var mdiServerNetwork = "M13,19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H4A1,1 0 0,1 3,16V12A1,1 0 0,1 4,11H20A1,1 0 0,1 21,12V16A1,1 0 0,1 20,17H13V19M4,3H20A1,1 0 0,1 21,4V8A1,1 0 0,1 20,9H4A1,1 0 0,1 3,8V4A1,1 0 0,1 4,3M9,7H10V5H9V7M9,15H10V13H9V15M5,5V7H7V5H5M5,13V15H7V13H5Z"; -var mdiServerNetworkOff = "M13,19H14A1,1 0 0,1 15,20H15.73L13,17.27V19M22,20V21.18L20.82,20H22M21,22.72L19.73,24L17.73,22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H4A1,1 0 0,1 3,16V12A1,1 0 0,1 4,11H6.73L4.73,9H4A1,1 0 0,1 3,8V7.27L1,5.27L2.28,4L21,22.72M4,3H20A1,1 0 0,1 21,4V8A1,1 0 0,1 20,9H9.82L7,6.18V5H5.82L3.84,3C3.89,3 3.94,3 4,3M20,11A1,1 0 0,1 21,12V16A1,1 0 0,1 20,17H17.82L11.82,11H20M9,7H10V5H9V7M9,15H10V14.27L9,13.27V15M5,13V15H7V13H5Z"; -var mdiServerOff = "M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H8.82L6.82,5H7V3H5V3.18L3.21,1.39C3.39,1.15 3.68,1 4,1M22,22.72L20.73,24L19.73,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17H13.73L11.73,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9H5.73L3.68,6.95C3.38,6.85 3.15,6.62 3.05,6.32L1,4.27L2.28,3L22,22.72M20,9A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H16.82L10.82,9H20M20,17A1,1 0 0,1 21,18V19.18L18.82,17H20M9,5H10V3H9V5M9,13H9.73L9,12.27V13M9,21H10V19H9V21M5,11V13H7V11H5M5,19V21H7V19H5Z"; -var mdiServerPlus = "M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H11V13H13V16H16V18H13V21H11V18H8V16Z"; -var mdiServerRemove = "M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M10.59,17L8,14.41L9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17Z"; -var mdiServerSecurity = "M3,1H19A1,1 0 0,1 20,2V6A1,1 0 0,1 19,7H3A1,1 0 0,1 2,6V2A1,1 0 0,1 3,1M3,9H19A1,1 0 0,1 20,10V10.67L17.5,9.56L11,12.44V15H3A1,1 0 0,1 2,14V10A1,1 0 0,1 3,9M3,17H11C11.06,19.25 12,21.4 13.46,23H3A1,1 0 0,1 2,22V18A1,1 0 0,1 3,17M8,5H9V3H8V5M8,13H9V11H8V13M8,21H9V19H8V21M4,3V5H6V3H4M4,11V13H6V11H4M4,19V21H6V19H4M17.5,12L22,14V17C22,19.78 20.08,22.37 17.5,23C14.92,22.37 13,19.78 13,17V14L17.5,12M17.5,13.94L15,15.06V17.72C15,19.26 16.07,20.7 17.5,21.06V13.94Z"; -var mdiSetAll = "M9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5M8.5,12C8.5,13.87 9.29,15.56 10.56,16.75L11.56,16.29C10.31,15.29 9.5,13.74 9.5,12C9.5,10.26 10.31,8.71 11.56,7.71L10.56,7.25C9.29,8.44 8.5,10.13 8.5,12M15.5,12C15.5,10.13 14.71,8.44 13.44,7.25L12.44,7.71C13.69,8.71 14.5,10.26 14.5,12C14.5,13.74 13.69,15.29 12.44,16.29L13.44,16.75C14.71,15.56 15.5,13.87 15.5,12Z"; -var mdiSetCenter = "M9,5A7,7 0 0,0 2,12A7,7 0 0,0 9,19C10.04,19 11.06,18.76 12,18.32C12.94,18.76 13.96,19 15,19A7,7 0 0,0 22,12A7,7 0 0,0 15,5C13.96,5 12.94,5.24 12,5.68C11.06,5.24 10.04,5 9,5M9,7C9.34,7 9.67,7.03 10,7.1C8.72,8.41 8,10.17 8,12C8,13.83 8.72,15.59 10,16.89C9.67,16.96 9.34,17 9,17A5,5 0 0,1 4,12A5,5 0 0,1 9,7M15,7A5,5 0 0,1 20,12A5,5 0 0,1 15,17C14.66,17 14.33,16.97 14,16.9C15.28,15.59 16,13.83 16,12C16,10.17 15.28,8.41 14,7.11C14.33,7.04 14.66,7 15,7Z"; -var mdiSetCenterRight = "M15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19M9,17L10,16.89C8.72,15.59 8,13.83 8,12C8,10.17 8.72,8.41 10,7.1L9,7A5,5 0 0,0 4,12A5,5 0 0,0 9,17M15.5,12C15.5,10.13 14.71,8.44 13.44,7.25L12.44,7.71C13.69,8.71 14.5,10.26 14.5,12C14.5,13.74 13.69,15.29 12.44,16.29L13.44,16.75C14.71,15.56 15.5,13.87 15.5,12Z"; -var mdiSetLeft = "M9,5A7,7 0 0,0 2,12A7,7 0 0,0 9,19C10.04,19 11.06,18.76 12,18.32C12.94,18.76 13.96,19 15,19A7,7 0 0,0 22,12A7,7 0 0,0 15,5C13.96,5 12.94,5.24 12,5.68C11.06,5.24 10.04,5 9,5M15,7A5,5 0 0,1 20,12A5,5 0 0,1 15,17C14.66,17 14.33,16.97 14,16.9C15.28,15.59 16,13.83 16,12C16,10.17 15.28,8.41 14,7.11C14.33,7.04 14.66,7 15,7M12,8C13.26,8.95 14,10.43 14,12C14,13.57 13.26,15.05 12,16C10.74,15.05 10,13.57 10,12C10,10.43 10.74,8.95 12,8Z"; -var mdiSetLeftCenter = "M9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5M15,7L14,7.11C15.28,8.41 16,10.17 16,12C16,13.83 15.28,15.59 14,16.9L15,17A5,5 0 0,0 20,12A5,5 0 0,0 15,7M8.5,12C8.5,13.87 9.29,15.56 10.56,16.75L11.56,16.29C10.31,15.29 9.5,13.74 9.5,12C9.5,10.26 10.31,8.71 11.56,7.71L10.56,7.25C9.29,8.44 8.5,10.13 8.5,12Z"; -var mdiSetLeftRight = "M9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5M9,12C9,14.22 10.21,16.16 12,17.2C13.79,16.16 15,14.22 15,12C15,9.78 13.79,7.84 12,6.8C10.21,7.84 9,9.78 9,12Z"; -var mdiSetMerge = "M2 7V9H7V7H2M12 9V11H9V13H12V15L15 12L12 9M17 9V15H22V9H17M2 11V13H7V11H2M2 15V17H7V15H2Z"; -var mdiSetNone = "M9,5A7,7 0 0,0 2,12A7,7 0 0,0 9,19C10.04,19 11.06,18.76 12,18.32C12.94,18.76 13.96,19 15,19A7,7 0 0,0 22,12A7,7 0 0,0 15,5C13.96,5 12.94,5.24 12,5.68C11.06,5.24 10.04,5 9,5M9,7C9.34,7 9.67,7.03 10,7.1C8.72,8.41 8,10.17 8,12C8,13.83 8.72,15.59 10,16.89C9.67,16.96 9.34,17 9,17A5,5 0 0,1 4,12A5,5 0 0,1 9,7M15,7A5,5 0 0,1 20,12A5,5 0 0,1 15,17C14.66,17 14.33,16.97 14,16.9C15.28,15.59 16,13.83 16,12C16,10.17 15.28,8.41 14,7.11C14.33,7.04 14.66,7 15,7M12,8C13.26,8.95 14,10.43 14,12C14,13.57 13.26,15.05 12,16C10.74,15.05 10,13.57 10,12C10,10.43 10.74,8.95 12,8Z"; -var mdiSetRight = "M15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19M9,17L10,16.89C8.72,15.59 8,13.83 8,12C8,10.17 8.72,8.41 10,7.1L9,7A5,5 0 0,0 4,12A5,5 0 0,0 9,17M12,16C13.26,15.05 14,13.57 14,12C14,10.43 13.26,8.95 12,8C10.74,8.95 10,10.43 10,12C10,13.57 10.74,15.05 12,16Z"; -var mdiSetSplit = "M17 7V9H22V7H17M2 9V15H7V9H2M12 9V11H9V13H12V15L15 12L12 9M17 11V13H22V11H17M17 15V17H22V15H17Z"; -var mdiSetSquare = "M17.7 17.7L16.6 18.8L15.9 18L17 17L15 15L14 16.1L13.3 15.4L14.4 14.3L12.5 12.4L11.4 13.5L10.7 12.8L11.8 11.7L9.8 9.8L8.7 10.9L8 10.2L9 9L7.1 7.1L6 8.1L5.3 7.4L6.4 6.3L4 4V20H20L17.7 17.7M7 17V11.2L12.8 17H7Z"; -var mdiSetTopBox = "M5,15.5A0.5,0.5 0 0,1 4.5,16H3.5A0.5,0.5 0 0,1 3,15.5V15H2A1,1 0 0,1 1,14V11A1,1 0 0,1 2,10H22A1,1 0 0,1 23,11V14A1,1 0 0,1 22,15H21V15.5A0.5,0.5 0 0,1 20.5,16H19.5A0.5,0.5 0 0,1 19,15.5V15H5V15.5M3,12V13H5V12H3M6,12V13H8V12H6M20.5,11.5A1,1 0 0,0 19.5,12.5A1,1 0 0,0 20.5,13.5A1,1 0 0,0 21.5,12.5A1,1 0 0,0 20.5,11.5Z"; -var mdiSettingsHelper = "M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z"; -var mdiShaker = "M7 16C7 16.55 6.55 17 6 17S5 16.55 5 16C5 15.45 5.45 15 6 15S7 15.45 7 16M9 16C8.45 16 8 16.45 8 17S8.45 18 9 18 10 17.55 10 17 9.55 16 9 16M4 18C3.45 18 3 18.45 3 19S3.45 20 4 20 5 19.55 5 19 4.55 18 4 18M7 19C6.45 19 6 19.45 6 20S6.45 21 7 21 8 20.55 8 20 7.55 19 7 19M15.33 2.72L9.8 9.65L13.34 13.19L20.28 7.67C21.18 6.91 21.25 5.54 20.41 4.7L18.3 2.59C17.46 1.75 16.09 1.82 15.33 2.72M8.39 12.5L10.5 14.6C10.9 15 11.54 15 11.93 14.6L12.63 13.9L9.1 10.36L8.39 11.07C8 11.46 8 12.09 8.39 12.5Z"; -var mdiShakerOutline = "M16.88 4L16.88 4L19.03 6.1L13.5 10.5L12.5 9.5L16.87 4L16.88 4M16.88 2C16.3 2 15.73 2.24 15.33 2.72L9.8 9.65L13.34 13.19L20.28 7.67C21.18 6.91 21.25 5.54 20.41 4.7L18.3 2.59C17.9 2.19 17.39 2 16.88 2M9.1 10.36L8.39 11.07C8 11.46 8 12.09 8.39 12.5L10.5 14.6C10.71 14.8 10.96 14.89 11.22 14.89S11.73 14.8 11.93 14.6L12.63 13.9L9.1 10.36M6 15C5.45 15 5 15.45 5 16C5 16.55 5.45 17 6 17C6.55 17 7 16.55 7 16C7 15.45 6.55 15 6 15M9 16C8.45 16 8 16.45 8 17S8.45 18 9 18C9.55 18 10 17.55 10 17S9.55 16 9 16M4 18C3.45 18 3 18.45 3 19S3.45 20 4 20C4.55 20 5 19.55 5 19S4.55 18 4 18M7 19C6.45 19 6 19.45 6 20S6.45 21 7 21C7.55 21 8 20.55 8 20S7.55 19 7 19Z"; -var mdiShape = "M11,13.5V21.5H3V13.5H11M12,2L17.5,11H6.5L12,2M17.5,13C20,13 22,15 22,17.5C22,20 20,22 17.5,22C15,22 13,20 13,17.5C13,15 15,13 17.5,13Z"; -var mdiShapeCirclePlus = "M11,19A6,6 0 0,0 17,13H19A8,8 0 0,1 11,21A8,8 0 0,1 3,13A8,8 0 0,1 11,5V7A6,6 0 0,0 5,13A6,6 0 0,0 11,19M19,5H22V7H19V10H17V7H14V5H17V2H19V5Z"; -var mdiShapeOutline = "M11,13.5V21.5H3V13.5H11M9,15.5H5V19.5H9V15.5M12,2L17.5,11H6.5L12,2M12,5.86L10.08,9H13.92L12,5.86M17.5,13C20,13 22,15 22,17.5C22,20 20,22 17.5,22C15,22 13,20 13,17.5C13,15 15,13 17.5,13M17.5,15A2.5,2.5 0 0,0 15,17.5A2.5,2.5 0 0,0 17.5,20A2.5,2.5 0 0,0 20,17.5A2.5,2.5 0 0,0 17.5,15Z"; -var mdiShapeOvalPlus = "M19 5H22V7H19V10H17V7H14V5H17V2H19V5M11 4L12 4.09V6.14C11.68 6.05 11.34 6 11 6C8.24 6 6 9.13 6 13C6 16.87 8.24 20 11 20C13.76 20 16 16.87 16 13L15.95 12H17.96L18 13C18 17.97 14.87 22 11 22C7.13 22 4 17.97 4 13C4 8.03 7.13 4 11 4Z"; -var mdiShapePlus = "M2,2H11V11H2V2M17.5,2C20,2 22,4 22,6.5C22,9 20,11 17.5,11C15,11 13,9 13,6.5C13,4 15,2 17.5,2M6.5,14L11,22H2L6.5,14M19,17H22V19H19V22H17V19H14V17H17V14H19V17Z"; -var mdiShapePolygonPlus = "M17,15.7V13H19V17L10,21L3,14L7,5H11V7H8.3L5.4,13.6L10.4,18.6L17,15.7M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z"; -var mdiShapeRectanglePlus = "M19,6H22V8H19V11H17V8H14V6H17V3H19V6M17,17V14H19V19H3V6H11V8H5V17H17Z"; -var mdiShapeSquarePlus = "M19,5H22V7H19V10H17V7H14V5H17V2H19V5M17,19V13H19V21H3V5H11V7H5V19H17Z"; -var mdiShapeSquareRoundedPlus = "M17 2H19V5H22V7H19V10H17V7H14V5H17V2M7 5H11V7H7C5.9 7 5 7.9 5 9V17C5 18.11 5.9 19 7 19H15C16.11 19 17 18.11 17 17V13H19V17C19 19.21 17.21 21 15 21H7C4.79 21 3 19.21 3 17V9C3 6.79 4.79 5 7 5Z"; -var mdiShare = "M21,12L14,5V9C7,10 4,15 3,20C5.5,16.5 9,14.9 14,14.9V19L21,12Z"; -var mdiShareAll = "M11 9V5L18 12L11 19V14.9C6 14.9 2.5 16.5 0 20C1 15 4 10 11 9M17 8V5L24 12L17 19V16L21 12L17 8Z"; -var mdiShareAllOutline = "M13 9.8V10.7L11.3 10.9C8.7 11.3 6.8 12.3 5.4 13.6C7.1 13.1 8.9 12.8 11 12.8H13V14.1L15.2 12L13 9.8M11 5L18 12L11 19V14.9C6 14.9 2.5 16.5 0 20C1 15 4 10 11 9M17 8V5L24 12L17 19V16L21 12"; -var mdiShareCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M14 16V13C10.39 13 7.81 14.43 6 17C6.72 13.33 8.94 9.73 14 9V6L19 11L14 16Z"; -var mdiShareOff = "M20.8 22.7L15.6 17.5L14 19V15.9L13.1 14.9C8.6 15.2 5.4 16.8 3 20.1C3.58 16.31 5.72 12.94 8.9 10.8L1.1 3L2.4 1.7L22.1 21.5M18.1 14.9L21 12L14 5V9L12.5 9.3"; -var mdiShareOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L8.9 10.8C5.4 12.9 3.7 16.4 3 20C5.3 16.7 8.6 15.1 13 14.9L14 15.9V19L15.6 17.4L20.8 22.7M8.3 13.8C8.94 13.22 9.65 12.71 10.4 12.3L11.3 13.1M14.2 11L12.5 9.3L14 9V5L21 12L18.1 14.9L16.7 13.5L18.2 12L16 9.8V10.7"; -var mdiShareOutline = "M14,5V9C7,10 4,15 3,20C5.5,16.5 9,14.9 14,14.9V19L21,12L14,5M16,9.83L18.17,12L16,14.17V12.9H14C11.93,12.9 10.07,13.28 8.34,13.85C9.74,12.46 11.54,11.37 14.28,11L16,10.73V9.83Z"; -var mdiShareVariant = "M18,16.08C17.24,16.08 16.56,16.38 16.04,16.85L8.91,12.7C8.96,12.47 9,12.24 9,12C9,11.76 8.96,11.53 8.91,11.3L15.96,7.19C16.5,7.69 17.21,8 18,8A3,3 0 0,0 21,5A3,3 0 0,0 18,2A3,3 0 0,0 15,5C15,5.24 15.04,5.47 15.09,5.7L8.04,9.81C7.5,9.31 6.79,9 6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C6.79,15 7.5,14.69 8.04,14.19L15.16,18.34C15.11,18.55 15.08,18.77 15.08,19C15.08,20.61 16.39,21.91 18,21.91C19.61,21.91 20.92,20.61 20.92,19A2.92,2.92 0 0,0 18,16.08Z"; -var mdiShareVariantOutline = "M18 16.08C17.24 16.08 16.56 16.38 16.04 16.85L8.91 12.7C8.96 12.47 9 12.24 9 12S8.96 11.53 8.91 11.3L15.96 7.19C16.5 7.69 17.21 8 18 8C19.66 8 21 6.66 21 5S19.66 2 18 2 15 3.34 15 5C15 5.24 15.04 5.47 15.09 5.7L8.04 9.81C7.5 9.31 6.79 9 6 9C4.34 9 3 10.34 3 12S4.34 15 6 15C6.79 15 7.5 14.69 8.04 14.19L15.16 18.34C15.11 18.55 15.08 18.77 15.08 19C15.08 20.61 16.39 21.91 18 21.91S20.92 20.61 20.92 19C20.92 17.39 19.61 16.08 18 16.08M18 4C18.55 4 19 4.45 19 5S18.55 6 18 6 17 5.55 17 5 17.45 4 18 4M6 13C5.45 13 5 12.55 5 12S5.45 11 6 11 7 11.45 7 12 6.55 13 6 13M18 20C17.45 20 17 19.55 17 19S17.45 18 18 18 19 18.45 19 19 18.55 20 18 20Z"; -var mdiSharkFin = "M22 16V18H20C18.6 18 17.2 17.6 16 17C13.5 18.3 10.5 18.3 8 17C6.8 17.6 5.4 18 4 18H2V16H4C5.4 16 6.8 15.5 8 14.7C10.4 16.4 13.6 16.4 16 14.7C17.2 15.5 18.6 16 20 16H22M5.28 13.79C5.82 13.63 6.37 13.38 6.89 13.04L8.03 12.27L9.16 13.07C10 13.66 11 14 12 14C13 14 14 13.66 14.84 13.07L15.97 12.27L17.11 13.04C17.93 13.59 18.83 13.9 19.67 13.97C18.24 7.4 12.37 2 6 2C5.65 2 5.33 2.18 5.15 2.47C4.97 2.77 4.95 3.14 5.11 3.45C7.28 7.79 6.61 11.29 5.28 13.79M16 18.7C13.6 20.4 10.4 20.4 8 18.7C6.8 19.5 5.4 20 4 20H2V22H4C5.4 22 6.8 21.6 8 21C10.5 22.3 13.5 22.3 16 21C17.2 21.6 18.6 22 20 22H22V20H20C18.6 20 17.2 19.5 16 18.7Z"; -var mdiSharkFinOutline = "M22 16V18H20C18.6 18 17.2 17.6 16 17C13.5 18.3 10.5 18.3 8 17C6.8 17.6 5.4 18 4 18H2V16H4C5.4 16 6.8 15.5 8 14.7C10.4 16.4 13.6 16.4 16 14.7C17.2 15.5 18.6 16 20 16H22M5.28 13.79C5.82 13.63 6.37 13.38 6.89 13.04L8 12.28C8.69 10 8.78 7.27 7.59 4.14C11.95 4.89 15.89 8.65 17.37 13.19C18.12 13.64 18.91 13.91 19.66 13.97C18.24 7.4 12.37 2 6 2C5.65 2 5.33 2.18 5.15 2.47C4.97 2.77 4.95 3.14 5.11 3.45C7.28 7.79 6.61 11.29 5.28 13.79M16 18.7C13.6 20.4 10.4 20.4 8 18.7C6.8 19.5 5.4 20 4 20H2V22H4C5.4 22 6.8 21.6 8 21C10.5 22.3 13.5 22.3 16 21C17.2 21.6 18.6 22 20 22H22V20H20C18.6 20 17.2 19.5 16 18.7Z"; -var mdiSheep = "M20,8.5A2.5,2.5 0 0,1 17.5,11C16.42,11 15.5,10.31 15.16,9.36C14.72,9.75 14.14,10 13.5,10C12.94,10 12.42,9.81 12,9.5C11.58,9.81 11.07,10 10.5,10C9.86,10 9.28,9.75 8.84,9.36C8.5,10.31 7.58,11 6.5,11A2.5,2.5 0 0,1 4,8.5C4,7.26 4.91,6.23 6.1,6.04C6.04,5.87 6,5.69 6,5.5A1.5,1.5 0 0,1 7.5,4C7.7,4 7.89,4.04 8.06,4.11C8.23,3.47 8.81,3 9.5,3C9.75,3 10,3.07 10.18,3.17C10.5,2.5 11.19,2 12,2C12.81,2 13.5,2.5 13.82,3.17C14,3.07 14.25,3 14.5,3C15.19,3 15.77,3.47 15.94,4.11C16.11,4.04 16.3,4 16.5,4A1.5,1.5 0 0,1 18,5.5C18,5.69 17.96,5.87 17.9,6.04C19.09,6.23 20,7.26 20,8.5M10,12A1,1 0 0,0 9,13A1,1 0 0,0 10,14A1,1 0 0,0 11,13A1,1 0 0,0 10,12M14,12A1,1 0 0,0 13,13A1,1 0 0,0 14,14A1,1 0 0,0 15,13A1,1 0 0,0 14,12M20.23,10.66C19.59,11.47 18.61,12 17.5,12C17.05,12 16.62,11.9 16.21,11.73C16.2,14.28 15.83,17.36 14.45,18.95C13.93,19.54 13.3,19.86 12.5,19.96V18H11.5V19.96C10.7,19.86 10.07,19.55 9.55,18.95C8.16,17.35 7.79,14.29 7.78,11.74C7.38,11.9 6.95,12 6.5,12C5.39,12 4.41,11.47 3.77,10.66C2.88,11.55 2,12 2,12C2,12 3,14 5,14C5.36,14 5.64,13.96 5.88,13.91C6.22,17.73 7.58,22 12,22C16.42,22 17.78,17.73 18.12,13.91C18.36,13.96 18.64,14 19,14C21,14 22,12 22,12C22,12 21.12,11.55 20.23,10.66Z"; -var mdiShield = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z"; -var mdiShieldAccount = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M17.13,17C15.92,18.85 14.11,20.24 12,20.92C9.89,20.24 8.08,18.85 6.87,17C6.53,16.5 6.24,16 6,15.47C6,13.82 8.71,12.47 12,12.47C15.29,12.47 18,13.79 18,15.47C17.76,16 17.47,16.5 17.13,17Z"; -var mdiShieldAccountOutline = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,3.18L19,6.3V11.22C19,12.92 18.5,14.65 17.65,16.17C16,14.94 13.26,14.5 12,14.5C10.74,14.5 8,14.94 6.35,16.17C5.5,14.65 5,12.92 5,11.22V6.3L12,3.18M12,6A3.5,3.5 0 0,0 8.5,9.5A3.5,3.5 0 0,0 12,13A3.5,3.5 0 0,0 15.5,9.5A3.5,3.5 0 0,0 12,6M12,8A1.5,1.5 0 0,1 13.5,9.5A1.5,1.5 0 0,1 12,11A1.5,1.5 0 0,1 10.5,9.5A1.5,1.5 0 0,1 12,8M12,16.5C13.57,16.5 15.64,17.11 16.53,17.84C15.29,19.38 13.7,20.55 12,21C10.3,20.55 8.71,19.38 7.47,17.84C8.37,17.11 10.43,16.5 12,16.5Z"; -var mdiShieldAccountVariant = "M17 11C17.3 11 17.7 11 18 11.1V6.3L10.5 3L3 6.3V11.2C3 15.7 6.2 20 10.5 21C11.1 20.9 11.6 20.7 12.1 20.5C11.4 19.5 11 18.3 11 17C11 13.7 13.7 11 17 11M17 13C14.8 13 13 14.8 13 17S14.8 21 17 21 21 19.2 21 17 19.2 13 17 13M17 14.4C17.6 14.4 18.1 14.9 18.1 15.5C18.1 16.1 17.6 16.6 17 16.6S15.9 16.1 15.9 15.5 16.4 14.4 17 14.4M17 19.8C16.1 19.8 15.3 19.3 14.8 18.6C14.9 17.9 16.3 17.5 17 17.5S19.2 17.9 19.2 18.6C18.7 19.3 17.9 19.8 17 19.8Z"; -var mdiShieldAccountVariantOutline = "M17 14.4C17.6 14.4 18.1 14.9 18.1 15.5S17.6 16.6 17 16.6 15.9 16.1 15.9 15.5 16.4 14.4 17 14.4M17 17.5C16.3 17.5 14.8 17.9 14.8 18.6C15.3 19.3 16.1 19.8 17 19.8S18.7 19.3 19.2 18.6C19.2 17.9 17.7 17.5 17 17.5M18 11.1V6.3L10.5 3L3 6.3V11.2C3 15.7 6.2 20 10.5 21C11.1 20.9 11.6 20.7 12.1 20.5C13.2 22 15 23 17 23C20.3 23 23 20.3 23 17C23 14 20.8 11.6 18 11.1M11 17C11 17.6 11.1 18.1 11.2 18.6C11 18.7 10.7 18.8 10.5 18.9C7.3 17.9 5 14.7 5 11.2V7.6L10.5 5.2L16 7.6V11.1C13.2 11.6 11 14 11 17M17 21C14.8 21 13 19.2 13 17S14.8 13 17 13 21 14.8 21 17 19.2 21 17 21Z"; -var mdiShieldAirplane = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,5.68C12.5,5.68 12.95,6.11 12.95,6.63V10.11L18,13.26V14.53L12.95,12.95V16.42L14.21,17.37V18.32L12,17.68L9.79,18.32V17.37L11.05,16.42V12.95L6,14.53V13.26L11.05,10.11V6.63C11.05,6.11 11.5,5.68 12,5.68Z"; -var mdiShieldAirplaneOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M12,5.68C12.5,5.68 12.95,6.11 12.95,6.63V10.11L18,13.26V14.53L12.95,12.95V16.42L14.21,17.37V18.32L12,17.68L9.79,18.32V17.37L11.05,16.42V12.95L6,14.53V13.26L11.05,10.11V6.63C11.05,6.11 11.5,5.68 12,5.68Z"; -var mdiShieldAlert = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5M11,7H13V13H11M11,15H13V17H11"; -var mdiShieldAlertOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M11,7H13V13H11V7M11,15H13V17H11V15Z"; -var mdiShieldBug = "M11 13H13V14H11V13M21 5V11C21 16.5 17.2 21.7 12 23C6.8 21.7 3 16.5 3 11V5L12 1L21 5M17 10H14.8C14.6 9.4 14.2 8.9 13.7 8.5L14.9 7.3L14.2 6.6L12.8 8H12C11.8 8 11.5 8 11.3 8.1L9.9 6.6L9.1 7.4L10.3 8.6C9.8 8.9 9.4 9.4 9.2 10H7V11H9V12H7V13H9V14H7V15H9.2C9.6 16.2 10.7 17 12 17S14.4 16.2 14.8 15H17V14H15V13H17V12H15V11H17V10M11 12H13V11H11V12Z"; -var mdiShieldBugOutline = "M9.9 6.6L9.1 7.4L10.3 8.6C9.8 8.9 9.4 9.4 9.2 10H7V11H9V12H7V13H9V14H7V15H9.2C9.6 16.2 10.7 17 12 17S14.4 16.2 14.8 15H17V14H15V13H17V12H15V11H17V10H14.8C14.6 9.4 14.2 8.9 13.7 8.5L14.9 7.3L14.2 6.6L12.8 8H12C11.8 8 11.5 8 11.3 8.1L9.9 6.6M11 11H13V12H11V11M11 13H13V14H11V13M21 11C21 16.5 17.2 21.7 12 23C6.8 21.7 3 16.5 3 11V5L12 1L21 5V11M12 21C15.8 20 19 15.5 19 11.2V6.3L12 3.2L5 6.3V11.2C5 15.5 8.2 20 12 21Z"; -var mdiShieldCar = "M14.42 7.5L16 11H8L9.42 7.5H14.42M9 12C8.45 12 8 12.45 8 13S8.45 14 9 14 10 13.55 10 13 9.55 12 9 12M15 12C14.45 12 14 12.45 14 13S14.45 14 15 14 16 13.55 16 13 15.55 12 15 12M21 5V11C21 16.55 17.16 21.74 12 23C6.84 21.74 3 16.55 3 11V5L12 1L21 5M18 12L15.84 7C15.64 6.42 15.08 6 14.42 6H9.42C8.76 6 8.2 6.42 8 7L6 12V16C6 16.55 6.45 17 7 17H8C8.55 17 9 16.55 9 16V15H15V16C15 16.55 15.45 17 16 17H17C17.55 17 18 16.55 18 16V12Z"; -var mdiShieldCheck = "M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z"; -var mdiShieldCheckOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9"; -var mdiShieldCross = "M12,1L3,5V11C3,16.5 6.8,21.7 12,23C17.2,21.7 21,16.5 21,11V5L12,1M16,10H13V18H11V10H8V8H11V5H13V8H16V10Z"; -var mdiShieldCrossOutline = "M21,11C21,16.5 17.2,21.7 12,23C6.8,21.7 3,16.5 3,11V5L12,1L21,5V11M12,21C15.8,20 19,15.5 19,11.2V6.3L12,3.2L5,6.3V11.2C5,15.5 8.3,20 12,21M16,9H13V6H11V9H8V11H11V19H13V11H16V9Z"; -var mdiShieldEdit = "M21.7 14.4L20.7 15.4L18.6 13.3L19.6 12.3C19.8 12.1 20.2 12.1 20.4 12.3L21.7 13.6C21.9 13.8 21.9 14.1 21.7 14.4M12 19.9L18.1 13.8L20.2 15.9L14.1 22H12V19.9M10 19.1L21 8.1V5L12 1L3 5V11C3 15.8 5.9 20.3 10 22.3V19.1Z"; -var mdiShieldEditOutline = "M21.7 13.6L20.4 12.3C20.3 12.2 20.2 12.1 20 12.1C19.9 12.1 19.7 12.2 19.6 12.3L18.6 13.3L20.6 15.3L21.6 14.3C21.9 14.1 21.9 13.8 21.7 13.6M12 19.9V22H14.1L20.2 15.9L18.2 13.8L12 19.9M10 22.3C5.9 20.3 3 15.8 3 11V5L12 1L21 5V8.1L19 10.1V6.3L12 3.2L5 6.3V11.2C5 14.7 7.2 18.3 10 20.1V22.3Z"; -var mdiShieldHalf = "M12 1L3 5V11C3 16.5 6.8 21.7 12 23V1Z"; -var mdiShieldHalfFull = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18V21Z"; -var mdiShieldHome = "M11,13H13V16H16V11H18L12,6L6,11H8V16H11V13M12,1L21,5V11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1Z"; -var mdiShieldHomeOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M11,14H13V17H16V12H18L12,7L6,12H8V17H11V14"; -var mdiShieldKey = "M12,8A1,1 0 0,1 13,9A1,1 0 0,1 12,10A1,1 0 0,1 11,9A1,1 0 0,1 12,8M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,6A3,3 0 0,0 9,9C9,10.31 9.83,11.42 11,11.83V18H13V16H15V14H13V11.83C14.17,11.42 15,10.31 15,9A3,3 0 0,0 12,6Z"; -var mdiShieldKeyOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M12,6A3,3 0 0,1 15,9C15,10.31 14.17,11.42 13,11.83V14H15V16H13V18H11V11.83C9.83,11.42 9,10.31 9,9A3,3 0 0,1 12,6M12,8A1,1 0 0,0 11,9A1,1 0 0,0 12,10A1,1 0 0,0 13,9A1,1 0 0,0 12,8Z"; -var mdiShieldLinkVariant = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M14.28,14.08L12.26,16.1C11.66,16.7 10.87,17 10.08,17C9.29,17 8.5,16.7 7.9,16.1C6.7,14.9 6.7,12.95 7.9,11.74L9.15,10.5L9.14,11.06C9.14,11.5 9.21,11.95 9.36,12.37L9.41,12.5L9.04,12.87C8.76,13.15 8.6,13.53 8.6,13.92C8.6,14.32 8.76,14.69 9.04,14.97C9.6,15.53 10.57,15.53 11.13,14.97L13.14,12.96C13.43,12.67 13.58,12.3 13.58,11.91C13.58,11.5 13.43,11.14 13.15,10.86C13,10.71 12.9,10.5 12.9,10.29C12.9,10.08 13,9.88 13.15,9.73C13.45,9.42 14,9.43 14.28,9.73C14.86,10.31 15.18,11.08 15.18,11.9C15.18,12.73 14.86,13.5 14.28,14.08M17.1,11.26L15.85,12.5L15.86,11.94C15.86,11.5 15.79,11.06 15.64,10.64L15.6,10.5L15.96,10.13C16.25,9.85 16.4,9.5 16.4,9.08C16.4,8.69 16.25,8.32 15.97,8.04C15.4,7.47 14.43,7.47 13.87,8.04L11.86,10.05C11.58,10.33 11.42,10.7 11.42,11.1C11.42,11.5 11.57,11.86 11.86,12.14C12,12.29 12.1,12.5 12.1,12.71C12.1,12.93 12,13.13 11.85,13.28C11.7,13.44 11.5,13.5 11.29,13.5C11.09,13.5 10.88,13.43 10.72,13.28C9.5,12.08 9.5,10.12 10.72,8.92L12.74,6.9C13.95,5.7 15.9,5.7 17.1,6.9C17.68,7.5 18,8.26 18,9.08C18,9.9 17.68,10.68 17.1,11.26Z"; -var mdiShieldLinkVariantOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M14.28,9.73C14.86,10.31 15.18,11.08 15.18,11.9C15.18,12.73 14.86,13.5 14.28,14.08L12.26,16.1C11.66,16.7 10.87,17 10.08,17C9.29,17 8.5,16.7 7.9,16.1C6.7,14.9 6.7,12.95 7.9,11.74L9.15,10.5L9.14,11.06C9.14,11.5 9.21,11.95 9.36,12.36L9.4,12.5L9.04,12.87C8.75,13.15 8.6,13.5 8.6,13.92C8.6,14.31 8.75,14.68 9.03,14.96C9.6,15.53 10.57,15.53 11.13,14.97L13.14,12.95C13.43,12.67 13.58,12.3 13.58,11.91C13.58,11.5 13.43,11.14 13.14,10.86C13,10.71 12.9,10.5 12.9,10.29C12.9,10.08 13,9.87 13.14,9.72C13.45,9.42 14,9.42 14.28,9.73M18,9.08C18,9.9 17.68,10.68 17.1,11.26L15.85,12.5L15.86,11.94C15.86,11.5 15.79,11.06 15.64,10.64L15.59,10.5L15.96,10.13C16.25,9.85 16.4,9.5 16.4,9.08C16.4,8.69 16.25,8.32 15.96,8.04C15.4,7.47 14.43,7.47 13.87,8.03L11.86,10.05C11.57,10.33 11.42,10.7 11.42,11.1C11.42,11.5 11.57,11.86 11.85,12.14C12,12.29 12.1,12.5 12.1,12.71C12.1,12.93 12,13.13 11.85,13.28C11.7,13.43 11.5,13.5 11.29,13.5C11.09,13.5 10.88,13.43 10.72,13.28C9.5,12.07 9.5,10.12 10.72,8.92L12.74,6.9C13.95,5.7 15.9,5.7 17.1,6.9C17.68,7.5 18,8.26 18,9.08Z"; -var mdiShieldLock = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,7C13.4,7 14.8,8.1 14.8,9.5V11C15.4,11 16,11.6 16,12.3V15.8C16,16.4 15.4,17 14.7,17H9.2C8.6,17 8,16.4 8,15.7V12.2C8,11.6 8.6,11 9.2,11V9.5C9.2,8.1 10.6,7 12,7M12,8.2C11.2,8.2 10.5,8.7 10.5,9.5V11H13.5V9.5C13.5,8.7 12.8,8.2 12,8.2Z"; -var mdiShieldLockOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M14.8,11V9.5C14.8,8.1 13.4,7 12,7C10.6,7 9.2,8.1 9.2,9.5V11C8.6,11 8,11.6 8,12.2V15.7C8,16.4 8.6,17 9.2,17H14.7C15.4,17 16,16.4 16,15.8V12.3C16,11.6 15.4,11 14.8,11M13.5,11H10.5V9.5C10.5,8.7 11.2,8.2 12,8.2C12.8,8.2 13.5,8.7 13.5,9.5V11Z"; -var mdiShieldOff = "M1,4.27L2.28,3L20.5,21.22L19.23,22.5L17,20.25C15.57,21.57 13.87,22.54 12,23C6.84,21.74 3,16.55 3,11V6.27L1,4.27M12,1L21,5V11C21,13.28 20.35,15.5 19.23,17.41L5.65,3.82L12,1Z"; -var mdiShieldOffOutline = "M1,4.27L3,6.27V11C3,16.55 6.84,21.74 12,23C13.87,22.54 15.57,21.56 16.97,20.24L19.23,22.5L20.5,21.22L2.28,3L1,4.27M12,21C8.25,20 5,15.54 5,11.22V8.27L15.59,18.86C14.53,19.89 13.3,20.65 12,21M21,5V11C21,13.28 20.35,15.5 19.23,17.4L17.77,15.95C18.54,14.5 19,12.84 19,11.22V6.3L12,3.18L7.16,5.34L5.65,3.82L12,1L21,5Z"; -var mdiShieldOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21Z"; -var mdiShieldPlus = "M19,20V22.97H17V20H14V18H17V15H19V18H22V20H19M12,1L21,5V11C21,11.9 20.9,12.78 20.71,13.65C19.9,13.23 19,13 18,13A6,6 0 0,0 12,19C12,20.36 12.45,21.62 13.22,22.62L12,23C6.84,21.74 3,16.55 3,11V5L12,1Z"; -var mdiShieldPlusOutline = "M19,20V22.97H17V20H14V18H17V15H19V18H22V20H19M21,11C21,11.9 20.9,12.78 20.71,13.65C20.13,13.35 19.5,13.15 18.81,13.05C18.93,12.45 19,11.83 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21L12.31,20.91C12.5,21.53 12.83,22.11 13.22,22.62L12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11Z"; -var mdiShieldRefresh = "M18 12C19 12 20 12.2 20.9 12.7C21 12.1 21 11.6 21 11V5L12 1L3 5V11C3 16.5 6.8 21.7 12 23C12.4 22.9 12.7 22.8 13 22.7C12 21.5 11.5 20 11.5 18.5C11.5 14.9 14.4 12 18 12M18 14.5C19.1 14.5 20.1 14.9 20.8 15.7L22 14.5V18.5H18L19.8 16.7C19.3 16.3 18.7 16 18 16C16.6 16 15.5 17.1 15.5 18.5S16.6 21 18 21C18.8 21 19.5 20.6 20 20H21.7C21.1 21.5 19.7 22.5 18 22.5C15.8 22.5 14 20.7 14 18.5S15.8 14.5 18 14.5Z"; -var mdiShieldRefreshOutline = "M12 21C8.2 20 5 15.5 5 11.2V6.3L12 3.2L19 6.3V12.1C19.7 12.2 20.3 12.4 20.9 12.7C21 12.1 21 11.6 21 11V5L12 1L3 5V11C3 16.5 6.8 21.7 12 23C12.4 22.9 12.7 22.8 13 22.7C12.6 22.2 12.2 21.6 12 21M18 14.5C19.1 14.5 20.1 14.9 20.8 15.7L22 14.5V18.5H18L19.8 16.7C19.3 16.3 18.7 16 18 16C16.6 16 15.5 17.1 15.5 18.5S16.6 21 18 21C18.8 21 19.5 20.6 20 20H21.7C21.1 21.5 19.7 22.5 18 22.5C15.8 22.5 14 20.7 14 18.5S15.8 14.5 18 14.5Z"; -var mdiShieldRemove = "M19.43,19L21.5,21.11L20.12,22.5L18.03,20.41L15.91,22.53L14.5,21.11L16.61,19L14.5,16.86L15.88,15.47L18,17.59L20.12,15.47L21.55,16.9L19.43,19M12,1L21,5V11C21,11.9 20.9,12.78 20.71,13.65C19.9,13.23 19,13 18,13A6,6 0 0,0 12,19C12,20.36 12.45,21.62 13.22,22.62L12,23C6.84,21.74 3,16.55 3,11V5L12,1Z"; -var mdiShieldRemoveOutline = "M19.43,19L21.5,21.11L20.12,22.5L18.03,20.41L15.91,22.53L14.5,21.11L16.61,19L14.5,16.86L15.88,15.47L18,17.59L20.12,15.47L21.55,16.9L19.43,19M21,11C21,11.9 20.9,12.78 20.71,13.65C20.13,13.35 19.5,13.15 18.81,13.05C18.93,12.45 19,11.83 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21L12.31,20.91C12.5,21.53 12.83,22.11 13.22,22.62L12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11Z"; -var mdiShieldSearch = "M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M17.86,19.31C16.23,21.22 14.28,22.45 12,23C9.44,22.39 7.3,20.93 5.58,18.63C3.86,16.34 3,13.8 3,11V5L12,1L21,5V11C21,13.39 20.36,15.61 19.08,17.67L16.17,14.76C16.69,13.97 17,13 17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17C13,17 13.97,16.69 14.76,16.17L17.86,19.31Z"; -var mdiShieldStar = "M12 1L3 5V11C3 16.55 6.84 21.74 12 23C17.16 21.74 21 16.55 21 11V5L12 1M15.08 16L12 14.15L8.93 16L9.74 12.5L7.03 10.16L10.61 9.85L12 6.55L13.39 9.84L16.97 10.15L14.26 12.5L15.08 16Z"; -var mdiShieldStarOutline = "M21 11C21 16.55 17.16 21.74 12 23C6.84 21.74 3 16.55 3 11V5L12 1L21 5V11M12 21C15.75 20 19 15.54 19 11.22V6.3L12 3.18L5 6.3V11.22C5 15.54 8.25 20 12 21M15.05 16L11.97 14.15L8.9 16L9.71 12.5L7 10.16L10.58 9.85L11.97 6.55L13.37 9.84L16.95 10.15L14.23 12.5L15.05 16"; -var mdiShieldSun = "M12 1L3 5V11C3 16.55 6.84 21.74 12 23C17.16 21.74 21 16.55 21 11V5L12 1M12 8.89C13.6 8.89 14.89 10.18 14.89 11.78S13.6 14.67 12 14.67 9.11 13.37 9.11 11.78 10.41 8.89 12 8.89M12 6L13.38 8C12.96 7.82 12.5 7.73 12 7.73S11.05 7.82 10.62 8L12 6M7 8.89L9.4 8.69C9.06 9 8.74 9.34 8.5 9.76C8.25 10.18 8.1 10.62 8 11.08L7 8.89M7 14.67L8.03 12.5C8.11 12.93 8.27 13.38 8.5 13.8C8.75 14.23 9.06 14.59 9.4 14.88L7 14.67M17 8.89L16 11.08C15.9 10.62 15.74 10.18 15.5 9.76C15.26 9.34 14.95 9 14.6 8.68L17 8.89M17 14.67L14.6 14.87C14.94 14.58 15.25 14.22 15.5 13.8C15.74 13.38 15.89 12.93 15.97 12.5L17 14.67M12 17.55L10.61 15.57C11.04 15.72 11.5 15.82 12 15.82C12.5 15.82 12.95 15.72 13.37 15.57L12 17.55Z"; -var mdiShieldSunOutline = "M21 11C21 16.55 17.16 21.74 12 23C6.84 21.74 3 16.55 3 11V5L12 1L21 5V11M12 21C15.75 20 19 15.54 19 11.22V6.3L12 3.18L5 6.3V11.22C5 15.54 8.25 20 12 21M12 8.89C13.6 8.89 14.89 10.18 14.89 11.78S13.6 14.67 12 14.67 9.11 13.37 9.11 11.78 10.41 8.89 12 8.89M12 6L13.38 8C12.96 7.82 12.5 7.73 12 7.73S11.05 7.82 10.62 8L12 6M7 8.89L9.4 8.69C9.06 9 8.74 9.34 8.5 9.76C8.25 10.18 8.1 10.62 8 11.08L7 8.89M7 14.67L8.03 12.5C8.11 12.93 8.27 13.38 8.5 13.8C8.75 14.23 9.06 14.59 9.4 14.88L7 14.67M17 8.89L16 11.08C15.9 10.62 15.74 10.18 15.5 9.76C15.26 9.34 14.95 9 14.6 8.68L17 8.89M17 14.67L14.6 14.87C14.94 14.58 15.25 14.22 15.5 13.8C15.74 13.38 15.89 12.93 15.97 12.5L17 14.67M12 17.55L10.61 15.57C11.04 15.72 11.5 15.82 12 15.82C12.5 15.82 12.95 15.72 13.37 15.57L12 17.55Z"; -var mdiShieldSync = "M18 12A6.41 6.41 0 0 1 20.87 12.67A11.63 11.63 0 0 0 21 11V5L12 1L3 5V11C3 16.55 6.84 21.74 12 23C12.35 22.91 12.7 22.8 13 22.68A6.42 6.42 0 0 1 11.5 18.5A6.5 6.5 0 0 1 18 12M18 14.5V13L15.75 15.25L18 17.5V16A2.5 2.5 0 0 1 20.24 19.62L21.33 20.71A4 4 0 0 0 18 14.5M18 21A2.5 2.5 0 0 1 15.76 17.38L14.67 16.29A4 4 0 0 0 18 22.5V24L20.25 21.75L18 19.5Z"; -var mdiShieldSyncOutline = "M12 21C8.25 20 5 15.54 5 11.22V6.3L12 3.18L19 6.3V12.07A6.45 6.45 0 0 1 20.91 12.67A11.63 11.63 0 0 0 21 11V5L12 1L3 5V11C3 16.55 6.84 21.74 12 23C12.35 22.91 12.7 22.8 13 22.68A6.3 6.3 0 0 1 12 21M18 14.5V13L15.75 15.25L18 17.5V16A2.5 2.5 0 0 1 20.24 19.62L21.33 20.71A4 4 0 0 0 18 14.5M18 21A2.5 2.5 0 0 1 15.76 17.38L14.67 16.29A4 4 0 0 0 18 22.5V24L20.25 21.75L18 19.5Z"; -var mdiShipWheel = "M2,11L4.05,11.1C4.3,8.83 5.5,6.85 7.25,5.56L6.13,3.84C5.86,3.36 6,2.75 6.5,2.47C7,2.2 7.59,2.36 7.87,2.84L8.8,4.66C9.78,4.24 10.86,4 12,4C13.14,4 14.22,4.24 15.2,4.66L16.13,2.84C16.41,2.36 17,2.2 17.5,2.47C18,2.75 18.14,3.36 17.87,3.84L16.75,5.56C18.5,6.85 19.7,8.83 19.95,11.1L22,11A1,1 0 0,1 23,12A1,1 0 0,1 22,13L19.95,12.9C19.7,15.17 18.5,17.15 16.75,18.44L17.87,20.16C18.14,20.64 18,21.25 17.5,21.53C17,21.8 16.41,21.64 16.13,21.16L15.2,19.34C14.22,19.76 13.14,20 12,20C10.86,20 9.78,19.76 8.8,19.34L7.87,21.16C7.59,21.64 7,21.8 6.5,21.53C6,21.25 5.86,20.64 6.13,20.16L7.25,18.44C5.5,17.15 4.3,15.17 4.05,12.9L2,13A1,1 0 0,1 1,12A1,1 0 0,1 2,11M9.07,11.35C9.2,10.74 9.53,10.2 10,9.79L8.34,7.25C7.11,8.19 6.27,9.6 6.05,11.2L9.07,11.35M12,9C12.32,9 12.62,9.05 12.9,9.14L14.28,6.45C13.58,6.16 12.81,6 12,6C11.19,6 10.42,6.16 9.72,6.45L11.1,9.14C11.38,9.05 11.68,9 12,9M14.93,11.35L17.95,11.2C17.73,9.6 16.89,8.19 15.66,7.25L14,9.79C14.47,10.2 14.8,10.74 14.93,11.35M14.93,12.65C14.8,13.26 14.47,13.8 14,14.21L15.66,16.75C16.89,15.81 17.73,14.4 17.95,12.8L14.93,12.65M12,15C11.68,15 11.38,14.95 11.09,14.86L9.72,17.55C10.42,17.84 11.19,18 12,18C12.81,18 13.58,17.84 14.28,17.55L12.91,14.86C12.62,14.95 12.32,15 12,15M9.07,12.65L6.05,12.8C6.27,14.4 7.11,15.81 8.34,16.75L10,14.21C9.53,13.8 9.2,13.26 9.07,12.65Z"; -var mdiShoeBallet = "M12.78 11.97C12.27 8.54 10.86 2 7.53 2S2.8 8.54 2.28 11.97C2.07 13.42 2 14.89 2.16 16.35C2.5 19.39 3.55 20.84 4.27 21.5C4.64 21.83 5.11 22 5.6 22H9.47C9.96 22 10.43 21.83 10.8 21.5C11.5 20.84 12.55 19.39 12.91 16.35C13.08 14.89 13 13.42 12.78 11.97M7.53 4C7.89 3.87 8.59 4.73 9.27 6.31L4.58 10.33C5.41 6.26 6.94 3.79 7.53 4M9.75 13H5.31C5.1 13 4.92 12.92 4.76 12.81L10 8.33C10.29 9.35 10.56 10.5 10.75 11.83C10.84 12.44 10.37 13 9.75 13M21.78 11.97C21.27 8.54 19.86 2 16.53 2C15.04 2 13.94 3.32 13.13 5.08C13.5 6.04 13.84 7.14 14.13 8.37L19.31 12.81C19.15 12.92 18.97 13 18.75 13H14.92C15.04 14.27 15.03 15.45 14.89 16.59C14.62 18.87 14 20.45 13.32 21.53C13.68 21.84 14.13 22 14.6 22H18.47C18.96 22 19.43 21.83 19.8 21.5C20.5 20.84 21.55 19.39 21.91 16.35C22.08 14.89 22 13.42 21.78 11.97M14.8 6.31C15.5 4.73 16.18 3.87 16.53 4C17.13 3.79 18.65 6.26 19.5 10.33L14.8 6.31Z"; -var mdiShoeCleat = "M21 8C20.76 8 20.53 8 20.3 8L20.25 7.97C18.14 7.84 16.38 7.17 15.53 6.23L14 7C13.95 7.1 13.89 7.19 13.84 7.28C14.55 7.89 15 8.65 15 9.5C15 9.83 14.91 10.14 14.79 10.45L12.92 8.58C12.7 8.83 12.47 9.07 12.22 9.29L14.25 11.32C14.04 11.57 13.8 11.79 13.5 12L11.43 9.91C11.14 10.11 10.85 10.28 10.55 10.45L12.58 12.5C12.25 12.63 11.89 12.74 11.5 12.82L9.59 10.91C9.25 11.05 8.91 11.18 8.56 11.29L10.26 13C10.17 13 10.09 13 10 13C8.5 13 7.2 12.54 6.28 11.82C5.46 11.95 4.68 12 4 12C2 12 2 15 2 15V15C2 16.11 2.89 17 4 17H4V18C4 18.55 4.45 19 5 19S6 18.55 6 18V17H7V18C7 18.55 7.45 19 8 19S9 18.55 9 18V17H10V18C10 18.55 10.45 19 11 19S12 18.55 12 18V17H15V18C15 18.55 15.45 19 16 19S17 18.55 17 18V17H18V18C18 18.55 18.45 19 19 19S20 18.55 20 18V17H21C21 17 22 17 22 12.5C22 9 21 8 21 8Z"; -var mdiShoeFormal = "M21.5,9V8H20.5L19.5,9H15L14,8H13L7,12H4A2,2 0 0,0 2,14V16H10L13,15H15V16H21.5V14C21.5,14 22,13 22,11.5C22,10 21.5,9 21.5,9Z"; -var mdiShoeHeel = "M3,18H11.7L17,14H18V18H20V14C20,14 21,12 21,10C21,8 20.5,6 20.5,6H18.5L18,7L10,14H8L3,16V18Z"; -var mdiShoePrint = "M10.74,11.72C11.21,12.95 11.16,14.23 9.75,14.74C6.85,15.81 6.2,13 6.16,12.86L10.74,11.72M5.71,10.91L10.03,9.84C9.84,8.79 10.13,7.74 10.13,6.5C10.13,4.82 8.8,1.53 6.68,2.06C4.26,2.66 3.91,5.35 4,6.65C4.12,7.95 5.64,10.73 5.71,10.91M17.85,19.85C17.82,20 17.16,22.8 14.26,21.74C12.86,21.22 12.8,19.94 13.27,18.71L17.85,19.85M20,13.65C20.1,12.35 19.76,9.65 17.33,9.05C15.22,8.5 13.89,11.81 13.89,13.5C13.89,14.73 14.17,15.78 14,16.83L18.3,17.9C18.38,17.72 19.89,14.94 20,13.65Z"; -var mdiShoeSneaker = "M2 15C2 15 2 12 4 12C4.68 12 5.46 11.95 6.28 11.82C7.2 12.54 8.5 13 10 13H10.25L8.56 11.29C8.91 11.18 9.25 11.05 9.59 10.91L11.5 12.82C11.89 12.74 12.25 12.63 12.58 12.5L10.55 10.45C10.85 10.28 11.14 10.11 11.43 9.91L13.5 12C13.8 11.79 14.04 11.56 14.25 11.32L12.22 9.29C12.46 9.07 12.7 8.83 12.92 8.58L14.79 10.45C14.91 10.14 15 9.83 15 9.5C15 8.65 14.55 7.89 13.84 7.28C13.89 7.19 13.95 7.1 14 7L15.53 6.23C16.38 7.17 18.14 7.84 20.25 7.97L20.3 8H21C21 8 22 9 22 12.5C22 13.07 22 13.57 21.96 14H19C17.9 14 16.58 14.26 15.3 14.5C14.12 14.76 12.9 15 12 15H2M21 17C21 17 21.58 17 21.86 15H19C17 15 14 16 12 16H2.28C2.62 16.6 3.26 17 4 17H21Z"; -var mdiShopping = "M12,13A5,5 0 0,1 7,8H9A3,3 0 0,0 12,11A3,3 0 0,0 15,8H17A5,5 0 0,1 12,13M12,3A3,3 0 0,1 15,6H9A3,3 0 0,1 12,3M19,6H17A5,5 0 0,0 12,1A5,5 0 0,0 7,6H5C3.89,6 3,6.89 3,8V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V8C21,6.89 20.1,6 19,6Z"; -var mdiShoppingMusic = "M12,3A3,3 0 0,0 9,6H15A3,3 0 0,0 12,3M19,6A2,2 0 0,1 21,8V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V8C3,6.89 3.89,6 5,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6H19M9,19L16.5,14L9,10V19Z"; -var mdiShoppingOutline = "M19 6H17C17 3.2 14.8 1 12 1S7 3.2 7 6H5C3.9 6 3 6.9 3 8V20C3 21.1 3.9 22 5 22H19C20.1 22 21 21.1 21 20V8C21 6.9 20.1 6 19 6M12 3C13.7 3 15 4.3 15 6H9C9 4.3 10.3 3 12 3M19 20H5V8H19V20M12 12C10.3 12 9 10.7 9 9H7C7 11.8 9.2 14 12 14S17 11.8 17 9H15C15 10.7 13.7 12 12 12Z"; -var mdiShoppingSearch = "M19 6H17A5 5 0 0 0 7 6H5A2 2 0 0 0 3 8V20A2 2 0 0 0 5 22H12.05A6.5 6.5 0 0 1 9 16.5A6.4 6.4 0 0 1 10.25 12.68A5 5 0 0 1 7 8H9A3 3 0 0 0 12 11H12.06A6.22 6.22 0 0 1 14.06 10.16A3 3 0 0 0 15 8H17A4.88 4.88 0 0 1 16.54 10.09A6.5 6.5 0 0 1 21 13.09V8A2 2 0 0 0 19 6M9 6A3 3 0 0 1 15 6M19.31 18.9A4.5 4.5 0 1 0 17.88 20.32L21 23.39L22.39 22M15.5 19A2.5 2.5 0 1 1 18 16.5A2.5 2.5 0 0 1 15.5 19Z"; -var mdiShore = "M20 12H22V14H20C18.6 14 17.3 13.6 16 13C13.5 14.3 10.5 14.3 8 13C6.7 13.6 5.4 14 4 14H2V12H4C5.4 12 6.8 11.5 8 10.7C10.4 12.4 13.6 12.4 16 10.7C17.2 11.5 18.6 12 20 12M20 6H22V8H20C18.6 8 17.3 7.7 16 7C13.5 8.3 10.5 8.3 8 7C6.7 7.7 5.4 8 4 8H2V6H4C5.4 6 6.8 5.5 8 4.7C10.4 6.4 13.6 6.4 16 4.7C17.2 5.5 18.6 6 20 6M22 20H2V18H22"; -var mdiShovel = "M15.1,1.81L12.27,4.64C11.5,5.42 11.5,6.69 12.27,7.47L13.68,8.88L9.13,13.43L6.31,10.6L4.89,12C-0.06,17 3.5,20.5 3.5,20.5C3.5,20.5 7,24 12,19.09L13.41,17.68L10.61,14.88L15.15,10.34L16.54,11.73C17.32,12.5 18.59,12.5 19.37,11.73L22.2,8.9L15.1,1.81M17.93,10.28L16.55,8.9L15.11,7.46L13.71,6.06L15.12,4.65L19.35,8.88L17.93,10.28Z"; -var mdiShovelOff = "M15.1,1.81L12.27,4.65C11.5,5.43 11.5,6.69 12.27,7.47L13.68,8.89L13,9.62L14.44,11.06L15.17,10.33L16.56,11.72C17.34,12.5 18.61,12.5 19.39,11.72L22.22,8.88L15.1,1.81M17.93,10.28L13.7,6.06L15.11,4.65L19.34,8.88L17.93,10.28M20.7,20.24L19.29,21.65L11.5,13.88L10.5,14.88L13.33,17.69L12,19.09C7,24 3.5,20.5 3.5,20.5C3.5,20.5 -0.06,17 4.89,12L6.31,10.6L9.13,13.43L10.13,12.43L2.35,4.68L3.77,3.26L20.7,20.24Z"; -var mdiShower = "M21,14V15C21,16.91 19.93,18.57 18.35,19.41L19,22H17L16.5,20C16.33,20 16.17,20 16,20H8C7.83,20 7.67,20 7.5,20L7,22H5L5.65,19.41C4.07,18.57 3,16.91 3,15V14H2V12H20V5A1,1 0 0,0 19,4C18.5,4 18.12,4.34 18,4.79C18.63,5.33 19,6.13 19,7H13A3,3 0 0,1 16,4C16.06,4 16.11,4 16.17,4C16.58,2.84 17.69,2 19,2A3,3 0 0,1 22,5V14H21V14M19,14H5V15A3,3 0 0,0 8,18H16A3,3 0 0,0 19,15V14Z"; -var mdiShowerHead = "M20,20A1,1 0 0,1 21,21A1,1 0 0,1 20,22A1,1 0 0,1 19,21A1,1 0 0,1 20,20M16,20A1,1 0 0,1 17,21A1,1 0 0,1 16,22A1,1 0 0,1 15,21A1,1 0 0,1 16,20M12,20A1,1 0 0,1 13,21A1,1 0 0,1 12,22A1,1 0 0,1 11,21A1,1 0 0,1 12,20M8,20A1,1 0 0,1 9,21A1,1 0 0,1 8,22A1,1 0 0,1 7,21A1,1 0 0,1 8,20M4,20A1,1 0 0,1 5,21A1,1 0 0,1 4,22A1,1 0 0,1 3,21A1,1 0 0,1 4,20M6,17A1,1 0 0,1 7,18A1,1 0 0,1 6,19H6A1,1 0 0,1 5,18A1,1 0 0,1 6,17H6M10,17A1,1 0 0,1 11,18A1,1 0 0,1 10,19A1,1 0 0,1 9,18A1,1 0 0,1 10,17M14,17A1,1 0 0,1 15,18A1,1 0 0,1 14,19A1,1 0 0,1 13,18A1,1 0 0,1 14,17M18,17A1,1 0 0,1 19,18A1,1 0 0,1 18,19A1,1 0 0,1 17,18A1,1 0 0,1 18,17M8,14A1,1 0 0,1 9,15A1,1 0 0,1 8,16A1,1 0 0,1 7,15A1,1 0 0,1 8,14M12,14A1,1 0 0,1 13,15A1,1 0 0,1 12,16A1,1 0 0,1 11,15A1,1 0 0,1 12,14M16,14A1,1 0 0,1 17,15A1,1 0 0,1 16,16A1,1 0 0,1 15,15A1,1 0 0,1 16,14M19,12H5V10H19V12M17.92,9H6.08C6.5,6.5 8.5,4.5 11,4.08V2H13V4.08C15.5,4.5 17.5,6.5 17.92,9Z"; -var mdiShredder = "M6,3V7H8V5H16V7H18V3H6M5,8A3,3 0 0,0 2,11V17H5V14H19V17H22V11A3,3 0 0,0 19,8H5M18,10A1,1 0 0,1 19,11A1,1 0 0,1 18,12A1,1 0 0,1 17,11A1,1 0 0,1 18,10M7,16V21H9V16H7M11,16V20H13V16H11M15,16V21H17V16H15Z"; -var mdiShuffle = "M14.83,13.41L13.42,14.82L16.55,17.95L14.5,20H20V14.5L17.96,16.54L14.83,13.41M14.5,4L16.54,6.04L4,18.59L5.41,20L17.96,7.46L20,9.5V4M10.59,9.17L5.41,4L4,5.41L9.17,10.58L10.59,9.17Z"; -var mdiShuffleDisabled = "M16,4.5V7H5V9H16V11.5L19.5,8M16,12.5V15H5V17H16V19.5L19.5,16"; -var mdiShuffleVariant = "M17,3L22.25,7.5L17,12L22.25,16.5L17,21V18H14.26L11.44,15.18L13.56,13.06L15.5,15H17V12L17,9H15.5L6.5,18H2V15H5.26L14.26,6H17V3M2,6H6.5L9.32,8.82L7.2,10.94L5.26,9H2V6Z"; -var mdiShuriken = "M14.5 9.5L12 2L9.5 9.5L2 12L9.5 14.5L12 22L14.5 14.5L22 12L14.5 9.5M12 13.7C11.1 13.7 10.3 13 10.3 12C10.3 11.1 11 10.3 12 10.3C12.9 10.3 13.7 11 13.7 12C13.7 12.9 12.9 13.7 12 13.7Z"; -var mdiSigma = "M18,6H8.83L14.83,12L8.83,18H18V20H6V18L12,12L6,6V4H18V6Z"; -var mdiSigmaLower = "M19,12C19,16.42 15.64,20 11.5,20C7.36,20 4,16.42 4,12C4,7.58 7.36,4 11.5,4H20V6H16.46C18,7.47 19,9.61 19,12M11.5,6C8.46,6 6,8.69 6,12C6,15.31 8.46,18 11.5,18C14.54,18 17,15.31 17,12C17,8.69 14.54,6 11.5,6Z"; -var mdiSignCaution = "M2,3H22V13H18V21H16V13H8V21H6V13H2V3M18.97,11L20,9.97V7.15L16.15,11H18.97M13.32,11L19.32,5H16.5L10.5,11H13.32M7.66,11L13.66,5H10.83L4.83,11H7.66M5.18,5L4,6.18V9L8,5H5.18Z"; -var mdiSignDirection = "M11,12H3.5L6,9.5L3.5,7H11V3L12,2L13,3V7H18L20.5,9.5L18,12H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V12Z"; -var mdiSignDirectionMinus = "M20.5 9.5L18 12H13V22H9A2 2 0 0 1 11 20V12H3.5L6 9.5L3.5 7H11V3L12 2L13 3V7H18M23 18H15V20H23Z"; -var mdiSignDirectionPlus = "M13 20H13.09A5.5 5.5 0 0 0 13.81 22H9A2 2 0 0 1 11 20V12H3.5L6 9.5L3.5 7H11V3L12 2L13 3V7H18L20.5 9.5L18 12H13M18 15V18H15V20H18V23H20V20H23V18H20V15Z"; -var mdiSignDirectionRemove = "M13 20H13.09A5.5 5.5 0 0 0 13.81 22H9A2 2 0 0 1 11 20V12H3.5L6 9.5L3.5 7H11V3L12 2L13 3V7H18L20.5 9.5L18 12H13M21.12 15.46L19 17.59L16.88 15.46L15.46 16.88L17.59 19L15.46 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z"; -var mdiSignPole = "M11 3L12 2L13 3V20C14.11 20 15 20.9 15 22H9C9 20.9 9.9 20 11 20V3Z"; -var mdiSignRealEstate = "M18 8H8C6.9 8 6 8.9 6 10V16C6 17.11 6.9 18 8 18H18C19.11 18 20 17.11 20 16V10C20 8.9 19.11 8 18 8M14 16H8V14H14V16M18 12H8V10H18V12M22 6H4V22H2V2H4V4H22V6Z"; -var mdiSignText = "M11,3L12,2L13,3V5H20A1,1 0 0,1 21,6V16A1,1 0 0,1 20,17H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V17H4A1,1 0 0,1 3,16V6A1,1 0 0,1 4,5H11V3M6,8V10H18V8H6M6,12V14H13V12H6Z"; -var mdiSignal = "M3,21H6V18H3M8,21H11V14H8M13,21H16V9H13M18,21H21V3H18V21Z"; -var mdiSignal2g = "M11,19.5H2V13.5A3,3 0 0,1 5,10.5H8V7.5H2V4.5H8A3,3 0 0,1 11,7.5V10.5A3,3 0 0,1 8,13.5H5V16.5H11M22,10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5"; -var mdiSignal3g = "M11,16.5V14.25C11,13 10,12 8.75,12C10,12 11,11 11,9.75V7.5A3,3 0 0,0 8,4.5H2V7.5H8V10.5H5V13.5H8V16.5H2V19.5H8A3,3 0 0,0 11,16.5M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5Z"; -var mdiSignal4g = "M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5M8,19.5H11V4.5H8V10.5H5V4.5H2V13.5H8V19.5Z"; -var mdiSignal5g = "M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5M10,4.5H3V12L3,13.5H7V16.5H3V19.5H8.5A1.5,1.5 0 0,0 10,18V12A1.5,1.5 0 0,0 8.5,10.5H6V7.5H10V4.5Z"; -var mdiSignalCellular1 = "M19.5,5.5V18.5H17.5V5.5H19.5M12.5,10.5V18.5H10.5V10.5H12.5M21,4H16V20H21V4M14,9H9V20H14V9M7,14H2V20H7V14Z"; -var mdiSignalCellular2 = "M19.5,5.5V18.5H17.5V5.5H19.5M21,4H16V20H21V4M14,9H9V20H14V9M7,14H2V20H7V14Z"; -var mdiSignalCellular3 = "M21,4H16V20H21V4M14,9H9V20H14V9M7,14H2V20H7V14Z"; -var mdiSignalCellularOutline = "M19.5,5.5V18.5H17.5V5.5H19.5M12.5,10.5V18.5H10.5V10.5H12.5M5.5,15.5V18.5H3.5V15.5H5.5M21,4H16V20H21V4M14,9H9V20H14V9M7,14H2V20H7V14Z"; -var mdiSignalDistanceVariant = "M4,6V4A12,12 0 0,1 16,16H14A10,10 0 0,0 4,6M4,10V8A8,8 0 0,1 12,16H10A6,6 0 0,0 4,10M4,12A4,4 0 0,1 8,16H4V12M3,18H19V16L22,19L19,22V20H3V18Z"; -var mdiSignalHspa = "M10.5,10.5H13.5V4.5H16.5V19.5H13.5V13.5H10.5V19.5H7.5V4.5H10.5V10.5Z"; -var mdiSignalHspaPlus = "M19,8V11H22V14H19V17H16V14H13V11H16V8H19M5,10.5H8V4.5H11V19.5H8V13.5H5V19.5H2V4.5H5V10.5Z"; -var mdiSignalOff = "M18,3V16.18L21,19.18V3H18M4.28,5L3,6.27L10.73,14H8V21H11V14.27L13,16.27V21H16V19.27L19.73,23L21,21.72L4.28,5M13,9V11.18L16,14.18V9H13M3,18V21H6V18H3Z"; -var mdiSignalVariant = "M4,6V4H4.1C12.9,4 20,11.1 20,19.9V20H18V19.9C18,12.2 11.8,6 4,6M4,10V8A12,12 0 0,1 16,20H14A10,10 0 0,0 4,10M4,14V12A8,8 0 0,1 12,20H10A6,6 0 0,0 4,14M4,16A4,4 0 0,1 8,20H4V16Z"; -var mdiSignature = "M22,22H2V20H22V22M2.26,16.83L5.09,14L2.26,11.17L3.67,9.76L6.5,12.59L9.33,9.76L10.74,11.17L7.91,14L10.74,16.83L9.33,18.24L6.5,15.41L3.67,18.24L2.26,16.83Z"; -var mdiSignatureFreehand = "M22,22H2V20H22V22M6.2,17.3L5.5,18L4.1,16.6L2.7,18L2,17.3L3.4,15.9L2,14.5L2.7,13.8L4.1,15.2L5.5,13.8L6.2,14.5L4.8,15.9L6.2,17.3M16.22,14.43C16.22,13.85 15.5,13.2 14.06,12.46C12.23,11.54 11,10.79 10.36,10.24C9.71,9.68 9.39,9.06 9.39,8.37C9.39,6.59 10.3,5.12 12.12,3.95C13.94,2.78 15.43,2.19 16.57,2.19C17.31,2.19 17.85,2.32 18.18,2.58C18.5,2.83 18.68,3.27 18.68,3.9C18.68,4.18 18.56,4.42 18.31,4.63C18.07,4.83 17.87,4.93 17.74,4.93C17.63,4.93 17.43,4.83 17.13,4.64L16.55,4.38C16.08,4.38 15.14,4.71 13.71,5.38C12.29,6.04 11.58,6.79 11.58,7.63C11.58,8.14 11.82,8.6 12.32,9C12.82,9.42 13.71,9.93 15,10.53C16.03,11 16.86,11.5 17.5,12.07C18.1,12.61 18.41,13.25 18.41,14C18.41,15.34 17.47,16.41 15.58,17.17C13.7,17.94 11.9,18.32 10.19,18.32C8.75,18.32 8,17.83 8,16.86C8,16.5 8.19,16.27 8.5,16.11C8.83,15.95 9.16,15.87 9.5,15.87L10.25,16L10.97,16.13C11.95,16.13 13,15.97 14.13,15.64C15.26,15.32 15.96,14.91 16.22,14.43Z"; -var mdiSignatureImage = "M22,22H2V20H22V22M6.2,17.3L4.8,15.9L6.2,14.5L5.5,13.8L4.1,15.2L2.7,13.8L2,14.5L3.4,15.9L2,17.3L2.7,18L4.1,16.6L5.5,18L6.2,17.3M20,5H10A2,2 0 0,0 8,7V16A2,2 0 0,0 10,18H20A2,2 0 0,0 22,16V7A2,2 0 0,0 20,5M10,16L12.6,12.7L14.4,14.9L16.8,11.6L20,16H10Z"; -var mdiSignatureText = "M22,22H2V20H22V22M6.2,17.3L4.8,15.9L6.2,14.5L5.5,13.8L4.1,15.2L2.7,13.8L2,14.5L3.4,15.9L2,17.3L2.7,18L4.1,16.6L5.5,18L6.2,17.3M20.5,3L21.7,7.4L20.7,7.7C20.2,6.8 19.8,6 19.3,5.5C18.7,5 18.1,5 17.5,5H15V15.5C15,16 15,16.5 15.3,16.7C15.6,16.9 16.3,16.9 17,16.9V17.9H11V16.9C11.7,16.9 12.3,16.9 12.7,16.7C13,16.5 13,16 13,15.5V5H10.5C9.9,5 9.3,5 8.7,5.4C8.2,5.8 7.7,6.7 7.3,7.6L6.3,7.3L7.5,3H20.5Z"; -var mdiSilo = "M8.5,2C11.85,2 14.6,4.53 14.96,7.78L22,12V14L20,12.8V22H18V11.6L15,9.8V22H13V9H4V22H2V8.5A6.5,6.5 0 0,1 8.5,2M8.5,4C6.54,4 4.87,5.25 4.26,7H12.74C12.13,5.25 10.46,4 8.5,4M6,11H11V13H6V11M6,15H11V17H6V15M6,19H11V21H6V19Z"; -var mdiSilverware = "M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M14.88,11.53L13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z"; -var mdiSilverwareClean = "M15 0L14.38 1.37L13 2L14.38 2.63L15 4L15.63 2.63L17 2L15.63 1.37L15 0M10.5 2L9.41 4.41L7 5.5L9.41 6.59L10.5 9L11.6 6.59L14 5.5L11.6 4.41L10.5 2M18.89 5.14C17.56 5.06 16.04 5.65 14.84 6.84C13.25 8.43 12.75 10.58 13.46 12.11L3.7 21.87L5.11 23.28L12 16.41L18.88 23.29L20.29 21.88L13.41 15L14.88 13.53C16.41 14.24 18.56 13.74 20.15 12.15C22.06 10.24 22.43 7.5 20.96 6.03C20.41 5.5 19.68 5.19 18.89 5.14M3.91 5.5C2.35 7.06 2.35 9.59 3.91 11.16L8.1 15.34L10.93 12.5L3.91 5.5Z"; -var mdiSilverwareFork = "M5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L5.12,21.29Z"; -var mdiSilverwareForkKnife = "M11,9H9V2H7V9H5V2H3V9C3,11.12 4.66,12.84 6.75,12.97V22H9.25V12.97C11.34,12.84 13,11.12 13,9V2H11V9M16,6V14H18.5V22H21V2C18.24,2 16,4.24 16,6Z"; -var mdiSilverwareSpoon = "M14.88,11.53L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z"; -var mdiSilverwareVariant = "M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L13.41,13Z"; -var mdiSim = "M20,4A2,2 0 0,0 18,2H10L4,8V20A2,2 0 0,0 6,22H18C19.11,22 20,21.1 20,20V4M9,19H7V17H9V19M17,19H15V17H17V19M9,15H7V11H9V15M13,19H11V15H13V19M13,13H11V11H13V13M17,15H15V11H17V15Z"; -var mdiSimAlert = "M13 13H11V7H13M13 17H11V15H13M18 2H10L4 8V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.9 19.1 2 18 2Z"; -var mdiSimAlertOutline = "M13 13H11V7H13M13 17H11V15H13M18 4V20H6V8.8L10.8 4H18M18 2H10L4 8V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.9 19.1 2 18 2Z"; -var mdiSimOff = "M20.84 22.73L19.46 21.35C19.1 21.75 18.58 22 18 22H6C4.89 22 4 21.11 4 20V8L5.06 6.95L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M20 4C20 2.9 19.11 2 18 2H10L7.6 4.4L20 16.8V4Z"; -var mdiSimOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L5.06 6.95L4 8V20C4 21.11 4.89 22 6 22H18C18.58 22 19.1 21.75 19.46 21.35L20.84 22.73L22.11 21.46M18 20H6V8.83L6.47 8.36L18 19.89V20M10.83 4H18V14.8L20 16.8V4C20 2.9 19.11 2 18 2H10L7.6 4.4L9 5.81L10.83 4Z"; -var mdiSimOutline = "M18 4V20H6V8.8L10.8 4H18M18 2H10L4 8V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.9 19.1 2 18 2M9.5 19H7.5V17H9.5V19M16.5 19H14.5V17H16.5V19M9.5 15H7.5V11H9.5V15M13 19H11V15H13V19M13 13H11V11H13V13M16.5 15H14.5V11H16.5V15Z"; -var mdiSimpleIcons = "M18.25 17C18.25 17.88 18.07 18.74 17.71 19.53H16.31C17.71 17.15 16.91 14.09 14.53 12.69C13.76 12.24 12.89 12 12 12C9.24 12 7 9.76 7 7C7 4.24 9.24 2 12 2C14.76 2 17 4.24 17 7H15.75C15.75 4.93 14.07 3.25 12 3.25C9.93 3.25 8.25 4.93 8.25 7C8.25 9.07 9.93 10.75 12 10.75C15.45 10.75 18.25 13.56 18.25 17M6.29 19.53C5.93 18.74 5.75 17.87 5.75 17H7C7 17.93 7.25 18.79 7.69 19.53H6.29M18.25 20.75V22H5.75V20.75H9.5V15.75H8.25V14.5H15.75V15.75H14.5V20.75H18.25M13.25 15.75H10.75V20.75H13.25V15.75M14.44 7.07C14.4 8.4 13.33 9.47 12 9.5C10.62 9.46 9.53 8.32 9.57 6.94C9.6 5.61 10.67 4.53 12 4.5C13.38 4.54 14.47 5.68 14.44 7.07M13.25 7C13.25 6.31 12.69 5.75 12 5.75C11.31 5.75 10.75 6.31 10.75 7C10.75 7.69 11.31 8.25 12 8.25C12.69 8.25 13.25 7.69 13.25 7Z"; -var mdiSinaWeibo = "M9.82,13.87C10.89,13.87 11.77,14.74 11.77,15.82A1.95,1.95 0 0,1 9.82,17.77C8.74,17.77 7.87,16.89 7.87,15.82C7.87,14.74 8.74,13.87 9.82,13.87M14.5,3.34L15.18,3.31C18.94,3.31 22,6.37 22,10.13L21.95,10.95L20.76,10.58L20.78,10.13C20.78,7.04 18.27,4.53 15.18,4.53L14.83,4.54L14.5,3.34M15.32,6.23C17.38,6.3 19.05,8 19.08,10.06L17.84,9.68C17.65,8.56 16.78,7.68 15.67,7.5L15.32,6.23M2,15.41C1.97,14.8 2.07,12.64 4.95,9.97C8.35,6.81 9.82,7.05 9.82,7.05C9.82,7.05 13,6.75 11.06,10.46H11.13C11.6,9.96 12.62,9.21 14.69,9C16.77,8.79 16.77,10.5 16.5,11.7C18.38,12.64 19.56,14.03 19.56,15.58C19.56,18.4 15.63,20.69 10.78,20.69H10.65L10.5,20.69C7,20.69 4,19.42 2.71,17.59C2.25,16.97 2,16.29 2,15.58V15.41M9.82,11.92C6.59,11.92 3.97,13.67 3.97,15.82C3.97,17.97 6.59,19.72 9.82,19.72C13.05,19.72 15.67,17.97 15.67,15.82C15.67,13.67 13.05,11.92 9.82,11.92Z"; -var mdiSineWave = "M16.5,21C13.5,21 12.31,16.76 11.05,12.28C10.14,9.04 9,5 7.5,5C4.11,5 4,11.93 4,12H2C2,11.63 2.06,3 7.5,3C10.5,3 11.71,7.25 12.97,11.74C13.83,14.8 15,19 16.5,19C19.94,19 20.03,12.07 20.03,12H22.03C22.03,12.37 21.97,21 16.5,21Z"; -var mdiSitemap = "M9,2V8H11V11H5C3.89,11 3,11.89 3,13V16H1V22H7V16H5V13H11V16H9V22H15V16H13V13H19V16H17V22H23V16H21V13C21,11.89 20.11,11 19,11H13V8H15V2H9Z"; -var mdiSizeL = "M9 7V17H15V15H11V7H9Z"; -var mdiSizeM = "M9 7C7.9 7 7 7.9 7 9V17H9V9H11V16H13V9H15V17H17V9C17 7.9 16.11 7 15 7H9Z"; -var mdiSizeS = "M11 7C9.9 7 9 7.9 9 9V11C9 12.11 9.9 13 11 13H13V15H9V17H13C14.11 17 15 16.11 15 15V13C15 11.9 14.11 11 13 11H11V9H15V7H11Z"; -var mdiSizeXl = "M6 7H8L9 9.5L10 7H12L10 12L12 17H10L9 14.5L8 17H6L8 12L6 7M13 7H15V15H19V17H13V7Z"; -var mdiSizeXs = "M6 7H8L9 9.5L10 7H12L10 12L12 17H10L9 14.5L8 17H6L8 12L6 7M15 7H19V9H15V11H17C18.11 11 19 11.9 19 13V15C19 16.11 18.11 17 17 17H13V15H17V13H15C13.9 13 13 12.11 13 11V9C13 7.9 13.9 7 15 7Z"; -var mdiSizeXxl = "M9 7H11L12 9.5L13 7H15L13 12L15 17H13L12 14.5L11 17H9L11 12L9 7M16 7H18V15H22V17H16V7M2 7H4L5 9.5L6 7H8L6 12L8 17H6L5 14.5L4 17H2L4 12L2 7Z"; -var mdiSizeXxs = "M9 7H11L12 9.5L13 7H15L13 12L15 17H13L12 14.5L11 17H9L11 12L9 7M18 7H22V9H18V11H20C21.11 11 22 11.9 22 13V15C22 16.11 21.11 17 20 17H16V15H20V13H18C16.9 13 16 12.11 16 11V9C16 7.9 16.9 7 18 7M2 7H4L5 9.5L6 7H8L6 12L8 17H6L5 14.5L4 17H2L4 12L2 7Z"; -var mdiSizeXxxl = "M9 7H11L12 9.5L13 7H15L13 12L15 17H13L12 14.5L11 17H9L11 12L9 7M16 7H18V15H22V17H16V7M8 15C8 16.11 7.11 17 6 17H2V15H6V13H4V11H6V9H2V7H6C7.1 7 8 7.89 8 9V10.5C8 11.33 7.33 12 6.5 12C7.33 12 8 12.67 8 13.5V15Z"; -var mdiSkate = "M21.1,16.5C20.36,16.17 19.5,16.5 19.19,17.26C19.06,17.58 18.8,17.87 18.5,18H3V21H17.97C19.68,21 21.22,20 21.88,18.41C22.2,17.67 21.86,16.81 21.1,16.5M19,15C19,15 19,16 17,16C15,16 4,16 4,16V3H11L11.21,4.5H9.24V6H11.43L11.64,7.5H9.24V9H11.86L12,10H14C14,10 19,10 19,15Z"; -var mdiSkateboard = "M9 14.5C9 15.33 8.33 16 7.5 16S6 15.33 6 14.5 6.67 13 7.5 13 9 13.67 9 14.5M16.5 13C15.67 13 15 13.67 15 14.5S15.67 16 16.5 16C17.33 16 18 15.33 18 14.5S17.33 13 16.5 13M21.59 9.19C21.14 8.87 20.5 8.97 20.19 9.41L20.06 9.59C19.88 9.85 19.57 10 19.26 10L4.74 10C4.43 10 4.13 9.85 3.94 9.59L3.81 9.41C3.5 8.97 2.86 8.87 2.41 9.19C1.96 9.5 1.87 10.15 2.19 10.59L2.32 10.77C2.88 11.54 3.79 12 4.74 12H19.26C20.21 12 21.12 11.54 21.68 10.77L21.81 10.59C22.13 10.15 22.04 9.5 21.59 9.19Z"; -var mdiSkewLess = "M17.5,11L15.41,20H10.5L12.59,11H17.5M20,9H11L8,22H17L20,9M4,6L8,2V5H16V7H8V10L4,6Z"; -var mdiSkewMore = "M12.5,11L10.41,20H5.5L7.59,11H12.5M15,9H6L3,22H12L15,9M21,6L17,2V5H9V7H17V10L21,6Z"; -var mdiSki = "M15.3 18.3L17 12.9L18.4 13.3L16.7 18.7L15.3 18.3M17.3 5.2C18.2 5.2 19 4.4 19 3.5S18.3 1.8 17.3 1.8C16.4 1.8 15.6 2.6 15.6 3.5S16.4 5.2 17.3 5.2M21.3 19.8C20.7 20.1 20.1 20.4 19.4 20.5C18.7 20.6 18 20.6 17.3 20.4L11 18.5L13.4 11.7L10.9 8.7L13.8 7.1C13.8 7.1 14.9 10 15 10.3S15.3 10.8 15.6 10.9L19.7 12.1L20.2 10.3L19.3 9.9L19.9 7.8L18.5 7.4L18 9.4L16.8 8.9L15.4 5C15 4.2 14 3.8 13.1 4.2L8.5 6.7C7.6 7.2 7.3 8.3 7.8 9.1C7.9 9.3 10.8 12.3 10.8 12.3L9.1 18L2.3 16L2 17.3L16.9 21.7C18.6 22.2 20.4 22 22 21.1L21.3 19.8Z"; -var mdiSkiCrossCountry = "M15 1.2C16 1.2 16.8 2 16.8 3S16 4.8 15 4.8 13.2 4 13.2 3 14 1.2 15 1.2M11 23V21.7H9.3L11.7 14.9L14 18V21.7H13V23H20V21.7H15.8V16.5L13.3 12L14 9.2L15.1 11H20V9.1H16.4L14.4 5.8C14.1 5.3 13.5 5 12.9 5C12.7 5 12.6 5.1 12.4 5.1L7 6.8V12H8.8V8.3L11 7.7L7.4 21.7H4V23"; -var mdiSkiWater = "M4.2 3.5C4.2 2.7 4.9 1.9 5.8 1.9C6.7 1.9 7.4 2.6 7.4 3.5S6.6 5 5.8 5 4.2 4.3 4.2 3.5M22 3.9L21.5 3L13.5 7.1L14 8L22 3.9M20.8 20.3L21.7 21.2C21.1 21.8 20.5 22.2 19.8 22.5S18.3 23 17.5 23H2V21.7H4.7L6.8 18.2L4.5 15L3.7 7.2C3.7 6.3 4.5 5.5 5.4 5.5C5.7 5.5 6 5.6 6.2 5.7L9.7 8.3L12 7.5L12.8 9.1L9.3 10.6C9.2 10.5 7.7 9.4 6.6 8.5L7 12L12.3 16.5L14 21.7H17.5C18.1 21.7 18.7 21.6 19.3 21.3C19.9 21.1 20.4 20.7 20.8 20.3M7 21.7H12L10.4 17.8L8.1 15.9L9.3 18.4L7 21.7Z"; -var mdiSkipBackward = "M20,5V19L13,12M6,5V19H4V5M13,5V19L6,12"; -var mdiSkipBackwardOutline = "M18,14.17L15.83,12L18,9.83V14.17M20,19V5L13,12M4,19H6V5H4M11,14.17L8.83,12L11,9.83V14.17M13,19V5L6,12"; -var mdiSkipForward = "M4,5V19L11,12M18,5V19H20V5M11,5V19L18,12"; -var mdiSkipForwardOutline = "M6,9.83L8.17,12L6,14.17V9.83M4,5V19L11,12M20,5H18V19H20M13,9.83L15.17,12L13,14.17V9.83M11,5V19L18,12"; -var mdiSkipNext = "M16,18H18V6H16M6,18L14.5,12L6,6V18Z"; -var mdiSkipNextCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8L13,12L8,16M14,8H16V16H14"; -var mdiSkipNextCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M8,8V16L13,12M14,8V16H16V8"; -var mdiSkipNextOutline = "M6,18L14.5,12L6,6M8,9.86L11.03,12L8,14.14M16,6H18V18H16"; -var mdiSkipPrevious = "M6,18V6H8V18H6M9.5,12L18,6V18L9.5,12Z"; -var mdiSkipPreviousCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8H10V16H8M16,8V16L11,12"; -var mdiSkipPreviousCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.59,4 4,7.59 4,12C4,16.41 7.59,20 12,20C16.41,20 20,16.41 20,12C20,7.59 16.41,4 12,4M16,8V16L11,12M10,8V16H8V8"; -var mdiSkipPreviousOutline = "M6,6H8V18H6M9.5,12L18,18V6M16,14.14L12.97,12L16,9.86V14.14Z"; -var mdiSkull = "M12,2A9,9 0 0,0 3,11C3,14.03 4.53,16.82 7,18.47V22H9V19H11V22H13V19H15V22H17V18.46C19.47,16.81 21,14 21,11A9,9 0 0,0 12,2M8,11A2,2 0 0,1 10,13A2,2 0 0,1 8,15A2,2 0 0,1 6,13A2,2 0 0,1 8,11M16,11A2,2 0 0,1 18,13A2,2 0 0,1 16,15A2,2 0 0,1 14,13A2,2 0 0,1 16,11M12,14L13.5,17H10.5L12,14Z"; -var mdiSkullCrossbones = "M15.8,18.5L21.8,20.1L21.4,22L12,19.5L2.6,22L2.1,20.1L8.1,18.5L2,16.9L2.5,15L11.9,17.5L21.3,15L21.8,16.9L15.8,18.5M18,8C18,9.8 17.2,11.3 16,12.4V15H14V13.7L14,13H13V15H11V13H10V13.7L10,15H8V12.4C6.8,11.3 6,9.8 6,8A6,6 0 0,1 12,2A6,6 0 0,1 18,8M11,7.5C11,6.7 10.3,6 9.5,6C8.7,6 8,6.7 8,7.5C8,8.3 8.7,9 9.5,9C10.3,9 11,8.3 11,7.5M13,11L12,9L11,11H13M16,7.5C16,6.7 15.3,6 14.5,6C13.7,6 13,6.7 13,7.5C13,8.3 13.7,9 14.5,9C15.3,9 16,8.3 16,7.5Z"; -var mdiSkullCrossbonesOutline = "M15.8,18.5L21.8,20.1L21.4,22L12,19.5L2.6,22L2.1,20.1L8.1,18.5L2,16.9L2.5,15L11.9,17.5L21.3,15L21.8,16.9L15.8,18.5M9.5,6C8.7,6 8,6.7 8,7.5C8,8.3 8.7,9 9.5,9C10.3,9 11,8.3 11,7.5C11,6.7 10.3,6 9.5,6M14.5,6C13.7,6 13,6.7 13,7.5C13,8.3 13.7,9 14.5,9C15.3,9 16,8.3 16,7.5C16,6.7 15.3,6 14.5,6M13,11L12,9L11,11H13M12,1C8.1,1 5,4.1 5,8C5,9.9 5.8,11.6 7,12.9V16H17V12.9C18.2,11.6 19,9.9 19,8C19,4.1 15.9,1 12,1M15,12V14H14V12H13V14H11V12H10V14H9V12H9C7.8,11.1 7,9.7 7,8C7,5.2 9.2,3 12,3C14.8,3 17,5.2 17,8C17,9.6 16.2,11.1 15,12Z"; -var mdiSkullOutline = "M8,15A2,2 0 0,1 6,13A2,2 0 0,1 8,11A2,2 0 0,1 10,13A2,2 0 0,1 8,15M10.5,17L12,14L13.5,17H10.5M16,15A2,2 0 0,1 14,13A2,2 0 0,1 16,11A2,2 0 0,1 18,13A2,2 0 0,1 16,15M22,11A10,10 0 0,0 12,1A10,10 0 0,0 2,11C2,13.8 3.2,16.3 5,18.1V22H19V18.1C20.8,16.3 22,13.8 22,11M17,20H15V18H13V20H11V18H9V20H7V17.2C5.2,15.7 4,13.5 4,11A8,8 0 0,1 12,3A8,8 0 0,1 20,11C20,13.5 18.8,15.8 17,17.2V20Z"; -var mdiSkullScan = "M2 0C.9 0 0 .9 0 2V6H2V2H6V0H2M18 0V2H22V6H24V2C24 .9 23.1 0 22 0H18M12 3C7.6 3 4 6.6 4 11C4 13.5 5.2 15.8 7 17.2V21H9V18H11V21H13V18H15V21H17V17.2C18.8 15.7 20 13.5 20 11C20 6.6 16.4 3 12 3M8 14C6.9 14 6 13.1 6 12S6.9 10 8 10 10 10.9 10 12 9.1 14 8 14M10.5 16L12 13L13.5 16H10.5M16 14C14.9 14 14 13.1 14 12S14.9 10 16 10 18 10.9 18 12 17.1 14 16 14M0 18V22C0 23.1 .9 24 2 24H6V22H2V18H0M22 18V22H18V24H22C23.1 24 24 23.1 24 22V18H22Z"; -var mdiSkullScanOutline = "M2 0C.9 0 0 .9 0 2V6H2V2H6V0H2M18 0V2H22V6H24V2C24 .9 23.1 0 22 0H18M9.5 13C8.7 13 8 12.3 8 11.5S8.7 10 9.5 10 11 10.7 11 11.5 10.3 13 9.5 13M11 15L12 13L13 15H11M14.5 13C13.7 13 13 12.3 13 11.5S13.7 10 14.5 10 16 10.7 16 11.5 15.3 13 14.5 13M0 18V22C0 23.1 .9 24 2 24H6V22H2V18H0M22 18V22H18V24H22C23.1 24 24 23.1 24 22V18H22M12 3C7.6 3 4 6.6 4 11C4 13 4.8 14.9 6 16.3V21H18V16.3C19.2 14.9 20 13.1 20 11C20 6.6 16.4 3 12 3M16 15.4V19H14V17H13V19H11V17H10V19H8V15.4C6.8 14.3 6 12.7 6 11C6 7.7 8.7 5 12 5S18 7.7 18 11C18 12.8 17.2 14.3 16 15.4Z"; -var mdiSkype = "M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M12.04,17.16C14.91,17.16 16.34,15.78 16.34,13.92C16.34,12.73 15.78,11.46 13.61,10.97L11.62,10.53C10.86,10.36 10,10.13 10,9.42C10,8.7 10.6,8.2 11.7,8.2C13.93,8.2 13.72,9.73 14.83,9.73C15.41,9.73 15.91,9.39 15.91,8.8C15.91,7.43 13.72,6.4 11.86,6.4C9.85,6.4 7.7,7.26 7.7,9.54C7.7,10.64 8.09,11.81 10.25,12.35L12.94,13.03C13.75,13.23 13.95,13.68 13.95,14.1C13.95,14.78 13.27,15.45 12.04,15.45C9.63,15.45 9.96,13.6 8.67,13.6C8.09,13.6 7.67,14 7.67,14.57C7.67,15.68 9,17.16 12.04,17.16Z"; -var mdiSkypeBusiness = "M12.03,16.53C9.37,16.53 8.18,15.22 8.18,14.24C8.18,13.74 8.55,13.38 9.06,13.38C10.2,13.38 9.91,15 12.03,15C13.12,15 13.73,14.43 13.73,13.82C13.73,13.46 13.55,13.06 12.83,12.88L10.46,12.29C8.55,11.81 8.2,10.78 8.2,9.81C8.2,7.79 10.1,7.03 11.88,7.03C13.5,7.03 15.46,7.94 15.46,9.15C15.46,9.67 15,9.97 14.5,9.97C13.5,9.97 13.7,8.62 11.74,8.62C10.77,8.62 10.23,9.06 10.23,9.69C10.23,10.32 11,10.5 11.66,10.68L13.42,11.07C15.34,11.5 15.83,12.62 15.83,13.67C15.83,15.31 14.57,16.53 12.03,16.53M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M8,5A3,3 0 0,0 5,8C5,8.79 5.3,9.5 5.8,10.04C5.1,12.28 5.63,14.82 7.4,16.6C9.18,18.37 11.72,18.9 13.96,18.2C14.5,18.7 15.21,19 16,19A3,3 0 0,0 19,16C19,15.21 18.7,14.5 18.2,13.96C18.9,11.72 18.37,9.18 16.6,7.4C14.82,5.63 12.28,5.1 10.04,5.8C9.5,5.3 8.79,5 8,5Z"; -var mdiSlack = "M6,15A2,2 0 0,1 4,17A2,2 0 0,1 2,15A2,2 0 0,1 4,13H6V15M7,15A2,2 0 0,1 9,13A2,2 0 0,1 11,15V20A2,2 0 0,1 9,22A2,2 0 0,1 7,20V15M9,7A2,2 0 0,1 7,5A2,2 0 0,1 9,3A2,2 0 0,1 11,5V7H9M9,8A2,2 0 0,1 11,10A2,2 0 0,1 9,12H4A2,2 0 0,1 2,10A2,2 0 0,1 4,8H9M17,10A2,2 0 0,1 19,8A2,2 0 0,1 21,10A2,2 0 0,1 19,12H17V10M16,10A2,2 0 0,1 14,12A2,2 0 0,1 12,10V5A2,2 0 0,1 14,3A2,2 0 0,1 16,5V10M14,18A2,2 0 0,1 16,20A2,2 0 0,1 14,22A2,2 0 0,1 12,20V18H14M14,17A2,2 0 0,1 12,15A2,2 0 0,1 14,13H19A2,2 0 0,1 21,15A2,2 0 0,1 19,17H14Z"; -var mdiSlashForward = "M7 21L14.9 3H17L9.1 21H7Z"; -var mdiSlashForwardBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9.3 19H7L14.7 5H17L9.3 19Z"; -var mdiSleep = "M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M15,16H9V14L12.39,10H9V8H15V10L11.62,14H15V16M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z"; -var mdiSleepOff = "M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H9V14L9.79,13.06L2,5.27M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M9.82,8H15V10L13.54,11.72L9.82,8M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z"; -var mdiSlide = "M14.83 15.45C14.47 14.9 14.18 14.39 13.91 13.92C12.74 11.91 11.79 10.55 9 10.13V5.5C9 3.57 7.43 2 5.5 2S2 3.57 2 5.5V22H4V20H7V22H9V12.16C10.76 12.5 11.29 13.39 12.17 14.92C12.46 15.43 12.78 15.97 13.17 16.56C15.41 19.92 17.67 22 22 22V20C18.53 20 16.8 18.4 14.83 15.45M5.5 4C6.33 4 7 4.67 7 5.5V10H4V5.5C4 4.67 4.67 4 5.5 4M4 18V16H7V18H4M7 14H4V12H7V14Z"; -var mdiSlopeDownhill = "M22,19V22H2V13L22,19M19.09,7.5L18.25,10.26L8.13,7.26C8.06,5.66 6.7,4.42 5.1,4.5C3.5,4.57 2.26,5.93 2.34,7.53C2.41,9.13 3.77,10.36 5.37,10.29C6.24,10.25 7.05,9.82 7.57,9.11L17.69,12.11L16.85,14.89L21.67,12.29L19.09,7.5Z"; -var mdiSlopeUphill = "M22,13V22H2V19L22,13M21.68,7.06L16.86,4.46L17.7,7.24L7.58,10.24C6.63,8.95 4.82,8.67 3.53,9.62C2.24,10.57 1.96,12.38 2.91,13.67C3.85,14.97 5.67,15.24 6.96,14.29C7.67,13.78 8.1,12.97 8.14,12.09L18.26,9.09L19.1,11.87L21.68,7.06Z"; -var mdiSlotMachine = "M5 12L7 8V7H4V8H6L4 12M9 12L11 8V7H8V8H10L8 12M13 12L15 8V7H12V8H14L12 12M21 2C19.9 2 19 2.9 19 4C19 4.7 19.4 5.4 20 5.7V17H17V15C17.6 15 18 14.6 18 14V5C18 4.4 17.6 4 17 4H13.2C12.4 2.8 11 2 9.5 2S6.6 2.8 5.8 4H2C1.4 4 1 4.4 1 5V14C1 14.6 1.4 15 2 15V22H17V19H20C21.1 19 22 18.1 22 17V5.7C22.6 5.4 23 4.7 23 4C23 2.9 22.1 2 21 2M13 19H6V17H13V19M16 13H3V6H16V13Z"; -var mdiSlotMachineOutline = "M5 12L7 8V7H4V8H6L4 12M9 12L11 8V7H8V8H10L8 12M13 12L15 8V7H12V8H14L12 12M21 2C19.9 2 19 2.9 19 4C19 4.7 19.4 5.4 20 5.7V17H17V15C17.6 15 18 14.6 18 14V5C18 4.4 17.6 4 17 4H13.2C12.4 2.8 11 2 9.5 2S6.6 2.8 5.8 4H2C1.4 4 1 4.4 1 5V14C1 14.6 1.4 15 2 15V22H17V19H20C21.1 19 22 18.1 22 17V5.7C22.6 5.4 23 4.7 23 4C23 2.9 22.1 2 21 2M3 6H16V13H3V6M15 20H4V15H15V20M13 19H6V17H13V19Z"; -var mdiSmartCard = "M2 3H22A2.07 2.07 0 0 1 24 5V19A2.07 2.07 0 0 1 22 21H2A2.07 2.07 0 0 1 0 19V5A2.07 2.07 0 0 1 2 3M8 13.91C6 13.91 2 15 2 17V18H14V17C14 15 10 13.91 8 13.91M8 6A3 3 0 1 0 11 9A3 3 0 0 0 8 6M17 10V13H21V10H17"; -var mdiSmartCardOutline = "M22 3H2A2.07 2.07 0 0 0 0 5V19A2.07 2.07 0 0 0 2 21H22A2.07 2.07 0 0 0 24 19V5A2.07 2.07 0 0 0 22 3M22 19H2V5H22M14 17V15.75C14 14.09 10.66 13.25 9 13.25S4 14.09 4 15.75V17H14M9 7A2.5 2.5 0 1 0 11.5 9.5A2.5 2.5 0 0 0 9 7M15 10V13H19V10H15"; -var mdiSmartCardReader = "M21 4A2.07 2.07 0 0 0 19 2H5A2.07 2.07 0 0 0 3 4V18H21M8.25 16H7V6H8.25C9.91 6 10.75 9.34 10.75 11S9.91 16 8.25 16M14.5 13.5A2.5 2.5 0 1 1 17 11A2.5 2.5 0 0 1 14.5 13.5M23 21V22H1V21A2 2 0 0 1 3 19H21A2 2 0 0 1 23 21Z"; -var mdiSmartCardReaderOutline = "M14.5 8.5A2.5 2.5 0 1 0 17 11A2.5 2.5 0 0 0 14.5 8.5M8.25 6H7V16H8.25C9.91 16 10.75 12.66 10.75 11S9.91 6 8.25 6M19 2H5A2.07 2.07 0 0 0 3 4V18H5V4H19V18H21V4A2.07 2.07 0 0 0 19 2M23 22H1V21A2 2 0 0 1 3 19H21A2 2 0 0 1 23 21Z"; -var mdiSmog = "M12,2C10.08,2 8.5,3.35 8.09,5.15C7.45,4.44 6.53,4 5.5,4A3.5,3.5 0 0,0 2,7.5H2A3.5,3.5 0 0,0 5.5,11H6.68V12H10.72V11H13.28V12H17.32V11H18.5A3.5,3.5 0 0,0 22,7.5H22A3.5,3.5 0 0,0 18.5,4H18.5C17.47,4 16.55,4.44 15.91,5.15C15.5,3.35 13.92,2 12,2M7.2,14L6.4,22H11L10.2,14H7.2M13.8,14L13,22H17.6L16.8,14H13.8Z"; -var mdiSmokeDetector = "M12,18A6,6 0 0,0 18,12C18,8.68 15.31,6 12,6C8.68,6 6,8.68 6,12A6,6 0 0,0 12,18M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12Z"; -var mdiSmoking = "M2,16H17V19H2V16M20.5,16H22V19H20.5V16M18,16H19.5V19H18V16M18.85,7.73C19.47,7.12 19.85,6.28 19.85,5.35C19.85,3.5 18.35,2 16.5,2V3.5C17.5,3.5 18.35,4.33 18.35,5.35C18.35,6.37 17.5,7.2 16.5,7.2V8.7C18.74,8.7 20.5,10.53 20.5,12.77V15H22V12.76C22,10.54 20.72,8.62 18.85,7.73M16.03,10.2H14.5C13.5,10.2 12.65,9.22 12.65,8.2C12.65,7.18 13.5,6.45 14.5,6.45V4.95C12.65,4.95 11.15,6.45 11.15,8.3A3.35,3.35 0 0,0 14.5,11.65H16.03C17.08,11.65 18,12.39 18,13.7V15H19.5V13.36C19.5,11.55 17.9,10.2 16.03,10.2Z"; -var mdiSmokingOff = "M2,6L9,13H2V16H12L19,23L20.25,21.75L3.25,4.75L2,6M20.5,13H22V16H20.5V13M18,13H19.5V16H18V13M18.85,4.88C19.47,4.27 19.85,3.43 19.85,2.5H18.35C18.35,3.5 17.5,4.35 16.5,4.35V5.85C18.74,5.85 20.5,7.68 20.5,9.92V12H22V9.92C22,7.69 20.72,5.77 18.85,4.88M14.5,8.7H16.03C17.08,8.7 18,9.44 18,10.75V12H19.5V10.41C19.5,8.61 17.9,7.25 16.03,7.25H14.5C13.5,7.25 12.65,6.27 12.65,5.25C12.65,4.23 13.5,3.5 14.5,3.5V2A3.35,3.35 0 0,0 11.15,5.35A3.35,3.35 0 0,0 14.5,8.7M17,15.93V13H14.07L17,15.93Z"; -var mdiSmokingPipe = "M16 13C14.89 13 14 13.89 14 15V18H13C12 18 11 17.92 10.3 17.23L6.53 13.47C5.6 12.53 4.33 12 3 12H2V14H3C3.8 14 4.56 14.32 5.12 14.88L8.89 18.65C11.72 21.5 13 22 16 22H18C20.21 22 22 20.21 22 18V15C22 13.89 21.11 13 20 13H16M14 7.2H12.5C11.45 7.12 10.65 6.25 10.65 5.2C10.67 4.22 11.5 3.43 12.46 3.45L12.5 3.45V2C10.65 2 9.15 3.5 9.15 5.35S10.65 8.7 12.5 8.7H14C15.07 8.66 15.96 9.5 16 10.56C16 10.61 16 10.65 16 10.7V12H17.5V10.36C17.42 8.53 15.88 7.12 14.05 7.2L14 7.2M20 9.76V12H18.5V9.77L18.5 9.7C18.5 7.5 16.71 5.7 14.5 5.7V4.2H14.5C15.5 4.2 16.35 3.37 16.35 2.35C16.35 2.23 16.34 2.11 16.32 2H17.79C17.89 3 17.58 4 16.82 4.73H16.85C18.78 5.66 20 7.62 20 9.76Z"; -var mdiSmokingPipeOff = "M20.84 22.73L19.71 21.6C19.19 21.85 18.62 22 18 22H16C13 22 11.72 21.5 8.89 18.65L5.12 14.88C4.56 14.32 3.8 14 3 14H2V12H3C4.33 12 5.6 12.53 6.53 13.47L10.3 17.23C11 17.92 12 18 13 18H14V15.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M21.93 18.73C21.97 18.5 22 18.25 22 18V15C22 13.89 21.11 13 20 13H16.2L21.93 18.73M18.5 9.7L18.5 9.77V12H20V9.76C20 7.62 18.78 5.66 16.85 4.73H16.82C17.58 4 17.9 3 17.8 2H16.32C16.34 2.11 16.35 2.23 16.35 2.35C16.35 3.37 15.5 4.2 14.5 4.2H14.5V5.7C16.71 5.7 18.5 7.5 18.5 9.7M11.83 8.63C12.05 8.68 12.27 8.7 12.5 8.7H14C15.07 8.66 15.96 9.5 16 10.56C16 10.61 16 10.65 16 10.7V12H17.5V10.36C17.42 8.53 15.88 7.12 14.05 7.2L14 7.2H12.5C11.45 7.12 10.65 6.25 10.65 5.2C10.67 4.22 11.5 3.43 12.46 3.45L12.5 3.45V2C10.65 2 9.15 3.5 9.15 5.35C9.15 5.58 9.17 5.8 9.22 6L11.83 8.63Z"; -var mdiSnail = "M20.31 8.03L21.24 4.95C21.67 4.85 22 4.47 22 4C22 3.45 21.55 3 21 3S20 3.45 20 4C20 4.26 20.11 4.5 20.27 4.68L19.5 7.26L18.73 4.68C18.89 4.5 19 4.26 19 4C19 3.45 18.55 3 18 3S17 3.45 17 4C17 4.47 17.33 4.85 17.76 4.95L18.69 8.03C17.73 8.18 17 9 17 10V12.25C15.65 9.16 12.63 7 9.11 7C5.19 7 2 10.26 2 14.26C2 16.1 2.82 17.75 4.1 18.85L2.88 19C2.38 19.06 2 19.5 2 20C2 20.55 2.45 21 3 21L19.12 21C20.16 21 21 20.16 21 19.12V11.72C21.6 11.38 22 10.74 22 10C22 9 21.27 8.18 20.31 8.03M15.6 17.41L12.07 17.86C12.5 17.1 12.8 16.21 12.8 15.26C12.8 12.94 10.95 11.06 8.67 11.06C8.14 11.06 7.62 11.18 7.14 11.41C6.65 11.66 6.44 12.26 6.69 12.75C6.93 13.25 7.53 13.45 8.03 13.21C8.23 13.11 8.45 13.06 8.67 13.06C9.85 13.06 10.8 14.04 10.8 15.26C10.8 16.92 9.5 18.27 7.89 18.27C5.75 18.27 4 16.47 4 14.26C4 11.36 6.29 9 9.11 9C12.77 9 15.75 12.06 15.75 15.82C15.75 16.36 15.69 16.89 15.6 17.41Z"; -var mdiSnake = "M19.5 17H18C19.1 17 20 16.1 20 15S19.1 13 18 13V9C18 8 18 7 16.92 6.14C16.97 5.93 17 5.72 17 5.5C17 3.57 15 2 12.5 2C10.24 2 8.38 3.31 8.07 5H6L3.71 2.79L3 3.5L5 5.5L3 7.5L3.71 8.21L6 6H8.07C8.38 7.69 10.24 9 12.5 9C13 9 13.5 8.92 13.93 8.8C13.97 8.87 14 8.94 14 9V13H8C6.9 13 6 13.9 6 15S6.9 17 8 17H6.5C5.12 17 4 18.12 4 19.5C4 19.67 4 19.84 4.05 20H4C2.9 20 2 20.9 2 22H19.5C20.88 22 22 20.88 22 19.5S20.88 17 19.5 17M12 5C11.45 5 11 4.55 11 4S11.45 3 12 3 13 3.45 13 4 12.55 5 12 5Z"; -var mdiSnapchat = "M21.93 16.56C21.79 16.18 21.5 16 21.22 15.81C21.17 15.78 21.11 15.75 21.07 15.73C21 15.68 20.89 15.64 20.8 15.59C19.86 15.09 19.12 14.46 18.61 13.72C18.47 13.5 18.35 13.29 18.24 13.06C18.2 12.93 18.2 12.86 18.23 12.8C18.26 12.75 18.3 12.7 18.35 12.67C18.5 12.56 18.68 12.46 18.79 12.38C19 12.25 19.15 12.15 19.25 12.08C19.64 11.81 19.91 11.5 20.08 11.2C20.32 10.75 20.35 10.22 20.16 9.75C19.91 9.08 19.27 8.66 18.5 8.66C18.34 8.66 18.18 8.68 18 8.71C18 8.72 17.94 8.73 17.9 8.74C17.9 8.28 17.89 7.8 17.85 7.32C17.71 5.64 17.12 4.76 16.5 4.06C16.11 3.62 15.65 3.24 15.14 2.95C14.21 2.42 13.15 2.15 12 2.15S9.8 2.42 8.87 2.95C8.35 3.24 7.89 3.62 7.5 4.06C6.88 4.76 6.3 5.64 6.15 7.32C6.11 7.8 6.1 8.28 6.11 8.74C6.06 8.73 6 8.72 6 8.71C5.82 8.68 5.66 8.66 5.5 8.66C4.73 8.66 4.09 9.08 3.84 9.75C3.65 10.22 3.68 10.75 3.92 11.2C4.09 11.5 4.36 11.81 4.75 12.08C4.85 12.15 5 12.25 5.21 12.39L5.63 12.66C5.69 12.7 5.73 12.75 5.77 12.8C5.8 12.87 5.8 12.94 5.75 13.07C5.65 13.3 5.53 13.5 5.39 13.72C4.89 14.45 4.18 15.07 3.27 15.56C2.78 15.82 2.28 16 2.07 16.56C1.91 17 2 17.5 2.42 17.91C2.57 18.06 2.74 18.19 2.93 18.29C3.33 18.5 3.75 18.68 4.18 18.79C4.27 18.82 4.36 18.85 4.43 18.91C4.58 19.03 4.56 19.23 4.76 19.5C4.86 19.66 5 19.79 5.13 19.89C5.54 20.18 6 20.19 6.5 20.21C6.94 20.23 7.44 20.25 8 20.44C8.26 20.5 8.5 20.67 8.79 20.85C9.5 21.27 10.42 21.85 12 21.85C13.57 21.85 14.5 21.27 15.22 20.84C15.5 20.67 15.75 20.5 16 20.44C16.55 20.25 17.06 20.23 17.5 20.21C18 20.2 18.46 20.18 18.87 19.89C19.04 19.77 19.18 19.61 19.29 19.43C19.43 19.19 19.43 19 19.56 18.91C19.63 18.86 19.71 18.82 19.8 18.8C20.24 18.68 20.66 18.5 21.06 18.29C21.27 18.18 21.45 18.04 21.6 17.87L21.61 17.87C22 17.46 22.08 17 21.93 16.56M20.53 17.31C19.67 17.78 19.1 17.73 18.66 18C18.5 18.12 18.45 18.28 18.42 18.44C18.41 18.5 18.4 18.58 18.39 18.64C18.37 18.78 18.34 18.9 18.24 18.97C17.9 19.2 16.91 18.95 15.63 19.37C14.57 19.72 13.9 20.73 12 20.73C10.1 20.73 9.45 19.73 8.37 19.37C7.1 18.95 6.1 19.2 5.77 18.97C5.5 18.78 5.72 18.26 5.34 18C4.9 17.73 4.33 17.78 3.5 17.31C3.19 17.15 3.14 17 3.18 16.93C3.22 16.84 3.34 16.77 3.42 16.73C5.07 15.94 6 14.91 6.47 14.1C6.91 13.38 7 12.83 7.03 12.75C7.06 12.54 7.09 12.38 6.86 12.17C6.64 11.96 5.66 11.36 5.39 11.17C4.93 10.85 4.74 10.54 4.88 10.15L4.88 10.15V10.15C5 9.88 5.23 9.78 5.5 9.78C5.58 9.78 5.66 9.79 5.74 9.81C6.24 9.91 6.72 10.16 7 10.23C7.03 10.24 7.06 10.24 7.1 10.24C7.19 10.24 7.24 10.21 7.27 10.15C7.28 10.11 7.29 10.06 7.29 10C7.25 9.46 7.18 8.41 7.26 7.42C7.3 7 7.37 6.64 7.46 6.33C7.66 5.65 8 5.2 8.34 4.79C8.59 4.5 9.75 3.27 12 3.27C13.85 3.27 14.96 4.11 15.44 4.56C15.54 4.66 15.62 4.74 15.66 4.79C16.04 5.23 16.38 5.71 16.58 6.47C16.65 6.74 16.71 7.06 16.74 7.42C16.82 8.4 16.75 9.46 16.71 10C16.71 10.04 16.71 10.08 16.72 10.11C16.73 10.2 16.79 10.24 16.9 10.24C16.94 10.24 16.97 10.24 17 10.23C17.28 10.16 17.76 9.91 18.26 9.8C18.34 9.79 18.42 9.78 18.5 9.78C18.75 9.78 19 9.87 19.1 10.1L19.11 10.14L19.12 10.14L19.12 10.15C19.27 10.53 19.07 10.85 18.62 11.16C18.35 11.35 17.36 11.96 17.14 12.16C16.91 12.38 16.94 12.54 16.97 12.75C17 12.85 17.18 13.8 18.08 14.86C18.63 15.5 19.42 16.17 20.58 16.73C20.65 16.76 20.74 16.81 20.79 16.87C20.82 16.92 20.84 16.96 20.83 17C20.82 17.1 20.73 17.2 20.53 17.31Z"; -var mdiSnowboard = "M15.4 5.4C15.4 4.3 16.3 3.4 17.4 3.4C18.5 3.4 19.4 4.3 19.4 5.4C19.4 6.5 18.5 7.4 17.4 7.4C16.3 7.4 15.4 6.5 15.4 5.4M22 19.2C21.4 19.8 20.8 20.2 20.1 20.5C19.4 20.8 18.6 21 17.8 21H6.2C5.4 21 4.6 20.8 3.9 20.5C3.2 20.2 2.6 19.8 2 19.2L2.9 18.3C3.3 18.7 3.8 19.1 4.4 19.3C4.9 19.6 5.4 19.7 5.9 19.7L9.7 16L8.5 12.5C8.3 11.9 8.6 11.4 9.1 11L11 9H6V7H14C14.5 7 14.7 7.1 15 7.3L17.3 9.5C18.3 10.5 19.5 11 20.9 11L21 13.1C19.1 13.1 17.4 12.4 15.9 11L15.2 10.3L12.9 12.7L15 15V19.7H17.8C18.4 19.7 19 19.6 19.6 19.3C20.2 19.1 20.7 18.7 21.1 18.3L22 19.2M8.8 19.7H13V15.8L11.7 14.6V16.8L8.8 19.7Z"; -var mdiSnowflake = "M20.79,13.95L18.46,14.57L16.46,13.44V10.56L18.46,9.43L20.79,10.05L21.31,8.12L19.54,7.65L20,5.88L18.07,5.36L17.45,7.69L15.45,8.82L13,7.38V5.12L14.71,3.41L13.29,2L12,3.29L10.71,2L9.29,3.41L11,5.12V7.38L8.5,8.82L6.5,7.69L5.92,5.36L4,5.88L4.47,7.65L2.7,8.12L3.22,10.05L5.55,9.43L7.55,10.56V13.45L5.55,14.58L3.22,13.96L2.7,15.89L4.47,16.36L4,18.12L5.93,18.64L6.55,16.31L8.55,15.18L11,16.62V18.88L9.29,20.59L10.71,22L12,20.71L13.29,22L14.7,20.59L13,18.88V16.62L15.5,15.17L17.5,16.3L18.12,18.63L20,18.12L19.53,16.35L21.3,15.88L20.79,13.95M9.5,10.56L12,9.11L14.5,10.56V13.44L12,14.89L9.5,13.44V10.56Z"; -var mdiSnowflakeAlert = "M16.46,9.41L13,7.38V5.12L14.71,3.41L13.29,2L12,3.29L10.71,2L9.29,3.41L11,5.12V7.38L8.5,8.82L6.5,7.69L5.92,5.36L4,5.88L4.47,7.65L2.7,8.12L3.22,10.05L5.55,9.43L7.55,10.56V13.45L5.55,14.58L3.22,13.96L2.7,15.89L4.47,16.36L4,18.12L5.93,18.64L6.55,16.31L8.55,15.18L11,16.62V18.88L9.29,20.59L10.71,22L12,20.71L13.29,22L14.7,20.59L13,18.88V16.62L16.46,14.61M9.5,10.56L12,9.11L14.5,10.56V13.44L12,14.89L9.5,13.44M19,13V7H21V13H19M19,17V15H21V17H19Z"; -var mdiSnowflakeMelt = "M8 17.85C8 19.04 7.11 20 6 20S4 19.04 4 17.85C4 16.42 6 14 6 14S8 16.42 8 17.85M16.46 12V10.56L18.46 9.43L20.79 10.05L21.31 8.12L19.54 7.65L20 5.88L18.07 5.36L17.45 7.69L15.45 8.82L13 7.38V5.12L14.71 3.41L13.29 2L12 3.29L10.71 2L9.29 3.41L11 5.12V7.38L8.5 8.82L6.5 7.69L5.92 5.36L4 5.88L4.47 7.65L2.7 8.12L3.22 10.05L5.55 9.43L7.55 10.56V12H2V13H22V12H16.46M9.5 12V10.56L12 9.11L14.5 10.56V12H9.5M20 17.85C20 19.04 19.11 20 18 20S16 19.04 16 17.85C16 16.42 18 14 18 14S20 16.42 20 17.85M14 20.85C14 22.04 13.11 23 12 23S10 22.04 10 20.85C10 19.42 12 17 12 17S14 19.42 14 20.85Z"; -var mdiSnowflakeOff = "M11 5.12L9.29 3.41L10.71 2L12 3.29L13.29 2L14.71 3.41L13 5.12V7.38L15.45 8.82L17.45 7.69L18.07 5.36L20 5.88L19.54 7.65L21.31 8.12L20.79 10.05L18.46 9.43L16.46 10.56V13.26L14.5 11.3V10.56L12.74 9.54L10.73 7.53L11 7.38V5.12M18.46 14.57L16.87 13.67L19.55 16.35L21.3 15.88L20.79 13.95L18.46 14.57M13 16.62V18.88L14.7 20.59L13.29 22L12 20.71L10.71 22L9.29 20.59L11 18.88V16.62L8.55 15.18L6.55 16.31L5.93 18.64L4 18.12L4.47 16.36L2.7 15.89L3.22 13.96L5.55 14.58L7.55 13.45V10.56L5.55 9.43L3.22 10.05L2.7 8.12L4.47 7.65L4 5.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73L14.1 16L13 16.62M12 14.89L12.63 14.5L9.5 11.39V13.44L12 14.89Z"; -var mdiSnowflakeVariant = "M14.25,12L16.27,11H23L22,9H18.03L20.42,5.83L19.43,3.83L15.37,9.2L13.35,10.21L13.75,8L17.83,2.62L15.64,2.22L12,7L8.4,2.2L6.2,2.6L10.26,8L10.66,10.21L8.82,9.29L8.66,9.21L4.6,3.8L3.6,5.8L6,9H2L1,11H7.77L9.75,12L7.73,13H1L2,15H5.97L3.58,18.17L4.57,20.17L8.63,14.8L10.65,13.79L10.25,16L6.17,21.38L8.36,21.79L12,17L15.6,21.8L17.8,21.4L13.74,16L13.34,13.79L15.34,14.79L19.4,20.2L20.4,18.2L18,15H22L23,13H16.23"; -var mdiSnowman = "M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.5 7.65,14.17 8.69,13.25C8.26,12.61 8,11.83 8,11C8,10.86 8,10.73 8,10.59L5.04,8.87L4.83,8.71L2.29,9.39L2.03,8.43L4.24,7.84L2.26,6.69L2.76,5.82L4.74,6.97L4.15,4.75L5.11,4.5L5.8,7.04L6.04,7.14L8.73,8.69C9.11,8.15 9.62,7.71 10.22,7.42C9.5,6.87 9,6 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6 14.5,6.87 13.78,7.42C14.38,7.71 14.89,8.15 15.27,8.69L17.96,7.14L18.2,7.04L18.89,4.5L19.85,4.75L19.26,6.97L21.24,5.82L21.74,6.69L19.76,7.84L21.97,8.43L21.71,9.39L19.17,8.71L18.96,8.87L16,10.59V11C16,11.83 15.74,12.61 15.31,13.25C16.35,14.17 17,15.5 17,17Z"; -var mdiSoccer = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,3C13.76,3 15.4,3.53 16.78,4.41L16.5,5H13L12,5L10.28,4.16L10.63,3.13C11.08,3.05 11.53,3 12,3M9.53,3.38L9.19,4.41L6.63,5.69L5.38,5.94C6.5,4.73 7.92,3.84 9.53,3.38M13,6H16L18.69,9.59L17.44,12.16L14.81,12.78L11.53,8.94L13,6M6.16,6.66L7,10L5.78,13.06L3.22,13.94C3.08,13.31 3,12.67 3,12C3,10.1 3.59,8.36 4.59,6.91L6.16,6.66M20.56,9.22C20.85,10.09 21,11.03 21,12C21,13.44 20.63,14.79 20.03,16H19L18.16,12.66L19.66,9.66L20.56,9.22M8,10H11L13.81,13.28L12,16L8.84,16.78L6.53,13.69L8,10M12,17L15,19L14.13,20.72C13.44,20.88 12.73,21 12,21C10.25,21 8.63,20.5 7.25,19.63L8.41,17.91L12,17M19,17H19.5C18.5,18.5 17,19.67 15.31,20.34L16,19L19,17Z"; -var mdiSoccerField = "M4,4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4H4M4,6H11V8.13C9.24,8.59 8,10.18 8,12C8,13.82 9.24,15.41 11,15.87V18H4V16H7V8H4V6M13,6H20V8H17V16H20V18H13V15.87C14.76,15.41 16,13.82 16,12C16,10.18 14.76,8.59 13,8.13V6M4,10H5V14H4V10M19,10H20V14H19V10M13,10.27C13.62,10.63 14,11.29 14,12C14,12.71 13.62,13.37 13,13.73V10.27M11,10.27V13.73C10.38,13.37 10,12.71 10,12C10,11.29 10.38,10.63 11,10.27Z"; -var mdiSocialDistance2Meters = "M6 6C7.1 6 8 5.1 8 4S7.1 2 6 2 4 2.9 4 4 4.9 6 6 6M10 9.43C10 8.62 9.5 7.9 8.78 7.58C7.93 7.21 7 7 6 7S4.07 7.21 3.22 7.58C2.5 7.9 2 8.62 2 9.43V10H10V9.43M18 6C19.1 6 20 5.1 20 4S19.1 2 18 2 16 2.9 16 4 16.9 6 18 6M22 9.43C22 8.62 21.5 7.9 20.78 7.58C19.93 7.21 19 7 18 7S16.07 7.21 15.22 7.58C14.5 7.9 14 8.62 14 9.43V10H22V9.43M19 17V15L5 15V17L2 14L5 11V13L19 13V11L22 14L19 17M9 20.5V21H11V22H8V20.5C8 19.95 8.45 19.5 9 19.5H10V19H8V18H10C10.55 18 11 18.45 11 19V19.5C11 20.05 10.55 20.5 10 20.5H9M16 19V22H15V19H14.5V21H13.5V19H13V22H12V19C12 18.45 12.45 18 13 18H15C15.55 18 16 18.45 16 19Z"; -var mdiSocialDistance6Feet = "M6 6C7.1 6 8 5.1 8 4S7.1 2 6 2 4 2.9 4 4 4.9 6 6 6M10 9.43C10 8.62 9.5 7.9 8.78 7.58C7.93 7.21 7 7 6 7S4.07 7.21 3.22 7.58C2.5 7.9 2 8.62 2 9.43V10H10V9.43M18 6C19.1 6 20 5.1 20 4S19.1 2 18 2 16 2.9 16 4 16.9 6 18 6M22 9.43C22 8.62 21.5 7.9 20.78 7.58C19.93 7.21 19 7 18 7S16.07 7.21 15.22 7.58C14.5 7.9 14 8.62 14 9.43V10H22V9.43M19 17V15H5V17L2 14L5 11V13H19V11L22 14L19 17M10 19V18H7.5C7.22 18 7 18.22 7 18.5V21.5C7 21.78 7.22 22 7.5 22H9.5C9.78 22 10 21.78 10 21.5V20C10 19.72 9.78 19.5 9.5 19.5H8V19H10M9 20.5V21H8V20.5H9M17.5 19H16.5V22H15.5V19H14.5V18H17.5V19M12.5 19V19.5H13.5V20.5H12.5V22H11.5V18H14V19H12.5Z"; -var mdiSofa = "M12.5 7C12.5 5.89 13.39 5 14.5 5H18C19.1 5 20 5.9 20 7V9.16C18.84 9.57 18 10.67 18 11.97V14H12.5V7M6 11.96V14H11.5V7C11.5 5.89 10.61 5 9.5 5H6C4.9 5 4 5.9 4 7V9.15C5.16 9.56 6 10.67 6 11.96M20.66 10.03C19.68 10.19 19 11.12 19 12.12V15H5V12C5 10.9 4.11 10 3 10S1 10.9 1 12V17C1 18.1 1.9 19 3 19V21H5V19H19V21H21V19C22.1 19 23 18.1 23 17V12C23 10.79 21.91 9.82 20.66 10.03Z"; -var mdiSofaOutline = "M21 9V7C21 5.35 19.65 4 18 4H14C13.23 4 12.53 4.3 12 4.78C11.47 4.3 10.77 4 10 4H6C4.35 4 3 5.35 3 7V9C1.35 9 0 10.35 0 12V17C0 18.65 1.35 20 3 20V22H5V20H19V22H21V20C22.65 20 24 18.65 24 17V12C24 10.35 22.65 9 21 9M14 6H18C18.55 6 19 6.45 19 7V9.78C18.39 10.33 18 11.12 18 12V14H13V7C13 6.45 13.45 6 14 6M5 7C5 6.45 5.45 6 6 6H10C10.55 6 11 6.45 11 7V14H6V12C6 11.12 5.61 10.33 5 9.78V7M22 17C22 17.55 21.55 18 21 18H3C2.45 18 2 17.55 2 17V12C2 11.45 2.45 11 3 11S4 11.45 4 12V16H20V12C20 11.45 20.45 11 21 11S22 11.45 22 12V17Z"; -var mdiSofaSingle = "M5 9.15V7C5 5.9 5.9 5 7 5H17C18.1 5 19 5.9 19 7V9.16C17.84 9.57 17 10.67 17 11.97V14H7V11.96C7 10.67 6.16 9.56 5 9.15M20 10C18.9 10 18 10.9 18 12V15H6V12C6 10.9 5.11 10 4 10S2 10.9 2 12V17C2 18.1 2.9 19 4 19V21H6V19H18V21H20V19C21.1 19 22 18.1 22 17V12C22 10.9 21.1 10 20 10Z"; -var mdiSofaSingleOutline = "M19 9V7C19 5.35 17.65 4 16 4H8C6.35 4 5 5.35 5 7V9C3.35 9 2 10.35 2 12V17C2 18.65 3.35 20 5 20V22H7V20H17V22H19V20C20.65 20 22 18.65 22 17V12C22 10.35 20.65 9 19 9M7 7C7 6.45 7.45 6 8 6H16C16.55 6 17 6.45 17 7V9.78C16.39 10.33 16 11.12 16 12V14H8V12C8 11.12 7.61 10.33 7 9.78V7M20 17C20 17.55 19.55 18 19 18H5C4.45 18 4 17.55 4 17V12C4 11.45 4.45 11 5 11S6 11.45 6 12V16H18V12C18 11.45 18.45 11 19 11S20 11.45 20 12V17Z"; -var mdiSolarPanel = "M4,2H20A2,2 0 0,1 22,4V14A2,2 0 0,1 20,16H15V20H18V22H13V16H11V22H6V20H9V16H4A2,2 0 0,1 2,14V4A2,2 0 0,1 4,2M4,4V8H11V4H4M4,14H11V10H4V14M20,14V10H13V14H20M20,4H13V8H20V4Z"; -var mdiSolarPanelLarge = "M3,6H6V3H3V6M8,3V6H11V3H8M13,3V6H16V3H13M18,3V6H21V3H18M21,8H18V11H21V8M21,13H18V16H21V13M16,16V13H13V16H16M11,16V13H8V16H11M6,16V13H3V16H6M3,11H6V8H3V11M13,8V11H16V8H13M8,8V11H11V8H8M3,1H21A2,2 0 0,1 23,3V16A2,2 0 0,1 21,18H15V21H18V23H13V18H11V23H6V21H9V18H3A2,2 0 0,1 1,16V3A2,2 0 0,1 3,1Z"; -var mdiSolarPower = "M11.45,2V5.55L15,3.77L11.45,2M10.45,8L8,10.46L11.75,11.71L10.45,8M2,11.45L3.77,15L5.55,11.45H2M10,2H2V10C2.57,10.17 3.17,10.25 3.77,10.25C7.35,10.26 10.26,7.35 10.27,3.75C10.26,3.16 10.17,2.57 10,2M17,22V16H14L19,7V13H22L17,22Z"; -var mdiSolderingIron = "M4.86 4.03L2.03 6.86L5.21 10.04V12.87L6.63 14.28L12.28 8.63L10.87 7.21H8.04L4.86 4.03M17 6V7.5C18 7.5 18.85 8.33 18.85 9.35C18.85 10.37 18 11.2 17 11.2V12.7C19.24 12.7 21 14.53 21 16.77V21H22.5V16.76C22.5 14.54 21.22 12.62 19.35 11.73C19.97 11.12 20.35 10.28 20.35 9.35C20.35 7.5 18.85 6 17 6M11.93 11.1L9.1 13.93L14.05 18.88L14.76 18.17L16.88 20.29L19 21L18.29 18.88L16.17 16.76L16.88 16.05L11.93 11.1Z"; -var mdiSolid = "M0,0H24V24H0"; -var mdiSonyPlaystation = "M9.5,4.27C10.88,4.53 12.9,5.14 14,5.5C16.75,6.45 17.69,7.63 17.69,10.29C17.69,12.89 16.09,13.87 14.05,12.89V8.05C14.05,7.5 13.95,6.97 13.41,6.82C13,6.69 12.76,7.07 12.76,7.63V19.73L9.5,18.69V4.27M13.37,17.62L18.62,15.75C19.22,15.54 19.31,15.24 18.83,15.08C18.34,14.92 17.47,14.97 16.87,15.18L13.37,16.41V14.45L13.58,14.38C13.58,14.38 14.59,14 16,13.87C17.43,13.71 19.17,13.89 20.53,14.4C22.07,14.89 22.25,15.61 21.86,16.1C21.46,16.6 20.5,16.95 20.5,16.95L13.37,19.5V17.62M3.5,17.42C1.93,17 1.66,16.05 2.38,15.5C3.05,15 4.18,14.65 4.18,14.65L8.86,13V14.88L5.5,16.09C4.9,16.3 4.81,16.6 5.29,16.76C5.77,16.92 6.65,16.88 7.24,16.66L8.86,16.08V17.77L8.54,17.83C6.92,18.09 5.2,18 3.5,17.42Z"; -var mdiSort = "M18 21L14 17H17V7H14L18 3L22 7H19V17H22M2 19V17H12V19M2 13V11H9V13M2 7V5H6V7H2Z"; -var mdiSortAlphabeticalAscending = "M19 17H22L18 21L14 17H17V3H19M11 13V15L7.67 19H11V21H5V19L8.33 15H5V13M9 3H7C5.9 3 5 3.9 5 5V11H7V9H9V11H11V5C11 3.9 10.11 3 9 3M9 7H7V5H9Z"; -var mdiSortAlphabeticalAscendingVariant = "M9.25 5L12.5 1.75L15.75 5H9.25M8.89 14.3H6L5.28 17H2.91L6 7H9L12.13 17H9.67L8.89 14.3M6.33 12.68H8.56L7.93 10.56L7.67 9.59L7.42 8.63H7.39L7.17 9.6L6.93 10.58L6.33 12.68M13.05 17V15.74L17.8 8.97V8.91H13.5V7H20.73V8.34L16.09 15V15.08H20.8V17H13.05Z"; -var mdiSortAlphabeticalDescending = "M19 7H22L18 3L14 7H17V21H19M11 13V15L7.67 19H11V21H5V19L8.33 15H5V13M9 3H7C5.9 3 5 3.9 5 5V11H7V9H9V11H11V5C11 3.9 10.11 3 9 3M9 7H7V5H9Z"; -var mdiSortAlphabeticalDescendingVariant = "M15.75 19L12.5 22.25L9.25 19H15.75M8.89 14.3H6L5.28 17H2.91L6 7H9L12.13 17H9.67L8.89 14.3M6.33 12.68H8.56L7.93 10.56L7.67 9.59L7.42 8.63H7.39L7.17 9.6L6.93 10.58L6.33 12.68M13.05 17V15.74L17.8 8.97V8.91H13.5V7H20.73V8.34L16.09 15V15.08H20.8V17H13.05Z"; -var mdiSortAlphabeticalVariant = "M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75M8.89,14.3H6L5.28,17H2.91L6,7H9L12.13,17H9.67L8.89,14.3M6.33,12.68H8.56L7.93,10.56L7.67,9.59L7.42,8.63H7.39L7.17,9.6L6.93,10.58L6.33,12.68M13.05,17V15.74L17.8,8.97V8.91H13.5V7H20.73V8.34L16.09,15V15.08H20.8V17H13.05Z"; -var mdiSortAscending = "M19 17H22L18 21L14 17H17V3H19M2 17H12V19H2M6 5V7H2V5M2 11H9V13H2V11Z"; -var mdiSortBoolAscending = "M19 17H22L18 21L14 17H17V3H19V17M7 3C4.79 3 3 4.79 3 7S4.79 11 7 11 11 9.21 11 7 9.21 3 7 3M7 9C5.9 9 5 8.1 5 7S5.9 5 7 5 9 5.9 9 7 8.1 9 7 9M7 13C4.79 13 3 14.79 3 17S4.79 21 7 21 11 19.21 11 17 9.21 13 7 13Z"; -var mdiSortBoolAscendingVariant = "M19 17H22L18 21L14 17H17V3H19V17M9 13H5C3.89 13 3 13.89 3 15V19C3 20.11 3.89 21 5 21H9C10.11 21 11 20.11 11 19V15C11 13.89 10.11 13 9 13M6.27 19.5L3.74 16.95L4.81 15.9L6.28 17.39L9.2 14.5L10.26 15.55L6.27 19.5M9 3H5C3.89 3 3 3.89 3 5V9C3 10.11 3.89 11 5 11H9C10.11 11 11 10.11 11 9V5C11 3.89 10.11 3 9 3M9 9H5V5H9V9Z"; -var mdiSortBoolDescending = "M19 7H22L18 3L14 7H17V21H19M5 7C5 8.1 5.9 9 7 9C8.1 9 9 8.1 9 7C9 5.9 8.1 5 7 5C5.9 5 5 5.9 5 7M7 3C9.21 3 11 4.79 11 7C11 9.21 9.21 11 7 11C4.79 11 3 9.21 3 7C3 4.79 4.79 3 7 3M7 13C4.79 13 3 14.79 3 17C3 19.21 4.79 21 7 21C9.21 21 11 19.21 11 17C11 14.79 9.21 13 7 13Z"; -var mdiSortBoolDescendingVariant = "M19 7H22L18 3L14 7H17V21H19M5 13C3.89 13 3 13.89 3 15V19C3 20.11 3.89 21 5 21H9C10.11 21 11 20.11 11 19V15C11 13.89 10.11 13 9 13M9.2 14.5L10.26 15.55L6.27 19.5L3.74 16.95L4.81 15.9L6.28 17.39M5 3C3.89 3 3 3.89 3 5V9C3 10.11 3.89 11 5 11H9C10.11 11 11 10.11 11 9V5C11 3.89 10.11 3 9 3M5 5H9V9H5Z"; -var mdiSortCalendarAscending = "M21 17H24L20 21L16 17H19V3H21V17M8 16H11V13H8V16M13 5H12V3H10V5H6V3H4V5H3C1.89 5 1 5.89 1 7V18C1 19.11 1.89 20 3 20H13C14.11 20 15 19.11 15 18V7C15 5.89 14.11 5 13 5M3 18L3 11H13L13 18L3 18Z"; -var mdiSortCalendarDescending = "M19 7H16L20 3L24 7H21V21H19V7M8 16H11V13H8V16M13 5H12V3H10V5H6V3H4V5H3C1.89 5 1 5.89 1 7V18C1 19.11 1.89 20 3 20H13C14.11 20 15 19.11 15 18V7C15 5.89 14.11 5 13 5M3 18L3 11H13L13 18L3 18Z"; -var mdiSortClockAscending = "M20 17H23L19 21L15 17H18V3H20V17M8 5C4.14 5 1 8.13 1 12C1 15.87 4.13 19 8 19C11.86 19 15 15.87 15 12C15 8.13 11.87 5 8 5M10.19 14.53L7 12.69V9H8.5V11.82L10.94 13.23L10.19 14.53Z"; -var mdiSortClockAscendingOutline = "M20 17H23L19 21L15 17H18V3H20V17M8 5C4.14 5 1 8.13 1 12C1 15.87 4.13 19 8 19C11.86 19 15 15.87 15 12C15 8.13 11.87 5 8 5M8 7.15C10.67 7.15 12.85 9.32 12.85 12C12.85 14.68 10.68 16.85 8 16.85C5.32 16.85 3.15 14.68 3.15 12C3.15 9.32 5.32 7.15 8 7.15M7 9V12.69L10.19 14.53L10.94 13.23L8.5 11.82V9"; -var mdiSortClockDescending = "M18 7H15L19 3L23 7H20V21H18V7M8 5C4.14 5 1 8.13 1 12C1 15.87 4.13 19 8 19C11.86 19 15 15.87 15 12C15 8.13 11.87 5 8 5M10.19 14.53L7 12.69V9H8.5V11.82L10.94 13.23L10.19 14.53Z"; -var mdiSortClockDescendingOutline = "M18 7H15L19 3L23 7H20V21H18V7M8 5C4.14 5 1 8.13 1 12C1 15.87 4.13 19 8 19C11.86 19 15 15.87 15 12C15 8.13 11.87 5 8 5M8 7.15C10.67 7.15 12.85 9.32 12.85 12C12.85 14.68 10.68 16.85 8 16.85C5.32 16.85 3.15 14.68 3.15 12C3.15 9.32 5.32 7.15 8 7.15M7 9V12.69L10.19 14.53L10.94 13.23L8.5 11.82V9"; -var mdiSortDescending = "M19 7H22L18 3L14 7H17V21H19M2 17H12V19H2M6 5V7H2V5M2 11H9V13H2V11Z"; -var mdiSortNumericAscending = "M19 17H22L18 21L14 17H17V3H19V17M9 13H7C5.9 13 5 13.9 5 15V16C5 17.11 5.9 18 7 18H9V19H5V21H9C10.11 21 11 20.11 11 19V15C11 13.9 10.11 13 9 13M9 16H7V15H9V16M9 3H7C5.9 3 5 3.9 5 5V9C5 10.11 5.9 11 7 11H9C10.11 11 11 10.11 11 9V5C11 3.9 10.11 3 9 3M9 9H7V5H9V9Z"; -var mdiSortNumericAscendingVariant = "M7.78 7C9.08 7.04 10 7.53 10.57 8.46C11.13 9.4 11.41 10.56 11.39 11.95C11.4 13.5 11.09 14.73 10.5 15.62C9.88 16.5 8.95 16.97 7.71 17C6.45 16.96 5.54 16.5 4.96 15.56C4.38 14.63 4.09 13.45 4.09 12S4.39 9.36 5 8.44C5.59 7.5 6.5 7.04 7.78 7M7.75 8.63C7.31 8.63 6.96 8.9 6.7 9.46C6.44 10 6.32 10.87 6.32 12C6.31 13.15 6.44 14 6.69 14.54C6.95 15.1 7.31 15.37 7.77 15.37C8.69 15.37 9.16 14.24 9.17 12C9.17 9.77 8.7 8.65 7.75 8.63M13.33 17V15.22L13.76 15.24L14.3 15.22L15.34 15.03C15.68 14.92 16 14.78 16.26 14.58C16.59 14.35 16.86 14.08 17.07 13.76C17.29 13.45 17.44 13.12 17.53 12.78L17.5 12.77C17.05 13.19 16.38 13.4 15.47 13.41C14.62 13.4 13.91 13.15 13.34 12.65S12.5 11.43 12.46 10.5C12.47 9.5 12.81 8.69 13.47 8.03C14.14 7.37 15 7.03 16.12 7C17.37 7.04 18.29 7.45 18.88 8.24C19.47 9 19.76 10 19.76 11.19C19.75 12.15 19.61 13 19.32 13.76C19.03 14.5 18.64 15.13 18.12 15.64C17.66 16.06 17.11 16.38 16.47 16.61C15.83 16.83 15.12 16.96 14.34 17H13.33M16.06 8.63C15.65 8.64 15.32 8.8 15.06 9.11C14.81 9.42 14.68 9.84 14.68 10.36C14.68 10.8 14.8 11.16 15.03 11.46C15.27 11.77 15.63 11.92 16.11 11.93C16.43 11.93 16.7 11.86 16.92 11.74C17.14 11.61 17.3 11.46 17.41 11.28C17.5 11.17 17.53 10.97 17.53 10.71C17.54 10.16 17.43 9.69 17.2 9.28C16.97 8.87 16.59 8.65 16.06 8.63M9.25 5L12.5 1.75L15.75 5H9.25"; -var mdiSortNumericDescending = "M19 7H22L18 3L14 7H17V21H19M9 21H5V19H9V18H7C5.9 18 5 17.11 5 16V15C5 13.9 5.9 13 7 13H9C10.11 13 11 13.9 11 15V19C11 20.11 10.11 21 9 21M9 15H7V16H9M7 3H9C10.11 3 11 3.9 11 5V9C11 10.11 10.11 11 9 11H7C5.9 11 5 10.11 5 9V5C5 3.9 5.9 3 7 3M7 9H9V5H7Z"; -var mdiSortNumericDescendingVariant = "M7.78 7C9.08 7.04 10 7.53 10.57 8.46C11.13 9.4 11.41 10.56 11.39 11.95C11.4 13.5 11.09 14.73 10.5 15.62C9.88 16.5 8.95 16.97 7.71 17C6.45 16.96 5.54 16.5 4.96 15.56C4.38 14.63 4.09 13.45 4.09 12S4.39 9.36 5 8.44C5.59 7.5 6.5 7.04 7.78 7M7.75 8.63C7.31 8.63 6.96 8.9 6.7 9.46C6.44 10 6.32 10.87 6.32 12C6.31 13.15 6.44 14 6.69 14.54C6.95 15.1 7.31 15.37 7.77 15.37C8.69 15.37 9.16 14.24 9.17 12C9.17 9.77 8.7 8.65 7.75 8.63M13.33 17V15.22L13.76 15.24L14.3 15.22L15.34 15.03C15.68 14.92 16 14.78 16.26 14.58C16.59 14.35 16.86 14.08 17.07 13.76C17.29 13.45 17.44 13.12 17.53 12.78L17.5 12.77C17.05 13.19 16.38 13.4 15.47 13.41C14.62 13.4 13.91 13.15 13.34 12.65S12.5 11.43 12.46 10.5C12.47 9.5 12.81 8.69 13.47 8.03C14.14 7.37 15 7.03 16.12 7C17.37 7.04 18.29 7.45 18.88 8.24C19.47 9 19.76 10 19.76 11.19C19.75 12.15 19.61 13 19.32 13.76C19.03 14.5 18.64 15.13 18.12 15.64C17.66 16.06 17.11 16.38 16.47 16.61C15.83 16.83 15.12 16.96 14.34 17H13.33M16.06 8.63C15.65 8.64 15.32 8.8 15.06 9.11C14.81 9.42 14.68 9.84 14.68 10.36C14.68 10.8 14.8 11.16 15.03 11.46C15.27 11.77 15.63 11.92 16.11 11.93C16.43 11.93 16.7 11.86 16.92 11.74C17.14 11.61 17.3 11.46 17.41 11.28C17.5 11.17 17.53 10.97 17.53 10.71C17.54 10.16 17.43 9.69 17.2 9.28C16.97 8.87 16.59 8.65 16.06 8.63M15.75 19L12.5 22.25L9.25 19H15.75Z"; -var mdiSortNumericVariant = "M7.78,7C9.08,7.04 10,7.53 10.57,8.46C11.13,9.4 11.41,10.56 11.39,11.95C11.4,13.5 11.09,14.73 10.5,15.62C9.88,16.5 8.95,16.97 7.71,17C6.45,16.96 5.54,16.5 4.96,15.56C4.38,14.63 4.09,13.45 4.09,12C4.09,10.55 4.39,9.36 5,8.44C5.59,7.5 6.5,7.04 7.78,7M7.75,8.63C7.31,8.63 6.96,8.9 6.7,9.46C6.44,10 6.32,10.87 6.32,12C6.31,13.15 6.44,14 6.69,14.54C6.95,15.1 7.31,15.37 7.77,15.37C8.69,15.37 9.16,14.24 9.17,12C9.17,9.77 8.7,8.65 7.75,8.63M13.33,17V15.22L13.76,15.24L14.3,15.22L15.34,15.03C15.68,14.92 16,14.78 16.26,14.58C16.59,14.35 16.86,14.08 17.07,13.76C17.29,13.45 17.44,13.12 17.53,12.78L17.5,12.77C17.05,13.19 16.38,13.4 15.47,13.41C14.62,13.4 13.91,13.15 13.34,12.65C12.77,12.15 12.5,11.43 12.46,10.5C12.47,9.5 12.81,8.69 13.47,8.03C14.14,7.37 15,7.03 16.12,7C17.37,7.04 18.29,7.45 18.88,8.24C19.47,9 19.76,10 19.76,11.19C19.75,12.15 19.61,13 19.32,13.76C19.03,14.5 18.64,15.13 18.12,15.64C17.66,16.06 17.11,16.38 16.47,16.61C15.83,16.83 15.12,16.96 14.34,17H13.33M16.06,8.63C15.65,8.64 15.32,8.8 15.06,9.11C14.81,9.42 14.68,9.84 14.68,10.36C14.68,10.8 14.8,11.16 15.03,11.46C15.27,11.77 15.63,11.92 16.11,11.93C16.43,11.93 16.7,11.86 16.92,11.74C17.14,11.61 17.3,11.46 17.41,11.28C17.5,11.17 17.53,10.97 17.53,10.71C17.54,10.16 17.43,9.69 17.2,9.28C16.97,8.87 16.59,8.65 16.06,8.63M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75Z"; -var mdiSortReverseVariant = "M3 11H15V13H3M3 18V16H21V18M3 6H9V8H3Z"; -var mdiSortVariant = "M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z"; -var mdiSortVariantLock = "M3,13V11H15V13H3M3,6H21V8H3V6M3,18V16H9V18H3M22,22H14V18H15V17A3,3 0 0,1 18,14A3,3 0 0,1 21,17V18H22V22M18,16A1,1 0 0,0 17,17V18H19V17A1,1 0 0,0 18,16Z"; -var mdiSortVariantLockOpen = "M3,13V11H15V13H3M3,6H21V8H3V6M3,18V16H9V18H3M22,22H14V18H15V16A3,3 0 0,1 18,13A3,3 0 0,1 21,16H19A1,1 0 0,0 18,15A1,1 0 0,0 17,16V18H22V22Z"; -var mdiSortVariantRemove = "M3 13H15V11H3M3 6V8H21V6M3 18H9V16H3V18M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.46L22.54 16.88"; -var mdiSoundcloud = "M11.56,8.87V17H20.32V17C22.17,16.87 23,15.73 23,14.33C23,12.85 21.88,11.66 20.38,11.66C20,11.66 19.68,11.74 19.35,11.88C19.11,9.54 17.12,7.71 14.67,7.71C13.5,7.71 12.39,8.15 11.56,8.87M10.68,9.89C10.38,9.71 10.06,9.57 9.71,9.5V17H11.1V9.34C10.95,9.5 10.81,9.7 10.68,9.89M8.33,9.35V17H9.25V9.38C9.06,9.35 8.87,9.34 8.67,9.34C8.55,9.34 8.44,9.34 8.33,9.35M6.5,10V17H7.41V9.54C7.08,9.65 6.77,9.81 6.5,10M4.83,12.5C4.77,12.5 4.71,12.44 4.64,12.41V17H5.56V10.86C5.19,11.34 4.94,11.91 4.83,12.5M2.79,12.22V16.91C3,16.97 3.24,17 3.5,17H3.72V12.14C3.64,12.13 3.56,12.12 3.5,12.12C3.24,12.12 3,12.16 2.79,12.22M1,14.56C1,15.31 1.34,15.97 1.87,16.42V12.71C1.34,13.15 1,13.82 1,14.56Z"; -var mdiSourceBranch = "M13,14C9.64,14 8.54,15.35 8.18,16.24C9.25,16.7 10,17.76 10,19A3,3 0 0,1 7,22A3,3 0 0,1 4,19C4,17.69 4.83,16.58 6,16.17V7.83C4.83,7.42 4,6.31 4,5A3,3 0 0,1 7,2A3,3 0 0,1 10,5C10,6.31 9.17,7.42 8,7.83V13.12C8.88,12.47 10.16,12 12,12C14.67,12 15.56,10.66 15.85,9.77C14.77,9.32 14,8.25 14,7A3,3 0 0,1 17,4A3,3 0 0,1 20,7C20,8.34 19.12,9.5 17.91,9.86C17.65,11.29 16.68,14 13,14M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M17,6A1,1 0 0,0 16,7A1,1 0 0,0 17,8A1,1 0 0,0 18,7A1,1 0 0,0 17,6Z"; -var mdiSourceBranchCheck = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M16.75 21.16L14 18.16L15.16 17L16.75 18.59L20.34 15L21.5 16.41L16.75 21.16"; -var mdiSourceBranchMinus = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M14 17V19H22V17H14Z"; -var mdiSourceBranchPlus = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M17 14V17H14V19H17V22H19V19H22V17H19V14H17Z"; -var mdiSourceBranchRefresh = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M18 14C19.1 14 20.1 14.4 20.8 15.2L22 14V18H18L19.8 16.2C19.3 15.8 18.7 15.5 18 15.5C16.6 15.5 15.5 16.6 15.5 18S16.6 20.5 18 20.5C18.8 20.5 19.5 20.1 20 19.5H21.7C21.1 21 19.7 22 18 22C15.8 22 14 20.2 14 18S15.8 14 18 14Z"; -var mdiSourceBranchRemove = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M20.12 14.46L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88L20.12 14.46Z"; -var mdiSourceBranchSync = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M18 13V14.5C20.21 14.5 22 16.29 22 18.5C22 19.32 21.75 20.08 21.33 20.71L20.24 19.62C20.41 19.28 20.5 18.9 20.5 18.5C20.5 17.12 19.38 16 18 16V17.5L15.75 15.25L15.72 15.22C15.78 15.17 15.85 15.13 18 13M18 24V22.5C15.79 22.5 14 20.71 14 18.5C14 17.68 14.25 16.92 14.67 16.29L15.76 17.38C15.59 17.72 15.5 18.1 15.5 18.5C15.5 19.88 16.62 21 18 21V19.5L20.25 21.75L20.28 21.78C20.22 21.83 20.15 21.87 18 24"; -var mdiSourceCommit = "M17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; -var mdiSourceCommitEnd = "M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; -var mdiSourceCommitEndLocal = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11Z"; -var mdiSourceCommitLocal = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11M11,21V19H13V21H11Z"; -var mdiSourceCommitNextLocal = "M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z"; -var mdiSourceCommitStart = "M12,7A5,5 0 0,1 17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z"; -var mdiSourceCommitStartNextLocal = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z"; -var mdiSourceFork = "M6,2A3,3 0 0,1 9,5C9,6.28 8.19,7.38 7.06,7.81C7.15,8.27 7.39,8.83 8,9.63C9,10.92 11,12.83 12,14.17C13,12.83 15,10.92 16,9.63C16.61,8.83 16.85,8.27 16.94,7.81C15.81,7.38 15,6.28 15,5A3,3 0 0,1 18,2A3,3 0 0,1 21,5C21,6.32 20.14,7.45 18.95,7.85C18.87,8.37 18.64,9 18,9.83C17,11.17 15,13.08 14,14.38C13.39,15.17 13.15,15.73 13.06,16.19C14.19,16.62 15,17.72 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.72 9.81,16.62 10.94,16.19C10.85,15.73 10.61,15.17 10,14.38C9,13.08 7,11.17 6,9.83C5.36,9 5.13,8.37 5.05,7.85C3.86,7.45 3,6.32 3,5A3,3 0 0,1 6,2M6,4A1,1 0 0,0 5,5A1,1 0 0,0 6,6A1,1 0 0,0 7,5A1,1 0 0,0 6,4M18,4A1,1 0 0,0 17,5A1,1 0 0,0 18,6A1,1 0 0,0 19,5A1,1 0 0,0 18,4M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z"; -var mdiSourceMerge = "M7,3A3,3 0 0,1 10,6C10,7.29 9.19,8.39 8.04,8.81C8.58,13.81 13.08,14.77 15.19,14.96C15.61,13.81 16.71,13 18,13A3,3 0 0,1 21,16A3,3 0 0,1 18,19C16.69,19 15.57,18.16 15.16,17C10.91,16.8 9.44,15.19 8,13.39V15.17C9.17,15.58 10,16.69 10,18A3,3 0 0,1 7,21A3,3 0 0,1 4,18C4,16.69 4.83,15.58 6,15.17V8.83C4.83,8.42 4,7.31 4,6A3,3 0 0,1 7,3M7,5A1,1 0 0,0 6,6A1,1 0 0,0 7,7A1,1 0 0,0 8,6A1,1 0 0,0 7,5M7,17A1,1 0 0,0 6,18A1,1 0 0,0 7,19A1,1 0 0,0 8,18A1,1 0 0,0 7,17M18,15A1,1 0 0,0 17,16A1,1 0 0,0 18,17A1,1 0 0,0 19,16A1,1 0 0,0 18,15Z"; -var mdiSourcePull = "M6,3A3,3 0 0,1 9,6C9,7.31 8.17,8.42 7,8.83V15.17C8.17,15.58 9,16.69 9,18A3,3 0 0,1 6,21A3,3 0 0,1 3,18C3,16.69 3.83,15.58 5,15.17V8.83C3.83,8.42 3,7.31 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M21,18A3,3 0 0,1 18,21A3,3 0 0,1 15,18C15,16.69 15.83,15.58 17,15.17V7H15V10.25L10.75,6L15,1.75V5H17A2,2 0 0,1 19,7V15.17C20.17,15.58 21,16.69 21,18M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17Z"; -var mdiSourceRepository = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12.75,13.5C15.5,13.5 16.24,11.47 16.43,10.4C17.34,10.11 18,9.26 18,8.25C18,7 17,6 15.75,6C14.5,6 13.5,7 13.5,8.25C13.5,9.19 14.07,10 14.89,10.33C14.67,11 14,12 12,12C10.62,12 9.66,12.35 9,12.84V8.87C9.87,8.56 10.5,7.73 10.5,6.75C10.5,5.5 9.5,4.5 8.25,4.5C7,4.5 6,5.5 6,6.75C6,7.73 6.63,8.56 7.5,8.87V15.13C6.63,15.44 6,16.27 6,17.25C6,18.5 7,19.5 8.25,19.5C9.5,19.5 10.5,18.5 10.5,17.25C10.5,16.32 9.94,15.5 9.13,15.18C9.41,14.5 10.23,13.5 12.75,13.5M8.25,16.5A0.75,0.75 0 0,1 9,17.25A0.75,0.75 0 0,1 8.25,18A0.75,0.75 0 0,1 7.5,17.25A0.75,0.75 0 0,1 8.25,16.5M8.25,6A0.75,0.75 0 0,1 9,6.75A0.75,0.75 0 0,1 8.25,7.5A0.75,0.75 0 0,1 7.5,6.75A0.75,0.75 0 0,1 8.25,6M15.75,7.5A0.75,0.75 0 0,1 16.5,8.25A0.75,0.75 0 0,1 15.75,9A0.75,0.75 0 0,1 15,8.25A0.75,0.75 0 0,1 15.75,7.5Z"; -var mdiSourceRepositoryMultiple = "M8,0H20A2,2 0 0,1 22,2V18A2,2 0 0,1 20,20H8A2,2 0 0,1 6,18V2A2,2 0 0,1 8,0M14.75,11.5C17.5,11.5 18.24,9.47 18.43,8.4C19.34,8.11 20,7.26 20,6.25C20,5 19,4 17.75,4C16.5,4 15.5,5 15.5,6.25C15.5,7.19 16.07,8 16.89,8.33C16.67,9 16,10 14,10C12.62,10 11.66,10.35 11,10.84V6.87C11.87,6.56 12.5,5.73 12.5,4.75C12.5,3.5 11.5,2.5 10.25,2.5C9,2.5 8,3.5 8,4.75C8,5.73 8.63,6.56 9.5,6.87V13.13C8.63,13.44 8,14.27 8,15.25C8,16.5 9,17.5 10.25,17.5C11.5,17.5 12.5,16.5 12.5,15.25C12.5,14.32 11.94,13.5 11.13,13.18C11.41,12.5 12.23,11.5 14.75,11.5M10.25,14.5A0.75,0.75 0 0,1 11,15.25A0.75,0.75 0 0,1 10.25,16A0.75,0.75 0 0,1 9.5,15.25A0.75,0.75 0 0,1 10.25,14.5M10.25,4A0.75,0.75 0 0,1 11,4.75A0.75,0.75 0 0,1 10.25,5.5A0.75,0.75 0 0,1 9.5,4.75A0.75,0.75 0 0,1 10.25,4M17.75,5.5A0.75,0.75 0 0,1 18.5,6.25A0.75,0.75 0 0,1 17.75,7A0.75,0.75 0 0,1 17,6.25A0.75,0.75 0 0,1 17.75,5.5M16,22V24H4A2,2 0 0,1 2,22V6H4V22H16Z"; -var mdiSoySauce = "M13.9,7.5C13.9,6.8 14.1,6.3 14.2,6H14.8L15.7,3.5H16.5V2H7.5V3.5H8.3L9.2,6H9.8C10,6.3 10.1,6.8 10.1,7.5C10.1,8.8 6,13.7 6,17.6V19.6C6,21 8.7,21.9 12,21.9C15.3,21.9 18,21 18,19.6V17.6C18,13.7 13.9,8.8 13.9,7.5M12,15A2,2 0 0,1 10,13A2,2 0 0,1 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15Z"; -var mdiSoySauceOff = "M22.1 21.5L2.4 1.7L1.1 3L8.6 10.5C7.5 12.6 6 15.3 6 17.6V19.6C6 21 8.7 21.9 12 21.9C15.1 21.9 17.7 21.1 18 19.9L20.9 22.8L22.1 21.5M12 15C10.9 15 10 14.1 10 13C10 12.7 10.1 12.4 10.2 12.1L12.9 14.8C12.6 14.9 12.3 15 12 15M8.3 3.5H7.5V2H16.5V3.5H15.7L14.8 6H14.2C14.1 6.3 13.9 6.8 13.9 7.5C13.9 8.4 15.9 11 17.1 13.9L10.1 6.9C10 6.5 9.9 6.2 9.8 6H9.2L8.3 3.5Z"; -var mdiSpa = "M15.5,9.63C15.31,6.84 14.18,4.12 12.06,2C9.92,4.14 8.74,6.86 8.5,9.63C9.79,10.31 10.97,11.19 12,12.26C13.03,11.2 14.21,10.32 15.5,9.63M12,15.45C9.85,12.17 6.18,10 2,10C2,20 11.32,21.89 12,22C12.68,21.88 22,20 22,10C17.82,10 14.15,12.17 12,15.45Z"; -var mdiSpaOutline = "M15.5,9.63C14.21,10.32 13.03,11.2 12,12.26C10.97,11.19 9.79,10.31 8.5,9.63C8.74,6.86 9.92,4.14 12.06,2C14.18,4.12 15.31,6.84 15.5,9.63M12,15.45C14.15,12.17 17.82,10 22,10C22,20 12.68,21.88 12,22C11.32,21.89 2,20 2,10C6.18,10 9.85,12.17 12,15.45M12.05,5.19C11.39,6.23 10.93,7.38 10.68,8.58L12,9.55L13.35,8.57C13.12,7.37 12.68,6.22 12.05,5.19M12,19.97C12,19.97 18,19 19.74,12.25C14,14 12,19.1 12,19.1C12,19.1 9,13 4.26,12.26C6,19 12,19.97 12,19.97Z"; -var mdiSpaceInvaders = "M7,6H5V4H7V6M17,6H19V4H17V6M23,12V18H21V14H19V18H17V16H7V18H5V14H3V18H1V12H3V10H5V8H7V6H9V8H15V6H17V8H19V10H21V12H23M15,10V12H17V10H15M7,12H9V10H7V12M11,18H7V20H11V18M17,18H13V20H17V18Z"; -var mdiSpaceStation = "M15.5 19V21H13.73C13.39 21.6 12.74 22 12 22C11.26 22 10.61 21.6 10.27 21H8.5V19H10.27C10.44 18.7 10.7 18.44 11 18.27V17H10C9.45 17 9 16.55 9 16V13H6V17C6 17.55 5.55 18 5 18H3C2.45 18 2 17.55 2 17V8C2 7.45 2.45 7 3 7H5C5.55 7 6 7.45 6 8V11H9V8C9 7.45 9.45 7 10 7H11V6H10C9.45 6 9 5.55 9 5V4C9 3.45 9.45 3 10 3H14C14.55 3 15 3.45 15 4V5C15 5.55 14.55 6 14 6H13V7H14C14.55 7 15 7.45 15 8V11H18V8C18 7.45 18.45 7 19 7H21C21.55 7 22 7.45 22 8V17C22 17.55 21.55 18 21 18H19C18.45 18 18 17.55 18 17V13H15V16C15 16.55 14.55 17 14 17H13V18.27C13.3 18.44 13.56 18.7 13.73 19H15.5M3 16V17H5V16H3M3 14V15H5V14H3M3 12V13H5V12H3M3 10V11H5V10H3M3 8V9H5V8H3M19 16V17H21V16H19M19 14V15H21V14H19M19 12V13H21V12H19M19 10V11H21V10H19M19 8V9H21V8H19Z"; -var mdiSpade = "M15.71,1.22L12.88,4.05C12.1,4.83 12.1,6.09 12.88,6.87L14.3,8.29L10.06,12.53L7.58,10.06L1.22,16.42L7.58,22.78L13.94,16.42L11.47,13.94L15.71,9.7L17.13,11.12C17.91,11.9 19.17,11.9 19.95,11.12L22.78,8.29L15.71,1.22M15.71,4.05L19.95,8.29L18.54,9.7L14.3,5.46L15.71,4.05Z"; -var mdiSparkles = "M10.6 9.6L9 15L7.4 9.6L2 8L7.4 6.4L9 1L10.6 6.4L16 8L10.6 9.6M17 14.2L21 12L18.8 16L21 20L17 17.8L13 20L15.2 16L13 12L17 14.2M10 16L8.3 19L10 22L7 20.3L4 22L5.7 19L4 16L7 17.7L10 16"; -var mdiSpeaker = "M12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12M12,20A5,5 0 0,1 7,15A5,5 0 0,1 12,10A5,5 0 0,1 17,15A5,5 0 0,1 12,20M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M17,2H7C5.89,2 5,2.89 5,4V20A2,2 0 0,0 7,22H17A2,2 0 0,0 19,20V4C19,2.89 18.1,2 17,2Z"; -var mdiSpeakerBluetooth = "M4,3A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21H12A2,2 0 0,0 14,19V5A2,2 0 0,0 12,3H4M8,5A2,2 0 0,1 10,7A2,2 0 0,1 8,9A2,2 0 0,1 6,7A2,2 0 0,1 8,5M19,7V10.79L16.71,8.5L16,9.21L18.79,12L16,14.79L16.71,15.5L19,13.21V17H19.5L22.35,14.14L20.21,12L22.35,9.85L19.5,7H19M20,8.91L20.94,9.85L20,10.79V8.91M8,11A4,4 0 0,1 12,15A4,4 0 0,1 8,19A4,4 0 0,1 4,15A4,4 0 0,1 8,11M8,13A2,2 0 0,0 6,15A2,2 0 0,0 8,17A2,2 0 0,0 10,15A2,2 0 0,0 8,13M20,13.21L20.94,14.14L20,15.08V13.21Z"; -var mdiSpeakerMultiple = "M14,10A3,3 0 0,0 11,13A3,3 0 0,0 14,16A3,3 0 0,0 17,13A3,3 0 0,0 14,10M14,18A5,5 0 0,1 9,13A5,5 0 0,1 14,8A5,5 0 0,1 19,13A5,5 0 0,1 14,18M14,2A2,2 0 0,1 16,4A2,2 0 0,1 14,6A2,2 0 0,1 12,4A2,2 0 0,1 14,2M19,0H9A2,2 0 0,0 7,2V18A2,2 0 0,0 9,20H19A2,2 0 0,0 21,18V2A2,2 0 0,0 19,0M5,22H17V24H5A2,2 0 0,1 3,22V4H5"; -var mdiSpeakerOff = "M2,5.27L3.28,4L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.89,22 5,21.1 5,20V8.27L2,5.27M12,18A3,3 0 0,1 9,15C9,14.24 9.28,13.54 9.75,13L8.33,11.6C7.5,12.5 7,13.69 7,15A5,5 0 0,0 12,20C13.31,20 14.5,19.5 15.4,18.67L14,17.25C13.45,17.72 12.76,18 12,18M17,15A5,5 0 0,0 12,10H11.82L5.12,3.3C5.41,2.54 6.14,2 7,2H17A2,2 0 0,1 19,4V17.18L17,15.17V15M12,4C10.89,4 10,4.89 10,6A2,2 0 0,0 12,8A2,2 0 0,0 14,6C14,4.89 13.1,4 12,4Z"; -var mdiSpeakerWireless = "M20.07,19.07L18.66,17.66C20.11,16.22 21,14.21 21,12C21,9.78 20.11,7.78 18.66,6.34L20.07,4.93C21.88,6.74 23,9.24 23,12C23,14.76 21.88,17.26 20.07,19.07M17.24,16.24L15.83,14.83C16.55,14.11 17,13.11 17,12C17,10.89 16.55,9.89 15.83,9.17L17.24,7.76C18.33,8.85 19,10.35 19,12C19,13.65 18.33,15.15 17.24,16.24M4,3H12A2,2 0 0,1 14,5V19A2,2 0 0,1 12,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M8,5A2,2 0 0,0 6,7A2,2 0 0,0 8,9A2,2 0 0,0 10,7A2,2 0 0,0 8,5M8,11A4,4 0 0,0 4,15A4,4 0 0,0 8,19A4,4 0 0,0 12,15A4,4 0 0,0 8,11M8,13A2,2 0 0,1 10,15A2,2 0 0,1 8,17A2,2 0 0,1 6,15A2,2 0 0,1 8,13Z"; -var mdiSpeedometer = "M12,16A3,3 0 0,1 9,13C9,11.88 9.61,10.9 10.5,10.39L20.21,4.77L14.68,14.35C14.18,15.33 13.17,16 12,16M12,3C13.81,3 15.5,3.5 16.97,4.32L14.87,5.53C14,5.19 13,5 12,5A8,8 0 0,0 4,13C4,15.21 4.89,17.21 6.34,18.65H6.35C6.74,19.04 6.74,19.67 6.35,20.06C5.96,20.45 5.32,20.45 4.93,20.07V20.07C3.12,18.26 2,15.76 2,13A10,10 0 0,1 12,3M22,13C22,15.76 20.88,18.26 19.07,20.07V20.07C18.68,20.45 18.05,20.45 17.66,20.06C17.27,19.67 17.27,19.04 17.66,18.65V18.65C19.11,17.2 20,15.21 20,13C20,12 19.81,11 19.46,10.1L20.67,8C21.5,9.5 22,11.18 22,13Z"; -var mdiSpeedometerMedium = "M12 1.38L9.14 12.06C8.8 13.1 9.04 14.29 9.86 15.12C11.04 16.29 12.94 16.29 14.11 15.12C14.9 14.33 15.16 13.2 14.89 12.21M14.6 3.35L15.22 5.68C18.04 6.92 20 9.73 20 13C20 15.21 19.11 17.21 17.66 18.65H17.65C17.26 19.04 17.26 19.67 17.65 20.06C18.04 20.45 18.68 20.45 19.07 20.07C20.88 18.26 22 15.76 22 13C22 8.38 18.86 4.5 14.6 3.35M9.4 3.36C5.15 4.5 2 8.4 2 13C2 15.76 3.12 18.26 4.93 20.07C5.32 20.45 5.95 20.45 6.34 20.06C6.73 19.67 6.73 19.04 6.34 18.65C4.89 17.2 4 15.21 4 13C4 9.65 5.94 6.86 8.79 5.65"; -var mdiSpeedometerSlow = "M12 16C13.66 16 15 14.66 15 13C15 11.88 14.39 10.9 13.5 10.39L3.79 4.77L9.32 14.35C9.82 15.33 10.83 16 12 16M12 3C10.19 3 8.5 3.5 7.03 4.32L9.13 5.53C10 5.19 11 5 12 5C16.42 5 20 8.58 20 13C20 15.21 19.11 17.21 17.66 18.65H17.65C17.26 19.04 17.26 19.67 17.65 20.06C18.04 20.45 18.68 20.45 19.07 20.07C20.88 18.26 22 15.76 22 13C22 7.5 17.5 3 12 3M2 13C2 15.76 3.12 18.26 4.93 20.07C5.32 20.45 5.95 20.45 6.34 20.06C6.73 19.67 6.73 19.04 6.34 18.65C4.89 17.2 4 15.21 4 13C4 12 4.19 11 4.54 10.1L3.33 8C2.5 9.5 2 11.18 2 13Z"; -var mdiSpellcheck = "M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13M6.43,11L8.5,5.5L10.57,11M12.45,16H14.54L9.43,3H7.57L2.46,16H4.55L5.67,13H11.31L12.45,16Z"; -var mdiSpider = "M21.29 16.71L22.71 15.29L19.5 12.11L16.5 11.26L18.41 11L22.6 7.8L21.4 6.2L17.59 9.05L14.91 9.5L18.11 6.31L17 1.76L15 2.24L15.86 5.69L14.76 6.83A3 3 0 0 0 9.24 6.83L8.11 5.69L9 2.24L7 1.76L5.89 6.31L9.09 9.5L6.4 9.05L2.6 6.2L1.4 7.8L5.6 11L7.46 11.31L4.46 12.16L1.29 15.29L2.71 16.71L5.5 13.89L7.87 13.22L4 16.54V22H6V17.46L7.56 16.12A4.5 4.5 0 0 0 16.44 16.12L18 17.46V22H20V16.54L16.13 13.22L18.5 13.89Z"; -var mdiSpiderThread = "M13 2V7.08A5.47 5.47 0 0 0 12 7A5.47 5.47 0 0 0 11 7.08V2M16.9 15A5 5 0 0 1 16.73 15.55L20 17.42V22H18V18.58L15.74 17.29A4.94 4.94 0 0 1 8.26 17.29L6 18.58V22H4V17.42L7.27 15.55A5 5 0 0 1 7.1 15H5.3L2.55 16.83L1.45 15.17L4.7 13H7.1A5 5 0 0 1 7.37 12.12L5.81 11.12L2.24 12L1.76 10L6.19 8.92L8.5 10.45A5 5 0 0 1 15.5 10.45L17.77 8.92L22.24 10L21.76 12L18.19 11.11L16.63 12.11A5 5 0 0 1 16.9 13H19.3L22.55 15.16L21.45 16.82L18.7 15M11 14A1 1 0 1 0 10 15A1 1 0 0 0 11 14M15 14A1 1 0 1 0 14 15A1 1 0 0 0 15 14Z"; -var mdiSpiderWeb = "M13.62,13.28L15.26,15.54C15.29,15 15.38,14.47 15.56,13.93C15.74,13.37 16,12.86 16.3,12.41L13.62,13.28M17.77,19C17.75,17.68 17.95,16.27 18.41,14.85C18.88,13.42 19.56,12.14 20.36,11.09L18.32,11.75C17.54,12.26 16.87,13.14 16.5,14.23C16.17,15.29 16.18,16.36 16.5,17.22L17.77,19M19.25,21C18.75,21.46 18.21,21.86 17.63,22.2L17.31,21.76C15.9,21 14.04,20.5 12,20.5C9.96,20.5 8.1,21 6.69,21.76L6.37,22.2C5.79,21.86 5.25,21.46 4.75,21L5,20.69C5.33,19.08 5.22,17.12 4.58,15.14C3.94,13.19 2.9,11.56 1.71,10.46L1.27,10.32C1.42,9.66 1.63,9 1.89,8.41L2.29,8.54C3.92,8.37 5.74,7.65 7.43,6.43C9.09,5.22 10.32,3.73 11,2.26V1.79L12,1.75L13,1.79V2.21C13.67,3.71 14.91,5.23 16.6,6.45C18.26,7.66 20.06,8.37 21.67,8.56L22.11,8.41C22.37,9 22.58,9.66 22.73,10.32L22.23,10.5C21.04,11.58 20,13.21 19.37,15.16C18.74,17.09 18.62,19 18.92,20.57L19.25,21M11,11.37V8.5C10.66,8.92 10.26,9.32 9.78,9.67C9.29,10 8.77,10.29 8.25,10.5L11,11.37M11,4.22C10.25,5.31 9.24,6.35 8,7.24C6.78,8.14 5.46,8.78 4.18,9.16L6.15,9.8C7.11,9.88 8.22,9.56 9.19,8.86C10.13,8.18 10.76,7.27 11,6.36V4.22M13,11.37L15.74,10.5C15.23,10.3 14.72,10.03 14.25,9.69C13.76,9.33 13.34,8.92 13,8.5V11.37M19.8,9.16C18.53,8.78 17.23,8.15 16,7.26C14.77,6.36 13.76,5.31 13,4.2V6.27C13.22,7.21 13.86,8.17 14.84,8.88C15.77,9.56 16.83,9.87 17.77,9.82L19.8,9.16M10.38,13.28L7.64,12.39C7.95,12.84 8.2,13.35 8.38,13.91C8.57,14.5 8.66,15.06 8.68,15.62L10.38,13.28M3.58,11.07C4.38,12.12 5.06,13.4 5.53,14.83C6,16.29 6.2,17.74 6.17,19.08L7.38,17.41C7.76,16.5 7.8,15.36 7.43,14.22C7.07,13.12 6.4,12.24 5.61,11.73L3.58,11.07M12,14.45L10.35,16.72C10.87,16.58 11.42,16.5 12,16.5C12.58,16.5 13.13,16.58 13.65,16.72L12,14.45M7.84,20.18C9.08,19.75 10.5,19.5 12,19.5C13.5,19.5 14.92,19.75 16.16,20.18L14.88,18.42C14.16,17.85 13.13,17.5 12,17.5C10.87,17.5 9.84,17.85 9.12,18.42L7.84,20.18Z"; -var mdiSpiritLevel = "M22 8H2V16H22V8M18 14V10H20V14H18M11 12H13C14.1 12 15 11.11 15 10H17V14H7V10H9C9 11.11 9.9 12 11 12M4 14V10H6V14H4Z"; -var mdiSpoonSugar = "M6 13H3V10H6V13M10 10H7V13H10V10M8 6H5V9H8V6M18 12C14.25 12 12.28 13.25 11 14H2C2 16.21 3.79 18 6 18H7C8 18 8.92 17.63 9.62 17C11.06 15.78 12.68 14.74 14.55 14.36C15.61 14.15 16.78 14 18 14H22V12H18Z"; -var mdiSpotify = "M17.9,10.9C14.7,9 9.35,8.8 6.3,9.75C5.8,9.9 5.3,9.6 5.15,9.15C5,8.65 5.3,8.15 5.75,8C9.3,6.95 15.15,7.15 18.85,9.35C19.3,9.6 19.45,10.2 19.2,10.65C18.95,11 18.35,11.15 17.9,10.9M17.8,13.7C17.55,14.05 17.1,14.2 16.75,13.95C14.05,12.3 9.95,11.8 6.8,12.8C6.4,12.9 5.95,12.7 5.85,12.3C5.75,11.9 5.95,11.45 6.35,11.35C10,10.25 14.5,10.8 17.6,12.7C17.9,12.85 18.05,13.35 17.8,13.7M16.6,16.45C16.4,16.75 16.05,16.85 15.75,16.65C13.4,15.2 10.45,14.9 6.95,15.7C6.6,15.8 6.3,15.55 6.2,15.25C6.1,14.9 6.35,14.6 6.65,14.5C10.45,13.65 13.75,14 16.35,15.6C16.7,15.75 16.75,16.15 16.6,16.45M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiSpotlight = "M2,6L7.09,8.55C6.4,9.5 6,10.71 6,12C6,13.29 6.4,14.5 7.09,15.45L2,18V6M6,3H18L15.45,7.09C14.5,6.4 13.29,6 12,6C10.71,6 9.5,6.4 8.55,7.09L6,3M22,6V18L16.91,15.45C17.6,14.5 18,13.29 18,12C18,10.71 17.6,9.5 16.91,8.55L22,6M18,21H6L8.55,16.91C9.5,17.6 10.71,18 12,18C13.29,18 14.5,17.6 15.45,16.91L18,21M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; -var mdiSpotlightBeam = "M9,16.5L9.91,15.59L15.13,20.8L14.21,21.71L9,16.5M15.5,10L16.41,9.09L21.63,14.3L20.71,15.21L15.5,10M6.72,2.72L10.15,6.15L6.15,10.15L2.72,6.72C1.94,5.94 1.94,4.67 2.72,3.89L3.89,2.72C4.67,1.94 5.94,1.94 6.72,2.72M14.57,7.5L15.28,8.21L8.21,15.28L7.5,14.57L6.64,11.07L11.07,6.64L14.57,7.5Z"; -var mdiSpray = "M10,4H12V6H10V4M7,3H9V5H7V3M7,6H9V8H7V6M6,8V10H4V8H6M6,5V7H4V5H6M6,2V4H4V2H6M13,22A2,2 0 0,1 11,20V10A2,2 0 0,1 13,8V7H14V4H17V7H18V8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H13M13,10V20H18V10H13Z"; -var mdiSprayBottle = "M12,7H15C15.66,7.64 16,8.31 16,9V22H8V15C8,14.72 8.11,14.39 8.3,14L12,7M16,4L15,6H12V5L10,7H9L10,5V4H9V2H14.5A1.5,1.5 0 0,1 16,3.5V4Z"; -var mdiSprinkler = "M11 7H13V9H11V7M5 22H9V10H5V22M14 11H16V9H14V11M17 10H19V8H17V10M17 5V7H19V5H17M14 8H16V6H14V8M17 13H19V11H17V13M5 7H5.33L6 9H8L8.67 7H9V6H5V7Z"; -var mdiSprinklerVariant = "M10 10H14V22H10V10M7 9H9V7H7V9M4 8H6V6H4V8M4 11H6V9H4V11M1 13H3V11H1V13M1 7H3V5H1V7M1 10H3V8H1V10M18 11H20V9H18V11M21 10H23V8H21V10M21 5V7H23V5H21M21 13H23V11H21V13M15 9H17V7H15V9M18 8H20V6H18V8M10 7H10.33L11 9H13L13.67 7H14V6H10V7Z"; -var mdiSprout = "M2,22V20C2,20 7,18 12,18C17,18 22,20 22,20V22H2M11.3,9.1C10.1,5.2 4,6.1 4,6.1C4,6.1 4.2,13.9 9.9,12.7C9.5,9.8 8,9 8,9C10.8,9 11,12.4 11,12.4V17C11.3,17 11.7,17 12,17C12.3,17 12.7,17 13,17V12.8C13,12.8 13,8.9 16,7.9C16,7.9 14,10.9 14,12.9C21,13.6 21,4 21,4C21,4 12.1,3 11.3,9.1Z"; -var mdiSproutOutline = "M23,4.1V2.3L21.2,2.1C21.1,2.1 20.5,2 19.5,2C15.4,2 12.4,3.2 10.7,5.3C9.4,4.5 7.6,4 5.5,4C4.5,4 3.8,4.1 3.8,4.1L1.9,4.4L2,6.1C2.1,9.1 3.6,14.8 8.8,14.8C8.9,14.8 8.9,14.8 9,14.8V18.2C5.2,18.7 2,20 2,20V22H22V20C22,20 18.8,18.7 15,18.2V15C21.3,14.9 23,7.8 23,4.1M12,18C11.7,18 11.3,18 11,18V12.4C11,12.4 10.8,9 8,9C8,9 9.5,9.8 9.9,12.7C9.5,12.8 9.1,12.8 8.8,12.8C4.2,12.8 4,6.1 4,6.1C4,6.1 4.6,6 5.5,6C7.4,6 10.5,6.4 11.4,9.1C11.9,4.6 17,4 19.5,4C20.4,4 21,4.1 21,4.1C21,4.1 21,13.1 14.7,13.1C14.5,13.1 14.2,13.1 14,13.1C14,11.1 16,8.1 16,8.1C13,9.1 13,13 13,13V18C12.7,18 12.3,18 12,18Z"; -var mdiSquare = "M3,3V21H21V3"; -var mdiSquareCircle = "M20 4V20H4V4H20M22 2H2V22H22V2M12 6C8.69 6 6 8.69 6 12S8.69 18 12 18 18 15.31 18 12 15.31 6 12 6Z"; -var mdiSquareEditOutline = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19H5V5H12V3H5M17.78,4C17.61,4 17.43,4.07 17.3,4.2L16.08,5.41L18.58,7.91L19.8,6.7C20.06,6.44 20.06,6 19.8,5.75L18.25,4.2C18.12,4.07 17.95,4 17.78,4M15.37,6.12L8,13.5V16H10.5L17.87,8.62L15.37,6.12Z"; -var mdiSquareMedium = "M16,8H8V16H16V8Z"; -var mdiSquareMediumOutline = "M14,10V14H10V10H14M16,8H8V16H16V8Z"; -var mdiSquareOff = "M20.84 22.73L19.11 21H3V4.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M21 3H6.2L21 17.8V3Z"; -var mdiSquareOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L3 4.89V21H19.11L20.84 22.73L22.11 21.46M5 19V6.89L17.11 19H5M8.2 5L6.2 3H21V17.8L19 15.8V5H8.2Z"; -var mdiSquareOutline = "M3,3H21V21H3V3M5,5V19H19V5H5Z"; -var mdiSquareRoot = "M11.76,16.83L14.59,14L11.76,11.17L13.17,9.76L16,12.59L18.83,9.76L20.24,11.17L17.41,14L20.24,16.83L18.83,18.24L16,15.41L13.17,18.24L11.76,16.83M2,11H5V11H5L7.29,16.4L10,6H22V8H11.55L8.68,19H6.22L3.68,13H2V11Z"; -var mdiSquareRootBox = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M11.24,6H19V8H12.76L10,18H8L6.25,12H5V10H7.75L9,14.28L11.24,6V6M14,10.59L15.79,12.38L17.59,10.59L19,12L17.21,13.79L19,15.59L17.59,17L15.79,15.21L14,17L12.59,15.59L14.38,13.79L12.59,12L14,10.59Z"; -var mdiSquareRounded = "M8 3H16C18.76 3 21 5.24 21 8V16C21 18.76 18.76 21 16 21H8C5.24 21 3 18.76 3 16V8C3 5.24 5.24 3 8 3Z"; -var mdiSquareRoundedOutline = "M8 3H16C18.76 3 21 5.24 21 8V16C21 18.76 18.76 21 16 21H8C5.24 21 3 18.76 3 16V8C3 5.24 5.24 3 8 3M8 5C6.34 5 5 6.34 5 8V16C5 17.66 6.34 19 8 19H16C17.66 19 19 17.66 19 16V8C19 6.34 17.66 5 16 5H8Z"; -var mdiSquareSmall = "M10,14V10H14V14H10Z"; -var mdiSquareWave = "M2 2V12H4V4H11V22H22V12H20V20H13V2H2Z"; -var mdiSqueegee = "M22,2V5H2V2H22M2,8H7L9,10H10V20A2,2 0 0,0 12,22A2,2 0 0,0 14,20V10H15L17,8H22V6H2V8Z"; -var mdiSsh = "M4.5,9C3.9,9 3.5,9.5 3.5,10V11.75C3.5,12.25 3.9,12.75 4.5,12.75H7V13.5H3.5V15H7.5C8.1,15 8.5,14.5 8.5,14V12.25C8.5,11.75 8.1,11.25 7.5,11.25H5V10.5H8.5V9H4.5M10.5,9C9.9,9 9.5,9.5 9.5,10V11.75C9.5,12.25 9.9,12.75 10.5,12.75H13V13.5H9.5V15H13.5C14.1,15 14.5,14.5 14.5,14V12.25C14.5,11.75 14.1,11.25 13.5,11.25H11V10.5H14.5V9H10.5M15.5,9V15H17V12.5H19V15H20.5V9H19V11H17V9H15.5Z"; -var mdiStackExchange = "M3.9 10.72H20V14.03H3.9V10.72M3.9 6.44H20V9.75H3.9V6.44M17.5 2H6.5C5.06 2 3.9 3.18 3.9 4.65V5.5H20V4.65C20 3.18 18.88 2 17.5 2M3.9 15V15.84C3.9 17.31 5.06 18.5 6.5 18.5H13.37V22L16.77 18.5H17.5C18.94 18.5 20.11 17.31 20.11 15.84V15H3.9Z"; -var mdiStackOverflow = "M17.36,20.2V14.82H19.15V22H3V14.82H4.8V20.2H17.36M6.77,14.32L7.14,12.56L15.93,14.41L15.56,16.17L6.77,14.32M7.93,10.11L8.69,8.5L16.83,12.28L16.07,13.9L7.93,10.11M10.19,6.12L11.34,4.74L18.24,10.5L17.09,11.87L10.19,6.12M14.64,1.87L20,9.08L18.56,10.15L13.2,2.94L14.64,1.87M6.59,18.41V16.61H15.57V18.41H6.59Z"; -var mdiStackpath = "M4.91 8C4.04 8 3.32 8.2 2.76 8.61C2.19 9 1.91 9.53 1.91 10.19C1.91 10.85 2.15 11.37 2.62 11.72C3.1 12.07 3.82 12.41 4.8 12.72C5.27 12.88 5.6 13.04 5.78 13.19C5.96 13.34 6.05 13.55 6.05 13.83C6.05 14.07 5.96 14.26 5.78 14.41C5.6 14.56 5.32 14.63 4.94 14.63C4.45 14.63 4.09 14.54 3.85 14.35C3.6 14.16 3.5 13.84 3.5 13.39H1.72L1.71 13.42C1.7 14.25 2 14.89 2.66 15.33C3.3 15.78 4.06 16 4.94 16C5.82 16 6.5 15.8 7.06 15.42C7.59 15.03 7.86 14.5 7.86 13.81C7.86 13.14 7.63 12.61 7.19 12.23C6.74 11.84 6.08 11.5 5.2 11.26C4.62 11.05 4.23 10.88 4 10.74C3.81 10.6 3.71 10.42 3.71 10.2C3.71 9.96 3.81 9.76 4 9.6C4.22 9.44 4.5 9.36 4.87 9.36C5.24 9.36 5.53 9.46 5.74 9.65C5.96 9.84 6.07 10.12 6.06 10.41H7.8L7.82 10.37C7.84 9.68 7.57 9.11 7 8.66C6.47 8.22 5.77 8 4.91 8M9 8.05V15.93H10.84V13.23H11.96C12.89 13.23 13.63 13 14.18 12.5C14.73 12.05 15 11.42 15 10.64C15 9.87 14.73 9.25 14.18 8.77C13.63 8.29 12.89 8.05 11.96 8.05H9M17.24 8.05L14.5 15.93H16.22L19 8.05M20.5 8.05L17.79 15.93H19.5L22.29 8.05M10.84 9.46H11.96C12.35 9.46 12.66 9.57 12.86 9.8C13.07 10 13.17 10.31 13.17 10.65C13.17 11 13.07 11.28 12.86 11.5C12.66 11.71 12.35 11.82 11.96 11.82H10.84"; -var mdiStadium = "M22 13.5V17.5C22 19.2 17.5 20.5 12 20.5C10.6 20.5 9.2 20.4 8 20.2V17.5L4 16.5V19.3C2.7 18.8 2 18.2 2 17.5V11.5C2 10.5 4 9.5 6 9.5C12 9.5 14 15 19 15C21 15 22 13.5 22 13.5M5 8L9 9V6L5 5V8M18 6.5L22 7.5V4.5L18 3.5V6.5M22.3 10.8C22.3 9.8 21.5 8 18.7 8S13.4 10.7 13.3 10.9C15.1 12.2 16.5 13.5 19 13.5C22.3 13.5 22.3 10.8 22.3 10.8Z"; -var mdiStadiumVariant = "M5,3H7L10,5L7,7V8.33C8.47,8.12 10.18,8 12,8C13.82,8 15.53,8.12 17,8.33V3H19L22,5L19,7V8.71C20.85,9.17 22,9.8 22,10.5C22,11.88 17.5,13 12,13C6.5,13 2,11.88 2,10.5C2,9.8 3.15,9.17 5,8.71V3M12,9.5C8.69,9.5 7,9.67 7,10.5C7,11.33 8.69,11.5 12,11.5C15.31,11.5 17,11.33 17,10.5C17,9.67 15.31,9.5 12,9.5M12,14.75C15.81,14.75 19.2,14.08 21.4,13.05L20,21H15V19A2,2 0 0,0 13,17H11A2,2 0 0,0 9,19V21H4L2.6,13.05C4.8,14.08 8.19,14.75 12,14.75Z"; -var mdiStairs = "M15,5V9H11V13H7V17H3V20H10V16H14V12H18V8H22V5H15Z"; -var mdiStairsBox = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M14 7H19V9H16V12H13V15H10V18H5V16H8V13H11V10H14V7Z"; -var mdiStairsDown = "M15 6H22V9H18V13H14V17H10V21H3V18H7V14H11V10H15V6M4.83 8.34L10.34 2.83L12.17 4.66L6.66 10.17L8.5 12H3V6.5L4.83 8.34Z"; -var mdiStairsUp = "M15 6H22V9H18V13H14V17H10V21H3V18H7V14H11V10H15V6M10.17 6.66L4.66 12.17L2.83 10.34L8.34 4.83L6.5 3H12V8.5L10.17 6.66Z"; -var mdiStamper = "M12,3A3,3 0 0,0 9,6C9,9 14,13 6,13A2,2 0 0,0 4,15V17H20V15A2,2 0 0,0 18,13C10,13 15,9 15,6C15,4 13.66,3 12,3M6,19V21H18V19H6Z"; -var mdiStandardDefinition = "M13,7H16A3,3 0 0,1 19,10V14A3,3 0 0,1 16,17H13V7M16,15A1,1 0 0,0 17,14V10A1,1 0 0,0 16,9H15V15H16M7,7H11V9H7V11H9A2,2 0 0,1 11,13V15A2,2 0 0,1 9,17H5V15H9V13H7A2,2 0 0,1 5,11V9A2,2 0 0,1 7,7Z"; -var mdiStar = "M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z"; -var mdiStarBox = "M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M15.58,17L14.63,12.92L17.79,10.19L13.62,9.83L12,6L10.38,9.84L6.21,10.2L9.37,12.93L8.42,17L12,14.84L15.58,17Z"; -var mdiStarBoxMultiple = "M4 6V20H18V22H3C2.4 22 2 21.6 2 21V6H4M8 2H20C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H8C6.9 18 6 17.11 6 16V4C6 2.9 6.9 2 8 2M16.3 13.3L15.9 10.7L17.8 8.8L15.2 8.4L14 6L12.8 8.4L10.2 8.8L12.1 10.6L11.6 13.2L14 12L16.3 13.3Z"; -var mdiStarBoxMultipleOutline = "M4 6V20H18V22H3C2.4 22 2 21.6 2 21V6H4M12.1 10.6L10.2 8.8L12.8 8.4L14 6L15.2 8.4L17.8 8.8L15.9 10.7L16.3 13.3L14 12L11.6 13.2L12.1 10.6M8 2H20C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H8C6.9 18 6 17.11 6 16V4C6 2.9 6.9 2 8 2M8 4V16H20V4H8Z"; -var mdiStarBoxOutline = "M15.58,17L12,14.84L8.42,17L9.37,12.93L6.21,10.2L10.38,9.84L12,6L13.62,9.83L17.79,10.19L14.63,12.92L15.58,17M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M5,5V19H19V5H5Z"; -var mdiStarCheck = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C14.9 12 12.4 14.3 12 17.3L5.8 21M17.8 21.2L22.6 16.4L21.3 15L17.7 18.6L16.2 17L15 18.2L17.8 21.2"; -var mdiStarCheckOutline = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C17.3 12 16.6 12.1 15.9 12.4L18.1 10.5L13.7 10.1L12 6.1L10.3 10.1L5.9 10.5L9.2 13.4L8.2 17.7L12 15.4L12.5 15.7C12.3 16.2 12.1 16.8 12.1 17.3L5.8 21M17.8 21.2L15 18.2L16.2 17L17.8 18.6L21.4 15L22.6 16.4L17.8 21.2"; -var mdiStarCircle = "M16.23,18L12,15.45L7.77,18L8.89,13.19L5.16,9.96L10.08,9.54L12,5L13.92,9.53L18.84,9.95L15.11,13.18L16.23,18M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiStarCircleOutline = "M8.58,17.25L9.5,13.36L6.5,10.78L10.45,10.41L12,6.8L13.55,10.45L17.5,10.78L14.5,13.36L15.42,17.25L12,15.19L8.58,17.25M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z"; -var mdiStarCog = "M18.8 12C15.59 12.1 12.91 14.37 12.19 17.39L12 17.27L5.82 21L7.45 13.97L2 9.24L9.19 8.62L12 2L14.81 8.62L22 9.24L18.8 12M23.83 20.64L22.83 22.37C22.76 22.5 22.63 22.5 22.5 22.5L21.27 22C21 22.18 20.73 22.34 20.43 22.47L20.24 23.79C20.22 23.91 20.11 24 20 24H18C17.86 24 17.76 23.91 17.74 23.79L17.55 22.47C17.24 22.35 16.96 22.18 16.7 22L15.46 22.5C15.34 22.5 15.21 22.5 15.15 22.37L14.15 20.64C14.09 20.53 14.12 20.4 14.21 20.32L15.27 19.5C15.25 19.33 15.24 19.17 15.24 19S15.25 18.67 15.27 18.5L14.21 17.68C14.11 17.6 14.09 17.47 14.15 17.36L15.15 15.63C15.22 15.5 15.35 15.5 15.46 15.5L16.7 16C16.96 15.82 17.25 15.66 17.55 15.53L17.74 14.21C17.76 14.09 17.87 14 18 14H20C20.11 14 20.22 14.09 20.23 14.21L20.42 15.53C20.73 15.65 21 15.82 21.27 16L22.5 15.5C22.63 15.5 22.76 15.5 22.82 15.63L23.82 17.36C23.88 17.47 23.85 17.6 23.76 17.68L22.7 18.5C22.73 18.67 22.74 18.83 22.74 19S22.72 19.33 22.7 19.5L23.77 20.32C23.86 20.4 23.89 20.53 23.83 20.64M20.5 19C20.5 18.17 19.83 17.5 19 17.5S17.5 18.17 17.5 19 18.16 20.5 19 20.5C19.83 20.5 20.5 19.83 20.5 19Z"; -var mdiStarCogOutline = "M10.29 10.13L5.91 10.5L9.23 13.38L8.24 17.66L12 15.39L12.76 15.85C12.5 16.33 12.32 16.85 12.19 17.39L12 17.27L5.82 21L7.45 13.97L2 9.24L9.19 8.63L12 2L14.81 8.63L22 9.24L18.8 12C17.29 12.05 15.91 12.57 14.78 13.43L14.77 13.38L18.09 10.5L13.71 10.13L12 6.09L10.29 10.13M23.83 20.64L22.83 22.37C22.76 22.5 22.63 22.5 22.5 22.5L21.27 22C21 22.18 20.73 22.34 20.43 22.47L20.24 23.79C20.22 23.91 20.11 24 20 24H18C17.86 24 17.76 23.91 17.74 23.79L17.55 22.47C17.24 22.35 16.96 22.18 16.7 22L15.46 22.5C15.34 22.5 15.21 22.5 15.15 22.37L14.15 20.64C14.09 20.53 14.12 20.4 14.21 20.32L15.27 19.5C15.25 19.33 15.24 19.17 15.24 19S15.25 18.67 15.27 18.5L14.21 17.68C14.11 17.6 14.09 17.47 14.15 17.36L15.15 15.63C15.22 15.5 15.35 15.5 15.46 15.5L16.7 16C16.96 15.82 17.25 15.66 17.55 15.53L17.74 14.21C17.76 14.09 17.87 14 18 14H20C20.11 14 20.22 14.09 20.23 14.21L20.42 15.53C20.73 15.65 21 15.82 21.27 16L22.5 15.5C22.63 15.5 22.76 15.5 22.82 15.63L23.82 17.36C23.88 17.47 23.85 17.6 23.76 17.68L22.7 18.5C22.73 18.67 22.74 18.83 22.74 19S22.72 19.33 22.7 19.5L23.77 20.32C23.86 20.4 23.89 20.53 23.83 20.64M20.5 19C20.5 18.17 19.83 17.5 19 17.5S17.5 18.17 17.5 19 18.16 20.5 19 20.5C19.83 20.5 20.5 19.83 20.5 19Z"; -var mdiStarFace = "M12,2.5L8.42,8.06L2,9.74L6.2,14.88L5.82,21.5L12,19.09L18.18,21.5L17.8,14.88L22,9.74L15.58,8.06L12,2.5M9.38,10.5C10,10.5 10.5,11 10.5,11.63A1.12,1.12 0 0,1 9.38,12.75C8.75,12.75 8.25,12.25 8.25,11.63C8.25,11 8.75,10.5 9.38,10.5M14.63,10.5C15.25,10.5 15.75,11 15.75,11.63A1.12,1.12 0 0,1 14.63,12.75C14,12.75 13.5,12.25 13.5,11.63C13.5,11 14,10.5 14.63,10.5M9,15H15C14.5,16.21 13.31,17 12,17C10.69,17 9.5,16.21 9,15Z"; -var mdiStarFourPoints = "M12,1L9,9L1,12L9,15L12,23L15,15L23,12L15,9L12,1Z"; -var mdiStarFourPointsOutline = "M12,6.7L13.45,10.55L17.3,12L13.45,13.45L12,17.3L10.55,13.45L6.7,12L10.55,10.55L12,6.7M12,1L9,9L1,12L9,15L12,23L15,15L23,12L15,9L12,1Z"; -var mdiStarHalf = "M12 2L9.19 8.62L2 9.24L7.45 13.97L5.82 21L12 17.27V2Z"; -var mdiStarHalfFull = "M12,15.4V6.1L13.71,10.13L18.09,10.5L14.77,13.39L15.76,17.67M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z"; -var mdiStarMinus = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C14.9 12 12.4 14.3 12 17.3L5.8 21M14 17V19H22V17H14Z"; -var mdiStarMinusOutline = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C17.3 12 16.6 12.1 15.9 12.4L18.1 10.5L13.7 10.1L12 6.1L10.3 10.1L5.9 10.5L9.2 13.4L8.2 17.7L12 15.4L12.5 15.7C12.3 16.2 12.1 16.8 12.1 17.3L5.8 21M14 17V19H22V17H14Z"; -var mdiStarOff = "M20.8 22.7L17.9 19.8L18.2 21L12 17.3L5.8 21L7.4 14L2 9.2L6.9 8.8L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M22 9.2L14.8 8.6L12 2L10 6.8L16.9 13.7L22 9.2Z"; -var mdiStarOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L6.9 8.8L2 9.2L7.5 14L5.9 21L12.1 17.3L18.3 21L18 19.8L20.9 22.7L22.1 21.5M15.8 17.7L12 15.4L8.2 17.7L9.2 13.4L5.9 10.5L8.4 10.3L15.8 17.7M11.2 8L10 6.8L12 2L14.8 8.6L22 9.2L16.9 13.6L15.8 12.5L18.2 10.5L13.8 10.1L12.1 6.1L11.2 8Z"; -var mdiStarOutline = "M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z"; -var mdiStarPlus = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C14.9 12 12.4 14.3 12 17.3L5.8 21M17 14V17H14V19H17V22H19V19H22V17H19V14H17Z"; -var mdiStarPlusOutline = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C17.3 12 16.6 12.1 15.9 12.4L18.1 10.5L13.7 10.1L12 6.1L10.3 10.1L5.9 10.5L9.2 13.4L8.2 17.7L12 15.4L12.5 15.7C12.3 16.2 12.1 16.8 12.1 17.3L5.8 21M17 14V17H14V19H17V22H19V19H22V17H19V14H17Z"; -var mdiStarRemove = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C14.9 12 12.4 14.3 12 17.3L5.8 21M20.1 14.5L18 16.6L15.9 14.5L14.5 15.9L16.6 18L14.5 20.1L15.9 21.5L18 19.4L20.1 21.5L21.5 20.1L19.4 18L21.5 15.9L20.1 14.5Z"; -var mdiStarRemoveOutline = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C17.3 12 16.6 12.1 15.9 12.4L18.1 10.5L13.7 10.1L12 6.1L10.3 10.1L5.9 10.5L9.2 13.4L8.2 17.7L12 15.4L12.5 15.7C12.3 16.2 12.1 16.8 12.1 17.3L5.8 21M20.1 14.5L18 16.6L15.9 14.5L14.5 15.9L16.6 18L14.5 20.1L15.9 21.5L18 19.4L20.1 21.5L21.5 20.1L19.4 18L21.5 15.9L20.1 14.5Z"; -var mdiStarSettings = "M7 22H9V24H7V22M11 24H13V22H11V24M15 24H17V22H15V24M22 9.24L14.81 8.62L12 2L9.19 8.62L2 9.24L7.45 13.97L5.82 21L12 17.27L18.18 21L16.54 13.97L22 9.24Z"; -var mdiStarSettingsOutline = "M11 22H13V24H11V22M7 24H9V22H7V24M15 24H17V22H15V24M16.54 13.97L18.18 21L12 17.27L5.82 21L7.45 13.97L2 9.24L9.19 8.63L12 2L14.81 8.63L22 9.24L16.54 13.97M15.76 17.66L14.77 13.38L18.09 10.5L13.71 10.13L12 6.09L10.29 10.13L5.91 10.5L9.23 13.38L8.24 17.66L12 15.39L15.76 17.66Z"; -var mdiStarShooting = "M18.09 11.77L19.56 18.1L14 14.74L8.44 18.1L9.9 11.77L5 7.5L11.47 6.96L14 1L16.53 6.96L23 7.5L18.09 11.77M2 12.43C2.19 12.43 2.38 12.37 2.55 12.26L5.75 10.15L4.18 8.79L1.45 10.59C.989 10.89 .861 11.5 1.16 12C1.36 12.27 1.68 12.43 2 12.43M1.16 21.55C1.36 21.84 1.68 22 2 22C2.19 22 2.38 21.95 2.55 21.84L6.66 19.13L7 17.76L7.31 16.31L1.45 20.16C.989 20.47 .861 21.09 1.16 21.55M1.45 15.38C.989 15.68 .861 16.3 1.16 16.76C1.36 17.06 1.68 17.21 2 17.21C2.19 17.21 2.38 17.16 2.55 17.05L7.97 13.5L8.24 12.31L7.32 11.5L1.45 15.38Z"; -var mdiStarShootingOutline = "M23 7.5L16.53 6.96L14 1L11.47 6.96L5 7.5L9.9 11.77L8.44 18.1L14 14.74L19.56 18.1L18.09 11.77L23 7.5M16.14 12.23L16.54 13.94L15.03 13.03L14 12.41L12.97 13.03L11.46 13.94L11.85 12.23L12.13 11.05L11.22 10.26L9.88 9.1L11.64 8.95L12.84 8.85L13.31 7.74L14 6.12L14.69 7.74L15.16 8.85L16.36 8.95L18.11 9.1L16.78 10.26L15.86 11.05L16.14 12.23M1.16 12C.861 11.5 .989 10.89 1.45 10.59L4.18 8.79L5.75 10.15L2.55 12.26C2.38 12.37 2.19 12.43 2 12.43C1.68 12.43 1.36 12.27 1.16 12M1.45 20.16L7.31 16.31L7 17.76L6.66 19.13L2.55 21.84C2.38 21.95 2.19 22 2 22C1.68 22 1.36 21.84 1.16 21.55C.861 21.09 .989 20.47 1.45 20.16M7.32 11.5L8.24 12.31L7.97 13.5L2.55 17.05C2.38 17.16 2.19 17.21 2 17.21C1.68 17.21 1.36 17.06 1.16 16.76C.861 16.3 .989 15.68 1.45 15.38L7.32 11.5Z"; -var mdiStarThreePoints = "M12,2.6L9,12.4L2,19.9L12,17.6L22,20L15,12.5L12,2.6Z"; -var mdiStarThreePointsOutline = "M12,9.5L13.2,13.5L16,16.5L12,15.6L7.9,16.5L10.7,13.5L12,9.5M12,2.6L9,12.4L2,19.9L12,17.6L22,20L15,12.5L12,2.6Z"; -var mdiStateMachine = "M6.27 17.05C6.72 17.58 7 18.25 7 19C7 20.66 5.66 22 4 22S1 20.66 1 19 2.34 16 4 16C4.18 16 4.36 16 4.53 16.05L7.6 10.69L5.86 9.7L9.95 8.58L11.07 12.67L9.33 11.68L6.27 17.05M20 16C18.7 16 17.6 16.84 17.18 18H11V16L8 19L11 22V20H17.18C17.6 21.16 18.7 22 20 22C21.66 22 23 20.66 23 19S21.66 16 20 16M12 8C12.18 8 12.36 8 12.53 7.95L15.6 13.31L13.86 14.3L17.95 15.42L19.07 11.33L17.33 12.32L14.27 6.95C14.72 6.42 15 5.75 15 5C15 3.34 13.66 2 12 2S9 3.34 9 5 10.34 8 12 8Z"; -var mdiSteam = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C7.4,22 3.55,18.92 2.36,14.73L6.19,16.31C6.45,17.6 7.6,18.58 8.97,18.58C10.53,18.58 11.8,17.31 11.8,15.75V15.62L15.2,13.19H15.28C17.36,13.19 19.05,11.5 19.05,9.42C19.05,7.34 17.36,5.65 15.28,5.65C13.2,5.65 11.5,7.34 11.5,9.42V9.47L9.13,12.93L8.97,12.92C8.38,12.92 7.83,13.1 7.38,13.41L2,11.2C2.43,6.05 6.73,2 12,2M8.28,17.17C9.08,17.5 10,17.13 10.33,16.33C10.66,15.53 10.28,14.62 9.5,14.29L8.22,13.76C8.71,13.58 9.26,13.57 9.78,13.79C10.31,14 10.72,14.41 10.93,14.94C11.15,15.46 11.15,16.04 10.93,16.56C10.5,17.64 9.23,18.16 8.15,17.71C7.65,17.5 7.27,17.12 7.06,16.67L8.28,17.17M17.8,9.42C17.8,10.81 16.67,11.94 15.28,11.94C13.9,11.94 12.77,10.81 12.77,9.42A2.5,2.5 0 0,1 15.28,6.91C16.67,6.91 17.8,8.04 17.8,9.42M13.4,9.42C13.4,10.46 14.24,11.31 15.29,11.31C16.33,11.31 17.17,10.46 17.17,9.42C17.17,8.38 16.33,7.53 15.29,7.53C14.24,7.53 13.4,8.38 13.4,9.42Z"; -var mdiSteering = "M13,19.92C14.8,19.7 16.35,18.95 17.65,17.65C18.95,16.35 19.7,14.8 19.92,13H16.92C16.7,14 16.24,14.84 15.54,15.54C14.84,16.24 14,16.7 13,16.92V19.92M10,8H14L17,11H19.92C19.67,9.05 18.79,7.38 17.27,6C15.76,4.66 14,4 12,4C10,4 8.24,4.66 6.73,6C5.21,7.38 4.33,9.05 4.08,11H7L10,8M11,19.92V16.92C10,16.7 9.16,16.24 8.46,15.54C7.76,14.84 7.3,14 7.08,13H4.08C4.3,14.77 5.05,16.3 6.35,17.6C7.65,18.9 9.2,19.67 11,19.92M12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12C22,14.75 21,17.1 19.05,19.05C17.1,21 14.75,22 12,22C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,9.25 3,6.9 4.95,4.95C6.9,3 9.25,2 12,2Z"; -var mdiSteeringOff = "M2,5.27L3.28,4L20,20.72L18.73,22L17.25,20.5C15.7,21.5 13.95,22 12,22C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,10.05 2.5,8.3 3.5,6.75L2,5.27M13,19.92C14,19.8 14.93,19.5 15.78,19.05L13.5,16.78C13.34,16.84 13.16,16.88 13,16.92V19.92M4.08,11H7L7.37,10.63L4.96,8.23C4.5,9.08 4.21,10 4.08,11M19.92,13H16.92C16.8,13.54 16.6,14.05 16.33,14.5L9.91,8.09L10,8H14L17,11H19.92C19.67,9.05 18.79,7.38 17.27,6C15.76,4.66 14,4 12,4C10.26,4 8.71,4.5 7.34,5.5L5.91,4.09C7.66,2.71 9.69,2 12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12C22,14.31 21.29,16.34 19.91,18.09L18.5,16.67C19.28,15.59 19.76,14.36 19.92,13M11,19.92V16.92C10,16.7 9.16,16.24 8.46,15.54C7.76,14.84 7.3,14 7.08,13H4.08C4.3,14.77 5.05,16.3 6.35,17.6C7.65,18.9 9.2,19.67 11,19.92Z"; -var mdiStepBackward = "M19,5V19H16V5M14,5V19L3,12"; -var mdiStepBackward2 = "M17,5H14V19H17V5M12,5L1,12L12,19V5M22,5H19V19H22V5Z"; -var mdiStepForward = "M5,5V19H8V5M10,5V19L21,12"; -var mdiStepForward2 = "M7,5H10V19H7V5M12,5L23,12L12,19V5M2,5H5V19H2V5Z"; -var mdiStethoscope = "M19,8C19.56,8 20,8.43 20,9A1,1 0 0,1 19,10C18.43,10 18,9.55 18,9C18,8.43 18.43,8 19,8M2,2V11C2,13.96 4.19,16.5 7.14,16.91C7.76,19.92 10.42,22 13.5,22A6.5,6.5 0 0,0 20,15.5V11.81C21.16,11.39 22,10.29 22,9A3,3 0 0,0 19,6A3,3 0 0,0 16,9C16,10.29 16.84,11.4 18,11.81V15.41C18,17.91 16,19.91 13.5,19.91C11.5,19.91 9.82,18.7 9.22,16.9C12,16.3 14,13.8 14,11V2H10V5H12V11A4,4 0 0,1 8,15A4,4 0 0,1 4,11V5H6V2H2Z"; -var mdiSticker = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z"; -var mdiStickerAlert = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M13 17H11V15H13V16M13 13H11V7H13V12M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z"; -var mdiStickerAlertOutline = "M11 15H13V17H11V15M11 13H13V7H11V13M22 5.5V16L16 22H5.5C3.6 22 2 20.4 2 18.5V5.5C2 3.6 3.6 2 5.5 2H18.5C20.4 2 22 3.6 22 5.5M20 5.8C20 4.8 19.2 4 18.2 4H5.8C4.8 4 4 4.8 4 5.8V18.3C4 19.3 4.8 20.1 5.8 20.1H15V18.6C15 16.7 16.6 15.1 18.5 15.1H20V5.8Z"; -var mdiStickerCheck = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M7 12.5L8.3 11.1L10.4 13.2L15.6 8L17 9.4L10.5 16L7 12.5M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z"; -var mdiStickerCheckOutline = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M20 15H18.5C16.6 15 15 16.6 15 18.5V20H5.8C4.8 20 4 19.2 4 18.2V5.8C4 4.8 4.8 4 5.8 4H18.3C19.3 4 20.1 4.8 20.1 5.8V15M15.2 8.2L16.7 9.7L10.7 15.7L7.2 12.2L8.7 10.7L10.7 12.7L15.2 8.2Z"; -var mdiStickerCircleOutline = "M12.12,18.46L18.3,12.28C16.94,12.59 15.31,13.2 14.07,14.46C13.04,15.5 12.39,16.83 12.12,18.46M20.75,10H21.05C21.44,10 21.79,10.27 21.93,10.64C22.07,11 22,11.43 21.7,11.71L11.7,21.71C11.5,21.9 11.26,22 11,22L10.64,21.93C10.27,21.79 10,21.44 10,21.05C9.84,17.66 10.73,14.96 12.66,13.03C15.5,10.2 19.62,10 20.75,10M12,2C16.5,2 20.34,5 21.58,9.11L20,9H19.42C18.24,6.07 15.36,4 12,4A8,8 0 0,0 4,12C4,15.36 6.07,18.24 9,19.42C8.97,20.13 9,20.85 9.11,21.57C5,20.33 2,16.5 2,12C2,6.47 6.5,2 12,2Z"; -var mdiStickerEmoji = "M5.5,2C3.56,2 2,3.56 2,5.5V18.5C2,20.44 3.56,22 5.5,22H16L22,16V5.5C22,3.56 20.44,2 18.5,2H5.5M5.75,4H18.25A1.75,1.75 0 0,1 20,5.75V15H18.5C16.56,15 15,16.56 15,18.5V20H5.75A1.75,1.75 0 0,1 4,18.25V5.75A1.75,1.75 0 0,1 5.75,4M14.44,6.77C14.28,6.77 14.12,6.79 13.97,6.83C13.03,7.09 12.5,8.05 12.74,9C12.79,9.15 12.86,9.3 12.95,9.44L16.18,8.56C16.18,8.39 16.16,8.22 16.12,8.05C15.91,7.3 15.22,6.77 14.44,6.77M8.17,8.5C8,8.5 7.85,8.5 7.7,8.55C6.77,8.81 6.22,9.77 6.47,10.7C6.5,10.86 6.59,11 6.68,11.16L9.91,10.28C9.91,10.11 9.89,9.94 9.85,9.78C9.64,9 8.95,8.5 8.17,8.5M16.72,11.26L7.59,13.77C8.91,15.3 11,15.94 12.95,15.41C14.9,14.87 16.36,13.25 16.72,11.26Z"; -var mdiStickerMinus = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M8 11H16V13H8V11M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z"; -var mdiStickerMinusOutline = "M8 11H16V13H8V11M22 5.5V16L16 22H5.5C3.6 22 2 20.4 2 18.5V5.5C2 3.6 3.6 2 5.5 2H18.5C20.4 2 22 3.6 22 5.5M20 5.8C20 4.8 19.2 4 18.2 4H5.8C4.8 4 4 4.8 4 5.8V18.3C4 19.3 4.8 20.1 5.8 20.1H15V18.6C15 16.7 16.6 15.1 18.5 15.1H20V5.8Z"; -var mdiStickerOutline = "M5.5 2C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2H5.5M5.8 4H18.3C19.3 4 20.1 4.8 20.1 5.8V15H18.6C16.7 15 15.1 16.6 15.1 18.5V20H5.8C4.8 20 4 19.2 4 18.2V5.8C4 4.8 4.8 4 5.8 4"; -var mdiStickerPlus = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M13 16H11V13H8V11H11V8H13V11H16V13H13V16M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z"; -var mdiStickerPlusOutline = "M13 11H16V13H13V16H11V13H8V11H11V8H13V11M22 5.5V16L16 22H5.5C3.6 22 2 20.4 2 18.5V5.5C2 3.6 3.6 2 5.5 2H18.5C20.4 2 22 3.6 22 5.5M20 5.8C20 4.8 19.2 4 18.2 4H5.8C4.8 4 4 4.8 4 5.8V18.3C4 19.3 4.8 20.1 5.8 20.1H15V18.6C15 16.7 16.6 15.1 18.5 15.1H20V5.8Z"; -var mdiStickerRemove = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M12 13.4L9.9 15.5L8.5 14.1L10.6 12L8.5 9.9L9.9 8.5L12 10.6L14.1 8.5L15.5 9.9L13.4 12L15.5 14.1L14.1 15.5L12 13.4M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z"; -var mdiStickerRemoveOutline = "M16 9.4L13.4 12L16 14.6L14.6 16L12 13.4L9.4 16L8 14.6L10.6 12L8 9.4L9.4 8L12 10.6L14.6 8L16 9.4M22 5.5V16L16 22H5.5C3.6 22 2 20.4 2 18.5V5.5C2 3.6 3.6 2 5.5 2H18.5C20.4 2 22 3.6 22 5.5M20 5.8C20 4.8 19.2 4 18.2 4H5.8C4.8 4 4 4.8 4 5.8V18.3C4 19.3 4.8 20.1 5.8 20.1H15V18.6C15 16.7 16.6 15.1 18.5 15.1H20V5.8Z"; -var mdiStocking = "M17,2A2,2 0 0,1 19,4V7A2,2 0 0,1 17,9V17C17,17.85 16.5,18.57 15.74,18.86L9.5,21.77C8.5,22.24 7.29,21.81 6.83,20.81L6,19C5.5,18 5.95,16.8 6.95,16.34L10,14.91V9A2,2 0 0,1 8,7V4A2,2 0 0,1 10,2H17M10,4V7H17V4H10Z"; -var mdiStomach = "M4 18C4.67 19.85 6.07 22 12 22C14.36 22 17.07 21.93 19 20C20 19 22 17 22 11S20 4 18 4C16.62 4 15 4 14 6V6.03A1.82 1.82 0 0 1 12.13 6.95C11 6.81 11 6.37 11 6V2H9V6A2.92 2.92 0 0 0 12 9C13 9 13 10.78 13 12C13 13.89 12.5 15.26 11 16C8.69 17.15 6.39 17 5.61 15.47A1.5 1.5 0 0 0 3.14 14.87A3.67 3.67 0 0 0 2 18V22H4Z"; -var mdiStop = "M18,18H6V6H18V18Z"; -var mdiStopCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M9,9H15V15H9"; -var mdiStopCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M9,9V15H15V9"; -var mdiStore = "M12,18H6V14H12M21,14V12L20,7H4L3,12V14H4V20H14V14H18V20H20V14M20,4H4V6H20V4Z"; -var mdiStore24Hour = "M16,12H15V10H13V7H14V9H15V7H16M11,10H9V11H11V12H8V9H10V8H8V7H11M19,7V4H5V7H2V20H10V16H14V20H22V7H19Z"; -var mdiStoreMinus = "M4 4V6H20V4M4 7L3 12V14H4V20H13C12.95 19.66 12.92 19.31 12.92 18.95C12.92 17.73 13.3 16.53 14 15.53V14H15.54C16.54 13.33 17.71 12.96 18.91 12.96C19.62 12.96 20.33 13.09 21 13.34V12L20 7M6 14H12V18H6M15 18V20H23V18"; -var mdiStoreOutline = "M18.36 9L18.96 12H5.04L5.64 9H18.36M20 4H4V6H20V4M20 7H4L3 12V14H4V20H14V14H18V20H20V14H21V12L20 7M6 18V14H12V18H6Z"; -var mdiStorePlus = "M4 4V6H20V4M4 7L3 12V14H4V20H13C12.95 19.66 12.92 19.31 12.92 18.95C12.92 17.73 13.3 16.53 14 15.53V14H15.54C16.54 13.33 17.71 12.96 18.91 12.96C19.62 12.96 20.33 13.09 21 13.34V12L20 7M6 14H12V18H6M18 15V18H15V20H18V23H20V20H23V18H20V15"; -var mdiStoreRemove = "M4 4H20V6H4V4M15.46 16.88L16.88 15.46L19 17.59L21.12 15.47L22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.47 16.88M4 7H20L21 12V13.34C20.33 13.09 19.62 12.96 18.91 12.96C17.71 12.96 16.54 13.33 15.54 14H14V15.53C13.3 16.53 12.92 17.73 12.92 18.95L13 20H4V14H3V12L4 7M6 14V18H12V14H6Z"; -var mdiStorefront = "M5.06 3C4.63 3 4.22 3.14 3.84 3.42C3.46 3.7 3.24 4.06 3.14 4.5L2.11 8.91C1.86 10 2.06 10.92 2.69 11.73C2.81 11.85 2.93 11.97 3.04 12.07C3.63 12.64 4.28 13 5.22 13C6.16 13 6.91 12.59 7.47 12.05C8.1 12.67 8.86 13 9.8 13C10.64 13 11.44 12.63 12 12.07C12.68 12.7 13.45 13 14.3 13C15.17 13 15.91 12.67 16.54 12.05C17.11 12.62 17.86 13 18.81 13C19.76 13 20.43 12.65 21 12.06C21.09 11.97 21.18 11.87 21.28 11.77C21.94 10.95 22.14 10 21.89 8.91L20.86 4.5C20.73 4.06 20.5 3.7 20.13 3.42C19.77 3.14 19.38 3 18.94 3M18.89 4.97L19.97 9.38C20.06 9.81 19.97 10.2 19.69 10.55C19.44 10.86 19.13 11 18.75 11C18.44 11 18.17 10.9 17.95 10.66C17.73 10.43 17.61 10.16 17.58 9.84L16.97 5M5.06 5H7.03L6.42 9.84C6.3 10.63 5.91 11 5.25 11C4.84 11 4.53 10.86 4.31 10.55C4.03 10.2 3.94 9.81 4.03 9.38M9.05 5H11V9.7C11 10.05 10.89 10.35 10.64 10.62C10.39 10.88 10.08 11 9.7 11C9.36 11 9.07 10.88 8.84 10.59C8.61 10.3 8.5 10 8.5 9.66V9.5M13 5H14.95L15.5 9.5C15.58 9.92 15.5 10.27 15.21 10.57C14.95 10.87 14.61 11 14.2 11C13.89 11 13.61 10.88 13.36 10.62C13.11 10.35 13 10.05 13 9.7M3 14.03V19C3 20.11 3.89 21 5 21C9.67 21 14.33 21 19 21C20.1 21 21 20.11 21 19V14.05C20.45 14.63 19.75 14.96 19 15C18 15.03 17.25 14.74 16.54 14.05C15.94 14.65 15.14 15 14.3 15C13.4 15 12.6 14.64 12 14.07C11.43 14.64 10.65 15 9.78 15C8.87 15 8.07 14.65 7.47 14.05C6.89 14.64 6.1 15 5.23 15C4.33 15 3.66 14.65 3 14.03Z"; -var mdiStorefrontOutline = "M5.06 3C4.63 3 4.22 3.14 3.84 3.42S3.24 4.06 3.14 4.5L2.11 8.91C1.86 10 2.06 10.95 2.72 11.77L3 12.05V19C3 19.5 3.2 20 3.61 20.39S4.5 21 5 21H19C19.5 21 20 20.8 20.39 20.39S21 19.5 21 19V12.05L21.28 11.77C21.94 10.95 22.14 10 21.89 8.91L20.86 4.5C20.73 4.06 20.5 3.7 20.13 3.42C19.77 3.14 19.38 3 18.94 3H5.06M18.89 4.97L19.97 9.38C20.06 9.81 19.97 10.2 19.69 10.55C19.44 10.86 19.13 11 18.75 11C18.44 11 18.17 10.9 17.95 10.66C17.73 10.43 17.61 10.16 17.58 9.84L16.97 5L18.89 4.97M5.06 5H7.03L6.42 9.84C6.3 10.63 5.91 11 5.25 11C4.84 11 4.53 10.86 4.31 10.55C4.03 10.2 3.94 9.81 4.03 9.38L5.06 5M9.05 5H11V9.7C11 10.05 10.89 10.35 10.64 10.62C10.39 10.88 10.08 11 9.7 11C9.36 11 9.07 10.88 8.84 10.59S8.5 10 8.5 9.66V9.5L9.05 5M13 5H14.95L15.5 9.5C15.58 9.92 15.5 10.27 15.21 10.57C14.95 10.87 14.61 11 14.2 11C13.89 11 13.61 10.88 13.36 10.62C13.11 10.35 13 10.05 13 9.7V5M7.45 12.05C8.08 12.67 8.86 13 9.8 13C10.64 13 11.38 12.67 12 12.05C12.69 12.67 13.45 13 14.3 13C15.17 13 15.92 12.67 16.55 12.05C17.11 12.67 17.86 13 18.8 13H19.03V19H5V13H5.25C6.16 13 6.89 12.67 7.45 12.05Z"; -var mdiStove = "M6,14H8L11,17H9L6,14M4,4H5V3A1,1 0 0,1 6,2H10A1,1 0 0,1 11,3V4H13V3A1,1 0 0,1 14,2H18A1,1 0 0,1 19,3V4H20A2,2 0 0,1 22,6V19A2,2 0 0,1 20,21V22H17V21H7V22H4V21A2,2 0 0,1 2,19V6A2,2 0 0,1 4,4M18,7A1,1 0 0,1 19,8A1,1 0 0,1 18,9A1,1 0 0,1 17,8A1,1 0 0,1 18,7M14,7A1,1 0 0,1 15,8A1,1 0 0,1 14,9A1,1 0 0,1 13,8A1,1 0 0,1 14,7M20,6H4V10H20V6M4,19H20V12H4V19M6,7A1,1 0 0,1 7,8A1,1 0 0,1 6,9A1,1 0 0,1 5,8A1,1 0 0,1 6,7M13,14H15L18,17H16L13,14Z"; -var mdiStrategy = "M6.91 5.5L9.21 7.79L7.79 9.21L5.5 6.91L3.21 9.21L1.79 7.79L4.09 5.5L1.79 3.21L3.21 1.79L5.5 4.09L7.79 1.79L9.21 3.21M22.21 16.21L20.79 14.79L18.5 17.09L16.21 14.79L14.79 16.21L17.09 18.5L14.79 20.79L16.21 22.21L18.5 19.91L20.79 22.21L22.21 20.79L19.91 18.5M20.4 6.83L17.18 11L15.6 9.73L16.77 8.23A9.08 9.08 0 0 0 10.11 13.85A4.5 4.5 0 1 1 7.5 13A4 4 0 0 1 8.28 13.08A11.27 11.27 0 0 1 16.43 6.26L15 5.18L16.27 3.6M10 17.5A2.5 2.5 0 1 0 7.5 20A2.5 2.5 0 0 0 10 17.5Z"; -var mdiStretchToPage = "M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2M9,19H5V15L6.29,16.29L7.83,14.75L9.25,16.17L7.71,17.71M7.83,9.25L6.29,7.71L5,9V5H9L7.71,6.29L9.25,7.83M19,19H15L16.29,17.71L14.75,16.17L16.17,14.75L17.71,16.29L19,15M19,9L17.71,7.71L16.17,9.25L14.75,7.83L16.29,6.29L15,5H19"; -var mdiStretchToPageOutline = "M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2M20,20H4V4H20M8.83,10.25L7.29,8.71L6,10V6H10L8.71,7.29L10.25,8.83M13.75,8.83L15.29,7.29L14,6H18V10L16.71,8.71L15.17,10.25M15.17,13.75L16.71,15.29L18,14V18H14L15.29,16.71L13.75,15.17M10.25,15.17L8.71,16.71L10,18H6V14L7.29,15.29L8.83,13.75"; -var mdiStringLights = "M22.56 11.39C22.36 10.59 21.82 9.85 21.05 9.44L20.63 7.74C21.11 7.58 21.57 7.41 22 7.23V5C20 6.07 16.53 7.03 12 7.03S4 6.07 2 5V7.23C2.43 7.41 2.89 7.58 3.37 7.74L2.95 9.44C2.18 9.85 1.64 10.59 1.44 11.39C.905 13.57 .385 17.31 2.92 17.93C4 18.2 6 17.89 7.27 12.82C7.46 12 7.33 11.12 6.84 10.39L7.26 8.67C8.14 8.81 9.05 8.9 10 8.96V10.74C9.35 11.33 9 12.17 9 13C9 15.24 9.39 19 12 19C13.12 19 15 18.22 15 13C15 12.17 14.65 11.33 14 10.74V8.96C14.95 8.9 15.86 8.81 16.74 8.67L17.16 10.39C16.67 11.12 16.54 12 16.73 12.82C18 17.89 20 18.2 21.08 17.93C23.61 17.31 23.09 13.57 22.56 11.39M5.81 12.47C5.81 12.47 4.74 16.84 3.28 16.5C1.82 16.12 2.9 11.75 2.9 11.75S3.26 10.29 4.71 10.65 5.81 12.47 5.81 12.47M12 17.5C10.5 17.5 10.5 13 10.5 13S10.5 11.5 12 11.5 13.5 13 13.5 13 13.5 17.5 12 17.5M20.72 16.5C19.27 16.84 18.19 12.47 18.19 12.47S17.83 11 19.29 10.65 21.1 11.75 21.1 11.75 22.18 16.12 20.72 16.5Z"; -var mdiStringLightsOff = "M14 10.74V8.96C14.95 8.9 15.86 8.81 16.74 8.67L17.16 10.39C16.67 11.12 16.54 12 16.73 12.82C16.82 13.17 16.91 13.5 17 13.8L21.12 17.92C23.61 17.26 23.09 13.55 22.56 11.39C22.36 10.59 21.82 9.85 21.05 9.44L20.63 7.74C21.11 7.58 21.57 7.41 22 7.23V5C20 6.07 16.53 7.03 12 7.03C11.37 7.03 10.76 7 10.17 6.97M20.72 16.5C19.27 16.84 18.19 12.47 18.19 12.47S17.83 11 19.29 10.65 21.1 11.75 21.1 11.75 22.18 16.12 20.72 16.5M14.95 14.29L13.5 12.83V12.83L12.18 11.5H12.18L10 9.34V9.34L9.58 8.93H9.59L7.32 6.66H7.32L2.39 1.73L1.11 3L3.91 5.8C3.19 5.55 2.53 5.28 2 5V7.23C2.43 7.41 2.89 7.58 3.37 7.74L2.95 9.44C2.18 9.85 1.64 10.59 1.44 11.39C.905 13.57 .385 17.31 2.92 17.93C4 18.2 6 17.89 7.27 12.82C7.46 12 7.33 11.12 6.84 10.39L7.17 9.06L9.5 11.38C9.18 11.87 9 12.44 9 13C9 15.24 9.39 19 12 19C12.8 19 13.97 18.59 14.59 16.5L20.84 22.73L22.11 21.46L14.95 14.3L14.95 14.29M5.81 12.47C5.81 12.47 4.74 16.84 3.28 16.5C1.82 16.12 2.9 11.75 2.9 11.75S3.26 10.29 4.71 10.65 5.81 12.47 5.81 12.47M12 17.5C10.5 17.5 10.5 13 10.5 13S10.5 12.77 10.6 12.5L13.32 15.21C13.13 16.35 12.76 17.5 12 17.5Z"; -var mdiSubdirectoryArrowLeft = "M11,9L12.42,10.42L8.83,14H18V4H20V16H8.83L12.42,19.58L11,21L5,15L11,9Z"; -var mdiSubdirectoryArrowRight = "M19,15L13,21L11.58,19.58L15.17,16H4V4H6V14H15.17L11.58,10.42L13,9L19,15Z"; -var mdiSubmarine = "M8 3.67C6.78 4.53 5.39 4.93 4 5H2V7H4C5.37 7 6.74 6.65 8 6C10.5 7.3 13.5 7.3 16 6C17.26 6.65 18.62 6.94 20 7H22V5H20C18.61 5 17.22 4.53 16 3.67C13.56 5.38 10.44 5.38 8 3.67M16 8.67L15 10V12H14L12 14H9L6 16L5 14H4V16L2 17L4 18V20H5.14L6 18L9 20H20A2 2 0 0 0 22 18V16A2 2 0 0 0 20 14H18L17 13V12H16V10H17V8.67Z"; -var mdiSubtitles = "M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M4,12H8V14H4V12M14,18H4V16H14V18M20,18H16V16H20V18M20,14H10V12H20V14Z"; -var mdiSubtitlesOutline = "M20,4A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20M20,18V6H4V18H20M6,10H8V12H6V10M6,14H14V16H6V14M16,14H18V16H16V14M10,10H18V12H10V10Z"; -var mdiSubway = "M8.5,15A1,1 0 0,1 9.5,16A1,1 0 0,1 8.5,17A1,1 0 0,1 7.5,16A1,1 0 0,1 8.5,15M7,9H17V14H7V9M15.5,15A1,1 0 0,1 16.5,16A1,1 0 0,1 15.5,17A1,1 0 0,1 14.5,16A1,1 0 0,1 15.5,15M18,15.88V9C18,6.38 15.32,6 12,6C9,6 6,6.37 6,9V15.88A2.62,2.62 0 0,0 8.62,18.5L7.5,19.62V20H9.17L10.67,18.5H13.5L15,20H16.5V19.62L15.37,18.5C16.82,18.5 18,17.33 18,15.88M17.8,2.8C20.47,3.84 22,6.05 22,8.86V22H2V8.86C2,6.05 3.53,3.84 6.2,2.8C8,2.09 10.14,2 12,2C13.86,2 16,2.09 17.8,2.8Z"; -var mdiSubwayAlertVariant = "M16 11V6H11V11H16M14.5 17C15.3 17 16 16.3 16 15.5C16 14.7 15.3 14 14.5 14S13 14.7 13 15.5C13 16.3 13.7 17 14.5 17M9 11V6H4V11H9M5.5 17C6.3 17 7 16.3 7 15.5C7 14.7 6.3 14 5.5 14S4 14.7 4 15.5C4 16.3 4.7 17 5.5 17M10 2C14.4 2 18 2.5 18 6V15.5C18 17.4 16.4 19 14.5 19L16 20.5V21H4V20.5L5.5 19C3.6 19 2 17.4 2 15.5V6C2 2.5 5.6 2 10 2M20 13V7H22V13H20M20 17V15H22V17H20Z"; -var mdiSubwayVariant = "M18,11H13V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M11,11H6V6H11M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M12,2C7.58,2 4,2.5 4,6V15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V6C20,2.5 16.42,2 12,2Z"; -var mdiSummit = "M15,3H17L22,5L17,7V10.17L22,21H2L8,13L11.5,17.7L15,10.17V3Z"; -var mdiSunglasses = "M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17Z"; -var mdiSurroundSound = "M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M7.76,16.24L6.35,17.65C4.78,16.1 4,14.05 4,12C4,9.95 4.78,7.9 6.34,6.34L7.75,7.75C6.59,8.93 6,10.46 6,12C6,13.54 6.59,15.07 7.76,16.24M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M17.66,17.66L16.25,16.25C17.41,15.07 18,13.54 18,12C18,10.46 17.41,8.93 16.24,7.76L17.65,6.35C19.22,7.9 20,9.95 20,12C20,14.05 19.22,16.1 17.66,17.66M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z"; -var mdiSurroundSound20 = "M17,7H19A2,2 0 0,1 21,9V15A2,2 0 0,1 19,17H17A2,2 0 0,1 15,15V9A2,2 0 0,1 17,7M17,9V15H19V9H17M9,17H3V15L7,9H3V7H7A2,2 0 0,1 9,9C9,9.42 8.87,9.81 8.65,10.13L5.41,15H9V17M12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17Z"; -var mdiSurroundSound21 = "M4 7V9H8V11H6A2 2 0 0 0 4 13V17H10V15H6V13H8A2 2 0 0 0 10 11V9A2 2 0 0 0 8 7H4M16 7V9H18V17H20V7H16M12 15V17H14V15H12Z"; -var mdiSurroundSound31 = "M13,17A1,1 0 0,1 12,16A1,1 0 0,1 13,15A1,1 0 0,1 14,16A1,1 0 0,1 13,17M19,7V15H20V17H16V15H17V9H16L17,7H19M4,7H8A2,2 0 0,1 10,9V15A2,2 0 0,1 8,17H4V15H8V13H5V11H8V9H4V7Z"; -var mdiSurroundSound51 = "M13,17A1,1 0 0,1 12,16A1,1 0 0,1 13,15A1,1 0 0,1 14,16A1,1 0 0,1 13,17M19,7V15H20V17H16V15H17V9H16L17,7H19M6,13A2,2 0 0,1 4,11V7H10V9H6V11H8A2,2 0 0,1 10,13V15A2,2 0 0,1 8,17H4V15H8V13H6Z"; -var mdiSurroundSound512 = "M2 8V13H5V14H2V16H5C6.11 16 7 15.11 7 14V13C7 11.9 6.11 11 5 11H4V10H7V8H2M10 8V10H11V16H13V8H10M17 8V10H20V11H19C17.9 11 17 11.9 17 13V16H22V14H19V13H20C21.11 13 22 12.11 22 11V10C22 8.9 21.11 8 20 8H17M8 14V16H10V14H8M14 14V16H16V14H14Z"; -var mdiSurroundSound71 = "M12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17M18,7V15H19V17H15V15H16V9H15L16,7H18M11,7L8,17H6L8.4,9H5V7H11Z"; -var mdiSvg = "M5.13,10.71H8.87L6.22,8.06C5.21,8.06 4.39,7.24 4.39,6.22A1.83,1.83 0 0,1 6.22,4.39C7.24,4.39 8.06,5.21 8.06,6.22L10.71,8.87V5.13C10,4.41 10,3.25 10.71,2.54C11.42,1.82 12.58,1.82 13.29,2.54C14,3.25 14,4.41 13.29,5.13V8.87L15.95,6.22C15.95,5.21 16.76,4.39 17.78,4.39C18.79,4.39 19.61,5.21 19.61,6.22C19.61,7.24 18.79,8.06 17.78,8.06L15.13,10.71H18.87C19.59,10 20.75,10 21.46,10.71C22.18,11.42 22.18,12.58 21.46,13.29C20.75,14 19.59,14 18.87,13.29H15.13L17.78,15.95C18.79,15.95 19.61,16.76 19.61,17.78A1.83,1.83 0 0,1 17.78,19.61C16.76,19.61 15.95,18.79 15.95,17.78L13.29,15.13V18.87C14,19.59 14,20.75 13.29,21.46C12.58,22.18 11.42,22.18 10.71,21.46C10,20.75 10,19.59 10.71,18.87V15.13L8.06,17.78C8.06,18.79 7.24,19.61 6.22,19.61C5.21,19.61 4.39,18.79 4.39,17.78C4.39,16.76 5.21,15.95 6.22,15.95L8.87,13.29H5.13C4.41,14 3.25,14 2.54,13.29C1.82,12.58 1.82,11.42 2.54,10.71C3.25,10 4.41,10 5.13,10.71Z"; -var mdiSwapHorizontal = "M21,9L17,5V8H10V10H17V13M7,11L3,15L7,19V16H14V14H7V11Z"; -var mdiSwapHorizontalBold = "M8,10V13H14V18H8V21L2,15.5L8,10M22,8.5L16,3V6H10V11H16V14L22,8.5Z"; -var mdiSwapHorizontalCircle = "M22 12C22 6.5 17.5 2 12 2S2 6.5 2 12 6.5 22 12 22 22 17.5 22 12M15 6.5L18.5 10L15 13.5V11H11V9H15V6.5M9 17.5L5.5 14L9 10.5V13H13V15H9V17.5Z"; -var mdiSwapHorizontalCircleOutline = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20M15 6.5V9H11V11H15V13.5L18.5 10L15 6.5M9 10.5L5.5 14L9 17.5V15H13V13H9V10.5Z"; -var mdiSwapHorizontalVariant = "M4,6L8,10V7H16A2,2 0 0,1 18,9A2,2 0 0,1 16,11H8A4,4 0 0,0 4,15A4,4 0 0,0 8,19H16V22L20,18L16,14V17H8A2,2 0 0,1 6,15A2,2 0 0,1 8,13H16A4,4 0 0,0 20,9A4,4 0 0,0 16,5H8V2L4,6Z"; -var mdiSwapVertical = "M9,3L5,7H8V14H10V7H13M16,17V10H14V17H11L15,21L19,17H16Z"; -var mdiSwapVerticalBold = "M14,8H11V14H6V8H3L8.5,2L14,8M15.5,22L21,16H18V10H13V16H10L15.5,22Z"; -var mdiSwapVerticalCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M6.5 9L10 5.5L13.5 9H11V13H9V9H6.5M17.5 15L14 18.5L10.5 15H13V11H15V15H17.5Z"; -var mdiSwapVerticalCircleOutline = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20M6.5 9L10 5.5L13.5 9H11V13H9V9H6.5M17.5 15L14 18.5L10.5 15H13V11H15V15H17.5Z"; -var mdiSwapVerticalVariant = "M18,4L14,8H17V16A2,2 0 0,1 15,18A2,2 0 0,1 13,16V8A4,4 0 0,0 9,4A4,4 0 0,0 5,8V16H2L6,20L10,16H7V8A2,2 0 0,1 9,6A2,2 0 0,1 11,8V16A4,4 0 0,0 15,20A4,4 0 0,0 19,16V8H22L18,4Z"; -var mdiSwim = "M2,18C4.22,17 6.44,16 8.67,16C10.89,16 13.11,18 15.33,18C17.56,18 19.78,16 22,16V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V18M8.67,13C7.89,13 7.12,13.12 6.35,13.32L11.27,9.88L10.23,8.64C10.09,8.47 10,8.24 10,8C10,7.66 10.17,7.35 10.44,7.17L16.16,3.17L17.31,4.8L12.47,8.19L17.7,14.42C16.91,14.75 16.12,15 15.33,15C13.11,15 10.89,13 8.67,13M18,7A2,2 0 0,1 20,9A2,2 0 0,1 18,11A2,2 0 0,1 16,9A2,2 0 0,1 18,7Z"; -var mdiSwitch = "M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H8A1,1 0 0,1 7,15V3A1,1 0 0,1 8,2H16A1,1 0 0,1 17,3V15A1,1 0 0,1 16,16H13V18M13,6H14V4H13V6M9,4V6H11V4H9M9,8V10H11V8H9M9,12V14H11V12H9Z"; -var mdiSword = "M6.92,5H5L14,14L15,13.06M19.96,19.12L19.12,19.96C18.73,20.35 18.1,20.35 17.71,19.96L14.59,16.84L11.91,19.5L10.5,18.09L11.92,16.67L3,7.75V3H7.75L16.67,11.92L18.09,10.5L19.5,11.91L16.83,14.58L19.95,17.7C20.35,18.1 20.35,18.73 19.96,19.12Z"; -var mdiSwordCross = "M6.2,2.44L18.1,14.34L20.22,12.22L21.63,13.63L19.16,16.1L22.34,19.28C22.73,19.67 22.73,20.3 22.34,20.69L21.63,21.4C21.24,21.79 20.61,21.79 20.22,21.4L17,18.23L14.56,20.7L13.15,19.29L15.27,17.17L3.37,5.27V2.44H6.2M15.89,10L20.63,5.26V2.44H17.8L13.06,7.18L15.89,10M10.94,15L8.11,12.13L5.9,14.34L3.78,12.22L2.37,13.63L4.84,16.1L1.66,19.29C1.27,19.68 1.27,20.31 1.66,20.7L2.37,21.41C2.76,21.8 3.39,21.8 3.78,21.41L7,18.23L9.44,20.7L10.85,19.29L8.73,17.17L10.94,15Z"; -var mdiSyllabaryHangul = "M8 4V6H4V8H6.39C5.55 8.74 5 9.8 5 11C5 13.2 6.8 15 9 15C11.2 15 13 13.2 13 11C13 9.8 12.45 8.74 11.61 8H14V6H10V4M15 4V16H17V11H20V9H17V4M9 9C10.12 9 11 9.88 11 11C11 12.12 10.12 13 9 13C7.88 13 7 12.12 7 11C7 9.88 7.88 9 9 9M7 16V20H17V18H9V16Z"; -var mdiSyllabaryHiragana = "M9 4V6H6V8H9V10C6.25 10 4 12.27 4 15.03C4 17.8 6.26 20.06 9.03 20.06C9.89 20.06 10.72 19.77 11.4 19.26C11.63 19.54 11.88 19.82 12.15 20.09L13.56 18.67C13.3 18.42 13.07 18.15 12.86 17.89L13.86 16.89C14.93 15.82 15.78 14.23 16.42 12.59C17.31 13.11 18 13.9 18 15C18 16.32 17.47 17.6 16.54 18.54L17.95 19.95C19.26 18.64 20 16.86 20 15C20 13.04 18.82 11.36 17.15 10.55L17.5 9.29L15.55 8.78L15.21 10.05C15.13 10.05 15.06 10 14.97 10H11V8H16V6H11V4M11 12H14.5C13.94 13.37 13.19 14.72 12.44 15.47L11.79 16.13C11.25 14.93 11 13.59 11 12M9 12C9 14.07 9.41 15.94 10.3 17.59C9.94 17.89 9.5 18.06 9.03 18.06C7.33 18.06 6 16.73 6 15.03C6 13.34 7.32 12 9 12Z"; -var mdiSyllabaryKatakana = "M4 4V6H18V6.09L14.29 9.79L15.71 11.21L20 6.91V4M11 9V13C11 15.78 10.25 16.89 8.36 18.46L9.64 20C11.75 18.24 13 16.22 13 13V9Z"; -var mdiSyllabaryKatakanaHalfwidth = "M8 4V6H14L13 10.81L15 11.2L16 6.1V4M10 9V12C10 14.86 9.34 17.29 8.08 18.61L9.5 20C11.35 18.08 12 15.15 12 12V9Z"; -var mdiSymbol = "M2 7V14H4V7H2M6 7V9H10V11H8V14H10V13C11.11 13 12 12.11 12 11V9C12 7.89 11.11 7 10 7H6M15.8 7L15.6 9H14V11H15.4L15.2 13H14V15H15L14.8 17H16.8L17 15H18.4L18.2 17H20.2L20.4 15H22V13H20.6L20.8 11H22V9H21L21.2 7H19.2L19 9H17.6L17.8 7H15.8M17.4 11H18.8L18.6 13H17.2L17.4 11M2 15V17H4V15H2M8 15V17H10V15H8Z"; -var mdiSymfony = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.37,5.7V5.7C17.39,5.67 18.15,6.13 18.21,6.84C18.22,7.15 18.04,7.75 17.42,7.77C16.95,7.79 16.63,7.5 16.62,7.09C16.61,6.93 16.88,6.42 16.88,6.33C16.87,6.06 16.47,6.05 16.36,6.06C14.86,6.11 14.46,8.13 14.14,9.78L14,10.65C14.84,10.78 15.46,10.62 15.8,10.4C16.28,10.09 15.66,9.77 15.74,9.41C15.82,9.04 16.15,8.87 16.41,8.86C16.78,8.85 17.04,9.23 17.03,9.62C17,10.26 16.17,11.14 14.5,11.1C14.28,11.1 14.09,11.08 13.91,11.06C13.3,14.16 12.92,16 11.56,17.58C10.39,18.97 9.2,19.18 8.67,19.2C7.67,19.24 7,18.71 7,18C6.97,17.32 7.57,16.94 7.97,16.93C8.5,16.91 8.87,17.3 8.88,17.74C8.9,18.11 8.7,18.23 8.57,18.3C8.5,18.37 8.35,18.45 8.36,18.6C8.36,18.67 8.43,18.82 8.65,18.81C9.07,18.8 9.34,18.59 9.54,18.45C10.5,17.65 10.88,16.24 11.37,13.68C11.63,12.23 11.82,11.3 12.1,10.38C11.42,9.87 11,9.23 10.09,9C9.46,8.81 9.08,8.96 8.81,9.3C8.5,9.71 8.6,10.23 8.9,10.54C10.05,11.82 10.39,12.38 10.26,13.14C10.06,14.35 8.62,15.27 6.92,14.75C5.47,14.3 5.2,13.28 5.37,12.71C5.53,12.22 5.92,12.12 6.31,12.24C6.73,12.37 6.89,12.87 6.77,13.26C6.75,13.3 6.55,13.67 6.5,13.79C6.41,14.1 6.83,14.31 7.12,14.4C7.77,14.6 8.4,14.26 8.55,13.73C8.7,13.25 8.4,12.91 8.27,12.78C7.38,11.8 6.76,10.93 7.06,9.95C7.18,9.58 7.42,9.18 7.78,8.91C8.53,8.36 9.35,8.26 10.12,8.5C11.13,8.77 11.61,9.44 12.24,9.95C12.59,8.93 13.08,7.92 13.81,7.07C14.47,6.3 15.35,5.74 16.37,5.7Z"; -var mdiSync = "M12,18A6,6 0 0,1 6,12C6,11 6.25,10.03 6.7,9.2L5.24,7.74C4.46,8.97 4,10.43 4,12A8,8 0 0,0 12,20V23L16,19L12,15M12,4V1L8,5L12,9V6A6,6 0 0,1 18,12C18,13 17.75,13.97 17.3,14.8L18.76,16.26C19.54,15.03 20,13.57 20,12A8,8 0 0,0 12,4Z"; -var mdiSyncAlert = "M11,13H13V7H11M21,4H15V10L17.24,7.76C18.32,8.85 19,10.34 19,12C19,14.61 17.33,16.83 15,17.65V19.74C18.45,18.85 21,15.73 21,12C21,9.79 20.09,7.8 18.64,6.36M11,17H13V15H11M3,12C3,14.21 3.91,16.2 5.36,17.64L3,20H9V14L6.76,16.24C5.68,15.15 5,13.66 5,12C5,9.39 6.67,7.17 9,6.35V4.26C5.55,5.15 3,8.27 3,12Z"; -var mdiSyncCircle = "M2 12A10 10 0 1 0 12 2A10 10 0 0 0 2 12M15.6 13.72A4 4 0 0 0 16 12A4 4 0 0 0 12 8V10L8.88 7L12 4V6A6 6 0 0 1 18 12A5.9 5.9 0 0 1 17.07 15.19M6 12A5.9 5.9 0 0 1 6.93 8.81L8.4 10.28A4 4 0 0 0 8 12A4 4 0 0 0 12 16V14L15 17L12 20V18A6 6 0 0 1 6 12Z"; -var mdiSyncOff = "M20,4H14V10L16.24,7.76C17.32,8.85 18,10.34 18,12C18,13 17.75,13.94 17.32,14.77L18.78,16.23C19.55,15 20,13.56 20,12C20,9.79 19.09,7.8 17.64,6.36L20,4M2.86,5.41L5.22,7.77C4.45,9 4,10.44 4,12C4,14.21 4.91,16.2 6.36,17.64L4,20H10V14L7.76,16.24C6.68,15.15 6,13.66 6,12C6,11 6.25,10.06 6.68,9.23L14.76,17.31C14.5,17.44 14.26,17.56 14,17.65V19.74C14.79,19.53 15.54,19.2 16.22,18.78L18.58,21.14L19.85,19.87L4.14,4.14L2.86,5.41M10,6.35V4.26C9.2,4.47 8.45,4.8 7.77,5.22L9.23,6.68C9.5,6.56 9.73,6.44 10,6.35Z"; -var mdiTab = "M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H3V5H13V9H21V19Z"; -var mdiTabMinus = "M3,3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3H3M3,5H13V9H21V19H3V5M7,13V15H15V13H7Z"; -var mdiTabPlus = "M3,3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3H3M3,5H13V9H21V19H3V5M10,10V13H7V15H10V18H12V15H15V13H12V10H10Z"; -var mdiTabRemove = "M7.46,11.88L8.88,10.46L11,12.59L13.12,10.46L14.54,11.88L12.41,14L14.54,16.12L13.12,17.54L11,15.41L8.88,17.54L7.46,16.12L9.59,14L7.46,11.88M3,3H21A2,2 0 0,1 23,5V19A2,2 0 0,1 21,21H3A2,2 0 0,1 1,19V5A2,2 0 0,1 3,3M3,5V19H21V9H13V5H3Z"; -var mdiTabUnselected = "M1,9H3V7H1V9M1,13H3V11H1V13M1,5H3V3A2,2 0 0,0 1,5M9,21H11V19H9V21M1,17H3V15H1V17M3,21V19H1A2,2 0 0,0 3,21M21,3H13V9H23V5A2,2 0 0,0 21,3M21,17H23V15H21V17M9,5H11V3H9V5M5,21H7V19H5V21M5,5H7V3H5V5M21,21A2,2 0 0,0 23,19H21V21M21,13H23V11H21V13M13,21H15V19H13V21M17,21H19V19H17V21Z"; -var mdiTable = "M5,4H19A2,2 0 0,1 21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4M5,8V12H11V8H5M13,8V12H19V8H13M5,14V18H11V14H5M13,14V18H19V14H13Z"; -var mdiTableAccount = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M23 22V21C23 19.67 20.33 19 19 19S15 19.67 15 21V22H23M19 14C17.9 14 17 14.9 17 16S17.9 18 19 18 21 17.11 21 16 20.11 14 19 14Z"; -var mdiTableAlert = "M3 4H17C18.11 4 19 4.89 19 6V18C19 19.11 18.11 20 17 20H3C1.9 20 1 19.11 1 18V6C1 4.89 1.9 4 3 4M3 8V12H9V8H3M11 8V12H17V8H11M3 14V18H9V14H3M11 14V18H17V14H11M23 7H21V13H23V7M23 15H21V17H23V15Z"; -var mdiTableArrowDown = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M15.94 18.5H17.94V14.5H19.94V18.5H21.94L18.94 21.5L15.94 18.5"; -var mdiTableArrowLeft = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M18.44 15V17H22.44V19H18.44V21L15.44 18L18.44 15"; -var mdiTableArrowRight = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M19.44 21V19H15.44V17H19.44V15L22.44 18L19.44 21"; -var mdiTableArrowUp = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M21.94 17.5H19.94V21.5H17.94V17.5H15.94L18.94 14.5L21.94 17.5"; -var mdiTableBorder = "M21,19A1,1 0 0,1 20,20H19V18H21V19M15,20V18H17V20H15M11,20V18H13V20H11M7,20V18H9V20H7M4,20A1,1 0 0,1 3,19V18H5V20H4M19,4H5A2,2 0 0,0 3,6V8H5L11,8H13L19,8H21V6C21,4.89 20.11,4 19,4M5,14H3V16H5V14M5,10H3V12H5V10M21,10H19V12H21V10M21,14H19V16H21V14M11,16V14H13V16H11M11,12V10H13V12H11"; -var mdiTableCancel = "M3 3H17C18.11 3 19 3.9 19 5V12.08C17.45 11.82 15.92 12.18 14.68 13H11V17H12.08C11.97 17.68 11.97 18.35 12.08 19H3C1.9 19 1 18.11 1 17V5C1 3.9 1.9 3 3 3M3 7V11H9V7H3M11 7V11H17V7H11M3 13V17H9V13H3M18.5 14C16 14 14 16 14 18.5S16 23 18.5 23 23 21 23 18.5 21 14 18.5 14M18.5 21.5C16.84 21.5 15.5 20.16 15.5 18.5C15.5 17.94 15.65 17.42 15.92 17L20 21.08C19.58 21.35 19.06 21.5 18.5 21.5M21.08 20L17 15.92C17.42 15.65 17.94 15.5 18.5 15.5C20.16 15.5 21.5 16.84 21.5 18.5C21.5 19.06 21.35 19.58 21.08 20Z"; -var mdiTableChair = "M12 22H6A2 2 0 0 1 8 20V8H2V5H16V8H10V20A2 2 0 0 1 12 22M22 2V22H20V15H15V22H13V14A2 2 0 0 1 15 12H20V2Z"; -var mdiTableCheck = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M17.75 21L15 18L16.16 16.84L17.75 18.43L21.34 14.84L22.5 16.25L17.75 21"; -var mdiTableClock = "M16.5 15.82L18.94 17.23L18.19 18.53L15 16.69V13H16.5V15.82M20 10.26V5C20 3.9 19.11 3 18 3H4C2.9 3 2 3.9 2 5V17C2 18.11 2.9 19 4 19H9.68C10.81 21.36 13.21 23 16 23C19.87 23 23 19.87 23 16C23 13.62 21.81 11.53 20 10.26M18 7V9.29C17.37 9.11 16.7 9 16 9C14.5 9 13.13 9.47 12 10.26V7H18M4 7H10V11H4V7M4 17V13H9.68C9.25 13.91 9 14.93 9 16C9 16.34 9.03 16.67 9.08 17H4M16 21C13.24 21 11 18.76 11 16S13.24 11 16 11 21 13.24 21 16 18.76 21 16 21Z"; -var mdiTableCog = "M3 3H17C18.11 3 19 3.9 19 5V12.08C17.45 11.82 15.92 12.18 14.68 13H11V17H12.08C11.97 17.68 11.97 18.35 12.08 19H3C1.9 19 1 18.11 1 17V5C1 3.9 1.9 3 3 3M3 7V11H9V7H3M11 7V11H17V7H11M3 13V17H9V13H3M22.78 19.32L21.71 18.5C21.73 18.33 21.75 18.17 21.75 18S21.74 17.67 21.71 17.5L22.77 16.68C22.86 16.6 22.89 16.47 22.83 16.36L21.83 14.63C21.77 14.5 21.64 14.5 21.5 14.5L20.28 15C20 14.82 19.74 14.65 19.43 14.53L19.24 13.21C19.23 13.09 19.12 13 19 13H17C16.88 13 16.77 13.09 16.75 13.21L16.56 14.53C16.26 14.66 15.97 14.82 15.71 15L14.47 14.5C14.36 14.5 14.23 14.5 14.16 14.63L13.16 16.36C13.1 16.47 13.12 16.6 13.22 16.68L14.28 17.5C14.26 17.67 14.25 17.83 14.25 18S14.26 18.33 14.28 18.5L13.22 19.32C13.13 19.4 13.1 19.53 13.16 19.64L14.16 21.37C14.22 21.5 14.35 21.5 14.47 21.5L15.71 21C15.97 21.18 16.25 21.35 16.56 21.47L16.75 22.79C16.77 22.91 16.87 23 17 23H19C19.12 23 19.23 22.91 19.25 22.79L19.44 21.47C19.74 21.34 20 21.18 20.28 21L21.5 21.5C21.64 21.5 21.77 21.5 21.84 21.37L22.84 19.64C22.9 19.53 22.87 19.4 22.78 19.32M18 19.5C17.17 19.5 16.5 18.83 16.5 18S17.18 16.5 18 16.5 19.5 17.17 19.5 18 18.84 19.5 18 19.5Z"; -var mdiTableColumn = "M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,10V14H16V10H8M8,16V20H16V16H8M8,4V8H16V4H8Z"; -var mdiTableColumnPlusAfter = "M11,2A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H2V2H11M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M15,11H18V8H20V11H23V13H20V16H18V13H15V11Z"; -var mdiTableColumnPlusBefore = "M13,2A2,2 0 0,0 11,4V20A2,2 0 0,0 13,22H22V2H13M20,10V14H13V10H20M20,16V20H13V16H20M20,4V8H13V4H20M9,11H6V8H4V11H1V13H4V16H6V13H9V11Z"; -var mdiTableColumnRemove = "M4,2H11A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M17.59,12L15,9.41L16.41,8L19,10.59L21.59,8L23,9.41L20.41,12L23,14.59L21.59,16L19,13.41L16.41,16L15,14.59L17.59,12Z"; -var mdiTableColumnWidth = "M5,8H19A2,2 0 0,1 21,10V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V10A2,2 0 0,1 5,8M5,12V15H11V12H5M13,12V15H19V12H13M5,17V20H11V17H5M13,17V20H19V17H13M11,2H21V6H19V4H13V6H11V2Z"; -var mdiTableEdit = "M21.7,13.35L20.7,14.35L18.65,12.3L19.65,11.3C19.86,11.08 20.21,11.08 20.42,11.3L21.7,12.58C21.92,12.79 21.92,13.14 21.7,13.35M12,18.94L18.07,12.88L20.12,14.93L14.06,21H12V18.94M4,2H18A2,2 0 0,1 20,4V8.17L16.17,12H12V16.17L10.17,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,6V10H10V6H4M12,6V10H18V6H12M4,12V16H10V12H4Z"; -var mdiTableEye = "M17 16.88C17.56 16.88 18 17.32 18 17.88S17.56 18.88 17 18.88 16 18.43 16 17.88 16.44 16.88 17 16.88M17 13.88C19.73 13.88 22.06 15.54 23 17.88C22.06 20.22 19.73 21.88 17 21.88S11.94 20.22 11 17.88C11.94 15.54 14.27 13.88 17 13.88M17 15.38C15.62 15.38 14.5 16.5 14.5 17.88S15.62 20.38 17 20.38 19.5 19.26 19.5 17.88 18.38 15.38 17 15.38M18 3H4C2.9 3 2 3.9 2 5V17C2 18.1 2.9 19 4 19H9.42C9.26 18.68 9.12 18.34 9 18C9.12 17.66 9.26 17.32 9.42 17H4V13H10V15.97C10.55 15.11 11.23 14.37 12 13.76V13H13.15C14.31 12.36 15.62 12 17 12C18.06 12 19.07 12.21 20 12.59V5C20 3.9 19.1 3 18 3M10 11H4V7H10V11M18 11H12V7H18V11Z"; -var mdiTableEyeOff = "M12 8.8L6.2 3H18C19.1 3 20 3.9 20 5V12.59C19.07 12.21 18.06 12 17 12C16.45 12 15.91 12.07 15.38 12.18L14.2 11H18V7H12V8.8M17.09 13.89L22.31 19.11C22.58 18.73 22.82 18.32 23 17.88C22.07 15.57 19.78 13.92 17.09 13.89M22.11 21.46L20.84 22.73L19.5 21.37C18.71 21.69 17.88 21.88 17 21.88C14.27 21.88 11.94 20.22 11 17.88C11.45 16.76 12.23 15.8 13.21 15.1L11.93 13.82C11.19 14.42 10.53 15.14 10 15.97V13H4V17H9.42C9.26 17.32 9.12 17.66 9 18C9.12 18.34 9.26 18.68 9.42 19H4C2.9 19 2 18.1 2 17V5C2 4.68 2.08 4.38 2.22 4.11L1.11 3L2.39 1.73L22.11 21.46M9.11 11L5.11 7H4V11H9.11M18.18 20.07L14.81 16.7C14.61 17.05 14.5 17.45 14.5 17.88C14.5 19.26 15.62 20.38 17 20.38C17.43 20.38 17.83 20.27 18.18 20.07Z"; -var mdiTableFurniture = "M2 7H22V10H20L21 19H18.5L17.94 14H6.06L5.5 19H3L4 10H2V7M17.5 10H6.5L6.29 12H17.71L17.5 10Z"; -var mdiTableHeadersEye = "M1 6V19A2 2 0 0 0 3 21H9V11H21V6A2 2 0 0 0 19 4H3A2 2 0 0 0 1 6M3 6H7V9H3M7 19H3V16H7M7 14H3V11H7M9 9V6H13V9M19 9H15V6H19M17 16A1 1 0 1 1 16 17A1 1 0 0 1 17 16M17 13A6.45 6.45 0 0 1 23 17A6.5 6.5 0 0 1 11 17A6.45 6.45 0 0 1 17 13M17 14.5A2.5 2.5 0 1 0 19.5 17A2.5 2.5 0 0 0 17 14.5"; -var mdiTableHeadersEyeOff = "M2.38 1.73L1.11 3L2.26 4.15A2 2 0 0 0 1 6V19A2 2 0 0 0 3 21H9V11H9.11L12.72 14.61A6.21 6.21 0 0 0 11 17A6.45 6.45 0 0 0 17 21A6.55 6.55 0 0 0 18.84 20.73L20.84 22.73L22.11 21.46L20.58 19.93M7 19H3V16H7M7 14H3V11H7M7 9H3V6H4.11L7 8.89M17 19.5A2.5 2.5 0 0 1 14.56 16.45L17.56 19.45A2.5 2.5 0 0 1 17 19.5M16.24 13L17.85 14.61A2.5 2.5 0 0 1 19.35 16.11L21.94 18.7A6.44 6.44 0 0 0 23 17A6.45 6.45 0 0 0 17 13H16.24M13 6V9H12.2L14.2 11H21V6A2 2 0 0 0 19 4H7.2L9.2 6M15 6H19V9H15Z"; -var mdiTableHeart = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M19 22.3L18.4 21.8C16.4 19.9 15 18.7 15 17.2C15 16 16 15 17.2 15C17.9 15 18.6 15.3 19 15.8C19.4 15.3 20.1 15 20.8 15C22 15 23 15.9 23 17.2C23 18.7 21.6 19.9 19.6 21.8L19 22.3"; -var mdiTableKey = "M16.83 17C16.42 15.83 15.31 15 14 15C12.34 15 11 16.34 11 18S12.34 21 14 21C15.31 21 16.42 20.17 16.83 19H19V21H21V19H22V17H16.83M14 19C13.45 19 13 18.55 13 18S13.45 17 14 17 15 17.45 15 18 14.55 19 14 19M9 18H4V14H10V15.03C10.91 13.81 12.36 13 14 13C15.1 13 16.14 13.37 17 14H18V15L18 15H20V6C20 4.89 19.11 4 18 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H9.42C9.15 19.39 9 18.71 9 18M12 8H18V12H12V8M4 8H10V12H4V8Z"; -var mdiTableLarge = "M4,3H20A2,2 0 0,1 22,5V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V5A2,2 0 0,1 4,3M4,7V10H8V7H4M10,7V10H14V7H10M20,10V7H16V10H20M4,12V15H8V12H4M4,20H8V17H4V20M10,12V15H14V12H10M10,20H14V17H10V20M20,20V17H16V20H20M20,12H16V15H20V12Z"; -var mdiTableLargePlus = "M12.35 20H10V17H12.09C12.21 16.28 12.46 15.61 12.81 15H10V12H14V13.54C14.58 13 15.25 12.61 16 12.35V12H20V12.35C20.75 12.61 21.42 13 22 13.54V5C22 3.9 21.1 3 20 3H4C2.9 3 2 3.9 2 5V20C2 21.1 2.9 22 4 22H13.54C13 21.42 12.61 20.75 12.35 20M16 7H20V10H16V7M10 7H14V10H10V7M8 20H4V17H8V20M8 15H4V12H8V15M8 10H4V7H8V10M17 14H19V17H22V19H19V22H17V19H14V17H17V14"; -var mdiTableLargeRemove = "M12.35 20H10V17H12.09C12.21 16.28 12.46 15.61 12.81 15H10V12H14V13.54C14.58 13 15.25 12.61 16 12.35V12H20V12.35C20.75 12.61 21.42 13 22 13.54V5C22 3.9 21.1 3 20 3H4C2.9 3 2 3.9 2 5V20C2 21.1 2.9 22 4 22H13.54C13 21.42 12.61 20.75 12.35 20M16 7H20V10H16V7M10 7H14V10H10V7M8 20H4V17H8V20M8 15H4V12H8V15M8 10H4V7H8V10M14.46 15.88L15.88 14.46L18 16.59L20.12 14.46L21.54 15.88L19.41 18L21.54 20.12L20.12 21.54L18 19.41L15.88 21.54L14.46 20.12L16.59 18L14.46 15.88"; -var mdiTableLock = "M21 16V15.5C21 14.12 19.88 13 18.5 13S16 14.12 16 15.5V16C15.45 16 15 16.45 15 17V21C15 21.55 15.45 22 16 22H21C21.55 22 22 21.55 22 21V17C22 16.45 21.55 16 21 16M20 16H17V15.5C17 14.67 17.67 14 18.5 14S20 14.67 20 15.5V16M13 18H12V14H14.26C14.54 13.21 15.04 12.5 15.69 12H12V8H18V11.05C18.17 11.03 18.33 11 18.5 11C19.03 11 19.53 11.1 20 11.26V6C20 4.89 19.11 4 18 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13V18M10 18H4V14H10V18M10 12H4V8H10V12Z"; -var mdiTableMergeCells = "M5,10H3V4H11V6H5V10M19,18H13V20H21V14H19V18M5,18V14H3V20H11V18H5M21,4H13V6H19V10H21V4M8,13V15L11,12L8,9V11H3V13H8M16,11V9L13,12L16,15V13H21V11H16Z"; -var mdiTableMinus = "M15 19V17H23V19H15M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4Z"; -var mdiTableMultiple = "M7 2H21C22.11 2 23 2.9 23 4V16C23 17.11 22.11 18 21 18H7C5.9 18 5 17.11 5 16V4C5 2.9 5.9 2 7 2M7 6V10H13V6H7M15 6V10H21V6H15M7 12V16H13V12H7M15 12V16H21V12H15M3 20V6H1V20C1 21.11 1.89 22 3 22H19V20H3Z"; -var mdiTableNetwork = "M15 20C15 19.45 14.55 19 14 19H13V17H19C20.11 17 21 16.11 21 15V3C21 1.9 20.11 1 19 1H5C3.9 1 3 1.9 3 3V15C3 16.11 3.9 17 5 17H11V19H10C9.45 19 9 19.45 9 20H2V22H9C9 22.55 9.45 23 10 23H14C14.55 23 15 22.55 15 22H22V20H15M13 5H19V9H13V5M13 11H19V15H13V11M5 5H11V9H5V5M5 15V11H11V15H5Z"; -var mdiTableOfContents = "M3,9H17V7H3V9M3,13H17V11H3V13M3,17H17V15H3V17M19,17H21V15H19V17M19,7V9H21V7H19M19,13H21V11H19V13Z"; -var mdiTableOff = "M22.11 21.46L2.39 1.73L1.11 3L3.22 5.11C3.08 5.38 3 5.68 3 6V18C3 19.11 3.9 20 5 20H18.11L20.84 22.73L22.11 21.46M10.11 12H5V8H6.11L10.11 12M11 18H5V14H11V18M13 18V14.89L16.11 18H13M13 9.8L7.2 4H19C20.11 4 21 4.89 21 6V17.8L19 15.8V14H17.2L15.2 12H19V8H13V9.8Z"; -var mdiTablePicnic = "M4 6H20V9H18L18.22 11H23V13H18.44L19 18H16.5L15.94 13H8.06L7.5 18H5L5.56 13H1V11H5.78L6 9H4M15.5 9H8.5L8.29 11H15.71Z"; -var mdiTablePlus = "M18,14H20V17H23V19H20V22H18V19H15V17H18V14M4,3H18A2,2 0 0,1 20,5V12.08C18.45,11.82 16.92,12.18 15.68,13H12V17H13.08C12.97,17.68 12.97,18.35 13.08,19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,7V11H10V7H4M12,7V11H18V7H12M4,13V17H10V13H4Z"; -var mdiTableRefresh = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.55 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M4 3H18C19.11 3 20 3.9 20 5V12.17C19.5 12.06 19 12 18.5 12C17.23 12 16.04 12.37 15.04 13H12V17H12.18C12.06 17.5 12 18 12 18.5L12 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4Z"; -var mdiTableRemove = "M15.46,15.88L16.88,14.46L19,16.59L21.12,14.46L22.54,15.88L20.41,18L22.54,20.12L21.12,21.54L19,19.41L16.88,21.54L15.46,20.12L17.59,18L15.46,15.88M4,3H18A2,2 0 0,1 20,5V12.08C18.45,11.82 16.92,12.18 15.68,13H12V17H13.08C12.97,17.68 12.97,18.35 13.08,19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,7V11H10V7H4M12,7V11H18V7H12M4,13V17H10V13H4Z"; -var mdiTableRow = "M22,14A2,2 0 0,1 20,16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8H20A2,2 0 0,1 22,10V14M4,14H8V10H4V14M10,14H14V10H10V14M16,14H20V10H16V14Z"; -var mdiTableRowHeight = "M3,5H15A2,2 0 0,1 17,7V17A2,2 0 0,1 15,19H3A2,2 0 0,1 1,17V7A2,2 0 0,1 3,5M3,9V12H8V9H3M10,9V12H15V9H10M3,14V17H8V14H3M10,14V17H15V14H10M23,14V7H19V9H21V12H19V14H23Z"; -var mdiTableRowPlusAfter = "M22,10A2,2 0 0,1 20,12H4A2,2 0 0,1 2,10V3H4V5H8V3H10V5H14V3H16V5H20V3H22V10M4,10H8V7H4V10M10,10H14V7H10V10M20,10V7H16V10H20M11,14H13V17H16V19H13V22H11V19H8V17H11V14Z"; -var mdiTableRowPlusBefore = "M22,14A2,2 0 0,0 20,12H4A2,2 0 0,0 2,14V21H4V19H8V21H10V19H14V21H16V19H20V21H22V14M4,14H8V17H4V14M10,14H14V17H10V14M20,14V17H16V14H20M11,10H13V7H16V5H13V2H11V5H8V7H11V10Z"; -var mdiTableRowRemove = "M9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17L8,14.41L9.41,13M22,9A2,2 0 0,1 20,11H4A2,2 0 0,1 2,9V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V9M4,9H8V6H4V9M10,9H14V6H10V9M16,9H20V6H16V9Z"; -var mdiTableSearch = "M19.3,17.89C20.62,15.79 20,13 17.89,11.68C15.79,10.36 13,11 11.68,13.09C10.36,15.2 11,18 13.09,19.3C14.56,20.22 16.42,20.22 17.89,19.3L21,22.39L22.39,21L19.3,17.89M17.3,17.27C16.32,18.25 14.74,18.24 13.76,17.27C12.79,16.29 12.79,14.71 13.77,13.73C14.74,12.76 16.32,12.76 17.3,13.73C18.26,14.72 18.25,16.3 17.27,17.27H17.3M19,4H5A2,2 0 0,0 3,6V18A2,2 0 0,0 5,20H10.81C10.25,19.42 9.8,18.74 9.5,18H5V14H9.18C9.34,13.29 9.61,12.61 10,12H5V8H11V10.81C11.58,10.25 12.26,9.8 13,9.5V8H19V10C19.4,10.25 19.77,10.55 20.1,10.88C20.44,11.22 20.74,11.59 21,12V6A2,2 0 0,0 19,4Z"; -var mdiTableSettings = "M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22M5,4H19A2,2 0 0,1 21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4M5,8V12H11V8H5M13,8V12H19V8H13M5,14V18H11V14H5M13,14V18H19V14H13Z"; -var mdiTableSplitCell = "M19 14H21V20H3V14H5V18H19V14M3 4V10H5V6H19V10H21V4H3M11 11V13H8V15L5 12L8 9V11H11M16 11V9L19 12L16 15V13H13V11H16Z"; -var mdiTableStar = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M16.5 21.6L17.2 18.8L15 16.9L17.9 16.7L19 14L20.1 16.6L23 16.8L20.8 18.7L21.5 21.5L19 20.1L16.5 21.6Z"; -var mdiTableSync = "M19 12V13.5C21.21 13.5 23 15.29 23 17.5C23 18.32 22.76 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L19 12M19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5L21.25 20.75L19 23M4 3H18C19.11 3 20 3.9 20 5V11L19.5 11C17.66 11 16 11.77 14.81 13H12V17H13L13 17.5C13 18 13.06 18.5 13.17 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4Z"; -var mdiTableTennis = "M18.5,14C19.9,14 21,15.1 21,16.5C21,17.9 19.9,19 18.5,19C17.1,19 16,17.9 16,16.5C16,15.1 17.1,14 18.5,14M7,15C7,15 8,16 8,17V20.5C8,21.3 8.7,22 9.5,22C10.3,22 11,21.3 11,20.5V17C11,16 12,15 12,15H7M8,14H11C11,14 16,14 16,9C16,4 12,2 9.5,2C7,2 3,4 3,9C3,14 8,14 8,14Z"; -var mdiTablet = "M19,18H5V6H19M21,4H3C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18V6C23,4.89 22.1,4 21,4Z"; -var mdiTabletAndroid = "M19.25,19H4.75V3H19.25M14,22H10V21H14M18,0H6A3,3 0 0,0 3,3V21A3,3 0 0,0 6,24H18A3,3 0 0,0 21,21V3A3,3 0 0,0 18,0Z"; -var mdiTabletCellphone = "M3,4H20A2,2 0 0,1 22,6V8H18V6H5V18H14V20H3A2,2 0 0,1 1,18V6A2,2 0 0,1 3,4M17,10H23A1,1 0 0,1 24,11V21A1,1 0 0,1 23,22H17A1,1 0 0,1 16,21V11A1,1 0 0,1 17,10M18,12V19H22V12H18Z"; -var mdiTabletDashboard = "M19,18H5V6H19M21,4H3C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18V6C23,4.89 22.1,4 21,4M7,8H13V13H7V8M14,8H17V10H14V8M17,11V16H14V11H17M7,14H13V16H7V14Z"; -var mdiTabletIpad = "M19,19H4V3H19M11.5,23A1.5,1.5 0 0,1 10,21.5A1.5,1.5 0 0,1 11.5,20A1.5,1.5 0 0,1 13,21.5A1.5,1.5 0 0,1 11.5,23M18.5,0H4.5A2.5,2.5 0 0,0 2,2.5V21.5A2.5,2.5 0 0,0 4.5,24H18.5A2.5,2.5 0 0,0 21,21.5V2.5A2.5,2.5 0 0,0 18.5,0Z"; -var mdiTaco = "M19,18H5A4,4 0 0,1 1,14A8,8 0 0,1 9,6C10.06,6 11.07,6.21 12,6.58C12.93,6.21 13.94,6 15,6A8,8 0 0,1 23,14A4,4 0 0,1 19,18M3,14A2,2 0 0,0 5,16A2,2 0 0,0 7,14C7,11.63 8.03,9.5 9.67,8.04L9,8A6,6 0 0,0 3,14M19,16A2,2 0 0,0 21,14A6,6 0 0,0 15,8A6,6 0 0,0 9,14C9,14.73 8.81,15.41 8.46,16H19Z"; -var mdiTag = "M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z"; -var mdiTagArrowDown = "M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.41L3 12.81C3.9 12.27 4.94 12 6 12C9.31 12 12 14.69 12 18C12 19.06 11.72 20.09 11.18 21L11.58 21.4C11.95 21.78 12.47 22 13 22S14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13S21.79 11.96 21.41 11.58M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7M7 19V15H5V19H3L6 22L9 19H7Z"; -var mdiTagArrowDownOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M8 18V14H6V18H4L7 21L10 18H8Z"; -var mdiTagArrowLeft = "M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.41L3 12.81C3.9 12.27 4.94 12 6 12C9.31 12 12 14.69 12 18C12 19.06 11.72 20.09 11.18 21L11.58 21.4C11.95 21.78 12.47 22 13 22S14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13S21.79 11.96 21.41 11.58M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7M5 19H9V17H5V15L2 18L5 21V19Z"; -var mdiTagArrowLeftOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M5 19H9V17H5V15L2 18L5 21V19Z"; -var mdiTagArrowRight = "M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.41L3 12.81C3.9 12.27 4.94 12 6 12C9.31 12 12 14.69 12 18C12 19.06 11.72 20.09 11.18 21L11.58 21.4C11.95 21.78 12.47 22 13 22S14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13S21.79 11.96 21.41 11.58M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7M6 17H2V19H6V21L9 18L6 15V17Z"; -var mdiTagArrowRightOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6 17H2V19H6V21L9 18L6 15V17Z"; -var mdiTagArrowUp = "M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.41L3 12.81C3.9 12.27 4.94 12 6 12C9.31 12 12 14.69 12 18C12 19.06 11.72 20.09 11.18 21L11.58 21.4C11.95 21.78 12.47 22 13 22S14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13S21.79 11.96 21.41 11.58M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7M5 17V21H7V17H9L6 14L3 17H5Z"; -var mdiTagArrowUpOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6 17V21H8V17H10L7 14L4 17H6Z"; -var mdiTagFaces = "M15,18C11.68,18 9,15.31 9,12C9,8.68 11.68,6 15,6A6,6 0 0,1 21,12A6,6 0 0,1 15,18M4,13A1,1 0 0,1 3,12A1,1 0 0,1 4,11A1,1 0 0,1 5,12A1,1 0 0,1 4,13M22,3H7.63C6.97,3 6.38,3.32 6,3.81L0,12L6,20.18C6.38,20.68 6.97,21 7.63,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3M13,11A1,1 0 0,0 14,10A1,1 0 0,0 13,9A1,1 0 0,0 12,10A1,1 0 0,0 13,11M15,16C16.86,16 18.35,14.72 18.8,13H11.2C11.65,14.72 13.14,16 15,16M17,11A1,1 0 0,0 18,10A1,1 0 0,0 17,9A1,1 0 0,0 16,10A1,1 0 0,0 17,11Z"; -var mdiTagHeart = "M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4A2,2 0 0,0 2,4V11C2,11.55 2.22,12.05 2.59,12.42L11.59,21.42C11.95,21.78 12.45,22 13,22C13.55,22 14.05,21.78 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.45 21.77,11.94 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M17.27,15.27L13,19.54L8.73,15.27C8.28,14.81 8,14.19 8,13.5A2.5,2.5 0 0,1 10.5,11C11.19,11 11.82,11.28 12.27,11.74L13,12.46L13.73,11.73C14.18,11.28 14.81,11 15.5,11A2.5,2.5 0 0,1 18,13.5C18,14.19 17.72,14.82 17.27,15.27Z"; -var mdiTagHeartOutline = "M4,2A2,2 0 0,0 2,4V11C2,11.55 2.22,12.05 2.59,12.42L11.59,21.42C11.95,21.78 12.45,22 13,22C13.55,22 14.05,21.78 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.45 21.77,11.94 21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4V2M11,4L20,13L13,20L4,11V4H11V4H11M6.5,5A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 8,6.5A1.5,1.5 0 0,0 6.5,5M10.95,10.5C9.82,10.5 8.9,11.42 8.9,12.55C8.9,13.12 9.13,13.62 9.5,14L13,17.5L16.5,14C16.87,13.63 17.1,13.11 17.1,12.55A2.05,2.05 0 0,0 15.05,10.5C14.5,10.5 13.97,10.73 13.6,11.1L13,11.7L12.4,11.11C12.03,10.73 11.5,10.5 10.95,10.5Z"; -var mdiTagMinus = "M21.41,11.58L12.41,2.58C12.04,2.21 11.53,2 11,2H4A2,2 0 0,0 2,4V11C2,11.53 2.21,12.04 2.59,12.41L3,12.81C3.9,12.27 4.94,12 6,12A6,6 0 0,1 12,18C12,19.06 11.72,20.09 11.18,21L11.58,21.4C11.95,21.78 12.47,22 13,22C13.53,22 14.04,21.79 14.41,21.41L21.41,14.41C21.79,14.04 22,13.53 22,13C22,12.47 21.79,11.96 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M10,19H2V17H10V19Z"; -var mdiTagMinusOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M10 19H2V17H10V19Z"; -var mdiTagMultiple = "M5.5,9A1.5,1.5 0 0,0 7,7.5A1.5,1.5 0 0,0 5.5,6A1.5,1.5 0 0,0 4,7.5A1.5,1.5 0 0,0 5.5,9M17.41,11.58C17.77,11.94 18,12.44 18,13C18,13.55 17.78,14.05 17.41,14.41L12.41,19.41C12.05,19.77 11.55,20 11,20C10.45,20 9.95,19.78 9.58,19.41L2.59,12.42C2.22,12.05 2,11.55 2,11V6C2,4.89 2.89,4 4,4H9C9.55,4 10.05,4.22 10.41,4.58L17.41,11.58M13.54,5.71L14.54,4.71L21.41,11.58C21.78,11.94 22,12.45 22,13C22,13.55 21.78,14.05 21.42,14.41L16.04,19.79L15.04,18.79L20.75,13L13.54,5.71Z"; -var mdiTagMultipleOutline = "M6.5 10C7.3 10 8 9.3 8 8.5S7.3 7 6.5 7 5 7.7 5 8.5 5.7 10 6.5 10M9 6L16 13L11 18L4 11V6H9M9 4H4C2.9 4 2 4.9 2 6V11C2 11.6 2.2 12.1 2.6 12.4L9.6 19.4C9.9 19.8 10.4 20 11 20S12.1 19.8 12.4 19.4L17.4 14.4C17.8 14 18 13.5 18 13C18 12.4 17.8 11.9 17.4 11.6L10.4 4.6C10.1 4.2 9.6 4 9 4M13.5 5.7L14.5 4.7L21.4 11.6C21.8 12 22 12.5 22 13S21.8 14.1 21.4 14.4L16 19.8L15 18.8L20.7 13L13.5 5.7Z"; -var mdiTagOff = "M18.33 8.5L22.92 3.92L21.5 2.5L2.5 21.5L3.92 22.92L8.5 18.33L11.58 21.41A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M5.61 15.43L15.47 5.65L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.41M5.5 4A1.5 1.5 0 1 1 4 5.5A1.5 1.5 0 0 1 5.5 4Z"; -var mdiTagOffOutline = "M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M18.33 8.5L22.92 3.92L21.5 2.5L2.5 21.5L3.92 22.92L8.5 18.33L11.59 21.42A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M13 20L9.92 16.92L16.92 9.92L20 13M5.61 15.43L7 14L4 11V4H11L14.06 7.06L15.47 5.66L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42M5 6.5A1.5 1.5 0 1 0 6.5 5A1.5 1.5 0 0 0 5 6.5Z"; -var mdiTagOutline = "M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L11.59 21.42A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M13 20L4 11V4H11L20 13M6.5 5A1.5 1.5 0 1 1 5 6.5A1.5 1.5 0 0 1 6.5 5Z"; -var mdiTagPlus = "M21.41,11.58L12.41,2.58C12.04,2.21 11.53,2 11,2H4A2,2 0 0,0 2,4V11C2,11.53 2.21,12.04 2.59,12.41L3,12.81C3.9,12.27 4.94,12 6,12A6,6 0 0,1 12,18C12,19.06 11.72,20.09 11.18,21L11.58,21.4C11.95,21.78 12.47,22 13,22C13.53,22 14.04,21.79 14.41,21.41L21.41,14.41C21.79,14.04 22,13.53 22,13C22,12.47 21.79,11.96 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M10,19H7V22H5V19H2V17H5V14H7V17H10V19Z"; -var mdiTagPlusOutline = "M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L3 12.82A5.62 5.62 0 0 1 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92A5.57 5.57 0 0 1 11.18 21L11.59 21.41A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M10 19H7V22H5V19H2V17H5V14H7V17H10Z"; -var mdiTagRemove = "M21.41,11.58L12.41,2.58C12.04,2.21 11.53,2 11,2H4A2,2 0 0,0 2,4V11C2,11.53 2.21,12.04 2.59,12.41L3,12.81C3.9,12.27 4.94,12 6,12A6,6 0 0,1 12,18C12,19.06 11.72,20.09 11.18,21L11.58,21.4C11.95,21.78 12.47,22 13,22C13.53,22 14.04,21.79 14.41,21.41L21.41,14.41C21.79,14.04 22,13.53 22,13C22,12.47 21.79,11.96 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M8.12,21.54L6,19.41L3.88,21.54L2.46,20.12L4.59,18L2.46,15.88L3.87,14.47L6,16.59L8.12,14.47L9.53,15.88L7.41,18L9.53,20.12L8.12,21.54Z"; -var mdiTagRemoveOutline = "M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L3 12.82A5.62 5.62 0 0 1 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92A5.57 5.57 0 0 1 11.18 21L11.59 21.41A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M8.12 21.54L6 19.41L3.88 21.54L2.46 20.12L4.59 18L2.46 15.88L3.88 14.46L6 16.59L8.12 14.46L9.54 15.88L7.41 18L9.54 20.12Z"; -var mdiTagText = "M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.41L11.59 21.41A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M6.5 8A1.5 1.5 0 1 1 8 6.5A1.5 1.5 0 0 1 6.5 8M11.59 15.41L7.59 11.41L9 10L13 14M15.59 14.41L10.09 8.91L11.5 7.5L17 13Z"; -var mdiTagTextOutline = "M21.4 11.6L12.4 2.6C12 2.2 11.5 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.5 2.2 12 2.6 12.4L11.6 21.4C12 21.8 12.5 22 13 22C13.5 22 14 21.8 14.4 21.4L21.4 14.4C21.8 14 22 13.5 22 13C22 12.5 21.8 12 21.4 11.6M13 20L4 11V4H11L20 13M6.5 5C7.3 5 8 5.7 8 6.5S7.3 8 6.5 8 5 7.3 5 6.5 5.7 5 6.5 5M10.1 8.9L11.5 7.5L17 13L15.6 14.4L10.1 8.9M7.6 11.4L9 10L13 14L11.6 15.4L7.6 11.4Z"; -var mdiTailwind = "M12 6C9.33 6 7.67 7.33 7 10C8 8.67 9.17 8.17 10.5 8.5C11.26 8.69 11.81 9.24 12.41 9.85C13.39 10.85 14.5 12 17 12C19.67 12 21.33 10.67 22 8C21 9.33 19.83 9.83 18.5 9.5C17.74 9.31 17.2 8.76 16.59 8.15C15.61 7.15 14.5 6 12 6M7 12C4.33 12 2.67 13.33 2 16C3 14.67 4.17 14.17 5.5 14.5C6.26 14.69 6.8 15.24 7.41 15.85C8.39 16.85 9.5 18 12 18C14.67 18 16.33 16.67 17 14C16 15.33 14.83 15.83 13.5 15.5C12.74 15.31 12.2 14.76 11.59 14.15C10.61 13.15 9.5 12 7 12Z"; -var mdiTank = "M20,12H4V11H6L7,6H12L13,11H20V12M13.22,7L13.62,9H22V7H13.22M22,16A3,3 0 0,1 19,19H5A3,3 0 0,1 2,16A3,3 0 0,1 5,13H19A3,3 0 0,1 22,16M6,16A1,1 0 0,0 5,15A1,1 0 0,0 4,16A1,1 0 0,0 5,17A1,1 0 0,0 6,16M13,16A1,1 0 0,0 12,15A1,1 0 0,0 11,16A1,1 0 0,0 12,17A1,1 0 0,0 13,16M20,16A1,1 0 0,0 19,15A1,1 0 0,0 18,16A1,1 0 0,0 19,17A1,1 0 0,0 20,16Z"; -var mdiTankerTruck = "M20 8H15V14H2V17H3C3 18.7 4.3 20 6 20S9 18.7 9 17H15C15 18.7 16.3 20 18 20S21 18.7 21 17H23V12L20 8M6 18.5C5.2 18.5 4.5 17.8 4.5 17S5.2 15.5 6 15.5 7.5 16.2 7.5 17 6.8 18.5 6 18.5M18 18.5C17.2 18.5 16.5 17.8 16.5 17S17.2 15.5 18 15.5 19.5 16.2 19.5 17 18.8 18.5 18 18.5M17 12V9.5H19.5L21.5 12H17M14 9.5C14 11.4 12.4 13 10.5 13H4.5C2.6 13 1 11.4 1 9.5S2.6 6 4.5 6H5V5H4V4H8V5H7V6H10.5C12.4 6 14 7.6 14 9.5Z"; -var mdiTapeDrive = "M12 10C13.11 10 14 10.9 14 12C14 13.11 13.11 14 12 14C10.9 14 10 13.11 10 12C10 10.9 10.9 10 12 10M5 3H19C20.11 3 21 3.9 21 5V17H16.9C18.2 15.73 19 13.96 19 12C19 8.13 15.87 5 12 5C8.13 5 5 8.13 5 12C5 15.87 8.13 19 12 19H21C21 20.11 20.11 21 19 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3Z"; -var mdiTapeMeasure = "M9,5A7,7 0 0,1 16,12H17V15H16V19H9A7,7 0 0,1 2,12A7,7 0 0,1 9,5M9,8A4,4 0 0,0 5,12A4,4 0 0,0 9,16A4,4 0 0,0 13,12A4,4 0 0,0 9,8M17,17H22V19L22,21H20V19H17V17Z"; -var mdiTarget = "M11,2V4.07C7.38,4.53 4.53,7.38 4.07,11H2V13H4.07C4.53,16.62 7.38,19.47 11,19.93V22H13V19.93C16.62,19.47 19.47,16.62 19.93,13H22V11H19.93C19.47,7.38 16.62,4.53 13,4.07V2M11,6.08V8H13V6.09C15.5,6.5 17.5,8.5 17.92,11H16V13H17.91C17.5,15.5 15.5,17.5 13,17.92V16H11V17.91C8.5,17.5 6.5,15.5 6.08,13H8V11H6.09C6.5,8.5 8.5,6.5 11,6.08M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11Z"; -var mdiTargetAccount = "M20.95,11H22.5V13H20.95C20.5,17.17 17.17,20.5 13,20.95V22.5H11V20.95C6.83,20.5 3.5,17.17 3.05,13H1.5V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1.5H13V3.05C17.17,3.5 20.5,6.83 20.95,11M5.07,11H6.5V13H5.07C5.5,16.07 7.93,18.5 11,18.93V17.5H13V18.93C16.07,18.5 18.5,16.07 18.93,13H17.5V11H18.93C18.5,7.93 16.07,5.5 13,5.07V6.5H11V5.07C7.93,5.5 5.5,7.93 5.07,11M16,16H8V15C8,13.67 10.67,13 12,13C13.33,13 16,13.67 16,15V16M12,8A2,2 0 0,1 14,10A2,2 0 0,1 12,12A2,2 0 0,1 10,10A2,2 0 0,1 12,8Z"; -var mdiTargetVariant = "M22.08,11.04H20.08V4H13.05V2H11.04V4H4V11.04H2V13.05H4V20.08H11.04V22.08H13.05V20.08H20.08V13.05H22.08V11.04M18.07,18.07H13.05V16.06H11.04V18.07H6V13.05H8.03V11.04H6V6H11.04V8.03H13.05V6H18.07V11.04H16.06V13.05H18.07V18.07M13.05,12.05A1,1 0 0,1 12.05,13.05C11.5,13.05 11.04,12.6 11.04,12.05C11.04,11.5 11.5,11.04 12.05,11.04C12.6,11.04 13.05,11.5 13.05,12.05Z"; -var mdiTaxi = "M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H15V3H9V5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z"; -var mdiTea = "M4,19H20V21H4V19M20,8V5H18V8H20M20,3C20.6,3 21,3.2 21.4,3.6C21.8,4 22,4.5 22,5V8C22,8.6 21.8,9 21.4,9.4C21,9.8 20.6,10 20,10H18V13C18,14.1 17.6,15 16.8,15.8C16,16.6 15.1,17 14,17H8C6.9,17 6,16.6 5.2,15.8C4.4,15 4,14.1 4,13V3H9V5.4L7.2,6.8C7.1,6.9 7,7.1 7,7.2V11.5C7,11.8 7.2,12 7.5,12H11.5C11.8,12 12,11.8 12,11.5V7.2C12,7 11.9,6.9 11.8,6.8L10,5.4V3H20Z"; -var mdiTeaOutline = "M4,19H20V21H4V19M21.4,3.6C21,3.2 20.6,3 20,3H4V13C4,14.1 4.4,15 5.2,15.8C6,16.6 6.9,17 8,17H14C15.1,17 16,16.6 16.8,15.8C17.6,15 18,14.1 18,13V10H20C20.6,10 21,9.8 21.4,9.4C21.8,9 22,8.6 22,8V5C22,4.5 21.8,4 21.4,3.6M16,5V8L16,10V13C16,13.6 15.8,14 15.4,14.4C15,14.8 14.6,15 14,15H8C7.4,15 7,14.8 6.6,14.4C6.2,14 6,13.5 6,13V5H10V6.4L8.2,7.8C8,7.9 8,8.1 8,8.2V12.5C8,12.8 8.2,13 8.5,13H12.5C12.8,13 13,12.8 13,12.5V8.2C13,8 12.9,7.9 12.8,7.8L11,6.4V5H16M20,8H18V5H20V8Z"; -var mdiTeach = "M20,17A2,2 0 0,0 22,15V4A2,2 0 0,0 20,2H9.46C9.81,2.61 10,3.3 10,4H20V15H11V17M15,7V9H9V22H7V16H5V22H3V14H1.5V9A2,2 0 0,1 3.5,7H15M8,4A2,2 0 0,1 6,6A2,2 0 0,1 4,4A2,2 0 0,1 6,2A2,2 0 0,1 8,4Z"; -var mdiTeamviewer = "M10.04 9.2L9.3 11H14.75L14 9.2L19.55 12L14 14.8L14.75 13H9.3L10.04 14.8L4.5 12L10.04 9.2M20.83 22H3.17C2.53 22 2 21.5 2 20.83V3.17C2 2.53 2.53 2 3.17 2H20.83C21.5 2 22 2.53 22 3.17V20.83C22 21.47 21.5 22 20.83 22M11.93 3.76C7.41 3.82 3.78 7.5 3.76 12C3.72 16.5 7.35 20.2 11.86 20.24H12C16.53 20.18 20.18 16.53 20.24 12C20.31 7.5 16.74 3.83 12.26 3.76C12.15 3.75 12.04 3.76 11.93 3.76Z"; -var mdiTelegram = "M9.78,18.65L10.06,14.42L17.74,7.5C18.08,7.19 17.67,7.04 17.22,7.31L7.74,13.3L3.64,12C2.76,11.75 2.75,11.14 3.84,10.7L19.81,4.54C20.54,4.21 21.24,4.72 20.96,5.84L18.24,18.65C18.05,19.56 17.5,19.78 16.74,19.36L12.6,16.3L10.61,18.23C10.38,18.46 10.19,18.65 9.78,18.65Z"; -var mdiTelescope = "M21.9,8.9L20.2,9.9L16.2,3L17.9,2L21.9,8.9M9.8,7.9L12.8,13.1L18.9,9.6L15.9,4.4L9.8,7.9M11.4,12.7L9.4,9.2L5.1,11.7L7.1,15.2L11.4,12.7M2.1,14.6L3.1,16.3L5.7,14.8L4.7,13.1L2.1,14.6M12.1,14L11.8,13.6L7.5,16.1L7.8,16.5C8,16.8 8.3,17.1 8.6,17.3L7,22H9L10.4,17.7H10.5L12,22H14L12.1,16.4C12.6,15.7 12.6,14.8 12.1,14Z"; -var mdiTelevision = "M21,17H3V5H21M21,3H3A2,2 0 0,0 1,5V17A2,2 0 0,0 3,19H8V21H16V19H21A2,2 0 0,0 23,17V5A2,2 0 0,0 21,3Z"; -var mdiTelevisionAmbientLight = "M3 11H0V9H3V11M3 14H0V16H3V14M5 5.12L2.88 3L1.46 4.41L3.59 6.54L5 5.12M10 5V2H8V5H10M24 9H21V11H24V9M16 5V2H14V5H16M20.41 6.54L22.54 4.42L21.12 3L19 5.12L20.41 6.54M24 14H21V16H24V14M19 9V16C19 17.1 18.1 18 17 18H15V20H9V18H7C5.9 18 5 17.1 5 16V9C5 7.9 5.9 7 7 7H17C18.1 7 19 7.9 19 9M17 9H7V16H17V9M19 19.88L21.12 22L22.54 20.59L20.41 18.47L19 19.88M3.59 18.46L1.47 20.59L2.88 22L5 19.88L3.59 18.46Z"; -var mdiTelevisionBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M16,16L19,8H16.5L15,12.5L13.5,8H5V10H8V16H10V10H11.77L14,16H16Z"; -var mdiTelevisionClassic = "M8.16,3L6.75,4.41L9.34,7H4C2.89,7 2,7.89 2,9V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V9C22,7.89 21.11,7 20,7H14.66L17.25,4.41L15.84,3L12,6.84L8.16,3M4,9H17V19H4V9M19.5,9A1,1 0 0,1 20.5,10A1,1 0 0,1 19.5,11A1,1 0 0,1 18.5,10A1,1 0 0,1 19.5,9M19.5,12A1,1 0 0,1 20.5,13A1,1 0 0,1 19.5,14A1,1 0 0,1 18.5,13A1,1 0 0,1 19.5,12Z"; -var mdiTelevisionClassicOff = "M2,5.27L3.28,4L21,21.72L19.73,23L17.73,21H4C2.89,21 2,20.11 2,19V9C2,8 2.76,7.14 3.75,7L2,5.27M8.16,3L12,6.84L15.84,3L17.25,4.41L14.66,7H20C21.11,7 22,7.89 22,9V19C22,19.34 21.92,19.66 21.77,19.94L17,15.18V9H10.82L8.82,7H9.34L6.75,4.41L8.16,3M4,9V19H15.73L5.73,9H4M19.5,9A1,1 0 0,0 18.5,10A1,1 0 0,0 19.5,11A1,1 0 0,0 20.5,10A1,1 0 0,0 19.5,9M19.5,12A1,1 0 0,0 18.5,13A1,1 0 0,0 19.5,14A1,1 0 0,0 20.5,13A1,1 0 0,0 19.5,12Z"; -var mdiTelevisionClean = "M21 17H3V5H21M21 3H3C1.9 3 1 3.9 1 5V17C1 18.11 1.9 19 3 19H8V21H16V19H21C22.11 19 23 18.11 23 17V5C23 3.9 22.11 3 21 3M15 6.5L14.38 7.87L13 8.5L14.38 9.13L15 10.5L15.63 9.13L17 8.5L15.63 7.87L15 6.5M10.5 8.5L9.41 10.91L7 12L9.41 13.09L10.5 15.5L11.6 13.09L14 12L11.6 10.91L10.5 8.5"; -var mdiTelevisionGuide = "M21,17V5H3V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H16V21H8V19H3A2,2 0 0,1 1,17V5A2,2 0 0,1 3,3H21M5,7H11V11H5V7M5,13H11V15H5V13M13,7H19V9H13V7M13,11H19V15H13V11Z"; -var mdiTelevisionOff = "M0.5,2.77L1.78,1.5L21,20.72L19.73,22L16.73,19H16V21H8V19H3A2,2 0 0,1 1,17V5C1,4.5 1.17,4.07 1.46,3.73L0.5,2.77M21,17V5H7.82L5.82,3H21A2,2 0 0,1 23,5V17C23,17.85 22.45,18.59 21.7,18.87L19.82,17H21M3,17H14.73L3,5.27V17Z"; -var mdiTelevisionPause = "M3 3C1.89 3 1 3.89 1 5V17C1 18.1 1.9 19 3 19H8V21H16V19H21C22.1 19 23 18.1 23 17V5C23 3.89 22.1 3 21 3M3 5H21V17H3M9 8V14H11V8M13 8V14H15V8"; -var mdiTelevisionPlay = "M21,3H3C1.89,3 1,3.89 1,5V17A2,2 0 0,0 3,19H8V21H16V19H21A2,2 0 0,0 23,17V5C23,3.89 22.1,3 21,3M21,17H3V5H21M16,11L9,15V7"; -var mdiTelevisionStop = "M3 3H21C22.1 3 23 3.89 23 5V17C23 18.1 22.1 19 21 19H16V21H8V19H3C1.9 19 1 18.1 1 17V5C1 3.89 1.89 3 3 3M3 5V17H21V5H3M9 8H15V14H9V8Z"; -var mdiTemperatureCelsius = "M16.5,5C18.05,5 19.5,5.47 20.69,6.28L19.53,9.17C18.73,8.44 17.67,8 16.5,8C14,8 12,10 12,12.5C12,15 14,17 16.5,17C17.53,17 18.47,16.66 19.23,16.08L20.37,18.93C19.24,19.61 17.92,20 16.5,20A7.5,7.5 0 0,1 9,12.5A7.5,7.5 0 0,1 16.5,5M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z"; -var mdiTemperatureFahrenheit = "M11,20V5H20V8H14V11H19V14H14V20H11M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z"; -var mdiTemperatureKelvin = "M7,5H10V11L15,5H19L13.88,10.78L19,20H15.38L11.76,13.17L10,15.15V20H7V5Z"; -var mdiTennis = "M18,15A4,4 0 0,1 22,19A4,4 0 0,1 18,23A4,4 0 0,1 14,19A4,4 0 0,1 18,15M18,17A2,2 0 0,0 16,19A2,2 0 0,0 18,21A2,2 0 0,0 20,19A2,2 0 0,0 18,17M6.05,14.54C6.05,14.54 7.46,13.12 7.47,10.3C7.11,8.11 7.97,5.54 9.94,3.58C12.87,0.65 17.14,0.17 19.5,2.5C21.83,4.86 21.35,9.13 18.42,12.06C16.46,14.03 13.89,14.89 11.7,14.53C8.88,14.54 7.46,15.95 7.46,15.95L3.22,20.19L1.81,18.78L6.05,14.54M18.07,3.93C16.5,2.37 13.5,2.84 11.35,5C9.21,7.14 8.73,10.15 10.29,11.71C11.86,13.27 14.86,12.79 17,10.65C19.16,8.5 19.63,5.5 18.07,3.93Z"; -var mdiTennisBall = "M12,2C14.5,2 16.75,2.9 18.5,4.4C16.36,6.23 15,8.96 15,12C15,15.04 16.36,17.77 18.5,19.6C16.75,21.1 14.5,22 12,22C9.5,22 7.25,21.1 5.5,19.6C7.64,17.77 9,15.04 9,12C9,8.96 7.64,6.23 5.5,4.4C7.25,2.9 9.5,2 12,2M22,12C22,14.32 21.21,16.45 19.88,18.15C18.12,16.68 17,14.47 17,12C17,9.53 18.12,7.32 19.88,5.85C21.21,7.55 22,9.68 22,12M2,12C2,9.68 2.79,7.55 4.12,5.85C5.88,7.32 7,9.53 7,12C7,14.47 5.88,16.68 4.12,18.15C2.79,16.45 2,14.32 2,12Z"; -var mdiTent = "M4,6C4,7.19 4.39,8.27 5,9A3,3 0 0,1 2,6A3,3 0 0,1 5,3C4.39,3.73 4,4.81 4,6M2,21V19H4.76L12,4.78L19.24,19H22V21H2M12,9.19L7,19H17L12,9.19Z"; -var mdiTerraform = "M21 5.4V11.8L15.4 15V8.7L21 5.4M14.8 8.7V15L9.2 11.8V5.4L14.8 8.7M14.8 15.7V22.1L9.2 18.9V12.5L14.8 15.7M8.6 5.1V11.5L3 8.3V1.9L8.6 5.1Z"; -var mdiTerrain = "M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z"; -var mdiTestTube = "M7,2V4H8V18A4,4 0 0,0 12,22A4,4 0 0,0 16,18V4H17V2H7M11,16C10.4,16 10,15.6 10,15C10,14.4 10.4,14 11,14C11.6,14 12,14.4 12,15C12,15.6 11.6,16 11,16M13,12C12.4,12 12,11.6 12,11C12,10.4 12.4,10 13,10C13.6,10 14,10.4 14,11C14,11.6 13.6,12 13,12M14,7H10V4H14V7Z"; -var mdiTestTubeEmpty = "M7,2H17V4H16V18A4,4 0 0,1 12,22A4,4 0 0,1 8,18V4H7V2M14,4H10V18A2,2 0 0,0 12,20A2,2 0 0,0 14,18V4Z"; -var mdiTestTubeOff = "M2,5.27L3.28,4L20,20.72L18.73,22L15.84,19.11C15.36,20.77 13.82,22 12,22A4,4 0 0,1 8,18V11.27L2,5.27M7,2H17V4H16V14.18L13.63,11.81C13.86,11.63 14,11.35 14,11C14,10.4 13.6,10 13,10C12.65,10 12.37,10.14 12.19,10.37L8,6.18V4H7V2M11,16C11.5,16 11.88,15.71 12,15.24L10.76,14C10.29,14.12 10,14.5 10,15C10,15.6 10.4,16 11,16M14,7V4H10V7H14Z"; -var mdiText = "M21,6V8H3V6H21M3,18H12V16H3V18M3,13H21V11H3V13Z"; -var mdiTextAccount = "M21 5V7H3V5H21M3 17H12V15H3V17M3 12H21V10H3V12M18 14C19.11 14 20 14.9 20 16S19.11 18 18 18 16 17.11 16 16 16.9 14 18 14M14 22V21C14 19.9 15.79 19 18 19S22 19.9 22 21V22H14Z"; -var mdiTextBox = "M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiTextBoxCheck = "M17,21L14.25,18L15.41,16.84L17,18.43L20.59,14.84L21.75,16.25M12.8,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V12.8C20.12,12.29 19.09,12 18,12L17,12.08V11H7V13H14.69C13.07,14.07 12,15.91 12,18C12,19.09 12.29,20.12 12.8,21M12,15H7V17H12M17,7H7V9H17"; -var mdiTextBoxCheckOutline = "M17,21L14.25,18L15.41,16.84L17,18.43L20.59,14.84L21.75,16.25M12.8,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3H19C20.11,3 21,3.89 21,5V12.8C20.39,12.45 19.72,12.2 19,12.08V5H5V19H12.08C12.2,19.72 12.45,20.39 12.8,21M12,17H7V15H12M14.68,13H7V11H17V12.08C16.15,12.22 15.37,12.54 14.68,13M17,9H7V7H17"; -var mdiTextBoxMinus = "M22,17V19H14V17H22M12,17V15H7V17H12M17,11H7V13H14.69C13.07,14.07 12,15.91 12,18C12,19.09 12.29,20.12 12.8,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V12.8C20.12,12.29 19.09,12 18,12L17,12.08V11M17,9V7H7V9H17Z"; -var mdiTextBoxMinusOutline = "M22,17V19H14V17H22M5,3H19C20.11,3 21,3.89 21,5V12.8C20.39,12.45 19.72,12.2 19,12.08V5H5V19H12.08C12.2,19.72 12.45,20.39 12.8,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3M7,7H17V9H7V7M7,11H17V12.08C16.15,12.22 15.37,12.54 14.68,13H7V11M7,15H12V17H7V15Z"; -var mdiTextBoxMultiple = "M16,15H9V13H16M19,11H9V9H19M19,7H9V5H19M21,1H7C5.89,1 5,1.89 5,3V17C5,18.11 5.9,19 7,19H21C22.11,19 23,18.11 23,17V3C23,1.89 22.1,1 21,1M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3Z"; -var mdiTextBoxMultipleOutline = "M16,15H9V13H16V15M19,11H9V9H19V11M19,7H9V5H19V7M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17C23,18.11 22.11,19 21,19H7A2,2 0 0,1 5,17V3C5,1.89 5.89,1 7,1H21M7,3V17H21V3H7Z"; -var mdiTextBoxOutline = "M5,3C3.89,3 3,3.89 3,5V19C3,20.11 3.89,21 5,21H19C20.11,21 21,20.11 21,19V5C21,3.89 20.11,3 19,3H5M5,5H19V19H5V5M7,7V9H17V7H7M7,11V13H17V11H7M7,15V17H14V15H7Z"; -var mdiTextBoxPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M12,17V15H7V17H12M17,11H7V13H14.69C13.07,14.07 12,15.91 12,18C12,19.09 12.29,20.12 12.8,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V12.8C20.12,12.29 19.09,12 18,12L17,12.08V11M17,9V7H7V9H17Z"; -var mdiTextBoxPlusOutline = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M5,3H19C20.11,3 21,3.89 21,5V12.8C20.39,12.45 19.72,12.2 19,12.08V5H5V19H12.08C12.2,19.72 12.45,20.39 12.8,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3M7,7H17V9H7V7M7,11H17V12.08C16.15,12.22 15.37,12.54 14.68,13H7V11M7,15H12V17H7V15Z"; -var mdiTextBoxRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M12,17V15H7V17H12M17,11H7V13H14.69C13.07,14.07 12,15.91 12,18C12,19.09 12.29,20.12 12.8,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V12.8C20.12,12.29 19.09,12 18,12L17,12.08V11M17,9V7H7V9H17Z"; -var mdiTextBoxRemoveOutline = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M5,3H19C20.11,3 21,3.89 21,5V12.8C20.39,12.45 19.72,12.2 19,12.08V5H5V19H12.08C12.2,19.72 12.45,20.39 12.8,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3M7,7H17V9H7V7M7,11H17V12.08C16.15,12.22 15.37,12.54 14.68,13H7V11M7,15H12V17H7V15Z"; -var mdiTextBoxSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M7,15V17H9C9.14,18.55 9.8,19.94 10.81,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V13.03C19.85,11.21 17.82,10 15.5,10C14.23,10 13.04,10.37 12.04,11H7V13H10C9.64,13.6 9.34,14.28 9.17,15H7M17,9V7H7V9H17Z"; -var mdiTextBoxSearchOutline = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M5,3H19C20.11,3 21,3.89 21,5V13.03C20.5,12.23 19.81,11.54 19,11V5H5V19H9.5C9.81,19.75 10.26,20.42 10.81,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3M7,7H17V9H7V7M7,11H12.03C11.23,11.5 10.54,12.19 10,13H7V11M7,15H9.17C9.06,15.5 9,16 9,16.5V17H7V15Z"; -var mdiTextRecognition = "M2 4C2 2.9 2.9 2 4 2H8V4H4V8H2V4M22 20C22 21.11 21.11 22 20 22H16V20H20V16H22V20M4 22C2.9 22 2 21.11 2 20V16H4V20H8V22H4M20 2C21.11 2 22 2.9 22 4V8H20V4H16V2H20M9 7V9H11V17H13V9H15V7H9Z"; -var mdiTextSearch = "M19.31 18.9L22.39 22L21 23.39L17.88 20.32C17.19 20.75 16.37 21 15.5 21C13 21 11 19 11 16.5C11 14 13 12 15.5 12C18 12 20 14 20 16.5C20 17.38 19.75 18.21 19.31 18.9M15.5 19C16.88 19 18 17.88 18 16.5C18 15.12 16.88 14 15.5 14C14.12 14 13 15.12 13 16.5C13 17.88 14.12 19 15.5 19M21 4V6H3V4H21M3 16V14H9V16H3M3 11V9H21V11H18.97C17.96 10.37 16.77 10 15.5 10C14.23 10 13.04 10.37 12.03 11H3Z"; -var mdiTextShadow = "M3,3H16V6H11V18H8V6H3V3M12,7H14V9H12V7M15,7H17V9H15V7M18,7H20V9H18V7M12,10H14V12H12V10M12,13H14V15H12V13M12,16H14V18H12V16M12,19H14V21H12V19Z"; -var mdiTextShort = "M4,9H20V11H4V9M4,13H14V15H4V13Z"; -var mdiTextSubject = "M4,5H20V7H4V5M4,9H20V11H4V9M4,13H20V15H4V13M4,17H14V19H4V17Z"; -var mdiTextToSpeech = "M8,7A2,2 0 0,1 10,9V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9A2,2 0 0,1 8,7M14,14C14,16.97 11.84,19.44 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18A4,4 0 0,0 12,14H14M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z"; -var mdiTextToSpeechOff = "M2,5.27L3.28,4L20,20.72L18.73,22L13.38,16.65C12.55,18.35 10.93,19.59 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18C9.82,18 11.36,16.78 11.84,15.11L10,13.27V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9.27L2,5.27M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z"; -var mdiTexture = "M9.29,21H12.12L21,12.12V9.29M19,21C19.55,21 20.05,20.78 20.41,20.41C20.78,20.05 21,19.55 21,19V17L17,21M5,3A2,2 0 0,0 3,5V7L7,3M11.88,3L3,11.88V14.71L14.71,3M19.5,3.08L3.08,19.5C3.17,19.85 3.35,20.16 3.59,20.41C3.84,20.65 4.15,20.83 4.5,20.92L20.93,4.5C20.74,3.8 20.2,3.26 19.5,3.08Z"; -var mdiTextureBox = "M20 2H4C2.9 2 2 2.9 2 4V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V4C22 2.9 21.11 2 20 2M4 6L6 4H10.9L4 10.9V6M4 13.7L13.7 4H18.6L4 18.6V13.7M20 18L18 20H13.1L20 13.1V18M20 10.3L10.3 20H5.4L20 5.4V10.3Z"; -var mdiTheater = "M4,15H6A2,2 0 0,1 8,17V19H9V17A2,2 0 0,1 11,15H13A2,2 0 0,1 15,17V19H16V17A2,2 0 0,1 18,15H20A2,2 0 0,1 22,17V19H23V22H1V19H2V17A2,2 0 0,1 4,15M11,7L15,10L11,13V7M4,2H20A2,2 0 0,1 22,4V13.54C21.41,13.19 20.73,13 20,13V4H4V13C3.27,13 2.59,13.19 2,13.54V4A2,2 0 0,1 4,2Z"; -var mdiThemeLightDark = "M7.5,2C5.71,3.15 4.5,5.18 4.5,7.5C4.5,9.82 5.71,11.85 7.53,13C4.46,13 2,10.54 2,7.5A5.5,5.5 0 0,1 7.5,2M19.07,3.5L20.5,4.93L4.93,20.5L3.5,19.07L19.07,3.5M12.89,5.93L11.41,5L9.97,6L10.39,4.3L9,3.24L10.75,3.12L11.33,1.47L12,3.1L13.73,3.13L12.38,4.26L12.89,5.93M9.59,9.54L8.43,8.81L7.31,9.59L7.65,8.27L6.56,7.44L7.92,7.35L8.37,6.06L8.88,7.33L10.24,7.36L9.19,8.23L9.59,9.54M19,13.5A5.5,5.5 0 0,1 13.5,19C12.28,19 11.15,18.6 10.24,17.93L17.93,10.24C18.6,11.15 19,12.28 19,13.5M14.6,20.08L17.37,18.93L17.13,22.28L14.6,20.08M18.93,17.38L20.08,14.61L22.28,17.15L18.93,17.38M20.08,12.42L18.94,9.64L22.28,9.88L20.08,12.42M9.63,18.93L12.4,20.08L9.87,22.27L9.63,18.93Z"; -var mdiThermometer = "M15 13V5A3 3 0 0 0 9 5V13A5 5 0 1 0 15 13M12 4A1 1 0 0 1 13 5V8H11V5A1 1 0 0 1 12 4Z"; -var mdiThermometerAlert = "M17 13V7H19V13H17M17 17V15H19V17H17M13 13V5C13 3.3 11.7 2 10 2S7 3.3 7 5V13C4.8 14.7 4.3 17.8 6 20S10.8 22.7 13 21 15.7 16.2 14 14C13.7 13.6 13.4 13.3 13 13M10 4C10.6 4 11 4.4 11 5V8H9V5C9 4.4 9.4 4 10 4Z"; -var mdiThermometerChevronDown = "M17.41 12.17L14.24 9L12.83 10.41L17.41 15L22 10.41L20.58 9M10 13V5C10 3.34 8.66 2 7 2S4 3.34 4 5V13C1.79 14.66 1.34 17.79 3 20S7.79 22.66 10 21 12.66 16.21 11 14C10.72 13.62 10.38 13.28 10 13M7 4C7.55 4 8 4.45 8 5V8H6V5C6 4.45 6.45 4 7 4Z"; -var mdiThermometerChevronUp = "M17.41 11.83L20.58 15L22 13.59L17.41 9L12.82 13.59L14.24 15L17.41 11.83M10 13V5C10 3.34 8.66 2 7 2S4 3.34 4 5V13C1.79 14.66 1.34 17.79 3 20S7.79 22.66 10 21 12.66 16.21 11 14C10.72 13.62 10.38 13.28 10 13M7 4C7.55 4 8 4.45 8 5V8H6V5C6 4.45 6.45 4 7 4Z"; -var mdiThermometerHigh = "M15 13V5A3 3 0 0 0 9 5V13A5 5 0 1 0 15 13M12 4A1 1 0 0 1 13 5H11A1 1 0 0 1 12 4Z"; -var mdiThermometerLines = "M17 3H21V5H17V3M17 7H21V9H17V7M17 11H21V13H17.75L17 12.1V11M21 15V17H19C19 16.31 18.9 15.63 18.71 15H21M7 3V5H3V3H7M7 7V9H3V7H7M7 11V12.1L6.25 13H3V11H7M3 15H5.29C5.1 15.63 5 16.31 5 17H3V15M15 13V5C15 3.34 13.66 2 12 2S9 3.34 9 5V13C6.79 14.66 6.34 17.79 8 20S12.79 22.66 15 21 17.66 16.21 16 14C15.72 13.62 15.38 13.28 15 13M12 4C12.55 4 13 4.45 13 5V8H11V5C11 4.45 11.45 4 12 4Z"; -var mdiThermometerLow = "M15 13V5A3 3 0 0 0 9 5V13A5 5 0 1 0 15 13M12 4A1 1 0 0 1 13 5V12H11V5A1 1 0 0 1 12 4Z"; -var mdiThermometerMinus = "M22 11H14V13H22V11M11 13V5C11 3.34 9.66 2 8 2S5 3.34 5 5V13C2.79 14.66 2.34 17.79 4 20S8.79 22.66 11 21 13.66 16.21 12 14C11.72 13.62 11.38 13.28 11 13M8 4C8.55 4 9 4.45 9 5V8H7V5C7 4.45 7.45 4 8 4Z"; -var mdiThermometerOff = "M11 7.8L9 5.8V5C9 3.34 10.34 2 12 2S15 3.34 15 5V11.8L11.2 8H13V5C13 4.45 12.55 4 12 4S11 4.45 11 5V7.8M22.11 21.46L2.39 1.73L1.11 3L9 10.89V13C6.79 14.66 6.34 17.79 8 20C9.66 22.21 12.79 22.66 15 21C15.84 20.37 16.4 19.5 16.71 18.6L20.84 22.73L22.11 21.46Z"; -var mdiThermometerPlus = "M19 11V8H17V11H14V13H17V16H19V13H22V11M11 13V5C11 3.34 9.66 2 8 2S5 3.34 5 5V13C2.79 14.66 2.34 17.79 4 20S8.79 22.66 11 21 13.66 16.21 12 14C11.72 13.62 11.38 13.28 11 13M8 4C8.55 4 9 4.45 9 5V8H7V5C7 4.45 7.45 4 8 4Z"; -var mdiThermostat = "M16.95,16.95L14.83,14.83C15.55,14.1 16,13.1 16,12C16,11.26 15.79,10.57 15.43,10L17.6,7.81C18.5,9 19,10.43 19,12C19,13.93 18.22,15.68 16.95,16.95M12,5C13.57,5 15,5.5 16.19,6.4L14,8.56C13.43,8.21 12.74,8 12,8A4,4 0 0,0 8,12C8,13.1 8.45,14.1 9.17,14.83L7.05,16.95C5.78,15.68 5,13.93 5,12A7,7 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"; -var mdiThermostatBox = "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M12,5C13.57,5 15,5.5 16.19,6.4L14,8.56C13.43,8.21 12.74,8 12,8A4,4 0 0,0 8,12C8,13.1 8.45,14.1 9.17,14.83L7.05,16.95C5.78,15.68 5,13.93 5,12A7,7 0 0,1 12,5M17.6,7.81C18.5,9 19,10.43 19,12C19,13.93 18.22,15.68 16.95,16.95L14.83,14.83C15.55,14.1 16,13.1 16,12C16,11.26 15.79,10.57 15.43,10L17.6,7.81Z"; -var mdiThoughtBubble = "M3.5,19A1.5,1.5 0 0,1 5,20.5A1.5,1.5 0 0,1 3.5,22A1.5,1.5 0 0,1 2,20.5A1.5,1.5 0 0,1 3.5,19M8.5,16A2.5,2.5 0 0,1 11,18.5A2.5,2.5 0 0,1 8.5,21A2.5,2.5 0 0,1 6,18.5A2.5,2.5 0 0,1 8.5,16M14.5,15C13.31,15 12.23,14.5 11.5,13.65C10.77,14.5 9.69,15 8.5,15C6.54,15 4.91,13.59 4.57,11.74C3.07,11.16 2,9.7 2,8A4,4 0 0,1 6,4C6.26,4 6.5,4.03 6.77,4.07C7.5,3.41 8.45,3 9.5,3C10.69,3 11.77,3.5 12.5,4.35C13.23,3.5 14.31,3 15.5,3C17.46,3 19.09,4.41 19.43,6.26C20.93,6.84 22,8.3 22,10A4,4 0 0,1 18,14L17.23,13.93C16.5,14.59 15.55,15 14.5,15Z"; -var mdiThoughtBubbleOutline = "M3.5,19A1.5,1.5 0 0,1 5,20.5A1.5,1.5 0 0,1 3.5,22A1.5,1.5 0 0,1 2,20.5A1.5,1.5 0 0,1 3.5,19M8.5,16A2.5,2.5 0 0,1 11,18.5A2.5,2.5 0 0,1 8.5,21A2.5,2.5 0 0,1 6,18.5A2.5,2.5 0 0,1 8.5,16M14.5,15C13.31,15 12.23,14.5 11.5,13.65C10.77,14.5 9.69,15 8.5,15C6.54,15 4.91,13.59 4.57,11.74C3.07,11.16 2,9.7 2,8A4,4 0 0,1 6,4L6.77,4.07C7.5,3.41 8.45,3 9.5,3C10.69,3 11.77,3.5 12.5,4.35C13.23,3.5 14.31,3 15.5,3C17.46,3 19.09,4.41 19.43,6.26C20.93,6.84 22,8.3 22,10A4,4 0 0,1 18,14L17.23,13.93C16.5,14.59 15.55,15 14.5,15M6,6A2,2 0 0,0 4,8A2,2 0 0,0 6,10C6.33,10 6.64,9.92 6.92,9.78C6.66,10.12 6.5,10.54 6.5,11A2,2 0 0,0 8.5,13C9.1,13 9.64,12.73 10,12.31V12.31L11.47,10.63L13,12.34V12.34C13.38,12.74 13.91,13 14.5,13C15.5,13 16.33,12.26 16.5,11.3C16.84,11.73 17.39,12 18,12A2,2 0 0,0 20,10A2,2 0 0,0 18,8C17.67,8 17.36,8.08 17.08,8.22C17.34,7.88 17.5,7.46 17.5,7A2,2 0 0,0 15.5,5C14.91,5 14.38,5.26 14,5.66L12.47,7.37L11,5.69V5.69C10.64,5.27 10.1,5 9.5,5C8.5,5 7.67,5.74 7.5,6.7C7.16,6.27 6.61,6 6,6M8.5,17.5A1,1 0 0,0 7.5,18.5A1,1 0 0,0 8.5,19.5A1,1 0 0,0 9.5,18.5A1,1 0 0,0 8.5,17.5Z"; -var mdiThumbDown = "M19,15H23V3H19M15,3H6C5.17,3 4.46,3.5 4.16,4.22L1.14,11.27C1.05,11.5 1,11.74 1,12V14A2,2 0 0,0 3,16H9.31L8.36,20.57C8.34,20.67 8.33,20.77 8.33,20.88C8.33,21.3 8.5,21.67 8.77,21.94L9.83,23L16.41,16.41C16.78,16.05 17,15.55 17,15V5C17,3.89 16.1,3 15,3Z"; -var mdiThumbDownOutline = "M19,15V3H23V15H19M15,3A2,2 0 0,1 17,5V15C17,15.55 16.78,16.05 16.41,16.41L9.83,23L8.77,21.94C8.5,21.67 8.33,21.3 8.33,20.88L8.36,20.57L9.31,16H3C1.89,16 1,15.1 1,14V12C1,11.74 1.05,11.5 1.14,11.27L4.16,4.22C4.46,3.5 5.17,3 6,3H15M15,5H5.97L3,12V14H11.78L10.65,19.32L15,14.97V5Z"; -var mdiThumbUp = "M23,10C23,8.89 22.1,8 21,8H14.68L15.64,3.43C15.66,3.33 15.67,3.22 15.67,3.11C15.67,2.7 15.5,2.32 15.23,2.05L14.17,1L7.59,7.58C7.22,7.95 7,8.45 7,9V19A2,2 0 0,0 9,21H18C18.83,21 19.54,20.5 19.84,19.78L22.86,12.73C22.95,12.5 23,12.26 23,12V10M1,21H5V9H1V21Z"; -var mdiThumbUpOutline = "M5,9V21H1V9H5M9,21A2,2 0 0,1 7,19V9C7,8.45 7.22,7.95 7.59,7.59L14.17,1L15.23,2.06C15.5,2.33 15.67,2.7 15.67,3.11L15.64,3.43L14.69,8H21C22.11,8 23,8.9 23,10V12C23,12.26 22.95,12.5 22.86,12.73L19.84,19.78C19.54,20.5 18.83,21 18,21H9M9,19H18.03L21,12V10H12.21L13.34,4.68L9,9.03V19Z"; -var mdiThumbsUpDown = "M22.5,10H15.75C15.13,10 14.6,10.38 14.37,10.91L12.11,16.2C12.04,16.37 12,16.56 12,16.75V18A1,1 0 0,0 13,19H18.18L17.5,22.18V22.42C17.5,22.73 17.63,23 17.83,23.22L18.62,24L23.56,19.06C23.83,18.79 24,18.41 24,18V11.5A1.5,1.5 0 0,0 22.5,10M12,6A1,1 0 0,0 11,5H5.82L6.5,1.82V1.59C6.5,1.28 6.37,1 6.17,0.79L5.38,0L0.44,4.94C0.17,5.21 0,5.59 0,6V12.5A1.5,1.5 0 0,0 1.5,14H8.25C8.87,14 9.4,13.62 9.63,13.09L11.89,7.8C11.96,7.63 12,7.44 12,7.25V6Z"; -var mdiTicket = "M15.58,16.8L12,14.5L8.42,16.8L9.5,12.68L6.21,10L10.46,9.74L12,5.8L13.54,9.74L17.79,10L14.5,12.68M20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12Z"; -var mdiTicketAccount = "M20,12A2,2 0 0,0 22,14V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V14C3.11,14 4,13.1 4,12A2,2 0 0,0 2,10V6C2,4.89 2.9,4 4,4H20A2,2 0 0,1 22,6V10A2,2 0 0,0 20,12M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5V16.25M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z"; -var mdiTicketConfirmation = "M13,8.5H11V6.5H13V8.5M13,13H11V11H13V13M13,17.5H11V15.5H13V17.5M22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12A2,2 0 0,1 22,10Z"; -var mdiTicketConfirmationOutline = "M22 10V6C22 4.89 21.1 4 20 4H4C2.9 4 2 4.89 2 6V10C3.11 10 4 10.9 4 12S3.11 14 2 14V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V14C20.9 14 20 13.1 20 12S20.9 10 22 10M20 8.54C18.81 9.23 18 10.53 18 12S18.81 14.77 20 15.46V18H4V15.46C5.19 14.77 6 13.47 6 12C6 10.5 5.2 9.23 4 8.54L4 6H20V8.54M11 15H13V17H11M11 11H13V13H11M11 7H13V9H11Z"; -var mdiTicketOutline = "M4,4A2,2 0 0,0 2,6V10A2,2 0 0,1 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12A2,2 0 0,1 22,10V6A2,2 0 0,0 20,4H4M4,6H20V8.54C18.76,9.25 18,10.57 18,12C18,13.43 18.76,14.75 20,15.46V18H4V15.46C5.24,14.75 6,13.43 6,12C6,10.57 5.24,9.25 4,8.54V6Z"; -var mdiTicketPercent = "M4,4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4M15.5,7L17,8.5L8.5,17L7,15.5L15.5,7M8.81,7.04C9.79,7.04 10.58,7.83 10.58,8.81A1.77,1.77 0 0,1 8.81,10.58C7.83,10.58 7.04,9.79 7.04,8.81A1.77,1.77 0 0,1 8.81,7.04M15.19,13.42C16.17,13.42 16.96,14.21 16.96,15.19A1.77,1.77 0 0,1 15.19,16.96C14.21,16.96 13.42,16.17 13.42,15.19A1.77,1.77 0 0,1 15.19,13.42Z"; -var mdiTicketPercentOutline = "M14.8 8L16 9.2L9.2 16L8 14.8L14.8 8M4 4H20C21.11 4 22 4.89 22 6V10C20.9 10 20 10.9 20 12C20 13.11 20.9 14 22 14V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V14C3.11 14 4 13.11 4 12C4 10.9 3.11 10 2 10V6C2 4.89 2.9 4 4 4M4 6V8.54C5.24 9.26 6 10.57 6 12C6 13.43 5.24 14.75 4 15.46V18H20V15.46C18.76 14.75 18 13.43 18 12C18 10.57 18.76 9.26 20 8.54V6H4M9.5 8C10.33 8 11 8.67 11 9.5C11 10.33 10.33 11 9.5 11C8.67 11 8 10.33 8 9.5C8 8.67 8.67 8 9.5 8M14.5 13C15.33 13 16 13.67 16 14.5C16 15.33 15.33 16 14.5 16C13.67 16 13 15.33 13 14.5C13 13.67 13.67 13 14.5 13Z"; -var mdiTie = "M6,2L10,6L7,17L12,22L17,17L14,6L18,2Z"; -var mdiTilde = "M2,15C2,15 2,9 8,9C12,9 12.5,12.5 15.5,12.5C19.5,12.5 19.5,9 19.5,9H22C22,9 22,15 16,15C12,15 10.5,11.5 8.5,11.5C4.5,11.5 4.5,15 4.5,15H2"; -var mdiTimelapse = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.24,7.76C15.07,6.58 13.53,6 12,6V12L7.76,16.24C10.1,18.58 13.9,18.58 16.24,16.24C18.59,13.9 18.59,10.1 16.24,7.76Z"; -var mdiTimeline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6Z"; -var mdiTimelineAlert = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M15 7V13H17V7H15M15 15V17H17V15H15Z"; -var mdiTimelineAlertOutline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M10 6V18H22V6H10M15 7H17V13H15V7M15 15H17V17H15V15Z"; -var mdiTimelineCheck = "M4 8H2V2H4V8M2 22H4V16H2V22M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M19.75 10.33L18.59 8.92L15 12.5L13.41 10.92L12.25 12.08L15 15.08L19.75 10.33Z"; -var mdiTimelineCheckOutline = "M22 4H10C8.9 4 8 4.89 8 6V10L6 12L8 14V18C8 19.11 8.9 20 10 20H22C23.11 20 24 19.11 24 18V6C24 4.89 23.11 4 22 4M22 18H10V6H22V18M4 8H2V2H4V8M2 16H4V22H2V16M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M15 15.08L12.25 12.08L13.41 10.92L15 12.5L18.59 8.92L19.75 10.33L15 15.08Z"; -var mdiTimelineClock = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M16 4C20.42 4 24 7.58 24 12C24 16.42 20.42 20 16 20C12.4 20 9.36 17.62 8.35 14.35L6 12L8.35 9.65C9.36 6.38 12.4 4 16 4M15 13L19.53 15.79L20.33 14.5L16.5 12.2V7H15V13Z"; -var mdiTimelineClockOutline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M16 4C20.42 4 24 7.58 24 12C24 16.42 20.42 20 16 20C12.4 20 9.36 17.62 8.35 14.35L6 12L8.35 9.65C9.36 6.38 12.4 4 16 4M16 6C12.69 6 10 8.69 10 12C10 15.31 12.69 18 16 18C19.31 18 22 15.31 22 12C22 8.69 19.31 6 16 6M15 13V8H16.5V12.2L19.5 14L18.68 15.26L15 13Z"; -var mdiTimelineHelp = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M16.5 15.5H15V17H16.5V15.5M14.5 10.5V10C14.5 9.17 15.17 8.5 16 8.5C16.83 8.5 17.5 9.18 17.5 10C17.5 10.47 17.27 10.9 16.88 11.16L16.59 11.35C15.6 12 15 13.11 15 14.3V14.5H16.5V14.3C16.5 13.62 16.84 13 17.41 12.6L17.71 12.41C18.5 11.88 19 10.97 19 10C19 8.34 17.66 7 16 7C14.34 7 13 8.34 13 10V10.5H14.5Z"; -var mdiTimelineHelpOutline = "M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M4 2V8H2V2H4M2 22V16H4V22H2M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M22 6H10V10.83L8.83 12L10 13.17V18H22V6M16.5 15.5V17H15V15.5H16.5M14.5 10.5H13V10C13 8.34 14.34 7 16 7C17.66 7 19 8.34 19 10C19 10.97 18.5 11.88 17.71 12.41L17.41 12.6C16.84 13 16.5 13.62 16.5 14.3V14.5H15V14.3C15 13.11 15.6 12 16.59 11.35L16.88 11.16C17.27 10.9 17.5 10.47 17.5 10C17.5 9.18 16.83 8.5 16 8.5C15.17 8.5 14.5 9.17 14.5 10V10.5Z"; -var mdiTimelineMinus = "M4 8H2V2H4V8M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M20 11H12V13H20V11M2 22H4V16H2V22M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10Z"; -var mdiTimelineMinusOutline = "M2 16H4V22H2V16M4 2H2V8H4V2M20 11H12V13H20V11M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M22 6H10V18H22V6Z"; -var mdiTimelineOutline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M10 6V18H22V6H10Z"; -var mdiTimelinePlus = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M20 11H17V8H15V11H12V13H15V16H17V13H20V11Z"; -var mdiTimelinePlusOutline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M20 11V13H17V16H15V13H12V11H15V8H17V11H20M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M10 6V18H22V6H10Z"; -var mdiTimelineRemove = "M4 8H2V2H4V8M2 22H4V16H2V22M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M17.41 12L19.53 9.88L18.12 8.47L16 10.59L13.88 8.47L12.47 9.88L14.59 12L12.47 14.12L13.88 15.53L16 13.41L18.12 15.53L19.53 14.12L17.41 12Z"; -var mdiTimelineRemoveOutline = "M4 8H2V2H4V8M2 22H4V16H2V22M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10M13.88 15.54L16 13.41L18.12 15.53L19.53 14.12L17.41 12L19.53 9.88L18.12 8.47L16 10.59L13.88 8.47L12.47 9.88L14.59 12L12.47 14.12L13.88 15.54M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M22 6H10V18H22V6Z"; -var mdiTimelineText = "M4 2V8H2V2H4M2 22H4V16H2V22M5 12C5 10.9 4.11 10 3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M19 13H11V15H19V13M21 9H11V11H21V9Z"; -var mdiTimelineTextOutline = "M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M4 2V8H2V2H4M2 22V16H4V22H2M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M22 6H10V10.83L8.83 12L10 13.17V18H22V6M12 9H20V11H12V9M12 13H18V15H12V13Z"; -var mdiTimer = "M19.03 7.39L20.45 5.97C20 5.46 19.55 5 19.04 4.56L17.62 6C16.07 4.74 14.12 4 12 4C7.03 4 3 8.03 3 13S7.03 22 12 22C17 22 21 17.97 21 13C21 10.88 20.26 8.93 19.03 7.39M13 14H11V7H13V14M15 1H9V3H15V1Z"; -var mdiTimer10 = "M12.9,13.22C12.9,13.82 12.86,14.33 12.78,14.75C12.7,15.17 12.58,15.5 12.42,15.77C12.26,16.03 12.06,16.22 11.83,16.34C11.6,16.46 11.32,16.5 11,16.5C10.71,16.5 10.43,16.46 10.19,16.34C9.95,16.22 9.75,16.03 9.59,15.77C9.43,15.5 9.3,15.17 9.21,14.75C9.12,14.33 9.08,13.82 9.08,13.22V10.72C9.08,10.12 9.12,9.61 9.21,9.2C9.3,8.79 9.42,8.46 9.59,8.2C9.75,7.95 9.95,7.77 10.19,7.65C10.43,7.54 10.7,7.5 11,7.5C11.31,7.5 11.58,7.54 11.81,7.65C12.05,7.76 12.25,7.94 12.41,8.2C12.57,8.45 12.7,8.78 12.78,9.19C12.86,9.6 12.91,10.11 12.91,10.71V13.22M13.82,7.05C13.5,6.65 13.07,6.35 12.59,6.17C12.12,6 11.58,5.9 11,5.9C10.42,5.9 9.89,6 9.41,6.17C8.93,6.35 8.5,6.64 8.18,7.05C7.84,7.46 7.58,8 7.39,8.64C7.21,9.29 7.11,10.09 7.11,11.03V12.95C7.11,13.89 7.2,14.69 7.39,15.34C7.58,16 7.84,16.53 8.19,16.94C8.53,17.35 8.94,17.65 9.42,17.83C9.9,18 10.43,18.11 11,18.11C11.6,18.11 12.13,18 12.6,17.83C13.08,17.65 13.5,17.35 13.82,16.94C14.16,16.53 14.42,16 14.6,15.34C14.78,14.69 14.88,13.89 14.88,12.95V11.03C14.88,10.09 14.79,9.29 14.6,8.64C14.42,8 14.16,7.45 13.82,7.05M23.78,14.37C23.64,14.09 23.43,13.84 23.15,13.63C22.87,13.42 22.54,13.24 22.14,13.1C21.74,12.96 21.29,12.83 20.79,12.72C20.44,12.65 20.15,12.57 19.92,12.5C19.69,12.41 19.5,12.33 19.37,12.24C19.23,12.15 19.14,12.05 19.09,11.94C19.04,11.83 19,11.7 19,11.55C19,11.41 19.04,11.27 19.1,11.14C19.16,11 19.25,10.89 19.37,10.8C19.5,10.7 19.64,10.62 19.82,10.56C20,10.5 20.22,10.47 20.46,10.47C20.71,10.47 20.93,10.5 21.12,10.58C21.31,10.65 21.47,10.75 21.6,10.87C21.73,11 21.82,11.13 21.89,11.29C21.95,11.45 22,11.61 22,11.78H23.94C23.94,11.39 23.86,11.03 23.7,10.69C23.54,10.35 23.31,10.06 23,9.81C22.71,9.56 22.35,9.37 21.92,9.22C21.5,9.07 21,9 20.46,9C19.95,9 19.5,9.07 19.07,9.21C18.66,9.35 18.3,9.54 18,9.78C17.72,10 17.5,10.3 17.34,10.62C17.18,10.94 17.11,11.27 17.11,11.63C17.11,12 17.19,12.32 17.34,12.59C17.5,12.87 17.7,13.11 18,13.32C18.25,13.53 18.58,13.7 18.96,13.85C19.34,14 19.77,14.11 20.23,14.21C20.62,14.29 20.94,14.38 21.18,14.47C21.42,14.56 21.61,14.66 21.75,14.76C21.88,14.86 21.97,15 22,15.1C22.07,15.22 22.09,15.35 22.09,15.5C22.09,15.81 21.96,16.06 21.69,16.26C21.42,16.46 21.03,16.55 20.5,16.55C20.3,16.55 20.09,16.53 19.88,16.47C19.67,16.42 19.5,16.34 19.32,16.23C19.15,16.12 19,15.97 18.91,15.79C18.8,15.61 18.74,15.38 18.73,15.12H16.84C16.84,15.5 16.92,15.83 17.08,16.17C17.24,16.5 17.47,16.82 17.78,17.1C18.09,17.37 18.47,17.59 18.93,17.76C19.39,17.93 19.91,18 20.5,18C21.04,18 21.5,17.95 21.95,17.82C22.38,17.69 22.75,17.5 23.06,17.28C23.37,17.05 23.6,16.77 23.77,16.45C23.94,16.13 24,15.78 24,15.39C24,15 23.93,14.65 23.78,14.37M0,7.72V9.4L3,8.4V18H5V6H4.75L0,7.72Z"; -var mdiTimer3 = "M20.87,14.37C20.73,14.09 20.5,13.84 20.24,13.63C19.96,13.42 19.63,13.24 19.23,13.1C18.83,12.96 18.38,12.83 17.88,12.72C17.53,12.65 17.24,12.57 17,12.5C16.78,12.41 16.6,12.33 16.46,12.24C16.32,12.15 16.23,12.05 16.18,11.94C16.13,11.83 16.1,11.7 16.1,11.55C16.1,11.4 16.13,11.27 16.19,11.14C16.25,11 16.34,10.89 16.46,10.8C16.58,10.7 16.73,10.62 16.91,10.56C17.09,10.5 17.31,10.47 17.55,10.47C17.8,10.47 18,10.5 18.21,10.58C18.4,10.65 18.56,10.75 18.69,10.87C18.82,11 18.91,11.13 19,11.29C19.04,11.45 19.08,11.61 19.08,11.78H21.03C21.03,11.39 20.95,11.03 20.79,10.69C20.63,10.35 20.4,10.06 20.1,9.81C19.8,9.56 19.44,9.37 19,9.22C18.58,9.07 18.09,9 17.55,9C17.04,9 16.57,9.07 16.16,9.21C15.75,9.35 15.39,9.54 15.1,9.78C14.81,10 14.59,10.3 14.43,10.62C14.27,10.94 14.2,11.27 14.2,11.63C14.2,12 14.28,12.31 14.43,12.59C14.58,12.87 14.8,13.11 15.07,13.32C15.34,13.53 15.67,13.7 16.05,13.85C16.43,14 16.86,14.11 17.32,14.21C17.71,14.29 18.03,14.38 18.27,14.47C18.5,14.56 18.7,14.66 18.84,14.76C18.97,14.86 19.06,15 19.11,15.1C19.16,15.22 19.18,15.35 19.18,15.5C19.18,15.81 19.05,16.06 18.78,16.26C18.5,16.46 18.12,16.55 17.61,16.55C17.39,16.55 17.18,16.53 16.97,16.47C16.76,16.42 16.57,16.34 16.41,16.23C16.24,16.12 16.11,15.97 16,15.79C15.89,15.61 15.83,15.38 15.82,15.12H13.93C13.93,15.5 14,15.83 14.17,16.17C14.33,16.5 14.56,16.82 14.87,17.1C15.18,17.37 15.56,17.59 16,17.76C16.5,17.93 17,18 17.6,18C18.13,18 18.61,17.95 19.04,17.82C19.47,17.69 19.84,17.5 20.15,17.28C20.46,17.05 20.69,16.77 20.86,16.45C21.03,16.13 21.11,15.78 21.11,15.39C21.09,15 21,14.65 20.87,14.37M11.61,12.97C11.45,12.73 11.25,12.5 11,12.32C10.74,12.13 10.43,11.97 10.06,11.84C10.36,11.7 10.63,11.54 10.86,11.34C11.09,11.14 11.28,10.93 11.43,10.7C11.58,10.47 11.7,10.24 11.77,10C11.85,9.75 11.88,9.5 11.88,9.26C11.88,8.71 11.79,8.22 11.6,7.8C11.42,7.38 11.16,7.03 10.82,6.74C10.5,6.46 10.09,6.24 9.62,6.1C9.17,5.97 8.65,5.9 8.09,5.9C7.54,5.9 7.03,6 6.57,6.14C6.1,6.31 5.7,6.54 5.37,6.83C5.04,7.12 4.77,7.46 4.59,7.86C4.39,8.25 4.3,8.69 4.3,9.15H6.28C6.28,8.89 6.33,8.66 6.42,8.46C6.5,8.26 6.64,8.08 6.8,7.94C6.97,7.8 7.16,7.69 7.38,7.61C7.6,7.53 7.84,7.5 8.11,7.5C8.72,7.5 9.17,7.65 9.47,7.96C9.77,8.27 9.91,8.71 9.91,9.28C9.91,9.55 9.87,9.8 9.79,10C9.71,10.24 9.58,10.43 9.41,10.59C9.24,10.75 9.03,10.87 8.78,10.96C8.53,11.05 8.23,11.09 7.89,11.09H6.72V12.66H7.9C8.24,12.66 8.54,12.7 8.81,12.77C9.08,12.85 9.31,12.96 9.5,13.12C9.69,13.28 9.84,13.5 9.94,13.73C10.04,13.97 10.1,14.27 10.1,14.6C10.1,15.22 9.92,15.69 9.57,16C9.22,16.35 8.73,16.5 8.12,16.5C7.83,16.5 7.56,16.47 7.32,16.38C7.08,16.3 6.88,16.18 6.71,16C6.54,15.86 6.41,15.68 6.32,15.46C6.23,15.24 6.18,15 6.18,14.74H4.19C4.19,15.29 4.3,15.77 4.5,16.19C4.72,16.61 5,16.96 5.37,17.24C5.73,17.5 6.14,17.73 6.61,17.87C7.08,18 7.57,18.08 8.09,18.08C8.66,18.08 9.18,18 9.67,17.85C10.16,17.7 10.58,17.47 10.93,17.17C11.29,16.87 11.57,16.5 11.77,16.07C11.97,15.64 12.07,15.14 12.07,14.59C12.07,14.3 12.03,14 11.96,13.73C11.88,13.5 11.77,13.22 11.61,12.97Z"; -var mdiTimerOff = "M3 4L1.75 5.27L4.5 8.03C3.55 9.45 3 11.16 3 13C3 17.97 7.03 22 12 22C13.84 22 15.55 21.45 17 20.5L19.5 23L20.75 21.73L13.04 14L3 4M15 1H9V3H15M21 13C21 14.83 20.45 16.53 19.5 17.94L13 11.45V7H11V9.45L7.05 5.5C8.47 4.55 10.17 4 12 4C14.12 4 16.07 4.74 17.62 5.97L19.04 4.55L20.45 5.97L19.03 7.39C20.26 8.93 21 10.88 21 13Z"; -var mdiTimerOffOutline = "M12,20A7,7 0 0,1 5,13C5,11.72 5.35,10.5 5.95,9.5L15.5,19.04C14.5,19.65 13.28,20 12,20M3,4L1.75,5.27L4.5,8.03C3.55,9.45 3,11.16 3,13A9,9 0 0,0 12,22C13.84,22 15.55,21.45 17,20.5L19.5,23L20.75,21.73L13.04,14L3,4M11,9.44L13,11.44V8H11M15,1H9V3H15M19.04,4.55L17.62,5.97C16.07,4.74 14.12,4 12,4C10.17,4 8.47,4.55 7.05,5.5L8.5,6.94C9.53,6.35 10.73,6 12,6A7,7 0 0,1 19,13C19,14.27 18.65,15.47 18.06,16.5L19.5,17.94C20.45,16.53 21,14.83 21,13C21,10.88 20.26,8.93 19.03,7.39L20.45,5.97L19.04,4.55Z"; -var mdiTimerOutline = "M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M19.03,7.39L20.45,5.97C20,5.46 19.55,5 19.04,4.56L17.62,6C16.07,4.74 14.12,4 12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22C17,22 21,17.97 21,13C21,10.88 20.26,8.93 19.03,7.39M11,14H13V8H11M15,1H9V3H15V1Z"; -var mdiTimerSand = "M6,2H18V8H18V8L14,12L18,16V16H18V22H6V16H6V16L10,12L6,8V8H6V2M16,16.5L12,12.5L8,16.5V20H16V16.5M12,11.5L16,7.5V4H8V7.5L12,11.5M10,6H14V6.75L12,8.75L10,6.75V6Z"; -var mdiTimerSandEmpty = "M6,2V8H6V8L10,12L6,16V16H6V22H18V16H18V16L14,12L18,8V8H18V2H6M16,16.5V20H8V16.5L12,12.5L16,16.5M12,11.5L8,7.5V4H16V7.5L12,11.5Z"; -var mdiTimerSandFull = "M6,2V8H6V8L10,12L6,16V16H6V22H18V16H18V16L14,12L18,8V8H18V2H6Z"; -var mdiTimetable = "M14,12H15.5V14.82L17.94,16.23L17.19,17.53L14,15.69V12M4,2H18A2,2 0 0,1 20,4V10.1C21.24,11.36 22,13.09 22,15A7,7 0 0,1 15,22C13.09,22 11.36,21.24 10.1,20H4A2,2 0 0,1 2,18V4A2,2 0 0,1 4,2M4,15V18H8.67C8.24,17.09 8,16.07 8,15H4M4,8H10V5H4V8M18,8V5H12V8H18M4,13H8.29C8.63,11.85 9.26,10.82 10.1,10H4V13M15,10.15A4.85,4.85 0 0,0 10.15,15C10.15,17.68 12.32,19.85 15,19.85A4.85,4.85 0 0,0 19.85,15C19.85,12.32 17.68,10.15 15,10.15Z"; -var mdiToaster = "M21 11A2 2 0 0 0 19 9H5A2 2 0 0 0 3 11H2V13H3V20H21V13H22V11M17 15A2 2 0 1 1 19 13A2 2 0 0 1 17 15M18 8H6C6.33 5.75 8.88 4 12 4S17.63 5.75 18 8Z"; -var mdiToasterOff = "M20.8 22.7L18.1 20H3V13H2V11H3C3 9.9 3.9 9 5 9H7.1L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M15.3 12.1C15.6 11.5 16.3 11 17 11C18.1 11 19 11.9 19 13C19 13.8 18.6 14.4 17.9 14.7L21 17.8V13H22V11H21C21 9.9 20.1 9 19 9H12.2L15.3 12.1M18 8C17.6 5.8 15.1 4 12 4C10.6 4 9.2 4.4 8.2 5L11.2 8H18Z"; -var mdiToasterOven = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M4,7H16V17H4V7M19,7A1,1 0 0,1 20,8A1,1 0 0,1 19,9A1,1 0 0,1 18,8A1,1 0 0,1 19,7M6,9V11H14V9H6M19,11A1,1 0 0,1 20,12A1,1 0 0,1 19,13A1,1 0 0,1 18,12A1,1 0 0,1 19,11Z"; -var mdiToggleSwitch = "M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z"; -var mdiToggleSwitchOff = "M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M7,15A3,3 0 0,1 4,12A3,3 0 0,1 7,9A3,3 0 0,1 10,12A3,3 0 0,1 7,15Z"; -var mdiToggleSwitchOffOutline = "M7,10A2,2 0 0,1 9,12A2,2 0 0,1 7,14A2,2 0 0,1 5,12A2,2 0 0,1 7,10M17,7A5,5 0 0,1 22,12A5,5 0 0,1 17,17H7A5,5 0 0,1 2,12A5,5 0 0,1 7,7H17M7,9A3,3 0 0,0 4,12A3,3 0 0,0 7,15H17A3,3 0 0,0 20,12A3,3 0 0,0 17,9H7Z"; -var mdiToggleSwitchOutline = "M17,10A2,2 0 0,1 19,12A2,2 0 0,1 17,14A2,2 0 0,1 15,12A2,2 0 0,1 17,10M17,7A5,5 0 0,1 22,12A5,5 0 0,1 17,17H7A5,5 0 0,1 2,12A5,5 0 0,1 7,7H17M7,9A3,3 0 0,0 4,12A3,3 0 0,0 7,15H17A3,3 0 0,0 20,12A3,3 0 0,0 17,9H7Z"; -var mdiToilet = "M9,22H17V19.5C19.41,17.87 21,15.12 21,12V4A2,2 0 0,0 19,2H15C13.89,2 13,2.9 13,4V12H3C3,15.09 5,18 9,19.5V22M5.29,14H18.71C18.14,15.91 16.77,17.5 15,18.33V20H11V18.33C9,18 5.86,15.91 5.29,14M15,4H19V12H15V4M16,5V8H18V5H16Z"; -var mdiToolbox = "M9,5V6H15V5H9M22,18C22,18.53 21.79,19 21.4,19.41C21,19.81 20.55,20 20,20H4C3.45,20 3,19.81 2.6,19.41C2.21,19 2,18.53 2,18V14H7V15H9V14H15V15H17V14H22V18M4.5,7.22C4.84,6.41 5.45,6 6.33,6H7V5C7,4.45 7.18,4 7.57,3.59C7.96,3.2 8.44,3 9,3H15C15.56,3 16.04,3.2 16.43,3.59C16.82,4 17,4.45 17,5V6H17.67C18.55,6 19.16,6.41 19.5,7.22L21.58,12H17V11H15V12H9V11H7V12H2.42L4.5,7.22Z"; -var mdiToolboxOutline = "M20,18V14H17V15H15V14H9V15H7V14H4V18H20M6.33,8L4.59,12H7V11H9V12H15V11H17V12H19.41L17.67,8H6.33M9,5V6H15V5H9M21.84,12.61C21.94,12.83 22,13.09 22,13.41V18C22,18.53 21.79,19 21.4,19.41C21,19.81 20.55,20 20,20H4C3.45,20 3,19.81 2.6,19.41C2.21,19 2,18.53 2,18V13.41C2,13.09 2.06,12.83 2.16,12.61L4.5,7.22C4.84,6.41 5.45,6 6.33,6H7V5C7,4.45 7.18,4 7.57,3.59C7.96,3.2 8.44,3 9,3H15C15.56,3 16.04,3.2 16.43,3.59C16.82,4 17,4.45 17,5V6H17.67C18.55,6 19.16,6.41 19.5,7.22L21.84,12.61Z"; -var mdiTools = "M21.71 20.29L20.29 21.71A1 1 0 0 1 18.88 21.71L7 9.85A3.81 3.81 0 0 1 6 10A4 4 0 0 1 2.22 4.7L4.76 7.24L5.29 6.71L6.71 5.29L7.24 4.76L4.7 2.22A4 4 0 0 1 10 6A3.81 3.81 0 0 1 9.85 7L21.71 18.88A1 1 0 0 1 21.71 20.29M2.29 18.88A1 1 0 0 0 2.29 20.29L3.71 21.71A1 1 0 0 0 5.12 21.71L10.59 16.25L7.76 13.42M20 2L16 4V6L13.83 8.17L15.83 10.17L18 8H20L22 4Z"; -var mdiTooltip = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2Z"; -var mdiTooltipAccount = "M20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H8L12,22L16,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M12,4.3C13.5,4.3 14.7,5.5 14.7,7C14.7,8.5 13.5,9.7 12,9.7C10.5,9.7 9.3,8.5 9.3,7C9.3,5.5 10.5,4.3 12,4.3M18,15H6V14.1C6,12.1 10,11 12,11C14,11 18,12.1 18,14.1V15Z"; -var mdiTooltipCheck = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M10.46 14L6.96 10.5L8.37 9.08L10.46 11.17L15.64 6L17.05 7.41L10.46 14Z"; -var mdiTooltipCheckOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M20 16H15.17L12 19.17L8.83 16H4V4H20V16M10.75 13.71L7.25 10.21L8.66 8.79L10.75 10.88L15.34 6.3L16.75 7.71L10.75 13.71Z"; -var mdiTooltipEdit = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M9.08 15H7V12.91L13.17 6.72L15.24 8.8L9.08 15M16.84 7.2L15.83 8.21L13.76 6.18L14.77 5.16C14.97 4.95 15.31 4.94 15.55 5.16L16.84 6.41C17.05 6.62 17.06 6.96 16.84 7.2Z"; -var mdiTooltipEditOutline = "M4 2H20C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H16L12 22L8 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2M4 4V16H8.83L12 19.17L15.17 16H20V4H4M15.84 8.2L14.83 9.21L12.76 7.18L13.77 6.16C13.97 5.95 14.31 5.94 14.55 6.16L15.84 7.41C16.05 7.62 16.06 7.96 15.84 8.2M8 11.91L12.17 7.72L14.24 9.8L10.08 14H8V11.91Z"; -var mdiTooltipImage = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M19,15V7L15,11L13,9L7,15H19M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z"; -var mdiTooltipImageOutline = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M7.5,6A1.5,1.5 0 0,1 9,7.5A1.5,1.5 0 0,1 7.5,9A1.5,1.5 0 0,1 6,7.5A1.5,1.5 0 0,1 7.5,6M6,14L11,9L13,11L18,6V14H6Z"; -var mdiTooltipMinus = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M16 11H8V9H16V11Z"; -var mdiTooltipMinusOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M20 16H15.17L12 19.17L8.83 16H4V4H20V16M16 11H8V9H16V11Z"; -var mdiTooltipOutline = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4Z"; -var mdiTooltipPlus = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z"; -var mdiTooltipPlusOutline = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z"; -var mdiTooltipRemove = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M15.54 12.12L14.12 13.54L12 11.41L9.88 13.54L8.47 12.12L10.59 10L8.46 7.88L9.88 6.47L12 8.59L14.12 6.47L15.54 7.88L13.41 10L15.54 12.12Z"; -var mdiTooltipRemoveOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M20 16H15.17L12 19.17L8.83 16H4V4H20V16M8.46 12.12L10.59 10L8.46 7.88L9.88 6.47L12 8.59L14.12 6.47L15.54 7.88L13.41 10L15.54 12.12L14.12 13.54L12 11.41L9.88 13.54L8.46 12.12Z"; -var mdiTooltipText = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M5,5V7H19V5H5M5,9V11H15V9H5M5,13V15H17V13H5Z"; -var mdiTooltipTextOutline = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M6,7H18V9H6V7M6,11H16V13H6V11Z"; -var mdiTooth = "M7,2C4,2 2,5 2,8C2,10.11 3,13 4,14C5,15 6,22 8,22C12.54,22 10,15 12,15C14,15 11.46,22 16,22C18,22 19,15 20,14C21,13 22,10.11 22,8C22,5 20,2 17,2C14,2 14,3 12,3C10,3 10,2 7,2Z"; -var mdiToothOutline = "M7,2C4,2 2,5 2,8C2,10.11 3,13 4,14C5,15 6,22 8,22C12.54,22 10,15 12,15C14,15 11.46,22 16,22C18,22 19,15 20,14C21,13 22,10.11 22,8C22,5 20,2 17,2C14,2 14,3 12,3C10,3 10,2 7,2M7,4C9,4 10,5 12,5C14,5 15,4 17,4C18.67,4 20,6 20,8C20,9.75 19.14,12.11 18.19,13.06C17.33,13.92 16.06,19.94 15.5,19.94C15.29,19.94 15,18.88 15,17.59C15,15.55 14.43,13 12,13C9.57,13 9,15.55 9,17.59C9,18.88 8.71,19.94 8.5,19.94C7.94,19.94 6.67,13.92 5.81,13.06C4.86,12.11 4,9.75 4,8C4,6 5.33,4 7,4Z"; -var mdiToothbrush = "M12.91 6.43L15.03 8.55L16.09 7.5L15.03 6.43L17.86 3.6L18.92 4.66L20 3.6L17.86 1.5M3 20.57L4.43 22L14.5 11.9L16.63 11.19L21.4 6.43C22.18 5.65 22.18 4.38 21.4 3.6L15.55 9.44L13.43 10.15Z"; -var mdiToothbrushElectric = "M12 1.5V14C10.34 14 9 15.34 9 17V22H17V17C17 15.34 15.66 14 14 14V3.5C14 2.4 13.11 1.5 12 1.5M7.5 2V9H11V7.5H9V3.5H11V2H7.5M13 17.5C13.83 17.5 14.5 18.17 14.5 19C14.5 19.83 13.83 20.5 13 20.5C12.17 20.5 11.5 19.83 11.5 19C11.5 18.17 12.17 17.5 13 17.5Z"; -var mdiToothbrushPaste = "M17.86 1.5L12.91 6.43L15.03 8.55L16.09 7.5L15.03 6.43L17.86 3.6L18.92 4.66L20 3.6M21.4 3.6L15.56 9.44L13.43 10.15L3 20.57L4.43 22L10.08 16.33L14.33 20.57L18.57 16.33L14.33 12.09L14.5 11.9L16.63 11.19L21.4 6.43C22.18 5.65 22.18 4.38 21.4 3.6M6.55 4.31L2.31 8.55L7.26 13.5L11.5 9.26M18.22 18.1L16.09 20.22L17.5 21.63L19.63 19.5Z"; -var mdiTorch = "M8.6 9.6C9 10.2 9.5 10.7 10.2 11H14.2C14.5 10.9 14.7 10.7 14.9 10.5C15.9 9.5 16.3 8 15.8 6.7L15.7 6.5C15.6 6.2 15.4 6 15.2 5.8C15.1 5.6 14.9 5.5 14.8 5.3C14.4 5 14 4.7 13.6 4.3C12.7 3.4 12.6 2 13.1 1C12.6 1.1 12.1 1.4 11.7 1.8C10.2 3 9.6 5.1 10.3 7V7.2C10.3 7.3 10.2 7.4 10.1 7.5C10 7.6 9.8 7.5 9.7 7.4L9.6 7.3C9 6.5 8.9 5.3 9.3 4.3C8.4 5.1 7.9 6.4 8 7.7C8 8 8.1 8.3 8.2 8.6C8.2 8.9 8.4 9.3 8.6 9.6M12.3 8.1C12.4 7.6 12.2 7.2 12.1 6.8C12 6.4 12 6 12.2 5.6L12.5 6.2C12.9 6.8 13.6 7 13.8 7.8V8.1C13.8 8.6 13.6 9.1 13.3 9.4C13.1 9.5 12.9 9.7 12.7 9.7C12.1 9.9 11.4 9.6 11 9.2C11.8 9.2 12.2 8.6 12.3 8.1M15 12V14H14L13 22H11L10 14H9V12H15Z"; -var mdiTortoise = "M19.31,5.6C18.09,5.56 16.88,6.5 16.5,8C16,10 16,10 15,11C13,13 10,14 4,15C3,15.16 2.5,15.5 2,16C4,16 6,16 4.5,17.5L3,19H6L8,17C10,18 11.33,18 13.33,17L14,19H17L16,16C16,16 17,12 18,11C19,10 19,11 20,11C21,11 22,10 22,8.5C22,8 22,7 20.5,6C20.15,5.76 19.74,5.62 19.31,5.6M9,6A6,6 0 0,0 3,12C3,12.6 3.13,13.08 3.23,13.6C9.15,12.62 12.29,11.59 13.93,9.94L14.43,9.44C13.44,7.34 11.32,6 9,6Z"; -var mdiToslink = "M20 10V7L17 4H7L4 7V10C2.9 10 2 10.9 2 12S2.9 14 4 14V18C4 19.1 4.9 20 6 20H18C19.1 20 20 19.1 20 18V14C21.11 14 22 13.11 22 12S21.11 10 20 10M12 16C9.79 16 8 14.21 8 12S9.79 8 12 8 16 9.79 16 12 14.21 16 12 16M14 12C14 13.11 13.11 14 12 14S10 13.11 10 12 10.9 10 12 10 14 10.9 14 12Z"; -var mdiTournament = "M2,2V4H7V8H2V10H7C8.11,10 9,9.11 9,8V7H14V17H9V16C9,14.89 8.11,14 7,14H2V16H7V20H2V22H7C8.11,22 9,21.11 9,20V19H14C15.11,19 16,18.11 16,17V13H22V11H16V7C16,5.89 15.11,5 14,5H9V4C9,2.89 8.11,2 7,2H2Z"; -var mdiTowTruck = "M15,10H20.39L17.06,6H15V10M17.5,18.5C17.89,18.5 18.24,18.37 18.54,18.07C18.84,17.77 19,17.42 19,17C19,16.61 18.84,16.26 18.54,15.96C18.24,15.66 17.89,15.5 17.5,15.5C17.08,15.5 16.73,15.66 16.43,15.96C16.13,16.26 16,16.61 16,17C16,17.42 16.13,17.77 16.43,18.07C16.73,18.37 17.08,18.5 17.5,18.5M6,18.5C6.44,18.5 6.8,18.37 7.08,18.07C7.36,17.77 7.5,17.42 7.5,17C7.5,16.61 7.36,16.26 7.08,15.96C6.8,15.66 6.44,15.5 6,15.5C5.56,15.5 5.2,15.66 4.92,15.96C4.64,16.26 4.5,16.61 4.5,17C4.5,17.42 4.64,17.77 4.92,18.07C5.2,18.37 5.56,18.5 6,18.5M18,4L23,10V17H20.5C20.5,17.83 20.19,18.53 19.59,19.13C19,19.72 18.3,20 17.5,20C16.67,20 15.97,19.72 15.38,19.13C14.78,18.53 14.5,17.83 14.5,17H9C9,17.83 8.7,18.53 8.11,19.13C7.5,19.72 6.81,20 6,20C5.19,20 4.5,19.72 3.89,19.13C3.3,18.53 3,17.83 3,17H1V13H9.19L3,8.11V11H1V5H2L13,11.06V4H18Z"; -var mdiTowerBeach = "M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L18,1V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z"; -var mdiTowerFire = "M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L12,1L18,3V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z"; -var mdiToyBrick = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H21V6Z"; -var mdiToyBrickMarker = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H14.54A9.55 9.55 0 0 1 13 15.5A5.58 5.58 0 0 1 18.5 10A5.3 5.3 0 0 1 21 10.63V6M18.5 12A3.54 3.54 0 0 0 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5A3.54 3.54 0 0 0 18.5 12M18.5 16.8A1.2 1.2 0 1 1 18.5 14.4A1.29 1.29 0 0 1 19.7 15.6A1.15 1.15 0 0 1 18.5 16.8Z"; -var mdiToyBrickMarkerOutline = "M18.5 12A3.54 3.54 0 0 0 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5A3.54 3.54 0 0 0 18.5 12M18.5 16.8A1.2 1.2 0 1 1 18.5 14.4A1.29 1.29 0 0 1 19.7 15.6A1.15 1.15 0 0 1 18.5 16.8M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H14.54A15.55 15.55 0 0 1 13.54 18H5V8H19V10A5.11 5.11 0 0 1 21 10.6V6Z"; -var mdiToyBrickMinus = "M23 20H15V18H23V20M13 19C13 15.69 15.69 13 19 13C19.7 13 20.37 13.13 21 13.35V6H19V5C19 3.9 18.11 3 17 3H15C13.9 3 13 3.9 13 5V6H11V5C11 3.9 10.11 3 9 3H7C5.9 3 5 3.9 5 5V6H3V20H13.09C13.04 19.67 13 19.34 13 19Z"; -var mdiToyBrickMinusOutline = "M13.09 20H3V6H5V5C5 3.9 5.9 3 7 3H9C10.11 3 11 3.9 11 5V6H13V5C13 3.9 13.9 3 15 3H17C18.11 3 19 3.9 19 5V6H21V13.35C20.37 13.13 19.7 13 19 13V8H5V18H13.09C13.04 18.33 13 18.66 13 19S13.04 19.67 13.09 20M23 18H15V20H23V18Z"; -var mdiToyBrickOutline = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H21V6M19 18H5V8H19Z"; -var mdiToyBrickPlus = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H13.09A5.47 5.47 0 0 1 13 19A6 6 0 0 1 21 13.34V6M20 15V18H23V20H20V23H18V20H15V18H18V15Z"; -var mdiToyBrickPlusOutline = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H14V18H5V8H19V13H21V6M21 15V18H24V20H21V23H19V20H16V18H19V15Z"; -var mdiToyBrickRemove = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H13.09A5.47 5.47 0 0 1 13 19A6 6 0 0 1 21 13.34V6M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z"; -var mdiToyBrickRemoveOutline = "M19 6V5C19 3.9 18.1 3 17 3H15C13.9 3 13 3.9 13 5V6H11V5C11 3.9 10.1 3 9 3H7C5.9 3 5 3.9 5 5V6H3V20H14V18H5V8H19V13H21V6M17.88 15.46L20 17.59L22.12 15.47L23.54 16.88L21.41 19L23.54 21.12L22.12 22.54L20 20.41L17.88 22.54L16.46 21.12L18.59 19L16.47 16.88"; -var mdiToyBrickSearch = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H11.81A6.5 6.5 0 0 1 21 10.81V6M20.31 17.9A4.5 4.5 0 1 0 18.88 19.32L22 22.39L23.39 21M16.5 18A2.5 2.5 0 1 1 19 15.5A2.5 2.5 0 0 1 16.5 18Z"; -var mdiToyBrickSearchOutline = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H11.81A6.59 6.59 0 0 1 10.5 18H5V8H19V9.5A6.59 6.59 0 0 1 21 10.81V6M20.31 17.9A4.5 4.5 0 1 0 18.88 19.32L22 22.39L23.39 21M16.5 18A2.5 2.5 0 1 1 19 15.5A2.5 2.5 0 0 1 16.5 18Z"; -var mdiTrackLight = "M6,1V3H9V6.4L4.11,4.38L1.43,10.84L6.97,13.14L11.94,16.82L13.79,17.59L17.62,8.35L15.77,7.58L11,6.87V3H14V1H6M21.81,6.29L19.5,7.25L20.26,9.1L22.57,8.14L21.81,6.29M19.78,13.57L19,15.42L21.79,16.57L22.55,14.72L19.78,13.57M16.19,18.93L14.34,19.69L15.3,22L17.15,21.23L16.19,18.93Z"; -var mdiTrackpad = "M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M4,5V13H20V5H4M4,19H11V15H4V19M20,19V15H13V19H20Z"; -var mdiTrackpadLock = "M3,1C1.89,1 1,1.89 1,3V17C1,18.11 1.89,19 3,19H14V17H12V13H16.68C17.5,12.35 18.47,12 19.5,12C20,12 20.5,12.09 21,12.26V3C21,1.89 20.11,1 19,1H3M3,3H19V11H3V3M3,13H10V17H3V13M19.5,14A2.5,2.5 0 0,0 17,16.5V17A1,1 0 0,0 16,18V22A1,1 0 0,0 17,23H22A1,1 0 0,0 23,22V18A1,1 0 0,0 22,17V16.5A2.5,2.5 0 0,0 19.5,14M19.5,15A1.5,1.5 0 0,1 21,16.5V17H18V16.5A1.5,1.5 0 0,1 19.5,15Z"; -var mdiTractor = "M5,4V11.26C3.2,11.9 2,13.6 2,15.5C2,18 4,20 6.5,20C8.79,20 10.71,18.28 10.97,16H15.17C15.06,16.32 15,16.66 15,17A3,3 0 0,0 18,20A3,3 0 0,0 21,17C21,16.66 20.94,16.32 20.82,16H22V13C22,11.89 21.11,11 20,11H15.04L13.65,4H5M7,6H12L13,11V14H10.74C10.16,12.38 8.71,11.23 7,11.03V6M6.5,13.25A2.25,2.25 0 0,1 8.75,15.5A2.25,2.25 0 0,1 6.5,17.75A2.25,2.25 0 0,1 4.25,15.5A2.25,2.25 0 0,1 6.5,13.25M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z"; -var mdiTractorVariant = "M13.3 2.79L9.8 6.29L10.5 7L11.9 5.61L13 6.71V9C13 10.11 12.11 11 11 11H10.46A6 6 0 0 1 12 15A6 6 0 0 1 11.91 16H15.03A4.5 4.5 0 0 1 19.5 12A4.5 4.5 0 0 1 22 12.76V8C22 6.89 21.11 6 20 6H13.71L12.61 4.9L14 3.5L13.3 2.79M4 7C3.45 7 3 7.45 3 8C3 8.55 3.45 9 4 9H9C9 7.9 8.11 7 7 7H4M6 10A5 5 0 0 0 4.44 10.25L4.8 11.18L4.33 11.36L4 10.43A5 5 0 0 0 1.54 12.74L2.45 13.15L2.24 13.6L1.34 13.2A5 5 0 0 0 1 15A5 5 0 0 0 1.25 16.56L2.18 16.2L2.36 16.67L1.43 17A5 5 0 0 0 3.74 19.46L4.14 18.55L4.6 18.76L4.2 19.66A5 5 0 0 0 6 20A5 5 0 0 0 7.56 19.75L7.2 18.82L7.67 18.64L8 19.57A5 5 0 0 0 10.46 17.26L9.55 16.86L9.76 16.4L10.66 16.8A5 5 0 0 0 11 15A5 5 0 0 0 10.75 13.44L9.82 13.8L9.64 13.33L10.57 13A5 5 0 0 0 8.26 10.54L7.86 11.45L7.4 11.24L7.8 10.34A5 5 0 0 0 6 10M6 12A3 3 0 0 1 9 15A3 3 0 0 1 6 18A3 3 0 0 1 3 15A3 3 0 0 1 6 12M19.5 13A3.5 3.5 0 0 0 16 16.5A3.5 3.5 0 0 0 19.5 20A3.5 3.5 0 0 0 23 16.5A3.5 3.5 0 0 0 19.5 13M19.5 15A1.5 1.5 0 0 1 21 16.5A1.5 1.5 0 0 1 19.5 18A1.5 1.5 0 0 1 18 16.5A1.5 1.5 0 0 1 19.5 15Z"; -var mdiTrademark = "M9.8,8.44H6.87V16H4.89V8.44H2V7H9.8V8.44M13.5,7L15.96,13.5L18.41,7H21V16H19V13.5L19.22,9.24L16.63,16H15.28L12.7,9.25L12.9,13.5V16H10.93V7H13.5Z"; -var mdiTrafficCone = "M17 15L18 19H21V22H3V19H6L7 15H17M15 8L16 12H8L9 8H15M13 1L14 5H10L11 1H13Z"; -var mdiTrafficLight = "M12,9A2,2 0 0,1 10,7C10,5.89 10.9,5 12,5C13.11,5 14,5.89 14,7A2,2 0 0,1 12,9M12,14A2,2 0 0,1 10,12C10,10.89 10.9,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,19A2,2 0 0,1 10,17C10,15.89 10.9,15 12,15C13.11,15 14,15.89 14,17A2,2 0 0,1 12,19M20,10H17V8.86C18.72,8.41 20,6.86 20,5H17V4A1,1 0 0,0 16,3H8A1,1 0 0,0 7,4V5H4C4,6.86 5.28,8.41 7,8.86V10H4C4,11.86 5.28,13.41 7,13.86V15H4C4,16.86 5.28,18.41 7,18.86V20A1,1 0 0,0 8,21H16A1,1 0 0,0 17,20V18.86C18.72,18.41 20,16.86 20,15H17V13.86C18.72,13.41 20,11.86 20,10Z"; -var mdiTrain = "M12,2C8,2 4,2.5 4,6V15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H8.23L10.23,19H14L16,21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V6C20,2.5 16.42,2 12,2M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M11,10H6V6H11V10M13,10V6H18V10H13M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17Z"; -var mdiTrainCar = "M12,4H5A3,3 0 0,0 2,7V15A3,3 0 0,0 5,18L4,19V20H5L7,17.97L9,18V13H4V6H13V8H15V7A3,3 0 0,0 12,4M5,14A1,1 0 0,1 6,15A1,1 0 0,1 5,16A1,1 0 0,1 4,15A1,1 0 0,1 5,14M20.57,9.66C20.43,9.26 20.05,9 19.6,9H12.41C11.95,9 11.58,9.26 11.43,9.66L10,13.77V19.28C10,19.66 10.32,20 10.7,20H11.32C11.7,20 12,19.62 12,19.24V18H20V19.24C20,19.62 20.31,20 20.69,20H21.3C21.68,20 22,19.66 22,19.28V17.91L22,13.77L20.57,9.66M12.41,10H19.6L20.63,13H11.38L12.41,10M12,16A1,1 0 0,1 11,15A1,1 0 0,1 12,14A1,1 0 0,1 13,15A1,1 0 0,1 12,16M20,16A1,1 0 0,1 19,15A1,1 0 0,1 20,14A1,1 0 0,1 21,15A1,1 0 0,1 20,16Z"; -var mdiTrainCarPassenger = "M21 7H3C1.9 7 1 7.9 1 9V17H2C2 18.11 2.9 19 4 19S6 18.11 6 17H18C18 18.11 18.9 19 20 19S22 18.11 22 17H23V9C23 7.9 22.11 7 21 7M7 12H3V9H7V12M15 12H9V9H15V12M21 12H17V9H21V12Z"; -var mdiTrainCarPassengerDoor = "M21 7H3C1.9 7 1 7.9 1 9V17H2C2 18.11 2.9 19 4 19S6 18.11 6 17H18C18 18.11 18.9 19 20 19S22 18.11 22 17H23V9C23 7.9 22.11 7 21 7M7 12H3V9H7V12M11 16H9V9H11V16M15 16H13V9H15V16M21 12H17V9H21V12Z"; -var mdiTrainCarPassengerDoorOpen = "M21 7H3C1.9 7 1 7.9 1 9V17H2C2 18.11 2.9 19 4 19S6 18.11 6 17H18C18 18.11 18.9 19 20 19S22 18.11 22 17H23V9C23 7.9 22.11 7 21 7M8 12H3V9H8V12M14 16H10V9H14V16M21 12H16V9H21V12Z"; -var mdiTrainCarPassengerVariant = "M21 7H3C1.9 7 1 7.9 1 9V17H2C2 18.11 2.9 19 4 19S6 18.11 6 17H18C18 18.11 18.9 19 20 19S22 18.11 22 17H23V9C23 7.9 22.11 7 21 7M11 12H3V9H11V12M21 12H13V9H21V12Z"; -var mdiTrainVariant = "M18,10H6V5H18M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M4,15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V5C20,1.5 16.42,1 12,1C7.58,1 4,1.5 4,5V15.5Z"; -var mdiTram = "M19,16.94V8.5C19,5.71 16.39,5.1 13,5L13.75,3.5H17V2H7V3.5H11.75L11,5C7.86,5.11 5,5.73 5,8.5V16.94C5,18.39 6.19,19.6 7.59,19.91L6,21.5V22H8.23L10.23,20H14L16,22H18V21.5L16.5,20H16.42C18.11,20 19,18.63 19,16.94M12,18.5A1.5,1.5 0 0,1 10.5,17A1.5,1.5 0 0,1 12,15.5A1.5,1.5 0 0,1 13.5,17A1.5,1.5 0 0,1 12,18.5M17,14H7V9H17V14Z"; -var mdiTramSide = "M9 1L5 4L7.5 6H5C5 6 2 6 2 9V19H7C7 19 7 17 9 17H22V14H18V8H22V6H10.5L13 4L9 1M4 8H9V14H4V8M11 8H16V14H11V8M4 16H5V18H4V16M9 19V19.5C9 20.88 10.12 22 11.5 22C12.5 22 13.39 21.41 13.79 20.5H15.21C15.61 21.41 16.5 22 17.5 22C18.88 22 20 20.88 20 19.5V19H9Z"; -var mdiTranscribe = "M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M18,17V15H12.5L10.5,17H18M6,17H8.5L15.35,10.12C15.55,9.93 15.55,9.61 15.35,9.41L13.59,7.65C13.39,7.45 13.07,7.45 12.88,7.65L6,14.53V17Z"; -var mdiTranscribeClose = "M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M18,15V13H12.5L10.5,15H18M6,15H8.5L15.35,8.12C15.55,7.93 15.55,7.61 15.35,7.42L13.59,5.65C13.39,5.45 13.07,5.45 12.88,5.65L6,12.53V15Z"; -var mdiTransfer = "M8 4A2 2 0 0 0 6 6V10H8V6H16V9H13.5L17 12.5L20.5 9H18V6A2 2 0 0 0 16 4H8M3 12V14H11V12H3M3 15V17H11V15H3M13 15V17H21V15H13M3 18V20H11V18H3M13 18V20H21V18H13Z"; -var mdiTransferDown = "M16,3V5H8V3H16M16,7V9H8V7H16M16,11V13H8V11H16M5,15H19L12,22L5,15Z"; -var mdiTransferLeft = "M21,16H19V8H21V16M17,16H15V8H17V16M13,16H11V8H13V16M9,5V19L2,12L9,5Z"; -var mdiTransferRight = "M3,8H5V16H3V8M7,8H9V16H7V8M11,8H13V16H11V8M15,19.25V4.75L22.25,12L15,19.25Z"; -var mdiTransferUp = "M8,21V19H16V21H8M8,17V15H16V17H8M8,13V11H16V13H8M19,9H5L12,2L19,9Z"; -var mdiTransitConnection = "M15,12C15,10.7 14.16,9.6 13,9.18V6.82C14.16,6.4 15,5.3 15,4A3,3 0 0,0 12,1A3,3 0 0,0 9,4C9,5.3 9.84,6.4 11,6.82V9.19C9.84,9.6 9,10.7 9,12C9,13.3 9.84,14.4 11,14.82V17.18C9.84,17.6 9,18.7 9,20A3,3 0 0,0 12,23A3,3 0 0,0 15,20C15,18.7 14.16,17.6 13,17.18V14.82C14.16,14.4 15,13.3 15,12M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M12,21A1,1 0 0,1 11,20A1,1 0 0,1 12,19A1,1 0 0,1 13,20A1,1 0 0,1 12,21Z"; -var mdiTransitConnectionHorizontal = "M12 9C10.7 9 9.6 9.8 9.2 11H6.8C6.4 9.8 5.3 9 4 9C2.3 9 1 10.3 1 12S2.3 15 4 15C5.3 15 6.4 14.2 6.8 13H9.2C9.6 14.2 10.7 15 12 15S14.4 14.2 14.8 13H17.2C17.6 14.2 18.7 15 20 15C21.7 15 23 13.7 23 12S21.7 9 20 9C18.7 9 17.6 9.8 17.2 11H14.8C14.4 9.8 13.3 9 12 9M3 12C3 11.4 3.4 11 4 11S5 11.4 5 12 4.6 13 4 13 3 12.6 3 12M21 12C21 12.6 20.6 13 20 13S19 12.6 19 12 19.4 11 20 11 21 11.4 21 12Z"; -var mdiTransitConnectionVariant = "M18,11H14.82C14.4,9.84 13.3,9 12,9C10.7,9 9.6,9.84 9.18,11H6C5.67,11 4,10.9 4,9V8C4,6.17 5.54,6 6,6H16.18C16.6,7.16 17.7,8 19,8A3,3 0 0,0 22,5A3,3 0 0,0 19,2C17.7,2 16.6,2.84 16.18,4H6C4.39,4 2,5.06 2,8V9C2,11.94 4.39,13 6,13H9.18C9.6,14.16 10.7,15 12,15C13.3,15 14.4,14.16 14.82,13H18C18.33,13 20,13.1 20,15V16C20,17.83 18.46,18 18,18H7.82C7.4,16.84 6.3,16 5,16A3,3 0 0,0 2,19A3,3 0 0,0 5,22C6.3,22 7.4,21.16 7.82,20H18C19.61,20 22,18.93 22,16V15C22,12.07 19.61,11 18,11M19,4A1,1 0 0,1 20,5A1,1 0 0,1 19,6A1,1 0 0,1 18,5A1,1 0 0,1 19,4M5,20A1,1 0 0,1 4,19A1,1 0 0,1 5,18A1,1 0 0,1 6,19A1,1 0 0,1 5,20Z"; -var mdiTransitDetour = "M19 3A3 3 0 0 0 16.61 4.21A11.5 11.5 0 0 0 13.75 4L13.88 6A9.47 9.47 0 0 1 16 6.13A3 3 0 1 0 19 3M19 7A1 1 0 1 1 20 6A1 1 0 0 1 19 7M8.86 7.86L7.67 6.25A11.5 11.5 0 0 1 11.6 4.37L12.1 6.31A9.5 9.5 0 0 0 8.86 7.86M21 18A3 3 0 1 1 15.69 16.11A9.47 9.47 0 0 0 8.59 13.46C8.37 13.47 8.16 13.5 7.94 13.54A3 3 0 1 1 4.39 10.06A11.54 11.54 0 0 1 6.04 7.7L7.5 9.06A9.34 9.34 0 0 0 6.5 10.41A3.04 3.04 0 0 1 7.62 11.56C7.91 11.5 8.19 11.5 8.5 11.46A11.47 11.47 0 0 1 17.46 15.05A2.96 2.96 0 0 1 18 15A3 3 0 0 1 21 18Z"; -var mdiTransitSkip = "M21 12C21 8 18.5 4.7 15 3.5C14.7 2.1 13.5 1 12 1C10.3 1 9 2.3 9 4S10.3 7 12 7C13.1 7 14.1 6.4 14.6 5.5C17.2 6.5 19 9 19 12C19 14.9 17.2 17.5 14.6 18.5C14.1 17.6 13.1 17 12 17C10.3 17 9 18.3 9 20S10.3 23 12 23C13.5 23 14.7 21.9 15 20.5C18.5 19.3 21 15.9 21 12M12 5C11.4 5 11 4.6 11 4S11.4 3 12 3 13 3.4 13 4 12.6 5 12 5M12 21C11.4 21 11 20.6 11 20S11.4 19 12 19 13 19.4 13 20 12.6 21 12 21M12 9C13.7 9 15 10.3 15 12S13.7 15 12 15 9 13.7 9 12 10.3 9 12 9Z"; -var mdiTransitTransfer = "M16.5,15.5H22V17H16.5V18.75L14,16.25L16.5,13.75V15.5M19.5,19.75V18L22,20.5L19.5,23V21.25H14V19.75H19.5M9.5,5.5A2,2 0 0,1 7.5,3.5A2,2 0 0,1 9.5,1.5A2,2 0 0,1 11.5,3.5A2,2 0 0,1 9.5,5.5M5.75,8.9L4,9.65V13H2V8.3L7.25,6.15C7.5,6.05 7.75,6 8,6C8.7,6 9.35,6.35 9.7,6.95L10.65,8.55C11.55,10 13.15,11 15,11V13C12.8,13 10.85,12 9.55,10.4L8.95,13.4L11,15.45V23H9V17L6.85,15L5.1,23H3L5.75,8.9Z"; -var mdiTransition = "M15,2A7,7 0 0,1 22,9C22,11.71 20.46,14.05 18.22,15.22C17.55,16.5 16.5,17.55 15.22,18.22C14.05,20.46 11.71,22 9,22A7,7 0 0,1 2,15C2,12.29 3.54,9.95 5.78,8.78C6.45,7.5 7.5,6.45 8.78,5.78C9.95,3.54 12.29,2 15,2M12,19A7,7 0 0,1 5,12C4.37,12.84 4,13.87 4,15A5,5 0 0,0 9,20C10.13,20 11.16,19.63 12,19M15,16A7,7 0 0,1 8,9H8C7.37,9.84 7,10.87 7,12A5,5 0 0,0 12,17C13.13,17 14.16,16.63 15,16V16M15,4C13.87,4 12.84,4.37 12,5V5A7,7 0 0,1 19,12H19C19.63,11.16 20,10.13 20,9A5,5 0 0,0 15,4M10,9A5,5 0 0,0 15,14C15.6,14 16.17,13.9 16.7,13.7C16.9,13.17 17,12.6 17,12A5,5 0 0,0 12,7C11.4,7 10.83,7.1 10.3,7.3C10.1,7.83 10,8.4 10,9Z"; -var mdiTransitionMasked = "M15,2C16.94,2 18.59,2.7 19.95,4.05C21.3,5.41 22,7.06 22,9C22,10.56 21.5,11.96 20.58,13.2C19.64,14.43 18.44,15.27 16.97,15.7L17,15.38V15C17,12.81 16.23,10.93 14.65,9.35C13.07,7.77 11.19,7 9,7H8.63L8.3,7.03C8.73,5.56 9.57,4.36 10.8,3.42C12.04,2.5 13.44,2 15,2M9,8A7,7 0 0,1 16,15A7,7 0 0,1 9,22A7,7 0 0,1 2,15A7,7 0 0,1 9,8M9,10A5,5 0 0,0 4,15A5,5 0 0,0 9,20A5,5 0 0,0 14,15A5,5 0 0,0 9,10Z"; -var mdiTranslate = "M12.87,15.07L10.33,12.56L10.36,12.53C12.1,10.59 13.34,8.36 14.07,6H17V4H10V2H8V4H1V6H12.17C11.5,7.92 10.44,9.75 9,11.35C8.07,10.32 7.3,9.19 6.69,8H4.69C5.42,9.63 6.42,11.17 7.67,12.56L2.58,17.58L4,19L9,14L12.11,17.11L12.87,15.07M18.5,10H16.5L12,22H14L15.12,19H19.87L21,22H23L18.5,10M15.88,17L17.5,12.67L19.12,17H15.88Z"; -var mdiTranslateOff = "M12.17,5.81C11.87,6.69 11.47,7.55 11,8.39L12.35,9.74C13.11,8.5 13.71,7.18 14.13,5.81H17.16V3.75H9.94V1.69H7.87V3.75H6.37L8.43,5.81H12.17M15.53,12.91L17.03,14.41L17.67,12.69L19.08,16.47L22.39,19.77L18.7,9.94H16.64L15.53,12.91M1.31,1.31L0,2.62L1.13,3.75H0.65V5.81H3.19L5.26,7.88H4.46C5.21,9.56 6.24,11.15 7.53,12.58L2.28,17.76L3.75,19.22L8.91,14.07L12.11,17.27L12.8,15.43L14.1,16.72L12,22.31H14.06L15.22,19.22H16.6L21.38,24L22.69,22.69L1.31,1.31Z"; -var mdiTransmissionTower = "M8.28,5.45L6.5,4.55L7.76,2H16.23L17.5,4.55L15.72,5.44L15,4H9L8.28,5.45M18.62,8H14.09L13.3,5H10.7L9.91,8H5.38L4.1,10.55L5.89,11.44L6.62,10H17.38L18.1,11.45L19.89,10.56L18.62,8M17.77,22H15.7L15.46,21.1L12,15.9L8.53,21.1L8.3,22H6.23L9.12,11H11.19L10.83,12.35L12,14.1L13.16,12.35L12.81,11H14.88L17.77,22M11.4,15L10.5,13.65L9.32,18.13L11.4,15M14.68,18.12L13.5,13.64L12.6,15L14.68,18.12Z"; -var mdiTrashCan = "M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M9,8H11V17H9V8M13,8H15V17H13V8Z"; -var mdiTrashCanOutline = "M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z"; -var mdiTray = "M2 12H4V17H20V12H22V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17Z"; -var mdiTrayAlert = "M2 12H4V17H20V12H22V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17M13 12H11V14H13M13 4H11V10H13Z"; -var mdiTrayFull = "M18 5H6V7H18M6 9H18V11H6M2 12H4V17H20V12H22V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17M18 13H6V15H18Z"; -var mdiTrayMinus = "M16 10H8V8H16M2 17A2 2 0 0 0 4 19H20A2 2 0 0 0 22 17V12H20V17H4V12H2Z"; -var mdiTrayPlus = "M2 12H4V17H20V12H22V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17M11 5H13V8H16V10H13V13H11V10H8V8H11Z"; -var mdiTrayRemove = "M2 17A2 2 0 0 0 4 19H20A2 2 0 0 0 22 17V12H20V17H4V12H2M14.12 5.46L15.54 6.88L13.41 9L15.54 11.12L14.12 12.54L12 10.41L9.88 12.54L8.46 11.12L10.59 9L8.46 6.88L9.88 5.46L12 7.59Z"; -var mdiTreasureChest = "M5,4H19A3,3 0 0,1 22,7V11H15V10H9V11H2V7A3,3 0 0,1 5,4M11,11H13V13H11V11M2,12H9V13L11,15H13L15,13V12H22V20H2V12Z"; -var mdiTree = "M11,21V16.74C10.53,16.91 10.03,17 9.5,17C7,17 5,15 5,12.5C5,11.23 5.5,10.09 6.36,9.27C6.13,8.73 6,8.13 6,7.5C6,5 8,3 10.5,3C12.06,3 13.44,3.8 14.25,5C14.33,5 14.41,5 14.5,5A5.5,5.5 0 0,1 20,10.5A5.5,5.5 0 0,1 14.5,16C14,16 13.5,15.93 13,15.79V21H11Z"; -var mdiTreeOutline = "M10.5,3C8,3 6,5 6,7.5C6,8.11 6.13,8.71 6.37,9.27C5.5,10.12 5,11.28 5,12.5C5,15 7,17 9.5,17C10,17 10.5,16.89 11,16.72V21H13V15.77C13.5,15.91 14,16 14.5,16A5.5,5.5 0 0,0 20,10.5A5.5,5.5 0 0,0 14.5,5C14.41,5 14.33,5 14.24,5C13.41,3.76 12,3 10.5,3M10.5,5C11.82,5 12.91,6.03 13,7.35C13.46,7.12 14,7 14.5,7A3.5,3.5 0 0,1 18,10.5A3.5,3.5 0 0,1 14.5,14C13.54,14 12.63,13.61 11.96,12.91C11.76,14.12 10.72,15 9.5,15A2.5,2.5 0 0,1 7,12.5C7,11.12 7.8,10.54 9,9.79C8.2,8.76 8,8.16 8,7.5A2.5,2.5 0 0,1 10.5,5Z"; -var mdiTrello = "M19.5,2H4.5A2.5,2.5 0 0,0 2,4.5V19.5A2.5,2.5 0 0,0 4.5,22H19.5A2.5,2.5 0 0,0 22,19.5V4.5A2.5,2.5 0 0,0 19.5,2M10.7,17.2A1.2,1.2 0 0,1 9.5,18.4H5.8C5.14,18.4 4.6,17.86 4.6,17.2V5.8A1.2,1.2 0 0,1 5.8,4.6H9.5C10.16,4.6 10.7,5.14 10.7,5.8V17.2M19.4,12.2C19.4,12.86 18.86,13.4 18.2,13.4H14.5C13.84,13.4 13.3,12.86 13.3,12.2V5.8C13.3,5.14 13.84,4.6 14.5,4.6H18.2C18.86,4.6 19.4,5.14 19.4,5.8V12.2Z"; -var mdiTrendingDown = "M16,18L18.29,15.71L13.41,10.83L9.41,14.83L2,7.41L3.41,6L9.41,12L13.41,8L19.71,14.29L22,12V18H16Z"; -var mdiTrendingNeutral = "M22,12L18,8V11H3V13H18V16L22,12Z"; -var mdiTrendingUp = "M16,6L18.29,8.29L13.41,13.17L9.41,9.17L2,16.59L3.41,18L9.41,12L13.41,16L19.71,9.71L22,12V6H16Z"; -var mdiTriangle = "M1,21H23L12,2"; -var mdiTriangleOutline = "M12,2L1,21H23M12,6L19.53,19H4.47"; -var mdiTriangleWave = "M22 12L17 22L7.1 6.04L4.24 12H2L7 2L16.9 17.96L19.76 12H22Z"; -var mdiTriforce = "M1.5,21L12,3.5L22.5,21H1.5M12,21L17,12H7L12,21Z"; -var mdiTrophy = "M18 2C17.1 2 16 3 16 4H8C8 3 6.9 2 6 2H2V11C2 12 3 13 4 13H6.2C6.6 15 7.9 16.7 11 17V19.08C8 19.54 8 22 8 22H16C16 22 16 19.54 13 19.08V17C16.1 16.7 17.4 15 17.8 13H20C21 13 22 12 22 11V2H18M6 11H4V4H6V11M20 11H18V4H20V11Z"; -var mdiTrophyAward = "M15.2 10.7L16.6 16L12 12.2L7.4 16L8.8 10.8L4.6 7.3L10 7L12 2L14 7L19.4 7.3L15.2 10.7M14 19H13V16L12 15L11 16V19H10C8.9 19 8 19.9 8 21V22H16V21C16 19.9 15.11 19 14 19Z"; -var mdiTrophyBroken = "M6.2 13C6.6 14.8 7.6 16.3 10 16.8V19.34C8 20.12 8 22 8 22H13.2L10.2 15L14.2 10L10.7 4H8C8 3 6.9 2 6 2H2V11C2 12 3 13 4 13H6.2M6 11H4V4H6V11M17.8 13H20C21 13 22 12 22 11V2H18C17.1 2 16 3 16 4H13.9L16.7 10L12.2 15L13.2 22H16C16 22 16 20.12 14 19.34L14 16.85C16.39 16.35 17.5 14.7 17.8 13M20 11H18V4H20V11Z"; -var mdiTrophyOutline = "M18 2C17.1 2 16 3 16 4H8C8 3 6.9 2 6 2H2V11C2 12 3 13 4 13H6.2C6.6 15 7.9 16.7 11 17V19.08C8 19.54 8 22 8 22H16C16 22 16 19.54 13 19.08V17C16.1 16.7 17.4 15 17.8 13H20C21 13 22 12 22 11V2H18M6 11H4V4H6V11M16 11.5C16 13.43 15.42 15 12 15C8.59 15 8 13.43 8 11.5V6H16V11.5M20 11H18V4H20V11Z"; -var mdiTrophyVariant = "M17 4V2H7V4H2V11C2 12.1 2.9 13 4 13H7.1C7.5 14.96 9.04 16.5 11 16.9V19.08C8 19.54 8 22 8 22H16C16 22 16 19.54 13 19.08V16.9C14.96 16.5 16.5 14.96 16.9 13H20C21.1 13 22 12.1 22 11V4H17M4 11V6H7V11L4 11M20 11L17 11V6H20L20 11Z"; -var mdiTrophyVariantOutline = "M17 4V2H7V4H2V11C2 12.1 2.9 13 4 13H7.1C7.5 14.96 9.04 16.5 11 16.9V19.08C8 19.54 8 22 8 22H16C16 22 16 19.54 13 19.08V16.9C14.96 16.5 16.5 14.96 16.9 13H20C21.1 13 22 12.1 22 11V4H17M4 11V6H7V11L4 11M15 12C15 13.65 13.65 15 12 15S9 13.65 9 12V4H15V12M20 11L17 11V6H20L20 11Z"; -var mdiTruck = "M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5M19.5,9.5L21.46,12H17V9.5M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M20,8H17V4H3C1.89,4 1,4.89 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8Z"; -var mdiTruckCheck = "M3,4H17V8H20L23,12V17H21A3,3 0 0,1 18,20A3,3 0 0,1 15,17H9A3,3 0 0,1 6,20A3,3 0 0,1 3,17H1V6C1,4.89 1.9,4 3,4M17,9.5V12H21.47L19.5,9.5H17M6,15.5A1.5,1.5 0 0,0 4.5,17A1.5,1.5 0 0,0 6,18.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 6,15.5M18,15.5A1.5,1.5 0 0,0 16.5,17A1.5,1.5 0 0,0 18,18.5A1.5,1.5 0 0,0 19.5,17A1.5,1.5 0 0,0 18,15.5M8,14L14,8L12.59,6.58L8,11.17L5.91,9.08L4.5,10.5L8,14Z"; -var mdiTruckCheckOutline = "M18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5M19.5 9.5H17V12H21.46L19.5 9.5M6 18.5C6.83 18.5 7.5 17.83 7.5 17C7.5 16.17 6.83 15.5 6 15.5C5.17 15.5 4.5 16.17 4.5 17C4.5 17.83 5.17 18.5 6 18.5M20 8L23 12V17H21C21 18.66 19.66 20 18 20C16.34 20 15 18.66 15 17H9C9 18.66 7.66 20 6 20C4.34 20 3 18.66 3 17H1V6C1 4.89 1.89 4 3 4H17V8H20M3 6V15H3.76C4.31 14.39 5.11 14 6 14C6.89 14 7.69 14.39 8.24 15H15V6H3M5 10.5L6.5 9L8 10.5L11.5 7L13 8.5L8 13.5L5 10.5Z"; -var mdiTruckDelivery = "M3,4A2,2 0 0,0 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8H17V4M10,6L14,10L10,14V11H4V9H10M17,9.5H19.5L21.47,12H17M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z"; -var mdiTruckDeliveryOutline = "M18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5M19.5 9.5H17V12H21.46L19.5 9.5M6 18.5C6.83 18.5 7.5 17.83 7.5 17C7.5 16.17 6.83 15.5 6 15.5C5.17 15.5 4.5 16.17 4.5 17C4.5 17.83 5.17 18.5 6 18.5M20 8L23 12V17H21C21 18.66 19.66 20 18 20C16.34 20 15 18.66 15 17H9C9 18.66 7.66 20 6 20C4.34 20 3 18.66 3 17H1V6C1 4.89 1.89 4 3 4H17V8H20M3 6V15H3.76C4.31 14.39 5.11 14 6 14C6.89 14 7.69 14.39 8.24 15H15V6H3M10 7L13.5 10.5L10 14V11.5H5V9.5H10V7Z"; -var mdiTruckFast = "M3,13.5L2.25,12H7.5L6.9,10.5H2L1.25,9H9.05L8.45,7.5H1.11L0.25,6H4A2,2 0 0,1 6,4H18V8H21L24,12V17H22A3,3 0 0,1 19,20A3,3 0 0,1 16,17H12A3,3 0 0,1 9,20A3,3 0 0,1 6,17H4V13.5H3M19,18.5A1.5,1.5 0 0,0 20.5,17A1.5,1.5 0 0,0 19,15.5A1.5,1.5 0 0,0 17.5,17A1.5,1.5 0 0,0 19,18.5M20.5,9.5H18V12H22.46L20.5,9.5M9,18.5A1.5,1.5 0 0,0 10.5,17A1.5,1.5 0 0,0 9,15.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 9,18.5Z"; -var mdiTruckFastOutline = "M.75 7.5H10.5L11.25 9H1.5L.75 7.5M1.75 10.5H11.5L12.25 12H2.5L1.75 10.5M18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5M19.5 9.5H17V12H21.46L19.5 9.5M8 18.5C8.83 18.5 9.5 17.83 9.5 17C9.5 16.17 8.83 15.5 8 15.5C7.17 15.5 6.5 16.17 6.5 17C6.5 17.83 7.17 18.5 8 18.5M20 8L23 12V17H21C21 18.66 19.66 20 18 20C16.34 20 15 18.66 15 17H11C11 18.66 9.65 20 8 20C6.34 20 5 18.66 5 17H3V13.5 13.5H5V15H5.76C6.31 14.39 7.11 14 8 14C8.89 14 9.69 14.39 10.24 15H15V6H3V6C3 4.89 3.89 4 5 4H17V8H20Z"; -var mdiTruckOutline = "M18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5M19.5 9.5H17V12H21.46L19.5 9.5M6 18.5C6.83 18.5 7.5 17.83 7.5 17C7.5 16.17 6.83 15.5 6 15.5C5.17 15.5 4.5 16.17 4.5 17C4.5 17.83 5.17 18.5 6 18.5M20 8L23 12V17H21C21 18.66 19.66 20 18 20C16.34 20 15 18.66 15 17H9C9 18.66 7.66 20 6 20C4.34 20 3 18.66 3 17H1V6C1 4.89 1.89 4 3 4H17V8H20M3 6V15H3.76C4.31 14.39 5.11 14 6 14C6.89 14 7.69 14.39 8.24 15H15V6H3Z"; -var mdiTruckTrailer = "M22,15V17H10A3,3 0 0,1 7,20A3,3 0 0,1 4,17H2V6A2,2 0 0,1 4,4H17A2,2 0 0,1 19,6V15H22M7,16A1,1 0 0,0 6,17A1,1 0 0,0 7,18A1,1 0 0,0 8,17A1,1 0 0,0 7,16Z"; -var mdiTrumpet = "M22 6C21 11 15 11 15 11H4C3 11 2 10 2 10H1V14H2C2 14 3 13 4 13H4.3C4.1 13.3 4 13.6 4 14V16C4 17.1 4.9 18 6 18H7V19H9V18H10V19H12V18H13V19H15V18H16C17.1 18 18 17.1 18 16V14C18 13.9 18 13.7 17.9 13.6C19.6 14.2 21.4 15.4 22 18H23V6H22M6 16.5C5.7 16.5 5.5 16.3 5.5 16V14C5.5 13.7 5.7 13.5 6 13.5H7V16.5H6M9 16.5V13.5H10V16.5H9M12 16.5V13.5H13V16.5H12M16.5 16C16.5 16.3 16.3 16.5 16 16.5H15V13.5H16C16.3 13.5 16.5 13.7 16.5 14V16M9 10H7V9H9V10M12 10H10V9H12V10M15 10H13V9H15V10Z"; -var mdiTshirtCrew = "M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.07C5.31,13.46 4.68,13.46 4.29,13.07L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10.34,5 12,5C13.66,5 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.12V20A1,1 0 0,1 16,21"; -var mdiTshirtCrewOutline = "M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10.34,5 12,5C13.66,5 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15.8,5.63 15.43,5.94 15,6.2C14.16,6.7 13.13,7 12,7C10.3,7 8.79,6.32 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z"; -var mdiTshirtV = "M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.07C5.31,13.46 4.68,13.46 4.29,13.07L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9.29,4.8 10.4,6.37 12,7.25C13.6,6.37 14.71,4.8 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.12V20A1,1 0 0,1 16,21"; -var mdiTshirtVOutline = "M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10,6 12,7.25C14,6 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15,7 14,8.25 12,9.25C10,8.25 9,7 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z"; -var mdiTumbleDryer = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M10,4A1,1 0 0,0 9,5A1,1 0 0,0 10,6A1,1 0 0,0 11,5A1,1 0 0,0 10,4M12,8A6,6 0 0,0 6,14A6,6 0 0,0 12,20A6,6 0 0,0 18,14A6,6 0 0,0 12,8M8.11,10.5H10C9.76,11.88 10,12.67 10.58,13.29C11.68,14.36 12.16,15.71 11.89,17.5H10C10.24,16.12 10,15.33 9.42,14.71C8.32,13.64 7.85,12.29 8.11,10.5M12.11,10.5H14C13.76,11.88 14,12.67 14.58,13.29C15.68,14.36 16.16,15.71 15.89,17.5H14C14.24,16.12 14,15.33 13.42,14.71C12.32,13.64 11.85,12.29 12.11,10.5Z"; -var mdiTumbleDryerAlert = "M4 2H16C17.11 2 18 2.9 18 4V20C18 21.11 17.11 22 16 22H4C2.9 22 2 21.11 2 20V4C2 2.9 2.9 2 4 2M5 4C4.45 4 4 4.45 4 5S4.45 6 5 6 6 5.55 6 5 5.55 4 5 4M8 4C7.45 4 7 4.45 7 5S7.45 6 8 6 9 5.55 9 5 8.55 4 8 4M10 8C6.69 8 4 10.69 4 14S6.69 20 10 20 16 17.31 16 14 13.31 8 10 8M6.11 10.5H8C7.76 11.88 8 12.67 8.58 13.29C9.68 14.36 10.16 15.71 9.89 17.5H8C8.24 16.12 8 15.33 7.42 14.71C6.32 13.64 5.85 12.29 6.11 10.5M10.11 10.5H12C11.76 11.88 12 12.67 12.58 13.29C13.68 14.36 14.16 15.71 13.89 17.5H12C12.24 16.12 12 15.33 11.42 14.71C10.32 13.64 9.85 12.29 10.11 10.5M20 15H22V17H20V15M20 7H22V13H20V7Z"; -var mdiTumbleDryerOff = "M22.11 21.46L2.39 1.73L1.11 3L4 5.89V20C4 21.11 4.89 22 6 22H18C18.58 22 19.1 21.75 19.46 21.35L20.84 22.73L22.11 21.46M12 20C8.69 20 6 17.31 6 14C6 12.32 6.7 10.8 7.82 9.71L8.61 10.5H8.11C7.85 12.29 8.32 13.64 9.42 14.71C10 15.33 10.24 16.12 10 17.5H11.89C12.16 15.71 11.68 14.36 10.58 13.29C10.22 12.91 10 12.44 9.95 11.84L14.03 15.92C14.11 16.35 14.11 16.86 14 17.5H15.61L16.29 18.18C15.2 19.3 13.69 20 12 20M11.25 8.05C11.5 8 11.75 8 12 8C15.31 8 18 10.69 18 14C18 14.25 18 14.5 17.95 14.75L20 16.8V4C20 2.9 19.11 2 18 2H6C5.76 2 5.54 2.05 5.33 2.13L11.25 8.05M10 4C10.55 4 11 4.45 11 5S10.55 6 10 6 9 5.55 9 5 9.45 4 10 4Z"; -var mdiTune = "M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z"; -var mdiTuneVariant = "M8 13C6.14 13 4.59 14.28 4.14 16H2V18H4.14C4.59 19.72 6.14 21 8 21S11.41 19.72 11.86 18H22V16H11.86C11.41 14.28 9.86 13 8 13M8 19C6.9 19 6 18.1 6 17C6 15.9 6.9 15 8 15S10 15.9 10 17C10 18.1 9.1 19 8 19M19.86 6C19.41 4.28 17.86 3 16 3S12.59 4.28 12.14 6H2V8H12.14C12.59 9.72 14.14 11 16 11S19.41 9.72 19.86 8H22V6H19.86M16 9C14.9 9 14 8.1 14 7C14 5.9 14.9 5 16 5S18 5.9 18 7C18 8.1 17.1 9 16 9Z"; -var mdiTuneVertical = "M7 3H5V9H7V3M19 3H17V13H19V3M3 13H5V21H7V13H9V11H3V13M15 7H13V3H11V7H9V9H15V7M11 21H13V11H11V21M15 15V17H17V21H19V17H21V15H15Z"; -var mdiTuneVerticalVariant = "M8 12.14V2H6V12.14C4.28 12.59 3 14.14 3 16S4.28 19.41 6 19.86V22H8V19.86C9.72 19.41 11 17.86 11 16S9.72 12.59 8 12.14M7 14C8.1 14 9 14.9 9 16S8.1 18 7 18C5.9 18 5 17.1 5 16S5.9 14 7 14M18 2H16V4.14C14.28 4.59 13 6.14 13 8S14.28 11.41 16 11.86V22H18V11.86C19.72 11.41 21 9.86 21 8S19.72 4.59 18 4.14V2M17 6C18.1 6 19 6.9 19 8S18.1 10 17 10C15.9 10 15 9.1 15 8S15.9 6 17 6Z"; -var mdiTurkey = "M10.5 19.44C9.75 19.8 8.9 20 8 20C4.69 20 2 17.31 2 14V9C2 5.69 4.69 3 8 3L10.5 7.58C8.1 8.81 6.5 11 6.5 13.5C6.5 16 8.11 18.2 10.5 19.44M16 18.94V20H17C17.55 20 18 20.45 18 21S17.55 22 17 22H14C13.45 22 13 21.55 13 21S13.45 20 14 20V18.94C10.61 18.56 8 16.27 8 13.5C8 10.46 11.13 8 15 8C15.19 8 15.37 8 15.56 8C14.84 6.63 14 5.23 14 4C14 2.9 14.9 2 16 2C18.21 2 20 3.79 20 6H18C18 6 22 9 22 13.5C22 16.27 19.39 18.56 16 18.94M16 4C16 4.55 16.45 5 17 5S18 4.55 18 4 17.55 3 17 3 16 3.45 16 4M17 12C17 10.9 16.11 10 15 10C12.79 10 11 11.79 11 14H15C16.11 14 17 13.11 17 12Z"; -var mdiTurnstile = "M22,22H16V11L10,5V2H22V22M9.17,6.17C8.42,6.92 8,7.94 8,9H2V11H8.55C8.9,11.6 9.4,12.1 10,12.45V19H12V13C13.06,13 14.08,12.58 14.83,11.83L9.17,6.17Z"; -var mdiTurnstileOutline = "M13.41,10.41C13.04,10.79 12.53,11 12,11A2,2 0 0,1 10,9C10,8.47 10.21,7.96 10.59,7.59L9.17,6.17C8.42,6.92 8,7.94 8,9H2V11H8.55C8.9,11.6 9.4,12.1 10,12.45V19H12V13C13.06,13 14.08,12.58 14.83,11.83L13.41,10.41M10,2V5L16,11V22H22V2H10M20,20H18V10.17L12,4.17V4H20V20Z"; -var mdiTurtle = "M8.47,5.95C8.95,5.67 9.47,5.44 10,5.28V4C10,2.9 10.87,2 11.97,1.97C13.13,2 14,2.9 14,4V5.28C14.53,5.45 15.05,5.67 15.53,5.95L13.93,8.07H10.07L8.47,5.95M19,12C19,12.5 18.95,12.95 18.86,13.4L16.33,12.62L15.14,8.96L16.74,6.85C17.17,7.25 17.55,7.7 17.88,8.2C18.67,8.13 19.43,8.25 20.11,8.59C21.14,9.12 21.84,10.13 22,11.28L19,11.64C19,11.76 19,11.88 19,12M5,12C5,11.88 5,11.76 5,11.65L2,11.28C2.16,10.13 2.86,9.12 3.89,8.59C4.57,8.25 5.34,8.13 6.08,8.26C6.41,7.75 6.79,7.28 7.24,6.87L8.86,8.95L7.67,12.62L5.14,13.4C5.05,12.95 5,12.5 5,12M10.24,9.57H13.76L14.85,12.93L12,15L9.15,12.93L10.24,9.57M8.13,14.05L11.25,16.31V18.96C10.68,18.9 10.13,18.77 9.62,18.58L8.39,21.34C7.33,20.87 6.57,19.9 6.37,18.76C6.23,18 6.35,17.24 6.69,16.56C6.24,16.04 5.87,15.46 5.59,14.82L8.13,14.05M15.87,14.05L18.41,14.82C18.13,15.46 17.76,16.04 17.31,16.56C17.65,17.24 17.77,18 17.64,18.76C17.43,19.9 16.67,20.87 15.61,21.34L14.39,18.58C13.86,18.77 13.33,18.94 12.75,19V16.31L15.87,14.05Z"; -var mdiTwitch = "M11.64 5.93H13.07V10.21H11.64M15.57 5.93H17V10.21H15.57M7 2L3.43 5.57V18.43H7.71V22L11.29 18.43H14.14L20.57 12V2M19.14 11.29L16.29 14.14H13.43L10.93 16.64V14.14H7.71V3.43H19.14Z"; -var mdiTwitter = "M22.46,6C21.69,6.35 20.86,6.58 20,6.69C20.88,6.16 21.56,5.32 21.88,4.31C21.05,4.81 20.13,5.16 19.16,5.36C18.37,4.5 17.26,4 16,4C13.65,4 11.73,5.92 11.73,8.29C11.73,8.63 11.77,8.96 11.84,9.27C8.28,9.09 5.11,7.38 3,4.79C2.63,5.42 2.42,6.16 2.42,6.94C2.42,8.43 3.17,9.75 4.33,10.5C3.62,10.5 2.96,10.3 2.38,10C2.38,10 2.38,10 2.38,10.03C2.38,12.11 3.86,13.85 5.82,14.24C5.46,14.34 5.08,14.39 4.69,14.39C4.42,14.39 4.15,14.36 3.89,14.31C4.43,16 6,17.26 7.89,17.29C6.43,18.45 4.58,19.13 2.56,19.13C2.22,19.13 1.88,19.11 1.54,19.07C3.44,20.29 5.7,21 8.12,21C16,21 20.33,14.46 20.33,8.79C20.33,8.6 20.33,8.42 20.32,8.23C21.16,7.63 21.88,6.87 22.46,6Z"; -var mdiTwitterRetweet = "M6,5.75L10.25,10H7V16H13.5L15.5,18H7A2,2 0 0,1 5,16V10H1.75L6,5.75M18,18.25L13.75,14H17V8H10.5L8.5,6H17A2,2 0 0,1 19,8V14H22.25L18,18.25Z"; -var mdiTwoFactorAuthentication = "M2,7V9H6V11H4A2,2 0 0,0 2,13V17H8V15H4V13H6A2,2 0 0,0 8,11V9C8,7.89 7.1,7 6,7H2M9,7V17H11V13H14V11H11V9H15V7H9M18,7A2,2 0 0,0 16,9V17H18V14H20V17H22V9A2,2 0 0,0 20,7H18M18,9H20V12H18V9Z"; -var mdiTypewriter = "M20 13H16C16 14.1 15.1 15 14 15H10C8.9 15 8 14.1 8 13H4L2 18V20C2 21.1 2.9 22 4 22H20C21.1 22 22 21.1 22 20V18M6 20C5.11 20 4.66 18.92 5.29 18.29C5.92 17.66 7 18.11 7 19C7 19.55 6.55 20 6 20M10 20C9.11 20 8.66 18.92 9.29 18.29C9.92 17.66 11 18.11 11 19C11 19.55 10.55 20 10 20M14 20C13.11 20 12.66 18.92 13.29 18.29C13.92 17.66 15 18.11 15 19C15 19.55 14.55 20 14 20M18 20C17.11 20 16.66 18.92 17.29 18.29C17.92 17.66 19 18.11 19 19C19 19.55 18.55 20 18 20M18 10V3H6V10H3V12H21V10M8 5H16V6H8M8 7H14V8H8"; -var mdiUbisoft = "M11.41,2C5.21,2 2.53,7.53 2.53,7.53L3.32,8.09C3.32,8.09 2.33,10 2.35,12.4C2.35,17.34 6.29,22 12.07,22C17.33,22 21.67,17.71 21.67,12.41C21.67,5.5 16.31,2 11.41,2M11.47,3.69C16.31,3.69 20.07,7.6 20.07,12.14C20.07,16.95 16.45,20.3 12.23,20.3C9.13,20.3 6.33,17.94 6.33,14.7C6.33,12.82 7.32,11.5 8.44,10.82L8.6,11C8.3,11.24 7.43,12.64 7.43,14C7.43,16.56 9.43,18.33 11.95,18.33C15.16,18.33 17.3,15.59 17.3,12.41C17.3,8.71 14.03,5.57 10.1,5.57C7.93,5.57 6.09,6.5 5.03,7.33L4.86,7.18C6.25,5.04 8.65,3.69 11.47,3.69M10,7.23C12.53,7.23 14.97,8.89 15.59,11.25L15.36,11.33C14.27,9.88 12.47,8.68 10.35,8.68C6.44,8.68 4.39,12.23 4.69,15.19L4.46,15.28C4.46,15.28 4.03,14.33 4.03,13.2C4.03,9.93 6.71,7.23 10,7.23M11.68,11.33C12.86,11.33 13.81,12.3 13.81,13.44C13.81,14.38 13.21,14.94 13.21,14.94L13.92,15.45C13.92,15.45 13.21,16.57 11.76,16.57C10.37,16.57 9.13,15.44 9.13,13.93C9.13,12.38 10.47,11.33 11.68,11.33Z"; -var mdiUbuntu = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14.34,7.74C14.92,8.07 15.65,7.87 16,7.3C16.31,6.73 16.12,6 15.54,5.66C14.97,5.33 14.23,5.5 13.9,6.1C13.57,6.67 13.77,7.41 14.34,7.74M11.88,15.5C11.35,15.5 10.85,15.39 10.41,15.18L9.57,16.68C10.27,17 11.05,17.22 11.88,17.22C12.37,17.22 12.83,17.15 13.28,17.03C13.36,16.54 13.64,16.1 14.1,15.84C14.56,15.57 15.08,15.55 15.54,15.72C16.43,14.85 17,13.66 17.09,12.33L15.38,12.31C15.22,14.1 13.72,15.5 11.88,15.5M11.88,8.5C13.72,8.5 15.22,9.89 15.38,11.69L17.09,11.66C17,10.34 16.43,9.15 15.54,8.28C15.08,8.45 14.55,8.42 14.1,8.16C13.64,7.9 13.36,7.45 13.28,6.97C12.83,6.85 12.37,6.78 11.88,6.78C11.05,6.78 10.27,6.97 9.57,7.32L10.41,8.82C10.85,8.61 11.35,8.5 11.88,8.5M8.37,12C8.37,10.81 8.96,9.76 9.86,9.13L9,7.65C7.94,8.36 7.15,9.43 6.83,10.69C7.21,11 7.45,11.47 7.45,12C7.45,12.53 7.21,13 6.83,13.31C7.15,14.56 7.94,15.64 9,16.34L9.86,14.87C8.96,14.24 8.37,13.19 8.37,12M14.34,16.26C13.77,16.59 13.57,17.32 13.9,17.9C14.23,18.47 14.97,18.67 15.54,18.34C16.12,18 16.31,17.27 16,16.7C15.65,16.12 14.92,15.93 14.34,16.26M5.76,10.8C5.1,10.8 4.56,11.34 4.56,12C4.56,12.66 5.1,13.2 5.76,13.2C6.43,13.2 6.96,12.66 6.96,12C6.96,11.34 6.43,10.8 5.76,10.8Z"; -var mdiUfo = "M15.94 10.28C15.66 7.87 14 6 12 6S8.34 7.87 8.06 10.28C4.5 10.82 2 12.06 2 13.5C2 15.43 6.5 17 12 17S22 15.43 22 13.5C22 12.06 19.5 10.82 15.94 10.28Z"; -var mdiUfoOutline = "M17 10.54C16.78 7.44 14.63 5 12 5S7.22 7.44 7 10.54C4 11.23 2 12.5 2 14C2 16.21 6.5 18 12 18S22 16.21 22 14C22 12.5 20 11.23 17 10.54M14.93 11.84C13.03 12.05 10.97 12.05 9.07 11.84C9.03 11.56 9 11.28 9 11C9 8.8 10.35 7 12 7S15 8.8 15 11C15 11.28 15 11.56 14.93 11.84Z"; -var mdiUltraHighDefinition = "M9,7H11V11H13V7H15V17H13V13H11V17H9V7M17,7H20A3,3 0 0,1 23,10V14A3,3 0 0,1 20,17H17V7M20,15A1,1 0 0,0 21,14V10A1,1 0 0,0 20,9H19V15H20M7,14A3,3 0 0,1 4,17A3,3 0 0,1 1,14V7H3V14A1,1 0 0,0 4,15A1,1 0 0,0 5,14V7H7V14Z"; -var mdiUmbraco = "M8.6,8.6L7.17,8.38C6.5,11.67 6.46,14.24 7.61,15.5C8.6,16.61 11.89,16.61 11.89,16.61C11.89,16.61 15.29,16.61 16.28,15.5C17.43,14.24 17.38,11.67 16.72,8.38L15.29,8.6C15.29,8.6 16.54,13.88 14.69,14.69C13.81,15.07 11.89,15.07 11.89,15.07C11.89,15.07 10.08,15.07 9.2,14.69C7.35,13.88 8.6,8.6 8.6,8.6M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3Z"; -var mdiUmbrella = "M12,2A9,9 0 0,1 21,11H13V19A3,3 0 0,1 10,22A3,3 0 0,1 7,19V18H9V19A1,1 0 0,0 10,20A1,1 0 0,0 11,19V11H3A9,9 0 0,1 12,2Z"; -var mdiUmbrellaClosed = "M12 2C11.6 2 11.3 2.2 11.1 2.6L6.5 15H11V19C11 19.6 10.6 20 10 20C9.4 20 9 19.6 9 19V18H7V19C7 20.7 8.3 22 10 22S13 20.7 13 19V15H17.5L12.9 2.6C12.7 2.2 12.4 2 12 2Z"; -var mdiUmbrellaClosedOutline = "M12 2C12.4 2 12.8 2.2 12.9 2.6L17.5 15H13V19C13 20.7 11.7 22 10 22S7 20.7 7 19V18H9V19C9 19.6 9.4 20 10 20C10.6 20 11 19.6 11 19V15H6.5L11.1 2.6C11.2 2.2 11.6 2 12 2M12 5.9L9.4 13H14.7L12 5.9Z"; -var mdiUmbrellaClosedVariant = "M15 7L13 6V3.5C13 3.2 13.2 3 13.5 3S14 3.2 14 3.5V4H16V3.5C16 2.1 14.9 1 13.5 1S11 2.1 11 3.5V6L9 7L6 6L11.1 21.3C11.4 22.2 12.7 22.2 13 21.3C14.6 16.2 18 6 18 6L15 7M11 15L9 8.9L9.7 9.1L11 8.1V15M13 8.1L14.3 9.1L15 8.9L13 15V8.1Z"; -var mdiUmbrellaOutline = "M12,4C8.9,4 6.18,6.03 5.3,9H18.7C17.82,6.04 15.09,4 12,4M12,2A9,9 0 0,1 21,11H13V19A3,3 0 0,1 10,22A3,3 0 0,1 7,19V18H9V19A1,1 0 0,0 10,20A1,1 0 0,0 11,19V11H3A9,9 0 0,1 12,2Z"; -var mdiUndo = "M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"; -var mdiUndoVariant = "M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z"; -var mdiUnfoldLessHorizontal = "M16.59,5.41L15.17,4L12,7.17L8.83,4L7.41,5.41L12,10M7.41,18.59L8.83,20L12,16.83L15.17,20L16.58,18.59L12,14L7.41,18.59Z"; -var mdiUnfoldLessVertical = "M5.41,7.41L10,12L5.41,16.59L4,15.17L7.17,12L4,8.83L5.41,7.41M18.59,16.59L14,12L18.59,7.42L20,8.83L16.83,12L20,15.17L18.59,16.59Z"; -var mdiUnfoldMoreHorizontal = "M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z"; -var mdiUnfoldMoreVertical = "M18.17,12L15,8.83L16.41,7.41L21,12L16.41,16.58L15,15.17L18.17,12M5.83,12L9,15.17L7.59,16.59L3,12L7.59,7.42L9,8.83L5.83,12Z"; -var mdiUngroup = "M2,2H6V3H13V2H17V6H16V9H18V8H22V12H21V18H22V22H18V21H12V22H8V18H9V16H6V17H2V13H3V6H2V2M18,12V11H16V13H17V17H13V16H11V18H12V19H18V18H19V12H18M13,6V5H6V6H5V13H6V14H9V12H8V8H12V9H14V6H13M12,12H11V14H13V13H14V11H12V12Z"; -var mdiUnicode = "M22 6A1.46 1.46 0 0 1 20.54 7.44A1.46 1.46 0 0 1 19.09 6A1.46 1.46 0 0 1 20.54 4.5A1.46 1.46 0 0 1 22 6M21.56 8.86H19.53C19.4 8.85 19.34 8.91 19.34 9V12.59C19.34 13.08 19.34 13.5 19.35 13.86L19.37 14.76C19.38 15 19.39 15.21 19.39 15.39C19.4 15.56 19.4 15.72 19.4 15.86H19.38C19.26 15.6 19.07 15.22 18.82 14.74C18.58 14.27 18.29 13.72 17.97 13.11C17.64 12.5 17.29 11.84 16.92 11.15C16.55 10.47 16.18 9.78 15.81 9.11C15.45 8.43 15.09 7.78 14.75 7.16C14.4 6.54 14.1 6 13.85 5.54C13.82 5.5 13.79 5.44 13.77 5.42C13.74 5.4 13.68 5.39 13.6 5.39H10.62C10.5 5.39 10.47 5.44 10.47 5.54H10.5C10.47 5.56 10.47 5.57 10.47 5.58V13.84C10.47 14.5 10.4 15 10.25 15.45C10.1 15.88 9.9 16.23 9.64 16.5C9.38 16.75 9.07 16.93 8.72 17.05C8.36 17.16 8 17.22 7.56 17.22C6.54 17.22 5.79 16.91 5.3 16.31C4.8 15.7 4.56 14.89 4.56 13.88V5.56C4.56 5.45 4.5 5.39 4.39 5.39H2.17C2.06 5.39 2 5.45 2 5.58V14.07C2 15 2.13 15.78 2.38 16.46C2.63 17.13 3 17.69 3.5 18.14C3.96 18.58 4.53 18.92 5.21 19.14C5.89 19.36 6.64 19.5 7.47 19.5C8.24 19.5 8.97 19.38 9.65 19.17C10.34 18.97 10.93 18.64 11.42 18.2C11.91 17.75 12.3 17.18 12.59 16.5C12.88 15.79 13.03 14.95 13.03 13.96V8.62C13.14 8.86 13.28 9.15 13.44 9.47C13.73 10.05 14.05 10.68 14.42 11.38C14.79 12.08 15.17 12.8 15.58 13.56C16 14.32 16.39 15.06 16.77 15.76C17.16 16.46 17.5 17.11 17.83 17.7C18.15 18.29 18.4 18.76 18.58 19.12C18.63 19.22 18.73 19.27 18.85 19.27H21.54C21.68 19.27 21.75 19.2 21.75 19.08V9.05C21.75 8.92 21.68 8.85 21.56 8.85Z"; -var mdiUnicorn = "M22 5L21.11 6.34C21.65 6.7 22 7.31 22 8V11.5L20.5 12L18.96 9.54C18.83 9.33 18.5 9.42 18.5 9.67V13.25C18.5 14.23 18.11 15.11 17.5 15.78V22H15V17C14.92 17 14.84 17 14.75 17C14.54 17 14.33 16.97 14.13 16.94L9.45 16.16L8.57 18.12L9.54 22H6.96L6.04 18.3C5.97 18.03 6 17.74 6.11 17.5L7 15.5C6.12 14.92 5.53 13.94 5.5 12.81C5.46 12.96 5.44 13.18 5.47 13.5C5.5 13.94 5.61 14.59 5.54 15.31C5.5 16.03 5.18 16.77 4.76 17.26C4.32 17.75 3.85 18.09 3.35 18.35L2.65 17.65C2.84 17.18 3.03 16.76 3.07 16.37C3.13 16 3.06 15.7 2.95 15.43L2.42 14.3C2.21 13.79 1.95 13.05 2 12.18C2.03 11.33 2.5 10.22 3.39 9.61C4.29 9 5.26 8.91 6.05 9.08C6.55 9.18 7.06 9.42 7.5 9.76C7.87 9.59 8.3 9.5 8.75 9.5H14.5V9C14.5 6.79 16.29 5 18.5 5L22 2L21 5H22Z"; -var mdiUnicornVariant = "M20 12V19L17 20L14 15.33C13.71 14.89 13 15.14 13.08 15.67L14 23L4 18L4.96 12.75C5.56 9.42 8.46 7 11.84 7H13L19 1L17 7H20L18.42 9.37C19.36 9.88 20 10.86 20 12Z"; -var mdiUnicycle = "M13 9.09V5H14C14.55 5 15 4.55 15 4S14.55 3 14 3H10C9.45 3 9 3.45 9 4S9.45 5 10 5H11V9.09C8.16 9.57 6 12.03 6 15C6 18.31 8.69 21 12 21S18 18.31 18 15C18 12.03 15.84 9.57 13 9.09M12 19C9.79 19 8 17.21 8 15C8 13.14 9.28 11.59 11 11.14V16H13V11.14C14.72 11.59 16 13.14 16 15C16 17.21 14.21 19 12 19Z"; -var mdiUnity = "M10.11,17H7.5L2.59,12L7.5,7H10.11L11.42,4.74L18.21,3L20.08,9.74L18.77,12L20.08,14.26L18.21,21L11.42,19.26L10.11,17M10.25,16.75L15.38,18.13L12.42,13H6.5L10.25,16.75M17.12,17.13L18.5,12L17.12,6.87L14.15,12L17.12,17.13M10.25,7.25L6.5,11H12.42L15.38,5.87L10.25,7.25Z"; -var mdiUnreal = "M2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12M5.24,18.76C3.43,16.95 2.44,14.55 2.44,12C2.44,9.45 3.43,7.05 5.24,5.24C7.05,3.43 9.45,2.44 12,2.44C14.55,2.44 16.95,3.43 18.76,5.24C20.57,7.05 21.56,9.45 21.56,12C21.56,14.55 20.57,16.95 18.76,18.76C16.95,20.57 14.55,21.56 12,21.56C9.45,21.56 7.05,20.57 5.24,18.76M6.35,9.5C4.34,11.79 4.73,13.68 4.73,13.68C4.73,13.68 5.28,12.38 6.61,11C7.25,10.37 7.72,10.15 8.04,10.15C8.4,10.15 8.57,10.41 8.57,10.65V15.29C8.57,15.75 8.27,15.85 8,15.84C7.77,15.84 7.55,15.76 7.55,15.76C8.92,17.73 12.19,18 12.19,18L13.63,16.5H13.67L15,17.63C17.39,16.21 18.55,13.58 18.55,13.58C17.5,14.7 16.79,14.97 16.39,14.96C16.03,14.96 15.88,14.75 15.88,14.75C15.87,14.65 15.82,8.9 15.89,8.9C16.31,8.13 17.63,6.56 17.63,6.56C15.16,7.05 13.81,8.66 13.81,8.66C13.41,8.35 12.59,8.4 12.59,8.4C12.97,8.61 13.35,9.21 13.35,9.72V14.65C13.35,14.65 12.5,15.38 11.88,15.38C11.5,15.38 11.27,15.17 11.14,15C11.05,14.88 11,14.79 11,14.79V8.69C10.93,8.75 10.82,8.8 10.71,8.8C10.57,8.79 10.43,8.73 10.34,8.53C10.26,8.38 10.22,8.15 10.22,7.83C10.22,6.7 11.5,5.96 11.5,5.96C9.87,6.39 8.36,7.22 6.35,9.5"; -var mdiUntappd = "M14.41,4C14.41,4 14.94,4.39 14.97,4.71C14.97,4.81 14.73,4.85 14.68,4.93C14.62,5 14.7,5.15 14.65,5.21C14.59,5.26 14.5,5.26 14.41,5.41C14.33,5.56 12.07,10.09 11.73,10.63C11.59,11.03 11.47,12.46 11.37,12.66C11.26,12.85 6.34,19.84 6.16,20.05C5.67,20.63 4.31,20.3 3.28,19.56C2.3,18.86 1.74,17.7 2.11,17.16C2.27,16.93 7.15,9.92 7.29,9.75C7.44,9.58 8.75,9 9.07,8.71C9.47,8.22 12.96,4.54 13.07,4.42C13.18,4.3 13.15,4.2 13.18,4.13C13.22,4.06 13.38,4.08 13.43,4C13.5,3.93 13.39,3.71 13.5,3.68C13.59,3.64 13.96,3.67 14.41,4M10.85,4.44L11.74,5.37L10.26,6.94L9.46,5.37C9.38,5.22 9.28,5.22 9.22,5.17C9.17,5.11 9.24,4.97 9.19,4.89C9.13,4.81 8.9,4.83 8.9,4.73C8.9,4.62 9.05,4.28 9.5,3.96C9.5,3.96 10.06,3.6 10.37,3.68C10.47,3.71 10.43,3.95 10.5,4C10.54,4.1 10.7,4.08 10.73,4.15C10.77,4.21 10.73,4.32 10.85,4.44M21.92,17.15C22.29,17.81 21.53,19 20.5,19.7C19.5,20.39 18.21,20.54 17.83,20C17.66,19.78 12.67,12.82 12.56,12.62C12.45,12.43 12.32,11 12.18,10.59L12.15,10.55C12.45,10 13.07,8.77 13.73,7.47C14.3,8.06 14.75,8.56 14.88,8.72C15.21,9 16.53,9.58 16.68,9.75C16.82,9.92 21.78,16.91 21.92,17.15Z"; -var mdiUpdate = "M21,10.12H14.22L16.96,7.3C14.23,4.6 9.81,4.5 7.08,7.2C4.35,9.91 4.35,14.28 7.08,17C9.81,19.7 14.23,19.7 16.96,17C18.32,15.65 19,14.08 19,12.1H21C21,14.08 20.12,16.65 18.36,18.39C14.85,21.87 9.15,21.87 5.64,18.39C2.14,14.92 2.11,9.28 5.62,5.81C9.13,2.34 14.76,2.34 18.27,5.81L21,3V10.12M12.5,8V12.25L16,14.33L15.28,15.54L11,13V8H12.5Z"; -var mdiUpload = "M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z"; -var mdiUploadLock = "M22 22H17C16.5 22 16 21.5 16 21V17C16 16.5 16.5 16 17 16V14.5C17 13.1 18.1 12 19.5 12C20.9 12 22 13.1 22 14.5V16C22.5 16 23 16.5 23 17V21C23 21.5 22.5 22 22 22M14 20H5V18H14V20M21 16V14.5C21 13.7 20.3 13 19.5 13C18.7 13 18 13.7 18 14.5V16H21M15 16H9V10H5L12 3L19 10H15V16Z"; -var mdiUploadLockOutline = "M22 22H17C16.5 22 16 21.5 16 21V17C16 16.5 16.5 16 17 16V14.5C17 13.1 18.1 12 19.5 12C20.9 12 22 13.1 22 14.5V16C22.5 16 23 16.5 23 17V21C23 21.5 22.5 22 22 22M5 18H14V20H5V18M21 16V14.5C21 13.7 20.3 13 19.5 13C18.7 13 18 13.7 18 14.5V16H21M9 16V10H5L12 3L19 10H15V16H9M9.83 8H11V14H13V8H14.17L12 5.83L9.83 8Z"; -var mdiUploadMultiple = "M9,14V8H5L12,1L19,8H15V14H9M5,18V16H19V18H5M19,20H5V22H19V20Z"; -var mdiUploadNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17M12,5.5L7.5,10H11V14H13V10H16.5L12,5.5Z"; -var mdiUploadNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M12,6L8,10H11V14H13V10H16L12,6Z"; -var mdiUploadOff = "M22.11 21.46L2.39 1.73L1.11 3L6.56 8.45L5 10H8.11L9 10.89V16H14.11L16.11 18H5V20H18.11L20.84 22.73L22.11 21.46M15 10H19L12 3L9.1 5.9L15 11.8V10Z"; -var mdiUploadOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L6.56 8.45L5 10H8.11L9 10.89V16H14.11L16.11 18H5V20H18.11L20.84 22.73L22.11 21.46M11 14V12.89L12.11 14H11M12 5.8L14.2 8H13V9.8L15 11.8V10H19L12 3L9.1 5.9L10.5 7.3L12 5.8Z"; -var mdiUploadOutline = "M9,10V16H15V10H19L12,3L5,10H9M12,5.8L14.2,8H13V14H11V8H9.8L12,5.8M19,18H5V20H19V18Z"; -var mdiUsb = "M15,7V11H16V13H13V5H15L12,1L9,5H11V13H8V10.93C8.7,10.56 9.2,9.85 9.2,9C9.2,7.78 8.21,6.8 7,6.8C5.78,6.8 4.8,7.78 4.8,9C4.8,9.85 5.3,10.56 6,10.93V13A2,2 0 0,0 8,15H11V18.05C10.29,18.41 9.8,19.15 9.8,20A2.2,2.2 0 0,0 12,22.2A2.2,2.2 0 0,0 14.2,20C14.2,19.15 13.71,18.41 13,18.05V15H16A2,2 0 0,0 18,13V11H19V7H15Z"; -var mdiUsbFlashDrive = "M8 15C8.55 15 9 15.45 9 16C9 16.55 8.55 17 8 17C7.45 17 7 16.55 7 16C7 15.45 7.45 15 8 15M15.07 4.69L16.5 6.1L15.07 7.5L13.66 6.1L15.07 4.69M17.9 7.5L19.31 8.93L17.9 10.34L16.5 8.93L17.9 7.5M8 13C6.34 13 5 14.34 5 16C5 17.66 6.34 19 8 19C9.66 19 11 17.66 11 16C11 14.34 9.66 13 8 13M9.77 4.33L10.5 5.08L14.29 1.29C14.47 1.11 14.72 1 15 1C15.28 1 15.53 1.11 15.71 1.29L22.78 8.36L22.78 8.37C22.92 8.54 23 8.76 23 9C23 9.3 22.87 9.57 22.66 9.76L22.66 9.76L18.93 13.5L19.67 14.23L12.95 20.95C11.68 22.22 9.93 23 8 23C4.13 23 1 19.87 1 16C1 14.07 1.78 12.32 3.05 11.05L9.77 4.33M20.59 9L15 3.41L11.93 6.5L17.5 12.08L20.59 9Z"; -var mdiUsbFlashDriveOutline = "M8 13C9.66 13 11 14.34 11 16C11 17.66 9.66 19 8 19C6.34 19 5 17.66 5 16C5 14.34 6.34 13 8 13M8 15C7.45 15 7 15.45 7 16C7 16.55 7.45 17 8 17C8.55 17 9 16.55 9 16C9 15.45 8.55 15 8 15M9.77 4.33L10.5 5.08L14.29 1.29C14.47 1.11 14.72 1 15 1C15.28 1 15.53 1.11 15.71 1.29L22.78 8.36L22.78 8.37C22.92 8.54 23 8.76 23 9C23 9.3 22.87 9.57 22.66 9.76L22.66 9.76L18.93 13.5L19.67 14.23L12.95 20.95C11.68 22.22 9.93 23 8 23C4.13 23 1 19.87 1 16C1 14.07 1.78 12.32 3.05 11.05L9.77 4.33M11.54 19.54L16.84 14.23L9.77 7.16L4.46 12.46C3.56 13.37 3 14.62 3 16C3 18.76 5.24 21 8 21C9.38 21 10.63 20.44 11.54 19.54M15.07 4.69L16.5 6.1L15.07 7.5L13.66 6.1L15.07 4.69M17.9 7.5L19.31 8.93L17.9 10.34L16.5 8.93L17.9 7.5M20.59 9L15 3.41L11.93 6.5L17.5 12.08L20.59 9Z"; -var mdiUsbPort = "M8 2C6.9 2 6 2.9 6 4V12H5V16L9 20V22H15V20L19 16V12H18V4C18 2.9 17.11 2 16 2M8 4H16V12H8M9 7V9H11V7M13 7V9H15V7Z"; -var mdiValve = "M4 22H2V2H4M22 2H20V22H22M17.24 5.34L13.24 9.34A3 3 0 0 0 9.24 13.34L5.24 17.34L6.66 18.76L10.66 14.76A3 3 0 0 0 14.66 10.76L18.66 6.76Z"; -var mdiValveClosed = "M22 2V22H20V13H14.82A3 3 0 0 1 9.18 13H4V22H2V2H4V11H9.18A3 3 0 0 1 14.82 11H20V2Z"; -var mdiValveOpen = "M4 22H2V2H4M22 2H20V22H22M11 4V9.18A3 3 0 0 0 11 14.82V20H13V14.82A3 3 0 0 0 13 9.18V4Z"; -var mdiVanPassenger = "M3,7C1.89,7 1,7.89 1,9V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V13C23,11.89 22.11,11 21,11L18,7H3M3,8.5H7V11H3V8.5M9,8.5H13V11H9V8.5M15,8.5H17.5L19.46,11H15V8.5M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z"; -var mdiVanUtility = "M3,7C1.89,7 1,7.89 1,9V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V13C23,11.89 22.11,11 21,11L18,7H3M15,8.5H17.5L19.46,11H15V8.5M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z"; -var mdiVanish = "M16,13V11H21V13H16M14.83,7.76L17.66,4.93L19.07,6.34L16.24,9.17L14.83,7.76M11,16H13V21H11V16M11,3H13V8H11V3M4.93,17.66L7.76,14.83L9.17,16.24L6.34,19.07L4.93,17.66M4.93,6.34L6.34,4.93L9.17,7.76L7.76,9.17L4.93,6.34M8,13H3V11H8V13M19.07,17.66L17.66,19.07L14.83,16.24L16.24,14.83L19.07,17.66Z"; -var mdiVanishQuarter = "M11 3H13V8H11V3M4.9 6.3L6.3 4.9L9.1 7.7L7.8 9.2L4.9 6.3M8 13H3V11H8V13"; -var mdiVanityLight = "M22 20H16C16 18.34 17.34 13 19 13S22 18.34 22 20M12 13C10.34 13 9 18.34 9 20H15C15 18.34 13.66 13 12 13M5 13C3.34 13 2 18.34 2 20H8C8 18.34 6.66 13 5 13M14.82 6C14.26 4.44 12.53 3.64 11 4.2C10.14 4.5 9.5 5.17 9.18 6H2V8H4V12H6V8H9.18C9.5 8.85 10.15 9.5 11 9.82V12H13V9.82C13.85 9.5 14.5 8.85 14.82 8H18V12H20V8H22V6H14.82Z"; -var mdiVariable = "M20.41,3C21.8,5.71 22.35,8.84 22,12C21.8,15.16 20.7,18.29 18.83,21L17.3,20C18.91,17.57 19.85,14.8 20,12C20.34,9.2 19.89,6.43 18.7,4L20.41,3M5.17,3L6.7,4C5.09,6.43 4.15,9.2 4,12C3.66,14.8 4.12,17.57 5.3,20L3.61,21C2.21,18.29 1.65,15.17 2,12C2.2,8.84 3.3,5.71 5.17,3M12.08,10.68L14.4,7.45H16.93L13.15,12.45L15.35,17.37H13.09L11.71,14L9.28,17.33H6.76L10.66,12.21L8.53,7.45H10.8L12.08,10.68Z"; -var mdiVariableBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7.4 18C5.9 16.5 5 14.3 5 12S5.9 7.5 7.4 6L9 6.7C7.7 7.9 7 9.9 7 12S7.7 16.1 9 17.3L7.4 18M12.7 15L11.9 13L10.5 15H9L11.3 11.9L10 9H11.3L12.1 11L13.5 9H15L12.8 12L14.1 15H12.7M16.6 18L15 17.3C16.3 16 17 14.1 17 12S16.3 7.9 15 6.7L16.6 6C18.1 7.5 19 9.7 19 12S18.1 16.5 16.6 18Z"; -var mdiVectorArrangeAbove = "M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C6.67,16 10.33,16 14,16C15.11,16 16,15.11 16,14C16,10.33 16,6.67 16,3C16,1.89 15.11,1 14,1H3M3,3H14V14H3V3M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18Z"; -var mdiVectorArrangeBelow = "M20,22C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C16.33,7 12.67,7 9,7C7.89,7 7,7.89 7,9C7,12.67 7,16.33 7,20C7,21.11 7.89,22 9,22H20M20,20H9V9H20V20M5,16V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5Z"; -var mdiVectorBezier = "M7.5,4A1.5,1.5 0 0,0 6,5.5A1.5,1.5 0 0,0 7.5,7C8.13,7 8.7,6.6 8.91,6H13C13.67,5.33 14.33,5 15,5H8.91C8.7,4.4 8.13,4 7.5,4M19,5C8,5 14,17 5,17V19C16,19 10,7 19,7V5M16.5,17C15.87,17 15.3,17.4 15.09,18H11C10.33,18.67 9.67,19 9,19H15.09C15.3,19.6 15.87,20 16.5,20A1.5,1.5 0 0,0 18,18.5A1.5,1.5 0 0,0 16.5,17Z"; -var mdiVectorCircle = "M9,2V4.06C6.72,4.92 4.92,6.72 4.05,9H2V15H4.06C4.92,17.28 6.72,19.09 9,19.95V22H15V19.94C17.28,19.08 19.09,17.28 19.95,15H22V9H19.94C19.08,6.72 17.28,4.92 15,4.05V2M11,4H13V6H11M9,6.25V8H15V6.25C16.18,6.86 17.14,7.82 17.75,9H16V15H17.75C17.14,16.18 16.18,17.14 15,17.75V16H9V17.75C7.82,17.14 6.86,16.18 6.25,15H8V9H6.25C6.86,7.82 7.82,6.86 9,6.25M4,11H6V13H4M18,11H20V13H18M11,18H13V20H11"; -var mdiVectorCircleVariant = "M22,9H19.97C18.7,5.41 15.31,3 11.5,3A9,9 0 0,0 2.5,12C2.5,17 6.53,21 11.5,21C15.31,21 18.7,18.6 20,15H22M20,11V13H18V11M17.82,15C16.66,17.44 14.2,19 11.5,19C7.64,19 4.5,15.87 4.5,12C4.5,8.14 7.64,5 11.5,5C14.2,5 16.66,6.57 17.81,9H16V15"; -var mdiVectorCombine = "M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C4.33,16 7,16 7,16C7,16 7,18.67 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18.67,7 16,7 16,7C16,7 16,4.33 16,3C16,1.89 15.11,1 14,1H3M3,3H14C14,4.33 14,7 14,7H9C7.89,7 7,7.89 7,9V14C7,14 4.33,14 3,14V3M9,9H14V14H9V9M16,9C16,9 18.67,9 20,9V20H9C9,18.67 9,16 9,16H14C15.11,16 16,15.11 16,14V9Z"; -var mdiVectorCurve = "M18.5,2A1.5,1.5 0 0,1 20,3.5A1.5,1.5 0 0,1 18.5,5C18.27,5 18.05,4.95 17.85,4.85L14.16,8.55L14.5,9C16.69,7.74 19.26,7 22,7L23,7.03V9.04L22,9C19.42,9 17,9.75 15,11.04A3.96,3.96 0 0,1 11.04,15C9.75,17 9,19.42 9,22L9.04,23H7.03L7,22C7,19.26 7.74,16.69 9,14.5L8.55,14.16L4.85,17.85C4.95,18.05 5,18.27 5,18.5A1.5,1.5 0 0,1 3.5,20A1.5,1.5 0 0,1 2,18.5A1.5,1.5 0 0,1 3.5,17C3.73,17 3.95,17.05 4.15,17.15L7.84,13.45C7.31,12.78 7,11.92 7,11A4,4 0 0,1 11,7C11.92,7 12.78,7.31 13.45,7.84L17.15,4.15C17.05,3.95 17,3.73 17,3.5A1.5,1.5 0 0,1 18.5,2M11,9A2,2 0 0,0 9,11A2,2 0 0,0 11,13A2,2 0 0,0 13,11A2,2 0 0,0 11,9Z"; -var mdiVectorDifference = "M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3M9,7C7.89,7 7,7.89 7,9V11H9V9H11V7H9M13,7V9H14V10H16V7H13M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18M14,12V14H12V16H14C15.11,16 16,15.11 16,14V12H14M7,13V16H10V14H9V13H7Z"; -var mdiVectorDifferenceAb = "M3,1C1.89,1 1,1.89 1,3V5H3V3H5V1H3M7,1V3H10V1H7M12,1V3H14V5H16V3C16,1.89 15.11,1 14,1H12M1,7V10H3V7H1M14,7C14,7 14,11.67 14,14C11.67,14 7,14 7,14C7,14 7,18 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18,7 14,7 14,7M16,9H20V20H9V16H14C15.11,16 16,15.11 16,14V9M1,12V14C1,15.11 1.89,16 3,16H5V14H3V12H1Z"; -var mdiVectorDifferenceBa = "M20,22C21.11,22 22,21.11 22,20V18H20V20H18V22H20M16,22V20H13V22H16M11,22V20H9V18H7V20C7,21.11 7.89,22 9,22H11M22,16V13H20V16H22M9,16C9,16 9,11.33 9,9C11.33,9 16,9 16,9C16,9 16,5 16,3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C5,16 9,16 9,16M7,14H3V3H14V7H9C7.89,7 7,7.89 7,9V14M22,11V9C22,7.89 21.11,7 20,7H18V9H20V11H22Z"; -var mdiVectorEllipse = "M23,9V15H20.35C19.38,17.12 17.43,18.78 15,19.54V22H9V19.54C5.5,18.45 3,15.5 3,12C3,7.58 7.03,4 12,4C15.78,4 19,6.07 20.35,9H23M17,15V9H18.06C16.85,7.21 14.59,6 12,6C8.13,6 5,8.69 5,12C5,14.39 6.64,16.46 9,17.42V16H15V17.42C16.29,16.9 17.35,16.05 18.06,15H17M19,13H21V11H19V13M11,20H13V18H11V20Z"; -var mdiVectorIntersection = "M3.14,1A2.14,2.14 0 0,0 1,3.14V5H3V3H5V1H3.14M7,1V3H10V1H7M12,1V3H14V5H16V3.14C16,1.96 15.04,1 13.86,1H12M1,7V10H3V7H1M9,7C7.89,7 7,7.89 7,9C7,11.33 7,16 7,16C7,16 11.57,16 13.86,16A2.14,2.14 0 0,0 16,13.86C16,11.57 16,7 16,7C16,7 11.33,7 9,7M18,7V9H20V11H22V9C22,7.89 21.11,7 20,7H18M9,9H14V14H9V9M1,12V13.86C1,15.04 1.96,16 3.14,16H5V14H3V12H1M20,13V16H22V13H20M7,18V20C7,21.11 7.89,22 9,22H11V20H9V18H7M20,18V20H18V22H20C21.11,22 22,21.11 22,20V18H20M13,20V22H16V20H13Z"; -var mdiVectorLine = "M15,3V7.59L7.59,15H3V21H9V16.42L16.42,9H21V3M17,5H19V7H17M5,17H7V19H5"; -var mdiVectorLink = "M3 1C1.89 1 1 1.89 1 3V14C1 15.11 1.89 16 3 16H14C15.11 16 16 15.11 16 14V11H14V14H3V3H14V5H16V3C16 1.89 15.11 1 14 1M9 7C7.89 7 7 7.89 7 9V12H9V9H20V20H9V18H7V20C7 21.11 7.89 22 9 22H20C21.11 22 22 21.11 22 20V9C22 7.89 21.11 7 20 7H9"; -var mdiVectorPoint = "M12,20L7,22L12,11L17,22L12,20M8,2H16V5H22V7H16V10H8V7H2V5H8V2M10,4V8H14V4H10Z"; -var mdiVectorPolygon = "M2,2V8H4.28L5.57,16H4V22H10V20.06L15,20.05V22H21V16H19.17L20,9H22V3H16V6.53L14.8,8H9.59L8,5.82V2M4,4H6V6H4M18,5H20V7H18M6.31,8H7.11L9,10.59V14H15V10.91L16.57,9H18L17.16,16H15V18.06H10V16H7.6M11,10H13V12H11M6,18H8V20H6M17,18H19V20H17"; -var mdiVectorPolyline = "M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3M4 5H6V7H4M18 7H20V9H18M8 17H10V19H8Z"; -var mdiVectorPolylineEdit = "M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3H2M4 5H6V7H4V5M18 7H20V9H18V7M21.15 13C21 13 20.87 13.05 20.76 13.16L19.75 14.18L21.82 16.25L22.84 15.24C23.05 15.03 23.05 14.67 22.84 14.46L21.54 13.16C21.43 13.05 21.29 13 21.15 13M19.15 14.76L13 20.91V23H15.09L21.23 16.84L19.15 14.76M8 17H10V19H8V17Z"; -var mdiVectorPolylineMinus = "M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3H2M4 5H6V7H4V5M18 7H20V9H18V7M8 17H10V19H8V17M15 18V20H23V18H15Z"; -var mdiVectorPolylinePlus = "M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3H2M4 5H6V7H4V5M18 7H20V9H18V7M18 15V18H15V20H18V23H20V20H23V18H20V15H18M8 17H10V19H8V17Z"; -var mdiVectorPolylineRemove = "M21.1 15.5L19 17.6L16.9 15.5L15.5 16.9L17.6 19L15.5 21.1L16.9 22.5L19 20.4L21.1 22.5L22.5 21.1L20.4 19L22.5 16.9L21.1 15.5M16 5V9.6L10.6 15H9.1L7.1 9H8V3H2V9H5L7 15H6V21H12V16.4L17.4 11H22V5H16M6 7H4V5H6V7M10 19H8V17H10V19M20 9H18V7H20V9"; -var mdiVectorRadius = "M2,4H4V2H10V4A10,10 0 0,1 20,14H22V20H20V22H18V20H16V14H18A8,8 0 0,0 10,6V8H4V6H2V4M18,16V18H20V16H18M6,4V6H8V4H6Z"; -var mdiVectorRectangle = "M2,4H8V6H16V4H22V10H20V14H22V20H16V18H8V20H2V14H4V10H2V4M16,10V8H8V10H6V14H8V16H16V14H18V10H16M4,6V8H6V6H4M18,6V8H20V6H18M4,16V18H6V16H4M18,16V18H20V16H18Z"; -var mdiVectorSelection = "M3,1H5V3H3V5H1V3A2,2 0 0,1 3,1M14,1A2,2 0 0,1 16,3V5H14V3H12V1H14M20,7A2,2 0 0,1 22,9V11H20V9H18V7H20M22,20A2,2 0 0,1 20,22H18V20H20V18H22V20M20,13H22V16H20V13M13,9V7H16V10H14V9H13M13,22V20H16V22H13M9,22A2,2 0 0,1 7,20V18H9V20H11V22H9M7,16V13H9V14H10V16H7M7,3V1H10V3H7M3,16A2,2 0 0,1 1,14V12H3V14H5V16H3M1,7H3V10H1V7M9,7H11V9H9V11H7V9A2,2 0 0,1 9,7M16,14A2,2 0 0,1 14,16H12V14H14V12H16V14Z"; -var mdiVectorSquare = "M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z"; -var mdiVectorTriangle = "M9,3V9H9.73L5.79,16H2V22H8V20H16V22H22V16H18.21L14.27,9H15V3M11,5H13V7H11M12,9.04L16,16.15V18H8V16.15M4,18H6V20H4M18,18H20V20H18"; -var mdiVectorUnion = "M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H16V3C16,1.89 15.11,1 14,1H3M3,3H14V9H20V20H9V14H3V3Z"; -var mdiVhs = "M4,6A2,2 0 0,0 2,8V16A2,2 0 0,0 4,18H20A2,2 0 0,0 22,16V8A2,2 0 0,0 20,6H4M4.54,10H7V14H4.54C4.19,13.39 4,12.7 4,12C4,11.3 4.19,10.61 4.54,10M9,10H15V14H9V10M17,10H19.46C19.81,10.61 20,11.3 20,12C20,12.7 19.81,13.39 19.46,14H17V10Z"; -var mdiVibrate = "M16,19H8V5H16M16.5,3H7.5A1.5,1.5 0 0,0 6,4.5V19.5A1.5,1.5 0 0,0 7.5,21H16.5A1.5,1.5 0 0,0 18,19.5V4.5A1.5,1.5 0 0,0 16.5,3M19,17H21V7H19M22,9V15H24V9M3,17H5V7H3M0,15H2V9H0V15Z"; -var mdiVibrateOff = "M8.2,5L6.55,3.35C6.81,3.12 7.15,3 7.5,3H16.5A1.5,1.5 0 0,1 18,4.5V14.8L16,12.8V5H8.2M0,15H2V9H0V15M21,17V7H19V15.8L20.2,17H21M3,17H5V7H3V17M18,17.35L22.11,21.46L20.84,22.73L18,19.85C17.83,20.54 17.21,21 16.5,21H7.5A1.5,1.5 0 0,1 6,19.5V7.89L1.11,3L2.39,1.73L6.09,5.44L8,7.34L16,15.34L18,17.34V17.35M16,17.89L8,9.89V19H16V17.89M22,9V15H24V9H22Z"; -var mdiVideo = "M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z"; -var mdiVideo3d = "M5,7H9A2,2 0 0,1 11,9V15A2,2 0 0,1 9,17H5V15H9V13H6V11H9V9H5V7M13,7H16A3,3 0 0,1 19,10V14A3,3 0 0,1 16,17H13V7M16,15A1,1 0 0,0 17,14V10A1,1 0 0,0 16,9H15V15H16Z"; -var mdiVideo3dOff = "M2.61 2L21.35 20.74L19.94 22.15L14.8 17H13V15.2L11 13.23V15.21C10.93 15.68 10.74 16.08 10.41 16.41C10.08 16.73 9.68 16.93 9.21 17H5V15H9V13H6V11H8.8L6.79 9H5V7.23L1.2 3.41L2.61 2M16 7H16.22C17 7.07 17.63 7.36 18.14 7.88C18.65 8.39 18.93 9 19 9.76V14.24C18.95 14.63 18.87 15 18.72 15.3L17 13.6V9.85C16.95 9.63 16.84 9.44 16.69 9.28C16.53 9.13 16.34 9.03 16.12 9H15V11.59L13 9.57V7H16Z"; -var mdiVideo3dVariant = "M14,10V14A0.5,0.5 0 0,1 13.5,14.5H12.5V9.5H13.5A0.5,0.5 0 0,1 14,10M21,6.5V17.5L17,13.5V17A1,1 0 0,1 16,18H4A1,1 0 0,1 3,17V7A1,1 0 0,1 4,6H16A1,1 0 0,1 17,7V10.5M9.5,9.5A1.5,1.5 0 0,0 8,8H4.5V9.5H8V11.25H5.5V12.75H8V14.5H4.5V16H8A1.5,1.5 0 0,0 9.5,14.5M15.5,9.5A1.5,1.5 0 0,0 14,8H11V16H14A1.5,1.5 0 0,0 15.5,14.5"; -var mdiVideo4kBox = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,13.5H11V15H9.5V13.5H6.5V9H8V12H9.5V9H11V12H12V13.5M18,15H16.2L14.4,12.8V15H13V9H14.5V11.2L16.2,9H18L15.8,12L18,15Z"; -var mdiVideoAccount = "M17,10.5L21,6.5V17.5L17,13.5V17A1,1 0 0,1 16,18H4A1,1 0 0,1 3,17V7A1,1 0 0,1 4,6H16A1,1 0 0,1 17,7V10.5M14,16V15C14,13.67 11.33,13 10,13C8.67,13 6,13.67 6,15V16H14M10,8A2,2 0 0,0 8,10A2,2 0 0,0 10,12A2,2 0 0,0 12,10A2,2 0 0,0 10,8Z"; -var mdiVideoBox = "M18,16L14,12.8V16H6V8H14V11.2L18,8M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"; -var mdiVideoBoxOff = "M6,8H6.73L14,15.27V16H6M2.27,1L1,2.27L3,4.28C2.41,4.62 2,5.26 2,6V18A2,2 0 0,0 4,20H18.73L20.73,22L22,20.73M20,4H7.82L11.82,8H14V10.18L14.57,10.75L18,8V14.18L22,18.17C22,18.11 22,18.06 22,18V6A2,2 0 0,0 20,4Z"; -var mdiVideoCheck = "M17 10.5V7C17 6.45 16.55 6 16 6H4C3.45 6 3 6.45 3 7V17C3 17.55 3.45 18 4 18H16C16.55 18 17 17.55 17 17V13.5L21 17.5V6.5L17 10.5M8.93 15L6 11.8L7.24 10.56L8.93 12.26L12.76 8.43L14 9.93L8.93 15Z"; -var mdiVideoCheckOutline = "M15 8V16H5V8H15M16 6H4C3.45 6 3 6.45 3 7V17C3 17.55 3.45 18 4 18H16C16.55 18 17 17.55 17 17V13.5L21 17.5V6.5L17 10.5V7C17 6.45 16.55 6 16 6M6.35 12.08L7.5 10.95L9 12.5L12.5 9L13.65 10.37L9 15L6.35 12.08Z"; -var mdiVideoHighDefinition = "M14 10V14C14 14.3 13.8 14.5 13.5 14.5H12.5V9.5H13.5C13.8 9.5 14 9.7 14 10M17 10.5V7C17 6.4 16.6 6 16 6H4C3.4 6 3 6.4 3 7V17C3 17.6 3.4 18 4 18H16C16.6 18 17 17.6 17 17V13.5L21 17.5V6.5L17 10.5M9.5 16H8V12.8H6V16H4.5V8H6V11.2H8V8H9.5V16M15.5 14.5C15.5 15.3 14.8 16 14 16H11V8H14C14.8 8 15.5 8.7 15.5 9.5V14.5Z"; -var mdiVideoImage = "M17,10.5L21,6.5V17.5L17,13.5V17A1,1 0 0,1 16,18H4A1,1 0 0,1 3,17V7A1,1 0 0,1 4,6H16A1,1 0 0,1 17,7V10.5M10.91,9.55L9.2,11.82L10.5,13.55L9.77,14.09L7.73,11.36L5,15H15L10.91,9.55Z"; -var mdiVideoInputAntenna = "M12,5A7,7 0 0,0 5,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H19A7,7 0 0,0 12,5M13,14.29C13.88,13.9 14.5,13.03 14.5,12A2.5,2.5 0 0,0 12,9.5A2.5,2.5 0 0,0 9.5,12C9.5,13 10.12,13.9 11,14.29V17.59L7.59,21L9,22.41L12,19.41L15,22.41L16.41,21L13,17.59V14.29M12,1A11,11 0 0,0 1,12H3A9,9 0 0,1 12,3A9,9 0 0,1 21,12H23A11,11 0 0,0 12,1Z"; -var mdiVideoInputComponent = "M5,2A1,1 0 0,0 4,1A1,1 0 0,0 3,2V6H1V12H7V6H5V2M9,16C9,17.3 9.84,18.4 11,18.82V23H13V18.82C14.16,18.41 15,17.31 15,16V14H9V16M1,16C1,17.3 1.84,18.4 3,18.82V23H5V18.82C6.16,18.4 7,17.3 7,16V14H1V16M21,6V2A1,1 0 0,0 20,1A1,1 0 0,0 19,2V6H17V12H23V6H21M13,2A1,1 0 0,0 12,1A1,1 0 0,0 11,2V6H9V12H15V6H13V2M17,16C17,17.3 17.84,18.4 19,18.82V23H21V18.82C22.16,18.41 23,17.31 23,16V14H17V16Z"; -var mdiVideoInputHdmi = "M18,7V4A2,2 0 0,0 16,2H8A2,2 0 0,0 6,4V7H5V13L8,19V22H16V19L19,13V7H18M8,4H16V7H14V5H13V7H11V5H10V7H8V4Z"; -var mdiVideoInputScart = "M20.6 2.2L17.3 2.4L13.8 4.4L13.3 3.5L2 10V17H3V19C3 20.1 3.9 21 5 21H15C16.1 21 17 20.1 17 19V17H18V10H17L16.8 9.6L20.3 7.6L22.1 4.8L20.6 2.2M15 17V19H5V17H15Z"; -var mdiVideoInputSvideo = "M8,11.5A1.5,1.5 0 0,0 6.5,10A1.5,1.5 0 0,0 5,11.5A1.5,1.5 0 0,0 6.5,13A1.5,1.5 0 0,0 8,11.5M15,6.5A1.5,1.5 0 0,0 13.5,5H10.5A1.5,1.5 0 0,0 9,6.5A1.5,1.5 0 0,0 10.5,8H13.5A1.5,1.5 0 0,0 15,6.5M8.5,15A1.5,1.5 0 0,0 7,16.5A1.5,1.5 0 0,0 8.5,18A1.5,1.5 0 0,0 10,16.5A1.5,1.5 0 0,0 8.5,15M12,1A11,11 0 0,0 1,12A11,11 0 0,0 12,23A11,11 0 0,0 23,12A11,11 0 0,0 12,1M12,21C7.04,21 3,16.96 3,12C3,7.04 7.04,3 12,3C16.96,3 21,7.04 21,12C21,16.96 16.96,21 12,21M17.5,10A1.5,1.5 0 0,0 16,11.5A1.5,1.5 0 0,0 17.5,13A1.5,1.5 0 0,0 19,11.5A1.5,1.5 0 0,0 17.5,10M15.5,15A1.5,1.5 0 0,0 14,16.5A1.5,1.5 0 0,0 15.5,18A1.5,1.5 0 0,0 17,16.5A1.5,1.5 0 0,0 15.5,15Z"; -var mdiVideoMinus = "M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5M14,13H6V11H14V13Z"; -var mdiVideoMinusOutline = "M15 8V16H5V8H15M16 6H4C3.45 6 3 6.45 3 7V17C3 17.55 3.45 18 4 18H16C16.55 18 17 17.55 17 17V13.5L21 17.5V6.5L17 10.5V7C17 6.45 16.55 6 16 6M13 13H7V11H13V13Z"; -var mdiVideoOff = "M3.27,2L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.2,18 16.39,17.92 16.54,17.82L19.73,21L21,19.73M21,6.5L17,10.5V7A1,1 0 0,0 16,6H9.82L21,17.18V6.5Z"; -var mdiVideoOffOutline = "M3.41,1.86L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.21,18 16.39,17.92 16.55,17.82L19.73,21L21.14,19.59L12.28,10.73L3.41,1.86M5,16V8H6.73L14.73,16H5M15,8V10.61L21,16.61V6.5L17,10.5V7A1,1 0 0,0 16,6H10.39L12.39,8H15Z"; -var mdiVideoOutline = "M15,8V16H5V8H15M16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5V7A1,1 0 0,0 16,6Z"; -var mdiVideoPlus = "M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5M14,13H11V16H9V13H6V11H9V8H11V11H14V13Z"; -var mdiVideoPlusOutline = "M15 8V16H5V8H15M16 6H4C3.45 6 3 6.45 3 7V17C3 17.55 3.45 18 4 18H16C16.55 18 17 17.55 17 17V13.5L21 17.5V6.5L17 10.5V7C17 6.45 16.55 6 16 6M13 13H11V15H9V13H7V11H9V9H11V11H13V13Z"; -var mdiVideoStabilization = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M7.24,6.58L18.83,9.69L16.76,17.42L5.17,14.31L7.24,6.58Z"; -var mdiVideoSwitch = "M13,15.5V13H7V15.5L3.5,12L7,8.5V11H13V8.5L16.5,12M18,9.5V6A1,1 0 0,0 17,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H17A1,1 0 0,0 18,18V14.5L22,18.5V5.5L18,9.5Z"; -var mdiVideoSwitchOutline = "M8 13H12V15L15 12L12 9V11H8V9L5 12L8 15V13M18 9.5V6C18 5.4 17.5 5 17 5H3C2.5 5 2 5.4 2 6V18C2 18.5 2.5 19 3 19H17C17.5 19 18 18.5 18 18V14.5L22 18.5V5.5L18 9.5M16 17H4V7H16V17Z"; -var mdiVideoVintage = "M18,14.5V11A1,1 0 0,0 17,10H16C18.24,8.39 18.76,5.27 17.15,3C15.54,0.78 12.42,0.26 10.17,1.87C9.5,2.35 8.96,3 8.6,3.73C6.25,2.28 3.17,3 1.72,5.37C0.28,7.72 1,10.8 3.36,12.25C3.57,12.37 3.78,12.5 4,12.58V21A1,1 0 0,0 5,22H17A1,1 0 0,0 18,21V17.5L22,21.5V10.5L18,14.5M13,4A2,2 0 0,1 15,6A2,2 0 0,1 13,8A2,2 0 0,1 11,6A2,2 0 0,1 13,4M6,6A2,2 0 0,1 8,8A2,2 0 0,1 6,10A2,2 0 0,1 4,8A2,2 0 0,1 6,6Z"; -var mdiVideoWireless = "M17,14.5V11A1,1 0 0,0 16,10H4A1,1 0 0,0 3,11V21A1,1 0 0,0 4,22H16A1,1 0 0,0 17,21V17.5L21,21.5V10.5M3,3.86L4.4,5.24C7.5,2.19 12.5,2.19 15.6,5.24L17,3.86C13.14,0.05 6.87,0.05 3,3.86M5.8,6.62L7.2,8C8.75,6.5 11.25,6.5 12.8,8L14.2,6.62C11.88,4.34 8.12,4.34 5.8,6.62Z"; -var mdiVideoWirelessOutline = "M15,12V20H5V12H15M16,10H4A1,1 0 0,0 3,11V21A1,1 0 0,0 4,22H16A1,1 0 0,0 17,21V17.5L21,21.5V10.5L17,14.5V11A1,1 0 0,0 16,10M3,3.86L4.4,5.24C7.5,2.19 12.5,2.19 15.6,5.24L17,3.86C13.14,0.05 6.87,0.05 3,3.86M5.8,6.63L7.2,8C8.75,6.5 11.25,6.5 12.8,8L14.2,6.63C11.88,4.34 8.12,4.34 5.8,6.63Z"; -var mdiViewAgenda = "M21 3H3C2.4 3 2 3.4 2 4V10C2 10.6 2.4 11 3 11H21C21.6 11 22 10.6 22 10V4C22 3.4 21.6 3 21 3M21 13H3C2.4 13 2 13.4 2 14V20C2 20.6 2.4 21 3 21H21C21.6 21 22 20.6 22 20V14C22 13.4 21.6 13 21 13Z"; -var mdiViewAgendaOutline = "M21 13H3A1 1 0 0 0 2 14V20A1 1 0 0 0 3 21H21A1 1 0 0 0 22 20V14A1 1 0 0 0 21 13M20 19H4V15H20M21 3H3A1 1 0 0 0 2 4V10A1 1 0 0 0 3 11H21A1 1 0 0 0 22 10V4A1 1 0 0 0 21 3M20 9H4V5H20Z"; -var mdiViewArray = "M8,18H17V5H8M18,5V18H21V5M4,18H7V5H4V18Z"; -var mdiViewArrayOutline = "M15 7V16H10V7H15M21 5H18V18H21V5M17 5H8V18H17V5M7 5H4V18H7V5Z"; -var mdiViewCarousel = "M18,6V17H22V6M2,17H6V6H2M7,19H17V4H7V19Z"; -var mdiViewCarouselOutline = "M2 6H6V17H2V6M7 19H17V4H7V19M9 6H15V17H9V6M18 6H22V17H18V6Z"; -var mdiViewColumn = "M16,5V18H21V5M4,18H9V5H4M10,18H15V5H10V18Z"; -var mdiViewColumnOutline = "M4 5V18H21V5H4M14 7V16H11V7H14M6 7H9V16H6V7M19 16H16V7H19V16Z"; -var mdiViewComfy = "M3,9H7V5H3V9M3,14H7V10H3V14M8,14H12V10H8V14M13,14H17V10H13V14M8,9H12V5H8V9M13,5V9H17V5H13M18,14H22V10H18V14M3,19H7V15H3V19M8,19H12V15H8V19M13,19H17V15H13V19M18,19H22V15H18V19M18,5V9H22V5H18Z"; -var mdiViewComfyOutline = "M3 5V19H22V5H3M20 9H17.75V7H20V9M9.25 11H11.5V13H9.25V11M7.25 13H5V11H7.25V13M11.5 9H9.25V7H11.5V9M13.5 7H15.75V9H13.5V7M11.5 15V17H9.25V15H11.5M13.5 15H15.75V17H13.5V15M13.5 13V11H15.75V13H13.5M17.75 11H20V13H17.75V11M7.25 7V9H5V7H7.25M5 15H7.25V17H5V15M17.75 17V15H20V17H17.75Z"; -var mdiViewCompact = "M3,19H9V12H3V19M10,19H22V12H10V19M3,5V11H22V5H3Z"; -var mdiViewCompactOutline = "M3,5V19H22V5H3M5,7H20V11H5V7M5,17V13H9V17H5M11,17V13H20V17H11Z"; -var mdiViewDashboard = "M13,3V9H21V3M13,21H21V11H13M3,21H11V15H3M3,13H11V3H3V13Z"; -var mdiViewDashboardOutline = "M19,5V7H15V5H19M9,5V11H5V5H9M19,13V19H15V13H19M9,17V19H5V17H9M21,3H13V9H21V3M11,3H3V13H11V3M21,11H13V21H21V11M11,15H3V21H11V15Z"; -var mdiViewDashboardVariant = "M2,5V19H8V5H2M9,5V10H15V5H9M16,5V14H22V5H16M9,11V19H15V11H9M16,15V19H22V15H16Z"; -var mdiViewDashboardVariantOutline = "M2 5V19H22V5H2M20 12H16V7H20V12M14 10H10V7H14V10M10 12H14V17H10V12M4 7H8V17H4V7M16 17V14H20V17H16Z"; -var mdiViewDay = "M2,3V6H21V3M20,8H3A1,1 0 0,0 2,9V15A1,1 0 0,0 3,16H20A1,1 0 0,0 21,15V9A1,1 0 0,0 20,8M2,21H21V18H2V21Z"; -var mdiViewDayOutline = "M21 18H2V20H21V18M19 10V14H4V10H19M20 8H3C2.45 8 2 8.45 2 9V15C2 15.55 2.45 16 3 16H20C20.55 16 21 15.55 21 15V9C21 8.45 20.55 8 20 8M21 4H2V6H21V4Z"; -var mdiViewGrid = "M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3"; -var mdiViewGridOutline = "M3 11H11V3H3M5 5H9V9H5M13 21H21V13H13M15 15H19V19H15M3 21H11V13H3M5 15H9V19H5M13 3V11H21V3M19 9H15V5H19Z"; -var mdiViewGridPlus = "M13 3V11H21V3H13M3 21H11V13H3V21M3 3V11H11V3H3M13 16H16V13H18V16H21V18H18V21H16V18H13V16Z"; -var mdiViewGridPlusOutline = "M3 21H11V13H3M5 15H9V19H5M3 11H11V3H3M5 5H9V9H5M13 3V11H21V3M19 9H15V5H19M18 16H21V18H18V21H16V18H13V16H16V13H18Z"; -var mdiViewHeadline = "M4,5V7H21V5M4,11H21V9H4M4,19H21V17H4M4,15H21V13H4V15Z"; -var mdiViewList = "M9,5V9H21V5M9,19H21V15H9M9,14H21V10H9M4,9H8V5H4M4,19H8V15H4M4,14H8V10H4V14Z"; -var mdiViewListOutline = "M3 5V19H20V5H3M7 7V9H5V7H7M5 13V11H7V13H5M5 15H7V17H5V15M18 17H9V15H18V17M18 13H9V11H18V13M18 9H9V7H18V9Z"; -var mdiViewModule = "M16,5V11H21V5M10,11H15V5H10M16,18H21V12H16M10,18H15V12H10M4,18H9V12H4M4,11H9V5H4V11Z"; -var mdiViewModuleOutline = "M4 5V18H21V5H4M14 7V10.5H11V7H14M6 7H9V10.5H6V7M6 16V12.5H9V16H6M11 16V12.5H14V16H11M19 16H16V12.5H19V16M16 10.5V7H19V10.5H16Z"; -var mdiViewParallel = "M19 3V21H15V3H19M14 3V21H10V3H14M9 3V21H5V3H9Z"; -var mdiViewParallelOutline = "M19 3H5V21H19V3M17 19H15V5H17V19M13 19H11V5H13V19M7 5H9V19H7V5Z"; -var mdiViewQuilt = "M10,5V11H21V5M16,18H21V12H16M4,18H9V5H4M10,18H15V12H10V18Z"; -var mdiViewQuiltOutline = "M4 5V18H21V5H4M6 16V7H9V16H6M11 16V12.5H14V16H11M19 16H16V12.5H19V16M11 10.5V7H19V10.5H11Z"; -var mdiViewSequential = "M3 5H21V9H3V5M3 10H21V14H3V10M3 15H21V19H3V15Z"; -var mdiViewSequentialOutline = "M3 5V19H21V5H3M19 7V9H5V7H19M19 11V13H5V11H19M5 17V15H19V17H5Z"; -var mdiViewSplitHorizontal = "M3,5H21V7H3V5M3,11V9H21V11H3M3,19V13H21V19H3Z"; -var mdiViewSplitVertical = "M13,5H21V19H13V5M3,5H11V7H3V5M3,11V9H11V11H3M3,19V17H11V19H3M3,15V13H11V15H3Z"; -var mdiViewStream = "M4,5V11H21V5M4,18H21V12H4V18Z"; -var mdiViewStreamOutline = "M4 6V18H21V6H4M19 16H6V13H19V16M6 11V8H19V11H6Z"; -var mdiViewWeek = "M13,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H13A1,1 0 0,0 14,18V6A1,1 0 0,0 13,5M20,5H17A1,1 0 0,0 16,6V18A1,1 0 0,0 17,19H20A1,1 0 0,0 21,18V6A1,1 0 0,0 20,5M6,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H6A1,1 0 0,0 7,18V6A1,1 0 0,0 6,5Z"; -var mdiViewWeekOutline = "M21 4H3C2.45 4 2 4.45 2 5V19C2 19.55 2.45 20 3 20H21C21.55 20 22 19.55 22 19V5C22 4.45 21.55 4 21 4M8 18H4V6H8V18M14 18H10V6H14V18M20 18H16V6H20V18Z"; -var mdiVimeo = "M22,7.42C21.91,9.37 20.55,12.04 17.92,15.44C15.2,19 12.9,20.75 11,20.75C9.85,20.75 8.86,19.67 8.05,17.5C7.5,15.54 7,13.56 6.44,11.58C5.84,9.42 5.2,8.34 4.5,8.34C4.36,8.34 3.84,8.66 2.94,9.29L2,8.07C3,7.2 3.96,6.33 4.92,5.46C6.24,4.32 7.23,3.72 7.88,3.66C9.44,3.5 10.4,4.58 10.76,6.86C11.15,9.33 11.42,10.86 11.57,11.46C12,13.5 12.5,14.5 13.05,14.5C13.47,14.5 14.1,13.86 14.94,12.53C15.78,11.21 16.23,10.2 16.29,9.5C16.41,8.36 15.96,7.79 14.94,7.79C14.46,7.79 13.97,7.9 13.46,8.12C14.44,4.89 16.32,3.32 19.09,3.41C21.15,3.47 22.12,4.81 22,7.42Z"; -var mdiViolin = "M11,2A1,1 0 0,0 10,3V5L10,9A0.5,0.5 0 0,0 10.5,9.5H12A0.5,0.5 0 0,1 12.5,10A0.5,0.5 0 0,1 12,10.5H10.5C9.73,10.5 9,9.77 9,9V5.16C7.27,5.6 6,7.13 6,9V10.5A2.5,2.5 0 0,1 8.5,13A2.5,2.5 0 0,1 6,15.5V17C6,19.77 8.23,22 11,22H13C15.77,22 18,19.77 18,17V15.5A2.5,2.5 0 0,1 15.5,13A2.5,2.5 0 0,1 18,10.5V9C18,6.78 16.22,5 14,5V3A1,1 0 0,0 13,2H11M10.75,16.5H13.25L12.75,20H11.25L10.75,16.5Z"; -var mdiVirtualReality = "M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M6,9H7.5L8.5,12.43L9.5,9H11L9.25,15H7.75L6,9M13,9H16.5C17.35,9 18,9.65 18,10.5V11.5C18,12.1 17.6,12.65 17.1,12.9L18,15H16.5L15.65,13H14.5V15H13V9M14.5,10.5V11.5H16.5V10.5H14.5Z"; -var mdiVirus = "M19.82 14C20.13 14.45 20.66 14.75 21.25 14.75C22.22 14.75 23 13.97 23 13S22.22 11.25 21.25 11.25C20.66 11.25 20.13 11.55 19.82 12H19C19 10.43 18.5 9 17.6 7.81L18.94 6.47C19.5 6.57 20.07 6.41 20.5 6C21.17 5.31 21.17 4.2 20.5 3.5C19.81 2.83 18.7 2.83 18 3.5C17.59 3.93 17.43 4.5 17.53 5.06L16.19 6.4C15.27 5.71 14.19 5.25 13 5.08V3.68C13.45 3.37 13.75 2.84 13.75 2.25C13.75 1.28 12.97 .5 12 .5S10.25 1.28 10.25 2.25C10.25 2.84 10.55 3.37 11 3.68V5.08C10.1 5.21 9.26 5.5 8.5 5.94L7.39 4.35C7.58 3.83 7.53 3.23 7.19 2.75C6.63 1.96 5.54 1.76 4.75 2.32C3.96 2.87 3.76 3.96 4.32 4.75C4.66 5.24 5.2 5.5 5.75 5.5L6.93 7.18C6.5 7.61 6.16 8.09 5.87 8.62C5.25 8.38 4.5 8.5 4 9C3.33 9.7 3.33 10.8 4 11.5C4.29 11.77 4.64 11.93 5 12L5 12C5 12.54 5.07 13.06 5.18 13.56L3.87 13.91C3.45 13.56 2.87 13.41 2.29 13.56C1.36 13.81 .808 14.77 1.06 15.71C1.31 16.64 2.28 17.19 3.21 16.94C3.78 16.78 4.21 16.36 4.39 15.84L5.9 15.43C6.35 16.22 6.95 16.92 7.65 17.5L6.55 19.5C6 19.58 5.5 19.89 5.21 20.42C4.75 21.27 5.07 22.33 5.92 22.79C6.77 23.25 7.83 22.93 8.29 22.08C8.57 21.56 8.56 20.96 8.31 20.47L9.38 18.5C10.19 18.82 11.07 19 12 19C12.06 19 12.12 19 12.18 19C12.05 19.26 12 19.56 12 19.88C12.08 20.85 12.92 21.57 13.88 21.5S15.57 20.58 15.5 19.62C15.46 19.12 15.21 18.68 14.85 18.39C15.32 18.18 15.77 17.91 16.19 17.6L18.53 19.94C18.43 20.5 18.59 21.07 19 21.5C19.7 22.17 20.8 22.17 21.5 21.5S22.17 19.7 21.5 19C21.07 18.59 20.5 18.43 19.94 18.53L17.6 16.19C18.09 15.54 18.47 14.8 18.71 14H19.82M10.5 12C9.67 12 9 11.33 9 10.5S9.67 9 10.5 9 12 9.67 12 10.5 11.33 12 10.5 12M14 15C13.45 15 13 14.55 13 14C13 13.45 13.45 13 14 13S15 13.45 15 14C15 14.55 14.55 15 14 15Z"; -var mdiVirusOutline = "M12 .5C11.03 .5 10.25 1.28 10.25 2.25C10.25 2.84 10.55 3.37 11 3.68V5.08C10.1 5.21 9.26 5.5 8.5 5.94L7.39 4.35C7.58 3.83 7.53 3.23 7.19 2.75C6.84 2.26 6.3 2 5.75 2C5.4 2 5.05 2.1 4.75 2.32C3.96 2.87 3.76 3.96 4.32 4.75C4.66 5.24 5.2 5.5 5.75 5.5L6.93 7.18C6.5 7.61 6.16 8.09 5.87 8.62C5.67 8.54 5.46 8.5 5.25 8.5C4.8 8.5 4.35 8.67 4 9C3.33 9.7 3.33 10.8 4 11.5C4.29 11.77 4.64 11.92 5 12L5 12C5 12.54 5.07 13.06 5.18 13.56L3.87 13.91C3.56 13.65 3.16 13.5 2.75 13.5C2.6 13.5 2.44 13.5 2.29 13.56C1.36 13.81 .809 14.77 1.06 15.71C1.27 16.5 2 17 2.75 17C2.9 17 3.05 17 3.21 16.94C3.78 16.78 4.21 16.36 4.39 15.84L5.9 15.43C6.35 16.22 6.95 16.92 7.65 17.5L6.55 19.5C6 19.58 5.5 19.89 5.21 20.42C4.75 21.27 5.07 22.33 5.92 22.79C6.18 22.93 6.47 23 6.75 23C7.37 23 7.97 22.67 8.29 22.08C8.57 21.56 8.56 20.96 8.31 20.47L9.38 18.5C10.19 18.82 11.07 19 12 19C12.06 19 12.12 19 12.18 19C12.05 19.26 12 19.56 12 19.88C12.08 20.8 12.84 21.5 13.75 21.5C13.79 21.5 13.84 21.5 13.88 21.5C14.85 21.42 15.57 20.58 15.5 19.62C15.46 19.12 15.21 18.68 14.85 18.39C15.32 18.18 15.77 17.91 16.19 17.6L18.53 19.94C18.43 20.5 18.59 21.07 19 21.5C19.35 21.83 19.8 22 20.25 22S21.15 21.83 21.5 21.5C22.17 20.8 22.17 19.7 21.5 19C21.15 18.67 20.7 18.5 20.25 18.5C20.15 18.5 20.05 18.5 19.94 18.53L17.6 16.19C18.09 15.54 18.47 14.8 18.71 14H19.82C20.13 14.45 20.66 14.75 21.25 14.75C22.22 14.75 23 13.97 23 13S22.22 11.25 21.25 11.25C20.66 11.25 20.13 11.55 19.82 12H19C19 10.43 18.5 9 17.6 7.81L18.94 6.47C19.05 6.5 19.15 6.5 19.25 6.5C19.7 6.5 20.15 6.33 20.5 6C21.17 5.31 21.17 4.2 20.5 3.5C20.15 3.17 19.7 3 19.25 3S18.35 3.17 18 3.5C17.59 3.93 17.43 4.5 17.53 5.06L16.19 6.4C15.27 5.71 14.19 5.25 13 5.08V3.68C13.45 3.37 13.75 2.84 13.75 2.25C13.75 1.28 12.97 .5 12 .5M12 17C9.24 17 7 14.76 7 12S9.24 7 12 7 17 9.24 17 12 14.76 17 12 17M10.5 9C9.67 9 9 9.67 9 10.5S9.67 12 10.5 12 12 11.33 12 10.5 11.33 9 10.5 9M14 13C13.45 13 13 13.45 13 14C13 14.55 13.45 15 14 15C14.55 15 15 14.55 15 14C15 13.45 14.55 13 14 13Z"; -var mdiVk = "M15.07 2H8.93C3.33 2 2 3.33 2 8.93V15.07C2 20.67 3.33 22 8.93 22H15.07C20.67 22 22 20.67 22 15.07V8.93C22 3.33 20.67 2 15.07 2M18.15 16.27H16.69C16.14 16.27 15.97 15.82 15 14.83C14.12 14 13.74 13.88 13.53 13.88C13.24 13.88 13.15 13.96 13.15 14.38V15.69C13.15 16.04 13.04 16.26 12.11 16.26C10.57 16.26 8.86 15.32 7.66 13.59C5.85 11.05 5.36 9.13 5.36 8.75C5.36 8.54 5.43 8.34 5.85 8.34H7.32C7.69 8.34 7.83 8.5 7.97 8.9C8.69 11 9.89 12.8 10.38 12.8C10.57 12.8 10.65 12.71 10.65 12.25V10.1C10.6 9.12 10.07 9.03 10.07 8.68C10.07 8.5 10.21 8.34 10.44 8.34H12.73C13.04 8.34 13.15 8.5 13.15 8.88V11.77C13.15 12.08 13.28 12.19 13.38 12.19C13.56 12.19 13.72 12.08 14.05 11.74C15.1 10.57 15.85 8.76 15.85 8.76C15.95 8.55 16.11 8.35 16.5 8.35H17.93C18.37 8.35 18.47 8.58 18.37 8.89C18.19 9.74 16.41 12.25 16.43 12.25C16.27 12.5 16.21 12.61 16.43 12.9C16.58 13.11 17.09 13.55 17.43 13.94C18.05 14.65 18.53 15.24 18.66 15.65C18.77 16.06 18.57 16.27 18.15 16.27Z"; -var mdiVlc = "M12,1C11.58,1 11.19,1.23 11,1.75L9.88,4.88C10.36,5.4 11.28,5.5 12,5.5C12.72,5.5 13.64,5.4 14.13,4.88L13,1.75C12.82,1.25 12.42,1 12,1M8.44,8.91L7,12.91C8.07,14.27 10.26,14.5 12,14.5C13.74,14.5 15.93,14.27 17,12.91L15.56,8.91C14.76,9.83 13.24,10 12,10C10.76,10 9.24,9.83 8.44,8.91M5.44,15C4.62,15 3.76,15.65 3.53,16.44L2.06,21.56C1.84,22.35 2.3,23 3.13,23H20.88C21.7,23 22.16,22.35 21.94,21.56L20.47,16.44C20.24,15.65 19.38,15 18.56,15H17.75L18.09,15.97C18.21,16.29 18.29,16.69 18.09,16.97C16.84,18.7 14.14,19 12,19C9.86,19 7.16,18.7 5.91,16.97C5.71,16.69 5.79,16.29 5.91,15.97L6.25,15H5.44Z"; -var mdiVoiceOff = "M2,3.27L3.28,2L22,20.72L20.73,22L16.73,18C16.9,18.31 17,18.64 17,19V21H1V19C1,16.34 6.33,15 9,15C10.77,15 13.72,15.59 15.5,16.77L11.12,12.39C10.5,12.78 9.78,13 9,13A4,4 0 0,1 5,9C5,8.22 5.22,7.5 5.61,6.88L2,3.27M9,5A4,4 0 0,1 13,9V9.17L8.83,5H9M16.76,5.36C18.78,7.56 18.78,10.61 16.76,12.63L15.08,10.94C15.92,9.76 15.92,8.23 15.08,7.05L16.76,5.36M20.07,2C24,6.05 23.97,12.11 20.07,16L18.44,14.37C21.21,11.19 21.21,6.65 18.44,3.63L20.07,2Z"; -var mdiVoicemail = "M18.5,15A3.5,3.5 0 0,1 15,11.5A3.5,3.5 0 0,1 18.5,8A3.5,3.5 0 0,1 22,11.5A3.5,3.5 0 0,1 18.5,15M5.5,15A3.5,3.5 0 0,1 2,11.5A3.5,3.5 0 0,1 5.5,8A3.5,3.5 0 0,1 9,11.5A3.5,3.5 0 0,1 5.5,15M18.5,6A5.5,5.5 0 0,0 13,11.5C13,12.83 13.47,14.05 14.26,15H9.74C10.53,14.05 11,12.83 11,11.5A5.5,5.5 0 0,0 5.5,6A5.5,5.5 0 0,0 0,11.5A5.5,5.5 0 0,0 5.5,17H18.5A5.5,5.5 0 0,0 24,11.5A5.5,5.5 0 0,0 18.5,6Z"; -var mdiVolleyball = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M13.6,20.35C15.96,18.04 17.69,15.08 18.5,11.76C17.84,11.62 17.18,11.54 16.5,11.5C15.56,15.11 13.41,18.22 10.5,20.37C11,20.45 11.5,20.5 12,20.5C12.55,20.5 13.08,20.45 13.6,20.35M9.23,20.04C12.23,18.07 14.5,15.05 15.46,11.5C14.71,11.55 13.97,11.65 13.27,11.81C12.18,14.89 9.97,17.44 7.13,18.97C7.77,19.42 8.5,19.78 9.23,20.04M20.5,12.37C20.16,12.23 19.81,12.11 19.46,12C18.76,14.9 17.39,17.53 15.54,19.73C18.36,18.44 20.35,15.64 20.5,12.37M3.56,11.04C3.5,11.35 3.5,11.68 3.5,12C3.5,14.5 4.57,16.73 6.27,18.28C6.86,18 7.41,17.66 7.94,17.29C6.08,15.54 4.58,13.41 3.56,11.04M5.33,6.74C4.73,7.5 4.26,8.35 3.95,9.28C4.92,12.13 6.58,14.66 8.74,16.67C9.25,16.24 9.72,15.77 10.15,15.26C7.74,13.03 6,10.08 5.33,6.74M8.04,4.5C7.36,4.85 6.73,5.3 6.18,5.82C6.71,9.21 8.37,12.23 10.77,14.47C11.17,13.91 11.5,13.32 11.82,12.7C9.68,10.56 8.28,7.69 8.04,4.5M19.96,9.03C18.7,8.68 17.37,8.5 16,8.5C14.1,8.5 12.28,8.85 10.61,9.5C10.96,10.1 11.35,10.67 11.8,11.2C13.12,10.75 14.53,10.5 16,10.5C17.57,10.5 19.08,10.78 20.47,11.29C20.4,10.5 20.23,9.74 19.96,9.03M17.54,5.57C17.03,5.5 16.5,5.5 16,5.5C13.69,5.5 11.47,5.94 9.44,6.73C9.62,7.38 9.86,8 10.14,8.61C11.96,7.89 13.93,7.5 16,7.5C17.18,7.5 18.32,7.63 19.42,7.87C18.93,7 18.29,6.21 17.54,5.57M16,4.5C14.79,3.87 13.44,3.5 12,3.5C10.95,3.5 9.94,3.7 9,4.05C9.04,4.63 9.11,5.2 9.21,5.75C11.31,4.95 13.6,4.5 16,4.5Z"; -var mdiVolumeHigh = "M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z"; -var mdiVolumeLow = "M7,9V15H11L16,20V4L11,9H7Z"; -var mdiVolumeMedium = "M5,9V15H9L14,20V4L9,9M18.5,12C18.5,10.23 17.5,8.71 16,7.97V16C17.5,15.29 18.5,13.76 18.5,12Z"; -var mdiVolumeMinus = "M3,9H7L12,4V20L7,15H3V9M14,11H22V13H14V11Z"; -var mdiVolumeMute = "M3,9H7L12,4V20L7,15H3V9M16.59,12L14,9.41L15.41,8L18,10.59L20.59,8L22,9.41L19.41,12L22,14.59L20.59,16L18,13.41L15.41,16L14,14.59L16.59,12Z"; -var mdiVolumeOff = "M12,4L9.91,6.09L12,8.18M4.27,3L3,4.27L7.73,9H3V15H7L12,20V13.27L16.25,17.53C15.58,18.04 14.83,18.46 14,18.7V20.77C15.38,20.45 16.63,19.82 17.68,18.96L19.73,21L21,19.73L12,10.73M19,12C19,12.94 18.8,13.82 18.46,14.64L19.97,16.15C20.62,14.91 21,13.5 21,12C21,7.72 18,4.14 14,3.23V5.29C16.89,6.15 19,8.83 19,12M16.5,12C16.5,10.23 15.5,8.71 14,7.97V10.18L16.45,12.63C16.5,12.43 16.5,12.21 16.5,12Z"; -var mdiVolumePlus = "M3,9H7L12,4V20L7,15H3V9M14,11H17V8H19V11H22V13H19V16H17V13H14V11Z"; -var mdiVolumeSource = "M3 9V15H7L12 20V4L7 9H3M16 15H14V9H16V15M20 19H18V5H20V19Z"; -var mdiVolumeVariantOff = "M5.64,3.64L21.36,19.36L19.95,20.78L16,16.83V20L11,15H7V9H8.17L4.22,5.05L5.64,3.64M16,4V11.17L12.41,7.58L16,4Z"; -var mdiVolumeVibrate = "M4 9V15H8L13 20V4L8 9H4M16.55 2.47L15.5 3.53L17.93 6L15 9L17.93 12L15 15L17.93 18L15.5 20.47L16.55 21.53L20 18L17.07 15L20 12L17.07 9L20 6L16.55 2.47Z"; -var mdiVote = "M18,13H17.32L15.32,15H17.23L19,17H5L6.78,15H8.83L6.83,13H6L3,16V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V16L18,13M17,7.95L12.05,12.9L8.5,9.36L13.46,4.41L17,7.95M12.76,2.29L6.39,8.66C6,9.05 6,9.68 6.39,10.07L11.34,15C11.73,15.41 12.36,15.41 12.75,15L19.11,8.66C19.5,8.27 19.5,7.64 19.11,7.25L14.16,2.3C13.78,1.9 13.15,1.9 12.76,2.29Z"; -var mdiVoteOutline = "M18,13L21,16V20C21,21.11 20.1,22 19,22H5C3.89,22 3,21.1 3,20V16L6,13H6.83L8.83,15H6.78L5,17H19L17.23,15H15.32L17.32,13H18M19,20V19H5V20H19M11.34,15L6.39,10.07C6,9.68 6,9.05 6.39,8.66L12.76,2.29C13.15,1.9 13.78,1.9 14.16,2.3L19.11,7.25C19.5,7.64 19.5,8.27 19.11,8.66L12.75,15C12.36,15.41 11.73,15.41 11.34,15M13.46,4.41L8.5,9.36L12.05,12.9L17,7.95L13.46,4.41Z"; -var mdiVpn = "M9,5H15L12,8L9,5M10.5,14.66C10.2,15 10,15.5 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.45 13.78,14.95 13.41,14.59L14.83,13.17C15.55,13.9 16,14.9 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16C8,14.93 8.42,13.96 9.1,13.25L9.09,13.24L16.17,6.17V6.17C16.89,5.45 17.89,5 19,5A4,4 0 0,1 23,9A4,4 0 0,1 19,13C17.9,13 16.9,12.55 16.17,11.83L17.59,10.41C17.95,10.78 18.45,11 19,11A2,2 0 0,0 21,9A2,2 0 0,0 19,7C18.45,7 17.95,7.22 17.59,7.59L10.5,14.66M6.41,7.59C6.05,7.22 5.55,7 5,7A2,2 0 0,0 3,9A2,2 0 0,0 5,11C5.55,11 6.05,10.78 6.41,10.41L7.83,11.83C7.1,12.55 6.1,13 5,13A4,4 0 0,1 1,9A4,4 0 0,1 5,5C6.11,5 7.11,5.45 7.83,6.17V6.17L10.59,8.93L9.17,10.35L6.41,7.59Z"; -var mdiVuejs = "M2,3H5.5L12,15L18.5,3H22L12,21L2,3M6.5,3H9.5L12,7.58L14.5,3H17.5L12,13.08L6.5,3Z"; -var mdiVuetify = "M12,11.64L7.92,2H16.08L12,11.64M12,21.95L3.27,4.91H7.84L12,14.47L16.16,4.91H20.73L12,21.95Z"; -var mdiWalk = "M14.12,10H19V8.2H15.38L13.38,4.87C13.08,4.37 12.54,4.03 11.92,4.03C11.74,4.03 11.58,4.06 11.42,4.11L6,5.8V11H7.8V7.33L9.91,6.67L6,22H7.8L10.67,13.89L13,17V22H14.8V15.59L12.31,11.05L13.04,8.18M14,3.8C15,3.8 15.8,3 15.8,2C15.8,1 15,0.2 14,0.2C13,0.2 12.2,1 12.2,2C12.2,3 13,3.8 14,3.8Z"; -var mdiWall = "M3,16H12V21H3V16M2,10H8V15H2V10M9,10H15V15H9V10M16,10H22V15H16V10M13,16H21V21H13V16M3,4H11V9H3V4M12,4H21V9H12V4Z"; -var mdiWallSconce = "M11,4L7,13H19L15,4H11M4,14V22H6V19H14V14H12V17H6V14H4Z"; -var mdiWallSconceFlat = "M5,5V11H19V5H5M5.27,13.32L3.5,15.09L4.91,16.5L6.68,14.73L5.27,13.32M18.73,13.32L17.32,14.73L19.09,16.5L20.5,15.09L18.73,13.32M11,16V19H13V16H11Z"; -var mdiWallSconceFlatVariant = "M19 19V13H5V19H19M18.73 10.68L20.5 8.91L19.09 7.5L17.32 9.27L18.73 10.68M5.27 10.68L6.68 9.27L4.91 7.5L3.5 8.91L5.27 10.68M13 8V5H11V8H13Z"; -var mdiWallSconceRound = "M13 19V16H11V19H13M19.09 16.5L20.5 15.09L18.73 13.32L17.32 14.73L19.09 16.5M4.91 16.5L6.68 14.73L5.27 13.32L3.5 15.09L4.91 16.5M20 12C20 9.14 18.5 6.5 16 5.07S10.5 3.64 8 5.07 4 9.14 4 12H20Z"; -var mdiWallSconceRoundVariant = "M11 5V8H13V5H11M4.91 7.5L3.5 8.91L5.27 10.68L6.68 9.27L4.91 7.5M19.09 7.5L17.32 9.27L18.73 10.68L20.5 8.91L19.09 7.5M4 12C4 14.86 5.5 17.5 8 18.93S13.5 20.36 16 18.93 20 14.86 20 12H4Z"; -var mdiWallet = "M21,18V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V6H12C10.89,6 10,6.9 10,8V16A2,2 0 0,0 12,18M12,16H22V8H12M16,13.5A1.5,1.5 0 0,1 14.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 16,13.5Z"; -var mdiWalletGiftcard = "M20,14H4V8H9.08L7,10.83L8.62,12L11,8.76L12,7.4L13,8.76L15.38,12L17,10.83L14.92,8H20M20,19H4V17H20M9,4A1,1 0 0,1 10,5A1,1 0 0,1 9,6A1,1 0 0,1 8,5A1,1 0 0,1 9,4M15,4A1,1 0 0,1 16,5A1,1 0 0,1 15,6A1,1 0 0,1 14,5A1,1 0 0,1 15,4M20,6H17.82C17.93,5.69 18,5.35 18,5A3,3 0 0,0 15,2C13.95,2 13.04,2.54 12.5,3.35L12,4L11.5,3.34C10.96,2.54 10.05,2 9,2A3,3 0 0,0 6,5C6,5.35 6.07,5.69 6.18,6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z"; -var mdiWalletMembership = "M20,10H4V4H20M20,15H4V13H20M20,2H4C2.89,2 2,2.89 2,4V15C2,16.11 2.89,17 4,17H8V22L12,20L16,22V17H20C21.11,17 22,16.11 22,15V4C22,2.89 21.11,2 20,2Z"; -var mdiWalletOutline = "M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V16.72C21.59,16.37 22,15.74 22,15V9C22,8.26 21.59,7.63 21,7.28V5A2,2 0 0,0 19,3H5M5,5H19V7H13A2,2 0 0,0 11,9V15A2,2 0 0,0 13,17H19V19H5V5M13,9H20V15H13V9M16,10.5A1.5,1.5 0 0,0 14.5,12A1.5,1.5 0 0,0 16,13.5A1.5,1.5 0 0,0 17.5,12A1.5,1.5 0 0,0 16,10.5Z"; -var mdiWalletPlus = "M3 0V3H0V5H3V8H5V5H8V3H5V0H3M9 3V6H6V9H3V19C3 20.1 3.89 21 5 21H19C20.11 21 21 20.11 21 19V18H12C10.9 18 10 17.11 10 16V8C10 6.9 10.89 6 12 6H21V5C21 3.9 20.11 3 19 3H9M12 8V16H22V8H12M16 10.5C16.83 10.5 17.5 11.17 17.5 12C17.5 12.83 16.83 13.5 16 13.5C15.17 13.5 14.5 12.83 14.5 12C14.5 11.17 15.17 10.5 16 10.5Z"; -var mdiWalletPlusOutline = "M3 0V3H0V5H3V8H5V5H8V3H5V0H3M10 3V5H19V7H13C11.9 7 11 7.9 11 9V15C11 16.1 11.9 17 13 17H19V19H5V10H3V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V16.72C21.59 16.37 22 15.74 22 15V9C22 8.26 21.59 7.63 21 7.28V5C21 3.9 20.1 3 19 3H10M13 9H20V15H13V9M16 10.5A1.5 1.5 0 0 0 14.5 12A1.5 1.5 0 0 0 16 13.5A1.5 1.5 0 0 0 17.5 12A1.5 1.5 0 0 0 16 10.5Z"; -var mdiWalletTravel = "M20,14H4V8H7V10H9V8H15V10H17V8H20M20,19H4V17H20M9,4H15V6H9M20,6H17V4C17,2.89 16.11,2 15,2H9C7.89,2 7,2.89 7,4V6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z"; -var mdiWallpaper = "M4,4H11V2H4A2,2 0 0,0 2,4V11H4V4M10,13L6,18H18L15,14L12.97,16.71L10,13M17,8.5A1.5,1.5 0 0,0 15.5,7A1.5,1.5 0 0,0 14,8.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5M20,2H13V4H20V11H22V4A2,2 0 0,0 20,2M20,20H13V22H20A2,2 0 0,0 22,20V13H20V20M4,13H2V20A2,2 0 0,0 4,22H11V20H4V13Z"; -var mdiWan = "M12,2A8,8 0 0,0 4,10C4,14.03 7,17.42 11,17.93V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V17.93C17,17.43 20,14.03 20,10A8,8 0 0,0 12,2M12,4C12,4 12.74,5.28 13.26,7H10.74C11.26,5.28 12,4 12,4M9.77,4.43C9.5,4.93 9.09,5.84 8.74,7H6.81C7.5,5.84 8.5,4.93 9.77,4.43M14.23,4.44C15.5,4.94 16.5,5.84 17.19,7H15.26C14.91,5.84 14.5,4.93 14.23,4.44M6.09,9H8.32C8.28,9.33 8.25,9.66 8.25,10C8.25,10.34 8.28,10.67 8.32,11H6.09C6.03,10.67 6,10.34 6,10C6,9.66 6.03,9.33 6.09,9M10.32,9H13.68C13.72,9.33 13.75,9.66 13.75,10C13.75,10.34 13.72,10.67 13.68,11H10.32C10.28,10.67 10.25,10.34 10.25,10C10.25,9.66 10.28,9.33 10.32,9M15.68,9H17.91C17.97,9.33 18,9.66 18,10C18,10.34 17.97,10.67 17.91,11H15.68C15.72,10.67 15.75,10.34 15.75,10C15.75,9.66 15.72,9.33 15.68,9M6.81,13H8.74C9.09,14.16 9.5,15.07 9.77,15.56C8.5,15.06 7.5,14.16 6.81,13M10.74,13H13.26C12.74,14.72 12,16 12,16C12,16 11.26,14.72 10.74,13M15.26,13H17.19C16.5,14.16 15.5,15.07 14.23,15.57C14.5,15.07 14.91,14.16 15.26,13Z"; -var mdiWardrobe = "M4 4V19C4 20.1 4.9 21 6 21V22H8V21H11.5V2H6C4.9 2 4 2.9 4 4M8 10H10V13H8V10M18 2H12.5V21H16V22H18V21C19.1 21 20 20.1 20 19V4C20 2.9 19.1 2 18 2M16 13H14V10H16V13Z"; -var mdiWardrobeOutline = "M6 2C4.89 2 4 2.9 4 4V19C4 20.11 4.89 21 6 21V22H8V21H16V22H18V21C19.11 21 20 20.11 20 19V4C20 2.9 19.11 2 18 2H6M6 4H11V19H6V4M13 4H18V19H13V4M8 10V13H10V10H8M14 10V13H16V10H14Z"; -var mdiWarehouse = "M6 19H8V21H6V19M12 3L2 8V21H4V13H20V21H22V8L12 3M8 11H4V9H8V11M14 11H10V9H14V11M20 11H16V9H20V11M6 15H8V17H6V15M10 15H12V17H10V15M10 19H12V21H10V19M14 19H16V21H14V19Z"; -var mdiWashingMachine = "M14.83,11.17C16.39,12.73 16.39,15.27 14.83,16.83C13.27,18.39 10.73,18.39 9.17,16.83L14.83,11.17M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M10,4A1,1 0 0,0 9,5A1,1 0 0,0 10,6A1,1 0 0,0 11,5A1,1 0 0,0 10,4M12,8A6,6 0 0,0 6,14A6,6 0 0,0 12,20A6,6 0 0,0 18,14A6,6 0 0,0 12,8Z"; -var mdiWashingMachineAlert = "M12.83 11.17C14.39 12.73 14.39 15.27 12.83 16.83S8.73 18.39 7.17 16.83L12.83 11.17M4 2H16C17.11 2 18 2.9 18 4V20C18 21.11 17.11 22 16 22H4C2.9 22 2 21.11 2 20V4C2 2.9 2.9 2 4 2M5 4C4.45 4 4 4.45 4 5S4.45 6 5 6 6 5.55 6 5 5.55 4 5 4M8 4C7.45 4 7 4.45 7 5S7.45 6 8 6 9 5.55 9 5 8.55 4 8 4M10 8C6.69 8 4 10.69 4 14S6.69 20 10 20 16 17.31 16 14 13.31 8 10 8M20 15H22V17H20V15M20 7H22V13H20V7Z"; -var mdiWashingMachineOff = "M22.11 21.46L2.39 1.73L1.11 3L4 5.89V20C4 21.11 4.89 22 6 22H18C18.58 22 19.1 21.75 19.46 21.35L20.84 22.73L22.11 21.46M12 20C8.69 20 6 17.31 6 14C6 12.32 6.7 10.8 7.82 9.71L12.06 13.95L9.17 16.83C10.73 18.39 13.27 18.39 14.83 16.83C14.85 16.81 14.86 16.79 14.88 16.77L16.29 18.18C15.2 19.3 13.69 20 12 20M11.25 8.05C11.5 8 11.75 8 12 8C15.31 8 18 10.69 18 14C18 14.25 18 14.5 17.95 14.75L20 16.8V4C20 2.9 19.11 2 18 2H6C5.76 2 5.54 2.05 5.33 2.13L11.25 8.05M10 4C10.55 4 11 4.45 11 5S10.55 6 10 6 9 5.55 9 5 9.45 4 10 4Z"; -var mdiWatch = "M6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12M20,12C20,9.45 18.81,7.19 16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.45 4,12C4,14.54 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27C18.81,16.81 20,14.54 20,12Z"; -var mdiWatchExport = "M14,11H19L16.5,8.5L17.92,7.08L22.84,12L17.92,16.92L16.5,15.5L19,13H14V11M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.4,6 14.69,6.5 15.71,7.29L17.13,5.87L16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.46 4,12C4,14.55 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27L17.13,18.13L15.71,16.71C14.69,17.5 13.4,18 12,18Z"; -var mdiWatchExportVariant = "M14,11H19L16.5,8.5L17.92,7.08L22.84,12L17.92,16.92L16.5,15.5L19,13H14V11M8,0H16L16.83,5H17C17.28,5 17.54,5.06 17.78,5.16L15.94,7H7V17H15.94L17.78,18.84C17.54,18.94 17.28,19 17,19H16.83L16,24H8L7.17,19H7A2,2 0 0,1 5,17V7C5,5.89 5.9,5 7,5H7.17L8,0Z"; -var mdiWatchImport = "M2,11H7L4.5,8.5L5.92,7.08L10.84,12L5.92,16.92L4.5,15.5L7,13H2V11M12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6C10.6,6 9.31,6.5 8.29,7.29L6.87,5.87L7.05,5.73L8,0H16L16.95,5.73C18.81,7.19 20,9.45 20,12C20,14.54 18.81,16.81 16.95,18.27L16,24H8L7.05,18.27L6.87,18.13L8.29,16.71C9.31,17.5 10.6,18 12,18Z"; -var mdiWatchImportVariant = "M1,11H6L3.5,8.5L4.92,7.08L9.84,12L4.92,16.92L3.5,15.5L6,13H1V11M8,0H16L16.83,5H17A2,2 0 0,1 19,7V17C19,18.11 18.1,19 17,19H16.83L16,24H8L7.17,19H7C6.46,19 6,18.79 5.62,18.44L7.06,17H17V7H7.06L5.62,5.56C6,5.21 6.46,5 7,5H7.17L8,0Z"; -var mdiWatchVariant = "M8,0L7.17,5H7A2,2 0 0,0 5,7V17C5,18.11 5.9,19 7,19H7.17L8,24H16L16.83,19H17A2,2 0 0,0 19,17V7C19,5.89 18.1,5 17,5H16.83L16,0H8M7,7H17V17H7V7Z"; -var mdiWatchVibrate = "M3,17V7H5V17H3M19,17V7H21V17H19M22,9H24V15H22V9M0,15V9H2V15H0M17.96,11.97C17.96,13.87 17.07,15.57 15.68,16.67L14.97,20.95H9L8.27,16.67C6.88,15.57 6,13.87 6,11.97C6,10.07 6.88,8.37 8.27,7.28L9,3H14.97L15.68,7.28C17.07,8.37 17.96,10.07 17.96,11.97M7.5,11.97C7.5,14.45 9.5,16.46 11.97,16.46A4.5,4.5 0 0,0 16.46,11.97C16.46,9.5 14.45,7.5 11.97,7.5A4.47,4.47 0 0,0 7.5,11.97Z"; -var mdiWatchVibrateOff = "M0,9H2V15H0V9M12,7.5C14.47,7.5 16.47,9.53 16.46,12C16.45,12.38 16.4,12.76 16.3,13.13L17.5,14.31C17.81,13.58 18,12.8 18,12C18,10.17 17.16,8.44 15.72,7.31L15,3H9L8.59,5.39L10.86,7.66C11.23,7.55 11.61,7.5 12,7.5M21,17V7H19V15.8L20.2,17H21M16.5,15.86L22.11,21.46L20.84,22.73L15.55,17.44L15,21H9L8.27,16.72C5.85,14.82 5.27,11.4 6.91,8.8L1.11,3L2.39,1.73L8.09,7.44L9.17,8.5L15.44,14.79L16.5,15.86M14.05,15.94L8.05,9.94C7.7,10.57 7.5,11.28 7.5,12C7.5,14.47 9.53,16.47 12,16.46C12.72,16.46 13.42,16.28 14.05,15.94M22,9V15H24V9H22M3,17H5V7H3V17Z"; -var mdiWater = "M12,20A6,6 0 0,1 6,14C6,10 12,3.25 12,3.25C12,3.25 18,10 18,14A6,6 0 0,1 12,20Z"; -var mdiWaterAlert = "M10 3.25C10 3.25 16 10 16 14C16 17.31 13.31 20 10 20S4 17.31 4 14C4 10 10 3.25 10 3.25M20 7V13H18V7H20M18 17H20V15H18V17Z"; -var mdiWaterAlertOutline = "M10 3.25C10 3.25 4 10 4 14C4 17.31 6.69 20 10 20S16 17.31 16 14C16 10 10 3.25 10 3.25M10 18C7.79 18 6 16.21 6 14C6 12.23 8 8.96 10 6.39C12 8.95 14 12.23 14 14C14 16.21 12.21 18 10 18M20 7V13H18V7H20M18 17H20V15H18V17Z"; -var mdiWaterBoiler = "M8 2C6.89 2 6 2.89 6 4V16C6 17.11 6.89 18 8 18H9V20H6V22H9C10.11 22 11 21.11 11 20V18H13V20C13 21.11 13.89 22 15 22H18V20H15V18H16C17.11 18 18 17.11 18 16V4C18 2.89 17.11 2 16 2H8M12 4.97A2 2 0 0 1 14 6.97A2 2 0 0 1 12 8.97A2 2 0 0 1 10 6.97A2 2 0 0 1 12 4.97M10 14.5H14V16H10V14.5Z"; -var mdiWaterBoilerAlert = "M6 2C4.89 2 4 2.89 4 4V16C4 17.11 4.89 18 6 18H7V20H4V22H7C8.11 22 9 21.11 9 20V18H11V20C11 21.11 11.89 22 13 22H16V20H13V18H14C15.11 18 16 17.11 16 16V4C16 2.89 15.11 2 14 2H6M10 4.97C11.11 4.97 12 5.87 12 6.97S11.11 8.97 10 8.97C8.9 8.97 8 8.07 8 6.97C8 5.87 8.9 4.97 10 4.97M8 14.5H12V16H8V14.5M18 15H20V17H18V15M18 7H20V13H18V7Z"; -var mdiWaterBoilerOff = "M10 6.82L6.25 3.05C6.59 2.42 7.24 2 8 2H16C17.11 2 18 2.89 18 4V14.8L12.16 8.96C13.19 8.87 14 8 14 6.97C14 5.87 13.11 4.97 12 4.97C10.95 4.97 10.1 5.78 10 6.82M15 18V20H18V22H15C13.89 22 13 21.11 13 20V18H11V20C11 21.11 10.11 22 9 22H6V20H9V18H8C6.89 18 6 17.11 6 16V7.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73L16.1 18C16.06 18 16.03 18 16 18H15M14 16V15.89L12.61 14.5H10V16H14Z"; -var mdiWaterCheck = "M21.75 16.25L17 21L14.25 18L15.41 16.84L17 18.43L20.59 14.84L21.75 16.25M17.62 12C16.31 8.1 12 3.25 12 3.25S6 10 6 14C6 17.31 8.69 20 12 20H12.34C12.12 19.36 12 18.7 12 18C12 14.82 14.5 12.22 17.62 12Z"; -var mdiWaterCheckOutline = "M21.75 16.25L17 21L14.25 18L15.41 16.84L17 18.43L20.59 14.84L21.75 16.25M8 14C8 12.23 10 8.96 12 6.39C13.5 8.33 15 10.67 15.67 12.47C16.27 12.21 16.93 12.06 17.62 12C16.31 8.1 12 3.25 12 3.25S6 10 6 14C6 17.31 8.69 20 12 20C12.12 20 12.23 20 12.34 20C12.12 19.36 12 18.7 12 18C9.79 18 8 16.21 8 14Z"; -var mdiWaterMinus = "M22 17V19H14V17H22M17.62 12C16.31 8.1 12 3.25 12 3.25S6 10 6 14C6 17.31 8.69 20 12 20C12.12 20 12.23 20 12.34 20C12.12 19.36 12 18.7 12 18C12 14.82 14.5 12.22 17.62 12Z"; -var mdiWaterMinusOutline = "M22 17V19H14V17H22M8 14C8 12.23 10 8.96 12 6.39C13.5 8.33 15 10.67 15.67 12.47C16.27 12.21 16.93 12.06 17.62 12C16.31 8.1 12 3.25 12 3.25S6 10 6 14C6 17.31 8.69 20 12 20C12.12 20 12.23 20 12.34 20C12.12 19.36 12 18.7 12 18C9.79 18 8 16.21 8 14Z"; -var mdiWaterOff = "M20.84 22.73L16.29 18.18C15.2 19.3 13.69 20 12 20C8.69 20 6 17.31 6 14C6 12.67 6.67 11.03 7.55 9.44L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M18 14C18 10 12 3.25 12 3.25S10.84 4.55 9.55 6.35L17.95 14.75C18 14.5 18 14.25 18 14Z"; -var mdiWaterOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L7.65 9.54C6.74 11.03 6 12.65 6 14.23C6 17.54 8.69 20.23 12 20.23C13.74 20.23 15.3 19.5 16.4 18.29L20.84 22.73L22.11 21.46M12 18.23C9.78 18.23 8 16.45 8 14.23C8 13.5 8.5 12.27 9.14 11.03L15 16.88C14.26 17.71 13.2 18.23 12 18.23M11.14 7.94L9.71 6.5C10.57 5.38 11.25 4.61 11.25 4.61L12 3.77L12.75 4.61C12.75 4.61 14.03 6.06 15.32 7.94S18 12.07 18 14.23C18 14.41 18 14.59 17.97 14.77L15.46 12.26C15 11.23 14.37 10.07 13.68 9.07C12.84 7.85 12.44 7.42 12 6.9C11.73 7.21 11.5 7.5 11.14 7.94Z"; -var mdiWaterOutline = "M12,3.77L11.25,4.61C11.25,4.61 9.97,6.06 8.68,7.94C7.39,9.82 6,12.07 6,14.23A6,6 0 0,0 12,20.23A6,6 0 0,0 18,14.23C18,12.07 16.61,9.82 15.32,7.94C14.03,6.06 12.75,4.61 12.75,4.61L12,3.77M12,6.9C12.44,7.42 12.84,7.85 13.68,9.07C14.89,10.83 16,13.07 16,14.23C16,16.45 14.22,18.23 12,18.23C9.78,18.23 8,16.45 8,14.23C8,13.07 9.11,10.83 10.32,9.07C11.16,7.85 11.56,7.42 12,6.9Z"; -var mdiWaterPercent = "M12,3.25C12,3.25 6,10 6,14C6,17.32 8.69,20 12,20A6,6 0 0,0 18,14C18,10 12,3.25 12,3.25M14.47,9.97L15.53,11.03L9.53,17.03L8.47,15.97M9.75,10A1.25,1.25 0 0,1 11,11.25A1.25,1.25 0 0,1 9.75,12.5A1.25,1.25 0 0,1 8.5,11.25A1.25,1.25 0 0,1 9.75,10M14.25,14.5A1.25,1.25 0 0,1 15.5,15.75A1.25,1.25 0 0,1 14.25,17A1.25,1.25 0 0,1 13,15.75A1.25,1.25 0 0,1 14.25,14.5Z"; -var mdiWaterPercentAlert = "M20 7V13H18V7H20M18 17H20V15H18V17M10 3.25C10 3.25 4 10 4 14C4 17.32 6.69 20 10 20S16 17.31 16 14C16 10 10 3.25 10 3.25M7.75 10C8.44 10 9 10.56 9 11.25S8.44 12.5 7.75 12.5 6.5 11.94 6.5 11.25 7.06 10 7.75 10M12.25 17C11.56 17 11 16.44 11 15.75S11.56 14.5 12.25 14.5 13.5 15.06 13.5 15.75 12.94 17 12.25 17M7.53 17.03L6.47 15.97L12.47 9.97L13.53 11.03L7.53 17.03Z"; -var mdiWaterPlus = "M12 18C12 18.7 12.12 19.36 12.34 20C12.23 20 12.12 20 12 20C8.69 20 6 17.31 6 14C6 10 12 3.25 12 3.25S16.31 8.1 17.62 12C14.5 12.22 12 14.82 12 18M19 17V14H17V17H14V19H17V22H19V19H22V17H19Z"; -var mdiWaterPlusOutline = "M12 18C12 18.7 12.12 19.36 12.34 20C12.23 20 12.12 20 12 20C8.69 20 6 17.31 6 14C6 10 12 3.25 12 3.25S16.31 8.1 17.62 12C16.93 12.06 16.28 12.22 15.67 12.47C15 10.68 13.5 8.33 12 6.39C10 8.96 8 12.23 8 14C8 16.21 9.79 18 12 18M19 17V14H17V17H14V19H17V22H19V19H22V17H19Z"; -var mdiWaterPolo = "M20 16H22V18H20C18.6 18 17.2 17.6 16 17C13.5 18.3 10.5 18.3 8 17C6.8 17.6 5.4 18 4 18H2V16H4C5.4 16 6.8 15.5 8 14.7C10.4 16.4 13.6 16.4 16 14.7C17.2 15.5 18.6 16 20 16M13 10.6C13.6 10.3 14.3 10 15 9.9V10.2C15.3 11.2 15.3 12.1 15.2 13.1C14.3 13.6 13.2 13.9 12.2 13.9C12.7 12.9 13 11.7 13 10.6M12.9 3.6C11.5 4 10.3 4.7 9.3 5.7C8.9 4.7 8.7 3.7 8.7 2.7C10.9 1.7 13.4 1.8 15.6 2.9C15.9 3 16.2 3.1 16.4 3.3C15.2 3.2 14 3.3 12.9 3.6M6.8 13.3C6.2 13.6 5.6 13.8 5 13.9C4.3 12.6 4 11.2 4 9.8C4.5 10.8 5.2 11.8 6 12.6C6.3 12.8 6.5 13.1 6.8 13.3M19 13.9C18.4 13.8 17.8 13.6 17.3 13.4C17.5 12.2 17.4 11 17.1 9.8C18.2 9.9 19.2 10.2 20.1 10.8C20 11.8 19.7 12.7 19.2 13.6L19 13.9M7.4 11.2C6.2 10.1 5.5 8.5 5.2 6.9L5.1 6C5.6 5.2 6.1 4.6 6.8 4C6.9 5.4 7.4 6.7 8.2 7.8C8.9 8.9 9.9 9.9 11 10.5C11 11.3 10.8 12.1 10.5 12.9C9.3 12.6 8.3 12 7.4 11.2M13.5 5.5C15 5.1 16.7 5.2 18.2 5.7L19 6.1C19.4 6.8 19.6 7.6 19.8 8.4C17.3 7.3 14.4 7.5 12 8.8C11.3 8.5 10.8 8 10.3 7.4L10.4 7.3C11.3 6.5 12.3 5.8 13.5 5.5M16 18.7C17.2 19.5 18.6 20 20 20H22V22H20C18.6 22 17.2 21.6 16 21C13.5 22.3 10.5 22.3 8 21C6.8 21.6 5.4 22 4 22H2V20H4C5.4 20 6.8 19.5 8 18.7C10.4 20.4 13.6 20.4 16 18.7Z"; -var mdiWaterPump = "M19,14.5C19,14.5 21,16.67 21,18A2,2 0 0,1 19,20A2,2 0 0,1 17,18C17,16.67 19,14.5 19,14.5M5,18V9A2,2 0 0,1 3,7A2,2 0 0,1 5,5V4A2,2 0 0,1 7,2H9A2,2 0 0,1 11,4V5H19A2,2 0 0,1 21,7V9L21,11A1,1 0 0,1 22,12A1,1 0 0,1 21,13H17A1,1 0 0,1 16,12A1,1 0 0,1 17,11V9H11V18H12A2,2 0 0,1 14,20V22H2V20A2,2 0 0,1 4,18H5Z"; -var mdiWaterPumpOff = "M5.7 2.5A2 2 0 0 1 7 2H9A2 2 0 0 1 11 4V5H19A2 2 0 0 1 21 7V11A1 1 0 0 1 21 13H17A1 1 0 0 1 17 11V9H12.2M20.84 22.73L22.11 21.46L11 10.34L2.39 1.73L1.11 3L3.65 5.54A2 2 0 0 0 5 9V18H4A2 2 0 0 0 2 20V22H14V20A2 2 0 0 0 12 18H11V12.89Z"; -var mdiWaterRemove = "M12 18C12 18.7 12.12 19.36 12.34 20C12.23 20 12.12 20 12 20C8.69 20 6 17.31 6 14C6 10 12 3.25 12 3.25S16.31 8.1 17.62 12C14.5 12.22 12 14.82 12 18M21.54 15.88L20.13 14.47L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.53L18 19.41L20.12 21.53L21.53 20.12L19.41 18L21.54 15.88Z"; -var mdiWaterRemoveOutline = "M12 18C12 18.7 12.12 19.36 12.34 20C12.23 20 12.12 20 12 20C8.69 20 6 17.31 6 14C6 10 12 3.25 12 3.25S16.31 8.1 17.62 12C16.93 12.06 16.28 12.22 15.67 12.47C15 10.68 13.5 8.33 12 6.39C10 8.96 8 12.23 8 14C8 16.21 9.79 18 12 18M21.54 15.88L20.13 14.47L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.53L18 19.41L20.12 21.53L21.53 20.12L19.41 18L21.54 15.88Z"; -var mdiWaterWell = "M22 16H2V18H4V22H20V18H22V16M10.44 15C10.19 15 10 14.81 9.95 14.56L9.57 11.56C9.57 11.54 9.57 11.5 9.57 11.5C9.57 11.22 9.79 11 10.07 11H13.93C13.95 11 13.97 11 14 11C14.27 11.04 14.46 11.29 14.43 11.56L14.05 14.56C14 14.81 13.81 15 13.56 15H10.44M19 2L21.56 6.68C21.6 6.78 21.61 6.89 21.61 7C21.61 7.56 21.16 8 20.61 8H19V15H17V8H13V10H11V8H7V15H5V8H3.62C3.46 8 3.31 7.96 3.16 7.89C2.67 7.64 2.47 7.04 2.72 6.55L5 2H19Z"; -var mdiWaterWellOutline = "M3.62 8H5V15H7V8H11V10H13V8H17V15H19V8H20.61C21.16 8 21.61 7.56 21.61 7C21.61 6.89 21.6 6.78 21.56 6.68L19 2H5L2.72 6.55C2.47 7.04 2.67 7.64 3.16 7.89C3.31 7.96 3.46 8 3.62 8M6.24 4H17.76L18.76 6H5.24L6.24 4M2 16V18H4V22H20V18H22V16H2M18 20H6V18H18V20M13.93 11C14.21 11 14.43 11.22 14.43 11.5C14.43 11.5 14.43 11.54 14.43 11.56L14.05 14.56C14 14.81 13.81 15 13.56 15H10.44C10.19 15 10 14.81 9.95 14.56L9.57 11.56C9.54 11.29 9.73 11.04 10 11C10.03 11 10.05 11 10.07 11H13.93Z"; -var mdiWateringCan = "M18.5 7.47C17.76 8.2 17.57 9.25 17.92 10.15L15 13.07V11C15 10.45 14.55 10 14 10H12.97C13 9.83 13 9.67 13 9.5C13 6.46 10.54 4 7.5 4S2 6.46 2 9.5C2 11.21 2.78 12.73 4 13.74V20C4 20.55 4.45 21 5 21H14C14.55 21 15 20.55 15 20V15.89L19.33 11.56C20.23 11.91 21.28 11.73 22 11L18.5 7.47M4.05 10C4.03 9.83 4 9.67 4 9.5C4 7.57 5.57 6 7.5 6S11 7.57 11 9.5C11 9.67 10.97 9.83 10.95 10H4.05Z"; -var mdiWateringCanOutline = "M18.5 7.47C17.76 8.2 17.57 9.25 17.92 10.15L15 13.07V11C15 10.45 14.55 10 14 10H12.97C13 9.83 13 9.67 13 9.5C13 6.46 10.54 4 7.5 4S2 6.46 2 9.5C2 11.21 2.78 12.73 4 13.74V20C4 20.55 4.45 21 5 21H14C14.55 21 15 20.55 15 20V15.89L19.33 11.56C20.23 11.91 21.28 11.73 22 11L18.5 7.47M4.05 10C4.03 9.83 4 9.67 4 9.5C4 7.57 5.57 6 7.5 6S11 7.57 11 9.5C11 9.67 10.97 9.83 10.95 10M13 19H6V12H13V19Z"; -var mdiWatermark = "M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H12V13H21V19Z"; -var mdiWave = "M20,12C18.61,12 17.22,11.53 16,10.67C13.56,12.38 10.44,12.38 8,10.67C6.78,11.53 5.39,12 4,12H2V14H4C5.37,14 6.74,13.65 8,13C10.5,14.3 13.5,14.3 16,13C17.26,13.65 18.62,14 20,14H22V12"; -var mdiWaveform = "M22 12L20 13L19 14L18 13L17 16L16 13L15 21L14 13L13 15L12 13L11 17L10 13L9 22L8 13L7 19L6 13L5 14L4 13L2 12L4 11L5 10L6 11L7 5L8 11L9 2L10 11L11 7L12 11L13 9L14 11L15 3L16 11L17 8L18 11L19 10L20 11L22 12Z"; -var mdiWaves = "M20,12H22V14H20C18.62,14 17.26,13.65 16,13C13.5,14.3 10.5,14.3 8,13C6.74,13.65 5.37,14 4,14H2V12H4C5.39,12 6.78,11.53 8,10.67C10.44,12.38 13.56,12.38 16,10.67C17.22,11.53 18.61,12 20,12M20,6H22V8H20C18.62,8 17.26,7.65 16,7C13.5,8.3 10.5,8.3 8,7C6.74,7.65 5.37,8 4,8H2V6H4C5.39,6 6.78,5.53 8,4.67C10.44,6.38 13.56,6.38 16,4.67C17.22,5.53 18.61,6 20,6M20,18H22V20H20C18.62,20 17.26,19.65 16,19C13.5,20.3 10.5,20.3 8,19C6.74,19.65 5.37,20 4,20H2V18H4C5.39,18 6.78,17.53 8,16.67C10.44,18.38 13.56,18.38 16,16.67C17.22,17.53 18.61,18 20,18Z"; -var mdiWaze = "M20.54,6.63C21.23,7.57 21.69,8.67 21.89,9.82C22.1,11.07 22,12.34 21.58,13.54C21.18,14.71 20.5,15.76 19.58,16.6C18.91,17.24 18.15,17.77 17.32,18.18C17.73,19.25 17.19,20.45 16.12,20.86C15.88,20.95 15.63,21 15.38,21C14.27,21 13.35,20.11 13.31,19C13.05,19 10.73,19 10.24,19C10.13,20.14 9.11,21 7.97,20.87C6.91,20.77 6.11,19.89 6.09,18.83C6.1,18.64 6.13,18.44 6.19,18.26C4.6,17.73 3.21,16.74 2.19,15.41C1.86,14.97 1.96,14.34 2.42,14C2.6,13.86 2.82,13.78 3.05,13.78C3.77,13.78 4.05,13.53 4.22,13.15C4.46,12.43 4.6,11.68 4.61,10.92C4.64,10.39 4.7,9.87 4.78,9.35C5.13,7.62 6.1,6.07 7.5,5C9.16,3.7 11.19,3 13.29,3C14.72,3 16.13,3.35 17.4,4C18.64,4.62 19.71,5.5 20.54,6.63M16.72,17.31C18.5,16.5 19.9,15.04 20.59,13.21C22.21,8.27 18,4.05 13.29,4.05C12.94,4.05 12.58,4.07 12.23,4.12C9.36,4.5 6.4,6.5 5.81,9.5C5.43,11.5 6,14.79 3.05,14.79C4,16 5.32,16.93 6.81,17.37C7.66,16.61 8.97,16.69 9.74,17.55C9.85,17.67 9.94,17.8 10,17.94C10.59,17.94 13.2,17.94 13.55,17.94C14.07,16.92 15.33,16.5 16.35,17.04C16.5,17.12 16.6,17.21 16.72,17.31M10.97,10.31C10.39,10.34 9.88,9.9 9.85,9.31C9.82,8.73 10.27,8.23 10.85,8.19C11.43,8.16 11.94,8.61 11.97,9.25C12,9.8 11.56,10.27 11,10.29L10.97,10.31M15.66,10.31C15.08,10.34 14.57,9.9 14.54,9.31C14.5,8.73 14.96,8.23 15.54,8.19C16.12,8.16 16.63,8.61 16.66,9.25C16.68,9.8 16.25,10.27 15.66,10.29V10.31M9.71,12.07C9.65,11.79 9.84,11.5 10.12,11.45C10.4,11.4 10.68,11.58 10.74,11.86V11.86C11.09,12.97 12.16,13.69 13.32,13.6C14.46,13.66 15.5,12.96 15.89,11.88C16.03,11.62 16.35,11.5 16.6,11.65C16.78,11.75 16.89,11.92 16.89,12.12C16.7,12.83 16.26,13.45 15.66,13.88C14.97,14.36 14.16,14.63 13.32,14.64H13.21C11.58,14.71 10.11,13.64 9.68,12.06L9.71,12.07Z"; -var mdiWeatherCloudy = "M6,19A5,5 0 0,1 1,14A5,5 0 0,1 6,9C7,6.65 9.3,5 12,5C15.43,5 18.24,7.66 18.5,11.03L19,11A4,4 0 0,1 23,15A4,4 0 0,1 19,19H6M19,13H17V12A5,5 0 0,0 12,7C9.5,7 7.45,8.82 7.06,11.19C6.73,11.07 6.37,11 6,11A3,3 0 0,0 3,14A3,3 0 0,0 6,17H19A2,2 0 0,0 21,15A2,2 0 0,0 19,13Z"; -var mdiWeatherCloudyAlert = "M6,19A5,5 0 0,1 1,14A5,5 0 0,1 6,9C7,6.65 9.3,5 12,5C15.43,5 18.24,7.66 18.5,11.03L19,11A4,4 0 0,1 23,15A4,4 0 0,1 19,19H6M19,13H17V12A5,5 0 0,0 12,7C9.5,7 7.45,8.82 7.06,11.19C6.73,11.07 6.37,11 6,11A3,3 0 0,0 3,14A3,3 0 0,0 6,17H19A2,2 0 0,0 21,15A2,2 0 0,0 19,13M13,12H11V8H13V12M13,16H11V14H13"; -var mdiWeatherCloudyArrowRight = "M6,7L6.69,7.06C7.32,4.72 9.46,3 12,3A5.5,5.5 0 0,1 17.5,8.5L17.42,9.45C17.88,9.16 18.42,9 19,9A3,3 0 0,1 22,12A3,3 0 0,1 19,15H6A4,4 0 0,1 2,11A4,4 0 0,1 6,7M6,9A2,2 0 0,0 4,11A2,2 0 0,0 6,13H19A1,1 0 0,0 20,12A1,1 0 0,0 19,11H15.5V8.5A3.5,3.5 0 0,0 12,5A3.5,3.5 0 0,0 8.5,8.5V9H6M22,19L19,22V20H2V18H19V16L22,19"; -var mdiWeatherFog = "M3,15H13A1,1 0 0,1 14,16A1,1 0 0,1 13,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15M16,15H21A1,1 0 0,1 22,16A1,1 0 0,1 21,17H16A1,1 0 0,1 15,16A1,1 0 0,1 16,15M1,12A5,5 0 0,1 6,7C7,4.65 9.3,3 12,3C15.43,3 18.24,5.66 18.5,9.03L19,9C21.19,9 22.97,10.76 23,13H21A2,2 0 0,0 19,11H17V10A5,5 0 0,0 12,5C9.5,5 7.45,6.82 7.06,9.19C6.73,9.07 6.37,9 6,9A3,3 0 0,0 3,12C3,12.35 3.06,12.69 3.17,13H1.1L1,12M3,19H5A1,1 0 0,1 6,20A1,1 0 0,1 5,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19M8,19H21A1,1 0 0,1 22,20A1,1 0 0,1 21,21H8A1,1 0 0,1 7,20A1,1 0 0,1 8,19Z"; -var mdiWeatherHail = "M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M10,18A2,2 0 0,1 12,20A2,2 0 0,1 10,22A2,2 0 0,1 8,20A2,2 0 0,1 10,18M14.5,16A1.5,1.5 0 0,1 16,17.5A1.5,1.5 0 0,1 14.5,19A1.5,1.5 0 0,1 13,17.5A1.5,1.5 0 0,1 14.5,16M10.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,15A1.5,1.5 0 0,1 9,13.5A1.5,1.5 0 0,1 10.5,12Z"; -var mdiWeatherHazy = "M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64M14,15A1,1 0 0,0 13,14H3A1,1 0 0,0 2,15A1,1 0 0,0 3,16H13A1,1 0 0,0 14,15M22,15A1,1 0 0,0 21,14H17A1,1 0 0,0 16,15A1,1 0 0,0 17,16H21A1,1 0 0,0 22,15M10,19A1,1 0 0,0 11,20H20A1,1 0 0,0 21,19A1,1 0 0,0 20,18H11A1,1 0 0,0 10,19M3,19A1,1 0 0,0 4,20H7A1,1 0 0,0 8,19A1,1 0 0,0 7,18H4A1,1 0 0,0 3,19M12,9A3,3 0 0,1 15,12H17A5,5 0 0,0 12,7A5,5 0 0,0 7,12H9A3,3 0 0,1 12,9Z"; -var mdiWeatherHurricane = "M15,6.79C16.86,7.86 18,9.85 18,12C18,22 6,22 6,22C7.25,21.06 8.38,19.95 9.34,18.71C9.38,18.66 9.41,18.61 9.44,18.55C9.69,18.06 9.5,17.46 9,17.21C7.14,16.14 6,14.15 6,12C6,2 18,2 18,2C16.75,2.94 15.62,4.05 14.66,5.29C14.62,5.34 14.59,5.39 14.56,5.45C14.31,5.94 14.5,6.54 15,6.79M12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14Z"; -var mdiWeatherLightning = "M6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14H7A1,1 0 0,1 8,15A1,1 0 0,1 7,16H6M12,11H15L13,15H15L11.25,22L12,17H9.5L12,11Z"; -var mdiWeatherLightningRainy = "M4.5,13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.44 4,15.6 3.5,15.33V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59M9.5,11H12.5L10.5,15H12.5L8.75,22L9.5,17H7L9.5,11M17.5,18.67C17.5,19.96 16.5,21 15.25,21C14,21 13,19.96 13,18.67C13,17.12 15.25,14.5 15.25,14.5C15.25,14.5 17.5,17.12 17.5,18.67Z"; -var mdiWeatherNight = "M17.75,4.09L15.22,6.03L16.13,9.09L13.5,7.28L10.87,9.09L11.78,6.03L9.25,4.09L12.44,4L13.5,1L14.56,4L17.75,4.09M21.25,11L19.61,12.25L20.2,14.23L18.5,13.06L16.8,14.23L17.39,12.25L15.75,11L17.81,10.95L18.5,9L19.19,10.95L21.25,11M18.97,15.95C19.8,15.87 20.69,17.05 20.16,17.8C19.84,18.25 19.5,18.67 19.08,19.07C15.17,23 8.84,23 4.94,19.07C1.03,15.17 1.03,8.83 4.94,4.93C5.34,4.53 5.76,4.17 6.21,3.85C6.96,3.32 8.14,4.21 8.06,5.04C7.79,7.9 8.75,10.87 10.95,13.06C13.14,15.26 16.1,16.22 18.97,15.95M17.33,17.97C14.5,17.81 11.7,16.64 9.53,14.5C7.36,12.31 6.2,9.5 6.04,6.68C3.23,9.82 3.34,14.64 6.35,17.66C9.37,20.67 14.19,20.78 17.33,17.97Z"; -var mdiWeatherNightPartlyCloudy = "M22,10.28C21.74,10.3 21.5,10.31 21.26,10.31C19.32,10.31 17.39,9.57 15.91,8.09C14.25,6.44 13.5,4.19 13.72,2C13.77,1.53 13.22,1 12.71,1C12.57,1 12.44,1.04 12.32,1.12C12,1.36 11.66,1.64 11.36,1.94C9.05,4.24 8.55,7.66 9.84,10.46C8.31,11.11 7.13,12.43 6.69,14.06L6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22H19A3,3 0 0,0 22,19A3,3 0 0,0 19,16C18.42,16 17.88,16.16 17.42,16.45L17.5,15.5C17.5,15.28 17.5,15.05 17.46,14.83C19.14,14.67 20.77,13.94 22.06,12.64C22.38,12.34 22.64,12 22.88,11.68C23.27,11.13 22.65,10.28 22.04,10.28M19,18A1,1 0 0,1 20,19A1,1 0 0,1 19,20H6A2,2 0 0,1 4,18A2,2 0 0,1 6,16H8.5V15.5C8.5,13.94 9.53,12.64 10.94,12.18C11.1,12.13 11.26,12.09 11.43,12.06C11.61,12.03 11.8,12 12,12C12.23,12 12.45,12.03 12.66,12.07C12.73,12.08 12.8,12.1 12.87,12.13C13,12.16 13.15,12.2 13.28,12.25C13.36,12.28 13.44,12.32 13.5,12.36C13.63,12.41 13.74,12.47 13.84,12.54C13.92,12.59 14,12.64 14.07,12.7C14.17,12.77 14.25,12.84 14.34,12.92C14.41,13 14.5,13.05 14.55,13.12C14.63,13.2 14.69,13.29 14.76,13.37C14.82,13.45 14.89,13.53 14.94,13.62C15,13.71 15.04,13.8 15.09,13.9C15.14,14 15.2,14.08 15.24,14.18C15.41,14.59 15.5,15.03 15.5,15.5V18M16.83,12.86C15.9,11.16 14.08,10 12,10H11.87C11.41,9.19 11.14,8.26 11.14,7.29C11.14,6.31 11.39,5.37 11.86,4.55C12.21,6.41 13.12,8.14 14.5,9.5C15.86,10.88 17.58,11.79 19.45,12.14C18.66,12.6 17.76,12.84 16.83,12.86Z"; -var mdiWeatherPartlyCloudy = "M12.74,5.47C15.1,6.5 16.35,9.03 15.92,11.46C17.19,12.56 18,14.19 18,16V16.17C18.31,16.06 18.65,16 19,16A3,3 0 0,1 22,19A3,3 0 0,1 19,22H6A4,4 0 0,1 2,18A4,4 0 0,1 6,14H6.27C5,12.45 4.6,10.24 5.5,8.26C6.72,5.5 9.97,4.24 12.74,5.47M11.93,7.3C10.16,6.5 8.09,7.31 7.31,9.07C6.85,10.09 6.93,11.22 7.41,12.13C8.5,10.83 10.16,10 12,10C12.7,10 13.38,10.12 14,10.34C13.94,9.06 13.18,7.86 11.93,7.3M13.55,3.64C13,3.4 12.45,3.23 11.88,3.12L14.37,1.82L15.27,4.71C14.76,4.29 14.19,3.93 13.55,3.64M6.09,4.44C5.6,4.79 5.17,5.19 4.8,5.63L4.91,2.82L7.87,3.5C7.25,3.71 6.65,4.03 6.09,4.44M18,9.71C17.91,9.12 17.78,8.55 17.59,8L19.97,9.5L17.92,11.73C18.03,11.08 18.05,10.4 18,9.71M3.04,11.3C3.11,11.9 3.24,12.47 3.43,13L1.06,11.5L3.1,9.28C3,9.93 2.97,10.61 3.04,11.3M19,18H16V16A4,4 0 0,0 12,12A4,4 0 0,0 8,16H6A2,2 0 0,0 4,18A2,2 0 0,0 6,20H19A1,1 0 0,0 20,19A1,1 0 0,0 19,18Z"; -var mdiWeatherPartlyLightning = "M19,15C18.65,15 18.31,15.06 18,15.17V15C18,13.19 17.19,11.56 15.92,10.46C16.35,8.03 15.1,5.5 12.75,4.47C9.97,3.24 6.72,4.5 5.5,7.25C4.6,9.24 5,11.45 6.27,13H6A4,4 0 0,0 2,17A4,4 0 0,0 6,21H7C7,21 8,21 8,20C8,19 7,19 7,19H6A2,2 0 0,1 4,17A2,2 0 0,1 6,15H8A4,4 0 0,1 12,11A4,4 0 0,1 16,15V17H19A1,1 0 0,1 20,18A1,1 0 0,1 19,19H17C17,19 16,19 16,20C16,21 17,21 17,21H19A3,3 0 0,0 22,18A3,3 0 0,0 19,15M12,9C10.16,9 8.5,9.83 7.41,11.13C6.93,10.22 6.85,9.09 7.31,8.07C8.09,6.31 10.16,5.5 11.93,6.3C13.18,6.86 13.94,8.06 14,9.34C13.38,9.12 12.7,9 12,9M13.55,2.63C13,2.4 12.45,2.23 11.88,2.12L14.37,0.82L15.27,3.71C14.76,3.29 14.19,2.93 13.55,2.63M6.09,3.44C5.6,3.79 5.17,4.19 4.8,4.63L4.91,1.82L7.87,2.5C7.25,2.71 6.65,3.03 6.09,3.44M18,8.71C17.91,8.12 17.78,7.55 17.59,7L19.97,8.5L17.92,10.73C18.03,10.08 18.05,9.4 18,8.71M3.04,10.3C3.11,10.9 3.25,11.47 3.43,12L1.06,10.5L3.1,8.28C3,8.93 2.97,9.61 3.04,10.3M11.8,15H14.25L12.61,18.27H14.25L11.18,24L11.8,19.91H9.75"; -var mdiWeatherPartlyRainy = "M12.75,4.47C15.1,5.5 16.35,8.03 15.92,10.46C17.19,11.56 18,13.19 18,15V15.17C18.31,15.06 18.65,15 19,15A3,3 0 0,1 22,18A3,3 0 0,1 19,21H17C17,21 16,21 16,20C16,19 17,19 17,19H19A1,1 0 0,0 20,18A1,1 0 0,0 19,17H16V15A4,4 0 0,0 12,11A4,4 0 0,0 8,15H6A2,2 0 0,0 4,17A2,2 0 0,0 6,19H7C7,19 8,19 8,20C8,21 7,21 7,21H6A4,4 0 0,1 2,17A4,4 0 0,1 6,13H6.27C5,11.45 4.6,9.24 5.5,7.25C6.72,4.5 9.97,3.24 12.75,4.47M11.93,6.3C10.16,5.5 8.09,6.31 7.31,8.07C6.85,9.09 6.93,10.22 7.41,11.13C8.5,9.83 10.16,9 12,9C12.7,9 13.38,9.12 14,9.34C13.94,8.06 13.18,6.86 11.93,6.3M13.55,2.63C13,2.4 12.45,2.23 11.88,2.12L14.37,0.82L15.27,3.71C14.76,3.29 14.19,2.93 13.55,2.63M6.09,3.44C5.6,3.79 5.17,4.19 4.8,4.63L4.91,1.82L7.87,2.5C7.25,2.71 6.65,3.03 6.09,3.44M18,8.71C17.91,8.12 17.78,7.55 17.59,7L19.97,8.5L17.92,10.73C18.03,10.08 18.05,9.4 18,8.71M3.04,10.3C3.11,10.9 3.25,11.47 3.43,12L1.06,10.5L3.1,8.28C3,8.93 2.97,9.61 3.04,10.3M12,18.91C12.59,19.82 13,20.63 13,21A1,1 0 0,1 12,22A1,1 0 0,1 11,21C11,20.63 11.41,19.82 12,18.91M12,15.62C12,15.62 9,19 9,21A3,3 0 0,0 12,24A3,3 0 0,0 15,21C15,19 12,15.62 12,15.62Z"; -var mdiWeatherPartlySnowy = "M6,19.03A2,2 0 0,1 4,17.03C4,15.92 4.9,15.03 6,15.03H8C8,12.81 9.79,11.03 12,11.03A4,4 0 0,1 16,15.03V17.03H19A1,1 0 0,1 20,18.03C20,18.57 19.55,19.03 19,19.03H17C17,19.03 16,19.03 16,20.03C16,21.03 17,21.03 17,21.03H19A3,3 0 0,0 22,18.03C22,16.37 20.66,15.03 19,15.03C18.65,15.03 18.31,15.08 18,15.19V15.03C18,13.21 17.19,11.58 15.92,10.5C16.35,8.05 15.1,5.53 12.75,4.5C9.97,3.27 6.72,4.53 5.5,7.28C4.6,9.27 5,11.47 6.27,13.03H6C3.79,13.03 2,14.81 2,17.03A4,4 0 0,0 6,21.03C6,21.03 7,21.03 7,20.03C7,19.03 6,19.03 6,19.03M12,9.03C10.16,9.03 8.5,9.85 7.41,11.16C6.93,10.25 6.85,9.11 7.31,8.09C8.09,6.33 10.16,5.53 11.93,6.32C13.18,6.89 13.94,8.08 14,9.37C13.38,9.15 12.7,9.03 12,9.03M13.55,2.66C13,2.42 12.45,2.26 11.88,2.15L14.37,0.84L15.27,3.73C14.76,3.31 14.19,2.95 13.55,2.66M6.09,3.46C5.6,3.81 5.17,4.21 4.8,4.66L4.91,1.84L7.87,2.53C7.25,2.73 6.65,3.05 6.09,3.46M18,8.73C17.91,8.15 17.78,7.57 17.59,7.03L19.97,8.53L17.92,10.76C18.03,10.1 18.05,9.42 18,8.73M3.04,10.32C3.11,10.92 3.25,11.5 3.43,12.03L1.06,10.53L3.1,8.3C3,8.95 2.97,9.64 3.04,10.32M8.03,21.45C8.13,21.84 8.53,22.06 8.91,21.96L10.5,21.54L10.06,23.11C9.96,23.5 10.19,23.9 10.57,24C10.95,24.1 11.35,23.87 11.45,23.5L11.87,21.91L13.03,23.07C13.3,23.35 13.77,23.35 14.05,23.07C14.33,22.79 14.33,22.32 14.05,22.05L12.89,20.88L14.47,20.47C14.85,20.37 15.08,19.97 15,19.59C14.88,19.21 14.5,19 14.09,19.08L12.5,19.5L12.94,17.93C13.04,17.54 12.82,17.15 12.43,17.05C12.05,16.95 11.66,17.17 11.55,17.56L11.14,19.14L10,17.97C9.7,17.69 9.23,17.69 8.95,17.97C8.68,18.27 8.68,18.72 8.95,19L10.11,20.16L8.54,20.57C8.15,20.68 7.93,21.07 8.03,21.45Z"; -var mdiWeatherPartlySnowyRainy = "M13.55,2.66C13,2.42 12.45,2.26 11.88,2.15L14.37,0.84L15.27,3.73C14.76,3.31 14.19,2.95 13.55,2.66M6.09,3.46C5.6,3.81 5.17,4.21 4.8,4.66L4.91,1.84L7.87,2.53C7.25,2.73 6.65,3.05 6.09,3.46M18,8.73C17.91,8.15 17.78,7.57 17.59,7.03L19.97,8.53L17.92,10.76C18.03,10.1 18.05,9.42 18,8.73M3.04,10.32C3.11,10.92 3.25,11.5 3.43,12.03L1.06,10.53L3.1,8.3C3,8.95 2.97,9.64 3.04,10.32M16.68,22.21C16.68,23.2 15.91,24 14.95,24C14,24 13.23,23.2 13.23,22.21C13.23,21.03 14.95,19.03 14.95,19.03C14.95,19.03 16.68,21.03 16.68,22.21M6.03,21.45C5.93,21.07 6.15,20.68 6.54,20.58L8.13,20.15L6.96,19C6.68,18.72 6.68,18.27 6.96,18C7.23,17.7 7.7,17.7 8,18L9.14,19.14L9.55,17.56C9.65,17.17 10.05,16.94 10.43,17.05C10.82,17.15 11.05,17.55 10.93,17.93L10.5,19.5L12.1,19.1C12.5,19 12.88,19.21 13,19.6C13.08,19.97 12.86,20.37 12.47,20.47L10.89,20.89L12.05,22.05C12.33,22.32 12.33,22.79 12.05,23.07C11.77,23.35 11.31,23.35 11.03,23.07L9.87,21.9L9.45,23.5C9.35,23.88 8.95,24.1 8.57,24C8.18,23.9 7.97,23.5 8.06,23.12L8.5,21.55L6.91,21.96C6.5,22.06 6.13,21.84 6.03,21.45M19,15.03C18.65,15.03 18.31,15.08 18,15.19V15.03C18,13.21 17.19,11.58 15.92,10.5C16.35,8.05 15.1,5.53 12.75,4.5C9.97,3.27 6.72,4.53 5.5,7.28C4.6,9.27 5,11.47 6.27,13.03H6C3.79,13.03 2,14.81 2,17.03C2,18.17 2.5,19.2 3.27,19.93V19.93C3.27,19.93 3.97,20.64 4.68,19.93C5.39,19.22 4.68,18.5 4.68,18.5C4.27,18.15 4,17.62 4,17.03C4,15.92 4.9,15.03 6,15.03H8C8,12.81 9.79,11.03 12,11.03A4,4 0 0,1 16,15.03V17.03H19A1,1 0 0,1 20,18.03C20,18.57 19.55,19.03 19,19.03H18C18,19.03 17,19.03 17,20.03C17,21.03 18,21.03 18,21.03H19A3,3 0 0,0 22,18.03C22,16.37 20.66,15.03 19,15.03M12,9.03C10.16,9.03 8.5,9.85 7.41,11.16C6.93,10.25 6.85,9.11 7.31,8.09C8.09,6.33 10.16,5.53 11.93,6.32C13.18,6.89 13.94,8.08 14,9.37C13.38,9.15 12.7,9.03 12,9.03Z"; -var mdiWeatherPouring = "M9,12C9.53,12.14 9.85,12.69 9.71,13.22L8.41,18.05C8.27,18.59 7.72,18.9 7.19,18.76C6.65,18.62 6.34,18.07 6.5,17.54L7.78,12.71C7.92,12.17 8.47,11.86 9,12M13,12C13.53,12.14 13.85,12.69 13.71,13.22L11.64,20.95C11.5,21.5 10.95,21.8 10.41,21.66C9.88,21.5 9.56,20.97 9.7,20.43L11.78,12.71C11.92,12.17 12.47,11.86 13,12M17,12C17.53,12.14 17.85,12.69 17.71,13.22L16.41,18.05C16.27,18.59 15.72,18.9 15.19,18.76C14.65,18.62 14.34,18.07 14.5,17.54L15.78,12.71C15.92,12.17 16.47,11.86 17,12M17,10V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.43 4,15.6 3.5,15.32V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12C23,13.5 22.2,14.77 21,15.46V15.46C20.5,15.73 19.91,15.57 19.63,15.09C19.36,14.61 19.5,14 20,13.72V13.73C20.6,13.39 21,12.74 21,12A2,2 0 0,0 19,10H17Z"; -var mdiWeatherRainy = "M6,14.03A1,1 0 0,1 7,15.03C7,15.58 6.55,16.03 6,16.03C3.24,16.03 1,13.79 1,11.03C1,8.27 3.24,6.03 6,6.03C7,3.68 9.3,2.03 12,2.03C15.43,2.03 18.24,4.69 18.5,8.06L19,8.03A4,4 0 0,1 23,12.03C23,14.23 21.21,16.03 19,16.03H18C17.45,16.03 17,15.58 17,15.03C17,14.47 17.45,14.03 18,14.03H19A2,2 0 0,0 21,12.03A2,2 0 0,0 19,10.03H17V9.03C17,6.27 14.76,4.03 12,4.03C9.5,4.03 7.45,5.84 7.06,8.21C6.73,8.09 6.37,8.03 6,8.03A3,3 0 0,0 3,11.03A3,3 0 0,0 6,14.03M12,14.15C12.18,14.39 12.37,14.66 12.56,14.94C13,15.56 14,17.03 14,18C14,19.11 13.1,20 12,20A2,2 0 0,1 10,18C10,17.03 11,15.56 11.44,14.94C11.63,14.66 11.82,14.4 12,14.15M12,11.03L11.5,11.59C11.5,11.59 10.65,12.55 9.79,13.81C8.93,15.06 8,16.56 8,18A4,4 0 0,0 12,22A4,4 0 0,0 16,18C16,16.56 15.07,15.06 14.21,13.81C13.35,12.55 12.5,11.59 12.5,11.59"; -var mdiWeatherSnowy = "M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M7.88,18.07L10.07,17.5L8.46,15.88C8.07,15.5 8.07,14.86 8.46,14.46C8.85,14.07 9.5,14.07 9.88,14.46L11.5,16.07L12.07,13.88C12.21,13.34 12.76,13.03 13.29,13.17C13.83,13.31 14.14,13.86 14,14.4L13.41,16.59L15.6,16C16.14,15.86 16.69,16.17 16.83,16.71C16.97,17.24 16.66,17.79 16.12,17.93L13.93,18.5L15.54,20.12C15.93,20.5 15.93,21.15 15.54,21.54C15.15,21.93 14.5,21.93 14.12,21.54L12.5,19.93L11.93,22.12C11.79,22.66 11.24,22.97 10.71,22.83C10.17,22.69 9.86,22.14 10,21.6L10.59,19.41L8.4,20C7.86,20.14 7.31,19.83 7.17,19.29C7.03,18.76 7.34,18.21 7.88,18.07Z"; -var mdiWeatherSnowyHeavy = "M4,16.36C3.86,15.82 4.18,15.25 4.73,15.11L7,14.5L5.33,12.86C4.93,12.46 4.93,11.81 5.33,11.4C5.73,11 6.4,11 6.79,11.4L8.45,13.05L9.04,10.8C9.18,10.24 9.75,9.92 10.29,10.07C10.85,10.21 11.17,10.78 11,11.33L10.42,13.58L12.67,13C13.22,12.83 13.79,13.15 13.93,13.71C14.08,14.25 13.76,14.82 13.2,14.96L10.95,15.55L12.6,17.21C13,17.6 13,18.27 12.6,18.67C12.2,19.07 11.54,19.07 11.15,18.67L9.5,17L8.89,19.27C8.75,19.83 8.18,20.14 7.64,20C7.08,19.86 6.77,19.29 6.91,18.74L7.5,16.5L5.26,17.09C4.71,17.23 4.14,16.92 4,16.36M1,10A5,5 0 0,1 6,5C7,2.65 9.3,1 12,1C15.43,1 18.24,3.66 18.5,7.03L19,7A4,4 0 0,1 23,11A4,4 0 0,1 19,15A1,1 0 0,1 18,14A1,1 0 0,1 19,13A2,2 0 0,0 21,11A2,2 0 0,0 19,9H17V8A5,5 0 0,0 12,3C9.5,3 7.45,4.82 7.06,7.19C6.73,7.07 6.37,7 6,7A3,3 0 0,0 3,10C3,10.85 3.35,11.61 3.91,12.16C4.27,12.55 4.26,13.16 3.88,13.54C3.5,13.93 2.85,13.93 2.47,13.54C1.56,12.63 1,11.38 1,10M14.03,20.43C14.13,20.82 14.5,21.04 14.91,20.94L16.5,20.5L16.06,22.09C15.96,22.5 16.18,22.87 16.57,22.97C16.95,23.08 17.35,22.85 17.45,22.46L17.86,20.89L19.03,22.05C19.3,22.33 19.77,22.33 20.05,22.05C20.33,21.77 20.33,21.3 20.05,21.03L18.89,19.86L20.46,19.45C20.85,19.35 21.08,18.95 20.97,18.57C20.87,18.18 20.5,17.96 20.09,18.06L18.5,18.5L18.94,16.91C19.04,16.5 18.82,16.13 18.43,16.03C18.05,15.92 17.65,16.15 17.55,16.54L17.14,18.11L15.97,16.95C15.7,16.67 15.23,16.67 14.95,16.95C14.67,17.24 14.67,17.7 14.95,17.97L16.11,19.14L14.54,19.55C14.15,19.65 13.92,20.05 14.03,20.43Z"; -var mdiWeatherSnowyRainy = "M18.5,18.67C18.5,19.96 17.5,21 16.25,21C15,21 14,19.96 14,18.67C14,17.12 16.25,14.5 16.25,14.5C16.25,14.5 18.5,17.12 18.5,18.67M4,17.36C3.86,16.82 4.18,16.25 4.73,16.11L7,15.5L5.33,13.86C4.93,13.46 4.93,12.81 5.33,12.4C5.73,12 6.4,12 6.79,12.4L8.45,14.05L9.04,11.8C9.18,11.24 9.75,10.92 10.29,11.07C10.85,11.21 11.17,11.78 11,12.33L10.42,14.58L12.67,14C13.22,13.83 13.79,14.15 13.93,14.71C14.08,15.25 13.76,15.82 13.2,15.96L10.95,16.55L12.6,18.21C13,18.6 13,19.27 12.6,19.67C12.2,20.07 11.54,20.07 11.15,19.67L9.5,18L8.89,20.27C8.75,20.83 8.18,21.14 7.64,21C7.08,20.86 6.77,20.29 6.91,19.74L7.5,17.5L5.26,18.09C4.71,18.23 4.14,17.92 4,17.36M1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,11.85 3.35,12.61 3.91,13.16C4.27,13.55 4.26,14.16 3.88,14.54C3.5,14.93 2.85,14.93 2.47,14.54C1.56,13.63 1,12.38 1,11Z"; -var mdiWeatherSunny = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M20.64,17L16.5,17.36C17.09,16.85 17.62,16.22 18.04,15.5C18.46,14.77 18.73,14 18.87,13.21L20.64,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56L12,22Z"; -var mdiWeatherSunnyAlert = "M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56M19,13V7H21V13H19M19,17V15H21V17"; -var mdiWeatherSunnyOff = "M22.11 21.46L2.39 1.73L1.11 3L4.97 6.86L3.34 7L5.11 10.79C5.25 10 5.5 9.24 5.94 8.5C6 8.36 6.13 8.24 6.22 8.11L7.66 9.55C7.25 10.27 7 11.11 7 12C7 14.76 9.24 17 12 17C12.9 17 13.73 16.75 14.45 16.34L20.84 22.73L22.11 21.46M12 15C10.34 15 9 13.66 9 12C9 11.67 9.07 11.36 9.17 11.06L12.94 14.83C12.64 14.93 12.33 15 12 15M18.05 8.5C17.63 7.78 17.1 7.15 16.5 6.64L20.65 7L18.88 10.79C18.74 10 18.47 9.23 18.05 8.5M12 7C14.76 7 17 9.24 17 12C17 12.54 16.89 13.05 16.74 13.54L15 11.78C14.87 10.3 13.7 9.13 12.22 9L10.47 7.27C10.95 7.11 11.46 7 12 7M12 5C11.16 5 10.35 5.15 9.61 5.42L12 2L14.39 5.42C13.65 5.15 12.84 5 12 5M18.87 13.21L20.64 17L20.24 17.04L18.25 15.05C18.54 14.45 18.76 13.84 18.87 13.21M12 19C12.82 19 13.63 18.83 14.37 18.56L12 22L9.59 18.56C10.33 18.83 11.14 19 12 19M5.95 15.5C6.37 16.24 6.91 16.86 7.5 17.37L3.36 17L5.12 13.23C5.26 14 5.53 14.78 5.95 15.5Z"; -var mdiWeatherSunset = "M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M5,16H19A1,1 0 0,1 20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17A1,1 0 0,1 5,16M17,20A1,1 0 0,1 18,21A1,1 0 0,1 17,22H7A1,1 0 0,1 6,21A1,1 0 0,1 7,20H17M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7Z"; -var mdiWeatherSunsetDown = "M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,20.71L15.82,17.6C16.21,17.21 16.21,16.57 15.82,16.18C15.43,15.79 14.8,15.79 14.41,16.18L12,18.59L9.59,16.18C9.2,15.79 8.57,15.79 8.18,16.18C7.79,16.57 7.79,17.21 8.18,17.6L11.29,20.71C11.5,20.9 11.74,21 12,21C12.26,21 12.5,20.9 12.71,20.71Z"; -var mdiWeatherSunsetUp = "M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,16.3L15.82,19.41C16.21,19.8 16.21,20.43 15.82,20.82C15.43,21.21 14.8,21.21 14.41,20.82L12,18.41L9.59,20.82C9.2,21.21 8.57,21.21 8.18,20.82C7.79,20.43 7.79,19.8 8.18,19.41L11.29,16.3C11.5,16.1 11.74,16 12,16C12.26,16 12.5,16.1 12.71,16.3Z"; -var mdiWeatherTornado = "M21,5H3A1,1 0 0,1 2,4A1,1 0 0,1 3,3H21A1,1 0 0,1 22,4A1,1 0 0,1 21,5M20,8A1,1 0 0,0 19,7H5A1,1 0 0,0 4,8A1,1 0 0,0 5,9H19A1,1 0 0,0 20,8M21,12A1,1 0 0,0 20,11H10A1,1 0 0,0 9,12A1,1 0 0,0 10,13H20A1,1 0 0,0 21,12M16,16A1,1 0 0,0 15,15H9A1,1 0 0,0 8,16A1,1 0 0,0 9,17H15A1,1 0 0,0 16,16M13,20A1,1 0 0,0 12,19H10A1,1 0 0,0 9,20A1,1 0 0,0 10,21H12A1,1 0 0,0 13,20Z"; -var mdiWeatherWindy = "M4,10A1,1 0 0,1 3,9A1,1 0 0,1 4,8H12A2,2 0 0,0 14,6A2,2 0 0,0 12,4C11.45,4 10.95,4.22 10.59,4.59C10.2,5 9.56,5 9.17,4.59C8.78,4.2 8.78,3.56 9.17,3.17C9.9,2.45 10.9,2 12,2A4,4 0 0,1 16,6A4,4 0 0,1 12,10H4M19,12A1,1 0 0,0 20,11A1,1 0 0,0 19,10C18.72,10 18.47,10.11 18.29,10.29C17.9,10.68 17.27,10.68 16.88,10.29C16.5,9.9 16.5,9.27 16.88,8.88C17.42,8.34 18.17,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H5A1,1 0 0,1 4,13A1,1 0 0,1 5,12H19M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z"; -var mdiWeatherWindyVariant = "M6,6L6.69,6.06C7.32,3.72 9.46,2 12,2A5.5,5.5 0 0,1 17.5,7.5L17.42,8.45C17.88,8.16 18.42,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H6A4,4 0 0,1 2,10A4,4 0 0,1 6,6M6,8A2,2 0 0,0 4,10A2,2 0 0,0 6,12H19A1,1 0 0,0 20,11A1,1 0 0,0 19,10H15.5V7.5A3.5,3.5 0 0,0 12,4A3.5,3.5 0 0,0 8.5,7.5V8H6M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z"; -var mdiWeb = "M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"; -var mdiWebBox = "M8.95 13.4H6.58A5.5 5.5 0 0 1 6.58 10.6H8.95A11.56 11.56 0 0 0 8.85 12A11.56 11.56 0 0 0 8.95 13.4M7.16 9.2H9.2A12.06 12.06 0 0 1 10.18 6.71A5.55 5.55 0 0 0 7.16 9.2M16.84 9.2A5.59 5.59 0 0 0 13.81 6.71A10.95 10.95 0 0 1 14.78 9.2M12 17.57A9.5 9.5 0 0 0 13.34 14.8H10.66A9.5 9.5 0 0 0 12 17.57M12 6.42A9.53 9.53 0 0 0 10.66 9.2H13.34A9.53 9.53 0 0 0 12 6.42M7.16 14.8A5.61 5.61 0 0 0 10.18 17.29A12.06 12.06 0 0 1 9.2 14.8M21 5V19A2 2 0 0 1 19 21H5A2 2 0 0 1 3 19V5A2 2 0 0 1 5 3H19A2 2 0 0 1 21 5M19 12A7 7 0 1 0 12 19A7 7 0 0 0 19 12M15.15 12A11.56 11.56 0 0 1 15.05 13.4H17.42A5.5 5.5 0 0 0 17.42 10.6H15.05A11.56 11.56 0 0 1 15.15 12M13.81 17.29A5.62 5.62 0 0 0 16.84 14.8H14.78A10.95 10.95 0 0 1 13.81 17.29M10.36 10.6A8.81 8.81 0 0 0 10.36 13.4H13.64A10.3 10.3 0 0 0 13.75 12A10.21 10.21 0 0 0 13.64 10.6Z"; -var mdiWebClock = "M15 12.5V16.5L18 18.5L18.75 17.25L16.5 15.75V12.5H15M22 12.39C22 12.26 22 12.13 22 12C22 6.5 17.5 2 12 2C6.47 2 2 6.5 2 12C2 17.5 6.5 22 12 22C12.13 22 12.24 22 12.37 21.97C13.43 22.62 14.67 23 16 23C19.86 23 23 19.86 23 16C23 14.68 22.62 13.44 22 12.39M19.76 10.11C19.7 10.07 19.65 10.04 19.59 10H19.74C19.75 10.03 19.75 10.07 19.76 10.11M18.92 8H15.97C15.65 6.75 15.19 5.55 14.59 4.44C16.43 5.07 17.96 6.34 18.92 8M12 4.03C12.83 5.23 13.5 6.57 13.91 8H10.09C10.5 6.57 11.17 5.23 12 4.03M9.66 10H12.41C11.16 10.75 10.15 11.88 9.57 13.24C9.53 12.83 9.5 12.42 9.5 12C9.5 11.32 9.56 10.65 9.66 10M9.4 4.44C8.8 5.55 8.35 6.75 8 8H5.08C6.03 6.34 7.57 5.06 9.4 4.44M4.26 14C4.1 13.36 4 12.69 4 12S4.1 10.64 4.26 10H7.64C7.56 10.66 7.5 11.32 7.5 12S7.56 13.34 7.64 14H4.26M5.08 16H8C8.35 17.25 8.8 18.45 9.4 19.56C7.57 18.93 6.03 17.65 5.08 16M16 21C13.24 21 11 18.76 11 16S13.24 11 16 11 21 13.24 21 16 18.76 21 16 21Z"; -var mdiWebcam = "M12,2A7,7 0 0,1 19,9A7,7 0 0,1 12,16A7,7 0 0,1 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9A5,5 0 0,0 12,14A5,5 0 0,0 17,9A5,5 0 0,0 12,4M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M6,22A2,2 0 0,1 4,20C4,19.62 4.1,19.27 4.29,18.97L6.11,15.81C7.69,17.17 9.75,18 12,18C14.25,18 16.31,17.17 17.89,15.81L19.71,18.97C19.9,19.27 20,19.62 20,20A2,2 0 0,1 18,22H6Z"; -var mdiWebcamOff = "M12 6C13.66 6 15 7.34 15 9C15 9.78 14.7 10.5 14.21 11L10 6.79C10.5 6.3 11.22 6 12 6M12 4C14.76 4 17 6.24 17 9C17 10.33 16.47 11.53 15.62 12.42L17.04 13.84C18.25 12.59 19 10.88 19 9C19 5.13 15.87 2 12 2C10.12 2 8.41 2.75 7.16 3.96L8.58 5.38C9.47 4.53 10.67 4 12 4M22.11 21.46L20.84 22.73L19.46 21.35C19.1 21.75 18.58 22 18 22H6C4.89 22 4 21.11 4 20C4 19.62 4.1 19.27 4.29 18.97L6.11 15.81C7.69 17.17 9.75 18 12 18C13.21 18 14.37 17.75 15.43 17.32L13.85 15.74C13.26 15.91 12.64 16 12 16C8.13 16 5 12.87 5 9C5 8.36 5.09 7.74 5.26 7.15L1.11 3L2.39 1.73L22.11 21.46M12.1 14L7 8.9C7 8.93 7 8.97 7 9C7 11.76 9.24 14 12 14C12.03 14 12.07 14 12.1 14Z"; -var mdiWebhook = "M10.46,19C9,21.07 6.15,21.59 4.09,20.15C2.04,18.71 1.56,15.84 3,13.75C3.87,12.5 5.21,11.83 6.58,11.77L6.63,13.2C5.72,13.27 4.84,13.74 4.27,14.56C3.27,16 3.58,17.94 4.95,18.91C6.33,19.87 8.26,19.5 9.26,18.07C9.57,17.62 9.75,17.13 9.82,16.63V15.62L15.4,15.58L15.47,15.47C16,14.55 17.15,14.23 18.05,14.75C18.95,15.27 19.26,16.43 18.73,17.35C18.2,18.26 17.04,18.58 16.14,18.06C15.73,17.83 15.44,17.46 15.31,17.04L11.24,17.06C11.13,17.73 10.87,18.38 10.46,19M17.74,11.86C20.27,12.17 22.07,14.44 21.76,16.93C21.45,19.43 19.15,21.2 16.62,20.89C15.13,20.71 13.9,19.86 13.19,18.68L14.43,17.96C14.92,18.73 15.75,19.28 16.75,19.41C18.5,19.62 20.05,18.43 20.26,16.76C20.47,15.09 19.23,13.56 17.5,13.35C16.96,13.29 16.44,13.36 15.97,13.53L15.12,13.97L12.54,9.2H12.32C11.26,9.16 10.44,8.29 10.47,7.25C10.5,6.21 11.4,5.4 12.45,5.44C13.5,5.5 14.33,6.35 14.3,7.39C14.28,7.83 14.11,8.23 13.84,8.54L15.74,12.05C16.36,11.85 17.04,11.78 17.74,11.86M8.25,9.14C7.25,6.79 8.31,4.1 10.62,3.12C12.94,2.14 15.62,3.25 16.62,5.6C17.21,6.97 17.09,8.47 16.42,9.67L15.18,8.95C15.6,8.14 15.67,7.15 15.27,6.22C14.59,4.62 12.78,3.85 11.23,4.5C9.67,5.16 8.97,7 9.65,8.6C9.93,9.26 10.4,9.77 10.97,10.11L11.36,10.32L8.29,15.31C8.32,15.36 8.36,15.42 8.39,15.5C8.88,16.41 8.54,17.56 7.62,18.05C6.71,18.54 5.56,18.18 5.06,17.24C4.57,16.31 4.91,15.16 5.83,14.67C6.22,14.46 6.65,14.41 7.06,14.5L9.37,10.73C8.9,10.3 8.5,9.76 8.25,9.14Z"; -var mdiWebpack = "M20.45 17.39L12.36 21.97V18.4L17.4 15.63L20.45 17.39M21 16.89V7.31L18.04 9V15.18L21 16.89M3.55 17.39L11.64 21.96V18.4L6.6 15.63L3.55 17.39M3 16.89V7.31L5.96 9V15.18L3 16.89M3.35 6.69L11.64 2V5.45L6.33 8.37L6.28 8.39L3.35 6.69M20.65 6.69L12.36 2V5.45L17.67 8.38L17.71 8.4L20.65 6.69M11.64 17.59L6.67 14.85V9.44L11.64 12.31V17.59M12.36 17.59L17.33 14.86V9.44L12.36 12.31V17.59M7 8.81L12 6.06L17 8.81L12 11.69L7 8.81Z"; -var mdiWebrtc = "M12 2C14.44 2 16.5 3.75 16.91 6.07L17.75 6C20.5 6 22.75 8.24 22.75 11C22.75 12.89 21.7 14.53 20.16 15.38C20.54 16.09 20.75 16.89 20.75 17.75C20.75 20.5 18.5 22.75 15.75 22.75C14.26 22.75 12.92 22.1 12 21.06C11.08 22.1 9.74 22.75 8.25 22.75C5.5 22.75 3.25 20.5 3.25 17.75C3.25 16.89 3.47 16.09 3.84 15.38C2.3 14.53 1.25 12.89 1.25 11C1.25 8.24 3.5 6 6.25 6L7.09 6.07C7.5 3.75 9.56 2 12 2M6.75 20.25L13.66 17H17C17.55 17 18 16.55 18 16V9C18 8.45 17.55 8 17 8H7C6.45 8 6 8.45 6 9V16C6 16.55 6.45 17 7 17H7.77L6.75 20.25Z"; -var mdiWechat = "M9.5,4C5.36,4 2,6.69 2,10C2,11.89 3.08,13.56 4.78,14.66L4,17L6.5,15.5C7.39,15.81 8.37,16 9.41,16C9.15,15.37 9,14.7 9,14C9,10.69 12.13,8 16,8C16.19,8 16.38,8 16.56,8.03C15.54,5.69 12.78,4 9.5,4M6.5,6.5A1,1 0 0,1 7.5,7.5A1,1 0 0,1 6.5,8.5A1,1 0 0,1 5.5,7.5A1,1 0 0,1 6.5,6.5M11.5,6.5A1,1 0 0,1 12.5,7.5A1,1 0 0,1 11.5,8.5A1,1 0 0,1 10.5,7.5A1,1 0 0,1 11.5,6.5M16,9C12.69,9 10,11.24 10,14C10,16.76 12.69,19 16,19C16.67,19 17.31,18.92 17.91,18.75L20,20L19.38,18.13C20.95,17.22 22,15.71 22,14C22,11.24 19.31,9 16,9M14,11.5A1,1 0 0,1 15,12.5A1,1 0 0,1 14,13.5A1,1 0 0,1 13,12.5A1,1 0 0,1 14,11.5M18,11.5A1,1 0 0,1 19,12.5A1,1 0 0,1 18,13.5A1,1 0 0,1 17,12.5A1,1 0 0,1 18,11.5Z"; -var mdiWeight = "M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5Z"; -var mdiWeightGram = "M19.95,10.56C19.75,9.67 18.95,9 18,9H15.46C15.81,8.41 16,7.73 16,7A4,4 0 0,0 12,3A4,4 0 0,0 8,7C8,7.73 8.19,8.41 8.54,9H6C5.05,9 4.25,9.67 4.05,10.56C2.04,18.57 2,18.78 2,19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19C22,18.78 21.96,18.57 19.95,10.56M12,5A2,2 0 0,1 14,7A2,2 0 0,1 12,9A2,2 0 0,1 10,7A2,2 0 0,1 12,5M15,13H11V17H13V14H15V19H11C9.89,19 9,18.11 9,17V13C9,11.89 9.89,11 11,11H15V13Z"; -var mdiWeightKilogram = "M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M6,11V19H8V16.5L9,17.5V19H11V17L9,15L11,13V11H9V12.5L8,13.5V11H6M15,11C13.89,11 13,11.89 13,13V17C13,18.11 13.89,19 15,19H18V14H16V17H15V13H18V11H15Z"; -var mdiWeightLifter = "M12 5C10.89 5 10 5.89 10 7S10.89 9 12 9 14 8.11 14 7 13.11 5 12 5M22 1V6H20V4H4V6H2V1H4V3H20V1H22M15 11.26V23H13V18H11V23H9V11.26C6.93 10.17 5.5 8 5.5 5.5L5.5 5H7.5L7.5 5.5C7.5 8 9.5 10 12 10S16.5 8 16.5 5.5L16.5 5H18.5L18.5 5.5C18.5 8 17.07 10.17 15 11.26Z"; -var mdiWeightPound = "M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M6,11V19H11V17H8V11H6M13,11V19H16C17.11,19 18,18.11 18,17V16.5C18,15.93 17.75,15.38 17.32,15C17.75,14.62 18,14.07 18,13.5V13C18,11.89 17.11,11 16,11H13M15,13H16V14H15V13M15,16H16V17H15V16Z"; -var mdiWhatsapp = "M12.04 2C6.58 2 2.13 6.45 2.13 11.91C2.13 13.66 2.59 15.36 3.45 16.86L2.05 22L7.3 20.62C8.75 21.41 10.38 21.83 12.04 21.83C17.5 21.83 21.95 17.38 21.95 11.92C21.95 9.27 20.92 6.78 19.05 4.91C17.18 3.03 14.69 2 12.04 2M12.05 3.67C14.25 3.67 16.31 4.53 17.87 6.09C19.42 7.65 20.28 9.72 20.28 11.92C20.28 16.46 16.58 20.15 12.04 20.15C10.56 20.15 9.11 19.76 7.85 19L7.55 18.83L4.43 19.65L5.26 16.61L5.06 16.29C4.24 15 3.8 13.47 3.8 11.91C3.81 7.37 7.5 3.67 12.05 3.67M8.53 7.33C8.37 7.33 8.1 7.39 7.87 7.64C7.65 7.89 7 8.5 7 9.71C7 10.93 7.89 12.1 8 12.27C8.14 12.44 9.76 14.94 12.25 16C12.84 16.27 13.3 16.42 13.66 16.53C14.25 16.72 14.79 16.69 15.22 16.63C15.7 16.56 16.68 16.03 16.89 15.45C17.1 14.87 17.1 14.38 17.04 14.27C16.97 14.17 16.81 14.11 16.56 14C16.31 13.86 15.09 13.26 14.87 13.18C14.64 13.1 14.5 13.06 14.31 13.3C14.15 13.55 13.67 14.11 13.53 14.27C13.38 14.44 13.24 14.46 13 14.34C12.74 14.21 11.94 13.95 11 13.11C10.26 12.45 9.77 11.64 9.62 11.39C9.5 11.15 9.61 11 9.73 10.89C9.84 10.78 10 10.6 10.1 10.45C10.23 10.31 10.27 10.2 10.35 10.04C10.43 9.87 10.39 9.73 10.33 9.61C10.27 9.5 9.77 8.26 9.56 7.77C9.36 7.29 9.16 7.35 9 7.34C8.86 7.34 8.7 7.33 8.53 7.33Z"; -var mdiWheelBarrow = "M18 15.5C18.83 15.5 19.5 16.17 19.5 17S18.83 18.5 18 18.5 16.5 17.83 16.5 17 17.17 15.5 18 15.5M18 14C16.34 14 15 15.34 15 17S16.34 20 18 20C19.66 20 21 18.66 21 17S19.66 14 18 14M7 8L5 5H2V7H5.13L8 11.3V20H10L12.57 15H14.55C15.25 13.81 16.5 13 18 13C18.88 13 19.69 13.29 20.35 13.78L22 8H7M9.39 19H9V12.8L9.87 14.11C10.23 14.64 10.82 14.96 11.45 15L9.39 19Z"; -var mdiWheelchairAccessibility = "M18.4,11.2L14.3,11.4L16.6,8.8C16.8,8.5 16.9,8 16.8,7.5C16.7,7.2 16.6,6.9 16.3,6.7L10.9,3.5C10.5,3.2 9.9,3.3 9.5,3.6L6.8,6.1C6.3,6.6 6.2,7.3 6.7,7.8C7.1,8.3 7.9,8.3 8.4,7.9L10.4,6.1L12.3,7.2L8.1,11.5C8,11.6 8,11.7 7.9,11.7C7.4,11.9 6.9,12.1 6.5,12.4L8,13.9C8.5,13.7 9,13.5 9.5,13.5C11.4,13.5 13,15.1 13,17C13,17.6 12.9,18.1 12.6,18.5L14.1,20C14.7,19.1 15,18.1 15,17C15,15.8 14.6,14.6 13.9,13.7L17.2,13.4L17,18.2C16.9,18.9 17.4,19.4 18.1,19.5H18.2C18.8,19.5 19.3,19 19.4,18.4L19.6,12.5C19.6,12.2 19.5,11.8 19.3,11.6C19,11.3 18.7,11.2 18.4,11.2M18,5.5A2,2 0 0,0 20,3.5A2,2 0 0,0 18,1.5A2,2 0 0,0 16,3.5A2,2 0 0,0 18,5.5M12.5,21.6C11.6,22.2 10.6,22.5 9.5,22.5C6.5,22.5 4,20 4,17C4,15.9 4.3,14.9 4.9,14L6.4,15.5C6.2,16 6,16.5 6,17C6,18.9 7.6,20.5 9.5,20.5C10.1,20.5 10.6,20.4 11,20.1L12.5,21.6Z"; -var mdiWhistle = "M8.5,9A6.5,6.5 0 0,0 2,15.5A6.5,6.5 0 0,0 8.5,22A6.5,6.5 0 0,0 15,15.5V13.91L22,12V9H11V11H9V9H8.5M11,2V7H9V2H11M6.35,7.28C5.68,7.44 5.04,7.68 4.43,8L2.14,4.88L3.76,3.7L6.35,7.28M17.86,4.88L16.32,7H13.85L16.24,3.7L17.86,4.88Z"; -var mdiWhistleOutline = "M3.76 3.7L2.14 4.88L4.43 8A8.23 8.23 0 0 1 6.35 7.28M11 9V11H18V11.29L13 12.71V15.5A4.5 4.5 0 1 1 8.5 11H9V9H8.5A6.5 6.5 0 1 0 15 15.5V13.91L22 12V9M16.24 3.7L13.85 7H16.32L17.86 4.88M9 2V7H11V2Z"; -var mdiWhiteBalanceAuto = "M10.3,16L9.6,14H6.4L5.7,16H3.8L7,7H9L12.2,16M22,7L20.8,13.29L19.3,7H17.7L16.21,13.29L15,7H14.24C12.77,5.17 10.5,4 8,4A8,8 0 0,0 0,12A8,8 0 0,0 8,20C11.13,20 13.84,18.19 15.15,15.57L15.25,16H17L18.5,9.9L20,16H21.75L23.8,7M6.85,12.65H9.15L8,9L6.85,12.65Z"; -var mdiWhiteBalanceIncandescent = "M17.24,18.15L19.04,19.95L20.45,18.53L18.66,16.74M20,12.5H23V10.5H20M15,6.31V1.5H9V6.31C7.21,7.35 6,9.28 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,9.28 16.79,7.35 15,6.31M4,10.5H1V12.5H4M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M3.55,18.53L4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53Z"; -var mdiWhiteBalanceIridescent = "M4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53M3.55,4.46L5.34,6.26L6.76,4.84L4.96,3.05M20.45,18.53L18.66,16.74L17.24,18.15L19.04,19.95M13,22.45V19.5H11V22.45C11.32,22.45 13,22.45 13,22.45M19.04,3.05L17.24,4.84L18.66,6.26L20.45,4.46M11,3.5H13V0.55H11M5,14.5H19V8.5H5V14.5Z"; -var mdiWhiteBalanceSunny = "M3.55,18.54L4.96,19.95L6.76,18.16L5.34,16.74M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M12,5.5A6,6 0 0,0 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,8.18 15.31,5.5 12,5.5M20,12.5H23V10.5H20M17.24,18.16L19.04,19.95L20.45,18.54L18.66,16.74M20.45,4.46L19.04,3.05L17.24,4.84L18.66,6.26M13,0.55H11V3.5H13M4,10.5H1V12.5H4M6.76,4.84L4.96,3.05L3.55,4.46L5.34,6.26L6.76,4.84Z"; -var mdiWidgets = "M3,3H11V7.34L16.66,1.69L22.31,7.34L16.66,13H21V21H13V13H16.66L11,7.34V11H3V3M3,13H11V21H3V13Z"; -var mdiWidgetsOutline = "M16.7 4.5L19.5 7.3L16.7 10.1L13.9 7.3L16.7 4.5M9 5V9H5V5H9M19 15V19H15V15H19M16.7 1.7L11 7.3L16.7 13H13V21H21V13H16.7L22.3 7.3L16.7 1.7M11 3H3V11H11V3M9 15V19H5V15H9M11 13H3V21H11V13Z"; -var mdiWifi = "M12,21L15.6,16.2C14.6,15.45 13.35,15 12,15C10.65,15 9.4,15.45 8.4,16.2L12,21M12,3C7.95,3 4.21,4.34 1.2,6.6L3,9C5.5,7.12 8.62,6 12,6C15.38,6 18.5,7.12 21,9L22.8,6.6C19.79,4.34 16.05,3 12,3M12,9C9.3,9 6.81,9.89 4.8,11.4L6.6,13.8C8.1,12.67 9.97,12 12,12C14.03,12 15.9,12.67 17.4,13.8L19.2,11.4C17.19,9.89 14.7,9 12,9Z"; -var mdiWifiAlert = "M20.24 5H18V7.25C16.16 6.45 14.13 6 12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3C14.97 3 17.77 3.73 20.24 5M8.4 16.2L12 21L15.6 16.2C14.6 15.45 13.35 15 12 15S9.4 15.45 8.4 16.2M4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12S15.9 12.67 17.4 13.8L18 13V10.62C16.23 9.59 14.19 9 12 9C9.3 9 6.81 9.89 4.8 11.4M20 17H22V15H20V17M20 7V13H22V7H20Z"; -var mdiWifiArrowDown = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M16.84 13.41C17.18 13.27 17.55 13.17 17.92 13.1L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.78 12 15.44 12.5 16.84 13.41M20 16H18V20H16L19 23L22 20H20V16Z"; -var mdiWifiArrowLeft = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M18 16L15 19L18 22V20H22V18H18V16Z"; -var mdiWifiArrowLeftRight = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M18 18.5L15 21L18 23.5V22H22V20H18V18.5M23 17L20 14.5V16H16V18H20V19.5L23 17Z"; -var mdiWifiArrowRight = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M16.84 13.41C17.18 13.27 17.55 13.17 17.92 13.1L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.78 12 15.44 12.5 16.84 13.41M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M23 19L20 16V18H16V20H20V22L23 19Z"; -var mdiWifiArrowUp = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M16 18H18V22H20V18H22L19 15L16 18Z"; -var mdiWifiArrowUpDown = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M17 15L14.5 18H16V22H18V18H19.5L17 15M22 20V16H20V20H18.5L21 23L23.5 20H22Z"; -var mdiWifiCancel = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M15.53 12.72C16.42 12.26 17.43 12 18.5 12C18.58 12 18.66 12 18.74 12L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.26 12 14.45 12.26 15.53 12.72M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L12.34 20.54C12.13 19.9 12 19.22 12 18.5C12 17.24 12.36 16.08 13 15.08C12.66 15.03 12.33 15 12 15M23 18.5C23 21 21 23 18.5 23S14 21 14 18.5 16 14 18.5 14 23 16 23 18.5M20 21.08L15.92 17C15.65 17.42 15.5 17.94 15.5 18.5C15.5 20.16 16.84 21.5 18.5 21.5C19.06 21.5 19.58 21.35 20 21.08M21.5 18.5C21.5 16.84 20.16 15.5 18.5 15.5C17.94 15.5 17.42 15.65 17 15.92L21.08 20C21.35 19.58 21.5 19.06 21.5 18.5Z"; -var mdiWifiCheck = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84L17.75 19.43Z"; -var mdiWifiCog = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L18.74 12C17.66 12.05 16.63 12.33 15.73 12.81C14.6 12.29 13.33 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L12.22 20.71C12.08 20.16 12 19.59 12 19C12 17.57 12.43 16.24 13.17 15.13C12.79 15.05 12.4 15 12 15M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z"; -var mdiWifiLock = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M17.4 10.29C15.77 9.47 13.94 9 12 9C9.3 9 6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C12.97 12 13.9 12.16 14.78 12.44C15.34 11.45 16.27 10.68 17.4 10.29M8.4 16.2L12 21L13 19.67V17.2C13 16.5 13.27 15.81 13.7 15.26C13.16 15.1 12.59 15 12 15C10.65 15 9.4 15.45 8.4 16.2M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; -var mdiWifiLockOpen = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M16.31 9.81C14.97 9.29 13.5 9 12 9C9.3 9 6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C12.83 12 13.63 12.12 14.39 12.33C14.7 11.3 15.38 10.41 16.31 9.81M8.4 16.2L12 21L13 19.67V17.2C13 16.5 13.27 15.81 13.7 15.26C13.16 15.1 12.59 15 12 15C10.65 15 9.4 15.45 8.4 16.2M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; -var mdiWifiMarker = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M13 15.09C12.69 15.03 12.35 15 12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.8 18.6C13.33 17.58 13 16.5 13 15.5C13 15.36 13 15.23 13 15.09M12 9C9.3 9 6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C12.73 12 13.43 12.09 14.1 12.25C14.86 11.25 15.93 10.5 17.17 10.18C15.6 9.43 13.85 9 12 9M22 15.5C22 18.1 18.5 22 18.5 22S15 18.1 15 15.5C15 13.6 16.6 12 18.5 12S22 13.6 22 15.5M19.7 15.6C19.7 15 19.1 14.4 18.5 14.4S17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8S19.8 16.2 19.7 15.6Z"; -var mdiWifiMinus = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M15 18V20H23V18H15Z"; -var mdiWifiOff = "M2.28,3L1,4.27L2.47,5.74C2.04,6 1.61,6.29 1.2,6.6L3,9C3.53,8.6 4.08,8.25 4.66,7.93L6.89,10.16C6.15,10.5 5.44,10.91 4.8,11.4L6.6,13.8C7.38,13.22 8.26,12.77 9.2,12.47L11.75,15C10.5,15.07 9.34,15.5 8.4,16.2L12,21L14.46,17.73L17.74,21L19,19.72M12,3C9.85,3 7.8,3.38 5.9,4.07L8.29,6.47C9.5,6.16 10.72,6 12,6C15.38,6 18.5,7.11 21,9L22.8,6.6C19.79,4.34 16.06,3 12,3M12,9C11.62,9 11.25,9 10.88,9.05L14.07,12.25C15.29,12.53 16.43,13.07 17.4,13.8L19.2,11.4C17.2,9.89 14.7,9 12,9Z"; -var mdiWifiPlus = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M16.84 13.41C17.18 13.27 17.55 13.17 17.92 13.1L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.78 12 15.44 12.5 16.84 13.41M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z"; -var mdiWifiRefresh = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L18.74 12C18.66 12 18.58 12 18.5 12C17.43 12 16.42 12.26 15.53 12.72C14.45 12.26 13.26 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L12.34 20.54C12.13 19.9 12 19.22 12 18.5C12 17.24 12.36 16.08 13 15.08C12.66 15.03 12.33 15 12 15M18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5Z"; -var mdiWifiRemove = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M21.12 15.46L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z"; -var mdiWifiSettings = "M12 20L8.4 15.2C9.4 14.45 10.65 14 12 14S14.6 14.45 15.6 15.2L12 20M4.8 10.4L6.6 12.8C8.1 11.67 9.97 11 12 11S15.9 11.67 17.4 12.8L19.2 10.4C17.19 8.89 14.7 8 12 8S6.81 8.89 4.8 10.4M12 2C7.95 2 4.21 3.34 1.2 5.6L3 8C5.5 6.12 8.62 5 12 5S18.5 6.12 21 8L22.8 5.6C19.79 3.34 16.05 2 12 2M7 24H9V22H7V24M15 24H17V22H15V24M11 24H13V22H11V24Z"; -var mdiWifiStar = "M12,6C8.6,6 5.5,7.1 3,9L1.2,6.6C4.2,4.3 8,3 12,3C16,3 19.8,4.3 22.8,6.6L21,9C18.5,7.1 15.4,6 12,6M13,19C13,17.7 13.4,16.4 14.2,15.4C13.5,15.2 12.8,15 12,15C10.7,15 9.4,15.5 8.4,16.2L12,21L13,19.6C13,19.4 13,19.2 13,19M16.8,13.4C17.1,13.3 17.5,13.2 17.9,13.1L19.2,11.4C17.2,9.9 14.7,9 12,9C9.3,9 6.8,9.9 4.8,11.4L6.6,13.8C8.1,12.7 10,12 12,12C13.8,12 15.4,12.5 16.8,13.4M16.5,22.6L17.2,19.8L15,17.9L17.9,17.7L19,15L20.1,17.6L23,17.8L20.8,19.7L21.5,22.5L19,21.1L16.5,22.6Z"; -var mdiWifiStrength1 = "M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L15.61,13.81C14.5,13.28 13.25,13 12,13C10.75,13 9.5,13.28 8.39,13.8L3.27,7.44C5.91,5.85 8.93,5 12,5Z"; -var mdiWifiStrength1Alert = "M12 3C7.8 3 3.7 4.4 .4 7C4.4 12.1 7.9 16.4 12 21.5C14.4 18.5 16.7 15.7 19 12.8V9.6L15.6 13.8C14.5 13.3 13.2 13 12 13S9.5 13.3 8.4 13.8L3.3 7.4C5.9 5.8 8.9 5 12 5S18.1 5.9 20.7 7.4L20.3 8H22.9C23.1 7.7 23.5 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18"; -var mdiWifiStrength1Lock = "M12 13C12.8 13 13.61 13.13 14.38 13.36C14.28 13.73 14.2 14.11 14.2 14.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L20.91 10.39C20.32 10.14 19.68 10 19 10C18.87 10 18.75 10.03 18.62 10.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L8.38 13.8C9.5 13.28 10.74 13 12 13M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; -var mdiWifiStrength1LockOpen = "M12 13C12.74 13 13.5 13.12 14.22 13.31C14.22 13.38 14.2 13.44 14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L21.5 9.69C20.86 9.33 20.16 9.11 19.42 9.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L8.38 13.8C9.5 13.28 10.74 13 12 13M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; -var mdiWifiStrength2 = "M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L17.5,11.43C16.26,10.74 14.37,10 12,10C9.62,10 7.74,10.75 6.5,11.43L3.27,7.44C5.91,5.85 8.93,5 12,5Z"; -var mdiWifiStrength2Alert = "M12 3C7.8 3 3.7 4.4 .4 7C4.4 12.1 7.9 16.4 12 21.5C14.4 18.5 16.7 15.7 19 12.8V9.6L17.5 11.4C16.3 10.7 14.4 10 12 10C9.6 10 7.7 10.8 6.5 11.4L3.3 7.4C5.9 5.8 8.9 5 12 5S18.1 5.9 20.7 7.4L20.3 8H22.9C23.1 7.7 23.5 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18"; -var mdiWifiStrength2Lock = "M14.2 14.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L20.91 10.39C20.32 10.14 19.68 10 19 10C18.87 10 18.74 10.03 18.61 10.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L6.5 11.43C7.73 10.75 9.61 10 12 10C13.68 10 15.12 10.38 16.26 10.84C15.03 11.67 14.2 13 14.2 14.5M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; -var mdiWifiStrength2LockOpen = "M15.44 10.55C14.68 11.35 14.2 12.38 14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L21.5 9.69C20.86 9.33 20.16 9.1 19.41 9.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L6.5 11.43C7.73 10.75 9.61 10 12 10C13.29 10 14.45 10.23 15.44 10.55M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; -var mdiWifiStrength3 = "M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L18.77,9.88C17.26,9 14.88,8 12,8C9,8 6.68,9 5.21,9.84L3.27,7.44C5.91,5.85 8.93,5 12,5Z"; -var mdiWifiStrength3Alert = "M12 3C7.8 3 3.7 4.4 .4 7C4.4 12.1 7.9 16.4 12 21.5C14.4 18.5 16.7 15.7 19 12.8V9.6L18.8 9.9C17.3 9 14.9 8 12 8C9 8 6.7 9 5.2 9.8L3.3 7.4C5.9 5.8 8.9 5 12 5S18.1 5.9 20.7 7.4L20.3 8H22.9C23.1 7.7 23.5 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18"; -var mdiWifiStrength3Lock = "M19 10C19.68 10 20.32 10.14 20.91 10.39L23.64 7C20.31 4.41 16.2 3 12 3C7.78 3 3.69 4.41 .365 7C4.39 12.06 7.88 16.37 12 21.5L13 20.24V17.2C13 16.24 13.5 15.34 14.2 14.74V14.5C14.2 12.06 16.4 10 19 10M12 8C9 8 6.67 9 5.2 9.84L3.26 7.44C5.9 5.85 8.91 5 12 5S18.08 5.86 20.7 7.45L18.76 9.88C17.25 9 14.87 8 12 8M21.8 16V14.5C21.8 13.1 20.4 12 19 12S16.2 13.1 16.2 14.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16M20.5 16H17.5V14.5C17.5 13.7 18.2 13.2 19 13.2S20.5 13.7 20.5 14.5V16Z"; -var mdiWifiStrength3LockOpen = "M14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L21.5 9.69C20.86 9.33 20.17 9.11 19.42 9.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L5.2 9.84C6.67 9 9 8 12 8C14.18 8 16.08 8.58 17.53 9.25C15.63 9.85 14.2 11.54 14.2 13.5M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; -var mdiWifiStrength4 = "M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3Z"; -var mdiWifiStrength4Alert = "M12 3C7.8 3 3.7 4.4 .4 7C4.4 12.1 7.9 16.4 12 21.5C14.4 18.5 16.7 15.7 19 12.8V8H22.8C23 7.7 23.4 7.3 23.6 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18"; -var mdiWifiStrength4Lock = "M14.2 14.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L20.91 10.39C20.32 10.14 19.68 10 19 10C16.4 10 14.2 12.06 14.2 14.5M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; -var mdiWifiStrength4LockOpen = "M14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L21.5 9.69C20.75 9.26 19.9 9 19 9C16.4 9 14.2 11.06 14.2 13.5M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; -var mdiWifiStrengthAlertOutline = "M12 3C7.8 3 3.7 4.4 .4 7C4.3 11.8 8.2 16.7 12 21.5C14.3 18.6 16.7 15.7 19 12.8V9.6L12 18.3L3.3 7.4C5.9 5.8 8.9 5 12 5C15.1 5 18.1 5.9 20.7 7.4L20.3 8H22.9C23.2 7.7 23.4 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18"; -var mdiWifiStrengthLockOpenOutline = "M23.65 7H23.64C22.92 7.9 22.2 8.79 21.5 9.69C20.87 9.33 20.17 9.11 19.43 9.04L20.71 7.45C18.09 5.86 15.07 5 12 5C8.91 5 5.9 5.85 3.27 7.44L12 18.3L13 17C13 17.08 13 17.14 13 17.2V20.25L12 21.5C8.13 16.66 4.24 11.83 .355 7H.375C3.7 4.41 7.79 3 12 3C16.22 3 20.32 4.41 23.65 7M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z"; -var mdiWifiStrengthLockOutline = "M23.65 7H23.64L20.91 10.39C20.32 10.14 19.68 10 19 10C18.87 10 18.75 10.03 18.63 10.04L20.71 7.45C18.09 5.86 15.07 5 12 5C8.91 5 5.9 5.85 3.27 7.44L12 18.3L13 17C13 17.08 13 17.14 13 17.2V20.25L12 21.5C8.13 16.66 4.24 11.83 .355 7H.375C3.7 4.41 7.79 3 12 3C16.22 3 20.32 4.41 23.65 7M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z"; -var mdiWifiStrengthOff = "M3.27,1.44L2,2.72L4.05,4.77C2.75,5.37 1.5,6.11 0.38,7C4.41,12.06 12,21.5 12,21.5L15.91,16.63L19.23,19.95L20.5,18.68M12,3C10.6,3 9.21,3.17 7.86,3.5L18.18,13.81C20,11.5 22.05,9 23.65,7C20.32,4.41 16.22,3 12,3Z"; -var mdiWifiStrengthOffOutline = "M3.27,1.44L2,2.72L4.05,4.77C2.75,5.37 1.5,6.11 0.38,7C4.2,11.8 8.14,16.67 12,21.5L15.91,16.63L19.23,19.95L20.5,18.68C14.87,13.04 3.27,1.44 3.27,1.44M12,3C10.6,3 9.21,3.17 7.86,3.5L9.56,5.19C10.37,5.07 11.18,5 12,5C15.07,5 18.09,5.86 20.71,7.45L16.76,12.38L18.18,13.8C20.08,11.43 22,9 23.65,7C20.32,4.41 16.22,3 12,3M5.57,6.29L14.5,15.21L12,18.3L3.27,7.44C4,7 4.78,6.61 5.57,6.29Z"; -var mdiWifiStrengthOutline = "M12,3C7.79,3 3.7,4.41 0.38,7H0.36C4.24,11.83 8.13,16.66 12,21.5C15.89,16.66 19.77,11.83 23.64,7H23.65C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L12,18.3L3.27,7.44C5.9,5.85 8.92,5 12,5Z"; -var mdiWifiSync = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.26 19.32C13.1 18.74 13 18.13 13 17.5C13 16.69 13.16 15.91 13.43 15.19C12.97 15.08 12.5 15 12 15M15.23 12.61C16.19 11.77 17.38 11.22 18.7 11.05C16.78 9.76 14.5 9 12 9C9.3 9 6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.14 12 14.23 12.22 15.23 12.61M19 20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20M19 13.5V12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5Z"; -var mdiWikipedia = "M14.97,18.95L12.41,12.92C11.39,14.91 10.27,17 9.31,18.95C9.3,18.96 8.84,18.95 8.84,18.95C7.37,15.5 5.85,12.1 4.37,8.68C4.03,7.84 2.83,6.5 2,6.5C2,6.4 2,6.18 2,6.05H7.06V6.5C6.46,6.5 5.44,6.9 5.7,7.55C6.42,9.09 8.94,15.06 9.63,16.58C10.1,15.64 11.43,13.16 12,12.11C11.55,11.23 10.13,7.93 9.71,7.11C9.39,6.57 8.58,6.5 7.96,6.5C7.96,6.35 7.97,6.25 7.96,6.06L12.42,6.07V6.47C11.81,6.5 11.24,6.71 11.5,7.29C12.1,8.53 12.45,9.42 13,10.57C13.17,10.23 14.07,8.38 14.5,7.41C14.76,6.76 14.37,6.5 13.29,6.5C13.3,6.38 13.3,6.17 13.3,6.07C14.69,6.06 16.78,6.06 17.15,6.05V6.47C16.44,6.5 15.71,6.88 15.33,7.46L13.5,11.3C13.68,11.81 15.46,15.76 15.65,16.2L19.5,7.37C19.2,6.65 18.34,6.5 18,6.5C18,6.37 18,6.2 18,6.05L22,6.08V6.1L22,6.5C21.12,6.5 20.57,7 20.25,7.75C19.45,9.54 17,15.24 15.4,18.95C15.4,18.95 14.97,18.95 14.97,18.95Z"; -var mdiWindTurbine = "M13.33,11.67L16.21,14.58C17.62,13.16 16.21,11.75 16.21,11.75L14.72,10.24C14.9,9.86 15,9.44 15,9C15,7.95 14.46,7.03 13.64,6.5L15,2.11C13.09,1.53 12.5,3.44 12.5,3.44L11.69,6.03C10.46,6.16 9.46,7 9.13,8.18L4.67,9.63C5.31,11.53 7.2,10.9 7.2,10.9L9.27,10.23C9.61,10.97 10.23,11.54 11,11.82V19C11,19 9,19 9,21C9,21.5 9,21.81 9,22H15V21C15,21 15,19 13,19V11.82C13.12,11.78 13.23,11.72 13.33,11.67M10.5,9A1.5,1.5 0 0,1 12,7.5A1.5,1.5 0 0,1 13.5,9A1.5,1.5 0 0,1 12,10.5A1.5,1.5 0 0,1 10.5,9Z"; -var mdiWindowClose = "M13.46,12L19,17.54V19H17.54L12,13.46L6.46,19H5V17.54L10.54,12L5,6.46V5H6.46L12,10.54L17.54,5H19V6.46L13.46,12Z"; -var mdiWindowClosed = "M6,11H10V9H14V11H18V4H6V11M18,13H6V20H18V13M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z"; -var mdiWindowClosedVariant = "M21 20V2H3V20H1V23H23V20M19 4V11H13V4M5 4H11V11H5M5 20V13H11V20M13 20V13H19V20Z"; -var mdiWindowMaximize = "M4,4H20V20H4V4M6,8V18H18V8H6Z"; -var mdiWindowMinimize = "M20,14H4V10H20"; -var mdiWindowOpen = "M6,8H10V6H14V8H18V4H6V8M18,10H6V15H18V10M6,20H18V17H6V20M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z"; -var mdiWindowOpenVariant = "M21 20V2H3V20H1V23H23V20M19 4V11H17V4M5 4H7V11H5M5 20V13H7V20M9 20V4H15V20M17 20V13H19V20Z"; -var mdiWindowRestore = "M4,8H8V4H20V16H16V20H4V8M16,8V14H18V6H10V8H16M6,12V18H14V12H6Z"; -var mdiWindowShutter = "M3 4H21V8H19V20H17V8H7V20H5V8H3V4M8 9H16V11H8V9M8 12H16V14H8V12M8 15H16V17H8V15M8 18H16V20H8V18Z"; -var mdiWindowShutterAlert = "M2 4H20V8H18V20H16V8H6V20H4V8H2V4M7 9H15V11H7V9M7 12H15V14H7V12M20 19V17H22V19H20M20 15V10H22V15H20Z"; -var mdiWindowShutterOpen = "M3 4H21V8H19V20H17V8H7V20H5V8H3V4M8 9H16V11H8V9Z"; -var mdiWindsock = "M7 5V13L22 11V7L7 5M10 6.91L13 7.31V10.69L10 11.09V6.91M16 7.71L19 8.11V9.89L16 10.29V7.71M5 10V11H6V12H5V21H3V4C3 3.45 3.45 3 4 3S5 3.45 5 4V6H6V7H5V10Z"; -var mdiWiper = "M12,4C5,4 2,9 2,9L9,16C9,16 9.5,15.1 10.4,14.5L10.7,16.5C10.3,16.8 10,17.4 10,18A2,2 0 0,0 12,20A2,2 0 0,0 14,18C14,17.1 13.5,16.4 12.7,16.1L12.3,14C14.1,14.2 15,16 15,16L22,9C22,9 19,4 12,4M15.1,13.1C14.3,12.5 13.3,12 12,12L11,6.1C11.3,6 11.7,6 12,6C15.7,6 18.1,7.7 19.3,8.9L15.1,13.1M8.9,13.1L4.7,8.9C5.5,8 7,7 9,6.4L10,12.4C9.6,12.6 9.2,12.8 8.9,13.1Z"; -var mdiWiperWash = "M13,6C13,5.7 13.1,4.6 13.8,3.8L12,2.4L10.2,3.9C10.9,4.6 11,5.7 11,6C4.7,6.4 2,11 2,11L9,18C9,18 9.7,16.7 11,16.2V18.3C10.4,18.6 10,19.3 10,20A2,2 0 0,0 12,22A2,2 0 0,0 14,20C14,19.3 13.6,18.6 13,18.3V16.2C14.3,16.7 15,18 15,18L22,11C22,11 19.3,6.5 13,6M11,14.1C10.2,14.3 9.5,14.6 8.9,15.1L4.7,10.9C5.8,9.8 7.8,8.3 11,8.1V14.1M15.1,15.1C14.5,14.7 13.8,14.3 13,14.1V8.1C16.2,8.4 18.2,9.8 19.3,10.9L15.1,15.1M18,1.3L17.3,3.2C16.6,2.9 15.5,2.9 14.7,3.2L14,1.3C15.2,0.9 16.8,0.9 18,1.3M21,6H19C19,6 19,4.7 18.2,3.9L19.7,2.6C21,4 21,5.9 21,6M4.2,2.6L5.7,3.9C5,4.7 5,6 5,6H3C3,5.9 3,4 4.2,2.6M10,1.3L9.3,3.2C8.6,2.9 7.5,2.9 6.7,3.2L6,1.3C7.2,0.9 8.8,0.9 10,1.3Z"; -var mdiWizardHat = "M21 22H3V20H21V22M19 19H5L11.1 2.6C11.3 2.2 11.6 2 12 2L18 5H13.9L19 19M10 7.5L11.04 7.97L11.5 9L11.97 7.97L13 7.5L11.97 7.03L11.5 6L11.04 7.03L10 7.5M13 15L10.94 14.07L10 12L9.07 14.07L7 15L9.07 15.93L10 18L10.94 15.93L13 15M13.97 11.97L15 11.5L13.97 11.03L13.5 10L13.04 11.03L12 11.5L13.04 11.97L13.5 13L13.97 11.97M15.97 15.97L17 15.5L15.97 15.03L15.5 14L15.04 15.03L14 15.5L15.04 15.97L15.5 17L15.97 15.97Z"; -var mdiWordpress = "M3.42,12C3.42,10.76 3.69,9.58 4.16,8.5L8.26,19.72C5.39,18.33 3.42,15.4 3.42,12M17.79,11.57C17.79,12.3 17.5,13.15 17.14,14.34L16.28,17.2L13.18,8L14.16,7.9C14.63,7.84 14.57,7.16 14.11,7.19C14.11,7.19 12.72,7.3 11.82,7.3L9.56,7.19C9.1,7.16 9.05,7.87 9.5,7.9L10.41,8L11.75,11.64L9.87,17.27L6.74,8L7.73,7.9C8.19,7.84 8.13,7.16 7.67,7.19C7.67,7.19 6.28,7.3 5.38,7.3L4.83,7.29C6.37,4.96 9,3.42 12,3.42C14.23,3.42 16.27,4.28 17.79,5.67H17.68C16.84,5.67 16.24,6.4 16.24,7.19C16.24,7.9 16.65,8.5 17.08,9.2C17.41,9.77 17.79,10.5 17.79,11.57M12.15,12.75L14.79,19.97L14.85,20.09C13.96,20.41 13,20.58 12,20.58C11.16,20.58 10.35,20.46 9.58,20.23L12.15,12.75M19.53,7.88C20.2,9.11 20.58,10.5 20.58,12C20.58,15.16 18.86,17.93 16.31,19.41L18.93,11.84C19.42,10.62 19.59,9.64 19.59,8.77L19.53,7.88M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,21.54C17.26,21.54 21.54,17.26 21.54,12C21.54,6.74 17.26,2.46 12,2.46C6.74,2.46 2.46,6.74 2.46,12C2.46,17.26 6.74,21.54 12,21.54Z"; -var mdiWrap = "M21,5H3V7H21V5M3,19H10V17H3V19M3,13H18C19,13 20,13.43 20,15C20,16.57 19,17 18,17H16V15L12,18L16,21V19H18C20.95,19 22,17.73 22,15C22,12.28 21,11 18,11H3V13Z"; -var mdiWrapDisabled = "M16,7H3V5H16V7M3,19H16V17H3V19M22,12L18,9V11H3V13H18V15L22,12Z"; -var mdiWrench = "M22.7,19L13.6,9.9C14.5,7.6 14,4.9 12.1,3C10.1,1 7.1,0.6 4.7,1.7L9,6L6,9L1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1C4.8,14 7.5,14.5 9.8,13.6L18.9,22.7C19.3,23.1 19.9,23.1 20.3,22.7L22.6,20.4C23.1,20 23.1,19.3 22.7,19Z"; -var mdiWrenchOutline = "M22.61,19L13.53,9.91C14.46,7.57 14,4.81 12.09,2.91C9.79,0.61 6.21,0.4 3.66,2.26L7.5,6.11L6.08,7.5L2.25,3.69C0.39,6.23 0.6,9.82 2.9,12.11C4.76,13.97 7.47,14.46 9.79,13.59L18.9,22.7C19.29,23.09 19.92,23.09 20.31,22.7L22.61,20.4C23,20 23,19.39 22.61,19M19.61,20.59L10.15,11.13C9.54,11.58 8.86,11.85 8.15,11.95C6.79,12.15 5.36,11.74 4.32,10.7C3.37,9.76 2.93,8.5 3,7.26L6.09,10.35L10.33,6.11L7.24,3C8.5,2.95 9.73,3.39 10.68,4.33C11.76,5.41 12.17,6.9 11.92,8.29C11.8,9 11.5,9.66 11.04,10.25L20.5,19.7L19.61,20.59Z"; -var mdiXamarin = "M22.75,11.07C22.91,11.35 23,11.67 23,12C23,12.33 22.91,12.65 22.75,12.93L18.08,21C17.72,21.62 17.06,22 16.35,22H7.65C6.94,22 6.28,21.62 5.92,21L1.25,12.93C1.09,12.65 1,12.33 1,12C1,11.67 1.09,11.35 1.25,11.07L5.92,3C6.28,2.38 6.94,2 7.65,2H16.35C17.06,2 17.72,2.38 18.08,3L22.75,11.07M12,12V11.9L9.42,7.1L9.25,7H7.66L7.5,7.1V7.3L10,12L7.5,16.7V16.9L7.66,17H9.25L9.42,16.9L12,12.1V12L12.03,12.1L14.58,16.9L14.75,17H16.34L16.5,16.9V16.7L14,12L16.5,7.3V7.1L16.34,7H14.75L14.58,7.1L12.03,11.9L12,12Z"; -var mdiXamarinOutline = "M12,12L12.03,11.9L14.58,7.1L14.75,7H16.34L16.5,7.1V7.3L14,12L16.5,16.7V16.9L16.34,17H14.75L14.58,16.9L12.03,12.1L12,12V12.1L9.42,16.9L9.25,17H7.66L7.5,16.9V16.7L10,12L7.5,7.3V7.1L7.66,7H9.25L9.42,7.1L12,11.9V12M22.75,11.07C22.91,11.35 23,11.67 23,12C23,12.33 22.91,12.65 22.75,12.93L18.08,21C17.72,21.62 17.06,22 16.35,22H7.65C6.94,22 6.28,21.62 5.92,21L1.25,12.93C1.09,12.65 1,12.33 1,12C1,11.67 1.09,11.35 1.25,11.07L5.92,3C6.28,2.38 6.94,2 7.65,2H16.35C17.06,2 17.72,2.38 18.08,3L22.75,11.07M20.8,11.25L16.97,4.8C16.68,4.3 16.14,4 15.56,4H8.44C7.86,4 7.32,4.3 7.03,4.8L3.2,11.25C3.07,11.5 3,11.74 3,12C3,12.26 3.07,12.5 3.2,12.75L7.03,19.2C7.32,19.7 7.86,20 8.44,20H15.56C16.14,20 16.68,19.7 16.97,19.2L20.8,12.75C20.93,12.5 21,12.26 21,12C21,11.74 20.93,11.5 20.8,11.25Z"; -var mdiXing = "M4.8,3C3.8,3 3,3.8 3,4.8V19.2C3,20.2 3.8,21 4.8,21H19.2C20.2,21 21,20.2 21,19.2V4.8C21,3.8 20.2,3 19.2,3M16.07,5H18.11C18.23,5 18.33,5.04 18.37,5.13C18.43,5.22 18.43,5.33 18.37,5.44L13.9,13.36L16.75,18.56C16.81,18.67 16.81,18.78 16.75,18.87C16.7,18.95 16.61,19 16.5,19H14.47C14.16,19 14,18.79 13.91,18.61L11.04,13.35C11.18,13.1 15.53,5.39 15.53,5.39C15.64,5.19 15.77,5 16.07,5M7.09,7.76H9.1C9.41,7.76 9.57,7.96 9.67,8.15L11.06,10.57C10.97,10.71 8.88,14.42 8.88,14.42C8.77,14.61 8.63,14.81 8.32,14.81H6.3C6.18,14.81 6.09,14.76 6.04,14.67C6,14.59 6,14.47 6.04,14.36L8.18,10.57L6.82,8.2C6.77,8.09 6.75,8 6.81,7.89C6.86,7.81 6.96,7.76 7.09,7.76Z"; -var mdiXml = "M12.89,3L14.85,3.4L11.11,21L9.15,20.6L12.89,3M19.59,12L16,8.41V5.58L22.42,12L16,18.41V15.58L19.59,12M1.58,12L8,5.58V8.41L4.41,12L8,15.58V18.41L1.58,12Z"; -var mdiXmpp = "M12,15.4C9.75,13.09 8,9.54 8,6C2,4 8,6 2,4C2,9.65 6.33,14.11 10.55,16.66C9.38,17.5 8.15,18 7,18C7,19 7,18 7,19C8.2,19 10.03,18.46 12,17.46C13.97,18.46 15.8,19 17,19C17,18 17,19 17,18C15.85,18 14.62,17.5 13.45,16.66C17.66,14.11 22,9.65 22,4C16,6 22,4 16,6C16,9.54 14.25,13.09 12,15.4Z"; -var mdiYCombinator = "M2,2H22V22H2V2M11.25,17.5H12.75V13.06L16,7H14.5L12,11.66L9.5,7H8L11.25,13.06V17.5Z"; -var mdiYahoo = "M10.5 7.59L8.16 13.2L5.85 7.59H2L6.29 17.23L4.75 20.7H8.5L14.24 7.59H10.5M15 12.73C13.63 12.73 12.59 13.77 12.59 15C12.59 16.17 13.59 17.16 14.93 17.16C16.32 17.16 17.36 16.13 17.36 14.9C17.36 13.69 16.36 12.73 15 12.73M17.72 3.3L13.89 11.89H18.17L22 3.3H17.72Z"; -var mdiYeast = "M18,14A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18L14.09,17.15C14.05,16.45 13.92,15.84 13.55,15.5C13.35,15.3 13.07,15.19 12.75,15.13C11.79,15.68 10.68,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,10.68 15.68,11.79 15.13,12.75C15.19,13.07 15.3,13.35 15.5,13.55C15.84,13.92 16.45,14.05 17.15,14.09L18,14M7.5,10A1.5,1.5 0 0,1 9,11.5A1.5,1.5 0 0,1 7.5,13A1.5,1.5 0 0,1 6,11.5A1.5,1.5 0 0,1 7.5,10M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"; -var mdiYinYang = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4M12,6.5A1.5,1.5 0 0,1 13.5,8A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 10.5,8A1.5,1.5 0 0,1 12,6.5M12,14.5A1.5,1.5 0 0,0 10.5,16A1.5,1.5 0 0,0 12,17.5A1.5,1.5 0 0,0 13.5,16A1.5,1.5 0 0,0 12,14.5Z"; -var mdiYoga = "M13 2C11.9 2 11 2.9 11 4C11 5.11 11.9 6 13 6C14.11 6 15 5.11 15 4C15 2.9 14.11 2 13 2M4 7V9H10V15L4.93 20.07L6.34 21.5L13.06 14.77L17 17.13V21H19V16.57C19 16.21 18.82 15.89 18.5 15.71L15 13.6V9H21V7H4Z"; -var mdiYoutube = "M10,15L15.19,12L10,9V15M21.56,7.17C21.69,7.64 21.78,8.27 21.84,9.07C21.91,9.87 21.94,10.56 21.94,11.16L22,12C22,14.19 21.84,15.8 21.56,16.83C21.31,17.73 20.73,18.31 19.83,18.56C19.36,18.69 18.5,18.78 17.18,18.84C15.88,18.91 14.69,18.94 13.59,18.94L12,19C7.81,19 5.2,18.84 4.17,18.56C3.27,18.31 2.69,17.73 2.44,16.83C2.31,16.36 2.22,15.73 2.16,14.93C2.09,14.13 2.06,13.44 2.06,12.84L2,12C2,9.81 2.16,8.2 2.44,7.17C2.69,6.27 3.27,5.69 4.17,5.44C4.64,5.31 5.5,5.22 6.82,5.16C8.12,5.09 9.31,5.06 10.41,5.06L12,5C16.19,5 18.8,5.16 19.83,5.44C20.73,5.69 21.31,6.27 21.56,7.17Z"; -var mdiYoutubeGaming = "M22 13V8L17 5L12 8L7 5L2 8V13L12 19L22 13M9 11H7V13H6V11H4V10H6V8H7V10H9V11M15 13C14.45 13 14 12.55 14 12S14.45 11 15 11 16 11.45 16 12 15.55 13 15 13M18 11C17.45 11 17 10.55 17 10S17.45 9 18 9 19 9.45 19 10 18.55 11 18 11Z"; -var mdiYoutubeStudio = "M10,15L15,12L10,9V15M19.45,13L21.56,14.63C21.78,14.78 21.81,15 21.66,15.28L19.64,18.75C19.5,18.97 19.31,19.03 19.03,18.94L16.55,17.95C15.89,18.42 15.33,18.75 14.86,18.94L14.5,21.56C14.42,21.84 14.27,22 14,22H10C9.73,22 9.58,21.84 9.5,21.56L9.14,18.94C8.55,18.69 8,18.36 7.45,17.95L4.97,18.94C4.69,19.03 4.5,18.97 4.36,18.75L2.34,15.28C2.19,15 2.22,14.78 2.44,14.63L4.55,13C4.5,12.77 4.5,12.44 4.5,12C4.5,11.56 4.5,11.23 4.55,11L2.44,9.38C2.22,9.22 2.19,9 2.34,8.72L4.36,5.25C4.5,5.03 4.69,4.97 4.97,5.06L7.45,6.05C8.11,5.58 8.67,5.25 9.14,5.06L9.5,2.44C9.58,2.16 9.73,2 10,2H14C14.27,2 14.42,2.16 14.5,2.44L14.86,5.06C15.45,5.31 16,5.64 16.55,6.05L19.03,5.06C19.31,4.97 19.5,5.03 19.64,5.25L21.66,8.72C21.81,9 21.78,9.22 21.56,9.38L19.45,11C19.5,11.23 19.5,11.56 19.5,12C19.5,12.44 19.5,12.77 19.45,13Z"; -var mdiYoutubeSubscription = "M20,8H4V6H20V8M18,2H6V4H18V2M22,12V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12A2,2 0 0,1 4,10H20A2,2 0 0,1 22,12M16,16L10,12.73V19.26L16,16Z"; -var mdiYoutubeTv = "M2.5,4.5H21.5C22.34,4.5 23,5.15 23,6V17.5C23,18.35 22.34,19 21.5,19H2.5C1.65,19 1,18.35 1,17.5V6C1,5.15 1.65,4.5 2.5,4.5M9.71,8.5V15L15.42,11.7L9.71,8.5M17.25,21H6.65C6.35,21 6.15,20.8 6.15,20.5C6.15,20.2 6.35,20 6.65,20H17.35C17.65,20 17.85,20.2 17.85,20.5C17.85,20.8 17.55,21 17.25,21Z"; -var mdiYurt = "M22 14.87V22H14V16H10V22H2V14.87C2 14.33 2.29 13.83 2.76 13.57L8.66 10.2C8.88 10.07 9.14 10 9.4 10H12.5V9H14V10H14.59C14.85 10 15.11 10.07 15.33 10.2L21.23 13.57C21.71 13.84 22 14.33 22 14.87M7.86 6.25H9.4C10.73 6.25 11.92 6.95 12.5 8H14C13.6 6.2 12 4.85 10.1 4.85V3.35C11.1 3.35 11.95 2.5 11.95 1.5V1H7.86V2.5C6.86 2.5 6 3.23 6 4.25S6.86 6.25 7.86 6.25Z"; -var mdiZWave = "M16.3,10.58C13.14,10.58 10.6,13.13 10.6,16.28C10.6,19.43 13.15,22 16.3,22C19.45,22 22,19.43 22,16.28C22,13.13 19.45,10.58 16.3,10.58M18,19.08H13.19L15.81,15H13.31L14.4,13.23H19.18L16.63,17.28H19.18L18,19.08M16.3,3.93V2C8.41,2 2,8.42 2,16.31H3.92C3.94,9.46 9.5,3.93 16.3,3.93M16.3,7.74V5.82C10.5,5.82 5.81,10.53 5.81,16.31H7.73C7.75,11.58 11.59,7.74 16.3,7.74"; -var mdiZend = "M11.28,9.81C11.28,9.81 11.28,7 14.09,7H22.5C22.5,7 22.5,9.81 19.71,9.81H11.28M11.28,13.41C11.28,13.41 11.28,10.6 14.09,10.6H18.31C18.31,10.6 18.31,13.41 15.5,13.41H11.28M11.28,17C11.28,17 11.28,14.19 14.09,14.19H15.5C15.5,14.19 15.5,17 12.68,17H11.28M10.46,14.8V17H1.58L7.3,9.21H2.4V7H11.66L5.96,14.8H10.46Z"; -var mdiZigbee = "M4.06,6.15C3.97,6.17 3.88,6.22 3.8,6.28C2.66,7.9 2,9.87 2,12A10,10 0 0,0 12,22C15,22 17.68,20.68 19.5,18.6L17,18.85C14.25,19.15 11.45,19.19 8.66,18.96C7.95,18.94 7.24,18.76 6.59,18.45C5.73,18.06 5.15,17.23 5.07,16.29C5.06,16.13 5.12,16 5.23,15.87L7.42,13.6L15.03,5.7V5.6H10.84C8.57,5.64 6.31,5.82 4.06,6.15M20.17,17.5C20.26,17.47 20.35,17.44 20.43,17.39C21.42,15.83 22,14 22,12A10,10 0 0,0 12,2C9.22,2 6.7,3.13 4.89,4.97H5.17C8.28,4.57 11.43,4.47 14.56,4.65C15.5,4.64 16.45,4.82 17.33,5.17C18.25,5.53 18.89,6.38 19,7.37C19,7.53 18.93,7.7 18.82,7.82L9.71,17.19L9,17.95V18.06H13.14C15.5,18 17.84,17.81 20.17,17.5Z"; -var mdiZipBox = "M14,17H12V15H10V13H12V15H14M14,9H12V11H14V13H12V11H10V9H12V7H10V5H12V7H14M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"; -var mdiZipBoxOutline = "M12 17V15H14V17H12M14 13V11H12V13H14M14 9V7H12V9H14M10 11H12V9H10V11M10 15H12V13H10V15M21 5V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19C20.1 3 21 3.9 21 5M19 5H12V7H10V5H5V19H19V5Z"; -var mdiZipDisk = "M7,3L3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5L17,3V5A1,1 0 0,1 16,6H10A1,1 0 0,1 9,5V3H7M8,10H16A1,1 0 0,1 17,11V19H7V11A1,1 0 0,1 8,10Z"; -var mdiZodiacAquarius = "M15,12.41L12,9.41L9,12.41L6,9.41L3.71,11.71L2.29,10.29L6,6.59L9,9.59L12,6.59L15,9.59L18,6.59L21.71,10.29L20.29,11.71L18,9.41L15,12.41M18,15.41L20.29,17.71L21.71,16.29L18,12.59L15,15.59L12,12.59L9,15.59L6,12.59L2.29,16.29L3.71,17.71L6,15.41L9,18.41L12,15.41L15,18.41L18,15.41Z"; -var mdiZodiacAries = "M16,2C14.95,2 13.91,2.27 13,2.81C12.64,3 12.3,3.26 12,3.54C11.7,3.26 11.36,3 11,2.81C10.09,2.27 9.05,2 8,2A6,6 0 0,0 2,8A6,6 0 0,0 8,14V12A4,4 0 0,1 4,8A4,4 0 0,1 8,4C9,4 10,4.39 10.75,5.1C10.84,5.18 10.92,5.27 11,5.36V22H13V5.36C13.08,5.27 13.16,5.18 13.25,5.1C14.85,3.58 17.38,3.64 18.91,5.25C20.43,6.85 20.36,9.38 18.76,10.9C18,11.61 17.03,12 16,12V14A6,6 0 0,0 22,8A6,6 0 0,0 16,2Z"; -var mdiZodiacCancer = "M12,4C6.5,4 2,7.58 2,12C2,14.12 3.65,15.87 5.76,16H6A4,4 0 0,0 10,12A4,4 0 0,0 6,8H5.76C7.44,6.41 9.69,5.55 12,5.6C13.77,5.58 15.5,6.07 17,7L18.25,5.75C16.38,4.58 14.21,3.97 12,4M6,10A2,2 0 0,1 8,12C8,13.11 7.08,14 6,14C4.96,14 4.1,13.22 4,12.2C4,12.07 4,11.93 4,11.8C4.1,10.77 4.97,10 6,10M18.24,8H18A4,4 0 0,0 14,12A4,4 0 0,0 18,16H18.24C16.56,17.59 14.31,18.45 12,18.4C10.23,18.42 8.5,17.93 7,17L5.76,18.24C7.63,19.41 9.79,20 12,20C17.5,20 22,16.42 22,12C22,9.88 20.35,8.13 18.24,8M18,14A2,2 0 0,1 16,12C16,10.89 16.92,10 18,10C19.04,10 19.9,10.78 20,11.8C20,11.93 20,12.07 20,12.2C19.9,13.23 19.03,14 18,14Z"; -var mdiZodiacCapricorn = "M15,13C14.3,13 13.61,13.19 13,13.55V6A3,3 0 0,0 10,3C9.25,3 8.55,3.29 8,3.78C7.45,3.28 6.74,3 6,3V5A1,1 0 0,1 7,6V16H9V6A1,1 0 0,1 10,5A1,1 0 0,1 11,6V17A2,2 0 0,1 9,19V21C10.15,21 11.25,20.5 12,19.62C13.45,21.29 15.97,21.47 17.64,20C19.31,18.58 19.5,16.05 18.04,14.38C17.28,13.5 16.17,13 15,13M15,19A2,2 0 0,1 13,17A2,2 0 0,1 15,15A2,2 0 0,1 17,17A2,2 0 0,1 15,19Z"; -var mdiZodiacGemini = "M18,5.3C19.35,4.97 20.66,4.54 21.94,4L21.18,2.14C18.27,3.36 15.15,4 12,4C8.85,4 5.73,3.38 2.82,2.17L2.06,4C3.34,4.54 4.65,4.97 6,5.3V18.7C4.65,19.03 3.34,19.46 2.06,20L2.82,21.86C8.7,19.42 15.3,19.42 21.18,21.86L21.94,20C20.66,19.46 19.35,19.03 18,18.7V5.3M8,18.3V5.69C9.32,5.89 10.66,6 12,6C13.34,6 14.68,5.89 16,5.69V18.31C13.35,17.9 10.65,17.9 8,18.31V18.3Z"; -var mdiZodiacLeo = "M20,17A3,3 0 0,1 17,20C15.38,19.92 14.08,18.62 14,17C14.16,15.39 14.5,13.8 15,12.26C15.54,10.55 15.87,8.79 16,7C15.93,4.27 13.73,2.07 11,2C8.27,2.07 6.07,4.27 6,7C6.15,8.53 6.5,10.03 7,11.5L7.21,12.2C5.1,11.53 2.86,12.7 2.19,14.8C1.5,16.91 2.68,19.16 4.79,19.83C6.9,20.5 9.14,19.33 9.81,17.22C9.94,16.83 10,16.41 10,16C9.84,14.27 9.5,12.56 8.91,10.92C8.47,9.65 8.16,8.34 8,7C8.08,5.38 9.38,4.08 11,4C12.62,4.08 13.92,5.38 14,7C13.84,8.61 13.5,10.2 13,11.74C12.46,13.45 12.13,15.21 12,17C12.07,19.73 14.27,21.93 17,22A5,5 0 0,0 22,17H20M6,18A2,2 0 0,1 4,16A2,2 0 0,1 6,14A2,2 0 0,1 8,16A2,2 0 0,1 6,18Z"; -var mdiZodiacLibra = "M20,16V18H13V15.91C16,15.36 17.96,12.5 17.41,9.5C16.86,6.5 14,4.54 11,5.09C8,5.65 6.04,8.5 6.59,11.5C7,13.74 8.76,15.5 11,15.91V18H4V16H6.92C5.37,14.59 4.5,12.59 4.5,10.5A7.5,7.5 0 0,1 12,3A7.5,7.5 0 0,1 19.5,10.5C19.5,12.59 18.63,14.59 17.08,16H20M20,19H4V21H20V19Z"; -var mdiZodiacPisces = "M20,11H18C18.11,8.19 18.73,5.42 19.81,2.82L18,2.06C16.81,4.9 16.13,7.92 16,11H8C7.87,7.92 7.19,4.9 6,2.06L4.14,2.82C5.24,5.41 5.87,8.18 6,11H4V13H6C5.89,15.81 5.27,18.58 4.19,21.18L6,21.94C7.19,19.1 7.87,16.08 8,13H16C16.13,16.08 16.81,19.1 18,21.94L19.86,21.18C18.76,18.59 18.13,15.82 18,13H20V11Z"; -var mdiZodiacSagittarius = "M22,2V12H20V5.41L10.41,15L12.71,17.29L11.29,18.71L9,16.41L3.71,21.71L2.29,20.29L7.59,15L5.29,12.71L6.71,11.29L9,13.59L18.59,4H12V2H22Z"; -var mdiZodiacScorpio = "M17.71,15.29L16.29,16.71L17.59,18H16A2,2 0 0,1 14,16V6A3,3 0 0,0 11,3C10.25,3 9.55,3.29 9,3.78C7.86,2.76 6.14,2.76 5,3.78C4.45,3.28 3.74,3 3,3V5A1,1 0 0,1 4,6V16H6V6A1,1 0 0,1 7,5A1,1 0 0,1 8,6V16H10V6A1,1 0 0,1 11,5A1,1 0 0,1 12,6V16A4,4 0 0,0 16,20H17.59L16.29,21.29L17.71,22.71L21.41,19L17.71,15.29Z"; -var mdiZodiacTaurus = "M15.59,9C17.7,7.74 19,5.46 19,3H17A5,5 0 0,1 12,8A5,5 0 0,1 7,3H5C5,5.46 6.3,7.74 8.41,9C5.09,11 4,15.28 6,18.6C7.97,21.92 12.27,23 15.59,21C18.91,19.04 20,14.74 18,11.42C17.42,10.43 16.58,9.59 15.59,9M12,20A5,5 0 0,1 7,15A5,5 0 0,1 12,10A5,5 0 0,1 17,15A5,5 0 0,1 12,20Z"; -var mdiZodiacVirgo = "M18.5,19.13C20,17.77 20,15.18 20,14A4,4 0 0,0 16,10C15.3,10 14.6,10.2 14,10.56V6A3,3 0 0,0 11,3C10.25,3 9.55,3.29 9,3.78C7.86,2.76 6.14,2.76 5,3.78C4.45,3.28 3.74,3 3,3V5A1,1 0 0,1 4,6V16H6V6A1,1 0 0,1 7,5A1,1 0 0,1 8,6V16H10V6A1,1 0 0,1 11,5A1,1 0 0,1 12,6V14C12,15.18 12,17.77 13.5,19.13C12.72,19.54 11.88,19.84 11,20V22C12.29,22 14.84,20.74 16,20.13C17.16,20.74 19.71,22 21,22V20C20.12,19.84 19.28,19.54 18.5,19.13M16,12A2,2 0 0,1 18,14C18,16.92 17.46,18 16,18C14.54,18 14,16.92 14,14A2,2 0 0,1 16,12Z"; - -var mdiIcons = /*#__PURE__*/Object.freeze({ - __proto__: null, - mdiAbTesting: mdiAbTesting, - mdiAbacus: mdiAbacus, - mdiAbjadArabic: mdiAbjadArabic, - mdiAbjadHebrew: mdiAbjadHebrew, - mdiAbugidaDevanagari: mdiAbugidaDevanagari, - mdiAbugidaThai: mdiAbugidaThai, - mdiAccessPoint: mdiAccessPoint, - mdiAccessPointCheck: mdiAccessPointCheck, - mdiAccessPointMinus: mdiAccessPointMinus, - mdiAccessPointNetwork: mdiAccessPointNetwork, - mdiAccessPointNetworkOff: mdiAccessPointNetworkOff, - mdiAccessPointOff: mdiAccessPointOff, - mdiAccessPointPlus: mdiAccessPointPlus, - mdiAccessPointRemove: mdiAccessPointRemove, - mdiAccount: mdiAccount, - mdiAccountAlert: mdiAccountAlert, - mdiAccountAlertOutline: mdiAccountAlertOutline, - mdiAccountArrowLeft: mdiAccountArrowLeft, - mdiAccountArrowLeftOutline: mdiAccountArrowLeftOutline, - mdiAccountArrowRight: mdiAccountArrowRight, - mdiAccountArrowRightOutline: mdiAccountArrowRightOutline, - mdiAccountBox: mdiAccountBox, - mdiAccountBoxMultiple: mdiAccountBoxMultiple, - mdiAccountBoxMultipleOutline: mdiAccountBoxMultipleOutline, - mdiAccountBoxOutline: mdiAccountBoxOutline, - mdiAccountCancel: mdiAccountCancel, - mdiAccountCancelOutline: mdiAccountCancelOutline, - mdiAccountCash: mdiAccountCash, - mdiAccountCashOutline: mdiAccountCashOutline, - mdiAccountCheck: mdiAccountCheck, - mdiAccountCheckOutline: mdiAccountCheckOutline, - mdiAccountChild: mdiAccountChild, - mdiAccountChildCircle: mdiAccountChildCircle, - mdiAccountChildOutline: mdiAccountChildOutline, - mdiAccountCircle: mdiAccountCircle, - mdiAccountCircleOutline: mdiAccountCircleOutline, - mdiAccountClock: mdiAccountClock, - mdiAccountClockOutline: mdiAccountClockOutline, - mdiAccountCog: mdiAccountCog, - mdiAccountCogOutline: mdiAccountCogOutline, - mdiAccountConvert: mdiAccountConvert, - mdiAccountConvertOutline: mdiAccountConvertOutline, - mdiAccountCowboyHat: mdiAccountCowboyHat, - mdiAccountDetails: mdiAccountDetails, - mdiAccountDetailsOutline: mdiAccountDetailsOutline, - mdiAccountEdit: mdiAccountEdit, - mdiAccountEditOutline: mdiAccountEditOutline, - mdiAccountGroup: mdiAccountGroup, - mdiAccountGroupOutline: mdiAccountGroupOutline, - mdiAccountHardHat: mdiAccountHardHat, - mdiAccountHeart: mdiAccountHeart, - mdiAccountHeartOutline: mdiAccountHeartOutline, - mdiAccountKey: mdiAccountKey, - mdiAccountKeyOutline: mdiAccountKeyOutline, - mdiAccountLock: mdiAccountLock, - mdiAccountLockOutline: mdiAccountLockOutline, - mdiAccountMinus: mdiAccountMinus, - mdiAccountMinusOutline: mdiAccountMinusOutline, - mdiAccountMultiple: mdiAccountMultiple, - mdiAccountMultipleCheck: mdiAccountMultipleCheck, - mdiAccountMultipleCheckOutline: mdiAccountMultipleCheckOutline, - mdiAccountMultipleMinus: mdiAccountMultipleMinus, - mdiAccountMultipleMinusOutline: mdiAccountMultipleMinusOutline, - mdiAccountMultipleOutline: mdiAccountMultipleOutline, - mdiAccountMultiplePlus: mdiAccountMultiplePlus, - mdiAccountMultiplePlusOutline: mdiAccountMultiplePlusOutline, - mdiAccountMultipleRemove: mdiAccountMultipleRemove, - mdiAccountMultipleRemoveOutline: mdiAccountMultipleRemoveOutline, - mdiAccountMusic: mdiAccountMusic, - mdiAccountMusicOutline: mdiAccountMusicOutline, - mdiAccountNetwork: mdiAccountNetwork, - mdiAccountNetworkOutline: mdiAccountNetworkOutline, - mdiAccountOff: mdiAccountOff, - mdiAccountOffOutline: mdiAccountOffOutline, - mdiAccountOutline: mdiAccountOutline, - mdiAccountPlus: mdiAccountPlus, - mdiAccountPlusOutline: mdiAccountPlusOutline, - mdiAccountQuestion: mdiAccountQuestion, - mdiAccountQuestionOutline: mdiAccountQuestionOutline, - mdiAccountReactivate: mdiAccountReactivate, - mdiAccountReactivateOutline: mdiAccountReactivateOutline, - mdiAccountRemove: mdiAccountRemove, - mdiAccountRemoveOutline: mdiAccountRemoveOutline, - mdiAccountSearch: mdiAccountSearch, - mdiAccountSearchOutline: mdiAccountSearchOutline, - mdiAccountSettings: mdiAccountSettings, - mdiAccountSettingsOutline: mdiAccountSettingsOutline, - mdiAccountStar: mdiAccountStar, - mdiAccountStarOutline: mdiAccountStarOutline, - mdiAccountSupervisor: mdiAccountSupervisor, - mdiAccountSupervisorCircle: mdiAccountSupervisorCircle, - mdiAccountSupervisorCircleOutline: mdiAccountSupervisorCircleOutline, - mdiAccountSupervisorOutline: mdiAccountSupervisorOutline, - mdiAccountSwitch: mdiAccountSwitch, - mdiAccountSwitchOutline: mdiAccountSwitchOutline, - mdiAccountTie: mdiAccountTie, - mdiAccountTieOutline: mdiAccountTieOutline, - mdiAccountTieVoice: mdiAccountTieVoice, - mdiAccountTieVoiceOff: mdiAccountTieVoiceOff, - mdiAccountTieVoiceOffOutline: mdiAccountTieVoiceOffOutline, - mdiAccountTieVoiceOutline: mdiAccountTieVoiceOutline, - mdiAccountVoice: mdiAccountVoice, - mdiAdjust: mdiAdjust, - mdiAdobe: mdiAdobe, - mdiAdobeAcrobat: mdiAdobeAcrobat, - mdiAirConditioner: mdiAirConditioner, - mdiAirFilter: mdiAirFilter, - mdiAirHorn: mdiAirHorn, - mdiAirHumidifier: mdiAirHumidifier, - mdiAirHumidifierOff: mdiAirHumidifierOff, - mdiAirPurifier: mdiAirPurifier, - mdiAirbag: mdiAirbag, - mdiAirballoon: mdiAirballoon, - mdiAirballoonOutline: mdiAirballoonOutline, - mdiAirplane: mdiAirplane, - mdiAirplaneLanding: mdiAirplaneLanding, - mdiAirplaneOff: mdiAirplaneOff, - mdiAirplaneTakeoff: mdiAirplaneTakeoff, - mdiAirport: mdiAirport, - mdiAlarm: mdiAlarm, - mdiAlarmBell: mdiAlarmBell, - mdiAlarmCheck: mdiAlarmCheck, - mdiAlarmLight: mdiAlarmLight, - mdiAlarmLightOff: mdiAlarmLightOff, - mdiAlarmLightOffOutline: mdiAlarmLightOffOutline, - mdiAlarmLightOutline: mdiAlarmLightOutline, - mdiAlarmMultiple: mdiAlarmMultiple, - mdiAlarmNote: mdiAlarmNote, - mdiAlarmNoteOff: mdiAlarmNoteOff, - mdiAlarmOff: mdiAlarmOff, - mdiAlarmPanel: mdiAlarmPanel, - mdiAlarmPanelOutline: mdiAlarmPanelOutline, - mdiAlarmPlus: mdiAlarmPlus, - mdiAlarmSnooze: mdiAlarmSnooze, - mdiAlbum: mdiAlbum, - mdiAlert: mdiAlert, - mdiAlertBox: mdiAlertBox, - mdiAlertBoxOutline: mdiAlertBoxOutline, - mdiAlertCircle: mdiAlertCircle, - mdiAlertCircleCheck: mdiAlertCircleCheck, - mdiAlertCircleCheckOutline: mdiAlertCircleCheckOutline, - mdiAlertCircleOutline: mdiAlertCircleOutline, - mdiAlertDecagram: mdiAlertDecagram, - mdiAlertDecagramOutline: mdiAlertDecagramOutline, - mdiAlertMinus: mdiAlertMinus, - mdiAlertMinusOutline: mdiAlertMinusOutline, - mdiAlertOctagon: mdiAlertOctagon, - mdiAlertOctagonOutline: mdiAlertOctagonOutline, - mdiAlertOctagram: mdiAlertOctagram, - mdiAlertOctagramOutline: mdiAlertOctagramOutline, - mdiAlertOutline: mdiAlertOutline, - mdiAlertPlus: mdiAlertPlus, - mdiAlertPlusOutline: mdiAlertPlusOutline, - mdiAlertRemove: mdiAlertRemove, - mdiAlertRemoveOutline: mdiAlertRemoveOutline, - mdiAlertRhombus: mdiAlertRhombus, - mdiAlertRhombusOutline: mdiAlertRhombusOutline, - mdiAlien: mdiAlien, - mdiAlienOutline: mdiAlienOutline, - mdiAlignHorizontalCenter: mdiAlignHorizontalCenter, - mdiAlignHorizontalLeft: mdiAlignHorizontalLeft, - mdiAlignHorizontalRight: mdiAlignHorizontalRight, - mdiAlignVerticalBottom: mdiAlignVerticalBottom, - mdiAlignVerticalCenter: mdiAlignVerticalCenter, - mdiAlignVerticalTop: mdiAlignVerticalTop, - mdiAllInclusive: mdiAllInclusive, - mdiAllergy: mdiAllergy, - mdiAlpha: mdiAlpha, - mdiAlphaA: mdiAlphaA, - mdiAlphaABox: mdiAlphaABox, - mdiAlphaABoxOutline: mdiAlphaABoxOutline, - mdiAlphaACircle: mdiAlphaACircle, - mdiAlphaACircleOutline: mdiAlphaACircleOutline, - mdiAlphaB: mdiAlphaB, - mdiAlphaBBox: mdiAlphaBBox, - mdiAlphaBBoxOutline: mdiAlphaBBoxOutline, - mdiAlphaBCircle: mdiAlphaBCircle, - mdiAlphaBCircleOutline: mdiAlphaBCircleOutline, - mdiAlphaC: mdiAlphaC, - mdiAlphaCBox: mdiAlphaCBox, - mdiAlphaCBoxOutline: mdiAlphaCBoxOutline, - mdiAlphaCCircle: mdiAlphaCCircle, - mdiAlphaCCircleOutline: mdiAlphaCCircleOutline, - mdiAlphaD: mdiAlphaD, - mdiAlphaDBox: mdiAlphaDBox, - mdiAlphaDBoxOutline: mdiAlphaDBoxOutline, - mdiAlphaDCircle: mdiAlphaDCircle, - mdiAlphaDCircleOutline: mdiAlphaDCircleOutline, - mdiAlphaE: mdiAlphaE, - mdiAlphaEBox: mdiAlphaEBox, - mdiAlphaEBoxOutline: mdiAlphaEBoxOutline, - mdiAlphaECircle: mdiAlphaECircle, - mdiAlphaECircleOutline: mdiAlphaECircleOutline, - mdiAlphaF: mdiAlphaF, - mdiAlphaFBox: mdiAlphaFBox, - mdiAlphaFBoxOutline: mdiAlphaFBoxOutline, - mdiAlphaFCircle: mdiAlphaFCircle, - mdiAlphaFCircleOutline: mdiAlphaFCircleOutline, - mdiAlphaG: mdiAlphaG, - mdiAlphaGBox: mdiAlphaGBox, - mdiAlphaGBoxOutline: mdiAlphaGBoxOutline, - mdiAlphaGCircle: mdiAlphaGCircle, - mdiAlphaGCircleOutline: mdiAlphaGCircleOutline, - mdiAlphaH: mdiAlphaH, - mdiAlphaHBox: mdiAlphaHBox, - mdiAlphaHBoxOutline: mdiAlphaHBoxOutline, - mdiAlphaHCircle: mdiAlphaHCircle, - mdiAlphaHCircleOutline: mdiAlphaHCircleOutline, - mdiAlphaI: mdiAlphaI, - mdiAlphaIBox: mdiAlphaIBox, - mdiAlphaIBoxOutline: mdiAlphaIBoxOutline, - mdiAlphaICircle: mdiAlphaICircle, - mdiAlphaICircleOutline: mdiAlphaICircleOutline, - mdiAlphaJ: mdiAlphaJ, - mdiAlphaJBox: mdiAlphaJBox, - mdiAlphaJBoxOutline: mdiAlphaJBoxOutline, - mdiAlphaJCircle: mdiAlphaJCircle, - mdiAlphaJCircleOutline: mdiAlphaJCircleOutline, - mdiAlphaK: mdiAlphaK, - mdiAlphaKBox: mdiAlphaKBox, - mdiAlphaKBoxOutline: mdiAlphaKBoxOutline, - mdiAlphaKCircle: mdiAlphaKCircle, - mdiAlphaKCircleOutline: mdiAlphaKCircleOutline, - mdiAlphaL: mdiAlphaL, - mdiAlphaLBox: mdiAlphaLBox, - mdiAlphaLBoxOutline: mdiAlphaLBoxOutline, - mdiAlphaLCircle: mdiAlphaLCircle, - mdiAlphaLCircleOutline: mdiAlphaLCircleOutline, - mdiAlphaM: mdiAlphaM, - mdiAlphaMBox: mdiAlphaMBox, - mdiAlphaMBoxOutline: mdiAlphaMBoxOutline, - mdiAlphaMCircle: mdiAlphaMCircle, - mdiAlphaMCircleOutline: mdiAlphaMCircleOutline, - mdiAlphaN: mdiAlphaN, - mdiAlphaNBox: mdiAlphaNBox, - mdiAlphaNBoxOutline: mdiAlphaNBoxOutline, - mdiAlphaNCircle: mdiAlphaNCircle, - mdiAlphaNCircleOutline: mdiAlphaNCircleOutline, - mdiAlphaO: mdiAlphaO, - mdiAlphaOBox: mdiAlphaOBox, - mdiAlphaOBoxOutline: mdiAlphaOBoxOutline, - mdiAlphaOCircle: mdiAlphaOCircle, - mdiAlphaOCircleOutline: mdiAlphaOCircleOutline, - mdiAlphaP: mdiAlphaP, - mdiAlphaPBox: mdiAlphaPBox, - mdiAlphaPBoxOutline: mdiAlphaPBoxOutline, - mdiAlphaPCircle: mdiAlphaPCircle, - mdiAlphaPCircleOutline: mdiAlphaPCircleOutline, - mdiAlphaQ: mdiAlphaQ, - mdiAlphaQBox: mdiAlphaQBox, - mdiAlphaQBoxOutline: mdiAlphaQBoxOutline, - mdiAlphaQCircle: mdiAlphaQCircle, - mdiAlphaQCircleOutline: mdiAlphaQCircleOutline, - mdiAlphaR: mdiAlphaR, - mdiAlphaRBox: mdiAlphaRBox, - mdiAlphaRBoxOutline: mdiAlphaRBoxOutline, - mdiAlphaRCircle: mdiAlphaRCircle, - mdiAlphaRCircleOutline: mdiAlphaRCircleOutline, - mdiAlphaS: mdiAlphaS, - mdiAlphaSBox: mdiAlphaSBox, - mdiAlphaSBoxOutline: mdiAlphaSBoxOutline, - mdiAlphaSCircle: mdiAlphaSCircle, - mdiAlphaSCircleOutline: mdiAlphaSCircleOutline, - mdiAlphaT: mdiAlphaT, - mdiAlphaTBox: mdiAlphaTBox, - mdiAlphaTBoxOutline: mdiAlphaTBoxOutline, - mdiAlphaTCircle: mdiAlphaTCircle, - mdiAlphaTCircleOutline: mdiAlphaTCircleOutline, - mdiAlphaU: mdiAlphaU, - mdiAlphaUBox: mdiAlphaUBox, - mdiAlphaUBoxOutline: mdiAlphaUBoxOutline, - mdiAlphaUCircle: mdiAlphaUCircle, - mdiAlphaUCircleOutline: mdiAlphaUCircleOutline, - mdiAlphaV: mdiAlphaV, - mdiAlphaVBox: mdiAlphaVBox, - mdiAlphaVBoxOutline: mdiAlphaVBoxOutline, - mdiAlphaVCircle: mdiAlphaVCircle, - mdiAlphaVCircleOutline: mdiAlphaVCircleOutline, - mdiAlphaW: mdiAlphaW, - mdiAlphaWBox: mdiAlphaWBox, - mdiAlphaWBoxOutline: mdiAlphaWBoxOutline, - mdiAlphaWCircle: mdiAlphaWCircle, - mdiAlphaWCircleOutline: mdiAlphaWCircleOutline, - mdiAlphaX: mdiAlphaX, - mdiAlphaXBox: mdiAlphaXBox, - mdiAlphaXBoxOutline: mdiAlphaXBoxOutline, - mdiAlphaXCircle: mdiAlphaXCircle, - mdiAlphaXCircleOutline: mdiAlphaXCircleOutline, - mdiAlphaY: mdiAlphaY, - mdiAlphaYBox: mdiAlphaYBox, - mdiAlphaYBoxOutline: mdiAlphaYBoxOutline, - mdiAlphaYCircle: mdiAlphaYCircle, - mdiAlphaYCircleOutline: mdiAlphaYCircleOutline, - mdiAlphaZ: mdiAlphaZ, - mdiAlphaZBox: mdiAlphaZBox, - mdiAlphaZBoxOutline: mdiAlphaZBoxOutline, - mdiAlphaZCircle: mdiAlphaZCircle, - mdiAlphaZCircleOutline: mdiAlphaZCircleOutline, - mdiAlphabetAurebesh: mdiAlphabetAurebesh, - mdiAlphabetCyrillic: mdiAlphabetCyrillic, - mdiAlphabetGreek: mdiAlphabetGreek, - mdiAlphabetLatin: mdiAlphabetLatin, - mdiAlphabetPiqad: mdiAlphabetPiqad, - mdiAlphabetTengwar: mdiAlphabetTengwar, - mdiAlphabetical: mdiAlphabetical, - mdiAlphabeticalOff: mdiAlphabeticalOff, - mdiAlphabeticalVariant: mdiAlphabeticalVariant, - mdiAlphabeticalVariantOff: mdiAlphabeticalVariantOff, - mdiAltimeter: mdiAltimeter, - mdiAmazon: mdiAmazon, - mdiAmazonAlexa: mdiAmazonAlexa, - mdiAmbulance: mdiAmbulance, - mdiAmmunition: mdiAmmunition, - mdiAmpersand: mdiAmpersand, - mdiAmplifier: mdiAmplifier, - mdiAmplifierOff: mdiAmplifierOff, - mdiAnchor: mdiAnchor, - mdiAndroid: mdiAndroid, - mdiAndroidAuto: mdiAndroidAuto, - mdiAndroidDebugBridge: mdiAndroidDebugBridge, - mdiAndroidMessages: mdiAndroidMessages, - mdiAndroidStudio: mdiAndroidStudio, - mdiAngleAcute: mdiAngleAcute, - mdiAngleObtuse: mdiAngleObtuse, - mdiAngleRight: mdiAngleRight, - mdiAngular: mdiAngular, - mdiAngularjs: mdiAngularjs, - mdiAnimation: mdiAnimation, - mdiAnimationOutline: mdiAnimationOutline, - mdiAnimationPlay: mdiAnimationPlay, - mdiAnimationPlayOutline: mdiAnimationPlayOutline, - mdiAnsible: mdiAnsible, - mdiAntenna: mdiAntenna, - mdiAnvil: mdiAnvil, - mdiApacheKafka: mdiApacheKafka, - mdiApi: mdiApi, - mdiApiOff: mdiApiOff, - mdiApple: mdiApple, - mdiAppleAirplay: mdiAppleAirplay, - mdiAppleFinder: mdiAppleFinder, - mdiAppleIcloud: mdiAppleIcloud, - mdiAppleIos: mdiAppleIos, - mdiAppleKeyboardCaps: mdiAppleKeyboardCaps, - mdiAppleKeyboardCommand: mdiAppleKeyboardCommand, - mdiAppleKeyboardControl: mdiAppleKeyboardControl, - mdiAppleKeyboardOption: mdiAppleKeyboardOption, - mdiAppleKeyboardShift: mdiAppleKeyboardShift, - mdiAppleSafari: mdiAppleSafari, - mdiApplication: mdiApplication, - mdiApplicationCog: mdiApplicationCog, - mdiApplicationExport: mdiApplicationExport, - mdiApplicationImport: mdiApplicationImport, - mdiApplicationSettings: mdiApplicationSettings, - mdiApproximatelyEqual: mdiApproximatelyEqual, - mdiApproximatelyEqualBox: mdiApproximatelyEqualBox, - mdiApps: mdiApps, - mdiAppsBox: mdiAppsBox, - mdiArch: mdiArch, - mdiArchive: mdiArchive, - mdiArchiveAlert: mdiArchiveAlert, - mdiArchiveAlertOutline: mdiArchiveAlertOutline, - mdiArchiveArrowDown: mdiArchiveArrowDown, - mdiArchiveArrowDownOutline: mdiArchiveArrowDownOutline, - mdiArchiveArrowUp: mdiArchiveArrowUp, - mdiArchiveArrowUpOutline: mdiArchiveArrowUpOutline, - mdiArchiveOutline: mdiArchiveOutline, - mdiArmFlex: mdiArmFlex, - mdiArmFlexOutline: mdiArmFlexOutline, - mdiArrangeBringForward: mdiArrangeBringForward, - mdiArrangeBringToFront: mdiArrangeBringToFront, - mdiArrangeSendBackward: mdiArrangeSendBackward, - mdiArrangeSendToBack: mdiArrangeSendToBack, - mdiArrowAll: mdiArrowAll, - mdiArrowBottomLeft: mdiArrowBottomLeft, - mdiArrowBottomLeftBoldOutline: mdiArrowBottomLeftBoldOutline, - mdiArrowBottomLeftThick: mdiArrowBottomLeftThick, - mdiArrowBottomLeftThinCircleOutline: mdiArrowBottomLeftThinCircleOutline, - mdiArrowBottomRight: mdiArrowBottomRight, - mdiArrowBottomRightBoldOutline: mdiArrowBottomRightBoldOutline, - mdiArrowBottomRightThick: mdiArrowBottomRightThick, - mdiArrowBottomRightThinCircleOutline: mdiArrowBottomRightThinCircleOutline, - mdiArrowCollapse: mdiArrowCollapse, - mdiArrowCollapseAll: mdiArrowCollapseAll, - mdiArrowCollapseDown: mdiArrowCollapseDown, - mdiArrowCollapseHorizontal: mdiArrowCollapseHorizontal, - mdiArrowCollapseLeft: mdiArrowCollapseLeft, - mdiArrowCollapseRight: mdiArrowCollapseRight, - mdiArrowCollapseUp: mdiArrowCollapseUp, - mdiArrowCollapseVertical: mdiArrowCollapseVertical, - mdiArrowDecision: mdiArrowDecision, - mdiArrowDecisionAuto: mdiArrowDecisionAuto, - mdiArrowDecisionAutoOutline: mdiArrowDecisionAutoOutline, - mdiArrowDecisionOutline: mdiArrowDecisionOutline, - mdiArrowDown: mdiArrowDown, - mdiArrowDownBold: mdiArrowDownBold, - mdiArrowDownBoldBox: mdiArrowDownBoldBox, - mdiArrowDownBoldBoxOutline: mdiArrowDownBoldBoxOutline, - mdiArrowDownBoldCircle: mdiArrowDownBoldCircle, - mdiArrowDownBoldCircleOutline: mdiArrowDownBoldCircleOutline, - mdiArrowDownBoldHexagonOutline: mdiArrowDownBoldHexagonOutline, - mdiArrowDownBoldOutline: mdiArrowDownBoldOutline, - mdiArrowDownBox: mdiArrowDownBox, - mdiArrowDownCircle: mdiArrowDownCircle, - mdiArrowDownCircleOutline: mdiArrowDownCircleOutline, - mdiArrowDownDropCircle: mdiArrowDownDropCircle, - mdiArrowDownDropCircleOutline: mdiArrowDownDropCircleOutline, - mdiArrowDownThick: mdiArrowDownThick, - mdiArrowDownThinCircleOutline: mdiArrowDownThinCircleOutline, - mdiArrowExpand: mdiArrowExpand, - mdiArrowExpandAll: mdiArrowExpandAll, - mdiArrowExpandDown: mdiArrowExpandDown, - mdiArrowExpandHorizontal: mdiArrowExpandHorizontal, - mdiArrowExpandLeft: mdiArrowExpandLeft, - mdiArrowExpandRight: mdiArrowExpandRight, - mdiArrowExpandUp: mdiArrowExpandUp, - mdiArrowExpandVertical: mdiArrowExpandVertical, - mdiArrowHorizontalLock: mdiArrowHorizontalLock, - mdiArrowLeft: mdiArrowLeft, - mdiArrowLeftBold: mdiArrowLeftBold, - mdiArrowLeftBoldBox: mdiArrowLeftBoldBox, - mdiArrowLeftBoldBoxOutline: mdiArrowLeftBoldBoxOutline, - mdiArrowLeftBoldCircle: mdiArrowLeftBoldCircle, - mdiArrowLeftBoldCircleOutline: mdiArrowLeftBoldCircleOutline, - mdiArrowLeftBoldHexagonOutline: mdiArrowLeftBoldHexagonOutline, - mdiArrowLeftBoldOutline: mdiArrowLeftBoldOutline, - mdiArrowLeftBox: mdiArrowLeftBox, - mdiArrowLeftCircle: mdiArrowLeftCircle, - mdiArrowLeftCircleOutline: mdiArrowLeftCircleOutline, - mdiArrowLeftDropCircle: mdiArrowLeftDropCircle, - mdiArrowLeftDropCircleOutline: mdiArrowLeftDropCircleOutline, - mdiArrowLeftRight: mdiArrowLeftRight, - mdiArrowLeftRightBold: mdiArrowLeftRightBold, - mdiArrowLeftRightBoldOutline: mdiArrowLeftRightBoldOutline, - mdiArrowLeftThick: mdiArrowLeftThick, - mdiArrowLeftThinCircleOutline: mdiArrowLeftThinCircleOutline, - mdiArrowRight: mdiArrowRight, - mdiArrowRightBold: mdiArrowRightBold, - mdiArrowRightBoldBox: mdiArrowRightBoldBox, - mdiArrowRightBoldBoxOutline: mdiArrowRightBoldBoxOutline, - mdiArrowRightBoldCircle: mdiArrowRightBoldCircle, - mdiArrowRightBoldCircleOutline: mdiArrowRightBoldCircleOutline, - mdiArrowRightBoldHexagonOutline: mdiArrowRightBoldHexagonOutline, - mdiArrowRightBoldOutline: mdiArrowRightBoldOutline, - mdiArrowRightBox: mdiArrowRightBox, - mdiArrowRightCircle: mdiArrowRightCircle, - mdiArrowRightCircleOutline: mdiArrowRightCircleOutline, - mdiArrowRightDropCircle: mdiArrowRightDropCircle, - mdiArrowRightDropCircleOutline: mdiArrowRightDropCircleOutline, - mdiArrowRightThick: mdiArrowRightThick, - mdiArrowRightThinCircleOutline: mdiArrowRightThinCircleOutline, - mdiArrowSplitHorizontal: mdiArrowSplitHorizontal, - mdiArrowSplitVertical: mdiArrowSplitVertical, - mdiArrowTopLeft: mdiArrowTopLeft, - mdiArrowTopLeftBoldOutline: mdiArrowTopLeftBoldOutline, - mdiArrowTopLeftBottomRight: mdiArrowTopLeftBottomRight, - mdiArrowTopLeftBottomRightBold: mdiArrowTopLeftBottomRightBold, - mdiArrowTopLeftThick: mdiArrowTopLeftThick, - mdiArrowTopLeftThinCircleOutline: mdiArrowTopLeftThinCircleOutline, - mdiArrowTopRight: mdiArrowTopRight, - mdiArrowTopRightBoldOutline: mdiArrowTopRightBoldOutline, - mdiArrowTopRightBottomLeft: mdiArrowTopRightBottomLeft, - mdiArrowTopRightBottomLeftBold: mdiArrowTopRightBottomLeftBold, - mdiArrowTopRightThick: mdiArrowTopRightThick, - mdiArrowTopRightThinCircleOutline: mdiArrowTopRightThinCircleOutline, - mdiArrowUp: mdiArrowUp, - mdiArrowUpBold: mdiArrowUpBold, - mdiArrowUpBoldBox: mdiArrowUpBoldBox, - mdiArrowUpBoldBoxOutline: mdiArrowUpBoldBoxOutline, - mdiArrowUpBoldCircle: mdiArrowUpBoldCircle, - mdiArrowUpBoldCircleOutline: mdiArrowUpBoldCircleOutline, - mdiArrowUpBoldHexagonOutline: mdiArrowUpBoldHexagonOutline, - mdiArrowUpBoldOutline: mdiArrowUpBoldOutline, - mdiArrowUpBox: mdiArrowUpBox, - mdiArrowUpCircle: mdiArrowUpCircle, - mdiArrowUpCircleOutline: mdiArrowUpCircleOutline, - mdiArrowUpDown: mdiArrowUpDown, - mdiArrowUpDownBold: mdiArrowUpDownBold, - mdiArrowUpDownBoldOutline: mdiArrowUpDownBoldOutline, - mdiArrowUpDropCircle: mdiArrowUpDropCircle, - mdiArrowUpDropCircleOutline: mdiArrowUpDropCircleOutline, - mdiArrowUpThick: mdiArrowUpThick, - mdiArrowUpThinCircleOutline: mdiArrowUpThinCircleOutline, - mdiArrowVerticalLock: mdiArrowVerticalLock, - mdiArtstation: mdiArtstation, - mdiAspectRatio: mdiAspectRatio, - mdiAssistant: mdiAssistant, - mdiAsterisk: mdiAsterisk, - mdiAt: mdiAt, - mdiAtlassian: mdiAtlassian, - mdiAtm: mdiAtm, - mdiAtom: mdiAtom, - mdiAtomVariant: mdiAtomVariant, - mdiAttachment: mdiAttachment, - mdiAudioVideo: mdiAudioVideo, - mdiAudioVideoOff: mdiAudioVideoOff, - mdiAugmentedReality: mdiAugmentedReality, - mdiAutoDownload: mdiAutoDownload, - mdiAutoFix: mdiAutoFix, - mdiAutoUpload: mdiAutoUpload, - mdiAutorenew: mdiAutorenew, - mdiAvTimer: mdiAvTimer, - mdiAws: mdiAws, - mdiAxe: mdiAxe, - mdiAxis: mdiAxis, - mdiAxisArrow: mdiAxisArrow, - mdiAxisArrowInfo: mdiAxisArrowInfo, - mdiAxisArrowLock: mdiAxisArrowLock, - mdiAxisLock: mdiAxisLock, - mdiAxisXArrow: mdiAxisXArrow, - mdiAxisXArrowLock: mdiAxisXArrowLock, - mdiAxisXRotateClockwise: mdiAxisXRotateClockwise, - mdiAxisXRotateCounterclockwise: mdiAxisXRotateCounterclockwise, - mdiAxisXYArrowLock: mdiAxisXYArrowLock, - mdiAxisYArrow: mdiAxisYArrow, - mdiAxisYArrowLock: mdiAxisYArrowLock, - mdiAxisYRotateClockwise: mdiAxisYRotateClockwise, - mdiAxisYRotateCounterclockwise: mdiAxisYRotateCounterclockwise, - mdiAxisZArrow: mdiAxisZArrow, - mdiAxisZArrowLock: mdiAxisZArrowLock, - mdiAxisZRotateClockwise: mdiAxisZRotateClockwise, - mdiAxisZRotateCounterclockwise: mdiAxisZRotateCounterclockwise, - mdiBabel: mdiBabel, - mdiBaby: mdiBaby, - mdiBabyBottle: mdiBabyBottle, - mdiBabyBottleOutline: mdiBabyBottleOutline, - mdiBabyBuggy: mdiBabyBuggy, - mdiBabyCarriage: mdiBabyCarriage, - mdiBabyCarriageOff: mdiBabyCarriageOff, - mdiBabyFace: mdiBabyFace, - mdiBabyFaceOutline: mdiBabyFaceOutline, - mdiBackburger: mdiBackburger, - mdiBackspace: mdiBackspace, - mdiBackspaceOutline: mdiBackspaceOutline, - mdiBackspaceReverse: mdiBackspaceReverse, - mdiBackspaceReverseOutline: mdiBackspaceReverseOutline, - mdiBackupRestore: mdiBackupRestore, - mdiBacteria: mdiBacteria, - mdiBacteriaOutline: mdiBacteriaOutline, - mdiBadgeAccount: mdiBadgeAccount, - mdiBadgeAccountAlert: mdiBadgeAccountAlert, - mdiBadgeAccountAlertOutline: mdiBadgeAccountAlertOutline, - mdiBadgeAccountHorizontal: mdiBadgeAccountHorizontal, - mdiBadgeAccountHorizontalOutline: mdiBadgeAccountHorizontalOutline, - mdiBadgeAccountOutline: mdiBadgeAccountOutline, - mdiBadminton: mdiBadminton, - mdiBagCarryOn: mdiBagCarryOn, - mdiBagCarryOnCheck: mdiBagCarryOnCheck, - mdiBagCarryOnOff: mdiBagCarryOnOff, - mdiBagChecked: mdiBagChecked, - mdiBagPersonal: mdiBagPersonal, - mdiBagPersonalOff: mdiBagPersonalOff, - mdiBagPersonalOffOutline: mdiBagPersonalOffOutline, - mdiBagPersonalOutline: mdiBagPersonalOutline, - mdiBagSuitcase: mdiBagSuitcase, - mdiBagSuitcaseOff: mdiBagSuitcaseOff, - mdiBagSuitcaseOffOutline: mdiBagSuitcaseOffOutline, - mdiBagSuitcaseOutline: mdiBagSuitcaseOutline, - mdiBaguette: mdiBaguette, - mdiBalloon: mdiBalloon, - mdiBallot: mdiBallot, - mdiBallotOutline: mdiBallotOutline, - mdiBallotRecount: mdiBallotRecount, - mdiBallotRecountOutline: mdiBallotRecountOutline, - mdiBandage: mdiBandage, - mdiBandcamp: mdiBandcamp, - mdiBank: mdiBank, - mdiBankCheck: mdiBankCheck, - mdiBankMinus: mdiBankMinus, - mdiBankOff: mdiBankOff, - mdiBankOffOutline: mdiBankOffOutline, - mdiBankOutline: mdiBankOutline, - mdiBankPlus: mdiBankPlus, - mdiBankRemove: mdiBankRemove, - mdiBankTransfer: mdiBankTransfer, - mdiBankTransferIn: mdiBankTransferIn, - mdiBankTransferOut: mdiBankTransferOut, - mdiBarcode: mdiBarcode, - mdiBarcodeOff: mdiBarcodeOff, - mdiBarcodeScan: mdiBarcodeScan, - mdiBarley: mdiBarley, - mdiBarleyOff: mdiBarleyOff, - mdiBarn: mdiBarn, - mdiBarrel: mdiBarrel, - mdiBaseball: mdiBaseball, - mdiBaseballBat: mdiBaseballBat, - mdiBaseballDiamond: mdiBaseballDiamond, - mdiBaseballDiamondOutline: mdiBaseballDiamondOutline, - mdiBash: mdiBash, - mdiBasket: mdiBasket, - mdiBasketFill: mdiBasketFill, - mdiBasketMinus: mdiBasketMinus, - mdiBasketMinusOutline: mdiBasketMinusOutline, - mdiBasketOff: mdiBasketOff, - mdiBasketOffOutline: mdiBasketOffOutline, - mdiBasketOutline: mdiBasketOutline, - mdiBasketPlus: mdiBasketPlus, - mdiBasketPlusOutline: mdiBasketPlusOutline, - mdiBasketRemove: mdiBasketRemove, - mdiBasketRemoveOutline: mdiBasketRemoveOutline, - mdiBasketUnfill: mdiBasketUnfill, - mdiBasketball: mdiBasketball, - mdiBasketballHoop: mdiBasketballHoop, - mdiBasketballHoopOutline: mdiBasketballHoopOutline, - mdiBat: mdiBat, - mdiBattery: mdiBattery, - mdiBattery10: mdiBattery10, - mdiBattery10Bluetooth: mdiBattery10Bluetooth, - mdiBattery20: mdiBattery20, - mdiBattery20Bluetooth: mdiBattery20Bluetooth, - mdiBattery30: mdiBattery30, - mdiBattery30Bluetooth: mdiBattery30Bluetooth, - mdiBattery40: mdiBattery40, - mdiBattery40Bluetooth: mdiBattery40Bluetooth, - mdiBattery50: mdiBattery50, - mdiBattery50Bluetooth: mdiBattery50Bluetooth, - mdiBattery60: mdiBattery60, - mdiBattery60Bluetooth: mdiBattery60Bluetooth, - mdiBattery70: mdiBattery70, - mdiBattery70Bluetooth: mdiBattery70Bluetooth, - mdiBattery80: mdiBattery80, - mdiBattery80Bluetooth: mdiBattery80Bluetooth, - mdiBattery90: mdiBattery90, - mdiBattery90Bluetooth: mdiBattery90Bluetooth, - mdiBatteryAlert: mdiBatteryAlert, - mdiBatteryAlertBluetooth: mdiBatteryAlertBluetooth, - mdiBatteryAlertVariant: mdiBatteryAlertVariant, - mdiBatteryAlertVariantOutline: mdiBatteryAlertVariantOutline, - mdiBatteryBluetooth: mdiBatteryBluetooth, - mdiBatteryBluetoothVariant: mdiBatteryBluetoothVariant, - mdiBatteryCharging: mdiBatteryCharging, - mdiBatteryCharging10: mdiBatteryCharging10, - mdiBatteryCharging100: mdiBatteryCharging100, - mdiBatteryCharging20: mdiBatteryCharging20, - mdiBatteryCharging30: mdiBatteryCharging30, - mdiBatteryCharging40: mdiBatteryCharging40, - mdiBatteryCharging50: mdiBatteryCharging50, - mdiBatteryCharging60: mdiBatteryCharging60, - mdiBatteryCharging70: mdiBatteryCharging70, - mdiBatteryCharging80: mdiBatteryCharging80, - mdiBatteryCharging90: mdiBatteryCharging90, - mdiBatteryChargingHigh: mdiBatteryChargingHigh, - mdiBatteryChargingLow: mdiBatteryChargingLow, - mdiBatteryChargingMedium: mdiBatteryChargingMedium, - mdiBatteryChargingOutline: mdiBatteryChargingOutline, - mdiBatteryChargingWireless: mdiBatteryChargingWireless, - mdiBatteryChargingWireless10: mdiBatteryChargingWireless10, - mdiBatteryChargingWireless20: mdiBatteryChargingWireless20, - mdiBatteryChargingWireless30: mdiBatteryChargingWireless30, - mdiBatteryChargingWireless40: mdiBatteryChargingWireless40, - mdiBatteryChargingWireless50: mdiBatteryChargingWireless50, - mdiBatteryChargingWireless60: mdiBatteryChargingWireless60, - mdiBatteryChargingWireless70: mdiBatteryChargingWireless70, - mdiBatteryChargingWireless80: mdiBatteryChargingWireless80, - mdiBatteryChargingWireless90: mdiBatteryChargingWireless90, - mdiBatteryChargingWirelessAlert: mdiBatteryChargingWirelessAlert, - mdiBatteryChargingWirelessOutline: mdiBatteryChargingWirelessOutline, - mdiBatteryHeart: mdiBatteryHeart, - mdiBatteryHeartOutline: mdiBatteryHeartOutline, - mdiBatteryHeartVariant: mdiBatteryHeartVariant, - mdiBatteryHigh: mdiBatteryHigh, - mdiBatteryLow: mdiBatteryLow, - mdiBatteryMedium: mdiBatteryMedium, - mdiBatteryMinus: mdiBatteryMinus, - mdiBatteryNegative: mdiBatteryNegative, - mdiBatteryOff: mdiBatteryOff, - mdiBatteryOffOutline: mdiBatteryOffOutline, - mdiBatteryOutline: mdiBatteryOutline, - mdiBatteryPlus: mdiBatteryPlus, - mdiBatteryPositive: mdiBatteryPositive, - mdiBatteryUnknown: mdiBatteryUnknown, - mdiBatteryUnknownBluetooth: mdiBatteryUnknownBluetooth, - mdiBattlenet: mdiBattlenet, - mdiBeach: mdiBeach, - mdiBeaker: mdiBeaker, - mdiBeakerAlert: mdiBeakerAlert, - mdiBeakerAlertOutline: mdiBeakerAlertOutline, - mdiBeakerCheck: mdiBeakerCheck, - mdiBeakerCheckOutline: mdiBeakerCheckOutline, - mdiBeakerMinus: mdiBeakerMinus, - mdiBeakerMinusOutline: mdiBeakerMinusOutline, - mdiBeakerOutline: mdiBeakerOutline, - mdiBeakerPlus: mdiBeakerPlus, - mdiBeakerPlusOutline: mdiBeakerPlusOutline, - mdiBeakerQuestion: mdiBeakerQuestion, - mdiBeakerQuestionOutline: mdiBeakerQuestionOutline, - mdiBeakerRemove: mdiBeakerRemove, - mdiBeakerRemoveOutline: mdiBeakerRemoveOutline, - mdiBed: mdiBed, - mdiBedDouble: mdiBedDouble, - mdiBedDoubleOutline: mdiBedDoubleOutline, - mdiBedEmpty: mdiBedEmpty, - mdiBedKing: mdiBedKing, - mdiBedKingOutline: mdiBedKingOutline, - mdiBedOutline: mdiBedOutline, - mdiBedQueen: mdiBedQueen, - mdiBedQueenOutline: mdiBedQueenOutline, - mdiBedSingle: mdiBedSingle, - mdiBedSingleOutline: mdiBedSingleOutline, - mdiBee: mdiBee, - mdiBeeFlower: mdiBeeFlower, - mdiBeehiveOffOutline: mdiBeehiveOffOutline, - mdiBeehiveOutline: mdiBeehiveOutline, - mdiBeekeeper: mdiBeekeeper, - mdiBeer: mdiBeer, - mdiBeerOutline: mdiBeerOutline, - mdiBell: mdiBell, - mdiBellAlert: mdiBellAlert, - mdiBellAlertOutline: mdiBellAlertOutline, - mdiBellCancel: mdiBellCancel, - mdiBellCancelOutline: mdiBellCancelOutline, - mdiBellCheck: mdiBellCheck, - mdiBellCheckOutline: mdiBellCheckOutline, - mdiBellCircle: mdiBellCircle, - mdiBellCircleOutline: mdiBellCircleOutline, - mdiBellMinus: mdiBellMinus, - mdiBellMinusOutline: mdiBellMinusOutline, - mdiBellOff: mdiBellOff, - mdiBellOffOutline: mdiBellOffOutline, - mdiBellOutline: mdiBellOutline, - mdiBellPlus: mdiBellPlus, - mdiBellPlusOutline: mdiBellPlusOutline, - mdiBellRemove: mdiBellRemove, - mdiBellRemoveOutline: mdiBellRemoveOutline, - mdiBellRing: mdiBellRing, - mdiBellRingOutline: mdiBellRingOutline, - mdiBellSleep: mdiBellSleep, - mdiBellSleepOutline: mdiBellSleepOutline, - mdiBeta: mdiBeta, - mdiBetamax: mdiBetamax, - mdiBiathlon: mdiBiathlon, - mdiBicycle: mdiBicycle, - mdiBicycleBasket: mdiBicycleBasket, - mdiBicycleElectric: mdiBicycleElectric, - mdiBicyclePennyFarthing: mdiBicyclePennyFarthing, - mdiBike: mdiBike, - mdiBikeFast: mdiBikeFast, - mdiBillboard: mdiBillboard, - mdiBilliards: mdiBilliards, - mdiBilliardsRack: mdiBilliardsRack, - mdiBinoculars: mdiBinoculars, - mdiBio: mdiBio, - mdiBiohazard: mdiBiohazard, - mdiBird: mdiBird, - mdiBitbucket: mdiBitbucket, - mdiBitcoin: mdiBitcoin, - mdiBlackMesa: mdiBlackMesa, - mdiBlender: mdiBlender, - mdiBlenderSoftware: mdiBlenderSoftware, - mdiBlinds: mdiBlinds, - mdiBlindsOpen: mdiBlindsOpen, - mdiBlockHelper: mdiBlockHelper, - mdiBlogger: mdiBlogger, - mdiBloodBag: mdiBloodBag, - mdiBluetooth: mdiBluetooth, - mdiBluetoothAudio: mdiBluetoothAudio, - mdiBluetoothConnect: mdiBluetoothConnect, - mdiBluetoothOff: mdiBluetoothOff, - mdiBluetoothSettings: mdiBluetoothSettings, - mdiBluetoothTransfer: mdiBluetoothTransfer, - mdiBlur: mdiBlur, - mdiBlurLinear: mdiBlurLinear, - mdiBlurOff: mdiBlurOff, - mdiBlurRadial: mdiBlurRadial, - mdiBolnisiCross: mdiBolnisiCross, - mdiBolt: mdiBolt, - mdiBomb: mdiBomb, - mdiBombOff: mdiBombOff, - mdiBone: mdiBone, - mdiBook: mdiBook, - mdiBookAccount: mdiBookAccount, - mdiBookAccountOutline: mdiBookAccountOutline, - mdiBookAlert: mdiBookAlert, - mdiBookAlertOutline: mdiBookAlertOutline, - mdiBookAlphabet: mdiBookAlphabet, - mdiBookArrowDown: mdiBookArrowDown, - mdiBookArrowDownOutline: mdiBookArrowDownOutline, - mdiBookArrowLeft: mdiBookArrowLeft, - mdiBookArrowLeftOutline: mdiBookArrowLeftOutline, - mdiBookArrowRight: mdiBookArrowRight, - mdiBookArrowRightOutline: mdiBookArrowRightOutline, - mdiBookArrowUp: mdiBookArrowUp, - mdiBookArrowUpOutline: mdiBookArrowUpOutline, - mdiBookCancel: mdiBookCancel, - mdiBookCancelOutline: mdiBookCancelOutline, - mdiBookCheck: mdiBookCheck, - mdiBookCheckOutline: mdiBookCheckOutline, - mdiBookClock: mdiBookClock, - mdiBookClockOutline: mdiBookClockOutline, - mdiBookCog: mdiBookCog, - mdiBookCogOutline: mdiBookCogOutline, - mdiBookCross: mdiBookCross, - mdiBookEdit: mdiBookEdit, - mdiBookEditOutline: mdiBookEditOutline, - mdiBookEducation: mdiBookEducation, - mdiBookEducationOutline: mdiBookEducationOutline, - mdiBookInformationVariant: mdiBookInformationVariant, - mdiBookLock: mdiBookLock, - mdiBookLockOpen: mdiBookLockOpen, - mdiBookLockOpenOutline: mdiBookLockOpenOutline, - mdiBookLockOutline: mdiBookLockOutline, - mdiBookMarker: mdiBookMarker, - mdiBookMarkerOutline: mdiBookMarkerOutline, - mdiBookMinus: mdiBookMinus, - mdiBookMinusMultiple: mdiBookMinusMultiple, - mdiBookMinusMultipleOutline: mdiBookMinusMultipleOutline, - mdiBookMinusOutline: mdiBookMinusOutline, - mdiBookMultiple: mdiBookMultiple, - mdiBookMultipleOutline: mdiBookMultipleOutline, - mdiBookMusic: mdiBookMusic, - mdiBookMusicOutline: mdiBookMusicOutline, - mdiBookOff: mdiBookOff, - mdiBookOffOutline: mdiBookOffOutline, - mdiBookOpen: mdiBookOpen, - mdiBookOpenBlankVariant: mdiBookOpenBlankVariant, - mdiBookOpenOutline: mdiBookOpenOutline, - mdiBookOpenPageVariant: mdiBookOpenPageVariant, - mdiBookOpenPageVariantOutline: mdiBookOpenPageVariantOutline, - mdiBookOpenVariant: mdiBookOpenVariant, - mdiBookOutline: mdiBookOutline, - mdiBookPlay: mdiBookPlay, - mdiBookPlayOutline: mdiBookPlayOutline, - mdiBookPlus: mdiBookPlus, - mdiBookPlusMultiple: mdiBookPlusMultiple, - mdiBookPlusMultipleOutline: mdiBookPlusMultipleOutline, - mdiBookPlusOutline: mdiBookPlusOutline, - mdiBookRefresh: mdiBookRefresh, - mdiBookRefreshOutline: mdiBookRefreshOutline, - mdiBookRemove: mdiBookRemove, - mdiBookRemoveMultiple: mdiBookRemoveMultiple, - mdiBookRemoveMultipleOutline: mdiBookRemoveMultipleOutline, - mdiBookRemoveOutline: mdiBookRemoveOutline, - mdiBookSearch: mdiBookSearch, - mdiBookSearchOutline: mdiBookSearchOutline, - mdiBookSettings: mdiBookSettings, - mdiBookSettingsOutline: mdiBookSettingsOutline, - mdiBookSync: mdiBookSync, - mdiBookSyncOutline: mdiBookSyncOutline, - mdiBookVariant: mdiBookVariant, - mdiBookVariantMultiple: mdiBookVariantMultiple, - mdiBookmark: mdiBookmark, - mdiBookmarkCheck: mdiBookmarkCheck, - mdiBookmarkCheckOutline: mdiBookmarkCheckOutline, - mdiBookmarkMinus: mdiBookmarkMinus, - mdiBookmarkMinusOutline: mdiBookmarkMinusOutline, - mdiBookmarkMultiple: mdiBookmarkMultiple, - mdiBookmarkMultipleOutline: mdiBookmarkMultipleOutline, - mdiBookmarkMusic: mdiBookmarkMusic, - mdiBookmarkMusicOutline: mdiBookmarkMusicOutline, - mdiBookmarkOff: mdiBookmarkOff, - mdiBookmarkOffOutline: mdiBookmarkOffOutline, - mdiBookmarkOutline: mdiBookmarkOutline, - mdiBookmarkPlus: mdiBookmarkPlus, - mdiBookmarkPlusOutline: mdiBookmarkPlusOutline, - mdiBookmarkRemove: mdiBookmarkRemove, - mdiBookmarkRemoveOutline: mdiBookmarkRemoveOutline, - mdiBookshelf: mdiBookshelf, - mdiBoomGate: mdiBoomGate, - mdiBoomGateAlert: mdiBoomGateAlert, - mdiBoomGateAlertOutline: mdiBoomGateAlertOutline, - mdiBoomGateDown: mdiBoomGateDown, - mdiBoomGateDownOutline: mdiBoomGateDownOutline, - mdiBoomGateOutline: mdiBoomGateOutline, - mdiBoomGateUp: mdiBoomGateUp, - mdiBoomGateUpOutline: mdiBoomGateUpOutline, - mdiBoombox: mdiBoombox, - mdiBoomerang: mdiBoomerang, - mdiBootstrap: mdiBootstrap, - mdiBorderAll: mdiBorderAll, - mdiBorderAllVariant: mdiBorderAllVariant, - mdiBorderBottom: mdiBorderBottom, - mdiBorderBottomVariant: mdiBorderBottomVariant, - mdiBorderColor: mdiBorderColor, - mdiBorderHorizontal: mdiBorderHorizontal, - mdiBorderInside: mdiBorderInside, - mdiBorderLeft: mdiBorderLeft, - mdiBorderLeftVariant: mdiBorderLeftVariant, - mdiBorderNone: mdiBorderNone, - mdiBorderNoneVariant: mdiBorderNoneVariant, - mdiBorderOutside: mdiBorderOutside, - mdiBorderRight: mdiBorderRight, - mdiBorderRightVariant: mdiBorderRightVariant, - mdiBorderStyle: mdiBorderStyle, - mdiBorderTop: mdiBorderTop, - mdiBorderTopVariant: mdiBorderTopVariant, - mdiBorderVertical: mdiBorderVertical, - mdiBottleSoda: mdiBottleSoda, - mdiBottleSodaClassic: mdiBottleSodaClassic, - mdiBottleSodaClassicOutline: mdiBottleSodaClassicOutline, - mdiBottleSodaOutline: mdiBottleSodaOutline, - mdiBottleTonic: mdiBottleTonic, - mdiBottleTonicOutline: mdiBottleTonicOutline, - mdiBottleTonicPlus: mdiBottleTonicPlus, - mdiBottleTonicPlusOutline: mdiBottleTonicPlusOutline, - mdiBottleTonicSkull: mdiBottleTonicSkull, - mdiBottleTonicSkullOutline: mdiBottleTonicSkullOutline, - mdiBottleWine: mdiBottleWine, - mdiBottleWineOutline: mdiBottleWineOutline, - mdiBowTie: mdiBowTie, - mdiBowl: mdiBowl, - mdiBowlMix: mdiBowlMix, - mdiBowlMixOutline: mdiBowlMixOutline, - mdiBowlOutline: mdiBowlOutline, - mdiBowling: mdiBowling, - mdiBox: mdiBox, - mdiBoxCutter: mdiBoxCutter, - mdiBoxCutterOff: mdiBoxCutterOff, - mdiBoxShadow: mdiBoxShadow, - mdiBoxingGlove: mdiBoxingGlove, - mdiBraille: mdiBraille, - mdiBrain: mdiBrain, - mdiBreadSlice: mdiBreadSlice, - mdiBreadSliceOutline: mdiBreadSliceOutline, - mdiBridge: mdiBridge, - mdiBriefcase: mdiBriefcase, - mdiBriefcaseAccount: mdiBriefcaseAccount, - mdiBriefcaseAccountOutline: mdiBriefcaseAccountOutline, - mdiBriefcaseCheck: mdiBriefcaseCheck, - mdiBriefcaseCheckOutline: mdiBriefcaseCheckOutline, - mdiBriefcaseClock: mdiBriefcaseClock, - mdiBriefcaseClockOutline: mdiBriefcaseClockOutline, - mdiBriefcaseDownload: mdiBriefcaseDownload, - mdiBriefcaseDownloadOutline: mdiBriefcaseDownloadOutline, - mdiBriefcaseEdit: mdiBriefcaseEdit, - mdiBriefcaseEditOutline: mdiBriefcaseEditOutline, - mdiBriefcaseMinus: mdiBriefcaseMinus, - mdiBriefcaseMinusOutline: mdiBriefcaseMinusOutline, - mdiBriefcaseOff: mdiBriefcaseOff, - mdiBriefcaseOffOutline: mdiBriefcaseOffOutline, - mdiBriefcaseOutline: mdiBriefcaseOutline, - mdiBriefcasePlus: mdiBriefcasePlus, - mdiBriefcasePlusOutline: mdiBriefcasePlusOutline, - mdiBriefcaseRemove: mdiBriefcaseRemove, - mdiBriefcaseRemoveOutline: mdiBriefcaseRemoveOutline, - mdiBriefcaseSearch: mdiBriefcaseSearch, - mdiBriefcaseSearchOutline: mdiBriefcaseSearchOutline, - mdiBriefcaseUpload: mdiBriefcaseUpload, - mdiBriefcaseUploadOutline: mdiBriefcaseUploadOutline, - mdiBriefcaseVariant: mdiBriefcaseVariant, - mdiBriefcaseVariantOff: mdiBriefcaseVariantOff, - mdiBriefcaseVariantOffOutline: mdiBriefcaseVariantOffOutline, - mdiBriefcaseVariantOutline: mdiBriefcaseVariantOutline, - mdiBrightness1: mdiBrightness1, - mdiBrightness2: mdiBrightness2, - mdiBrightness3: mdiBrightness3, - mdiBrightness4: mdiBrightness4, - mdiBrightness5: mdiBrightness5, - mdiBrightness6: mdiBrightness6, - mdiBrightness7: mdiBrightness7, - mdiBrightnessAuto: mdiBrightnessAuto, - mdiBrightnessPercent: mdiBrightnessPercent, - mdiBroadcast: mdiBroadcast, - mdiBroadcastOff: mdiBroadcastOff, - mdiBroom: mdiBroom, - mdiBrush: mdiBrush, - mdiBucket: mdiBucket, - mdiBucketOutline: mdiBucketOutline, - mdiBuddhism: mdiBuddhism, - mdiBuffer: mdiBuffer, - mdiBuffet: mdiBuffet, - mdiBug: mdiBug, - mdiBugCheck: mdiBugCheck, - mdiBugCheckOutline: mdiBugCheckOutline, - mdiBugOutline: mdiBugOutline, - mdiBugle: mdiBugle, - mdiBulldozer: mdiBulldozer, - mdiBullet: mdiBullet, - mdiBulletinBoard: mdiBulletinBoard, - mdiBullhorn: mdiBullhorn, - mdiBullhornOutline: mdiBullhornOutline, - mdiBullseye: mdiBullseye, - mdiBullseyeArrow: mdiBullseyeArrow, - mdiBulma: mdiBulma, - mdiBunkBed: mdiBunkBed, - mdiBunkBedOutline: mdiBunkBedOutline, - mdiBus: mdiBus, - mdiBusAlert: mdiBusAlert, - mdiBusArticulatedEnd: mdiBusArticulatedEnd, - mdiBusArticulatedFront: mdiBusArticulatedFront, - mdiBusClock: mdiBusClock, - mdiBusDoubleDecker: mdiBusDoubleDecker, - mdiBusMarker: mdiBusMarker, - mdiBusMultiple: mdiBusMultiple, - mdiBusSchool: mdiBusSchool, - mdiBusSide: mdiBusSide, - mdiBusStop: mdiBusStop, - mdiBusStopCovered: mdiBusStopCovered, - mdiBusStopUncovered: mdiBusStopUncovered, - mdiButterfly: mdiButterfly, - mdiButterflyOutline: mdiButterflyOutline, - mdiCableData: mdiCableData, - mdiCached: mdiCached, - mdiCactus: mdiCactus, - mdiCake: mdiCake, - mdiCakeLayered: mdiCakeLayered, - mdiCakeVariant: mdiCakeVariant, - mdiCalculator: mdiCalculator, - mdiCalculatorVariant: mdiCalculatorVariant, - mdiCalculatorVariantOutline: mdiCalculatorVariantOutline, - mdiCalendar: mdiCalendar, - mdiCalendarAccount: mdiCalendarAccount, - mdiCalendarAccountOutline: mdiCalendarAccountOutline, - mdiCalendarAlert: mdiCalendarAlert, - mdiCalendarArrowLeft: mdiCalendarArrowLeft, - mdiCalendarArrowRight: mdiCalendarArrowRight, - mdiCalendarBlank: mdiCalendarBlank, - mdiCalendarBlankMultiple: mdiCalendarBlankMultiple, - mdiCalendarBlankOutline: mdiCalendarBlankOutline, - mdiCalendarCheck: mdiCalendarCheck, - mdiCalendarCheckOutline: mdiCalendarCheckOutline, - mdiCalendarClock: mdiCalendarClock, - mdiCalendarClockOutline: mdiCalendarClockOutline, - mdiCalendarCursor: mdiCalendarCursor, - mdiCalendarEdit: mdiCalendarEdit, - mdiCalendarEnd: mdiCalendarEnd, - mdiCalendarExport: mdiCalendarExport, - mdiCalendarHeart: mdiCalendarHeart, - mdiCalendarImport: mdiCalendarImport, - mdiCalendarLock: mdiCalendarLock, - mdiCalendarLockOutline: mdiCalendarLockOutline, - mdiCalendarMinus: mdiCalendarMinus, - mdiCalendarMonth: mdiCalendarMonth, - mdiCalendarMonthOutline: mdiCalendarMonthOutline, - mdiCalendarMultiple: mdiCalendarMultiple, - mdiCalendarMultipleCheck: mdiCalendarMultipleCheck, - mdiCalendarMultiselect: mdiCalendarMultiselect, - mdiCalendarOutline: mdiCalendarOutline, - mdiCalendarPlus: mdiCalendarPlus, - mdiCalendarQuestion: mdiCalendarQuestion, - mdiCalendarRange: mdiCalendarRange, - mdiCalendarRangeOutline: mdiCalendarRangeOutline, - mdiCalendarRefresh: mdiCalendarRefresh, - mdiCalendarRefreshOutline: mdiCalendarRefreshOutline, - mdiCalendarRemove: mdiCalendarRemove, - mdiCalendarRemoveOutline: mdiCalendarRemoveOutline, - mdiCalendarSearch: mdiCalendarSearch, - mdiCalendarStar: mdiCalendarStar, - mdiCalendarStart: mdiCalendarStart, - mdiCalendarSync: mdiCalendarSync, - mdiCalendarSyncOutline: mdiCalendarSyncOutline, - mdiCalendarText: mdiCalendarText, - mdiCalendarTextOutline: mdiCalendarTextOutline, - mdiCalendarToday: mdiCalendarToday, - mdiCalendarWeek: mdiCalendarWeek, - mdiCalendarWeekBegin: mdiCalendarWeekBegin, - mdiCalendarWeekend: mdiCalendarWeekend, - mdiCalendarWeekendOutline: mdiCalendarWeekendOutline, - mdiCallMade: mdiCallMade, - mdiCallMerge: mdiCallMerge, - mdiCallMissed: mdiCallMissed, - mdiCallReceived: mdiCallReceived, - mdiCallSplit: mdiCallSplit, - mdiCamcorder: mdiCamcorder, - mdiCamcorderOff: mdiCamcorderOff, - mdiCamera: mdiCamera, - mdiCameraAccount: mdiCameraAccount, - mdiCameraBurst: mdiCameraBurst, - mdiCameraControl: mdiCameraControl, - mdiCameraEnhance: mdiCameraEnhance, - mdiCameraEnhanceOutline: mdiCameraEnhanceOutline, - mdiCameraFlip: mdiCameraFlip, - mdiCameraFlipOutline: mdiCameraFlipOutline, - mdiCameraFront: mdiCameraFront, - mdiCameraFrontVariant: mdiCameraFrontVariant, - mdiCameraGopro: mdiCameraGopro, - mdiCameraImage: mdiCameraImage, - mdiCameraIris: mdiCameraIris, - mdiCameraMeteringCenter: mdiCameraMeteringCenter, - mdiCameraMeteringMatrix: mdiCameraMeteringMatrix, - mdiCameraMeteringPartial: mdiCameraMeteringPartial, - mdiCameraMeteringSpot: mdiCameraMeteringSpot, - mdiCameraOff: mdiCameraOff, - mdiCameraOutline: mdiCameraOutline, - mdiCameraPartyMode: mdiCameraPartyMode, - mdiCameraPlus: mdiCameraPlus, - mdiCameraPlusOutline: mdiCameraPlusOutline, - mdiCameraRear: mdiCameraRear, - mdiCameraRearVariant: mdiCameraRearVariant, - mdiCameraRetake: mdiCameraRetake, - mdiCameraRetakeOutline: mdiCameraRetakeOutline, - mdiCameraSwitch: mdiCameraSwitch, - mdiCameraSwitchOutline: mdiCameraSwitchOutline, - mdiCameraTimer: mdiCameraTimer, - mdiCameraWireless: mdiCameraWireless, - mdiCameraWirelessOutline: mdiCameraWirelessOutline, - mdiCampfire: mdiCampfire, - mdiCancel: mdiCancel, - mdiCandle: mdiCandle, - mdiCandycane: mdiCandycane, - mdiCannabis: mdiCannabis, - mdiCannabisOff: mdiCannabisOff, - mdiCapsLock: mdiCapsLock, - mdiCar: mdiCar, - mdiCar2Plus: mdiCar2Plus, - mdiCar3Plus: mdiCar3Plus, - mdiCarArrowLeft: mdiCarArrowLeft, - mdiCarArrowRight: mdiCarArrowRight, - mdiCarBack: mdiCarBack, - mdiCarBattery: mdiCarBattery, - mdiCarBrakeAbs: mdiCarBrakeAbs, - mdiCarBrakeAlert: mdiCarBrakeAlert, - mdiCarBrakeHold: mdiCarBrakeHold, - mdiCarBrakeParking: mdiCarBrakeParking, - mdiCarBrakeRetarder: mdiCarBrakeRetarder, - mdiCarChildSeat: mdiCarChildSeat, - mdiCarClutch: mdiCarClutch, - mdiCarCog: mdiCarCog, - mdiCarConnected: mdiCarConnected, - mdiCarConvertible: mdiCarConvertible, - mdiCarCoolantLevel: mdiCarCoolantLevel, - mdiCarCruiseControl: mdiCarCruiseControl, - mdiCarDefrostFront: mdiCarDefrostFront, - mdiCarDefrostRear: mdiCarDefrostRear, - mdiCarDoor: mdiCarDoor, - mdiCarDoorLock: mdiCarDoorLock, - mdiCarElectric: mdiCarElectric, - mdiCarElectricOutline: mdiCarElectricOutline, - mdiCarEmergency: mdiCarEmergency, - mdiCarEsp: mdiCarEsp, - mdiCarEstate: mdiCarEstate, - mdiCarHatchback: mdiCarHatchback, - mdiCarInfo: mdiCarInfo, - mdiCarKey: mdiCarKey, - mdiCarLiftedPickup: mdiCarLiftedPickup, - mdiCarLightDimmed: mdiCarLightDimmed, - mdiCarLightFog: mdiCarLightFog, - mdiCarLightHigh: mdiCarLightHigh, - mdiCarLimousine: mdiCarLimousine, - mdiCarMultiple: mdiCarMultiple, - mdiCarOff: mdiCarOff, - mdiCarOutline: mdiCarOutline, - mdiCarParkingLights: mdiCarParkingLights, - mdiCarPickup: mdiCarPickup, - mdiCarSeat: mdiCarSeat, - mdiCarSeatCooler: mdiCarSeatCooler, - mdiCarSeatHeater: mdiCarSeatHeater, - mdiCarSettings: mdiCarSettings, - mdiCarShiftPattern: mdiCarShiftPattern, - mdiCarSide: mdiCarSide, - mdiCarSports: mdiCarSports, - mdiCarTireAlert: mdiCarTireAlert, - mdiCarTractionControl: mdiCarTractionControl, - mdiCarTurbocharger: mdiCarTurbocharger, - mdiCarWash: mdiCarWash, - mdiCarWindshield: mdiCarWindshield, - mdiCarWindshieldOutline: mdiCarWindshieldOutline, - mdiCarabiner: mdiCarabiner, - mdiCaravan: mdiCaravan, - mdiCard: mdiCard, - mdiCardAccountDetails: mdiCardAccountDetails, - mdiCardAccountDetailsOutline: mdiCardAccountDetailsOutline, - mdiCardAccountDetailsStar: mdiCardAccountDetailsStar, - mdiCardAccountDetailsStarOutline: mdiCardAccountDetailsStarOutline, - mdiCardAccountMail: mdiCardAccountMail, - mdiCardAccountMailOutline: mdiCardAccountMailOutline, - mdiCardAccountPhone: mdiCardAccountPhone, - mdiCardAccountPhoneOutline: mdiCardAccountPhoneOutline, - mdiCardBulleted: mdiCardBulleted, - mdiCardBulletedOff: mdiCardBulletedOff, - mdiCardBulletedOffOutline: mdiCardBulletedOffOutline, - mdiCardBulletedOutline: mdiCardBulletedOutline, - mdiCardBulletedSettings: mdiCardBulletedSettings, - mdiCardBulletedSettingsOutline: mdiCardBulletedSettingsOutline, - mdiCardMinus: mdiCardMinus, - mdiCardMinusOutline: mdiCardMinusOutline, - mdiCardOff: mdiCardOff, - mdiCardOffOutline: mdiCardOffOutline, - mdiCardOutline: mdiCardOutline, - mdiCardPlus: mdiCardPlus, - mdiCardPlusOutline: mdiCardPlusOutline, - mdiCardRemove: mdiCardRemove, - mdiCardRemoveOutline: mdiCardRemoveOutline, - mdiCardSearch: mdiCardSearch, - mdiCardSearchOutline: mdiCardSearchOutline, - mdiCardText: mdiCardText, - mdiCardTextOutline: mdiCardTextOutline, - mdiCards: mdiCards, - mdiCardsClub: mdiCardsClub, - mdiCardsDiamond: mdiCardsDiamond, - mdiCardsDiamondOutline: mdiCardsDiamondOutline, - mdiCardsHeart: mdiCardsHeart, - mdiCardsOutline: mdiCardsOutline, - mdiCardsPlayingOutline: mdiCardsPlayingOutline, - mdiCardsSpade: mdiCardsSpade, - mdiCardsVariant: mdiCardsVariant, - mdiCarrot: mdiCarrot, - mdiCart: mdiCart, - mdiCartArrowDown: mdiCartArrowDown, - mdiCartArrowRight: mdiCartArrowRight, - mdiCartArrowUp: mdiCartArrowUp, - mdiCartCheck: mdiCartCheck, - mdiCartMinus: mdiCartMinus, - mdiCartOff: mdiCartOff, - mdiCartOutline: mdiCartOutline, - mdiCartPlus: mdiCartPlus, - mdiCartRemove: mdiCartRemove, - mdiCartVariant: mdiCartVariant, - mdiCaseSensitiveAlt: mdiCaseSensitiveAlt, - mdiCash: mdiCash, - mdiCash100: mdiCash100, - mdiCashCheck: mdiCashCheck, - mdiCashLock: mdiCashLock, - mdiCashLockOpen: mdiCashLockOpen, - mdiCashMarker: mdiCashMarker, - mdiCashMinus: mdiCashMinus, - mdiCashMultiple: mdiCashMultiple, - mdiCashPlus: mdiCashPlus, - mdiCashRefund: mdiCashRefund, - mdiCashRegister: mdiCashRegister, - mdiCashRemove: mdiCashRemove, - mdiCashUsd: mdiCashUsd, - mdiCashUsdOutline: mdiCashUsdOutline, - mdiCassette: mdiCassette, - mdiCast: mdiCast, - mdiCastAudio: mdiCastAudio, - mdiCastConnected: mdiCastConnected, - mdiCastEducation: mdiCastEducation, - mdiCastOff: mdiCastOff, - mdiCastle: mdiCastle, - mdiCat: mdiCat, - mdiCctv: mdiCctv, - mdiCeilingLight: mdiCeilingLight, - mdiCellphone: mdiCellphone, - mdiCellphoneAndroid: mdiCellphoneAndroid, - mdiCellphoneArrowDown: mdiCellphoneArrowDown, - mdiCellphoneBasic: mdiCellphoneBasic, - mdiCellphoneCharging: mdiCellphoneCharging, - mdiCellphoneCog: mdiCellphoneCog, - mdiCellphoneDock: mdiCellphoneDock, - mdiCellphoneErase: mdiCellphoneErase, - mdiCellphoneInformation: mdiCellphoneInformation, - mdiCellphoneIphone: mdiCellphoneIphone, - mdiCellphoneKey: mdiCellphoneKey, - mdiCellphoneLink: mdiCellphoneLink, - mdiCellphoneLinkOff: mdiCellphoneLinkOff, - mdiCellphoneLock: mdiCellphoneLock, - mdiCellphoneMessage: mdiCellphoneMessage, - mdiCellphoneMessageOff: mdiCellphoneMessageOff, - mdiCellphoneNfc: mdiCellphoneNfc, - mdiCellphoneNfcOff: mdiCellphoneNfcOff, - mdiCellphoneOff: mdiCellphoneOff, - mdiCellphonePlay: mdiCellphonePlay, - mdiCellphoneScreenshot: mdiCellphoneScreenshot, - mdiCellphoneSettings: mdiCellphoneSettings, - mdiCellphoneSound: mdiCellphoneSound, - mdiCellphoneText: mdiCellphoneText, - mdiCellphoneWireless: mdiCellphoneWireless, - mdiCelticCross: mdiCelticCross, - mdiCentos: mdiCentos, - mdiCertificate: mdiCertificate, - mdiCertificateOutline: mdiCertificateOutline, - mdiChairRolling: mdiChairRolling, - mdiChairSchool: mdiChairSchool, - mdiCharity: mdiCharity, - mdiChartArc: mdiChartArc, - mdiChartAreaspline: mdiChartAreaspline, - mdiChartAreasplineVariant: mdiChartAreasplineVariant, - mdiChartBar: mdiChartBar, - mdiChartBarStacked: mdiChartBarStacked, - mdiChartBellCurve: mdiChartBellCurve, - mdiChartBellCurveCumulative: mdiChartBellCurveCumulative, - mdiChartBox: mdiChartBox, - mdiChartBoxOutline: mdiChartBoxOutline, - mdiChartBoxPlusOutline: mdiChartBoxPlusOutline, - mdiChartBubble: mdiChartBubble, - mdiChartDonut: mdiChartDonut, - mdiChartDonutVariant: mdiChartDonutVariant, - mdiChartGantt: mdiChartGantt, - mdiChartHistogram: mdiChartHistogram, - mdiChartLine: mdiChartLine, - mdiChartLineStacked: mdiChartLineStacked, - mdiChartLineVariant: mdiChartLineVariant, - mdiChartMultiline: mdiChartMultiline, - mdiChartMultiple: mdiChartMultiple, - mdiChartPie: mdiChartPie, - mdiChartPpf: mdiChartPpf, - mdiChartSankey: mdiChartSankey, - mdiChartSankeyVariant: mdiChartSankeyVariant, - mdiChartScatterPlot: mdiChartScatterPlot, - mdiChartScatterPlotHexbin: mdiChartScatterPlotHexbin, - mdiChartTimeline: mdiChartTimeline, - mdiChartTimelineVariant: mdiChartTimelineVariant, - mdiChartTimelineVariantShimmer: mdiChartTimelineVariantShimmer, - mdiChartTree: mdiChartTree, - mdiChat: mdiChat, - mdiChatAlert: mdiChatAlert, - mdiChatAlertOutline: mdiChatAlertOutline, - mdiChatMinus: mdiChatMinus, - mdiChatMinusOutline: mdiChatMinusOutline, - mdiChatOutline: mdiChatOutline, - mdiChatPlus: mdiChatPlus, - mdiChatPlusOutline: mdiChatPlusOutline, - mdiChatProcessing: mdiChatProcessing, - mdiChatProcessingOutline: mdiChatProcessingOutline, - mdiChatQuestion: mdiChatQuestion, - mdiChatQuestionOutline: mdiChatQuestionOutline, - mdiChatRemove: mdiChatRemove, - mdiChatRemoveOutline: mdiChatRemoveOutline, - mdiChatSleep: mdiChatSleep, - mdiChatSleepOutline: mdiChatSleepOutline, - mdiCheck: mdiCheck, - mdiCheckAll: mdiCheckAll, - mdiCheckBold: mdiCheckBold, - mdiCheckBoxMultipleOutline: mdiCheckBoxMultipleOutline, - mdiCheckBoxOutline: mdiCheckBoxOutline, - mdiCheckCircle: mdiCheckCircle, - mdiCheckCircleOutline: mdiCheckCircleOutline, - mdiCheckDecagram: mdiCheckDecagram, - mdiCheckDecagramOutline: mdiCheckDecagramOutline, - mdiCheckNetwork: mdiCheckNetwork, - mdiCheckNetworkOutline: mdiCheckNetworkOutline, - mdiCheckOutline: mdiCheckOutline, - mdiCheckUnderline: mdiCheckUnderline, - mdiCheckUnderlineCircle: mdiCheckUnderlineCircle, - mdiCheckUnderlineCircleOutline: mdiCheckUnderlineCircleOutline, - mdiCheckbook: mdiCheckbook, - mdiCheckboxBlank: mdiCheckboxBlank, - mdiCheckboxBlankCircle: mdiCheckboxBlankCircle, - mdiCheckboxBlankCircleOutline: mdiCheckboxBlankCircleOutline, - mdiCheckboxBlankOff: mdiCheckboxBlankOff, - mdiCheckboxBlankOffOutline: mdiCheckboxBlankOffOutline, - mdiCheckboxBlankOutline: mdiCheckboxBlankOutline, - mdiCheckboxIntermediate: mdiCheckboxIntermediate, - mdiCheckboxMarked: mdiCheckboxMarked, - mdiCheckboxMarkedCircle: mdiCheckboxMarkedCircle, - mdiCheckboxMarkedCircleOutline: mdiCheckboxMarkedCircleOutline, - mdiCheckboxMarkedOutline: mdiCheckboxMarkedOutline, - mdiCheckboxMultipleBlank: mdiCheckboxMultipleBlank, - mdiCheckboxMultipleBlankCircle: mdiCheckboxMultipleBlankCircle, - mdiCheckboxMultipleBlankCircleOutline: mdiCheckboxMultipleBlankCircleOutline, - mdiCheckboxMultipleBlankOutline: mdiCheckboxMultipleBlankOutline, - mdiCheckboxMultipleMarked: mdiCheckboxMultipleMarked, - mdiCheckboxMultipleMarkedCircle: mdiCheckboxMultipleMarkedCircle, - mdiCheckboxMultipleMarkedCircleOutline: mdiCheckboxMultipleMarkedCircleOutline, - mdiCheckboxMultipleMarkedOutline: mdiCheckboxMultipleMarkedOutline, - mdiCheckerboard: mdiCheckerboard, - mdiCheckerboardMinus: mdiCheckerboardMinus, - mdiCheckerboardPlus: mdiCheckerboardPlus, - mdiCheckerboardRemove: mdiCheckerboardRemove, - mdiCheese: mdiCheese, - mdiCheeseOff: mdiCheeseOff, - mdiChefHat: mdiChefHat, - mdiChemicalWeapon: mdiChemicalWeapon, - mdiChessBishop: mdiChessBishop, - mdiChessKing: mdiChessKing, - mdiChessKnight: mdiChessKnight, - mdiChessPawn: mdiChessPawn, - mdiChessQueen: mdiChessQueen, - mdiChessRook: mdiChessRook, - mdiChevronDoubleDown: mdiChevronDoubleDown, - mdiChevronDoubleLeft: mdiChevronDoubleLeft, - mdiChevronDoubleRight: mdiChevronDoubleRight, - mdiChevronDoubleUp: mdiChevronDoubleUp, - mdiChevronDown: mdiChevronDown, - mdiChevronDownBox: mdiChevronDownBox, - mdiChevronDownBoxOutline: mdiChevronDownBoxOutline, - mdiChevronDownCircle: mdiChevronDownCircle, - mdiChevronDownCircleOutline: mdiChevronDownCircleOutline, - mdiChevronLeft: mdiChevronLeft, - mdiChevronLeftBox: mdiChevronLeftBox, - mdiChevronLeftBoxOutline: mdiChevronLeftBoxOutline, - mdiChevronLeftCircle: mdiChevronLeftCircle, - mdiChevronLeftCircleOutline: mdiChevronLeftCircleOutline, - mdiChevronRight: mdiChevronRight, - mdiChevronRightBox: mdiChevronRightBox, - mdiChevronRightBoxOutline: mdiChevronRightBoxOutline, - mdiChevronRightCircle: mdiChevronRightCircle, - mdiChevronRightCircleOutline: mdiChevronRightCircleOutline, - mdiChevronTripleDown: mdiChevronTripleDown, - mdiChevronTripleLeft: mdiChevronTripleLeft, - mdiChevronTripleRight: mdiChevronTripleRight, - mdiChevronTripleUp: mdiChevronTripleUp, - mdiChevronUp: mdiChevronUp, - mdiChevronUpBox: mdiChevronUpBox, - mdiChevronUpBoxOutline: mdiChevronUpBoxOutline, - mdiChevronUpCircle: mdiChevronUpCircle, - mdiChevronUpCircleOutline: mdiChevronUpCircleOutline, - mdiChiliHot: mdiChiliHot, - mdiChiliMedium: mdiChiliMedium, - mdiChiliMild: mdiChiliMild, - mdiChiliOff: mdiChiliOff, - mdiChip: mdiChip, - mdiChristianity: mdiChristianity, - mdiChristianityOutline: mdiChristianityOutline, - mdiChurch: mdiChurch, - mdiCigar: mdiCigar, - mdiCigarOff: mdiCigarOff, - mdiCircle: mdiCircle, - mdiCircleBox: mdiCircleBox, - mdiCircleBoxOutline: mdiCircleBoxOutline, - mdiCircleDouble: mdiCircleDouble, - mdiCircleEditOutline: mdiCircleEditOutline, - mdiCircleExpand: mdiCircleExpand, - mdiCircleHalf: mdiCircleHalf, - mdiCircleHalfFull: mdiCircleHalfFull, - mdiCircleMedium: mdiCircleMedium, - mdiCircleMultiple: mdiCircleMultiple, - mdiCircleMultipleOutline: mdiCircleMultipleOutline, - mdiCircleOffOutline: mdiCircleOffOutline, - mdiCircleOutline: mdiCircleOutline, - mdiCircleSlice1: mdiCircleSlice1, - mdiCircleSlice2: mdiCircleSlice2, - mdiCircleSlice3: mdiCircleSlice3, - mdiCircleSlice4: mdiCircleSlice4, - mdiCircleSlice5: mdiCircleSlice5, - mdiCircleSlice6: mdiCircleSlice6, - mdiCircleSlice7: mdiCircleSlice7, - mdiCircleSlice8: mdiCircleSlice8, - mdiCircleSmall: mdiCircleSmall, - mdiCircularSaw: mdiCircularSaw, - mdiCity: mdiCity, - mdiCityVariant: mdiCityVariant, - mdiCityVariantOutline: mdiCityVariantOutline, - mdiClipboard: mdiClipboard, - mdiClipboardAccount: mdiClipboardAccount, - mdiClipboardAccountOutline: mdiClipboardAccountOutline, - mdiClipboardAlert: mdiClipboardAlert, - mdiClipboardAlertOutline: mdiClipboardAlertOutline, - mdiClipboardArrowDown: mdiClipboardArrowDown, - mdiClipboardArrowDownOutline: mdiClipboardArrowDownOutline, - mdiClipboardArrowLeft: mdiClipboardArrowLeft, - mdiClipboardArrowLeftOutline: mdiClipboardArrowLeftOutline, - mdiClipboardArrowRight: mdiClipboardArrowRight, - mdiClipboardArrowRightOutline: mdiClipboardArrowRightOutline, - mdiClipboardArrowUp: mdiClipboardArrowUp, - mdiClipboardArrowUpOutline: mdiClipboardArrowUpOutline, - mdiClipboardCheck: mdiClipboardCheck, - mdiClipboardCheckMultiple: mdiClipboardCheckMultiple, - mdiClipboardCheckMultipleOutline: mdiClipboardCheckMultipleOutline, - mdiClipboardCheckOutline: mdiClipboardCheckOutline, - mdiClipboardClock: mdiClipboardClock, - mdiClipboardClockOutline: mdiClipboardClockOutline, - mdiClipboardEdit: mdiClipboardEdit, - mdiClipboardEditOutline: mdiClipboardEditOutline, - mdiClipboardFile: mdiClipboardFile, - mdiClipboardFileOutline: mdiClipboardFileOutline, - mdiClipboardFlow: mdiClipboardFlow, - mdiClipboardFlowOutline: mdiClipboardFlowOutline, - mdiClipboardList: mdiClipboardList, - mdiClipboardListOutline: mdiClipboardListOutline, - mdiClipboardMinus: mdiClipboardMinus, - mdiClipboardMinusOutline: mdiClipboardMinusOutline, - mdiClipboardMultiple: mdiClipboardMultiple, - mdiClipboardMultipleOutline: mdiClipboardMultipleOutline, - mdiClipboardOff: mdiClipboardOff, - mdiClipboardOffOutline: mdiClipboardOffOutline, - mdiClipboardOutline: mdiClipboardOutline, - mdiClipboardPlay: mdiClipboardPlay, - mdiClipboardPlayMultiple: mdiClipboardPlayMultiple, - mdiClipboardPlayMultipleOutline: mdiClipboardPlayMultipleOutline, - mdiClipboardPlayOutline: mdiClipboardPlayOutline, - mdiClipboardPlus: mdiClipboardPlus, - mdiClipboardPlusOutline: mdiClipboardPlusOutline, - mdiClipboardPulse: mdiClipboardPulse, - mdiClipboardPulseOutline: mdiClipboardPulseOutline, - mdiClipboardRemove: mdiClipboardRemove, - mdiClipboardRemoveOutline: mdiClipboardRemoveOutline, - mdiClipboardSearch: mdiClipboardSearch, - mdiClipboardSearchOutline: mdiClipboardSearchOutline, - mdiClipboardText: mdiClipboardText, - mdiClipboardTextMultiple: mdiClipboardTextMultiple, - mdiClipboardTextMultipleOutline: mdiClipboardTextMultipleOutline, - mdiClipboardTextOff: mdiClipboardTextOff, - mdiClipboardTextOffOutline: mdiClipboardTextOffOutline, - mdiClipboardTextOutline: mdiClipboardTextOutline, - mdiClipboardTextPlay: mdiClipboardTextPlay, - mdiClipboardTextPlayOutline: mdiClipboardTextPlayOutline, - mdiClipboardTextSearch: mdiClipboardTextSearch, - mdiClipboardTextSearchOutline: mdiClipboardTextSearchOutline, - mdiClippy: mdiClippy, - mdiClock: mdiClock, - mdiClockAlert: mdiClockAlert, - mdiClockAlertOutline: mdiClockAlertOutline, - mdiClockCheck: mdiClockCheck, - mdiClockCheckOutline: mdiClockCheckOutline, - mdiClockDigital: mdiClockDigital, - mdiClockEnd: mdiClockEnd, - mdiClockFast: mdiClockFast, - mdiClockIn: mdiClockIn, - mdiClockOut: mdiClockOut, - mdiClockOutline: mdiClockOutline, - mdiClockStart: mdiClockStart, - mdiClockTimeEight: mdiClockTimeEight, - mdiClockTimeEightOutline: mdiClockTimeEightOutline, - mdiClockTimeEleven: mdiClockTimeEleven, - mdiClockTimeElevenOutline: mdiClockTimeElevenOutline, - mdiClockTimeFive: mdiClockTimeFive, - mdiClockTimeFiveOutline: mdiClockTimeFiveOutline, - mdiClockTimeFour: mdiClockTimeFour, - mdiClockTimeFourOutline: mdiClockTimeFourOutline, - mdiClockTimeNine: mdiClockTimeNine, - mdiClockTimeNineOutline: mdiClockTimeNineOutline, - mdiClockTimeOne: mdiClockTimeOne, - mdiClockTimeOneOutline: mdiClockTimeOneOutline, - mdiClockTimeSeven: mdiClockTimeSeven, - mdiClockTimeSevenOutline: mdiClockTimeSevenOutline, - mdiClockTimeSix: mdiClockTimeSix, - mdiClockTimeSixOutline: mdiClockTimeSixOutline, - mdiClockTimeTen: mdiClockTimeTen, - mdiClockTimeTenOutline: mdiClockTimeTenOutline, - mdiClockTimeThree: mdiClockTimeThree, - mdiClockTimeThreeOutline: mdiClockTimeThreeOutline, - mdiClockTimeTwelve: mdiClockTimeTwelve, - mdiClockTimeTwelveOutline: mdiClockTimeTwelveOutline, - mdiClockTimeTwo: mdiClockTimeTwo, - mdiClockTimeTwoOutline: mdiClockTimeTwoOutline, - mdiClose: mdiClose, - mdiCloseBox: mdiCloseBox, - mdiCloseBoxMultiple: mdiCloseBoxMultiple, - mdiCloseBoxMultipleOutline: mdiCloseBoxMultipleOutline, - mdiCloseBoxOutline: mdiCloseBoxOutline, - mdiCloseCircle: mdiCloseCircle, - mdiCloseCircleMultiple: mdiCloseCircleMultiple, - mdiCloseCircleMultipleOutline: mdiCloseCircleMultipleOutline, - mdiCloseCircleOutline: mdiCloseCircleOutline, - mdiCloseNetwork: mdiCloseNetwork, - mdiCloseNetworkOutline: mdiCloseNetworkOutline, - mdiCloseOctagon: mdiCloseOctagon, - mdiCloseOctagonOutline: mdiCloseOctagonOutline, - mdiCloseOutline: mdiCloseOutline, - mdiCloseThick: mdiCloseThick, - mdiClosedCaption: mdiClosedCaption, - mdiClosedCaptionOutline: mdiClosedCaptionOutline, - mdiCloud: mdiCloud, - mdiCloudAlert: mdiCloudAlert, - mdiCloudBraces: mdiCloudBraces, - mdiCloudCheck: mdiCloudCheck, - mdiCloudCheckOutline: mdiCloudCheckOutline, - mdiCloudCircle: mdiCloudCircle, - mdiCloudDownload: mdiCloudDownload, - mdiCloudDownloadOutline: mdiCloudDownloadOutline, - mdiCloudLock: mdiCloudLock, - mdiCloudLockOutline: mdiCloudLockOutline, - mdiCloudOffOutline: mdiCloudOffOutline, - mdiCloudOutline: mdiCloudOutline, - mdiCloudPrint: mdiCloudPrint, - mdiCloudPrintOutline: mdiCloudPrintOutline, - mdiCloudQuestion: mdiCloudQuestion, - mdiCloudRefresh: mdiCloudRefresh, - mdiCloudSearch: mdiCloudSearch, - mdiCloudSearchOutline: mdiCloudSearchOutline, - mdiCloudSync: mdiCloudSync, - mdiCloudSyncOutline: mdiCloudSyncOutline, - mdiCloudTags: mdiCloudTags, - mdiCloudUpload: mdiCloudUpload, - mdiCloudUploadOutline: mdiCloudUploadOutline, - mdiClover: mdiClover, - mdiCoachLamp: mdiCoachLamp, - mdiCoatRack: mdiCoatRack, - mdiCodeArray: mdiCodeArray, - mdiCodeBraces: mdiCodeBraces, - mdiCodeBracesBox: mdiCodeBracesBox, - mdiCodeBrackets: mdiCodeBrackets, - mdiCodeEqual: mdiCodeEqual, - mdiCodeGreaterThan: mdiCodeGreaterThan, - mdiCodeGreaterThanOrEqual: mdiCodeGreaterThanOrEqual, - mdiCodeJson: mdiCodeJson, - mdiCodeLessThan: mdiCodeLessThan, - mdiCodeLessThanOrEqual: mdiCodeLessThanOrEqual, - mdiCodeNotEqual: mdiCodeNotEqual, - mdiCodeNotEqualVariant: mdiCodeNotEqualVariant, - mdiCodeParentheses: mdiCodeParentheses, - mdiCodeParenthesesBox: mdiCodeParenthesesBox, - mdiCodeString: mdiCodeString, - mdiCodeTags: mdiCodeTags, - mdiCodeTagsCheck: mdiCodeTagsCheck, - mdiCodepen: mdiCodepen, - mdiCoffee: mdiCoffee, - mdiCoffeeMaker: mdiCoffeeMaker, - mdiCoffeeOff: mdiCoffeeOff, - mdiCoffeeOffOutline: mdiCoffeeOffOutline, - mdiCoffeeOutline: mdiCoffeeOutline, - mdiCoffeeToGo: mdiCoffeeToGo, - mdiCoffeeToGoOutline: mdiCoffeeToGoOutline, - mdiCoffin: mdiCoffin, - mdiCog: mdiCog, - mdiCogBox: mdiCogBox, - mdiCogClockwise: mdiCogClockwise, - mdiCogCounterclockwise: mdiCogCounterclockwise, - mdiCogOff: mdiCogOff, - mdiCogOffOutline: mdiCogOffOutline, - mdiCogOutline: mdiCogOutline, - mdiCogRefresh: mdiCogRefresh, - mdiCogRefreshOutline: mdiCogRefreshOutline, - mdiCogSync: mdiCogSync, - mdiCogSyncOutline: mdiCogSyncOutline, - mdiCogTransfer: mdiCogTransfer, - mdiCogTransferOutline: mdiCogTransferOutline, - mdiCogs: mdiCogs, - mdiCollage: mdiCollage, - mdiCollapseAll: mdiCollapseAll, - mdiCollapseAllOutline: mdiCollapseAllOutline, - mdiColorHelper: mdiColorHelper, - mdiComma: mdiComma, - mdiCommaBox: mdiCommaBox, - mdiCommaBoxOutline: mdiCommaBoxOutline, - mdiCommaCircle: mdiCommaCircle, - mdiCommaCircleOutline: mdiCommaCircleOutline, - mdiComment: mdiComment, - mdiCommentAccount: mdiCommentAccount, - mdiCommentAccountOutline: mdiCommentAccountOutline, - mdiCommentAlert: mdiCommentAlert, - mdiCommentAlertOutline: mdiCommentAlertOutline, - mdiCommentArrowLeft: mdiCommentArrowLeft, - mdiCommentArrowLeftOutline: mdiCommentArrowLeftOutline, - mdiCommentArrowRight: mdiCommentArrowRight, - mdiCommentArrowRightOutline: mdiCommentArrowRightOutline, - mdiCommentBookmark: mdiCommentBookmark, - mdiCommentBookmarkOutline: mdiCommentBookmarkOutline, - mdiCommentCheck: mdiCommentCheck, - mdiCommentCheckOutline: mdiCommentCheckOutline, - mdiCommentEdit: mdiCommentEdit, - mdiCommentEditOutline: mdiCommentEditOutline, - mdiCommentEye: mdiCommentEye, - mdiCommentEyeOutline: mdiCommentEyeOutline, - mdiCommentFlash: mdiCommentFlash, - mdiCommentFlashOutline: mdiCommentFlashOutline, - mdiCommentMinus: mdiCommentMinus, - mdiCommentMinusOutline: mdiCommentMinusOutline, - mdiCommentMultiple: mdiCommentMultiple, - mdiCommentMultipleOutline: mdiCommentMultipleOutline, - mdiCommentOff: mdiCommentOff, - mdiCommentOffOutline: mdiCommentOffOutline, - mdiCommentOutline: mdiCommentOutline, - mdiCommentPlus: mdiCommentPlus, - mdiCommentPlusOutline: mdiCommentPlusOutline, - mdiCommentProcessing: mdiCommentProcessing, - mdiCommentProcessingOutline: mdiCommentProcessingOutline, - mdiCommentQuestion: mdiCommentQuestion, - mdiCommentQuestionOutline: mdiCommentQuestionOutline, - mdiCommentQuote: mdiCommentQuote, - mdiCommentQuoteOutline: mdiCommentQuoteOutline, - mdiCommentRemove: mdiCommentRemove, - mdiCommentRemoveOutline: mdiCommentRemoveOutline, - mdiCommentSearch: mdiCommentSearch, - mdiCommentSearchOutline: mdiCommentSearchOutline, - mdiCommentText: mdiCommentText, - mdiCommentTextMultiple: mdiCommentTextMultiple, - mdiCommentTextMultipleOutline: mdiCommentTextMultipleOutline, - mdiCommentTextOutline: mdiCommentTextOutline, - mdiCompare: mdiCompare, - mdiCompareHorizontal: mdiCompareHorizontal, - mdiCompareVertical: mdiCompareVertical, - mdiCompass: mdiCompass, - mdiCompassOff: mdiCompassOff, - mdiCompassOffOutline: mdiCompassOffOutline, - mdiCompassOutline: mdiCompassOutline, - mdiCompassRose: mdiCompassRose, - mdiConcourseCi: mdiConcourseCi, - mdiConnection: mdiConnection, - mdiConsole: mdiConsole, - mdiConsoleLine: mdiConsoleLine, - mdiConsoleNetwork: mdiConsoleNetwork, - mdiConsoleNetworkOutline: mdiConsoleNetworkOutline, - mdiConsolidate: mdiConsolidate, - mdiContactlessPayment: mdiContactlessPayment, - mdiContactlessPaymentCircle: mdiContactlessPaymentCircle, - mdiContactlessPaymentCircleOutline: mdiContactlessPaymentCircleOutline, - mdiContacts: mdiContacts, - mdiContactsOutline: mdiContactsOutline, - mdiContain: mdiContain, - mdiContainEnd: mdiContainEnd, - mdiContainStart: mdiContainStart, - mdiContentCopy: mdiContentCopy, - mdiContentCut: mdiContentCut, - mdiContentDuplicate: mdiContentDuplicate, - mdiContentPaste: mdiContentPaste, - mdiContentSave: mdiContentSave, - mdiContentSaveAlert: mdiContentSaveAlert, - mdiContentSaveAlertOutline: mdiContentSaveAlertOutline, - mdiContentSaveAll: mdiContentSaveAll, - mdiContentSaveAllOutline: mdiContentSaveAllOutline, - mdiContentSaveCog: mdiContentSaveCog, - mdiContentSaveCogOutline: mdiContentSaveCogOutline, - mdiContentSaveEdit: mdiContentSaveEdit, - mdiContentSaveEditOutline: mdiContentSaveEditOutline, - mdiContentSaveMove: mdiContentSaveMove, - mdiContentSaveMoveOutline: mdiContentSaveMoveOutline, - mdiContentSaveOff: mdiContentSaveOff, - mdiContentSaveOffOutline: mdiContentSaveOffOutline, - mdiContentSaveOutline: mdiContentSaveOutline, - mdiContentSaveSettings: mdiContentSaveSettings, - mdiContentSaveSettingsOutline: mdiContentSaveSettingsOutline, - mdiContrast: mdiContrast, - mdiContrastBox: mdiContrastBox, - mdiContrastCircle: mdiContrastCircle, - mdiControllerClassic: mdiControllerClassic, - mdiControllerClassicOutline: mdiControllerClassicOutline, - mdiCookie: mdiCookie, - mdiCookieAlert: mdiCookieAlert, - mdiCookieAlertOutline: mdiCookieAlertOutline, - mdiCookieCheck: mdiCookieCheck, - mdiCookieCheckOutline: mdiCookieCheckOutline, - mdiCookieClock: mdiCookieClock, - mdiCookieClockOutline: mdiCookieClockOutline, - mdiCookieCog: mdiCookieCog, - mdiCookieCogOutline: mdiCookieCogOutline, - mdiCookieEdit: mdiCookieEdit, - mdiCookieEditOutline: mdiCookieEditOutline, - mdiCookieLock: mdiCookieLock, - mdiCookieLockOutline: mdiCookieLockOutline, - mdiCookieMinus: mdiCookieMinus, - mdiCookieMinusOutline: mdiCookieMinusOutline, - mdiCookieOff: mdiCookieOff, - mdiCookieOffOutline: mdiCookieOffOutline, - mdiCookieOutline: mdiCookieOutline, - mdiCookiePlus: mdiCookiePlus, - mdiCookiePlusOutline: mdiCookiePlusOutline, - mdiCookieRefresh: mdiCookieRefresh, - mdiCookieRefreshOutline: mdiCookieRefreshOutline, - mdiCookieRemove: mdiCookieRemove, - mdiCookieRemoveOutline: mdiCookieRemoveOutline, - mdiCookieSettings: mdiCookieSettings, - mdiCookieSettingsOutline: mdiCookieSettingsOutline, - mdiCoolantTemperature: mdiCoolantTemperature, - mdiCopyright: mdiCopyright, - mdiCordova: mdiCordova, - mdiCorn: mdiCorn, - mdiCornOff: mdiCornOff, - mdiCosineWave: mdiCosineWave, - mdiCounter: mdiCounter, - mdiCow: mdiCow, - mdiCpu32Bit: mdiCpu32Bit, - mdiCpu64Bit: mdiCpu64Bit, - mdiCrane: mdiCrane, - mdiCreation: mdiCreation, - mdiCreativeCommons: mdiCreativeCommons, - mdiCreditCard: mdiCreditCard, - mdiCreditCardCheck: mdiCreditCardCheck, - mdiCreditCardCheckOutline: mdiCreditCardCheckOutline, - mdiCreditCardClock: mdiCreditCardClock, - mdiCreditCardClockOutline: mdiCreditCardClockOutline, - mdiCreditCardMarker: mdiCreditCardMarker, - mdiCreditCardMarkerOutline: mdiCreditCardMarkerOutline, - mdiCreditCardMinus: mdiCreditCardMinus, - mdiCreditCardMinusOutline: mdiCreditCardMinusOutline, - mdiCreditCardMultiple: mdiCreditCardMultiple, - mdiCreditCardMultipleOutline: mdiCreditCardMultipleOutline, - mdiCreditCardOff: mdiCreditCardOff, - mdiCreditCardOffOutline: mdiCreditCardOffOutline, - mdiCreditCardOutline: mdiCreditCardOutline, - mdiCreditCardPlus: mdiCreditCardPlus, - mdiCreditCardPlusOutline: mdiCreditCardPlusOutline, - mdiCreditCardRefresh: mdiCreditCardRefresh, - mdiCreditCardRefreshOutline: mdiCreditCardRefreshOutline, - mdiCreditCardRefund: mdiCreditCardRefund, - mdiCreditCardRefundOutline: mdiCreditCardRefundOutline, - mdiCreditCardRemove: mdiCreditCardRemove, - mdiCreditCardRemoveOutline: mdiCreditCardRemoveOutline, - mdiCreditCardScan: mdiCreditCardScan, - mdiCreditCardScanOutline: mdiCreditCardScanOutline, - mdiCreditCardSearch: mdiCreditCardSearch, - mdiCreditCardSearchOutline: mdiCreditCardSearchOutline, - mdiCreditCardSettings: mdiCreditCardSettings, - mdiCreditCardSettingsOutline: mdiCreditCardSettingsOutline, - mdiCreditCardSync: mdiCreditCardSync, - mdiCreditCardSyncOutline: mdiCreditCardSyncOutline, - mdiCreditCardWireless: mdiCreditCardWireless, - mdiCreditCardWirelessOff: mdiCreditCardWirelessOff, - mdiCreditCardWirelessOffOutline: mdiCreditCardWirelessOffOutline, - mdiCreditCardWirelessOutline: mdiCreditCardWirelessOutline, - mdiCricket: mdiCricket, - mdiCrop: mdiCrop, - mdiCropFree: mdiCropFree, - mdiCropLandscape: mdiCropLandscape, - mdiCropPortrait: mdiCropPortrait, - mdiCropRotate: mdiCropRotate, - mdiCropSquare: mdiCropSquare, - mdiCrosshairs: mdiCrosshairs, - mdiCrosshairsGps: mdiCrosshairsGps, - mdiCrosshairsOff: mdiCrosshairsOff, - mdiCrosshairsQuestion: mdiCrosshairsQuestion, - mdiCrown: mdiCrown, - mdiCrownOutline: mdiCrownOutline, - mdiCryengine: mdiCryengine, - mdiCrystalBall: mdiCrystalBall, - mdiCube: mdiCube, - mdiCubeOff: mdiCubeOff, - mdiCubeOffOutline: mdiCubeOffOutline, - mdiCubeOutline: mdiCubeOutline, - mdiCubeScan: mdiCubeScan, - mdiCubeSend: mdiCubeSend, - mdiCubeUnfolded: mdiCubeUnfolded, - mdiCup: mdiCup, - mdiCupOff: mdiCupOff, - mdiCupOffOutline: mdiCupOffOutline, - mdiCupOutline: mdiCupOutline, - mdiCupWater: mdiCupWater, - mdiCupboard: mdiCupboard, - mdiCupboardOutline: mdiCupboardOutline, - mdiCupcake: mdiCupcake, - mdiCurling: mdiCurling, - mdiCurrencyBdt: mdiCurrencyBdt, - mdiCurrencyBrl: mdiCurrencyBrl, - mdiCurrencyBtc: mdiCurrencyBtc, - mdiCurrencyCny: mdiCurrencyCny, - mdiCurrencyEth: mdiCurrencyEth, - mdiCurrencyEur: mdiCurrencyEur, - mdiCurrencyEurOff: mdiCurrencyEurOff, - mdiCurrencyGbp: mdiCurrencyGbp, - mdiCurrencyIls: mdiCurrencyIls, - mdiCurrencyInr: mdiCurrencyInr, - mdiCurrencyJpy: mdiCurrencyJpy, - mdiCurrencyKrw: mdiCurrencyKrw, - mdiCurrencyKzt: mdiCurrencyKzt, - mdiCurrencyMnt: mdiCurrencyMnt, - mdiCurrencyNgn: mdiCurrencyNgn, - mdiCurrencyPhp: mdiCurrencyPhp, - mdiCurrencyRial: mdiCurrencyRial, - mdiCurrencyRub: mdiCurrencyRub, - mdiCurrencySign: mdiCurrencySign, - mdiCurrencyTry: mdiCurrencyTry, - mdiCurrencyTwd: mdiCurrencyTwd, - mdiCurrencyUsd: mdiCurrencyUsd, - mdiCurrencyUsdCircle: mdiCurrencyUsdCircle, - mdiCurrencyUsdCircleOutline: mdiCurrencyUsdCircleOutline, - mdiCurrencyUsdOff: mdiCurrencyUsdOff, - mdiCurrentAc: mdiCurrentAc, - mdiCurrentDc: mdiCurrentDc, - mdiCursorDefault: mdiCursorDefault, - mdiCursorDefaultClick: mdiCursorDefaultClick, - mdiCursorDefaultClickOutline: mdiCursorDefaultClickOutline, - mdiCursorDefaultGesture: mdiCursorDefaultGesture, - mdiCursorDefaultGestureOutline: mdiCursorDefaultGestureOutline, - mdiCursorDefaultOutline: mdiCursorDefaultOutline, - mdiCursorMove: mdiCursorMove, - mdiCursorPointer: mdiCursorPointer, - mdiCursorText: mdiCursorText, - mdiDanceBallroom: mdiDanceBallroom, - mdiDancePole: mdiDancePole, - mdiDataMatrix: mdiDataMatrix, - mdiDataMatrixEdit: mdiDataMatrixEdit, - mdiDataMatrixMinus: mdiDataMatrixMinus, - mdiDataMatrixPlus: mdiDataMatrixPlus, - mdiDataMatrixRemove: mdiDataMatrixRemove, - mdiDataMatrixScan: mdiDataMatrixScan, - mdiDatabase: mdiDatabase, - mdiDatabaseAlert: mdiDatabaseAlert, - mdiDatabaseAlertOutline: mdiDatabaseAlertOutline, - mdiDatabaseArrowDown: mdiDatabaseArrowDown, - mdiDatabaseArrowDownOutline: mdiDatabaseArrowDownOutline, - mdiDatabaseArrowLeft: mdiDatabaseArrowLeft, - mdiDatabaseArrowLeftOutline: mdiDatabaseArrowLeftOutline, - mdiDatabaseArrowRight: mdiDatabaseArrowRight, - mdiDatabaseArrowRightOutline: mdiDatabaseArrowRightOutline, - mdiDatabaseArrowUp: mdiDatabaseArrowUp, - mdiDatabaseArrowUpOutline: mdiDatabaseArrowUpOutline, - mdiDatabaseCheck: mdiDatabaseCheck, - mdiDatabaseCheckOutline: mdiDatabaseCheckOutline, - mdiDatabaseClock: mdiDatabaseClock, - mdiDatabaseClockOutline: mdiDatabaseClockOutline, - mdiDatabaseCog: mdiDatabaseCog, - mdiDatabaseCogOutline: mdiDatabaseCogOutline, - mdiDatabaseEdit: mdiDatabaseEdit, - mdiDatabaseEditOutline: mdiDatabaseEditOutline, - mdiDatabaseExport: mdiDatabaseExport, - mdiDatabaseExportOutline: mdiDatabaseExportOutline, - mdiDatabaseImport: mdiDatabaseImport, - mdiDatabaseImportOutline: mdiDatabaseImportOutline, - mdiDatabaseLock: mdiDatabaseLock, - mdiDatabaseLockOutline: mdiDatabaseLockOutline, - mdiDatabaseMarker: mdiDatabaseMarker, - mdiDatabaseMarkerOutline: mdiDatabaseMarkerOutline, - mdiDatabaseMinus: mdiDatabaseMinus, - mdiDatabaseMinusOutline: mdiDatabaseMinusOutline, - mdiDatabaseOff: mdiDatabaseOff, - mdiDatabaseOffOutline: mdiDatabaseOffOutline, - mdiDatabaseOutline: mdiDatabaseOutline, - mdiDatabasePlus: mdiDatabasePlus, - mdiDatabasePlusOutline: mdiDatabasePlusOutline, - mdiDatabaseRefresh: mdiDatabaseRefresh, - mdiDatabaseRefreshOutline: mdiDatabaseRefreshOutline, - mdiDatabaseRemove: mdiDatabaseRemove, - mdiDatabaseRemoveOutline: mdiDatabaseRemoveOutline, - mdiDatabaseSearch: mdiDatabaseSearch, - mdiDatabaseSearchOutline: mdiDatabaseSearchOutline, - mdiDatabaseSettings: mdiDatabaseSettings, - mdiDatabaseSettingsOutline: mdiDatabaseSettingsOutline, - mdiDatabaseSync: mdiDatabaseSync, - mdiDatabaseSyncOutline: mdiDatabaseSyncOutline, - mdiDeathStar: mdiDeathStar, - mdiDeathStarVariant: mdiDeathStarVariant, - mdiDeathlyHallows: mdiDeathlyHallows, - mdiDebian: mdiDebian, - mdiDebugStepInto: mdiDebugStepInto, - mdiDebugStepOut: mdiDebugStepOut, - mdiDebugStepOver: mdiDebugStepOver, - mdiDecagram: mdiDecagram, - mdiDecagramOutline: mdiDecagramOutline, - mdiDecimal: mdiDecimal, - mdiDecimalComma: mdiDecimalComma, - mdiDecimalCommaDecrease: mdiDecimalCommaDecrease, - mdiDecimalCommaIncrease: mdiDecimalCommaIncrease, - mdiDecimalDecrease: mdiDecimalDecrease, - mdiDecimalIncrease: mdiDecimalIncrease, - mdiDelete: mdiDelete, - mdiDeleteAlert: mdiDeleteAlert, - mdiDeleteAlertOutline: mdiDeleteAlertOutline, - mdiDeleteCircle: mdiDeleteCircle, - mdiDeleteCircleOutline: mdiDeleteCircleOutline, - mdiDeleteClock: mdiDeleteClock, - mdiDeleteClockOutline: mdiDeleteClockOutline, - mdiDeleteEmpty: mdiDeleteEmpty, - mdiDeleteEmptyOutline: mdiDeleteEmptyOutline, - mdiDeleteForever: mdiDeleteForever, - mdiDeleteForeverOutline: mdiDeleteForeverOutline, - mdiDeleteOff: mdiDeleteOff, - mdiDeleteOffOutline: mdiDeleteOffOutline, - mdiDeleteOutline: mdiDeleteOutline, - mdiDeleteRestore: mdiDeleteRestore, - mdiDeleteSweep: mdiDeleteSweep, - mdiDeleteSweepOutline: mdiDeleteSweepOutline, - mdiDeleteVariant: mdiDeleteVariant, - mdiDelta: mdiDelta, - mdiDesk: mdiDesk, - mdiDeskLamp: mdiDeskLamp, - mdiDeskphone: mdiDeskphone, - mdiDesktopClassic: mdiDesktopClassic, - mdiDesktopMac: mdiDesktopMac, - mdiDesktopMacDashboard: mdiDesktopMacDashboard, - mdiDesktopTower: mdiDesktopTower, - mdiDesktopTowerMonitor: mdiDesktopTowerMonitor, - mdiDetails: mdiDetails, - mdiDevTo: mdiDevTo, - mdiDeveloperBoard: mdiDeveloperBoard, - mdiDeviantart: mdiDeviantart, - mdiDevices: mdiDevices, - mdiDiabetes: mdiDiabetes, - mdiDialpad: mdiDialpad, - mdiDiameter: mdiDiameter, - mdiDiameterOutline: mdiDiameterOutline, - mdiDiameterVariant: mdiDiameterVariant, - mdiDiamond: mdiDiamond, - mdiDiamondOutline: mdiDiamondOutline, - mdiDiamondStone: mdiDiamondStone, - mdiDice1: mdiDice1, - mdiDice1Outline: mdiDice1Outline, - mdiDice2: mdiDice2, - mdiDice2Outline: mdiDice2Outline, - mdiDice3: mdiDice3, - mdiDice3Outline: mdiDice3Outline, - mdiDice4: mdiDice4, - mdiDice4Outline: mdiDice4Outline, - mdiDice5: mdiDice5, - mdiDice5Outline: mdiDice5Outline, - mdiDice6: mdiDice6, - mdiDice6Outline: mdiDice6Outline, - mdiDiceD10: mdiDiceD10, - mdiDiceD10Outline: mdiDiceD10Outline, - mdiDiceD12: mdiDiceD12, - mdiDiceD12Outline: mdiDiceD12Outline, - mdiDiceD20: mdiDiceD20, - mdiDiceD20Outline: mdiDiceD20Outline, - mdiDiceD4: mdiDiceD4, - mdiDiceD4Outline: mdiDiceD4Outline, - mdiDiceD6: mdiDiceD6, - mdiDiceD6Outline: mdiDiceD6Outline, - mdiDiceD8: mdiDiceD8, - mdiDiceD8Outline: mdiDiceD8Outline, - mdiDiceMultiple: mdiDiceMultiple, - mdiDiceMultipleOutline: mdiDiceMultipleOutline, - mdiDigitalOcean: mdiDigitalOcean, - mdiDipSwitch: mdiDipSwitch, - mdiDirections: mdiDirections, - mdiDirectionsFork: mdiDirectionsFork, - mdiDisc: mdiDisc, - mdiDiscAlert: mdiDiscAlert, - mdiDiscPlayer: mdiDiscPlayer, - mdiDiscord: mdiDiscord, - mdiDishwasher: mdiDishwasher, - mdiDishwasherAlert: mdiDishwasherAlert, - mdiDishwasherOff: mdiDishwasherOff, - mdiDisqus: mdiDisqus, - mdiDistributeHorizontalCenter: mdiDistributeHorizontalCenter, - mdiDistributeHorizontalLeft: mdiDistributeHorizontalLeft, - mdiDistributeHorizontalRight: mdiDistributeHorizontalRight, - mdiDistributeVerticalBottom: mdiDistributeVerticalBottom, - mdiDistributeVerticalCenter: mdiDistributeVerticalCenter, - mdiDistributeVerticalTop: mdiDistributeVerticalTop, - mdiDivingFlippers: mdiDivingFlippers, - mdiDivingHelmet: mdiDivingHelmet, - mdiDivingScuba: mdiDivingScuba, - mdiDivingScubaFlag: mdiDivingScubaFlag, - mdiDivingScubaTank: mdiDivingScubaTank, - mdiDivingScubaTankMultiple: mdiDivingScubaTankMultiple, - mdiDivingSnorkel: mdiDivingSnorkel, - mdiDivision: mdiDivision, - mdiDivisionBox: mdiDivisionBox, - mdiDlna: mdiDlna, - mdiDna: mdiDna, - mdiDns: mdiDns, - mdiDnsOutline: mdiDnsOutline, - mdiDoNotDisturb: mdiDoNotDisturb, - mdiDoNotDisturbOff: mdiDoNotDisturbOff, - mdiDockBottom: mdiDockBottom, - mdiDockLeft: mdiDockLeft, - mdiDockRight: mdiDockRight, - mdiDockTop: mdiDockTop, - mdiDockWindow: mdiDockWindow, - mdiDocker: mdiDocker, - mdiDoctor: mdiDoctor, - mdiDog: mdiDog, - mdiDogService: mdiDogService, - mdiDogSide: mdiDogSide, - mdiDogSideOff: mdiDogSideOff, - mdiDolby: mdiDolby, - mdiDolly: mdiDolly, - mdiDomain: mdiDomain, - mdiDomainOff: mdiDomainOff, - mdiDomainPlus: mdiDomainPlus, - mdiDomainRemove: mdiDomainRemove, - mdiDomeLight: mdiDomeLight, - mdiDominoMask: mdiDominoMask, - mdiDonkey: mdiDonkey, - mdiDoor: mdiDoor, - mdiDoorClosed: mdiDoorClosed, - mdiDoorClosedLock: mdiDoorClosedLock, - mdiDoorOpen: mdiDoorOpen, - mdiDoorbell: mdiDoorbell, - mdiDoorbellVideo: mdiDoorbellVideo, - mdiDotNet: mdiDotNet, - mdiDotsGrid: mdiDotsGrid, - mdiDotsHexagon: mdiDotsHexagon, - mdiDotsHorizontal: mdiDotsHorizontal, - mdiDotsHorizontalCircle: mdiDotsHorizontalCircle, - mdiDotsHorizontalCircleOutline: mdiDotsHorizontalCircleOutline, - mdiDotsSquare: mdiDotsSquare, - mdiDotsTriangle: mdiDotsTriangle, - mdiDotsVertical: mdiDotsVertical, - mdiDotsVerticalCircle: mdiDotsVerticalCircle, - mdiDotsVerticalCircleOutline: mdiDotsVerticalCircleOutline, - mdiDouban: mdiDouban, - mdiDownload: mdiDownload, - mdiDownloadBox: mdiDownloadBox, - mdiDownloadBoxOutline: mdiDownloadBoxOutline, - mdiDownloadCircle: mdiDownloadCircle, - mdiDownloadCircleOutline: mdiDownloadCircleOutline, - mdiDownloadLock: mdiDownloadLock, - mdiDownloadLockOutline: mdiDownloadLockOutline, - mdiDownloadMultiple: mdiDownloadMultiple, - mdiDownloadNetwork: mdiDownloadNetwork, - mdiDownloadNetworkOutline: mdiDownloadNetworkOutline, - mdiDownloadOff: mdiDownloadOff, - mdiDownloadOffOutline: mdiDownloadOffOutline, - mdiDownloadOutline: mdiDownloadOutline, - mdiDrag: mdiDrag, - mdiDragHorizontal: mdiDragHorizontal, - mdiDragHorizontalVariant: mdiDragHorizontalVariant, - mdiDragVariant: mdiDragVariant, - mdiDragVertical: mdiDragVertical, - mdiDragVerticalVariant: mdiDragVerticalVariant, - mdiDramaMasks: mdiDramaMasks, - mdiDraw: mdiDraw, - mdiDrawing: mdiDrawing, - mdiDrawingBox: mdiDrawingBox, - mdiDresser: mdiDresser, - mdiDresserOutline: mdiDresserOutline, - mdiDrone: mdiDrone, - mdiDropbox: mdiDropbox, - mdiDrupal: mdiDrupal, - mdiDuck: mdiDuck, - mdiDumbbell: mdiDumbbell, - mdiDumpTruck: mdiDumpTruck, - mdiEarHearing: mdiEarHearing, - mdiEarHearingOff: mdiEarHearingOff, - mdiEarth: mdiEarth, - mdiEarthArrowRight: mdiEarthArrowRight, - mdiEarthBox: mdiEarthBox, - mdiEarthBoxMinus: mdiEarthBoxMinus, - mdiEarthBoxOff: mdiEarthBoxOff, - mdiEarthBoxPlus: mdiEarthBoxPlus, - mdiEarthBoxRemove: mdiEarthBoxRemove, - mdiEarthMinus: mdiEarthMinus, - mdiEarthOff: mdiEarthOff, - mdiEarthPlus: mdiEarthPlus, - mdiEarthRemove: mdiEarthRemove, - mdiEgg: mdiEgg, - mdiEggEaster: mdiEggEaster, - mdiEggOff: mdiEggOff, - mdiEggOffOutline: mdiEggOffOutline, - mdiEggOutline: mdiEggOutline, - mdiEiffelTower: mdiEiffelTower, - mdiEightTrack: mdiEightTrack, - mdiEject: mdiEject, - mdiEjectOutline: mdiEjectOutline, - mdiElectricSwitch: mdiElectricSwitch, - mdiElectricSwitchClosed: mdiElectricSwitchClosed, - mdiElectronFramework: mdiElectronFramework, - mdiElephant: mdiElephant, - mdiElevationDecline: mdiElevationDecline, - mdiElevationRise: mdiElevationRise, - mdiElevator: mdiElevator, - mdiElevatorDown: mdiElevatorDown, - mdiElevatorPassenger: mdiElevatorPassenger, - mdiElevatorUp: mdiElevatorUp, - mdiEllipse: mdiEllipse, - mdiEllipseOutline: mdiEllipseOutline, - mdiEmail: mdiEmail, - mdiEmailAlert: mdiEmailAlert, - mdiEmailAlertOutline: mdiEmailAlertOutline, - mdiEmailBox: mdiEmailBox, - mdiEmailCheck: mdiEmailCheck, - mdiEmailCheckOutline: mdiEmailCheckOutline, - mdiEmailEdit: mdiEmailEdit, - mdiEmailEditOutline: mdiEmailEditOutline, - mdiEmailLock: mdiEmailLock, - mdiEmailMarkAsUnread: mdiEmailMarkAsUnread, - mdiEmailMinus: mdiEmailMinus, - mdiEmailMinusOutline: mdiEmailMinusOutline, - mdiEmailMultiple: mdiEmailMultiple, - mdiEmailMultipleOutline: mdiEmailMultipleOutline, - mdiEmailNewsletter: mdiEmailNewsletter, - mdiEmailOff: mdiEmailOff, - mdiEmailOffOutline: mdiEmailOffOutline, - mdiEmailOpen: mdiEmailOpen, - mdiEmailOpenMultiple: mdiEmailOpenMultiple, - mdiEmailOpenMultipleOutline: mdiEmailOpenMultipleOutline, - mdiEmailOpenOutline: mdiEmailOpenOutline, - mdiEmailOutline: mdiEmailOutline, - mdiEmailPlus: mdiEmailPlus, - mdiEmailPlusOutline: mdiEmailPlusOutline, - mdiEmailReceive: mdiEmailReceive, - mdiEmailReceiveOutline: mdiEmailReceiveOutline, - mdiEmailRemove: mdiEmailRemove, - mdiEmailRemoveOutline: mdiEmailRemoveOutline, - mdiEmailSearch: mdiEmailSearch, - mdiEmailSearchOutline: mdiEmailSearchOutline, - mdiEmailSend: mdiEmailSend, - mdiEmailSendOutline: mdiEmailSendOutline, - mdiEmailSync: mdiEmailSync, - mdiEmailSyncOutline: mdiEmailSyncOutline, - mdiEmailVariant: mdiEmailVariant, - mdiEmber: mdiEmber, - mdiEmby: mdiEmby, - mdiEmoticon: mdiEmoticon, - mdiEmoticonAngry: mdiEmoticonAngry, - mdiEmoticonAngryOutline: mdiEmoticonAngryOutline, - mdiEmoticonConfused: mdiEmoticonConfused, - mdiEmoticonConfusedOutline: mdiEmoticonConfusedOutline, - mdiEmoticonCool: mdiEmoticonCool, - mdiEmoticonCoolOutline: mdiEmoticonCoolOutline, - mdiEmoticonCry: mdiEmoticonCry, - mdiEmoticonCryOutline: mdiEmoticonCryOutline, - mdiEmoticonDead: mdiEmoticonDead, - mdiEmoticonDeadOutline: mdiEmoticonDeadOutline, - mdiEmoticonDevil: mdiEmoticonDevil, - mdiEmoticonDevilOutline: mdiEmoticonDevilOutline, - mdiEmoticonExcited: mdiEmoticonExcited, - mdiEmoticonExcitedOutline: mdiEmoticonExcitedOutline, - mdiEmoticonFrown: mdiEmoticonFrown, - mdiEmoticonFrownOutline: mdiEmoticonFrownOutline, - mdiEmoticonHappy: mdiEmoticonHappy, - mdiEmoticonHappyOutline: mdiEmoticonHappyOutline, - mdiEmoticonKiss: mdiEmoticonKiss, - mdiEmoticonKissOutline: mdiEmoticonKissOutline, - mdiEmoticonLol: mdiEmoticonLol, - mdiEmoticonLolOutline: mdiEmoticonLolOutline, - mdiEmoticonNeutral: mdiEmoticonNeutral, - mdiEmoticonNeutralOutline: mdiEmoticonNeutralOutline, - mdiEmoticonOutline: mdiEmoticonOutline, - mdiEmoticonPoop: mdiEmoticonPoop, - mdiEmoticonPoopOutline: mdiEmoticonPoopOutline, - mdiEmoticonSad: mdiEmoticonSad, - mdiEmoticonSadOutline: mdiEmoticonSadOutline, - mdiEmoticonSick: mdiEmoticonSick, - mdiEmoticonSickOutline: mdiEmoticonSickOutline, - mdiEmoticonTongue: mdiEmoticonTongue, - mdiEmoticonTongueOutline: mdiEmoticonTongueOutline, - mdiEmoticonWink: mdiEmoticonWink, - mdiEmoticonWinkOutline: mdiEmoticonWinkOutline, - mdiEngine: mdiEngine, - mdiEngineOff: mdiEngineOff, - mdiEngineOffOutline: mdiEngineOffOutline, - mdiEngineOutline: mdiEngineOutline, - mdiEpsilon: mdiEpsilon, - mdiEqual: mdiEqual, - mdiEqualBox: mdiEqualBox, - mdiEqualizer: mdiEqualizer, - mdiEqualizerOutline: mdiEqualizerOutline, - mdiEraser: mdiEraser, - mdiEraserVariant: mdiEraserVariant, - mdiEscalator: mdiEscalator, - mdiEscalatorBox: mdiEscalatorBox, - mdiEscalatorDown: mdiEscalatorDown, - mdiEscalatorUp: mdiEscalatorUp, - mdiEslint: mdiEslint, - mdiEt: mdiEt, - mdiEthereum: mdiEthereum, - mdiEthernet: mdiEthernet, - mdiEthernetCable: mdiEthernetCable, - mdiEthernetCableOff: mdiEthernetCableOff, - mdiEvPlugCcs1: mdiEvPlugCcs1, - mdiEvPlugCcs2: mdiEvPlugCcs2, - mdiEvPlugChademo: mdiEvPlugChademo, - mdiEvPlugTesla: mdiEvPlugTesla, - mdiEvPlugType1: mdiEvPlugType1, - mdiEvPlugType2: mdiEvPlugType2, - mdiEvStation: mdiEvStation, - mdiEvernote: mdiEvernote, - mdiExcavator: mdiExcavator, - mdiExclamation: mdiExclamation, - mdiExclamationThick: mdiExclamationThick, - mdiExitRun: mdiExitRun, - mdiExitToApp: mdiExitToApp, - mdiExpandAll: mdiExpandAll, - mdiExpandAllOutline: mdiExpandAllOutline, - mdiExpansionCard: mdiExpansionCard, - mdiExpansionCardVariant: mdiExpansionCardVariant, - mdiExponent: mdiExponent, - mdiExponentBox: mdiExponentBox, - mdiExport: mdiExport, - mdiExportVariant: mdiExportVariant, - mdiEye: mdiEye, - mdiEyeCheck: mdiEyeCheck, - mdiEyeCheckOutline: mdiEyeCheckOutline, - mdiEyeCircle: mdiEyeCircle, - mdiEyeCircleOutline: mdiEyeCircleOutline, - mdiEyeMinus: mdiEyeMinus, - mdiEyeMinusOutline: mdiEyeMinusOutline, - mdiEyeOff: mdiEyeOff, - mdiEyeOffOutline: mdiEyeOffOutline, - mdiEyeOutline: mdiEyeOutline, - mdiEyePlus: mdiEyePlus, - mdiEyePlusOutline: mdiEyePlusOutline, - mdiEyeRemove: mdiEyeRemove, - mdiEyeRemoveOutline: mdiEyeRemoveOutline, - mdiEyeSettings: mdiEyeSettings, - mdiEyeSettingsOutline: mdiEyeSettingsOutline, - mdiEyedropper: mdiEyedropper, - mdiEyedropperMinus: mdiEyedropperMinus, - mdiEyedropperOff: mdiEyedropperOff, - mdiEyedropperPlus: mdiEyedropperPlus, - mdiEyedropperRemove: mdiEyedropperRemove, - mdiEyedropperVariant: mdiEyedropperVariant, - mdiFace: mdiFace, - mdiFaceAgent: mdiFaceAgent, - mdiFaceMask: mdiFaceMask, - mdiFaceMaskOutline: mdiFaceMaskOutline, - mdiFaceOutline: mdiFaceOutline, - mdiFaceProfile: mdiFaceProfile, - mdiFaceProfileWoman: mdiFaceProfileWoman, - mdiFaceRecognition: mdiFaceRecognition, - mdiFaceShimmer: mdiFaceShimmer, - mdiFaceShimmerOutline: mdiFaceShimmerOutline, - mdiFaceWoman: mdiFaceWoman, - mdiFaceWomanOutline: mdiFaceWomanOutline, - mdiFaceWomanShimmer: mdiFaceWomanShimmer, - mdiFaceWomanShimmerOutline: mdiFaceWomanShimmerOutline, - mdiFacebook: mdiFacebook, - mdiFacebookGaming: mdiFacebookGaming, - mdiFacebookMessenger: mdiFacebookMessenger, - mdiFacebookWorkplace: mdiFacebookWorkplace, - mdiFactory: mdiFactory, - mdiFamilyTree: mdiFamilyTree, - mdiFan: mdiFan, - mdiFanAlert: mdiFanAlert, - mdiFanAuto: mdiFanAuto, - mdiFanChevronDown: mdiFanChevronDown, - mdiFanChevronUp: mdiFanChevronUp, - mdiFanMinus: mdiFanMinus, - mdiFanOff: mdiFanOff, - mdiFanPlus: mdiFanPlus, - mdiFanRemove: mdiFanRemove, - mdiFanSpeed1: mdiFanSpeed1, - mdiFanSpeed2: mdiFanSpeed2, - mdiFanSpeed3: mdiFanSpeed3, - mdiFastForward: mdiFastForward, - mdiFastForward10: mdiFastForward10, - mdiFastForward30: mdiFastForward30, - mdiFastForward5: mdiFastForward5, - mdiFastForward60: mdiFastForward60, - mdiFastForwardOutline: mdiFastForwardOutline, - mdiFax: mdiFax, - mdiFeather: mdiFeather, - mdiFeatureSearch: mdiFeatureSearch, - mdiFeatureSearchOutline: mdiFeatureSearchOutline, - mdiFedora: mdiFedora, - mdiFencing: mdiFencing, - mdiFerrisWheel: mdiFerrisWheel, - mdiFerry: mdiFerry, - mdiFile: mdiFile, - mdiFileAccount: mdiFileAccount, - mdiFileAccountOutline: mdiFileAccountOutline, - mdiFileAlert: mdiFileAlert, - mdiFileAlertOutline: mdiFileAlertOutline, - mdiFileCabinet: mdiFileCabinet, - mdiFileCad: mdiFileCad, - mdiFileCadBox: mdiFileCadBox, - mdiFileCancel: mdiFileCancel, - mdiFileCancelOutline: mdiFileCancelOutline, - mdiFileCertificate: mdiFileCertificate, - mdiFileCertificateOutline: mdiFileCertificateOutline, - mdiFileChart: mdiFileChart, - mdiFileChartOutline: mdiFileChartOutline, - mdiFileCheck: mdiFileCheck, - mdiFileCheckOutline: mdiFileCheckOutline, - mdiFileClock: mdiFileClock, - mdiFileClockOutline: mdiFileClockOutline, - mdiFileCloud: mdiFileCloud, - mdiFileCloudOutline: mdiFileCloudOutline, - mdiFileCode: mdiFileCode, - mdiFileCodeOutline: mdiFileCodeOutline, - mdiFileCog: mdiFileCog, - mdiFileCogOutline: mdiFileCogOutline, - mdiFileCompare: mdiFileCompare, - mdiFileDelimited: mdiFileDelimited, - mdiFileDelimitedOutline: mdiFileDelimitedOutline, - mdiFileDocument: mdiFileDocument, - mdiFileDocumentEdit: mdiFileDocumentEdit, - mdiFileDocumentEditOutline: mdiFileDocumentEditOutline, - mdiFileDocumentMultiple: mdiFileDocumentMultiple, - mdiFileDocumentMultipleOutline: mdiFileDocumentMultipleOutline, - mdiFileDocumentOutline: mdiFileDocumentOutline, - mdiFileDownload: mdiFileDownload, - mdiFileDownloadOutline: mdiFileDownloadOutline, - mdiFileEdit: mdiFileEdit, - mdiFileEditOutline: mdiFileEditOutline, - mdiFileExcel: mdiFileExcel, - mdiFileExcelBox: mdiFileExcelBox, - mdiFileExcelBoxOutline: mdiFileExcelBoxOutline, - mdiFileExcelOutline: mdiFileExcelOutline, - mdiFileExport: mdiFileExport, - mdiFileExportOutline: mdiFileExportOutline, - mdiFileEye: mdiFileEye, - mdiFileEyeOutline: mdiFileEyeOutline, - mdiFileFind: mdiFileFind, - mdiFileFindOutline: mdiFileFindOutline, - mdiFileHidden: mdiFileHidden, - mdiFileImage: mdiFileImage, - mdiFileImageOutline: mdiFileImageOutline, - mdiFileImport: mdiFileImport, - mdiFileImportOutline: mdiFileImportOutline, - mdiFileKey: mdiFileKey, - mdiFileKeyOutline: mdiFileKeyOutline, - mdiFileLink: mdiFileLink, - mdiFileLinkOutline: mdiFileLinkOutline, - mdiFileLock: mdiFileLock, - mdiFileLockOutline: mdiFileLockOutline, - mdiFileMove: mdiFileMove, - mdiFileMoveOutline: mdiFileMoveOutline, - mdiFileMultiple: mdiFileMultiple, - mdiFileMultipleOutline: mdiFileMultipleOutline, - mdiFileMusic: mdiFileMusic, - mdiFileMusicOutline: mdiFileMusicOutline, - mdiFileOutline: mdiFileOutline, - mdiFilePdf: mdiFilePdf, - mdiFilePdfBox: mdiFilePdfBox, - mdiFilePdfBoxOutline: mdiFilePdfBoxOutline, - mdiFilePdfOutline: mdiFilePdfOutline, - mdiFilePercent: mdiFilePercent, - mdiFilePercentOutline: mdiFilePercentOutline, - mdiFilePhone: mdiFilePhone, - mdiFilePhoneOutline: mdiFilePhoneOutline, - mdiFilePlus: mdiFilePlus, - mdiFilePlusOutline: mdiFilePlusOutline, - mdiFilePowerpoint: mdiFilePowerpoint, - mdiFilePowerpointBox: mdiFilePowerpointBox, - mdiFilePowerpointBoxOutline: mdiFilePowerpointBoxOutline, - mdiFilePowerpointOutline: mdiFilePowerpointOutline, - mdiFilePresentationBox: mdiFilePresentationBox, - mdiFileQuestion: mdiFileQuestion, - mdiFileQuestionOutline: mdiFileQuestionOutline, - mdiFileRefresh: mdiFileRefresh, - mdiFileRefreshOutline: mdiFileRefreshOutline, - mdiFileRemove: mdiFileRemove, - mdiFileRemoveOutline: mdiFileRemoveOutline, - mdiFileReplace: mdiFileReplace, - mdiFileReplaceOutline: mdiFileReplaceOutline, - mdiFileRestore: mdiFileRestore, - mdiFileRestoreOutline: mdiFileRestoreOutline, - mdiFileSearch: mdiFileSearch, - mdiFileSearchOutline: mdiFileSearchOutline, - mdiFileSend: mdiFileSend, - mdiFileSendOutline: mdiFileSendOutline, - mdiFileSettings: mdiFileSettings, - mdiFileSettingsOutline: mdiFileSettingsOutline, - mdiFileStar: mdiFileStar, - mdiFileStarOutline: mdiFileStarOutline, - mdiFileSwap: mdiFileSwap, - mdiFileSwapOutline: mdiFileSwapOutline, - mdiFileSync: mdiFileSync, - mdiFileSyncOutline: mdiFileSyncOutline, - mdiFileTable: mdiFileTable, - mdiFileTableBox: mdiFileTableBox, - mdiFileTableBoxMultiple: mdiFileTableBoxMultiple, - mdiFileTableBoxMultipleOutline: mdiFileTableBoxMultipleOutline, - mdiFileTableBoxOutline: mdiFileTableBoxOutline, - mdiFileTableOutline: mdiFileTableOutline, - mdiFileTree: mdiFileTree, - mdiFileTreeOutline: mdiFileTreeOutline, - mdiFileUndo: mdiFileUndo, - mdiFileUndoOutline: mdiFileUndoOutline, - mdiFileUpload: mdiFileUpload, - mdiFileUploadOutline: mdiFileUploadOutline, - mdiFileVideo: mdiFileVideo, - mdiFileVideoOutline: mdiFileVideoOutline, - mdiFileWord: mdiFileWord, - mdiFileWordBox: mdiFileWordBox, - mdiFileWordBoxOutline: mdiFileWordBoxOutline, - mdiFileWordOutline: mdiFileWordOutline, - mdiFilm: mdiFilm, - mdiFilmstrip: mdiFilmstrip, - mdiFilmstripBox: mdiFilmstripBox, - mdiFilmstripBoxMultiple: mdiFilmstripBoxMultiple, - mdiFilmstripOff: mdiFilmstripOff, - mdiFilter: mdiFilter, - mdiFilterMenu: mdiFilterMenu, - mdiFilterMenuOutline: mdiFilterMenuOutline, - mdiFilterMinus: mdiFilterMinus, - mdiFilterMinusOutline: mdiFilterMinusOutline, - mdiFilterOff: mdiFilterOff, - mdiFilterOffOutline: mdiFilterOffOutline, - mdiFilterOutline: mdiFilterOutline, - mdiFilterPlus: mdiFilterPlus, - mdiFilterPlusOutline: mdiFilterPlusOutline, - mdiFilterRemove: mdiFilterRemove, - mdiFilterRemoveOutline: mdiFilterRemoveOutline, - mdiFilterVariant: mdiFilterVariant, - mdiFilterVariantMinus: mdiFilterVariantMinus, - mdiFilterVariantPlus: mdiFilterVariantPlus, - mdiFilterVariantRemove: mdiFilterVariantRemove, - mdiFinance: mdiFinance, - mdiFindReplace: mdiFindReplace, - mdiFingerprint: mdiFingerprint, - mdiFingerprintOff: mdiFingerprintOff, - mdiFire: mdiFire, - mdiFireAlert: mdiFireAlert, - mdiFireExtinguisher: mdiFireExtinguisher, - mdiFireHydrant: mdiFireHydrant, - mdiFireHydrantAlert: mdiFireHydrantAlert, - mdiFireHydrantOff: mdiFireHydrantOff, - mdiFireOff: mdiFireOff, - mdiFireTruck: mdiFireTruck, - mdiFirebase: mdiFirebase, - mdiFirefox: mdiFirefox, - mdiFireplace: mdiFireplace, - mdiFireplaceOff: mdiFireplaceOff, - mdiFirework: mdiFirework, - mdiFireworkOff: mdiFireworkOff, - mdiFish: mdiFish, - mdiFishOff: mdiFishOff, - mdiFishbowl: mdiFishbowl, - mdiFishbowlOutline: mdiFishbowlOutline, - mdiFitToPage: mdiFitToPage, - mdiFitToPageOutline: mdiFitToPageOutline, - mdiFlag: mdiFlag, - mdiFlagCheckered: mdiFlagCheckered, - mdiFlagMinus: mdiFlagMinus, - mdiFlagMinusOutline: mdiFlagMinusOutline, - mdiFlagOutline: mdiFlagOutline, - mdiFlagPlus: mdiFlagPlus, - mdiFlagPlusOutline: mdiFlagPlusOutline, - mdiFlagRemove: mdiFlagRemove, - mdiFlagRemoveOutline: mdiFlagRemoveOutline, - mdiFlagTriangle: mdiFlagTriangle, - mdiFlagVariant: mdiFlagVariant, - mdiFlagVariantOutline: mdiFlagVariantOutline, - mdiFlare: mdiFlare, - mdiFlash: mdiFlash, - mdiFlashAlert: mdiFlashAlert, - mdiFlashAlertOutline: mdiFlashAlertOutline, - mdiFlashAuto: mdiFlashAuto, - mdiFlashCircle: mdiFlashCircle, - mdiFlashOff: mdiFlashOff, - mdiFlashOutline: mdiFlashOutline, - mdiFlashRedEye: mdiFlashRedEye, - mdiFlashlight: mdiFlashlight, - mdiFlashlightOff: mdiFlashlightOff, - mdiFlask: mdiFlask, - mdiFlaskEmpty: mdiFlaskEmpty, - mdiFlaskEmptyMinus: mdiFlaskEmptyMinus, - mdiFlaskEmptyMinusOutline: mdiFlaskEmptyMinusOutline, - mdiFlaskEmptyOff: mdiFlaskEmptyOff, - mdiFlaskEmptyOffOutline: mdiFlaskEmptyOffOutline, - mdiFlaskEmptyOutline: mdiFlaskEmptyOutline, - mdiFlaskEmptyPlus: mdiFlaskEmptyPlus, - mdiFlaskEmptyPlusOutline: mdiFlaskEmptyPlusOutline, - mdiFlaskEmptyRemove: mdiFlaskEmptyRemove, - mdiFlaskEmptyRemoveOutline: mdiFlaskEmptyRemoveOutline, - mdiFlaskMinus: mdiFlaskMinus, - mdiFlaskMinusOutline: mdiFlaskMinusOutline, - mdiFlaskOff: mdiFlaskOff, - mdiFlaskOffOutline: mdiFlaskOffOutline, - mdiFlaskOutline: mdiFlaskOutline, - mdiFlaskPlus: mdiFlaskPlus, - mdiFlaskPlusOutline: mdiFlaskPlusOutline, - mdiFlaskRemove: mdiFlaskRemove, - mdiFlaskRemoveOutline: mdiFlaskRemoveOutline, - mdiFlaskRoundBottom: mdiFlaskRoundBottom, - mdiFlaskRoundBottomEmpty: mdiFlaskRoundBottomEmpty, - mdiFlaskRoundBottomEmptyOutline: mdiFlaskRoundBottomEmptyOutline, - mdiFlaskRoundBottomOutline: mdiFlaskRoundBottomOutline, - mdiFleurDeLis: mdiFleurDeLis, - mdiFlipHorizontal: mdiFlipHorizontal, - mdiFlipToBack: mdiFlipToBack, - mdiFlipToFront: mdiFlipToFront, - mdiFlipVertical: mdiFlipVertical, - mdiFloorLamp: mdiFloorLamp, - mdiFloorLampDual: mdiFloorLampDual, - mdiFloorLampVariant: mdiFloorLampVariant, - mdiFloorPlan: mdiFloorPlan, - mdiFloppy: mdiFloppy, - mdiFloppyVariant: mdiFloppyVariant, - mdiFlower: mdiFlower, - mdiFlowerOutline: mdiFlowerOutline, - mdiFlowerPoppy: mdiFlowerPoppy, - mdiFlowerTulip: mdiFlowerTulip, - mdiFlowerTulipOutline: mdiFlowerTulipOutline, - mdiFocusAuto: mdiFocusAuto, - mdiFocusField: mdiFocusField, - mdiFocusFieldHorizontal: mdiFocusFieldHorizontal, - mdiFocusFieldVertical: mdiFocusFieldVertical, - mdiFolder: mdiFolder, - mdiFolderAccount: mdiFolderAccount, - mdiFolderAccountOutline: mdiFolderAccountOutline, - mdiFolderAlert: mdiFolderAlert, - mdiFolderAlertOutline: mdiFolderAlertOutline, - mdiFolderClock: mdiFolderClock, - mdiFolderClockOutline: mdiFolderClockOutline, - mdiFolderCog: mdiFolderCog, - mdiFolderCogOutline: mdiFolderCogOutline, - mdiFolderDownload: mdiFolderDownload, - mdiFolderDownloadOutline: mdiFolderDownloadOutline, - mdiFolderEdit: mdiFolderEdit, - mdiFolderEditOutline: mdiFolderEditOutline, - mdiFolderGoogleDrive: mdiFolderGoogleDrive, - mdiFolderHeart: mdiFolderHeart, - mdiFolderHeartOutline: mdiFolderHeartOutline, - mdiFolderHome: mdiFolderHome, - mdiFolderHomeOutline: mdiFolderHomeOutline, - mdiFolderImage: mdiFolderImage, - mdiFolderInformation: mdiFolderInformation, - mdiFolderInformationOutline: mdiFolderInformationOutline, - mdiFolderKey: mdiFolderKey, - mdiFolderKeyNetwork: mdiFolderKeyNetwork, - mdiFolderKeyNetworkOutline: mdiFolderKeyNetworkOutline, - mdiFolderKeyOutline: mdiFolderKeyOutline, - mdiFolderLock: mdiFolderLock, - mdiFolderLockOpen: mdiFolderLockOpen, - mdiFolderMarker: mdiFolderMarker, - mdiFolderMarkerOutline: mdiFolderMarkerOutline, - mdiFolderMove: mdiFolderMove, - mdiFolderMoveOutline: mdiFolderMoveOutline, - mdiFolderMultiple: mdiFolderMultiple, - mdiFolderMultipleImage: mdiFolderMultipleImage, - mdiFolderMultipleOutline: mdiFolderMultipleOutline, - mdiFolderMultiplePlus: mdiFolderMultiplePlus, - mdiFolderMultiplePlusOutline: mdiFolderMultiplePlusOutline, - mdiFolderMusic: mdiFolderMusic, - mdiFolderMusicOutline: mdiFolderMusicOutline, - mdiFolderNetwork: mdiFolderNetwork, - mdiFolderNetworkOutline: mdiFolderNetworkOutline, - mdiFolderOpen: mdiFolderOpen, - mdiFolderOpenOutline: mdiFolderOpenOutline, - mdiFolderOutline: mdiFolderOutline, - mdiFolderPlus: mdiFolderPlus, - mdiFolderPlusOutline: mdiFolderPlusOutline, - mdiFolderPound: mdiFolderPound, - mdiFolderPoundOutline: mdiFolderPoundOutline, - mdiFolderRefresh: mdiFolderRefresh, - mdiFolderRefreshOutline: mdiFolderRefreshOutline, - mdiFolderRemove: mdiFolderRemove, - mdiFolderRemoveOutline: mdiFolderRemoveOutline, - mdiFolderSearch: mdiFolderSearch, - mdiFolderSearchOutline: mdiFolderSearchOutline, - mdiFolderSettings: mdiFolderSettings, - mdiFolderSettingsOutline: mdiFolderSettingsOutline, - mdiFolderStar: mdiFolderStar, - mdiFolderStarMultiple: mdiFolderStarMultiple, - mdiFolderStarMultipleOutline: mdiFolderStarMultipleOutline, - mdiFolderStarOutline: mdiFolderStarOutline, - mdiFolderSwap: mdiFolderSwap, - mdiFolderSwapOutline: mdiFolderSwapOutline, - mdiFolderSync: mdiFolderSync, - mdiFolderSyncOutline: mdiFolderSyncOutline, - mdiFolderTable: mdiFolderTable, - mdiFolderTableOutline: mdiFolderTableOutline, - mdiFolderText: mdiFolderText, - mdiFolderTextOutline: mdiFolderTextOutline, - mdiFolderUpload: mdiFolderUpload, - mdiFolderUploadOutline: mdiFolderUploadOutline, - mdiFolderZip: mdiFolderZip, - mdiFolderZipOutline: mdiFolderZipOutline, - mdiFontAwesome: mdiFontAwesome, - mdiFood: mdiFood, - mdiFoodApple: mdiFoodApple, - mdiFoodAppleOutline: mdiFoodAppleOutline, - mdiFoodCroissant: mdiFoodCroissant, - mdiFoodDrumstick: mdiFoodDrumstick, - mdiFoodDrumstickOff: mdiFoodDrumstickOff, - mdiFoodDrumstickOffOutline: mdiFoodDrumstickOffOutline, - mdiFoodDrumstickOutline: mdiFoodDrumstickOutline, - mdiFoodForkDrink: mdiFoodForkDrink, - mdiFoodHalal: mdiFoodHalal, - mdiFoodKosher: mdiFoodKosher, - mdiFoodOff: mdiFoodOff, - mdiFoodSteak: mdiFoodSteak, - mdiFoodSteakOff: mdiFoodSteakOff, - mdiFoodTurkey: mdiFoodTurkey, - mdiFoodVariant: mdiFoodVariant, - mdiFoodVariantOff: mdiFoodVariantOff, - mdiFootPrint: mdiFootPrint, - mdiFootball: mdiFootball, - mdiFootballAustralian: mdiFootballAustralian, - mdiFootballHelmet: mdiFootballHelmet, - mdiForklift: mdiForklift, - mdiFormDropdown: mdiFormDropdown, - mdiFormSelect: mdiFormSelect, - mdiFormTextarea: mdiFormTextarea, - mdiFormTextbox: mdiFormTextbox, - mdiFormTextboxLock: mdiFormTextboxLock, - mdiFormTextboxPassword: mdiFormTextboxPassword, - mdiFormatAlignBottom: mdiFormatAlignBottom, - mdiFormatAlignCenter: mdiFormatAlignCenter, - mdiFormatAlignJustify: mdiFormatAlignJustify, - mdiFormatAlignLeft: mdiFormatAlignLeft, - mdiFormatAlignMiddle: mdiFormatAlignMiddle, - mdiFormatAlignRight: mdiFormatAlignRight, - mdiFormatAlignTop: mdiFormatAlignTop, - mdiFormatAnnotationMinus: mdiFormatAnnotationMinus, - mdiFormatAnnotationPlus: mdiFormatAnnotationPlus, - mdiFormatBold: mdiFormatBold, - mdiFormatClear: mdiFormatClear, - mdiFormatColorFill: mdiFormatColorFill, - mdiFormatColorHighlight: mdiFormatColorHighlight, - mdiFormatColorMarkerCancel: mdiFormatColorMarkerCancel, - mdiFormatColorText: mdiFormatColorText, - mdiFormatColumns: mdiFormatColumns, - mdiFormatFloatCenter: mdiFormatFloatCenter, - mdiFormatFloatLeft: mdiFormatFloatLeft, - mdiFormatFloatNone: mdiFormatFloatNone, - mdiFormatFloatRight: mdiFormatFloatRight, - mdiFormatFont: mdiFormatFont, - mdiFormatFontSizeDecrease: mdiFormatFontSizeDecrease, - mdiFormatFontSizeIncrease: mdiFormatFontSizeIncrease, - mdiFormatHeader1: mdiFormatHeader1, - mdiFormatHeader2: mdiFormatHeader2, - mdiFormatHeader3: mdiFormatHeader3, - mdiFormatHeader4: mdiFormatHeader4, - mdiFormatHeader5: mdiFormatHeader5, - mdiFormatHeader6: mdiFormatHeader6, - mdiFormatHeaderDecrease: mdiFormatHeaderDecrease, - mdiFormatHeaderEqual: mdiFormatHeaderEqual, - mdiFormatHeaderIncrease: mdiFormatHeaderIncrease, - mdiFormatHeaderPound: mdiFormatHeaderPound, - mdiFormatHorizontalAlignCenter: mdiFormatHorizontalAlignCenter, - mdiFormatHorizontalAlignLeft: mdiFormatHorizontalAlignLeft, - mdiFormatHorizontalAlignRight: mdiFormatHorizontalAlignRight, - mdiFormatIndentDecrease: mdiFormatIndentDecrease, - mdiFormatIndentIncrease: mdiFormatIndentIncrease, - mdiFormatItalic: mdiFormatItalic, - mdiFormatLetterCase: mdiFormatLetterCase, - mdiFormatLetterCaseLower: mdiFormatLetterCaseLower, - mdiFormatLetterCaseUpper: mdiFormatLetterCaseUpper, - mdiFormatLetterEndsWith: mdiFormatLetterEndsWith, - mdiFormatLetterMatches: mdiFormatLetterMatches, - mdiFormatLetterStartsWith: mdiFormatLetterStartsWith, - mdiFormatLineSpacing: mdiFormatLineSpacing, - mdiFormatLineStyle: mdiFormatLineStyle, - mdiFormatLineWeight: mdiFormatLineWeight, - mdiFormatListBulleted: mdiFormatListBulleted, - mdiFormatListBulletedSquare: mdiFormatListBulletedSquare, - mdiFormatListBulletedTriangle: mdiFormatListBulletedTriangle, - mdiFormatListBulletedType: mdiFormatListBulletedType, - mdiFormatListCheckbox: mdiFormatListCheckbox, - mdiFormatListChecks: mdiFormatListChecks, - mdiFormatListNumbered: mdiFormatListNumbered, - mdiFormatListNumberedRtl: mdiFormatListNumberedRtl, - mdiFormatListText: mdiFormatListText, - mdiFormatOverline: mdiFormatOverline, - mdiFormatPageBreak: mdiFormatPageBreak, - mdiFormatPaint: mdiFormatPaint, - mdiFormatParagraph: mdiFormatParagraph, - mdiFormatPilcrow: mdiFormatPilcrow, - mdiFormatQuoteClose: mdiFormatQuoteClose, - mdiFormatQuoteCloseOutline: mdiFormatQuoteCloseOutline, - mdiFormatQuoteOpen: mdiFormatQuoteOpen, - mdiFormatQuoteOpenOutline: mdiFormatQuoteOpenOutline, - mdiFormatRotate90: mdiFormatRotate90, - mdiFormatSection: mdiFormatSection, - mdiFormatSize: mdiFormatSize, - mdiFormatStrikethrough: mdiFormatStrikethrough, - mdiFormatStrikethroughVariant: mdiFormatStrikethroughVariant, - mdiFormatSubscript: mdiFormatSubscript, - mdiFormatSuperscript: mdiFormatSuperscript, - mdiFormatText: mdiFormatText, - mdiFormatTextRotationAngleDown: mdiFormatTextRotationAngleDown, - mdiFormatTextRotationAngleUp: mdiFormatTextRotationAngleUp, - mdiFormatTextRotationDown: mdiFormatTextRotationDown, - mdiFormatTextRotationDownVertical: mdiFormatTextRotationDownVertical, - mdiFormatTextRotationNone: mdiFormatTextRotationNone, - mdiFormatTextRotationUp: mdiFormatTextRotationUp, - mdiFormatTextRotationVertical: mdiFormatTextRotationVertical, - mdiFormatTextVariant: mdiFormatTextVariant, - mdiFormatTextVariantOutline: mdiFormatTextVariantOutline, - mdiFormatTextWrappingClip: mdiFormatTextWrappingClip, - mdiFormatTextWrappingOverflow: mdiFormatTextWrappingOverflow, - mdiFormatTextWrappingWrap: mdiFormatTextWrappingWrap, - mdiFormatTextbox: mdiFormatTextbox, - mdiFormatTextdirectionLToR: mdiFormatTextdirectionLToR, - mdiFormatTextdirectionRToL: mdiFormatTextdirectionRToL, - mdiFormatTitle: mdiFormatTitle, - mdiFormatUnderline: mdiFormatUnderline, - mdiFormatVerticalAlignBottom: mdiFormatVerticalAlignBottom, - mdiFormatVerticalAlignCenter: mdiFormatVerticalAlignCenter, - mdiFormatVerticalAlignTop: mdiFormatVerticalAlignTop, - mdiFormatWrapInline: mdiFormatWrapInline, - mdiFormatWrapSquare: mdiFormatWrapSquare, - mdiFormatWrapTight: mdiFormatWrapTight, - mdiFormatWrapTopBottom: mdiFormatWrapTopBottom, - mdiForum: mdiForum, - mdiForumOutline: mdiForumOutline, - mdiForward: mdiForward, - mdiForwardburger: mdiForwardburger, - mdiFountain: mdiFountain, - mdiFountainPen: mdiFountainPen, - mdiFountainPenTip: mdiFountainPenTip, - mdiFreebsd: mdiFreebsd, - mdiFrequentlyAskedQuestions: mdiFrequentlyAskedQuestions, - mdiFridge: mdiFridge, - mdiFridgeAlert: mdiFridgeAlert, - mdiFridgeAlertOutline: mdiFridgeAlertOutline, - mdiFridgeBottom: mdiFridgeBottom, - mdiFridgeIndustrial: mdiFridgeIndustrial, - mdiFridgeIndustrialAlert: mdiFridgeIndustrialAlert, - mdiFridgeIndustrialAlertOutline: mdiFridgeIndustrialAlertOutline, - mdiFridgeIndustrialOff: mdiFridgeIndustrialOff, - mdiFridgeIndustrialOffOutline: mdiFridgeIndustrialOffOutline, - mdiFridgeIndustrialOutline: mdiFridgeIndustrialOutline, - mdiFridgeOff: mdiFridgeOff, - mdiFridgeOffOutline: mdiFridgeOffOutline, - mdiFridgeOutline: mdiFridgeOutline, - mdiFridgeTop: mdiFridgeTop, - mdiFridgeVariant: mdiFridgeVariant, - mdiFridgeVariantAlert: mdiFridgeVariantAlert, - mdiFridgeVariantAlertOutline: mdiFridgeVariantAlertOutline, - mdiFridgeVariantOff: mdiFridgeVariantOff, - mdiFridgeVariantOffOutline: mdiFridgeVariantOffOutline, - mdiFridgeVariantOutline: mdiFridgeVariantOutline, - mdiFruitCherries: mdiFruitCherries, - mdiFruitCherriesOff: mdiFruitCherriesOff, - mdiFruitCitrus: mdiFruitCitrus, - mdiFruitCitrusOff: mdiFruitCitrusOff, - mdiFruitGrapes: mdiFruitGrapes, - mdiFruitGrapesOutline: mdiFruitGrapesOutline, - mdiFruitPineapple: mdiFruitPineapple, - mdiFruitWatermelon: mdiFruitWatermelon, - mdiFuel: mdiFuel, - mdiFullscreen: mdiFullscreen, - mdiFullscreenExit: mdiFullscreenExit, - mdiFunction: mdiFunction, - mdiFunctionVariant: mdiFunctionVariant, - mdiFuriganaHorizontal: mdiFuriganaHorizontal, - mdiFuriganaVertical: mdiFuriganaVertical, - mdiFuse: mdiFuse, - mdiFuseAlert: mdiFuseAlert, - mdiFuseBlade: mdiFuseBlade, - mdiFuseOff: mdiFuseOff, - mdiGamepad: mdiGamepad, - mdiGamepadCircle: mdiGamepadCircle, - mdiGamepadCircleDown: mdiGamepadCircleDown, - mdiGamepadCircleLeft: mdiGamepadCircleLeft, - mdiGamepadCircleOutline: mdiGamepadCircleOutline, - mdiGamepadCircleRight: mdiGamepadCircleRight, - mdiGamepadCircleUp: mdiGamepadCircleUp, - mdiGamepadDown: mdiGamepadDown, - mdiGamepadLeft: mdiGamepadLeft, - mdiGamepadRight: mdiGamepadRight, - mdiGamepadRound: mdiGamepadRound, - mdiGamepadRoundDown: mdiGamepadRoundDown, - mdiGamepadRoundLeft: mdiGamepadRoundLeft, - mdiGamepadRoundOutline: mdiGamepadRoundOutline, - mdiGamepadRoundRight: mdiGamepadRoundRight, - mdiGamepadRoundUp: mdiGamepadRoundUp, - mdiGamepadSquare: mdiGamepadSquare, - mdiGamepadSquareOutline: mdiGamepadSquareOutline, - mdiGamepadUp: mdiGamepadUp, - mdiGamepadVariant: mdiGamepadVariant, - mdiGamepadVariantOutline: mdiGamepadVariantOutline, - mdiGamma: mdiGamma, - mdiGantryCrane: mdiGantryCrane, - mdiGarage: mdiGarage, - mdiGarageAlert: mdiGarageAlert, - mdiGarageAlertVariant: mdiGarageAlertVariant, - mdiGarageOpen: mdiGarageOpen, - mdiGarageOpenVariant: mdiGarageOpenVariant, - mdiGarageVariant: mdiGarageVariant, - mdiGasCylinder: mdiGasCylinder, - mdiGasStation: mdiGasStation, - mdiGasStationOff: mdiGasStationOff, - mdiGasStationOffOutline: mdiGasStationOffOutline, - mdiGasStationOutline: mdiGasStationOutline, - mdiGate: mdiGate, - mdiGateAnd: mdiGateAnd, - mdiGateArrowRight: mdiGateArrowRight, - mdiGateNand: mdiGateNand, - mdiGateNor: mdiGateNor, - mdiGateNot: mdiGateNot, - mdiGateOpen: mdiGateOpen, - mdiGateOr: mdiGateOr, - mdiGateXnor: mdiGateXnor, - mdiGateXor: mdiGateXor, - mdiGatsby: mdiGatsby, - mdiGauge: mdiGauge, - mdiGaugeEmpty: mdiGaugeEmpty, - mdiGaugeFull: mdiGaugeFull, - mdiGaugeLow: mdiGaugeLow, - mdiGavel: mdiGavel, - mdiGenderFemale: mdiGenderFemale, - mdiGenderMale: mdiGenderMale, - mdiGenderMaleFemale: mdiGenderMaleFemale, - mdiGenderMaleFemaleVariant: mdiGenderMaleFemaleVariant, - mdiGenderNonBinary: mdiGenderNonBinary, - mdiGenderTransgender: mdiGenderTransgender, - mdiGentoo: mdiGentoo, - mdiGesture: mdiGesture, - mdiGestureDoubleTap: mdiGestureDoubleTap, - mdiGesturePinch: mdiGesturePinch, - mdiGestureSpread: mdiGestureSpread, - mdiGestureSwipe: mdiGestureSwipe, - mdiGestureSwipeDown: mdiGestureSwipeDown, - mdiGestureSwipeHorizontal: mdiGestureSwipeHorizontal, - mdiGestureSwipeLeft: mdiGestureSwipeLeft, - mdiGestureSwipeRight: mdiGestureSwipeRight, - mdiGestureSwipeUp: mdiGestureSwipeUp, - mdiGestureSwipeVertical: mdiGestureSwipeVertical, - mdiGestureTap: mdiGestureTap, - mdiGestureTapBox: mdiGestureTapBox, - mdiGestureTapButton: mdiGestureTapButton, - mdiGestureTapHold: mdiGestureTapHold, - mdiGestureTwoDoubleTap: mdiGestureTwoDoubleTap, - mdiGestureTwoTap: mdiGestureTwoTap, - mdiGhost: mdiGhost, - mdiGhostOff: mdiGhostOff, - mdiGhostOffOutline: mdiGhostOffOutline, - mdiGhostOutline: mdiGhostOutline, - mdiGif: mdiGif, - mdiGift: mdiGift, - mdiGiftOff: mdiGiftOff, - mdiGiftOffOutline: mdiGiftOffOutline, - mdiGiftOpen: mdiGiftOpen, - mdiGiftOpenOutline: mdiGiftOpenOutline, - mdiGiftOutline: mdiGiftOutline, - mdiGit: mdiGit, - mdiGithub: mdiGithub, - mdiGitlab: mdiGitlab, - mdiGlassCocktail: mdiGlassCocktail, - mdiGlassCocktailOff: mdiGlassCocktailOff, - mdiGlassFlute: mdiGlassFlute, - mdiGlassMug: mdiGlassMug, - mdiGlassMugOff: mdiGlassMugOff, - mdiGlassMugVariant: mdiGlassMugVariant, - mdiGlassMugVariantOff: mdiGlassMugVariantOff, - mdiGlassPintOutline: mdiGlassPintOutline, - mdiGlassStange: mdiGlassStange, - mdiGlassTulip: mdiGlassTulip, - mdiGlassWine: mdiGlassWine, - mdiGlasses: mdiGlasses, - mdiGlobeLight: mdiGlobeLight, - mdiGlobeModel: mdiGlobeModel, - mdiGmail: mdiGmail, - mdiGnome: mdiGnome, - mdiGoKart: mdiGoKart, - mdiGoKartTrack: mdiGoKartTrack, - mdiGog: mdiGog, - mdiGold: mdiGold, - mdiGolf: mdiGolf, - mdiGolfCart: mdiGolfCart, - mdiGolfTee: mdiGolfTee, - mdiGondola: mdiGondola, - mdiGoodreads: mdiGoodreads, - mdiGoogle: mdiGoogle, - mdiGoogleAds: mdiGoogleAds, - mdiGoogleAnalytics: mdiGoogleAnalytics, - mdiGoogleAssistant: mdiGoogleAssistant, - mdiGoogleCardboard: mdiGoogleCardboard, - mdiGoogleChrome: mdiGoogleChrome, - mdiGoogleCircles: mdiGoogleCircles, - mdiGoogleCirclesCommunities: mdiGoogleCirclesCommunities, - mdiGoogleCirclesExtended: mdiGoogleCirclesExtended, - mdiGoogleCirclesGroup: mdiGoogleCirclesGroup, - mdiGoogleClassroom: mdiGoogleClassroom, - mdiGoogleCloud: mdiGoogleCloud, - mdiGoogleController: mdiGoogleController, - mdiGoogleControllerOff: mdiGoogleControllerOff, - mdiGoogleDownasaur: mdiGoogleDownasaur, - mdiGoogleDrive: mdiGoogleDrive, - mdiGoogleEarth: mdiGoogleEarth, - mdiGoogleFit: mdiGoogleFit, - mdiGoogleGlass: mdiGoogleGlass, - mdiGoogleHangouts: mdiGoogleHangouts, - mdiGoogleHome: mdiGoogleHome, - mdiGoogleKeep: mdiGoogleKeep, - mdiGoogleLens: mdiGoogleLens, - mdiGoogleMaps: mdiGoogleMaps, - mdiGoogleMyBusiness: mdiGoogleMyBusiness, - mdiGoogleNearby: mdiGoogleNearby, - mdiGooglePhotos: mdiGooglePhotos, - mdiGooglePlay: mdiGooglePlay, - mdiGooglePlus: mdiGooglePlus, - mdiGooglePodcast: mdiGooglePodcast, - mdiGoogleSpreadsheet: mdiGoogleSpreadsheet, - mdiGoogleStreetView: mdiGoogleStreetView, - mdiGoogleTranslate: mdiGoogleTranslate, - mdiGradient: mdiGradient, - mdiGrain: mdiGrain, - mdiGraph: mdiGraph, - mdiGraphOutline: mdiGraphOutline, - mdiGraphql: mdiGraphql, - mdiGrass: mdiGrass, - mdiGraveStone: mdiGraveStone, - mdiGreasePencil: mdiGreasePencil, - mdiGreaterThan: mdiGreaterThan, - mdiGreaterThanOrEqual: mdiGreaterThanOrEqual, - mdiGrid: mdiGrid, - mdiGridLarge: mdiGridLarge, - mdiGridOff: mdiGridOff, - mdiGrill: mdiGrill, - mdiGrillOutline: mdiGrillOutline, - mdiGroup: mdiGroup, - mdiGuitarAcoustic: mdiGuitarAcoustic, - mdiGuitarElectric: mdiGuitarElectric, - mdiGuitarPick: mdiGuitarPick, - mdiGuitarPickOutline: mdiGuitarPickOutline, - mdiGuyFawkesMask: mdiGuyFawkesMask, - mdiHail: mdiHail, - mdiHairDryer: mdiHairDryer, - mdiHairDryerOutline: mdiHairDryerOutline, - mdiHalloween: mdiHalloween, - mdiHamburger: mdiHamburger, - mdiHammer: mdiHammer, - mdiHammerScrewdriver: mdiHammerScrewdriver, - mdiHammerWrench: mdiHammerWrench, - mdiHand: mdiHand, - mdiHandHeart: mdiHandHeart, - mdiHandHeartOutline: mdiHandHeartOutline, - mdiHandLeft: mdiHandLeft, - mdiHandOkay: mdiHandOkay, - mdiHandPeace: mdiHandPeace, - mdiHandPeaceVariant: mdiHandPeaceVariant, - mdiHandPointingDown: mdiHandPointingDown, - mdiHandPointingLeft: mdiHandPointingLeft, - mdiHandPointingRight: mdiHandPointingRight, - mdiHandPointingUp: mdiHandPointingUp, - mdiHandRight: mdiHandRight, - mdiHandSaw: mdiHandSaw, - mdiHandWash: mdiHandWash, - mdiHandWashOutline: mdiHandWashOutline, - mdiHandWater: mdiHandWater, - mdiHandball: mdiHandball, - mdiHandcuffs: mdiHandcuffs, - mdiHandshake: mdiHandshake, - mdiHandshakeOutline: mdiHandshakeOutline, - mdiHanger: mdiHanger, - mdiHardHat: mdiHardHat, - mdiHarddisk: mdiHarddisk, - mdiHarddiskPlus: mdiHarddiskPlus, - mdiHarddiskRemove: mdiHarddiskRemove, - mdiHatFedora: mdiHatFedora, - mdiHazardLights: mdiHazardLights, - mdiHdr: mdiHdr, - mdiHdrOff: mdiHdrOff, - mdiHead: mdiHead, - mdiHeadAlert: mdiHeadAlert, - mdiHeadAlertOutline: mdiHeadAlertOutline, - mdiHeadCheck: mdiHeadCheck, - mdiHeadCheckOutline: mdiHeadCheckOutline, - mdiHeadCog: mdiHeadCog, - mdiHeadCogOutline: mdiHeadCogOutline, - mdiHeadDotsHorizontal: mdiHeadDotsHorizontal, - mdiHeadDotsHorizontalOutline: mdiHeadDotsHorizontalOutline, - mdiHeadFlash: mdiHeadFlash, - mdiHeadFlashOutline: mdiHeadFlashOutline, - mdiHeadHeart: mdiHeadHeart, - mdiHeadHeartOutline: mdiHeadHeartOutline, - mdiHeadLightbulb: mdiHeadLightbulb, - mdiHeadLightbulbOutline: mdiHeadLightbulbOutline, - mdiHeadMinus: mdiHeadMinus, - mdiHeadMinusOutline: mdiHeadMinusOutline, - mdiHeadOutline: mdiHeadOutline, - mdiHeadPlus: mdiHeadPlus, - mdiHeadPlusOutline: mdiHeadPlusOutline, - mdiHeadQuestion: mdiHeadQuestion, - mdiHeadQuestionOutline: mdiHeadQuestionOutline, - mdiHeadRemove: mdiHeadRemove, - mdiHeadRemoveOutline: mdiHeadRemoveOutline, - mdiHeadSnowflake: mdiHeadSnowflake, - mdiHeadSnowflakeOutline: mdiHeadSnowflakeOutline, - mdiHeadSync: mdiHeadSync, - mdiHeadSyncOutline: mdiHeadSyncOutline, - mdiHeadphones: mdiHeadphones, - mdiHeadphonesBluetooth: mdiHeadphonesBluetooth, - mdiHeadphonesBox: mdiHeadphonesBox, - mdiHeadphonesOff: mdiHeadphonesOff, - mdiHeadphonesSettings: mdiHeadphonesSettings, - mdiHeadset: mdiHeadset, - mdiHeadsetDock: mdiHeadsetDock, - mdiHeadsetOff: mdiHeadsetOff, - mdiHeart: mdiHeart, - mdiHeartBox: mdiHeartBox, - mdiHeartBoxOutline: mdiHeartBoxOutline, - mdiHeartBroken: mdiHeartBroken, - mdiHeartBrokenOutline: mdiHeartBrokenOutline, - mdiHeartCircle: mdiHeartCircle, - mdiHeartCircleOutline: mdiHeartCircleOutline, - mdiHeartCog: mdiHeartCog, - mdiHeartCogOutline: mdiHeartCogOutline, - mdiHeartFlash: mdiHeartFlash, - mdiHeartHalf: mdiHeartHalf, - mdiHeartHalfFull: mdiHeartHalfFull, - mdiHeartHalfOutline: mdiHeartHalfOutline, - mdiHeartMinus: mdiHeartMinus, - mdiHeartMinusOutline: mdiHeartMinusOutline, - mdiHeartMultiple: mdiHeartMultiple, - mdiHeartMultipleOutline: mdiHeartMultipleOutline, - mdiHeartOff: mdiHeartOff, - mdiHeartOffOutline: mdiHeartOffOutline, - mdiHeartOutline: mdiHeartOutline, - mdiHeartPlus: mdiHeartPlus, - mdiHeartPlusOutline: mdiHeartPlusOutline, - mdiHeartPulse: mdiHeartPulse, - mdiHeartRemove: mdiHeartRemove, - mdiHeartRemoveOutline: mdiHeartRemoveOutline, - mdiHeartSettings: mdiHeartSettings, - mdiHeartSettingsOutline: mdiHeartSettingsOutline, - mdiHelicopter: mdiHelicopter, - mdiHelp: mdiHelp, - mdiHelpBox: mdiHelpBox, - mdiHelpCircle: mdiHelpCircle, - mdiHelpCircleOutline: mdiHelpCircleOutline, - mdiHelpNetwork: mdiHelpNetwork, - mdiHelpNetworkOutline: mdiHelpNetworkOutline, - mdiHelpRhombus: mdiHelpRhombus, - mdiHelpRhombusOutline: mdiHelpRhombusOutline, - mdiHexadecimal: mdiHexadecimal, - mdiHexagon: mdiHexagon, - mdiHexagonMultiple: mdiHexagonMultiple, - mdiHexagonMultipleOutline: mdiHexagonMultipleOutline, - mdiHexagonOutline: mdiHexagonOutline, - mdiHexagonSlice1: mdiHexagonSlice1, - mdiHexagonSlice2: mdiHexagonSlice2, - mdiHexagonSlice3: mdiHexagonSlice3, - mdiHexagonSlice4: mdiHexagonSlice4, - mdiHexagonSlice5: mdiHexagonSlice5, - mdiHexagonSlice6: mdiHexagonSlice6, - mdiHexagram: mdiHexagram, - mdiHexagramOutline: mdiHexagramOutline, - mdiHighDefinition: mdiHighDefinition, - mdiHighDefinitionBox: mdiHighDefinitionBox, - mdiHighway: mdiHighway, - mdiHiking: mdiHiking, - mdiHinduism: mdiHinduism, - mdiHistory: mdiHistory, - mdiHockeyPuck: mdiHockeyPuck, - mdiHockeySticks: mdiHockeySticks, - mdiHololens: mdiHololens, - mdiHome: mdiHome, - mdiHomeAccount: mdiHomeAccount, - mdiHomeAlert: mdiHomeAlert, - mdiHomeAlertOutline: mdiHomeAlertOutline, - mdiHomeAnalytics: mdiHomeAnalytics, - mdiHomeAssistant: mdiHomeAssistant, - mdiHomeAutomation: mdiHomeAutomation, - mdiHomeCircle: mdiHomeCircle, - mdiHomeCircleOutline: mdiHomeCircleOutline, - mdiHomeCity: mdiHomeCity, - mdiHomeCityOutline: mdiHomeCityOutline, - mdiHomeCurrencyUsd: mdiHomeCurrencyUsd, - mdiHomeEdit: mdiHomeEdit, - mdiHomeEditOutline: mdiHomeEditOutline, - mdiHomeExportOutline: mdiHomeExportOutline, - mdiHomeFlood: mdiHomeFlood, - mdiHomeFloor0: mdiHomeFloor0, - mdiHomeFloor1: mdiHomeFloor1, - mdiHomeFloor2: mdiHomeFloor2, - mdiHomeFloor3: mdiHomeFloor3, - mdiHomeFloorA: mdiHomeFloorA, - mdiHomeFloorB: mdiHomeFloorB, - mdiHomeFloorG: mdiHomeFloorG, - mdiHomeFloorL: mdiHomeFloorL, - mdiHomeFloorNegative1: mdiHomeFloorNegative1, - mdiHomeGroup: mdiHomeGroup, - mdiHomeHeart: mdiHomeHeart, - mdiHomeImportOutline: mdiHomeImportOutline, - mdiHomeLightbulb: mdiHomeLightbulb, - mdiHomeLightbulbOutline: mdiHomeLightbulbOutline, - mdiHomeLock: mdiHomeLock, - mdiHomeLockOpen: mdiHomeLockOpen, - mdiHomeMapMarker: mdiHomeMapMarker, - mdiHomeMinus: mdiHomeMinus, - mdiHomeMinusOutline: mdiHomeMinusOutline, - mdiHomeModern: mdiHomeModern, - mdiHomeOutline: mdiHomeOutline, - mdiHomePlus: mdiHomePlus, - mdiHomePlusOutline: mdiHomePlusOutline, - mdiHomeRemove: mdiHomeRemove, - mdiHomeRemoveOutline: mdiHomeRemoveOutline, - mdiHomeRoof: mdiHomeRoof, - mdiHomeSearch: mdiHomeSearch, - mdiHomeSearchOutline: mdiHomeSearchOutline, - mdiHomeThermometer: mdiHomeThermometer, - mdiHomeThermometerOutline: mdiHomeThermometerOutline, - mdiHomeVariant: mdiHomeVariant, - mdiHomeVariantOutline: mdiHomeVariantOutline, - mdiHook: mdiHook, - mdiHookOff: mdiHookOff, - mdiHops: mdiHops, - mdiHorizontalRotateClockwise: mdiHorizontalRotateClockwise, - mdiHorizontalRotateCounterclockwise: mdiHorizontalRotateCounterclockwise, - mdiHorse: mdiHorse, - mdiHorseHuman: mdiHorseHuman, - mdiHorseVariant: mdiHorseVariant, - mdiHorseshoe: mdiHorseshoe, - mdiHospital: mdiHospital, - mdiHospitalBox: mdiHospitalBox, - mdiHospitalBoxOutline: mdiHospitalBoxOutline, - mdiHospitalBuilding: mdiHospitalBuilding, - mdiHospitalMarker: mdiHospitalMarker, - mdiHotTub: mdiHotTub, - mdiHours24: mdiHours24, - mdiHubspot: mdiHubspot, - mdiHulu: mdiHulu, - mdiHuman: mdiHuman, - mdiHumanBabyChangingTable: mdiHumanBabyChangingTable, - mdiHumanCane: mdiHumanCane, - mdiHumanCapacityDecrease: mdiHumanCapacityDecrease, - mdiHumanCapacityIncrease: mdiHumanCapacityIncrease, - mdiHumanChild: mdiHumanChild, - mdiHumanEdit: mdiHumanEdit, - mdiHumanFemale: mdiHumanFemale, - mdiHumanFemaleBoy: mdiHumanFemaleBoy, - mdiHumanFemaleDance: mdiHumanFemaleDance, - mdiHumanFemaleFemale: mdiHumanFemaleFemale, - mdiHumanFemaleGirl: mdiHumanFemaleGirl, - mdiHumanGreeting: mdiHumanGreeting, - mdiHumanGreetingProximity: mdiHumanGreetingProximity, - mdiHumanHandsdown: mdiHumanHandsdown, - mdiHumanHandsup: mdiHumanHandsup, - mdiHumanMale: mdiHumanMale, - mdiHumanMaleBoy: mdiHumanMaleBoy, - mdiHumanMaleChild: mdiHumanMaleChild, - mdiHumanMaleFemale: mdiHumanMaleFemale, - mdiHumanMaleGirl: mdiHumanMaleGirl, - mdiHumanMaleHeight: mdiHumanMaleHeight, - mdiHumanMaleHeightVariant: mdiHumanMaleHeightVariant, - mdiHumanMaleMale: mdiHumanMaleMale, - mdiHumanPregnant: mdiHumanPregnant, - mdiHumanQueue: mdiHumanQueue, - mdiHumanScooter: mdiHumanScooter, - mdiHumanWheelchair: mdiHumanWheelchair, - mdiHumbleBundle: mdiHumbleBundle, - mdiHvac: mdiHvac, - mdiHvacOff: mdiHvacOff, - mdiHydraulicOilLevel: mdiHydraulicOilLevel, - mdiHydraulicOilTemperature: mdiHydraulicOilTemperature, - mdiHydroPower: mdiHydroPower, - mdiIceCream: mdiIceCream, - mdiIceCreamOff: mdiIceCreamOff, - mdiIcePop: mdiIcePop, - mdiIdCard: mdiIdCard, - mdiIdentifier: mdiIdentifier, - mdiIdeogramCjk: mdiIdeogramCjk, - mdiIdeogramCjkVariant: mdiIdeogramCjkVariant, - mdiIframe: mdiIframe, - mdiIframeArray: mdiIframeArray, - mdiIframeArrayOutline: mdiIframeArrayOutline, - mdiIframeBraces: mdiIframeBraces, - mdiIframeBracesOutline: mdiIframeBracesOutline, - mdiIframeOutline: mdiIframeOutline, - mdiIframeParentheses: mdiIframeParentheses, - mdiIframeParenthesesOutline: mdiIframeParenthesesOutline, - mdiIframeVariable: mdiIframeVariable, - mdiIframeVariableOutline: mdiIframeVariableOutline, - mdiImage: mdiImage, - mdiImageAlbum: mdiImageAlbum, - mdiImageArea: mdiImageArea, - mdiImageAreaClose: mdiImageAreaClose, - mdiImageAutoAdjust: mdiImageAutoAdjust, - mdiImageBroken: mdiImageBroken, - mdiImageBrokenVariant: mdiImageBrokenVariant, - mdiImageEdit: mdiImageEdit, - mdiImageEditOutline: mdiImageEditOutline, - mdiImageFilterBlackWhite: mdiImageFilterBlackWhite, - mdiImageFilterCenterFocus: mdiImageFilterCenterFocus, - mdiImageFilterCenterFocusStrong: mdiImageFilterCenterFocusStrong, - mdiImageFilterCenterFocusStrongOutline: mdiImageFilterCenterFocusStrongOutline, - mdiImageFilterCenterFocusWeak: mdiImageFilterCenterFocusWeak, - mdiImageFilterDrama: mdiImageFilterDrama, - mdiImageFilterFrames: mdiImageFilterFrames, - mdiImageFilterHdr: mdiImageFilterHdr, - mdiImageFilterNone: mdiImageFilterNone, - mdiImageFilterTiltShift: mdiImageFilterTiltShift, - mdiImageFilterVintage: mdiImageFilterVintage, - mdiImageFrame: mdiImageFrame, - mdiImageMinus: mdiImageMinus, - mdiImageMove: mdiImageMove, - mdiImageMultiple: mdiImageMultiple, - mdiImageMultipleOutline: mdiImageMultipleOutline, - mdiImageOff: mdiImageOff, - mdiImageOffOutline: mdiImageOffOutline, - mdiImageOutline: mdiImageOutline, - mdiImagePlus: mdiImagePlus, - mdiImageRemove: mdiImageRemove, - mdiImageSearch: mdiImageSearch, - mdiImageSearchOutline: mdiImageSearchOutline, - mdiImageSizeSelectActual: mdiImageSizeSelectActual, - mdiImageSizeSelectLarge: mdiImageSizeSelectLarge, - mdiImageSizeSelectSmall: mdiImageSizeSelectSmall, - mdiImageText: mdiImageText, - mdiImport: mdiImport, - mdiInbox: mdiInbox, - mdiInboxArrowDown: mdiInboxArrowDown, - mdiInboxArrowDownOutline: mdiInboxArrowDownOutline, - mdiInboxArrowUp: mdiInboxArrowUp, - mdiInboxArrowUpOutline: mdiInboxArrowUpOutline, - mdiInboxFull: mdiInboxFull, - mdiInboxFullOutline: mdiInboxFullOutline, - mdiInboxMultiple: mdiInboxMultiple, - mdiInboxMultipleOutline: mdiInboxMultipleOutline, - mdiInboxOutline: mdiInboxOutline, - mdiInboxRemove: mdiInboxRemove, - mdiInboxRemoveOutline: mdiInboxRemoveOutline, - mdiIncognito: mdiIncognito, - mdiIncognitoCircle: mdiIncognitoCircle, - mdiIncognitoCircleOff: mdiIncognitoCircleOff, - mdiIncognitoOff: mdiIncognitoOff, - mdiInfinity: mdiInfinity, - mdiInformation: mdiInformation, - mdiInformationOutline: mdiInformationOutline, - mdiInformationVariant: mdiInformationVariant, - mdiInstagram: mdiInstagram, - mdiInstrumentTriangle: mdiInstrumentTriangle, - mdiInvertColors: mdiInvertColors, - mdiInvertColorsOff: mdiInvertColorsOff, - mdiIobroker: mdiIobroker, - mdiIp: mdiIp, - mdiIpNetwork: mdiIpNetwork, - mdiIpNetworkOutline: mdiIpNetworkOutline, - mdiIpod: mdiIpod, - mdiIslam: mdiIslam, - mdiIsland: mdiIsland, - mdiIvBag: mdiIvBag, - mdiJabber: mdiJabber, - mdiJeepney: mdiJeepney, - mdiJellyfish: mdiJellyfish, - mdiJellyfishOutline: mdiJellyfishOutline, - mdiJira: mdiJira, - mdiJquery: mdiJquery, - mdiJsfiddle: mdiJsfiddle, - mdiJudaism: mdiJudaism, - mdiJumpRope: mdiJumpRope, - mdiKabaddi: mdiKabaddi, - mdiKangaroo: mdiKangaroo, - mdiKarate: mdiKarate, - mdiKeg: mdiKeg, - mdiKettle: mdiKettle, - mdiKettleAlert: mdiKettleAlert, - mdiKettleAlertOutline: mdiKettleAlertOutline, - mdiKettleOff: mdiKettleOff, - mdiKettleOffOutline: mdiKettleOffOutline, - mdiKettleOutline: mdiKettleOutline, - mdiKettlePourOver: mdiKettlePourOver, - mdiKettleSteam: mdiKettleSteam, - mdiKettleSteamOutline: mdiKettleSteamOutline, - mdiKettlebell: mdiKettlebell, - mdiKey: mdiKey, - mdiKeyArrowRight: mdiKeyArrowRight, - mdiKeyChain: mdiKeyChain, - mdiKeyChainVariant: mdiKeyChainVariant, - mdiKeyChange: mdiKeyChange, - mdiKeyLink: mdiKeyLink, - mdiKeyMinus: mdiKeyMinus, - mdiKeyOutline: mdiKeyOutline, - mdiKeyPlus: mdiKeyPlus, - mdiKeyRemove: mdiKeyRemove, - mdiKeyStar: mdiKeyStar, - mdiKeyVariant: mdiKeyVariant, - mdiKeyWireless: mdiKeyWireless, - mdiKeyboard: mdiKeyboard, - mdiKeyboardBackspace: mdiKeyboardBackspace, - mdiKeyboardCaps: mdiKeyboardCaps, - mdiKeyboardClose: mdiKeyboardClose, - mdiKeyboardEsc: mdiKeyboardEsc, - mdiKeyboardF1: mdiKeyboardF1, - mdiKeyboardF10: mdiKeyboardF10, - mdiKeyboardF11: mdiKeyboardF11, - mdiKeyboardF12: mdiKeyboardF12, - mdiKeyboardF2: mdiKeyboardF2, - mdiKeyboardF3: mdiKeyboardF3, - mdiKeyboardF4: mdiKeyboardF4, - mdiKeyboardF5: mdiKeyboardF5, - mdiKeyboardF6: mdiKeyboardF6, - mdiKeyboardF7: mdiKeyboardF7, - mdiKeyboardF8: mdiKeyboardF8, - mdiKeyboardF9: mdiKeyboardF9, - mdiKeyboardOff: mdiKeyboardOff, - mdiKeyboardOffOutline: mdiKeyboardOffOutline, - mdiKeyboardOutline: mdiKeyboardOutline, - mdiKeyboardReturn: mdiKeyboardReturn, - mdiKeyboardSettings: mdiKeyboardSettings, - mdiKeyboardSettingsOutline: mdiKeyboardSettingsOutline, - mdiKeyboardSpace: mdiKeyboardSpace, - mdiKeyboardTab: mdiKeyboardTab, - mdiKeyboardVariant: mdiKeyboardVariant, - mdiKhanda: mdiKhanda, - mdiKickstarter: mdiKickstarter, - mdiKlingon: mdiKlingon, - mdiKnife: mdiKnife, - mdiKnifeMilitary: mdiKnifeMilitary, - mdiKoala: mdiKoala, - mdiKodi: mdiKodi, - mdiKubernetes: mdiKubernetes, - mdiLabel: mdiLabel, - mdiLabelMultiple: mdiLabelMultiple, - mdiLabelMultipleOutline: mdiLabelMultipleOutline, - mdiLabelOff: mdiLabelOff, - mdiLabelOffOutline: mdiLabelOffOutline, - mdiLabelOutline: mdiLabelOutline, - mdiLabelPercent: mdiLabelPercent, - mdiLabelPercentOutline: mdiLabelPercentOutline, - mdiLabelVariant: mdiLabelVariant, - mdiLabelVariantOutline: mdiLabelVariantOutline, - mdiLadder: mdiLadder, - mdiLadybug: mdiLadybug, - mdiLambda: mdiLambda, - mdiLamp: mdiLamp, - mdiLamps: mdiLamps, - mdiLan: mdiLan, - mdiLanCheck: mdiLanCheck, - mdiLanConnect: mdiLanConnect, - mdiLanDisconnect: mdiLanDisconnect, - mdiLanPending: mdiLanPending, - mdiLanguageC: mdiLanguageC, - mdiLanguageCpp: mdiLanguageCpp, - mdiLanguageCsharp: mdiLanguageCsharp, - mdiLanguageCss3: mdiLanguageCss3, - mdiLanguageFortran: mdiLanguageFortran, - mdiLanguageGo: mdiLanguageGo, - mdiLanguageHaskell: mdiLanguageHaskell, - mdiLanguageHtml5: mdiLanguageHtml5, - mdiLanguageJava: mdiLanguageJava, - mdiLanguageJavascript: mdiLanguageJavascript, - mdiLanguageKotlin: mdiLanguageKotlin, - mdiLanguageLua: mdiLanguageLua, - mdiLanguageMarkdown: mdiLanguageMarkdown, - mdiLanguageMarkdownOutline: mdiLanguageMarkdownOutline, - mdiLanguagePhp: mdiLanguagePhp, - mdiLanguagePython: mdiLanguagePython, - mdiLanguageR: mdiLanguageR, - mdiLanguageRuby: mdiLanguageRuby, - mdiLanguageRubyOnRails: mdiLanguageRubyOnRails, - mdiLanguageRust: mdiLanguageRust, - mdiLanguageSwift: mdiLanguageSwift, - mdiLanguageTypescript: mdiLanguageTypescript, - mdiLanguageXaml: mdiLanguageXaml, - mdiLaptop: mdiLaptop, - mdiLaptopChromebook: mdiLaptopChromebook, - mdiLaptopMac: mdiLaptopMac, - mdiLaptopOff: mdiLaptopOff, - mdiLaptopWindows: mdiLaptopWindows, - mdiLaravel: mdiLaravel, - mdiLaserPointer: mdiLaserPointer, - mdiLasso: mdiLasso, - mdiLastpass: mdiLastpass, - mdiLatitude: mdiLatitude, - mdiLaunch: mdiLaunch, - mdiLavaLamp: mdiLavaLamp, - mdiLayers: mdiLayers, - mdiLayersMinus: mdiLayersMinus, - mdiLayersOff: mdiLayersOff, - mdiLayersOffOutline: mdiLayersOffOutline, - mdiLayersOutline: mdiLayersOutline, - mdiLayersPlus: mdiLayersPlus, - mdiLayersRemove: mdiLayersRemove, - mdiLayersSearch: mdiLayersSearch, - mdiLayersSearchOutline: mdiLayersSearchOutline, - mdiLayersTriple: mdiLayersTriple, - mdiLayersTripleOutline: mdiLayersTripleOutline, - mdiLeadPencil: mdiLeadPencil, - mdiLeaf: mdiLeaf, - mdiLeafMaple: mdiLeafMaple, - mdiLeafMapleOff: mdiLeafMapleOff, - mdiLeafOff: mdiLeafOff, - mdiLeak: mdiLeak, - mdiLeakOff: mdiLeakOff, - mdiLedOff: mdiLedOff, - mdiLedOn: mdiLedOn, - mdiLedOutline: mdiLedOutline, - mdiLedStrip: mdiLedStrip, - mdiLedStripVariant: mdiLedStripVariant, - mdiLedVariantOff: mdiLedVariantOff, - mdiLedVariantOn: mdiLedVariantOn, - mdiLedVariantOutline: mdiLedVariantOutline, - mdiLeek: mdiLeek, - mdiLessThan: mdiLessThan, - mdiLessThanOrEqual: mdiLessThanOrEqual, - mdiLibrary: mdiLibrary, - mdiLibraryShelves: mdiLibraryShelves, - mdiLicense: mdiLicense, - mdiLifebuoy: mdiLifebuoy, - mdiLightSwitch: mdiLightSwitch, - mdiLightbulb: mdiLightbulb, - mdiLightbulbCfl: mdiLightbulbCfl, - mdiLightbulbCflOff: mdiLightbulbCflOff, - mdiLightbulbCflSpiral: mdiLightbulbCflSpiral, - mdiLightbulbCflSpiralOff: mdiLightbulbCflSpiralOff, - mdiLightbulbGroup: mdiLightbulbGroup, - mdiLightbulbGroupOff: mdiLightbulbGroupOff, - mdiLightbulbGroupOffOutline: mdiLightbulbGroupOffOutline, - mdiLightbulbGroupOutline: mdiLightbulbGroupOutline, - mdiLightbulbMultiple: mdiLightbulbMultiple, - mdiLightbulbMultipleOff: mdiLightbulbMultipleOff, - mdiLightbulbMultipleOffOutline: mdiLightbulbMultipleOffOutline, - mdiLightbulbMultipleOutline: mdiLightbulbMultipleOutline, - mdiLightbulbOff: mdiLightbulbOff, - mdiLightbulbOffOutline: mdiLightbulbOffOutline, - mdiLightbulbOn: mdiLightbulbOn, - mdiLightbulbOnOutline: mdiLightbulbOnOutline, - mdiLightbulbOutline: mdiLightbulbOutline, - mdiLighthouse: mdiLighthouse, - mdiLighthouseOn: mdiLighthouseOn, - mdiLightningBolt: mdiLightningBolt, - mdiLightningBoltOutline: mdiLightningBoltOutline, - mdiLingerie: mdiLingerie, - mdiLink: mdiLink, - mdiLinkBox: mdiLinkBox, - mdiLinkBoxOutline: mdiLinkBoxOutline, - mdiLinkBoxVariant: mdiLinkBoxVariant, - mdiLinkBoxVariantOutline: mdiLinkBoxVariantOutline, - mdiLinkLock: mdiLinkLock, - mdiLinkOff: mdiLinkOff, - mdiLinkPlus: mdiLinkPlus, - mdiLinkVariant: mdiLinkVariant, - mdiLinkVariantMinus: mdiLinkVariantMinus, - mdiLinkVariantOff: mdiLinkVariantOff, - mdiLinkVariantPlus: mdiLinkVariantPlus, - mdiLinkVariantRemove: mdiLinkVariantRemove, - mdiLinkedin: mdiLinkedin, - mdiLinux: mdiLinux, - mdiLinuxMint: mdiLinuxMint, - mdiLipstick: mdiLipstick, - mdiListStatus: mdiListStatus, - mdiLitecoin: mdiLitecoin, - mdiLoading: mdiLoading, - mdiLocationEnter: mdiLocationEnter, - mdiLocationExit: mdiLocationExit, - mdiLock: mdiLock, - mdiLockAlert: mdiLockAlert, - mdiLockAlertOutline: mdiLockAlertOutline, - mdiLockCheck: mdiLockCheck, - mdiLockCheckOutline: mdiLockCheckOutline, - mdiLockClock: mdiLockClock, - mdiLockMinus: mdiLockMinus, - mdiLockMinusOutline: mdiLockMinusOutline, - mdiLockOff: mdiLockOff, - mdiLockOffOutline: mdiLockOffOutline, - mdiLockOpen: mdiLockOpen, - mdiLockOpenAlert: mdiLockOpenAlert, - mdiLockOpenAlertOutline: mdiLockOpenAlertOutline, - mdiLockOpenCheck: mdiLockOpenCheck, - mdiLockOpenCheckOutline: mdiLockOpenCheckOutline, - mdiLockOpenMinus: mdiLockOpenMinus, - mdiLockOpenMinusOutline: mdiLockOpenMinusOutline, - mdiLockOpenOutline: mdiLockOpenOutline, - mdiLockOpenPlus: mdiLockOpenPlus, - mdiLockOpenPlusOutline: mdiLockOpenPlusOutline, - mdiLockOpenRemove: mdiLockOpenRemove, - mdiLockOpenRemoveOutline: mdiLockOpenRemoveOutline, - mdiLockOpenVariant: mdiLockOpenVariant, - mdiLockOpenVariantOutline: mdiLockOpenVariantOutline, - mdiLockOutline: mdiLockOutline, - mdiLockPattern: mdiLockPattern, - mdiLockPlus: mdiLockPlus, - mdiLockPlusOutline: mdiLockPlusOutline, - mdiLockQuestion: mdiLockQuestion, - mdiLockRemove: mdiLockRemove, - mdiLockRemoveOutline: mdiLockRemoveOutline, - mdiLockReset: mdiLockReset, - mdiLockSmart: mdiLockSmart, - mdiLocker: mdiLocker, - mdiLockerMultiple: mdiLockerMultiple, - mdiLogin: mdiLogin, - mdiLoginVariant: mdiLoginVariant, - mdiLogout: mdiLogout, - mdiLogoutVariant: mdiLogoutVariant, - mdiLongitude: mdiLongitude, - mdiLooks: mdiLooks, - mdiLotion: mdiLotion, - mdiLotionOutline: mdiLotionOutline, - mdiLotionPlus: mdiLotionPlus, - mdiLotionPlusOutline: mdiLotionPlusOutline, - mdiLoupe: mdiLoupe, - mdiLumx: mdiLumx, - mdiLungs: mdiLungs, - mdiMagnet: mdiMagnet, - mdiMagnetOn: mdiMagnetOn, - mdiMagnify: mdiMagnify, - mdiMagnifyClose: mdiMagnifyClose, - mdiMagnifyMinus: mdiMagnifyMinus, - mdiMagnifyMinusCursor: mdiMagnifyMinusCursor, - mdiMagnifyMinusOutline: mdiMagnifyMinusOutline, - mdiMagnifyPlus: mdiMagnifyPlus, - mdiMagnifyPlusCursor: mdiMagnifyPlusCursor, - mdiMagnifyPlusOutline: mdiMagnifyPlusOutline, - mdiMagnifyRemoveCursor: mdiMagnifyRemoveCursor, - mdiMagnifyRemoveOutline: mdiMagnifyRemoveOutline, - mdiMagnifyScan: mdiMagnifyScan, - mdiMail: mdiMail, - mdiMailbox: mdiMailbox, - mdiMailboxOpen: mdiMailboxOpen, - mdiMailboxOpenOutline: mdiMailboxOpenOutline, - mdiMailboxOpenUp: mdiMailboxOpenUp, - mdiMailboxOpenUpOutline: mdiMailboxOpenUpOutline, - mdiMailboxOutline: mdiMailboxOutline, - mdiMailboxUp: mdiMailboxUp, - mdiMailboxUpOutline: mdiMailboxUpOutline, - mdiManjaro: mdiManjaro, - mdiMap: mdiMap, - mdiMapCheck: mdiMapCheck, - mdiMapCheckOutline: mdiMapCheckOutline, - mdiMapClock: mdiMapClock, - mdiMapClockOutline: mdiMapClockOutline, - mdiMapLegend: mdiMapLegend, - mdiMapMarker: mdiMapMarker, - mdiMapMarkerAlert: mdiMapMarkerAlert, - mdiMapMarkerAlertOutline: mdiMapMarkerAlertOutline, - mdiMapMarkerCheck: mdiMapMarkerCheck, - mdiMapMarkerCheckOutline: mdiMapMarkerCheckOutline, - mdiMapMarkerCircle: mdiMapMarkerCircle, - mdiMapMarkerDistance: mdiMapMarkerDistance, - mdiMapMarkerDown: mdiMapMarkerDown, - mdiMapMarkerLeft: mdiMapMarkerLeft, - mdiMapMarkerLeftOutline: mdiMapMarkerLeftOutline, - mdiMapMarkerMinus: mdiMapMarkerMinus, - mdiMapMarkerMinusOutline: mdiMapMarkerMinusOutline, - mdiMapMarkerMultiple: mdiMapMarkerMultiple, - mdiMapMarkerMultipleOutline: mdiMapMarkerMultipleOutline, - mdiMapMarkerOff: mdiMapMarkerOff, - mdiMapMarkerOffOutline: mdiMapMarkerOffOutline, - mdiMapMarkerOutline: mdiMapMarkerOutline, - mdiMapMarkerPath: mdiMapMarkerPath, - mdiMapMarkerPlus: mdiMapMarkerPlus, - mdiMapMarkerPlusOutline: mdiMapMarkerPlusOutline, - mdiMapMarkerQuestion: mdiMapMarkerQuestion, - mdiMapMarkerQuestionOutline: mdiMapMarkerQuestionOutline, - mdiMapMarkerRadius: mdiMapMarkerRadius, - mdiMapMarkerRadiusOutline: mdiMapMarkerRadiusOutline, - mdiMapMarkerRemove: mdiMapMarkerRemove, - mdiMapMarkerRemoveOutline: mdiMapMarkerRemoveOutline, - mdiMapMarkerRemoveVariant: mdiMapMarkerRemoveVariant, - mdiMapMarkerRight: mdiMapMarkerRight, - mdiMapMarkerRightOutline: mdiMapMarkerRightOutline, - mdiMapMarkerStar: mdiMapMarkerStar, - mdiMapMarkerStarOutline: mdiMapMarkerStarOutline, - mdiMapMarkerUp: mdiMapMarkerUp, - mdiMapMinus: mdiMapMinus, - mdiMapOutline: mdiMapOutline, - mdiMapPlus: mdiMapPlus, - mdiMapSearch: mdiMapSearch, - mdiMapSearchOutline: mdiMapSearchOutline, - mdiMapbox: mdiMapbox, - mdiMargin: mdiMargin, - mdiMarker: mdiMarker, - mdiMarkerCancel: mdiMarkerCancel, - mdiMarkerCheck: mdiMarkerCheck, - mdiMastodon: mdiMastodon, - mdiMaterialDesign: mdiMaterialDesign, - mdiMaterialUi: mdiMaterialUi, - mdiMathCompass: mdiMathCompass, - mdiMathCos: mdiMathCos, - mdiMathIntegral: mdiMathIntegral, - mdiMathIntegralBox: mdiMathIntegralBox, - mdiMathLog: mdiMathLog, - mdiMathNorm: mdiMathNorm, - mdiMathNormBox: mdiMathNormBox, - mdiMathSin: mdiMathSin, - mdiMathTan: mdiMathTan, - mdiMatrix: mdiMatrix, - mdiMedal: mdiMedal, - mdiMedalOutline: mdiMedalOutline, - mdiMedicalBag: mdiMedicalBag, - mdiMeditation: mdiMeditation, - mdiMemory: mdiMemory, - mdiMenu: mdiMenu, - mdiMenuDown: mdiMenuDown, - mdiMenuDownOutline: mdiMenuDownOutline, - mdiMenuLeft: mdiMenuLeft, - mdiMenuLeftOutline: mdiMenuLeftOutline, - mdiMenuOpen: mdiMenuOpen, - mdiMenuRight: mdiMenuRight, - mdiMenuRightOutline: mdiMenuRightOutline, - mdiMenuSwap: mdiMenuSwap, - mdiMenuSwapOutline: mdiMenuSwapOutline, - mdiMenuUp: mdiMenuUp, - mdiMenuUpOutline: mdiMenuUpOutline, - mdiMerge: mdiMerge, - mdiMessage: mdiMessage, - mdiMessageAlert: mdiMessageAlert, - mdiMessageAlertOutline: mdiMessageAlertOutline, - mdiMessageArrowLeft: mdiMessageArrowLeft, - mdiMessageArrowLeftOutline: mdiMessageArrowLeftOutline, - mdiMessageArrowRight: mdiMessageArrowRight, - mdiMessageArrowRightOutline: mdiMessageArrowRightOutline, - mdiMessageBookmark: mdiMessageBookmark, - mdiMessageBookmarkOutline: mdiMessageBookmarkOutline, - mdiMessageBulleted: mdiMessageBulleted, - mdiMessageBulletedOff: mdiMessageBulletedOff, - mdiMessageCog: mdiMessageCog, - mdiMessageCogOutline: mdiMessageCogOutline, - mdiMessageDraw: mdiMessageDraw, - mdiMessageFlash: mdiMessageFlash, - mdiMessageFlashOutline: mdiMessageFlashOutline, - mdiMessageImage: mdiMessageImage, - mdiMessageImageOutline: mdiMessageImageOutline, - mdiMessageLock: mdiMessageLock, - mdiMessageLockOutline: mdiMessageLockOutline, - mdiMessageMinus: mdiMessageMinus, - mdiMessageMinusOutline: mdiMessageMinusOutline, - mdiMessageOff: mdiMessageOff, - mdiMessageOffOutline: mdiMessageOffOutline, - mdiMessageOutline: mdiMessageOutline, - mdiMessagePlus: mdiMessagePlus, - mdiMessagePlusOutline: mdiMessagePlusOutline, - mdiMessageProcessing: mdiMessageProcessing, - mdiMessageProcessingOutline: mdiMessageProcessingOutline, - mdiMessageQuestion: mdiMessageQuestion, - mdiMessageQuestionOutline: mdiMessageQuestionOutline, - mdiMessageReply: mdiMessageReply, - mdiMessageReplyOutline: mdiMessageReplyOutline, - mdiMessageReplyText: mdiMessageReplyText, - mdiMessageReplyTextOutline: mdiMessageReplyTextOutline, - mdiMessageSettings: mdiMessageSettings, - mdiMessageSettingsOutline: mdiMessageSettingsOutline, - mdiMessageText: mdiMessageText, - mdiMessageTextClock: mdiMessageTextClock, - mdiMessageTextClockOutline: mdiMessageTextClockOutline, - mdiMessageTextLock: mdiMessageTextLock, - mdiMessageTextLockOutline: mdiMessageTextLockOutline, - mdiMessageTextOutline: mdiMessageTextOutline, - mdiMessageVideo: mdiMessageVideo, - mdiMeteor: mdiMeteor, - mdiMetronome: mdiMetronome, - mdiMetronomeTick: mdiMetronomeTick, - mdiMicroSd: mdiMicroSd, - mdiMicrophone: mdiMicrophone, - mdiMicrophoneMinus: mdiMicrophoneMinus, - mdiMicrophoneOff: mdiMicrophoneOff, - mdiMicrophoneOutline: mdiMicrophoneOutline, - mdiMicrophonePlus: mdiMicrophonePlus, - mdiMicrophoneSettings: mdiMicrophoneSettings, - mdiMicrophoneVariant: mdiMicrophoneVariant, - mdiMicrophoneVariantOff: mdiMicrophoneVariantOff, - mdiMicroscope: mdiMicroscope, - mdiMicrosoft: mdiMicrosoft, - mdiMicrosoftAccess: mdiMicrosoftAccess, - mdiMicrosoftAzure: mdiMicrosoftAzure, - mdiMicrosoftAzureDevops: mdiMicrosoftAzureDevops, - mdiMicrosoftBing: mdiMicrosoftBing, - mdiMicrosoftDynamics365: mdiMicrosoftDynamics365, - mdiMicrosoftEdge: mdiMicrosoftEdge, - mdiMicrosoftEdgeLegacy: mdiMicrosoftEdgeLegacy, - mdiMicrosoftExcel: mdiMicrosoftExcel, - mdiMicrosoftInternetExplorer: mdiMicrosoftInternetExplorer, - mdiMicrosoftOffice: mdiMicrosoftOffice, - mdiMicrosoftOnedrive: mdiMicrosoftOnedrive, - mdiMicrosoftOnenote: mdiMicrosoftOnenote, - mdiMicrosoftOutlook: mdiMicrosoftOutlook, - mdiMicrosoftPowerpoint: mdiMicrosoftPowerpoint, - mdiMicrosoftSharepoint: mdiMicrosoftSharepoint, - mdiMicrosoftTeams: mdiMicrosoftTeams, - mdiMicrosoftVisualStudio: mdiMicrosoftVisualStudio, - mdiMicrosoftVisualStudioCode: mdiMicrosoftVisualStudioCode, - mdiMicrosoftWindows: mdiMicrosoftWindows, - mdiMicrosoftWindowsClassic: mdiMicrosoftWindowsClassic, - mdiMicrosoftWord: mdiMicrosoftWord, - mdiMicrosoftXbox: mdiMicrosoftXbox, - mdiMicrosoftXboxController: mdiMicrosoftXboxController, - mdiMicrosoftXboxControllerBatteryAlert: mdiMicrosoftXboxControllerBatteryAlert, - mdiMicrosoftXboxControllerBatteryCharging: mdiMicrosoftXboxControllerBatteryCharging, - mdiMicrosoftXboxControllerBatteryEmpty: mdiMicrosoftXboxControllerBatteryEmpty, - mdiMicrosoftXboxControllerBatteryFull: mdiMicrosoftXboxControllerBatteryFull, - mdiMicrosoftXboxControllerBatteryLow: mdiMicrosoftXboxControllerBatteryLow, - mdiMicrosoftXboxControllerBatteryMedium: mdiMicrosoftXboxControllerBatteryMedium, - mdiMicrosoftXboxControllerBatteryUnknown: mdiMicrosoftXboxControllerBatteryUnknown, - mdiMicrosoftXboxControllerMenu: mdiMicrosoftXboxControllerMenu, - mdiMicrosoftXboxControllerOff: mdiMicrosoftXboxControllerOff, - mdiMicrosoftXboxControllerView: mdiMicrosoftXboxControllerView, - mdiMicrosoftYammer: mdiMicrosoftYammer, - mdiMicrowave: mdiMicrowave, - mdiMicrowaveOff: mdiMicrowaveOff, - mdiMiddleware: mdiMiddleware, - mdiMiddlewareOutline: mdiMiddlewareOutline, - mdiMidi: mdiMidi, - mdiMidiPort: mdiMidiPort, - mdiMine: mdiMine, - mdiMinecraft: mdiMinecraft, - mdiMiniSd: mdiMiniSd, - mdiMinidisc: mdiMinidisc, - mdiMinus: mdiMinus, - mdiMinusBox: mdiMinusBox, - mdiMinusBoxMultiple: mdiMinusBoxMultiple, - mdiMinusBoxMultipleOutline: mdiMinusBoxMultipleOutline, - mdiMinusBoxOutline: mdiMinusBoxOutline, - mdiMinusCircle: mdiMinusCircle, - mdiMinusCircleMultiple: mdiMinusCircleMultiple, - mdiMinusCircleMultipleOutline: mdiMinusCircleMultipleOutline, - mdiMinusCircleOff: mdiMinusCircleOff, - mdiMinusCircleOffOutline: mdiMinusCircleOffOutline, - mdiMinusCircleOutline: mdiMinusCircleOutline, - mdiMinusNetwork: mdiMinusNetwork, - mdiMinusNetworkOutline: mdiMinusNetworkOutline, - mdiMinusThick: mdiMinusThick, - mdiMirror: mdiMirror, - mdiMixedMartialArts: mdiMixedMartialArts, - mdiMixedReality: mdiMixedReality, - mdiMolecule: mdiMolecule, - mdiMoleculeCo: mdiMoleculeCo, - mdiMoleculeCo2: mdiMoleculeCo2, - mdiMonitor: mdiMonitor, - mdiMonitorCellphone: mdiMonitorCellphone, - mdiMonitorCellphoneStar: mdiMonitorCellphoneStar, - mdiMonitorClean: mdiMonitorClean, - mdiMonitorDashboard: mdiMonitorDashboard, - mdiMonitorEdit: mdiMonitorEdit, - mdiMonitorEye: mdiMonitorEye, - mdiMonitorLock: mdiMonitorLock, - mdiMonitorMultiple: mdiMonitorMultiple, - mdiMonitorOff: mdiMonitorOff, - mdiMonitorScreenshot: mdiMonitorScreenshot, - mdiMonitorShare: mdiMonitorShare, - mdiMonitorSpeaker: mdiMonitorSpeaker, - mdiMonitorSpeakerOff: mdiMonitorSpeakerOff, - mdiMonitorStar: mdiMonitorStar, - mdiMoonFirstQuarter: mdiMoonFirstQuarter, - mdiMoonFull: mdiMoonFull, - mdiMoonLastQuarter: mdiMoonLastQuarter, - mdiMoonNew: mdiMoonNew, - mdiMoonWaningCrescent: mdiMoonWaningCrescent, - mdiMoonWaningGibbous: mdiMoonWaningGibbous, - mdiMoonWaxingCrescent: mdiMoonWaxingCrescent, - mdiMoonWaxingGibbous: mdiMoonWaxingGibbous, - mdiMoped: mdiMoped, - mdiMopedElectric: mdiMopedElectric, - mdiMopedElectricOutline: mdiMopedElectricOutline, - mdiMopedOutline: mdiMopedOutline, - mdiMore: mdiMore, - mdiMotherHeart: mdiMotherHeart, - mdiMotherNurse: mdiMotherNurse, - mdiMotion: mdiMotion, - mdiMotionOutline: mdiMotionOutline, - mdiMotionPause: mdiMotionPause, - mdiMotionPauseOutline: mdiMotionPauseOutline, - mdiMotionPlay: mdiMotionPlay, - mdiMotionPlayOutline: mdiMotionPlayOutline, - mdiMotionSensor: mdiMotionSensor, - mdiMotionSensorOff: mdiMotionSensorOff, - mdiMotorbike: mdiMotorbike, - mdiMotorbikeElectric: mdiMotorbikeElectric, - mdiMouse: mdiMouse, - mdiMouseBluetooth: mdiMouseBluetooth, - mdiMouseMoveDown: mdiMouseMoveDown, - mdiMouseMoveUp: mdiMouseMoveUp, - mdiMouseMoveVertical: mdiMouseMoveVertical, - mdiMouseOff: mdiMouseOff, - mdiMouseVariant: mdiMouseVariant, - mdiMouseVariantOff: mdiMouseVariantOff, - mdiMoveResize: mdiMoveResize, - mdiMoveResizeVariant: mdiMoveResizeVariant, - mdiMovie: mdiMovie, - mdiMovieCheck: mdiMovieCheck, - mdiMovieCheckOutline: mdiMovieCheckOutline, - mdiMovieCog: mdiMovieCog, - mdiMovieCogOutline: mdiMovieCogOutline, - mdiMovieEdit: mdiMovieEdit, - mdiMovieEditOutline: mdiMovieEditOutline, - mdiMovieFilter: mdiMovieFilter, - mdiMovieFilterOutline: mdiMovieFilterOutline, - mdiMovieMinus: mdiMovieMinus, - mdiMovieMinusOutline: mdiMovieMinusOutline, - mdiMovieOff: mdiMovieOff, - mdiMovieOffOutline: mdiMovieOffOutline, - mdiMovieOpen: mdiMovieOpen, - mdiMovieOpenCheck: mdiMovieOpenCheck, - mdiMovieOpenCheckOutline: mdiMovieOpenCheckOutline, - mdiMovieOpenCog: mdiMovieOpenCog, - mdiMovieOpenCogOutline: mdiMovieOpenCogOutline, - mdiMovieOpenEdit: mdiMovieOpenEdit, - mdiMovieOpenEditOutline: mdiMovieOpenEditOutline, - mdiMovieOpenMinus: mdiMovieOpenMinus, - mdiMovieOpenMinusOutline: mdiMovieOpenMinusOutline, - mdiMovieOpenOff: mdiMovieOpenOff, - mdiMovieOpenOffOutline: mdiMovieOpenOffOutline, - mdiMovieOpenOutline: mdiMovieOpenOutline, - mdiMovieOpenPlay: mdiMovieOpenPlay, - mdiMovieOpenPlayOutline: mdiMovieOpenPlayOutline, - mdiMovieOpenPlus: mdiMovieOpenPlus, - mdiMovieOpenPlusOutline: mdiMovieOpenPlusOutline, - mdiMovieOpenRemove: mdiMovieOpenRemove, - mdiMovieOpenRemoveOutline: mdiMovieOpenRemoveOutline, - mdiMovieOpenSettings: mdiMovieOpenSettings, - mdiMovieOpenSettingsOutline: mdiMovieOpenSettingsOutline, - mdiMovieOpenStar: mdiMovieOpenStar, - mdiMovieOpenStarOutline: mdiMovieOpenStarOutline, - mdiMovieOutline: mdiMovieOutline, - mdiMoviePlay: mdiMoviePlay, - mdiMoviePlayOutline: mdiMoviePlayOutline, - mdiMoviePlus: mdiMoviePlus, - mdiMoviePlusOutline: mdiMoviePlusOutline, - mdiMovieRemove: mdiMovieRemove, - mdiMovieRemoveOutline: mdiMovieRemoveOutline, - mdiMovieRoll: mdiMovieRoll, - mdiMovieSearch: mdiMovieSearch, - mdiMovieSearchOutline: mdiMovieSearchOutline, - mdiMovieSettings: mdiMovieSettings, - mdiMovieSettingsOutline: mdiMovieSettingsOutline, - mdiMovieStar: mdiMovieStar, - mdiMovieStarOutline: mdiMovieStarOutline, - mdiMower: mdiMower, - mdiMowerBag: mdiMowerBag, - mdiMuffin: mdiMuffin, - mdiMultiplication: mdiMultiplication, - mdiMultiplicationBox: mdiMultiplicationBox, - mdiMushroom: mdiMushroom, - mdiMushroomOff: mdiMushroomOff, - mdiMushroomOffOutline: mdiMushroomOffOutline, - mdiMushroomOutline: mdiMushroomOutline, - mdiMusic: mdiMusic, - mdiMusicAccidentalDoubleFlat: mdiMusicAccidentalDoubleFlat, - mdiMusicAccidentalDoubleSharp: mdiMusicAccidentalDoubleSharp, - mdiMusicAccidentalFlat: mdiMusicAccidentalFlat, - mdiMusicAccidentalNatural: mdiMusicAccidentalNatural, - mdiMusicAccidentalSharp: mdiMusicAccidentalSharp, - mdiMusicBox: mdiMusicBox, - mdiMusicBoxMultiple: mdiMusicBoxMultiple, - mdiMusicBoxMultipleOutline: mdiMusicBoxMultipleOutline, - mdiMusicBoxOutline: mdiMusicBoxOutline, - mdiMusicCircle: mdiMusicCircle, - mdiMusicCircleOutline: mdiMusicCircleOutline, - mdiMusicClefAlto: mdiMusicClefAlto, - mdiMusicClefBass: mdiMusicClefBass, - mdiMusicClefTreble: mdiMusicClefTreble, - mdiMusicNote: mdiMusicNote, - mdiMusicNoteBluetooth: mdiMusicNoteBluetooth, - mdiMusicNoteBluetoothOff: mdiMusicNoteBluetoothOff, - mdiMusicNoteEighth: mdiMusicNoteEighth, - mdiMusicNoteEighthDotted: mdiMusicNoteEighthDotted, - mdiMusicNoteHalf: mdiMusicNoteHalf, - mdiMusicNoteHalfDotted: mdiMusicNoteHalfDotted, - mdiMusicNoteOff: mdiMusicNoteOff, - mdiMusicNoteOffOutline: mdiMusicNoteOffOutline, - mdiMusicNoteOutline: mdiMusicNoteOutline, - mdiMusicNotePlus: mdiMusicNotePlus, - mdiMusicNoteQuarter: mdiMusicNoteQuarter, - mdiMusicNoteQuarterDotted: mdiMusicNoteQuarterDotted, - mdiMusicNoteSixteenth: mdiMusicNoteSixteenth, - mdiMusicNoteSixteenthDotted: mdiMusicNoteSixteenthDotted, - mdiMusicNoteWhole: mdiMusicNoteWhole, - mdiMusicNoteWholeDotted: mdiMusicNoteWholeDotted, - mdiMusicOff: mdiMusicOff, - mdiMusicRestEighth: mdiMusicRestEighth, - mdiMusicRestHalf: mdiMusicRestHalf, - mdiMusicRestQuarter: mdiMusicRestQuarter, - mdiMusicRestSixteenth: mdiMusicRestSixteenth, - mdiMusicRestWhole: mdiMusicRestWhole, - mdiMustache: mdiMustache, - mdiNail: mdiNail, - mdiNas: mdiNas, - mdiNativescript: mdiNativescript, - mdiNature: mdiNature, - mdiNaturePeople: mdiNaturePeople, - mdiNavigation: mdiNavigation, - mdiNavigationOutline: mdiNavigationOutline, - mdiNearMe: mdiNearMe, - mdiNecklace: mdiNecklace, - mdiNeedle: mdiNeedle, - mdiNetflix: mdiNetflix, - mdiNetwork: mdiNetwork, - mdiNetworkOff: mdiNetworkOff, - mdiNetworkOffOutline: mdiNetworkOffOutline, - mdiNetworkOutline: mdiNetworkOutline, - mdiNetworkStrength1: mdiNetworkStrength1, - mdiNetworkStrength1Alert: mdiNetworkStrength1Alert, - mdiNetworkStrength2: mdiNetworkStrength2, - mdiNetworkStrength2Alert: mdiNetworkStrength2Alert, - mdiNetworkStrength3: mdiNetworkStrength3, - mdiNetworkStrength3Alert: mdiNetworkStrength3Alert, - mdiNetworkStrength4: mdiNetworkStrength4, - mdiNetworkStrength4Alert: mdiNetworkStrength4Alert, - mdiNetworkStrengthOff: mdiNetworkStrengthOff, - mdiNetworkStrengthOffOutline: mdiNetworkStrengthOffOutline, - mdiNetworkStrengthOutline: mdiNetworkStrengthOutline, - mdiNewBox: mdiNewBox, - mdiNewspaper: mdiNewspaper, - mdiNewspaperMinus: mdiNewspaperMinus, - mdiNewspaperPlus: mdiNewspaperPlus, - mdiNewspaperVariant: mdiNewspaperVariant, - mdiNewspaperVariantMultiple: mdiNewspaperVariantMultiple, - mdiNewspaperVariantMultipleOutline: mdiNewspaperVariantMultipleOutline, - mdiNewspaperVariantOutline: mdiNewspaperVariantOutline, - mdiNfc: mdiNfc, - mdiNfcSearchVariant: mdiNfcSearchVariant, - mdiNfcTap: mdiNfcTap, - mdiNfcVariant: mdiNfcVariant, - mdiNfcVariantOff: mdiNfcVariantOff, - mdiNinja: mdiNinja, - mdiNintendoGameBoy: mdiNintendoGameBoy, - mdiNintendoSwitch: mdiNintendoSwitch, - mdiNintendoWii: mdiNintendoWii, - mdiNintendoWiiu: mdiNintendoWiiu, - mdiNix: mdiNix, - mdiNodejs: mdiNodejs, - mdiNoodles: mdiNoodles, - mdiNotEqual: mdiNotEqual, - mdiNotEqualVariant: mdiNotEqualVariant, - mdiNote: mdiNote, - mdiNoteMinus: mdiNoteMinus, - mdiNoteMinusOutline: mdiNoteMinusOutline, - mdiNoteMultiple: mdiNoteMultiple, - mdiNoteMultipleOutline: mdiNoteMultipleOutline, - mdiNoteOutline: mdiNoteOutline, - mdiNotePlus: mdiNotePlus, - mdiNotePlusOutline: mdiNotePlusOutline, - mdiNoteRemove: mdiNoteRemove, - mdiNoteRemoveOutline: mdiNoteRemoveOutline, - mdiNoteSearch: mdiNoteSearch, - mdiNoteSearchOutline: mdiNoteSearchOutline, - mdiNoteText: mdiNoteText, - mdiNoteTextOutline: mdiNoteTextOutline, - mdiNotebook: mdiNotebook, - mdiNotebookCheck: mdiNotebookCheck, - mdiNotebookCheckOutline: mdiNotebookCheckOutline, - mdiNotebookEdit: mdiNotebookEdit, - mdiNotebookEditOutline: mdiNotebookEditOutline, - mdiNotebookMinus: mdiNotebookMinus, - mdiNotebookMinusOutline: mdiNotebookMinusOutline, - mdiNotebookMultiple: mdiNotebookMultiple, - mdiNotebookOutline: mdiNotebookOutline, - mdiNotebookPlus: mdiNotebookPlus, - mdiNotebookPlusOutline: mdiNotebookPlusOutline, - mdiNotebookRemove: mdiNotebookRemove, - mdiNotebookRemoveOutline: mdiNotebookRemoveOutline, - mdiNotificationClearAll: mdiNotificationClearAll, - mdiNpm: mdiNpm, - mdiNuke: mdiNuke, - mdiNull: mdiNull, - mdiNumeric: mdiNumeric, - mdiNumeric0: mdiNumeric0, - mdiNumeric0Box: mdiNumeric0Box, - mdiNumeric0BoxMultiple: mdiNumeric0BoxMultiple, - mdiNumeric0BoxMultipleOutline: mdiNumeric0BoxMultipleOutline, - mdiNumeric0BoxOutline: mdiNumeric0BoxOutline, - mdiNumeric0Circle: mdiNumeric0Circle, - mdiNumeric0CircleOutline: mdiNumeric0CircleOutline, - mdiNumeric1: mdiNumeric1, - mdiNumeric1Box: mdiNumeric1Box, - mdiNumeric1BoxMultiple: mdiNumeric1BoxMultiple, - mdiNumeric1BoxMultipleOutline: mdiNumeric1BoxMultipleOutline, - mdiNumeric1BoxOutline: mdiNumeric1BoxOutline, - mdiNumeric1Circle: mdiNumeric1Circle, - mdiNumeric1CircleOutline: mdiNumeric1CircleOutline, - mdiNumeric10: mdiNumeric10, - mdiNumeric10Box: mdiNumeric10Box, - mdiNumeric10BoxMultiple: mdiNumeric10BoxMultiple, - mdiNumeric10BoxMultipleOutline: mdiNumeric10BoxMultipleOutline, - mdiNumeric10BoxOutline: mdiNumeric10BoxOutline, - mdiNumeric10Circle: mdiNumeric10Circle, - mdiNumeric10CircleOutline: mdiNumeric10CircleOutline, - mdiNumeric2: mdiNumeric2, - mdiNumeric2Box: mdiNumeric2Box, - mdiNumeric2BoxMultiple: mdiNumeric2BoxMultiple, - mdiNumeric2BoxMultipleOutline: mdiNumeric2BoxMultipleOutline, - mdiNumeric2BoxOutline: mdiNumeric2BoxOutline, - mdiNumeric2Circle: mdiNumeric2Circle, - mdiNumeric2CircleOutline: mdiNumeric2CircleOutline, - mdiNumeric3: mdiNumeric3, - mdiNumeric3Box: mdiNumeric3Box, - mdiNumeric3BoxMultiple: mdiNumeric3BoxMultiple, - mdiNumeric3BoxMultipleOutline: mdiNumeric3BoxMultipleOutline, - mdiNumeric3BoxOutline: mdiNumeric3BoxOutline, - mdiNumeric3Circle: mdiNumeric3Circle, - mdiNumeric3CircleOutline: mdiNumeric3CircleOutline, - mdiNumeric4: mdiNumeric4, - mdiNumeric4Box: mdiNumeric4Box, - mdiNumeric4BoxMultiple: mdiNumeric4BoxMultiple, - mdiNumeric4BoxMultipleOutline: mdiNumeric4BoxMultipleOutline, - mdiNumeric4BoxOutline: mdiNumeric4BoxOutline, - mdiNumeric4Circle: mdiNumeric4Circle, - mdiNumeric4CircleOutline: mdiNumeric4CircleOutline, - mdiNumeric5: mdiNumeric5, - mdiNumeric5Box: mdiNumeric5Box, - mdiNumeric5BoxMultiple: mdiNumeric5BoxMultiple, - mdiNumeric5BoxMultipleOutline: mdiNumeric5BoxMultipleOutline, - mdiNumeric5BoxOutline: mdiNumeric5BoxOutline, - mdiNumeric5Circle: mdiNumeric5Circle, - mdiNumeric5CircleOutline: mdiNumeric5CircleOutline, - mdiNumeric6: mdiNumeric6, - mdiNumeric6Box: mdiNumeric6Box, - mdiNumeric6BoxMultiple: mdiNumeric6BoxMultiple, - mdiNumeric6BoxMultipleOutline: mdiNumeric6BoxMultipleOutline, - mdiNumeric6BoxOutline: mdiNumeric6BoxOutline, - mdiNumeric6Circle: mdiNumeric6Circle, - mdiNumeric6CircleOutline: mdiNumeric6CircleOutline, - mdiNumeric7: mdiNumeric7, - mdiNumeric7Box: mdiNumeric7Box, - mdiNumeric7BoxMultiple: mdiNumeric7BoxMultiple, - mdiNumeric7BoxMultipleOutline: mdiNumeric7BoxMultipleOutline, - mdiNumeric7BoxOutline: mdiNumeric7BoxOutline, - mdiNumeric7Circle: mdiNumeric7Circle, - mdiNumeric7CircleOutline: mdiNumeric7CircleOutline, - mdiNumeric8: mdiNumeric8, - mdiNumeric8Box: mdiNumeric8Box, - mdiNumeric8BoxMultiple: mdiNumeric8BoxMultiple, - mdiNumeric8BoxMultipleOutline: mdiNumeric8BoxMultipleOutline, - mdiNumeric8BoxOutline: mdiNumeric8BoxOutline, - mdiNumeric8Circle: mdiNumeric8Circle, - mdiNumeric8CircleOutline: mdiNumeric8CircleOutline, - mdiNumeric9: mdiNumeric9, - mdiNumeric9Box: mdiNumeric9Box, - mdiNumeric9BoxMultiple: mdiNumeric9BoxMultiple, - mdiNumeric9BoxMultipleOutline: mdiNumeric9BoxMultipleOutline, - mdiNumeric9BoxOutline: mdiNumeric9BoxOutline, - mdiNumeric9Circle: mdiNumeric9Circle, - mdiNumeric9CircleOutline: mdiNumeric9CircleOutline, - mdiNumeric9Plus: mdiNumeric9Plus, - mdiNumeric9PlusBox: mdiNumeric9PlusBox, - mdiNumeric9PlusBoxMultiple: mdiNumeric9PlusBoxMultiple, - mdiNumeric9PlusBoxMultipleOutline: mdiNumeric9PlusBoxMultipleOutline, - mdiNumeric9PlusBoxOutline: mdiNumeric9PlusBoxOutline, - mdiNumeric9PlusCircle: mdiNumeric9PlusCircle, - mdiNumeric9PlusCircleOutline: mdiNumeric9PlusCircleOutline, - mdiNumericNegative1: mdiNumericNegative1, - mdiNumericPositive1: mdiNumericPositive1, - mdiNut: mdiNut, - mdiNutrition: mdiNutrition, - mdiNuxt: mdiNuxt, - mdiOar: mdiOar, - mdiOcarina: mdiOcarina, - mdiOci: mdiOci, - mdiOcr: mdiOcr, - mdiOctagon: mdiOctagon, - mdiOctagonOutline: mdiOctagonOutline, - mdiOctagram: mdiOctagram, - mdiOctagramOutline: mdiOctagramOutline, - mdiOdnoklassniki: mdiOdnoklassniki, - mdiOffer: mdiOffer, - mdiOfficeBuilding: mdiOfficeBuilding, - mdiOfficeBuildingMarker: mdiOfficeBuildingMarker, - mdiOfficeBuildingMarkerOutline: mdiOfficeBuildingMarkerOutline, - mdiOfficeBuildingOutline: mdiOfficeBuildingOutline, - mdiOil: mdiOil, - mdiOilLamp: mdiOilLamp, - mdiOilLevel: mdiOilLevel, - mdiOilTemperature: mdiOilTemperature, - mdiOmega: mdiOmega, - mdiOneUp: mdiOneUp, - mdiOnepassword: mdiOnepassword, - mdiOpacity: mdiOpacity, - mdiOpenInApp: mdiOpenInApp, - mdiOpenInNew: mdiOpenInNew, - mdiOpenSourceInitiative: mdiOpenSourceInitiative, - mdiOpenid: mdiOpenid, - mdiOpera: mdiOpera, - mdiOrbit: mdiOrbit, - mdiOrbitVariant: mdiOrbitVariant, - mdiOrderAlphabeticalAscending: mdiOrderAlphabeticalAscending, - mdiOrderAlphabeticalDescending: mdiOrderAlphabeticalDescending, - mdiOrderBoolAscending: mdiOrderBoolAscending, - mdiOrderBoolAscendingVariant: mdiOrderBoolAscendingVariant, - mdiOrderBoolDescending: mdiOrderBoolDescending, - mdiOrderBoolDescendingVariant: mdiOrderBoolDescendingVariant, - mdiOrderNumericAscending: mdiOrderNumericAscending, - mdiOrderNumericDescending: mdiOrderNumericDescending, - mdiOrigin: mdiOrigin, - mdiOrnament: mdiOrnament, - mdiOrnamentVariant: mdiOrnamentVariant, - mdiOutdoorLamp: mdiOutdoorLamp, - mdiOverscan: mdiOverscan, - mdiOwl: mdiOwl, - mdiPacMan: mdiPacMan, - mdiPackage: mdiPackage, - mdiPackageDown: mdiPackageDown, - mdiPackageUp: mdiPackageUp, - mdiPackageVariant: mdiPackageVariant, - mdiPackageVariantClosed: mdiPackageVariantClosed, - mdiPageFirst: mdiPageFirst, - mdiPageLast: mdiPageLast, - mdiPageLayoutBody: mdiPageLayoutBody, - mdiPageLayoutFooter: mdiPageLayoutFooter, - mdiPageLayoutHeader: mdiPageLayoutHeader, - mdiPageLayoutHeaderFooter: mdiPageLayoutHeaderFooter, - mdiPageLayoutSidebarLeft: mdiPageLayoutSidebarLeft, - mdiPageLayoutSidebarRight: mdiPageLayoutSidebarRight, - mdiPageNext: mdiPageNext, - mdiPageNextOutline: mdiPageNextOutline, - mdiPagePrevious: mdiPagePrevious, - mdiPagePreviousOutline: mdiPagePreviousOutline, - mdiPail: mdiPail, - mdiPailMinus: mdiPailMinus, - mdiPailMinusOutline: mdiPailMinusOutline, - mdiPailOff: mdiPailOff, - mdiPailOffOutline: mdiPailOffOutline, - mdiPailOutline: mdiPailOutline, - mdiPailPlus: mdiPailPlus, - mdiPailPlusOutline: mdiPailPlusOutline, - mdiPailRemove: mdiPailRemove, - mdiPailRemoveOutline: mdiPailRemoveOutline, - mdiPalette: mdiPalette, - mdiPaletteAdvanced: mdiPaletteAdvanced, - mdiPaletteOutline: mdiPaletteOutline, - mdiPaletteSwatch: mdiPaletteSwatch, - mdiPaletteSwatchOutline: mdiPaletteSwatchOutline, - mdiPalmTree: mdiPalmTree, - mdiPan: mdiPan, - mdiPanBottomLeft: mdiPanBottomLeft, - mdiPanBottomRight: mdiPanBottomRight, - mdiPanDown: mdiPanDown, - mdiPanHorizontal: mdiPanHorizontal, - mdiPanLeft: mdiPanLeft, - mdiPanRight: mdiPanRight, - mdiPanTopLeft: mdiPanTopLeft, - mdiPanTopRight: mdiPanTopRight, - mdiPanUp: mdiPanUp, - mdiPanVertical: mdiPanVertical, - mdiPanda: mdiPanda, - mdiPandora: mdiPandora, - mdiPanorama: mdiPanorama, - mdiPanoramaFisheye: mdiPanoramaFisheye, - mdiPanoramaHorizontal: mdiPanoramaHorizontal, - mdiPanoramaVertical: mdiPanoramaVertical, - mdiPanoramaWideAngle: mdiPanoramaWideAngle, - mdiPaperCutVertical: mdiPaperCutVertical, - mdiPaperRoll: mdiPaperRoll, - mdiPaperRollOutline: mdiPaperRollOutline, - mdiPaperclip: mdiPaperclip, - mdiParachute: mdiParachute, - mdiParachuteOutline: mdiParachuteOutline, - mdiParking: mdiParking, - mdiPartyPopper: mdiPartyPopper, - mdiPassport: mdiPassport, - mdiPassportBiometric: mdiPassportBiometric, - mdiPasta: mdiPasta, - mdiPatioHeater: mdiPatioHeater, - mdiPatreon: mdiPatreon, - mdiPause: mdiPause, - mdiPauseCircle: mdiPauseCircle, - mdiPauseCircleOutline: mdiPauseCircleOutline, - mdiPauseOctagon: mdiPauseOctagon, - mdiPauseOctagonOutline: mdiPauseOctagonOutline, - mdiPaw: mdiPaw, - mdiPawOff: mdiPawOff, - mdiPawOffOutline: mdiPawOffOutline, - mdiPawOutline: mdiPawOutline, - mdiPdfBox: mdiPdfBox, - mdiPeace: mdiPeace, - mdiPeanut: mdiPeanut, - mdiPeanutOff: mdiPeanutOff, - mdiPeanutOffOutline: mdiPeanutOffOutline, - mdiPeanutOutline: mdiPeanutOutline, - mdiPen: mdiPen, - mdiPenLock: mdiPenLock, - mdiPenMinus: mdiPenMinus, - mdiPenOff: mdiPenOff, - mdiPenPlus: mdiPenPlus, - mdiPenRemove: mdiPenRemove, - mdiPencil: mdiPencil, - mdiPencilBox: mdiPencilBox, - mdiPencilBoxMultiple: mdiPencilBoxMultiple, - mdiPencilBoxMultipleOutline: mdiPencilBoxMultipleOutline, - mdiPencilBoxOutline: mdiPencilBoxOutline, - mdiPencilCircle: mdiPencilCircle, - mdiPencilCircleOutline: mdiPencilCircleOutline, - mdiPencilLock: mdiPencilLock, - mdiPencilLockOutline: mdiPencilLockOutline, - mdiPencilMinus: mdiPencilMinus, - mdiPencilMinusOutline: mdiPencilMinusOutline, - mdiPencilOff: mdiPencilOff, - mdiPencilOffOutline: mdiPencilOffOutline, - mdiPencilOutline: mdiPencilOutline, - mdiPencilPlus: mdiPencilPlus, - mdiPencilPlusOutline: mdiPencilPlusOutline, - mdiPencilRemove: mdiPencilRemove, - mdiPencilRemoveOutline: mdiPencilRemoveOutline, - mdiPencilRuler: mdiPencilRuler, - mdiPenguin: mdiPenguin, - mdiPentagon: mdiPentagon, - mdiPentagonOutline: mdiPentagonOutline, - mdiPentagram: mdiPentagram, - mdiPercent: mdiPercent, - mdiPercentOutline: mdiPercentOutline, - mdiPeriodicTable: mdiPeriodicTable, - mdiPerspectiveLess: mdiPerspectiveLess, - mdiPerspectiveMore: mdiPerspectiveMore, - mdiPharmacy: mdiPharmacy, - mdiPhone: mdiPhone, - mdiPhoneAlert: mdiPhoneAlert, - mdiPhoneAlertOutline: mdiPhoneAlertOutline, - mdiPhoneBluetooth: mdiPhoneBluetooth, - mdiPhoneBluetoothOutline: mdiPhoneBluetoothOutline, - mdiPhoneCancel: mdiPhoneCancel, - mdiPhoneCancelOutline: mdiPhoneCancelOutline, - mdiPhoneCheck: mdiPhoneCheck, - mdiPhoneCheckOutline: mdiPhoneCheckOutline, - mdiPhoneClassic: mdiPhoneClassic, - mdiPhoneClassicOff: mdiPhoneClassicOff, - mdiPhoneDial: mdiPhoneDial, - mdiPhoneDialOutline: mdiPhoneDialOutline, - mdiPhoneForward: mdiPhoneForward, - mdiPhoneForwardOutline: mdiPhoneForwardOutline, - mdiPhoneHangup: mdiPhoneHangup, - mdiPhoneHangupOutline: mdiPhoneHangupOutline, - mdiPhoneInTalk: mdiPhoneInTalk, - mdiPhoneInTalkOutline: mdiPhoneInTalkOutline, - mdiPhoneIncoming: mdiPhoneIncoming, - mdiPhoneIncomingOutline: mdiPhoneIncomingOutline, - mdiPhoneLock: mdiPhoneLock, - mdiPhoneLockOutline: mdiPhoneLockOutline, - mdiPhoneLog: mdiPhoneLog, - mdiPhoneLogOutline: mdiPhoneLogOutline, - mdiPhoneMessage: mdiPhoneMessage, - mdiPhoneMessageOutline: mdiPhoneMessageOutline, - mdiPhoneMinus: mdiPhoneMinus, - mdiPhoneMinusOutline: mdiPhoneMinusOutline, - mdiPhoneMissed: mdiPhoneMissed, - mdiPhoneMissedOutline: mdiPhoneMissedOutline, - mdiPhoneOff: mdiPhoneOff, - mdiPhoneOffOutline: mdiPhoneOffOutline, - mdiPhoneOutgoing: mdiPhoneOutgoing, - mdiPhoneOutgoingOutline: mdiPhoneOutgoingOutline, - mdiPhoneOutline: mdiPhoneOutline, - mdiPhonePaused: mdiPhonePaused, - mdiPhonePausedOutline: mdiPhonePausedOutline, - mdiPhonePlus: mdiPhonePlus, - mdiPhonePlusOutline: mdiPhonePlusOutline, - mdiPhoneRemove: mdiPhoneRemove, - mdiPhoneRemoveOutline: mdiPhoneRemoveOutline, - mdiPhoneReturn: mdiPhoneReturn, - mdiPhoneReturnOutline: mdiPhoneReturnOutline, - mdiPhoneRing: mdiPhoneRing, - mdiPhoneRingOutline: mdiPhoneRingOutline, - mdiPhoneRotateLandscape: mdiPhoneRotateLandscape, - mdiPhoneRotatePortrait: mdiPhoneRotatePortrait, - mdiPhoneSettings: mdiPhoneSettings, - mdiPhoneSettingsOutline: mdiPhoneSettingsOutline, - mdiPhoneVoip: mdiPhoneVoip, - mdiPi: mdiPi, - mdiPiBox: mdiPiBox, - mdiPiHole: mdiPiHole, - mdiPiano: mdiPiano, - mdiPickaxe: mdiPickaxe, - mdiPictureInPictureBottomRight: mdiPictureInPictureBottomRight, - mdiPictureInPictureBottomRightOutline: mdiPictureInPictureBottomRightOutline, - mdiPictureInPictureTopRight: mdiPictureInPictureTopRight, - mdiPictureInPictureTopRightOutline: mdiPictureInPictureTopRightOutline, - mdiPier: mdiPier, - mdiPierCrane: mdiPierCrane, - mdiPig: mdiPig, - mdiPigVariant: mdiPigVariant, - mdiPigVariantOutline: mdiPigVariantOutline, - mdiPiggyBank: mdiPiggyBank, - mdiPiggyBankOutline: mdiPiggyBankOutline, - mdiPill: mdiPill, - mdiPillar: mdiPillar, - mdiPin: mdiPin, - mdiPinOff: mdiPinOff, - mdiPinOffOutline: mdiPinOffOutline, - mdiPinOutline: mdiPinOutline, - mdiPineTree: mdiPineTree, - mdiPineTreeBox: mdiPineTreeBox, - mdiPineTreeFire: mdiPineTreeFire, - mdiPinterest: mdiPinterest, - mdiPinwheel: mdiPinwheel, - mdiPinwheelOutline: mdiPinwheelOutline, - mdiPipe: mdiPipe, - mdiPipeDisconnected: mdiPipeDisconnected, - mdiPipeLeak: mdiPipeLeak, - mdiPipeWrench: mdiPipeWrench, - mdiPirate: mdiPirate, - mdiPistol: mdiPistol, - mdiPiston: mdiPiston, - mdiPitchfork: mdiPitchfork, - mdiPizza: mdiPizza, - mdiPlay: mdiPlay, - mdiPlayBox: mdiPlayBox, - mdiPlayBoxMultiple: mdiPlayBoxMultiple, - mdiPlayBoxMultipleOutline: mdiPlayBoxMultipleOutline, - mdiPlayBoxOutline: mdiPlayBoxOutline, - mdiPlayCircle: mdiPlayCircle, - mdiPlayCircleOutline: mdiPlayCircleOutline, - mdiPlayNetwork: mdiPlayNetwork, - mdiPlayNetworkOutline: mdiPlayNetworkOutline, - mdiPlayOutline: mdiPlayOutline, - mdiPlayPause: mdiPlayPause, - mdiPlayProtectedContent: mdiPlayProtectedContent, - mdiPlaySpeed: mdiPlaySpeed, - mdiPlaylistCheck: mdiPlaylistCheck, - mdiPlaylistEdit: mdiPlaylistEdit, - mdiPlaylistMinus: mdiPlaylistMinus, - mdiPlaylistMusic: mdiPlaylistMusic, - mdiPlaylistMusicOutline: mdiPlaylistMusicOutline, - mdiPlaylistPlay: mdiPlaylistPlay, - mdiPlaylistPlus: mdiPlaylistPlus, - mdiPlaylistRemove: mdiPlaylistRemove, - mdiPlaylistStar: mdiPlaylistStar, - mdiPlex: mdiPlex, - mdiPlus: mdiPlus, - mdiPlusBox: mdiPlusBox, - mdiPlusBoxMultiple: mdiPlusBoxMultiple, - mdiPlusBoxMultipleOutline: mdiPlusBoxMultipleOutline, - mdiPlusBoxOutline: mdiPlusBoxOutline, - mdiPlusCircle: mdiPlusCircle, - mdiPlusCircleMultiple: mdiPlusCircleMultiple, - mdiPlusCircleMultipleOutline: mdiPlusCircleMultipleOutline, - mdiPlusCircleOutline: mdiPlusCircleOutline, - mdiPlusMinus: mdiPlusMinus, - mdiPlusMinusBox: mdiPlusMinusBox, - mdiPlusMinusVariant: mdiPlusMinusVariant, - mdiPlusNetwork: mdiPlusNetwork, - mdiPlusNetworkOutline: mdiPlusNetworkOutline, - mdiPlusOne: mdiPlusOne, - mdiPlusOutline: mdiPlusOutline, - mdiPlusThick: mdiPlusThick, - mdiPodcast: mdiPodcast, - mdiPodium: mdiPodium, - mdiPodiumBronze: mdiPodiumBronze, - mdiPodiumGold: mdiPodiumGold, - mdiPodiumSilver: mdiPodiumSilver, - mdiPointOfSale: mdiPointOfSale, - mdiPokeball: mdiPokeball, - mdiPokemonGo: mdiPokemonGo, - mdiPokerChip: mdiPokerChip, - mdiPolaroid: mdiPolaroid, - mdiPoliceBadge: mdiPoliceBadge, - mdiPoliceBadgeOutline: mdiPoliceBadgeOutline, - mdiPoll: mdiPoll, - mdiPollBox: mdiPollBox, - mdiPollBoxOutline: mdiPollBoxOutline, - mdiPolo: mdiPolo, - mdiPolymer: mdiPolymer, - mdiPool: mdiPool, - mdiPopcorn: mdiPopcorn, - mdiPost: mdiPost, - mdiPostOutline: mdiPostOutline, - mdiPostageStamp: mdiPostageStamp, - mdiPot: mdiPot, - mdiPotMix: mdiPotMix, - mdiPotMixOutline: mdiPotMixOutline, - mdiPotOutline: mdiPotOutline, - mdiPotSteam: mdiPotSteam, - mdiPotSteamOutline: mdiPotSteamOutline, - mdiPound: mdiPound, - mdiPoundBox: mdiPoundBox, - mdiPoundBoxOutline: mdiPoundBoxOutline, - mdiPower: mdiPower, - mdiPowerCycle: mdiPowerCycle, - mdiPowerOff: mdiPowerOff, - mdiPowerOn: mdiPowerOn, - mdiPowerPlug: mdiPowerPlug, - mdiPowerPlugOff: mdiPowerPlugOff, - mdiPowerPlugOffOutline: mdiPowerPlugOffOutline, - mdiPowerPlugOutline: mdiPowerPlugOutline, - mdiPowerSettings: mdiPowerSettings, - mdiPowerSleep: mdiPowerSleep, - mdiPowerSocket: mdiPowerSocket, - mdiPowerSocketAu: mdiPowerSocketAu, - mdiPowerSocketDe: mdiPowerSocketDe, - mdiPowerSocketEu: mdiPowerSocketEu, - mdiPowerSocketFr: mdiPowerSocketFr, - mdiPowerSocketIt: mdiPowerSocketIt, - mdiPowerSocketJp: mdiPowerSocketJp, - mdiPowerSocketUk: mdiPowerSocketUk, - mdiPowerSocketUs: mdiPowerSocketUs, - mdiPowerStandby: mdiPowerStandby, - mdiPowershell: mdiPowershell, - mdiPrescription: mdiPrescription, - mdiPresentation: mdiPresentation, - mdiPresentationPlay: mdiPresentationPlay, - mdiPretzel: mdiPretzel, - mdiPrinter: mdiPrinter, - mdiPrinter3d: mdiPrinter3d, - mdiPrinter3dNozzle: mdiPrinter3dNozzle, - mdiPrinter3dNozzleAlert: mdiPrinter3dNozzleAlert, - mdiPrinter3dNozzleAlertOutline: mdiPrinter3dNozzleAlertOutline, - mdiPrinter3dNozzleOutline: mdiPrinter3dNozzleOutline, - mdiPrinterAlert: mdiPrinterAlert, - mdiPrinterCheck: mdiPrinterCheck, - mdiPrinterEye: mdiPrinterEye, - mdiPrinterOff: mdiPrinterOff, - mdiPrinterPos: mdiPrinterPos, - mdiPrinterSearch: mdiPrinterSearch, - mdiPrinterSettings: mdiPrinterSettings, - mdiPrinterWireless: mdiPrinterWireless, - mdiPriorityHigh: mdiPriorityHigh, - mdiPriorityLow: mdiPriorityLow, - mdiProfessionalHexagon: mdiProfessionalHexagon, - mdiProgressAlert: mdiProgressAlert, - mdiProgressCheck: mdiProgressCheck, - mdiProgressClock: mdiProgressClock, - mdiProgressClose: mdiProgressClose, - mdiProgressDownload: mdiProgressDownload, - mdiProgressQuestion: mdiProgressQuestion, - mdiProgressUpload: mdiProgressUpload, - mdiProgressWrench: mdiProgressWrench, - mdiProjector: mdiProjector, - mdiProjectorScreen: mdiProjectorScreen, - mdiProjectorScreenOutline: mdiProjectorScreenOutline, - mdiPropaneTank: mdiPropaneTank, - mdiPropaneTankOutline: mdiPropaneTankOutline, - mdiProtocol: mdiProtocol, - mdiPublish: mdiPublish, - mdiPulse: mdiPulse, - mdiPump: mdiPump, - mdiPumpkin: mdiPumpkin, - mdiPurse: mdiPurse, - mdiPurseOutline: mdiPurseOutline, - mdiPuzzle: mdiPuzzle, - mdiPuzzleCheck: mdiPuzzleCheck, - mdiPuzzleCheckOutline: mdiPuzzleCheckOutline, - mdiPuzzleEdit: mdiPuzzleEdit, - mdiPuzzleEditOutline: mdiPuzzleEditOutline, - mdiPuzzleHeart: mdiPuzzleHeart, - mdiPuzzleHeartOutline: mdiPuzzleHeartOutline, - mdiPuzzleMinus: mdiPuzzleMinus, - mdiPuzzleMinusOutline: mdiPuzzleMinusOutline, - mdiPuzzleOutline: mdiPuzzleOutline, - mdiPuzzlePlus: mdiPuzzlePlus, - mdiPuzzlePlusOutline: mdiPuzzlePlusOutline, - mdiPuzzleRemove: mdiPuzzleRemove, - mdiPuzzleRemoveOutline: mdiPuzzleRemoveOutline, - mdiPuzzleStar: mdiPuzzleStar, - mdiPuzzleStarOutline: mdiPuzzleStarOutline, - mdiQi: mdiQi, - mdiQqchat: mdiQqchat, - mdiQrcode: mdiQrcode, - mdiQrcodeEdit: mdiQrcodeEdit, - mdiQrcodeMinus: mdiQrcodeMinus, - mdiQrcodePlus: mdiQrcodePlus, - mdiQrcodeRemove: mdiQrcodeRemove, - mdiQrcodeScan: mdiQrcodeScan, - mdiQuadcopter: mdiQuadcopter, - mdiQualityHigh: mdiQualityHigh, - mdiQualityLow: mdiQualityLow, - mdiQualityMedium: mdiQualityMedium, - mdiQuora: mdiQuora, - mdiRabbit: mdiRabbit, - mdiRacingHelmet: mdiRacingHelmet, - mdiRacquetball: mdiRacquetball, - mdiRadar: mdiRadar, - mdiRadiator: mdiRadiator, - mdiRadiatorDisabled: mdiRadiatorDisabled, - mdiRadiatorOff: mdiRadiatorOff, - mdiRadio: mdiRadio, - mdiRadioAm: mdiRadioAm, - mdiRadioFm: mdiRadioFm, - mdiRadioHandheld: mdiRadioHandheld, - mdiRadioOff: mdiRadioOff, - mdiRadioTower: mdiRadioTower, - mdiRadioactive: mdiRadioactive, - mdiRadioactiveOff: mdiRadioactiveOff, - mdiRadioboxBlank: mdiRadioboxBlank, - mdiRadioboxMarked: mdiRadioboxMarked, - mdiRadiologyBox: mdiRadiologyBox, - mdiRadiologyBoxOutline: mdiRadiologyBoxOutline, - mdiRadius: mdiRadius, - mdiRadiusOutline: mdiRadiusOutline, - mdiRailroadLight: mdiRailroadLight, - mdiRake: mdiRake, - mdiRaspberryPi: mdiRaspberryPi, - mdiRayEnd: mdiRayEnd, - mdiRayEndArrow: mdiRayEndArrow, - mdiRayStart: mdiRayStart, - mdiRayStartArrow: mdiRayStartArrow, - mdiRayStartEnd: mdiRayStartEnd, - mdiRayStartVertexEnd: mdiRayStartVertexEnd, - mdiRayVertex: mdiRayVertex, - mdiReact: mdiReact, - mdiRead: mdiRead, - mdiReceipt: mdiReceipt, - mdiRecord: mdiRecord, - mdiRecordCircle: mdiRecordCircle, - mdiRecordCircleOutline: mdiRecordCircleOutline, - mdiRecordPlayer: mdiRecordPlayer, - mdiRecordRec: mdiRecordRec, - mdiRectangle: mdiRectangle, - mdiRectangleOutline: mdiRectangleOutline, - mdiRecycle: mdiRecycle, - mdiRecycleVariant: mdiRecycleVariant, - mdiReddit: mdiReddit, - mdiRedhat: mdiRedhat, - mdiRedo: mdiRedo, - mdiRedoVariant: mdiRedoVariant, - mdiReflectHorizontal: mdiReflectHorizontal, - mdiReflectVertical: mdiReflectVertical, - mdiRefresh: mdiRefresh, - mdiRefreshCircle: mdiRefreshCircle, - mdiRegex: mdiRegex, - mdiRegisteredTrademark: mdiRegisteredTrademark, - mdiReiterate: mdiReiterate, - mdiRelationManyToMany: mdiRelationManyToMany, - mdiRelationManyToOne: mdiRelationManyToOne, - mdiRelationManyToOneOrMany: mdiRelationManyToOneOrMany, - mdiRelationManyToOnlyOne: mdiRelationManyToOnlyOne, - mdiRelationManyToZeroOrMany: mdiRelationManyToZeroOrMany, - mdiRelationManyToZeroOrOne: mdiRelationManyToZeroOrOne, - mdiRelationOneOrManyToMany: mdiRelationOneOrManyToMany, - mdiRelationOneOrManyToOne: mdiRelationOneOrManyToOne, - mdiRelationOneOrManyToOneOrMany: mdiRelationOneOrManyToOneOrMany, - mdiRelationOneOrManyToOnlyOne: mdiRelationOneOrManyToOnlyOne, - mdiRelationOneOrManyToZeroOrMany: mdiRelationOneOrManyToZeroOrMany, - mdiRelationOneOrManyToZeroOrOne: mdiRelationOneOrManyToZeroOrOne, - mdiRelationOneToMany: mdiRelationOneToMany, - mdiRelationOneToOne: mdiRelationOneToOne, - mdiRelationOneToOneOrMany: mdiRelationOneToOneOrMany, - mdiRelationOneToOnlyOne: mdiRelationOneToOnlyOne, - mdiRelationOneToZeroOrMany: mdiRelationOneToZeroOrMany, - mdiRelationOneToZeroOrOne: mdiRelationOneToZeroOrOne, - mdiRelationOnlyOneToMany: mdiRelationOnlyOneToMany, - mdiRelationOnlyOneToOne: mdiRelationOnlyOneToOne, - mdiRelationOnlyOneToOneOrMany: mdiRelationOnlyOneToOneOrMany, - mdiRelationOnlyOneToOnlyOne: mdiRelationOnlyOneToOnlyOne, - mdiRelationOnlyOneToZeroOrMany: mdiRelationOnlyOneToZeroOrMany, - mdiRelationOnlyOneToZeroOrOne: mdiRelationOnlyOneToZeroOrOne, - mdiRelationZeroOrManyToMany: mdiRelationZeroOrManyToMany, - mdiRelationZeroOrManyToOne: mdiRelationZeroOrManyToOne, - mdiRelationZeroOrManyToOneOrMany: mdiRelationZeroOrManyToOneOrMany, - mdiRelationZeroOrManyToOnlyOne: mdiRelationZeroOrManyToOnlyOne, - mdiRelationZeroOrManyToZeroOrMany: mdiRelationZeroOrManyToZeroOrMany, - mdiRelationZeroOrManyToZeroOrOne: mdiRelationZeroOrManyToZeroOrOne, - mdiRelationZeroOrOneToMany: mdiRelationZeroOrOneToMany, - mdiRelationZeroOrOneToOne: mdiRelationZeroOrOneToOne, - mdiRelationZeroOrOneToOneOrMany: mdiRelationZeroOrOneToOneOrMany, - mdiRelationZeroOrOneToOnlyOne: mdiRelationZeroOrOneToOnlyOne, - mdiRelationZeroOrOneToZeroOrMany: mdiRelationZeroOrOneToZeroOrMany, - mdiRelationZeroOrOneToZeroOrOne: mdiRelationZeroOrOneToZeroOrOne, - mdiRelativeScale: mdiRelativeScale, - mdiReload: mdiReload, - mdiReloadAlert: mdiReloadAlert, - mdiReminder: mdiReminder, - mdiRemote: mdiRemote, - mdiRemoteDesktop: mdiRemoteDesktop, - mdiRemoteOff: mdiRemoteOff, - mdiRemoteTv: mdiRemoteTv, - mdiRemoteTvOff: mdiRemoteTvOff, - mdiRenameBox: mdiRenameBox, - mdiReorderHorizontal: mdiReorderHorizontal, - mdiReorderVertical: mdiReorderVertical, - mdiRepeat: mdiRepeat, - mdiRepeatOff: mdiRepeatOff, - mdiRepeatOnce: mdiRepeatOnce, - mdiReplay: mdiReplay, - mdiReply: mdiReply, - mdiReplyAll: mdiReplyAll, - mdiReplyAllOutline: mdiReplyAllOutline, - mdiReplyCircle: mdiReplyCircle, - mdiReplyOutline: mdiReplyOutline, - mdiReproduction: mdiReproduction, - mdiResistor: mdiResistor, - mdiResistorNodes: mdiResistorNodes, - mdiResize: mdiResize, - mdiResizeBottomRight: mdiResizeBottomRight, - mdiResponsive: mdiResponsive, - mdiRestart: mdiRestart, - mdiRestartAlert: mdiRestartAlert, - mdiRestartOff: mdiRestartOff, - mdiRestore: mdiRestore, - mdiRestoreAlert: mdiRestoreAlert, - mdiRewind: mdiRewind, - mdiRewind10: mdiRewind10, - mdiRewind30: mdiRewind30, - mdiRewind5: mdiRewind5, - mdiRewind60: mdiRewind60, - mdiRewindOutline: mdiRewindOutline, - mdiRhombus: mdiRhombus, - mdiRhombusMedium: mdiRhombusMedium, - mdiRhombusMediumOutline: mdiRhombusMediumOutline, - mdiRhombusOutline: mdiRhombusOutline, - mdiRhombusSplit: mdiRhombusSplit, - mdiRhombusSplitOutline: mdiRhombusSplitOutline, - mdiRibbon: mdiRibbon, - mdiRice: mdiRice, - mdiRickshaw: mdiRickshaw, - mdiRickshawElectric: mdiRickshawElectric, - mdiRing: mdiRing, - mdiRivet: mdiRivet, - mdiRoad: mdiRoad, - mdiRoadVariant: mdiRoadVariant, - mdiRobber: mdiRobber, - mdiRobot: mdiRobot, - mdiRobotAngry: mdiRobotAngry, - mdiRobotAngryOutline: mdiRobotAngryOutline, - mdiRobotConfused: mdiRobotConfused, - mdiRobotConfusedOutline: mdiRobotConfusedOutline, - mdiRobotDead: mdiRobotDead, - mdiRobotDeadOutline: mdiRobotDeadOutline, - mdiRobotExcited: mdiRobotExcited, - mdiRobotExcitedOutline: mdiRobotExcitedOutline, - mdiRobotHappy: mdiRobotHappy, - mdiRobotHappyOutline: mdiRobotHappyOutline, - mdiRobotIndustrial: mdiRobotIndustrial, - mdiRobotLove: mdiRobotLove, - mdiRobotLoveOutline: mdiRobotLoveOutline, - mdiRobotMower: mdiRobotMower, - mdiRobotMowerOutline: mdiRobotMowerOutline, - mdiRobotOff: mdiRobotOff, - mdiRobotOffOutline: mdiRobotOffOutline, - mdiRobotOutline: mdiRobotOutline, - mdiRobotVacuum: mdiRobotVacuum, - mdiRobotVacuumVariant: mdiRobotVacuumVariant, - mdiRocket: mdiRocket, - mdiRocketLaunch: mdiRocketLaunch, - mdiRocketLaunchOutline: mdiRocketLaunchOutline, - mdiRocketOutline: mdiRocketOutline, - mdiRodent: mdiRodent, - mdiRollerSkate: mdiRollerSkate, - mdiRollerSkateOff: mdiRollerSkateOff, - mdiRollerblade: mdiRollerblade, - mdiRollerbladeOff: mdiRollerbladeOff, - mdiRollupjs: mdiRollupjs, - mdiRomanNumeral1: mdiRomanNumeral1, - mdiRomanNumeral10: mdiRomanNumeral10, - mdiRomanNumeral2: mdiRomanNumeral2, - mdiRomanNumeral3: mdiRomanNumeral3, - mdiRomanNumeral4: mdiRomanNumeral4, - mdiRomanNumeral5: mdiRomanNumeral5, - mdiRomanNumeral6: mdiRomanNumeral6, - mdiRomanNumeral7: mdiRomanNumeral7, - mdiRomanNumeral8: mdiRomanNumeral8, - mdiRomanNumeral9: mdiRomanNumeral9, - mdiRoomService: mdiRoomService, - mdiRoomServiceOutline: mdiRoomServiceOutline, - mdiRotate3d: mdiRotate3d, - mdiRotate3dVariant: mdiRotate3dVariant, - mdiRotateLeft: mdiRotateLeft, - mdiRotateLeftVariant: mdiRotateLeftVariant, - mdiRotateOrbit: mdiRotateOrbit, - mdiRotateRight: mdiRotateRight, - mdiRotateRightVariant: mdiRotateRightVariant, - mdiRoundedCorner: mdiRoundedCorner, - mdiRouter: mdiRouter, - mdiRouterNetwork: mdiRouterNetwork, - mdiRouterWireless: mdiRouterWireless, - mdiRouterWirelessOff: mdiRouterWirelessOff, - mdiRouterWirelessSettings: mdiRouterWirelessSettings, - mdiRoutes: mdiRoutes, - mdiRoutesClock: mdiRoutesClock, - mdiRowing: mdiRowing, - mdiRss: mdiRss, - mdiRssBox: mdiRssBox, - mdiRssOff: mdiRssOff, - mdiRug: mdiRug, - mdiRugby: mdiRugby, - mdiRuler: mdiRuler, - mdiRulerSquare: mdiRulerSquare, - mdiRulerSquareCompass: mdiRulerSquareCompass, - mdiRun: mdiRun, - mdiRunFast: mdiRunFast, - mdiRvTruck: mdiRvTruck, - mdiSack: mdiSack, - mdiSackPercent: mdiSackPercent, - mdiSafe: mdiSafe, - mdiSafeSquare: mdiSafeSquare, - mdiSafeSquareOutline: mdiSafeSquareOutline, - mdiSafetyGoggles: mdiSafetyGoggles, - mdiSailBoat: mdiSailBoat, - mdiSale: mdiSale, - mdiSalesforce: mdiSalesforce, - mdiSass: mdiSass, - mdiSatellite: mdiSatellite, - mdiSatelliteUplink: mdiSatelliteUplink, - mdiSatelliteVariant: mdiSatelliteVariant, - mdiSausage: mdiSausage, - mdiSawBlade: mdiSawBlade, - mdiSawtoothWave: mdiSawtoothWave, - mdiSaxophone: mdiSaxophone, - mdiScale: mdiScale, - mdiScaleBalance: mdiScaleBalance, - mdiScaleBathroom: mdiScaleBathroom, - mdiScaleOff: mdiScaleOff, - mdiScanHelper: mdiScanHelper, - mdiScanner: mdiScanner, - mdiScannerOff: mdiScannerOff, - mdiScatterPlot: mdiScatterPlot, - mdiScatterPlotOutline: mdiScatterPlotOutline, - mdiSchool: mdiSchool, - mdiSchoolOutline: mdiSchoolOutline, - mdiScissorsCutting: mdiScissorsCutting, - mdiScooter: mdiScooter, - mdiScooterElectric: mdiScooterElectric, - mdiScoreboard: mdiScoreboard, - mdiScoreboardOutline: mdiScoreboardOutline, - mdiScreenRotation: mdiScreenRotation, - mdiScreenRotationLock: mdiScreenRotationLock, - mdiScrewFlatTop: mdiScrewFlatTop, - mdiScrewLag: mdiScrewLag, - mdiScrewMachineFlatTop: mdiScrewMachineFlatTop, - mdiScrewMachineRoundTop: mdiScrewMachineRoundTop, - mdiScrewRoundTop: mdiScrewRoundTop, - mdiScrewdriver: mdiScrewdriver, - mdiScript: mdiScript, - mdiScriptOutline: mdiScriptOutline, - mdiScriptText: mdiScriptText, - mdiScriptTextKey: mdiScriptTextKey, - mdiScriptTextKeyOutline: mdiScriptTextKeyOutline, - mdiScriptTextOutline: mdiScriptTextOutline, - mdiScriptTextPlay: mdiScriptTextPlay, - mdiScriptTextPlayOutline: mdiScriptTextPlayOutline, - mdiSd: mdiSd, - mdiSeal: mdiSeal, - mdiSealVariant: mdiSealVariant, - mdiSearchWeb: mdiSearchWeb, - mdiSeat: mdiSeat, - mdiSeatFlat: mdiSeatFlat, - mdiSeatFlatAngled: mdiSeatFlatAngled, - mdiSeatIndividualSuite: mdiSeatIndividualSuite, - mdiSeatLegroomExtra: mdiSeatLegroomExtra, - mdiSeatLegroomNormal: mdiSeatLegroomNormal, - mdiSeatLegroomReduced: mdiSeatLegroomReduced, - mdiSeatOutline: mdiSeatOutline, - mdiSeatPassenger: mdiSeatPassenger, - mdiSeatReclineExtra: mdiSeatReclineExtra, - mdiSeatReclineNormal: mdiSeatReclineNormal, - mdiSeatbelt: mdiSeatbelt, - mdiSecurity: mdiSecurity, - mdiSecurityNetwork: mdiSecurityNetwork, - mdiSeed: mdiSeed, - mdiSeedOff: mdiSeedOff, - mdiSeedOffOutline: mdiSeedOffOutline, - mdiSeedOutline: mdiSeedOutline, - mdiSeesaw: mdiSeesaw, - mdiSegment: mdiSegment, - mdiSelect: mdiSelect, - mdiSelectAll: mdiSelectAll, - mdiSelectColor: mdiSelectColor, - mdiSelectCompare: mdiSelectCompare, - mdiSelectDrag: mdiSelectDrag, - mdiSelectGroup: mdiSelectGroup, - mdiSelectInverse: mdiSelectInverse, - mdiSelectMarker: mdiSelectMarker, - mdiSelectMultiple: mdiSelectMultiple, - mdiSelectMultipleMarker: mdiSelectMultipleMarker, - mdiSelectOff: mdiSelectOff, - mdiSelectPlace: mdiSelectPlace, - mdiSelectSearch: mdiSelectSearch, - mdiSelection: mdiSelection, - mdiSelectionDrag: mdiSelectionDrag, - mdiSelectionEllipse: mdiSelectionEllipse, - mdiSelectionEllipseArrowInside: mdiSelectionEllipseArrowInside, - mdiSelectionMarker: mdiSelectionMarker, - mdiSelectionMultiple: mdiSelectionMultiple, - mdiSelectionMultipleMarker: mdiSelectionMultipleMarker, - mdiSelectionOff: mdiSelectionOff, - mdiSelectionSearch: mdiSelectionSearch, - mdiSemanticWeb: mdiSemanticWeb, - mdiSend: mdiSend, - mdiSendCheck: mdiSendCheck, - mdiSendCheckOutline: mdiSendCheckOutline, - mdiSendCircle: mdiSendCircle, - mdiSendCircleOutline: mdiSendCircleOutline, - mdiSendClock: mdiSendClock, - mdiSendClockOutline: mdiSendClockOutline, - mdiSendLock: mdiSendLock, - mdiSendLockOutline: mdiSendLockOutline, - mdiSendOutline: mdiSendOutline, - mdiSerialPort: mdiSerialPort, - mdiServer: mdiServer, - mdiServerMinus: mdiServerMinus, - mdiServerNetwork: mdiServerNetwork, - mdiServerNetworkOff: mdiServerNetworkOff, - mdiServerOff: mdiServerOff, - mdiServerPlus: mdiServerPlus, - mdiServerRemove: mdiServerRemove, - mdiServerSecurity: mdiServerSecurity, - mdiSetAll: mdiSetAll, - mdiSetCenter: mdiSetCenter, - mdiSetCenterRight: mdiSetCenterRight, - mdiSetLeft: mdiSetLeft, - mdiSetLeftCenter: mdiSetLeftCenter, - mdiSetLeftRight: mdiSetLeftRight, - mdiSetMerge: mdiSetMerge, - mdiSetNone: mdiSetNone, - mdiSetRight: mdiSetRight, - mdiSetSplit: mdiSetSplit, - mdiSetSquare: mdiSetSquare, - mdiSetTopBox: mdiSetTopBox, - mdiSettingsHelper: mdiSettingsHelper, - mdiShaker: mdiShaker, - mdiShakerOutline: mdiShakerOutline, - mdiShape: mdiShape, - mdiShapeCirclePlus: mdiShapeCirclePlus, - mdiShapeOutline: mdiShapeOutline, - mdiShapeOvalPlus: mdiShapeOvalPlus, - mdiShapePlus: mdiShapePlus, - mdiShapePolygonPlus: mdiShapePolygonPlus, - mdiShapeRectanglePlus: mdiShapeRectanglePlus, - mdiShapeSquarePlus: mdiShapeSquarePlus, - mdiShapeSquareRoundedPlus: mdiShapeSquareRoundedPlus, - mdiShare: mdiShare, - mdiShareAll: mdiShareAll, - mdiShareAllOutline: mdiShareAllOutline, - mdiShareCircle: mdiShareCircle, - mdiShareOff: mdiShareOff, - mdiShareOffOutline: mdiShareOffOutline, - mdiShareOutline: mdiShareOutline, - mdiShareVariant: mdiShareVariant, - mdiShareVariantOutline: mdiShareVariantOutline, - mdiSharkFin: mdiSharkFin, - mdiSharkFinOutline: mdiSharkFinOutline, - mdiSheep: mdiSheep, - mdiShield: mdiShield, - mdiShieldAccount: mdiShieldAccount, - mdiShieldAccountOutline: mdiShieldAccountOutline, - mdiShieldAccountVariant: mdiShieldAccountVariant, - mdiShieldAccountVariantOutline: mdiShieldAccountVariantOutline, - mdiShieldAirplane: mdiShieldAirplane, - mdiShieldAirplaneOutline: mdiShieldAirplaneOutline, - mdiShieldAlert: mdiShieldAlert, - mdiShieldAlertOutline: mdiShieldAlertOutline, - mdiShieldBug: mdiShieldBug, - mdiShieldBugOutline: mdiShieldBugOutline, - mdiShieldCar: mdiShieldCar, - mdiShieldCheck: mdiShieldCheck, - mdiShieldCheckOutline: mdiShieldCheckOutline, - mdiShieldCross: mdiShieldCross, - mdiShieldCrossOutline: mdiShieldCrossOutline, - mdiShieldEdit: mdiShieldEdit, - mdiShieldEditOutline: mdiShieldEditOutline, - mdiShieldHalf: mdiShieldHalf, - mdiShieldHalfFull: mdiShieldHalfFull, - mdiShieldHome: mdiShieldHome, - mdiShieldHomeOutline: mdiShieldHomeOutline, - mdiShieldKey: mdiShieldKey, - mdiShieldKeyOutline: mdiShieldKeyOutline, - mdiShieldLinkVariant: mdiShieldLinkVariant, - mdiShieldLinkVariantOutline: mdiShieldLinkVariantOutline, - mdiShieldLock: mdiShieldLock, - mdiShieldLockOutline: mdiShieldLockOutline, - mdiShieldOff: mdiShieldOff, - mdiShieldOffOutline: mdiShieldOffOutline, - mdiShieldOutline: mdiShieldOutline, - mdiShieldPlus: mdiShieldPlus, - mdiShieldPlusOutline: mdiShieldPlusOutline, - mdiShieldRefresh: mdiShieldRefresh, - mdiShieldRefreshOutline: mdiShieldRefreshOutline, - mdiShieldRemove: mdiShieldRemove, - mdiShieldRemoveOutline: mdiShieldRemoveOutline, - mdiShieldSearch: mdiShieldSearch, - mdiShieldStar: mdiShieldStar, - mdiShieldStarOutline: mdiShieldStarOutline, - mdiShieldSun: mdiShieldSun, - mdiShieldSunOutline: mdiShieldSunOutline, - mdiShieldSync: mdiShieldSync, - mdiShieldSyncOutline: mdiShieldSyncOutline, - mdiShipWheel: mdiShipWheel, - mdiShoeBallet: mdiShoeBallet, - mdiShoeCleat: mdiShoeCleat, - mdiShoeFormal: mdiShoeFormal, - mdiShoeHeel: mdiShoeHeel, - mdiShoePrint: mdiShoePrint, - mdiShoeSneaker: mdiShoeSneaker, - mdiShopping: mdiShopping, - mdiShoppingMusic: mdiShoppingMusic, - mdiShoppingOutline: mdiShoppingOutline, - mdiShoppingSearch: mdiShoppingSearch, - mdiShore: mdiShore, - mdiShovel: mdiShovel, - mdiShovelOff: mdiShovelOff, - mdiShower: mdiShower, - mdiShowerHead: mdiShowerHead, - mdiShredder: mdiShredder, - mdiShuffle: mdiShuffle, - mdiShuffleDisabled: mdiShuffleDisabled, - mdiShuffleVariant: mdiShuffleVariant, - mdiShuriken: mdiShuriken, - mdiSigma: mdiSigma, - mdiSigmaLower: mdiSigmaLower, - mdiSignCaution: mdiSignCaution, - mdiSignDirection: mdiSignDirection, - mdiSignDirectionMinus: mdiSignDirectionMinus, - mdiSignDirectionPlus: mdiSignDirectionPlus, - mdiSignDirectionRemove: mdiSignDirectionRemove, - mdiSignPole: mdiSignPole, - mdiSignRealEstate: mdiSignRealEstate, - mdiSignText: mdiSignText, - mdiSignal: mdiSignal, - mdiSignal2g: mdiSignal2g, - mdiSignal3g: mdiSignal3g, - mdiSignal4g: mdiSignal4g, - mdiSignal5g: mdiSignal5g, - mdiSignalCellular1: mdiSignalCellular1, - mdiSignalCellular2: mdiSignalCellular2, - mdiSignalCellular3: mdiSignalCellular3, - mdiSignalCellularOutline: mdiSignalCellularOutline, - mdiSignalDistanceVariant: mdiSignalDistanceVariant, - mdiSignalHspa: mdiSignalHspa, - mdiSignalHspaPlus: mdiSignalHspaPlus, - mdiSignalOff: mdiSignalOff, - mdiSignalVariant: mdiSignalVariant, - mdiSignature: mdiSignature, - mdiSignatureFreehand: mdiSignatureFreehand, - mdiSignatureImage: mdiSignatureImage, - mdiSignatureText: mdiSignatureText, - mdiSilo: mdiSilo, - mdiSilverware: mdiSilverware, - mdiSilverwareClean: mdiSilverwareClean, - mdiSilverwareFork: mdiSilverwareFork, - mdiSilverwareForkKnife: mdiSilverwareForkKnife, - mdiSilverwareSpoon: mdiSilverwareSpoon, - mdiSilverwareVariant: mdiSilverwareVariant, - mdiSim: mdiSim, - mdiSimAlert: mdiSimAlert, - mdiSimAlertOutline: mdiSimAlertOutline, - mdiSimOff: mdiSimOff, - mdiSimOffOutline: mdiSimOffOutline, - mdiSimOutline: mdiSimOutline, - mdiSimpleIcons: mdiSimpleIcons, - mdiSinaWeibo: mdiSinaWeibo, - mdiSineWave: mdiSineWave, - mdiSitemap: mdiSitemap, - mdiSizeL: mdiSizeL, - mdiSizeM: mdiSizeM, - mdiSizeS: mdiSizeS, - mdiSizeXl: mdiSizeXl, - mdiSizeXs: mdiSizeXs, - mdiSizeXxl: mdiSizeXxl, - mdiSizeXxs: mdiSizeXxs, - mdiSizeXxxl: mdiSizeXxxl, - mdiSkate: mdiSkate, - mdiSkateboard: mdiSkateboard, - mdiSkewLess: mdiSkewLess, - mdiSkewMore: mdiSkewMore, - mdiSki: mdiSki, - mdiSkiCrossCountry: mdiSkiCrossCountry, - mdiSkiWater: mdiSkiWater, - mdiSkipBackward: mdiSkipBackward, - mdiSkipBackwardOutline: mdiSkipBackwardOutline, - mdiSkipForward: mdiSkipForward, - mdiSkipForwardOutline: mdiSkipForwardOutline, - mdiSkipNext: mdiSkipNext, - mdiSkipNextCircle: mdiSkipNextCircle, - mdiSkipNextCircleOutline: mdiSkipNextCircleOutline, - mdiSkipNextOutline: mdiSkipNextOutline, - mdiSkipPrevious: mdiSkipPrevious, - mdiSkipPreviousCircle: mdiSkipPreviousCircle, - mdiSkipPreviousCircleOutline: mdiSkipPreviousCircleOutline, - mdiSkipPreviousOutline: mdiSkipPreviousOutline, - mdiSkull: mdiSkull, - mdiSkullCrossbones: mdiSkullCrossbones, - mdiSkullCrossbonesOutline: mdiSkullCrossbonesOutline, - mdiSkullOutline: mdiSkullOutline, - mdiSkullScan: mdiSkullScan, - mdiSkullScanOutline: mdiSkullScanOutline, - mdiSkype: mdiSkype, - mdiSkypeBusiness: mdiSkypeBusiness, - mdiSlack: mdiSlack, - mdiSlashForward: mdiSlashForward, - mdiSlashForwardBox: mdiSlashForwardBox, - mdiSleep: mdiSleep, - mdiSleepOff: mdiSleepOff, - mdiSlide: mdiSlide, - mdiSlopeDownhill: mdiSlopeDownhill, - mdiSlopeUphill: mdiSlopeUphill, - mdiSlotMachine: mdiSlotMachine, - mdiSlotMachineOutline: mdiSlotMachineOutline, - mdiSmartCard: mdiSmartCard, - mdiSmartCardOutline: mdiSmartCardOutline, - mdiSmartCardReader: mdiSmartCardReader, - mdiSmartCardReaderOutline: mdiSmartCardReaderOutline, - mdiSmog: mdiSmog, - mdiSmokeDetector: mdiSmokeDetector, - mdiSmoking: mdiSmoking, - mdiSmokingOff: mdiSmokingOff, - mdiSmokingPipe: mdiSmokingPipe, - mdiSmokingPipeOff: mdiSmokingPipeOff, - mdiSnail: mdiSnail, - mdiSnake: mdiSnake, - mdiSnapchat: mdiSnapchat, - mdiSnowboard: mdiSnowboard, - mdiSnowflake: mdiSnowflake, - mdiSnowflakeAlert: mdiSnowflakeAlert, - mdiSnowflakeMelt: mdiSnowflakeMelt, - mdiSnowflakeOff: mdiSnowflakeOff, - mdiSnowflakeVariant: mdiSnowflakeVariant, - mdiSnowman: mdiSnowman, - mdiSoccer: mdiSoccer, - mdiSoccerField: mdiSoccerField, - mdiSocialDistance2Meters: mdiSocialDistance2Meters, - mdiSocialDistance6Feet: mdiSocialDistance6Feet, - mdiSofa: mdiSofa, - mdiSofaOutline: mdiSofaOutline, - mdiSofaSingle: mdiSofaSingle, - mdiSofaSingleOutline: mdiSofaSingleOutline, - mdiSolarPanel: mdiSolarPanel, - mdiSolarPanelLarge: mdiSolarPanelLarge, - mdiSolarPower: mdiSolarPower, - mdiSolderingIron: mdiSolderingIron, - mdiSolid: mdiSolid, - mdiSonyPlaystation: mdiSonyPlaystation, - mdiSort: mdiSort, - mdiSortAlphabeticalAscending: mdiSortAlphabeticalAscending, - mdiSortAlphabeticalAscendingVariant: mdiSortAlphabeticalAscendingVariant, - mdiSortAlphabeticalDescending: mdiSortAlphabeticalDescending, - mdiSortAlphabeticalDescendingVariant: mdiSortAlphabeticalDescendingVariant, - mdiSortAlphabeticalVariant: mdiSortAlphabeticalVariant, - mdiSortAscending: mdiSortAscending, - mdiSortBoolAscending: mdiSortBoolAscending, - mdiSortBoolAscendingVariant: mdiSortBoolAscendingVariant, - mdiSortBoolDescending: mdiSortBoolDescending, - mdiSortBoolDescendingVariant: mdiSortBoolDescendingVariant, - mdiSortCalendarAscending: mdiSortCalendarAscending, - mdiSortCalendarDescending: mdiSortCalendarDescending, - mdiSortClockAscending: mdiSortClockAscending, - mdiSortClockAscendingOutline: mdiSortClockAscendingOutline, - mdiSortClockDescending: mdiSortClockDescending, - mdiSortClockDescendingOutline: mdiSortClockDescendingOutline, - mdiSortDescending: mdiSortDescending, - mdiSortNumericAscending: mdiSortNumericAscending, - mdiSortNumericAscendingVariant: mdiSortNumericAscendingVariant, - mdiSortNumericDescending: mdiSortNumericDescending, - mdiSortNumericDescendingVariant: mdiSortNumericDescendingVariant, - mdiSortNumericVariant: mdiSortNumericVariant, - mdiSortReverseVariant: mdiSortReverseVariant, - mdiSortVariant: mdiSortVariant, - mdiSortVariantLock: mdiSortVariantLock, - mdiSortVariantLockOpen: mdiSortVariantLockOpen, - mdiSortVariantRemove: mdiSortVariantRemove, - mdiSoundcloud: mdiSoundcloud, - mdiSourceBranch: mdiSourceBranch, - mdiSourceBranchCheck: mdiSourceBranchCheck, - mdiSourceBranchMinus: mdiSourceBranchMinus, - mdiSourceBranchPlus: mdiSourceBranchPlus, - mdiSourceBranchRefresh: mdiSourceBranchRefresh, - mdiSourceBranchRemove: mdiSourceBranchRemove, - mdiSourceBranchSync: mdiSourceBranchSync, - mdiSourceCommit: mdiSourceCommit, - mdiSourceCommitEnd: mdiSourceCommitEnd, - mdiSourceCommitEndLocal: mdiSourceCommitEndLocal, - mdiSourceCommitLocal: mdiSourceCommitLocal, - mdiSourceCommitNextLocal: mdiSourceCommitNextLocal, - mdiSourceCommitStart: mdiSourceCommitStart, - mdiSourceCommitStartNextLocal: mdiSourceCommitStartNextLocal, - mdiSourceFork: mdiSourceFork, - mdiSourceMerge: mdiSourceMerge, - mdiSourcePull: mdiSourcePull, - mdiSourceRepository: mdiSourceRepository, - mdiSourceRepositoryMultiple: mdiSourceRepositoryMultiple, - mdiSoySauce: mdiSoySauce, - mdiSoySauceOff: mdiSoySauceOff, - mdiSpa: mdiSpa, - mdiSpaOutline: mdiSpaOutline, - mdiSpaceInvaders: mdiSpaceInvaders, - mdiSpaceStation: mdiSpaceStation, - mdiSpade: mdiSpade, - mdiSparkles: mdiSparkles, - mdiSpeaker: mdiSpeaker, - mdiSpeakerBluetooth: mdiSpeakerBluetooth, - mdiSpeakerMultiple: mdiSpeakerMultiple, - mdiSpeakerOff: mdiSpeakerOff, - mdiSpeakerWireless: mdiSpeakerWireless, - mdiSpeedometer: mdiSpeedometer, - mdiSpeedometerMedium: mdiSpeedometerMedium, - mdiSpeedometerSlow: mdiSpeedometerSlow, - mdiSpellcheck: mdiSpellcheck, - mdiSpider: mdiSpider, - mdiSpiderThread: mdiSpiderThread, - mdiSpiderWeb: mdiSpiderWeb, - mdiSpiritLevel: mdiSpiritLevel, - mdiSpoonSugar: mdiSpoonSugar, - mdiSpotify: mdiSpotify, - mdiSpotlight: mdiSpotlight, - mdiSpotlightBeam: mdiSpotlightBeam, - mdiSpray: mdiSpray, - mdiSprayBottle: mdiSprayBottle, - mdiSprinkler: mdiSprinkler, - mdiSprinklerVariant: mdiSprinklerVariant, - mdiSprout: mdiSprout, - mdiSproutOutline: mdiSproutOutline, - mdiSquare: mdiSquare, - mdiSquareCircle: mdiSquareCircle, - mdiSquareEditOutline: mdiSquareEditOutline, - mdiSquareMedium: mdiSquareMedium, - mdiSquareMediumOutline: mdiSquareMediumOutline, - mdiSquareOff: mdiSquareOff, - mdiSquareOffOutline: mdiSquareOffOutline, - mdiSquareOutline: mdiSquareOutline, - mdiSquareRoot: mdiSquareRoot, - mdiSquareRootBox: mdiSquareRootBox, - mdiSquareRounded: mdiSquareRounded, - mdiSquareRoundedOutline: mdiSquareRoundedOutline, - mdiSquareSmall: mdiSquareSmall, - mdiSquareWave: mdiSquareWave, - mdiSqueegee: mdiSqueegee, - mdiSsh: mdiSsh, - mdiStackExchange: mdiStackExchange, - mdiStackOverflow: mdiStackOverflow, - mdiStackpath: mdiStackpath, - mdiStadium: mdiStadium, - mdiStadiumVariant: mdiStadiumVariant, - mdiStairs: mdiStairs, - mdiStairsBox: mdiStairsBox, - mdiStairsDown: mdiStairsDown, - mdiStairsUp: mdiStairsUp, - mdiStamper: mdiStamper, - mdiStandardDefinition: mdiStandardDefinition, - mdiStar: mdiStar, - mdiStarBox: mdiStarBox, - mdiStarBoxMultiple: mdiStarBoxMultiple, - mdiStarBoxMultipleOutline: mdiStarBoxMultipleOutline, - mdiStarBoxOutline: mdiStarBoxOutline, - mdiStarCheck: mdiStarCheck, - mdiStarCheckOutline: mdiStarCheckOutline, - mdiStarCircle: mdiStarCircle, - mdiStarCircleOutline: mdiStarCircleOutline, - mdiStarCog: mdiStarCog, - mdiStarCogOutline: mdiStarCogOutline, - mdiStarFace: mdiStarFace, - mdiStarFourPoints: mdiStarFourPoints, - mdiStarFourPointsOutline: mdiStarFourPointsOutline, - mdiStarHalf: mdiStarHalf, - mdiStarHalfFull: mdiStarHalfFull, - mdiStarMinus: mdiStarMinus, - mdiStarMinusOutline: mdiStarMinusOutline, - mdiStarOff: mdiStarOff, - mdiStarOffOutline: mdiStarOffOutline, - mdiStarOutline: mdiStarOutline, - mdiStarPlus: mdiStarPlus, - mdiStarPlusOutline: mdiStarPlusOutline, - mdiStarRemove: mdiStarRemove, - mdiStarRemoveOutline: mdiStarRemoveOutline, - mdiStarSettings: mdiStarSettings, - mdiStarSettingsOutline: mdiStarSettingsOutline, - mdiStarShooting: mdiStarShooting, - mdiStarShootingOutline: mdiStarShootingOutline, - mdiStarThreePoints: mdiStarThreePoints, - mdiStarThreePointsOutline: mdiStarThreePointsOutline, - mdiStateMachine: mdiStateMachine, - mdiSteam: mdiSteam, - mdiSteering: mdiSteering, - mdiSteeringOff: mdiSteeringOff, - mdiStepBackward: mdiStepBackward, - mdiStepBackward2: mdiStepBackward2, - mdiStepForward: mdiStepForward, - mdiStepForward2: mdiStepForward2, - mdiStethoscope: mdiStethoscope, - mdiSticker: mdiSticker, - mdiStickerAlert: mdiStickerAlert, - mdiStickerAlertOutline: mdiStickerAlertOutline, - mdiStickerCheck: mdiStickerCheck, - mdiStickerCheckOutline: mdiStickerCheckOutline, - mdiStickerCircleOutline: mdiStickerCircleOutline, - mdiStickerEmoji: mdiStickerEmoji, - mdiStickerMinus: mdiStickerMinus, - mdiStickerMinusOutline: mdiStickerMinusOutline, - mdiStickerOutline: mdiStickerOutline, - mdiStickerPlus: mdiStickerPlus, - mdiStickerPlusOutline: mdiStickerPlusOutline, - mdiStickerRemove: mdiStickerRemove, - mdiStickerRemoveOutline: mdiStickerRemoveOutline, - mdiStocking: mdiStocking, - mdiStomach: mdiStomach, - mdiStop: mdiStop, - mdiStopCircle: mdiStopCircle, - mdiStopCircleOutline: mdiStopCircleOutline, - mdiStore: mdiStore, - mdiStore24Hour: mdiStore24Hour, - mdiStoreMinus: mdiStoreMinus, - mdiStoreOutline: mdiStoreOutline, - mdiStorePlus: mdiStorePlus, - mdiStoreRemove: mdiStoreRemove, - mdiStorefront: mdiStorefront, - mdiStorefrontOutline: mdiStorefrontOutline, - mdiStove: mdiStove, - mdiStrategy: mdiStrategy, - mdiStretchToPage: mdiStretchToPage, - mdiStretchToPageOutline: mdiStretchToPageOutline, - mdiStringLights: mdiStringLights, - mdiStringLightsOff: mdiStringLightsOff, - mdiSubdirectoryArrowLeft: mdiSubdirectoryArrowLeft, - mdiSubdirectoryArrowRight: mdiSubdirectoryArrowRight, - mdiSubmarine: mdiSubmarine, - mdiSubtitles: mdiSubtitles, - mdiSubtitlesOutline: mdiSubtitlesOutline, - mdiSubway: mdiSubway, - mdiSubwayAlertVariant: mdiSubwayAlertVariant, - mdiSubwayVariant: mdiSubwayVariant, - mdiSummit: mdiSummit, - mdiSunglasses: mdiSunglasses, - mdiSurroundSound: mdiSurroundSound, - mdiSurroundSound20: mdiSurroundSound20, - mdiSurroundSound21: mdiSurroundSound21, - mdiSurroundSound31: mdiSurroundSound31, - mdiSurroundSound51: mdiSurroundSound51, - mdiSurroundSound512: mdiSurroundSound512, - mdiSurroundSound71: mdiSurroundSound71, - mdiSvg: mdiSvg, - mdiSwapHorizontal: mdiSwapHorizontal, - mdiSwapHorizontalBold: mdiSwapHorizontalBold, - mdiSwapHorizontalCircle: mdiSwapHorizontalCircle, - mdiSwapHorizontalCircleOutline: mdiSwapHorizontalCircleOutline, - mdiSwapHorizontalVariant: mdiSwapHorizontalVariant, - mdiSwapVertical: mdiSwapVertical, - mdiSwapVerticalBold: mdiSwapVerticalBold, - mdiSwapVerticalCircle: mdiSwapVerticalCircle, - mdiSwapVerticalCircleOutline: mdiSwapVerticalCircleOutline, - mdiSwapVerticalVariant: mdiSwapVerticalVariant, - mdiSwim: mdiSwim, - mdiSwitch: mdiSwitch, - mdiSword: mdiSword, - mdiSwordCross: mdiSwordCross, - mdiSyllabaryHangul: mdiSyllabaryHangul, - mdiSyllabaryHiragana: mdiSyllabaryHiragana, - mdiSyllabaryKatakana: mdiSyllabaryKatakana, - mdiSyllabaryKatakanaHalfwidth: mdiSyllabaryKatakanaHalfwidth, - mdiSymbol: mdiSymbol, - mdiSymfony: mdiSymfony, - mdiSync: mdiSync, - mdiSyncAlert: mdiSyncAlert, - mdiSyncCircle: mdiSyncCircle, - mdiSyncOff: mdiSyncOff, - mdiTab: mdiTab, - mdiTabMinus: mdiTabMinus, - mdiTabPlus: mdiTabPlus, - mdiTabRemove: mdiTabRemove, - mdiTabUnselected: mdiTabUnselected, - mdiTable: mdiTable, - mdiTableAccount: mdiTableAccount, - mdiTableAlert: mdiTableAlert, - mdiTableArrowDown: mdiTableArrowDown, - mdiTableArrowLeft: mdiTableArrowLeft, - mdiTableArrowRight: mdiTableArrowRight, - mdiTableArrowUp: mdiTableArrowUp, - mdiTableBorder: mdiTableBorder, - mdiTableCancel: mdiTableCancel, - mdiTableChair: mdiTableChair, - mdiTableCheck: mdiTableCheck, - mdiTableClock: mdiTableClock, - mdiTableCog: mdiTableCog, - mdiTableColumn: mdiTableColumn, - mdiTableColumnPlusAfter: mdiTableColumnPlusAfter, - mdiTableColumnPlusBefore: mdiTableColumnPlusBefore, - mdiTableColumnRemove: mdiTableColumnRemove, - mdiTableColumnWidth: mdiTableColumnWidth, - mdiTableEdit: mdiTableEdit, - mdiTableEye: mdiTableEye, - mdiTableEyeOff: mdiTableEyeOff, - mdiTableFurniture: mdiTableFurniture, - mdiTableHeadersEye: mdiTableHeadersEye, - mdiTableHeadersEyeOff: mdiTableHeadersEyeOff, - mdiTableHeart: mdiTableHeart, - mdiTableKey: mdiTableKey, - mdiTableLarge: mdiTableLarge, - mdiTableLargePlus: mdiTableLargePlus, - mdiTableLargeRemove: mdiTableLargeRemove, - mdiTableLock: mdiTableLock, - mdiTableMergeCells: mdiTableMergeCells, - mdiTableMinus: mdiTableMinus, - mdiTableMultiple: mdiTableMultiple, - mdiTableNetwork: mdiTableNetwork, - mdiTableOfContents: mdiTableOfContents, - mdiTableOff: mdiTableOff, - mdiTablePicnic: mdiTablePicnic, - mdiTablePlus: mdiTablePlus, - mdiTableRefresh: mdiTableRefresh, - mdiTableRemove: mdiTableRemove, - mdiTableRow: mdiTableRow, - mdiTableRowHeight: mdiTableRowHeight, - mdiTableRowPlusAfter: mdiTableRowPlusAfter, - mdiTableRowPlusBefore: mdiTableRowPlusBefore, - mdiTableRowRemove: mdiTableRowRemove, - mdiTableSearch: mdiTableSearch, - mdiTableSettings: mdiTableSettings, - mdiTableSplitCell: mdiTableSplitCell, - mdiTableStar: mdiTableStar, - mdiTableSync: mdiTableSync, - mdiTableTennis: mdiTableTennis, - mdiTablet: mdiTablet, - mdiTabletAndroid: mdiTabletAndroid, - mdiTabletCellphone: mdiTabletCellphone, - mdiTabletDashboard: mdiTabletDashboard, - mdiTabletIpad: mdiTabletIpad, - mdiTaco: mdiTaco, - mdiTag: mdiTag, - mdiTagArrowDown: mdiTagArrowDown, - mdiTagArrowDownOutline: mdiTagArrowDownOutline, - mdiTagArrowLeft: mdiTagArrowLeft, - mdiTagArrowLeftOutline: mdiTagArrowLeftOutline, - mdiTagArrowRight: mdiTagArrowRight, - mdiTagArrowRightOutline: mdiTagArrowRightOutline, - mdiTagArrowUp: mdiTagArrowUp, - mdiTagArrowUpOutline: mdiTagArrowUpOutline, - mdiTagFaces: mdiTagFaces, - mdiTagHeart: mdiTagHeart, - mdiTagHeartOutline: mdiTagHeartOutline, - mdiTagMinus: mdiTagMinus, - mdiTagMinusOutline: mdiTagMinusOutline, - mdiTagMultiple: mdiTagMultiple, - mdiTagMultipleOutline: mdiTagMultipleOutline, - mdiTagOff: mdiTagOff, - mdiTagOffOutline: mdiTagOffOutline, - mdiTagOutline: mdiTagOutline, - mdiTagPlus: mdiTagPlus, - mdiTagPlusOutline: mdiTagPlusOutline, - mdiTagRemove: mdiTagRemove, - mdiTagRemoveOutline: mdiTagRemoveOutline, - mdiTagText: mdiTagText, - mdiTagTextOutline: mdiTagTextOutline, - mdiTailwind: mdiTailwind, - mdiTank: mdiTank, - mdiTankerTruck: mdiTankerTruck, - mdiTapeDrive: mdiTapeDrive, - mdiTapeMeasure: mdiTapeMeasure, - mdiTarget: mdiTarget, - mdiTargetAccount: mdiTargetAccount, - mdiTargetVariant: mdiTargetVariant, - mdiTaxi: mdiTaxi, - mdiTea: mdiTea, - mdiTeaOutline: mdiTeaOutline, - mdiTeach: mdiTeach, - mdiTeamviewer: mdiTeamviewer, - mdiTelegram: mdiTelegram, - mdiTelescope: mdiTelescope, - mdiTelevision: mdiTelevision, - mdiTelevisionAmbientLight: mdiTelevisionAmbientLight, - mdiTelevisionBox: mdiTelevisionBox, - mdiTelevisionClassic: mdiTelevisionClassic, - mdiTelevisionClassicOff: mdiTelevisionClassicOff, - mdiTelevisionClean: mdiTelevisionClean, - mdiTelevisionGuide: mdiTelevisionGuide, - mdiTelevisionOff: mdiTelevisionOff, - mdiTelevisionPause: mdiTelevisionPause, - mdiTelevisionPlay: mdiTelevisionPlay, - mdiTelevisionStop: mdiTelevisionStop, - mdiTemperatureCelsius: mdiTemperatureCelsius, - mdiTemperatureFahrenheit: mdiTemperatureFahrenheit, - mdiTemperatureKelvin: mdiTemperatureKelvin, - mdiTennis: mdiTennis, - mdiTennisBall: mdiTennisBall, - mdiTent: mdiTent, - mdiTerraform: mdiTerraform, - mdiTerrain: mdiTerrain, - mdiTestTube: mdiTestTube, - mdiTestTubeEmpty: mdiTestTubeEmpty, - mdiTestTubeOff: mdiTestTubeOff, - mdiText: mdiText, - mdiTextAccount: mdiTextAccount, - mdiTextBox: mdiTextBox, - mdiTextBoxCheck: mdiTextBoxCheck, - mdiTextBoxCheckOutline: mdiTextBoxCheckOutline, - mdiTextBoxMinus: mdiTextBoxMinus, - mdiTextBoxMinusOutline: mdiTextBoxMinusOutline, - mdiTextBoxMultiple: mdiTextBoxMultiple, - mdiTextBoxMultipleOutline: mdiTextBoxMultipleOutline, - mdiTextBoxOutline: mdiTextBoxOutline, - mdiTextBoxPlus: mdiTextBoxPlus, - mdiTextBoxPlusOutline: mdiTextBoxPlusOutline, - mdiTextBoxRemove: mdiTextBoxRemove, - mdiTextBoxRemoveOutline: mdiTextBoxRemoveOutline, - mdiTextBoxSearch: mdiTextBoxSearch, - mdiTextBoxSearchOutline: mdiTextBoxSearchOutline, - mdiTextRecognition: mdiTextRecognition, - mdiTextSearch: mdiTextSearch, - mdiTextShadow: mdiTextShadow, - mdiTextShort: mdiTextShort, - mdiTextSubject: mdiTextSubject, - mdiTextToSpeech: mdiTextToSpeech, - mdiTextToSpeechOff: mdiTextToSpeechOff, - mdiTexture: mdiTexture, - mdiTextureBox: mdiTextureBox, - mdiTheater: mdiTheater, - mdiThemeLightDark: mdiThemeLightDark, - mdiThermometer: mdiThermometer, - mdiThermometerAlert: mdiThermometerAlert, - mdiThermometerChevronDown: mdiThermometerChevronDown, - mdiThermometerChevronUp: mdiThermometerChevronUp, - mdiThermometerHigh: mdiThermometerHigh, - mdiThermometerLines: mdiThermometerLines, - mdiThermometerLow: mdiThermometerLow, - mdiThermometerMinus: mdiThermometerMinus, - mdiThermometerOff: mdiThermometerOff, - mdiThermometerPlus: mdiThermometerPlus, - mdiThermostat: mdiThermostat, - mdiThermostatBox: mdiThermostatBox, - mdiThoughtBubble: mdiThoughtBubble, - mdiThoughtBubbleOutline: mdiThoughtBubbleOutline, - mdiThumbDown: mdiThumbDown, - mdiThumbDownOutline: mdiThumbDownOutline, - mdiThumbUp: mdiThumbUp, - mdiThumbUpOutline: mdiThumbUpOutline, - mdiThumbsUpDown: mdiThumbsUpDown, - mdiTicket: mdiTicket, - mdiTicketAccount: mdiTicketAccount, - mdiTicketConfirmation: mdiTicketConfirmation, - mdiTicketConfirmationOutline: mdiTicketConfirmationOutline, - mdiTicketOutline: mdiTicketOutline, - mdiTicketPercent: mdiTicketPercent, - mdiTicketPercentOutline: mdiTicketPercentOutline, - mdiTie: mdiTie, - mdiTilde: mdiTilde, - mdiTimelapse: mdiTimelapse, - mdiTimeline: mdiTimeline, - mdiTimelineAlert: mdiTimelineAlert, - mdiTimelineAlertOutline: mdiTimelineAlertOutline, - mdiTimelineCheck: mdiTimelineCheck, - mdiTimelineCheckOutline: mdiTimelineCheckOutline, - mdiTimelineClock: mdiTimelineClock, - mdiTimelineClockOutline: mdiTimelineClockOutline, - mdiTimelineHelp: mdiTimelineHelp, - mdiTimelineHelpOutline: mdiTimelineHelpOutline, - mdiTimelineMinus: mdiTimelineMinus, - mdiTimelineMinusOutline: mdiTimelineMinusOutline, - mdiTimelineOutline: mdiTimelineOutline, - mdiTimelinePlus: mdiTimelinePlus, - mdiTimelinePlusOutline: mdiTimelinePlusOutline, - mdiTimelineRemove: mdiTimelineRemove, - mdiTimelineRemoveOutline: mdiTimelineRemoveOutline, - mdiTimelineText: mdiTimelineText, - mdiTimelineTextOutline: mdiTimelineTextOutline, - mdiTimer: mdiTimer, - mdiTimer10: mdiTimer10, - mdiTimer3: mdiTimer3, - mdiTimerOff: mdiTimerOff, - mdiTimerOffOutline: mdiTimerOffOutline, - mdiTimerOutline: mdiTimerOutline, - mdiTimerSand: mdiTimerSand, - mdiTimerSandEmpty: mdiTimerSandEmpty, - mdiTimerSandFull: mdiTimerSandFull, - mdiTimetable: mdiTimetable, - mdiToaster: mdiToaster, - mdiToasterOff: mdiToasterOff, - mdiToasterOven: mdiToasterOven, - mdiToggleSwitch: mdiToggleSwitch, - mdiToggleSwitchOff: mdiToggleSwitchOff, - mdiToggleSwitchOffOutline: mdiToggleSwitchOffOutline, - mdiToggleSwitchOutline: mdiToggleSwitchOutline, - mdiToilet: mdiToilet, - mdiToolbox: mdiToolbox, - mdiToolboxOutline: mdiToolboxOutline, - mdiTools: mdiTools, - mdiTooltip: mdiTooltip, - mdiTooltipAccount: mdiTooltipAccount, - mdiTooltipCheck: mdiTooltipCheck, - mdiTooltipCheckOutline: mdiTooltipCheckOutline, - mdiTooltipEdit: mdiTooltipEdit, - mdiTooltipEditOutline: mdiTooltipEditOutline, - mdiTooltipImage: mdiTooltipImage, - mdiTooltipImageOutline: mdiTooltipImageOutline, - mdiTooltipMinus: mdiTooltipMinus, - mdiTooltipMinusOutline: mdiTooltipMinusOutline, - mdiTooltipOutline: mdiTooltipOutline, - mdiTooltipPlus: mdiTooltipPlus, - mdiTooltipPlusOutline: mdiTooltipPlusOutline, - mdiTooltipRemove: mdiTooltipRemove, - mdiTooltipRemoveOutline: mdiTooltipRemoveOutline, - mdiTooltipText: mdiTooltipText, - mdiTooltipTextOutline: mdiTooltipTextOutline, - mdiTooth: mdiTooth, - mdiToothOutline: mdiToothOutline, - mdiToothbrush: mdiToothbrush, - mdiToothbrushElectric: mdiToothbrushElectric, - mdiToothbrushPaste: mdiToothbrushPaste, - mdiTorch: mdiTorch, - mdiTortoise: mdiTortoise, - mdiToslink: mdiToslink, - mdiTournament: mdiTournament, - mdiTowTruck: mdiTowTruck, - mdiTowerBeach: mdiTowerBeach, - mdiTowerFire: mdiTowerFire, - mdiToyBrick: mdiToyBrick, - mdiToyBrickMarker: mdiToyBrickMarker, - mdiToyBrickMarkerOutline: mdiToyBrickMarkerOutline, - mdiToyBrickMinus: mdiToyBrickMinus, - mdiToyBrickMinusOutline: mdiToyBrickMinusOutline, - mdiToyBrickOutline: mdiToyBrickOutline, - mdiToyBrickPlus: mdiToyBrickPlus, - mdiToyBrickPlusOutline: mdiToyBrickPlusOutline, - mdiToyBrickRemove: mdiToyBrickRemove, - mdiToyBrickRemoveOutline: mdiToyBrickRemoveOutline, - mdiToyBrickSearch: mdiToyBrickSearch, - mdiToyBrickSearchOutline: mdiToyBrickSearchOutline, - mdiTrackLight: mdiTrackLight, - mdiTrackpad: mdiTrackpad, - mdiTrackpadLock: mdiTrackpadLock, - mdiTractor: mdiTractor, - mdiTractorVariant: mdiTractorVariant, - mdiTrademark: mdiTrademark, - mdiTrafficCone: mdiTrafficCone, - mdiTrafficLight: mdiTrafficLight, - mdiTrain: mdiTrain, - mdiTrainCar: mdiTrainCar, - mdiTrainCarPassenger: mdiTrainCarPassenger, - mdiTrainCarPassengerDoor: mdiTrainCarPassengerDoor, - mdiTrainCarPassengerDoorOpen: mdiTrainCarPassengerDoorOpen, - mdiTrainCarPassengerVariant: mdiTrainCarPassengerVariant, - mdiTrainVariant: mdiTrainVariant, - mdiTram: mdiTram, - mdiTramSide: mdiTramSide, - mdiTranscribe: mdiTranscribe, - mdiTranscribeClose: mdiTranscribeClose, - mdiTransfer: mdiTransfer, - mdiTransferDown: mdiTransferDown, - mdiTransferLeft: mdiTransferLeft, - mdiTransferRight: mdiTransferRight, - mdiTransferUp: mdiTransferUp, - mdiTransitConnection: mdiTransitConnection, - mdiTransitConnectionHorizontal: mdiTransitConnectionHorizontal, - mdiTransitConnectionVariant: mdiTransitConnectionVariant, - mdiTransitDetour: mdiTransitDetour, - mdiTransitSkip: mdiTransitSkip, - mdiTransitTransfer: mdiTransitTransfer, - mdiTransition: mdiTransition, - mdiTransitionMasked: mdiTransitionMasked, - mdiTranslate: mdiTranslate, - mdiTranslateOff: mdiTranslateOff, - mdiTransmissionTower: mdiTransmissionTower, - mdiTrashCan: mdiTrashCan, - mdiTrashCanOutline: mdiTrashCanOutline, - mdiTray: mdiTray, - mdiTrayAlert: mdiTrayAlert, - mdiTrayFull: mdiTrayFull, - mdiTrayMinus: mdiTrayMinus, - mdiTrayPlus: mdiTrayPlus, - mdiTrayRemove: mdiTrayRemove, - mdiTreasureChest: mdiTreasureChest, - mdiTree: mdiTree, - mdiTreeOutline: mdiTreeOutline, - mdiTrello: mdiTrello, - mdiTrendingDown: mdiTrendingDown, - mdiTrendingNeutral: mdiTrendingNeutral, - mdiTrendingUp: mdiTrendingUp, - mdiTriangle: mdiTriangle, - mdiTriangleOutline: mdiTriangleOutline, - mdiTriangleWave: mdiTriangleWave, - mdiTriforce: mdiTriforce, - mdiTrophy: mdiTrophy, - mdiTrophyAward: mdiTrophyAward, - mdiTrophyBroken: mdiTrophyBroken, - mdiTrophyOutline: mdiTrophyOutline, - mdiTrophyVariant: mdiTrophyVariant, - mdiTrophyVariantOutline: mdiTrophyVariantOutline, - mdiTruck: mdiTruck, - mdiTruckCheck: mdiTruckCheck, - mdiTruckCheckOutline: mdiTruckCheckOutline, - mdiTruckDelivery: mdiTruckDelivery, - mdiTruckDeliveryOutline: mdiTruckDeliveryOutline, - mdiTruckFast: mdiTruckFast, - mdiTruckFastOutline: mdiTruckFastOutline, - mdiTruckOutline: mdiTruckOutline, - mdiTruckTrailer: mdiTruckTrailer, - mdiTrumpet: mdiTrumpet, - mdiTshirtCrew: mdiTshirtCrew, - mdiTshirtCrewOutline: mdiTshirtCrewOutline, - mdiTshirtV: mdiTshirtV, - mdiTshirtVOutline: mdiTshirtVOutline, - mdiTumbleDryer: mdiTumbleDryer, - mdiTumbleDryerAlert: mdiTumbleDryerAlert, - mdiTumbleDryerOff: mdiTumbleDryerOff, - mdiTune: mdiTune, - mdiTuneVariant: mdiTuneVariant, - mdiTuneVertical: mdiTuneVertical, - mdiTuneVerticalVariant: mdiTuneVerticalVariant, - mdiTurkey: mdiTurkey, - mdiTurnstile: mdiTurnstile, - mdiTurnstileOutline: mdiTurnstileOutline, - mdiTurtle: mdiTurtle, - mdiTwitch: mdiTwitch, - mdiTwitter: mdiTwitter, - mdiTwitterRetweet: mdiTwitterRetweet, - mdiTwoFactorAuthentication: mdiTwoFactorAuthentication, - mdiTypewriter: mdiTypewriter, - mdiUbisoft: mdiUbisoft, - mdiUbuntu: mdiUbuntu, - mdiUfo: mdiUfo, - mdiUfoOutline: mdiUfoOutline, - mdiUltraHighDefinition: mdiUltraHighDefinition, - mdiUmbraco: mdiUmbraco, - mdiUmbrella: mdiUmbrella, - mdiUmbrellaClosed: mdiUmbrellaClosed, - mdiUmbrellaClosedOutline: mdiUmbrellaClosedOutline, - mdiUmbrellaClosedVariant: mdiUmbrellaClosedVariant, - mdiUmbrellaOutline: mdiUmbrellaOutline, - mdiUndo: mdiUndo, - mdiUndoVariant: mdiUndoVariant, - mdiUnfoldLessHorizontal: mdiUnfoldLessHorizontal, - mdiUnfoldLessVertical: mdiUnfoldLessVertical, - mdiUnfoldMoreHorizontal: mdiUnfoldMoreHorizontal, - mdiUnfoldMoreVertical: mdiUnfoldMoreVertical, - mdiUngroup: mdiUngroup, - mdiUnicode: mdiUnicode, - mdiUnicorn: mdiUnicorn, - mdiUnicornVariant: mdiUnicornVariant, - mdiUnicycle: mdiUnicycle, - mdiUnity: mdiUnity, - mdiUnreal: mdiUnreal, - mdiUntappd: mdiUntappd, - mdiUpdate: mdiUpdate, - mdiUpload: mdiUpload, - mdiUploadLock: mdiUploadLock, - mdiUploadLockOutline: mdiUploadLockOutline, - mdiUploadMultiple: mdiUploadMultiple, - mdiUploadNetwork: mdiUploadNetwork, - mdiUploadNetworkOutline: mdiUploadNetworkOutline, - mdiUploadOff: mdiUploadOff, - mdiUploadOffOutline: mdiUploadOffOutline, - mdiUploadOutline: mdiUploadOutline, - mdiUsb: mdiUsb, - mdiUsbFlashDrive: mdiUsbFlashDrive, - mdiUsbFlashDriveOutline: mdiUsbFlashDriveOutline, - mdiUsbPort: mdiUsbPort, - mdiValve: mdiValve, - mdiValveClosed: mdiValveClosed, - mdiValveOpen: mdiValveOpen, - mdiVanPassenger: mdiVanPassenger, - mdiVanUtility: mdiVanUtility, - mdiVanish: mdiVanish, - mdiVanishQuarter: mdiVanishQuarter, - mdiVanityLight: mdiVanityLight, - mdiVariable: mdiVariable, - mdiVariableBox: mdiVariableBox, - mdiVectorArrangeAbove: mdiVectorArrangeAbove, - mdiVectorArrangeBelow: mdiVectorArrangeBelow, - mdiVectorBezier: mdiVectorBezier, - mdiVectorCircle: mdiVectorCircle, - mdiVectorCircleVariant: mdiVectorCircleVariant, - mdiVectorCombine: mdiVectorCombine, - mdiVectorCurve: mdiVectorCurve, - mdiVectorDifference: mdiVectorDifference, - mdiVectorDifferenceAb: mdiVectorDifferenceAb, - mdiVectorDifferenceBa: mdiVectorDifferenceBa, - mdiVectorEllipse: mdiVectorEllipse, - mdiVectorIntersection: mdiVectorIntersection, - mdiVectorLine: mdiVectorLine, - mdiVectorLink: mdiVectorLink, - mdiVectorPoint: mdiVectorPoint, - mdiVectorPolygon: mdiVectorPolygon, - mdiVectorPolyline: mdiVectorPolyline, - mdiVectorPolylineEdit: mdiVectorPolylineEdit, - mdiVectorPolylineMinus: mdiVectorPolylineMinus, - mdiVectorPolylinePlus: mdiVectorPolylinePlus, - mdiVectorPolylineRemove: mdiVectorPolylineRemove, - mdiVectorRadius: mdiVectorRadius, - mdiVectorRectangle: mdiVectorRectangle, - mdiVectorSelection: mdiVectorSelection, - mdiVectorSquare: mdiVectorSquare, - mdiVectorTriangle: mdiVectorTriangle, - mdiVectorUnion: mdiVectorUnion, - mdiVhs: mdiVhs, - mdiVibrate: mdiVibrate, - mdiVibrateOff: mdiVibrateOff, - mdiVideo: mdiVideo, - mdiVideo3d: mdiVideo3d, - mdiVideo3dOff: mdiVideo3dOff, - mdiVideo3dVariant: mdiVideo3dVariant, - mdiVideo4kBox: mdiVideo4kBox, - mdiVideoAccount: mdiVideoAccount, - mdiVideoBox: mdiVideoBox, - mdiVideoBoxOff: mdiVideoBoxOff, - mdiVideoCheck: mdiVideoCheck, - mdiVideoCheckOutline: mdiVideoCheckOutline, - mdiVideoHighDefinition: mdiVideoHighDefinition, - mdiVideoImage: mdiVideoImage, - mdiVideoInputAntenna: mdiVideoInputAntenna, - mdiVideoInputComponent: mdiVideoInputComponent, - mdiVideoInputHdmi: mdiVideoInputHdmi, - mdiVideoInputScart: mdiVideoInputScart, - mdiVideoInputSvideo: mdiVideoInputSvideo, - mdiVideoMinus: mdiVideoMinus, - mdiVideoMinusOutline: mdiVideoMinusOutline, - mdiVideoOff: mdiVideoOff, - mdiVideoOffOutline: mdiVideoOffOutline, - mdiVideoOutline: mdiVideoOutline, - mdiVideoPlus: mdiVideoPlus, - mdiVideoPlusOutline: mdiVideoPlusOutline, - mdiVideoStabilization: mdiVideoStabilization, - mdiVideoSwitch: mdiVideoSwitch, - mdiVideoSwitchOutline: mdiVideoSwitchOutline, - mdiVideoVintage: mdiVideoVintage, - mdiVideoWireless: mdiVideoWireless, - mdiVideoWirelessOutline: mdiVideoWirelessOutline, - mdiViewAgenda: mdiViewAgenda, - mdiViewAgendaOutline: mdiViewAgendaOutline, - mdiViewArray: mdiViewArray, - mdiViewArrayOutline: mdiViewArrayOutline, - mdiViewCarousel: mdiViewCarousel, - mdiViewCarouselOutline: mdiViewCarouselOutline, - mdiViewColumn: mdiViewColumn, - mdiViewColumnOutline: mdiViewColumnOutline, - mdiViewComfy: mdiViewComfy, - mdiViewComfyOutline: mdiViewComfyOutline, - mdiViewCompact: mdiViewCompact, - mdiViewCompactOutline: mdiViewCompactOutline, - mdiViewDashboard: mdiViewDashboard, - mdiViewDashboardOutline: mdiViewDashboardOutline, - mdiViewDashboardVariant: mdiViewDashboardVariant, - mdiViewDashboardVariantOutline: mdiViewDashboardVariantOutline, - mdiViewDay: mdiViewDay, - mdiViewDayOutline: mdiViewDayOutline, - mdiViewGrid: mdiViewGrid, - mdiViewGridOutline: mdiViewGridOutline, - mdiViewGridPlus: mdiViewGridPlus, - mdiViewGridPlusOutline: mdiViewGridPlusOutline, - mdiViewHeadline: mdiViewHeadline, - mdiViewList: mdiViewList, - mdiViewListOutline: mdiViewListOutline, - mdiViewModule: mdiViewModule, - mdiViewModuleOutline: mdiViewModuleOutline, - mdiViewParallel: mdiViewParallel, - mdiViewParallelOutline: mdiViewParallelOutline, - mdiViewQuilt: mdiViewQuilt, - mdiViewQuiltOutline: mdiViewQuiltOutline, - mdiViewSequential: mdiViewSequential, - mdiViewSequentialOutline: mdiViewSequentialOutline, - mdiViewSplitHorizontal: mdiViewSplitHorizontal, - mdiViewSplitVertical: mdiViewSplitVertical, - mdiViewStream: mdiViewStream, - mdiViewStreamOutline: mdiViewStreamOutline, - mdiViewWeek: mdiViewWeek, - mdiViewWeekOutline: mdiViewWeekOutline, - mdiVimeo: mdiVimeo, - mdiViolin: mdiViolin, - mdiVirtualReality: mdiVirtualReality, - mdiVirus: mdiVirus, - mdiVirusOutline: mdiVirusOutline, - mdiVk: mdiVk, - mdiVlc: mdiVlc, - mdiVoiceOff: mdiVoiceOff, - mdiVoicemail: mdiVoicemail, - mdiVolleyball: mdiVolleyball, - mdiVolumeHigh: mdiVolumeHigh, - mdiVolumeLow: mdiVolumeLow, - mdiVolumeMedium: mdiVolumeMedium, - mdiVolumeMinus: mdiVolumeMinus, - mdiVolumeMute: mdiVolumeMute, - mdiVolumeOff: mdiVolumeOff, - mdiVolumePlus: mdiVolumePlus, - mdiVolumeSource: mdiVolumeSource, - mdiVolumeVariantOff: mdiVolumeVariantOff, - mdiVolumeVibrate: mdiVolumeVibrate, - mdiVote: mdiVote, - mdiVoteOutline: mdiVoteOutline, - mdiVpn: mdiVpn, - mdiVuejs: mdiVuejs, - mdiVuetify: mdiVuetify, - mdiWalk: mdiWalk, - mdiWall: mdiWall, - mdiWallSconce: mdiWallSconce, - mdiWallSconceFlat: mdiWallSconceFlat, - mdiWallSconceFlatVariant: mdiWallSconceFlatVariant, - mdiWallSconceRound: mdiWallSconceRound, - mdiWallSconceRoundVariant: mdiWallSconceRoundVariant, - mdiWallet: mdiWallet, - mdiWalletGiftcard: mdiWalletGiftcard, - mdiWalletMembership: mdiWalletMembership, - mdiWalletOutline: mdiWalletOutline, - mdiWalletPlus: mdiWalletPlus, - mdiWalletPlusOutline: mdiWalletPlusOutline, - mdiWalletTravel: mdiWalletTravel, - mdiWallpaper: mdiWallpaper, - mdiWan: mdiWan, - mdiWardrobe: mdiWardrobe, - mdiWardrobeOutline: mdiWardrobeOutline, - mdiWarehouse: mdiWarehouse, - mdiWashingMachine: mdiWashingMachine, - mdiWashingMachineAlert: mdiWashingMachineAlert, - mdiWashingMachineOff: mdiWashingMachineOff, - mdiWatch: mdiWatch, - mdiWatchExport: mdiWatchExport, - mdiWatchExportVariant: mdiWatchExportVariant, - mdiWatchImport: mdiWatchImport, - mdiWatchImportVariant: mdiWatchImportVariant, - mdiWatchVariant: mdiWatchVariant, - mdiWatchVibrate: mdiWatchVibrate, - mdiWatchVibrateOff: mdiWatchVibrateOff, - mdiWater: mdiWater, - mdiWaterAlert: mdiWaterAlert, - mdiWaterAlertOutline: mdiWaterAlertOutline, - mdiWaterBoiler: mdiWaterBoiler, - mdiWaterBoilerAlert: mdiWaterBoilerAlert, - mdiWaterBoilerOff: mdiWaterBoilerOff, - mdiWaterCheck: mdiWaterCheck, - mdiWaterCheckOutline: mdiWaterCheckOutline, - mdiWaterMinus: mdiWaterMinus, - mdiWaterMinusOutline: mdiWaterMinusOutline, - mdiWaterOff: mdiWaterOff, - mdiWaterOffOutline: mdiWaterOffOutline, - mdiWaterOutline: mdiWaterOutline, - mdiWaterPercent: mdiWaterPercent, - mdiWaterPercentAlert: mdiWaterPercentAlert, - mdiWaterPlus: mdiWaterPlus, - mdiWaterPlusOutline: mdiWaterPlusOutline, - mdiWaterPolo: mdiWaterPolo, - mdiWaterPump: mdiWaterPump, - mdiWaterPumpOff: mdiWaterPumpOff, - mdiWaterRemove: mdiWaterRemove, - mdiWaterRemoveOutline: mdiWaterRemoveOutline, - mdiWaterWell: mdiWaterWell, - mdiWaterWellOutline: mdiWaterWellOutline, - mdiWateringCan: mdiWateringCan, - mdiWateringCanOutline: mdiWateringCanOutline, - mdiWatermark: mdiWatermark, - mdiWave: mdiWave, - mdiWaveform: mdiWaveform, - mdiWaves: mdiWaves, - mdiWaze: mdiWaze, - mdiWeatherCloudy: mdiWeatherCloudy, - mdiWeatherCloudyAlert: mdiWeatherCloudyAlert, - mdiWeatherCloudyArrowRight: mdiWeatherCloudyArrowRight, - mdiWeatherFog: mdiWeatherFog, - mdiWeatherHail: mdiWeatherHail, - mdiWeatherHazy: mdiWeatherHazy, - mdiWeatherHurricane: mdiWeatherHurricane, - mdiWeatherLightning: mdiWeatherLightning, - mdiWeatherLightningRainy: mdiWeatherLightningRainy, - mdiWeatherNight: mdiWeatherNight, - mdiWeatherNightPartlyCloudy: mdiWeatherNightPartlyCloudy, - mdiWeatherPartlyCloudy: mdiWeatherPartlyCloudy, - mdiWeatherPartlyLightning: mdiWeatherPartlyLightning, - mdiWeatherPartlyRainy: mdiWeatherPartlyRainy, - mdiWeatherPartlySnowy: mdiWeatherPartlySnowy, - mdiWeatherPartlySnowyRainy: mdiWeatherPartlySnowyRainy, - mdiWeatherPouring: mdiWeatherPouring, - mdiWeatherRainy: mdiWeatherRainy, - mdiWeatherSnowy: mdiWeatherSnowy, - mdiWeatherSnowyHeavy: mdiWeatherSnowyHeavy, - mdiWeatherSnowyRainy: mdiWeatherSnowyRainy, - mdiWeatherSunny: mdiWeatherSunny, - mdiWeatherSunnyAlert: mdiWeatherSunnyAlert, - mdiWeatherSunnyOff: mdiWeatherSunnyOff, - mdiWeatherSunset: mdiWeatherSunset, - mdiWeatherSunsetDown: mdiWeatherSunsetDown, - mdiWeatherSunsetUp: mdiWeatherSunsetUp, - mdiWeatherTornado: mdiWeatherTornado, - mdiWeatherWindy: mdiWeatherWindy, - mdiWeatherWindyVariant: mdiWeatherWindyVariant, - mdiWeb: mdiWeb, - mdiWebBox: mdiWebBox, - mdiWebClock: mdiWebClock, - mdiWebcam: mdiWebcam, - mdiWebcamOff: mdiWebcamOff, - mdiWebhook: mdiWebhook, - mdiWebpack: mdiWebpack, - mdiWebrtc: mdiWebrtc, - mdiWechat: mdiWechat, - mdiWeight: mdiWeight, - mdiWeightGram: mdiWeightGram, - mdiWeightKilogram: mdiWeightKilogram, - mdiWeightLifter: mdiWeightLifter, - mdiWeightPound: mdiWeightPound, - mdiWhatsapp: mdiWhatsapp, - mdiWheelBarrow: mdiWheelBarrow, - mdiWheelchairAccessibility: mdiWheelchairAccessibility, - mdiWhistle: mdiWhistle, - mdiWhistleOutline: mdiWhistleOutline, - mdiWhiteBalanceAuto: mdiWhiteBalanceAuto, - mdiWhiteBalanceIncandescent: mdiWhiteBalanceIncandescent, - mdiWhiteBalanceIridescent: mdiWhiteBalanceIridescent, - mdiWhiteBalanceSunny: mdiWhiteBalanceSunny, - mdiWidgets: mdiWidgets, - mdiWidgetsOutline: mdiWidgetsOutline, - mdiWifi: mdiWifi, - mdiWifiAlert: mdiWifiAlert, - mdiWifiArrowDown: mdiWifiArrowDown, - mdiWifiArrowLeft: mdiWifiArrowLeft, - mdiWifiArrowLeftRight: mdiWifiArrowLeftRight, - mdiWifiArrowRight: mdiWifiArrowRight, - mdiWifiArrowUp: mdiWifiArrowUp, - mdiWifiArrowUpDown: mdiWifiArrowUpDown, - mdiWifiCancel: mdiWifiCancel, - mdiWifiCheck: mdiWifiCheck, - mdiWifiCog: mdiWifiCog, - mdiWifiLock: mdiWifiLock, - mdiWifiLockOpen: mdiWifiLockOpen, - mdiWifiMarker: mdiWifiMarker, - mdiWifiMinus: mdiWifiMinus, - mdiWifiOff: mdiWifiOff, - mdiWifiPlus: mdiWifiPlus, - mdiWifiRefresh: mdiWifiRefresh, - mdiWifiRemove: mdiWifiRemove, - mdiWifiSettings: mdiWifiSettings, - mdiWifiStar: mdiWifiStar, - mdiWifiStrength1: mdiWifiStrength1, - mdiWifiStrength1Alert: mdiWifiStrength1Alert, - mdiWifiStrength1Lock: mdiWifiStrength1Lock, - mdiWifiStrength1LockOpen: mdiWifiStrength1LockOpen, - mdiWifiStrength2: mdiWifiStrength2, - mdiWifiStrength2Alert: mdiWifiStrength2Alert, - mdiWifiStrength2Lock: mdiWifiStrength2Lock, - mdiWifiStrength2LockOpen: mdiWifiStrength2LockOpen, - mdiWifiStrength3: mdiWifiStrength3, - mdiWifiStrength3Alert: mdiWifiStrength3Alert, - mdiWifiStrength3Lock: mdiWifiStrength3Lock, - mdiWifiStrength3LockOpen: mdiWifiStrength3LockOpen, - mdiWifiStrength4: mdiWifiStrength4, - mdiWifiStrength4Alert: mdiWifiStrength4Alert, - mdiWifiStrength4Lock: mdiWifiStrength4Lock, - mdiWifiStrength4LockOpen: mdiWifiStrength4LockOpen, - mdiWifiStrengthAlertOutline: mdiWifiStrengthAlertOutline, - mdiWifiStrengthLockOpenOutline: mdiWifiStrengthLockOpenOutline, - mdiWifiStrengthLockOutline: mdiWifiStrengthLockOutline, - mdiWifiStrengthOff: mdiWifiStrengthOff, - mdiWifiStrengthOffOutline: mdiWifiStrengthOffOutline, - mdiWifiStrengthOutline: mdiWifiStrengthOutline, - mdiWifiSync: mdiWifiSync, - mdiWikipedia: mdiWikipedia, - mdiWindTurbine: mdiWindTurbine, - mdiWindowClose: mdiWindowClose, - mdiWindowClosed: mdiWindowClosed, - mdiWindowClosedVariant: mdiWindowClosedVariant, - mdiWindowMaximize: mdiWindowMaximize, - mdiWindowMinimize: mdiWindowMinimize, - mdiWindowOpen: mdiWindowOpen, - mdiWindowOpenVariant: mdiWindowOpenVariant, - mdiWindowRestore: mdiWindowRestore, - mdiWindowShutter: mdiWindowShutter, - mdiWindowShutterAlert: mdiWindowShutterAlert, - mdiWindowShutterOpen: mdiWindowShutterOpen, - mdiWindsock: mdiWindsock, - mdiWiper: mdiWiper, - mdiWiperWash: mdiWiperWash, - mdiWizardHat: mdiWizardHat, - mdiWordpress: mdiWordpress, - mdiWrap: mdiWrap, - mdiWrapDisabled: mdiWrapDisabled, - mdiWrench: mdiWrench, - mdiWrenchOutline: mdiWrenchOutline, - mdiXamarin: mdiXamarin, - mdiXamarinOutline: mdiXamarinOutline, - mdiXing: mdiXing, - mdiXml: mdiXml, - mdiXmpp: mdiXmpp, - mdiYCombinator: mdiYCombinator, - mdiYahoo: mdiYahoo, - mdiYeast: mdiYeast, - mdiYinYang: mdiYinYang, - mdiYoga: mdiYoga, - mdiYoutube: mdiYoutube, - mdiYoutubeGaming: mdiYoutubeGaming, - mdiYoutubeStudio: mdiYoutubeStudio, - mdiYoutubeSubscription: mdiYoutubeSubscription, - mdiYoutubeTv: mdiYoutubeTv, - mdiYurt: mdiYurt, - mdiZWave: mdiZWave, - mdiZend: mdiZend, - mdiZigbee: mdiZigbee, - mdiZipBox: mdiZipBox, - mdiZipBoxOutline: mdiZipBoxOutline, - mdiZipDisk: mdiZipDisk, - mdiZodiacAquarius: mdiZodiacAquarius, - mdiZodiacAries: mdiZodiacAries, - mdiZodiacCancer: mdiZodiacCancer, - mdiZodiacCapricorn: mdiZodiacCapricorn, - mdiZodiacGemini: mdiZodiacGemini, - mdiZodiacLeo: mdiZodiacLeo, - mdiZodiacLibra: mdiZodiacLibra, - mdiZodiacPisces: mdiZodiacPisces, - mdiZodiacSagittarius: mdiZodiacSagittarius, - mdiZodiacScorpio: mdiZodiacScorpio, - mdiZodiacTaurus: mdiZodiacTaurus, - mdiZodiacVirgo: mdiZodiacVirgo -}); - -// Attribution: https://github.com/Reocin/obsidian-markdown-formatting-assistant-plugin/blob/main/src/icons.ts -function pathToSvg(icon) { - return ` - - - `; // -} -const icons = { - ag_expand: mdiArrowExpandAll, - ag_collapse: mdiArrowCollapseAll, - ag_select_all: mdiSelectAll, - ag_select_inverse: mdiSelectCompare, - ag_select_neighbors: mdiSelectGroup, - ag_lock: mdiLock, - ag_unlock: mdiLockOpenVariantOutline, - ag_hide: mdiEyeOff, - ag_unhide: mdiEye, - ag_fit: mdiFitToPageOutline, - ag_image: mdiImage, - ag_workspace: mdiToolboxOutline, - ag_local: mdiFlare, - ag_fdgd: mdiGrain, - ag_concentric: mdiGraphql, - ag_grid: mdiDotsGrid, - ag_hierarchy: mdiGraph, - ag_file: mdiFileOutline, - ag_filter: mdiFilterOutline, - ag_save: mdiContentSave, - ag_node_list: mdiFormatListBulletedType, - ag_style: mdiPaletteOutline, - ag_help: mdiHelp, -}; -const addIcons = () => { - Object.keys(icons).forEach((key) => { - obsidian.addIcon(key.replace('_', '-').replace('_', '-'), pathToSvg(icons[key])); - }); -}; - -/* src/ui/toolbar/ToolbarButton.svelte generated by Svelte v3.45.0 */ - -function create_fragment$a(ctx) { - let button; - let svg; - let path; - let mounted; - let dispose; - - return { - c() { - button = element$1("button"); - svg = svg_element("svg"); - path = svg_element("path"); - attr(path, "d", /*icon*/ ctx[0]); - set_style(svg, "width", "17px"); - set_style(svg, "height", "17px"); - attr(svg, "viewBox", "0 0 24 24"); - attr(svg, "xmlns", "http://www.w3.org/2000/svg"); - attr(button, "type", "button"); - attr(button, "class", "juggl-button"); - attr(button, "aria-label", /*title*/ ctx[3]); - button.disabled = /*disabled*/ ctx[2]; - }, - m(target, anchor) { - insert(target, button, anchor); - append(button, svg); - append(svg, path); - - if (!mounted) { - dispose = listen(button, "click", function () { - if (is_function(/*onClick*/ ctx[1])) /*onClick*/ ctx[1].apply(this, arguments); - }); - - mounted = true; - } - }, - p(new_ctx, [dirty]) { - ctx = new_ctx; - - if (dirty & /*icon*/ 1) { - attr(path, "d", /*icon*/ ctx[0]); - } - - if (dirty & /*title*/ 8) { - attr(button, "aria-label", /*title*/ ctx[3]); - } - - if (dirty & /*disabled*/ 4) { - button.disabled = /*disabled*/ ctx[2]; - } - }, - i: noop$2, - o: noop$2, - d(detaching) { - if (detaching) detach(button); - mounted = false; - dispose(); - } - }; -} - -function instance$a($$self, $$props, $$invalidate) { - let { icon } = $$props; - let { onClick } = $$props; - let { disabled = false } = $$props; - let { title } = $$props; - - $$self.$$set = $$props => { - if ('icon' in $$props) $$invalidate(0, icon = $$props.icon); - if ('onClick' in $$props) $$invalidate(1, onClick = $$props.onClick); - if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled); - if ('title' in $$props) $$invalidate(3, title = $$props.title); - }; - - return [icon, onClick, disabled, title]; -} - -class ToolbarButton extends SvelteComponent { - constructor(options) { - super(); - - init(this, options, instance$a, create_fragment$a, safe_not_equal, { - icon: 0, - onClick: 1, - disabled: 2, - title: 3 - }); - } -} - -class JugglHelpView extends obsidian.ItemView { - constructor() { - super(...arguments); - this.frame = null; - } - async onOpen() { - this.frame = document.createElement('iframe'); - this.frame.addClass(`juggl-site`); - this.frame.setAttr('style', 'height: 100%; width:100%'); - this.frame.setAttr('src', 'https://juggl.io'); - this.frame.setAttr('tabindex', '0'); - this.containerEl.children[1].appendChild(this.frame); - } - getDisplayText() { - return 'Juggl help'; - } - getViewType() { - return JUGGL_HELP_VIEW; - } -} - -/* src/ui/toolbar/HelpButton.svelte generated by Svelte v3.45.0 */ - -function create_fragment$9(ctx) { - let toolbarbutton; - let current; - - toolbarbutton = new ToolbarButton({ - props: { - icon: icons.ag_help, - title: "Help", - onClick: /*openHelp*/ ctx[0] - } - }); - - return { - c() { - create_component(toolbarbutton.$$.fragment); - }, - m(target, anchor) { - mount_component(toolbarbutton, target, anchor); - current = true; - }, - p: noop$2, - i(local) { - if (current) return; - transition_in(toolbarbutton.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(toolbarbutton.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(toolbarbutton, detaching); - } - }; -} - -function instance$9($$self, $$props, $$invalidate) { - let { workspace } = $$props; - - let openHelp = function () { - let leaf = workspace.getLeaf(true); - let view = new JugglHelpView(leaf); - leaf.open(view); - }; - - $$self.$$set = $$props => { - if ('workspace' in $$props) $$invalidate(1, workspace = $$props.workspace); - }; - - return [openHelp, workspace]; -} - -class HelpButton extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$9, create_fragment$9, safe_not_equal, { workspace: 1 }); - } -} - -/* src/ui/toolbar/Toolbar.svelte generated by Svelte v3.45.0 */ - -function create_fragment$8(ctx) { - let div0; - let toolbarbutton0; - let t0; - let toolbarbutton1; - let t1; - let toolbarbutton2; - let t2; - let toolbarbutton3; - let t3; - let div1; - let toolbarbutton4; - let t4; - let toolbarbutton5; - let t5; - let div2; - let helpbutton; - let t6; - let toolbarbutton6; - let t7; - let div3; - let toolbarbutton7; - let t8; - let toolbarbutton8; - let t9; - let toolbarbutton9; - let t10; - let div4; - let toolbarbutton10; - let t11; - let toolbarbutton11; - let t12; - let toolbarbutton12; - let t13; - let div5; - let toolbarbutton13; - let t14; - let toolbarbutton14; - let t15; - let br; - let label; - let input; - let current; - let mounted; - let dispose; - - toolbarbutton0 = new ToolbarButton({ - props: { - icon: icons.ag_fdgd, - onClick: /*fdgdClick*/ ctx[2], - title: "Force directed layout" - } - }); - - toolbarbutton1 = new ToolbarButton({ - props: { - icon: icons.ag_concentric, - onClick: /*concentricClick*/ ctx[3], - title: "Circle layout" - } - }); - - toolbarbutton2 = new ToolbarButton({ - props: { - icon: icons.ag_grid, - onClick: /*gridClick*/ ctx[4], - title: "Grid layout" - } - }); - - toolbarbutton3 = new ToolbarButton({ - props: { - icon: icons.ag_hierarchy, - onClick: /*hierarchyClick*/ ctx[5], - title: "Hierarchical layout" - } - }); - - toolbarbutton4 = new ToolbarButton({ - props: { - icon: icons.ag_fit, - onClick: /*fitClick*/ ctx[14], - title: "Fit view" - } - }); - - toolbarbutton5 = new ToolbarButton({ - props: { - icon: icons.ag_local, - onClick: /*localModeClick*/ ctx[15], - title: "Local mode" - } - }); - - helpbutton = new HelpButton({ - props: { workspace: /*workspace*/ ctx[17] } - }); - - toolbarbutton6 = new ToolbarButton({ - props: { - icon: icons.ag_save, - onClick: /*saveClick*/ ctx[16], - title: "Manage workspace graphs" - } - }); - - toolbarbutton7 = new ToolbarButton({ - props: { - icon: icons.ag_expand, - onClick: /*expandClick*/ ctx[6], - disabled: /*disableOnNoneSelected*/ ctx[18], - title: "Expand selected nodes (E)" - } - }); - - toolbarbutton8 = new ToolbarButton({ - props: { - icon: icons.ag_collapse, - onClick: /*collapseClick*/ ctx[7], - disabled: /*disableOnNoneSelected*/ ctx[18], - title: "Collapse expanded nodes (C)" - } - }); - - toolbarbutton9 = new ToolbarButton({ - props: { - icon: icons.ag_hide, - onClick: /*hideClick*/ ctx[8], - disabled: /*disableOnNoneSelected*/ ctx[18], - title: "Hide selected nodes (H)" - } - }); - - toolbarbutton10 = new ToolbarButton({ - props: { - icon: icons.ag_select_all, - onClick: /*selectAllClick*/ ctx[9], - title: "Select all nodes (A)" - } - }); - - toolbarbutton11 = new ToolbarButton({ - props: { - icon: icons.ag_select_inverse, - onClick: /*selectInvertClick*/ ctx[10], - disabled: /*disableOnNoneSelected*/ ctx[18], - title: "Invert selection (I)" - } - }); - - toolbarbutton12 = new ToolbarButton({ - props: { - icon: icons.ag_select_neighbors, - onClick: /*selectNeighborClick*/ ctx[11], - disabled: /*disableOnNoneSelected*/ ctx[18], - title: "Select neighbors (N)" - } - }); - - toolbarbutton13 = new ToolbarButton({ - props: { - icon: icons.ag_lock, - onClick: /*lockClick*/ ctx[12], - disabled: /*disableOnAllPinned*/ ctx[19], - title: "Lock selected nodes in place (P)" - } - }); - - toolbarbutton14 = new ToolbarButton({ - props: { - icon: icons.ag_unlock, - onClick: /*unlockClick*/ ctx[13], - disabled: /*disableOnNonePinned*/ ctx[20], - title: "Unlock selected nodes in place (U)" - } - }); - - return { - c() { - div0 = element$1("div"); - create_component(toolbarbutton0.$$.fragment); - t0 = space(); - create_component(toolbarbutton1.$$.fragment); - t1 = space(); - create_component(toolbarbutton2.$$.fragment); - t2 = space(); - create_component(toolbarbutton3.$$.fragment); - t3 = space(); - div1 = element$1("div"); - create_component(toolbarbutton4.$$.fragment); - t4 = space(); - create_component(toolbarbutton5.$$.fragment); - t5 = space(); - div2 = element$1("div"); - create_component(helpbutton.$$.fragment); - t6 = space(); - create_component(toolbarbutton6.$$.fragment); - t7 = space(); - div3 = element$1("div"); - create_component(toolbarbutton7.$$.fragment); - t8 = space(); - create_component(toolbarbutton8.$$.fragment); - t9 = space(); - create_component(toolbarbutton9.$$.fragment); - t10 = space(); - div4 = element$1("div"); - create_component(toolbarbutton10.$$.fragment); - t11 = space(); - create_component(toolbarbutton11.$$.fragment); - t12 = space(); - create_component(toolbarbutton12.$$.fragment); - t13 = space(); - div5 = element$1("div"); - create_component(toolbarbutton13.$$.fragment); - t14 = space(); - create_component(toolbarbutton14.$$.fragment); - t15 = space(); - br = element$1("br"); - label = element$1("label"); - label.textContent = "Filter: "; - input = element$1("input"); - attr(div0, "class", "cy-toolbar-section"); - attr(div1, "class", "cy-toolbar-section"); - attr(div2, "class", "cy-toolbar-section"); - attr(div3, "class", "cy-toolbar-section"); - attr(div4, "class", "cy-toolbar-section"); - attr(div5, "class", "cy-toolbar-section"); - attr(label, "for", "ag-filter"); - attr(input, "type", "text"); - attr(input, "id", "ag-filter"); - attr(input, "name", "ag-filter"); - input.value = /*filterValue*/ ctx[1]; - }, - m(target, anchor) { - insert(target, div0, anchor); - mount_component(toolbarbutton0, div0, null); - append(div0, t0); - mount_component(toolbarbutton1, div0, null); - append(div0, t1); - mount_component(toolbarbutton2, div0, null); - append(div0, t2); - mount_component(toolbarbutton3, div0, null); - insert(target, t3, anchor); - insert(target, div1, anchor); - mount_component(toolbarbutton4, div1, null); - append(div1, t4); - mount_component(toolbarbutton5, div1, null); - insert(target, t5, anchor); - insert(target, div2, anchor); - mount_component(helpbutton, div2, null); - append(div2, t6); - mount_component(toolbarbutton6, div2, null); - insert(target, t7, anchor); - insert(target, div3, anchor); - mount_component(toolbarbutton7, div3, null); - append(div3, t8); - mount_component(toolbarbutton8, div3, null); - append(div3, t9); - mount_component(toolbarbutton9, div3, null); - insert(target, t10, anchor); - insert(target, div4, anchor); - mount_component(toolbarbutton10, div4, null); - append(div4, t11); - mount_component(toolbarbutton11, div4, null); - append(div4, t12); - mount_component(toolbarbutton12, div4, null); - insert(target, t13, anchor); - insert(target, div5, anchor); - mount_component(toolbarbutton13, div5, null); - append(div5, t14); - mount_component(toolbarbutton14, div5, null); - insert(target, t15, anchor); - insert(target, br, anchor); - insert(target, label, anchor); - insert(target, input, anchor); - current = true; - - if (!mounted) { - dispose = listen(input, "input", function () { - if (is_function(/*filterInput*/ ctx[0])) /*filterInput*/ ctx[0].apply(this, arguments); - }); - - mounted = true; - } - }, - p(new_ctx, [dirty]) { - ctx = new_ctx; - const toolbarbutton0_changes = {}; - if (dirty & /*fdgdClick*/ 4) toolbarbutton0_changes.onClick = /*fdgdClick*/ ctx[2]; - toolbarbutton0.$set(toolbarbutton0_changes); - const toolbarbutton1_changes = {}; - if (dirty & /*concentricClick*/ 8) toolbarbutton1_changes.onClick = /*concentricClick*/ ctx[3]; - toolbarbutton1.$set(toolbarbutton1_changes); - const toolbarbutton2_changes = {}; - if (dirty & /*gridClick*/ 16) toolbarbutton2_changes.onClick = /*gridClick*/ ctx[4]; - toolbarbutton2.$set(toolbarbutton2_changes); - const toolbarbutton3_changes = {}; - if (dirty & /*hierarchyClick*/ 32) toolbarbutton3_changes.onClick = /*hierarchyClick*/ ctx[5]; - toolbarbutton3.$set(toolbarbutton3_changes); - const toolbarbutton4_changes = {}; - if (dirty & /*fitClick*/ 16384) toolbarbutton4_changes.onClick = /*fitClick*/ ctx[14]; - toolbarbutton4.$set(toolbarbutton4_changes); - const toolbarbutton5_changes = {}; - if (dirty & /*localModeClick*/ 32768) toolbarbutton5_changes.onClick = /*localModeClick*/ ctx[15]; - toolbarbutton5.$set(toolbarbutton5_changes); - const helpbutton_changes = {}; - if (dirty & /*workspace*/ 131072) helpbutton_changes.workspace = /*workspace*/ ctx[17]; - helpbutton.$set(helpbutton_changes); - const toolbarbutton6_changes = {}; - if (dirty & /*saveClick*/ 65536) toolbarbutton6_changes.onClick = /*saveClick*/ ctx[16]; - toolbarbutton6.$set(toolbarbutton6_changes); - const toolbarbutton7_changes = {}; - if (dirty & /*expandClick*/ 64) toolbarbutton7_changes.onClick = /*expandClick*/ ctx[6]; - if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton7_changes.disabled = /*disableOnNoneSelected*/ ctx[18]; - toolbarbutton7.$set(toolbarbutton7_changes); - const toolbarbutton8_changes = {}; - if (dirty & /*collapseClick*/ 128) toolbarbutton8_changes.onClick = /*collapseClick*/ ctx[7]; - if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton8_changes.disabled = /*disableOnNoneSelected*/ ctx[18]; - toolbarbutton8.$set(toolbarbutton8_changes); - const toolbarbutton9_changes = {}; - if (dirty & /*hideClick*/ 256) toolbarbutton9_changes.onClick = /*hideClick*/ ctx[8]; - if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton9_changes.disabled = /*disableOnNoneSelected*/ ctx[18]; - toolbarbutton9.$set(toolbarbutton9_changes); - const toolbarbutton10_changes = {}; - if (dirty & /*selectAllClick*/ 512) toolbarbutton10_changes.onClick = /*selectAllClick*/ ctx[9]; - toolbarbutton10.$set(toolbarbutton10_changes); - const toolbarbutton11_changes = {}; - if (dirty & /*selectInvertClick*/ 1024) toolbarbutton11_changes.onClick = /*selectInvertClick*/ ctx[10]; - if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton11_changes.disabled = /*disableOnNoneSelected*/ ctx[18]; - toolbarbutton11.$set(toolbarbutton11_changes); - const toolbarbutton12_changes = {}; - if (dirty & /*selectNeighborClick*/ 2048) toolbarbutton12_changes.onClick = /*selectNeighborClick*/ ctx[11]; - if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton12_changes.disabled = /*disableOnNoneSelected*/ ctx[18]; - toolbarbutton12.$set(toolbarbutton12_changes); - const toolbarbutton13_changes = {}; - if (dirty & /*lockClick*/ 4096) toolbarbutton13_changes.onClick = /*lockClick*/ ctx[12]; - if (dirty & /*disableOnAllPinned*/ 524288) toolbarbutton13_changes.disabled = /*disableOnAllPinned*/ ctx[19]; - toolbarbutton13.$set(toolbarbutton13_changes); - const toolbarbutton14_changes = {}; - if (dirty & /*unlockClick*/ 8192) toolbarbutton14_changes.onClick = /*unlockClick*/ ctx[13]; - if (dirty & /*disableOnNonePinned*/ 1048576) toolbarbutton14_changes.disabled = /*disableOnNonePinned*/ ctx[20]; - toolbarbutton14.$set(toolbarbutton14_changes); - - if (!current || dirty & /*filterValue*/ 2 && input.value !== /*filterValue*/ ctx[1]) { - input.value = /*filterValue*/ ctx[1]; - } - }, - i(local) { - if (current) return; - transition_in(toolbarbutton0.$$.fragment, local); - transition_in(toolbarbutton1.$$.fragment, local); - transition_in(toolbarbutton2.$$.fragment, local); - transition_in(toolbarbutton3.$$.fragment, local); - transition_in(toolbarbutton4.$$.fragment, local); - transition_in(toolbarbutton5.$$.fragment, local); - transition_in(helpbutton.$$.fragment, local); - transition_in(toolbarbutton6.$$.fragment, local); - transition_in(toolbarbutton7.$$.fragment, local); - transition_in(toolbarbutton8.$$.fragment, local); - transition_in(toolbarbutton9.$$.fragment, local); - transition_in(toolbarbutton10.$$.fragment, local); - transition_in(toolbarbutton11.$$.fragment, local); - transition_in(toolbarbutton12.$$.fragment, local); - transition_in(toolbarbutton13.$$.fragment, local); - transition_in(toolbarbutton14.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(toolbarbutton0.$$.fragment, local); - transition_out(toolbarbutton1.$$.fragment, local); - transition_out(toolbarbutton2.$$.fragment, local); - transition_out(toolbarbutton3.$$.fragment, local); - transition_out(toolbarbutton4.$$.fragment, local); - transition_out(toolbarbutton5.$$.fragment, local); - transition_out(helpbutton.$$.fragment, local); - transition_out(toolbarbutton6.$$.fragment, local); - transition_out(toolbarbutton7.$$.fragment, local); - transition_out(toolbarbutton8.$$.fragment, local); - transition_out(toolbarbutton9.$$.fragment, local); - transition_out(toolbarbutton10.$$.fragment, local); - transition_out(toolbarbutton11.$$.fragment, local); - transition_out(toolbarbutton12.$$.fragment, local); - transition_out(toolbarbutton13.$$.fragment, local); - transition_out(toolbarbutton14.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) detach(div0); - destroy_component(toolbarbutton0); - destroy_component(toolbarbutton1); - destroy_component(toolbarbutton2); - destroy_component(toolbarbutton3); - if (detaching) detach(t3); - if (detaching) detach(div1); - destroy_component(toolbarbutton4); - destroy_component(toolbarbutton5); - if (detaching) detach(t5); - if (detaching) detach(div2); - destroy_component(helpbutton); - destroy_component(toolbarbutton6); - if (detaching) detach(t7); - if (detaching) detach(div3); - destroy_component(toolbarbutton7); - destroy_component(toolbarbutton8); - destroy_component(toolbarbutton9); - if (detaching) detach(t10); - if (detaching) detach(div4); - destroy_component(toolbarbutton10); - destroy_component(toolbarbutton11); - destroy_component(toolbarbutton12); - if (detaching) detach(t13); - if (detaching) detach(div5); - destroy_component(toolbarbutton13); - destroy_component(toolbarbutton14); - if (detaching) detach(t15); - if (detaching) detach(br); - if (detaching) detach(label); - if (detaching) detach(input); - mounted = false; - dispose(); - } - }; -} - -function instance$8($$self, $$props, $$invalidate) { - let { viz } = $$props; - let { filterValue } = $$props; - let { fdgdClick } = $$props; - let { concentricClick } = $$props; - let { gridClick } = $$props; - let { hierarchyClick } = $$props; - let { expandClick } = $$props; - let { collapseClick } = $$props; - let { hideClick } = $$props; - let { selectAllClick } = $$props; - let { selectInvertClick } = $$props; - let { selectNeighborClick } = $$props; - let { lockClick } = $$props; - let { unlockClick } = $$props; - let { fitClick } = $$props; - let { localModeClick } = $$props; - let { filterInput } = $$props; - let { saveClick } = $$props; - let { workspace } = $$props; - filterInput = obsidian.debounce(filterInput, 500, true); - let disableOnNoneSelected = false; - let disableOnAllPinned = false; - let disableOnNonePinned = true; - - const onSelect = function () { - let selected = viz.nodes(":selected"); - $$invalidate(18, disableOnNoneSelected = selected.length === 0); - - // TODO: Hardcoded class - let pinned = viz.nodes(".pinned"); - - let anyUnpinned = selected.difference(pinned).length > 0; - let anyPinned = selected.intersection(pinned); - $$invalidate(19, disableOnAllPinned = !anyUnpinned || disableOnNoneSelected); - $$invalidate(20, disableOnNonePinned = !anyPinned || disableOnNoneSelected); - }; - - $$self.$$set = $$props => { - if ('viz' in $$props) $$invalidate(21, viz = $$props.viz); - if ('filterValue' in $$props) $$invalidate(1, filterValue = $$props.filterValue); - if ('fdgdClick' in $$props) $$invalidate(2, fdgdClick = $$props.fdgdClick); - if ('concentricClick' in $$props) $$invalidate(3, concentricClick = $$props.concentricClick); - if ('gridClick' in $$props) $$invalidate(4, gridClick = $$props.gridClick); - if ('hierarchyClick' in $$props) $$invalidate(5, hierarchyClick = $$props.hierarchyClick); - if ('expandClick' in $$props) $$invalidate(6, expandClick = $$props.expandClick); - if ('collapseClick' in $$props) $$invalidate(7, collapseClick = $$props.collapseClick); - if ('hideClick' in $$props) $$invalidate(8, hideClick = $$props.hideClick); - if ('selectAllClick' in $$props) $$invalidate(9, selectAllClick = $$props.selectAllClick); - if ('selectInvertClick' in $$props) $$invalidate(10, selectInvertClick = $$props.selectInvertClick); - if ('selectNeighborClick' in $$props) $$invalidate(11, selectNeighborClick = $$props.selectNeighborClick); - if ('lockClick' in $$props) $$invalidate(12, lockClick = $$props.lockClick); - if ('unlockClick' in $$props) $$invalidate(13, unlockClick = $$props.unlockClick); - if ('fitClick' in $$props) $$invalidate(14, fitClick = $$props.fitClick); - if ('localModeClick' in $$props) $$invalidate(15, localModeClick = $$props.localModeClick); - if ('filterInput' in $$props) $$invalidate(0, filterInput = $$props.filterInput); - if ('saveClick' in $$props) $$invalidate(16, saveClick = $$props.saveClick); - if ('workspace' in $$props) $$invalidate(17, workspace = $$props.workspace); - }; - - return [ - filterInput, - filterValue, - fdgdClick, - concentricClick, - gridClick, - hierarchyClick, - expandClick, - collapseClick, - hideClick, - selectAllClick, - selectInvertClick, - selectNeighborClick, - lockClick, - unlockClick, - fitClick, - localModeClick, - saveClick, - workspace, - disableOnNoneSelected, - disableOnAllPinned, - disableOnNonePinned, - viz, - onSelect - ]; -} - -class Toolbar extends SvelteComponent { - constructor(options) { - super(); - - init(this, options, instance$8, create_fragment$8, safe_not_equal, { - viz: 21, - filterValue: 1, - fdgdClick: 2, - concentricClick: 3, - gridClick: 4, - hierarchyClick: 5, - expandClick: 6, - collapseClick: 7, - hideClick: 8, - selectAllClick: 9, - selectInvertClick: 10, - selectNeighborClick: 11, - lockClick: 12, - unlockClick: 13, - fitClick: 14, - localModeClick: 15, - filterInput: 0, - saveClick: 16, - workspace: 17, - onSelect: 22 - }); - } - - get onSelect() { - return this.$$.ctx[22]; - } -} - -class ColaGlobalLayout { - constructor(options, animate) { - this.options = Object.assign({}, ColaGlobalLayout.DEFAULT, options, { animate: animate ? 'end' : false }); - } - startLayout(view) { - return view.viz.layout(this.options).start(); - } -} -ColaGlobalLayout.DEFAULT = { - name: 'cola', - // @ts-ignore - animate: true, - refresh: 2, - maxSimulationTime: LAYOUT_ANIMATION_TIME, - ungrabifyWhileSimulating: false, - fit: false, - padding: 30, - nodeDimensionsIncludeLabels: true, - // positioning options - randomize: false, - avoidOverlap: true, - handleDisconnected: true, - convergenceThreshold: 0.01, - nodeSpacing: 10, // extra spacing around nodes -}; -class D3GlobalLayout { - constructor(options, animate) { - this.options = Object.assign({}, D3GlobalLayout.DEFAULT, options, { animate: animate ? 'end' : false }); - console.log({ options: this.options, animate }); - } - startLayout(view) { - return view.viz.layout(Object.assign(this.options, { linkId: function id(d) { - return d.id; - }, // sets the node id accessor to the specified function - })).start(); - } -} -D3GlobalLayout.DEFAULT = { - name: 'd3-force', - // @ts-ignore - animate: 'end', - maxIterations: 0, - maxSimulationTime: LAYOUT_ANIMATION_TIME, - ungrabifyWhileSimulating: false, - fixedAfterDragging: false, - fit: false, - padding: 30, - /** d3-force API**/ - alpha: 1, - alphaMin: 0.001, - alphaDecay: 1 - Math.pow(0.001, 1 / 300), - alphaTarget: 0, - velocityDecay: 0.4, - collideRadius: 60, - collideStrength: 0.9, - collideIterations: 1, - linkDistance: 150, - linkStrength: 0.7, - linkIterations: 1, - manyBodyStrength: -600, - manyBodyDistanceMin: 5, - xStrength: 0.1, - xX: 0, - yStrength: 0.1, - yY: 0, - radialStrength: 0.1, - radialX: 0, - radialY: 0, - radialRadius: 10, - // positioning optsions - randomize: false, - // infinite layout options - infinite: false, // overrides all other options for a forces-all-the-time mode -}; -class GridGlobalLayout { - constructor(options) { - this.options = Object.assign({}, GridGlobalLayout.DEFAULT, options); - } - startLayout(view) { - return view.viz.layout(this.options).start(); - } -} -GridGlobalLayout.DEFAULT = { - name: 'grid', - animate: true, - animationDuration: DISCRETE_LAYOUT_ANIMATION_TIME, - // animationEasing // Should probably add something here - spacingFactor: DISCRETE_SPACING_FACTOR, - fit: false, - padding: 30, - nodeDimensionsIncludeLabels: true, - // positioning options - avoidOverlap: true, // if true, prevents overlap of node bounding boxes -}; -class DagreGlobalLayout { - constructor(options) { - this.options = Object.assign({}, DagreGlobalLayout.DEFAULT, options); - } - startLayout(view) { - return view.viz.layout(this.options).start(); - } -} -DagreGlobalLayout.DEFAULT = { - name: 'dagre', - // @ts-ignore - animate: true, - animationDuration: DISCRETE_LAYOUT_ANIMATION_TIME, - spacingFactor: DISCRETE_SPACING_FACTOR, - // animationEasing // Should probably add something here - fit: false, - padding: 30, - nodeDimensionsIncludeLabels: true, - // positioning options - avoidOverlap: true, // if true, prevents overlap of node bounding boxes -}; -class ConcentricLayout { - constructor(options) { - this.options = Object.assign({}, ConcentricLayout.DEFAULT, options); - } - startLayout(view) { - return view.viz.layout(Object.assign(this.options, { concentric: (n) => { - // @ts-ignore - if (n.hasClass(CLASS_ACTIVE_NODE)) { - return 1000; - } - // @ts-ignore - if (n.hasClass(CLASS_EXPANDED)) { - return 100; - } - return 1; - } })).start(); - } -} -ConcentricLayout.DEFAULT = { - name: 'concentric', - // @ts-ignore - animate: 'end', - animationDuration: DISCRETE_LAYOUT_ANIMATION_TIME, - // animationEasing // Should probably add something here - fit: false, - padding: 30, - nodeDimensionsIncludeLabels: true, - // positioning options - avoidOverlap: true, // if true, prevents overlap of node bounding boxes -}; -const getLayoutSetting = function (layoutType, settings, options) { - switch (layoutType) { - case 'circle': - case 'concentric': return new ConcentricLayout(options); - case 'force-directed': if (settings && settings.fdgdLayout === 'd3-force') { - return new D3GlobalLayout(options, settings.animateLayout); - } - else { - return new ColaGlobalLayout(options, settings.animateLayout); - } - case 'hierarchy': - case 'dagre': - return new DagreGlobalLayout(options); - case 'grid': return new GridGlobalLayout(options); - case 'cola': return new ColaGlobalLayout(options, settings.animateLayout); - case 'd3-force': return new D3GlobalLayout(options, settings.animateLayout); - } -}; -const parseLayoutSettings = function (settings) { - if (typeof settings.layout === 'string' || settings.layout instanceof String) { - return getLayoutSetting(settings.layout, settings); - } - else { - return getLayoutSetting(settings.layout.name, settings, settings.layout); - } -}; - -/* src/ui/SaveWorkspaceItem.svelte generated by Svelte v3.45.0 */ - -function create_fragment$7(ctx) { - let div2; - let div0; - let t0; - let t1; - let button; - let t3; - let div1; - let mounted; - let dispose; - - return { - c() { - div2 = element$1("div"); - div0 = element$1("div"); - t0 = text(/*name*/ ctx[0]); - t1 = space(); - button = element$1("button"); - button.textContent = "Load"; - t3 = space(); - div1 = element$1("div"); - div1.innerHTML = ``; - attr(div0, "class", "list-item-part mod-extended"); - attr(button, "class", "list-item-part"); - attr(div1, "class", "list-item-part clickable-icon"); - attr(div1, "aria-label", "Delete graph"); - attr(div2, "class", "list-item"); - }, - m(target, anchor) { - insert(target, div2, anchor); - append(div2, div0); - append(div0, t0); - append(div2, t1); - append(div2, button); - append(div2, t3); - append(div2, div1); - - if (!mounted) { - dispose = [ - listen(button, "click", function () { - if (is_function(/*onClick*/ ctx[1](/*name*/ ctx[0]))) /*onClick*/ ctx[1](/*name*/ ctx[0]).apply(this, arguments); - }), - listen(div1, "click", function () { - if (is_function(/*onDelete*/ ctx[2](/*name*/ ctx[0]))) /*onDelete*/ ctx[2](/*name*/ ctx[0]).apply(this, arguments); - }) - ]; - - mounted = true; - } - }, - p(new_ctx, [dirty]) { - ctx = new_ctx; - if (dirty & /*name*/ 1) set_data(t0, /*name*/ ctx[0]); - }, - i: noop$2, - o: noop$2, - d(detaching) { - if (detaching) detach(div2); - mounted = false; - run_all(dispose); - } - }; -} - -function instance$7($$self, $$props, $$invalidate) { - let { name } = $$props; - let { onClick } = $$props; - let { onDelete } = $$props; - - $$self.$$set = $$props => { - if ('name' in $$props) $$invalidate(0, name = $$props.name); - if ('onClick' in $$props) $$invalidate(1, onClick = $$props.onClick); - if ('onDelete' in $$props) $$invalidate(2, onDelete = $$props.onDelete); - }; - - return [name, onClick, onDelete]; -} - -class SaveWorkspaceItem extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$7, create_fragment$7, safe_not_equal, { name: 0, onClick: 1, onDelete: 2 }); - } -} - -/* src/ui/SaveWorkspaces.svelte generated by Svelte v3.45.0 */ - -function get_each_context$2(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[9] = list[i]; - return child_ctx; -} - -// (31:4) {#each savedGraphs as graphName} -function create_each_block$2(ctx) { - let saveworkspaceitem; - let current; - - saveworkspaceitem = new SaveWorkspaceItem({ - props: { - name: /*graphName*/ ctx[9], - onClick: /*onLoad*/ ctx[1], - onDelete: /*_onDelete*/ ctx[4] - } - }); - - return { - c() { - create_component(saveworkspaceitem.$$.fragment); - }, - m(target, anchor) { - mount_component(saveworkspaceitem, target, anchor); - current = true; - }, - p(ctx, dirty) { - const saveworkspaceitem_changes = {}; - if (dirty & /*savedGraphs*/ 1) saveworkspaceitem_changes.name = /*graphName*/ ctx[9]; - if (dirty & /*onLoad*/ 2) saveworkspaceitem_changes.onClick = /*onLoad*/ ctx[1]; - saveworkspaceitem.$set(saveworkspaceitem_changes); - }, - i(local) { - if (current) return; - transition_in(saveworkspaceitem.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(saveworkspaceitem.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(saveworkspaceitem, detaching); - } - }; -} - -function create_fragment$6(ctx) { - let div0; - let input; - let t0; - let button; - let t2; - let hr; - let t3; - let div1; - let current; - let mounted; - let dispose; - let each_value = /*savedGraphs*/ ctx[0]; - let each_blocks = []; - - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i)); - } - - const out = i => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); - - return { - c() { - div0 = element$1("div"); - input = element$1("input"); - t0 = space(); - button = element$1("button"); - button.textContent = "Save"; - t2 = space(); - hr = element$1("hr"); - t3 = space(); - div1 = element$1("div"); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - - attr(input, "class", "list-item-part mod-extended"); - attr(input, "type", "text"); - attr(input, "placeholder", "Save current graph as..."); - attr(button, "class", "list-item-part"); - attr(div0, "class", "modal-content"); - }, - m(target, anchor) { - insert(target, div0, anchor); - append(div0, input); - set_input_value(input, /*saveName*/ ctx[2]); - append(div0, t0); - append(div0, button); - insert(target, t2, anchor); - insert(target, hr, anchor); - insert(target, t3, anchor); - insert(target, div1, anchor); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(div1, null); - } - - current = true; - - if (!mounted) { - dispose = [ - listen(input, "input", /*input_input_handler*/ ctx[8]), - listen(input, "keydown", /*filterInput*/ ctx[5]), - listen(button, "click", function () { - if (is_function(/*_onSave*/ ctx[3](/*saveName*/ ctx[2]))) /*_onSave*/ ctx[3](/*saveName*/ ctx[2]).apply(this, arguments); - }) - ]; - - mounted = true; - } - }, - p(new_ctx, [dirty]) { - ctx = new_ctx; - - if (dirty & /*saveName*/ 4 && input.value !== /*saveName*/ ctx[2]) { - set_input_value(input, /*saveName*/ ctx[2]); - } - - if (dirty & /*savedGraphs, onLoad, _onDelete*/ 19) { - each_value = /*savedGraphs*/ ctx[0]; - let i; - - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context$2(ctx, each_value, i); - - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block$2(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(div1, null); - } - } - - group_outros(); - - for (i = each_value.length; i < each_blocks.length; i += 1) { - out(i); - } - - check_outros(); - } - }, - i(local) { - if (current) return; - - for (let i = 0; i < each_value.length; i += 1) { - transition_in(each_blocks[i]); - } - - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); - - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - - current = false; - }, - d(detaching) { - if (detaching) detach(div0); - if (detaching) detach(t2); - if (detaching) detach(hr); - if (detaching) detach(t3); - if (detaching) detach(div1); - destroy_each(each_blocks, detaching); - mounted = false; - run_all(dispose); - } - }; -} - -function instance$6($$self, $$props, $$invalidate) { - let { onLoad } = $$props; - let { onSave } = $$props; - let { onDelete } = $$props; - let { savedGraphs } = $$props; - let saveName = ''; - - let _onSave = async s => { - await onSave(s); - - // Ensures svelte reacts. - $$invalidate(0, savedGraphs); - }; - - let _onDelete = async s => { - await onDelete(s); - $$invalidate(0, savedGraphs); - }; - - let filterInput = event => { - if (event.key === '/') { - event.preventDefault(); - return false; - } - - return true; - }; - - function input_input_handler() { - saveName = this.value; - $$invalidate(2, saveName); - } - - $$self.$$set = $$props => { - if ('onLoad' in $$props) $$invalidate(1, onLoad = $$props.onLoad); - if ('onSave' in $$props) $$invalidate(6, onSave = $$props.onSave); - if ('onDelete' in $$props) $$invalidate(7, onDelete = $$props.onDelete); - if ('savedGraphs' in $$props) $$invalidate(0, savedGraphs = $$props.savedGraphs); - }; - - return [ - savedGraphs, - onLoad, - saveName, - _onSave, - _onDelete, - filterInput, - onSave, - onDelete, - input_input_handler - ]; -} - -class SaveWorkspaces extends SvelteComponent { - constructor(options) { - super(); - - init(this, options, instance$6, create_fragment$6, safe_not_equal, { - onLoad: 1, - onSave: 6, - onDelete: 7, - savedGraphs: 0 - }); - } -} - -class WorkspaceModal extends obsidian.Modal { - constructor(app, workspaceManager, view) { - super(app); - this.manager = workspaceManager; - this.view = view; - } - onOpen() { - super.onOpen(); - this.titleEl.innerHTML = 'Manage workspace graphs'; - new SaveWorkspaces({ - target: this.contentEl, - props: { - onSave: (s) => this.manager.saveGraph(s, this.view), - savedGraphs: this.manager.graphs, - onLoad: (s) => this.manager.loadGraph(s, this.view), - onDelete: (s) => this.manager.deleteGraph(s, this.view), - }, - }); - } -} - -class WorkspaceMode extends obsidian.Component { - constructor(view) { - super(); - this.events = []; - this.recursionPreventer = false; - this.view = view; - } - onload() { - if (this.view.vizReady) { - this._onLoad(); - } - else { - this.registerEvent(this.view.on('vizReady', (viz) => { - this._onLoad(); - })); - } - } - _onLoad() { - this.viz = this.view.viz; - const mode = this; - const view = this.view; - const style = getComputedStyle(document.body); - const selectColor = style.getPropertyValue('--text-selection'); - const backgroundColor = style.getPropertyValue('--background-secondary'); - const textColor = style.getPropertyValue('--text-normal'); - style.getPropertyValue('--text'); - const plugin = this.view.plugin; - // the default values of each option are outlined below: - const defaults = { - menuRadius: 70, - selector: 'node', - commands: (n) => { - const commands = []; - const id = VizId.fromNode(n); - if (id.storeId === 'core') { - commands.push({ - content: pathToSvg(icons.ag_file), - select: async function (ele, gestureStart, event) { - // @ts-ignore - await plugin.openFileFromNode(ele, event.originalEvent.metaKey); - }, - enabled: true, - }); - } - commands.push({ - content: pathToSvg(icons.ag_hide), - select: function (ele) { - mode.removeNodes(ele); - }, - enabled: true, - }, { - content: pathToSvg(icons.ag_fit), - select: function (ele) { - mode.updateActiveNode(ele, true); - }, - enabled: true, // whether the command is selectable - }); - if (n.hasClass(CLASS_PINNED)) { - commands.push({ - content: pathToSvg(icons.ag_unlock), - select: function (ele) { - mode.unpin(ele); - }, - enabled: true, // whether the command is selectable - }); - } - else { - commands.push({ - content: pathToSvg(icons.ag_lock), - select: function (ele) { - mode.pin(ele); - }, - enabled: true, // whether the command is selectable - }); - } - if (n.hasClass(CLASS_EXPANDED)) { - commands.push({ - content: pathToSvg(icons.ag_collapse), - select: function (ele) { - mode.removeNodes(ele); - }, - enabled: true, // whether the command is selectable - }); - } - else { - commands.push({ - content: pathToSvg(icons.ag_expand), - select: function (ele) { - view.expand(ele); - }, - enabled: true, // whether the command is selectable - }); - } - return commands; - }, - fillColor: `${backgroundColor}`, - activeFillColor: `${selectColor}`, - activePadding: 20, - indicatorSize: 24, - separatorWidth: 3, - spotlightPadding: 0, - adaptativeNodeSpotlightRadius: true, - // minSpotlightRadius: 12, // the minimum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background) - // maxSpotlightRadius: 28, // the maximum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background) - openMenuEvents: 'taphold', - itemColor: `${textColor}`, - itemTextShadowColor: 'transparent', - zIndex: 9999, - atMouse: false, - outsideMenuCancel: 15, - }; - // @ts-ignore - this.menu = this.viz.cxtmenu(defaults); - this.registerCyEvent('tap', 'node', async (e) => { - if (!this.view.settings.openWithShift || e.originalEvent.shiftKey) { - const file = await this.view.plugin.openFileFromNode(e.target, e.originalEvent.metaKey); - if (file) { - this.updateActiveNode(e.target, this.view.settings.autoZoom); - } - } - }); - this.registerCyEvent('taphold', 'node', (e) => { - if (this.view.destroyHover) { - this.view.destroyHover(); - } - }); - this.registerCyEvent('dblclick', 'node', async (e) => { - await this.view.expand(e.target); - }); - this.registerCyEvent('tapselect tapunselect boxselect', null, (e) => { - this.view.trigger('selectChange'); - }); - // Register on file open event - this.registerEvent(this.view.workspace.on('file-open', async (file) => { - if (!this.view.settings.autoAddNodes) { - return; - } - if (file && this.view.settings.autoAddNodes) { - const name = file.name; - const id = new VizId(name, 'core'); - let followImmediate = true; - if (this.viz.$id(id.toId()).length === 0) { - const node = await this.view.datastores.coreStore.get(id, this.view); - this.viz.startBatch(); - // Make sure it doesn't immediately get removed - this.viz.add(node).addClass(CLASS_PROTECTED); - const edges = await this.view.buildEdges(this.viz.$id(id.toId())); - this.viz.add(edges); - this.view.onGraphChanged(false, true); - this.viz.endBatch(); - followImmediate = false; - } - const node = this.viz.$id(id.toId()); - node.addClass(CLASS_PROTECTED); - this.updateActiveNode(node, followImmediate && this.view.settings.autoZoom); - } - })); - this.registerEvent(this.view.on('expand', (expanded) => { - this.updateActiveNode(expanded, false); - })); - // TODO: What to do with this? - this.registerEvent(this.view.on('elementsChange', () => { - if (this.recursionPreventer) { - return; - } - // Remove nodes that are not protected and not connected to expanded nodes - this.viz.nodes() - .difference(this.viz.nodes(`.${CLASS_PROTECTED}`)) - .filter((ele) => { - // If none in the closed neighborhood are expanded. - // Note that the closed neighborhood includes the current note. - return ele.closedNeighborhood(`node.${CLASS_PROTECTED}`).length === 0; - }) - .remove(); - this.updateActiveNode(this.viz.nodes(`.${CLASS_ACTIVE_NODE}`), false); - this.recursionPreventer = true; - this.view.onGraphChanged(); - this.recursionPreventer = false; - })); - this.windowEvent = async (evt) => { - if (!(document.activeElement === this.view.element)) { - return; - } - if (evt.key === 'e') { - await this.expandSelection(); - } - else if (evt.key === 'h' || evt.key === 'Backspace') { - this.removeSelection(); - } - else if (evt.key === 'i') { - this.invertSelection(); - } - else if (evt.key === 'a') { - this.selectAll(); - } - else if (evt.key === 'n') { - this.selectNeighboursOfSelected(); - } - else if (evt.key === 'p') { - this.pinSelection(); - } - else if (evt.key === 'u') { - this.unpinSelection(); - } - else if (evt.key === 'c') { - this.collapseSelection(); - } - else if (evt.key === 'v') { - this.view.fitView(); - } - else if (evt.key === 'f') { - this.view.fitView(this.viz.nodes(':selected')); - } - }; - // // Register keypress event - // Note: Registered on window because it wouldn't fire on the div... - document.on('keydown', '.cy-content', this.windowEvent, true); - } - registerCyEvent(name, selector, callback) { - this.events.push({ eventName: name, selector: selector, event: callback }); - if (selector) { - this.viz.on(name, selector, callback); - } - else { - this.viz.on(name, callback); - } - } - onunload() { - for (const listener of this.events) { - if (listener.selector) { - this.viz.off(listener.eventName, listener.selector, listener.event); - } - else { - this.viz.off(listener.eventName, listener.event); - } - } - this.events = []; - document.off('keydown', '.cy-content', this.windowEvent, true); - if (this.toolbar) { - this.toolbar.$destroy(); - } - if (this.menu) { - this.menu.destroy(); - } - } - getName() { - return 'workspace'; - } - fillMenu(menu, nodes) { - if (nodes.length > 0) { - menu.addItem((item) => { - item.setTitle('Expand selection (E)').setIcon('ag-expand') - .onClick(async (evt) => { - await this.view.expand(nodes); - }); - }); - menu.addItem((item) => { - item.setTitle('Collapse selection (C)').setIcon('ag-collapse') - .onClick((evt) => { - this.collapse(nodes); - }); - }); - menu.addItem((item) => { - item.setTitle('Hide selection (H)').setIcon('ag-hide') - .onClick((evt) => { - this.removeNodes(nodes); - }); - }); - menu.addItem((item) => { - item.setTitle('Select all (A)').setIcon('ag-select-all') - .onClick((evt) => { - this.selectAll(); - }); - }); - menu.addItem((item) => { - item.setTitle('Invert selection (I)').setIcon('ag-select-inverse') - .onClick((evt) => { - this.invertSelection(); - }); - }); - } - if (nodes.length > 0) { - menu.addItem((item) => { - item.setTitle('Select neighbors (N)').setIcon('ag-select-neighbors') - .onClick((evt) => { - this.selectNeighbourhood(nodes); - }); - }); - const pinned = this.view.getPinned(); - if (nodes.difference(pinned).length > 0) { - menu.addItem((item) => { - item.setTitle('Pin selection (P)').setIcon('ag-lock') - .onClick((evt) => { - this.pin(nodes); - }); - }); - } - if (nodes.intersect(pinned).length > 0) { - menu.addItem((item) => { - item.setTitle('Unpin selection (U)').setIcon('ag-unlock') - .onClick((evt) => { - this.unpin(nodes); - }); - }); - } - } - } - createToolbar(element) { - this.toolbar = new Toolbar({ - target: element, - props: { - viz: this.viz, - filterValue: this.view.settings.filter, - expandClick: this.expandSelection.bind(this), - fdgdClick: () => this.view.setLayout(getLayoutSetting('force-directed', this.view.settings)), - concentricClick: () => this.view.setLayout(getLayoutSetting('circle')), - gridClick: () => this.view.setLayout(getLayoutSetting('grid')), - hierarchyClick: () => this.view.setLayout(getLayoutSetting('hierarchy')), - collapseClick: this.collapseSelection.bind(this), - hideClick: this.removeSelection.bind(this), - selectAllClick: this.selectAll.bind(this), - selectInvertClick: this.invertSelection.bind(this), - selectNeighborClick: this.selectNeighboursOfSelected.bind(this), - lockClick: this.pinSelection.bind(this), - unlockClick: this.unpinSelection.bind(this), - fitClick: this.view.fitView.bind(this.view), - localModeClick: () => this.view.setMode('local'), - filterInput: (handler) => { - // @ts-ignore - this.view.searchFilter(handler.target.value); - this.view.restartLayout(); - }, - saveClick: () => { - if ('app' in this.view.plugin && 'workspaceManager' in this.view.plugin) { - // @ts-ignore - new WorkspaceModal(this.view.plugin.app, this.view.plugin.workspaceManager, this.view).open(); - } - }, - workspace: this.view.plugin.app.workspace, - }, - }); - this.view.on('selectChange', this.toolbar.onSelect.bind(this.toolbar)); - this.view.on('vizReady', (viz) => { - this.toolbar.$set({ viz: viz }); - this.toolbar.onSelect.bind(this.toolbar)(); // - }); - } - updateActiveNode(node, followImmediate) { - this.viz.elements() - .removeClass([CLASS_CONNECTED_ACTIVE_NODE, CLASS_ACTIVE_NODE, CLASS_INACTIVE_NODE]) - .difference(node.closedNeighborhood()) - .addClass(CLASS_INACTIVE_NODE); - node.addClass(CLASS_ACTIVE_NODE); - const neighbourhood = node.connectedEdges() - .addClass(CLASS_CONNECTED_ACTIVE_NODE) - .connectedNodes() - .addClass(CLASS_CONNECTED_ACTIVE_NODE) - .union(node); - if (followImmediate) { - this.viz.animate({ - fit: { - eles: neighbourhood, - padding: 0, - }, - duration: VIEWPORT_ANIMATION_TIME, - queue: false, - }); - } - this.viz.one('tap', (e) => { - e.cy.elements().removeClass([CLASS_CONNECTED_ACTIVE_NODE, CLASS_ACTIVE_NODE, CLASS_INACTIVE_NODE]); - }); - } - async expandSelection() { - await this.view.expand(this.viz.nodes(':selected')); - } - collapse(nodes) { - const selectedProtected = nodes.filter(`:selected`) - .removeClass([CLASS_PROTECTED, CLASS_EXPANDED]); - selectedProtected.openNeighborhood() - .nodes() - .filter((ele) => { - // If none in the closed neighborhood are protected that aren't also selected - // (their PROTECTED flag has been removed) - return ele.closedNeighborhood(`node.${CLASS_PROTECTED}`).length === 0; - }) - .remove(); - // can this cause race conditions with on elementsChange? - this.recursionPreventer = true; - this.view.onGraphChanged(true, true); - this.recursionPreventer = false; - } - collapseSelection() { - this.collapse(this.viz.nodes(':selected')); - } - removeNodes(nodes) { - nodes.addClass(CLASS_HARD_FILTERED); - this.view.onGraphChanged(true, true); - this.view.trigger('hide', nodes); - this.view.trigger('selectChange'); - } - removeSelection() { - this.removeNodes(this.viz.nodes(':selected')); - } - selectAll() { - this.viz.nodes().select(); - this.view.trigger('selectChange'); - } - invertSelection() { - this.viz.$(':selected') - .unselect() - .absoluteComplement() - .select(); - this.view.trigger('selectChange'); - } - selectNeighboursOfSelected() { - this.selectNeighbourhood(this.viz.nodes(':selected')); - } - selectNeighbourhood(nodes) { - // TODO: This keeps self-loops selected. - this.viz.nodes(':selected') - .unselect(); - nodes.openNeighborhood() - .select(); - this.view.trigger('selectChange'); - } - unpin(nodes) { - const unlocked = nodes - .unlock() - .removeClass(CLASS_PINNED); - this.view.restartLayout(); - this.view.trigger('unpin', unlocked); - } - unpinSelection() { - this.unpin(this.viz.nodes(':selected')); - } - pin(nodes) { - const locked = nodes - .lock() - .addClass(CLASS_PINNED); - this.view.restartLayout(); - this.view.trigger('pin', locked); - } - pinSelection() { - this.pin(this.viz.nodes(':selected')); - } -} - -/* src/ui/toolbar/ToolbarLocal.svelte generated by Svelte v3.45.0 */ - -function create_fragment$5(ctx) { - let div0; - let toolbarbutton0; - let t0; - let toolbarbutton1; - let t1; - let toolbarbutton2; - let t2; - let toolbarbutton3; - let t3; - let div1; - let toolbarbutton4; - let t4; - let toolbarbutton5; - let t5; - let div2; - let helpbutton; - let t6; - let br; - let label; - let input; - let current; - let mounted; - let dispose; - - toolbarbutton0 = new ToolbarButton({ - props: { - icon: icons.ag_fdgd, - onClick: /*fdgdClick*/ ctx[1], - title: "Force directed layout" - } - }); - - toolbarbutton1 = new ToolbarButton({ - props: { - icon: icons.ag_concentric, - onClick: /*concentricClick*/ ctx[2], - title: "Circle layout" - } - }); - - toolbarbutton2 = new ToolbarButton({ - props: { - icon: icons.ag_grid, - onClick: /*gridClick*/ ctx[3], - title: "Grid layout" - } - }); - - toolbarbutton3 = new ToolbarButton({ - props: { - icon: icons.ag_hierarchy, - onClick: /*hierarchyClick*/ ctx[4], - title: "Hierarchical layout" - } - }); - - toolbarbutton4 = new ToolbarButton({ - props: { - icon: icons.ag_fit, - onClick: /*fitClick*/ ctx[5], - title: "Fit view" - } - }); - - toolbarbutton5 = new ToolbarButton({ - props: { - icon: icons.ag_workspace, - onClick: /*workspaceModeClick*/ ctx[6], - title: "Workspace mode" - } - }); - - helpbutton = new HelpButton({ - props: { workspace: /*workspace*/ ctx[8] } - }); - - return { - c() { - div0 = element$1("div"); - create_component(toolbarbutton0.$$.fragment); - t0 = space(); - create_component(toolbarbutton1.$$.fragment); - t1 = space(); - create_component(toolbarbutton2.$$.fragment); - t2 = space(); - create_component(toolbarbutton3.$$.fragment); - t3 = space(); - div1 = element$1("div"); - create_component(toolbarbutton4.$$.fragment); - t4 = space(); - create_component(toolbarbutton5.$$.fragment); - t5 = space(); - div2 = element$1("div"); - create_component(helpbutton.$$.fragment); - t6 = space(); - br = element$1("br"); - label = element$1("label"); - label.textContent = "Filter: "; - input = element$1("input"); - attr(div0, "class", "cy-toolbar-section"); - attr(div1, "class", "cy-toolbar-section"); - attr(div2, "class", "cy-toolbar-section"); - attr(label, "for", "ag-filter"); - attr(input, "type", "text"); - attr(input, "id", "ag-filter"); - attr(input, "name", "ag-filter"); - input.value = /*filterValue*/ ctx[7]; - }, - m(target, anchor) { - insert(target, div0, anchor); - mount_component(toolbarbutton0, div0, null); - append(div0, t0); - mount_component(toolbarbutton1, div0, null); - append(div0, t1); - mount_component(toolbarbutton2, div0, null); - append(div0, t2); - mount_component(toolbarbutton3, div0, null); - insert(target, t3, anchor); - insert(target, div1, anchor); - mount_component(toolbarbutton4, div1, null); - append(div1, t4); - mount_component(toolbarbutton5, div1, null); - insert(target, t5, anchor); - insert(target, div2, anchor); - mount_component(helpbutton, div2, null); - insert(target, t6, anchor); - insert(target, br, anchor); - insert(target, label, anchor); - insert(target, input, anchor); - current = true; - - if (!mounted) { - dispose = listen(input, "input", function () { - if (is_function(/*filterInput*/ ctx[0])) /*filterInput*/ ctx[0].apply(this, arguments); - }); - - mounted = true; - } - }, - p(new_ctx, [dirty]) { - ctx = new_ctx; - const toolbarbutton0_changes = {}; - if (dirty & /*fdgdClick*/ 2) toolbarbutton0_changes.onClick = /*fdgdClick*/ ctx[1]; - toolbarbutton0.$set(toolbarbutton0_changes); - const toolbarbutton1_changes = {}; - if (dirty & /*concentricClick*/ 4) toolbarbutton1_changes.onClick = /*concentricClick*/ ctx[2]; - toolbarbutton1.$set(toolbarbutton1_changes); - const toolbarbutton2_changes = {}; - if (dirty & /*gridClick*/ 8) toolbarbutton2_changes.onClick = /*gridClick*/ ctx[3]; - toolbarbutton2.$set(toolbarbutton2_changes); - const toolbarbutton3_changes = {}; - if (dirty & /*hierarchyClick*/ 16) toolbarbutton3_changes.onClick = /*hierarchyClick*/ ctx[4]; - toolbarbutton3.$set(toolbarbutton3_changes); - const toolbarbutton4_changes = {}; - if (dirty & /*fitClick*/ 32) toolbarbutton4_changes.onClick = /*fitClick*/ ctx[5]; - toolbarbutton4.$set(toolbarbutton4_changes); - const toolbarbutton5_changes = {}; - if (dirty & /*workspaceModeClick*/ 64) toolbarbutton5_changes.onClick = /*workspaceModeClick*/ ctx[6]; - toolbarbutton5.$set(toolbarbutton5_changes); - const helpbutton_changes = {}; - if (dirty & /*workspace*/ 256) helpbutton_changes.workspace = /*workspace*/ ctx[8]; - helpbutton.$set(helpbutton_changes); - - if (!current || dirty & /*filterValue*/ 128 && input.value !== /*filterValue*/ ctx[7]) { - input.value = /*filterValue*/ ctx[7]; - } - }, - i(local) { - if (current) return; - transition_in(toolbarbutton0.$$.fragment, local); - transition_in(toolbarbutton1.$$.fragment, local); - transition_in(toolbarbutton2.$$.fragment, local); - transition_in(toolbarbutton3.$$.fragment, local); - transition_in(toolbarbutton4.$$.fragment, local); - transition_in(toolbarbutton5.$$.fragment, local); - transition_in(helpbutton.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(toolbarbutton0.$$.fragment, local); - transition_out(toolbarbutton1.$$.fragment, local); - transition_out(toolbarbutton2.$$.fragment, local); - transition_out(toolbarbutton3.$$.fragment, local); - transition_out(toolbarbutton4.$$.fragment, local); - transition_out(toolbarbutton5.$$.fragment, local); - transition_out(helpbutton.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) detach(div0); - destroy_component(toolbarbutton0); - destroy_component(toolbarbutton1); - destroy_component(toolbarbutton2); - destroy_component(toolbarbutton3); - if (detaching) detach(t3); - if (detaching) detach(div1); - destroy_component(toolbarbutton4); - destroy_component(toolbarbutton5); - if (detaching) detach(t5); - if (detaching) detach(div2); - destroy_component(helpbutton); - if (detaching) detach(t6); - if (detaching) detach(br); - if (detaching) detach(label); - if (detaching) detach(input); - mounted = false; - dispose(); - } - }; -} - -function instance$5($$self, $$props, $$invalidate) { - let { fdgdClick } = $$props; - let { concentricClick } = $$props; - let { gridClick } = $$props; - let { hierarchyClick } = $$props; - let { fitClick } = $$props; - let { workspaceModeClick } = $$props; - let { filterInput } = $$props; - let { filterValue } = $$props; - let { workspace } = $$props; - filterInput = obsidian.debounce(filterInput, 500, true); - - $$self.$$set = $$props => { - if ('fdgdClick' in $$props) $$invalidate(1, fdgdClick = $$props.fdgdClick); - if ('concentricClick' in $$props) $$invalidate(2, concentricClick = $$props.concentricClick); - if ('gridClick' in $$props) $$invalidate(3, gridClick = $$props.gridClick); - if ('hierarchyClick' in $$props) $$invalidate(4, hierarchyClick = $$props.hierarchyClick); - if ('fitClick' in $$props) $$invalidate(5, fitClick = $$props.fitClick); - if ('workspaceModeClick' in $$props) $$invalidate(6, workspaceModeClick = $$props.workspaceModeClick); - if ('filterInput' in $$props) $$invalidate(0, filterInput = $$props.filterInput); - if ('filterValue' in $$props) $$invalidate(7, filterValue = $$props.filterValue); - if ('workspace' in $$props) $$invalidate(8, workspace = $$props.workspace); - }; - - return [ - filterInput, - fdgdClick, - concentricClick, - gridClick, - hierarchyClick, - fitClick, - workspaceModeClick, - filterValue, - workspace - ]; -} - -class ToolbarLocal extends SvelteComponent { - constructor(options) { - super(); - - init(this, options, instance$5, create_fragment$5, safe_not_equal, { - fdgdClick: 1, - concentricClick: 2, - gridClick: 3, - hierarchyClick: 4, - fitClick: 5, - workspaceModeClick: 6, - filterInput: 0, - filterValue: 7, - workspace: 8 - }); - } -} - -class LocalMode extends obsidian.Component { - constructor(view) { - super(); - this.events = []; - this.view = view; - } - onload() { - if (this.view.vizReady) { - this._onLoad(); - } - else { - this.registerEvent(this.view.on('vizReady', (viz) => { - this._onLoad(); - })); - } - } - _onLoad() { - this.viz = this.view.viz; - this.registerCyEvent('tap', 'node', async (e) => { - const file = await this.view.plugin.openFileFromNode(e.target, e.originalEvent.metaKey); - if (file) { - await this.onOpenFile(file); - } - }); - // Register on file open event - this.registerEvent(this.view.workspace.on('file-open', async (file) => { - if (file) { - await this.onOpenFile(file); - } - })); - } - async onOpenFile(file) { - if (!this.view.settings.autoAddNodes) { - return; - } - const id = new VizId(file.name, 'core'); - let node; - this.viz.startBatch(); - if (this.viz.$id(id.toId()).length === 0) { - const nodeDef = await this.view.datastores.coreStore.get(id, this.view); - node = this.viz.add(nodeDef); - } - else { - node = this.viz.$id(id.toId()); - } - await this.view.expand(node, false); - node.addClass(CLASS_ACTIVE_NODE); - this.viz.nodes() - .difference(node.closedNeighborhood()) - .remove(); - this.view.onGraphChanged(false); - this.updateActiveFile(node); - this.viz.endBatch(); - } - registerCyEvent(name, selector, callback) { - this.events.push({ eventName: name, selector: selector, event: callback }); - if (selector) { - this.viz.on(name, selector, callback); - } - else { - this.viz.on(name, callback); - } - } - onunload() { - for (const listener of this.events) { - if (listener.selector) { - this.viz.off(listener.eventName, listener.selector, listener.event); - } - else { - this.viz.off(listener.eventName, listener.event); - } - } - this.events = []; - this.toolbar.$destroy(); - } - getName() { - return 'local'; - } - fillMenu(menu, nodes) { - } - createToolbar(element) { - const view = this.view; - this.toolbar = new ToolbarLocal({ - target: element, - props: { - viz: this.viz, - fitClick: this.view.fitView.bind(view), - fdgdClick: () => this.view.setLayout(getLayoutSetting('force-directed', this.view.settings)), - concentricClick: () => this.view.setLayout(getLayoutSetting('circle')), - gridClick: () => this.view.setLayout(getLayoutSetting('grid')), - hierarchyClick: () => this.view.setLayout(getLayoutSetting('hierarchy')), - workspaceModeClick: () => view.setMode('workspace'), - filterInput: (handler) => { - // @ts-ignore - this.view.searchFilter(handler.target.value); - this.view.restartLayout(); - }, - filterValue: this.view.settings.filter, - workspace: this.view.plugin.app.workspace, - }, - }); - // this.view.on('vizReady', (viz) => { - // tb.$set({viz: viz}); - // tb.onSelect.bind(tb)(); - // }); - } - updateActiveFile(node) { - this.viz.elements() - .removeClass([CLASS_CONNECTED_ACTIVE_NODE, CLASS_ACTIVE_NODE, CLASS_INACTIVE_NODE]) - .difference(node.closedNeighborhood()) - .addClass(CLASS_INACTIVE_NODE); - node.addClass(CLASS_ACTIVE_NODE); - node.connectedEdges() - .addClass(CLASS_CONNECTED_ACTIVE_NODE) - .connectedNodes() - .addClass(CLASS_CONNECTED_ACTIVE_NODE) - .union(node); - // this.viz.one('tap', (e) => { - // e.cy.elements().removeClass(['connected-active-file', 'active-file', 'inactive-file']); - // }); - } -} - +var YV=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,C,i){var H={x:t.x+i.dx*C,v:t.v+i.dv*C,tension:t.tension,friction:t.friction};return{dx:H.v,dv:e(H)}}function C(C,i){var H={dx:C.v,dv:e(C)},n=t(C,.5*i,H),V=t(C,.5*i,n),r=t(C,i,V),L=1/6*(H.dx+2*(n.dx+V.dx)+r.dx),o=1/6*(H.dv+2*(n.dv+V.dv)+r.dv);return C.x=C.x+L*i,C.v=C.v+o*i,C}return function e(t,i,H){var n,V,r,L={x:-1,v:0,tension:null,friction:null},o=[0],a=0,M=1e-4;for(t=parseFloat(t)||500,i=parseFloat(i)||20,H=H||null,L.tension=t,L.friction=i,V=(n=null!==H)?(a=e(t,i))/H*.016:.016;r=C(r||L,V),o.push(1+r.x),a+=16,Math.abs(r.x)>M&&Math.abs(r.v)>M;);return n?function(e){return o[e*(o.length-1)|0]}:a}}(),XV=function(e,t,C,i){var H=function(e,t,C,i){var H=4,n=.001,V=1e-7,r=10,L=11,o=1/(L-1),a="undefined"!=typeof Float32Array;if(4!==arguments.length)return!1;for(var M=0;M<4;++M)if("number"!=typeof arguments[M]||isNaN(arguments[M])||!isFinite(arguments[M]))return!1;e=Math.min(e,1),C=Math.min(C,1),e=Math.max(e,0),C=Math.max(C,0);var s=a?new Float32Array(L):new Array(L);function l(e,t){return 1-3*t+3*e}function d(e,t){return 3*t-6*e}function u(e){return 3*e}function A(e,t,C){return((l(t,C)*e+d(t,C))*e+u(t))*e}function c(e,t,C){return 3*l(t,C)*e*e+2*d(t,C)*e+u(t)}function h(t,i){for(var n=0;n0?H=L:i=L}while(Math.abs(n)>V&&++o=n?h(t,r):0===a?r:f(t,i,i+o)}var g=!1;function v(){g=!0,e===t&&C===i||m()}var y=function(H){return g||v(),e===t&&C===i?H:0===H?0:1===H?1:A(p(H),t,i)};y.getControlPoints=function(){return[{x:e,y:t},{x:C,y:i}]};var Z="generateBezier("+[e,t,C,i]+")";return y.toString=function(){return Z},y}(e,t,C,i);return function(e,t,C){return e+(t-e)*H(C)}},qV={linear:function(e,t,C){return e+(t-e)*C},ease:XV(.25,.1,.25,1),"ease-in":XV(.42,0,1,1),"ease-out":XV(0,0,.58,1),"ease-in-out":XV(.42,0,.58,1),"ease-in-sine":XV(.47,0,.745,.715),"ease-out-sine":XV(.39,.575,.565,1),"ease-in-out-sine":XV(.445,.05,.55,.95),"ease-in-quad":XV(.55,.085,.68,.53),"ease-out-quad":XV(.25,.46,.45,.94),"ease-in-out-quad":XV(.455,.03,.515,.955),"ease-in-cubic":XV(.55,.055,.675,.19),"ease-out-cubic":XV(.215,.61,.355,1),"ease-in-out-cubic":XV(.645,.045,.355,1),"ease-in-quart":XV(.895,.03,.685,.22),"ease-out-quart":XV(.165,.84,.44,1),"ease-in-out-quart":XV(.77,0,.175,1),"ease-in-quint":XV(.755,.05,.855,.06),"ease-out-quint":XV(.23,1,.32,1),"ease-in-out-quint":XV(.86,0,.07,1),"ease-in-expo":XV(.95,.05,.795,.035),"ease-out-expo":XV(.19,1,.22,1),"ease-in-out-expo":XV(1,0,0,1),"ease-in-circ":XV(.6,.04,.98,.335),"ease-out-circ":XV(.075,.82,.165,1),"ease-in-out-circ":XV(.785,.135,.15,.86),spring:function(e,t,C){if(0===C)return qV.linear;var i=YV(e,t,C);return function(e,t,C){return e+(t-e)*i(C)}},"cubic-bezier":XV};function QV(e,t,C,i,H){if(1===i)return C;if(t===C)return C;var n=H(t,C,i);return null==e||((e.roundValue||e.color)&&(n=Math.round(n)),void 0!==e.min&&(n=Math.max(n,e.min)),void 0!==e.max&&(n=Math.min(n,e.max))),n}function KV(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}function JV(e,t,C,i,H){var n=null!=H?H.type:null;C<0?C=0:C>1&&(C=1);var V=KV(e,H),r=KV(t,H);if(Ht(V)&&Ht(r))return QV(n,V,r,C,i);if(Ct(V)&&Ct(r)){for(var L=[],o=0;o0?("spring"===M&&s.push(V.duration),V.easingImpl=qV[M].apply(null,s)):V.easingImpl=qV[M]}var l,d=V.easingImpl;if(l=0===V.duration?1:(C-L)/V.duration,V.applying&&(l=V.progress),l<0?l=0:l>1&&(l=1),null==V.delay){var u=V.startPosition,A=V.position;if(A&&H&&!e.locked()){var c={};tr(u.x,A.x)&&(c.x=JV(u.x,A.x,l,d)),tr(u.y,A.y)&&(c.y=JV(u.y,A.y,l,d)),e.position(c)}var h=V.startPan,m=V.pan,f=n.pan,p=null!=m&&i;p&&(tr(h.x,m.x)&&(f.x=JV(h.x,m.x,l,d)),tr(h.y,m.y)&&(f.y=JV(h.y,m.y,l,d)),e.emit("pan"));var g=V.startZoom,v=V.zoom,y=null!=v&&i;y&&(tr(g,v)&&(n.zoom=_C(n.minZoom,JV(g,v,l,d),n.maxZoom)),e.emit("zoom")),(p||y)&&e.emit("viewport");var Z=V.style;if(Z&&Z.length>0&&H){for(var S=0;S=0;t--){(0,e[t])()}e.splice(0,e.length)},a=n.length-1;a>=0;a--){var M=n[a],s=M._private;s.stopped?(n.splice(a,1),s.hooked=!1,s.playing=!1,s.started=!1,o(s.frames)):(s.playing||s.applying)&&(s.playing&&s.applying&&(s.applying=!1),s.started||Cr(0,M,e),er(t,M,e,C),s.applying&&(s.applying=!1),o(s.frames),null!=s.step&&s.step(e),M.completed()&&(n.splice(a,1),s.hooked=!1,s.playing=!1,s.started=!1,o(s.completes)),r=!0)}return C||0!==n.length||0!==V.length||i.push(t),r}for(var n=!1,V=0;V0?t.notify("draw",C):t.notify("draw")),C.unmerge(i),t.emit("step")}var Hr={animate:xH.animate(),animation:xH.animation(),animated:xH.animated(),clearQueue:xH.clearQueue(),delay:xH.delay(),delayAnimation:xH.delayAnimation(),stop:xH.stop(),addToAnimationPool:function(e){this.styleEnabled()&&this._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,e.styleEnabled()){var t=e.renderer();t&&t.beforeRender?t.beforeRender((function(t,C){ir(C,e)}),t.beforeRenderPriorities.animations):function t(){e._private.animationsRunning&&wt((function(C){ir(C,e),t()}))}()}}},nr={qualifierCompare:function(e,t){return null==e||null==t?null==e&&null==t:e.sameText(t)},eventMatches:function(e,t,C){var i=t.qualifier;return null==i||e!==C.target&&rt(C.target)&&i.matches(C.target)},addEventFields:function(e,t){t.cy=e,t.target=e},callbackContext:function(e,t,C){return null!=t.qualifier?C.target:e}},Vr=function(e){return et(e)?new dn(e):e},rr={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new oV(nr,this)),this},emitter:function(){return this._private.emitter},on:function(e,t,C){return this.emitter().on(e,Vr(t),C),this},removeListener:function(e,t,C){return this.emitter().removeListener(e,Vr(t),C),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,t,C){return this.emitter().one(e,Vr(t),C),this},once:function(e,t,C){return this.emitter().one(e,Vr(t),C),this},emit:function(e,t){return this.emitter().emit(e,t),this},emitAndNotify:function(e,t){return this.emit(e),this.notify(e,t),this}};xH.eventAliasesOn(rr);var Lr={png:function(e){return e=e||{},this._private.renderer.png(e)},jpg:function(e){var t=this._private.renderer;return(e=e||{}).bg=e.bg||"#fff",t.jpg(e)}};Lr.jpeg=Lr.jpg;var or={layout:function(e){var t=this;if(null!=e)if(null!=e.name){var C=e.name,i=t.extension("layout",C);if(null!=i){var H;H=et(e.eles)?t.$(e.eles):null!=e.eles?e.eles:t.$();var n=new i(ft({},e,{cy:t,eles:H}));return n}Ut("No such layout `"+C+"` found. Did you forget to import it and `cytoscape.use()` it?")}else Ut("A `name` must be specified to make a layout");else Ut("Layout options must be specified to make a layout")}};or.createLayout=or.makeLayout=or.layout;var ar={notify:function(e,t){var C=this._private;if(this.batching()){C.batchNotifications=C.batchNotifications||{};var i=C.batchNotifications[e]=C.batchNotifications[e]||this.collection();null!=t&&i.merge(t)}else if(C.notificationsEnabled){var H=this.renderer();!this.destroyed()&&H&&H.notify(e,t)}},notifications:function(e){var t=this._private;return void 0===e?t.notificationsEnabled:(t.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(0===e.batchCount)return this;if(e.batchCount--,0===e.batchCount){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach((function(C){var i=e.batchNotifications[C];i.empty()?t.notify(C):t.notify(C,i)}))}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch((function(){for(var C=Object.keys(e),i=0;i0;)t.removeChild(t.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach((function(e){var t=e._private;t.rscratch={},t.rstyle={},t.animation.current=[],t.animation.queue=[]}))},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};sr.invalidateDimensions=sr.resize;var lr={collection:function(e,t){return et(e)?this.$(e):Vt(e)?e.collection():Ct(e)?new WV(this,e,t):new WV(this)},nodes:function(e){var t=this.$((function(e){return e.isNode()}));return e?t.filter(e):t},edges:function(e){var t=this.$((function(e){return e.isEdge()}));return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};lr.elements=lr.filter=lr.$;var dr={};dr.apply=function(e){for(var t=this,C=t._private.cy.collection(),i=0;i0;if(s||M&&l){var d=void 0;s&&l||s?d=o.properties:l&&(d=o.mappedProperties);for(var u=0;u1&&(A=1),r.color){var p=H.valueMin[0],g=H.valueMax[0],v=H.valueMin[1],y=H.valueMax[1],Z=H.valueMin[2],S=H.valueMax[2],b=null==H.valueMin[3]?1:H.valueMin[3],w=null==H.valueMax[3]?1:H.valueMax[3],x=[Math.round(p+(g-p)*A),Math.round(v+(y-v)*A),Math.round(Z+(S-Z)*A),Math.round(b+(w-b)*A)];C={bypass:H.bypass,name:H.name,value:x,strValue:"rgb("+x[0]+", "+x[1]+", "+x[2]+")"}}else{if(!r.number)return!1;var O=H.valueMin+(H.valueMax-H.valueMin)*A;C=this.parse(H.name,O,H.bypass,s)}if(!C)return u(),!1;C.mapping=H,H=C;break;case V.data:for(var k=H.field.split("."),E=M.data,P=0;P0&&n>0){for(var r={},L=!1,o=0;o0?e.delayAnimation(V).play().promise().then(t):t()})).then((function(){return e.animation({style:r,duration:n,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()})).then((function(){C.removeBypasses(e,H),e.emitAndNotify("style"),i.transitioning=!1}))}else i.transitioning&&(this.removeBypasses(e,H),e.emitAndNotify("style"),i.transitioning=!1)},dr.checkTrigger=function(e,t,C,i,H,n){var V=this.properties[t],r=H(V);null!=r&&r(C,i)&&n(V)},dr.checkZOrderTrigger=function(e,t,C,i){var H=this;this.checkTrigger(e,t,C,i,(function(e){return e.triggersZOrder}),(function(){H._private.cy.notify("zorder",e)}))},dr.checkBoundsTrigger=function(e,t,C,i){this.checkTrigger(e,t,C,i,(function(e){return e.triggersBounds}),(function(H){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache(),"curve-style"!==t||"bezier"!==C&&"bezier"!==i||!H.triggersBoundsOfParallelBeziers||e.parallelEdges().forEach((function(e){e.isBundledBezier()&&e.dirtyBoundingBoxCache()}))}))},dr.checkTriggers=function(e,t,C,i){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,C,i),this.checkBoundsTrigger(e,t,C,i)};var ur={applyBypass:function(e,t,C,i){var H=[];if("*"===t||"**"===t){if(void 0!==C)for(var n=0;nt.length?n.substr(t.length):""}function r(){C=C.length>i.length?C.substr(i.length):""}for(n=n.replace(/[/][*](\s|.)+?[*][/]/g,"");;){if(n.match(/^\s*$/))break;var L=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!L){Xt("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}t=L[0];var o=L[1];if("core"!==o)if(new dn(o).invalid){Xt("Skipping parsing of block: Invalid selector found in string stylesheet: "+o),V();continue}var a=L[2],M=!1;C=a;for(var s=[];;){if(C.match(/^\s*$/))break;var l=C.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/);if(!l){Xt("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+a),M=!0;break}i=l[0];var d=l[1],u=l[2];if(this.properties[d])H.parse(d,u)?(s.push({name:d,val:u}),r()):(Xt("Skipping property: Invalid property definition in: "+i),r());else Xt("Skipping property: Invalid property name in: "+i),r()}if(M){V();break}H.selector(o);for(var A=0;A=7&&"d"===t[0]&&(o=new RegExp(r.data.regex).exec(t))){if(C)return!1;var s=r.data;return{name:e,value:o,strValue:""+t,mapped:s,field:o[1],bypass:C}}if(t.length>=10&&"m"===t[0]&&(a=new RegExp(r.mapData.regex).exec(t))){if(C)return!1;if(M.multiple)return!1;var l=r.mapData;if(!M.color&&!M.number)return!1;var d=this.parse(e,a[4]);if(!d||d.mapped)return!1;var u=this.parse(e,a[5]);if(!u||u.mapped)return!1;if(d.pfValue===u.pfValue||d.strValue===u.strValue)return Xt("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+d.strValue+"`"),this.parse(e,d.strValue);if(M.color){var A=d.value,c=u.value;if(!(A[0]!==c[0]||A[1]!==c[1]||A[2]!==c[2]||A[3]!==c[3]&&(null!=A[3]&&1!==A[3]||null!=c[3]&&1!==c[3])))return!1}return{name:e,value:a,strValue:""+t,mapped:l,field:a[1],fieldMin:parseFloat(a[2]),fieldMax:parseFloat(a[3]),valueMin:d.value,valueMax:u.value,bypass:C}}}if(M.multiple&&"multiple"!==i){var h;if(h=L?t.split(/\s+/):Ct(t)?t:[t],M.evenMultiple&&h.length%2!=0)return null;for(var m=[],f=[],p=[],g="",v=!1,y=0;y0?" ":"")+Z.strValue}return M.validate&&!M.validate(m,f)?null:M.singleEnum&&v?1===m.length&&et(m[0])?{name:e,value:m[0],strValue:m[0],bypass:C}:null:{name:e,value:m,pfValue:p,strValue:g,bypass:C,units:f}}var S,b,w=function(){for(var i=0;iM.max||M.strictMax&&t===M.max))return null;var P={name:e,value:t,strValue:""+t+(x||""),units:x,bypass:C};return M.unitless||"px"!==x&&"em"!==x?P.pfValue=t:P.pfValue="px"!==x&&x?this.getEmSizeInPixels()*t:t,"ms"!==x&&"s"!==x||(P.pfValue="ms"===x?t:1e3*t),"deg"!==x&&"rad"!==x||(P.pfValue="rad"===x?t:(S=t,Math.PI*S/180)),"%"===x&&(P.pfValue=t/100),P}if(M.propList){var T=[],_=""+t;if("none"===_);else{for(var B=_.split(/\s*,\s*|\s+/),D=0;D0&&L>0&&!isNaN(C.w)&&!isNaN(C.h)&&C.w>0&&C.h>0)return{zoom:V=(V=(V=Math.min((r-2*t)/C.w,(L-2*t)/C.h))>this._private.maxZoom?this._private.maxZoom:V)=C.minZoom&&(C.maxZoom=t),this},minZoom:function(e){return void 0===e?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return void 0===e?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var t,C,i=this._private,H=i.pan,n=i.zoom,V=!1;if(i.zoomingEnabled||(V=!0),Ht(e)?C=e:it(e)&&(C=e.level,null!=e.position?t=yC(e.position,n,H):null!=e.renderedPosition&&(t=e.renderedPosition),null==t||i.panningEnabled||(V=!0)),C=(C=C>i.maxZoom?i.maxZoom:C)t.maxZoom||!t.zoomingEnabled?n=!0:(t.zoom=r,H.push("zoom"))}if(i&&(!n||!e.cancelOnFailedZoom)&&t.panningEnabled){var L=e.pan;Ht(L.x)&&(t.pan.x=L.x,V=!1),Ht(L.y)&&(t.pan.y=L.y,V=!1),V||H.push("pan")}return H.length>0&&(H.push("viewport"),this.emit(H.join(" ")),this.notify("viewport")),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(et(e)){var C=e;e=this.mutableElements().filter(C)}else Vt(e)||(e=this.mutableElements());if(0!==e.length){var i=e.boundingBox(),H=this.width(),n=this.height();return{x:(H-(t=void 0===t?this._private.zoom:t)*(i.x1+i.x2))/2,y:(n-t*(i.y1+i.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,C=this._private,i=C.container;return C.sizeCache=C.sizeCache||(i?(e=Ue.getComputedStyle(i),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:i.clientWidth-t("padding-left")-t("padding-right"),height:i.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,C=this.renderedExtent(),i={x1:(C.x1-e.x)/t,x2:(C.x2-e.x)/t,y1:(C.y1-e.y)/t,y2:(C.y2-e.y)/t};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}},multiClickDebounceTime:function(e){return e?(this._private.multiClickDebounceTime=e,this):this._private.multiClickDebounceTime}};Zr.centre=Zr.center,Zr.autolockNodes=Zr.autolock,Zr.autoungrabifyNodes=Zr.autoungrabify;var Sr={data:xH.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:xH.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:xH.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:xH.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Sr.attr=Sr.data,Sr.removeAttr=Sr.removeData;var br=function(e){var t=this,C=(e=ft({},e)).container;C&&!nt(C)&&nt(C[0])&&(C=C[0]);var i=C?C._cyreg:null;(i=i||{})&&i.cy&&(i.cy.destroy(),i={});var H=i.readies=i.readies||[];C&&(C._cyreg=i),i.cy=t;var n=void 0!==Ue&&void 0!==C&&!e.headless,V=e;V.layout=ft({name:n?"grid":"null"},V.layout),V.renderer=ft({name:n?"canvas":"null"},V.renderer);var r=function(e,t,C){return void 0!==t?t:void 0!==C?C:e},L=this._private={container:C,ready:!1,options:V,elements:new WV(this),listeners:[],aniEles:new WV(this),data:V.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:r(!0,V.zoomingEnabled),userZoomingEnabled:r(!0,V.userZoomingEnabled),panningEnabled:r(!0,V.panningEnabled),userPanningEnabled:r(!0,V.userPanningEnabled),boxSelectionEnabled:r(!0,V.boxSelectionEnabled),autolock:r(!1,V.autolock,V.autolockNodes),autoungrabify:r(!1,V.autoungrabify,V.autoungrabifyNodes),autounselectify:r(!1,V.autounselectify),styleEnabled:void 0===V.styleEnabled?n:V.styleEnabled,zoom:Ht(V.zoom)?V.zoom:1,pan:{x:it(V.pan)&&Ht(V.pan.x)?V.pan.x:0,y:it(V.pan)&&Ht(V.pan.y)?V.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:r(250,V.multiClickDebounceTime)};this.createEmitter(),this.selectionType(V.selectionType),this.zoomRange({min:V.minZoom,max:V.maxZoom});L.styleEnabled&&t.setStyle([]);var o=ft({},V,V.renderer);t.initRenderer(o);!function(e,t){if(e.some(st))return vH.all(e).then(t);t(e)}([V.style,V.elements],(function(e){var C=e[0],n=e[1];L.styleEnabled&&t.style().append(C),function(e,C,i){t.notifications(!1);var H=t.mutableElements();H.length>0&&H.remove(),null!=e&&(it(e)||Ct(e))&&t.add(e),t.one("layoutready",(function(e){t.notifications(!0),t.emit(e),t.one("load",C),t.emitAndNotify("load")})).one("layoutstop",(function(){t.one("done",i),t.emit("done")}));var n=ft({},t._private.options.layout);n.eles=t.elements(),t.layout(n).run()}(n,(function(){t.startAnimationLoop(),L.ready=!0,tt(V.ready)&&t.on("ready",V.ready);for(var e=0;e0,o=BC(C.boundingBox?C.boundingBox:{x1:0,y1:0,w:i.width(),h:i.height()});if(Vt(C.roots))e=C.roots;else if(Ct(C.roots)){for(var a=[],M=0;M0;){var x=S.shift(),O=Z(x,b);if(O)x.outgoers().filter((function(e){return e.isNode()&&H.has(e)})).forEach(w);else if(null===O){Xt("Detected double maximal shift for node `"+x.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}y();var k=0;if(C.avoidOverlap)for(var E=0;E0&&c[0].length<=3?L/2:0),M=2*Math.PI/c[i].length*H;return 0===i&&1===c[0].length&&(a=1),{x:G+a*Math.cos(M),y:W+a*Math.sin(M)}}return{x:G+(H+1-(n+1)/2)*V,y:(i+1)*r}})),this};var Pr={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Tr(e){this.options=ft({},Pr,e)}Tr.prototype.run=function(){var e=this.options,t=e,C=e.cy,i=t.eles,H=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,n=i.nodes().not(":parent");t.sort&&(n=n.sort(t.sort));for(var V,r=BC(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:C.width(),h:C.height()}),L=r.x1+r.w/2,o=r.y1+r.h/2,a=(void 0===t.sweep?2*Math.PI-2*Math.PI/n.length:t.sweep)/Math.max(1,n.length-1),M=0,s=0;s1&&t.avoidOverlap){M*=1.75;var A=Math.cos(a)-Math.cos(0),c=Math.sin(a)-Math.sin(0),h=Math.sqrt(M*M/(A*A+c*c));V=Math.max(h,V)}return i.nodes().layoutPositions(this,t,(function(e,C){var i=t.startAngle+C*a*(H?1:-1),n=V*Math.cos(i),r=V*Math.sin(i);return{x:L+n,y:o+r}})),this};var _r,Br={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Dr(e){this.options=ft({},Br,e)}Dr.prototype.run=function(){for(var e=this.options,t=e,C=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,i=e.cy,H=t.eles,n=H.nodes().not(":parent"),V=BC(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:i.width(),h:i.height()}),r=V.x1+V.w/2,L=V.y1+V.h/2,o=[],a=0,M=0;M0)Math.abs(h[0].value-f.value)>=A&&(h=[],c.push(h));h.push(f)}var p=a+t.minNodeSpacing;if(!t.avoidOverlap){var g=c.length>0&&c[0].length>1,v=(Math.min(V.w,V.h)/2-p)/(c.length+g?1:0);p=Math.min(p,v)}for(var y=0,Z=0;Z1&&t.avoidOverlap){var x=Math.cos(w)-Math.cos(0),O=Math.sin(w)-Math.sin(0),k=Math.sqrt(p*p/(x*x+O*O));y=Math.max(k,y)}S.r=y,y+=p}if(t.equidistant){for(var E=0,P=0,T=0;T=e.numIter)&&($r(i,e),i.temperature=i.temperature*e.coolingFactor,!(i.temperature=e.animationThreshold&&n(),wt(t)):(HL(i,e),r())}()}else{for(;o;)o=V(L),L++;HL(i,e),r()}return this},Rr.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},Rr.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Fr=function(e,t,C){for(var i=C.eles.edges(),H=C.eles.nodes(),n={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:H.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:C.initialTemp,clientWidth:e.width(),clientHeight:e.width(),boundingBox:BC(C.boundingBox?C.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()})},V=C.eles.components(),r={},L=0;L0){n.graphSet.push(f);for(L=0;Li.count?0:i.graph},zr=function e(t,C,i,H){var n=H.graphSet[i];if(-10)var r=(o=i.nodeOverlap*V)*H/(u=Math.sqrt(H*H+n*n)),L=o*n/u;else{var o,a=Qr(e,H,n),M=Qr(t,-1*H,-1*n),s=M.x-a.x,l=M.y-a.y,d=s*s+l*l,u=Math.sqrt(d);r=(o=(e.nodeRepulsion+t.nodeRepulsion)/d)*s/u,L=o*l/u}e.isLocked||(e.offsetX-=r,e.offsetY-=L),t.isLocked||(t.offsetX+=r,t.offsetY+=L)}},qr=function(e,t,C,i){if(C>0)var H=e.maxX-t.minX;else H=t.maxX-e.minX;if(i>0)var n=e.maxY-t.minY;else n=t.maxY-e.minY;return H>=0&&n>=0?Math.sqrt(H*H+n*n):0},Qr=function(e,t,C){var i=e.positionX,H=e.positionY,n=e.height||1,V=e.width||1,r=C/t,L=n/V,o={};return 0===t&&0C?(o.x=i,o.y=H+n/2,o):0t&&-1*L<=r&&r<=L?(o.x=i-V/2,o.y=H-V*C/2/t,o):0=L)?(o.x=i+n*t/2/C,o.y=H+n/2,o):0>C&&(r<=-1*L||r>=L)?(o.x=i-n*t/2/C,o.y=H-n/2,o):o},Kr=function(e,t){for(var C=0;C1){var d=t.gravity*M/l,u=t.gravity*s/l;a.offsetX+=d,a.offsetY+=u}}}}},eL=function(e,t){var C=[],i=0,H=-1;for(C.push.apply(C,e.graphSet[0]),H+=e.graphSet[0].length;i<=H;){var n=C[i++],V=e.idToIndex[n],r=e.layoutNodes[V],L=r.children;if(0C)var H={x:C*e/i,y:C*t/i};else H={x:e,y:t};return H},iL=function e(t,C){var i=t.parentId;if(null!=i){var H=C.layoutNodes[C.idToIndex[i]],n=!1;return(null==H.maxX||t.maxX+H.padRight>H.maxX)&&(H.maxX=t.maxX+H.padRight,n=!0),(null==H.minX||t.minX-H.padLeftH.maxY)&&(H.maxY=t.maxY+H.padBottom,n=!0),(null==H.minY||t.minY-H.padTopd&&(M+=l+t.componentSpacing,a=0,s=0,l=0)}}},nL={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function VL(e){this.options=ft({},nL,e)}VL.prototype.run=function(){var e=this.options,t=e,C=e.cy,i=t.eles,H=i.nodes().not(":parent");t.sort&&(H=H.sort(t.sort));var n=BC(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:C.width(),h:C.height()});if(0===n.h||0===n.w)i.nodes().layoutPositions(this,t,(function(e){return{x:n.x1,y:n.y1}}));else{var V=H.size(),r=Math.sqrt(V*n.h/n.w),L=Math.round(r),o=Math.round(n.w/n.h*r),a=function(e){if(null==e)return Math.min(L,o);Math.min(L,o)==L?L=e:o=e},M=function(e){if(null==e)return Math.max(L,o);Math.max(L,o)==L?L=e:o=e},s=t.rows,l=null!=t.cols?t.cols:t.columns;if(null!=s&&null!=l)L=s,o=l;else if(null!=s&&null==l)L=s,o=Math.ceil(V/L);else if(null==s&&null!=l)o=l,L=Math.ceil(V/o);else if(o*L>V){var d=a(),u=M();(d-1)*u>=V?a(d-1):(u-1)*d>=V&&M(u-1)}else for(;o*L=V?M(c+1):a(A+1)}var h=n.w/o,m=n.h/L;if(t.condense&&(h=0,m=0),t.avoidOverlap)for(var f=0;f=o&&(k=0,O++)},P={},T=0;T(i=YC(e,t,f[p],f[p+1],f[p+2],f[p+3])))return A(C,i),!0}else if("bezier"===n.edgeType||"multibezier"===n.edgeType||"self"===n.edgeType||"compound"===n.edgeType)for(f=n.allpts,p=0;p+5(i=UC(e,t,f[p],f[p+1],f[p+2],f[p+3],f[p+4],f[p+5])))return A(C,i),!0;h=h||H.source,m=m||H.target;var g=V.getArrowWidth(L,a),v=[{name:"source",x:n.arrowStartX,y:n.arrowStartY,angle:n.srcArrowAngle},{name:"target",x:n.arrowEndX,y:n.arrowEndY,angle:n.tgtArrowAngle},{name:"mid-source",x:n.midX,y:n.midY,angle:n.midsrcArrowAngle},{name:"mid-target",x:n.midX,y:n.midY,angle:n.midtgtArrowAngle}];for(p=0;p0&&(c(h),c(m))}function m(e,t,C){return iC(e,t,C)}function f(C,i){var H,n=C._private,V=d;H=i?i+"-":"",C.boundingBox();var r=n.labelBounds[i||"main"],L=C.pstyle(H+"label").value;if("yes"===C.pstyle("text-events").strValue&&L){var o=m(n.rscratch,"labelX",i),a=m(n.rscratch,"labelY",i),M=m(n.rscratch,"labelAngle",i),s=C.pstyle(H+"text-margin-x").pfValue,l=C.pstyle(H+"text-margin-y").pfValue,u=r.x1-V-s,c=r.x2+V-s,h=r.y1-V-l,f=r.y2+V-l;if(M){var p=Math.cos(M),g=Math.sin(M),v=function(e,t){return{x:(e-=o)*p-(t-=a)*g+o,y:e*g+t*p+a}},y=v(u,h),Z=v(u,f),S=v(c,h),b=v(c,f),w=[y.x+s,y.y+l,S.x+s,S.y+l,b.x+s,b.y+l,Z.x+s,Z.y+l];if(XC(e,t,w))return A(C),!0}else if(zC(r,e,t))return A(C),!0}}C&&(L=L.interactive);for(var p=L.length-1;p>=0;p--){var g=L[p];g.isNode()?c(g)||f(g):h(g)||f(g)||f(g,"source")||f(g,"target")}return o},getAllInBox:function(e,t,C,i){for(var H,n,V=this.getCachedZSortedEles().interactive,r=[],L=Math.min(e,C),o=Math.max(e,C),a=Math.min(t,i),M=Math.max(t,i),s=BC({x1:e=L,y1:t=a,x2:C=o,y2:i=M}),l=0;l0?Math.max(e-t,0):Math.min(e+t,0)},b=S(y,g),w=S(Z,v),x=!1;"auto"===A?u=Math.abs(b)>Math.abs(w)?H:i:A===L||A===r?(u=i,x=!0):A!==n&&A!==V||(u=H,x=!0);var O,k=u===i,E=k?w:b,P=k?Z:y,T=xC(P),_=!1;(x&&(h||f)||!(A===r&&P<0||A===L&&P>0||A===n&&P>0||A===V&&P<0)||(E=(T*=-1)*Math.abs(E),_=!0),h)?O=(m<0?1+m:m)*E:O=(m<0?E:0)+m*T;var B=function(e){return Math.abs(e)=Math.abs(E)},D=B(O),N=B(Math.abs(E)-Math.abs(O));if((D||N)&&!_)if(k){var R=Math.abs(P)<=M/2,F=Math.abs(y)<=s/2;if(R){var I=(o.x1+o.x2)/2,z=o.y1,j=o.y2;C.segpts=[I,z,I,j]}else if(F){var G=(o.y1+o.y2)/2,W=o.x1,$=o.x2;C.segpts=[W,G,$,G]}else C.segpts=[o.x1,o.y2]}else{var U=Math.abs(P)<=a/2,Y=Math.abs(Z)<=l/2;if(U){var X=(o.y1+o.y2)/2,q=o.x1,Q=o.x2;C.segpts=[q,X,Q,X]}else if(Y){var K=(o.x1+o.x2)/2,J=o.y1,ee=o.y2;C.segpts=[K,J,K,ee]}else C.segpts=[o.x2,o.y1]}else if(k){var te=o.y1+O+(d?M/2*T:0),Ce=o.x1,ie=o.x2;C.segpts=[Ce,te,ie,te]}else{var He=o.x1+O+(d?a/2*T:0),ne=o.y1,Ve=o.y2;C.segpts=[He,ne,He,Ve]}},fL.tryToCorrectInvalidPoints=function(e,t){var C=e._private.rscratch;if("bezier"===C.edgeType){var i=t.srcPos,H=t.tgtPos,n=t.srcW,V=t.srcH,r=t.tgtW,L=t.tgtH,o=t.srcShape,a=t.tgtShape,M=!Ht(C.startX)||!Ht(C.startY),s=!Ht(C.arrowStartX)||!Ht(C.arrowStartY),l=!Ht(C.endX)||!Ht(C.endY),d=!Ht(C.arrowEndX)||!Ht(C.arrowEndY),u=3*(this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth),A=OC({x:C.ctrlpts[0],y:C.ctrlpts[1]},{x:C.startX,y:C.startY}),c=As.poolIndex()){var l=M;M=s,s=l}var d=r.srcPos=M.position(),u=r.tgtPos=s.position(),A=r.srcW=M.outerWidth(),c=r.srcH=M.outerHeight(),h=r.tgtW=s.outerWidth(),m=r.tgtH=s.outerHeight(),f=r.srcShape=C.nodeShapes[t.getNodeShape(M)],p=r.tgtShape=C.nodeShapes[t.getNodeShape(s)];r.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var g=0;g0){var I=o,z=kC(I,SC(t)),j=kC(I,SC(F)),G=z;if(j2)kC(I,{x:F[2],y:F[3]})0){var ie=a,He=kC(ie,SC(t)),ne=kC(ie,SC(Ce)),Ve=He;if(ne2)kC(ie,{x:Ce[2],y:Ce[3]})=o||h){a={cp:u,segment:c};break}}if(a)break}var m=a.cp,f=a.segment,p=(o-s)/f.length,g=f.t1-f.t0,v=r?f.t0+g*p:f.t1-g*p;v=_C(0,v,1),t=TC(m.p0,m.p1,m.p2,v),H=function(e,t,C,i){var H=_C(0,i-.001,1),n=_C(0,i+.001,1),V=TC(e,t,C,H),r=TC(e,t,C,n);return bL(V,r)}(m.p0,m.p1,m.p2,v);break;case"straight":case"segments":case"haystack":for(var y,Z,S,b,w=0,x=i.allpts.length,O=0;O+3=o));O+=2);var k=(o-Z)/y;k=_C(0,k,1),t=function(e,t,C,i){var H=t.x-e.x,n=t.y-e.y,V=OC(e,t),r=H/V,L=n/V;return C=null==C?0:C,i=null!=i?i:C*V,{x:e.x+r*i,y:e.y+L*i}}(S,b,k),H=bL(S,b)}V("labelX",C,t.x),V("labelY",C,t.y),V("labelAutoAngle",C,H)}};o("source"),o("target"),this.applyLabelDimensions(e)}},ZL.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},ZL.applyPrefixedLabelDimensions=function(e,t){var C=e._private,i=this.getLabelText(e,t),H=this.calculateLabelDimensions(e,i),n=e.pstyle("line-height").pfValue,V=e.pstyle("text-wrap").strValue,r=iC(C.rscratch,"labelWrapCachedLines",t)||[],L="wrap"!==V?1:Math.max(r.length,1),o=H.height/L,a=o*n,M=H.width,s=H.height+(L-1)*(n-1)*o;HC(C.rstyle,"labelWidth",t,M),HC(C.rscratch,"labelWidth",t,M),HC(C.rstyle,"labelHeight",t,s),HC(C.rscratch,"labelHeight",t,s),HC(C.rscratch,"labelLineHeight",t,a)},ZL.getLabelText=function(e,t){var C=e._private,i=t?t+"-":"",H=e.pstyle(i+"label").strValue,n=e.pstyle("text-transform").value,V=function(e,i){return i?(HC(C.rscratch,e,t,i),i):iC(C.rscratch,e,t)};if(!H)return"";"none"==n||("uppercase"==n?H=H.toUpperCase():"lowercase"==n&&(H=H.toLowerCase()));var r=e.pstyle("text-wrap").value;if("wrap"===r){var L=V("labelKey");if(null!=L&&V("labelWrapKey")===L)return V("labelWrapCachedText");for(var o=H.split("\n"),a=e.pstyle("text-max-width").pfValue,M="anywhere"===e.pstyle("text-overflow-wrap").value,s=[],l=/[\s\u200b]+/,d=M?"":" ",u=0;ua){for(var m=A.split(l),f="",p=0;py)break;Z+=H[b],b===H.length-1&&(S=!0)}return S||(Z+="…"),Z}return H},ZL.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,C=e.pstyle("text-halign").strValue;if("auto"!==t)return t;if(!e.isNode())return"center";switch(C){case"left":return"right";case"right":return"left";default:return"center"}},ZL.calculateLabelDimensions=function(e,t){var C=Bt(t,e._private.labelDimsKey),i=this.labelDimCache||(this.labelDimCache=[]),H=i[C];if(null!=H)return H;var n=e.pstyle("font-style").strValue,V=e.pstyle("font-size").pfValue,r=e.pstyle("font-family").strValue,L=e.pstyle("font-weight").strValue,o=this.labelCalcCanvas,a=this.labelCalcCanvasContext;if(!o){o=this.labelCalcCanvas=document.createElement("canvas"),a=this.labelCalcCanvasContext=o.getContext("2d");var M=o.style;M.position="absolute",M.left="-9999px",M.top="-9999px",M.zIndex="-1",M.visibility="hidden",M.pointerEvents="none"}a.font="".concat(n," ").concat(L," ").concat(V,"px ").concat(r);for(var s=0,l=0,d=t.split("\n"),u=0;u1&&void 0!==arguments[1])||arguments[1];if(t.merge(e),C)for(var i=0;i=e.desktopTapThreshold2}var S=i(t);A&&(e.hoverData.tapholdCancelled=!0);n=!0,C(u,["mousemove","vmousemove","tapdrag"],t,{x:M[0],y:M[1]});var b=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||V.emit({originalEvent:t,type:"boxstart",position:{x:M[0],y:M[1]}}),d[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(A){var w={originalEvent:t,type:"cxtdrag",position:{x:M[0],y:M[1]}};h?h.emit(w):V.emit(w),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&u===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:M[0],y:M[1]}}),e.hoverData.cxtOver=u,u&&u.emit({originalEvent:t,type:"cxtdragover",position:{x:M[0],y:M[1]}}))}}else if(e.hoverData.dragging){if(n=!0,V.panningEnabled()&&V.userPanningEnabled()){var x;if(e.hoverData.justStartedPan){var O=e.hoverData.mdownPos;x={x:(M[0]-O[0])*r,y:(M[1]-O[1])*r},e.hoverData.justStartedPan=!1}else x={x:m[0]*r,y:m[1]*r};V.panBy(x),V.emit("dragpan"),e.hoverData.dragged=!0}M=e.projectIntoViewport(t.clientX,t.clientY)}else if(1!=d[4]||null!=h&&!h.pannable()){if(h&&h.pannable()&&h.active()&&h.unactivate(),h&&h.grabbed()||u==c||(c&&C(c,["mouseout","tapdragout"],t,{x:M[0],y:M[1]}),u&&C(u,["mouseover","tapdragover"],t,{x:M[0],y:M[1]}),e.hoverData.last=u),h)if(A){if(V.boxSelectionEnabled()&&S)h&&h.grabbed()&&(a(p),h.emit("freeon"),p.emit("free"),e.dragData.didDrag&&(h.emit("dragfreeon"),p.emit("dragfree"))),b();else if(h&&h.grabbed()&&e.nodeIsDraggable(h)){var k=!e.dragData.didDrag;k&&e.redrawHint("eles",!0),e.dragData.didDrag=!0;var E=V.collection();e.hoverData.draggingEles||L(p,{inDragLayer:!0});var P={x:0,y:0};if(Ht(m[0])&&Ht(m[1])&&(P.x+=m[0],P.y+=m[1],k)){var T=e.hoverData.dragDelta;T&&Ht(T[0])&&Ht(T[1])&&(P.x+=T[0],P.y+=T[1])}for(var _=0;_0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=o=n.collection()),L!=M||e.dragData.didDrag||e.hoverData.selecting||null!=L&&L._private.selectable&&(e.hoverData.dragging||("additive"===n.selectionType()||s?L.selected()?L.unselect(["tapunselect"]):L.select(["tapselect"]):s||(n.$(t).unmerge(L).unselect(["tapunselect"]),L.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var u=n.collection(e.getAllInBox(r[0],r[1],r[2],r[3]));e.redrawHint("select",!0),u.length>0&&e.redrawHint("eles",!0),n.emit({type:"boxend",originalEvent:H,position:{x:V[0],y:V[1]}});var A=function(e){return e.selectable()&&!e.selected()};"additive"===n.selectionType()||s||n.$(t).unmerge(u).unselect(),u.emit("box").stdFilter(A).select().emit("boxselect"),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!r[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var f=M&&M.grabbed();a(o),f&&(M.emit("freeon"),o.emit("free"),e.dragData.didDrag&&(M.emit("dragfreeon"),o.emit("dragfree")))}}r[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null}}),!1);var p,g,v,y,Z,S,b,w,x,O,k,E,P,T=function(t){if(!e.scrollingPage){var C=e.cy,i=C.zoom(),H=C.pan(),n=e.projectIntoViewport(t.clientX,t.clientY),V=[n[0]*i+H.x,n[1]*i+H.y];if(e.hoverData.draggingEles||e.hoverData.dragging||e.hoverData.cxtStarted||0!==e.selection[4])t.preventDefault();else if(C.panningEnabled()&&C.userPanningEnabled()&&C.zoomingEnabled()&&C.userZoomingEnabled()){var r;t.preventDefault(),e.data.wheelZooming=!0,clearTimeout(e.data.wheelTimeout),e.data.wheelTimeout=setTimeout((function(){e.data.wheelZooming=!1,e.redrawHint("eles",!0),e.redraw()}),150),r=null!=t.deltaY?t.deltaY/-250:null!=t.wheelDeltaY?t.wheelDeltaY/1e3:t.wheelDelta/1e3,r*=e.wheelSensitivity,1===t.deltaMode&&(r*=33);var L=C.zoom()*Math.pow(10,r);"gesturechange"===t.type&&(L=e.gestureStartZoom*t.scale),C.zoom({level:L,renderedPosition:{x:V[0],y:V[1]}}),C.emit("gesturechange"===t.type?"pinchzoom":"scrollzoom")}}};e.registerBinding(e.container,"wheel",T,!0),e.registerBinding(window,"scroll",(function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout((function(){e.scrollingPage=!1}),250)}),!0),e.registerBinding(e.container,"gesturestart",(function(t){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||t.preventDefault()}),!0),e.registerBinding(e.container,"gesturechange",(function(t){e.hasTouchStarted||T(t)}),!0),e.registerBinding(e.container,"mouseout",(function(t){var C=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:C[0],y:C[1]}})}),!1),e.registerBinding(e.container,"mouseover",(function(t){var C=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:C[0],y:C[1]}})}),!1);var _,B,D,N,R,F,I,z=function(e,t,C,i){return Math.sqrt((C-e)*(C-e)+(i-t)*(i-t))},j=function(e,t,C,i){return(C-e)*(C-e)+(i-t)*(i-t)};if(e.registerBinding(e.container,"touchstart",_=function(t){if(e.hasTouchStarted=!0,f(t)){s(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var i=e.cy,H=e.touchData.now,n=e.touchData.earlier;if(t.touches[0]){var r=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);H[0]=r[0],H[1]=r[1]}if(t.touches[1]){r=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);H[2]=r[0],H[3]=r[1]}if(t.touches[2]){r=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);H[4]=r[0],H[5]=r[1]}if(t.touches[1]){e.touchData.singleTouchMoved=!0,a(e.dragData.touchDragEles);var M=e.findContainerClientCoords();x=M[0],O=M[1],k=M[2],E=M[3],p=t.touches[0].clientX-x,g=t.touches[0].clientY-O,v=t.touches[1].clientX-x,y=t.touches[1].clientY-O,P=0<=p&&p<=k&&0<=v&&v<=k&&0<=g&&g<=E&&0<=y&&y<=E;var l=i.pan(),d=i.zoom();Z=z(p,g,v,y),S=j(p,g,v,y),w=[((b=[(p+v)/2,(g+y)/2])[0]-l.x)/d,(b[1]-l.y)/d];if(S<4e4&&!t.touches[2]){var u=e.findNearestElement(H[0],H[1],!0,!0),A=e.findNearestElement(H[2],H[3],!0,!0);return u&&u.isNode()?(u.activate().emit({originalEvent:t,type:"cxttapstart",position:{x:H[0],y:H[1]}}),e.touchData.start=u):A&&A.isNode()?(A.activate().emit({originalEvent:t,type:"cxttapstart",position:{x:H[0],y:H[1]}}),e.touchData.start=A):i.emit({originalEvent:t,type:"cxttapstart",position:{x:H[0],y:H[1]}}),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(t.touches[2])i.boxSelectionEnabled()&&t.preventDefault();else if(t.touches[1]);else if(t.touches[0]){var c=e.findNearestElements(H[0],H[1],!0,!0),h=c[0];if(null!=h&&(h.activate(),e.touchData.start=h,e.touchData.starts=c,e.nodeIsGrabbable(h))){var m=e.dragData.touchDragEles=i.collection(),T=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),h.selected()?(T=i.$((function(t){return t.selected()&&e.nodeIsGrabbable(t)})),L(T,{addToList:m})):o(h,{addToList:m}),V(h);var _=function(e){return{originalEvent:t,type:e,position:{x:H[0],y:H[1]}}};h.emit(_("grabon")),T?T.forEach((function(e){e.emit(_("grab"))})):h.emit(_("grab"))}C(h,["touchstart","tapstart","vmousedown"],t,{x:H[0],y:H[1]}),null==h&&(e.data.bgActivePosistion={x:r[0],y:r[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout((function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||C(e.touchData.start,["taphold"],t,{x:H[0],y:H[1]})}),e.tapholdDuration)}if(t.touches.length>=1){for(var B=e.touchData.startPosition=[],D=0;D=e.touchTapThreshold2}if(i&&e.touchData.cxt){t.preventDefault();var b=t.touches[0].clientX-x,k=t.touches[0].clientY-O,E=t.touches[1].clientX-x,T=t.touches[1].clientY-O,_=j(b,k,E,T);if(_/S>=2.25||_>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var B={originalEvent:t,type:"cxttapend",position:{x:r[0],y:r[1]}};e.touchData.start?(e.touchData.start.unactivate().emit(B),e.touchData.start=null):V.emit(B)}}if(i&&e.touchData.cxt){B={originalEvent:t,type:"cxtdrag",position:{x:r[0],y:r[1]}};e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(B):V.emit(B),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var D=e.findNearestElement(r[0],r[1],!0,!0);e.touchData.cxtOver&&D===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:r[0],y:r[1]}}),e.touchData.cxtOver=D,D&&D.emit({originalEvent:t,type:"cxtdragover",position:{x:r[0],y:r[1]}}))}else if(i&&t.touches[2]&&V.boxSelectionEnabled())t.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||V.emit({originalEvent:t,type:"boxstart",position:{x:r[0],y:r[1]}}),e.touchData.selecting=!0,e.touchData.didSelect=!0,n[4]=1,n&&0!==n.length&&void 0!==n[0]?(n[2]=(r[0]+r[2]+r[4])/3,n[3]=(r[1]+r[3]+r[5])/3):(n[0]=(r[0]+r[2]+r[4])/3,n[1]=(r[1]+r[3]+r[5])/3,n[2]=(r[0]+r[2]+r[4])/3+1,n[3]=(r[1]+r[3]+r[5])/3+1),e.redrawHint("select",!0),e.redraw();else if(i&&t.touches[1]&&!e.touchData.didSelect&&V.zoomingEnabled()&&V.panningEnabled()&&V.userZoomingEnabled()&&V.userPanningEnabled()){if(t.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),J=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var N=0;N0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(window,"touchcancel",D=function(t){var C=e.touchData.start;e.touchData.capture=!1,C&&C.unactivate()}),e.registerBinding(window,"touchend",N=function(i){var H=e.touchData.start;if(e.touchData.capture){0===i.touches.length&&(e.touchData.capture=!1),i.preventDefault();var n=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var V,r=e.cy,L=r.zoom(),o=e.touchData.now,M=e.touchData.earlier;if(i.touches[0]){var s=e.projectIntoViewport(i.touches[0].clientX,i.touches[0].clientY);o[0]=s[0],o[1]=s[1]}if(i.touches[1]){s=e.projectIntoViewport(i.touches[1].clientX,i.touches[1].clientY);o[2]=s[0],o[3]=s[1]}if(i.touches[2]){s=e.projectIntoViewport(i.touches[2].clientX,i.touches[2].clientY);o[4]=s[0],o[5]=s[1]}if(H&&H.unactivate(),e.touchData.cxt){if(V={originalEvent:i,type:"cxttapend",position:{x:o[0],y:o[1]}},H?H.emit(V):r.emit(V),!e.touchData.cxtDragged){var l={originalEvent:i,type:"cxttap",position:{x:o[0],y:o[1]}};H?H.emit(l):r.emit(l)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!i.touches[2]&&r.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var d=r.collection(e.getAllInBox(n[0],n[1],n[2],n[3]));n[0]=void 0,n[1]=void 0,n[2]=void 0,n[3]=void 0,n[4]=0,e.redrawHint("select",!0),r.emit({type:"boxend",originalEvent:i,position:{x:o[0],y:o[1]}});d.emit("box").stdFilter((function(e){return e.selectable()&&!e.selected()})).select().emit("boxselect"),d.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=H&&H.unactivate(),i.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(i.touches[1]);else if(i.touches[0]);else if(!i.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var u=e.dragData.touchDragEles;if(null!=H){var A=H._private.grabbed;a(u),e.redrawHint("drag",!0),e.redrawHint("eles",!0),A&&(H.emit("freeon"),u.emit("free"),e.dragData.didDrag&&(H.emit("dragfreeon"),u.emit("dragfree"))),C(H,["touchend","tapend","vmouseup","tapdragout"],i,{x:o[0],y:o[1]}),H.unactivate(),e.touchData.start=null}else{var c=e.findNearestElement(o[0],o[1],!0,!0);C(c,["touchend","tapend","vmouseup","tapdragout"],i,{x:o[0],y:o[1]})}var h=e.touchData.startPosition[0]-o[0],m=h*h,f=e.touchData.startPosition[1]-o[1],p=(m+f*f)*L*L;e.touchData.singleTouchMoved||(H||r.$(":selected").unselect(["tapunselect"]),C(H,["tap","vclick"],i,{x:o[0],y:o[1]}),R=!1,i.timeStamp-I<=r.multiClickDebounceTime()?(F&&clearTimeout(F),R=!0,I=null,C(H,["dbltap","vdblclick"],i,{x:o[0],y:o[1]})):(F=setTimeout((function(){R||C(H,["onetap","voneclick"],i,{x:o[0],y:o[1]})}),r.multiClickDebounceTime()),I=i.timeStamp)),null!=H&&!e.dragData.didDrag&&H._private.selectable&&p2){for(var w=[o[0],o[1]],x=Math.pow(w[0]-e,2)+Math.pow(w[1]-t,2),O=1;O0)return u[0]}return null},s=Object.keys(a),l=0;l0?L:GC(H,n,e,t,C,i,V)},checkPoint:function(e,t,C,i,H,n,V){var r=Li(i,H),L=2*r;if(qC(e,t,this.points,n,V,i,H-L,[0,-1],C))return!0;if(qC(e,t,this.points,n,V,i-L,H,[0,-1],C))return!0;var o=i/2+2*C,a=H/2+2*C;return!!XC(e,t,[n-o,V-a,n-o,V,n+o,V,n+o,V-a])||(!!JC(e,t,L,L,n+i/2-r,V+H/2-r,C)||!!JC(e,t,L,L,n-i/2+r,V+H/2-r,C))}}},_L.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",ni(3,0)),this.generateRoundPolygon("round-triangle",ni(3,0)),this.generatePolygon("rectangle",ni(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var C=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",C),this.generateRoundPolygon("round-diamond",C),this.generatePolygon("pentagon",ni(5,0)),this.generateRoundPolygon("round-pentagon",ni(5,0)),this.generatePolygon("hexagon",ni(6,0)),this.generateRoundPolygon("round-hexagon",ni(6,0)),this.generatePolygon("heptagon",ni(7,0)),this.generateRoundPolygon("round-heptagon",ni(7,0)),this.generatePolygon("octagon",ni(8,0)),this.generateRoundPolygon("round-octagon",ni(8,0));var i=new Array(20),H=ri(5,0),n=ri(5,Math.PI/5),V=.5*(3-Math.sqrt(5));V*=1.57;for(var r=0;r=e.deqFastCost*u)break}else if(H){if(l>=e.deqCost*L||l>=e.deqAvgCost*r)break}else if(d>=16.666666666666668*e.deqNoDrawCost)break;var A=e.deq(t,M,a);if(!(A.length>0))break;for(var c=0;c0&&(e.onDeqd(t,o),!H&&e.shouldRedraw(t,o,M,a)&&i())}),H(t))}}},IL=function(){function e(t){var C=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Gt;ze(this,e),this.idsByKey=new nC,this.keyForId=new nC,this.cachesByLvl=new nC,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=C}return Ge(e,[{key:"getIdsFor",value:function(e){null==e&&Ut("Can not get id list for null key");var t=this.idsByKey,C=this.idsByKey.get(e);return C||(C=new rC,t.set(e,C)),C}},{key:"addIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).add(t)}},{key:"deleteIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).delete(t)}},{key:"getNumberOfIdsForKey",value:function(e){return null==e?0:this.getIdsFor(e).size}},{key:"updateKeyMappingFor",value:function(e){var t=e.id(),C=this.keyForId.get(t),i=this.getKey(e);this.deleteIdForKey(C,t),this.addIdForKey(i,t),this.keyForId.set(t,i)}},{key:"deleteKeyMappingFor",value:function(e){var t=e.id(),C=this.keyForId.get(t);this.deleteIdForKey(C,t),this.keyForId.delete(t)}},{key:"keyHasChangedFor",value:function(e){var t=e.id();return this.keyForId.get(t)!==this.getKey(e)}},{key:"isInvalid",value:function(e){return this.keyHasChangedFor(e)||this.doesEleInvalidateKey(e)}},{key:"getCachesAt",value:function(e){var t=this.cachesByLvl,C=this.lvls,i=t.get(e);return i||(i=new nC,t.set(e,i),C.push(e)),i}},{key:"getCache",value:function(e,t){return this.getCachesAt(t).get(e)}},{key:"get",value:function(e,t){var C=this.getKey(e),i=this.getCache(C,t);return null!=i&&this.updateKeyMappingFor(e),i}},{key:"getForCachedKey",value:function(e,t){var C=this.keyForId.get(e.id());return this.getCache(C,t)}},{key:"hasCache",value:function(e,t){return this.getCachesAt(t).has(e)}},{key:"has",value:function(e,t){var C=this.getKey(e);return this.hasCache(C,t)}},{key:"setCache",value:function(e,t,C){C.key=e,this.getCachesAt(t).set(e,C)}},{key:"set",value:function(e,t,C){var i=this.getKey(e);this.setCache(i,t,C),this.updateKeyMappingFor(e)}},{key:"deleteCache",value:function(e,t){this.getCachesAt(t).delete(e)}},{key:"delete",value:function(e,t){var C=this.getKey(e);this.deleteCache(C,t)}},{key:"invalidateKey",value:function(e){var t=this;this.lvls.forEach((function(C){return t.deleteCache(e,C)}))}},{key:"invalidate",value:function(e){var t=e.id(),C=this.keyForId.get(t);this.deleteKeyMappingFor(e);var i=this.doesEleInvalidateKey(e);return i&&this.invalidateKey(C),i||0===this.getNumberOfIdsForKey(C)}}]),e}(),zL={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},jL=eC({getKey:null,doesEleInvalidateKey:Gt,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:jt,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),GL=function(e,t){var C=this;C.renderer=e,C.onDequeues=[];var i=jL(t);ft(C,i),C.lookup=new IL(i.getKey,i.doesEleInvalidateKey),C.setupDequeueing()},WL=GL.prototype;WL.reasons=zL,WL.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]},WL.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},WL.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new Fe((function(e,t){return t.reqs-e.reqs}))},WL.getElementKeyToQueue=function(){return this.eleKeyToCacheQueue=this.eleKeyToCacheQueue||{}},WL.getElement=function(e,t,C,i,H){var n=this,V=this.renderer,r=V.cy.zoom(),L=this.lookup;if(!t||0===t.w||0===t.h||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed())return null;if(!n.allowEdgeTxrCaching&&e.isEdge()||!n.allowParentTxrCaching&&e.isParent())return null;if(null==i&&(i=Math.ceil(wC(r*C))),i<-4)i=-4;else if(r>=7.99||i>3)return null;var o=Math.pow(2,i),a=t.h*o,M=t.w*o,s=V.eleTextBiggerThanMin(e,o);if(!this.isVisible(e,s))return null;var l,d=L.get(e,i);if(d&&d.invalidated&&(d.invalidated=!1,d.texture.invalidatedWidth-=d.width),d)return d;if(l=a<=25?25:a<=50?50:50*Math.ceil(a/50),a>1024||M>1024)return null;var u=n.getTextureQueue(l),A=u[u.length-2],c=function(){return n.recycleTexture(l,M)||n.addTexture(l,M)};A||(A=u[u.length-1]),A||(A=c()),A.width-A.usedWidthi;b--)Z=n.getElement(e,t,C,b,zL.downscale);S()}else{var w;if(!f&&!p&&!g)for(var x=i-1;x>=-4;x--){var O=L.get(e,x);if(O){w=O;break}}if(m(w))return n.queueElement(e,i),w;A.context.translate(A.usedWidth,0),A.context.scale(o,o),this.drawElement(A.context,e,t,s,!1),A.context.scale(1/o,1/o),A.context.translate(-A.usedWidth,0)}return d={x:A.usedWidth,texture:A,level:i,scale:o,width:M,height:a,scaledLabelShown:s},A.usedWidth+=Math.ceil(M+8),A.eleCaches.push(d),L.set(e,i,d),n.checkTextureFullness(A),d},WL.invalidateElements=function(e){for(var t=0;t=.2*e.width&&this.retireTexture(e)},WL.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>.8&&e.fullnessChecks>=10?tC(t,e):e.fullnessChecks++},WL.retireTexture=function(e){var t=e.height,C=this.getTextureQueue(t),i=this.lookup;tC(C,e),e.retired=!0;for(var H=e.eleCaches,n=0;n=t)return n.retired=!1,n.usedWidth=0,n.invalidatedWidth=0,n.fullnessChecks=0,CC(n.eleCaches),n.context.setTransform(1,0,0,1,0,0),n.context.clearRect(0,0,n.width,n.height),tC(i,n),C.push(n),n}},WL.queueElement=function(e,t){var C=this.getElementQueue(),i=this.getElementKeyToQueue(),H=this.getKey(e),n=i[H];if(n)n.level=Math.max(n.level,t),n.eles.merge(e),n.reqs++,C.updateItem(n);else{var V={eles:e.spawn().merge(e),level:t,reqs:1,key:H};C.push(V),i[H]=V}},WL.dequeue=function(e){for(var t=this,C=t.getElementQueue(),i=t.getElementKeyToQueue(),H=[],n=t.lookup,V=0;V<1&&C.size()>0;V++){var r=C.pop(),L=r.key,o=r.eles[0],a=n.hasCache(o,r.level);if(i[L]=null,!a){H.push(r);var M=t.getBoundingBox(o);t.getElement(o,M,e,r.level,zL.dequeue)}}return H},WL.removeFromQueue=function(e){var t=this.getElementQueue(),C=this.getElementKeyToQueue(),i=this.getKey(e),H=C[i];null!=H&&(1===H.eles.length?(H.reqs=zt,t.updateItem(H),t.pop(),C[i]=null):H.eles.unmerge(e))},WL.onDequeue=function(e){this.onDequeues.push(e)},WL.offDequeue=function(e){tC(this.onDequeues,e)},WL.setupDequeueing=FL({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t,C){return e.dequeue(t,C)},onDeqd:function(e,t){for(var C=0;C=3.99||C>2)return null;i.validateLayersElesOrdering(C,e);var V,r,L=i.layersByLevel,o=Math.pow(2,C),a=L[C]=L[C]||[];if(i.levelIsComplete(C,e))return a;!function(){var t=function(t){if(i.validateLayersElesOrdering(t,e),i.levelIsComplete(t,e))return r=L[t],!0},H=function(e){if(!r)for(var i=C+e;-4<=i&&i<=2&&!t(i);i+=e);};H(1),H(-1);for(var n=a.length-1;n>=0;n--){var V=a[n];V.invalid&&tC(a,V)}}();var M=function(t){var H=(t=t||{}).after;if(function(){if(!V){V=BC();for(var t=0;t16e6)return null;var n=i.makeLayer(V,C);if(null!=H){var r=a.indexOf(H)+1;a.splice(r,0,n)}else(void 0===t.insert||t.insert)&&a.unshift(n);return n};if(i.skipping&&!n)return null;for(var s=null,l=e.length/1,d=!n,u=0;u=l||!jC(s.bb,A.boundingBox()))&&!(s=M({insert:!0,after:s})))return null;r||d?i.queueLayer(s,A):i.drawEleInLayer(s,A,C,t),s.eles.push(A),h[C]=s}}return r||(d?null:a)},UL.getEleLevelForLayerLevel=function(e,t){return e},UL.drawEleInLayer=function(e,t,C,i){var H=this.renderer,n=e.context,V=t.boundingBox();0!==V.w&&0!==V.h&&t.visible()&&(C=this.getEleLevelForLayerLevel(C,i),H.setImgSmoothing(n,!1),H.drawCachedElement(n,t,null,null,C,true),H.setImgSmoothing(n,!0))},UL.levelIsComplete=function(e,t){var C=this.layersByLevel[e];if(!C||0===C.length)return!1;for(var i=0,H=0;H0)return!1;if(n.invalid)return!1;i+=n.eles.length}return i===t.length},UL.validateLayersElesOrdering=function(e,t){var C=this.layersByLevel[e];if(C)for(var i=0;i0){e=!0;break}}return e},UL.invalidateElements=function(e){var t=this;0!==e.length&&(t.lastInvalidationTime=xt(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,(function(e,C,i){t.invalidateLayer(e)})))},UL.invalidateLayer=function(e){if(this.lastInvalidationTime=xt(),!e.invalid){var t=e.level,C=e.eles,i=this.layersByLevel[t];tC(i,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var H=0;H3&&void 0!==arguments[3])||arguments[3],H=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],n=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],V=this,r=t._private.rscratch;if((!n||t.visible())&&!r.badLine&&null!=r.allpts&&!isNaN(r.allpts[0])){var L;C&&(L=C,e.translate(-L.x1,-L.y1));var o=n?t.pstyle("opacity").value:1,a=n?t.pstyle("line-opacity").value:1,M=t.pstyle("curve-style").value,s=t.pstyle("line-style").value,l=t.pstyle("width").pfValue,d=t.pstyle("line-cap").value,u=o*a,A=o*a,c=function(){var C=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u;"straight-triangle"===M?(V.eleStrokeStyle(e,t,C),V.drawEdgeTrianglePath(t,e,r.allpts)):(e.lineWidth=l,e.lineCap=d,V.eleStrokeStyle(e,t,C),V.drawEdgePath(t,e,r.allpts,s),e.lineCap="butt")},h=function(){H&&V.drawEdgeOverlay(e,t)},m=function(){H&&V.drawEdgeUnderlay(e,t)},f=function(){var C=arguments.length>0&&void 0!==arguments[0]?arguments[0]:A;V.drawArrowheads(e,t,C)},p=function(){V.drawElementText(e,t,null,i)};e.lineJoin="round";var g="yes"===t.pstyle("ghost").value;if(g){var v=t.pstyle("ghost-offset-x").pfValue,y=t.pstyle("ghost-offset-y").pfValue,Z=t.pstyle("ghost-opacity").value,S=u*Z;e.translate(v,y),c(S),f(S),e.translate(-v,-y)}m(),c(),f(),h(),p(),C&&e.translate(L.x1,L.y1)}}},Mo=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,C){if(C.visible()){var i=C.pstyle("".concat(e,"-opacity")).value;if(0!==i){var H=this,n=H.usePaths(),V=C._private.rscratch,r=2*C.pstyle("".concat(e,"-padding")).pfValue,L=C.pstyle("".concat(e,"-color")).value;t.lineWidth=r,"self"!==V.edgeType||n?t.lineCap="round":t.lineCap="butt",H.colorStrokeStyle(t,L[0],L[1],L[2],i),H.drawEdgePath(C,t,V.allpts,"solid")}}}};ao.drawEdgeOverlay=Mo("overlay"),ao.drawEdgeUnderlay=Mo("underlay"),ao.drawEdgePath=function(e,t,C,i){var H,n=e._private.rscratch,V=t,r=!1,L=this.usePaths(),o=e.pstyle("line-dash-pattern").pfValue,a=e.pstyle("line-dash-offset").pfValue;if(L){var M=C.join("$");n.pathCacheKey&&n.pathCacheKey===M?(H=t=n.pathCache,r=!0):(H=t=new Path2D,n.pathCacheKey=M,n.pathCache=H)}if(V.setLineDash)switch(i){case"dotted":V.setLineDash([1,1]);break;case"dashed":V.setLineDash(o),V.lineDashOffset=a;break;case"solid":V.setLineDash([])}if(!r&&!n.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(C[0],C[1]),n.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var s=2;s+35&&void 0!==arguments[5]?arguments[5]:5;e.beginPath(),e.moveTo(t+n,C),e.lineTo(t+i-n,C),e.quadraticCurveTo(t+i,C,t+i,C+n),e.lineTo(t+i,C+H-n),e.quadraticCurveTo(t+i,C+H,t+i-n,C+H),e.lineTo(t+n,C+H),e.quadraticCurveTo(t,C+H,t,C+H-n),e.lineTo(t,C+n),e.quadraticCurveTo(t,C,t+n,C),e.closePath(),e.fill()}lo.eleTextBiggerThanMin=function(e,t){if(!t){var C=e.cy().zoom(),i=this.getPixelRatio(),H=Math.ceil(wC(C*i));t=Math.pow(2,H)}return!(e.pstyle("font-size").pfValue*t5&&void 0!==arguments[5])||arguments[5],V=this;if(null==i){if(n&&!V.eleTextBiggerThanMin(t))return}else if(!1===i)return;if(t.isNode()){var r=t.pstyle("label");if(!r||!r.value)return;var L=V.getLabelJustification(t);e.textAlign=L,e.textBaseline="bottom"}else{var o=t.element()._private.rscratch.badLine,a=t.pstyle("label"),M=t.pstyle("source-label"),s=t.pstyle("target-label");if(o||(!a||!a.value)&&(!M||!M.value)&&(!s||!s.value))return;e.textAlign="center",e.textBaseline="bottom"}var l,d=!C;C&&(l=C,e.translate(-l.x1,-l.y1)),null==H?(V.drawText(e,t,null,d,n),t.isEdge()&&(V.drawText(e,t,"source",d,n),V.drawText(e,t,"target",d,n))):V.drawText(e,t,H,d,n),C&&e.translate(l.x1,l.y1)},lo.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var C=0;C2&&void 0!==arguments[2])||arguments[2],i=t.pstyle("font-style").strValue,H=t.pstyle("font-size").pfValue+"px",n=t.pstyle("font-family").strValue,V=t.pstyle("font-weight").strValue,r=C?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,L=t.pstyle("text-outline-opacity").value*r,o=t.pstyle("color").value,a=t.pstyle("text-outline-color").value;e.font=i+" "+V+" "+H+" "+n,e.lineJoin="round",this.colorFillStyle(e,o[0],o[1],o[2],r),this.colorStrokeStyle(e,a[0],a[1],a[2],L)},lo.getTextAngle=function(e,t){var C=e._private.rscratch,i=t?t+"-":"",H=e.pstyle(i+"text-rotation"),n=iC(C,"labelAngle",t);return"autorotate"===H.strValue?e.isEdge()?n:0:"none"===H.strValue?0:H.pfValue},lo.drawText=function(e,t,C){var i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],H=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],n=t._private,V=n.rscratch,r=H?t.effectiveOpacity():1;if(!H||0!==r&&0!==t.pstyle("text-opacity").value){"main"===C&&(C=null);var L,o,a=iC(V,"labelX",C),M=iC(V,"labelY",C),s=this.getLabelText(t,C);if(null!=s&&""!==s&&!isNaN(a)&&!isNaN(M)){this.setupTextStyle(e,t,H);var l,d=C?C+"-":"",u=iC(V,"labelWidth",C),A=iC(V,"labelHeight",C),c=t.pstyle(d+"text-margin-x").pfValue,h=t.pstyle(d+"text-margin-y").pfValue,m=t.isEdge(),f=t.pstyle("text-halign").value,p=t.pstyle("text-valign").value;switch(m&&(f="center",p="center"),a+=c,M+=h,0!==(l=i?this.getTextAngle(t,C):0)&&(L=a,o=M,e.translate(L,o),e.rotate(l),a=0,M=0),p){case"top":break;case"center":M+=A/2;break;case"bottom":M+=A}var g=t.pstyle("text-background-opacity").value,v=t.pstyle("text-border-opacity").value,y=t.pstyle("text-border-width").pfValue,Z=t.pstyle("text-background-padding").pfValue;if(g>0||y>0&&v>0){var S=a-Z;switch(f){case"left":S-=u;break;case"center":S-=u/2}var b=M-A-Z,w=u+2*Z,x=A+2*Z;if(g>0){var O=e.fillStyle,k=t.pstyle("text-background-color").value;e.fillStyle="rgba("+k[0]+","+k[1]+","+k[2]+","+g*r+")";var E=t.pstyle("text-background-shape").strValue;0===E.indexOf("round")?uo(e,S,b,w,x,2):e.fillRect(S,b,w,x),e.fillStyle=O}if(y>0&&v>0){var P=e.strokeStyle,T=e.lineWidth,_=t.pstyle("text-border-color").value,B=t.pstyle("text-border-style").value;if(e.strokeStyle="rgba("+_[0]+","+_[1]+","+_[2]+","+v*r+")",e.lineWidth=y,e.setLineDash)switch(B){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=y/4,e.setLineDash([]);break;case"solid":e.setLineDash([])}if(e.strokeRect(S,b,w,x),"double"===B){var D=y/2;e.strokeRect(S+D,b+D,w-2*D,x-2*D)}e.setLineDash&&e.setLineDash([]),e.lineWidth=T,e.strokeStyle=P}}var N=2*t.pstyle("text-outline-width").pfValue;if(N>0&&(e.lineWidth=N),"wrap"===t.pstyle("text-wrap").value){var R=iC(V,"labelWrapCachedLines",C),F=iC(V,"labelLineHeight",C),I=u/2,z=this.getLabelJustification(t);switch("auto"===z||("left"===f?"left"===z?a+=-u:"center"===z&&(a+=-I):"center"===f?"left"===z?a+=-I:"right"===z&&(a+=I):"right"===f&&("center"===z?a+=I:"right"===z&&(a+=u))),p){case"top":case"center":case"bottom":M-=(R.length-1)*F}for(var j=0;j0&&e.strokeText(R[j],a,M),e.fillText(R[j],a,M),M+=F}else N>0&&e.strokeText(s,a,M),e.fillText(s,a,M);0!==l&&(e.rotate(-l),e.translate(-L,-o))}}};var Ao={drawNode:function(e,t,C){var i,H,n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],V=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],L=this,o=t._private,a=o.rscratch,M=t.position();if(Ht(M.x)&&Ht(M.y)&&(!r||t.visible())){var s,l,d=r?t.effectiveOpacity():1,u=L.usePaths(),A=!1,c=t.padding();i=t.width()+2*c,H=t.height()+2*c,C&&(l=C,e.translate(-l.x1,-l.y1));for(var h=t.pstyle("background-image"),m=h.value,f=new Array(m.length),p=new Array(m.length),g=0,v=0;v0&&void 0!==arguments[0]?arguments[0]:x;L.eleFillStyle(e,t,C)},T=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:E;L.colorStrokeStyle(e,O[0],O[1],O[2],t)},_=t.pstyle("shape").strValue,B=t.pstyle("shape-polygon-points").pfValue;if(u){e.translate(M.x,M.y);var D=L.nodePathCache=L.nodePathCache||[],N=Dt("polygon"===_?_+","+B.join(","):_,""+H,""+i),R=D[N];null!=R?(s=R,A=!0,a.pathCache=s):(s=new Path2D,D[N]=a.pathCache=s)}var F=function(){if(!A){var C=M;u&&(C={x:0,y:0}),L.nodeShapes[L.getNodeShape(t)].draw(s||e,C.x,C.y,i,H)}u?e.fill(s):e.fill()},I=function(){for(var C=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],H=o.backgrounding,n=0,V=0;V0&&void 0!==arguments[0]&&arguments[0],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d;L.hasPie(t)&&(L.drawPie(e,t,n),C&&(u||L.nodeShapes[L.getNodeShape(t)].draw(e,M.x,M.y,i,H)))},j=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d,C=(b>0?b:-b)*t,i=b>0?0:255;0!==b&&(L.colorFillStyle(e,i,i,i,C),u?e.fill(s):e.fill())},G=function(){if(w>0){if(e.lineWidth=w,e.lineCap="butt",e.setLineDash)switch(k){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}if(u?e.stroke(s):e.stroke(),"double"===k){e.lineWidth=w/3;var t=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",u?e.stroke(s):e.stroke(),e.globalCompositeOperation=t}e.setLineDash&&e.setLineDash([])}},W=function(){V&&L.drawNodeOverlay(e,t,M,i,H)},$=function(){V&&L.drawNodeUnderlay(e,t,M,i,H)},U=function(){L.drawElementText(e,t,null,n)},Y="yes"===t.pstyle("ghost").value;if(Y){var X=t.pstyle("ghost-offset-x").pfValue,q=t.pstyle("ghost-offset-y").pfValue,Q=t.pstyle("ghost-opacity").value,K=Q*d;e.translate(X,q),P(Q*x),F(),I(K,!0),T(Q*E),G(),z(0!==b||0!==w),I(K,!1),j(K),e.translate(-X,-q)}u&&e.translate(-M.x,-M.y),$(),u&&e.translate(M.x,M.y),P(),F(),I(d,!0),T(),G(),z(0!==b||0!==w),I(d,!1),j(),u&&e.translate(-M.x,-M.y),U(),W(),C&&e.translate(l.x1,l.y1)}}},co=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,C,i,H,n){if(C.visible()){var V=C.pstyle("".concat(e,"-padding")).pfValue,r=C.pstyle("".concat(e,"-opacity")).value,L=C.pstyle("".concat(e,"-color")).value,o=C.pstyle("".concat(e,"-shape")).value;if(r>0){if(i=i||C.position(),null==H||null==n){var a=C.padding();H=C.width()+2*a,n=C.height()+2*a}this.colorFillStyle(t,L[0],L[1],L[2],r),this.nodeShapes[o].draw(t,i.x,i.y,H+2*V,n+2*V),t.fill()}}}};Ao.drawNodeOverlay=co("overlay"),Ao.drawNodeUnderlay=co("underlay"),Ao.hasPie=function(e){return(e=e[0])._private.hasPie},Ao.drawPie=function(e,t,C,i){t=t[0],i=i||t.position();var H=t.cy().style(),n=t.pstyle("pie-size"),V=i.x,r=i.y,L=t.width(),o=t.height(),a=Math.min(L,o)/2,M=0;this.usePaths()&&(V=0,r=0),"%"===n.units?a*=n.pfValue:void 0!==n.pfValue&&(a=n.pfValue/2);for(var s=1;s<=H.pieBackgroundN;s++){var l=t.pstyle("pie-"+s+"-background-size").value,d=t.pstyle("pie-"+s+"-background-color").value,u=t.pstyle("pie-"+s+"-background-opacity").value*C,A=l/100;A+M>1&&(A=1-M);var c=1.5*Math.PI+2*Math.PI*M,h=c+2*Math.PI*A;0===l||M>=1||M+A>1||(e.beginPath(),e.moveTo(V,r),e.arc(V,r,a,c,h),e.closePath(),this.colorFillStyle(e,d[0],d[1],d[2],u),e.fill(),M+=A)}};var ho={};ho.getPixelRatio=function(){var e=this.data.contexts[0];if(null!=this.forcedPixelRatio)return this.forcedPixelRatio;var t=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/t},ho.paintCache=function(e){for(var t,C=this.paintCaches=this.paintCaches||[],i=!0,H=0;HV.minMbLowQualFrames&&(V.motionBlurPxRatio=V.mbPxRBlurry)),V.clearingMotionBlur&&(V.motionBlurPxRatio=1),V.textureDrawLastFrame&&!M&&(a[V.NODE]=!0,a[V.SELECT_BOX]=!0);var h=L.style(),m=L.zoom(),f=void 0!==H?H:m,p=L.pan(),g={x:p.x,y:p.y},v={zoom:m,pan:{x:p.x,y:p.y}},y=V.prevViewport;void 0===y||v.zoom!==y.zoom||v.pan.x!==y.pan.x||v.pan.y!==y.pan.y||u&&!d||(V.motionBlurPxRatio=1),n&&(g=n),f*=r,g.x*=r,g.y*=r;var Z=V.getCachedZSortedEles();function S(e,t,C,i,H){var n=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",V.colorFillStyle(e,255,255,255,V.motionBlurTransparency),e.fillRect(t,C,i,H),e.globalCompositeOperation=n}function b(e,i){var r,L,a,M;V.clearingMotionBlur||e!==o.bufferContexts[V.MOTIONBLUR_BUFFER_NODE]&&e!==o.bufferContexts[V.MOTIONBLUR_BUFFER_DRAG]?(r=g,L=f,a=V.canvasWidth,M=V.canvasHeight):(r={x:p.x*l,y:p.y*l},L=m*l,a=V.canvasWidth*l,M=V.canvasHeight*l),e.setTransform(1,0,0,1,0,0),"motionBlur"===i?S(e,0,0,a,M):t||void 0!==i&&!i||e.clearRect(0,0,a,M),C||(e.translate(r.x,r.y),e.scale(L,L)),n&&e.translate(n.x,n.y),H&&e.scale(H,H)}if(M||(V.textureDrawLastFrame=!1),M){if(V.textureDrawLastFrame=!0,!V.textureCache){V.textureCache={},V.textureCache.bb=L.mutableElements().boundingBox(),V.textureCache.texture=V.data.bufferCanvases[V.TEXTURE_BUFFER];var w=V.data.bufferContexts[V.TEXTURE_BUFFER];w.setTransform(1,0,0,1,0,0),w.clearRect(0,0,V.canvasWidth*V.textureMult,V.canvasHeight*V.textureMult),V.render({forcedContext:w,drawOnlyNodeLayer:!0,forcedPxRatio:r*V.textureMult}),(v=V.textureCache.viewport={zoom:L.zoom(),pan:L.pan(),width:V.canvasWidth,height:V.canvasHeight}).mpan={x:(0-v.pan.x)/v.zoom,y:(0-v.pan.y)/v.zoom}}a[V.DRAG]=!1,a[V.NODE]=!1;var x=o.contexts[V.NODE],O=V.textureCache.texture;v=V.textureCache.viewport;x.setTransform(1,0,0,1,0,0),s?S(x,0,0,v.width,v.height):x.clearRect(0,0,v.width,v.height);var k=h.core("outside-texture-bg-color").value,E=h.core("outside-texture-bg-opacity").value;V.colorFillStyle(x,k[0],k[1],k[2],E),x.fillRect(0,0,v.width,v.height);m=L.zoom();b(x,!1),x.clearRect(v.mpan.x,v.mpan.y,v.width/v.zoom/r,v.height/v.zoom/r),x.drawImage(O,v.mpan.x,v.mpan.y,v.width/v.zoom/r,v.height/v.zoom/r)}else V.textureOnViewport&&!t&&(V.textureCache=null);var P=L.extent(),T=V.pinching||V.hoverData.dragging||V.swipePanning||V.data.wheelZooming||V.hoverData.draggingEles||V.cy.animated(),_=V.hideEdgesOnViewport&&T,B=[];if(B[V.NODE]=!a[V.NODE]&&s&&!V.clearedForMotionBlur[V.NODE]||V.clearingMotionBlur,B[V.NODE]&&(V.clearedForMotionBlur[V.NODE]=!0),B[V.DRAG]=!a[V.DRAG]&&s&&!V.clearedForMotionBlur[V.DRAG]||V.clearingMotionBlur,B[V.DRAG]&&(V.clearedForMotionBlur[V.DRAG]=!0),a[V.NODE]||C||i||B[V.NODE]){var D=s&&!B[V.NODE]&&1!==l;b(x=t||(D?V.data.bufferContexts[V.MOTIONBLUR_BUFFER_NODE]:o.contexts[V.NODE]),s&&!D?"motionBlur":void 0),_?V.drawCachedNodes(x,Z.nondrag,r,P):V.drawLayeredElements(x,Z.nondrag,r,P),V.debug&&V.drawDebugPoints(x,Z.nondrag),C||s||(a[V.NODE]=!1)}if(!i&&(a[V.DRAG]||C||B[V.DRAG])){D=s&&!B[V.DRAG]&&1!==l;b(x=t||(D?V.data.bufferContexts[V.MOTIONBLUR_BUFFER_DRAG]:o.contexts[V.DRAG]),s&&!D?"motionBlur":void 0),_?V.drawCachedNodes(x,Z.drag,r,P):V.drawCachedElements(x,Z.drag,r,P),V.debug&&V.drawDebugPoints(x,Z.drag),C||s||(a[V.DRAG]=!1)}if(V.showFps||!i&&a[V.SELECT_BOX]&&!C){if(b(x=t||o.contexts[V.SELECT_BOX]),1==V.selection[4]&&(V.hoverData.selecting||V.touchData.selecting)){m=V.cy.zoom();var N=h.core("selection-box-border-width").value/m;x.lineWidth=N,x.fillStyle="rgba("+h.core("selection-box-color").value[0]+","+h.core("selection-box-color").value[1]+","+h.core("selection-box-color").value[2]+","+h.core("selection-box-opacity").value+")",x.fillRect(V.selection[0],V.selection[1],V.selection[2]-V.selection[0],V.selection[3]-V.selection[1]),N>0&&(x.strokeStyle="rgba("+h.core("selection-box-border-color").value[0]+","+h.core("selection-box-border-color").value[1]+","+h.core("selection-box-border-color").value[2]+","+h.core("selection-box-opacity").value+")",x.strokeRect(V.selection[0],V.selection[1],V.selection[2]-V.selection[0],V.selection[3]-V.selection[1]))}if(o.bgActivePosistion&&!V.hoverData.selecting){m=V.cy.zoom();var R=o.bgActivePosistion;x.fillStyle="rgba("+h.core("active-bg-color").value[0]+","+h.core("active-bg-color").value[1]+","+h.core("active-bg-color").value[2]+","+h.core("active-bg-opacity").value+")",x.beginPath(),x.arc(R.x,R.y,h.core("active-bg-size").pfValue/m,0,2*Math.PI),x.fill()}var F=V.lastRedrawTime;if(V.showFps&&F){F=Math.round(F);var I=Math.round(1e3/F);x.setTransform(1,0,0,1,0,0),x.fillStyle="rgba(255, 0, 0, 0.75)",x.strokeStyle="rgba(255, 0, 0, 0.75)",x.lineWidth=1,x.fillText("1 frame = "+F+" ms = "+I+" fps",0,20);x.strokeRect(0,30,250,20),x.fillRect(0,30,250*Math.min(I/60,1),20)}C||(a[V.SELECT_BOX]=!1)}if(s&&1!==l){var z=o.contexts[V.NODE],j=V.data.bufferCanvases[V.MOTIONBLUR_BUFFER_NODE],G=o.contexts[V.DRAG],W=V.data.bufferCanvases[V.MOTIONBLUR_BUFFER_DRAG],$=function(e,t,C){e.setTransform(1,0,0,1,0,0),C||!c?e.clearRect(0,0,V.canvasWidth,V.canvasHeight):S(e,0,0,V.canvasWidth,V.canvasHeight);var i=l;e.drawImage(t,0,0,V.canvasWidth*i,V.canvasHeight*i,0,0,V.canvasWidth,V.canvasHeight)};(a[V.NODE]||B[V.NODE])&&($(z,j,B[V.NODE]),a[V.NODE]=!1),(a[V.DRAG]||B[V.DRAG])&&($(G,W,B[V.DRAG]),a[V.DRAG]=!1)}V.prevViewport=v,V.clearingMotionBlur&&(V.clearingMotionBlur=!1,V.motionBlurCleared=!0,V.motionBlur=!0),s&&(V.motionBlurTimeout=setTimeout((function(){V.motionBlurTimeout=null,V.clearedForMotionBlur[V.NODE]=!1,V.clearedForMotionBlur[V.DRAG]=!1,V.motionBlur=!1,V.clearingMotionBlur=!M,V.mbFrames=0,a[V.NODE]=!0,a[V.DRAG]=!0,V.redraw()}),100)),t||L.emit("render")};for(var mo={drawPolygonPath:function(e,t,C,i,H,n){var V=i/2,r=H/2;e.beginPath&&e.beginPath(),e.moveTo(t+V*n[0],C+r*n[1]);for(var L=1;L0&&n>0){s.clearRect(0,0,H,n),s.globalCompositeOperation="source-over";var l=this.getCachedZSortedEles();if(e.full)s.translate(-C.x1*L,-C.y1*L),s.scale(L,L),this.drawElements(s,l),s.scale(1/L,1/L),s.translate(C.x1*L,C.y1*L);else{var d=t.pan(),u={x:d.x*L,y:d.y*L};L*=t.zoom(),s.translate(u.x,u.y),s.scale(L,L),this.drawElements(s,l),s.scale(1/L,1/L),s.translate(-u.x,-u.y)}e.bg&&(s.globalCompositeOperation="destination-over",s.fillStyle=e.bg,s.rect(0,0,H,n),s.fill())}return M},So.png=function(e){return wo(e,this.bufferCanvasImage(e),"image/png")},So.jpg=function(e){return wo(e,this.bufferCanvasImage(e),"image/jpeg")};var xo={nodeShapeImpl:function(e,t,C,i,H,n,V){switch(e){case"ellipse":return this.drawEllipsePath(t,C,i,H,n);case"polygon":return this.drawPolygonPath(t,C,i,H,n,V);case"round-polygon":return this.drawRoundPolygonPath(t,C,i,H,n,V);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,C,i,H,n);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,C,i,H,n);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,C,i,H,n);case"barrel":return this.drawBarrelPath(t,C,i,H,n)}}},Oo=Eo,ko=Eo.prototype;function Eo(e){var t=this;t.data={canvases:new Array(ko.CANVAS_LAYERS),contexts:new Array(ko.CANVAS_LAYERS),canvasNeedsRedraw:new Array(ko.CANVAS_LAYERS),bufferCanvases:new Array(ko.BUFFER_COUNT),bufferContexts:new Array(ko.CANVAS_LAYERS)};var C="-webkit-tap-highlight-color",i="rgba(0,0,0,0)";t.data.canvasContainer=document.createElement("div");var H=t.data.canvasContainer.style;t.data.canvasContainer.style[C]=i,H.position="relative",H.zIndex="0",H.overflow="hidden";var n=e.cy.container();n.appendChild(t.data.canvasContainer),n.style[C]=i;var V={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};Ye&&Ye.userAgent.match(/msie|trident|edge/i)&&(V["-ms-touch-action"]="none",V["touch-action"]="none");for(var r=0;r\n \n `}const ca={ag_expand:Uo,ag_collapse:$o,ag_select_all:Ma,ag_select_inverse:sa,ag_select_neighbors:la,ag_lock:La,ag_unlock:oa,ag_hide:Qo,ag_unhide:qo,ag_fit:ea,ag_image:ra,ag_workspace:da,ag_local:ta,ag_fdgd:ia,ag_concentric:na,ag_grid:Xo,ag_hierarchy:Ha,ag_file:Ko,ag_filter:Jo,ag_save:Yo,ag_node_list:Ca,ag_style:aa,ag_help:Va};function ha(e){let t,C,i,H,n;return{c(){t=v("button"),C=y("svg"),i=y("path"),x(i,"d",e[0]),E(C,"width","17px"),E(C,"height","17px"),x(C,"viewBox","0 0 24 24"),x(C,"xmlns","http://www.w3.org/2000/svg"),x(t,"type","button"),x(t,"class","juggl-button"),x(t,"aria-label",e[3]),t.disabled=e[2]},m(V,r){f(V,t,r),m(t,C),m(C,i),H||(n=w(t,"click",(function(){u(e[1])&&e[1].apply(this,arguments)})),H=!0)},p(C,[H]){e=C,1&H&&x(i,"d",e[0]),8&H&&x(t,"aria-label",e[3]),4&H&&(t.disabled=e[2])},i:M,o:M,d(e){e&&p(t),H=!1,n()}}}function ma(e,t,C){let{icon:i}=t,{onClick:H}=t,{disabled:n=!1}=t,{title:V}=t;return e.$$set=e=>{"icon"in e&&C(0,i=e.icon),"onClick"in e&&C(1,H=e.onClick),"disabled"in e&&C(2,n=e.disabled),"title"in e&&C(3,V=e.title)},[i,H,n,V]}class fa extends te{constructor(e){super(),ee(this,e,ma,ha,A,{icon:0,onClick:1,disabled:2,title:3})}}class pa extends e.ItemView{constructor(){super(...arguments),this.frame=null}async onOpen(){this.frame=document.createElement("iframe"),this.frame.addClass("juggl-site"),this.frame.setAttr("style","height: 100%; width:100%"),this.frame.setAttr("src","https://juggl.io"),this.frame.setAttr("tabindex","0"),this.containerEl.children[1].appendChild(this.frame)}getDisplayText(){return"Juggl help"}getViewType(){return"juggl-help"}}function ga(e){let t,C;return t=new fa({props:{icon:ca.ag_help,title:"Help",onClick:e[0]}}),{c(){q(t.$$.fragment)},m(e,i){Q(t,e,i),C=!0},p:M,i(e){C||(Y(t.$$.fragment,e),C=!0)},o(e){X(t.$$.fragment,e),C=!1},d(e){K(t,e)}}}function va(e,t,C){let{workspace:i}=t;return e.$$set=e=>{"workspace"in e&&C(1,i=e.workspace)},[function(){let e=i.getLeaf(!0),t=new pa(e);e.open(t)},i]}class ya extends te{constructor(e){super(),ee(this,e,va,ga,A,{workspace:1})}}function Za(e){let t,C,i,H,n,V,r,L,o,a,M,s,l,d,A,c,h,g,y,Z,b,O,k,E,P,T,_,B,D,N,R,F,I,z,j,G,W,$,U,J,ee,te,Ce,ie;return C=new fa({props:{icon:ca.ag_fdgd,onClick:e[2],title:"Force directed layout"}}),H=new fa({props:{icon:ca.ag_concentric,onClick:e[3],title:"Circle layout"}}),V=new fa({props:{icon:ca.ag_grid,onClick:e[4],title:"Grid layout"}}),L=new fa({props:{icon:ca.ag_hierarchy,onClick:e[5],title:"Hierarchical layout"}}),M=new fa({props:{icon:ca.ag_fit,onClick:e[14],title:"Fit view"}}),l=new fa({props:{icon:ca.ag_local,onClick:e[15],title:"Local mode"}}),c=new ya({props:{workspace:e[17]}}),g=new fa({props:{icon:ca.ag_save,onClick:e[16],title:"Manage workspace graphs"}}),b=new fa({props:{icon:ca.ag_expand,onClick:e[6],disabled:e[18],title:"Expand selected nodes (E)"}}),k=new fa({props:{icon:ca.ag_collapse,onClick:e[7],disabled:e[18],title:"Collapse expanded nodes (C)"}}),P=new fa({props:{icon:ca.ag_hide,onClick:e[8],disabled:e[18],title:"Hide selected nodes (H)"}}),B=new fa({props:{icon:ca.ag_select_all,onClick:e[9],title:"Select all nodes (A)"}}),N=new fa({props:{icon:ca.ag_select_inverse,onClick:e[10],disabled:e[18],title:"Invert selection (I)"}}),F=new fa({props:{icon:ca.ag_select_neighbors,onClick:e[11],disabled:e[18],title:"Select neighbors (N)"}}),j=new fa({props:{icon:ca.ag_lock,onClick:e[12],disabled:e[19],title:"Lock selected nodes in place (P)"}}),W=new fa({props:{icon:ca.ag_unlock,onClick:e[13],disabled:e[20],title:"Unlock selected nodes in place (U)"}}),{c(){t=v("div"),q(C.$$.fragment),i=S(),q(H.$$.fragment),n=S(),q(V.$$.fragment),r=S(),q(L.$$.fragment),o=S(),a=v("div"),q(M.$$.fragment),s=S(),q(l.$$.fragment),d=S(),A=v("div"),q(c.$$.fragment),h=S(),q(g.$$.fragment),y=S(),Z=v("div"),q(b.$$.fragment),O=S(),q(k.$$.fragment),E=S(),q(P.$$.fragment),T=S(),_=v("div"),q(B.$$.fragment),D=S(),q(N.$$.fragment),R=S(),q(F.$$.fragment),I=S(),z=v("div"),q(j.$$.fragment),G=S(),q(W.$$.fragment),$=S(),U=v("br"),J=v("label"),J.textContent="Filter: ",ee=v("input"),x(t,"class","cy-toolbar-section"),x(a,"class","cy-toolbar-section"),x(A,"class","cy-toolbar-section"),x(Z,"class","cy-toolbar-section"),x(_,"class","cy-toolbar-section"),x(z,"class","cy-toolbar-section"),x(J,"for","ag-filter"),x(ee,"type","text"),x(ee,"id","ag-filter"),x(ee,"name","ag-filter"),ee.value=e[1]},m(p,v){f(p,t,v),Q(C,t,null),m(t,i),Q(H,t,null),m(t,n),Q(V,t,null),m(t,r),Q(L,t,null),f(p,o,v),f(p,a,v),Q(M,a,null),m(a,s),Q(l,a,null),f(p,d,v),f(p,A,v),Q(c,A,null),m(A,h),Q(g,A,null),f(p,y,v),f(p,Z,v),Q(b,Z,null),m(Z,O),Q(k,Z,null),m(Z,E),Q(P,Z,null),f(p,T,v),f(p,_,v),Q(B,_,null),m(_,D),Q(N,_,null),m(_,R),Q(F,_,null),f(p,I,v),f(p,z,v),Q(j,z,null),m(z,G),Q(W,z,null),f(p,$,v),f(p,U,v),f(p,J,v),f(p,ee,v),te=!0,Ce||(ie=w(ee,"input",(function(){u(e[0])&&e[0].apply(this,arguments)})),Ce=!0)},p(t,[i]){e=t;const n={};4&i&&(n.onClick=e[2]),C.$set(n);const r={};8&i&&(r.onClick=e[3]),H.$set(r);const o={};16&i&&(o.onClick=e[4]),V.$set(o);const a={};32&i&&(a.onClick=e[5]),L.$set(a);const s={};16384&i&&(s.onClick=e[14]),M.$set(s);const d={};32768&i&&(d.onClick=e[15]),l.$set(d);const u={};131072&i&&(u.workspace=e[17]),c.$set(u);const A={};65536&i&&(A.onClick=e[16]),g.$set(A);const h={};64&i&&(h.onClick=e[6]),262144&i&&(h.disabled=e[18]),b.$set(h);const m={};128&i&&(m.onClick=e[7]),262144&i&&(m.disabled=e[18]),k.$set(m);const f={};256&i&&(f.onClick=e[8]),262144&i&&(f.disabled=e[18]),P.$set(f);const p={};512&i&&(p.onClick=e[9]),B.$set(p);const v={};1024&i&&(v.onClick=e[10]),262144&i&&(v.disabled=e[18]),N.$set(v);const y={};2048&i&&(y.onClick=e[11]),262144&i&&(y.disabled=e[18]),F.$set(y);const Z={};4096&i&&(Z.onClick=e[12]),524288&i&&(Z.disabled=e[19]),j.$set(Z);const S={};8192&i&&(S.onClick=e[13]),1048576&i&&(S.disabled=e[20]),W.$set(S),(!te||2&i&&ee.value!==e[1])&&(ee.value=e[1])},i(e){te||(Y(C.$$.fragment,e),Y(H.$$.fragment,e),Y(V.$$.fragment,e),Y(L.$$.fragment,e),Y(M.$$.fragment,e),Y(l.$$.fragment,e),Y(c.$$.fragment,e),Y(g.$$.fragment,e),Y(b.$$.fragment,e),Y(k.$$.fragment,e),Y(P.$$.fragment,e),Y(B.$$.fragment,e),Y(N.$$.fragment,e),Y(F.$$.fragment,e),Y(j.$$.fragment,e),Y(W.$$.fragment,e),te=!0)},o(e){X(C.$$.fragment,e),X(H.$$.fragment,e),X(V.$$.fragment,e),X(L.$$.fragment,e),X(M.$$.fragment,e),X(l.$$.fragment,e),X(c.$$.fragment,e),X(g.$$.fragment,e),X(b.$$.fragment,e),X(k.$$.fragment,e),X(P.$$.fragment,e),X(B.$$.fragment,e),X(N.$$.fragment,e),X(F.$$.fragment,e),X(j.$$.fragment,e),X(W.$$.fragment,e),te=!1},d(e){e&&p(t),K(C),K(H),K(V),K(L),e&&p(o),e&&p(a),K(M),K(l),e&&p(d),e&&p(A),K(c),K(g),e&&p(y),e&&p(Z),K(b),K(k),K(P),e&&p(T),e&&p(_),K(B),K(N),K(F),e&&p(I),e&&p(z),K(j),K(W),e&&p($),e&&p(U),e&&p(J),e&&p(ee),Ce=!1,ie()}}}function Sa(t,C,i){let{viz:H}=C,{filterValue:n}=C,{fdgdClick:V}=C,{concentricClick:r}=C,{gridClick:L}=C,{hierarchyClick:o}=C,{expandClick:a}=C,{collapseClick:M}=C,{hideClick:s}=C,{selectAllClick:l}=C,{selectInvertClick:d}=C,{selectNeighborClick:u}=C,{lockClick:A}=C,{unlockClick:c}=C,{fitClick:h}=C,{localModeClick:m}=C,{filterInput:f}=C,{saveClick:p}=C,{workspace:g}=C;f=e.debounce(f,500,!0);let v=!1,y=!1,Z=!0;return t.$$set=e=>{"viz"in e&&i(21,H=e.viz),"filterValue"in e&&i(1,n=e.filterValue),"fdgdClick"in e&&i(2,V=e.fdgdClick),"concentricClick"in e&&i(3,r=e.concentricClick),"gridClick"in e&&i(4,L=e.gridClick),"hierarchyClick"in e&&i(5,o=e.hierarchyClick),"expandClick"in e&&i(6,a=e.expandClick),"collapseClick"in e&&i(7,M=e.collapseClick),"hideClick"in e&&i(8,s=e.hideClick),"selectAllClick"in e&&i(9,l=e.selectAllClick),"selectInvertClick"in e&&i(10,d=e.selectInvertClick),"selectNeighborClick"in e&&i(11,u=e.selectNeighborClick),"lockClick"in e&&i(12,A=e.lockClick),"unlockClick"in e&&i(13,c=e.unlockClick),"fitClick"in e&&i(14,h=e.fitClick),"localModeClick"in e&&i(15,m=e.localModeClick),"filterInput"in e&&i(0,f=e.filterInput),"saveClick"in e&&i(16,p=e.saveClick),"workspace"in e&&i(17,g=e.workspace)},[f,n,V,r,L,o,a,M,s,l,d,u,A,c,h,m,p,g,v,y,Z,H,function(){let e=H.nodes(":selected");i(18,v=0===e.length);let t=H.nodes(".pinned"),C=e.difference(t).length>0,n=e.intersection(t);i(19,y=!C||v),i(20,Z=!n||v)}]}class ba extends te{constructor(e){super(),ee(this,e,Sa,Za,A,{viz:21,filterValue:1,fdgdClick:2,concentricClick:3,gridClick:4,hierarchyClick:5,expandClick:6,collapseClick:7,hideClick:8,selectAllClick:9,selectInvertClick:10,selectNeighborClick:11,lockClick:12,unlockClick:13,fitClick:14,localModeClick:15,filterInput:0,saveClick:16,workspace:17,onSelect:22})}get onSelect(){return this.$$.ctx[22]}}class wa{constructor(e,t){this.options=Object.assign({},wa.DEFAULT,e,{animate:!!t&&"end"})}startLayout(e){return e.viz.layout(this.options).start()}}wa.DEFAULT={name:"cola",animate:!0,refresh:2,maxSimulationTime:1500,ungrabifyWhileSimulating:!1,fit:!1,padding:30,nodeDimensionsIncludeLabels:!0,randomize:!1,avoidOverlap:!0,handleDisconnected:!0,convergenceThreshold:.01,nodeSpacing:10};class xa{constructor(e,t){this.options=Object.assign({},xa.DEFAULT,e,{animate:!!t&&"end"})}startLayout(e){return e.viz.layout(Object.assign(this.options,{linkId:function(e){return e.id}})).start()}}xa.DEFAULT={name:"d3-force",animate:"end",maxIterations:0,maxSimulationTime:1500,ungrabifyWhileSimulating:!1,fixedAfterDragging:!1,fit:!1,padding:30,alpha:1,alphaMin:.001,alphaDecay:1-Math.pow(.001,1/300),alphaTarget:0,velocityDecay:.4,collideRadius:60,collideStrength:.9,collideIterations:1,linkDistance:150,linkStrength:.7,linkIterations:1,manyBodyStrength:-600,manyBodyDistanceMin:5,xStrength:.1,xX:0,yStrength:.1,yY:0,radialStrength:.1,radialX:0,radialY:0,radialRadius:10,randomize:!1,infinite:!1};class Oa{constructor(e){this.options=Object.assign({},Oa.DEFAULT,e)}startLayout(e){return e.viz.layout(this.options).start()}}Oa.DEFAULT={name:"grid",animate:!0,animationDuration:500,spacingFactor:.5,fit:!1,padding:30,nodeDimensionsIncludeLabels:!0,avoidOverlap:!0};class ka{constructor(e){this.options=Object.assign({},ka.DEFAULT,e)}startLayout(e){return e.viz.layout(this.options).start()}}ka.DEFAULT={name:"dagre",animate:!0,animationDuration:500,spacingFactor:.5,fit:!1,padding:30,nodeDimensionsIncludeLabels:!0,avoidOverlap:!0};class Ea{constructor(e){this.options=Object.assign({},Ea.DEFAULT,e)}startLayout(e){return e.viz.layout(Object.assign(this.options,{concentric:e=>e.hasClass("active-node")?1e3:e.hasClass("expanded")?100:1})).start()}}Ea.DEFAULT={name:"concentric",animate:"end",animationDuration:500,fit:!1,padding:30,nodeDimensionsIncludeLabels:!0,avoidOverlap:!0};const Pa=function(e,t,C){switch(e){case"circle":case"concentric":return new Ea(C);case"force-directed":return t&&"d3-force"===t.fdgdLayout?new xa(C,t.animateLayout):new wa(C,t.animateLayout);case"hierarchy":case"dagre":return new ka(C);case"grid":return new Oa(C);case"cola":return new wa(C,t.animateLayout);case"d3-force":return new xa(C,t.animateLayout)}};function Ta(e){let t,C,i,H,n,V,r,L,o;return{c(){t=v("div"),C=v("div"),i=Z(e[0]),H=S(),n=v("button"),n.textContent="Load",V=S(),r=v("div"),r.innerHTML='',x(C,"class","list-item-part mod-extended"),x(n,"class","list-item-part"),x(r,"class","list-item-part clickable-icon"),x(r,"aria-label","Delete graph"),x(t,"class","list-item")},m(a,M){f(a,t,M),m(t,C),m(C,i),m(t,H),m(t,n),m(t,V),m(t,r),L||(o=[w(n,"click",(function(){u(e[1](e[0]))&&e[1](e[0]).apply(this,arguments)})),w(r,"click",(function(){u(e[2](e[0]))&&e[2](e[0]).apply(this,arguments)}))],L=!0)},p(t,[C]){e=t,1&C&&O(i,e[0])},i:M,o:M,d(e){e&&p(t),L=!1,d(o)}}}function _a(e,t,C){let{name:i}=t,{onClick:H}=t,{onDelete:n}=t;return e.$$set=e=>{"name"in e&&C(0,i=e.name),"onClick"in e&&C(1,H=e.onClick),"onDelete"in e&&C(2,n=e.onDelete)},[i,H,n]}class Ba extends te{constructor(e){super(),ee(this,e,_a,Ta,A,{name:0,onClick:1,onDelete:2})}}function Da(e,t,C){const i=e.slice();return i[9]=t[C],i}function Na(e){let t,C;return t=new Ba({props:{name:e[9],onClick:e[1],onDelete:e[4]}}),{c(){q(t.$$.fragment)},m(e,i){Q(t,e,i),C=!0},p(e,C){const i={};1&C&&(i.name=e[9]),2&C&&(i.onClick=e[1]),t.$set(i)},i(e){C||(Y(t.$$.fragment,e),C=!0)},o(e){X(t.$$.fragment,e),C=!1},d(e){K(t,e)}}}function Ra(e){let t,C,i,H,n,V,r,L,o,a,M,s=e[0],l=[];for(let t=0;tX(l[e],1,1,(()=>{l[e]=null}));return{c(){t=v("div"),C=v("input"),i=S(),H=v("button"),H.textContent="Save",n=S(),V=v("hr"),r=S(),L=v("div");for(let e=0;e{"onLoad"in e&&C(1,i=e.onLoad),"onSave"in e&&C(6,H=e.onSave),"onDelete"in e&&C(7,n=e.onDelete),"savedGraphs"in e&&C(0,V=e.savedGraphs)},[V,i,r,async e=>{await H(e),C(0,V)},async e=>{await n(e),C(0,V)},e=>"/"!==e.key||(e.preventDefault(),!1),H,n,function(){r=this.value,C(2,r)}]}class Ia extends te{constructor(e){super(),ee(this,e,Fa,Ra,A,{onLoad:1,onSave:6,onDelete:7,savedGraphs:0})}}class za extends e.Modal{constructor(e,t,C){super(e),this.manager=t,this.view=C}onOpen(){super.onOpen(),this.titleEl.innerHTML="Manage workspace graphs",new Ia({target:this.contentEl,props:{onSave:e=>this.manager.saveGraph(e,this.view),savedGraphs:this.manager.graphs,onLoad:e=>this.manager.loadGraph(e,this.view),onDelete:e=>this.manager.deleteGraph(e,this.view)}})}}class ja extends e.Component{constructor(e){super(),this.events=[],this.recursionPreventer=!1,this.view=e}onload(){this.view.vizReady?this._onLoad():this.registerEvent(this.view.on("vizReady",(e=>{this._onLoad()})))}_onLoad(){this.viz=this.view.viz;const e=this,t=this.view,C=getComputedStyle(document.body),i=C.getPropertyValue("--text-selection"),H=C.getPropertyValue("--background-secondary"),V=C.getPropertyValue("--text-normal");C.getPropertyValue("--text");const r=this.view.plugin,L={menuRadius:70,selector:"node",commands:C=>{const i=[];return"core"===n.fromNode(C).storeId&&i.push({content:Aa(ca.ag_file),select:async function(e,t,C){await r.openFileFromNode(e,C.originalEvent.metaKey)},enabled:!0}),i.push({content:Aa(ca.ag_hide),select:function(t){e.removeNodes(t)},enabled:!0},{content:Aa(ca.ag_fit),select:function(t){e.updateActiveNode(t,!0)},enabled:!0}),C.hasClass("pinned")?i.push({content:Aa(ca.ag_unlock),select:function(t){e.unpin(t)},enabled:!0}):i.push({content:Aa(ca.ag_lock),select:function(t){e.pin(t)},enabled:!0}),C.hasClass("expanded")?i.push({content:Aa(ca.ag_collapse),select:function(t){e.removeNodes(t)},enabled:!0}):i.push({content:Aa(ca.ag_expand),select:function(e){t.expand(e)},enabled:!0}),i},fillColor:`${H}`,activeFillColor:`${i}`,activePadding:20,indicatorSize:24,separatorWidth:3,spotlightPadding:0,adaptativeNodeSpotlightRadius:!0,openMenuEvents:"taphold",itemColor:`${V}`,itemTextShadowColor:"transparent",zIndex:9999,atMouse:!1,outsideMenuCancel:15};this.menu=this.viz.cxtmenu(L),this.registerCyEvent("tap","node",(async e=>{if(!this.view.settings.openWithShift||e.originalEvent.shiftKey){await this.view.plugin.openFileFromNode(e.target,e.originalEvent.metaKey)&&this.updateActiveNode(e.target,this.view.settings.autoZoom)}})),this.registerCyEvent("taphold","node",(e=>{this.view.destroyHover&&this.view.destroyHover()})),this.registerCyEvent("dblclick","node",(async e=>{await this.view.expand(e.target)})),this.registerCyEvent("tapselect tapunselect boxselect",null,(e=>{this.view.trigger("selectChange")})),this.registerEvent(this.view.workspace.on("file-open",(async e=>{if(this.view.settings.autoAddNodes&&e&&this.view.settings.autoAddNodes){const t=e.name,C=new n(t,"core");let i=!0;if(0===this.viz.$id(C.toId()).length){const e=await this.view.datastores.coreStore.get(C,this.view);this.viz.startBatch(),this.viz.add(e).addClass("protected");const t=await this.view.buildEdges(this.viz.$id(C.toId()));this.viz.add(t),this.view.onGraphChanged(!1,!0),this.viz.endBatch(),i=!1}const H=this.viz.$id(C.toId());H.addClass("protected"),this.updateActiveNode(H,i&&this.view.settings.autoZoom)}}))),this.registerEvent(this.view.on("expand",(e=>{this.updateActiveNode(e,!1)}))),this.registerEvent(this.view.on("elementsChange",(()=>{this.recursionPreventer||(this.viz.nodes().difference(this.viz.nodes(".protected")).filter((e=>0===e.closedNeighborhood("node.protected").length)).remove(),this.updateActiveNode(this.viz.nodes(".active-node"),!1),this.recursionPreventer=!0,this.view.onGraphChanged(),this.recursionPreventer=!1)}))),this.windowEvent=async e=>{document.activeElement===this.view.element&&("e"===e.key?await this.expandSelection():"h"===e.key||"Backspace"===e.key?this.removeSelection():"i"===e.key?this.invertSelection():"a"===e.key?this.selectAll():"n"===e.key?this.selectNeighboursOfSelected():"p"===e.key?this.pinSelection():"u"===e.key?this.unpinSelection():"c"===e.key?this.collapseSelection():"v"===e.key?this.view.fitView():"f"===e.key&&this.view.fitView(this.viz.nodes(":selected")))},document.on("keydown",".cy-content",this.windowEvent,!0)}registerCyEvent(e,t,C){this.events.push({eventName:e,selector:t,event:C}),t?this.viz.on(e,t,C):this.viz.on(e,C)}onunload(){for(const e of this.events)e.selector?this.viz.off(e.eventName,e.selector,e.event):this.viz.off(e.eventName,e.event);this.events=[],document.off("keydown",".cy-content",this.windowEvent,!0),this.toolbar&&this.toolbar.$destroy(),this.menu&&this.menu.destroy()}getName(){return"workspace"}fillMenu(e,t){if(t.length>0&&(e.addItem((e=>{e.setTitle("Expand selection (E)").setIcon("ag-expand").onClick((async e=>{await this.view.expand(t)}))})),e.addItem((e=>{e.setTitle("Collapse selection (C)").setIcon("ag-collapse").onClick((e=>{this.collapse(t)}))})),e.addItem((e=>{e.setTitle("Hide selection (H)").setIcon("ag-hide").onClick((e=>{this.removeNodes(t)}))})),e.addItem((e=>{e.setTitle("Select all (A)").setIcon("ag-select-all").onClick((e=>{this.selectAll()}))})),e.addItem((e=>{e.setTitle("Invert selection (I)").setIcon("ag-select-inverse").onClick((e=>{this.invertSelection()}))}))),t.length>0){e.addItem((e=>{e.setTitle("Select neighbors (N)").setIcon("ag-select-neighbors").onClick((e=>{this.selectNeighbourhood(t)}))}));const C=this.view.getPinned();t.difference(C).length>0&&e.addItem((e=>{e.setTitle("Pin selection (P)").setIcon("ag-lock").onClick((e=>{this.pin(t)}))})),t.intersect(C).length>0&&e.addItem((e=>{e.setTitle("Unpin selection (U)").setIcon("ag-unlock").onClick((e=>{this.unpin(t)}))}))}}createToolbar(e){this.toolbar=new ba({target:e,props:{viz:this.viz,filterValue:this.view.settings.filter,expandClick:this.expandSelection.bind(this),fdgdClick:()=>this.view.setLayout(Pa("force-directed",this.view.settings)),concentricClick:()=>this.view.setLayout(Pa("circle")),gridClick:()=>this.view.setLayout(Pa("grid")),hierarchyClick:()=>this.view.setLayout(Pa("hierarchy")),collapseClick:this.collapseSelection.bind(this),hideClick:this.removeSelection.bind(this),selectAllClick:this.selectAll.bind(this),selectInvertClick:this.invertSelection.bind(this),selectNeighborClick:this.selectNeighboursOfSelected.bind(this),lockClick:this.pinSelection.bind(this),unlockClick:this.unpinSelection.bind(this),fitClick:this.view.fitView.bind(this.view),localModeClick:()=>this.view.setMode("local"),filterInput:e=>{this.view.searchFilter(e.target.value),this.view.restartLayout()},saveClick:()=>{"app"in this.view.plugin&&"workspaceManager"in this.view.plugin&&new za(this.view.plugin.app,this.view.plugin.workspaceManager,this.view).open()},workspace:this.view.plugin.app.workspace}}),this.view.on("selectChange",this.toolbar.onSelect.bind(this.toolbar)),this.view.on("vizReady",(e=>{this.toolbar.$set({viz:e}),this.toolbar.onSelect.bind(this.toolbar)()}))}updateActiveNode(e,t){this.viz.elements().removeClass(["connected-active-node","active-node","inactive-node"]).difference(e.closedNeighborhood()).addClass("inactive-node"),e.addClass("active-node");const C=e.connectedEdges().addClass("connected-active-node").connectedNodes().addClass("connected-active-node").union(e);t&&this.viz.animate({fit:{eles:C,padding:0},duration:250,queue:!1}),this.viz.one("tap",(e=>{e.cy.elements().removeClass(["connected-active-node","active-node","inactive-node"])}))}async expandSelection(){await this.view.expand(this.viz.nodes(":selected"))}collapse(e){e.filter(":selected").removeClass(["protected","expanded"]).openNeighborhood().nodes().filter((e=>0===e.closedNeighborhood("node.protected").length)).remove(),this.recursionPreventer=!0,this.view.onGraphChanged(!0,!0),this.recursionPreventer=!1}collapseSelection(){this.collapse(this.viz.nodes(":selected"))}removeNodes(e){e.addClass("hard-filtered"),this.view.onGraphChanged(!0,!0),this.view.trigger("hide",e),this.view.trigger("selectChange")}removeSelection(){this.removeNodes(this.viz.nodes(":selected"))}selectAll(){this.viz.nodes().select(),this.view.trigger("selectChange")}invertSelection(){this.viz.$(":selected").unselect().absoluteComplement().select(),this.view.trigger("selectChange")}selectNeighboursOfSelected(){this.selectNeighbourhood(this.viz.nodes(":selected"))}selectNeighbourhood(e){this.viz.nodes(":selected").unselect(),e.openNeighborhood().select(),this.view.trigger("selectChange")}unpin(e){const t=e.unlock().removeClass("pinned");this.view.restartLayout(),this.view.trigger("unpin",t)}unpinSelection(){this.unpin(this.viz.nodes(":selected"))}pin(e){const t=e.lock().addClass("pinned");this.view.restartLayout(),this.view.trigger("pin",t)}pinSelection(){this.pin(this.viz.nodes(":selected"))}}function Ga(e){let t,C,i,H,n,V,r,L,o,a,M,s,l,d,A,c,h,g,y,Z,b,O,k;return C=new fa({props:{icon:ca.ag_fdgd,onClick:e[1],title:"Force directed layout"}}),H=new fa({props:{icon:ca.ag_concentric,onClick:e[2],title:"Circle layout"}}),V=new fa({props:{icon:ca.ag_grid,onClick:e[3],title:"Grid layout"}}),L=new fa({props:{icon:ca.ag_hierarchy,onClick:e[4],title:"Hierarchical layout"}}),M=new fa({props:{icon:ca.ag_fit,onClick:e[5],title:"Fit view"}}),l=new fa({props:{icon:ca.ag_workspace,onClick:e[6],title:"Workspace mode"}}),c=new ya({props:{workspace:e[8]}}),{c(){t=v("div"),q(C.$$.fragment),i=S(),q(H.$$.fragment),n=S(),q(V.$$.fragment),r=S(),q(L.$$.fragment),o=S(),a=v("div"),q(M.$$.fragment),s=S(),q(l.$$.fragment),d=S(),A=v("div"),q(c.$$.fragment),h=S(),g=v("br"),y=v("label"),y.textContent="Filter: ",Z=v("input"),x(t,"class","cy-toolbar-section"),x(a,"class","cy-toolbar-section"),x(A,"class","cy-toolbar-section"),x(y,"for","ag-filter"),x(Z,"type","text"),x(Z,"id","ag-filter"),x(Z,"name","ag-filter"),Z.value=e[7]},m(p,v){f(p,t,v),Q(C,t,null),m(t,i),Q(H,t,null),m(t,n),Q(V,t,null),m(t,r),Q(L,t,null),f(p,o,v),f(p,a,v),Q(M,a,null),m(a,s),Q(l,a,null),f(p,d,v),f(p,A,v),Q(c,A,null),f(p,h,v),f(p,g,v),f(p,y,v),f(p,Z,v),b=!0,O||(k=w(Z,"input",(function(){u(e[0])&&e[0].apply(this,arguments)})),O=!0)},p(t,[i]){e=t;const n={};2&i&&(n.onClick=e[1]),C.$set(n);const r={};4&i&&(r.onClick=e[2]),H.$set(r);const o={};8&i&&(o.onClick=e[3]),V.$set(o);const a={};16&i&&(a.onClick=e[4]),L.$set(a);const s={};32&i&&(s.onClick=e[5]),M.$set(s);const d={};64&i&&(d.onClick=e[6]),l.$set(d);const u={};256&i&&(u.workspace=e[8]),c.$set(u),(!b||128&i&&Z.value!==e[7])&&(Z.value=e[7])},i(e){b||(Y(C.$$.fragment,e),Y(H.$$.fragment,e),Y(V.$$.fragment,e),Y(L.$$.fragment,e),Y(M.$$.fragment,e),Y(l.$$.fragment,e),Y(c.$$.fragment,e),b=!0)},o(e){X(C.$$.fragment,e),X(H.$$.fragment,e),X(V.$$.fragment,e),X(L.$$.fragment,e),X(M.$$.fragment,e),X(l.$$.fragment,e),X(c.$$.fragment,e),b=!1},d(e){e&&p(t),K(C),K(H),K(V),K(L),e&&p(o),e&&p(a),K(M),K(l),e&&p(d),e&&p(A),K(c),e&&p(h),e&&p(g),e&&p(y),e&&p(Z),O=!1,k()}}}function Wa(t,C,i){let{fdgdClick:H}=C,{concentricClick:n}=C,{gridClick:V}=C,{hierarchyClick:r}=C,{fitClick:L}=C,{workspaceModeClick:o}=C,{filterInput:a}=C,{filterValue:M}=C,{workspace:s}=C;return a=e.debounce(a,500,!0),t.$$set=e=>{"fdgdClick"in e&&i(1,H=e.fdgdClick),"concentricClick"in e&&i(2,n=e.concentricClick),"gridClick"in e&&i(3,V=e.gridClick),"hierarchyClick"in e&&i(4,r=e.hierarchyClick),"fitClick"in e&&i(5,L=e.fitClick),"workspaceModeClick"in e&&i(6,o=e.workspaceModeClick),"filterInput"in e&&i(0,a=e.filterInput),"filterValue"in e&&i(7,M=e.filterValue),"workspace"in e&&i(8,s=e.workspace)},[a,H,n,V,r,L,o,M,s]}class $a extends te{constructor(e){super(),ee(this,e,Wa,Ga,A,{fdgdClick:1,concentricClick:2,gridClick:3,hierarchyClick:4,fitClick:5,workspaceModeClick:6,filterInput:0,filterValue:7,workspace:8})}}class Ua extends e.Component{constructor(e){super(),this.events=[],this.view=e}onload(){this.view.vizReady?this._onLoad():this.registerEvent(this.view.on("vizReady",(e=>{this._onLoad()})))}_onLoad(){this.viz=this.view.viz,this.registerCyEvent("tap","node",(async e=>{const t=await this.view.plugin.openFileFromNode(e.target,e.originalEvent.metaKey);t&&await this.onOpenFile(t)})),this.registerEvent(this.view.workspace.on("file-open",(async e=>{e&&await this.onOpenFile(e)})))}async onOpenFile(e){if(!this.view.settings.autoAddNodes)return;const t=new n(e.name,"core");let C;if(this.viz.startBatch(),0===this.viz.$id(t.toId()).length){const e=await this.view.datastores.coreStore.get(t,this.view);C=this.viz.add(e)}else C=this.viz.$id(t.toId());await this.view.expand(C,!1),C.addClass("active-node"),this.viz.nodes().difference(C.closedNeighborhood()).remove(),this.view.onGraphChanged(!1),this.updateActiveFile(C),this.viz.endBatch()}registerCyEvent(e,t,C){this.events.push({eventName:e,selector:t,event:C}),t?this.viz.on(e,t,C):this.viz.on(e,C)}onunload(){for(const e of this.events)e.selector?this.viz.off(e.eventName,e.selector,e.event):this.viz.off(e.eventName,e.event);this.events=[],this.toolbar.$destroy()}getName(){return"local"}fillMenu(e,t){}createToolbar(e){const t=this.view;this.toolbar=new $a({target:e,props:{viz:this.viz,fitClick:this.view.fitView.bind(t),fdgdClick:()=>this.view.setLayout(Pa("force-directed",this.view.settings)),concentricClick:()=>this.view.setLayout(Pa("circle")),gridClick:()=>this.view.setLayout(Pa("grid")),hierarchyClick:()=>this.view.setLayout(Pa("hierarchy")),workspaceModeClick:()=>t.setMode("workspace"),filterInput:e=>{this.view.searchFilter(e.target.value),this.view.restartLayout()},filterValue:this.view.settings.filter,workspace:this.view.plugin.app.workspace}})}updateActiveFile(e){this.viz.elements().removeClass(["connected-active-node","active-node","inactive-node"]).difference(e.closedNeighborhood()).addClass("inactive-node"),e.addClass("active-node"),e.connectedEdges().addClass("connected-active-node").connectedNodes().addClass("connected-active-node").union(e)}} /*! * search-query-parser.js * Copyright(c) 2014-2019 * MIT Licensed - */ - -var searchQueryParser$1 = createCommonjsModule(function (module, exports) { -exports.parse = function (string, options) { - - // Set a default options object when none is provided - if (!options) { - options = {offsets: true}; - } else { - // If options offsets was't passed, set it to true - options.offsets = (typeof options.offsets === 'undefined' ? true : options.offsets); - } - - if (!string) { - string = ''; - } - - // When a simple string, return it - if (-1 === string.indexOf(':') && !options.tokenize) { - return string; - } - // When no keywords or ranges set, treat as a simple string - else if (!options.keywords && !options.ranges && !options.tokenize){ - return string; - } - // Otherwise parse the advanced query syntax - else { - // Our object to store the query object - var query = {text: []}; - // When offsets is true, create their array - if (options.offsets) { - query.offsets = []; - } - var exclusion = {}; - var terms = []; - // Get a list of search terms respecting single and double quotes - var regex = /(\S+:'(?:[^'\\]|\\.)*')|(\S+:"(?:[^"\\]|\\.)*")|(-?"(?:[^"\\]|\\.)*")|(-?'(?:[^'\\]|\\.)*')|\S+|\S+:\S+/g; - var match; - while ((match = regex.exec(string)) !== null) { - var term = match[0]; - var sepIndex = term.indexOf(':'); - if (sepIndex !== -1) { - term.split(':'); - var key = term.slice(0, sepIndex), - val = term.slice(sepIndex + 1); - // Strip surrounding quotes - val = val.replace(/^\"|\"$|^\'|\'$/g, ''); - // Strip backslashes respecting escapes - val = (val + '').replace(/\\(.?)/g, function (s, n1) { - switch (n1) { - case '\\': - return '\\'; - case '0': - return '\u0000'; - case '': - return ''; - default: - return n1; - } - }); - terms.push({ - keyword: key, - value: val, - offsetStart: match.index, - offsetEnd: match.index + term.length - }); - } else { - var isExcludedTerm = false; - if (term[0] === '-') { - isExcludedTerm = true; - term = term.slice(1); - } - - // Strip surrounding quotes - term = term.replace(/^\"|\"$|^\'|\'$/g, ''); - // Strip backslashes respecting escapes - term = (term + '').replace(/\\(.?)/g, function (s, n1) { - switch (n1) { - case '\\': - return '\\'; - case '0': - return '\u0000'; - case '': - return ''; - default: - return n1; - } - }); - - if (isExcludedTerm) { - if (exclusion['text']) { - if (exclusion['text'] instanceof Array) { - exclusion['text'].push(term); - } else { - exclusion['text'] = [exclusion['text']]; - exclusion['text'].push(term); - } - } else { - // First time seeing an excluded text term - exclusion['text'] = term; - } - } else { - terms.push({ - text: term, - offsetStart: match.index, - offsetEnd: match.index + term.length - }); - } - } - } - // Reverse to ensure proper order when pop()'ing. - terms.reverse(); - // For each search term - var term; - while (term = terms.pop()) { - // When just a simple term - if (term.text) { - // We add it as pure text - query.text.push(term.text); - // When offsets is true, push a new offset - if (options.offsets) { - query.offsets.push(term); - } - } - // We got an advanced search syntax - else { - var key = term.keyword; - // Check if the key is a registered keyword - options.keywords = options.keywords || []; - var isKeyword = false; - var isExclusion = false; - if (!/^-/.test(key)) { - isKeyword = !(-1 === options.keywords.indexOf(key)); - } else if (key[0] === '-') { - var _key = key.slice(1); - isKeyword = !(-1 === options.keywords.indexOf(_key)); - if (isKeyword) { - key = _key; - isExclusion = true; - } - } - - // Check if the key is a registered range - options.ranges = options.ranges || []; - var isRange = !(-1 === options.ranges.indexOf(key)); - // When the key matches a keyword - if (isKeyword) { - // When offsets is true, push a new offset - if (options.offsets) { - query.offsets.push({ - keyword: key, - value: term.value, - offsetStart: isExclusion ? term.offsetStart + 1 : term.offsetStart, - offsetEnd: term.offsetEnd - }); - } - - var value = term.value; - // When value is a thing - if (value.length) { - // Get an array of values when several are there - var values = value.split(','); - if (isExclusion) { - if (exclusion[key]) { - // ...many times... - if (exclusion[key] instanceof Array) { - // ...and got several values this time... - if (values.length > 1) { - // ... concatenate both arrays. - exclusion[key] = exclusion[key].concat(values); - } - else { - // ... append the current single value. - exclusion[key].push(value); - } - } - // We saw that keyword only once before - else { - // Put both the current value and the new - // value in an array - exclusion[key] = [exclusion[key]]; - exclusion[key].push(value); - } - } - // First time we see that keyword - else { - // ...and got several values this time... - if (values.length > 1) { - // ...add all values seen. - exclusion[key] = values; - } - // Got only a single value this time - else { - // Record its value as a string - if (options.alwaysArray) { - // ...but we always return an array if option alwaysArray is true - exclusion[key] = [value]; - } else { - // Record its value as a string - exclusion[key] = value; - } - } - } - } else { - // If we already have seen that keyword... - if (query[key]) { - // ...many times... - if (query[key] instanceof Array) { - // ...and got several values this time... - if (values.length > 1) { - // ... concatenate both arrays. - query[key] = query[key].concat(values); - } - else { - // ... append the current single value. - query[key].push(value); - } - } - // We saw that keyword only once before - else { - // Put both the current value and the new - // value in an array - query[key] = [query[key]]; - query[key].push(value); - } - } - // First time we see that keyword - else { - // ...and got several values this time... - if (values.length > 1) { - // ...add all values seen. - query[key] = values; - } - // Got only a single value this time - else { - if (options.alwaysArray) { - // ...but we always return an array if option alwaysArray is true - query[key] = [value]; - } else { - // Record its value as a string - query[key] = value; - } - } - } - } - } - } - // The key allows a range - else if (isRange) { - // When offsets is true, push a new offset - if (options.offsets) { - query.offsets.push(term); - } - - var value = term.value; - // Range are separated with a dash - var rangeValues = value.split('-'); - // When both end of the range are specified - // keyword:XXXX-YYYY - query[key] = {}; - if (2 === rangeValues.length) { - query[key].from = rangeValues[0]; - query[key].to = rangeValues[1]; - } - // When pairs of ranges are specified - // keyword:XXXX-YYYY,AAAA-BBBB - else if (!rangeValues.length % 2) ; - // When only getting a single value, - // or an odd number of values - else { - query[key].from = value; - } - } - else { - // We add it as pure text - var text = term.keyword + ':' + term.value; - query.text.push(text); - - // When offsets is true, push a new offset - if (options.offsets) { - query.offsets.push({ - text: text, - offsetStart: term.offsetStart, - offsetEnd: term.offsetEnd - }); - } - } - } - } - - // Concatenate all text terms if any - if (query.text.length) { - if (!options.tokenize) { - query.text = query.text.join(' ').trim(); - } - } - // Just remove the attribute text when it's empty - else { - delete query.text; - } - - // Return forged query object - query.exclude = exclusion; - return query; - } - -}; - -exports.stringify = function (queryObject, options, prefix) { - - // Set a default options object when none is provided - if (!options) { - options = {offsets: true}; - } - - // If the query object is falsy we can just return an empty string - if (!queryObject) { - return ''; - } - - // If the query object is already a string, we can return it immediately - if (typeof queryObject === 'string') { - return queryObject; - } - - // If the query object is an array, we can return it concatenated with a space - if (Array.isArray(queryObject)) { - return queryObject.join(' '); - } - - // If the query object does not have any keys, we can return an empty string - if (!Object.keys(queryObject).length) { - return ''; - } - - // If the query object contains only text which is a string, we can return it immediately - if (Object.keys(queryObject).length === 3 && !!queryObject.text && !!queryObject.offsets && !!queryObject.exclude && typeof queryObject.text === 'string') { - return queryObject.text; - } - - // We will use a prefix for the exclude syntax later one - if (!prefix) { - prefix = ''; - } - - // Helpers - var addQuotes = function (string) { - return string.indexOf(' ') > - 1 ? JSON.stringify(string) : string; - }; - var addPrefix = function (string) { - return prefix + string; - }; - - // Keep track of all single parts in this array - var parts = []; - - // Text - if (queryObject.text) { - var value = []; - if (typeof queryObject.text === 'string') { - value.push(queryObject.text); - } else { - value.push.apply(value, queryObject.text); - } - - if (value.length > 0) { - parts.push(value.map(addQuotes).map(addPrefix).join(' ')); - } - } - - // Keywords - if (options.keywords) { - options.keywords.forEach(function (keyword) { - if (!queryObject[keyword]) { - return - } - - var value = []; - if (typeof queryObject[keyword] === 'string') { - value.push(queryObject[keyword]); - } else { - value.push.apply(value, queryObject[keyword]); - } - - if (value.length > 0) { - parts.push(addPrefix(keyword + ':' + value.map(addQuotes).join(','))); - } - }); - } - - // Ranges - if (options.ranges) { - options.ranges.forEach(function (range) { - if (!queryObject[range]) { - return - } - - var value = queryObject[range].from; - var to = queryObject[range].to; - if (to) { - value = value + '-' + to; - } - - if (value) { - parts.push(addPrefix(range + ':' + value)); - } - }); - } - - // Exclude - if (queryObject.exclude) { - if (Object.keys(queryObject.exclude).length > 0) { - parts.push(exports.stringify(queryObject.exclude, options, '-')); - } - } - - return parts.join(' '); - -}; -}); - -var searchQueryParser = searchQueryParser$1; - -const _containsSelector = function (attribute, filters, op = '*=') { - if (typeof (filters) === 'string' || filters instanceof String) { - return [`[${attribute} ${op} '${filters}']`]; - } - return filters.map((s) => `[${attribute} ${op} '${s}']`); -}; -const _tagSelector = function (tag) { - if (typeof (tag) === 'string' || tag instanceof String) { - if (tag.length > 0 && tag[0] === '#') { - // @ts-ignore - return [`.tag-${tag.slice(1).replace('/', '-')}`]; - } - return []; - } - return tag.map((t) => { - if (t.length > 0 && t[0] === '#') { - return `.tag-${t.slice(1).replace('/', '-')}`; - } - return ''; - }); -}; -const _classSelector = function (clazz) { - if (typeof (clazz) === 'string' || clazz instanceof String) { - return [`.${clazz}`]; - } - return clazz.map((c) => `.${c}`); -}; -const literal = function (atomicQuery, key) { - switch (key) { - case 'exclude': return []; - case 'content': - case 'ignore-case': - case 'text': return _containsSelector('content', atomicQuery[key], '@*='); - case 'match-case': - return _containsSelector('content', atomicQuery[key], '*='); - case 'file': return _containsSelector('name', atomicQuery[key]); - case 'name': return _containsSelector('name', atomicQuery[key], '@*='); - case 'tag': return _tagSelector(atomicQuery[key]); - case 'class': return _classSelector(atomicQuery[key]); - case 'raw': return [atomicQuery[key]]; - default: return _containsSelector(key, atomicQuery[key]); - } -}; -const _parseAtomicQuery = function (query, nodes) { - const keys = new Set(); - nodes.forEach((node) => { - Object.keys(node.data()).forEach((key) => keys.add(key)); - }); - const keywords = ['file', 'tag', 'raw', 'match-case', 'ignore-case', 'class']; - keywords.push(...keys); - const options = { - keywords: keywords, - tokenize: true, - offsets: false, - }; - const parsedQuery = searchQueryParser.parse(query, options); - let selector = 'node'; - for (const key of Object.keys(parsedQuery)) { - selector += literal(parsedQuery, key).join(); - } - let filteredNodes = nodes.filter(selector); - if (parsedQuery.exclude) { - for (const key of Object.keys(parsedQuery.exclude)) { - for (const query of literal(parsedQuery.exclude, key)) { - const selector = 'node' + query; - filteredNodes = filteredNodes.not(selector); - } - } - } - return filteredNodes; -}; -const _parseConjuncts = function (query, toFilter) { - const conjuncts = []; - const negated = []; - let nesting = 0; - let startBrace = -1; - let lastEndBrace = -1; - for (let i = 0; i < query.length; i++) { - if (query[i] === '(') { - if (nesting === 0) { - startBrace = i; - const betweenBraces = query.slice(lastEndBrace + 1, i > 0 ? (query[i - 1] === '-' ? i - 1 : i) : i); - if (betweenBraces.trim().length > 0) { - negated.push(false); - conjuncts.push(betweenBraces); - } - } - nesting += 1; - } - else if (query[i] === ')') { - nesting -= 1; - if (nesting === 0) { - lastEndBrace = i; - negated.push(startBrace > 0 ? query[startBrace - 1] === '-' : false); - conjuncts.push(query.slice(startBrace + 1, lastEndBrace)); - } - } - else if (i === query.length - 1) { - const betweenBraces = query.slice(lastEndBrace + 1); - if (betweenBraces.trim().length > 0) { - negated.push(false); - conjuncts.push(betweenBraces); - } - } - } - let coll = toFilter; - for (let i = 0; i < conjuncts.length; i++) { - const recFiltered = _parseDisjuncts(conjuncts[i], coll, query); - if (negated[i]) { - coll = coll.difference(recFiltered); - } - else { - coll = coll.intersection(recFiltered); - } - } - return coll; -}; -const _parseDisjuncts = function (query, toFilter, lastDisjunct) { - if (lastDisjunct === query) { - return _parseAtomicQuery(query, toFilter); - } - const disjuncts = []; - let lastEnd = 0; - let nesting = 0; - for (let i = 0; i < query.length; i++) { - if (query[i] === '(') { - nesting += 1; - } - else if (query[i] === ')') { - nesting -= 1; - } - else if (nesting === 0 && query[i] === 'O' && - i + 1 < query.length && query[i + 1] === 'R') { - disjuncts.push(query.slice(lastEnd, i)); - lastEnd = i + 2; - } - } - if (lastEnd < query.length) { - disjuncts.push(query.slice(lastEnd)); - } - return disjuncts.reduce((acc, s) => - // Performance optimization: Use toFilter - acc to not consider elements that are already matched - acc.union(_parseConjuncts(s, toFilter.difference(acc))), cytoscape_cjs().collection()); -}; -const filter$1 = function (query, nodes) { - return _parseDisjuncts(query, nodes, ''); -}; - -let VIEW_COUNTER = 0; -class Juggl extends obsidian.Component { - constructor(element, plugin, dataStores, settings, initialNodes) { - super(); - this.rebuildRelations = true; - this.selectName = undefined; - this.hoverTimeout = {}; - this.vizReady = false; - this.destroyHover = null; - this.element = element; - this.settings = settings; - this.workspace = plugin.app.workspace; - this.initialNodes = initialNodes; - this.vault = plugin.app.vault; - this.plugin = plugin; - this.datastores = dataStores; - this.events = new obsidian.Events(); - if (this.settings.mode === 'local') { - this.mode = new LocalMode(this); - } - else if (this.settings.mode === 'workspace') { - this.mode = new WorkspaceMode(this); - } - this.addChild(this.mode); - this.debouncedRestartLayout = obsidian.debounce(this.restartLayout, DEBOUNCE_LAYOUT, true); - } - async onload() { - this.element.addClass('cy-content'); - // Ensure the canvas fits the whole container - this.element.setAttr('style', 'padding: 0'); - this.element.setAttr('tabindex', 0); - if (this.settings.toolbar) { - const toolbarDiv = document.createElement('div'); - toolbarDiv.addClass('cy-toolbar'); - this.element.appendChild(toolbarDiv); - this.mode.createToolbar(toolbarDiv); - } - const div = document.createElement('div'); - div.id = 'cy' + VIEW_COUNTER; - this.element.appendChild(div); - div.setAttr('style', `height: ${this.settings.height}; width:${this.settings.width}`); - div.setAttr('tabindex', '0'); - let nodes; - let idsInitial = null; - if (this.initialNodes) { - idsInitial = this.initialNodes.map((s) => new VizId(s, this.datastores.coreStore.storeId())); - if (this.settings.expandInitial) { - nodes = await this.neighbourhood(idsInitial); - } - else { - nodes = await Promise.all(idsInitial.map((id) => this.datastores.coreStore.get(id, this))); - } - // Filter nulls - nodes = nodes.filter((n) => n); - this.viz = cytoscape_cjs({ - container: div, - elements: nodes, - minZoom: 0.3, - maxZoom: 10, - wheelSensitivity: this.settings.zoomSpeed, - }); - } - else { - this.viz = cytoscape_cjs({ - container: div, - elements: [{ data: { id: 'a' } }, { data: { id: 'b' } }], - minZoom: 0.3, - maxZoom: 10, - wheelSensitivity: this.settings.zoomSpeed, - }); - } - this.viz.dblclick(); - if (this.settings.navigator) { - const navDiv = document.createElement('div'); - navDiv.id = 'cynav' + VIEW_COUNTER; - div.children[0].appendChild(navDiv); - navDiv.addClass('cy-navigator'); - // @ts-ignore - this.viz.navigator({ - container: '#cynav' + VIEW_COUNTER, - viewLiveFramerate: 0, - thumbnailEventFramerate: 10, - thumbnailLiveFramerate: false, - dblClickDelay: 200, - removeCustomContainer: true, - rerenderDelay: 100, // ms to throttle rerender updates to the panzoom for performance - }); - } - VIEW_COUNTER += 1; - if (idsInitial) { - for (const id of idsInitial) { - const initialNode = this.viz.$id(id.toId()); - if (this.settings.expandInitial) { - initialNode.addClass(CLASS_EXPANDED); - } - initialNode.addClass(CLASS_PROTECTED); - } - const nodez = this.viz.nodes(); - const edges = await this.buildEdges(nodez); - this.viz.add(edges); - this.onGraphChanged(true); - } - await this.updateStylesheet(); - // Shouldn'' this just call restartLayout? - if (idsInitial) { - this.restartLayout(); - } - const view = this; - this.viz.on('tap boxselect', async (e) => { - // @ts-ignore - this.element.focus(); - }); - this.viz.on('tap', 'node', async (e) => { - const id = VizId.fromNode(e.target); - if (!(id.storeId === 'core')) { - return; - } - // TODO THIS SHOULD BE MOVED TO LOCAL MODE! - }); - this.viz.on('tap', 'edge', async (e) => { - // todo: move to correct spot in the file. - }); - this.viz.on('mouseover', 'node', async (e) => { - e.target.unlock(); - const node = e.target; - e.cy.elements() - .difference(node.closedNeighborhood()) - .addClass(CLASS_UNHOVER); - node.addClass(CLASS_HOVER) - .connectedEdges() - .addClass(CLASS_CONNECTED_HOVER) - .connectedNodes() - .addClass(CLASS_CONNECTED_HOVER); - const id = VizId.fromNode(e.target); - if (id.storeId === 'core') { - const file = this.plugin.metadata.getFirstLinkpathDest(id.id, ''); - if (file && file.extension === 'md' && (e.originalEvent.metaKey || !this.settings.metaKeyHover)) { - const content = await view.vault.cachedRead(file); - this.hoverTimeout[e.target.id()] = setTimeout(async () => await this.popover(content, file.path, e.target, 'advanced-graph-preview-node'), 400); - } - } - }); - this.viz.on('mouseover', 'edge', async (e) => { - const edge = e.target; - if (this.settings.hoverEdges) { - e.cy.elements() - .difference(edge.connectedNodes().union(edge)) - .addClass(CLASS_UNHOVER); - edge.addClass('hover') - .connectedNodes() - .addClass(CLASS_CONNECTED_HOVER); - } - if ('context' in edge.data() && (e.originalEvent.metaKey || !this.settings.metaKeyHover)) { // && e.originalEvent.metaKey) { - // TODO resolve SourcePath, can be done using the source file. - this.hoverTimeout[e.target.id()] = setTimeout(async () => - // @ts-ignore - await this.popover(edge.data()['context'], '', edge, 'juggl-preview-edge'), 800); - } - }); - this.viz.on('mouseout', (e) => { - if (e.target === e.cy) { - return; - } - const id = e.target.id(); - if (id in this.hoverTimeout) { - clearTimeout(this.hoverTimeout[id]); - this.hoverTimeout[id] = undefined; - } - e.cy.elements().removeClass([CLASS_HOVER, CLASS_UNHOVER, CLASS_CONNECTED_HOVER]); - if (e.target.hasClass(CLASS_PINNED)) { - e.target.lock(); - } - }); - this.viz.on('grab', (e) => { - if (this.activeLayout) { - this.activeLayout.stop(); - } - }); - this.viz.on('dragfree', (e) => { - if (this.activeLayout) { - this.activeLayout.stop(); - } - // this.activeLayout = this.viz.layout(this.colaLayout()).start(); - this.activeLayout.start(); - const node = e.target; - node.lock(); - this.activeLayout.one('layoutstop', (e) => { - if (!node.hasClass(CLASS_PINNED)) { - node.unlock(); - } - }); - }); - this.viz.on('cxttap', (e) => { - // Thanks Liam for sharing how to do context menus - const fileMenu = new obsidian.Menu(this.plugin.app); // Creates empty file menu - if (!(e.target === this.viz) && e.target.group() === 'nodes') { - const id = VizId.fromNode(e.target); - e.target.select(); - if (id.storeId === 'core') { - const file = this.plugin.app.metadataCache.getFirstLinkpathDest(id.id, ''); - if (!(file === undefined)) { - // hook for plugins to populate menu with "file-aware" menu items - this.plugin.app.workspace.trigger('file-menu', fileMenu, file, 'my-context-menu', null); - } - } - } - this.mode.fillMenu(fileMenu, this.viz.nodes(':selected')); - fileMenu.showAtPosition({ x: e.originalEvent.x, y: e.originalEvent.y }); - }); - this.viz.on('layoutstop', obsidian.debounce((e) => { - if (!this.settings.autoZoom) { - return; - } - let fitNodes; - const activeFile = this.viz.nodes(`.${CLASS_ACTIVE_NODE}`); - if (activeFile.length > 0) { - fitNodes = activeFile.closedNeighborhood(); - } - else { - fitNodes = this.viz.nodes(); - } - e.cy.animate({ - fit: { - eles: fitNodes, - padding: 0, - }, - duration: VIEWPORT_ANIMATION_TIME, - queue: false, - }); - }, DEBOUNCE_FOLLOW, true)); - this.vizReady = true; - this.trigger('vizReady', this.viz); - console.log('Visualization ready'); - } - async popover(mdContent, sourcePath, target, styleClass) { - const newDiv = document.createElement('div'); - newDiv.addClasses(['popover', 'hover-popover', 'is-loaded', 'juggl-hover']); - const mdEmbedDiv = document.createElement('div'); - mdEmbedDiv.addClasses(['markdown-embed', styleClass]); - newDiv.appendChild(mdEmbedDiv); - const mdEmbedContentDiv = document.createElement('div'); - mdEmbedContentDiv.addClasses(['markdown-embed-content']); - mdEmbedDiv.appendChild(mdEmbedContentDiv); - const mdPreviewView = document.createElement('div'); - mdPreviewView.addClasses(['markdown-preview-view']); - mdEmbedContentDiv.appendChild(mdPreviewView); - const mdPreviewSection = document.createElement('div'); - mdPreviewSection.addClasses(['markdown-preview-sizer', 'markdown-preview-section']); - mdPreviewView.appendChild(mdPreviewSection); - await obsidian.MarkdownRenderer.renderMarkdown(mdContent, mdPreviewSection, sourcePath, null); - document.body.appendChild(newDiv); - // @ts-ignore - const popper = target.popper({ - content: () => { - return newDiv; - }, - popper: { - placement: 'top', - }, // my popper options here - }); - const updatePopper = function () { - popper.update(); - }; - target.on('position', updatePopper); - this.viz.on('pan zoom resize', updatePopper); - newDiv.addEventListener('mouseenter', (e) => { - newDiv.addClass('popover-hovered'); - }); - this.destroyHover = () => { - popper.destroy(); - newDiv.remove(); - this.destroyHover = null; - }; - newDiv.addEventListener('mouseleave', this.destroyHover); - const destroyHover = this.destroyHover; - this.viz.one('mouseout', (e) => { - setTimeout(function () { - if (!newDiv.hasClass('popover-hovered')) { - destroyHover(); - } - }, 300); - }); - } - async neighbourhood(toExpand) { - const nodes = []; - for (const store of this.datastores.dataStores) { - nodes.push(...await store.getNeighbourhood(toExpand, this)); - } - return nodes; - } - async buildEdges(newNodes) { - const edges = []; - for (const store of this.datastores.dataStores) { - edges.push(...await store.connectNodes(this.viz.nodes(), newNodes, this)); - } - return edges; - } - async expand(toExpand, batch = true, triggerGraphChanged = true) { - if (toExpand.length === 0) { - return null; - } - if (batch) { - this.viz.startBatch(); - } - toExpand.addClass(CLASS_EXPANDED); - toExpand.addClass(CLASS_PROTECTED); - // Currently returns the edges merged into the graph, not the full neighborhood - const expandedIds = toExpand.map((n) => VizId.fromNode(n)); - const neighbourhood = await this.neighbourhood(expandedIds); - this.mergeToGraph(neighbourhood, false, false); - const nodes = this.viz.collection(); - neighbourhood.forEach((n) => { - nodes.merge(this.viz.$id(n.data.id)); - }); - const edges = await this.buildEdges(nodes); - const edgesInGraph = this.mergeToGraph(edges, false, triggerGraphChanged); - if (batch) { - this.viz.endBatch(); - } - this.trigger('expand', toExpand); - return edgesInGraph; - } - async updateStylesheet() { - const sheet = new GraphStyleSheet(this.plugin); - this.trigger('stylesheet', sheet); - const sSheet = await sheet.getStylesheet(this); - this.viz.style(sSheet); - } - onunload() { - } - removeNodes(nodes) { - // Only call this method if the node is forcefully removed from the graph, not when the node no longer exists - // on the back-end. This is because of how it handles expanded. - // Remove as expanded if a neighbour is removed from the graph. - let removed = null; - this.viz.batch(() => { - this.getExpanded() - .intersection(nodes.neighborhood()) - .removeClass('expanded'); - removed = nodes.remove(); - this.onGraphChanged(false, true); - }); - return removed; - } - fitView(nodes) { - if (nodes) { - this.viz.fit(nodes); - } - else { - this.viz.fit(); - } - } - // getInQuery(nodes: IdType[]): string { - // let query = 'IN ['; - // let first = true; - // for (const id of nodes) { - // // @ts-ignore - // const title = this.findNodeRaw(id).properties['name'] as string; - // if (!first) { - // query += ', '; - // } - // query += '"' + title + '"'; - // first = false; - // } - // query += ']'; - // return query; - // } - restartLayout() { - if (this.activeLayout) { - this.activeLayout.stop(); - } - const layoutSettings = parseLayoutSettings(this.settings); - this.activeLayout = layoutSettings.startLayout(this); - } - setLayout(settings) { - this.settings.layout = settings.options; - this.restartLayout(); - } - mergeToGraph(elements, batch = true, triggerGraphChanged = true) { - if (batch) { - this.viz.startBatch(); - } - const addElements = []; - const mergedCollection = this.viz.collection(); - elements.forEach((n) => { - if (this.viz.$id(n.data.id).length === 0) { - addElements.push(n); - } - else { - const gElement = this.viz.$id(n.data.id); - const extraClasses = CLASSES.filter((clazz) => gElement.hasClass(clazz)); - // @ts-ignore - extraClasses.push(...gElement.classes().filter((el) => el.startsWith('global-') || el.startsWith('local-'))); - // TODO: Maybe make an event here - gElement.classes(n.classes); - for (const clazz of extraClasses) { - gElement.addClass(clazz); - } - gElement.data(n.data); - mergedCollection.merge(gElement); - } - }); - const addCollection = this.viz.add(addElements); - mergedCollection.merge(addCollection); - if (triggerGraphChanged) { - this.onGraphChanged(false); - } - if (batch) { - this.viz.endBatch(); - } - return { merged: mergedCollection, added: addCollection }; - } - assignStyleGroups() { - const viz = this.viz; - const _assignGroups = function (groups, prefix) { - for (const [index, group] of groups.entries()) { - const clazz = `${prefix}-${index}`; - viz.nodes().removeClass(clazz); - const filteredNodes = filter$1(group.filter, viz.nodes()); - filteredNodes.addClass(clazz); - } - }; - _assignGroups(this.settings.styleGroups, 'local'); - if ('settings' in this.plugin) { - // @ts-ignore - _assignGroups(this.plugin.settings.globalStyleGroups, 'global'); - } - } - onGraphChanged(batch = true, debounceLayout = false) { - if (batch) { - this.viz.startBatch(); - } - this.viz.nodes().forEach((node) => { - node.data('degree', node.degree(false)); - node.data('nameLength', node.data('name').length); - }); - if (batch) { - this.viz.endBatch(); - } - this.trigger('elementsChange'); - this.searchFilter(this.settings.filter); - if (debounceLayout) { - this.debouncedRestartLayout(); - } - else { - this.restartLayout(); - } - this.assignStyleGroups(); - } - getViz() { - return this.viz; - } - setMode(modeName) { - this.removeChild(this.mode); - if (modeName === 'local') { - this.mode = new LocalMode(this); - } - else if (modeName === 'workspace') { - this.mode = new WorkspaceMode(this); - } - this.addChild(this.mode); - if (this.settings.toolbar) { - this.mode.createToolbar(this.element.children[0]); - } - } - searchFilter(query) { - // The query here is in approximately the format of Obsidian search queries - // This is much less efficient than using selectors, so only use this if you need to parse user input. - this.viz.nodes().removeClass(CLASS_FILTERED); - const filteredNodes = filter$1(query, this.viz.nodes()); - this.viz.nodes().difference(filteredNodes).addClass(CLASS_FILTERED); - this.settings.filter = query; - } - getPinned() { - return this.viz.nodes(`.${CLASS_PINNED}`); - } - getExpanded() { - return this.viz.nodes(`.${CLASS_EXPANDED}`); - } - getProtected() { - return this.viz.nodes(`.${CLASS_PROTECTED}`); - } - on(name, callback, ctx) { - return this.events.on(name, callback, ctx); - } - off(name, callback) { - this.events.off(name, callback); - } - offref(ref) { - this.events.offref(ref); - } - trigger(name, ...data) { - this.events.trigger(name, ...data); - } - tryTrigger(evt, args) { - this.events.tryTrigger(evt, args); - } -} - -class ImageServer extends obsidian.Component { - constructor(plugin) { - super(); - this.settings = plugin.settings; - this.plugin = plugin; - this.imgServer = null; - } - async onload() { - super.onload(); - const path = require('path'); - const http = require('http'); - const fs = require('fs'); - let dir = null; - try { - dir = path.join(this.plugin.path); - } - catch (e) { - console.log('Couldn\'t start image server. This is likely because we\'re on mobile!'); - console.log(e); - return; - } - const mime = { - gif: 'image/gif', - jpg: 'image/jpeg', - png: 'image/png', - svg: 'image/svg+xml', - }; - const settings = this.settings; - const vault = this.plugin.app.vault; - this.imgServer = http.createServer(function (req, res) { - const reqpath = req.url.toString().split('?')[0]; - if (req.method !== 'GET') { - res.statusCode = 501; - res.setHeader('Content-Type', 'text/plain'); - return res.end('Method not implemented'); - } - let file = path.join(dir, decodeURI(reqpath.replace(/\/$/, '/index.html'))); - file = vault.adapter.getFullPath(file); - // console.log(vault.getResourcePath(nFile as TFile)); - if (settings.debug) { - console.log('entering server query'); - console.log(req); - console.log(file); - } - // if (file.indexOf(dir + path.sep) !== 0) { - // res.statusCode = 403; - // res.setHeader('Content-Type', 'text/plain'); - // return res.end('Forbidden'); - // } - // @ts-ignore - const type = mime[path.extname(file).slice(1)]; - const s = fs.createReadStream(file); - s.on('open', function () { - res.setHeader('Content-Type', type); - res.setHeader('Access-Control-Allow-Origin', '*'); - s.pipe(res); - }); - s.on('error', function () { - console.log('Here3'); - res.setHeader('Content-Type', 'text/plain'); - res.statusCode = 404; - res.end('Not found'); - }); - }); - try { - const port = this.settings.imgServerPort; - this.imgServer.listen(port, function () { - console.log('Image server listening on http://localhost:' + port + '/'); - }); - } - catch (e) { - console.log(e); - new obsidian.Notice('Neo4j: Couldn\'t start image server, see console'); - } - } - async onunload() { - super.onunload(); - this.imgServer.close(); - this.imgServer = null; - } -} - -var cytoscapeNavigator = createCommonjsModule(function (module) { -(function(){ - var defaults = { - container: false // can be a HTML or jQuery element or jQuery selector - , viewLiveFramerate: 0 // set false to update graph pan only on drag end; set 0 to do it instantly; set a number (frames per second) to update not more than N times per second - , dblClickDelay: 200 // milliseconds - , removeCustomContainer: true // destroy the container specified by user on plugin destroy - , rerenderDelay: 500 // ms to throttle rerender updates to the panzoom for performance - }; - - var debounce = (function(){ - /** - * lodash 3.1.1 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - /** Used as the `TypeError` message for "Functions" methods. */ - var FUNC_ERROR_TEXT = 'Expected a function'; - - /* Native method references for those with the same name as other `lodash` methods. */ - var nativeMax = Math.max, - nativeNow = Date.now; - - /** - * Gets the number of milliseconds that have elapsed since the Unix epoch - * (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @category Date - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => logs the number of milliseconds it took for the deferred function to be invoked - */ - var now = nativeNow || function() { - return new Date().getTime(); - }; - - /** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed invocations. Provide an options object to indicate that `func` - * should be invoked on the leading and/or trailing edge of the `wait` timeout. - * Subsequent calls to the debounced function return the result of the last - * `func` invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked - * on the trailing edge of the timeout only if the the debounced function is - * invoked more than once during the `wait` timeout. - * - * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=false] Specify invoking on the leading - * edge of the timeout. - * @param {number} [options.maxWait] The maximum time `func` is allowed to be - * delayed before it's invoked. - * @param {boolean} [options.trailing=true] Specify invoking on the trailing - * edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // avoid costly calculations while the window size is in flux - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // invoke `sendMail` when the click event is fired, debouncing subsequent calls - * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // ensure `batchLog` is invoked once after 1 second of debounced calls - * var source = new EventSource('/stream'); - * jQuery(source).on('message', _.debounce(batchLog, 250, { - * 'maxWait': 1000 - * })); - * - * // cancel a debounced call - * var todoChanges = _.debounce(batchLog, 1000); - * Object.observe(models.todo, todoChanges); - * - * Object.observe(models, function(changes) { - * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) { - * todoChanges.cancel(); - * } - * }, ['delete']); - * - * // ...at some point `models.todo` is changed - * models.todo.completed = true; - * - * // ...before 1 second has passed `models.todo` is deleted - * // which cancels the debounced `todoChanges` call - * delete models.todo; - */ - function debounce(func, wait, options) { - var args, - maxTimeoutId, - result, - stamp, - thisArg, - timeoutId, - trailingCall, - lastCalled = 0, - maxWait = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = wait < 0 ? 0 : (+wait || 0); - if (options === true) { - var leading = true; - trailing = false; - } else if (isObject(options)) { - leading = !!options.leading; - maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait); - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function cancel() { - if (timeoutId) { - clearTimeout(timeoutId); - } - if (maxTimeoutId) { - clearTimeout(maxTimeoutId); - } - lastCalled = 0; - maxTimeoutId = timeoutId = trailingCall = undefined; - } - - function complete(isCalled, id) { - if (id) { - clearTimeout(id); - } - maxTimeoutId = timeoutId = trailingCall = undefined; - if (isCalled) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = undefined; - } - } - } - - function delayed() { - var remaining = wait - (now() - stamp); - if (remaining <= 0 || remaining > wait) { - complete(trailingCall, maxTimeoutId); - } else { - timeoutId = setTimeout(delayed, remaining); - } - } - - function maxDelayed() { - complete(trailing, timeoutId); - } - - function debounced() { - args = arguments; - stamp = now(); - thisArg = this; - trailingCall = trailing && (timeoutId || !leading); - - if (maxWait === false) { - var leadingCall = leading && !timeoutId; - } else { - if (!maxTimeoutId && !leading) { - lastCalled = stamp; - } - var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0 || remaining > maxWait; - - if (isCalled) { - if (maxTimeoutId) { - maxTimeoutId = clearTimeout(maxTimeoutId); - } - lastCalled = stamp; - result = func.apply(thisArg, args); - } - else if (!maxTimeoutId) { - maxTimeoutId = setTimeout(maxDelayed, remaining); - } - } - if (isCalled && timeoutId) { - timeoutId = clearTimeout(timeoutId); - } - else if (!timeoutId && wait !== maxWait) { - timeoutId = setTimeout(delayed, wait); - } - if (leadingCall) { - isCalled = true; - result = func.apply(thisArg, args); - } - if (isCalled && !timeoutId && !maxTimeoutId) { - args = thisArg = undefined; - } - return result; - } - debounced.cancel = cancel; - return debounced; - } - - /** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ - function isObject(value) { - // Avoid a V8 JIT bug in Chrome 19-20. - // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); - } - - return debounce; - - })(); - - // ported lodash throttle function - var throttle = function( func, wait, options ){ - var leading = true, - trailing = true; - - if( options === false ){ - leading = false; - } else if( typeof options === typeof {} ){ - leading = 'leading' in options ? options.leading : leading; - trailing = 'trailing' in options ? options.trailing : trailing; - } - options = options || {}; - options.leading = leading; - options.maxWait = wait; - options.trailing = trailing; - - return debounce( func, wait, options ); - }; - - var Navigator = function ( element, options ) { - this._init(element, options); - }; - - var extend = function() { - for(var i = 1; i < arguments.length; i++) { - for(var key in arguments[i]) { - if(arguments[i].hasOwnProperty(key)) { - arguments[0][key] = arguments[i][key]; - } - } - } - return arguments[0]; - }; - - var wid = function(elem) { - return elem.getBoundingClientRect().width; - }; - - var hei = function(elem) { - return elem.getBoundingClientRect().height; - }; - - Navigator.prototype = { - - constructor: Navigator - - /**************************** - Main functions - ****************************/ - - , bb: function(){ - var bb = this.cy.elements().boundingBox(); - - if( bb.w === 0 || bb.h === 0 ){ - return { - x1: 0, - x2: Infinity, - y1: 0, - y2: Infinity, - w: Infinity, - h: Infinity - } // => hide interactive overlay - } - - return bb - } - - , _addCyListener: function(events, handler){ - this._cyListeners.push({ - events: events, - handler: handler - }); - - this.cy.on(events, handler); - } - - , _removeCyListeners: function(){ - var cy = this.cy; - - this._cyListeners.forEach(function(l){ - cy.off(l.events, l.handler); - }); - - cy.offRender(this._onRenderHandler); - } - - , _init: function ( cy, options ) { - this._cyListeners = []; - - this.$element = cy.container(); - this.options = extend({}, defaults, options); - - this.cy = cy; - - // Cache bounding box - this.boundingBox = this.bb(); - - // Cache sizes - this.width = wid(this.$element); - this.height = hei(this.$element); - - // Init components - this._initPanel(); - this._initThumbnail(); - this._initView(); - this._initOverlay(); - } - - , destroy: function () { - this._removeEventsHandling(); - - // If container is not created by navigator and its removal is prohibited - if (this.options.container && !this.options.removeCustomContainer) { - this.$panel.innerHTML = ''; - } else { - this.$panel.parentElement.removeChild(this.$panel); - } - } - - /**************************** - Navigator elements functions - ****************************/ - - /* - * Used inner attributes - * - * w {number} width - * h {number} height - */ - , _initPanel: function () { - var options = this.options; - if(options.container && typeof options.container === 'string' && options.container.length > 0) { - // to not break users which gives a jquery string selector - if (options.container.indexOf('#') !== -1) { - this.$panel = document.getElementById(options.container.replace('#', '')); - } else { - this.$panel = document.getElementsByClassName(options.container.replace('.', ''))[0]; - } - } else { - this.$panel = document.createElement('div'); - this.$panel.className = 'cytoscape-navigator'; - document.body.appendChild(this.$panel); - } - this._setupPanel(); - this._addCyListener('resize', this.resize.bind(this)); - } - - , _setupPanel: function () { - // Cache sizes - this.panelWidth = wid(this.$panel); - this.panelHeight = hei(this.$panel); - } - - /* - * Used inner attributes - * - * zoom {number} - * pan {object} - {x: 0, y: 0} - */ - , _initThumbnail: function () { - // Create thumbnail - this.$thumbnail = document.createElement('img'); - - // Add thumbnail canvas to the DOM - this.$panel.appendChild(this.$thumbnail); - - // Setup thumbnail - this._setupThumbnailSizes(); - this._setupThumbnail(); - } - - , _setupThumbnail: function () { - this._updateThumbnailImage(); - } - - , _setupThumbnailSizes: function () { - // Update bounding box cache - this.boundingBox = this.bb(); - - this.thumbnailZoom = Math.min(this.panelHeight / this.boundingBox.h, this.panelWidth / this.boundingBox.w); - - // Used on thumbnail generation - this.thumbnailPan = { - x: (this.panelWidth - this.thumbnailZoom * (this.boundingBox.x1 + this.boundingBox.x2))/2 - , y: (this.panelHeight - this.thumbnailZoom * (this.boundingBox.y1 + this.boundingBox.y2))/2 - }; - } - - // If bounding box has changed then update sizes - // Otherwise just update the thumbnail - , _checkThumbnailSizesAndUpdate: function () { - // Cache previous values - var _zoom = this.thumbnailZoom - , _pan_x = this.thumbnailPan.x - , _pan_y = this.thumbnailPan.y; - - this._setupThumbnailSizes(); - - if (_zoom != this.thumbnailZoom || _pan_x != this.thumbnailPan.x || _pan_y != this.thumbnailPan.y) { - this._setupThumbnail(); - this._setupView(); - } else { - this._updateThumbnailImage(); - } - } - - /* - * Used inner attributes - * - * w {number} width - * h {number} height - * x {number} - * y {number} - * borderWidth {number} - * locked {boolean} - */ - , _initView: function () { - this.$view = document.createElement('div'); - this.$view.className = 'cytoscape-navigatorView'; - this.$panel.appendChild(this.$view); - // Compute borders - this.viewBorderTop = parseInt(this.$view.style['border-top-width'], 10) || 0; - this.viewBorderRight = parseInt(this.$view.style['border-right-width'], 10) || 0; - this.viewBorderBottom = parseInt(this.$view.style['border-bottom-width'], 10) || 0; - this.viewBorderLeft = parseInt(this.$view.style['border-left-width'], 10) || 0; - - // Abstract borders - this.viewBorderHorizontal = this.viewBorderLeft + this.viewBorderRight; - this.viewBorderVertical = this.viewBorderTop + this.viewBorderBottom; - - this._setupView(); - - // Hook graph zoom and pan - this._addCyListener('zoom pan', this._setupView.bind(this)); - } - - , _setupView: function () { - if (this.viewLocked) - return - - var cyZoom = this.cy.zoom() - , cyPan = this.cy.pan(); - - // Horizontal computation - this.viewW = this.width / cyZoom * this.thumbnailZoom; - this.viewX = -cyPan.x * this.viewW / this.width + this.thumbnailPan.x - this.viewBorderLeft; - - // Vertical computation - this.viewH = this.height / cyZoom * this.thumbnailZoom; - this.viewY = -cyPan.y * this.viewH / this.height + this.thumbnailPan.y - this.viewBorderTop; - - // CSS view - this.$view.style['width'] = this.viewW + 'px'; - this.$view.style['height'] = this.viewH + 'px'; - this.$view.style['position'] = 'absolute'; - this.$view.style['left'] = this.viewX + 'px'; - this.$view.style['top'] = this.viewY + 'px'; - } - - /* - * Used inner attributes - * - * timeout {number} used to keep stable frame rate - * lastMoveStartTime {number} - * inMovement {boolean} - * hookPoint {object} {x: 0, y: 0} - */ - , _initOverlay: function () { - // Used to capture mouse events - this.$overlay = document.createElement('div'); - this.$overlay.className = 'cytoscape-navigatorOverlay'; - - // Add overlay to the DOM - this.$panel.appendChild(this.$overlay); - - // Init some attributes - this.overlayHookPointX = 0; - this.overlayHookPointY = 0; - - // Listen for events - this._initEventsHandling(); - } - - /**************************** - Event handling functions - ****************************/ - - , resize: function () { - // Cache sizes - this.width = wid(this.$element); - this.height = hei(this.$element); - this._thumbnailSetup = false; - this._setupPanel(); - this._checkThumbnailSizesAndUpdate(); - this._setupView(); - } - - , _initEventsHandling: function () { - var that = this - , eventsLocal = [ - // Mouse events - 'mousedown' - , 'mousewheel' - , 'DOMMouseScroll' // Mozilla specific event - // Touch events - , 'touchstart' - ] - , eventsGlobal = [ - 'mouseup' - , 'mouseout' - , 'mousemove' - // Touch events - , 'touchmove' - , 'touchend' - ]; - - // handle events and stop their propagation - var overlayListener = function (ev) { - // Touch events - if (ev.type == 'touchstart') { - // Will count as middle of View - Object.defineProperty(ev, 'offsetX', { - value: that.viewX + that.viewW / 2, - writable: true - }); - Object.defineProperty(ev, 'offsetY', { - value: that.viewY + that.viewH / 2, - writable: true - }); - } - - // Normalize offset for browsers which do not provide that value - if (ev.offsetX === undefined || ev.offsetY === undefined) { - var rect = ev.target.getBoundingClientRect(); - var targetOffset = { - top: rect.top + window.scrollY, - left: rect.left + window.scrollX, - }; - Object.defineProperty(ev, 'offsetX', { - value: ev.pageX - targetOffset.left, - writable: true - }); - Object.defineProperty(ev, 'offsetY', { - value: ev.pageY - targetOffset.top, - writable: true - }); - } - - if (ev.type == 'mousedown' || ev.type == 'touchstart') { - that._eventMoveStart(ev); - } else if (ev.type == 'mousewheel' || ev.type == 'DOMMouseScroll') { - that._eventZoom(ev); - } - - // Prevent default and propagation - // Don't use peventPropagation as it breaks mouse events - return false; - }; - - // Hook global events - var globalListener = function (ev) { - - // Do not make any computations if it is has no effect on Navigator - if (!that.overlayInMovement) - return; - - // Touch events - if (ev.type == 'touchend') { - // Will count as middle of View - Object.defineProperty(ev, 'offsetX', { - value: that.viewX + that.viewW / 2, - writable: true - }); - Object.defineProperty(ev, 'offsetY', { - value: that.viewY + that.viewH / 2, - writable: true - }); - } else if (ev.type == 'touchmove') { - // Hack - we take in account only first touch - Object.defineProperty(ev, 'pageX', { - value: ev.originalEvent.touches[0].pageX, - writable: true - }); - Object.defineProperty(ev, 'pageY', { - value: ev.originalEvent.touches[0].pageY, - writable: true - }); - } - - // Normalize offset for browsers which do not provide that value - if (ev.offsetX === undefined || ev.offsetY === undefined) { - var rect = ev.target.getBoundingClientRect(); - var targetOffset = { - top: rect.top + window.scrollY, - left: rect.left + window.scrollX, - }; - Object.defineProperty(ev, 'offsetX', { - value: ev.pageX - targetOffset.left, - writable: true - }); - Object.defineProperty(ev, 'offsetY', { - value: ev.pageY - targetOffset.top, - writable: true - }); - } - - // Translate global events into local coordinates - if (ev.target !== that.$overlay) { - var rect = ev.target.getBoundingClientRect(); - var rect2 = that.$overlay.getBoundingClientRect(); - var targetOffset = { - top: rect.top + window.scrollY, - left: rect.left + window.scrollX, - }; - var overlayOffset = { - top: rect2.top + window.scrollY, - left: rect2.left + window.scrollX, - }; - - if(targetOffset && overlayOffset) { - Object.defineProperty(ev, 'offsetX', { - value: ev.offsetX - overlayOffset.left + targetOffset.left, - writable: true - }); - Object.defineProperty(ev, 'offsetY', { - value: ev.offsetY - overlayOffset.top + targetOffset.top, - writable: true - }); - } else { - return false; - } - } - - if (ev.type == 'mousemove' || ev.type == 'touchmove') { - that._eventMove(ev); - } else if (ev.type == 'mouseup' || ev.type == 'touchend') { - that._eventMoveEnd(ev); - } - - // Prevent default and propagation - // Don't use peventPropagation as it breaks mouse events - return false; - }; - - for (var i = 0; i < eventsLocal.length; i++) { - this.$overlay.addEventListener(eventsLocal[i], overlayListener, false); - } - - for (var i = 0; i < eventsGlobal.length; i++) { - window.addEventListener(eventsGlobal[i], globalListener, false); - } - - this._removeEventsHandling = function(){ - - for (var i = 0; i < eventsLocal.length; i++) { - this.$overlay.removeEventListener(eventsLocal[i], overlayListener); - } - - for (var i = 0; i < eventsGlobal.length; i++) { - window.removeEventListener(eventsGlobal[i], globalListener); - } - }; - } - - , _eventMoveStart: function (ev) { - var now = new Date().getTime(); - - // Check if it was double click - if (this.overlayLastMoveStartTime - && this.overlayLastMoveStartTime + this.options.dblClickDelay > now) { - // Reset lastMoveStartTime - this.overlayLastMoveStartTime = 0; - // Enable View in order to move it to the center - this.overlayInMovement = true; - - // Set hook point as View center - this.overlayHookPointX = this.viewW / 2; - this.overlayHookPointY = this.viewH / 2; - - // Move View to start point - if (this.options.viewLiveFramerate !== false) { - this._eventMove({ - offsetX: this.panelWidth / 2 - , offsetY: this.panelHeight / 2 - }); - } else { - this._eventMoveEnd({ - offsetX: this.panelWidth / 2 - , offsetY: this.panelHeight / 2 - }); - } - - // View should be inactive as we don't want to move it right after double click - this.overlayInMovement = false; - } - // This is a single click - // Take care as single click happens before double click 2 times - else { - this.overlayLastMoveStartTime = now; - this.overlayInMovement = true; - // Lock view moving caused by cy events - this.viewLocked = true; - - // if event started in View - if (ev.offsetX >= this.viewX && ev.offsetX <= this.viewX + this.viewW - && ev.offsetY >= this.viewY && ev.offsetY <= this.viewY + this.viewH - ) { - this.overlayHookPointX = ev.offsetX - this.viewX; - this.overlayHookPointY = ev.offsetY - this.viewY; - } - // if event started in Thumbnail (outside of View) - else { - // Set hook point as View center - this.overlayHookPointX = this.viewW / 2; - this.overlayHookPointY = this.viewH / 2; - - // Move View to start point - this._eventMove(ev); - } - } - } - - , _eventMove: function (ev) { - var that = this; - - this._checkMousePosition(ev); - - // break if it is useless event - if (!this.overlayInMovement) { - return; - } - - // Update cache - this.viewX = ev.offsetX - this.overlayHookPointX; - this.viewY = ev.offsetY - this.overlayHookPointY; - - // Update view position - this.$view.style['left'] = this.viewX + 'px'; - this.$view.style['top'] = this.viewY + 'px'; - - // Move Cy - if (this.options.viewLiveFramerate !== false) { - // trigger instantly - if (this.options.viewLiveFramerate == 0) { - this._moveCy(); - } - // trigger less often than frame rate - else if (!this.overlayTimeout) { - // Set a timeout for graph movement - this.overlayTimeout = setTimeout(function () { - that._moveCy(); - that.overlayTimeout = false; - }, 1000 / this.options.viewLiveFramerate); - } - } - } - - , _checkMousePosition: function (ev) { - // If mouse in over View - if(ev.offsetX > this.viewX && ev.offsetX < this.viewX + this.viewBorderHorizontal + this.viewW - && ev.offsetY > this.viewY && ev.offsetY < this.viewY + this.viewBorderVertical + this.viewH) { - this.$panel.classList.add('mouseover-view'); - } else { - this.$panel.classList.remove('mouseover-view'); - } - } - - , _eventMoveEnd: function (ev) { - // Unlock view changing caused by graph events - this.viewLocked = false; - - // Remove class when mouse is not over Navigator - this.$panel.classList.remove('mouseover-view'); - - if (!this.overlayInMovement) { - return; - } - - // Trigger one last move - this._eventMove(ev); - - // If mode is not live then move graph on drag end - if (this.options.viewLiveFramerate === false) { - this._moveCy(); - } - - // Stop movement permission - this.overlayInMovement = false; - } - - , _eventZoom: function (ev) { - var ev2 = extend({}, ev.originalEvent); - var delta = ev.wheelDeltaY / 1000 || ev.wheelDelta / 1000 || ev.detail / -32 || ev2.wheelDeltaY / 1000 || ev2.wheelDelta / 1000 || ev2.detail / -32; - var zoomRate = Math.pow(10, delta) - , mousePosition = { - left: ev.offsetX - , top: ev.offsetY - }; - - if (this.cy.zoomingEnabled()) { - this._zoomCy(zoomRate, mousePosition); - } - } - - , _updateThumbnailImage: function () { - var that = this; - - if( this._thumbnailUpdating ){ - return; - } - - this._thumbnailUpdating = true; - - var render = function() { - that._checkThumbnailSizesAndUpdate(); - that._setupView(); - - var $img = that.$thumbnail; - var img = $img; - - var w = that.panelWidth; - var h = that.panelHeight; - var bb = that.boundingBox; - var zoom = Math.min( w/bb.w, h/bb.h ); - - var png = that.cy.png({ - full: true, - scale: zoom, - maxHeight: h, - maxWidth: w - }); - if( png.indexOf('image/png') < 0 ){ - img.removeAttribute( 'src' ); - } else { - img.setAttribute( 'src', png ); - } - - var translate = { - x: (w - zoom*( bb.w ))/2, - y: (h - zoom*( bb.h ))/2 - }; - - $img.style['position'] = 'absolute'; - $img.style['left'] = translate.x + 'px'; - $img.style['top'] = translate.y + 'px'; - - }; - - this._onRenderHandler = throttle(render, that.options.rerenderDelay); - - this.cy.onRender( this._onRenderHandler ); - } - - /**************************** - Navigator view moving - ****************************/ - - , _moveCy: function () { - this.cy.pan({ - x: -(this.viewX + this.viewBorderLeft - this.thumbnailPan.x) * this.width / this.viewW - , y: -(this.viewY + this.viewBorderLeft - this.thumbnailPan.y) * this.height / this.viewH - }); - } - - /** - * Zooms graph. - * - * @this {cytoscapeNavigator} - * @param {number} zoomRate The zoom rate value. 1 is 100%. - */ - , _zoomCy: function (zoomRate, zoomCenterRaw) { - var zoomCenter - ; - - zoomCenter = { - x: this.width / 2 - , y: this.height / 2 - }; - - this.cy.zoom({ - level: this.cy.zoom() * zoomRate - , renderedPosition: zoomCenter - }); - } - }; - - // registers the extension on a cytoscape lib ref - var register = function( cytoscape ){ - - if (!cytoscape){ return; } // can't register if cytoscape unspecified - - cytoscape( 'core', 'navigator', function( options ){ - var cy = this; - - return new Navigator( cy, options ); - } ); - - }; - - if (module.exports) { // expose as a commonjs module - module.exports = function( cytoscape ){ - register( cytoscape ); - }; - } - - if (typeof cytoscape !== 'undefined') { // expose to global cytoscape (i.e. window.cytoscape) - register(cytoscape); - } - -})(); -}); - -var top = 'top'; -var bottom = 'bottom'; -var right = 'right'; -var left = 'left'; -var auto = 'auto'; -var basePlacements = [top, bottom, right, left]; -var start = 'start'; -var end = 'end'; -var clippingParents = 'clippingParents'; -var viewport = 'viewport'; -var popper$1 = 'popper'; -var reference = 'reference'; -var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { - return acc.concat([placement + "-" + start, placement + "-" + end]); -}, []); -var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { - return acc.concat([placement, placement + "-" + start, placement + "-" + end]); -}, []); // modifiers that need to read the DOM - -var beforeRead = 'beforeRead'; -var read$1 = 'read'; -var afterRead = 'afterRead'; // pure-logic modifiers - -var beforeMain = 'beforeMain'; -var main = 'main'; -var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) - -var beforeWrite = 'beforeWrite'; -var write$1 = 'write'; -var afterWrite = 'afterWrite'; -var modifierPhases = [beforeRead, read$1, afterRead, beforeMain, main, afterMain, beforeWrite, write$1, afterWrite]; - -function getNodeName(element) { - return element ? (element.nodeName || '').toLowerCase() : null; -} - -function getWindow(node) { - if (node == null) { - return window; - } - - if (node.toString() !== '[object Window]') { - var ownerDocument = node.ownerDocument; - return ownerDocument ? ownerDocument.defaultView || window : window; - } - - return node; -} - -function isElement(node) { - var OwnElement = getWindow(node).Element; - return node instanceof OwnElement || node instanceof Element; -} - -function isHTMLElement(node) { - var OwnElement = getWindow(node).HTMLElement; - return node instanceof OwnElement || node instanceof HTMLElement; -} - -function isShadowRoot(node) { - // IE 11 has no ShadowRoot - if (typeof ShadowRoot === 'undefined') { - return false; - } - - var OwnElement = getWindow(node).ShadowRoot; - return node instanceof OwnElement || node instanceof ShadowRoot; -} - -// and applies them to the HTMLElements such as popper and arrow - -function applyStyles(_ref) { - var state = _ref.state; - Object.keys(state.elements).forEach(function (name) { - var style = state.styles[name] || {}; - var attributes = state.attributes[name] || {}; - var element = state.elements[name]; // arrow is optional + virtual elements - - if (!isHTMLElement(element) || !getNodeName(element)) { - return; - } // Flow doesn't support to extend this property, but it's the most - // effective way to apply styles to an HTMLElement - // $FlowFixMe[cannot-write] - - - Object.assign(element.style, style); - Object.keys(attributes).forEach(function (name) { - var value = attributes[name]; - - if (value === false) { - element.removeAttribute(name); - } else { - element.setAttribute(name, value === true ? '' : value); - } - }); - }); -} - -function effect$2(_ref2) { - var state = _ref2.state; - var initialStyles = { - popper: { - position: state.options.strategy, - left: '0', - top: '0', - margin: '0' - }, - arrow: { - position: 'absolute' - }, - reference: {} - }; - Object.assign(state.elements.popper.style, initialStyles.popper); - state.styles = initialStyles; - - if (state.elements.arrow) { - Object.assign(state.elements.arrow.style, initialStyles.arrow); - } - - return function () { - Object.keys(state.elements).forEach(function (name) { - var element = state.elements[name]; - var attributes = state.attributes[name] || {}; - var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them - - var style = styleProperties.reduce(function (style, property) { - style[property] = ''; - return style; - }, {}); // arrow is optional + virtual elements - - if (!isHTMLElement(element) || !getNodeName(element)) { - return; - } - - Object.assign(element.style, style); - Object.keys(attributes).forEach(function (attribute) { - element.removeAttribute(attribute); - }); - }); - }; -} // eslint-disable-next-line import/no-unused-modules - - -var applyStyles$1 = { - name: 'applyStyles', - enabled: true, - phase: 'write', - fn: applyStyles, - effect: effect$2, - requires: ['computeStyles'] -}; - -function getBasePlacement(placement) { - return placement.split('-')[0]; -} - -var max$1 = Math.max; -var min$1 = Math.min; -var round = Math.round; - -function getBoundingClientRect(element, includeScale) { - if (includeScale === void 0) { - includeScale = false; - } - - var rect = element.getBoundingClientRect(); - var scaleX = 1; - var scaleY = 1; - - if (isHTMLElement(element) && includeScale) { - var offsetHeight = element.offsetHeight; - var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale - // Fallback to 1 in case both values are `0` - - if (offsetWidth > 0) { - scaleX = round(rect.width) / offsetWidth || 1; - } - - if (offsetHeight > 0) { - scaleY = round(rect.height) / offsetHeight || 1; - } - } - - return { - width: rect.width / scaleX, - height: rect.height / scaleY, - top: rect.top / scaleY, - right: rect.right / scaleX, - bottom: rect.bottom / scaleY, - left: rect.left / scaleX, - x: rect.left / scaleX, - y: rect.top / scaleY - }; -} - -// means it doesn't take into account transforms. - -function getLayoutRect(element) { - var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. - // Fixes https://github.com/popperjs/popper-core/issues/1223 - - var width = element.offsetWidth; - var height = element.offsetHeight; - - if (Math.abs(clientRect.width - width) <= 1) { - width = clientRect.width; - } - - if (Math.abs(clientRect.height - height) <= 1) { - height = clientRect.height; - } - - return { - x: element.offsetLeft, - y: element.offsetTop, - width: width, - height: height - }; -} - -function contains(parent, child) { - var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method - - if (parent.contains(child)) { - return true; - } // then fallback to custom implementation with Shadow DOM support - else if (rootNode && isShadowRoot(rootNode)) { - var next = child; - - do { - if (next && parent.isSameNode(next)) { - return true; - } // $FlowFixMe[prop-missing]: need a better way to handle this... - - - next = next.parentNode || next.host; - } while (next); - } // Give up, the result is false - - - return false; -} - -function getComputedStyle$1(element) { - return getWindow(element).getComputedStyle(element); -} - -function isTableElement(element) { - return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; -} - -function getDocumentElement(element) { - // $FlowFixMe[incompatible-return]: assume body is always available - return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] - element.document) || window.document).documentElement; -} - -function getParentNode(element) { - if (getNodeName(element) === 'html') { - return element; - } - - return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle - // $FlowFixMe[incompatible-return] - // $FlowFixMe[prop-missing] - element.assignedSlot || // step into the shadow DOM of the parent of a slotted node - element.parentNode || ( // DOM Element detected - isShadowRoot(element) ? element.host : null) || // ShadowRoot detected - // $FlowFixMe[incompatible-call]: HTMLElement is a Node - getDocumentElement(element) // fallback - - ); -} - -function getTrueOffsetParent(element) { - if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 - getComputedStyle$1(element).position === 'fixed') { - return null; - } - - return element.offsetParent; -} // `.offsetParent` reports `null` for fixed elements, while absolute elements -// return the containing block - - -function getContainingBlock(element) { - var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; - var isIE = navigator.userAgent.indexOf('Trident') !== -1; - - if (isIE && isHTMLElement(element)) { - // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport - var elementCss = getComputedStyle$1(element); - - if (elementCss.position === 'fixed') { - return null; - } - } - - var currentNode = getParentNode(element); - - while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { - var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that - // create a containing block. - // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block - - if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { - return currentNode; - } else { - currentNode = currentNode.parentNode; - } - } - - return null; -} // Gets the closest ancestor positioned element. Handles some edge cases, -// such as table ancestors and cross browser bugs. - - -function getOffsetParent(element) { - var window = getWindow(element); - var offsetParent = getTrueOffsetParent(element); - - while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { - offsetParent = getTrueOffsetParent(offsetParent); - } - - if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) { - return window; - } - - return offsetParent || getContainingBlock(element) || window; -} - -function getMainAxisFromPlacement(placement) { - return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; -} - -function within(min, value, max) { - return max$1(min, min$1(value, max)); -} -function withinMaxClamp(min, value, max) { - var v = within(min, value, max); - return v > max ? max : v; -} - -function getFreshSideObject() { - return { - top: 0, - right: 0, - bottom: 0, - left: 0 - }; -} - -function mergePaddingObject(paddingObject) { - return Object.assign({}, getFreshSideObject(), paddingObject); -} - -function expandToHashMap(value, keys) { - return keys.reduce(function (hashMap, key) { - hashMap[key] = value; - return hashMap; - }, {}); -} - -var toPaddingObject = function toPaddingObject(padding, state) { - padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { - placement: state.placement - })) : padding; - return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); -}; - -function arrow(_ref) { - var _state$modifiersData$; - - var state = _ref.state, - name = _ref.name, - options = _ref.options; - var arrowElement = state.elements.arrow; - var popperOffsets = state.modifiersData.popperOffsets; - var basePlacement = getBasePlacement(state.placement); - var axis = getMainAxisFromPlacement(basePlacement); - var isVertical = [left, right].indexOf(basePlacement) >= 0; - var len = isVertical ? 'height' : 'width'; - - if (!arrowElement || !popperOffsets) { - return; - } - - var paddingObject = toPaddingObject(options.padding, state); - var arrowRect = getLayoutRect(arrowElement); - var minProp = axis === 'y' ? top : left; - var maxProp = axis === 'y' ? bottom : right; - var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; - var startDiff = popperOffsets[axis] - state.rects.reference[axis]; - var arrowOffsetParent = getOffsetParent(arrowElement); - var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; - var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is - // outside of the popper bounds - - var min = paddingObject[minProp]; - var max = clientSize - arrowRect[len] - paddingObject[maxProp]; - var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; - var offset = within(min, center, max); // Prevents breaking syntax highlighting... - - var axisProp = axis; - state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); -} - -function effect$1(_ref2) { - var state = _ref2.state, - options = _ref2.options; - var _options$element = options.element, - arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; - - if (arrowElement == null) { - return; - } // CSS selector - - - if (typeof arrowElement === 'string') { - arrowElement = state.elements.popper.querySelector(arrowElement); - - if (!arrowElement) { - return; - } - } - - if (process.env.NODE_ENV !== "production") { - if (!isHTMLElement(arrowElement)) { - console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); - } - } - - if (!contains(state.elements.popper, arrowElement)) { - if (process.env.NODE_ENV !== "production") { - console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); - } - - return; - } - - state.elements.arrow = arrowElement; -} // eslint-disable-next-line import/no-unused-modules - - -var arrow$1 = { - name: 'arrow', - enabled: true, - phase: 'main', - fn: arrow, - effect: effect$1, - requires: ['popperOffsets'], - requiresIfExists: ['preventOverflow'] -}; - -function getVariation(placement) { - return placement.split('-')[1]; -} - -var unsetSides = { - top: 'auto', - right: 'auto', - bottom: 'auto', - left: 'auto' -}; // Round the offsets to the nearest suitable subpixel based on the DPR. -// Zooming can change the DPR, but it seems to report a value that will -// cleanly divide the values into the appropriate subpixels. - -function roundOffsetsByDPR(_ref) { - var x = _ref.x, - y = _ref.y; - var win = window; - var dpr = win.devicePixelRatio || 1; - return { - x: round(x * dpr) / dpr || 0, - y: round(y * dpr) / dpr || 0 - }; -} - -function mapToStyles(_ref2) { - var _Object$assign2; - - var popper = _ref2.popper, - popperRect = _ref2.popperRect, - placement = _ref2.placement, - variation = _ref2.variation, - offsets = _ref2.offsets, - position = _ref2.position, - gpuAcceleration = _ref2.gpuAcceleration, - adaptive = _ref2.adaptive, - roundOffsets = _ref2.roundOffsets, - isFixed = _ref2.isFixed; - var _offsets$x = offsets.x, - x = _offsets$x === void 0 ? 0 : _offsets$x, - _offsets$y = offsets.y, - y = _offsets$y === void 0 ? 0 : _offsets$y; - - var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ - x: x, - y: y - }) : { - x: x, - y: y - }; - - x = _ref3.x; - y = _ref3.y; - var hasX = offsets.hasOwnProperty('x'); - var hasY = offsets.hasOwnProperty('y'); - var sideX = left; - var sideY = top; - var win = window; - - if (adaptive) { - var offsetParent = getOffsetParent(popper); - var heightProp = 'clientHeight'; - var widthProp = 'clientWidth'; - - if (offsetParent === getWindow(popper)) { - offsetParent = getDocumentElement(popper); - - if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') { - heightProp = 'scrollHeight'; - widthProp = 'scrollWidth'; - } - } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it - - - offsetParent = offsetParent; - - if (placement === top || (placement === left || placement === right) && variation === end) { - sideY = bottom; - var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] - offsetParent[heightProp]; - y -= offsetY - popperRect.height; - y *= gpuAcceleration ? 1 : -1; - } - - if (placement === left || (placement === top || placement === bottom) && variation === end) { - sideX = right; - var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] - offsetParent[widthProp]; - x -= offsetX - popperRect.width; - x *= gpuAcceleration ? 1 : -1; - } - } - - var commonStyles = Object.assign({ - position: position - }, adaptive && unsetSides); - - var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ - x: x, - y: y - }) : { - x: x, - y: y - }; - - x = _ref4.x; - y = _ref4.y; - - if (gpuAcceleration) { - var _Object$assign; - - return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); - } - - return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); -} - -function computeStyles(_ref5) { - var state = _ref5.state, - options = _ref5.options; - var _options$gpuAccelerat = options.gpuAcceleration, - gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, - _options$adaptive = options.adaptive, - adaptive = _options$adaptive === void 0 ? true : _options$adaptive, - _options$roundOffsets = options.roundOffsets, - roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; - - if (process.env.NODE_ENV !== "production") { - var transitionProperty = getComputedStyle$1(state.elements.popper).transitionProperty || ''; - - if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { - return transitionProperty.indexOf(property) >= 0; - })) { - console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); - } - } - - var commonStyles = { - placement: getBasePlacement(state.placement), - variation: getVariation(state.placement), - popper: state.elements.popper, - popperRect: state.rects.popper, - gpuAcceleration: gpuAcceleration, - isFixed: state.options.strategy === 'fixed' - }; - - if (state.modifiersData.popperOffsets != null) { - state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.popperOffsets, - position: state.options.strategy, - adaptive: adaptive, - roundOffsets: roundOffsets - }))); - } - - if (state.modifiersData.arrow != null) { - state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.arrow, - position: 'absolute', - adaptive: false, - roundOffsets: roundOffsets - }))); - } - - state.attributes.popper = Object.assign({}, state.attributes.popper, { - 'data-popper-placement': state.placement - }); -} // eslint-disable-next-line import/no-unused-modules - - -var computeStyles$1 = { - name: 'computeStyles', - enabled: true, - phase: 'beforeWrite', - fn: computeStyles, - data: {} -}; - -var passive = { - passive: true -}; - -function effect(_ref) { - var state = _ref.state, - instance = _ref.instance, - options = _ref.options; - var _options$scroll = options.scroll, - scroll = _options$scroll === void 0 ? true : _options$scroll, - _options$resize = options.resize, - resize = _options$resize === void 0 ? true : _options$resize; - var window = getWindow(state.elements.popper); - var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); - - if (scroll) { - scrollParents.forEach(function (scrollParent) { - scrollParent.addEventListener('scroll', instance.update, passive); - }); - } - - if (resize) { - window.addEventListener('resize', instance.update, passive); - } - - return function () { - if (scroll) { - scrollParents.forEach(function (scrollParent) { - scrollParent.removeEventListener('scroll', instance.update, passive); - }); - } - - if (resize) { - window.removeEventListener('resize', instance.update, passive); - } - }; -} // eslint-disable-next-line import/no-unused-modules - - -var eventListeners = { - name: 'eventListeners', - enabled: true, - phase: 'write', - fn: function fn() {}, - effect: effect, - data: {} -}; - -var hash$1 = { - left: 'right', - right: 'left', - bottom: 'top', - top: 'bottom' -}; -function getOppositePlacement(placement) { - return placement.replace(/left|right|bottom|top/g, function (matched) { - return hash$1[matched]; - }); -} - -var hash = { - start: 'end', - end: 'start' -}; -function getOppositeVariationPlacement(placement) { - return placement.replace(/start|end/g, function (matched) { - return hash[matched]; - }); -} - -function getWindowScroll(node) { - var win = getWindow(node); - var scrollLeft = win.pageXOffset; - var scrollTop = win.pageYOffset; - return { - scrollLeft: scrollLeft, - scrollTop: scrollTop - }; -} - -function getWindowScrollBarX(element) { - // If has a CSS width greater than the viewport, then this will be - // incorrect for RTL. - // Popper 1 is broken in this case and never had a bug report so let's assume - // it's not an issue. I don't think anyone ever specifies width on - // anyway. - // Browsers where the left scrollbar doesn't cause an issue report `0` for - // this (e.g. Edge 2019, IE11, Safari) - return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; -} - -function getViewportRect(element) { - var win = getWindow(element); - var html = getDocumentElement(element); - var visualViewport = win.visualViewport; - var width = html.clientWidth; - var height = html.clientHeight; - var x = 0; - var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper - // can be obscured underneath it. - // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even - // if it isn't open, so if this isn't available, the popper will be detected - // to overflow the bottom of the screen too early. - - if (visualViewport) { - width = visualViewport.width; - height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) - // In Chrome, it returns a value very close to 0 (+/-) but contains rounding - // errors due to floating point numbers, so we need to check precision. - // Safari returns a number <= 0, usually < -1 when pinch-zoomed - // Feature detection fails in mobile emulation mode in Chrome. - // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < - // 0.001 - // Fallback here: "Not Safari" userAgent - - if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - x = visualViewport.offsetLeft; - y = visualViewport.offsetTop; - } - } - - return { - width: width, - height: height, - x: x + getWindowScrollBarX(element), - y: y - }; -} - -// of the `` and `` rect bounds if horizontally scrollable - -function getDocumentRect(element) { - var _element$ownerDocumen; - - var html = getDocumentElement(element); - var winScroll = getWindowScroll(element); - var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; - var width = max$1(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); - var height = max$1(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); - var x = -winScroll.scrollLeft + getWindowScrollBarX(element); - var y = -winScroll.scrollTop; - - if (getComputedStyle$1(body || html).direction === 'rtl') { - x += max$1(html.clientWidth, body ? body.clientWidth : 0) - width; - } - - return { - width: width, - height: height, - x: x, - y: y - }; -} - -function isScrollParent(element) { - // Firefox wants us to check `-x` and `-y` variations as well - var _getComputedStyle = getComputedStyle$1(element), - overflow = _getComputedStyle.overflow, - overflowX = _getComputedStyle.overflowX, - overflowY = _getComputedStyle.overflowY; - - return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); -} - -function getScrollParent(node) { - if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { - // $FlowFixMe[incompatible-return]: assume body is always available - return node.ownerDocument.body; - } - - if (isHTMLElement(node) && isScrollParent(node)) { - return node; - } - - return getScrollParent(getParentNode(node)); -} - -/* -given a DOM element, return the list of all scroll parents, up the list of ancesors -until we get to the top window object. This list is what we attach scroll listeners -to, because if any of these parent elements scroll, we'll need to re-calculate the -reference element's position. -*/ - -function listScrollParents(element, list) { - var _element$ownerDocumen; - - if (list === void 0) { - list = []; - } - - var scrollParent = getScrollParent(element); - var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); - var win = getWindow(scrollParent); - var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; - var updatedList = list.concat(target); - return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here - updatedList.concat(listScrollParents(getParentNode(target))); -} - -function rectToClientRect(rect) { - return Object.assign({}, rect, { - left: rect.x, - top: rect.y, - right: rect.x + rect.width, - bottom: rect.y + rect.height - }); -} - -function getInnerBoundingClientRect(element) { - var rect = getBoundingClientRect(element); - rect.top = rect.top + element.clientTop; - rect.left = rect.left + element.clientLeft; - rect.bottom = rect.top + element.clientHeight; - rect.right = rect.left + element.clientWidth; - rect.width = element.clientWidth; - rect.height = element.clientHeight; - rect.x = rect.left; - rect.y = rect.top; - return rect; -} - -function getClientRectFromMixedType(element, clippingParent) { - return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); -} // A "clipping parent" is an overflowable container with the characteristic of -// clipping (or hiding) overflowing elements with a position different from -// `initial` - - -function getClippingParents(element) { - var clippingParents = listScrollParents(getParentNode(element)); - var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0; - var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; - - if (!isElement(clipperElement)) { - return []; - } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 - - - return clippingParents.filter(function (clippingParent) { - return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; - }); -} // Gets the maximum area that the element is visible in due to any number of -// clipping parents - - -function getClippingRect(element, boundary, rootBoundary) { - var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); - var clippingParents = [].concat(mainClippingParents, [rootBoundary]); - var firstClippingParent = clippingParents[0]; - var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { - var rect = getClientRectFromMixedType(element, clippingParent); - accRect.top = max$1(rect.top, accRect.top); - accRect.right = min$1(rect.right, accRect.right); - accRect.bottom = min$1(rect.bottom, accRect.bottom); - accRect.left = max$1(rect.left, accRect.left); - return accRect; - }, getClientRectFromMixedType(element, firstClippingParent)); - clippingRect.width = clippingRect.right - clippingRect.left; - clippingRect.height = clippingRect.bottom - clippingRect.top; - clippingRect.x = clippingRect.left; - clippingRect.y = clippingRect.top; - return clippingRect; -} - -function computeOffsets(_ref) { - var reference = _ref.reference, - element = _ref.element, - placement = _ref.placement; - var basePlacement = placement ? getBasePlacement(placement) : null; - var variation = placement ? getVariation(placement) : null; - var commonX = reference.x + reference.width / 2 - element.width / 2; - var commonY = reference.y + reference.height / 2 - element.height / 2; - var offsets; - - switch (basePlacement) { - case top: - offsets = { - x: commonX, - y: reference.y - element.height - }; - break; - - case bottom: - offsets = { - x: commonX, - y: reference.y + reference.height - }; - break; - - case right: - offsets = { - x: reference.x + reference.width, - y: commonY - }; - break; - - case left: - offsets = { - x: reference.x - element.width, - y: commonY - }; - break; - - default: - offsets = { - x: reference.x, - y: reference.y - }; - } - - var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; - - if (mainAxis != null) { - var len = mainAxis === 'y' ? 'height' : 'width'; - - switch (variation) { - case start: - offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); - break; - - case end: - offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); - break; - } - } - - return offsets; -} - -function detectOverflow(state, options) { - if (options === void 0) { - options = {}; - } - - var _options = options, - _options$placement = _options.placement, - placement = _options$placement === void 0 ? state.placement : _options$placement, - _options$boundary = _options.boundary, - boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, - _options$rootBoundary = _options.rootBoundary, - rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, - _options$elementConte = _options.elementContext, - elementContext = _options$elementConte === void 0 ? popper$1 : _options$elementConte, - _options$altBoundary = _options.altBoundary, - altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, - _options$padding = _options.padding, - padding = _options$padding === void 0 ? 0 : _options$padding; - var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); - var altContext = elementContext === popper$1 ? reference : popper$1; - var popperRect = state.rects.popper; - var element = state.elements[altBoundary ? altContext : elementContext]; - var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); - var referenceClientRect = getBoundingClientRect(state.elements.reference); - var popperOffsets = computeOffsets({ - reference: referenceClientRect, - element: popperRect, - strategy: 'absolute', - placement: placement - }); - var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); - var elementClientRect = elementContext === popper$1 ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect - // 0 or negative = within the clipping rect - - var overflowOffsets = { - top: clippingClientRect.top - elementClientRect.top + paddingObject.top, - bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, - left: clippingClientRect.left - elementClientRect.left + paddingObject.left, - right: elementClientRect.right - clippingClientRect.right + paddingObject.right - }; - var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element - - if (elementContext === popper$1 && offsetData) { - var offset = offsetData[placement]; - Object.keys(overflowOffsets).forEach(function (key) { - var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; - var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; - overflowOffsets[key] += offset[axis] * multiply; - }); - } - - return overflowOffsets; -} - -function computeAutoPlacement(state, options) { - if (options === void 0) { - options = {}; - } - - var _options = options, - placement = _options.placement, - boundary = _options.boundary, - rootBoundary = _options.rootBoundary, - padding = _options.padding, - flipVariations = _options.flipVariations, - _options$allowedAutoP = _options.allowedAutoPlacements, - allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; - var variation = getVariation(placement); - var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { - return getVariation(placement) === variation; - }) : basePlacements; - var allowedPlacements = placements$1.filter(function (placement) { - return allowedAutoPlacements.indexOf(placement) >= 0; - }); - - if (allowedPlacements.length === 0) { - allowedPlacements = placements$1; - - if (process.env.NODE_ENV !== "production") { - console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); - } - } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... - - - var overflows = allowedPlacements.reduce(function (acc, placement) { - acc[placement] = detectOverflow(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding - })[getBasePlacement(placement)]; - return acc; - }, {}); - return Object.keys(overflows).sort(function (a, b) { - return overflows[a] - overflows[b]; - }); -} - -function getExpandedFallbackPlacements(placement) { - if (getBasePlacement(placement) === auto) { - return []; - } - - var oppositePlacement = getOppositePlacement(placement); - return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; -} - -function flip(_ref) { - var state = _ref.state, - options = _ref.options, - name = _ref.name; - - if (state.modifiersData[name]._skip) { - return; - } - - var _options$mainAxis = options.mainAxis, - checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, - _options$altAxis = options.altAxis, - checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, - specifiedFallbackPlacements = options.fallbackPlacements, - padding = options.padding, - boundary = options.boundary, - rootBoundary = options.rootBoundary, - altBoundary = options.altBoundary, - _options$flipVariatio = options.flipVariations, - flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, - allowedAutoPlacements = options.allowedAutoPlacements; - var preferredPlacement = state.options.placement; - var basePlacement = getBasePlacement(preferredPlacement); - var isBasePlacement = basePlacement === preferredPlacement; - var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); - var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { - return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding, - flipVariations: flipVariations, - allowedAutoPlacements: allowedAutoPlacements - }) : placement); - }, []); - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var checksMap = new Map(); - var makeFallbackChecks = true; - var firstFittingPlacement = placements[0]; - - for (var i = 0; i < placements.length; i++) { - var placement = placements[i]; - - var _basePlacement = getBasePlacement(placement); - - var isStartVariation = getVariation(placement) === start; - var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; - var len = isVertical ? 'width' : 'height'; - var overflow = detectOverflow(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - altBoundary: altBoundary, - padding: padding - }); - var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; - - if (referenceRect[len] > popperRect[len]) { - mainVariationSide = getOppositePlacement(mainVariationSide); - } - - var altVariationSide = getOppositePlacement(mainVariationSide); - var checks = []; - - if (checkMainAxis) { - checks.push(overflow[_basePlacement] <= 0); - } - - if (checkAltAxis) { - checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); - } - - if (checks.every(function (check) { - return check; - })) { - firstFittingPlacement = placement; - makeFallbackChecks = false; - break; - } - - checksMap.set(placement, checks); - } - - if (makeFallbackChecks) { - // `2` may be desired in some cases – research later - var numberOfChecks = flipVariations ? 3 : 1; - - var _loop = function _loop(_i) { - var fittingPlacement = placements.find(function (placement) { - var checks = checksMap.get(placement); - - if (checks) { - return checks.slice(0, _i).every(function (check) { - return check; - }); - } - }); - - if (fittingPlacement) { - firstFittingPlacement = fittingPlacement; - return "break"; - } - }; - - for (var _i = numberOfChecks; _i > 0; _i--) { - var _ret = _loop(_i); - - if (_ret === "break") break; - } - } - - if (state.placement !== firstFittingPlacement) { - state.modifiersData[name]._skip = true; - state.placement = firstFittingPlacement; - state.reset = true; - } -} // eslint-disable-next-line import/no-unused-modules - - -var flip$1 = { - name: 'flip', - enabled: true, - phase: 'main', - fn: flip, - requiresIfExists: ['offset'], - data: { - _skip: false - } -}; - -function getSideOffsets(overflow, rect, preventedOffsets) { - if (preventedOffsets === void 0) { - preventedOffsets = { - x: 0, - y: 0 - }; - } - - return { - top: overflow.top - rect.height - preventedOffsets.y, - right: overflow.right - rect.width + preventedOffsets.x, - bottom: overflow.bottom - rect.height + preventedOffsets.y, - left: overflow.left - rect.width - preventedOffsets.x - }; -} - -function isAnySideFullyClipped(overflow) { - return [top, right, bottom, left].some(function (side) { - return overflow[side] >= 0; - }); -} - -function hide(_ref) { - var state = _ref.state, - name = _ref.name; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var preventedOffsets = state.modifiersData.preventOverflow; - var referenceOverflow = detectOverflow(state, { - elementContext: 'reference' - }); - var popperAltOverflow = detectOverflow(state, { - altBoundary: true - }); - var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); - var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); - var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); - var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); - state.modifiersData[name] = { - referenceClippingOffsets: referenceClippingOffsets, - popperEscapeOffsets: popperEscapeOffsets, - isReferenceHidden: isReferenceHidden, - hasPopperEscaped: hasPopperEscaped - }; - state.attributes.popper = Object.assign({}, state.attributes.popper, { - 'data-popper-reference-hidden': isReferenceHidden, - 'data-popper-escaped': hasPopperEscaped - }); -} // eslint-disable-next-line import/no-unused-modules - - -var hide$1 = { - name: 'hide', - enabled: true, - phase: 'main', - requiresIfExists: ['preventOverflow'], - fn: hide -}; - -function distanceAndSkiddingToXY(placement, rects, offset) { - var basePlacement = getBasePlacement(placement); - var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; - - var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { - placement: placement - })) : offset, - skidding = _ref[0], - distance = _ref[1]; - - skidding = skidding || 0; - distance = (distance || 0) * invertDistance; - return [left, right].indexOf(basePlacement) >= 0 ? { - x: distance, - y: skidding - } : { - x: skidding, - y: distance - }; -} - -function offset(_ref2) { - var state = _ref2.state, - options = _ref2.options, - name = _ref2.name; - var _options$offset = options.offset, - offset = _options$offset === void 0 ? [0, 0] : _options$offset; - var data = placements.reduce(function (acc, placement) { - acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); - return acc; - }, {}); - var _data$state$placement = data[state.placement], - x = _data$state$placement.x, - y = _data$state$placement.y; - - if (state.modifiersData.popperOffsets != null) { - state.modifiersData.popperOffsets.x += x; - state.modifiersData.popperOffsets.y += y; - } - - state.modifiersData[name] = data; -} // eslint-disable-next-line import/no-unused-modules - - -var offset$1 = { - name: 'offset', - enabled: true, - phase: 'main', - requires: ['popperOffsets'], - fn: offset -}; - -function popperOffsets(_ref) { - var state = _ref.state, - name = _ref.name; - // Offsets are the actual position the popper needs to have to be - // properly positioned near its reference element - // This is the most basic placement, and will be adjusted by - // the modifiers in the next step - state.modifiersData[name] = computeOffsets({ - reference: state.rects.reference, - element: state.rects.popper, - strategy: 'absolute', - placement: state.placement - }); -} // eslint-disable-next-line import/no-unused-modules - - -var popperOffsets$1 = { - name: 'popperOffsets', - enabled: true, - phase: 'read', - fn: popperOffsets, - data: {} -}; - -function getAltAxis(axis) { - return axis === 'x' ? 'y' : 'x'; -} - -function preventOverflow(_ref) { - var state = _ref.state, - options = _ref.options, - name = _ref.name; - var _options$mainAxis = options.mainAxis, - checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, - _options$altAxis = options.altAxis, - checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, - boundary = options.boundary, - rootBoundary = options.rootBoundary, - altBoundary = options.altBoundary, - padding = options.padding, - _options$tether = options.tether, - tether = _options$tether === void 0 ? true : _options$tether, - _options$tetherOffset = options.tetherOffset, - tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; - var overflow = detectOverflow(state, { - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding, - altBoundary: altBoundary - }); - var basePlacement = getBasePlacement(state.placement); - var variation = getVariation(state.placement); - var isBasePlacement = !variation; - var mainAxis = getMainAxisFromPlacement(basePlacement); - var altAxis = getAltAxis(mainAxis); - var popperOffsets = state.modifiersData.popperOffsets; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { - placement: state.placement - })) : tetherOffset; - var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { - mainAxis: tetherOffsetValue, - altAxis: tetherOffsetValue - } : Object.assign({ - mainAxis: 0, - altAxis: 0 - }, tetherOffsetValue); - var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; - var data = { - x: 0, - y: 0 - }; - - if (!popperOffsets) { - return; - } - - if (checkMainAxis) { - var _offsetModifierState$; - - var mainSide = mainAxis === 'y' ? top : left; - var altSide = mainAxis === 'y' ? bottom : right; - var len = mainAxis === 'y' ? 'height' : 'width'; - var offset = popperOffsets[mainAxis]; - var min = offset + overflow[mainSide]; - var max = offset - overflow[altSide]; - var additive = tether ? -popperRect[len] / 2 : 0; - var minLen = variation === start ? referenceRect[len] : popperRect[len]; - var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go - // outside the reference bounds - - var arrowElement = state.elements.arrow; - var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { - width: 0, - height: 0 - }; - var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); - var arrowPaddingMin = arrowPaddingObject[mainSide]; - var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want - // to include its full size in the calculation. If the reference is small - // and near the edge of a boundary, the popper can overflow even if the - // reference is not overflowing as well (e.g. virtual elements with no - // width or height) - - var arrowLen = within(0, referenceRect[len], arrowRect[len]); - var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; - var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; - var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); - var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; - var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; - var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; - var tetherMax = offset + maxOffset - offsetModifierValue; - var preventedOffset = within(tether ? min$1(min, tetherMin) : min, offset, tether ? max$1(max, tetherMax) : max); - popperOffsets[mainAxis] = preventedOffset; - data[mainAxis] = preventedOffset - offset; - } - - if (checkAltAxis) { - var _offsetModifierState$2; - - var _mainSide = mainAxis === 'x' ? top : left; - - var _altSide = mainAxis === 'x' ? bottom : right; - - var _offset = popperOffsets[altAxis]; - - var _len = altAxis === 'y' ? 'height' : 'width'; - - var _min = _offset + overflow[_mainSide]; - - var _max = _offset - overflow[_altSide]; - - var isOriginSide = [top, left].indexOf(basePlacement) !== -1; - - var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; - - var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; - - var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; - - var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); - - popperOffsets[altAxis] = _preventedOffset; - data[altAxis] = _preventedOffset - _offset; - } - - state.modifiersData[name] = data; -} // eslint-disable-next-line import/no-unused-modules - - -var preventOverflow$1 = { - name: 'preventOverflow', - enabled: true, - phase: 'main', - fn: preventOverflow, - requiresIfExists: ['offset'] -}; - -function getHTMLElementScroll(element) { - return { - scrollLeft: element.scrollLeft, - scrollTop: element.scrollTop - }; -} - -function getNodeScroll(node) { - if (node === getWindow(node) || !isHTMLElement(node)) { - return getWindowScroll(node); - } else { - return getHTMLElementScroll(node); - } -} - -function isElementScaled(element) { - var rect = element.getBoundingClientRect(); - var scaleX = round(rect.width) / element.offsetWidth || 1; - var scaleY = round(rect.height) / element.offsetHeight || 1; - return scaleX !== 1 || scaleY !== 1; -} // Returns the composite rect of an element relative to its offsetParent. -// Composite means it takes into account transforms as well as layout. - - -function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { - if (isFixed === void 0) { - isFixed = false; - } - - var isOffsetParentAnElement = isHTMLElement(offsetParent); - var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); - var documentElement = getDocumentElement(offsetParent); - var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled); - var scroll = { - scrollLeft: 0, - scrollTop: 0 - }; - var offsets = { - x: 0, - y: 0 - }; - - if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { - if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 - isScrollParent(documentElement)) { - scroll = getNodeScroll(offsetParent); - } - - if (isHTMLElement(offsetParent)) { - offsets = getBoundingClientRect(offsetParent, true); - offsets.x += offsetParent.clientLeft; - offsets.y += offsetParent.clientTop; - } else if (documentElement) { - offsets.x = getWindowScrollBarX(documentElement); - } - } - - return { - x: rect.left + scroll.scrollLeft - offsets.x, - y: rect.top + scroll.scrollTop - offsets.y, - width: rect.width, - height: rect.height - }; -} - -function order$1(modifiers) { - var map = new Map(); - var visited = new Set(); - var result = []; - modifiers.forEach(function (modifier) { - map.set(modifier.name, modifier); - }); // On visiting object, check for its dependencies and visit them recursively - - function sort(modifier) { - visited.add(modifier.name); - var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); - requires.forEach(function (dep) { - if (!visited.has(dep)) { - var depModifier = map.get(dep); - - if (depModifier) { - sort(depModifier); - } - } - }); - result.push(modifier); - } - - modifiers.forEach(function (modifier) { - if (!visited.has(modifier.name)) { - // check for visited object - sort(modifier); - } - }); - return result; -} - -function orderModifiers(modifiers) { - // order based on dependencies - var orderedModifiers = order$1(modifiers); // order based on phase - - return modifierPhases.reduce(function (acc, phase) { - return acc.concat(orderedModifiers.filter(function (modifier) { - return modifier.phase === phase; - })); - }, []); -} - -function debounce(fn) { - var pending; - return function () { - if (!pending) { - pending = new Promise(function (resolve) { - Promise.resolve().then(function () { - pending = undefined; - resolve(fn()); - }); - }); - } - - return pending; - }; -} - -function format(str) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - return [].concat(args).reduce(function (p, c) { - return p.replace(/%s/, c); - }, str); -} - -var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; -var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; -var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; -function validateModifiers(modifiers) { - modifiers.forEach(function (modifier) { - [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)` - .filter(function (value, index, self) { - return self.indexOf(value) === index; - }).forEach(function (key) { - switch (key) { - case 'name': - if (typeof modifier.name !== 'string') { - console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); - } - - break; - - case 'enabled': - if (typeof modifier.enabled !== 'boolean') { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); - } - - break; - - case 'phase': - if (modifierPhases.indexOf(modifier.phase) < 0) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); - } - - break; - - case 'fn': - if (typeof modifier.fn !== 'function') { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); - } - - break; - - case 'effect': - if (modifier.effect != null && typeof modifier.effect !== 'function') { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); - } - - break; - - case 'requires': - if (modifier.requires != null && !Array.isArray(modifier.requires)) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); - } - - break; - - case 'requiresIfExists': - if (!Array.isArray(modifier.requiresIfExists)) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); - } - - break; - - case 'options': - case 'data': - break; - - default: - console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { - return "\"" + s + "\""; - }).join(', ') + "; but \"" + key + "\" was provided."); - } - - modifier.requires && modifier.requires.forEach(function (requirement) { - if (modifiers.find(function (mod) { - return mod.name === requirement; - }) == null) { - console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); - } - }); - }); - }); -} - -function uniqueBy(arr, fn) { - var identifiers = new Set(); - return arr.filter(function (item) { - var identifier = fn(item); - - if (!identifiers.has(identifier)) { - identifiers.add(identifier); - return true; - } - }); -} - -function mergeByName(modifiers) { - var merged = modifiers.reduce(function (merged, current) { - var existing = merged[current.name]; - merged[current.name] = existing ? Object.assign({}, existing, current, { - options: Object.assign({}, existing.options, current.options), - data: Object.assign({}, existing.data, current.data) - }) : current; - return merged; - }, {}); // IE11 does not support Object.values - - return Object.keys(merged).map(function (key) { - return merged[key]; - }); -} - -var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; -var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; -var DEFAULT_OPTIONS = { - placement: 'bottom', - modifiers: [], - strategy: 'absolute' -}; - -function areValidElements() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return !args.some(function (element) { - return !(element && typeof element.getBoundingClientRect === 'function'); - }); -} - -function popperGenerator(generatorOptions) { - if (generatorOptions === void 0) { - generatorOptions = {}; - } - - var _generatorOptions = generatorOptions, - _generatorOptions$def = _generatorOptions.defaultModifiers, - defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, - _generatorOptions$def2 = _generatorOptions.defaultOptions, - defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; - return function createPopper(reference, popper, options) { - if (options === void 0) { - options = defaultOptions; - } - - var state = { - placement: 'bottom', - orderedModifiers: [], - options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), - modifiersData: {}, - elements: { - reference: reference, - popper: popper - }, - attributes: {}, - styles: {} - }; - var effectCleanupFns = []; - var isDestroyed = false; - var instance = { - state: state, - setOptions: function setOptions(setOptionsAction) { - var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; - cleanupModifierEffects(); - state.options = Object.assign({}, defaultOptions, state.options, options); - state.scrollParents = { - reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], - popper: listScrollParents(popper) - }; // Orders the modifiers based on their dependencies and `phase` - // properties - - var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers - - state.orderedModifiers = orderedModifiers.filter(function (m) { - return m.enabled; - }); // Validate the provided modifiers so that the consumer will get warned - // if one of the modifiers is invalid for any reason - - if (process.env.NODE_ENV !== "production") { - var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) { - var name = _ref.name; - return name; - }); - validateModifiers(modifiers); - - if (getBasePlacement(state.options.placement) === auto) { - var flipModifier = state.orderedModifiers.find(function (_ref2) { - var name = _ref2.name; - return name === 'flip'; - }); - - if (!flipModifier) { - console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); - } - } - - var _getComputedStyle = getComputedStyle$1(popper), - marginTop = _getComputedStyle.marginTop, - marginRight = _getComputedStyle.marginRight, - marginBottom = _getComputedStyle.marginBottom, - marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can - // cause bugs with positioning, so we'll warn the consumer - - - if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { - return parseFloat(margin); - })) { - console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); - } - } - - runModifierEffects(); - return instance.update(); - }, - // Sync update – it will always be executed, even if not necessary. This - // is useful for low frequency updates where sync behavior simplifies the - // logic. - // For high frequency updates (e.g. `resize` and `scroll` events), always - // prefer the async Popper#update method - forceUpdate: function forceUpdate() { - if (isDestroyed) { - return; - } - - var _state$elements = state.elements, - reference = _state$elements.reference, - popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements - // anymore - - if (!areValidElements(reference, popper)) { - if (process.env.NODE_ENV !== "production") { - console.error(INVALID_ELEMENT_ERROR); - } - - return; - } // Store the reference and popper rects to be read by modifiers - - - state.rects = { - reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), - popper: getLayoutRect(popper) - }; // Modifiers have the ability to reset the current update cycle. The - // most common use case for this is the `flip` modifier changing the - // placement, which then needs to re-run all the modifiers, because the - // logic was previously ran for the previous placement and is therefore - // stale/incorrect - - state.reset = false; - state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier - // is filled with the initial data specified by the modifier. This means - // it doesn't persist and is fresh on each update. - // To ensure persistent data, use `${name}#persistent` - - state.orderedModifiers.forEach(function (modifier) { - return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); - }); - var __debug_loops__ = 0; - - for (var index = 0; index < state.orderedModifiers.length; index++) { - if (process.env.NODE_ENV !== "production") { - __debug_loops__ += 1; - - if (__debug_loops__ > 100) { - console.error(INFINITE_LOOP_ERROR); - break; - } - } - - if (state.reset === true) { - state.reset = false; - index = -1; - continue; - } - - var _state$orderedModifie = state.orderedModifiers[index], - fn = _state$orderedModifie.fn, - _state$orderedModifie2 = _state$orderedModifie.options, - _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, - name = _state$orderedModifie.name; - - if (typeof fn === 'function') { - state = fn({ - state: state, - options: _options, - name: name, - instance: instance - }) || state; - } - } - }, - // Async and optimistically optimized update – it will not be executed if - // not necessary (debounced to run at most once-per-tick) - update: debounce(function () { - return new Promise(function (resolve) { - instance.forceUpdate(); - resolve(state); - }); - }), - destroy: function destroy() { - cleanupModifierEffects(); - isDestroyed = true; - } - }; - - if (!areValidElements(reference, popper)) { - if (process.env.NODE_ENV !== "production") { - console.error(INVALID_ELEMENT_ERROR); - } - - return instance; - } - - instance.setOptions(options).then(function (state) { - if (!isDestroyed && options.onFirstUpdate) { - options.onFirstUpdate(state); - } - }); // Modifiers have the ability to execute arbitrary code before the first - // update cycle runs. They will be executed in the same order as the update - // cycle. This is useful when a modifier adds some persistent data that - // other modifiers need to use, but the modifier is run after the dependent - // one. - - function runModifierEffects() { - state.orderedModifiers.forEach(function (_ref3) { - var name = _ref3.name, - _ref3$options = _ref3.options, - options = _ref3$options === void 0 ? {} : _ref3$options, - effect = _ref3.effect; - - if (typeof effect === 'function') { - var cleanupFn = effect({ - state: state, - name: name, - instance: instance, - options: options - }); - - var noopFn = function noopFn() {}; - - effectCleanupFns.push(cleanupFn || noopFn); - } - }); - } - - function cleanupModifierEffects() { - effectCleanupFns.forEach(function (fn) { - return fn(); - }); - effectCleanupFns = []; - } - - return instance; - }; -} -var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules - -var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; -var createPopper$1 = /*#__PURE__*/popperGenerator({ - defaultModifiers: defaultModifiers$1 -}); // eslint-disable-next-line import/no-unused-modules - -var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; -var createPopper = /*#__PURE__*/popperGenerator({ - defaultModifiers: defaultModifiers -}); // eslint-disable-next-line import/no-unused-modules - -var lib$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - popperGenerator: popperGenerator, - detectOverflow: detectOverflow, - createPopperBase: createPopper$2, - createPopper: createPopper, - createPopperLite: createPopper$1, - top: top, - bottom: bottom, - right: right, - left: left, - auto: auto, - basePlacements: basePlacements, - start: start, - end: end, - clippingParents: clippingParents, - viewport: viewport, - popper: popper$1, - reference: reference, - variationPlacements: variationPlacements, - placements: placements, - beforeRead: beforeRead, - read: read$1, - afterRead: afterRead, - beforeMain: beforeMain, - main: main, - afterMain: afterMain, - beforeWrite: beforeWrite, - write: write$1, - afterWrite: afterWrite, - modifierPhases: modifierPhases, - applyStyles: applyStyles$1, - arrow: arrow$1, - computeStyles: computeStyles$1, - eventListeners: eventListeners, - flip: flip$1, - hide: hide$1, - offset: offset$1, - popperOffsets: popperOffsets$1, - preventOverflow: preventOverflow$1 -}); - -var require$$0 = /*@__PURE__*/getAugmentedNamespace(lib$1); - -var cytoscapePopper = createCommonjsModule(function (module, exports) { -(function webpackUniversalModuleDefinition(root, factory) { - module.exports = factory(require$$0); -})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_8__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 7); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - -// Simple, internal Object.assign() polyfill for options objects etc. - -module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { - for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - srcs[_key - 1] = arguments[_key]; - } - - srcs.forEach(function (src) { - if (src !== null && src !== undefined) { - Object.keys(src).forEach(function (k) { - return tgt[k] = src[k]; - }); - } - }); - - return tgt; -}; - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - -var _require = __webpack_require__(5), - getBoundingBox = _require.getBoundingBox; - -// Create a popper virtual element (aka popper v1 reference object) -// https://popper.js.org/docs/v2/virtual-elements/ - - -function getRef(target, opts) { - - //Define popper reference object and cy reference object - var refObject = { - getBoundingClientRect: function getBoundingClientRect() { - return getBoundingBox(target, opts); - } - }; - - return refObject; -} - -module.exports = { getRef: getRef }; - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - -var assign = __webpack_require__(0); - -var _require = __webpack_require__(1), - getRef = _require.getRef; - -var _require2 = __webpack_require__(6), - getContent = _require2.getContent; - -var popperDefaults = {}; - -var _require3 = __webpack_require__(8), - createPopper = _require3.createPopper; - -// Create a new popper object for a core or element target - - -function getPopper(target, opts) { - var refObject = getRef(target, opts); - var content = getContent(target, opts.content); - var popperOpts = assign({}, popperDefaults, opts.popper); - - return createPopper(refObject, content, popperOpts); -} - -module.exports = { getPopper: getPopper }; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - - -var assign = __webpack_require__(0); - -var _require = __webpack_require__(2), - getPopper = _require.getPopper; - -var _require2 = __webpack_require__(1), - getRef = _require2.getRef; - -function popper(opts) { - checkForWarning(this); - - return getPopper(this[0], createOptionsObject(this[0], opts)); -} - -function popperRef(opts) { - checkForWarning(this); - - return getRef(this[0], createOptionsObject(this[0], opts)); -} - -function createOptionsObject(target, opts) { - var renderedDimensions = function renderedDimensions(el) { - return el.isNode() ? { w: el.renderedWidth(), h: el.renderedHeight() } : { w: 3, h: 3 }; - }; - var renderedPosition = function renderedPosition(el) { - return el.isNode() ? getRenderedCenter(el, renderedDimensions) : getRenderedMidpoint(el); - }; - var popper = {}; - var cy = target.cy(); - - var defaults = { renderedDimensions: renderedDimensions, renderedPosition: renderedPosition, popper: popper, cy: cy }; - - return assign({}, defaults, opts); -} - -//Get the rendered center -function getRenderedCenter(target, renderedDimensions) { - var pos = target.renderedPosition(); - var dimensions = renderedDimensions(target); - var offsetX = dimensions.w / 2; - var offsetY = dimensions.h / 2; - - return { - x: pos.x - offsetX, - y: pos.y - offsetY - }; -} - -//Get the rendered position of the midpoint -function getRenderedMidpoint(target) { - var p = target.midpoint(); - var pan = target.cy().pan(); - var zoom = target.cy().zoom(); - - return { - x: p.x * zoom + pan.x, - y: p.y * zoom + pan.y - }; -} - -//Warn user about misuse of the plugin -function checkForWarning(elements) { - /* eslint-disable no-console */ - - //Popper.js Should only be used on 1 element - if (elements.length > 1) { - console.warn("Popper.js Extension should only be used on one element."); - console.warn("Ignoring all subsequent elements"); - } - - /* eslint-enable */ -} - -module.exports = { popper: popper, popperRef: popperRef }; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - - -var assign = __webpack_require__(0); - -var _require = __webpack_require__(2), - getPopper = _require.getPopper; - -var _require2 = __webpack_require__(1), - getRef = _require2.getRef; - -function popper(opts) { - return getPopper(this, createOptionsObject(this, opts)); -} - -function popperRef(opts) { - return getRef(this, createOptionsObject(this, opts)); -} - -//Create a options object with required default values -function createOptionsObject(target, opts) { - var defaults = { - boundingBox: { - top: 0, - left: 0, - right: 0, - bottom: 0, - w: 3, - h: 3 - }, - renderedDimensions: function renderedDimensions() { - return { w: 3, h: 3 }; - }, - renderedPosition: function renderedPosition() { - return { x: 0, y: 0 }; - }, - popper: {}, - cy: target - }; - - return assign({}, defaults, opts); -} - -module.exports = { popper: popper, popperRef: popperRef }; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - -function getBoundingBox(target, opts) { - var renderedPosition = opts.renderedPosition, - cy = opts.cy, - renderedDimensions = opts.renderedDimensions; - - var offset = cy.container().getBoundingClientRect(); - var dims = renderedDimensions(target); - var pos = renderedPosition(target); - - return { - top: pos.y + offset.top, - left: pos.x + offset.left, - right: pos.x + dims.w + offset.left, - bottom: pos.y + dims.h + offset.top, - width: dims.w, - height: dims.h - }; -} - -module.exports = { getBoundingBox: getBoundingBox }; - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - - -function getContent(target, content) { - var contentObject = null; - - if (typeof content === "function") { - //Execute function if user opted for a dyanamic target - contentObject = content(target); - } else if (content instanceof HTMLElement) { - //Target option is an HTML element - return content; - } else { - throw new Error("Can not create popper from 'target' with unknown type"); - } - - // Check validity of parsed target - if (contentObject === null) { - throw new Error("No 'target' specified to create popper"); - } else { - return contentObject; - } -} - -module.exports = { getContent: getContent }; - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - - -/* global cytoscape */ - -var coreImpl = __webpack_require__(4); -var collectionImpl = __webpack_require__(3); - -// registers the extension on a cytoscape lib ref -var register = function register(cytoscape) { - if (!cytoscape) { - return; - } // can't register if cytoscape unspecified - - // register with cytoscape.js - cytoscape('core', 'popper', coreImpl.popper); //Cytoscape Core - cytoscape('collection', 'popper', collectionImpl.popper); //Cytoscape Collections - cytoscape('core', 'popperRef', coreImpl.popperRef); //Cytoscape Core for References - cytoscape('collection', 'popperRef', collectionImpl.popperRef); //Cytoscape Collections for References -}; - -if (typeof cytoscape !== 'undefined') { - // expose to global cytoscape (i.e. window.cytoscape) - register(cytoscape); -} - -module.exports = register; - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE_8__; - -/***/ }) -/******/ ]); -}); -}); - -var popper = /*@__PURE__*/getDefaultExportFromCjs(cytoscapePopper); - -var PowerEdge = (function () { - function PowerEdge(source, target, type) { - this.source = source; - this.target = target; - this.type = type; - } - return PowerEdge; -}()); -var PowerEdge_1 = PowerEdge; -var Configuration = (function () { - function Configuration(n, edges, linkAccessor, rootGroup) { - var _this = this; - this.linkAccessor = linkAccessor; - this.modules = new Array(n); - this.roots = []; - if (rootGroup) { - this.initModulesFromGroup(rootGroup); - } - else { - this.roots.push(new ModuleSet()); - for (var i = 0; i < n; ++i) - this.roots[0].add(this.modules[i] = new Module(i)); - } - this.R = edges.length; - edges.forEach(function (e) { - var s = _this.modules[linkAccessor.getSourceIndex(e)], t = _this.modules[linkAccessor.getTargetIndex(e)], type = linkAccessor.getType(e); - s.outgoing.add(type, t); - t.incoming.add(type, s); - }); - } - Configuration.prototype.initModulesFromGroup = function (group) { - var moduleSet = new ModuleSet(); - this.roots.push(moduleSet); - for (var i = 0; i < group.leaves.length; ++i) { - var node = group.leaves[i]; - var module = new Module(node.id); - this.modules[node.id] = module; - moduleSet.add(module); - } - if (group.groups) { - for (var j = 0; j < group.groups.length; ++j) { - var child = group.groups[j]; - var definition = {}; - for (var prop in child) - if (prop !== "leaves" && prop !== "groups" && child.hasOwnProperty(prop)) - definition[prop] = child[prop]; - moduleSet.add(new Module(-1 - j, new LinkSets(), new LinkSets(), this.initModulesFromGroup(child), definition)); - } - } - return moduleSet; - }; - Configuration.prototype.merge = function (a, b, k) { - if (k === void 0) { k = 0; } - var inInt = a.incoming.intersection(b.incoming), outInt = a.outgoing.intersection(b.outgoing); - var children = new ModuleSet(); - children.add(a); - children.add(b); - var m = new Module(this.modules.length, outInt, inInt, children); - this.modules.push(m); - var update = function (s, i, o) { - s.forAll(function (ms, linktype) { - ms.forAll(function (n) { - var nls = n[i]; - nls.add(linktype, m); - nls.remove(linktype, a); - nls.remove(linktype, b); - a[o].remove(linktype, n); - b[o].remove(linktype, n); - }); - }); - }; - update(outInt, "incoming", "outgoing"); - update(inInt, "outgoing", "incoming"); - this.R -= inInt.count() + outInt.count(); - this.roots[k].remove(a); - this.roots[k].remove(b); - this.roots[k].add(m); - return m; - }; - Configuration.prototype.rootMerges = function (k) { - if (k === void 0) { k = 0; } - var rs = this.roots[k].modules(); - var n = rs.length; - var merges = new Array(n * (n - 1)); - var ctr = 0; - for (var i = 0, i_ = n - 1; i < i_; ++i) { - for (var j = i + 1; j < n; ++j) { - var a = rs[i], b = rs[j]; - merges[ctr] = { id: ctr, nEdges: this.nEdges(a, b), a: a, b: b }; - ctr++; - } - } - return merges; - }; - Configuration.prototype.greedyMerge = function () { - for (var i = 0; i < this.roots.length; ++i) { - if (this.roots[i].modules().length < 2) - continue; - var ms = this.rootMerges(i).sort(function (a, b) { return a.nEdges == b.nEdges ? a.id - b.id : a.nEdges - b.nEdges; }); - var m = ms[0]; - if (m.nEdges >= this.R) - continue; - this.merge(m.a, m.b, i); - return true; - } - }; - Configuration.prototype.nEdges = function (a, b) { - var inInt = a.incoming.intersection(b.incoming), outInt = a.outgoing.intersection(b.outgoing); - return this.R - inInt.count() - outInt.count(); - }; - Configuration.prototype.getGroupHierarchy = function (retargetedEdges) { - var _this = this; - var groups = []; - var root = {}; - toGroups(this.roots[0], root, groups); - var es = this.allEdges(); - es.forEach(function (e) { - var a = _this.modules[e.source]; - var b = _this.modules[e.target]; - retargetedEdges.push(new PowerEdge(typeof a.gid === "undefined" ? e.source : groups[a.gid], typeof b.gid === "undefined" ? e.target : groups[b.gid], e.type)); - }); - return groups; - }; - Configuration.prototype.allEdges = function () { - var es = []; - Configuration.getEdges(this.roots[0], es); - return es; - }; - Configuration.getEdges = function (modules, es) { - modules.forAll(function (m) { - m.getEdges(es); - Configuration.getEdges(m.children, es); - }); - }; - return Configuration; -}()); -var Configuration_1 = Configuration; -function toGroups(modules, group, groups) { - modules.forAll(function (m) { - if (m.isLeaf()) { - if (!group.leaves) - group.leaves = []; - group.leaves.push(m.id); - } - else { - var g = group; - m.gid = groups.length; - if (!m.isIsland() || m.isPredefined()) { - g = { id: m.gid }; - if (m.isPredefined()) - for (var prop in m.definition) - g[prop] = m.definition[prop]; - if (!group.groups) - group.groups = []; - group.groups.push(m.gid); - groups.push(g); - } - toGroups(m.children, g, groups); - } - }); -} -var Module = (function () { - function Module(id, outgoing, incoming, children, definition) { - if (outgoing === void 0) { outgoing = new LinkSets(); } - if (incoming === void 0) { incoming = new LinkSets(); } - if (children === void 0) { children = new ModuleSet(); } - this.id = id; - this.outgoing = outgoing; - this.incoming = incoming; - this.children = children; - this.definition = definition; - } - Module.prototype.getEdges = function (es) { - var _this = this; - this.outgoing.forAll(function (ms, edgetype) { - ms.forAll(function (target) { - es.push(new PowerEdge(_this.id, target.id, edgetype)); - }); - }); - }; - Module.prototype.isLeaf = function () { - return this.children.count() === 0; - }; - Module.prototype.isIsland = function () { - return this.outgoing.count() === 0 && this.incoming.count() === 0; - }; - Module.prototype.isPredefined = function () { - return typeof this.definition !== "undefined"; - }; - return Module; -}()); -var Module_1 = Module; -function intersection(m, n) { - var i = {}; - for (var v in m) - if (v in n) - i[v] = m[v]; - return i; -} -var ModuleSet = (function () { - function ModuleSet() { - this.table = {}; - } - ModuleSet.prototype.count = function () { - return Object.keys(this.table).length; - }; - ModuleSet.prototype.intersection = function (other) { - var result = new ModuleSet(); - result.table = intersection(this.table, other.table); - return result; - }; - ModuleSet.prototype.intersectionCount = function (other) { - return this.intersection(other).count(); - }; - ModuleSet.prototype.contains = function (id) { - return id in this.table; - }; - ModuleSet.prototype.add = function (m) { - this.table[m.id] = m; - }; - ModuleSet.prototype.remove = function (m) { - delete this.table[m.id]; - }; - ModuleSet.prototype.forAll = function (f) { - for (var mid in this.table) { - f(this.table[mid]); - } - }; - ModuleSet.prototype.modules = function () { - var vs = []; - this.forAll(function (m) { - if (!m.isPredefined()) - vs.push(m); - }); - return vs; - }; - return ModuleSet; -}()); -var ModuleSet_1 = ModuleSet; -var LinkSets = (function () { - function LinkSets() { - this.sets = {}; - this.n = 0; - } - LinkSets.prototype.count = function () { - return this.n; - }; - LinkSets.prototype.contains = function (id) { - var result = false; - this.forAllModules(function (m) { - if (!result && m.id == id) { - result = true; - } - }); - return result; - }; - LinkSets.prototype.add = function (linktype, m) { - var s = linktype in this.sets ? this.sets[linktype] : this.sets[linktype] = new ModuleSet(); - s.add(m); - ++this.n; - }; - LinkSets.prototype.remove = function (linktype, m) { - var ms = this.sets[linktype]; - ms.remove(m); - if (ms.count() === 0) { - delete this.sets[linktype]; - } - --this.n; - }; - LinkSets.prototype.forAll = function (f) { - for (var linktype in this.sets) { - f(this.sets[linktype], Number(linktype)); - } - }; - LinkSets.prototype.forAllModules = function (f) { - this.forAll(function (ms, lt) { return ms.forAll(f); }); - }; - LinkSets.prototype.intersection = function (other) { - var result = new LinkSets(); - this.forAll(function (ms, lt) { - if (lt in other.sets) { - var i = ms.intersection(other.sets[lt]), n = i.count(); - if (n > 0) { - result.sets[lt] = i; - result.n += n; - } - } - }); - return result; - }; - return LinkSets; -}()); -var LinkSets_1 = LinkSets; -function getGroups(nodes, links, la, rootGroup) { - var n = nodes.length, c = new Configuration(n, links, la, rootGroup); - while (c.greedyMerge()) - ; - var powerEdges = []; - var g = c.getGroupHierarchy(powerEdges); - powerEdges.forEach(function (e) { - var f = function (end) { - var g = e[end]; - if (typeof g == "number") - e[end] = nodes[g]; - }; - f("source"); - f("target"); - }); - return { groups: g, powerEdges: powerEdges }; -} -var getGroups_1 = getGroups; - - -var powergraph = /*#__PURE__*/Object.defineProperty({ - PowerEdge: PowerEdge_1, - Configuration: Configuration_1, - Module: Module_1, - ModuleSet: ModuleSet_1, - LinkSets: LinkSets_1, - getGroups: getGroups_1 -}, '__esModule', {value: true}); - -function unionCount(a, b) { - var u = {}; - for (var i in a) - u[i] = {}; - for (var i in b) - u[i] = {}; - return Object.keys(u).length; -} -function intersectionCount(a, b) { - var n = 0; - for (var i in a) - if (typeof b[i] !== 'undefined') - ++n; - return n; -} -function getNeighbours(links, la) { - var neighbours = {}; - var addNeighbours = function (u, v) { - if (typeof neighbours[u] === 'undefined') - neighbours[u] = {}; - neighbours[u][v] = {}; - }; - links.forEach(function (e) { - var u = la.getSourceIndex(e), v = la.getTargetIndex(e); - addNeighbours(u, v); - addNeighbours(v, u); - }); - return neighbours; -} -function computeLinkLengths(links, w, f, la) { - var neighbours = getNeighbours(links, la); - links.forEach(function (l) { - var a = neighbours[la.getSourceIndex(l)]; - var b = neighbours[la.getTargetIndex(l)]; - la.setLength(l, 1 + w * f(a, b)); - }); -} -function symmetricDiffLinkLengths(links, la, w) { - if (w === void 0) { w = 1; } - computeLinkLengths(links, w, function (a, b) { return Math.sqrt(unionCount(a, b) - intersectionCount(a, b)); }, la); -} -var symmetricDiffLinkLengths_1 = symmetricDiffLinkLengths; -function jaccardLinkLengths(links, la, w) { - if (w === void 0) { w = 1; } - computeLinkLengths(links, w, function (a, b) { - return Math.min(Object.keys(a).length, Object.keys(b).length) < 1.1 ? 0 : intersectionCount(a, b) / unionCount(a, b); - }, la); -} -var jaccardLinkLengths_1 = jaccardLinkLengths; -function generateDirectedEdgeConstraints(n, links, axis, la) { - var components = stronglyConnectedComponents(n, links, la); - var nodes = {}; - components.forEach(function (c, i) { - return c.forEach(function (v) { return nodes[v] = i; }); - }); - var constraints = []; - links.forEach(function (l) { - var ui = la.getSourceIndex(l), vi = la.getTargetIndex(l), u = nodes[ui], v = nodes[vi]; - if (u !== v) { - constraints.push({ - axis: axis, - left: ui, - right: vi, - gap: la.getMinSeparation(l) - }); - } - }); - return constraints; -} -var generateDirectedEdgeConstraints_1 = generateDirectedEdgeConstraints; -function stronglyConnectedComponents(numVertices, edges, la) { - var nodes = []; - var index = 0; - var stack = []; - var components = []; - function strongConnect(v) { - v.index = v.lowlink = index++; - stack.push(v); - v.onStack = true; - for (var _i = 0, _a = v.out; _i < _a.length; _i++) { - var w = _a[_i]; - if (typeof w.index === 'undefined') { - strongConnect(w); - v.lowlink = Math.min(v.lowlink, w.lowlink); - } - else if (w.onStack) { - v.lowlink = Math.min(v.lowlink, w.index); - } - } - if (v.lowlink === v.index) { - var component = []; - while (stack.length) { - w = stack.pop(); - w.onStack = false; - component.push(w); - if (w === v) - break; - } - components.push(component.map(function (v) { return v.id; })); - } - } - for (var i = 0; i < numVertices; i++) { - nodes.push({ id: i, out: [] }); - } - for (var _i = 0, edges_1 = edges; _i < edges_1.length; _i++) { - var e = edges_1[_i]; - var v_1 = nodes[la.getSourceIndex(e)], w = nodes[la.getTargetIndex(e)]; - v_1.out.push(w); - } - for (var _a = 0, nodes_1 = nodes; _a < nodes_1.length; _a++) { - var v = nodes_1[_a]; - if (typeof v.index === 'undefined') - strongConnect(v); - } - return components; -} -var stronglyConnectedComponents_1 = stronglyConnectedComponents; - - -var linklengths = /*#__PURE__*/Object.defineProperty({ - symmetricDiffLinkLengths: symmetricDiffLinkLengths_1, - jaccardLinkLengths: jaccardLinkLengths_1, - generateDirectedEdgeConstraints: generateDirectedEdgeConstraints_1, - stronglyConnectedComponents: stronglyConnectedComponents_1 -}, '__esModule', {value: true}); - -var Locks = (function () { - function Locks() { - this.locks = {}; - } - Locks.prototype.add = function (id, x) { - this.locks[id] = x; - }; - Locks.prototype.clear = function () { - this.locks = {}; - }; - Locks.prototype.isEmpty = function () { - for (var l in this.locks) - return false; - return true; - }; - Locks.prototype.apply = function (f) { - for (var l in this.locks) { - f(Number(l), this.locks[l]); - } - }; - return Locks; -}()); -var Locks_1 = Locks; -var Descent = (function () { - function Descent(x, D, G) { - if (G === void 0) { G = null; } - this.D = D; - this.G = G; - this.threshold = 0.0001; - this.numGridSnapNodes = 0; - this.snapGridSize = 100; - this.snapStrength = 1000; - this.scaleSnapByMaxH = false; - this.random = new PseudoRandom(); - this.project = null; - this.x = x; - this.k = x.length; - var n = this.n = x[0].length; - this.H = new Array(this.k); - this.g = new Array(this.k); - this.Hd = new Array(this.k); - this.a = new Array(this.k); - this.b = new Array(this.k); - this.c = new Array(this.k); - this.d = new Array(this.k); - this.e = new Array(this.k); - this.ia = new Array(this.k); - this.ib = new Array(this.k); - this.xtmp = new Array(this.k); - this.locks = new Locks(); - this.minD = Number.MAX_VALUE; - var i = n, j; - while (i--) { - j = n; - while (--j > i) { - var d = D[i][j]; - if (d > 0 && d < this.minD) { - this.minD = d; - } - } - } - if (this.minD === Number.MAX_VALUE) - this.minD = 1; - i = this.k; - while (i--) { - this.g[i] = new Array(n); - this.H[i] = new Array(n); - j = n; - while (j--) { - this.H[i][j] = new Array(n); - } - this.Hd[i] = new Array(n); - this.a[i] = new Array(n); - this.b[i] = new Array(n); - this.c[i] = new Array(n); - this.d[i] = new Array(n); - this.e[i] = new Array(n); - this.ia[i] = new Array(n); - this.ib[i] = new Array(n); - this.xtmp[i] = new Array(n); - } - } - Descent.createSquareMatrix = function (n, f) { - var M = new Array(n); - for (var i = 0; i < n; ++i) { - M[i] = new Array(n); - for (var j = 0; j < n; ++j) { - M[i][j] = f(i, j); - } - } - return M; - }; - Descent.prototype.offsetDir = function () { - var _this = this; - var u = new Array(this.k); - var l = 0; - for (var i = 0; i < this.k; ++i) { - var x = u[i] = this.random.getNextBetween(0.01, 1) - 0.5; - l += x * x; - } - l = Math.sqrt(l); - return u.map(function (x) { return x *= _this.minD / l; }); - }; - Descent.prototype.computeDerivatives = function (x) { - var _this = this; - var n = this.n; - if (n < 1) - return; - var i; - var d = new Array(this.k); - var d2 = new Array(this.k); - var Huu = new Array(this.k); - var maxH = 0; - for (var u = 0; u < n; ++u) { - for (i = 0; i < this.k; ++i) - Huu[i] = this.g[i][u] = 0; - for (var v = 0; v < n; ++v) { - if (u === v) - continue; - var maxDisplaces = n; - while (maxDisplaces--) { - var sd2 = 0; - for (i = 0; i < this.k; ++i) { - var dx = d[i] = x[i][u] - x[i][v]; - sd2 += d2[i] = dx * dx; - } - if (sd2 > 1e-9) - break; - var rd = this.offsetDir(); - for (i = 0; i < this.k; ++i) - x[i][v] += rd[i]; - } - var l = Math.sqrt(sd2); - var D = this.D[u][v]; - var weight = this.G != null ? this.G[u][v] : 1; - if (weight > 1 && l > D || !isFinite(D)) { - for (i = 0; i < this.k; ++i) - this.H[i][u][v] = 0; - continue; - } - if (weight > 1) { - weight = 1; - } - var D2 = D * D; - var gs = 2 * weight * (l - D) / (D2 * l); - var l3 = l * l * l; - var hs = 2 * -weight / (D2 * l3); - if (!isFinite(gs)) - console.log(gs); - for (i = 0; i < this.k; ++i) { - this.g[i][u] += d[i] * gs; - Huu[i] -= this.H[i][u][v] = hs * (l3 + D * (d2[i] - sd2) + l * sd2); - } - } - for (i = 0; i < this.k; ++i) - maxH = Math.max(maxH, this.H[i][u][u] = Huu[i]); - } - var r = this.snapGridSize / 2; - var g = this.snapGridSize; - var w = this.snapStrength; - var k = w / (r * r); - var numNodes = this.numGridSnapNodes; - for (var u = 0; u < numNodes; ++u) { - for (i = 0; i < this.k; ++i) { - var xiu = this.x[i][u]; - var m = xiu / g; - var f = m % 1; - var q = m - f; - var a = Math.abs(f); - var dx = (a <= 0.5) ? xiu - q * g : - (xiu > 0) ? xiu - (q + 1) * g : xiu - (q - 1) * g; - if (-r < dx && dx <= r) { - if (this.scaleSnapByMaxH) { - this.g[i][u] += maxH * k * dx; - this.H[i][u][u] += maxH * k; - } - else { - this.g[i][u] += k * dx; - this.H[i][u][u] += k; - } - } - } - } - if (!this.locks.isEmpty()) { - this.locks.apply(function (u, p) { - for (i = 0; i < _this.k; ++i) { - _this.H[i][u][u] += maxH; - _this.g[i][u] -= maxH * (p[i] - x[i][u]); - } - }); - } - }; - Descent.dotProd = function (a, b) { - var x = 0, i = a.length; - while (i--) - x += a[i] * b[i]; - return x; - }; - Descent.rightMultiply = function (m, v, r) { - var i = m.length; - while (i--) - r[i] = Descent.dotProd(m[i], v); - }; - Descent.prototype.computeStepSize = function (d) { - var numerator = 0, denominator = 0; - for (var i = 0; i < this.k; ++i) { - numerator += Descent.dotProd(this.g[i], d[i]); - Descent.rightMultiply(this.H[i], d[i], this.Hd[i]); - denominator += Descent.dotProd(d[i], this.Hd[i]); - } - if (denominator === 0 || !isFinite(denominator)) - return 0; - return 1 * numerator / denominator; - }; - Descent.prototype.reduceStress = function () { - this.computeDerivatives(this.x); - var alpha = this.computeStepSize(this.g); - for (var i = 0; i < this.k; ++i) { - this.takeDescentStep(this.x[i], this.g[i], alpha); - } - return this.computeStress(); - }; - Descent.copy = function (a, b) { - var m = a.length, n = b[0].length; - for (var i = 0; i < m; ++i) { - for (var j = 0; j < n; ++j) { - b[i][j] = a[i][j]; - } - } - }; - Descent.prototype.stepAndProject = function (x0, r, d, stepSize) { - Descent.copy(x0, r); - this.takeDescentStep(r[0], d[0], stepSize); - if (this.project) - this.project[0](x0[0], x0[1], r[0]); - this.takeDescentStep(r[1], d[1], stepSize); - if (this.project) - this.project[1](r[0], x0[1], r[1]); - for (var i = 2; i < this.k; i++) - this.takeDescentStep(r[i], d[i], stepSize); - }; - Descent.mApply = function (m, n, f) { - var i = m; - while (i-- > 0) { - var j = n; - while (j-- > 0) - f(i, j); - } - }; - Descent.prototype.matrixApply = function (f) { - Descent.mApply(this.k, this.n, f); - }; - Descent.prototype.computeNextPosition = function (x0, r) { - var _this = this; - this.computeDerivatives(x0); - var alpha = this.computeStepSize(this.g); - this.stepAndProject(x0, r, this.g, alpha); - if (this.project) { - this.matrixApply(function (i, j) { return _this.e[i][j] = x0[i][j] - r[i][j]; }); - var beta = this.computeStepSize(this.e); - beta = Math.max(0.2, Math.min(beta, 1)); - this.stepAndProject(x0, r, this.e, beta); - } - }; - Descent.prototype.run = function (iterations) { - var stress = Number.MAX_VALUE, converged = false; - while (!converged && iterations-- > 0) { - var s = this.rungeKutta(); - converged = Math.abs(stress / s - 1) < this.threshold; - stress = s; - } - return stress; - }; - Descent.prototype.rungeKutta = function () { - var _this = this; - this.computeNextPosition(this.x, this.a); - Descent.mid(this.x, this.a, this.ia); - this.computeNextPosition(this.ia, this.b); - Descent.mid(this.x, this.b, this.ib); - this.computeNextPosition(this.ib, this.c); - this.computeNextPosition(this.c, this.d); - var disp = 0; - this.matrixApply(function (i, j) { - var x = (_this.a[i][j] + 2.0 * _this.b[i][j] + 2.0 * _this.c[i][j] + _this.d[i][j]) / 6.0, d = _this.x[i][j] - x; - disp += d * d; - _this.x[i][j] = x; - }); - return disp; - }; - Descent.mid = function (a, b, m) { - Descent.mApply(a.length, a[0].length, function (i, j) { - return m[i][j] = a[i][j] + (b[i][j] - a[i][j]) / 2.0; - }); - }; - Descent.prototype.takeDescentStep = function (x, d, stepSize) { - for (var i = 0; i < this.n; ++i) { - x[i] = x[i] - stepSize * d[i]; - } - }; - Descent.prototype.computeStress = function () { - var stress = 0; - for (var u = 0, nMinus1 = this.n - 1; u < nMinus1; ++u) { - for (var v = u + 1, n = this.n; v < n; ++v) { - var l = 0; - for (var i = 0; i < this.k; ++i) { - var dx = this.x[i][u] - this.x[i][v]; - l += dx * dx; - } - l = Math.sqrt(l); - var d = this.D[u][v]; - if (!isFinite(d)) - continue; - var rl = d - l; - var d2 = d * d; - stress += rl * rl / d2; - } - } - return stress; - }; - Descent.zeroDistance = 1e-10; - return Descent; -}()); -var Descent_1 = Descent; -var PseudoRandom = (function () { - function PseudoRandom(seed) { - if (seed === void 0) { seed = 1; } - this.seed = seed; - this.a = 214013; - this.c = 2531011; - this.m = 2147483648; - this.range = 32767; - } - PseudoRandom.prototype.getNext = function () { - this.seed = (this.seed * this.a + this.c) % this.m; - return (this.seed >> 16) / this.range; - }; - PseudoRandom.prototype.getNextBetween = function (min, max) { - return min + this.getNext() * (max - min); - }; - return PseudoRandom; -}()); -var PseudoRandom_1 = PseudoRandom; - - -var descent = /*#__PURE__*/Object.defineProperty({ - Locks: Locks_1, - Descent: Descent_1, - PseudoRandom: PseudoRandom_1 -}, '__esModule', {value: true}); - -var PositionStats = (function () { - function PositionStats(scale) { - this.scale = scale; - this.AB = 0; - this.AD = 0; - this.A2 = 0; - } - PositionStats.prototype.addVariable = function (v) { - var ai = this.scale / v.scale; - var bi = v.offset / v.scale; - var wi = v.weight; - this.AB += wi * ai * bi; - this.AD += wi * ai * v.desiredPosition; - this.A2 += wi * ai * ai; - }; - PositionStats.prototype.getPosn = function () { - return (this.AD - this.AB) / this.A2; - }; - return PositionStats; -}()); -var PositionStats_1 = PositionStats; -var Constraint = (function () { - function Constraint(left, right, gap, equality) { - if (equality === void 0) { equality = false; } - this.left = left; - this.right = right; - this.gap = gap; - this.equality = equality; - this.active = false; - this.unsatisfiable = false; - this.left = left; - this.right = right; - this.gap = gap; - this.equality = equality; - } - Constraint.prototype.slack = function () { - return this.unsatisfiable ? Number.MAX_VALUE - : this.right.scale * this.right.position() - this.gap - - this.left.scale * this.left.position(); - }; - return Constraint; -}()); -var Constraint_1 = Constraint; -var Variable = (function () { - function Variable(desiredPosition, weight, scale) { - if (weight === void 0) { weight = 1; } - if (scale === void 0) { scale = 1; } - this.desiredPosition = desiredPosition; - this.weight = weight; - this.scale = scale; - this.offset = 0; - } - Variable.prototype.dfdv = function () { - return 2.0 * this.weight * (this.position() - this.desiredPosition); - }; - Variable.prototype.position = function () { - return (this.block.ps.scale * this.block.posn + this.offset) / this.scale; - }; - Variable.prototype.visitNeighbours = function (prev, f) { - var ff = function (c, next) { return c.active && prev !== next && f(c, next); }; - this.cOut.forEach(function (c) { return ff(c, c.right); }); - this.cIn.forEach(function (c) { return ff(c, c.left); }); - }; - return Variable; -}()); -var Variable_1 = Variable; -var Block = (function () { - function Block(v) { - this.vars = []; - v.offset = 0; - this.ps = new PositionStats(v.scale); - this.addVariable(v); - } - Block.prototype.addVariable = function (v) { - v.block = this; - this.vars.push(v); - this.ps.addVariable(v); - this.posn = this.ps.getPosn(); - }; - Block.prototype.updateWeightedPosition = function () { - this.ps.AB = this.ps.AD = this.ps.A2 = 0; - for (var i = 0, n = this.vars.length; i < n; ++i) - this.ps.addVariable(this.vars[i]); - this.posn = this.ps.getPosn(); - }; - Block.prototype.compute_lm = function (v, u, postAction) { - var _this = this; - var dfdv = v.dfdv(); - v.visitNeighbours(u, function (c, next) { - var _dfdv = _this.compute_lm(next, v, postAction); - if (next === c.right) { - dfdv += _dfdv * c.left.scale; - c.lm = _dfdv; - } - else { - dfdv += _dfdv * c.right.scale; - c.lm = -_dfdv; - } - postAction(c); - }); - return dfdv / v.scale; - }; - Block.prototype.populateSplitBlock = function (v, prev) { - var _this = this; - v.visitNeighbours(prev, function (c, next) { - next.offset = v.offset + (next === c.right ? c.gap : -c.gap); - _this.addVariable(next); - _this.populateSplitBlock(next, v); - }); - }; - Block.prototype.traverse = function (visit, acc, v, prev) { - var _this = this; - if (v === void 0) { v = this.vars[0]; } - if (prev === void 0) { prev = null; } - v.visitNeighbours(prev, function (c, next) { - acc.push(visit(c)); - _this.traverse(visit, acc, next, v); - }); - }; - Block.prototype.findMinLM = function () { - var m = null; - this.compute_lm(this.vars[0], null, function (c) { - if (!c.equality && (m === null || c.lm < m.lm)) - m = c; - }); - return m; - }; - Block.prototype.findMinLMBetween = function (lv, rv) { - this.compute_lm(lv, null, function () { }); - var m = null; - this.findPath(lv, null, rv, function (c, next) { - if (!c.equality && c.right === next && (m === null || c.lm < m.lm)) - m = c; - }); - return m; - }; - Block.prototype.findPath = function (v, prev, to, visit) { - var _this = this; - var endFound = false; - v.visitNeighbours(prev, function (c, next) { - if (!endFound && (next === to || _this.findPath(next, v, to, visit))) { - endFound = true; - visit(c, next); - } - }); - return endFound; - }; - Block.prototype.isActiveDirectedPathBetween = function (u, v) { - if (u === v) - return true; - var i = u.cOut.length; - while (i--) { - var c = u.cOut[i]; - if (c.active && this.isActiveDirectedPathBetween(c.right, v)) - return true; - } - return false; - }; - Block.split = function (c) { - c.active = false; - return [Block.createSplitBlock(c.left), Block.createSplitBlock(c.right)]; - }; - Block.createSplitBlock = function (startVar) { - var b = new Block(startVar); - b.populateSplitBlock(startVar, null); - return b; - }; - Block.prototype.splitBetween = function (vl, vr) { - var c = this.findMinLMBetween(vl, vr); - if (c !== null) { - var bs = Block.split(c); - return { constraint: c, lb: bs[0], rb: bs[1] }; - } - return null; - }; - Block.prototype.mergeAcross = function (b, c, dist) { - c.active = true; - for (var i = 0, n = b.vars.length; i < n; ++i) { - var v = b.vars[i]; - v.offset += dist; - this.addVariable(v); - } - this.posn = this.ps.getPosn(); - }; - Block.prototype.cost = function () { - var sum = 0, i = this.vars.length; - while (i--) { - var v = this.vars[i], d = v.position() - v.desiredPosition; - sum += d * d * v.weight; - } - return sum; - }; - return Block; -}()); -var Block_1 = Block; -var Blocks = (function () { - function Blocks(vs) { - this.vs = vs; - var n = vs.length; - this.list = new Array(n); - while (n--) { - var b = new Block(vs[n]); - this.list[n] = b; - b.blockInd = n; - } - } - Blocks.prototype.cost = function () { - var sum = 0, i = this.list.length; - while (i--) - sum += this.list[i].cost(); - return sum; - }; - Blocks.prototype.insert = function (b) { - b.blockInd = this.list.length; - this.list.push(b); - }; - Blocks.prototype.remove = function (b) { - var last = this.list.length - 1; - var swapBlock = this.list[last]; - this.list.length = last; - if (b !== swapBlock) { - this.list[b.blockInd] = swapBlock; - swapBlock.blockInd = b.blockInd; - } - }; - Blocks.prototype.merge = function (c) { - var l = c.left.block, r = c.right.block; - var dist = c.right.offset - c.left.offset - c.gap; - if (l.vars.length < r.vars.length) { - r.mergeAcross(l, c, dist); - this.remove(l); - } - else { - l.mergeAcross(r, c, -dist); - this.remove(r); - } - }; - Blocks.prototype.forEach = function (f) { - this.list.forEach(f); - }; - Blocks.prototype.updateBlockPositions = function () { - this.list.forEach(function (b) { return b.updateWeightedPosition(); }); - }; - Blocks.prototype.split = function (inactive) { - var _this = this; - this.updateBlockPositions(); - this.list.forEach(function (b) { - var v = b.findMinLM(); - if (v !== null && v.lm < Solver.LAGRANGIAN_TOLERANCE) { - b = v.left.block; - Block.split(v).forEach(function (nb) { return _this.insert(nb); }); - _this.remove(b); - inactive.push(v); - } - }); - }; - return Blocks; -}()); -var Blocks_1 = Blocks; -var Solver = (function () { - function Solver(vs, cs) { - this.vs = vs; - this.cs = cs; - this.vs = vs; - vs.forEach(function (v) { - v.cIn = [], v.cOut = []; - }); - this.cs = cs; - cs.forEach(function (c) { - c.left.cOut.push(c); - c.right.cIn.push(c); - }); - this.inactive = cs.map(function (c) { c.active = false; return c; }); - this.bs = null; - } - Solver.prototype.cost = function () { - return this.bs.cost(); - }; - Solver.prototype.setStartingPositions = function (ps) { - this.inactive = this.cs.map(function (c) { c.active = false; return c; }); - this.bs = new Blocks(this.vs); - this.bs.forEach(function (b, i) { return b.posn = ps[i]; }); - }; - Solver.prototype.setDesiredPositions = function (ps) { - this.vs.forEach(function (v, i) { return v.desiredPosition = ps[i]; }); - }; - Solver.prototype.mostViolated = function () { - var minSlack = Number.MAX_VALUE, v = null, l = this.inactive, n = l.length, deletePoint = n; - for (var i = 0; i < n; ++i) { - var c = l[i]; - if (c.unsatisfiable) - continue; - var slack = c.slack(); - if (c.equality || slack < minSlack) { - minSlack = slack; - v = c; - deletePoint = i; - if (c.equality) - break; - } - } - if (deletePoint !== n && - (minSlack < Solver.ZERO_UPPERBOUND && !v.active || v.equality)) { - l[deletePoint] = l[n - 1]; - l.length = n - 1; - } - return v; - }; - Solver.prototype.satisfy = function () { - if (this.bs == null) { - this.bs = new Blocks(this.vs); - } - this.bs.split(this.inactive); - var v = null; - while ((v = this.mostViolated()) && (v.equality || v.slack() < Solver.ZERO_UPPERBOUND && !v.active)) { - var lb = v.left.block, rb = v.right.block; - if (lb !== rb) { - this.bs.merge(v); - } - else { - if (lb.isActiveDirectedPathBetween(v.right, v.left)) { - v.unsatisfiable = true; - continue; - } - var split = lb.splitBetween(v.left, v.right); - if (split !== null) { - this.bs.insert(split.lb); - this.bs.insert(split.rb); - this.bs.remove(lb); - this.inactive.push(split.constraint); - } - else { - v.unsatisfiable = true; - continue; - } - if (v.slack() >= 0) { - this.inactive.push(v); - } - else { - this.bs.merge(v); - } - } - } - }; - Solver.prototype.solve = function () { - this.satisfy(); - var lastcost = Number.MAX_VALUE, cost = this.bs.cost(); - while (Math.abs(lastcost - cost) > 0.0001) { - this.satisfy(); - lastcost = cost; - cost = this.bs.cost(); - } - return cost; - }; - Solver.LAGRANGIAN_TOLERANCE = -1e-4; - Solver.ZERO_UPPERBOUND = -1e-10; - return Solver; -}()); -var Solver_1 = Solver; -function removeOverlapInOneDimension(spans, lowerBound, upperBound) { - var vs = spans.map(function (s) { return new Variable(s.desiredCenter); }); - var cs = []; - var n = spans.length; - for (var i = 0; i < n - 1; i++) { - var left = spans[i], right = spans[i + 1]; - cs.push(new Constraint(vs[i], vs[i + 1], (left.size + right.size) / 2)); - } - var leftMost = vs[0], rightMost = vs[n - 1], leftMostSize = spans[0].size / 2, rightMostSize = spans[n - 1].size / 2; - var vLower = null, vUpper = null; - if (lowerBound) { - vLower = new Variable(lowerBound, leftMost.weight * 1000); - vs.push(vLower); - cs.push(new Constraint(vLower, leftMost, leftMostSize)); - } - if (upperBound) { - vUpper = new Variable(upperBound, rightMost.weight * 1000); - vs.push(vUpper); - cs.push(new Constraint(rightMost, vUpper, rightMostSize)); - } - var solver = new Solver(vs, cs); - solver.solve(); - return { - newCenters: vs.slice(0, spans.length).map(function (v) { return v.position(); }), - lowerBound: vLower ? vLower.position() : leftMost.position() - leftMostSize, - upperBound: vUpper ? vUpper.position() : rightMost.position() + rightMostSize - }; -} -var removeOverlapInOneDimension_1 = removeOverlapInOneDimension; - - -var vpsc = /*#__PURE__*/Object.defineProperty({ - PositionStats: PositionStats_1, - Constraint: Constraint_1, - Variable: Variable_1, - Block: Block_1, - Blocks: Blocks_1, - Solver: Solver_1, - removeOverlapInOneDimension: removeOverlapInOneDimension_1 -}, '__esModule', {value: true}); - -var __extends$5 = (commonjsGlobal && commonjsGlobal.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); - -var TreeBase = (function () { - function TreeBase() { - this.findIter = function (data) { - var res = this._root; - var iter = this.iterator(); - while (res !== null) { - var c = this._comparator(data, res.data); - if (c === 0) { - iter._cursor = res; - return iter; - } - else { - iter._ancestors.push(res); - res = res.get_child(c > 0); - } - } - return null; - }; - } - TreeBase.prototype.clear = function () { - this._root = null; - this.size = 0; - }; - TreeBase.prototype.find = function (data) { - var res = this._root; - while (res !== null) { - var c = this._comparator(data, res.data); - if (c === 0) { - return res.data; - } - else { - res = res.get_child(c > 0); - } - } - return null; - }; - TreeBase.prototype.lowerBound = function (data) { - return this._bound(data, this._comparator); - }; - TreeBase.prototype.upperBound = function (data) { - var cmp = this._comparator; - function reverse_cmp(a, b) { - return cmp(b, a); - } - return this._bound(data, reverse_cmp); - }; - TreeBase.prototype.min = function () { - var res = this._root; - if (res === null) { - return null; - } - while (res.left !== null) { - res = res.left; - } - return res.data; - }; - TreeBase.prototype.max = function () { - var res = this._root; - if (res === null) { - return null; - } - while (res.right !== null) { - res = res.right; - } - return res.data; - }; - TreeBase.prototype.iterator = function () { - return new Iterator(this); - }; - TreeBase.prototype.each = function (cb) { - var it = this.iterator(), data; - while ((data = it.next()) !== null) { - cb(data); - } - }; - TreeBase.prototype.reach = function (cb) { - var it = this.iterator(), data; - while ((data = it.prev()) !== null) { - cb(data); - } - }; - TreeBase.prototype._bound = function (data, cmp) { - var cur = this._root; - var iter = this.iterator(); - while (cur !== null) { - var c = this._comparator(data, cur.data); - if (c === 0) { - iter._cursor = cur; - return iter; - } - iter._ancestors.push(cur); - cur = cur.get_child(c > 0); - } - for (var i = iter._ancestors.length - 1; i >= 0; --i) { - cur = iter._ancestors[i]; - if (cmp(data, cur.data) > 0) { - iter._cursor = cur; - iter._ancestors.length = i; - return iter; - } - } - iter._ancestors.length = 0; - return iter; - }; - return TreeBase; -}()); -var TreeBase_1 = TreeBase; -var Iterator = (function () { - function Iterator(tree) { - this._tree = tree; - this._ancestors = []; - this._cursor = null; - } - Iterator.prototype.data = function () { - return this._cursor !== null ? this._cursor.data : null; - }; - Iterator.prototype.next = function () { - if (this._cursor === null) { - var root = this._tree._root; - if (root !== null) { - this._minNode(root); - } - } - else { - if (this._cursor.right === null) { - var save; - do { - save = this._cursor; - if (this._ancestors.length) { - this._cursor = this._ancestors.pop(); - } - else { - this._cursor = null; - break; - } - } while (this._cursor.right === save); - } - else { - this._ancestors.push(this._cursor); - this._minNode(this._cursor.right); - } - } - return this._cursor !== null ? this._cursor.data : null; - }; - Iterator.prototype.prev = function () { - if (this._cursor === null) { - var root = this._tree._root; - if (root !== null) { - this._maxNode(root); - } - } - else { - if (this._cursor.left === null) { - var save; - do { - save = this._cursor; - if (this._ancestors.length) { - this._cursor = this._ancestors.pop(); - } - else { - this._cursor = null; - break; - } - } while (this._cursor.left === save); - } - else { - this._ancestors.push(this._cursor); - this._maxNode(this._cursor.left); - } - } - return this._cursor !== null ? this._cursor.data : null; - }; - Iterator.prototype._minNode = function (start) { - while (start.left !== null) { - this._ancestors.push(start); - start = start.left; - } - this._cursor = start; - }; - Iterator.prototype._maxNode = function (start) { - while (start.right !== null) { - this._ancestors.push(start); - start = start.right; - } - this._cursor = start; - }; - return Iterator; -}()); -var Iterator_1 = Iterator; -var Node$2 = (function () { - function Node(data) { - this.data = data; - this.left = null; - this.right = null; - this.red = true; - } - Node.prototype.get_child = function (dir) { - return dir ? this.right : this.left; - }; - Node.prototype.set_child = function (dir, val) { - if (dir) { - this.right = val; - } - else { - this.left = val; - } - }; - return Node; -}()); -var RBTree = (function (_super) { - __extends$5(RBTree, _super); - function RBTree(comparator) { - var _this = _super.call(this) || this; - _this._root = null; - _this._comparator = comparator; - _this.size = 0; - return _this; - } - RBTree.prototype.insert = function (data) { - var ret = false; - if (this._root === null) { - this._root = new Node$2(data); - ret = true; - this.size++; - } - else { - var head = new Node$2(undefined); - var dir = false; - var last = false; - var gp = null; - var ggp = head; - var p = null; - var node = this._root; - ggp.right = this._root; - while (true) { - if (node === null) { - node = new Node$2(data); - p.set_child(dir, node); - ret = true; - this.size++; - } - else if (RBTree.is_red(node.left) && RBTree.is_red(node.right)) { - node.red = true; - node.left.red = false; - node.right.red = false; - } - if (RBTree.is_red(node) && RBTree.is_red(p)) { - var dir2 = ggp.right === gp; - if (node === p.get_child(last)) { - ggp.set_child(dir2, RBTree.single_rotate(gp, !last)); - } - else { - ggp.set_child(dir2, RBTree.double_rotate(gp, !last)); - } - } - var cmp = this._comparator(node.data, data); - if (cmp === 0) { - break; - } - last = dir; - dir = cmp < 0; - if (gp !== null) { - ggp = gp; - } - gp = p; - p = node; - node = node.get_child(dir); - } - this._root = head.right; - } - this._root.red = false; - return ret; - }; - RBTree.prototype.remove = function (data) { - if (this._root === null) { - return false; - } - var head = new Node$2(undefined); - var node = head; - node.right = this._root; - var p = null; - var gp = null; - var found = null; - var dir = true; - while (node.get_child(dir) !== null) { - var last = dir; - gp = p; - p = node; - node = node.get_child(dir); - var cmp = this._comparator(data, node.data); - dir = cmp > 0; - if (cmp === 0) { - found = node; - } - if (!RBTree.is_red(node) && !RBTree.is_red(node.get_child(dir))) { - if (RBTree.is_red(node.get_child(!dir))) { - var sr = RBTree.single_rotate(node, dir); - p.set_child(last, sr); - p = sr; - } - else if (!RBTree.is_red(node.get_child(!dir))) { - var sibling = p.get_child(!last); - if (sibling !== null) { - if (!RBTree.is_red(sibling.get_child(!last)) && !RBTree.is_red(sibling.get_child(last))) { - p.red = false; - sibling.red = true; - node.red = true; - } - else { - var dir2 = gp.right === p; - if (RBTree.is_red(sibling.get_child(last))) { - gp.set_child(dir2, RBTree.double_rotate(p, last)); - } - else if (RBTree.is_red(sibling.get_child(!last))) { - gp.set_child(dir2, RBTree.single_rotate(p, last)); - } - var gpc = gp.get_child(dir2); - gpc.red = true; - node.red = true; - gpc.left.red = false; - gpc.right.red = false; - } - } - } - } - } - if (found !== null) { - found.data = node.data; - p.set_child(p.right === node, node.get_child(node.left === null)); - this.size--; - } - this._root = head.right; - if (this._root !== null) { - this._root.red = false; - } - return found !== null; - }; - RBTree.is_red = function (node) { - return node !== null && node.red; - }; - RBTree.single_rotate = function (root, dir) { - var save = root.get_child(!dir); - root.set_child(!dir, save.get_child(dir)); - save.set_child(dir, root); - root.red = true; - save.red = false; - return save; - }; - RBTree.double_rotate = function (root, dir) { - root.set_child(!dir, RBTree.single_rotate(root.get_child(!dir), !dir)); - return RBTree.single_rotate(root, dir); - }; - return RBTree; -}(TreeBase)); -var RBTree_1 = RBTree; - - -var rbtree = /*#__PURE__*/Object.defineProperty({ - TreeBase: TreeBase_1, - Iterator: Iterator_1, - RBTree: RBTree_1 -}, '__esModule', {value: true}); - -var __extends$4 = (commonjsGlobal && commonjsGlobal.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); - - - -function computeGroupBounds(g) { - g.bounds = typeof g.leaves !== "undefined" ? - g.leaves.reduce(function (r, c) { return c.bounds.union(r); }, Rectangle.empty()) : - Rectangle.empty(); - if (typeof g.groups !== "undefined") - g.bounds = g.groups.reduce(function (r, c) { return computeGroupBounds(c).union(r); }, g.bounds); - g.bounds = g.bounds.inflate(g.padding); - return g.bounds; -} -var computeGroupBounds_1 = computeGroupBounds; -var Rectangle = (function () { - function Rectangle(x, X, y, Y) { - this.x = x; - this.X = X; - this.y = y; - this.Y = Y; - } - Rectangle.empty = function () { return new Rectangle(Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY); }; - Rectangle.prototype.cx = function () { return (this.x + this.X) / 2; }; - Rectangle.prototype.cy = function () { return (this.y + this.Y) / 2; }; - Rectangle.prototype.overlapX = function (r) { - var ux = this.cx(), vx = r.cx(); - if (ux <= vx && r.x < this.X) - return this.X - r.x; - if (vx <= ux && this.x < r.X) - return r.X - this.x; - return 0; - }; - Rectangle.prototype.overlapY = function (r) { - var uy = this.cy(), vy = r.cy(); - if (uy <= vy && r.y < this.Y) - return this.Y - r.y; - if (vy <= uy && this.y < r.Y) - return r.Y - this.y; - return 0; - }; - Rectangle.prototype.setXCentre = function (cx) { - var dx = cx - this.cx(); - this.x += dx; - this.X += dx; - }; - Rectangle.prototype.setYCentre = function (cy) { - var dy = cy - this.cy(); - this.y += dy; - this.Y += dy; - }; - Rectangle.prototype.width = function () { - return this.X - this.x; - }; - Rectangle.prototype.height = function () { - return this.Y - this.y; - }; - Rectangle.prototype.union = function (r) { - return new Rectangle(Math.min(this.x, r.x), Math.max(this.X, r.X), Math.min(this.y, r.y), Math.max(this.Y, r.Y)); - }; - Rectangle.prototype.lineIntersections = function (x1, y1, x2, y2) { - var sides = [[this.x, this.y, this.X, this.y], - [this.X, this.y, this.X, this.Y], - [this.X, this.Y, this.x, this.Y], - [this.x, this.Y, this.x, this.y]]; - var intersections = []; - for (var i = 0; i < 4; ++i) { - var r = Rectangle.lineIntersection(x1, y1, x2, y2, sides[i][0], sides[i][1], sides[i][2], sides[i][3]); - if (r !== null) - intersections.push({ x: r.x, y: r.y }); - } - return intersections; - }; - Rectangle.prototype.rayIntersection = function (x2, y2) { - var ints = this.lineIntersections(this.cx(), this.cy(), x2, y2); - return ints.length > 0 ? ints[0] : null; - }; - Rectangle.prototype.vertices = function () { - return [ - { x: this.x, y: this.y }, - { x: this.X, y: this.y }, - { x: this.X, y: this.Y }, - { x: this.x, y: this.Y } - ]; - }; - Rectangle.lineIntersection = function (x1, y1, x2, y2, x3, y3, x4, y4) { - var dx12 = x2 - x1, dx34 = x4 - x3, dy12 = y2 - y1, dy34 = y4 - y3, denominator = dy34 * dx12 - dx34 * dy12; - if (denominator == 0) - return null; - var dx31 = x1 - x3, dy31 = y1 - y3, numa = dx34 * dy31 - dy34 * dx31, a = numa / denominator, numb = dx12 * dy31 - dy12 * dx31, b = numb / denominator; - if (a >= 0 && a <= 1 && b >= 0 && b <= 1) { - return { - x: x1 + a * dx12, - y: y1 + a * dy12 - }; - } - return null; - }; - Rectangle.prototype.inflate = function (pad) { - return new Rectangle(this.x - pad, this.X + pad, this.y - pad, this.Y + pad); - }; - return Rectangle; -}()); -var Rectangle_1 = Rectangle; -function makeEdgeBetween(source, target, ah) { - var si = source.rayIntersection(target.cx(), target.cy()) || { x: source.cx(), y: source.cy() }, ti = target.rayIntersection(source.cx(), source.cy()) || { x: target.cx(), y: target.cy() }, dx = ti.x - si.x, dy = ti.y - si.y, l = Math.sqrt(dx * dx + dy * dy), al = l - ah; - return { - sourceIntersection: si, - targetIntersection: ti, - arrowStart: { x: si.x + al * dx / l, y: si.y + al * dy / l } - }; -} -var makeEdgeBetween_1 = makeEdgeBetween; -function makeEdgeTo(s, target, ah) { - var ti = target.rayIntersection(s.x, s.y); - if (!ti) - ti = { x: target.cx(), y: target.cy() }; - var dx = ti.x - s.x, dy = ti.y - s.y, l = Math.sqrt(dx * dx + dy * dy); - return { x: ti.x - ah * dx / l, y: ti.y - ah * dy / l }; -} -var makeEdgeTo_1 = makeEdgeTo; -var Node$1 = (function () { - function Node(v, r, pos) { - this.v = v; - this.r = r; - this.pos = pos; - this.prev = makeRBTree(); - this.next = makeRBTree(); - } - return Node; -}()); -var Event = (function () { - function Event(isOpen, v, pos) { - this.isOpen = isOpen; - this.v = v; - this.pos = pos; - } - return Event; -}()); -function compareEvents(a, b) { - if (a.pos > b.pos) { - return 1; - } - if (a.pos < b.pos) { - return -1; - } - if (a.isOpen) { - return -1; - } - if (b.isOpen) { - return 1; - } - return 0; -} -function makeRBTree() { - return new rbtree.RBTree(function (a, b) { return a.pos - b.pos; }); -} -var xRect = { - getCentre: function (r) { return r.cx(); }, - getOpen: function (r) { return r.y; }, - getClose: function (r) { return r.Y; }, - getSize: function (r) { return r.width(); }, - makeRect: function (open, close, center, size) { return new Rectangle(center - size / 2, center + size / 2, open, close); }, - findNeighbours: findXNeighbours -}; -var yRect = { - getCentre: function (r) { return r.cy(); }, - getOpen: function (r) { return r.x; }, - getClose: function (r) { return r.X; }, - getSize: function (r) { return r.height(); }, - makeRect: function (open, close, center, size) { return new Rectangle(open, close, center - size / 2, center + size / 2); }, - findNeighbours: findYNeighbours -}; -function generateGroupConstraints(root, f, minSep, isContained) { - if (isContained === void 0) { isContained = false; } - var padding = root.padding, gn = typeof root.groups !== 'undefined' ? root.groups.length : 0, ln = typeof root.leaves !== 'undefined' ? root.leaves.length : 0, childConstraints = !gn ? [] - : root.groups.reduce(function (ccs, g) { return ccs.concat(generateGroupConstraints(g, f, minSep, true)); }, []), n = (isContained ? 2 : 0) + ln + gn, vs = new Array(n), rs = new Array(n), i = 0, add = function (r, v) { rs[i] = r; vs[i++] = v; }; - if (isContained) { - var b = root.bounds, c = f.getCentre(b), s = f.getSize(b) / 2, open = f.getOpen(b), close = f.getClose(b), min = c - s + padding / 2, max = c + s - padding / 2; - root.minVar.desiredPosition = min; - add(f.makeRect(open, close, min, padding), root.minVar); - root.maxVar.desiredPosition = max; - add(f.makeRect(open, close, max, padding), root.maxVar); - } - if (ln) - root.leaves.forEach(function (l) { return add(l.bounds, l.variable); }); - if (gn) - root.groups.forEach(function (g) { - var b = g.bounds; - add(f.makeRect(f.getOpen(b), f.getClose(b), f.getCentre(b), f.getSize(b)), g.minVar); - }); - var cs = generateConstraints(rs, vs, f, minSep); - if (gn) { - vs.forEach(function (v) { v.cOut = [], v.cIn = []; }); - cs.forEach(function (c) { c.left.cOut.push(c), c.right.cIn.push(c); }); - root.groups.forEach(function (g) { - var gapAdjustment = (g.padding - f.getSize(g.bounds)) / 2; - g.minVar.cIn.forEach(function (c) { return c.gap += gapAdjustment; }); - g.minVar.cOut.forEach(function (c) { c.left = g.maxVar; c.gap += gapAdjustment; }); - }); - } - return childConstraints.concat(cs); -} -function generateConstraints(rs, vars, rect, minSep) { - var i, n = rs.length; - var N = 2 * n; - console.assert(vars.length >= n); - var events = new Array(N); - for (i = 0; i < n; ++i) { - var r = rs[i]; - var v = new Node$1(vars[i], r, rect.getCentre(r)); - events[i] = new Event(true, v, rect.getOpen(r)); - events[i + n] = new Event(false, v, rect.getClose(r)); - } - events.sort(compareEvents); - var cs = new Array(); - var scanline = makeRBTree(); - for (i = 0; i < N; ++i) { - var e = events[i]; - var v = e.v; - if (e.isOpen) { - scanline.insert(v); - rect.findNeighbours(v, scanline); - } - else { - scanline.remove(v); - var makeConstraint = function (l, r) { - var sep = (rect.getSize(l.r) + rect.getSize(r.r)) / 2 + minSep; - cs.push(new vpsc.Constraint(l.v, r.v, sep)); - }; - var visitNeighbours = function (forward, reverse, mkcon) { - var u, it = v[forward].iterator(); - while ((u = it[forward]()) !== null) { - mkcon(u, v); - u[reverse].remove(v); - } - }; - visitNeighbours("prev", "next", function (u, v) { return makeConstraint(u, v); }); - visitNeighbours("next", "prev", function (u, v) { return makeConstraint(v, u); }); - } - } - console.assert(scanline.size === 0); - return cs; -} -function findXNeighbours(v, scanline) { - var f = function (forward, reverse) { - var it = scanline.findIter(v); - var u; - while ((u = it[forward]()) !== null) { - var uovervX = u.r.overlapX(v.r); - if (uovervX <= 0 || uovervX <= u.r.overlapY(v.r)) { - v[forward].insert(u); - u[reverse].insert(v); - } - if (uovervX <= 0) { - break; - } - } - }; - f("next", "prev"); - f("prev", "next"); -} -function findYNeighbours(v, scanline) { - var f = function (forward, reverse) { - var u = scanline.findIter(v)[forward](); - if (u !== null && u.r.overlapX(v.r) > 0) { - v[forward].insert(u); - u[reverse].insert(v); - } - }; - f("next", "prev"); - f("prev", "next"); -} -function generateXConstraints(rs, vars) { - return generateConstraints(rs, vars, xRect, 1e-6); -} -var generateXConstraints_1 = generateXConstraints; -function generateYConstraints(rs, vars) { - return generateConstraints(rs, vars, yRect, 1e-6); -} -var generateYConstraints_1 = generateYConstraints; -function generateXGroupConstraints(root) { - return generateGroupConstraints(root, xRect, 1e-6); -} -var generateXGroupConstraints_1 = generateXGroupConstraints; -function generateYGroupConstraints(root) { - return generateGroupConstraints(root, yRect, 1e-6); -} -var generateYGroupConstraints_1 = generateYGroupConstraints; -function removeOverlaps(rs) { - var vs = rs.map(function (r) { return new vpsc.Variable(r.cx()); }); - var cs = generateXConstraints(rs, vs); - var solver = new vpsc.Solver(vs, cs); - solver.solve(); - vs.forEach(function (v, i) { return rs[i].setXCentre(v.position()); }); - vs = rs.map(function (r) { return new vpsc.Variable(r.cy()); }); - cs = generateYConstraints(rs, vs); - solver = new vpsc.Solver(vs, cs); - solver.solve(); - vs.forEach(function (v, i) { return rs[i].setYCentre(v.position()); }); -} -var removeOverlaps_1 = removeOverlaps; -var IndexedVariable = (function (_super) { - __extends$4(IndexedVariable, _super); - function IndexedVariable(index, w) { - var _this = _super.call(this, 0, w) || this; - _this.index = index; - return _this; - } - return IndexedVariable; -}(vpsc.Variable)); -var IndexedVariable_1 = IndexedVariable; -var Projection = (function () { - function Projection(nodes, groups, rootGroup, constraints, avoidOverlaps) { - var _this = this; - if (rootGroup === void 0) { rootGroup = null; } - if (constraints === void 0) { constraints = null; } - if (avoidOverlaps === void 0) { avoidOverlaps = false; } - this.nodes = nodes; - this.groups = groups; - this.rootGroup = rootGroup; - this.avoidOverlaps = avoidOverlaps; - this.variables = nodes.map(function (v, i) { - return v.variable = new IndexedVariable(i, 1); - }); - if (constraints) - this.createConstraints(constraints); - if (avoidOverlaps && rootGroup && typeof rootGroup.groups !== 'undefined') { - nodes.forEach(function (v) { - if (!v.width || !v.height) { - v.bounds = new Rectangle(v.x, v.x, v.y, v.y); - return; - } - var w2 = v.width / 2, h2 = v.height / 2; - v.bounds = new Rectangle(v.x - w2, v.x + w2, v.y - h2, v.y + h2); - }); - computeGroupBounds(rootGroup); - var i = nodes.length; - groups.forEach(function (g) { - _this.variables[i] = g.minVar = new IndexedVariable(i++, typeof g.stiffness !== "undefined" ? g.stiffness : 0.01); - _this.variables[i] = g.maxVar = new IndexedVariable(i++, typeof g.stiffness !== "undefined" ? g.stiffness : 0.01); - }); - } - } - Projection.prototype.createSeparation = function (c) { - return new vpsc.Constraint(this.nodes[c.left].variable, this.nodes[c.right].variable, c.gap, typeof c.equality !== "undefined" ? c.equality : false); - }; - Projection.prototype.makeFeasible = function (c) { - var _this = this; - if (!this.avoidOverlaps) - return; - var axis = 'x', dim = 'width'; - if (c.axis === 'x') - axis = 'y', dim = 'height'; - var vs = c.offsets.map(function (o) { return _this.nodes[o.node]; }).sort(function (a, b) { return a[axis] - b[axis]; }); - var p = null; - vs.forEach(function (v) { - if (p) { - var nextPos = p[axis] + p[dim]; - if (nextPos > v[axis]) { - v[axis] = nextPos; - } - } - p = v; - }); - }; - Projection.prototype.createAlignment = function (c) { - var _this = this; - var u = this.nodes[c.offsets[0].node].variable; - this.makeFeasible(c); - var cs = c.axis === 'x' ? this.xConstraints : this.yConstraints; - c.offsets.slice(1).forEach(function (o) { - var v = _this.nodes[o.node].variable; - cs.push(new vpsc.Constraint(u, v, o.offset, true)); - }); - }; - Projection.prototype.createConstraints = function (constraints) { - var _this = this; - var isSep = function (c) { return typeof c.type === 'undefined' || c.type === 'separation'; }; - this.xConstraints = constraints - .filter(function (c) { return c.axis === "x" && isSep(c); }) - .map(function (c) { return _this.createSeparation(c); }); - this.yConstraints = constraints - .filter(function (c) { return c.axis === "y" && isSep(c); }) - .map(function (c) { return _this.createSeparation(c); }); - constraints - .filter(function (c) { return c.type === 'alignment'; }) - .forEach(function (c) { return _this.createAlignment(c); }); - }; - Projection.prototype.setupVariablesAndBounds = function (x0, y0, desired, getDesired) { - this.nodes.forEach(function (v, i) { - if (v.fixed) { - v.variable.weight = v.fixedWeight ? v.fixedWeight : 1000; - desired[i] = getDesired(v); - } - else { - v.variable.weight = 1; - } - var w = (v.width || 0) / 2, h = (v.height || 0) / 2; - var ix = x0[i], iy = y0[i]; - v.bounds = new Rectangle(ix - w, ix + w, iy - h, iy + h); - }); - }; - Projection.prototype.xProject = function (x0, y0, x) { - if (!this.rootGroup && !(this.avoidOverlaps || this.xConstraints)) - return; - this.project(x0, y0, x0, x, function (v) { return v.px; }, this.xConstraints, generateXGroupConstraints, function (v) { return v.bounds.setXCentre(x[v.variable.index] = v.variable.position()); }, function (g) { - var xmin = x[g.minVar.index] = g.minVar.position(); - var xmax = x[g.maxVar.index] = g.maxVar.position(); - var p2 = g.padding / 2; - g.bounds.x = xmin - p2; - g.bounds.X = xmax + p2; - }); - }; - Projection.prototype.yProject = function (x0, y0, y) { - if (!this.rootGroup && !this.yConstraints) - return; - this.project(x0, y0, y0, y, function (v) { return v.py; }, this.yConstraints, generateYGroupConstraints, function (v) { return v.bounds.setYCentre(y[v.variable.index] = v.variable.position()); }, function (g) { - var ymin = y[g.minVar.index] = g.minVar.position(); - var ymax = y[g.maxVar.index] = g.maxVar.position(); - var p2 = g.padding / 2; - g.bounds.y = ymin - p2; - g.bounds.Y = ymax + p2; - }); - }; - Projection.prototype.projectFunctions = function () { - var _this = this; - return [ - function (x0, y0, x) { return _this.xProject(x0, y0, x); }, - function (x0, y0, y) { return _this.yProject(x0, y0, y); } - ]; - }; - Projection.prototype.project = function (x0, y0, start, desired, getDesired, cs, generateConstraints, updateNodeBounds, updateGroupBounds) { - this.setupVariablesAndBounds(x0, y0, desired, getDesired); - if (this.rootGroup && this.avoidOverlaps) { - computeGroupBounds(this.rootGroup); - cs = cs.concat(generateConstraints(this.rootGroup)); - } - this.solve(this.variables, cs, start, desired); - this.nodes.forEach(updateNodeBounds); - if (this.rootGroup && this.avoidOverlaps) { - this.groups.forEach(updateGroupBounds); - computeGroupBounds(this.rootGroup); - } - }; - Projection.prototype.solve = function (vs, cs, starting, desired) { - var solver = new vpsc.Solver(vs, cs); - solver.setStartingPositions(starting); - solver.setDesiredPositions(desired); - solver.solve(); - }; - return Projection; -}()); -var Projection_1 = Projection; - - -var rectangle = /*#__PURE__*/Object.defineProperty({ - computeGroupBounds: computeGroupBounds_1, - Rectangle: Rectangle_1, - makeEdgeBetween: makeEdgeBetween_1, - makeEdgeTo: makeEdgeTo_1, - generateXConstraints: generateXConstraints_1, - generateYConstraints: generateYConstraints_1, - generateXGroupConstraints: generateXGroupConstraints_1, - generateYGroupConstraints: generateYGroupConstraints_1, - removeOverlaps: removeOverlaps_1, - IndexedVariable: IndexedVariable_1, - Projection: Projection_1 -}, '__esModule', {value: true}); - -var PairingHeap = (function () { - function PairingHeap(elem) { - this.elem = elem; - this.subheaps = []; - } - PairingHeap.prototype.toString = function (selector) { - var str = "", needComma = false; - for (var i = 0; i < this.subheaps.length; ++i) { - var subheap = this.subheaps[i]; - if (!subheap.elem) { - needComma = false; - continue; - } - if (needComma) { - str = str + ","; - } - str = str + subheap.toString(selector); - needComma = true; - } - if (str !== "") { - str = "(" + str + ")"; - } - return (this.elem ? selector(this.elem) : "") + str; - }; - PairingHeap.prototype.forEach = function (f) { - if (!this.empty()) { - f(this.elem, this); - this.subheaps.forEach(function (s) { return s.forEach(f); }); - } - }; - PairingHeap.prototype.count = function () { - return this.empty() ? 0 : 1 + this.subheaps.reduce(function (n, h) { - return n + h.count(); - }, 0); - }; - PairingHeap.prototype.min = function () { - return this.elem; - }; - PairingHeap.prototype.empty = function () { - return this.elem == null; - }; - PairingHeap.prototype.contains = function (h) { - if (this === h) - return true; - for (var i = 0; i < this.subheaps.length; i++) { - if (this.subheaps[i].contains(h)) - return true; - } - return false; - }; - PairingHeap.prototype.isHeap = function (lessThan) { - var _this = this; - return this.subheaps.every(function (h) { return lessThan(_this.elem, h.elem) && h.isHeap(lessThan); }); - }; - PairingHeap.prototype.insert = function (obj, lessThan) { - return this.merge(new PairingHeap(obj), lessThan); - }; - PairingHeap.prototype.merge = function (heap2, lessThan) { - if (this.empty()) - return heap2; - else if (heap2.empty()) - return this; - else if (lessThan(this.elem, heap2.elem)) { - this.subheaps.push(heap2); - return this; - } - else { - heap2.subheaps.push(this); - return heap2; - } - }; - PairingHeap.prototype.removeMin = function (lessThan) { - if (this.empty()) - return null; - else - return this.mergePairs(lessThan); - }; - PairingHeap.prototype.mergePairs = function (lessThan) { - if (this.subheaps.length == 0) - return new PairingHeap(null); - else if (this.subheaps.length == 1) { - return this.subheaps[0]; - } - else { - var firstPair = this.subheaps.pop().merge(this.subheaps.pop(), lessThan); - var remaining = this.mergePairs(lessThan); - return firstPair.merge(remaining, lessThan); - } - }; - PairingHeap.prototype.decreaseKey = function (subheap, newValue, setHeapNode, lessThan) { - var newHeap = subheap.removeMin(lessThan); - subheap.elem = newHeap.elem; - subheap.subheaps = newHeap.subheaps; - if (setHeapNode !== null && newHeap.elem !== null) { - setHeapNode(subheap.elem, subheap); - } - var pairingNode = new PairingHeap(newValue); - if (setHeapNode !== null) { - setHeapNode(newValue, pairingNode); - } - return this.merge(pairingNode, lessThan); - }; - return PairingHeap; -}()); -var PairingHeap_1 = PairingHeap; -var PriorityQueue$1 = (function () { - function PriorityQueue(lessThan) { - this.lessThan = lessThan; - } - PriorityQueue.prototype.top = function () { - if (this.empty()) { - return null; - } - return this.root.elem; - }; - PriorityQueue.prototype.push = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var pairingNode; - for (var i = 0, arg; arg = args[i]; ++i) { - pairingNode = new PairingHeap(arg); - this.root = this.empty() ? - pairingNode : this.root.merge(pairingNode, this.lessThan); - } - return pairingNode; - }; - PriorityQueue.prototype.empty = function () { - return !this.root || !this.root.elem; - }; - PriorityQueue.prototype.isHeap = function () { - return this.root.isHeap(this.lessThan); - }; - PriorityQueue.prototype.forEach = function (f) { - this.root.forEach(f); - }; - PriorityQueue.prototype.pop = function () { - if (this.empty()) { - return null; - } - var obj = this.root.min(); - this.root = this.root.removeMin(this.lessThan); - return obj; - }; - PriorityQueue.prototype.reduceKey = function (heapNode, newKey, setHeapNode) { - if (setHeapNode === void 0) { setHeapNode = null; } - this.root = this.root.decreaseKey(heapNode, newKey, setHeapNode, this.lessThan); - }; - PriorityQueue.prototype.toString = function (selector) { - return this.root.toString(selector); - }; - PriorityQueue.prototype.count = function () { - return this.root.count(); - }; - return PriorityQueue; -}()); -var PriorityQueue_1 = PriorityQueue$1; - - -var pqueue = /*#__PURE__*/Object.defineProperty({ - PairingHeap: PairingHeap_1, - PriorityQueue: PriorityQueue_1 -}, '__esModule', {value: true}); - -var Neighbour = (function () { - function Neighbour(id, distance) { - this.id = id; - this.distance = distance; - } - return Neighbour; -}()); -var Node = (function () { - function Node(id) { - this.id = id; - this.neighbours = []; - } - return Node; -}()); -var QueueEntry = (function () { - function QueueEntry(node, prev, d) { - this.node = node; - this.prev = prev; - this.d = d; - } - return QueueEntry; -}()); -var Calculator = (function () { - function Calculator(n, es, getSourceIndex, getTargetIndex, getLength) { - this.n = n; - this.es = es; - this.neighbours = new Array(this.n); - var i = this.n; - while (i--) - this.neighbours[i] = new Node(i); - i = this.es.length; - while (i--) { - var e = this.es[i]; - var u = getSourceIndex(e), v = getTargetIndex(e); - var d = getLength(e); - this.neighbours[u].neighbours.push(new Neighbour(v, d)); - this.neighbours[v].neighbours.push(new Neighbour(u, d)); - } - } - Calculator.prototype.DistanceMatrix = function () { - var D = new Array(this.n); - for (var i = 0; i < this.n; ++i) { - D[i] = this.dijkstraNeighbours(i); - } - return D; - }; - Calculator.prototype.DistancesFromNode = function (start) { - return this.dijkstraNeighbours(start); - }; - Calculator.prototype.PathFromNodeToNode = function (start, end) { - return this.dijkstraNeighbours(start, end); - }; - Calculator.prototype.PathFromNodeToNodeWithPrevCost = function (start, end, prevCost) { - var q = new pqueue.PriorityQueue(function (a, b) { return a.d <= b.d; }), u = this.neighbours[start], qu = new QueueEntry(u, null, 0), visitedFrom = {}; - q.push(qu); - while (!q.empty()) { - qu = q.pop(); - u = qu.node; - if (u.id === end) { - break; - } - var i = u.neighbours.length; - while (i--) { - var neighbour = u.neighbours[i], v = this.neighbours[neighbour.id]; - if (qu.prev && v.id === qu.prev.node.id) - continue; - var viduid = v.id + ',' + u.id; - if (viduid in visitedFrom && visitedFrom[viduid] <= qu.d) - continue; - var cc = qu.prev ? prevCost(qu.prev.node.id, u.id, v.id) : 0, t = qu.d + neighbour.distance + cc; - visitedFrom[viduid] = t; - q.push(new QueueEntry(v, qu, t)); - } - } - var path = []; - while (qu.prev) { - qu = qu.prev; - path.push(qu.node.id); - } - return path; - }; - Calculator.prototype.dijkstraNeighbours = function (start, dest) { - if (dest === void 0) { dest = -1; } - var q = new pqueue.PriorityQueue(function (a, b) { return a.d <= b.d; }), i = this.neighbours.length, d = new Array(i); - while (i--) { - var node = this.neighbours[i]; - node.d = i === start ? 0 : Number.POSITIVE_INFINITY; - node.q = q.push(node); - } - while (!q.empty()) { - var u = q.pop(); - d[u.id] = u.d; - if (u.id === dest) { - var path = []; - var v = u; - while (typeof v.prev !== 'undefined') { - path.push(v.prev.id); - v = v.prev; - } - return path; - } - i = u.neighbours.length; - while (i--) { - var neighbour = u.neighbours[i]; - var v = this.neighbours[neighbour.id]; - var t = u.d + neighbour.distance; - if (u.d !== Number.MAX_VALUE && v.d > t) { - v.d = t; - v.prev = u; - q.reduceKey(v.q, v, function (e, q) { return e.q = q; }); - } - } - } - return d; - }; - return Calculator; -}()); -var Calculator_1 = Calculator; - - -var shortestpaths = /*#__PURE__*/Object.defineProperty({ - Calculator: Calculator_1 -}, '__esModule', {value: true}); - -var __extends$3 = (commonjsGlobal && commonjsGlobal.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); - - -var Point$1 = (function () { - function Point() { - } - return Point; -}()); -var Point_1 = Point$1; -var LineSegment = (function () { - function LineSegment(x1, y1, x2, y2) { - this.x1 = x1; - this.y1 = y1; - this.x2 = x2; - this.y2 = y2; - } - return LineSegment; -}()); -var LineSegment_1 = LineSegment; -var PolyPoint = (function (_super) { - __extends$3(PolyPoint, _super); - function PolyPoint() { - return _super !== null && _super.apply(this, arguments) || this; - } - return PolyPoint; -}(Point$1)); -var PolyPoint_1 = PolyPoint; -function isLeft(P0, P1, P2) { - return (P1.x - P0.x) * (P2.y - P0.y) - (P2.x - P0.x) * (P1.y - P0.y); -} -var isLeft_1 = isLeft; -function above(p, vi, vj) { - return isLeft(p, vi, vj) > 0; -} -function below(p, vi, vj) { - return isLeft(p, vi, vj) < 0; -} -function ConvexHull(S) { - var P = S.slice(0).sort(function (a, b) { return a.x !== b.x ? b.x - a.x : b.y - a.y; }); - var n = S.length, i; - var minmin = 0; - var xmin = P[0].x; - for (i = 1; i < n; ++i) { - if (P[i].x !== xmin) - break; - } - var minmax = i - 1; - var H = []; - H.push(P[minmin]); - if (minmax === n - 1) { - if (P[minmax].y !== P[minmin].y) - H.push(P[minmax]); - } - else { - var maxmin, maxmax = n - 1; - var xmax = P[n - 1].x; - for (i = n - 2; i >= 0; i--) - if (P[i].x !== xmax) - break; - maxmin = i + 1; - i = minmax; - while (++i <= maxmin) { - if (isLeft(P[minmin], P[maxmin], P[i]) >= 0 && i < maxmin) - continue; - while (H.length > 1) { - if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0) - break; - else - H.length -= 1; - } - if (i != minmin) - H.push(P[i]); - } - if (maxmax != maxmin) - H.push(P[maxmax]); - var bot = H.length; - i = maxmin; - while (--i >= minmax) { - if (isLeft(P[maxmax], P[minmax], P[i]) >= 0 && i > minmax) - continue; - while (H.length > bot) { - if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0) - break; - else - H.length -= 1; - } - if (i != minmin) - H.push(P[i]); - } - } - return H; -} -var ConvexHull_1 = ConvexHull; -function clockwiseRadialSweep(p, P, f) { - P.slice(0).sort(function (a, b) { return Math.atan2(a.y - p.y, a.x - p.x) - Math.atan2(b.y - p.y, b.x - p.x); }).forEach(f); -} -var clockwiseRadialSweep_1 = clockwiseRadialSweep; -function tangent_PointPolyC(P, V) { - var Vclosed = V.slice(0); - Vclosed.push(V[0]); - return { rtan: Rtangent_PointPolyC(P, Vclosed), ltan: Ltangent_PointPolyC(P, Vclosed) }; -} -function Rtangent_PointPolyC(P, V) { - var n = V.length - 1; - var a, b, c; - var upA, dnC; - if (below(P, V[1], V[0]) && !above(P, V[n - 1], V[0])) - return 0; - for (a = 0, b = n;;) { - if (b - a === 1) - if (above(P, V[a], V[b])) - return a; - else - return b; - c = Math.floor((a + b) / 2); - dnC = below(P, V[c + 1], V[c]); - if (dnC && !above(P, V[c - 1], V[c])) - return c; - upA = above(P, V[a + 1], V[a]); - if (upA) { - if (dnC) - b = c; - else { - if (above(P, V[a], V[c])) - b = c; - else - a = c; - } - } - else { - if (!dnC) - a = c; - else { - if (below(P, V[a], V[c])) - b = c; - else - a = c; - } - } - } -} -function Ltangent_PointPolyC(P, V) { - var n = V.length - 1; - var a, b, c; - var dnA, dnC; - if (above(P, V[n - 1], V[0]) && !below(P, V[1], V[0])) - return 0; - for (a = 0, b = n;;) { - if (b - a === 1) - if (below(P, V[a], V[b])) - return a; - else - return b; - c = Math.floor((a + b) / 2); - dnC = below(P, V[c + 1], V[c]); - if (above(P, V[c - 1], V[c]) && !dnC) - return c; - dnA = below(P, V[a + 1], V[a]); - if (dnA) { - if (!dnC) - b = c; - else { - if (below(P, V[a], V[c])) - b = c; - else - a = c; - } - } - else { - if (dnC) - a = c; - else { - if (above(P, V[a], V[c])) - b = c; - else - a = c; - } - } - } -} -function tangent_PolyPolyC(V, W, t1, t2, cmp1, cmp2) { - var ix1, ix2; - ix1 = t1(W[0], V); - ix2 = t2(V[ix1], W); - var done = false; - while (!done) { - done = true; - while (true) { - if (ix1 === V.length - 1) - ix1 = 0; - if (cmp1(W[ix2], V[ix1], V[ix1 + 1])) - break; - ++ix1; - } - while (true) { - if (ix2 === 0) - ix2 = W.length - 1; - if (cmp2(V[ix1], W[ix2], W[ix2 - 1])) - break; - --ix2; - done = false; - } - } - return { t1: ix1, t2: ix2 }; -} -var tangent_PolyPolyC_1 = tangent_PolyPolyC; -function LRtangent_PolyPolyC(V, W) { - var rl = RLtangent_PolyPolyC(W, V); - return { t1: rl.t2, t2: rl.t1 }; -} -var LRtangent_PolyPolyC_1 = LRtangent_PolyPolyC; -function RLtangent_PolyPolyC(V, W) { - return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Ltangent_PointPolyC, above, below); -} -var RLtangent_PolyPolyC_1 = RLtangent_PolyPolyC; -function LLtangent_PolyPolyC(V, W) { - return tangent_PolyPolyC(V, W, Ltangent_PointPolyC, Ltangent_PointPolyC, below, below); -} -var LLtangent_PolyPolyC_1 = LLtangent_PolyPolyC; -function RRtangent_PolyPolyC(V, W) { - return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Rtangent_PointPolyC, above, above); -} -var RRtangent_PolyPolyC_1 = RRtangent_PolyPolyC; -var BiTangent = (function () { - function BiTangent(t1, t2) { - this.t1 = t1; - this.t2 = t2; - } - return BiTangent; -}()); -var BiTangent_1 = BiTangent; -var BiTangents = (function () { - function BiTangents() { - } - return BiTangents; -}()); -var BiTangents_1 = BiTangents; -var TVGPoint = (function (_super) { - __extends$3(TVGPoint, _super); - function TVGPoint() { - return _super !== null && _super.apply(this, arguments) || this; - } - return TVGPoint; -}(Point$1)); -var TVGPoint_1 = TVGPoint; -var VisibilityVertex = (function () { - function VisibilityVertex(id, polyid, polyvertid, p) { - this.id = id; - this.polyid = polyid; - this.polyvertid = polyvertid; - this.p = p; - p.vv = this; - } - return VisibilityVertex; -}()); -var VisibilityVertex_1 = VisibilityVertex; -var VisibilityEdge = (function () { - function VisibilityEdge(source, target) { - this.source = source; - this.target = target; - } - VisibilityEdge.prototype.length = function () { - var dx = this.source.p.x - this.target.p.x; - var dy = this.source.p.y - this.target.p.y; - return Math.sqrt(dx * dx + dy * dy); - }; - return VisibilityEdge; -}()); -var VisibilityEdge_1 = VisibilityEdge; -var TangentVisibilityGraph = (function () { - function TangentVisibilityGraph(P, g0) { - this.P = P; - this.V = []; - this.E = []; - if (!g0) { - var n = P.length; - for (var i = 0; i < n; i++) { - var p = P[i]; - for (var j = 0; j < p.length; ++j) { - var pj = p[j], vv = new VisibilityVertex(this.V.length, i, j, pj); - this.V.push(vv); - if (j > 0) - this.E.push(new VisibilityEdge(p[j - 1].vv, vv)); - } - if (p.length > 1) - this.E.push(new VisibilityEdge(p[0].vv, p[p.length - 1].vv)); - } - for (var i = 0; i < n - 1; i++) { - var Pi = P[i]; - for (var j = i + 1; j < n; j++) { - var Pj = P[j], t = tangents(Pi, Pj); - for (var q in t) { - var c = t[q], source = Pi[c.t1], target = Pj[c.t2]; - this.addEdgeIfVisible(source, target, i, j); - } - } - } - } - else { - this.V = g0.V.slice(0); - this.E = g0.E.slice(0); - } - } - TangentVisibilityGraph.prototype.addEdgeIfVisible = function (u, v, i1, i2) { - if (!this.intersectsPolys(new LineSegment(u.x, u.y, v.x, v.y), i1, i2)) { - this.E.push(new VisibilityEdge(u.vv, v.vv)); - } - }; - TangentVisibilityGraph.prototype.addPoint = function (p, i1) { - var n = this.P.length; - this.V.push(new VisibilityVertex(this.V.length, n, 0, p)); - for (var i = 0; i < n; ++i) { - if (i === i1) - continue; - var poly = this.P[i], t = tangent_PointPolyC(p, poly); - this.addEdgeIfVisible(p, poly[t.ltan], i1, i); - this.addEdgeIfVisible(p, poly[t.rtan], i1, i); - } - return p.vv; - }; - TangentVisibilityGraph.prototype.intersectsPolys = function (l, i1, i2) { - for (var i = 0, n = this.P.length; i < n; ++i) { - if (i != i1 && i != i2 && intersects(l, this.P[i]).length > 0) { - return true; - } - } - return false; - }; - return TangentVisibilityGraph; -}()); -var TangentVisibilityGraph_1 = TangentVisibilityGraph; -function intersects(l, P) { - var ints = []; - for (var i = 1, n = P.length; i < n; ++i) { - var int = rectangle.Rectangle.lineIntersection(l.x1, l.y1, l.x2, l.y2, P[i - 1].x, P[i - 1].y, P[i].x, P[i].y); - if (int) - ints.push(int); - } - return ints; -} -function tangents(V, W) { - var m = V.length - 1, n = W.length - 1; - var bt = new BiTangents(); - for (var i = 0; i < m; ++i) { - for (var j = 0; j < n; ++j) { - var v1 = V[i == 0 ? m - 1 : i - 1]; - var v2 = V[i]; - var v3 = V[i + 1]; - var w1 = W[j == 0 ? n - 1 : j - 1]; - var w2 = W[j]; - var w3 = W[j + 1]; - var v1v2w2 = isLeft(v1, v2, w2); - var v2w1w2 = isLeft(v2, w1, w2); - var v2w2w3 = isLeft(v2, w2, w3); - var w1w2v2 = isLeft(w1, w2, v2); - var w2v1v2 = isLeft(w2, v1, v2); - var w2v2v3 = isLeft(w2, v2, v3); - if (v1v2w2 >= 0 && v2w1w2 >= 0 && v2w2w3 < 0 - && w1w2v2 >= 0 && w2v1v2 >= 0 && w2v2v3 < 0) { - bt.ll = new BiTangent(i, j); - } - else if (v1v2w2 <= 0 && v2w1w2 <= 0 && v2w2w3 > 0 - && w1w2v2 <= 0 && w2v1v2 <= 0 && w2v2v3 > 0) { - bt.rr = new BiTangent(i, j); - } - else if (v1v2w2 <= 0 && v2w1w2 > 0 && v2w2w3 <= 0 - && w1w2v2 >= 0 && w2v1v2 < 0 && w2v2v3 >= 0) { - bt.rl = new BiTangent(i, j); - } - else if (v1v2w2 >= 0 && v2w1w2 < 0 && v2w2w3 >= 0 - && w1w2v2 <= 0 && w2v1v2 > 0 && w2v2v3 <= 0) { - bt.lr = new BiTangent(i, j); - } - } - } - return bt; -} -var tangents_1 = tangents; -function isPointInsidePoly(p, poly) { - for (var i = 1, n = poly.length; i < n; ++i) - if (below(poly[i - 1], poly[i], p)) - return false; - return true; -} -function isAnyPInQ(p, q) { - return !p.every(function (v) { return !isPointInsidePoly(v, q); }); -} -function polysOverlap(p, q) { - if (isAnyPInQ(p, q)) - return true; - if (isAnyPInQ(q, p)) - return true; - for (var i = 1, n = p.length; i < n; ++i) { - var v = p[i], u = p[i - 1]; - if (intersects(new LineSegment(u.x, u.y, v.x, v.y), q).length > 0) - return true; - } - return false; -} -var polysOverlap_1 = polysOverlap; - - -var geom = /*#__PURE__*/Object.defineProperty({ - Point: Point_1, - LineSegment: LineSegment_1, - PolyPoint: PolyPoint_1, - isLeft: isLeft_1, - ConvexHull: ConvexHull_1, - clockwiseRadialSweep: clockwiseRadialSweep_1, - tangent_PolyPolyC: tangent_PolyPolyC_1, - LRtangent_PolyPolyC: LRtangent_PolyPolyC_1, - RLtangent_PolyPolyC: RLtangent_PolyPolyC_1, - LLtangent_PolyPolyC: LLtangent_PolyPolyC_1, - RRtangent_PolyPolyC: RRtangent_PolyPolyC_1, - BiTangent: BiTangent_1, - BiTangents: BiTangents_1, - TVGPoint: TVGPoint_1, - VisibilityVertex: VisibilityVertex_1, - VisibilityEdge: VisibilityEdge_1, - TangentVisibilityGraph: TangentVisibilityGraph_1, - tangents: tangents_1, - polysOverlap: polysOverlap_1 -}, '__esModule', {value: true}); - -var packingOptions = { - PADDING: 10, - GOLDEN_SECTION: (1 + Math.sqrt(5)) / 2, - FLOAT_EPSILON: 0.0001, - MAX_INERATIONS: 100 -}; -function applyPacking(graphs, w, h, node_size, desired_ratio, centerGraph) { - if (desired_ratio === void 0) { desired_ratio = 1; } - if (centerGraph === void 0) { centerGraph = true; } - var init_x = 0, init_y = 0, svg_width = w, svg_height = h, desired_ratio = typeof desired_ratio !== 'undefined' ? desired_ratio : 1, node_size = typeof node_size !== 'undefined' ? node_size : 0, real_width = 0, real_height = 0, min_width = 0, global_bottom = 0, line = []; - if (graphs.length == 0) - return; - calculate_bb(graphs); - apply(graphs); - if (centerGraph) { - put_nodes_to_right_positions(graphs); - } - function calculate_bb(graphs) { - graphs.forEach(function (g) { - calculate_single_bb(g); - }); - function calculate_single_bb(graph) { - var min_x = Number.MAX_VALUE, min_y = Number.MAX_VALUE, max_x = 0, max_y = 0; - graph.array.forEach(function (v) { - var w = typeof v.width !== 'undefined' ? v.width : node_size; - var h = typeof v.height !== 'undefined' ? v.height : node_size; - w /= 2; - h /= 2; - max_x = Math.max(v.x + w, max_x); - min_x = Math.min(v.x - w, min_x); - max_y = Math.max(v.y + h, max_y); - min_y = Math.min(v.y - h, min_y); - }); - graph.width = max_x - min_x; - graph.height = max_y - min_y; - } - } - function put_nodes_to_right_positions(graphs) { - graphs.forEach(function (g) { - var center = { x: 0, y: 0 }; - g.array.forEach(function (node) { - center.x += node.x; - center.y += node.y; - }); - center.x /= g.array.length; - center.y /= g.array.length; - var corner = { x: center.x - g.width / 2, y: center.y - g.height / 2 }; - var offset = { x: g.x - corner.x + svg_width / 2 - real_width / 2, y: g.y - corner.y + svg_height / 2 - real_height / 2 }; - g.array.forEach(function (node) { - node.x += offset.x; - node.y += offset.y; - }); - }); - } - function apply(data, desired_ratio) { - var curr_best_f = Number.POSITIVE_INFINITY; - var curr_best = 0; - data.sort(function (a, b) { return b.height - a.height; }); - min_width = data.reduce(function (a, b) { - return a.width < b.width ? a.width : b.width; - }); - var left = x1 = min_width; - var right = x2 = get_entire_width(data); - var iterationCounter = 0; - var f_x1 = Number.MAX_VALUE; - var f_x2 = Number.MAX_VALUE; - var flag = -1; - var dx = Number.MAX_VALUE; - var df = Number.MAX_VALUE; - while ((dx > min_width) || df > packingOptions.FLOAT_EPSILON) { - if (flag != 1) { - var x1 = right - (right - left) / packingOptions.GOLDEN_SECTION; - var f_x1 = step(data, x1); - } - if (flag != 0) { - var x2 = left + (right - left) / packingOptions.GOLDEN_SECTION; - var f_x2 = step(data, x2); - } - dx = Math.abs(x1 - x2); - df = Math.abs(f_x1 - f_x2); - if (f_x1 < curr_best_f) { - curr_best_f = f_x1; - curr_best = x1; - } - if (f_x2 < curr_best_f) { - curr_best_f = f_x2; - curr_best = x2; - } - if (f_x1 > f_x2) { - left = x1; - x1 = x2; - f_x1 = f_x2; - flag = 1; - } - else { - right = x2; - x2 = x1; - f_x2 = f_x1; - flag = 0; - } - if (iterationCounter++ > 100) { - break; - } - } - step(data, curr_best); - } - function step(data, max_width) { - line = []; - real_width = 0; - real_height = 0; - global_bottom = init_y; - for (var i = 0; i < data.length; i++) { - var o = data[i]; - put_rect(o, max_width); - } - return Math.abs(get_real_ratio() - desired_ratio); - } - function put_rect(rect, max_width) { - var parent = undefined; - for (var i = 0; i < line.length; i++) { - if ((line[i].space_left >= rect.height) && (line[i].x + line[i].width + rect.width + packingOptions.PADDING - max_width) <= packingOptions.FLOAT_EPSILON) { - parent = line[i]; - break; - } - } - line.push(rect); - if (parent !== undefined) { - rect.x = parent.x + parent.width + packingOptions.PADDING; - rect.y = parent.bottom; - rect.space_left = rect.height; - rect.bottom = rect.y; - parent.space_left -= rect.height + packingOptions.PADDING; - parent.bottom += rect.height + packingOptions.PADDING; - } - else { - rect.y = global_bottom; - global_bottom += rect.height + packingOptions.PADDING; - rect.x = init_x; - rect.bottom = rect.y; - rect.space_left = rect.height; - } - if (rect.y + rect.height - real_height > -packingOptions.FLOAT_EPSILON) - real_height = rect.y + rect.height - init_y; - if (rect.x + rect.width - real_width > -packingOptions.FLOAT_EPSILON) - real_width = rect.x + rect.width - init_x; - } - function get_entire_width(data) { - var width = 0; - data.forEach(function (d) { return width += d.width + packingOptions.PADDING; }); - return width; - } - function get_real_ratio() { - return (real_width / real_height); - } -} -var applyPacking_1 = applyPacking; -function separateGraphs(nodes, links) { - var marks = {}; - var ways = {}; - var graphs = []; - var clusters = 0; - for (var i = 0; i < links.length; i++) { - var link = links[i]; - var n1 = link.source; - var n2 = link.target; - if (ways[n1.index]) - ways[n1.index].push(n2); - else - ways[n1.index] = [n2]; - if (ways[n2.index]) - ways[n2.index].push(n1); - else - ways[n2.index] = [n1]; - } - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - if (marks[node.index]) - continue; - explore_node(node, true); - } - function explore_node(n, is_new) { - if (marks[n.index] !== undefined) - return; - if (is_new) { - clusters++; - graphs.push({ array: [] }); - } - marks[n.index] = clusters; - graphs[clusters - 1].array.push(n); - var adjacent = ways[n.index]; - if (!adjacent) - return; - for (var j = 0; j < adjacent.length; j++) { - explore_node(adjacent[j], false); - } - } - return graphs; -} -var separateGraphs_1 = separateGraphs; - - -var handledisconnected = /*#__PURE__*/Object.defineProperty({ - applyPacking: applyPacking_1, - separateGraphs: separateGraphs_1 -}, '__esModule', {value: true}); - -var layout$1 = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); - - - - - - - -var EventType; -(function (EventType) { - EventType[EventType["start"] = 0] = "start"; - EventType[EventType["tick"] = 1] = "tick"; - EventType[EventType["end"] = 2] = "end"; -})(EventType = exports.EventType || (exports.EventType = {})); -function isGroup(g) { - return typeof g.leaves !== 'undefined' || typeof g.groups !== 'undefined'; -} -var Layout = (function () { - function Layout() { - var _this = this; - this._canvasSize = [1, 1]; - this._linkDistance = 20; - this._defaultNodeSize = 10; - this._linkLengthCalculator = null; - this._linkType = null; - this._avoidOverlaps = false; - this._handleDisconnected = true; - this._running = false; - this._nodes = []; - this._groups = []; - this._rootGroup = null; - this._links = []; - this._constraints = []; - this._distanceMatrix = null; - this._descent = null; - this._directedLinkConstraints = null; - this._threshold = 0.01; - this._visibilityGraph = null; - this._groupCompactness = 1e-6; - this.event = null; - this.linkAccessor = { - getSourceIndex: Layout.getSourceIndex, - getTargetIndex: Layout.getTargetIndex, - setLength: Layout.setLinkLength, - getType: function (l) { return typeof _this._linkType === "function" ? _this._linkType(l) : 0; } - }; - } - Layout.prototype.on = function (e, listener) { - if (!this.event) - this.event = {}; - if (typeof e === 'string') { - this.event[EventType[e]] = listener; - } - else { - this.event[e] = listener; - } - return this; - }; - Layout.prototype.trigger = function (e) { - if (this.event && typeof this.event[e.type] !== 'undefined') { - this.event[e.type](e); - } - }; - Layout.prototype.kick = function () { - while (!this.tick()) - ; - }; - Layout.prototype.tick = function () { - if (this._alpha < this._threshold) { - this._running = false; - this.trigger({ type: EventType.end, alpha: this._alpha = 0, stress: this._lastStress }); - return true; - } - var n = this._nodes.length; this._links.length; - var o, i; - this._descent.locks.clear(); - for (i = 0; i < n; ++i) { - o = this._nodes[i]; - if (o.fixed) { - if (typeof o.px === 'undefined' || typeof o.py === 'undefined') { - o.px = o.x; - o.py = o.y; - } - var p = [o.px, o.py]; - this._descent.locks.add(i, p); - } - } - var s1 = this._descent.rungeKutta(); - if (s1 === 0) { - this._alpha = 0; - } - else if (typeof this._lastStress !== 'undefined') { - this._alpha = s1; - } - this._lastStress = s1; - this.updateNodePositions(); - this.trigger({ type: EventType.tick, alpha: this._alpha, stress: this._lastStress }); - return false; - }; - Layout.prototype.updateNodePositions = function () { - var x = this._descent.x[0], y = this._descent.x[1]; - var o, i = this._nodes.length; - while (i--) { - o = this._nodes[i]; - o.x = x[i]; - o.y = y[i]; - } - }; - Layout.prototype.nodes = function (v) { - if (!v) { - if (this._nodes.length === 0 && this._links.length > 0) { - var n = 0; - this._links.forEach(function (l) { - n = Math.max(n, l.source, l.target); - }); - this._nodes = new Array(++n); - for (var i = 0; i < n; ++i) { - this._nodes[i] = {}; - } - } - return this._nodes; - } - this._nodes = v; - return this; - }; - Layout.prototype.groups = function (x) { - var _this = this; - if (!x) - return this._groups; - this._groups = x; - this._rootGroup = {}; - this._groups.forEach(function (g) { - if (typeof g.padding === "undefined") - g.padding = 1; - if (typeof g.leaves !== "undefined") { - g.leaves.forEach(function (v, i) { - if (typeof v === 'number') - (g.leaves[i] = _this._nodes[v]).parent = g; - }); - } - if (typeof g.groups !== "undefined") { - g.groups.forEach(function (gi, i) { - if (typeof gi === 'number') - (g.groups[i] = _this._groups[gi]).parent = g; - }); - } - }); - this._rootGroup.leaves = this._nodes.filter(function (v) { return typeof v.parent === 'undefined'; }); - this._rootGroup.groups = this._groups.filter(function (g) { return typeof g.parent === 'undefined'; }); - return this; - }; - Layout.prototype.powerGraphGroups = function (f) { - var g = powergraph.getGroups(this._nodes, this._links, this.linkAccessor, this._rootGroup); - this.groups(g.groups); - f(g); - return this; - }; - Layout.prototype.avoidOverlaps = function (v) { - if (!arguments.length) - return this._avoidOverlaps; - this._avoidOverlaps = v; - return this; - }; - Layout.prototype.handleDisconnected = function (v) { - if (!arguments.length) - return this._handleDisconnected; - this._handleDisconnected = v; - return this; - }; - Layout.prototype.flowLayout = function (axis, minSeparation) { - if (!arguments.length) - axis = 'y'; - this._directedLinkConstraints = { - axis: axis, - getMinSeparation: typeof minSeparation === 'number' ? function () { return minSeparation; } : minSeparation - }; - return this; - }; - Layout.prototype.links = function (x) { - if (!arguments.length) - return this._links; - this._links = x; - return this; - }; - Layout.prototype.constraints = function (c) { - if (!arguments.length) - return this._constraints; - this._constraints = c; - return this; - }; - Layout.prototype.distanceMatrix = function (d) { - if (!arguments.length) - return this._distanceMatrix; - this._distanceMatrix = d; - return this; - }; - Layout.prototype.size = function (x) { - if (!x) - return this._canvasSize; - this._canvasSize = x; - return this; - }; - Layout.prototype.defaultNodeSize = function (x) { - if (!x) - return this._defaultNodeSize; - this._defaultNodeSize = x; - return this; - }; - Layout.prototype.groupCompactness = function (x) { - if (!x) - return this._groupCompactness; - this._groupCompactness = x; - return this; - }; - Layout.prototype.linkDistance = function (x) { - if (!x) { - return this._linkDistance; - } - this._linkDistance = typeof x === "function" ? x : +x; - this._linkLengthCalculator = null; - return this; - }; - Layout.prototype.linkType = function (f) { - this._linkType = f; - return this; - }; - Layout.prototype.convergenceThreshold = function (x) { - if (!x) - return this._threshold; - this._threshold = typeof x === "function" ? x : +x; - return this; - }; - Layout.prototype.alpha = function (x) { - if (!arguments.length) - return this._alpha; - else { - x = +x; - if (this._alpha) { - if (x > 0) - this._alpha = x; - else - this._alpha = 0; - } - else if (x > 0) { - if (!this._running) { - this._running = true; - this.trigger({ type: EventType.start, alpha: this._alpha = x }); - this.kick(); - } - } - return this; - } - }; - Layout.prototype.getLinkLength = function (link) { - return typeof this._linkDistance === "function" ? +(this._linkDistance(link)) : this._linkDistance; - }; - Layout.setLinkLength = function (link, length) { - link.length = length; - }; - Layout.prototype.getLinkType = function (link) { - return typeof this._linkType === "function" ? this._linkType(link) : 0; - }; - Layout.prototype.symmetricDiffLinkLengths = function (idealLength, w) { - var _this = this; - if (w === void 0) { w = 1; } - this.linkDistance(function (l) { return idealLength * l.length; }); - this._linkLengthCalculator = function () { return linklengths.symmetricDiffLinkLengths(_this._links, _this.linkAccessor, w); }; - return this; - }; - Layout.prototype.jaccardLinkLengths = function (idealLength, w) { - var _this = this; - if (w === void 0) { w = 1; } - this.linkDistance(function (l) { return idealLength * l.length; }); - this._linkLengthCalculator = function () { return linklengths.jaccardLinkLengths(_this._links, _this.linkAccessor, w); }; - return this; - }; - Layout.prototype.start = function (initialUnconstrainedIterations, initialUserConstraintIterations, initialAllConstraintsIterations, gridSnapIterations, keepRunning, centerGraph) { - var _this = this; - if (initialUnconstrainedIterations === void 0) { initialUnconstrainedIterations = 0; } - if (initialUserConstraintIterations === void 0) { initialUserConstraintIterations = 0; } - if (initialAllConstraintsIterations === void 0) { initialAllConstraintsIterations = 0; } - if (gridSnapIterations === void 0) { gridSnapIterations = 0; } - if (keepRunning === void 0) { keepRunning = true; } - if (centerGraph === void 0) { centerGraph = true; } - var i, n = this.nodes().length, N = n + 2 * this._groups.length; this._links.length; var w = this._canvasSize[0], h = this._canvasSize[1]; - var x = new Array(N), y = new Array(N); - var G = null; - var ao = this._avoidOverlaps; - this._nodes.forEach(function (v, i) { - v.index = i; - if (typeof v.x === 'undefined') { - v.x = w / 2, v.y = h / 2; - } - x[i] = v.x, y[i] = v.y; - }); - if (this._linkLengthCalculator) - this._linkLengthCalculator(); - var distances; - if (this._distanceMatrix) { - distances = this._distanceMatrix; - } - else { - distances = (new shortestpaths.Calculator(N, this._links, Layout.getSourceIndex, Layout.getTargetIndex, function (l) { return _this.getLinkLength(l); })).DistanceMatrix(); - G = descent.Descent.createSquareMatrix(N, function () { return 2; }); - this._links.forEach(function (l) { - if (typeof l.source == "number") - l.source = _this._nodes[l.source]; - if (typeof l.target == "number") - l.target = _this._nodes[l.target]; - }); - this._links.forEach(function (e) { - var u = Layout.getSourceIndex(e), v = Layout.getTargetIndex(e); - G[u][v] = G[v][u] = e.weight || 1; - }); - } - var D = descent.Descent.createSquareMatrix(N, function (i, j) { - return distances[i][j]; - }); - if (this._rootGroup && typeof this._rootGroup.groups !== 'undefined') { - var i = n; - var addAttraction = function (i, j, strength, idealDistance) { - G[i][j] = G[j][i] = strength; - D[i][j] = D[j][i] = idealDistance; - }; - this._groups.forEach(function (g) { - addAttraction(i, i + 1, _this._groupCompactness, 0.1); - x[i] = 0, y[i++] = 0; - x[i] = 0, y[i++] = 0; - }); - } - else - this._rootGroup = { leaves: this._nodes, groups: [] }; - var curConstraints = this._constraints || []; - if (this._directedLinkConstraints) { - this.linkAccessor.getMinSeparation = this._directedLinkConstraints.getMinSeparation; - curConstraints = curConstraints.concat(linklengths.generateDirectedEdgeConstraints(n, this._links, this._directedLinkConstraints.axis, (this.linkAccessor))); - } - this.avoidOverlaps(false); - this._descent = new descent.Descent([x, y], D); - this._descent.locks.clear(); - for (var i = 0; i < n; ++i) { - var o = this._nodes[i]; - if (o.fixed) { - o.px = o.x; - o.py = o.y; - var p = [o.x, o.y]; - this._descent.locks.add(i, p); - } - } - this._descent.threshold = this._threshold; - this.initialLayout(initialUnconstrainedIterations, x, y); - if (curConstraints.length > 0) - this._descent.project = new rectangle.Projection(this._nodes, this._groups, this._rootGroup, curConstraints).projectFunctions(); - this._descent.run(initialUserConstraintIterations); - this.separateOverlappingComponents(w, h, centerGraph); - this.avoidOverlaps(ao); - if (ao) { - this._nodes.forEach(function (v, i) { v.x = x[i], v.y = y[i]; }); - this._descent.project = new rectangle.Projection(this._nodes, this._groups, this._rootGroup, curConstraints, true).projectFunctions(); - this._nodes.forEach(function (v, i) { x[i] = v.x, y[i] = v.y; }); - } - this._descent.G = G; - this._descent.run(initialAllConstraintsIterations); - if (gridSnapIterations) { - this._descent.snapStrength = 1000; - this._descent.snapGridSize = this._nodes[0].width; - this._descent.numGridSnapNodes = n; - this._descent.scaleSnapByMaxH = n != N; - var G0 = descent.Descent.createSquareMatrix(N, function (i, j) { - if (i >= n || j >= n) - return G[i][j]; - return 0; - }); - this._descent.G = G0; - this._descent.run(gridSnapIterations); - } - this.updateNodePositions(); - this.separateOverlappingComponents(w, h, centerGraph); - return keepRunning ? this.resume() : this; - }; - Layout.prototype.initialLayout = function (iterations, x, y) { - if (this._groups.length > 0 && iterations > 0) { - var n = this._nodes.length; - var edges = this._links.map(function (e) { return ({ source: e.source.index, target: e.target.index }); }); - var vs = this._nodes.map(function (v) { return ({ index: v.index }); }); - this._groups.forEach(function (g, i) { - vs.push({ index: g.index = n + i }); - }); - this._groups.forEach(function (g, i) { - if (typeof g.leaves !== 'undefined') - g.leaves.forEach(function (v) { return edges.push({ source: g.index, target: v.index }); }); - if (typeof g.groups !== 'undefined') - g.groups.forEach(function (gg) { return edges.push({ source: g.index, target: gg.index }); }); - }); - new Layout() - .size(this.size()) - .nodes(vs) - .links(edges) - .avoidOverlaps(false) - .linkDistance(this.linkDistance()) - .symmetricDiffLinkLengths(5) - .convergenceThreshold(1e-4) - .start(iterations, 0, 0, 0, false); - this._nodes.forEach(function (v) { - x[v.index] = vs[v.index].x; - y[v.index] = vs[v.index].y; - }); - } - else { - this._descent.run(iterations); - } - }; - Layout.prototype.separateOverlappingComponents = function (width, height, centerGraph) { - var _this = this; - if (centerGraph === void 0) { centerGraph = true; } - if (!this._distanceMatrix && this._handleDisconnected) { - var x_1 = this._descent.x[0], y_1 = this._descent.x[1]; - this._nodes.forEach(function (v, i) { v.x = x_1[i], v.y = y_1[i]; }); - var graphs = handledisconnected.separateGraphs(this._nodes, this._links); - handledisconnected.applyPacking(graphs, width, height, this._defaultNodeSize, 1, centerGraph); - this._nodes.forEach(function (v, i) { - _this._descent.x[0][i] = v.x, _this._descent.x[1][i] = v.y; - if (v.bounds) { - v.bounds.setXCentre(v.x); - v.bounds.setYCentre(v.y); - } - }); - } - }; - Layout.prototype.resume = function () { - return this.alpha(0.1); - }; - Layout.prototype.stop = function () { - return this.alpha(0); - }; - Layout.prototype.prepareEdgeRouting = function (nodeMargin) { - if (nodeMargin === void 0) { nodeMargin = 0; } - this._visibilityGraph = new geom.TangentVisibilityGraph(this._nodes.map(function (v) { - return v.bounds.inflate(-nodeMargin).vertices(); - })); - }; - Layout.prototype.routeEdge = function (edge, ah, draw) { - if (ah === void 0) { ah = 5; } - var lineData = []; - var vg2 = new geom.TangentVisibilityGraph(this._visibilityGraph.P, { V: this._visibilityGraph.V, E: this._visibilityGraph.E }), port1 = { x: edge.source.x, y: edge.source.y }, port2 = { x: edge.target.x, y: edge.target.y }, start = vg2.addPoint(port1, edge.source.index), end = vg2.addPoint(port2, edge.target.index); - vg2.addEdgeIfVisible(port1, port2, edge.source.index, edge.target.index); - if (typeof draw !== 'undefined') { - draw(vg2); - } - var sourceInd = function (e) { return e.source.id; }, targetInd = function (e) { return e.target.id; }, length = function (e) { return e.length(); }, spCalc = new shortestpaths.Calculator(vg2.V.length, vg2.E, sourceInd, targetInd, length), shortestPath = spCalc.PathFromNodeToNode(start.id, end.id); - if (shortestPath.length === 1 || shortestPath.length === vg2.V.length) { - var route = rectangle.makeEdgeBetween(edge.source.innerBounds, edge.target.innerBounds, ah); - lineData = [route.sourceIntersection, route.arrowStart]; - } - else { - var n = shortestPath.length - 2, p = vg2.V[shortestPath[n]].p, q = vg2.V[shortestPath[0]].p, lineData = [edge.source.innerBounds.rayIntersection(p.x, p.y)]; - for (var i = n; i >= 0; --i) - lineData.push(vg2.V[shortestPath[i]].p); - lineData.push(rectangle.makeEdgeTo(q, edge.target.innerBounds, ah)); - } - return lineData; - }; - Layout.getSourceIndex = function (e) { - return typeof e.source === 'number' ? e.source : e.source.index; - }; - Layout.getTargetIndex = function (e) { - return typeof e.target === 'number' ? e.target : e.target.index; - }; - Layout.linkId = function (e) { - return Layout.getSourceIndex(e) + "-" + Layout.getTargetIndex(e); - }; - Layout.dragStart = function (d) { - if (isGroup(d)) { - Layout.storeOffset(d, Layout.dragOrigin(d)); - } - else { - Layout.stopNode(d); - d.fixed |= 2; - } - }; - Layout.stopNode = function (v) { - v.px = v.x; - v.py = v.y; - }; - Layout.storeOffset = function (d, origin) { - if (typeof d.leaves !== 'undefined') { - d.leaves.forEach(function (v) { - v.fixed |= 2; - Layout.stopNode(v); - v._dragGroupOffsetX = v.x - origin.x; - v._dragGroupOffsetY = v.y - origin.y; - }); - } - if (typeof d.groups !== 'undefined') { - d.groups.forEach(function (g) { return Layout.storeOffset(g, origin); }); - } - }; - Layout.dragOrigin = function (d) { - if (isGroup(d)) { - return { - x: d.bounds.cx(), - y: d.bounds.cy() - }; - } - else { - return d; - } - }; - Layout.drag = function (d, position) { - if (isGroup(d)) { - if (typeof d.leaves !== 'undefined') { - d.leaves.forEach(function (v) { - d.bounds.setXCentre(position.x); - d.bounds.setYCentre(position.y); - v.px = v._dragGroupOffsetX + position.x; - v.py = v._dragGroupOffsetY + position.y; - }); - } - if (typeof d.groups !== 'undefined') { - d.groups.forEach(function (g) { return Layout.drag(g, position); }); - } - } - else { - d.px = position.x; - d.py = position.y; - } - }; - Layout.dragEnd = function (d) { - if (isGroup(d)) { - if (typeof d.leaves !== 'undefined') { - d.leaves.forEach(function (v) { - Layout.dragEnd(v); - delete v._dragGroupOffsetX; - delete v._dragGroupOffsetY; - }); - } - if (typeof d.groups !== 'undefined') { - d.groups.forEach(Layout.dragEnd); - } - } - else { - d.fixed &= ~6; - } - }; - Layout.mouseOver = function (d) { - d.fixed |= 4; - d.px = d.x, d.py = d.y; - }; - Layout.mouseOut = function (d) { - d.fixed &= ~4; - }; - return Layout; -}()); -exports.Layout = Layout; - -}); - -var __extends$2 = (commonjsGlobal && commonjsGlobal.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); - - -var LayoutAdaptor = (function (_super) { - __extends$2(LayoutAdaptor, _super); - function LayoutAdaptor(options) { - var _this = _super.call(this) || this; - var o = options; - if (o.trigger) { - _this.trigger = o.trigger; - } - if (o.kick) { - _this.kick = o.kick; - } - if (o.drag) { - _this.drag = o.drag; - } - if (o.on) { - _this.on = o.on; - } - _this.dragstart = _this.dragStart = layout$1.Layout.dragStart; - _this.dragend = _this.dragEnd = layout$1.Layout.dragEnd; - return _this; - } - LayoutAdaptor.prototype.trigger = function (e) { }; - LayoutAdaptor.prototype.kick = function () { }; - LayoutAdaptor.prototype.drag = function () { }; - LayoutAdaptor.prototype.on = function (eventType, listener) { return this; }; - return LayoutAdaptor; -}(layout$1.Layout)); -var LayoutAdaptor_1 = LayoutAdaptor; -function adaptor(options) { - return new LayoutAdaptor(options); -} -var adaptor_2 = adaptor; - - -var adaptor_1 = /*#__PURE__*/Object.defineProperty({ - LayoutAdaptor: LayoutAdaptor_1, - adaptor: adaptor_2 -}, '__esModule', {value: true}); - -var __extends$1 = (commonjsGlobal && commonjsGlobal.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); - - -var D3StyleLayoutAdaptor$1 = (function (_super) { - __extends$1(D3StyleLayoutAdaptor, _super); - function D3StyleLayoutAdaptor() { - var _this = _super.call(this) || this; - _this.event = d3.dispatch(layout$1.EventType[layout$1.EventType.start], layout$1.EventType[layout$1.EventType.tick], layout$1.EventType[layout$1.EventType.end]); - var d3layout = _this; - _this.drag = function () { - if (!drag) { - var drag = d3.behavior.drag() - .origin(layout$1.Layout.dragOrigin) - .on("dragstart.d3adaptor", layout$1.Layout.dragStart) - .on("drag.d3adaptor", function (d) { - layout$1.Layout.drag(d, d3.event); - d3layout.resume(); - }) - .on("dragend.d3adaptor", layout$1.Layout.dragEnd); - } - if (!arguments.length) - return drag; - this - .call(drag); - }; - return _this; - } - D3StyleLayoutAdaptor.prototype.trigger = function (e) { - var d3event = { type: layout$1.EventType[e.type], alpha: e.alpha, stress: e.stress }; - this.event[d3event.type](d3event); - }; - D3StyleLayoutAdaptor.prototype.kick = function () { - var _this = this; - d3.timer(function () { return _super.prototype.tick.call(_this); }); - }; - D3StyleLayoutAdaptor.prototype.on = function (eventType, listener) { - if (typeof eventType === 'string') { - this.event.on(eventType, listener); - } - else { - this.event.on(layout$1.EventType[eventType], listener); - } - return this; - }; - return D3StyleLayoutAdaptor; -}(layout$1.Layout)); -var D3StyleLayoutAdaptor_1$1 = D3StyleLayoutAdaptor$1; -function d3adaptor$1() { - return new D3StyleLayoutAdaptor$1(); -} -var d3adaptor_1$1 = d3adaptor$1; - - -var d3v3adaptor = /*#__PURE__*/Object.defineProperty({ - D3StyleLayoutAdaptor: D3StyleLayoutAdaptor_1$1, - d3adaptor: d3adaptor_1$1 -}, '__esModule', {value: true}); - -var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); - - -var D3StyleLayoutAdaptor = (function (_super) { - __extends(D3StyleLayoutAdaptor, _super); - function D3StyleLayoutAdaptor(d3Context) { - var _this = _super.call(this) || this; - _this.d3Context = d3Context; - _this.event = d3Context.dispatch(layout$1.EventType[layout$1.EventType.start], layout$1.EventType[layout$1.EventType.tick], layout$1.EventType[layout$1.EventType.end]); - var d3layout = _this; - _this.drag = function () { - if (!drag) { - var drag = d3Context.drag() - .subject(layout$1.Layout.dragOrigin) - .on("start.d3adaptor", layout$1.Layout.dragStart) - .on("drag.d3adaptor", function (d) { - layout$1.Layout.drag(d, d3Context.event); - d3layout.resume(); - }) - .on("end.d3adaptor", layout$1.Layout.dragEnd); - } - if (!arguments.length) - return drag; - arguments[0].call(drag); - }; - return _this; - } - D3StyleLayoutAdaptor.prototype.trigger = function (e) { - var d3event = { type: layout$1.EventType[e.type], alpha: e.alpha, stress: e.stress }; - this.event.call(d3event.type, d3event); - }; - D3StyleLayoutAdaptor.prototype.kick = function () { - var _this = this; - var t = this.d3Context.timer(function () { return _super.prototype.tick.call(_this) && t.stop(); }); - }; - D3StyleLayoutAdaptor.prototype.on = function (eventType, listener) { - if (typeof eventType === 'string') { - this.event.on(eventType, listener); - } - else { - this.event.on(layout$1.EventType[eventType], listener); - } - return this; - }; - return D3StyleLayoutAdaptor; -}(layout$1.Layout)); -var D3StyleLayoutAdaptor_1 = D3StyleLayoutAdaptor; - - -var d3v4adaptor = /*#__PURE__*/Object.defineProperty({ - D3StyleLayoutAdaptor: D3StyleLayoutAdaptor_1 -}, '__esModule', {value: true}); - -function d3adaptor(d3Context) { - if (!d3Context || isD3V3(d3Context)) { - return new d3v3adaptor.D3StyleLayoutAdaptor(); - } - return new d3v4adaptor.D3StyleLayoutAdaptor(d3Context); -} -var d3adaptor_2 = d3adaptor; -function isD3V3(d3Context) { - var v3exp = /^3\./; - return d3Context.version && d3Context.version.match(v3exp) !== null; -} - - -var d3adaptor_1 = /*#__PURE__*/Object.defineProperty({ - d3adaptor: d3adaptor_2 -}, '__esModule', {value: true}); - -var NodeWrapper = (function () { - function NodeWrapper(id, rect, children) { - this.id = id; - this.rect = rect; - this.children = children; - this.leaf = typeof children === 'undefined' || children.length === 0; - } - return NodeWrapper; -}()); -var NodeWrapper_1 = NodeWrapper; -var Vert = (function () { - function Vert(id, x, y, node, line) { - if (node === void 0) { node = null; } - if (line === void 0) { line = null; } - this.id = id; - this.x = x; - this.y = y; - this.node = node; - this.line = line; - } - return Vert; -}()); -var Vert_1 = Vert; -var LongestCommonSubsequence = (function () { - function LongestCommonSubsequence(s, t) { - this.s = s; - this.t = t; - var mf = LongestCommonSubsequence.findMatch(s, t); - var tr = t.slice(0).reverse(); - var mr = LongestCommonSubsequence.findMatch(s, tr); - if (mf.length >= mr.length) { - this.length = mf.length; - this.si = mf.si; - this.ti = mf.ti; - this.reversed = false; - } - else { - this.length = mr.length; - this.si = mr.si; - this.ti = t.length - mr.ti - mr.length; - this.reversed = true; - } - } - LongestCommonSubsequence.findMatch = function (s, t) { - var m = s.length; - var n = t.length; - var match = { length: 0, si: -1, ti: -1 }; - var l = new Array(m); - for (var i = 0; i < m; i++) { - l[i] = new Array(n); - for (var j = 0; j < n; j++) - if (s[i] === t[j]) { - var v = l[i][j] = (i === 0 || j === 0) ? 1 : l[i - 1][j - 1] + 1; - if (v > match.length) { - match.length = v; - match.si = i - v + 1; - match.ti = j - v + 1; - } - } - else - l[i][j] = 0; - } - return match; - }; - LongestCommonSubsequence.prototype.getSequence = function () { - return this.length >= 0 ? this.s.slice(this.si, this.si + this.length) : []; - }; - return LongestCommonSubsequence; -}()); -var LongestCommonSubsequence_1 = LongestCommonSubsequence; -var GridRouter = (function () { - function GridRouter(originalnodes, accessor, groupPadding) { - var _this = this; - if (groupPadding === void 0) { groupPadding = 12; } - this.originalnodes = originalnodes; - this.groupPadding = groupPadding; - this.leaves = null; - this.nodes = originalnodes.map(function (v, i) { return new NodeWrapper(i, accessor.getBounds(v), accessor.getChildren(v)); }); - this.leaves = this.nodes.filter(function (v) { return v.leaf; }); - this.groups = this.nodes.filter(function (g) { return !g.leaf; }); - this.cols = this.getGridLines('x'); - this.rows = this.getGridLines('y'); - this.groups.forEach(function (v) { - return v.children.forEach(function (c) { return _this.nodes[c].parent = v; }); - }); - this.root = { children: [] }; - this.nodes.forEach(function (v) { - if (typeof v.parent === 'undefined') { - v.parent = _this.root; - _this.root.children.push(v.id); - } - v.ports = []; - }); - this.backToFront = this.nodes.slice(0); - this.backToFront.sort(function (x, y) { return _this.getDepth(x) - _this.getDepth(y); }); - var frontToBackGroups = this.backToFront.slice(0).reverse().filter(function (g) { return !g.leaf; }); - frontToBackGroups.forEach(function (v) { - var r = rectangle.Rectangle.empty(); - v.children.forEach(function (c) { return r = r.union(_this.nodes[c].rect); }); - v.rect = r.inflate(_this.groupPadding); - }); - var colMids = this.midPoints(this.cols.map(function (r) { return r.pos; })); - var rowMids = this.midPoints(this.rows.map(function (r) { return r.pos; })); - var rowx = colMids[0], rowX = colMids[colMids.length - 1]; - var coly = rowMids[0], colY = rowMids[rowMids.length - 1]; - var hlines = this.rows.map(function (r) { return ({ x1: rowx, x2: rowX, y1: r.pos, y2: r.pos }); }) - .concat(rowMids.map(function (m) { return ({ x1: rowx, x2: rowX, y1: m, y2: m }); })); - var vlines = this.cols.map(function (c) { return ({ x1: c.pos, x2: c.pos, y1: coly, y2: colY }); }) - .concat(colMids.map(function (m) { return ({ x1: m, x2: m, y1: coly, y2: colY }); })); - var lines = hlines.concat(vlines); - lines.forEach(function (l) { return l.verts = []; }); - this.verts = []; - this.edges = []; - hlines.forEach(function (h) { - return vlines.forEach(function (v) { - var p = new Vert(_this.verts.length, v.x1, h.y1); - h.verts.push(p); - v.verts.push(p); - _this.verts.push(p); - var i = _this.backToFront.length; - while (i-- > 0) { - var node = _this.backToFront[i], r = node.rect; - var dx = Math.abs(p.x - r.cx()), dy = Math.abs(p.y - r.cy()); - if (dx < r.width() / 2 && dy < r.height() / 2) { - p.node = node; - break; - } - } - }); - }); - lines.forEach(function (l, li) { - _this.nodes.forEach(function (v, i) { - v.rect.lineIntersections(l.x1, l.y1, l.x2, l.y2).forEach(function (intersect, j) { - var p = new Vert(_this.verts.length, intersect.x, intersect.y, v, l); - _this.verts.push(p); - l.verts.push(p); - v.ports.push(p); - }); - }); - var isHoriz = Math.abs(l.y1 - l.y2) < 0.1; - var delta = function (a, b) { return isHoriz ? b.x - a.x : b.y - a.y; }; - l.verts.sort(delta); - for (var i = 1; i < l.verts.length; i++) { - var u = l.verts[i - 1], v = l.verts[i]; - if (u.node && u.node === v.node && u.node.leaf) - continue; - _this.edges.push({ source: u.id, target: v.id, length: Math.abs(delta(u, v)) }); - } - }); - } - GridRouter.prototype.avg = function (a) { return a.reduce(function (x, y) { return x + y; }) / a.length; }; - GridRouter.prototype.getGridLines = function (axis) { - var columns = []; - var ls = this.leaves.slice(0, this.leaves.length); - while (ls.length > 0) { - var overlapping = ls.filter(function (v) { return v.rect['overlap' + axis.toUpperCase()](ls[0].rect); }); - var col = { - nodes: overlapping, - pos: this.avg(overlapping.map(function (v) { return v.rect['c' + axis](); })) - }; - columns.push(col); - col.nodes.forEach(function (v) { return ls.splice(ls.indexOf(v), 1); }); - } - columns.sort(function (a, b) { return a.pos - b.pos; }); - return columns; - }; - GridRouter.prototype.getDepth = function (v) { - var depth = 0; - while (v.parent !== this.root) { - depth++; - v = v.parent; - } - return depth; - }; - GridRouter.prototype.midPoints = function (a) { - var gap = a[1] - a[0]; - var mids = [a[0] - gap / 2]; - for (var i = 1; i < a.length; i++) { - mids.push((a[i] + a[i - 1]) / 2); - } - mids.push(a[a.length - 1] + gap / 2); - return mids; - }; - GridRouter.prototype.findLineage = function (v) { - var lineage = [v]; - do { - v = v.parent; - lineage.push(v); - } while (v !== this.root); - return lineage.reverse(); - }; - GridRouter.prototype.findAncestorPathBetween = function (a, b) { - var aa = this.findLineage(a), ba = this.findLineage(b), i = 0; - while (aa[i] === ba[i]) - i++; - return { commonAncestor: aa[i - 1], lineages: aa.slice(i).concat(ba.slice(i)) }; - }; - GridRouter.prototype.siblingObstacles = function (a, b) { - var _this = this; - var path = this.findAncestorPathBetween(a, b); - var lineageLookup = {}; - path.lineages.forEach(function (v) { return lineageLookup[v.id] = {}; }); - var obstacles = path.commonAncestor.children.filter(function (v) { return !(v in lineageLookup); }); - path.lineages - .filter(function (v) { return v.parent !== path.commonAncestor; }) - .forEach(function (v) { return obstacles = obstacles.concat(v.parent.children.filter(function (c) { return c !== v.id; })); }); - return obstacles.map(function (v) { return _this.nodes[v]; }); - }; - GridRouter.getSegmentSets = function (routes, x, y) { - var vsegments = []; - for (var ei = 0; ei < routes.length; ei++) { - var route = routes[ei]; - for (var si = 0; si < route.length; si++) { - var s = route[si]; - s.edgeid = ei; - s.i = si; - var sdx = s[1][x] - s[0][x]; - if (Math.abs(sdx) < 0.1) { - vsegments.push(s); - } - } - } - vsegments.sort(function (a, b) { return a[0][x] - b[0][x]; }); - var vsegmentsets = []; - var segmentset = null; - for (var i = 0; i < vsegments.length; i++) { - var s = vsegments[i]; - if (!segmentset || Math.abs(s[0][x] - segmentset.pos) > 0.1) { - segmentset = { pos: s[0][x], segments: [] }; - vsegmentsets.push(segmentset); - } - segmentset.segments.push(s); - } - return vsegmentsets; - }; - GridRouter.nudgeSegs = function (x, y, routes, segments, leftOf, gap) { - var n = segments.length; - if (n <= 1) - return; - var vs = segments.map(function (s) { return new vpsc.Variable(s[0][x]); }); - var cs = []; - for (var i = 0; i < n; i++) { - for (var j = 0; j < n; j++) { - if (i === j) - continue; - var s1 = segments[i], s2 = segments[j], e1 = s1.edgeid, e2 = s2.edgeid, lind = -1, rind = -1; - if (x == 'x') { - if (leftOf(e1, e2)) { - if (s1[0][y] < s1[1][y]) { - lind = j, rind = i; - } - else { - lind = i, rind = j; - } - } - } - else { - if (leftOf(e1, e2)) { - if (s1[0][y] < s1[1][y]) { - lind = i, rind = j; - } - else { - lind = j, rind = i; - } - } - } - if (lind >= 0) { - cs.push(new vpsc.Constraint(vs[lind], vs[rind], gap)); - } - } - } - var solver = new vpsc.Solver(vs, cs); - solver.solve(); - vs.forEach(function (v, i) { - var s = segments[i]; - var pos = v.position(); - s[0][x] = s[1][x] = pos; - var route = routes[s.edgeid]; - if (s.i > 0) - route[s.i - 1][1][x] = pos; - if (s.i < route.length - 1) - route[s.i + 1][0][x] = pos; - }); - }; - GridRouter.nudgeSegments = function (routes, x, y, leftOf, gap) { - var vsegmentsets = GridRouter.getSegmentSets(routes, x, y); - for (var i = 0; i < vsegmentsets.length; i++) { - var ss = vsegmentsets[i]; - var events = []; - for (var j = 0; j < ss.segments.length; j++) { - var s = ss.segments[j]; - events.push({ type: 0, s: s, pos: Math.min(s[0][y], s[1][y]) }); - events.push({ type: 1, s: s, pos: Math.max(s[0][y], s[1][y]) }); - } - events.sort(function (a, b) { return a.pos - b.pos + a.type - b.type; }); - var open = []; - var openCount = 0; - events.forEach(function (e) { - if (e.type === 0) { - open.push(e.s); - openCount++; - } - else { - openCount--; - } - if (openCount == 0) { - GridRouter.nudgeSegs(x, y, routes, open, leftOf, gap); - open = []; - } - }); - } - }; - GridRouter.prototype.routeEdges = function (edges, nudgeGap, source, target) { - var _this = this; - var routePaths = edges.map(function (e) { return _this.route(source(e), target(e)); }); - var order = GridRouter.orderEdges(routePaths); - var routes = routePaths.map(function (e) { return GridRouter.makeSegments(e); }); - GridRouter.nudgeSegments(routes, 'x', 'y', order, nudgeGap); - GridRouter.nudgeSegments(routes, 'y', 'x', order, nudgeGap); - GridRouter.unreverseEdges(routes, routePaths); - return routes; - }; - GridRouter.unreverseEdges = function (routes, routePaths) { - routes.forEach(function (segments, i) { - var path = routePaths[i]; - if (path.reversed) { - segments.reverse(); - segments.forEach(function (segment) { - segment.reverse(); - }); - } - }); - }; - GridRouter.angleBetween2Lines = function (line1, line2) { - var angle1 = Math.atan2(line1[0].y - line1[1].y, line1[0].x - line1[1].x); - var angle2 = Math.atan2(line2[0].y - line2[1].y, line2[0].x - line2[1].x); - var diff = angle1 - angle2; - if (diff > Math.PI || diff < -Math.PI) { - diff = angle2 - angle1; - } - return diff; - }; - GridRouter.isLeft = function (a, b, c) { - return ((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) <= 0; - }; - GridRouter.getOrder = function (pairs) { - var outgoing = {}; - for (var i = 0; i < pairs.length; i++) { - var p = pairs[i]; - if (typeof outgoing[p.l] === 'undefined') - outgoing[p.l] = {}; - outgoing[p.l][p.r] = true; - } - return function (l, r) { return typeof outgoing[l] !== 'undefined' && outgoing[l][r]; }; - }; - GridRouter.orderEdges = function (edges) { - var edgeOrder = []; - for (var i = 0; i < edges.length - 1; i++) { - for (var j = i + 1; j < edges.length; j++) { - var e = edges[i], f = edges[j], lcs = new LongestCommonSubsequence(e, f); - var u, vi, vj; - if (lcs.length === 0) - continue; - if (lcs.reversed) { - f.reverse(); - f.reversed = true; - lcs = new LongestCommonSubsequence(e, f); - } - if ((lcs.si <= 0 || lcs.ti <= 0) && - (lcs.si + lcs.length >= e.length || lcs.ti + lcs.length >= f.length)) { - edgeOrder.push({ l: i, r: j }); - continue; - } - if (lcs.si + lcs.length >= e.length || lcs.ti + lcs.length >= f.length) { - u = e[lcs.si + 1]; - vj = e[lcs.si - 1]; - vi = f[lcs.ti - 1]; - } - else { - u = e[lcs.si + lcs.length - 2]; - vi = e[lcs.si + lcs.length]; - vj = f[lcs.ti + lcs.length]; - } - if (GridRouter.isLeft(u, vi, vj)) { - edgeOrder.push({ l: j, r: i }); - } - else { - edgeOrder.push({ l: i, r: j }); - } - } - } - return GridRouter.getOrder(edgeOrder); - }; - GridRouter.makeSegments = function (path) { - function copyPoint(p) { - return { x: p.x, y: p.y }; - } - var isStraight = function (a, b, c) { return Math.abs((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) < 0.001; }; - var segments = []; - var a = copyPoint(path[0]); - for (var i = 1; i < path.length; i++) { - var b = copyPoint(path[i]), c = i < path.length - 1 ? path[i + 1] : null; - if (!c || !isStraight(a, b, c)) { - segments.push([a, b]); - a = b; - } - } - return segments; - }; - GridRouter.prototype.route = function (s, t) { - var _this = this; - var source = this.nodes[s], target = this.nodes[t]; - this.obstacles = this.siblingObstacles(source, target); - var obstacleLookup = {}; - this.obstacles.forEach(function (o) { return obstacleLookup[o.id] = o; }); - this.passableEdges = this.edges.filter(function (e) { - var u = _this.verts[e.source], v = _this.verts[e.target]; - return !(u.node && u.node.id in obstacleLookup - || v.node && v.node.id in obstacleLookup); - }); - for (var i = 1; i < source.ports.length; i++) { - var u = source.ports[0].id; - var v = source.ports[i].id; - this.passableEdges.push({ - source: u, - target: v, - length: 0 - }); - } - for (var i = 1; i < target.ports.length; i++) { - var u = target.ports[0].id; - var v = target.ports[i].id; - this.passableEdges.push({ - source: u, - target: v, - length: 0 - }); - } - var getSource = function (e) { return e.source; }, getTarget = function (e) { return e.target; }, getLength = function (e) { return e.length; }; - var shortestPathCalculator = new shortestpaths.Calculator(this.verts.length, this.passableEdges, getSource, getTarget, getLength); - var bendPenalty = function (u, v, w) { - var a = _this.verts[u], b = _this.verts[v], c = _this.verts[w]; - var dx = Math.abs(c.x - a.x), dy = Math.abs(c.y - a.y); - if (a.node === source && a.node === b.node || b.node === target && b.node === c.node) - return 0; - return dx > 1 && dy > 1 ? 1000 : 0; - }; - var shortestPath = shortestPathCalculator.PathFromNodeToNodeWithPrevCost(source.ports[0].id, target.ports[0].id, bendPenalty); - var pathPoints = shortestPath.reverse().map(function (vi) { return _this.verts[vi]; }); - pathPoints.push(this.nodes[target.id].ports[0]); - return pathPoints.filter(function (v, i) { - return !(i < pathPoints.length - 1 && pathPoints[i + 1].node === source && v.node === source - || i > 0 && v.node === target && pathPoints[i - 1].node === target); - }); - }; - GridRouter.getRoutePath = function (route, cornerradius, arrowwidth, arrowheight) { - var result = { - routepath: 'M ' + route[0][0].x + ' ' + route[0][0].y + ' ', - arrowpath: '' - }; - if (route.length > 1) { - for (var i = 0; i < route.length; i++) { - var li = route[i]; - var x = li[1].x, y = li[1].y; - var dx = x - li[0].x; - var dy = y - li[0].y; - if (i < route.length - 1) { - if (Math.abs(dx) > 0) { - x -= dx / Math.abs(dx) * cornerradius; - } - else { - y -= dy / Math.abs(dy) * cornerradius; - } - result.routepath += 'L ' + x + ' ' + y + ' '; - var l = route[i + 1]; - var x0 = l[0].x, y0 = l[0].y; - var x1 = l[1].x; - var y1 = l[1].y; - dx = x1 - x0; - dy = y1 - y0; - var angle = GridRouter.angleBetween2Lines(li, l) < 0 ? 1 : 0; - var x2, y2; - if (Math.abs(dx) > 0) { - x2 = x0 + dx / Math.abs(dx) * cornerradius; - y2 = y0; - } - else { - x2 = x0; - y2 = y0 + dy / Math.abs(dy) * cornerradius; - } - var cx = Math.abs(x2 - x); - var cy = Math.abs(y2 - y); - result.routepath += 'A ' + cx + ' ' + cy + ' 0 0 ' + angle + ' ' + x2 + ' ' + y2 + ' '; - } - else { - var arrowtip = [x, y]; - var arrowcorner1, arrowcorner2; - if (Math.abs(dx) > 0) { - x -= dx / Math.abs(dx) * arrowheight; - arrowcorner1 = [x, y + arrowwidth]; - arrowcorner2 = [x, y - arrowwidth]; - } - else { - y -= dy / Math.abs(dy) * arrowheight; - arrowcorner1 = [x + arrowwidth, y]; - arrowcorner2 = [x - arrowwidth, y]; - } - result.routepath += 'L ' + x + ' ' + y + ' '; - if (arrowheight > 0) { - result.arrowpath = 'M ' + arrowtip[0] + ' ' + arrowtip[1] + ' L ' + arrowcorner1[0] + ' ' + arrowcorner1[1] - + ' L ' + arrowcorner2[0] + ' ' + arrowcorner2[1]; - } - } - } - } - else { - var li = route[0]; - var x = li[1].x, y = li[1].y; - var dx = x - li[0].x; - var dy = y - li[0].y; - var arrowtip = [x, y]; - var arrowcorner1, arrowcorner2; - if (Math.abs(dx) > 0) { - x -= dx / Math.abs(dx) * arrowheight; - arrowcorner1 = [x, y + arrowwidth]; - arrowcorner2 = [x, y - arrowwidth]; - } - else { - y -= dy / Math.abs(dy) * arrowheight; - arrowcorner1 = [x + arrowwidth, y]; - arrowcorner2 = [x - arrowwidth, y]; - } - result.routepath += 'L ' + x + ' ' + y + ' '; - if (arrowheight > 0) { - result.arrowpath = 'M ' + arrowtip[0] + ' ' + arrowtip[1] + ' L ' + arrowcorner1[0] + ' ' + arrowcorner1[1] - + ' L ' + arrowcorner2[0] + ' ' + arrowcorner2[1]; - } - } - return result; - }; - return GridRouter; -}()); -var GridRouter_1 = GridRouter; - - -var gridrouter = /*#__PURE__*/Object.defineProperty({ - NodeWrapper: NodeWrapper_1, - Vert: Vert_1, - LongestCommonSubsequence: LongestCommonSubsequence_1, - GridRouter: GridRouter_1 -}, '__esModule', {value: true}); - -var Link3D = (function () { - function Link3D(source, target) { - this.source = source; - this.target = target; - } - Link3D.prototype.actualLength = function (x) { - var _this = this; - return Math.sqrt(x.reduce(function (c, v) { - var dx = v[_this.target] - v[_this.source]; - return c + dx * dx; - }, 0)); - }; - return Link3D; -}()); -var Link3D_1 = Link3D; -var Node3D = (function () { - function Node3D(x, y, z) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - if (z === void 0) { z = 0; } - this.x = x; - this.y = y; - this.z = z; - } - return Node3D; -}()); -var Node3D_1 = Node3D; -var Layout3D = (function () { - function Layout3D(nodes, links, idealLinkLength) { - var _this = this; - if (idealLinkLength === void 0) { idealLinkLength = 1; } - this.nodes = nodes; - this.links = links; - this.idealLinkLength = idealLinkLength; - this.constraints = null; - this.useJaccardLinkLengths = true; - this.result = new Array(Layout3D.k); - for (var i = 0; i < Layout3D.k; ++i) { - this.result[i] = new Array(nodes.length); - } - nodes.forEach(function (v, i) { - for (var _i = 0, _a = Layout3D.dims; _i < _a.length; _i++) { - var dim = _a[_i]; - if (typeof v[dim] == 'undefined') - v[dim] = Math.random(); - } - _this.result[0][i] = v.x; - _this.result[1][i] = v.y; - _this.result[2][i] = v.z; - }); - } - Layout3D.prototype.linkLength = function (l) { - return l.actualLength(this.result); - }; - Layout3D.prototype.start = function (iterations) { - var _this = this; - if (iterations === void 0) { iterations = 100; } - var n = this.nodes.length; - var linkAccessor = new LinkAccessor(); - if (this.useJaccardLinkLengths) - linklengths.jaccardLinkLengths(this.links, linkAccessor, 1.5); - this.links.forEach(function (e) { return e.length *= _this.idealLinkLength; }); - var distanceMatrix = (new shortestpaths.Calculator(n, this.links, function (e) { return e.source; }, function (e) { return e.target; }, function (e) { return e.length; })).DistanceMatrix(); - var D = descent.Descent.createSquareMatrix(n, function (i, j) { return distanceMatrix[i][j]; }); - var G = descent.Descent.createSquareMatrix(n, function () { return 2; }); - this.links.forEach(function (_a) { - var source = _a.source, target = _a.target; - return G[source][target] = G[target][source] = 1; - }); - this.descent = new descent.Descent(this.result, D); - this.descent.threshold = 1e-3; - this.descent.G = G; - if (this.constraints) - this.descent.project = new rectangle.Projection(this.nodes, null, null, this.constraints).projectFunctions(); - for (var i = 0; i < this.nodes.length; i++) { - var v = this.nodes[i]; - if (v.fixed) { - this.descent.locks.add(i, [v.x, v.y, v.z]); - } - } - this.descent.run(iterations); - return this; - }; - Layout3D.prototype.tick = function () { - this.descent.locks.clear(); - for (var i = 0; i < this.nodes.length; i++) { - var v = this.nodes[i]; - if (v.fixed) { - this.descent.locks.add(i, [v.x, v.y, v.z]); - } - } - return this.descent.rungeKutta(); - }; - Layout3D.dims = ['x', 'y', 'z']; - Layout3D.k = Layout3D.dims.length; - return Layout3D; -}()); -var Layout3D_1 = Layout3D; -var LinkAccessor = (function () { - function LinkAccessor() { - } - LinkAccessor.prototype.getSourceIndex = function (e) { return e.source; }; - LinkAccessor.prototype.getTargetIndex = function (e) { return e.target; }; - LinkAccessor.prototype.getLength = function (e) { return e.length; }; - LinkAccessor.prototype.setLength = function (e, l) { e.length = l; }; - return LinkAccessor; -}()); - - -var layout3d = /*#__PURE__*/Object.defineProperty({ - Link3D: Link3D_1, - Node3D: Node3D_1, - Layout3D: Layout3D_1 -}, '__esModule', {value: true}); - -function gridify(pgLayout, nudgeGap, margin, groupMargin) { - pgLayout.cola.start(0, 0, 0, 10, false); - var gridrouter = route(pgLayout.cola.nodes(), pgLayout.cola.groups(), margin, groupMargin); - return gridrouter.routeEdges(pgLayout.powerGraph.powerEdges, nudgeGap, function (e) { return e.source.routerNode.id; }, function (e) { return e.target.routerNode.id; }); -} -var gridify_1 = gridify; -function route(nodes, groups, margin, groupMargin) { - nodes.forEach(function (d) { - d.routerNode = { - name: d.name, - bounds: d.bounds.inflate(-margin) - }; - }); - groups.forEach(function (d) { - d.routerNode = { - bounds: d.bounds.inflate(-groupMargin), - children: (typeof d.groups !== 'undefined' ? d.groups.map(function (c) { return nodes.length + c.id; }) : []) - .concat(typeof d.leaves !== 'undefined' ? d.leaves.map(function (c) { return c.index; }) : []) - }; - }); - var gridRouterNodes = nodes.concat(groups).map(function (d, i) { - d.routerNode.id = i; - return d.routerNode; - }); - return new gridrouter.GridRouter(gridRouterNodes, { - getChildren: function (v) { return v.children; }, - getBounds: function (v) { return v.bounds; } - }, margin - groupMargin); -} -function powerGraphGridLayout(graph, size, grouppadding) { - var powerGraph; - graph.nodes.forEach(function (v, i) { return v.index = i; }); - new layout$1.Layout() - .avoidOverlaps(false) - .nodes(graph.nodes) - .links(graph.links) - .powerGraphGroups(function (d) { - powerGraph = d; - powerGraph.groups.forEach(function (v) { return v.padding = grouppadding; }); - }); - var n = graph.nodes.length; - var edges = []; - var vs = graph.nodes.slice(0); - vs.forEach(function (v, i) { return v.index = i; }); - powerGraph.groups.forEach(function (g) { - var sourceInd = g.index = g.id + n; - vs.push(g); - if (typeof g.leaves !== 'undefined') - g.leaves.forEach(function (v) { return edges.push({ source: sourceInd, target: v.index }); }); - if (typeof g.groups !== 'undefined') - g.groups.forEach(function (gg) { return edges.push({ source: sourceInd, target: gg.id + n }); }); - }); - powerGraph.powerEdges.forEach(function (e) { - edges.push({ source: e.source.index, target: e.target.index }); - }); - new layout$1.Layout() - .size(size) - .nodes(vs) - .links(edges) - .avoidOverlaps(false) - .linkDistance(30) - .symmetricDiffLinkLengths(5) - .convergenceThreshold(1e-4) - .start(100, 0, 0, 0, false); - return { - cola: new layout$1.Layout() - .convergenceThreshold(1e-3) - .size(size) - .avoidOverlaps(true) - .nodes(graph.nodes) - .links(graph.links) - .groupCompactness(1e-4) - .linkDistance(30) - .symmetricDiffLinkLengths(5) - .powerGraphGroups(function (d) { - powerGraph = d; - powerGraph.groups.forEach(function (v) { - v.padding = grouppadding; - }); - }).start(50, 0, 100, 0, false), - powerGraph: powerGraph - }; -} -var powerGraphGridLayout_1 = powerGraphGridLayout; - - -var batch = /*#__PURE__*/Object.defineProperty({ - gridify: gridify_1, - powerGraphGridLayout: powerGraphGridLayout_1 -}, '__esModule', {value: true}); - -var dist = createCommonjsModule(function (module, exports) { -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -Object.defineProperty(exports, "__esModule", { value: true }); -__export(adaptor_1); -__export(d3adaptor_1); -__export(descent); -__export(geom); -__export(gridrouter); -__export(handledisconnected); -__export(layout$1); -__export(layout3d); -__export(linklengths); -__export(powergraph); -__export(pqueue); -__export(rbtree); -__export(rectangle); -__export(shortestpaths); -__export(vpsc); -__export(batch); - -}); - -var cytoscapeCola = createCommonjsModule(function (module, exports) { -(function webpackUniversalModuleDefinition(root, factory) { - module.exports = factory(dist); -})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_5__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 3); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var assign = __webpack_require__(1); -var defaults = __webpack_require__(2); -var cola = __webpack_require__(5) || (typeof window !== 'undefined' ? window.cola : null); -var raf = __webpack_require__(4); -var isString = function isString(o) { - return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(''); -}; -var isNumber = function isNumber(o) { - return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(0); -}; -var isObject = function isObject(o) { - return o != null && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof({}); -}; -var isFunction = function isFunction(o) { - return o != null && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(function () {}); -}; -var nop = function nop() {}; - -var getOptVal = function getOptVal(val, ele) { - if (isFunction(val)) { - var fn = val; - return fn.apply(ele, [ele]); - } else { - return val; - } -}; - -// constructor -// options : object containing layout options -function ColaLayout(options) { - this.options = assign({}, defaults, options); -} - -// runs the layout -ColaLayout.prototype.run = function () { - var layout = this; - var options = this.options; - - layout.manuallyStopped = false; - - var cy = options.cy; // cy is automatically populated for us in the constructor - var eles = options.eles; - var nodes = eles.nodes(); - var edges = eles.edges(); - var ready = false; - - var isParent = function isParent(ele) { - return ele.isParent(); - }; - - var parentNodes = nodes.filter(isParent); - - var nonparentNodes = nodes.subtract(parentNodes); - - var bb = options.boundingBox || { x1: 0, y1: 0, w: cy.width(), h: cy.height() }; - if (bb.x2 === undefined) { - bb.x2 = bb.x1 + bb.w; - } - if (bb.w === undefined) { - bb.w = bb.x2 - bb.x1; - } - if (bb.y2 === undefined) { - bb.y2 = bb.y1 + bb.h; - } - if (bb.h === undefined) { - bb.h = bb.y2 - bb.y1; - } - - var updateNodePositions = function updateNodePositions() { - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var dimensions = node.layoutDimensions(options); - var scratch = node.scratch('cola'); - - // update node dims - if (!scratch.updatedDims) { - var padding = getOptVal(options.nodeSpacing, node); - - scratch.width = dimensions.w + 2 * padding; - scratch.height = dimensions.h + 2 * padding; - } - } - - nodes.positions(function (node) { - var scratch = node.scratch().cola; - var retPos = void 0; - - if (!node.grabbed() && nonparentNodes.contains(node)) { - retPos = { - x: bb.x1 + scratch.x, - y: bb.y1 + scratch.y - }; - - if (!isNumber(retPos.x) || !isNumber(retPos.y)) { - retPos = undefined; - } - } - - return retPos; - }); - - nodes.updateCompoundBounds(); // because the way this layout sets positions is buggy for some reason; ref #878 - - if (!ready) { - onReady(); - ready = true; - } - - if (options.fit) { - cy.fit(options.padding); - } - }; - - var onDone = function onDone() { - if (options.ungrabifyWhileSimulating) { - grabbableNodes.grabify(); - } - - cy.off('destroy', destroyHandler); - - nodes.off('grab free position', grabHandler); - nodes.off('lock unlock', lockHandler); - - // trigger layoutstop when the layout stops (e.g. finishes) - layout.one('layoutstop', options.stop); - layout.trigger({ type: 'layoutstop', layout: layout }); - }; - - var onReady = function onReady() { - // trigger layoutready when each node has had its position set at least once - layout.one('layoutready', options.ready); - layout.trigger({ type: 'layoutready', layout: layout }); - }; - - var ticksPerFrame = options.refresh; - - if (options.refresh < 0) { - ticksPerFrame = 1; - } else { - ticksPerFrame = Math.max(1, ticksPerFrame); // at least 1 - } - - var adaptor = layout.adaptor = cola.adaptor({ - trigger: function trigger(e) { - // on sim event - var TICK = cola.EventType ? cola.EventType.tick : null; - var END = cola.EventType ? cola.EventType.end : null; - - switch (e.type) { - case 'tick': - case TICK: - if (options.animate) { - updateNodePositions(); - } - break; - - case 'end': - case END: - updateNodePositions(); - if (!options.infinite) { - onDone(); - } - break; - } - }, - - kick: function kick() { - // kick off the simulation - //let skip = 0; - - var firstTick = true; - - var inftick = function inftick() { - if (layout.manuallyStopped) { - onDone(); - - return true; - } - - var ret = adaptor.tick(); - - if (!options.infinite && !firstTick) { - adaptor.convergenceThreshold(options.convergenceThreshold); - } - - firstTick = false; - - if (ret && options.infinite) { - // resume layout if done - adaptor.resume(); // resume => new kick - } - - return ret; // allow regular finish b/c of new kick - }; - - var multitick = function multitick() { - // multiple ticks in a row - var ret = void 0; - - for (var i = 0; i < ticksPerFrame && !ret; i++) { - ret = ret || inftick(); // pick up true ret vals => sim done - } - - return ret; - }; - - if (options.animate) { - var frame = function frame() { - if (multitick()) { - return; - } - - raf(frame); - }; - - raf(frame); - } else { - while (!inftick()) { - // keep going... - } - } - }, - - on: nop, // dummy; not needed - - drag: nop // not needed for our case - }); - layout.adaptor = adaptor; - - // if set no grabbing during layout - var grabbableNodes = nodes.filter(':grabbable'); - if (options.ungrabifyWhileSimulating) { - grabbableNodes.ungrabify(); - } - - var destroyHandler = void 0; - cy.one('destroy', destroyHandler = function destroyHandler() { - layout.stop(); - }); - - // handle node dragging - var grabHandler = void 0; - nodes.on('grab free position', grabHandler = function grabHandler(e) { - var node = this; - var scrCola = node.scratch().cola; - var pos = node.position(); - var nodeIsTarget = e.cyTarget === node || e.target === node; - - if (!nodeIsTarget) { - return; - } - - switch (e.type) { - case 'grab': - adaptor.dragstart(scrCola); - break; - case 'free': - adaptor.dragend(scrCola); - break; - case 'position': - // only update when different (i.e. manual .position() call or drag) so we don't loop needlessly - if (scrCola.px !== pos.x - bb.x1 || scrCola.py !== pos.y - bb.y1) { - scrCola.px = pos.x - bb.x1; - scrCola.py = pos.y - bb.y1; - } - break; - } - }); - - var lockHandler = void 0; - nodes.on('lock unlock', lockHandler = function lockHandler() { - var node = this; - var scrCola = node.scratch().cola; - - scrCola.fixed = node.locked(); - - if (node.locked()) { - adaptor.dragstart(scrCola); - } else { - adaptor.dragend(scrCola); - } - }); - - // add nodes to cola - adaptor.nodes(nonparentNodes.map(function (node, i) { - var padding = getOptVal(options.nodeSpacing, node); - var pos = node.position(); - var dimensions = node.layoutDimensions(options); - - var struct = node.scratch().cola = { - x: options.randomize && !node.locked() || pos.x === undefined ? Math.round(Math.random() * bb.w) : pos.x, - y: options.randomize && !node.locked() || pos.y === undefined ? Math.round(Math.random() * bb.h) : pos.y, - width: dimensions.w + 2 * padding, - height: dimensions.h + 2 * padding, - index: i, - fixed: node.locked() - }; - - return struct; - })); - - // the constraints to be added on nodes - var constraints = []; - - if (options.alignment) { - // then set alignment constraints - - if (options.alignment.vertical) { - var verticalAlignments = options.alignment.vertical; - verticalAlignments.forEach(function (alignment) { - var offsetsX = []; - alignment.forEach(function (nodeData) { - var node = nodeData.node; - var scrCola = node.scratch().cola; - var index = scrCola.index; - offsetsX.push({ - node: index, - offset: nodeData.offset ? nodeData.offset : 0 - }); - }); - constraints.push({ - type: 'alignment', - axis: 'x', - offsets: offsetsX - }); - }); - } - - if (options.alignment.horizontal) { - var horizontalAlignments = options.alignment.horizontal; - horizontalAlignments.forEach(function (alignment) { - var offsetsY = []; - alignment.forEach(function (nodeData) { - var node = nodeData.node; - var scrCola = node.scratch().cola; - var index = scrCola.index; - offsetsY.push({ - node: index, - offset: nodeData.offset ? nodeData.offset : 0 - }); - }); - constraints.push({ - type: 'alignment', - axis: 'y', - offsets: offsetsY - }); - }); - } - } - - // if gapInequalities variable is set add each inequality constraint to list of constraints - if (options.gapInequalities) { - options.gapInequalities.forEach(function (inequality) { - - // for the constraints to be passed to cola layout adaptor use indices of nodes, - // not the nodes themselves - var leftIndex = inequality.left.scratch().cola.index; - var rightIndex = inequality.right.scratch().cola.index; - - constraints.push({ - axis: inequality.axis, - left: leftIndex, - right: rightIndex, - gap: inequality.gap, - equality: inequality.equality - }); - }); - } - - // add constraints if any - if (constraints.length > 0) { - adaptor.constraints(constraints); - } - - // add compound nodes to cola - adaptor.groups(parentNodes.map(function (node, i) { - // add basic group incl leaf nodes - var optPadding = getOptVal(options.nodeSpacing, node); - var getPadding = function getPadding(d) { - return parseFloat(node.style('padding-' + d)); - }; - - var pleft = getPadding('left') + optPadding; - var pright = getPadding('right') + optPadding; - var ptop = getPadding('top') + optPadding; - var pbottom = getPadding('bottom') + optPadding; - - node.scratch().cola = { - index: i, - - padding: Math.max(pleft, pright, ptop, pbottom), - - // leaves should only contain direct descendants (children), - // not the leaves of nested compound nodes or any nodes that are compounds themselves - leaves: node.children().intersection(nonparentNodes).map(function (child) { - return child[0].scratch().cola.index; - }), - - fixed: node.locked() - }; - - return node; - }).map(function (node) { - // add subgroups - node.scratch().cola.groups = node.children().intersection(parentNodes).map(function (child) { - return child.scratch().cola.index; - }); - - return node.scratch().cola; - })); - - // get the edge length setting mechanism - var length = void 0; - var lengthFnName = void 0; - if (options.edgeLength != null) { - length = options.edgeLength; - lengthFnName = 'linkDistance'; - } else if (options.edgeSymDiffLength != null) { - length = options.edgeSymDiffLength; - lengthFnName = 'symmetricDiffLinkLengths'; - } else if (options.edgeJaccardLength != null) { - length = options.edgeJaccardLength; - lengthFnName = 'jaccardLinkLengths'; - } else { - length = 100; - lengthFnName = 'linkDistance'; - } - - var lengthGetter = function lengthGetter(link) { - return link.calcLength; - }; - - // add the edges to cola - adaptor.links(edges.stdFilter(function (edge) { - return nonparentNodes.contains(edge.source()) && nonparentNodes.contains(edge.target()); - }).map(function (edge) { - var c = edge.scratch().cola = { - source: edge.source()[0].scratch().cola.index, - target: edge.target()[0].scratch().cola.index - }; - - if (length != null) { - c.calcLength = getOptVal(length, edge); - } - - return c; - })); - - adaptor.size([bb.w, bb.h]); - - if (length != null) { - adaptor[lengthFnName](lengthGetter); - } - - // set the flow of cola - if (options.flow) { - var flow = void 0; - var defAxis = 'y'; - var defMinSep = 50; - - if (isString(options.flow)) { - flow = { - axis: options.flow, - minSeparation: defMinSep - }; - } else if (isNumber(options.flow)) { - flow = { - axis: defAxis, - minSeparation: options.flow - }; - } else if (isObject(options.flow)) { - flow = options.flow; - - flow.axis = flow.axis || defAxis; - flow.minSeparation = flow.minSeparation != null ? flow.minSeparation : defMinSep; - } else { - // e.g. options.flow: true - flow = { - axis: defAxis, - minSeparation: defMinSep - }; - } - - adaptor.flowLayout(flow.axis, flow.minSeparation); - } - - layout.trigger({ type: 'layoutstart', layout: layout }); - - adaptor.avoidOverlaps(options.avoidOverlap).handleDisconnected(options.handleDisconnected).start(options.unconstrIter, options.userConstIter, options.allConstIter, undefined, // gridSnapIterations = 0 - undefined, // keepRunning = true - options.centerGraph); - - if (!options.infinite) { - setTimeout(function () { - if (!layout.manuallyStopped) { - adaptor.stop(); - } - }, options.maxSimulationTime); - } - - return this; // chaining -}; - -// called on continuous layouts to stop them before they finish -ColaLayout.prototype.stop = function () { - if (this.adaptor) { - this.manuallyStopped = true; - this.adaptor.stop(); - } - - return this; // chaining -}; - -module.exports = ColaLayout; - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - -// Simple, internal Object.assign() polyfill for options objects etc. - -module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { - for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - srcs[_key - 1] = arguments[_key]; - } - - srcs.filter(function (src) { - return src != null; - }).forEach(function (src) { - Object.keys(src).forEach(function (k) { - return tgt[k] = src[k]; - }); - }); - - return tgt; -}; - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - -// default layout options -var defaults = { - animate: true, // whether to show the layout as it's running - refresh: 1, // number of ticks per frame; higher is faster but more jerky - maxSimulationTime: 4000, // max length in ms to run the layout - ungrabifyWhileSimulating: false, // so you can't drag nodes during layout - fit: true, // on every layout reposition of nodes, fit the viewport - padding: 30, // padding around the simulation - boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - nodeDimensionsIncludeLabels: false, // whether labels should be included in determining the space used by a node - - // layout event callbacks - ready: function ready() {}, // on layoutready - stop: function stop() {}, // on layoutstop - - // positioning options - randomize: false, // use random node positions at beginning of layout - avoidOverlap: true, // if true, prevents overlap of node bounding boxes - handleDisconnected: true, // if true, avoids disconnected components from overlapping - convergenceThreshold: 0.01, // when the alpha value (system energy) falls below this value, the layout stops - nodeSpacing: function nodeSpacing(node) { - return 10; - }, // extra spacing around nodes - flow: undefined, // use DAG/tree flow layout if specified, e.g. { axis: 'y', minSeparation: 30 } - alignment: undefined, // relative alignment constraints on nodes, e.g. function( node ){ return { x: 0, y: 1 } } - gapInequalities: undefined, // list of inequality constraints for the gap between the nodes, e.g. [{"axis":"y", "left":node1, "right":node2, "gap":25}] - centerGraph: true, // adjusts the node positions initially to center the graph (pass false if you want to start the layout from the current position) - - - // different methods of specifying edge length - // each can be a constant numerical value or a function like `function( edge ){ return 2; }` - edgeLength: undefined, // sets edge length directly in simulation - edgeSymDiffLength: undefined, // symmetric diff edge length in simulation - edgeJaccardLength: undefined, // jaccard edge length in simulation - - // iterations of cola algorithm; uses default values on undefined - unconstrIter: undefined, // unconstrained initial layout iterations - userConstIter: undefined, // initial layout iterations with user-specified constraints - allConstIter: undefined, // initial layout iterations with all constraints including non-overlap - - // infinite layout options - infinite: false // overrides all other options for a forces-all-the-time mode -}; - -module.exports = defaults; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - - -var impl = __webpack_require__(0); - -// registers the extension on a cytoscape lib ref -var register = function register(cytoscape) { - if (!cytoscape) { - return; - } // can't register if cytoscape unspecified - - cytoscape('layout', 'cola', impl); // register with cytoscape.js -}; - -if (typeof cytoscape !== 'undefined') { - // expose to global cytoscape (i.e. window.cytoscape) - register(cytoscape); -} - -module.exports = register; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var raf = void 0; - -if ((typeof window === "undefined" ? "undefined" : _typeof(window)) !== ( "undefined" )) { - raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (fn) { - return setTimeout(fn, 16); - }; -} else { - // if not available, all you get is immediate calls - raf = function raf(cb) { - cb(); - }; -} - -module.exports = raf; - -/***/ }), -/* 5 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE_5__; - -/***/ }) -/******/ ]); -}); -}); - -var cola = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeCola); - -var layoutBase = createCommonjsModule(function (module, exports) { -(function webpackUniversalModuleDefinition(root, factory) { - module.exports = factory(); -})(commonjsGlobal, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 26); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - -function LayoutConstants() {} - -/** - * Layout Quality: 0:draft, 1:default, 2:proof - */ -LayoutConstants.QUALITY = 1; - -/** - * Default parameters - */ -LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED = false; -LayoutConstants.DEFAULT_INCREMENTAL = false; -LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT = true; -LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT = false; -LayoutConstants.DEFAULT_ANIMATION_PERIOD = 50; -LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = false; - -// ----------------------------------------------------------------------------- -// Section: General other constants -// ----------------------------------------------------------------------------- -/* - * Margins of a graph to be applied on bouding rectangle of its contents. We - * assume margins on all four sides to be uniform. - */ -LayoutConstants.DEFAULT_GRAPH_MARGIN = 15; - -/* - * Whether to consider labels in node dimensions or not - */ -LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = false; - -/* - * Default dimension of a non-compound node. - */ -LayoutConstants.SIMPLE_NODE_SIZE = 40; - -/* - * Default dimension of a non-compound node. - */ -LayoutConstants.SIMPLE_NODE_HALF_SIZE = LayoutConstants.SIMPLE_NODE_SIZE / 2; - -/* - * Empty compound node size. When a compound node is empty, its both - * dimensions should be of this value. - */ -LayoutConstants.EMPTY_COMPOUND_NODE_SIZE = 40; - -/* - * Minimum length that an edge should take during layout - */ -LayoutConstants.MIN_EDGE_LENGTH = 1; - -/* - * World boundaries that layout operates on - */ -LayoutConstants.WORLD_BOUNDARY = 1000000; - -/* - * World boundaries that random positioning can be performed with - */ -LayoutConstants.INITIAL_WORLD_BOUNDARY = LayoutConstants.WORLD_BOUNDARY / 1000; - -/* - * Coordinates of the world center - */ -LayoutConstants.WORLD_CENTER_X = 1200; -LayoutConstants.WORLD_CENTER_Y = 900; - -module.exports = LayoutConstants; - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - -var LGraphObject = __webpack_require__(2); -var IGeometry = __webpack_require__(8); -var IMath = __webpack_require__(9); - -function LEdge(source, target, vEdge) { - LGraphObject.call(this, vEdge); - - this.isOverlapingSourceAndTarget = false; - this.vGraphObject = vEdge; - this.bendpoints = []; - this.source = source; - this.target = target; -} - -LEdge.prototype = Object.create(LGraphObject.prototype); - -for (var prop in LGraphObject) { - LEdge[prop] = LGraphObject[prop]; -} - -LEdge.prototype.getSource = function () { - return this.source; -}; - -LEdge.prototype.getTarget = function () { - return this.target; -}; - -LEdge.prototype.isInterGraph = function () { - return this.isInterGraph; -}; - -LEdge.prototype.getLength = function () { - return this.length; -}; - -LEdge.prototype.isOverlapingSourceAndTarget = function () { - return this.isOverlapingSourceAndTarget; -}; - -LEdge.prototype.getBendpoints = function () { - return this.bendpoints; -}; - -LEdge.prototype.getLca = function () { - return this.lca; -}; - -LEdge.prototype.getSourceInLca = function () { - return this.sourceInLca; -}; - -LEdge.prototype.getTargetInLca = function () { - return this.targetInLca; -}; - -LEdge.prototype.getOtherEnd = function (node) { - if (this.source === node) { - return this.target; - } else if (this.target === node) { - return this.source; - } else { - throw "Node is not incident with this edge"; - } -}; - -LEdge.prototype.getOtherEndInGraph = function (node, graph) { - var otherEnd = this.getOtherEnd(node); - var root = graph.getGraphManager().getRoot(); - - while (true) { - if (otherEnd.getOwner() == graph) { - return otherEnd; - } - - if (otherEnd.getOwner() == root) { - break; - } - - otherEnd = otherEnd.getOwner().getParent(); - } - - return null; -}; - -LEdge.prototype.updateLength = function () { - var clipPointCoordinates = new Array(4); - - this.isOverlapingSourceAndTarget = IGeometry.getIntersection(this.target.getRect(), this.source.getRect(), clipPointCoordinates); - - if (!this.isOverlapingSourceAndTarget) { - this.lengthX = clipPointCoordinates[0] - clipPointCoordinates[2]; - this.lengthY = clipPointCoordinates[1] - clipPointCoordinates[3]; - - if (Math.abs(this.lengthX) < 1.0) { - this.lengthX = IMath.sign(this.lengthX); - } - - if (Math.abs(this.lengthY) < 1.0) { - this.lengthY = IMath.sign(this.lengthY); - } - - this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY); - } -}; - -LEdge.prototype.updateLengthSimple = function () { - this.lengthX = this.target.getCenterX() - this.source.getCenterX(); - this.lengthY = this.target.getCenterY() - this.source.getCenterY(); - - if (Math.abs(this.lengthX) < 1.0) { - this.lengthX = IMath.sign(this.lengthX); - } - - if (Math.abs(this.lengthY) < 1.0) { - this.lengthY = IMath.sign(this.lengthY); - } - - this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY); -}; - -module.exports = LEdge; - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - -function LGraphObject(vGraphObject) { - this.vGraphObject = vGraphObject; -} - -module.exports = LGraphObject; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - - -var LGraphObject = __webpack_require__(2); -var Integer = __webpack_require__(10); -var RectangleD = __webpack_require__(13); -var LayoutConstants = __webpack_require__(0); -var RandomSeed = __webpack_require__(16); -var PointD = __webpack_require__(4); - -function LNode(gm, loc, size, vNode) { - //Alternative constructor 1 : LNode(LGraphManager gm, Point loc, Dimension size, Object vNode) - if (size == null && vNode == null) { - vNode = loc; - } - - LGraphObject.call(this, vNode); - - //Alternative constructor 2 : LNode(Layout layout, Object vNode) - if (gm.graphManager != null) gm = gm.graphManager; - - this.estimatedSize = Integer.MIN_VALUE; - this.inclusionTreeDepth = Integer.MAX_VALUE; - this.vGraphObject = vNode; - this.edges = []; - this.graphManager = gm; - - if (size != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size.width, size.height);else this.rect = new RectangleD(); -} - -LNode.prototype = Object.create(LGraphObject.prototype); -for (var prop in LGraphObject) { - LNode[prop] = LGraphObject[prop]; -} - -LNode.prototype.getEdges = function () { - return this.edges; -}; - -LNode.prototype.getChild = function () { - return this.child; -}; - -LNode.prototype.getOwner = function () { - // if (this.owner != null) { - // if (!(this.owner == null || this.owner.getNodes().indexOf(this) > -1)) { - // throw "assert failed"; - // } - // } - - return this.owner; -}; - -LNode.prototype.getWidth = function () { - return this.rect.width; -}; - -LNode.prototype.setWidth = function (width) { - this.rect.width = width; -}; - -LNode.prototype.getHeight = function () { - return this.rect.height; -}; - -LNode.prototype.setHeight = function (height) { - this.rect.height = height; -}; - -LNode.prototype.getCenterX = function () { - return this.rect.x + this.rect.width / 2; -}; - -LNode.prototype.getCenterY = function () { - return this.rect.y + this.rect.height / 2; -}; - -LNode.prototype.getCenter = function () { - return new PointD(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2); -}; - -LNode.prototype.getLocation = function () { - return new PointD(this.rect.x, this.rect.y); -}; - -LNode.prototype.getRect = function () { - return this.rect; -}; - -LNode.prototype.getDiagonal = function () { - return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height); -}; - -/** - * This method returns half the diagonal length of this node. - */ -LNode.prototype.getHalfTheDiagonal = function () { - return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2; -}; - -LNode.prototype.setRect = function (upperLeft, dimension) { - this.rect.x = upperLeft.x; - this.rect.y = upperLeft.y; - this.rect.width = dimension.width; - this.rect.height = dimension.height; -}; - -LNode.prototype.setCenter = function (cx, cy) { - this.rect.x = cx - this.rect.width / 2; - this.rect.y = cy - this.rect.height / 2; -}; - -LNode.prototype.setLocation = function (x, y) { - this.rect.x = x; - this.rect.y = y; -}; - -LNode.prototype.moveBy = function (dx, dy) { - this.rect.x += dx; - this.rect.y += dy; -}; - -LNode.prototype.getEdgeListToNode = function (to) { - var edgeList = []; - var self = this; - - self.edges.forEach(function (edge) { - - if (edge.target == to) { - if (edge.source != self) throw "Incorrect edge source!"; - - edgeList.push(edge); - } - }); - - return edgeList; -}; - -LNode.prototype.getEdgesBetween = function (other) { - var edgeList = []; - - var self = this; - self.edges.forEach(function (edge) { - - if (!(edge.source == self || edge.target == self)) throw "Incorrect edge source and/or target"; - - if (edge.target == other || edge.source == other) { - edgeList.push(edge); - } - }); - - return edgeList; -}; - -LNode.prototype.getNeighborsList = function () { - var neighbors = new Set(); - - var self = this; - self.edges.forEach(function (edge) { - - if (edge.source == self) { - neighbors.add(edge.target); - } else { - if (edge.target != self) { - throw "Incorrect incidency!"; - } - - neighbors.add(edge.source); - } - }); - - return neighbors; -}; - -LNode.prototype.withChildren = function () { - var withNeighborsList = new Set(); - var childNode; - var children; - - withNeighborsList.add(this); - - if (this.child != null) { - var nodes = this.child.getNodes(); - for (var i = 0; i < nodes.length; i++) { - childNode = nodes[i]; - children = childNode.withChildren(); - children.forEach(function (node) { - withNeighborsList.add(node); - }); - } - } - - return withNeighborsList; -}; - -LNode.prototype.getNoOfChildren = function () { - var noOfChildren = 0; - var childNode; - - if (this.child == null) { - noOfChildren = 1; - } else { - var nodes = this.child.getNodes(); - for (var i = 0; i < nodes.length; i++) { - childNode = nodes[i]; - - noOfChildren += childNode.getNoOfChildren(); - } - } - - if (noOfChildren == 0) { - noOfChildren = 1; - } - return noOfChildren; -}; - -LNode.prototype.getEstimatedSize = function () { - if (this.estimatedSize == Integer.MIN_VALUE) { - throw "assert failed"; - } - return this.estimatedSize; -}; - -LNode.prototype.calcEstimatedSize = function () { - if (this.child == null) { - return this.estimatedSize = (this.rect.width + this.rect.height) / 2; - } else { - this.estimatedSize = this.child.calcEstimatedSize(); - this.rect.width = this.estimatedSize; - this.rect.height = this.estimatedSize; - - return this.estimatedSize; - } -}; - -LNode.prototype.scatter = function () { - var randomCenterX; - var randomCenterY; - - var minX = -LayoutConstants.INITIAL_WORLD_BOUNDARY; - var maxX = LayoutConstants.INITIAL_WORLD_BOUNDARY; - randomCenterX = LayoutConstants.WORLD_CENTER_X + RandomSeed.nextDouble() * (maxX - minX) + minX; - - var minY = -LayoutConstants.INITIAL_WORLD_BOUNDARY; - var maxY = LayoutConstants.INITIAL_WORLD_BOUNDARY; - randomCenterY = LayoutConstants.WORLD_CENTER_Y + RandomSeed.nextDouble() * (maxY - minY) + minY; - - this.rect.x = randomCenterX; - this.rect.y = randomCenterY; -}; - -LNode.prototype.updateBounds = function () { - if (this.getChild() == null) { - throw "assert failed"; - } - if (this.getChild().getNodes().length != 0) { - // wrap the children nodes by re-arranging the boundaries - var childGraph = this.getChild(); - childGraph.updateBounds(true); - - this.rect.x = childGraph.getLeft(); - this.rect.y = childGraph.getTop(); - - this.setWidth(childGraph.getRight() - childGraph.getLeft()); - this.setHeight(childGraph.getBottom() - childGraph.getTop()); - - // Update compound bounds considering its label properties - if (LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS) { - - var width = childGraph.getRight() - childGraph.getLeft(); - var height = childGraph.getBottom() - childGraph.getTop(); - - if (this.labelWidth > width) { - this.rect.x -= (this.labelWidth - width) / 2; - this.setWidth(this.labelWidth); - } - - if (this.labelHeight > height) { - if (this.labelPos == "center") { - this.rect.y -= (this.labelHeight - height) / 2; - } else if (this.labelPos == "top") { - this.rect.y -= this.labelHeight - height; - } - this.setHeight(this.labelHeight); - } - } - } -}; - -LNode.prototype.getInclusionTreeDepth = function () { - if (this.inclusionTreeDepth == Integer.MAX_VALUE) { - throw "assert failed"; - } - return this.inclusionTreeDepth; -}; - -LNode.prototype.transform = function (trans) { - var left = this.rect.x; - - if (left > LayoutConstants.WORLD_BOUNDARY) { - left = LayoutConstants.WORLD_BOUNDARY; - } else if (left < -LayoutConstants.WORLD_BOUNDARY) { - left = -LayoutConstants.WORLD_BOUNDARY; - } - - var top = this.rect.y; - - if (top > LayoutConstants.WORLD_BOUNDARY) { - top = LayoutConstants.WORLD_BOUNDARY; - } else if (top < -LayoutConstants.WORLD_BOUNDARY) { - top = -LayoutConstants.WORLD_BOUNDARY; - } - - var leftTop = new PointD(left, top); - var vLeftTop = trans.inverseTransformPoint(leftTop); - - this.setLocation(vLeftTop.x, vLeftTop.y); -}; - -LNode.prototype.getLeft = function () { - return this.rect.x; -}; - -LNode.prototype.getRight = function () { - return this.rect.x + this.rect.width; -}; - -LNode.prototype.getTop = function () { - return this.rect.y; -}; - -LNode.prototype.getBottom = function () { - return this.rect.y + this.rect.height; -}; - -LNode.prototype.getParent = function () { - if (this.owner == null) { - return null; - } - - return this.owner.getParent(); -}; - -module.exports = LNode; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - - -function PointD(x, y) { - if (x == null && y == null) { - this.x = 0; - this.y = 0; - } else { - this.x = x; - this.y = y; - } -} - -PointD.prototype.getX = function () { - return this.x; -}; - -PointD.prototype.getY = function () { - return this.y; -}; - -PointD.prototype.setX = function (x) { - this.x = x; -}; - -PointD.prototype.setY = function (y) { - this.y = y; -}; - -PointD.prototype.getDifference = function (pt) { - return new DimensionD(this.x - pt.x, this.y - pt.y); -}; - -PointD.prototype.getCopy = function () { - return new PointD(this.x, this.y); -}; - -PointD.prototype.translate = function (dim) { - this.x += dim.width; - this.y += dim.height; - return this; -}; - -module.exports = PointD; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - -var LGraphObject = __webpack_require__(2); -var Integer = __webpack_require__(10); -var LayoutConstants = __webpack_require__(0); -var LGraphManager = __webpack_require__(6); -var LNode = __webpack_require__(3); -var LEdge = __webpack_require__(1); -var RectangleD = __webpack_require__(13); -var Point = __webpack_require__(12); -var LinkedList = __webpack_require__(11); - -function LGraph(parent, obj2, vGraph) { - LGraphObject.call(this, vGraph); - this.estimatedSize = Integer.MIN_VALUE; - this.margin = LayoutConstants.DEFAULT_GRAPH_MARGIN; - this.edges = []; - this.nodes = []; - this.isConnected = false; - this.parent = parent; - - if (obj2 != null && obj2 instanceof LGraphManager) { - this.graphManager = obj2; - } else if (obj2 != null && obj2 instanceof Layout) { - this.graphManager = obj2.graphManager; - } -} - -LGraph.prototype = Object.create(LGraphObject.prototype); -for (var prop in LGraphObject) { - LGraph[prop] = LGraphObject[prop]; -} - -LGraph.prototype.getNodes = function () { - return this.nodes; -}; - -LGraph.prototype.getEdges = function () { - return this.edges; -}; - -LGraph.prototype.getGraphManager = function () { - return this.graphManager; -}; - -LGraph.prototype.getParent = function () { - return this.parent; -}; - -LGraph.prototype.getLeft = function () { - return this.left; -}; - -LGraph.prototype.getRight = function () { - return this.right; -}; - -LGraph.prototype.getTop = function () { - return this.top; -}; - -LGraph.prototype.getBottom = function () { - return this.bottom; -}; - -LGraph.prototype.isConnected = function () { - return this.isConnected; -}; - -LGraph.prototype.add = function (obj1, sourceNode, targetNode) { - if (sourceNode == null && targetNode == null) { - var newNode = obj1; - if (this.graphManager == null) { - throw "Graph has no graph mgr!"; - } - if (this.getNodes().indexOf(newNode) > -1) { - throw "Node already in graph!"; - } - newNode.owner = this; - this.getNodes().push(newNode); - - return newNode; - } else { - var newEdge = obj1; - if (!(this.getNodes().indexOf(sourceNode) > -1 && this.getNodes().indexOf(targetNode) > -1)) { - throw "Source or target not in graph!"; - } - - if (!(sourceNode.owner == targetNode.owner && sourceNode.owner == this)) { - throw "Both owners must be this graph!"; - } - - if (sourceNode.owner != targetNode.owner) { - return null; - } - - // set source and target - newEdge.source = sourceNode; - newEdge.target = targetNode; - - // set as intra-graph edge - newEdge.isInterGraph = false; - - // add to graph edge list - this.getEdges().push(newEdge); - - // add to incidency lists - sourceNode.edges.push(newEdge); - - if (targetNode != sourceNode) { - targetNode.edges.push(newEdge); - } - - return newEdge; - } -}; - -LGraph.prototype.remove = function (obj) { - var node = obj; - if (obj instanceof LNode) { - if (node == null) { - throw "Node is null!"; - } - if (!(node.owner != null && node.owner == this)) { - throw "Owner graph is invalid!"; - } - if (this.graphManager == null) { - throw "Owner graph manager is invalid!"; - } - // remove incident edges first (make a copy to do it safely) - var edgesToBeRemoved = node.edges.slice(); - var edge; - var s = edgesToBeRemoved.length; - for (var i = 0; i < s; i++) { - edge = edgesToBeRemoved[i]; - - if (edge.isInterGraph) { - this.graphManager.remove(edge); - } else { - edge.source.owner.remove(edge); - } - } - - // now the node itself - var index = this.nodes.indexOf(node); - if (index == -1) { - throw "Node not in owner node list!"; - } - - this.nodes.splice(index, 1); - } else if (obj instanceof LEdge) { - var edge = obj; - if (edge == null) { - throw "Edge is null!"; - } - if (!(edge.source != null && edge.target != null)) { - throw "Source and/or target is null!"; - } - if (!(edge.source.owner != null && edge.target.owner != null && edge.source.owner == this && edge.target.owner == this)) { - throw "Source and/or target owner is invalid!"; - } - - var sourceIndex = edge.source.edges.indexOf(edge); - var targetIndex = edge.target.edges.indexOf(edge); - if (!(sourceIndex > -1 && targetIndex > -1)) { - throw "Source and/or target doesn't know this edge!"; - } - - edge.source.edges.splice(sourceIndex, 1); - - if (edge.target != edge.source) { - edge.target.edges.splice(targetIndex, 1); - } - - var index = edge.source.owner.getEdges().indexOf(edge); - if (index == -1) { - throw "Not in owner's edge list!"; - } - - edge.source.owner.getEdges().splice(index, 1); - } -}; - -LGraph.prototype.updateLeftTop = function () { - var top = Integer.MAX_VALUE; - var left = Integer.MAX_VALUE; - var nodeTop; - var nodeLeft; - var margin; - - var nodes = this.getNodes(); - var s = nodes.length; - - for (var i = 0; i < s; i++) { - var lNode = nodes[i]; - nodeTop = lNode.getTop(); - nodeLeft = lNode.getLeft(); - - if (top > nodeTop) { - top = nodeTop; - } - - if (left > nodeLeft) { - left = nodeLeft; - } - } - - // Do we have any nodes in this graph? - if (top == Integer.MAX_VALUE) { - return null; - } - - if (nodes[0].getParent().paddingLeft != undefined) { - margin = nodes[0].getParent().paddingLeft; - } else { - margin = this.margin; - } - - this.left = left - margin; - this.top = top - margin; - - // Apply the margins and return the result - return new Point(this.left, this.top); -}; - -LGraph.prototype.updateBounds = function (recursive) { - // calculate bounds - var left = Integer.MAX_VALUE; - var right = -Integer.MAX_VALUE; - var top = Integer.MAX_VALUE; - var bottom = -Integer.MAX_VALUE; - var nodeLeft; - var nodeRight; - var nodeTop; - var nodeBottom; - var margin; - - var nodes = this.nodes; - var s = nodes.length; - for (var i = 0; i < s; i++) { - var lNode = nodes[i]; - - if (recursive && lNode.child != null) { - lNode.updateBounds(); - } - nodeLeft = lNode.getLeft(); - nodeRight = lNode.getRight(); - nodeTop = lNode.getTop(); - nodeBottom = lNode.getBottom(); - - if (left > nodeLeft) { - left = nodeLeft; - } - - if (right < nodeRight) { - right = nodeRight; - } - - if (top > nodeTop) { - top = nodeTop; - } - - if (bottom < nodeBottom) { - bottom = nodeBottom; - } - } - - var boundingRect = new RectangleD(left, top, right - left, bottom - top); - if (left == Integer.MAX_VALUE) { - this.left = this.parent.getLeft(); - this.right = this.parent.getRight(); - this.top = this.parent.getTop(); - this.bottom = this.parent.getBottom(); - } - - if (nodes[0].getParent().paddingLeft != undefined) { - margin = nodes[0].getParent().paddingLeft; - } else { - margin = this.margin; - } - - this.left = boundingRect.x - margin; - this.right = boundingRect.x + boundingRect.width + margin; - this.top = boundingRect.y - margin; - this.bottom = boundingRect.y + boundingRect.height + margin; -}; - -LGraph.calculateBounds = function (nodes) { - var left = Integer.MAX_VALUE; - var right = -Integer.MAX_VALUE; - var top = Integer.MAX_VALUE; - var bottom = -Integer.MAX_VALUE; - var nodeLeft; - var nodeRight; - var nodeTop; - var nodeBottom; - - var s = nodes.length; - - for (var i = 0; i < s; i++) { - var lNode = nodes[i]; - nodeLeft = lNode.getLeft(); - nodeRight = lNode.getRight(); - nodeTop = lNode.getTop(); - nodeBottom = lNode.getBottom(); - - if (left > nodeLeft) { - left = nodeLeft; - } - - if (right < nodeRight) { - right = nodeRight; - } - - if (top > nodeTop) { - top = nodeTop; - } - - if (bottom < nodeBottom) { - bottom = nodeBottom; - } - } - - var boundingRect = new RectangleD(left, top, right - left, bottom - top); - - return boundingRect; -}; - -LGraph.prototype.getInclusionTreeDepth = function () { - if (this == this.graphManager.getRoot()) { - return 1; - } else { - return this.parent.getInclusionTreeDepth(); - } -}; - -LGraph.prototype.getEstimatedSize = function () { - if (this.estimatedSize == Integer.MIN_VALUE) { - throw "assert failed"; - } - return this.estimatedSize; -}; - -LGraph.prototype.calcEstimatedSize = function () { - var size = 0; - var nodes = this.nodes; - var s = nodes.length; - - for (var i = 0; i < s; i++) { - var lNode = nodes[i]; - size += lNode.calcEstimatedSize(); - } - - if (size == 0) { - this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE; - } else { - this.estimatedSize = size / Math.sqrt(this.nodes.length); - } - - return this.estimatedSize; -}; - -LGraph.prototype.updateConnected = function () { - var self = this; - if (this.nodes.length == 0) { - this.isConnected = true; - return; - } - - var queue = new LinkedList(); - var visited = new Set(); - var currentNode = this.nodes[0]; - var neighborEdges; - var currentNeighbor; - var childrenOfNode = currentNode.withChildren(); - childrenOfNode.forEach(function (node) { - queue.push(node); - visited.add(node); - }); - - while (queue.length !== 0) { - currentNode = queue.shift(); - - // Traverse all neighbors of this node - neighborEdges = currentNode.getEdges(); - var size = neighborEdges.length; - for (var i = 0; i < size; i++) { - var neighborEdge = neighborEdges[i]; - currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this); - - // Add unvisited neighbors to the list to visit - if (currentNeighbor != null && !visited.has(currentNeighbor)) { - var childrenOfNeighbor = currentNeighbor.withChildren(); - - childrenOfNeighbor.forEach(function (node) { - queue.push(node); - visited.add(node); - }); - } - } - } - - this.isConnected = false; - - if (visited.size >= this.nodes.length) { - var noOfVisitedInThisGraph = 0; - - visited.forEach(function (visitedNode) { - if (visitedNode.owner == self) { - noOfVisitedInThisGraph++; - } - }); - - if (noOfVisitedInThisGraph == this.nodes.length) { - this.isConnected = true; - } - } -}; - -module.exports = LGraph; - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - - -var LGraph; -var LEdge = __webpack_require__(1); - -function LGraphManager(layout) { - LGraph = __webpack_require__(5); // It may be better to initilize this out of this function but it gives an error (Right-hand side of 'instanceof' is not callable) now. - this.layout = layout; - - this.graphs = []; - this.edges = []; -} - -LGraphManager.prototype.addRoot = function () { - var ngraph = this.layout.newGraph(); - var nnode = this.layout.newNode(null); - var root = this.add(ngraph, nnode); - this.setRootGraph(root); - return this.rootGraph; -}; - -LGraphManager.prototype.add = function (newGraph, parentNode, newEdge, sourceNode, targetNode) { - //there are just 2 parameters are passed then it adds an LGraph else it adds an LEdge - if (newEdge == null && sourceNode == null && targetNode == null) { - if (newGraph == null) { - throw "Graph is null!"; - } - if (parentNode == null) { - throw "Parent node is null!"; - } - if (this.graphs.indexOf(newGraph) > -1) { - throw "Graph already in this graph mgr!"; - } - - this.graphs.push(newGraph); - - if (newGraph.parent != null) { - throw "Already has a parent!"; - } - if (parentNode.child != null) { - throw "Already has a child!"; - } - - newGraph.parent = parentNode; - parentNode.child = newGraph; - - return newGraph; - } else { - //change the order of the parameters - targetNode = newEdge; - sourceNode = parentNode; - newEdge = newGraph; - var sourceGraph = sourceNode.getOwner(); - var targetGraph = targetNode.getOwner(); - - if (!(sourceGraph != null && sourceGraph.getGraphManager() == this)) { - throw "Source not in this graph mgr!"; - } - if (!(targetGraph != null && targetGraph.getGraphManager() == this)) { - throw "Target not in this graph mgr!"; - } - - if (sourceGraph == targetGraph) { - newEdge.isInterGraph = false; - return sourceGraph.add(newEdge, sourceNode, targetNode); - } else { - newEdge.isInterGraph = true; - - // set source and target - newEdge.source = sourceNode; - newEdge.target = targetNode; - - // add edge to inter-graph edge list - if (this.edges.indexOf(newEdge) > -1) { - throw "Edge already in inter-graph edge list!"; - } - - this.edges.push(newEdge); - - // add edge to source and target incidency lists - if (!(newEdge.source != null && newEdge.target != null)) { - throw "Edge source and/or target is null!"; - } - - if (!(newEdge.source.edges.indexOf(newEdge) == -1 && newEdge.target.edges.indexOf(newEdge) == -1)) { - throw "Edge already in source and/or target incidency list!"; - } - - newEdge.source.edges.push(newEdge); - newEdge.target.edges.push(newEdge); - - return newEdge; - } - } -}; - -LGraphManager.prototype.remove = function (lObj) { - if (lObj instanceof LGraph) { - var graph = lObj; - if (graph.getGraphManager() != this) { - throw "Graph not in this graph mgr"; - } - if (!(graph == this.rootGraph || graph.parent != null && graph.parent.graphManager == this)) { - throw "Invalid parent node!"; - } - - // first the edges (make a copy to do it safely) - var edgesToBeRemoved = []; - - edgesToBeRemoved = edgesToBeRemoved.concat(graph.getEdges()); - - var edge; - var s = edgesToBeRemoved.length; - for (var i = 0; i < s; i++) { - edge = edgesToBeRemoved[i]; - graph.remove(edge); - } - - // then the nodes (make a copy to do it safely) - var nodesToBeRemoved = []; - - nodesToBeRemoved = nodesToBeRemoved.concat(graph.getNodes()); - - var node; - s = nodesToBeRemoved.length; - for (var i = 0; i < s; i++) { - node = nodesToBeRemoved[i]; - graph.remove(node); - } - - // check if graph is the root - if (graph == this.rootGraph) { - this.setRootGraph(null); - } - - // now remove the graph itself - var index = this.graphs.indexOf(graph); - this.graphs.splice(index, 1); - - // also reset the parent of the graph - graph.parent = null; - } else if (lObj instanceof LEdge) { - edge = lObj; - if (edge == null) { - throw "Edge is null!"; - } - if (!edge.isInterGraph) { - throw "Not an inter-graph edge!"; - } - if (!(edge.source != null && edge.target != null)) { - throw "Source and/or target is null!"; - } - - // remove edge from source and target nodes' incidency lists - - if (!(edge.source.edges.indexOf(edge) != -1 && edge.target.edges.indexOf(edge) != -1)) { - throw "Source and/or target doesn't know this edge!"; - } - - var index = edge.source.edges.indexOf(edge); - edge.source.edges.splice(index, 1); - index = edge.target.edges.indexOf(edge); - edge.target.edges.splice(index, 1); - - // remove edge from owner graph manager's inter-graph edge list - - if (!(edge.source.owner != null && edge.source.owner.getGraphManager() != null)) { - throw "Edge owner graph or owner graph manager is null!"; - } - if (edge.source.owner.getGraphManager().edges.indexOf(edge) == -1) { - throw "Not in owner graph manager's edge list!"; - } - - var index = edge.source.owner.getGraphManager().edges.indexOf(edge); - edge.source.owner.getGraphManager().edges.splice(index, 1); - } -}; - -LGraphManager.prototype.updateBounds = function () { - this.rootGraph.updateBounds(true); -}; - -LGraphManager.prototype.getGraphs = function () { - return this.graphs; -}; - -LGraphManager.prototype.getAllNodes = function () { - if (this.allNodes == null) { - var nodeList = []; - var graphs = this.getGraphs(); - var s = graphs.length; - for (var i = 0; i < s; i++) { - nodeList = nodeList.concat(graphs[i].getNodes()); - } - this.allNodes = nodeList; - } - return this.allNodes; -}; - -LGraphManager.prototype.resetAllNodes = function () { - this.allNodes = null; -}; - -LGraphManager.prototype.resetAllEdges = function () { - this.allEdges = null; -}; - -LGraphManager.prototype.resetAllNodesToApplyGravitation = function () { - this.allNodesToApplyGravitation = null; -}; - -LGraphManager.prototype.getAllEdges = function () { - if (this.allEdges == null) { - var edgeList = []; - var graphs = this.getGraphs(); - graphs.length; - for (var i = 0; i < graphs.length; i++) { - edgeList = edgeList.concat(graphs[i].getEdges()); - } - - edgeList = edgeList.concat(this.edges); - - this.allEdges = edgeList; - } - return this.allEdges; -}; - -LGraphManager.prototype.getAllNodesToApplyGravitation = function () { - return this.allNodesToApplyGravitation; -}; - -LGraphManager.prototype.setAllNodesToApplyGravitation = function (nodeList) { - if (this.allNodesToApplyGravitation != null) { - throw "assert failed"; - } - - this.allNodesToApplyGravitation = nodeList; -}; - -LGraphManager.prototype.getRoot = function () { - return this.rootGraph; -}; - -LGraphManager.prototype.setRootGraph = function (graph) { - if (graph.getGraphManager() != this) { - throw "Root not in this graph mgr!"; - } - - this.rootGraph = graph; - // root graph must have a root node associated with it for convenience - if (graph.parent == null) { - graph.parent = this.layout.newNode("Root node"); - } -}; - -LGraphManager.prototype.getLayout = function () { - return this.layout; -}; - -LGraphManager.prototype.isOneAncestorOfOther = function (firstNode, secondNode) { - if (!(firstNode != null && secondNode != null)) { - throw "assert failed"; - } - - if (firstNode == secondNode) { - return true; - } - // Is second node an ancestor of the first one? - var ownerGraph = firstNode.getOwner(); - var parentNode; - - do { - parentNode = ownerGraph.getParent(); - - if (parentNode == null) { - break; - } - - if (parentNode == secondNode) { - return true; - } - - ownerGraph = parentNode.getOwner(); - if (ownerGraph == null) { - break; - } - } while (true); - // Is first node an ancestor of the second one? - ownerGraph = secondNode.getOwner(); - - do { - parentNode = ownerGraph.getParent(); - - if (parentNode == null) { - break; - } - - if (parentNode == firstNode) { - return true; - } - - ownerGraph = parentNode.getOwner(); - if (ownerGraph == null) { - break; - } - } while (true); - - return false; -}; - -LGraphManager.prototype.calcLowestCommonAncestors = function () { - var edge; - var sourceNode; - var targetNode; - var sourceAncestorGraph; - var targetAncestorGraph; - - var edges = this.getAllEdges(); - var s = edges.length; - for (var i = 0; i < s; i++) { - edge = edges[i]; - - sourceNode = edge.source; - targetNode = edge.target; - edge.lca = null; - edge.sourceInLca = sourceNode; - edge.targetInLca = targetNode; - - if (sourceNode == targetNode) { - edge.lca = sourceNode.getOwner(); - continue; - } - - sourceAncestorGraph = sourceNode.getOwner(); - - while (edge.lca == null) { - edge.targetInLca = targetNode; - targetAncestorGraph = targetNode.getOwner(); - - while (edge.lca == null) { - if (targetAncestorGraph == sourceAncestorGraph) { - edge.lca = targetAncestorGraph; - break; - } - - if (targetAncestorGraph == this.rootGraph) { - break; - } - - if (edge.lca != null) { - throw "assert failed"; - } - edge.targetInLca = targetAncestorGraph.getParent(); - targetAncestorGraph = edge.targetInLca.getOwner(); - } - - if (sourceAncestorGraph == this.rootGraph) { - break; - } - - if (edge.lca == null) { - edge.sourceInLca = sourceAncestorGraph.getParent(); - sourceAncestorGraph = edge.sourceInLca.getOwner(); - } - } - - if (edge.lca == null) { - throw "assert failed"; - } - } -}; - -LGraphManager.prototype.calcLowestCommonAncestor = function (firstNode, secondNode) { - if (firstNode == secondNode) { - return firstNode.getOwner(); - } - var firstOwnerGraph = firstNode.getOwner(); - - do { - if (firstOwnerGraph == null) { - break; - } - var secondOwnerGraph = secondNode.getOwner(); - - do { - if (secondOwnerGraph == null) { - break; - } - - if (secondOwnerGraph == firstOwnerGraph) { - return secondOwnerGraph; - } - secondOwnerGraph = secondOwnerGraph.getParent().getOwner(); - } while (true); - - firstOwnerGraph = firstOwnerGraph.getParent().getOwner(); - } while (true); - - return firstOwnerGraph; -}; - -LGraphManager.prototype.calcInclusionTreeDepths = function (graph, depth) { - if (graph == null && depth == null) { - graph = this.rootGraph; - depth = 1; - } - var node; - - var nodes = graph.getNodes(); - var s = nodes.length; - for (var i = 0; i < s; i++) { - node = nodes[i]; - node.inclusionTreeDepth = depth; - - if (node.child != null) { - this.calcInclusionTreeDepths(node.child, depth + 1); - } - } -}; - -LGraphManager.prototype.includesInvalidEdge = function () { - var edge; - - var s = this.edges.length; - for (var i = 0; i < s; i++) { - edge = this.edges[i]; - - if (this.isOneAncestorOfOther(edge.source, edge.target)) { - return true; - } - } - return false; -}; - -module.exports = LGraphManager; - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - - -var LayoutConstants = __webpack_require__(0); - -function FDLayoutConstants() {} - -//FDLayoutConstants inherits static props in LayoutConstants -for (var prop in LayoutConstants) { - FDLayoutConstants[prop] = LayoutConstants[prop]; -} - -FDLayoutConstants.MAX_ITERATIONS = 2500; - -FDLayoutConstants.DEFAULT_EDGE_LENGTH = 50; -FDLayoutConstants.DEFAULT_SPRING_STRENGTH = 0.45; -FDLayoutConstants.DEFAULT_REPULSION_STRENGTH = 4500.0; -FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = 0.4; -FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1.0; -FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8; -FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5; -FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = true; -FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = true; -FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3; -FDLayoutConstants.COOLING_ADAPTATION_FACTOR = 0.33; -FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT = 1000; -FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT = 5000; -FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100.0; -FDLayoutConstants.MAX_NODE_DISPLACEMENT = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3; -FDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0; -FDLayoutConstants.CONVERGENCE_CHECK_PERIOD = 100; -FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1; -FDLayoutConstants.MIN_EDGE_LENGTH = 1; -FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10; - -module.exports = FDLayoutConstants; - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - - -/** - * This class maintains a list of static geometry related utility methods. - * - * - * Copyright: i-Vis Research Group, Bilkent University, 2007 - present - */ - -var Point = __webpack_require__(12); - -function IGeometry() {} - -/** - * This method calculates *half* the amount in x and y directions of the two - * input rectangles needed to separate them keeping their respective - * positioning, and returns the result in the input array. An input - * separation buffer added to the amount in both directions. We assume that - * the two rectangles do intersect. - */ -IGeometry.calcSeparationAmount = function (rectA, rectB, overlapAmount, separationBuffer) { - if (!rectA.intersects(rectB)) { - throw "assert failed"; - } - - var directions = new Array(2); - - this.decideDirectionsForOverlappingNodes(rectA, rectB, directions); - - overlapAmount[0] = Math.min(rectA.getRight(), rectB.getRight()) - Math.max(rectA.x, rectB.x); - overlapAmount[1] = Math.min(rectA.getBottom(), rectB.getBottom()) - Math.max(rectA.y, rectB.y); - - // update the overlapping amounts for the following cases: - if (rectA.getX() <= rectB.getX() && rectA.getRight() >= rectB.getRight()) { - /* Case x.1: - * - * rectA - * | | - * | _________ | - * | | | | - * |________|_______|______| - * | | - * | | - * rectB - */ - overlapAmount[0] += Math.min(rectB.getX() - rectA.getX(), rectA.getRight() - rectB.getRight()); - } else if (rectB.getX() <= rectA.getX() && rectB.getRight() >= rectA.getRight()) { - /* Case x.2: - * - * rectB - * | | - * | _________ | - * | | | | - * |________|_______|______| - * | | - * | | - * rectA - */ - overlapAmount[0] += Math.min(rectA.getX() - rectB.getX(), rectB.getRight() - rectA.getRight()); - } - if (rectA.getY() <= rectB.getY() && rectA.getBottom() >= rectB.getBottom()) { - /* Case y.1: - * ________ rectA - * | - * | - * ______|____ rectB - * | | - * | | - * ______|____| - * | - * | - * |________ - * - */ - overlapAmount[1] += Math.min(rectB.getY() - rectA.getY(), rectA.getBottom() - rectB.getBottom()); - } else if (rectB.getY() <= rectA.getY() && rectB.getBottom() >= rectA.getBottom()) { - /* Case y.2: - * ________ rectB - * | - * | - * ______|____ rectA - * | | - * | | - * ______|____| - * | - * | - * |________ - * - */ - overlapAmount[1] += Math.min(rectA.getY() - rectB.getY(), rectB.getBottom() - rectA.getBottom()); - } - - // find slope of the line passes two centers - var slope = Math.abs((rectB.getCenterY() - rectA.getCenterY()) / (rectB.getCenterX() - rectA.getCenterX())); - // if centers are overlapped - if (rectB.getCenterY() === rectA.getCenterY() && rectB.getCenterX() === rectA.getCenterX()) { - // assume the slope is 1 (45 degree) - slope = 1.0; - } - - var moveByY = slope * overlapAmount[0]; - var moveByX = overlapAmount[1] / slope; - if (overlapAmount[0] < moveByX) { - moveByX = overlapAmount[0]; - } else { - moveByY = overlapAmount[1]; - } - // return half the amount so that if each rectangle is moved by these - // amounts in opposite directions, overlap will be resolved - overlapAmount[0] = -1 * directions[0] * (moveByX / 2 + separationBuffer); - overlapAmount[1] = -1 * directions[1] * (moveByY / 2 + separationBuffer); -}; - -/** - * This method decides the separation direction of overlapping nodes - * - * if directions[0] = -1, then rectA goes left - * if directions[0] = 1, then rectA goes right - * if directions[1] = -1, then rectA goes up - * if directions[1] = 1, then rectA goes down - */ -IGeometry.decideDirectionsForOverlappingNodes = function (rectA, rectB, directions) { - if (rectA.getCenterX() < rectB.getCenterX()) { - directions[0] = -1; - } else { - directions[0] = 1; - } - - if (rectA.getCenterY() < rectB.getCenterY()) { - directions[1] = -1; - } else { - directions[1] = 1; - } -}; - -/** - * This method calculates the intersection (clipping) points of the two - * input rectangles with line segment defined by the centers of these two - * rectangles. The clipping points are saved in the input double array and - * whether or not the two rectangles overlap is returned. - */ -IGeometry.getIntersection2 = function (rectA, rectB, result) { - //result[0-1] will contain clipPoint of rectA, result[2-3] will contain clipPoint of rectB - var p1x = rectA.getCenterX(); - var p1y = rectA.getCenterY(); - var p2x = rectB.getCenterX(); - var p2y = rectB.getCenterY(); - - //if two rectangles intersect, then clipping points are centers - if (rectA.intersects(rectB)) { - result[0] = p1x; - result[1] = p1y; - result[2] = p2x; - result[3] = p2y; - return true; - } - //variables for rectA - var topLeftAx = rectA.getX(); - var topLeftAy = rectA.getY(); - var topRightAx = rectA.getRight(); - var bottomLeftAx = rectA.getX(); - var bottomLeftAy = rectA.getBottom(); - var bottomRightAx = rectA.getRight(); - var halfWidthA = rectA.getWidthHalf(); - var halfHeightA = rectA.getHeightHalf(); - //variables for rectB - var topLeftBx = rectB.getX(); - var topLeftBy = rectB.getY(); - var topRightBx = rectB.getRight(); - var bottomLeftBx = rectB.getX(); - var bottomLeftBy = rectB.getBottom(); - var bottomRightBx = rectB.getRight(); - var halfWidthB = rectB.getWidthHalf(); - var halfHeightB = rectB.getHeightHalf(); - - //flag whether clipping points are found - var clipPointAFound = false; - var clipPointBFound = false; - - // line is vertical - if (p1x === p2x) { - if (p1y > p2y) { - result[0] = p1x; - result[1] = topLeftAy; - result[2] = p2x; - result[3] = bottomLeftBy; - return false; - } else if (p1y < p2y) { - result[0] = p1x; - result[1] = bottomLeftAy; - result[2] = p2x; - result[3] = topLeftBy; - return false; - } else ; - } - // line is horizontal - else if (p1y === p2y) { - if (p1x > p2x) { - result[0] = topLeftAx; - result[1] = p1y; - result[2] = topRightBx; - result[3] = p2y; - return false; - } else if (p1x < p2x) { - result[0] = topRightAx; - result[1] = p1y; - result[2] = topLeftBx; - result[3] = p2y; - return false; - } else ; - } else { - //slopes of rectA's and rectB's diagonals - var slopeA = rectA.height / rectA.width; - var slopeB = rectB.height / rectB.width; - - //slope of line between center of rectA and center of rectB - var slopePrime = (p2y - p1y) / (p2x - p1x); - var cardinalDirectionA = void 0; - var cardinalDirectionB = void 0; - var tempPointAx = void 0; - var tempPointAy = void 0; - var tempPointBx = void 0; - var tempPointBy = void 0; - - //determine whether clipping point is the corner of nodeA - if (-slopeA === slopePrime) { - if (p1x > p2x) { - result[0] = bottomLeftAx; - result[1] = bottomLeftAy; - clipPointAFound = true; - } else { - result[0] = topRightAx; - result[1] = topLeftAy; - clipPointAFound = true; - } - } else if (slopeA === slopePrime) { - if (p1x > p2x) { - result[0] = topLeftAx; - result[1] = topLeftAy; - clipPointAFound = true; - } else { - result[0] = bottomRightAx; - result[1] = bottomLeftAy; - clipPointAFound = true; - } - } - - //determine whether clipping point is the corner of nodeB - if (-slopeB === slopePrime) { - if (p2x > p1x) { - result[2] = bottomLeftBx; - result[3] = bottomLeftBy; - clipPointBFound = true; - } else { - result[2] = topRightBx; - result[3] = topLeftBy; - clipPointBFound = true; - } - } else if (slopeB === slopePrime) { - if (p2x > p1x) { - result[2] = topLeftBx; - result[3] = topLeftBy; - clipPointBFound = true; - } else { - result[2] = bottomRightBx; - result[3] = bottomLeftBy; - clipPointBFound = true; - } - } - - //if both clipping points are corners - if (clipPointAFound && clipPointBFound) { - return false; - } - - //determine Cardinal Direction of rectangles - if (p1x > p2x) { - if (p1y > p2y) { - cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 4); - cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 2); - } else { - cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 3); - cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 1); - } - } else { - if (p1y > p2y) { - cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 1); - cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 3); - } else { - cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 2); - cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 4); - } - } - //calculate clipping Point if it is not found before - if (!clipPointAFound) { - switch (cardinalDirectionA) { - case 1: - tempPointAy = topLeftAy; - tempPointAx = p1x + -halfHeightA / slopePrime; - result[0] = tempPointAx; - result[1] = tempPointAy; - break; - case 2: - tempPointAx = bottomRightAx; - tempPointAy = p1y + halfWidthA * slopePrime; - result[0] = tempPointAx; - result[1] = tempPointAy; - break; - case 3: - tempPointAy = bottomLeftAy; - tempPointAx = p1x + halfHeightA / slopePrime; - result[0] = tempPointAx; - result[1] = tempPointAy; - break; - case 4: - tempPointAx = bottomLeftAx; - tempPointAy = p1y + -halfWidthA * slopePrime; - result[0] = tempPointAx; - result[1] = tempPointAy; - break; - } - } - if (!clipPointBFound) { - switch (cardinalDirectionB) { - case 1: - tempPointBy = topLeftBy; - tempPointBx = p2x + -halfHeightB / slopePrime; - result[2] = tempPointBx; - result[3] = tempPointBy; - break; - case 2: - tempPointBx = bottomRightBx; - tempPointBy = p2y + halfWidthB * slopePrime; - result[2] = tempPointBx; - result[3] = tempPointBy; - break; - case 3: - tempPointBy = bottomLeftBy; - tempPointBx = p2x + halfHeightB / slopePrime; - result[2] = tempPointBx; - result[3] = tempPointBy; - break; - case 4: - tempPointBx = bottomLeftBx; - tempPointBy = p2y + -halfWidthB * slopePrime; - result[2] = tempPointBx; - result[3] = tempPointBy; - break; - } - } - } - return false; -}; - -/** - * This method returns in which cardinal direction does input point stays - * 1: North - * 2: East - * 3: South - * 4: West - */ -IGeometry.getCardinalDirection = function (slope, slopePrime, line) { - if (slope > slopePrime) { - return line; - } else { - return 1 + line % 4; - } -}; - -/** - * This method calculates the intersection of the two lines defined by - * point pairs (s1,s2) and (f1,f2). - */ -IGeometry.getIntersection = function (s1, s2, f1, f2) { - if (f2 == null) { - return this.getIntersection2(s1, s2, f1); - } - - var x1 = s1.x; - var y1 = s1.y; - var x2 = s2.x; - var y2 = s2.y; - var x3 = f1.x; - var y3 = f1.y; - var x4 = f2.x; - var y4 = f2.y; - var x = void 0, - y = void 0; // intersection point - var a1 = void 0, - a2 = void 0, - b1 = void 0, - b2 = void 0, - c1 = void 0, - c2 = void 0; // coefficients of line eqns. - var denom = void 0; - - a1 = y2 - y1; - b1 = x1 - x2; - c1 = x2 * y1 - x1 * y2; // { a1*x + b1*y + c1 = 0 is line 1 } - - a2 = y4 - y3; - b2 = x3 - x4; - c2 = x4 * y3 - x3 * y4; // { a2*x + b2*y + c2 = 0 is line 2 } - - denom = a1 * b2 - a2 * b1; - - if (denom === 0) { - return null; - } - - x = (b1 * c2 - b2 * c1) / denom; - y = (a2 * c1 - a1 * c2) / denom; - - return new Point(x, y); -}; - -/** - * This method finds and returns the angle of the vector from the + x-axis - * in clockwise direction (compatible w/ Java coordinate system!). - */ -IGeometry.angleOfVector = function (Cx, Cy, Nx, Ny) { - var C_angle = void 0; - - if (Cx !== Nx) { - C_angle = Math.atan((Ny - Cy) / (Nx - Cx)); - - if (Nx < Cx) { - C_angle += Math.PI; - } else if (Ny < Cy) { - C_angle += this.TWO_PI; - } - } else if (Ny < Cy) { - C_angle = this.ONE_AND_HALF_PI; // 270 degrees - } else { - C_angle = this.HALF_PI; // 90 degrees - } - - return C_angle; -}; - -/** - * This method checks whether the given two line segments (one with point - * p1 and p2, the other with point p3 and p4) intersect at a point other - * than these points. - */ -IGeometry.doIntersect = function (p1, p2, p3, p4) { - var a = p1.x; - var b = p1.y; - var c = p2.x; - var d = p2.y; - var p = p3.x; - var q = p3.y; - var r = p4.x; - var s = p4.y; - var det = (c - a) * (s - q) - (r - p) * (d - b); - - if (det === 0) { - return false; - } else { - var lambda = ((s - q) * (r - a) + (p - r) * (s - b)) / det; - var gamma = ((b - d) * (r - a) + (c - a) * (s - b)) / det; - return 0 < lambda && lambda < 1 && 0 < gamma && gamma < 1; - } -}; - -// ----------------------------------------------------------------------------- -// Section: Class Constants -// ----------------------------------------------------------------------------- -/** - * Some useful pre-calculated constants - */ -IGeometry.HALF_PI = 0.5 * Math.PI; -IGeometry.ONE_AND_HALF_PI = 1.5 * Math.PI; -IGeometry.TWO_PI = 2.0 * Math.PI; -IGeometry.THREE_PI = 3.0 * Math.PI; - -module.exports = IGeometry; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - - -function IMath() {} - -/** - * This method returns the sign of the input value. - */ -IMath.sign = function (value) { - if (value > 0) { - return 1; - } else if (value < 0) { - return -1; - } else { - return 0; - } -}; - -IMath.floor = function (value) { - return value < 0 ? Math.ceil(value) : Math.floor(value); -}; - -IMath.ceil = function (value) { - return value < 0 ? Math.floor(value) : Math.ceil(value); -}; - -module.exports = IMath; - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - - -function Integer() {} - -Integer.MAX_VALUE = 2147483647; -Integer.MIN_VALUE = -2147483648; - -module.exports = Integer; - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nodeFrom = function nodeFrom(value) { - return { value: value, next: null, prev: null }; -}; - -var add = function add(prev, node, next, list) { - if (prev !== null) { - prev.next = node; - } else { - list.head = node; - } - - if (next !== null) { - next.prev = node; - } else { - list.tail = node; - } - - node.prev = prev; - node.next = next; - - list.length++; - - return node; -}; - -var _remove = function _remove(node, list) { - var prev = node.prev, - next = node.next; - - - if (prev !== null) { - prev.next = next; - } else { - list.head = next; - } - - if (next !== null) { - next.prev = prev; - } else { - list.tail = prev; - } - - node.prev = node.next = null; - - list.length--; - - return node; -}; - -var LinkedList = function () { - function LinkedList(vals) { - var _this = this; - - _classCallCheck(this, LinkedList); - - this.length = 0; - this.head = null; - this.tail = null; - - if (vals != null) { - vals.forEach(function (v) { - return _this.push(v); - }); - } - } - - _createClass(LinkedList, [{ - key: "size", - value: function size() { - return this.length; - } - }, { - key: "insertBefore", - value: function insertBefore(val, otherNode) { - return add(otherNode.prev, nodeFrom(val), otherNode, this); - } - }, { - key: "insertAfter", - value: function insertAfter(val, otherNode) { - return add(otherNode, nodeFrom(val), otherNode.next, this); - } - }, { - key: "insertNodeBefore", - value: function insertNodeBefore(newNode, otherNode) { - return add(otherNode.prev, newNode, otherNode, this); - } - }, { - key: "insertNodeAfter", - value: function insertNodeAfter(newNode, otherNode) { - return add(otherNode, newNode, otherNode.next, this); - } - }, { - key: "push", - value: function push(val) { - return add(this.tail, nodeFrom(val), null, this); - } - }, { - key: "unshift", - value: function unshift(val) { - return add(null, nodeFrom(val), this.head, this); - } - }, { - key: "remove", - value: function remove(node) { - return _remove(node, this); - } - }, { - key: "pop", - value: function pop() { - return _remove(this.tail, this).value; - } - }, { - key: "popNode", - value: function popNode() { - return _remove(this.tail, this); - } - }, { - key: "shift", - value: function shift() { - return _remove(this.head, this).value; - } - }, { - key: "shiftNode", - value: function shiftNode() { - return _remove(this.head, this); - } - }, { - key: "get_object_at", - value: function get_object_at(index) { - if (index <= this.length()) { - var i = 1; - var current = this.head; - while (i < index) { - current = current.next; - i++; - } - return current.value; - } - } - }, { - key: "set_object_at", - value: function set_object_at(index, value) { - if (index <= this.length()) { - var i = 1; - var current = this.head; - while (i < index) { - current = current.next; - i++; - } - current.value = value; - } - } - }]); - - return LinkedList; -}(); - -module.exports = LinkedList; - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { - - -/* - *This class is the javascript implementation of the Point.java class in jdk - */ -function Point(x, y, p) { - this.x = null; - this.y = null; - if (x == null && y == null && p == null) { - this.x = 0; - this.y = 0; - } else if (typeof x == 'number' && typeof y == 'number' && p == null) { - this.x = x; - this.y = y; - } else if (x.constructor.name == 'Point' && y == null && p == null) { - p = x; - this.x = p.x; - this.y = p.y; - } -} - -Point.prototype.getX = function () { - return this.x; -}; - -Point.prototype.getY = function () { - return this.y; -}; - -Point.prototype.getLocation = function () { - return new Point(this.x, this.y); -}; - -Point.prototype.setLocation = function (x, y, p) { - if (x.constructor.name == 'Point' && y == null && p == null) { - p = x; - this.setLocation(p.x, p.y); - } else if (typeof x == 'number' && typeof y == 'number' && p == null) { - //if both parameters are integer just move (x,y) location - if (parseInt(x) == x && parseInt(y) == y) { - this.move(x, y); - } else { - this.x = Math.floor(x + 0.5); - this.y = Math.floor(y + 0.5); - } - } -}; - -Point.prototype.move = function (x, y) { - this.x = x; - this.y = y; -}; - -Point.prototype.translate = function (dx, dy) { - this.x += dx; - this.y += dy; -}; - -Point.prototype.equals = function (obj) { - if (obj.constructor.name == "Point") { - var pt = obj; - return this.x == pt.x && this.y == pt.y; - } - return this == obj; -}; - -Point.prototype.toString = function () { - return new Point().constructor.name + "[x=" + this.x + ",y=" + this.y + "]"; -}; - -module.exports = Point; - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - - -function RectangleD(x, y, width, height) { - this.x = 0; - this.y = 0; - this.width = 0; - this.height = 0; - - if (x != null && y != null && width != null && height != null) { - this.x = x; - this.y = y; - this.width = width; - this.height = height; - } -} - -RectangleD.prototype.getX = function () { - return this.x; -}; - -RectangleD.prototype.setX = function (x) { - this.x = x; -}; - -RectangleD.prototype.getY = function () { - return this.y; -}; - -RectangleD.prototype.setY = function (y) { - this.y = y; -}; - -RectangleD.prototype.getWidth = function () { - return this.width; -}; - -RectangleD.prototype.setWidth = function (width) { - this.width = width; -}; - -RectangleD.prototype.getHeight = function () { - return this.height; -}; - -RectangleD.prototype.setHeight = function (height) { - this.height = height; -}; - -RectangleD.prototype.getRight = function () { - return this.x + this.width; -}; - -RectangleD.prototype.getBottom = function () { - return this.y + this.height; -}; - -RectangleD.prototype.intersects = function (a) { - if (this.getRight() < a.x) { - return false; - } - - if (this.getBottom() < a.y) { - return false; - } - - if (a.getRight() < this.x) { - return false; - } - - if (a.getBottom() < this.y) { - return false; - } - - return true; -}; - -RectangleD.prototype.getCenterX = function () { - return this.x + this.width / 2; -}; - -RectangleD.prototype.getMinX = function () { - return this.getX(); -}; - -RectangleD.prototype.getMaxX = function () { - return this.getX() + this.width; -}; - -RectangleD.prototype.getCenterY = function () { - return this.y + this.height / 2; -}; - -RectangleD.prototype.getMinY = function () { - return this.getY(); -}; - -RectangleD.prototype.getMaxY = function () { - return this.getY() + this.height; -}; - -RectangleD.prototype.getWidthHalf = function () { - return this.width / 2; -}; - -RectangleD.prototype.getHeightHalf = function () { - return this.height / 2; -}; - -module.exports = RectangleD; - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -function UniqueIDGeneretor() {} - -UniqueIDGeneretor.lastID = 0; - -UniqueIDGeneretor.createID = function (obj) { - if (UniqueIDGeneretor.isPrimitive(obj)) { - return obj; - } - if (obj.uniqueID != null) { - return obj.uniqueID; - } - obj.uniqueID = UniqueIDGeneretor.getString(); - UniqueIDGeneretor.lastID++; - return obj.uniqueID; -}; - -UniqueIDGeneretor.getString = function (id) { - if (id == null) id = UniqueIDGeneretor.lastID; - return "Object#" + id + ""; -}; - -UniqueIDGeneretor.isPrimitive = function (arg) { - var type = typeof arg === "undefined" ? "undefined" : _typeof(arg); - return arg == null || type != "object" && type != "function"; -}; - -module.exports = UniqueIDGeneretor; - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -var LayoutConstants = __webpack_require__(0); -var LGraphManager = __webpack_require__(6); -var LNode = __webpack_require__(3); -var LEdge = __webpack_require__(1); -var LGraph = __webpack_require__(5); -var PointD = __webpack_require__(4); -var Transform = __webpack_require__(17); -var Emitter = __webpack_require__(27); - -function Layout(isRemoteUse) { - Emitter.call(this); - - //Layout Quality: 0:draft, 1:default, 2:proof - this.layoutQuality = LayoutConstants.QUALITY; - //Whether layout should create bendpoints as needed or not - this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; - //Whether layout should be incremental or not - this.incremental = LayoutConstants.DEFAULT_INCREMENTAL; - //Whether we animate from before to after layout node positions - this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT; - //Whether we animate the layout process or not - this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT; - //Number iterations that should be done between two successive animations - this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD; - /** - * Whether or not leaf nodes (non-compound nodes) are of uniform sizes. When - * they are, both spring and repulsion forces between two leaf nodes can be - * calculated without the expensive clipping point calculations, resulting - * in major speed-up. - */ - this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES; - /** - * This is used for creation of bendpoints by using dummy nodes and edges. - * Maps an LEdge to its dummy bendpoint path. - */ - this.edgeToDummyNodes = new Map(); - this.graphManager = new LGraphManager(this); - this.isLayoutFinished = false; - this.isSubLayout = false; - this.isRemoteUse = false; - - if (isRemoteUse != null) { - this.isRemoteUse = isRemoteUse; - } -} - -Layout.RANDOM_SEED = 1; - -Layout.prototype = Object.create(Emitter.prototype); - -Layout.prototype.getGraphManager = function () { - return this.graphManager; -}; - -Layout.prototype.getAllNodes = function () { - return this.graphManager.getAllNodes(); -}; - -Layout.prototype.getAllEdges = function () { - return this.graphManager.getAllEdges(); -}; - -Layout.prototype.getAllNodesToApplyGravitation = function () { - return this.graphManager.getAllNodesToApplyGravitation(); -}; - -Layout.prototype.newGraphManager = function () { - var gm = new LGraphManager(this); - this.graphManager = gm; - return gm; -}; - -Layout.prototype.newGraph = function (vGraph) { - return new LGraph(null, this.graphManager, vGraph); -}; - -Layout.prototype.newNode = function (vNode) { - return new LNode(this.graphManager, vNode); -}; - -Layout.prototype.newEdge = function (vEdge) { - return new LEdge(null, null, vEdge); -}; - -Layout.prototype.checkLayoutSuccess = function () { - return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge(); -}; - -Layout.prototype.runLayout = function () { - this.isLayoutFinished = false; - - if (this.tilingPreLayout) { - this.tilingPreLayout(); - } - - this.initParameters(); - var isLayoutSuccessfull; - - if (this.checkLayoutSuccess()) { - isLayoutSuccessfull = false; - } else { - isLayoutSuccessfull = this.layout(); - } - - if (LayoutConstants.ANIMATE === 'during') { - // If this is a 'during' layout animation. Layout is not finished yet. - // We need to perform these in index.js when layout is really finished. - return false; - } - - if (isLayoutSuccessfull) { - if (!this.isSubLayout) { - this.doPostLayout(); - } - } - - if (this.tilingPostLayout) { - this.tilingPostLayout(); - } - - this.isLayoutFinished = true; - - return isLayoutSuccessfull; -}; - -/** - * This method performs the operations required after layout. - */ -Layout.prototype.doPostLayout = function () { - //assert !isSubLayout : "Should not be called on sub-layout!"; - // Propagate geometric changes to v-level objects - if (!this.incremental) { - this.transform(); - } - this.update(); -}; - -/** - * This method updates the geometry of the target graph according to - * calculated layout. - */ -Layout.prototype.update2 = function () { - // update bend points - if (this.createBendsAsNeeded) { - this.createBendpointsFromDummyNodes(); - - // reset all edges, since the topology has changed - this.graphManager.resetAllEdges(); - } - - // perform edge, node and root updates if layout is not called - // remotely - if (!this.isRemoteUse) { - var allEdges = this.graphManager.getAllEdges(); - for (var i = 0; i < allEdges.length; i++) { - // this.update(edge); - } - var nodes = this.graphManager.getRoot().getNodes(); - for (var i = 0; i < nodes.length; i++) { - // this.update(node); - } - - // update root graph - this.update(this.graphManager.getRoot()); - } -}; - -Layout.prototype.update = function (obj) { - if (obj == null) { - this.update2(); - } else if (obj instanceof LNode) { - var node = obj; - if (node.getChild() != null) { - // since node is compound, recursively update child nodes - var nodes = node.getChild().getNodes(); - for (var i = 0; i < nodes.length; i++) { - update(nodes[i]); - } - } - - // if the l-level node is associated with a v-level graph object, - // then it is assumed that the v-level node implements the - // interface Updatable. - if (node.vGraphObject != null) { - // cast to Updatable without any type check - var vNode = node.vGraphObject; - - // call the update method of the interface - vNode.update(node); - } - } else if (obj instanceof LEdge) { - var edge = obj; - // if the l-level edge is associated with a v-level graph object, - // then it is assumed that the v-level edge implements the - // interface Updatable. - - if (edge.vGraphObject != null) { - // cast to Updatable without any type check - var vEdge = edge.vGraphObject; - - // call the update method of the interface - vEdge.update(edge); - } - } else if (obj instanceof LGraph) { - var graph = obj; - // if the l-level graph is associated with a v-level graph object, - // then it is assumed that the v-level object implements the - // interface Updatable. - - if (graph.vGraphObject != null) { - // cast to Updatable without any type check - var vGraph = graph.vGraphObject; - - // call the update method of the interface - vGraph.update(graph); - } - } -}; - -/** - * This method is used to set all layout parameters to default values - * determined at compile time. - */ -Layout.prototype.initParameters = function () { - if (!this.isSubLayout) { - this.layoutQuality = LayoutConstants.QUALITY; - this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT; - this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD; - this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT; - this.incremental = LayoutConstants.DEFAULT_INCREMENTAL; - this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; - this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES; - } - - if (this.animationDuringLayout) { - this.animationOnLayout = false; - } -}; - -Layout.prototype.transform = function (newLeftTop) { - if (newLeftTop == undefined) { - this.transform(new PointD(0, 0)); - } else { - // create a transformation object (from Eclipse to layout). When an - // inverse transform is applied, we get upper-left coordinate of the - // drawing or the root graph at given input coordinate (some margins - // already included in calculation of left-top). - - var trans = new Transform(); - var leftTop = this.graphManager.getRoot().updateLeftTop(); - - if (leftTop != null) { - trans.setWorldOrgX(newLeftTop.x); - trans.setWorldOrgY(newLeftTop.y); - - trans.setDeviceOrgX(leftTop.x); - trans.setDeviceOrgY(leftTop.y); - - var nodes = this.getAllNodes(); - var node; - - for (var i = 0; i < nodes.length; i++) { - node = nodes[i]; - node.transform(trans); - } - } - } -}; - -Layout.prototype.positionNodesRandomly = function (graph) { - - if (graph == undefined) { - //assert !this.incremental; - this.positionNodesRandomly(this.getGraphManager().getRoot()); - this.getGraphManager().getRoot().updateBounds(true); - } else { - var lNode; - var childGraph; - - var nodes = graph.getNodes(); - for (var i = 0; i < nodes.length; i++) { - lNode = nodes[i]; - childGraph = lNode.getChild(); - - if (childGraph == null) { - lNode.scatter(); - } else if (childGraph.getNodes().length == 0) { - lNode.scatter(); - } else { - this.positionNodesRandomly(childGraph); - lNode.updateBounds(); - } - } - } -}; - -/** - * This method returns a list of trees where each tree is represented as a - * list of l-nodes. The method returns a list of size 0 when: - * - The graph is not flat or - * - One of the component(s) of the graph is not a tree. - */ -Layout.prototype.getFlatForest = function () { - var flatForest = []; - var isForest = true; - - // Quick reference for all nodes in the graph manager associated with - // this layout. The list should not be changed. - var allNodes = this.graphManager.getRoot().getNodes(); - - // First be sure that the graph is flat - var isFlat = true; - - for (var i = 0; i < allNodes.length; i++) { - if (allNodes[i].getChild() != null) { - isFlat = false; - } - } - - // Return empty forest if the graph is not flat. - if (!isFlat) { - return flatForest; - } - - // Run BFS for each component of the graph. - - var visited = new Set(); - var toBeVisited = []; - var parents = new Map(); - var unProcessedNodes = []; - - unProcessedNodes = unProcessedNodes.concat(allNodes); - - // Each iteration of this loop finds a component of the graph and - // decides whether it is a tree or not. If it is a tree, adds it to the - // forest and continued with the next component. - - while (unProcessedNodes.length > 0 && isForest) { - toBeVisited.push(unProcessedNodes[0]); - - // Start the BFS. Each iteration of this loop visits a node in a - // BFS manner. - while (toBeVisited.length > 0 && isForest) { - //pool operation - var currentNode = toBeVisited[0]; - toBeVisited.splice(0, 1); - visited.add(currentNode); - - // Traverse all neighbors of this node - var neighborEdges = currentNode.getEdges(); - - for (var i = 0; i < neighborEdges.length; i++) { - var currentNeighbor = neighborEdges[i].getOtherEnd(currentNode); - - // If BFS is not growing from this neighbor. - if (parents.get(currentNode) != currentNeighbor) { - // We haven't previously visited this neighbor. - if (!visited.has(currentNeighbor)) { - toBeVisited.push(currentNeighbor); - parents.set(currentNeighbor, currentNode); - } - // Since we have previously visited this neighbor and - // this neighbor is not parent of currentNode, given - // graph contains a component that is not tree, hence - // it is not a forest. - else { - isForest = false; - break; - } - } - } - } - - // The graph contains a component that is not a tree. Empty - // previously found trees. The method will end. - if (!isForest) { - flatForest = []; - } - // Save currently visited nodes as a tree in our forest. Reset - // visited and parents lists. Continue with the next component of - // the graph, if any. - else { - var temp = [].concat(_toConsumableArray(visited)); - flatForest.push(temp); - //flatForest = flatForest.concat(temp); - //unProcessedNodes.removeAll(visited); - for (var i = 0; i < temp.length; i++) { - var value = temp[i]; - var index = unProcessedNodes.indexOf(value); - if (index > -1) { - unProcessedNodes.splice(index, 1); - } - } - visited = new Set(); - parents = new Map(); - } - } - - return flatForest; -}; - -/** - * This method creates dummy nodes (an l-level node with minimal dimensions) - * for the given edge (one per bendpoint). The existing l-level structure - * is updated accordingly. - */ -Layout.prototype.createDummyNodesForBendpoints = function (edge) { - var dummyNodes = []; - var prev = edge.source; - - var graph = this.graphManager.calcLowestCommonAncestor(edge.source, edge.target); - - for (var i = 0; i < edge.bendpoints.length; i++) { - // create new dummy node - var dummyNode = this.newNode(null); - dummyNode.setRect(new Point(0, 0), new Dimension(1, 1)); - - graph.add(dummyNode); - - // create new dummy edge between prev and dummy node - var dummyEdge = this.newEdge(null); - this.graphManager.add(dummyEdge, prev, dummyNode); - - dummyNodes.add(dummyNode); - prev = dummyNode; - } - - var dummyEdge = this.newEdge(null); - this.graphManager.add(dummyEdge, prev, edge.target); - - this.edgeToDummyNodes.set(edge, dummyNodes); - - // remove real edge from graph manager if it is inter-graph - if (edge.isInterGraph()) { - this.graphManager.remove(edge); - } - // else, remove the edge from the current graph - else { - graph.remove(edge); - } - - return dummyNodes; -}; - -/** - * This method creates bendpoints for edges from the dummy nodes - * at l-level. - */ -Layout.prototype.createBendpointsFromDummyNodes = function () { - var edges = []; - edges = edges.concat(this.graphManager.getAllEdges()); - edges = [].concat(_toConsumableArray(this.edgeToDummyNodes.keys())).concat(edges); - - for (var k = 0; k < edges.length; k++) { - var lEdge = edges[k]; - - if (lEdge.bendpoints.length > 0) { - var path = this.edgeToDummyNodes.get(lEdge); - - for (var i = 0; i < path.length; i++) { - var dummyNode = path[i]; - var p = new PointD(dummyNode.getCenterX(), dummyNode.getCenterY()); - - // update bendpoint's location according to dummy node - var ebp = lEdge.bendpoints.get(i); - ebp.x = p.x; - ebp.y = p.y; - - // remove the dummy node, dummy edges incident with this - // dummy node is also removed (within the remove method) - dummyNode.getOwner().remove(dummyNode); - } - - // add the real edge to graph - this.graphManager.add(lEdge, lEdge.source, lEdge.target); - } - } -}; - -Layout.transform = function (sliderValue, defaultValue, minDiv, maxMul) { - if (minDiv != undefined && maxMul != undefined) { - var value = defaultValue; - - if (sliderValue <= 50) { - var minValue = defaultValue / minDiv; - value -= (defaultValue - minValue) / 50 * (50 - sliderValue); - } else { - var maxValue = defaultValue * maxMul; - value += (maxValue - defaultValue) / 50 * (sliderValue - 50); - } - - return value; - } else { - var a, b; - - if (sliderValue <= 50) { - a = 9.0 * defaultValue / 500.0; - b = defaultValue / 10.0; - } else { - a = 9.0 * defaultValue / 50.0; - b = -8 * defaultValue; - } - - return a * sliderValue + b; - } -}; - -/** - * This method finds and returns the center of the given nodes, assuming - * that the given nodes form a tree in themselves. - */ -Layout.findCenterOfTree = function (nodes) { - var list = []; - list = list.concat(nodes); - - var removedNodes = []; - var remainingDegrees = new Map(); - var foundCenter = false; - var centerNode = null; - - if (list.length == 1 || list.length == 2) { - foundCenter = true; - centerNode = list[0]; - } - - for (var i = 0; i < list.length; i++) { - var node = list[i]; - var degree = node.getNeighborsList().size; - remainingDegrees.set(node, node.getNeighborsList().size); - - if (degree == 1) { - removedNodes.push(node); - } - } - - var tempList = []; - tempList = tempList.concat(removedNodes); - - while (!foundCenter) { - var tempList2 = []; - tempList2 = tempList2.concat(tempList); - tempList = []; - - for (var i = 0; i < list.length; i++) { - var node = list[i]; - - var index = list.indexOf(node); - if (index >= 0) { - list.splice(index, 1); - } - - var neighbours = node.getNeighborsList(); - - neighbours.forEach(function (neighbour) { - if (removedNodes.indexOf(neighbour) < 0) { - var otherDegree = remainingDegrees.get(neighbour); - var newDegree = otherDegree - 1; - - if (newDegree == 1) { - tempList.push(neighbour); - } - - remainingDegrees.set(neighbour, newDegree); - } - }); - } - - removedNodes = removedNodes.concat(tempList); - - if (list.length == 1 || list.length == 2) { - foundCenter = true; - centerNode = list[0]; - } - } - - return centerNode; -}; - -/** - * During the coarsening process, this layout may be referenced by two graph managers - * this setter function grants access to change the currently being used graph manager - */ -Layout.prototype.setGraphManager = function (gm) { - this.graphManager = gm; -}; - -module.exports = Layout; - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - - -function RandomSeed() {} -// adapted from: https://stackoverflow.com/a/19303725 -RandomSeed.seed = 1; -RandomSeed.x = 0; - -RandomSeed.nextDouble = function () { - RandomSeed.x = Math.sin(RandomSeed.seed++) * 10000; - return RandomSeed.x - Math.floor(RandomSeed.x); -}; - -module.exports = RandomSeed; - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - - -var PointD = __webpack_require__(4); - -function Transform(x, y) { - this.lworldOrgX = 0.0; - this.lworldOrgY = 0.0; - this.ldeviceOrgX = 0.0; - this.ldeviceOrgY = 0.0; - this.lworldExtX = 1.0; - this.lworldExtY = 1.0; - this.ldeviceExtX = 1.0; - this.ldeviceExtY = 1.0; -} - -Transform.prototype.getWorldOrgX = function () { - return this.lworldOrgX; -}; - -Transform.prototype.setWorldOrgX = function (wox) { - this.lworldOrgX = wox; -}; - -Transform.prototype.getWorldOrgY = function () { - return this.lworldOrgY; -}; - -Transform.prototype.setWorldOrgY = function (woy) { - this.lworldOrgY = woy; -}; - -Transform.prototype.getWorldExtX = function () { - return this.lworldExtX; -}; - -Transform.prototype.setWorldExtX = function (wex) { - this.lworldExtX = wex; -}; - -Transform.prototype.getWorldExtY = function () { - return this.lworldExtY; -}; - -Transform.prototype.setWorldExtY = function (wey) { - this.lworldExtY = wey; -}; - -/* Device related */ - -Transform.prototype.getDeviceOrgX = function () { - return this.ldeviceOrgX; -}; - -Transform.prototype.setDeviceOrgX = function (dox) { - this.ldeviceOrgX = dox; -}; - -Transform.prototype.getDeviceOrgY = function () { - return this.ldeviceOrgY; -}; - -Transform.prototype.setDeviceOrgY = function (doy) { - this.ldeviceOrgY = doy; -}; - -Transform.prototype.getDeviceExtX = function () { - return this.ldeviceExtX; -}; - -Transform.prototype.setDeviceExtX = function (dex) { - this.ldeviceExtX = dex; -}; - -Transform.prototype.getDeviceExtY = function () { - return this.ldeviceExtY; -}; - -Transform.prototype.setDeviceExtY = function (dey) { - this.ldeviceExtY = dey; -}; - -Transform.prototype.transformX = function (x) { - var xDevice = 0.0; - var worldExtX = this.lworldExtX; - if (worldExtX != 0.0) { - xDevice = this.ldeviceOrgX + (x - this.lworldOrgX) * this.ldeviceExtX / worldExtX; - } - - return xDevice; -}; - -Transform.prototype.transformY = function (y) { - var yDevice = 0.0; - var worldExtY = this.lworldExtY; - if (worldExtY != 0.0) { - yDevice = this.ldeviceOrgY + (y - this.lworldOrgY) * this.ldeviceExtY / worldExtY; - } - - return yDevice; -}; - -Transform.prototype.inverseTransformX = function (x) { - var xWorld = 0.0; - var deviceExtX = this.ldeviceExtX; - if (deviceExtX != 0.0) { - xWorld = this.lworldOrgX + (x - this.ldeviceOrgX) * this.lworldExtX / deviceExtX; - } - - return xWorld; -}; - -Transform.prototype.inverseTransformY = function (y) { - var yWorld = 0.0; - var deviceExtY = this.ldeviceExtY; - if (deviceExtY != 0.0) { - yWorld = this.lworldOrgY + (y - this.ldeviceOrgY) * this.lworldExtY / deviceExtY; - } - return yWorld; -}; - -Transform.prototype.inverseTransformPoint = function (inPoint) { - var outPoint = new PointD(this.inverseTransformX(inPoint.x), this.inverseTransformY(inPoint.y)); - return outPoint; -}; - -module.exports = Transform; - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -var Layout = __webpack_require__(15); -var FDLayoutConstants = __webpack_require__(7); -var LayoutConstants = __webpack_require__(0); -var IGeometry = __webpack_require__(8); -var IMath = __webpack_require__(9); - -function FDLayout() { - Layout.call(this); - - this.useSmartIdealEdgeLengthCalculation = FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION; - this.idealEdgeLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH; - this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH; - this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH; - this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH; - this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH; - this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR; - this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR; - this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100; - this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; - this.initialCoolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; - this.totalDisplacement = 0.0; - this.oldTotalDisplacement = 0.0; - this.maxIterations = FDLayoutConstants.MAX_ITERATIONS; -} - -FDLayout.prototype = Object.create(Layout.prototype); - -for (var prop in Layout) { - FDLayout[prop] = Layout[prop]; -} - -FDLayout.prototype.initParameters = function () { - Layout.prototype.initParameters.call(this, arguments); - - this.totalIterations = 0; - this.notAnimatedIterations = 0; - - this.useFRGridVariant = FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION; - - this.grid = []; -}; - -FDLayout.prototype.calcIdealEdgeLengths = function () { - var edge; - var lcaDepth; - var source; - var target; - var sizeOfSourceInLca; - var sizeOfTargetInLca; - - var allEdges = this.getGraphManager().getAllEdges(); - for (var i = 0; i < allEdges.length; i++) { - edge = allEdges[i]; - - edge.idealLength = this.idealEdgeLength; - - if (edge.isInterGraph) { - source = edge.getSource(); - target = edge.getTarget(); - - sizeOfSourceInLca = edge.getSourceInLca().getEstimatedSize(); - sizeOfTargetInLca = edge.getTargetInLca().getEstimatedSize(); - - if (this.useSmartIdealEdgeLengthCalculation) { - edge.idealLength += sizeOfSourceInLca + sizeOfTargetInLca - 2 * LayoutConstants.SIMPLE_NODE_SIZE; - } - - lcaDepth = edge.getLca().getInclusionTreeDepth(); - - edge.idealLength += FDLayoutConstants.DEFAULT_EDGE_LENGTH * FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (source.getInclusionTreeDepth() + target.getInclusionTreeDepth() - 2 * lcaDepth); - } - } -}; - -FDLayout.prototype.initSpringEmbedder = function () { - - var s = this.getAllNodes().length; - if (this.incremental) { - if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) { - this.coolingFactor = Math.max(this.coolingFactor * FDLayoutConstants.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR)); - } - this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL; - } else { - if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) { - this.coolingFactor = Math.max(FDLayoutConstants.COOLING_ADAPTATION_FACTOR, 1.0 - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR)); - } else { - this.coolingFactor = 1.0; - } - this.initialCoolingFactor = this.coolingFactor; - this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT; - } - - this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations); - - this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length; - - this.repulsionRange = this.calcRepulsionRange(); -}; - -FDLayout.prototype.calcSpringForces = function () { - var lEdges = this.getAllEdges(); - var edge; - - for (var i = 0; i < lEdges.length; i++) { - edge = lEdges[i]; - - this.calcSpringForce(edge, edge.idealLength); - } -}; - -FDLayout.prototype.calcRepulsionForces = function () { - var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - var i, j; - var nodeA, nodeB; - var lNodes = this.getAllNodes(); - var processedNodeSet; - - if (this.useFRGridVariant) { - if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed) { - this.updateGrid(); - } - - processedNodeSet = new Set(); - - // calculate repulsion forces between each nodes and its surrounding - for (i = 0; i < lNodes.length; i++) { - nodeA = lNodes[i]; - this.calculateRepulsionForceOfANode(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate); - processedNodeSet.add(nodeA); - } - } else { - for (i = 0; i < lNodes.length; i++) { - nodeA = lNodes[i]; - - for (j = i + 1; j < lNodes.length; j++) { - nodeB = lNodes[j]; - - // If both nodes are not members of the same graph, skip. - if (nodeA.getOwner() != nodeB.getOwner()) { - continue; - } - - this.calcRepulsionForce(nodeA, nodeB); - } - } - } -}; - -FDLayout.prototype.calcGravitationalForces = function () { - var node; - var lNodes = this.getAllNodesToApplyGravitation(); - - for (var i = 0; i < lNodes.length; i++) { - node = lNodes[i]; - this.calcGravitationalForce(node); - } -}; - -FDLayout.prototype.moveNodes = function () { - var lNodes = this.getAllNodes(); - var node; - - for (var i = 0; i < lNodes.length; i++) { - node = lNodes[i]; - node.move(); - } -}; - -FDLayout.prototype.calcSpringForce = function (edge, idealLength) { - var sourceNode = edge.getSource(); - var targetNode = edge.getTarget(); - - var length; - var springForce; - var springForceX; - var springForceY; - - // Update edge length - if (this.uniformLeafNodeSizes && sourceNode.getChild() == null && targetNode.getChild() == null) { - edge.updateLengthSimple(); - } else { - edge.updateLength(); - - if (edge.isOverlapingSourceAndTarget) { - return; - } - } - - length = edge.getLength(); - - if (length == 0) return; - - // Calculate spring forces - springForce = this.springConstant * (length - idealLength); - - // Project force onto x and y axes - springForceX = springForce * (edge.lengthX / length); - springForceY = springForce * (edge.lengthY / length); - - // Apply forces on the end nodes - sourceNode.springForceX += springForceX; - sourceNode.springForceY += springForceY; - targetNode.springForceX -= springForceX; - targetNode.springForceY -= springForceY; -}; - -FDLayout.prototype.calcRepulsionForce = function (nodeA, nodeB) { - var rectA = nodeA.getRect(); - var rectB = nodeB.getRect(); - var overlapAmount = new Array(2); - var clipPoints = new Array(4); - var distanceX; - var distanceY; - var distanceSquared; - var distance; - var repulsionForce; - var repulsionForceX; - var repulsionForceY; - - if (rectA.intersects(rectB)) // two nodes overlap - { - // calculate separation amount in x and y directions - IGeometry.calcSeparationAmount(rectA, rectB, overlapAmount, FDLayoutConstants.DEFAULT_EDGE_LENGTH / 2.0); - - repulsionForceX = 2 * overlapAmount[0]; - repulsionForceY = 2 * overlapAmount[1]; - - var childrenConstant = nodeA.noOfChildren * nodeB.noOfChildren / (nodeA.noOfChildren + nodeB.noOfChildren); - - // Apply forces on the two nodes - nodeA.repulsionForceX -= childrenConstant * repulsionForceX; - nodeA.repulsionForceY -= childrenConstant * repulsionForceY; - nodeB.repulsionForceX += childrenConstant * repulsionForceX; - nodeB.repulsionForceY += childrenConstant * repulsionForceY; - } else // no overlap - { - // calculate distance - - if (this.uniformLeafNodeSizes && nodeA.getChild() == null && nodeB.getChild() == null) // simply base repulsion on distance of node centers - { - distanceX = rectB.getCenterX() - rectA.getCenterX(); - distanceY = rectB.getCenterY() - rectA.getCenterY(); - } else // use clipping points - { - IGeometry.getIntersection(rectA, rectB, clipPoints); - - distanceX = clipPoints[2] - clipPoints[0]; - distanceY = clipPoints[3] - clipPoints[1]; - } - - // No repulsion range. FR grid variant should take care of this. - if (Math.abs(distanceX) < FDLayoutConstants.MIN_REPULSION_DIST) { - distanceX = IMath.sign(distanceX) * FDLayoutConstants.MIN_REPULSION_DIST; - } - - if (Math.abs(distanceY) < FDLayoutConstants.MIN_REPULSION_DIST) { - distanceY = IMath.sign(distanceY) * FDLayoutConstants.MIN_REPULSION_DIST; - } - - distanceSquared = distanceX * distanceX + distanceY * distanceY; - distance = Math.sqrt(distanceSquared); - - repulsionForce = this.repulsionConstant * nodeA.noOfChildren * nodeB.noOfChildren / distanceSquared; - - // Project force onto x and y axes - repulsionForceX = repulsionForce * distanceX / distance; - repulsionForceY = repulsionForce * distanceY / distance; - - // Apply forces on the two nodes - nodeA.repulsionForceX -= repulsionForceX; - nodeA.repulsionForceY -= repulsionForceY; - nodeB.repulsionForceX += repulsionForceX; - nodeB.repulsionForceY += repulsionForceY; - } -}; - -FDLayout.prototype.calcGravitationalForce = function (node) { - var ownerGraph; - var ownerCenterX; - var ownerCenterY; - var distanceX; - var distanceY; - var absDistanceX; - var absDistanceY; - var estimatedSize; - ownerGraph = node.getOwner(); - - ownerCenterX = (ownerGraph.getRight() + ownerGraph.getLeft()) / 2; - ownerCenterY = (ownerGraph.getTop() + ownerGraph.getBottom()) / 2; - distanceX = node.getCenterX() - ownerCenterX; - distanceY = node.getCenterY() - ownerCenterY; - absDistanceX = Math.abs(distanceX) + node.getWidth() / 2; - absDistanceY = Math.abs(distanceY) + node.getHeight() / 2; - - if (node.getOwner() == this.graphManager.getRoot()) // in the root graph - { - estimatedSize = ownerGraph.getEstimatedSize() * this.gravityRangeFactor; - - if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) { - node.gravitationForceX = -this.gravityConstant * distanceX; - node.gravitationForceY = -this.gravityConstant * distanceY; - } - } else // inside a compound - { - estimatedSize = ownerGraph.getEstimatedSize() * this.compoundGravityRangeFactor; - - if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) { - node.gravitationForceX = -this.gravityConstant * distanceX * this.compoundGravityConstant; - node.gravitationForceY = -this.gravityConstant * distanceY * this.compoundGravityConstant; - } - } -}; - -FDLayout.prototype.isConverged = function () { - var converged; - var oscilating = false; - - if (this.totalIterations > this.maxIterations / 3) { - oscilating = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2; - } - - converged = this.totalDisplacement < this.totalDisplacementThreshold; - - this.oldTotalDisplacement = this.totalDisplacement; - - return converged || oscilating; -}; - -FDLayout.prototype.animate = function () { - if (this.animationDuringLayout && !this.isSubLayout) { - if (this.notAnimatedIterations == this.animationPeriod) { - this.update(); - this.notAnimatedIterations = 0; - } else { - this.notAnimatedIterations++; - } - } -}; - -//This method calculates the number of children (weight) for all nodes -FDLayout.prototype.calcNoOfChildrenForAllNodes = function () { - var node; - var allNodes = this.graphManager.getAllNodes(); - - for (var i = 0; i < allNodes.length; i++) { - node = allNodes[i]; - node.noOfChildren = node.getNoOfChildren(); - } -}; - -// ----------------------------------------------------------------------------- -// Section: FR-Grid Variant Repulsion Force Calculation -// ----------------------------------------------------------------------------- - -FDLayout.prototype.calcGrid = function (graph) { - - var sizeX = 0; - var sizeY = 0; - - sizeX = parseInt(Math.ceil((graph.getRight() - graph.getLeft()) / this.repulsionRange)); - sizeY = parseInt(Math.ceil((graph.getBottom() - graph.getTop()) / this.repulsionRange)); - - var grid = new Array(sizeX); - - for (var i = 0; i < sizeX; i++) { - grid[i] = new Array(sizeY); - } - - for (var i = 0; i < sizeX; i++) { - for (var j = 0; j < sizeY; j++) { - grid[i][j] = new Array(); - } - } - - return grid; -}; - -FDLayout.prototype.addNodeToGrid = function (v, left, top) { - - var startX = 0; - var finishX = 0; - var startY = 0; - var finishY = 0; - - startX = parseInt(Math.floor((v.getRect().x - left) / this.repulsionRange)); - finishX = parseInt(Math.floor((v.getRect().width + v.getRect().x - left) / this.repulsionRange)); - startY = parseInt(Math.floor((v.getRect().y - top) / this.repulsionRange)); - finishY = parseInt(Math.floor((v.getRect().height + v.getRect().y - top) / this.repulsionRange)); - - for (var i = startX; i <= finishX; i++) { - for (var j = startY; j <= finishY; j++) { - this.grid[i][j].push(v); - v.setGridCoordinates(startX, finishX, startY, finishY); - } - } -}; - -FDLayout.prototype.updateGrid = function () { - var i; - var nodeA; - var lNodes = this.getAllNodes(); - - this.grid = this.calcGrid(this.graphManager.getRoot()); - - // put all nodes to proper grid cells - for (i = 0; i < lNodes.length; i++) { - nodeA = lNodes[i]; - this.addNodeToGrid(nodeA, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop()); - } -}; - -FDLayout.prototype.calculateRepulsionForceOfANode = function (nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate) { - - if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed || forceToNodeSurroundingUpdate) { - var surrounding = new Set(); - nodeA.surrounding = new Array(); - var nodeB; - var grid = this.grid; - - for (var i = nodeA.startX - 1; i < nodeA.finishX + 2; i++) { - for (var j = nodeA.startY - 1; j < nodeA.finishY + 2; j++) { - if (!(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length)) { - for (var k = 0; k < grid[i][j].length; k++) { - nodeB = grid[i][j][k]; - - // If both nodes are not members of the same graph, - // or both nodes are the same, skip. - if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) { - continue; - } - - // check if the repulsion force between - // nodeA and nodeB has already been calculated - if (!processedNodeSet.has(nodeB) && !surrounding.has(nodeB)) { - var distanceX = Math.abs(nodeA.getCenterX() - nodeB.getCenterX()) - (nodeA.getWidth() / 2 + nodeB.getWidth() / 2); - var distanceY = Math.abs(nodeA.getCenterY() - nodeB.getCenterY()) - (nodeA.getHeight() / 2 + nodeB.getHeight() / 2); - - // if the distance between nodeA and nodeB - // is less then calculation range - if (distanceX <= this.repulsionRange && distanceY <= this.repulsionRange) { - //then add nodeB to surrounding of nodeA - surrounding.add(nodeB); - } - } - } - } - } - } - - nodeA.surrounding = [].concat(_toConsumableArray(surrounding)); - } - for (i = 0; i < nodeA.surrounding.length; i++) { - this.calcRepulsionForce(nodeA, nodeA.surrounding[i]); - } -}; - -FDLayout.prototype.calcRepulsionRange = function () { - return 0.0; -}; - -module.exports = FDLayout; - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - - -var LEdge = __webpack_require__(1); -var FDLayoutConstants = __webpack_require__(7); - -function FDLayoutEdge(source, target, vEdge) { - LEdge.call(this, source, target, vEdge); - this.idealLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH; -} - -FDLayoutEdge.prototype = Object.create(LEdge.prototype); - -for (var prop in LEdge) { - FDLayoutEdge[prop] = LEdge[prop]; -} - -module.exports = FDLayoutEdge; - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - - -var LNode = __webpack_require__(3); - -function FDLayoutNode(gm, loc, size, vNode) { - // alternative constructor is handled inside LNode - LNode.call(this, gm, loc, size, vNode); - //Spring, repulsion and gravitational forces acting on this node - this.springForceX = 0; - this.springForceY = 0; - this.repulsionForceX = 0; - this.repulsionForceY = 0; - this.gravitationForceX = 0; - this.gravitationForceY = 0; - //Amount by which this node is to be moved in this iteration - this.displacementX = 0; - this.displacementY = 0; - - //Start and finish grid coordinates that this node is fallen into - this.startX = 0; - this.finishX = 0; - this.startY = 0; - this.finishY = 0; - - //Geometric neighbors of this node - this.surrounding = []; -} - -FDLayoutNode.prototype = Object.create(LNode.prototype); - -for (var prop in LNode) { - FDLayoutNode[prop] = LNode[prop]; -} - -FDLayoutNode.prototype.setGridCoordinates = function (_startX, _finishX, _startY, _finishY) { - this.startX = _startX; - this.finishX = _finishX; - this.startY = _startY; - this.finishY = _finishY; -}; - -module.exports = FDLayoutNode; - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - - -function DimensionD(width, height) { - this.width = 0; - this.height = 0; - if (width !== null && height !== null) { - this.height = height; - this.width = width; - } -} - -DimensionD.prototype.getWidth = function () { - return this.width; -}; - -DimensionD.prototype.setWidth = function (width) { - this.width = width; -}; - -DimensionD.prototype.getHeight = function () { - return this.height; -}; - -DimensionD.prototype.setHeight = function (height) { - this.height = height; -}; - -module.exports = DimensionD; - -/***/ }), -/* 22 */ -/***/ (function(module, exports, __webpack_require__) { - - -var UniqueIDGeneretor = __webpack_require__(14); - -function HashMap() { - this.map = {}; - this.keys = []; -} - -HashMap.prototype.put = function (key, value) { - var theId = UniqueIDGeneretor.createID(key); - if (!this.contains(theId)) { - this.map[theId] = value; - this.keys.push(key); - } -}; - -HashMap.prototype.contains = function (key) { - UniqueIDGeneretor.createID(key); - return this.map[key] != null; -}; - -HashMap.prototype.get = function (key) { - var theId = UniqueIDGeneretor.createID(key); - return this.map[theId]; -}; - -HashMap.prototype.keySet = function () { - return this.keys; -}; - -module.exports = HashMap; - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - - -var UniqueIDGeneretor = __webpack_require__(14); - -function HashSet() { - this.set = {}; -} - -HashSet.prototype.add = function (obj) { - var theId = UniqueIDGeneretor.createID(obj); - if (!this.contains(theId)) this.set[theId] = obj; -}; - -HashSet.prototype.remove = function (obj) { - delete this.set[UniqueIDGeneretor.createID(obj)]; -}; - -HashSet.prototype.clear = function () { - this.set = {}; -}; - -HashSet.prototype.contains = function (obj) { - return this.set[UniqueIDGeneretor.createID(obj)] == obj; -}; - -HashSet.prototype.isEmpty = function () { - return this.size() === 0; -}; - -HashSet.prototype.size = function () { - return Object.keys(this.set).length; -}; - -//concats this.set to the given list -HashSet.prototype.addAllTo = function (list) { - var keys = Object.keys(this.set); - var length = keys.length; - for (var i = 0; i < length; i++) { - list.push(this.set[keys[i]]); - } -}; - -HashSet.prototype.size = function () { - return Object.keys(this.set).length; -}; - -HashSet.prototype.addAll = function (list) { - var s = list.length; - for (var i = 0; i < s; i++) { - var v = list[i]; - this.add(v); - } -}; - -module.exports = HashSet; - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * A classic Quicksort algorithm with Hoare's partition - * - Works also on LinkedList objects - * - * Copyright: i-Vis Research Group, Bilkent University, 2007 - present - */ - -var LinkedList = __webpack_require__(11); - -var Quicksort = function () { - function Quicksort(A, compareFunction) { - _classCallCheck(this, Quicksort); - - if (compareFunction !== null || compareFunction !== undefined) this.compareFunction = this._defaultCompareFunction; - - var length = void 0; - if (A instanceof LinkedList) length = A.size();else length = A.length; - - this._quicksort(A, 0, length - 1); - } - - _createClass(Quicksort, [{ - key: '_quicksort', - value: function _quicksort(A, p, r) { - if (p < r) { - var q = this._partition(A, p, r); - this._quicksort(A, p, q); - this._quicksort(A, q + 1, r); - } - } - }, { - key: '_partition', - value: function _partition(A, p, r) { - var x = this._get(A, p); - var i = p; - var j = r; - while (true) { - while (this.compareFunction(x, this._get(A, j))) { - j--; - }while (this.compareFunction(this._get(A, i), x)) { - i++; - }if (i < j) { - this._swap(A, i, j); - i++; - j--; - } else return j; - } - } - }, { - key: '_get', - value: function _get(object, index) { - if (object instanceof LinkedList) return object.get_object_at(index);else return object[index]; - } - }, { - key: '_set', - value: function _set(object, index, value) { - if (object instanceof LinkedList) object.set_object_at(index, value);else object[index] = value; - } - }, { - key: '_swap', - value: function _swap(A, i, j) { - var temp = this._get(A, i); - this._set(A, i, this._get(A, j)); - this._set(A, j, temp); - } - }, { - key: '_defaultCompareFunction', - value: function _defaultCompareFunction(a, b) { - return b > a; - } - }]); - - return Quicksort; -}(); - -module.exports = Quicksort; - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * Needleman-Wunsch algorithm is an procedure to compute the optimal global alignment of two string - * sequences by S.B.Needleman and C.D.Wunsch (1970). - * - * Aside from the inputs, you can assign the scores for, - * - Match: The two characters at the current index are same. - * - Mismatch: The two characters at the current index are different. - * - Insertion/Deletion(gaps): The best alignment involves one letter aligning to a gap in the other string. - */ - -var NeedlemanWunsch = function () { - function NeedlemanWunsch(sequence1, sequence2) { - var match_score = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; - var mismatch_penalty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -1; - var gap_penalty = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1; - - _classCallCheck(this, NeedlemanWunsch); - - this.sequence1 = sequence1; - this.sequence2 = sequence2; - this.match_score = match_score; - this.mismatch_penalty = mismatch_penalty; - this.gap_penalty = gap_penalty; - - // Just the remove redundancy - this.iMax = sequence1.length + 1; - this.jMax = sequence2.length + 1; - - // Grid matrix of scores - this.grid = new Array(this.iMax); - for (var i = 0; i < this.iMax; i++) { - this.grid[i] = new Array(this.jMax); - - for (var j = 0; j < this.jMax; j++) { - this.grid[i][j] = 0; - } - } - - // Traceback matrix (2D array, each cell is an array of boolean values for [`Diag`, `Up`, `Left`] positions) - this.tracebackGrid = new Array(this.iMax); - for (var _i = 0; _i < this.iMax; _i++) { - this.tracebackGrid[_i] = new Array(this.jMax); - - for (var _j = 0; _j < this.jMax; _j++) { - this.tracebackGrid[_i][_j] = [null, null, null]; - } - } - - // The aligned sequences (return multiple possibilities) - this.alignments = []; - - // Final alignment score - this.score = -1; - - // Calculate scores and tracebacks - this.computeGrids(); - } - - _createClass(NeedlemanWunsch, [{ - key: "getScore", - value: function getScore() { - return this.score; - } - }, { - key: "getAlignments", - value: function getAlignments() { - return this.alignments; - } - - // Main dynamic programming procedure - - }, { - key: "computeGrids", - value: function computeGrids() { - // Fill in the first row - for (var j = 1; j < this.jMax; j++) { - this.grid[0][j] = this.grid[0][j - 1] + this.gap_penalty; - this.tracebackGrid[0][j] = [false, false, true]; - } - - // Fill in the first column - for (var i = 1; i < this.iMax; i++) { - this.grid[i][0] = this.grid[i - 1][0] + this.gap_penalty; - this.tracebackGrid[i][0] = [false, true, false]; - } - - // Fill the rest of the grid - for (var _i2 = 1; _i2 < this.iMax; _i2++) { - for (var _j2 = 1; _j2 < this.jMax; _j2++) { - // Find the max score(s) among [`Diag`, `Up`, `Left`] - var diag = void 0; - if (this.sequence1[_i2 - 1] === this.sequence2[_j2 - 1]) diag = this.grid[_i2 - 1][_j2 - 1] + this.match_score;else diag = this.grid[_i2 - 1][_j2 - 1] + this.mismatch_penalty; - - var up = this.grid[_i2 - 1][_j2] + this.gap_penalty; - var left = this.grid[_i2][_j2 - 1] + this.gap_penalty; - - // If there exists multiple max values, capture them for multiple paths - var maxOf = [diag, up, left]; - var indices = this.arrayAllMaxIndexes(maxOf); - - // Update Grids - this.grid[_i2][_j2] = maxOf[indices[0]]; - this.tracebackGrid[_i2][_j2] = [indices.includes(0), indices.includes(1), indices.includes(2)]; - } - } - - // Update alignment score - this.score = this.grid[this.iMax - 1][this.jMax - 1]; - } - - // Gets all possible valid sequence combinations - - }, { - key: "alignmentTraceback", - value: function alignmentTraceback() { - var inProcessAlignments = []; - - inProcessAlignments.push({ pos: [this.sequence1.length, this.sequence2.length], - seq1: "", - seq2: "" - }); - - while (inProcessAlignments[0]) { - var current = inProcessAlignments[0]; - var directions = this.tracebackGrid[current.pos[0]][current.pos[1]]; - - if (directions[0]) { - inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1] - 1], - seq1: this.sequence1[current.pos[0] - 1] + current.seq1, - seq2: this.sequence2[current.pos[1] - 1] + current.seq2 - }); - } - if (directions[1]) { - inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1]], - seq1: this.sequence1[current.pos[0] - 1] + current.seq1, - seq2: '-' + current.seq2 - }); - } - if (directions[2]) { - inProcessAlignments.push({ pos: [current.pos[0], current.pos[1] - 1], - seq1: '-' + current.seq1, - seq2: this.sequence2[current.pos[1] - 1] + current.seq2 - }); - } - - if (current.pos[0] === 0 && current.pos[1] === 0) this.alignments.push({ sequence1: current.seq1, - sequence2: current.seq2 - }); - - inProcessAlignments.shift(); - } - - return this.alignments; - } - - // Helper Functions - - }, { - key: "getAllIndexes", - value: function getAllIndexes(arr, val) { - var indexes = [], - i = -1; - while ((i = arr.indexOf(val, i + 1)) !== -1) { - indexes.push(i); - } - return indexes; - } - }, { - key: "arrayAllMaxIndexes", - value: function arrayAllMaxIndexes(array) { - return this.getAllIndexes(array, Math.max.apply(null, array)); - } - }]); - - return NeedlemanWunsch; -}(); - -module.exports = NeedlemanWunsch; - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - - -var layoutBase = function layoutBase() { - return; -}; - -layoutBase.FDLayout = __webpack_require__(18); -layoutBase.FDLayoutConstants = __webpack_require__(7); -layoutBase.FDLayoutEdge = __webpack_require__(19); -layoutBase.FDLayoutNode = __webpack_require__(20); -layoutBase.DimensionD = __webpack_require__(21); -layoutBase.HashMap = __webpack_require__(22); -layoutBase.HashSet = __webpack_require__(23); -layoutBase.IGeometry = __webpack_require__(8); -layoutBase.IMath = __webpack_require__(9); -layoutBase.Integer = __webpack_require__(10); -layoutBase.Point = __webpack_require__(12); -layoutBase.PointD = __webpack_require__(4); -layoutBase.RandomSeed = __webpack_require__(16); -layoutBase.RectangleD = __webpack_require__(13); -layoutBase.Transform = __webpack_require__(17); -layoutBase.UniqueIDGeneretor = __webpack_require__(14); -layoutBase.Quicksort = __webpack_require__(24); -layoutBase.LinkedList = __webpack_require__(11); -layoutBase.LGraphObject = __webpack_require__(2); -layoutBase.LGraph = __webpack_require__(5); -layoutBase.LEdge = __webpack_require__(1); -layoutBase.LGraphManager = __webpack_require__(6); -layoutBase.LNode = __webpack_require__(3); -layoutBase.Layout = __webpack_require__(15); -layoutBase.LayoutConstants = __webpack_require__(0); -layoutBase.NeedlemanWunsch = __webpack_require__(25); - -module.exports = layoutBase; - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - - -function Emitter() { - this.listeners = []; -} - -var p = Emitter.prototype; - -p.addListener = function (event, callback) { - this.listeners.push({ - event: event, - callback: callback - }); -}; - -p.removeListener = function (event, callback) { - for (var i = this.listeners.length; i >= 0; i--) { - var l = this.listeners[i]; - - if (l.event === event && l.callback === callback) { - this.listeners.splice(i, 1); - } - } -}; - -p.emit = function (event, data) { - for (var i = 0; i < this.listeners.length; i++) { - var l = this.listeners[i]; - - if (event === l.event) { - l.callback(data); - } - } -}; - -module.exports = Emitter; - -/***/ }) -/******/ ]); -}); -}); - -var avsdfBase = createCommonjsModule(function (module, exports) { -(function webpackUniversalModuleDefinition(root, factory) { - module.exports = factory(layoutBase); -})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 6); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE_0__; - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - -/** - * This class implements data and functionality required for AVSDF layout per - * circle. - * - * - * Copyright: i-Vis Research Group, Bilkent University, 2007 - present - */ - -var LGraph = __webpack_require__(0).LGraph; - -// ----------------------------------------------------------------------------- -// Section: Initializations -// ----------------------------------------------------------------------------- - -function AVSDFCircle(parent, graphMgr, vObject) { - LGraph.call(this, parent, graphMgr, vObject); - this.inOrder = undefined; - this.currentIndex = 0; - this.nodeSeparation = undefined; - this.stack = []; - this.perimeter = 0; - this.centerX = 0; - this.centerY = 0; - this.radius = 0; -} - -AVSDFCircle.prototype = Object.create(LGraph.prototype); - -for (var property in LGraph) { - AVSDFCircle[property] = LGraph[property]; -} - -AVSDFCircle.prototype.initOrdering = function () { - this.inOrder = []; -}; - -// ----------------------------------------------------------------------------- -// Section: Accessor Functions -// ----------------------------------------------------------------------------- - -// This function returns the array in which the nodes of this circle are kept in order. -AVSDFCircle.prototype.getOrder = function () { - return this.inOrder; -}; - -// This function returns the x-coordinate of the center of this circle. -AVSDFCircle.prototype.getCenterX = function () { - return this.centerX; -}; - -// This function returns the y-coordinate of the center of this circle. -AVSDFCircle.prototype.getCenterY = function () { - return this.centerY; -}; - -// This function returns the radius of this circle. -AVSDFCircle.prototype.getRadius = function () { - return this.radius; -}; - -// This function returns the total number of vertices of this circle. -AVSDFCircle.prototype.getSize = function () { - return this.getNodes().length; -}; - -// This function calculates and returns the total number of crossings in this -// circle by adding up the crossing number of individual nodes on it. -AVSDFCircle.prototype.getTotalCrossingOfCircle = function () { - var self = this; - var crossingNumber = 0; - - for (var node in self.inOrder) { - var nodeCrossing = node.getTotalCrossingOfEdges(); - if (nodeCrossing === -1) { - return -1; - } - crossingNumber += nodeCrossing; - } - - return crossingNumber / 4; -}; - -// This function checks whether or not all of the vertices of this circle are -// assigned an index on the circle. -AVSDFCircle.prototype.hasFinishedOrdering = function () { - return this.currentIndex === this.getNodes().length; -}; - -// This function returns the node separation of this circle. -AVSDFCircle.prototype.getNodeSeparation = function () { - return this.nodeSeparation; -}; - -// This function sets the node separation of this circle. -AVSDFCircle.prototype.setNodeSeparation = function (nodeSeparation) { - this.nodeSeparation = nodeSeparation; -}; - -// ----------------------------------------------------------------------------- -// Section: Remaining Functions -// ----------------------------------------------------------------------------- - -// This function traverses the vertices of this circle and corrects the angle -// of the vertices with respect to their circle indices. -AVSDFCircle.prototype.correctAngles = function () { - var self = this; - self.currentIndex = 0; - - self.inOrder.forEach(function (node) { - return self.putInOrder(node); - }); -}; - -// This function puts the given node on the circle in the current order and -// sets its angle appropriately. -AVSDFCircle.prototype.putInOrder = function (node) { - var self = this; - - var nodes = self.getNodes(); - - // Note that id attribute of a node is added before - // AVSDFLayout is called - var found = false; - for (var i = 0; i < nodes.length; i++) { - if (nodes[i].id == node.id) { - found = true; - break; - } - } - - if (!found) { - throw "The node must be a member of LGraph"; - } - - self.inOrder[self.currentIndex] = node; - node.setIndex(self.currentIndex); - - if (self.currentIndex === 0) { - node.setAngle(0.0); - } else { - node.setAngle(self.inOrder[self.currentIndex - 1].getAngle() + 2 * Math.PI * (node.getDiagonal() / 2 + self.nodeSeparation + self.inOrder[self.currentIndex - 1].getDiagonal() / 2) / self.perimeter); - } - - self.currentIndex++; -}; - -// This function returns the next node to be placed on this circle with -// respect to the AVSDF algorithm. -AVSDFCircle.prototype.findNodeToPlace = function () { - var self = this; - var sDegreeNode = undefined; - - // Find the smallest degree vertex if the stack is empty - if (self.stack.length === 0) { - sDegreeNode = self.findUnorderedSmallestDegreeNode(); - } - // Find the first vertex in the stack not yet placed - else { - var foundUnorderNode = false; - - while (!foundUnorderNode && !(self.stack.length === 0)) { - sDegreeNode = self.stack.pop(); - foundUnorderNode = !sDegreeNode.isOrdered(); - } - - if (!foundUnorderNode) { - sDegreeNode = undefined; - } - } - - // If no unordered vertex is found in the stack, find one - // from the remaining ones - if (sDegreeNode === undefined) { - sDegreeNode = self.findUnorderedSmallestDegreeNode(); - } - - // Add the unordered neighbors of this node to the stack - if (sDegreeNode !== undefined) { - var neighbors = sDegreeNode.getNeighborsSortedByDegree(); - - for (var i = neighbors.length - 1; i >= 0; i--) { - var neighbor = neighbors[i]; - - if (!neighbor.isOrdered()) // Check here for possible error - { - self.stack.push(neighbor); - } - } - } - - return sDegreeNode; -}; - -// This function calculates the radius of this circle with respect to the sizes -// of the vertices and the node separation parameter. -AVSDFCircle.prototype.calculateRadius = function () { - var self = this; - var totalDiagonal = 0; - - self.getNodes().forEach(function (node) { - return totalDiagonal += Math.sqrt(node.getWidth() * node.getWidth() + node.getHeight() * node.getHeight()); - }); - - self.perimeter = totalDiagonal + self.getNodes().length * self.nodeSeparation; - var radius = self.perimeter / (2 * Math.PI); - - // Check here for possible error - - self.getParent().setWidth(2 * radius); - self.getParent().setHeight(2 * radius); - self.getParent().setCenter(self.getParent().getWidth(), self.getParent().getHeight()); - - self.centerX = self.getParent().getCenterX(); - self.centerY = self.getParent().getCenterY(); - self.radius = self.getParent().getHeight() / 2; -}; - -// This function calculates the total number of crossings of all vertices of -// this circle. -AVSDFCircle.prototype.calculateEdgeCrossingsOfNodes = function () { - this.getNodes().forEach(function (node) { - return node.calculateTotalCrossing(); - }); -}; - -// This function sets the index of each vertex to its position in inOrder -// array. Note that index of a node can be different from its place in the -// array due to crossing reduction phase of the AVSDF algorithm. It loads -// old index values to vertices due to an increase in the number of -// crossings with the new indices. -AVSDFCircle.prototype.loadOldIndicesOfNodes = function () { - //this.inOrder.forEach( (node,index) => node.setIndex(index)); - var self = this; - for (var i = 0; i < this.inOrder.length; i++) { - self.inOrder[i].setIndex(i); - } -}; - -// This function sets the position of each node in inOrder array to its index. -// Note that index of a node can be different from its place in the inOrder -// array due to crossing reduction phase of the AVSDF algorithm. This function -// puts the nodes to their new index values in inOrder array due to a -// decrease in the number of crossings with the new indices. -AVSDFCircle.prototype.reOrderVertices = function () { - var self = this; - this.getNodes().forEach(function (node) { - return self.inOrder[node.getIndex()] = node; - }); -}; - -// This function finds and returns the unordered smallest degree vertex on -// this circle. -AVSDFCircle.prototype.findUnorderedSmallestDegreeNode = function () { - var minDegree = Number.MAX_SAFE_INTEGER; - var sDegreeNode = void 0; - - this.getNodes().forEach(function (node) { - if (node.getDegree() < minDegree && !node.isOrdered()) { - minDegree = node.getDegree(); - sDegreeNode = node; - } - }); - - return sDegreeNode; -}; - -module.exports = AVSDFCircle; - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - -var LayoutConstants = __webpack_require__(0).LayoutConstants; - -function AVSDFConstants() {} - -// AVSDFConstants inherits properties in LayoutConstants -for (var prop in LayoutConstants) { - AVSDFConstants[prop] = LayoutConstants[prop]; -} - -AVSDFConstants.DEFAULT_NODE_SEPARATION = 60; - -module.exports = AVSDFConstants; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - - -/** - * This class implements data and functionality required for AVSDF layout per - * edge. - * - - * Copyright: i-Vis Research Group, Bilkent University, 2007 - present - */ - -var LEdge = __webpack_require__(0).LEdge; - -// ----------------------------------------------------------------------------- -// Section: Initializations -// ----------------------------------------------------------------------------- - -function AVSDFEdge(source, target, vEdge) { - LEdge.call(this, source, target, vEdge); -} - -AVSDFEdge.prototype = Object.create(LEdge.prototype); - -for (var properties in LEdge) { - AVSDFEdge[properties] = LEdge[properties]; -} - -// ----------------------------------------------------------------------------- -// Section: Accessor Functions -// ----------------------------------------------------------------------------- - -// The function getOtherEnd returns the other end of this edge. -AVSDFEdge.prototype.getOtherEnd = function (node) { - return LEdge.prototype.getOtherEnd(node); -}; - -// ----------------------------------------------------------------------------- -// Section: Remaining Functions -// ----------------------------------------------------------------------------- - -// This function checks whether this edge crosses with the input edge. It -// returns false, if any of the vertices those edges are incident to are not -// yet placed on the circle. -AVSDFEdge.prototype.crossesWithEdge = function (otherEdge) { - var self = this; - var sourcePos = self.getSource().getIndex(); - var targetPos = self.getTarget().getIndex(); - var otherSourcePos = otherEdge.getSource().getIndex(); - var otherTargetPos = otherEdge.getTarget().getIndex(); - - // if any of the vertices those two edges are not yet placed - if (sourcePos === -1 || targetPos === -1 || otherSourcePos === -1 || otherTargetPos === -1) { - return false; - } - - var otherSourceDist = otherEdge.getSource().getCircDistWithTheNode(self.getSource()); - var otherTargetDist = otherEdge.getTarget().getCircDistWithTheNode(self.getSource()); - var thisTargetDist = self.getTarget().getCircDistWithTheNode(self.getSource()); - - if (thisTargetDist < Math.max(otherSourceDist, otherTargetDist) && thisTargetDist > Math.min(otherSourceDist, otherTargetDist) && otherTargetDist !== 0 && otherSourceDist !== 0) { - return true; - } - - return false; -}; - -// This function returns 1 if this edge crosses with the input edge, 0 -// otherwise. -AVSDFEdge.prototype.crossingWithEdge = function (otherEdge) { - var self = this; - var result = self.crossesWithEdge(otherEdge); - - return result ? 1 : 0; -}; - -// This function calculates the total number of crossings of this edge with -// all the edges given in the input list. -AVSDFEdge.prototype.calculateTotalCrossingWithList = function (edgeList) { - var self = this; - var totalCrossing = 0; - - edgeList.forEach(function (edge) { - return totalCrossing += self.crossingWithEdge(edge); - }); - - return totalCrossing; -}; - -module.exports = AVSDFEdge; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - - -/** - * This class implements data and functionality required for AVSDF layout per - * node. - * - * - * Copyright: i-Vis Research Group, Bilkent University, 2007 - present - */ - -var LNode = __webpack_require__(0).LNode; -__webpack_require__(0).Quicksort; - -// ----------------------------------------------------------------------------- -// Section: Initializations -// ----------------------------------------------------------------------------- - -function AVSDFNode(gm, vNode, loc, size) { - // Constructor 1: AVSDFNode(gm, vNode, loc, size) - if (loc !== undefined && size !== undefined) { - LNode.call(this, gm, vNode, loc, size); - } - // Constructor 2: AVSDFNode(gm, vNode) - else { - LNode.call(this, gm, vNode); - } - - // Angle of this node on the owner circle in radians - this.angle = 0; - - // Index of this node on the owner circle - this.circleIndex = -1; - - // Total number of crossings of the edges this node is incident to - this.totalCrossingOfEdges = -1; - - // Whether the current edge crossing number is valid or it needs to be - // recalculated - this.isCrossingNumberValid = false; -} - -AVSDFNode.prototype = Object.create(LNode.prototype); -for (var properties in LNode) { - AVSDFNode[properties] = LNode[properties]; -} - -// ----------------------------------------------------------------------------- -// Section: Accessor Functions -// ----------------------------------------------------------------------------- - -// This function returns the circle this node is owned by. -AVSDFNode.prototype.getCircle = function () { - return this.getOwner(); -}; - -// This function sets the index of this node on the circle, and sets the -// crossing number invalid. Due to the index change of the node; it needs to -// be recalculated. -AVSDFNode.prototype.setIndex = function (index) { - this.circleIndex = index; - this.isCrossingNumberValid = false; -}; - -// This function returns the index of this node in the ordering of its owner -// circle. Here -1 means that the vertex is not yet placed on its owner -//circle. -AVSDFNode.prototype.getIndex = function () { - return this.circleIndex; -}; - -// This function returns the array of the neigbors of this node sorted in -// ascending order. -AVSDFNode.prototype.getNeighborsSortedByDegree = function () { - var self = this; - - var result = Array.from(self.getNeighborsList()); - result = result.filter(function (node) { - return node.getIndex() === -1; - }); - - result.sort(function (a, b) { - return a.getDegree() - b.getDegree(); - }); - - return result; -}; - -// This function returns the degree of this node. -AVSDFNode.prototype.getDegree = function () { - return this.getEdges().length; -}; - -// This function returns whether or not this node is currently placed on its -// owner circle. -AVSDFNode.prototype.isOrdered = function () { - return this.getIndex() > -1; -}; - -// This function sets the angle of this node w.r.t. its owner circle. Here -// the angle value is in radian. -AVSDFNode.prototype.setAngle = function (angle) { - this.angle = angle; -}; - -// This function returns the angle of this node w.r.t. its owner circle. Here -// the angle value is in radian. -AVSDFNode.prototype.getAngle = function () { - return this.angle; -}; - -// This function returns the index difference of this node with the input -// node. Note that the index difference cannot be negative if both nodes are -// placed on the circle. Here -1 means at least one of the nodes are not yet -// placed on the circle. -AVSDFNode.prototype.getCircDistWithTheNode = function (refNode) { - var self = this; - var otherIndex = refNode.getIndex(); - - if (otherIndex === -1 || self.getIndex() === -1) { - return -1; - } - - var diff = self.getIndex() - otherIndex; - - if (diff < 0) { - diff += self.getCircle().getSize(); - } - - return diff; -}; - -// This function finds the number of edge crossings between the edges of -// this node and the edges of the input one. -AVSDFNode.prototype.getCrossingNumberWithNode = function (otherNode) { - var self = this; - var totalCrossing = 0; - - self.getEdges().forEach(function (edge) { - otherNode.getEdges().forEach(function (otherEdge) { - totalCrossing += edge.crossingWithEdge(otherEdge); - }); - }); - - return totalCrossing; -}; - -// This function returns the total number of edge crossings. If the previously -// calculated value is not valid due to an index change on the circle, then -// a recalculation is performed. -AVSDFNode.prototype.getTotalCrossingOfEdges = function () { - var self = this; - - if (!self.isCrossingNumberValid) { - self.calculateTotalCrossing(); - self.isCrossingNumberValid = true; - } - - return self.totalCrossingOfEdges; -}; - -// ----------------------------------------------------------------------------- -// Section: Remaining Functions -// ----------------------------------------------------------------------------- - -// This function calculates the total number of crossings the edges of this -// node cause. -AVSDFNode.prototype.calculateTotalCrossing = function () { - var self = this; - var temp_crossing_count = 0; - var temp_edge_list = []; - temp_edge_list.push.apply(temp_edge_list, self.getCircle().getEdges()); - temp_edge_list = temp_edge_list.filter(function (ele) { - return self.getEdges().indexOf(ele) < 0; - }); - - self.getEdges().forEach(function (edge) { - return temp_crossing_count += edge.calculateTotalCrossingWithList(temp_edge_list); - }); - - self.totalCrossingOfEdges = temp_crossing_count; -}; - -module.exports = AVSDFNode; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - -/** - * This class implements the overall layout process for the AVSDF algorithm - * (Circular Drawing Algorithm by He and Sykora). - * - * - * Copyright: i-Vis Research Group, Bilkent University, 2007 - present - */ - -var Layout = __webpack_require__(0).Layout; -var AVSDFConstants = __webpack_require__(2); -var AVSDFCircle = __webpack_require__(1); -var AVSDFNode = __webpack_require__(4); -var AVSDFEdge = __webpack_require__(3); - -// ----------------------------------------------------------------------------- -// Section: Initializations -// ----------------------------------------------------------------------------- - -// Constructor -function AVSDFLayout() { - Layout.call(this); - this.nodeSeparation = AVSDFConstants.DEFAULT_NODE_SEPARATION; -} - -AVSDFLayout.prototype = Object.create(Layout.prototype); - -for (var property in Layout) { - AVSDFLayout[property] = Layout[property]; -} - -AVSDFLayout.prototype.newGraph = function (vObject) { - this.avsdfCircle = new AVSDFCircle(null, this.graphManager, vObject); - - return this.avsdfCircle; -}; - -AVSDFLayout.prototype.newNode = function (vNode) { - return new AVSDFNode(this.graphManager, vNode); -}; - -AVSDFLayout.prototype.newEdge = function (vEdge) { - return new AVSDFEdge(null, null, vEdge); -}; - -// ----------------------------------------------------------------------------- -// Section: Accessor Functions -// ----------------------------------------------------------------------------- - -// This function returns the position data for all nodes -AVSDFLayout.prototype.getPositionsData = function () { - var allNodes = this.graphManager.getAllNodes(); - var pData = {}; - - for (var i = 0; i < allNodes.length; i++) { - var rect = allNodes[i].rect; - var id = allNodes[i].id; - - pData[id] = { - id: id, - x: rect.getCenterX(), - y: rect.getCenterY(), - w: rect.width, - h: rect.height - }; - } - - return pData; -}; - -// ----------------------------------------------------------------------------- -// Section: Layout Related -// ----------------------------------------------------------------------------- - -/** - * This function performs layout on constructed l-level graph. - * It returns true on success, false otherwise. - * Important!: If you want to see the results of this function then, after this function is called, you have to calculate - * and set the positions of every node. To do this call updateNodeCoordinates. However, updateNodeAngles on the other - * hand is not needed (redundant) for this function. - */ -AVSDFLayout.prototype.layout = function () { - var self = this; - - // Check if graph contains any compound structures - if (self.graphManager.getGraphs().length > 1) { - return false; - } - - var clusterGraph = this.avsdfCircle; // Fixed reference, but now it is a bit redundant - - clusterGraph.setNodeSeparation(this.nodeSeparation); - clusterGraph.calculateRadius(); - clusterGraph.initOrdering(); - - while (!clusterGraph.hasFinishedOrdering()) { - var node = clusterGraph.findNodeToPlace(); - clusterGraph.putInOrder(node); - } - - return true; -}; - -// This function updates the angle (in radians) property of AVSDFNode elements in the circle -AVSDFLayout.prototype.updateNodeAngles = function () { - this.graphManager.getRoot().correctAngles(); //AVSDFCircle object -}; - -// This function traverses the vertices of the graph and sets their correct coordinates with respect to the owner circle. -AVSDFLayout.prototype.updateNodeCoordinates = function () { - var clusterGraph = this.graphManager.getRoot(); - - clusterGraph.getNodes().forEach(function (node) { - node.setCenter(clusterGraph.getCenterX() + clusterGraph.getRadius() * Math.cos(node.getAngle()), clusterGraph.getCenterY() + clusterGraph.getRadius() * Math.sin(node.getAngle())); - }); -}; - -// ----------------------------------------------------------------------------- -// Section: Post Processing -// ----------------------------------------------------------------------------- - -/** - * This method implements the post processing step of the algorithm, which - * tries to minimize the number of edges further with respect to the local - * adjusting algorithm described by He and Sykora. - */ -AVSDFLayout.prototype.initPostProcess = function () { - this.avsdfCircle.calculateEdgeCrossingsOfNodes(); - - var list = this.avsdfCircle.getNodes(); - - list.sort(function (a, b) { - return b.getTotalCrossingOfEdges() - a.getTotalCrossingOfEdges(); - }); - - return list; -}; - -AVSDFLayout.prototype.oneStepPostProcess = function (node) { - var self = this; - - var currentCrossingNumber = node.getTotalCrossingOfEdges(); - var newCrossingNumber = void 0; - - var neighbours = Array.from(node.getNeighborsList()); - - for (var j = 0; j < neighbours.length; j++) { - var neighbour = neighbours[j]; - - var oldIndex = node.getIndex(); - var newIndex = (neighbour.getIndex() + 1) % self.avsdfCircle.getSize(); - - if (oldIndex !== newIndex) { - node.setIndex(newIndex); - - if (oldIndex < node.getIndex()) { - oldIndex += self.avsdfCircle.getSize(); - } - - var index = node.getIndex(); - - while (index < oldIndex) { - var temp = self.avsdfCircle.getOrder()[index % self.avsdfCircle.getSize()]; - temp.setIndex((temp.getIndex() + 1) % self.avsdfCircle.getSize()); - index += 1; - } - - node.calculateTotalCrossing(); - newCrossingNumber = node.getTotalCrossingOfEdges(); - - if (newCrossingNumber >= currentCrossingNumber) { - self.avsdfCircle.loadOldIndicesOfNodes(); - } else { - self.avsdfCircle.reOrderVertices(); - currentCrossingNumber = newCrossingNumber; - } - } - } -}; - -module.exports = AVSDFLayout; - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - - -var avsdfBase = {}; - -avsdfBase.layoutBase = __webpack_require__(0); -avsdfBase.AVSDFConstants = __webpack_require__(2); -avsdfBase.AVSDFEdge = __webpack_require__(3); -avsdfBase.AVSDFCircle = __webpack_require__(1); -avsdfBase.AVSDFLayout = __webpack_require__(5); -avsdfBase.AVSDFNode = __webpack_require__(4); - -module.exports = avsdfBase; - -/***/ }) -/******/ ]); -}); -}); - -var cytoscapeAvsdf = createCommonjsModule(function (module, exports) { -(function webpackUniversalModuleDefinition(root, factory) { - module.exports = factory(avsdfBase); -})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 3); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE_0__; - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - -// Simple, internal Object.assign() polyfill for options objects etc. - -module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { - for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - srcs[_key - 1] = arguments[_key]; - } - - srcs.forEach(function (src) { - Object.keys(src).forEach(function (k) { - return tgt[k] = src[k]; - }); - }); - - return tgt; -}; - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - -/** - * - * Choose the type of layout that best suits your usecase as a starting point. - * - * A discrete layout is one that algorithmically sets resultant positions. It - * does not have intermediate positions. - * - * A continuous layout is one that updates positions continuously, like a force- - * directed / physics simulation layout. - */ - -module.exports = __webpack_require__(4); - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - - -var impl = __webpack_require__(2); - -// registers the extension on a cytoscape lib ref -var register = function register(cytoscape) { - if (!cytoscape) { - return; - } // can't register if cytoscape unspecified - - cytoscape('layout', 'avsdf', impl); // register with cytoscape.js -}; - -if (typeof cytoscape !== 'undefined') { - // expose to global cytoscape (i.e. window.cytoscape) - register(cytoscape); -} - -module.exports = register; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * This class implements the overall layout process for the - * Adjacent Vertex with Smallest Degree First (AVSDF) algorithm. - * (Circular Drawing Algorithm by Hongmei He & Ondrej Sýkora). - * - * @author Doruk Çakmakçı - * @author Alihan Okka - * - * Copyright: i-Vis (Information Visualization) Research Lab, Bilkent University, 2019 - present -*/ - -// cytosscape.js-avsdf REQUIRES avsdf-base library elements -var AVSDFLayout = __webpack_require__(0).AVSDFLayout; -var AVSDFNode = __webpack_require__(0).AVSDFNode; -var AVSDFConstants = __webpack_require__(0).AVSDFConstants; -var PointD = __webpack_require__(0).layoutBase.PointD; -var DimensionD = __webpack_require__(0).layoutBase.DimensionD; - -// Cytoscape-extention template requirements -// More details can be found in NPM 'slush-cytoscape-extension' package -var assign = __webpack_require__(1); -var ContinuousLayout = __webpack_require__(6); - -var defaults = { - ready: function ready() {}, // Called on `layoutready` - stop: function stop() {}, // Called on `layoutstop` - refresh: 30, // number of ticks per frame; higher is faster but more jerky - fit: true, // Whether to fit the network view after when done - padding: 10, // Padding on fit - randomize: false, // Whether to enable incremental mode - animate: 'end', // Type of layout animation. The option set is {'during', 'end', false} - animationDuration: 500, // Duration for animate:end - nodeSeparation: 60 // How apart the nodes are -}; - -/** - * This is the main class that does all the functionality. - * The class is utilized by functions in the continuous-base folder. - */ - -var AVSDF = function (_ContinuousLayout) { - _inherits(AVSDF, _ContinuousLayout); - - function AVSDF(options) { - _classCallCheck(this, AVSDF); - - // Whether node separation value is used - var _this = _possibleConstructorReturn(this, (AVSDF.__proto__ || Object.getPrototypeOf(AVSDF)).call(this, assign({}, defaults, options))); - - if (options.nodeSeparation != null) AVSDFConstants.DEFAULT_NODE_SEPARATION = options.nodeSeparation;else AVSDFConstants.DEFAULT_NODE_SEPARATION = defaults.nodeSeparation; - return _this; - } - - /** - * Initializing AVSDF elements and arranging the nodes of the graph around the circle - */ - - - _createClass(AVSDF, [{ - key: 'prerun', - value: function prerun() { - var state = this.state; // options object combined with current state - - // Initialize AVSDF elements and their requirements - var avsdfLayout = this.avsdfLayout = new AVSDFLayout(); - var graphManager = this.graphManager = avsdfLayout.newGraphManager(); - var root = this.root = graphManager.addRoot(); - var nodes = state.nodes; - var edges = state.edges; - - // Getting nodes of cytoscape and converting it to AVSDF structure - this.idToLNode = {}; - this.processChildrenList(root, nodes, avsdfLayout); - - // Getting edges of cytoscape and transfering it to GraphManager - for (var i = 0; i < edges.length; i++) { - var edge = edges[i]; - var sourceNode = this.idToLNode[edge.data("source")]; - var targetNode = this.idToLNode[edge.data("target")]; - if (sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length === 0) { - var e1 = graphManager.add(avsdfLayout.newEdge(), sourceNode, targetNode); - e1.id = edge.id(); - } - } - - // Running the AVSDF layout. - // Note: This function doesn't do post-processing. Plus, nodes have to be positioned. - // See AVSDFLayout for details. - avsdfLayout.layout(); - - // We need to calculate the initial circle position if we want to render it - avsdfLayout.updateNodeCoordinates(); - - // Post process is iterated over the sorted list of vertex degrees (descending) - this.sortedByDegreeList = avsdfLayout.initPostProcess(); - } - - /** - * Runs this in each iteration - */ - - }, { - key: 'tick', - value: function tick() { - var _this2 = this; - - var state = this.state; - - // This function is used for getting coordinates from AVSDF elements and passing it to cytoscape - var positions = this.avsdfLayout.getPositionsData(); - state.nodes.forEach(function (n) { - var s = _this2.getScratch(n); - - // example : put node at random position - s.x = positions[n.data('id')].x; - s.y = positions[n.data('id')].y; - }); - - if (state.tickIndex >= state.nodes.size()) return true; - - this.avsdfLayout.oneStepPostProcess(this.sortedByDegreeList[state.tickIndex]); - this.avsdfLayout.updateNodeAngles(); - this.avsdfLayout.updateNodeCoordinates(); - } - - /** - * Runs this function after the layout is done ticking - */ - - }, { - key: 'postrun', - value: function postrun() {} - - /** - * Clean up any object refs that could prevent garbage collection, etc. - */ - - }, { - key: 'destroy', - value: function destroy() { - _get(AVSDF.prototype.__proto__ || Object.getPrototypeOf(AVSDF.prototype), 'destroy', this).call(this); - return this; - } - - /** - * Transition from cytoscape nodes to AVSDF elements - */ - - }, { - key: 'processChildrenList', - value: function processChildrenList(parent, children, layout) { - var size = children.length; - for (var i = 0; i < size; i++) { - var theChild = children[i]; - var theNode = void 0; - - //Label dimensions are NOT included when calculating node dimensions - var dimensions = theChild.layoutDimensions({ - nodeDimensionsIncludeLabels: false - }); - - if (theChild.outerWidth() != null && theChild.outerHeight() != null) { - theNode = parent.add(new AVSDFNode(layout.graphManager, null, new PointD(theChild.position('x') - dimensions.w / 2, theChild.position('y') - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h)))); - } else { - theNode = parent.add(new AVSDFNode(this.graphManager)); - } - - // Attach id to the layout node - theNode.id = theChild.data("id"); - - // Attach the paddings of cy node to layout node - theNode.paddingLeft = parseInt(theChild.css('padding')); - theNode.paddingTop = parseInt(theChild.css('padding')); - theNode.paddingRight = parseInt(theChild.css('padding')); - theNode.paddingBottom = parseInt(theChild.css('padding')); - - // Map the layout node - this.idToLNode[theChild.data("id")] = theNode; - - if (isNaN(theNode.rect.x)) { - theNode.rect.x = 0; - } - - if (isNaN(theNode.rect.y)) { - theNode.rect.y = 0; - } - } - } - }]); - - return AVSDF; -}(ContinuousLayout); - -module.exports = AVSDF; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - -// general default options for force-directed layout - -module.exports = Object.freeze({ - animate: true, // whether to show the layout as it's running; special 'end' value makes the layout animate like a discrete layout - refresh: 10, // number of ticks per frame; higher is faster but more jerky - maxIterations: 1000, // max iterations before the layout will bail out - ungrabifyWhileSimulating: false, // so you can't drag nodes during layout - fit: true, // on every layout reposition of nodes, fit the viewport - padding: 30, // padding around the simulation - boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - - // layout event callbacks - ready: function ready() {}, // on layoutready - stop: function stop() {}, // on layoutstop - - // positioning options - randomize: false, // use random node positions at beginning of layout - - // infinite layout options - infinite: false // overrides all other options for a forces-all-the-time mode -}); - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - A generic continuous layout class - */ - -var assign = __webpack_require__(1); -var defaults = __webpack_require__(5); -var makeBoundingBox = __webpack_require__(7); - -var _require = __webpack_require__(8), - setInitialPositionState = _require.setInitialPositionState, - refreshPositions = _require.refreshPositions, - getNodePositionData = _require.getNodePositionData; - -var _require2 = __webpack_require__(9), - multitick = _require2.multitick; - -var Layout = function () { - function Layout(options) { - _classCallCheck(this, Layout); - - var o = this.options = assign({}, defaults, options); - - var s = this.state = assign({}, o, { - layout: this, - nodes: o.eles.nodes(), - edges: o.eles.edges(), - tickIndex: 0, - firstUpdate: true - }); - - s.animateEnd = o.animate && o.animate === 'end'; - s.animateContinuously = o.animate && !s.animateEnd; - } - - _createClass(Layout, [{ - key: 'getScratch', - value: function getScratch(el) { - var name = this.state.name; - var scratch = el.scratch(name); - - if (!scratch) { - scratch = {}; - - el.scratch(name, scratch); - } - - return scratch; - } - }, { - key: 'run', - value: function run() { - var l = this; - var s = this.state; - - s.tickIndex = 0; - s.firstUpdate = true; - s.startTime = Date.now(); - s.running = true; - - s.currentBoundingBox = makeBoundingBox(s.boundingBox, s.cy); - - if (s.ready) { - l.one('ready', s.ready); - } - if (s.stop) { - l.one('stop', s.stop); - } - - s.nodes.forEach(function (n) { - return setInitialPositionState(n, s); - }); - - l.prerun(s); - - if (s.animateContinuously) { - var ungrabify = function ungrabify(node) { - if (!s.ungrabifyWhileSimulating) { - return; - } - - var grabbable = getNodePositionData(node, s).grabbable = node.grabbable(); - - if (grabbable) { - node.ungrabify(); - } - }; - - var regrabify = function regrabify(node) { - if (!s.ungrabifyWhileSimulating) { - return; - } - - var grabbable = getNodePositionData(node, s).grabbable; - - if (grabbable) { - node.grabify(); - } - }; - - var updateGrabState = function updateGrabState(node) { - return getNodePositionData(node, s).grabbed = node.grabbed(); - }; - - var onGrab = function onGrab(_ref) { - var target = _ref.target; - - updateGrabState(target); - }; - - var onFree = onGrab; - - var onDrag = function onDrag(_ref2) { - var target = _ref2.target; - - var p = getNodePositionData(target, s); - var tp = target.position(); - - p.x = tp.x; - p.y = tp.y; - }; - - var listenToGrab = function listenToGrab(node) { - node.on('grab', onGrab); - node.on('free', onFree); - node.on('drag', onDrag); - }; - - var unlistenToGrab = function unlistenToGrab(node) { - node.removeListener('grab', onGrab); - node.removeListener('free', onFree); - node.removeListener('drag', onDrag); - }; - - var fit = function fit() { - if (s.fit && s.animateContinuously) { - s.cy.fit(s.padding); - } - }; - - var onNotDone = function onNotDone() { - refreshPositions(s.nodes, s); - fit(); - - requestAnimationFrame(_frame); - }; - - var _frame = function _frame() { - multitick(s, onNotDone, _onDone); - }; - - var _onDone = function _onDone() { - refreshPositions(s.nodes, s); - fit(); - - s.nodes.forEach(function (n) { - regrabify(n); - unlistenToGrab(n); - }); - - s.running = false; - - l.emit('layoutstop'); - }; - - l.emit('layoutstart'); - - s.nodes.forEach(function (n) { - ungrabify(n); - listenToGrab(n); - }); - - _frame(); // kick off - } else { - var done = false; - var _onNotDone = function _onNotDone() {}; - var _onDone2 = function _onDone2() { - return done = true; - }; - - while (!done) { - multitick(s, _onNotDone, _onDone2); - } - - s.eles.layoutPositions(this, s, function (node) { - var pd = getNodePositionData(node, s); - - return { x: pd.x, y: pd.y }; - }); - } - - l.postrun(s); - - return this; // chaining - } - }, { - key: 'prerun', - value: function prerun() {} - }, { - key: 'postrun', - value: function postrun() {} - }, { - key: 'tick', - value: function tick() {} - }, { - key: 'stop', - value: function stop() { - this.state.running = false; - - return this; // chaining - } - }, { - key: 'destroy', - value: function destroy() { - return this; // chaining - } - }]); - - return Layout; -}(); - -module.exports = Layout; - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - - -module.exports = function (bb, cy) { - if (bb == null) { - bb = { x1: 0, y1: 0, w: cy.width(), h: cy.height() }; - } else { - // copy - bb = { x1: bb.x1, x2: bb.x2, y1: bb.y1, y2: bb.y2, w: bb.w, h: bb.h }; - } - - if (bb.x2 == null) { - bb.x2 = bb.x1 + bb.w; - } - if (bb.w == null) { - bb.w = bb.x2 - bb.x1; - } - if (bb.y2 == null) { - bb.y2 = bb.y1 + bb.h; - } - if (bb.h == null) { - bb.h = bb.y2 - bb.y1; - } - - return bb; -}; - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - - -var assign = __webpack_require__(1); - -var setInitialPositionState = function setInitialPositionState(node, state) { - var p = node.position(); - var bb = state.currentBoundingBox; - var scratch = node.scratch(state.name); - - if (scratch == null) { - scratch = {}; - - node.scratch(state.name, scratch); - } - - assign(scratch, state.randomize ? { - x: bb.x1 + Math.round(Math.random() * bb.w), - y: bb.y1 + Math.round(Math.random() * bb.h) - } : { - x: p.x, - y: p.y - }); - - scratch.locked = node.locked(); -}; - -var getNodePositionData = function getNodePositionData(node, state) { - return node.scratch(state.name); -}; - -var refreshPositions = function refreshPositions(nodes, state) { - nodes.positions(function (node) { - var scratch = node.scratch(state.name); - - return { - x: scratch.x, - y: scratch.y - }; - }); -}; - -module.exports = { setInitialPositionState: setInitialPositionState, getNodePositionData: getNodePositionData, refreshPositions: refreshPositions }; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - - -var nop = function nop() {}; - -var tick = function tick(state) { - var s = state; - var l = state.layout; - - var tickIndicatesDone = l.tick(s); - - if (s.firstUpdate) { - if (s.animateContinuously) { - // indicate the initial positions have been set - s.layout.emit('layoutready'); - } - s.firstUpdate = false; - } - - s.tickIndex++; - - Date.now() - s.startTime; - - return !s.infinite && tickIndicatesDone; -}; - -var multitick = function multitick(state) { - var onNotDone = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : nop; - var onDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : nop; - - var done = false; - var s = state; - - for (var i = 0; i < s.refresh; i++) { - done = !s.running || tick(s); - - if (done) { - break; - } - } - - if (!done) { - onNotDone(); - } else { - onDone(); - } -}; - -module.exports = { tick: tick, multitick: multitick }; - -/***/ }) -/******/ ]); -}); -}); - -var avsdf = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeAvsdf); - -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; - this.size = 0; -} - -var _listCacheClear = listCacheClear; - -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} - -var eq_1 = eq; - -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq_1(array[length][0], key)) { - return length; - } - } - return -1; -} - -var _assocIndexOf = assocIndexOf; - -/** Used for built-in method references. */ -var arrayProto = Array.prototype; - -/** Built-in value references. */ -var splice = arrayProto.splice; - -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = _assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; -} - -var _listCacheDelete = listCacheDelete; - -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = _assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; -} - -var _listCacheGet = listCacheGet; - -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return _assocIndexOf(this.__data__, key) > -1; -} - -var _listCacheHas = listCacheHas; - -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = _assocIndexOf(data, key); - - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; -} - -var _listCacheSet = listCacheSet; - -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -// Add methods to `ListCache`. -ListCache.prototype.clear = _listCacheClear; -ListCache.prototype['delete'] = _listCacheDelete; -ListCache.prototype.get = _listCacheGet; -ListCache.prototype.has = _listCacheHas; -ListCache.prototype.set = _listCacheSet; - -var _ListCache = ListCache; - -/** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ -function stackClear() { - this.__data__ = new _ListCache; - this.size = 0; -} - -var _stackClear = stackClear; - -/** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; -} - -var _stackDelete = stackDelete; - -/** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function stackGet(key) { - return this.__data__.get(key); -} - -var _stackGet = stackGet; - -/** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function stackHas(key) { - return this.__data__.has(key); -} - -var _stackHas = stackHas; - -/** Detect free variable `global` from Node.js. */ - -var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; - -var _freeGlobal = freeGlobal; - -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - -/** Used as a reference to the global object. */ -var root = _freeGlobal || freeSelf || Function('return this')(); - -var _root = root; - -/** Built-in value references. */ -var Symbol$1 = _root.Symbol; - -var _Symbol = Symbol$1; - -/** Used for built-in method references. */ -var objectProto$i = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$f = objectProto$i.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString$1 = objectProto$i.toString; - -/** Built-in value references. */ -var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined; - -/** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ -function getRawTag(value) { - var isOwn = hasOwnProperty$f.call(value, symToStringTag$1), - tag = value[symToStringTag$1]; - - try { - value[symToStringTag$1] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString$1.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag$1] = tag; - } else { - delete value[symToStringTag$1]; - } - } - return result; -} - -var _getRawTag = getRawTag; - -/** Used for built-in method references. */ -var objectProto$h = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto$h.toString; - -/** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ -function objectToString(value) { - return nativeObjectToString.call(value); -} - -var _objectToString = objectToString; - -/** `Object#toString` result references. */ -var nullTag = '[object Null]', - undefinedTag = '[object Undefined]'; - -/** Built-in value references. */ -var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined; - -/** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? _getRawTag(value) - : _objectToString(value); -} - -var _baseGetTag = baseGetTag; - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); -} - -var isObject_1 = isObject; - -/** `Object#toString` result references. */ -var asyncTag = '[object AsyncFunction]', - funcTag$2 = '[object Function]', - genTag$1 = '[object GeneratorFunction]', - proxyTag = '[object Proxy]'; - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - if (!isObject_1(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = _baseGetTag(value); - return tag == funcTag$2 || tag == genTag$1 || tag == asyncTag || tag == proxyTag; -} - -var isFunction_1 = isFunction; - -/** Used to detect overreaching core-js shims. */ -var coreJsData = _root['__core-js_shared__']; - -var _coreJsData = coreJsData; - -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); - -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} - -var _isMasked = isMasked; - -/** Used for built-in method references. */ -var funcProto$2 = Function.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString$2 = funcProto$2.toString; - -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString$2.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; -} - -var _toSource = toSource; - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** Used for built-in method references. */ -var funcProto$1 = Function.prototype, - objectProto$g = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString$1 = funcProto$1.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty$e = objectProto$g.hasOwnProperty; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString$1.call(hasOwnProperty$e).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject_1(value) || _isMasked(value)) { - return false; - } - var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor; - return pattern.test(_toSource(value)); -} - -var _baseIsNative = baseIsNative; - -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; -} - -var _getValue = getValue; - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = _getValue(object, key); - return _baseIsNative(value) ? value : undefined; -} - -var _getNative = getNative; - -/* Built-in method references that are verified to be native. */ -var Map$1 = _getNative(_root, 'Map'); - -var _Map = Map$1; - -/* Built-in method references that are verified to be native. */ -var nativeCreate = _getNative(Object, 'create'); - -var _nativeCreate = nativeCreate; - -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = _nativeCreate ? _nativeCreate(null) : {}; - this.size = 0; -} - -var _hashClear = hashClear; - -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; -} - -var _hashDelete = hashDelete; - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED$2 = '__lodash_hash_undefined__'; - -/** Used for built-in method references. */ -var objectProto$f = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$d = objectProto$f.hasOwnProperty; - -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (_nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED$2 ? undefined : result; - } - return hasOwnProperty$d.call(data, key) ? data[key] : undefined; -} - -var _hashGet = hashGet; - -/** Used for built-in method references. */ -var objectProto$e = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$c = objectProto$e.hasOwnProperty; - -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$c.call(data, key); -} - -var _hashHas = hashHas; - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED$1 = '__lodash_hash_undefined__'; - -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value; - return this; -} - -var _hashSet = hashSet; - -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -// Add methods to `Hash`. -Hash.prototype.clear = _hashClear; -Hash.prototype['delete'] = _hashDelete; -Hash.prototype.get = _hashGet; -Hash.prototype.has = _hashHas; -Hash.prototype.set = _hashSet; - -var _Hash = Hash; - -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new _Hash, - 'map': new (_Map || _ListCache), - 'string': new _Hash - }; -} - -var _mapCacheClear = mapCacheClear; - -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} - -var _isKeyable = isKeyable; - -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return _isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} - -var _getMapData = getMapData; - -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - var result = _getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; -} - -var _mapCacheDelete = mapCacheDelete; - -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return _getMapData(this, key).get(key); -} - -var _mapCacheGet = mapCacheGet; - -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return _getMapData(this, key).has(key); -} - -var _mapCacheHas = mapCacheHas; - -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - var data = _getMapData(this, key), - size = data.size; - - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; -} - -var _mapCacheSet = mapCacheSet; - -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -// Add methods to `MapCache`. -MapCache.prototype.clear = _mapCacheClear; -MapCache.prototype['delete'] = _mapCacheDelete; -MapCache.prototype.get = _mapCacheGet; -MapCache.prototype.has = _mapCacheHas; -MapCache.prototype.set = _mapCacheSet; - -var _MapCache = MapCache; - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE$1 = 200; - -/** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ -function stackSet(key, value) { - var data = this.__data__; - if (data instanceof _ListCache) { - var pairs = data.__data__; - if (!_Map || (pairs.length < LARGE_ARRAY_SIZE$1 - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new _MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; -} - -var _stackSet = stackSet; - -/** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Stack(entries) { - var data = this.__data__ = new _ListCache(entries); - this.size = data.size; -} - -// Add methods to `Stack`. -Stack.prototype.clear = _stackClear; -Stack.prototype['delete'] = _stackDelete; -Stack.prototype.get = _stackGet; -Stack.prototype.has = _stackHas; -Stack.prototype.set = _stackSet; - -var _Stack = Stack; - -/** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ -function arrayEach(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; -} - -var _arrayEach = arrayEach; - -var defineProperty = (function() { - try { - var func = _getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} -}()); - -var _defineProperty = defineProperty; - -/** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function baseAssignValue(object, key, value) { - if (key == '__proto__' && _defineProperty) { - _defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; - } -} - -var _baseAssignValue = baseAssignValue; - -/** Used for built-in method references. */ -var objectProto$d = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$b = objectProto$d.hasOwnProperty; - -/** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty$b.call(object, key) && eq_1(objValue, value)) || - (value === undefined && !(key in object))) { - _baseAssignValue(object, key, value); - } -} - -var _assignValue = assignValue; - -/** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ -function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - if (newValue === undefined) { - newValue = source[key]; - } - if (isNew) { - _baseAssignValue(object, key, newValue); - } else { - _assignValue(object, key, newValue); - } - } - return object; -} - -var _copyObject = copyObject; - -/** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ -function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; -} - -var _baseTimes = baseTimes; - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return value != null && typeof value == 'object'; -} - -var isObjectLike_1 = isObjectLike; - -/** `Object#toString` result references. */ -var argsTag$3 = '[object Arguments]'; - -/** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ -function baseIsArguments(value) { - return isObjectLike_1(value) && _baseGetTag(value) == argsTag$3; -} - -var _baseIsArguments = baseIsArguments; - -/** Used for built-in method references. */ -var objectProto$c = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$a = objectProto$c.hasOwnProperty; - -/** Built-in value references. */ -var propertyIsEnumerable$1 = objectProto$c.propertyIsEnumerable; - -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) { - return isObjectLike_1(value) && hasOwnProperty$a.call(value, 'callee') && - !propertyIsEnumerable$1.call(value, 'callee'); -}; - -var isArguments_1 = isArguments; - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -var isArray_1 = isArray; - -/** - * This method returns `false`. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {boolean} Returns `false`. - * @example - * - * _.times(2, _.stubFalse); - * // => [false, false] - */ -function stubFalse() { - return false; -} - -var stubFalse_1 = stubFalse; - -var isBuffer_1 = createCommonjsModule(function (module, exports) { -/** Detect free variable `exports`. */ -var freeExports = exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** Built-in value references. */ -var Buffer = moduleExports ? _root.Buffer : undefined; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; - -/** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ -var isBuffer = nativeIsBuffer || stubFalse_1; - -module.exports = isBuffer; -}); - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER$1 = 9007199254740991; - -/** Used to detect unsigned integer values. */ -var reIsUint = /^(?:0|[1-9]\d*)$/; - -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER$1 : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); -} - -var _isIndex = isIndex; - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -var isLength_1 = isLength; - -/** `Object#toString` result references. */ -var argsTag$2 = '[object Arguments]', - arrayTag$2 = '[object Array]', - boolTag$3 = '[object Boolean]', - dateTag$3 = '[object Date]', - errorTag$2 = '[object Error]', - funcTag$1 = '[object Function]', - mapTag$7 = '[object Map]', - numberTag$3 = '[object Number]', - objectTag$4 = '[object Object]', - regexpTag$3 = '[object RegExp]', - setTag$7 = '[object Set]', - stringTag$4 = '[object String]', - weakMapTag$2 = '[object WeakMap]'; - -var arrayBufferTag$3 = '[object ArrayBuffer]', - dataViewTag$4 = '[object DataView]', - float32Tag$2 = '[object Float32Array]', - float64Tag$2 = '[object Float64Array]', - int8Tag$2 = '[object Int8Array]', - int16Tag$2 = '[object Int16Array]', - int32Tag$2 = '[object Int32Array]', - uint8Tag$2 = '[object Uint8Array]', - uint8ClampedTag$2 = '[object Uint8ClampedArray]', - uint16Tag$2 = '[object Uint16Array]', - uint32Tag$2 = '[object Uint32Array]'; - -/** Used to identify `toStringTag` values of typed arrays. */ -var typedArrayTags = {}; -typedArrayTags[float32Tag$2] = typedArrayTags[float64Tag$2] = -typedArrayTags[int8Tag$2] = typedArrayTags[int16Tag$2] = -typedArrayTags[int32Tag$2] = typedArrayTags[uint8Tag$2] = -typedArrayTags[uint8ClampedTag$2] = typedArrayTags[uint16Tag$2] = -typedArrayTags[uint32Tag$2] = true; -typedArrayTags[argsTag$2] = typedArrayTags[arrayTag$2] = -typedArrayTags[arrayBufferTag$3] = typedArrayTags[boolTag$3] = -typedArrayTags[dataViewTag$4] = typedArrayTags[dateTag$3] = -typedArrayTags[errorTag$2] = typedArrayTags[funcTag$1] = -typedArrayTags[mapTag$7] = typedArrayTags[numberTag$3] = -typedArrayTags[objectTag$4] = typedArrayTags[regexpTag$3] = -typedArrayTags[setTag$7] = typedArrayTags[stringTag$4] = -typedArrayTags[weakMapTag$2] = false; - -/** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ -function baseIsTypedArray(value) { - return isObjectLike_1(value) && - isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)]; -} - -var _baseIsTypedArray = baseIsTypedArray; - -/** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ -function baseUnary(func) { - return function(value) { - return func(value); - }; -} - -var _baseUnary = baseUnary; - -var _nodeUtil = createCommonjsModule(function (module, exports) { -/** Detect free variable `exports`. */ -var freeExports = exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** Detect free variable `process` from Node.js. */ -var freeProcess = moduleExports && _freeGlobal.process; - -/** Used to access faster Node.js helpers. */ -var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; - - if (types) { - return types; - } - - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} -}()); - -module.exports = nodeUtil; -}); - -/* Node.js helper references. */ -var nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray; - -/** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ -var isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray; - -var isTypedArray_1 = isTypedArray; - -/** Used for built-in method references. */ -var objectProto$b = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$9 = objectProto$b.hasOwnProperty; - -/** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ -function arrayLikeKeys(value, inherited) { - var isArr = isArray_1(value), - isArg = !isArr && isArguments_1(value), - isBuff = !isArr && !isArg && isBuffer_1(value), - isType = !isArr && !isArg && !isBuff && isTypedArray_1(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? _baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty$9.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - _isIndex(key, length) - ))) { - result.push(key); - } - } - return result; -} - -var _arrayLikeKeys = arrayLikeKeys; - -/** Used for built-in method references. */ -var objectProto$a = Object.prototype; - -/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ -function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$a; - - return value === proto; -} - -var _isPrototype = isPrototype; - -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; -} - -var _overArg = overArg; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeKeys = _overArg(Object.keys, Object); - -var _nativeKeys = nativeKeys; - -/** Used for built-in method references. */ -var objectProto$9 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$8 = objectProto$9.hasOwnProperty; - -/** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeys(object) { - if (!_isPrototype(object)) { - return _nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty$8.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; -} - -var _baseKeys = baseKeys; - -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength_1(value.length) && !isFunction_1(value); -} - -var isArrayLike_1 = isArrayLike; - -/** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ -function keys(object) { - return isArrayLike_1(object) ? _arrayLikeKeys(object) : _baseKeys(object); -} - -var keys_1 = keys; - -/** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ -function baseAssign(object, source) { - return object && _copyObject(source, keys_1(source), object); -} - -var _baseAssign = baseAssign; - -/** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; -} - -var _nativeKeysIn = nativeKeysIn; - -/** Used for built-in method references. */ -var objectProto$8 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$7 = objectProto$8.hasOwnProperty; - -/** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeysIn(object) { - if (!isObject_1(object)) { - return _nativeKeysIn(object); - } - var isProto = _isPrototype(object), - result = []; - - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty$7.call(object, key)))) { - result.push(key); - } - } - return result; -} - -var _baseKeysIn = baseKeysIn; - -/** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ -function keysIn(object) { - return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object); -} - -var keysIn_1 = keysIn; - -/** - * The base implementation of `_.assignIn` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ -function baseAssignIn(object, source) { - return object && _copyObject(source, keysIn_1(source), object); -} - -var _baseAssignIn = baseAssignIn; - -var _cloneBuffer = createCommonjsModule(function (module, exports) { -/** Detect free variable `exports`. */ -var freeExports = exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** Built-in value references. */ -var Buffer = moduleExports ? _root.Buffer : undefined, - allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; - -/** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ -function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - - buffer.copy(result); - return result; -} - -module.exports = cloneBuffer; -}); - -/** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ -function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; -} - -var _copyArray = copyArray; - -/** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; -} - -var _arrayFilter = arrayFilter; - -/** - * This method returns a new empty array. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {Array} Returns the new empty array. - * @example - * - * var arrays = _.times(2, _.stubArray); - * - * console.log(arrays); - * // => [[], []] - * - * console.log(arrays[0] === arrays[1]); - * // => false - */ -function stubArray() { - return []; -} - -var stubArray_1 = stubArray; - -/** Used for built-in method references. */ -var objectProto$7 = Object.prototype; - -/** Built-in value references. */ -var propertyIsEnumerable = objectProto$7.propertyIsEnumerable; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols$1 = Object.getOwnPropertySymbols; - -/** - * Creates an array of the own enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbols = !nativeGetSymbols$1 ? stubArray_1 : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return _arrayFilter(nativeGetSymbols$1(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); - }); -}; - -var _getSymbols = getSymbols; - -/** - * Copies own symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ -function copySymbols(source, object) { - return _copyObject(source, _getSymbols(source), object); -} - -var _copySymbols = copySymbols; - -/** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ -function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; -} - -var _arrayPush = arrayPush; - -/** Built-in value references. */ -var getPrototype = _overArg(Object.getPrototypeOf, Object); - -var _getPrototype = getPrototype; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols = Object.getOwnPropertySymbols; - -/** - * Creates an array of the own and inherited enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbolsIn = !nativeGetSymbols ? stubArray_1 : function(object) { - var result = []; - while (object) { - _arrayPush(result, _getSymbols(object)); - object = _getPrototype(object); - } - return result; -}; - -var _getSymbolsIn = getSymbolsIn; - -/** - * Copies own and inherited symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ -function copySymbolsIn(source, object) { - return _copyObject(source, _getSymbolsIn(source), object); -} - -var _copySymbolsIn = copySymbolsIn; - -/** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ -function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray_1(object) ? result : _arrayPush(result, symbolsFunc(object)); -} - -var _baseGetAllKeys = baseGetAllKeys; - -/** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ -function getAllKeys(object) { - return _baseGetAllKeys(object, keys_1, _getSymbols); -} - -var _getAllKeys = getAllKeys; - -/** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ -function getAllKeysIn(object) { - return _baseGetAllKeys(object, keysIn_1, _getSymbolsIn); -} - -var _getAllKeysIn = getAllKeysIn; - -/* Built-in method references that are verified to be native. */ -var DataView = _getNative(_root, 'DataView'); - -var _DataView = DataView; - -/* Built-in method references that are verified to be native. */ -var Promise$1 = _getNative(_root, 'Promise'); - -var _Promise = Promise$1; - -/* Built-in method references that are verified to be native. */ -var Set$1 = _getNative(_root, 'Set'); - -var _Set = Set$1; - -/* Built-in method references that are verified to be native. */ -var WeakMap = _getNative(_root, 'WeakMap'); - -var _WeakMap = WeakMap; - -/** `Object#toString` result references. */ -var mapTag$6 = '[object Map]', - objectTag$3 = '[object Object]', - promiseTag = '[object Promise]', - setTag$6 = '[object Set]', - weakMapTag$1 = '[object WeakMap]'; - -var dataViewTag$3 = '[object DataView]'; - -/** Used to detect maps, sets, and weakmaps. */ -var dataViewCtorString = _toSource(_DataView), - mapCtorString = _toSource(_Map), - promiseCtorString = _toSource(_Promise), - setCtorString = _toSource(_Set), - weakMapCtorString = _toSource(_WeakMap); - -/** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -var getTag = _baseGetTag; - -// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. -if ((_DataView && getTag(new _DataView(new ArrayBuffer(1))) != dataViewTag$3) || - (_Map && getTag(new _Map) != mapTag$6) || - (_Promise && getTag(_Promise.resolve()) != promiseTag) || - (_Set && getTag(new _Set) != setTag$6) || - (_WeakMap && getTag(new _WeakMap) != weakMapTag$1)) { - getTag = function(value) { - var result = _baseGetTag(value), - Ctor = result == objectTag$3 ? value.constructor : undefined, - ctorString = Ctor ? _toSource(Ctor) : ''; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag$3; - case mapCtorString: return mapTag$6; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag$6; - case weakMapCtorString: return weakMapTag$1; - } - } - return result; - }; -} - -var _getTag = getTag; - -/** Used for built-in method references. */ -var objectProto$6 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$6 = objectProto$6.hasOwnProperty; - -/** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ -function initCloneArray(array) { - var length = array.length, - result = new array.constructor(length); - - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty$6.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; -} - -var _initCloneArray = initCloneArray; - -/** Built-in value references. */ -var Uint8Array$1 = _root.Uint8Array; - -var _Uint8Array = Uint8Array$1; - -/** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ -function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new _Uint8Array(result).set(new _Uint8Array(arrayBuffer)); - return result; -} - -var _cloneArrayBuffer = cloneArrayBuffer; - -/** - * Creates a clone of `dataView`. - * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. - */ -function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? _cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); -} - -var _cloneDataView = cloneDataView; - -/** Used to match `RegExp` flags from their coerced string values. */ -var reFlags = /\w*$/; - -/** - * Creates a clone of `regexp`. - * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. - */ -function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; -} - -var _cloneRegExp = cloneRegExp; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto$2 = _Symbol ? _Symbol.prototype : undefined, - symbolValueOf$1 = symbolProto$2 ? symbolProto$2.valueOf : undefined; - -/** - * Creates a clone of the `symbol` object. - * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. - */ -function cloneSymbol(symbol) { - return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {}; -} - -var _cloneSymbol = cloneSymbol; - -/** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ -function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? _cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); -} - -var _cloneTypedArray = cloneTypedArray; - -/** `Object#toString` result references. */ -var boolTag$2 = '[object Boolean]', - dateTag$2 = '[object Date]', - mapTag$5 = '[object Map]', - numberTag$2 = '[object Number]', - regexpTag$2 = '[object RegExp]', - setTag$5 = '[object Set]', - stringTag$3 = '[object String]', - symbolTag$3 = '[object Symbol]'; - -var arrayBufferTag$2 = '[object ArrayBuffer]', - dataViewTag$2 = '[object DataView]', - float32Tag$1 = '[object Float32Array]', - float64Tag$1 = '[object Float64Array]', - int8Tag$1 = '[object Int8Array]', - int16Tag$1 = '[object Int16Array]', - int32Tag$1 = '[object Int32Array]', - uint8Tag$1 = '[object Uint8Array]', - uint8ClampedTag$1 = '[object Uint8ClampedArray]', - uint16Tag$1 = '[object Uint16Array]', - uint32Tag$1 = '[object Uint32Array]'; - -/** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ -function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag$2: - return _cloneArrayBuffer(object); - - case boolTag$2: - case dateTag$2: - return new Ctor(+object); - - case dataViewTag$2: - return _cloneDataView(object, isDeep); - - case float32Tag$1: case float64Tag$1: - case int8Tag$1: case int16Tag$1: case int32Tag$1: - case uint8Tag$1: case uint8ClampedTag$1: case uint16Tag$1: case uint32Tag$1: - return _cloneTypedArray(object, isDeep); - - case mapTag$5: - return new Ctor; - - case numberTag$2: - case stringTag$3: - return new Ctor(object); - - case regexpTag$2: - return _cloneRegExp(object); - - case setTag$5: - return new Ctor; - - case symbolTag$3: - return _cloneSymbol(object); - } -} - -var _initCloneByTag = initCloneByTag; - -/** Built-in value references. */ -var objectCreate = Object.create; - -/** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ -var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject_1(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; -}()); - -var _baseCreate = baseCreate; - -/** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ -function initCloneObject(object) { - return (typeof object.constructor == 'function' && !_isPrototype(object)) - ? _baseCreate(_getPrototype(object)) - : {}; -} - -var _initCloneObject = initCloneObject; - -/** `Object#toString` result references. */ -var mapTag$4 = '[object Map]'; - -/** - * The base implementation of `_.isMap` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - */ -function baseIsMap(value) { - return isObjectLike_1(value) && _getTag(value) == mapTag$4; -} - -var _baseIsMap = baseIsMap; - -/* Node.js helper references. */ -var nodeIsMap = _nodeUtil && _nodeUtil.isMap; - -/** - * Checks if `value` is classified as a `Map` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - * @example - * - * _.isMap(new Map); - * // => true - * - * _.isMap(new WeakMap); - * // => false - */ -var isMap = nodeIsMap ? _baseUnary(nodeIsMap) : _baseIsMap; - -var isMap_1 = isMap; - -/** `Object#toString` result references. */ -var setTag$4 = '[object Set]'; - -/** - * The base implementation of `_.isSet` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - */ -function baseIsSet(value) { - return isObjectLike_1(value) && _getTag(value) == setTag$4; -} - -var _baseIsSet = baseIsSet; - -/* Node.js helper references. */ -var nodeIsSet = _nodeUtil && _nodeUtil.isSet; - -/** - * Checks if `value` is classified as a `Set` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - * @example - * - * _.isSet(new Set); - * // => true - * - * _.isSet(new WeakSet); - * // => false - */ -var isSet = nodeIsSet ? _baseUnary(nodeIsSet) : _baseIsSet; - -var isSet_1 = isSet; - -/** Used to compose bitmasks for cloning. */ -var CLONE_DEEP_FLAG$1 = 1, - CLONE_FLAT_FLAG = 2, - CLONE_SYMBOLS_FLAG$2 = 4; - -/** `Object#toString` result references. */ -var argsTag$1 = '[object Arguments]', - arrayTag$1 = '[object Array]', - boolTag$1 = '[object Boolean]', - dateTag$1 = '[object Date]', - errorTag$1 = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag$3 = '[object Map]', - numberTag$1 = '[object Number]', - objectTag$2 = '[object Object]', - regexpTag$1 = '[object RegExp]', - setTag$3 = '[object Set]', - stringTag$2 = '[object String]', - symbolTag$2 = '[object Symbol]', - weakMapTag = '[object WeakMap]'; - -var arrayBufferTag$1 = '[object ArrayBuffer]', - dataViewTag$1 = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** Used to identify `toStringTag` values supported by `_.clone`. */ -var cloneableTags = {}; -cloneableTags[argsTag$1] = cloneableTags[arrayTag$1] = -cloneableTags[arrayBufferTag$1] = cloneableTags[dataViewTag$1] = -cloneableTags[boolTag$1] = cloneableTags[dateTag$1] = -cloneableTags[float32Tag] = cloneableTags[float64Tag] = -cloneableTags[int8Tag] = cloneableTags[int16Tag] = -cloneableTags[int32Tag] = cloneableTags[mapTag$3] = -cloneableTags[numberTag$1] = cloneableTags[objectTag$2] = -cloneableTags[regexpTag$1] = cloneableTags[setTag$3] = -cloneableTags[stringTag$2] = cloneableTags[symbolTag$2] = -cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = -cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; -cloneableTags[errorTag$1] = cloneableTags[funcTag] = -cloneableTags[weakMapTag] = false; - -/** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} bitmask The bitmask flags. - * 1 - Deep clone - * 2 - Flatten inherited properties - * 4 - Clone symbols - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. - */ -function baseClone(value, bitmask, customizer, key, object, stack) { - var result, - isDeep = bitmask & CLONE_DEEP_FLAG$1, - isFlat = bitmask & CLONE_FLAT_FLAG, - isFull = bitmask & CLONE_SYMBOLS_FLAG$2; - - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result !== undefined) { - return result; - } - if (!isObject_1(value)) { - return value; - } - var isArr = isArray_1(value); - if (isArr) { - result = _initCloneArray(value); - if (!isDeep) { - return _copyArray(value, result); - } - } else { - var tag = _getTag(value), - isFunc = tag == funcTag || tag == genTag; - - if (isBuffer_1(value)) { - return _cloneBuffer(value, isDeep); - } - if (tag == objectTag$2 || tag == argsTag$1 || (isFunc && !object)) { - result = (isFlat || isFunc) ? {} : _initCloneObject(value); - if (!isDeep) { - return isFlat - ? _copySymbolsIn(value, _baseAssignIn(result, value)) - : _copySymbols(value, _baseAssign(result, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result = _initCloneByTag(value, tag, isDeep); - } - } - // Check for circular references and return its corresponding clone. - stack || (stack = new _Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (isSet_1(value)) { - value.forEach(function(subValue) { - result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - } else if (isMap_1(value)) { - value.forEach(function(subValue, key) { - result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - } - - var keysFunc = isFull - ? (isFlat ? _getAllKeysIn : _getAllKeys) - : (isFlat ? keysIn_1 : keys_1); - - var props = isArr ? undefined : keysFunc(value); - _arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; - } - // Recursively populate clone (susceptible to call stack limits). - _assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - return result; -} - -var _baseClone = baseClone; - -/** Used to compose bitmasks for cloning. */ -var CLONE_SYMBOLS_FLAG$1 = 4; - -/** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @see _.cloneDeep - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ -function clone(value) { - return _baseClone(value, CLONE_SYMBOLS_FLAG$1); -} - -var clone_1 = clone; - -/** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new constant function. - * @example - * - * var objects = _.times(2, _.constant({ 'a': 1 })); - * - * console.log(objects); - * // => [{ 'a': 1 }, { 'a': 1 }] - * - * console.log(objects[0] === objects[1]); - * // => true - */ -function constant(value) { - return function() { - return value; - }; -} - -var constant_1 = constant; - -/** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; -} - -var _createBaseFor = createBaseFor; - -/** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ -var baseFor = _createBaseFor(); - -var _baseFor = baseFor; - -/** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ -function baseForOwn(object, iteratee) { - return object && _baseFor(object, iteratee, keys_1); -} - -var _baseForOwn = baseForOwn; - -/** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike_1(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; -} - -var _createBaseEach = createBaseEach; - -/** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ -var baseEach = _createBaseEach(_baseForOwn); - -var _baseEach = baseEach; - -/** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ -function identity(value) { - return value; -} - -var identity_1 = identity; - -/** - * Casts `value` to `identity` if it's not a function. - * - * @private - * @param {*} value The value to inspect. - * @returns {Function} Returns cast function. - */ -function castFunction(value) { - return typeof value == 'function' ? value : identity_1; -} - -var _castFunction = castFunction; - -/** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _.forEach([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ -function forEach(collection, iteratee) { - var func = isArray_1(collection) ? _arrayEach : _baseEach; - return func(collection, _castFunction(iteratee)); -} - -var forEach_1 = forEach; - -var each = forEach_1; - -/** - * The base implementation of `_.filter` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function baseFilter(collection, predicate) { - var result = []; - _baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; -} - -var _baseFilter = baseFilter; - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ -function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; -} - -var _setCacheAdd = setCacheAdd; - -/** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ -function setCacheHas(value) { - return this.__data__.has(value); -} - -var _setCacheHas = setCacheHas; - -/** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ -function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; - - this.__data__ = new _MapCache; - while (++index < length) { - this.add(values[index]); - } -} - -// Add methods to `SetCache`. -SetCache.prototype.add = SetCache.prototype.push = _setCacheAdd; -SetCache.prototype.has = _setCacheHas; - -var _SetCache = SetCache; - -/** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ -function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; -} - -var _arraySome = arraySome; - -/** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function cacheHas(cache, key) { - return cache.has(key); -} - -var _cacheHas = cacheHas; - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG$5 = 1, - COMPARE_UNORDERED_FLAG$3 = 2; - -/** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ -function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG$5, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Check that cyclic values are equal. - var arrStacked = stack.get(array); - var othStacked = stack.get(other); - if (arrStacked && othStacked) { - return arrStacked == other && othStacked == array; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG$3) ? new _SetCache : undefined; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!_arraySome(other, function(othValue, othIndex) { - if (!_cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; -} - -var _equalArrays = equalArrays; - -/** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ -function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; -} - -var _mapToArray = mapToArray; - -/** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ -function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; -} - -var _setToArray = setToArray; - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG$4 = 1, - COMPARE_UNORDERED_FLAG$2 = 2; - -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - mapTag$2 = '[object Map]', - numberTag = '[object Number]', - regexpTag = '[object RegExp]', - setTag$2 = '[object Set]', - stringTag$1 = '[object String]', - symbolTag$1 = '[object Symbol]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]'; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto$1 = _Symbol ? _Symbol.prototype : undefined, - symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : undefined; - -/** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new _Uint8Array(object), new _Uint8Array(other))) { - return false; - } - return true; - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq_1(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag$1: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag$2: - var convert = _mapToArray; - - case setTag$2: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4; - convert || (convert = _setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG$2; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = _equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; - - case symbolTag$1: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; -} - -var _equalByTag = equalByTag; - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG$3 = 1; - -/** Used for built-in method references. */ -var objectProto$5 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$5 = objectProto$5.hasOwnProperty; - -/** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, - objProps = _getAllKeys(object), - objLength = objProps.length, - othProps = _getAllKeys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty$5.call(other, key))) { - return false; - } - } - // Check that cyclic values are equal. - var objStacked = stack.get(object); - var othStacked = stack.get(other); - if (objStacked && othStacked) { - return objStacked == other && othStacked == object; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; -} - -var _equalObjects = equalObjects; - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG$2 = 1; - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - objectTag$1 = '[object Object]'; - -/** Used for built-in method references. */ -var objectProto$4 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$4 = objectProto$4.hasOwnProperty; - -/** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray_1(object), - othIsArr = isArray_1(other), - objTag = objIsArr ? arrayTag : _getTag(object), - othTag = othIsArr ? arrayTag : _getTag(other); - - objTag = objTag == argsTag ? objectTag$1 : objTag; - othTag = othTag == argsTag ? objectTag$1 : othTag; - - var objIsObj = objTag == objectTag$1, - othIsObj = othTag == objectTag$1, - isSameTag = objTag == othTag; - - if (isSameTag && isBuffer_1(object)) { - if (!isBuffer_1(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new _Stack); - return (objIsArr || isTypedArray_1(object)) - ? _equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) { - var objIsWrapped = objIsObj && hasOwnProperty$4.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty$4.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new _Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new _Stack); - return _equalObjects(object, other, bitmask, customizer, equalFunc, stack); -} - -var _baseIsEqualDeep = baseIsEqualDeep; - -/** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike_1(value) && !isObjectLike_1(other))) { - return value !== value && other !== other; - } - return _baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); -} - -var _baseIsEqual = baseIsEqual; - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG$1 = 1, - COMPARE_UNORDERED_FLAG$1 = 2; - -/** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ -function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new _Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? _baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack) - : result - )) { - return false; - } - } - } - return true; -} - -var _baseIsMatch = baseIsMatch; - -/** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ -function isStrictComparable(value) { - return value === value && !isObject_1(value); -} - -var _isStrictComparable = isStrictComparable; - -/** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ -function getMatchData(object) { - var result = keys_1(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, _isStrictComparable(value)]; - } - return result; -} - -var _getMatchData = getMatchData; - -/** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; -} - -var _matchesStrictComparable = matchesStrictComparable; - -/** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatches(source) { - var matchData = _getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return _matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || _baseIsMatch(object, source, matchData); - }; -} - -var _baseMatches = baseMatches; - -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike_1(value) && _baseGetTag(value) == symbolTag); -} - -var isSymbol_1 = isSymbol; - -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/; - -/** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ -function isKey(value, object) { - if (isArray_1(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol_1(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); -} - -var _isKey = isKey; - -/** Error message constants. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `clear`, `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ -function memoize(func, resolver) { - if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - memoized.cache = new (memoize.Cache || _MapCache); - return memoized; -} - -// Expose `MapCache`. -memoize.Cache = _MapCache; - -var memoize_1 = memoize; - -/** Used as the maximum memoize cache size. */ -var MAX_MEMOIZE_SIZE = 500; - -/** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. - * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. - */ -function memoizeCapped(func) { - var result = memoize_1(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - - var cache = result.cache; - return result; -} - -var _memoizeCapped = memoizeCapped; - -/** Used to match property names within property paths. */ -var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; - -/** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ -var stringToPath = _memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; -}); - -var _stringToPath = stringToPath; - -/** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; -} - -var _arrayMap = arrayMap; - -/** Used as references for various `Number` constants. */ -var INFINITY$3 = 1 / 0; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = _Symbol ? _Symbol.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray_1(value)) { - // Recursively convert values (susceptible to call stack limits). - return _arrayMap(value, baseToString) + ''; - } - if (isSymbol_1(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY$3) ? '-0' : result; -} - -var _baseToString = baseToString; - -/** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ -function toString(value) { - return value == null ? '' : _baseToString(value); -} - -var toString_1 = toString; - -/** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. - */ -function castPath(value, object) { - if (isArray_1(value)) { - return value; - } - return _isKey(value, object) ? [value] : _stringToPath(toString_1(value)); -} - -var _castPath = castPath; - -/** Used as references for various `Number` constants. */ -var INFINITY$2 = 1 / 0; - -/** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ -function toKey(value) { - if (typeof value == 'string' || isSymbol_1(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY$2) ? '-0' : result; -} - -var _toKey = toKey; - -/** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ -function baseGet(object, path) { - path = _castPath(path, object); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[_toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; -} - -var _baseGet = baseGet; - -/** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ -function get(object, path, defaultValue) { - var result = object == null ? undefined : _baseGet(object, path); - return result === undefined ? defaultValue : result; -} - -var get_1 = get; - -/** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHasIn(object, key) { - return object != null && key in Object(object); -} - -var _baseHasIn = baseHasIn; - -/** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ -function hasPath(object, path, hasFunc) { - path = _castPath(path, object); - - var index = -1, - length = path.length, - result = false; - - while (++index < length) { - var key = _toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result || ++index != length) { - return result; - } - length = object == null ? 0 : object.length; - return !!length && isLength_1(length) && _isIndex(key, length) && - (isArray_1(object) || isArguments_1(object)); -} - -var _hasPath = hasPath; - -/** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ -function hasIn(object, path) { - return object != null && _hasPath(object, path, _baseHasIn); -} - -var hasIn_1 = hasIn; - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - -/** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatchesProperty(path, srcValue) { - if (_isKey(path) && _isStrictComparable(srcValue)) { - return _matchesStrictComparable(_toKey(path), srcValue); - } - return function(object) { - var objValue = get_1(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn_1(object, path) - : _baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; -} - -var _baseMatchesProperty = baseMatchesProperty; - -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} - -var _baseProperty = baseProperty; - -/** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function basePropertyDeep(path) { - return function(object) { - return _baseGet(object, path); - }; -} - -var _basePropertyDeep = basePropertyDeep; - -/** - * Creates a function that returns the value at `path` of a given object. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - * @example - * - * var objects = [ - * { 'a': { 'b': 2 } }, - * { 'a': { 'b': 1 } } - * ]; - * - * _.map(objects, _.property('a.b')); - * // => [2, 1] - * - * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); - * // => [1, 2] - */ -function property(path) { - return _isKey(path) ? _baseProperty(_toKey(path)) : _basePropertyDeep(path); -} - -var property_1 = property; - -/** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ -function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity_1; - } - if (typeof value == 'object') { - return isArray_1(value) - ? _baseMatchesProperty(value[0], value[1]) - : _baseMatches(value); - } - return property_1(value); -} - -var _baseIteratee = baseIteratee; - -/** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * **Note:** Unlike `_.remove`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] - * - * // Combining several predicates using `_.overEvery` or `_.overSome`. - * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); - * // => objects for ['fred', 'barney'] - */ -function filter(collection, predicate) { - var func = isArray_1(collection) ? _arrayFilter : _baseFilter; - return func(collection, _baseIteratee(predicate)); -} - -var filter_1 = filter; - -/** Used for built-in method references. */ -var objectProto$3 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$3 = objectProto$3.hasOwnProperty; - -/** - * The base implementation of `_.has` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHas(object, key) { - return object != null && hasOwnProperty$3.call(object, key); -} - -var _baseHas = baseHas; - -/** - * Checks if `path` is a direct property of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': 2 } }; - * var other = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b'); - * // => true - * - * _.has(object, ['a', 'b']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ -function has(object, path) { - return object != null && _hasPath(object, path, _baseHas); -} - -var has_1 = has; - -/** `Object#toString` result references. */ -var mapTag$1 = '[object Map]', - setTag$1 = '[object Set]'; - -/** Used for built-in method references. */ -var objectProto$2 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$2 = objectProto$2.hasOwnProperty; - -/** - * Checks if `value` is an empty object, collection, map, or set. - * - * Objects are considered empty if they have no own enumerable string keyed - * properties. - * - * Array-like values such as `arguments` objects, arrays, buffers, strings, or - * jQuery-like collections are considered empty if they have a `length` of `0`. - * Similarly, maps and sets are considered empty if they have a `size` of `0`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ -function isEmpty(value) { - if (value == null) { - return true; - } - if (isArrayLike_1(value) && - (isArray_1(value) || typeof value == 'string' || typeof value.splice == 'function' || - isBuffer_1(value) || isTypedArray_1(value) || isArguments_1(value))) { - return !value.length; - } - var tag = _getTag(value); - if (tag == mapTag$1 || tag == setTag$1) { - return !value.size; - } - if (_isPrototype(value)) { - return !_baseKeys(value).length; - } - for (var key in value) { - if (hasOwnProperty$2.call(value, key)) { - return false; - } - } - return true; -} - -var isEmpty_1 = isEmpty; - -/** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ -function isUndefined(value) { - return value === undefined; -} - -var isUndefined_1 = isUndefined; - -/** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike_1(collection) ? Array(collection.length) : []; - - _baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; -} - -var _baseMap = baseMap; - -/** - * Creates an array of values by running each element in `collection` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, - * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, - * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, - * `template`, `trim`, `trimEnd`, `trimStart`, and `words` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - * @example - * - * function square(n) { - * return n * n; - * } - * - * _.map([4, 8], square); - * // => [16, 64] - * - * _.map({ 'a': 4, 'b': 8 }, square); - * // => [16, 64] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // The `_.property` iteratee shorthand. - * _.map(users, 'user'); - * // => ['barney', 'fred'] - */ -function map(collection, iteratee) { - var func = isArray_1(collection) ? _arrayMap : _baseMap; - return func(collection, _baseIteratee(iteratee)); -} - -var map_1 = map; - -/** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ -function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array == null ? 0 : array.length; - - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; -} - -var _arrayReduce = arrayReduce; - -/** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ -function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; -} - -var _baseReduce = baseReduce; - -/** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` thru `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not given, the first element of `collection` is used as the initial - * value. The iteratee is invoked with four arguments: - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, - * and `sortBy` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduceRight - * @example - * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }, 0); - * // => 3 - * - * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * return result; - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) - */ -function reduce(collection, iteratee, accumulator) { - var func = isArray_1(collection) ? _arrayReduce : _baseReduce, - initAccum = arguments.length < 3; - - return func(collection, _baseIteratee(iteratee), accumulator, initAccum, _baseEach); -} - -var reduce_1 = reduce; - -/** `Object#toString` result references. */ -var stringTag = '[object String]'; - -/** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ -function isString(value) { - return typeof value == 'string' || - (!isArray_1(value) && isObjectLike_1(value) && _baseGetTag(value) == stringTag); -} - -var isString_1 = isString; - -/** - * Gets the size of an ASCII `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ -var asciiSize = _baseProperty('length'); - -var _asciiSize = asciiSize; - -/** Used to compose unicode character classes. */ -var rsAstralRange$1 = '\\ud800-\\udfff', - rsComboMarksRange$1 = '\\u0300-\\u036f', - reComboHalfMarksRange$1 = '\\ufe20-\\ufe2f', - rsComboSymbolsRange$1 = '\\u20d0-\\u20ff', - rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1, - rsVarRange$1 = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsZWJ$1 = '\\u200d'; - -/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ -var reHasUnicode = RegExp('[' + rsZWJ$1 + rsAstralRange$1 + rsComboRange$1 + rsVarRange$1 + ']'); - -/** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ -function hasUnicode(string) { - return reHasUnicode.test(string); -} - -var _hasUnicode = hasUnicode; - -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsVarRange = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsAstral = '[' + rsAstralRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsZWJ = '\\u200d'; - -/** Used to compose unicode regexes. */ -var reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - -/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ -var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - -/** - * Gets the size of a Unicode `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ -function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - ++result; - } - return result; -} - -var _unicodeSize = unicodeSize; - -/** - * Gets the number of symbols in `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the string size. - */ -function stringSize(string) { - return _hasUnicode(string) - ? _unicodeSize(string) - : _asciiSize(string); -} - -var _stringSize = stringSize; - -/** `Object#toString` result references. */ -var mapTag = '[object Map]', - setTag = '[object Set]'; - -/** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable string keyed properties for objects. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the collection size. - * @example - * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 - * - * _.size('pebbles'); - * // => 7 - */ -function size(collection) { - if (collection == null) { - return 0; - } - if (isArrayLike_1(collection)) { - return isString_1(collection) ? _stringSize(collection) : collection.length; - } - var tag = _getTag(collection); - if (tag == mapTag || tag == setTag) { - return collection.size; - } - return _baseKeys(collection).length; -} - -var size_1 = size; - -/** - * An alternative to `_.reduce`; this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own - * enumerable string keyed properties thru `iteratee`, with each invocation - * potentially mutating the `accumulator` object. If `accumulator` is not - * provided, a new object with the same `[[Prototype]]` will be used. The - * iteratee is invoked with four arguments: (accumulator, value, key, object). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @returns {*} Returns the accumulated value. - * @example - * - * _.transform([2, 3, 4], function(result, n) { - * result.push(n *= n); - * return n % 2 == 0; - * }, []); - * // => [4, 9] - * - * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } - */ -function transform(object, iteratee, accumulator) { - var isArr = isArray_1(object), - isArrLike = isArr || isBuffer_1(object) || isTypedArray_1(object); - - iteratee = _baseIteratee(iteratee); - if (accumulator == null) { - var Ctor = object && object.constructor; - if (isArrLike) { - accumulator = isArr ? new Ctor : []; - } - else if (isObject_1(object)) { - accumulator = isFunction_1(Ctor) ? _baseCreate(_getPrototype(object)) : {}; - } - else { - accumulator = {}; - } - } - (isArrLike ? _arrayEach : _baseForOwn)(object, function(value, index, object) { - return iteratee(accumulator, value, index, object); - }); - return accumulator; -} - -var transform_1 = transform; - -/** Built-in value references. */ -var spreadableSymbol = _Symbol ? _Symbol.isConcatSpreadable : undefined; - -/** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ -function isFlattenable(value) { - return isArray_1(value) || isArguments_1(value) || - !!(spreadableSymbol && value && value[spreadableSymbol]); -} - -var _isFlattenable = isFlattenable; - -/** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ -function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = _isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - _arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; -} - -var _baseFlatten = baseFlatten; - -/** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ -function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); -} - -var _apply = apply; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax$2 = Math.max; - -/** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ -function overRest(func, start, transform) { - start = nativeMax$2(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax$2(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return _apply(func, this, otherArgs); - }; -} - -var _overRest = overRest; - -/** - * The base implementation of `setToString` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ -var baseSetToString = !_defineProperty ? identity_1 : function(func, string) { - return _defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant_1(string), - 'writable': true - }); -}; - -var _baseSetToString = baseSetToString; - -/** Used to detect hot functions by number of calls within a span of milliseconds. */ -var HOT_COUNT = 800, - HOT_SPAN = 16; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeNow = Date.now; - -/** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. - * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. - */ -function shortOut(func) { - var count = 0, - lastCalled = 0; - - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined, arguments); - }; -} - -var _shortOut = shortOut; - -/** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ -var setToString = _shortOut(_baseSetToString); - -var _setToString = setToString; - -/** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ -function baseRest(func, start) { - return _setToString(_overRest(func, start, identity_1), func + ''); -} - -var _baseRest = baseRest; - -/** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; -} - -var _baseFindIndex = baseFindIndex; - -/** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ -function baseIsNaN(value) { - return value !== value; -} - -var _baseIsNaN = baseIsNaN; - -/** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; -} - -var _strictIndexOf = strictIndexOf; - -/** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseIndexOf(array, value, fromIndex) { - return value === value - ? _strictIndexOf(array, value, fromIndex) - : _baseFindIndex(array, _baseIsNaN, fromIndex); -} - -var _baseIndexOf = baseIndexOf; - -/** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && _baseIndexOf(array, value, 0) > -1; -} - -var _arrayIncludes = arrayIncludes; - -/** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (comparator(value, array[index])) { - return true; - } - } - return false; -} - -var _arrayIncludesWith = arrayIncludesWith; - -/** - * This method returns `undefined`. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Util - * @example - * - * _.times(2, _.noop); - * // => [undefined, undefined] - */ -function noop() { - // No operation performed. -} - -var noop_1 = noop; - -/** Used as references for various `Number` constants. */ -var INFINITY$1 = 1 / 0; - -/** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ -var createSet = !(_Set && (1 / _setToArray(new _Set([,-0]))[1]) == INFINITY$1) ? noop_1 : function(values) { - return new _Set(values); -}; - -var _createSet = createSet; - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ -function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = _arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; - - if (comparator) { - isCommon = false; - includes = _arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : _createSet(array); - if (set) { - return _setToArray(set); - } - isCommon = false; - includes = _cacheHas; - seen = new _SetCache; - } - else { - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); - } - } - return result; -} - -var _baseUniq = baseUniq; - -/** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ -function isArrayLikeObject(value) { - return isObjectLike_1(value) && isArrayLike_1(value); -} - -var isArrayLikeObject_1 = isArrayLikeObject; - -/** - * Creates an array of unique values, in order, from all given arrays using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.union([2], [1, 2]); - * // => [2, 1] - */ -var union = _baseRest(function(arrays) { - return _baseUniq(_baseFlatten(arrays, 1, isArrayLikeObject_1, true)); -}); - -var union_1 = union; - -/** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ -function baseValues(object, props) { - return _arrayMap(props, function(key) { - return object[key]; - }); -} - -var _baseValues = baseValues; - -/** - * Creates an array of the own enumerable string keyed property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ -function values(object) { - return object == null ? [] : _baseValues(object, keys_1(object)); -} - -var values_1 = values; - -/* global window */ - -var lodash$1; - -if (typeof commonjsRequire === "function") { - try { - lodash$1 = { - clone: clone_1, - constant: constant_1, - each: each, - filter: filter_1, - has: has_1, - isArray: isArray_1, - isEmpty: isEmpty_1, - isFunction: isFunction_1, - isUndefined: isUndefined_1, - keys: keys_1, - map: map_1, - reduce: reduce_1, - size: size_1, - transform: transform_1, - union: union_1, - values: values_1 - }; - } catch (e) { - // continue regardless of error - } -} - -if (!lodash$1) { - lodash$1 = window._; -} - -var lodash_1$1 = lodash$1; - -var graph = Graph$8; - -var DEFAULT_EDGE_NAME = "\x00"; -var GRAPH_NODE = "\x00"; -var EDGE_KEY_DELIM = "\x01"; - -// Implementation notes: -// -// * Node id query functions should return string ids for the nodes -// * Edge id query functions should return an "edgeObj", edge object, that is -// composed of enough information to uniquely identify an edge: {v, w, name}. -// * Internally we use an "edgeId", a stringified form of the edgeObj, to -// reference edges. This is because we need a performant way to look these -// edges up and, object properties, which have string keys, are the closest -// we're going to get to a performant hashtable in JavaScript. - -function Graph$8(opts) { - this._isDirected = lodash_1$1.has(opts, "directed") ? opts.directed : true; - this._isMultigraph = lodash_1$1.has(opts, "multigraph") ? opts.multigraph : false; - this._isCompound = lodash_1$1.has(opts, "compound") ? opts.compound : false; - - // Label for the graph itself - this._label = undefined; - - // Defaults to be set when creating a new node - this._defaultNodeLabelFn = lodash_1$1.constant(undefined); - - // Defaults to be set when creating a new edge - this._defaultEdgeLabelFn = lodash_1$1.constant(undefined); - - // v -> label - this._nodes = {}; - - if (this._isCompound) { - // v -> parent - this._parent = {}; - - // v -> children - this._children = {}; - this._children[GRAPH_NODE] = {}; - } - - // v -> edgeObj - this._in = {}; - - // u -> v -> Number - this._preds = {}; - - // v -> edgeObj - this._out = {}; - - // v -> w -> Number - this._sucs = {}; - - // e -> edgeObj - this._edgeObjs = {}; - - // e -> label - this._edgeLabels = {}; -} - -/* Number of nodes in the graph. Should only be changed by the implementation. */ -Graph$8.prototype._nodeCount = 0; - -/* Number of edges in the graph. Should only be changed by the implementation. */ -Graph$8.prototype._edgeCount = 0; - - -/* === Graph functions ========= */ - -Graph$8.prototype.isDirected = function() { - return this._isDirected; -}; - -Graph$8.prototype.isMultigraph = function() { - return this._isMultigraph; -}; - -Graph$8.prototype.isCompound = function() { - return this._isCompound; -}; - -Graph$8.prototype.setGraph = function(label) { - this._label = label; - return this; -}; - -Graph$8.prototype.graph = function() { - return this._label; -}; - - -/* === Node functions ========== */ - -Graph$8.prototype.setDefaultNodeLabel = function(newDefault) { - if (!lodash_1$1.isFunction(newDefault)) { - newDefault = lodash_1$1.constant(newDefault); - } - this._defaultNodeLabelFn = newDefault; - return this; -}; - -Graph$8.prototype.nodeCount = function() { - return this._nodeCount; -}; - -Graph$8.prototype.nodes = function() { - return lodash_1$1.keys(this._nodes); -}; - -Graph$8.prototype.sources = function() { - var self = this; - return lodash_1$1.filter(this.nodes(), function(v) { - return lodash_1$1.isEmpty(self._in[v]); - }); -}; - -Graph$8.prototype.sinks = function() { - var self = this; - return lodash_1$1.filter(this.nodes(), function(v) { - return lodash_1$1.isEmpty(self._out[v]); - }); -}; - -Graph$8.prototype.setNodes = function(vs, value) { - var args = arguments; - var self = this; - lodash_1$1.each(vs, function(v) { - if (args.length > 1) { - self.setNode(v, value); - } else { - self.setNode(v); - } - }); - return this; -}; - -Graph$8.prototype.setNode = function(v, value) { - if (lodash_1$1.has(this._nodes, v)) { - if (arguments.length > 1) { - this._nodes[v] = value; - } - return this; - } - - this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v); - if (this._isCompound) { - this._parent[v] = GRAPH_NODE; - this._children[v] = {}; - this._children[GRAPH_NODE][v] = true; - } - this._in[v] = {}; - this._preds[v] = {}; - this._out[v] = {}; - this._sucs[v] = {}; - ++this._nodeCount; - return this; -}; - -Graph$8.prototype.node = function(v) { - return this._nodes[v]; -}; - -Graph$8.prototype.hasNode = function(v) { - return lodash_1$1.has(this._nodes, v); -}; - -Graph$8.prototype.removeNode = function(v) { - var self = this; - if (lodash_1$1.has(this._nodes, v)) { - var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); }; - delete this._nodes[v]; - if (this._isCompound) { - this._removeFromParentsChildList(v); - delete this._parent[v]; - lodash_1$1.each(this.children(v), function(child) { - self.setParent(child); - }); - delete this._children[v]; - } - lodash_1$1.each(lodash_1$1.keys(this._in[v]), removeEdge); - delete this._in[v]; - delete this._preds[v]; - lodash_1$1.each(lodash_1$1.keys(this._out[v]), removeEdge); - delete this._out[v]; - delete this._sucs[v]; - --this._nodeCount; - } - return this; -}; - -Graph$8.prototype.setParent = function(v, parent) { - if (!this._isCompound) { - throw new Error("Cannot set parent in a non-compound graph"); - } - - if (lodash_1$1.isUndefined(parent)) { - parent = GRAPH_NODE; - } else { - // Coerce parent to string - parent += ""; - for (var ancestor = parent; - !lodash_1$1.isUndefined(ancestor); - ancestor = this.parent(ancestor)) { - if (ancestor === v) { - throw new Error("Setting " + parent+ " as parent of " + v + - " would create a cycle"); - } - } - - this.setNode(parent); - } - - this.setNode(v); - this._removeFromParentsChildList(v); - this._parent[v] = parent; - this._children[parent][v] = true; - return this; -}; - -Graph$8.prototype._removeFromParentsChildList = function(v) { - delete this._children[this._parent[v]][v]; -}; - -Graph$8.prototype.parent = function(v) { - if (this._isCompound) { - var parent = this._parent[v]; - if (parent !== GRAPH_NODE) { - return parent; - } - } -}; - -Graph$8.prototype.children = function(v) { - if (lodash_1$1.isUndefined(v)) { - v = GRAPH_NODE; - } - - if (this._isCompound) { - var children = this._children[v]; - if (children) { - return lodash_1$1.keys(children); - } - } else if (v === GRAPH_NODE) { - return this.nodes(); - } else if (this.hasNode(v)) { - return []; - } -}; - -Graph$8.prototype.predecessors = function(v) { - var predsV = this._preds[v]; - if (predsV) { - return lodash_1$1.keys(predsV); - } -}; - -Graph$8.prototype.successors = function(v) { - var sucsV = this._sucs[v]; - if (sucsV) { - return lodash_1$1.keys(sucsV); - } -}; - -Graph$8.prototype.neighbors = function(v) { - var preds = this.predecessors(v); - if (preds) { - return lodash_1$1.union(preds, this.successors(v)); - } -}; - -Graph$8.prototype.isLeaf = function (v) { - var neighbors; - if (this.isDirected()) { - neighbors = this.successors(v); - } else { - neighbors = this.neighbors(v); - } - return neighbors.length === 0; -}; - -Graph$8.prototype.filterNodes = function(filter) { - var copy = new this.constructor({ - directed: this._isDirected, - multigraph: this._isMultigraph, - compound: this._isCompound - }); - - copy.setGraph(this.graph()); - - var self = this; - lodash_1$1.each(this._nodes, function(value, v) { - if (filter(v)) { - copy.setNode(v, value); - } - }); - - lodash_1$1.each(this._edgeObjs, function(e) { - if (copy.hasNode(e.v) && copy.hasNode(e.w)) { - copy.setEdge(e, self.edge(e)); - } - }); - - var parents = {}; - function findParent(v) { - var parent = self.parent(v); - if (parent === undefined || copy.hasNode(parent)) { - parents[v] = parent; - return parent; - } else if (parent in parents) { - return parents[parent]; - } else { - return findParent(parent); - } - } - - if (this._isCompound) { - lodash_1$1.each(copy.nodes(), function(v) { - copy.setParent(v, findParent(v)); - }); - } - - return copy; -}; - -/* === Edge functions ========== */ - -Graph$8.prototype.setDefaultEdgeLabel = function(newDefault) { - if (!lodash_1$1.isFunction(newDefault)) { - newDefault = lodash_1$1.constant(newDefault); - } - this._defaultEdgeLabelFn = newDefault; - return this; -}; - -Graph$8.prototype.edgeCount = function() { - return this._edgeCount; -}; - -Graph$8.prototype.edges = function() { - return lodash_1$1.values(this._edgeObjs); -}; - -Graph$8.prototype.setPath = function(vs, value) { - var self = this; - var args = arguments; - lodash_1$1.reduce(vs, function(v, w) { - if (args.length > 1) { - self.setEdge(v, w, value); - } else { - self.setEdge(v, w); - } - return w; - }); - return this; -}; - -/* - * setEdge(v, w, [value, [name]]) - * setEdge({ v, w, [name] }, [value]) - */ -Graph$8.prototype.setEdge = function() { - var v, w, name, value; - var valueSpecified = false; - var arg0 = arguments[0]; - - if (typeof arg0 === "object" && arg0 !== null && "v" in arg0) { - v = arg0.v; - w = arg0.w; - name = arg0.name; - if (arguments.length === 2) { - value = arguments[1]; - valueSpecified = true; - } - } else { - v = arg0; - w = arguments[1]; - name = arguments[3]; - if (arguments.length > 2) { - value = arguments[2]; - valueSpecified = true; - } - } - - v = "" + v; - w = "" + w; - if (!lodash_1$1.isUndefined(name)) { - name = "" + name; - } - - var e = edgeArgsToId(this._isDirected, v, w, name); - if (lodash_1$1.has(this._edgeLabels, e)) { - if (valueSpecified) { - this._edgeLabels[e] = value; - } - return this; - } - - if (!lodash_1$1.isUndefined(name) && !this._isMultigraph) { - throw new Error("Cannot set a named edge when isMultigraph = false"); - } - - // It didn't exist, so we need to create it. - // First ensure the nodes exist. - this.setNode(v); - this.setNode(w); - - this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name); - - var edgeObj = edgeArgsToObj(this._isDirected, v, w, name); - // Ensure we add undirected edges in a consistent way. - v = edgeObj.v; - w = edgeObj.w; - - Object.freeze(edgeObj); - this._edgeObjs[e] = edgeObj; - incrementOrInitEntry(this._preds[w], v); - incrementOrInitEntry(this._sucs[v], w); - this._in[w][e] = edgeObj; - this._out[v][e] = edgeObj; - this._edgeCount++; - return this; -}; - -Graph$8.prototype.edge = function(v, w, name) { - var e = (arguments.length === 1 - ? edgeObjToId(this._isDirected, arguments[0]) - : edgeArgsToId(this._isDirected, v, w, name)); - return this._edgeLabels[e]; -}; - -Graph$8.prototype.hasEdge = function(v, w, name) { - var e = (arguments.length === 1 - ? edgeObjToId(this._isDirected, arguments[0]) - : edgeArgsToId(this._isDirected, v, w, name)); - return lodash_1$1.has(this._edgeLabels, e); -}; - -Graph$8.prototype.removeEdge = function(v, w, name) { - var e = (arguments.length === 1 - ? edgeObjToId(this._isDirected, arguments[0]) - : edgeArgsToId(this._isDirected, v, w, name)); - var edge = this._edgeObjs[e]; - if (edge) { - v = edge.v; - w = edge.w; - delete this._edgeLabels[e]; - delete this._edgeObjs[e]; - decrementOrRemoveEntry(this._preds[w], v); - decrementOrRemoveEntry(this._sucs[v], w); - delete this._in[w][e]; - delete this._out[v][e]; - this._edgeCount--; - } - return this; -}; - -Graph$8.prototype.inEdges = function(v, u) { - var inV = this._in[v]; - if (inV) { - var edges = lodash_1$1.values(inV); - if (!u) { - return edges; - } - return lodash_1$1.filter(edges, function(edge) { return edge.v === u; }); - } -}; - -Graph$8.prototype.outEdges = function(v, w) { - var outV = this._out[v]; - if (outV) { - var edges = lodash_1$1.values(outV); - if (!w) { - return edges; - } - return lodash_1$1.filter(edges, function(edge) { return edge.w === w; }); - } -}; - -Graph$8.prototype.nodeEdges = function(v, w) { - var inEdges = this.inEdges(v, w); - if (inEdges) { - return inEdges.concat(this.outEdges(v, w)); - } -}; - -function incrementOrInitEntry(map, k) { - if (map[k]) { - map[k]++; - } else { - map[k] = 1; - } -} - -function decrementOrRemoveEntry(map, k) { - if (!--map[k]) { delete map[k]; } -} - -function edgeArgsToId(isDirected, v_, w_, name) { - var v = "" + v_; - var w = "" + w_; - if (!isDirected && v > w) { - var tmp = v; - v = w; - w = tmp; - } - return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + - (lodash_1$1.isUndefined(name) ? DEFAULT_EDGE_NAME : name); -} - -function edgeArgsToObj(isDirected, v_, w_, name) { - var v = "" + v_; - var w = "" + w_; - if (!isDirected && v > w) { - var tmp = v; - v = w; - w = tmp; - } - var edgeObj = { v: v, w: w }; - if (name) { - edgeObj.name = name; - } - return edgeObj; -} - -function edgeObjToId(isDirected, edgeObj) { - return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name); -} - -var version$1 = '2.1.8'; - -// Includes only the "core" of graphlib -var lib = { - Graph: graph, - version: version$1 -}; - -var json = { - write: write, - read: read -}; - -function write(g) { - var json = { - options: { - directed: g.isDirected(), - multigraph: g.isMultigraph(), - compound: g.isCompound() - }, - nodes: writeNodes(g), - edges: writeEdges(g) - }; - if (!lodash_1$1.isUndefined(g.graph())) { - json.value = lodash_1$1.clone(g.graph()); - } - return json; -} - -function writeNodes(g) { - return lodash_1$1.map(g.nodes(), function(v) { - var nodeValue = g.node(v); - var parent = g.parent(v); - var node = { v: v }; - if (!lodash_1$1.isUndefined(nodeValue)) { - node.value = nodeValue; - } - if (!lodash_1$1.isUndefined(parent)) { - node.parent = parent; - } - return node; - }); -} - -function writeEdges(g) { - return lodash_1$1.map(g.edges(), function(e) { - var edgeValue = g.edge(e); - var edge = { v: e.v, w: e.w }; - if (!lodash_1$1.isUndefined(e.name)) { - edge.name = e.name; - } - if (!lodash_1$1.isUndefined(edgeValue)) { - edge.value = edgeValue; - } - return edge; - }); -} - -function read(json) { - var g = new graph(json.options).setGraph(json.value); - lodash_1$1.each(json.nodes, function(entry) { - g.setNode(entry.v, entry.value); - if (entry.parent) { - g.setParent(entry.v, entry.parent); - } - }); - lodash_1$1.each(json.edges, function(entry) { - g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value); - }); - return g; -} - -var components_1 = components; - -function components(g) { - var visited = {}; - var cmpts = []; - var cmpt; - - function dfs(v) { - if (lodash_1$1.has(visited, v)) return; - visited[v] = true; - cmpt.push(v); - lodash_1$1.each(g.successors(v), dfs); - lodash_1$1.each(g.predecessors(v), dfs); - } - - lodash_1$1.each(g.nodes(), function(v) { - cmpt = []; - dfs(v); - if (cmpt.length) { - cmpts.push(cmpt); - } - }); - - return cmpts; -} - -var priorityQueue = PriorityQueue; - -/** - * A min-priority queue data structure. This algorithm is derived from Cormen, - * et al., "Introduction to Algorithms". The basic idea of a min-priority - * queue is that you can efficiently (in O(1) time) get the smallest key in - * the queue. Adding and removing elements takes O(log n) time. A key can - * have its priority decreased in O(log n) time. - */ -function PriorityQueue() { - this._arr = []; - this._keyIndices = {}; -} - -/** - * Returns the number of elements in the queue. Takes `O(1)` time. - */ -PriorityQueue.prototype.size = function() { - return this._arr.length; -}; - -/** - * Returns the keys that are in the queue. Takes `O(n)` time. - */ -PriorityQueue.prototype.keys = function() { - return this._arr.map(function(x) { return x.key; }); -}; - -/** - * Returns `true` if **key** is in the queue and `false` if not. - */ -PriorityQueue.prototype.has = function(key) { - return lodash_1$1.has(this._keyIndices, key); -}; - -/** - * Returns the priority for **key**. If **key** is not present in the queue - * then this function returns `undefined`. Takes `O(1)` time. - * - * @param {Object} key - */ -PriorityQueue.prototype.priority = function(key) { - var index = this._keyIndices[key]; - if (index !== undefined) { - return this._arr[index].priority; - } -}; - -/** - * Returns the key for the minimum element in this queue. If the queue is - * empty this function throws an Error. Takes `O(1)` time. - */ -PriorityQueue.prototype.min = function() { - if (this.size() === 0) { - throw new Error("Queue underflow"); - } - return this._arr[0].key; -}; - -/** - * Inserts a new key into the priority queue. If the key already exists in - * the queue this function returns `false`; otherwise it will return `true`. - * Takes `O(n)` time. - * - * @param {Object} key the key to add - * @param {Number} priority the initial priority for the key - */ -PriorityQueue.prototype.add = function(key, priority) { - var keyIndices = this._keyIndices; - key = String(key); - if (!lodash_1$1.has(keyIndices, key)) { - var arr = this._arr; - var index = arr.length; - keyIndices[key] = index; - arr.push({key: key, priority: priority}); - this._decrease(index); - return true; - } - return false; -}; - -/** - * Removes and returns the smallest key in the queue. Takes `O(log n)` time. - */ -PriorityQueue.prototype.removeMin = function() { - this._swap(0, this._arr.length - 1); - var min = this._arr.pop(); - delete this._keyIndices[min.key]; - this._heapify(0); - return min.key; -}; - -/** - * Decreases the priority for **key** to **priority**. If the new priority is - * greater than the previous priority, this function will throw an Error. - * - * @param {Object} key the key for which to raise priority - * @param {Number} priority the new priority for the key - */ -PriorityQueue.prototype.decrease = function(key, priority) { - var index = this._keyIndices[key]; - if (priority > this._arr[index].priority) { - throw new Error("New priority is greater than current priority. " + - "Key: " + key + " Old: " + this._arr[index].priority + " New: " + priority); - } - this._arr[index].priority = priority; - this._decrease(index); -}; - -PriorityQueue.prototype._heapify = function(i) { - var arr = this._arr; - var l = 2 * i; - var r = l + 1; - var largest = i; - if (l < arr.length) { - largest = arr[l].priority < arr[largest].priority ? l : largest; - if (r < arr.length) { - largest = arr[r].priority < arr[largest].priority ? r : largest; - } - if (largest !== i) { - this._swap(i, largest); - this._heapify(largest); - } - } -}; - -PriorityQueue.prototype._decrease = function(index) { - var arr = this._arr; - var priority = arr[index].priority; - var parent; - while (index !== 0) { - parent = index >> 1; - if (arr[parent].priority < priority) { - break; - } - this._swap(index, parent); - index = parent; - } -}; - -PriorityQueue.prototype._swap = function(i, j) { - var arr = this._arr; - var keyIndices = this._keyIndices; - var origArrI = arr[i]; - var origArrJ = arr[j]; - arr[i] = origArrJ; - arr[j] = origArrI; - keyIndices[origArrJ.key] = i; - keyIndices[origArrI.key] = j; -}; - -var dijkstra_1 = dijkstra; - -var DEFAULT_WEIGHT_FUNC$1 = lodash_1$1.constant(1); - -function dijkstra(g, source, weightFn, edgeFn) { - return runDijkstra(g, String(source), - weightFn || DEFAULT_WEIGHT_FUNC$1, - edgeFn || function(v) { return g.outEdges(v); }); -} - -function runDijkstra(g, source, weightFn, edgeFn) { - var results = {}; - var pq = new priorityQueue(); - var v, vEntry; - - var updateNeighbors = function(edge) { - var w = edge.v !== v ? edge.v : edge.w; - var wEntry = results[w]; - var weight = weightFn(edge); - var distance = vEntry.distance + weight; - - if (weight < 0) { - throw new Error("dijkstra does not allow negative edge weights. " + - "Bad edge: " + edge + " Weight: " + weight); - } - - if (distance < wEntry.distance) { - wEntry.distance = distance; - wEntry.predecessor = v; - pq.decrease(w, distance); - } - }; - - g.nodes().forEach(function(v) { - var distance = v === source ? 0 : Number.POSITIVE_INFINITY; - results[v] = { distance: distance }; - pq.add(v, distance); - }); - - while (pq.size() > 0) { - v = pq.removeMin(); - vEntry = results[v]; - if (vEntry.distance === Number.POSITIVE_INFINITY) { - break; - } - - edgeFn(v).forEach(updateNeighbors); - } - - return results; -} - -var dijkstraAll_1 = dijkstraAll; - -function dijkstraAll(g, weightFunc, edgeFunc) { - return lodash_1$1.transform(g.nodes(), function(acc, v) { - acc[v] = dijkstra_1(g, v, weightFunc, edgeFunc); - }, {}); -} - -var tarjan_1 = tarjan; - -function tarjan(g) { - var index = 0; - var stack = []; - var visited = {}; // node id -> { onStack, lowlink, index } - var results = []; - - function dfs(v) { - var entry = visited[v] = { - onStack: true, - lowlink: index, - index: index++ - }; - stack.push(v); - - g.successors(v).forEach(function(w) { - if (!lodash_1$1.has(visited, w)) { - dfs(w); - entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink); - } else if (visited[w].onStack) { - entry.lowlink = Math.min(entry.lowlink, visited[w].index); - } - }); - - if (entry.lowlink === entry.index) { - var cmpt = []; - var w; - do { - w = stack.pop(); - visited[w].onStack = false; - cmpt.push(w); - } while (v !== w); - results.push(cmpt); - } - } - - g.nodes().forEach(function(v) { - if (!lodash_1$1.has(visited, v)) { - dfs(v); - } - }); - - return results; -} - -var findCycles_1 = findCycles; - -function findCycles(g) { - return lodash_1$1.filter(tarjan_1(g), function(cmpt) { - return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0])); - }); -} - -var floydWarshall_1 = floydWarshall; - -var DEFAULT_WEIGHT_FUNC = lodash_1$1.constant(1); - -function floydWarshall(g, weightFn, edgeFn) { - return runFloydWarshall(g, - weightFn || DEFAULT_WEIGHT_FUNC, - edgeFn || function(v) { return g.outEdges(v); }); -} - -function runFloydWarshall(g, weightFn, edgeFn) { - var results = {}; - var nodes = g.nodes(); - - nodes.forEach(function(v) { - results[v] = {}; - results[v][v] = { distance: 0 }; - nodes.forEach(function(w) { - if (v !== w) { - results[v][w] = { distance: Number.POSITIVE_INFINITY }; - } - }); - edgeFn(v).forEach(function(edge) { - var w = edge.v === v ? edge.w : edge.v; - var d = weightFn(edge); - results[v][w] = { distance: d, predecessor: v }; - }); - }); - - nodes.forEach(function(k) { - var rowK = results[k]; - nodes.forEach(function(i) { - var rowI = results[i]; - nodes.forEach(function(j) { - var ik = rowI[k]; - var kj = rowK[j]; - var ij = rowI[j]; - var altDistance = ik.distance + kj.distance; - if (altDistance < ij.distance) { - ij.distance = altDistance; - ij.predecessor = kj.predecessor; - } - }); - }); - }); - - return results; -} - -var topsort_1 = topsort; -topsort.CycleException = CycleException; - -function topsort(g) { - var visited = {}; - var stack = {}; - var results = []; - - function visit(node) { - if (lodash_1$1.has(stack, node)) { - throw new CycleException(); - } - - if (!lodash_1$1.has(visited, node)) { - stack[node] = true; - visited[node] = true; - lodash_1$1.each(g.predecessors(node), visit); - delete stack[node]; - results.push(node); - } - } - - lodash_1$1.each(g.sinks(), visit); - - if (lodash_1$1.size(visited) !== g.nodeCount()) { - throw new CycleException(); - } - - return results; -} - -function CycleException() {} -CycleException.prototype = new Error(); // must be an instance of Error to pass testing - -var isAcyclic_1 = isAcyclic; - -function isAcyclic(g) { - try { - topsort_1(g); - } catch (e) { - if (e instanceof topsort_1.CycleException) { - return false; - } - throw e; - } - return true; -} - -var dfs_1 = dfs$1; - -/* - * A helper that preforms a pre- or post-order traversal on the input graph - * and returns the nodes in the order they were visited. If the graph is - * undirected then this algorithm will navigate using neighbors. If the graph - * is directed then this algorithm will navigate using successors. - * - * Order must be one of "pre" or "post". - */ -function dfs$1(g, vs, order) { - if (!lodash_1$1.isArray(vs)) { - vs = [vs]; - } - - var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g); - - var acc = []; - var visited = {}; - lodash_1$1.each(vs, function(v) { - if (!g.hasNode(v)) { - throw new Error("Graph does not have node: " + v); - } - - doDfs(g, v, order === "post", visited, navigation, acc); - }); - return acc; -} - -function doDfs(g, v, postorder, visited, navigation, acc) { - if (!lodash_1$1.has(visited, v)) { - visited[v] = true; - - if (!postorder) { acc.push(v); } - lodash_1$1.each(navigation(v), function(w) { - doDfs(g, w, postorder, visited, navigation, acc); - }); - if (postorder) { acc.push(v); } - } -} - -var postorder_1 = postorder$2; - -function postorder$2(g, vs) { - return dfs_1(g, vs, "post"); -} - -var preorder_1 = preorder$1; - -function preorder$1(g, vs) { - return dfs_1(g, vs, "pre"); -} - -var prim_1 = prim; - -function prim(g, weightFunc) { - var result = new graph(); - var parents = {}; - var pq = new priorityQueue(); - var v; - - function updateNeighbors(edge) { - var w = edge.v === v ? edge.w : edge.v; - var pri = pq.priority(w); - if (pri !== undefined) { - var edgeWeight = weightFunc(edge); - if (edgeWeight < pri) { - parents[w] = v; - pq.decrease(w, edgeWeight); - } - } - } - - if (g.nodeCount() === 0) { - return result; - } - - lodash_1$1.each(g.nodes(), function(v) { - pq.add(v, Number.POSITIVE_INFINITY); - result.setNode(v); - }); - - // Start from an arbitrary node - pq.decrease(g.nodes()[0], 0); - - var init = false; - while (pq.size() > 0) { - v = pq.removeMin(); - if (lodash_1$1.has(parents, v)) { - result.setEdge(v, parents[v]); - } else if (init) { - throw new Error("Input graph is not connected: " + g); - } else { - init = true; - } - - g.nodeEdges(v).forEach(updateNeighbors); - } - - return result; -} - -var alg = { - components: components_1, - dijkstra: dijkstra_1, - dijkstraAll: dijkstraAll_1, - findCycles: findCycles_1, - floydWarshall: floydWarshall_1, - isAcyclic: isAcyclic_1, - postorder: postorder_1, - preorder: preorder_1, - prim: prim_1, - tarjan: tarjan_1, - topsort: topsort_1 -}; - -/** - * Copyright (c) 2014, Chris Pettitt - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the copyright holder 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 HOLDER 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. - */ - -var graphlib$1 = { - Graph: lib.Graph, - json: json, - alg: alg, - version: lib.version -}; - -/* global window */ - -var graphlib; - -if (typeof commonjsRequire === "function") { - try { - graphlib = graphlib$1; - } catch (e) { - // continue regardless of error - } -} - -if (!graphlib) { - graphlib = window.graphlib; -} - -var graphlib_1 = graphlib; - -/** Used to compose bitmasks for cloning. */ -var CLONE_DEEP_FLAG = 1, - CLONE_SYMBOLS_FLAG = 4; - -/** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @see _.clone - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false - */ -function cloneDeep(value) { - return _baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); -} - -var cloneDeep_1 = cloneDeep; - -/** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ -function isIterateeCall(value, index, object) { - if (!isObject_1(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike_1(object) && _isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq_1(object[index], value); - } - return false; -} - -var _isIterateeCall = isIterateeCall; - -/** Used for built-in method references. */ -var objectProto$1 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$1 = objectProto$1.hasOwnProperty; - -/** - * Assigns own and inherited enumerable string keyed properties of source - * objects to the destination object for all destination properties that - * resolve to `undefined`. Source objects are applied from left to right. - * Once a property is set, additional values of the same property are ignored. - * - * **Note:** This method mutates `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaultsDeep - * @example - * - * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ -var defaults = _baseRest(function(object, sources) { - object = Object(object); - - var index = -1; - var length = sources.length; - var guard = length > 2 ? sources[2] : undefined; - - if (guard && _isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - - while (++index < length) { - var source = sources[index]; - var props = keysIn_1(source); - var propsIndex = -1; - var propsLength = props.length; - - while (++propsIndex < propsLength) { - var key = props[propsIndex]; - var value = object[key]; - - if (value === undefined || - (eq_1(value, objectProto$1[key]) && !hasOwnProperty$1.call(object, key))) { - object[key] = source[key]; - } - } - } - - return object; -}); - -var defaults_1 = defaults; - -/** - * Creates a `_.find` or `_.findLast` function. - * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. - */ -function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike_1(collection)) { - var iteratee = _baseIteratee(predicate); - collection = keys_1(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; - }; -} - -var _createFind = createFind; - -/** Used to match a single whitespace character. */ -var reWhitespace = /\s/; - -/** - * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace - * character of `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the index of the last non-whitespace character. - */ -function trimmedEndIndex(string) { - var index = string.length; - - while (index-- && reWhitespace.test(string.charAt(index))) {} - return index; -} - -var _trimmedEndIndex = trimmedEndIndex; - -/** Used to match leading whitespace. */ -var reTrimStart = /^\s+/; - -/** - * The base implementation of `_.trim`. - * - * @private - * @param {string} string The string to trim. - * @returns {string} Returns the trimmed string. - */ -function baseTrim(string) { - return string - ? string.slice(0, _trimmedEndIndex(string) + 1).replace(reTrimStart, '') - : string; -} - -var _baseTrim = baseTrim; - -/** Used as references for various `Number` constants. */ -var NAN = 0 / 0; - -/** Used to detect bad signed hexadecimal string values. */ -var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - -/** Used to detect binary string values. */ -var reIsBinary = /^0b[01]+$/i; - -/** Used to detect octal string values. */ -var reIsOctal = /^0o[0-7]+$/i; - -/** Built-in method references without a dependency on `root`. */ -var freeParseInt = parseInt; - -/** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ -function toNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol_1(value)) { - return NAN; - } - if (isObject_1(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject_1(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = _baseTrim(value); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); -} - -var toNumber_1 = toNumber; - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0, - MAX_INTEGER = 1.7976931348623157e+308; - -/** - * Converts `value` to a finite number. - * - * @static - * @memberOf _ - * @since 4.12.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted number. - * @example - * - * _.toFinite(3.2); - * // => 3.2 - * - * _.toFinite(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toFinite(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toFinite('3.2'); - * // => 3.2 - */ -function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber_1(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - return value === value ? value : 0; -} - -var toFinite_1 = toFinite; - -/** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ -function toInteger(value) { - var result = toFinite_1(value), - remainder = result % 1; - - return result === result ? (remainder ? result - remainder : result) : 0; -} - -var toInteger_1 = toInteger; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax$1 = Math.max; - -/** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 - * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 - */ -function findIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger_1(fromIndex); - if (index < 0) { - index = nativeMax$1(length + index, 0); - } - return _baseFindIndex(array, _baseIteratee(predicate), index); -} - -var findIndex_1 = findIndex; - -/** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' - * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' - */ -var find = _createFind(findIndex_1); - -var find_1 = find; - -/** - * Flattens `array` a single level deep. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] - */ -function flatten(array) { - var length = array == null ? 0 : array.length; - return length ? _baseFlatten(array, 1) : []; -} - -var flatten_1 = flatten; - -/** - * Iterates over own and inherited enumerable string keyed properties of an - * object and invokes `iteratee` for each property. The iteratee is invoked - * with three arguments: (value, key, object). Iteratee functions may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forInRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forIn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). - */ -function forIn(object, iteratee) { - return object == null - ? object - : _baseFor(object, _castFunction(iteratee), keysIn_1); -} - -var forIn_1 = forIn; - -/** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ -function last(array) { - var length = array == null ? 0 : array.length; - return length ? array[length - 1] : undefined; -} - -var last_1 = last; - -/** - * Creates an object with the same keys as `object` and values generated - * by running each own enumerable string keyed property of `object` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, key, object). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapKeys - * @example - * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * - * _.mapValues(users, function(o) { return o.age; }); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - * - * // The `_.property` iteratee shorthand. - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - */ -function mapValues(object, iteratee) { - var result = {}; - iteratee = _baseIteratee(iteratee); - - _baseForOwn(object, function(value, key, object) { - _baseAssignValue(result, key, iteratee(value, key, object)); - }); - return result; -} - -var mapValues_1 = mapValues; - -/** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. - */ -function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; - - while (++index < length) { - var value = array[index], - current = iteratee(value); - - if (current != null && (computed === undefined - ? (current === current && !isSymbol_1(current)) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } - } - return result; -} - -var _baseExtremum = baseExtremum; - -/** - * The base implementation of `_.gt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - */ -function baseGt(value, other) { - return value > other; -} - -var _baseGt = baseGt; - -/** - * Computes the maximum value of `array`. If `array` is empty or falsey, - * `undefined` is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {*} Returns the maximum value. - * @example - * - * _.max([4, 2, 8, 6]); - * // => 8 - * - * _.max([]); - * // => undefined - */ -function max(array) { - return (array && array.length) - ? _baseExtremum(array, identity_1, _baseGt) - : undefined; -} - -var max_1 = max; - -/** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq_1(object[key], value)) || - (value === undefined && !(key in object))) { - _baseAssignValue(object, key, value); - } -} - -var _assignMergeValue = assignMergeValue; - -/** `Object#toString` result references. */ -var objectTag = '[object Object]'; - -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Used to infer the `Object` constructor. */ -var objectCtorString = funcToString.call(Object); - -/** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ -function isPlainObject(value) { - if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) { - return false; - } - var proto = _getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return typeof Ctor == 'function' && Ctor instanceof Ctor && - funcToString.call(Ctor) == objectCtorString; -} - -var isPlainObject_1 = isPlainObject; - -/** - * Gets the value at `key`, unless `key` is "__proto__" or "constructor". - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function safeGet(object, key) { - if (key === 'constructor' && typeof object[key] === 'function') { - return; - } - - if (key == '__proto__') { - return; - } - - return object[key]; -} - -var _safeGet = safeGet; - -/** - * Converts `value` to a plain object flattening inherited enumerable string - * keyed properties of `value` to own properties of the plain object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } - * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } - */ -function toPlainObject(value) { - return _copyObject(value, keysIn_1(value)); -} - -var toPlainObject_1 = toPlainObject; - -/** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ -function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = _safeGet(object, key), - srcValue = _safeGet(source, key), - stacked = stack.get(srcValue); - - if (stacked) { - _assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; - - var isCommon = newValue === undefined; - - if (isCommon) { - var isArr = isArray_1(srcValue), - isBuff = !isArr && isBuffer_1(srcValue), - isTyped = !isArr && !isBuff && isTypedArray_1(srcValue); - - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray_1(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject_1(objValue)) { - newValue = _copyArray(objValue); - } - else if (isBuff) { - isCommon = false; - newValue = _cloneBuffer(srcValue, true); - } - else if (isTyped) { - isCommon = false; - newValue = _cloneTypedArray(srcValue, true); - } - else { - newValue = []; - } - } - else if (isPlainObject_1(srcValue) || isArguments_1(srcValue)) { - newValue = objValue; - if (isArguments_1(objValue)) { - newValue = toPlainObject_1(objValue); - } - else if (!isObject_1(objValue) || isFunction_1(objValue)) { - newValue = _initCloneObject(srcValue); - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); - } - _assignMergeValue(object, key, newValue); -} - -var _baseMergeDeep = baseMergeDeep; - -/** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ -function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - _baseFor(source, function(srcValue, key) { - stack || (stack = new _Stack); - if (isObject_1(srcValue)) { - _baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(_safeGet(object, key), srcValue, (key + ''), object, source, stack) - : undefined; - - if (newValue === undefined) { - newValue = srcValue; - } - _assignMergeValue(object, key, newValue); - } - }, keysIn_1); -} - -var _baseMerge = baseMerge; - -/** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ -function createAssigner(assigner) { - return _baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - if (guard && _isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); -} - -var _createAssigner = createAssigner; - -/** - * This method is like `_.assign` except that it recursively merges own and - * inherited enumerable string keyed properties of source objects into the - * destination object. Source properties that resolve to `undefined` are - * skipped if a destination value exists. Array and plain object properties - * are merged recursively. Other objects and value types are overridden by - * assignment. Source objects are applied from left to right. Subsequent - * sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * var object = { - * 'a': [{ 'b': 2 }, { 'd': 4 }] - * }; - * - * var other = { - * 'a': [{ 'c': 3 }, { 'e': 5 }] - * }; - * - * _.merge(object, other); - * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } - */ -var merge = _createAssigner(function(object, source, srcIndex) { - _baseMerge(object, source, srcIndex); -}); - -var merge_1 = merge; - -/** - * The base implementation of `_.lt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - */ -function baseLt(value, other) { - return value < other; -} - -var _baseLt = baseLt; - -/** - * Computes the minimum value of `array`. If `array` is empty or falsey, - * `undefined` is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {*} Returns the minimum value. - * @example - * - * _.min([4, 2, 8, 6]); - * // => 2 - * - * _.min([]); - * // => undefined - */ -function min(array) { - return (array && array.length) - ? _baseExtremum(array, identity_1, _baseLt) - : undefined; -} - -var min_1 = min; - -/** - * This method is like `_.min` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * the value is ranked. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Math - * @param {Array} array The array to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {*} Returns the minimum value. - * @example - * - * var objects = [{ 'n': 1 }, { 'n': 2 }]; - * - * _.minBy(objects, function(o) { return o.n; }); - * // => { 'n': 1 } - * - * // The `_.property` iteratee shorthand. - * _.minBy(objects, 'n'); - * // => { 'n': 1 } - */ -function minBy(array, iteratee) { - return (array && array.length) - ? _baseExtremum(array, _baseIteratee(iteratee), _baseLt) - : undefined; -} - -var minBy_1 = minBy; - -/** - * Gets the timestamp of the number of milliseconds that have elapsed since - * the Unix epoch (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Date - * @returns {number} Returns the timestamp. - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => Logs the number of milliseconds it took for the deferred invocation. - */ -var now = function() { - return _root.Date.now(); -}; - -var now_1 = now; - -/** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ -function baseSet(object, path, value, customizer) { - if (!isObject_1(object)) { - return object; - } - path = _castPath(path, object); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = _toKey(path[index]), - newValue = value; - - if (key === '__proto__' || key === 'constructor' || key === 'prototype') { - return object; - } - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject_1(objValue) - ? objValue - : (_isIndex(path[index + 1]) ? [] : {}); - } - } - _assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; -} - -var _baseSet = baseSet; - -/** - * The base implementation of `_.pickBy` without support for iteratee shorthands. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. - */ -function basePickBy(object, paths, predicate) { - var index = -1, - length = paths.length, - result = {}; - - while (++index < length) { - var path = paths[index], - value = _baseGet(object, path); - - if (predicate(value, path)) { - _baseSet(result, _castPath(path, object), value); - } - } - return result; -} - -var _basePickBy = basePickBy; - -/** - * The base implementation of `_.pick` without support for individual - * property identifiers. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @returns {Object} Returns the new object. - */ -function basePick(object, paths) { - return _basePickBy(object, paths, function(value, path) { - return hasIn_1(object, path); - }); -} - -var _basePick = basePick; - -/** - * A specialized version of `baseRest` which flattens the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ -function flatRest(func) { - return _setToString(_overRest(func, undefined, flatten_1), func + ''); -} - -var _flatRest = flatRest; - -/** - * Creates an object composed of the picked `object` properties. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pick(object, ['a', 'c']); - * // => { 'a': 1, 'c': 3 } - */ -var pick = _flatRest(function(object, paths) { - return object == null ? {} : _basePick(object, paths); -}); - -var pick_1 = pick; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeCeil = Math.ceil, - nativeMax = Math.max; - -/** - * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments. - * - * @private - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @param {number} step The value to increment or decrement by. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the range of numbers. - */ -function baseRange(start, end, step, fromRight) { - var index = -1, - length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), - result = Array(length); - - while (length--) { - result[fromRight ? length : ++index] = start; - start += step; - } - return result; -} - -var _baseRange = baseRange; - -/** - * Creates a `_.range` or `_.rangeRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new range function. - */ -function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != 'number' && _isIterateeCall(start, end, step)) { - end = step = undefined; - } - // Ensure the sign of `-0` is preserved. - start = toFinite_1(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite_1(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite_1(step); - return _baseRange(start, end, step, fromRight); - }; -} - -var _createRange = createRange; - -/** - * Creates an array of numbers (positive and/or negative) progressing from - * `start` up to, but not including, `end`. A step of `-1` is used if a negative - * `start` is specified without an `end` or `step`. If `end` is not specified, - * it's set to `start` with `start` then set to `0`. - * - * **Note:** JavaScript follows the IEEE-754 standard for resolving - * floating-point values which can produce unexpected results. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @param {number} [step=1] The value to increment or decrement by. - * @returns {Array} Returns the range of numbers. - * @see _.inRange, _.rangeRight - * @example - * - * _.range(4); - * // => [0, 1, 2, 3] - * - * _.range(-4); - * // => [0, -1, -2, -3] - * - * _.range(1, 5); - * // => [1, 2, 3, 4] - * - * _.range(0, 20, 5); - * // => [0, 5, 10, 15] - * - * _.range(0, -4, -1); - * // => [0, -1, -2, -3] - * - * _.range(1, 4, 0); - * // => [1, 1, 1] - * - * _.range(0); - * // => [] - */ -var range = _createRange(); - -var range_1 = range; - -/** - * The base implementation of `_.sortBy` which uses `comparer` to define the - * sort order of `array` and replaces criteria objects with their corresponding - * values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ -function baseSortBy(array, comparer) { - var length = array.length; - - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; -} - -var _baseSortBy = baseSortBy; - -/** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ -function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = isSymbol_1(value); - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = isSymbol_1(other); - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; - } - } - return 0; -} - -var _compareAscending = compareAscending; - -/** - * Used by `_.orderBy` to compare multiple properties of a value to another - * and stable sort them. - * - * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, - * specify an order of "desc" for descending or "asc" for ascending sort order - * of corresponding values. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]|string[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ -function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = _compareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - var order = orders[index]; - return result * (order == 'desc' ? -1 : 1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; -} - -var _compareMultiple = compareMultiple; - -/** - * The base implementation of `_.orderBy` without param guards. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {string[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. - */ -function baseOrderBy(collection, iteratees, orders) { - if (iteratees.length) { - iteratees = _arrayMap(iteratees, function(iteratee) { - if (isArray_1(iteratee)) { - return function(value) { - return _baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); - } - } - return iteratee; - }); - } else { - iteratees = [identity_1]; - } - - var index = -1; - iteratees = _arrayMap(iteratees, _baseUnary(_baseIteratee)); - - var result = _baseMap(collection, function(value, key, collection) { - var criteria = _arrayMap(iteratees, function(iteratee) { - return iteratee(value); - }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); - - return _baseSortBy(result, function(object, other) { - return _compareMultiple(object, other, orders); - }); -} - -var _baseOrderBy = baseOrderBy; - -/** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection thru each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 30 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] - * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] - */ -var sortBy = _baseRest(function(collection, iteratees) { - if (collection == null) { - return []; - } - var length = iteratees.length; - if (length > 1 && _isIterateeCall(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length > 2 && _isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; - } - return _baseOrderBy(collection, _baseFlatten(iteratees, 1), []); -}); - -var sortBy_1 = sortBy; - -/** Used to generate unique IDs. */ -var idCounter = 0; - -/** - * Generates a unique ID. If `prefix` is given, the ID is appended to it. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {string} [prefix=''] The value to prefix the ID with. - * @returns {string} Returns the unique ID. - * @example - * - * _.uniqueId('contact_'); - * // => 'contact_104' - * - * _.uniqueId(); - * // => '105' - */ -function uniqueId(prefix) { - var id = ++idCounter; - return toString_1(prefix) + id; -} - -var uniqueId_1 = uniqueId; - -/** - * This base implementation of `_.zipObject` which assigns values using `assignFunc`. - * - * @private - * @param {Array} props The property identifiers. - * @param {Array} values The property values. - * @param {Function} assignFunc The function to assign values. - * @returns {Object} Returns the new object. - */ -function baseZipObject(props, values, assignFunc) { - var index = -1, - length = props.length, - valsLength = values.length, - result = {}; - - while (++index < length) { - var value = index < valsLength ? values[index] : undefined; - assignFunc(result, props[index], value); - } - return result; -} - -var _baseZipObject = baseZipObject; - -/** - * This method is like `_.fromPairs` except that it accepts two arrays, - * one of property identifiers and one of corresponding values. - * - * @static - * @memberOf _ - * @since 0.4.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObject(['a', 'b'], [1, 2]); - * // => { 'a': 1, 'b': 2 } - */ -function zipObject(props, values) { - return _baseZipObject(props || [], values || [], _assignValue); -} - -var zipObject_1 = zipObject; - -/* global window */ - -var lodash; - -if (typeof commonjsRequire === "function") { - try { - lodash = { - cloneDeep: cloneDeep_1, - constant: constant_1, - defaults: defaults_1, - each: each, - filter: filter_1, - find: find_1, - flatten: flatten_1, - forEach: forEach_1, - forIn: forIn_1, - has: has_1, - isUndefined: isUndefined_1, - last: last_1, - map: map_1, - mapValues: mapValues_1, - max: max_1, - merge: merge_1, - min: min_1, - minBy: minBy_1, - now: now_1, - pick: pick_1, - range: range_1, - reduce: reduce_1, - sortBy: sortBy_1, - uniqueId: uniqueId_1, - values: values_1, - zipObject: zipObject_1, - }; - } catch (e) { - // continue regardless of error - } -} - -if (!lodash) { - lodash = window._; -} - -var lodash_1 = lodash; - -/* - * Simple doubly linked list implementation derived from Cormen, et al., - * "Introduction to Algorithms". - */ -var list = List; - -function List() { - var sentinel = {}; - sentinel._next = sentinel._prev = sentinel; - this._sentinel = sentinel; -} - -List.prototype.dequeue = function() { - var sentinel = this._sentinel; - var entry = sentinel._prev; - if (entry !== sentinel) { - unlink(entry); - return entry; - } -}; - -List.prototype.enqueue = function(entry) { - var sentinel = this._sentinel; - if (entry._prev && entry._next) { - unlink(entry); - } - entry._next = sentinel._next; - sentinel._next._prev = entry; - sentinel._next = entry; - entry._prev = sentinel; -}; - -List.prototype.toString = function() { - var strs = []; - var sentinel = this._sentinel; - var curr = sentinel._prev; - while (curr !== sentinel) { - strs.push(JSON.stringify(curr, filterOutLinks)); - curr = curr._prev; - } - return "[" + strs.join(", ") + "]"; -}; - -function unlink(entry) { - entry._prev._next = entry._next; - entry._next._prev = entry._prev; - delete entry._next; - delete entry._prev; -} - -function filterOutLinks(k, v) { - if (k !== "_next" && k !== "_prev") { - return v; - } -} - -var Graph$7 = graphlib_1.Graph; - - -/* - * A greedy heuristic for finding a feedback arc set for a graph. A feedback - * arc set is a set of edges that can be removed to make a graph acyclic. - * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, "A fast and - * effective heuristic for the feedback arc set problem." This implementation - * adjusts that from the paper to allow for weighted edges. - */ -var greedyFas = greedyFAS; - -var DEFAULT_WEIGHT_FN = lodash_1.constant(1); - -function greedyFAS(g, weightFn) { - if (g.nodeCount() <= 1) { - return []; - } - var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN); - var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx); - - // Expand multi-edges - return lodash_1.flatten(lodash_1.map(results, function(e) { - return g.outEdges(e.v, e.w); - }), true); -} - -function doGreedyFAS(g, buckets, zeroIdx) { - var results = []; - var sources = buckets[buckets.length - 1]; - var sinks = buckets[0]; - - var entry; - while (g.nodeCount()) { - while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); } - while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); } - if (g.nodeCount()) { - for (var i = buckets.length - 2; i > 0; --i) { - entry = buckets[i].dequeue(); - if (entry) { - results = results.concat(removeNode(g, buckets, zeroIdx, entry, true)); - break; - } - } - } - } - - return results; -} - -function removeNode(g, buckets, zeroIdx, entry, collectPredecessors) { - var results = collectPredecessors ? [] : undefined; - - lodash_1.forEach(g.inEdges(entry.v), function(edge) { - var weight = g.edge(edge); - var uEntry = g.node(edge.v); - - if (collectPredecessors) { - results.push({ v: edge.v, w: edge.w }); - } - - uEntry.out -= weight; - assignBucket(buckets, zeroIdx, uEntry); - }); - - lodash_1.forEach(g.outEdges(entry.v), function(edge) { - var weight = g.edge(edge); - var w = edge.w; - var wEntry = g.node(w); - wEntry["in"] -= weight; - assignBucket(buckets, zeroIdx, wEntry); - }); - - g.removeNode(entry.v); - - return results; -} - -function buildState(g, weightFn) { - var fasGraph = new Graph$7(); - var maxIn = 0; - var maxOut = 0; - - lodash_1.forEach(g.nodes(), function(v) { - fasGraph.setNode(v, { v: v, "in": 0, out: 0 }); - }); - - // Aggregate weights on nodes, but also sum the weights across multi-edges - // into a single edge for the fasGraph. - lodash_1.forEach(g.edges(), function(e) { - var prevWeight = fasGraph.edge(e.v, e.w) || 0; - var weight = weightFn(e); - var edgeWeight = prevWeight + weight; - fasGraph.setEdge(e.v, e.w, edgeWeight); - maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight); - maxIn = Math.max(maxIn, fasGraph.node(e.w)["in"] += weight); - }); - - var buckets = lodash_1.range(maxOut + maxIn + 3).map(function() { return new list(); }); - var zeroIdx = maxIn + 1; - - lodash_1.forEach(fasGraph.nodes(), function(v) { - assignBucket(buckets, zeroIdx, fasGraph.node(v)); - }); - - return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx }; -} - -function assignBucket(buckets, zeroIdx, entry) { - if (!entry.out) { - buckets[0].enqueue(entry); - } else if (!entry["in"]) { - buckets[buckets.length - 1].enqueue(entry); - } else { - buckets[entry.out - entry["in"] + zeroIdx].enqueue(entry); - } -} - -var acyclic = { - run: run$2, - undo: undo$2 -}; - -function run$2(g) { - var fas = (g.graph().acyclicer === "greedy" - ? greedyFas(g, weightFn(g)) - : dfsFAS(g)); - lodash_1.forEach(fas, function(e) { - var label = g.edge(e); - g.removeEdge(e); - label.forwardName = e.name; - label.reversed = true; - g.setEdge(e.w, e.v, label, lodash_1.uniqueId("rev")); - }); - - function weightFn(g) { - return function(e) { - return g.edge(e).weight; - }; - } -} - -function dfsFAS(g) { - var fas = []; - var stack = {}; - var visited = {}; - - function dfs(v) { - if (lodash_1.has(visited, v)) { - return; - } - visited[v] = true; - stack[v] = true; - lodash_1.forEach(g.outEdges(v), function(e) { - if (lodash_1.has(stack, e.w)) { - fas.push(e); - } else { - dfs(e.w); - } - }); - delete stack[v]; - } - - lodash_1.forEach(g.nodes(), dfs); - return fas; -} - -function undo$2(g) { - lodash_1.forEach(g.edges(), function(e) { - var label = g.edge(e); - if (label.reversed) { - g.removeEdge(e); - - var forwardName = label.forwardName; - delete label.reversed; - delete label.forwardName; - g.setEdge(e.w, e.v, label, forwardName); - } - }); -} - -/* eslint "no-console": off */ - - -var Graph$6 = graphlib_1.Graph; - -var util$1 = { - addDummyNode: addDummyNode, - simplify: simplify$1, - asNonCompoundGraph: asNonCompoundGraph, - successorWeights: successorWeights, - predecessorWeights: predecessorWeights, - intersectRect: intersectRect, - buildLayerMatrix: buildLayerMatrix, - normalizeRanks: normalizeRanks$1, - removeEmptyRanks: removeEmptyRanks$1, - addBorderNode: addBorderNode$1, - maxRank: maxRank, - partition: partition, - time: time, - notime: notime -}; - -/* - * Adds a dummy node to the graph and return v. - */ -function addDummyNode(g, type, attrs, name) { - var v; - do { - v = lodash_1.uniqueId(name); - } while (g.hasNode(v)); - - attrs.dummy = type; - g.setNode(v, attrs); - return v; -} - -/* - * Returns a new graph with only simple edges. Handles aggregation of data - * associated with multi-edges. - */ -function simplify$1(g) { - var simplified = new Graph$6().setGraph(g.graph()); - lodash_1.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); }); - lodash_1.forEach(g.edges(), function(e) { - var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 }; - var label = g.edge(e); - simplified.setEdge(e.v, e.w, { - weight: simpleLabel.weight + label.weight, - minlen: Math.max(simpleLabel.minlen, label.minlen) - }); - }); - return simplified; -} - -function asNonCompoundGraph(g) { - var simplified = new Graph$6({ multigraph: g.isMultigraph() }).setGraph(g.graph()); - lodash_1.forEach(g.nodes(), function(v) { - if (!g.children(v).length) { - simplified.setNode(v, g.node(v)); - } - }); - lodash_1.forEach(g.edges(), function(e) { - simplified.setEdge(e, g.edge(e)); - }); - return simplified; -} - -function successorWeights(g) { - var weightMap = lodash_1.map(g.nodes(), function(v) { - var sucs = {}; - lodash_1.forEach(g.outEdges(v), function(e) { - sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight; - }); - return sucs; - }); - return lodash_1.zipObject(g.nodes(), weightMap); -} - -function predecessorWeights(g) { - var weightMap = lodash_1.map(g.nodes(), function(v) { - var preds = {}; - lodash_1.forEach(g.inEdges(v), function(e) { - preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight; - }); - return preds; - }); - return lodash_1.zipObject(g.nodes(), weightMap); -} - -/* - * Finds where a line starting at point ({x, y}) would intersect a rectangle - * ({x, y, width, height}) if it were pointing at the rectangle's center. - */ -function intersectRect(rect, point) { - var x = rect.x; - var y = rect.y; - - // Rectangle intersection algorithm from: - // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes - var dx = point.x - x; - var dy = point.y - y; - var w = rect.width / 2; - var h = rect.height / 2; - - if (!dx && !dy) { - throw new Error("Not possible to find intersection inside of the rectangle"); - } - - var sx, sy; - if (Math.abs(dy) * w > Math.abs(dx) * h) { - // Intersection is top or bottom of rect. - if (dy < 0) { - h = -h; - } - sx = h * dx / dy; - sy = h; - } else { - // Intersection is left or right of rect. - if (dx < 0) { - w = -w; - } - sx = w; - sy = w * dy / dx; - } - - return { x: x + sx, y: y + sy }; -} - -/* - * Given a DAG with each node assigned "rank" and "order" properties, this - * function will produce a matrix with the ids of each node. - */ -function buildLayerMatrix(g) { - var layering = lodash_1.map(lodash_1.range(maxRank(g) + 1), function() { return []; }); - lodash_1.forEach(g.nodes(), function(v) { - var node = g.node(v); - var rank = node.rank; - if (!lodash_1.isUndefined(rank)) { - layering[rank][node.order] = v; - } - }); - return layering; -} - -/* - * Adjusts the ranks for all nodes in the graph such that all nodes v have - * rank(v) >= 0 and at least one node w has rank(w) = 0. - */ -function normalizeRanks$1(g) { - var min = lodash_1.min(lodash_1.map(g.nodes(), function(v) { return g.node(v).rank; })); - lodash_1.forEach(g.nodes(), function(v) { - var node = g.node(v); - if (lodash_1.has(node, "rank")) { - node.rank -= min; - } - }); -} - -function removeEmptyRanks$1(g) { - // Ranks may not start at 0, so we need to offset them - var offset = lodash_1.min(lodash_1.map(g.nodes(), function(v) { return g.node(v).rank; })); - - var layers = []; - lodash_1.forEach(g.nodes(), function(v) { - var rank = g.node(v).rank - offset; - if (!layers[rank]) { - layers[rank] = []; - } - layers[rank].push(v); - }); - - var delta = 0; - var nodeRankFactor = g.graph().nodeRankFactor; - lodash_1.forEach(layers, function(vs, i) { - if (lodash_1.isUndefined(vs) && i % nodeRankFactor !== 0) { - --delta; - } else if (delta) { - lodash_1.forEach(vs, function(v) { g.node(v).rank += delta; }); - } - }); -} - -function addBorderNode$1(g, prefix, rank, order) { - var node = { - width: 0, - height: 0 - }; - if (arguments.length >= 4) { - node.rank = rank; - node.order = order; - } - return addDummyNode(g, "border", node, prefix); -} - -function maxRank(g) { - return lodash_1.max(lodash_1.map(g.nodes(), function(v) { - var rank = g.node(v).rank; - if (!lodash_1.isUndefined(rank)) { - return rank; - } - })); -} - -/* - * Partition a collection into two groups: `lhs` and `rhs`. If the supplied - * function returns true for an entry it goes into `lhs`. Otherwise it goes - * into `rhs. - */ -function partition(collection, fn) { - var result = { lhs: [], rhs: [] }; - lodash_1.forEach(collection, function(value) { - if (fn(value)) { - result.lhs.push(value); - } else { - result.rhs.push(value); - } - }); - return result; -} - -/* - * Returns a new function that wraps `fn` with a timer. The wrapper logs the - * time it takes to execute the function. - */ -function time(name, fn) { - var start = lodash_1.now(); - try { - return fn(); - } finally { - console.log(name + " time: " + (lodash_1.now() - start) + "ms"); - } -} - -function notime(name, fn) { - return fn(); -} - -var normalize = { - run: run$1, - undo: undo$1 -}; - -/* - * Breaks any long edges in the graph into short segments that span 1 layer - * each. This operation is undoable with the denormalize function. - * - * Pre-conditions: - * - * 1. The input graph is a DAG. - * 2. Each node in the graph has a "rank" property. - * - * Post-condition: - * - * 1. All edges in the graph have a length of 1. - * 2. Dummy nodes are added where edges have been split into segments. - * 3. The graph is augmented with a "dummyChains" attribute which contains - * the first dummy in each chain of dummy nodes produced. - */ -function run$1(g) { - g.graph().dummyChains = []; - lodash_1.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); }); -} - -function normalizeEdge(g, e) { - var v = e.v; - var vRank = g.node(v).rank; - var w = e.w; - var wRank = g.node(w).rank; - var name = e.name; - var edgeLabel = g.edge(e); - var labelRank = edgeLabel.labelRank; - - if (wRank === vRank + 1) return; - - g.removeEdge(e); - - var dummy, attrs, i; - for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) { - edgeLabel.points = []; - attrs = { - width: 0, height: 0, - edgeLabel: edgeLabel, edgeObj: e, - rank: vRank - }; - dummy = util$1.addDummyNode(g, "edge", attrs, "_d"); - if (vRank === labelRank) { - attrs.width = edgeLabel.width; - attrs.height = edgeLabel.height; - attrs.dummy = "edge-label"; - attrs.labelpos = edgeLabel.labelpos; - } - g.setEdge(v, dummy, { weight: edgeLabel.weight }, name); - if (i === 0) { - g.graph().dummyChains.push(dummy); - } - v = dummy; - } - - g.setEdge(v, w, { weight: edgeLabel.weight }, name); -} - -function undo$1(g) { - lodash_1.forEach(g.graph().dummyChains, function(v) { - var node = g.node(v); - var origLabel = node.edgeLabel; - var w; - g.setEdge(node.edgeObj, origLabel); - while (node.dummy) { - w = g.successors(v)[0]; - g.removeNode(v); - origLabel.points.push({ x: node.x, y: node.y }); - if (node.dummy === "edge-label") { - origLabel.x = node.x; - origLabel.y = node.y; - origLabel.width = node.width; - origLabel.height = node.height; - } - v = w; - node = g.node(v); - } - }); -} - -var util = { - longestPath: longestPath$1, - slack: slack$2 -}; - -/* - * Initializes ranks for the input graph using the longest path algorithm. This - * algorithm scales well and is fast in practice, it yields rather poor - * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom - * ranks wide and leaving edges longer than necessary. However, due to its - * speed, this algorithm is good for getting an initial ranking that can be fed - * into other algorithms. - * - * This algorithm does not normalize layers because it will be used by other - * algorithms in most cases. If using this algorithm directly, be sure to - * run normalize at the end. - * - * Pre-conditions: - * - * 1. Input graph is a DAG. - * 2. Input graph node labels can be assigned properties. - * - * Post-conditions: - * - * 1. Each node will be assign an (unnormalized) "rank" property. - */ -function longestPath$1(g) { - var visited = {}; - - function dfs(v) { - var label = g.node(v); - if (lodash_1.has(visited, v)) { - return label.rank; - } - visited[v] = true; - - var rank = lodash_1.min(lodash_1.map(g.outEdges(v), function(e) { - return dfs(e.w) - g.edge(e).minlen; - })); - - if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3 - rank === undefined || // return value of _.map([]) for Lodash 4 - rank === null) { // return value of _.map([null]) - rank = 0; - } - - return (label.rank = rank); - } - - lodash_1.forEach(g.sources(), dfs); -} - -/* - * Returns the amount of slack for the given edge. The slack is defined as the - * difference between the length of the edge and its minimum length. - */ -function slack$2(g, e) { - return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen; -} - -var Graph$5 = graphlib_1.Graph; -var slack$1 = util.slack; - -var feasibleTree_1 = feasibleTree; - -/* - * Constructs a spanning tree with tight edges and adjusted the input node's - * ranks to achieve this. A tight edge is one that is has a length that matches - * its "minlen" attribute. - * - * The basic structure for this function is derived from Gansner, et al., "A - * Technique for Drawing Directed Graphs." - * - * Pre-conditions: - * - * 1. Graph must be a DAG. - * 2. Graph must be connected. - * 3. Graph must have at least one node. - * 5. Graph nodes must have been previously assigned a "rank" property that - * respects the "minlen" property of incident edges. - * 6. Graph edges must have a "minlen" property. - * - * Post-conditions: - * - * - Graph nodes will have their rank adjusted to ensure that all edges are - * tight. - * - * Returns a tree (undirected graph) that is constructed using only "tight" - * edges. - */ -function feasibleTree(g) { - var t = new Graph$5({ directed: false }); - - // Choose arbitrary node from which to start our tree - var start = g.nodes()[0]; - var size = g.nodeCount(); - t.setNode(start, {}); - - var edge, delta; - while (tightTree(t, g) < size) { - edge = findMinSlackEdge(t, g); - delta = t.hasNode(edge.v) ? slack$1(g, edge) : -slack$1(g, edge); - shiftRanks(t, g, delta); - } - - return t; -} - -/* - * Finds a maximal tree of tight edges and returns the number of nodes in the - * tree. - */ -function tightTree(t, g) { - function dfs(v) { - lodash_1.forEach(g.nodeEdges(v), function(e) { - var edgeV = e.v, - w = (v === edgeV) ? e.w : edgeV; - if (!t.hasNode(w) && !slack$1(g, e)) { - t.setNode(w, {}); - t.setEdge(v, w, {}); - dfs(w); - } - }); - } - - lodash_1.forEach(t.nodes(), dfs); - return t.nodeCount(); -} - -/* - * Finds the edge with the smallest slack that is incident on tree and returns - * it. - */ -function findMinSlackEdge(t, g) { - return lodash_1.minBy(g.edges(), function(e) { - if (t.hasNode(e.v) !== t.hasNode(e.w)) { - return slack$1(g, e); - } - }); -} - -function shiftRanks(t, g, delta) { - lodash_1.forEach(t.nodes(), function(v) { - g.node(v).rank += delta; - }); -} - -var slack = util.slack; -var initRank = util.longestPath; -var preorder = graphlib_1.alg.preorder; -var postorder$1 = graphlib_1.alg.postorder; -var simplify = util$1.simplify; - -var networkSimplex_1 = networkSimplex; - -// Expose some internals for testing purposes -networkSimplex.initLowLimValues = initLowLimValues; -networkSimplex.initCutValues = initCutValues; -networkSimplex.calcCutValue = calcCutValue; -networkSimplex.leaveEdge = leaveEdge; -networkSimplex.enterEdge = enterEdge; -networkSimplex.exchangeEdges = exchangeEdges; - -/* - * The network simplex algorithm assigns ranks to each node in the input graph - * and iteratively improves the ranking to reduce the length of edges. - * - * Preconditions: - * - * 1. The input graph must be a DAG. - * 2. All nodes in the graph must have an object value. - * 3. All edges in the graph must have "minlen" and "weight" attributes. - * - * Postconditions: - * - * 1. All nodes in the graph will have an assigned "rank" attribute that has - * been optimized by the network simplex algorithm. Ranks start at 0. - * - * - * A rough sketch of the algorithm is as follows: - * - * 1. Assign initial ranks to each node. We use the longest path algorithm, - * which assigns ranks to the lowest position possible. In general this - * leads to very wide bottom ranks and unnecessarily long edges. - * 2. Construct a feasible tight tree. A tight tree is one such that all - * edges in the tree have no slack (difference between length of edge - * and minlen for the edge). This by itself greatly improves the assigned - * rankings by shorting edges. - * 3. Iteratively find edges that have negative cut values. Generally a - * negative cut value indicates that the edge could be removed and a new - * tree edge could be added to produce a more compact graph. - * - * Much of the algorithms here are derived from Gansner, et al., "A Technique - * for Drawing Directed Graphs." The structure of the file roughly follows the - * structure of the overall algorithm. - */ -function networkSimplex(g) { - g = simplify(g); - initRank(g); - var t = feasibleTree_1(g); - initLowLimValues(t); - initCutValues(t, g); - - var e, f; - while ((e = leaveEdge(t))) { - f = enterEdge(t, g, e); - exchangeEdges(t, g, e, f); - } -} - -/* - * Initializes cut values for all edges in the tree. - */ -function initCutValues(t, g) { - var vs = postorder$1(t, t.nodes()); - vs = vs.slice(0, vs.length - 1); - lodash_1.forEach(vs, function(v) { - assignCutValue(t, g, v); - }); -} - -function assignCutValue(t, g, child) { - var childLab = t.node(child); - var parent = childLab.parent; - t.edge(child, parent).cutvalue = calcCutValue(t, g, child); -} - -/* - * Given the tight tree, its graph, and a child in the graph calculate and - * return the cut value for the edge between the child and its parent. - */ -function calcCutValue(t, g, child) { - var childLab = t.node(child); - var parent = childLab.parent; - // True if the child is on the tail end of the edge in the directed graph - var childIsTail = true; - // The graph's view of the tree edge we're inspecting - var graphEdge = g.edge(child, parent); - // The accumulated cut value for the edge between this node and its parent - var cutValue = 0; - - if (!graphEdge) { - childIsTail = false; - graphEdge = g.edge(parent, child); - } - - cutValue = graphEdge.weight; - - lodash_1.forEach(g.nodeEdges(child), function(e) { - var isOutEdge = e.v === child, - other = isOutEdge ? e.w : e.v; - - if (other !== parent) { - var pointsToHead = isOutEdge === childIsTail, - otherWeight = g.edge(e).weight; - - cutValue += pointsToHead ? otherWeight : -otherWeight; - if (isTreeEdge(t, child, other)) { - var otherCutValue = t.edge(child, other).cutvalue; - cutValue += pointsToHead ? -otherCutValue : otherCutValue; - } - } - }); - - return cutValue; -} - -function initLowLimValues(tree, root) { - if (arguments.length < 2) { - root = tree.nodes()[0]; - } - dfsAssignLowLim(tree, {}, 1, root); -} - -function dfsAssignLowLim(tree, visited, nextLim, v, parent) { - var low = nextLim; - var label = tree.node(v); - - visited[v] = true; - lodash_1.forEach(tree.neighbors(v), function(w) { - if (!lodash_1.has(visited, w)) { - nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v); - } - }); - - label.low = low; - label.lim = nextLim++; - if (parent) { - label.parent = parent; - } else { - // TODO should be able to remove this when we incrementally update low lim - delete label.parent; - } - - return nextLim; -} - -function leaveEdge(tree) { - return lodash_1.find(tree.edges(), function(e) { - return tree.edge(e).cutvalue < 0; - }); -} - -function enterEdge(t, g, edge) { - var v = edge.v; - var w = edge.w; - - // For the rest of this function we assume that v is the tail and w is the - // head, so if we don't have this edge in the graph we should flip it to - // match the correct orientation. - if (!g.hasEdge(v, w)) { - v = edge.w; - w = edge.v; - } - - var vLabel = t.node(v); - var wLabel = t.node(w); - var tailLabel = vLabel; - var flip = false; - - // If the root is in the tail of the edge then we need to flip the logic that - // checks for the head and tail nodes in the candidates function below. - if (vLabel.lim > wLabel.lim) { - tailLabel = wLabel; - flip = true; - } - - var candidates = lodash_1.filter(g.edges(), function(edge) { - return flip === isDescendant(t, t.node(edge.v), tailLabel) && - flip !== isDescendant(t, t.node(edge.w), tailLabel); - }); - - return lodash_1.minBy(candidates, function(edge) { return slack(g, edge); }); -} - -function exchangeEdges(t, g, e, f) { - var v = e.v; - var w = e.w; - t.removeEdge(v, w); - t.setEdge(f.v, f.w, {}); - initLowLimValues(t); - initCutValues(t, g); - updateRanks(t, g); -} - -function updateRanks(t, g) { - var root = lodash_1.find(t.nodes(), function(v) { return !g.node(v).parent; }); - var vs = preorder(t, root); - vs = vs.slice(1); - lodash_1.forEach(vs, function(v) { - var parent = t.node(v).parent, - edge = g.edge(v, parent), - flipped = false; - - if (!edge) { - edge = g.edge(parent, v); - flipped = true; - } - - g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen); - }); -} - -/* - * Returns true if the edge is in the tree. - */ -function isTreeEdge(tree, u, v) { - return tree.hasEdge(u, v); -} - -/* - * Returns true if the specified node is descendant of the root node per the - * assigned low and lim attributes in the tree. - */ -function isDescendant(tree, vLabel, rootLabel) { - return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim; -} - -var longestPath = util.longestPath; - - - -var rank_1 = rank; - -/* - * Assigns a rank to each node in the input graph that respects the "minlen" - * constraint specified on edges between nodes. - * - * This basic structure is derived from Gansner, et al., "A Technique for - * Drawing Directed Graphs." - * - * Pre-conditions: - * - * 1. Graph must be a connected DAG - * 2. Graph nodes must be objects - * 3. Graph edges must have "weight" and "minlen" attributes - * - * Post-conditions: - * - * 1. Graph nodes will have a "rank" attribute based on the results of the - * algorithm. Ranks can start at any index (including negative), we'll - * fix them up later. - */ -function rank(g) { - switch(g.graph().ranker) { - case "network-simplex": networkSimplexRanker(g); break; - case "tight-tree": tightTreeRanker(g); break; - case "longest-path": longestPathRanker(g); break; - default: networkSimplexRanker(g); - } -} - -// A fast and simple ranker, but results are far from optimal. -var longestPathRanker = longestPath; - -function tightTreeRanker(g) { - longestPath(g); - feasibleTree_1(g); -} - -function networkSimplexRanker(g) { - networkSimplex_1(g); -} - -var parentDummyChains_1 = parentDummyChains; - -function parentDummyChains(g) { - var postorderNums = postorder(g); - - lodash_1.forEach(g.graph().dummyChains, function(v) { - var node = g.node(v); - var edgeObj = node.edgeObj; - var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w); - var path = pathData.path; - var lca = pathData.lca; - var pathIdx = 0; - var pathV = path[pathIdx]; - var ascending = true; - - while (v !== edgeObj.w) { - node = g.node(v); - - if (ascending) { - while ((pathV = path[pathIdx]) !== lca && - g.node(pathV).maxRank < node.rank) { - pathIdx++; - } - - if (pathV === lca) { - ascending = false; - } - } - - if (!ascending) { - while (pathIdx < path.length - 1 && - g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) { - pathIdx++; - } - pathV = path[pathIdx]; - } - - g.setParent(v, pathV); - v = g.successors(v)[0]; - } - }); -} - -// Find a path from v to w through the lowest common ancestor (LCA). Return the -// full path and the LCA. -function findPath(g, postorderNums, v, w) { - var vPath = []; - var wPath = []; - var low = Math.min(postorderNums[v].low, postorderNums[w].low); - var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim); - var parent; - var lca; - - // Traverse up from v to find the LCA - parent = v; - do { - parent = g.parent(parent); - vPath.push(parent); - } while (parent && - (postorderNums[parent].low > low || lim > postorderNums[parent].lim)); - lca = parent; - - // Traverse from w to LCA - parent = w; - while ((parent = g.parent(parent)) !== lca) { - wPath.push(parent); - } - - return { path: vPath.concat(wPath.reverse()), lca: lca }; -} - -function postorder(g) { - var result = {}; - var lim = 0; - - function dfs(v) { - var low = lim; - lodash_1.forEach(g.children(v), dfs); - result[v] = { low: low, lim: lim++ }; - } - lodash_1.forEach(g.children(), dfs); - - return result; -} - -var nestingGraph = { - run: run, - cleanup: cleanup -}; - -/* - * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs, - * adds appropriate edges to ensure that all cluster nodes are placed between - * these boundries, and ensures that the graph is connected. - * - * In addition we ensure, through the use of the minlen property, that nodes - * and subgraph border nodes to not end up on the same rank. - * - * Preconditions: - * - * 1. Input graph is a DAG - * 2. Nodes in the input graph has a minlen attribute - * - * Postconditions: - * - * 1. Input graph is connected. - * 2. Dummy nodes are added for the tops and bottoms of subgraphs. - * 3. The minlen attribute for nodes is adjusted to ensure nodes do not - * get placed on the same rank as subgraph border nodes. - * - * The nesting graph idea comes from Sander, "Layout of Compound Directed - * Graphs." - */ -function run(g) { - var root = util$1.addDummyNode(g, "root", {}, "_root"); - var depths = treeDepths(g); - var height = lodash_1.max(lodash_1.values(depths)) - 1; // Note: depths is an Object not an array - var nodeSep = 2 * height + 1; - - g.graph().nestingRoot = root; - - // Multiply minlen by nodeSep to align nodes on non-border ranks. - lodash_1.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; }); - - // Calculate a weight that is sufficient to keep subgraphs vertically compact - var weight = sumWeights(g) + 1; - - // Create border nodes and link them up - lodash_1.forEach(g.children(), function(child) { - dfs(g, root, nodeSep, weight, height, depths, child); - }); - - // Save the multiplier for node layers for later removal of empty border - // layers. - g.graph().nodeRankFactor = nodeSep; -} - -function dfs(g, root, nodeSep, weight, height, depths, v) { - var children = g.children(v); - if (!children.length) { - if (v !== root) { - g.setEdge(root, v, { weight: 0, minlen: nodeSep }); - } - return; - } - - var top = util$1.addBorderNode(g, "_bt"); - var bottom = util$1.addBorderNode(g, "_bb"); - var label = g.node(v); - - g.setParent(top, v); - label.borderTop = top; - g.setParent(bottom, v); - label.borderBottom = bottom; - - lodash_1.forEach(children, function(child) { - dfs(g, root, nodeSep, weight, height, depths, child); - - var childNode = g.node(child); - var childTop = childNode.borderTop ? childNode.borderTop : child; - var childBottom = childNode.borderBottom ? childNode.borderBottom : child; - var thisWeight = childNode.borderTop ? weight : 2 * weight; - var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1; - - g.setEdge(top, childTop, { - weight: thisWeight, - minlen: minlen, - nestingEdge: true - }); - - g.setEdge(childBottom, bottom, { - weight: thisWeight, - minlen: minlen, - nestingEdge: true - }); - }); - - if (!g.parent(v)) { - g.setEdge(root, top, { weight: 0, minlen: height + depths[v] }); - } -} - -function treeDepths(g) { - var depths = {}; - function dfs(v, depth) { - var children = g.children(v); - if (children && children.length) { - lodash_1.forEach(children, function(child) { - dfs(child, depth + 1); - }); - } - depths[v] = depth; - } - lodash_1.forEach(g.children(), function(v) { dfs(v, 1); }); - return depths; -} - -function sumWeights(g) { - return lodash_1.reduce(g.edges(), function(acc, e) { - return acc + g.edge(e).weight; - }, 0); -} - -function cleanup(g) { - var graphLabel = g.graph(); - g.removeNode(graphLabel.nestingRoot); - delete graphLabel.nestingRoot; - lodash_1.forEach(g.edges(), function(e) { - var edge = g.edge(e); - if (edge.nestingEdge) { - g.removeEdge(e); - } - }); -} - -var addBorderSegments_1 = addBorderSegments; - -function addBorderSegments(g) { - function dfs(v) { - var children = g.children(v); - var node = g.node(v); - if (children.length) { - lodash_1.forEach(children, dfs); - } - - if (lodash_1.has(node, "minRank")) { - node.borderLeft = []; - node.borderRight = []; - for (var rank = node.minRank, maxRank = node.maxRank + 1; - rank < maxRank; - ++rank) { - addBorderNode(g, "borderLeft", "_bl", v, node, rank); - addBorderNode(g, "borderRight", "_br", v, node, rank); - } - } - } - - lodash_1.forEach(g.children(), dfs); -} - -function addBorderNode(g, prop, prefix, sg, sgNode, rank) { - var label = { width: 0, height: 0, rank: rank, borderType: prop }; - var prev = sgNode[prop][rank - 1]; - var curr = util$1.addDummyNode(g, "border", label, prefix); - sgNode[prop][rank] = curr; - g.setParent(curr, sg); - if (prev) { - g.setEdge(prev, curr, { weight: 1 }); - } -} - -var coordinateSystem = { - adjust: adjust, - undo: undo -}; - -function adjust(g) { - var rankDir = g.graph().rankdir.toLowerCase(); - if (rankDir === "lr" || rankDir === "rl") { - swapWidthHeight(g); - } -} - -function undo(g) { - var rankDir = g.graph().rankdir.toLowerCase(); - if (rankDir === "bt" || rankDir === "rl") { - reverseY(g); - } - - if (rankDir === "lr" || rankDir === "rl") { - swapXY(g); - swapWidthHeight(g); - } -} - -function swapWidthHeight(g) { - lodash_1.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); }); - lodash_1.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); }); -} - -function swapWidthHeightOne(attrs) { - var w = attrs.width; - attrs.width = attrs.height; - attrs.height = w; -} - -function reverseY(g) { - lodash_1.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); }); - - lodash_1.forEach(g.edges(), function(e) { - var edge = g.edge(e); - lodash_1.forEach(edge.points, reverseYOne); - if (lodash_1.has(edge, "y")) { - reverseYOne(edge); - } - }); -} - -function reverseYOne(attrs) { - attrs.y = -attrs.y; -} - -function swapXY(g) { - lodash_1.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); }); - - lodash_1.forEach(g.edges(), function(e) { - var edge = g.edge(e); - lodash_1.forEach(edge.points, swapXYOne); - if (lodash_1.has(edge, "x")) { - swapXYOne(edge); - } - }); -} - -function swapXYOne(attrs) { - var x = attrs.x; - attrs.x = attrs.y; - attrs.y = x; -} - -var initOrder_1 = initOrder; - -/* - * Assigns an initial order value for each node by performing a DFS search - * starting from nodes in the first rank. Nodes are assigned an order in their - * rank as they are first visited. - * - * This approach comes from Gansner, et al., "A Technique for Drawing Directed - * Graphs." - * - * Returns a layering matrix with an array per layer and each layer sorted by - * the order of its nodes. - */ -function initOrder(g) { - var visited = {}; - var simpleNodes = lodash_1.filter(g.nodes(), function(v) { - return !g.children(v).length; - }); - var maxRank = lodash_1.max(lodash_1.map(simpleNodes, function(v) { return g.node(v).rank; })); - var layers = lodash_1.map(lodash_1.range(maxRank + 1), function() { return []; }); - - function dfs(v) { - if (lodash_1.has(visited, v)) return; - visited[v] = true; - var node = g.node(v); - layers[node.rank].push(v); - lodash_1.forEach(g.successors(v), dfs); - } - - var orderedVs = lodash_1.sortBy(simpleNodes, function(v) { return g.node(v).rank; }); - lodash_1.forEach(orderedVs, dfs); - - return layers; -} - -var crossCount_1 = crossCount; - -/* - * A function that takes a layering (an array of layers, each with an array of - * ordererd nodes) and a graph and returns a weighted crossing count. - * - * Pre-conditions: - * - * 1. Input graph must be simple (not a multigraph), directed, and include - * only simple edges. - * 2. Edges in the input graph must have assigned weights. - * - * Post-conditions: - * - * 1. The graph and layering matrix are left unchanged. - * - * This algorithm is derived from Barth, et al., "Bilayer Cross Counting." - */ -function crossCount(g, layering) { - var cc = 0; - for (var i = 1; i < layering.length; ++i) { - cc += twoLayerCrossCount(g, layering[i-1], layering[i]); - } - return cc; -} - -function twoLayerCrossCount(g, northLayer, southLayer) { - // Sort all of the edges between the north and south layers by their position - // in the north layer and then the south. Map these edges to the position of - // their head in the south layer. - var southPos = lodash_1.zipObject(southLayer, - lodash_1.map(southLayer, function (v, i) { return i; })); - var southEntries = lodash_1.flatten(lodash_1.map(northLayer, function(v) { - return lodash_1.sortBy(lodash_1.map(g.outEdges(v), function(e) { - return { pos: southPos[e.w], weight: g.edge(e).weight }; - }), "pos"); - }), true); - - // Build the accumulator tree - var firstIndex = 1; - while (firstIndex < southLayer.length) firstIndex <<= 1; - var treeSize = 2 * firstIndex - 1; - firstIndex -= 1; - var tree = lodash_1.map(new Array(treeSize), function() { return 0; }); - - // Calculate the weighted crossings - var cc = 0; - lodash_1.forEach(southEntries.forEach(function(entry) { - var index = entry.pos + firstIndex; - tree[index] += entry.weight; - var weightSum = 0; - while (index > 0) { - if (index % 2) { - weightSum += tree[index + 1]; - } - index = (index - 1) >> 1; - tree[index] += entry.weight; - } - cc += entry.weight * weightSum; - })); - - return cc; -} - -var barycenter_1 = barycenter; - -function barycenter(g, movable) { - return lodash_1.map(movable, function(v) { - var inV = g.inEdges(v); - if (!inV.length) { - return { v: v }; - } else { - var result = lodash_1.reduce(inV, function(acc, e) { - var edge = g.edge(e), - nodeU = g.node(e.v); - return { - sum: acc.sum + (edge.weight * nodeU.order), - weight: acc.weight + edge.weight - }; - }, { sum: 0, weight: 0 }); - - return { - v: v, - barycenter: result.sum / result.weight, - weight: result.weight - }; - } - }); -} - -var resolveConflicts_1 = resolveConflicts; - -/* - * Given a list of entries of the form {v, barycenter, weight} and a - * constraint graph this function will resolve any conflicts between the - * constraint graph and the barycenters for the entries. If the barycenters for - * an entry would violate a constraint in the constraint graph then we coalesce - * the nodes in the conflict into a new node that respects the contraint and - * aggregates barycenter and weight information. - * - * This implementation is based on the description in Forster, "A Fast and - * Simple Hueristic for Constrained Two-Level Crossing Reduction," thought it - * differs in some specific details. - * - * Pre-conditions: - * - * 1. Each entry has the form {v, barycenter, weight}, or if the node has - * no barycenter, then {v}. - * - * Returns: - * - * A new list of entries of the form {vs, i, barycenter, weight}. The list - * `vs` may either be a singleton or it may be an aggregation of nodes - * ordered such that they do not violate constraints from the constraint - * graph. The property `i` is the lowest original index of any of the - * elements in `vs`. - */ -function resolveConflicts(entries, cg) { - var mappedEntries = {}; - lodash_1.forEach(entries, function(entry, i) { - var tmp = mappedEntries[entry.v] = { - indegree: 0, - "in": [], - out: [], - vs: [entry.v], - i: i - }; - if (!lodash_1.isUndefined(entry.barycenter)) { - tmp.barycenter = entry.barycenter; - tmp.weight = entry.weight; - } - }); - - lodash_1.forEach(cg.edges(), function(e) { - var entryV = mappedEntries[e.v]; - var entryW = mappedEntries[e.w]; - if (!lodash_1.isUndefined(entryV) && !lodash_1.isUndefined(entryW)) { - entryW.indegree++; - entryV.out.push(mappedEntries[e.w]); - } - }); - - var sourceSet = lodash_1.filter(mappedEntries, function(entry) { - return !entry.indegree; - }); - - return doResolveConflicts(sourceSet); -} - -function doResolveConflicts(sourceSet) { - var entries = []; - - function handleIn(vEntry) { - return function(uEntry) { - if (uEntry.merged) { - return; - } - if (lodash_1.isUndefined(uEntry.barycenter) || - lodash_1.isUndefined(vEntry.barycenter) || - uEntry.barycenter >= vEntry.barycenter) { - mergeEntries(vEntry, uEntry); - } - }; - } - - function handleOut(vEntry) { - return function(wEntry) { - wEntry["in"].push(vEntry); - if (--wEntry.indegree === 0) { - sourceSet.push(wEntry); - } - }; - } - - while (sourceSet.length) { - var entry = sourceSet.pop(); - entries.push(entry); - lodash_1.forEach(entry["in"].reverse(), handleIn(entry)); - lodash_1.forEach(entry.out, handleOut(entry)); - } - - return lodash_1.map(lodash_1.filter(entries, function(entry) { return !entry.merged; }), - function(entry) { - return lodash_1.pick(entry, ["vs", "i", "barycenter", "weight"]); - }); - -} - -function mergeEntries(target, source) { - var sum = 0; - var weight = 0; - - if (target.weight) { - sum += target.barycenter * target.weight; - weight += target.weight; - } - - if (source.weight) { - sum += source.barycenter * source.weight; - weight += source.weight; - } - - target.vs = source.vs.concat(target.vs); - target.barycenter = sum / weight; - target.weight = weight; - target.i = Math.min(source.i, target.i); - source.merged = true; -} - -var sort_1 = sort; - -function sort(entries, biasRight) { - var parts = util$1.partition(entries, function(entry) { - return lodash_1.has(entry, "barycenter"); - }); - var sortable = parts.lhs, - unsortable = lodash_1.sortBy(parts.rhs, function(entry) { return -entry.i; }), - vs = [], - sum = 0, - weight = 0, - vsIndex = 0; - - sortable.sort(compareWithBias(!!biasRight)); - - vsIndex = consumeUnsortable(vs, unsortable, vsIndex); - - lodash_1.forEach(sortable, function (entry) { - vsIndex += entry.vs.length; - vs.push(entry.vs); - sum += entry.barycenter * entry.weight; - weight += entry.weight; - vsIndex = consumeUnsortable(vs, unsortable, vsIndex); - }); - - var result = { vs: lodash_1.flatten(vs, true) }; - if (weight) { - result.barycenter = sum / weight; - result.weight = weight; - } - return result; -} - -function consumeUnsortable(vs, unsortable, index) { - var last; - while (unsortable.length && (last = lodash_1.last(unsortable)).i <= index) { - unsortable.pop(); - vs.push(last.vs); - index++; - } - return index; -} - -function compareWithBias(bias) { - return function(entryV, entryW) { - if (entryV.barycenter < entryW.barycenter) { - return -1; - } else if (entryV.barycenter > entryW.barycenter) { - return 1; - } - - return !bias ? entryV.i - entryW.i : entryW.i - entryV.i; - }; -} - -var sortSubgraph_1 = sortSubgraph; - -function sortSubgraph(g, v, cg, biasRight) { - var movable = g.children(v); - var node = g.node(v); - var bl = node ? node.borderLeft : undefined; - var br = node ? node.borderRight: undefined; - var subgraphs = {}; - - if (bl) { - movable = lodash_1.filter(movable, function(w) { - return w !== bl && w !== br; - }); - } - - var barycenters = barycenter_1(g, movable); - lodash_1.forEach(barycenters, function(entry) { - if (g.children(entry.v).length) { - var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight); - subgraphs[entry.v] = subgraphResult; - if (lodash_1.has(subgraphResult, "barycenter")) { - mergeBarycenters(entry, subgraphResult); - } - } - }); - - var entries = resolveConflicts_1(barycenters, cg); - expandSubgraphs(entries, subgraphs); - - var result = sort_1(entries, biasRight); - - if (bl) { - result.vs = lodash_1.flatten([bl, result.vs, br], true); - if (g.predecessors(bl).length) { - var blPred = g.node(g.predecessors(bl)[0]), - brPred = g.node(g.predecessors(br)[0]); - if (!lodash_1.has(result, "barycenter")) { - result.barycenter = 0; - result.weight = 0; - } - result.barycenter = (result.barycenter * result.weight + - blPred.order + brPred.order) / (result.weight + 2); - result.weight += 2; - } - } - - return result; -} - -function expandSubgraphs(entries, subgraphs) { - lodash_1.forEach(entries, function(entry) { - entry.vs = lodash_1.flatten(entry.vs.map(function(v) { - if (subgraphs[v]) { - return subgraphs[v].vs; - } - return v; - }), true); - }); -} - -function mergeBarycenters(target, other) { - if (!lodash_1.isUndefined(target.barycenter)) { - target.barycenter = (target.barycenter * target.weight + - other.barycenter * other.weight) / - (target.weight + other.weight); - target.weight += other.weight; - } else { - target.barycenter = other.barycenter; - target.weight = other.weight; - } -} - -var Graph$4 = graphlib_1.Graph; - -var buildLayerGraph_1 = buildLayerGraph; - -/* - * Constructs a graph that can be used to sort a layer of nodes. The graph will - * contain all base and subgraph nodes from the request layer in their original - * hierarchy and any edges that are incident on these nodes and are of the type - * requested by the "relationship" parameter. - * - * Nodes from the requested rank that do not have parents are assigned a root - * node in the output graph, which is set in the root graph attribute. This - * makes it easy to walk the hierarchy of movable nodes during ordering. - * - * Pre-conditions: - * - * 1. Input graph is a DAG - * 2. Base nodes in the input graph have a rank attribute - * 3. Subgraph nodes in the input graph has minRank and maxRank attributes - * 4. Edges have an assigned weight - * - * Post-conditions: - * - * 1. Output graph has all nodes in the movable rank with preserved - * hierarchy. - * 2. Root nodes in the movable layer are made children of the node - * indicated by the root attribute of the graph. - * 3. Non-movable nodes incident on movable nodes, selected by the - * relationship parameter, are included in the graph (without hierarchy). - * 4. Edges incident on movable nodes, selected by the relationship - * parameter, are added to the output graph. - * 5. The weights for copied edges are aggregated as need, since the output - * graph is not a multi-graph. - */ -function buildLayerGraph(g, rank, relationship) { - var root = createRootNode(g), - result = new Graph$4({ compound: true }).setGraph({ root: root }) - .setDefaultNodeLabel(function(v) { return g.node(v); }); - - lodash_1.forEach(g.nodes(), function(v) { - var node = g.node(v), - parent = g.parent(v); - - if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) { - result.setNode(v); - result.setParent(v, parent || root); - - // This assumes we have only short edges! - lodash_1.forEach(g[relationship](v), function(e) { - var u = e.v === v ? e.w : e.v, - edge = result.edge(u, v), - weight = !lodash_1.isUndefined(edge) ? edge.weight : 0; - result.setEdge(u, v, { weight: g.edge(e).weight + weight }); - }); - - if (lodash_1.has(node, "minRank")) { - result.setNode(v, { - borderLeft: node.borderLeft[rank], - borderRight: node.borderRight[rank] - }); - } - } - }); - - return result; -} - -function createRootNode(g) { - var v; - while (g.hasNode((v = lodash_1.uniqueId("_root")))); - return v; -} - -var addSubgraphConstraints_1 = addSubgraphConstraints; - -function addSubgraphConstraints(g, cg, vs) { - var prev = {}, - rootPrev; - - lodash_1.forEach(vs, function(v) { - var child = g.parent(v), - parent, - prevChild; - while (child) { - parent = g.parent(child); - if (parent) { - prevChild = prev[parent]; - prev[parent] = child; - } else { - prevChild = rootPrev; - rootPrev = child; - } - if (prevChild && prevChild !== child) { - cg.setEdge(prevChild, child); - return; - } - child = parent; - } - }); - - /* - function dfs(v) { - var children = v ? g.children(v) : g.children(); - if (children.length) { - var min = Number.POSITIVE_INFINITY, - subgraphs = []; - _.each(children, function(child) { - var childMin = dfs(child); - if (g.children(child).length) { - subgraphs.push({ v: child, order: childMin }); - } - min = Math.min(min, childMin); - }); - _.reduce(_.sortBy(subgraphs, "order"), function(prev, curr) { - cg.setEdge(prev.v, curr.v); - return curr; - }); - return min; - } - return g.node(v).order; - } - dfs(undefined); - */ -} - -var Graph$3 = graphlib_1.Graph; - - -var order_1 = order; - -/* - * Applies heuristics to minimize edge crossings in the graph and sets the best - * order solution as an order attribute on each node. - * - * Pre-conditions: - * - * 1. Graph must be DAG - * 2. Graph nodes must be objects with a "rank" attribute - * 3. Graph edges must have the "weight" attribute - * - * Post-conditions: - * - * 1. Graph nodes will have an "order" attribute based on the results of the - * algorithm. - */ -function order(g) { - var maxRank = util$1.maxRank(g), - downLayerGraphs = buildLayerGraphs(g, lodash_1.range(1, maxRank + 1), "inEdges"), - upLayerGraphs = buildLayerGraphs(g, lodash_1.range(maxRank - 1, -1, -1), "outEdges"); - - var layering = initOrder_1(g); - assignOrder(g, layering); - - var bestCC = Number.POSITIVE_INFINITY, - best; - - for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) { - sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2); - - layering = util$1.buildLayerMatrix(g); - var cc = crossCount_1(g, layering); - if (cc < bestCC) { - lastBest = 0; - best = lodash_1.cloneDeep(layering); - bestCC = cc; - } - } - - assignOrder(g, best); -} - -function buildLayerGraphs(g, ranks, relationship) { - return lodash_1.map(ranks, function(rank) { - return buildLayerGraph_1(g, rank, relationship); - }); -} - -function sweepLayerGraphs(layerGraphs, biasRight) { - var cg = new Graph$3(); - lodash_1.forEach(layerGraphs, function(lg) { - var root = lg.graph().root; - var sorted = sortSubgraph_1(lg, root, cg, biasRight); - lodash_1.forEach(sorted.vs, function(v, i) { - lg.node(v).order = i; - }); - addSubgraphConstraints_1(lg, cg, sorted.vs); - }); -} - -function assignOrder(g, layering) { - lodash_1.forEach(layering, function(layer) { - lodash_1.forEach(layer, function(v, i) { - g.node(v).order = i; - }); - }); -} - -var Graph$2 = graphlib_1.Graph; - - -/* - * This module provides coordinate assignment based on Brandes and Köpf, "Fast - * and Simple Horizontal Coordinate Assignment." - */ - -var bk = { - positionX: positionX$1, - findType1Conflicts: findType1Conflicts, - findType2Conflicts: findType2Conflicts, - addConflict: addConflict, - hasConflict: hasConflict, - verticalAlignment: verticalAlignment, - horizontalCompaction: horizontalCompaction, - alignCoordinates: alignCoordinates, - findSmallestWidthAlignment: findSmallestWidthAlignment, - balance: balance -}; - -/* - * Marks all edges in the graph with a type-1 conflict with the "type1Conflict" - * property. A type-1 conflict is one where a non-inner segment crosses an - * inner segment. An inner segment is an edge with both incident nodes marked - * with the "dummy" property. - * - * This algorithm scans layer by layer, starting with the second, for type-1 - * conflicts between the current layer and the previous layer. For each layer - * it scans the nodes from left to right until it reaches one that is incident - * on an inner segment. It then scans predecessors to determine if they have - * edges that cross that inner segment. At the end a final scan is done for all - * nodes on the current rank to see if they cross the last visited inner - * segment. - * - * This algorithm (safely) assumes that a dummy node will only be incident on a - * single node in the layers being scanned. - */ -function findType1Conflicts(g, layering) { - var conflicts = {}; - - function visitLayer(prevLayer, layer) { - var - // last visited node in the previous layer that is incident on an inner - // segment. - k0 = 0, - // Tracks the last node in this layer scanned for crossings with a type-1 - // segment. - scanPos = 0, - prevLayerLength = prevLayer.length, - lastNode = lodash_1.last(layer); - - lodash_1.forEach(layer, function(v, i) { - var w = findOtherInnerSegmentNode(g, v), - k1 = w ? g.node(w).order : prevLayerLength; - - if (w || v === lastNode) { - lodash_1.forEach(layer.slice(scanPos, i +1), function(scanNode) { - lodash_1.forEach(g.predecessors(scanNode), function(u) { - var uLabel = g.node(u), - uPos = uLabel.order; - if ((uPos < k0 || k1 < uPos) && - !(uLabel.dummy && g.node(scanNode).dummy)) { - addConflict(conflicts, u, scanNode); - } - }); - }); - scanPos = i + 1; - k0 = k1; - } - }); - - return layer; - } - - lodash_1.reduce(layering, visitLayer); - return conflicts; -} - -function findType2Conflicts(g, layering) { - var conflicts = {}; - - function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) { - var v; - lodash_1.forEach(lodash_1.range(southPos, southEnd), function(i) { - v = south[i]; - if (g.node(v).dummy) { - lodash_1.forEach(g.predecessors(v), function(u) { - var uNode = g.node(u); - if (uNode.dummy && - (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) { - addConflict(conflicts, u, v); - } - }); - } - }); - } - - - function visitLayer(north, south) { - var prevNorthPos = -1, - nextNorthPos, - southPos = 0; - - lodash_1.forEach(south, function(v, southLookahead) { - if (g.node(v).dummy === "border") { - var predecessors = g.predecessors(v); - if (predecessors.length) { - nextNorthPos = g.node(predecessors[0]).order; - scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos); - southPos = southLookahead; - prevNorthPos = nextNorthPos; - } - } - scan(south, southPos, south.length, nextNorthPos, north.length); - }); - - return south; - } - - lodash_1.reduce(layering, visitLayer); - return conflicts; -} - -function findOtherInnerSegmentNode(g, v) { - if (g.node(v).dummy) { - return lodash_1.find(g.predecessors(v), function(u) { - return g.node(u).dummy; - }); - } -} - -function addConflict(conflicts, v, w) { - if (v > w) { - var tmp = v; - v = w; - w = tmp; - } - - var conflictsV = conflicts[v]; - if (!conflictsV) { - conflicts[v] = conflictsV = {}; - } - conflictsV[w] = true; -} - -function hasConflict(conflicts, v, w) { - if (v > w) { - var tmp = v; - v = w; - w = tmp; - } - return lodash_1.has(conflicts[v], w); -} - -/* - * Try to align nodes into vertical "blocks" where possible. This algorithm - * attempts to align a node with one of its median neighbors. If the edge - * connecting a neighbor is a type-1 conflict then we ignore that possibility. - * If a previous node has already formed a block with a node after the node - * we're trying to form a block with, we also ignore that possibility - our - * blocks would be split in that scenario. - */ -function verticalAlignment(g, layering, conflicts, neighborFn) { - var root = {}, - align = {}, - pos = {}; - - // We cache the position here based on the layering because the graph and - // layering may be out of sync. The layering matrix is manipulated to - // generate different extreme alignments. - lodash_1.forEach(layering, function(layer) { - lodash_1.forEach(layer, function(v, order) { - root[v] = v; - align[v] = v; - pos[v] = order; - }); - }); - - lodash_1.forEach(layering, function(layer) { - var prevIdx = -1; - lodash_1.forEach(layer, function(v) { - var ws = neighborFn(v); - if (ws.length) { - ws = lodash_1.sortBy(ws, function(w) { return pos[w]; }); - var mp = (ws.length - 1) / 2; - for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) { - var w = ws[i]; - if (align[v] === v && - prevIdx < pos[w] && - !hasConflict(conflicts, v, w)) { - align[w] = v; - align[v] = root[v] = root[w]; - prevIdx = pos[w]; - } - } - } - }); - }); - - return { root: root, align: align }; -} - -function horizontalCompaction(g, layering, root, align, reverseSep) { - // This portion of the algorithm differs from BK due to a number of problems. - // Instead of their algorithm we construct a new block graph and do two - // sweeps. The first sweep places blocks with the smallest possible - // coordinates. The second sweep removes unused space by moving blocks to the - // greatest coordinates without violating separation. - var xs = {}, - blockG = buildBlockGraph(g, layering, root, reverseSep), - borderType = reverseSep ? "borderLeft" : "borderRight"; - - function iterate(setXsFunc, nextNodesFunc) { - var stack = blockG.nodes(); - var elem = stack.pop(); - var visited = {}; - while (elem) { - if (visited[elem]) { - setXsFunc(elem); - } else { - visited[elem] = true; - stack.push(elem); - stack = stack.concat(nextNodesFunc(elem)); - } - - elem = stack.pop(); - } - } - - // First pass, assign smallest coordinates - function pass1(elem) { - xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) { - return Math.max(acc, xs[e.v] + blockG.edge(e)); - }, 0); - } - - // Second pass, assign greatest coordinates - function pass2(elem) { - var min = blockG.outEdges(elem).reduce(function(acc, e) { - return Math.min(acc, xs[e.w] - blockG.edge(e)); - }, Number.POSITIVE_INFINITY); - - var node = g.node(elem); - if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) { - xs[elem] = Math.max(xs[elem], min); - } - } - - iterate(pass1, blockG.predecessors.bind(blockG)); - iterate(pass2, blockG.successors.bind(blockG)); - - // Assign x coordinates to all nodes - lodash_1.forEach(align, function(v) { - xs[v] = xs[root[v]]; - }); - - return xs; -} - - -function buildBlockGraph(g, layering, root, reverseSep) { - var blockGraph = new Graph$2(), - graphLabel = g.graph(), - sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep); - - lodash_1.forEach(layering, function(layer) { - var u; - lodash_1.forEach(layer, function(v) { - var vRoot = root[v]; - blockGraph.setNode(vRoot); - if (u) { - var uRoot = root[u], - prevMax = blockGraph.edge(uRoot, vRoot); - blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0)); - } - u = v; - }); - }); - - return blockGraph; -} - -/* - * Returns the alignment that has the smallest width of the given alignments. - */ -function findSmallestWidthAlignment(g, xss) { - return lodash_1.minBy(lodash_1.values(xss), function (xs) { - var max = Number.NEGATIVE_INFINITY; - var min = Number.POSITIVE_INFINITY; - - lodash_1.forIn(xs, function (x, v) { - var halfWidth = width(g, v) / 2; - - max = Math.max(x + halfWidth, max); - min = Math.min(x - halfWidth, min); - }); - - return max - min; - }); -} - -/* - * Align the coordinates of each of the layout alignments such that - * left-biased alignments have their minimum coordinate at the same point as - * the minimum coordinate of the smallest width alignment and right-biased - * alignments have their maximum coordinate at the same point as the maximum - * coordinate of the smallest width alignment. - */ -function alignCoordinates(xss, alignTo) { - var alignToVals = lodash_1.values(alignTo), - alignToMin = lodash_1.min(alignToVals), - alignToMax = lodash_1.max(alignToVals); - - lodash_1.forEach(["u", "d"], function(vert) { - lodash_1.forEach(["l", "r"], function(horiz) { - var alignment = vert + horiz, - xs = xss[alignment], - delta; - if (xs === alignTo) return; - - var xsVals = lodash_1.values(xs); - delta = horiz === "l" ? alignToMin - lodash_1.min(xsVals) : alignToMax - lodash_1.max(xsVals); - - if (delta) { - xss[alignment] = lodash_1.mapValues(xs, function(x) { return x + delta; }); - } - }); - }); -} - -function balance(xss, align) { - return lodash_1.mapValues(xss.ul, function(ignore, v) { - if (align) { - return xss[align.toLowerCase()][v]; - } else { - var xs = lodash_1.sortBy(lodash_1.map(xss, v)); - return (xs[1] + xs[2]) / 2; - } - }); -} - -function positionX$1(g) { - var layering = util$1.buildLayerMatrix(g); - var conflicts = lodash_1.merge( - findType1Conflicts(g, layering), - findType2Conflicts(g, layering)); - - var xss = {}; - var adjustedLayering; - lodash_1.forEach(["u", "d"], function(vert) { - adjustedLayering = vert === "u" ? layering : lodash_1.values(layering).reverse(); - lodash_1.forEach(["l", "r"], function(horiz) { - if (horiz === "r") { - adjustedLayering = lodash_1.map(adjustedLayering, function(inner) { - return lodash_1.values(inner).reverse(); - }); - } - - var neighborFn = (vert === "u" ? g.predecessors : g.successors).bind(g); - var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn); - var xs = horizontalCompaction(g, adjustedLayering, - align.root, align.align, horiz === "r"); - if (horiz === "r") { - xs = lodash_1.mapValues(xs, function(x) { return -x; }); - } - xss[vert + horiz] = xs; - }); - }); - - var smallestWidth = findSmallestWidthAlignment(g, xss); - alignCoordinates(xss, smallestWidth); - return balance(xss, g.graph().align); -} - -function sep(nodeSep, edgeSep, reverseSep) { - return function(g, v, w) { - var vLabel = g.node(v); - var wLabel = g.node(w); - var sum = 0; - var delta; - - sum += vLabel.width / 2; - if (lodash_1.has(vLabel, "labelpos")) { - switch (vLabel.labelpos.toLowerCase()) { - case "l": delta = -vLabel.width / 2; break; - case "r": delta = vLabel.width / 2; break; - } - } - if (delta) { - sum += reverseSep ? delta : -delta; - } - delta = 0; - - sum += (vLabel.dummy ? edgeSep : nodeSep) / 2; - sum += (wLabel.dummy ? edgeSep : nodeSep) / 2; - - sum += wLabel.width / 2; - if (lodash_1.has(wLabel, "labelpos")) { - switch (wLabel.labelpos.toLowerCase()) { - case "l": delta = wLabel.width / 2; break; - case "r": delta = -wLabel.width / 2; break; - } - } - if (delta) { - sum += reverseSep ? delta : -delta; - } - delta = 0; - - return sum; - }; -} - -function width(g, v) { - return g.node(v).width; -} - -var positionX = bk.positionX; - -var position_1 = position; - -function position(g) { - g = util$1.asNonCompoundGraph(g); - - positionY(g); - lodash_1.forEach(positionX(g), function(x, v) { - g.node(v).x = x; - }); -} - -function positionY(g) { - var layering = util$1.buildLayerMatrix(g); - var rankSep = g.graph().ranksep; - var prevY = 0; - lodash_1.forEach(layering, function(layer) { - var maxHeight = lodash_1.max(lodash_1.map(layer, function(v) { return g.node(v).height; })); - lodash_1.forEach(layer, function(v) { - g.node(v).y = prevY + maxHeight / 2; - }); - prevY += maxHeight + rankSep; - }); -} - -var normalizeRanks = util$1.normalizeRanks; - -var removeEmptyRanks = util$1.removeEmptyRanks; - - - - - - -var Graph$1 = graphlib_1.Graph; - -var layout_1 = layout; - -function layout(g, opts) { - var time = opts && opts.debugTiming ? util$1.time : util$1.notime; - time("layout", function() { - var layoutGraph = - time(" buildLayoutGraph", function() { return buildLayoutGraph(g); }); - time(" runLayout", function() { runLayout(layoutGraph, time); }); - time(" updateInputGraph", function() { updateInputGraph(g, layoutGraph); }); - }); -} - -function runLayout(g, time) { - time(" makeSpaceForEdgeLabels", function() { makeSpaceForEdgeLabels(g); }); - time(" removeSelfEdges", function() { removeSelfEdges(g); }); - time(" acyclic", function() { acyclic.run(g); }); - time(" nestingGraph.run", function() { nestingGraph.run(g); }); - time(" rank", function() { rank_1(util$1.asNonCompoundGraph(g)); }); - time(" injectEdgeLabelProxies", function() { injectEdgeLabelProxies(g); }); - time(" removeEmptyRanks", function() { removeEmptyRanks(g); }); - time(" nestingGraph.cleanup", function() { nestingGraph.cleanup(g); }); - time(" normalizeRanks", function() { normalizeRanks(g); }); - time(" assignRankMinMax", function() { assignRankMinMax(g); }); - time(" removeEdgeLabelProxies", function() { removeEdgeLabelProxies(g); }); - time(" normalize.run", function() { normalize.run(g); }); - time(" parentDummyChains", function() { parentDummyChains_1(g); }); - time(" addBorderSegments", function() { addBorderSegments_1(g); }); - time(" order", function() { order_1(g); }); - time(" insertSelfEdges", function() { insertSelfEdges(g); }); - time(" adjustCoordinateSystem", function() { coordinateSystem.adjust(g); }); - time(" position", function() { position_1(g); }); - time(" positionSelfEdges", function() { positionSelfEdges(g); }); - time(" removeBorderNodes", function() { removeBorderNodes(g); }); - time(" normalize.undo", function() { normalize.undo(g); }); - time(" fixupEdgeLabelCoords", function() { fixupEdgeLabelCoords(g); }); - time(" undoCoordinateSystem", function() { coordinateSystem.undo(g); }); - time(" translateGraph", function() { translateGraph(g); }); - time(" assignNodeIntersects", function() { assignNodeIntersects(g); }); - time(" reversePoints", function() { reversePointsForReversedEdges(g); }); - time(" acyclic.undo", function() { acyclic.undo(g); }); -} - -/* - * Copies final layout information from the layout graph back to the input - * graph. This process only copies whitelisted attributes from the layout graph - * to the input graph, so it serves as a good place to determine what - * attributes can influence layout. - */ -function updateInputGraph(inputGraph, layoutGraph) { - lodash_1.forEach(inputGraph.nodes(), function(v) { - var inputLabel = inputGraph.node(v); - var layoutLabel = layoutGraph.node(v); - - if (inputLabel) { - inputLabel.x = layoutLabel.x; - inputLabel.y = layoutLabel.y; - - if (layoutGraph.children(v).length) { - inputLabel.width = layoutLabel.width; - inputLabel.height = layoutLabel.height; - } - } - }); - - lodash_1.forEach(inputGraph.edges(), function(e) { - var inputLabel = inputGraph.edge(e); - var layoutLabel = layoutGraph.edge(e); - - inputLabel.points = layoutLabel.points; - if (lodash_1.has(layoutLabel, "x")) { - inputLabel.x = layoutLabel.x; - inputLabel.y = layoutLabel.y; - } - }); - - inputGraph.graph().width = layoutGraph.graph().width; - inputGraph.graph().height = layoutGraph.graph().height; -} - -var graphNumAttrs = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"]; -var graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "tb" }; -var graphAttrs = ["acyclicer", "ranker", "rankdir", "align"]; -var nodeNumAttrs = ["width", "height"]; -var nodeDefaults = { width: 0, height: 0 }; -var edgeNumAttrs = ["minlen", "weight", "width", "height", "labeloffset"]; -var edgeDefaults = { - minlen: 1, weight: 1, width: 0, height: 0, - labeloffset: 10, labelpos: "r" -}; -var edgeAttrs = ["labelpos"]; - -/* - * Constructs a new graph from the input graph, which can be used for layout. - * This process copies only whitelisted attributes from the input graph to the - * layout graph. Thus this function serves as a good place to determine what - * attributes can influence layout. - */ -function buildLayoutGraph(inputGraph) { - var g = new Graph$1({ multigraph: true, compound: true }); - var graph = canonicalize(inputGraph.graph()); - - g.setGraph(lodash_1.merge({}, - graphDefaults, - selectNumberAttrs(graph, graphNumAttrs), - lodash_1.pick(graph, graphAttrs))); - - lodash_1.forEach(inputGraph.nodes(), function(v) { - var node = canonicalize(inputGraph.node(v)); - g.setNode(v, lodash_1.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults)); - g.setParent(v, inputGraph.parent(v)); - }); - - lodash_1.forEach(inputGraph.edges(), function(e) { - var edge = canonicalize(inputGraph.edge(e)); - g.setEdge(e, lodash_1.merge({}, - edgeDefaults, - selectNumberAttrs(edge, edgeNumAttrs), - lodash_1.pick(edge, edgeAttrs))); - }); - - return g; -} - -/* - * This idea comes from the Gansner paper: to account for edge labels in our - * layout we split each rank in half by doubling minlen and halving ranksep. - * Then we can place labels at these mid-points between nodes. - * - * We also add some minimal padding to the width to push the label for the edge - * away from the edge itself a bit. - */ -function makeSpaceForEdgeLabels(g) { - var graph = g.graph(); - graph.ranksep /= 2; - lodash_1.forEach(g.edges(), function(e) { - var edge = g.edge(e); - edge.minlen *= 2; - if (edge.labelpos.toLowerCase() !== "c") { - if (graph.rankdir === "TB" || graph.rankdir === "BT") { - edge.width += edge.labeloffset; - } else { - edge.height += edge.labeloffset; - } - } - }); -} - -/* - * Creates temporary dummy nodes that capture the rank in which each edge's - * label is going to, if it has one of non-zero width and height. We do this - * so that we can safely remove empty ranks while preserving balance for the - * label's position. - */ -function injectEdgeLabelProxies(g) { - lodash_1.forEach(g.edges(), function(e) { - var edge = g.edge(e); - if (edge.width && edge.height) { - var v = g.node(e.v); - var w = g.node(e.w); - var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e }; - util$1.addDummyNode(g, "edge-proxy", label, "_ep"); - } - }); -} - -function assignRankMinMax(g) { - var maxRank = 0; - lodash_1.forEach(g.nodes(), function(v) { - var node = g.node(v); - if (node.borderTop) { - node.minRank = g.node(node.borderTop).rank; - node.maxRank = g.node(node.borderBottom).rank; - maxRank = lodash_1.max(maxRank, node.maxRank); - } - }); - g.graph().maxRank = maxRank; -} - -function removeEdgeLabelProxies(g) { - lodash_1.forEach(g.nodes(), function(v) { - var node = g.node(v); - if (node.dummy === "edge-proxy") { - g.edge(node.e).labelRank = node.rank; - g.removeNode(v); - } - }); -} - -function translateGraph(g) { - var minX = Number.POSITIVE_INFINITY; - var maxX = 0; - var minY = Number.POSITIVE_INFINITY; - var maxY = 0; - var graphLabel = g.graph(); - var marginX = graphLabel.marginx || 0; - var marginY = graphLabel.marginy || 0; - - function getExtremes(attrs) { - var x = attrs.x; - var y = attrs.y; - var w = attrs.width; - var h = attrs.height; - minX = Math.min(minX, x - w / 2); - maxX = Math.max(maxX, x + w / 2); - minY = Math.min(minY, y - h / 2); - maxY = Math.max(maxY, y + h / 2); - } - - lodash_1.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); }); - lodash_1.forEach(g.edges(), function(e) { - var edge = g.edge(e); - if (lodash_1.has(edge, "x")) { - getExtremes(edge); - } - }); - - minX -= marginX; - minY -= marginY; - - lodash_1.forEach(g.nodes(), function(v) { - var node = g.node(v); - node.x -= minX; - node.y -= minY; - }); - - lodash_1.forEach(g.edges(), function(e) { - var edge = g.edge(e); - lodash_1.forEach(edge.points, function(p) { - p.x -= minX; - p.y -= minY; - }); - if (lodash_1.has(edge, "x")) { edge.x -= minX; } - if (lodash_1.has(edge, "y")) { edge.y -= minY; } - }); - - graphLabel.width = maxX - minX + marginX; - graphLabel.height = maxY - minY + marginY; -} - -function assignNodeIntersects(g) { - lodash_1.forEach(g.edges(), function(e) { - var edge = g.edge(e); - var nodeV = g.node(e.v); - var nodeW = g.node(e.w); - var p1, p2; - if (!edge.points) { - edge.points = []; - p1 = nodeW; - p2 = nodeV; - } else { - p1 = edge.points[0]; - p2 = edge.points[edge.points.length - 1]; - } - edge.points.unshift(util$1.intersectRect(nodeV, p1)); - edge.points.push(util$1.intersectRect(nodeW, p2)); - }); -} - -function fixupEdgeLabelCoords(g) { - lodash_1.forEach(g.edges(), function(e) { - var edge = g.edge(e); - if (lodash_1.has(edge, "x")) { - if (edge.labelpos === "l" || edge.labelpos === "r") { - edge.width -= edge.labeloffset; - } - switch (edge.labelpos) { - case "l": edge.x -= edge.width / 2 + edge.labeloffset; break; - case "r": edge.x += edge.width / 2 + edge.labeloffset; break; - } - } - }); -} - -function reversePointsForReversedEdges(g) { - lodash_1.forEach(g.edges(), function(e) { - var edge = g.edge(e); - if (edge.reversed) { - edge.points.reverse(); - } - }); -} - -function removeBorderNodes(g) { - lodash_1.forEach(g.nodes(), function(v) { - if (g.children(v).length) { - var node = g.node(v); - var t = g.node(node.borderTop); - var b = g.node(node.borderBottom); - var l = g.node(lodash_1.last(node.borderLeft)); - var r = g.node(lodash_1.last(node.borderRight)); - - node.width = Math.abs(r.x - l.x); - node.height = Math.abs(b.y - t.y); - node.x = l.x + node.width / 2; - node.y = t.y + node.height / 2; - } - }); - - lodash_1.forEach(g.nodes(), function(v) { - if (g.node(v).dummy === "border") { - g.removeNode(v); - } - }); -} - -function removeSelfEdges(g) { - lodash_1.forEach(g.edges(), function(e) { - if (e.v === e.w) { - var node = g.node(e.v); - if (!node.selfEdges) { - node.selfEdges = []; - } - node.selfEdges.push({ e: e, label: g.edge(e) }); - g.removeEdge(e); - } - }); -} - -function insertSelfEdges(g) { - var layers = util$1.buildLayerMatrix(g); - lodash_1.forEach(layers, function(layer) { - var orderShift = 0; - lodash_1.forEach(layer, function(v, i) { - var node = g.node(v); - node.order = i + orderShift; - lodash_1.forEach(node.selfEdges, function(selfEdge) { - util$1.addDummyNode(g, "selfedge", { - width: selfEdge.label.width, - height: selfEdge.label.height, - rank: node.rank, - order: i + (++orderShift), - e: selfEdge.e, - label: selfEdge.label - }, "_se"); - }); - delete node.selfEdges; - }); - }); -} - -function positionSelfEdges(g) { - lodash_1.forEach(g.nodes(), function(v) { - var node = g.node(v); - if (node.dummy === "selfedge") { - var selfNode = g.node(node.e.v); - var x = selfNode.x + selfNode.width / 2; - var y = selfNode.y; - var dx = node.x - x; - var dy = selfNode.height / 2; - g.setEdge(node.e, node.label); - g.removeNode(v); - node.label.points = [ - { x: x + 2 * dx / 3, y: y - dy }, - { x: x + 5 * dx / 6, y: y - dy }, - { x: x + dx , y: y }, - { x: x + 5 * dx / 6, y: y + dy }, - { x: x + 2 * dx / 3, y: y + dy } - ]; - node.label.x = node.x; - node.label.y = node.y; - } - }); -} - -function selectNumberAttrs(obj, attrs) { - return lodash_1.mapValues(lodash_1.pick(obj, attrs), Number); -} - -function canonicalize(attrs) { - var newAttrs = {}; - lodash_1.forEach(attrs, function(v, k) { - newAttrs[k.toLowerCase()] = v; - }); - return newAttrs; -} - -var Graph = graphlib_1.Graph; - -var debug = { - debugOrdering: debugOrdering -}; - -/* istanbul ignore next */ -function debugOrdering(g) { - var layerMatrix = util$1.buildLayerMatrix(g); - - var h = new Graph({ compound: true, multigraph: true }).setGraph({}); - - lodash_1.forEach(g.nodes(), function(v) { - h.setNode(v, { label: v }); - h.setParent(v, "layer" + g.node(v).rank); - }); - - lodash_1.forEach(g.edges(), function(e) { - h.setEdge(e.v, e.w, {}, e.name); - }); - - lodash_1.forEach(layerMatrix, function(layer, i) { - var layerV = "layer" + i; - h.setNode(layerV, { rank: "same" }); - lodash_1.reduce(layer, function(u, v) { - h.setEdge(u, v, { style: "invis" }); - return v; - }); - }); - - return h; -} - -var version = "0.8.5"; - -/* -Copyright (c) 2012-2014 Chris Pettitt - -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. -*/ - -var dagre$1 = { - graphlib: graphlib_1, - - layout: layout_1, - debug: debug, - util: { - time: util$1.time, - notime: util$1.notime - }, - version: version -}; - -var cytoscapeDagre = createCommonjsModule(function (module, exports) { -(function webpackUniversalModuleDefinition(root, factory) { - module.exports = factory(dagre$1); -})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE__4__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -var impl = __webpack_require__(1); // registers the extension on a cytoscape lib ref - - -var register = function register(cytoscape) { - if (!cytoscape) { - return; - } // can't register if cytoscape unspecified - - - cytoscape('layout', 'dagre', impl); // register with cytoscape.js -}; - -if (typeof cytoscape !== 'undefined') { - // expose to global cytoscape (i.e. window.cytoscape) - register(cytoscape); -} - -module.exports = register; - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -var isFunction = function isFunction(o) { - return typeof o === 'function'; -}; - -var defaults = __webpack_require__(2); - -var assign = __webpack_require__(3); - -var dagre = __webpack_require__(4); // constructor -// options : object containing layout options - - -function DagreLayout(options) { - this.options = assign({}, defaults, options); -} // runs the layout - - -DagreLayout.prototype.run = function () { - var options = this.options; - var layout = this; - var cy = options.cy; // cy is automatically populated for us in the constructor - - var eles = options.eles; - - var getVal = function getVal(ele, val) { - return isFunction(val) ? val.apply(ele, [ele]) : val; - }; - - var bb = options.boundingBox || { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }; - - if (bb.x2 === undefined) { - bb.x2 = bb.x1 + bb.w; - } - - if (bb.w === undefined) { - bb.w = bb.x2 - bb.x1; - } - - if (bb.y2 === undefined) { - bb.y2 = bb.y1 + bb.h; - } - - if (bb.h === undefined) { - bb.h = bb.y2 - bb.y1; - } - - var g = new dagre.graphlib.Graph({ - multigraph: true, - compound: true - }); - var gObj = {}; - - var setGObj = function setGObj(name, val) { - if (val != null) { - gObj[name] = val; - } - }; - - setGObj('nodesep', options.nodeSep); - setGObj('edgesep', options.edgeSep); - setGObj('ranksep', options.rankSep); - setGObj('rankdir', options.rankDir); - setGObj('ranker', options.ranker); - g.setGraph(gObj); - g.setDefaultEdgeLabel(function () { - return {}; - }); - g.setDefaultNodeLabel(function () { - return {}; - }); // add nodes to dagre - - var nodes = eles.nodes(); - - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var nbb = node.layoutDimensions(options); - g.setNode(node.id(), { - width: nbb.w, - height: nbb.h, - name: node.id() - }); // console.log( g.node(node.id()) ); - } // set compound parents - - - for (var _i = 0; _i < nodes.length; _i++) { - var _node = nodes[_i]; - - if (_node.isChild()) { - g.setParent(_node.id(), _node.parent().id()); - } - } // add edges to dagre - - - var edges = eles.edges().stdFilter(function (edge) { - return !edge.source().isParent() && !edge.target().isParent(); // dagre can't handle edges on compound nodes - }); - - for (var _i2 = 0; _i2 < edges.length; _i2++) { - var edge = edges[_i2]; - g.setEdge(edge.source().id(), edge.target().id(), { - minlen: getVal(edge, options.minLen), - weight: getVal(edge, options.edgeWeight), - name: edge.id() - }, edge.id()); // console.log( g.edge(edge.source().id(), edge.target().id(), edge.id()) ); - } - - dagre.layout(g); - var gNodeIds = g.nodes(); - - for (var _i3 = 0; _i3 < gNodeIds.length; _i3++) { - var id = gNodeIds[_i3]; - var n = g.node(id); - cy.getElementById(id).scratch().dagre = n; - } - - var dagreBB; - - if (options.boundingBox) { - dagreBB = { - x1: Infinity, - x2: -Infinity, - y1: Infinity, - y2: -Infinity - }; - nodes.forEach(function (node) { - var dModel = node.scratch().dagre; - dagreBB.x1 = Math.min(dagreBB.x1, dModel.x); - dagreBB.x2 = Math.max(dagreBB.x2, dModel.x); - dagreBB.y1 = Math.min(dagreBB.y1, dModel.y); - dagreBB.y2 = Math.max(dagreBB.y2, dModel.y); - }); - dagreBB.w = dagreBB.x2 - dagreBB.x1; - dagreBB.h = dagreBB.y2 - dagreBB.y1; - } else { - dagreBB = bb; - } - - var constrainPos = function constrainPos(p) { - if (options.boundingBox) { - var xPct = dagreBB.w === 0 ? 0 : (p.x - dagreBB.x1) / dagreBB.w; - var yPct = dagreBB.h === 0 ? 0 : (p.y - dagreBB.y1) / dagreBB.h; - return { - x: bb.x1 + xPct * bb.w, - y: bb.y1 + yPct * bb.h - }; - } else { - return p; - } - }; - - nodes.layoutPositions(layout, options, function (ele) { - ele = _typeof(ele) === "object" ? ele : this; - var dModel = ele.scratch().dagre; - return constrainPos({ - x: dModel.x, - y: dModel.y - }); - }); - return this; // chaining -}; - -module.exports = DagreLayout; - -/***/ }), -/* 2 */ -/***/ (function(module, exports) { - -var defaults = { - // dagre algo options, uses default value on undefined - nodeSep: undefined, - // the separation between adjacent nodes in the same rank - edgeSep: undefined, - // the separation between adjacent edges in the same rank - rankSep: undefined, - // the separation between adjacent nodes in the same rank - rankDir: undefined, - // 'TB' for top to bottom flow, 'LR' for left to right, - ranker: undefined, - // Type of algorithm to assigns a rank to each node in the input graph. - // Possible values: network-simplex, tight-tree or longest-path - minLen: function minLen(edge) { - return 1; - }, - // number of ranks to keep between the source and target of the edge - edgeWeight: function edgeWeight(edge) { - return 1; - }, - // higher weight edges are generally made shorter and straighter than lower weight edges - // general layout options - fit: true, - // whether to fit to viewport - padding: 30, - // fit padding - spacingFactor: undefined, - // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up - nodeDimensionsIncludeLabels: false, - // whether labels should be included in determining the space used by a node - animate: false, - // whether to transition the node positions - animateFilter: function animateFilter(node, i) { - return true; - }, - // whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled - boundingBox: undefined, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - transform: function transform(node, pos) { - return pos; - }, - // a function that applies a transform to the final node position - ready: function ready() {}, - // on layoutready - stop: function stop() {} // on layoutstop - -}; -module.exports = defaults; - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - -// Simple, internal Object.assign() polyfill for options objects etc. -module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { - for (var _len = arguments.length, srcs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - srcs[_key - 1] = arguments[_key]; - } - - srcs.forEach(function (src) { - Object.keys(src).forEach(function (k) { - return tgt[k] = src[k]; - }); - }); - return tgt; -}; - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__4__; - -/***/ }) -/******/ ]); -}); -}); - -var dagre = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeDagre); - -var d3Quadtree = createCommonjsModule(function (module, exports) { -// https://d3js.org/d3-quadtree/ v2.0.0 Copyright 2020 Mike Bostock -(function (global, factory) { -factory(exports) ; -}(commonjsGlobal, function (exports) { -function tree_add(d) { - const x = +this._x.call(null, d), - y = +this._y.call(null, d); - return add(this.cover(x, y), x, y, d); -} - -function add(tree, x, y, d) { - if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points - - var parent, - node = tree._root, - leaf = {data: d}, - x0 = tree._x0, - y0 = tree._y0, - x1 = tree._x1, - y1 = tree._y1, - xm, - ym, - xp, - yp, - right, - bottom, - i, - j; - - // If the tree is empty, initialize the root as a leaf. - if (!node) return tree._root = leaf, tree; - - // Find the existing leaf for the new point, or add it. - while (node.length) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree; - } - - // Is the new point is exactly coincident with the existing point? - xp = +tree._x.call(null, node.data); - yp = +tree._y.call(null, node.data); - if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; - - // Otherwise, split the leaf node until the old and new point are separated. - do { - parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4); - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm))); - return parent[j] = node, parent[i] = leaf, tree; -} - -function addAll(data) { - var d, i, n = data.length, - x, - y, - xz = new Array(n), - yz = new Array(n), - x0 = Infinity, - y0 = Infinity, - x1 = -Infinity, - y1 = -Infinity; - - // Compute the points and their extent. - for (i = 0; i < n; ++i) { - if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue; - xz[i] = x; - yz[i] = y; - if (x < x0) x0 = x; - if (x > x1) x1 = x; - if (y < y0) y0 = y; - if (y > y1) y1 = y; - } - - // If there were no (valid) points, abort. - if (x0 > x1 || y0 > y1) return this; - - // Expand the tree to cover the new points. - this.cover(x0, y0).cover(x1, y1); - - // Add the new points. - for (i = 0; i < n; ++i) { - add(this, xz[i], yz[i], data[i]); - } - - return this; -} - -function tree_cover(x, y) { - if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points - - var x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1; - - // If the quadtree has no extent, initialize them. - // Integer extent are necessary so that if we later double the extent, - // the existing quadrant boundaries don’t change due to floating point error! - if (isNaN(x0)) { - x1 = (x0 = Math.floor(x)) + 1; - y1 = (y0 = Math.floor(y)) + 1; - } - - // Otherwise, double repeatedly to cover. - else { - var z = x1 - x0 || 1, - node = this._root, - parent, - i; - - while (x0 > x || x >= x1 || y0 > y || y >= y1) { - i = (y < y0) << 1 | (x < x0); - parent = new Array(4), parent[i] = node, node = parent, z *= 2; - switch (i) { - case 0: x1 = x0 + z, y1 = y0 + z; break; - case 1: x0 = x1 - z, y1 = y0 + z; break; - case 2: x1 = x0 + z, y0 = y1 - z; break; - case 3: x0 = x1 - z, y0 = y1 - z; break; - } - } - - if (this._root && this._root.length) this._root = node; - } - - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - return this; -} - -function tree_data() { - var data = []; - this.visit(function(node) { - if (!node.length) do data.push(node.data); while (node = node.next) - }); - return data; -} - -function tree_extent(_) { - return arguments.length - ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) - : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]]; -} - -function Quad(node, x0, y0, x1, y1) { - this.node = node; - this.x0 = x0; - this.y0 = y0; - this.x1 = x1; - this.y1 = y1; -} - -function tree_find(x, y, radius) { - var data, - x0 = this._x0, - y0 = this._y0, - x1, - y1, - x2, - y2, - x3 = this._x1, - y3 = this._y1, - quads = [], - node = this._root, - q, - i; - - if (node) quads.push(new Quad(node, x0, y0, x3, y3)); - if (radius == null) radius = Infinity; - else { - x0 = x - radius, y0 = y - radius; - x3 = x + radius, y3 = y + radius; - radius *= radius; - } - - while (q = quads.pop()) { - - // Stop searching if this quadrant can’t contain a closer node. - if (!(node = q.node) - || (x1 = q.x0) > x3 - || (y1 = q.y0) > y3 - || (x2 = q.x1) < x0 - || (y2 = q.y1) < y0) continue; - - // Bisect the current quadrant. - if (node.length) { - var xm = (x1 + x2) / 2, - ym = (y1 + y2) / 2; - - quads.push( - new Quad(node[3], xm, ym, x2, y2), - new Quad(node[2], x1, ym, xm, y2), - new Quad(node[1], xm, y1, x2, ym), - new Quad(node[0], x1, y1, xm, ym) - ); - - // Visit the closest quadrant first. - if (i = (y >= ym) << 1 | (x >= xm)) { - q = quads[quads.length - 1]; - quads[quads.length - 1] = quads[quads.length - 1 - i]; - quads[quads.length - 1 - i] = q; - } - } - - // Visit this point. (Visiting coincident points isn’t necessary!) - else { - var dx = x - +this._x.call(null, node.data), - dy = y - +this._y.call(null, node.data), - d2 = dx * dx + dy * dy; - if (d2 < radius) { - var d = Math.sqrt(radius = d2); - x0 = x - d, y0 = y - d; - x3 = x + d, y3 = y + d; - data = node.data; - } - } - } - - return data; -} - -function tree_remove(d) { - if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points - - var parent, - node = this._root, - retainer, - previous, - next, - x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1, - x, - y, - xm, - ym, - right, - bottom, - i, - j; - - // If the tree is empty, initialize the root as a leaf. - if (!node) return this; - - // Find the leaf node for the point. - // While descending, also retain the deepest parent with a non-removed sibling. - if (node.length) while (true) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - if (!(parent = node, node = node[i = bottom << 1 | right])) return this; - if (!node.length) break; - if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i; - } - - // Find the point to remove. - while (node.data !== d) if (!(previous = node, node = node.next)) return this; - if (next = node.next) delete node.next; - - // If there are multiple coincident points, remove just the point. - if (previous) return (next ? previous.next = next : delete previous.next), this; - - // If this is the root point, remove it. - if (!parent) return this._root = next, this; - - // Remove this leaf. - next ? parent[i] = next : delete parent[i]; - - // If the parent now contains exactly one leaf, collapse superfluous parents. - if ((node = parent[0] || parent[1] || parent[2] || parent[3]) - && node === (parent[3] || parent[2] || parent[1] || parent[0]) - && !node.length) { - if (retainer) retainer[j] = node; - else this._root = node; - } - - return this; -} - -function removeAll(data) { - for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); - return this; -} - -function tree_root() { - return this._root; -} - -function tree_size() { - var size = 0; - this.visit(function(node) { - if (!node.length) do ++size; while (node = node.next) - }); - return size; -} - -function tree_visit(callback) { - var quads = [], q, node = this._root, child, x0, y0, x1, y1; - if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) { - var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); - if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); - if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); - if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); - } - } - return this; -} - -function tree_visitAfter(callback) { - var quads = [], next = [], q; - if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - var node = q.node; - if (node.length) { - var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); - if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); - if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); - if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); - } - next.push(q); - } - while (q = next.pop()) { - callback(q.node, q.x0, q.y0, q.x1, q.y1); - } - return this; -} - -function defaultX(d) { - return d[0]; -} - -function tree_x(_) { - return arguments.length ? (this._x = _, this) : this._x; -} - -function defaultY(d) { - return d[1]; -} - -function tree_y(_) { - return arguments.length ? (this._y = _, this) : this._y; -} - -function quadtree(nodes, x, y) { - var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN); - return nodes == null ? tree : tree.addAll(nodes); -} - -function Quadtree(x, y, x0, y0, x1, y1) { - this._x = x; - this._y = y; - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - this._root = undefined; -} - -function leaf_copy(leaf) { - var copy = {data: leaf.data}, next = copy; - while (leaf = leaf.next) next = next.next = {data: leaf.data}; - return copy; -} - -var treeProto = quadtree.prototype = Quadtree.prototype; - -treeProto.copy = function() { - var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1), - node = this._root, - nodes, - child; - - if (!node) return copy; - - if (!node.length) return copy._root = leaf_copy(node), copy; - - nodes = [{source: node, target: copy._root = new Array(4)}]; - while (node = nodes.pop()) { - for (var i = 0; i < 4; ++i) { - if (child = node.source[i]) { - if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)}); - else node.target[i] = leaf_copy(child); - } - } - } - - return copy; -}; - -treeProto.add = tree_add; -treeProto.addAll = addAll; -treeProto.cover = tree_cover; -treeProto.data = tree_data; -treeProto.extent = tree_extent; -treeProto.find = tree_find; -treeProto.remove = tree_remove; -treeProto.removeAll = removeAll; -treeProto.root = tree_root; -treeProto.size = tree_size; -treeProto.visit = tree_visit; -treeProto.visitAfter = tree_visitAfter; -treeProto.x = tree_x; -treeProto.y = tree_y; - -exports.quadtree = quadtree; - -Object.defineProperty(exports, '__esModule', { value: true }); - -})); -}); - -var d3Dispatch = createCommonjsModule(function (module, exports) { -// https://d3js.org/d3-dispatch/ v2.0.0 Copyright 2020 Mike Bostock -(function (global, factory) { -factory(exports) ; -}(commonjsGlobal, function (exports) { -var noop = {value: () => {}}; - -function dispatch() { - for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { - if (!(t = arguments[i] + "") || (t in _) || /[\s.]/.test(t)) throw new Error("illegal type: " + t); - _[t] = []; - } - return new Dispatch(_); -} - -function Dispatch(_) { - this._ = _; -} - -function parseTypenames(typenames, types) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); - return {type: t, name: name}; - }); -} - -Dispatch.prototype = dispatch.prototype = { - constructor: Dispatch, - on: function(typename, callback) { - var _ = this._, - T = parseTypenames(typename + "", _), - t, - i = -1, - n = T.length; - - // If no callback was specified, return the callback of the given type and name. - if (arguments.length < 2) { - while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t; - return; - } - - // If a type was specified, set the callback for the given type and name. - // Otherwise, if a null callback was specified, remove callbacks of the given name. - if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); - while (++i < n) { - if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback); - else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null); - } - - return this; - }, - copy: function() { - var copy = {}, _ = this._; - for (var t in _) copy[t] = _[t].slice(); - return new Dispatch(copy); - }, - call: function(type, that) { - if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - }, - apply: function(type, that, args) { - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - } -}; - -function get(type, name) { - for (var i = 0, n = type.length, c; i < n; ++i) { - if ((c = type[i]).name === name) { - return c.value; - } - } -} - -function set(type, name, callback) { - for (var i = 0, n = type.length; i < n; ++i) { - if (type[i].name === name) { - type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1)); - break; - } - } - if (callback != null) type.push({name: name, value: callback}); - return type; -} - -exports.dispatch = dispatch; - -Object.defineProperty(exports, '__esModule', { value: true }); - -})); -}); - -var d3Timer = createCommonjsModule(function (module, exports) { -// https://d3js.org/d3-timer/ v2.0.0 Copyright 2020 Mike Bostock -(function (global, factory) { -factory(exports) ; -}(commonjsGlobal, function (exports) { -var frame = 0, // is an animation frame pending? - timeout = 0, // is a timeout pending? - interval = 0, // are any timers active? - pokeDelay = 1000, // how frequently we check for clock skew - taskHead, - taskTail, - clockLast = 0, - clockNow = 0, - clockSkew = 0, - clock = typeof performance === "object" && performance.now ? performance : Date, - setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; - -function now() { - return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); -} - -function clearNow() { - clockNow = 0; -} - -function Timer() { - this._call = - this._time = - this._next = null; -} - -Timer.prototype = timer.prototype = { - constructor: Timer, - restart: function(callback, delay, time) { - if (typeof callback !== "function") throw new TypeError("callback is not a function"); - time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); - if (!this._next && taskTail !== this) { - if (taskTail) taskTail._next = this; - else taskHead = this; - taskTail = this; - } - this._call = callback; - this._time = time; - sleep(); - }, - stop: function() { - if (this._call) { - this._call = null; - this._time = Infinity; - sleep(); - } - } -}; - -function timer(callback, delay, time) { - var t = new Timer; - t.restart(callback, delay, time); - return t; -} - -function timerFlush() { - now(); // Get the current time, if not already set. - ++frame; // Pretend we’ve set an alarm, if we haven’t already. - var t = taskHead, e; - while (t) { - if ((e = clockNow - t._time) >= 0) t._call.call(null, e); - t = t._next; - } - --frame; -} - -function wake() { - clockNow = (clockLast = clock.now()) + clockSkew; - frame = timeout = 0; - try { - timerFlush(); - } finally { - frame = 0; - nap(); - clockNow = 0; - } -} - -function poke() { - var now = clock.now(), delay = now - clockLast; - if (delay > pokeDelay) clockSkew -= delay, clockLast = now; -} - -function nap() { - var t0, t1 = taskHead, t2, time = Infinity; - while (t1) { - if (t1._call) { - if (time > t1._time) time = t1._time; - t0 = t1, t1 = t1._next; - } else { - t2 = t1._next, t1._next = null; - t1 = t0 ? t0._next = t2 : taskHead = t2; - } - } - taskTail = t0; - sleep(time); -} - -function sleep(time) { - if (frame) return; // Soonest alarm already set, or will be. - if (timeout) timeout = clearTimeout(timeout); - var delay = time - clockNow; // Strictly less than if we recomputed clockNow. - if (delay > 24) { - if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew); - if (interval) interval = clearInterval(interval); - } else { - if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); - frame = 1, setFrame(wake); - } -} - -function timeout$1(callback, delay, time) { - var t = new Timer; - delay = delay == null ? 0 : +delay; - t.restart(elapsed => { - t.stop(); - callback(elapsed + delay); - }, delay, time); - return t; -} - -function interval$1(callback, delay, time) { - var t = new Timer, total = delay; - if (delay == null) return t.restart(callback, delay, time), t; - t._restart = t.restart; - t.restart = function(callback, delay, time) { - delay = +delay, time = time == null ? now() : +time; - t._restart(function tick(elapsed) { - elapsed += total; - t._restart(tick, total += delay, time); - callback(elapsed); - }, delay, time); - }; - t.restart(callback, delay, time); - return t; -} - -exports.interval = interval$1; -exports.now = now; -exports.timeout = timeout$1; -exports.timer = timer; -exports.timerFlush = timerFlush; - -Object.defineProperty(exports, '__esModule', { value: true }); - -})); -}); - -var d3Force$1 = createCommonjsModule(function (module, exports) { -// https://d3js.org/d3-force/ v2.1.1 Copyright 2020 Mike Bostock -(function (global, factory) { -factory(exports, d3Quadtree, d3Dispatch, d3Timer) ; -}(commonjsGlobal, function (exports, d3Quadtree, d3Dispatch, d3Timer) { -function center(x, y) { - var nodes, strength = 1; - - if (x == null) x = 0; - if (y == null) y = 0; - - function force() { - var i, - n = nodes.length, - node, - sx = 0, - sy = 0; - - for (i = 0; i < n; ++i) { - node = nodes[i], sx += node.x, sy += node.y; - } - - for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) { - node = nodes[i], node.x -= sx, node.y -= sy; - } - } - - force.initialize = function(_) { - nodes = _; - }; - - force.x = function(_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function(_) { - return arguments.length ? (y = +_, force) : y; - }; - - force.strength = function(_) { - return arguments.length ? (strength = +_, force) : strength; - }; - - return force; -} - -function constant(x) { - return function() { - return x; - }; -} - -function jiggle(random) { - return (random() - 0.5) * 1e-6; -} - -function x(d) { - return d.x + d.vx; -} - -function y(d) { - return d.y + d.vy; -} - -function collide(radius) { - var nodes, - radii, - random, - strength = 1, - iterations = 1; - - if (typeof radius !== "function") radius = constant(radius == null ? 1 : +radius); - - function force() { - var i, n = nodes.length, - tree, - node, - xi, - yi, - ri, - ri2; - - for (var k = 0; k < iterations; ++k) { - tree = d3Quadtree.quadtree(nodes, x, y).visitAfter(prepare); - for (i = 0; i < n; ++i) { - node = nodes[i]; - ri = radii[node.index], ri2 = ri * ri; - xi = node.x + node.vx; - yi = node.y + node.vy; - tree.visit(apply); - } - } - - function apply(quad, x0, y0, x1, y1) { - var data = quad.data, rj = quad.r, r = ri + rj; - if (data) { - if (data.index > node.index) { - var x = xi - data.x - data.vx, - y = yi - data.y - data.vy, - l = x * x + y * y; - if (l < r * r) { - if (x === 0) x = jiggle(random), l += x * x; - if (y === 0) y = jiggle(random), l += y * y; - l = (r - (l = Math.sqrt(l))) / l * strength; - node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj)); - node.vy += (y *= l) * r; - data.vx -= x * (r = 1 - r); - data.vy -= y * r; - } - } - return; - } - return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r; - } - } - - function prepare(quad) { - if (quad.data) return quad.r = radii[quad.data.index]; - for (var i = quad.r = 0; i < 4; ++i) { - if (quad[i] && quad[i].r > quad.r) { - quad.r = quad[i].r; - } - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length, node; - radii = new Array(n); - for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes); - } - - force.initialize = function(_nodes, _random) { - nodes = _nodes; - random = _random; - initialize(); - }; - - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function(_) { - return arguments.length ? (strength = +_, force) : strength; - }; - - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), initialize(), force) : radius; - }; - - return force; -} - -function index(d) { - return d.index; -} - -function find(nodeById, nodeId) { - var node = nodeById.get(nodeId); - if (!node) throw new Error("node not found: " + nodeId); - return node; -} - -function link(links) { - var id = index, - strength = defaultStrength, - strengths, - distance = constant(30), - distances, - nodes, - count, - bias, - random, - iterations = 1; - - if (links == null) links = []; - - function defaultStrength(link) { - return 1 / Math.min(count[link.source.index], count[link.target.index]); - } - - function force(alpha) { - for (var k = 0, n = links.length; k < iterations; ++k) { - for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) { - link = links[i], source = link.source, target = link.target; - x = target.x + target.vx - source.x - source.vx || jiggle(random); - y = target.y + target.vy - source.y - source.vy || jiggle(random); - l = Math.sqrt(x * x + y * y); - l = (l - distances[i]) / l * alpha * strengths[i]; - x *= l, y *= l; - target.vx -= x * (b = bias[i]); - target.vy -= y * b; - source.vx += x * (b = 1 - b); - source.vy += y * b; - } - } - } - - function initialize() { - if (!nodes) return; - - var i, - n = nodes.length, - m = links.length, - nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])), - link; - - for (i = 0, count = new Array(n); i < m; ++i) { - link = links[i], link.index = i; - if (typeof link.source !== "object") link.source = find(nodeById, link.source); - if (typeof link.target !== "object") link.target = find(nodeById, link.target); - count[link.source.index] = (count[link.source.index] || 0) + 1; - count[link.target.index] = (count[link.target.index] || 0) + 1; - } - - for (i = 0, bias = new Array(m); i < m; ++i) { - link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]); - } - - strengths = new Array(m), initializeStrength(); - distances = new Array(m), initializeDistance(); - } - - function initializeStrength() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - strengths[i] = +strength(links[i], i, links); - } - } - - function initializeDistance() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - distances[i] = +distance(links[i], i, links); - } - } - - force.initialize = function(_nodes, _random) { - nodes = _nodes; - random = _random; - initialize(); - }; - - force.links = function(_) { - return arguments.length ? (links = _, initialize(), force) : links; - }; - - force.id = function(_) { - return arguments.length ? (id = _, force) : id; - }; - - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initializeStrength(), force) : strength; - }; - - force.distance = function(_) { - return arguments.length ? (distance = typeof _ === "function" ? _ : constant(+_), initializeDistance(), force) : distance; - }; - - return force; -} - -// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use -const a = 1664525; -const c = 1013904223; -const m = 4294967296; // 2^32 - -function lcg() { - let s = 1; - return () => (s = (a * s + c) % m) / m; -} - -function x$1(d) { - return d.x; -} - -function y$1(d) { - return d.y; -} - -var initialRadius = 10, - initialAngle = Math.PI * (3 - Math.sqrt(5)); - -function simulation(nodes) { - var simulation, - alpha = 1, - alphaMin = 0.001, - alphaDecay = 1 - Math.pow(alphaMin, 1 / 300), - alphaTarget = 0, - velocityDecay = 0.6, - forces = new Map(), - stepper = d3Timer.timer(step), - event = d3Dispatch.dispatch("tick", "end"), - random = lcg(); - - if (nodes == null) nodes = []; - - function step() { - tick(); - event.call("tick", simulation); - if (alpha < alphaMin) { - stepper.stop(); - event.call("end", simulation); - } - } - - function tick(iterations) { - var i, n = nodes.length, node; - - if (iterations === undefined) iterations = 1; - - for (var k = 0; k < iterations; ++k) { - alpha += (alphaTarget - alpha) * alphaDecay; - - forces.forEach(function(force) { - force(alpha); - }); - - for (i = 0; i < n; ++i) { - node = nodes[i]; - if (node.fx == null) node.x += node.vx *= velocityDecay; - else node.x = node.fx, node.vx = 0; - if (node.fy == null) node.y += node.vy *= velocityDecay; - else node.y = node.fy, node.vy = 0; - } - } - - return simulation; - } - - function initializeNodes() { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.index = i; - if (node.fx != null) node.x = node.fx; - if (node.fy != null) node.y = node.fy; - if (isNaN(node.x) || isNaN(node.y)) { - var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle; - node.x = radius * Math.cos(angle); - node.y = radius * Math.sin(angle); - } - if (isNaN(node.vx) || isNaN(node.vy)) { - node.vx = node.vy = 0; - } - } - } - - function initializeForce(force) { - if (force.initialize) force.initialize(nodes, random); - return force; - } - - initializeNodes(); - - return simulation = { - tick: tick, - - restart: function() { - return stepper.restart(step), simulation; - }, - - stop: function() { - return stepper.stop(), simulation; - }, - - nodes: function(_) { - return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes; - }, - - alpha: function(_) { - return arguments.length ? (alpha = +_, simulation) : alpha; - }, - - alphaMin: function(_) { - return arguments.length ? (alphaMin = +_, simulation) : alphaMin; - }, - - alphaDecay: function(_) { - return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay; - }, - - alphaTarget: function(_) { - return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget; - }, - - velocityDecay: function(_) { - return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay; - }, - - randomSource: function(_) { - return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random; - }, - - force: function(name, _) { - return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name); - }, - - find: function(x, y, radius) { - var i = 0, - n = nodes.length, - dx, - dy, - d2, - node, - closest; - - if (radius == null) radius = Infinity; - else radius *= radius; - - for (i = 0; i < n; ++i) { - node = nodes[i]; - dx = x - node.x; - dy = y - node.y; - d2 = dx * dx + dy * dy; - if (d2 < radius) closest = node, radius = d2; - } - - return closest; - }, - - on: function(name, _) { - return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name); - } - }; -} - -function manyBody() { - var nodes, - node, - random, - alpha, - strength = constant(-30), - strengths, - distanceMin2 = 1, - distanceMax2 = Infinity, - theta2 = 0.81; - - function force(_) { - var i, n = nodes.length, tree = d3Quadtree.quadtree(nodes, x$1, y$1).visitAfter(accumulate); - for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply); - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length, node; - strengths = new Array(n); - for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes); - } - - function accumulate(quad) { - var strength = 0, q, c, weight = 0, x, y, i; - - // For internal nodes, accumulate forces from child quadrants. - if (quad.length) { - for (x = y = i = 0; i < 4; ++i) { - if ((q = quad[i]) && (c = Math.abs(q.value))) { - strength += q.value, weight += c, x += c * q.x, y += c * q.y; - } - } - quad.x = x / weight; - quad.y = y / weight; - } - - // For leaf nodes, accumulate forces from coincident quadrants. - else { - q = quad; - q.x = q.data.x; - q.y = q.data.y; - do strength += strengths[q.data.index]; - while (q = q.next); - } - - quad.value = strength; - } - - function apply(quad, x1, _, x2) { - if (!quad.value) return true; - - var x = quad.x - node.x, - y = quad.y - node.y, - w = x2 - x1, - l = x * x + y * y; - - // Apply the Barnes-Hut approximation if possible. - // Limit forces for very close nodes; randomize direction if coincident. - if (w * w / theta2 < l) { - if (l < distanceMax2) { - if (x === 0) x = jiggle(random), l += x * x; - if (y === 0) y = jiggle(random), l += y * y; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - node.vx += x * quad.value * alpha / l; - node.vy += y * quad.value * alpha / l; - } - return true; - } - - // Otherwise, process points directly. - else if (quad.length || l >= distanceMax2) return; - - // Limit forces for very close nodes; randomize direction if coincident. - if (quad.data !== node || quad.next) { - if (x === 0) x = jiggle(random), l += x * x; - if (y === 0) y = jiggle(random), l += y * y; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - } - - do if (quad.data !== node) { - w = strengths[quad.data.index] * alpha / l; - node.vx += x * w; - node.vy += y * w; - } while (quad = quad.next); - } - - force.initialize = function(_nodes, _random) { - nodes = _nodes; - random = _random; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; - }; - - force.distanceMin = function(_) { - return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2); - }; - - force.distanceMax = function(_) { - return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2); - }; - - force.theta = function(_) { - return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2); - }; - - return force; -} - -function radial(radius, x, y) { - var nodes, - strength = constant(0.1), - strengths, - radiuses; - - if (typeof radius !== "function") radius = constant(+radius); - if (x == null) x = 0; - if (y == null) y = 0; - - function force(alpha) { - for (var i = 0, n = nodes.length; i < n; ++i) { - var node = nodes[i], - dx = node.x - x || 1e-6, - dy = node.y - y || 1e-6, - r = Math.sqrt(dx * dx + dy * dy), - k = (radiuses[i] - r) * strengths[i] * alpha / r; - node.vx += dx * k; - node.vy += dy * k; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - radiuses = new Array(n); - for (i = 0; i < n; ++i) { - radiuses[i] = +radius(nodes[i], i, nodes); - strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _, initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; - }; - - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), initialize(), force) : radius; - }; - - force.x = function(_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function(_) { - return arguments.length ? (y = +_, force) : y; - }; - - return force; -} - -function x$2(x) { - var strength = constant(0.1), - nodes, - strengths, - xz; - - if (typeof x !== "function") x = constant(x == null ? 0 : +x); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - xz = new Array(n); - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; - }; - - force.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant(+_), initialize(), force) : x; - }; - - return force; -} - -function y$2(y) { - var strength = constant(0.1), - nodes, - strengths, - yz; - - if (typeof y !== "function") y = constant(y == null ? 0 : +y); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - yz = new Array(n); - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; - }; - - force.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant(+_), initialize(), force) : y; - }; - - return force; -} - -exports.forceCenter = center; -exports.forceCollide = collide; -exports.forceLink = link; -exports.forceManyBody = manyBody; -exports.forceRadial = radial; -exports.forceSimulation = simulation; -exports.forceX = x$2; -exports.forceY = y$2; - -Object.defineProperty(exports, '__esModule', { value: true }); - -})); -}); - -var cytoscapeD3Force = createCommonjsModule(function (module, exports) { -(function webpackUniversalModuleDefinition(root, factory) { - module.exports = factory(d3Force$1); -})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_4__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 3); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** -* cytoscape-d3-force -*/ - -var defaults = __webpack_require__(2); -var d3 = __webpack_require__(4); -var assign = __webpack_require__(1); - -var ContinuousLayout = function () { - function ContinuousLayout(options) { - _classCallCheck(this, ContinuousLayout); - - var o = this.options = assign({}, defaults, options); - this.state = assign({}, o, { - layout: this, - nodes: o.eles.nodes(), - edges: o.eles.edges(), - progress: 0, - iterations: 0, - startTime: 0 - }); - this.simulation = null; - this.removeCytoscapeEvents = null; - this.destroyedEvent = null; - } - - _createClass(ContinuousLayout, [{ - key: 'makeBoundingBox', - value: function makeBoundingBox(bb, cy) { - if (bb == null) { - bb = { x1: 0, y1: 0, w: cy.width(), h: cy.height() }; - } else { - bb = { x1: bb.x1, x2: bb.x2, y1: bb.y1, y2: bb.y2, w: bb.w, h: bb.h }; - } - if (bb.x2 == null) { - bb.x2 = bb.x1 + bb.w; - } - if (bb.w == null) { - bb.w = bb.x2 - bb.x1; - } - if (bb.y2 == null) { - bb.y2 = bb.y1 + bb.h; - } - if (bb.h == null) { - bb.h = bb.y2 - bb.y1; - } - - return bb; - } - }, { - key: 'setInitialPositionState', - value: function setInitialPositionState(node, state) { - var p = node.position(); - var bb = state.currentBoundingBox; - var scratch = node.scratch(state.name); - - if (scratch == null) { - scratch = {}; - - node.scratch(state.name, scratch); - } - - assign(scratch, state.randomize ? { - x: bb.x1 + Math.round(Math.random() * bb.w), - y: bb.y1 + Math.round(Math.random() * bb.h) - } : { - x: p.x, - y: p.y - }); - if (node.locked()) { - assign(scratch, { - fx: p.x, - fy: p.y - }); - } - } - }, { - key: 'refreshPositions', - value: function refreshPositions(nodes, state, fit) { - nodes.positions(function (node) { - var scratch = node.scratch(state.name); - return { - x: scratch.x, - y: scratch.y - }; - }); - fit && state.cy.fit(state.padding); - } - }, { - key: 'getScratch', - value: function getScratch(el) { - var name = this.state.name; - var scratch = el.scratch(name); - - if (!scratch) { - scratch = {}; - - el.scratch(name, scratch); - } - return scratch; - } - }, { - key: 'ungrabify', - value: function ungrabify(nodes) { - var _this = this; - - if (!this.state.ungrabifyWhileSimulating) { - return; - } - nodes.filter(function (node) { - var nodeGrabbable = _this.getScratch(node).grabbable = node.grabbable(); - return nodeGrabbable; - }); - nodes.ungrabify(); - } - }, { - key: 'regrabify', - value: function regrabify(nodes) { - var _this2 = this; - - if (!this.state.ungrabifyWhileSimulating) { - return; - } - nodes.filter(function (node) { - var nodeGrabbable = _this2.getScratch(node).grabbable; - return nodeGrabbable; - }); - nodes.grabify(); - } - }, { - key: 'tick', - value: function tick() { - var s = this.state; - s.progress += 1 / Math.ceil(Math.log(this.simulation.alphaMin()) / Math.log(1 - this.simulation.alphaDecay())); - s.iterations++; - var _iterations = s.maxIterations && !s.infinite ? s.iterations / s.maxIterations : 0; - var _timeRunning = Date.now() - s.startTime; - var _timeIterations = s.maxSimulationTime && !s.infinite ? _timeRunning / s.maxSimulationTime : 0; - var _progress = Math.max(_iterations, _timeIterations, s.progress); - _progress = _progress > 1 ? 1 : _progress; - if (_progress >= 1) { - this.end(!s.infinite); - return; - } - s.tick && s.tick(_progress); - if (s.animate) { - this.refreshPositions(s.nodes, s, s.fit); - } - } - }, { - key: 'end', - value: function end(destroyed) { - var s = this.state; - this.refreshPositions(s.nodes, s, s.fit); - this.emit('layoutstop', s.cy); - this.reset(destroyed); - } - }, { - key: 'reset', - value: function reset(destroyed) { - this.simulation && this.simulation.stop(); - var s = this.state; - this.destroyedEvent && this.destroyedEvent(); - (destroyed || !s.infinite) && this.removeCytoscapeEvents && this.removeCytoscapeEvents(); - s.animate && this.regrabify(s.nodes); - return this; - } - }, { - key: 'run', - value: function run() { - var _this3 = this; - - this.reset(); - var l = this; - var s = this.state; - var ready = false; - s.currentBoundingBox = this.makeBoundingBox(s.boundingBox, s.cy); - if (s.ready) { - l.one('layoutready', s.ready); - } - if (s.stop) { - l.one('layoutstop', s.stop); - } - s.nodes.forEach(function (n) { - return _this3.setInitialPositionState(n, s); - }); - if (!ready) { - ready = true; - l.emit('layoutready'); - } - - if (!l.simulation) { - var _forcenodes = s.nodes.map(function (n) { - return assign(l.getScratch(n), n.data()); - }); - var _forceedges = s.edges.map(function (e) { - return assign({}, e.data()); - }); - l.simulation = d3.forceSimulation(_forcenodes); - s.alpha && l.simulation.alpha(s.alpha); - s.alphaMin && l.simulation.alphaMin(s.alphaMin); - s.alphaDecay && l.simulation.alphaDecay(s.alphaDecay); - s.alphaTarget && l.simulation.alphaTarget(s.alphaTarget); - s.velocityDecay && l.simulation.velocityDecay(s.velocityDecay); - var _collide = d3.forceCollide(); - s.collideRadius && _collide.radius(s.collideRadius); - s.collideStrength && _collide.strength(s.collideStrength); - s.collideIterations && _collide.iterations(s.collideIterations); - var _link = d3.forceLink(_forceedges); - s.linkId && _link.id(s.linkId); - s.linkDistance && _link.distance(s.linkDistance); - s.linkStrength && _link.strength(s.linkStrength); - s.linkIterations && _link.iterations(s.linkIterations); - var _manyBody = d3.forceManyBody(); - s.manyBodyStrength && _manyBody.strength(s.manyBodyStrength); - s.manyBodyTheta && _manyBody.theta(s.manyBodyTheta); - s.manyBodyDistanceMin && _manyBody.distanceMin(s.manyBodyDistanceMin); - s.manyBodyDistanceMax && _manyBody.distanceMax(s.manyBodyDistanceMax); - var _x = d3.forceX(); - s.xX && _x.x(s.xX); - s.xStrength && _x.strength(s.xStrength); - var _y = d3.forceY(); - s.yY && _y.y(s.yY); - s.yStrength && _y.strength(s.yStrength); - var _radius = null; - if (s.radialRadius || s.radialStrength || s.radialX || s.radialY) { - _radius = d3.forceRadial(); - s.radialRadius && _radius.radius(s.radialRadius); - s.radialStrength && _radius.strength(s.radialStrength); - s.radialX && _radius.x(s.radialX); - s.radialY && _radius.y(s.radialY); - } - var _center = d3.forceCenter(s.currentBoundingBox.w / 2, s.currentBoundingBox.h / 2); - l.simulation.force('collide', _collide).force('link', _link).force('many-body', _manyBody).force('x', _x).force('y', _y).force("center", _center); - _radius && l.simulation.force('radius', _radius); - l.simulation.on("tick", function () { - l.tick(); - }).on("end", function () { - l.end(); - }); - } - if (!l.destroyedEvent) { - var destroyHandler = void 0; - s.cy.one('destroy', destroyHandler = function destroyHandler() { - l.stop(); - }); - l.destroyedEvent = function () { - s.cy.off('destroy', destroyHandler); - l.destroyedEvent = null; - }; - } - l.prerun(s); - l.emit('layoutstart'); - s.progress = 0; - s.iterations = 0; - s.startTime = Date.now(); - - if (s.animate) { - var restartAlphaTarget = Math.abs((s.alpha || 1) - (s.alphaTarget || 0)) / 3; - if (!l.removeCytoscapeEvents) { - var _cytoscapeEvent = function _cytoscapeEvent(e) { - var node = this; - var pos = node.position(); - var nodeIsTarget = e.cyTarget === node || e.target === node; - if (!nodeIsTarget) { - return; - } - var _scratch = l.getScratch(node); - s.progress = 0; - s.iterations = 0; - s.startTime = Date.now(); - _scratch.x = pos.x; - _scratch.y = pos.y; - if (e.type === 'grab') { - l.simulation.alphaTarget(restartAlphaTarget).restart(); - } else if (e.type === 'unlock' || e.type === 'free') { - if (!s.fixedAfterDragging) { - delete _scratch.fx; - delete _scratch.fy; - } else { - _scratch.fx = pos.x; - _scratch.fy = pos.y; - } - l.simulation.alphaTarget(restartAlphaTarget).restart(); - } else { - _scratch.fx = pos.x; - _scratch.fy = pos.y; - } - }; - l.removeCytoscapeEvents = function () { - s.nodes.off('grab free drag lock unlock', _cytoscapeEvent); - l.removeCytoscapeEvents = null; - }; - s.nodes.on('grab free drag lock unlock', _cytoscapeEvent); - } - l.ungrabify(s.nodes); - } - l.postrun(s); - return this; - } - }, { - key: 'prerun', - value: function prerun() {} - }, { - key: 'postrun', - value: function postrun() {} - }, { - key: 'stop', - value: function stop() { - return this.reset(true); - } - }]); - - return ContinuousLayout; -}(); - -module.exports = ContinuousLayout; - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - -// Simple, internal Object.assign() polyfill for options objects etc. - -module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { - for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - srcs[_key - 1] = arguments[_key]; - } - - srcs.forEach(function (src) { - Object.keys(src).forEach(function (k) { - return tgt[k] = src[k]; - }); - }); - - return tgt; -}; - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - -module.exports = Object.freeze({ - animate: true, // whether to show the layout as it's running; special 'end' value makes the layout animate like a discrete layout - maxIterations: 0, // max iterations before the layout will bail out - maxSimulationTime: 0, // max length in ms to run the layout - ungrabifyWhileSimulating: false, // so you can't drag nodes during layout - fixedAfterDragging: false, // fixed node after dragging - fit: false, // on every layout reposition of nodes, fit the viewport - padding: 30, // padding around the simulation - boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - /**d3-force API**/ - alpha: undefined, // sets the current alpha to the specified number in the range [0,1] - alphaMin: undefined, // sets the minimum alpha to the specified number in the range [0,1] - alphaDecay: undefined, // sets the alpha decay rate to the specified number in the range [0,1] - alphaTarget: undefined, // sets the current target alpha to the specified number in the range [0,1] - velocityDecay: undefined, // sets the velocity decay factor to the specified number in the range [0,1] - collideRadius: undefined, // sets the radius accessor to the specified number or function - collideStrength: undefined, // sets the force strength to the specified number in the range [0,1] - collideIterations: undefined, // sets the number of iterations per application to the specified number - linkId: undefined, // sets the node id accessor to the specified function - linkDistance: 30, // sets the distance accessor to the specified number or function - linkStrength: undefined, // sets the strength accessor to the specified number or function - linkIterations: undefined, // sets the number of iterations per application to the specified number - manyBodyStrength: undefined, // sets the strength accessor to the specified number or function - manyBodyTheta: undefined, // sets the Barnes–Hut approximation criterion to the specified number - manyBodyDistanceMin: undefined, // sets the minimum distance between nodes over which this force is considered - manyBodyDistanceMax: undefined, // sets the maximum distance between nodes over which this force is considered - xStrength: undefined, // sets the strength accessor to the specified number or function - xX: undefined, // sets the x-coordinate accessor to the specified number or function - yStrength: undefined, // sets the strength accessor to the specified number or function - yY: undefined, // sets the y-coordinate accessor to the specified number or function - radialStrength: undefined, // sets the strength accessor to the specified number or function - radialRadius: undefined, // sets the circle radius to the specified number or function - radialX: undefined, // sets the x-coordinate of the circle center to the specified number - radialY: undefined, // sets the y-coordinate of the circle center to the specified number - // layout event callbacks - ready: function ready() {}, // on layoutready - stop: function stop() {}, // on layoutstop - tick: function tick() {}, // on every iteration - // positioning options - randomize: false, // use random node positions at beginning of layout - // infinite layout options - infinite: false // overrides all other options for a forces-all-the-time mode -}); - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - - -var impl = __webpack_require__(0); - -// registers the extension on a cytoscape lib ref -var register = function register(cytoscape) { - if (!cytoscape) { - return; - } // can't register if cytoscape unspecified - - cytoscape('layout', 'd3-force', impl); // register with cytoscape.js -}; - -if (typeof cytoscape !== 'undefined') { - // expose to global cytoscape (i.e. window.cytoscape) - register(cytoscape); -} - -module.exports = register; - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE_4__; - -/***/ }) -/******/ ]); -}); -}); - -var d3Force = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeD3Force); - -// https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setdoubleclicktime -var INTERVAL = 500; -function extension(interval) { - if (interval === void 0) { interval = INTERVAL; } - var clicked = null; - this.on('click', function (evt) { - if (clicked && clicked === evt.target) { - clicked = null; - evt.preventDefault(); - evt.stopPropagation(); - evt.target.emit('dblclick', [evt]); - } - else { - clicked = evt.target; - setTimeout(function () { - if (clicked && clicked === evt.target) { - clicked = null; - evt.target.emit('dblclick:timeout', [evt]); - } - }, interval); - } - }); - return this; // chainability -} - -function register(cy) { - if (!cy) { - return; - } - // Initialize extension - // Register extension - var extensionName = 'dblclick'; - cy('core', extensionName, extension); - // cy('collection', extensionName, extension); - // cy('layout', extensionName, extension); - // cy('renderer', extensionName, extension); -} -if (typeof window.cytoscape !== 'undefined') { - register(window.cytoscape); -} - -var cytoscapeCxtmenu = createCommonjsModule(function (module, exports) { -(function webpackUniversalModuleDefinition(root, factory) { - module.exports = factory(); -})(commonjsGlobal, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 4); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - -var defaults = __webpack_require__(2); -var assign = __webpack_require__(1); - -var _require = __webpack_require__(3), - removeEles = _require.removeEles, - setStyles = _require.setStyles, - createElement = _require.createElement, - getPixelRatio = _require.getPixelRatio, - getOffset = _require.getOffset; - -var cxtmenu = function cxtmenu(params) { - var options = assign({}, defaults, params); - var cy = this; - var container = cy.container(); - var target = void 0; - - var data = { - options: options, - handlers: [], - container: createElement({ class: 'cxtmenu' }) - }; - - var wrapper = data.container; - var parent = createElement(); - var canvas = createElement({ tag: 'canvas' }); - var commands = []; - var c2d = canvas.getContext('2d'); - - var r = 100; // defailt radius; - var containerSize = (r + options.activePadding) * 2; - var activeCommandI = void 0; - var offset = void 0; - - container.insertBefore(wrapper, container.firstChild); - wrapper.appendChild(parent); - parent.appendChild(canvas); - - setStyles(wrapper, { - position: 'absolute', - zIndex: options.zIndex, - userSelect: 'none', - pointerEvents: 'none' // prevent events on menu in modern browsers - }); - - // prevent events on menu in legacy browsers - ['mousedown', 'mousemove', 'mouseup', 'contextmenu'].forEach(function (evt) { - wrapper.addEventListener(evt, function (e) { - e.preventDefault(); - - return false; - }); - }); - - setStyles(parent, { - display: 'none', - width: containerSize + 'px', - height: containerSize + 'px', - position: 'absolute', - zIndex: 1, - marginLeft: -options.activePadding + 'px', - marginTop: -options.activePadding + 'px', - userSelect: 'none' - }); - - canvas.width = containerSize; - canvas.height = containerSize; - - function createMenuItems(r, rs) { - removeEles('.cxtmenu-item', parent); - var dtheta = 2 * Math.PI / commands.length; - var theta1 = Math.PI / 2; - var theta2 = theta1 + dtheta; - - for (var i = 0; i < commands.length; i++) { - var command = commands[i]; - - var midtheta = (theta1 + theta2) / 2; - var rx1 = (r + rs) / 2 * Math.cos(midtheta); - var ry1 = (r + rs) / 2 * Math.sin(midtheta); - - // Arbitrary multiplier to increase the sizing of the space - // available for the item. - var width = 1 * Math.abs((r - rs) * Math.cos(midtheta)); - var height = 1 * Math.abs((r - rs) * Math.sin(midtheta)); - width = Math.max(width, height); - - var item = createElement({ class: 'cxtmenu-item' }); - setStyles(item, { - color: options.itemColor, - cursor: 'default', - display: 'table', - 'text-align': 'center', - //background: 'red', - position: 'absolute', - 'text-shadow': '-1px -1px 2px ' + options.itemTextShadowColor + ', 1px -1px 2px ' + options.itemTextShadowColor + ', -1px 1px 2px ' + options.itemTextShadowColor + ', 1px 1px 1px ' + options.itemTextShadowColor, - left: '50%', - top: '50%', - 'min-height': width + 'px', - width: width + 'px', - height: width + 'px', - marginLeft: rx1 - width / 2 + 'px', - marginTop: -ry1 - width / 2 + 'px' - }); - - var content = createElement({ class: 'cxtmenu-content' }); - - if (command.content instanceof HTMLElement) { - content.appendChild(command.content); - } else { - content.innerHTML = command.content; - } - - setStyles(content, { - 'width': width + 'px', - 'height': width + 'px', - 'vertical-align': 'middle', - 'display': 'table-cell' - }); - - setStyles(content, command.contentStyle || {}); - - if (command.disabled === true || command.enabled === false) { - content.setAttribute('class', 'cxtmenu-content cxtmenu-disabled'); - } - - parent.appendChild(item); - item.appendChild(content); - - theta1 += dtheta; - theta2 += dtheta; - } - } - - function queueDrawBg(radius, rspotlight) { - redrawQueue.drawBg = [radius, rspotlight]; - } - - function drawBg(radius, rspotlight) { - c2d.globalCompositeOperation = 'source-over'; - - c2d.clearRect(0, 0, containerSize, containerSize); - - // draw background items - c2d.fillStyle = options.fillColor; - var dtheta = 2 * Math.PI / commands.length; - var theta1 = Math.PI / 2; - var theta2 = theta1 + dtheta; - - for (var index = 0; index < commands.length; index++) { - var command = commands[index]; - - if (command.fillColor) { - c2d.fillStyle = command.fillColor; - } - c2d.beginPath(); - c2d.moveTo(radius + options.activePadding, radius + options.activePadding); - c2d.arc(radius + options.activePadding, radius + options.activePadding, radius, 2 * Math.PI - theta1, 2 * Math.PI - theta2, true); - c2d.closePath(); - c2d.fill(); - - theta1 += dtheta; - theta2 += dtheta; - - c2d.fillStyle = options.fillColor; - } - - // draw separators between items - c2d.globalCompositeOperation = 'destination-out'; - c2d.strokeStyle = 'white'; - c2d.lineWidth = options.separatorWidth; - theta1 = Math.PI / 2; - theta2 = theta1 + dtheta; - - for (var i = 0; i < commands.length; i++) { - var rx1 = radius * Math.cos(theta1); - var ry1 = radius * Math.sin(theta1); - c2d.beginPath(); - c2d.moveTo(radius + options.activePadding, radius + options.activePadding); - c2d.lineTo(radius + options.activePadding + rx1, radius + options.activePadding - ry1); - c2d.closePath(); - c2d.stroke(); - - theta1 += dtheta; - theta2 += dtheta; - } - - c2d.fillStyle = 'white'; - c2d.globalCompositeOperation = 'destination-out'; - c2d.beginPath(); - c2d.arc(radius + options.activePadding, radius + options.activePadding, rspotlight + options.spotlightPadding, 0, Math.PI * 2, true); - c2d.closePath(); - c2d.fill(); - - c2d.globalCompositeOperation = 'source-over'; - } - - function queueDrawCommands(rx, ry, radius, theta, rspotlight) { - redrawQueue.drawCommands = [rx, ry, radius, theta, rspotlight]; - } - - function drawCommands(rx, ry, radius, theta, rs) { - var dtheta = 2 * Math.PI / commands.length; - var theta1 = Math.PI / 2; - var theta2 = theta1 + dtheta; - - theta1 += dtheta * activeCommandI; - theta2 += dtheta * activeCommandI; - - c2d.fillStyle = options.activeFillColor; - c2d.strokeStyle = 'black'; - c2d.lineWidth = 1; - c2d.beginPath(); - c2d.moveTo(radius + options.activePadding, radius + options.activePadding); - c2d.arc(radius + options.activePadding, radius + options.activePadding, radius + options.activePadding, 2 * Math.PI - theta1, 2 * Math.PI - theta2, true); - c2d.closePath(); - c2d.fill(); - - c2d.fillStyle = 'white'; - c2d.globalCompositeOperation = 'destination-out'; - - var tx = radius + options.activePadding + rx / radius * (rs + options.spotlightPadding - options.indicatorSize / 4); - var ty = radius + options.activePadding + ry / radius * (rs + options.spotlightPadding - options.indicatorSize / 4); - var rot = Math.PI / 4 - theta; - - c2d.translate(tx, ty); - c2d.rotate(rot); - - // clear the indicator - // The indicator size (arrow) depends on the node size as well. If the indicator size is bigger and the rendered node size + padding, - // use the rendered node size + padding as the indicator size. - var indicatorSize = options.indicatorSize > rs + options.spotlightPadding ? rs + options.spotlightPadding : options.indicatorSize; - c2d.beginPath(); - c2d.fillRect(-indicatorSize / 2, -indicatorSize / 2, indicatorSize, indicatorSize); - c2d.closePath(); - c2d.fill(); - - c2d.rotate(-rot); - c2d.translate(-tx, -ty); - - // c2d.setTransform( 1, 0, 0, 1, 0, 0 ); - - // clear the spotlight - c2d.beginPath(); - c2d.arc(radius + options.activePadding, radius + options.activePadding, rs + options.spotlightPadding, 0, Math.PI * 2, true); - c2d.closePath(); - c2d.fill(); - - c2d.globalCompositeOperation = 'source-over'; - } - - function updatePixelRatio() { - var pxr = getPixelRatio(); - var w = containerSize; - var h = containerSize; - - canvas.width = w * pxr; - canvas.height = h * pxr; - - canvas.style.width = w + 'px'; - canvas.style.height = h + 'px'; - - c2d.setTransform(1, 0, 0, 1, 0, 0); - c2d.scale(pxr, pxr); - } - - var redrawing = true; - var redrawQueue = {}; - - var raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (fn) { - return setTimeout(fn, 16); - }; - - var redraw = function redraw() { - if (redrawQueue.drawBg) { - drawBg.apply(null, redrawQueue.drawBg); - } - - if (redrawQueue.drawCommands) { - drawCommands.apply(null, redrawQueue.drawCommands); - } - - redrawQueue = {}; - - if (redrawing) { - raf(redraw); - } - }; - - // kick off - updatePixelRatio(); - redraw(); - - var ctrx = void 0, - ctry = void 0, - rs = void 0; - - var bindings = { - on: function on(events, selector, fn) { - - var _fn = fn; - if (selector === 'core') { - _fn = function _fn(e) { - if (e.cyTarget === cy || e.target === cy) { - // only if event target is directly core - return fn.apply(this, [e]); - } - }; - } - - data.handlers.push({ - events: events, - selector: selector, - fn: _fn - }); - - if (selector === 'core') { - cy.on(events, _fn); - } else { - cy.on(events, selector, _fn); - } - - return this; - } - }; - - function addEventListeners() { - var grabbable = void 0; - var inGesture = false; - var dragHandler = void 0; - var zoomEnabled = void 0; - var panEnabled = void 0; - var boxEnabled = void 0; - var gestureStartEvent = void 0; - - var restoreZoom = function restoreZoom() { - if (zoomEnabled) { - cy.userZoomingEnabled(true); - } - }; - - var restoreGrab = function restoreGrab() { - if (grabbable) { - target.grabify(); - } - }; - - var restorePan = function restorePan() { - if (panEnabled) { - cy.userPanningEnabled(true); - } - }; - - var restoreBoxSeln = function restoreBoxSeln() { - if (boxEnabled) { - cy.boxSelectionEnabled(true); - } - }; - - var restoreGestures = function restoreGestures() { - restoreGrab(); - restoreZoom(); - restorePan(); - restoreBoxSeln(); - }; - - window.addEventListener('resize', updatePixelRatio); - - bindings.on('resize', function () { - updatePixelRatio(); - }).on(options.openMenuEvents, options.selector, function (e) { - target = this; // Remember which node the context menu is for - var ele = this; - var isCy = this === cy; - - if (inGesture) { - parent.style.display = 'none'; - - inGesture = false; - - restoreGestures(); - } - - if (typeof options.commands === 'function') { - var res = options.commands(target); - if (res.then) { - res.then(function (_commands) { - commands = _commands; - openMenu(); - }); - } else { - commands = res; - openMenu(); - } - } else { - commands = options.commands; - openMenu(); - } - - function openMenu() { - if (!commands || commands.length === 0) { - return; - } - - zoomEnabled = cy.userZoomingEnabled(); - cy.userZoomingEnabled(false); - - panEnabled = cy.userPanningEnabled(); - cy.userPanningEnabled(false); - - boxEnabled = cy.boxSelectionEnabled(); - cy.boxSelectionEnabled(false); - - grabbable = target.grabbable && target.grabbable(); - if (grabbable) { - target.ungrabify(); - } - - var rp = void 0, - rw = void 0, - rs = void 0; - if (!isCy && ele && ele.isNode instanceof Function && ele.isNode() && !ele.isParent() && !options.atMouse) { - // If it's a node, the default spotlight radius for a node is the node width - rp = ele.renderedPosition(); - rw = ele.renderedOuterWidth(); - ele.renderedOuterHeight(); - rs = rw / 2; - // If adaptativeNodespotlightRadius is not enabled and min|maxSpotlighrRadius is defined, use those instead - rs = !options.adaptativeNodeSpotlightRadius && options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs; - rs = !options.adaptativeNodeSpotlightRadius && options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs; - } else { - // If it's the background or an edge, the spotlight radius is the min|maxSpotlightRadius - rp = e.renderedPosition || e.cyRenderedPosition; - rw = 1; - rs = rw / 2; - rs = options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs; - rs = options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs; - } - - offset = getOffset(container); - - ctrx = rp.x; - ctry = rp.y; - r = rw / 2 + (options.menuRadius instanceof Function ? options.menuRadius(target) : Number(options.menuRadius)); - containerSize = (r + options.activePadding) * 2; - updatePixelRatio(); - - setStyles(parent, { - width: containerSize + 'px', - height: containerSize + 'px', - display: 'block', - left: rp.x - r + 'px', - top: rp.y - r + 'px' - }); - createMenuItems(r, rs); - queueDrawBg(r, rs); - - activeCommandI = undefined; - - inGesture = true; - gestureStartEvent = e; - } - }).on('cxtdrag tapdrag', options.selector, dragHandler = function dragHandler(e) { - - if (!inGesture) { - return; - } - e.preventDefault(); // Otherwise, on mobile, the pull-down refresh gesture gets activated - - var origE = e.originalEvent; - var isTouch = origE.touches && origE.touches.length > 0; - - var pageX = (isTouch ? origE.touches[0].pageX : origE.pageX) - window.pageXOffset; - var pageY = (isTouch ? origE.touches[0].pageY : origE.pageY) - window.pageYOffset; - - activeCommandI = undefined; - - var dx = pageX - offset.left - ctrx; - var dy = pageY - offset.top - ctry; - - if (dx === 0) { - dx = 0.01; - } - - var d = Math.sqrt(dx * dx + dy * dy); - var cosTheta = (dy * dy - d * d - dx * dx) / (-2 * d * dx); - var theta = Math.acos(cosTheta); - - var rw = void 0; - if (target && target.isNode instanceof Function && target.isNode() && !target.isParent() && !options.atMouse) { - // If it's a node, the default spotlight radius for a node is the node width - rw = target.renderedOuterWidth(); - rs = rw / 2; - // If adaptativeNodespotlightRadius is not enabled and min|maxSpotlighrRadius is defined, use those instead - rs = !options.adaptativeNodeSpotlightRadius && options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs; - rs = !options.adaptativeNodeSpotlightRadius && options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs; - } else { - // If it's the background or an edge, the spotlight radius is the min|maxSpotlightRadius - rw = 1; - rs = rw / 2; - rs = options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs; - rs = options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs; - } - - r = rw / 2 + (options.menuRadius instanceof Function ? options.menuRadius(target) : Number(options.menuRadius)); - if (d < rs + options.spotlightPadding || typeof options.outsideMenuCancel === "number" && d > r + options.activePadding + options.outsideMenuCancel) { - // - - queueDrawBg(r, rs); - return; - } - queueDrawBg(r, rs); - - var rx = dx * r / d; - var ry = dy * r / d; - - if (dy > 0) { - theta = Math.PI + Math.abs(theta - Math.PI); - } - - var dtheta = 2 * Math.PI / commands.length; - var theta1 = Math.PI / 2; - var theta2 = theta1 + dtheta; - - for (var i = 0; i < commands.length; i++) { - var command = commands[i]; - - var inThisCommand = theta1 <= theta && theta <= theta2 || theta1 <= theta + 2 * Math.PI && theta + 2 * Math.PI <= theta2; - - if (command.disabled === true || command.enabled === false) { - inThisCommand = false; - } - - if (inThisCommand) { - activeCommandI = i; - break; - } - - theta1 += dtheta; - theta2 += dtheta; - } - queueDrawCommands(rx, ry, r, theta, rs); - }).on('tapdrag', dragHandler).on('cxttapend tapend', function (e) { - parent.style.display = 'none'; - if (activeCommandI !== undefined) { - var select = commands[activeCommandI].select; - - if (select) { - select.apply(target, [target, gestureStartEvent, e]); - activeCommandI = undefined; - } - } - - inGesture = false; - - restoreGestures(); - }); - } - - function removeEventListeners() { - var handlers = data.handlers; - - for (var i = 0; i < handlers.length; i++) { - var h = handlers[i]; - - if (h.selector === 'core') { - cy.off(h.events, h.fn); - } else { - cy.off(h.events, h.selector, h.fn); - } - } - - window.removeEventListener('resize', updatePixelRatio); - } - - function destroyInstance() { - redrawing = false; - - removeEventListeners(); - - wrapper.remove(); - } - - addEventListeners(); - - return { - destroy: function destroy() { - destroyInstance(); - } - }; -}; - -module.exports = cxtmenu; - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - -// Simple, internal Object.assign() polyfill for options objects etc. - -module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { - for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - srcs[_key - 1] = arguments[_key]; - } - - srcs.filter(function (src) { - return src != null; - }).forEach(function (src) { - Object.keys(src).forEach(function (k) { - return tgt[k] = src[k]; - }); - }); - - return tgt; -}; - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - -var defaults = { - menuRadius: function menuRadius(ele) { - return 100; - }, // the radius of the circular menu in pixels - selector: 'node', // elements matching this Cytoscape.js selector will trigger cxtmenus - commands: [// an array of commands to list in the menu or a function that returns the array - /* - { // example command - fillColor: 'rgba(200, 200, 200, 0.75)', // optional: custom background color for item - content: 'a command name' // html/text content to be displayed in the menu - contentStyle: {}, // css key:value pairs to set the command's css in js if you want - select: function(ele){ // a function to execute when the command is selected - console.log( ele.id() ) // `ele` holds the reference to the active element - }, - enabled: true // whether the command is selectable - } - */ - ], // function( ele ){ return [ /*...*/ ] }, // example function for commands - fillColor: 'rgba(0, 0, 0, 0.75)', // the background colour of the menu - activeFillColor: 'rgba(1, 105, 217, 0.75)', // the colour used to indicate the selected command - activePadding: 20, // additional size in pixels for the active command - indicatorSize: 24, // the size in pixels of the pointer to the active command, will default to the node size if the node size is smaller than the indicator size, - separatorWidth: 3, // the empty spacing in pixels between successive commands - spotlightPadding: 4, // extra spacing in pixels between the element and the spotlight - adaptativeNodeSpotlightRadius: false, // specify whether the spotlight radius should adapt to the node size - minSpotlightRadius: 24, // the minimum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background) - maxSpotlightRadius: 38, // the maximum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background) - openMenuEvents: 'cxttapstart taphold', // space-separated cytoscape events that will open the menu; only `cxttapstart` and/or `taphold` work here - itemColor: 'white', // the colour of text in the command's content - itemTextShadowColor: 'transparent', // the text shadow colour of the command's content - zIndex: 9999, // the z-index of the ui div - atMouse: false, // draw menu at mouse position - outsideMenuCancel: false // if set to a number, this will cancel the command if the pointer is released outside of the spotlight, padded by the number given -}; - -module.exports = defaults; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - - -var removeEles = function removeEles(query) { - var ancestor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document; - - var els = ancestor.querySelectorAll(query); - - for (var i = 0; i < els.length; i++) { - var el = els[i]; - - el.parentNode.removeChild(el); - } -}; - -var setStyles = function setStyles(el, style) { - var props = Object.keys(style); - - for (var i = 0, l = props.length; i < l; i++) { - el.style[props[i]] = style[props[i]]; - } -}; - -var createElement = function createElement(options) { - options = options || {}; - - var el = document.createElement(options.tag || 'div'); - - el.className = options.class || ''; - - if (options.style) { - setStyles(el, options.style); - } - - return el; -}; - -var getPixelRatio = function getPixelRatio() { - return window.devicePixelRatio || 1; -}; - -var getOffset = function getOffset(el) { - var offset = el.getBoundingClientRect(); - - return { - left: offset.left + document.body.scrollLeft + parseFloat(getComputedStyle(document.body)['padding-left']) + parseFloat(getComputedStyle(document.body)['border-left-width']), - top: offset.top + document.body.scrollTop + parseFloat(getComputedStyle(document.body)['padding-top']) + parseFloat(getComputedStyle(document.body)['border-top-width']) - }; -}; - -module.exports = { removeEles: removeEles, setStyles: setStyles, createElement: createElement, getPixelRatio: getPixelRatio, getOffset: getOffset }; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - - -var cxtmenu = __webpack_require__(0); - -// registers the extension on a cytoscape lib ref -var register = function register(cytoscape) { - if (!cytoscape) { - return; - } // can't register if cytoscape unspecified - - cytoscape('core', 'cxtmenu', cxtmenu); // register with cytoscape.js -}; - -if (typeof cytoscape !== 'undefined') { - // expose to global cytoscape (i.e. window.cytoscape) - register(cytoscape); -} - -module.exports = register; - -/***/ }) -/******/ ]); -}); -}); - -var cxtmenu = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeCxtmenu); - -class JugglView extends obsidian.ItemView { - constructor(leaf, settings, plugin, initialNodes) { - super(leaf); - // TODO: Maybe make this configurable - leaf.setPinned(true); - const coreStore = plugin.coreStores[settings.coreStore]; - const stores = { - dataStores: [coreStore].concat(plugin.stores), - coreStore: coreStore - }; - this.juggl = new Juggl(this.containerEl.children[1], plugin, stores, settings, initialNodes); - this.addChild(this.juggl); - } - getDisplayText() { - // TODO: Make this interactive: Either the active workspace or the local graph - return 'Juggl'; - } - getViewType() { - return JUGGL_VIEW_TYPE; - } -} - -/* src/pane/NodesList.svelte generated by Svelte v3.45.0 */ - -function get_each_context$1(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[11] = list[i]; - return child_ctx; -} - -// (18:0) {#if displayList} -function create_if_block$1(ctx) { - let each_1_anchor; - let each_value = /*nodes*/ ctx[1].sort(func); - let each_blocks = []; - - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i)); - } - - return { - c() { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - - each_1_anchor = empty(); - }, - m(target, anchor) { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(target, anchor); - } - - insert(target, each_1_anchor, anchor); - }, - p(ctx, dirty) { - if (dirty & /*icon_tooltip, onClickButton, nodes, icon, onClickText, ctxmenu*/ 126) { - each_value = /*nodes*/ ctx[1].sort(func); - let i; - - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context$1(ctx, each_value, i); - - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block$1(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); - } - } - - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - - each_blocks.length = each_value.length; - } - }, - d(detaching) { - destroy_each(each_blocks, detaching); - if (detaching) detach(each_1_anchor); - } - }; -} - -// (27:16) {#if icon} -function create_if_block_1$1(ctx) { - let button; - let svg; - let path; - let mounted; - let dispose; - - return { - c() { - button = element$1("button"); - svg = svg_element("svg"); - path = svg_element("path"); - attr(path, "d", /*icon*/ ctx[4]); - set_style(svg, "width", "14px"); - set_style(svg, "height", "14px"); - attr(svg, "viewBox", "0 0 24 24"); - attr(svg, "xmlns", "http://www.w3.org/2000/svg"); - attr(button, "type", "button"); - attr(button, "class", "juggl-button juggl-button-pane"); - attr(button, "aria-label", /*icon_tooltip*/ ctx[5]); - }, - m(target, anchor) { - insert(target, button, anchor); - append(button, svg); - append(svg, path); - - if (!mounted) { - dispose = listen(button, "click", function () { - if (is_function(/*onClickButton*/ ctx[3](/*v*/ ctx[11]))) /*onClickButton*/ ctx[3](/*v*/ ctx[11]).apply(this, arguments); - }); - - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - - if (dirty & /*icon*/ 16) { - attr(path, "d", /*icon*/ ctx[4]); - } - - if (dirty & /*icon_tooltip*/ 32) { - attr(button, "aria-label", /*icon_tooltip*/ ctx[5]); - } - }, - d(detaching) { - if (detaching) detach(button); - mounted = false; - dispose(); - } - }; -} - -// (19:4) {#each nodes.sort((a, b) => a.data("name").localeCompare(b.data("name"))) as v} -function create_each_block$1(ctx) { - let div2; - let div1; - let div0; - let t0_value = /*v*/ ctx[11].data("name") + ""; - let t0; - let t1; - let t2; - let mounted; - let dispose; - - function click_handler(...args) { - return /*click_handler*/ ctx[9](/*v*/ ctx[11], ...args); - } - - function contextmenu_handler(...args) { - return /*contextmenu_handler*/ ctx[10](/*v*/ ctx[11], ...args); - } - - let if_block = /*icon*/ ctx[4] && create_if_block_1$1(ctx); - - return { - c() { - div2 = element$1("div"); - div1 = element$1("div"); - div0 = element$1("div"); - t0 = text(t0_value); - t1 = space(); - if (if_block) if_block.c(); - t2 = space(); - attr(div0, "class", "tree-item-inner juggl-list-text"); - set_style(div0, "color", /*v*/ ctx[11].style('background-color')); - attr(div1, "class", "tree-item-self is-clickable"); - attr(div2, "class", "tree-item"); - }, - m(target, anchor) { - insert(target, div2, anchor); - append(div2, div1); - append(div1, div0); - append(div0, t0); - append(div1, t1); - if (if_block) if_block.m(div1, null); - append(div2, t2); - - if (!mounted) { - dispose = [ - listen(div0, "click", click_handler), - listen(div0, "contextmenu", contextmenu_handler) - ]; - - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (dirty & /*nodes*/ 2 && t0_value !== (t0_value = /*v*/ ctx[11].data("name") + "")) set_data(t0, t0_value); - - if (dirty & /*nodes*/ 2) { - set_style(div0, "color", /*v*/ ctx[11].style('background-color')); - } - - if (/*icon*/ ctx[4]) { - if (if_block) { - if_block.p(ctx, dirty); - } else { - if_block = create_if_block_1$1(ctx); - if_block.c(); - if_block.m(div1, null); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - }, - d(detaching) { - if (detaching) detach(div2); - if (if_block) if_block.d(); - mounted = false; - run_all(dispose); - } - }; -} - -function create_fragment$4(ctx) { - let div; - let t0; - let t1; - let if_block_anchor; - let mounted; - let dispose; - let if_block = /*displayList*/ ctx[7] && create_if_block$1(ctx); - - return { - c() { - div = element$1("div"); - t0 = text(/*name*/ ctx[0]); - t1 = space(); - if (if_block) if_block.c(); - if_block_anchor = empty(); - attr(div, "class", "juggl-list-header"); - }, - m(target, anchor) { - insert(target, div, anchor); - append(div, t0); - insert(target, t1, anchor); - if (if_block) if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - - if (!mounted) { - dispose = listen(div, "click", /*setDisplayList*/ ctx[8]); - mounted = true; - } - }, - p(ctx, [dirty]) { - if (dirty & /*name*/ 1) set_data(t0, /*name*/ ctx[0]); - - if (/*displayList*/ ctx[7]) { - if (if_block) { - if_block.p(ctx, dirty); - } else { - if_block = create_if_block$1(ctx); - if_block.c(); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - }, - i: noop$2, - o: noop$2, - d(detaching) { - if (detaching) detach(div); - if (detaching) detach(t1); - if (if_block) if_block.d(detaching); - if (detaching) detach(if_block_anchor); - mounted = false; - dispose(); - } - }; -} - -const func = (a, b) => a.data("name").localeCompare(b.data("name")); - -function instance$4($$self, $$props, $$invalidate) { - let { name } = $$props; - let { nodes } = $$props; - let { onClickText } = $$props; - let { onClickButton } = $$props; - let { icon = null } = $$props; - let { icon_tooltip = null } = $$props; - let { ctxmenu } = $$props; - let displayList = true; - - let setDisplayList = function () { - $$invalidate(7, displayList = !displayList); - }; - - const click_handler = (v, e) => onClickText(v, e); - const contextmenu_handler = (v, e) => ctxmenu(v, e); - - $$self.$$set = $$props => { - if ('name' in $$props) $$invalidate(0, name = $$props.name); - if ('nodes' in $$props) $$invalidate(1, nodes = $$props.nodes); - if ('onClickText' in $$props) $$invalidate(2, onClickText = $$props.onClickText); - if ('onClickButton' in $$props) $$invalidate(3, onClickButton = $$props.onClickButton); - if ('icon' in $$props) $$invalidate(4, icon = $$props.icon); - if ('icon_tooltip' in $$props) $$invalidate(5, icon_tooltip = $$props.icon_tooltip); - if ('ctxmenu' in $$props) $$invalidate(6, ctxmenu = $$props.ctxmenu); - }; - - return [ - name, - nodes, - onClickText, - onClickButton, - icon, - icon_tooltip, - ctxmenu, - displayList, - setDisplayList, - click_handler, - contextmenu_handler - ]; -} - -class NodesList extends SvelteComponent { - constructor(options) { - super(); - - init(this, options, instance$4, create_fragment$4, safe_not_equal, { - name: 0, - nodes: 1, - onClickText: 2, - onClickButton: 3, - icon: 4, - icon_tooltip: 5, - ctxmenu: 6 - }); - } -} - -/* src/pane/NodesPane.svelte generated by Svelte v3.45.0 */ - -function create_fragment$3(ctx) { - let div; - let nodeslist0; - let t; - let nodeslist1; - let current; - - nodeslist0 = new NodesList({ - props: { - nodes: /*visible*/ ctx[0], - name: "Nodes in graph", - ctxmenu: /*ctxMenu*/ ctx[2], - onClickText: /*clickTxt*/ ctx[3] - } - }); - - nodeslist1 = new NodesList({ - props: { - nodes: /*hidden*/ ctx[1], - name: "Hidden nodes", - ctxmenu: /*ctxMenu*/ ctx[2], - onClickText: /*clickTxt*/ ctx[3], - icon: icons.ag_unhide, - icon_tooltip: "Show in graph", - onClickButton: /*filterButtonClick*/ ctx[4] - } - }); - - return { - c() { - div = element$1("div"); - create_component(nodeslist0.$$.fragment); - t = space(); - create_component(nodeslist1.$$.fragment); - attr(div, "class", "juggl-nodes-pane"); - }, - m(target, anchor) { - insert(target, div, anchor); - mount_component(nodeslist0, div, null); - append(div, t); - mount_component(nodeslist1, div, null); - current = true; - }, - p(ctx, [dirty]) { - const nodeslist0_changes = {}; - if (dirty & /*visible*/ 1) nodeslist0_changes.nodes = /*visible*/ ctx[0]; - nodeslist0.$set(nodeslist0_changes); - const nodeslist1_changes = {}; - if (dirty & /*hidden*/ 2) nodeslist1_changes.nodes = /*hidden*/ ctx[1]; - nodeslist1.$set(nodeslist1_changes); - }, - i(local) { - if (current) return; - transition_in(nodeslist0.$$.fragment, local); - transition_in(nodeslist1.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(nodeslist0.$$.fragment, local); - transition_out(nodeslist1.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) detach(div); - destroy_component(nodeslist0); - destroy_component(nodeslist1); - } - }; -} - -function instance$3($$self, $$props, $$invalidate) { - let viz = null; - let visible = cytoscape_cjs().collection(); - let hidden = cytoscape_cjs().collection(); - - const setViz = function (juggl) { - if (!juggl) { - viz = null; - $$invalidate(0, visible = cytoscape_cjs().collection()); - $$invalidate(1, hidden = cytoscape_cjs().collection()); - return; - } - - viz = juggl; - - // TODO: Can probably do something like not HARD FILTERED, rather than relying on styling. - $$invalidate(0, visible = viz.viz.nodes(":visible")); - - $$invalidate(1, hidden = viz.viz.nodes(`.${CLASS_HARD_FILTERED}`)); - }; - - let ctxMenu = function (node, e) { - const fileMenu = new obsidian.Menu(); // Creates empty file menu - const id = VizId.fromNode(node); - const file = viz.plugin.metadata.getFirstLinkpathDest(id.id, ''); - - if (!(file === undefined)) { - // hook for plugins to populate menu with "file-aware" menu items - viz.plugin.app.workspace.trigger('file-menu', fileMenu, file, 'my-context-menu', null); - } - - viz.mode.fillMenu(fileMenu, node); - fileMenu.showAtPosition({ x: e.x, y: e.y }); - }; - - let clickTxt = function (node, e) { - viz.plugin.openFileFromNode(node, e.metaKey); - }; - - let filterButtonClick = function (node) { - node.removeClass(CLASS_HARD_FILTERED); - viz.onGraphChanged(true, true); - }; - - return [visible, hidden, ctxMenu, clickTxt, filterButtonClick, setViz]; -} - -class NodesPane extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$3, create_fragment$3, safe_not_equal, { setViz: 5 }); - } - - get setViz() { - return this.$$.ctx[5]; - } -} - -class IconModal extends obsidian.FuzzySuggestModal { - constructor(app, callback, color) { - super(app); - this.callback = callback; - this.resultContainerEl.addClass('juggl-icon-picker'); - this.color = color; - } - getItemText(item) { - return item.name; - } - getItems() { - const icons = [{ name: 'No icon', path: '', color: this.color }]; - icons.push(...Object.keys(mdiIcons).map((k) => { - return { name: k.slice(3).replace(/([A-Z])/g, ' $1').trim(), - // @ts-ignore - path: mdiIcons[k], - color: this.color }; - })); - return icons; - } - onChooseItem(item, evt) { - this.callback(item); - } - renderSuggestion(item, el) { - el.empty(); - const iconHtml = pathToSvg(item.item.path); - // // const renderedResult = el.createEl('span', {cls: ''}); - const innerResult = el.createEl('span', { - cls: 'react-icon ', - }); - innerResult.innerHTML = iconHtml; - // el.createEl('span', { - super.renderSuggestion(item, el); - // cls: '', - // text: item.item.name, - // }); - } -} - -/* src/pane/StyleGroups.svelte generated by Svelte v3.45.0 */ - -function get_each_context(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[15] = list[i]; - child_ctx[16] = list; - child_ctx[17] = i; - return child_ctx; -} - -function get_each_context_1(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[18] = list[i]; - return child_ctx; -} - -// (103:8) {:else} -function create_else_block_1(ctx) { - let div1; - let div0; - let t0; - let t1_value = /*group*/ ctx[15].filter + ""; - let t1; - let t2; - let br; - let mounted; - let dispose; - - return { - c() { - div1 = element$1("div"); - div0 = element$1("div"); - div0.innerHTML = ``; - t0 = space(); - t1 = text(t1_value); - t2 = space(); - br = element$1("br"); - attr(div0, "class", "clickable-icon"); - set_style(div0, "display", "inline"); - attr(div0, "aria-label", "Show group options"); - attr(div1, "class", "juggl-style-group-hidden"); - }, - m(target, anchor) { - insert(target, div1, anchor); - append(div1, div0); - append(div1, t0); - append(div1, t1); - insert(target, t2, anchor); - insert(target, br, anchor); - - if (!mounted) { - dispose = listen(div0, "click", function () { - if (is_function(/*showGroup*/ ctx[7](/*group*/ ctx[15], true))) /*showGroup*/ ctx[7](/*group*/ ctx[15], true).apply(this, arguments); - }); - - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (dirty & /*groups*/ 1 && t1_value !== (t1_value = /*group*/ ctx[15].filter + "")) set_data(t1, t1_value); - }, - d(detaching) { - if (detaching) detach(div1); - if (detaching) detach(t2); - if (detaching) detach(br); - mounted = false; - dispose(); - } - }; -} - -// (47:8) {#if group.showInPane} -function create_if_block(ctx) { - let div10; - let div2; - let div0; - let t0; - let div1; - let svg1; - let path1; - let path1_d_value; - let div1_aria_label_value; - let t1; - let input0; - let t2; - let div3; - let t3; - let div4; - let t4; - let div5; - let input1; - let t5; - let select; - let t6; - let div6; - let t7; - let div7; - let t8; - let button; - let t9; - let div8; - let t10; - let div9; - let t11_value = Math.round(/*group*/ ctx[15].size * 100) / 100 + ""; - let t11; - let t12; - let input2; - let mounted; - let dispose; - - function input0_input_handler() { - /*input0_input_handler*/ ctx[10].call(input0, /*each_value*/ ctx[16], /*group_index*/ ctx[17]); - } - - function input1_input_handler() { - /*input1_input_handler*/ ctx[11].call(input1, /*each_value*/ ctx[16], /*group_index*/ ctx[17]); - } - - let each_value_1 = SHAPES; - let each_blocks = []; - - for (let i = 0; i < each_value_1.length; i += 1) { - each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); - } - - function select_change_handler() { - /*select_change_handler*/ ctx[12].call(select, /*each_value*/ ctx[16], /*group_index*/ ctx[17]); - } - - let if_block0 = /*group*/ ctx[15].icon.path && create_if_block_2(ctx); - - function select_block_type_1(ctx, dirty) { - if (/*group*/ ctx[15].icon.path) return create_if_block_1; - return create_else_block; - } - - let current_block_type = select_block_type_1(ctx); - let if_block1 = current_block_type(ctx); - - function input2_change_input_handler() { - /*input2_change_input_handler*/ ctx[14].call(input2, /*each_value*/ ctx[16], /*group_index*/ ctx[17]); - } - - return { - c() { - div10 = element$1("div"); - div2 = element$1("div"); - div0 = element$1("div"); - div0.innerHTML = ``; - t0 = space(); - div1 = element$1("div"); - svg1 = svg_element("svg"); - path1 = svg_element("path"); - t1 = space(); - input0 = element$1("input"); - t2 = space(); - div3 = element$1("div"); - div3.innerHTML = ``; - t3 = space(); - div4 = element$1("div"); - t4 = space(); - div5 = element$1("div"); - input1 = element$1("input"); - t5 = space(); - select = element$1("select"); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - - t6 = space(); - div6 = element$1("div"); - t7 = space(); - div7 = element$1("div"); - if (if_block0) if_block0.c(); - t8 = space(); - button = element$1("button"); - if_block1.c(); - t9 = space(); - div8 = element$1("div"); - t10 = space(); - div9 = element$1("div"); - t11 = text(t11_value); - t12 = space(); - input2 = element$1("input"); - attr(div0, "class", "clickable-icon"); - attr(div0, "aria-label", "Hide group options"); - attr(div0, "flex-basis", "100%"); - attr(path1, "fill", "currentColor"); - attr(path1, "stroke", "currentColor"); - attr(path1, "d", path1_d_value = /*group*/ ctx[15].show ? icons.ag_unhide : icons.ag_hide); - attr(svg1, "viewBox", "0 0 24 24"); - attr(svg1, "width", "16"); - attr(svg1, "height", "16"); - attr(svg1, "class", "right-triangle"); - attr(div1, "class", "clickable-icon"); - attr(div1, "aria-label", div1_aria_label_value = /*group*/ ctx[15].show ? "Hide group" : "Show group"); - attr(div1, "flex-basis", "100%"); - attr(div2, "class", "juggl-style-pane-left"); - attr(input0, "type", "text"); - attr(input0, "placeholder", "Enter filter..."); - attr(div3, "class", "clickable-icon"); - attr(div3, "aria-label", "Delete group"); - attr(div3, "flex-basis", "100%"); - attr(div4, "class", "break"); - attr(input1, "type", "color"); - attr(input1, "aria-label", "Click to change color"); - attr(input1, "flex-basis", "100%"); - attr(div5, "class", "juggl-style-pane-left"); - attr(select, "class", "dropdown"); - if (/*group*/ ctx[15].shape === void 0) add_render_callback(select_change_handler); - attr(div6, "class", "break"); - attr(div7, "class", "juggl-style-pane-left"); - attr(button, "class", "juggl-icon-button"); - attr(div8, "class", "break"); - attr(div9, "class", "juggl-style-pane-left"); - attr(input2, "class", "slider"); - attr(input2, "type", "range"); - attr(input2, "min", "0.01"); - attr(input2, "max", "10"); - attr(input2, "step", "any"); - attr(input2, "aria-label", "Size"); - attr(div10, "class", "juggl-style-group"); - }, - m(target, anchor) { - insert(target, div10, anchor); - append(div10, div2); - append(div2, div0); - append(div2, t0); - append(div2, div1); - append(div1, svg1); - append(svg1, path1); - append(div10, t1); - append(div10, input0); - set_input_value(input0, /*group*/ ctx[15].filter); - append(div10, t2); - append(div10, div3); - append(div10, t3); - append(div10, div4); - append(div10, t4); - append(div10, div5); - append(div5, input1); - set_input_value(input1, /*group*/ ctx[15].color); - append(div10, t5); - append(div10, select); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(select, null); - } - - select_option(select, /*group*/ ctx[15].shape); - append(div10, t6); - append(div10, div6); - append(div10, t7); - append(div10, div7); - if (if_block0) if_block0.m(div7, null); - append(div10, t8); - append(div10, button); - if_block1.m(button, null); - append(div10, t9); - append(div10, div8); - append(div10, t10); - append(div10, div9); - append(div9, t11); - append(div10, t12); - append(div10, input2); - set_input_value(input2, /*group*/ ctx[15].size); - - if (!mounted) { - dispose = [ - listen(div0, "click", function () { - if (is_function(/*showGroup*/ ctx[7](/*group*/ ctx[15], false))) /*showGroup*/ ctx[7](/*group*/ ctx[15], false).apply(this, arguments); - }), - listen(div1, "click", function () { - if (is_function(/*changeShow*/ ctx[8](/*group*/ ctx[15]))) /*changeShow*/ ctx[8](/*group*/ ctx[15]).apply(this, arguments); - }), - listen(input0, "input", input0_input_handler), - listen(input0, "change", function () { - if (is_function(/*onChangeFilter*/ ctx[2])) /*onChangeFilter*/ ctx[2].apply(this, arguments); - }), - listen(div3, "click", function () { - if (is_function(/*onDeleteGroup*/ ctx[5](/*group*/ ctx[15]))) /*onDeleteGroup*/ ctx[5](/*group*/ ctx[15]).apply(this, arguments); - }), - listen(input1, "input", input1_input_handler), - listen(input1, "change", function () { - if (is_function(/*onChangeGroups*/ ctx[3])) /*onChangeGroups*/ ctx[3].apply(this, arguments); - }), - listen(select, "change", select_change_handler), - listen(select, "blur", function () { - if (is_function(/*onChangeGroups*/ ctx[3])) /*onChangeGroups*/ ctx[3].apply(this, arguments); - }), - listen(button, "click", function () { - if (is_function(/*onIconButton*/ ctx[6](/*group*/ ctx[15]))) /*onIconButton*/ ctx[6](/*group*/ ctx[15]).apply(this, arguments); - }), - listen(input2, "change", input2_change_input_handler), - listen(input2, "input", input2_change_input_handler), - listen(input2, "change", function () { - if (is_function(/*onChangeGroups*/ ctx[3])) /*onChangeGroups*/ ctx[3].apply(this, arguments); - }) - ]; - - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - - if (dirty & /*groups, SHAPES*/ 1 && path1_d_value !== (path1_d_value = /*group*/ ctx[15].show ? icons.ag_unhide : icons.ag_hide)) { - attr(path1, "d", path1_d_value); - } - - if (dirty & /*groups, SHAPES*/ 1 && div1_aria_label_value !== (div1_aria_label_value = /*group*/ ctx[15].show ? "Hide group" : "Show group")) { - attr(div1, "aria-label", div1_aria_label_value); - } - - if (dirty & /*groups, SHAPES*/ 1 && input0.value !== /*group*/ ctx[15].filter) { - set_input_value(input0, /*group*/ ctx[15].filter); - } - - if (dirty & /*groups, SHAPES*/ 1) { - set_input_value(input1, /*group*/ ctx[15].color); - } - - if (dirty & /*SHAPES*/ 0) { - each_value_1 = SHAPES; - let i; - - for (i = 0; i < each_value_1.length; i += 1) { - const child_ctx = get_each_context_1(ctx, each_value_1, i); - - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block_1(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(select, null); - } - } - - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - - each_blocks.length = each_value_1.length; - } - - if (dirty & /*groups, SHAPES*/ 1) { - select_option(select, /*group*/ ctx[15].shape); - } - - if (/*group*/ ctx[15].icon.path) { - if (if_block0) { - if_block0.p(ctx, dirty); - } else { - if_block0 = create_if_block_2(ctx); - if_block0.c(); - if_block0.m(div7, null); - } - } else if (if_block0) { - if_block0.d(1); - if_block0 = null; - } - - if (current_block_type === (current_block_type = select_block_type_1(ctx)) && if_block1) { - if_block1.p(ctx, dirty); - } else { - if_block1.d(1); - if_block1 = current_block_type(ctx); - - if (if_block1) { - if_block1.c(); - if_block1.m(button, null); - } - } - - if (dirty & /*groups*/ 1 && t11_value !== (t11_value = Math.round(/*group*/ ctx[15].size * 100) / 100 + "")) set_data(t11, t11_value); - - if (dirty & /*groups, SHAPES*/ 1) { - set_input_value(input2, /*group*/ ctx[15].size); - } - }, - d(detaching) { - if (detaching) detach(div10); - destroy_each(each_blocks, detaching); - if (if_block0) if_block0.d(); - if_block1.d(); - mounted = false; - run_all(dispose); - } - }; -} - -// (78:16) {#each SHAPES as shape} -function create_each_block_1(ctx) { - let option; - let t_value = /*shape*/ ctx[18] + ""; - let t; - let option_value_value; - - return { - c() { - option = element$1("option"); - t = text(t_value); - option.__value = option_value_value = /*shape*/ ctx[18]; - option.value = option.__value; - }, - m(target, anchor) { - insert(target, option, anchor); - append(option, t); - }, - p: noop$2, - d(detaching) { - if (detaching) detach(option); - } - }; -} - -// (84:16) {#if group.icon.path} -function create_if_block_2(ctx) { - let input; - let mounted; - let dispose; - - function input_input_handler() { - /*input_input_handler*/ ctx[13].call(input, /*each_value*/ ctx[16], /*group_index*/ ctx[17]); - } - - return { - c() { - input = element$1("input"); - attr(input, "type", "color"); - attr(input, "aria-label", "Click to change icon color"); - attr(input, "flex-basis", "100%"); - }, - m(target, anchor) { - insert(target, input, anchor); - set_input_value(input, /*group*/ ctx[15].icon.color); - - if (!mounted) { - dispose = [ - listen(input, "input", input_input_handler), - listen(input, "change", function () { - if (is_function(/*onChangeGroups*/ ctx[3])) /*onChangeGroups*/ ctx[3].apply(this, arguments); - }) - ]; - - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - - if (dirty & /*groups, SHAPES*/ 1) { - set_input_value(input, /*group*/ ctx[15].icon.color); - } - }, - d(detaching) { - if (detaching) detach(input); - mounted = false; - run_all(dispose); - } - }; -} - -// (93:16) {:else} -function create_else_block(ctx) { - let t_value = /*group*/ ctx[15].icon.name + ""; - let t; - - return { - c() { - t = text(t_value); - }, - m(target, anchor) { - insert(target, t, anchor); - }, - p(ctx, dirty) { - if (dirty & /*groups*/ 1 && t_value !== (t_value = /*group*/ ctx[15].icon.name + "")) set_data(t, t_value); - }, - d(detaching) { - if (detaching) detach(t); - } - }; -} - -// (89:16) {#if group.icon.path} -function create_if_block_1(ctx) { - let svg; - let path; - let path_d_value; - - return { - c() { - svg = svg_element("svg"); - path = svg_element("path"); - attr(path, "fill", "currentcolor"); - attr(path, "d", path_d_value = /*group*/ ctx[15].icon.path); - set_style(svg, "width", "24px"); - set_style(svg, "height", "24px"); - attr(svg, "viewBox", "0 0 24 24"); - attr(svg, "xmlns", "http://www.w3.org/2000/svg"); - }, - m(target, anchor) { - insert(target, svg, anchor); - append(svg, path); - }, - p(ctx, dirty) { - if (dirty & /*groups, SHAPES*/ 1 && path_d_value !== (path_d_value = /*group*/ ctx[15].icon.path)) { - attr(path, "d", path_d_value); - } - }, - d(detaching) { - if (detaching) detach(svg); - } - }; -} - -// (46:4) {#each groups as group} -function create_each_block(ctx) { - let if_block_anchor; - - function select_block_type(ctx, dirty) { - if (/*group*/ ctx[15].showInPane) return create_if_block; - return create_else_block_1; - } - - let current_block_type = select_block_type(ctx); - let if_block = current_block_type(ctx); - - return { - c() { - if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - }, - p(ctx, dirty) { - if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) { - if_block.p(ctx, dirty); - } else { - if_block.d(1); - if_block = current_block_type(ctx); - - if (if_block) { - if_block.c(); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } - }, - d(detaching) { - if_block.d(detaching); - if (detaching) detach(if_block_anchor); - } - }; -} - -function create_fragment$2(ctx) { - let div0; - let t0; - let t1; - let div2; - let t2; - let div1; - let mounted; - let dispose; - let each_value = /*groups*/ ctx[0]; - let each_blocks = []; - - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); - } - - return { - c() { - div0 = element$1("div"); - t0 = text(/*title*/ ctx[1]); - t1 = space(); - div2 = element$1("div"); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - - t2 = space(); - div1 = element$1("div"); - div1.innerHTML = ``; - attr(div0, "class", "juggl-list-header"); - attr(div1, "class", "graph-color-button-container"); - attr(div2, "class", "juggl-style-group-container"); - }, - m(target, anchor) { - insert(target, div0, anchor); - append(div0, t0); - insert(target, t1, anchor); - insert(target, div2, anchor); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(div2, null); - } - - append(div2, t2); - append(div2, div1); - - if (!mounted) { - dispose = listen(div1, "click", /*onNewGroup*/ ctx[4]); - mounted = true; - } - }, - p(ctx, [dirty]) { - if (dirty & /*title*/ 2) set_data(t0, /*title*/ ctx[1]); - - if (dirty & /*groups, onChangeGroups, Math, onIconButton, SHAPES, onDeleteGroup, onChangeFilter, changeShow, icons, showGroup*/ 493) { - each_value = /*groups*/ ctx[0]; - let i; - - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context(ctx, each_value, i); - - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(div2, t2); - } - } - - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - - each_blocks.length = each_value.length; - } - }, - i: noop$2, - o: noop$2, - d(detaching) { - if (detaching) detach(div0); - if (detaching) detach(t1); - if (detaching) detach(div2); - destroy_each(each_blocks, detaching); - mounted = false; - dispose(); - } - }; -} - -function instance$2($$self, $$props, $$invalidate) { - let { groups } = $$props; - let { title } = $$props; - let { onChangeFilter } = $$props; - let { onChangeGroups } = $$props; - let { plugin } = $$props; - - let onNewGroup = function () { - groups.push({ ...emptyStyleGroup }); - $$invalidate(0, groups); - onChangeGroups(); - }; - - let onDeleteGroup = function (group) { - groups.remove(group); - $$invalidate(0, groups); - onChangeFilter(); - onChangeGroups(); - }; - - let onIconButton = function (group) { - let callback = function (icon) { - group.icon = icon; - onChangeGroups(); - $$invalidate(0, groups); - }; - - let iconModal = new IconModal(plugin.app, callback, group.icon.color); - iconModal.open(); - }; - - let showGroup = function (group, show) { - group.showInPane = show; - $$invalidate(0, groups); - }; - - let changeShow = function (group) { - group.show = !group.show; - onChangeGroups(); - $$invalidate(0, groups); - }; - - function input0_input_handler(each_value, group_index) { - each_value[group_index].filter = this.value; - $$invalidate(0, groups); - } - - function input1_input_handler(each_value, group_index) { - each_value[group_index].color = this.value; - $$invalidate(0, groups); - } - - function select_change_handler(each_value, group_index) { - each_value[group_index].shape = select_value(this); - $$invalidate(0, groups); - } - - function input_input_handler(each_value, group_index) { - each_value[group_index].icon.color = this.value; - $$invalidate(0, groups); - } - - function input2_change_input_handler(each_value, group_index) { - each_value[group_index].size = to_number(this.value); - $$invalidate(0, groups); - } - - $$self.$$set = $$props => { - if ('groups' in $$props) $$invalidate(0, groups = $$props.groups); - if ('title' in $$props) $$invalidate(1, title = $$props.title); - if ('onChangeFilter' in $$props) $$invalidate(2, onChangeFilter = $$props.onChangeFilter); - if ('onChangeGroups' in $$props) $$invalidate(3, onChangeGroups = $$props.onChangeGroups); - if ('plugin' in $$props) $$invalidate(9, plugin = $$props.plugin); - }; - - return [ - groups, - title, - onChangeFilter, - onChangeGroups, - onNewGroup, - onDeleteGroup, - onIconButton, - showGroup, - changeShow, - plugin, - input0_input_handler, - input1_input_handler, - select_change_handler, - input_input_handler, - input2_change_input_handler - ]; -} - -class StyleGroups extends SvelteComponent { - constructor(options) { - super(); - - init(this, options, instance$2, create_fragment$2, safe_not_equal, { - groups: 0, - title: 1, - onChangeFilter: 2, - onChangeGroups: 3, - plugin: 9 - }); - } -} - -/* src/pane/StylePane.svelte generated by Svelte v3.45.0 */ - -function create_fragment$1(ctx) { - let div; - let stylegroups0; - let t; - let stylegroups1; - let current; - - stylegroups0 = new StyleGroups({ - props: { - groups: /*localGroups*/ ctx[1], - title: "Local style groups", - onChangeGroups: /*onChangeGroups*/ ctx[3], - onChangeFilter: /*onChangeFilter*/ ctx[5], - plugin: /*plugin*/ ctx[0] - } - }); - - stylegroups1 = new StyleGroups({ - props: { - groups: /*globalGroups*/ ctx[2], - title: "Global style groups", - onChangeGroups: /*onChangeGroupsGlobal*/ ctx[4], - onChangeFilter: /*onChangeFilterGlobal*/ ctx[6], - plugin: /*plugin*/ ctx[0] - } - }); - - return { - c() { - div = element$1("div"); - create_component(stylegroups0.$$.fragment); - t = space(); - create_component(stylegroups1.$$.fragment); - attr(div, "class", "juggl-style-pane"); - }, - m(target, anchor) { - insert(target, div, anchor); - mount_component(stylegroups0, div, null); - append(div, t); - mount_component(stylegroups1, div, null); - current = true; - }, - p(ctx, [dirty]) { - const stylegroups0_changes = {}; - if (dirty & /*localGroups*/ 2) stylegroups0_changes.groups = /*localGroups*/ ctx[1]; - if (dirty & /*plugin*/ 1) stylegroups0_changes.plugin = /*plugin*/ ctx[0]; - stylegroups0.$set(stylegroups0_changes); - const stylegroups1_changes = {}; - if (dirty & /*plugin*/ 1) stylegroups1_changes.plugin = /*plugin*/ ctx[0]; - stylegroups1.$set(stylegroups1_changes); - }, - i(local) { - if (current) return; - transition_in(stylegroups0.$$.fragment, local); - transition_in(stylegroups1.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(stylegroups0.$$.fragment, local); - transition_out(stylegroups1.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) detach(div); - destroy_component(stylegroups0); - destroy_component(stylegroups1); - } - }; -} - -function instance$1($$self, $$props, $$invalidate) { - let { viz } = $$props; - let { plugin } = $$props; - let settings = plugin?.settings; - - const setViz = function (_viz) { - $$invalidate(7, viz = _viz); - - if (viz) { - $$invalidate(1, localGroups = viz.settings.styleGroups); - } else { - $$invalidate(1, localGroups = []); - } - }; - - let localGroups = []; - let globalGroups = settings.globalStyleGroups; - - let onChangeGroups = function () { - if (viz) { - viz.updateStylesheet(); - } - }; - - let onChangeGroupsGlobal = function () { - plugin.saveData(settings); - plugin.activeGraphs().forEach(j => j.updateStylesheet()); - }; - - let onChangeFilter = function () { - if (viz) { - viz.assignStyleGroups(); - } - }; - - let onChangeFilterGlobal = function () { - plugin.saveData(settings); - plugin.activeGraphs().forEach(j => j.assignStyleGroups()); - }; - - $$self.$$set = $$props => { - if ('viz' in $$props) $$invalidate(7, viz = $$props.viz); - if ('plugin' in $$props) $$invalidate(0, plugin = $$props.plugin); - }; - - return [ - plugin, - localGroups, - globalGroups, - onChangeGroups, - onChangeGroupsGlobal, - onChangeFilter, - onChangeFilterGlobal, - viz, - setViz - ]; -} - -class StylePane extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$1, create_fragment$1, safe_not_equal, { viz: 7, plugin: 0, setViz: 8 }); - } - - get setViz() { - return this.$$.ctx[8]; - } -} - -class JugglPane extends obsidian.ItemView { - constructor(leaf, plugin) { - super(leaf); - this.activeViz = null; - this.changeRef = null; - this.plugin = plugin; - const view = this; - this.registerEvent(this.plugin.app.workspace.on('active-leaf-change', (leaf) => { - if (this.changeRef) { - this.activeViz.offref(this.changeRef); - this.changeRef = null; - } - if (leaf) { - if (leaf.view.getViewType() === JUGGL_VIEW_TYPE) { - const activeViz = leaf.view.juggl; - this.changeRef = activeViz.on('elementsChange', () => { - view.onActiveVizChange(); - }); - if (activeViz === this.activeViz) { - return; - } - this.activeViz = activeViz; - } - else if (!(leaf.view instanceof JugglPane)) { - this.activeViz = null; - } - } - else { - this.activeViz = null; - } - this.onActiveVizChange(); - })); - } - setViz(viz) { - this.activeViz = viz; - this.onActiveVizChange(); - } -} -class JugglNodesPane extends JugglPane { - constructor(leaf, plugin) { - super(leaf, plugin); - this.icon = 'ag-node-list'; - } - onload() { - super.onload(); - this.pane = new NodesPane({ target: this.contentEl }); - } - getDisplayText() { - return 'Juggl nodes'; - } - getViewType() { - return JUGGL_NODES_VIEW_TYPE; - } - onActiveVizChange() { - if (this.pane) { - this.pane.setViz.bind(this.pane)(this.activeViz); - } - } -} -class JugglStylePane extends JugglPane { - constructor(leaf, plugin) { - super(leaf, plugin); - this.icon = 'ag-style'; - } - onload() { - super.onload(); - this.pane = new StylePane({ target: this.contentEl, props: { - plugin: this.plugin, - } }); - } - getDisplayText() { - return 'Juggl style'; - } - getViewType() { - return JUGGL_STYLE_VIEW_TYPE; - } - onActiveVizChange() { - if (this.pane) { - this.pane.setViz.bind(this.pane)(this.activeViz); - } - } -} - -class WorkspaceManager extends obsidian.Component { - constructor(plugin) { - super(); - this.graphs = []; - this.plugin = plugin; - this.adapter = this.plugin.app.vault.adapter; - } - async onload() { - super.onload(); - try { - await this.adapter.mkdir(DATA_FOLDER(this.plugin.vault)); - const path = require('path'); - this.graphs = (await this.adapter.list(DATA_FOLDER(this.plugin.vault))).folders.map((s) => path.basename(s)); - } - catch (e) { - console.log(e); - } - } - async saveGraph(name, viz) { - try { - const folder = DATA_FOLDER(viz.vault) + name; - await this.adapter.mkdir(folder); - const graphJson = viz.viz.json(); - await this.adapter.write(folder + '/graph.json', JSON.stringify(graphJson)); - const settings = viz.settings; - await this.adapter.write(folder + '/settings.json', JSON.stringify(settings)); - if (!this.graphs.contains(name)) { - this.graphs.push(name); - } - } - catch (e) { - console.log(e); - } - } - async loadGraph(name, viz) { - try { - const folder = DATA_FOLDER(viz.vault) + name; - const graph = JSON.parse(await this.adapter.read(folder + '/graph.json')); - const settings = JSON.parse(await this.adapter.read(folder + '/settings.json')); - viz.viz.json(graph); - viz.settings = settings; - // After loading in the graph, we have to validate with the datastores that the data is still up-to-date: - // This could create race-condition conflicts possibly when a node updates in the meantime. - const nodes = viz.viz.nodes(); - for (let i = 1; i < nodes.length; i++) { - if (!nodes[i]) { - continue; - } - const vId = VizId.fromNode(nodes[i]); - for (const store of viz.datastores.dataStores) { - if (store.storeId() === vId.storeId) { - await store.refreshNode(vId, viz); - break; - } - } - } - } - catch (e) { - console.log(e); - } - } - ; - async deleteGraph(name, view) { - try { - await this.adapter.rmdir(DATA_FOLDER + name, true); - this.graphs.remove(name); - } - catch (e) { - console.log(e); - } - } -} - -/* src/ui/settings/GlobalGraphModal.svelte generated by Svelte v3.45.0 */ - -function create_fragment(ctx) { - let t0; - let br; - let t1; - let button0; - let t3; - let button1; - let mounted; - let dispose; - - return { - c() { - t0 = text("Warning: Juggl is not optimized for large graphs. We advise not to use the global graph if your vault\ncontains more than 250 notes to prevent Obsidian from freezing. "); - br = element$1("br"); - t1 = space(); - button0 = element$1("button"); - button0.textContent = "Cancel"; - t3 = space(); - button1 = element$1("button"); - button1.textContent = "Understood, continue"; - attr(button0, "class", "mod-cta"); - attr(button1, "class", "mod-cta"); - }, - m(target, anchor) { - insert(target, t0, anchor); - insert(target, br, anchor); - insert(target, t1, anchor); - insert(target, button0, anchor); - insert(target, t3, anchor); - insert(target, button1, anchor); - - if (!mounted) { - dispose = [ - listen(button0, "click", function () { - if (is_function(/*cancelCallback*/ ctx[0])) /*cancelCallback*/ ctx[0].apply(this, arguments); - }), - listen(button1, "click", function () { - if (is_function(/*continueCallback*/ ctx[1])) /*continueCallback*/ ctx[1].apply(this, arguments); - }) - ]; - - mounted = true; - } - }, - p(new_ctx, [dirty]) { - ctx = new_ctx; - }, - i: noop$2, - o: noop$2, - d(detaching) { - if (detaching) detach(t0); - if (detaching) detach(br); - if (detaching) detach(t1); - if (detaching) detach(button0); - if (detaching) detach(t3); - if (detaching) detach(button1); - mounted = false; - run_all(dispose); - } - }; -} - -function instance($$self, $$props, $$invalidate) { - let { cancelCallback } = $$props; - let { continueCallback } = $$props; - - $$self.$$set = $$props => { - if ('cancelCallback' in $$props) $$invalidate(0, cancelCallback = $$props.cancelCallback); - if ('continueCallback' in $$props) $$invalidate(1, continueCallback = $$props.continueCallback); - }; - - return [cancelCallback, continueCallback]; -} - -class GlobalGraphModal extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance, create_fragment, safe_not_equal, { cancelCallback: 0, continueCallback: 1 }); - } -} - -class GlobalWarningModal extends obsidian.Modal { - constructor(app, callback) { - super(app); - const modal = this; - new GlobalGraphModal({ target: this.modalEl, props: { - cancelCallback: this.close.bind(modal), - continueCallback: callback, - } }); - } -} - -// I got this from https://github.com/SilentVoid13/Templater/blob/master/src/fuzzy_suggester.ts -// const STATUS_OFFLINE = 'Neo4j stream offline'; -class JugglPlugin extends obsidian.Plugin { - constructor() { - super(...arguments); - this.coreStores = {}; - this.stores = []; - } - async onload() { - super.onload(); - console.log('Loading Juggl'); - cytoscapeNavigator(cytoscape_cjs); - cytoscape_cjs.use(popper); - cytoscape_cjs.use(cola); - cytoscape_cjs.use(dagre); - cytoscape_cjs.use(avsdf); - cytoscape_cjs.use(d3Force); - cytoscape_cjs.use(register); - cytoscape_cjs.use(cxtmenu); - addIcons(); - this.vault = this.app.vault; - this.metadata = this.app.metadataCache; - this.path = this.vault.getRoot().path; - const obsidianStore = new ObsidianStore(this); - this.addChild(obsidianStore); - this.workspaceManager = new WorkspaceManager(this); - this.addChild(this.workspaceManager); - this.registerCoreStore(obsidianStore, OBSIDIAN_STORE_NAME); - DefaultJugglSettings.globalStyleGroups = genStyleGroups(this); - this.settings = Object.assign({}, DefaultJugglSettings, await this.loadData()); - this.settings.globalStyleGroups = this.settings.globalStyleGroups.map((g) => Object.assign({}, emptyStyleGroup, g)); - this.settings.graphSettings = Object.assign({}, DefaultJugglSettings.graphSettings, this.settings.graphSettings); - this.settings.embedSettings = Object.assign({}, DefaultJugglSettings.embedSettings, this.settings.embedSettings); - this.addCommand({ - id: 'open-vis', - name: 'Open local graph of note', - callback: () => { - const file = this.app.workspace.getActiveFile(); - const name = file.name; - this.openLocalGraph(name); - }, - }); - this.addCommand({ - id: 'open-vis-global', - name: 'Open global graph', - callback: () => { - this.openGlobalGraph(); - }, - }); - this.addSettingTab(new JugglGraphSettingsTab(this.app, this)); - this.registerEvent(this.app.workspace.on('file-menu', (menu, file) => { - if (!file) { - return; - } - menu.addItem((item) => { - item.setTitle('Open Juggl').setIcon('dot-network') - .onClick((evt) => { - if (file.extension === 'md') { - this.openLocalGraph(file.basename); - } - else { - this.openLocalGraph(file.name); - } - }); - }); - })); - this.registerMarkdownCodeBlockProcessor('juggl', async (src, el, context) => { - // timeout is needed to ensure the div is added to the window. The graph will only load if - // it is attached. This will also prevent any annoying hickups while looading the graph. - setTimeout(async () => { - const parsed = obsidian.parseYaml(src); - try { - const settings = Object.assign({}, this.settings.embedSettings, parsed); - if (!(LAYOUTS.contains(settings.layout))) { - throw new Error(`Invalid layout. Choose one from ${LAYOUTS}`); - } - const stores = { - dataStores: [this.coreStores[settings.coreStore]].concat(this.stores), - coreStore: this.coreStores[settings.coreStore], - }; - el.style.width = settings.width; - el.style.height = settings.height; - if (Object.keys(parsed).contains('local')) { - this.addChild(new Juggl(el, this, stores, settings, [parsed.local])); - } - else if (Object.keys(parsed).contains('workspace')) { - const graph = new Juggl(el, this, stores, settings, null); - if (!this.workspaceManager.graphs.contains(parsed.workspace)) { - throw new Error('Did not recognize workspace. Did you misspell its name?'); - } - this.addChild(graph); - await this.workspaceManager.loadGraph(parsed.workspace, graph); - } - else if (Object.keys(parsed).contains('oql')) { - // @ts-ignore - if ('obsidian-query-language' in this.app.plugins.plugins) { - // @ts-ignore - const searchResults = await this.app.plugins.plugins['obsidian-query-language'].search(parsed.oql); - settings.expandInitial = false; - this.addChild(new Juggl(el, this, stores, settings, searchResults.map((file) => file.title))); - } - else { - throw new Error('The Obsidian Query Language plugin isn\'t loaded, so cannot query using oql!'); - } - } - else { - throw new Error('Invalid query. Specify either the local property or the workspace property.'); - } - } - catch (error) { - // taken from https://github.com/jplattel/obsidian-query-language/blob/main/src/renderer.ts - const errorElement = document.createElement('div'); - errorElement.addClass('juggl-error'); - errorElement.innerText = error.message; - el.appendChild(errorElement); - } - }, 200); - }); - const plugin = this; - // Adapted from https://github.com/liamcain/obsidian-calendar-plugin/blob/master/src/main.ts - this.registerView(JUGGL_NODES_VIEW_TYPE, (leaf) => new JugglNodesPane(leaf, plugin)); - this.registerView(JUGGL_STYLE_VIEW_TYPE, (leaf) => new JugglStylePane(leaf, plugin)); - const createNodesPane = function () { - if (plugin.app.workspace.getLeavesOfType(JUGGL_NODES_VIEW_TYPE).length === 0) { - const leaf = plugin.app.workspace.getRightLeaf(false); - leaf.setViewState({ type: JUGGL_NODES_VIEW_TYPE }); - } // - }; - const createStylePane = function () { - if (plugin.app.workspace.getLeavesOfType(JUGGL_STYLE_VIEW_TYPE).length === 0) { - const leaf = plugin.app.workspace.getRightLeaf(false); - leaf.setViewState({ type: JUGGL_STYLE_VIEW_TYPE }); - } - }; - this.app.workspace.onLayoutReady(createNodesPane); - this.app.workspace.onLayoutReady(createStylePane); - this.addCommand({ - id: 'show-nodes-pane', - name: 'Open Nodes Pane', - checkCallback: (checking) => { - if (checking) { - return (this.app.workspace.getLeavesOfType(JUGGL_NODES_VIEW_TYPE).length === 0); - } - createNodesPane(); - }, - }); - this.addCommand({ - id: 'show-style-pane', - name: 'Open Style Pane', - checkCallback: (checking) => { - if (checking) { - return (this.app.workspace.getLeavesOfType(JUGGL_STYLE_VIEW_TYPE).length === 0); - } - createStylePane(); - }, - }); - const sheetPath = STYLESHEET_PATH(this.vault); - // @ts-ignore - this.registerEvent(this.vault.on('raw', (file) => { - // @ts-ignore - if (file === sheetPath) { - console.log(`Updating stylesheet from ${sheetPath}`); - for (const view of this.activeGraphs()) { - view.updateStylesheet().then(); - } - } - })); - this.setGlobalIcon(); - this.addChild(new ImageServer(this)); - } - setGlobalIcon() { - if (this.ribbonIcon) { - this.ribbonIcon.detach(); - } - if (this.settings.globalGraphRibbon) { - this.ribbonIcon = this.addRibbonIcon('ag-concentric', 'Juggl global graph', () => { - this.openGlobalGraph(); - }); - } - } - async openFileFromNode(node, newLeaf = false) { - const id = VizId.fromNode(node); - if (!(id.storeId === 'core')) { - return null; - } - let file = this.app.metadataCache.getFirstLinkpathDest(id.id, ''); - if (file) { - await this.openFile(file); - } - else { - // create dangling file - // todo: add default folder - const filename = id.id + '.md'; - file = await this.vault.create(filename, ''); - await this.openFile(file); - } - return file; - } - async openFile(file, newLeaf = false) { - await this.app.workspace.getLeaf(newLeaf).openFile(file); - } - async openLocalGraph(name) { - const leaf = this.app.workspace.splitActiveLeaf(this.settings.splitDirection); - // const query = this.localNeighborhoodCypher(name); - const neovisView = new JugglView(leaf, this.settings.graphSettings, this, [name]); - await leaf.open(neovisView); - } - async openGlobalGraph() { - const leaf = this.app.workspace.getLeaf(false); - // const query = this.localNeighborhoodCypher(name); - const names = this.app.vault.getFiles().map((f) => f.extension === 'md' ? f.basename : f.name); - if (names.length > 250) { - const modal = new GlobalWarningModal(this.app, async () => { - const neovisView = new JugglView(leaf, this.settings.globalGraphSettings, this, names); - await leaf.open(neovisView); - modal.close(); - }); - modal.open(); - } - else { - const neovisView = new JugglView(leaf, this.settings.globalGraphSettings, this, names); - await leaf.open(neovisView); - } - } - activeGraphs() { - // TODO: This is not a great method, no way to find back the inline graphs! - return this.app.workspace - .getLeavesOfType(JUGGL_VIEW_TYPE) - .map((l) => l.view.juggl); - } - async onunload() { - super.onunload(); - console.log('Unloading Juggl'); - this.app.workspace.detachLeavesOfType(JUGGL_NODES_VIEW_TYPE); - this.app.workspace.detachLeavesOfType(JUGGL_STYLE_VIEW_TYPE); - if (this.watcher) { - this.watcher.close(); - } - } - registerStore(store) { - this.stores.push(store); - } - registerCoreStore(store, name) { - if (!(store.storeId() === 'core')) { - throw new Error('Can only register IDataStores as core if their storeId is core'); - } - this.coreStores[name] = store; - } - createJuggl(el, settings, datastores, initialNodes) { - // Public constructor for Juggl instances. Used for the API. - if (!settings) { - settings = Object.assign({}, DefaultJugglSettings.embedSettings); - if (initialNodes) { - settings.expandInitial = false; - } - } - if (!datastores) { - datastores = this.defaultStores(); - } - return new Juggl(el, this, datastores, settings, initialNodes); - } - defaultStores() { - return { - dataStores: [this.coreStores[OBSIDIAN_STORE_NAME]].concat(this.stores), - coreStore: this.coreStores[OBSIDIAN_STORE_NAME], - }; - } -} -// Match around [[ and ]], and ensure content isn't a wikilnk closure -// This doesn't explicitly parse aliases. -JugglPlugin.CAT_DANGLING = 'dangling'; - -module.exports = JugglPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsic3JjL2V2ZW50cy50cyIsInNyYy9jb25zdGFudHMudHMiLCJub2RlX21vZHVsZXMvanVnZ2wtYXBpL2Rpc3QvaW5kZXgubWpzIiwic3JjL29ic2lkaWFuLXN0b3JlLnRzIiwibm9kZV9tb2R1bGVzL3N2ZWx0ZS9pbnRlcm5hbC9pbmRleC5tanMiLCJzcmMvdml6L3N0eWxlc2hlZXQudHMiLCJzcmMvdWkvc2V0dGluZ3MvQXBwZWFyYW5jZVNldHRpbmdzLnN2ZWx0ZSIsInNyYy91aS9Lb0ZpLnN2ZWx0ZSIsInNyYy9zZXR0aW5ncy50cyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2guZGVib3VuY2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaGVhcC9saWIvaGVhcC5qcyIsIm5vZGVfbW9kdWxlcy9oZWFwL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2N5dG9zY2FwZS9kaXN0L2N5dG9zY2FwZS5janMuanMiLCJub2RlX21vZHVsZXMvQG1kaS9qcy9tZGkuanMiLCJzcmMvdWkvaWNvbnMudHMiLCJzcmMvdWkvdG9vbGJhci9Ub29sYmFyQnV0dG9uLnN2ZWx0ZSIsInNyYy91aS9oZWxwLXZpZXcudHMiLCJzcmMvdWkvdG9vbGJhci9IZWxwQnV0dG9uLnN2ZWx0ZSIsInNyYy91aS90b29sYmFyL1Rvb2xiYXIuc3ZlbHRlIiwic3JjL3Zpei9sYXlvdXQtc2V0dGluZ3MudHMiLCJzcmMvdWkvU2F2ZVdvcmtzcGFjZUl0ZW0uc3ZlbHRlIiwic3JjL3VpL1NhdmVXb3Jrc3BhY2VzLnN2ZWx0ZSIsInNyYy91aS93b3Jrc3BhY2UtbW9kYWwudHMiLCJzcmMvdml6L3dvcmtzcGFjZXMvd29ya3NwYWNlLW1vZGUudHMiLCJzcmMvdWkvdG9vbGJhci9Ub29sYmFyTG9jYWwuc3ZlbHRlIiwic3JjL3Zpei9sb2NhbC1tb2RlLnRzIiwibm9kZV9tb2R1bGVzL3NlYXJjaC1xdWVyeS1wYXJzZXIvbGliL3NlYXJjaC1xdWVyeS1wYXJzZXIuanMiLCJub2RlX21vZHVsZXMvc2VhcmNoLXF1ZXJ5LXBhcnNlci9pbmRleC5qcyIsInNyYy92aXovcXVlcnktYnVpbGRlci50cyIsInNyYy92aXovdmlzdWFsaXphdGlvbi50cyIsInNyYy9pbWFnZS1zZXJ2ZXIudHMiLCJub2RlX21vZHVsZXMvY3l0b3NjYXBlLW5hdmlnYXRvci9jeXRvc2NhcGUtbmF2aWdhdG9yLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVOYW1lLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tYXRoLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2NvbnRhaW5zLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzVGFibGVFbGVtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0UGFyZW50Tm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy93aXRoaW4uanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9leHBhbmRUb0hhc2hNYXAuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcnJvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0VmFyaWF0aW9uLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNTY3JvbGxQYXJlbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvcmVjdFRvQ2xpZW50UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENsaXBwaW5nUmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZU9mZnNldHMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvb2Zmc2V0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QWx0QXhpcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZWJvdW5jZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZm9ybWF0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdW5pcXVlQnkuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9jcmVhdGVQb3BwZXIuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci1saXRlLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXIuanMiLCJub2RlX21vZHVsZXMvY3l0b3NjYXBlLXBvcHBlci9jeXRvc2NhcGUtcG9wcGVyLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvcG93ZXJncmFwaC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2xpbmtsZW5ndGhzLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvZGVzY2VudC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL3Zwc2MuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9yYnRyZWUuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9yZWN0YW5nbGUuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9wcXVldWUuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9zaG9ydGVzdHBhdGhzLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvZ2VvbS5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2hhbmRsZWRpc2Nvbm5lY3RlZC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2xheW91dC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2FkYXB0b3IuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9kM3YzYWRhcHRvci5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2QzdjRhZGFwdG9yLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvZDNhZGFwdG9yLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvZ3JpZHJvdXRlci5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2xheW91dDNkLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvYmF0Y2guanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2N5dG9zY2FwZS1jb2xhL2N5dG9zY2FwZS1jb2xhLmpzIiwibm9kZV9tb2R1bGVzL2xheW91dC1iYXNlL2xheW91dC1iYXNlLmpzIiwibm9kZV9tb2R1bGVzL2F2c2RmLWJhc2UvYXZzZGYtYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9jeXRvc2NhcGUtYXZzZGYvY3l0b3NjYXBlLWF2c2RmLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlQ2xlYXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzb2NJbmRleE9mLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlRGVsZXRlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlR2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlSGFzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fTGlzdENhY2hlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tDbGVhci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrRGVsZXRlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tHZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0hhcy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fU3ltYm9sLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UmF3VGFnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNGdW5jdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcmVKc0RhdGEuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VmFsdWUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXROYXRpdmUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoRGVsZXRlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEdldC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hIYXMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlQ2xlYXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXBEYXRhLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlSGFzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19NYXBDYWNoZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fU3RhY2suanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUVhY2guanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19kZWZpbmVQcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25WYWx1ZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc2lnblZhbHVlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weU9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUaW1lcy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3RMaWtlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FyZ3VtZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkZhbHNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc0J1ZmZlci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSW5kZXguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzTGVuZ3RoLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzVHlwZWRBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VVbmFyeS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc1R5cGVkQXJyYXkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faXNQcm90b3R5cGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gva2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ24uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5c0luLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzSW4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduSW4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUJ1ZmZlci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5RmlsdGVyLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViQXJyYXkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weVN5bWJvbHMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRQcm90b3R5cGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzSW4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9sc0luLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldEFsbEtleXMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5c0luLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fRGF0YVZpZXcuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFRhZy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fVWludDhBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lQXJyYXlCdWZmZXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVSZWdFeHAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVN5bWJvbC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUJ5VGFnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZU9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hcC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNNYXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNTZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNsb25lLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvY29uc3RhbnQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3JPd24uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRWFjaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VFYWNoLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pZGVudGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nhc3RGdW5jdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvZm9yRWFjaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvZWFjaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGaWx0ZXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUFkZC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlSGFzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0Q2FjaGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jYWNoZUhhcy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQXJyYXlzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwVG9BcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvQXJyYXkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEJ5VGFnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxPYmplY3RzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWxEZWVwLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXRjaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzU3RyaWN0Q29tcGFyYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hdGNoRGF0YS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL21lbW9pemUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19tZW1vaXplQ2FwcGVkLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9QYXRoLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlNYXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVG9TdHJpbmcuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3RvU3RyaW5nLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdFBhdGguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL190b0tleS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2dldC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VIYXNJbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1BhdGguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2hhc0luLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXNQcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQcm9wZXJ0eURlZXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3Byb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUl0ZXJhdGVlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9maWx0ZXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSGFzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9oYXMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzRW1wdHkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzVW5kZWZpbmVkLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hcC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbWFwLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlSZWR1Y2UuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVkdWNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9yZWR1Y2UuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzU3RyaW5nLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNjaWlTaXplLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzVW5pY29kZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3VuaWNvZGVTaXplLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nU2l6ZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvc2l6ZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdHJhbnNmb3JtLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faXNGbGF0dGVuYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGbGF0dGVuLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXBwbHkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyUmVzdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXRUb1N0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3Nob3J0T3V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9TdHJpbmcuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGaW5kSW5kZXguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYU4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpY3RJbmRleE9mLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUluZGV4T2YuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlc1dpdGguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVTZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5pcS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2VPYmplY3QuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3VuaW9uLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVZhbHVlcy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdmFsdWVzLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9sb2Rhc2guanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2dyYXBoLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi92ZXJzaW9uLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvanNvbi5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2NvbXBvbmVudHMuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2RhdGEvcHJpb3JpdHktcXVldWUuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2RpamtzdHJhLWFsbC5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3Rhcmphbi5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2ZpbmQtY3ljbGVzLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvZmxveWQtd2Fyc2hhbGwuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy90b3Bzb3J0LmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvaXMtYWN5Y2xpYy5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2Rmcy5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3Bvc3RvcmRlci5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3ByZW9yZGVyLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvcHJpbS5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9ncmFwaGxpYi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmVEZWVwLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJdGVyYXRlZUNhbGwuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2RlZmF1bHRzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlRmluZC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3RyaW1tZWRFbmRJbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUcmltLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC90b051bWJlci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdG9GaW5pdGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3RvSW50ZWdlci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvZmluZEluZGV4LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9maW5kLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9mbGF0dGVuLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9mb3JJbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbGFzdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbWFwVmFsdWVzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUV4dHJlbXVtLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUd0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9tYXguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25NZXJnZVZhbHVlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc1BsYWluT2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc2FmZUdldC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdG9QbGFpbk9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNZXJnZURlZXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2UuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbWVyZ2UuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTHQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL21pbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbWluQnkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL25vdy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUGlja0J5LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVBpY2suanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19mbGF0UmVzdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvcGljay5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSYW5nZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZVJhbmdlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9yYW5nZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTb3J0QnkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jb21wYXJlQXNjZW5kaW5nLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY29tcGFyZU11bHRpcGxlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU9yZGVyQnkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3NvcnRCeS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdW5pcXVlSWQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlWmlwT2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC96aXBPYmplY3QuanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL2xvZGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvZGF0YS9saXN0LmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9ncmVlZHktZmFzLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9hY3ljbGljLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi91dGlsLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9ub3JtYWxpemUuanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL3JhbmsvdXRpbC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvcmFuay9mZWFzaWJsZS10cmVlLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9yYW5rL25ldHdvcmstc2ltcGxleC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvcmFuay9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvcGFyZW50LWR1bW15LWNoYWlucy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvbmVzdGluZy1ncmFwaC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvYWRkLWJvcmRlci1zZWdtZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvY29vcmRpbmF0ZS1zeXN0ZW0uanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2luaXQtb3JkZXIuanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2Nyb3NzLWNvdW50LmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9iYXJ5Y2VudGVyLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9yZXNvbHZlLWNvbmZsaWN0cy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvc29ydC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvc29ydC1zdWJncmFwaC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvYnVpbGQtbGF5ZXItZ3JhcGguanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2FkZC1zdWJncmFwaC1jb25zdHJhaW50cy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL3Bvc2l0aW9uL2JrLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9wb3NpdGlvbi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvbGF5b3V0LmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9kZWJ1Zy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvdmVyc2lvbi5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jeXRvc2NhcGUtZGFncmUvY3l0b3NjYXBlLWRhZ3JlLmpzIiwibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL2Rpc3QvZDMtcXVhZHRyZWUuanMiLCJub2RlX21vZHVsZXMvZDMtZGlzcGF0Y2gvZGlzdC9kMy1kaXNwYXRjaC5qcyIsIm5vZGVfbW9kdWxlcy9kMy10aW1lci9kaXN0L2QzLXRpbWVyLmpzIiwibm9kZV9tb2R1bGVzL2QzLWZvcmNlL2Rpc3QvZDMtZm9yY2UuanMiLCJub2RlX21vZHVsZXMvY3l0b3NjYXBlLWQzLWZvcmNlL2N5dG9zY2FwZS1kMy1mb3JjZS5qcyIsIm5vZGVfbW9kdWxlcy9jeXRvc2NhcGUtZGJsY2xpY2svZGlzdC9pbmRleC5lc20uanMiLCJub2RlX21vZHVsZXMvY3l0b3NjYXBlLWN4dG1lbnUvY3l0b3NjYXBlLWN4dG1lbnUuanMiLCJzcmMvdml6L2p1Z2dsLXZpZXcudHMiLCJzcmMvcGFuZS9Ob2Rlc0xpc3Quc3ZlbHRlIiwic3JjL3BhbmUvTm9kZXNQYW5lLnN2ZWx0ZSIsInNyYy9wYW5lL2ljb24tbW9kYWwudHMiLCJzcmMvcGFuZS9TdHlsZUdyb3Vwcy5zdmVsdGUiLCJzcmMvcGFuZS9TdHlsZVBhbmUuc3ZlbHRlIiwic3JjL3BhbmUvdmlldy50cyIsInNyYy92aXovd29ya3NwYWNlcy93b3Jrc3BhY2UtbWFuYWdlci50cyIsInNyYy91aS9zZXR0aW5ncy9HbG9iYWxHcmFwaE1vZGFsLnN2ZWx0ZSIsInNyYy91aS9zZXR0aW5ncy9nbG9iYWwtZ3JhcGgtbW9kYWwudHMiLCJzcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGwsbnVsbCwiaW1wb3J0IHsgcGFyc2VGcm9udE1hdHRlclRhZ3MsIHBhcnNlRnJvbnRNYXR0ZXJTdHJpbmdBcnJheSB9IGZyb20gJ29ic2lkaWFuJztcblxuY29uc3QgQ0FUX0RBTkdMSU5HID0gJ2RhbmdsaW5nJztcbmNvbnN0IENPUkVfU1RPUkVfSUQgPSAnY29yZSc7XG5jbGFzcyBWaXpJZCB7XG4gICAgY29uc3RydWN0b3IoaWQsIHN0b3JlSWQpIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLnN0b3JlSWQgPSBzdG9yZUlkO1xuICAgIH1cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc3RvcmVJZH06JHt0aGlzLmlkfWA7XG4gICAgfVxuICAgIHRvSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tSWQoaWQpIHtcbiAgICAgICAgY29uc3Qgc3BsaXQgPSBpZC5zcGxpdCgnOicpO1xuICAgICAgICBjb25zdCBzdG9yZUlkID0gc3BsaXRbMF07XG4gICAgICAgIGNvbnN0IF9pZCA9IHNwbGl0LnNsaWNlKDEpLmpvaW4oJzonKTtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXpJZChfaWQsIHN0b3JlSWQpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbU5vZGUobm9kZSkge1xuICAgICAgICByZXR1cm4gVml6SWQuZnJvbUlkKG5vZGUuaWQoKSk7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tTm9kZXMobm9kZXMpIHtcbiAgICAgICAgcmV0dXJuIG5vZGVzLm1hcCgobikgPT4gVml6SWQuZnJvbU5vZGUobikpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbUZpbGUoZmlsZSkge1xuICAgICAgICByZXR1cm4gbmV3IFZpeklkKGZpbGUubmFtZSwgJ2NvcmUnKTtcbiAgICB9XG4gICAgc3RhdGljIHRvSWQoaWQsIHN0b3JlSWQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXpJZChpZCwgc3RvcmVJZCkudG9JZCgpO1xuICAgIH1cbn1cbmNvbnN0IF9wYXJzZVRhZ3MgPSBmdW5jdGlvbiAodGFncykge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4udGFnc1xuICAgICAgICAubWFwKCh0YWcpID0+IHtcbiAgICAgICAgdGFnID0gdGFnLnNsaWNlKDEpO1xuICAgICAgICBjb25zdCBoU3BsaXQgPSB0YWcuc3BsaXQoJy8nKTtcbiAgICAgICAgY29uc3QgdGFncyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGkgaW4gaFNwbGl0KSB7XG4gICAgICAgICAgICBjb25zdCBoVGFnID0gaFNwbGl0LnNsaWNlKDAsIHBhcnNlSW50KGkpICsgMSkuam9pbignLScpO1xuICAgICAgICAgICAgdGFncy5wdXNoKGB0YWctJHtoVGFnfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWdzO1xuICAgIH0pKTtcbn07XG5jb25zdCBnZXRDbGFzc2VzID0gZnVuY3Rpb24gKGZpbGUsIG1ldGFkYXRhQ2FjaGUpIHtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgICBjb25zdCBjbGFzc2VzID0gW107XG4gICAgICAgIGlmIChbJ3BuZycsICdqcGcnLCAnanBlZycsICdnaWYnLCAnYm1wJywgJ3N2ZycsICd0aWZmJ10uY29udGFpbnMoZmlsZS5leHRlbnNpb24pKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ2ltYWdlJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoWydtcDMnLCAnd2VibScsICd3YXYnLCAnbTRhJywgJ29nZycsICczZ3AnLCAnZmxhYyddLmNvbnRhaW5zKGZpbGUuZXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdhdWRpbycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKFsnbXA0JywgJ3dlYm0nLCAnb2d2J10uY29udGFpbnMoZmlsZS5leHRlbnNpb24pKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3ZpZGVvJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmlsZS5leHRlbnNpb24gPT09ICdwZGYnKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3BkZicpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgaXMgcmVwbGFjZWQgYnkgdGhlICdwYXRoJyBkYXRhIGF0dHJpYnV0ZS5cbiAgICAgICAgLy8gaWYgKCEoZmlsZS5wYXJlbnQubmFtZSA9PT0gJy8nIHx8IGZpbGUucGFyZW50Lm5hbWUgPT09ICcnKSkge1xuICAgICAgICAvLyAgIGNsYXNzZXMucHVzaChgZm9sZGVyLSR7ZmlsZS5wYXJlbnQubmFtZVxuICAgICAgICAvLyAgICAgICAucmVwbGFjZSgnICcsICdfJyl9YCk7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgY2xhc3Nlcy5wdXNoKCdyb290Jyk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKGZpbGUuZXh0ZW5zaW9uID09PSAnbWQnKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ25vdGUnKTtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlID0gbWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gICAgICAgICAgICBpZiAoY2FjaGU/LmZyb250bWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCdpbWFnZScgaW4gY2FjaGUuZnJvbnRtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdpbWFnZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoJ3RhZ3MnIGluIGNhY2hlLmZyb250bWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSBwYXJzZUZyb250TWF0dGVyVGFncyhjYWNoZS5mcm9udG1hdHRlcik7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goLi4uX3BhcnNlVGFncyh0YWdzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCdjc3NjbGFzcycgaW4gY2FjaGUuZnJvbnRtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xhenplcyA9IHBhcnNlRnJvbnRNYXR0ZXJTdHJpbmdBcnJheShjYWNoZS5mcm9udG1hdHRlciwgJ2Nzc2NsYXNzJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGF6emVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goLi4uY2xhenplcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FjaGU/LnRhZ3MpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goLi4uX3BhcnNlVGFncyhjYWNoZS50YWdzLm1hcCgodCkgPT4gdC50YWcpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ2ZpbGUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9XG4gICAgcmV0dXJuIFtDQVRfREFOR0xJTkddO1xufTtcbmNvbnN0IG5vZGVGcm9tRmlsZSA9IGFzeW5jIGZ1bmN0aW9uIChmaWxlLCBwbHVnaW4sIHNldHRpbmdzLCBpZCkge1xuICAgIGlmICghaWQpIHtcbiAgICAgICAgaWQgPSBWaXpJZC50b0lkKGZpbGUubmFtZSwgQ09SRV9TVE9SRV9JRCk7XG4gICAgfVxuICAgIGNvbnN0IGNhY2hlID0gcGx1Z2luLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcbiAgICBjb25zdCBuYW1lID0gZmlsZS5leHRlbnNpb24gPT09ICdtZCcgPyBmaWxlLmJhc2VuYW1lIDogZmlsZS5uYW1lO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBnZXRDbGFzc2VzKGZpbGUsIHBsdWdpbi5hcHAubWV0YWRhdGFDYWNoZSkuam9pbignICcpO1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIGlkLFxuICAgICAgICBuYW1lLFxuICAgICAgICBwYXRoOiBmaWxlLnBhdGgsXG4gICAgfTtcbiAgICBpZiAoWydwbmcnLCAnanBnJywgJ2pwZWcnLCAnZ2lmJywgJ2JtcCcsICdzdmcnLCAndGlmZiddLmNvbnRhaW5zKGZpbGUuZXh0ZW5zaW9uKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgZGF0YVsncmVzb3VyY2VfdXJsJ10gPSBgaHR0cDovL2xvY2FsaG9zdDoke3BsdWdpbi5zZXR0aW5ncy5pbWdTZXJ2ZXJQb3J0fS8ke2VuY29kZVVSSShmaWxlLnBhdGgpfWA7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggeyB9XG4gICAgfVxuICAgIGlmIChzZXR0aW5ncy5yZWFkQ29udGVudCAmJiBmaWxlLmV4dGVuc2lvbiA9PSAnbWQnKSB7XG4gICAgICAgIGRhdGFbJ2NvbnRlbnQnXSA9IGF3YWl0IHBsdWdpbi5hcHAudmF1bHQuY2FjaGVkUmVhZChmaWxlKTtcbiAgICB9XG4gICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBjYWNoZT8uZnJvbnRtYXR0ZXI7XG4gICAgaWYgKGZyb250bWF0dGVyKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGZyb250bWF0dGVyKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICBpZiAoIShrID09PSAncG9zaXRpb24nKSkge1xuICAgICAgICAgICAgICAgIGlmIChrID09PSAnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlRmllbGQgPSBmcm9udG1hdHRlcltrXTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHVybC4gdGhyb3dzIGVycm9yIG90aGVyd2lzZVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVSTChpbWFnZUZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba10gPSBpbWFnZUZpZWxkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba10gPSBgaHR0cDovL2xvY2FsaG9zdDoke3BsdWdpbi5zZXR0aW5ncy5pbWdTZXJ2ZXJQb3J0fS8ke2VuY29kZVVSSShpbWFnZUZpZWxkKX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFba10gPSBmcm9udG1hdHRlcltrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBncm91cDogJ25vZGVzJyxcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgY2xhc3NlczogY2xhc3NlcyxcbiAgICB9O1xufTtcbmNvbnN0IG5vZGVEYW5nbGluZyA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ3JvdXA6ICdub2RlcycsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGlkOiBWaXpJZC50b0lkKHBhdGgsIENPUkVfU1RPUkVfSUQpLFxuICAgICAgICAgICAgbmFtZTogcGF0aCxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NlczogJ2RhbmdsaW5nJyxcbiAgICB9O1xufTtcbmNvbnN0IHdpa2lsaW5rUmVnZXggPSAnXFxcXFtcXFxcWyhbXlxcXFxdXFxcXHJcXFxcbl0rPylcXFxcXVxcXFxdJztcbmNvbnN0IG5hbWVSZWdleCA9ICdbXlxcXFxXXFxcXGRdXFxcXHcqJztcbmNvbnN0IHJlZ2V4RXNjYXBlID0gZnVuY3Rpb24gKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuY29uc3QgcGFyc2VUeXBlZExpbmsgPSBmdW5jdGlvbiAobGluaywgbGluZSwgdHlwZWRMaW5rUHJlZml4KSB7XG4gICAgLy8gVE9ETzogVGhpcyBpcyBzb21ldGhpbmcgc3BlY2lmaWMgSSB1c2UsIGJ1dCBzaG91bGRuJ3Qga2VlcCBiZWluZyBpbiB0aGlzIHJlcG8uXG4gICAgY29uc3QgcmVnZXhQdWJsaXNoZWRJbiA9IG5ldyBSZWdFeHAoYF4ke3JlZ2V4RXNjYXBlKHR5cGVkTGlua1ByZWZpeCl9IChwdWJsaXNoZWRJbikgKFxcXFxkXFxcXGRcXFxcZFxcXFxkKSAoJHt3aWtpbGlua1JlZ2V4fSw/ICopKyRgKTtcbiAgICBjb25zdCBtYXRjaFBJID0gcmVnZXhQdWJsaXNoZWRJbi5leGVjKGxpbmUpO1xuICAgIGlmICghKG1hdGNoUEkgPT09IG51bGwpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjbGFzczogJ3R5cGUtcHVibGlzaGVkSW4nLFxuICAgICAgICAgICAgaXNJbmxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIHllYXI6IG1hdGNoUElbMl0sXG4gICAgICAgICAgICAgICAgY29udGV4dDogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3B1Ymxpc2hlZEluJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIEludHVpdGlvbjogU3RhcnQgd2l0aCB0aGUgdHlwZWQgbGluayBwcmVmaXguIFRoZW4gYSBuZW80aiBuYW1lIChuYW1lUmVnZXgpLlxuICAgIC8vIFRoZW4gb25lIG9yIG1vcmUgb2YgdGhlIHdpa2lsaW5rIGdyb3VwOiB3aWtpbGluayByZWdleCBzZXBhcmF0ZWQgYnkgb3B0aW9uYWwgY29tbWEgYW5kIG11bHRpcGxlIHNwYWNlc1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cmVnZXhFc2NhcGUodHlwZWRMaW5rUHJlZml4KX0gKCR7bmFtZVJlZ2V4fSkgKCR7d2lraWxpbmtSZWdleH0sPyAqKSskYCk7XG4gICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKGxpbmUpO1xuICAgIGNvbnN0IHNwbGl0TGluayA9IGxpbmsub3JpZ2luYWwuc3BsaXQoJ3wnKTtcbiAgICBsZXQgYWxpYXMgPSBudWxsO1xuICAgIGlmIChzcGxpdExpbmsubGVuZ3RoID4gMSkge1xuICAgICAgICBhbGlhcyA9IHNwbGl0TGluay5zbGljZSgxKS5qb2luKCkuc2xpY2UoMCwgLTIpO1xuICAgIH1cbiAgICBpZiAoIShtYXRjaCA9PT0gbnVsbCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsYXNzOiBgdHlwZS0ke21hdGNoWzFdfWAsXG4gICAgICAgICAgICBpc0lubGluZTogZmFsc2UsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgYWxpYXM6IGFsaWFzLFxuICAgICAgICAgICAgICAgIGNvbnRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6IG1hdGNoWzFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuY29uc3QgcGFyc2VSZWZDYWNoZSA9IGZ1bmN0aW9uIChyZWYsIGNvbnRlbnQsIGlkLCBzb3VyY2UsIHRhcmdldCwgdHlwZWRMaW5rUHJlZml4KSB7XG4gICAgY29uc3QgbGluZSA9IGNvbnRlbnRbcmVmLnBvc2l0aW9uLnN0YXJ0LmxpbmVdO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgICBpZDogaWQsXG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICB0YXJnZXQ6IHRhcmdldCxcbiAgICAgICAgY29udGV4dDogbGluZSxcbiAgICAgICAgZWRnZUNvdW50OiAxLFxuICAgIH07XG4gICAgY29uc3Qgc3BsaXRMaW5rID0gcmVmLm9yaWdpbmFsLnNwbGl0KCd8Jyk7XG4gICAgaWYgKHNwbGl0TGluay5sZW5ndGggPiAxKSB7XG4gICAgICAgIGRhdGFbJ2FsaWFzJ10gPSBzcGxpdExpbmsuc2xpY2UoMSkuam9pbigpLnNsaWNlKDAsIC0yKTtcbiAgICB9XG4gICAgbGV0IGNsYXNzZXMgPSAnJztcbiAgICBjb25zdCB0eXBlZExpbmsgPSBwYXJzZVR5cGVkTGluayhyZWYsIGxpbmUsIHR5cGVkTGlua1ByZWZpeCk7XG4gICAgaWYgKHR5cGVkTGluayA9PT0gbnVsbCkge1xuICAgICAgICBjbGFzc2VzID0gYCR7Y2xhc3Nlc30gaW5saW5lYDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGRhdGEgPSB7IC4uLnR5cGVkTGluay5wcm9wZXJ0aWVzLCAuLi5kYXRhIH07XG4gICAgICAgIGNsYXNzZXMgPSBgJHtjbGFzc2VzfSAke3R5cGVkTGluay5jbGFzc31gO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBncm91cDogJ2VkZ2VzJyxcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgY2xhc3NlczogY2xhc3NlcyxcbiAgICB9O1xufTtcblxuY29uc3QgZ2V0UGx1Z2luID0gZnVuY3Rpb24gKGFwcCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoJ2p1Z2dsJyBpbiBhcHAucGx1Z2lucy5wbHVnaW5zKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIGFwcC5wbHVnaW5zLnBsdWdpbnNbJ2p1Z2dsJ107XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IHsgVml6SWQsIGdldENsYXNzZXMsIGdldFBsdWdpbiwgbm9kZURhbmdsaW5nLCBub2RlRnJvbUZpbGUsIHBhcnNlUmVmQ2FjaGUsIHBhcnNlVHlwZWRMaW5rIH07XG4iLG51bGwsImZ1bmN0aW9uIG5vb3AoKSB7IH1cbmNvbnN0IGlkZW50aXR5ID0geCA9PiB4O1xuZnVuY3Rpb24gYXNzaWduKHRhciwgc3JjKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGZvciAoY29uc3QgayBpbiBzcmMpXG4gICAgICAgIHRhcltrXSA9IHNyY1trXTtcbiAgICByZXR1cm4gdGFyO1xufVxuZnVuY3Rpb24gaXNfcHJvbWlzZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSAnZnVuY3Rpb24nO1xufVxuZnVuY3Rpb24gYWRkX2xvY2F0aW9uKGVsZW1lbnQsIGZpbGUsIGxpbmUsIGNvbHVtbiwgY2hhcikge1xuICAgIGVsZW1lbnQuX19zdmVsdGVfbWV0YSA9IHtcbiAgICAgICAgbG9jOiB7IGZpbGUsIGxpbmUsIGNvbHVtbiwgY2hhciB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHJ1bihmbikge1xuICAgIHJldHVybiBmbigpO1xufVxuZnVuY3Rpb24gYmxhbmtfb2JqZWN0KCkge1xuICAgIHJldHVybiBPYmplY3QuY3JlYXRlKG51bGwpO1xufVxuZnVuY3Rpb24gcnVuX2FsbChmbnMpIHtcbiAgICBmbnMuZm9yRWFjaChydW4pO1xufVxuZnVuY3Rpb24gaXNfZnVuY3Rpb24odGhpbmcpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaW5nID09PSAnZnVuY3Rpb24nO1xufVxuZnVuY3Rpb24gc2FmZV9ub3RfZXF1YWwoYSwgYikge1xuICAgIHJldHVybiBhICE9IGEgPyBiID09IGIgOiBhICE9PSBiIHx8ICgoYSAmJiB0eXBlb2YgYSA9PT0gJ29iamVjdCcpIHx8IHR5cGVvZiBhID09PSAnZnVuY3Rpb24nKTtcbn1cbmxldCBzcmNfdXJsX2VxdWFsX2FuY2hvcjtcbmZ1bmN0aW9uIHNyY191cmxfZXF1YWwoZWxlbWVudF9zcmMsIHVybCkge1xuICAgIGlmICghc3JjX3VybF9lcXVhbF9hbmNob3IpIHtcbiAgICAgICAgc3JjX3VybF9lcXVhbF9hbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgfVxuICAgIHNyY191cmxfZXF1YWxfYW5jaG9yLmhyZWYgPSB1cmw7XG4gICAgcmV0dXJuIGVsZW1lbnRfc3JjID09PSBzcmNfdXJsX2VxdWFsX2FuY2hvci5ocmVmO1xufVxuZnVuY3Rpb24gbm90X2VxdWFsKGEsIGIpIHtcbiAgICByZXR1cm4gYSAhPSBhID8gYiA9PSBiIDogYSAhPT0gYjtcbn1cbmZ1bmN0aW9uIGlzX2VtcHR5KG9iaikge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMDtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlX3N0b3JlKHN0b3JlLCBuYW1lKSB7XG4gICAgaWYgKHN0b3JlICE9IG51bGwgJiYgdHlwZW9mIHN0b3JlLnN1YnNjcmliZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke25hbWV9JyBpcyBub3QgYSBzdG9yZSB3aXRoIGEgJ3N1YnNjcmliZScgbWV0aG9kYCk7XG4gICAgfVxufVxuZnVuY3Rpb24gc3Vic2NyaWJlKHN0b3JlLCAuLi5jYWxsYmFja3MpIHtcbiAgICBpZiAoc3RvcmUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG4gICAgY29uc3QgdW5zdWIgPSBzdG9yZS5zdWJzY3JpYmUoLi4uY2FsbGJhY2tzKTtcbiAgICByZXR1cm4gdW5zdWIudW5zdWJzY3JpYmUgPyAoKSA9PiB1bnN1Yi51bnN1YnNjcmliZSgpIDogdW5zdWI7XG59XG5mdW5jdGlvbiBnZXRfc3RvcmVfdmFsdWUoc3RvcmUpIHtcbiAgICBsZXQgdmFsdWU7XG4gICAgc3Vic2NyaWJlKHN0b3JlLCBfID0+IHZhbHVlID0gXykoKTtcbiAgICByZXR1cm4gdmFsdWU7XG59XG5mdW5jdGlvbiBjb21wb25lbnRfc3Vic2NyaWJlKGNvbXBvbmVudCwgc3RvcmUsIGNhbGxiYWNrKSB7XG4gICAgY29tcG9uZW50LiQkLm9uX2Rlc3Ryb3kucHVzaChzdWJzY3JpYmUoc3RvcmUsIGNhbGxiYWNrKSk7XG59XG5mdW5jdGlvbiBjcmVhdGVfc2xvdChkZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIGZuKSB7XG4gICAgaWYgKGRlZmluaXRpb24pIHtcbiAgICAgICAgY29uc3Qgc2xvdF9jdHggPSBnZXRfc2xvdF9jb250ZXh0KGRlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZm4pO1xuICAgICAgICByZXR1cm4gZGVmaW5pdGlvblswXShzbG90X2N0eCk7XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0X3Nsb3RfY29udGV4dChkZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIGZuKSB7XG4gICAgcmV0dXJuIGRlZmluaXRpb25bMV0gJiYgZm5cbiAgICAgICAgPyBhc3NpZ24oJCRzY29wZS5jdHguc2xpY2UoKSwgZGVmaW5pdGlvblsxXShmbihjdHgpKSlcbiAgICAgICAgOiAkJHNjb3BlLmN0eDtcbn1cbmZ1bmN0aW9uIGdldF9zbG90X2NoYW5nZXMoZGVmaW5pdGlvbiwgJCRzY29wZSwgZGlydHksIGZuKSB7XG4gICAgaWYgKGRlZmluaXRpb25bMl0gJiYgZm4pIHtcbiAgICAgICAgY29uc3QgbGV0cyA9IGRlZmluaXRpb25bMl0oZm4oZGlydHkpKTtcbiAgICAgICAgaWYgKCQkc2NvcGUuZGlydHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGxldHM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBsZXRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VkID0gW107XG4gICAgICAgICAgICBjb25zdCBsZW4gPSBNYXRoLm1heCgkJHNjb3BlLmRpcnR5Lmxlbmd0aCwgbGV0cy5sZW5ndGgpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIG1lcmdlZFtpXSA9ICQkc2NvcGUuZGlydHlbaV0gfCBsZXRzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1lcmdlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJCRzY29wZS5kaXJ0eSB8IGxldHM7XG4gICAgfVxuICAgIHJldHVybiAkJHNjb3BlLmRpcnR5O1xufVxuZnVuY3Rpb24gdXBkYXRlX3Nsb3RfYmFzZShzbG90LCBzbG90X2RlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgc2xvdF9jaGFuZ2VzLCBnZXRfc2xvdF9jb250ZXh0X2ZuKSB7XG4gICAgaWYgKHNsb3RfY2hhbmdlcykge1xuICAgICAgICBjb25zdCBzbG90X2NvbnRleHQgPSBnZXRfc2xvdF9jb250ZXh0KHNsb3RfZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBnZXRfc2xvdF9jb250ZXh0X2ZuKTtcbiAgICAgICAgc2xvdC5wKHNsb3RfY29udGV4dCwgc2xvdF9jaGFuZ2VzKTtcbiAgICB9XG59XG5mdW5jdGlvbiB1cGRhdGVfc2xvdChzbG90LCBzbG90X2RlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZGlydHksIGdldF9zbG90X2NoYW5nZXNfZm4sIGdldF9zbG90X2NvbnRleHRfZm4pIHtcbiAgICBjb25zdCBzbG90X2NoYW5nZXMgPSBnZXRfc2xvdF9jaGFuZ2VzKHNsb3RfZGVmaW5pdGlvbiwgJCRzY29wZSwgZGlydHksIGdldF9zbG90X2NoYW5nZXNfZm4pO1xuICAgIHVwZGF0ZV9zbG90X2Jhc2Uoc2xvdCwgc2xvdF9kZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIHNsb3RfY2hhbmdlcywgZ2V0X3Nsb3RfY29udGV4dF9mbik7XG59XG5mdW5jdGlvbiBnZXRfYWxsX2RpcnR5X2Zyb21fc2NvcGUoJCRzY29wZSkge1xuICAgIGlmICgkJHNjb3BlLmN0eC5sZW5ndGggPiAzMikge1xuICAgICAgICBjb25zdCBkaXJ0eSA9IFtdO1xuICAgICAgICBjb25zdCBsZW5ndGggPSAkJHNjb3BlLmN0eC5sZW5ndGggLyAzMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZGlydHlbaV0gPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlydHk7XG4gICAgfVxuICAgIHJldHVybiAtMTtcbn1cbmZ1bmN0aW9uIGV4Y2x1ZGVfaW50ZXJuYWxfcHJvcHMocHJvcHMpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGsgaW4gcHJvcHMpXG4gICAgICAgIGlmIChrWzBdICE9PSAnJCcpXG4gICAgICAgICAgICByZXN1bHRba10gPSBwcm9wc1trXTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gY29tcHV0ZV9yZXN0X3Byb3BzKHByb3BzLCBrZXlzKSB7XG4gICAgY29uc3QgcmVzdCA9IHt9O1xuICAgIGtleXMgPSBuZXcgU2V0KGtleXMpO1xuICAgIGZvciAoY29uc3QgayBpbiBwcm9wcylcbiAgICAgICAgaWYgKCFrZXlzLmhhcyhrKSAmJiBrWzBdICE9PSAnJCcpXG4gICAgICAgICAgICByZXN0W2tdID0gcHJvcHNba107XG4gICAgcmV0dXJuIHJlc3Q7XG59XG5mdW5jdGlvbiBjb21wdXRlX3Nsb3RzKHNsb3RzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgaW4gc2xvdHMpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gb25jZShmbikge1xuICAgIGxldCByYW4gPSBmYWxzZTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKHJhbilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcmFuID0gdHJ1ZTtcbiAgICAgICAgZm4uY2FsbCh0aGlzLCAuLi5hcmdzKTtcbiAgICB9O1xufVxuZnVuY3Rpb24gbnVsbF90b19lbXB0eSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIHNldF9zdG9yZV92YWx1ZShzdG9yZSwgcmV0LCB2YWx1ZSkge1xuICAgIHN0b3JlLnNldCh2YWx1ZSk7XG4gICAgcmV0dXJuIHJldDtcbn1cbmNvbnN0IGhhc19wcm9wID0gKG9iaiwgcHJvcCkgPT4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG5mdW5jdGlvbiBhY3Rpb25fZGVzdHJveWVyKGFjdGlvbl9yZXN1bHQpIHtcbiAgICByZXR1cm4gYWN0aW9uX3Jlc3VsdCAmJiBpc19mdW5jdGlvbihhY3Rpb25fcmVzdWx0LmRlc3Ryb3kpID8gYWN0aW9uX3Jlc3VsdC5kZXN0cm95IDogbm9vcDtcbn1cblxuY29uc3QgaXNfY2xpZW50ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG5sZXQgbm93ID0gaXNfY2xpZW50XG4gICAgPyAoKSA9PiB3aW5kb3cucGVyZm9ybWFuY2Uubm93KClcbiAgICA6ICgpID0+IERhdGUubm93KCk7XG5sZXQgcmFmID0gaXNfY2xpZW50ID8gY2IgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNiKSA6IG5vb3A7XG4vLyB1c2VkIGludGVybmFsbHkgZm9yIHRlc3RpbmdcbmZ1bmN0aW9uIHNldF9ub3coZm4pIHtcbiAgICBub3cgPSBmbjtcbn1cbmZ1bmN0aW9uIHNldF9yYWYoZm4pIHtcbiAgICByYWYgPSBmbjtcbn1cblxuY29uc3QgdGFza3MgPSBuZXcgU2V0KCk7XG5mdW5jdGlvbiBydW5fdGFza3Mobm93KSB7XG4gICAgdGFza3MuZm9yRWFjaCh0YXNrID0+IHtcbiAgICAgICAgaWYgKCF0YXNrLmMobm93KSkge1xuICAgICAgICAgICAgdGFza3MuZGVsZXRlKHRhc2spO1xuICAgICAgICAgICAgdGFzay5mKCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGFza3Muc2l6ZSAhPT0gMClcbiAgICAgICAgcmFmKHJ1bl90YXNrcyk7XG59XG4vKipcbiAqIEZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkhXG4gKi9cbmZ1bmN0aW9uIGNsZWFyX2xvb3BzKCkge1xuICAgIHRhc2tzLmNsZWFyKCk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgdGFzayB0aGF0IHJ1bnMgb24gZWFjaCByYWYgZnJhbWVcbiAqIHVudGlsIGl0IHJldHVybnMgYSBmYWxzeSB2YWx1ZSBvciBpcyBhYm9ydGVkXG4gKi9cbmZ1bmN0aW9uIGxvb3AoY2FsbGJhY2spIHtcbiAgICBsZXQgdGFzaztcbiAgICBpZiAodGFza3Muc2l6ZSA9PT0gMClcbiAgICAgICAgcmFmKHJ1bl90YXNrcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvbWlzZTogbmV3IFByb21pc2UoZnVsZmlsbCA9PiB7XG4gICAgICAgICAgICB0YXNrcy5hZGQodGFzayA9IHsgYzogY2FsbGJhY2ssIGY6IGZ1bGZpbGwgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBhYm9ydCgpIHtcbiAgICAgICAgICAgIHRhc2tzLmRlbGV0ZSh0YXNrKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbi8vIFRyYWNrIHdoaWNoIG5vZGVzIGFyZSBjbGFpbWVkIGR1cmluZyBoeWRyYXRpb24uIFVuY2xhaW1lZCBub2RlcyBjYW4gdGhlbiBiZSByZW1vdmVkIGZyb20gdGhlIERPTVxuLy8gYXQgdGhlIGVuZCBvZiBoeWRyYXRpb24gd2l0aG91dCB0b3VjaGluZyB0aGUgcmVtYWluaW5nIG5vZGVzLlxubGV0IGlzX2h5ZHJhdGluZyA9IGZhbHNlO1xuZnVuY3Rpb24gc3RhcnRfaHlkcmF0aW5nKCkge1xuICAgIGlzX2h5ZHJhdGluZyA9IHRydWU7XG59XG5mdW5jdGlvbiBlbmRfaHlkcmF0aW5nKCkge1xuICAgIGlzX2h5ZHJhdGluZyA9IGZhbHNlO1xufVxuZnVuY3Rpb24gdXBwZXJfYm91bmQobG93LCBoaWdoLCBrZXksIHZhbHVlKSB7XG4gICAgLy8gUmV0dXJuIGZpcnN0IGluZGV4IG9mIHZhbHVlIGxhcmdlciB0aGFuIGlucHV0IHZhbHVlIGluIHRoZSByYW5nZSBbbG93LCBoaWdoKVxuICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgIGNvbnN0IG1pZCA9IGxvdyArICgoaGlnaCAtIGxvdykgPj4gMSk7XG4gICAgICAgIGlmIChrZXkobWlkKSA8PSB2YWx1ZSkge1xuICAgICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxvdztcbn1cbmZ1bmN0aW9uIGluaXRfaHlkcmF0ZSh0YXJnZXQpIHtcbiAgICBpZiAodGFyZ2V0Lmh5ZHJhdGVfaW5pdClcbiAgICAgICAgcmV0dXJuO1xuICAgIHRhcmdldC5oeWRyYXRlX2luaXQgPSB0cnVlO1xuICAgIC8vIFdlIGtub3cgdGhhdCBhbGwgY2hpbGRyZW4gaGF2ZSBjbGFpbV9vcmRlciB2YWx1ZXMgc2luY2UgdGhlIHVuY2xhaW1lZCBoYXZlIGJlZW4gZGV0YWNoZWQgaWYgdGFyZ2V0IGlzIG5vdCA8aGVhZD5cbiAgICBsZXQgY2hpbGRyZW4gPSB0YXJnZXQuY2hpbGROb2RlcztcbiAgICAvLyBJZiB0YXJnZXQgaXMgPGhlYWQ+LCB0aGVyZSBtYXkgYmUgY2hpbGRyZW4gd2l0aG91dCBjbGFpbV9vcmRlclxuICAgIGlmICh0YXJnZXQubm9kZU5hbWUgPT09ICdIRUFEJykge1xuICAgICAgICBjb25zdCBteUNoaWxkcmVuID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgICAgIGlmIChub2RlLmNsYWltX29yZGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBteUNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2hpbGRyZW4gPSBteUNoaWxkcmVuO1xuICAgIH1cbiAgICAvKlxuICAgICogUmVvcmRlciBjbGFpbWVkIGNoaWxkcmVuIG9wdGltYWxseS5cbiAgICAqIFdlIGNhbiByZW9yZGVyIGNsYWltZWQgY2hpbGRyZW4gb3B0aW1hbGx5IGJ5IGZpbmRpbmcgdGhlIGxvbmdlc3Qgc3Vic2VxdWVuY2Ugb2ZcbiAgICAqIG5vZGVzIHRoYXQgYXJlIGFscmVhZHkgY2xhaW1lZCBpbiBvcmRlciBhbmQgb25seSBtb3ZpbmcgdGhlIHJlc3QuIFRoZSBsb25nZXN0XG4gICAgKiBzdWJzZXF1ZW5jZSBzdWJzZXF1ZW5jZSBvZiBub2RlcyB0aGF0IGFyZSBjbGFpbWVkIGluIG9yZGVyIGNhbiBiZSBmb3VuZCBieVxuICAgICogY29tcHV0aW5nIHRoZSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2Ugb2YgLmNsYWltX29yZGVyIHZhbHVlcy5cbiAgICAqXG4gICAgKiBUaGlzIGFsZ29yaXRobSBpcyBvcHRpbWFsIGluIGdlbmVyYXRpbmcgdGhlIGxlYXN0IGFtb3VudCBvZiByZW9yZGVyIG9wZXJhdGlvbnNcbiAgICAqIHBvc3NpYmxlLlxuICAgICpcbiAgICAqIFByb29mOlxuICAgICogV2Uga25vdyB0aGF0LCBnaXZlbiBhIHNldCBvZiByZW9yZGVyaW5nIG9wZXJhdGlvbnMsIHRoZSBub2RlcyB0aGF0IGRvIG5vdCBtb3ZlXG4gICAgKiBhbHdheXMgZm9ybSBhbiBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlLCBzaW5jZSB0aGV5IGRvIG5vdCBtb3ZlIGFtb25nIGVhY2ggb3RoZXJcbiAgICAqIG1lYW5pbmcgdGhhdCB0aGV5IG11c3QgYmUgYWxyZWFkeSBvcmRlcmVkIGFtb25nIGVhY2ggb3RoZXIuIFRodXMsIHRoZSBtYXhpbWFsXG4gICAgKiBzZXQgb2Ygbm9kZXMgdGhhdCBkbyBub3QgbW92ZSBmb3JtIGEgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlLlxuICAgICovXG4gICAgLy8gQ29tcHV0ZSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2VcbiAgICAvLyBtOiBzdWJzZXF1ZW5jZSBsZW5ndGggaiA9PiBpbmRleCBrIG9mIHNtYWxsZXN0IHZhbHVlIHRoYXQgZW5kcyBhbiBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlIG9mIGxlbmd0aCBqXG4gICAgY29uc3QgbSA9IG5ldyBJbnQzMkFycmF5KGNoaWxkcmVuLmxlbmd0aCArIDEpO1xuICAgIC8vIFByZWRlY2Vzc29yIGluZGljZXMgKyAxXG4gICAgY29uc3QgcCA9IG5ldyBJbnQzMkFycmF5KGNoaWxkcmVuLmxlbmd0aCk7XG4gICAgbVswXSA9IC0xO1xuICAgIGxldCBsb25nZXN0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjaGlsZHJlbltpXS5jbGFpbV9vcmRlcjtcbiAgICAgICAgLy8gRmluZCB0aGUgbGFyZ2VzdCBzdWJzZXF1ZW5jZSBsZW5ndGggc3VjaCB0aGF0IGl0IGVuZHMgaW4gYSB2YWx1ZSBsZXNzIHRoYW4gb3VyIGN1cnJlbnQgdmFsdWVcbiAgICAgICAgLy8gdXBwZXJfYm91bmQgcmV0dXJucyBmaXJzdCBncmVhdGVyIHZhbHVlLCBzbyB3ZSBzdWJ0cmFjdCBvbmVcbiAgICAgICAgLy8gd2l0aCBmYXN0IHBhdGggZm9yIHdoZW4gd2UgYXJlIG9uIHRoZSBjdXJyZW50IGxvbmdlc3Qgc3Vic2VxdWVuY2VcbiAgICAgICAgY29uc3Qgc2VxTGVuID0gKChsb25nZXN0ID4gMCAmJiBjaGlsZHJlblttW2xvbmdlc3RdXS5jbGFpbV9vcmRlciA8PSBjdXJyZW50KSA/IGxvbmdlc3QgKyAxIDogdXBwZXJfYm91bmQoMSwgbG9uZ2VzdCwgaWR4ID0+IGNoaWxkcmVuW21baWR4XV0uY2xhaW1fb3JkZXIsIGN1cnJlbnQpKSAtIDE7XG4gICAgICAgIHBbaV0gPSBtW3NlcUxlbl0gKyAxO1xuICAgICAgICBjb25zdCBuZXdMZW4gPSBzZXFMZW4gKyAxO1xuICAgICAgICAvLyBXZSBjYW4gZ3VhcmFudGVlIHRoYXQgY3VycmVudCBpcyB0aGUgc21hbGxlc3QgdmFsdWUuIE90aGVyd2lzZSwgd2Ugd291bGQgaGF2ZSBnZW5lcmF0ZWQgYSBsb25nZXIgc2VxdWVuY2UuXG4gICAgICAgIG1bbmV3TGVuXSA9IGk7XG4gICAgICAgIGxvbmdlc3QgPSBNYXRoLm1heChuZXdMZW4sIGxvbmdlc3QpO1xuICAgIH1cbiAgICAvLyBUaGUgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlIG9mIG5vZGVzIChpbml0aWFsbHkgcmV2ZXJzZWQpXG4gICAgY29uc3QgbGlzID0gW107XG4gICAgLy8gVGhlIHJlc3Qgb2YgdGhlIG5vZGVzLCBub2RlcyB0aGF0IHdpbGwgYmUgbW92ZWRcbiAgICBjb25zdCB0b01vdmUgPSBbXTtcbiAgICBsZXQgbGFzdCA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7XG4gICAgZm9yIChsZXQgY3VyID0gbVtsb25nZXN0XSArIDE7IGN1ciAhPSAwOyBjdXIgPSBwW2N1ciAtIDFdKSB7XG4gICAgICAgIGxpcy5wdXNoKGNoaWxkcmVuW2N1ciAtIDFdKTtcbiAgICAgICAgZm9yICg7IGxhc3QgPj0gY3VyOyBsYXN0LS0pIHtcbiAgICAgICAgICAgIHRvTW92ZS5wdXNoKGNoaWxkcmVuW2xhc3RdKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0LS07XG4gICAgfVxuICAgIGZvciAoOyBsYXN0ID49IDA7IGxhc3QtLSkge1xuICAgICAgICB0b01vdmUucHVzaChjaGlsZHJlbltsYXN0XSk7XG4gICAgfVxuICAgIGxpcy5yZXZlcnNlKCk7XG4gICAgLy8gV2Ugc29ydCB0aGUgbm9kZXMgYmVpbmcgbW92ZWQgdG8gZ3VhcmFudGVlIHRoYXQgdGhlaXIgaW5zZXJ0aW9uIG9yZGVyIG1hdGNoZXMgdGhlIGNsYWltIG9yZGVyXG4gICAgdG9Nb3ZlLnNvcnQoKGEsIGIpID0+IGEuY2xhaW1fb3JkZXIgLSBiLmNsYWltX29yZGVyKTtcbiAgICAvLyBGaW5hbGx5LCB3ZSBtb3ZlIHRoZSBub2Rlc1xuICAgIGZvciAobGV0IGkgPSAwLCBqID0gMDsgaSA8IHRvTW92ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB3aGlsZSAoaiA8IGxpcy5sZW5ndGggJiYgdG9Nb3ZlW2ldLmNsYWltX29yZGVyID49IGxpc1tqXS5jbGFpbV9vcmRlcikge1xuICAgICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IGogPCBsaXMubGVuZ3RoID8gbGlzW2pdIDogbnVsbDtcbiAgICAgICAgdGFyZ2V0Lmluc2VydEJlZm9yZSh0b01vdmVbaV0sIGFuY2hvcik7XG4gICAgfVxufVxuZnVuY3Rpb24gYXBwZW5kKHRhcmdldCwgbm9kZSkge1xuICAgIHRhcmdldC5hcHBlbmRDaGlsZChub2RlKTtcbn1cbmZ1bmN0aW9uIGFwcGVuZF9zdHlsZXModGFyZ2V0LCBzdHlsZV9zaGVldF9pZCwgc3R5bGVzKSB7XG4gICAgY29uc3QgYXBwZW5kX3N0eWxlc190byA9IGdldF9yb290X2Zvcl9zdHlsZSh0YXJnZXQpO1xuICAgIGlmICghYXBwZW5kX3N0eWxlc190by5nZXRFbGVtZW50QnlJZChzdHlsZV9zaGVldF9pZCkpIHtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBlbGVtZW50KCdzdHlsZScpO1xuICAgICAgICBzdHlsZS5pZCA9IHN0eWxlX3NoZWV0X2lkO1xuICAgICAgICBzdHlsZS50ZXh0Q29udGVudCA9IHN0eWxlcztcbiAgICAgICAgYXBwZW5kX3N0eWxlc2hlZXQoYXBwZW5kX3N0eWxlc190bywgc3R5bGUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldF9yb290X2Zvcl9zdHlsZShub2RlKSB7XG4gICAgaWYgKCFub2RlKVxuICAgICAgICByZXR1cm4gZG9jdW1lbnQ7XG4gICAgY29uc3Qgcm9vdCA9IG5vZGUuZ2V0Um9vdE5vZGUgPyBub2RlLmdldFJvb3ROb2RlKCkgOiBub2RlLm93bmVyRG9jdW1lbnQ7XG4gICAgaWYgKHJvb3QgJiYgcm9vdC5ob3N0KSB7XG4gICAgICAgIHJldHVybiByb290O1xuICAgIH1cbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50O1xufVxuZnVuY3Rpb24gYXBwZW5kX2VtcHR5X3N0eWxlc2hlZXQobm9kZSkge1xuICAgIGNvbnN0IHN0eWxlX2VsZW1lbnQgPSBlbGVtZW50KCdzdHlsZScpO1xuICAgIGFwcGVuZF9zdHlsZXNoZWV0KGdldF9yb290X2Zvcl9zdHlsZShub2RlKSwgc3R5bGVfZWxlbWVudCk7XG4gICAgcmV0dXJuIHN0eWxlX2VsZW1lbnQ7XG59XG5mdW5jdGlvbiBhcHBlbmRfc3R5bGVzaGVldChub2RlLCBzdHlsZSkge1xuICAgIGFwcGVuZChub2RlLmhlYWQgfHwgbm9kZSwgc3R5bGUpO1xufVxuZnVuY3Rpb24gYXBwZW5kX2h5ZHJhdGlvbih0YXJnZXQsIG5vZGUpIHtcbiAgICBpZiAoaXNfaHlkcmF0aW5nKSB7XG4gICAgICAgIGluaXRfaHlkcmF0ZSh0YXJnZXQpO1xuICAgICAgICBpZiAoKHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkID09PSB1bmRlZmluZWQpIHx8ICgodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgIT09IG51bGwpICYmICh0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZC5wYXJlbnRFbGVtZW50ICE9PSB0YXJnZXQpKSkge1xuICAgICAgICAgICAgdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPSB0YXJnZXQuZmlyc3RDaGlsZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBTa2lwIG5vZGVzIG9mIHVuZGVmaW5lZCBvcmRlcmluZ1xuICAgICAgICB3aGlsZSAoKHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkICE9PSBudWxsKSAmJiAodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQuY2xhaW1fb3JkZXIgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkID0gdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQubmV4dFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUgIT09IHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkKSB7XG4gICAgICAgICAgICAvLyBXZSBvbmx5IGluc2VydCBpZiB0aGUgb3JkZXJpbmcgb2YgdGhpcyBub2RlIHNob3VsZCBiZSBtb2RpZmllZCBvciB0aGUgcGFyZW50IG5vZGUgaXMgbm90IHRhcmdldFxuICAgICAgICAgICAgaWYgKG5vZGUuY2xhaW1fb3JkZXIgIT09IHVuZGVmaW5lZCB8fCBub2RlLnBhcmVudE5vZGUgIT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5pbnNlcnRCZWZvcmUobm9kZSwgdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKG5vZGUucGFyZW50Tm9kZSAhPT0gdGFyZ2V0IHx8IG5vZGUubmV4dFNpYmxpbmcgIT09IG51bGwpIHtcbiAgICAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKG5vZGUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGluc2VydCh0YXJnZXQsIG5vZGUsIGFuY2hvcikge1xuICAgIHRhcmdldC5pbnNlcnRCZWZvcmUobm9kZSwgYW5jaG9yIHx8IG51bGwpO1xufVxuZnVuY3Rpb24gaW5zZXJ0X2h5ZHJhdGlvbih0YXJnZXQsIG5vZGUsIGFuY2hvcikge1xuICAgIGlmIChpc19oeWRyYXRpbmcgJiYgIWFuY2hvcikge1xuICAgICAgICBhcHBlbmRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKG5vZGUucGFyZW50Tm9kZSAhPT0gdGFyZ2V0IHx8IG5vZGUubmV4dFNpYmxpbmcgIT0gYW5jaG9yKSB7XG4gICAgICAgIHRhcmdldC5pbnNlcnRCZWZvcmUobm9kZSwgYW5jaG9yIHx8IG51bGwpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRldGFjaChub2RlKSB7XG4gICAgbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpO1xufVxuZnVuY3Rpb24gZGVzdHJveV9lYWNoKGl0ZXJhdGlvbnMsIGRldGFjaGluZykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlcmF0aW9ucy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBpZiAoaXRlcmF0aW9uc1tpXSlcbiAgICAgICAgICAgIGl0ZXJhdGlvbnNbaV0uZChkZXRhY2hpbmcpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVsZW1lbnQobmFtZSkge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUpO1xufVxuZnVuY3Rpb24gZWxlbWVudF9pcyhuYW1lLCBpcykge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUsIHsgaXMgfSk7XG59XG5mdW5jdGlvbiBvYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzKG9iaiwgZXhjbHVkZSkge1xuICAgIGNvbnN0IHRhcmdldCA9IHt9O1xuICAgIGZvciAoY29uc3QgayBpbiBvYmopIHtcbiAgICAgICAgaWYgKGhhc19wcm9wKG9iaiwgaylcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICYmIGV4Y2x1ZGUuaW5kZXhPZihrKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHRhcmdldFtrXSA9IG9ialtrXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuZnVuY3Rpb24gc3ZnX2VsZW1lbnQobmFtZSkge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgbmFtZSk7XG59XG5mdW5jdGlvbiB0ZXh0KGRhdGEpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGF0YSk7XG59XG5mdW5jdGlvbiBzcGFjZSgpIHtcbiAgICByZXR1cm4gdGV4dCgnICcpO1xufVxuZnVuY3Rpb24gZW1wdHkoKSB7XG4gICAgcmV0dXJuIHRleHQoJycpO1xufVxuZnVuY3Rpb24gbGlzdGVuKG5vZGUsIGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKSB7XG4gICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgICByZXR1cm4gKCkgPT4gbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIHByZXZlbnRfZGVmYXVsdChmbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCBldmVudCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHN0b3BfcHJvcGFnYXRpb24oZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBmbi5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gc2VsZihmbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzKVxuICAgICAgICAgICAgZm4uY2FsbCh0aGlzLCBldmVudCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHRydXN0ZWQoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKGV2ZW50LmlzVHJ1c3RlZClcbiAgICAgICAgICAgIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuICAgIH07XG59XG5mdW5jdGlvbiBhdHRyKG5vZGUsIGF0dHJpYnV0ZSwgdmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbClcbiAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICBlbHNlIGlmIChub2RlLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpICE9PSB2YWx1ZSlcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSk7XG59XG5mdW5jdGlvbiBzZXRfYXR0cmlidXRlcyhub2RlLCBhdHRyaWJ1dGVzKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobm9kZS5fX3Byb3RvX18pO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXNba2V5XSA9PSBudWxsKSB7XG4gICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ3N0eWxlJykge1xuICAgICAgICAgICAgbm9kZS5zdHlsZS5jc3NUZXh0ID0gYXR0cmlidXRlc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ19fdmFsdWUnKSB7XG4gICAgICAgICAgICBub2RlLnZhbHVlID0gbm9kZVtrZXldID0gYXR0cmlidXRlc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRlc2NyaXB0b3JzW2tleV0gJiYgZGVzY3JpcHRvcnNba2V5XS5zZXQpIHtcbiAgICAgICAgICAgIG5vZGVba2V5XSA9IGF0dHJpYnV0ZXNba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGF0dHIobm9kZSwga2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gc2V0X3N2Z19hdHRyaWJ1dGVzKG5vZGUsIGF0dHJpYnV0ZXMpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgIGF0dHIobm9kZSwga2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHNldF9jdXN0b21fZWxlbWVudF9kYXRhKG5vZGUsIHByb3AsIHZhbHVlKSB7XG4gICAgaWYgKHByb3AgaW4gbm9kZSkge1xuICAgICAgICBub2RlW3Byb3BdID0gdHlwZW9mIG5vZGVbcHJvcF0gPT09ICdib29sZWFuJyAmJiB2YWx1ZSA9PT0gJycgPyB0cnVlIDogdmFsdWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBhdHRyKG5vZGUsIHByb3AsIHZhbHVlKTtcbiAgICB9XG59XG5mdW5jdGlvbiB4bGlua19hdHRyKG5vZGUsIGF0dHJpYnV0ZSwgdmFsdWUpIHtcbiAgICBub2RlLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJywgYXR0cmlidXRlLCB2YWx1ZSk7XG59XG5mdW5jdGlvbiBnZXRfYmluZGluZ19ncm91cF92YWx1ZShncm91cCwgX192YWx1ZSwgY2hlY2tlZCkge1xuICAgIGNvbnN0IHZhbHVlID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGdyb3VwW2ldLmNoZWNrZWQpXG4gICAgICAgICAgICB2YWx1ZS5hZGQoZ3JvdXBbaV0uX192YWx1ZSk7XG4gICAgfVxuICAgIGlmICghY2hlY2tlZCkge1xuICAgICAgICB2YWx1ZS5kZWxldGUoX192YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBBcnJheS5mcm9tKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIHRvX251bWJlcih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJycgPyBudWxsIDogK3ZhbHVlO1xufVxuZnVuY3Rpb24gdGltZV9yYW5nZXNfdG9fYXJyYXkocmFuZ2VzKSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBhcnJheS5wdXNoKHsgc3RhcnQ6IHJhbmdlcy5zdGFydChpKSwgZW5kOiByYW5nZXMuZW5kKGkpIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG59XG5mdW5jdGlvbiBjaGlsZHJlbihlbGVtZW50KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5jaGlsZE5vZGVzKTtcbn1cbmZ1bmN0aW9uIGluaXRfY2xhaW1faW5mbyhub2Rlcykge1xuICAgIGlmIChub2Rlcy5jbGFpbV9pbmZvID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbm9kZXMuY2xhaW1faW5mbyA9IHsgbGFzdF9pbmRleDogMCwgdG90YWxfY2xhaW1lZDogMCB9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNsYWltX25vZGUobm9kZXMsIHByZWRpY2F0ZSwgcHJvY2Vzc05vZGUsIGNyZWF0ZU5vZGUsIGRvbnRVcGRhdGVMYXN0SW5kZXggPSBmYWxzZSkge1xuICAgIC8vIFRyeSB0byBmaW5kIG5vZGVzIGluIGFuIG9yZGVyIHN1Y2ggdGhhdCB3ZSBsZW5ndGhlbiB0aGUgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlXG4gICAgaW5pdF9jbGFpbV9pbmZvKG5vZGVzKTtcbiAgICBjb25zdCByZXN1bHROb2RlID0gKCgpID0+IHtcbiAgICAgICAgLy8gV2UgZmlyc3QgdHJ5IHRvIGZpbmQgYW4gZWxlbWVudCBhZnRlciB0aGUgcHJldmlvdXMgb25lXG4gICAgICAgIGZvciAobGV0IGkgPSBub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXg7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICAgICAgaWYgKHByZWRpY2F0ZShub2RlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gcHJvY2Vzc05vZGUobm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXNbaV0gPSByZXBsYWNlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFkb250VXBkYXRlTGFzdEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyd2lzZSwgd2UgdHJ5IHRvIGZpbmQgb25lIGJlZm9yZVxuICAgICAgICAvLyBXZSBpdGVyYXRlIGluIHJldmVyc2Ugc28gdGhhdCB3ZSBkb24ndCBnbyB0b28gZmFyIGJhY2tcbiAgICAgICAgZm9yIChsZXQgaSA9IG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XG4gICAgICAgICAgICBpZiAocHJlZGljYXRlKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBwcm9jZXNzTm9kZShub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBub2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub2Rlc1tpXSA9IHJlcGxhY2VtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWRvbnRVcGRhdGVMYXN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4ID0gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVwbGFjZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBzcGxpY2VkIGJlZm9yZSB0aGUgbGFzdF9pbmRleCwgd2UgZGVjcmVhc2UgaXRcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4LS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIElmIHdlIGNhbid0IGZpbmQgYW55IG1hdGNoaW5nIG5vZGUsIHdlIGNyZWF0ZSBhIG5ldyBvbmVcbiAgICAgICAgcmV0dXJuIGNyZWF0ZU5vZGUoKTtcbiAgICB9KSgpO1xuICAgIHJlc3VsdE5vZGUuY2xhaW1fb3JkZXIgPSBub2Rlcy5jbGFpbV9pbmZvLnRvdGFsX2NsYWltZWQ7XG4gICAgbm9kZXMuY2xhaW1faW5mby50b3RhbF9jbGFpbWVkICs9IDE7XG4gICAgcmV0dXJuIHJlc3VsdE5vZGU7XG59XG5mdW5jdGlvbiBjbGFpbV9lbGVtZW50X2Jhc2Uobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMsIGNyZWF0ZV9lbGVtZW50KSB7XG4gICAgcmV0dXJuIGNsYWltX25vZGUobm9kZXMsIChub2RlKSA9PiBub2RlLm5vZGVOYW1lID09PSBuYW1lLCAobm9kZSkgPT4ge1xuICAgICAgICBjb25zdCByZW1vdmUgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBub2RlLmF0dHJpYnV0ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IG5vZGUuYXR0cmlidXRlc1tqXTtcbiAgICAgICAgICAgIGlmICghYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0pIHtcbiAgICAgICAgICAgICAgICByZW1vdmUucHVzaChhdHRyaWJ1dGUubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVtb3ZlLmZvckVhY2godiA9PiBub2RlLnJlbW92ZUF0dHJpYnV0ZSh2KSk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSwgKCkgPT4gY3JlYXRlX2VsZW1lbnQobmFtZSkpO1xufVxuZnVuY3Rpb24gY2xhaW1fZWxlbWVudChub2RlcywgbmFtZSwgYXR0cmlidXRlcykge1xuICAgIHJldHVybiBjbGFpbV9lbGVtZW50X2Jhc2Uobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMsIGVsZW1lbnQpO1xufVxuZnVuY3Rpb24gY2xhaW1fc3ZnX2VsZW1lbnQobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMpIHtcbiAgICByZXR1cm4gY2xhaW1fZWxlbWVudF9iYXNlKG5vZGVzLCBuYW1lLCBhdHRyaWJ1dGVzLCBzdmdfZWxlbWVudCk7XG59XG5mdW5jdGlvbiBjbGFpbV90ZXh0KG5vZGVzLCBkYXRhKSB7XG4gICAgcmV0dXJuIGNsYWltX25vZGUobm9kZXMsIChub2RlKSA9PiBub2RlLm5vZGVUeXBlID09PSAzLCAobm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhU3RyID0gJycgKyBkYXRhO1xuICAgICAgICBpZiAobm9kZS5kYXRhLnN0YXJ0c1dpdGgoZGF0YVN0cikpIHtcbiAgICAgICAgICAgIGlmIChub2RlLmRhdGEubGVuZ3RoICE9PSBkYXRhU3RyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlLnNwbGl0VGV4dChkYXRhU3RyLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBub2RlLmRhdGEgPSBkYXRhU3RyO1xuICAgICAgICB9XG4gICAgfSwgKCkgPT4gdGV4dChkYXRhKSwgdHJ1ZSAvLyBUZXh0IG5vZGVzIHNob3VsZCBub3QgdXBkYXRlIGxhc3QgaW5kZXggc2luY2UgaXQgaXMgbGlrZWx5IG5vdCB3b3J0aCBpdCB0byBlbGltaW5hdGUgYW4gaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSBvZiBhY3R1YWwgZWxlbWVudHNcbiAgICApO1xufVxuZnVuY3Rpb24gY2xhaW1fc3BhY2Uobm9kZXMpIHtcbiAgICByZXR1cm4gY2xhaW1fdGV4dChub2RlcywgJyAnKTtcbn1cbmZ1bmN0aW9uIGZpbmRfY29tbWVudChub2RlcywgdGV4dCwgc3RhcnQpIHtcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBub2Rlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSA4IC8qIGNvbW1lbnQgbm9kZSAqLyAmJiBub2RlLnRleHRDb250ZW50LnRyaW0oKSA9PT0gdGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGVzLmxlbmd0aDtcbn1cbmZ1bmN0aW9uIGNsYWltX2h0bWxfdGFnKG5vZGVzKSB7XG4gICAgLy8gZmluZCBodG1sIG9wZW5pbmcgdGFnXG4gICAgY29uc3Qgc3RhcnRfaW5kZXggPSBmaW5kX2NvbW1lbnQobm9kZXMsICdIVE1MX1RBR19TVEFSVCcsIDApO1xuICAgIGNvbnN0IGVuZF9pbmRleCA9IGZpbmRfY29tbWVudChub2RlcywgJ0hUTUxfVEFHX0VORCcsIHN0YXJ0X2luZGV4KTtcbiAgICBpZiAoc3RhcnRfaW5kZXggPT09IGVuZF9pbmRleCkge1xuICAgICAgICByZXR1cm4gbmV3IEh0bWxUYWdIeWRyYXRpb24oKTtcbiAgICB9XG4gICAgaW5pdF9jbGFpbV9pbmZvKG5vZGVzKTtcbiAgICBjb25zdCBodG1sX3RhZ19ub2RlcyA9IG5vZGVzLnNwbGljZShzdGFydF9pbmRleCwgZW5kX2luZGV4ICsgMSk7XG4gICAgZGV0YWNoKGh0bWxfdGFnX25vZGVzWzBdKTtcbiAgICBkZXRhY2goaHRtbF90YWdfbm9kZXNbaHRtbF90YWdfbm9kZXMubGVuZ3RoIC0gMV0pO1xuICAgIGNvbnN0IGNsYWltZWRfbm9kZXMgPSBodG1sX3RhZ19ub2Rlcy5zbGljZSgxLCBodG1sX3RhZ19ub2Rlcy5sZW5ndGggLSAxKTtcbiAgICBmb3IgKGNvbnN0IG4gb2YgY2xhaW1lZF9ub2Rlcykge1xuICAgICAgICBuLmNsYWltX29yZGVyID0gbm9kZXMuY2xhaW1faW5mby50b3RhbF9jbGFpbWVkO1xuICAgICAgICBub2Rlcy5jbGFpbV9pbmZvLnRvdGFsX2NsYWltZWQgKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBIdG1sVGFnSHlkcmF0aW9uKGNsYWltZWRfbm9kZXMpO1xufVxuZnVuY3Rpb24gc2V0X2RhdGEodGV4dCwgZGF0YSkge1xuICAgIGRhdGEgPSAnJyArIGRhdGE7XG4gICAgaWYgKHRleHQud2hvbGVUZXh0ICE9PSBkYXRhKVxuICAgICAgICB0ZXh0LmRhdGEgPSBkYXRhO1xufVxuZnVuY3Rpb24gc2V0X2lucHV0X3ZhbHVlKGlucHV0LCB2YWx1ZSkge1xuICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XG59XG5mdW5jdGlvbiBzZXRfaW5wdXRfdHlwZShpbnB1dCwgdHlwZSkge1xuICAgIHRyeSB7XG4gICAgICAgIGlucHV0LnR5cGUgPSB0eXBlO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgfVxufVxuZnVuY3Rpb24gc2V0X3N0eWxlKG5vZGUsIGtleSwgdmFsdWUsIGltcG9ydGFudCkge1xuICAgIG5vZGUuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSwgaW1wb3J0YW50ID8gJ2ltcG9ydGFudCcgOiAnJyk7XG59XG5mdW5jdGlvbiBzZWxlY3Rfb3B0aW9uKHNlbGVjdCwgdmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHNlbGVjdC5vcHRpb25zW2ldO1xuICAgICAgICBpZiAob3B0aW9uLl9fdmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gLTE7IC8vIG5vIG9wdGlvbiBzaG91bGQgYmUgc2VsZWN0ZWRcbn1cbmZ1bmN0aW9uIHNlbGVjdF9vcHRpb25zKHNlbGVjdCwgdmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHNlbGVjdC5vcHRpb25zW2ldO1xuICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB+dmFsdWUuaW5kZXhPZihvcHRpb24uX192YWx1ZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gc2VsZWN0X3ZhbHVlKHNlbGVjdCkge1xuICAgIGNvbnN0IHNlbGVjdGVkX29wdGlvbiA9IHNlbGVjdC5xdWVyeVNlbGVjdG9yKCc6Y2hlY2tlZCcpIHx8IHNlbGVjdC5vcHRpb25zWzBdO1xuICAgIHJldHVybiBzZWxlY3RlZF9vcHRpb24gJiYgc2VsZWN0ZWRfb3B0aW9uLl9fdmFsdWU7XG59XG5mdW5jdGlvbiBzZWxlY3RfbXVsdGlwbGVfdmFsdWUoc2VsZWN0KSB7XG4gICAgcmV0dXJuIFtdLm1hcC5jYWxsKHNlbGVjdC5xdWVyeVNlbGVjdG9yQWxsKCc6Y2hlY2tlZCcpLCBvcHRpb24gPT4gb3B0aW9uLl9fdmFsdWUpO1xufVxuLy8gdW5mb3J0dW5hdGVseSB0aGlzIGNhbid0IGJlIGEgY29uc3RhbnQgYXMgdGhhdCB3b3VsZG4ndCBiZSB0cmVlLXNoYWtlYWJsZVxuLy8gc28gd2UgY2FjaGUgdGhlIHJlc3VsdCBpbnN0ZWFkXG5sZXQgY3Jvc3NvcmlnaW47XG5mdW5jdGlvbiBpc19jcm9zc29yaWdpbigpIHtcbiAgICBpZiAoY3Jvc3NvcmlnaW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjcm9zc29yaWdpbiA9IGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICB2b2lkIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjcm9zc29yaWdpbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNyb3Nzb3JpZ2luO1xufVxuZnVuY3Rpb24gYWRkX3Jlc2l6ZV9saXN0ZW5lcihub2RlLCBmbikge1xuICAgIGNvbnN0IGNvbXB1dGVkX3N0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICBpZiAoY29tcHV0ZWRfc3R5bGUucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgICAgIG5vZGUuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIH1cbiAgICBjb25zdCBpZnJhbWUgPSBlbGVtZW50KCdpZnJhbWUnKTtcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7ICcgK1xuICAgICAgICAnb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyOiAwOyBvcGFjaXR5OiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTsgei1pbmRleDogLTE7Jyk7XG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgIGlmcmFtZS50YWJJbmRleCA9IC0xO1xuICAgIGNvbnN0IGNyb3Nzb3JpZ2luID0gaXNfY3Jvc3NvcmlnaW4oKTtcbiAgICBsZXQgdW5zdWJzY3JpYmU7XG4gICAgaWYgKGNyb3Nzb3JpZ2luKSB7XG4gICAgICAgIGlmcmFtZS5zcmMgPSBcImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+b25yZXNpemU9ZnVuY3Rpb24oKXtwYXJlbnQucG9zdE1lc3NhZ2UoMCwnKicpfTwvc2NyaXB0PlwiO1xuICAgICAgICB1bnN1YnNjcmliZSA9IGxpc3Rlbih3aW5kb3csICdtZXNzYWdlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09PSBpZnJhbWUuY29udGVudFdpbmRvdylcbiAgICAgICAgICAgICAgICBmbigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmcmFtZS5zcmMgPSAnYWJvdXQ6YmxhbmsnO1xuICAgICAgICBpZnJhbWUub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUgPSBsaXN0ZW4oaWZyYW1lLmNvbnRlbnRXaW5kb3csICdyZXNpemUnLCBmbik7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFwcGVuZChub2RlLCBpZnJhbWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChjcm9zc29yaWdpbikge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1bnN1YnNjcmliZSAmJiBpZnJhbWUuY29udGVudFdpbmRvdykge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBkZXRhY2goaWZyYW1lKTtcbiAgICB9O1xufVxuZnVuY3Rpb24gdG9nZ2xlX2NsYXNzKGVsZW1lbnQsIG5hbWUsIHRvZ2dsZSkge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0W3RvZ2dsZSA/ICdhZGQnIDogJ3JlbW92ZSddKG5hbWUpO1xufVxuZnVuY3Rpb24gY3VzdG9tX2V2ZW50KHR5cGUsIGRldGFpbCwgYnViYmxlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuICAgIGUuaW5pdEN1c3RvbUV2ZW50KHR5cGUsIGJ1YmJsZXMsIGZhbHNlLCBkZXRhaWwpO1xuICAgIHJldHVybiBlO1xufVxuZnVuY3Rpb24gcXVlcnlfc2VsZWN0b3JfYWxsKHNlbGVjdG9yLCBwYXJlbnQgPSBkb2N1bWVudC5ib2R5KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20ocGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTtcbn1cbmNsYXNzIEh0bWxUYWcge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmUgPSB0aGlzLm4gPSBudWxsO1xuICAgIH1cbiAgICBjKGh0bWwpIHtcbiAgICAgICAgdGhpcy5oKGh0bWwpO1xuICAgIH1cbiAgICBtKGh0bWwsIHRhcmdldCwgYW5jaG9yID0gbnVsbCkge1xuICAgICAgICBpZiAoIXRoaXMuZSkge1xuICAgICAgICAgICAgdGhpcy5lID0gZWxlbWVudCh0YXJnZXQubm9kZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy50ID0gdGFyZ2V0O1xuICAgICAgICAgICAgdGhpcy5jKGh0bWwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaShhbmNob3IpO1xuICAgIH1cbiAgICBoKGh0bWwpIHtcbiAgICAgICAgdGhpcy5lLmlubmVySFRNTCA9IGh0bWw7XG4gICAgICAgIHRoaXMubiA9IEFycmF5LmZyb20odGhpcy5lLmNoaWxkTm9kZXMpO1xuICAgIH1cbiAgICBpKGFuY2hvcikge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubi5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgaW5zZXJ0KHRoaXMudCwgdGhpcy5uW2ldLCBhbmNob3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHAoaHRtbCkge1xuICAgICAgICB0aGlzLmQoKTtcbiAgICAgICAgdGhpcy5oKGh0bWwpO1xuICAgICAgICB0aGlzLmkodGhpcy5hKTtcbiAgICB9XG4gICAgZCgpIHtcbiAgICAgICAgdGhpcy5uLmZvckVhY2goZGV0YWNoKTtcbiAgICB9XG59XG5jbGFzcyBIdG1sVGFnSHlkcmF0aW9uIGV4dGVuZHMgSHRtbFRhZyB7XG4gICAgY29uc3RydWN0b3IoY2xhaW1lZF9ub2Rlcykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmUgPSB0aGlzLm4gPSBudWxsO1xuICAgICAgICB0aGlzLmwgPSBjbGFpbWVkX25vZGVzO1xuICAgIH1cbiAgICBjKGh0bWwpIHtcbiAgICAgICAgaWYgKHRoaXMubCkge1xuICAgICAgICAgICAgdGhpcy5uID0gdGhpcy5sO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIuYyhodG1sKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpKGFuY2hvcikge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubi5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgaW5zZXJ0X2h5ZHJhdGlvbih0aGlzLnQsIHRoaXMubltpXSwgYW5jaG9yKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGF0dHJpYnV0ZV90b19vYmplY3QoYXR0cmlidXRlcykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgcmVzdWx0W2F0dHJpYnV0ZS5uYW1lXSA9IGF0dHJpYnV0ZS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldF9jdXN0b21fZWxlbWVudHNfc2xvdHMoZWxlbWVudCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGVsZW1lbnQuY2hpbGROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIHJlc3VsdFtub2RlLnNsb3QgfHwgJ2RlZmF1bHQnXSA9IHRydWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuY29uc3QgYWN0aXZlX2RvY3MgPSBuZXcgU2V0KCk7XG5sZXQgYWN0aXZlID0gMDtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJrc2t5YXBwL3N0cmluZy1oYXNoL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG5mdW5jdGlvbiBoYXNoKHN0cikge1xuICAgIGxldCBoYXNoID0gNTM4MTtcbiAgICBsZXQgaSA9IHN0ci5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSlcbiAgICAgICAgaGFzaCA9ICgoaGFzaCA8PCA1KSAtIGhhc2gpIF4gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGhhc2ggPj4+IDA7XG59XG5mdW5jdGlvbiBjcmVhdGVfcnVsZShub2RlLCBhLCBiLCBkdXJhdGlvbiwgZGVsYXksIGVhc2UsIGZuLCB1aWQgPSAwKSB7XG4gICAgY29uc3Qgc3RlcCA9IDE2LjY2NiAvIGR1cmF0aW9uO1xuICAgIGxldCBrZXlmcmFtZXMgPSAne1xcbic7XG4gICAgZm9yIChsZXQgcCA9IDA7IHAgPD0gMTsgcCArPSBzdGVwKSB7XG4gICAgICAgIGNvbnN0IHQgPSBhICsgKGIgLSBhKSAqIGVhc2UocCk7XG4gICAgICAgIGtleWZyYW1lcyArPSBwICogMTAwICsgYCV7JHtmbih0LCAxIC0gdCl9fVxcbmA7XG4gICAgfVxuICAgIGNvbnN0IHJ1bGUgPSBrZXlmcmFtZXMgKyBgMTAwJSB7JHtmbihiLCAxIC0gYil9fVxcbn1gO1xuICAgIGNvbnN0IG5hbWUgPSBgX19zdmVsdGVfJHtoYXNoKHJ1bGUpfV8ke3VpZH1gO1xuICAgIGNvbnN0IGRvYyA9IGdldF9yb290X2Zvcl9zdHlsZShub2RlKTtcbiAgICBhY3RpdmVfZG9jcy5hZGQoZG9jKTtcbiAgICBjb25zdCBzdHlsZXNoZWV0ID0gZG9jLl9fc3ZlbHRlX3N0eWxlc2hlZXQgfHwgKGRvYy5fX3N2ZWx0ZV9zdHlsZXNoZWV0ID0gYXBwZW5kX2VtcHR5X3N0eWxlc2hlZXQobm9kZSkuc2hlZXQpO1xuICAgIGNvbnN0IGN1cnJlbnRfcnVsZXMgPSBkb2MuX19zdmVsdGVfcnVsZXMgfHwgKGRvYy5fX3N2ZWx0ZV9ydWxlcyA9IHt9KTtcbiAgICBpZiAoIWN1cnJlbnRfcnVsZXNbbmFtZV0pIHtcbiAgICAgICAgY3VycmVudF9ydWxlc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIHN0eWxlc2hlZXQuaW5zZXJ0UnVsZShgQGtleWZyYW1lcyAke25hbWV9ICR7cnVsZX1gLCBzdHlsZXNoZWV0LmNzc1J1bGVzLmxlbmd0aCk7XG4gICAgfVxuICAgIGNvbnN0IGFuaW1hdGlvbiA9IG5vZGUuc3R5bGUuYW5pbWF0aW9uIHx8ICcnO1xuICAgIG5vZGUuc3R5bGUuYW5pbWF0aW9uID0gYCR7YW5pbWF0aW9uID8gYCR7YW5pbWF0aW9ufSwgYCA6ICcnfSR7bmFtZX0gJHtkdXJhdGlvbn1tcyBsaW5lYXIgJHtkZWxheX1tcyAxIGJvdGhgO1xuICAgIGFjdGl2ZSArPSAxO1xuICAgIHJldHVybiBuYW1lO1xufVxuZnVuY3Rpb24gZGVsZXRlX3J1bGUobm9kZSwgbmFtZSkge1xuICAgIGNvbnN0IHByZXZpb3VzID0gKG5vZGUuc3R5bGUuYW5pbWF0aW9uIHx8ICcnKS5zcGxpdCgnLCAnKTtcbiAgICBjb25zdCBuZXh0ID0gcHJldmlvdXMuZmlsdGVyKG5hbWVcbiAgICAgICAgPyBhbmltID0+IGFuaW0uaW5kZXhPZihuYW1lKSA8IDAgLy8gcmVtb3ZlIHNwZWNpZmljIGFuaW1hdGlvblxuICAgICAgICA6IGFuaW0gPT4gYW5pbS5pbmRleE9mKCdfX3N2ZWx0ZScpID09PSAtMSAvLyByZW1vdmUgYWxsIFN2ZWx0ZSBhbmltYXRpb25zXG4gICAgKTtcbiAgICBjb25zdCBkZWxldGVkID0gcHJldmlvdXMubGVuZ3RoIC0gbmV4dC5sZW5ndGg7XG4gICAgaWYgKGRlbGV0ZWQpIHtcbiAgICAgICAgbm9kZS5zdHlsZS5hbmltYXRpb24gPSBuZXh0LmpvaW4oJywgJyk7XG4gICAgICAgIGFjdGl2ZSAtPSBkZWxldGVkO1xuICAgICAgICBpZiAoIWFjdGl2ZSlcbiAgICAgICAgICAgIGNsZWFyX3J1bGVzKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gY2xlYXJfcnVsZXMoKSB7XG4gICAgcmFmKCgpID0+IHtcbiAgICAgICAgaWYgKGFjdGl2ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgYWN0aXZlX2RvY3MuZm9yRWFjaChkb2MgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3R5bGVzaGVldCA9IGRvYy5fX3N2ZWx0ZV9zdHlsZXNoZWV0O1xuICAgICAgICAgICAgbGV0IGkgPSBzdHlsZXNoZWV0LmNzc1J1bGVzLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpLS0pXG4gICAgICAgICAgICAgICAgc3R5bGVzaGVldC5kZWxldGVSdWxlKGkpO1xuICAgICAgICAgICAgZG9jLl9fc3ZlbHRlX3J1bGVzID0ge307XG4gICAgICAgIH0pO1xuICAgICAgICBhY3RpdmVfZG9jcy5jbGVhcigpO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVfYW5pbWF0aW9uKG5vZGUsIGZyb20sIGZuLCBwYXJhbXMpIHtcbiAgICBpZiAoIWZyb20pXG4gICAgICAgIHJldHVybiBub29wO1xuICAgIGNvbnN0IHRvID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoZnJvbS5sZWZ0ID09PSB0by5sZWZ0ICYmIGZyb20ucmlnaHQgPT09IHRvLnJpZ2h0ICYmIGZyb20udG9wID09PSB0by50b3AgJiYgZnJvbS5ib3R0b20gPT09IHRvLmJvdHRvbSlcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgY29uc3QgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gMzAwLCBlYXNpbmcgPSBpZGVudGl0eSwgXG4gICAgLy8gQHRzLWlnbm9yZSB0b2RvOiBzaG91bGQgdGhpcyBiZSBzZXBhcmF0ZWQgZnJvbSBkZXN0cnVjdHVyaW5nPyBPciBzdGFydC9lbmQgYWRkZWQgdG8gcHVibGljIGFwaSBhbmQgZG9jdW1lbnRhdGlvbj9cbiAgICBzdGFydDogc3RhcnRfdGltZSA9IG5vdygpICsgZGVsYXksIFxuICAgIC8vIEB0cy1pZ25vcmUgdG9kbzpcbiAgICBlbmQgPSBzdGFydF90aW1lICsgZHVyYXRpb24sIHRpY2sgPSBub29wLCBjc3MgfSA9IGZuKG5vZGUsIHsgZnJvbSwgdG8gfSwgcGFyYW1zKTtcbiAgICBsZXQgcnVubmluZyA9IHRydWU7XG4gICAgbGV0IHN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBsZXQgbmFtZTtcbiAgICBmdW5jdGlvbiBzdGFydCgpIHtcbiAgICAgICAgaWYgKGNzcykge1xuICAgICAgICAgICAgbmFtZSA9IGNyZWF0ZV9ydWxlKG5vZGUsIDAsIDEsIGR1cmF0aW9uLCBkZWxheSwgZWFzaW5nLCBjc3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGVsYXkpIHtcbiAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICAgIGlmIChjc3MpXG4gICAgICAgICAgICBkZWxldGVfcnVsZShub2RlLCBuYW1lKTtcbiAgICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgIH1cbiAgICBsb29wKG5vdyA9PiB7XG4gICAgICAgIGlmICghc3RhcnRlZCAmJiBub3cgPj0gc3RhcnRfdGltZSkge1xuICAgICAgICAgICAgc3RhcnRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0ZWQgJiYgbm93ID49IGVuZCkge1xuICAgICAgICAgICAgdGljaygxLCAwKTtcbiAgICAgICAgICAgIHN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJ1bm5pbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRlZCkge1xuICAgICAgICAgICAgY29uc3QgcCA9IG5vdyAtIHN0YXJ0X3RpbWU7XG4gICAgICAgICAgICBjb25zdCB0ID0gMCArIDEgKiBlYXNpbmcocCAvIGR1cmF0aW9uKTtcbiAgICAgICAgICAgIHRpY2sodCwgMSAtIHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIHN0YXJ0KCk7XG4gICAgdGljaygwLCAxKTtcbiAgICByZXR1cm4gc3RvcDtcbn1cbmZ1bmN0aW9uIGZpeF9wb3NpdGlvbihub2RlKSB7XG4gICAgY29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICAgIGlmIChzdHlsZS5wb3NpdGlvbiAhPT0gJ2Fic29sdXRlJyAmJiBzdHlsZS5wb3NpdGlvbiAhPT0gJ2ZpeGVkJykge1xuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHN0eWxlO1xuICAgICAgICBjb25zdCBhID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbm9kZS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIG5vZGUuc3R5bGUud2lkdGggPSB3aWR0aDtcbiAgICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIGFkZF90cmFuc2Zvcm0obm9kZSwgYSk7XG4gICAgfVxufVxuZnVuY3Rpb24gYWRkX3RyYW5zZm9ybShub2RlLCBhKSB7XG4gICAgY29uc3QgYiA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaWYgKGEubGVmdCAhPT0gYi5sZWZ0IHx8IGEudG9wICE9PSBiLnRvcCkge1xuICAgICAgICBjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IHN0eWxlLnRyYW5zZm9ybSA9PT0gJ25vbmUnID8gJycgOiBzdHlsZS50cmFuc2Zvcm07XG4gICAgICAgIG5vZGUuc3R5bGUudHJhbnNmb3JtID0gYCR7dHJhbnNmb3JtfSB0cmFuc2xhdGUoJHthLmxlZnQgLSBiLmxlZnR9cHgsICR7YS50b3AgLSBiLnRvcH1weClgO1xuICAgIH1cbn1cblxubGV0IGN1cnJlbnRfY29tcG9uZW50O1xuZnVuY3Rpb24gc2V0X2N1cnJlbnRfY29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgIGN1cnJlbnRfY29tcG9uZW50ID0gY29tcG9uZW50O1xufVxuZnVuY3Rpb24gZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkge1xuICAgIGlmICghY3VycmVudF9jb21wb25lbnQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRnVuY3Rpb24gY2FsbGVkIG91dHNpZGUgY29tcG9uZW50IGluaXRpYWxpemF0aW9uJyk7XG4gICAgcmV0dXJuIGN1cnJlbnRfY29tcG9uZW50O1xufVxuZnVuY3Rpb24gYmVmb3JlVXBkYXRlKGZuKSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuYmVmb3JlX3VwZGF0ZS5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIG9uTW91bnQoZm4pIHtcbiAgICBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5vbl9tb3VudC5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIGFmdGVyVXBkYXRlKGZuKSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuYWZ0ZXJfdXBkYXRlLnB1c2goZm4pO1xufVxuZnVuY3Rpb24gb25EZXN0cm95KGZuKSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQub25fZGVzdHJveS5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUV2ZW50RGlzcGF0Y2hlcigpIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSBnZXRfY3VycmVudF9jb21wb25lbnQoKTtcbiAgICByZXR1cm4gKHR5cGUsIGRldGFpbCkgPT4ge1xuICAgICAgICBjb25zdCBjYWxsYmFja3MgPSBjb21wb25lbnQuJCQuY2FsbGJhY2tzW3R5cGVdO1xuICAgICAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICAgICAgICAvLyBUT0RPIGFyZSB0aGVyZSBzaXR1YXRpb25zIHdoZXJlIGV2ZW50cyBjb3VsZCBiZSBkaXNwYXRjaGVkXG4gICAgICAgICAgICAvLyBpbiBhIHNlcnZlciAobm9uLURPTSkgZW52aXJvbm1lbnQ/XG4gICAgICAgICAgICBjb25zdCBldmVudCA9IGN1c3RvbV9ldmVudCh0eXBlLCBkZXRhaWwpO1xuICAgICAgICAgICAgY2FsbGJhY2tzLnNsaWNlKCkuZm9yRWFjaChmbiA9PiB7XG4gICAgICAgICAgICAgICAgZm4uY2FsbChjb21wb25lbnQsIGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHNldENvbnRleHQoa2V5LCBjb250ZXh0KSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuY29udGV4dC5zZXQoa2V5LCBjb250ZXh0KTtcbn1cbmZ1bmN0aW9uIGdldENvbnRleHQoa2V5KSB7XG4gICAgcmV0dXJuIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmNvbnRleHQuZ2V0KGtleSk7XG59XG5mdW5jdGlvbiBnZXRBbGxDb250ZXh0cygpIHtcbiAgICByZXR1cm4gZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuY29udGV4dDtcbn1cbmZ1bmN0aW9uIGhhc0NvbnRleHQoa2V5KSB7XG4gICAgcmV0dXJuIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmNvbnRleHQuaGFzKGtleSk7XG59XG4vLyBUT0RPIGZpZ3VyZSBvdXQgaWYgd2Ugc3RpbGwgd2FudCB0byBzdXBwb3J0XG4vLyBzaG9ydGhhbmQgZXZlbnRzLCBvciBpZiB3ZSB3YW50IHRvIGltcGxlbWVudFxuLy8gYSByZWFsIGJ1YmJsaW5nIG1lY2hhbmlzbVxuZnVuY3Rpb24gYnViYmxlKGNvbXBvbmVudCwgZXZlbnQpIHtcbiAgICBjb25zdCBjYWxsYmFja3MgPSBjb21wb25lbnQuJCQuY2FsbGJhY2tzW2V2ZW50LnR5cGVdO1xuICAgIGlmIChjYWxsYmFja3MpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjYWxsYmFja3Muc2xpY2UoKS5mb3JFYWNoKGZuID0+IGZuLmNhbGwodGhpcywgZXZlbnQpKTtcbiAgICB9XG59XG5cbmNvbnN0IGRpcnR5X2NvbXBvbmVudHMgPSBbXTtcbmNvbnN0IGludHJvcyA9IHsgZW5hYmxlZDogZmFsc2UgfTtcbmNvbnN0IGJpbmRpbmdfY2FsbGJhY2tzID0gW107XG5jb25zdCByZW5kZXJfY2FsbGJhY2tzID0gW107XG5jb25zdCBmbHVzaF9jYWxsYmFja3MgPSBbXTtcbmNvbnN0IHJlc29sdmVkX3Byb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbmxldCB1cGRhdGVfc2NoZWR1bGVkID0gZmFsc2U7XG5mdW5jdGlvbiBzY2hlZHVsZV91cGRhdGUoKSB7XG4gICAgaWYgKCF1cGRhdGVfc2NoZWR1bGVkKSB7XG4gICAgICAgIHVwZGF0ZV9zY2hlZHVsZWQgPSB0cnVlO1xuICAgICAgICByZXNvbHZlZF9wcm9taXNlLnRoZW4oZmx1c2gpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRpY2soKSB7XG4gICAgc2NoZWR1bGVfdXBkYXRlKCk7XG4gICAgcmV0dXJuIHJlc29sdmVkX3Byb21pc2U7XG59XG5mdW5jdGlvbiBhZGRfcmVuZGVyX2NhbGxiYWNrKGZuKSB7XG4gICAgcmVuZGVyX2NhbGxiYWNrcy5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIGFkZF9mbHVzaF9jYWxsYmFjayhmbikge1xuICAgIGZsdXNoX2NhbGxiYWNrcy5wdXNoKGZuKTtcbn1cbi8vIGZsdXNoKCkgY2FsbHMgY2FsbGJhY2tzIGluIHRoaXMgb3JkZXI6XG4vLyAxLiBBbGwgYmVmb3JlVXBkYXRlIGNhbGxiYWNrcywgaW4gb3JkZXI6IHBhcmVudHMgYmVmb3JlIGNoaWxkcmVuXG4vLyAyLiBBbGwgYmluZDp0aGlzIGNhbGxiYWNrcywgaW4gcmV2ZXJzZSBvcmRlcjogY2hpbGRyZW4gYmVmb3JlIHBhcmVudHMuXG4vLyAzLiBBbGwgYWZ0ZXJVcGRhdGUgY2FsbGJhY2tzLCBpbiBvcmRlcjogcGFyZW50cyBiZWZvcmUgY2hpbGRyZW4uIEVYQ0VQVFxuLy8gICAgZm9yIGFmdGVyVXBkYXRlcyBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsIG9uTW91bnQsIHdoaWNoIGFyZSBjYWxsZWQgaW5cbi8vICAgIHJldmVyc2Ugb3JkZXI6IGNoaWxkcmVuIGJlZm9yZSBwYXJlbnRzLlxuLy8gU2luY2UgY2FsbGJhY2tzIG1pZ2h0IHVwZGF0ZSBjb21wb25lbnQgdmFsdWVzLCB3aGljaCBjb3VsZCB0cmlnZ2VyIGFub3RoZXJcbi8vIGNhbGwgdG8gZmx1c2goKSwgdGhlIGZvbGxvd2luZyBzdGVwcyBndWFyZCBhZ2FpbnN0IHRoaXM6XG4vLyAxLiBEdXJpbmcgYmVmb3JlVXBkYXRlLCBhbnkgdXBkYXRlZCBjb21wb25lbnRzIHdpbGwgYmUgYWRkZWQgdG8gdGhlXG4vLyAgICBkaXJ0eV9jb21wb25lbnRzIGFycmF5IGFuZCB3aWxsIGNhdXNlIGEgcmVlbnRyYW50IGNhbGwgdG8gZmx1c2goKS4gQmVjYXVzZVxuLy8gICAgdGhlIGZsdXNoIGluZGV4IGlzIGtlcHQgb3V0c2lkZSB0aGUgZnVuY3Rpb24sIHRoZSByZWVudHJhbnQgY2FsbCB3aWxsIHBpY2tcbi8vICAgIHVwIHdoZXJlIHRoZSBlYXJsaWVyIGNhbGwgbGVmdCBvZmYgYW5kIGdvIHRocm91Z2ggYWxsIGRpcnR5IGNvbXBvbmVudHMuIFRoZVxuLy8gICAgY3VycmVudF9jb21wb25lbnQgdmFsdWUgaXMgc2F2ZWQgYW5kIHJlc3RvcmVkIHNvIHRoYXQgdGhlIHJlZW50cmFudCBjYWxsIHdpbGxcbi8vICAgIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgXCJwYXJlbnRcIiBmbHVzaCgpIGNhbGwuXG4vLyAyLiBiaW5kOnRoaXMgY2FsbGJhY2tzIGNhbm5vdCB0cmlnZ2VyIG5ldyBmbHVzaCgpIGNhbGxzLlxuLy8gMy4gRHVyaW5nIGFmdGVyVXBkYXRlLCBhbnkgdXBkYXRlZCBjb21wb25lbnRzIHdpbGwgTk9UIGhhdmUgdGhlaXIgYWZ0ZXJVcGRhdGVcbi8vICAgIGNhbGxiYWNrIGNhbGxlZCBhIHNlY29uZCB0aW1lOyB0aGUgc2Vlbl9jYWxsYmFja3Mgc2V0LCBvdXRzaWRlIHRoZSBmbHVzaCgpXG4vLyAgICBmdW5jdGlvbiwgZ3VhcmFudGVlcyB0aGlzIGJlaGF2aW9yLlxuY29uc3Qgc2Vlbl9jYWxsYmFja3MgPSBuZXcgU2V0KCk7XG5sZXQgZmx1c2hpZHggPSAwOyAvLyBEbyAqbm90KiBtb3ZlIHRoaXMgaW5zaWRlIHRoZSBmbHVzaCgpIGZ1bmN0aW9uXG5mdW5jdGlvbiBmbHVzaCgpIHtcbiAgICBjb25zdCBzYXZlZF9jb21wb25lbnQgPSBjdXJyZW50X2NvbXBvbmVudDtcbiAgICBkbyB7XG4gICAgICAgIC8vIGZpcnN0LCBjYWxsIGJlZm9yZVVwZGF0ZSBmdW5jdGlvbnNcbiAgICAgICAgLy8gYW5kIHVwZGF0ZSBjb21wb25lbnRzXG4gICAgICAgIHdoaWxlIChmbHVzaGlkeCA8IGRpcnR5X2NvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBkaXJ0eV9jb21wb25lbnRzW2ZsdXNoaWR4XTtcbiAgICAgICAgICAgIGZsdXNoaWR4Kys7XG4gICAgICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQoY29tcG9uZW50KTtcbiAgICAgICAgICAgIHVwZGF0ZShjb21wb25lbnQuJCQpO1xuICAgICAgICB9XG4gICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChudWxsKTtcbiAgICAgICAgZGlydHlfY29tcG9uZW50cy5sZW5ndGggPSAwO1xuICAgICAgICBmbHVzaGlkeCA9IDA7XG4gICAgICAgIHdoaWxlIChiaW5kaW5nX2NhbGxiYWNrcy5sZW5ndGgpXG4gICAgICAgICAgICBiaW5kaW5nX2NhbGxiYWNrcy5wb3AoKSgpO1xuICAgICAgICAvLyB0aGVuLCBvbmNlIGNvbXBvbmVudHMgYXJlIHVwZGF0ZWQsIGNhbGxcbiAgICAgICAgLy8gYWZ0ZXJVcGRhdGUgZnVuY3Rpb25zLiBUaGlzIG1heSBjYXVzZVxuICAgICAgICAvLyBzdWJzZXF1ZW50IHVwZGF0ZXMuLi5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZW5kZXJfY2FsbGJhY2tzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9IHJlbmRlcl9jYWxsYmFja3NbaV07XG4gICAgICAgICAgICBpZiAoIXNlZW5fY2FsbGJhY2tzLmhhcyhjYWxsYmFjaykpIHtcbiAgICAgICAgICAgICAgICAvLyAuLi5zbyBndWFyZCBhZ2FpbnN0IGluZmluaXRlIGxvb3BzXG4gICAgICAgICAgICAgICAgc2Vlbl9jYWxsYmFja3MuYWRkKGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlbmRlcl9jYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgICB9IHdoaWxlIChkaXJ0eV9jb21wb25lbnRzLmxlbmd0aCk7XG4gICAgd2hpbGUgKGZsdXNoX2NhbGxiYWNrcy5sZW5ndGgpIHtcbiAgICAgICAgZmx1c2hfY2FsbGJhY2tzLnBvcCgpKCk7XG4gICAgfVxuICAgIHVwZGF0ZV9zY2hlZHVsZWQgPSBmYWxzZTtcbiAgICBzZWVuX2NhbGxiYWNrcy5jbGVhcigpO1xuICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChzYXZlZF9jb21wb25lbnQpO1xufVxuZnVuY3Rpb24gdXBkYXRlKCQkKSB7XG4gICAgaWYgKCQkLmZyYWdtZW50ICE9PSBudWxsKSB7XG4gICAgICAgICQkLnVwZGF0ZSgpO1xuICAgICAgICBydW5fYWxsKCQkLmJlZm9yZV91cGRhdGUpO1xuICAgICAgICBjb25zdCBkaXJ0eSA9ICQkLmRpcnR5O1xuICAgICAgICAkJC5kaXJ0eSA9IFstMV07XG4gICAgICAgICQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50LnAoJCQuY3R4LCBkaXJ0eSk7XG4gICAgICAgICQkLmFmdGVyX3VwZGF0ZS5mb3JFYWNoKGFkZF9yZW5kZXJfY2FsbGJhY2spO1xuICAgIH1cbn1cblxubGV0IHByb21pc2U7XG5mdW5jdGlvbiB3YWl0KCkge1xuICAgIGlmICghcHJvbWlzZSkge1xuICAgICAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIHByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBwcm9taXNlID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBwcm9taXNlO1xufVxuZnVuY3Rpb24gZGlzcGF0Y2gobm9kZSwgZGlyZWN0aW9uLCBraW5kKSB7XG4gICAgbm9kZS5kaXNwYXRjaEV2ZW50KGN1c3RvbV9ldmVudChgJHtkaXJlY3Rpb24gPyAnaW50cm8nIDogJ291dHJvJ30ke2tpbmR9YCkpO1xufVxuY29uc3Qgb3V0cm9pbmcgPSBuZXcgU2V0KCk7XG5sZXQgb3V0cm9zO1xuZnVuY3Rpb24gZ3JvdXBfb3V0cm9zKCkge1xuICAgIG91dHJvcyA9IHtcbiAgICAgICAgcjogMCxcbiAgICAgICAgYzogW10sXG4gICAgICAgIHA6IG91dHJvcyAvLyBwYXJlbnQgZ3JvdXBcbiAgICB9O1xufVxuZnVuY3Rpb24gY2hlY2tfb3V0cm9zKCkge1xuICAgIGlmICghb3V0cm9zLnIpIHtcbiAgICAgICAgcnVuX2FsbChvdXRyb3MuYyk7XG4gICAgfVxuICAgIG91dHJvcyA9IG91dHJvcy5wO1xufVxuZnVuY3Rpb24gdHJhbnNpdGlvbl9pbihibG9jaywgbG9jYWwpIHtcbiAgICBpZiAoYmxvY2sgJiYgYmxvY2suaSkge1xuICAgICAgICBvdXRyb2luZy5kZWxldGUoYmxvY2spO1xuICAgICAgICBibG9jay5pKGxvY2FsKTtcbiAgICB9XG59XG5mdW5jdGlvbiB0cmFuc2l0aW9uX291dChibG9jaywgbG9jYWwsIGRldGFjaCwgY2FsbGJhY2spIHtcbiAgICBpZiAoYmxvY2sgJiYgYmxvY2subykge1xuICAgICAgICBpZiAob3V0cm9pbmcuaGFzKGJsb2NrKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgb3V0cm9pbmcuYWRkKGJsb2NrKTtcbiAgICAgICAgb3V0cm9zLmMucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICBvdXRyb2luZy5kZWxldGUoYmxvY2spO1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRldGFjaClcbiAgICAgICAgICAgICAgICAgICAgYmxvY2suZCgxKTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYmxvY2subyhsb2NhbCk7XG4gICAgfVxufVxuY29uc3QgbnVsbF90cmFuc2l0aW9uID0geyBkdXJhdGlvbjogMCB9O1xuZnVuY3Rpb24gY3JlYXRlX2luX3RyYW5zaXRpb24obm9kZSwgZm4sIHBhcmFtcykge1xuICAgIGxldCBjb25maWcgPSBmbihub2RlLCBwYXJhbXMpO1xuICAgIGxldCBydW5uaW5nID0gZmFsc2U7XG4gICAgbGV0IGFuaW1hdGlvbl9uYW1lO1xuICAgIGxldCB0YXNrO1xuICAgIGxldCB1aWQgPSAwO1xuICAgIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgICAgIGlmIChhbmltYXRpb25fbmFtZSlcbiAgICAgICAgICAgIGRlbGV0ZV9ydWxlKG5vZGUsIGFuaW1hdGlvbl9uYW1lKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ28oKSB7XG4gICAgICAgIGNvbnN0IHsgZGVsYXkgPSAwLCBkdXJhdGlvbiA9IDMwMCwgZWFzaW5nID0gaWRlbnRpdHksIHRpY2sgPSBub29wLCBjc3MgfSA9IGNvbmZpZyB8fCBudWxsX3RyYW5zaXRpb247XG4gICAgICAgIGlmIChjc3MpXG4gICAgICAgICAgICBhbmltYXRpb25fbmFtZSA9IGNyZWF0ZV9ydWxlKG5vZGUsIDAsIDEsIGR1cmF0aW9uLCBkZWxheSwgZWFzaW5nLCBjc3MsIHVpZCsrKTtcbiAgICAgICAgdGljaygwLCAxKTtcbiAgICAgICAgY29uc3Qgc3RhcnRfdGltZSA9IG5vdygpICsgZGVsYXk7XG4gICAgICAgIGNvbnN0IGVuZF90aW1lID0gc3RhcnRfdGltZSArIGR1cmF0aW9uO1xuICAgICAgICBpZiAodGFzaylcbiAgICAgICAgICAgIHRhc2suYWJvcnQoKTtcbiAgICAgICAgcnVubmluZyA9IHRydWU7XG4gICAgICAgIGFkZF9yZW5kZXJfY2FsbGJhY2soKCkgPT4gZGlzcGF0Y2gobm9kZSwgdHJ1ZSwgJ3N0YXJ0JykpO1xuICAgICAgICB0YXNrID0gbG9vcChub3cgPT4ge1xuICAgICAgICAgICAgaWYgKHJ1bm5pbmcpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93ID49IGVuZF90aW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRpY2soMSwgMCk7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG5vZGUsIHRydWUsICdlbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobm93ID49IHN0YXJ0X3RpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGVhc2luZygobm93IC0gc3RhcnRfdGltZSkgLyBkdXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIHRpY2sodCwgMSAtIHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBydW5uaW5nO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgbGV0IHN0YXJ0ZWQgPSBmYWxzZTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdGFydCgpIHtcbiAgICAgICAgICAgIGlmIChzdGFydGVkKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgZGVsZXRlX3J1bGUobm9kZSk7XG4gICAgICAgICAgICBpZiAoaXNfZnVuY3Rpb24oY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIGNvbmZpZyA9IGNvbmZpZygpO1xuICAgICAgICAgICAgICAgIHdhaXQoKS50aGVuKGdvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGdvKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGludmFsaWRhdGUoKSB7XG4gICAgICAgICAgICBzdGFydGVkID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVuZCgpIHtcbiAgICAgICAgICAgIGlmIChydW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICAgICAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiBjcmVhdGVfb3V0X3RyYW5zaXRpb24obm9kZSwgZm4sIHBhcmFtcykge1xuICAgIGxldCBjb25maWcgPSBmbihub2RlLCBwYXJhbXMpO1xuICAgIGxldCBydW5uaW5nID0gdHJ1ZTtcbiAgICBsZXQgYW5pbWF0aW9uX25hbWU7XG4gICAgY29uc3QgZ3JvdXAgPSBvdXRyb3M7XG4gICAgZ3JvdXAuciArPSAxO1xuICAgIGZ1bmN0aW9uIGdvKCkge1xuICAgICAgICBjb25zdCB7IGRlbGF5ID0gMCwgZHVyYXRpb24gPSAzMDAsIGVhc2luZyA9IGlkZW50aXR5LCB0aWNrID0gbm9vcCwgY3NzIH0gPSBjb25maWcgfHwgbnVsbF90cmFuc2l0aW9uO1xuICAgICAgICBpZiAoY3NzKVxuICAgICAgICAgICAgYW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCAxLCAwLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzKTtcbiAgICAgICAgY29uc3Qgc3RhcnRfdGltZSA9IG5vdygpICsgZGVsYXk7XG4gICAgICAgIGNvbnN0IGVuZF90aW1lID0gc3RhcnRfdGltZSArIGR1cmF0aW9uO1xuICAgICAgICBhZGRfcmVuZGVyX2NhbGxiYWNrKCgpID0+IGRpc3BhdGNoKG5vZGUsIGZhbHNlLCAnc3RhcnQnKSk7XG4gICAgICAgIGxvb3Aobm93ID0+IHtcbiAgICAgICAgICAgIGlmIChydW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdyA+PSBlbmRfdGltZSkge1xuICAgICAgICAgICAgICAgICAgICB0aWNrKDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChub2RlLCBmYWxzZSwgJ2VuZCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIS0tZ3JvdXAucikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB3aWxsIHJlc3VsdCBpbiBgZW5kKClgIGJlaW5nIGNhbGxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIHdlIGRvbid0IG5lZWQgdG8gY2xlYW4gdXAgaGVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2FsbChncm91cC5jKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChub3cgPj0gc3RhcnRfdGltZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZWFzaW5nKChub3cgLSBzdGFydF90aW1lKSAvIGR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgdGljaygxIC0gdCwgdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJ1bm5pbmc7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoaXNfZnVuY3Rpb24oY29uZmlnKSkge1xuICAgICAgICB3YWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25maWcgPSBjb25maWcoKTtcbiAgICAgICAgICAgIGdvKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZ28oKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZW5kKHJlc2V0KSB7XG4gICAgICAgICAgICBpZiAocmVzZXQgJiYgY29uZmlnLnRpY2spIHtcbiAgICAgICAgICAgICAgICBjb25maWcudGljaygxLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFuaW1hdGlvbl9uYW1lKVxuICAgICAgICAgICAgICAgICAgICBkZWxldGVfcnVsZShub2RlLCBhbmltYXRpb25fbmFtZSk7XG4gICAgICAgICAgICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZV9iaWRpcmVjdGlvbmFsX3RyYW5zaXRpb24obm9kZSwgZm4sIHBhcmFtcywgaW50cm8pIHtcbiAgICBsZXQgY29uZmlnID0gZm4obm9kZSwgcGFyYW1zKTtcbiAgICBsZXQgdCA9IGludHJvID8gMCA6IDE7XG4gICAgbGV0IHJ1bm5pbmdfcHJvZ3JhbSA9IG51bGw7XG4gICAgbGV0IHBlbmRpbmdfcHJvZ3JhbSA9IG51bGw7XG4gICAgbGV0IGFuaW1hdGlvbl9uYW1lID0gbnVsbDtcbiAgICBmdW5jdGlvbiBjbGVhcl9hbmltYXRpb24oKSB7XG4gICAgICAgIGlmIChhbmltYXRpb25fbmFtZSlcbiAgICAgICAgICAgIGRlbGV0ZV9ydWxlKG5vZGUsIGFuaW1hdGlvbl9uYW1lKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdChwcm9ncmFtLCBkdXJhdGlvbikge1xuICAgICAgICBjb25zdCBkID0gKHByb2dyYW0uYiAtIHQpO1xuICAgICAgICBkdXJhdGlvbiAqPSBNYXRoLmFicyhkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGE6IHQsXG4gICAgICAgICAgICBiOiBwcm9ncmFtLmIsXG4gICAgICAgICAgICBkLFxuICAgICAgICAgICAgZHVyYXRpb24sXG4gICAgICAgICAgICBzdGFydDogcHJvZ3JhbS5zdGFydCxcbiAgICAgICAgICAgIGVuZDogcHJvZ3JhbS5zdGFydCArIGR1cmF0aW9uLFxuICAgICAgICAgICAgZ3JvdXA6IHByb2dyYW0uZ3JvdXBcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ28oYikge1xuICAgICAgICBjb25zdCB7IGRlbGF5ID0gMCwgZHVyYXRpb24gPSAzMDAsIGVhc2luZyA9IGlkZW50aXR5LCB0aWNrID0gbm9vcCwgY3NzIH0gPSBjb25maWcgfHwgbnVsbF90cmFuc2l0aW9uO1xuICAgICAgICBjb25zdCBwcm9ncmFtID0ge1xuICAgICAgICAgICAgc3RhcnQ6IG5vdygpICsgZGVsYXksXG4gICAgICAgICAgICBiXG4gICAgICAgIH07XG4gICAgICAgIGlmICghYikge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSB0b2RvOiBpbXByb3ZlIHR5cGluZ3NcbiAgICAgICAgICAgIHByb2dyYW0uZ3JvdXAgPSBvdXRyb3M7XG4gICAgICAgICAgICBvdXRyb3MuciArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChydW5uaW5nX3Byb2dyYW0gfHwgcGVuZGluZ19wcm9ncmFtKSB7XG4gICAgICAgICAgICBwZW5kaW5nX3Byb2dyYW0gPSBwcm9ncmFtO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBhbiBpbnRybywgYW5kIHRoZXJlJ3MgYSBkZWxheSwgd2UgbmVlZCB0byBkb1xuICAgICAgICAgICAgLy8gYW4gaW5pdGlhbCB0aWNrIGFuZC9vciBhcHBseSBDU1MgYW5pbWF0aW9uIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICBpZiAoY3NzKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJfYW5pbWF0aW9uKCk7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCB0LCBiLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiKVxuICAgICAgICAgICAgICAgIHRpY2soMCwgMSk7XG4gICAgICAgICAgICBydW5uaW5nX3Byb2dyYW0gPSBpbml0KHByb2dyYW0sIGR1cmF0aW9uKTtcbiAgICAgICAgICAgIGFkZF9yZW5kZXJfY2FsbGJhY2soKCkgPT4gZGlzcGF0Y2gobm9kZSwgYiwgJ3N0YXJ0JykpO1xuICAgICAgICAgICAgbG9vcChub3cgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nX3Byb2dyYW0gJiYgbm93ID4gcGVuZGluZ19wcm9ncmFtLnN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdfcHJvZ3JhbSA9IGluaXQocGVuZGluZ19wcm9ncmFtLCBkdXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdfcHJvZ3JhbSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG5vZGUsIHJ1bm5pbmdfcHJvZ3JhbS5iLCAnc3RhcnQnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJfYW5pbWF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25fbmFtZSA9IGNyZWF0ZV9ydWxlKG5vZGUsIHQsIHJ1bm5pbmdfcHJvZ3JhbS5iLCBydW5uaW5nX3Byb2dyYW0uZHVyYXRpb24sIDAsIGVhc2luZywgY29uZmlnLmNzcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bm5pbmdfcHJvZ3JhbSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobm93ID49IHJ1bm5pbmdfcHJvZ3JhbS5lbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2sodCA9IHJ1bm5pbmdfcHJvZ3JhbS5iLCAxIC0gdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChub2RlLCBydW5uaW5nX3Byb2dyYW0uYiwgJ2VuZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwZW5kaW5nX3Byb2dyYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSdyZSBkb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bm5pbmdfcHJvZ3JhbS5iKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludHJvIOKAlCB3ZSBjYW4gdGlkeSB1cCBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcl9hbmltYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHJvIOKAlCBuZWVkcyB0byBiZSBjb29yZGluYXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIS0tcnVubmluZ19wcm9ncmFtLmdyb3VwLnIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5fYWxsKHJ1bm5pbmdfcHJvZ3JhbS5ncm91cC5jKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vdyA+PSBydW5uaW5nX3Byb2dyYW0uc3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBub3cgLSBydW5uaW5nX3Byb2dyYW0uc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ID0gcnVubmluZ19wcm9ncmFtLmEgKyBydW5uaW5nX3Byb2dyYW0uZCAqIGVhc2luZyhwIC8gcnVubmluZ19wcm9ncmFtLmR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2sodCwgMSAtIHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAhIShydW5uaW5nX3Byb2dyYW0gfHwgcGVuZGluZ19wcm9ncmFtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHJ1bihiKSB7XG4gICAgICAgICAgICBpZiAoaXNfZnVuY3Rpb24oY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIHdhaXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBjb25maWcgPSBjb25maWcoKTtcbiAgICAgICAgICAgICAgICAgICAgZ28oYik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBnbyhiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZW5kKCkge1xuICAgICAgICAgICAgY2xlYXJfYW5pbWF0aW9uKCk7XG4gICAgICAgICAgICBydW5uaW5nX3Byb2dyYW0gPSBwZW5kaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlX3Byb21pc2UocHJvbWlzZSwgaW5mbykge1xuICAgIGNvbnN0IHRva2VuID0gaW5mby50b2tlbiA9IHt9O1xuICAgIGZ1bmN0aW9uIHVwZGF0ZSh0eXBlLCBpbmRleCwga2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoaW5mby50b2tlbiAhPT0gdG9rZW4pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluZm8ucmVzb2x2ZWQgPSB2YWx1ZTtcbiAgICAgICAgbGV0IGNoaWxkX2N0eCA9IGluZm8uY3R4O1xuICAgICAgICBpZiAoa2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNoaWxkX2N0eCA9IGNoaWxkX2N0eC5zbGljZSgpO1xuICAgICAgICAgICAgY2hpbGRfY3R4W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBibG9jayA9IHR5cGUgJiYgKGluZm8uY3VycmVudCA9IHR5cGUpKGNoaWxkX2N0eCk7XG4gICAgICAgIGxldCBuZWVkc19mbHVzaCA9IGZhbHNlO1xuICAgICAgICBpZiAoaW5mby5ibG9jaykge1xuICAgICAgICAgICAgaWYgKGluZm8uYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgaW5mby5ibG9ja3MuZm9yRWFjaCgoYmxvY2ssIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IGluZGV4ICYmIGJsb2NrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cF9vdXRyb3MoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25fb3V0KGJsb2NrLCAxLCAxLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8uYmxvY2tzW2ldID09PSBibG9jaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJsb2Nrc1tpXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja19vdXRyb3MoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5mby5ibG9jay5kKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYmxvY2suYygpO1xuICAgICAgICAgICAgdHJhbnNpdGlvbl9pbihibG9jaywgMSk7XG4gICAgICAgICAgICBibG9jay5tKGluZm8ubW91bnQoKSwgaW5mby5hbmNob3IpO1xuICAgICAgICAgICAgbmVlZHNfZmx1c2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGluZm8uYmxvY2sgPSBibG9jaztcbiAgICAgICAgaWYgKGluZm8uYmxvY2tzKVxuICAgICAgICAgICAgaW5mby5ibG9ja3NbaW5kZXhdID0gYmxvY2s7XG4gICAgICAgIGlmIChuZWVkc19mbHVzaCkge1xuICAgICAgICAgICAgZmx1c2goKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNfcHJvbWlzZShwcm9taXNlKSkge1xuICAgICAgICBjb25zdCBjdXJyZW50X2NvbXBvbmVudCA9IGdldF9jdXJyZW50X2NvbXBvbmVudCgpO1xuICAgICAgICBwcm9taXNlLnRoZW4odmFsdWUgPT4ge1xuICAgICAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KGN1cnJlbnRfY29tcG9uZW50KTtcbiAgICAgICAgICAgIHVwZGF0ZShpbmZvLnRoZW4sIDEsIGluZm8udmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChudWxsKTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KGN1cnJlbnRfY29tcG9uZW50KTtcbiAgICAgICAgICAgIHVwZGF0ZShpbmZvLmNhdGNoLCAyLCBpbmZvLmVycm9yLCBlcnJvcik7XG4gICAgICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQobnVsbCk7XG4gICAgICAgICAgICBpZiAoIWluZm8uaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGlmIHdlIHByZXZpb3VzbHkgaGFkIGEgdGhlbi9jYXRjaCBibG9jaywgZGVzdHJveSBpdFxuICAgICAgICBpZiAoaW5mby5jdXJyZW50ICE9PSBpbmZvLnBlbmRpbmcpIHtcbiAgICAgICAgICAgIHVwZGF0ZShpbmZvLnBlbmRpbmcsIDApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmIChpbmZvLmN1cnJlbnQgIT09IGluZm8udGhlbikge1xuICAgICAgICAgICAgdXBkYXRlKGluZm8udGhlbiwgMSwgaW5mby52YWx1ZSwgcHJvbWlzZSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpbmZvLnJlc29sdmVkID0gcHJvbWlzZTtcbiAgICB9XG59XG5mdW5jdGlvbiB1cGRhdGVfYXdhaXRfYmxvY2tfYnJhbmNoKGluZm8sIGN0eCwgZGlydHkpIHtcbiAgICBjb25zdCBjaGlsZF9jdHggPSBjdHguc2xpY2UoKTtcbiAgICBjb25zdCB7IHJlc29sdmVkIH0gPSBpbmZvO1xuICAgIGlmIChpbmZvLmN1cnJlbnQgPT09IGluZm8udGhlbikge1xuICAgICAgICBjaGlsZF9jdHhbaW5mby52YWx1ZV0gPSByZXNvbHZlZDtcbiAgICB9XG4gICAgaWYgKGluZm8uY3VycmVudCA9PT0gaW5mby5jYXRjaCkge1xuICAgICAgICBjaGlsZF9jdHhbaW5mby5lcnJvcl0gPSByZXNvbHZlZDtcbiAgICB9XG4gICAgaW5mby5ibG9jay5wKGNoaWxkX2N0eCwgZGlydHkpO1xufVxuXG5jb25zdCBnbG9iYWxzID0gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gICAgPyB3aW5kb3dcbiAgICA6IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IGdsb2JhbFRoaXNcbiAgICAgICAgOiBnbG9iYWwpO1xuXG5mdW5jdGlvbiBkZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApIHtcbiAgICBibG9jay5kKDEpO1xuICAgIGxvb2t1cC5kZWxldGUoYmxvY2sua2V5KTtcbn1cbmZ1bmN0aW9uIG91dHJvX2FuZF9kZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApIHtcbiAgICB0cmFuc2l0aW9uX291dChibG9jaywgMSwgMSwgKCkgPT4ge1xuICAgICAgICBsb29rdXAuZGVsZXRlKGJsb2NrLmtleSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBmaXhfYW5kX2Rlc3Ryb3lfYmxvY2soYmxvY2ssIGxvb2t1cCkge1xuICAgIGJsb2NrLmYoKTtcbiAgICBkZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApO1xufVxuZnVuY3Rpb24gZml4X2FuZF9vdXRyb19hbmRfZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG4gICAgYmxvY2suZigpO1xuICAgIG91dHJvX2FuZF9kZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApO1xufVxuZnVuY3Rpb24gdXBkYXRlX2tleWVkX2VhY2gob2xkX2Jsb2NrcywgZGlydHksIGdldF9rZXksIGR5bmFtaWMsIGN0eCwgbGlzdCwgbG9va3VwLCBub2RlLCBkZXN0cm95LCBjcmVhdGVfZWFjaF9ibG9jaywgbmV4dCwgZ2V0X2NvbnRleHQpIHtcbiAgICBsZXQgbyA9IG9sZF9ibG9ja3MubGVuZ3RoO1xuICAgIGxldCBuID0gbGlzdC5sZW5ndGg7XG4gICAgbGV0IGkgPSBvO1xuICAgIGNvbnN0IG9sZF9pbmRleGVzID0ge307XG4gICAgd2hpbGUgKGktLSlcbiAgICAgICAgb2xkX2luZGV4ZXNbb2xkX2Jsb2Nrc1tpXS5rZXldID0gaTtcbiAgICBjb25zdCBuZXdfYmxvY2tzID0gW107XG4gICAgY29uc3QgbmV3X2xvb2t1cCA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBkZWx0YXMgPSBuZXcgTWFwKCk7XG4gICAgaSA9IG47XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgICBjb25zdCBjaGlsZF9jdHggPSBnZXRfY29udGV4dChjdHgsIGxpc3QsIGkpO1xuICAgICAgICBjb25zdCBrZXkgPSBnZXRfa2V5KGNoaWxkX2N0eCk7XG4gICAgICAgIGxldCBibG9jayA9IGxvb2t1cC5nZXQoa2V5KTtcbiAgICAgICAgaWYgKCFibG9jaykge1xuICAgICAgICAgICAgYmxvY2sgPSBjcmVhdGVfZWFjaF9ibG9jayhrZXksIGNoaWxkX2N0eCk7XG4gICAgICAgICAgICBibG9jay5jKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZHluYW1pYykge1xuICAgICAgICAgICAgYmxvY2sucChjaGlsZF9jdHgsIGRpcnR5KTtcbiAgICAgICAgfVxuICAgICAgICBuZXdfbG9va3VwLnNldChrZXksIG5ld19ibG9ja3NbaV0gPSBibG9jayk7XG4gICAgICAgIGlmIChrZXkgaW4gb2xkX2luZGV4ZXMpXG4gICAgICAgICAgICBkZWx0YXMuc2V0KGtleSwgTWF0aC5hYnMoaSAtIG9sZF9pbmRleGVzW2tleV0pKTtcbiAgICB9XG4gICAgY29uc3Qgd2lsbF9tb3ZlID0gbmV3IFNldCgpO1xuICAgIGNvbnN0IGRpZF9tb3ZlID0gbmV3IFNldCgpO1xuICAgIGZ1bmN0aW9uIGluc2VydChibG9jaykge1xuICAgICAgICB0cmFuc2l0aW9uX2luKGJsb2NrLCAxKTtcbiAgICAgICAgYmxvY2subShub2RlLCBuZXh0KTtcbiAgICAgICAgbG9va3VwLnNldChibG9jay5rZXksIGJsb2NrKTtcbiAgICAgICAgbmV4dCA9IGJsb2NrLmZpcnN0O1xuICAgICAgICBuLS07XG4gICAgfVxuICAgIHdoaWxlIChvICYmIG4pIHtcbiAgICAgICAgY29uc3QgbmV3X2Jsb2NrID0gbmV3X2Jsb2Nrc1tuIC0gMV07XG4gICAgICAgIGNvbnN0IG9sZF9ibG9jayA9IG9sZF9ibG9ja3NbbyAtIDFdO1xuICAgICAgICBjb25zdCBuZXdfa2V5ID0gbmV3X2Jsb2NrLmtleTtcbiAgICAgICAgY29uc3Qgb2xkX2tleSA9IG9sZF9ibG9jay5rZXk7XG4gICAgICAgIGlmIChuZXdfYmxvY2sgPT09IG9sZF9ibG9jaykge1xuICAgICAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgICAgICAgbmV4dCA9IG5ld19ibG9jay5maXJzdDtcbiAgICAgICAgICAgIG8tLTtcbiAgICAgICAgICAgIG4tLTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghbmV3X2xvb2t1cC5oYXMob2xkX2tleSkpIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSBvbGQgYmxvY2tcbiAgICAgICAgICAgIGRlc3Ryb3kob2xkX2Jsb2NrLCBsb29rdXApO1xuICAgICAgICAgICAgby0tO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFsb29rdXAuaGFzKG5ld19rZXkpIHx8IHdpbGxfbW92ZS5oYXMobmV3X2tleSkpIHtcbiAgICAgICAgICAgIGluc2VydChuZXdfYmxvY2spO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRpZF9tb3ZlLmhhcyhvbGRfa2V5KSkge1xuICAgICAgICAgICAgby0tO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRlbHRhcy5nZXQobmV3X2tleSkgPiBkZWx0YXMuZ2V0KG9sZF9rZXkpKSB7XG4gICAgICAgICAgICBkaWRfbW92ZS5hZGQobmV3X2tleSk7XG4gICAgICAgICAgICBpbnNlcnQobmV3X2Jsb2NrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHdpbGxfbW92ZS5hZGQob2xkX2tleSk7XG4gICAgICAgICAgICBvLS07XG4gICAgICAgIH1cbiAgICB9XG4gICAgd2hpbGUgKG8tLSkge1xuICAgICAgICBjb25zdCBvbGRfYmxvY2sgPSBvbGRfYmxvY2tzW29dO1xuICAgICAgICBpZiAoIW5ld19sb29rdXAuaGFzKG9sZF9ibG9jay5rZXkpKVxuICAgICAgICAgICAgZGVzdHJveShvbGRfYmxvY2ssIGxvb2t1cCk7XG4gICAgfVxuICAgIHdoaWxlIChuKVxuICAgICAgICBpbnNlcnQobmV3X2Jsb2Nrc1tuIC0gMV0pO1xuICAgIHJldHVybiBuZXdfYmxvY2tzO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVfZWFjaF9rZXlzKGN0eCwgbGlzdCwgZ2V0X2NvbnRleHQsIGdldF9rZXkpIHtcbiAgICBjb25zdCBrZXlzID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBrZXkgPSBnZXRfa2V5KGdldF9jb250ZXh0KGN0eCwgbGlzdCwgaSkpO1xuICAgICAgICBpZiAoa2V5cy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgaGF2ZSBkdXBsaWNhdGUga2V5cyBpbiBhIGtleWVkIGVhY2gnKTtcbiAgICAgICAgfVxuICAgICAgICBrZXlzLmFkZChrZXkpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0X3NwcmVhZF91cGRhdGUobGV2ZWxzLCB1cGRhdGVzKSB7XG4gICAgY29uc3QgdXBkYXRlID0ge307XG4gICAgY29uc3QgdG9fbnVsbF9vdXQgPSB7fTtcbiAgICBjb25zdCBhY2NvdW50ZWRfZm9yID0geyAkJHNjb3BlOiAxIH07XG4gICAgbGV0IGkgPSBsZXZlbHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgY29uc3QgbyA9IGxldmVsc1tpXTtcbiAgICAgICAgY29uc3QgbiA9IHVwZGF0ZXNbaV07XG4gICAgICAgIGlmIChuKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEoa2V5IGluIG4pKVxuICAgICAgICAgICAgICAgICAgICB0b19udWxsX291dFtrZXldID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG4pIHtcbiAgICAgICAgICAgICAgICBpZiAoIWFjY291bnRlZF9mb3Jba2V5XSkge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVba2V5XSA9IG5ba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgYWNjb3VudGVkX2ZvcltrZXldID0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXZlbHNbaV0gPSBuO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbykge1xuICAgICAgICAgICAgICAgIGFjY291bnRlZF9mb3Jba2V5XSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdG9fbnVsbF9vdXQpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIHVwZGF0ZSkpXG4gICAgICAgICAgICB1cGRhdGVba2V5XSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVwZGF0ZTtcbn1cbmZ1bmN0aW9uIGdldF9zcHJlYWRfb2JqZWN0KHNwcmVhZF9wcm9wcykge1xuICAgIHJldHVybiB0eXBlb2Ygc3ByZWFkX3Byb3BzID09PSAnb2JqZWN0JyAmJiBzcHJlYWRfcHJvcHMgIT09IG51bGwgPyBzcHJlYWRfcHJvcHMgOiB7fTtcbn1cblxuLy8gc291cmNlOiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmRpY2VzLmh0bWxcbmNvbnN0IGJvb2xlYW5fYXR0cmlidXRlcyA9IG5ldyBTZXQoW1xuICAgICdhbGxvd2Z1bGxzY3JlZW4nLFxuICAgICdhbGxvd3BheW1lbnRyZXF1ZXN0JyxcbiAgICAnYXN5bmMnLFxuICAgICdhdXRvZm9jdXMnLFxuICAgICdhdXRvcGxheScsXG4gICAgJ2NoZWNrZWQnLFxuICAgICdjb250cm9scycsXG4gICAgJ2RlZmF1bHQnLFxuICAgICdkZWZlcicsXG4gICAgJ2Rpc2FibGVkJyxcbiAgICAnZm9ybW5vdmFsaWRhdGUnLFxuICAgICdoaWRkZW4nLFxuICAgICdpc21hcCcsXG4gICAgJ2xvb3AnLFxuICAgICdtdWx0aXBsZScsXG4gICAgJ211dGVkJyxcbiAgICAnbm9tb2R1bGUnLFxuICAgICdub3ZhbGlkYXRlJyxcbiAgICAnb3BlbicsXG4gICAgJ3BsYXlzaW5saW5lJyxcbiAgICAncmVhZG9ubHknLFxuICAgICdyZXF1aXJlZCcsXG4gICAgJ3JldmVyc2VkJyxcbiAgICAnc2VsZWN0ZWQnXG5dKTtcblxuY29uc3QgaW52YWxpZF9hdHRyaWJ1dGVfbmFtZV9jaGFyYWN0ZXIgPSAvW1xccydcIj4vPVxcdXtGREQwfS1cXHV7RkRFRn1cXHV7RkZGRX1cXHV7RkZGRn1cXHV7MUZGRkV9XFx1ezFGRkZGfVxcdXsyRkZGRX1cXHV7MkZGRkZ9XFx1ezNGRkZFfVxcdXszRkZGRn1cXHV7NEZGRkV9XFx1ezRGRkZGfVxcdXs1RkZGRX1cXHV7NUZGRkZ9XFx1ezZGRkZFfVxcdXs2RkZGRn1cXHV7N0ZGRkV9XFx1ezdGRkZGfVxcdXs4RkZGRX1cXHV7OEZGRkZ9XFx1ezlGRkZFfVxcdXs5RkZGRn1cXHV7QUZGRkV9XFx1e0FGRkZGfVxcdXtCRkZGRX1cXHV7QkZGRkZ9XFx1e0NGRkZFfVxcdXtDRkZGRn1cXHV7REZGRkV9XFx1e0RGRkZGfVxcdXtFRkZGRX1cXHV7RUZGRkZ9XFx1e0ZGRkZFfVxcdXtGRkZGRn1cXHV7MTBGRkZFfVxcdXsxMEZGRkZ9XS91O1xuLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjYXR0cmlidXRlcy0yXG4vLyBodHRwczovL2luZnJhLnNwZWMud2hhdHdnLm9yZy8jbm9uY2hhcmFjdGVyXG5mdW5jdGlvbiBzcHJlYWQoYXJncywgY2xhc3Nlc190b19hZGQpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uYXJncyk7XG4gICAgaWYgKGNsYXNzZXNfdG9fYWRkKSB7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzLmNsYXNzID09IG51bGwpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMuY2xhc3MgPSBjbGFzc2VzX3RvX2FkZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMuY2xhc3MgKz0gJyAnICsgY2xhc3Nlc190b19hZGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgIGlmIChpbnZhbGlkX2F0dHJpYnV0ZV9uYW1lX2NoYXJhY3Rlci50ZXN0KG5hbWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHJpYnV0ZXNbbmFtZV07XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSlcbiAgICAgICAgICAgIHN0ciArPSAnICcgKyBuYW1lO1xuICAgICAgICBlbHNlIGlmIChib29sZWFuX2F0dHJpYnV0ZXMuaGFzKG5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSlcbiAgICAgICAgICAgICAgICBzdHIgKz0gJyAnICsgbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBzdHIgKz0gYCAke25hbWV9PVwiJHt2YWx1ZX1cImA7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc3RyO1xufVxuY29uc3QgZXNjYXBlZCA9IHtcbiAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICBcIidcIjogJyYjMzk7JyxcbiAgICAnJic6ICcmYW1wOycsXG4gICAgJzwnOiAnJmx0OycsXG4gICAgJz4nOiAnJmd0Oydcbn07XG5mdW5jdGlvbiBlc2NhcGUoaHRtbCkge1xuICAgIHJldHVybiBTdHJpbmcoaHRtbCkucmVwbGFjZSgvW1wiJyY8Pl0vZywgbWF0Y2ggPT4gZXNjYXBlZFttYXRjaF0pO1xufVxuZnVuY3Rpb24gZXNjYXBlX2F0dHJpYnV0ZV92YWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gZXNjYXBlKHZhbHVlKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZXNjYXBlX29iamVjdChvYmopIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBlc2NhcGVfYXR0cmlidXRlX3ZhbHVlKG9ialtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGVhY2goaXRlbXMsIGZuKSB7XG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgc3RyICs9IGZuKGl0ZW1zW2ldLCBpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbn1cbmNvbnN0IG1pc3NpbmdfY29tcG9uZW50ID0ge1xuICAgICQkcmVuZGVyOiAoKSA9PiAnJ1xufTtcbmZ1bmN0aW9uIHZhbGlkYXRlX2NvbXBvbmVudChjb21wb25lbnQsIG5hbWUpIHtcbiAgICBpZiAoIWNvbXBvbmVudCB8fCAhY29tcG9uZW50LiQkcmVuZGVyKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnc3ZlbHRlOmNvbXBvbmVudCcpXG4gICAgICAgICAgICBuYW1lICs9ICcgdGhpcz17Li4ufSc7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgPCR7bmFtZX0+IGlzIG5vdCBhIHZhbGlkIFNTUiBjb21wb25lbnQuIFlvdSBtYXkgbmVlZCB0byByZXZpZXcgeW91ciBidWlsZCBjb25maWcgdG8gZW5zdXJlIHRoYXQgZGVwZW5kZW5jaWVzIGFyZSBjb21waWxlZCwgcmF0aGVyIHRoYW4gaW1wb3J0ZWQgYXMgcHJlLWNvbXBpbGVkIG1vZHVsZXNgKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBvbmVudDtcbn1cbmZ1bmN0aW9uIGRlYnVnKGZpbGUsIGxpbmUsIGNvbHVtbiwgdmFsdWVzKSB7XG4gICAgY29uc29sZS5sb2coYHtAZGVidWd9ICR7ZmlsZSA/IGZpbGUgKyAnICcgOiAnJ30oJHtsaW5lfToke2NvbHVtbn0pYCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUubG9nKHZhbHVlcyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgIHJldHVybiAnJztcbn1cbmxldCBvbl9kZXN0cm95O1xuZnVuY3Rpb24gY3JlYXRlX3Nzcl9jb21wb25lbnQoZm4pIHtcbiAgICBmdW5jdGlvbiAkJHJlbmRlcihyZXN1bHQsIHByb3BzLCBiaW5kaW5ncywgc2xvdHMsIGNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgcGFyZW50X2NvbXBvbmVudCA9IGN1cnJlbnRfY29tcG9uZW50O1xuICAgICAgICBjb25zdCAkJCA9IHtcbiAgICAgICAgICAgIG9uX2Rlc3Ryb3ksXG4gICAgICAgICAgICBjb250ZXh0OiBuZXcgTWFwKGNvbnRleHQgfHwgKHBhcmVudF9jb21wb25lbnQgPyBwYXJlbnRfY29tcG9uZW50LiQkLmNvbnRleHQgOiBbXSkpLFxuICAgICAgICAgICAgLy8gdGhlc2Ugd2lsbCBiZSBpbW1lZGlhdGVseSBkaXNjYXJkZWRcbiAgICAgICAgICAgIG9uX21vdW50OiBbXSxcbiAgICAgICAgICAgIGJlZm9yZV91cGRhdGU6IFtdLFxuICAgICAgICAgICAgYWZ0ZXJfdXBkYXRlOiBbXSxcbiAgICAgICAgICAgIGNhbGxiYWNrczogYmxhbmtfb2JqZWN0KClcbiAgICAgICAgfTtcbiAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KHsgJCQgfSk7XG4gICAgICAgIGNvbnN0IGh0bWwgPSBmbihyZXN1bHQsIHByb3BzLCBiaW5kaW5ncywgc2xvdHMpO1xuICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQocGFyZW50X2NvbXBvbmVudCk7XG4gICAgICAgIHJldHVybiBodG1sO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICByZW5kZXI6IChwcm9wcyA9IHt9LCB7ICQkc2xvdHMgPSB7fSwgY29udGV4dCA9IG5ldyBNYXAoKSB9ID0ge30pID0+IHtcbiAgICAgICAgICAgIG9uX2Rlc3Ryb3kgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHsgdGl0bGU6ICcnLCBoZWFkOiAnJywgY3NzOiBuZXcgU2V0KCkgfTtcbiAgICAgICAgICAgIGNvbnN0IGh0bWwgPSAkJHJlbmRlcihyZXN1bHQsIHByb3BzLCB7fSwgJCRzbG90cywgY29udGV4dCk7XG4gICAgICAgICAgICBydW5fYWxsKG9uX2Rlc3Ryb3kpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBodG1sLFxuICAgICAgICAgICAgICAgIGNzczoge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBBcnJheS5mcm9tKHJlc3VsdC5jc3MpLm1hcChjc3MgPT4gY3NzLmNvZGUpLmpvaW4oJ1xcbicpLFxuICAgICAgICAgICAgICAgICAgICBtYXA6IG51bGwgLy8gVE9ET1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaGVhZDogcmVzdWx0LnRpdGxlICsgcmVzdWx0LmhlYWRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgICQkcmVuZGVyXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGFkZF9hdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCAoYm9vbGVhbiAmJiAhdmFsdWUpKVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGAgJHtuYW1lfSR7dmFsdWUgPT09IHRydWUgJiYgYm9vbGVhbl9hdHRyaWJ1dGVzLmhhcyhuYW1lKSA/ICcnIDogYD0ke3R5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBKU09OLnN0cmluZ2lmeShlc2NhcGUodmFsdWUpKSA6IGBcIiR7dmFsdWV9XCJgfWB9YDtcbn1cbmZ1bmN0aW9uIGFkZF9jbGFzc2VzKGNsYXNzZXMpIHtcbiAgICByZXR1cm4gY2xhc3NlcyA/IGAgY2xhc3M9XCIke2NsYXNzZXN9XCJgIDogJyc7XG59XG5cbmZ1bmN0aW9uIGJpbmQoY29tcG9uZW50LCBuYW1lLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IGluZGV4ID0gY29tcG9uZW50LiQkLnByb3BzW25hbWVdO1xuICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbXBvbmVudC4kJC5ib3VuZFtpbmRleF0gPSBjYWxsYmFjaztcbiAgICAgICAgY2FsbGJhY2soY29tcG9uZW50LiQkLmN0eFtpbmRleF0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZV9jb21wb25lbnQoYmxvY2spIHtcbiAgICBibG9jayAmJiBibG9jay5jKCk7XG59XG5mdW5jdGlvbiBjbGFpbV9jb21wb25lbnQoYmxvY2ssIHBhcmVudF9ub2Rlcykge1xuICAgIGJsb2NrICYmIGJsb2NrLmwocGFyZW50X25vZGVzKTtcbn1cbmZ1bmN0aW9uIG1vdW50X2NvbXBvbmVudChjb21wb25lbnQsIHRhcmdldCwgYW5jaG9yLCBjdXN0b21FbGVtZW50KSB7XG4gICAgY29uc3QgeyBmcmFnbWVudCwgb25fbW91bnQsIG9uX2Rlc3Ryb3ksIGFmdGVyX3VwZGF0ZSB9ID0gY29tcG9uZW50LiQkO1xuICAgIGZyYWdtZW50ICYmIGZyYWdtZW50Lm0odGFyZ2V0LCBhbmNob3IpO1xuICAgIGlmICghY3VzdG9tRWxlbWVudCkge1xuICAgICAgICAvLyBvbk1vdW50IGhhcHBlbnMgYmVmb3JlIHRoZSBpbml0aWFsIGFmdGVyVXBkYXRlXG4gICAgICAgIGFkZF9yZW5kZXJfY2FsbGJhY2soKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3X29uX2Rlc3Ryb3kgPSBvbl9tb3VudC5tYXAocnVuKS5maWx0ZXIoaXNfZnVuY3Rpb24pO1xuICAgICAgICAgICAgaWYgKG9uX2Rlc3Ryb3kpIHtcbiAgICAgICAgICAgICAgICBvbl9kZXN0cm95LnB1c2goLi4ubmV3X29uX2Rlc3Ryb3kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gRWRnZSBjYXNlIC0gY29tcG9uZW50IHdhcyBkZXN0cm95ZWQgaW1tZWRpYXRlbHksXG4gICAgICAgICAgICAgICAgLy8gbW9zdCBsaWtlbHkgYXMgYSByZXN1bHQgb2YgYSBiaW5kaW5nIGluaXRpYWxpc2luZ1xuICAgICAgICAgICAgICAgIHJ1bl9hbGwobmV3X29uX2Rlc3Ryb3kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcG9uZW50LiQkLm9uX21vdW50ID0gW107XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhZnRlcl91cGRhdGUuZm9yRWFjaChhZGRfcmVuZGVyX2NhbGxiYWNrKTtcbn1cbmZ1bmN0aW9uIGRlc3Ryb3lfY29tcG9uZW50KGNvbXBvbmVudCwgZGV0YWNoaW5nKSB7XG4gICAgY29uc3QgJCQgPSBjb21wb25lbnQuJCQ7XG4gICAgaWYgKCQkLmZyYWdtZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHJ1bl9hbGwoJCQub25fZGVzdHJveSk7XG4gICAgICAgICQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50LmQoZGV0YWNoaW5nKTtcbiAgICAgICAgLy8gVE9ETyBudWxsIG91dCBvdGhlciByZWZzLCBpbmNsdWRpbmcgY29tcG9uZW50LiQkIChidXQgbmVlZCB0b1xuICAgICAgICAvLyBwcmVzZXJ2ZSBmaW5hbCBzdGF0ZT8pXG4gICAgICAgICQkLm9uX2Rlc3Ryb3kgPSAkJC5mcmFnbWVudCA9IG51bGw7XG4gICAgICAgICQkLmN0eCA9IFtdO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1ha2VfZGlydHkoY29tcG9uZW50LCBpKSB7XG4gICAgaWYgKGNvbXBvbmVudC4kJC5kaXJ0eVswXSA9PT0gLTEpIHtcbiAgICAgICAgZGlydHlfY29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICAgIHNjaGVkdWxlX3VwZGF0ZSgpO1xuICAgICAgICBjb21wb25lbnQuJCQuZGlydHkuZmlsbCgwKTtcbiAgICB9XG4gICAgY29tcG9uZW50LiQkLmRpcnR5WyhpIC8gMzEpIHwgMF0gfD0gKDEgPDwgKGkgJSAzMSkpO1xufVxuZnVuY3Rpb24gaW5pdChjb21wb25lbnQsIG9wdGlvbnMsIGluc3RhbmNlLCBjcmVhdGVfZnJhZ21lbnQsIG5vdF9lcXVhbCwgcHJvcHMsIGFwcGVuZF9zdHlsZXMsIGRpcnR5ID0gWy0xXSkge1xuICAgIGNvbnN0IHBhcmVudF9jb21wb25lbnQgPSBjdXJyZW50X2NvbXBvbmVudDtcbiAgICBzZXRfY3VycmVudF9jb21wb25lbnQoY29tcG9uZW50KTtcbiAgICBjb25zdCAkJCA9IGNvbXBvbmVudC4kJCA9IHtcbiAgICAgICAgZnJhZ21lbnQ6IG51bGwsXG4gICAgICAgIGN0eDogbnVsbCxcbiAgICAgICAgLy8gc3RhdGVcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIHVwZGF0ZTogbm9vcCxcbiAgICAgICAgbm90X2VxdWFsLFxuICAgICAgICBib3VuZDogYmxhbmtfb2JqZWN0KCksXG4gICAgICAgIC8vIGxpZmVjeWNsZVxuICAgICAgICBvbl9tb3VudDogW10sXG4gICAgICAgIG9uX2Rlc3Ryb3k6IFtdLFxuICAgICAgICBvbl9kaXNjb25uZWN0OiBbXSxcbiAgICAgICAgYmVmb3JlX3VwZGF0ZTogW10sXG4gICAgICAgIGFmdGVyX3VwZGF0ZTogW10sXG4gICAgICAgIGNvbnRleHQ6IG5ldyBNYXAob3B0aW9ucy5jb250ZXh0IHx8IChwYXJlbnRfY29tcG9uZW50ID8gcGFyZW50X2NvbXBvbmVudC4kJC5jb250ZXh0IDogW10pKSxcbiAgICAgICAgLy8gZXZlcnl0aGluZyBlbHNlXG4gICAgICAgIGNhbGxiYWNrczogYmxhbmtfb2JqZWN0KCksXG4gICAgICAgIGRpcnR5LFxuICAgICAgICBza2lwX2JvdW5kOiBmYWxzZSxcbiAgICAgICAgcm9vdDogb3B0aW9ucy50YXJnZXQgfHwgcGFyZW50X2NvbXBvbmVudC4kJC5yb290XG4gICAgfTtcbiAgICBhcHBlbmRfc3R5bGVzICYmIGFwcGVuZF9zdHlsZXMoJCQucm9vdCk7XG4gICAgbGV0IHJlYWR5ID0gZmFsc2U7XG4gICAgJCQuY3R4ID0gaW5zdGFuY2VcbiAgICAgICAgPyBpbnN0YW5jZShjb21wb25lbnQsIG9wdGlvbnMucHJvcHMgfHwge30sIChpLCByZXQsIC4uLnJlc3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmVzdC5sZW5ndGggPyByZXN0WzBdIDogcmV0O1xuICAgICAgICAgICAgaWYgKCQkLmN0eCAmJiBub3RfZXF1YWwoJCQuY3R4W2ldLCAkJC5jdHhbaV0gPSB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoISQkLnNraXBfYm91bmQgJiYgJCQuYm91bmRbaV0pXG4gICAgICAgICAgICAgICAgICAgICQkLmJvdW5kW2ldKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAocmVhZHkpXG4gICAgICAgICAgICAgICAgICAgIG1ha2VfZGlydHkoY29tcG9uZW50LCBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH0pXG4gICAgICAgIDogW107XG4gICAgJCQudXBkYXRlKCk7XG4gICAgcmVhZHkgPSB0cnVlO1xuICAgIHJ1bl9hbGwoJCQuYmVmb3JlX3VwZGF0ZSk7XG4gICAgLy8gYGZhbHNlYCBhcyBhIHNwZWNpYWwgY2FzZSBvZiBubyBET00gY29tcG9uZW50XG4gICAgJCQuZnJhZ21lbnQgPSBjcmVhdGVfZnJhZ21lbnQgPyBjcmVhdGVfZnJhZ21lbnQoJCQuY3R4KSA6IGZhbHNlO1xuICAgIGlmIChvcHRpb25zLnRhcmdldCkge1xuICAgICAgICBpZiAob3B0aW9ucy5oeWRyYXRlKSB7XG4gICAgICAgICAgICBzdGFydF9oeWRyYXRpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gY2hpbGRyZW4ob3B0aW9ucy50YXJnZXQpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50Lmwobm9kZXMpO1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaChkZXRhY2gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50LmMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5pbnRybylcbiAgICAgICAgICAgIHRyYW5zaXRpb25faW4oY29tcG9uZW50LiQkLmZyYWdtZW50KTtcbiAgICAgICAgbW91bnRfY29tcG9uZW50KGNvbXBvbmVudCwgb3B0aW9ucy50YXJnZXQsIG9wdGlvbnMuYW5jaG9yLCBvcHRpb25zLmN1c3RvbUVsZW1lbnQpO1xuICAgICAgICBlbmRfaHlkcmF0aW5nKCk7XG4gICAgICAgIGZsdXNoKCk7XG4gICAgfVxuICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChwYXJlbnRfY29tcG9uZW50KTtcbn1cbmxldCBTdmVsdGVFbGVtZW50O1xuaWYgKHR5cGVvZiBIVE1MRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIFN2ZWx0ZUVsZW1lbnQgPSBjbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICBzdXBlcigpO1xuICAgICAgICAgICAgdGhpcy5hdHRhY2hTaGFkb3coeyBtb2RlOiAnb3BlbicgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgICAgICAgICBjb25zdCB7IG9uX21vdW50IH0gPSB0aGlzLiQkO1xuICAgICAgICAgICAgdGhpcy4kJC5vbl9kaXNjb25uZWN0ID0gb25fbW91bnQubWFwKHJ1bikuZmlsdGVyKGlzX2Z1bmN0aW9uKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgdG9kbzogaW1wcm92ZSB0eXBpbmdzXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLiQkLnNsb3R0ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHRvZG86IGltcHJvdmUgdHlwaW5nc1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQodGhpcy4kJC5zbG90dGVkW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhhdHRyLCBfb2xkVmFsdWUsIG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzW2F0dHJdID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgICAgICAgICBydW5fYWxsKHRoaXMuJCQub25fZGlzY29ubmVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgJGRlc3Ryb3koKSB7XG4gICAgICAgICAgICBkZXN0cm95X2NvbXBvbmVudCh0aGlzLCAxKTtcbiAgICAgICAgICAgIHRoaXMuJGRlc3Ryb3kgPSBub29wO1xuICAgICAgICB9XG4gICAgICAgICRvbih0eXBlLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgLy8gVE9ETyBzaG91bGQgdGhpcyBkZWxlZ2F0ZSB0byBhZGRFdmVudExpc3RlbmVyP1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2tzID0gKHRoaXMuJCQuY2FsbGJhY2tzW3R5cGVdIHx8ICh0aGlzLiQkLmNhbGxiYWNrc1t0eXBlXSA9IFtdKSk7XG4gICAgICAgICAgICBjYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gY2FsbGJhY2tzLmluZGV4T2YoY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICAkc2V0KCQkcHJvcHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLiQkc2V0ICYmICFpc19lbXB0eSgkJHByb3BzKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJCQuc2tpcF9ib3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy4kJHNldCgkJHByb3BzKTtcbiAgICAgICAgICAgICAgICB0aGlzLiQkLnNraXBfYm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59XG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFN2ZWx0ZSBjb21wb25lbnRzLiBVc2VkIHdoZW4gZGV2PWZhbHNlLlxuICovXG5jbGFzcyBTdmVsdGVDb21wb25lbnQge1xuICAgICRkZXN0cm95KCkge1xuICAgICAgICBkZXN0cm95X2NvbXBvbmVudCh0aGlzLCAxKTtcbiAgICAgICAgdGhpcy4kZGVzdHJveSA9IG5vb3A7XG4gICAgfVxuICAgICRvbih0eXBlLCBjYWxsYmFjaykge1xuICAgICAgICBjb25zdCBjYWxsYmFja3MgPSAodGhpcy4kJC5jYWxsYmFja3NbdHlwZV0gfHwgKHRoaXMuJCQuY2FsbGJhY2tzW3R5cGVdID0gW10pKTtcbiAgICAgICAgY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBjYWxsYmFja3MuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAkc2V0KCQkcHJvcHMpIHtcbiAgICAgICAgaWYgKHRoaXMuJCRzZXQgJiYgIWlzX2VtcHR5KCQkcHJvcHMpKSB7XG4gICAgICAgICAgICB0aGlzLiQkLnNraXBfYm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy4kJHNldCgkJHByb3BzKTtcbiAgICAgICAgICAgIHRoaXMuJCQuc2tpcF9ib3VuZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkaXNwYXRjaF9kZXYodHlwZSwgZGV0YWlsKSB7XG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21fZXZlbnQodHlwZSwgT2JqZWN0LmFzc2lnbih7IHZlcnNpb246ICczLjQ1LjAnIH0sIGRldGFpbCksIHRydWUpKTtcbn1cbmZ1bmN0aW9uIGFwcGVuZF9kZXYodGFyZ2V0LCBub2RlKSB7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01JbnNlcnQnLCB7IHRhcmdldCwgbm9kZSB9KTtcbiAgICBhcHBlbmQodGFyZ2V0LCBub2RlKTtcbn1cbmZ1bmN0aW9uIGFwcGVuZF9oeWRyYXRpb25fZGV2KHRhcmdldCwgbm9kZSkge1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NSW5zZXJ0JywgeyB0YXJnZXQsIG5vZGUgfSk7XG4gICAgYXBwZW5kX2h5ZHJhdGlvbih0YXJnZXQsIG5vZGUpO1xufVxuZnVuY3Rpb24gaW5zZXJ0X2Rldih0YXJnZXQsIG5vZGUsIGFuY2hvcikge1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NSW5zZXJ0JywgeyB0YXJnZXQsIG5vZGUsIGFuY2hvciB9KTtcbiAgICBpbnNlcnQodGFyZ2V0LCBub2RlLCBhbmNob3IpO1xufVxuZnVuY3Rpb24gaW5zZXJ0X2h5ZHJhdGlvbl9kZXYodGFyZ2V0LCBub2RlLCBhbmNob3IpIHtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTUluc2VydCcsIHsgdGFyZ2V0LCBub2RlLCBhbmNob3IgfSk7XG4gICAgaW5zZXJ0X2h5ZHJhdGlvbih0YXJnZXQsIG5vZGUsIGFuY2hvcik7XG59XG5mdW5jdGlvbiBkZXRhY2hfZGV2KG5vZGUpIHtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTVJlbW92ZScsIHsgbm9kZSB9KTtcbiAgICBkZXRhY2gobm9kZSk7XG59XG5mdW5jdGlvbiBkZXRhY2hfYmV0d2Vlbl9kZXYoYmVmb3JlLCBhZnRlcikge1xuICAgIHdoaWxlIChiZWZvcmUubmV4dFNpYmxpbmcgJiYgYmVmb3JlLm5leHRTaWJsaW5nICE9PSBhZnRlcikge1xuICAgICAgICBkZXRhY2hfZGV2KGJlZm9yZS5uZXh0U2libGluZyk7XG4gICAgfVxufVxuZnVuY3Rpb24gZGV0YWNoX2JlZm9yZV9kZXYoYWZ0ZXIpIHtcbiAgICB3aGlsZSAoYWZ0ZXIucHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICAgIGRldGFjaF9kZXYoYWZ0ZXIucHJldmlvdXNTaWJsaW5nKTtcbiAgICB9XG59XG5mdW5jdGlvbiBkZXRhY2hfYWZ0ZXJfZGV2KGJlZm9yZSkge1xuICAgIHdoaWxlIChiZWZvcmUubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgZGV0YWNoX2RldihiZWZvcmUubmV4dFNpYmxpbmcpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxpc3Rlbl9kZXYobm9kZSwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMsIGhhc19wcmV2ZW50X2RlZmF1bHQsIGhhc19zdG9wX3Byb3BhZ2F0aW9uKSB7XG4gICAgY29uc3QgbW9kaWZpZXJzID0gb3B0aW9ucyA9PT0gdHJ1ZSA/IFsnY2FwdHVyZSddIDogb3B0aW9ucyA/IEFycmF5LmZyb20oT2JqZWN0LmtleXMob3B0aW9ucykpIDogW107XG4gICAgaWYgKGhhc19wcmV2ZW50X2RlZmF1bHQpXG4gICAgICAgIG1vZGlmaWVycy5wdXNoKCdwcmV2ZW50RGVmYXVsdCcpO1xuICAgIGlmIChoYXNfc3RvcF9wcm9wYWdhdGlvbilcbiAgICAgICAgbW9kaWZpZXJzLnB1c2goJ3N0b3BQcm9wYWdhdGlvbicpO1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NQWRkRXZlbnRMaXN0ZW5lcicsIHsgbm9kZSwgZXZlbnQsIGhhbmRsZXIsIG1vZGlmaWVycyB9KTtcbiAgICBjb25zdCBkaXNwb3NlID0gbGlzdGVuKG5vZGUsIGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTVJlbW92ZUV2ZW50TGlzdGVuZXInLCB7IG5vZGUsIGV2ZW50LCBoYW5kbGVyLCBtb2RpZmllcnMgfSk7XG4gICAgICAgIGRpc3Bvc2UoKTtcbiAgICB9O1xufVxuZnVuY3Rpb24gYXR0cl9kZXYobm9kZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xuICAgIGF0dHIobm9kZSwgYXR0cmlidXRlLCB2YWx1ZSk7XG4gICAgaWYgKHZhbHVlID09IG51bGwpXG4gICAgICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NUmVtb3ZlQXR0cmlidXRlJywgeyBub2RlLCBhdHRyaWJ1dGUgfSk7XG4gICAgZWxzZVxuICAgICAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTVNldEF0dHJpYnV0ZScsIHsgbm9kZSwgYXR0cmlidXRlLCB2YWx1ZSB9KTtcbn1cbmZ1bmN0aW9uIHByb3BfZGV2KG5vZGUsIHByb3BlcnR5LCB2YWx1ZSkge1xuICAgIG5vZGVbcHJvcGVydHldID0gdmFsdWU7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01TZXRQcm9wZXJ0eScsIHsgbm9kZSwgcHJvcGVydHksIHZhbHVlIH0pO1xufVxuZnVuY3Rpb24gZGF0YXNldF9kZXYobm9kZSwgcHJvcGVydHksIHZhbHVlKSB7XG4gICAgbm9kZS5kYXRhc2V0W3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NU2V0RGF0YXNldCcsIHsgbm9kZSwgcHJvcGVydHksIHZhbHVlIH0pO1xufVxuZnVuY3Rpb24gc2V0X2RhdGFfZGV2KHRleHQsIGRhdGEpIHtcbiAgICBkYXRhID0gJycgKyBkYXRhO1xuICAgIGlmICh0ZXh0Lndob2xlVGV4dCA9PT0gZGF0YSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NU2V0RGF0YScsIHsgbm9kZTogdGV4dCwgZGF0YSB9KTtcbiAgICB0ZXh0LmRhdGEgPSBkYXRhO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVfZWFjaF9hcmd1bWVudChhcmcpIHtcbiAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ3N0cmluZycgJiYgIShhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgJ2xlbmd0aCcgaW4gYXJnKSkge1xuICAgICAgICBsZXQgbXNnID0gJ3sjZWFjaH0gb25seSBpdGVyYXRlcyBvdmVyIGFycmF5LWxpa2Ugb2JqZWN0cy4nO1xuICAgICAgICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBhcmcgJiYgU3ltYm9sLml0ZXJhdG9yIGluIGFyZykge1xuICAgICAgICAgICAgbXNnICs9ICcgWW91IGNhbiB1c2UgYSBzcHJlYWQgdG8gY29udmVydCB0aGlzIGl0ZXJhYmxlIGludG8gYW4gYXJyYXkuJztcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9XG59XG5mdW5jdGlvbiB2YWxpZGF0ZV9zbG90cyhuYW1lLCBzbG90LCBrZXlzKSB7XG4gICAgZm9yIChjb25zdCBzbG90X2tleSBvZiBPYmplY3Qua2V5cyhzbG90KSkge1xuICAgICAgICBpZiAoIX5rZXlzLmluZGV4T2Yoc2xvdF9rZXkpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYDwke25hbWV9PiByZWNlaXZlZCBhbiB1bmV4cGVjdGVkIHNsb3QgXCIke3Nsb3Rfa2V5fVwiLmApO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBTdmVsdGUgY29tcG9uZW50cyB3aXRoIHNvbWUgbWlub3IgZGV2LWVuaGFuY2VtZW50cy4gVXNlZCB3aGVuIGRldj10cnVlLlxuICovXG5jbGFzcyBTdmVsdGVDb21wb25lbnREZXYgZXh0ZW5kcyBTdmVsdGVDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFvcHRpb25zIHx8ICghb3B0aW9ucy50YXJnZXQgJiYgIW9wdGlvbnMuJCRpbmxpbmUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIndGFyZ2V0JyBpcyBhIHJlcXVpcmVkIG9wdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlcigpO1xuICAgIH1cbiAgICAkZGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIuJGRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy4kZGVzdHJveSA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignQ29tcG9uZW50IHdhcyBhbHJlYWR5IGRlc3Ryb3llZCcpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgJGNhcHR1cmVfc3RhdGUoKSB7IH1cbiAgICAkaW5qZWN0X3N0YXRlKCkgeyB9XG59XG4vKipcbiAqIEJhc2UgY2xhc3MgdG8gY3JlYXRlIHN0cm9uZ2x5IHR5cGVkIFN2ZWx0ZSBjb21wb25lbnRzLlxuICogVGhpcyBvbmx5IGV4aXN0cyBmb3IgdHlwaW5nIHB1cnBvc2VzIGFuZCBzaG91bGQgYmUgdXNlZCBpbiBgLmQudHNgIGZpbGVzLlxuICpcbiAqICMjIyBFeGFtcGxlOlxuICpcbiAqIFlvdSBoYXZlIGNvbXBvbmVudCBsaWJyYXJ5IG9uIG5wbSBjYWxsZWQgYGNvbXBvbmVudC1saWJyYXJ5YCwgZnJvbSB3aGljaFxuICogeW91IGV4cG9ydCBhIGNvbXBvbmVudCBjYWxsZWQgYE15Q29tcG9uZW50YC4gRm9yIFN2ZWx0ZStUeXBlU2NyaXB0IHVzZXJzLFxuICogeW91IHdhbnQgdG8gcHJvdmlkZSB0eXBpbmdzLiBUaGVyZWZvcmUgeW91IGNyZWF0ZSBhIGBpbmRleC5kLnRzYDpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBTdmVsdGVDb21wb25lbnRUeXBlZCB9IGZyb20gXCJzdmVsdGVcIjtcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCBleHRlbmRzIFN2ZWx0ZUNvbXBvbmVudFR5cGVkPHtmb286IHN0cmluZ30+IHt9XG4gKiBgYGBcbiAqIFR5cGluZyB0aGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciBJREVzIGxpa2UgVlMgQ29kZSB3aXRoIHRoZSBTdmVsdGUgZXh0ZW5zaW9uXG4gKiB0byBwcm92aWRlIGludGVsbGlzZW5zZSBhbmQgdG8gdXNlIHRoZSBjb21wb25lbnQgbGlrZSB0aGlzIGluIGEgU3ZlbHRlIGZpbGVcbiAqIHdpdGggVHlwZVNjcmlwdDpcbiAqIGBgYHN2ZWx0ZVxuICogPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAqIFx0aW1wb3J0IHsgTXlDb21wb25lbnQgfSBmcm9tIFwiY29tcG9uZW50LWxpYnJhcnlcIjtcbiAqIDwvc2NyaXB0PlxuICogPE15Q29tcG9uZW50IGZvbz17J2Jhcid9IC8+XG4gKiBgYGBcbiAqXG4gKiAjIyMjIFdoeSBub3QgbWFrZSB0aGlzIHBhcnQgb2YgYFN2ZWx0ZUNvbXBvbmVudChEZXYpYD9cbiAqIEJlY2F1c2VcbiAqIGBgYHRzXG4gKiBjbGFzcyBBU3ViY2xhc3NPZlN2ZWx0ZUNvbXBvbmVudCBleHRlbmRzIFN2ZWx0ZUNvbXBvbmVudDx7Zm9vOiBzdHJpbmd9PiB7fVxuICogY29uc3QgY29tcG9uZW50OiB0eXBlb2YgU3ZlbHRlQ29tcG9uZW50ID0gQVN1YmNsYXNzT2ZTdmVsdGVDb21wb25lbnQ7XG4gKiBgYGBcbiAqIHdpbGwgdGhyb3cgYSB0eXBlIGVycm9yLCBzbyB3ZSBuZWVkIHRvIHNlcGFyYXRlIHRoZSBtb3JlIHN0cmljdGx5IHR5cGVkIGNsYXNzLlxuICovXG5jbGFzcyBTdmVsdGVDb21wb25lbnRUeXBlZCBleHRlbmRzIFN2ZWx0ZUNvbXBvbmVudERldiB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG59XG5mdW5jdGlvbiBsb29wX2d1YXJkKHRpbWVvdXQpIHtcbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKERhdGUubm93KCkgLSBzdGFydCA+IHRpbWVvdXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5maW5pdGUgbG9vcCBkZXRlY3RlZCcpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuZXhwb3J0IHsgSHRtbFRhZywgSHRtbFRhZ0h5ZHJhdGlvbiwgU3ZlbHRlQ29tcG9uZW50LCBTdmVsdGVDb21wb25lbnREZXYsIFN2ZWx0ZUNvbXBvbmVudFR5cGVkLCBTdmVsdGVFbGVtZW50LCBhY3Rpb25fZGVzdHJveWVyLCBhZGRfYXR0cmlidXRlLCBhZGRfY2xhc3NlcywgYWRkX2ZsdXNoX2NhbGxiYWNrLCBhZGRfbG9jYXRpb24sIGFkZF9yZW5kZXJfY2FsbGJhY2ssIGFkZF9yZXNpemVfbGlzdGVuZXIsIGFkZF90cmFuc2Zvcm0sIGFmdGVyVXBkYXRlLCBhcHBlbmQsIGFwcGVuZF9kZXYsIGFwcGVuZF9lbXB0eV9zdHlsZXNoZWV0LCBhcHBlbmRfaHlkcmF0aW9uLCBhcHBlbmRfaHlkcmF0aW9uX2RldiwgYXBwZW5kX3N0eWxlcywgYXNzaWduLCBhdHRyLCBhdHRyX2RldiwgYXR0cmlidXRlX3RvX29iamVjdCwgYmVmb3JlVXBkYXRlLCBiaW5kLCBiaW5kaW5nX2NhbGxiYWNrcywgYmxhbmtfb2JqZWN0LCBidWJibGUsIGNoZWNrX291dHJvcywgY2hpbGRyZW4sIGNsYWltX2NvbXBvbmVudCwgY2xhaW1fZWxlbWVudCwgY2xhaW1faHRtbF90YWcsIGNsYWltX3NwYWNlLCBjbGFpbV9zdmdfZWxlbWVudCwgY2xhaW1fdGV4dCwgY2xlYXJfbG9vcHMsIGNvbXBvbmVudF9zdWJzY3JpYmUsIGNvbXB1dGVfcmVzdF9wcm9wcywgY29tcHV0ZV9zbG90cywgY3JlYXRlRXZlbnREaXNwYXRjaGVyLCBjcmVhdGVfYW5pbWF0aW9uLCBjcmVhdGVfYmlkaXJlY3Rpb25hbF90cmFuc2l0aW9uLCBjcmVhdGVfY29tcG9uZW50LCBjcmVhdGVfaW5fdHJhbnNpdGlvbiwgY3JlYXRlX291dF90cmFuc2l0aW9uLCBjcmVhdGVfc2xvdCwgY3JlYXRlX3Nzcl9jb21wb25lbnQsIGN1cnJlbnRfY29tcG9uZW50LCBjdXN0b21fZXZlbnQsIGRhdGFzZXRfZGV2LCBkZWJ1ZywgZGVzdHJveV9ibG9jaywgZGVzdHJveV9jb21wb25lbnQsIGRlc3Ryb3lfZWFjaCwgZGV0YWNoLCBkZXRhY2hfYWZ0ZXJfZGV2LCBkZXRhY2hfYmVmb3JlX2RldiwgZGV0YWNoX2JldHdlZW5fZGV2LCBkZXRhY2hfZGV2LCBkaXJ0eV9jb21wb25lbnRzLCBkaXNwYXRjaF9kZXYsIGVhY2gsIGVsZW1lbnQsIGVsZW1lbnRfaXMsIGVtcHR5LCBlbmRfaHlkcmF0aW5nLCBlc2NhcGUsIGVzY2FwZV9hdHRyaWJ1dGVfdmFsdWUsIGVzY2FwZV9vYmplY3QsIGVzY2FwZWQsIGV4Y2x1ZGVfaW50ZXJuYWxfcHJvcHMsIGZpeF9hbmRfZGVzdHJveV9ibG9jaywgZml4X2FuZF9vdXRyb19hbmRfZGVzdHJveV9ibG9jaywgZml4X3Bvc2l0aW9uLCBmbHVzaCwgZ2V0QWxsQ29udGV4dHMsIGdldENvbnRleHQsIGdldF9hbGxfZGlydHlfZnJvbV9zY29wZSwgZ2V0X2JpbmRpbmdfZ3JvdXBfdmFsdWUsIGdldF9jdXJyZW50X2NvbXBvbmVudCwgZ2V0X2N1c3RvbV9lbGVtZW50c19zbG90cywgZ2V0X3Jvb3RfZm9yX3N0eWxlLCBnZXRfc2xvdF9jaGFuZ2VzLCBnZXRfc3ByZWFkX29iamVjdCwgZ2V0X3NwcmVhZF91cGRhdGUsIGdldF9zdG9yZV92YWx1ZSwgZ2xvYmFscywgZ3JvdXBfb3V0cm9zLCBoYW5kbGVfcHJvbWlzZSwgaGFzQ29udGV4dCwgaGFzX3Byb3AsIGlkZW50aXR5LCBpbml0LCBpbnNlcnQsIGluc2VydF9kZXYsIGluc2VydF9oeWRyYXRpb24sIGluc2VydF9oeWRyYXRpb25fZGV2LCBpbnRyb3MsIGludmFsaWRfYXR0cmlidXRlX25hbWVfY2hhcmFjdGVyLCBpc19jbGllbnQsIGlzX2Nyb3Nzb3JpZ2luLCBpc19lbXB0eSwgaXNfZnVuY3Rpb24sIGlzX3Byb21pc2UsIGxpc3RlbiwgbGlzdGVuX2RldiwgbG9vcCwgbG9vcF9ndWFyZCwgbWlzc2luZ19jb21wb25lbnQsIG1vdW50X2NvbXBvbmVudCwgbm9vcCwgbm90X2VxdWFsLCBub3csIG51bGxfdG9fZW1wdHksIG9iamVjdF93aXRob3V0X3Byb3BlcnRpZXMsIG9uRGVzdHJveSwgb25Nb3VudCwgb25jZSwgb3V0cm9fYW5kX2Rlc3Ryb3lfYmxvY2ssIHByZXZlbnRfZGVmYXVsdCwgcHJvcF9kZXYsIHF1ZXJ5X3NlbGVjdG9yX2FsbCwgcmFmLCBydW4sIHJ1bl9hbGwsIHNhZmVfbm90X2VxdWFsLCBzY2hlZHVsZV91cGRhdGUsIHNlbGVjdF9tdWx0aXBsZV92YWx1ZSwgc2VsZWN0X29wdGlvbiwgc2VsZWN0X29wdGlvbnMsIHNlbGVjdF92YWx1ZSwgc2VsZiwgc2V0Q29udGV4dCwgc2V0X2F0dHJpYnV0ZXMsIHNldF9jdXJyZW50X2NvbXBvbmVudCwgc2V0X2N1c3RvbV9lbGVtZW50X2RhdGEsIHNldF9kYXRhLCBzZXRfZGF0YV9kZXYsIHNldF9pbnB1dF90eXBlLCBzZXRfaW5wdXRfdmFsdWUsIHNldF9ub3csIHNldF9yYWYsIHNldF9zdG9yZV92YWx1ZSwgc2V0X3N0eWxlLCBzZXRfc3ZnX2F0dHJpYnV0ZXMsIHNwYWNlLCBzcHJlYWQsIHNyY191cmxfZXF1YWwsIHN0YXJ0X2h5ZHJhdGluZywgc3RvcF9wcm9wYWdhdGlvbiwgc3Vic2NyaWJlLCBzdmdfZWxlbWVudCwgdGV4dCwgdGljaywgdGltZV9yYW5nZXNfdG9fYXJyYXksIHRvX251bWJlciwgdG9nZ2xlX2NsYXNzLCB0cmFuc2l0aW9uX2luLCB0cmFuc2l0aW9uX291dCwgdHJ1c3RlZCwgdXBkYXRlX2F3YWl0X2Jsb2NrX2JyYW5jaCwgdXBkYXRlX2tleWVkX2VhY2gsIHVwZGF0ZV9zbG90LCB1cGRhdGVfc2xvdF9iYXNlLCB2YWxpZGF0ZV9jb21wb25lbnQsIHZhbGlkYXRlX2VhY2hfYXJndW1lbnQsIHZhbGlkYXRlX2VhY2hfa2V5cywgdmFsaWRhdGVfc2xvdHMsIHZhbGlkYXRlX3N0b3JlLCB4bGlua19hdHRyIH07XG4iLG51bGwsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgaW1wb3J0IHtGaWxlU3lzdGVtQWRhcHRlcn0gZnJvbSBcIm9ic2lkaWFuXCI7XG4gICAgaW1wb3J0IHtTVFlMRVNIRUVUX1BBVEgsIEdyYXBoU3R5bGVTaGVldCwgREVGQVVMVF9VU0VSX1NIRUVUfSBmcm9tIFwiLi4vLi4vdml6L3N0eWxlc2hlZXRcIjtcbiAgICAvLyBpbXBvcnQge3Byb21pc2VzIGFzIGZzfSBmcm9tIFwiZnNcIjtcbiAgICBpbXBvcnQgdHlwZSBKdWdnbFBsdWdpbiBmcm9tIFwiLi4vLi4vLi4vbWFpblwiO1xuXG4gICAgZXhwb3J0IGxldCBwbHVnaW46IEp1Z2dsUGx1Z2luO1xuICAgIGxldCBzdHlsZXNoZWV0UGF0aCA9IFNUWUxFU0hFRVRfUEFUSChwbHVnaW4udmF1bHQpO1xuICAgIGxldCBvcGVuR3JhcGhDU1MgPSBhc3luYyBmdW5jdGlvbigpIHtcbiAgICAgICAgbGV0IGZ1bGxQYXRoID0gKHBsdWdpbi52YXVsdC5hZGFwdGVyIGFzIEZpbGVTeXN0ZW1BZGFwdGVyKS5nZXRGdWxsUGF0aChzdHlsZXNoZWV0UGF0aCk7XG4gICAgICAgIC8vIFdyaXRlIGEgZmlsZSwgdGhyb3cgYW4gZXJyb3IgaWYgaXQgYWxyZWFkeSBleGlzdHMgKGZsYWcgd3gpLiBKdXN0IGNhdGNoIHRoYXQgYmVjYXVzZSBpdCdzIGZpbmUuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzaGVsbCA9IHJlcXVpcmUoJ2VsZWN0cm9uJykuc2hlbGw7XG4gICAgICAgICAgICBjb25zdCB7cHJvbWlzZXN9ID0gcmVxdWlyZShcImZzXCIpO1xuICAgICAgICAgICAgYXdhaXQgcHJvbWlzZXMud3JpdGVGaWxlKGZ1bGxQYXRoLFxuICAgICAgICAgICAgICAgIERFRkFVTFRfVVNFUl9TSEVFVCxcbiAgICAgICAgICAgICAgICB7ZmxhZzogJ3d4J30pLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhd2FpdCBzaGVsbC5vcGVuUGF0aChmdWxsUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ291bGRuJ3Qgb3BlbiBncmFwaC5jc3MuIFRoaXMgaXMgcHJvYmFibHkgYmVjYXVzZSB3ZSBhcmUgb24gbW9iaWxlLlwiKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG48L3NjcmlwdD5cblxuPGgzPlxuICAgIEFwcGVhcmFuY2VcbjwvaDM+XG48cD5cbiAgICBZb3UgY2FuIHN0eWxlIHRoZSBncmFwaCB3aXRoIGNzcy4gVGhpcyBpcyBkb25lIGluIHRoZSB7c3R5bGVzaGVldFBhdGh9IGZpbGUuXG4gICAgU2VlIDxhIGhyZWY9XCJodHRwczovL3B1Ymxpc2gub2JzaWRpYW4ubWQvc2VtYW50aWMtb2JzaWRpYW4vTm9kZStzdHlsaW5nXCI+dGhpcyBwYWdlPC9hPiBmb3IgaGVscCB3aXRoIHN0eWxpbmcuXG48L3A+XG5cbjxidXR0b24gb246Y2xpY2s9e29wZW5HcmFwaENTU30+XG4gICAgT3BlbiBncmFwaC5jc3MgaW4gZGVmYXVsdCBlZGl0b3IuXG48L2J1dHRvbj4iLCJcbjxzY3JpcHQ+XG4gICAgbGV0IGJ1dHRvbjtcbiAgICB2YXIgaW5pdGlhbGl6ZUtvZmkgPSAoKSA9PiB7XG4gICAgICAgIGtvZml3aWRnZXQyLmluaXQoJ1N1cHBvcnQgSnVnZ2wgZGV2ZWxvcG1lbnQhJywgJyMyOWFiZTAnLCAnQjBCMjNPUFVFJyk7XG4gICAgICAgIGJ1dHRvbi5pbm5lckhUTUwgPSBrb2Zpd2lkZ2V0Mi5nZXRIVE1MKCk7XG4gICAgfVxuPC9zY3JpcHQ+XG5cbjxzdmVsdGU6aGVhZD5cbiAgICA8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBzcmM9J2h0dHBzOi8va28tZmkuY29tL3dpZGdldHMvd2lkZ2V0XzIuanMnIG9uOmxvYWQ9e2luaXRpYWxpemVLb2ZpfT5cbiAgICA8L3NjcmlwdD5cbjwvc3ZlbHRlOmhlYWQ+XG48ZGl2IGJpbmQ6dGhpcz17YnV0dG9ufT48L2Rpdj5cbiIsbnVsbCwiLyoqXG4gKiBsb2Rhc2ggKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pxdWVyeS5vcmcvPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG5cbi8qKiBVc2VkIGFzIHRoZSBgVHlwZUVycm9yYCBtZXNzYWdlIGZvciBcIkZ1bmN0aW9uc1wiIG1ldGhvZHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbSA9IC9eXFxzK3xcXHMrJC9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAqIHRoZSBVbml4IGVwb2NoICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBEYXRlXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lc3RhbXAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZGVmZXIoZnVuY3Rpb24oc3RhbXApIHtcbiAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAqIH0sIF8ubm93KCkpO1xuICogLy8gPT4gTG9ncyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpdCB0b29rIGZvciB0aGUgZGVmZXJyZWQgaW52b2NhdGlvbi5cbiAqL1xudmFyIG5vdyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcm9vdC5EYXRlLm5vdygpO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gKiBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICogICAndHJhaWxpbmcnOiBmYWxzZVxuICogfSkpO1xuICpcbiAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RBcmdzLFxuICAgICAgbGFzdFRoaXMsXG4gICAgICBtYXhXYWl0LFxuICAgICAgcmVzdWx0LFxuICAgICAgdGltZXJJZCxcbiAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICByZXN1bHQgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICByZXR1cm4gbWF4aW5nID8gbmF0aXZlTWluKHJlc3VsdCwgbWF4V2FpdCAtIHRpbWVTaW5jZUxhc3RJbnZva2UpIDogcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lO1xuXG4gICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgIC8vIGl0IGFzIHRoZSB0cmFpbGluZyBlZGdlLCBvciB3ZSd2ZSBoaXQgdGhlIGBtYXhXYWl0YCBsaW1pdC5cbiAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgIGlmIChzaG91bGRJbnZva2UodGltZSkpIHtcbiAgICAgIHJldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7XG4gICAgfVxuICAgIC8vIFJlc3RhcnQgdGhlIHRpbWVyLlxuICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgcmVtYWluaW5nV2FpdCh0aW1lKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFpbGluZ0VkZ2UodGltZSkge1xuICAgIHRpbWVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgLy8gZGVib3VuY2VkIGF0IGxlYXN0IG9uY2UuXG4gICAgaWYgKHRyYWlsaW5nICYmIGxhc3RBcmdzKSB7XG4gICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICB9XG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICB9XG4gICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgIGxhc3RBcmdzID0gbGFzdENhbGxUaW1lID0gbGFzdFRoaXMgPSB0aW1lcklkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgcmV0dXJuIHRpbWVySWQgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IHRyYWlsaW5nRWRnZShub3coKSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgdmFyIHRpbWUgPSBub3coKSxcbiAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgIGxhc3RUaGlzID0gdGhpcztcbiAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICB9XG4gICAgICBpZiAobWF4aW5nKSB7XG4gICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIHJldHVybiBpbnZva2VGdW5jKGxhc3RDYWxsVGltZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgZGVib3VuY2VkLmNhbmNlbCA9IGNhbmNlbDtcbiAgZGVib3VuY2VkLmZsdXNoID0gZmx1c2g7XG4gIHJldHVybiBkZWJvdW5jZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTnVtYmVyKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBOQU47XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYm91bmNlO1xuIiwiLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjguMFxuKGZ1bmN0aW9uKCkge1xuICB2YXIgSGVhcCwgZGVmYXVsdENtcCwgZmxvb3IsIGhlYXBpZnksIGhlYXBwb3AsIGhlYXBwdXNoLCBoZWFwcHVzaHBvcCwgaGVhcHJlcGxhY2UsIGluc29ydCwgbWluLCBubGFyZ2VzdCwgbnNtYWxsZXN0LCB1cGRhdGVJdGVtLCBfc2lmdGRvd24sIF9zaWZ0dXA7XG5cbiAgZmxvb3IgPSBNYXRoLmZsb29yLCBtaW4gPSBNYXRoLm1pbjtcblxuXG4gIC8qXG4gIERlZmF1bHQgY29tcGFyaXNvbiBmdW5jdGlvbiB0byBiZSB1c2VkXG4gICAqL1xuXG4gIGRlZmF1bHRDbXAgPSBmdW5jdGlvbih4LCB5KSB7XG4gICAgaWYgKHggPCB5KSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmICh4ID4geSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9O1xuXG5cbiAgLypcbiAgSW5zZXJ0IGl0ZW0geCBpbiBsaXN0IGEsIGFuZCBrZWVwIGl0IHNvcnRlZCBhc3N1bWluZyBhIGlzIHNvcnRlZC5cbiAgXG4gIElmIHggaXMgYWxyZWFkeSBpbiBhLCBpbnNlcnQgaXQgdG8gdGhlIHJpZ2h0IG9mIHRoZSByaWdodG1vc3QgeC5cbiAgXG4gIE9wdGlvbmFsIGFyZ3MgbG8gKGRlZmF1bHQgMCkgYW5kIGhpIChkZWZhdWx0IGEubGVuZ3RoKSBib3VuZCB0aGUgc2xpY2VcbiAgb2YgYSB0byBiZSBzZWFyY2hlZC5cbiAgICovXG5cbiAgaW5zb3J0ID0gZnVuY3Rpb24oYSwgeCwgbG8sIGhpLCBjbXApIHtcbiAgICB2YXIgbWlkO1xuICAgIGlmIChsbyA9PSBudWxsKSB7XG4gICAgICBsbyA9IDA7XG4gICAgfVxuICAgIGlmIChjbXAgPT0gbnVsbCkge1xuICAgICAgY21wID0gZGVmYXVsdENtcDtcbiAgICB9XG4gICAgaWYgKGxvIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZScpO1xuICAgIH1cbiAgICBpZiAoaGkgPT0gbnVsbCkge1xuICAgICAgaGkgPSBhLmxlbmd0aDtcbiAgICB9XG4gICAgd2hpbGUgKGxvIDwgaGkpIHtcbiAgICAgIG1pZCA9IGZsb29yKChsbyArIGhpKSAvIDIpO1xuICAgICAgaWYgKGNtcCh4LCBhW21pZF0pIDwgMCkge1xuICAgICAgICBoaSA9IG1pZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvID0gbWlkICsgMTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIChbXS5zcGxpY2UuYXBwbHkoYSwgW2xvLCBsbyAtIGxvXS5jb25jYXQoeCkpLCB4KTtcbiAgfTtcblxuXG4gIC8qXG4gIFB1c2ggaXRlbSBvbnRvIGhlYXAsIG1haW50YWluaW5nIHRoZSBoZWFwIGludmFyaWFudC5cbiAgICovXG5cbiAgaGVhcHB1c2ggPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICBjbXAgPSBkZWZhdWx0Q21wO1xuICAgIH1cbiAgICBhcnJheS5wdXNoKGl0ZW0pO1xuICAgIHJldHVybiBfc2lmdGRvd24oYXJyYXksIDAsIGFycmF5Lmxlbmd0aCAtIDEsIGNtcCk7XG4gIH07XG5cblxuICAvKlxuICBQb3AgdGhlIHNtYWxsZXN0IGl0ZW0gb2ZmIHRoZSBoZWFwLCBtYWludGFpbmluZyB0aGUgaGVhcCBpbnZhcmlhbnQuXG4gICAqL1xuXG4gIGhlYXBwb3AgPSBmdW5jdGlvbihhcnJheSwgY21wKSB7XG4gICAgdmFyIGxhc3RlbHQsIHJldHVybml0ZW07XG4gICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICBjbXAgPSBkZWZhdWx0Q21wO1xuICAgIH1cbiAgICBsYXN0ZWx0ID0gYXJyYXkucG9wKCk7XG4gICAgaWYgKGFycmF5Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuaXRlbSA9IGFycmF5WzBdO1xuICAgICAgYXJyYXlbMF0gPSBsYXN0ZWx0O1xuICAgICAgX3NpZnR1cChhcnJheSwgMCwgY21wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuaXRlbSA9IGxhc3RlbHQ7XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5pdGVtO1xuICB9O1xuXG5cbiAgLypcbiAgUG9wIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgc21hbGxlc3QgdmFsdWUsIGFuZCBhZGQgdGhlIG5ldyBpdGVtLlxuICBcbiAgVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGhlYXBwb3AoKSBmb2xsb3dlZCBieSBoZWFwcHVzaCgpLCBhbmQgY2FuIGJlXG4gIG1vcmUgYXBwcm9wcmlhdGUgd2hlbiB1c2luZyBhIGZpeGVkIHNpemUgaGVhcC4gTm90ZSB0aGF0IHRoZSB2YWx1ZVxuICByZXR1cm5lZCBtYXkgYmUgbGFyZ2VyIHRoYW4gaXRlbSEgVGhhdCBjb25zdHJhaW5zIHJlYXNvbmFibGUgdXNlIG9mXG4gIHRoaXMgcm91dGluZSB1bmxlc3Mgd3JpdHRlbiBhcyBwYXJ0IG9mIGEgY29uZGl0aW9uYWwgcmVwbGFjZW1lbnQ6XG4gICAgICBpZiBpdGVtID4gYXJyYXlbMF1cbiAgICAgICAgaXRlbSA9IGhlYXByZXBsYWNlKGFycmF5LCBpdGVtKVxuICAgKi9cblxuICBoZWFwcmVwbGFjZSA9IGZ1bmN0aW9uKGFycmF5LCBpdGVtLCBjbXApIHtcbiAgICB2YXIgcmV0dXJuaXRlbTtcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIHJldHVybml0ZW0gPSBhcnJheVswXTtcbiAgICBhcnJheVswXSA9IGl0ZW07XG4gICAgX3NpZnR1cChhcnJheSwgMCwgY21wKTtcbiAgICByZXR1cm4gcmV0dXJuaXRlbTtcbiAgfTtcblxuXG4gIC8qXG4gIEZhc3QgdmVyc2lvbiBvZiBhIGhlYXBwdXNoIGZvbGxvd2VkIGJ5IGEgaGVhcHBvcC5cbiAgICovXG5cbiAgaGVhcHB1c2hwb3AgPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgdmFyIF9yZWY7XG4gICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICBjbXAgPSBkZWZhdWx0Q21wO1xuICAgIH1cbiAgICBpZiAoYXJyYXkubGVuZ3RoICYmIGNtcChhcnJheVswXSwgaXRlbSkgPCAwKSB7XG4gICAgICBfcmVmID0gW2FycmF5WzBdLCBpdGVtXSwgaXRlbSA9IF9yZWZbMF0sIGFycmF5WzBdID0gX3JlZlsxXTtcbiAgICAgIF9zaWZ0dXAoYXJyYXksIDAsIGNtcCk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtO1xuICB9O1xuXG5cbiAgLypcbiAgVHJhbnNmb3JtIGxpc3QgaW50byBhIGhlYXAsIGluLXBsYWNlLCBpbiBPKGFycmF5Lmxlbmd0aCkgdGltZS5cbiAgICovXG5cbiAgaGVhcGlmeSA9IGZ1bmN0aW9uKGFycmF5LCBjbXApIHtcbiAgICB2YXIgaSwgX2ksIF9qLCBfbGVuLCBfcmVmLCBfcmVmMSwgX3Jlc3VsdHMsIF9yZXN1bHRzMTtcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIF9yZWYxID0gKGZ1bmN0aW9uKCkge1xuICAgICAgX3Jlc3VsdHMxID0gW107XG4gICAgICBmb3IgKHZhciBfaiA9IDAsIF9yZWYgPSBmbG9vcihhcnJheS5sZW5ndGggLyAyKTsgMCA8PSBfcmVmID8gX2ogPCBfcmVmIDogX2ogPiBfcmVmOyAwIDw9IF9yZWYgPyBfaisrIDogX2otLSl7IF9yZXN1bHRzMS5wdXNoKF9qKTsgfVxuICAgICAgcmV0dXJuIF9yZXN1bHRzMTtcbiAgICB9KS5hcHBseSh0aGlzKS5yZXZlcnNlKCk7XG4gICAgX3Jlc3VsdHMgPSBbXTtcbiAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYxLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICBpID0gX3JlZjFbX2ldO1xuICAgICAgX3Jlc3VsdHMucHVzaChfc2lmdHVwKGFycmF5LCBpLCBjbXApKTtcbiAgICB9XG4gICAgcmV0dXJuIF9yZXN1bHRzO1xuICB9O1xuXG5cbiAgLypcbiAgVXBkYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZ2l2ZW4gaXRlbSBpbiB0aGUgaGVhcC5cbiAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGl0ZW0gaXMgYmVpbmcgbW9kaWZpZWQuXG4gICAqL1xuXG4gIHVwZGF0ZUl0ZW0gPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgdmFyIHBvcztcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIHBvcyA9IGFycmF5LmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgX3NpZnRkb3duKGFycmF5LCAwLCBwb3MsIGNtcCk7XG4gICAgcmV0dXJuIF9zaWZ0dXAoYXJyYXksIHBvcywgY21wKTtcbiAgfTtcblxuXG4gIC8qXG4gIEZpbmQgdGhlIG4gbGFyZ2VzdCBlbGVtZW50cyBpbiBhIGRhdGFzZXQuXG4gICAqL1xuXG4gIG5sYXJnZXN0ID0gZnVuY3Rpb24oYXJyYXksIG4sIGNtcCkge1xuICAgIHZhciBlbGVtLCByZXN1bHQsIF9pLCBfbGVuLCBfcmVmO1xuICAgIGlmIChjbXAgPT0gbnVsbCkge1xuICAgICAgY21wID0gZGVmYXVsdENtcDtcbiAgICB9XG4gICAgcmVzdWx0ID0gYXJyYXkuc2xpY2UoMCwgbik7XG4gICAgaWYgKCFyZXN1bHQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBoZWFwaWZ5KHJlc3VsdCwgY21wKTtcbiAgICBfcmVmID0gYXJyYXkuc2xpY2Uobik7XG4gICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICBlbGVtID0gX3JlZltfaV07XG4gICAgICBoZWFwcHVzaHBvcChyZXN1bHQsIGVsZW0sIGNtcCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQuc29ydChjbXApLnJldmVyc2UoKTtcbiAgfTtcblxuXG4gIC8qXG4gIEZpbmQgdGhlIG4gc21hbGxlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LlxuICAgKi9cblxuICBuc21hbGxlc3QgPSBmdW5jdGlvbihhcnJheSwgbiwgY21wKSB7XG4gICAgdmFyIGVsZW0sIGksIGxvcywgcmVzdWx0LCBfaSwgX2osIF9sZW4sIF9yZWYsIF9yZWYxLCBfcmVzdWx0cztcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIGlmIChuICogMTAgPD0gYXJyYXkubGVuZ3RoKSB7XG4gICAgICByZXN1bHQgPSBhcnJheS5zbGljZSgwLCBuKS5zb3J0KGNtcCk7XG4gICAgICBpZiAoIXJlc3VsdC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGxvcyA9IHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV07XG4gICAgICBfcmVmID0gYXJyYXkuc2xpY2Uobik7XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgZWxlbSA9IF9yZWZbX2ldO1xuICAgICAgICBpZiAoY21wKGVsZW0sIGxvcykgPCAwKSB7XG4gICAgICAgICAgaW5zb3J0KHJlc3VsdCwgZWxlbSwgMCwgbnVsbCwgY21wKTtcbiAgICAgICAgICByZXN1bHQucG9wKCk7XG4gICAgICAgICAgbG9zID0gcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgaGVhcGlmeShhcnJheSwgY21wKTtcbiAgICBfcmVzdWx0cyA9IFtdO1xuICAgIGZvciAoaSA9IF9qID0gMCwgX3JlZjEgPSBtaW4obiwgYXJyYXkubGVuZ3RoKTsgMCA8PSBfcmVmMSA/IF9qIDwgX3JlZjEgOiBfaiA+IF9yZWYxOyBpID0gMCA8PSBfcmVmMSA/ICsrX2ogOiAtLV9qKSB7XG4gICAgICBfcmVzdWx0cy5wdXNoKGhlYXBwb3AoYXJyYXksIGNtcCkpO1xuICAgIH1cbiAgICByZXR1cm4gX3Jlc3VsdHM7XG4gIH07XG5cbiAgX3NpZnRkb3duID0gZnVuY3Rpb24oYXJyYXksIHN0YXJ0cG9zLCBwb3MsIGNtcCkge1xuICAgIHZhciBuZXdpdGVtLCBwYXJlbnQsIHBhcmVudHBvcztcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIG5ld2l0ZW0gPSBhcnJheVtwb3NdO1xuICAgIHdoaWxlIChwb3MgPiBzdGFydHBvcykge1xuICAgICAgcGFyZW50cG9zID0gKHBvcyAtIDEpID4+IDE7XG4gICAgICBwYXJlbnQgPSBhcnJheVtwYXJlbnRwb3NdO1xuICAgICAgaWYgKGNtcChuZXdpdGVtLCBwYXJlbnQpIDwgMCkge1xuICAgICAgICBhcnJheVtwb3NdID0gcGFyZW50O1xuICAgICAgICBwb3MgPSBwYXJlbnRwb3M7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBhcnJheVtwb3NdID0gbmV3aXRlbTtcbiAgfTtcblxuICBfc2lmdHVwID0gZnVuY3Rpb24oYXJyYXksIHBvcywgY21wKSB7XG4gICAgdmFyIGNoaWxkcG9zLCBlbmRwb3MsIG5ld2l0ZW0sIHJpZ2h0cG9zLCBzdGFydHBvcztcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIGVuZHBvcyA9IGFycmF5Lmxlbmd0aDtcbiAgICBzdGFydHBvcyA9IHBvcztcbiAgICBuZXdpdGVtID0gYXJyYXlbcG9zXTtcbiAgICBjaGlsZHBvcyA9IDIgKiBwb3MgKyAxO1xuICAgIHdoaWxlIChjaGlsZHBvcyA8IGVuZHBvcykge1xuICAgICAgcmlnaHRwb3MgPSBjaGlsZHBvcyArIDE7XG4gICAgICBpZiAocmlnaHRwb3MgPCBlbmRwb3MgJiYgIShjbXAoYXJyYXlbY2hpbGRwb3NdLCBhcnJheVtyaWdodHBvc10pIDwgMCkpIHtcbiAgICAgICAgY2hpbGRwb3MgPSByaWdodHBvcztcbiAgICAgIH1cbiAgICAgIGFycmF5W3Bvc10gPSBhcnJheVtjaGlsZHBvc107XG4gICAgICBwb3MgPSBjaGlsZHBvcztcbiAgICAgIGNoaWxkcG9zID0gMiAqIHBvcyArIDE7XG4gICAgfVxuICAgIGFycmF5W3Bvc10gPSBuZXdpdGVtO1xuICAgIHJldHVybiBfc2lmdGRvd24oYXJyYXksIHN0YXJ0cG9zLCBwb3MsIGNtcCk7XG4gIH07XG5cbiAgSGVhcCA9IChmdW5jdGlvbigpIHtcbiAgICBIZWFwLnB1c2ggPSBoZWFwcHVzaDtcblxuICAgIEhlYXAucG9wID0gaGVhcHBvcDtcblxuICAgIEhlYXAucmVwbGFjZSA9IGhlYXByZXBsYWNlO1xuXG4gICAgSGVhcC5wdXNocG9wID0gaGVhcHB1c2hwb3A7XG5cbiAgICBIZWFwLmhlYXBpZnkgPSBoZWFwaWZ5O1xuXG4gICAgSGVhcC51cGRhdGVJdGVtID0gdXBkYXRlSXRlbTtcblxuICAgIEhlYXAubmxhcmdlc3QgPSBubGFyZ2VzdDtcblxuICAgIEhlYXAubnNtYWxsZXN0ID0gbnNtYWxsZXN0O1xuXG4gICAgZnVuY3Rpb24gSGVhcChjbXApIHtcbiAgICAgIHRoaXMuY21wID0gY21wICE9IG51bGwgPyBjbXAgOiBkZWZhdWx0Q21wO1xuICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuICAgIH1cblxuICAgIEhlYXAucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbih4KSB7XG4gICAgICByZXR1cm4gaGVhcHB1c2godGhpcy5ub2RlcywgeCwgdGhpcy5jbXApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBoZWFwcG9wKHRoaXMubm9kZXMsIHRoaXMuY21wKTtcbiAgICB9O1xuXG4gICAgSGVhcC5wcm90b3R5cGUucGVlayA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXNbMF07XG4gICAgfTtcblxuICAgIEhlYXAucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24oeCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXMuaW5kZXhPZih4KSAhPT0gLTE7XG4gICAgfTtcblxuICAgIEhlYXAucHJvdG90eXBlLnJlcGxhY2UgPSBmdW5jdGlvbih4KSB7XG4gICAgICByZXR1cm4gaGVhcHJlcGxhY2UodGhpcy5ub2RlcywgeCwgdGhpcy5jbXApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5wdXNocG9wID0gZnVuY3Rpb24oeCkge1xuICAgICAgcmV0dXJuIGhlYXBwdXNocG9wKHRoaXMubm9kZXMsIHgsIHRoaXMuY21wKTtcbiAgICB9O1xuXG4gICAgSGVhcC5wcm90b3R5cGUuaGVhcGlmeSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGhlYXBpZnkodGhpcy5ub2RlcywgdGhpcy5jbXApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS51cGRhdGVJdGVtID0gZnVuY3Rpb24oeCkge1xuICAgICAgcmV0dXJuIHVwZGF0ZUl0ZW0odGhpcy5ub2RlcywgeCwgdGhpcy5jbXApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXMgPSBbXTtcbiAgICB9O1xuXG4gICAgSGVhcC5wcm90b3R5cGUuZW1wdHkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGVzLmxlbmd0aCA9PT0gMDtcbiAgICB9O1xuXG4gICAgSGVhcC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXMubGVuZ3RoO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGhlYXA7XG4gICAgICBoZWFwID0gbmV3IEhlYXAoKTtcbiAgICAgIGhlYXAubm9kZXMgPSB0aGlzLm5vZGVzLnNsaWNlKDApO1xuICAgICAgcmV0dXJuIGhlYXA7XG4gICAgfTtcblxuICAgIEhlYXAucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGVzLnNsaWNlKDApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5pbnNlcnQgPSBIZWFwLnByb3RvdHlwZS5wdXNoO1xuXG4gICAgSGVhcC5wcm90b3R5cGUudG9wID0gSGVhcC5wcm90b3R5cGUucGVlaztcblxuICAgIEhlYXAucHJvdG90eXBlLmZyb250ID0gSGVhcC5wcm90b3R5cGUucGVlaztcblxuICAgIEhlYXAucHJvdG90eXBlLmhhcyA9IEhlYXAucHJvdG90eXBlLmNvbnRhaW5zO1xuXG4gICAgSGVhcC5wcm90b3R5cGUuY29weSA9IEhlYXAucHJvdG90eXBlLmNsb25lO1xuXG4gICAgcmV0dXJuIEhlYXA7XG5cbiAgfSkoKTtcblxuICAoZnVuY3Rpb24ocm9vdCwgZmFjdG9yeSkge1xuICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICAgIHJldHVybiBkZWZpbmUoW10sIGZhY3RvcnkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByb290LkhlYXAgPSBmYWN0b3J5KCk7XG4gICAgfVxuICB9KSh0aGlzLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gSGVhcDtcbiAgfSk7XG5cbn0pLmNhbGwodGhpcyk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2hlYXAnKTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjEsIFRoZSBDeXRvc2NhcGUgQ29uc29ydGl1bS5cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mXG4gKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSDigJxTb2Z0d2FyZeKAnSksIHRvIGRlYWwgaW5cbiAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbiAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzXG4gKiBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG9cbiAqIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIOKAnEFTIElT4oCdLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wRGVmYXVsdCAoZXgpIHsgcmV0dXJuIChleCAmJiAodHlwZW9mIGV4ID09PSAnb2JqZWN0JykgJiYgJ2RlZmF1bHQnIGluIGV4KSA/IGV4WydkZWZhdWx0J10gOiBleDsgfVxuXG52YXIgdXRpbCA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCdsb2Rhc2guZGVib3VuY2UnKSk7XG52YXIgSGVhcCA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCdoZWFwJykpO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfdHlwZW9mKG9iaik7XG59XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpO1xufVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHtcbiAgdmFyIF9hcnIgPSBbXTtcbiAgdmFyIF9uID0gdHJ1ZTtcbiAgdmFyIF9kID0gZmFsc2U7XG4gIHZhciBfZSA9IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9kID0gdHJ1ZTtcbiAgICBfZSA9IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfYXJyO1xufVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTtcbn1cblxudmFyIHdpbmRvdyQxID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogd2luZG93OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbnZhciBuYXZpZ2F0b3IgPSB3aW5kb3ckMSA/IHdpbmRvdyQxLm5hdmlnYXRvciA6IG51bGw7XG52YXIgZG9jdW1lbnQkMSA9IHdpbmRvdyQxID8gd2luZG93JDEuZG9jdW1lbnQgOiBudWxsO1xuXG52YXIgdHlwZW9mc3RyID0gX3R5cGVvZignJyk7XG5cbnZhciB0eXBlb2ZvYmogPSBfdHlwZW9mKHt9KTtcblxudmFyIHR5cGVvZmZuID0gX3R5cGVvZihmdW5jdGlvbiAoKSB7fSk7XG5cbnZhciB0eXBlb2ZodG1sZWxlID0gdHlwZW9mIEhUTUxFbGVtZW50ID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoSFRNTEVsZW1lbnQpO1xuXG52YXIgaW5zdGFuY2VTdHIgPSBmdW5jdGlvbiBpbnN0YW5jZVN0cihvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBvYmouaW5zdGFuY2VTdHJpbmcgJiYgZm4ob2JqLmluc3RhbmNlU3RyaW5nKSA/IG9iai5pbnN0YW5jZVN0cmluZygpIDogbnVsbDtcbn07XG5cbnZhciBzdHJpbmcgPSBmdW5jdGlvbiBzdHJpbmcob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiBfdHlwZW9mKG9iaikgPT0gdHlwZW9mc3RyO1xufTtcbnZhciBmbiA9IGZ1bmN0aW9uIGZuKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgX3R5cGVvZihvYmopID09PSB0eXBlb2Zmbjtcbn07XG52YXIgYXJyYXkgPSBmdW5jdGlvbiBhcnJheShvYmopIHtcbiAgcmV0dXJuICFlbGVtZW50T3JDb2xsZWN0aW9uKG9iaikgJiYgKEFycmF5LmlzQXJyYXkgPyBBcnJheS5pc0FycmF5KG9iaikgOiBvYmogIT0gbnVsbCAmJiBvYmogaW5zdGFuY2VvZiBBcnJheSk7XG59O1xudmFyIHBsYWluT2JqZWN0ID0gZnVuY3Rpb24gcGxhaW5PYmplY3Qob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiBfdHlwZW9mKG9iaikgPT09IHR5cGVvZm9iaiAmJiAhYXJyYXkob2JqKSAmJiBvYmouY29uc3RydWN0b3IgPT09IE9iamVjdDtcbn07XG52YXIgb2JqZWN0ID0gZnVuY3Rpb24gb2JqZWN0KG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgX3R5cGVvZihvYmopID09PSB0eXBlb2ZvYmo7XG59O1xudmFyIG51bWJlciA9IGZ1bmN0aW9uIG51bWJlcihvYmopIHtcbiAgcmV0dXJuIG9iaiAhPSBudWxsICYmIF90eXBlb2Yob2JqKSA9PT0gX3R5cGVvZigxKSAmJiAhaXNOYU4ob2JqKTtcbn07XG52YXIgaW50ZWdlciA9IGZ1bmN0aW9uIGludGVnZXIob2JqKSB7XG4gIHJldHVybiBudW1iZXIob2JqKSAmJiBNYXRoLmZsb29yKG9iaikgPT09IG9iajtcbn07XG52YXIgaHRtbEVsZW1lbnQgPSBmdW5jdGlvbiBodG1sRWxlbWVudChvYmopIHtcbiAgaWYgKCd1bmRlZmluZWQnID09PSB0eXBlb2ZodG1sZWxlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbCAhPSBvYmogJiYgb2JqIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG4gIH1cbn07XG52YXIgZWxlbWVudE9yQ29sbGVjdGlvbiA9IGZ1bmN0aW9uIGVsZW1lbnRPckNvbGxlY3Rpb24ob2JqKSB7XG4gIHJldHVybiBlbGVtZW50KG9iaikgfHwgY29sbGVjdGlvbihvYmopO1xufTtcbnZhciBlbGVtZW50ID0gZnVuY3Rpb24gZWxlbWVudChvYmopIHtcbiAgcmV0dXJuIGluc3RhbmNlU3RyKG9iaikgPT09ICdjb2xsZWN0aW9uJyAmJiBvYmouX3ByaXZhdGUuc2luZ2xlO1xufTtcbnZhciBjb2xsZWN0aW9uID0gZnVuY3Rpb24gY29sbGVjdGlvbihvYmopIHtcbiAgcmV0dXJuIGluc3RhbmNlU3RyKG9iaikgPT09ICdjb2xsZWN0aW9uJyAmJiAhb2JqLl9wcml2YXRlLnNpbmdsZTtcbn07XG52YXIgY29yZSA9IGZ1bmN0aW9uIGNvcmUob2JqKSB7XG4gIHJldHVybiBpbnN0YW5jZVN0cihvYmopID09PSAnY29yZSc7XG59O1xudmFyIHN0eWxlc2hlZXQgPSBmdW5jdGlvbiBzdHlsZXNoZWV0KG9iaikge1xuICByZXR1cm4gaW5zdGFuY2VTdHIob2JqKSA9PT0gJ3N0eWxlc2hlZXQnO1xufTtcbnZhciBldmVudCA9IGZ1bmN0aW9uIGV2ZW50KG9iaikge1xuICByZXR1cm4gaW5zdGFuY2VTdHIob2JqKSA9PT0gJ2V2ZW50Jztcbn07XG52YXIgZW1wdHlTdHJpbmcgPSBmdW5jdGlvbiBlbXB0eVN0cmluZyhvYmopIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgIC8vIG51bGwgaXMgZW1wdHlcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChvYmogPT09ICcnIHx8IG9iai5tYXRjaCgvXlxccyskLykpIHtcbiAgICByZXR1cm4gdHJ1ZTsgLy8gZW1wdHkgc3RyaW5nIGlzIGVtcHR5XG4gIH1cblxuICByZXR1cm4gZmFsc2U7IC8vIG90aGVyd2lzZSwgd2UgZG9uJ3Qga25vdyB3aGF0IHdlJ3ZlIGdvdFxufTtcbnZhciBkb21FbGVtZW50ID0gZnVuY3Rpb24gZG9tRWxlbWVudChvYmopIHtcbiAgaWYgKHR5cGVvZiBIVE1MRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7IC8vIHdlJ3JlIG5vdCBpbiBhIGJyb3dzZXIgc28gaXQgZG9lc24ndCBtYXR0ZXJcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG4gIH1cbn07XG52YXIgYm91bmRpbmdCb3ggPSBmdW5jdGlvbiBib3VuZGluZ0JveChvYmopIHtcbiAgcmV0dXJuIHBsYWluT2JqZWN0KG9iaikgJiYgbnVtYmVyKG9iai54MSkgJiYgbnVtYmVyKG9iai54MikgJiYgbnVtYmVyKG9iai55MSkgJiYgbnVtYmVyKG9iai55Mik7XG59O1xudmFyIHByb21pc2UgPSBmdW5jdGlvbiBwcm9taXNlKG9iaikge1xuICByZXR1cm4gb2JqZWN0KG9iaikgJiYgZm4ob2JqLnRoZW4pO1xufTtcbnZhciBtcyA9IGZ1bmN0aW9uIG1zKCkge1xuICByZXR1cm4gbmF2aWdhdG9yICYmIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL21zaWV8dHJpZGVudHxlZGdlL2kpO1xufTsgLy8gcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRldGVjdCB0aGlzLi4uXG5cbnZhciBtZW1vaXplID0gZnVuY3Rpb24gbWVtb2l6ZShmbiwga2V5Rm4pIHtcbiAgaWYgKCFrZXlGbikge1xuICAgIGtleUZuID0gZnVuY3Rpb24ga2V5Rm4oKSB7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gYXJndW1lbnRzWzBdO1xuICAgICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICAgIH1cblxuICAgICAgdmFyIGFyZ3MgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhcmdzLmpvaW4oJyQnKTtcbiAgICB9O1xuICB9XG5cbiAgdmFyIG1lbW9pemVkRm4gPSBmdW5jdGlvbiBtZW1vaXplZEZuKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgcmV0O1xuICAgIHZhciBrID0ga2V5Rm4uYXBwbHkoc2VsZiwgYXJncyk7XG4gICAgdmFyIGNhY2hlID0gbWVtb2l6ZWRGbi5jYWNoZTtcblxuICAgIGlmICghKHJldCA9IGNhY2hlW2tdKSkge1xuICAgICAgcmV0ID0gY2FjaGVba10gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIG1lbW9pemVkRm4uY2FjaGUgPSB7fTtcbiAgcmV0dXJuIG1lbW9pemVkRm47XG59O1xuXG52YXIgY2FtZWwyZGFzaCA9IG1lbW9pemUoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoLyhbQS1aXSkvZywgZnVuY3Rpb24gKHYpIHtcbiAgICByZXR1cm4gJy0nICsgdi50b0xvd2VyQ2FzZSgpO1xuICB9KTtcbn0pO1xudmFyIGRhc2gyY2FtZWwgPSBtZW1vaXplKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oLVxcdykvZywgZnVuY3Rpb24gKHYpIHtcbiAgICByZXR1cm4gdlsxXS50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbn0pO1xudmFyIHByZXBlbmRDYW1lbCA9IG1lbW9pemUoZnVuY3Rpb24gKHByZWZpeCwgc3RyKSB7XG4gIHJldHVybiBwcmVmaXggKyBzdHJbMF0udG9VcHBlckNhc2UoKSArIHN0ci5zdWJzdHJpbmcoMSk7XG59LCBmdW5jdGlvbiAocHJlZml4LCBzdHIpIHtcbiAgcmV0dXJuIHByZWZpeCArICckJyArIHN0cjtcbn0pO1xudmFyIGNhcGl0YWxpemUgPSBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cikge1xuICBpZiAoZW1wdHlTdHJpbmcoc3RyKSkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKTtcbn07XG5cbnZhciBudW1iZXIkMSA9ICcoPzpbLStdPyg/Oig/OlxcXFxkK3xcXFxcZCpcXFxcLlxcXFxkKykoPzpbRWVdWystXT9cXFxcZCspPykpJztcbnZhciByZ2JhID0gJ3JnYlthXT9cXFxcKCgnICsgbnVtYmVyJDEgKyAnWyVdPylcXFxccyosXFxcXHMqKCcgKyBudW1iZXIkMSArICdbJV0/KVxcXFxzKixcXFxccyooJyArIG51bWJlciQxICsgJ1slXT8pKD86XFxcXHMqLFxcXFxzKignICsgbnVtYmVyJDEgKyAnKSk/XFxcXCknO1xudmFyIHJnYmFOb0JhY2tSZWZzID0gJ3JnYlthXT9cXFxcKCg/OicgKyBudW1iZXIkMSArICdbJV0/KVxcXFxzKixcXFxccyooPzonICsgbnVtYmVyJDEgKyAnWyVdPylcXFxccyosXFxcXHMqKD86JyArIG51bWJlciQxICsgJ1slXT8pKD86XFxcXHMqLFxcXFxzKig/OicgKyBudW1iZXIkMSArICcpKT9cXFxcKSc7XG52YXIgaHNsYSA9ICdoc2xbYV0/XFxcXCgoJyArIG51bWJlciQxICsgJylcXFxccyosXFxcXHMqKCcgKyBudW1iZXIkMSArICdbJV0pXFxcXHMqLFxcXFxzKignICsgbnVtYmVyJDEgKyAnWyVdKSg/OlxcXFxzKixcXFxccyooJyArIG51bWJlciQxICsgJykpP1xcXFwpJztcbnZhciBoc2xhTm9CYWNrUmVmcyA9ICdoc2xbYV0/XFxcXCgoPzonICsgbnVtYmVyJDEgKyAnKVxcXFxzKixcXFxccyooPzonICsgbnVtYmVyJDEgKyAnWyVdKVxcXFxzKixcXFxccyooPzonICsgbnVtYmVyJDEgKyAnWyVdKSg/OlxcXFxzKixcXFxccyooPzonICsgbnVtYmVyJDEgKyAnKSk/XFxcXCknO1xudmFyIGhleDMgPSAnXFxcXCNbMC05YS1mQS1GXXszfSc7XG52YXIgaGV4NiA9ICdcXFxcI1swLTlhLWZBLUZdezZ9JztcblxudmFyIGFzY2VuZGluZyA9IGZ1bmN0aW9uIGFzY2VuZGluZyhhLCBiKSB7XG4gIGlmIChhIDwgYikge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIGlmIChhID4gYikge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59O1xudmFyIGRlc2NlbmRpbmcgPSBmdW5jdGlvbiBkZXNjZW5kaW5nKGEsIGIpIHtcbiAgcmV0dXJuIC0xICogYXNjZW5kaW5nKGEsIGIpO1xufTtcblxudmFyIGV4dGVuZCA9IE9iamVjdC5hc3NpZ24gIT0gbnVsbCA/IE9iamVjdC5hc3NpZ24uYmluZChPYmplY3QpIDogZnVuY3Rpb24gKHRndCkge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgb2JqID0gYXJnc1tpXTtcblxuICAgIGlmIChvYmogPT0gbnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBrZXlzLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgayA9IGtleXNbal07XG4gICAgICB0Z3Rba10gPSBvYmpba107XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRndDtcbn07XG5cbnZhciBoZXgydHVwbGUgPSBmdW5jdGlvbiBoZXgydHVwbGUoaGV4KSB7XG4gIGlmICghKGhleC5sZW5ndGggPT09IDQgfHwgaGV4Lmxlbmd0aCA9PT0gNykgfHwgaGV4WzBdICE9PSAnIycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgc2hvcnRIZXggPSBoZXgubGVuZ3RoID09PSA0O1xuICB2YXIgciwgZywgYjtcbiAgdmFyIGJhc2UgPSAxNjtcblxuICBpZiAoc2hvcnRIZXgpIHtcbiAgICByID0gcGFyc2VJbnQoaGV4WzFdICsgaGV4WzFdLCBiYXNlKTtcbiAgICBnID0gcGFyc2VJbnQoaGV4WzJdICsgaGV4WzJdLCBiYXNlKTtcbiAgICBiID0gcGFyc2VJbnQoaGV4WzNdICsgaGV4WzNdLCBiYXNlKTtcbiAgfSBlbHNlIHtcbiAgICByID0gcGFyc2VJbnQoaGV4WzFdICsgaGV4WzJdLCBiYXNlKTtcbiAgICBnID0gcGFyc2VJbnQoaGV4WzNdICsgaGV4WzRdLCBiYXNlKTtcbiAgICBiID0gcGFyc2VJbnQoaGV4WzVdICsgaGV4WzZdLCBiYXNlKTtcbiAgfVxuXG4gIHJldHVybiBbciwgZywgYl07XG59OyAvLyBnZXQgW3IsIGcsIGIsIGFdIGZyb20gaHNsKDAsIDAsIDApIG9yIGhzbGEoMCwgMCwgMCwgMClcblxudmFyIGhzbDJ0dXBsZSA9IGZ1bmN0aW9uIGhzbDJ0dXBsZShoc2wpIHtcbiAgdmFyIHJldDtcbiAgdmFyIGgsIHMsIGwsIGEsIHIsIGcsIGI7XG5cbiAgZnVuY3Rpb24gaHVlMnJnYihwLCBxLCB0KSB7XG4gICAgaWYgKHQgPCAwKSB0ICs9IDE7XG4gICAgaWYgKHQgPiAxKSB0IC09IDE7XG4gICAgaWYgKHQgPCAxIC8gNikgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7XG4gICAgaWYgKHQgPCAxIC8gMikgcmV0dXJuIHE7XG4gICAgaWYgKHQgPCAyIC8gMykgcmV0dXJuIHAgKyAocSAtIHApICogKDIgLyAzIC0gdCkgKiA2O1xuICAgIHJldHVybiBwO1xuICB9XG5cbiAgdmFyIG0gPSBuZXcgUmVnRXhwKCdeJyArIGhzbGEgKyAnJCcpLmV4ZWMoaHNsKTtcblxuICBpZiAobSkge1xuICAgIC8vIGdldCBodWVcbiAgICBoID0gcGFyc2VJbnQobVsxXSk7XG5cbiAgICBpZiAoaCA8IDApIHtcbiAgICAgIGggPSAoMzYwIC0gLTEgKiBoICUgMzYwKSAlIDM2MDtcbiAgICB9IGVsc2UgaWYgKGggPiAzNjApIHtcbiAgICAgIGggPSBoICUgMzYwO1xuICAgIH1cblxuICAgIGggLz0gMzYwOyAvLyBub3JtYWxpc2Ugb24gWzAsIDFdXG5cbiAgICBzID0gcGFyc2VGbG9hdChtWzJdKTtcblxuICAgIGlmIChzIDwgMCB8fCBzID4gMTAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBzYXR1cmF0aW9uIGlzIFswLCAxMDBdXG5cblxuICAgIHMgPSBzIC8gMTAwOyAvLyBub3JtYWxpc2Ugb24gWzAsIDFdXG5cbiAgICBsID0gcGFyc2VGbG9hdChtWzNdKTtcblxuICAgIGlmIChsIDwgMCB8fCBsID4gMTAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBsaWdodG5lc3MgaXMgWzAsIDEwMF1cblxuXG4gICAgbCA9IGwgLyAxMDA7IC8vIG5vcm1hbGlzZSBvbiBbMCwgMV1cblxuICAgIGEgPSBtWzRdO1xuXG4gICAgaWYgKGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYSA9IHBhcnNlRmxvYXQoYSk7XG5cbiAgICAgIGlmIChhIDwgMCB8fCBhID4gMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGFscGhhIGlzIFswLCAxXVxuXG4gICAgfSAvLyBub3csIGNvbnZlcnQgdG8gcmdiXG4gICAgLy8gY29kZSBmcm9tIGh0dHA6Ly9tamlqYWNrc29uLmNvbS8yMDA4LzAyL3JnYi10by1oc2wtYW5kLXJnYi10by1oc3YtY29sb3ItbW9kZWwtY29udmVyc2lvbi1hbGdvcml0aG1zLWluLWphdmFzY3JpcHRcblxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIHIgPSBnID0gYiA9IE1hdGgucm91bmQobCAqIDI1NSk7IC8vIGFjaHJvbWF0aWNcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHEgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzO1xuICAgICAgdmFyIHAgPSAyICogbCAtIHE7XG4gICAgICByID0gTWF0aC5yb3VuZCgyNTUgKiBodWUycmdiKHAsIHEsIGggKyAxIC8gMykpO1xuICAgICAgZyA9IE1hdGgucm91bmQoMjU1ICogaHVlMnJnYihwLCBxLCBoKSk7XG4gICAgICBiID0gTWF0aC5yb3VuZCgyNTUgKiBodWUycmdiKHAsIHEsIGggLSAxIC8gMykpO1xuICAgIH1cblxuICAgIHJldCA9IFtyLCBnLCBiLCBhXTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59OyAvLyBnZXQgW3IsIGcsIGIsIGFdIGZyb20gcmdiKDAsIDAsIDApIG9yIHJnYmEoMCwgMCwgMCwgMClcblxudmFyIHJnYjJ0dXBsZSA9IGZ1bmN0aW9uIHJnYjJ0dXBsZShyZ2IpIHtcbiAgdmFyIHJldDtcbiAgdmFyIG0gPSBuZXcgUmVnRXhwKCdeJyArIHJnYmEgKyAnJCcpLmV4ZWMocmdiKTtcblxuICBpZiAobSkge1xuICAgIHJldCA9IFtdO1xuICAgIHZhciBpc1BjdCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMzsgaSsrKSB7XG4gICAgICB2YXIgY2hhbm5lbCA9IG1baV07XG5cbiAgICAgIGlmIChjaGFubmVsW2NoYW5uZWwubGVuZ3RoIC0gMV0gPT09ICclJykge1xuICAgICAgICBpc1BjdFtpXSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGNoYW5uZWwgPSBwYXJzZUZsb2F0KGNoYW5uZWwpO1xuXG4gICAgICBpZiAoaXNQY3RbaV0pIHtcbiAgICAgICAgY2hhbm5lbCA9IGNoYW5uZWwgLyAxMDAgKiAyNTU7IC8vIG5vcm1hbGlzZSB0byBbMCwgMjU1XVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbm5lbCA8IDAgfHwgY2hhbm5lbCA+IDI1NSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGludmFsaWQgY2hhbm5lbCB2YWx1ZVxuXG5cbiAgICAgIHJldC5wdXNoKE1hdGguZmxvb3IoY2hhbm5lbCkpO1xuICAgIH1cblxuICAgIHZhciBhdExlYXN0T25lSXNQY3QgPSBpc1BjdFsxXSB8fCBpc1BjdFsyXSB8fCBpc1BjdFszXTtcbiAgICB2YXIgYWxsQXJlUGN0ID0gaXNQY3RbMV0gJiYgaXNQY3RbMl0gJiYgaXNQY3RbM107XG5cbiAgICBpZiAoYXRMZWFzdE9uZUlzUGN0ICYmICFhbGxBcmVQY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIG11c3QgYWxsIGJlIHBlcmNlbnQgdmFsdWVzIGlmIG9uZSBpc1xuXG5cbiAgICB2YXIgYWxwaGEgPSBtWzRdO1xuXG4gICAgaWYgKGFscGhhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFscGhhID0gcGFyc2VGbG9hdChhbHBoYSk7XG5cbiAgICAgIGlmIChhbHBoYSA8IDAgfHwgYWxwaGEgPiAxKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gaW52YWxpZCBhbHBoYSB2YWx1ZVxuXG5cbiAgICAgIHJldC5wdXNoKGFscGhhKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcbnZhciBjb2xvcm5hbWUydHVwbGUgPSBmdW5jdGlvbiBjb2xvcm5hbWUydHVwbGUoY29sb3IpIHtcbiAgcmV0dXJuIGNvbG9yc1tjb2xvci50b0xvd2VyQ2FzZSgpXTtcbn07XG52YXIgY29sb3IydHVwbGUgPSBmdW5jdGlvbiBjb2xvcjJ0dXBsZShjb2xvcikge1xuICByZXR1cm4gKGFycmF5KGNvbG9yKSA/IGNvbG9yIDogbnVsbCkgfHwgY29sb3JuYW1lMnR1cGxlKGNvbG9yKSB8fCBoZXgydHVwbGUoY29sb3IpIHx8IHJnYjJ0dXBsZShjb2xvcikgfHwgaHNsMnR1cGxlKGNvbG9yKTtcbn07XG52YXIgY29sb3JzID0ge1xuICAvLyBzcGVjaWFsIGNvbG91ciBuYW1lc1xuICB0cmFuc3BhcmVudDogWzAsIDAsIDAsIDBdLFxuICAvLyBOQiBhbHBoYSA9PT0gMFxuICAvLyByZWd1bGFyIGNvbG91cnNcbiAgYWxpY2VibHVlOiBbMjQwLCAyNDgsIDI1NV0sXG4gIGFudGlxdWV3aGl0ZTogWzI1MCwgMjM1LCAyMTVdLFxuICBhcXVhOiBbMCwgMjU1LCAyNTVdLFxuICBhcXVhbWFyaW5lOiBbMTI3LCAyNTUsIDIxMl0sXG4gIGF6dXJlOiBbMjQwLCAyNTUsIDI1NV0sXG4gIGJlaWdlOiBbMjQ1LCAyNDUsIDIyMF0sXG4gIGJpc3F1ZTogWzI1NSwgMjI4LCAxOTZdLFxuICBibGFjazogWzAsIDAsIDBdLFxuICBibGFuY2hlZGFsbW9uZDogWzI1NSwgMjM1LCAyMDVdLFxuICBibHVlOiBbMCwgMCwgMjU1XSxcbiAgYmx1ZXZpb2xldDogWzEzOCwgNDMsIDIyNl0sXG4gIGJyb3duOiBbMTY1LCA0MiwgNDJdLFxuICBidXJseXdvb2Q6IFsyMjIsIDE4NCwgMTM1XSxcbiAgY2FkZXRibHVlOiBbOTUsIDE1OCwgMTYwXSxcbiAgY2hhcnRyZXVzZTogWzEyNywgMjU1LCAwXSxcbiAgY2hvY29sYXRlOiBbMjEwLCAxMDUsIDMwXSxcbiAgY29yYWw6IFsyNTUsIDEyNywgODBdLFxuICBjb3JuZmxvd2VyYmx1ZTogWzEwMCwgMTQ5LCAyMzddLFxuICBjb3Juc2lsazogWzI1NSwgMjQ4LCAyMjBdLFxuICBjcmltc29uOiBbMjIwLCAyMCwgNjBdLFxuICBjeWFuOiBbMCwgMjU1LCAyNTVdLFxuICBkYXJrYmx1ZTogWzAsIDAsIDEzOV0sXG4gIGRhcmtjeWFuOiBbMCwgMTM5LCAxMzldLFxuICBkYXJrZ29sZGVucm9kOiBbMTg0LCAxMzQsIDExXSxcbiAgZGFya2dyYXk6IFsxNjksIDE2OSwgMTY5XSxcbiAgZGFya2dyZWVuOiBbMCwgMTAwLCAwXSxcbiAgZGFya2dyZXk6IFsxNjksIDE2OSwgMTY5XSxcbiAgZGFya2toYWtpOiBbMTg5LCAxODMsIDEwN10sXG4gIGRhcmttYWdlbnRhOiBbMTM5LCAwLCAxMzldLFxuICBkYXJrb2xpdmVncmVlbjogWzg1LCAxMDcsIDQ3XSxcbiAgZGFya29yYW5nZTogWzI1NSwgMTQwLCAwXSxcbiAgZGFya29yY2hpZDogWzE1MywgNTAsIDIwNF0sXG4gIGRhcmtyZWQ6IFsxMzksIDAsIDBdLFxuICBkYXJrc2FsbW9uOiBbMjMzLCAxNTAsIDEyMl0sXG4gIGRhcmtzZWFncmVlbjogWzE0MywgMTg4LCAxNDNdLFxuICBkYXJrc2xhdGVibHVlOiBbNzIsIDYxLCAxMzldLFxuICBkYXJrc2xhdGVncmF5OiBbNDcsIDc5LCA3OV0sXG4gIGRhcmtzbGF0ZWdyZXk6IFs0NywgNzksIDc5XSxcbiAgZGFya3R1cnF1b2lzZTogWzAsIDIwNiwgMjA5XSxcbiAgZGFya3Zpb2xldDogWzE0OCwgMCwgMjExXSxcbiAgZGVlcHBpbms6IFsyNTUsIDIwLCAxNDddLFxuICBkZWVwc2t5Ymx1ZTogWzAsIDE5MSwgMjU1XSxcbiAgZGltZ3JheTogWzEwNSwgMTA1LCAxMDVdLFxuICBkaW1ncmV5OiBbMTA1LCAxMDUsIDEwNV0sXG4gIGRvZGdlcmJsdWU6IFszMCwgMTQ0LCAyNTVdLFxuICBmaXJlYnJpY2s6IFsxNzgsIDM0LCAzNF0sXG4gIGZsb3JhbHdoaXRlOiBbMjU1LCAyNTAsIDI0MF0sXG4gIGZvcmVzdGdyZWVuOiBbMzQsIDEzOSwgMzRdLFxuICBmdWNoc2lhOiBbMjU1LCAwLCAyNTVdLFxuICBnYWluc2Jvcm86IFsyMjAsIDIyMCwgMjIwXSxcbiAgZ2hvc3R3aGl0ZTogWzI0OCwgMjQ4LCAyNTVdLFxuICBnb2xkOiBbMjU1LCAyMTUsIDBdLFxuICBnb2xkZW5yb2Q6IFsyMTgsIDE2NSwgMzJdLFxuICBncmF5OiBbMTI4LCAxMjgsIDEyOF0sXG4gIGdyZXk6IFsxMjgsIDEyOCwgMTI4XSxcbiAgZ3JlZW46IFswLCAxMjgsIDBdLFxuICBncmVlbnllbGxvdzogWzE3MywgMjU1LCA0N10sXG4gIGhvbmV5ZGV3OiBbMjQwLCAyNTUsIDI0MF0sXG4gIGhvdHBpbms6IFsyNTUsIDEwNSwgMTgwXSxcbiAgaW5kaWFucmVkOiBbMjA1LCA5MiwgOTJdLFxuICBpbmRpZ286IFs3NSwgMCwgMTMwXSxcbiAgaXZvcnk6IFsyNTUsIDI1NSwgMjQwXSxcbiAga2hha2k6IFsyNDAsIDIzMCwgMTQwXSxcbiAgbGF2ZW5kZXI6IFsyMzAsIDIzMCwgMjUwXSxcbiAgbGF2ZW5kZXJibHVzaDogWzI1NSwgMjQwLCAyNDVdLFxuICBsYXduZ3JlZW46IFsxMjQsIDI1MiwgMF0sXG4gIGxlbW9uY2hpZmZvbjogWzI1NSwgMjUwLCAyMDVdLFxuICBsaWdodGJsdWU6IFsxNzMsIDIxNiwgMjMwXSxcbiAgbGlnaHRjb3JhbDogWzI0MCwgMTI4LCAxMjhdLFxuICBsaWdodGN5YW46IFsyMjQsIDI1NSwgMjU1XSxcbiAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IFsyNTAsIDI1MCwgMjEwXSxcbiAgbGlnaHRncmF5OiBbMjExLCAyMTEsIDIxMV0sXG4gIGxpZ2h0Z3JlZW46IFsxNDQsIDIzOCwgMTQ0XSxcbiAgbGlnaHRncmV5OiBbMjExLCAyMTEsIDIxMV0sXG4gIGxpZ2h0cGluazogWzI1NSwgMTgyLCAxOTNdLFxuICBsaWdodHNhbG1vbjogWzI1NSwgMTYwLCAxMjJdLFxuICBsaWdodHNlYWdyZWVuOiBbMzIsIDE3OCwgMTcwXSxcbiAgbGlnaHRza3libHVlOiBbMTM1LCAyMDYsIDI1MF0sXG4gIGxpZ2h0c2xhdGVncmF5OiBbMTE5LCAxMzYsIDE1M10sXG4gIGxpZ2h0c2xhdGVncmV5OiBbMTE5LCAxMzYsIDE1M10sXG4gIGxpZ2h0c3RlZWxibHVlOiBbMTc2LCAxOTYsIDIyMl0sXG4gIGxpZ2h0eWVsbG93OiBbMjU1LCAyNTUsIDIyNF0sXG4gIGxpbWU6IFswLCAyNTUsIDBdLFxuICBsaW1lZ3JlZW46IFs1MCwgMjA1LCA1MF0sXG4gIGxpbmVuOiBbMjUwLCAyNDAsIDIzMF0sXG4gIG1hZ2VudGE6IFsyNTUsIDAsIDI1NV0sXG4gIG1hcm9vbjogWzEyOCwgMCwgMF0sXG4gIG1lZGl1bWFxdWFtYXJpbmU6IFsxMDIsIDIwNSwgMTcwXSxcbiAgbWVkaXVtYmx1ZTogWzAsIDAsIDIwNV0sXG4gIG1lZGl1bW9yY2hpZDogWzE4NiwgODUsIDIxMV0sXG4gIG1lZGl1bXB1cnBsZTogWzE0NywgMTEyLCAyMTldLFxuICBtZWRpdW1zZWFncmVlbjogWzYwLCAxNzksIDExM10sXG4gIG1lZGl1bXNsYXRlYmx1ZTogWzEyMywgMTA0LCAyMzhdLFxuICBtZWRpdW1zcHJpbmdncmVlbjogWzAsIDI1MCwgMTU0XSxcbiAgbWVkaXVtdHVycXVvaXNlOiBbNzIsIDIwOSwgMjA0XSxcbiAgbWVkaXVtdmlvbGV0cmVkOiBbMTk5LCAyMSwgMTMzXSxcbiAgbWlkbmlnaHRibHVlOiBbMjUsIDI1LCAxMTJdLFxuICBtaW50Y3JlYW06IFsyNDUsIDI1NSwgMjUwXSxcbiAgbWlzdHlyb3NlOiBbMjU1LCAyMjgsIDIyNV0sXG4gIG1vY2Nhc2luOiBbMjU1LCAyMjgsIDE4MV0sXG4gIG5hdmFqb3doaXRlOiBbMjU1LCAyMjIsIDE3M10sXG4gIG5hdnk6IFswLCAwLCAxMjhdLFxuICBvbGRsYWNlOiBbMjUzLCAyNDUsIDIzMF0sXG4gIG9saXZlOiBbMTI4LCAxMjgsIDBdLFxuICBvbGl2ZWRyYWI6IFsxMDcsIDE0MiwgMzVdLFxuICBvcmFuZ2U6IFsyNTUsIDE2NSwgMF0sXG4gIG9yYW5nZXJlZDogWzI1NSwgNjksIDBdLFxuICBvcmNoaWQ6IFsyMTgsIDExMiwgMjE0XSxcbiAgcGFsZWdvbGRlbnJvZDogWzIzOCwgMjMyLCAxNzBdLFxuICBwYWxlZ3JlZW46IFsxNTIsIDI1MSwgMTUyXSxcbiAgcGFsZXR1cnF1b2lzZTogWzE3NSwgMjM4LCAyMzhdLFxuICBwYWxldmlvbGV0cmVkOiBbMjE5LCAxMTIsIDE0N10sXG4gIHBhcGF5YXdoaXA6IFsyNTUsIDIzOSwgMjEzXSxcbiAgcGVhY2hwdWZmOiBbMjU1LCAyMTgsIDE4NV0sXG4gIHBlcnU6IFsyMDUsIDEzMywgNjNdLFxuICBwaW5rOiBbMjU1LCAxOTIsIDIwM10sXG4gIHBsdW06IFsyMjEsIDE2MCwgMjIxXSxcbiAgcG93ZGVyYmx1ZTogWzE3NiwgMjI0LCAyMzBdLFxuICBwdXJwbGU6IFsxMjgsIDAsIDEyOF0sXG4gIHJlZDogWzI1NSwgMCwgMF0sXG4gIHJvc3licm93bjogWzE4OCwgMTQzLCAxNDNdLFxuICByb3lhbGJsdWU6IFs2NSwgMTA1LCAyMjVdLFxuICBzYWRkbGVicm93bjogWzEzOSwgNjksIDE5XSxcbiAgc2FsbW9uOiBbMjUwLCAxMjgsIDExNF0sXG4gIHNhbmR5YnJvd246IFsyNDQsIDE2NCwgOTZdLFxuICBzZWFncmVlbjogWzQ2LCAxMzksIDg3XSxcbiAgc2Vhc2hlbGw6IFsyNTUsIDI0NSwgMjM4XSxcbiAgc2llbm5hOiBbMTYwLCA4MiwgNDVdLFxuICBzaWx2ZXI6IFsxOTIsIDE5MiwgMTkyXSxcbiAgc2t5Ymx1ZTogWzEzNSwgMjA2LCAyMzVdLFxuICBzbGF0ZWJsdWU6IFsxMDYsIDkwLCAyMDVdLFxuICBzbGF0ZWdyYXk6IFsxMTIsIDEyOCwgMTQ0XSxcbiAgc2xhdGVncmV5OiBbMTEyLCAxMjgsIDE0NF0sXG4gIHNub3c6IFsyNTUsIDI1MCwgMjUwXSxcbiAgc3ByaW5nZ3JlZW46IFswLCAyNTUsIDEyN10sXG4gIHN0ZWVsYmx1ZTogWzcwLCAxMzAsIDE4MF0sXG4gIHRhbjogWzIxMCwgMTgwLCAxNDBdLFxuICB0ZWFsOiBbMCwgMTI4LCAxMjhdLFxuICB0aGlzdGxlOiBbMjE2LCAxOTEsIDIxNl0sXG4gIHRvbWF0bzogWzI1NSwgOTksIDcxXSxcbiAgdHVycXVvaXNlOiBbNjQsIDIyNCwgMjA4XSxcbiAgdmlvbGV0OiBbMjM4LCAxMzAsIDIzOF0sXG4gIHdoZWF0OiBbMjQ1LCAyMjIsIDE3OV0sXG4gIHdoaXRlOiBbMjU1LCAyNTUsIDI1NV0sXG4gIHdoaXRlc21va2U6IFsyNDUsIDI0NSwgMjQ1XSxcbiAgeWVsbG93OiBbMjU1LCAyNTUsIDBdLFxuICB5ZWxsb3dncmVlbjogWzE1NCwgMjA1LCA1MF1cbn07XG5cbnZhciBzZXRNYXAgPSBmdW5jdGlvbiBzZXRNYXAob3B0aW9ucykge1xuICB2YXIgb2JqID0gb3B0aW9ucy5tYXA7XG4gIHZhciBrZXlzID0gb3B0aW9ucy5rZXlzO1xuICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICBpZiAocGxhaW5PYmplY3Qoa2V5KSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1RyaWVkIHRvIHNldCBtYXAgd2l0aCBvYmplY3Qga2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKGkgPCBrZXlzLmxlbmd0aCAtIDEpIHtcbiAgICAgIC8vIGV4dGVuZCB0aGUgbWFwIGlmIG5lY2Vzc2FyeVxuICAgICAgaWYgKG9ialtrZXldID09IG51bGwpIHtcbiAgICAgICAgb2JqW2tleV0gPSB7fTtcbiAgICAgIH1cblxuICAgICAgb2JqID0gb2JqW2tleV07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNldCB0aGUgdmFsdWVcbiAgICAgIG9ialtrZXldID0gb3B0aW9ucy52YWx1ZTtcbiAgICB9XG4gIH1cbn07IC8vIGdldHMgdGhlIHZhbHVlIGluIGEgbWFwIGV2ZW4gaWYgaXQncyBub3QgYnVpbHQgaW4gcGxhY2VzXG5cbnZhciBnZXRNYXAgPSBmdW5jdGlvbiBnZXRNYXAob3B0aW9ucykge1xuICB2YXIgb2JqID0gb3B0aW9ucy5tYXA7XG4gIHZhciBrZXlzID0gb3B0aW9ucy5rZXlzO1xuICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICBpZiAocGxhaW5PYmplY3Qoa2V5KSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1RyaWVkIHRvIGdldCBtYXAgd2l0aCBvYmplY3Qga2V5Jyk7XG4gICAgfVxuXG4gICAgb2JqID0gb2JqW2tleV07XG5cbiAgICBpZiAob2JqID09IG51bGwpIHtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn07IC8vIGRlbGV0ZXMgdGhlIGVudHJ5IGluIHRoZSBtYXBcblxudmFyIHBlcmZvcm1hbmNlID0gd2luZG93JDEgPyB3aW5kb3ckMS5wZXJmb3JtYW5jZSA6IG51bGw7XG52YXIgcG5vdyA9IHBlcmZvcm1hbmNlICYmIHBlcmZvcm1hbmNlLm5vdyA/IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpO1xufSA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIERhdGUubm93KCk7XG59O1xuXG52YXIgcmFmID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93JDEpIHtcbiAgICBpZiAod2luZG93JDEucmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHdpbmRvdyQxLnJlcXVlc3RBbmltYXRpb25GcmFtZShmbik7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAod2luZG93JDEubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHdpbmRvdyQxLm1velJlcXVlc3RBbmltYXRpb25GcmFtZShmbik7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAod2luZG93JDEud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHdpbmRvdyQxLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZShmbik7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAod2luZG93JDEubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgd2luZG93JDEubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgaWYgKGZuKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm4ocG5vdygpKTtcbiAgICAgIH0sIDEwMDAgLyA2MCk7XG4gICAgfVxuICB9O1xufSgpO1xuXG52YXIgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKSB7XG4gIHJldHVybiByYWYoZm4pO1xufTtcbnZhciBwZXJmb3JtYW5jZU5vdyA9IHBub3c7XG5cbnZhciBERUZBVUxUX0hBU0hfU0VFRCA9IDkyNjE7XG52YXIgSyA9IDY1NTk5OyAvLyAzNyBhbHNvIHdvcmtzIHByZXR0eSB3ZWxsXG5cbnZhciBERUZBVUxUX0hBU0hfU0VFRF9BTFQgPSA1MzgxO1xudmFyIGhhc2hJdGVyYWJsZUludHMgPSBmdW5jdGlvbiBoYXNoSXRlcmFibGVJbnRzKGl0ZXJhdG9yKSB7XG4gIHZhciBzZWVkID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBERUZBVUxUX0hBU0hfU0VFRDtcbiAgLy8gc2RibS9zdHJpbmctaGFzaFxuICB2YXIgaGFzaCA9IHNlZWQ7XG4gIHZhciBlbnRyeTtcblxuICBmb3IgKDs7KSB7XG4gICAgZW50cnkgPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICBpZiAoZW50cnkuZG9uZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaGFzaCA9IGhhc2ggKiBLICsgZW50cnkudmFsdWUgfCAwO1xuICB9XG5cbiAgcmV0dXJuIGhhc2g7XG59O1xudmFyIGhhc2hJbnQgPSBmdW5jdGlvbiBoYXNoSW50KG51bSkge1xuICB2YXIgc2VlZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogREVGQVVMVF9IQVNIX1NFRUQ7XG4gIC8vIHNkYm0vc3RyaW5nLWhhc2hcbiAgcmV0dXJuIHNlZWQgKiBLICsgbnVtIHwgMDtcbn07XG52YXIgaGFzaEludEFsdCA9IGZ1bmN0aW9uIGhhc2hJbnRBbHQobnVtKSB7XG4gIHZhciBzZWVkID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBERUZBVUxUX0hBU0hfU0VFRF9BTFQ7XG4gIC8vIGRqYjIvc3RyaW5nLWhhc2hcbiAgcmV0dXJuIChzZWVkIDw8IDUpICsgc2VlZCArIG51bSB8IDA7XG59O1xudmFyIGNvbWJpbmVIYXNoZXMgPSBmdW5jdGlvbiBjb21iaW5lSGFzaGVzKGhhc2gxLCBoYXNoMikge1xuICByZXR1cm4gaGFzaDEgKiAweDIwMDAwMCArIGhhc2gyO1xufTtcbnZhciBjb21iaW5lSGFzaGVzQXJyYXkgPSBmdW5jdGlvbiBjb21iaW5lSGFzaGVzQXJyYXkoaGFzaGVzKSB7XG4gIHJldHVybiBoYXNoZXNbMF0gKiAweDIwMDAwMCArIGhhc2hlc1sxXTtcbn07XG52YXIgaGFzaEFycmF5cyA9IGZ1bmN0aW9uIGhhc2hBcnJheXMoaGFzaGVzMSwgaGFzaGVzMikge1xuICByZXR1cm4gW2hhc2hJbnQoaGFzaGVzMVswXSwgaGFzaGVzMlswXSksIGhhc2hJbnRBbHQoaGFzaGVzMVsxXSwgaGFzaGVzMlsxXSldO1xufTtcbnZhciBoYXNoSW50c0FycmF5ID0gZnVuY3Rpb24gaGFzaEludHNBcnJheShpbnRzLCBzZWVkKSB7XG4gIHZhciBlbnRyeSA9IHtcbiAgICB2YWx1ZTogMCxcbiAgICBkb25lOiBmYWxzZVxuICB9O1xuICB2YXIgaSA9IDA7XG4gIHZhciBsZW5ndGggPSBpbnRzLmxlbmd0aDtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICBpZiAoaSA8IGxlbmd0aCkge1xuICAgICAgICBlbnRyeS52YWx1ZSA9IGludHNbaSsrXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudHJ5LmRvbmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW50cnk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gaGFzaEl0ZXJhYmxlSW50cyhpdGVyYXRvciwgc2VlZCk7XG59O1xudmFyIGhhc2hTdHJpbmcgPSBmdW5jdGlvbiBoYXNoU3RyaW5nKHN0ciwgc2VlZCkge1xuICB2YXIgZW50cnkgPSB7XG4gICAgdmFsdWU6IDAsXG4gICAgZG9uZTogZmFsc2VcbiAgfTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICBpZiAoaSA8IGxlbmd0aCkge1xuICAgICAgICBlbnRyeS52YWx1ZSA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnRyeS5kb25lID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGhhc2hJdGVyYWJsZUludHMoaXRlcmF0b3IsIHNlZWQpO1xufTtcbnZhciBoYXNoU3RyaW5ncyA9IGZ1bmN0aW9uIGhhc2hTdHJpbmdzKCkge1xuICByZXR1cm4gaGFzaFN0cmluZ3NBcnJheShhcmd1bWVudHMpO1xufTtcbnZhciBoYXNoU3RyaW5nc0FycmF5ID0gZnVuY3Rpb24gaGFzaFN0cmluZ3NBcnJheShzdHJzKSB7XG4gIHZhciBoYXNoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3Rycy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzdHIgPSBzdHJzW2ldO1xuXG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGhhc2ggPSBoYXNoU3RyaW5nKHN0cik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhc2ggPSBoYXNoU3RyaW5nKHN0ciwgaGFzaCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhc2g7XG59O1xuXG4vKmdsb2JhbCBjb25zb2xlICovXG52YXIgd2FybmluZ3NFbmFibGVkID0gdHJ1ZTtcbnZhciB3YXJuU3VwcG9ydGVkID0gY29uc29sZS53YXJuICE9IG51bGw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuXG52YXIgdHJhY2VTdXBwb3J0ZWQgPSBjb25zb2xlLnRyYWNlICE9IG51bGw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuXG52YXIgTUFYX0lOVCA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSIHx8IDkwMDcxOTkyNTQ3NDA5OTE7XG52YXIgdHJ1ZWlmeSA9IGZ1bmN0aW9uIHRydWVpZnkoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBmYWxzaWZ5ID0gZnVuY3Rpb24gZmFsc2lmeSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufTtcbnZhciB6ZXJvaWZ5ID0gZnVuY3Rpb24gemVyb2lmeSgpIHtcbiAgcmV0dXJuIDA7XG59O1xudmFyIG5vb3AgPSBmdW5jdGlvbiBub29wKCkge307XG52YXIgZXJyb3IgPSBmdW5jdGlvbiBlcnJvcihtc2cpIHtcbiAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG59O1xudmFyIHdhcm5pbmdzID0gZnVuY3Rpb24gd2FybmluZ3MoZW5hYmxlZCkge1xuICBpZiAoZW5hYmxlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgd2FybmluZ3NFbmFibGVkID0gISFlbmFibGVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB3YXJuaW5nc0VuYWJsZWQ7XG4gIH1cbn07XG52YXIgd2FybiA9IGZ1bmN0aW9uIHdhcm4obXNnKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgaWYgKCF3YXJuaW5ncygpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHdhcm5TdXBwb3J0ZWQpIHtcbiAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhtc2cpO1xuXG4gICAgaWYgKHRyYWNlU3VwcG9ydGVkKSB7XG4gICAgICBjb25zb2xlLnRyYWNlKCk7XG4gICAgfVxuICB9XG59O1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG52YXIgY2xvbmUgPSBmdW5jdGlvbiBjbG9uZShvYmopIHtcbiAgcmV0dXJuIGV4dGVuZCh7fSwgb2JqKTtcbn07IC8vIGdldHMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIGFyZ3VtZW50XG5cbnZhciBjb3B5ID0gZnVuY3Rpb24gY29weShvYmopIHtcbiAgaWYgKG9iaiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIGlmIChhcnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iai5zbGljZSgpO1xuICB9IGVsc2UgaWYgKHBsYWluT2JqZWN0KG9iaikpIHtcbiAgICByZXR1cm4gY2xvbmUob2JqKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG59O1xudmFyIGNvcHlBcnJheSA9IGZ1bmN0aW9uIGNvcHlBcnJheShhcnIpIHtcbiAgcmV0dXJuIGFyci5zbGljZSgpO1xufTtcbnZhciB1dWlkID0gZnVuY3Rpb24gdXVpZChhLCBiXG4vKiBwbGFjZWhvbGRlcnMgKi9cbikge1xuICBmb3IgKCAvLyBsb29wIDopXG4gIGIgPSBhID0gJyc7IC8vIGIgLSByZXN1bHQgLCBhIC0gbnVtZXJpYyBsZXRpYWJsZVxuICBhKysgPCAzNjsgLy9cbiAgYiArPSBhICogNTEgJiA1MiAvLyBpZiBcImFcIiBpcyBub3QgOSBvciAxNCBvciAxOSBvciAyNFxuICA/IC8vICByZXR1cm4gYSByYW5kb20gbnVtYmVyIG9yIDRcbiAgKGEgXiAxNSAvLyBpZiBcImFcIiBpcyBub3QgMTVcbiAgPyAvLyBnZW5ldGF0ZSBhIHJhbmRvbSBudW1iZXIgZnJvbSAwIHRvIDE1XG4gIDggXiBNYXRoLnJhbmRvbSgpICogKGEgXiAyMCA/IDE2IDogNCkgLy8gdW5sZXNzIFwiYVwiIGlzIDIwLCBpbiB3aGljaCBjYXNlIGEgcmFuZG9tIG51bWJlciBmcm9tIDggdG8gMTFcbiAgOiA0IC8vICBvdGhlcndpc2UgNFxuICApLnRvU3RyaW5nKDE2KSA6ICctJyAvLyAgaW4gb3RoZXIgY2FzZXMgKGlmIFwiYVwiIGlzIDksMTQsMTksMjQpIGluc2VydCBcIi1cIlxuICApIHtcbiAgfVxuXG4gIHJldHVybiBiO1xufTtcbnZhciBfc3RhdGljRW1wdHlPYmplY3QgPSB7fTtcbnZhciBzdGF0aWNFbXB0eU9iamVjdCA9IGZ1bmN0aW9uIHN0YXRpY0VtcHR5T2JqZWN0KCkge1xuICByZXR1cm4gX3N0YXRpY0VtcHR5T2JqZWN0O1xufTtcbnZhciBkZWZhdWx0cyA9IGZ1bmN0aW9uIGRlZmF1bHRzKF9kZWZhdWx0cykge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKF9kZWZhdWx0cyk7XG4gIHJldHVybiBmdW5jdGlvbiAob3B0cykge1xuICAgIHZhciBmaWxsZWRPcHRzID0ge307XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgdmFyIG9wdFZhbCA9IG9wdHMgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9wdHNba2V5XTtcbiAgICAgIGZpbGxlZE9wdHNba2V5XSA9IG9wdFZhbCA9PT0gdW5kZWZpbmVkID8gX2RlZmF1bHRzW2tleV0gOiBvcHRWYWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGxlZE9wdHM7XG4gIH07XG59O1xudmFyIHJlbW92ZUZyb21BcnJheSA9IGZ1bmN0aW9uIHJlbW92ZUZyb21BcnJheShhcnIsIGVsZSwgb25lQ29weSkge1xuICBmb3IgKHZhciBpID0gYXJyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGFycltpXSA9PT0gZWxlKSB7XG4gICAgICBhcnIuc3BsaWNlKGksIDEpO1xuXG4gICAgICBpZiAob25lQ29weSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG52YXIgY2xlYXJBcnJheSA9IGZ1bmN0aW9uIGNsZWFyQXJyYXkoYXJyKSB7XG4gIGFyci5zcGxpY2UoMCwgYXJyLmxlbmd0aCk7XG59O1xudmFyIHB1c2ggPSBmdW5jdGlvbiBwdXNoKGFyciwgb3RoZXJBcnIpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdGhlckFyci5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbCA9IG90aGVyQXJyW2ldO1xuICAgIGFyci5wdXNoKGVsKTtcbiAgfVxufTtcbnZhciBnZXRQcmVmaXhlZFByb3BlcnR5ID0gZnVuY3Rpb24gZ2V0UHJlZml4ZWRQcm9wZXJ0eShvYmosIHByb3BOYW1lLCBwcmVmaXgpIHtcbiAgaWYgKHByZWZpeCkge1xuICAgIHByb3BOYW1lID0gcHJlcGVuZENhbWVsKHByZWZpeCwgcHJvcE5hbWUpOyAvLyBlLmcuIChsYWJlbFdpZHRoLCBzb3VyY2UpID0+IHNvdXJjZUxhYmVsV2lkdGhcbiAgfVxuXG4gIHJldHVybiBvYmpbcHJvcE5hbWVdO1xufTtcbnZhciBzZXRQcmVmaXhlZFByb3BlcnR5ID0gZnVuY3Rpb24gc2V0UHJlZml4ZWRQcm9wZXJ0eShvYmosIHByb3BOYW1lLCBwcmVmaXgsIHZhbHVlKSB7XG4gIGlmIChwcmVmaXgpIHtcbiAgICBwcm9wTmFtZSA9IHByZXBlbmRDYW1lbChwcmVmaXgsIHByb3BOYW1lKTsgLy8gZS5nLiAobGFiZWxXaWR0aCwgc291cmNlKSA9PiBzb3VyY2VMYWJlbFdpZHRoXG4gIH1cblxuICBvYmpbcHJvcE5hbWVdID0gdmFsdWU7XG59O1xuXG4vKiBnbG9iYWwgTWFwICovXG52YXIgT2JqZWN0TWFwID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gT2JqZWN0TWFwKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBPYmplY3RNYXApO1xuXG4gICAgdGhpcy5fb2JqID0ge307XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoT2JqZWN0TWFwLCBbe1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGtleSwgdmFsKSB7XG4gICAgICB0aGlzLl9vYmpba2V5XSA9IHZhbDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZWxldGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2RlbGV0ZShrZXkpIHtcbiAgICAgIHRoaXMuX29ialtrZXldID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5fb2JqID0ge307XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImhhc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fb2JqW2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vYmpba2V5XTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gT2JqZWN0TWFwO1xufSgpO1xuXG52YXIgTWFwJDEgPSB0eXBlb2YgTWFwICE9PSAndW5kZWZpbmVkJyA/IE1hcCA6IE9iamVjdE1hcDtcblxuLyogZ2xvYmFsIFNldCAqL1xudmFyIHVuZGVmID0gIFwidW5kZWZpbmVkXCIgO1xuXG52YXIgT2JqZWN0U2V0ID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gT2JqZWN0U2V0KGFycmF5T3JPYmplY3RTZXQpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgT2JqZWN0U2V0KTtcblxuICAgIHRoaXMuX29iaiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5zaXplID0gMDtcblxuICAgIGlmIChhcnJheU9yT2JqZWN0U2V0ICE9IG51bGwpIHtcbiAgICAgIHZhciBhcnI7XG5cbiAgICAgIGlmIChhcnJheU9yT2JqZWN0U2V0Lmluc3RhbmNlU3RyaW5nICE9IG51bGwgJiYgYXJyYXlPck9iamVjdFNldC5pbnN0YW5jZVN0cmluZygpID09PSB0aGlzLmluc3RhbmNlU3RyaW5nKCkpIHtcbiAgICAgICAgYXJyID0gYXJyYXlPck9iamVjdFNldC50b0FycmF5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnIgPSBhcnJheU9yT2JqZWN0U2V0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLmFkZChhcnJbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhPYmplY3RTZXQsIFt7XG4gICAga2V5OiBcImluc3RhbmNlU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluc3RhbmNlU3RyaW5nKCkge1xuICAgICAgcmV0dXJuICdzZXQnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhZGRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkKHZhbCkge1xuICAgICAgdmFyIG8gPSB0aGlzLl9vYmo7XG5cbiAgICAgIGlmIChvW3ZhbF0gIT09IDEpIHtcbiAgICAgICAgb1t2YWxdID0gMTtcbiAgICAgICAgdGhpcy5zaXplKys7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlbGV0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZGVsZXRlKHZhbCkge1xuICAgICAgdmFyIG8gPSB0aGlzLl9vYmo7XG5cbiAgICAgIGlmIChvW3ZhbF0gPT09IDEpIHtcbiAgICAgICAgb1t2YWxdID0gMDtcbiAgICAgICAgdGhpcy5zaXplLS07XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5fb2JqID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhcyh2YWwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vYmpbdmFsXSA9PT0gMTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9BcnJheVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0FycmF5KCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX29iaikuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmhhcyhrZXkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvckVhY2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZykge1xuICAgICAgcmV0dXJuIHRoaXMudG9BcnJheSgpLmZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBPYmplY3RTZXQ7XG59KCk7XG5cbnZhciBTZXQkMSA9ICh0eXBlb2YgU2V0ID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoU2V0KSkgIT09IHVuZGVmID8gU2V0IDogT2JqZWN0U2V0O1xuXG52YXIgRWxlbWVudCA9IGZ1bmN0aW9uIEVsZW1lbnQoY3ksIHBhcmFtcykge1xuICB2YXIgcmVzdG9yZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogdHJ1ZTtcblxuICBpZiAoY3kgPT09IHVuZGVmaW5lZCB8fCBwYXJhbXMgPT09IHVuZGVmaW5lZCB8fCAhY29yZShjeSkpIHtcbiAgICBlcnJvcignQW4gZWxlbWVudCBtdXN0IGhhdmUgYSBjb3JlIHJlZmVyZW5jZSBhbmQgcGFyYW1ldGVycyBzZXQnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZ3JvdXAgPSBwYXJhbXMuZ3JvdXA7IC8vIHRyeSB0byBhdXRvbWF0aWNhbGx5IGluZmVyIHRoZSBncm91cCBpZiB1bnNwZWNpZmllZFxuXG4gIGlmIChncm91cCA9PSBudWxsKSB7XG4gICAgaWYgKHBhcmFtcy5kYXRhICYmIHBhcmFtcy5kYXRhLnNvdXJjZSAhPSBudWxsICYmIHBhcmFtcy5kYXRhLnRhcmdldCAhPSBudWxsKSB7XG4gICAgICBncm91cCA9ICdlZGdlcyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3VwID0gJ25vZGVzJztcbiAgICB9XG4gIH0gLy8gdmFsaWRhdGUgZ3JvdXBcblxuXG4gIGlmIChncm91cCAhPT0gJ25vZGVzJyAmJiBncm91cCAhPT0gJ2VkZ2VzJykge1xuICAgIGVycm9yKCdBbiBlbGVtZW50IG11c3QgYmUgb2YgdHlwZSBgbm9kZXNgIG9yIGBlZGdlc2A7IHlvdSBzcGVjaWZpZWQgYCcgKyBncm91cCArICdgJyk7XG4gICAgcmV0dXJuO1xuICB9IC8vIG1ha2UgdGhlIGVsZW1lbnQgYXJyYXktbGlrZSwganVzdCBsaWtlIGEgY29sbGVjdGlvblxuXG5cbiAgdGhpcy5sZW5ndGggPSAxO1xuICB0aGlzWzBdID0gdGhpczsgLy8gTk9URTogd2hlbiBzb21ldGhpbmcgaXMgYWRkZWQgaGVyZSwgYWRkIGFsc28gdG8gZWxlLmpzb24oKVxuXG4gIHZhciBfcCA9IHRoaXMuX3ByaXZhdGUgPSB7XG4gICAgY3k6IGN5LFxuICAgIHNpbmdsZTogdHJ1ZSxcbiAgICAvLyBpbmRpY2F0ZXMgdGhpcyBpcyBhbiBlbGVtZW50XG4gICAgZGF0YTogcGFyYW1zLmRhdGEgfHwge30sXG4gICAgLy8gZGF0YSBvYmplY3RcbiAgICBwb3NpdGlvbjogcGFyYW1zLnBvc2l0aW9uIHx8IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfSxcbiAgICAvLyAoeCwgeSkgcG9zaXRpb24gcGFpclxuICAgIGF1dG9XaWR0aDogdW5kZWZpbmVkLFxuICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgb2Ygbm9kZXMgY2FsY3VsYXRlZCBieSB0aGUgcmVuZGVyZXIgd2hlbiBzZXQgdG8gc3BlY2lhbCAnYXV0bycgdmFsdWVcbiAgICBhdXRvSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgYXV0b1BhZGRpbmc6IHVuZGVmaW5lZCxcbiAgICBjb21wb3VuZEJvdW5kc0NsZWFuOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIHRoZSBjb21wb3VuZCBkaW1lbnNpb25zIG5lZWQgdG8gYmUgcmVjYWxjdWxhdGVkIHRoZSBuZXh0IHRpbWUgZGltZW5zaW9ucyBhcmUgcmVhZFxuICAgIGxpc3RlbmVyczogW10sXG4gICAgLy8gYXJyYXkgb2YgYm91bmQgbGlzdGVuZXJzXG4gICAgZ3JvdXA6IGdyb3VwLFxuICAgIC8vIHN0cmluZzsgJ25vZGVzJyBvciAnZWRnZXMnXG4gICAgc3R5bGU6IHt9LFxuICAgIC8vIHByb3BlcnRpZXMgYXMgc2V0IGJ5IHRoZSBzdHlsZVxuICAgIHJzdHlsZToge30sXG4gICAgLy8gcHJvcGVydGllcyBmb3Igc3R5bGUgc2VudCBmcm9tIHRoZSByZW5kZXJlciB0byB0aGUgY29yZVxuICAgIHN0eWxlQ3h0czogW10sXG4gICAgLy8gYXBwbGllZCBzdHlsZSBjb250ZXh0cyBmcm9tIHRoZSBzdHlsZXJcbiAgICBzdHlsZUtleXM6IHt9LFxuICAgIC8vIHBlci1ncm91cCBrZXlzIG9mIHN0eWxlIHByb3BlcnR5IHZhbHVlc1xuICAgIHJlbW92ZWQ6IHRydWUsXG4gICAgLy8gd2hldGhlciBpdCdzIGluc2lkZSB0aGUgdmlzOyB0cnVlIGlmIHJlbW92ZWQgKHNldCB0cnVlIGhlcmUgc2luY2Ugd2UgY2FsbCByZXN0b3JlKVxuICAgIHNlbGVjdGVkOiBwYXJhbXMuc2VsZWN0ZWQgPyB0cnVlIDogZmFsc2UsXG4gICAgLy8gd2hldGhlciBpdCdzIHNlbGVjdGVkXG4gICAgc2VsZWN0YWJsZTogcGFyYW1zLnNlbGVjdGFibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBwYXJhbXMuc2VsZWN0YWJsZSA/IHRydWUgOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIGl0J3Mgc2VsZWN0YWJsZVxuICAgIGxvY2tlZDogcGFyYW1zLmxvY2tlZCA/IHRydWUgOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIHRoZSBlbGVtZW50IGlzIGxvY2tlZCAoY2Fubm90IGJlIG1vdmVkKVxuICAgIGdyYWJiZWQ6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgZ3JhYmJlZCBieSB0aGUgbW91c2U7IHJlbmRlcmVyIHNldHMgdGhpcyBwcml2YXRlbHlcbiAgICBncmFiYmFibGU6IHBhcmFtcy5ncmFiYmFibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBwYXJhbXMuZ3JhYmJhYmxlID8gdHJ1ZSA6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgdGhlIGVsZW1lbnQgY2FuIGJlIGdyYWJiZWRcbiAgICBwYW5uYWJsZTogcGFyYW1zLnBhbm5hYmxlID09PSB1bmRlZmluZWQgPyBncm91cCA9PT0gJ2VkZ2VzJyA/IHRydWUgOiBmYWxzZSA6IHBhcmFtcy5wYW5uYWJsZSA/IHRydWUgOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIHRoZSBlbGVtZW50IGhhcyBwYXNzdGhyb3VnaCBwYW5uaW5nIGVuYWJsZWRcbiAgICBhY3RpdmU6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgYWN0aXZlIGZyb20gdXNlciBpbnRlcmFjdGlvblxuICAgIGNsYXNzZXM6IG5ldyBTZXQkMSgpLFxuICAgIC8vIG1hcCAoIGNsYXNzTmFtZSA9PiB0cnVlIClcbiAgICBhbmltYXRpb246IHtcbiAgICAgIC8vIG9iamVjdCBmb3IgY3VycmVudGx5LXJ1bm5pbmcgYW5pbWF0aW9uc1xuICAgICAgY3VycmVudDogW10sXG4gICAgICBxdWV1ZTogW11cbiAgICB9LFxuICAgIHJzY3JhdGNoOiB7fSxcbiAgICAvLyBvYmplY3QgaW4gd2hpY2ggdGhlIHJlbmRlcmVyIGNhbiBzdG9yZSBpbmZvcm1hdGlvblxuICAgIHNjcmF0Y2g6IHBhcmFtcy5zY3JhdGNoIHx8IHt9LFxuICAgIC8vIHNjcmF0Y2ggb2JqZWN0c1xuICAgIGVkZ2VzOiBbXSxcbiAgICAvLyBhcnJheSBvZiBjb25uZWN0ZWQgZWRnZXNcbiAgICBjaGlsZHJlbjogW10sXG4gICAgLy8gYXJyYXkgb2YgY2hpbGRyZW5cbiAgICBwYXJlbnQ6IG51bGwsXG4gICAgLy8gcGFyZW50IHJlZlxuICAgIHRyYXZlcnNhbENhY2hlOiB7fSxcbiAgICAvLyBjYWNoZSBvZiBvdXRwdXQgb2YgdHJhdmVyc2FsIGZ1bmN0aW9uc1xuICAgIGJhY2tncm91bmRpbmc6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgYmFja2dyb3VuZCBpbWFnZXMgYXJlIGxvYWRpbmdcbiAgICBiYkNhY2hlOiBudWxsLFxuICAgIC8vIGNhY2hlIG9mIHRoZSBjdXJyZW50IGJvdW5kaW5nIGJveFxuICAgIGJiQ2FjaGVTaGlmdDoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9LFxuICAgIC8vIHNoaWZ0IGFwcGxpZWQgdG8gY2FjaGVkIGJiIHRvIGJlIGFwcGxpZWQgb24gbmV4dCBnZXRcbiAgICBib2R5Qm91bmRzOiBudWxsLFxuICAgIC8vIGJvdW5kcyBjYWNoZSBvZiBlbGVtZW50IGJvZHksIHcvbyBvdmVybGF5XG4gICAgb3ZlcmxheUJvdW5kczogbnVsbCxcbiAgICAvLyBib3VuZHMgY2FjaGUgb2YgZWxlbWVudCBib2R5LCBpbmNsdWRpbmcgb3ZlcmxheVxuICAgIGxhYmVsQm91bmRzOiB7XG4gICAgICAvLyBib3VuZHMgY2FjaGUgb2YgbGFiZWxzXG4gICAgICBhbGw6IG51bGwsXG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICBtYWluOiBudWxsXG4gICAgfSxcbiAgICBhcnJvd0JvdW5kczoge1xuICAgICAgLy8gYm91bmRzIGNhY2hlIG9mIGVkZ2UgYXJyb3dzXG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAnbWlkLXNvdXJjZSc6IG51bGwsXG4gICAgICAnbWlkLXRhcmdldCc6IG51bGxcbiAgICB9XG4gIH07XG5cbiAgaWYgKF9wLnBvc2l0aW9uLnggPT0gbnVsbCkge1xuICAgIF9wLnBvc2l0aW9uLnggPSAwO1xuICB9XG5cbiAgaWYgKF9wLnBvc2l0aW9uLnkgPT0gbnVsbCkge1xuICAgIF9wLnBvc2l0aW9uLnkgPSAwO1xuICB9IC8vIHJlbmRlcmVkUG9zaXRpb24gb3ZlcnJpZGVzIGlmIHNwZWNpZmllZFxuXG5cbiAgaWYgKHBhcmFtcy5yZW5kZXJlZFBvc2l0aW9uKSB7XG4gICAgdmFyIHJwb3MgPSBwYXJhbXMucmVuZGVyZWRQb3NpdGlvbjtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgX3AucG9zaXRpb24gPSB7XG4gICAgICB4OiAocnBvcy54IC0gcGFuLngpIC8gem9vbSxcbiAgICAgIHk6IChycG9zLnkgLSBwYW4ueSkgLyB6b29tXG4gICAgfTtcbiAgfVxuXG4gIHZhciBjbGFzc2VzID0gW107XG5cbiAgaWYgKGFycmF5KHBhcmFtcy5jbGFzc2VzKSkge1xuICAgIGNsYXNzZXMgPSBwYXJhbXMuY2xhc3NlcztcbiAgfSBlbHNlIGlmIChzdHJpbmcocGFyYW1zLmNsYXNzZXMpKSB7XG4gICAgY2xhc3NlcyA9IHBhcmFtcy5jbGFzc2VzLnNwbGl0KC9cXHMrLyk7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IGNsYXNzZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGNscyA9IGNsYXNzZXNbaV07XG5cbiAgICBpZiAoIWNscyB8fCBjbHMgPT09ICcnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBfcC5jbGFzc2VzLmFkZChjbHMpO1xuICB9XG5cbiAgdGhpcy5jcmVhdGVFbWl0dGVyKCk7XG4gIHZhciBieXBhc3MgPSBwYXJhbXMuc3R5bGUgfHwgcGFyYW1zLmNzcztcblxuICBpZiAoYnlwYXNzKSB7XG4gICAgd2FybignU2V0dGluZyBhIGBzdHlsZWAgYnlwYXNzIGF0IGVsZW1lbnQgY3JlYXRpb24gc2hvdWxkIGJlIGRvbmUgb25seSB3aGVuIGFic29sdXRlbHkgbmVjZXNzYXJ5LiAgVHJ5IHRvIHVzZSB0aGUgc3R5bGVzaGVldCBpbnN0ZWFkLicpO1xuICAgIHRoaXMuc3R5bGUoYnlwYXNzKTtcbiAgfVxuXG4gIGlmIChyZXN0b3JlID09PSB1bmRlZmluZWQgfHwgcmVzdG9yZSkge1xuICAgIHRoaXMucmVzdG9yZSgpO1xuICB9XG59O1xuXG52YXIgZGVmaW5lU2VhcmNoID0gZnVuY3Rpb24gZGVmaW5lU2VhcmNoKHBhcmFtcykge1xuICBwYXJhbXMgPSB7XG4gICAgYmZzOiBwYXJhbXMuYmZzIHx8ICFwYXJhbXMuZGZzLFxuICAgIGRmczogcGFyYW1zLmRmcyB8fCAhcGFyYW1zLmJmc1xuICB9OyAvLyBmcm9tIHBzZXVkb2NvZGUgb24gd2lraXBlZGlhXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHNlYXJjaEZuKHJvb3RzLCBmbiQxLCBkaXJlY3RlZCkge1xuICAgIHZhciBvcHRpb25zO1xuXG4gICAgaWYgKHBsYWluT2JqZWN0KHJvb3RzKSAmJiAhZWxlbWVudE9yQ29sbGVjdGlvbihyb290cykpIHtcbiAgICAgIG9wdGlvbnMgPSByb290cztcbiAgICAgIHJvb3RzID0gb3B0aW9ucy5yb290cyB8fCBvcHRpb25zLnJvb3Q7XG4gICAgICBmbiQxID0gb3B0aW9ucy52aXNpdDtcbiAgICAgIGRpcmVjdGVkID0gb3B0aW9ucy5kaXJlY3RlZDtcbiAgICB9XG5cbiAgICBkaXJlY3RlZCA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgIWZuKGZuJDEpID8gZm4kMSA6IGRpcmVjdGVkO1xuICAgIGZuJDEgPSBmbihmbiQxKSA/IGZuJDEgOiBmdW5jdGlvbiAoKSB7fTtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuICAgIHZhciB2ID0gcm9vdHMgPSBzdHJpbmcocm9vdHMpID8gdGhpcy5maWx0ZXIocm9vdHMpIDogcm9vdHM7XG4gICAgdmFyIFEgPSBbXTtcbiAgICB2YXIgY29ubmVjdGVkTm9kZXMgPSBbXTtcbiAgICB2YXIgY29ubmVjdGVkQnkgPSB7fTtcbiAgICB2YXIgaWQyZGVwdGggPSB7fTtcbiAgICB2YXIgViA9IHt9O1xuICAgIHZhciBqID0gMDtcbiAgICB2YXIgZm91bmQ7XG5cbiAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlczsgLy8gZW5xdWV1ZSB2XG5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZpID0gdltpXTtcbiAgICAgIHZhciB2aUlkID0gdmkuaWQoKTtcblxuICAgICAgaWYgKHZpLmlzTm9kZSgpKSB7XG4gICAgICAgIFEudW5zaGlmdCh2aSk7XG5cbiAgICAgICAgaWYgKHBhcmFtcy5iZnMpIHtcbiAgICAgICAgICBWW3ZpSWRdID0gdHJ1ZTtcbiAgICAgICAgICBjb25uZWN0ZWROb2Rlcy5wdXNoKHZpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlkMmRlcHRoW3ZpSWRdID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgX2xvb3AyID0gZnVuY3Rpb24gX2xvb3AyKCkge1xuICAgICAgdmFyIHYgPSBwYXJhbXMuYmZzID8gUS5zaGlmdCgpIDogUS5wb3AoKTtcbiAgICAgIHZhciB2SWQgPSB2LmlkKCk7XG5cbiAgICAgIGlmIChwYXJhbXMuZGZzKSB7XG4gICAgICAgIGlmIChWW3ZJZF0pIHtcbiAgICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgICB9XG5cbiAgICAgICAgVlt2SWRdID0gdHJ1ZTtcbiAgICAgICAgY29ubmVjdGVkTm9kZXMucHVzaCh2KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRlcHRoID0gaWQyZGVwdGhbdklkXTtcbiAgICAgIHZhciBwcmV2RWRnZSA9IGNvbm5lY3RlZEJ5W3ZJZF07XG4gICAgICB2YXIgc3JjID0gcHJldkVkZ2UgIT0gbnVsbCA/IHByZXZFZGdlLnNvdXJjZSgpIDogbnVsbDtcbiAgICAgIHZhciB0Z3QgPSBwcmV2RWRnZSAhPSBudWxsID8gcHJldkVkZ2UudGFyZ2V0KCkgOiBudWxsO1xuICAgICAgdmFyIHByZXZOb2RlID0gcHJldkVkZ2UgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IHYuc2FtZShzcmMpID8gdGd0WzBdIDogc3JjWzBdO1xuICAgICAgdmFyIHJldCA9IHZvaWQgMDtcbiAgICAgIHJldCA9IGZuJDEodiwgcHJldkVkZ2UsIHByZXZOb2RlLCBqKyssIGRlcHRoKTtcblxuICAgICAgaWYgKHJldCA9PT0gdHJ1ZSkge1xuICAgICAgICBmb3VuZCA9IHY7XG4gICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICB9XG5cbiAgICAgIHZhciB2d0VkZ2VzID0gdi5jb25uZWN0ZWRFZGdlcygpLmZpbHRlcihmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gKCFkaXJlY3RlZCB8fCBlLnNvdXJjZSgpLnNhbWUodikpICYmIGVkZ2VzLmhhcyhlKTtcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCB2d0VkZ2VzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgdmFyIGUgPSB2d0VkZ2VzW19pMl07XG4gICAgICAgIHZhciB3ID0gZS5jb25uZWN0ZWROb2RlcygpLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgICAgIHJldHVybiAhbi5zYW1lKHYpICYmIG5vZGVzLmhhcyhuKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB3SWQgPSB3LmlkKCk7XG5cbiAgICAgICAgaWYgKHcubGVuZ3RoICE9PSAwICYmICFWW3dJZF0pIHtcbiAgICAgICAgICB3ID0gd1swXTtcbiAgICAgICAgICBRLnB1c2godyk7XG5cbiAgICAgICAgICBpZiAocGFyYW1zLmJmcykge1xuICAgICAgICAgICAgVlt3SWRdID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbm5lY3RlZE5vZGVzLnB1c2godyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29ubmVjdGVkQnlbd0lkXSA9IGU7XG4gICAgICAgICAgaWQyZGVwdGhbd0lkXSA9IGlkMmRlcHRoW3ZJZF0gKyAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9sb29wOiB3aGlsZSAoUS5sZW5ndGggIT09IDApIHtcbiAgICAgIHZhciBfcmV0ID0gX2xvb3AyKCk7XG5cbiAgICAgIHN3aXRjaCAoX3JldCkge1xuICAgICAgICBjYXNlIFwiY29udGludWVcIjpcbiAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBjYXNlIFwiYnJlYWtcIjpcbiAgICAgICAgICBicmVhayBfbG9vcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY29ubmVjdGVkRWxlcyA9IGN5LmNvbGxlY3Rpb24oKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBjb25uZWN0ZWROb2Rlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBub2RlID0gY29ubmVjdGVkTm9kZXNbX2ldO1xuICAgICAgdmFyIGVkZ2UgPSBjb25uZWN0ZWRCeVtub2RlLmlkKCldO1xuXG4gICAgICBpZiAoZWRnZSAhPSBudWxsKSB7XG4gICAgICAgIGNvbm5lY3RlZEVsZXMucHVzaChlZGdlKTtcbiAgICAgIH1cblxuICAgICAgY29ubmVjdGVkRWxlcy5wdXNoKG5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwYXRoOiBjeS5jb2xsZWN0aW9uKGNvbm5lY3RlZEVsZXMpLFxuICAgICAgZm91bmQ6IGN5LmNvbGxlY3Rpb24oZm91bmQpXG4gICAgfTtcbiAgfTtcbn07IC8vIHNlYXJjaCwgc3Bhbm5pbmcgdHJlZXMsIGV0Y1xuXG5cbnZhciBlbGVzZm4gPSB7XG4gIGJyZWFkdGhGaXJzdFNlYXJjaDogZGVmaW5lU2VhcmNoKHtcbiAgICBiZnM6IHRydWVcbiAgfSksXG4gIGRlcHRoRmlyc3RTZWFyY2g6IGRlZmluZVNlYXJjaCh7XG4gICAgZGZzOiB0cnVlXG4gIH0pXG59OyAvLyBuaWNlLCBzaG9ydCBtYXRoZW1hdGhpY2FsIGFsaWFzXG5cbmVsZXNmbi5iZnMgPSBlbGVzZm4uYnJlYWR0aEZpcnN0U2VhcmNoO1xuZWxlc2ZuLmRmcyA9IGVsZXNmbi5kZXB0aEZpcnN0U2VhcmNoO1xuXG52YXIgZGlqa3N0cmFEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgcm9vdDogbnVsbCxcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBkaXJlY3RlZDogZmFsc2Vcbn0pO1xudmFyIGVsZXNmbiQxID0ge1xuICBkaWprc3RyYTogZnVuY3Rpb24gZGlqa3N0cmEob3B0aW9ucykge1xuICAgIGlmICghcGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgcm9vdDogYXJnc1swXSxcbiAgICAgICAgd2VpZ2h0OiBhcmdzWzFdLFxuICAgICAgICBkaXJlY3RlZDogYXJnc1syXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgX2RpamtzdHJhRGVmYXVsdHMgPSBkaWprc3RyYURlZmF1bHRzKG9wdGlvbnMpLFxuICAgICAgICByb290ID0gX2RpamtzdHJhRGVmYXVsdHMucm9vdCxcbiAgICAgICAgd2VpZ2h0ID0gX2RpamtzdHJhRGVmYXVsdHMud2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZCA9IF9kaWprc3RyYURlZmF1bHRzLmRpcmVjdGVkO1xuXG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuICAgIHZhciB3ZWlnaHRGbiA9IHdlaWdodDtcbiAgICB2YXIgc291cmNlID0gc3RyaW5nKHJvb3QpID8gdGhpcy5maWx0ZXIocm9vdClbMF0gOiByb290WzBdO1xuICAgIHZhciBkaXN0ID0ge307XG4gICAgdmFyIHByZXYgPSB7fTtcbiAgICB2YXIga25vd25EaXN0ID0ge307XG5cbiAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlcztcblxuICAgIGVkZ2VzLnVubWVyZ2VCeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTG9vcCgpO1xuICAgIH0pO1xuXG4gICAgdmFyIGdldERpc3QgPSBmdW5jdGlvbiBnZXREaXN0KG5vZGUpIHtcbiAgICAgIHJldHVybiBkaXN0W25vZGUuaWQoKV07XG4gICAgfTtcblxuICAgIHZhciBzZXREaXN0ID0gZnVuY3Rpb24gc2V0RGlzdChub2RlLCBkKSB7XG4gICAgICBkaXN0W25vZGUuaWQoKV0gPSBkO1xuICAgICAgUS51cGRhdGVJdGVtKG5vZGUpO1xuICAgIH07XG5cbiAgICB2YXIgUSA9IG5ldyBIZWFwKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZ2V0RGlzdChhKSAtIGdldERpc3QoYik7XG4gICAgfSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgZGlzdFtub2RlLmlkKCldID0gbm9kZS5zYW1lKHNvdXJjZSkgPyAwIDogSW5maW5pdHk7XG4gICAgICBRLnB1c2gobm9kZSk7XG4gICAgfVxuXG4gICAgdmFyIGRpc3RCZXR3ZWVuID0gZnVuY3Rpb24gZGlzdEJldHdlZW4odSwgdikge1xuICAgICAgdmFyIHV2cyA9IChkaXJlY3RlZCA/IHUuZWRnZXNUbyh2KSA6IHUuZWRnZXNXaXRoKHYpKS5pbnRlcnNlY3QoZWRnZXMpO1xuICAgICAgdmFyIHNtYWxsZXN0RGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICAgIHZhciBzbWFsbGVzdEVkZ2U7XG5cbiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB1dnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBlZGdlID0gdXZzW19pXTtcblxuICAgICAgICB2YXIgX3dlaWdodCA9IHdlaWdodEZuKGVkZ2UpO1xuXG4gICAgICAgIGlmIChfd2VpZ2h0IDwgc21hbGxlc3REaXN0YW5jZSB8fCAhc21hbGxlc3RFZGdlKSB7XG4gICAgICAgICAgc21hbGxlc3REaXN0YW5jZSA9IF93ZWlnaHQ7XG4gICAgICAgICAgc21hbGxlc3RFZGdlID0gZWRnZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBlZGdlOiBzbWFsbGVzdEVkZ2UsXG4gICAgICAgIGRpc3Q6IHNtYWxsZXN0RGlzdGFuY2VcbiAgICAgIH07XG4gICAgfTtcblxuICAgIHdoaWxlIChRLnNpemUoKSA+IDApIHtcbiAgICAgIHZhciB1ID0gUS5wb3AoKTtcbiAgICAgIHZhciBzbWFsbGV0c0Rpc3QgPSBnZXREaXN0KHUpO1xuICAgICAgdmFyIHVpZCA9IHUuaWQoKTtcbiAgICAgIGtub3duRGlzdFt1aWRdID0gc21hbGxldHNEaXN0O1xuXG4gICAgICBpZiAoc21hbGxldHNEaXN0ID09PSBJbmZpbml0eSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5laWdoYm9ycyA9IHUubmVpZ2hib3Job29kKCkuaW50ZXJzZWN0KG5vZGVzKTtcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbmVpZ2hib3JzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgdmFyIHYgPSBuZWlnaGJvcnNbX2kyXTtcbiAgICAgICAgdmFyIHZpZCA9IHYuaWQoKTtcbiAgICAgICAgdmFyIHZEaXN0ID0gZGlzdEJldHdlZW4odSwgdik7XG4gICAgICAgIHZhciBhbHQgPSBzbWFsbGV0c0Rpc3QgKyB2RGlzdC5kaXN0O1xuXG4gICAgICAgIGlmIChhbHQgPCBnZXREaXN0KHYpKSB7XG4gICAgICAgICAgc2V0RGlzdCh2LCBhbHQpO1xuICAgICAgICAgIHByZXZbdmlkXSA9IHtcbiAgICAgICAgICAgIG5vZGU6IHUsXG4gICAgICAgICAgICBlZGdlOiB2RGlzdC5lZGdlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBmb3JcblxuICAgIH0gLy8gd2hpbGVcblxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3RhbmNlVG86IGZ1bmN0aW9uIGRpc3RhbmNlVG8obm9kZSkge1xuICAgICAgICB2YXIgdGFyZ2V0ID0gc3RyaW5nKG5vZGUpID8gbm9kZXMuZmlsdGVyKG5vZGUpWzBdIDogbm9kZVswXTtcbiAgICAgICAgcmV0dXJuIGtub3duRGlzdFt0YXJnZXQuaWQoKV07XG4gICAgICB9LFxuICAgICAgcGF0aFRvOiBmdW5jdGlvbiBwYXRoVG8obm9kZSkge1xuICAgICAgICB2YXIgdGFyZ2V0ID0gc3RyaW5nKG5vZGUpID8gbm9kZXMuZmlsdGVyKG5vZGUpWzBdIDogbm9kZVswXTtcbiAgICAgICAgdmFyIFMgPSBbXTtcbiAgICAgICAgdmFyIHUgPSB0YXJnZXQ7XG4gICAgICAgIHZhciB1aWQgPSB1LmlkKCk7XG5cbiAgICAgICAgaWYgKHRhcmdldC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgUy51bnNoaWZ0KHRhcmdldCk7XG5cbiAgICAgICAgICB3aGlsZSAocHJldlt1aWRdKSB7XG4gICAgICAgICAgICB2YXIgcCA9IHByZXZbdWlkXTtcbiAgICAgICAgICAgIFMudW5zaGlmdChwLmVkZ2UpO1xuICAgICAgICAgICAgUy51bnNoaWZ0KHAubm9kZSk7XG4gICAgICAgICAgICB1ID0gcC5ub2RlO1xuICAgICAgICAgICAgdWlkID0gdS5pZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbGVzLnNwYXduKFMpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn07XG5cbnZhciBlbGVzZm4kMiA9IHtcbiAgLy8ga3J1c2thbCdzIGFsZ29yaXRobSAoZmluZHMgbWluIHNwYW5uaW5nIHRyZWUsIGFzc3VtaW5nIHVuZGlyZWN0ZWQgZ3JhcGgpXG4gIC8vIGltcGxlbWVudGVkIGZyb20gcHNldWRvY29kZSBmcm9tIHdpa2lwZWRpYVxuICBrcnVza2FsOiBmdW5jdGlvbiBrcnVza2FsKHdlaWdodEZuKSB7XG4gICAgd2VpZ2h0Rm4gPSB3ZWlnaHRGbiB8fCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfTtcblxuICAgIHZhciBfdGhpcyRieUdyb3VwID0gdGhpcy5ieUdyb3VwKCksXG4gICAgICAgIG5vZGVzID0gX3RoaXMkYnlHcm91cC5ub2RlcyxcbiAgICAgICAgZWRnZXMgPSBfdGhpcyRieUdyb3VwLmVkZ2VzO1xuXG4gICAgdmFyIG51bU5vZGVzID0gbm9kZXMubGVuZ3RoO1xuICAgIHZhciBmb3Jlc3QgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuICAgIHZhciBBID0gbm9kZXM7IC8vIGFzc3VtZXMgYnlHcm91cCgpIGNyZWF0ZXMgbmV3IGNvbGxlY3Rpb25zIHRoYXQgY2FuIGJlIHNhZmVseSBtdXRhdGVkXG5cbiAgICB2YXIgZmluZFNldEluZGV4ID0gZnVuY3Rpb24gZmluZFNldEluZGV4KGVsZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3Jlc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZXMgPSBmb3Jlc3RbaV07XG5cbiAgICAgICAgaWYgKGVsZXMuaGFzKGVsZSkpIHtcbiAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07IC8vIHN0YXJ0IHdpdGggb25lIGZvcmVzdCBwZXIgbm9kZVxuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bU5vZGVzOyBpKyspIHtcbiAgICAgIGZvcmVzdFtpXSA9IHRoaXMuc3Bhd24obm9kZXNbaV0pO1xuICAgIH1cblxuICAgIHZhciBTID0gZWRnZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIHdlaWdodEZuKGEpIC0gd2VpZ2h0Rm4oYik7XG4gICAgfSk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgUy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBlZGdlID0gU1tfaV07XG4gICAgICB2YXIgdSA9IGVkZ2Uuc291cmNlKClbMF07XG4gICAgICB2YXIgdiA9IGVkZ2UudGFyZ2V0KClbMF07XG4gICAgICB2YXIgc2V0VUluZGV4ID0gZmluZFNldEluZGV4KHUpO1xuICAgICAgdmFyIHNldFZJbmRleCA9IGZpbmRTZXRJbmRleCh2KTtcbiAgICAgIHZhciBzZXRVID0gZm9yZXN0W3NldFVJbmRleF07XG4gICAgICB2YXIgc2V0ViA9IGZvcmVzdFtzZXRWSW5kZXhdO1xuXG4gICAgICBpZiAoc2V0VUluZGV4ICE9PSBzZXRWSW5kZXgpIHtcbiAgICAgICAgQS5tZXJnZShlZGdlKTsgLy8gY29tYmluZSBmb3Jlc3RzIGZvciB1IGFuZCB2XG5cbiAgICAgICAgc2V0VS5tZXJnZShzZXRWKTtcbiAgICAgICAgZm9yZXN0LnNwbGljZShzZXRWSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBBO1xuICB9XG59O1xuXG52YXIgYVN0YXJEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgcm9vdDogbnVsbCxcbiAgZ29hbDogbnVsbCxcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBoZXVyaXN0aWM6IGZ1bmN0aW9uIGhldXJpc3RpYyhlZGdlKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0sXG4gIGRpcmVjdGVkOiBmYWxzZVxufSk7XG52YXIgZWxlc2ZuJDMgPSB7XG4gIC8vIEltcGxlbWVudGVkIGZyb20gcHNldWRvY29kZSBmcm9tIHdpa2lwZWRpYVxuICBhU3RhcjogZnVuY3Rpb24gYVN0YXIob3B0aW9ucykge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIHZhciBfYVN0YXJEZWZhdWx0cyA9IGFTdGFyRGVmYXVsdHMob3B0aW9ucyksXG4gICAgICAgIHJvb3QgPSBfYVN0YXJEZWZhdWx0cy5yb290LFxuICAgICAgICBnb2FsID0gX2FTdGFyRGVmYXVsdHMuZ29hbCxcbiAgICAgICAgaGV1cmlzdGljID0gX2FTdGFyRGVmYXVsdHMuaGV1cmlzdGljLFxuICAgICAgICBkaXJlY3RlZCA9IF9hU3RhckRlZmF1bHRzLmRpcmVjdGVkLFxuICAgICAgICB3ZWlnaHQgPSBfYVN0YXJEZWZhdWx0cy53ZWlnaHQ7XG5cbiAgICByb290ID0gY3kuY29sbGVjdGlvbihyb290KVswXTtcbiAgICBnb2FsID0gY3kuY29sbGVjdGlvbihnb2FsKVswXTtcbiAgICB2YXIgc2lkID0gcm9vdC5pZCgpO1xuICAgIHZhciB0aWQgPSBnb2FsLmlkKCk7XG4gICAgdmFyIGdTY29yZSA9IHt9O1xuICAgIHZhciBmU2NvcmUgPSB7fTtcbiAgICB2YXIgY2xvc2VkU2V0SWRzID0ge307XG4gICAgdmFyIG9wZW5TZXQgPSBuZXcgSGVhcChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZTY29yZVthLmlkKCldIC0gZlNjb3JlW2IuaWQoKV07XG4gICAgfSk7XG4gICAgdmFyIG9wZW5TZXRJZHMgPSBuZXcgU2V0JDEoKTtcbiAgICB2YXIgY2FtZUZyb20gPSB7fTtcbiAgICB2YXIgY2FtZUZyb21FZGdlID0ge307XG5cbiAgICB2YXIgYWRkVG9PcGVuU2V0ID0gZnVuY3Rpb24gYWRkVG9PcGVuU2V0KGVsZSwgaWQpIHtcbiAgICAgIG9wZW5TZXQucHVzaChlbGUpO1xuICAgICAgb3BlblNldElkcy5hZGQoaWQpO1xuICAgIH07XG5cbiAgICB2YXIgY01pbiwgY01pbklkO1xuXG4gICAgdmFyIHBvcEZyb21PcGVuU2V0ID0gZnVuY3Rpb24gcG9wRnJvbU9wZW5TZXQoKSB7XG4gICAgICBjTWluID0gb3BlblNldC5wb3AoKTtcbiAgICAgIGNNaW5JZCA9IGNNaW4uaWQoKTtcbiAgICAgIG9wZW5TZXRJZHNbXCJkZWxldGVcIl0oY01pbklkKTtcbiAgICB9O1xuXG4gICAgdmFyIGlzSW5PcGVuU2V0ID0gZnVuY3Rpb24gaXNJbk9wZW5TZXQoaWQpIHtcbiAgICAgIHJldHVybiBvcGVuU2V0SWRzLmhhcyhpZCk7XG4gICAgfTtcblxuICAgIGFkZFRvT3BlblNldChyb290LCBzaWQpO1xuICAgIGdTY29yZVtzaWRdID0gMDtcbiAgICBmU2NvcmVbc2lkXSA9IGhldXJpc3RpYyhyb290KTsgLy8gQ291bnRlclxuXG4gICAgdmFyIHN0ZXBzID0gMDsgLy8gTWFpbiBsb29wXG5cbiAgICB3aGlsZSAob3BlblNldC5zaXplKCkgPiAwKSB7XG4gICAgICBwb3BGcm9tT3BlblNldCgpO1xuICAgICAgc3RlcHMrKzsgLy8gSWYgd2UndmUgZm91bmQgb3VyIGdvYWwsIHRoZW4gd2UgYXJlIGRvbmVcblxuICAgICAgaWYgKGNNaW5JZCA9PT0gdGlkKSB7XG4gICAgICAgIHZhciBwYXRoID0gW107XG4gICAgICAgIHZhciBwYXRoTm9kZSA9IGdvYWw7XG4gICAgICAgIHZhciBwYXRoTm9kZUlkID0gdGlkO1xuICAgICAgICB2YXIgcGF0aEVkZ2UgPSBjYW1lRnJvbUVkZ2VbcGF0aE5vZGVJZF07XG5cbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIHBhdGgudW5zaGlmdChwYXRoTm9kZSk7XG5cbiAgICAgICAgICBpZiAocGF0aEVkZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgcGF0aC51bnNoaWZ0KHBhdGhFZGdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXRoTm9kZSA9IGNhbWVGcm9tW3BhdGhOb2RlSWRdO1xuXG4gICAgICAgICAgaWYgKHBhdGhOb2RlID09IG51bGwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhdGhOb2RlSWQgPSBwYXRoTm9kZS5pZCgpO1xuICAgICAgICAgIHBhdGhFZGdlID0gY2FtZUZyb21FZGdlW3BhdGhOb2RlSWRdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmb3VuZDogdHJ1ZSxcbiAgICAgICAgICBkaXN0YW5jZTogZ1Njb3JlW2NNaW5JZF0sXG4gICAgICAgICAgcGF0aDogdGhpcy5zcGF3bihwYXRoKSxcbiAgICAgICAgICBzdGVwczogc3RlcHNcbiAgICAgICAgfTtcbiAgICAgIH0gLy8gQWRkIGNNaW4gdG8gcHJvY2Vzc2VkIG5vZGVzXG5cblxuICAgICAgY2xvc2VkU2V0SWRzW2NNaW5JZF0gPSB0cnVlOyAvLyBVcGRhdGUgc2NvcmVzIGZvciBuZWlnaGJvcnMgb2YgY01pblxuICAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgaWYgZ3JhcGggaXMgZGlyZWN0ZWQgb3Igbm90XG5cbiAgICAgIHZhciB2d0VkZ2VzID0gY01pbi5fcHJpdmF0ZS5lZGdlcztcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2d0VkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlID0gdndFZGdlc1tpXTsgLy8gZWRnZSBtdXN0IGJlIGluIHNldCBvZiBjYWxsaW5nIGVsZXNcblxuICAgICAgICBpZiAoIXRoaXMuaGFzRWxlbWVudFdpdGhJZChlLmlkKCkpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gLy8gY01pbiBtdXN0IGJlIHRoZSBzb3VyY2Ugb2YgZWRnZSBpZiBkaXJlY3RlZFxuXG5cbiAgICAgICAgaWYgKGRpcmVjdGVkICYmIGUuZGF0YSgnc291cmNlJykgIT09IGNNaW5JZCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHdTcmMgPSBlLnNvdXJjZSgpO1xuICAgICAgICB2YXIgd1RndCA9IGUudGFyZ2V0KCk7XG4gICAgICAgIHZhciB3ID0gd1NyYy5pZCgpICE9PSBjTWluSWQgPyB3U3JjIDogd1RndDtcbiAgICAgICAgdmFyIHdpZCA9IHcuaWQoKTsgLy8gbm9kZSBtdXN0IGJlIGluIHNldCBvZiBjYWxsaW5nIGVsZXNcblxuICAgICAgICBpZiAoIXRoaXMuaGFzRWxlbWVudFdpdGhJZCh3aWQpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gLy8gaWYgbm9kZSBpcyBpbiBjbG9zZWRTZXQsIGlnbm9yZSBpdFxuXG5cbiAgICAgICAgaWYgKGNsb3NlZFNldElkc1t3aWRdKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gLy8gTmV3IHRlbnRhdGl2ZSBzY29yZSBmb3Igbm9kZSB3XG5cblxuICAgICAgICB2YXIgdGVtcFNjb3JlID0gZ1Njb3JlW2NNaW5JZF0gKyB3ZWlnaHQoZSk7IC8vIFVwZGF0ZSBnU2NvcmUgZm9yIG5vZGUgdyBpZjpcbiAgICAgICAgLy8gICB3IG5vdCBwcmVzZW50IGluIG9wZW5TZXRcbiAgICAgICAgLy8gT1JcbiAgICAgICAgLy8gICB0ZW50YXRpdmUgZ1Njb3JlIGlzIGxlc3MgdGhhbiBwcmV2aW91cyB2YWx1ZVxuICAgICAgICAvLyB3IG5vdCBpbiBvcGVuU2V0XG5cbiAgICAgICAgaWYgKCFpc0luT3BlblNldCh3aWQpKSB7XG4gICAgICAgICAgZ1Njb3JlW3dpZF0gPSB0ZW1wU2NvcmU7XG4gICAgICAgICAgZlNjb3JlW3dpZF0gPSB0ZW1wU2NvcmUgKyBoZXVyaXN0aWModyk7XG4gICAgICAgICAgYWRkVG9PcGVuU2V0KHcsIHdpZCk7XG4gICAgICAgICAgY2FtZUZyb21bd2lkXSA9IGNNaW47XG4gICAgICAgICAgY2FtZUZyb21FZGdlW3dpZF0gPSBlO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IC8vIHcgYWxyZWFkeSBpbiBvcGVuU2V0LCBidXQgd2l0aCBncmVhdGVyIGdTY29yZVxuXG5cbiAgICAgICAgaWYgKHRlbXBTY29yZSA8IGdTY29yZVt3aWRdKSB7XG4gICAgICAgICAgZ1Njb3JlW3dpZF0gPSB0ZW1wU2NvcmU7XG4gICAgICAgICAgZlNjb3JlW3dpZF0gPSB0ZW1wU2NvcmUgKyBoZXVyaXN0aWModyk7XG4gICAgICAgICAgY2FtZUZyb21bd2lkXSA9IGNNaW47XG4gICAgICAgICAgY2FtZUZyb21FZGdlW3dpZF0gPSBlO1xuICAgICAgICB9XG4gICAgICB9IC8vIEVuZCBvZiBuZWlnaGJvcnMgdXBkYXRlXG5cbiAgICB9IC8vIEVuZCBvZiBtYWluIGxvb3BcbiAgICAvLyBJZiB3ZSd2ZSByZWFjaGVkIGhlcmUsIHRoZW4gd2UndmUgbm90IHJlYWNoZWQgb3VyIGdvYWxcblxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZvdW5kOiBmYWxzZSxcbiAgICAgIGRpc3RhbmNlOiB1bmRlZmluZWQsXG4gICAgICBwYXRoOiB1bmRlZmluZWQsXG4gICAgICBzdGVwczogc3RlcHNcbiAgICB9O1xuICB9XG59OyAvLyBlbGVzZm5cblxudmFyIGZsb3lkV2Fyc2hhbGxEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBkaXJlY3RlZDogZmFsc2Vcbn0pO1xudmFyIGVsZXNmbiQ0ID0ge1xuICAvLyBJbXBsZW1lbnRlZCBmcm9tIHBzZXVkb2NvZGUgZnJvbSB3aWtpcGVkaWFcbiAgZmxveWRXYXJzaGFsbDogZnVuY3Rpb24gZmxveWRXYXJzaGFsbChvcHRpb25zKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgdmFyIF9mbG95ZFdhcnNoYWxsRGVmYXVsdCA9IGZsb3lkV2Fyc2hhbGxEZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgd2VpZ2h0ID0gX2Zsb3lkV2Fyc2hhbGxEZWZhdWx0LndlaWdodCxcbiAgICAgICAgZGlyZWN0ZWQgPSBfZmxveWRXYXJzaGFsbERlZmF1bHQuZGlyZWN0ZWQ7XG5cbiAgICB2YXIgd2VpZ2h0Rm4gPSB3ZWlnaHQ7XG5cbiAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlcztcblxuICAgIHZhciBOID0gbm9kZXMubGVuZ3RoO1xuICAgIHZhciBOc3EgPSBOICogTjtcblxuICAgIHZhciBpbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZihub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZXMuaW5kZXhPZihub2RlKTtcbiAgICB9O1xuXG4gICAgdmFyIGF0SW5kZXggPSBmdW5jdGlvbiBhdEluZGV4KGkpIHtcbiAgICAgIHJldHVybiBub2Rlc1tpXTtcbiAgICB9OyAvLyBJbml0aWFsaXplIGRpc3RhbmNlIG1hdHJpeFxuXG5cbiAgICB2YXIgZGlzdCA9IG5ldyBBcnJheShOc3EpO1xuXG4gICAgZm9yICh2YXIgbiA9IDA7IG4gPCBOc3E7IG4rKykge1xuICAgICAgdmFyIGogPSBuICUgTjtcbiAgICAgIHZhciBpID0gKG4gLSBqKSAvIE47XG5cbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIGRpc3Rbbl0gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtuXSA9IEluZmluaXR5O1xuICAgICAgfVxuICAgIH0gLy8gSW5pdGlhbGl6ZSBtYXRyaXggdXNlZCBmb3IgcGF0aCByZWNvbnN0cnVjdGlvblxuICAgIC8vIEluaXRpYWxpemUgZGlzdGFuY2UgbWF0cml4XG5cblxuICAgIHZhciBuZXh0ID0gbmV3IEFycmF5KE5zcSk7XG4gICAgdmFyIGVkZ2VOZXh0ID0gbmV3IEFycmF5KE5zcSk7IC8vIFByb2Nlc3MgZWRnZXNcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBlZGdlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbX2ldO1xuICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKClbMF07XG4gICAgICB2YXIgdGd0ID0gZWRnZS50YXJnZXQoKVswXTtcblxuICAgICAgaWYgKHNyYyA9PT0gdGd0KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBleGNsdWRlIGxvb3BzXG5cblxuICAgICAgdmFyIHMgPSBpbmRleE9mKHNyYyk7XG4gICAgICB2YXIgdCA9IGluZGV4T2YodGd0KTtcbiAgICAgIHZhciBzdCA9IHMgKiBOICsgdDsgLy8gc291cmNlIHRvIHRhcmdldCBpbmRleFxuXG4gICAgICB2YXIgX3dlaWdodCA9IHdlaWdodEZuKGVkZ2UpOyAvLyBDaGVjayBpZiBhbHJlYWR5IHByb2Nlc3MgYW5vdGhlciBlZGdlIGJldHdlZW4gc2FtZSAyIG5vZGVzXG5cblxuICAgICAgaWYgKGRpc3Rbc3RdID4gX3dlaWdodCkge1xuICAgICAgICBkaXN0W3N0XSA9IF93ZWlnaHQ7XG4gICAgICAgIG5leHRbc3RdID0gdDtcbiAgICAgICAgZWRnZU5leHRbc3RdID0gZWRnZTtcbiAgICAgIH0gLy8gSWYgdW5kaXJlY3RlZCBncmFwaCwgcHJvY2VzcyAncmV2ZXJzZWQnIGVkZ2VcblxuXG4gICAgICBpZiAoIWRpcmVjdGVkKSB7XG4gICAgICAgIHZhciB0cyA9IHQgKiBOICsgczsgLy8gdGFyZ2V0IHRvIHNvdXJjZSBpbmRleFxuXG4gICAgICAgIGlmICghZGlyZWN0ZWQgJiYgZGlzdFt0c10gPiBfd2VpZ2h0KSB7XG4gICAgICAgICAgZGlzdFt0c10gPSBfd2VpZ2h0O1xuICAgICAgICAgIG5leHRbdHNdID0gcztcbiAgICAgICAgICBlZGdlTmV4dFt0c10gPSBlZGdlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBNYWluIGxvb3BcblxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBOOyBrKyspIHtcbiAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IE47IF9pMisrKSB7XG4gICAgICAgIHZhciBpayA9IF9pMiAqIE4gKyBrO1xuXG4gICAgICAgIGZvciAodmFyIF9qID0gMDsgX2ogPCBOOyBfaisrKSB7XG4gICAgICAgICAgdmFyIGlqID0gX2kyICogTiArIF9qO1xuICAgICAgICAgIHZhciBraiA9IGsgKiBOICsgX2o7XG5cbiAgICAgICAgICBpZiAoZGlzdFtpa10gKyBkaXN0W2tqXSA8IGRpc3RbaWpdKSB7XG4gICAgICAgICAgICBkaXN0W2lqXSA9IGRpc3RbaWtdICsgZGlzdFtral07XG4gICAgICAgICAgICBuZXh0W2lqXSA9IG5leHRbaWtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBnZXRBcmdFbGUgPSBmdW5jdGlvbiBnZXRBcmdFbGUoZWxlKSB7XG4gICAgICByZXR1cm4gKHN0cmluZyhlbGUpID8gY3kuZmlsdGVyKGVsZSkgOiBlbGUpWzBdO1xuICAgIH07XG5cbiAgICB2YXIgaW5kZXhPZkFyZ0VsZSA9IGZ1bmN0aW9uIGluZGV4T2ZBcmdFbGUoZWxlKSB7XG4gICAgICByZXR1cm4gaW5kZXhPZihnZXRBcmdFbGUoZWxlKSk7XG4gICAgfTtcblxuICAgIHZhciByZXMgPSB7XG4gICAgICBkaXN0YW5jZTogZnVuY3Rpb24gZGlzdGFuY2UoZnJvbSwgdG8pIHtcbiAgICAgICAgdmFyIGkgPSBpbmRleE9mQXJnRWxlKGZyb20pO1xuICAgICAgICB2YXIgaiA9IGluZGV4T2ZBcmdFbGUodG8pO1xuICAgICAgICByZXR1cm4gZGlzdFtpICogTiArIGpdO1xuICAgICAgfSxcbiAgICAgIHBhdGg6IGZ1bmN0aW9uIHBhdGgoZnJvbSwgdG8pIHtcbiAgICAgICAgdmFyIGkgPSBpbmRleE9mQXJnRWxlKGZyb20pO1xuICAgICAgICB2YXIgaiA9IGluZGV4T2ZBcmdFbGUodG8pO1xuICAgICAgICB2YXIgZnJvbU5vZGUgPSBhdEluZGV4KGkpO1xuXG4gICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgcmV0dXJuIGZyb21Ob2RlLmNvbGxlY3Rpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0W2kgKiBOICsgal0gPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBjeS5jb2xsZWN0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGF0aCA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgICAgICAgdmFyIHByZXYgPSBpO1xuICAgICAgICB2YXIgZWRnZTtcbiAgICAgICAgcGF0aC5tZXJnZShmcm9tTm9kZSk7XG5cbiAgICAgICAgd2hpbGUgKGkgIT09IGopIHtcbiAgICAgICAgICBwcmV2ID0gaTtcbiAgICAgICAgICBpID0gbmV4dFtpICogTiArIGpdO1xuICAgICAgICAgIGVkZ2UgPSBlZGdlTmV4dFtwcmV2ICogTiArIGldO1xuICAgICAgICAgIHBhdGgubWVyZ2UoZWRnZSk7XG4gICAgICAgICAgcGF0aC5tZXJnZShhdEluZGV4KGkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBmbG95ZFdhcnNoYWxsXG5cbn07IC8vIGVsZXNmblxuXG52YXIgYmVsbG1hbkZvcmREZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBkaXJlY3RlZDogZmFsc2UsXG4gIHJvb3Q6IG51bGxcbn0pO1xudmFyIGVsZXNmbiQ1ID0ge1xuICAvLyBJbXBsZW1lbnRlZCBmcm9tIHBzZXVkb2NvZGUgZnJvbSB3aWtpcGVkaWFcbiAgYmVsbG1hbkZvcmQ6IGZ1bmN0aW9uIGJlbGxtYW5Gb3JkKG9wdGlvbnMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9iZWxsbWFuRm9yZERlZmF1bHRzID0gYmVsbG1hbkZvcmREZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgd2VpZ2h0ID0gX2JlbGxtYW5Gb3JkRGVmYXVsdHMud2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZCA9IF9iZWxsbWFuRm9yZERlZmF1bHRzLmRpcmVjdGVkLFxuICAgICAgICByb290ID0gX2JlbGxtYW5Gb3JkRGVmYXVsdHMucm9vdDtcblxuICAgIHZhciB3ZWlnaHRGbiA9IHdlaWdodDtcbiAgICB2YXIgZWxlcyA9IHRoaXM7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgdmFyIF90aGlzJGJ5R3JvdXAgPSB0aGlzLmJ5R3JvdXAoKSxcbiAgICAgICAgZWRnZXMgPSBfdGhpcyRieUdyb3VwLmVkZ2VzLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXM7XG5cbiAgICB2YXIgbnVtTm9kZXMgPSBub2Rlcy5sZW5ndGg7XG4gICAgdmFyIGluZm9NYXAgPSBuZXcgTWFwJDEoKTtcbiAgICB2YXIgaGFzTmVnYXRpdmVXZWlnaHRDeWNsZSA9IGZhbHNlO1xuICAgIHZhciBuZWdhdGl2ZVdlaWdodEN5Y2xlcyA9IFtdO1xuICAgIHJvb3QgPSBjeS5jb2xsZWN0aW9uKHJvb3QpWzBdOyAvLyBpbiBjYXNlIHNlbGVjdG9yIHBhc3NlZFxuXG4gICAgZWRnZXMudW5tZXJnZUJ5KGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5pc0xvb3AoKTtcbiAgICB9KTtcbiAgICB2YXIgbnVtRWRnZXMgPSBlZGdlcy5sZW5ndGg7XG5cbiAgICB2YXIgZ2V0SW5mbyA9IGZ1bmN0aW9uIGdldEluZm8obm9kZSkge1xuICAgICAgdmFyIG9iaiA9IGluZm9NYXAuZ2V0KG5vZGUuaWQoKSk7XG5cbiAgICAgIGlmICghb2JqKSB7XG4gICAgICAgIG9iaiA9IHt9O1xuICAgICAgICBpbmZvTWFwLnNldChub2RlLmlkKCksIG9iaik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfTtcblxuICAgIHZhciBnZXROb2RlRnJvbVRvID0gZnVuY3Rpb24gZ2V0Tm9kZUZyb21Ubyh0bykge1xuICAgICAgcmV0dXJuIChzdHJpbmcodG8pID8gY3kuJCh0bykgOiB0bylbMF07XG4gICAgfTtcblxuICAgIHZhciBkaXN0YW5jZVRvID0gZnVuY3Rpb24gZGlzdGFuY2VUbyh0bykge1xuICAgICAgcmV0dXJuIGdldEluZm8oZ2V0Tm9kZUZyb21Ubyh0bykpLmRpc3Q7XG4gICAgfTtcblxuICAgIHZhciBwYXRoVG8gPSBmdW5jdGlvbiBwYXRoVG8odG8pIHtcbiAgICAgIHZhciB0aGlzU3RhcnQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHJvb3Q7XG4gICAgICB2YXIgZW5kID0gZ2V0Tm9kZUZyb21Ubyh0byk7XG4gICAgICB2YXIgcGF0aCA9IFtdO1xuICAgICAgdmFyIG5vZGUgPSBlbmQ7XG5cbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5zcGF3bigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF9nZXRJbmZvID0gZ2V0SW5mbyhub2RlKSxcbiAgICAgICAgICAgIGVkZ2UgPSBfZ2V0SW5mby5lZGdlLFxuICAgICAgICAgICAgcHJlZCA9IF9nZXRJbmZvLnByZWQ7XG5cbiAgICAgICAgcGF0aC51bnNoaWZ0KG5vZGVbMF0pO1xuXG4gICAgICAgIGlmIChub2RlLnNhbWUodGhpc1N0YXJ0KSAmJiBwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlZGdlICE9IG51bGwpIHtcbiAgICAgICAgICBwYXRoLnVuc2hpZnQoZWRnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlID0gcHJlZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVsZXMuc3Bhd24ocGF0aCk7XG4gICAgfTsgLy8gSW5pdGlhbGl6YXRpb25zIHsgZGlzdCwgcHJlZCwgZWRnZSB9XG5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTm9kZXM7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIHZhciBpbmZvID0gZ2V0SW5mbyhub2RlKTtcblxuICAgICAgaWYgKG5vZGUuc2FtZShyb290KSkge1xuICAgICAgICBpbmZvLmRpc3QgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5mby5kaXN0ID0gSW5maW5pdHk7XG4gICAgICB9XG5cbiAgICAgIGluZm8ucHJlZCA9IG51bGw7XG4gICAgICBpbmZvLmVkZ2UgPSBudWxsO1xuICAgIH0gLy8gRWRnZXMgcmVsYXhhdGlvblxuXG5cbiAgICB2YXIgcmVwbGFjZWRFZGdlID0gZmFsc2U7XG5cbiAgICB2YXIgY2hlY2tGb3JFZGdlUmVwbGFjZW1lbnQgPSBmdW5jdGlvbiBjaGVja0ZvckVkZ2VSZXBsYWNlbWVudChub2RlMSwgbm9kZTIsIGVkZ2UsIGluZm8xLCBpbmZvMiwgd2VpZ2h0KSB7XG4gICAgICB2YXIgZGlzdCA9IGluZm8xLmRpc3QgKyB3ZWlnaHQ7XG5cbiAgICAgIGlmIChkaXN0IDwgaW5mbzIuZGlzdCAmJiAhZWRnZS5zYW1lKGluZm8xLmVkZ2UpKSB7XG4gICAgICAgIGluZm8yLmRpc3QgPSBkaXN0O1xuICAgICAgICBpbmZvMi5wcmVkID0gbm9kZTE7XG4gICAgICAgIGluZm8yLmVkZ2UgPSBlZGdlO1xuICAgICAgICByZXBsYWNlZEVkZ2UgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgbnVtTm9kZXM7IF9pKyspIHtcbiAgICAgIHJlcGxhY2VkRWRnZSA9IGZhbHNlO1xuXG4gICAgICBmb3IgKHZhciBlID0gMDsgZSA8IG51bUVkZ2VzOyBlKyspIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tlXTtcbiAgICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKCk7XG4gICAgICAgIHZhciB0Z3QgPSBlZGdlLnRhcmdldCgpO1xuXG4gICAgICAgIHZhciBfd2VpZ2h0ID0gd2VpZ2h0Rm4oZWRnZSk7XG5cbiAgICAgICAgdmFyIHNyY0luZm8gPSBnZXRJbmZvKHNyYyk7XG4gICAgICAgIHZhciB0Z3RJbmZvID0gZ2V0SW5mbyh0Z3QpO1xuICAgICAgICBjaGVja0ZvckVkZ2VSZXBsYWNlbWVudChzcmMsIHRndCwgZWRnZSwgc3JjSW5mbywgdGd0SW5mbywgX3dlaWdodCk7IC8vIElmIHVuZGlyZWN0ZWQgZ3JhcGgsIHdlIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlICdyZXZlcnNlJyBlZGdlXG5cbiAgICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICAgIGNoZWNrRm9yRWRnZVJlcGxhY2VtZW50KHRndCwgc3JjLCBlZGdlLCB0Z3RJbmZvLCBzcmNJbmZvLCBfd2VpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXJlcGxhY2VkRWRnZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVwbGFjZWRFZGdlKSB7XG4gICAgICAvLyBDaGVjayBmb3IgbmVnYXRpdmUgd2VpZ2h0IGN5Y2xlc1xuICAgICAgZm9yICh2YXIgX2UgPSAwOyBfZSA8IG51bUVkZ2VzOyBfZSsrKSB7XG4gICAgICAgIHZhciBfZWRnZSA9IGVkZ2VzW19lXTtcblxuICAgICAgICB2YXIgX3NyYyA9IF9lZGdlLnNvdXJjZSgpO1xuXG4gICAgICAgIHZhciBfdGd0ID0gX2VkZ2UudGFyZ2V0KCk7XG5cbiAgICAgICAgdmFyIF93ZWlnaHQyID0gd2VpZ2h0Rm4oX2VkZ2UpO1xuXG4gICAgICAgIHZhciBzcmNEaXN0ID0gZ2V0SW5mbyhfc3JjKS5kaXN0O1xuICAgICAgICB2YXIgdGd0RGlzdCA9IGdldEluZm8oX3RndCkuZGlzdDtcblxuICAgICAgICBpZiAoc3JjRGlzdCArIF93ZWlnaHQyIDwgdGd0RGlzdCB8fCAhZGlyZWN0ZWQgJiYgdGd0RGlzdCArIF93ZWlnaHQyIDwgc3JjRGlzdCkge1xuICAgICAgICAgIHdhcm4oJ0dyYXBoIGNvbnRhaW5zIGEgbmVnYXRpdmUgd2VpZ2h0IGN5Y2xlIGZvciBCZWxsbWFuLUZvcmQnKTtcbiAgICAgICAgICBoYXNOZWdhdGl2ZVdlaWdodEN5Y2xlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXN0YW5jZVRvOiBkaXN0YW5jZVRvLFxuICAgICAgcGF0aFRvOiBwYXRoVG8sXG4gICAgICBoYXNOZWdhdGl2ZVdlaWdodEN5Y2xlOiBoYXNOZWdhdGl2ZVdlaWdodEN5Y2xlLFxuICAgICAgbmVnYXRpdmVXZWlnaHRDeWNsZXM6IG5lZ2F0aXZlV2VpZ2h0Q3ljbGVzXG4gICAgfTtcbiAgfSAvLyBiZWxsbWFuRm9yZFxuXG59OyAvLyBlbGVzZm5cblxudmFyIHNxcnQyID0gTWF0aC5zcXJ0KDIpOyAvLyBGdW5jdGlvbiB3aGljaCBjb2xhcHNlcyAyIChtZXRhKSBub2RlcyBpbnRvIG9uZVxuLy8gVXBkYXRlcyB0aGUgcmVtYWluaW5nIGVkZ2UgbGlzdHNcbi8vIFJlY2VpdmVzIGFzIGEgcGFyYW1hdGVyIHRoZSBlZGdlIHdoaWNoIGNhdXNlcyB0aGUgY29sbGFwc2VcblxudmFyIGNvbGxhcHNlID0gZnVuY3Rpb24gY29sbGFwc2UoZWRnZUluZGV4LCBub2RlTWFwLCByZW1haW5pbmdFZGdlcykge1xuICBpZiAocmVtYWluaW5nRWRnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgZXJyb3IoXCJLYXJnZXItU3RlaW4gbXVzdCBiZSBydW4gb24gYSBjb25uZWN0ZWQgKHN1YilncmFwaFwiKTtcbiAgfVxuXG4gIHZhciBlZGdlSW5mbyA9IHJlbWFpbmluZ0VkZ2VzW2VkZ2VJbmRleF07XG4gIHZhciBzb3VyY2VJbiA9IGVkZ2VJbmZvWzFdO1xuICB2YXIgdGFyZ2V0SW4gPSBlZGdlSW5mb1syXTtcbiAgdmFyIHBhcnRpdGlvbjEgPSBub2RlTWFwW3NvdXJjZUluXTtcbiAgdmFyIHBhcnRpdGlvbjIgPSBub2RlTWFwW3RhcmdldEluXTtcbiAgdmFyIG5ld0VkZ2VzID0gcmVtYWluaW5nRWRnZXM7IC8vIHJlLXVzZSBhcnJheVxuICAvLyBEZWxldGUgYWxsIGVkZ2VzIGJldHdlZW4gcGFydGl0aW9uMSBhbmQgcGFydGl0aW9uMlxuXG4gIGZvciAodmFyIGkgPSBuZXdFZGdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBlZGdlID0gbmV3RWRnZXNbaV07XG4gICAgdmFyIHNyYyA9IGVkZ2VbMV07XG4gICAgdmFyIHRndCA9IGVkZ2VbMl07XG5cbiAgICBpZiAobm9kZU1hcFtzcmNdID09PSBwYXJ0aXRpb24xICYmIG5vZGVNYXBbdGd0XSA9PT0gcGFydGl0aW9uMiB8fCBub2RlTWFwW3NyY10gPT09IHBhcnRpdGlvbjIgJiYgbm9kZU1hcFt0Z3RdID09PSBwYXJ0aXRpb24xKSB7XG4gICAgICBuZXdFZGdlcy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9IC8vIEFsbCBlZGdlcyBwb2ludGluZyB0byBwYXJ0aXRpb24yIHNob3VsZCBub3cgcG9pbnQgdG8gcGFydGl0aW9uMVxuXG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG5ld0VkZ2VzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBfZWRnZSA9IG5ld0VkZ2VzW19pXTtcblxuICAgIGlmIChfZWRnZVsxXSA9PT0gcGFydGl0aW9uMikge1xuICAgICAgLy8gQ2hlY2sgc291cmNlXG4gICAgICBuZXdFZGdlc1tfaV0gPSBfZWRnZS5zbGljZSgpOyAvLyBjb3B5XG5cbiAgICAgIG5ld0VkZ2VzW19pXVsxXSA9IHBhcnRpdGlvbjE7XG4gICAgfSBlbHNlIGlmIChfZWRnZVsyXSA9PT0gcGFydGl0aW9uMikge1xuICAgICAgLy8gQ2hlY2sgdGFyZ2V0XG4gICAgICBuZXdFZGdlc1tfaV0gPSBfZWRnZS5zbGljZSgpOyAvLyBjb3B5XG5cbiAgICAgIG5ld0VkZ2VzW19pXVsyXSA9IHBhcnRpdGlvbjE7XG4gICAgfVxuICB9IC8vIE1vdmUgYWxsIG5vZGVzIGZyb20gcGFydGl0aW9uMiB0byBwYXJ0aXRpb24xXG5cblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBub2RlTWFwLmxlbmd0aDsgX2kyKyspIHtcbiAgICBpZiAobm9kZU1hcFtfaTJdID09PSBwYXJ0aXRpb24yKSB7XG4gICAgICBub2RlTWFwW19pMl0gPSBwYXJ0aXRpb24xO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdFZGdlcztcbn07IC8vIENvbnRyYWN0cyBhIGdyYXBoIHVudGlsIHdlIHJlYWNoIGEgY2VydGFpbiBudW1iZXIgb2YgbWV0YSBub2Rlc1xuXG5cbnZhciBjb250cmFjdFVudGlsID0gZnVuY3Rpb24gY29udHJhY3RVbnRpbChtZXRhTm9kZU1hcCwgcmVtYWluaW5nRWRnZXMsIHNpemUsIHNpemVMaW1pdCkge1xuICB3aGlsZSAoc2l6ZSA+IHNpemVMaW1pdCkge1xuICAgIC8vIENob29zZSBhbiBlZGdlIHJhbmRvbWx5XG4gICAgdmFyIGVkZ2VJbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHJlbWFpbmluZ0VkZ2VzLmxlbmd0aCk7IC8vIENvbGxhcHNlIGdyYXBoIGJhc2VkIG9uIGVkZ2VcblxuICAgIHJlbWFpbmluZ0VkZ2VzID0gY29sbGFwc2UoZWRnZUluZGV4LCBtZXRhTm9kZU1hcCwgcmVtYWluaW5nRWRnZXMpO1xuICAgIHNpemUtLTtcbiAgfVxuXG4gIHJldHVybiByZW1haW5pbmdFZGdlcztcbn07XG5cbnZhciBlbGVzZm4kNiA9IHtcbiAgLy8gQ29tcHV0ZXMgdGhlIG1pbmltdW0gY3V0IG9mIGFuIHVuZGlyZWN0ZWQgZ3JhcGhcbiAgLy8gUmV0dXJucyB0aGUgY29ycmVjdCBhbnN3ZXIgd2l0aCBoaWdoIHByb2JhYmlsaXR5XG4gIGthcmdlclN0ZWluOiBmdW5jdGlvbiBrYXJnZXJTdGVpbigpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF90aGlzJGJ5R3JvdXAgPSB0aGlzLmJ5R3JvdXAoKSxcbiAgICAgICAgbm9kZXMgPSBfdGhpcyRieUdyb3VwLm5vZGVzLFxuICAgICAgICBlZGdlcyA9IF90aGlzJGJ5R3JvdXAuZWRnZXM7XG5cbiAgICBlZGdlcy51bm1lcmdlQnkoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLmlzTG9vcCgpO1xuICAgIH0pO1xuICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcbiAgICB2YXIgbnVtRWRnZXMgPSBlZGdlcy5sZW5ndGg7XG4gICAgdmFyIG51bUl0ZXIgPSBNYXRoLmNlaWwoTWF0aC5wb3coTWF0aC5sb2cobnVtTm9kZXMpIC8gTWF0aC5MTjIsIDIpKTtcbiAgICB2YXIgc3RvcFNpemUgPSBNYXRoLmZsb29yKG51bU5vZGVzIC8gc3FydDIpO1xuXG4gICAgaWYgKG51bU5vZGVzIDwgMikge1xuICAgICAgZXJyb3IoJ0F0IGxlYXN0IDIgbm9kZXMgYXJlIHJlcXVpcmVkIGZvciBLYXJnZXItU3RlaW4gYWxnb3JpdGhtJyk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gLy8gTm93IHN0b3JlIGVkZ2UgZGVzdGluYXRpb24gYXMgaW5kZXhlc1xuICAgIC8vIEZvcm1hdCBmb3IgZWFjaCBlZGdlIChlZGdlIGluZGV4LCBzb3VyY2Ugbm9kZSBpbmRleCwgdGFyZ2V0IG5vZGUgaW5kZXgpXG5cblxuICAgIHZhciBlZGdlSW5kZXhlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1FZGdlczsgaSsrKSB7XG4gICAgICB2YXIgZSA9IGVkZ2VzW2ldO1xuICAgICAgZWRnZUluZGV4ZXMucHVzaChbaSwgbm9kZXMuaW5kZXhPZihlLnNvdXJjZSgpKSwgbm9kZXMuaW5kZXhPZihlLnRhcmdldCgpKV0pO1xuICAgIH0gLy8gV2Ugd2lsbCBzdG9yZSB0aGUgYmVzdCBjdXQgZm91bmQgaGVyZVxuXG5cbiAgICB2YXIgbWluQ3V0U2l6ZSA9IEluZmluaXR5O1xuICAgIHZhciBtaW5DdXRFZGdlSW5kZXhlcyA9IFtdO1xuICAgIHZhciBtaW5DdXROb2RlTWFwID0gbmV3IEFycmF5KG51bU5vZGVzKTsgLy8gSW5pdGlhbCBtZXRhIG5vZGUgcGFydGl0aW9uXG5cbiAgICB2YXIgbWV0YU5vZGVNYXAgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuICAgIHZhciBtZXRhTm9kZU1hcDIgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuXG4gICAgdmFyIGNvcHlOb2Rlc01hcCA9IGZ1bmN0aW9uIGNvcHlOb2Rlc01hcChmcm9tLCB0bykge1xuICAgICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgbnVtTm9kZXM7IF9pMysrKSB7XG4gICAgICAgIHRvW19pM10gPSBmcm9tW19pM107XG4gICAgICB9XG4gICAgfTsgLy8gTWFpbiBsb29wXG5cblxuICAgIGZvciAodmFyIGl0ZXIgPSAwOyBpdGVyIDw9IG51bUl0ZXI7IGl0ZXIrKykge1xuICAgICAgLy8gUmVzZXQgbWV0YSBub2RlIHBhcnRpdGlvblxuICAgICAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgbnVtTm9kZXM7IF9pNCsrKSB7XG4gICAgICAgIG1ldGFOb2RlTWFwW19pNF0gPSBfaTQ7XG4gICAgICB9IC8vIENvbnRyYWN0IHVudGlsIHN0b3AgcG9pbnQgKHN0b3BTaXplIG5vZGVzKVxuXG5cbiAgICAgIHZhciBlZGdlc1N0YXRlID0gY29udHJhY3RVbnRpbChtZXRhTm9kZU1hcCwgZWRnZUluZGV4ZXMuc2xpY2UoKSwgbnVtTm9kZXMsIHN0b3BTaXplKTtcbiAgICAgIHZhciBlZGdlc1N0YXRlMiA9IGVkZ2VzU3RhdGUuc2xpY2UoKTsgLy8gY29weVxuICAgICAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGUgY29sYXBzZWQgbm9kZXMgc3RhdGVcblxuICAgICAgY29weU5vZGVzTWFwKG1ldGFOb2RlTWFwLCBtZXRhTm9kZU1hcDIpOyAvLyBSdW4gMiBpdGVyYXRpb25zIHN0YXJ0aW5nIGluIHRoZSBzdG9wIHN0YXRlXG5cbiAgICAgIHZhciByZXMxID0gY29udHJhY3RVbnRpbChtZXRhTm9kZU1hcCwgZWRnZXNTdGF0ZSwgc3RvcFNpemUsIDIpO1xuICAgICAgdmFyIHJlczIgPSBjb250cmFjdFVudGlsKG1ldGFOb2RlTWFwMiwgZWRnZXNTdGF0ZTIsIHN0b3BTaXplLCAyKTsgLy8gSXMgYW55IG9mIHRoZSAyIHJlc3VsdHMgdGhlIGJlc3QgY3V0IHNvIGZhcj9cblxuICAgICAgaWYgKHJlczEubGVuZ3RoIDw9IHJlczIubGVuZ3RoICYmIHJlczEubGVuZ3RoIDwgbWluQ3V0U2l6ZSkge1xuICAgICAgICBtaW5DdXRTaXplID0gcmVzMS5sZW5ndGg7XG4gICAgICAgIG1pbkN1dEVkZ2VJbmRleGVzID0gcmVzMTtcbiAgICAgICAgY29weU5vZGVzTWFwKG1ldGFOb2RlTWFwLCBtaW5DdXROb2RlTWFwKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzMi5sZW5ndGggPD0gcmVzMS5sZW5ndGggJiYgcmVzMi5sZW5ndGggPCBtaW5DdXRTaXplKSB7XG4gICAgICAgIG1pbkN1dFNpemUgPSByZXMyLmxlbmd0aDtcbiAgICAgICAgbWluQ3V0RWRnZUluZGV4ZXMgPSByZXMyO1xuICAgICAgICBjb3B5Tm9kZXNNYXAobWV0YU5vZGVNYXAyLCBtaW5DdXROb2RlTWFwKTtcbiAgICAgIH1cbiAgICB9IC8vIGVuZCBvZiBtYWluIGxvb3BcbiAgICAvLyBDb25zdHJ1Y3QgcmVzdWx0XG5cblxuICAgIHZhciBjdXQgPSB0aGlzLnNwYXduKG1pbkN1dEVkZ2VJbmRleGVzLm1hcChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGVkZ2VzW2VbMF1dO1xuICAgIH0pKTtcbiAgICB2YXIgcGFydGl0aW9uMSA9IHRoaXMuc3Bhd24oKTtcbiAgICB2YXIgcGFydGl0aW9uMiA9IHRoaXMuc3Bhd24oKTsgLy8gdHJhdmVyc2UgbWV0YU5vZGVNYXAgZm9yIGJlc3QgY3V0XG5cbiAgICB2YXIgd2l0bmVzc05vZGVQYXJ0aXRpb24gPSBtaW5DdXROb2RlTWFwWzBdO1xuXG4gICAgZm9yICh2YXIgX2k1ID0gMDsgX2k1IDwgbWluQ3V0Tm9kZU1hcC5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICB2YXIgcGFydGl0aW9uSWQgPSBtaW5DdXROb2RlTWFwW19pNV07XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW19pNV07XG5cbiAgICAgIGlmIChwYXJ0aXRpb25JZCA9PT0gd2l0bmVzc05vZGVQYXJ0aXRpb24pIHtcbiAgICAgICAgcGFydGl0aW9uMS5tZXJnZShub2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnRpdGlvbjIubWVyZ2Uobm9kZSk7XG4gICAgICB9XG4gICAgfSAvLyBjb25zdHJ1Y3QgY29tcG9uZW50cyBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZGlzam9pbnQgc3Vic2V0IG9mIG5vZGVzXG5cblxuICAgIHZhciBjb25zdHJ1Y3RDb21wb25lbnQgPSBmdW5jdGlvbiBjb25zdHJ1Y3RDb21wb25lbnQoc3Vic2V0KSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gX3RoaXMuc3Bhd24oKTtcblxuICAgICAgc3Vic2V0LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgY29tcG9uZW50Lm1lcmdlKG5vZGUpO1xuICAgICAgICBub2RlLmNvbm5lY3RlZEVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIC8vIGVuc3VyZSBlZGdlIGlzIHdpdGhpbiBjYWxsaW5nIGNvbGxlY3Rpb24gYW5kIGVkZ2UgaXMgbm90IGluIGN1dFxuICAgICAgICAgIGlmIChfdGhpcy5jb250YWlucyhlZGdlKSAmJiAhY3V0LmNvbnRhaW5zKGVkZ2UpKSB7XG4gICAgICAgICAgICBjb21wb25lbnQubWVyZ2UoZWRnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICB9O1xuXG4gICAgdmFyIGNvbXBvbmVudHMgPSBbY29uc3RydWN0Q29tcG9uZW50KHBhcnRpdGlvbjEpLCBjb25zdHJ1Y3RDb21wb25lbnQocGFydGl0aW9uMildO1xuICAgIHZhciByZXQgPSB7XG4gICAgICBjdXQ6IGN1dCxcbiAgICAgIGNvbXBvbmVudHM6IGNvbXBvbmVudHMsXG4gICAgICAvLyBuLmIuIHBhcnRpdGlvbnMgYXJlIGluY2x1ZGVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgb2xkIGFwaSBzcGVjXG4gICAgICAvLyAoY291bGQgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciB2ZXJzaW9uKVxuICAgICAgcGFydGl0aW9uMTogcGFydGl0aW9uMSxcbiAgICAgIHBhcnRpdGlvbjI6IHBhcnRpdGlvbjJcbiAgICB9O1xuICAgIHJldHVybiByZXQ7XG4gIH1cbn07IC8vIGVsZXNmblxuXG52YXIgY29weVBvc2l0aW9uID0gZnVuY3Rpb24gY29weVBvc2l0aW9uKHApIHtcbiAgcmV0dXJuIHtcbiAgICB4OiBwLngsXG4gICAgeTogcC55XG4gIH07XG59O1xudmFyIG1vZGVsVG9SZW5kZXJlZFBvc2l0aW9uID0gZnVuY3Rpb24gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24ocCwgem9vbSwgcGFuKSB7XG4gIHJldHVybiB7XG4gICAgeDogcC54ICogem9vbSArIHBhbi54LFxuICAgIHk6IHAueSAqIHpvb20gKyBwYW4ueVxuICB9O1xufTtcbnZhciByZW5kZXJlZFRvTW9kZWxQb3NpdGlvbiA9IGZ1bmN0aW9uIHJlbmRlcmVkVG9Nb2RlbFBvc2l0aW9uKHAsIHpvb20sIHBhbikge1xuICByZXR1cm4ge1xuICAgIHg6IChwLnggLSBwYW4ueCkgLyB6b29tLFxuICAgIHk6IChwLnkgLSBwYW4ueSkgLyB6b29tXG4gIH07XG59O1xudmFyIGFycmF5MnBvaW50ID0gZnVuY3Rpb24gYXJyYXkycG9pbnQoYXJyKSB7XG4gIHJldHVybiB7XG4gICAgeDogYXJyWzBdLFxuICAgIHk6IGFyclsxXVxuICB9O1xufTtcbnZhciBtaW4gPSBmdW5jdGlvbiBtaW4oYXJyKSB7XG4gIHZhciBiZWdpbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgdmFyIGVuZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogYXJyLmxlbmd0aDtcbiAgdmFyIG1pbiA9IEluZmluaXR5O1xuXG4gIGZvciAodmFyIGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7XG4gICAgdmFyIHZhbCA9IGFycltpXTtcblxuICAgIGlmIChpc0Zpbml0ZSh2YWwpKSB7XG4gICAgICBtaW4gPSBNYXRoLm1pbih2YWwsIG1pbik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1pbjtcbn07XG52YXIgbWF4ID0gZnVuY3Rpb24gbWF4KGFycikge1xuICB2YXIgYmVnaW4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gIHZhciBlbmQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IGFyci5sZW5ndGg7XG4gIHZhciBtYXggPSAtSW5maW5pdHk7XG5cbiAgZm9yICh2YXIgaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHtcbiAgICB2YXIgdmFsID0gYXJyW2ldO1xuXG4gICAgaWYgKGlzRmluaXRlKHZhbCkpIHtcbiAgICAgIG1heCA9IE1hdGgubWF4KHZhbCwgbWF4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWF4O1xufTtcbnZhciBtZWFuID0gZnVuY3Rpb24gbWVhbihhcnIpIHtcbiAgdmFyIGJlZ2luID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAwO1xuICB2YXIgZW5kID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBhcnIubGVuZ3RoO1xuICB2YXIgdG90YWwgPSAwO1xuICB2YXIgbiA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHtcbiAgICB2YXIgdmFsID0gYXJyW2ldO1xuXG4gICAgaWYgKGlzRmluaXRlKHZhbCkpIHtcbiAgICAgIHRvdGFsICs9IHZhbDtcbiAgICAgIG4rKztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG90YWwgLyBuO1xufTtcbnZhciBtZWRpYW4gPSBmdW5jdGlvbiBtZWRpYW4oYXJyKSB7XG4gIHZhciBiZWdpbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgdmFyIGVuZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogYXJyLmxlbmd0aDtcbiAgdmFyIGNvcHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHRydWU7XG4gIHZhciBzb3J0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiB0cnVlO1xuICB2YXIgaW5jbHVkZUhvbGVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiB0cnVlO1xuXG4gIGlmIChjb3B5KSB7XG4gICAgYXJyID0gYXJyLnNsaWNlKGJlZ2luLCBlbmQpO1xuICB9IGVsc2Uge1xuICAgIGlmIChlbmQgPCBhcnIubGVuZ3RoKSB7XG4gICAgICBhcnIuc3BsaWNlKGVuZCwgYXJyLmxlbmd0aCAtIGVuZCk7XG4gICAgfVxuXG4gICAgaWYgKGJlZ2luID4gMCkge1xuICAgICAgYXJyLnNwbGljZSgwLCBiZWdpbik7XG4gICAgfVxuICB9IC8vIGFsbCBub24gZmluaXRlIChlLmcuIEluZmluaXR5LCBOYU4pIGVsZW1lbnRzIG11c3QgYmUgLUluZmluaXR5IHNvIHRoZXkgZ28gdG8gdGhlIHN0YXJ0XG5cblxuICB2YXIgb2ZmID0gMDsgLy8gb2Zmc2V0IGZyb20gbm9uLWZpbml0ZSB2YWx1ZXNcblxuICBmb3IgKHZhciBpID0gYXJyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHYgPSBhcnJbaV07XG5cbiAgICBpZiAoaW5jbHVkZUhvbGVzKSB7XG4gICAgICBpZiAoIWlzRmluaXRlKHYpKSB7XG4gICAgICAgIGFycltpXSA9IC1JbmZpbml0eTtcbiAgICAgICAgb2ZmKys7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGp1c3QgcmVtb3ZlIGl0IGlmIHdlIGRvbid0IHdhbnQgdG8gY29uc2lkZXIgaG9sZXNcbiAgICAgIGFyci5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHNvcnQpIHtcbiAgICBhcnIuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pOyAvLyByZXF1aXJlcyBjb3B5ID0gdHJ1ZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byBjaGFuZ2UgdGhlIG9yaWdcbiAgfVxuXG4gIHZhciBsZW4gPSBhcnIubGVuZ3RoO1xuICB2YXIgbWlkID0gTWF0aC5mbG9vcihsZW4gLyAyKTtcblxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHJldHVybiBhcnJbbWlkICsgMSArIG9mZl07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChhcnJbbWlkIC0gMSArIG9mZl0gKyBhcnJbbWlkICsgb2ZmXSkgLyAyO1xuICB9XG59O1xudmFyIGRlZzJyYWQgPSBmdW5jdGlvbiBkZWcycmFkKGRlZykge1xuICByZXR1cm4gTWF0aC5QSSAqIGRlZyAvIDE4MDtcbn07XG52YXIgZ2V0QW5nbGVGcm9tRGlzcCA9IGZ1bmN0aW9uIGdldEFuZ2xlRnJvbURpc3AoZGlzcFgsIGRpc3BZKSB7XG4gIHJldHVybiBNYXRoLmF0YW4yKGRpc3BZLCBkaXNwWCkgLSBNYXRoLlBJIC8gMjtcbn07XG52YXIgbG9nMiA9IE1hdGgubG9nMiB8fCBmdW5jdGlvbiAobikge1xuICByZXR1cm4gTWF0aC5sb2cobikgLyBNYXRoLmxvZygyKTtcbn07XG52YXIgc2lnbnVtID0gZnVuY3Rpb24gc2lnbnVtKHgpIHtcbiAgaWYgKHggPiAwKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0gZWxzZSBpZiAoeCA8IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG52YXIgZGlzdCA9IGZ1bmN0aW9uIGRpc3QocDEsIHAyKSB7XG4gIHJldHVybiBNYXRoLnNxcnQoc3FkaXN0KHAxLCBwMikpO1xufTtcbnZhciBzcWRpc3QgPSBmdW5jdGlvbiBzcWRpc3QocDEsIHAyKSB7XG4gIHZhciBkeCA9IHAyLnggLSBwMS54O1xuICB2YXIgZHkgPSBwMi55IC0gcDEueTtcbiAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5O1xufTtcbnZhciBpblBsYWNlU3VtTm9ybWFsaXplID0gZnVuY3Rpb24gaW5QbGFjZVN1bU5vcm1hbGl6ZSh2KSB7XG4gIHZhciBsZW5ndGggPSB2Lmxlbmd0aDsgLy8gRmlyc3QsIGdldCBzdW0gb2YgYWxsIGVsZW1lbnRzXG5cbiAgdmFyIHRvdGFsID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdG90YWwgKz0gdltpXTtcbiAgfSAvLyBOb3csIGRpdmlkZSBlYWNoIGJ5IHRoZSBzdW0gb2YgYWxsIGVsZW1lbnRzXG5cblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGVuZ3RoOyBfaSsrKSB7XG4gICAgdltfaV0gPSB2W19pXSAvIHRvdGFsO1xuICB9XG5cbiAgcmV0dXJuIHY7XG59O1xuXG52YXIgcWJlemllckF0ID0gZnVuY3Rpb24gcWJlemllckF0KHAwLCBwMSwgcDIsIHQpIHtcbiAgcmV0dXJuICgxIC0gdCkgKiAoMSAtIHQpICogcDAgKyAyICogKDEgLSB0KSAqIHQgKiBwMSArIHQgKiB0ICogcDI7XG59O1xudmFyIHFiZXppZXJQdEF0ID0gZnVuY3Rpb24gcWJlemllclB0QXQocDAsIHAxLCBwMiwgdCkge1xuICByZXR1cm4ge1xuICAgIHg6IHFiZXppZXJBdChwMC54LCBwMS54LCBwMi54LCB0KSxcbiAgICB5OiBxYmV6aWVyQXQocDAueSwgcDEueSwgcDIueSwgdClcbiAgfTtcbn07XG52YXIgbGluZUF0ID0gZnVuY3Rpb24gbGluZUF0KHAwLCBwMSwgdCwgZCkge1xuICB2YXIgdmVjID0ge1xuICAgIHg6IHAxLnggLSBwMC54LFxuICAgIHk6IHAxLnkgLSBwMC55XG4gIH07XG4gIHZhciB2ZWNEaXN0ID0gZGlzdChwMCwgcDEpO1xuICB2YXIgbm9ybVZlYyA9IHtcbiAgICB4OiB2ZWMueCAvIHZlY0Rpc3QsXG4gICAgeTogdmVjLnkgLyB2ZWNEaXN0XG4gIH07XG4gIHQgPSB0ID09IG51bGwgPyAwIDogdDtcbiAgZCA9IGQgIT0gbnVsbCA/IGQgOiB0ICogdmVjRGlzdDtcbiAgcmV0dXJuIHtcbiAgICB4OiBwMC54ICsgbm9ybVZlYy54ICogZCxcbiAgICB5OiBwMC55ICsgbm9ybVZlYy55ICogZFxuICB9O1xufTtcbnZhciBib3VuZCA9IGZ1bmN0aW9uIGJvdW5kKG1pbiwgdmFsLCBtYXgpIHtcbiAgcmV0dXJuIE1hdGgubWF4KG1pbiwgTWF0aC5taW4obWF4LCB2YWwpKTtcbn07IC8vIG1ha2VzIGEgZnVsbCBiYiAoeDEsIHkxLCB4MiwgeTIsIHcsIGgpIGZyb20gaW1wbGljaXQgcGFyYW1zXG5cbnZhciBtYWtlQm91bmRpbmdCb3ggPSBmdW5jdGlvbiBtYWtlQm91bmRpbmdCb3goYmIpIHtcbiAgaWYgKGJiID09IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDE6IEluZmluaXR5LFxuICAgICAgeTE6IEluZmluaXR5LFxuICAgICAgeDI6IC1JbmZpbml0eSxcbiAgICAgIHkyOiAtSW5maW5pdHksXG4gICAgICB3OiAwLFxuICAgICAgaDogMFxuICAgIH07XG4gIH0gZWxzZSBpZiAoYmIueDEgIT0gbnVsbCAmJiBiYi55MSAhPSBudWxsKSB7XG4gICAgaWYgKGJiLngyICE9IG51bGwgJiYgYmIueTIgIT0gbnVsbCAmJiBiYi54MiA+PSBiYi54MSAmJiBiYi55MiA+PSBiYi55MSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDE6IGJiLngxLFxuICAgICAgICB5MTogYmIueTEsXG4gICAgICAgIHgyOiBiYi54MixcbiAgICAgICAgeTI6IGJiLnkyLFxuICAgICAgICB3OiBiYi54MiAtIGJiLngxLFxuICAgICAgICBoOiBiYi55MiAtIGJiLnkxXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoYmIudyAhPSBudWxsICYmIGJiLmggIT0gbnVsbCAmJiBiYi53ID49IDAgJiYgYmIuaCA+PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4MTogYmIueDEsXG4gICAgICAgIHkxOiBiYi55MSxcbiAgICAgICAgeDI6IGJiLngxICsgYmIudyxcbiAgICAgICAgeTI6IGJiLnkxICsgYmIuaCxcbiAgICAgICAgdzogYmIudyxcbiAgICAgICAgaDogYmIuaFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn07XG52YXIgY29weUJvdW5kaW5nQm94ID0gZnVuY3Rpb24gY29weUJvdW5kaW5nQm94KGJiKSB7XG4gIHJldHVybiB7XG4gICAgeDE6IGJiLngxLFxuICAgIHgyOiBiYi54MixcbiAgICB3OiBiYi53LFxuICAgIHkxOiBiYi55MSxcbiAgICB5MjogYmIueTIsXG4gICAgaDogYmIuaFxuICB9O1xufTtcbnZhciBjbGVhckJvdW5kaW5nQm94ID0gZnVuY3Rpb24gY2xlYXJCb3VuZGluZ0JveChiYikge1xuICBiYi54MSA9IEluZmluaXR5O1xuICBiYi55MSA9IEluZmluaXR5O1xuICBiYi54MiA9IC1JbmZpbml0eTtcbiAgYmIueTIgPSAtSW5maW5pdHk7XG4gIGJiLncgPSAwO1xuICBiYi5oID0gMDtcbn07XG52YXIgdXBkYXRlQm91bmRpbmdCb3ggPSBmdW5jdGlvbiB1cGRhdGVCb3VuZGluZ0JveChiYjEsIGJiMikge1xuICAvLyB1cGRhdGUgYmIxIHdpdGggYmIyIGJvdW5kc1xuICBiYjEueDEgPSBNYXRoLm1pbihiYjEueDEsIGJiMi54MSk7XG4gIGJiMS54MiA9IE1hdGgubWF4KGJiMS54MiwgYmIyLngyKTtcbiAgYmIxLncgPSBiYjEueDIgLSBiYjEueDE7XG4gIGJiMS55MSA9IE1hdGgubWluKGJiMS55MSwgYmIyLnkxKTtcbiAgYmIxLnkyID0gTWF0aC5tYXgoYmIxLnkyLCBiYjIueTIpO1xuICBiYjEuaCA9IGJiMS55MiAtIGJiMS55MTtcbn07XG52YXIgZXhwYW5kQm91bmRpbmdCb3hCeVBvaW50ID0gZnVuY3Rpb24gZXhwYW5kQm91bmRpbmdCb3hCeVBvaW50KGJiLCB4LCB5KSB7XG4gIGJiLngxID0gTWF0aC5taW4oYmIueDEsIHgpO1xuICBiYi54MiA9IE1hdGgubWF4KGJiLngyLCB4KTtcbiAgYmIudyA9IGJiLngyIC0gYmIueDE7XG4gIGJiLnkxID0gTWF0aC5taW4oYmIueTEsIHkpO1xuICBiYi55MiA9IE1hdGgubWF4KGJiLnkyLCB5KTtcbiAgYmIuaCA9IGJiLnkyIC0gYmIueTE7XG59O1xudmFyIGV4cGFuZEJvdW5kaW5nQm94ID0gZnVuY3Rpb24gZXhwYW5kQm91bmRpbmdCb3goYmIpIHtcbiAgdmFyIHBhZGRpbmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gIGJiLngxIC09IHBhZGRpbmc7XG4gIGJiLngyICs9IHBhZGRpbmc7XG4gIGJiLnkxIC09IHBhZGRpbmc7XG4gIGJiLnkyICs9IHBhZGRpbmc7XG4gIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgcmV0dXJuIGJiO1xufTtcbnZhciBleHBhbmRCb3VuZGluZ0JveFNpZGVzID0gZnVuY3Rpb24gZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhiYikge1xuICB2YXIgcGFkZGluZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogWzBdO1xuICB2YXIgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0O1xuXG4gIGlmIChwYWRkaW5nLmxlbmd0aCA9PT0gMSkge1xuICAgIHRvcCA9IHJpZ2h0ID0gYm90dG9tID0gbGVmdCA9IHBhZGRpbmdbMF07XG4gIH0gZWxzZSBpZiAocGFkZGluZy5sZW5ndGggPT09IDIpIHtcbiAgICB0b3AgPSBib3R0b20gPSBwYWRkaW5nWzBdO1xuICAgIGxlZnQgPSByaWdodCA9IHBhZGRpbmdbMV07XG4gIH0gZWxzZSBpZiAocGFkZGluZy5sZW5ndGggPT09IDQpIHtcbiAgICB2YXIgX3BhZGRpbmcgPSBfc2xpY2VkVG9BcnJheShwYWRkaW5nLCA0KTtcblxuICAgIHRvcCA9IF9wYWRkaW5nWzBdO1xuICAgIHJpZ2h0ID0gX3BhZGRpbmdbMV07XG4gICAgYm90dG9tID0gX3BhZGRpbmdbMl07XG4gICAgbGVmdCA9IF9wYWRkaW5nWzNdO1xuICB9XG5cbiAgYmIueDEgLT0gbGVmdDtcbiAgYmIueDIgKz0gcmlnaHQ7XG4gIGJiLnkxIC09IHRvcDtcbiAgYmIueTIgKz0gYm90dG9tO1xuICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgYmIuaCA9IGJiLnkyIC0gYmIueTE7XG4gIHJldHVybiBiYjtcbn07XG5cbnZhciBhc3NpZ25Cb3VuZGluZ0JveCA9IGZ1bmN0aW9uIGFzc2lnbkJvdW5kaW5nQm94KGJiMSwgYmIyKSB7XG4gIGJiMS54MSA9IGJiMi54MTtcbiAgYmIxLnkxID0gYmIyLnkxO1xuICBiYjEueDIgPSBiYjIueDI7XG4gIGJiMS55MiA9IGJiMi55MjtcbiAgYmIxLncgPSBiYjEueDIgLSBiYjEueDE7XG4gIGJiMS5oID0gYmIxLnkyIC0gYmIxLnkxO1xufTtcbnZhciBib3VuZGluZ0JveGVzSW50ZXJzZWN0ID0gZnVuY3Rpb24gYm91bmRpbmdCb3hlc0ludGVyc2VjdChiYjEsIGJiMikge1xuICAvLyBjYXNlOiBvbmUgYmIgdG8gcmlnaHQgb2Ygb3RoZXJcbiAgaWYgKGJiMS54MSA+IGJiMi54Mikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChiYjIueDEgPiBiYjEueDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gY2FzZTogb25lIGJiIHRvIGxlZnQgb2Ygb3RoZXJcblxuXG4gIGlmIChiYjEueDIgPCBiYjIueDEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYmIyLngyIDwgYmIxLngxKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIGNhc2U6IG9uZSBiYiBhYm92ZSBvdGhlclxuXG5cbiAgaWYgKGJiMS55MiA8IGJiMi55MSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChiYjIueTIgPCBiYjEueTEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gY2FzZTogb25lIGJiIGJlbG93IG90aGVyXG5cblxuICBpZiAoYmIxLnkxID4gYmIyLnkyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGJiMi55MSA+IGJiMS55Mikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyBvdGhlcndpc2UsIG11c3QgaGF2ZSBzb21lIG92ZXJsYXBcblxuXG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBpbkJvdW5kaW5nQm94ID0gZnVuY3Rpb24gaW5Cb3VuZGluZ0JveChiYiwgeCwgeSkge1xuICByZXR1cm4gYmIueDEgPD0geCAmJiB4IDw9IGJiLngyICYmIGJiLnkxIDw9IHkgJiYgeSA8PSBiYi55Mjtcbn07XG52YXIgcG9pbnRJbkJvdW5kaW5nQm94ID0gZnVuY3Rpb24gcG9pbnRJbkJvdW5kaW5nQm94KGJiLCBwdCkge1xuICByZXR1cm4gaW5Cb3VuZGluZ0JveChiYiwgcHQueCwgcHQueSk7XG59O1xudmFyIGJvdW5kaW5nQm94SW5Cb3VuZGluZ0JveCA9IGZ1bmN0aW9uIGJvdW5kaW5nQm94SW5Cb3VuZGluZ0JveChiYjEsIGJiMikge1xuICByZXR1cm4gaW5Cb3VuZGluZ0JveChiYjEsIGJiMi54MSwgYmIyLnkxKSAmJiBpbkJvdW5kaW5nQm94KGJiMSwgYmIyLngyLCBiYjIueTIpO1xufTtcbnZhciByb3VuZFJlY3RhbmdsZUludGVyc2VjdExpbmUgPSBmdW5jdGlvbiByb3VuZFJlY3RhbmdsZUludGVyc2VjdExpbmUoeCwgeSwgbm9kZVgsIG5vZGVZLCB3aWR0aCwgaGVpZ2h0LCBwYWRkaW5nKSB7XG4gIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgdmFyIGhhbGZXaWR0aCA9IHdpZHRoIC8gMjtcbiAgdmFyIGhhbGZIZWlnaHQgPSBoZWlnaHQgLyAyOyAvLyBDaGVjayBpbnRlcnNlY3Rpb25zIHdpdGggc3RyYWlnaHQgbGluZSBzZWdtZW50c1xuXG4gIHZhciBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zOyAvLyBUb3Agc2VnbWVudCwgbGVmdCB0byByaWdodFxuXG4gIHtcbiAgICB2YXIgdG9wU3RhcnRYID0gbm9kZVggLSBoYWxmV2lkdGggKyBjb3JuZXJSYWRpdXMgLSBwYWRkaW5nO1xuICAgIHZhciB0b3BTdGFydFkgPSBub2RlWSAtIGhhbGZIZWlnaHQgLSBwYWRkaW5nO1xuICAgIHZhciB0b3BFbmRYID0gbm9kZVggKyBoYWxmV2lkdGggLSBjb3JuZXJSYWRpdXMgKyBwYWRkaW5nO1xuICAgIHZhciB0b3BFbmRZID0gdG9wU3RhcnRZO1xuICAgIHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnMgPSBmaW5pdGVMaW5lc0ludGVyc2VjdCh4LCB5LCBub2RlWCwgbm9kZVksIHRvcFN0YXJ0WCwgdG9wU3RhcnRZLCB0b3BFbmRYLCB0b3BFbmRZLCBmYWxzZSk7XG5cbiAgICBpZiAoc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucztcbiAgICB9XG4gIH0gLy8gUmlnaHQgc2VnbWVudCwgdG9wIHRvIGJvdHRvbVxuXG4gIHtcbiAgICB2YXIgcmlnaHRTdGFydFggPSBub2RlWCArIGhhbGZXaWR0aCArIHBhZGRpbmc7XG4gICAgdmFyIHJpZ2h0U3RhcnRZID0gbm9kZVkgLSBoYWxmSGVpZ2h0ICsgY29ybmVyUmFkaXVzIC0gcGFkZGluZztcbiAgICB2YXIgcmlnaHRFbmRYID0gcmlnaHRTdGFydFg7XG4gICAgdmFyIHJpZ2h0RW5kWSA9IG5vZGVZICsgaGFsZkhlaWdodCAtIGNvcm5lclJhZGl1cyArIHBhZGRpbmc7XG4gICAgc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucyA9IGZpbml0ZUxpbmVzSW50ZXJzZWN0KHgsIHksIG5vZGVYLCBub2RlWSwgcmlnaHRTdGFydFgsIHJpZ2h0U3RhcnRZLCByaWdodEVuZFgsIHJpZ2h0RW5kWSwgZmFsc2UpO1xuXG4gICAgaWYgKHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnM7XG4gICAgfVxuICB9IC8vIEJvdHRvbSBzZWdtZW50LCBsZWZ0IHRvIHJpZ2h0XG5cbiAge1xuICAgIHZhciBib3R0b21TdGFydFggPSBub2RlWCAtIGhhbGZXaWR0aCArIGNvcm5lclJhZGl1cyAtIHBhZGRpbmc7XG4gICAgdmFyIGJvdHRvbVN0YXJ0WSA9IG5vZGVZICsgaGFsZkhlaWdodCArIHBhZGRpbmc7XG4gICAgdmFyIGJvdHRvbUVuZFggPSBub2RlWCArIGhhbGZXaWR0aCAtIGNvcm5lclJhZGl1cyArIHBhZGRpbmc7XG4gICAgdmFyIGJvdHRvbUVuZFkgPSBib3R0b21TdGFydFk7XG4gICAgc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucyA9IGZpbml0ZUxpbmVzSW50ZXJzZWN0KHgsIHksIG5vZGVYLCBub2RlWSwgYm90dG9tU3RhcnRYLCBib3R0b21TdGFydFksIGJvdHRvbUVuZFgsIGJvdHRvbUVuZFksIGZhbHNlKTtcblxuICAgIGlmIChzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zO1xuICAgIH1cbiAgfSAvLyBMZWZ0IHNlZ21lbnQsIHRvcCB0byBib3R0b21cblxuICB7XG4gICAgdmFyIGxlZnRTdGFydFggPSBub2RlWCAtIGhhbGZXaWR0aCAtIHBhZGRpbmc7XG4gICAgdmFyIGxlZnRTdGFydFkgPSBub2RlWSAtIGhhbGZIZWlnaHQgKyBjb3JuZXJSYWRpdXMgLSBwYWRkaW5nO1xuICAgIHZhciBsZWZ0RW5kWCA9IGxlZnRTdGFydFg7XG4gICAgdmFyIGxlZnRFbmRZID0gbm9kZVkgKyBoYWxmSGVpZ2h0IC0gY29ybmVyUmFkaXVzICsgcGFkZGluZztcbiAgICBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgbm9kZVgsIG5vZGVZLCBsZWZ0U3RhcnRYLCBsZWZ0U3RhcnRZLCBsZWZ0RW5kWCwgbGVmdEVuZFksIGZhbHNlKTtcblxuICAgIGlmIChzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zO1xuICAgIH1cbiAgfSAvLyBDaGVjayBpbnRlcnNlY3Rpb25zIHdpdGggYXJjIHNlZ21lbnRzXG5cbiAgdmFyIGFyY0ludGVyc2VjdGlvbnM7IC8vIFRvcCBMZWZ0XG5cbiAge1xuICAgIHZhciB0b3BMZWZ0Q2VudGVyWCA9IG5vZGVYIC0gaGFsZldpZHRoICsgY29ybmVyUmFkaXVzO1xuICAgIHZhciB0b3BMZWZ0Q2VudGVyWSA9IG5vZGVZIC0gaGFsZkhlaWdodCArIGNvcm5lclJhZGl1cztcbiAgICBhcmNJbnRlcnNlY3Rpb25zID0gaW50ZXJzZWN0TGluZUNpcmNsZSh4LCB5LCBub2RlWCwgbm9kZVksIHRvcExlZnRDZW50ZXJYLCB0b3BMZWZ0Q2VudGVyWSwgY29ybmVyUmFkaXVzICsgcGFkZGluZyk7IC8vIEVuc3VyZSB0aGUgaW50ZXJzZWN0aW9uIGlzIG9uIHRoZSBkZXNpcmVkIHF1YXJ0ZXIgb2YgdGhlIGNpcmNsZVxuXG4gICAgaWYgKGFyY0ludGVyc2VjdGlvbnMubGVuZ3RoID4gMCAmJiBhcmNJbnRlcnNlY3Rpb25zWzBdIDw9IHRvcExlZnRDZW50ZXJYICYmIGFyY0ludGVyc2VjdGlvbnNbMV0gPD0gdG9wTGVmdENlbnRlclkpIHtcbiAgICAgIHJldHVybiBbYXJjSW50ZXJzZWN0aW9uc1swXSwgYXJjSW50ZXJzZWN0aW9uc1sxXV07XG4gICAgfVxuICB9IC8vIFRvcCBSaWdodFxuXG4gIHtcbiAgICB2YXIgdG9wUmlnaHRDZW50ZXJYID0gbm9kZVggKyBoYWxmV2lkdGggLSBjb3JuZXJSYWRpdXM7XG4gICAgdmFyIHRvcFJpZ2h0Q2VudGVyWSA9IG5vZGVZIC0gaGFsZkhlaWdodCArIGNvcm5lclJhZGl1cztcbiAgICBhcmNJbnRlcnNlY3Rpb25zID0gaW50ZXJzZWN0TGluZUNpcmNsZSh4LCB5LCBub2RlWCwgbm9kZVksIHRvcFJpZ2h0Q2VudGVyWCwgdG9wUmlnaHRDZW50ZXJZLCBjb3JuZXJSYWRpdXMgKyBwYWRkaW5nKTsgLy8gRW5zdXJlIHRoZSBpbnRlcnNlY3Rpb24gaXMgb24gdGhlIGRlc2lyZWQgcXVhcnRlciBvZiB0aGUgY2lyY2xlXG5cbiAgICBpZiAoYXJjSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwICYmIGFyY0ludGVyc2VjdGlvbnNbMF0gPj0gdG9wUmlnaHRDZW50ZXJYICYmIGFyY0ludGVyc2VjdGlvbnNbMV0gPD0gdG9wUmlnaHRDZW50ZXJZKSB7XG4gICAgICByZXR1cm4gW2FyY0ludGVyc2VjdGlvbnNbMF0sIGFyY0ludGVyc2VjdGlvbnNbMV1dO1xuICAgIH1cbiAgfSAvLyBCb3R0b20gUmlnaHRcblxuICB7XG4gICAgdmFyIGJvdHRvbVJpZ2h0Q2VudGVyWCA9IG5vZGVYICsgaGFsZldpZHRoIC0gY29ybmVyUmFkaXVzO1xuICAgIHZhciBib3R0b21SaWdodENlbnRlclkgPSBub2RlWSArIGhhbGZIZWlnaHQgLSBjb3JuZXJSYWRpdXM7XG4gICAgYXJjSW50ZXJzZWN0aW9ucyA9IGludGVyc2VjdExpbmVDaXJjbGUoeCwgeSwgbm9kZVgsIG5vZGVZLCBib3R0b21SaWdodENlbnRlclgsIGJvdHRvbVJpZ2h0Q2VudGVyWSwgY29ybmVyUmFkaXVzICsgcGFkZGluZyk7IC8vIEVuc3VyZSB0aGUgaW50ZXJzZWN0aW9uIGlzIG9uIHRoZSBkZXNpcmVkIHF1YXJ0ZXIgb2YgdGhlIGNpcmNsZVxuXG4gICAgaWYgKGFyY0ludGVyc2VjdGlvbnMubGVuZ3RoID4gMCAmJiBhcmNJbnRlcnNlY3Rpb25zWzBdID49IGJvdHRvbVJpZ2h0Q2VudGVyWCAmJiBhcmNJbnRlcnNlY3Rpb25zWzFdID49IGJvdHRvbVJpZ2h0Q2VudGVyWSkge1xuICAgICAgcmV0dXJuIFthcmNJbnRlcnNlY3Rpb25zWzBdLCBhcmNJbnRlcnNlY3Rpb25zWzFdXTtcbiAgICB9XG4gIH0gLy8gQm90dG9tIExlZnRcblxuICB7XG4gICAgdmFyIGJvdHRvbUxlZnRDZW50ZXJYID0gbm9kZVggLSBoYWxmV2lkdGggKyBjb3JuZXJSYWRpdXM7XG4gICAgdmFyIGJvdHRvbUxlZnRDZW50ZXJZID0gbm9kZVkgKyBoYWxmSGVpZ2h0IC0gY29ybmVyUmFkaXVzO1xuICAgIGFyY0ludGVyc2VjdGlvbnMgPSBpbnRlcnNlY3RMaW5lQ2lyY2xlKHgsIHksIG5vZGVYLCBub2RlWSwgYm90dG9tTGVmdENlbnRlclgsIGJvdHRvbUxlZnRDZW50ZXJZLCBjb3JuZXJSYWRpdXMgKyBwYWRkaW5nKTsgLy8gRW5zdXJlIHRoZSBpbnRlcnNlY3Rpb24gaXMgb24gdGhlIGRlc2lyZWQgcXVhcnRlciBvZiB0aGUgY2lyY2xlXG5cbiAgICBpZiAoYXJjSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwICYmIGFyY0ludGVyc2VjdGlvbnNbMF0gPD0gYm90dG9tTGVmdENlbnRlclggJiYgYXJjSW50ZXJzZWN0aW9uc1sxXSA+PSBib3R0b21MZWZ0Q2VudGVyWSkge1xuICAgICAgcmV0dXJuIFthcmNJbnRlcnNlY3Rpb25zWzBdLCBhcmNJbnRlcnNlY3Rpb25zWzFdXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtdOyAvLyBpZiBub3RoaW5nXG59O1xudmFyIGluTGluZVZpY2luaXR5ID0gZnVuY3Rpb24gaW5MaW5lVmljaW5pdHkoeCwgeSwgbHgxLCBseTEsIGx4MiwgbHkyLCB0b2xlcmFuY2UpIHtcbiAgdmFyIHQgPSB0b2xlcmFuY2U7XG4gIHZhciB4MSA9IE1hdGgubWluKGx4MSwgbHgyKTtcbiAgdmFyIHgyID0gTWF0aC5tYXgobHgxLCBseDIpO1xuICB2YXIgeTEgPSBNYXRoLm1pbihseTEsIGx5Mik7XG4gIHZhciB5MiA9IE1hdGgubWF4KGx5MSwgbHkyKTtcbiAgcmV0dXJuIHgxIC0gdCA8PSB4ICYmIHggPD0geDIgKyB0ICYmIHkxIC0gdCA8PSB5ICYmIHkgPD0geTIgKyB0O1xufTtcbnZhciBpbkJlemllclZpY2luaXR5ID0gZnVuY3Rpb24gaW5CZXppZXJWaWNpbml0eSh4LCB5LCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB0b2xlcmFuY2UpIHtcbiAgdmFyIGJiID0ge1xuICAgIHgxOiBNYXRoLm1pbih4MSwgeDMsIHgyKSAtIHRvbGVyYW5jZSxcbiAgICB4MjogTWF0aC5tYXgoeDEsIHgzLCB4MikgKyB0b2xlcmFuY2UsXG4gICAgeTE6IE1hdGgubWluKHkxLCB5MywgeTIpIC0gdG9sZXJhbmNlLFxuICAgIHkyOiBNYXRoLm1heCh5MSwgeTMsIHkyKSArIHRvbGVyYW5jZVxuICB9OyAvLyBpZiBvdXRzaWRlIHRoZSByb3VnaCBib3VuZGluZyBib3ggZm9yIHRoZSBiZXppZXIsIHRoZW4gaXQgY2FuJ3QgYmUgYSBoaXRcblxuICBpZiAoeCA8IGJiLngxIHx8IHggPiBiYi54MiB8fCB5IDwgYmIueTEgfHwgeSA+IGJiLnkyKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2JlemllciBvdXQgb2Ygcm91Z2ggYmInKVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICAvLyBjb25zb2xlLmxvZygnZG8gbW9yZSBleHBlbnNpdmUgY2hlY2snKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbnZhciBzb2x2ZVF1YWRyYXRpYyA9IGZ1bmN0aW9uIHNvbHZlUXVhZHJhdGljKGEsIGIsIGMsIHZhbCkge1xuICBjIC09IHZhbDtcbiAgdmFyIHIgPSBiICogYiAtIDQgKiBhICogYztcblxuICBpZiAociA8IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgc3FydFIgPSBNYXRoLnNxcnQocik7XG4gIHZhciBkZW5vbSA9IDIgKiBhO1xuICB2YXIgcm9vdDEgPSAoLWIgKyBzcXJ0UikgLyBkZW5vbTtcbiAgdmFyIHJvb3QyID0gKC1iIC0gc3FydFIpIC8gZGVub207XG4gIHJldHVybiBbcm9vdDEsIHJvb3QyXTtcbn07XG52YXIgc29sdmVDdWJpYyA9IGZ1bmN0aW9uIHNvbHZlQ3ViaWMoYSwgYiwgYywgZCwgcmVzdWx0KSB7XG4gIC8vIFNvbHZlcyBhIGN1YmljIGZ1bmN0aW9uLCByZXR1cm5zIHJvb3QgaW4gZm9ybSBbcjEsIGkxLCByMiwgaTIsIHIzLCBpM10sIHdoZXJlXG4gIC8vIHIgaXMgdGhlIHJlYWwgY29tcG9uZW50LCBpIGlzIHRoZSBpbWFnaW5hcnkgY29tcG9uZW50XG4gIC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBDYXJkYW5vIG1ldGhvZCBmcm9tIHRoZSB5ZWFyIDE1NDVcbiAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DdWJpY19mdW5jdGlvbiNUaGVfbmF0dXJlX29mX3RoZV9yb290c1xuICB2YXIgZXBzaWxvbiA9IDAuMDAwMDE7IC8vIGF2b2lkIGRpdmlzaW9uIGJ5IHplcm8gd2hpbGUga2VlcGluZyB0aGUgb3ZlcmFsbCBleHByZXNzaW9uIGNsb3NlIGluIHZhbHVlXG5cbiAgaWYgKGEgPT09IDApIHtcbiAgICBhID0gZXBzaWxvbjtcbiAgfVxuXG4gIGIgLz0gYTtcbiAgYyAvPSBhO1xuICBkIC89IGE7XG4gIHZhciBkaXNjcmltaW5hbnQsIHEsIHIsIGR1bTEsIHMsIHQsIHRlcm0xLCByMTM7XG4gIHEgPSAoMy4wICogYyAtIGIgKiBiKSAvIDkuMDtcbiAgciA9IC0oMjcuMCAqIGQpICsgYiAqICg5LjAgKiBjIC0gMi4wICogKGIgKiBiKSk7XG4gIHIgLz0gNTQuMDtcbiAgZGlzY3JpbWluYW50ID0gcSAqIHEgKiBxICsgciAqIHI7XG4gIHJlc3VsdFsxXSA9IDA7XG4gIHRlcm0xID0gYiAvIDMuMDtcblxuICBpZiAoZGlzY3JpbWluYW50ID4gMCkge1xuICAgIHMgPSByICsgTWF0aC5zcXJ0KGRpc2NyaW1pbmFudCk7XG4gICAgcyA9IHMgPCAwID8gLU1hdGgucG93KC1zLCAxLjAgLyAzLjApIDogTWF0aC5wb3cocywgMS4wIC8gMy4wKTtcbiAgICB0ID0gciAtIE1hdGguc3FydChkaXNjcmltaW5hbnQpO1xuICAgIHQgPSB0IDwgMCA/IC1NYXRoLnBvdygtdCwgMS4wIC8gMy4wKSA6IE1hdGgucG93KHQsIDEuMCAvIDMuMCk7XG4gICAgcmVzdWx0WzBdID0gLXRlcm0xICsgcyArIHQ7XG4gICAgdGVybTEgKz0gKHMgKyB0KSAvIDIuMDtcbiAgICByZXN1bHRbNF0gPSByZXN1bHRbMl0gPSAtdGVybTE7XG4gICAgdGVybTEgPSBNYXRoLnNxcnQoMy4wKSAqICgtdCArIHMpIC8gMjtcbiAgICByZXN1bHRbM10gPSB0ZXJtMTtcbiAgICByZXN1bHRbNV0gPSAtdGVybTE7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVzdWx0WzVdID0gcmVzdWx0WzNdID0gMDtcblxuICBpZiAoZGlzY3JpbWluYW50ID09PSAwKSB7XG4gICAgcjEzID0gciA8IDAgPyAtTWF0aC5wb3coLXIsIDEuMCAvIDMuMCkgOiBNYXRoLnBvdyhyLCAxLjAgLyAzLjApO1xuICAgIHJlc3VsdFswXSA9IC10ZXJtMSArIDIuMCAqIHIxMztcbiAgICByZXN1bHRbNF0gPSByZXN1bHRbMl0gPSAtKHIxMyArIHRlcm0xKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBxID0gLXE7XG4gIGR1bTEgPSBxICogcSAqIHE7XG4gIGR1bTEgPSBNYXRoLmFjb3MociAvIE1hdGguc3FydChkdW0xKSk7XG4gIHIxMyA9IDIuMCAqIE1hdGguc3FydChxKTtcbiAgcmVzdWx0WzBdID0gLXRlcm0xICsgcjEzICogTWF0aC5jb3MoZHVtMSAvIDMuMCk7XG4gIHJlc3VsdFsyXSA9IC10ZXJtMSArIHIxMyAqIE1hdGguY29zKChkdW0xICsgMi4wICogTWF0aC5QSSkgLyAzLjApO1xuICByZXN1bHRbNF0gPSAtdGVybTEgKyByMTMgKiBNYXRoLmNvcygoZHVtMSArIDQuMCAqIE1hdGguUEkpIC8gMy4wKTtcbiAgcmV0dXJuO1xufTtcbnZhciBzcWRpc3RUb1F1YWRyYXRpY0JlemllciA9IGZ1bmN0aW9uIHNxZGlzdFRvUXVhZHJhdGljQmV6aWVyKHgsIHksIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMpIHtcbiAgLy8gRmluZCBtaW5pbXVtIGRpc3RhbmNlIGJ5IHVzaW5nIHRoZSBtaW5pbXVtIG9mIHRoZSBkaXN0YW5jZVxuICAvLyBmdW5jdGlvbiBiZXR3ZWVuIHRoZSBnaXZlbiBwb2ludCBhbmQgdGhlIGN1cnZlXG4gIC8vIFRoaXMgZ2l2ZXMgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgcmVzdWx0aW5nIGN1YmljIGVxdWF0aW9uXG4gIC8vIHdob3NlIHJvb3RzIHRlbGwgdXMgd2hlcmUgYSBwb3NzaWJsZSBtaW5pbXVtIGlzXG4gIC8vIChDb2VmZmljaWVudHMgYXJlIGRpdmlkZWQgYnkgNClcbiAgdmFyIGEgPSAxLjAgKiB4MSAqIHgxIC0gNCAqIHgxICogeDIgKyAyICogeDEgKiB4MyArIDQgKiB4MiAqIHgyIC0gNCAqIHgyICogeDMgKyB4MyAqIHgzICsgeTEgKiB5MSAtIDQgKiB5MSAqIHkyICsgMiAqIHkxICogeTMgKyA0ICogeTIgKiB5MiAtIDQgKiB5MiAqIHkzICsgeTMgKiB5MztcbiAgdmFyIGIgPSAxLjAgKiA5ICogeDEgKiB4MiAtIDMgKiB4MSAqIHgxIC0gMyAqIHgxICogeDMgLSA2ICogeDIgKiB4MiArIDMgKiB4MiAqIHgzICsgOSAqIHkxICogeTIgLSAzICogeTEgKiB5MSAtIDMgKiB5MSAqIHkzIC0gNiAqIHkyICogeTIgKyAzICogeTIgKiB5MztcbiAgdmFyIGMgPSAxLjAgKiAzICogeDEgKiB4MSAtIDYgKiB4MSAqIHgyICsgeDEgKiB4MyAtIHgxICogeCArIDIgKiB4MiAqIHgyICsgMiAqIHgyICogeCAtIHgzICogeCArIDMgKiB5MSAqIHkxIC0gNiAqIHkxICogeTIgKyB5MSAqIHkzIC0geTEgKiB5ICsgMiAqIHkyICogeTIgKyAyICogeTIgKiB5IC0geTMgKiB5O1xuICB2YXIgZCA9IDEuMCAqIHgxICogeDIgLSB4MSAqIHgxICsgeDEgKiB4IC0geDIgKiB4ICsgeTEgKiB5MiAtIHkxICogeTEgKyB5MSAqIHkgLSB5MiAqIHk7IC8vIGRlYnVnKFwiY29lZmZpY2llbnRzOiBcIiArIGEgLyBhICsgXCIsIFwiICsgYiAvIGEgKyBcIiwgXCIgKyBjIC8gYSArIFwiLCBcIiArIGQgLyBhKTtcblxuICB2YXIgcm9vdHMgPSBbXTsgLy8gVXNlIHRoZSBjdWJpYyBzb2x2aW5nIGFsZ29yaXRobVxuXG4gIHNvbHZlQ3ViaWMoYSwgYiwgYywgZCwgcm9vdHMpO1xuICB2YXIgemVyb1RocmVzaG9sZCA9IDAuMDAwMDAwMTtcbiAgdmFyIHBhcmFtcyA9IFtdO1xuXG4gIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCA2OyBpbmRleCArPSAyKSB7XG4gICAgaWYgKE1hdGguYWJzKHJvb3RzW2luZGV4ICsgMV0pIDwgemVyb1RocmVzaG9sZCAmJiByb290c1tpbmRleF0gPj0gMCAmJiByb290c1tpbmRleF0gPD0gMS4wKSB7XG4gICAgICBwYXJhbXMucHVzaChyb290c1tpbmRleF0pO1xuICAgIH1cbiAgfVxuXG4gIHBhcmFtcy5wdXNoKDEuMCk7XG4gIHBhcmFtcy5wdXNoKDAuMCk7XG4gIHZhciBtaW5EaXN0YW5jZVNxdWFyZWQgPSAtMTtcbiAgdmFyIGN1clgsIGN1clksIGRpc3RTcXVhcmVkO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgY3VyWCA9IE1hdGgucG93KDEuMCAtIHBhcmFtc1tpXSwgMi4wKSAqIHgxICsgMi4wICogKDEgLSBwYXJhbXNbaV0pICogcGFyYW1zW2ldICogeDIgKyBwYXJhbXNbaV0gKiBwYXJhbXNbaV0gKiB4MztcbiAgICBjdXJZID0gTWF0aC5wb3coMSAtIHBhcmFtc1tpXSwgMi4wKSAqIHkxICsgMiAqICgxLjAgLSBwYXJhbXNbaV0pICogcGFyYW1zW2ldICogeTIgKyBwYXJhbXNbaV0gKiBwYXJhbXNbaV0gKiB5MztcbiAgICBkaXN0U3F1YXJlZCA9IE1hdGgucG93KGN1clggLSB4LCAyKSArIE1hdGgucG93KGN1clkgLSB5LCAyKTsgLy8gZGVidWcoJ2Rpc3RhbmNlIGZvciBwYXJhbSAnICsgcGFyYW1zW2ldICsgXCI6IFwiICsgTWF0aC5zcXJ0KGRpc3RTcXVhcmVkKSk7XG5cbiAgICBpZiAobWluRGlzdGFuY2VTcXVhcmVkID49IDApIHtcbiAgICAgIGlmIChkaXN0U3F1YXJlZCA8IG1pbkRpc3RhbmNlU3F1YXJlZCkge1xuICAgICAgICBtaW5EaXN0YW5jZVNxdWFyZWQgPSBkaXN0U3F1YXJlZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWluRGlzdGFuY2VTcXVhcmVkID0gZGlzdFNxdWFyZWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1pbkRpc3RhbmNlU3F1YXJlZDtcbn07XG52YXIgc3FkaXN0VG9GaW5pdGVMaW5lID0gZnVuY3Rpb24gc3FkaXN0VG9GaW5pdGVMaW5lKHgsIHksIHgxLCB5MSwgeDIsIHkyKSB7XG4gIHZhciBvZmZzZXQgPSBbeCAtIHgxLCB5IC0geTFdO1xuICB2YXIgbGluZSA9IFt4MiAtIHgxLCB5MiAtIHkxXTtcbiAgdmFyIGxpbmVTcSA9IGxpbmVbMF0gKiBsaW5lWzBdICsgbGluZVsxXSAqIGxpbmVbMV07XG4gIHZhciBoeXBTcSA9IG9mZnNldFswXSAqIG9mZnNldFswXSArIG9mZnNldFsxXSAqIG9mZnNldFsxXTtcbiAgdmFyIGRvdFByb2R1Y3QgPSBvZmZzZXRbMF0gKiBsaW5lWzBdICsgb2Zmc2V0WzFdICogbGluZVsxXTtcbiAgdmFyIGFkalNxID0gZG90UHJvZHVjdCAqIGRvdFByb2R1Y3QgLyBsaW5lU3E7XG5cbiAgaWYgKGRvdFByb2R1Y3QgPCAwKSB7XG4gICAgcmV0dXJuIGh5cFNxO1xuICB9XG5cbiAgaWYgKGFkalNxID4gbGluZVNxKSB7XG4gICAgcmV0dXJuICh4IC0geDIpICogKHggLSB4MikgKyAoeSAtIHkyKSAqICh5IC0geTIpO1xuICB9XG5cbiAgcmV0dXJuIGh5cFNxIC0gYWRqU3E7XG59O1xudmFyIHBvaW50SW5zaWRlUG9seWdvblBvaW50cyA9IGZ1bmN0aW9uIHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCBwb2ludHMpIHtcbiAgdmFyIHgxLCB5MSwgeDIsIHkyO1xuICB2YXIgeTM7IC8vIEludGVyc2VjdCB3aXRoIHZlcnRpY2FsIGxpbmUgdGhyb3VnaCAoeCwgeSlcblxuICB2YXIgdXAgPSAwOyAvLyBsZXQgZG93biA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgeDEgPSBwb2ludHNbaSAqIDJdO1xuICAgIHkxID0gcG9pbnRzW2kgKiAyICsgMV07XG5cbiAgICBpZiAoaSArIDEgPCBwb2ludHMubGVuZ3RoIC8gMikge1xuICAgICAgeDIgPSBwb2ludHNbKGkgKyAxKSAqIDJdO1xuICAgICAgeTIgPSBwb2ludHNbKGkgKyAxKSAqIDIgKyAxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgeDIgPSBwb2ludHNbKGkgKyAxIC0gcG9pbnRzLmxlbmd0aCAvIDIpICogMl07XG4gICAgICB5MiA9IHBvaW50c1soaSArIDEgLSBwb2ludHMubGVuZ3RoIC8gMikgKiAyICsgMV07XG4gICAgfVxuXG4gICAgaWYgKHgxID09IHggJiYgeDIgPT0geCkgOyBlbHNlIGlmICh4MSA+PSB4ICYmIHggPj0geDIgfHwgeDEgPD0geCAmJiB4IDw9IHgyKSB7XG4gICAgICB5MyA9ICh4IC0geDEpIC8gKHgyIC0geDEpICogKHkyIC0geTEpICsgeTE7XG5cbiAgICAgIGlmICh5MyA+IHkpIHtcbiAgICAgICAgdXArKztcbiAgICAgIH0gLy8gaWYoIHkzIDwgeSApe1xuICAgICAgLy8gZG93bisrO1xuICAgICAgLy8gfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICh1cCAlIDIgPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG52YXIgcG9pbnRJbnNpZGVQb2x5Z29uID0gZnVuY3Rpb24gcG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIGJhc2VQb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIGRpcmVjdGlvbiwgcGFkZGluZykge1xuICB2YXIgdHJhbnNmb3JtZWRQb2ludHMgPSBuZXcgQXJyYXkoYmFzZVBvaW50cy5sZW5ndGgpOyAvLyBHaXZlcyBuZWdhdGl2ZSBhbmdsZVxuXG4gIHZhciBhbmdsZTtcblxuICBpZiAoZGlyZWN0aW9uWzBdICE9IG51bGwpIHtcbiAgICBhbmdsZSA9IE1hdGguYXRhbihkaXJlY3Rpb25bMV0gLyBkaXJlY3Rpb25bMF0pO1xuXG4gICAgaWYgKGRpcmVjdGlvblswXSA8IDApIHtcbiAgICAgIGFuZ2xlID0gYW5nbGUgKyBNYXRoLlBJIC8gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYW5nbGUgPSAtYW5nbGUgLSBNYXRoLlBJIC8gMjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYW5nbGUgPSBkaXJlY3Rpb247XG4gIH1cblxuICB2YXIgY29zID0gTWF0aC5jb3MoLWFuZ2xlKTtcbiAgdmFyIHNpbiA9IE1hdGguc2luKC1hbmdsZSk7IC8vICAgIGNvbnNvbGUubG9nKFwiYmFzZTogXCIgKyBiYXNlUG9pbnRzKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRyYW5zZm9ybWVkUG9pbnRzLmxlbmd0aCAvIDI7IGkrKykge1xuICAgIHRyYW5zZm9ybWVkUG9pbnRzW2kgKiAyXSA9IHdpZHRoIC8gMiAqIChiYXNlUG9pbnRzW2kgKiAyXSAqIGNvcyAtIGJhc2VQb2ludHNbaSAqIDIgKyAxXSAqIHNpbik7XG4gICAgdHJhbnNmb3JtZWRQb2ludHNbaSAqIDIgKyAxXSA9IGhlaWdodCAvIDIgKiAoYmFzZVBvaW50c1tpICogMiArIDFdICogY29zICsgYmFzZVBvaW50c1tpICogMl0gKiBzaW4pO1xuICAgIHRyYW5zZm9ybWVkUG9pbnRzW2kgKiAyXSArPSBjZW50ZXJYO1xuICAgIHRyYW5zZm9ybWVkUG9pbnRzW2kgKiAyICsgMV0gKz0gY2VudGVyWTtcbiAgfVxuXG4gIHZhciBwb2ludHM7XG5cbiAgaWYgKHBhZGRpbmcgPiAwKSB7XG4gICAgdmFyIGV4cGFuZGVkTGluZVNldCA9IGV4cGFuZFBvbHlnb24odHJhbnNmb3JtZWRQb2ludHMsIC1wYWRkaW5nKTtcbiAgICBwb2ludHMgPSBqb2luTGluZXMoZXhwYW5kZWRMaW5lU2V0KTtcbiAgfSBlbHNlIHtcbiAgICBwb2ludHMgPSB0cmFuc2Zvcm1lZFBvaW50cztcbiAgfVxuXG4gIHJldHVybiBwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgcG9pbnRzKTtcbn07XG52YXIgcG9pbnRJbnNpZGVSb3VuZFBvbHlnb24gPSBmdW5jdGlvbiBwb2ludEluc2lkZVJvdW5kUG9seWdvbih4LCB5LCBiYXNlUG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBjdXRQb2x5Z29uUG9pbnRzID0gbmV3IEFycmF5KGJhc2VQb2ludHMubGVuZ3RoKTtcbiAgdmFyIGhhbGZXID0gd2lkdGggLyAyO1xuICB2YXIgaGFsZkggPSBoZWlnaHQgLyAyO1xuICB2YXIgY29ybmVyUmFkaXVzID0gZ2V0Um91bmRQb2x5Z29uUmFkaXVzKHdpZHRoLCBoZWlnaHQpO1xuICB2YXIgc3F1YXJlZENvcm5lclJhZGl1cyA9IGNvcm5lclJhZGl1cyAqIGNvcm5lclJhZGl1cztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhc2VQb2ludHMubGVuZ3RoIC8gNDsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZVV2ID0gdm9pZCAwLFxuICAgICAgICBkZXN0VXYgPSB2b2lkIDA7XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgc291cmNlVXYgPSBiYXNlUG9pbnRzLmxlbmd0aCAtIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNvdXJjZVV2ID0gaSAqIDQgLSAyO1xuICAgIH1cblxuICAgIGRlc3RVdiA9IGkgKiA0ICsgMjtcbiAgICB2YXIgcHggPSBjZW50ZXJYICsgaGFsZlcgKiBiYXNlUG9pbnRzW2kgKiA0XTtcbiAgICB2YXIgcHkgPSBjZW50ZXJZICsgaGFsZkggKiBiYXNlUG9pbnRzW2kgKiA0ICsgMV07XG4gICAgdmFyIGNvc1RoZXRhID0gLWJhc2VQb2ludHNbc291cmNlVXZdICogYmFzZVBvaW50c1tkZXN0VXZdIC0gYmFzZVBvaW50c1tzb3VyY2VVdiArIDFdICogYmFzZVBvaW50c1tkZXN0VXYgKyAxXTtcbiAgICB2YXIgb2Zmc2V0ID0gY29ybmVyUmFkaXVzIC8gTWF0aC50YW4oTWF0aC5hY29zKGNvc1RoZXRhKSAvIDIpO1xuICAgIHZhciBjcDB4ID0gcHggLSBvZmZzZXQgKiBiYXNlUG9pbnRzW3NvdXJjZVV2XTtcbiAgICB2YXIgY3AweSA9IHB5IC0gb2Zmc2V0ICogYmFzZVBvaW50c1tzb3VyY2VVdiArIDFdO1xuICAgIHZhciBjcDF4ID0gcHggKyBvZmZzZXQgKiBiYXNlUG9pbnRzW2Rlc3RVdl07XG4gICAgdmFyIGNwMXkgPSBweSArIG9mZnNldCAqIGJhc2VQb2ludHNbZGVzdFV2ICsgMV07XG4gICAgY3V0UG9seWdvblBvaW50c1tpICogNF0gPSBjcDB4O1xuICAgIGN1dFBvbHlnb25Qb2ludHNbaSAqIDQgKyAxXSA9IGNwMHk7XG4gICAgY3V0UG9seWdvblBvaW50c1tpICogNCArIDJdID0gY3AxeDtcbiAgICBjdXRQb2x5Z29uUG9pbnRzW2kgKiA0ICsgM10gPSBjcDF5O1xuICAgIHZhciBvcnRoeCA9IGJhc2VQb2ludHNbc291cmNlVXYgKyAxXTtcbiAgICB2YXIgb3J0aHkgPSAtYmFzZVBvaW50c1tzb3VyY2VVdl07XG4gICAgdmFyIGNvc0FscGhhID0gb3J0aHggKiBiYXNlUG9pbnRzW2Rlc3RVdl0gKyBvcnRoeSAqIGJhc2VQb2ludHNbZGVzdFV2ICsgMV07XG5cbiAgICBpZiAoY29zQWxwaGEgPCAwKSB7XG4gICAgICBvcnRoeCAqPSAtMTtcbiAgICAgIG9ydGh5ICo9IC0xO1xuICAgIH1cblxuICAgIHZhciBjeCA9IGNwMHggKyBvcnRoeCAqIGNvcm5lclJhZGl1cztcbiAgICB2YXIgY3kgPSBjcDB5ICsgb3J0aHkgKiBjb3JuZXJSYWRpdXM7XG4gICAgdmFyIHNxdWFyZWREaXN0YW5jZSA9IE1hdGgucG93KGN4IC0geCwgMikgKyBNYXRoLnBvdyhjeSAtIHksIDIpO1xuXG4gICAgaWYgKHNxdWFyZWREaXN0YW5jZSA8PSBzcXVhcmVkQ29ybmVyUmFkaXVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIGN1dFBvbHlnb25Qb2ludHMpO1xufTtcbnZhciBqb2luTGluZXMgPSBmdW5jdGlvbiBqb2luTGluZXMobGluZVNldCkge1xuICB2YXIgdmVydGljZXMgPSBuZXcgQXJyYXkobGluZVNldC5sZW5ndGggLyAyKTtcbiAgdmFyIGN1cnJlbnRMaW5lU3RhcnRYLCBjdXJyZW50TGluZVN0YXJ0WSwgY3VycmVudExpbmVFbmRYLCBjdXJyZW50TGluZUVuZFk7XG4gIHZhciBuZXh0TGluZVN0YXJ0WCwgbmV4dExpbmVTdGFydFksIG5leHRMaW5lRW5kWCwgbmV4dExpbmVFbmRZO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZVNldC5sZW5ndGggLyA0OyBpKyspIHtcbiAgICBjdXJyZW50TGluZVN0YXJ0WCA9IGxpbmVTZXRbaSAqIDRdO1xuICAgIGN1cnJlbnRMaW5lU3RhcnRZID0gbGluZVNldFtpICogNCArIDFdO1xuICAgIGN1cnJlbnRMaW5lRW5kWCA9IGxpbmVTZXRbaSAqIDQgKyAyXTtcbiAgICBjdXJyZW50TGluZUVuZFkgPSBsaW5lU2V0W2kgKiA0ICsgM107XG5cbiAgICBpZiAoaSA8IGxpbmVTZXQubGVuZ3RoIC8gNCAtIDEpIHtcbiAgICAgIG5leHRMaW5lU3RhcnRYID0gbGluZVNldFsoaSArIDEpICogNF07XG4gICAgICBuZXh0TGluZVN0YXJ0WSA9IGxpbmVTZXRbKGkgKyAxKSAqIDQgKyAxXTtcbiAgICAgIG5leHRMaW5lRW5kWCA9IGxpbmVTZXRbKGkgKyAxKSAqIDQgKyAyXTtcbiAgICAgIG5leHRMaW5lRW5kWSA9IGxpbmVTZXRbKGkgKyAxKSAqIDQgKyAzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dExpbmVTdGFydFggPSBsaW5lU2V0WzBdO1xuICAgICAgbmV4dExpbmVTdGFydFkgPSBsaW5lU2V0WzFdO1xuICAgICAgbmV4dExpbmVFbmRYID0gbGluZVNldFsyXTtcbiAgICAgIG5leHRMaW5lRW5kWSA9IGxpbmVTZXRbM107XG4gICAgfVxuXG4gICAgdmFyIGludGVyc2VjdGlvbiA9IGZpbml0ZUxpbmVzSW50ZXJzZWN0KGN1cnJlbnRMaW5lU3RhcnRYLCBjdXJyZW50TGluZVN0YXJ0WSwgY3VycmVudExpbmVFbmRYLCBjdXJyZW50TGluZUVuZFksIG5leHRMaW5lU3RhcnRYLCBuZXh0TGluZVN0YXJ0WSwgbmV4dExpbmVFbmRYLCBuZXh0TGluZUVuZFksIHRydWUpO1xuICAgIHZlcnRpY2VzW2kgKiAyXSA9IGludGVyc2VjdGlvblswXTtcbiAgICB2ZXJ0aWNlc1tpICogMiArIDFdID0gaW50ZXJzZWN0aW9uWzFdO1xuICB9XG5cbiAgcmV0dXJuIHZlcnRpY2VzO1xufTtcbnZhciBleHBhbmRQb2x5Z29uID0gZnVuY3Rpb24gZXhwYW5kUG9seWdvbihwb2ludHMsIHBhZCkge1xuICB2YXIgZXhwYW5kZWRMaW5lU2V0ID0gbmV3IEFycmF5KHBvaW50cy5sZW5ndGggKiAyKTtcbiAgdmFyIGN1cnJlbnRQb2ludFgsIGN1cnJlbnRQb2ludFksIG5leHRQb2ludFgsIG5leHRQb2ludFk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgY3VycmVudFBvaW50WCA9IHBvaW50c1tpICogMl07XG4gICAgY3VycmVudFBvaW50WSA9IHBvaW50c1tpICogMiArIDFdO1xuXG4gICAgaWYgKGkgPCBwb2ludHMubGVuZ3RoIC8gMiAtIDEpIHtcbiAgICAgIG5leHRQb2ludFggPSBwb2ludHNbKGkgKyAxKSAqIDJdO1xuICAgICAgbmV4dFBvaW50WSA9IHBvaW50c1soaSArIDEpICogMiArIDFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0UG9pbnRYID0gcG9pbnRzWzBdO1xuICAgICAgbmV4dFBvaW50WSA9IHBvaW50c1sxXTtcbiAgICB9IC8vIEN1cnJlbnQgbGluZTogW2N1cnJlbnRQb2ludFgsIGN1cnJlbnRQb2ludFldIHRvIFtuZXh0UG9pbnRYLCBuZXh0UG9pbnRZXVxuICAgIC8vIEFzc3VtZSBDQ1cgcG9seWdvbiB3aW5kaW5nXG5cblxuICAgIHZhciBvZmZzZXRYID0gbmV4dFBvaW50WSAtIGN1cnJlbnRQb2ludFk7XG4gICAgdmFyIG9mZnNldFkgPSAtKG5leHRQb2ludFggLSBjdXJyZW50UG9pbnRYKTsgLy8gTm9ybWFsaXplXG5cbiAgICB2YXIgb2Zmc2V0TGVuZ3RoID0gTWF0aC5zcXJ0KG9mZnNldFggKiBvZmZzZXRYICsgb2Zmc2V0WSAqIG9mZnNldFkpO1xuICAgIHZhciBub3JtYWxpemVkT2Zmc2V0WCA9IG9mZnNldFggLyBvZmZzZXRMZW5ndGg7XG4gICAgdmFyIG5vcm1hbGl6ZWRPZmZzZXRZID0gb2Zmc2V0WSAvIG9mZnNldExlbmd0aDtcbiAgICBleHBhbmRlZExpbmVTZXRbaSAqIDRdID0gY3VycmVudFBvaW50WCArIG5vcm1hbGl6ZWRPZmZzZXRYICogcGFkO1xuICAgIGV4cGFuZGVkTGluZVNldFtpICogNCArIDFdID0gY3VycmVudFBvaW50WSArIG5vcm1hbGl6ZWRPZmZzZXRZICogcGFkO1xuICAgIGV4cGFuZGVkTGluZVNldFtpICogNCArIDJdID0gbmV4dFBvaW50WCArIG5vcm1hbGl6ZWRPZmZzZXRYICogcGFkO1xuICAgIGV4cGFuZGVkTGluZVNldFtpICogNCArIDNdID0gbmV4dFBvaW50WSArIG5vcm1hbGl6ZWRPZmZzZXRZICogcGFkO1xuICB9XG5cbiAgcmV0dXJuIGV4cGFuZGVkTGluZVNldDtcbn07XG52YXIgaW50ZXJzZWN0TGluZUVsbGlwc2UgPSBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lRWxsaXBzZSh4LCB5LCBjZW50ZXJYLCBjZW50ZXJZLCBlbGxpcHNlV3JhZGl1cywgZWxsaXBzZUhyYWRpdXMpIHtcbiAgdmFyIGRpc3BYID0gY2VudGVyWCAtIHg7XG4gIHZhciBkaXNwWSA9IGNlbnRlclkgLSB5O1xuICBkaXNwWCAvPSBlbGxpcHNlV3JhZGl1cztcbiAgZGlzcFkgLz0gZWxsaXBzZUhyYWRpdXM7XG4gIHZhciBsZW4gPSBNYXRoLnNxcnQoZGlzcFggKiBkaXNwWCArIGRpc3BZICogZGlzcFkpO1xuICB2YXIgbmV3TGVuZ3RoID0gbGVuIC0gMTtcblxuICBpZiAobmV3TGVuZ3RoIDwgMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciBsZW5Qcm9wb3J0aW9uID0gbmV3TGVuZ3RoIC8gbGVuO1xuICByZXR1cm4gWyhjZW50ZXJYIC0geCkgKiBsZW5Qcm9wb3J0aW9uICsgeCwgKGNlbnRlclkgLSB5KSAqIGxlblByb3BvcnRpb24gKyB5XTtcbn07XG52YXIgY2hlY2tJbkVsbGlwc2UgPSBmdW5jdGlvbiBjaGVja0luRWxsaXBzZSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZLCBwYWRkaW5nKSB7XG4gIHggLT0gY2VudGVyWDtcbiAgeSAtPSBjZW50ZXJZO1xuICB4IC89IHdpZHRoIC8gMiArIHBhZGRpbmc7XG4gIHkgLz0gaGVpZ2h0IC8gMiArIHBhZGRpbmc7XG4gIHJldHVybiB4ICogeCArIHkgKiB5IDw9IDE7XG59OyAvLyBSZXR1cm5zIGludGVyc2VjdGlvbnMgb2YgaW5jcmVhc2luZyBkaXN0YW5jZSBmcm9tIGxpbmUncyBzdGFydCBwb2ludFxuXG52YXIgaW50ZXJzZWN0TGluZUNpcmNsZSA9IGZ1bmN0aW9uIGludGVyc2VjdExpbmVDaXJjbGUoeDEsIHkxLCB4MiwgeTIsIGNlbnRlclgsIGNlbnRlclksIHJhZGl1cykge1xuICAvLyBDYWxjdWxhdGUgZCwgZGlyZWN0aW9uIHZlY3RvciBvZiBsaW5lXG4gIHZhciBkID0gW3gyIC0geDEsIHkyIC0geTFdOyAvLyBEaXJlY3Rpb24gdmVjdG9yIG9mIGxpbmVcblxuICB2YXIgZiA9IFt4MSAtIGNlbnRlclgsIHkxIC0gY2VudGVyWV07XG4gIHZhciBhID0gZFswXSAqIGRbMF0gKyBkWzFdICogZFsxXTtcbiAgdmFyIGIgPSAyICogKGZbMF0gKiBkWzBdICsgZlsxXSAqIGRbMV0pO1xuICB2YXIgYyA9IGZbMF0gKiBmWzBdICsgZlsxXSAqIGZbMV0gLSByYWRpdXMgKiByYWRpdXM7XG4gIHZhciBkaXNjcmltaW5hbnQgPSBiICogYiAtIDQgKiBhICogYztcblxuICBpZiAoZGlzY3JpbWluYW50IDwgMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciB0MSA9ICgtYiArIE1hdGguc3FydChkaXNjcmltaW5hbnQpKSAvICgyICogYSk7XG4gIHZhciB0MiA9ICgtYiAtIE1hdGguc3FydChkaXNjcmltaW5hbnQpKSAvICgyICogYSk7XG4gIHZhciB0TWluID0gTWF0aC5taW4odDEsIHQyKTtcbiAgdmFyIHRNYXggPSBNYXRoLm1heCh0MSwgdDIpO1xuICB2YXIgaW5SYW5nZVBhcmFtcyA9IFtdO1xuXG4gIGlmICh0TWluID49IDAgJiYgdE1pbiA8PSAxKSB7XG4gICAgaW5SYW5nZVBhcmFtcy5wdXNoKHRNaW4pO1xuICB9XG5cbiAgaWYgKHRNYXggPj0gMCAmJiB0TWF4IDw9IDEpIHtcbiAgICBpblJhbmdlUGFyYW1zLnB1c2godE1heCk7XG4gIH1cblxuICBpZiAoaW5SYW5nZVBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgbmVhckludGVyc2VjdGlvblggPSBpblJhbmdlUGFyYW1zWzBdICogZFswXSArIHgxO1xuICB2YXIgbmVhckludGVyc2VjdGlvblkgPSBpblJhbmdlUGFyYW1zWzBdICogZFsxXSArIHkxO1xuXG4gIGlmIChpblJhbmdlUGFyYW1zLmxlbmd0aCA+IDEpIHtcbiAgICBpZiAoaW5SYW5nZVBhcmFtc1swXSA9PSBpblJhbmdlUGFyYW1zWzFdKSB7XG4gICAgICByZXR1cm4gW25lYXJJbnRlcnNlY3Rpb25YLCBuZWFySW50ZXJzZWN0aW9uWV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBmYXJJbnRlcnNlY3Rpb25YID0gaW5SYW5nZVBhcmFtc1sxXSAqIGRbMF0gKyB4MTtcbiAgICAgIHZhciBmYXJJbnRlcnNlY3Rpb25ZID0gaW5SYW5nZVBhcmFtc1sxXSAqIGRbMV0gKyB5MTtcbiAgICAgIHJldHVybiBbbmVhckludGVyc2VjdGlvblgsIG5lYXJJbnRlcnNlY3Rpb25ZLCBmYXJJbnRlcnNlY3Rpb25YLCBmYXJJbnRlcnNlY3Rpb25ZXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtuZWFySW50ZXJzZWN0aW9uWCwgbmVhckludGVyc2VjdGlvblldO1xuICB9XG59O1xudmFyIG1pZE9mVGhyZWUgPSBmdW5jdGlvbiBtaWRPZlRocmVlKGEsIGIsIGMpIHtcbiAgaWYgKGIgPD0gYSAmJiBhIDw9IGMgfHwgYyA8PSBhICYmIGEgPD0gYikge1xuICAgIHJldHVybiBhO1xuICB9IGVsc2UgaWYgKGEgPD0gYiAmJiBiIDw9IGMgfHwgYyA8PSBiICYmIGIgPD0gYSkge1xuICAgIHJldHVybiBiO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjO1xuICB9XG59OyAvLyAoeDEseTEpPT4oeDIseTIpIGludGVyc2VjdCB3aXRoICh4Myx5Myk9Pih4NCx5NClcblxudmFyIGZpbml0ZUxpbmVzSW50ZXJzZWN0ID0gZnVuY3Rpb24gZmluaXRlTGluZXNJbnRlcnNlY3QoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCBpbmZpbml0ZUxpbmVzKSB7XG4gIHZhciBkeDEzID0geDEgLSB4MztcbiAgdmFyIGR4MjEgPSB4MiAtIHgxO1xuICB2YXIgZHg0MyA9IHg0IC0geDM7XG4gIHZhciBkeTEzID0geTEgLSB5MztcbiAgdmFyIGR5MjEgPSB5MiAtIHkxO1xuICB2YXIgZHk0MyA9IHk0IC0geTM7XG4gIHZhciB1YV90ID0gZHg0MyAqIGR5MTMgLSBkeTQzICogZHgxMztcbiAgdmFyIHViX3QgPSBkeDIxICogZHkxMyAtIGR5MjEgKiBkeDEzO1xuICB2YXIgdV9iID0gZHk0MyAqIGR4MjEgLSBkeDQzICogZHkyMTtcblxuICBpZiAodV9iICE9PSAwKSB7XG4gICAgdmFyIHVhID0gdWFfdCAvIHVfYjtcbiAgICB2YXIgdWIgPSB1Yl90IC8gdV9iO1xuICAgIHZhciBmbHB0VGhyZXNob2xkID0gMC4wMDE7XG5cbiAgICB2YXIgX21pbiA9IDAgLSBmbHB0VGhyZXNob2xkO1xuXG4gICAgdmFyIF9tYXggPSAxICsgZmxwdFRocmVzaG9sZDtcblxuICAgIGlmIChfbWluIDw9IHVhICYmIHVhIDw9IF9tYXggJiYgX21pbiA8PSB1YiAmJiB1YiA8PSBfbWF4KSB7XG4gICAgICByZXR1cm4gW3gxICsgdWEgKiBkeDIxLCB5MSArIHVhICogZHkyMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghaW5maW5pdGVMaW5lcykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW3gxICsgdWEgKiBkeDIxLCB5MSArIHVhICogZHkyMV07XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh1YV90ID09PSAwIHx8IHViX3QgPT09IDApIHtcbiAgICAgIC8vIFBhcmFsbGVsLCBjb2luY2lkZW50IGxpbmVzLiBDaGVjayBpZiBvdmVybGFwXG4gICAgICAvLyBDaGVjayBlbmRwb2ludCBvZiBzZWNvbmQgbGluZVxuICAgICAgaWYgKG1pZE9mVGhyZWUoeDEsIHgyLCB4NCkgPT09IHg0KSB7XG4gICAgICAgIHJldHVybiBbeDQsIHk0XTtcbiAgICAgIH0gLy8gQ2hlY2sgc3RhcnQgcG9pbnQgb2Ygc2Vjb25kIGxpbmVcblxuXG4gICAgICBpZiAobWlkT2ZUaHJlZSh4MSwgeDIsIHgzKSA9PT0geDMpIHtcbiAgICAgICAgcmV0dXJuIFt4MywgeTNdO1xuICAgICAgfSAvLyBFbmRwb2ludCBvZiBmaXJzdCBsaW5lXG5cblxuICAgICAgaWYgKG1pZE9mVGhyZWUoeDMsIHg0LCB4MikgPT09IHgyKSB7XG4gICAgICAgIHJldHVybiBbeDIsIHkyXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQYXJhbGxlbCwgbm9uLWNvaW5jaWRlbnRcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07IC8vIG1hdGgucG9seWdvbkludGVyc2VjdExpbmUoIHgsIHksIGJhc2VQb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHBhZGRpbmcgKVxuLy8gaW50ZXJzZWN0IGEgbm9kZSBwb2x5Z29uIChwdHMgdHJhbnNmb3JtZWQpXG4vL1xuLy8gbWF0aC5wb2x5Z29uSW50ZXJzZWN0TGluZSggeCwgeSwgYmFzZVBvaW50cywgY2VudGVyWCwgY2VudGVyWSApXG4vLyBpbnRlcnNlY3QgdGhlIHBvaW50cyAobm8gdHJhbnNmb3JtKVxuXG52YXIgcG9seWdvbkludGVyc2VjdExpbmUgPSBmdW5jdGlvbiBwb2x5Z29uSW50ZXJzZWN0TGluZSh4LCB5LCBiYXNlUG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0LCBwYWRkaW5nKSB7XG4gIHZhciBpbnRlcnNlY3Rpb25zID0gW107XG4gIHZhciBpbnRlcnNlY3Rpb247XG4gIHZhciB0cmFuc2Zvcm1lZFBvaW50cyA9IG5ldyBBcnJheShiYXNlUG9pbnRzLmxlbmd0aCk7XG4gIHZhciBkb1RyYW5zZm9ybSA9IHRydWU7XG5cbiAgaWYgKHdpZHRoID09IG51bGwpIHtcbiAgICBkb1RyYW5zZm9ybSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIHBvaW50cztcblxuICBpZiAoZG9UcmFuc2Zvcm0pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyYW5zZm9ybWVkUG9pbnRzLmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgdHJhbnNmb3JtZWRQb2ludHNbaSAqIDJdID0gYmFzZVBvaW50c1tpICogMl0gKiB3aWR0aCArIGNlbnRlclg7XG4gICAgICB0cmFuc2Zvcm1lZFBvaW50c1tpICogMiArIDFdID0gYmFzZVBvaW50c1tpICogMiArIDFdICogaGVpZ2h0ICsgY2VudGVyWTtcbiAgICB9XG5cbiAgICBpZiAocGFkZGluZyA+IDApIHtcbiAgICAgIHZhciBleHBhbmRlZExpbmVTZXQgPSBleHBhbmRQb2x5Z29uKHRyYW5zZm9ybWVkUG9pbnRzLCAtcGFkZGluZyk7XG4gICAgICBwb2ludHMgPSBqb2luTGluZXMoZXhwYW5kZWRMaW5lU2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcG9pbnRzID0gdHJhbnNmb3JtZWRQb2ludHM7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHBvaW50cyA9IGJhc2VQb2ludHM7XG4gIH1cblxuICB2YXIgY3VycmVudFgsIGN1cnJlbnRZLCBuZXh0WCwgbmV4dFk7XG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgcG9pbnRzLmxlbmd0aCAvIDI7IF9pMisrKSB7XG4gICAgY3VycmVudFggPSBwb2ludHNbX2kyICogMl07XG4gICAgY3VycmVudFkgPSBwb2ludHNbX2kyICogMiArIDFdO1xuXG4gICAgaWYgKF9pMiA8IHBvaW50cy5sZW5ndGggLyAyIC0gMSkge1xuICAgICAgbmV4dFggPSBwb2ludHNbKF9pMiArIDEpICogMl07XG4gICAgICBuZXh0WSA9IHBvaW50c1soX2kyICsgMSkgKiAyICsgMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHRYID0gcG9pbnRzWzBdO1xuICAgICAgbmV4dFkgPSBwb2ludHNbMV07XG4gICAgfVxuXG4gICAgaW50ZXJzZWN0aW9uID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgY2VudGVyWCwgY2VudGVyWSwgY3VycmVudFgsIGN1cnJlbnRZLCBuZXh0WCwgbmV4dFkpO1xuXG4gICAgaWYgKGludGVyc2VjdGlvbi5sZW5ndGggIT09IDApIHtcbiAgICAgIGludGVyc2VjdGlvbnMucHVzaChpbnRlcnNlY3Rpb25bMF0sIGludGVyc2VjdGlvblsxXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGludGVyc2VjdGlvbnM7XG59O1xudmFyIHJvdW5kUG9seWdvbkludGVyc2VjdExpbmUgPSBmdW5jdGlvbiByb3VuZFBvbHlnb25JbnRlcnNlY3RMaW5lKHgsIHksIGJhc2VQb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHBhZGRpbmcpIHtcbiAgdmFyIGludGVyc2VjdGlvbnMgPSBbXTtcbiAgdmFyIGludGVyc2VjdGlvbjtcbiAgdmFyIGxpbmVzID0gbmV3IEFycmF5KGJhc2VQb2ludHMubGVuZ3RoKTtcbiAgdmFyIGhhbGZXID0gd2lkdGggLyAyO1xuICB2YXIgaGFsZkggPSBoZWlnaHQgLyAyO1xuICB2YXIgY29ybmVyUmFkaXVzID0gZ2V0Um91bmRQb2x5Z29uUmFkaXVzKHdpZHRoLCBoZWlnaHQpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmFzZVBvaW50cy5sZW5ndGggLyA0OyBpKyspIHtcbiAgICB2YXIgc291cmNlVXYgPSB2b2lkIDAsXG4gICAgICAgIGRlc3RVdiA9IHZvaWQgMDtcblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBzb3VyY2VVdiA9IGJhc2VQb2ludHMubGVuZ3RoIC0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgc291cmNlVXYgPSBpICogNCAtIDI7XG4gICAgfVxuXG4gICAgZGVzdFV2ID0gaSAqIDQgKyAyO1xuICAgIHZhciBweCA9IGNlbnRlclggKyBoYWxmVyAqIGJhc2VQb2ludHNbaSAqIDRdO1xuICAgIHZhciBweSA9IGNlbnRlclkgKyBoYWxmSCAqIGJhc2VQb2ludHNbaSAqIDQgKyAxXTtcbiAgICB2YXIgY29zVGhldGEgPSAtYmFzZVBvaW50c1tzb3VyY2VVdl0gKiBiYXNlUG9pbnRzW2Rlc3RVdl0gLSBiYXNlUG9pbnRzW3NvdXJjZVV2ICsgMV0gKiBiYXNlUG9pbnRzW2Rlc3RVdiArIDFdO1xuICAgIHZhciBvZmZzZXQgPSBjb3JuZXJSYWRpdXMgLyBNYXRoLnRhbihNYXRoLmFjb3MoY29zVGhldGEpIC8gMik7XG4gICAgdmFyIGNwMHggPSBweCAtIG9mZnNldCAqIGJhc2VQb2ludHNbc291cmNlVXZdO1xuICAgIHZhciBjcDB5ID0gcHkgLSBvZmZzZXQgKiBiYXNlUG9pbnRzW3NvdXJjZVV2ICsgMV07XG4gICAgdmFyIGNwMXggPSBweCArIG9mZnNldCAqIGJhc2VQb2ludHNbZGVzdFV2XTtcbiAgICB2YXIgY3AxeSA9IHB5ICsgb2Zmc2V0ICogYmFzZVBvaW50c1tkZXN0VXYgKyAxXTtcblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBsaW5lc1tiYXNlUG9pbnRzLmxlbmd0aCAtIDJdID0gY3AweDtcbiAgICAgIGxpbmVzW2Jhc2VQb2ludHMubGVuZ3RoIC0gMV0gPSBjcDB5O1xuICAgIH0gZWxzZSB7XG4gICAgICBsaW5lc1tpICogNCAtIDJdID0gY3AweDtcbiAgICAgIGxpbmVzW2kgKiA0IC0gMV0gPSBjcDB5O1xuICAgIH1cblxuICAgIGxpbmVzW2kgKiA0XSA9IGNwMXg7XG4gICAgbGluZXNbaSAqIDQgKyAxXSA9IGNwMXk7XG4gICAgdmFyIG9ydGh4ID0gYmFzZVBvaW50c1tzb3VyY2VVdiArIDFdO1xuICAgIHZhciBvcnRoeSA9IC1iYXNlUG9pbnRzW3NvdXJjZVV2XTtcbiAgICB2YXIgY29zQWxwaGEgPSBvcnRoeCAqIGJhc2VQb2ludHNbZGVzdFV2XSArIG9ydGh5ICogYmFzZVBvaW50c1tkZXN0VXYgKyAxXTtcblxuICAgIGlmIChjb3NBbHBoYSA8IDApIHtcbiAgICAgIG9ydGh4ICo9IC0xO1xuICAgICAgb3J0aHkgKj0gLTE7XG4gICAgfVxuXG4gICAgdmFyIGN4ID0gY3AweCArIG9ydGh4ICogY29ybmVyUmFkaXVzO1xuICAgIHZhciBjeSA9IGNwMHkgKyBvcnRoeSAqIGNvcm5lclJhZGl1cztcbiAgICBpbnRlcnNlY3Rpb24gPSBpbnRlcnNlY3RMaW5lQ2lyY2xlKHgsIHksIGNlbnRlclgsIGNlbnRlclksIGN4LCBjeSwgY29ybmVyUmFkaXVzKTtcblxuICAgIGlmIChpbnRlcnNlY3Rpb24ubGVuZ3RoICE9PSAwKSB7XG4gICAgICBpbnRlcnNlY3Rpb25zLnB1c2goaW50ZXJzZWN0aW9uWzBdLCBpbnRlcnNlY3Rpb25bMV0pO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGxpbmVzLmxlbmd0aCAvIDQ7IF9pMysrKSB7XG4gICAgaW50ZXJzZWN0aW9uID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgY2VudGVyWCwgY2VudGVyWSwgbGluZXNbX2kzICogNF0sIGxpbmVzW19pMyAqIDQgKyAxXSwgbGluZXNbX2kzICogNCArIDJdLCBsaW5lc1tfaTMgKiA0ICsgM10sIGZhbHNlKTtcblxuICAgIGlmIChpbnRlcnNlY3Rpb24ubGVuZ3RoICE9PSAwKSB7XG4gICAgICBpbnRlcnNlY3Rpb25zLnB1c2goaW50ZXJzZWN0aW9uWzBdLCBpbnRlcnNlY3Rpb25bMV0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDIpIHtcbiAgICB2YXIgbG93ZXN0SW50ZXJzZWN0aW9uID0gW2ludGVyc2VjdGlvbnNbMF0sIGludGVyc2VjdGlvbnNbMV1dO1xuICAgIHZhciBsb3dlc3RTcXVhcmVkRGlzdGFuY2UgPSBNYXRoLnBvdyhsb3dlc3RJbnRlcnNlY3Rpb25bMF0gLSB4LCAyKSArIE1hdGgucG93KGxvd2VzdEludGVyc2VjdGlvblsxXSAtIHksIDIpO1xuXG4gICAgZm9yICh2YXIgX2k0ID0gMTsgX2k0IDwgaW50ZXJzZWN0aW9ucy5sZW5ndGggLyAyOyBfaTQrKykge1xuICAgICAgdmFyIHNxdWFyZWREaXN0YW5jZSA9IE1hdGgucG93KGludGVyc2VjdGlvbnNbX2k0ICogMl0gLSB4LCAyKSArIE1hdGgucG93KGludGVyc2VjdGlvbnNbX2k0ICogMiArIDFdIC0geSwgMik7XG5cbiAgICAgIGlmIChzcXVhcmVkRGlzdGFuY2UgPD0gbG93ZXN0U3F1YXJlZERpc3RhbmNlKSB7XG4gICAgICAgIGxvd2VzdEludGVyc2VjdGlvblswXSA9IGludGVyc2VjdGlvbnNbX2k0ICogMl07XG4gICAgICAgIGxvd2VzdEludGVyc2VjdGlvblsxXSA9IGludGVyc2VjdGlvbnNbX2k0ICogMiArIDFdO1xuICAgICAgICBsb3dlc3RTcXVhcmVkRGlzdGFuY2UgPSBzcXVhcmVkRGlzdGFuY2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvd2VzdEludGVyc2VjdGlvbjtcbiAgfVxuXG4gIHJldHVybiBpbnRlcnNlY3Rpb25zO1xufTtcbnZhciBzaG9ydGVuSW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gc2hvcnRlbkludGVyc2VjdGlvbihpbnRlcnNlY3Rpb24sIG9mZnNldCwgYW1vdW50KSB7XG4gIHZhciBkaXNwID0gW2ludGVyc2VjdGlvblswXSAtIG9mZnNldFswXSwgaW50ZXJzZWN0aW9uWzFdIC0gb2Zmc2V0WzFdXTtcbiAgdmFyIGxlbmd0aCA9IE1hdGguc3FydChkaXNwWzBdICogZGlzcFswXSArIGRpc3BbMV0gKiBkaXNwWzFdKTtcbiAgdmFyIGxlblJhdGlvID0gKGxlbmd0aCAtIGFtb3VudCkgLyBsZW5ndGg7XG5cbiAgaWYgKGxlblJhdGlvIDwgMCkge1xuICAgIGxlblJhdGlvID0gMC4wMDAwMTtcbiAgfVxuXG4gIHJldHVybiBbb2Zmc2V0WzBdICsgbGVuUmF0aW8gKiBkaXNwWzBdLCBvZmZzZXRbMV0gKyBsZW5SYXRpbyAqIGRpc3BbMV1dO1xufTtcbnZhciBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUgPSBmdW5jdGlvbiBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoc2lkZXMsIHJvdGF0aW9uUmFkaWFucykge1xuICB2YXIgcG9pbnRzID0gZ2VuZXJhdGVVbml0TmdvblBvaW50cyhzaWRlcywgcm90YXRpb25SYWRpYW5zKTtcbiAgcG9pbnRzID0gZml0UG9seWdvblRvU3F1YXJlKHBvaW50cyk7XG4gIHJldHVybiBwb2ludHM7XG59O1xudmFyIGZpdFBvbHlnb25Ub1NxdWFyZSA9IGZ1bmN0aW9uIGZpdFBvbHlnb25Ub1NxdWFyZShwb2ludHMpIHtcbiAgdmFyIHgsIHk7XG4gIHZhciBzaWRlcyA9IHBvaW50cy5sZW5ndGggLyAyO1xuICB2YXIgbWluWCA9IEluZmluaXR5LFxuICAgICAgbWluWSA9IEluZmluaXR5LFxuICAgICAgbWF4WCA9IC1JbmZpbml0eSxcbiAgICAgIG1heFkgPSAtSW5maW5pdHk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWRlczsgaSsrKSB7XG4gICAgeCA9IHBvaW50c1syICogaV07XG4gICAgeSA9IHBvaW50c1syICogaSArIDFdO1xuICAgIG1pblggPSBNYXRoLm1pbihtaW5YLCB4KTtcbiAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgeCk7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIHkpO1xuICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCB5KTtcbiAgfSAvLyBzdHJldGNoIGZhY3RvcnNcblxuXG4gIHZhciBzeCA9IDIgLyAobWF4WCAtIG1pblgpO1xuICB2YXIgc3kgPSAyIC8gKG1heFkgLSBtaW5ZKTtcblxuICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBzaWRlczsgX2k1KyspIHtcbiAgICB4ID0gcG9pbnRzWzIgKiBfaTVdID0gcG9pbnRzWzIgKiBfaTVdICogc3g7XG4gICAgeSA9IHBvaW50c1syICogX2k1ICsgMV0gPSBwb2ludHNbMiAqIF9pNSArIDFdICogc3k7XG4gICAgbWluWCA9IE1hdGgubWluKG1pblgsIHgpO1xuICAgIG1heFggPSBNYXRoLm1heChtYXhYLCB4KTtcbiAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgeSk7XG4gICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHkpO1xuICB9XG5cbiAgaWYgKG1pblkgPCAtMSkge1xuICAgIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IHNpZGVzOyBfaTYrKykge1xuICAgICAgeSA9IHBvaW50c1syICogX2k2ICsgMV0gPSBwb2ludHNbMiAqIF9pNiArIDFdICsgKC0xIC0gbWluWSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBvaW50cztcbn07XG52YXIgZ2VuZXJhdGVVbml0TmdvblBvaW50cyA9IGZ1bmN0aW9uIGdlbmVyYXRlVW5pdE5nb25Qb2ludHMoc2lkZXMsIHJvdGF0aW9uUmFkaWFucykge1xuICB2YXIgaW5jcmVtZW50ID0gMS4wIC8gc2lkZXMgKiAyICogTWF0aC5QSTtcbiAgdmFyIHN0YXJ0QW5nbGUgPSBzaWRlcyAlIDIgPT09IDAgPyBNYXRoLlBJIC8gMi4wICsgaW5jcmVtZW50IC8gMi4wIDogTWF0aC5QSSAvIDIuMDtcbiAgc3RhcnRBbmdsZSArPSByb3RhdGlvblJhZGlhbnM7XG4gIHZhciBwb2ludHMgPSBuZXcgQXJyYXkoc2lkZXMgKiAyKTtcbiAgdmFyIGN1cnJlbnRBbmdsZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZGVzOyBpKyspIHtcbiAgICBjdXJyZW50QW5nbGUgPSBpICogaW5jcmVtZW50ICsgc3RhcnRBbmdsZTtcbiAgICBwb2ludHNbMiAqIGldID0gTWF0aC5jb3MoY3VycmVudEFuZ2xlKTsgLy8geFxuXG4gICAgcG9pbnRzWzIgKiBpICsgMV0gPSBNYXRoLnNpbigtY3VycmVudEFuZ2xlKTsgLy8geVxuICB9XG5cbiAgcmV0dXJuIHBvaW50cztcbn07IC8vIFNldCB0aGUgZGVmYXVsdCByYWRpdXMsIHVubGVzcyBoYWxmIG9mIHdpZHRoIG9yIGhlaWdodCBpcyBzbWFsbGVyIHRoYW4gZGVmYXVsdFxuXG52YXIgZ2V0Um91bmRSZWN0YW5nbGVSYWRpdXMgPSBmdW5jdGlvbiBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KSB7XG4gIHJldHVybiBNYXRoLm1pbih3aWR0aCAvIDQsIGhlaWdodCAvIDQsIDgpO1xufTsgLy8gU2V0IHRoZSBkZWZhdWx0IHJhZGl1c1xuXG52YXIgZ2V0Um91bmRQb2x5Z29uUmFkaXVzID0gZnVuY3Rpb24gZ2V0Um91bmRQb2x5Z29uUmFkaXVzKHdpZHRoLCBoZWlnaHQpIHtcbiAgcmV0dXJuIE1hdGgubWluKHdpZHRoIC8gMTAsIGhlaWdodCAvIDEwLCA4KTtcbn07XG52YXIgZ2V0Q3V0UmVjdGFuZ2xlQ29ybmVyTGVuZ3RoID0gZnVuY3Rpb24gZ2V0Q3V0UmVjdGFuZ2xlQ29ybmVyTGVuZ3RoKCkge1xuICByZXR1cm4gODtcbn07XG52YXIgYmV6aWVyUHRzVG9RdWFkQ29lZmYgPSBmdW5jdGlvbiBiZXppZXJQdHNUb1F1YWRDb2VmZihwMCwgcDEsIHAyKSB7XG4gIHJldHVybiBbcDAgLSAyICogcDEgKyBwMiwgMiAqIChwMSAtIHAwKSwgcDBdO1xufTsgLy8gZ2V0IGN1cnZlIHdpZHRoLCBoZWlnaHQsIGFuZCBjb250cm9sIHBvaW50IHBvc2l0aW9uIG9mZnNldHMgYXMgYSBwZXJjZW50YWdlIG9mIG5vZGUgaGVpZ2h0IC8gd2lkdGhcblxudmFyIGdldEJhcnJlbEN1cnZlQ29uc3RhbnRzID0gZnVuY3Rpb24gZ2V0QmFycmVsQ3VydmVDb25zdGFudHMod2lkdGgsIGhlaWdodCkge1xuICByZXR1cm4ge1xuICAgIGhlaWdodE9mZnNldDogTWF0aC5taW4oMTUsIDAuMDUgKiBoZWlnaHQpLFxuICAgIHdpZHRoT2Zmc2V0OiBNYXRoLm1pbigxMDAsIDAuMjUgKiB3aWR0aCksXG4gICAgY3RybFB0T2Zmc2V0UGN0OiAwLjA1XG4gIH07XG59O1xuXG52YXIgcGFnZVJhbmtEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgZGFtcGluZ0ZhY3RvcjogMC44LFxuICBwcmVjaXNpb246IDAuMDAwMDAxLFxuICBpdGVyYXRpb25zOiAyMDAsXG4gIHdlaWdodDogZnVuY3Rpb24gd2VpZ2h0KGVkZ2UpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxufSk7XG52YXIgZWxlc2ZuJDcgPSB7XG4gIHBhZ2VSYW5rOiBmdW5jdGlvbiBwYWdlUmFuayhvcHRpb25zKSB7XG4gICAgdmFyIF9wYWdlUmFua0RlZmF1bHRzID0gcGFnZVJhbmtEZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgZGFtcGluZ0ZhY3RvciA9IF9wYWdlUmFua0RlZmF1bHRzLmRhbXBpbmdGYWN0b3IsXG4gICAgICAgIHByZWNpc2lvbiA9IF9wYWdlUmFua0RlZmF1bHRzLnByZWNpc2lvbixcbiAgICAgICAgaXRlcmF0aW9ucyA9IF9wYWdlUmFua0RlZmF1bHRzLml0ZXJhdGlvbnMsXG4gICAgICAgIHdlaWdodCA9IF9wYWdlUmFua0RlZmF1bHRzLndlaWdodDtcblxuICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG5cbiAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlcztcblxuICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcbiAgICB2YXIgbnVtTm9kZXNTcWQgPSBudW1Ob2RlcyAqIG51bU5vZGVzO1xuICAgIHZhciBudW1FZGdlcyA9IGVkZ2VzLmxlbmd0aDsgLy8gQ29uc3RydWN0IHRyYW5zcG9zZWQgYWRqYWNlbmN5IG1hdHJpeFxuICAgIC8vIEZpcnN0IGxldHMgaGF2ZSBhIHplcm9lZCBtYXRyaXggb2YgdGhlIHJpZ2h0IHNpemVcbiAgICAvLyBXZSdsbCBhbHNvIGtlZXAgdHJhY2sgb2YgdGhlIHN1bSBvZiBlYWNoIGNvbHVtblxuXG4gICAgdmFyIG1hdHJpeCA9IG5ldyBBcnJheShudW1Ob2Rlc1NxZCk7XG4gICAgdmFyIGNvbHVtblN1bSA9IG5ldyBBcnJheShudW1Ob2Rlcyk7XG4gICAgdmFyIGFkZGl0aW9uYWxQcm9iID0gKDEgLSBkYW1waW5nRmFjdG9yKSAvIG51bU5vZGVzOyAvLyBDcmVhdGUgbnVsbCBtYXRyaXhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTm9kZXM7IGkrKykge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1Ob2RlczsgaisrKSB7XG4gICAgICAgIHZhciBuID0gaSAqIG51bU5vZGVzICsgajtcbiAgICAgICAgbWF0cml4W25dID0gMDtcbiAgICAgIH1cblxuICAgICAgY29sdW1uU3VtW2ldID0gMDtcbiAgICB9IC8vIE5vdywgcHJvY2VzcyBlZGdlc1xuXG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbnVtRWRnZXM7IF9pKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbX2ldO1xuICAgICAgdmFyIHNyY0lkID0gZWRnZS5kYXRhKCdzb3VyY2UnKTtcbiAgICAgIHZhciB0Z3RJZCA9IGVkZ2UuZGF0YSgndGFyZ2V0Jyk7IC8vIERvbid0IGluY2x1ZGUgbG9vcHMgaW4gdGhlIG1hdHJpeFxuXG4gICAgICBpZiAoc3JjSWQgPT09IHRndElkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcyA9IG5vZGVzLmluZGV4T2ZJZChzcmNJZCk7XG4gICAgICB2YXIgdCA9IG5vZGVzLmluZGV4T2ZJZCh0Z3RJZCk7XG4gICAgICB2YXIgdyA9IHdlaWdodChlZGdlKTtcblxuICAgICAgdmFyIF9uID0gdCAqIG51bU5vZGVzICsgczsgLy8gVXBkYXRlIG1hdHJpeFxuXG5cbiAgICAgIG1hdHJpeFtfbl0gKz0gdzsgLy8gVXBkYXRlIGNvbHVtbiBzdW1cblxuICAgICAgY29sdW1uU3VtW3NdICs9IHc7XG4gICAgfSAvLyBBZGQgYWRkaXRpb25hbCBwcm9iYWJpbGl0eSBiYXNlZCBvbiBkYW1waW5nIGZhY3RvclxuICAgIC8vIEFsc28sIHRha2UgaW50byBhY2NvdW50IGNvbHVtbnMgdGhhdCBoYXZlIHN1bSA9IDBcblxuXG4gICAgdmFyIHAgPSAxLjAgLyBudW1Ob2RlcyArIGFkZGl0aW9uYWxQcm9iOyAvLyBTaG9ydGhhbmRcbiAgICAvLyBUcmF2ZXJzZSBtYXRyaXgsIGNvbHVtbiBieSBjb2x1bW5cblxuICAgIGZvciAodmFyIF9qID0gMDsgX2ogPCBudW1Ob2RlczsgX2orKykge1xuICAgICAgaWYgKGNvbHVtblN1bVtfal0gPT09IDApIHtcbiAgICAgICAgLy8gTm8gJ2xpbmtzJyBvdXQgZnJvbSBub2RlIGp0aCwgYXNzdW1lIGVxdWFsIHByb2JhYmlsaXR5IGZvciBlYWNoIHBvc3NpYmxlIG5vZGVcbiAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbnVtTm9kZXM7IF9pMisrKSB7XG4gICAgICAgICAgdmFyIF9uMiA9IF9pMiAqIG51bU5vZGVzICsgX2o7XG5cbiAgICAgICAgICBtYXRyaXhbX24yXSA9IHA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vZGUganRoIGhhcyBvdXRnb2luZyBsaW5rLCBjb21wdXRlIG5vcm1hbGl6ZWQgcHJvYmFiaWxpdGllc1xuICAgICAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBudW1Ob2RlczsgX2kzKyspIHtcbiAgICAgICAgICB2YXIgX24zID0gX2kzICogbnVtTm9kZXMgKyBfajtcblxuICAgICAgICAgIG1hdHJpeFtfbjNdID0gbWF0cml4W19uM10gLyBjb2x1bW5TdW1bX2pdICsgYWRkaXRpb25hbFByb2I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIENvbXB1dGUgZG9taW5hbnQgZWlnZW52ZWN0b3IgdXNpbmcgcG93ZXIgbWV0aG9kXG5cblxuICAgIHZhciBlaWdlbnZlY3RvciA9IG5ldyBBcnJheShudW1Ob2Rlcyk7XG4gICAgdmFyIHRlbXAgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuICAgIHZhciBwcmV2aW91czsgLy8gU3RhcnQgd2l0aCBhIHZlY3RvciBvZiBhbGwgMSdzXG4gICAgLy8gQWxzbywgaW5pdGlhbGl6ZSBhIG51bGwgdmVjdG9yIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyBzaG9ydGhhbmRcblxuICAgIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG51bU5vZGVzOyBfaTQrKykge1xuICAgICAgZWlnZW52ZWN0b3JbX2k0XSA9IDE7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaXRlciA9IDA7IGl0ZXIgPCBpdGVyYXRpb25zOyBpdGVyKyspIHtcbiAgICAgIC8vIFRlbXAgYXJyYXkgd2l0aCBhbGwgMCdzXG4gICAgICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBudW1Ob2RlczsgX2k1KyspIHtcbiAgICAgICAgdGVtcFtfaTVdID0gMDtcbiAgICAgIH0gLy8gTXVsdGlwbHkgbWF0cml4IHdpdGggcHJldmlvdXMgcmVzdWx0XG5cblxuICAgICAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgbnVtTm9kZXM7IF9pNisrKSB7XG4gICAgICAgIGZvciAodmFyIF9qMiA9IDA7IF9qMiA8IG51bU5vZGVzOyBfajIrKykge1xuICAgICAgICAgIHZhciBfbjQgPSBfaTYgKiBudW1Ob2RlcyArIF9qMjtcblxuICAgICAgICAgIHRlbXBbX2k2XSArPSBtYXRyaXhbX240XSAqIGVpZ2VudmVjdG9yW19qMl07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5QbGFjZVN1bU5vcm1hbGl6ZSh0ZW1wKTtcbiAgICAgIHByZXZpb3VzID0gZWlnZW52ZWN0b3I7XG4gICAgICBlaWdlbnZlY3RvciA9IHRlbXA7XG4gICAgICB0ZW1wID0gcHJldmlvdXM7XG4gICAgICB2YXIgZGlmZiA9IDA7IC8vIENvbXB1dGUgZGlmZmVyZW5jZSAoc3F1YXJlZCBtb2R1bGUpIG9mIGJvdGggdmVjdG9yc1xuXG4gICAgICBmb3IgKHZhciBfaTcgPSAwOyBfaTcgPCBudW1Ob2RlczsgX2k3KyspIHtcbiAgICAgICAgdmFyIGRlbHRhID0gcHJldmlvdXNbX2k3XSAtIGVpZ2VudmVjdG9yW19pN107XG4gICAgICAgIGRpZmYgKz0gZGVsdGEgKiBkZWx0YTtcbiAgICAgIH0gLy8gSWYgZGlmZmVyZW5jZSBpcyBsZXNzIHRoYW4gdGhlIGRlc2lyZWQgdGhyZXNob2xkLCBzdG9wIGl0ZXJhdGluZ1xuXG5cbiAgICAgIGlmIChkaWZmIDwgcHJlY2lzaW9uKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gLy8gQ29uc3RydWN0IHJlc3VsdFxuXG5cbiAgICB2YXIgcmVzID0ge1xuICAgICAgcmFuazogZnVuY3Rpb24gcmFuayhub2RlKSB7XG4gICAgICAgIG5vZGUgPSBjeS5jb2xsZWN0aW9uKG5vZGUpWzBdO1xuICAgICAgICByZXR1cm4gZWlnZW52ZWN0b3Jbbm9kZXMuaW5kZXhPZihub2RlKV07XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gcmVzO1xuICB9IC8vIHBhZ2VSYW5rXG5cbn07IC8vIGVsZXNmblxuXG52YXIgZGVmYXVsdHMkMSA9IGRlZmF1bHRzKHtcbiAgcm9vdDogbnVsbCxcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBkaXJlY3RlZDogZmFsc2UsXG4gIGFscGhhOiAwXG59KTtcbnZhciBlbGVzZm4kOCA9IHtcbiAgZGVncmVlQ2VudHJhbGl0eU5vcm1hbGl6ZWQ6IGZ1bmN0aW9uIGRlZ3JlZUNlbnRyYWxpdHlOb3JtYWxpemVkKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gZGVmYXVsdHMkMShvcHRpb25zKTtcbiAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcblxuICAgIGlmICghb3B0aW9ucy5kaXJlY3RlZCkge1xuICAgICAgdmFyIGRlZ3JlZXMgPSB7fTtcbiAgICAgIHZhciBtYXhEZWdyZWUgPSAwO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bU5vZGVzOyBpKyspIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTsgLy8gYWRkIGN1cnJlbnQgbm9kZSB0byB0aGUgY3VycmVudCBvcHRpb25zIG9iamVjdCBhbmQgY2FsbCBkZWdyZWVDZW50cmFsaXR5XG5cbiAgICAgICAgb3B0aW9ucy5yb290ID0gbm9kZTtcbiAgICAgICAgdmFyIGN1cnJEZWdyZWUgPSB0aGlzLmRlZ3JlZUNlbnRyYWxpdHkob3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKG1heERlZ3JlZSA8IGN1cnJEZWdyZWUuZGVncmVlKSB7XG4gICAgICAgICAgbWF4RGVncmVlID0gY3VyckRlZ3JlZS5kZWdyZWU7XG4gICAgICAgIH1cblxuICAgICAgICBkZWdyZWVzW25vZGUuaWQoKV0gPSBjdXJyRGVncmVlLmRlZ3JlZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVncmVlOiBmdW5jdGlvbiBkZWdyZWUobm9kZSkge1xuICAgICAgICAgIGlmIChtYXhEZWdyZWUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdHJpbmcobm9kZSkpIHtcbiAgICAgICAgICAgIC8vIGZyb20gaXMgYSBzZWxlY3RvciBzdHJpbmdcbiAgICAgICAgICAgIG5vZGUgPSBjeS5maWx0ZXIobm9kZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGRlZ3JlZXNbbm9kZS5pZCgpXSAvIG1heERlZ3JlZTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGluZGVncmVlcyA9IHt9O1xuICAgICAgdmFyIG91dGRlZ3JlZXMgPSB7fTtcbiAgICAgIHZhciBtYXhJbmRlZ3JlZSA9IDA7XG4gICAgICB2YXIgbWF4T3V0ZGVncmVlID0gMDtcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG51bU5vZGVzOyBfaSsrKSB7XG4gICAgICAgIHZhciBfbm9kZSA9IG5vZGVzW19pXTtcblxuICAgICAgICB2YXIgaWQgPSBfbm9kZS5pZCgpOyAvLyBhZGQgY3VycmVudCBub2RlIHRvIHRoZSBjdXJyZW50IG9wdGlvbnMgb2JqZWN0IGFuZCBjYWxsIGRlZ3JlZUNlbnRyYWxpdHlcblxuXG4gICAgICAgIG9wdGlvbnMucm9vdCA9IF9ub2RlO1xuXG4gICAgICAgIHZhciBfY3VyckRlZ3JlZSA9IHRoaXMuZGVncmVlQ2VudHJhbGl0eShvcHRpb25zKTtcblxuICAgICAgICBpZiAobWF4SW5kZWdyZWUgPCBfY3VyckRlZ3JlZS5pbmRlZ3JlZSkgbWF4SW5kZWdyZWUgPSBfY3VyckRlZ3JlZS5pbmRlZ3JlZTtcbiAgICAgICAgaWYgKG1heE91dGRlZ3JlZSA8IF9jdXJyRGVncmVlLm91dGRlZ3JlZSkgbWF4T3V0ZGVncmVlID0gX2N1cnJEZWdyZWUub3V0ZGVncmVlO1xuICAgICAgICBpbmRlZ3JlZXNbaWRdID0gX2N1cnJEZWdyZWUuaW5kZWdyZWU7XG4gICAgICAgIG91dGRlZ3JlZXNbaWRdID0gX2N1cnJEZWdyZWUub3V0ZGVncmVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbmRlZ3JlZTogZnVuY3Rpb24gaW5kZWdyZWUobm9kZSkge1xuICAgICAgICAgIGlmIChtYXhJbmRlZ3JlZSA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RyaW5nKG5vZGUpKSB7XG4gICAgICAgICAgICAvLyBmcm9tIGlzIGEgc2VsZWN0b3Igc3RyaW5nXG4gICAgICAgICAgICBub2RlID0gY3kuZmlsdGVyKG5vZGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBpbmRlZ3JlZXNbbm9kZS5pZCgpXSAvIG1heEluZGVncmVlO1xuICAgICAgICB9LFxuICAgICAgICBvdXRkZWdyZWU6IGZ1bmN0aW9uIG91dGRlZ3JlZShub2RlKSB7XG4gICAgICAgICAgaWYgKG1heE91dGRlZ3JlZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN0cmluZyhub2RlKSkge1xuICAgICAgICAgICAgLy8gZnJvbSBpcyBhIHNlbGVjdG9yIHN0cmluZ1xuICAgICAgICAgICAgbm9kZSA9IGN5LmZpbHRlcihub2RlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gb3V0ZGVncmVlc1tub2RlLmlkKCldIC8gbWF4T3V0ZGVncmVlO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgLy8gZGVncmVlQ2VudHJhbGl0eU5vcm1hbGl6ZWRcbiAgLy8gSW1wbGVtZW50ZWQgZnJvbSB0aGUgYWxnb3JpdGhtIGluIE9wc2FobCdzIHBhcGVyXG4gIC8vIFwiTm9kZSBjZW50cmFsaXR5IGluIHdlaWdodGVkIG5ldHdvcmtzOiBHZW5lcmFsaXppbmcgZGVncmVlIGFuZCBzaG9ydGVzdCBwYXRoc1wiXG4gIC8vIGNoZWNrIHRoZSBoZWFkaW5nIDIgXCJEZWdyZWVcIlxuICBkZWdyZWVDZW50cmFsaXR5OiBmdW5jdGlvbiBkZWdyZWVDZW50cmFsaXR5KG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gZGVmYXVsdHMkMShvcHRpb25zKTtcbiAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgdmFyIGNhbGxpbmdFbGVzID0gdGhpcztcbiAgICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgICByb290ID0gX29wdGlvbnMucm9vdCxcbiAgICAgICAgd2VpZ2h0ID0gX29wdGlvbnMud2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZCA9IF9vcHRpb25zLmRpcmVjdGVkLFxuICAgICAgICBhbHBoYSA9IF9vcHRpb25zLmFscGhhO1xuICAgIHJvb3QgPSBjeS5jb2xsZWN0aW9uKHJvb3QpWzBdO1xuXG4gICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgdmFyIGNvbm5FZGdlcyA9IHJvb3QuY29ubmVjdGVkRWRnZXMoKS5pbnRlcnNlY3Rpb24oY2FsbGluZ0VsZXMpO1xuICAgICAgdmFyIGsgPSBjb25uRWRnZXMubGVuZ3RoO1xuICAgICAgdmFyIHMgPSAwOyAvLyBOb3csIHN1bSBlZGdlIHdlaWdodHNcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25uRWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcyArPSB3ZWlnaHQoY29ubkVkZ2VzW2ldKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVncmVlOiBNYXRoLnBvdyhrLCAxIC0gYWxwaGEpICogTWF0aC5wb3cocywgYWxwaGEpXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZWRnZXMgPSByb290LmNvbm5lY3RlZEVkZ2VzKCk7XG4gICAgICB2YXIgaW5jb21pbmcgPSBlZGdlcy5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIGVkZ2UudGFyZ2V0KCkuc2FtZShyb290KSAmJiBjYWxsaW5nRWxlcy5oYXMoZWRnZSk7XG4gICAgICB9KTtcbiAgICAgIHZhciBvdXRnb2luZyA9IGVkZ2VzLmZpbHRlcihmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICByZXR1cm4gZWRnZS5zb3VyY2UoKS5zYW1lKHJvb3QpICYmIGNhbGxpbmdFbGVzLmhhcyhlZGdlKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIGtfaW4gPSBpbmNvbWluZy5sZW5ndGg7XG4gICAgICB2YXIga19vdXQgPSBvdXRnb2luZy5sZW5ndGg7XG4gICAgICB2YXIgc19pbiA9IDA7XG4gICAgICB2YXIgc19vdXQgPSAwOyAvLyBOb3csIHN1bSBpbmNvbWluZyBlZGdlIHdlaWdodHNcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgaW5jb21pbmcubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICBzX2luICs9IHdlaWdodChpbmNvbWluZ1tfaTJdKTtcbiAgICAgIH0gLy8gTm93LCBzdW0gb3V0Z29pbmcgZWRnZSB3ZWlnaHRzXG5cblxuICAgICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgb3V0Z29pbmcubGVuZ3RoOyBfaTMrKykge1xuICAgICAgICBzX291dCArPSB3ZWlnaHQob3V0Z29pbmdbX2kzXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGluZGVncmVlOiBNYXRoLnBvdyhrX2luLCAxIC0gYWxwaGEpICogTWF0aC5wb3coc19pbiwgYWxwaGEpLFxuICAgICAgICBvdXRkZWdyZWU6IE1hdGgucG93KGtfb3V0LCAxIC0gYWxwaGEpICogTWF0aC5wb3coc19vdXQsIGFscGhhKVxuICAgICAgfTtcbiAgICB9XG4gIH0gLy8gZGVncmVlQ2VudHJhbGl0eVxuXG59OyAvLyBlbGVzZm5cbi8vIG5pY2UsIHNob3J0IG1hdGhlbWF0aGljYWwgYWxpYXNcblxuZWxlc2ZuJDguZGMgPSBlbGVzZm4kOC5kZWdyZWVDZW50cmFsaXR5O1xuZWxlc2ZuJDguZGNuID0gZWxlc2ZuJDguZGVncmVlQ2VudHJhbGl0eU5vcm1hbGlzZWQgPSBlbGVzZm4kOC5kZWdyZWVDZW50cmFsaXR5Tm9ybWFsaXplZDtcblxudmFyIGRlZmF1bHRzJDIgPSBkZWZhdWx0cyh7XG4gIGhhcm1vbmljOiB0cnVlLFxuICB3ZWlnaHQ6IGZ1bmN0aW9uIHdlaWdodCgpIHtcbiAgICByZXR1cm4gMTtcbiAgfSxcbiAgZGlyZWN0ZWQ6IGZhbHNlLFxuICByb290OiBudWxsXG59KTtcbnZhciBlbGVzZm4kOSA9IHtcbiAgY2xvc2VuZXNzQ2VudHJhbGl0eU5vcm1hbGl6ZWQ6IGZ1bmN0aW9uIGNsb3NlbmVzc0NlbnRyYWxpdHlOb3JtYWxpemVkKG9wdGlvbnMpIHtcbiAgICB2YXIgX2RlZmF1bHRzID0gZGVmYXVsdHMkMihvcHRpb25zKSxcbiAgICAgICAgaGFybW9uaWMgPSBfZGVmYXVsdHMuaGFybW9uaWMsXG4gICAgICAgIHdlaWdodCA9IF9kZWZhdWx0cy53ZWlnaHQsXG4gICAgICAgIGRpcmVjdGVkID0gX2RlZmF1bHRzLmRpcmVjdGVkO1xuXG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHZhciBjbG9zZW5lc3NlcyA9IHt9O1xuICAgIHZhciBtYXhDbG9zZW5lc3MgPSAwO1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgICB2YXIgZncgPSB0aGlzLmZsb3lkV2Fyc2hhbGwoe1xuICAgICAgd2VpZ2h0OiB3ZWlnaHQsXG4gICAgICBkaXJlY3RlZDogZGlyZWN0ZWRcbiAgICB9KTsgLy8gQ29tcHV0ZSBjbG9zZW5lc3MgZm9yIGV2ZXJ5IG5vZGUgYW5kIGZpbmQgdGhlIG1heGltdW0gY2xvc2VuZXNzXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY3VyckNsb3NlbmVzcyA9IDA7XG4gICAgICB2YXIgbm9kZV9pID0gbm9kZXNbaV07XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbm9kZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKGkgIT09IGopIHtcbiAgICAgICAgICB2YXIgZCA9IGZ3LmRpc3RhbmNlKG5vZGVfaSwgbm9kZXNbal0pO1xuXG4gICAgICAgICAgaWYgKGhhcm1vbmljKSB7XG4gICAgICAgICAgICBjdXJyQ2xvc2VuZXNzICs9IDEgLyBkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyQ2xvc2VuZXNzICs9IGQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFybW9uaWMpIHtcbiAgICAgICAgY3VyckNsb3NlbmVzcyA9IDEgLyBjdXJyQ2xvc2VuZXNzO1xuICAgICAgfVxuXG4gICAgICBpZiAobWF4Q2xvc2VuZXNzIDwgY3VyckNsb3NlbmVzcykge1xuICAgICAgICBtYXhDbG9zZW5lc3MgPSBjdXJyQ2xvc2VuZXNzO1xuICAgICAgfVxuXG4gICAgICBjbG9zZW5lc3Nlc1tub2RlX2kuaWQoKV0gPSBjdXJyQ2xvc2VuZXNzO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjbG9zZW5lc3M6IGZ1bmN0aW9uIGNsb3NlbmVzcyhub2RlKSB7XG4gICAgICAgIGlmIChtYXhDbG9zZW5lc3MgPT0gMCkge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmluZyhub2RlKSkge1xuICAgICAgICAgIC8vIGZyb20gaXMgYSBzZWxlY3RvciBzdHJpbmdcbiAgICAgICAgICBub2RlID0gY3kuZmlsdGVyKG5vZGUpWzBdLmlkKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZnJvbSBpcyBhIG5vZGVcbiAgICAgICAgICBub2RlID0gbm9kZS5pZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsb3NlbmVzc2VzW25vZGVdIC8gbWF4Q2xvc2VuZXNzO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIC8vIEltcGxlbWVudGVkIGZyb20gcHNldWRvY29kZSBmcm9tIHdpa2lwZWRpYVxuICBjbG9zZW5lc3NDZW50cmFsaXR5OiBmdW5jdGlvbiBjbG9zZW5lc3NDZW50cmFsaXR5KG9wdGlvbnMpIHtcbiAgICB2YXIgX2RlZmF1bHRzMiA9IGRlZmF1bHRzJDIob3B0aW9ucyksXG4gICAgICAgIHJvb3QgPSBfZGVmYXVsdHMyLnJvb3QsXG4gICAgICAgIHdlaWdodCA9IF9kZWZhdWx0czIud2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZCA9IF9kZWZhdWx0czIuZGlyZWN0ZWQsXG4gICAgICAgIGhhcm1vbmljID0gX2RlZmF1bHRzMi5oYXJtb25pYztcblxuICAgIHJvb3QgPSB0aGlzLmZpbHRlcihyb290KVswXTsgLy8gd2UgbmVlZCBkaXN0YW5jZSBmcm9tIHRoaXMgbm9kZSB0byBldmVyeSBvdGhlciBub2RlXG5cbiAgICB2YXIgZGlqa3N0cmEgPSB0aGlzLmRpamtzdHJhKHtcbiAgICAgIHJvb3Q6IHJvb3QsXG4gICAgICB3ZWlnaHQ6IHdlaWdodCxcbiAgICAgIGRpcmVjdGVkOiBkaXJlY3RlZFxuICAgIH0pO1xuICAgIHZhciB0b3RhbERpc3RhbmNlID0gMDtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbiA9IG5vZGVzW2ldO1xuXG4gICAgICBpZiAoIW4uc2FtZShyb290KSkge1xuICAgICAgICB2YXIgZCA9IGRpamtzdHJhLmRpc3RhbmNlVG8obik7XG5cbiAgICAgICAgaWYgKGhhcm1vbmljKSB7XG4gICAgICAgICAgdG90YWxEaXN0YW5jZSArPSAxIC8gZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b3RhbERpc3RhbmNlICs9IGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaGFybW9uaWMgPyB0b3RhbERpc3RhbmNlIDogMSAvIHRvdGFsRGlzdGFuY2U7XG4gIH0gLy8gY2xvc2VuZXNzQ2VudHJhbGl0eVxuXG59OyAvLyBlbGVzZm5cbi8vIG5pY2UsIHNob3J0IG1hdGhlbWF0aGljYWwgYWxpYXNcblxuZWxlc2ZuJDkuY2MgPSBlbGVzZm4kOS5jbG9zZW5lc3NDZW50cmFsaXR5O1xuZWxlc2ZuJDkuY2NuID0gZWxlc2ZuJDkuY2xvc2VuZXNzQ2VudHJhbGl0eU5vcm1hbGlzZWQgPSBlbGVzZm4kOS5jbG9zZW5lc3NDZW50cmFsaXR5Tm9ybWFsaXplZDtcblxudmFyIGRlZmF1bHRzJDMgPSBkZWZhdWx0cyh7XG4gIHdlaWdodDogbnVsbCxcbiAgZGlyZWN0ZWQ6IGZhbHNlXG59KTtcbnZhciBlbGVzZm4kYSA9IHtcbiAgLy8gSW1wbGVtZW50ZWQgZnJvbSB0aGUgYWxnb3JpdGhtIGluIHRoZSBwYXBlciBcIk9uIFZhcmlhbnRzIG9mIFNob3J0ZXN0LVBhdGggQmV0d2Vlbm5lc3MgQ2VudHJhbGl0eSBhbmQgdGhlaXIgR2VuZXJpYyBDb21wdXRhdGlvblwiIGJ5IFVscmlrIEJyYW5kZXNcbiAgYmV0d2Vlbm5lc3NDZW50cmFsaXR5OiBmdW5jdGlvbiBiZXR3ZWVubmVzc0NlbnRyYWxpdHkob3B0aW9ucykge1xuICAgIHZhciBfZGVmYXVsdHMgPSBkZWZhdWx0cyQzKG9wdGlvbnMpLFxuICAgICAgICBkaXJlY3RlZCA9IF9kZWZhdWx0cy5kaXJlY3RlZCxcbiAgICAgICAgd2VpZ2h0ID0gX2RlZmF1bHRzLndlaWdodDtcblxuICAgIHZhciB3ZWlnaHRlZCA9IHdlaWdodCAhPSBudWxsO1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTsgLy8gc3RhcnRpbmdcblxuICAgIHZhciBWID0gdGhpcy5ub2RlcygpO1xuICAgIHZhciBBID0ge307XG4gICAgdmFyIF9DID0ge307XG4gICAgdmFyIG1heCA9IDA7XG4gICAgdmFyIEMgPSB7XG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbCkge1xuICAgICAgICBfQ1trZXldID0gdmFsO1xuXG4gICAgICAgIGlmICh2YWwgPiBtYXgpIHtcbiAgICAgICAgICBtYXggPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgICAgcmV0dXJuIF9DW2tleV07XG4gICAgICB9XG4gICAgfTsgLy8gQSBjb250YWlucyB0aGUgbmVpZ2hib3Job29kcyBvZiBldmVyeSBub2RlXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IFYubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB2ID0gVltpXTtcbiAgICAgIHZhciB2aWQgPSB2LmlkKCk7XG5cbiAgICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgICBBW3ZpZF0gPSB2Lm91dGdvZXJzKCkubm9kZXMoKTsgLy8gZ2V0IG91dGdvZXJzIG9mIGV2ZXJ5IG5vZGVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEFbdmlkXSA9IHYub3Blbk5laWdoYm9yaG9vZCgpLm5vZGVzKCk7IC8vIGdldCBuZWlnaGJvcnMgb2YgZXZlcnkgbm9kZVxuICAgICAgfVxuXG4gICAgICBDLnNldCh2aWQsIDApO1xuICAgIH1cblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKHMpIHtcbiAgICAgIHZhciBzaWQgPSBWW3NdLmlkKCk7XG4gICAgICB2YXIgUyA9IFtdOyAvLyBzdGFja1xuXG4gICAgICB2YXIgUCA9IHt9O1xuICAgICAgdmFyIGcgPSB7fTtcbiAgICAgIHZhciBkID0ge307XG4gICAgICB2YXIgUSA9IG5ldyBIZWFwKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBkW2FdIC0gZFtiXTtcbiAgICAgIH0pOyAvLyBxdWV1ZVxuICAgICAgLy8gaW5pdCBkaWN0aW9uYXJpZXNcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IFYubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBfdmlkID0gVltfaV0uaWQoKTtcblxuICAgICAgICBQW192aWRdID0gW107XG4gICAgICAgIGdbX3ZpZF0gPSAwO1xuICAgICAgICBkW192aWRdID0gSW5maW5pdHk7XG4gICAgICB9XG5cbiAgICAgIGdbc2lkXSA9IDE7IC8vIHNpZ21hXG5cbiAgICAgIGRbc2lkXSA9IDA7IC8vIGRpc3RhbmNlIHRvIHNcblxuICAgICAgUS5wdXNoKHNpZCk7XG5cbiAgICAgIHdoaWxlICghUS5lbXB0eSgpKSB7XG4gICAgICAgIHZhciBfdiA9IFEucG9wKCk7XG5cbiAgICAgICAgUy5wdXNoKF92KTtcblxuICAgICAgICBpZiAod2VpZ2h0ZWQpIHtcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IEFbX3ZdLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICB2YXIgdyA9IEFbX3ZdW2pdO1xuICAgICAgICAgICAgdmFyIHZFbGUgPSBjeS5nZXRFbGVtZW50QnlJZChfdik7XG4gICAgICAgICAgICB2YXIgZWRnZSA9IHZvaWQgMDtcblxuICAgICAgICAgICAgaWYgKHZFbGUuZWRnZXNUbyh3KS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGVkZ2UgPSB2RWxlLmVkZ2VzVG8odylbMF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlZGdlID0gdy5lZGdlc1RvKHZFbGUpWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgZWRnZVdlaWdodCA9IHdlaWdodChlZGdlKTtcbiAgICAgICAgICAgIHcgPSB3LmlkKCk7XG5cbiAgICAgICAgICAgIGlmIChkW3ddID4gZFtfdl0gKyBlZGdlV2VpZ2h0KSB7XG4gICAgICAgICAgICAgIGRbd10gPSBkW192XSArIGVkZ2VXZWlnaHQ7XG5cbiAgICAgICAgICAgICAgaWYgKFEubm9kZXMuaW5kZXhPZih3KSA8IDApIHtcbiAgICAgICAgICAgICAgICAvL2lmIHcgaXMgbm90IGluIFFcbiAgICAgICAgICAgICAgICBRLnB1c2godyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIHBvc2l0aW9uIGlmIHcgaXMgaW4gUVxuICAgICAgICAgICAgICAgIFEudXBkYXRlSXRlbSh3KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGdbd10gPSAwO1xuICAgICAgICAgICAgICBQW3ddID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkW3ddID09IGRbX3ZdICsgZWRnZVdlaWdodCkge1xuICAgICAgICAgICAgICBnW3ddID0gZ1t3XSArIGdbX3ZdO1xuICAgICAgICAgICAgICBQW3ddLnB1c2goX3YpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgQVtfdl0ubGVuZ3RoOyBfaisrKSB7XG4gICAgICAgICAgICB2YXIgX3cgPSBBW192XVtfal0uaWQoKTtcblxuICAgICAgICAgICAgaWYgKGRbX3ddID09IEluZmluaXR5KSB7XG4gICAgICAgICAgICAgIFEucHVzaChfdyk7XG4gICAgICAgICAgICAgIGRbX3ddID0gZFtfdl0gKyAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZFtfd10gPT0gZFtfdl0gKyAxKSB7XG4gICAgICAgICAgICAgIGdbX3ddID0gZ1tfd10gKyBnW192XTtcblxuICAgICAgICAgICAgICBQW193XS5wdXNoKF92KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGUgPSB7fTtcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgVi5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgIGVbVltfaTJdLmlkKCldID0gMDtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKFMubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgX3cyID0gUy5wb3AoKTtcblxuICAgICAgICBmb3IgKHZhciBfajIgPSAwOyBfajIgPCBQW193Ml0ubGVuZ3RoOyBfajIrKykge1xuICAgICAgICAgIHZhciBfdjIgPSBQW193Ml1bX2oyXTtcbiAgICAgICAgICBlW192Ml0gPSBlW192Ml0gKyBnW192Ml0gLyBnW193Ml0gKiAoMSArIGVbX3cyXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3cyICE9IFZbc10uaWQoKSkge1xuICAgICAgICAgIEMuc2V0KF93MiwgQy5nZXQoX3cyKSArIGVbX3cyXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgcyA9IDA7IHMgPCBWLmxlbmd0aDsgcysrKSB7XG4gICAgICBfbG9vcChzKTtcbiAgICB9XG5cbiAgICB2YXIgcmV0ID0ge1xuICAgICAgYmV0d2Vlbm5lc3M6IGZ1bmN0aW9uIGJldHdlZW5uZXNzKG5vZGUpIHtcbiAgICAgICAgdmFyIGlkID0gY3kuY29sbGVjdGlvbihub2RlKS5pZCgpO1xuICAgICAgICByZXR1cm4gQy5nZXQoaWQpO1xuICAgICAgfSxcbiAgICAgIGJldHdlZW5uZXNzTm9ybWFsaXplZDogZnVuY3Rpb24gYmV0d2Vlbm5lc3NOb3JtYWxpemVkKG5vZGUpIHtcbiAgICAgICAgaWYgKG1heCA9PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaWQgPSBjeS5jb2xsZWN0aW9uKG5vZGUpLmlkKCk7XG4gICAgICAgIHJldHVybiBDLmdldChpZCkgLyBtYXg7XG4gICAgICB9XG4gICAgfTsgLy8gYWxpYXNcblxuICAgIHJldC5iZXR3ZWVubmVzc05vcm1hbGlzZWQgPSByZXQuYmV0d2Vlbm5lc3NOb3JtYWxpemVkO1xuICAgIHJldHVybiByZXQ7XG4gIH0gLy8gYmV0d2Vlbm5lc3NDZW50cmFsaXR5XG5cbn07IC8vIGVsZXNmblxuLy8gbmljZSwgc2hvcnQgbWF0aGVtYXRoaWNhbCBhbGlhc1xuXG5lbGVzZm4kYS5iYyA9IGVsZXNmbiRhLmJldHdlZW5uZXNzQ2VudHJhbGl0eTtcblxuLy8gSW1wbGVtZW50ZWQgYnkgWm9lIFhpIEB6b2V4aSBmb3IgR1NPQyAyMDE2XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG52YXIgZGVmYXVsdHMkNCA9IGRlZmF1bHRzKHtcbiAgZXhwYW5kRmFjdG9yOiAyLFxuICAvLyBhZmZlY3RzIHRpbWUgb2YgY29tcHV0YXRpb24gYW5kIGNsdXN0ZXIgZ3JhbnVsYXJpdHkgdG8gc29tZSBleHRlbnQ6IE0gKiBNXG4gIGluZmxhdGVGYWN0b3I6IDIsXG4gIC8vIGFmZmVjdHMgY2x1c3RlciBncmFudWxhcml0eSAodGhlIGdyZWF0ZXIgdGhlIHZhbHVlLCB0aGUgbW9yZSBjbHVzdGVycyk6IE0oaSxqKSAvIEUoailcbiAgbXVsdEZhY3RvcjogMSxcbiAgLy8gb3B0aW9uYWwgc2VsZiBsb29wcyBmb3IgZWFjaCBub2RlLiBVc2UgYSBuZXV0cmFsIHZhbHVlIHRvIGltcHJvdmUgY2x1c3RlciBjb21wdXRhdGlvbnMuXG4gIG1heEl0ZXJhdGlvbnM6IDIwLFxuICAvLyBtYXhpbXVtIG51bWJlciBvZiBpdGVyYXRpb25zIG9mIHRoZSBNQ0wgYWxnb3JpdGhtIGluIGEgc2luZ2xlIHJ1blxuICBhdHRyaWJ1dGVzOiBbLy8gYXR0cmlidXRlcy9mZWF0dXJlcyB1c2VkIHRvIGdyb3VwIG5vZGVzLCBpZS4gc2ltaWxhcml0eSB2YWx1ZXMgYmV0d2VlbiBub2Rlc1xuICBmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9XVxufSk7XG4vKiBlc2xpbnQtZW5hYmxlICovXG5cbnZhciBzZXRPcHRpb25zID0gZnVuY3Rpb24gc2V0T3B0aW9ucyhvcHRpb25zKSB7XG4gIHJldHVybiBkZWZhdWx0cyQ0KG9wdGlvbnMpO1xufTtcbi8qIGVzbGludC1lbmFibGUgKi9cblxuXG52YXIgZ2V0U2ltaWxhcml0eSA9IGZ1bmN0aW9uIGdldFNpbWlsYXJpdHkoZWRnZSwgYXR0cmlidXRlcykge1xuICB2YXIgdG90YWwgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgIHRvdGFsICs9IGF0dHJpYnV0ZXNbaV0oZWRnZSk7XG4gIH1cblxuICByZXR1cm4gdG90YWw7XG59O1xuXG52YXIgYWRkTG9vcHMgPSBmdW5jdGlvbiBhZGRMb29wcyhNLCBuLCB2YWwpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICBNW2kgKiBuICsgaV0gPSB2YWw7XG4gIH1cbn07XG5cbnZhciBub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoTSwgbikge1xuICB2YXIgc3VtO1xuXG4gIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG47IGNvbCsrKSB7XG4gICAgc3VtID0gMDtcblxuICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IG47IHJvdysrKSB7XG4gICAgICBzdW0gKz0gTVtyb3cgKiBuICsgY29sXTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfcm93ID0gMDsgX3JvdyA8IG47IF9yb3crKykge1xuICAgICAgTVtfcm93ICogbiArIGNvbF0gPSBNW19yb3cgKiBuICsgY29sXSAvIHN1bTtcbiAgICB9XG4gIH1cbn07IC8vIFRPRE86IGJsb2NrZWQgbWF0cml4IG11bHRpcGxpY2F0aW9uP1xuXG5cbnZhciBtbXVsdCA9IGZ1bmN0aW9uIG1tdWx0KEEsIEIsIG4pIHtcbiAgdmFyIEMgPSBuZXcgQXJyYXkobiAqIG4pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgIENbaSAqIG4gKyBqXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgIGZvciAodmFyIF9qID0gMDsgX2ogPCBuOyBfaisrKSB7XG4gICAgICAgIENbaSAqIG4gKyBfal0gKz0gQVtpICogbiArIGtdICogQltrICogbiArIF9qXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gQztcbn07XG5cbnZhciBleHBhbmQgPSBmdW5jdGlvbiBleHBhbmQoTSwgbiwgZXhwYW5kRmFjdG9yXG4vKiogcG93ZXIgKiovXG4pIHtcbiAgdmFyIF9NID0gTS5zbGljZSgwKTtcblxuICBmb3IgKHZhciBwID0gMTsgcCA8IGV4cGFuZEZhY3RvcjsgcCsrKSB7XG4gICAgTSA9IG1tdWx0KE0sIF9NLCBuKTtcbiAgfVxuXG4gIHJldHVybiBNO1xufTtcblxudmFyIGluZmxhdGUgPSBmdW5jdGlvbiBpbmZsYXRlKE0sIG4sIGluZmxhdGVGYWN0b3Jcbi8qKiByICoqL1xuKSB7XG4gIHZhciBfTSA9IG5ldyBBcnJheShuICogbik7IC8vIE0oaSxqKSBeIGluZmxhdGVQb3dlclxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbjsgaSsrKSB7XG4gICAgX01baV0gPSBNYXRoLnBvdyhNW2ldLCBpbmZsYXRlRmFjdG9yKTtcbiAgfVxuXG4gIG5vcm1hbGl6ZShfTSwgbik7XG4gIHJldHVybiBfTTtcbn07XG5cbnZhciBoYXNDb252ZXJnZWQgPSBmdW5jdGlvbiBoYXNDb252ZXJnZWQoTSwgX00sIG4yLCByb3VuZEZhY3Rvcikge1xuICAvLyBDaGVjayB0aGF0IGJvdGggbWF0cmljZXMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cyAoaSxqKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG4yOyBpKyspIHtcbiAgICB2YXIgdjEgPSBNYXRoLnJvdW5kKE1baV0gKiBNYXRoLnBvdygxMCwgcm91bmRGYWN0b3IpKSAvIE1hdGgucG93KDEwLCByb3VuZEZhY3Rvcik7IC8vIHRydW5jYXRlIHRvICdyb3VuZEZhY3RvcicgZGVjaW1hbCBwbGFjZXNcblxuICAgIHZhciB2MiA9IE1hdGgucm91bmQoX01baV0gKiBNYXRoLnBvdygxMCwgcm91bmRGYWN0b3IpKSAvIE1hdGgucG93KDEwLCByb3VuZEZhY3Rvcik7XG5cbiAgICBpZiAodjEgIT09IHYyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG52YXIgYXNzaWduID0gZnVuY3Rpb24gYXNzaWduKE0sIG4sIG5vZGVzLCBjeSkge1xuICB2YXIgY2x1c3RlcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgIHZhciBjbHVzdGVyID0gW107XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgLy8gUm93LXdpc2UgYXR0cmFjdG9ycyBhbmQgZWxlbWVudHMgdGhhdCB0aGV5IGF0dHJhY3QgYmVsb25nIGluIHNhbWUgY2x1c3RlclxuICAgICAgaWYgKE1hdGgucm91bmQoTVtpICogbiArIGpdICogMTAwMCkgLyAxMDAwID4gMCkge1xuICAgICAgICBjbHVzdGVyLnB1c2gobm9kZXNbal0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbHVzdGVyLmxlbmd0aCAhPT0gMCkge1xuICAgICAgY2x1c3RlcnMucHVzaChjeS5jb2xsZWN0aW9uKGNsdXN0ZXIpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIgaXNEdXBsaWNhdGUgPSBmdW5jdGlvbiBpc0R1cGxpY2F0ZShjMSwgYzIpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjMS5sZW5ndGg7IGkrKykge1xuICAgIGlmICghYzJbaV0gfHwgYzFbaV0uaWQoKSAhPT0gYzJbaV0uaWQoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxudmFyIHJlbW92ZUR1cGxpY2F0ZXMgPSBmdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVzKGNsdXN0ZXJzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2x1c3RlcnMubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNsdXN0ZXJzLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoaSAhPSBqICYmIGlzRHVwbGljYXRlKGNsdXN0ZXJzW2ldLCBjbHVzdGVyc1tqXSkpIHtcbiAgICAgICAgY2x1c3RlcnMuc3BsaWNlKGosIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHVzdGVycztcbn07XG5cbnZhciBtYXJrb3ZDbHVzdGVyaW5nID0gZnVuY3Rpb24gbWFya292Q2x1c3RlcmluZyhvcHRpb25zKSB7XG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgdmFyIGVkZ2VzID0gdGhpcy5lZGdlcygpO1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7IC8vIFNldCBwYXJhbWV0ZXJzIG9mIGFsZ29yaXRobTpcblxuICB2YXIgb3B0cyA9IHNldE9wdGlvbnMob3B0aW9ucyk7IC8vIE1hcCBlYWNoIG5vZGUgdG8gaXRzIHBvc2l0aW9uIGluIG5vZGUgYXJyYXlcblxuICB2YXIgaWQycG9zaXRpb24gPSB7fTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWQycG9zaXRpb25bbm9kZXNbaV0uaWQoKV0gPSBpO1xuICB9IC8vIEdlbmVyYXRlIHN0b2NoYXN0aWMgbWF0cml4IE0gZnJvbSBpbnB1dCBncmFwaCBHIChzaG91bGQgYmUgc3ltbWV0cmljL3VuZGlyZWN0ZWQpXG5cblxuICB2YXIgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgIG4yID0gbiAqIG47XG5cbiAgdmFyIE0gPSBuZXcgQXJyYXkobjIpLFxuICAgICAgX007XG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG4yOyBfaSsrKSB7XG4gICAgTVtfaV0gPSAwO1xuICB9XG5cbiAgZm9yICh2YXIgZSA9IDA7IGUgPCBlZGdlcy5sZW5ndGg7IGUrKykge1xuICAgIHZhciBlZGdlID0gZWRnZXNbZV07XG4gICAgdmFyIF9pMiA9IGlkMnBvc2l0aW9uW2VkZ2Uuc291cmNlKCkuaWQoKV07XG4gICAgdmFyIGogPSBpZDJwb3NpdGlvbltlZGdlLnRhcmdldCgpLmlkKCldO1xuICAgIHZhciBzaW0gPSBnZXRTaW1pbGFyaXR5KGVkZ2UsIG9wdHMuYXR0cmlidXRlcyk7XG4gICAgTVtfaTIgKiBuICsgal0gKz0gc2ltOyAvLyBHIHNob3VsZCBiZSBzeW1tZXRyaWMgYW5kIHVuZGlyZWN0ZWRcblxuICAgIE1baiAqIG4gKyBfaTJdICs9IHNpbTtcbiAgfSAvLyBCZWdpbiBNYXJrb3YgY2x1c3RlciBhbGdvcml0aG1cbiAgLy8gU3RlcCAxOiBBZGQgc2VsZiBsb29wcyB0byBlYWNoIG5vZGUsIGllLiBhZGQgbXVsdEZhY3RvciB0byBtYXRyaXggZGlhZ29uYWxcblxuXG4gIGFkZExvb3BzKE0sIG4sIG9wdHMubXVsdEZhY3Rvcik7IC8vIFN0ZXAgMjogTSA9IG5vcm1hbGl6ZSggTSApO1xuXG4gIG5vcm1hbGl6ZShNLCBuKTtcbiAgdmFyIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICB2YXIgaXRlcmF0aW9ucyA9IDA7XG5cbiAgd2hpbGUgKGlzU3RpbGxNb3ZpbmcgJiYgaXRlcmF0aW9ucyA8IG9wdHMubWF4SXRlcmF0aW9ucykge1xuICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTsgLy8gU3RlcCAzOlxuXG4gICAgX00gPSBleHBhbmQoTSwgbiwgb3B0cy5leHBhbmRGYWN0b3IpOyAvLyBTdGVwIDQ6XG5cbiAgICBNID0gaW5mbGF0ZShfTSwgbiwgb3B0cy5pbmZsYXRlRmFjdG9yKTsgLy8gU3RlcCA1OiBjaGVjayB0byBzZWUgaWYgfnN0ZWFkeSBzdGF0ZSBoYXMgYmVlbiByZWFjaGVkXG5cbiAgICBpZiAoIWhhc0NvbnZlcmdlZChNLCBfTSwgbjIsIDQpKSB7XG4gICAgICBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpdGVyYXRpb25zKys7XG4gIH0gLy8gQnVpbGQgY2x1c3RlcnMgZnJvbSBtYXRyaXhcblxuXG4gIHZhciBjbHVzdGVycyA9IGFzc2lnbihNLCBuLCBub2RlcywgY3kpOyAvLyBSZW1vdmUgZHVwbGljYXRlIGNsdXN0ZXJzIGR1ZSB0byBzeW1tZXRyeSBvZiBncmFwaCBhbmQgTSBtYXRyaXhcblxuICBjbHVzdGVycyA9IHJlbW92ZUR1cGxpY2F0ZXMoY2x1c3RlcnMpO1xuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIgbWFya292Q2x1c3RlcmluZyQxID0ge1xuICBtYXJrb3ZDbHVzdGVyaW5nOiBtYXJrb3ZDbHVzdGVyaW5nLFxuICBtY2w6IG1hcmtvdkNsdXN0ZXJpbmdcbn07XG5cbi8vIENvbW1vbiBkaXN0YW5jZSBtZXRyaWNzIGZvciBjbHVzdGVyaW5nIGFsZ29yaXRobXNcblxudmFyIGlkZW50aXR5ID0gZnVuY3Rpb24gaWRlbnRpdHkoeCkge1xuICByZXR1cm4geDtcbn07XG5cbnZhciBhYnNEaWZmID0gZnVuY3Rpb24gYWJzRGlmZihwLCBxKSB7XG4gIHJldHVybiBNYXRoLmFicyhxIC0gcCk7XG59O1xuXG52YXIgYWRkQWJzRGlmZiA9IGZ1bmN0aW9uIGFkZEFic0RpZmYodG90YWwsIHAsIHEpIHtcbiAgcmV0dXJuIHRvdGFsICsgYWJzRGlmZihwLCBxKTtcbn07XG5cbnZhciBhZGRTcXVhcmVkRGlmZiA9IGZ1bmN0aW9uIGFkZFNxdWFyZWREaWZmKHRvdGFsLCBwLCBxKSB7XG4gIHJldHVybiB0b3RhbCArIE1hdGgucG93KHEgLSBwLCAyKTtcbn07XG5cbnZhciBzcXJ0ID0gZnVuY3Rpb24gc3FydCh4KSB7XG4gIHJldHVybiBNYXRoLnNxcnQoeCk7XG59O1xuXG52YXIgbWF4QWJzRGlmZiA9IGZ1bmN0aW9uIG1heEFic0RpZmYoY3VycmVudE1heCwgcCwgcSkge1xuICByZXR1cm4gTWF0aC5tYXgoY3VycmVudE1heCwgYWJzRGlmZihwLCBxKSk7XG59O1xuXG52YXIgZ2V0RGlzdGFuY2UgPSBmdW5jdGlvbiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIGluaXQsIHZpc2l0KSB7XG4gIHZhciBwb3N0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiBpZGVudGl0eTtcbiAgdmFyIHJldCA9IGluaXQ7XG4gIHZhciBwLCBxO1xuXG4gIGZvciAodmFyIGRpbSA9IDA7IGRpbSA8IGxlbmd0aDsgZGltKyspIHtcbiAgICBwID0gZ2V0UChkaW0pO1xuICAgIHEgPSBnZXRRKGRpbSk7XG4gICAgcmV0ID0gdmlzaXQocmV0LCBwLCBxKTtcbiAgfVxuXG4gIHJldHVybiBwb3N0KHJldCk7XG59O1xuXG52YXIgZGlzdGFuY2VzID0ge1xuICBldWNsaWRlYW46IGZ1bmN0aW9uIGV1Y2xpZGVhbihsZW5ndGgsIGdldFAsIGdldFEpIHtcbiAgICBpZiAobGVuZ3RoID49IDIpIHtcbiAgICAgIHJldHVybiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIDAsIGFkZFNxdWFyZWREaWZmLCBzcXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZm9yIHNpbmdsZSBhdHRyIGNhc2UsIG1vcmUgZWZmaWNpZW50IHRvIGF2b2lkIHNxcnRcbiAgICAgIHJldHVybiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIDAsIGFkZEFic0RpZmYpO1xuICAgIH1cbiAgfSxcbiAgc3F1YXJlZEV1Y2xpZGVhbjogZnVuY3Rpb24gc3F1YXJlZEV1Y2xpZGVhbihsZW5ndGgsIGdldFAsIGdldFEpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2UobGVuZ3RoLCBnZXRQLCBnZXRRLCAwLCBhZGRTcXVhcmVkRGlmZik7XG4gIH0sXG4gIG1hbmhhdHRhbjogZnVuY3Rpb24gbWFuaGF0dGFuKGxlbmd0aCwgZ2V0UCwgZ2V0USkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIDAsIGFkZEFic0RpZmYpO1xuICB9LFxuICBtYXg6IGZ1bmN0aW9uIG1heChsZW5ndGgsIGdldFAsIGdldFEpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2UobGVuZ3RoLCBnZXRQLCBnZXRRLCAtSW5maW5pdHksIG1heEFic0RpZmYpO1xuICB9XG59OyAvLyBpbiBjYXNlIHRoZSB1c2VyIGFjY2lkZW50YWxseSBkb2Vzbid0IHVzZSBjYW1lbCBjYXNlXG5cbmRpc3RhbmNlc1snc3F1YXJlZC1ldWNsaWRlYW4nXSA9IGRpc3RhbmNlc1snc3F1YXJlZEV1Y2xpZGVhbiddO1xuZGlzdGFuY2VzWydzcXVhcmVkZXVjbGlkZWFuJ10gPSBkaXN0YW5jZXNbJ3NxdWFyZWRFdWNsaWRlYW4nXTtcbmZ1bmN0aW9uIGNsdXN0ZXJpbmdEaXN0YW5jZSAobWV0aG9kLCBsZW5ndGgsIGdldFAsIGdldFEsIG5vZGVQLCBub2RlUSkge1xuICB2YXIgaW1wbDtcblxuICBpZiAoZm4obWV0aG9kKSkge1xuICAgIGltcGwgPSBtZXRob2Q7XG4gIH0gZWxzZSB7XG4gICAgaW1wbCA9IGRpc3RhbmNlc1ttZXRob2RdIHx8IGRpc3RhbmNlcy5ldWNsaWRlYW47XG4gIH1cblxuICBpZiAobGVuZ3RoID09PSAwICYmIGZuKG1ldGhvZCkpIHtcbiAgICByZXR1cm4gaW1wbChub2RlUCwgbm9kZVEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbXBsKGxlbmd0aCwgZ2V0UCwgZ2V0USwgbm9kZVAsIG5vZGVRKTtcbiAgfVxufVxuXG52YXIgZGVmYXVsdHMkNSA9IGRlZmF1bHRzKHtcbiAgazogMixcbiAgbTogMixcbiAgc2Vuc2l0aXZpdHlUaHJlc2hvbGQ6IDAuMDAwMSxcbiAgZGlzdGFuY2U6ICdldWNsaWRlYW4nLFxuICBtYXhJdGVyYXRpb25zOiAxMCxcbiAgYXR0cmlidXRlczogW10sXG4gIHRlc3RNb2RlOiBmYWxzZSxcbiAgdGVzdENlbnRyb2lkczogbnVsbFxufSk7XG5cbnZhciBzZXRPcHRpb25zJDEgPSBmdW5jdGlvbiBzZXRPcHRpb25zKG9wdGlvbnMpIHtcbiAgcmV0dXJuIGRlZmF1bHRzJDUob3B0aW9ucyk7XG59O1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5cbnZhciBnZXREaXN0ID0gZnVuY3Rpb24gZ2V0RGlzdCh0eXBlLCBub2RlLCBjZW50cm9pZCwgYXR0cmlidXRlcywgbW9kZSkge1xuICB2YXIgbm9Ob2RlUCA9IG1vZGUgIT09ICdrTWVkb2lkcyc7XG4gIHZhciBnZXRQID0gbm9Ob2RlUCA/IGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIGNlbnRyb2lkW2ldO1xuICB9IDogZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gYXR0cmlidXRlc1tpXShjZW50cm9pZCk7XG4gIH07XG5cbiAgdmFyIGdldFEgPSBmdW5jdGlvbiBnZXRRKGkpIHtcbiAgICByZXR1cm4gYXR0cmlidXRlc1tpXShub2RlKTtcbiAgfTtcblxuICB2YXIgbm9kZVAgPSBjZW50cm9pZDtcbiAgdmFyIG5vZGVRID0gbm9kZTtcbiAgcmV0dXJuIGNsdXN0ZXJpbmdEaXN0YW5jZSh0eXBlLCBhdHRyaWJ1dGVzLmxlbmd0aCwgZ2V0UCwgZ2V0USwgbm9kZVAsIG5vZGVRKTtcbn07XG5cbnZhciByYW5kb21DZW50cm9pZHMgPSBmdW5jdGlvbiByYW5kb21DZW50cm9pZHMobm9kZXMsIGssIGF0dHJpYnV0ZXMpIHtcbiAgdmFyIG5kaW0gPSBhdHRyaWJ1dGVzLmxlbmd0aDtcbiAgdmFyIG1pbiA9IG5ldyBBcnJheShuZGltKTtcbiAgdmFyIG1heCA9IG5ldyBBcnJheShuZGltKTtcbiAgdmFyIGNlbnRyb2lkcyA9IG5ldyBBcnJheShrKTtcbiAgdmFyIGNlbnRyb2lkID0gbnVsbDsgLy8gRmluZCBtaW4sIG1heCB2YWx1ZXMgZm9yIGVhY2ggYXR0cmlidXRlIGRpbWVuc2lvblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7XG4gICAgbWluW2ldID0gbm9kZXMubWluKGF0dHJpYnV0ZXNbaV0pLnZhbHVlO1xuICAgIG1heFtpXSA9IG5vZGVzLm1heChhdHRyaWJ1dGVzW2ldKS52YWx1ZTtcbiAgfSAvLyBCdWlsZCBrIGNlbnRyb2lkcywgZWFjaCByZXByZXNlbnRlZCBhcyBhbiBuLWRpbSBmZWF0dXJlIHZlY3RvclxuXG5cbiAgZm9yICh2YXIgYyA9IDA7IGMgPCBrOyBjKyspIHtcbiAgICBjZW50cm9pZCA9IFtdO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG5kaW07IF9pKyspIHtcbiAgICAgIGNlbnRyb2lkW19pXSA9IE1hdGgucmFuZG9tKCkgKiAobWF4W19pXSAtIG1pbltfaV0pICsgbWluW19pXTsgLy8gcmFuZG9tIGluaXRpYWwgdmFsdWVcbiAgICB9XG5cbiAgICBjZW50cm9pZHNbY10gPSBjZW50cm9pZDtcbiAgfVxuXG4gIHJldHVybiBjZW50cm9pZHM7XG59O1xuXG52YXIgY2xhc3NpZnkgPSBmdW5jdGlvbiBjbGFzc2lmeShub2RlLCBjZW50cm9pZHMsIGRpc3RhbmNlLCBhdHRyaWJ1dGVzLCB0eXBlKSB7XG4gIHZhciBtaW4gPSBJbmZpbml0eTtcbiAgdmFyIGluZGV4ID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNlbnRyb2lkcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkaXN0ID0gZ2V0RGlzdChkaXN0YW5jZSwgbm9kZSwgY2VudHJvaWRzW2ldLCBhdHRyaWJ1dGVzLCB0eXBlKTtcblxuICAgIGlmIChkaXN0IDwgbWluKSB7XG4gICAgICBtaW4gPSBkaXN0O1xuICAgICAgaW5kZXggPSBpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmRleDtcbn07XG5cbnZhciBidWlsZENsdXN0ZXIgPSBmdW5jdGlvbiBidWlsZENsdXN0ZXIoY2VudHJvaWQsIG5vZGVzLCBhc3NpZ25tZW50KSB7XG4gIHZhciBjbHVzdGVyID0gW107XG4gIHZhciBub2RlID0gbnVsbDtcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgbm9kZSA9IG5vZGVzW25dO1xuXG4gICAgaWYgKGFzc2lnbm1lbnRbbm9kZS5pZCgpXSA9PT0gY2VudHJvaWQpIHtcbiAgICAgIC8vY29uc29sZS5sb2coXCJOb2RlIFwiICsgbm9kZS5pZCgpICsgXCIgaXMgYXNzb2NpYXRlZCB3aXRoIG1lZG9pZCAjOiBcIiArIG0pO1xuICAgICAgY2x1c3Rlci5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHVzdGVyO1xufTtcblxudmFyIGhhdmVWYWx1ZXNDb252ZXJnZWQgPSBmdW5jdGlvbiBoYXZlVmFsdWVzQ29udmVyZ2VkKHYxLCB2Miwgc2Vuc2l0aXZpdHlUaHJlc2hvbGQpIHtcbiAgcmV0dXJuIE1hdGguYWJzKHYyIC0gdjEpIDw9IHNlbnNpdGl2aXR5VGhyZXNob2xkO1xufTtcblxudmFyIGhhdmVNYXRyaWNlc0NvbnZlcmdlZCA9IGZ1bmN0aW9uIGhhdmVNYXRyaWNlc0NvbnZlcmdlZCh2MSwgdjIsIHNlbnNpdGl2aXR5VGhyZXNob2xkKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHYxW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKHYxW2ldW2pdIC0gdjJbaV1bal0pO1xuXG4gICAgICBpZiAoZGlmZiA+IHNlbnNpdGl2aXR5VGhyZXNob2xkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbnZhciBzZWVuQmVmb3JlID0gZnVuY3Rpb24gc2VlbkJlZm9yZShub2RlLCBtZWRvaWRzLCBuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgaWYgKG5vZGUgPT09IG1lZG9pZHNbaV0pIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxudmFyIHJhbmRvbU1lZG9pZHMgPSBmdW5jdGlvbiByYW5kb21NZWRvaWRzKG5vZGVzLCBrKSB7XG4gIHZhciBtZWRvaWRzID0gbmV3IEFycmF5KGspOyAvLyBGb3Igc21hbGwgZGF0YSBzZXRzLCB0aGUgcHJvYmFiaWxpdHkgb2YgbWVkb2lkIGNvbmZsaWN0IGlzIGdyZWF0ZXIsXG4gIC8vIHNvIHdlIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIHdlJ3ZlIGFscmVhZHkgc2VlbiBvciBjaG9zZSB0aGlzIG5vZGUgYmVmb3JlLlxuXG4gIGlmIChub2Rlcy5sZW5ndGggPCA1MCkge1xuICAgIC8vIFJhbmRvbWx5IHNlbGVjdCBrIG1lZG9pZHMgZnJvbSB0aGUgbiBub2Rlc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG5vZGVzLmxlbmd0aCldOyAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGNob3NlbiB0aGlzIG5vZGUgdG8gYmUgYSBtZWRvaWQsIGRvbid0IGNob29zZSBpdCBhZ2FpbiAoZm9yIHNtYWxsIGRhdGEgc2V0cykuXG4gICAgICAvLyBJbnN0ZWFkIGNob29zZSBhIGRpZmZlcmVudCByYW5kb20gbm9kZS5cblxuICAgICAgd2hpbGUgKHNlZW5CZWZvcmUobm9kZSwgbWVkb2lkcywgaSkpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG5vZGVzLmxlbmd0aCldO1xuICAgICAgfVxuXG4gICAgICBtZWRvaWRzW2ldID0gbm9kZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gUmVsYXRpdmVseSBsYXJnZSBkYXRhIHNldCwgc28gcHJldHR5IHNhZmUgdG8gbm90IGNoZWNrIGFuZCBqdXN0IHNlbGVjdCByYW5kb20gbm9kZXNcbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBrOyBfaTIrKykge1xuICAgICAgbWVkb2lkc1tfaTJdID0gbm9kZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbm9kZXMubGVuZ3RoKV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lZG9pZHM7XG59O1xuXG52YXIgZmluZENvc3QgPSBmdW5jdGlvbiBmaW5kQ29zdChwb3RlbnRpYWxOZXdNZWRvaWQsIGNsdXN0ZXIsIGF0dHJpYnV0ZXMpIHtcbiAgdmFyIGNvc3QgPSAwO1xuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwgY2x1c3Rlci5sZW5ndGg7IG4rKykge1xuICAgIGNvc3QgKz0gZ2V0RGlzdCgnbWFuaGF0dGFuJywgY2x1c3RlcltuXSwgcG90ZW50aWFsTmV3TWVkb2lkLCBhdHRyaWJ1dGVzLCAna01lZG9pZHMnKTtcbiAgfVxuXG4gIHJldHVybiBjb3N0O1xufTtcblxudmFyIGtNZWFucyA9IGZ1bmN0aW9uIGtNZWFucyhvcHRpb25zKSB7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuICB2YXIgbm9kZSA9IG51bGw7IC8vIFNldCBwYXJhbWV0ZXJzIG9mIGFsZ29yaXRobTogIyBvZiBjbHVzdGVycywgZGlzdGFuY2UgbWV0cmljLCBldGMuXG5cbiAgdmFyIG9wdHMgPSBzZXRPcHRpb25zJDEob3B0aW9ucyk7IC8vIEJlZ2luIGstbWVhbnMgYWxnb3JpdGhtXG5cbiAgdmFyIGNsdXN0ZXJzID0gbmV3IEFycmF5KG9wdHMuayk7XG4gIHZhciBhc3NpZ25tZW50ID0ge307XG4gIHZhciBjZW50cm9pZHM7IC8vIFN0ZXAgMTogSW5pdGlhbGl6ZSBjZW50cm9pZCBwb3NpdGlvbnNcblxuICBpZiAob3B0cy50ZXN0TW9kZSkge1xuICAgIGlmICh0eXBlb2Ygb3B0cy50ZXN0Q2VudHJvaWRzID09PSAnbnVtYmVyJykge1xuICAgICAgY2VudHJvaWRzID0gcmFuZG9tQ2VudHJvaWRzKG5vZGVzLCBvcHRzLmssIG9wdHMuYXR0cmlidXRlcyk7XG4gICAgfSBlbHNlIGlmIChfdHlwZW9mKG9wdHMudGVzdENlbnRyb2lkcykgPT09ICdvYmplY3QnKSB7XG4gICAgICBjZW50cm9pZHMgPSBvcHRzLnRlc3RDZW50cm9pZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNlbnRyb2lkcyA9IHJhbmRvbUNlbnRyb2lkcyhub2Rlcywgb3B0cy5rLCBvcHRzLmF0dHJpYnV0ZXMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjZW50cm9pZHMgPSByYW5kb21DZW50cm9pZHMobm9kZXMsIG9wdHMuaywgb3B0cy5hdHRyaWJ1dGVzKTtcbiAgfVxuXG4gIHZhciBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgdmFyIGl0ZXJhdGlvbnMgPSAwO1xuXG4gIHdoaWxlIChpc1N0aWxsTW92aW5nICYmIGl0ZXJhdGlvbnMgPCBvcHRzLm1heEl0ZXJhdGlvbnMpIHtcbiAgICAvLyBTdGVwIDI6IEFzc2lnbiBub2RlcyB0byB0aGUgbmVhcmVzdCBjZW50cm9pZFxuICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tuXTsgLy8gRGV0ZXJtaW5lIHdoaWNoIGNsdXN0ZXIgdGhpcyBub2RlIGJlbG9uZ3MgdG86IG5vZGUgaWQgPT4gY2x1c3RlciAjXG5cbiAgICAgIGFzc2lnbm1lbnRbbm9kZS5pZCgpXSA9IGNsYXNzaWZ5KG5vZGUsIGNlbnRyb2lkcywgb3B0cy5kaXN0YW5jZSwgb3B0cy5hdHRyaWJ1dGVzLCAna01lYW5zJyk7XG4gICAgfSAvLyBTdGVwIDM6IEZvciBlYWNoIG9mIHRoZSBrIGNsdXN0ZXJzLCB1cGRhdGUgaXRzIGNlbnRyb2lkXG5cblxuICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGMgPSAwOyBjIDwgb3B0cy5rOyBjKyspIHtcbiAgICAgIC8vIEdldCBhbGwgbm9kZXMgdGhhdCBiZWxvbmcgdG8gdGhpcyBjbHVzdGVyXG4gICAgICB2YXIgY2x1c3RlciA9IGJ1aWxkQ2x1c3RlcihjLCBub2RlcywgYXNzaWdubWVudCk7XG5cbiAgICAgIGlmIChjbHVzdGVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBJZiBjbHVzdGVyIGlzIGVtcHR5LCBicmVhayBvdXQgZWFybHkgJiBtb3ZlIHRvIG5leHQgY2x1c3RlclxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gVXBkYXRlIGNlbnRyb2lkcyBieSBjYWxjdWxhdGluZyBhdmcgb2YgYWxsIG5vZGVzIHdpdGhpbiB0aGUgY2x1c3Rlci5cblxuXG4gICAgICB2YXIgbmRpbSA9IG9wdHMuYXR0cmlidXRlcy5sZW5ndGg7XG4gICAgICB2YXIgY2VudHJvaWQgPSBjZW50cm9pZHNbY107IC8vIFsgZGltXzEsIGRpbV8yLCBkaW1fMywgLi4uICwgZGltX24gXVxuXG4gICAgICB2YXIgbmV3Q2VudHJvaWQgPSBuZXcgQXJyYXkobmRpbSk7XG4gICAgICB2YXIgc3VtID0gbmV3IEFycmF5KG5kaW0pO1xuXG4gICAgICBmb3IgKHZhciBkID0gMDsgZCA8IG5kaW07IGQrKykge1xuICAgICAgICBzdW1bZF0gPSAwLjA7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbHVzdGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbm9kZSA9IGNsdXN0ZXJbaV07XG4gICAgICAgICAgc3VtW2RdICs9IG9wdHMuYXR0cmlidXRlc1tkXShub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld0NlbnRyb2lkW2RdID0gc3VtW2RdIC8gY2x1c3Rlci5sZW5ndGg7IC8vIENoZWNrIHRvIHNlZSBpZiBhbGdvcml0aG0gaGFzIGNvbnZlcmdlZCwgaS5lLiB3aGVuIGNlbnRyb2lkcyBubyBsb25nZXIgY2hhbmdlXG5cbiAgICAgICAgaWYgKCFoYXZlVmFsdWVzQ29udmVyZ2VkKG5ld0NlbnRyb2lkW2RdLCBjZW50cm9pZFtkXSwgb3B0cy5zZW5zaXRpdml0eVRocmVzaG9sZCkpIHtcbiAgICAgICAgICBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjZW50cm9pZHNbY10gPSBuZXdDZW50cm9pZDtcbiAgICAgIGNsdXN0ZXJzW2NdID0gY3kuY29sbGVjdGlvbihjbHVzdGVyKTtcbiAgICB9XG5cbiAgICBpdGVyYXRpb25zKys7XG4gIH1cblxuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIga01lZG9pZHMgPSBmdW5jdGlvbiBrTWVkb2lkcyhvcHRpb25zKSB7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuICB2YXIgbm9kZSA9IG51bGw7XG4gIHZhciBvcHRzID0gc2V0T3B0aW9ucyQxKG9wdGlvbnMpOyAvLyBCZWdpbiBrLW1lZG9pZHMgYWxnb3JpdGhtXG5cbiAgdmFyIGNsdXN0ZXJzID0gbmV3IEFycmF5KG9wdHMuayk7XG4gIHZhciBtZWRvaWRzO1xuICB2YXIgYXNzaWdubWVudCA9IHt9O1xuICB2YXIgY3VyQ29zdDtcbiAgdmFyIG1pbkNvc3RzID0gbmV3IEFycmF5KG9wdHMuayk7IC8vIG1pbmltdW0gY29zdCBjb25maWd1cmF0aW9uIGZvciBlYWNoIGNsdXN0ZXJcbiAgLy8gU3RlcCAxOiBJbml0aWFsaXplIGsgbWVkb2lkc1xuXG4gIGlmIChvcHRzLnRlc3RNb2RlKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRzLnRlc3RDZW50cm9pZHMgPT09ICdudW1iZXInKSA7IGVsc2UgaWYgKF90eXBlb2Yob3B0cy50ZXN0Q2VudHJvaWRzKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG1lZG9pZHMgPSBvcHRzLnRlc3RDZW50cm9pZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lZG9pZHMgPSByYW5kb21NZWRvaWRzKG5vZGVzLCBvcHRzLmspO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtZWRvaWRzID0gcmFuZG9tTWVkb2lkcyhub2Rlcywgb3B0cy5rKTtcbiAgfVxuXG4gIHZhciBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgdmFyIGl0ZXJhdGlvbnMgPSAwO1xuXG4gIHdoaWxlIChpc1N0aWxsTW92aW5nICYmIGl0ZXJhdGlvbnMgPCBvcHRzLm1heEl0ZXJhdGlvbnMpIHtcbiAgICAvLyBTdGVwIDI6IEFzc2lnbiBub2RlcyB0byB0aGUgbmVhcmVzdCBtZWRvaWRcbiAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgICBub2RlID0gbm9kZXNbbl07IC8vIERldGVybWluZSB3aGljaCBjbHVzdGVyIHRoaXMgbm9kZSBiZWxvbmdzIHRvOiBub2RlIGlkID0+IGNsdXN0ZXIgI1xuXG4gICAgICBhc3NpZ25tZW50W25vZGUuaWQoKV0gPSBjbGFzc2lmeShub2RlLCBtZWRvaWRzLCBvcHRzLmRpc3RhbmNlLCBvcHRzLmF0dHJpYnV0ZXMsICdrTWVkb2lkcycpO1xuICAgIH1cblxuICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTsgLy8gU3RlcCAzOiBGb3IgZWFjaCBtZWRvaWQgbSwgYW5kIGZvciBlYWNoIG5vZGUgYXNzY2lhdGVkIHdpdGggbWVkaW9kIG0sXG4gICAgLy8gc2VsZWN0IHRoZSBub2RlIHdpdGggdGhlIGxvd2VzdCBjb25maWd1cmF0aW9uIGNvc3QgYXMgbmV3IG1lZG9pZC5cblxuICAgIGZvciAodmFyIG0gPSAwOyBtIDwgbWVkb2lkcy5sZW5ndGg7IG0rKykge1xuICAgICAgLy8gR2V0IGFsbCBub2RlcyB0aGF0IGJlbG9uZyB0byB0aGlzIG1lZG9pZFxuICAgICAgdmFyIGNsdXN0ZXIgPSBidWlsZENsdXN0ZXIobSwgbm9kZXMsIGFzc2lnbm1lbnQpO1xuXG4gICAgICBpZiAoY2x1c3Rlci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gSWYgY2x1c3RlciBpcyBlbXB0eSwgYnJlYWsgb3V0IGVhcmx5ICYgbW92ZSB0byBuZXh0IGNsdXN0ZXJcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG1pbkNvc3RzW21dID0gZmluZENvc3QobWVkb2lkc1ttXSwgY2x1c3Rlciwgb3B0cy5hdHRyaWJ1dGVzKTsgLy8gb3JpZ2luYWwgY29zdFxuICAgICAgLy8gU2VsZWN0IGRpZmZlcmVudCBtZWRvaWQgaWYgaXRzIGNvbmZpZ3VyYXRpb24gaGFzIHRoZSBsb3dlc3QgY29zdFxuXG4gICAgICBmb3IgKHZhciBfbiA9IDA7IF9uIDwgY2x1c3Rlci5sZW5ndGg7IF9uKyspIHtcbiAgICAgICAgY3VyQ29zdCA9IGZpbmRDb3N0KGNsdXN0ZXJbX25dLCBjbHVzdGVyLCBvcHRzLmF0dHJpYnV0ZXMpO1xuXG4gICAgICAgIGlmIChjdXJDb3N0IDwgbWluQ29zdHNbbV0pIHtcbiAgICAgICAgICBtaW5Db3N0c1ttXSA9IGN1ckNvc3Q7XG4gICAgICAgICAgbWVkb2lkc1ttXSA9IGNsdXN0ZXJbX25dO1xuICAgICAgICAgIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNsdXN0ZXJzW21dID0gY3kuY29sbGVjdGlvbihjbHVzdGVyKTtcbiAgICB9XG5cbiAgICBpdGVyYXRpb25zKys7XG4gIH1cblxuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIgdXBkYXRlQ2VudHJvaWRzID0gZnVuY3Rpb24gdXBkYXRlQ2VudHJvaWRzKGNlbnRyb2lkcywgbm9kZXMsIFUsIHdlaWdodCwgb3B0cykge1xuICB2YXIgbnVtZXJhdG9yLCBkZW5vbWluYXRvcjtcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjZW50cm9pZHMubGVuZ3RoOyBjKyspIHtcbiAgICAgIHdlaWdodFtuXVtjXSA9IE1hdGgucG93KFVbbl1bY10sIG9wdHMubSk7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgX2MgPSAwOyBfYyA8IGNlbnRyb2lkcy5sZW5ndGg7IF9jKyspIHtcbiAgICBmb3IgKHZhciBkaW0gPSAwOyBkaW0gPCBvcHRzLmF0dHJpYnV0ZXMubGVuZ3RoOyBkaW0rKykge1xuICAgICAgbnVtZXJhdG9yID0gMDtcbiAgICAgIGRlbm9taW5hdG9yID0gMDtcblxuICAgICAgZm9yICh2YXIgX24yID0gMDsgX24yIDwgbm9kZXMubGVuZ3RoOyBfbjIrKykge1xuICAgICAgICBudW1lcmF0b3IgKz0gd2VpZ2h0W19uMl1bX2NdICogb3B0cy5hdHRyaWJ1dGVzW2RpbV0obm9kZXNbX24yXSk7XG4gICAgICAgIGRlbm9taW5hdG9yICs9IHdlaWdodFtfbjJdW19jXTtcbiAgICAgIH1cblxuICAgICAgY2VudHJvaWRzW19jXVtkaW1dID0gbnVtZXJhdG9yIC8gZGVub21pbmF0b3I7XG4gICAgfVxuICB9XG59O1xuXG52YXIgdXBkYXRlTWVtYmVyc2hpcCA9IGZ1bmN0aW9uIHVwZGF0ZU1lbWJlcnNoaXAoVSwgX1UsIGNlbnRyb2lkcywgbm9kZXMsIG9wdHMpIHtcbiAgLy8gU2F2ZSBwcmV2aW91cyBzdGVwXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVS5sZW5ndGg7IGkrKykge1xuICAgIF9VW2ldID0gVVtpXS5zbGljZSgpO1xuICB9XG5cbiAgdmFyIHN1bSwgbnVtZXJhdG9yLCBkZW5vbWluYXRvcjtcbiAgdmFyIHBvdyA9IDIgLyAob3B0cy5tIC0gMSk7XG5cbiAgZm9yICh2YXIgYyA9IDA7IGMgPCBjZW50cm9pZHMubGVuZ3RoOyBjKyspIHtcbiAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgICBzdW0gPSAwO1xuXG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IGNlbnRyb2lkcy5sZW5ndGg7IGsrKykge1xuICAgICAgICAvLyBhZ2FpbnN0IGFsbCBvdGhlciBjZW50cm9pZHNcbiAgICAgICAgbnVtZXJhdG9yID0gZ2V0RGlzdChvcHRzLmRpc3RhbmNlLCBub2Rlc1tuXSwgY2VudHJvaWRzW2NdLCBvcHRzLmF0dHJpYnV0ZXMsICdjbWVhbnMnKTtcbiAgICAgICAgZGVub21pbmF0b3IgPSBnZXREaXN0KG9wdHMuZGlzdGFuY2UsIG5vZGVzW25dLCBjZW50cm9pZHNba10sIG9wdHMuYXR0cmlidXRlcywgJ2NtZWFucycpO1xuICAgICAgICBzdW0gKz0gTWF0aC5wb3cobnVtZXJhdG9yIC8gZGVub21pbmF0b3IsIHBvdyk7XG4gICAgICB9XG5cbiAgICAgIFVbbl1bY10gPSAxIC8gc3VtO1xuICAgIH1cbiAgfVxufTtcblxudmFyIGFzc2lnbiQxID0gZnVuY3Rpb24gYXNzaWduKG5vZGVzLCBVLCBvcHRzLCBjeSkge1xuICB2YXIgY2x1c3RlcnMgPSBuZXcgQXJyYXkob3B0cy5rKTtcblxuICBmb3IgKHZhciBjID0gMDsgYyA8IGNsdXN0ZXJzLmxlbmd0aDsgYysrKSB7XG4gICAgY2x1c3RlcnNbY10gPSBbXTtcbiAgfVxuXG4gIHZhciBtYXg7XG4gIHZhciBpbmRleDtcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IFUubGVuZ3RoOyBuKyspIHtcbiAgICAvLyBmb3IgZWFjaCBub2RlIChVIGlzIE4geCBDIG1hdHJpeClcbiAgICBtYXggPSAtSW5maW5pdHk7XG4gICAgaW5kZXggPSAtMTsgLy8gRGV0ZXJtaW5lIHdoaWNoIGNsdXN0ZXIgdGhlIG5vZGUgaXMgbW9zdCBsaWtlbHkgdG8gYmVsb25nIGluXG5cbiAgICBmb3IgKHZhciBfYzIgPSAwOyBfYzIgPCBVWzBdLmxlbmd0aDsgX2MyKyspIHtcbiAgICAgIGlmIChVW25dW19jMl0gPiBtYXgpIHtcbiAgICAgICAgbWF4ID0gVVtuXVtfYzJdO1xuICAgICAgICBpbmRleCA9IF9jMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjbHVzdGVyc1tpbmRleF0ucHVzaChub2Rlc1tuXSk7XG4gIH0gLy8gVHVybiBldmVyeSBhcnJheSBpbnRvIGEgY29sbGVjdGlvbiBvZiBub2Rlc1xuXG5cbiAgZm9yICh2YXIgX2MzID0gMDsgX2MzIDwgY2x1c3RlcnMubGVuZ3RoOyBfYzMrKykge1xuICAgIGNsdXN0ZXJzW19jM10gPSBjeS5jb2xsZWN0aW9uKGNsdXN0ZXJzW19jM10pO1xuICB9XG5cbiAgcmV0dXJuIGNsdXN0ZXJzO1xufTtcblxudmFyIGZ1enp5Q01lYW5zID0gZnVuY3Rpb24gZnV6enlDTWVhbnMob3B0aW9ucykge1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgdmFyIG9wdHMgPSBzZXRPcHRpb25zJDEob3B0aW9ucyk7IC8vIEJlZ2luIGZ1enp5IGMtbWVhbnMgYWxnb3JpdGhtXG5cbiAgdmFyIGNsdXN0ZXJzO1xuICB2YXIgY2VudHJvaWRzO1xuICB2YXIgVTtcblxuICB2YXIgX1U7XG5cbiAgdmFyIHdlaWdodDsgLy8gU3RlcCAxOiBJbml0aWFsaXplIGxldGlhYmxlcy5cblxuICBfVSA9IG5ldyBBcnJheShub2Rlcy5sZW5ndGgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBOIHggQyBtYXRyaXhcbiAgICBfVVtpXSA9IG5ldyBBcnJheShvcHRzLmspO1xuICB9XG5cbiAgVSA9IG5ldyBBcnJheShub2Rlcy5sZW5ndGgpO1xuXG4gIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IG5vZGVzLmxlbmd0aDsgX2kzKyspIHtcbiAgICAvLyBOIHggQyBtYXRyaXhcbiAgICBVW19pM10gPSBuZXcgQXJyYXkob3B0cy5rKTtcbiAgfVxuXG4gIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG5vZGVzLmxlbmd0aDsgX2k0KyspIHtcbiAgICB2YXIgdG90YWwgPSAwO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBvcHRzLms7IGorKykge1xuICAgICAgVVtfaTRdW2pdID0gTWF0aC5yYW5kb20oKTtcbiAgICAgIHRvdGFsICs9IFVbX2k0XVtqXTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgb3B0cy5rOyBfaisrKSB7XG4gICAgICBVW19pNF1bX2pdID0gVVtfaTRdW19qXSAvIHRvdGFsO1xuICAgIH1cbiAgfVxuXG4gIGNlbnRyb2lkcyA9IG5ldyBBcnJheShvcHRzLmspO1xuXG4gIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IG9wdHMuazsgX2k1KyspIHtcbiAgICBjZW50cm9pZHNbX2k1XSA9IG5ldyBBcnJheShvcHRzLmF0dHJpYnV0ZXMubGVuZ3RoKTtcbiAgfVxuXG4gIHdlaWdodCA9IG5ldyBBcnJheShub2Rlcy5sZW5ndGgpO1xuXG4gIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IG5vZGVzLmxlbmd0aDsgX2k2KyspIHtcbiAgICAvLyBOIHggQyBtYXRyaXhcbiAgICB3ZWlnaHRbX2k2XSA9IG5ldyBBcnJheShvcHRzLmspO1xuICB9IC8vIGVuZCBpbml0IEZDTVxuXG5cbiAgdmFyIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICB2YXIgaXRlcmF0aW9ucyA9IDA7XG5cbiAgd2hpbGUgKGlzU3RpbGxNb3ZpbmcgJiYgaXRlcmF0aW9ucyA8IG9wdHMubWF4SXRlcmF0aW9ucykge1xuICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTsgLy8gU3RlcCAyOiBDYWxjdWxhdGUgdGhlIGNlbnRyb2lkcyBmb3IgZWFjaCBzdGVwLlxuXG4gICAgdXBkYXRlQ2VudHJvaWRzKGNlbnRyb2lkcywgbm9kZXMsIFUsIHdlaWdodCwgb3B0cyk7IC8vIFN0ZXAgMzogVXBkYXRlIHRoZSBwYXJ0aXRpb24gbWF0cml4IFUuXG5cbiAgICB1cGRhdGVNZW1iZXJzaGlwKFUsIF9VLCBjZW50cm9pZHMsIG5vZGVzLCBvcHRzKTsgLy8gU3RlcCA0OiBDaGVjayBmb3IgY29udmVyZ2VuY2UuXG5cbiAgICBpZiAoIWhhdmVNYXRyaWNlc0NvbnZlcmdlZChVLCBfVSwgb3B0cy5zZW5zaXRpdml0eVRocmVzaG9sZCkpIHtcbiAgICAgIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIGl0ZXJhdGlvbnMrKztcbiAgfSAvLyBBc3NpZ24gbm9kZXMgdG8gY2x1c3RlcnMgd2l0aCBoaWdoZXN0IHByb2JhYmlsaXR5LlxuXG5cbiAgY2x1c3RlcnMgPSBhc3NpZ24kMShub2RlcywgVSwgb3B0cywgY3kpO1xuICByZXR1cm4ge1xuICAgIGNsdXN0ZXJzOiBjbHVzdGVycyxcbiAgICBkZWdyZWVPZk1lbWJlcnNoaXA6IFVcbiAgfTtcbn07XG5cbnZhciBrQ2x1c3RlcmluZyA9IHtcbiAga01lYW5zOiBrTWVhbnMsXG4gIGtNZWRvaWRzOiBrTWVkb2lkcyxcbiAgZnV6enlDTWVhbnM6IGZ1enp5Q01lYW5zLFxuICBmY206IGZ1enp5Q01lYW5zXG59O1xuXG4vLyBJbXBsZW1lbnRlZCBieSBab2UgWGkgQHpvZXhpIGZvciBHU09DIDIwMTZcbnZhciBkZWZhdWx0cyQ2ID0gZGVmYXVsdHMoe1xuICBkaXN0YW5jZTogJ2V1Y2xpZGVhbicsXG4gIC8vIGRpc3RhbmNlIG1ldHJpYyB0byBjb21wYXJlIG5vZGVzXG4gIGxpbmthZ2U6ICdtaW4nLFxuICAvLyBsaW5rYWdlIGNyaXRlcmlvbiA6IGhvdyB0byBkZXRlcm1pbmUgdGhlIGRpc3RhbmNlIGJldHdlZW4gY2x1c3RlcnMgb2Ygbm9kZXNcbiAgbW9kZTogJ3RocmVzaG9sZCcsXG4gIC8vIG1vZGU6J3RocmVzaG9sZCcgPT4gY2x1c3RlcnMgbXVzdCBiZSB0aHJlc2hvbGQgZGlzdGFuY2UgYXBhcnRcbiAgdGhyZXNob2xkOiBJbmZpbml0eSxcbiAgLy8gdGhlIGRpc3RhbmNlIHRocmVzaG9sZFxuICAvLyBtb2RlOidkZW5kcm9ncmFtJyA9PiB0aGUgbm9kZXMgYXJlIG9yZ2FuaXNlZCBhcyBsZWF2ZXMgaW4gYSB0cmVlIChzaWJsaW5ncyBhcmUgY2xvc2UpLCBtZXJnaW5nIG1ha2VzIGNsdXN0ZXJzXG4gIGFkZERlbmRyb2dyYW06IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRvIGFkZCB0aGUgZGVuZHJvZ3JhbSB0byB0aGUgZ3JhcGggZm9yIHZpelxuICBkZW5kcm9ncmFtRGVwdGg6IDAsXG4gIC8vIGRlcHRoIGF0IHdoaWNoIGRlbmRyb2dyYW0gYnJhbmNoZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSByZXR1cm5lZCBjbHVzdGVyc1xuICBhdHRyaWJ1dGVzOiBbXSAvLyBhcnJheSBvZiBhdHRyIGZ1bmN0aW9uc1xuXG59KTtcbnZhciBsaW5rYWdlQWxpYXNlcyA9IHtcbiAgJ3NpbmdsZSc6ICdtaW4nLFxuICAnY29tcGxldGUnOiAnbWF4J1xufTtcblxudmFyIHNldE9wdGlvbnMkMiA9IGZ1bmN0aW9uIHNldE9wdGlvbnMob3B0aW9ucykge1xuICB2YXIgb3B0cyA9IGRlZmF1bHRzJDYob3B0aW9ucyk7XG4gIHZhciBwcmVmZXJyZWRBbGlhcyA9IGxpbmthZ2VBbGlhc2VzW29wdHMubGlua2FnZV07XG5cbiAgaWYgKHByZWZlcnJlZEFsaWFzICE9IG51bGwpIHtcbiAgICBvcHRzLmxpbmthZ2UgPSBwcmVmZXJyZWRBbGlhcztcbiAgfVxuXG4gIHJldHVybiBvcHRzO1xufTtcblxudmFyIG1lcmdlQ2xvc2VzdCA9IGZ1bmN0aW9uIG1lcmdlQ2xvc2VzdChjbHVzdGVycywgaW5kZXgsIGRpc3RzLCBtaW5zLCBvcHRzKSB7XG4gIC8vIEZpbmQgdHdvIGNsb3Nlc3QgY2x1c3RlcnMgZnJvbSBjYWNoZWQgbWluc1xuICB2YXIgbWluS2V5ID0gMDtcbiAgdmFyIG1pbiA9IEluZmluaXR5O1xuICB2YXIgZGlzdDtcbiAgdmFyIGF0dHJzID0gb3B0cy5hdHRyaWJ1dGVzO1xuXG4gIHZhciBnZXREaXN0ID0gZnVuY3Rpb24gZ2V0RGlzdChuMSwgbjIpIHtcbiAgICByZXR1cm4gY2x1c3RlcmluZ0Rpc3RhbmNlKG9wdHMuZGlzdGFuY2UsIGF0dHJzLmxlbmd0aCwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyc1tpXShuMSk7XG4gICAgfSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyc1tpXShuMik7XG4gICAgfSwgbjEsIG4yKTtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNsdXN0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGNsdXN0ZXJzW2ldLmtleTtcbiAgICB2YXIgX2Rpc3QgPSBkaXN0c1trZXldW21pbnNba2V5XV07XG5cbiAgICBpZiAoX2Rpc3QgPCBtaW4pIHtcbiAgICAgIG1pbktleSA9IGtleTtcbiAgICAgIG1pbiA9IF9kaXN0O1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLm1vZGUgPT09ICd0aHJlc2hvbGQnICYmIG1pbiA+PSBvcHRzLnRocmVzaG9sZCB8fCBvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJyAmJiBjbHVzdGVycy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgYzEgPSBpbmRleFttaW5LZXldO1xuICB2YXIgYzIgPSBpbmRleFttaW5zW21pbktleV1dO1xuICB2YXIgbWVyZ2VkOyAvLyBNZXJnZSB0d28gY2xvc2VzdCBjbHVzdGVyc1xuXG4gIGlmIChvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJykge1xuICAgIG1lcmdlZCA9IHtcbiAgICAgIGxlZnQ6IGMxLFxuICAgICAgcmlnaHQ6IGMyLFxuICAgICAga2V5OiBjMS5rZXlcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG1lcmdlZCA9IHtcbiAgICAgIHZhbHVlOiBjMS52YWx1ZS5jb25jYXQoYzIudmFsdWUpLFxuICAgICAga2V5OiBjMS5rZXlcbiAgICB9O1xuICB9XG5cbiAgY2x1c3RlcnNbYzEuaW5kZXhdID0gbWVyZ2VkO1xuICBjbHVzdGVycy5zcGxpY2UoYzIuaW5kZXgsIDEpO1xuICBpbmRleFtjMS5rZXldID0gbWVyZ2VkOyAvLyBVcGRhdGUgZGlzdGFuY2VzIHdpdGggbmV3IG1lcmdlZCBjbHVzdGVyXG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGNsdXN0ZXJzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBjdXIgPSBjbHVzdGVyc1tfaV07XG5cbiAgICBpZiAoYzEua2V5ID09PSBjdXIua2V5KSB7XG4gICAgICBkaXN0ID0gSW5maW5pdHk7XG4gICAgfSBlbHNlIGlmIChvcHRzLmxpbmthZ2UgPT09ICdtaW4nKSB7XG4gICAgICBkaXN0ID0gZGlzdHNbYzEua2V5XVtjdXIua2V5XTtcblxuICAgICAgaWYgKGRpc3RzW2MxLmtleV1bY3VyLmtleV0gPiBkaXN0c1tjMi5rZXldW2N1ci5rZXldKSB7XG4gICAgICAgIGRpc3QgPSBkaXN0c1tjMi5rZXldW2N1ci5rZXldO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAob3B0cy5saW5rYWdlID09PSAnbWF4Jykge1xuICAgICAgZGlzdCA9IGRpc3RzW2MxLmtleV1bY3VyLmtleV07XG5cbiAgICAgIGlmIChkaXN0c1tjMS5rZXldW2N1ci5rZXldIDwgZGlzdHNbYzIua2V5XVtjdXIua2V5XSkge1xuICAgICAgICBkaXN0ID0gZGlzdHNbYzIua2V5XVtjdXIua2V5XTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9wdHMubGlua2FnZSA9PT0gJ21lYW4nKSB7XG4gICAgICBkaXN0ID0gKGRpc3RzW2MxLmtleV1bY3VyLmtleV0gKiBjMS5zaXplICsgZGlzdHNbYzIua2V5XVtjdXIua2V5XSAqIGMyLnNpemUpIC8gKGMxLnNpemUgKyBjMi5zaXplKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wdHMubW9kZSA9PT0gJ2RlbmRyb2dyYW0nKSBkaXN0ID0gZ2V0RGlzdChjdXIudmFsdWUsIGMxLnZhbHVlKTtlbHNlIGRpc3QgPSBnZXREaXN0KGN1ci52YWx1ZVswXSwgYzEudmFsdWVbMF0pO1xuICAgIH1cblxuICAgIGRpc3RzW2MxLmtleV1bY3VyLmtleV0gPSBkaXN0c1tjdXIua2V5XVtjMS5rZXldID0gZGlzdDsgLy8gZGlzdGFuY2UgbWF0cml4IGlzIHN5bW1ldHJpY1xuICB9IC8vIFVwZGF0ZSBjYWNoZWQgbWluc1xuXG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgY2x1c3RlcnMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBrZXkxID0gY2x1c3RlcnNbX2kyXS5rZXk7XG5cbiAgICBpZiAobWluc1trZXkxXSA9PT0gYzEua2V5IHx8IG1pbnNba2V5MV0gPT09IGMyLmtleSkge1xuICAgICAgdmFyIF9taW4gPSBrZXkxO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNsdXN0ZXJzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBrZXkyID0gY2x1c3RlcnNbal0ua2V5O1xuXG4gICAgICAgIGlmIChkaXN0c1trZXkxXVtrZXkyXSA8IGRpc3RzW2tleTFdW19taW5dKSB7XG4gICAgICAgICAgX21pbiA9IGtleTI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWluc1trZXkxXSA9IF9taW47XG4gICAgfVxuXG4gICAgY2x1c3RlcnNbX2kyXS5pbmRleCA9IF9pMjtcbiAgfSAvLyBDbGVhbiB1cCBtZXRhIGRhdGEgdXNlZCBmb3IgY2x1c3RlcmluZ1xuXG5cbiAgYzEua2V5ID0gYzIua2V5ID0gYzEuaW5kZXggPSBjMi5pbmRleCA9IG51bGw7XG4gIHJldHVybiB0cnVlO1xufTtcblxudmFyIGdldEFsbENoaWxkcmVuID0gZnVuY3Rpb24gZ2V0QWxsQ2hpbGRyZW4ocm9vdCwgYXJyLCBjeSkge1xuICBpZiAoIXJvb3QpIHJldHVybjtcblxuICBpZiAocm9vdC52YWx1ZSkge1xuICAgIGFyci5wdXNoKHJvb3QudmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIGlmIChyb290LmxlZnQpIGdldEFsbENoaWxkcmVuKHJvb3QubGVmdCwgYXJyKTtcbiAgICBpZiAocm9vdC5yaWdodCkgZ2V0QWxsQ2hpbGRyZW4ocm9vdC5yaWdodCwgYXJyKTtcbiAgfVxufTtcblxudmFyIGJ1aWxkRGVuZHJvZ3JhbSA9IGZ1bmN0aW9uIGJ1aWxkRGVuZHJvZ3JhbShyb290LCBjeSkge1xuICBpZiAoIXJvb3QpIHJldHVybiAnJztcblxuICBpZiAocm9vdC5sZWZ0ICYmIHJvb3QucmlnaHQpIHtcbiAgICB2YXIgbGVmdFN0ciA9IGJ1aWxkRGVuZHJvZ3JhbShyb290LmxlZnQsIGN5KTtcbiAgICB2YXIgcmlnaHRTdHIgPSBidWlsZERlbmRyb2dyYW0ocm9vdC5yaWdodCwgY3kpO1xuICAgIHZhciBub2RlID0gY3kuYWRkKHtcbiAgICAgIGdyb3VwOiAnbm9kZXMnLFxuICAgICAgZGF0YToge1xuICAgICAgICBpZDogbGVmdFN0ciArICcsJyArIHJpZ2h0U3RyXG4gICAgICB9XG4gICAgfSk7XG4gICAgY3kuYWRkKHtcbiAgICAgIGdyb3VwOiAnZWRnZXMnLFxuICAgICAgZGF0YToge1xuICAgICAgICBzb3VyY2U6IGxlZnRTdHIsXG4gICAgICAgIHRhcmdldDogbm9kZS5pZCgpXG4gICAgICB9XG4gICAgfSk7XG4gICAgY3kuYWRkKHtcbiAgICAgIGdyb3VwOiAnZWRnZXMnLFxuICAgICAgZGF0YToge1xuICAgICAgICBzb3VyY2U6IHJpZ2h0U3RyLFxuICAgICAgICB0YXJnZXQ6IG5vZGUuaWQoKVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBub2RlLmlkKCk7XG4gIH0gZWxzZSBpZiAocm9vdC52YWx1ZSkge1xuICAgIHJldHVybiByb290LnZhbHVlLmlkKCk7XG4gIH1cbn07XG5cbnZhciBidWlsZENsdXN0ZXJzRnJvbVRyZWUgPSBmdW5jdGlvbiBidWlsZENsdXN0ZXJzRnJvbVRyZWUocm9vdCwgaywgY3kpIHtcbiAgaWYgKCFyb290KSByZXR1cm4gW107XG4gIHZhciBsZWZ0ID0gW10sXG4gICAgICByaWdodCA9IFtdLFxuICAgICAgbGVhdmVzID0gW107XG5cbiAgaWYgKGsgPT09IDApIHtcbiAgICAvLyBkb24ndCBjdXQgdHJlZSwgc2ltcGx5IHJldHVybiBhbGwgbm9kZXMgYXMgMSBzaW5nbGUgY2x1c3RlclxuICAgIGlmIChyb290LmxlZnQpIGdldEFsbENoaWxkcmVuKHJvb3QubGVmdCwgbGVmdCk7XG4gICAgaWYgKHJvb3QucmlnaHQpIGdldEFsbENoaWxkcmVuKHJvb3QucmlnaHQsIHJpZ2h0KTtcbiAgICBsZWF2ZXMgPSBsZWZ0LmNvbmNhdChyaWdodCk7XG4gICAgcmV0dXJuIFtjeS5jb2xsZWN0aW9uKGxlYXZlcyldO1xuICB9IGVsc2UgaWYgKGsgPT09IDEpIHtcbiAgICAvLyBjdXQgYXQgcm9vdFxuICAgIGlmIChyb290LnZhbHVlKSB7XG4gICAgICAvLyBsZWFmIG5vZGVcbiAgICAgIHJldHVybiBbY3kuY29sbGVjdGlvbihyb290LnZhbHVlKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyb290LmxlZnQpIGdldEFsbENoaWxkcmVuKHJvb3QubGVmdCwgbGVmdCk7XG4gICAgICBpZiAocm9vdC5yaWdodCkgZ2V0QWxsQ2hpbGRyZW4ocm9vdC5yaWdodCwgcmlnaHQpO1xuICAgICAgcmV0dXJuIFtjeS5jb2xsZWN0aW9uKGxlZnQpLCBjeS5jb2xsZWN0aW9uKHJpZ2h0KV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChyb290LnZhbHVlKSB7XG4gICAgICByZXR1cm4gW2N5LmNvbGxlY3Rpb24ocm9vdC52YWx1ZSldO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocm9vdC5sZWZ0KSBsZWZ0ID0gYnVpbGRDbHVzdGVyc0Zyb21UcmVlKHJvb3QubGVmdCwgayAtIDEsIGN5KTtcbiAgICAgIGlmIChyb290LnJpZ2h0KSByaWdodCA9IGJ1aWxkQ2x1c3RlcnNGcm9tVHJlZShyb290LnJpZ2h0LCBrIC0gMSwgY3kpO1xuICAgICAgcmV0dXJuIGxlZnQuY29uY2F0KHJpZ2h0KTtcbiAgICB9XG4gIH1cbn07XG4vKiBlc2xpbnQtZW5hYmxlICovXG5cblxudmFyIGhpZXJhcmNoaWNhbENsdXN0ZXJpbmcgPSBmdW5jdGlvbiBoaWVyYXJjaGljYWxDbHVzdGVyaW5nKG9wdGlvbnMpIHtcbiAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7IC8vIFNldCBwYXJhbWV0ZXJzIG9mIGFsZ29yaXRobTogbGlua2FnZSB0eXBlLCBkaXN0YW5jZSBtZXRyaWMsIGV0Yy5cblxuICB2YXIgb3B0cyA9IHNldE9wdGlvbnMkMihvcHRpb25zKTtcbiAgdmFyIGF0dHJzID0gb3B0cy5hdHRyaWJ1dGVzO1xuXG4gIHZhciBnZXREaXN0ID0gZnVuY3Rpb24gZ2V0RGlzdChuMSwgbjIpIHtcbiAgICByZXR1cm4gY2x1c3RlcmluZ0Rpc3RhbmNlKG9wdHMuZGlzdGFuY2UsIGF0dHJzLmxlbmd0aCwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyc1tpXShuMSk7XG4gICAgfSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyc1tpXShuMik7XG4gICAgfSwgbjEsIG4yKTtcbiAgfTsgLy8gQmVnaW4gaGllcmFyY2hpY2FsIGFsZ29yaXRobVxuXG5cbiAgdmFyIGNsdXN0ZXJzID0gW107XG4gIHZhciBkaXN0cyA9IFtdOyAvLyBkaXN0YW5jZXMgYmV0d2VlbiBlYWNoIHBhaXIgb2YgY2x1c3RlcnNcblxuICB2YXIgbWlucyA9IFtdOyAvLyBjbG9zZXN0IGNsdXN0ZXIgZm9yIGVhY2ggY2x1c3RlclxuXG4gIHZhciBpbmRleCA9IFtdOyAvLyBoYXNoIG9mIGFsbCBjbHVzdGVycyBieSBrZXlcbiAgLy8gSW4gYWdnbG9tZXJhdGl2ZSAoYm90dG9tLXVwKSBjbHVzdGVyaW5nLCBlYWNoIG5vZGUgc3RhcnRzIGFzIGl0cyBvd24gY2x1c3RlclxuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICB2YXIgY2x1c3RlciA9IHtcbiAgICAgIHZhbHVlOiBvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJyA/IG5vZGVzW25dIDogW25vZGVzW25dXSxcbiAgICAgIGtleTogbixcbiAgICAgIGluZGV4OiBuXG4gICAgfTtcbiAgICBjbHVzdGVyc1tuXSA9IGNsdXN0ZXI7XG4gICAgaW5kZXhbbl0gPSBjbHVzdGVyO1xuICAgIGRpc3RzW25dID0gW107XG4gICAgbWluc1tuXSA9IDA7XG4gIH0gLy8gQ2FsY3VsYXRlIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIGVhY2ggcGFpciBvZiBjbHVzdGVyc1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbHVzdGVycy5sZW5ndGg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IGk7IGorKykge1xuICAgICAgdmFyIGRpc3QgPSB2b2lkIDA7XG5cbiAgICAgIGlmIChvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJykge1xuICAgICAgICAvLyBtb2RlcyBzdG9yZSBjbHVzdGVyIHZhbHVlcyBkaWZmZXJlbnRseVxuICAgICAgICBkaXN0ID0gaSA9PT0gaiA/IEluZmluaXR5IDogZ2V0RGlzdChjbHVzdGVyc1tpXS52YWx1ZSwgY2x1c3RlcnNbal0udmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdCA9IGkgPT09IGogPyBJbmZpbml0eSA6IGdldERpc3QoY2x1c3RlcnNbaV0udmFsdWVbMF0sIGNsdXN0ZXJzW2pdLnZhbHVlWzBdKTtcbiAgICAgIH1cblxuICAgICAgZGlzdHNbaV1bal0gPSBkaXN0O1xuICAgICAgZGlzdHNbal1baV0gPSBkaXN0O1xuXG4gICAgICBpZiAoZGlzdCA8IGRpc3RzW2ldW21pbnNbaV1dKSB7XG4gICAgICAgIG1pbnNbaV0gPSBqOyAvLyBDYWNoZSBtaW5zOiBjbG9zZXN0IGNsdXN0ZXIgdG8gY2x1c3RlciBpIGlzIGNsdXN0ZXIgalxuICAgICAgfVxuICAgIH1cbiAgfSAvLyBGaW5kIHRoZSBjbG9zZXN0IHBhaXIgb2YgY2x1c3RlcnMgYW5kIG1lcmdlIHRoZW0gaW50byBhIHNpbmdsZSBjbHVzdGVyLlxuICAvLyBVcGRhdGUgZGlzdGFuY2VzIGJldHdlZW4gbmV3IGNsdXN0ZXIgYW5kIGVhY2ggb2YgdGhlIG9sZCBjbHVzdGVycywgYW5kIGxvb3AgdW50aWwgdGhyZXNob2xkIHJlYWNoZWQuXG5cblxuICB2YXIgbWVyZ2VkID0gbWVyZ2VDbG9zZXN0KGNsdXN0ZXJzLCBpbmRleCwgZGlzdHMsIG1pbnMsIG9wdHMpO1xuXG4gIHdoaWxlIChtZXJnZWQpIHtcbiAgICBtZXJnZWQgPSBtZXJnZUNsb3Nlc3QoY2x1c3RlcnMsIGluZGV4LCBkaXN0cywgbWlucywgb3B0cyk7XG4gIH1cblxuICB2YXIgcmV0Q2x1c3RlcnM7IC8vIERlbmRyb2dyYW0gbW9kZSBidWlsZHMgdGhlIGhpZXJhcmNoeSBhbmQgYWRkcyBpbnRlcm1lZGlhcnkgbm9kZXMgKyBlZGdlc1xuICAvLyBpbiBhZGRpdGlvbiB0byByZXR1cm5pbmcgdGhlIGNsdXN0ZXJzLlxuXG4gIGlmIChvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJykge1xuICAgIHJldENsdXN0ZXJzID0gYnVpbGRDbHVzdGVyc0Zyb21UcmVlKGNsdXN0ZXJzWzBdLCBvcHRzLmRlbmRyb2dyYW1EZXB0aCwgY3kpO1xuICAgIGlmIChvcHRzLmFkZERlbmRyb2dyYW0pIGJ1aWxkRGVuZHJvZ3JhbShjbHVzdGVyc1swXSwgY3kpO1xuICB9IGVsc2Uge1xuICAgIC8vIFJlZ3VsYXIgbW9kZSBzaW1wbHkgcmV0dXJucyB0aGUgY2x1c3RlcnNcbiAgICByZXRDbHVzdGVycyA9IG5ldyBBcnJheShjbHVzdGVycy5sZW5ndGgpO1xuICAgIGNsdXN0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXIsIGkpIHtcbiAgICAgIC8vIENsZWFuIHVwIG1ldGEgZGF0YSB1c2VkIGZvciBjbHVzdGVyaW5nXG4gICAgICBjbHVzdGVyLmtleSA9IGNsdXN0ZXIuaW5kZXggPSBudWxsO1xuICAgICAgcmV0Q2x1c3RlcnNbaV0gPSBjeS5jb2xsZWN0aW9uKGNsdXN0ZXIudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJldENsdXN0ZXJzO1xufTtcblxudmFyIGhpZXJhcmNoaWNhbENsdXN0ZXJpbmckMSA9IHtcbiAgaGllcmFyY2hpY2FsQ2x1c3RlcmluZzogaGllcmFyY2hpY2FsQ2x1c3RlcmluZyxcbiAgaGNhOiBoaWVyYXJjaGljYWxDbHVzdGVyaW5nXG59O1xuXG4vLyBJbXBsZW1lbnRlZCBieSBab2UgWGkgQHpvZXhpIGZvciBHU09DIDIwMTZcbnZhciBkZWZhdWx0cyQ3ID0gZGVmYXVsdHMoe1xuICBkaXN0YW5jZTogJ2V1Y2xpZGVhbicsXG4gIC8vIGRpc3RhbmNlIG1ldHJpYyB0byBjb21wYXJlIGF0dHJpYnV0ZXMgYmV0d2VlbiB0d28gbm9kZXNcbiAgcHJlZmVyZW5jZTogJ21lZGlhbicsXG4gIC8vIHN1aXRhYmlsaXR5IG9mIGEgZGF0YSBwb2ludCB0byBzZXJ2ZSBhcyBhbiBleGVtcGxhclxuICBkYW1waW5nOiAwLjgsXG4gIC8vIGRhbXBpbmcgZmFjdG9yIGJldHdlZW4gWzAuNSwgMSlcbiAgbWF4SXRlcmF0aW9uczogMTAwMCxcbiAgLy8gbWF4IG51bWJlciBvZiBpdGVyYXRpb25zIHRvIHJ1blxuICBtaW5JdGVyYXRpb25zOiAxMDAsXG4gIC8vIG1pbiBudW1iZXIgb2YgaXRlcmF0aW9ucyB0byBydW4gaW4gb3JkZXIgZm9yIGNsdXN0ZXJpbmcgdG8gc3RvcFxuICBhdHRyaWJ1dGVzOiBbLy8gZnVuY3Rpb25zIHRvIHF1YW50aWZ5IHRoZSBzaW1pbGFyaXR5IGJldHdlZW4gYW55IHR3byBwb2ludHNcbiAgICAvLyBlLmcuIG5vZGUgPT4gbm9kZS5kYXRhKCd3ZWlnaHQnKVxuICBdXG59KTtcblxudmFyIHNldE9wdGlvbnMkMyA9IGZ1bmN0aW9uIHNldE9wdGlvbnMob3B0aW9ucykge1xuICB2YXIgZG1wID0gb3B0aW9ucy5kYW1waW5nO1xuICB2YXIgcHJlZiA9IG9wdGlvbnMucHJlZmVyZW5jZTtcblxuICBpZiAoISgwLjUgPD0gZG1wICYmIGRtcCA8IDEpKSB7XG4gICAgZXJyb3IoXCJEYW1waW5nIG11c3QgcmFuZ2Ugb24gWzAuNSwgMSkuICBHb3Q6IFwiLmNvbmNhdChkbXApKTtcbiAgfVxuXG4gIHZhciB2YWxpZFByZWZzID0gWydtZWRpYW4nLCAnbWVhbicsICdtaW4nLCAnbWF4J107XG5cbiAgaWYgKCEodmFsaWRQcmVmcy5zb21lKGZ1bmN0aW9uICh2KSB7XG4gICAgcmV0dXJuIHYgPT09IHByZWY7XG4gIH0pIHx8IG51bWJlcihwcmVmKSkpIHtcbiAgICBlcnJvcihcIlByZWZlcmVuY2UgbXVzdCBiZSBvbmUgb2YgW1wiLmNvbmNhdCh2YWxpZFByZWZzLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIFwiJ1wiLmNvbmNhdChwLCBcIidcIik7XG4gICAgfSkuam9pbignLCAnKSwgXCJdIG9yIGEgbnVtYmVyLiAgR290OiBcIikuY29uY2F0KHByZWYpKTtcbiAgfVxuXG4gIHJldHVybiBkZWZhdWx0cyQ3KG9wdGlvbnMpO1xufTtcbi8qIGVzbGludC1lbmFibGUgKi9cblxuXG52YXIgZ2V0U2ltaWxhcml0eSQxID0gZnVuY3Rpb24gZ2V0U2ltaWxhcml0eSh0eXBlLCBuMSwgbjIsIGF0dHJpYnV0ZXMpIHtcbiAgdmFyIGF0dHIgPSBmdW5jdGlvbiBhdHRyKG4sIGkpIHtcbiAgICByZXR1cm4gYXR0cmlidXRlc1tpXShuKTtcbiAgfTsgLy8gbmIgbmVnYXRpdmUgYmVjYXVzZSBzaW1pbGFyaXR5IHNob3VsZCBoYXZlIGFuIGludmVyc2UgcmVsYXRpb25zaGlwIHRvIGRpc3RhbmNlXG5cblxuICByZXR1cm4gLWNsdXN0ZXJpbmdEaXN0YW5jZSh0eXBlLCBhdHRyaWJ1dGVzLmxlbmd0aCwgZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gYXR0cihuMSwgaSk7XG4gIH0sIGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIGF0dHIobjIsIGkpO1xuICB9LCBuMSwgbjIpO1xufTtcblxudmFyIGdldFByZWZlcmVuY2UgPSBmdW5jdGlvbiBnZXRQcmVmZXJlbmNlKFMsIHByZWZlcmVuY2UpIHtcbiAgLy8gbGFyZ2VyIHByZWZlcmVuY2UgPSBncmVhdGVyICMgb2YgY2x1c3RlcnNcbiAgdmFyIHAgPSBudWxsO1xuXG4gIGlmIChwcmVmZXJlbmNlID09PSAnbWVkaWFuJykge1xuICAgIHAgPSBtZWRpYW4oUyk7XG4gIH0gZWxzZSBpZiAocHJlZmVyZW5jZSA9PT0gJ21lYW4nKSB7XG4gICAgcCA9IG1lYW4oUyk7XG4gIH0gZWxzZSBpZiAocHJlZmVyZW5jZSA9PT0gJ21pbicpIHtcbiAgICBwID0gbWluKFMpO1xuICB9IGVsc2UgaWYgKHByZWZlcmVuY2UgPT09ICdtYXgnKSB7XG4gICAgcCA9IG1heChTKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDdXN0b20gcHJlZmVyZW5jZSBudW1iZXIsIGFzIHNldCBieSB1c2VyXG4gICAgcCA9IHByZWZlcmVuY2U7XG4gIH1cblxuICByZXR1cm4gcDtcbn07XG5cbnZhciBmaW5kRXhlbXBsYXJzID0gZnVuY3Rpb24gZmluZEV4ZW1wbGFycyhuLCBSLCBBKSB7XG4gIHZhciBpbmRpY2VzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICBpZiAoUltpICogbiArIGldICsgQVtpICogbiArIGldID4gMCkge1xuICAgICAgaW5kaWNlcy5wdXNoKGkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmRpY2VzO1xufTtcblxudmFyIGFzc2lnbkNsdXN0ZXJzID0gZnVuY3Rpb24gYXNzaWduQ2x1c3RlcnMobiwgUywgZXhlbXBsYXJzKSB7XG4gIHZhciBjbHVzdGVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgdmFyIGluZGV4ID0gLTE7XG4gICAgdmFyIG1heCA9IC1JbmZpbml0eTtcblxuICAgIGZvciAodmFyIGVpID0gMDsgZWkgPCBleGVtcGxhcnMubGVuZ3RoOyBlaSsrKSB7XG4gICAgICB2YXIgZSA9IGV4ZW1wbGFyc1tlaV07XG5cbiAgICAgIGlmIChTW2kgKiBuICsgZV0gPiBtYXgpIHtcbiAgICAgICAgaW5kZXggPSBlO1xuICAgICAgICBtYXggPSBTW2kgKiBuICsgZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgY2x1c3RlcnMucHVzaChpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgX2VpID0gMDsgX2VpIDwgZXhlbXBsYXJzLmxlbmd0aDsgX2VpKyspIHtcbiAgICBjbHVzdGVyc1tleGVtcGxhcnNbX2VpXV0gPSBleGVtcGxhcnNbX2VpXTtcbiAgfVxuXG4gIHJldHVybiBjbHVzdGVycztcbn07XG5cbnZhciBhc3NpZ24kMiA9IGZ1bmN0aW9uIGFzc2lnbihuLCBTLCBleGVtcGxhcnMpIHtcbiAgdmFyIGNsdXN0ZXJzID0gYXNzaWduQ2x1c3RlcnMobiwgUywgZXhlbXBsYXJzKTtcblxuICBmb3IgKHZhciBlaSA9IDA7IGVpIDwgZXhlbXBsYXJzLmxlbmd0aDsgZWkrKykge1xuICAgIHZhciBpaSA9IFtdO1xuXG4gICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjbHVzdGVycy5sZW5ndGg7IGMrKykge1xuICAgICAgaWYgKGNsdXN0ZXJzW2NdID09PSBleGVtcGxhcnNbZWldKSB7XG4gICAgICAgIGlpLnB1c2goYyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG1heEkgPSAtMTtcbiAgICB2YXIgbWF4U3VtID0gLUluZmluaXR5O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpaS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHN1bSA9IDA7XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaWkubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgc3VtICs9IFNbaWlbal0gKiBuICsgaWlbaV1dO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3VtID4gbWF4U3VtKSB7XG4gICAgICAgIG1heEkgPSBpO1xuICAgICAgICBtYXhTdW0gPSBzdW07XG4gICAgICB9XG4gICAgfVxuXG4gICAgZXhlbXBsYXJzW2VpXSA9IGlpW21heEldO1xuICB9XG5cbiAgY2x1c3RlcnMgPSBhc3NpZ25DbHVzdGVycyhuLCBTLCBleGVtcGxhcnMpO1xuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIgYWZmaW5pdHlQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uIGFmZmluaXR5UHJvcGFnYXRpb24ob3B0aW9ucykge1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgdmFyIG9wdHMgPSBzZXRPcHRpb25zJDMob3B0aW9ucyk7IC8vIE1hcCBlYWNoIG5vZGUgdG8gaXRzIHBvc2l0aW9uIGluIG5vZGUgYXJyYXlcblxuICB2YXIgaWQycG9zaXRpb24gPSB7fTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWQycG9zaXRpb25bbm9kZXNbaV0uaWQoKV0gPSBpO1xuICB9IC8vIEJlZ2luIGFmZmluaXR5IHByb3BhZ2F0aW9uIGFsZ29yaXRobVxuXG5cbiAgdmFyIG47IC8vIG51bWJlciBvZiBkYXRhIHBvaW50c1xuXG4gIHZhciBuMjsgLy8gc2l6ZSBvZiBtYXRyaWNlc1xuXG4gIHZhciBTOyAvLyBzaW1pbGFyaXR5IG1hdHJpeCAoMUQgYXJyYXkpXG5cbiAgdmFyIHA7IC8vIHByZWZlcmVuY2Uvc3VpdGFiaWxpdHkgb2YgYSBkYXRhIHBvaW50IHRvIHNlcnZlIGFzIGFuIGV4ZW1wbGFyXG5cbiAgdmFyIFI7IC8vIHJlc3BvbnNpYmlsaXR5IG1hdHJpeCAoMUQgYXJyYXkpXG5cbiAgdmFyIEE7IC8vIGF2YWlsYWJpbGl0eSBtYXRyaXggKDFEIGFycmF5KVxuXG4gIG4gPSBub2Rlcy5sZW5ndGg7XG4gIG4yID0gbiAqIG47IC8vIEluaXRpYWxpemUgYW5kIGJ1aWxkIFMgc2ltaWxhcml0eSBtYXRyaXhcblxuICBTID0gbmV3IEFycmF5KG4yKTtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbjI7IF9pKyspIHtcbiAgICBTW19pXSA9IC1JbmZpbml0eTsgLy8gZm9yIGNhc2VzIHdoZXJlIHR3byBkYXRhIHBvaW50cyBzaG91bGRuJ3QgYmUgbGlua2VkIHRvZ2V0aGVyXG4gIH1cblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBuOyBfaTIrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICBpZiAoX2kyICE9PSBqKSB7XG4gICAgICAgIFNbX2kyICogbiArIGpdID0gZ2V0U2ltaWxhcml0eSQxKG9wdHMuZGlzdGFuY2UsIG5vZGVzW19pMl0sIG5vZGVzW2pdLCBvcHRzLmF0dHJpYnV0ZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBQbGFjZSBwcmVmZXJlbmNlcyBvbiB0aGUgZGlhZ29uYWwgb2YgU1xuXG5cbiAgcCA9IGdldFByZWZlcmVuY2UoUywgb3B0cy5wcmVmZXJlbmNlKTtcblxuICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBuOyBfaTMrKykge1xuICAgIFNbX2kzICogbiArIF9pM10gPSBwO1xuICB9IC8vIEluaXRpYWxpemUgUiByZXNwb25zaWJpbGl0eSBtYXRyaXhcblxuXG4gIFIgPSBuZXcgQXJyYXkobjIpO1xuXG4gIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG4yOyBfaTQrKykge1xuICAgIFJbX2k0XSA9IDAuMDtcbiAgfSAvLyBJbml0aWFsaXplIEEgYXZhaWxhYmlsaXR5IG1hdHJpeFxuXG5cbiAgQSA9IG5ldyBBcnJheShuMik7XG5cbiAgZm9yICh2YXIgX2k1ID0gMDsgX2k1IDwgbjI7IF9pNSsrKSB7XG4gICAgQVtfaTVdID0gMC4wO1xuICB9XG5cbiAgdmFyIG9sZCA9IG5ldyBBcnJheShuKTtcbiAgdmFyIFJwID0gbmV3IEFycmF5KG4pO1xuICB2YXIgc2UgPSBuZXcgQXJyYXkobik7XG5cbiAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgbjsgX2k2KyspIHtcbiAgICBvbGRbX2k2XSA9IDAuMDtcbiAgICBScFtfaTZdID0gMC4wO1xuICAgIHNlW19pNl0gPSAwO1xuICB9XG5cbiAgdmFyIGUgPSBuZXcgQXJyYXkobiAqIG9wdHMubWluSXRlcmF0aW9ucyk7XG5cbiAgZm9yICh2YXIgX2k3ID0gMDsgX2k3IDwgZS5sZW5ndGg7IF9pNysrKSB7XG4gICAgZVtfaTddID0gMDtcbiAgfVxuXG4gIHZhciBpdGVyO1xuXG4gIGZvciAoaXRlciA9IDA7IGl0ZXIgPCBvcHRzLm1heEl0ZXJhdGlvbnM7IGl0ZXIrKykge1xuICAgIC8vIG1haW4gYWxnb3JpdGhtaWMgbG9vcFxuICAgIC8vIFVwZGF0ZSBSIHJlc3BvbnNpYmlsaXR5IG1hdHJpeFxuICAgIGZvciAodmFyIF9pOCA9IDA7IF9pOCA8IG47IF9pOCsrKSB7XG4gICAgICB2YXIgbWF4ID0gLUluZmluaXR5LFxuICAgICAgICAgIG1heDIgPSAtSW5maW5pdHksXG4gICAgICAgICAgbWF4SSA9IC0xLFxuICAgICAgICAgIEFTID0gMC4wO1xuXG4gICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgbjsgX2orKykge1xuICAgICAgICBvbGRbX2pdID0gUltfaTggKiBuICsgX2pdO1xuICAgICAgICBBUyA9IEFbX2k4ICogbiArIF9qXSArIFNbX2k4ICogbiArIF9qXTtcblxuICAgICAgICBpZiAoQVMgPj0gbWF4KSB7XG4gICAgICAgICAgbWF4MiA9IG1heDtcbiAgICAgICAgICBtYXggPSBBUztcbiAgICAgICAgICBtYXhJID0gX2o7XG4gICAgICAgIH0gZWxzZSBpZiAoQVMgPiBtYXgyKSB7XG4gICAgICAgICAgbWF4MiA9IEFTO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIF9qMiA9IDA7IF9qMiA8IG47IF9qMisrKSB7XG4gICAgICAgIFJbX2k4ICogbiArIF9qMl0gPSAoMSAtIG9wdHMuZGFtcGluZykgKiAoU1tfaTggKiBuICsgX2oyXSAtIG1heCkgKyBvcHRzLmRhbXBpbmcgKiBvbGRbX2oyXTtcbiAgICAgIH1cblxuICAgICAgUltfaTggKiBuICsgbWF4SV0gPSAoMSAtIG9wdHMuZGFtcGluZykgKiAoU1tfaTggKiBuICsgbWF4SV0gLSBtYXgyKSArIG9wdHMuZGFtcGluZyAqIG9sZFttYXhJXTtcbiAgICB9IC8vIFVwZGF0ZSBBIGF2YWlsYWJpbGl0eSBtYXRyaXhcblxuXG4gICAgZm9yICh2YXIgX2k5ID0gMDsgX2k5IDwgbjsgX2k5KyspIHtcbiAgICAgIHZhciBzdW0gPSAwO1xuXG4gICAgICBmb3IgKHZhciBfajMgPSAwOyBfajMgPCBuOyBfajMrKykge1xuICAgICAgICBvbGRbX2ozXSA9IEFbX2ozICogbiArIF9pOV07XG4gICAgICAgIFJwW19qM10gPSBNYXRoLm1heCgwLCBSW19qMyAqIG4gKyBfaTldKTtcbiAgICAgICAgc3VtICs9IFJwW19qM107XG4gICAgICB9XG5cbiAgICAgIHN1bSAtPSBScFtfaTldO1xuICAgICAgUnBbX2k5XSA9IFJbX2k5ICogbiArIF9pOV07XG4gICAgICBzdW0gKz0gUnBbX2k5XTtcblxuICAgICAgZm9yICh2YXIgX2o0ID0gMDsgX2o0IDwgbjsgX2o0KyspIHtcbiAgICAgICAgQVtfajQgKiBuICsgX2k5XSA9ICgxIC0gb3B0cy5kYW1waW5nKSAqIE1hdGgubWluKDAsIHN1bSAtIFJwW19qNF0pICsgb3B0cy5kYW1waW5nICogb2xkW19qNF07XG4gICAgICB9XG5cbiAgICAgIEFbX2k5ICogbiArIF9pOV0gPSAoMSAtIG9wdHMuZGFtcGluZykgKiAoc3VtIC0gUnBbX2k5XSkgKyBvcHRzLmRhbXBpbmcgKiBvbGRbX2k5XTtcbiAgICB9IC8vIENoZWNrIGZvciBjb252ZXJnZW5jZVxuXG5cbiAgICB2YXIgSyA9IDA7XG5cbiAgICBmb3IgKHZhciBfaTEwID0gMDsgX2kxMCA8IG47IF9pMTArKykge1xuICAgICAgdmFyIEUgPSBBW19pMTAgKiBuICsgX2kxMF0gKyBSW19pMTAgKiBuICsgX2kxMF0gPiAwID8gMSA6IDA7XG4gICAgICBlW2l0ZXIgJSBvcHRzLm1pbkl0ZXJhdGlvbnMgKiBuICsgX2kxMF0gPSBFO1xuICAgICAgSyArPSBFO1xuICAgIH1cblxuICAgIGlmIChLID4gMCAmJiAoaXRlciA+PSBvcHRzLm1pbkl0ZXJhdGlvbnMgLSAxIHx8IGl0ZXIgPT0gb3B0cy5tYXhJdGVyYXRpb25zIC0gMSkpIHtcbiAgICAgIHZhciBfc3VtID0gMDtcblxuICAgICAgZm9yICh2YXIgX2kxMSA9IDA7IF9pMTEgPCBuOyBfaTExKyspIHtcbiAgICAgICAgc2VbX2kxMV0gPSAwO1xuXG4gICAgICAgIGZvciAodmFyIF9qNSA9IDA7IF9qNSA8IG9wdHMubWluSXRlcmF0aW9uczsgX2o1KyspIHtcbiAgICAgICAgICBzZVtfaTExXSArPSBlW19qNSAqIG4gKyBfaTExXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZVtfaTExXSA9PT0gMCB8fCBzZVtfaTExXSA9PT0gb3B0cy5taW5JdGVyYXRpb25zKSB7XG4gICAgICAgICAgX3N1bSsrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChfc3VtID09PSBuKSB7XG4gICAgICAgIC8vIHRoZW4gd2UgaGF2ZSBjb252ZXJnZW5jZVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gSWRlbnRpZnkgZXhlbXBsYXJzIChjbHVzdGVyIGNlbnRlcnMpXG5cblxuICB2YXIgZXhlbXBsYXJzSW5kaWNlcyA9IGZpbmRFeGVtcGxhcnMobiwgUiwgQSk7IC8vIEFzc2lnbiBub2RlcyB0byBjbHVzdGVyc1xuXG4gIHZhciBjbHVzdGVySW5kaWNlcyA9IGFzc2lnbiQyKG4sIFMsIGV4ZW1wbGFyc0luZGljZXMpO1xuICB2YXIgY2x1c3RlcnMgPSB7fTtcblxuICBmb3IgKHZhciBjID0gMDsgYyA8IGV4ZW1wbGFyc0luZGljZXMubGVuZ3RoOyBjKyspIHtcbiAgICBjbHVzdGVyc1tleGVtcGxhcnNJbmRpY2VzW2NdXSA9IFtdO1xuICB9XG5cbiAgZm9yICh2YXIgX2kxMiA9IDA7IF9pMTIgPCBub2Rlcy5sZW5ndGg7IF9pMTIrKykge1xuICAgIHZhciBwb3MgPSBpZDJwb3NpdGlvbltub2Rlc1tfaTEyXS5pZCgpXTtcblxuICAgIHZhciBjbHVzdGVySW5kZXggPSBjbHVzdGVySW5kaWNlc1twb3NdO1xuXG4gICAgaWYgKGNsdXN0ZXJJbmRleCAhPSBudWxsKSB7XG4gICAgICAvLyB0aGUgbm9kZSBtYXkgaGF2ZSBub3QgYmVlbiBhc3NpZ25lZCBhIGNsdXN0ZXIgaWYgbm8gdmFsaWQgYXR0cmlidXRlcyB3ZXJlIHNwZWNpZmllZFxuICAgICAgY2x1c3RlcnNbY2x1c3RlckluZGV4XS5wdXNoKG5vZGVzW19pMTJdKTtcbiAgICB9XG4gIH1cblxuICB2YXIgcmV0Q2x1c3RlcnMgPSBuZXcgQXJyYXkoZXhlbXBsYXJzSW5kaWNlcy5sZW5ndGgpO1xuXG4gIGZvciAodmFyIF9jID0gMDsgX2MgPCBleGVtcGxhcnNJbmRpY2VzLmxlbmd0aDsgX2MrKykge1xuICAgIHJldENsdXN0ZXJzW19jXSA9IGN5LmNvbGxlY3Rpb24oY2x1c3RlcnNbZXhlbXBsYXJzSW5kaWNlc1tfY11dKTtcbiAgfVxuXG4gIHJldHVybiByZXRDbHVzdGVycztcbn07XG5cbnZhciBhZmZpbml0eVByb3BhZ2F0aW9uJDEgPSB7XG4gIGFmZmluaXR5UHJvcGFnYXRpb246IGFmZmluaXR5UHJvcGFnYXRpb24sXG4gIGFwOiBhZmZpbml0eVByb3BhZ2F0aW9uXG59O1xuXG52YXIgaGllcmhvbHplckRlZmF1bHRzID0gZGVmYXVsdHMoe1xuICByb290OiB1bmRlZmluZWQsXG4gIGRpcmVjdGVkOiBmYWxzZVxufSk7XG52YXIgZWxlc2ZuJGIgPSB7XG4gIGhpZXJob2x6ZXI6IGZ1bmN0aW9uIGhpZXJob2x6ZXIob3B0aW9ucykge1xuICAgIGlmICghcGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgcm9vdDogYXJnc1swXSxcbiAgICAgICAgZGlyZWN0ZWQ6IGFyZ3NbMV1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIF9oaWVyaG9semVyRGVmYXVsdHMgPSBoaWVyaG9semVyRGVmYXVsdHMob3B0aW9ucyksXG4gICAgICAgIHJvb3QgPSBfaGllcmhvbHplckRlZmF1bHRzLnJvb3QsXG4gICAgICAgIGRpcmVjdGVkID0gX2hpZXJob2x6ZXJEZWZhdWx0cy5kaXJlY3RlZDtcblxuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIgZGZsYWcgPSBmYWxzZTtcbiAgICB2YXIgb2RkSW47XG4gICAgdmFyIG9kZE91dDtcbiAgICB2YXIgc3RhcnRWZXJ0ZXg7XG4gICAgaWYgKHJvb3QpIHN0YXJ0VmVydGV4ID0gc3RyaW5nKHJvb3QpID8gdGhpcy5maWx0ZXIocm9vdClbMF0uaWQoKSA6IHJvb3RbMF0uaWQoKTtcbiAgICB2YXIgbm9kZXMgPSB7fTtcbiAgICB2YXIgZWRnZXMgPSB7fTtcblxuICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgZWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgdmFyIGlkID0gZWxlLmlkKCk7XG5cbiAgICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICAgIHZhciBpbmQgPSBlbGUuaW5kZWdyZWUodHJ1ZSk7XG4gICAgICAgICAgdmFyIG91dGQgPSBlbGUub3V0ZGVncmVlKHRydWUpO1xuICAgICAgICAgIHZhciBkMSA9IGluZCAtIG91dGQ7XG4gICAgICAgICAgdmFyIGQyID0gb3V0ZCAtIGluZDtcblxuICAgICAgICAgIGlmIChkMSA9PSAxKSB7XG4gICAgICAgICAgICBpZiAob2RkSW4pIGRmbGFnID0gdHJ1ZTtlbHNlIG9kZEluID0gaWQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChkMiA9PSAxKSB7XG4gICAgICAgICAgICBpZiAob2RkT3V0KSBkZmxhZyA9IHRydWU7ZWxzZSBvZGRPdXQgPSBpZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGQyID4gMSB8fCBkMSA+IDEpIHtcbiAgICAgICAgICAgIGRmbGFnID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBub2Rlc1tpZF0gPSBbXTtcbiAgICAgICAgICBlbGUub3V0Z29lcnMoKS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBpZiAoZS5pc0VkZ2UoKSkgbm9kZXNbaWRdLnB1c2goZS5pZCgpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlZGdlc1tpZF0gPSBbdW5kZWZpbmVkLCBlbGUudGFyZ2V0KCkuaWQoKV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICB2YXIgaWQgPSBlbGUuaWQoKTtcblxuICAgICAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgICAgdmFyIGQgPSBlbGUuZGVncmVlKHRydWUpO1xuXG4gICAgICAgICAgaWYgKGQgJSAyKSB7XG4gICAgICAgICAgICBpZiAoIW9kZEluKSBvZGRJbiA9IGlkO2Vsc2UgaWYgKCFvZGRPdXQpIG9kZE91dCA9IGlkO2Vsc2UgZGZsYWcgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGVzW2lkXSA9IFtdO1xuICAgICAgICAgIGVsZS5jb25uZWN0ZWRFZGdlcygpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBub2Rlc1tpZF0ucHVzaChlLmlkKCkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVkZ2VzW2lkXSA9IFtlbGUuc291cmNlKCkuaWQoKSwgZWxlLnRhcmdldCgpLmlkKCldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgZm91bmQ6IGZhbHNlLFxuICAgICAgdHJhaWw6IHVuZGVmaW5lZFxuICAgIH07XG4gICAgaWYgKGRmbGFnKSByZXR1cm4gcmVzdWx0O2Vsc2UgaWYgKG9kZE91dCAmJiBvZGRJbikge1xuICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgIGlmIChzdGFydFZlcnRleCAmJiBvZGRPdXQgIT0gc3RhcnRWZXJ0ZXgpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnRWZXJ0ZXggPSBvZGRPdXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc3RhcnRWZXJ0ZXggJiYgb2RkT3V0ICE9IHN0YXJ0VmVydGV4ICYmIG9kZEluICE9IHN0YXJ0VmVydGV4KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIGlmICghc3RhcnRWZXJ0ZXgpIHtcbiAgICAgICAgICBzdGFydFZlcnRleCA9IG9kZE91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXN0YXJ0VmVydGV4KSBzdGFydFZlcnRleCA9IGVsZXNbMF0uaWQoKTtcbiAgICB9XG5cbiAgICB2YXIgd2FsayA9IGZ1bmN0aW9uIHdhbGsodikge1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gdjtcbiAgICAgIHZhciBzdWJ0b3VyID0gW3ZdO1xuICAgICAgdmFyIGFkaiwgYWRqVGFpbCwgYWRqSGVhZDtcblxuICAgICAgd2hpbGUgKG5vZGVzW2N1cnJlbnROb2RlXS5sZW5ndGgpIHtcbiAgICAgICAgYWRqID0gbm9kZXNbY3VycmVudE5vZGVdLnNoaWZ0KCk7XG4gICAgICAgIGFkalRhaWwgPSBlZGdlc1thZGpdWzBdO1xuICAgICAgICBhZGpIZWFkID0gZWRnZXNbYWRqXVsxXTtcblxuICAgICAgICBpZiAoY3VycmVudE5vZGUgIT0gYWRqSGVhZCkge1xuICAgICAgICAgIG5vZGVzW2FkakhlYWRdID0gbm9kZXNbYWRqSGVhZF0uZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZSAhPSBhZGo7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY3VycmVudE5vZGUgPSBhZGpIZWFkO1xuICAgICAgICB9IGVsc2UgaWYgKCFkaXJlY3RlZCAmJiBjdXJyZW50Tm9kZSAhPSBhZGpUYWlsKSB7XG4gICAgICAgICAgbm9kZXNbYWRqVGFpbF0gPSBub2Rlc1thZGpUYWlsXS5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBlICE9IGFkajtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjdXJyZW50Tm9kZSA9IGFkalRhaWw7XG4gICAgICAgIH1cblxuICAgICAgICBzdWJ0b3VyLnVuc2hpZnQoYWRqKTtcbiAgICAgICAgc3VidG91ci51bnNoaWZ0KGN1cnJlbnROb2RlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN1YnRvdXI7XG4gICAgfTtcblxuICAgIHZhciB0cmFpbCA9IFtdO1xuICAgIHZhciBzdWJ0b3VyID0gW107XG4gICAgc3VidG91ciA9IHdhbGsoc3RhcnRWZXJ0ZXgpO1xuXG4gICAgd2hpbGUgKHN1YnRvdXIubGVuZ3RoICE9IDEpIHtcbiAgICAgIGlmIChub2Rlc1tzdWJ0b3VyWzBdXS5sZW5ndGggPT0gMCkge1xuICAgICAgICB0cmFpbC51bnNoaWZ0KGVsZXMuZ2V0RWxlbWVudEJ5SWQoc3VidG91ci5zaGlmdCgpKSk7XG4gICAgICAgIHRyYWlsLnVuc2hpZnQoZWxlcy5nZXRFbGVtZW50QnlJZChzdWJ0b3VyLnNoaWZ0KCkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YnRvdXIgPSB3YWxrKHN1YnRvdXIuc2hpZnQoKSkuY29uY2F0KHN1YnRvdXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRyYWlsLnVuc2hpZnQoZWxlcy5nZXRFbGVtZW50QnlJZChzdWJ0b3VyLnNoaWZ0KCkpKTsgLy8gZmluYWwgbm9kZVxuXG4gICAgZm9yICh2YXIgZCBpbiBub2Rlcykge1xuICAgICAgaWYgKG5vZGVzW2RdLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlc3VsdC5mb3VuZCA9IHRydWU7XG4gICAgcmVzdWx0LnRyYWlsID0gdGhpcy5zcGF3bih0cmFpbCwgdHJ1ZSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcblxudmFyIGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQgPSBmdW5jdGlvbiBob3Bjcm9mdFRhcmphbkJpY29ubmVjdGVkKCkge1xuICB2YXIgZWxlcyA9IHRoaXM7XG4gIHZhciBub2RlcyA9IHt9O1xuICB2YXIgaWQgPSAwO1xuICB2YXIgZWRnZUNvdW50ID0gMDtcbiAgdmFyIGNvbXBvbmVudHMgPSBbXTtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciB2aXNpdGVkRWRnZXMgPSB7fTtcblxuICB2YXIgYnVpbGRDb21wb25lbnQgPSBmdW5jdGlvbiBidWlsZENvbXBvbmVudCh4LCB5KSB7XG4gICAgdmFyIGkgPSBzdGFjay5sZW5ndGggLSAxO1xuICAgIHZhciBjdXRzZXQgPSBbXTtcbiAgICB2YXIgY29tcG9uZW50ID0gZWxlcy5zcGF3bigpO1xuXG4gICAgd2hpbGUgKHN0YWNrW2ldLnggIT0geCB8fCBzdGFja1tpXS55ICE9IHkpIHtcbiAgICAgIGN1dHNldC5wdXNoKHN0YWNrLnBvcCgpLmVkZ2UpO1xuICAgICAgaS0tO1xuICAgIH1cblxuICAgIGN1dHNldC5wdXNoKHN0YWNrLnBvcCgpLmVkZ2UpO1xuICAgIGN1dHNldC5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgY29ubmVjdGVkTm9kZXMgPSBlZGdlLmNvbm5lY3RlZE5vZGVzKCkuaW50ZXJzZWN0aW9uKGVsZXMpO1xuICAgICAgY29tcG9uZW50Lm1lcmdlKGVkZ2UpO1xuICAgICAgY29ubmVjdGVkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgbm9kZUlkID0gbm9kZS5pZCgpO1xuICAgICAgICB2YXIgY29ubmVjdGVkRWRnZXMgPSBub2RlLmNvbm5lY3RlZEVkZ2VzKCkuaW50ZXJzZWN0aW9uKGVsZXMpO1xuICAgICAgICBjb21wb25lbnQubWVyZ2Uobm9kZSk7XG5cbiAgICAgICAgaWYgKCFub2Rlc1tub2RlSWRdLmN1dFZlcnRleCkge1xuICAgICAgICAgIGNvbXBvbmVudC5tZXJnZShjb25uZWN0ZWRFZGdlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tcG9uZW50Lm1lcmdlKGNvbm5lY3RlZEVkZ2VzLmZpbHRlcihmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVkZ2UuaXNMb29wKCk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBjb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgfTtcblxuICB2YXIgYmljb25uZWN0ZWRTZWFyY2ggPSBmdW5jdGlvbiBiaWNvbm5lY3RlZFNlYXJjaChyb290LCBjdXJyZW50Tm9kZSwgcGFyZW50KSB7XG4gICAgaWYgKHJvb3QgPT09IHBhcmVudCkgZWRnZUNvdW50ICs9IDE7XG4gICAgbm9kZXNbY3VycmVudE5vZGVdID0ge1xuICAgICAgaWQ6IGlkLFxuICAgICAgbG93OiBpZCsrLFxuICAgICAgY3V0VmVydGV4OiBmYWxzZVxuICAgIH07XG4gICAgdmFyIGVkZ2VzID0gZWxlcy5nZXRFbGVtZW50QnlJZChjdXJyZW50Tm9kZSkuY29ubmVjdGVkRWRnZXMoKS5pbnRlcnNlY3Rpb24oZWxlcyk7XG5cbiAgICBpZiAoZWRnZXMuc2l6ZSgpID09PSAwKSB7XG4gICAgICBjb21wb25lbnRzLnB1c2goZWxlcy5zcGF3bihlbGVzLmdldEVsZW1lbnRCeUlkKGN1cnJlbnROb2RlKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc291cmNlSWQsIHRhcmdldElkLCBvdGhlck5vZGVJZCwgZWRnZUlkO1xuICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICBzb3VyY2VJZCA9IGVkZ2Uuc291cmNlKCkuaWQoKTtcbiAgICAgICAgdGFyZ2V0SWQgPSBlZGdlLnRhcmdldCgpLmlkKCk7XG4gICAgICAgIG90aGVyTm9kZUlkID0gc291cmNlSWQgPT09IGN1cnJlbnROb2RlID8gdGFyZ2V0SWQgOiBzb3VyY2VJZDtcblxuICAgICAgICBpZiAob3RoZXJOb2RlSWQgIT09IHBhcmVudCkge1xuICAgICAgICAgIGVkZ2VJZCA9IGVkZ2UuaWQoKTtcblxuICAgICAgICAgIGlmICghdmlzaXRlZEVkZ2VzW2VkZ2VJZF0pIHtcbiAgICAgICAgICAgIHZpc2l0ZWRFZGdlc1tlZGdlSWRdID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICB4OiBjdXJyZW50Tm9kZSxcbiAgICAgICAgICAgICAgeTogb3RoZXJOb2RlSWQsXG4gICAgICAgICAgICAgIGVkZ2U6IGVkZ2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghKG90aGVyTm9kZUlkIGluIG5vZGVzKSkge1xuICAgICAgICAgICAgYmljb25uZWN0ZWRTZWFyY2gocm9vdCwgb3RoZXJOb2RlSWQsIGN1cnJlbnROb2RlKTtcbiAgICAgICAgICAgIG5vZGVzW2N1cnJlbnROb2RlXS5sb3cgPSBNYXRoLm1pbihub2Rlc1tjdXJyZW50Tm9kZV0ubG93LCBub2Rlc1tvdGhlck5vZGVJZF0ubG93KTtcblxuICAgICAgICAgICAgaWYgKG5vZGVzW2N1cnJlbnROb2RlXS5pZCA8PSBub2Rlc1tvdGhlck5vZGVJZF0ubG93KSB7XG4gICAgICAgICAgICAgIG5vZGVzW2N1cnJlbnROb2RlXS5jdXRWZXJ0ZXggPSB0cnVlO1xuICAgICAgICAgICAgICBidWlsZENvbXBvbmVudChjdXJyZW50Tm9kZSwgb3RoZXJOb2RlSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBub2Rlc1tjdXJyZW50Tm9kZV0ubG93ID0gTWF0aC5taW4obm9kZXNbY3VycmVudE5vZGVdLmxvdywgbm9kZXNbb3RoZXJOb2RlSWRdLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgIHZhciBub2RlSWQgPSBlbGUuaWQoKTtcblxuICAgICAgaWYgKCEobm9kZUlkIGluIG5vZGVzKSkge1xuICAgICAgICBlZGdlQ291bnQgPSAwO1xuICAgICAgICBiaWNvbm5lY3RlZFNlYXJjaChub2RlSWQsIG5vZGVJZCk7XG4gICAgICAgIG5vZGVzW25vZGVJZF0uY3V0VmVydGV4ID0gZWRnZUNvdW50ID4gMTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICB2YXIgY3V0VmVydGljZXMgPSBPYmplY3Qua2V5cyhub2RlcykuZmlsdGVyKGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiBub2Rlc1tpZF0uY3V0VmVydGV4O1xuICB9KS5tYXAoZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIGVsZXMuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBjdXQ6IGVsZXMuc3Bhd24oY3V0VmVydGljZXMpLFxuICAgIGNvbXBvbmVudHM6IGNvbXBvbmVudHNcbiAgfTtcbn07XG5cbnZhciBob3Bjcm9mdFRhcmphbkJpY29ubmVjdGVkJDEgPSB7XG4gIGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQ6IGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQsXG4gIGh0YmM6IGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQsXG4gIGh0YjogaG9wY3JvZnRUYXJqYW5CaWNvbm5lY3RlZCxcbiAgaG9wY3JvZnRUYXJqYW5CaWNvbm5lY3RlZENvbXBvbmVudHM6IGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWRcbn07XG5cbnZhciB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZCA9IGZ1bmN0aW9uIHRhcmphblN0cm9uZ2x5Q29ubmVjdGVkKCkge1xuICB2YXIgZWxlcyA9IHRoaXM7XG4gIHZhciBub2RlcyA9IHt9O1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgY29tcG9uZW50cyA9IFtdO1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGN1dCA9IGVsZXMuc3Bhd24oZWxlcyk7XG5cbiAgdmFyIHN0cm9uZ2x5Q29ubmVjdGVkU2VhcmNoID0gZnVuY3Rpb24gc3Ryb25nbHlDb25uZWN0ZWRTZWFyY2goc291cmNlTm9kZUlkKSB7XG4gICAgc3RhY2sucHVzaChzb3VyY2VOb2RlSWQpO1xuICAgIG5vZGVzW3NvdXJjZU5vZGVJZF0gPSB7XG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICBsb3c6IGluZGV4KyssXG4gICAgICBleHBsb3JlZDogZmFsc2VcbiAgICB9O1xuICAgIHZhciBjb25uZWN0ZWRFZGdlcyA9IGVsZXMuZ2V0RWxlbWVudEJ5SWQoc291cmNlTm9kZUlkKS5jb25uZWN0ZWRFZGdlcygpLmludGVyc2VjdGlvbihlbGVzKTtcbiAgICBjb25uZWN0ZWRFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgdGFyZ2V0Tm9kZUlkID0gZWRnZS50YXJnZXQoKS5pZCgpO1xuXG4gICAgICBpZiAodGFyZ2V0Tm9kZUlkICE9PSBzb3VyY2VOb2RlSWQpIHtcbiAgICAgICAgaWYgKCEodGFyZ2V0Tm9kZUlkIGluIG5vZGVzKSkge1xuICAgICAgICAgIHN0cm9uZ2x5Q29ubmVjdGVkU2VhcmNoKHRhcmdldE5vZGVJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW5vZGVzW3RhcmdldE5vZGVJZF0uZXhwbG9yZWQpIHtcbiAgICAgICAgICBub2Rlc1tzb3VyY2VOb2RlSWRdLmxvdyA9IE1hdGgubWluKG5vZGVzW3NvdXJjZU5vZGVJZF0ubG93LCBub2Rlc1t0YXJnZXROb2RlSWRdLmxvdyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChub2Rlc1tzb3VyY2VOb2RlSWRdLmluZGV4ID09PSBub2Rlc1tzb3VyY2VOb2RlSWRdLmxvdykge1xuICAgICAgdmFyIGNvbXBvbmVudE5vZGVzID0gZWxlcy5zcGF3bigpO1xuXG4gICAgICBmb3IgKDs7KSB7XG4gICAgICAgIHZhciBub2RlSWQgPSBzdGFjay5wb3AoKTtcbiAgICAgICAgY29tcG9uZW50Tm9kZXMubWVyZ2UoZWxlcy5nZXRFbGVtZW50QnlJZChub2RlSWQpKTtcbiAgICAgICAgbm9kZXNbbm9kZUlkXS5sb3cgPSBub2Rlc1tzb3VyY2VOb2RlSWRdLmluZGV4O1xuICAgICAgICBub2Rlc1tub2RlSWRdLmV4cGxvcmVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAobm9kZUlkID09PSBzb3VyY2VOb2RlSWQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgY29tcG9uZW50RWRnZXMgPSBjb21wb25lbnROb2Rlcy5lZGdlc1dpdGgoY29tcG9uZW50Tm9kZXMpO1xuICAgICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudE5vZGVzLm1lcmdlKGNvbXBvbmVudEVkZ2VzKTtcbiAgICAgIGNvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgICAgY3V0ID0gY3V0LmRpZmZlcmVuY2UoY29tcG9uZW50KTtcbiAgICB9XG4gIH07XG5cbiAgZWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICB2YXIgbm9kZUlkID0gZWxlLmlkKCk7XG5cbiAgICAgIGlmICghKG5vZGVJZCBpbiBub2RlcykpIHtcbiAgICAgICAgc3Ryb25nbHlDb25uZWN0ZWRTZWFyY2gobm9kZUlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGN1dDogY3V0LFxuICAgIGNvbXBvbmVudHM6IGNvbXBvbmVudHNcbiAgfTtcbn07XG5cbnZhciB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZCQxID0ge1xuICB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZDogdGFyamFuU3Ryb25nbHlDb25uZWN0ZWQsXG4gIHRzYzogdGFyamFuU3Ryb25nbHlDb25uZWN0ZWQsXG4gIHRzY2M6IHRhcmphblN0cm9uZ2x5Q29ubmVjdGVkLFxuICB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZENvbXBvbmVudHM6IHRhcmphblN0cm9uZ2x5Q29ubmVjdGVkXG59O1xuXG52YXIgZWxlc2ZuJGMgPSB7fTtcbltlbGVzZm4sIGVsZXNmbiQxLCBlbGVzZm4kMiwgZWxlc2ZuJDMsIGVsZXNmbiQ0LCBlbGVzZm4kNSwgZWxlc2ZuJDYsIGVsZXNmbiQ3LCBlbGVzZm4kOCwgZWxlc2ZuJDksIGVsZXNmbiRhLCBtYXJrb3ZDbHVzdGVyaW5nJDEsIGtDbHVzdGVyaW5nLCBoaWVyYXJjaGljYWxDbHVzdGVyaW5nJDEsIGFmZmluaXR5UHJvcGFnYXRpb24kMSwgZWxlc2ZuJGIsIGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQkMSwgdGFyamFuU3Ryb25nbHlDb25uZWN0ZWQkMV0uZm9yRWFjaChmdW5jdGlvbiAocHJvcHMpIHtcbiAgZXh0ZW5kKGVsZXNmbiRjLCBwcm9wcyk7XG59KTtcblxuLyohXG5FbWJlZGRhYmxlIE1pbmltdW0gU3RyaWN0bHktQ29tcGxpYW50IFByb21pc2VzL0ErIDEuMS4xIFRoZW5hYmxlXG5Db3B5cmlnaHQgKGMpIDIwMTMtMjAxNCBSYWxmIFMuIEVuZ2Vsc2NoYWxsIChodHRwOi8vZW5nZWxzY2hhbGwuY29tKVxuTGljZW5zZWQgdW5kZXIgVGhlIE1JVCBMaWNlbnNlIChodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKVxuKi9cblxuLyogIHByb21pc2Ugc3RhdGVzIFtQcm9taXNlcy9BKyAyLjFdICAqL1xudmFyIFNUQVRFX1BFTkRJTkcgPSAwO1xuLyogIFtQcm9taXNlcy9BKyAyLjEuMV0gICovXG5cbnZhciBTVEFURV9GVUxGSUxMRUQgPSAxO1xuLyogIFtQcm9taXNlcy9BKyAyLjEuMl0gICovXG5cbnZhciBTVEFURV9SRUpFQ1RFRCA9IDI7XG4vKiAgW1Byb21pc2VzL0ErIDIuMS4zXSAgKi9cblxuLyogIHByb21pc2Ugb2JqZWN0IGNvbnN0cnVjdG9yICAqL1xuXG52YXIgYXBpID0gZnVuY3Rpb24gYXBpKGV4ZWN1dG9yKSB7XG4gIC8qICBvcHRpb25hbGx5IHN1cHBvcnQgbm9uLWNvbnN0cnVjdG9yL3BsYWluLWZ1bmN0aW9uIGNhbGwgICovXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBhcGkpKSByZXR1cm4gbmV3IGFwaShleGVjdXRvcik7XG4gIC8qICBpbml0aWFsaXplIG9iamVjdCAgKi9cblxuICB0aGlzLmlkID0gJ1RoZW5hYmxlLzEuMC43JztcbiAgdGhpcy5zdGF0ZSA9IFNUQVRFX1BFTkRJTkc7XG4gIC8qICBpbml0aWFsIHN0YXRlICAqL1xuXG4gIHRoaXMuZnVsZmlsbFZhbHVlID0gdW5kZWZpbmVkO1xuICAvKiAgaW5pdGlhbCB2YWx1ZSAgKi9cblxuICAvKiAgW1Byb21pc2VzL0ErIDEuMywgMi4xLjIuMl0gICovXG5cbiAgdGhpcy5yZWplY3RSZWFzb24gPSB1bmRlZmluZWQ7XG4gIC8qICBpbml0aWFsIHJlYXNvbiAqL1xuXG4gIC8qICBbUHJvbWlzZXMvQSsgMS41LCAyLjEuMy4yXSAgKi9cblxuICB0aGlzLm9uRnVsZmlsbGVkID0gW107XG4gIC8qICBpbml0aWFsIGhhbmRsZXJzICAqL1xuXG4gIHRoaXMub25SZWplY3RlZCA9IFtdO1xuICAvKiAgaW5pdGlhbCBoYW5kbGVycyAgKi9cblxuICAvKiAgcHJvdmlkZSBvcHRpb25hbCBpbmZvcm1hdGlvbi1oaWRpbmcgcHJveHkgICovXG5cbiAgdGhpcy5wcm94eSA9IHtcbiAgICB0aGVuOiB0aGlzLnRoZW4uYmluZCh0aGlzKVxuICB9O1xuICAvKiAgc3VwcG9ydCBvcHRpb25hbCBleGVjdXRvciBmdW5jdGlvbiAgKi9cblxuICBpZiAodHlwZW9mIGV4ZWN1dG9yID09PSAnZnVuY3Rpb24nKSBleGVjdXRvci5jYWxsKHRoaXMsIHRoaXMuZnVsZmlsbC5iaW5kKHRoaXMpLCB0aGlzLnJlamVjdC5iaW5kKHRoaXMpKTtcbn07XG4vKiAgcHJvbWlzZSBBUEkgbWV0aG9kcyAgKi9cblxuXG5hcGkucHJvdG90eXBlID0ge1xuICAvKiAgcHJvbWlzZSByZXNvbHZpbmcgbWV0aG9kcyAgKi9cbiAgZnVsZmlsbDogZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkge1xuICAgIHJldHVybiBkZWxpdmVyKHRoaXMsIFNUQVRFX0ZVTEZJTExFRCwgJ2Z1bGZpbGxWYWx1ZScsIHZhbHVlKTtcbiAgfSxcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gZGVsaXZlcih0aGlzLCBTVEFURV9SRUpFQ1RFRCwgJ3JlamVjdFJlYXNvbicsIHZhbHVlKTtcbiAgfSxcblxuICAvKiAgXCJUaGUgdGhlbiBNZXRob2RcIiBbUHJvbWlzZXMvQSsgMS4xLCAxLjIsIDIuMl0gICovXG4gIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICB2YXIgY3VyciA9IHRoaXM7XG4gICAgdmFyIG5leHQgPSBuZXcgYXBpKCk7XG4gICAgLyogIFtQcm9taXNlcy9BKyAyLjIuN10gICovXG5cbiAgICBjdXJyLm9uRnVsZmlsbGVkLnB1c2gocmVzb2x2ZXIob25GdWxmaWxsZWQsIG5leHQsICdmdWxmaWxsJykpO1xuICAgIC8qICBbUHJvbWlzZXMvQSsgMi4yLjIvMi4yLjZdICAqL1xuXG4gICAgY3Vyci5vblJlamVjdGVkLnB1c2gocmVzb2x2ZXIob25SZWplY3RlZCwgbmV4dCwgJ3JlamVjdCcpKTtcbiAgICAvKiAgW1Byb21pc2VzL0ErIDIuMi4zLzIuMi42XSAgKi9cblxuICAgIGV4ZWN1dGUoY3Vycik7XG4gICAgcmV0dXJuIG5leHQucHJveHk7XG4gICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNywgMy4zXSAgKi9cbiAgfVxufTtcbi8qICBkZWxpdmVyIGFuIGFjdGlvbiAgKi9cblxudmFyIGRlbGl2ZXIgPSBmdW5jdGlvbiBkZWxpdmVyKGN1cnIsIHN0YXRlLCBuYW1lLCB2YWx1ZSkge1xuICBpZiAoY3Vyci5zdGF0ZSA9PT0gU1RBVEVfUEVORElORykge1xuICAgIGN1cnIuc3RhdGUgPSBzdGF0ZTtcbiAgICAvKiAgW1Byb21pc2VzL0ErIDIuMS4yLjEsIDIuMS4zLjFdICAqL1xuXG4gICAgY3VycltuYW1lXSA9IHZhbHVlO1xuICAgIC8qICBbUHJvbWlzZXMvQSsgMi4xLjIuMiwgMi4xLjMuMl0gICovXG5cbiAgICBleGVjdXRlKGN1cnIpO1xuICB9XG5cbiAgcmV0dXJuIGN1cnI7XG59O1xuLyogIGV4ZWN1dGUgYWxsIGhhbmRsZXJzICAqL1xuXG5cbnZhciBleGVjdXRlID0gZnVuY3Rpb24gZXhlY3V0ZShjdXJyKSB7XG4gIGlmIChjdXJyLnN0YXRlID09PSBTVEFURV9GVUxGSUxMRUQpIGV4ZWN1dGVfaGFuZGxlcnMoY3VyciwgJ29uRnVsZmlsbGVkJywgY3Vyci5mdWxmaWxsVmFsdWUpO2Vsc2UgaWYgKGN1cnIuc3RhdGUgPT09IFNUQVRFX1JFSkVDVEVEKSBleGVjdXRlX2hhbmRsZXJzKGN1cnIsICdvblJlamVjdGVkJywgY3Vyci5yZWplY3RSZWFzb24pO1xufTtcbi8qICBleGVjdXRlIHBhcnRpY3VsYXIgc2V0IG9mIGhhbmRsZXJzICAqL1xuXG5cbnZhciBleGVjdXRlX2hhbmRsZXJzID0gZnVuY3Rpb24gZXhlY3V0ZV9oYW5kbGVycyhjdXJyLCBuYW1lLCB2YWx1ZSkge1xuICAvKiBnbG9iYWwgc2V0SW1tZWRpYXRlOiB0cnVlICovXG5cbiAgLyogZ2xvYmFsIHNldFRpbWVvdXQ6IHRydWUgKi9cblxuICAvKiAgc2hvcnQtY2lyY3VpdCBwcm9jZXNzaW5nICAqL1xuICBpZiAoY3VycltuYW1lXS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgLyogIGl0ZXJhdGUgb3ZlciBhbGwgaGFuZGxlcnMsIGV4YWN0bHkgb25jZSAgKi9cblxuICB2YXIgaGFuZGxlcnMgPSBjdXJyW25hbWVdO1xuICBjdXJyW25hbWVdID0gW107XG4gIC8qICBbUHJvbWlzZXMvQSsgMi4yLjIuMywgMi4yLjMuM10gICovXG5cbiAgdmFyIGZ1bmMgPSBmdW5jdGlvbiBmdW5jKCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhhbmRsZXJzW2ldKHZhbHVlKTtcbiAgICB9XG4gICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNV0gICovXG5cbiAgfTtcbiAgLyogIGV4ZWN1dGUgcHJvY2VkdXJlIGFzeW5jaHJvbm91c2x5ICAqL1xuXG4gIC8qICBbUHJvbWlzZXMvQSsgMi4yLjQsIDMuMV0gICovXG5cblxuICBpZiAodHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gJ2Z1bmN0aW9uJykgc2V0SW1tZWRpYXRlKGZ1bmMpO2Vsc2Ugc2V0VGltZW91dChmdW5jLCAwKTtcbn07XG4vKiAgZ2VuZXJhdGUgYSByZXNvbHZlciBmdW5jdGlvbiAgKi9cblxuXG52YXIgcmVzb2x2ZXIgPSBmdW5jdGlvbiByZXNvbHZlcihjYiwgbmV4dCwgbWV0aG9kKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKVxuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjIuMSwgMi4yLjcuMywgMi4yLjcuNF0gICovXG4gICAgICBuZXh0W21ldGhvZF0uY2FsbChuZXh0LCB2YWx1ZSk7XG4gICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMi43LjMsIDIuMi43LjRdICAqL1xuICAgIGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzdWx0ID0gY2IodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIC8qICBbUHJvbWlzZXMvQSsgMi4yLjIuMSwgMi4yLjMuMSwgMi4yLjUsIDMuMl0gICovXG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgbmV4dC5yZWplY3QoZSk7XG4gICAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNy4yXSAgKi9cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmUobmV4dCwgcmVzdWx0KTtcbiAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNy4xXSAgKi9cbiAgICAgIH1cbiAgfTtcbn07XG4vKiAgXCJQcm9taXNlIFJlc29sdXRpb24gUHJvY2VkdXJlXCIgICovXG5cbi8qICBbUHJvbWlzZXMvQSsgMi4zXSAgKi9cblxuXG52YXIgcmVzb2x2ZSA9IGZ1bmN0aW9uIHJlc29sdmUocHJvbWlzZSwgeCkge1xuICAvKiAgc2FuaXR5IGNoZWNrIGFyZ3VtZW50cyAgKi9cblxuICAvKiAgW1Byb21pc2VzL0ErIDIuMy4xXSAgKi9cbiAgaWYgKHByb21pc2UgPT09IHggfHwgcHJvbWlzZS5wcm94eSA9PT0geCkge1xuICAgIHByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ2Nhbm5vdCByZXNvbHZlIHByb21pc2Ugd2l0aCBpdHNlbGYnKSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8qICBzdXJnaWNhbGx5IGNoZWNrIGZvciBhIFwidGhlblwiIG1ldGhvZFxuICAgIChtYWlubHkgdG8ganVzdCBjYWxsIHRoZSBcImdldHRlclwiIG9mIFwidGhlblwiIG9ubHkgb25jZSkgICovXG5cblxuICB2YXIgdGhlbjtcblxuICBpZiAoX3R5cGVvZih4KSA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCB8fCB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICB0aGVuID0geC50aGVuO1xuICAgIH1cbiAgICAvKiAgW1Byb21pc2VzL0ErIDIuMy4zLjEsIDMuNV0gICovXG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIHByb21pc2UucmVqZWN0KGUpO1xuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4yXSAgKi9cblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICAvKiAgaGFuZGxlIG93biBUaGVuYWJsZXMgICAgW1Byb21pc2VzL0ErIDIuMy4yXVxuICAgIGFuZCBzaW1pbGFyIFwidGhlbmFibGVzXCIgW1Byb21pc2VzL0ErIDIuMy4zXSAgKi9cblxuXG4gIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXNvbHZlZCA9IGZhbHNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8qICBjYWxsIHJldHJpZXZlZCBcInRoZW5cIiBtZXRob2QgKi9cblxuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zXSAgKi9cbiAgICAgIHRoZW4uY2FsbCh4LFxuICAgICAgLyogIHJlc29sdmVQcm9taXNlICAqL1xuXG4gICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMy4zLjMuMV0gICovXG4gICAgICBmdW5jdGlvbiAoeSkge1xuICAgICAgICBpZiAocmVzb2x2ZWQpIHJldHVybjtcbiAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMy4zLjMuM10gICovXG5cbiAgICAgICAgaWYgKHkgPT09IHgpXG4gICAgICAgICAgLyogIFtQcm9taXNlcy9BKyAzLjZdICAqL1xuICAgICAgICAgIHByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ2NpcmN1bGFyIHRoZW5hYmxlIGNoYWluJykpO2Vsc2UgcmVzb2x2ZShwcm9taXNlLCB5KTtcbiAgICAgIH0sXG4gICAgICAvKiAgcmVqZWN0UHJvbWlzZSAgKi9cblxuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zLjJdICAqL1xuICAgICAgZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgaWYgKHJlc29sdmVkKSByZXR1cm47XG4gICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zLjNdICAqL1xuXG4gICAgICAgIHByb21pc2UucmVqZWN0KHIpO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCFyZXNvbHZlZClcbiAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zLjNdICAqL1xuICAgICAgICBwcm9taXNlLnJlamVjdChlKTtcbiAgICAgIC8qICBbUHJvbWlzZXMvQSsgMi4zLjMuMy40XSAgKi9cbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cbiAgLyogIGhhbmRsZSBvdGhlciB2YWx1ZXMgICovXG5cblxuICBwcm9taXNlLmZ1bGZpbGwoeCk7XG4gIC8qICBbUHJvbWlzZXMvQSsgMi4zLjQsIDIuMy4zLjRdICAqL1xufTsgLy8gc28gd2UgYWx3YXlzIGhhdmUgUHJvbWlzZS5hbGwoKVxuXG5cbmFwaS5hbGwgPSBmdW5jdGlvbiAocHMpIHtcbiAgcmV0dXJuIG5ldyBhcGkoZnVuY3Rpb24gKHJlc29sdmVBbGwsIHJlamVjdEFsbCkge1xuICAgIHZhciB2YWxzID0gbmV3IEFycmF5KHBzLmxlbmd0aCk7XG4gICAgdmFyIGRvbmVDb3VudCA9IDA7XG5cbiAgICB2YXIgZnVsZmlsbCA9IGZ1bmN0aW9uIGZ1bGZpbGwoaSwgdmFsKSB7XG4gICAgICB2YWxzW2ldID0gdmFsO1xuICAgICAgZG9uZUNvdW50Kys7XG5cbiAgICAgIGlmIChkb25lQ291bnQgPT09IHBzLmxlbmd0aCkge1xuICAgICAgICByZXNvbHZlQWxsKHZhbHMpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgdmFyIHAgPSBwc1tpXTtcbiAgICAgICAgdmFyIGlzUHJvbWlzZSA9IHAgIT0gbnVsbCAmJiBwLnRoZW4gIT0gbnVsbDtcblxuICAgICAgICBpZiAoaXNQcm9taXNlKSB7XG4gICAgICAgICAgcC50aGVuKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgICAgIGZ1bGZpbGwoaSwgdmFsKTtcbiAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3RBbGwoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgdmFsID0gcDtcbiAgICAgICAgICBmdWxmaWxsKGksIHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH0pKGkpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5hcGkucmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgcmV0dXJuIG5ldyBhcGkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlc29sdmUodmFsKTtcbiAgfSk7XG59O1xuXG5hcGkucmVqZWN0ID0gZnVuY3Rpb24gKHZhbCkge1xuICByZXR1cm4gbmV3IGFwaShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVqZWN0KHZhbCk7XG4gIH0pO1xufTtcblxudmFyIFByb21pc2UkMSA9IHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJyA/IFByb21pc2UgOiBhcGk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxudmFyIEFuaW1hdGlvbiA9IGZ1bmN0aW9uIEFuaW1hdGlvbih0YXJnZXQsIG9wdHMsIG9wdHMyKSB7XG4gIHZhciBpc0NvcmUgPSBjb3JlKHRhcmdldCk7XG4gIHZhciBpc0VsZSA9ICFpc0NvcmU7XG5cbiAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZSA9IGV4dGVuZCh7XG4gICAgZHVyYXRpb246IDEwMDBcbiAgfSwgb3B0cywgb3B0czIpO1xuXG4gIF9wLnRhcmdldCA9IHRhcmdldDtcbiAgX3Auc3R5bGUgPSBfcC5zdHlsZSB8fCBfcC5jc3M7XG4gIF9wLnN0YXJ0ZWQgPSBmYWxzZTtcbiAgX3AucGxheWluZyA9IGZhbHNlO1xuICBfcC5ob29rZWQgPSBmYWxzZTtcbiAgX3AuYXBwbHlpbmcgPSBmYWxzZTtcbiAgX3AucHJvZ3Jlc3MgPSAwO1xuICBfcC5jb21wbGV0ZXMgPSBbXTtcbiAgX3AuZnJhbWVzID0gW107XG5cbiAgaWYgKF9wLmNvbXBsZXRlICYmIGZuKF9wLmNvbXBsZXRlKSkge1xuICAgIF9wLmNvbXBsZXRlcy5wdXNoKF9wLmNvbXBsZXRlKTtcbiAgfVxuXG4gIGlmIChpc0VsZSkge1xuICAgIHZhciBwb3MgPSB0YXJnZXQucG9zaXRpb24oKTtcbiAgICBfcC5zdGFydFBvc2l0aW9uID0gX3Auc3RhcnRQb3NpdGlvbiB8fCB7XG4gICAgICB4OiBwb3MueCxcbiAgICAgIHk6IHBvcy55XG4gICAgfTtcbiAgICBfcC5zdGFydFN0eWxlID0gX3Auc3RhcnRTdHlsZSB8fCB0YXJnZXQuY3koKS5zdHlsZSgpLmdldEFuaW1hdGlvblN0YXJ0U3R5bGUodGFyZ2V0LCBfcC5zdHlsZSk7XG4gIH1cblxuICBpZiAoaXNDb3JlKSB7XG4gICAgdmFyIHBhbiA9IHRhcmdldC5wYW4oKTtcbiAgICBfcC5zdGFydFBhbiA9IHtcbiAgICAgIHg6IHBhbi54LFxuICAgICAgeTogcGFuLnlcbiAgICB9O1xuICAgIF9wLnN0YXJ0Wm9vbSA9IHRhcmdldC56b29tKCk7XG4gIH0gLy8gZm9yIGZ1dHVyZSB0aW1lbGluZS9hbmltYXRpb25zIGltcGxcblxuXG4gIHRoaXMubGVuZ3RoID0gMTtcbiAgdGhpc1swXSA9IHRoaXM7XG59O1xuXG52YXIgYW5pZm4gPSBBbmltYXRpb24ucHJvdG90eXBlO1xuZXh0ZW5kKGFuaWZuLCB7XG4gIGluc3RhbmNlU3RyaW5nOiBmdW5jdGlvbiBpbnN0YW5jZVN0cmluZygpIHtcbiAgICByZXR1cm4gJ2FuaW1hdGlvbic7XG4gIH0sXG4gIGhvb2s6IGZ1bmN0aW9uIGhvb2soKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcblxuICAgIGlmICghX3AuaG9va2VkKSB7XG4gICAgICAvLyBhZGQgdG8gdGFyZ2V0J3MgYW5pbWF0aW9uIHF1ZXVlXG4gICAgICB2YXIgcTtcbiAgICAgIHZhciB0QW5pID0gX3AudGFyZ2V0Ll9wcml2YXRlLmFuaW1hdGlvbjtcblxuICAgICAgaWYgKF9wLnF1ZXVlKSB7XG4gICAgICAgIHEgPSB0QW5pLnF1ZXVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcSA9IHRBbmkuY3VycmVudDtcbiAgICAgIH1cblxuICAgICAgcS5wdXNoKHRoaXMpOyAvLyBhZGQgdG8gdGhlIGFuaW1hdGlvbiBsb29wIHBvb2xcblxuICAgICAgaWYgKGVsZW1lbnRPckNvbGxlY3Rpb24oX3AudGFyZ2V0KSkge1xuICAgICAgICBfcC50YXJnZXQuY3koKS5hZGRUb0FuaW1hdGlvblBvb2woX3AudGFyZ2V0KTtcbiAgICAgIH1cblxuICAgICAgX3AuaG9va2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcGxheTogZnVuY3Rpb24gcGxheSgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlOyAvLyBhdXRvcmV3aW5kXG5cbiAgICBpZiAoX3AucHJvZ3Jlc3MgPT09IDEpIHtcbiAgICAgIF9wLnByb2dyZXNzID0gMDtcbiAgICB9XG5cbiAgICBfcC5wbGF5aW5nID0gdHJ1ZTtcbiAgICBfcC5zdGFydGVkID0gZmFsc2U7IC8vIG5lZWRzIHRvIGJlIHN0YXJ0ZWQgYnkgYW5pbWF0aW9uIGxvb3BcblxuICAgIF9wLnN0b3BwZWQgPSBmYWxzZTtcbiAgICB0aGlzLmhvb2soKTsgLy8gdGhlIGFuaW1hdGlvbiBsb29wIHdpbGwgc3RhcnQgdGhlIGFuaW1hdGlvbi4uLlxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHBsYXlpbmc6IGZ1bmN0aW9uIHBsYXlpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucGxheWluZztcbiAgfSxcbiAgYXBwbHk6IGZ1bmN0aW9uIGFwcGx5KCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgX3AuYXBwbHlpbmcgPSB0cnVlO1xuICAgIF9wLnN0YXJ0ZWQgPSBmYWxzZTsgLy8gbmVlZHMgdG8gYmUgc3RhcnRlZCBieSBhbmltYXRpb24gbG9vcFxuXG4gICAgX3Auc3RvcHBlZCA9IGZhbHNlO1xuICAgIHRoaXMuaG9vaygpOyAvLyB0aGUgYW5pbWF0aW9uIGxvb3Agd2lsbCBhcHBseSB0aGUgYW5pbWF0aW9uIGF0IHRoaXMgcHJvZ3Jlc3NcblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBhcHBseWluZzogZnVuY3Rpb24gYXBwbHlpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuYXBwbHlpbmc7XG4gIH0sXG4gIHBhdXNlOiBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgIF9wLnBsYXlpbmcgPSBmYWxzZTtcbiAgICBfcC5zdGFydGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICBfcC5wbGF5aW5nID0gZmFsc2U7XG4gICAgX3Auc3RhcnRlZCA9IGZhbHNlO1xuICAgIF9wLnN0b3BwZWQgPSB0cnVlOyAvLyB0byBiZSByZW1vdmVkIGZyb20gYW5pbWF0aW9uIHF1ZXVlc1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJld2luZDogZnVuY3Rpb24gcmV3aW5kKCkge1xuICAgIHJldHVybiB0aGlzLnByb2dyZXNzKDApO1xuICB9LFxuICBmYXN0Zm9yd2FyZDogZnVuY3Rpb24gZmFzdGZvcndhcmQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3Jlc3MoMSk7XG4gIH0sXG4gIHRpbWU6IGZ1bmN0aW9uIHRpbWUodCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gX3AucHJvZ3Jlc3MgKiBfcC5kdXJhdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucHJvZ3Jlc3ModCAvIF9wLmR1cmF0aW9uKTtcbiAgICB9XG4gIH0sXG4gIHByb2dyZXNzOiBmdW5jdGlvbiBwcm9ncmVzcyhwKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgd2FzUGxheWluZyA9IF9wLnBsYXlpbmc7XG5cbiAgICBpZiAocCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gX3AucHJvZ3Jlc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh3YXNQbGF5aW5nKSB7XG4gICAgICAgIHRoaXMucGF1c2UoKTtcbiAgICAgIH1cblxuICAgICAgX3AucHJvZ3Jlc3MgPSBwO1xuICAgICAgX3Auc3RhcnRlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAod2FzUGxheWluZykge1xuICAgICAgICB0aGlzLnBsYXkoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgY29tcGxldGVkOiBmdW5jdGlvbiBjb21wbGV0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucHJvZ3Jlc3MgPT09IDE7XG4gIH0sXG4gIHJldmVyc2U6IGZ1bmN0aW9uIHJldmVyc2UoKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgd2FzUGxheWluZyA9IF9wLnBsYXlpbmc7XG5cbiAgICBpZiAod2FzUGxheWluZykge1xuICAgICAgdGhpcy5wYXVzZSgpO1xuICAgIH1cblxuICAgIF9wLnByb2dyZXNzID0gMSAtIF9wLnByb2dyZXNzO1xuICAgIF9wLnN0YXJ0ZWQgPSBmYWxzZTtcblxuICAgIHZhciBzd2FwID0gZnVuY3Rpb24gc3dhcChhLCBiKSB7XG4gICAgICB2YXIgX3BhID0gX3BbYV07XG5cbiAgICAgIGlmIChfcGEgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIF9wW2FdID0gX3BbYl07XG4gICAgICBfcFtiXSA9IF9wYTtcbiAgICB9O1xuXG4gICAgc3dhcCgnem9vbScsICdzdGFydFpvb20nKTtcbiAgICBzd2FwKCdwYW4nLCAnc3RhcnRQYW4nKTtcbiAgICBzd2FwKCdwb3NpdGlvbicsICdzdGFydFBvc2l0aW9uJyk7IC8vIHN3YXAgc3R5bGVzXG5cbiAgICBpZiAoX3Auc3R5bGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX3Auc3R5bGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHByb3AgPSBfcC5zdHlsZVtpXTtcbiAgICAgICAgdmFyIG5hbWUgPSBwcm9wLm5hbWU7XG4gICAgICAgIHZhciBzdGFydFN0eWxlUHJvcCA9IF9wLnN0YXJ0U3R5bGVbbmFtZV07XG4gICAgICAgIF9wLnN0YXJ0U3R5bGVbbmFtZV0gPSBwcm9wO1xuICAgICAgICBfcC5zdHlsZVtpXSA9IHN0YXJ0U3R5bGVQcm9wO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3YXNQbGF5aW5nKSB7XG4gICAgICB0aGlzLnBsYXkoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcHJvbWlzZTogZnVuY3Rpb24gcHJvbWlzZSh0eXBlKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgYXJyO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdmcmFtZSc6XG4gICAgICAgIGFyciA9IF9wLmZyYW1lcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlICdjb21wbGV0ZSc6XG4gICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICBhcnIgPSBfcC5jb21wbGV0ZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgYXJyLnB1c2goZnVuY3Rpb24gKCkge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSk7XG5hbmlmbi5jb21wbGV0ZSA9IGFuaWZuLmNvbXBsZXRlZDtcbmFuaWZuLnJ1biA9IGFuaWZuLnBsYXk7XG5hbmlmbi5ydW5uaW5nID0gYW5pZm4ucGxheWluZztcblxudmFyIGRlZmluZSA9IHtcbiAgYW5pbWF0ZWQ6IGZ1bmN0aW9uIGFuaW1hdGVkKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBhbmltYXRlZEltcGwoKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZSA9IGFsbFswXTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLl9wcml2YXRlLmFuaW1hdGlvbi5jdXJyZW50Lmxlbmd0aCA+IDA7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgLy8gYW5pbWF0ZWRcbiAgY2xlYXJRdWV1ZTogZnVuY3Rpb24gY2xlYXJRdWV1ZSgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2xlYXJRdWV1ZUltcGwoKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gYWxsW2ldO1xuICAgICAgICBlbGUuX3ByaXZhdGUuYW5pbWF0aW9uLnF1ZXVlID0gW107XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gIH0sXG4gIC8vIGNsZWFyUXVldWVcbiAgZGVsYXk6IGZ1bmN0aW9uIGRlbGF5KCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBkZWxheUltcGwodGltZSwgY29tcGxldGUpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3kgfHwgdGhpcztcblxuICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0ZSh7XG4gICAgICAgIGRlbGF5OiB0aW1lLFxuICAgICAgICBkdXJhdGlvbjogdGltZSxcbiAgICAgICAgY29tcGxldGU6IGNvbXBsZXRlXG4gICAgICB9KTtcbiAgICB9O1xuICB9LFxuICAvLyBkZWxheVxuICBkZWxheUFuaW1hdGlvbjogZnVuY3Rpb24gZGVsYXlBbmltYXRpb24oKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGRlbGF5QW5pbWF0aW9uSW1wbCh0aW1lLCBjb21wbGV0ZSkge1xuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5hbmltYXRpb24oe1xuICAgICAgICBkZWxheTogdGltZSxcbiAgICAgICAgZHVyYXRpb246IHRpbWUsXG4gICAgICAgIGNvbXBsZXRlOiBjb21wbGV0ZVxuICAgICAgfSk7XG4gICAgfTtcbiAgfSxcbiAgLy8gZGVsYXlcbiAgYW5pbWF0aW9uOiBmdW5jdGlvbiBhbmltYXRpb24oKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGFuaW1hdGlvbkltcGwocHJvcGVydGllcywgcGFyYW1zKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuICAgICAgdmFyIGlzQ29yZSA9ICFzZWxmSXNBcnJheUxpa2U7XG4gICAgICB2YXIgaXNFbGVzID0gIWlzQ29yZTtcblxuICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdmFyIHN0eWxlID0gY3kuc3R5bGUoKTtcbiAgICAgIHByb3BlcnRpZXMgPSBleHRlbmQoe30sIHByb3BlcnRpZXMsIHBhcmFtcyk7XG4gICAgICB2YXIgcHJvcGVydGllc0VtcHR5ID0gT2JqZWN0LmtleXMocHJvcGVydGllcykubGVuZ3RoID09PSAwO1xuXG4gICAgICBpZiAocHJvcGVydGllc0VtcHR5KSB7XG4gICAgICAgIHJldHVybiBuZXcgQW5pbWF0aW9uKGFsbFswXSwgcHJvcGVydGllcyk7IC8vIG5vdGhpbmcgdG8gYW5pbWF0ZVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydGllcy5kdXJhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHByb3BlcnRpZXMuZHVyYXRpb24gPSA0MDA7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocHJvcGVydGllcy5kdXJhdGlvbikge1xuICAgICAgICBjYXNlICdzbG93JzpcbiAgICAgICAgICBwcm9wZXJ0aWVzLmR1cmF0aW9uID0gNjAwO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Zhc3QnOlxuICAgICAgICAgIHByb3BlcnRpZXMuZHVyYXRpb24gPSAyMDA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0VsZXMpIHtcbiAgICAgICAgcHJvcGVydGllcy5zdHlsZSA9IHN0eWxlLmdldFByb3BzTGlzdChwcm9wZXJ0aWVzLnN0eWxlIHx8IHByb3BlcnRpZXMuY3NzKTtcbiAgICAgICAgcHJvcGVydGllcy5jc3MgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0VsZXMgJiYgcHJvcGVydGllcy5yZW5kZXJlZFBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgdmFyIHJwb3MgPSBwcm9wZXJ0aWVzLnJlbmRlcmVkUG9zaXRpb247XG4gICAgICAgIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgICAgICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgICAgIHByb3BlcnRpZXMucG9zaXRpb24gPSByZW5kZXJlZFRvTW9kZWxQb3NpdGlvbihycG9zLCB6b29tLCBwYW4pO1xuICAgICAgfSAvLyBvdmVycmlkZSBwYW4gdy8gcGFuQnkgaWYgc2V0XG5cblxuICAgICAgaWYgKGlzQ29yZSAmJiBwcm9wZXJ0aWVzLnBhbkJ5ICE9IG51bGwpIHtcbiAgICAgICAgdmFyIHBhbkJ5ID0gcHJvcGVydGllcy5wYW5CeTtcbiAgICAgICAgdmFyIGN5UGFuID0gY3kucGFuKCk7XG4gICAgICAgIHByb3BlcnRpZXMucGFuID0ge1xuICAgICAgICAgIHg6IGN5UGFuLnggKyBwYW5CeS54LFxuICAgICAgICAgIHk6IGN5UGFuLnkgKyBwYW5CeS55XG4gICAgICAgIH07XG4gICAgICB9IC8vIG92ZXJyaWRlIHBhbiB3LyBjZW50ZXIgaWYgc2V0XG5cblxuICAgICAgdmFyIGNlbnRlciA9IHByb3BlcnRpZXMuY2VudGVyIHx8IHByb3BlcnRpZXMuY2VudHJlO1xuXG4gICAgICBpZiAoaXNDb3JlICYmIGNlbnRlciAhPSBudWxsKSB7XG4gICAgICAgIHZhciBjZW50ZXJQYW4gPSBjeS5nZXRDZW50ZXJQYW4oY2VudGVyLmVsZXMsIHByb3BlcnRpZXMuem9vbSk7XG5cbiAgICAgICAgaWYgKGNlbnRlclBhbiAhPSBudWxsKSB7XG4gICAgICAgICAgcHJvcGVydGllcy5wYW4gPSBjZW50ZXJQYW47XG4gICAgICAgIH1cbiAgICAgIH0gLy8gb3ZlcnJpZGUgcGFuICYgem9vbSB3LyBmaXQgaWYgc2V0XG5cblxuICAgICAgaWYgKGlzQ29yZSAmJiBwcm9wZXJ0aWVzLmZpdCAhPSBudWxsKSB7XG4gICAgICAgIHZhciBmaXQgPSBwcm9wZXJ0aWVzLmZpdDtcbiAgICAgICAgdmFyIGZpdFZwID0gY3kuZ2V0Rml0Vmlld3BvcnQoZml0LmVsZXMgfHwgZml0LmJvdW5kaW5nQm94LCBmaXQucGFkZGluZyk7XG5cbiAgICAgICAgaWYgKGZpdFZwICE9IG51bGwpIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzLnBhbiA9IGZpdFZwLnBhbjtcbiAgICAgICAgICBwcm9wZXJ0aWVzLnpvb20gPSBmaXRWcC56b29tO1xuICAgICAgICB9XG4gICAgICB9IC8vIG92ZXJyaWRlIHpvb20gKCYgcG90ZW50aWFsbHkgcGFuKSB3LyB6b29tIG9iaiBpZiBzZXRcblxuXG4gICAgICBpZiAoaXNDb3JlICYmIHBsYWluT2JqZWN0KHByb3BlcnRpZXMuem9vbSkpIHtcbiAgICAgICAgdmFyIHZwID0gY3kuZ2V0Wm9vbWVkVmlld3BvcnQocHJvcGVydGllcy56b29tKTtcblxuICAgICAgICBpZiAodnAgIT0gbnVsbCkge1xuICAgICAgICAgIGlmICh2cC56b29tZWQpIHtcbiAgICAgICAgICAgIHByb3BlcnRpZXMuem9vbSA9IHZwLnpvb207XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZwLnBhbm5lZCkge1xuICAgICAgICAgICAgcHJvcGVydGllcy5wYW4gPSB2cC5wYW47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb3BlcnRpZXMuem9vbSA9IG51bGw7IC8vIGFuIGluYXZhbGlkIHpvb20gKGUuZy4gbm8gZGVsdGEpIGdldHMgYXV0b21hdGljYWxseSBkZXN0cm95ZWRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IEFuaW1hdGlvbihhbGxbMF0sIHByb3BlcnRpZXMpO1xuICAgIH07XG4gIH0sXG4gIC8vIGFuaW1hdGVcbiAgYW5pbWF0ZTogZnVuY3Rpb24gYW5pbWF0ZSgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gYW5pbWF0ZUltcGwocHJvcGVydGllcywgcGFyYW1zKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgIHByb3BlcnRpZXMgPSBleHRlbmQoe30sIHByb3BlcnRpZXMsIHBhcmFtcyk7XG4gICAgICB9IC8vIG1hbnVhbGx5IGhvb2sgYW5kIHJ1biB0aGUgYW5pbWF0aW9uXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IGFsbFtpXTtcbiAgICAgICAgdmFyIHF1ZXVlID0gZWxlLmFuaW1hdGVkKCkgJiYgKHByb3BlcnRpZXMucXVldWUgPT09IHVuZGVmaW5lZCB8fCBwcm9wZXJ0aWVzLnF1ZXVlKTtcbiAgICAgICAgdmFyIGFuaSA9IGVsZS5hbmltYXRpb24ocHJvcGVydGllcywgcXVldWUgPyB7XG4gICAgICAgICAgcXVldWU6IHRydWVcbiAgICAgICAgfSA6IHVuZGVmaW5lZCk7XG4gICAgICAgIGFuaS5wbGF5KCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICAgIH07XG4gIH0sXG4gIC8vIGFuaW1hdGVcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gc3RvcEltcGwoY2xlYXJRdWV1ZSwganVtcFRvRW5kKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gYWxsW2ldO1xuICAgICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgICAgIHZhciBhbmlzID0gX3AuYW5pbWF0aW9uLmN1cnJlbnQ7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhbmlzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgdmFyIGFuaSA9IGFuaXNbal07XG4gICAgICAgICAgdmFyIGFuaV9wID0gYW5pLl9wcml2YXRlO1xuXG4gICAgICAgICAgaWYgKGp1bXBUb0VuZCkge1xuICAgICAgICAgICAgLy8gbmV4dCBpdGVyYXRpb24gb2YgdGhlIGFuaW1hdGlvbiBsb29wLCB0aGUgYW5pbWF0aW9uXG4gICAgICAgICAgICAvLyB3aWxsIGdvIHN0cmFpZ2h0IHRvIHRoZSBlbmQgYW5kIGJlIHJlbW92ZWRcbiAgICAgICAgICAgIGFuaV9wLmR1cmF0aW9uID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gY2xlYXIgdGhlIHF1ZXVlIG9mIGZ1dHVyZSBhbmltYXRpb25zXG5cblxuICAgICAgICBpZiAoY2xlYXJRdWV1ZSkge1xuICAgICAgICAgIF9wLmFuaW1hdGlvbi5xdWV1ZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFqdW1wVG9FbmQpIHtcbiAgICAgICAgICBfcC5hbmltYXRpb24uY3VycmVudCA9IFtdO1xuICAgICAgICB9XG4gICAgICB9IC8vIHdlIGhhdmUgdG8gbm90aWZ5ICh0aGUgYW5pbWF0aW9uIGxvb3AgZG9lc24ndCBkbyBpdCBmb3IgdXMgb24gYHN0b3BgKVxuXG5cbiAgICAgIGN5Lm5vdGlmeSgnZHJhdycpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgfSAvLyBzdG9wXG5cbn07IC8vIGRlZmluZVxuXG52YXIgZGVmaW5lJDEgPSB7XG4gIC8vIGFjY2VzcyBkYXRhIGZpZWxkXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEocGFyYW1zKSB7XG4gICAgdmFyIGRlZmF1bHRzID0ge1xuICAgICAgZmllbGQ6ICdkYXRhJyxcbiAgICAgIGJpbmRpbmdFdmVudDogJ2RhdGEnLFxuICAgICAgYWxsb3dCaW5kaW5nOiBmYWxzZSxcbiAgICAgIGFsbG93U2V0dGluZzogZmFsc2UsXG4gICAgICBhbGxvd0dldHRpbmc6IGZhbHNlLFxuICAgICAgc2V0dGluZ0V2ZW50OiAnZGF0YScsXG4gICAgICBzZXR0aW5nVHJpZ2dlcnNFdmVudDogZmFsc2UsXG4gICAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgICBpbW11dGFibGVLZXlzOiB7fSxcbiAgICAgIC8vIGtleSA9PiB0cnVlIGlmIGltbXV0YWJsZVxuICAgICAgdXBkYXRlU3R5bGU6IGZhbHNlLFxuICAgICAgYmVmb3JlR2V0OiBmdW5jdGlvbiBiZWZvcmVHZXQoc2VsZikge30sXG4gICAgICBiZWZvcmVTZXQ6IGZ1bmN0aW9uIGJlZm9yZVNldChzZWxmLCBvYmopIHt9LFxuICAgICAgb25TZXQ6IGZ1bmN0aW9uIG9uU2V0KHNlbGYpIHt9LFxuICAgICAgY2FuU2V0OiBmdW5jdGlvbiBjYW5TZXQoc2VsZikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHBhcmFtcyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGRhdGFJbXBsKG5hbWUsIHZhbHVlKSB7XG4gICAgICB2YXIgcCA9IHBhcmFtcztcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBzZWxmSXNBcnJheUxpa2UgPSBzZWxmLmxlbmd0aCAhPT0gdW5kZWZpbmVkO1xuICAgICAgdmFyIGFsbCA9IHNlbGZJc0FycmF5TGlrZSA/IHNlbGYgOiBbc2VsZl07IC8vIHB1dCBpbiBhcnJheSBpZiBub3QgYXJyYXktbGlrZVxuXG4gICAgICB2YXIgc2luZ2xlID0gc2VsZklzQXJyYXlMaWtlID8gc2VsZlswXSA6IHNlbGY7IC8vIC5kYXRhKCdmb28nLCAuLi4pXG5cbiAgICAgIGlmIChzdHJpbmcobmFtZSkpIHtcbiAgICAgICAgLy8gc2V0IG9yIGdldCBwcm9wZXJ0eVxuICAgICAgICAvLyAuZGF0YSgnZm9vJylcbiAgICAgICAgaWYgKHAuYWxsb3dHZXR0aW5nICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBnZXRcbiAgICAgICAgICB2YXIgcmV0O1xuXG4gICAgICAgICAgaWYgKHNpbmdsZSkge1xuICAgICAgICAgICAgcC5iZWZvcmVHZXQoc2luZ2xlKTtcbiAgICAgICAgICAgIHJldCA9IHNpbmdsZS5fcHJpdmF0ZVtwLmZpZWxkXVtuYW1lXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmV0OyAvLyAuZGF0YSgnZm9vJywgJ2JhcicpXG4gICAgICAgIH0gZWxzZSBpZiAocC5hbGxvd1NldHRpbmcgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIHNldFxuICAgICAgICAgIHZhciB2YWxpZCA9ICFwLmltbXV0YWJsZUtleXNbbmFtZV07XG5cbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHZhciBjaGFuZ2UgPSBfZGVmaW5lUHJvcGVydHkoe30sIG5hbWUsIHZhbHVlKTtcblxuICAgICAgICAgICAgcC5iZWZvcmVTZXQoc2VsZiwgY2hhbmdlKTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhbGwubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgIHZhciBlbGUgPSBhbGxbaV07XG5cbiAgICAgICAgICAgICAgaWYgKHAuY2FuU2V0KGVsZSkpIHtcbiAgICAgICAgICAgICAgICBlbGUuX3ByaXZhdGVbcC5maWVsZF1bbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSAvLyB1cGRhdGUgbWFwcGVycyBpZiBhc2tlZFxuXG5cbiAgICAgICAgICAgIGlmIChwLnVwZGF0ZVN0eWxlKSB7XG4gICAgICAgICAgICAgIHNlbGYudXBkYXRlU3R5bGUoKTtcbiAgICAgICAgICAgIH0gLy8gY2FsbCBvblNldCBjYWxsYmFja1xuXG5cbiAgICAgICAgICAgIHAub25TZXQoc2VsZik7XG5cbiAgICAgICAgICAgIGlmIChwLnNldHRpbmdUcmlnZ2Vyc0V2ZW50KSB7XG4gICAgICAgICAgICAgIHNlbGZbcC50cmlnZ2VyRm5OYW1lXShwLnNldHRpbmdFdmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIC5kYXRhKHsgJ2Zvbyc6ICdiYXInIH0pXG5cbiAgICAgIH0gZWxzZSBpZiAocC5hbGxvd1NldHRpbmcgJiYgcGxhaW5PYmplY3QobmFtZSkpIHtcbiAgICAgICAgLy8gZXh0ZW5kXG4gICAgICAgIHZhciBvYmogPSBuYW1lO1xuICAgICAgICB2YXIgaywgdjtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBwLmJlZm9yZVNldChzZWxmLCBvYmopO1xuXG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBrZXlzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgIGsgPSBrZXlzW19pXTtcbiAgICAgICAgICB2ID0gb2JqW2tdO1xuXG4gICAgICAgICAgdmFyIF92YWxpZCA9ICFwLmltbXV0YWJsZUtleXNba107XG5cbiAgICAgICAgICBpZiAoX3ZhbGlkKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFsbC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICB2YXIgX2VsZSA9IGFsbFtqXTtcblxuICAgICAgICAgICAgICBpZiAocC5jYW5TZXQoX2VsZSkpIHtcbiAgICAgICAgICAgICAgICBfZWxlLl9wcml2YXRlW3AuZmllbGRdW2tdID0gdjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyB1cGRhdGUgbWFwcGVycyBpZiBhc2tlZFxuXG5cbiAgICAgICAgaWYgKHAudXBkYXRlU3R5bGUpIHtcbiAgICAgICAgICBzZWxmLnVwZGF0ZVN0eWxlKCk7XG4gICAgICAgIH0gLy8gY2FsbCBvblNldCBjYWxsYmFja1xuXG5cbiAgICAgICAgcC5vblNldChzZWxmKTtcblxuICAgICAgICBpZiAocC5zZXR0aW5nVHJpZ2dlcnNFdmVudCkge1xuICAgICAgICAgIHNlbGZbcC50cmlnZ2VyRm5OYW1lXShwLnNldHRpbmdFdmVudCk7XG4gICAgICAgIH0gLy8gLmRhdGEoZnVuY3Rpb24oKXsgLi4uIH0pXG5cbiAgICAgIH0gZWxzZSBpZiAocC5hbGxvd0JpbmRpbmcgJiYgZm4obmFtZSkpIHtcbiAgICAgICAgLy8gYmluZCB0byBldmVudFxuICAgICAgICB2YXIgZm4kMSA9IG5hbWU7XG4gICAgICAgIHNlbGYub24ocC5iaW5kaW5nRXZlbnQsIGZuJDEpOyAvLyAuZGF0YSgpXG4gICAgICB9IGVsc2UgaWYgKHAuYWxsb3dHZXR0aW5nICYmIG5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBnZXQgd2hvbGUgb2JqZWN0XG4gICAgICAgIHZhciBfcmV0O1xuXG4gICAgICAgIGlmIChzaW5nbGUpIHtcbiAgICAgICAgICBwLmJlZm9yZUdldChzaW5nbGUpO1xuICAgICAgICAgIF9yZXQgPSBzaW5nbGUuX3ByaXZhdGVbcC5maWVsZF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gX3JldDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGY7IC8vIG1haW50YWluIGNoYWluYWJpbGl0eVxuICAgIH07IC8vIGZ1bmN0aW9uXG4gIH0sXG4gIC8vIGRhdGFcbiAgLy8gcmVtb3ZlIGRhdGEgZmllbGRcbiAgcmVtb3ZlRGF0YTogZnVuY3Rpb24gcmVtb3ZlRGF0YShwYXJhbXMpIHtcbiAgICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgICBmaWVsZDogJ2RhdGEnLFxuICAgICAgZXZlbnQ6ICdkYXRhJyxcbiAgICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICAgIHRyaWdnZXJFdmVudDogZmFsc2UsXG4gICAgICBpbW11dGFibGVLZXlzOiB7fSAvLyBrZXkgPT4gdHJ1ZSBpZiBpbW11dGFibGVcblxuICAgIH07XG4gICAgcGFyYW1zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgcGFyYW1zKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gcmVtb3ZlRGF0YUltcGwobmFtZXMpIHtcbiAgICAgIHZhciBwID0gcGFyYW1zO1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIHNlbGZJc0FycmF5TGlrZSA9IHNlbGYubGVuZ3RoICE9PSB1bmRlZmluZWQ7XG4gICAgICB2YXIgYWxsID0gc2VsZklzQXJyYXlMaWtlID8gc2VsZiA6IFtzZWxmXTsgLy8gcHV0IGluIGFycmF5IGlmIG5vdCBhcnJheS1saWtlXG4gICAgICAvLyAucmVtb3ZlRGF0YSgnZm9vIGJhcicpXG5cbiAgICAgIGlmIChzdHJpbmcobmFtZXMpKSB7XG4gICAgICAgIC8vIHRoZW4gZ2V0IHRoZSBsaXN0IG9mIGtleXMsIGFuZCBkZWxldGUgdGhlbVxuICAgICAgICB2YXIga2V5cyA9IG5hbWVzLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIHZhciBsID0ga2V5cy5sZW5ndGg7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAvLyBkZWxldGUgZWFjaCBub24tZW1wdHkga2V5XG4gICAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgICAgICBpZiAoZW1wdHlTdHJpbmcoa2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHZhbGlkID0gIXAuaW1tdXRhYmxlS2V5c1trZXldOyAvLyBub3QgdmFsaWQgaWYgaW1tdXRhYmxlXG5cbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGlfYSA9IDAsIGxfYSA9IGFsbC5sZW5ndGg7IGlfYSA8IGxfYTsgaV9hKyspIHtcbiAgICAgICAgICAgICAgYWxsW2lfYV0uX3ByaXZhdGVbcC5maWVsZF1ba2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC50cmlnZ2VyRXZlbnQpIHtcbiAgICAgICAgICBzZWxmW3AudHJpZ2dlckZuTmFtZV0ocC5ldmVudCk7XG4gICAgICAgIH0gLy8gLnJlbW92ZURhdGEoKVxuXG4gICAgICB9IGVsc2UgaWYgKG5hbWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gdGhlbiBkZWxldGUgYWxsIGtleXNcbiAgICAgICAgZm9yICh2YXIgX2lfYSA9IDAsIF9sX2EgPSBhbGwubGVuZ3RoOyBfaV9hIDwgX2xfYTsgX2lfYSsrKSB7XG4gICAgICAgICAgdmFyIF9wcml2YXRlRmllbGRzID0gYWxsW19pX2FdLl9wcml2YXRlW3AuZmllbGRdO1xuXG4gICAgICAgICAgdmFyIF9rZXlzID0gT2JqZWN0LmtleXMoX3ByaXZhdGVGaWVsZHMpO1xuXG4gICAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgX2tleXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICAgICAgdmFyIF9rZXkgPSBfa2V5c1tfaTJdO1xuICAgICAgICAgICAgdmFyIHZhbGlkS2V5VG9EZWxldGUgPSAhcC5pbW11dGFibGVLZXlzW19rZXldO1xuXG4gICAgICAgICAgICBpZiAodmFsaWRLZXlUb0RlbGV0ZSkge1xuICAgICAgICAgICAgICBfcHJpdmF0ZUZpZWxkc1tfa2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC50cmlnZ2VyRXZlbnQpIHtcbiAgICAgICAgICBzZWxmW3AudHJpZ2dlckZuTmFtZV0ocC5ldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGY7IC8vIG1haW50YWluIGNoYWluaW5nXG4gICAgfTsgLy8gZnVuY3Rpb25cbiAgfSAvLyByZW1vdmVEYXRhXG5cbn07IC8vIGRlZmluZVxuXG52YXIgZGVmaW5lJDIgPSB7XG4gIGV2ZW50QWxpYXNlc09uOiBmdW5jdGlvbiBldmVudEFsaWFzZXNPbihwcm90bykge1xuICAgIHZhciBwID0gcHJvdG87XG4gICAgcC5hZGRMaXN0ZW5lciA9IHAubGlzdGVuID0gcC5iaW5kID0gcC5vbjtcbiAgICBwLnVubGlzdGVuID0gcC51bmJpbmQgPSBwLm9mZiA9IHAucmVtb3ZlTGlzdGVuZXI7XG4gICAgcC50cmlnZ2VyID0gcC5lbWl0OyAvLyB0aGlzIGlzIGp1c3QgYSB3cmFwcGVyIGFsaWFzIG9mIC5vbigpXG5cbiAgICBwLnBvbiA9IHAucHJvbWlzZU9uID0gZnVuY3Rpb24gKGV2ZW50cywgc2VsZWN0b3IpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24gY2FsbGJhY2soZSkge1xuICAgICAgICAgIHNlbGYub2ZmLmFwcGx5KHNlbGYsIG9mZkFyZ3MpO1xuICAgICAgICAgIHJlc29sdmUoZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIG9uQXJncyA9IGFyZ3MuY29uY2F0KFtjYWxsYmFja10pO1xuICAgICAgICB2YXIgb2ZmQXJncyA9IG9uQXJncy5jb25jYXQoW10pO1xuICAgICAgICBzZWxmLm9uLmFwcGx5KHNlbGYsIG9uQXJncyk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59OyAvLyBkZWZpbmVcblxuLy8gdXNlIHRoaXMgbW9kdWxlIHRvIGNoZXJyeSBwaWNrIGZ1bmN0aW9ucyBpbnRvIHlvdXIgcHJvdG90eXBlXG52YXIgZGVmaW5lJDMgPSB7fTtcbltkZWZpbmUsIGRlZmluZSQxLCBkZWZpbmUkMl0uZm9yRWFjaChmdW5jdGlvbiAobSkge1xuICBleHRlbmQoZGVmaW5lJDMsIG0pO1xufSk7XG5cbnZhciBlbGVzZm4kZCA9IHtcbiAgYW5pbWF0ZTogZGVmaW5lJDMuYW5pbWF0ZSgpLFxuICBhbmltYXRpb246IGRlZmluZSQzLmFuaW1hdGlvbigpLFxuICBhbmltYXRlZDogZGVmaW5lJDMuYW5pbWF0ZWQoKSxcbiAgY2xlYXJRdWV1ZTogZGVmaW5lJDMuY2xlYXJRdWV1ZSgpLFxuICBkZWxheTogZGVmaW5lJDMuZGVsYXkoKSxcbiAgZGVsYXlBbmltYXRpb246IGRlZmluZSQzLmRlbGF5QW5pbWF0aW9uKCksXG4gIHN0b3A6IGRlZmluZSQzLnN0b3AoKVxufTtcblxudmFyIGVsZXNmbiRlID0ge1xuICBjbGFzc2VzOiBmdW5jdGlvbiBjbGFzc2VzKF9jbGFzc2VzKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKF9jbGFzc2VzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciByZXQgPSBbXTtcblxuICAgICAgc2VsZlswXS5fcHJpdmF0ZS5jbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgICByZXR1cm4gcmV0LnB1c2goY2xzKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZWxzZSBpZiAoIWFycmF5KF9jbGFzc2VzKSkge1xuICAgICAgLy8gZXh0cmFjdCBjbGFzc2VzIGZyb20gc3RyaW5nXG4gICAgICBfY2xhc3NlcyA9IChfY2xhc3NlcyB8fCAnJykubWF0Y2goL1xcUysvZykgfHwgW107XG4gICAgfVxuXG4gICAgdmFyIGNoYW5nZWQgPSBbXTtcbiAgICB2YXIgY2xhc3Nlc1NldCA9IG5ldyBTZXQkMShfY2xhc3Nlcyk7IC8vIGNoZWNrIGFuZCB1cGRhdGUgZWFjaCBlbGVcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VsZi5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIGVsZSA9IHNlbGZbal07XG4gICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgICB2YXIgZWxlQ2xhc3NlcyA9IF9wLmNsYXNzZXM7XG4gICAgICB2YXIgY2hhbmdlZEVsZSA9IGZhbHNlOyAvLyBjaGVjayBpZiBlbGUgaGFzIGFsbCBvZiB0aGUgcGFzc2VkIGNsYXNzZXNcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfY2xhc3Nlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2xzID0gX2NsYXNzZXNbaV07XG4gICAgICAgIHZhciBlbGVIYXNDbGFzcyA9IGVsZUNsYXNzZXMuaGFzKGNscyk7XG5cbiAgICAgICAgaWYgKCFlbGVIYXNDbGFzcykge1xuICAgICAgICAgIGNoYW5nZWRFbGUgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IC8vIGNoZWNrIGlmIGVsZSBoYXMgY2xhc3NlcyBvdXRzaWRlIG9mIHRob3NlIHBhc3NlZFxuXG5cbiAgICAgIGlmICghY2hhbmdlZEVsZSkge1xuICAgICAgICBjaGFuZ2VkRWxlID0gZWxlQ2xhc3Nlcy5zaXplICE9PSBfY2xhc3Nlcy5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VkRWxlKSB7XG4gICAgICAgIF9wLmNsYXNzZXMgPSBjbGFzc2VzU2V0O1xuICAgICAgICBjaGFuZ2VkLnB1c2goZWxlKTtcbiAgICAgIH1cbiAgICB9IC8vIHRyaWdnZXIgdXBkYXRlIHN0eWxlIG9uIHRob3NlIGVsZXMgdGhhdCBoYWQgY2xhc3MgY2hhbmdlc1xuXG5cbiAgICBpZiAoY2hhbmdlZC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNwYXduKGNoYW5nZWQpLnVwZGF0ZVN0eWxlKCkuZW1pdCgnY2xhc3MnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZjtcbiAgfSxcbiAgYWRkQ2xhc3M6IGZ1bmN0aW9uIGFkZENsYXNzKGNsYXNzZXMpIHtcbiAgICByZXR1cm4gdGhpcy50b2dnbGVDbGFzcyhjbGFzc2VzLCB0cnVlKTtcbiAgfSxcbiAgaGFzQ2xhc3M6IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHJldHVybiBlbGUgIT0gbnVsbCAmJiBlbGUuX3ByaXZhdGUuY2xhc3Nlcy5oYXMoY2xhc3NOYW1lKTtcbiAgfSxcbiAgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uIHRvZ2dsZUNsYXNzKGNsYXNzZXMsIHRvZ2dsZSkge1xuICAgIGlmICghYXJyYXkoY2xhc3NlcykpIHtcbiAgICAgIC8vIGV4dHJhY3QgY2xhc3NlcyBmcm9tIHN0cmluZ1xuICAgICAgY2xhc3NlcyA9IGNsYXNzZXMubWF0Y2goL1xcUysvZykgfHwgW107XG4gICAgfVxuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0b2dnbGVVbmRlZmQgPSB0b2dnbGUgPT09IHVuZGVmaW5lZDtcbiAgICB2YXIgY2hhbmdlZCA9IFtdOyAvLyBlbGVzIHdobyBoYWQgY2xhc3NlcyBjaGFuZ2VkXG5cbiAgICBmb3IgKHZhciBpID0gMCwgaWwgPSBzZWxmLmxlbmd0aDsgaSA8IGlsOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBzZWxmW2ldO1xuICAgICAgdmFyIGVsZUNsYXNzZXMgPSBlbGUuX3ByaXZhdGUuY2xhc3NlcztcbiAgICAgIHZhciBjaGFuZ2VkRWxlID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2xhc3Nlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgY2xzID0gY2xhc3Nlc1tqXTtcbiAgICAgICAgdmFyIGhhc0NsYXNzID0gZWxlQ2xhc3Nlcy5oYXMoY2xzKTtcbiAgICAgICAgdmFyIGNoYW5nZWROb3cgPSBmYWxzZTtcblxuICAgICAgICBpZiAodG9nZ2xlIHx8IHRvZ2dsZVVuZGVmZCAmJiAhaGFzQ2xhc3MpIHtcbiAgICAgICAgICBlbGVDbGFzc2VzLmFkZChjbHMpO1xuICAgICAgICAgIGNoYW5nZWROb3cgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKCF0b2dnbGUgfHwgdG9nZ2xlVW5kZWZkICYmIGhhc0NsYXNzKSB7XG4gICAgICAgICAgZWxlQ2xhc3Nlc1tcImRlbGV0ZVwiXShjbHMpO1xuICAgICAgICAgIGNoYW5nZWROb3cgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjaGFuZ2VkRWxlICYmIGNoYW5nZWROb3cpIHtcbiAgICAgICAgICBjaGFuZ2VkLnB1c2goZWxlKTtcbiAgICAgICAgICBjaGFuZ2VkRWxlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBmb3IgaiBjbGFzc2VzXG5cbiAgICB9IC8vIGZvciBpIGVsZXNcbiAgICAvLyB0cmlnZ2VyIHVwZGF0ZSBzdHlsZSBvbiB0aG9zZSBlbGVzIHRoYXQgaGFkIGNsYXNzIGNoYW5nZXNcblxuXG4gICAgaWYgKGNoYW5nZWQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zcGF3bihjaGFuZ2VkKS51cGRhdGVTdHlsZSgpLmVtaXQoJ2NsYXNzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGY7XG4gIH0sXG4gIHJlbW92ZUNsYXNzOiBmdW5jdGlvbiByZW1vdmVDbGFzcyhjbGFzc2VzKSB7XG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlQ2xhc3MoY2xhc3NlcywgZmFsc2UpO1xuICB9LFxuICBmbGFzaENsYXNzOiBmdW5jdGlvbiBmbGFzaENsYXNzKGNsYXNzZXMsIGR1cmF0aW9uKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKGR1cmF0aW9uID09IG51bGwpIHtcbiAgICAgIGR1cmF0aW9uID0gMjUwO1xuICAgIH0gZWxzZSBpZiAoZHVyYXRpb24gPT09IDApIHtcbiAgICAgIHJldHVybiBzZWxmOyAvLyBub3RoaW5nIHRvIGRvIHJlYWxseVxuICAgIH1cblxuICAgIHNlbGYuYWRkQ2xhc3MoY2xhc3Nlcyk7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLnJlbW92ZUNsYXNzKGNsYXNzZXMpO1xuICAgIH0sIGR1cmF0aW9uKTtcbiAgICByZXR1cm4gc2VsZjtcbiAgfVxufTtcbmVsZXNmbiRlLmNsYXNzTmFtZSA9IGVsZXNmbiRlLmNsYXNzTmFtZXMgPSBlbGVzZm4kZS5jbGFzc2VzO1xuXG52YXIgdG9rZW5zID0ge1xuICBtZXRhQ2hhcjogJ1tcXFxcIVxcXFxcIlxcXFwjXFxcXCRcXFxcJVxcXFwmXFxcXFxcJ1xcXFwoXFxcXClcXFxcKlxcXFwrXFxcXCxcXFxcLlxcXFwvXFxcXDpcXFxcO1xcXFw8XFxcXD1cXFxcPlxcXFw/XFxcXEBcXFxcW1xcXFxdXFxcXF5cXFxcYFxcXFx7XFxcXHxcXFxcfVxcXFx+XScsXG4gIC8vIGNoYXJzIHdlIG5lZWQgdG8gZXNjYXBlIGluIGxldCBuYW1lcywgZXRjXG4gIGNvbXBhcmF0b3JPcDogJz18XFxcXCE9fD58Pj18PHw8PXxcXFxcJD18XFxcXF49fFxcXFwqPScsXG4gIC8vIGJpbmFyeSBjb21wYXJpc29uIG9wICh1c2VkIGluIGRhdGEgc2VsZWN0b3JzKVxuICBib29sT3A6ICdcXFxcP3xcXFxcIXxcXFxcXicsXG4gIC8vIGJvb2xlYW4gKHVuYXJ5KSBvcGVyYXRvcnMgKHVzZWQgaW4gZGF0YSBzZWxlY3RvcnMpXG4gIHN0cmluZzogJ1wiKD86XFxcXFxcXFxcInxbXlwiXSkqXCInICsgJ3wnICsgXCInKD86XFxcXFxcXFwnfFteJ10pKidcIixcbiAgLy8gc3RyaW5nIGxpdGVyYWxzICh1c2VkIGluIGRhdGEgc2VsZWN0b3JzKSAtLSBkb3VibGVxdW90ZXMgfCBzaW5nbGVxdW90ZXNcbiAgbnVtYmVyOiBudW1iZXIkMSxcbiAgLy8gbnVtYmVyIGxpdGVyYWwgKHVzZWQgaW4gZGF0YSBzZWxlY3RvcnMpIC0tLSBlLmcuIDAuMTIzNCwgMTIzNCwgMTJlMTIzXG4gIG1ldGE6ICdkZWdyZWV8aW5kZWdyZWV8b3V0ZGVncmVlJyxcbiAgLy8gYWxsb3dlZCBtZXRhZGF0YSBmaWVsZHMgKGkuZS4gYWxsb3dlZCBmdW5jdGlvbnMgdG8gdXNlIGZyb20gQ29sbGVjdGlvbilcbiAgc2VwYXJhdG9yOiAnXFxcXHMqLFxcXFxzKicsXG4gIC8vIHF1ZXJpZXMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGUuZy4gZWRnZVtmb28gPSAnYmFyJ10sIG5vZGUuc29tZUNsYXNzXG4gIGRlc2NlbmRhbnQ6ICdcXFxccysnLFxuICBjaGlsZDogJ1xcXFxzKz5cXFxccysnLFxuICBzdWJqZWN0OiAnXFxcXCQnLFxuICBncm91cDogJ25vZGV8ZWRnZXxcXFxcKicsXG4gIGRpcmVjdGVkRWRnZTogJ1xcXFxzKy0+XFxcXHMrJyxcbiAgdW5kaXJlY3RlZEVkZ2U6ICdcXFxccys8LT5cXFxccysnXG59O1xudG9rZW5zLnZhcmlhYmxlID0gJyg/OltcXFxcdy1dfCg/OlxcXFxcXFxcJyArIHRva2Vucy5tZXRhQ2hhciArICcpKSsnOyAvLyBhIHZhcmlhYmxlIG5hbWVcblxudG9rZW5zLnZhbHVlID0gdG9rZW5zLnN0cmluZyArICd8JyArIHRva2Vucy5udW1iZXI7IC8vIGEgdmFsdWUgbGl0ZXJhbCwgZWl0aGVyIGEgc3RyaW5nIG9yIG51bWJlclxuXG50b2tlbnMuY2xhc3NOYW1lID0gdG9rZW5zLnZhcmlhYmxlOyAvLyBhIGNsYXNzIG5hbWUgKGZvbGxvd3MgdmFyaWFibGUgY29udmVudGlvbnMpXG5cbnRva2Vucy5pZCA9IHRva2Vucy52YXJpYWJsZTsgLy8gYW4gZWxlbWVudCBpZCAoZm9sbG93cyB2YXJpYWJsZSBjb252ZW50aW9ucylcblxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIG9wcywgb3AsIGk7IC8vIGFkZCBAIHZhcmlhbnRzIHRvIGNvbXBhcmF0b3JPcFxuXG4gIG9wcyA9IHRva2Vucy5jb21wYXJhdG9yT3Auc3BsaXQoJ3wnKTtcblxuICBmb3IgKGkgPSAwOyBpIDwgb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgb3AgPSBvcHNbaV07XG4gICAgdG9rZW5zLmNvbXBhcmF0b3JPcCArPSAnfEAnICsgb3A7XG4gIH0gLy8gYWRkICEgdmFyaWFudHMgdG8gY29tcGFyYXRvck9wXG5cblxuICBvcHMgPSB0b2tlbnMuY29tcGFyYXRvck9wLnNwbGl0KCd8Jyk7XG5cbiAgZm9yIChpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xuICAgIG9wID0gb3BzW2ldO1xuXG4gICAgaWYgKG9wLmluZGV4T2YoJyEnKSA+PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIHNraXAgb3BzIHRoYXQgZXhwbGljaXRseSBjb250YWluICFcblxuXG4gICAgaWYgKG9wID09PSAnPScpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gc2tpcCA9IGIvYyAhPSBpcyBleHBsaWNpdGx5IGRlZmluZWRcblxuXG4gICAgdG9rZW5zLmNvbXBhcmF0b3JPcCArPSAnfFxcXFwhJyArIG9wO1xuICB9XG59KSgpO1xuXG4vKipcbiAqIE1ha2UgYSBuZXcgcXVlcnkgb2JqZWN0XG4gKlxuICogQHByb3AgdHlwZSB7VHlwZX0gVGhlIHR5cGUgZW51bSAoaW50KSBvZiB0aGUgcXVlcnlcbiAqIEBwcm9wIGNoZWNrcyBMaXN0IG9mIGNoZWNrcyB0byBtYWtlIGFnYWluc3QgYW4gZWxlIHRvIHRlc3QgZm9yIGEgbWF0Y2hcbiAqL1xudmFyIG5ld1F1ZXJ5ID0gZnVuY3Rpb24gbmV3UXVlcnkoKSB7XG4gIHJldHVybiB7XG4gICAgY2hlY2tzOiBbXVxuICB9O1xufTtcblxuLyoqXG4gKiBBIGNoZWNrIHR5cGUgZW51bS1saWtlIG9iamVjdC4gIFVzZXMgaW50ZWdlciB2YWx1ZXMgZm9yIGZhc3QgbWF0Y2goKSBsb29rdXAuXG4gKiBUaGUgb3JkZXJpbmcgZG9lcyBub3QgbWF0dGVyIGFzIGxvbmcgYXMgdGhlIGludHMgYXJlIHVuaXF1ZS5cbiAqL1xudmFyIFR5cGUgPSB7XG4gIC8qKiBFLmcuIG5vZGUgKi9cbiAgR1JPVVA6IDAsXG5cbiAgLyoqIEEgY29sbGVjdGlvbiBvZiBlbGVtZW50cyAqL1xuICBDT0xMRUNUSU9OOiAxLFxuXG4gIC8qKiBBIGZpbHRlcihlbGUpIGZ1bmN0aW9uICovXG4gIEZJTFRFUjogMixcblxuICAvKiogRS5nLiBbZm9vID4gMV0gKi9cbiAgREFUQV9DT01QQVJFOiAzLFxuXG4gIC8qKiBFLmcuIFtmb29dICovXG4gIERBVEFfRVhJU1Q6IDQsXG5cbiAgLyoqIEUuZy4gWz9mb29dICovXG4gIERBVEFfQk9PTDogNSxcblxuICAvKiogRS5nLiBbW2RlZ3JlZSA+IDJdXSAqL1xuICBNRVRBX0NPTVBBUkU6IDYsXG5cbiAgLyoqIEUuZy4gOnNlbGVjdGVkICovXG4gIFNUQVRFOiA3LFxuXG4gIC8qKiBFLmcuICNmb28gKi9cbiAgSUQ6IDgsXG5cbiAgLyoqIEUuZy4gLmZvbyAqL1xuICBDTEFTUzogOSxcblxuICAvKiogRS5nLiAjZm9vIDwtPiAjYmFyICovXG4gIFVORElSRUNURURfRURHRTogMTAsXG5cbiAgLyoqIEUuZy4gI2ZvbyAtPiAjYmFyICovXG4gIERJUkVDVEVEX0VER0U6IDExLFxuXG4gIC8qKiBFLmcuICQjZm9vIC0+ICNiYXIgKi9cbiAgTk9ERV9TT1VSQ0U6IDEyLFxuXG4gIC8qKiBFLmcuICNmb28gLT4gJCNiYXIgKi9cbiAgTk9ERV9UQVJHRVQ6IDEzLFxuXG4gIC8qKiBFLmcuICQjZm9vIDwtPiAjYmFyICovXG4gIE5PREVfTkVJR0hCT1I6IDE0LFxuXG4gIC8qKiBFLmcuICNmb28gPiAjYmFyICovXG4gIENISUxEOiAxNSxcblxuICAvKiogRS5nLiAjZm9vICNiYXIgKi9cbiAgREVTQ0VOREFOVDogMTYsXG5cbiAgLyoqIEUuZy4gJCNmb28gPiAjYmFyICovXG4gIFBBUkVOVDogMTcsXG5cbiAgLyoqIEUuZy4gJCNmb28gI2JhciAqL1xuICBBTkNFU1RPUjogMTgsXG5cbiAgLyoqIEUuZy4gI2ZvbyA+ICRiYXIgPiAjYmF6ICovXG4gIENPTVBPVU5EX1NQTElUOiAxOSxcblxuICAvKiogQWx3YXlzIG1hdGNoZXMsIHVzZWZ1bCBwbGFjZWhvbGRlciBmb3Igc3ViamVjdCBpbiBgQ09NUE9VTkRfU1BMSVRgICovXG4gIFRSVUU6IDIwXG59O1xuXG52YXIgc3RhdGVTZWxlY3RvcnMgPSBbe1xuICBzZWxlY3RvcjogJzpzZWxlY3RlZCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5zZWxlY3RlZCgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOnVuc2VsZWN0ZWQnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLnNlbGVjdGVkKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6c2VsZWN0YWJsZScsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5zZWxlY3RhYmxlKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6dW5zZWxlY3RhYmxlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gIWVsZS5zZWxlY3RhYmxlKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6bG9ja2VkJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmxvY2tlZCgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOnVubG9ja2VkJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gIWVsZS5sb2NrZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzp2aXNpYmxlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLnZpc2libGUoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpoaWRkZW4nLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLnZpc2libGUoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzp0cmFuc3BhcmVudCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS50cmFuc3BhcmVudCgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmdyYWJiZWQnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuZ3JhYmJlZCgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmZyZWUnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLmdyYWJiZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpyZW1vdmVkJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLnJlbW92ZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzppbnNpZGUnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLnJlbW92ZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpncmFiYmFibGUnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuZ3JhYmJhYmxlKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6dW5ncmFiYmFibGUnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLmdyYWJiYWJsZSgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmFuaW1hdGVkJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmFuaW1hdGVkKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6dW5hbmltYXRlZCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuICFlbGUuYW5pbWF0ZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpwYXJlbnQnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuaXNQYXJlbnQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpjaGlsZGxlc3MnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuaXNDaGlsZGxlc3MoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpjaGlsZCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5pc0NoaWxkKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6b3JwaGFuJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmlzT3JwaGFuKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6bm9ub3JwaGFuJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmlzQ2hpbGQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpjb21wb3VuZCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgcmV0dXJuIGVsZS5pc1BhcmVudCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZWxlLnNvdXJjZSgpLmlzUGFyZW50KCkgfHwgZWxlLnRhcmdldCgpLmlzUGFyZW50KCk7XG4gICAgfVxuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmxvb3AnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuaXNMb29wKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6c2ltcGxlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmlzU2ltcGxlKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6YWN0aXZlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmFjdGl2ZSgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmluYWN0aXZlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gIWVsZS5hY3RpdmUoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpiYWNrZ3JvdW5kaW5nJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmJhY2tncm91bmRpbmcoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpub25iYWNrZ3JvdW5kaW5nJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gIWVsZS5iYWNrZ3JvdW5kaW5nKCk7XG4gIH1cbn1dLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgLy8gbi5iLiBzZWxlY3RvcnMgdGhhdCBhcmUgc3RhcnRpbmcgc3Vic3RyaW5ncyBvZiBvdGhlcnMgbXVzdCBoYXZlIHRoZSBsb25nZXIgb25lcyBmaXJzdFxuICByZXR1cm4gZGVzY2VuZGluZyhhLnNlbGVjdG9yLCBiLnNlbGVjdG9yKTtcbn0pO1xuXG52YXIgbG9va3VwID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2VsVG9GbiA9IHt9O1xuICB2YXIgcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlU2VsZWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgcyA9IHN0YXRlU2VsZWN0b3JzW2ldO1xuICAgIHNlbFRvRm5bcy5zZWxlY3Rvcl0gPSBzLm1hdGNoZXM7XG4gIH1cblxuICByZXR1cm4gc2VsVG9Gbjtcbn0oKTtcblxudmFyIHN0YXRlU2VsZWN0b3JNYXRjaGVzID0gZnVuY3Rpb24gc3RhdGVTZWxlY3Rvck1hdGNoZXMoc2VsLCBlbGUpIHtcbiAgcmV0dXJuIGxvb2t1cFtzZWxdKGVsZSk7XG59O1xudmFyIHN0YXRlU2VsZWN0b3JSZWdleCA9ICcoJyArIHN0YXRlU2VsZWN0b3JzLm1hcChmdW5jdGlvbiAocykge1xuICByZXR1cm4gcy5zZWxlY3Rvcjtcbn0pLmpvaW4oJ3wnKSArICcpJztcblxuLy8gc28gdGhhdCB2YWx1ZXMgZ2V0IGNvbXBhcmVkIHByb3Blcmx5IGluIFNlbGVjdG9yLmZpbHRlcigpXG5cbnZhciBjbGVhbk1ldGFDaGFycyA9IGZ1bmN0aW9uIGNsZWFuTWV0YUNoYXJzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXFxcXFwoJyArIHRva2Vucy5tZXRhQ2hhciArICcpJywgJ2cnKSwgZnVuY3Rpb24gKG1hdGNoLCAkMSkge1xuICAgIHJldHVybiAkMTtcbiAgfSk7XG59O1xuXG52YXIgcmVwbGFjZUxhc3RRdWVyeSA9IGZ1bmN0aW9uIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIGV4YW1pbmluZ1F1ZXJ5LCByZXBsYWNlbWVudFF1ZXJ5KSB7XG4gIHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdID0gcmVwbGFjZW1lbnRRdWVyeTtcbn07IC8vIE5PVEU6IGFkZCBuZXcgZXhwcmVzc2lvbiBzeW50YXggaGVyZSB0byBoYXZlIGl0IHJlY29nbmlzZWQgYnkgdGhlIHBhcnNlcjtcbi8vIC0gYSBxdWVyeSBjb250YWlucyBhbGwgYWRqYWNlbnQgKGkuZS4gbm8gc2VwYXJhdG9yIGluIGJldHdlZW4pIGV4cHJlc3Npb25zO1xuLy8gLSB0aGUgY3VycmVudCBxdWVyeSBpcyBzdG9yZWQgaW4gc2VsZWN0b3JbaV1cbi8vIC0geW91IG5lZWQgdG8gY2hlY2sgdGhlIHF1ZXJ5IG9iamVjdHMgaW4gbWF0Y2goKSBmb3IgaXQgYWN0dWFsbHkgZmlsdGVyIHByb3Blcmx5LCBidXQgdGhhdCdzIHByZXR0eSBzdHJhaWdodCBmb3J3YXJkXG5cblxudmFyIGV4cHJzID0gW3tcbiAgbmFtZTogJ2dyb3VwJyxcbiAgLy8ganVzdCB1c2VkIGZvciBpZGVudGlmeWluZyB3aGVuIGRlYnVnZ2luZ1xuICBxdWVyeTogdHJ1ZSxcbiAgcmVnZXg6ICcoJyArIHRva2Vucy5ncm91cCArICcpJyxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZikge1xuICAgIHZhciBfcmVmMiA9IF9zbGljZWRUb0FycmF5KF9yZWYsIDEpLFxuICAgICAgICBncm91cCA9IF9yZWYyWzBdO1xuXG4gICAgcXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgdHlwZTogVHlwZS5HUk9VUCxcbiAgICAgIHZhbHVlOiBncm91cCA9PT0gJyonID8gZ3JvdXAgOiBncm91cCArICdzJ1xuICAgIH0pO1xuICB9XG59LCB7XG4gIG5hbWU6ICdzdGF0ZScsXG4gIHF1ZXJ5OiB0cnVlLFxuICByZWdleDogc3RhdGVTZWxlY3RvclJlZ2V4LFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5LCBfcmVmMykge1xuICAgIHZhciBfcmVmNCA9IF9zbGljZWRUb0FycmF5KF9yZWYzLCAxKSxcbiAgICAgICAgc3RhdGUgPSBfcmVmNFswXTtcblxuICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgIHR5cGU6IFR5cGUuU1RBVEUsXG4gICAgICB2YWx1ZTogc3RhdGVcbiAgICB9KTtcbiAgfVxufSwge1xuICBuYW1lOiAnaWQnLFxuICBxdWVyeTogdHJ1ZSxcbiAgcmVnZXg6ICdcXFxcIygnICsgdG9rZW5zLmlkICsgJyknLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5LCBfcmVmNSkge1xuICAgIHZhciBfcmVmNiA9IF9zbGljZWRUb0FycmF5KF9yZWY1LCAxKSxcbiAgICAgICAgaWQgPSBfcmVmNlswXTtcblxuICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgIHR5cGU6IFR5cGUuSUQsXG4gICAgICB2YWx1ZTogY2xlYW5NZXRhQ2hhcnMoaWQpXG4gICAgfSk7XG4gIH1cbn0sIHtcbiAgbmFtZTogJ2NsYXNzTmFtZScsXG4gIHF1ZXJ5OiB0cnVlLFxuICByZWdleDogJ1xcXFwuKCcgKyB0b2tlbnMuY2xhc3NOYW1lICsgJyknLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5LCBfcmVmNykge1xuICAgIHZhciBfcmVmOCA9IF9zbGljZWRUb0FycmF5KF9yZWY3LCAxKSxcbiAgICAgICAgY2xhc3NOYW1lID0gX3JlZjhbMF07XG5cbiAgICBxdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICB0eXBlOiBUeXBlLkNMQVNTLFxuICAgICAgdmFsdWU6IGNsZWFuTWV0YUNoYXJzKGNsYXNzTmFtZSlcbiAgICB9KTtcbiAgfVxufSwge1xuICBuYW1lOiAnZGF0YUV4aXN0cycsXG4gIHF1ZXJ5OiB0cnVlLFxuICByZWdleDogJ1xcXFxbXFxcXHMqKCcgKyB0b2tlbnMudmFyaWFibGUgKyAnKVxcXFxzKlxcXFxdJyxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZjkpIHtcbiAgICB2YXIgX3JlZjEwID0gX3NsaWNlZFRvQXJyYXkoX3JlZjksIDEpLFxuICAgICAgICB2YXJpYWJsZSA9IF9yZWYxMFswXTtcblxuICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgIHR5cGU6IFR5cGUuREFUQV9FWElTVCxcbiAgICAgIGZpZWxkOiBjbGVhbk1ldGFDaGFycyh2YXJpYWJsZSlcbiAgICB9KTtcbiAgfVxufSwge1xuICBuYW1lOiAnZGF0YUNvbXBhcmUnLFxuICBxdWVyeTogdHJ1ZSxcbiAgcmVnZXg6ICdcXFxcW1xcXFxzKignICsgdG9rZW5zLnZhcmlhYmxlICsgJylcXFxccyooJyArIHRva2Vucy5jb21wYXJhdG9yT3AgKyAnKVxcXFxzKignICsgdG9rZW5zLnZhbHVlICsgJylcXFxccypcXFxcXScsXG4gIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnksIF9yZWYxMSkge1xuICAgIHZhciBfcmVmMTIgPSBfc2xpY2VkVG9BcnJheShfcmVmMTEsIDMpLFxuICAgICAgICB2YXJpYWJsZSA9IF9yZWYxMlswXSxcbiAgICAgICAgY29tcGFyYXRvck9wID0gX3JlZjEyWzFdLFxuICAgICAgICB2YWx1ZSA9IF9yZWYxMlsyXTtcblxuICAgIHZhciB2YWx1ZUlzU3RyaW5nID0gbmV3IFJlZ0V4cCgnXicgKyB0b2tlbnMuc3RyaW5nICsgJyQnKS5leGVjKHZhbHVlKSAhPSBudWxsO1xuXG4gICAgaWYgKHZhbHVlSXNTdHJpbmcpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDEsIHZhbHVlLmxlbmd0aCAtIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIH1cblxuICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgIHR5cGU6IFR5cGUuREFUQV9DT01QQVJFLFxuICAgICAgZmllbGQ6IGNsZWFuTWV0YUNoYXJzKHZhcmlhYmxlKSxcbiAgICAgIG9wZXJhdG9yOiBjb21wYXJhdG9yT3AsXG4gICAgICB2YWx1ZTogdmFsdWVcbiAgICB9KTtcbiAgfVxufSwge1xuICBuYW1lOiAnZGF0YUJvb2wnLFxuICBxdWVyeTogdHJ1ZSxcbiAgcmVnZXg6ICdcXFxcW1xcXFxzKignICsgdG9rZW5zLmJvb2xPcCArICcpXFxcXHMqKCcgKyB0b2tlbnMudmFyaWFibGUgKyAnKVxcXFxzKlxcXFxdJyxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZjEzKSB7XG4gICAgdmFyIF9yZWYxNCA9IF9zbGljZWRUb0FycmF5KF9yZWYxMywgMiksXG4gICAgICAgIGJvb2xPcCA9IF9yZWYxNFswXSxcbiAgICAgICAgdmFyaWFibGUgPSBfcmVmMTRbMV07XG5cbiAgICBxdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICB0eXBlOiBUeXBlLkRBVEFfQk9PTCxcbiAgICAgIGZpZWxkOiBjbGVhbk1ldGFDaGFycyh2YXJpYWJsZSksXG4gICAgICBvcGVyYXRvcjogYm9vbE9wXG4gICAgfSk7XG4gIH1cbn0sIHtcbiAgbmFtZTogJ21ldGFDb21wYXJlJyxcbiAgcXVlcnk6IHRydWUsXG4gIHJlZ2V4OiAnXFxcXFtcXFxcW1xcXFxzKignICsgdG9rZW5zLm1ldGEgKyAnKVxcXFxzKignICsgdG9rZW5zLmNvbXBhcmF0b3JPcCArICcpXFxcXHMqKCcgKyB0b2tlbnMubnVtYmVyICsgJylcXFxccypcXFxcXVxcXFxdJyxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZjE1KSB7XG4gICAgdmFyIF9yZWYxNiA9IF9zbGljZWRUb0FycmF5KF9yZWYxNSwgMyksXG4gICAgICAgIG1ldGEgPSBfcmVmMTZbMF0sXG4gICAgICAgIGNvbXBhcmF0b3JPcCA9IF9yZWYxNlsxXSxcbiAgICAgICAgbnVtYmVyID0gX3JlZjE2WzJdO1xuXG4gICAgcXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgdHlwZTogVHlwZS5NRVRBX0NPTVBBUkUsXG4gICAgICBmaWVsZDogY2xlYW5NZXRhQ2hhcnMobWV0YSksXG4gICAgICBvcGVyYXRvcjogY29tcGFyYXRvck9wLFxuICAgICAgdmFsdWU6IHBhcnNlRmxvYXQobnVtYmVyKVxuICAgIH0pO1xuICB9XG59LCB7XG4gIG5hbWU6ICduZXh0UXVlcnknLFxuICBzZXBhcmF0b3I6IHRydWUsXG4gIHJlZ2V4OiB0b2tlbnMuc2VwYXJhdG9yLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5KSB7XG4gICAgdmFyIGN1cnJlbnRTdWJqZWN0ID0gc2VsZWN0b3IuY3VycmVudFN1YmplY3Q7XG4gICAgdmFyIGVkZ2VDb3VudCA9IHNlbGVjdG9yLmVkZ2VDb3VudDtcbiAgICB2YXIgY29tcG91bmRDb3VudCA9IHNlbGVjdG9yLmNvbXBvdW5kQ291bnQ7XG4gICAgdmFyIGxhc3RRID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoY3VycmVudFN1YmplY3QgIT0gbnVsbCkge1xuICAgICAgbGFzdFEuc3ViamVjdCA9IGN1cnJlbnRTdWJqZWN0O1xuICAgICAgc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIGxhc3RRLmVkZ2VDb3VudCA9IGVkZ2VDb3VudDtcbiAgICBsYXN0US5jb21wb3VuZENvdW50ID0gY29tcG91bmRDb3VudDtcbiAgICBzZWxlY3Rvci5lZGdlQ291bnQgPSAwO1xuICAgIHNlbGVjdG9yLmNvbXBvdW5kQ291bnQgPSAwOyAvLyBnbyBvbiB0byBuZXh0IHF1ZXJ5XG5cbiAgICB2YXIgbmV4dFF1ZXJ5ID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoKytdID0gbmV3UXVlcnkoKTtcbiAgICByZXR1cm4gbmV4dFF1ZXJ5OyAvLyB0aGlzIGlzIHRoZSBuZXcgcXVlcnkgdG8gYmUgZmlsbGVkIGJ5IHRoZSBmb2xsb3dpbmcgZXhwcnNcbiAgfVxufSwge1xuICBuYW1lOiAnZGlyZWN0ZWRFZGdlJyxcbiAgc2VwYXJhdG9yOiB0cnVlLFxuICByZWdleDogdG9rZW5zLmRpcmVjdGVkRWRnZSxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSkge1xuICAgIGlmIChzZWxlY3Rvci5jdXJyZW50U3ViamVjdCA9PSBudWxsKSB7XG4gICAgICAvLyB1bmRpcmVjdGVkIGVkZ2VcbiAgICAgIHZhciBlZGdlUXVlcnkgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIHNvdXJjZSA9IHF1ZXJ5O1xuICAgICAgdmFyIHRhcmdldCA9IG5ld1F1ZXJ5KCk7XG4gICAgICBlZGdlUXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLkRJUkVDVEVEX0VER0UsXG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICB0YXJnZXQ6IHRhcmdldFxuICAgICAgfSk7IC8vIHRoZSBxdWVyeSBpbiB0aGUgc2VsZWN0b3Igc2hvdWxkIGJlIHRoZSBlZGdlIHJhdGhlciB0aGFuIHRoZSBzb3VyY2VcblxuICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgcXVlcnksIGVkZ2VRdWVyeSk7XG4gICAgICBzZWxlY3Rvci5lZGdlQ291bnQrKzsgLy8gd2UncmUgbm93IHBvcHVsYXRpbmcgdGhlIHRhcmdldCBxdWVyeSB3aXRoIGV4cHJlc3Npb25zIHRoYXQgZm9sbG93XG5cbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNvdXJjZS90YXJnZXRcbiAgICAgIHZhciBzcmNUZ3RRID0gbmV3UXVlcnkoKTtcbiAgICAgIHZhciBfc291cmNlID0gcXVlcnk7XG5cbiAgICAgIHZhciBfdGFyZ2V0ID0gbmV3UXVlcnkoKTtcblxuICAgICAgc3JjVGd0US5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuTk9ERV9TT1VSQ0UsXG4gICAgICAgIHNvdXJjZTogX3NvdXJjZSxcbiAgICAgICAgdGFyZ2V0OiBfdGFyZ2V0XG4gICAgICB9KTsgLy8gdGhlIHF1ZXJ5IGluIHRoZSBzZWxlY3RvciBzaG91bGQgYmUgdGhlIG5laWdoYm91cmhvb2QgcmF0aGVyIHRoYW4gdGhlIG5vZGVcblxuICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgcXVlcnksIHNyY1RndFEpO1xuICAgICAgc2VsZWN0b3IuZWRnZUNvdW50Kys7XG4gICAgICByZXR1cm4gX3RhcmdldDsgLy8gbm93IHBvcHVsYXRpbmcgdGhlIHRhcmdldCB3aXRoIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbnNcbiAgICB9XG4gIH1cbn0sIHtcbiAgbmFtZTogJ3VuZGlyZWN0ZWRFZGdlJyxcbiAgc2VwYXJhdG9yOiB0cnVlLFxuICByZWdleDogdG9rZW5zLnVuZGlyZWN0ZWRFZGdlLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5KSB7XG4gICAgaWYgKHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID09IG51bGwpIHtcbiAgICAgIC8vIHVuZGlyZWN0ZWQgZWRnZVxuICAgICAgdmFyIGVkZ2VRdWVyeSA9IG5ld1F1ZXJ5KCk7XG4gICAgICB2YXIgc291cmNlID0gcXVlcnk7XG4gICAgICB2YXIgdGFyZ2V0ID0gbmV3UXVlcnkoKTtcbiAgICAgIGVkZ2VRdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuVU5ESVJFQ1RFRF9FREdFLFxuICAgICAgICBub2RlczogW3NvdXJjZSwgdGFyZ2V0XVxuICAgICAgfSk7IC8vIHRoZSBxdWVyeSBpbiB0aGUgc2VsZWN0b3Igc2hvdWxkIGJlIHRoZSBlZGdlIHJhdGhlciB0aGFuIHRoZSBzb3VyY2VcblxuICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgcXVlcnksIGVkZ2VRdWVyeSk7XG4gICAgICBzZWxlY3Rvci5lZGdlQ291bnQrKzsgLy8gd2UncmUgbm93IHBvcHVsYXRpbmcgdGhlIHRhcmdldCBxdWVyeSB3aXRoIGV4cHJlc3Npb25zIHRoYXQgZm9sbG93XG5cbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG5laWdoYm91cmhvb2RcbiAgICAgIHZhciBuaG9vZFEgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIG5vZGUgPSBxdWVyeTtcbiAgICAgIHZhciBuZWlnaGJvciA9IG5ld1F1ZXJ5KCk7XG4gICAgICBuaG9vZFEuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLk5PREVfTkVJR0hCT1IsXG4gICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgIG5laWdoYm9yOiBuZWlnaGJvclxuICAgICAgfSk7IC8vIHRoZSBxdWVyeSBpbiB0aGUgc2VsZWN0b3Igc2hvdWxkIGJlIHRoZSBuZWlnaGJvdXJob29kIHJhdGhlciB0aGFuIHRoZSBub2RlXG5cbiAgICAgIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIHF1ZXJ5LCBuaG9vZFEpO1xuICAgICAgcmV0dXJuIG5laWdoYm9yOyAvLyBub3cgcG9wdWxhdGluZyB0aGUgbmVpZ2hib3Igd2l0aCBmb2xsb3dpbmcgZXhwcmVzc2lvbnNcbiAgICB9XG4gIH1cbn0sIHtcbiAgbmFtZTogJ2NoaWxkJyxcbiAgc2VwYXJhdG9yOiB0cnVlLFxuICByZWdleDogdG9rZW5zLmNoaWxkLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5KSB7XG4gICAgaWYgKHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID09IG51bGwpIHtcbiAgICAgIC8vIGRlZmF1bHQ6IGNoaWxkIHF1ZXJ5XG4gICAgICB2YXIgcGFyZW50Q2hpbGRRdWVyeSA9IG5ld1F1ZXJ5KCk7XG4gICAgICB2YXIgY2hpbGQgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIHBhcmVudCA9IHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdO1xuICAgICAgcGFyZW50Q2hpbGRRdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuQ0hJTEQsXG4gICAgICAgIHBhcmVudDogcGFyZW50LFxuICAgICAgICBjaGlsZDogY2hpbGRcbiAgICAgIH0pOyAvLyB0aGUgcXVlcnkgaW4gdGhlIHNlbGVjdG9yIHNob3VsZCBiZSB0aGUgJz4nIGl0c2VsZlxuXG4gICAgICByZXBsYWNlTGFzdFF1ZXJ5KHNlbGVjdG9yLCBxdWVyeSwgcGFyZW50Q2hpbGRRdWVyeSk7XG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7IC8vIHdlJ3JlIG5vdyBwb3B1bGF0aW5nIHRoZSBjaGlsZCBxdWVyeSB3aXRoIGV4cHJlc3Npb25zIHRoYXQgZm9sbG93XG5cbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID09PSBxdWVyeSkge1xuICAgICAgLy8gY29tcG91bmQgc3BsaXQgcXVlcnlcbiAgICAgIHZhciBjb21wb3VuZCA9IG5ld1F1ZXJ5KCk7XG4gICAgICB2YXIgbGVmdCA9IHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdO1xuICAgICAgdmFyIHJpZ2h0ID0gbmV3UXVlcnkoKTtcbiAgICAgIHZhciBzdWJqZWN0ID0gbmV3UXVlcnkoKTtcblxuICAgICAgdmFyIF9jaGlsZCA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfcGFyZW50ID0gbmV3UXVlcnkoKTsgLy8gc2V0IHVwIHRoZSByb290IGNvbXBvdW5kIHFcblxuXG4gICAgICBjb21wb3VuZC5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuQ09NUE9VTkRfU1BMSVQsXG4gICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgIHJpZ2h0OiByaWdodCxcbiAgICAgICAgc3ViamVjdDogc3ViamVjdFxuICAgICAgfSk7IC8vIHBvcHVsYXRlIHRoZSBzdWJqZWN0IGFuZCByZXBsYWNlIHRoZSBxIGF0IHRoZSBvbGQgc3BvdCAod2l0aGluIGxlZnQpIHdpdGggVFJVRVxuXG4gICAgICBzdWJqZWN0LmNoZWNrcyA9IHF1ZXJ5LmNoZWNrczsgLy8gdGFrZSB0aGUgY2hlY2tzIGZyb20gdGhlIGxlZnRcblxuICAgICAgcXVlcnkuY2hlY2tzID0gW3tcbiAgICAgICAgdHlwZTogVHlwZS5UUlVFXG4gICAgICB9XTsgLy8gY2hlY2tzIHVuZGVyIGxlZnQgcmVmcyB0aGUgc3ViamVjdCBpbXBsaWNpdGx5XG4gICAgICAvLyBzZXQgdXAgdGhlIHJpZ2h0IHFcblxuICAgICAgX3BhcmVudC5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuVFJVRVxuICAgICAgfSk7IC8vIHBhcmVudCBpbXBsaWNpdGx5IHJlZnMgdGhlIHN1YmplY3RcblxuXG4gICAgICByaWdodC5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuUEFSRU5ULFxuICAgICAgICAvLyB0eXBlIGlzIHN3YXBwZWQgb24gcmlnaHQgc2lkZSBxdWVyaWVzXG4gICAgICAgIHBhcmVudDogX3BhcmVudCxcbiAgICAgICAgY2hpbGQ6IF9jaGlsZCAvLyBlbXB0eSBmb3Igbm93XG5cbiAgICAgIH0pO1xuICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgbGVmdCwgY29tcG91bmQpOyAvLyB1cGRhdGUgdGhlIHJlZiBzaW5jZSB3ZSBtb3ZlZCB0aGluZ3MgYXJvdW5kIGZvciBgcXVlcnlgXG5cbiAgICAgIHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID0gc3ViamVjdDtcbiAgICAgIHNlbGVjdG9yLmNvbXBvdW5kQ291bnQrKztcbiAgICAgIHJldHVybiBfY2hpbGQ7IC8vIG5vdyBwb3B1bGF0aW5nIHRoZSByaWdodCBzaWRlJ3MgY2hpbGRcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcGFyZW50IHF1ZXJ5XG4gICAgICAvLyBpbmZvIGZvciBwYXJlbnQgcXVlcnlcbiAgICAgIHZhciBfcGFyZW50MiA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfY2hpbGQyID0gbmV3UXVlcnkoKTtcblxuICAgICAgdmFyIHBjUUNoZWNrcyA9IFt7XG4gICAgICAgIHR5cGU6IFR5cGUuUEFSRU5ULFxuICAgICAgICBwYXJlbnQ6IF9wYXJlbnQyLFxuICAgICAgICBjaGlsZDogX2NoaWxkMlxuICAgICAgfV07IC8vIHRoZSBwYXJlbnQtY2hpbGQgcXVlcnkgdGFrZXMgdGhlIHBsYWNlIG9mIHRoZSBxdWVyeSBwcmV2aW91c2x5IGJlaW5nIHBvcHVsYXRlZFxuXG4gICAgICBfcGFyZW50Mi5jaGVja3MgPSBxdWVyeS5jaGVja3M7IC8vIHRoZSBwcmV2aW91cyBxdWVyeSBjb250YWlucyB0aGUgY2hlY2tzIGZvciB0aGUgcGFyZW50XG5cbiAgICAgIHF1ZXJ5LmNoZWNrcyA9IHBjUUNoZWNrczsgLy8gcGMgcXVlcnkgdGFrZXMgb3ZlclxuXG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7XG4gICAgICByZXR1cm4gX2NoaWxkMjsgLy8gd2UncmUgbm93IHBvcHVsYXRpbmcgdGhlIGNoaWxkXG4gICAgfVxuICB9XG59LCB7XG4gIG5hbWU6ICdkZXNjZW5kYW50JyxcbiAgc2VwYXJhdG9yOiB0cnVlLFxuICByZWdleDogdG9rZW5zLmRlc2NlbmRhbnQsXG4gIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnkpIHtcbiAgICBpZiAoc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPT0gbnVsbCkge1xuICAgICAgLy8gZGVmYXVsdDogZGVzY2VuZGFudCBxdWVyeVxuICAgICAgdmFyIGFuY0NoUXVlcnkgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIGRlc2NlbmRhbnQgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIGFuY2VzdG9yID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoIC0gMV07XG4gICAgICBhbmNDaFF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgICAgdHlwZTogVHlwZS5ERVNDRU5EQU5ULFxuICAgICAgICBhbmNlc3RvcjogYW5jZXN0b3IsXG4gICAgICAgIGRlc2NlbmRhbnQ6IGRlc2NlbmRhbnRcbiAgICAgIH0pOyAvLyB0aGUgcXVlcnkgaW4gdGhlIHNlbGVjdG9yIHNob3VsZCBiZSB0aGUgJz4nIGl0c2VsZlxuXG4gICAgICByZXBsYWNlTGFzdFF1ZXJ5KHNlbGVjdG9yLCBxdWVyeSwgYW5jQ2hRdWVyeSk7XG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7IC8vIHdlJ3JlIG5vdyBwb3B1bGF0aW5nIHRoZSBkZXNjZW5kYW50IHF1ZXJ5IHdpdGggZXhwcmVzc2lvbnMgdGhhdCBmb2xsb3dcblxuICAgICAgcmV0dXJuIGRlc2NlbmRhbnQ7XG4gICAgfSBlbHNlIGlmIChzZWxlY3Rvci5jdXJyZW50U3ViamVjdCA9PT0gcXVlcnkpIHtcbiAgICAgIC8vIGNvbXBvdW5kIHNwbGl0IHF1ZXJ5XG4gICAgICB2YXIgY29tcG91bmQgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIGxlZnQgPSBzZWxlY3RvcltzZWxlY3Rvci5sZW5ndGggLSAxXTtcbiAgICAgIHZhciByaWdodCA9IG5ld1F1ZXJ5KCk7XG4gICAgICB2YXIgc3ViamVjdCA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfZGVzY2VuZGFudCA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfYW5jZXN0b3IgPSBuZXdRdWVyeSgpOyAvLyBzZXQgdXAgdGhlIHJvb3QgY29tcG91bmQgcVxuXG5cbiAgICAgIGNvbXBvdW5kLmNoZWNrcy5wdXNoKHtcbiAgICAgICAgdHlwZTogVHlwZS5DT01QT1VORF9TUExJVCxcbiAgICAgICAgbGVmdDogbGVmdCxcbiAgICAgICAgcmlnaHQ6IHJpZ2h0LFxuICAgICAgICBzdWJqZWN0OiBzdWJqZWN0XG4gICAgICB9KTsgLy8gcG9wdWxhdGUgdGhlIHN1YmplY3QgYW5kIHJlcGxhY2UgdGhlIHEgYXQgdGhlIG9sZCBzcG90ICh3aXRoaW4gbGVmdCkgd2l0aCBUUlVFXG5cbiAgICAgIHN1YmplY3QuY2hlY2tzID0gcXVlcnkuY2hlY2tzOyAvLyB0YWtlIHRoZSBjaGVja3MgZnJvbSB0aGUgbGVmdFxuXG4gICAgICBxdWVyeS5jaGVja3MgPSBbe1xuICAgICAgICB0eXBlOiBUeXBlLlRSVUVcbiAgICAgIH1dOyAvLyBjaGVja3MgdW5kZXIgbGVmdCByZWZzIHRoZSBzdWJqZWN0IGltcGxpY2l0bHlcbiAgICAgIC8vIHNldCB1cCB0aGUgcmlnaHQgcVxuXG4gICAgICBfYW5jZXN0b3IuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLlRSVUVcbiAgICAgIH0pOyAvLyBhbmNlc3RvciBpbXBsaWNpdGx5IHJlZnMgdGhlIHN1YmplY3RcblxuXG4gICAgICByaWdodC5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuQU5DRVNUT1IsXG4gICAgICAgIC8vIHR5cGUgaXMgc3dhcHBlZCBvbiByaWdodCBzaWRlIHF1ZXJpZXNcbiAgICAgICAgYW5jZXN0b3I6IF9hbmNlc3RvcixcbiAgICAgICAgZGVzY2VuZGFudDogX2Rlc2NlbmRhbnQgLy8gZW1wdHkgZm9yIG5vd1xuXG4gICAgICB9KTtcbiAgICAgIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIGxlZnQsIGNvbXBvdW5kKTsgLy8gdXBkYXRlIHRoZSByZWYgc2luY2Ugd2UgbW92ZWQgdGhpbmdzIGFyb3VuZCBmb3IgYHF1ZXJ5YFxuXG4gICAgICBzZWxlY3Rvci5jdXJyZW50U3ViamVjdCA9IHN1YmplY3Q7XG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7XG4gICAgICByZXR1cm4gX2Rlc2NlbmRhbnQ7IC8vIG5vdyBwb3B1bGF0aW5nIHRoZSByaWdodCBzaWRlJ3MgZGVzY2VuZGFudFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhbmNlc3RvciBxdWVyeVxuICAgICAgLy8gaW5mbyBmb3IgcGFyZW50IHF1ZXJ5XG4gICAgICB2YXIgX2FuY2VzdG9yMiA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfZGVzY2VuZGFudDIgPSBuZXdRdWVyeSgpO1xuXG4gICAgICB2YXIgYWRRQ2hlY2tzID0gW3tcbiAgICAgICAgdHlwZTogVHlwZS5BTkNFU1RPUixcbiAgICAgICAgYW5jZXN0b3I6IF9hbmNlc3RvcjIsXG4gICAgICAgIGRlc2NlbmRhbnQ6IF9kZXNjZW5kYW50MlxuICAgICAgfV07IC8vIHRoZSBwYXJlbnQtY2hpbGQgcXVlcnkgdGFrZXMgdGhlIHBsYWNlIG9mIHRoZSBxdWVyeSBwcmV2aW91c2x5IGJlaW5nIHBvcHVsYXRlZFxuXG4gICAgICBfYW5jZXN0b3IyLmNoZWNrcyA9IHF1ZXJ5LmNoZWNrczsgLy8gdGhlIHByZXZpb3VzIHF1ZXJ5IGNvbnRhaW5zIHRoZSBjaGVja3MgZm9yIHRoZSBwYXJlbnRcblxuICAgICAgcXVlcnkuY2hlY2tzID0gYWRRQ2hlY2tzOyAvLyBwYyBxdWVyeSB0YWtlcyBvdmVyXG5cbiAgICAgIHNlbGVjdG9yLmNvbXBvdW5kQ291bnQrKztcbiAgICAgIHJldHVybiBfZGVzY2VuZGFudDI7IC8vIHdlJ3JlIG5vdyBwb3B1bGF0aW5nIHRoZSBjaGlsZFxuICAgIH1cbiAgfVxufSwge1xuICBuYW1lOiAnc3ViamVjdCcsXG4gIG1vZGlmaWVyOiB0cnVlLFxuICByZWdleDogdG9rZW5zLnN1YmplY3QsXG4gIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnkpIHtcbiAgICBpZiAoc2VsZWN0b3IuY3VycmVudFN1YmplY3QgIT0gbnVsbCAmJiBzZWxlY3Rvci5jdXJyZW50U3ViamVjdCAhPT0gcXVlcnkpIHtcbiAgICAgIHdhcm4oJ1JlZGVmaW5pdGlvbiBvZiBzdWJqZWN0IGluIHNlbGVjdG9yIGAnICsgc2VsZWN0b3IudG9TdHJpbmcoKSArICdgJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPSBxdWVyeTtcbiAgICB2YXIgdG9wUSA9IHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdO1xuICAgIHZhciB0b3BDaGsgPSB0b3BRLmNoZWNrc1swXTtcbiAgICB2YXIgdG9wVHlwZSA9IHRvcENoayA9PSBudWxsID8gbnVsbCA6IHRvcENoay50eXBlO1xuXG4gICAgaWYgKHRvcFR5cGUgPT09IFR5cGUuRElSRUNURURfRURHRSkge1xuICAgICAgLy8gZGlyZWN0ZWQgZWRnZSB3aXRoIHN1YmplY3Qgb24gdGhlIHRhcmdldFxuICAgICAgLy8gY2hhbmdlIHRvIHRhcmdldCBub2RlIGNoZWNrXG4gICAgICB0b3BDaGsudHlwZSA9IFR5cGUuTk9ERV9UQVJHRVQ7XG4gICAgfSBlbHNlIGlmICh0b3BUeXBlID09PSBUeXBlLlVORElSRUNURURfRURHRSkge1xuICAgICAgLy8gdW5kaXJlY3RlZCBlZGdlIHdpdGggc3ViamVjdCBvbiB0aGUgc2Vjb25kIG5vZGVcbiAgICAgIC8vIGNoYW5nZSB0byBuZWlnaGJvciBjaGVja1xuICAgICAgdG9wQ2hrLnR5cGUgPSBUeXBlLk5PREVfTkVJR0hCT1I7XG4gICAgICB0b3BDaGsubm9kZSA9IHRvcENoay5ub2Rlc1sxXTsgLy8gc2Vjb25kIG5vZGUgaXMgc3ViamVjdFxuXG4gICAgICB0b3BDaGsubmVpZ2hib3IgPSB0b3BDaGsubm9kZXNbMF07IC8vIGNsZWFuIHVwIHVudXNlZCBmaWVsZHMgZm9yIG5ldyB0eXBlXG5cbiAgICAgIHRvcENoay5ub2RlcyA9IG51bGw7XG4gICAgfVxuICB9XG59XTtcbmV4cHJzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgcmV0dXJuIGUucmVnZXhPYmogPSBuZXcgUmVnRXhwKCdeJyArIGUucmVnZXgpO1xufSk7XG5cbi8qKlxuICogT2YgYWxsIHRoZSBleHByZXNzaW9ucywgZmluZCB0aGUgZmlyc3QgbWF0Y2ggaW4gdGhlIHJlbWFpbmluZyB0ZXh0LlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbWFpbmluZyBUaGUgcmVtYWluaW5nIHRleHQgdG8gcGFyc2VcbiAqIEByZXR1cm5zIFRoZSBtYXRjaGVkIGV4cHJlc3Npb24gYW5kIHRoZSBuZXdseSByZW1haW5pbmcgdGV4dCBgeyBleHByLCBtYXRjaCwgbmFtZSwgcmVtYWluaW5nIH1gXG4gKi9cblxudmFyIGNvbnN1bWVFeHByID0gZnVuY3Rpb24gY29uc3VtZUV4cHIocmVtYWluaW5nKSB7XG4gIHZhciBleHByO1xuICB2YXIgbWF0Y2g7XG4gIHZhciBuYW1lO1xuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgZXhwcnMubGVuZ3RoOyBqKyspIHtcbiAgICB2YXIgZSA9IGV4cHJzW2pdO1xuICAgIHZhciBuID0gZS5uYW1lO1xuICAgIHZhciBtID0gcmVtYWluaW5nLm1hdGNoKGUucmVnZXhPYmopO1xuXG4gICAgaWYgKG0gIT0gbnVsbCkge1xuICAgICAgbWF0Y2ggPSBtO1xuICAgICAgZXhwciA9IGU7XG4gICAgICBuYW1lID0gbjtcbiAgICAgIHZhciBjb25zdW1lZCA9IG1bMF07XG4gICAgICByZW1haW5pbmcgPSByZW1haW5pbmcuc3Vic3RyaW5nKGNvbnN1bWVkLmxlbmd0aCk7XG4gICAgICBicmVhazsgLy8gd2UndmUgY29uc3VtZWQgb25lIGV4cHIsIHNvIHdlIGNhbiByZXR1cm4gbm93XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHByOiBleHByLFxuICAgIG1hdGNoOiBtYXRjaCxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHJlbWFpbmluZzogcmVtYWluaW5nXG4gIH07XG59O1xuLyoqXG4gKiBDb25zdW1lIGFsbCB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtYWluaW5nIFRoZSB0ZXh0IHRvIGNvbnN1bWVcbiAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGggdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSByZW1vdmVkXG4gKi9cblxuXG52YXIgY29uc3VtZVdoaXRlc3BhY2UgPSBmdW5jdGlvbiBjb25zdW1lV2hpdGVzcGFjZShyZW1haW5pbmcpIHtcbiAgdmFyIG1hdGNoID0gcmVtYWluaW5nLm1hdGNoKC9eXFxzKy8pO1xuXG4gIGlmIChtYXRjaCkge1xuICAgIHZhciBjb25zdW1lZCA9IG1hdGNoWzBdO1xuICAgIHJlbWFpbmluZyA9IHJlbWFpbmluZy5zdWJzdHJpbmcoY29uc3VtZWQubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiByZW1haW5pbmc7XG59O1xuLyoqXG4gKiBQYXJzZSB0aGUgc3RyaW5nIGFuZCBzdG9yZSB0aGUgcGFyc2VkIHJlcHJlc2VudGF0aW9uIGluIHRoZSBTZWxlY3Rvci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciBUaGUgc2VsZWN0b3Igc3RyaW5nXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHNlbGVjdG9yIHdhcyBzdWNjZXNzZnVsbHkgcGFyc2VkLCBgZmFsc2VgIG90aGVyd2lzZVxuICovXG5cblxudmFyIHBhcnNlID0gZnVuY3Rpb24gcGFyc2Uoc2VsZWN0b3IpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgcmVtYWluaW5nID0gc2VsZi5pbnB1dFRleHQgPSBzZWxlY3RvcjtcbiAgdmFyIGN1cnJlbnRRdWVyeSA9IHNlbGZbMF0gPSBuZXdRdWVyeSgpO1xuICBzZWxmLmxlbmd0aCA9IDE7XG4gIHJlbWFpbmluZyA9IGNvbnN1bWVXaGl0ZXNwYWNlKHJlbWFpbmluZyk7IC8vIGdldCByaWQgb2YgbGVhZGluZyB3aGl0ZXNwYWNlXG5cbiAgZm9yICg7Oykge1xuICAgIHZhciBleHBySW5mbyA9IGNvbnN1bWVFeHByKHJlbWFpbmluZyk7XG5cbiAgICBpZiAoZXhwckluZm8uZXhwciA9PSBudWxsKSB7XG4gICAgICB3YXJuKCdUaGUgc2VsZWN0b3IgYCcgKyBzZWxlY3RvciArICdgaXMgaW52YWxpZCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYXJncyA9IGV4cHJJbmZvLm1hdGNoLnNsaWNlKDEpOyAvLyBsZXQgdGhlIHRva2VuIHBvcHVsYXRlIHRoZSBzZWxlY3RvciBvYmplY3QgaW4gY3VycmVudFF1ZXJ5XG5cbiAgICAgIHZhciByZXQgPSBleHBySW5mby5leHByLnBvcHVsYXRlKHNlbGYsIGN1cnJlbnRRdWVyeSwgYXJncyk7XG5cbiAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gZXhpdCBpZiBwb3B1bGF0aW9uIGZhaWxlZFxuICAgICAgfSBlbHNlIGlmIChyZXQgIT0gbnVsbCkge1xuICAgICAgICBjdXJyZW50UXVlcnkgPSByZXQ7IC8vIGNoYW5nZSB0aGUgY3VycmVudCBxdWVyeSB0byBiZSBmaWxsZWQgaWYgdGhlIGV4cHIgc3BlY2lmaWVzXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmVtYWluaW5nID0gZXhwckluZm8ucmVtYWluaW5nOyAvLyB3ZSdyZSBkb25lIHdoZW4gdGhlcmUncyBub3RoaW5nIGxlZnQgdG8gcGFyc2VcblxuICAgIGlmIChyZW1haW5pbmcubWF0Y2goL15cXHMqJC8pKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2YXIgbGFzdFEgPSBzZWxmW3NlbGYubGVuZ3RoIC0gMV07XG5cbiAgaWYgKHNlbGYuY3VycmVudFN1YmplY3QgIT0gbnVsbCkge1xuICAgIGxhc3RRLnN1YmplY3QgPSBzZWxmLmN1cnJlbnRTdWJqZWN0O1xuICB9XG5cbiAgbGFzdFEuZWRnZUNvdW50ID0gc2VsZi5lZGdlQ291bnQ7XG4gIGxhc3RRLmNvbXBvdW5kQ291bnQgPSBzZWxmLmNvbXBvdW5kQ291bnQ7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHEgPSBzZWxmW2ldOyAvLyBpbiBmdXR1cmUsIHRoaXMgY291bGQgcG90ZW50aWFsbHkgYmUgYWxsb3dlZCBpZiB0aGVyZSB3ZXJlIG9wZXJhdG9yIHByZWNlZGVuY2UgYW5kIGRldGVjdGlvbiBvZiBpbnZhbGlkIGNvbWJpbmF0aW9uc1xuXG4gICAgaWYgKHEuY29tcG91bmRDb3VudCA+IDAgJiYgcS5lZGdlQ291bnQgPiAwKSB7XG4gICAgICB3YXJuKCdUaGUgc2VsZWN0b3IgYCcgKyBzZWxlY3RvciArICdgIGlzIGludmFsaWQgYmVjYXVzZSBpdCB1c2VzIGJvdGggYSBjb21wb3VuZCBzZWxlY3RvciBhbmQgYW4gZWRnZSBzZWxlY3RvcicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChxLmVkZ2VDb3VudCA+IDEpIHtcbiAgICAgIHdhcm4oJ1RoZSBzZWxlY3RvciBgJyArIHNlbGVjdG9yICsgJ2AgaXMgaW52YWxpZCBiZWNhdXNlIGl0IHVzZXMgbXVsdGlwbGUgZWRnZSBzZWxlY3RvcnMnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHEuZWRnZUNvdW50ID09PSAxKSB7XG4gICAgICB3YXJuKCdUaGUgc2VsZWN0b3IgYCcgKyBzZWxlY3RvciArICdgIGlzIGRlcHJlY2F0ZWQuICBFZGdlIHNlbGVjdG9ycyBkbyBub3QgdGFrZSBlZmZlY3Qgb24gY2hhbmdlcyB0byBzb3VyY2UgYW5kIHRhcmdldCBub2RlcyBhZnRlciBhbiBlZGdlIGlzIGFkZGVkLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIFVzZSBhIGNsYXNzIG9yIGRhdGEgc2VsZWN0b3Igb24gZWRnZXMgaW5zdGVhZCwgdXBkYXRpbmcgdGhlIGNsYXNzIG9yIGRhdGEgb2YgYW4gZWRnZSB3aGVuIHlvdXIgYXBwIGRldGVjdHMgYSBjaGFuZ2UgaW4gc291cmNlIG9yIHRhcmdldCBub2Rlcy4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTsgLy8gc3VjY2Vzc1xufTtcbi8qKlxuICogR2V0IHRoZSBzZWxlY3RvciByZXByZXNlbnRlZCBhcyBhIHN0cmluZy4gIFRoaXMgdmFsdWUgdXNlcyBkZWZhdWx0IGZvcm1hdHRpbmcsXG4gKiBzbyB0aGluZ3MgbGlrZSBzcGFjaW5nIG1heSBkaWZmZXIgZnJvbSB0aGUgaW5wdXQgdGV4dCBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIHNlbGVjdG9yIHN0cmluZ1xuICovXG5cblxudmFyIHRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIGlmICh0aGlzLnRvU3RyaW5nQ2FjaGUgIT0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nQ2FjaGU7XG4gIH1cblxuICB2YXIgY2xlYW4gPSBmdW5jdGlvbiBjbGVhbihvYmopIHtcbiAgICBpZiAob2JqID09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGNsZWFuVmFsID0gZnVuY3Rpb24gY2xlYW5WYWwodmFsKSB7XG4gICAgaWYgKHN0cmluZyh2YWwpKSB7XG4gICAgICByZXR1cm4gJ1wiJyArIHZhbCArICdcIic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjbGVhbih2YWwpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgc3BhY2UgPSBmdW5jdGlvbiBzcGFjZSh2YWwpIHtcbiAgICByZXR1cm4gJyAnICsgdmFsICsgJyAnO1xuICB9O1xuXG4gIHZhciBjaGVja1RvU3RyaW5nID0gZnVuY3Rpb24gY2hlY2tUb1N0cmluZyhjaGVjaywgc3ViamVjdCkge1xuICAgIHZhciB0eXBlID0gY2hlY2sudHlwZSxcbiAgICAgICAgdmFsdWUgPSBjaGVjay52YWx1ZTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBUeXBlLkdST1VQOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGdyb3VwID0gY2xlYW4odmFsdWUpO1xuICAgICAgICAgIHJldHVybiBncm91cC5zdWJzdHJpbmcoMCwgZ3JvdXAubGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLkRBVEFfQ09NUEFSRTpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgICAgICAgICBvcGVyYXRvciA9IGNoZWNrLm9wZXJhdG9yO1xuICAgICAgICAgIHJldHVybiAnWycgKyBmaWVsZCArIHNwYWNlKGNsZWFuKG9wZXJhdG9yKSkgKyBjbGVhblZhbCh2YWx1ZSkgKyAnXSc7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLkRBVEFfQk9PTDpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBfb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcixcbiAgICAgICAgICAgICAgX2ZpZWxkID0gY2hlY2suZmllbGQ7XG4gICAgICAgICAgcmV0dXJuICdbJyArIGNsZWFuKF9vcGVyYXRvcikgKyBfZmllbGQgKyAnXSc7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLkRBVEFfRVhJU1Q6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgX2ZpZWxkMiA9IGNoZWNrLmZpZWxkO1xuICAgICAgICAgIHJldHVybiAnWycgKyBfZmllbGQyICsgJ10nO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgVHlwZS5NRVRBX0NPTVBBUkU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgX29wZXJhdG9yMiA9IGNoZWNrLm9wZXJhdG9yLFxuICAgICAgICAgICAgICBfZmllbGQzID0gY2hlY2suZmllbGQ7XG4gICAgICAgICAgcmV0dXJuICdbWycgKyBfZmllbGQzICsgc3BhY2UoY2xlYW4oX29wZXJhdG9yMikpICsgY2xlYW5WYWwodmFsdWUpICsgJ11dJztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFR5cGUuU1RBVEU6XG4gICAgICAgIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLklEOlxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuICcjJyArIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgVHlwZS5DTEFTUzpcbiAgICAgICAge1xuICAgICAgICAgIHJldHVybiAnLicgKyB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFR5cGUuUEFSRU5UOlxuICAgICAgY2FzZSBUeXBlLkNISUxEOlxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5VG9TdHJpbmcoY2hlY2sucGFyZW50LCBzdWJqZWN0KSArIHNwYWNlKCc+JykgKyBxdWVyeVRvU3RyaW5nKGNoZWNrLmNoaWxkLCBzdWJqZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFR5cGUuQU5DRVNUT1I6XG4gICAgICBjYXNlIFR5cGUuREVTQ0VOREFOVDpcbiAgICAgICAge1xuICAgICAgICAgIHJldHVybiBxdWVyeVRvU3RyaW5nKGNoZWNrLmFuY2VzdG9yLCBzdWJqZWN0KSArICcgJyArIHF1ZXJ5VG9TdHJpbmcoY2hlY2suZGVzY2VuZGFudCwgc3ViamVjdCk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLkNPTVBPVU5EX1NQTElUOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGxocyA9IHF1ZXJ5VG9TdHJpbmcoY2hlY2subGVmdCwgc3ViamVjdCk7XG4gICAgICAgICAgdmFyIHN1YiA9IHF1ZXJ5VG9TdHJpbmcoY2hlY2suc3ViamVjdCwgc3ViamVjdCk7XG4gICAgICAgICAgdmFyIHJocyA9IHF1ZXJ5VG9TdHJpbmcoY2hlY2sucmlnaHQsIHN1YmplY3QpO1xuICAgICAgICAgIHJldHVybiBsaHMgKyAobGhzLmxlbmd0aCA+IDAgPyAnICcgOiAnJykgKyBzdWIgKyByaHM7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLlRSVUU6XG4gICAgICAgIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIHF1ZXJ5VG9TdHJpbmcgPSBmdW5jdGlvbiBxdWVyeVRvU3RyaW5nKHF1ZXJ5LCBzdWJqZWN0KSB7XG4gICAgcmV0dXJuIHF1ZXJ5LmNoZWNrcy5yZWR1Y2UoZnVuY3Rpb24gKHN0ciwgY2hrLCBpKSB7XG4gICAgICByZXR1cm4gc3RyICsgKHN1YmplY3QgPT09IHF1ZXJ5ICYmIGkgPT09IDAgPyAnJCcgOiAnJykgKyBjaGVja1RvU3RyaW5nKGNoaywgc3ViamVjdCk7XG4gICAgfSwgJycpO1xuICB9O1xuXG4gIHZhciBzdHIgPSAnJztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcXVlcnkgPSB0aGlzW2ldO1xuICAgIHN0ciArPSBxdWVyeVRvU3RyaW5nKHF1ZXJ5LCBxdWVyeS5zdWJqZWN0KTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEgJiYgaSA8IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgc3RyICs9ICcsICc7XG4gICAgfVxuICB9XG5cbiAgdGhpcy50b1N0cmluZ0NhY2hlID0gc3RyO1xuICByZXR1cm4gc3RyO1xufTtcbnZhciBwYXJzZSQxID0ge1xuICBwYXJzZTogcGFyc2UsXG4gIHRvU3RyaW5nOiB0b1N0cmluZ1xufTtcblxudmFyIHZhbENtcCA9IGZ1bmN0aW9uIHZhbENtcChmaWVsZFZhbCwgb3BlcmF0b3IsIHZhbHVlKSB7XG4gIHZhciBtYXRjaGVzO1xuICB2YXIgaXNGaWVsZFN0ciA9IHN0cmluZyhmaWVsZFZhbCk7XG4gIHZhciBpc0ZpZWxkTnVtID0gbnVtYmVyKGZpZWxkVmFsKTtcbiAgdmFyIGlzVmFsU3RyID0gc3RyaW5nKHZhbHVlKTtcbiAgdmFyIGZpZWxkU3RyLCB2YWxTdHI7XG4gIHZhciBjYXNlSW5zZW5zaXRpdmUgPSBmYWxzZTtcbiAgdmFyIG5vdEV4cHIgPSBmYWxzZTtcbiAgdmFyIGlzSW5lcUNtcCA9IGZhbHNlO1xuXG4gIGlmIChvcGVyYXRvci5pbmRleE9mKCchJykgPj0gMCkge1xuICAgIG9wZXJhdG9yID0gb3BlcmF0b3IucmVwbGFjZSgnIScsICcnKTtcbiAgICBub3RFeHByID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChvcGVyYXRvci5pbmRleE9mKCdAJykgPj0gMCkge1xuICAgIG9wZXJhdG9yID0gb3BlcmF0b3IucmVwbGFjZSgnQCcsICcnKTtcbiAgICBjYXNlSW5zZW5zaXRpdmUgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGlzRmllbGRTdHIgfHwgaXNWYWxTdHIgfHwgY2FzZUluc2Vuc2l0aXZlKSB7XG4gICAgZmllbGRTdHIgPSAhaXNGaWVsZFN0ciAmJiAhaXNGaWVsZE51bSA/ICcnIDogJycgKyBmaWVsZFZhbDtcbiAgICB2YWxTdHIgPSAnJyArIHZhbHVlO1xuICB9IC8vIGlmIHdlJ3JlIGRvaW5nIGEgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uLCB0aGVuIHdlJ3JlIHVzaW5nIGEgU1RSSU5HIGNvbXBhcmlzb25cbiAgLy8gZXZlbiBpZiB3ZSdyZSBjb21wYXJpbmcgbnVtYmVyc1xuXG5cbiAgaWYgKGNhc2VJbnNlbnNpdGl2ZSkge1xuICAgIGZpZWxkVmFsID0gZmllbGRTdHIgPSBmaWVsZFN0ci50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbHVlID0gdmFsU3RyID0gdmFsU3RyLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgY2FzZSAnKj0nOlxuICAgICAgbWF0Y2hlcyA9IGZpZWxkU3RyLmluZGV4T2YodmFsU3RyKSA+PSAwO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICckPSc6XG4gICAgICBtYXRjaGVzID0gZmllbGRTdHIuaW5kZXhPZih2YWxTdHIsIGZpZWxkU3RyLmxlbmd0aCAtIHZhbFN0ci5sZW5ndGgpID49IDA7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ149JzpcbiAgICAgIG1hdGNoZXMgPSBmaWVsZFN0ci5pbmRleE9mKHZhbFN0cikgPT09IDA7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJz0nOlxuICAgICAgbWF0Y2hlcyA9IGZpZWxkVmFsID09PSB2YWx1ZTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnPic6XG4gICAgICBpc0luZXFDbXAgPSB0cnVlO1xuICAgICAgbWF0Y2hlcyA9IGZpZWxkVmFsID4gdmFsdWU7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJz49JzpcbiAgICAgIGlzSW5lcUNtcCA9IHRydWU7XG4gICAgICBtYXRjaGVzID0gZmllbGRWYWwgPj0gdmFsdWU7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJzwnOlxuICAgICAgaXNJbmVxQ21wID0gdHJ1ZTtcbiAgICAgIG1hdGNoZXMgPSBmaWVsZFZhbCA8IHZhbHVlO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICc8PSc6XG4gICAgICBpc0luZXFDbXAgPSB0cnVlO1xuICAgICAgbWF0Y2hlcyA9IGZpZWxkVmFsIDw9IHZhbHVlO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgbWF0Y2hlcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gIH0gLy8gYXBwbHkgdGhlIG5vdCBvcCwgYnV0IG51bGwgdmFscyBmb3IgaW5lcXVhbGl0aWVzIHNob3VsZCBhbHdheXMgc3RheSBub24tbWF0Y2hpbmdcblxuXG4gIGlmIChub3RFeHByICYmIChmaWVsZFZhbCAhPSBudWxsIHx8ICFpc0luZXFDbXApKSB7XG4gICAgbWF0Y2hlcyA9ICFtYXRjaGVzO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoZXM7XG59O1xudmFyIGJvb2xDbXAgPSBmdW5jdGlvbiBib29sQ21wKGZpZWxkVmFsLCBvcGVyYXRvcikge1xuICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgY2FzZSAnPyc6XG4gICAgICByZXR1cm4gZmllbGRWYWwgPyB0cnVlIDogZmFsc2U7XG5cbiAgICBjYXNlICchJzpcbiAgICAgIHJldHVybiBmaWVsZFZhbCA/IGZhbHNlIDogdHJ1ZTtcblxuICAgIGNhc2UgJ14nOlxuICAgICAgcmV0dXJuIGZpZWxkVmFsID09PSB1bmRlZmluZWQ7XG4gIH1cbn07XG52YXIgZXhpc3RDbXAgPSBmdW5jdGlvbiBleGlzdENtcChmaWVsZFZhbCkge1xuICByZXR1cm4gZmllbGRWYWwgIT09IHVuZGVmaW5lZDtcbn07XG52YXIgZGF0YSA9IGZ1bmN0aW9uIGRhdGEoZWxlLCBmaWVsZCkge1xuICByZXR1cm4gZWxlLmRhdGEoZmllbGQpO1xufTtcbnZhciBtZXRhID0gZnVuY3Rpb24gbWV0YShlbGUsIGZpZWxkKSB7XG4gIHJldHVybiBlbGVbZmllbGRdKCk7XG59O1xuXG4vKiogQSBsb29rdXAgb2YgYG1hdGNoKGNoZWNrLCBlbGUpYCBmdW5jdGlvbnMgYnkgYFR5cGVgIGludCAqL1xuXG52YXIgbWF0Y2ggPSBbXTtcbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBxdWVyeSBtYXRjaGVzIGZvciB0aGUgZWxlbWVudFxuICogQHBhcmFtIHF1ZXJ5IFRoZSBgeyB0eXBlLCB2YWx1ZSwgLi4uIH1gIHF1ZXJ5IG9iamVjdFxuICogQHBhcmFtIGVsZSBUaGUgZWxlbWVudCB0byBjb21wYXJlIGFnYWluc3RcbiovXG5cbnZhciBtYXRjaGVzID0gZnVuY3Rpb24gbWF0Y2hlcyhxdWVyeSwgZWxlKSB7XG4gIHJldHVybiBxdWVyeS5jaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoaykge1xuICAgIHJldHVybiBtYXRjaFtjaGsudHlwZV0oY2hrLCBlbGUpO1xuICB9KTtcbn07XG5cbm1hdGNoW1R5cGUuR1JPVVBdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgdmFyIGdyb3VwID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiBncm91cCA9PT0gJyonIHx8IGdyb3VwID09PSBlbGUuZ3JvdXAoKTtcbn07XG5cbm1hdGNoW1R5cGUuU1RBVEVdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgdmFyIHN0YXRlU2VsZWN0b3IgPSBjaGVjay52YWx1ZTtcbiAgcmV0dXJuIHN0YXRlU2VsZWN0b3JNYXRjaGVzKHN0YXRlU2VsZWN0b3IsIGVsZSk7XG59O1xuXG5tYXRjaFtUeXBlLklEXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBpZCA9IGNoZWNrLnZhbHVlO1xuICByZXR1cm4gZWxlLmlkKCkgPT09IGlkO1xufTtcblxubWF0Y2hbVHlwZS5DTEFTU10gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICB2YXIgY2xzID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiBlbGUuaGFzQ2xhc3MoY2xzKTtcbn07XG5cbm1hdGNoW1R5cGUuTUVUQV9DT01QQVJFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcixcbiAgICAgIHZhbHVlID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiB2YWxDbXAobWV0YShlbGUsIGZpZWxkKSwgb3BlcmF0b3IsIHZhbHVlKTtcbn07XG5cbm1hdGNoW1R5cGUuREFUQV9DT01QQVJFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcixcbiAgICAgIHZhbHVlID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiB2YWxDbXAoZGF0YShlbGUsIGZpZWxkKSwgb3BlcmF0b3IsIHZhbHVlKTtcbn07XG5cbm1hdGNoW1R5cGUuREFUQV9CT09MXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcjtcbiAgcmV0dXJuIGJvb2xDbXAoZGF0YShlbGUsIGZpZWxkKSwgb3BlcmF0b3IpO1xufTtcblxubWF0Y2hbVHlwZS5EQVRBX0VYSVNUXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcjtcbiAgcmV0dXJuIGV4aXN0Q21wKGRhdGEoZWxlLCBmaWVsZCkpO1xufTtcblxubWF0Y2hbVHlwZS5VTkRJUkVDVEVEX0VER0VdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgdmFyIHFBID0gY2hlY2subm9kZXNbMF07XG4gIHZhciBxQiA9IGNoZWNrLm5vZGVzWzFdO1xuICB2YXIgc3JjID0gZWxlLnNvdXJjZSgpO1xuICB2YXIgdGd0ID0gZWxlLnRhcmdldCgpO1xuICByZXR1cm4gbWF0Y2hlcyhxQSwgc3JjKSAmJiBtYXRjaGVzKHFCLCB0Z3QpIHx8IG1hdGNoZXMocUIsIHNyYykgJiYgbWF0Y2hlcyhxQSwgdGd0KTtcbn07XG5cbm1hdGNoW1R5cGUuTk9ERV9ORUlHSEJPUl0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICByZXR1cm4gbWF0Y2hlcyhjaGVjay5ub2RlLCBlbGUpICYmIGVsZS5uZWlnaGJvcmhvb2QoKS5zb21lKGZ1bmN0aW9uIChuKSB7XG4gICAgcmV0dXJuIG4uaXNOb2RlKCkgJiYgbWF0Y2hlcyhjaGVjay5uZWlnaGJvciwgbik7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5ESVJFQ1RFRF9FREdFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHJldHVybiBtYXRjaGVzKGNoZWNrLnNvdXJjZSwgZWxlLnNvdXJjZSgpKSAmJiBtYXRjaGVzKGNoZWNrLnRhcmdldCwgZWxlLnRhcmdldCgpKTtcbn07XG5cbm1hdGNoW1R5cGUuTk9ERV9TT1VSQ0VdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgcmV0dXJuIG1hdGNoZXMoY2hlY2suc291cmNlLCBlbGUpICYmIGVsZS5vdXRnb2VycygpLnNvbWUoZnVuY3Rpb24gKG4pIHtcbiAgICByZXR1cm4gbi5pc05vZGUoKSAmJiBtYXRjaGVzKGNoZWNrLnRhcmdldCwgbik7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5OT0RFX1RBUkdFVF0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICByZXR1cm4gbWF0Y2hlcyhjaGVjay50YXJnZXQsIGVsZSkgJiYgZWxlLmluY29tZXJzKCkuc29tZShmdW5jdGlvbiAobikge1xuICAgIHJldHVybiBuLmlzTm9kZSgpICYmIG1hdGNoZXMoY2hlY2suc291cmNlLCBuKTtcbiAgfSk7XG59O1xuXG5tYXRjaFtUeXBlLkNISUxEXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHJldHVybiBtYXRjaGVzKGNoZWNrLmNoaWxkLCBlbGUpICYmIG1hdGNoZXMoY2hlY2sucGFyZW50LCBlbGUucGFyZW50KCkpO1xufTtcblxubWF0Y2hbVHlwZS5QQVJFTlRdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgcmV0dXJuIG1hdGNoZXMoY2hlY2sucGFyZW50LCBlbGUpICYmIGVsZS5jaGlsZHJlbigpLnNvbWUoZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gbWF0Y2hlcyhjaGVjay5jaGlsZCwgYyk7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5ERVNDRU5EQU5UXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHJldHVybiBtYXRjaGVzKGNoZWNrLmRlc2NlbmRhbnQsIGVsZSkgJiYgZWxlLmFuY2VzdG9ycygpLnNvbWUoZnVuY3Rpb24gKGEpIHtcbiAgICByZXR1cm4gbWF0Y2hlcyhjaGVjay5hbmNlc3RvciwgYSk7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5BTkNFU1RPUl0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICByZXR1cm4gbWF0Y2hlcyhjaGVjay5hbmNlc3RvciwgZWxlKSAmJiBlbGUuZGVzY2VuZGFudHMoKS5zb21lKGZ1bmN0aW9uIChkKSB7XG4gICAgcmV0dXJuIG1hdGNoZXMoY2hlY2suZGVzY2VuZGFudCwgZCk7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5DT01QT1VORF9TUExJVF0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICByZXR1cm4gbWF0Y2hlcyhjaGVjay5zdWJqZWN0LCBlbGUpICYmIG1hdGNoZXMoY2hlY2subGVmdCwgZWxlKSAmJiBtYXRjaGVzKGNoZWNrLnJpZ2h0LCBlbGUpO1xufTtcblxubWF0Y2hbVHlwZS5UUlVFXSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5tYXRjaFtUeXBlLkNPTExFQ1RJT05dID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgdmFyIGNvbGxlY3Rpb24gPSBjaGVjay52YWx1ZTtcbiAgcmV0dXJuIGNvbGxlY3Rpb24uaGFzKGVsZSk7XG59O1xuXG5tYXRjaFtUeXBlLkZJTFRFUl0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICB2YXIgZmlsdGVyID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiBmaWx0ZXIoZWxlKTtcbn07XG5cbnZhciBmaWx0ZXIgPSBmdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbikge1xuICB2YXIgc2VsZiA9IHRoaXM7IC8vIGZvciAxIGlkICNmb28gcXVlcmllcywganVzdCBnZXQgdGhlIGVsZW1lbnRcblxuICBpZiAoc2VsZi5sZW5ndGggPT09IDEgJiYgc2VsZlswXS5jaGVja3MubGVuZ3RoID09PSAxICYmIHNlbGZbMF0uY2hlY2tzWzBdLnR5cGUgPT09IFR5cGUuSUQpIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbi5nZXRFbGVtZW50QnlJZChzZWxmWzBdLmNoZWNrc1swXS52YWx1ZSkuY29sbGVjdGlvbigpO1xuICB9XG5cbiAgdmFyIHNlbGVjdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiBzZWxlY3RvckZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlbGYubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBxdWVyeSA9IHNlbGZbal07XG5cbiAgICAgIGlmIChtYXRjaGVzKHF1ZXJ5LCBlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgaWYgKHNlbGYudGV4dCgpID09IG51bGwpIHtcbiAgICBzZWxlY3RvckZ1bmN0aW9uID0gZnVuY3Rpb24gc2VsZWN0b3JGdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gY29sbGVjdGlvbi5maWx0ZXIoc2VsZWN0b3JGdW5jdGlvbik7XG59OyAvLyBmaWx0ZXJcbi8vIGRvZXMgc2VsZWN0b3IgbWF0Y2ggYSBzaW5nbGUgZWxlbWVudD9cblxuXG52YXIgbWF0Y2hlcyQxID0gZnVuY3Rpb24gbWF0Y2hlcyQxKGVsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWxmLmxlbmd0aDsgaisrKSB7XG4gICAgdmFyIHF1ZXJ5ID0gc2VsZltqXTtcblxuICAgIGlmIChtYXRjaGVzKHF1ZXJ5LCBlbGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59OyAvLyBtYXRjaGVzXG5cblxudmFyIG1hdGNoaW5nID0ge1xuICBtYXRjaGVzOiBtYXRjaGVzJDEsXG4gIGZpbHRlcjogZmlsdGVyXG59O1xuXG52YXIgU2VsZWN0b3IgPSBmdW5jdGlvbiBTZWxlY3RvcihzZWxlY3Rvcikge1xuICB0aGlzLmlucHV0VGV4dCA9IHNlbGVjdG9yO1xuICB0aGlzLmN1cnJlbnRTdWJqZWN0ID0gbnVsbDtcbiAgdGhpcy5jb21wb3VuZENvdW50ID0gMDtcbiAgdGhpcy5lZGdlQ291bnQgPSAwO1xuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgaWYgKHNlbGVjdG9yID09IG51bGwgfHwgc3RyaW5nKHNlbGVjdG9yKSAmJiBzZWxlY3Rvci5tYXRjaCgvXlxccyokLykpIDsgZWxzZSBpZiAoZWxlbWVudE9yQ29sbGVjdGlvbihzZWxlY3RvcikpIHtcbiAgICB0aGlzLmFkZFF1ZXJ5KHtcbiAgICAgIGNoZWNrczogW3tcbiAgICAgICAgdHlwZTogVHlwZS5DT0xMRUNUSU9OLFxuICAgICAgICB2YWx1ZTogc2VsZWN0b3IuY29sbGVjdGlvbigpXG4gICAgICB9XVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGZuKHNlbGVjdG9yKSkge1xuICAgIHRoaXMuYWRkUXVlcnkoe1xuICAgICAgY2hlY2tzOiBbe1xuICAgICAgICB0eXBlOiBUeXBlLkZJTFRFUixcbiAgICAgICAgdmFsdWU6IHNlbGVjdG9yXG4gICAgICB9XVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKHN0cmluZyhzZWxlY3RvcikpIHtcbiAgICBpZiAoIXRoaXMucGFyc2Uoc2VsZWN0b3IpKSB7XG4gICAgICB0aGlzLmludmFsaWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBlcnJvcignQSBzZWxlY3RvciBtdXN0IGJlIGNyZWF0ZWQgZnJvbSBhIHN0cmluZzsgZm91bmQgJyk7XG4gIH1cbn07XG5cbnZhciBzZWxmbiA9IFNlbGVjdG9yLnByb3RvdHlwZTtcbltwYXJzZSQxLCBtYXRjaGluZ10uZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICByZXR1cm4gZXh0ZW5kKHNlbGZuLCBwKTtcbn0pO1xuXG5zZWxmbi50ZXh0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5pbnB1dFRleHQ7XG59O1xuXG5zZWxmbi5zaXplID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sZW5ndGg7XG59O1xuXG5zZWxmbi5lcSA9IGZ1bmN0aW9uIChpKSB7XG4gIHJldHVybiB0aGlzW2ldO1xufTtcblxuc2VsZm4uc2FtZVRleHQgPSBmdW5jdGlvbiAob3RoZXJTZWwpIHtcbiAgcmV0dXJuICF0aGlzLmludmFsaWQgJiYgIW90aGVyU2VsLmludmFsaWQgJiYgdGhpcy50ZXh0KCkgPT09IG90aGVyU2VsLnRleHQoKTtcbn07XG5cbnNlbGZuLmFkZFF1ZXJ5ID0gZnVuY3Rpb24gKHEpIHtcbiAgdGhpc1t0aGlzLmxlbmd0aCsrXSA9IHE7XG59O1xuXG5zZWxmbi5zZWxlY3RvciA9IHNlbGZuLnRvU3RyaW5nO1xuXG52YXIgZWxlc2ZuJGYgPSB7XG4gIGFsbEFyZTogZnVuY3Rpb24gYWxsQXJlKHNlbGVjdG9yKSB7XG4gICAgdmFyIHNlbE9iaiA9IG5ldyBTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgcmV0dXJuIHRoaXMuZXZlcnkoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgcmV0dXJuIHNlbE9iai5tYXRjaGVzKGVsZSk7XG4gICAgfSk7XG4gIH0sXG4gIGlzOiBmdW5jdGlvbiBpcyhzZWxlY3Rvcikge1xuICAgIHZhciBzZWxPYmogPSBuZXcgU2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIHJldHVybiB0aGlzLnNvbWUoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgcmV0dXJuIHNlbE9iai5tYXRjaGVzKGVsZSk7XG4gICAgfSk7XG4gIH0sXG4gIHNvbWU6IGZ1bmN0aW9uIHNvbWUoZm4sIHRoaXNBcmcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciByZXQgPSAhdGhpc0FyZyA/IGZuKHRoaXNbaV0sIGksIHRoaXMpIDogZm4uYXBwbHkodGhpc0FyZywgW3RoaXNbaV0sIGksIHRoaXNdKTtcblxuICAgICAgaWYgKHJldCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShmbiwgdGhpc0FyZykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJldCA9ICF0aGlzQXJnID8gZm4odGhpc1tpXSwgaSwgdGhpcykgOiBmbi5hcHBseSh0aGlzQXJnLCBbdGhpc1tpXSwgaSwgdGhpc10pO1xuXG4gICAgICBpZiAoIXJldCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIHNhbWU6IGZ1bmN0aW9uIHNhbWUoY29sbGVjdGlvbikge1xuICAgIC8vIGNoZWFwIGNvbGxlY3Rpb24gcmVmIGNoZWNrXG4gICAgaWYgKHRoaXMgPT09IGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbGxlY3Rpb24gPSB0aGlzLmN5KCkuY29sbGVjdGlvbihjb2xsZWN0aW9uKTtcbiAgICB2YXIgdGhpc0xlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIHZhciBjb2xsZWN0aW9uTGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7IC8vIGNoZWFwIGxlbmd0aCBjaGVja1xuXG4gICAgaWYgKHRoaXNMZW5ndGggIT09IGNvbGxlY3Rpb25MZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGNoZWFwIGVsZW1lbnQgcmVmIGNoZWNrXG5cblxuICAgIGlmICh0aGlzTGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdGhpc1swXSA9PT0gY29sbGVjdGlvblswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ldmVyeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbi5oYXNFbGVtZW50V2l0aElkKGVsZS5pZCgpKTtcbiAgICB9KTtcbiAgfSxcbiAgYW55U2FtZTogZnVuY3Rpb24gYW55U2FtZShjb2xsZWN0aW9uKSB7XG4gICAgY29sbGVjdGlvbiA9IHRoaXMuY3koKS5jb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xuICAgIHJldHVybiB0aGlzLnNvbWUoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uaGFzRWxlbWVudFdpdGhJZChlbGUuaWQoKSk7XG4gICAgfSk7XG4gIH0sXG4gIGFsbEFyZU5laWdoYm9yczogZnVuY3Rpb24gYWxsQXJlTmVpZ2hib3JzKGNvbGxlY3Rpb24pIHtcbiAgICBjb2xsZWN0aW9uID0gdGhpcy5jeSgpLmNvbGxlY3Rpb24oY29sbGVjdGlvbik7XG4gICAgdmFyIG5ob29kID0gdGhpcy5uZWlnaGJvcmhvb2QoKTtcbiAgICByZXR1cm4gY29sbGVjdGlvbi5ldmVyeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gbmhvb2QuaGFzRWxlbWVudFdpdGhJZChlbGUuaWQoKSk7XG4gICAgfSk7XG4gIH0sXG4gIGNvbnRhaW5zOiBmdW5jdGlvbiBjb250YWlucyhjb2xsZWN0aW9uKSB7XG4gICAgY29sbGVjdGlvbiA9IHRoaXMuY3koKS5jb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gY29sbGVjdGlvbi5ldmVyeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gc2VsZi5oYXNFbGVtZW50V2l0aElkKGVsZS5pZCgpKTtcbiAgICB9KTtcbiAgfVxufTtcbmVsZXNmbiRmLmFsbEFyZU5laWdoYm91cnMgPSBlbGVzZm4kZi5hbGxBcmVOZWlnaGJvcnM7XG5lbGVzZm4kZi5oYXMgPSBlbGVzZm4kZi5jb250YWlucztcbmVsZXNmbiRmLmVxdWFsID0gZWxlc2ZuJGYuZXF1YWxzID0gZWxlc2ZuJGYuc2FtZTtcblxudmFyIGNhY2hlID0gZnVuY3Rpb24gY2FjaGUoZm4sIG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyYXZlcnNhbENhY2hlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpIHtcbiAgICB2YXIgc2VsZWN0b3JPckVsZXMgPSBhcmcxO1xuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIga2V5O1xuXG4gICAgaWYgKHNlbGVjdG9yT3JFbGVzID09IG51bGwpIHtcbiAgICAgIGtleSA9ICcnO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudE9yQ29sbGVjdGlvbihzZWxlY3Rvck9yRWxlcykgJiYgc2VsZWN0b3JPckVsZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBrZXkgPSBzZWxlY3Rvck9yRWxlcy5pZCgpO1xuICAgIH1cblxuICAgIGlmIChlbGVzLmxlbmd0aCA9PT0gMSAmJiBrZXkpIHtcbiAgICAgIHZhciBfcCA9IGVsZXNbMF0uX3ByaXZhdGU7XG4gICAgICB2YXIgdGNoID0gX3AudHJhdmVyc2FsQ2FjaGUgPSBfcC50cmF2ZXJzYWxDYWNoZSB8fCB7fTtcbiAgICAgIHZhciBjaCA9IHRjaFtuYW1lXSA9IHRjaFtuYW1lXSB8fCBbXTtcbiAgICAgIHZhciBoYXNoID0gaGFzaFN0cmluZyhrZXkpO1xuICAgICAgdmFyIGNhY2hlSGl0ID0gY2hbaGFzaF07XG5cbiAgICAgIGlmIChjYWNoZUhpdCkge1xuICAgICAgICByZXR1cm4gY2FjaGVIaXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2hbaGFzaF0gPSBmbi5jYWxsKGVsZXMsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZm4uY2FsbChlbGVzLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTtcbiAgICB9XG4gIH07XG59O1xuXG52YXIgZWxlc2ZuJGcgPSB7XG4gIHBhcmVudDogZnVuY3Rpb24gcGFyZW50KHNlbGVjdG9yKSB7XG4gICAgdmFyIHBhcmVudHMgPSBbXTsgLy8gb3B0aW1pc2F0aW9uIGZvciBzaW5nbGUgZWxlIGNhbGxcblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIHBhcmVudCA9IHRoaXNbMF0uX3ByaXZhdGUucGFyZW50O1xuXG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgIHZhciBfcGFyZW50ID0gZWxlLl9wcml2YXRlLnBhcmVudDtcblxuICAgICAgaWYgKF9wYXJlbnQpIHtcbiAgICAgICAgcGFyZW50cy5wdXNoKF9wYXJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNwYXduKHBhcmVudHMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH0sXG4gIHBhcmVudHM6IGZ1bmN0aW9uIHBhcmVudHMoc2VsZWN0b3IpIHtcbiAgICB2YXIgcGFyZW50cyA9IFtdO1xuICAgIHZhciBlbGVzID0gdGhpcy5wYXJlbnQoKTtcblxuICAgIHdoaWxlIChlbGVzLm5vbmVtcHR5KCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgcGFyZW50cy5wdXNoKGVsZSk7XG4gICAgICB9XG5cbiAgICAgIGVsZXMgPSBlbGVzLnBhcmVudCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNwYXduKHBhcmVudHMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH0sXG4gIGNvbW1vbkFuY2VzdG9yczogZnVuY3Rpb24gY29tbW9uQW5jZXN0b3JzKHNlbGVjdG9yKSB7XG4gICAgdmFyIGFuY2VzdG9ycztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICB2YXIgcGFyZW50cyA9IGVsZS5wYXJlbnRzKCk7XG4gICAgICBhbmNlc3RvcnMgPSBhbmNlc3RvcnMgfHwgcGFyZW50cztcbiAgICAgIGFuY2VzdG9ycyA9IGFuY2VzdG9ycy5pbnRlcnNlY3QocGFyZW50cyk7IC8vIGN1cnJlbnQgbGlzdCBtdXN0IGJlIGNvbW1vbiB3aXRoIGN1cnJlbnQgZWxlIHBhcmVudHMgc2V0XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuY2VzdG9ycy5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LFxuICBvcnBoYW5zOiBmdW5jdGlvbiBvcnBoYW5zKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RkRmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNPcnBoYW4oKTtcbiAgICB9KS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LFxuICBub25vcnBoYW5zOiBmdW5jdGlvbiBub25vcnBoYW5zKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RkRmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNDaGlsZCgpO1xuICAgIH0pLmZpbHRlcihzZWxlY3Rvcik7XG4gIH0sXG4gIGNoaWxkcmVuOiBjYWNoZShmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICB2YXIgZWxlQ2hpbGRyZW4gPSBlbGUuX3ByaXZhdGUuY2hpbGRyZW47XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlQ2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChlbGVDaGlsZHJlbltqXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24oY2hpbGRyZW4sIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH0sICdjaGlsZHJlbicpLFxuICBzaWJsaW5nczogZnVuY3Rpb24gc2libGluZ3Moc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQoKS5jaGlsZHJlbigpLm5vdCh0aGlzKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LFxuICBpc1BhcmVudDogZnVuY3Rpb24gaXNQYXJlbnQoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5fcHJpdmF0ZS5jaGlsZHJlbi5sZW5ndGggIT09IDA7XG4gICAgfVxuICB9LFxuICBpc0NoaWxkbGVzczogZnVuY3Rpb24gaXNDaGlsZGxlc3MoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5fcHJpdmF0ZS5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gICAgfVxuICB9LFxuICBpc0NoaWxkOiBmdW5jdGlvbiBpc0NoaWxkKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5pc05vZGUoKSAmJiBlbGUuX3ByaXZhdGUucGFyZW50ICE9IG51bGw7XG4gICAgfVxuICB9LFxuICBpc09ycGhhbjogZnVuY3Rpb24gaXNPcnBoYW4oKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5fcHJpdmF0ZS5wYXJlbnQgPT0gbnVsbDtcbiAgICB9XG4gIH0sXG4gIGRlc2NlbmRhbnRzOiBmdW5jdGlvbiBkZXNjZW5kYW50cyhzZWxlY3Rvcikge1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuXG4gICAgZnVuY3Rpb24gYWRkKGVsZXMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgZWxlbWVudHMucHVzaChlbGUpO1xuXG4gICAgICAgIGlmIChlbGUuY2hpbGRyZW4oKS5ub25lbXB0eSgpKSB7XG4gICAgICAgICAgYWRkKGVsZS5jaGlsZHJlbigpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGFkZCh0aGlzLmNoaWxkcmVuKCkpO1xuICAgIHJldHVybiB0aGlzLnNwYXduKGVsZW1lbnRzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBmb3JFYWNoQ29tcG91bmQoZWxlcywgZm4sIGluY2x1ZGVTZWxmLCByZWN1cnNpdmVTdGVwKSB7XG4gIHZhciBxID0gW107XG4gIHZhciBkaWQgPSBuZXcgU2V0JDEoKTtcbiAgdmFyIGN5ID0gZWxlcy5jeSgpO1xuICB2YXIgaGFzQ29tcG91bmRzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuXG4gICAgaWYgKGluY2x1ZGVTZWxmKSB7XG4gICAgICBxLnB1c2goZWxlKTtcbiAgICB9IGVsc2UgaWYgKGhhc0NvbXBvdW5kcykge1xuICAgICAgcmVjdXJzaXZlU3RlcChxLCBkaWQsIGVsZSk7XG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKHEubGVuZ3RoID4gMCkge1xuICAgIHZhciBfZWxlID0gcS5zaGlmdCgpO1xuXG4gICAgZm4oX2VsZSk7XG4gICAgZGlkLmFkZChfZWxlLmlkKCkpO1xuXG4gICAgaWYgKGhhc0NvbXBvdW5kcykge1xuICAgICAgcmVjdXJzaXZlU3RlcChxLCBkaWQsIF9lbGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbGVzO1xufVxuXG5mdW5jdGlvbiBhZGRDaGlsZHJlbihxLCBkaWQsIGVsZSkge1xuICBpZiAoZWxlLmlzUGFyZW50KCkpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBlbGUuX3ByaXZhdGUuY2hpbGRyZW47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcblxuICAgICAgaWYgKCFkaWQuaGFzKGNoaWxkLmlkKCkpKSB7XG4gICAgICAgIHEucHVzaChjaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59IC8vIHZlcnkgZWZmaWNpZW50IHZlcnNpb24gb2YgZWxlcy5hZGQoIGVsZXMuZGVzY2VuZGFudHMoKSApLmZvckVhY2goKVxuLy8gZm9yIGludGVybmFsIHVzZVxuXG5cbmVsZXNmbiRnLmZvckVhY2hEb3duID0gZnVuY3Rpb24gKGZuKSB7XG4gIHZhciBpbmNsdWRlU2VsZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgcmV0dXJuIGZvckVhY2hDb21wb3VuZCh0aGlzLCBmbiwgaW5jbHVkZVNlbGYsIGFkZENoaWxkcmVuKTtcbn07XG5cbmZ1bmN0aW9uIGFkZFBhcmVudChxLCBkaWQsIGVsZSkge1xuICBpZiAoZWxlLmlzQ2hpbGQoKSkge1xuICAgIHZhciBwYXJlbnQgPSBlbGUuX3ByaXZhdGUucGFyZW50O1xuXG4gICAgaWYgKCFkaWQuaGFzKHBhcmVudC5pZCgpKSkge1xuICAgICAgcS5wdXNoKHBhcmVudCk7XG4gICAgfVxuICB9XG59XG5cbmVsZXNmbiRnLmZvckVhY2hVcCA9IGZ1bmN0aW9uIChmbikge1xuICB2YXIgaW5jbHVkZVNlbGYgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gIHJldHVybiBmb3JFYWNoQ29tcG91bmQodGhpcywgZm4sIGluY2x1ZGVTZWxmLCBhZGRQYXJlbnQpO1xufTtcblxuZnVuY3Rpb24gYWRkUGFyZW50QW5kQ2hpbGRyZW4ocSwgZGlkLCBlbGUpIHtcbiAgYWRkUGFyZW50KHEsIGRpZCwgZWxlKTtcbiAgYWRkQ2hpbGRyZW4ocSwgZGlkLCBlbGUpO1xufVxuXG5lbGVzZm4kZy5mb3JFYWNoVXBBbmREb3duID0gZnVuY3Rpb24gKGZuKSB7XG4gIHZhciBpbmNsdWRlU2VsZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgcmV0dXJuIGZvckVhY2hDb21wb3VuZCh0aGlzLCBmbiwgaW5jbHVkZVNlbGYsIGFkZFBhcmVudEFuZENoaWxkcmVuKTtcbn07IC8vIGFsaWFzZXNcblxuXG5lbGVzZm4kZy5hbmNlc3RvcnMgPSBlbGVzZm4kZy5wYXJlbnRzO1xuXG52YXIgZm4kMSwgZWxlc2ZuJGg7XG5mbiQxID0gZWxlc2ZuJGggPSB7XG4gIGRhdGE6IGRlZmluZSQzLmRhdGEoe1xuICAgIGZpZWxkOiAnZGF0YScsXG4gICAgYmluZGluZ0V2ZW50OiAnZGF0YScsXG4gICAgYWxsb3dCaW5kaW5nOiB0cnVlLFxuICAgIGFsbG93U2V0dGluZzogdHJ1ZSxcbiAgICBzZXR0aW5nRXZlbnQ6ICdkYXRhJyxcbiAgICBzZXR0aW5nVHJpZ2dlcnNFdmVudDogdHJ1ZSxcbiAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgYWxsb3dHZXR0aW5nOiB0cnVlLFxuICAgIGltbXV0YWJsZUtleXM6IHtcbiAgICAgICdpZCc6IHRydWUsXG4gICAgICAnc291cmNlJzogdHJ1ZSxcbiAgICAgICd0YXJnZXQnOiB0cnVlLFxuICAgICAgJ3BhcmVudCc6IHRydWVcbiAgICB9LFxuICAgIHVwZGF0ZVN0eWxlOiB0cnVlXG4gIH0pLFxuICByZW1vdmVEYXRhOiBkZWZpbmUkMy5yZW1vdmVEYXRhKHtcbiAgICBmaWVsZDogJ2RhdGEnLFxuICAgIGV2ZW50OiAnZGF0YScsXG4gICAgdHJpZ2dlckZuTmFtZTogJ3RyaWdnZXInLFxuICAgIHRyaWdnZXJFdmVudDogdHJ1ZSxcbiAgICBpbW11dGFibGVLZXlzOiB7XG4gICAgICAnaWQnOiB0cnVlLFxuICAgICAgJ3NvdXJjZSc6IHRydWUsXG4gICAgICAndGFyZ2V0JzogdHJ1ZSxcbiAgICAgICdwYXJlbnQnOiB0cnVlXG4gICAgfSxcbiAgICB1cGRhdGVTdHlsZTogdHJ1ZVxuICB9KSxcbiAgc2NyYXRjaDogZGVmaW5lJDMuZGF0YSh7XG4gICAgZmllbGQ6ICdzY3JhdGNoJyxcbiAgICBiaW5kaW5nRXZlbnQ6ICdzY3JhdGNoJyxcbiAgICBhbGxvd0JpbmRpbmc6IHRydWUsXG4gICAgYWxsb3dTZXR0aW5nOiB0cnVlLFxuICAgIHNldHRpbmdFdmVudDogJ3NjcmF0Y2gnLFxuICAgIHNldHRpbmdUcmlnZ2Vyc0V2ZW50OiB0cnVlLFxuICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICBhbGxvd0dldHRpbmc6IHRydWUsXG4gICAgdXBkYXRlU3R5bGU6IHRydWVcbiAgfSksXG4gIHJlbW92ZVNjcmF0Y2g6IGRlZmluZSQzLnJlbW92ZURhdGEoe1xuICAgIGZpZWxkOiAnc2NyYXRjaCcsXG4gICAgZXZlbnQ6ICdzY3JhdGNoJyxcbiAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgdHJpZ2dlckV2ZW50OiB0cnVlLFxuICAgIHVwZGF0ZVN0eWxlOiB0cnVlXG4gIH0pLFxuICByc2NyYXRjaDogZGVmaW5lJDMuZGF0YSh7XG4gICAgZmllbGQ6ICdyc2NyYXRjaCcsXG4gICAgYWxsb3dCaW5kaW5nOiBmYWxzZSxcbiAgICBhbGxvd1NldHRpbmc6IHRydWUsXG4gICAgc2V0dGluZ1RyaWdnZXJzRXZlbnQ6IGZhbHNlLFxuICAgIGFsbG93R2V0dGluZzogdHJ1ZVxuICB9KSxcbiAgcmVtb3ZlUnNjcmF0Y2g6IGRlZmluZSQzLnJlbW92ZURhdGEoe1xuICAgIGZpZWxkOiAncnNjcmF0Y2gnLFxuICAgIHRyaWdnZXJFdmVudDogZmFsc2VcbiAgfSksXG4gIGlkOiBmdW5jdGlvbiBpZCgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuX3ByaXZhdGUuZGF0YS5pZDtcbiAgICB9XG4gIH1cbn07IC8vIGFsaWFzZXNcblxuZm4kMS5hdHRyID0gZm4kMS5kYXRhO1xuZm4kMS5yZW1vdmVBdHRyID0gZm4kMS5yZW1vdmVEYXRhO1xudmFyIGRhdGEkMSA9IGVsZXNmbiRoO1xuXG52YXIgZWxlc2ZuJGkgPSB7fTtcblxuZnVuY3Rpb24gZGVmaW5lRGVncmVlRnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpbmNsdWRlTG9vcHMpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBpZiAoaW5jbHVkZUxvb3BzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGluY2x1ZGVMb29wcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHNlbGYubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNlbGYuaXNOb2RlKCkgJiYgIXNlbGYucmVtb3ZlZCgpKSB7XG4gICAgICB2YXIgZGVncmVlID0gMDtcbiAgICAgIHZhciBub2RlID0gc2VsZlswXTtcbiAgICAgIHZhciBjb25uZWN0ZWRFZGdlcyA9IG5vZGUuX3ByaXZhdGUuZWRnZXM7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29ubmVjdGVkRWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBjb25uZWN0ZWRFZGdlc1tpXTtcblxuICAgICAgICBpZiAoIWluY2x1ZGVMb29wcyAmJiBlZGdlLmlzTG9vcCgpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBkZWdyZWUgKz0gY2FsbGJhY2sobm9kZSwgZWRnZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkZWdyZWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH07XG59XG5cbmV4dGVuZChlbGVzZm4kaSwge1xuICBkZWdyZWU6IGRlZmluZURlZ3JlZUZ1bmN0aW9uKGZ1bmN0aW9uIChub2RlLCBlZGdlKSB7XG4gICAgaWYgKGVkZ2Uuc291cmNlKCkuc2FtZShlZGdlLnRhcmdldCgpKSkge1xuICAgICAgcmV0dXJuIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfSksXG4gIGluZGVncmVlOiBkZWZpbmVEZWdyZWVGdW5jdGlvbihmdW5jdGlvbiAobm9kZSwgZWRnZSkge1xuICAgIGlmIChlZGdlLnRhcmdldCgpLnNhbWUobm9kZSkpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH0pLFxuICBvdXRkZWdyZWU6IGRlZmluZURlZ3JlZUZ1bmN0aW9uKGZ1bmN0aW9uIChub2RlLCBlZGdlKSB7XG4gICAgaWYgKGVkZ2Uuc291cmNlKCkuc2FtZShub2RlKSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSlcbn0pO1xuXG5mdW5jdGlvbiBkZWZpbmVEZWdyZWVCb3VuZHNGdW5jdGlvbihkZWdyZWVGbiwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpbmNsdWRlTG9vcHMpIHtcbiAgICB2YXIgcmV0O1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBub2Rlc1tpXTtcbiAgICAgIHZhciBkZWdyZWUgPSBlbGVbZGVncmVlRm5dKGluY2x1ZGVMb29wcyk7XG5cbiAgICAgIGlmIChkZWdyZWUgIT09IHVuZGVmaW5lZCAmJiAocmV0ID09PSB1bmRlZmluZWQgfHwgY2FsbGJhY2soZGVncmVlLCByZXQpKSkge1xuICAgICAgICByZXQgPSBkZWdyZWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbn1cblxuZXh0ZW5kKGVsZXNmbiRpLCB7XG4gIG1pbkRlZ3JlZTogZGVmaW5lRGVncmVlQm91bmRzRnVuY3Rpb24oJ2RlZ3JlZScsIGZ1bmN0aW9uIChkZWdyZWUsIG1pbikge1xuICAgIHJldHVybiBkZWdyZWUgPCBtaW47XG4gIH0pLFxuICBtYXhEZWdyZWU6IGRlZmluZURlZ3JlZUJvdW5kc0Z1bmN0aW9uKCdkZWdyZWUnLCBmdW5jdGlvbiAoZGVncmVlLCBtYXgpIHtcbiAgICByZXR1cm4gZGVncmVlID4gbWF4O1xuICB9KSxcbiAgbWluSW5kZWdyZWU6IGRlZmluZURlZ3JlZUJvdW5kc0Z1bmN0aW9uKCdpbmRlZ3JlZScsIGZ1bmN0aW9uIChkZWdyZWUsIG1pbikge1xuICAgIHJldHVybiBkZWdyZWUgPCBtaW47XG4gIH0pLFxuICBtYXhJbmRlZ3JlZTogZGVmaW5lRGVncmVlQm91bmRzRnVuY3Rpb24oJ2luZGVncmVlJywgZnVuY3Rpb24gKGRlZ3JlZSwgbWF4KSB7XG4gICAgcmV0dXJuIGRlZ3JlZSA+IG1heDtcbiAgfSksXG4gIG1pbk91dGRlZ3JlZTogZGVmaW5lRGVncmVlQm91bmRzRnVuY3Rpb24oJ291dGRlZ3JlZScsIGZ1bmN0aW9uIChkZWdyZWUsIG1pbikge1xuICAgIHJldHVybiBkZWdyZWUgPCBtaW47XG4gIH0pLFxuICBtYXhPdXRkZWdyZWU6IGRlZmluZURlZ3JlZUJvdW5kc0Z1bmN0aW9uKCdvdXRkZWdyZWUnLCBmdW5jdGlvbiAoZGVncmVlLCBtYXgpIHtcbiAgICByZXR1cm4gZGVncmVlID4gbWF4O1xuICB9KVxufSk7XG5leHRlbmQoZWxlc2ZuJGksIHtcbiAgdG90YWxEZWdyZWU6IGZ1bmN0aW9uIHRvdGFsRGVncmVlKGluY2x1ZGVMb29wcykge1xuICAgIHZhciB0b3RhbCA9IDA7XG4gICAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdG90YWwgKz0gbm9kZXNbaV0uZGVncmVlKGluY2x1ZGVMb29wcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvdGFsO1xuICB9XG59KTtcblxudmFyIGZuJDIsIGVsZXNmbiRqO1xuXG52YXIgYmVmb3JlUG9zaXRpb25TZXQgPSBmdW5jdGlvbiBiZWZvcmVQb3NpdGlvblNldChlbGVzLCBuZXdQb3MsIHNpbGVudCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tpXTtcblxuICAgIGlmICghZWxlLmxvY2tlZCgpKSB7XG4gICAgICB2YXIgb2xkUG9zID0gZWxlLl9wcml2YXRlLnBvc2l0aW9uO1xuICAgICAgdmFyIGRlbHRhID0ge1xuICAgICAgICB4OiBuZXdQb3MueCAhPSBudWxsID8gbmV3UG9zLnggLSBvbGRQb3MueCA6IDAsXG4gICAgICAgIHk6IG5ld1Bvcy55ICE9IG51bGwgPyBuZXdQb3MueSAtIG9sZFBvcy55IDogMFxuICAgICAgfTtcblxuICAgICAgaWYgKGVsZS5pc1BhcmVudCgpICYmICEoZGVsdGEueCA9PT0gMCAmJiBkZWx0YS55ID09PSAwKSkge1xuICAgICAgICBlbGUuY2hpbGRyZW4oKS5zaGlmdChkZWx0YSwgc2lsZW50KTtcbiAgICAgIH1cblxuICAgICAgZWxlLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSgpO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHBvc2l0aW9uRGVmID0ge1xuICBmaWVsZDogJ3Bvc2l0aW9uJyxcbiAgYmluZGluZ0V2ZW50OiAncG9zaXRpb24nLFxuICBhbGxvd0JpbmRpbmc6IHRydWUsXG4gIGFsbG93U2V0dGluZzogdHJ1ZSxcbiAgc2V0dGluZ0V2ZW50OiAncG9zaXRpb24nLFxuICBzZXR0aW5nVHJpZ2dlcnNFdmVudDogdHJ1ZSxcbiAgdHJpZ2dlckZuTmFtZTogJ2VtaXRBbmROb3RpZnknLFxuICBhbGxvd0dldHRpbmc6IHRydWUsXG4gIHZhbGlkS2V5czogWyd4JywgJ3knXSxcbiAgYmVmb3JlR2V0OiBmdW5jdGlvbiBiZWZvcmVHZXQoZWxlKSB7XG4gICAgZWxlLnVwZGF0ZUNvbXBvdW5kQm91bmRzKCk7XG4gIH0sXG4gIGJlZm9yZVNldDogZnVuY3Rpb24gYmVmb3JlU2V0KGVsZXMsIG5ld1Bvcykge1xuICAgIGJlZm9yZVBvc2l0aW9uU2V0KGVsZXMsIG5ld1BvcywgZmFsc2UpO1xuICB9LFxuICBvblNldDogZnVuY3Rpb24gb25TZXQoZWxlcykge1xuICAgIGVsZXMuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlKCk7XG4gIH0sXG4gIGNhblNldDogZnVuY3Rpb24gY2FuU2V0KGVsZSkge1xuICAgIHJldHVybiAhZWxlLmxvY2tlZCgpO1xuICB9XG59O1xuZm4kMiA9IGVsZXNmbiRqID0ge1xuICBwb3NpdGlvbjogZGVmaW5lJDMuZGF0YShwb3NpdGlvbkRlZiksXG4gIC8vIHBvc2l0aW9uIGJ1dCBubyBub3RpZmljYXRpb24gdG8gcmVuZGVyZXJcbiAgc2lsZW50UG9zaXRpb246IGRlZmluZSQzLmRhdGEoZXh0ZW5kKHt9LCBwb3NpdGlvbkRlZiwge1xuICAgIGFsbG93QmluZGluZzogZmFsc2UsXG4gICAgYWxsb3dTZXR0aW5nOiB0cnVlLFxuICAgIHNldHRpbmdUcmlnZ2Vyc0V2ZW50OiBmYWxzZSxcbiAgICBhbGxvd0dldHRpbmc6IGZhbHNlLFxuICAgIGJlZm9yZVNldDogZnVuY3Rpb24gYmVmb3JlU2V0KGVsZXMsIG5ld1Bvcykge1xuICAgICAgYmVmb3JlUG9zaXRpb25TZXQoZWxlcywgbmV3UG9zLCB0cnVlKTtcbiAgICB9LFxuICAgIG9uU2V0OiBmdW5jdGlvbiBvblNldChlbGVzKSB7XG4gICAgICBlbGVzLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSgpO1xuICAgIH1cbiAgfSkpLFxuICBwb3NpdGlvbnM6IGZ1bmN0aW9uIHBvc2l0aW9ucyhwb3MsIHNpbGVudCkge1xuICAgIGlmIChwbGFpbk9iamVjdChwb3MpKSB7XG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHRoaXMuc2lsZW50UG9zaXRpb24ocG9zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9zaXRpb24ocG9zKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZuKHBvcykpIHtcbiAgICAgIHZhciBfZm4gPSBwb3M7XG4gICAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgICBjeS5zdGFydEJhdGNoKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gdGhpc1tpXTtcblxuICAgICAgICB2YXIgX3BvcyA9IHZvaWQgMDtcblxuICAgICAgICBpZiAoX3BvcyA9IF9mbihlbGUsIGkpKSB7XG4gICAgICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICAgICAgZWxlLnNpbGVudFBvc2l0aW9uKF9wb3MpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbGUucG9zaXRpb24oX3Bvcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGN5LmVuZEJhdGNoKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHNpbGVudFBvc2l0aW9uczogZnVuY3Rpb24gc2lsZW50UG9zaXRpb25zKHBvcykge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9ucyhwb3MsIHRydWUpO1xuICB9LFxuICBzaGlmdDogZnVuY3Rpb24gc2hpZnQoZGltLCB2YWwsIHNpbGVudCkge1xuICAgIHZhciBkZWx0YTtcblxuICAgIGlmIChwbGFpbk9iamVjdChkaW0pKSB7XG4gICAgICBkZWx0YSA9IHtcbiAgICAgICAgeDogbnVtYmVyKGRpbS54KSA/IGRpbS54IDogMCxcbiAgICAgICAgeTogbnVtYmVyKGRpbS55KSA/IGRpbS55IDogMFxuICAgICAgfTtcbiAgICAgIHNpbGVudCA9IHZhbDtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyhkaW0pICYmIG51bWJlcih2YWwpKSB7XG4gICAgICBkZWx0YSA9IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfTtcbiAgICAgIGRlbHRhW2RpbV0gPSB2YWw7XG4gICAgfVxuXG4gICAgaWYgKGRlbHRhICE9IG51bGwpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICAgIGN5LnN0YXJ0QmF0Y2goKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgICB2YXIgcG9zID0gZWxlLnBvc2l0aW9uKCk7XG4gICAgICAgIHZhciBuZXdQb3MgPSB7XG4gICAgICAgICAgeDogcG9zLnggKyBkZWx0YS54LFxuICAgICAgICAgIHk6IHBvcy55ICsgZGVsdGEueVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgICBlbGUuc2lsZW50UG9zaXRpb24obmV3UG9zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGUucG9zaXRpb24obmV3UG9zKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjeS5lbmRCYXRjaCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBzaWxlbnRTaGlmdDogZnVuY3Rpb24gc2lsZW50U2hpZnQoZGltLCB2YWwpIHtcbiAgICBpZiAocGxhaW5PYmplY3QoZGltKSkge1xuICAgICAgdGhpcy5zaGlmdChkaW0sIHRydWUpO1xuICAgIH0gZWxzZSBpZiAoc3RyaW5nKGRpbSkgJiYgbnVtYmVyKHZhbCkpIHtcbiAgICAgIHRoaXMuc2hpZnQoZGltLCB2YWwsIHRydWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICAvLyBnZXQvc2V0IHRoZSByZW5kZXJlZCAoaS5lLiBvbiBzY3JlZW4pIHBvc2l0b24gb2YgdGhlIGVsZW1lbnRcbiAgcmVuZGVyZWRQb3NpdGlvbjogZnVuY3Rpb24gcmVuZGVyZWRQb3NpdGlvbihkaW0sIHZhbCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIHJwb3MgPSBwbGFpbk9iamVjdChkaW0pID8gZGltIDogdW5kZWZpbmVkO1xuICAgIHZhciBzZXR0aW5nID0gcnBvcyAhPT0gdW5kZWZpbmVkIHx8IHZhbCAhPT0gdW5kZWZpbmVkICYmIHN0cmluZyhkaW0pO1xuXG4gICAgaWYgKGVsZSAmJiBlbGUuaXNOb2RlKCkpIHtcbiAgICAgIC8vIG11c3QgaGF2ZSBhbiBlbGVtZW50IGFuZCBtdXN0IGJlIGEgbm9kZSB0byByZXR1cm4gcG9zaXRpb25cbiAgICAgIGlmIChzZXR0aW5nKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBfZWxlID0gdGhpc1tpXTtcblxuICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gc2V0IG9uZSBkaW1lbnNpb25cbiAgICAgICAgICAgIF9lbGUucG9zaXRpb24oZGltLCAodmFsIC0gcGFuW2RpbV0pIC8gem9vbSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChycG9zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHNldCB3aG9sZSBwb3NpdGlvblxuICAgICAgICAgICAgX2VsZS5wb3NpdGlvbihyZW5kZXJlZFRvTW9kZWxQb3NpdGlvbihycG9zLCB6b29tLCBwYW4pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGdldHRpbmdcbiAgICAgICAgdmFyIHBvcyA9IGVsZS5wb3NpdGlvbigpO1xuICAgICAgICBycG9zID0gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24ocG9zLCB6b29tLCBwYW4pO1xuXG4gICAgICAgIGlmIChkaW0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIHRoZW4gcmV0dXJuIHRoZSB3aG9sZSByZW5kZXJlZCBwb3NpdGlvblxuICAgICAgICAgIHJldHVybiBycG9zO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRoZW4gcmV0dXJuIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9uXG4gICAgICAgICAgcmV0dXJuIHJwb3NbZGltXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXNldHRpbmcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIGZvciBlbXB0eSBjb2xsZWN0aW9uIGNhc2VcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgLy8gZ2V0L3NldCB0aGUgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHBhcmVudFxuICByZWxhdGl2ZVBvc2l0aW9uOiBmdW5jdGlvbiByZWxhdGl2ZVBvc2l0aW9uKGRpbSwgdmFsKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHZhciBwcG9zID0gcGxhaW5PYmplY3QoZGltKSA/IGRpbSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgc2V0dGluZyA9IHBwb3MgIT09IHVuZGVmaW5lZCB8fCB2YWwgIT09IHVuZGVmaW5lZCAmJiBzdHJpbmcoZGltKTtcbiAgICB2YXIgaGFzQ29tcG91bmROb2RlcyA9IGN5Lmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgIGlmIChlbGUgJiYgZWxlLmlzTm9kZSgpKSB7XG4gICAgICAvLyBtdXN0IGhhdmUgYW4gZWxlbWVudCBhbmQgbXVzdCBiZSBhIG5vZGUgdG8gcmV0dXJuIHBvc2l0aW9uXG4gICAgICBpZiAoc2V0dGluZykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgX2VsZTIgPSB0aGlzW2ldO1xuICAgICAgICAgIHZhciBwYXJlbnQgPSBoYXNDb21wb3VuZE5vZGVzID8gX2VsZTIucGFyZW50KCkgOiBudWxsO1xuICAgICAgICAgIHZhciBoYXNQYXJlbnQgPSBwYXJlbnQgJiYgcGFyZW50Lmxlbmd0aCA+IDA7XG4gICAgICAgICAgdmFyIHJlbGF0aXZlVG9QYXJlbnQgPSBoYXNQYXJlbnQ7XG5cbiAgICAgICAgICBpZiAoaGFzUGFyZW50KSB7XG4gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnRbMF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIG9yaWdpbiA9IHJlbGF0aXZlVG9QYXJlbnQgPyBwYXJlbnQucG9zaXRpb24oKSA6IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gc2V0IG9uZSBkaW1lbnNpb25cbiAgICAgICAgICAgIF9lbGUyLnBvc2l0aW9uKGRpbSwgdmFsICsgb3JpZ2luW2RpbV0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAocHBvcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBzZXQgd2hvbGUgcG9zaXRpb25cbiAgICAgICAgICAgIF9lbGUyLnBvc2l0aW9uKHtcbiAgICAgICAgICAgICAgeDogcHBvcy54ICsgb3JpZ2luLngsXG4gICAgICAgICAgICAgIHk6IHBwb3MueSArIG9yaWdpbi55XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGdldHRpbmdcbiAgICAgICAgdmFyIHBvcyA9IGVsZS5wb3NpdGlvbigpO1xuXG4gICAgICAgIHZhciBfcGFyZW50ID0gaGFzQ29tcG91bmROb2RlcyA/IGVsZS5wYXJlbnQoKSA6IG51bGw7XG5cbiAgICAgICAgdmFyIF9oYXNQYXJlbnQgPSBfcGFyZW50ICYmIF9wYXJlbnQubGVuZ3RoID4gMDtcblxuICAgICAgICB2YXIgX3JlbGF0aXZlVG9QYXJlbnQgPSBfaGFzUGFyZW50O1xuXG4gICAgICAgIGlmIChfaGFzUGFyZW50KSB7XG4gICAgICAgICAgX3BhcmVudCA9IF9wYXJlbnRbMF07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX29yaWdpbiA9IF9yZWxhdGl2ZVRvUGFyZW50ID8gX3BhcmVudC5wb3NpdGlvbigpIDoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9O1xuXG4gICAgICAgIHBwb3MgPSB7XG4gICAgICAgICAgeDogcG9zLnggLSBfb3JpZ2luLngsXG4gICAgICAgICAgeTogcG9zLnkgLSBfb3JpZ2luLnlcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZGltID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyB0aGVuIHJldHVybiB0aGUgd2hvbGUgcmVuZGVyZWQgcG9zaXRpb25cbiAgICAgICAgICByZXR1cm4gcHBvcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGVuIHJldHVybiB0aGUgc3BlY2lmaWVkIGRpbWVuc2lvblxuICAgICAgICAgIHJldHVybiBwcG9zW2RpbV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFzZXR0aW5nKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBmb3IgZW1wdHkgY29sbGVjdGlvbiBjYXNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH1cbn07IC8vIGFsaWFzZXNcblxuZm4kMi5tb2RlbFBvc2l0aW9uID0gZm4kMi5wb2ludCA9IGZuJDIucG9zaXRpb247XG5mbiQyLm1vZGVsUG9zaXRpb25zID0gZm4kMi5wb2ludHMgPSBmbiQyLnBvc2l0aW9ucztcbmZuJDIucmVuZGVyZWRQb2ludCA9IGZuJDIucmVuZGVyZWRQb3NpdGlvbjtcbmZuJDIucmVsYXRpdmVQb2ludCA9IGZuJDIucmVsYXRpdmVQb3NpdGlvbjtcbnZhciBwb3NpdGlvbiA9IGVsZXNmbiRqO1xuXG52YXIgZm4kMywgZWxlc2ZuJGs7XG5mbiQzID0gZWxlc2ZuJGsgPSB7fTtcblxuZWxlc2ZuJGsucmVuZGVyZWRCb3VuZGluZ0JveCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBiYiA9IHRoaXMuYm91bmRpbmdCb3gob3B0aW9ucyk7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgdmFyIHgxID0gYmIueDEgKiB6b29tICsgcGFuLng7XG4gIHZhciB4MiA9IGJiLngyICogem9vbSArIHBhbi54O1xuICB2YXIgeTEgPSBiYi55MSAqIHpvb20gKyBwYW4ueTtcbiAgdmFyIHkyID0gYmIueTIgKiB6b29tICsgcGFuLnk7XG4gIHJldHVybiB7XG4gICAgeDE6IHgxLFxuICAgIHgyOiB4MixcbiAgICB5MTogeTEsXG4gICAgeTI6IHkyLFxuICAgIHc6IHgyIC0geDEsXG4gICAgaDogeTIgLSB5MVxuICB9O1xufTtcblxuZWxlc2ZuJGsuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2lsZW50ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmYWxzZTtcbiAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gIGlmICghY3kuc3R5bGVFbmFibGVkKCkgfHwgIWN5Lmhhc0NvbXBvdW5kTm9kZXMoKSkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5mb3JFYWNoVXAoZnVuY3Rpb24gKGVsZSkge1xuICAgIGlmIChlbGUuaXNQYXJlbnQoKSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgX3AuY29tcG91bmRCb3VuZHNDbGVhbiA9IGZhbHNlO1xuICAgICAgX3AuYmJDYWNoZSA9IG51bGw7XG5cbiAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgIGVsZS5lbWl0QW5kTm90aWZ5KCdib3VuZHMnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmVsZXNmbiRrLnVwZGF0ZUNvbXBvdW5kQm91bmRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZm9yY2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZhbHNlO1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7IC8vIG5vdCBwb3NzaWJsZSB0byBkbyBvbiBub24tY29tcG91bmQgZ3JhcGhzIG9yIHdpdGggdGhlIHN0eWxlIGRpc2FibGVkXG5cbiAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSB8fCAhY3kuaGFzQ29tcG91bmROb2RlcygpKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gLy8gc2F2ZSBjeWNsZXMgd2hlbiBiYXRjaGluZyAtLSBidXQgYm91bmRzIHdpbGwgYmUgc3RhbGUgKG9yIG5vdCBleGlzdCB5ZXQpXG5cblxuICBpZiAoIWZvcmNlICYmIGN5LmJhdGNoaW5nKCkpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZShwYXJlbnQpIHtcbiAgICBpZiAoIXBhcmVudC5pc1BhcmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIF9wID0gcGFyZW50Ll9wcml2YXRlO1xuICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbigpO1xuICAgIHZhciBpbmNsdWRlTGFiZWxzID0gcGFyZW50LnBzdHlsZSgnY29tcG91bmQtc2l6aW5nLXdydC1sYWJlbHMnKS52YWx1ZSA9PT0gJ2luY2x1ZGUnO1xuICAgIHZhciBtaW4gPSB7XG4gICAgICB3aWR0aDoge1xuICAgICAgICB2YWw6IHBhcmVudC5wc3R5bGUoJ21pbi13aWR0aCcpLnBmVmFsdWUsXG4gICAgICAgIGxlZnQ6IHBhcmVudC5wc3R5bGUoJ21pbi13aWR0aC1iaWFzLWxlZnQnKSxcbiAgICAgICAgcmlnaHQ6IHBhcmVudC5wc3R5bGUoJ21pbi13aWR0aC1iaWFzLXJpZ2h0JylcbiAgICAgIH0sXG4gICAgICBoZWlnaHQ6IHtcbiAgICAgICAgdmFsOiBwYXJlbnQucHN0eWxlKCdtaW4taGVpZ2h0JykucGZWYWx1ZSxcbiAgICAgICAgdG9wOiBwYXJlbnQucHN0eWxlKCdtaW4taGVpZ2h0LWJpYXMtdG9wJyksXG4gICAgICAgIGJvdHRvbTogcGFyZW50LnBzdHlsZSgnbWluLWhlaWdodC1iaWFzLWJvdHRvbScpXG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgYmIgPSBjaGlsZHJlbi5ib3VuZGluZ0JveCh7XG4gICAgICBpbmNsdWRlTGFiZWxzOiBpbmNsdWRlTGFiZWxzLFxuICAgICAgaW5jbHVkZU92ZXJsYXlzOiBmYWxzZSxcbiAgICAgIC8vIHVwZGF0aW5nIHRoZSBjb21wb3VuZCBib3VuZHMgaGFwcGVucyBvdXRzaWRlIG9mIHRoZSByZWd1bGFyXG4gICAgICAvLyBjYWNoZSBjeWNsZSAoaS5lLiBiZWZvcmUgZmlyZWQgZXZlbnRzKVxuICAgICAgdXNlQ2FjaGU6IGZhbHNlXG4gICAgfSk7XG4gICAgdmFyIHBvcyA9IF9wLnBvc2l0aW9uOyAvLyBpZiBjaGlsZHJlbiB0YWtlIHVwIHplcm8gYXJlYSB0aGVuIGtlZXAgcG9zaXRpb24gYW5kIGZhbGwgYmFjayBvbiBzdHlsZXNoZWV0IHcvaFxuXG4gICAgaWYgKGJiLncgPT09IDAgfHwgYmIuaCA9PT0gMCkge1xuICAgICAgYmIgPSB7XG4gICAgICAgIHc6IHBhcmVudC5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSxcbiAgICAgICAgaDogcGFyZW50LnBzdHlsZSgnaGVpZ2h0JykucGZWYWx1ZVxuICAgICAgfTtcbiAgICAgIGJiLngxID0gcG9zLnggLSBiYi53IC8gMjtcbiAgICAgIGJiLngyID0gcG9zLnggKyBiYi53IC8gMjtcbiAgICAgIGJiLnkxID0gcG9zLnkgLSBiYi5oIC8gMjtcbiAgICAgIGJiLnkyID0gcG9zLnkgKyBiYi5oIC8gMjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlQmlhc1ZhbHVlcyhwcm9wRGlmZiwgcHJvcEJpYXMsIHByb3BCaWFzQ29tcGxlbWVudCkge1xuICAgICAgdmFyIGJpYXNEaWZmID0gMDtcbiAgICAgIHZhciBiaWFzQ29tcGxlbWVudERpZmYgPSAwO1xuICAgICAgdmFyIGJpYXNUb3RhbCA9IHByb3BCaWFzICsgcHJvcEJpYXNDb21wbGVtZW50O1xuXG4gICAgICBpZiAocHJvcERpZmYgPiAwICYmIGJpYXNUb3RhbCA+IDApIHtcbiAgICAgICAgYmlhc0RpZmYgPSBwcm9wQmlhcyAvIGJpYXNUb3RhbCAqIHByb3BEaWZmO1xuICAgICAgICBiaWFzQ29tcGxlbWVudERpZmYgPSBwcm9wQmlhc0NvbXBsZW1lbnQgLyBiaWFzVG90YWwgKiBwcm9wRGlmZjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmlhc0RpZmY6IGJpYXNEaWZmLFxuICAgICAgICBiaWFzQ29tcGxlbWVudERpZmY6IGJpYXNDb21wbGVtZW50RGlmZlxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlUGFkZGluZ1ZhbHVlcyh3aWR0aCwgaGVpZ2h0LCBwYWRkaW5nT2JqZWN0LCByZWxhdGl2ZVRvKSB7XG4gICAgICAvLyBBc3N1bWluZyBwZXJjZW50YWdlIGlzIG51bWJlciBmcm9tIDAgdG8gMVxuICAgICAgaWYgKHBhZGRpbmdPYmplY3QudW5pdHMgPT09ICclJykge1xuICAgICAgICBzd2l0Y2ggKHJlbGF0aXZlVG8pIHtcbiAgICAgICAgICBjYXNlICd3aWR0aCc6XG4gICAgICAgICAgICByZXR1cm4gd2lkdGggPiAwID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogd2lkdGggOiAwO1xuXG4gICAgICAgICAgY2FzZSAnaGVpZ2h0JzpcbiAgICAgICAgICAgIHJldHVybiBoZWlnaHQgPiAwID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogaGVpZ2h0IDogMDtcblxuICAgICAgICAgIGNhc2UgJ2F2ZXJhZ2UnOlxuICAgICAgICAgICAgcmV0dXJuIHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogKHdpZHRoICsgaGVpZ2h0KSAvIDIgOiAwO1xuXG4gICAgICAgICAgY2FzZSAnbWluJzpcbiAgICAgICAgICAgIHJldHVybiB3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCA/IHdpZHRoID4gaGVpZ2h0ID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogaGVpZ2h0IDogcGFkZGluZ09iamVjdC5wZlZhbHVlICogd2lkdGggOiAwO1xuXG4gICAgICAgICAgY2FzZSAnbWF4JzpcbiAgICAgICAgICAgIHJldHVybiB3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCA/IHdpZHRoID4gaGVpZ2h0ID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogd2lkdGggOiBwYWRkaW5nT2JqZWN0LnBmVmFsdWUgKiBoZWlnaHQgOiAwO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBhZGRpbmdPYmplY3QudW5pdHMgPT09ICdweCcpIHtcbiAgICAgICAgcmV0dXJuIHBhZGRpbmdPYmplY3QucGZWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsZWZ0VmFsID0gbWluLndpZHRoLmxlZnQudmFsdWU7XG5cbiAgICBpZiAobWluLndpZHRoLmxlZnQudW5pdHMgPT09ICdweCcgJiYgbWluLndpZHRoLnZhbCA+IDApIHtcbiAgICAgIGxlZnRWYWwgPSBsZWZ0VmFsICogMTAwIC8gbWluLndpZHRoLnZhbDtcbiAgICB9XG5cbiAgICB2YXIgcmlnaHRWYWwgPSBtaW4ud2lkdGgucmlnaHQudmFsdWU7XG5cbiAgICBpZiAobWluLndpZHRoLnJpZ2h0LnVuaXRzID09PSAncHgnICYmIG1pbi53aWR0aC52YWwgPiAwKSB7XG4gICAgICByaWdodFZhbCA9IHJpZ2h0VmFsICogMTAwIC8gbWluLndpZHRoLnZhbDtcbiAgICB9XG5cbiAgICB2YXIgdG9wVmFsID0gbWluLmhlaWdodC50b3AudmFsdWU7XG5cbiAgICBpZiAobWluLmhlaWdodC50b3AudW5pdHMgPT09ICdweCcgJiYgbWluLmhlaWdodC52YWwgPiAwKSB7XG4gICAgICB0b3BWYWwgPSB0b3BWYWwgKiAxMDAgLyBtaW4uaGVpZ2h0LnZhbDtcbiAgICB9XG5cbiAgICB2YXIgYm90dG9tVmFsID0gbWluLmhlaWdodC5ib3R0b20udmFsdWU7XG5cbiAgICBpZiAobWluLmhlaWdodC5ib3R0b20udW5pdHMgPT09ICdweCcgJiYgbWluLmhlaWdodC52YWwgPiAwKSB7XG4gICAgICBib3R0b21WYWwgPSBib3R0b21WYWwgKiAxMDAgLyBtaW4uaGVpZ2h0LnZhbDtcbiAgICB9XG5cbiAgICB2YXIgd2lkdGhCaWFzRGlmZnMgPSBjb21wdXRlQmlhc1ZhbHVlcyhtaW4ud2lkdGgudmFsIC0gYmIudywgbGVmdFZhbCwgcmlnaHRWYWwpO1xuICAgIHZhciBkaWZmTGVmdCA9IHdpZHRoQmlhc0RpZmZzLmJpYXNEaWZmO1xuICAgIHZhciBkaWZmUmlnaHQgPSB3aWR0aEJpYXNEaWZmcy5iaWFzQ29tcGxlbWVudERpZmY7XG4gICAgdmFyIGhlaWdodEJpYXNEaWZmcyA9IGNvbXB1dGVCaWFzVmFsdWVzKG1pbi5oZWlnaHQudmFsIC0gYmIuaCwgdG9wVmFsLCBib3R0b21WYWwpO1xuICAgIHZhciBkaWZmVG9wID0gaGVpZ2h0Qmlhc0RpZmZzLmJpYXNEaWZmO1xuICAgIHZhciBkaWZmQm90dG9tID0gaGVpZ2h0Qmlhc0RpZmZzLmJpYXNDb21wbGVtZW50RGlmZjtcbiAgICBfcC5hdXRvUGFkZGluZyA9IGNvbXB1dGVQYWRkaW5nVmFsdWVzKGJiLncsIGJiLmgsIHBhcmVudC5wc3R5bGUoJ3BhZGRpbmcnKSwgcGFyZW50LnBzdHlsZSgncGFkZGluZy1yZWxhdGl2ZS10bycpLnZhbHVlKTtcbiAgICBfcC5hdXRvV2lkdGggPSBNYXRoLm1heChiYi53LCBtaW4ud2lkdGgudmFsKTtcbiAgICBwb3MueCA9ICgtZGlmZkxlZnQgKyBiYi54MSArIGJiLngyICsgZGlmZlJpZ2h0KSAvIDI7XG4gICAgX3AuYXV0b0hlaWdodCA9IE1hdGgubWF4KGJiLmgsIG1pbi5oZWlnaHQudmFsKTtcbiAgICBwb3MueSA9ICgtZGlmZlRvcCArIGJiLnkxICsgYmIueTIgKyBkaWZmQm90dG9tKSAvIDI7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG5cbiAgICBpZiAoIV9wLmNvbXBvdW5kQm91bmRzQ2xlYW4gfHwgZm9yY2UpIHtcbiAgICAgIHVwZGF0ZShlbGUpO1xuXG4gICAgICBpZiAoIWN5LmJhdGNoaW5nKCkpIHtcbiAgICAgICAgX3AuY29tcG91bmRCb3VuZHNDbGVhbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG52YXIgbm9uaW5mID0gZnVuY3Rpb24gbm9uaW5mKHgpIHtcbiAgaWYgKHggPT09IEluZmluaXR5IHx8IHggPT09IC1JbmZpbml0eSkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHg7XG59O1xuXG52YXIgdXBkYXRlQm91bmRzID0gZnVuY3Rpb24gdXBkYXRlQm91bmRzKGIsIHgxLCB5MSwgeDIsIHkyKSB7XG4gIC8vIGRvbid0IHVwZGF0ZSB3aXRoIHplcm8gYXJlYSBib3hlc1xuICBpZiAoeDIgLSB4MSA9PT0gMCB8fCB5MiAtIHkxID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIGRvbid0IHVwZGF0ZSB3aXRoIG51bGwgZGltXG5cblxuICBpZiAoeDEgPT0gbnVsbCB8fCB5MSA9PSBudWxsIHx8IHgyID09IG51bGwgfHwgeTIgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGIueDEgPSB4MSA8IGIueDEgPyB4MSA6IGIueDE7XG4gIGIueDIgPSB4MiA+IGIueDIgPyB4MiA6IGIueDI7XG4gIGIueTEgPSB5MSA8IGIueTEgPyB5MSA6IGIueTE7XG4gIGIueTIgPSB5MiA+IGIueTIgPyB5MiA6IGIueTI7XG4gIGIudyA9IGIueDIgLSBiLngxO1xuICBiLmggPSBiLnkyIC0gYi55MTtcbn07XG5cbnZhciB1cGRhdGVCb3VuZHNGcm9tQm94ID0gZnVuY3Rpb24gdXBkYXRlQm91bmRzRnJvbUJveChiLCBiMikge1xuICBpZiAoYjIgPT0gbnVsbCkge1xuICAgIHJldHVybiBiO1xuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZUJvdW5kcyhiLCBiMi54MSwgYjIueTEsIGIyLngyLCBiMi55Mik7XG59O1xuXG52YXIgcHJlZml4ZWRQcm9wZXJ0eSA9IGZ1bmN0aW9uIHByZWZpeGVkUHJvcGVydHkob2JqLCBmaWVsZCwgcHJlZml4KSB7XG4gIHJldHVybiBnZXRQcmVmaXhlZFByb3BlcnR5KG9iaiwgZmllbGQsIHByZWZpeCk7XG59O1xuXG52YXIgdXBkYXRlQm91bmRzRnJvbUFycm93ID0gZnVuY3Rpb24gdXBkYXRlQm91bmRzRnJvbUFycm93KGJvdW5kcywgZWxlLCBwcmVmaXgpIHtcbiAgaWYgKGVsZS5jeSgpLmhlYWRsZXNzKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG4gIHZhciBoYWxmQXJXID0gcnN0eWxlLmFycm93V2lkdGggLyAyO1xuICB2YXIgYXJyb3dUeXBlID0gZWxlLnBzdHlsZShwcmVmaXggKyAnLWFycm93LXNoYXBlJykudmFsdWU7XG4gIHZhciB4O1xuICB2YXIgeTtcblxuICBpZiAoYXJyb3dUeXBlICE9PSAnbm9uZScpIHtcbiAgICBpZiAocHJlZml4ID09PSAnc291cmNlJykge1xuICAgICAgeCA9IHJzdHlsZS5zcmNYO1xuICAgICAgeSA9IHJzdHlsZS5zcmNZO1xuICAgIH0gZWxzZSBpZiAocHJlZml4ID09PSAndGFyZ2V0Jykge1xuICAgICAgeCA9IHJzdHlsZS50Z3RYO1xuICAgICAgeSA9IHJzdHlsZS50Z3RZO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0gcnN0eWxlLm1pZFg7XG4gICAgICB5ID0gcnN0eWxlLm1pZFk7XG4gICAgfSAvLyBhbHdheXMgc3RvcmUgdGhlIGluZGl2aWR1YWwgYXJyb3cgYm91bmRzXG5cblxuICAgIHZhciBiYnMgPSBfcC5hcnJvd0JvdW5kcyA9IF9wLmFycm93Qm91bmRzIHx8IHt9O1xuICAgIHZhciBiYiA9IGJic1twcmVmaXhdID0gYmJzW3ByZWZpeF0gfHwge307XG4gICAgYmIueDEgPSB4IC0gaGFsZkFyVztcbiAgICBiYi55MSA9IHkgLSBoYWxmQXJXO1xuICAgIGJiLngyID0geCArIGhhbGZBclc7XG4gICAgYmIueTIgPSB5ICsgaGFsZkFyVztcbiAgICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgICBleHBhbmRCb3VuZGluZ0JveChiYiwgMSk7XG4gICAgdXBkYXRlQm91bmRzKGJvdW5kcywgYmIueDEsIGJiLnkxLCBiYi54MiwgYmIueTIpO1xuICB9XG59O1xuXG52YXIgdXBkYXRlQm91bmRzRnJvbUxhYmVsID0gZnVuY3Rpb24gdXBkYXRlQm91bmRzRnJvbUxhYmVsKGJvdW5kcywgZWxlLCBwcmVmaXgpIHtcbiAgaWYgKGVsZS5jeSgpLmhlYWRsZXNzKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcHJlZml4RGFzaDtcblxuICBpZiAocHJlZml4KSB7XG4gICAgcHJlZml4RGFzaCA9IHByZWZpeCArICctJztcbiAgfSBlbHNlIHtcbiAgICBwcmVmaXhEYXNoID0gJyc7XG4gIH1cblxuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG4gIHZhciBsYWJlbCA9IGVsZS5wc3R5bGUocHJlZml4RGFzaCArICdsYWJlbCcpLnN0clZhbHVlO1xuXG4gIGlmIChsYWJlbCkge1xuICAgIHZhciBoYWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LWhhbGlnbicpO1xuICAgIHZhciB2YWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LXZhbGlnbicpO1xuICAgIHZhciBsYWJlbFdpZHRoID0gcHJlZml4ZWRQcm9wZXJ0eShyc3R5bGUsICdsYWJlbFdpZHRoJywgcHJlZml4KTtcbiAgICB2YXIgbGFiZWxIZWlnaHQgPSBwcmVmaXhlZFByb3BlcnR5KHJzdHlsZSwgJ2xhYmVsSGVpZ2h0JywgcHJlZml4KTtcbiAgICB2YXIgbGFiZWxYID0gcHJlZml4ZWRQcm9wZXJ0eShyc3R5bGUsICdsYWJlbFgnLCBwcmVmaXgpO1xuICAgIHZhciBsYWJlbFkgPSBwcmVmaXhlZFByb3BlcnR5KHJzdHlsZSwgJ2xhYmVsWScsIHByZWZpeCk7XG4gICAgdmFyIG1hcmdpblggPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1tYXJnaW4teCcpLnBmVmFsdWU7XG4gICAgdmFyIG1hcmdpblkgPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1tYXJnaW4teScpLnBmVmFsdWU7XG4gICAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcbiAgICB2YXIgcm90YXRpb24gPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1yb3RhdGlvbicpO1xuICAgIHZhciBvdXRsaW5lV2lkdGggPSBlbGUucHN0eWxlKCd0ZXh0LW91dGxpbmUtd2lkdGgnKS5wZlZhbHVlO1xuICAgIHZhciBib3JkZXJXaWR0aCA9IGVsZS5wc3R5bGUoJ3RleHQtYm9yZGVyLXdpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgaGFsZkJvcmRlcldpZHRoID0gYm9yZGVyV2lkdGggLyAyO1xuICAgIHZhciBwYWRkaW5nID0gZWxlLnBzdHlsZSgndGV4dC1iYWNrZ3JvdW5kLXBhZGRpbmcnKS5wZlZhbHVlO1xuICAgIHZhciBtYXJnaW5PZkVycm9yID0gMjsgLy8gZXhwYW5kIHRvIHdvcmsgYXJvdW5kIGJyb3dzZXIgZGltZW5zaW9uIGluYWNjdXJhY2llc1xuXG4gICAgdmFyIGxoID0gbGFiZWxIZWlnaHQ7XG4gICAgdmFyIGx3ID0gbGFiZWxXaWR0aDtcbiAgICB2YXIgbHdfMiA9IGx3IC8gMjtcbiAgICB2YXIgbGhfMiA9IGxoIC8gMjtcbiAgICB2YXIgbHgxLCBseDIsIGx5MSwgbHkyO1xuXG4gICAgaWYgKGlzRWRnZSkge1xuICAgICAgbHgxID0gbGFiZWxYIC0gbHdfMjtcbiAgICAgIGx4MiA9IGxhYmVsWCArIGx3XzI7XG4gICAgICBseTEgPSBsYWJlbFkgLSBsaF8yO1xuICAgICAgbHkyID0gbGFiZWxZICsgbGhfMjtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChoYWxpZ24udmFsdWUpIHtcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgbHgxID0gbGFiZWxYIC0gbHc7XG4gICAgICAgICAgbHgyID0gbGFiZWxYO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgbHgxID0gbGFiZWxYIC0gbHdfMjtcbiAgICAgICAgICBseDIgPSBsYWJlbFggKyBsd18yO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICBseDEgPSBsYWJlbFg7XG4gICAgICAgICAgbHgyID0gbGFiZWxYICsgbHc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAodmFsaWduLnZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgbHkxID0gbGFiZWxZIC0gbGg7XG4gICAgICAgICAgbHkyID0gbGFiZWxZO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgbHkxID0gbGFiZWxZIC0gbGhfMjtcbiAgICAgICAgICBseTIgPSBsYWJlbFkgKyBsaF8yO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgbHkxID0gbGFiZWxZO1xuICAgICAgICAgIGx5MiA9IGxhYmVsWSArIGxoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gLy8gc2hpZnQgYnkgbWFyZ2luIGFuZCBleHBhbmQgYnkgb3V0bGluZSBhbmQgYm9yZGVyXG5cblxuICAgIGx4MSArPSBtYXJnaW5YIC0gTWF0aC5tYXgob3V0bGluZVdpZHRoLCBoYWxmQm9yZGVyV2lkdGgpIC0gcGFkZGluZyAtIG1hcmdpbk9mRXJyb3I7XG4gICAgbHgyICs9IG1hcmdpblggKyBNYXRoLm1heChvdXRsaW5lV2lkdGgsIGhhbGZCb3JkZXJXaWR0aCkgKyBwYWRkaW5nICsgbWFyZ2luT2ZFcnJvcjtcbiAgICBseTEgKz0gbWFyZ2luWSAtIE1hdGgubWF4KG91dGxpbmVXaWR0aCwgaGFsZkJvcmRlcldpZHRoKSAtIHBhZGRpbmcgLSBtYXJnaW5PZkVycm9yO1xuICAgIGx5MiArPSBtYXJnaW5ZICsgTWF0aC5tYXgob3V0bGluZVdpZHRoLCBoYWxmQm9yZGVyV2lkdGgpICsgcGFkZGluZyArIG1hcmdpbk9mRXJyb3I7IC8vIGFsd2F5cyBzdG9yZSB0aGUgdW5yb3RhdGVkIGxhYmVsIGJvdW5kcyBzZXBhcmF0ZWx5XG5cbiAgICB2YXIgYmJQcmVmaXggPSBwcmVmaXggfHwgJ21haW4nO1xuICAgIHZhciBiYnMgPSBfcC5sYWJlbEJvdW5kcztcbiAgICB2YXIgYmIgPSBiYnNbYmJQcmVmaXhdID0gYmJzW2JiUHJlZml4XSB8fCB7fTtcbiAgICBiYi54MSA9IGx4MTtcbiAgICBiYi55MSA9IGx5MTtcbiAgICBiYi54MiA9IGx4MjtcbiAgICBiYi55MiA9IGx5MjtcbiAgICBiYi53ID0gbHgyIC0gbHgxO1xuICAgIGJiLmggPSBseTIgLSBseTE7XG4gICAgdmFyIGlzQXV0b3JvdGF0ZSA9IGlzRWRnZSAmJiByb3RhdGlvbi5zdHJWYWx1ZSA9PT0gJ2F1dG9yb3RhdGUnO1xuICAgIHZhciBpc1BmVmFsdWUgPSByb3RhdGlvbi5wZlZhbHVlICE9IG51bGwgJiYgcm90YXRpb24ucGZWYWx1ZSAhPT0gMDtcblxuICAgIGlmIChpc0F1dG9yb3RhdGUgfHwgaXNQZlZhbHVlKSB7XG4gICAgICB2YXIgdGhldGEgPSBpc0F1dG9yb3RhdGUgPyBwcmVmaXhlZFByb3BlcnR5KF9wLnJzdHlsZSwgJ2xhYmVsQW5nbGUnLCBwcmVmaXgpIDogcm90YXRpb24ucGZWYWx1ZTtcbiAgICAgIHZhciBjb3MgPSBNYXRoLmNvcyh0aGV0YSk7XG4gICAgICB2YXIgc2luID0gTWF0aC5zaW4odGhldGEpOyAvLyByb3RhdGlvbiBwb2ludCAoZGVmYXVsdCB2YWx1ZSBmb3IgY2VudGVyLWNlbnRlcilcblxuICAgICAgdmFyIHhvID0gKGx4MSArIGx4MikgLyAyO1xuICAgICAgdmFyIHlvID0gKGx5MSArIGx5MikgLyAyO1xuXG4gICAgICBpZiAoIWlzRWRnZSkge1xuICAgICAgICBzd2l0Y2ggKGhhbGlnbi52YWx1ZSkge1xuICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgeG8gPSBseDI7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgIHhvID0gbHgxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHZhbGlnbi52YWx1ZSkge1xuICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICB5byA9IGx5MjtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgIHlvID0gbHkxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHJvdGF0ZSA9IGZ1bmN0aW9uIHJvdGF0ZSh4LCB5KSB7XG4gICAgICAgIHggPSB4IC0geG87XG4gICAgICAgIHkgPSB5IC0geW87XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogeCAqIGNvcyAtIHkgKiBzaW4gKyB4byxcbiAgICAgICAgICB5OiB4ICogc2luICsgeSAqIGNvcyArIHlvXG4gICAgICAgIH07XG4gICAgICB9O1xuXG4gICAgICB2YXIgcHgxeTEgPSByb3RhdGUobHgxLCBseTEpO1xuICAgICAgdmFyIHB4MXkyID0gcm90YXRlKGx4MSwgbHkyKTtcbiAgICAgIHZhciBweDJ5MSA9IHJvdGF0ZShseDIsIGx5MSk7XG4gICAgICB2YXIgcHgyeTIgPSByb3RhdGUobHgyLCBseTIpO1xuICAgICAgbHgxID0gTWF0aC5taW4ocHgxeTEueCwgcHgxeTIueCwgcHgyeTEueCwgcHgyeTIueCk7XG4gICAgICBseDIgPSBNYXRoLm1heChweDF5MS54LCBweDF5Mi54LCBweDJ5MS54LCBweDJ5Mi54KTtcbiAgICAgIGx5MSA9IE1hdGgubWluKHB4MXkxLnksIHB4MXkyLnksIHB4MnkxLnksIHB4MnkyLnkpO1xuICAgICAgbHkyID0gTWF0aC5tYXgocHgxeTEueSwgcHgxeTIueSwgcHgyeTEueSwgcHgyeTIueSk7XG4gICAgfVxuXG4gICAgdmFyIGJiUHJlZml4Um90ID0gYmJQcmVmaXggKyAnUm90JztcbiAgICB2YXIgYmJSb3QgPSBiYnNbYmJQcmVmaXhSb3RdID0gYmJzW2JiUHJlZml4Um90XSB8fCB7fTtcbiAgICBiYlJvdC54MSA9IGx4MTtcbiAgICBiYlJvdC55MSA9IGx5MTtcbiAgICBiYlJvdC54MiA9IGx4MjtcbiAgICBiYlJvdC55MiA9IGx5MjtcbiAgICBiYlJvdC53ID0gbHgyIC0gbHgxO1xuICAgIGJiUm90LmggPSBseTIgLSBseTE7XG4gICAgdXBkYXRlQm91bmRzKGJvdW5kcywgbHgxLCBseTEsIGx4MiwgbHkyKTtcbiAgICB1cGRhdGVCb3VuZHMoX3AubGFiZWxCb3VuZHMuYWxsLCBseDEsIGx5MSwgbHgyLCBseTIpO1xuICB9XG5cbiAgcmV0dXJuIGJvdW5kcztcbn07IC8vIGdldCB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBlbGVtZW50cyAoaW4gcmF3IG1vZGVsIHBvc2l0aW9uKVxuXG5cbnZhciBib3VuZGluZ0JveEltcGwgPSBmdW5jdGlvbiBib3VuZGluZ0JveEltcGwoZWxlLCBvcHRpb25zKSB7XG4gIHZhciBjeSA9IGVsZS5fcHJpdmF0ZS5jeTtcbiAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5LnN0eWxlRW5hYmxlZCgpO1xuICB2YXIgaGVhZGxlc3MgPSBjeS5oZWFkbGVzcygpO1xuICB2YXIgYm91bmRzID0gbWFrZUJvdW5kaW5nQm94KCk7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgdmFyIGlzTm9kZSA9IGVsZS5pc05vZGUoKTtcbiAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcbiAgdmFyIGV4MSwgZXgyLCBleTEsIGV5MjsgLy8gZXh0cmVtYSBvZiBib2R5IC8gbGluZXNcblxuICB2YXIgeCwgeTsgLy8gbm9kZSBwb3NcblxuICB2YXIgcnN0eWxlID0gX3AucnN0eWxlO1xuICB2YXIgbWFudWFsRXhwYW5zaW9uID0gaXNOb2RlICYmIHN0eWxlRW5hYmxlZCA/IGVsZS5wc3R5bGUoJ2JvdW5kcy1leHBhbnNpb24nKS5wZlZhbHVlIDogWzBdOyAvLyBtdXN0IHVzZSBgZGlzcGxheWAgcHJvcCBvbmx5LCBhcyByZWFkaW5nIGBjb21wb3VuZC53aWR0aCgpYCBjYXVzZXMgcmVjdXJzaW9uXG4gIC8vIChvdGhlciBmYWN0b3JzIGxpa2Ugd2lkdGggdmFsdWVzIHdpbGwgYmUgY29uc2lkZXJlZCBsYXRlciBpbiB0aGlzIGZ1bmN0aW9uIGFueXdheSlcblxuICB2YXIgaXNEaXNwbGF5ZWQgPSBmdW5jdGlvbiBpc0Rpc3BsYXllZChlbGUpIHtcbiAgICByZXR1cm4gZWxlLnBzdHlsZSgnZGlzcGxheScpLnZhbHVlICE9PSAnbm9uZSc7XG4gIH07XG5cbiAgdmFyIGRpc3BsYXllZCA9ICFzdHlsZUVuYWJsZWQgfHwgaXNEaXNwbGF5ZWQoZWxlKSAvLyBtdXN0IHRha2UgaW50byBhY2NvdW50IGNvbm5lY3RlZCBub2RlcyBiL2Mgb2YgaW1wbGljaXQgZWRnZSBoaWRpbmcgb24gZGlzcGxheTpub25lIG5vZGVcbiAgJiYgKCFpc0VkZ2UgfHwgaXNEaXNwbGF5ZWQoZWxlLnNvdXJjZSgpKSAmJiBpc0Rpc3BsYXllZChlbGUudGFyZ2V0KCkpKTtcblxuICBpZiAoZGlzcGxheWVkKSB7XG4gICAgLy8gZGlzcGxheWVkIHN1ZmZpY2VzLCBzaW5jZSB3ZSB3aWxsIGZpbmQgemVybyBhcmVhIGVsZXMgYW55d2F5XG4gICAgdmFyIG92ZXJsYXlPcGFjaXR5ID0gMDtcbiAgICB2YXIgb3ZlcmxheVBhZGRpbmcgPSAwO1xuXG4gICAgaWYgKHN0eWxlRW5hYmxlZCAmJiBvcHRpb25zLmluY2x1ZGVPdmVybGF5cykge1xuICAgICAgb3ZlcmxheU9wYWNpdHkgPSBlbGUucHN0eWxlKCdvdmVybGF5LW9wYWNpdHknKS52YWx1ZTtcblxuICAgICAgaWYgKG92ZXJsYXlPcGFjaXR5ICE9PSAwKSB7XG4gICAgICAgIG92ZXJsYXlQYWRkaW5nID0gZWxlLnBzdHlsZSgnb3ZlcmxheS1wYWRkaW5nJykudmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHcgPSAwO1xuICAgIHZhciB3SGFsZiA9IDA7XG5cbiAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICB3ID0gZWxlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuICAgICAgd0hhbGYgPSB3IC8gMjtcbiAgICB9XG5cbiAgICBpZiAoaXNOb2RlICYmIG9wdGlvbnMuaW5jbHVkZU5vZGVzKSB7XG4gICAgICB2YXIgcG9zID0gZWxlLnBvc2l0aW9uKCk7XG4gICAgICB4ID0gcG9zLng7XG4gICAgICB5ID0gcG9zLnk7XG5cbiAgICAgIHZhciBfdyA9IGVsZS5vdXRlcldpZHRoKCk7XG5cbiAgICAgIHZhciBoYWxmVyA9IF93IC8gMjtcbiAgICAgIHZhciBoID0gZWxlLm91dGVySGVpZ2h0KCk7XG4gICAgICB2YXIgaGFsZkggPSBoIC8gMjsgLy8gaGFuZGxlIG5vZGUgZGltZW5zaW9uc1xuICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICBleDEgPSB4IC0gaGFsZlc7XG4gICAgICBleDIgPSB4ICsgaGFsZlc7XG4gICAgICBleTEgPSB5IC0gaGFsZkg7XG4gICAgICBleTIgPSB5ICsgaGFsZkg7XG4gICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEsIGV5MSwgZXgyLCBleTIpO1xuICAgIH0gZWxzZSBpZiAoaXNFZGdlICYmIG9wdGlvbnMuaW5jbHVkZUVkZ2VzKSB7XG4gICAgICBpZiAoc3R5bGVFbmFibGVkICYmICFoZWFkbGVzcykge1xuICAgICAgICB2YXIgY3VydmVTdHlsZSA9IGVsZS5wc3R5bGUoJ2N1cnZlLXN0eWxlJykuc3RyVmFsdWU7IC8vIGhhbmRsZSBlZGdlIGRpbWVuc2lvbnMgKHJvdWdoIGJveCBlc3RpbWF0ZSlcbiAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIGV4MSA9IE1hdGgubWluKHJzdHlsZS5zcmNYLCByc3R5bGUubWlkWCwgcnN0eWxlLnRndFgpO1xuICAgICAgICBleDIgPSBNYXRoLm1heChyc3R5bGUuc3JjWCwgcnN0eWxlLm1pZFgsIHJzdHlsZS50Z3RYKTtcbiAgICAgICAgZXkxID0gTWF0aC5taW4ocnN0eWxlLnNyY1ksIHJzdHlsZS5taWRZLCByc3R5bGUudGd0WSk7XG4gICAgICAgIGV5MiA9IE1hdGgubWF4KHJzdHlsZS5zcmNZLCByc3R5bGUubWlkWSwgcnN0eWxlLnRndFkpOyAvLyB0YWtlIGludG8gYWNjb3VudCBlZGdlIHdpZHRoXG5cbiAgICAgICAgZXgxIC09IHdIYWxmO1xuICAgICAgICBleDIgKz0gd0hhbGY7XG4gICAgICAgIGV5MSAtPSB3SGFsZjtcbiAgICAgICAgZXkyICs9IHdIYWxmO1xuICAgICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEsIGV5MSwgZXgyLCBleTIpOyAvLyBwcmVjaXNlIGVkZ2VzXG4gICAgICAgIC8vLy8vLy8vLy8vLy8vLy9cblxuICAgICAgICBpZiAoY3VydmVTdHlsZSA9PT0gJ2hheXN0YWNrJykge1xuICAgICAgICAgIHZhciBocHRzID0gcnN0eWxlLmhheXN0YWNrUHRzO1xuXG4gICAgICAgICAgaWYgKGhwdHMgJiYgaHB0cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIGV4MSA9IGhwdHNbMF0ueDtcbiAgICAgICAgICAgIGV5MSA9IGhwdHNbMF0ueTtcbiAgICAgICAgICAgIGV4MiA9IGhwdHNbMV0ueDtcbiAgICAgICAgICAgIGV5MiA9IGhwdHNbMV0ueTtcblxuICAgICAgICAgICAgaWYgKGV4MSA+IGV4Mikge1xuICAgICAgICAgICAgICB2YXIgdGVtcCA9IGV4MTtcbiAgICAgICAgICAgICAgZXgxID0gZXgyO1xuICAgICAgICAgICAgICBleDIgPSB0ZW1wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXkxID4gZXkyKSB7XG4gICAgICAgICAgICAgIHZhciBfdGVtcCA9IGV5MTtcbiAgICAgICAgICAgICAgZXkxID0gZXkyO1xuICAgICAgICAgICAgICBleTIgPSBfdGVtcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXBkYXRlQm91bmRzKGJvdW5kcywgZXgxIC0gd0hhbGYsIGV5MSAtIHdIYWxmLCBleDIgKyB3SGFsZiwgZXkyICsgd0hhbGYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjdXJ2ZVN0eWxlID09PSAnYmV6aWVyJyB8fCBjdXJ2ZVN0eWxlID09PSAndW5idW5kbGVkLWJlemllcicgfHwgY3VydmVTdHlsZSA9PT0gJ3NlZ21lbnRzJyB8fCBjdXJ2ZVN0eWxlID09PSAndGF4aScpIHtcbiAgICAgICAgICB2YXIgcHRzO1xuXG4gICAgICAgICAgc3dpdGNoIChjdXJ2ZVN0eWxlKSB7XG4gICAgICAgICAgICBjYXNlICdiZXppZXInOlxuICAgICAgICAgICAgY2FzZSAndW5idW5kbGVkLWJlemllcic6XG4gICAgICAgICAgICAgIHB0cyA9IHJzdHlsZS5iZXppZXJQdHM7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdzZWdtZW50cyc6XG4gICAgICAgICAgICBjYXNlICd0YXhpJzpcbiAgICAgICAgICAgICAgcHRzID0gcnN0eWxlLmxpbmVQdHM7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwdHMgIT0gbnVsbCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwdHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgdmFyIHB0ID0gcHRzW2pdO1xuICAgICAgICAgICAgICBleDEgPSBwdC54IC0gd0hhbGY7XG4gICAgICAgICAgICAgIGV4MiA9IHB0LnggKyB3SGFsZjtcbiAgICAgICAgICAgICAgZXkxID0gcHQueSAtIHdIYWxmO1xuICAgICAgICAgICAgICBleTIgPSBwdC55ICsgd0hhbGY7XG4gICAgICAgICAgICAgIHVwZGF0ZUJvdW5kcyhib3VuZHMsIGV4MSwgZXkxLCBleDIsIGV5Mik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIGJlemllci1saWtlIG9yIHNlZ21lbnQtbGlrZSBlZGdlXG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGhlYWRsZXNzIG9yIHN0eWxlIGRpc2FibGVkXG4gICAgICAgIC8vIGZhbGxiYWNrIG9uIHNvdXJjZSBhbmQgdGFyZ2V0IHBvc2l0aW9uc1xuICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgICAgdmFyIG4xID0gZWxlLnNvdXJjZSgpO1xuICAgICAgICB2YXIgbjFwb3MgPSBuMS5wb3NpdGlvbigpO1xuICAgICAgICB2YXIgbjIgPSBlbGUudGFyZ2V0KCk7XG4gICAgICAgIHZhciBuMnBvcyA9IG4yLnBvc2l0aW9uKCk7XG4gICAgICAgIGV4MSA9IG4xcG9zLng7XG4gICAgICAgIGV4MiA9IG4ycG9zLng7XG4gICAgICAgIGV5MSA9IG4xcG9zLnk7XG4gICAgICAgIGV5MiA9IG4ycG9zLnk7XG5cbiAgICAgICAgaWYgKGV4MSA+IGV4Mikge1xuICAgICAgICAgIHZhciBfdGVtcDIgPSBleDE7XG4gICAgICAgICAgZXgxID0gZXgyO1xuICAgICAgICAgIGV4MiA9IF90ZW1wMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleTEgPiBleTIpIHtcbiAgICAgICAgICB2YXIgX3RlbXAzID0gZXkxO1xuICAgICAgICAgIGV5MSA9IGV5MjtcbiAgICAgICAgICBleTIgPSBfdGVtcDM7XG4gICAgICAgIH0gLy8gdGFrZSBpbnRvIGFjY291bnQgZWRnZSB3aWR0aFxuXG5cbiAgICAgICAgZXgxIC09IHdIYWxmO1xuICAgICAgICBleDIgKz0gd0hhbGY7XG4gICAgICAgIGV5MSAtPSB3SGFsZjtcbiAgICAgICAgZXkyICs9IHdIYWxmO1xuICAgICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEsIGV5MSwgZXgyLCBleTIpO1xuICAgICAgfSAvLyBoZWFkbGVzcyBvciBzdHlsZSBkaXNhYmxlZFxuXG4gICAgfSAvLyBlZGdlc1xuICAgIC8vIGhhbmRsZSBlZGdlIGFycm93IHNpemVcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cblxuICAgIGlmIChzdHlsZUVuYWJsZWQgJiYgb3B0aW9ucy5pbmNsdWRlRWRnZXMgJiYgaXNFZGdlKSB7XG4gICAgICB1cGRhdGVCb3VuZHNGcm9tQXJyb3coYm91bmRzLCBlbGUsICdtaWQtc291cmNlJyk7XG4gICAgICB1cGRhdGVCb3VuZHNGcm9tQXJyb3coYm91bmRzLCBlbGUsICdtaWQtdGFyZ2V0Jyk7XG4gICAgICB1cGRhdGVCb3VuZHNGcm9tQXJyb3coYm91bmRzLCBlbGUsICdzb3VyY2UnKTtcbiAgICAgIHVwZGF0ZUJvdW5kc0Zyb21BcnJvdyhib3VuZHMsIGVsZSwgJ3RhcmdldCcpO1xuICAgIH0gLy8gZ2hvc3RcbiAgICAvLy8vLy8vL1xuXG5cbiAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICB2YXIgZ2hvc3QgPSBlbGUucHN0eWxlKCdnaG9zdCcpLnZhbHVlID09PSAneWVzJztcblxuICAgICAgaWYgKGdob3N0KSB7XG4gICAgICAgIHZhciBneCA9IGVsZS5wc3R5bGUoJ2dob3N0LW9mZnNldC14JykucGZWYWx1ZTtcbiAgICAgICAgdmFyIGd5ID0gZWxlLnBzdHlsZSgnZ2hvc3Qtb2Zmc2V0LXknKS5wZlZhbHVlO1xuICAgICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBib3VuZHMueDEgKyBneCwgYm91bmRzLnkxICsgZ3ksIGJvdW5kcy54MiArIGd4LCBib3VuZHMueTIgKyBneSk7XG4gICAgICB9XG4gICAgfSAvLyBhbHdheXMgc3RvcmUgdGhlIGJvZHkgYm91bmRzIHNlcGFyYXRlbHkgZnJvbSB0aGUgbGFiZWxzXG5cblxuICAgIHZhciBiYkJvZHkgPSBfcC5ib2R5Qm91bmRzID0gX3AuYm9keUJvdW5kcyB8fCB7fTtcbiAgICBhc3NpZ25Cb3VuZGluZ0JveChiYkJvZHksIGJvdW5kcyk7XG4gICAgZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhiYkJvZHksIG1hbnVhbEV4cGFuc2lvbik7XG4gICAgZXhwYW5kQm91bmRpbmdCb3goYmJCb2R5LCAxKTsgLy8gZXhwYW5kIHRvIHdvcmsgYXJvdW5kIGJyb3dzZXIgZGltZW5zaW9uIGluYWNjdXJhY2llc1xuICAgIC8vIG92ZXJsYXlcbiAgICAvLy8vLy8vLy8vXG5cbiAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICBleDEgPSBib3VuZHMueDE7XG4gICAgICBleDIgPSBib3VuZHMueDI7XG4gICAgICBleTEgPSBib3VuZHMueTE7XG4gICAgICBleTIgPSBib3VuZHMueTI7XG4gICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEgLSBvdmVybGF5UGFkZGluZywgZXkxIC0gb3ZlcmxheVBhZGRpbmcsIGV4MiArIG92ZXJsYXlQYWRkaW5nLCBleTIgKyBvdmVybGF5UGFkZGluZyk7XG4gICAgfSAvLyBhbHdheXMgc3RvcmUgdGhlIGJvZHkgYm91bmRzIHNlcGFyYXRlbHkgZnJvbSB0aGUgbGFiZWxzXG5cblxuICAgIHZhciBiYk92ZXJsYXkgPSBfcC5vdmVybGF5Qm91bmRzID0gX3Aub3ZlcmxheUJvdW5kcyB8fCB7fTtcbiAgICBhc3NpZ25Cb3VuZGluZ0JveChiYk92ZXJsYXksIGJvdW5kcyk7XG4gICAgZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhiYk92ZXJsYXksIG1hbnVhbEV4cGFuc2lvbik7XG4gICAgZXhwYW5kQm91bmRpbmdCb3goYmJPdmVybGF5LCAxKTsgLy8gZXhwYW5kIHRvIHdvcmsgYXJvdW5kIGJyb3dzZXIgZGltZW5zaW9uIGluYWNjdXJhY2llc1xuICAgIC8vIGhhbmRsZSBsYWJlbCBkaW1lbnNpb25zXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIHZhciBiYkxhYmVscyA9IF9wLmxhYmVsQm91bmRzID0gX3AubGFiZWxCb3VuZHMgfHwge307XG5cbiAgICBpZiAoYmJMYWJlbHMuYWxsICE9IG51bGwpIHtcbiAgICAgIGNsZWFyQm91bmRpbmdCb3goYmJMYWJlbHMuYWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmJMYWJlbHMuYWxsID0gbWFrZUJvdW5kaW5nQm94KCk7XG4gICAgfVxuXG4gICAgaWYgKHN0eWxlRW5hYmxlZCAmJiBvcHRpb25zLmluY2x1ZGVMYWJlbHMpIHtcbiAgICAgIGlmIChvcHRpb25zLmluY2x1ZGVNYWluTGFiZWxzKSB7XG4gICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21MYWJlbChib3VuZHMsIGVsZSwgbnVsbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0VkZ2UpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuaW5jbHVkZVNvdXJjZUxhYmVscykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21MYWJlbChib3VuZHMsIGVsZSwgJ3NvdXJjZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuaW5jbHVkZVRhcmdldExhYmVscykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21MYWJlbChib3VuZHMsIGVsZSwgJ3RhcmdldCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBzdHlsZSBlbmFibGVkIGZvciBsYWJlbHNcblxuICB9IC8vIGlmIGRpc3BsYXllZFxuXG5cbiAgYm91bmRzLngxID0gbm9uaW5mKGJvdW5kcy54MSk7XG4gIGJvdW5kcy55MSA9IG5vbmluZihib3VuZHMueTEpO1xuICBib3VuZHMueDIgPSBub25pbmYoYm91bmRzLngyKTtcbiAgYm91bmRzLnkyID0gbm9uaW5mKGJvdW5kcy55Mik7XG4gIGJvdW5kcy53ID0gbm9uaW5mKGJvdW5kcy54MiAtIGJvdW5kcy54MSk7XG4gIGJvdW5kcy5oID0gbm9uaW5mKGJvdW5kcy55MiAtIGJvdW5kcy55MSk7XG5cbiAgaWYgKGJvdW5kcy53ID4gMCAmJiBib3VuZHMuaCA+IDAgJiYgZGlzcGxheWVkKSB7XG4gICAgZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhib3VuZHMsIG1hbnVhbEV4cGFuc2lvbik7IC8vIGV4cGFuZCBib3VuZHMgYnkgMSBiZWNhdXNlIGFudGlhbGlhc2luZyBjYW4gaW5jcmVhc2UgdGhlIHZpc3VhbC9lZmZlY3RpdmUgc2l6ZSBieSAxIG9uIGFsbCBzaWRlc1xuXG4gICAgZXhwYW5kQm91bmRpbmdCb3goYm91bmRzLCAxKTtcbiAgfVxuXG4gIHJldHVybiBib3VuZHM7XG59O1xuXG52YXIgZ2V0S2V5ID0gZnVuY3Rpb24gZ2V0S2V5KG9wdHMpIHtcbiAgdmFyIGkgPSAwO1xuXG4gIHZhciB0ZiA9IGZ1bmN0aW9uIHRmKHZhbCkge1xuICAgIHJldHVybiAodmFsID8gMSA6IDApIDw8IGkrKztcbiAgfTtcblxuICB2YXIga2V5ID0gMDtcbiAga2V5ICs9IHRmKG9wdHMuaW5jdWRlTm9kZXMpO1xuICBrZXkgKz0gdGYob3B0cy5pbmNsdWRlRWRnZXMpO1xuICBrZXkgKz0gdGYob3B0cy5pbmNsdWRlTGFiZWxzKTtcbiAga2V5ICs9IHRmKG9wdHMuaW5jbHVkZU1haW5MYWJlbHMpO1xuICBrZXkgKz0gdGYob3B0cy5pbmNsdWRlU291cmNlTGFiZWxzKTtcbiAga2V5ICs9IHRmKG9wdHMuaW5jbHVkZVRhcmdldExhYmVscyk7XG4gIGtleSArPSB0ZihvcHRzLmluY2x1ZGVPdmVybGF5cyk7XG4gIHJldHVybiBrZXk7XG59O1xuXG52YXIgZ2V0Qm91bmRpbmdCb3hQb3NLZXkgPSBmdW5jdGlvbiBnZXRCb3VuZGluZ0JveFBvc0tleShlbGUpIHtcbiAgaWYgKGVsZS5pc0VkZ2UoKSkge1xuICAgIHZhciBwMSA9IGVsZS5zb3VyY2UoKS5wb3NpdGlvbigpO1xuICAgIHZhciBwMiA9IGVsZS50YXJnZXQoKS5wb3NpdGlvbigpO1xuXG4gICAgdmFyIHIgPSBmdW5jdGlvbiByKHgpIHtcbiAgICAgIHJldHVybiBNYXRoLnJvdW5kKHgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gaGFzaEludHNBcnJheShbcihwMS54KSwgcihwMS55KSwgcihwMi54KSwgcihwMi55KV0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59O1xuXG52YXIgY2FjaGVkQm91bmRpbmdCb3hJbXBsID0gZnVuY3Rpb24gY2FjaGVkQm91bmRpbmdCb3hJbXBsKGVsZSwgb3B0cykge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBiYjtcbiAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcbiAgdmFyIGtleSA9IG9wdHMgPT0gbnVsbCA/IGRlZkJiT3B0c0tleSA6IGdldEtleShvcHRzKTtcbiAgdmFyIHVzaW5nRGVmT3B0cyA9IGtleSA9PT0gZGVmQmJPcHRzS2V5O1xuICB2YXIgY3VyclBvc0tleSA9IGdldEJvdW5kaW5nQm94UG9zS2V5KGVsZSk7XG4gIHZhciBpc1Bvc0tleVNhbWUgPSBfcC5iYkNhY2hlUG9zS2V5ID09PSBjdXJyUG9zS2V5O1xuICB2YXIgdXNlQ2FjaGUgPSBvcHRzLnVzZUNhY2hlICYmIGlzUG9zS2V5U2FtZTtcblxuICB2YXIgaXNEaXJ0eSA9IGZ1bmN0aW9uIGlzRGlydHkoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5fcHJpdmF0ZS5iYkNhY2hlID09IG51bGwgfHwgZWxlLl9wcml2YXRlLnN0eWxlRGlydHk7XG4gIH07XG5cbiAgdmFyIG5lZWRSZWNhbGMgPSAhdXNlQ2FjaGUgfHwgaXNEaXJ0eShlbGUpIHx8IGlzRWRnZSAmJiBpc0RpcnR5KGVsZS5zb3VyY2UoKSkgfHwgaXNEaXJ0eShlbGUudGFyZ2V0KCkpO1xuXG4gIGlmIChuZWVkUmVjYWxjKSB7XG4gICAgaWYgKCFpc1Bvc0tleVNhbWUpIHtcbiAgICAgIGVsZS5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUodXNlQ2FjaGUpO1xuICAgIH1cblxuICAgIGJiID0gYm91bmRpbmdCb3hJbXBsKGVsZSwgZGVmQmJPcHRzKTtcbiAgICBfcC5iYkNhY2hlID0gYmI7XG4gICAgX3AuYmJDYWNoZVBvc0tleSA9IGN1cnJQb3NLZXk7XG4gIH0gZWxzZSB7XG4gICAgYmIgPSBfcC5iYkNhY2hlO1xuICB9IC8vIG5vdCB1c2luZyBkZWYgb3B0cyA9PiBuZWVkIHRvIGJ1aWxkIHVwIGJiIGZyb20gY29tYmluYXRpb24gb2Ygc3ViIGJic1xuXG5cbiAgaWYgKCF1c2luZ0RlZk9wdHMpIHtcbiAgICB2YXIgaXNOb2RlID0gZWxlLmlzTm9kZSgpO1xuICAgIGJiID0gbWFrZUJvdW5kaW5nQm94KCk7XG5cbiAgICBpZiAob3B0cy5pbmNsdWRlTm9kZXMgJiYgaXNOb2RlIHx8IG9wdHMuaW5jbHVkZUVkZ2VzICYmICFpc05vZGUpIHtcbiAgICAgIGlmIChvcHRzLmluY2x1ZGVPdmVybGF5cykge1xuICAgICAgICB1cGRhdGVCb3VuZHNGcm9tQm94KGJiLCBfcC5vdmVybGF5Qm91bmRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmJvZHlCb3VuZHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRzLmluY2x1ZGVMYWJlbHMpIHtcbiAgICAgIGlmIChvcHRzLmluY2x1ZGVNYWluTGFiZWxzICYmICghaXNFZGdlIHx8IG9wdHMuaW5jbHVkZVNvdXJjZUxhYmVscyAmJiBvcHRzLmluY2x1ZGVUYXJnZXRMYWJlbHMpKSB7XG4gICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmxhYmVsQm91bmRzLmFsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob3B0cy5pbmNsdWRlTWFpbkxhYmVscykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmxhYmVsQm91bmRzLm1haW5Sb3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdHMuaW5jbHVkZVNvdXJjZUxhYmVscykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmxhYmVsQm91bmRzLnNvdXJjZVJvdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cy5pbmNsdWRlVGFyZ2V0TGFiZWxzKSB7XG4gICAgICAgICAgdXBkYXRlQm91bmRzRnJvbUJveChiYiwgX3AubGFiZWxCb3VuZHMudGFyZ2V0Um90KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICB9XG5cbiAgcmV0dXJuIGJiO1xufTtcblxudmFyIGRlZkJiT3B0cyA9IHtcbiAgaW5jbHVkZU5vZGVzOiB0cnVlLFxuICBpbmNsdWRlRWRnZXM6IHRydWUsXG4gIGluY2x1ZGVMYWJlbHM6IHRydWUsXG4gIGluY2x1ZGVNYWluTGFiZWxzOiB0cnVlLFxuICBpbmNsdWRlU291cmNlTGFiZWxzOiB0cnVlLFxuICBpbmNsdWRlVGFyZ2V0TGFiZWxzOiB0cnVlLFxuICBpbmNsdWRlT3ZlcmxheXM6IHRydWUsXG4gIHVzZUNhY2hlOiB0cnVlXG59O1xudmFyIGRlZkJiT3B0c0tleSA9IGdldEtleShkZWZCYk9wdHMpO1xudmFyIGZpbGxlZEJiT3B0cyA9IGRlZmF1bHRzKGRlZkJiT3B0cyk7XG5cbmVsZXNmbiRrLmJvdW5kaW5nQm94ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIGJvdW5kczsgLy8gdGhlIG1haW4gdXNlY2FzZSBpcyBlbGUuYm91bmRpbmdCb3goKSBmb3IgYSBzaW5nbGUgZWxlbWVudCB3aXRoIG5vL2RlZiBvcHRpb25zXG4gIC8vIHNwZWNpZmllZCBzLnQuIHRoZSBjYWNoZSBpcyB1c2VkLCBzbyBjaGVjayBmb3IgdGhpcyBjYXNlIHRvIG1ha2UgaXQgZmFzdGVyIGJ5XG4gIC8vIGF2b2lkaW5nIHRoZSBvdmVyaGVhZCBvZiB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb25cblxuICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpc1swXS5fcHJpdmF0ZS5iYkNhY2hlICE9IG51bGwgJiYgIXRoaXNbMF0uX3ByaXZhdGUuc3R5bGVEaXJ0eSAmJiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMudXNlQ2FjaGUgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zLnVzZUNhY2hlID09PSB0cnVlKSkge1xuICAgIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZCYk9wdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMgPSBmaWxsZWRCYk9wdHMob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgYm91bmRzID0gY2FjaGVkQm91bmRpbmdCb3hJbXBsKHRoaXNbMF0sIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIGJvdW5kcyA9IG1ha2VCb3VuZGluZ0JveCgpO1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IGRlZkJiT3B0cztcbiAgICB2YXIgb3B0cyA9IGZpbGxlZEJiT3B0cyhvcHRpb25zKTtcbiAgICB2YXIgZWxlcyA9IHRoaXM7XG4gICAgdmFyIGN5ID0gZWxlcy5jeSgpO1xuICAgIHZhciBzdHlsZUVuYWJsZWQgPSBjeS5zdHlsZUVuYWJsZWQoKTtcblxuICAgIGlmIChzdHlsZUVuYWJsZWQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgICB2YXIgY3VyclBvc0tleSA9IGdldEJvdW5kaW5nQm94UG9zS2V5KGVsZSk7XG4gICAgICAgIHZhciBpc1Bvc0tleVNhbWUgPSBfcC5iYkNhY2hlUG9zS2V5ID09PSBjdXJyUG9zS2V5O1xuICAgICAgICB2YXIgdXNlQ2FjaGUgPSBvcHRzLnVzZUNhY2hlICYmIGlzUG9zS2V5U2FtZSAmJiAhX3Auc3R5bGVEaXJ0eTtcbiAgICAgICAgZWxlLnJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZSh1c2VDYWNoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDb21wb3VuZEJvdW5kcyghb3B0aW9ucy51c2VDYWNoZSk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgZWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfZWxlID0gZWxlc1tfaV07XG4gICAgICB1cGRhdGVCb3VuZHNGcm9tQm94KGJvdW5kcywgY2FjaGVkQm91bmRpbmdCb3hJbXBsKF9lbGUsIG9wdHMpKTtcbiAgICB9XG4gIH1cblxuICBib3VuZHMueDEgPSBub25pbmYoYm91bmRzLngxKTtcbiAgYm91bmRzLnkxID0gbm9uaW5mKGJvdW5kcy55MSk7XG4gIGJvdW5kcy54MiA9IG5vbmluZihib3VuZHMueDIpO1xuICBib3VuZHMueTIgPSBub25pbmYoYm91bmRzLnkyKTtcbiAgYm91bmRzLncgPSBub25pbmYoYm91bmRzLngyIC0gYm91bmRzLngxKTtcbiAgYm91bmRzLmggPSBub25pbmYoYm91bmRzLnkyIC0gYm91bmRzLnkxKTtcbiAgcmV0dXJuIGJvdW5kcztcbn07XG5cbmVsZXNmbiRrLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIF9wID0gdGhpc1tpXS5fcHJpdmF0ZTtcbiAgICBfcC5iYkNhY2hlID0gbnVsbDtcbiAgICBfcC5iYkNhY2hlUG9zS2V5ID0gbnVsbDtcbiAgICBfcC5ib2R5Qm91bmRzID0gbnVsbDtcbiAgICBfcC5vdmVybGF5Qm91bmRzID0gbnVsbDtcbiAgICBfcC5sYWJlbEJvdW5kcy5hbGwgPSBudWxsO1xuICAgIF9wLmxhYmVsQm91bmRzLnNvdXJjZSA9IG51bGw7XG4gICAgX3AubGFiZWxCb3VuZHMudGFyZ2V0ID0gbnVsbDtcbiAgICBfcC5sYWJlbEJvdW5kcy5tYWluID0gbnVsbDtcbiAgICBfcC5sYWJlbEJvdW5kcy5zb3VyY2VSb3QgPSBudWxsO1xuICAgIF9wLmxhYmVsQm91bmRzLnRhcmdldFJvdCA9IG51bGw7XG4gICAgX3AubGFiZWxCb3VuZHMubWFpblJvdCA9IG51bGw7XG4gICAgX3AuYXJyb3dCb3VuZHMuc291cmNlID0gbnVsbDtcbiAgICBfcC5hcnJvd0JvdW5kcy50YXJnZXQgPSBudWxsO1xuICAgIF9wLmFycm93Qm91bmRzWydtaWQtc291cmNlJ10gPSBudWxsO1xuICAgIF9wLmFycm93Qm91bmRzWydtaWQtdGFyZ2V0J10gPSBudWxsO1xuICB9XG5cbiAgdGhpcy5lbWl0QW5kTm90aWZ5KCdib3VuZHMnKTtcbiAgcmV0dXJuIHRoaXM7XG59OyAvLyBwcml2YXRlIGhlbHBlciB0byBnZXQgYm91bmRpbmcgYm94IGZvciBjdXN0b20gbm9kZSBwb3NpdGlvbnNcbi8vIC0gZ29vZCBmb3IgcGVyZiBpbiBjZXJ0YWluIGNhc2VzIGJ1dCBjdXJyZW50bHkgcmVxdWlyZXMgZGlydHlpbmcgdGhlIHJlbmRlcmVkIHN0eWxlXG4vLyAtIHdvdWxkIGJlIGJldHRlciB0byBub3QgbW9kaWZ5IHRoZSBub2RlcyBidXQgdGhlIG5vZGVzIGFyZSByZWFkIGRpcmVjdGx5IGV2ZXJ5d2hlcmUgaW4gdGhlIHJlbmRlcmVyLi4uXG4vLyAtIHRyeSB0byB1c2UgZm9yIG9ubHkgdGhpbmdzIGxpa2UgZGlzY3JldGUgbGF5b3V0cyB3aGVyZSB0aGUgbm9kZSBwb3NpdGlvbiB3b3VsZCBjaGFuZ2UgYW55d2F5XG5cblxuZWxlc2ZuJGsuYm91bmRpbmdCb3hBdCA9IGZ1bmN0aW9uIChmbikge1xuICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgdmFyIGhhc0NvbXBvdW5kTm9kZXMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gIHZhciBwYXJlbnRzID0gY3kuY29sbGVjdGlvbigpO1xuXG4gIGlmIChoYXNDb21wb3VuZE5vZGVzKSB7XG4gICAgcGFyZW50cyA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaXNQYXJlbnQoKTtcbiAgICB9KTtcbiAgICBub2RlcyA9IG5vZGVzLm5vdChwYXJlbnRzKTtcbiAgfVxuXG4gIGlmIChwbGFpbk9iamVjdChmbikpIHtcbiAgICB2YXIgb2JqID0gZm47XG5cbiAgICBmbiA9IGZ1bmN0aW9uIGZuKCkge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9O1xuICB9XG5cbiAgdmFyIHN0b3JlT2xkUG9zID0gZnVuY3Rpb24gc3RvcmVPbGRQb3Mobm9kZSwgaSkge1xuICAgIHJldHVybiBub2RlLl9wcml2YXRlLmJiQXRPbGRQb3MgPSBmbihub2RlLCBpKTtcbiAgfTtcblxuICB2YXIgZ2V0T2xkUG9zID0gZnVuY3Rpb24gZ2V0T2xkUG9zKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5fcHJpdmF0ZS5iYkF0T2xkUG9zO1xuICB9O1xuXG4gIGN5LnN0YXJ0QmF0Y2goKTtcbiAgbm9kZXMuZm9yRWFjaChzdG9yZU9sZFBvcykuc2lsZW50UG9zaXRpb25zKGZuKTtcblxuICBpZiAoaGFzQ29tcG91bmROb2Rlcykge1xuICAgIHBhcmVudHMuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlKCk7XG4gICAgcGFyZW50cy5kaXJ0eUJvdW5kaW5nQm94Q2FjaGUoKTtcbiAgICBwYXJlbnRzLnVwZGF0ZUNvbXBvdW5kQm91bmRzKHRydWUpOyAvLyBmb3JjZSB1cGRhdGUgYi9jIHdlJ3JlIGluc2lkZSBhIGJhdGNoIGN5Y2xlXG4gIH1cblxuICB2YXIgYmIgPSBjb3B5Qm91bmRpbmdCb3godGhpcy5ib3VuZGluZ0JveCh7XG4gICAgdXNlQ2FjaGU6IGZhbHNlXG4gIH0pKTtcbiAgbm9kZXMuc2lsZW50UG9zaXRpb25zKGdldE9sZFBvcyk7XG5cbiAgaWYgKGhhc0NvbXBvdW5kTm9kZXMpIHtcbiAgICBwYXJlbnRzLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSgpO1xuICAgIHBhcmVudHMuZGlydHlCb3VuZGluZ0JveENhY2hlKCk7XG4gICAgcGFyZW50cy51cGRhdGVDb21wb3VuZEJvdW5kcyh0cnVlKTsgLy8gZm9yY2UgdXBkYXRlIGIvYyB3ZSdyZSBpbnNpZGUgYSBiYXRjaCBjeWNsZVxuICB9XG5cbiAgY3kuZW5kQmF0Y2goKTtcbiAgcmV0dXJuIGJiO1xufTtcblxuZm4kMy5ib3VuZGluZ2JveCA9IGZuJDMuYmIgPSBmbiQzLmJvdW5kaW5nQm94O1xuZm4kMy5yZW5kZXJlZEJvdW5kaW5nYm94ID0gZm4kMy5yZW5kZXJlZEJvdW5kaW5nQm94O1xudmFyIGJvdW5kcyA9IGVsZXNmbiRrO1xuXG52YXIgZm4kNCwgZWxlc2ZuJGw7XG5mbiQ0ID0gZWxlc2ZuJGwgPSB7fTtcblxudmFyIGRlZmluZURpbUZucyA9IGZ1bmN0aW9uIGRlZmluZURpbUZucyhvcHRzKSB7XG4gIG9wdHMudXBwZXJjYXNlTmFtZSA9IGNhcGl0YWxpemUob3B0cy5uYW1lKTtcbiAgb3B0cy5hdXRvTmFtZSA9ICdhdXRvJyArIG9wdHMudXBwZXJjYXNlTmFtZTtcbiAgb3B0cy5sYWJlbE5hbWUgPSAnbGFiZWwnICsgb3B0cy51cHBlcmNhc2VOYW1lO1xuICBvcHRzLm91dGVyTmFtZSA9ICdvdXRlcicgKyBvcHRzLnVwcGVyY2FzZU5hbWU7XG4gIG9wdHMudXBwZXJjYXNlT3V0ZXJOYW1lID0gY2FwaXRhbGl6ZShvcHRzLm91dGVyTmFtZSk7XG5cbiAgZm4kNFtvcHRzLm5hbWVdID0gZnVuY3Rpb24gZGltSW1wbCgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgdmFyIGN5ID0gX3AuY3k7XG4gICAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5Ll9wcml2YXRlLnN0eWxlRW5hYmxlZDtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIGlmIChzdHlsZUVuYWJsZWQpIHtcbiAgICAgICAgaWYgKGVsZS5pc1BhcmVudCgpKSB7XG4gICAgICAgICAgZWxlLnVwZGF0ZUNvbXBvdW5kQm91bmRzKCk7XG4gICAgICAgICAgcmV0dXJuIF9wW29wdHMuYXV0b05hbWVdIHx8IDA7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZCA9IGVsZS5wc3R5bGUob3B0cy5uYW1lKTtcblxuICAgICAgICBzd2l0Y2ggKGQuc3RyVmFsdWUpIHtcbiAgICAgICAgICBjYXNlICdsYWJlbCc6XG4gICAgICAgICAgICBlbGUucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKCk7XG4gICAgICAgICAgICByZXR1cm4gX3AucnN0eWxlW29wdHMubGFiZWxOYW1lXSB8fCAwO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBkLnBmVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBmbiQ0WydvdXRlcicgKyBvcHRzLnVwcGVyY2FzZU5hbWVdID0gZnVuY3Rpb24gb3V0ZXJEaW1JbXBsKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICB2YXIgY3kgPSBfcC5jeTtcbiAgICB2YXIgc3R5bGVFbmFibGVkID0gY3kuX3ByaXZhdGUuc3R5bGVFbmFibGVkO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgaWYgKHN0eWxlRW5hYmxlZCkge1xuICAgICAgICB2YXIgZGltID0gZWxlW29wdHMubmFtZV0oKTtcbiAgICAgICAgdmFyIGJvcmRlciA9IGVsZS5wc3R5bGUoJ2JvcmRlci13aWR0aCcpLnBmVmFsdWU7IC8vIG4uYi4gMS8yIGVhY2ggc2lkZVxuXG4gICAgICAgIHZhciBwYWRkaW5nID0gMiAqIGVsZS5wYWRkaW5nKCk7XG4gICAgICAgIHJldHVybiBkaW0gKyBib3JkZXIgKyBwYWRkaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGZuJDRbJ3JlbmRlcmVkJyArIG9wdHMudXBwZXJjYXNlTmFtZV0gPSBmdW5jdGlvbiByZW5kZXJlZERpbUltcGwoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICB2YXIgZCA9IGVsZVtvcHRzLm5hbWVdKCk7XG4gICAgICByZXR1cm4gZCAqIHRoaXMuY3koKS56b29tKCk7XG4gICAgfVxuICB9O1xuXG4gIGZuJDRbJ3JlbmRlcmVkJyArIG9wdHMudXBwZXJjYXNlT3V0ZXJOYW1lXSA9IGZ1bmN0aW9uIHJlbmRlcmVkT3V0ZXJEaW1JbXBsKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdmFyIG9kID0gZWxlW29wdHMub3V0ZXJOYW1lXSgpO1xuICAgICAgcmV0dXJuIG9kICogdGhpcy5jeSgpLnpvb20oKTtcbiAgICB9XG4gIH07XG59O1xuXG5kZWZpbmVEaW1GbnMoe1xuICBuYW1lOiAnd2lkdGgnXG59KTtcbmRlZmluZURpbUZucyh7XG4gIG5hbWU6ICdoZWlnaHQnXG59KTtcblxuZWxlc2ZuJGwucGFkZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVsZSA9IHRoaXNbMF07XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcblxuICBpZiAoZWxlLmlzUGFyZW50KCkpIHtcbiAgICBlbGUudXBkYXRlQ29tcG91bmRCb3VuZHMoKTtcblxuICAgIGlmIChfcC5hdXRvUGFkZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gX3AuYXV0b1BhZGRpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlbGUucHN0eWxlKCdwYWRkaW5nJykucGZWYWx1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGVsZS5wc3R5bGUoJ3BhZGRpbmcnKS5wZlZhbHVlO1xuICB9XG59O1xuXG5lbGVzZm4kbC5wYWRkZWRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlbGUgPSB0aGlzWzBdO1xuICByZXR1cm4gZWxlLmhlaWdodCgpICsgMiAqIGVsZS5wYWRkaW5nKCk7XG59O1xuXG5lbGVzZm4kbC5wYWRkZWRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVsZSA9IHRoaXNbMF07XG4gIHJldHVybiBlbGUud2lkdGgoKSArIDIgKiBlbGUucGFkZGluZygpO1xufTtcblxudmFyIHdpZHRoSGVpZ2h0ID0gZWxlc2ZuJGw7XG5cbnZhciBpZkVkZ2UgPSBmdW5jdGlvbiBpZkVkZ2UoZWxlLCBnZXRWYWx1ZSkge1xuICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgcmV0dXJuIGdldFZhbHVlKGVsZSk7XG4gIH1cbn07XG5cbnZhciBpZkVkZ2VSZW5kZXJlZFBvc2l0aW9uID0gZnVuY3Rpb24gaWZFZGdlUmVuZGVyZWRQb3NpdGlvbihlbGUsIGdldFBvaW50KSB7XG4gIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICB2YXIgY3kgPSBlbGUuY3koKTtcbiAgICByZXR1cm4gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24oZ2V0UG9pbnQoZWxlKSwgY3kuem9vbSgpLCBjeS5wYW4oKSk7XG4gIH1cbn07XG5cbnZhciBpZkVkZ2VSZW5kZXJlZFBvc2l0aW9ucyA9IGZ1bmN0aW9uIGlmRWRnZVJlbmRlcmVkUG9zaXRpb25zKGVsZSwgZ2V0UG9pbnRzKSB7XG4gIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICB2YXIgY3kgPSBlbGUuY3koKTtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgcmV0dXJuIGdldFBvaW50cyhlbGUpLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIG1vZGVsVG9SZW5kZXJlZFBvc2l0aW9uKHAsIHpvb20sIHBhbik7XG4gICAgfSk7XG4gIH1cbn07XG5cbnZhciBjb250cm9sUG9pbnRzID0gZnVuY3Rpb24gY29udHJvbFBvaW50cyhlbGUpIHtcbiAgcmV0dXJuIGVsZS5yZW5kZXJlcigpLmdldENvbnRyb2xQb2ludHMoZWxlKTtcbn07XG5cbnZhciBzZWdtZW50UG9pbnRzID0gZnVuY3Rpb24gc2VnbWVudFBvaW50cyhlbGUpIHtcbiAgcmV0dXJuIGVsZS5yZW5kZXJlcigpLmdldFNlZ21lbnRQb2ludHMoZWxlKTtcbn07XG5cbnZhciBzb3VyY2VFbmRwb2ludCA9IGZ1bmN0aW9uIHNvdXJjZUVuZHBvaW50KGVsZSkge1xuICByZXR1cm4gZWxlLnJlbmRlcmVyKCkuZ2V0U291cmNlRW5kcG9pbnQoZWxlKTtcbn07XG5cbnZhciB0YXJnZXRFbmRwb2ludCA9IGZ1bmN0aW9uIHRhcmdldEVuZHBvaW50KGVsZSkge1xuICByZXR1cm4gZWxlLnJlbmRlcmVyKCkuZ2V0VGFyZ2V0RW5kcG9pbnQoZWxlKTtcbn07XG5cbnZhciBtaWRwb2ludCA9IGZ1bmN0aW9uIG1pZHBvaW50KGVsZSkge1xuICByZXR1cm4gZWxlLnJlbmRlcmVyKCkuZ2V0RWRnZU1pZHBvaW50KGVsZSk7XG59O1xuXG52YXIgcHRzID0ge1xuICBjb250cm9sUG9pbnRzOiB7XG4gICAgZ2V0OiBjb250cm9sUG9pbnRzLFxuICAgIG11bHQ6IHRydWVcbiAgfSxcbiAgc2VnbWVudFBvaW50czoge1xuICAgIGdldDogc2VnbWVudFBvaW50cyxcbiAgICBtdWx0OiB0cnVlXG4gIH0sXG4gIHNvdXJjZUVuZHBvaW50OiB7XG4gICAgZ2V0OiBzb3VyY2VFbmRwb2ludFxuICB9LFxuICB0YXJnZXRFbmRwb2ludDoge1xuICAgIGdldDogdGFyZ2V0RW5kcG9pbnRcbiAgfSxcbiAgbWlkcG9pbnQ6IHtcbiAgICBnZXQ6IG1pZHBvaW50XG4gIH1cbn07XG5cbnZhciByZW5kZXJlZE5hbWUgPSBmdW5jdGlvbiByZW5kZXJlZE5hbWUobmFtZSkge1xuICByZXR1cm4gJ3JlbmRlcmVkJyArIG5hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc3Vic3RyKDEpO1xufTtcblxudmFyIGVkZ2VQb2ludHMgPSBPYmplY3Qua2V5cyhwdHMpLnJlZHVjZShmdW5jdGlvbiAob2JqLCBuYW1lKSB7XG4gIHZhciBzcGVjID0gcHRzW25hbWVdO1xuICB2YXIgck5hbWUgPSByZW5kZXJlZE5hbWUobmFtZSk7XG5cbiAgb2JqW25hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBpZkVkZ2UodGhpcywgc3BlYy5nZXQpO1xuICB9O1xuXG4gIGlmIChzcGVjLm11bHQpIHtcbiAgICBvYmpbck5hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGlmRWRnZVJlbmRlcmVkUG9zaXRpb25zKHRoaXMsIHNwZWMuZ2V0KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9ialtyTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gaWZFZGdlUmVuZGVyZWRQb3NpdGlvbih0aGlzLCBzcGVjLmdldCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59LCB7fSk7XG5cbnZhciBkaW1lbnNpb25zID0gZXh0ZW5kKHt9LCBwb3NpdGlvbiwgYm91bmRzLCB3aWR0aEhlaWdodCwgZWRnZVBvaW50cyk7XG5cbi8qIVxuRXZlbnQgb2JqZWN0IGJhc2VkIG9uIGpRdWVyeSBldmVudHMsIE1JVCBsaWNlbnNlXG5cbmh0dHBzOi8vanF1ZXJ5Lm9yZy9saWNlbnNlL1xuaHR0cHM6Ly90bGRybGVnYWwuY29tL2xpY2Vuc2UvbWl0LWxpY2Vuc2Vcbmh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L2Jsb2IvbWFzdGVyL3NyYy9ldmVudC5qc1xuKi9cbnZhciBFdmVudCA9IGZ1bmN0aW9uIEV2ZW50KHNyYywgcHJvcHMpIHtcbiAgdGhpcy5yZWN5Y2xlKHNyYywgcHJvcHMpO1xufTtcblxuZnVuY3Rpb24gcmV0dXJuRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHtcbiAgcmV0dXJuIHRydWU7XG59IC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMDMwMzMxL2VjbWEtc2NyaXB0LWJpbmRpbmcuaHRtbFxuXG5cbkV2ZW50LnByb3RvdHlwZSA9IHtcbiAgaW5zdGFuY2VTdHJpbmc6IGZ1bmN0aW9uIGluc3RhbmNlU3RyaW5nKCkge1xuICAgIHJldHVybiAnZXZlbnQnO1xuICB9LFxuICByZWN5Y2xlOiBmdW5jdGlvbiByZWN5Y2xlKHNyYywgcHJvcHMpIHtcbiAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuRmFsc2U7XG5cbiAgICBpZiAoc3JjICE9IG51bGwgJiYgc3JjLnByZXZlbnREZWZhdWx0KSB7XG4gICAgICAvLyBCcm93c2VyIEV2ZW50IG9iamVjdFxuICAgICAgdGhpcy50eXBlID0gc3JjLnR5cGU7IC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkXG4gICAgICAvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS5cblxuICAgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRlZCA/IHJldHVyblRydWUgOiByZXR1cm5GYWxzZTtcbiAgICB9IGVsc2UgaWYgKHNyYyAhPSBudWxsICYmIHNyYy50eXBlKSB7XG4gICAgICAvLyBQbGFpbiBvYmplY3QgY29udGFpbmluZyBhbGwgZXZlbnQgZGV0YWlsc1xuICAgICAgcHJvcHMgPSBzcmM7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEV2ZW50IHN0cmluZ1xuICAgICAgdGhpcy50eXBlID0gc3JjO1xuICAgIH0gLy8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3RcblxuXG4gICAgaWYgKHByb3BzICE9IG51bGwpIHtcbiAgICAgIC8vIG1vcmUgZWZmaWNpZW50IHRvIG1hbnVhbGx5IGNvcHkgZmllbGRzIHdlIHVzZVxuICAgICAgdGhpcy5vcmlnaW5hbEV2ZW50ID0gcHJvcHMub3JpZ2luYWxFdmVudDtcbiAgICAgIHRoaXMudHlwZSA9IHByb3BzLnR5cGUgIT0gbnVsbCA/IHByb3BzLnR5cGUgOiB0aGlzLnR5cGU7XG4gICAgICB0aGlzLmN5ID0gcHJvcHMuY3k7XG4gICAgICB0aGlzLnRhcmdldCA9IHByb3BzLnRhcmdldDtcbiAgICAgIHRoaXMucG9zaXRpb24gPSBwcm9wcy5wb3NpdGlvbjtcbiAgICAgIHRoaXMucmVuZGVyZWRQb3NpdGlvbiA9IHByb3BzLnJlbmRlcmVkUG9zaXRpb247XG4gICAgICB0aGlzLm5hbWVzcGFjZSA9IHByb3BzLm5hbWVzcGFjZTtcbiAgICAgIHRoaXMubGF5b3V0ID0gcHJvcHMubGF5b3V0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN5ICE9IG51bGwgJiYgdGhpcy5wb3NpdGlvbiAhPSBudWxsICYmIHRoaXMucmVuZGVyZWRQb3NpdGlvbiA9PSBudWxsKSB7XG4gICAgICAvLyBjcmVhdGUgYSByZW5kZXJlZCBwb3NpdGlvbiBiYXNlZCBvbiB0aGUgcGFzc2VkIHBvc2l0aW9uXG4gICAgICB2YXIgcG9zID0gdGhpcy5wb3NpdGlvbjtcbiAgICAgIHZhciB6b29tID0gdGhpcy5jeS56b29tKCk7XG4gICAgICB2YXIgcGFuID0gdGhpcy5jeS5wYW4oKTtcbiAgICAgIHRoaXMucmVuZGVyZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgeDogcG9zLnggKiB6b29tICsgcGFuLngsXG4gICAgICAgIHk6IHBvcy55ICogem9vbSArIHBhbi55XG4gICAgICB9O1xuICAgIH0gLy8gQ3JlYXRlIGEgdGltZXN0YW1wIGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmVcblxuXG4gICAgdGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpO1xuICB9LFxuICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gcHJldmVudERlZmF1bHQoKSB7XG4gICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSByZXR1cm5UcnVlO1xuICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG4gICAgaWYgKCFlKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBpZiBwcmV2ZW50RGVmYXVsdCBleGlzdHMgcnVuIGl0IG9uIHRoZSBvcmlnaW5hbCBldmVudFxuXG5cbiAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfSxcbiAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiBzdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG4gICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cbiAgICBpZiAoIWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGlmIHN0b3BQcm9wYWdhdGlvbiBleGlzdHMgcnVuIGl0IG9uIHRoZSBvcmlnaW5hbCBldmVudFxuXG5cbiAgICBpZiAoZS5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9LFxuICBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpIHtcbiAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9LFxuICBpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLFxuICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG4gIGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZVxufTtcblxudmFyIGV2ZW50UmVnZXggPSAvXihbXi5dKykoXFwuKD86W14uXSspKT8kLzsgLy8gcmVnZXggZm9yIG1hdGNoaW5nIGV2ZW50IHN0cmluZ3MgKGUuZy4gXCJjbGljay5uYW1lc3BhY2VcIilcblxudmFyIHVuaXZlcnNhbE5hbWVzcGFjZSA9ICcuKic7IC8vIG1hdGNoZXMgYXMgaWYgbm8gbmFtZXNwYWNlIHNwZWNpZmllZCBhbmQgcHJldmVudHMgdXNlcnMgZnJvbSB1bmJpbmRpbmcgYWNjaWRlbnRhbGx5XG5cbnZhciBkZWZhdWx0cyQ4ID0ge1xuICBxdWFsaWZpZXJDb21wYXJlOiBmdW5jdGlvbiBxdWFsaWZpZXJDb21wYXJlKHExLCBxMikge1xuICAgIHJldHVybiBxMSA9PT0gcTI7XG4gIH0sXG4gIGV2ZW50TWF0Y2hlczogZnVuY3Rpb24gZXZlbnRNYXRjaGVzKClcbiAgLypjb250ZXh0LCBsaXN0ZW5lciwgZXZlbnRPYmoqL1xuICB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIGFkZEV2ZW50RmllbGRzOiBmdW5jdGlvbiBhZGRFdmVudEZpZWxkcygpXG4gIC8qY29udGV4dCwgZXZ0Ki9cbiAge30sXG4gIGNhbGxiYWNrQ29udGV4dDogZnVuY3Rpb24gY2FsbGJhY2tDb250ZXh0KGNvbnRleHRcbiAgLyosIGxpc3RlbmVyLCBldmVudE9iaiovXG4gICkge1xuICAgIHJldHVybiBjb250ZXh0O1xuICB9LFxuICBiZWZvcmVFbWl0OiBmdW5jdGlvbiBiZWZvcmVFbWl0KClcbiAgLyogY29udGV4dCwgbGlzdGVuZXIsIGV2ZW50T2JqICovXG4gIHt9LFxuICBhZnRlckVtaXQ6IGZ1bmN0aW9uIGFmdGVyRW1pdCgpXG4gIC8qIGNvbnRleHQsIGxpc3RlbmVyLCBldmVudE9iaiAqL1xuICB7fSxcbiAgYnViYmxlOiBmdW5jdGlvbiBidWJibGUoKVxuICAvKmNvbnRleHQqL1xuICB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICBwYXJlbnQ6IGZ1bmN0aW9uIHBhcmVudCgpXG4gIC8qY29udGV4dCovXG4gIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgY29udGV4dDogbnVsbFxufTtcbnZhciBkZWZhdWx0c0tleXMgPSBPYmplY3Qua2V5cyhkZWZhdWx0cyQ4KTtcbnZhciBlbXB0eU9wdHMgPSB7fTtcblxuZnVuY3Rpb24gRW1pdHRlcigpIHtcbiAgdmFyIG9wdHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGVtcHR5T3B0cztcbiAgdmFyIGNvbnRleHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcblxuICAvLyBtaWNyby1vcHRpbWlzYXRpb24gdnMgT2JqZWN0LmFzc2lnbigpIC0tIHJlZHVjZXMgRWxlbWVudCBpbnN0YW50aWF0aW9uIHRpbWVcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWZhdWx0c0tleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0gZGVmYXVsdHNLZXlzW2ldO1xuICAgIHRoaXNba2V5XSA9IG9wdHNba2V5XSB8fCBkZWZhdWx0cyQ4W2tleV07XG4gIH1cblxuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0IHx8IHRoaXMuY29udGV4dDtcbiAgdGhpcy5saXN0ZW5lcnMgPSBbXTtcbiAgdGhpcy5lbWl0dGluZyA9IDA7XG59XG5cbnZhciBwID0gRW1pdHRlci5wcm90b3R5cGU7XG5cbnZhciBmb3JFYWNoRXZlbnQgPSBmdW5jdGlvbiBmb3JFYWNoRXZlbnQoc2VsZiwgaGFuZGxlciwgZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mLCBjb25mT3ZlcnJpZGVzKSB7XG4gIGlmIChmbihxdWFsaWZpZXIpKSB7XG4gICAgY2FsbGJhY2sgPSBxdWFsaWZpZXI7XG4gICAgcXVhbGlmaWVyID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjb25mT3ZlcnJpZGVzKSB7XG4gICAgaWYgKGNvbmYgPT0gbnVsbCkge1xuICAgICAgY29uZiA9IGNvbmZPdmVycmlkZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmYgPSBleHRlbmQoe30sIGNvbmYsIGNvbmZPdmVycmlkZXMpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBldmVudExpc3QgPSBhcnJheShldmVudHMpID8gZXZlbnRzIDogZXZlbnRzLnNwbGl0KC9cXHMrLyk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZXZ0ID0gZXZlbnRMaXN0W2ldO1xuXG4gICAgaWYgKGVtcHR5U3RyaW5nKGV2dCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBtYXRjaCA9IGV2dC5tYXRjaChldmVudFJlZ2V4KTsgLy8gdHlwZVsubmFtZXNwYWNlXVxuXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICB2YXIgdHlwZSA9IG1hdGNoWzFdO1xuICAgICAgdmFyIG5hbWVzcGFjZSA9IG1hdGNoWzJdID8gbWF0Y2hbMl0gOiBudWxsO1xuICAgICAgdmFyIHJldCA9IGhhbmRsZXIoc2VsZiwgZXZ0LCB0eXBlLCBuYW1lc3BhY2UsIHF1YWxpZmllciwgY2FsbGJhY2ssIGNvbmYpO1xuXG4gICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH0gLy8gYWxsb3cgZXhpdGluZyBlYXJseVxuXG4gICAgfVxuICB9XG59O1xuXG52YXIgbWFrZUV2ZW50T2JqID0gZnVuY3Rpb24gbWFrZUV2ZW50T2JqKHNlbGYsIG9iaikge1xuICBzZWxmLmFkZEV2ZW50RmllbGRzKHNlbGYuY29udGV4dCwgb2JqKTtcbiAgcmV0dXJuIG5ldyBFdmVudChvYmoudHlwZSwgb2JqKTtcbn07XG5cbnZhciBmb3JFYWNoRXZlbnRPYmogPSBmdW5jdGlvbiBmb3JFYWNoRXZlbnRPYmooc2VsZiwgaGFuZGxlciwgZXZlbnRzKSB7XG4gIGlmIChldmVudChldmVudHMpKSB7XG4gICAgaGFuZGxlcihzZWxmLCBldmVudHMpO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIGlmIChwbGFpbk9iamVjdChldmVudHMpKSB7XG4gICAgaGFuZGxlcihzZWxmLCBtYWtlRXZlbnRPYmooc2VsZiwgZXZlbnRzKSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGV2ZW50TGlzdCA9IGFycmF5KGV2ZW50cykgPyBldmVudHMgOiBldmVudHMuc3BsaXQoL1xccysvKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50TGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBldnQgPSBldmVudExpc3RbaV07XG5cbiAgICBpZiAoZW1wdHlTdHJpbmcoZXZ0KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoID0gZXZ0Lm1hdGNoKGV2ZW50UmVnZXgpOyAvLyB0eXBlWy5uYW1lc3BhY2VdXG5cbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHZhciB0eXBlID0gbWF0Y2hbMV07XG4gICAgICB2YXIgbmFtZXNwYWNlID0gbWF0Y2hbMl0gPyBtYXRjaFsyXSA6IG51bGw7XG4gICAgICB2YXIgZXZlbnRPYmogPSBtYWtlRXZlbnRPYmooc2VsZiwge1xuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBuYW1lc3BhY2U6IG5hbWVzcGFjZSxcbiAgICAgICAgdGFyZ2V0OiBzZWxmLmNvbnRleHRcbiAgICAgIH0pO1xuICAgICAgaGFuZGxlcihzZWxmLCBldmVudE9iaik7XG4gICAgfVxuICB9XG59O1xuXG5wLm9uID0gcC5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudHMsIHF1YWxpZmllciwgY2FsbGJhY2ssIGNvbmYsIGNvbmZPdmVycmlkZXMpIHtcbiAgZm9yRWFjaEV2ZW50KHRoaXMsIGZ1bmN0aW9uIChzZWxmLCBldmVudCwgdHlwZSwgbmFtZXNwYWNlLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mKSB7XG4gICAgaWYgKGZuKGNhbGxiYWNrKSkge1xuICAgICAgc2VsZi5saXN0ZW5lcnMucHVzaCh7XG4gICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgLy8gZnVsbCBldmVudCBzdHJpbmdcbiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAvLyBjYWxsYmFjayB0byBydW5cbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgLy8gdGhlIGV2ZW50IHR5cGUgKGUuZy4gJ2NsaWNrJylcbiAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UsXG4gICAgICAgIC8vIHRoZSBldmVudCBuYW1lc3BhY2UgKGUuZy4gXCIuZm9vXCIpXG4gICAgICAgIHF1YWxpZmllcjogcXVhbGlmaWVyLFxuICAgICAgICAvLyBhIHJlc3RyaWN0aW9uIG9uIHdoZXRoZXIgdG8gbWF0Y2ggdGhpcyBlbWl0dGVyXG4gICAgICAgIGNvbmY6IGNvbmYgLy8gYWRkaXRpb25hbCBjb25maWd1cmF0aW9uXG5cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mLCBjb25mT3ZlcnJpZGVzKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5wLm9uZSA9IGZ1bmN0aW9uIChldmVudHMsIHF1YWxpZmllciwgY2FsbGJhY2ssIGNvbmYpIHtcbiAgcmV0dXJuIHRoaXMub24oZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mLCB7XG4gICAgb25lOiB0cnVlXG4gIH0pO1xufTtcblxucC5yZW1vdmVMaXN0ZW5lciA9IHAub2ZmID0gZnVuY3Rpb24gKGV2ZW50cywgcXVhbGlmaWVyLCBjYWxsYmFjaywgY29uZikge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIGlmICh0aGlzLmVtaXR0aW5nICE9PSAwKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMgPSBjb3B5QXJyYXkodGhpcy5saXN0ZW5lcnMpO1xuICB9XG5cbiAgdmFyIGxpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzO1xuXG4gIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKGkpIHtcbiAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG4gICAgZm9yRWFjaEV2ZW50KF90aGlzLCBmdW5jdGlvbiAoc2VsZiwgZXZlbnQsIHR5cGUsIG5hbWVzcGFjZSwgcXVhbGlmaWVyLCBjYWxsYmFja1xuICAgIC8qLCBjb25mKi9cbiAgICApIHtcbiAgICAgIGlmICgobGlzdGVuZXIudHlwZSA9PT0gdHlwZSB8fCBldmVudHMgPT09ICcqJykgJiYgKCFuYW1lc3BhY2UgJiYgbGlzdGVuZXIubmFtZXNwYWNlICE9PSAnLionIHx8IGxpc3RlbmVyLm5hbWVzcGFjZSA9PT0gbmFtZXNwYWNlKSAmJiAoIXF1YWxpZmllciB8fCBzZWxmLnF1YWxpZmllckNvbXBhcmUobGlzdGVuZXIucXVhbGlmaWVyLCBxdWFsaWZpZXIpKSAmJiAoIWNhbGxiYWNrIHx8IGxpc3RlbmVyLmNhbGxiYWNrID09PSBjYWxsYmFjaykpIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpLCAxKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sIGV2ZW50cywgcXVhbGlmaWVyLCBjYWxsYmFjaywgY29uZik7XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIF9sb29wKGkpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5wLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVtb3ZlTGlzdGVuZXIoJyonKTtcbn07XG5cbnAuZW1pdCA9IHAudHJpZ2dlciA9IGZ1bmN0aW9uIChldmVudHMsIGV4dHJhUGFyYW1zLCBtYW51YWxDYWxsYmFjaykge1xuICB2YXIgbGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnM7XG4gIHZhciBudW1MaXN0ZW5lcnNCZWZvcmVFbWl0ID0gbGlzdGVuZXJzLmxlbmd0aDtcbiAgdGhpcy5lbWl0dGluZysrO1xuXG4gIGlmICghYXJyYXkoZXh0cmFQYXJhbXMpKSB7XG4gICAgZXh0cmFQYXJhbXMgPSBbZXh0cmFQYXJhbXNdO1xuICB9XG5cbiAgZm9yRWFjaEV2ZW50T2JqKHRoaXMsIGZ1bmN0aW9uIChzZWxmLCBldmVudE9iaikge1xuICAgIGlmIChtYW51YWxDYWxsYmFjayAhPSBudWxsKSB7XG4gICAgICBsaXN0ZW5lcnMgPSBbe1xuICAgICAgICBldmVudDogZXZlbnRPYmouZXZlbnQsXG4gICAgICAgIHR5cGU6IGV2ZW50T2JqLnR5cGUsXG4gICAgICAgIG5hbWVzcGFjZTogZXZlbnRPYmoubmFtZXNwYWNlLFxuICAgICAgICBjYWxsYmFjazogbWFudWFsQ2FsbGJhY2tcbiAgICAgIH1dO1xuICAgICAgbnVtTGlzdGVuZXJzQmVmb3JlRW1pdCA9IGxpc3RlbmVycy5sZW5ndGg7XG4gICAgfVxuXG4gICAgdmFyIF9sb29wMiA9IGZ1bmN0aW9uIF9sb29wMihpKSB7XG4gICAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG5cbiAgICAgIGlmIChsaXN0ZW5lci50eXBlID09PSBldmVudE9iai50eXBlICYmICghbGlzdGVuZXIubmFtZXNwYWNlIHx8IGxpc3RlbmVyLm5hbWVzcGFjZSA9PT0gZXZlbnRPYmoubmFtZXNwYWNlIHx8IGxpc3RlbmVyLm5hbWVzcGFjZSA9PT0gdW5pdmVyc2FsTmFtZXNwYWNlKSAmJiBzZWxmLmV2ZW50TWF0Y2hlcyhzZWxmLmNvbnRleHQsIGxpc3RlbmVyLCBldmVudE9iaikpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbZXZlbnRPYmpdO1xuXG4gICAgICAgIGlmIChleHRyYVBhcmFtcyAhPSBudWxsKSB7XG4gICAgICAgICAgcHVzaChhcmdzLCBleHRyYVBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmJlZm9yZUVtaXQoc2VsZi5jb250ZXh0LCBsaXN0ZW5lciwgZXZlbnRPYmopO1xuXG4gICAgICAgIGlmIChsaXN0ZW5lci5jb25mICYmIGxpc3RlbmVyLmNvbmYub25lKSB7XG4gICAgICAgICAgc2VsZi5saXN0ZW5lcnMgPSBzZWxmLmxpc3RlbmVycy5maWx0ZXIoZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgICAgIHJldHVybiBsICE9PSBsaXN0ZW5lcjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjb250ZXh0ID0gc2VsZi5jYWxsYmFja0NvbnRleHQoc2VsZi5jb250ZXh0LCBsaXN0ZW5lciwgZXZlbnRPYmopO1xuICAgICAgICB2YXIgcmV0ID0gbGlzdGVuZXIuY2FsbGJhY2suYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgIHNlbGYuYWZ0ZXJFbWl0KHNlbGYuY29udGV4dCwgbGlzdGVuZXIsIGV2ZW50T2JqKTtcblxuICAgICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgICAgIGV2ZW50T2JqLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGV2ZW50T2JqLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gaWYgbGlzdGVuZXIgbWF0Y2hlc1xuXG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTGlzdGVuZXJzQmVmb3JlRW1pdDsgaSsrKSB7XG4gICAgICBfbG9vcDIoaSk7XG4gICAgfSAvLyBmb3IgbGlzdGVuZXJcblxuXG4gICAgaWYgKHNlbGYuYnViYmxlKHNlbGYuY29udGV4dCkgJiYgIWV2ZW50T2JqLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgIHNlbGYucGFyZW50KHNlbGYuY29udGV4dCkuZW1pdChldmVudE9iaiwgZXh0cmFQYXJhbXMpO1xuICAgIH1cbiAgfSwgZXZlbnRzKTtcbiAgdGhpcy5lbWl0dGluZy0tO1xuICByZXR1cm4gdGhpcztcbn07XG5cbnZhciBlbWl0dGVyT3B0aW9ucyA9IHtcbiAgcXVhbGlmaWVyQ29tcGFyZTogZnVuY3Rpb24gcXVhbGlmaWVyQ29tcGFyZShzZWxlY3RvcjEsIHNlbGVjdG9yMikge1xuICAgIGlmIChzZWxlY3RvcjEgPT0gbnVsbCB8fCBzZWxlY3RvcjIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHNlbGVjdG9yMSA9PSBudWxsICYmIHNlbGVjdG9yMiA9PSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc2VsZWN0b3IxLnNhbWVUZXh0KHNlbGVjdG9yMik7XG4gICAgfVxuICB9LFxuICBldmVudE1hdGNoZXM6IGZ1bmN0aW9uIGV2ZW50TWF0Y2hlcyhlbGUsIGxpc3RlbmVyLCBldmVudE9iaikge1xuICAgIHZhciBzZWxlY3RvciA9IGxpc3RlbmVyLnF1YWxpZmllcjtcblxuICAgIGlmIChzZWxlY3RvciAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gZWxlICE9PSBldmVudE9iai50YXJnZXQgJiYgZWxlbWVudChldmVudE9iai50YXJnZXQpICYmIHNlbGVjdG9yLm1hdGNoZXMoZXZlbnRPYmoudGFyZ2V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgYWRkRXZlbnRGaWVsZHM6IGZ1bmN0aW9uIGFkZEV2ZW50RmllbGRzKGVsZSwgZXZ0KSB7XG4gICAgZXZ0LmN5ID0gZWxlLmN5KCk7XG4gICAgZXZ0LnRhcmdldCA9IGVsZTtcbiAgfSxcbiAgY2FsbGJhY2tDb250ZXh0OiBmdW5jdGlvbiBjYWxsYmFja0NvbnRleHQoZWxlLCBsaXN0ZW5lciwgZXZlbnRPYmopIHtcbiAgICByZXR1cm4gbGlzdGVuZXIucXVhbGlmaWVyICE9IG51bGwgPyBldmVudE9iai50YXJnZXQgOiBlbGU7XG4gIH0sXG4gIGJlZm9yZUVtaXQ6IGZ1bmN0aW9uIGJlZm9yZUVtaXQoY29udGV4dCwgbGlzdGVuZXJcbiAgLyosIGV2ZW50T2JqKi9cbiAgKSB7XG4gICAgaWYgKGxpc3RlbmVyLmNvbmYgJiYgbGlzdGVuZXIuY29uZi5vbmNlKSB7XG4gICAgICBsaXN0ZW5lci5jb25mLm9uY2VDb2xsZWN0aW9uLnJlbW92ZUxpc3RlbmVyKGxpc3RlbmVyLmV2ZW50LCBsaXN0ZW5lci5xdWFsaWZpZXIsIGxpc3RlbmVyLmNhbGxiYWNrKTtcbiAgICB9XG4gIH0sXG4gIGJ1YmJsZTogZnVuY3Rpb24gYnViYmxlKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBwYXJlbnQ6IGZ1bmN0aW9uIHBhcmVudChlbGUpIHtcbiAgICByZXR1cm4gZWxlLmlzQ2hpbGQoKSA/IGVsZS5wYXJlbnQoKSA6IGVsZS5jeSgpO1xuICB9XG59O1xuXG52YXIgYXJnU2VsZWN0b3IgPSBmdW5jdGlvbiBhcmdTZWxlY3RvcihhcmcpIHtcbiAgaWYgKHN0cmluZyhhcmcpKSB7XG4gICAgcmV0dXJuIG5ldyBTZWxlY3RvcihhcmcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBhcmc7XG4gIH1cbn07XG5cbnZhciBlbGVzZm4kbSA9IHtcbiAgY3JlYXRlRW1pdHRlcjogZnVuY3Rpb24gY3JlYXRlRW1pdHRlcigpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuXG4gICAgICBpZiAoIV9wLmVtaXR0ZXIpIHtcbiAgICAgICAgX3AuZW1pdHRlciA9IG5ldyBFbWl0dGVyKGVtaXR0ZXJPcHRpb25zLCBlbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBlbWl0dGVyOiBmdW5jdGlvbiBlbWl0dGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmVtaXR0ZXI7XG4gIH0sXG4gIG9uOiBmdW5jdGlvbiBvbihldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgIHZhciBhcmdTZWwgPSBhcmdTZWxlY3RvcihzZWxlY3Rvcik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgZWxlLmVtaXR0ZXIoKS5vbihldmVudHMsIGFyZ1NlbCwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICByZW1vdmVMaXN0ZW5lcjogZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIoZXZlbnRzLCBzZWxlY3RvciwgY2FsbGJhY2spIHtcbiAgICB2YXIgYXJnU2VsID0gYXJnU2VsZWN0b3Ioc2VsZWN0b3IpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgIGVsZS5lbWl0dGVyKCkucmVtb3ZlTGlzdGVuZXIoZXZlbnRzLCBhcmdTZWwsIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcmVtb3ZlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnMoKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgIGVsZS5lbWl0dGVyKCkucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIG9uZTogZnVuY3Rpb24gb25lKGV2ZW50cywgc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGFyZ1NlbCA9IGFyZ1NlbGVjdG9yKHNlbGVjdG9yKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICBlbGUuZW1pdHRlcigpLm9uZShldmVudHMsIGFyZ1NlbCwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBvbmNlOiBmdW5jdGlvbiBvbmNlKGV2ZW50cywgc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGFyZ1NlbCA9IGFyZ1NlbGVjdG9yKHNlbGVjdG9yKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICBlbGUuZW1pdHRlcigpLm9uKGV2ZW50cywgYXJnU2VsLCBjYWxsYmFjaywge1xuICAgICAgICBvbmNlOiB0cnVlLFxuICAgICAgICBvbmNlQ29sbGVjdGlvbjogdGhpc1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBlbWl0OiBmdW5jdGlvbiBlbWl0KGV2ZW50cywgZXh0cmFQYXJhbXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgZWxlLmVtaXR0ZXIoKS5lbWl0KGV2ZW50cywgZXh0cmFQYXJhbXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBlbWl0QW5kTm90aWZ5OiBmdW5jdGlvbiBlbWl0QW5kTm90aWZ5KGV2ZW50LCBleHRyYVBhcmFtcykge1xuICAgIC8vIGZvciBpbnRlcm5hbCB1c2Ugb25seVxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gZW1wdHkgY29sbGVjdGlvbnMgZG9uJ3QgbmVlZCB0byBub3RpZnkgYW55dGhpbmdcbiAgICAvLyBub3RpZnkgcmVuZGVyZXJcblxuXG4gICAgdGhpcy5jeSgpLm5vdGlmeShldmVudCwgdGhpcyk7XG4gICAgdGhpcy5lbWl0KGV2ZW50LCBleHRyYVBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn07XG5kZWZpbmUkMy5ldmVudEFsaWFzZXNPbihlbGVzZm4kbSk7XG5cbnZhciBlbGVzZm4kbiA9IHtcbiAgbm9kZXM6IGZ1bmN0aW9uIG5vZGVzKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNOb2RlKCk7XG4gICAgfSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgfSxcbiAgZWRnZXM6IGZ1bmN0aW9uIGVkZ2VzKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNFZGdlKCk7XG4gICAgfSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgfSxcbiAgLy8gaW50ZXJuYWwgaGVscGVyIHRvIGdldCBub2RlcyBhbmQgZWRnZXMgYXMgc2VwYXJhdGUgY29sbGVjdGlvbnMgd2l0aCBzaW5nbGUgaXRlcmF0aW9uIG92ZXIgZWxlbWVudHNcbiAgYnlHcm91cDogZnVuY3Rpb24gYnlHcm91cCgpIHtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLnNwYXduKCk7XG4gICAgdmFyIGVkZ2VzID0gdGhpcy5zcGF3bigpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcblxuICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICBub2Rlcy5wdXNoKGVsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlcy5wdXNoKGVsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGVzOiBub2RlcyxcbiAgICAgIGVkZ2VzOiBlZGdlc1xuICAgIH07XG4gIH0sXG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKF9maWx0ZXIsIHRoaXNBcmcpIHtcbiAgICBpZiAoX2ZpbHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBjaGVjayB0aGlzIGZpcnN0IGIvYyBpdCdzIHRoZSBtb3N0IGNvbW1vbi9wZXJmb3JtYW50IGNhc2VcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSBpZiAoc3RyaW5nKF9maWx0ZXIpIHx8IGVsZW1lbnRPckNvbGxlY3Rpb24oX2ZpbHRlcikpIHtcbiAgICAgIHJldHVybiBuZXcgU2VsZWN0b3IoX2ZpbHRlcikuZmlsdGVyKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoZm4oX2ZpbHRlcikpIHtcbiAgICAgIHZhciBmaWx0ZXJFbGVzID0gdGhpcy5zcGF3bigpO1xuICAgICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICAgIHZhciBpbmNsdWRlID0gdGhpc0FyZyA/IF9maWx0ZXIuYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgZWxlc10pIDogX2ZpbHRlcihlbGUsIGksIGVsZXMpO1xuXG4gICAgICAgIGlmIChpbmNsdWRlKSB7XG4gICAgICAgICAgZmlsdGVyRWxlcy5wdXNoKGVsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpbHRlckVsZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24oKTsgLy8gaWYgbm90IGhhbmRsZWQgYnkgYWJvdmUsIGdpdmUgJ2VtIGFuIGVtcHR5IGNvbGxlY3Rpb25cbiAgfSxcbiAgbm90OiBmdW5jdGlvbiBub3QodG9SZW1vdmUpIHtcbiAgICBpZiAoIXRvUmVtb3ZlKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0cmluZyh0b1JlbW92ZSkpIHtcbiAgICAgICAgdG9SZW1vdmUgPSB0aGlzLmZpbHRlcih0b1JlbW92ZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50cyA9IHRoaXMuc3Bhd24oKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gdGhpc1tpXTtcbiAgICAgICAgdmFyIHJlbW92ZSA9IHRvUmVtb3ZlLmhhcyhlbGVtZW50KTtcblxuICAgICAgICBpZiAoIXJlbW92ZSkge1xuICAgICAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgIH1cbiAgfSxcbiAgYWJzb2x1dGVDb21wbGVtZW50OiBmdW5jdGlvbiBhYnNvbHV0ZUNvbXBsZW1lbnQoKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHJldHVybiBjeS5tdXRhYmxlRWxlbWVudHMoKS5ub3QodGhpcyk7XG4gIH0sXG4gIGludGVyc2VjdDogZnVuY3Rpb24gaW50ZXJzZWN0KG90aGVyKSB7XG4gICAgLy8gaWYgYSBzZWxlY3RvciBpcyBzcGVjaWZpZWQsIHRoZW4gZmlsdGVyIGJ5IGl0IGluc3RlYWRcbiAgICBpZiAoc3RyaW5nKG90aGVyKSkge1xuICAgICAgdmFyIHNlbGVjdG9yID0gb3RoZXI7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXIoc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIHZhciBlbGVtZW50cyA9IHRoaXMuc3Bhd24oKTtcbiAgICB2YXIgY29sMSA9IHRoaXM7XG4gICAgdmFyIGNvbDIgPSBvdGhlcjtcbiAgICB2YXIgY29sMVNtYWxsZXIgPSB0aGlzLmxlbmd0aCA8IG90aGVyLmxlbmd0aDtcbiAgICB2YXIgY29sUyA9IGNvbDFTbWFsbGVyID8gY29sMSA6IGNvbDI7XG4gICAgdmFyIGNvbEwgPSBjb2wxU21hbGxlciA/IGNvbDIgOiBjb2wxO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2xTLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gY29sU1tpXTtcblxuICAgICAgaWYgKGNvbEwuaGFzKGVsZSkpIHtcbiAgICAgICAgZWxlbWVudHMucHVzaChlbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50cztcbiAgfSxcbiAgeG9yOiBmdW5jdGlvbiB4b3Iob3RoZXIpIHtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuXG4gICAgaWYgKHN0cmluZyhvdGhlcikpIHtcbiAgICAgIG90aGVyID0gY3kuJChvdGhlcik7XG4gICAgfVxuXG4gICAgdmFyIGVsZW1lbnRzID0gdGhpcy5zcGF3bigpO1xuICAgIHZhciBjb2wxID0gdGhpcztcbiAgICB2YXIgY29sMiA9IG90aGVyO1xuXG4gICAgdmFyIGFkZCA9IGZ1bmN0aW9uIGFkZChjb2wsIG90aGVyKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gY29sW2ldO1xuICAgICAgICB2YXIgaWQgPSBlbGUuX3ByaXZhdGUuZGF0YS5pZDtcbiAgICAgICAgdmFyIGluT3RoZXIgPSBvdGhlci5oYXNFbGVtZW50V2l0aElkKGlkKTtcblxuICAgICAgICBpZiAoIWluT3RoZXIpIHtcbiAgICAgICAgICBlbGVtZW50cy5wdXNoKGVsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYWRkKGNvbDEsIGNvbDIpO1xuICAgIGFkZChjb2wyLCBjb2wxKTtcbiAgICByZXR1cm4gZWxlbWVudHM7XG4gIH0sXG4gIGRpZmY6IGZ1bmN0aW9uIGRpZmYob3RoZXIpIHtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuXG4gICAgaWYgKHN0cmluZyhvdGhlcikpIHtcbiAgICAgIG90aGVyID0gY3kuJChvdGhlcik7XG4gICAgfVxuXG4gICAgdmFyIGxlZnQgPSB0aGlzLnNwYXduKCk7XG4gICAgdmFyIHJpZ2h0ID0gdGhpcy5zcGF3bigpO1xuICAgIHZhciBib3RoID0gdGhpcy5zcGF3bigpO1xuICAgIHZhciBjb2wxID0gdGhpcztcbiAgICB2YXIgY29sMiA9IG90aGVyO1xuXG4gICAgdmFyIGFkZCA9IGZ1bmN0aW9uIGFkZChjb2wsIG90aGVyLCByZXRFbGVzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gY29sW2ldO1xuICAgICAgICB2YXIgaWQgPSBlbGUuX3ByaXZhdGUuZGF0YS5pZDtcbiAgICAgICAgdmFyIGluT3RoZXIgPSBvdGhlci5oYXNFbGVtZW50V2l0aElkKGlkKTtcblxuICAgICAgICBpZiAoaW5PdGhlcikge1xuICAgICAgICAgIGJvdGgubWVyZ2UoZWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXRFbGVzLnB1c2goZWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBhZGQoY29sMSwgY29sMiwgbGVmdCk7XG4gICAgYWRkKGNvbDIsIGNvbDEsIHJpZ2h0KTtcbiAgICByZXR1cm4ge1xuICAgICAgbGVmdDogbGVmdCxcbiAgICAgIHJpZ2h0OiByaWdodCxcbiAgICAgIGJvdGg6IGJvdGhcbiAgICB9O1xuICB9LFxuICBhZGQ6IGZ1bmN0aW9uIGFkZCh0b0FkZCkge1xuICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG5cbiAgICBpZiAoIXRvQWRkKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoc3RyaW5nKHRvQWRkKSkge1xuICAgICAgdmFyIHNlbGVjdG9yID0gdG9BZGQ7XG4gICAgICB0b0FkZCA9IGN5Lm11dGFibGVFbGVtZW50cygpLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgdmFyIGVsZW1lbnRzID0gdGhpcy5zcGF3blNlbGYoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9BZGQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSB0b0FkZFtpXTtcbiAgICAgIHZhciBhZGQgPSAhdGhpcy5oYXMoZWxlKTtcblxuICAgICAgaWYgKGFkZCkge1xuICAgICAgICBlbGVtZW50cy5wdXNoKGVsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnRzO1xuICB9LFxuICAvLyBpbiBwbGFjZSBtZXJnZSBvbiBjYWxsaW5nIGNvbGxlY3Rpb25cbiAgbWVyZ2U6IGZ1bmN0aW9uIG1lcmdlKHRvQWRkKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgY3kgPSBfcC5jeTtcblxuICAgIGlmICghdG9BZGQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmICh0b0FkZCAmJiBzdHJpbmcodG9BZGQpKSB7XG4gICAgICB2YXIgc2VsZWN0b3IgPSB0b0FkZDtcbiAgICAgIHRvQWRkID0gY3kubXV0YWJsZUVsZW1lbnRzKCkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICB2YXIgbWFwID0gX3AubWFwO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b0FkZC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRvQWRkRWxlID0gdG9BZGRbaV07XG4gICAgICB2YXIgaWQgPSB0b0FkZEVsZS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgdmFyIGFkZCA9ICFtYXAuaGFzKGlkKTtcblxuICAgICAgaWYgKGFkZCkge1xuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmxlbmd0aCsrO1xuICAgICAgICB0aGlzW2luZGV4XSA9IHRvQWRkRWxlO1xuICAgICAgICBtYXAuc2V0KGlkLCB7XG4gICAgICAgICAgZWxlOiB0b0FkZEVsZSxcbiAgICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHVubWVyZ2VBdDogZnVuY3Rpb24gdW5tZXJnZUF0KGkpIHtcbiAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICB2YXIgaWQgPSBlbGUuaWQoKTtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgIHZhciBtYXAgPSBfcC5tYXA7IC8vIHJlbW92ZSBlbGVcblxuICAgIHRoaXNbaV0gPSB1bmRlZmluZWQ7XG4gICAgbWFwW1wiZGVsZXRlXCJdKGlkKTtcbiAgICB2YXIgdW5tZXJnZWRMYXN0RWxlID0gaSA9PT0gdGhpcy5sZW5ndGggLSAxOyAvLyByZXBsYWNlIGVtcHR5IHNwb3Qgd2l0aCBsYXN0IGVsZSBpbiBjb2xsZWN0aW9uXG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiAxICYmICF1bm1lcmdlZExhc3RFbGUpIHtcbiAgICAgIHZhciBsYXN0RWxlSSA9IHRoaXMubGVuZ3RoIC0gMTtcbiAgICAgIHZhciBsYXN0RWxlID0gdGhpc1tsYXN0RWxlSV07XG4gICAgICB2YXIgbGFzdEVsZUlkID0gbGFzdEVsZS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgdGhpc1tsYXN0RWxlSV0gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzW2ldID0gbGFzdEVsZTtcbiAgICAgIG1hcC5zZXQobGFzdEVsZUlkLCB7XG4gICAgICAgIGVsZTogbGFzdEVsZSxcbiAgICAgICAgaW5kZXg6IGlcbiAgICAgIH0pO1xuICAgIH0gLy8gdGhlIGNvbGxlY3Rpb24gaXMgbm93IDEgZWxlIHNtYWxsZXJcblxuXG4gICAgdGhpcy5sZW5ndGgtLTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgLy8gcmVtb3ZlIHNpbmdsZSBlbGUgaW4gcGxhY2UgaW4gY2FsbGluZyBjb2xsZWN0aW9uXG4gIHVubWVyZ2VPbmU6IGZ1bmN0aW9uIHVubWVyZ2VPbmUoZWxlKSB7XG4gICAgZWxlID0gZWxlWzBdO1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgdmFyIGlkID0gZWxlLl9wcml2YXRlLmRhdGEuaWQ7XG4gICAgdmFyIG1hcCA9IF9wLm1hcDtcbiAgICB2YXIgZW50cnkgPSBtYXAuZ2V0KGlkKTtcblxuICAgIGlmICghZW50cnkpIHtcbiAgICAgIHJldHVybiB0aGlzOyAvLyBubyBuZWVkIHRvIHJlbW92ZVxuICAgIH1cblxuICAgIHZhciBpID0gZW50cnkuaW5kZXg7XG4gICAgdGhpcy51bm1lcmdlQXQoaSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIC8vIHJlbW92ZSBlbGVzIGluIHBsYWNlIG9uIGNhbGxpbmcgY29sbGVjdGlvblxuICB1bm1lcmdlOiBmdW5jdGlvbiB1bm1lcmdlKHRvUmVtb3ZlKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcblxuICAgIGlmICghdG9SZW1vdmUpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmICh0b1JlbW92ZSAmJiBzdHJpbmcodG9SZW1vdmUpKSB7XG4gICAgICB2YXIgc2VsZWN0b3IgPSB0b1JlbW92ZTtcbiAgICAgIHRvUmVtb3ZlID0gY3kubXV0YWJsZUVsZW1lbnRzKCkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvUmVtb3ZlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLnVubWVyZ2VPbmUodG9SZW1vdmVbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICB1bm1lcmdlQnk6IGZ1bmN0aW9uIHVubWVyZ2VCeSh0b1JtRm4pIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG5cbiAgICAgIGlmICh0b1JtRm4oZWxlKSkge1xuICAgICAgICB0aGlzLnVubWVyZ2VBdChpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgbWFwOiBmdW5jdGlvbiBtYXAobWFwRm4sIHRoaXNBcmcpIHtcbiAgICB2YXIgYXJyID0gW107XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgIHZhciByZXQgPSB0aGlzQXJnID8gbWFwRm4uYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgZWxlc10pIDogbWFwRm4oZWxlLCBpLCBlbGVzKTtcbiAgICAgIGFyci5wdXNoKHJldCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycjtcbiAgfSxcbiAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UoZm4sIGluaXRpYWxWYWx1ZSkge1xuICAgIHZhciB2YWwgPSBpbml0aWFsVmFsdWU7XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWwgPSBmbih2YWwsIGVsZXNbaV0sIGksIGVsZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWw7XG4gIH0sXG4gIG1heDogZnVuY3Rpb24gbWF4KHZhbEZuLCB0aGlzQXJnKSB7XG4gICAgdmFyIG1heCA9IC1JbmZpbml0eTtcbiAgICB2YXIgbWF4RWxlO1xuICAgIHZhciBlbGVzID0gdGhpcztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICB2YXIgdmFsID0gdGhpc0FyZyA/IHZhbEZuLmFwcGx5KHRoaXNBcmcsIFtlbGUsIGksIGVsZXNdKSA6IHZhbEZuKGVsZSwgaSwgZWxlcyk7XG5cbiAgICAgIGlmICh2YWwgPiBtYXgpIHtcbiAgICAgICAgbWF4ID0gdmFsO1xuICAgICAgICBtYXhFbGUgPSBlbGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBtYXgsXG4gICAgICBlbGU6IG1heEVsZVxuICAgIH07XG4gIH0sXG4gIG1pbjogZnVuY3Rpb24gbWluKHZhbEZuLCB0aGlzQXJnKSB7XG4gICAgdmFyIG1pbiA9IEluZmluaXR5O1xuICAgIHZhciBtaW5FbGU7XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgIHZhciB2YWwgPSB0aGlzQXJnID8gdmFsRm4uYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgZWxlc10pIDogdmFsRm4oZWxlLCBpLCBlbGVzKTtcblxuICAgICAgaWYgKHZhbCA8IG1pbikge1xuICAgICAgICBtaW4gPSB2YWw7XG4gICAgICAgIG1pbkVsZSA9IGVsZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IG1pbixcbiAgICAgIGVsZTogbWluRWxlXG4gICAgfTtcbiAgfVxufTsgLy8gYWxpYXNlc1xuXG52YXIgZm4kNSA9IGVsZXNmbiRuO1xuZm4kNVsndSddID0gZm4kNVsnfCddID0gZm4kNVsnKyddID0gZm4kNS51bmlvbiA9IGZuJDUub3IgPSBmbiQ1LmFkZDtcbmZuJDVbJ1xcXFwnXSA9IGZuJDVbJyEnXSA9IGZuJDVbJy0nXSA9IGZuJDUuZGlmZmVyZW5jZSA9IGZuJDUucmVsYXRpdmVDb21wbGVtZW50ID0gZm4kNS5zdWJ0cmFjdCA9IGZuJDUubm90O1xuZm4kNVsnbiddID0gZm4kNVsnJiddID0gZm4kNVsnLiddID0gZm4kNS5hbmQgPSBmbiQ1LmludGVyc2VjdGlvbiA9IGZuJDUuaW50ZXJzZWN0O1xuZm4kNVsnXiddID0gZm4kNVsnKCspJ10gPSBmbiQ1WycoLSknXSA9IGZuJDUuc3ltbWV0cmljRGlmZmVyZW5jZSA9IGZuJDUuc3ltZGlmZiA9IGZuJDUueG9yO1xuZm4kNS5mbkZpbHRlciA9IGZuJDUuZmlsdGVyRm4gPSBmbiQ1LnN0ZEZpbHRlciA9IGZuJDUuZmlsdGVyO1xuZm4kNS5jb21wbGVtZW50ID0gZm4kNS5hYnNjb21wID0gZm4kNS5hYnNvbHV0ZUNvbXBsZW1lbnQ7XG5cbnZhciBlbGVzZm4kbyA9IHtcbiAgaXNOb2RlOiBmdW5jdGlvbiBpc05vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXAoKSA9PT0gJ25vZGVzJztcbiAgfSxcbiAgaXNFZGdlOiBmdW5jdGlvbiBpc0VkZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXAoKSA9PT0gJ2VkZ2VzJztcbiAgfSxcbiAgaXNMb29wOiBmdW5jdGlvbiBpc0xvb3AoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNFZGdlKCkgJiYgdGhpcy5zb3VyY2UoKVswXSA9PT0gdGhpcy50YXJnZXQoKVswXTtcbiAgfSxcbiAgaXNTaW1wbGU6IGZ1bmN0aW9uIGlzU2ltcGxlKCkge1xuICAgIHJldHVybiB0aGlzLmlzRWRnZSgpICYmIHRoaXMuc291cmNlKClbMF0gIT09IHRoaXMudGFyZ2V0KClbMF07XG4gIH0sXG4gIGdyb3VwOiBmdW5jdGlvbiBncm91cCgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuX3ByaXZhdGUuZ3JvdXA7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqICBFbGVtZW50cyBhcmUgZHJhd24gaW4gYSBzcGVjaWZpYyBvcmRlciBiYXNlZCBvbiBjb21wb3VuZCBkZXB0aCAobG93IHRvIGhpZ2gpLCB0aGUgZWxlbWVudCB0eXBlIChub2RlcyBhYm92ZSBlZGdlcyksXG4gKiAgYW5kIHotaW5kZXggKGxvdyB0byBoaWdoKS4gIFRoZXNlIHN0eWxlcyBhZmZlY3QgaG93IHRoaXMgYXBwbGllczpcbiAqXG4gKiAgei1jb21wb3VuZC1kZXB0aDogTWF5IGJlIGBib3R0b20gfCBvcnBoYW4gfCBhdXRvIHwgdG9wYC4gIFRoZSBmaXJzdCBkcmF3biBpcyBgYm90dG9tYCwgdGhlbiBgb3JwaGFuYCB3aGljaCBpcyB0aGVcbiAqICAgICAgc2FtZSBkZXB0aCBhcyB0aGUgcm9vdCBvZiB0aGUgY29tcG91bmQgZ3JhcGgsIGZvbGxvd2VkIGJ5IHRoZSBkZWZhdWx0IHZhbHVlIGBhdXRvYCB3aGljaCBkcmF3cyBpbiBvcmRlciBmcm9tXG4gKiAgICAgIHJvb3QgdG8gbGVhdmVzIG9mIHRoZSBjb21wb3VuZCBncmFwaC4gIFRoZSBsYXN0IGRyYXduIGlzIGB0b3BgLlxuICogIHotaW5kZXgtY29tcGFyZTogTWF5IGJlIGBhdXRvIHwgbWFudWFsYC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBhdXRvYCB3aGljaCBhbHdheXMgZHJhd3MgZWRnZXMgdW5kZXIgbm9kZXMuXG4gKiAgICAgIGBtYW51YWxgIGlnbm9yZXMgdGhpcyBjb252ZW50aW9uIGFuZCBkcmF3cyBiYXNlZCBvbiB0aGUgYHotaW5kZXhgIHZhbHVlIHNldHRpbmcuXG4gKiAgei1pbmRleDogQW4gaW50ZWdlciB2YWx1ZSB0aGF0IGFmZmVjdHMgdGhlIHJlbGF0aXZlIGRyYXcgb3JkZXIgb2YgZWxlbWVudHMuICBJbiBnZW5lcmFsLCBhbiBlbGVtZW50IHdpdGggYSBoaWdoZXJcbiAqICAgICAgYHotaW5kZXhgIHdpbGwgYmUgZHJhd24gb24gdG9wIG9mIGFuIGVsZW1lbnQgd2l0aCBhIGxvd2VyIGB6LWluZGV4YC5cbiAqL1xuXG52YXIgekluZGV4U29ydCA9IGZ1bmN0aW9uIHpJbmRleFNvcnQoYSwgYikge1xuICB2YXIgY3kgPSBhLmN5KCk7XG4gIHZhciBoYXNDb21wb3VuZE5vZGVzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuXG4gIGZ1bmN0aW9uIGdldERlcHRoKGVsZSkge1xuICAgIHZhciBzdHlsZSA9IGVsZS5wc3R5bGUoJ3otY29tcG91bmQtZGVwdGgnKTtcblxuICAgIGlmIChzdHlsZS52YWx1ZSA9PT0gJ2F1dG8nKSB7XG4gICAgICByZXR1cm4gaGFzQ29tcG91bmROb2RlcyA/IGVsZS56RGVwdGgoKSA6IDA7XG4gICAgfSBlbHNlIGlmIChzdHlsZS52YWx1ZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9IGVsc2UgaWYgKHN0eWxlLnZhbHVlID09PSAndG9wJykge1xuICAgICAgcmV0dXJuIE1BWF9JTlQ7XG4gICAgfSAvLyAnb3JwaGFuJ1xuXG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBkZXB0aERpZmYgPSBnZXREZXB0aChhKSAtIGdldERlcHRoKGIpO1xuXG4gIGlmIChkZXB0aERpZmYgIT09IDApIHtcbiAgICByZXR1cm4gZGVwdGhEaWZmO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RWxlRGVwdGgoZWxlKSB7XG4gICAgdmFyIHN0eWxlID0gZWxlLnBzdHlsZSgnei1pbmRleC1jb21wYXJlJyk7XG5cbiAgICBpZiAoc3R5bGUudmFsdWUgPT09ICdhdXRvJykge1xuICAgICAgcmV0dXJuIGVsZS5pc05vZGUoKSA/IDEgOiAwO1xuICAgIH0gLy8gJ21hbnVhbCdcblxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB2YXIgZWxlRGlmZiA9IGdldEVsZURlcHRoKGEpIC0gZ2V0RWxlRGVwdGgoYik7XG5cbiAgaWYgKGVsZURpZmYgIT09IDApIHtcbiAgICByZXR1cm4gZWxlRGlmZjtcbiAgfVxuXG4gIHZhciB6RGlmZiA9IGEucHN0eWxlKCd6LWluZGV4JykudmFsdWUgLSBiLnBzdHlsZSgnei1pbmRleCcpLnZhbHVlO1xuXG4gIGlmICh6RGlmZiAhPT0gMCkge1xuICAgIHJldHVybiB6RGlmZjtcbiAgfSAvLyBjb21wYXJlIGluZGljZXMgaW4gdGhlIGNvcmUgKG9yZGVyIGFkZGVkIHRvIGdyYXBoIHcvIGxhc3Qgb24gdG9wKVxuXG5cbiAgcmV0dXJuIGEucG9vbEluZGV4KCkgLSBiLnBvb2xJbmRleCgpO1xufTtcblxudmFyIGVsZXNmbiRwID0ge1xuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGZuJDEsIHRoaXNBcmcpIHtcbiAgICBpZiAoZm4oZm4kMSkpIHtcbiAgICAgIHZhciBOID0gdGhpcy5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgICB2YXIgcmV0ID0gdGhpc0FyZyA/IGZuJDEuYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgdGhpc10pIDogZm4kMShlbGUsIGksIHRoaXMpO1xuXG4gICAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gLy8gZXhpdCBlYWNoIGVhcmx5IG9uIHJldHVybiBmYWxzZVxuXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHRvQXJyYXk6IGZ1bmN0aW9uIHRvQXJyYXkoKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycmF5LnB1c2godGhpc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycmF5O1xuICB9LFxuICBzbGljZTogZnVuY3Rpb24gc2xpY2Uoc3RhcnQsIGVuZCkge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIHZhciB0aGlzU2l6ZSA9IHRoaXMubGVuZ3RoO1xuXG4gICAgaWYgKGVuZCA9PSBudWxsKSB7XG4gICAgICBlbmQgPSB0aGlzU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPT0gbnVsbCkge1xuICAgICAgc3RhcnQgPSAwO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgIHN0YXJ0ID0gdGhpc1NpemUgKyBzdGFydDtcbiAgICB9XG5cbiAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgZW5kID0gdGhpc1NpemUgKyBlbmQ7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpID49IDAgJiYgaSA8IGVuZCAmJiBpIDwgdGhpc1NpemU7IGkrKykge1xuICAgICAgYXJyYXkucHVzaCh0aGlzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcGF3bihhcnJheSk7XG4gIH0sXG4gIHNpemU6IGZ1bmN0aW9uIHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoO1xuICB9LFxuICBlcTogZnVuY3Rpb24gZXEoaSkge1xuICAgIHJldHVybiB0aGlzW2ldIHx8IHRoaXMuc3Bhd24oKTtcbiAgfSxcbiAgZmlyc3Q6IGZ1bmN0aW9uIGZpcnN0KCkge1xuICAgIHJldHVybiB0aGlzWzBdIHx8IHRoaXMuc3Bhd24oKTtcbiAgfSxcbiAgbGFzdDogZnVuY3Rpb24gbGFzdCgpIHtcbiAgICByZXR1cm4gdGhpc1t0aGlzLmxlbmd0aCAtIDFdIHx8IHRoaXMuc3Bhd24oKTtcbiAgfSxcbiAgZW1wdHk6IGZ1bmN0aW9uIGVtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMDtcbiAgfSxcbiAgbm9uZW1wdHk6IGZ1bmN0aW9uIG5vbmVtcHR5KCkge1xuICAgIHJldHVybiAhdGhpcy5lbXB0eSgpO1xuICB9LFxuICBzb3J0OiBmdW5jdGlvbiBzb3J0KHNvcnRGbikge1xuICAgIGlmICghZm4oc29ydEZuKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIHNvcnRlZCA9IHRoaXMudG9BcnJheSgpLnNvcnQoc29ydEZuKTtcbiAgICByZXR1cm4gdGhpcy5zcGF3bihzb3J0ZWQpO1xuICB9LFxuICBzb3J0QnlaSW5kZXg6IGZ1bmN0aW9uIHNvcnRCeVpJbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0KHpJbmRleFNvcnQpO1xuICB9LFxuICB6RGVwdGg6IGZ1bmN0aW9uIHpEZXB0aCgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmICghZWxlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gLy8gbGV0IGN5ID0gZWxlLmN5KCk7XG5cblxuICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICB2YXIgZ3JvdXAgPSBfcC5ncm91cDtcblxuICAgIGlmIChncm91cCA9PT0gJ25vZGVzJykge1xuICAgICAgdmFyIGRlcHRoID0gX3AuZGF0YS5wYXJlbnQgPyBlbGUucGFyZW50cygpLnNpemUoKSA6IDA7XG5cbiAgICAgIGlmICghZWxlLmlzUGFyZW50KCkpIHtcbiAgICAgICAgcmV0dXJuIE1BWF9JTlQgLSAxOyAvLyBjaGlsZGxlc3Mgbm9kZXMgYWx3YXlzIG9uIHRvcFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVwdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzcmMgPSBfcC5zb3VyY2U7XG4gICAgICB2YXIgdGd0ID0gX3AudGFyZ2V0O1xuICAgICAgdmFyIHNyY0RlcHRoID0gc3JjLnpEZXB0aCgpO1xuICAgICAgdmFyIHRndERlcHRoID0gdGd0LnpEZXB0aCgpO1xuICAgICAgcmV0dXJuIE1hdGgubWF4KHNyY0RlcHRoLCB0Z3REZXB0aCwgMCk7IC8vIGRlcHRoIG9mIGRlZXBlc3QgcGFyZW50XG4gICAgfVxuICB9XG59O1xuZWxlc2ZuJHAuZWFjaCA9IGVsZXNmbiRwLmZvckVhY2g7XG5cbnZhciBkZWZpbmVTeW1ib2xJdGVyYXRvciA9IGZ1bmN0aW9uIGRlZmluZVN5bWJvbEl0ZXJhdG9yKCkge1xuICB2YXIgdHlwZW9mVW5kZWYgPSAgXCJ1bmRlZmluZWRcIiA7XG4gIHZhciBpc0l0ZXJhdG9yU3VwcG9ydGVkID0gKHR5cGVvZiBTeW1ib2wgPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZihTeW1ib2wpKSAhPSB0eXBlb2ZVbmRlZiAmJiBfdHlwZW9mKFN5bWJvbC5pdGVyYXRvcikgIT0gdHlwZW9mVW5kZWY7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICBpZiAoaXNJdGVyYXRvclN1cHBvcnRlZCkge1xuICAgIGVsZXNmbiRwW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgICB2YXIgZW50cnkgPSB7XG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIGRvbmU6IGZhbHNlXG4gICAgICB9O1xuICAgICAgdmFyIGkgPSAwO1xuICAgICAgdmFyIGxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgICAgcmV0dXJuIF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgaWYgKGkgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gX3RoaXNbaSsrXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBlbnRyeS5kb25lID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgIH1cbiAgICAgIH0sIFN5bWJvbC5pdGVyYXRvciwgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufTtcblxuZGVmaW5lU3ltYm9sSXRlcmF0b3IoKTtcblxudmFyIGdldExheW91dERpbWVuc2lvbk9wdGlvbnMgPSBkZWZhdWx0cyh7XG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2Vcbn0pO1xudmFyIGVsZXNmbiRxID0ge1xuICAvLyBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIG5vZGUgZGltZW5zaW9ucyB7IHgsIHkgfSBiYXNlZCBvbiBvcHRpb25zIGdpdmVuXG4gIGxheW91dERpbWVuc2lvbnM6IGZ1bmN0aW9uIGxheW91dERpbWVuc2lvbnMob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBnZXRMYXlvdXREaW1lbnNpb25PcHRpb25zKG9wdGlvbnMpO1xuICAgIHZhciBkaW1zO1xuXG4gICAgaWYgKCF0aGlzLnRha2VzVXBTcGFjZSgpKSB7XG4gICAgICBkaW1zID0ge1xuICAgICAgICB3OiAwLFxuICAgICAgICBoOiAwXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5ub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHMpIHtcbiAgICAgIHZhciBiYkRpbSA9IHRoaXMuYm91bmRpbmdCb3goKTtcbiAgICAgIGRpbXMgPSB7XG4gICAgICAgIHc6IGJiRGltLncsXG4gICAgICAgIGg6IGJiRGltLmhcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpbXMgPSB7XG4gICAgICAgIHc6IHRoaXMub3V0ZXJXaWR0aCgpLFxuICAgICAgICBoOiB0aGlzLm91dGVySGVpZ2h0KClcbiAgICAgIH07XG4gICAgfSAvLyBzYW5pdGlzZSB0aGUgZGltZW5zaW9ucyBmb3IgZXh0ZXJuYWwgbGF5b3V0cyAoYXZvaWQgZGl2aXNpb24gYnkgemVybylcblxuXG4gICAgaWYgKGRpbXMudyA9PT0gMCB8fCBkaW1zLmggPT09IDApIHtcbiAgICAgIGRpbXMudyA9IGRpbXMuaCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpbXM7XG4gIH0sXG4gIC8vIHVzaW5nIHN0YW5kYXJkIGxheW91dCBvcHRpb25zLCBhcHBseSBwb3NpdGlvbiBmdW5jdGlvbiAody8gb3Igdy9vIGFuaW1hdGlvbilcbiAgbGF5b3V0UG9zaXRpb25zOiBmdW5jdGlvbiBsYXlvdXRQb3NpdGlvbnMobGF5b3V0LCBvcHRpb25zLCBmbikge1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKS5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcbiAgICAgIHJldHVybiAhbi5pc1BhcmVudCgpO1xuICAgIH0pO1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICB2YXIgbGF5b3V0RWxlcyA9IG9wdGlvbnMuZWxlczsgLy8gbm9kZXMgJiBlZGdlc1xuXG4gICAgdmFyIGdldE1lbW9pemVLZXkgPSBmdW5jdGlvbiBnZXRNZW1vaXplS2V5KG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmlkKCk7XG4gICAgfTtcblxuICAgIHZhciBmbk1lbSA9IG1lbW9pemUoZm4sIGdldE1lbW9pemVLZXkpOyAvLyBtZW1vaXplZCB2ZXJzaW9uIG9mIHBvc2l0aW9uIGZ1bmN0aW9uXG5cbiAgICBsYXlvdXQuZW1pdCh7XG4gICAgICB0eXBlOiAnbGF5b3V0c3RhcnQnLFxuICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICB9KTtcbiAgICBsYXlvdXQuYW5pbWF0aW9ucyA9IFtdO1xuXG4gICAgdmFyIGNhbGN1bGF0ZVNwYWNpbmcgPSBmdW5jdGlvbiBjYWxjdWxhdGVTcGFjaW5nKHNwYWNpbmcsIG5vZGVzQmIsIHBvcykge1xuICAgICAgdmFyIGNlbnRlciA9IHtcbiAgICAgICAgeDogbm9kZXNCYi54MSArIG5vZGVzQmIudyAvIDIsXG4gICAgICAgIHk6IG5vZGVzQmIueTEgKyBub2Rlc0JiLmggLyAyXG4gICAgICB9O1xuICAgICAgdmFyIHNwYWNpbmdWZWN0b3IgPSB7XG4gICAgICAgIC8vIHNjYWxlIGZyb20gY2VudGVyIG9mIGJvdW5kaW5nIGJveCAobm90IG5lY2Vzc2FyaWx5IDAsMClcbiAgICAgICAgeDogKHBvcy54IC0gY2VudGVyLngpICogc3BhY2luZyxcbiAgICAgICAgeTogKHBvcy55IC0gY2VudGVyLnkpICogc3BhY2luZ1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGNlbnRlci54ICsgc3BhY2luZ1ZlY3Rvci54LFxuICAgICAgICB5OiBjZW50ZXIueSArIHNwYWNpbmdWZWN0b3IueVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdmFyIHVzZVNwYWNpbmdGYWN0b3IgPSBvcHRpb25zLnNwYWNpbmdGYWN0b3IgJiYgb3B0aW9ucy5zcGFjaW5nRmFjdG9yICE9PSAxO1xuXG4gICAgdmFyIHNwYWNpbmdCYiA9IGZ1bmN0aW9uIHNwYWNpbmdCYigpIHtcbiAgICAgIGlmICghdXNlU3BhY2luZ0ZhY3Rvcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIGJiID0gbWFrZUJvdW5kaW5nQm94KCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgdmFyIHBvcyA9IGZuTWVtKG5vZGUsIGkpO1xuICAgICAgICBleHBhbmRCb3VuZGluZ0JveEJ5UG9pbnQoYmIsIHBvcy54LCBwb3MueSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBiYjtcbiAgICB9O1xuXG4gICAgdmFyIGJiID0gc3BhY2luZ0JiKCk7XG4gICAgdmFyIGdldEZpbmFsUG9zID0gbWVtb2l6ZShmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgdmFyIG5ld1BvcyA9IGZuTWVtKG5vZGUsIGkpO1xuXG4gICAgICBpZiAodXNlU3BhY2luZ0ZhY3Rvcikge1xuICAgICAgICB2YXIgc3BhY2luZyA9IE1hdGguYWJzKG9wdGlvbnMuc3BhY2luZ0ZhY3Rvcik7XG4gICAgICAgIG5ld1BvcyA9IGNhbGN1bGF0ZVNwYWNpbmcoc3BhY2luZywgYmIsIG5ld1Bvcyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnRyYW5zZm9ybSAhPSBudWxsKSB7XG4gICAgICAgIG5ld1BvcyA9IG9wdGlvbnMudHJhbnNmb3JtKG5vZGUsIG5ld1Bvcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdQb3M7XG4gICAgfSwgZ2V0TWVtb2l6ZUtleSk7XG5cbiAgICBpZiAob3B0aW9ucy5hbmltYXRlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIHZhciBuZXdQb3MgPSBnZXRGaW5hbFBvcyhub2RlLCBpKTtcbiAgICAgICAgdmFyIGFuaW1hdGVOb2RlID0gb3B0aW9ucy5hbmltYXRlRmlsdGVyID09IG51bGwgfHwgb3B0aW9ucy5hbmltYXRlRmlsdGVyKG5vZGUsIGkpO1xuXG4gICAgICAgIGlmIChhbmltYXRlTm9kZSkge1xuICAgICAgICAgIHZhciBhbmkgPSBub2RlLmFuaW1hdGlvbih7XG4gICAgICAgICAgICBwb3NpdGlvbjogbmV3UG9zLFxuICAgICAgICAgICAgZHVyYXRpb246IG9wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgICAgICBlYXNpbmc6IG9wdGlvbnMuYW5pbWF0aW9uRWFzaW5nXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGF5b3V0LmFuaW1hdGlvbnMucHVzaChhbmkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUucG9zaXRpb24obmV3UG9zKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5maXQpIHtcbiAgICAgICAgdmFyIGZpdEFuaSA9IGN5LmFuaW1hdGlvbih7XG4gICAgICAgICAgZml0OiB7XG4gICAgICAgICAgICBib3VuZGluZ0JveDogbGF5b3V0RWxlcy5ib3VuZGluZ0JveEF0KGdldEZpbmFsUG9zKSxcbiAgICAgICAgICAgIHBhZGRpbmc6IG9wdGlvbnMucGFkZGluZ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZHVyYXRpb246IG9wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgICAgZWFzaW5nOiBvcHRpb25zLmFuaW1hdGlvbkVhc2luZ1xuICAgICAgICB9KTtcbiAgICAgICAgbGF5b3V0LmFuaW1hdGlvbnMucHVzaChmaXRBbmkpO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnpvb20gIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnBhbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciB6b29tUGFuQW5pID0gY3kuYW5pbWF0aW9uKHtcbiAgICAgICAgICB6b29tOiBvcHRpb25zLnpvb20sXG4gICAgICAgICAgcGFuOiBvcHRpb25zLnBhbixcbiAgICAgICAgICBkdXJhdGlvbjogb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgICBlYXNpbmc6IG9wdGlvbnMuYW5pbWF0aW9uRWFzaW5nXG4gICAgICAgIH0pO1xuICAgICAgICBsYXlvdXQuYW5pbWF0aW9ucy5wdXNoKHpvb21QYW5BbmkpO1xuICAgICAgfVxuXG4gICAgICBsYXlvdXQuYW5pbWF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChhbmkpIHtcbiAgICAgICAgcmV0dXJuIGFuaS5wbGF5KCk7XG4gICAgICB9KTtcbiAgICAgIGxheW91dC5vbmUoJ2xheW91dHJlYWR5Jywgb3B0aW9ucy5yZWFkeSk7XG4gICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgIHR5cGU6ICdsYXlvdXRyZWFkeScsXG4gICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICB9KTtcbiAgICAgIFByb21pc2UkMS5hbGwobGF5b3V0LmFuaW1hdGlvbnMubWFwKGZ1bmN0aW9uIChhbmkpIHtcbiAgICAgICAgcmV0dXJuIGFuaS5wcm9taXNlKCk7XG4gICAgICB9KSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxheW91dC5vbmUoJ2xheW91dHN0b3AnLCBvcHRpb25zLnN0b3ApO1xuICAgICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgICAgdHlwZTogJ2xheW91dHN0b3AnLFxuICAgICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVzLnBvc2l0aW9ucyhnZXRGaW5hbFBvcyk7XG5cbiAgICAgIGlmIChvcHRpb25zLmZpdCkge1xuICAgICAgICBjeS5maXQob3B0aW9ucy5lbGVzLCBvcHRpb25zLnBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy56b29tICE9IG51bGwpIHtcbiAgICAgICAgY3kuem9vbShvcHRpb25zLnpvb20pO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5wYW4pIHtcbiAgICAgICAgY3kucGFuKG9wdGlvbnMucGFuKTtcbiAgICAgIH1cblxuICAgICAgbGF5b3V0Lm9uZSgnbGF5b3V0cmVhZHknLCBvcHRpb25zLnJlYWR5KTtcbiAgICAgIGxheW91dC5lbWl0KHtcbiAgICAgICAgdHlwZTogJ2xheW91dHJlYWR5JyxcbiAgICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICAgIH0pO1xuICAgICAgbGF5b3V0Lm9uZSgnbGF5b3V0c3RvcCcsIG9wdGlvbnMuc3RvcCk7XG4gICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgIHR5cGU6ICdsYXlvdXRzdG9wJyxcbiAgICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBsYXlvdXQ6IGZ1bmN0aW9uIGxheW91dChvcHRpb25zKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHJldHVybiBjeS5tYWtlTGF5b3V0KGV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgZWxlczogdGhpc1xuICAgIH0pKTtcbiAgfVxufTsgLy8gYWxpYXNlczpcblxuZWxlc2ZuJHEuY3JlYXRlTGF5b3V0ID0gZWxlc2ZuJHEubWFrZUxheW91dCA9IGVsZXNmbiRxLmxheW91dDtcblxuZnVuY3Rpb24gc3R5bGVDYWNoZShrZXksIGZuLCBlbGUpIHtcbiAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICB2YXIgY2FjaGUgPSBfcC5zdHlsZUNhY2hlID0gX3Auc3R5bGVDYWNoZSB8fCBbXTtcbiAgdmFyIHZhbDtcblxuICBpZiAoKHZhbCA9IGNhY2hlW2tleV0pICE9IG51bGwpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9IGVsc2Uge1xuICAgIHZhbCA9IGNhY2hlW2tleV0gPSBmbihlbGUpO1xuICAgIHJldHVybiB2YWw7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FjaGVTdHlsZUZ1bmN0aW9uKGtleSwgZm4pIHtcbiAga2V5ID0gaGFzaFN0cmluZyhrZXkpO1xuICByZXR1cm4gZnVuY3Rpb24gY2FjaGVkU3R5bGVGdW5jdGlvbihlbGUpIHtcbiAgICByZXR1cm4gc3R5bGVDYWNoZShrZXksIGZuLCBlbGUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oa2V5LCBmbikge1xuICBrZXkgPSBoYXNoU3RyaW5nKGtleSk7XG5cbiAgdmFyIHNlbGZGbiA9IGZ1bmN0aW9uIHNlbGZGbihlbGUpIHtcbiAgICByZXR1cm4gZm4uY2FsbChlbGUpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiBjYWNoZWRQcm90b3R5cGVTdHlsZUZ1bmN0aW9uKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgcmV0dXJuIHN0eWxlQ2FjaGUoa2V5LCBzZWxmRm4sIGVsZSk7XG4gICAgfVxuICB9O1xufVxuXG52YXIgZWxlc2ZuJHIgPSB7XG4gIHJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZTogZnVuY3Rpb24gcmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKHVzZUNhY2hlKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHZhciByZW5kZXJlciA9IGN5LnJlbmRlcmVyKCk7XG4gICAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5LnN0eWxlRW5hYmxlZCgpO1xuXG4gICAgaWYgKHJlbmRlcmVyICYmIHN0eWxlRW5hYmxlZCkge1xuICAgICAgcmVuZGVyZXIucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKHRoaXMsIHVzZUNhY2hlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZGlydHlTdHlsZUNhY2hlOiBmdW5jdGlvbiBkaXJ0eVN0eWxlQ2FjaGUoKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgdmFyIGRpcnR5ID0gZnVuY3Rpb24gZGlydHkoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLl9wcml2YXRlLnN0eWxlQ2FjaGUgPSBudWxsO1xuICAgIH07XG5cbiAgICBpZiAoY3kuaGFzQ29tcG91bmROb2RlcygpKSB7XG4gICAgICB2YXIgZWxlcztcbiAgICAgIGVsZXMgPSB0aGlzLnNwYXduU2VsZigpLm1lcmdlKHRoaXMuZGVzY2VuZGFudHMoKSkubWVyZ2UodGhpcy5wYXJlbnRzKCkpO1xuICAgICAgZWxlcy5tZXJnZShlbGVzLmNvbm5lY3RlZEVkZ2VzKCkpO1xuICAgICAgZWxlcy5mb3JFYWNoKGRpcnR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgZGlydHkoZWxlKTtcbiAgICAgICAgZWxlLmNvbm5lY3RlZEVkZ2VzKCkuZm9yRWFjaChkaXJ0eSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgLy8gZnVsbHkgdXBkYXRlcyAocmVjYWxjdWxhdGVzKSB0aGUgc3R5bGUgZm9yIHRoZSBlbGVtZW50c1xuICB1cGRhdGVTdHlsZTogZnVuY3Rpb24gdXBkYXRlU3R5bGUobm90aWZ5UmVuZGVyZXIpIHtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuXG4gICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKGN5LmJhdGNoaW5nKCkpIHtcbiAgICAgIHZhciBiRWxlcyA9IGN5Ll9wcml2YXRlLmJhdGNoU3R5bGVFbGVzO1xuICAgICAgYkVsZXMubWVyZ2UodGhpcyk7XG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmcgYW5kIGV4aXQgZWFybHkgd2hlbiBiYXRjaGluZ1xuICAgIH1cblxuICAgIHZhciBoYXNDb21wb3VuZHMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gICAgdmFyIHVwZGF0ZWRFbGVzID0gdGhpcztcbiAgICBub3RpZnlSZW5kZXJlciA9IG5vdGlmeVJlbmRlcmVyIHx8IG5vdGlmeVJlbmRlcmVyID09PSB1bmRlZmluZWQgPyB0cnVlIDogZmFsc2U7XG5cbiAgICBpZiAoaGFzQ29tcG91bmRzKSB7XG4gICAgICAvLyB0aGVuIGFkZCBldmVyeXRoaW5nIHVwIGFuZCBkb3duIGZvciBjb21wb3VuZCBzZWxlY3RvciBjaGVja3NcbiAgICAgIHVwZGF0ZWRFbGVzID0gdGhpcy5zcGF3blNlbGYoKS5tZXJnZSh0aGlzLmRlc2NlbmRhbnRzKCkpLm1lcmdlKHRoaXMucGFyZW50cygpKTtcbiAgICB9IC8vIGxldCBjaGFuZ2VkRWxlcyA9IHN0eWxlLmFwcGx5KCB1cGRhdGVkRWxlcyApO1xuXG5cbiAgICB2YXIgY2hhbmdlZEVsZXMgPSB1cGRhdGVkRWxlcztcblxuICAgIGlmIChub3RpZnlSZW5kZXJlcikge1xuICAgICAgY2hhbmdlZEVsZXMuZW1pdEFuZE5vdGlmeSgnc3R5bGUnKTsgLy8gbGV0IHJlbmRlcmVyIGtub3cgd2UgY2hhbmdlZCBzdHlsZVxuICAgIH0gZWxzZSB7XG4gICAgICBjaGFuZ2VkRWxlcy5lbWl0KCdzdHlsZScpOyAvLyBqdXN0IGZpcmUgdGhlIGV2ZW50XG4gICAgfVxuXG4gICAgdXBkYXRlZEVsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLl9wcml2YXRlLnN0eWxlRGlydHkgPSB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICAvLyBwcml2YXRlOiBjbGVhcnMgZGlydHkgZmxhZyBhbmQgcmVjYWxjdWxhdGVzIHN0eWxlXG4gIGNsZWFuU3R5bGU6IGZ1bmN0aW9uIGNsZWFuU3R5bGUoKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG5cbiAgICAgIGlmIChlbGUuX3ByaXZhdGUuc3R5bGVEaXJ0eSkge1xuICAgICAgICAvLyBuLmIuIHRoaXMgZmxhZyBzaG91bGQgYmUgc2V0IGJlZm9yZSBhcHBseSgpIHRvIGF2b2lkIHBvdGVudGlhbCBpbmZpbml0ZSByZWN1cnNpb25cbiAgICAgICAgZWxlLl9wcml2YXRlLnN0eWxlRGlydHkgPSBmYWxzZTtcbiAgICAgICAgY3kuc3R5bGUoKS5hcHBseShlbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgLy8gZ2V0IHRoZSBpbnRlcm5hbCBwYXJzZWQgc3R5bGUgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIHByb3BlcnR5XG4gIHBhcnNlZFN0eWxlOiBmdW5jdGlvbiBwYXJzZWRTdHlsZShwcm9wZXJ0eSkge1xuICAgIHZhciBpbmNsdWRlTm9uRGVmYXVsdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgY3kgPSBlbGUuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICB0aGlzLmNsZWFuU3R5bGUoKTtcbiAgICAgIHZhciBvdmVycmlkZGVuU3R5bGUgPSBlbGUuX3ByaXZhdGUuc3R5bGVbcHJvcGVydHldO1xuXG4gICAgICBpZiAob3ZlcnJpZGRlblN0eWxlICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRkZW5TdHlsZTtcbiAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZU5vbkRlZmF1bHQpIHtcbiAgICAgICAgcmV0dXJuIGN5LnN0eWxlKCkuZ2V0RGVmYXVsdFByb3BlcnR5KHByb3BlcnR5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbnVtZXJpY1N0eWxlOiBmdW5jdGlvbiBudW1lcmljU3R5bGUocHJvcGVydHkpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmICghZWxlLmN5KCkuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICB2YXIgcHN0eWxlID0gZWxlLnBzdHlsZShwcm9wZXJ0eSk7XG4gICAgICByZXR1cm4gcHN0eWxlLnBmVmFsdWUgIT09IHVuZGVmaW5lZCA/IHBzdHlsZS5wZlZhbHVlIDogcHN0eWxlLnZhbHVlO1xuICAgIH1cbiAgfSxcbiAgbnVtZXJpY1N0eWxlVW5pdHM6IGZ1bmN0aW9uIG51bWVyaWNTdHlsZVVuaXRzKHByb3BlcnR5KSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoIWVsZS5jeSgpLnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5wc3R5bGUocHJvcGVydHkpLnVuaXRzO1xuICAgIH1cbiAgfSxcbiAgLy8gZ2V0IHRoZSBzcGVjaWZpZWQgY3NzIHByb3BlcnR5IGFzIGEgcmVuZGVyZWQgdmFsdWUgKGkuZS4gb24tc2NyZWVuIHZhbHVlKVxuICAvLyBvciBnZXQgdGhlIHdob2xlIHJlbmRlcmVkIHN0eWxlIGlmIG5vIHByb3BlcnR5IHNwZWNpZmllZCAoTkIgZG9lc24ndCBhbGxvdyBzZXR0aW5nKVxuICByZW5kZXJlZFN0eWxlOiBmdW5jdGlvbiByZW5kZXJlZFN0eWxlKHByb3BlcnR5KSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gY3kuc3R5bGUoKS5nZXRSZW5kZXJlZFN0eWxlKGVsZSwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSxcbiAgLy8gcmVhZCB0aGUgY2FsY3VsYXRlZCBjc3Mgc3R5bGUgb2YgdGhlIGVsZW1lbnQgb3Igb3ZlcnJpZGUgdGhlIHN0eWxlICh2aWEgYSBieXBhc3MpXG4gIHN0eWxlOiBmdW5jdGlvbiBzdHlsZShuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHZhciB1cGRhdGVUcmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgIHZhciBzdHlsZSA9IGN5LnN0eWxlKCk7XG5cbiAgICBpZiAocGxhaW5PYmplY3QobmFtZSkpIHtcbiAgICAgIC8vIHRoZW4gZXh0ZW5kIHRoZSBieXBhc3NcbiAgICAgIHZhciBwcm9wcyA9IG5hbWU7XG4gICAgICBzdHlsZS5hcHBseUJ5cGFzcyh0aGlzLCBwcm9wcywgdXBkYXRlVHJhbnNpdGlvbnMpO1xuICAgICAgdGhpcy5lbWl0QW5kTm90aWZ5KCdzdHlsZScpOyAvLyBsZXQgdGhlIHJlbmRlcmVyIGtub3cgd2UndmUgdXBkYXRlZCBzdHlsZVxuICAgIH0gZWxzZSBpZiAoc3RyaW5nKG5hbWUpKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyB0aGVuIGdldCB0aGUgcHJvcGVydHkgZnJvbSB0aGUgc3R5bGVcbiAgICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICAgICAgaWYgKGVsZSkge1xuICAgICAgICAgIHJldHVybiBzdHlsZS5nZXRTdHlsZVByb3BlcnR5VmFsdWUoZWxlLCBuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBlbXB0eSBjb2xsZWN0aW9uID0+IGNhbid0IGdldCBhbnkgdmFsdWVcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoZW4gc2V0IHRoZSBieXBhc3Mgd2l0aCB0aGUgcHJvcGVydHkgdmFsdWVcbiAgICAgICAgc3R5bGUuYXBwbHlCeXBhc3ModGhpcywgbmFtZSwgdmFsdWUsIHVwZGF0ZVRyYW5zaXRpb25zKTtcbiAgICAgICAgdGhpcy5lbWl0QW5kTm90aWZ5KCdzdHlsZScpOyAvLyBsZXQgdGhlIHJlbmRlcmVyIGtub3cgd2UndmUgdXBkYXRlZCBzdHlsZVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgX2VsZSA9IHRoaXNbMF07XG5cbiAgICAgIGlmIChfZWxlKSB7XG4gICAgICAgIHJldHVybiBzdHlsZS5nZXRSYXdTdHlsZShfZWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVtcHR5IGNvbGxlY3Rpb24gPT4gY2FuJ3QgZ2V0IGFueSB2YWx1ZVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHJlbW92ZVN0eWxlOiBmdW5jdGlvbiByZW1vdmVTdHlsZShuYW1lcykge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHZhciB1cGRhdGVUcmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgIHZhciBzdHlsZSA9IGN5LnN0eWxlKCk7XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgaWYgKG5hbWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgc3R5bGUucmVtb3ZlQWxsQnlwYXNzZXMoZWxlLCB1cGRhdGVUcmFuc2l0aW9ucyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG5hbWVzID0gbmFtZXMuc3BsaXQoL1xccysvKTtcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGVsZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBfZWxlMiA9IGVsZXNbX2ldO1xuICAgICAgICBzdHlsZS5yZW1vdmVCeXBhc3NlcyhfZWxlMiwgbmFtZXMsIHVwZGF0ZVRyYW5zaXRpb25zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVtaXRBbmROb3RpZnkoJ3N0eWxlJyk7IC8vIGxldCB0aGUgcmVuZGVyZXIga25vdyB3ZSd2ZSB1cGRhdGVkIHN0eWxlXG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgc2hvdzogZnVuY3Rpb24gc2hvdygpIHtcbiAgICB0aGlzLmNzcygnZGlzcGxheScsICdlbGVtZW50Jyk7XG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIGhpZGU6IGZ1bmN0aW9uIGhpZGUoKSB7XG4gICAgdGhpcy5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBlZmZlY3RpdmVPcGFjaXR5OiBmdW5jdGlvbiBlZmZlY3RpdmVPcGFjaXR5KCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHZhciBoYXNDb21wb3VuZE5vZGVzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgdmFyIHBhcmVudE9wYWNpdHkgPSBlbGUucHN0eWxlKCdvcGFjaXR5JykudmFsdWU7XG5cbiAgICAgIGlmICghaGFzQ29tcG91bmROb2Rlcykge1xuICAgICAgICByZXR1cm4gcGFyZW50T3BhY2l0eTtcbiAgICAgIH1cblxuICAgICAgdmFyIHBhcmVudHMgPSAhX3AuZGF0YS5wYXJlbnQgPyBudWxsIDogZWxlLnBhcmVudHMoKTtcblxuICAgICAgaWYgKHBhcmVudHMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJlbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHBhcmVudCA9IHBhcmVudHNbaV07XG4gICAgICAgICAgdmFyIG9wYWNpdHkgPSBwYXJlbnQucHN0eWxlKCdvcGFjaXR5JykudmFsdWU7XG4gICAgICAgICAgcGFyZW50T3BhY2l0eSA9IG9wYWNpdHkgKiBwYXJlbnRPcGFjaXR5O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJlbnRPcGFjaXR5O1xuICAgIH1cbiAgfSxcbiAgdHJhbnNwYXJlbnQ6IGZ1bmN0aW9uIHRyYW5zcGFyZW50KCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgaGFzQ29tcG91bmROb2RlcyA9IGVsZS5jeSgpLmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIGlmICghaGFzQ29tcG91bmROb2Rlcykge1xuICAgICAgICByZXR1cm4gZWxlLnBzdHlsZSgnb3BhY2l0eScpLnZhbHVlID09PSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGVsZS5lZmZlY3RpdmVPcGFjaXR5KCkgPT09IDA7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBiYWNrZ3JvdW5kaW5nOiBmdW5jdGlvbiBiYWNrZ3JvdW5kaW5nKCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICByZXR1cm4gZWxlLl9wcml2YXRlLmJhY2tncm91bmRpbmcgPyB0cnVlIDogZmFsc2U7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNoZWNrQ29tcG91bmQoZWxlLCBwYXJlbnRPaykge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBwYXJlbnRzID0gX3AuZGF0YS5wYXJlbnQgPyBlbGUucGFyZW50cygpIDogbnVsbDtcblxuICBpZiAocGFyZW50cykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBhcmVudCA9IHBhcmVudHNbaV07XG5cbiAgICAgIGlmICghcGFyZW50T2socGFyZW50KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGRlZmluZURlcml2ZWRTdGF0ZUZ1bmN0aW9uKHNwZWNzKSB7XG4gIHZhciBvayA9IHNwZWNzLm9rO1xuICB2YXIgZWRnZU9rVmlhTm9kZSA9IHNwZWNzLmVkZ2VPa1ZpYU5vZGUgfHwgc3BlY3Mub2s7XG4gIHZhciBwYXJlbnRPayA9IHNwZWNzLnBhcmVudE9rIHx8IHNwZWNzLm9rO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHZhciBoYXNDb21wb3VuZE5vZGVzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuXG4gICAgICBpZiAoIW9rKGVsZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgIHJldHVybiAhaGFzQ29tcG91bmROb2RlcyB8fCBjaGVja0NvbXBvdW5kKGVsZSwgcGFyZW50T2spO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNyYyA9IF9wLnNvdXJjZTtcbiAgICAgICAgdmFyIHRndCA9IF9wLnRhcmdldDtcbiAgICAgICAgcmV0dXJuIGVkZ2VPa1ZpYU5vZGUoc3JjKSAmJiAoIWhhc0NvbXBvdW5kTm9kZXMgfHwgY2hlY2tDb21wb3VuZChzcmMsIGVkZ2VPa1ZpYU5vZGUpKSAmJiAoc3JjID09PSB0Z3QgfHwgZWRnZU9rVmlhTm9kZSh0Z3QpICYmICghaGFzQ29tcG91bmROb2RlcyB8fCBjaGVja0NvbXBvdW5kKHRndCwgZWRnZU9rVmlhTm9kZSkpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbnZhciBlbGVUYWtlc1VwU3BhY2UgPSBjYWNoZVN0eWxlRnVuY3Rpb24oJ2VsZVRha2VzVXBTcGFjZScsIGZ1bmN0aW9uIChlbGUpIHtcbiAgcmV0dXJuIGVsZS5wc3R5bGUoJ2Rpc3BsYXknKS52YWx1ZSA9PT0gJ2VsZW1lbnQnICYmIGVsZS53aWR0aCgpICE9PSAwICYmIChlbGUuaXNOb2RlKCkgPyBlbGUuaGVpZ2h0KCkgIT09IDAgOiB0cnVlKTtcbn0pO1xuZWxlc2ZuJHIudGFrZXNVcFNwYWNlID0gY2FjaGVQcm90b3R5cGVTdHlsZUZ1bmN0aW9uKCd0YWtlc1VwU3BhY2UnLCBkZWZpbmVEZXJpdmVkU3RhdGVGdW5jdGlvbih7XG4gIG9rOiBlbGVUYWtlc1VwU3BhY2Vcbn0pKTtcbnZhciBlbGVJbnRlcmFjdGl2ZSA9IGNhY2hlU3R5bGVGdW5jdGlvbignZWxlSW50ZXJhY3RpdmUnLCBmdW5jdGlvbiAoZWxlKSB7XG4gIHJldHVybiBlbGUucHN0eWxlKCdldmVudHMnKS52YWx1ZSA9PT0gJ3llcycgJiYgZWxlLnBzdHlsZSgndmlzaWJpbGl0eScpLnZhbHVlID09PSAndmlzaWJsZScgJiYgZWxlVGFrZXNVcFNwYWNlKGVsZSk7XG59KTtcbnZhciBwYXJlbnRJbnRlcmFjdGl2ZSA9IGNhY2hlU3R5bGVGdW5jdGlvbigncGFyZW50SW50ZXJhY3RpdmUnLCBmdW5jdGlvbiAocGFyZW50KSB7XG4gIHJldHVybiBwYXJlbnQucHN0eWxlKCd2aXNpYmlsaXR5JykudmFsdWUgPT09ICd2aXNpYmxlJyAmJiBlbGVUYWtlc1VwU3BhY2UocGFyZW50KTtcbn0pO1xuZWxlc2ZuJHIuaW50ZXJhY3RpdmUgPSBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oJ2ludGVyYWN0aXZlJywgZGVmaW5lRGVyaXZlZFN0YXRlRnVuY3Rpb24oe1xuICBvazogZWxlSW50ZXJhY3RpdmUsXG4gIHBhcmVudE9rOiBwYXJlbnRJbnRlcmFjdGl2ZSxcbiAgZWRnZU9rVmlhTm9kZTogZWxlVGFrZXNVcFNwYWNlXG59KSk7XG5cbmVsZXNmbiRyLm5vbmludGVyYWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlID0gdGhpc1swXTtcblxuICBpZiAoZWxlKSB7XG4gICAgcmV0dXJuICFlbGUuaW50ZXJhY3RpdmUoKTtcbiAgfVxufTtcblxudmFyIGVsZVZpc2libGUgPSBjYWNoZVN0eWxlRnVuY3Rpb24oJ2VsZVZpc2libGUnLCBmdW5jdGlvbiAoZWxlKSB7XG4gIHJldHVybiBlbGUucHN0eWxlKCd2aXNpYmlsaXR5JykudmFsdWUgPT09ICd2aXNpYmxlJyAmJiBlbGUucHN0eWxlKCdvcGFjaXR5JykucGZWYWx1ZSAhPT0gMCAmJiBlbGVUYWtlc1VwU3BhY2UoZWxlKTtcbn0pO1xudmFyIGVkZ2VWaXNpYmxlVmlhTm9kZSA9IGVsZVRha2VzVXBTcGFjZTtcbmVsZXNmbiRyLnZpc2libGUgPSBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oJ3Zpc2libGUnLCBkZWZpbmVEZXJpdmVkU3RhdGVGdW5jdGlvbih7XG4gIG9rOiBlbGVWaXNpYmxlLFxuICBlZGdlT2tWaWFOb2RlOiBlZGdlVmlzaWJsZVZpYU5vZGVcbn0pKTtcblxuZWxlc2ZuJHIuaGlkZGVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlID0gdGhpc1swXTtcblxuICBpZiAoZWxlKSB7XG4gICAgcmV0dXJuICFlbGUudmlzaWJsZSgpO1xuICB9XG59O1xuXG5lbGVzZm4kci5pc0J1bmRsZWRCZXppZXIgPSBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oJ2lzQnVuZGxlZEJlemllcicsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLmN5KCkuc3R5bGVFbmFibGVkKCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIXRoaXMucmVtb3ZlZCgpICYmIHRoaXMucHN0eWxlKCdjdXJ2ZS1zdHlsZScpLnZhbHVlID09PSAnYmV6aWVyJyAmJiB0aGlzLnRha2VzVXBTcGFjZSgpO1xufSk7XG5lbGVzZm4kci5ieXBhc3MgPSBlbGVzZm4kci5jc3MgPSBlbGVzZm4kci5zdHlsZTtcbmVsZXNmbiRyLnJlbmRlcmVkQ3NzID0gZWxlc2ZuJHIucmVuZGVyZWRTdHlsZTtcbmVsZXNmbiRyLnJlbW92ZUJ5cGFzcyA9IGVsZXNmbiRyLnJlbW92ZUNzcyA9IGVsZXNmbiRyLnJlbW92ZVN0eWxlO1xuZWxlc2ZuJHIucHN0eWxlID0gZWxlc2ZuJHIucGFyc2VkU3R5bGU7XG5cbnZhciBlbGVzZm4kcyA9IHt9O1xuXG5mdW5jdGlvbiBkZWZpbmVTd2l0Y2hGdW5jdGlvbihwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgY2hhbmdlZEVsZXMgPSBbXTsgLy8gZS5nLiBjeS5ub2RlcygpLnNlbGVjdCggZGF0YSwgaGFuZGxlciApXG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHZhciBkYXRhID0gYXJnc1swXTtcbiAgICAgIHZhciBoYW5kbGVyID0gYXJnc1sxXTtcbiAgICAgIHRoaXMub24ocGFyYW1zLmV2ZW50LCBkYXRhLCBoYW5kbGVyKTtcbiAgICB9IC8vIGUuZy4gY3kubm9kZXMoKS5zZWxlY3QoIGhhbmRsZXIgKVxuICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIGZuKGFyZ3NbMF0pKSB7XG4gICAgICAgIHZhciBfaGFuZGxlciA9IGFyZ3NbMF07XG4gICAgICAgIHRoaXMub24ocGFyYW1zLmV2ZW50LCBfaGFuZGxlcik7XG4gICAgICB9IC8vIGUuZy4gY3kubm9kZXMoKS5zZWxlY3QoKVxuICAgICAgLy8gZS5nLiAocHJpdmF0ZSkgY3kubm9kZXMoKS5zZWxlY3QoWyd0YXBzZWxlY3QnXSlcbiAgICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAwIHx8IGFyZ3MubGVuZ3RoID09PSAxICYmIGFycmF5KGFyZ3NbMF0pKSB7XG4gICAgICAgICAgdmFyIGFkZGxFdmVudHMgPSBhcmdzLmxlbmd0aCA9PT0gMSA/IGFyZ3NbMF0gOiBudWxsO1xuXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgICAgICAgIHZhciBhYmxlID0gIXBhcmFtcy5hYmxlRmllbGQgfHwgZWxlLl9wcml2YXRlW3BhcmFtcy5hYmxlRmllbGRdO1xuICAgICAgICAgICAgdmFyIGNoYW5nZWQgPSBlbGUuX3ByaXZhdGVbcGFyYW1zLmZpZWxkXSAhPSBwYXJhbXMudmFsdWU7XG5cbiAgICAgICAgICAgIGlmIChwYXJhbXMub3ZlcnJpZGVBYmxlKSB7XG4gICAgICAgICAgICAgIHZhciBvdmVycmlkZUFibGUgPSBwYXJhbXMub3ZlcnJpZGVBYmxlKGVsZSk7XG5cbiAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlQWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYWJsZSA9IG92ZXJyaWRlQWJsZTtcblxuICAgICAgICAgICAgICAgIGlmICghb3ZlcnJpZGVBYmxlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgICAgICB9IC8vIHRvIHNhdmUgY3ljbGVzIGFzc3VtZSBub3QgYWJsZSBmb3IgYWxsIG9uIG92ZXJyaWRlXG5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYWJsZSkge1xuICAgICAgICAgICAgICBlbGUuX3ByaXZhdGVbcGFyYW1zLmZpZWxkXSA9IHBhcmFtcy52YWx1ZTtcblxuICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIGNoYW5nZWRFbGVzLnB1c2goZWxlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBjaGFuZ2VkQ29sbCA9IHRoaXMuc3Bhd24oY2hhbmdlZEVsZXMpO1xuICAgICAgICAgIGNoYW5nZWRDb2xsLnVwZGF0ZVN0eWxlKCk7IC8vIGNoYW5nZSBvZiBzdGF0ZSA9PiBwb3NzaWJsZSBjaGFuZ2Ugb2Ygc3R5bGVcblxuICAgICAgICAgIGNoYW5nZWRDb2xsLmVtaXQocGFyYW1zLmV2ZW50KTtcblxuICAgICAgICAgIGlmIChhZGRsRXZlbnRzKSB7XG4gICAgICAgICAgICBjaGFuZ2VkQ29sbC5lbWl0KGFkZGxFdmVudHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlZmluZVN3aXRjaFNldChwYXJhbXMpIHtcbiAgZWxlc2ZuJHNbcGFyYW1zLmZpZWxkXSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIGlmIChwYXJhbXMub3ZlcnJpZGVGaWVsZCkge1xuICAgICAgICB2YXIgdmFsID0gcGFyYW1zLm92ZXJyaWRlRmllbGQoZWxlKTtcblxuICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbGUuX3ByaXZhdGVbcGFyYW1zLmZpZWxkXTtcbiAgICB9XG4gIH07XG5cbiAgZWxlc2ZuJHNbcGFyYW1zLm9uXSA9IGRlZmluZVN3aXRjaEZ1bmN0aW9uKHtcbiAgICBldmVudDogcGFyYW1zLm9uLFxuICAgIGZpZWxkOiBwYXJhbXMuZmllbGQsXG4gICAgYWJsZUZpZWxkOiBwYXJhbXMuYWJsZUZpZWxkLFxuICAgIG92ZXJyaWRlQWJsZTogcGFyYW1zLm92ZXJyaWRlQWJsZSxcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbiAgZWxlc2ZuJHNbcGFyYW1zLm9mZl0gPSBkZWZpbmVTd2l0Y2hGdW5jdGlvbih7XG4gICAgZXZlbnQ6IHBhcmFtcy5vZmYsXG4gICAgZmllbGQ6IHBhcmFtcy5maWVsZCxcbiAgICBhYmxlRmllbGQ6IHBhcmFtcy5hYmxlRmllbGQsXG4gICAgb3ZlcnJpZGVBYmxlOiBwYXJhbXMub3ZlcnJpZGVBYmxlLFxuICAgIHZhbHVlOiBmYWxzZVxuICB9KTtcbn1cblxuZGVmaW5lU3dpdGNoU2V0KHtcbiAgZmllbGQ6ICdsb2NrZWQnLFxuICBvdmVycmlkZUZpZWxkOiBmdW5jdGlvbiBvdmVycmlkZUZpZWxkKGVsZSkge1xuICAgIHJldHVybiBlbGUuY3koKS5hdXRvbG9jaygpID8gdHJ1ZSA6IHVuZGVmaW5lZDtcbiAgfSxcbiAgb246ICdsb2NrJyxcbiAgb2ZmOiAndW5sb2NrJ1xufSk7XG5kZWZpbmVTd2l0Y2hTZXQoe1xuICBmaWVsZDogJ2dyYWJiYWJsZScsXG4gIG92ZXJyaWRlRmllbGQ6IGZ1bmN0aW9uIG92ZXJyaWRlRmllbGQoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5jeSgpLmF1dG91bmdyYWJpZnkoKSB8fCBlbGUucGFubmFibGUoKSA/IGZhbHNlIDogdW5kZWZpbmVkO1xuICB9LFxuICBvbjogJ2dyYWJpZnknLFxuICBvZmY6ICd1bmdyYWJpZnknXG59KTtcbmRlZmluZVN3aXRjaFNldCh7XG4gIGZpZWxkOiAnc2VsZWN0ZWQnLFxuICBhYmxlRmllbGQ6ICdzZWxlY3RhYmxlJyxcbiAgb3ZlcnJpZGVBYmxlOiBmdW5jdGlvbiBvdmVycmlkZUFibGUoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5jeSgpLmF1dG91bnNlbGVjdGlmeSgpID8gZmFsc2UgOiB1bmRlZmluZWQ7XG4gIH0sXG4gIG9uOiAnc2VsZWN0JyxcbiAgb2ZmOiAndW5zZWxlY3QnXG59KTtcbmRlZmluZVN3aXRjaFNldCh7XG4gIGZpZWxkOiAnc2VsZWN0YWJsZScsXG4gIG92ZXJyaWRlRmllbGQ6IGZ1bmN0aW9uIG92ZXJyaWRlRmllbGQoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5jeSgpLmF1dG91bnNlbGVjdGlmeSgpID8gZmFsc2UgOiB1bmRlZmluZWQ7XG4gIH0sXG4gIG9uOiAnc2VsZWN0aWZ5JyxcbiAgb2ZmOiAndW5zZWxlY3RpZnknXG59KTtcbmVsZXNmbiRzLmRlc2VsZWN0ID0gZWxlc2ZuJHMudW5zZWxlY3Q7XG5cbmVsZXNmbiRzLmdyYWJiZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gIGlmIChlbGUpIHtcbiAgICByZXR1cm4gZWxlLl9wcml2YXRlLmdyYWJiZWQ7XG4gIH1cbn07XG5cbmRlZmluZVN3aXRjaFNldCh7XG4gIGZpZWxkOiAnYWN0aXZlJyxcbiAgb246ICdhY3RpdmF0ZScsXG4gIG9mZjogJ3VuYWN0aXZhdGUnXG59KTtcbmRlZmluZVN3aXRjaFNldCh7XG4gIGZpZWxkOiAncGFubmFibGUnLFxuICBvbjogJ3BhbmlmeScsXG4gIG9mZjogJ3VucGFuaWZ5J1xufSk7XG5cbmVsZXNmbiRzLmluYWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlID0gdGhpc1swXTtcblxuICBpZiAoZWxlKSB7XG4gICAgcmV0dXJuICFlbGUuX3ByaXZhdGUuYWN0aXZlO1xuICB9XG59O1xuXG52YXIgZWxlc2ZuJHQgPSB7fTsgLy8gREFHIGZ1bmN0aW9uc1xuLy8vLy8vLy8vLy8vLy8vL1xuXG52YXIgZGVmaW5lRGFnRXh0cmVtaXR5ID0gZnVuY3Rpb24gZGVmaW5lRGFnRXh0cmVtaXR5KHBhcmFtcykge1xuICByZXR1cm4gZnVuY3Rpb24gZGFnRXh0cmVtaXR5SW1wbChzZWxlY3Rvcikge1xuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIgcmV0ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuXG4gICAgICBpZiAoIWVsZS5pc05vZGUoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRpc3F1YWxpZmllZCA9IGZhbHNlO1xuICAgICAgdmFyIGVkZ2VzID0gZWxlLmNvbm5lY3RlZEVkZ2VzKCk7XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWRnZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tqXTtcbiAgICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKCk7XG4gICAgICAgIHZhciB0Z3QgPSBlZGdlLnRhcmdldCgpO1xuXG4gICAgICAgIGlmIChwYXJhbXMubm9JbmNvbWluZ0VkZ2VzICYmIHRndCA9PT0gZWxlICYmIHNyYyAhPT0gZWxlIHx8IHBhcmFtcy5ub091dGdvaW5nRWRnZXMgJiYgc3JjID09PSBlbGUgJiYgdGd0ICE9PSBlbGUpIHtcbiAgICAgICAgICBkaXNxdWFsaWZpZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghZGlzcXVhbGlmaWVkKSB7XG4gICAgICAgIHJldC5wdXNoKGVsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24ocmV0LCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9O1xufTtcblxudmFyIGRlZmluZURhZ09uZUhvcCA9IGZ1bmN0aW9uIGRlZmluZURhZ09uZUhvcChwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIgb0VsZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG5cbiAgICAgIGlmICghZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgZWRnZXMgPSBlbGUuY29ubmVjdGVkRWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlZGdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzW2pdO1xuICAgICAgICB2YXIgc3JjID0gZWRnZS5zb3VyY2UoKTtcbiAgICAgICAgdmFyIHRndCA9IGVkZ2UudGFyZ2V0KCk7XG5cbiAgICAgICAgaWYgKHBhcmFtcy5vdXRnb2luZyAmJiBzcmMgPT09IGVsZSkge1xuICAgICAgICAgIG9FbGVzLnB1c2goZWRnZSk7XG4gICAgICAgICAgb0VsZXMucHVzaCh0Z3QpO1xuICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcy5pbmNvbWluZyAmJiB0Z3QgPT09IGVsZSkge1xuICAgICAgICAgIG9FbGVzLnB1c2goZWRnZSk7XG4gICAgICAgICAgb0VsZXMucHVzaChzcmMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24ob0VsZXMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH07XG59O1xuXG52YXIgZGVmaW5lRGFnQWxsSG9wcyA9IGZ1bmN0aW9uIGRlZmluZURhZ0FsbEhvcHMocGFyYW1zKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICB2YXIgZWxlcyA9IHRoaXM7XG4gICAgdmFyIHNFbGVzID0gW107XG4gICAgdmFyIHNFbGVzSWRzID0ge307XG5cbiAgICBmb3IgKDs7KSB7XG4gICAgICB2YXIgbmV4dCA9IHBhcmFtcy5vdXRnb2luZyA/IGVsZXMub3V0Z29lcnMoKSA6IGVsZXMuaW5jb21lcnMoKTtcblxuICAgICAgaWYgKG5leHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSAvLyBkb25lIGlmIG5vbmUgbGVmdFxuXG5cbiAgICAgIHZhciBuZXdOZXh0ID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbiA9IG5leHRbaV07XG4gICAgICAgIHZhciBuaWQgPSBuLmlkKCk7XG5cbiAgICAgICAgaWYgKCFzRWxlc0lkc1tuaWRdKSB7XG4gICAgICAgICAgc0VsZXNJZHNbbmlkXSA9IHRydWU7XG4gICAgICAgICAgc0VsZXMucHVzaChuKTtcbiAgICAgICAgICBuZXdOZXh0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIW5ld05leHQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IC8vIGRvbmUgaWYgdG91Y2hlZCBhbGwgb3V0Z29lcnMgYWxyZWFkeVxuXG5cbiAgICAgIGVsZXMgPSBuZXh0O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNwYXduKHNFbGVzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9O1xufTtcblxuZWxlc2ZuJHQuY2xlYXJUcmF2ZXJzYWxDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpc1tpXS5fcHJpdmF0ZS50cmF2ZXJzYWxDYWNoZSA9IG51bGw7XG4gIH1cbn07XG5cbmV4dGVuZChlbGVzZm4kdCwge1xuICAvLyBnZXQgdGhlIHJvb3Qgbm9kZXMgaW4gdGhlIERBR1xuICByb290czogZGVmaW5lRGFnRXh0cmVtaXR5KHtcbiAgICBub0luY29taW5nRWRnZXM6IHRydWVcbiAgfSksXG4gIC8vIGdldCB0aGUgbGVhZiBub2RlcyBpbiB0aGUgREFHXG4gIGxlYXZlczogZGVmaW5lRGFnRXh0cmVtaXR5KHtcbiAgICBub091dGdvaW5nRWRnZXM6IHRydWVcbiAgfSksXG4gIC8vIG5vcm1hbGx5IGNhbGxlZCBjaGlsZHJlbiBpbiBncmFwaCB0aGVvcnlcbiAgLy8gdGhlc2Ugbm9kZXMgPWVkZ2VzPT4gb3V0Z29pbmcgbm9kZXNcbiAgb3V0Z29lcnM6IGNhY2hlKGRlZmluZURhZ09uZUhvcCh7XG4gICAgb3V0Z29pbmc6IHRydWVcbiAgfSksICdvdXRnb2VycycpLFxuICAvLyBha2EgREFHIGRlc2NlbmRhbnRzXG4gIHN1Y2Nlc3NvcnM6IGRlZmluZURhZ0FsbEhvcHMoe1xuICAgIG91dGdvaW5nOiB0cnVlXG4gIH0pLFxuICAvLyBub3JtYWxseSBjYWxsZWQgcGFyZW50cyBpbiBncmFwaCB0aGVvcnlcbiAgLy8gdGhlc2Ugbm9kZXMgPD1lZGdlcz0gaW5jb21pbmcgbm9kZXNcbiAgaW5jb21lcnM6IGNhY2hlKGRlZmluZURhZ09uZUhvcCh7XG4gICAgaW5jb21pbmc6IHRydWVcbiAgfSksICdpbmNvbWVycycpLFxuICAvLyBha2EgREFHIGFuY2VzdG9yc1xuICBwcmVkZWNlc3NvcnM6IGRlZmluZURhZ0FsbEhvcHMoe1xuICAgIGluY29taW5nOiB0cnVlXG4gIH0pXG59KTsgLy8gTmVpZ2hib3VyaG9vZCBmdW5jdGlvbnNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4dGVuZChlbGVzZm4kdCwge1xuICBuZWlnaGJvcmhvb2Q6IGNhY2hlKGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIGZvciBhbGwgbm9kZXNcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICB2YXIgY29ubmVjdGVkRWRnZXMgPSBub2RlLmNvbm5lY3RlZEVkZ2VzKCk7IC8vIGZvciBlYWNoIGNvbm5lY3RlZCBlZGdlLCBhZGQgdGhlIGVkZ2UgYW5kIHRoZSBvdGhlciBub2RlXG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29ubmVjdGVkRWRnZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBjb25uZWN0ZWRFZGdlc1tqXTtcbiAgICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKCk7XG4gICAgICAgIHZhciB0Z3QgPSBlZGdlLnRhcmdldCgpO1xuICAgICAgICB2YXIgb3RoZXJOb2RlID0gbm9kZSA9PT0gc3JjID8gdGd0IDogc3JjOyAvLyBuZWVkIGNoZWNrIGluIGNhc2Ugb2YgbG9vcFxuXG4gICAgICAgIGlmIChvdGhlck5vZGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGVsZW1lbnRzLnB1c2gob3RoZXJOb2RlWzBdKTsgLy8gYWRkIG5vZGUgMSBob3AgYXdheVxuICAgICAgICB9IC8vIGFkZCBjb25uZWN0ZWQgZWRnZVxuXG5cbiAgICAgICAgZWxlbWVudHMucHVzaChlZGdlWzBdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcGF3bihlbGVtZW50cywgdHJ1ZSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgfSwgJ25laWdoYm9yaG9vZCcpLFxuICBjbG9zZWROZWlnaGJvcmhvb2Q6IGZ1bmN0aW9uIGNsb3NlZE5laWdoYm9yaG9vZChzZWxlY3Rvcikge1xuICAgIHJldHVybiB0aGlzLm5laWdoYm9yaG9vZCgpLmFkZCh0aGlzKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LFxuICBvcGVuTmVpZ2hib3Job29kOiBmdW5jdGlvbiBvcGVuTmVpZ2hib3Job29kKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMubmVpZ2hib3Job29kKHNlbGVjdG9yKTtcbiAgfVxufSk7IC8vIGFsaWFzZXNcblxuZWxlc2ZuJHQubmVpZ2hib3VyaG9vZCA9IGVsZXNmbiR0Lm5laWdoYm9yaG9vZDtcbmVsZXNmbiR0LmNsb3NlZE5laWdoYm91cmhvb2QgPSBlbGVzZm4kdC5jbG9zZWROZWlnaGJvcmhvb2Q7XG5lbGVzZm4kdC5vcGVuTmVpZ2hib3VyaG9vZCA9IGVsZXNmbiR0Lm9wZW5OZWlnaGJvcmhvb2Q7IC8vIEVkZ2UgZnVuY3Rpb25zXG4vLy8vLy8vLy8vLy8vLy8vL1xuXG5leHRlbmQoZWxlc2ZuJHQsIHtcbiAgc291cmNlOiBjYWNoZShmdW5jdGlvbiBzb3VyY2VJbXBsKHNlbGVjdG9yKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgdmFyIHNyYztcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIHNyYyA9IGVsZS5fcHJpdmF0ZS5zb3VyY2UgfHwgZWxlLmN5KCkuY29sbGVjdGlvbigpO1xuICAgIH1cblxuICAgIHJldHVybiBzcmMgJiYgc2VsZWN0b3IgPyBzcmMuZmlsdGVyKHNlbGVjdG9yKSA6IHNyYztcbiAgfSwgJ3NvdXJjZScpLFxuICB0YXJnZXQ6IGNhY2hlKGZ1bmN0aW9uIHRhcmdldEltcGwoc2VsZWN0b3IpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgdGd0O1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdGd0ID0gZWxlLl9wcml2YXRlLnRhcmdldCB8fCBlbGUuY3koKS5jb2xsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRndCAmJiBzZWxlY3RvciA/IHRndC5maWx0ZXIoc2VsZWN0b3IpIDogdGd0O1xuICB9LCAndGFyZ2V0JyksXG4gIHNvdXJjZXM6IGRlZmluZVNvdXJjZUZ1bmN0aW9uKHtcbiAgICBhdHRyOiAnc291cmNlJ1xuICB9KSxcbiAgdGFyZ2V0czogZGVmaW5lU291cmNlRnVuY3Rpb24oe1xuICAgIGF0dHI6ICd0YXJnZXQnXG4gIH0pXG59KTtcblxuZnVuY3Rpb24gZGVmaW5lU291cmNlRnVuY3Rpb24ocGFyYW1zKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzb3VyY2VJbXBsKHNlbGVjdG9yKSB7XG4gICAgdmFyIHNvdXJjZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICB2YXIgc3JjID0gZWxlLl9wcml2YXRlW3BhcmFtcy5hdHRyXTtcblxuICAgICAgaWYgKHNyYykge1xuICAgICAgICBzb3VyY2VzLnB1c2goc3JjKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcGF3bihzb3VyY2VzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9O1xufVxuXG5leHRlbmQoZWxlc2ZuJHQsIHtcbiAgZWRnZXNXaXRoOiBjYWNoZShkZWZpbmVFZGdlc1dpdGhGdW5jdGlvbigpLCAnZWRnZXNXaXRoJyksXG4gIGVkZ2VzVG86IGNhY2hlKGRlZmluZUVkZ2VzV2l0aEZ1bmN0aW9uKHtcbiAgICB0aGlzSXNTcmM6IHRydWVcbiAgfSksICdlZGdlc1RvJylcbn0pO1xuXG5mdW5jdGlvbiBkZWZpbmVFZGdlc1dpdGhGdW5jdGlvbihwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGVkZ2VzV2l0aEltcGwob3RoZXJOb2Rlcykge1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG4gICAgdmFyIHAgPSBwYXJhbXMgfHwge307IC8vIGdldCBlbGVtZW50cyBpZiBhIHNlbGVjdG9yIGlzIHNwZWNpZmllZFxuXG4gICAgaWYgKHN0cmluZyhvdGhlck5vZGVzKSkge1xuICAgICAgb3RoZXJOb2RlcyA9IGN5LiQob3RoZXJOb2Rlcyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaCA9IDA7IGggPCBvdGhlck5vZGVzLmxlbmd0aDsgaCsrKSB7XG4gICAgICB2YXIgZWRnZXMgPSBvdGhlck5vZGVzW2hdLl9wcml2YXRlLmVkZ2VzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICAgIHZhciBlZGdlRGF0YSA9IGVkZ2UuX3ByaXZhdGUuZGF0YTtcbiAgICAgICAgdmFyIHRoaXNUb090aGVyID0gdGhpcy5oYXNFbGVtZW50V2l0aElkKGVkZ2VEYXRhLnNvdXJjZSkgJiYgb3RoZXJOb2Rlcy5oYXNFbGVtZW50V2l0aElkKGVkZ2VEYXRhLnRhcmdldCk7XG4gICAgICAgIHZhciBvdGhlclRvVGhpcyA9IG90aGVyTm9kZXMuaGFzRWxlbWVudFdpdGhJZChlZGdlRGF0YS5zb3VyY2UpICYmIHRoaXMuaGFzRWxlbWVudFdpdGhJZChlZGdlRGF0YS50YXJnZXQpO1xuICAgICAgICB2YXIgZWRnZUNvbm5lY3RzVGhpc0FuZE90aGVyID0gdGhpc1RvT3RoZXIgfHwgb3RoZXJUb1RoaXM7XG5cbiAgICAgICAgaWYgKCFlZGdlQ29ubmVjdHNUaGlzQW5kT3RoZXIpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwLnRoaXNJc1NyYyB8fCBwLnRoaXNJc1RndCkge1xuICAgICAgICAgIGlmIChwLnRoaXNJc1NyYyAmJiAhdGhpc1RvT3RoZXIpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwLnRoaXNJc1RndCAmJiAhb3RoZXJUb1RoaXMpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW1lbnRzLnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24oZWxlbWVudHMsIHRydWUpO1xuICB9O1xufVxuXG5leHRlbmQoZWxlc2ZuJHQsIHtcbiAgY29ubmVjdGVkRWRnZXM6IGNhY2hlKGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgIHZhciByZXRFbGVzID0gW107XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IGVsZXNbaV07XG5cbiAgICAgIGlmICghbm9kZS5pc05vZGUoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVkZ2VzID0gbm9kZS5fcHJpdmF0ZS5lZGdlcztcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlZGdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzW2pdO1xuICAgICAgICByZXRFbGVzLnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24ocmV0RWxlcywgdHJ1ZSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgfSwgJ2Nvbm5lY3RlZEVkZ2VzJyksXG4gIGNvbm5lY3RlZE5vZGVzOiBjYWNoZShmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICB2YXIgcmV0RWxlcyA9IFtdO1xuICAgIHZhciBlbGVzID0gdGhpcztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBlbGVzW2ldO1xuXG4gICAgICBpZiAoIWVkZ2UuaXNFZGdlKCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJldEVsZXMucHVzaChlZGdlLnNvdXJjZSgpWzBdKTtcbiAgICAgIHJldEVsZXMucHVzaChlZGdlLnRhcmdldCgpWzBdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcGF3bihyZXRFbGVzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LCAnY29ubmVjdGVkTm9kZXMnKSxcbiAgcGFyYWxsZWxFZGdlczogY2FjaGUoZGVmaW5lUGFyYWxsZWxFZGdlc0Z1bmN0aW9uKCksICdwYXJhbGxlbEVkZ2VzJyksXG4gIGNvZGlyZWN0ZWRFZGdlczogY2FjaGUoZGVmaW5lUGFyYWxsZWxFZGdlc0Z1bmN0aW9uKHtcbiAgICBjb2RpcmVjdGVkOiB0cnVlXG4gIH0pLCAnY29kaXJlY3RlZEVkZ2VzJylcbn0pO1xuXG5mdW5jdGlvbiBkZWZpbmVQYXJhbGxlbEVkZ2VzRnVuY3Rpb24ocGFyYW1zKSB7XG4gIHZhciBkZWZhdWx0cyA9IHtcbiAgICBjb2RpcmVjdGVkOiBmYWxzZVxuICB9O1xuICBwYXJhbXMgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBwYXJhbXMpO1xuICByZXR1cm4gZnVuY3Rpb24gcGFyYWxsZWxFZGdlc0ltcGwoc2VsZWN0b3IpIHtcbiAgICAvLyBtaWNyby1vcHRpbWlzZWQgZm9yIHJlbmRlcmVyXG4gICAgdmFyIGVsZW1lbnRzID0gW107XG4gICAgdmFyIGVkZ2VzID0gdGhpcy5lZGdlcygpO1xuICAgIHZhciBwID0gcGFyYW1zOyAvLyBsb29rIGF0IGFsbCB0aGUgZWRnZXMgaW4gdGhlIGNvbGxlY3Rpb25cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlMSA9IGVkZ2VzW2ldO1xuICAgICAgdmFyIGVkZ2UxX3AgPSBlZGdlMS5fcHJpdmF0ZTtcbiAgICAgIHZhciBzcmMxID0gZWRnZTFfcC5zb3VyY2U7XG4gICAgICB2YXIgc3JjaWQxID0gc3JjMS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgdmFyIHRndGlkMSA9IGVkZ2UxX3AuZGF0YS50YXJnZXQ7XG4gICAgICB2YXIgc3JjRWRnZXMxID0gc3JjMS5fcHJpdmF0ZS5lZGdlczsgLy8gbG9vayBhdCBlZGdlcyBjb25uZWN0ZWQgdG8gdGhlIHNyYyBub2RlIG9mIHRoaXMgZWRnZVxuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNyY0VkZ2VzMS5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgZWRnZTIgPSBzcmNFZGdlczFbal07XG4gICAgICAgIHZhciBlZGdlMmRhdGEgPSBlZGdlMi5fcHJpdmF0ZS5kYXRhO1xuICAgICAgICB2YXIgdGd0aWQyID0gZWRnZTJkYXRhLnRhcmdldDtcbiAgICAgICAgdmFyIHNyY2lkMiA9IGVkZ2UyZGF0YS5zb3VyY2U7XG4gICAgICAgIHZhciBjb2RpcmVjdGVkID0gdGd0aWQyID09PSB0Z3RpZDEgJiYgc3JjaWQyID09PSBzcmNpZDE7XG4gICAgICAgIHZhciBvcHBkaXJlY3RlZCA9IHNyY2lkMSA9PT0gdGd0aWQyICYmIHRndGlkMSA9PT0gc3JjaWQyO1xuXG4gICAgICAgIGlmIChwLmNvZGlyZWN0ZWQgJiYgY29kaXJlY3RlZCB8fCAhcC5jb2RpcmVjdGVkICYmIChjb2RpcmVjdGVkIHx8IG9wcGRpcmVjdGVkKSkge1xuICAgICAgICAgIGVsZW1lbnRzLnB1c2goZWRnZTIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24oZWxlbWVudHMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH07XG59IC8vIE1pc2MgZnVuY3Rpb25zXG4vLy8vLy8vLy8vLy8vLy8vL1xuXG5cbmV4dGVuZChlbGVzZm4kdCwge1xuICBjb21wb25lbnRzOiBmdW5jdGlvbiBjb21wb25lbnRzKHJvb3QpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGN5ID0gc2VsZi5jeSgpO1xuICAgIHZhciB2aXNpdGVkID0gY3kuY29sbGVjdGlvbigpO1xuICAgIHZhciB1bnZpc2l0ZWQgPSByb290ID09IG51bGwgPyBzZWxmLm5vZGVzKCkgOiByb290Lm5vZGVzKCk7XG4gICAgdmFyIGNvbXBvbmVudHMgPSBbXTtcblxuICAgIGlmIChyb290ICE9IG51bGwgJiYgdW52aXNpdGVkLmVtcHR5KCkpIHtcbiAgICAgIC8vIHJvb3QgbWF5IGNvbnRhaW4gb25seSBlZGdlc1xuICAgICAgdW52aXNpdGVkID0gcm9vdC5zb3VyY2VzKCk7IC8vIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIG5vZGUgdG8gdXNlICh1bmRpcmVjdGVkKSwgc28ganVzdCB1c2UgdGhlIHNvdXJjZSBzaWRlc1xuICAgIH1cblxuICAgIHZhciB2aXNpdEluQ29tcG9uZW50ID0gZnVuY3Rpb24gdmlzaXRJbkNvbXBvbmVudChub2RlLCBjb21wb25lbnQpIHtcbiAgICAgIHZpc2l0ZWQubWVyZ2Uobm9kZSk7XG4gICAgICB1bnZpc2l0ZWQudW5tZXJnZShub2RlKTtcbiAgICAgIGNvbXBvbmVudC5tZXJnZShub2RlKTtcbiAgICB9O1xuXG4gICAgaWYgKHVudmlzaXRlZC5lbXB0eSgpKSB7XG4gICAgICByZXR1cm4gc2VsZi5zcGF3bigpO1xuICAgIH1cblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKCkge1xuICAgICAgLy8gZWFjaCBpdGVyYXRpb24geWllbGRzIGEgY29tcG9uZW50XG4gICAgICB2YXIgY21wdCA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgICAgIGNvbXBvbmVudHMucHVzaChjbXB0KTtcbiAgICAgIHZhciByb290ID0gdW52aXNpdGVkWzBdO1xuICAgICAgdmlzaXRJbkNvbXBvbmVudChyb290LCBjbXB0KTtcbiAgICAgIHNlbGYuYmZzKHtcbiAgICAgICAgZGlyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICByb290czogcm9vdCxcbiAgICAgICAgdmlzaXQ6IGZ1bmN0aW9uIHZpc2l0KHYpIHtcbiAgICAgICAgICByZXR1cm4gdmlzaXRJbkNvbXBvbmVudCh2LCBjbXB0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjbXB0LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgbm9kZS5jb25uZWN0ZWRFZGdlcygpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAvLyBjb25uZWN0ZWRFZGdlcygpIHVzdWFsbHkgY2FjaGVkXG4gICAgICAgICAgaWYgKHNlbGYuaGFzKGUpICYmIGNtcHQuaGFzKGUuc291cmNlKCkpICYmIGNtcHQuaGFzKGUudGFyZ2V0KCkpKSB7XG4gICAgICAgICAgICAvLyBoYXMoKSBpcyBjaGVhcFxuICAgICAgICAgICAgY21wdC5tZXJnZShlKTsgLy8gZm9yRWFjaCgpIG9ubHkgY29uc2lkZXJzIG5vZGVzIC0tIHNldHMgTiBhdCBjYWxsIHRpbWVcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGRvIHtcbiAgICAgIF9sb29wKCk7XG4gICAgfSB3aGlsZSAodW52aXNpdGVkLmxlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gIH0sXG4gIGNvbXBvbmVudDogZnVuY3Rpb24gY29tcG9uZW50KCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHJldHVybiBlbGUuY3koKS5tdXRhYmxlRWxlbWVudHMoKS5jb21wb25lbnRzKGVsZSlbMF07XG4gIH1cbn0pO1xuZWxlc2ZuJHQuY29tcG9uZW50c09mID0gZWxlc2ZuJHQuY29tcG9uZW50cztcblxudmFyIENvbGxlY3Rpb24gPSBmdW5jdGlvbiBDb2xsZWN0aW9uKGN5LCBlbGVtZW50cykge1xuICB2YXIgdW5pcXVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBmYWxzZTtcblxuICBpZiAoY3kgPT09IHVuZGVmaW5lZCkge1xuICAgIGVycm9yKCdBIGNvbGxlY3Rpb24gbXVzdCBoYXZlIGEgcmVmZXJlbmNlIHRvIHRoZSBjb3JlJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIG1hcCA9IG5ldyBNYXAkMSgpO1xuICB2YXIgY3JlYXRlZEVsZW1lbnRzID0gZmFsc2U7XG5cbiAgaWYgKCFlbGVtZW50cykge1xuICAgIGVsZW1lbnRzID0gW107XG4gIH0gZWxzZSBpZiAoZWxlbWVudHMubGVuZ3RoID4gMCAmJiBwbGFpbk9iamVjdChlbGVtZW50c1swXSkgJiYgIWVsZW1lbnQoZWxlbWVudHNbMF0pKSB7XG4gICAgY3JlYXRlZEVsZW1lbnRzID0gdHJ1ZTsgLy8gbWFrZSBlbGVtZW50cyBmcm9tIGpzb24gYW5kIHJlc3RvcmUgYWxsIGF0IG9uY2UgbGF0ZXJcblxuICAgIHZhciBlbGVzID0gW107XG4gICAgdmFyIGVsZXNJZHMgPSBuZXcgU2V0JDEoKTtcblxuICAgIGZvciAodmFyIGkgPSAwLCBsID0gZWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIganNvbiA9IGVsZW1lbnRzW2ldO1xuXG4gICAgICBpZiAoanNvbi5kYXRhID09IG51bGwpIHtcbiAgICAgICAganNvbi5kYXRhID0ge307XG4gICAgICB9XG5cbiAgICAgIHZhciBfZGF0YSA9IGpzb24uZGF0YTsgLy8gbWFrZSBzdXJlIG5ld2x5IGNyZWF0ZWQgZWxlbWVudHMgaGF2ZSB2YWxpZCBpZHNcblxuICAgICAgaWYgKF9kYXRhLmlkID09IG51bGwpIHtcbiAgICAgICAgX2RhdGEuaWQgPSB1dWlkKCk7XG4gICAgICB9IGVsc2UgaWYgKGN5Lmhhc0VsZW1lbnRXaXRoSWQoX2RhdGEuaWQpIHx8IGVsZXNJZHMuaGFzKF9kYXRhLmlkKSkge1xuICAgICAgICBjb250aW51ZTsgLy8gY2FuJ3QgY3JlYXRlIGVsZW1lbnQgaWYgcHJpb3IgaWQgYWxyZWFkeSBleGlzdHNcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZSA9IG5ldyBFbGVtZW50KGN5LCBqc29uLCBmYWxzZSk7XG4gICAgICBlbGVzLnB1c2goZWxlKTtcbiAgICAgIGVsZXNJZHMuYWRkKF9kYXRhLmlkKTtcbiAgICB9XG5cbiAgICBlbGVtZW50cyA9IGVsZXM7XG4gIH1cblxuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgZm9yICh2YXIgX2kgPSAwLCBfbCA9IGVsZW1lbnRzLmxlbmd0aDsgX2kgPCBfbDsgX2krKykge1xuICAgIHZhciBlbGVtZW50JDEgPSBlbGVtZW50c1tfaV1bMF07IC8vIFswXSBpbiBjYXNlIGVsZW1lbnRzIGlzIGFuIGFycmF5IG9mIGNvbGxlY3Rpb25zLCByYXRoZXIgdGhhbiBhcnJheSBvZiBlbGVtZW50c1xuXG4gICAgaWYgKGVsZW1lbnQkMSA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgaWQgPSBlbGVtZW50JDEuX3ByaXZhdGUuZGF0YS5pZDtcblxuICAgIGlmICghdW5pcXVlIHx8ICFtYXAuaGFzKGlkKSkge1xuICAgICAgaWYgKHVuaXF1ZSkge1xuICAgICAgICBtYXAuc2V0KGlkLCB7XG4gICAgICAgICAgaW5kZXg6IHRoaXMubGVuZ3RoLFxuICAgICAgICAgIGVsZTogZWxlbWVudCQxXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzW3RoaXMubGVuZ3RoXSA9IGVsZW1lbnQkMTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICB9XG5cbiAgdGhpcy5fcHJpdmF0ZSA9IHtcbiAgICBlbGVzOiB0aGlzLFxuICAgIGN5OiBjeSxcblxuICAgIGdldCBtYXAoKSB7XG4gICAgICBpZiAodGhpcy5sYXp5TWFwID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5yZWJ1aWxkTWFwKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmxhenlNYXA7XG4gICAgfSxcblxuICAgIHNldCBtYXAobSkge1xuICAgICAgdGhpcy5sYXp5TWFwID0gbTtcbiAgICB9LFxuXG4gICAgcmVidWlsZE1hcDogZnVuY3Rpb24gcmVidWlsZE1hcCgpIHtcbiAgICAgIHZhciBtID0gdGhpcy5sYXp5TWFwID0gbmV3IE1hcCQxKCk7XG4gICAgICB2YXIgZWxlcyA9IHRoaXMuZWxlcztcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgZWxlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgIHZhciBfZWxlID0gZWxlc1tfaTJdO1xuICAgICAgICBtLnNldChfZWxlLmlkKCksIHtcbiAgICAgICAgICBpbmRleDogX2kyLFxuICAgICAgICAgIGVsZTogX2VsZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgaWYgKHVuaXF1ZSkge1xuICAgIHRoaXMuX3ByaXZhdGUubWFwID0gbWFwO1xuICB9IC8vIHJlc3RvcmUgdGhlIGVsZW1lbnRzIGlmIHdlIGNyZWF0ZWQgdGhlbSBmcm9tIGpzb25cblxuXG4gIGlmIChjcmVhdGVkRWxlbWVudHMpIHtcbiAgICB0aGlzLnJlc3RvcmUoKTtcbiAgfVxufTsgLy8gRnVuY3Rpb25zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBrZWVwIHRoZSBwcm90b3R5cGVzIGluIHN5bmMgKGFuIGVsZW1lbnQgaGFzIHRoZSBzYW1lIGZ1bmN0aW9ucyBhcyBhIGNvbGxlY3Rpb24pXG4vLyBhbmQgdXNlIGVsZWZuIGFuZCBlbGVzZm4gYXMgc2hvcnRoYW5kcyB0byB0aGUgcHJvdG90eXBlc1xuXG5cbnZhciBlbGVzZm4kdSA9IEVsZW1lbnQucHJvdG90eXBlID0gQ29sbGVjdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFycmF5LnByb3RvdHlwZSk7XG5cbmVsZXNmbiR1Lmluc3RhbmNlU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2NvbGxlY3Rpb24nO1xufTtcblxuZWxlc2ZuJHUuc3Bhd24gPSBmdW5jdGlvbiAoZWxlcywgdW5pcXVlKSB7XG4gIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLmN5KCksIGVsZXMsIHVuaXF1ZSk7XG59O1xuXG5lbGVzZm4kdS5zcGF3blNlbGYgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnNwYXduKHRoaXMpO1xufTtcblxuZWxlc2ZuJHUuY3kgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9wcml2YXRlLmN5O1xufTtcblxuZWxlc2ZuJHUucmVuZGVyZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9wcml2YXRlLmN5LnJlbmRlcmVyKCk7XG59O1xuXG5lbGVzZm4kdS5lbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpc1swXTtcbn07XG5cbmVsZXNmbiR1LmNvbGxlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChjb2xsZWN0aW9uKHRoaXMpKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gZWxzZSB7XG4gICAgLy8gYW4gZWxlbWVudFxuICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLl9wcml2YXRlLmN5LCBbdGhpc10pO1xuICB9XG59O1xuXG5lbGVzZm4kdS51bmlxdWUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLl9wcml2YXRlLmN5LCB0aGlzLCB0cnVlKTtcbn07XG5cbmVsZXNmbiR1Lmhhc0VsZW1lbnRXaXRoSWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgaWQgPSAnJyArIGlkOyAvLyBpZCBtdXN0IGJlIHN0cmluZ1xuXG4gIHJldHVybiB0aGlzLl9wcml2YXRlLm1hcC5oYXMoaWQpO1xufTtcblxuZWxlc2ZuJHUuZ2V0RWxlbWVudEJ5SWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgaWQgPSAnJyArIGlkOyAvLyBpZCBtdXN0IGJlIHN0cmluZ1xuXG4gIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG5cbiAgdmFyIGVudHJ5ID0gdGhpcy5fcHJpdmF0ZS5tYXAuZ2V0KGlkKTtcblxuICByZXR1cm4gZW50cnkgPyBlbnRyeS5lbGUgOiBuZXcgQ29sbGVjdGlvbihjeSk7IC8vIGdldCBlbGUgb3IgZW1wdHkgY29sbGVjdGlvblxufTtcblxuZWxlc2ZuJHUuJGlkID0gZWxlc2ZuJHUuZ2V0RWxlbWVudEJ5SWQ7XG5cbmVsZXNmbiR1LnBvb2xJbmRleCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgdmFyIGVsZXMgPSBjeS5fcHJpdmF0ZS5lbGVtZW50cztcbiAgdmFyIGlkID0gdGhpc1swXS5fcHJpdmF0ZS5kYXRhLmlkO1xuICByZXR1cm4gZWxlcy5fcHJpdmF0ZS5tYXAuZ2V0KGlkKS5pbmRleDtcbn07XG5cbmVsZXNmbiR1LmluZGV4T2YgPSBmdW5jdGlvbiAoZWxlKSB7XG4gIHZhciBpZCA9IGVsZVswXS5fcHJpdmF0ZS5kYXRhLmlkO1xuICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5tYXAuZ2V0KGlkKS5pbmRleDtcbn07XG5cbmVsZXNmbiR1LmluZGV4T2ZJZCA9IGZ1bmN0aW9uIChpZCkge1xuICBpZCA9ICcnICsgaWQ7IC8vIGlkIG11c3QgYmUgc3RyaW5nXG5cbiAgcmV0dXJuIHRoaXMuX3ByaXZhdGUubWFwLmdldChpZCkuaW5kZXg7XG59O1xuXG5lbGVzZm4kdS5qc29uID0gZnVuY3Rpb24gKG9iaikge1xuICB2YXIgZWxlID0gdGhpcy5lbGVtZW50KCk7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICBpZiAoZWxlID09IG51bGwgJiYgb2JqKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gLy8gY2FuJ3Qgc2V0IHRvIG5vIGVsZXNcblxuXG4gIGlmIChlbGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gLy8gY2FuJ3QgZ2V0IGZyb20gbm8gZWxlc1xuXG5cbiAgdmFyIHAgPSBlbGUuX3ByaXZhdGU7XG5cbiAgaWYgKHBsYWluT2JqZWN0KG9iaikpIHtcbiAgICAvLyBzZXRcbiAgICBjeS5zdGFydEJhdGNoKCk7XG5cbiAgICBpZiAob2JqLmRhdGEpIHtcbiAgICAgIGVsZS5kYXRhKG9iai5kYXRhKTtcbiAgICAgIHZhciBfZGF0YTIgPSBwLmRhdGE7XG5cbiAgICAgIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICAgICAgLy8gc291cmNlIGFuZCB0YXJnZXQgYXJlIGltbXV0YWJsZSB2aWEgZGF0YSgpXG4gICAgICAgIHZhciBtb3ZlID0gZmFsc2U7XG4gICAgICAgIHZhciBzcGVjID0ge307XG4gICAgICAgIHZhciBzcmMgPSBvYmouZGF0YS5zb3VyY2U7XG4gICAgICAgIHZhciB0Z3QgPSBvYmouZGF0YS50YXJnZXQ7XG5cbiAgICAgICAgaWYgKHNyYyAhPSBudWxsICYmIHNyYyAhPSBfZGF0YTIuc291cmNlKSB7XG4gICAgICAgICAgc3BlYy5zb3VyY2UgPSAnJyArIHNyYzsgLy8gaWQgbXVzdCBiZSBzdHJpbmdcblxuICAgICAgICAgIG1vdmUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRndCAhPSBudWxsICYmIHRndCAhPSBfZGF0YTIudGFyZ2V0KSB7XG4gICAgICAgICAgc3BlYy50YXJnZXQgPSAnJyArIHRndDsgLy8gaWQgbXVzdCBiZSBzdHJpbmdcblxuICAgICAgICAgIG1vdmUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vdmUpIHtcbiAgICAgICAgICBlbGUgPSBlbGUubW92ZShzcGVjKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcGFyZW50IGlzIGltbXV0YWJsZSB2aWEgZGF0YSgpXG4gICAgICAgIHZhciBuZXdQYXJlbnRWYWxTcGVjZCA9ICdwYXJlbnQnIGluIG9iai5kYXRhO1xuICAgICAgICB2YXIgcGFyZW50ID0gb2JqLmRhdGEucGFyZW50O1xuXG4gICAgICAgIGlmIChuZXdQYXJlbnRWYWxTcGVjZCAmJiAocGFyZW50ICE9IG51bGwgfHwgX2RhdGEyLnBhcmVudCAhPSBudWxsKSAmJiBwYXJlbnQgIT0gX2RhdGEyLnBhcmVudCkge1xuICAgICAgICAgIGlmIChwYXJlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gY2FuJ3Qgc2V0IHVuZGVmaW5lZCBpbXBlcmF0aXZlbHksIHNvIHVzZSBudWxsXG4gICAgICAgICAgICBwYXJlbnQgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwYXJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgcGFyZW50ID0gJycgKyBwYXJlbnQ7IC8vIGlkIG11c3QgYmUgc3RyaW5nXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZWxlID0gZWxlLm1vdmUoe1xuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvYmoucG9zaXRpb24pIHtcbiAgICAgIGVsZS5wb3NpdGlvbihvYmoucG9zaXRpb24pO1xuICAgIH0gLy8gaWdub3JlIGdyb3VwIC0tIGltbXV0YWJsZVxuXG5cbiAgICB2YXIgY2hlY2tTd2l0Y2ggPSBmdW5jdGlvbiBjaGVja1N3aXRjaChrLCB0cnVlRm5OYW1lLCBmYWxzZUZuTmFtZSkge1xuICAgICAgdmFyIG9ial9rID0gb2JqW2tdO1xuXG4gICAgICBpZiAob2JqX2sgIT0gbnVsbCAmJiBvYmpfayAhPT0gcFtrXSkge1xuICAgICAgICBpZiAob2JqX2spIHtcbiAgICAgICAgICBlbGVbdHJ1ZUZuTmFtZV0oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVbZmFsc2VGbk5hbWVdKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY2hlY2tTd2l0Y2goJ3JlbW92ZWQnLCAncmVtb3ZlJywgJ3Jlc3RvcmUnKTtcbiAgICBjaGVja1N3aXRjaCgnc2VsZWN0ZWQnLCAnc2VsZWN0JywgJ3Vuc2VsZWN0Jyk7XG4gICAgY2hlY2tTd2l0Y2goJ3NlbGVjdGFibGUnLCAnc2VsZWN0aWZ5JywgJ3Vuc2VsZWN0aWZ5Jyk7XG4gICAgY2hlY2tTd2l0Y2goJ2xvY2tlZCcsICdsb2NrJywgJ3VubG9jaycpO1xuICAgIGNoZWNrU3dpdGNoKCdncmFiYmFibGUnLCAnZ3JhYmlmeScsICd1bmdyYWJpZnknKTtcbiAgICBjaGVja1N3aXRjaCgncGFubmFibGUnLCAncGFuaWZ5JywgJ3VucGFuaWZ5Jyk7XG5cbiAgICBpZiAob2JqLmNsYXNzZXMgIT0gbnVsbCkge1xuICAgICAgZWxlLmNsYXNzZXMob2JqLmNsYXNzZXMpO1xuICAgIH1cblxuICAgIGN5LmVuZEJhdGNoKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gZWxzZSBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBnZXRcbiAgICB2YXIganNvbiA9IHtcbiAgICAgIGRhdGE6IGNvcHkocC5kYXRhKSxcbiAgICAgIHBvc2l0aW9uOiBjb3B5KHAucG9zaXRpb24pLFxuICAgICAgZ3JvdXA6IHAuZ3JvdXAsXG4gICAgICByZW1vdmVkOiBwLnJlbW92ZWQsXG4gICAgICBzZWxlY3RlZDogcC5zZWxlY3RlZCxcbiAgICAgIHNlbGVjdGFibGU6IHAuc2VsZWN0YWJsZSxcbiAgICAgIGxvY2tlZDogcC5sb2NrZWQsXG4gICAgICBncmFiYmFibGU6IHAuZ3JhYmJhYmxlLFxuICAgICAgcGFubmFibGU6IHAucGFubmFibGUsXG4gICAgICBjbGFzc2VzOiBudWxsXG4gICAgfTtcbiAgICBqc29uLmNsYXNzZXMgPSAnJztcbiAgICB2YXIgaSA9IDA7XG4gICAgcC5jbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgcmV0dXJuIGpzb24uY2xhc3NlcyArPSBpKysgPT09IDAgPyBjbHMgOiAnICcgKyBjbHM7XG4gICAgfSk7XG4gICAgcmV0dXJuIGpzb247XG4gIH1cbn07XG5cbmVsZXNmbiR1Lmpzb25zID0gZnVuY3Rpb24gKCkge1xuICB2YXIganNvbnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICB2YXIganNvbiA9IGVsZS5qc29uKCk7XG4gICAganNvbnMucHVzaChqc29uKTtcbiAgfVxuXG4gIHJldHVybiBqc29ucztcbn07XG5cbmVsZXNmbiR1LmNsb25lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gIHZhciBlbGVzQXJyID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgdmFyIGpzb24gPSBlbGUuanNvbigpO1xuICAgIHZhciBjbG9uZSA9IG5ldyBFbGVtZW50KGN5LCBqc29uLCBmYWxzZSk7IC8vIE5CIG5vIHJlc3RvcmVcblxuICAgIGVsZXNBcnIucHVzaChjbG9uZSk7XG4gIH1cblxuICByZXR1cm4gbmV3IENvbGxlY3Rpb24oY3ksIGVsZXNBcnIpO1xufTtcblxuZWxlc2ZuJHUuY29weSA9IGVsZXNmbiR1LmNsb25lO1xuXG5lbGVzZm4kdS5yZXN0b3JlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbm90aWZ5UmVuZGVyZXIgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHRydWU7XG4gIHZhciBhZGRUb1Bvb2wgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGN5ID0gc2VsZi5jeSgpO1xuICB2YXIgY3lfcCA9IGN5Ll9wcml2YXRlOyAvLyBjcmVhdGUgYXJyYXlzIG9mIG5vZGVzIGFuZCBlZGdlcywgc2luY2Ugd2UgbmVlZCB0b1xuICAvLyByZXN0b3JlIHRoZSBub2RlcyBmaXJzdFxuXG4gIHZhciBub2RlcyA9IFtdO1xuICB2YXIgZWRnZXMgPSBbXTtcbiAgdmFyIGVsZW1lbnRzO1xuXG4gIGZvciAodmFyIF9pMyA9IDAsIGwgPSBzZWxmLmxlbmd0aDsgX2kzIDwgbDsgX2kzKyspIHtcbiAgICB2YXIgZWxlID0gc2VsZltfaTNdO1xuXG4gICAgaWYgKGFkZFRvUG9vbCAmJiAhZWxlLnJlbW92ZWQoKSkge1xuICAgICAgLy8gZG9uJ3QgbmVlZCB0byBoYW5kbGUgdGhpcyBlbGVcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8ga2VlcCBub2RlcyBmaXJzdCBpbiB0aGUgYXJyYXkgYW5kIGVkZ2VzIGFmdGVyXG5cblxuICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgIC8vIHB1dCB0byBmcm9udCBvZiBhcnJheSBpZiBub2RlXG4gICAgICBub2Rlcy5wdXNoKGVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHB1dCB0byBlbmQgb2YgYXJyYXkgaWYgZWRnZVxuICAgICAgZWRnZXMucHVzaChlbGUpO1xuICAgIH1cbiAgfVxuXG4gIGVsZW1lbnRzID0gbm9kZXMuY29uY2F0KGVkZ2VzKTtcbiAgdmFyIGk7XG5cbiAgdmFyIHJlbW92ZUZyb21FbGVtZW50cyA9IGZ1bmN0aW9uIHJlbW92ZUZyb21FbGVtZW50cygpIHtcbiAgICBlbGVtZW50cy5zcGxpY2UoaSwgMSk7XG4gICAgaS0tO1xuICB9OyAvLyBub3csIHJlc3RvcmUgZWFjaCBlbGVtZW50XG5cblxuICBmb3IgKGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgX2VsZTIgPSBlbGVtZW50c1tpXTtcbiAgICB2YXIgX3ByaXZhdGUgPSBfZWxlMi5fcHJpdmF0ZTtcbiAgICB2YXIgX2RhdGEzID0gX3ByaXZhdGUuZGF0YTsgLy8gdGhlIHRyYXZlcnNhbCBjYWNoZSBzaG91bGQgc3RhcnQgZnJlc2ggd2hlbiBlbGUgaXMgYWRkZWRcblxuICAgIF9lbGUyLmNsZWFyVHJhdmVyc2FsQ2FjaGUoKTsgLy8gc2V0IGlkIGFuZCB2YWxpZGF0ZVxuXG5cbiAgICBpZiAoIWFkZFRvUG9vbCAmJiAhX3ByaXZhdGUucmVtb3ZlZCkgOyBlbHNlIGlmIChfZGF0YTMuaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgX2RhdGEzLmlkID0gdXVpZCgpO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyKF9kYXRhMy5pZCkpIHtcbiAgICAgIF9kYXRhMy5pZCA9ICcnICsgX2RhdGEzLmlkOyAvLyBub3cgaXQncyBhIHN0cmluZ1xuICAgIH0gZWxzZSBpZiAoZW1wdHlTdHJpbmcoX2RhdGEzLmlkKSB8fCAhc3RyaW5nKF9kYXRhMy5pZCkpIHtcbiAgICAgIGVycm9yKCdDYW4gbm90IGNyZWF0ZSBlbGVtZW50IHdpdGggaW52YWxpZCBzdHJpbmcgSUQgYCcgKyBfZGF0YTMuaWQgKyAnYCcpOyAvLyBjYW4ndCBjcmVhdGUgZWxlbWVudCBpZiBpdCBoYXMgZW1wdHkgc3RyaW5nIGFzIGlkIG9yIG5vbi1zdHJpbmcgaWRcblxuICAgICAgcmVtb3ZlRnJvbUVsZW1lbnRzKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IGVsc2UgaWYgKGN5Lmhhc0VsZW1lbnRXaXRoSWQoX2RhdGEzLmlkKSkge1xuICAgICAgZXJyb3IoJ0NhbiBub3QgY3JlYXRlIHNlY29uZCBlbGVtZW50IHdpdGggSUQgYCcgKyBfZGF0YTMuaWQgKyAnYCcpOyAvLyBjYW4ndCBjcmVhdGUgZWxlbWVudCBpZiBvbmUgYWxyZWFkeSBoYXMgdGhhdCBpZFxuXG4gICAgICByZW1vdmVGcm9tRWxlbWVudHMoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBpZCA9IF9kYXRhMy5pZDsgLy8gaWQgaXMgZmluYWxpc2VkLCBub3cgbGV0J3Mga2VlcCBhIHJlZlxuXG4gICAgaWYgKF9lbGUyLmlzTm9kZSgpKSB7XG4gICAgICAvLyBleHRyYSBjaGVja3MgZm9yIG5vZGVzXG4gICAgICB2YXIgcG9zID0gX3ByaXZhdGUucG9zaXRpb247IC8vIG1ha2Ugc3VyZSB0aGUgbm9kZXMgaGF2ZSBhIGRlZmluZWQgcG9zaXRpb25cblxuICAgICAgaWYgKHBvcy54ID09IG51bGwpIHtcbiAgICAgICAgcG9zLnggPSAwO1xuICAgICAgfVxuXG4gICAgICBpZiAocG9zLnkgPT0gbnVsbCkge1xuICAgICAgICBwb3MueSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKF9lbGUyLmlzRWRnZSgpKSB7XG4gICAgICAvLyBleHRyYSBjaGVja3MgZm9yIGVkZ2VzXG4gICAgICB2YXIgZWRnZSA9IF9lbGUyO1xuICAgICAgdmFyIGZpZWxkcyA9IFsnc291cmNlJywgJ3RhcmdldCddO1xuICAgICAgdmFyIGZpZWxkc0xlbmd0aCA9IGZpZWxkcy5sZW5ndGg7XG4gICAgICB2YXIgYmFkU291cmNlT3JUYXJnZXQgPSBmYWxzZTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBmaWVsZHNMZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgZmllbGQgPSBmaWVsZHNbal07XG4gICAgICAgIHZhciB2YWwgPSBfZGF0YTNbZmllbGRdO1xuXG4gICAgICAgIGlmIChudW1iZXIodmFsKSkge1xuICAgICAgICAgIHZhbCA9IF9kYXRhM1tmaWVsZF0gPSAnJyArIF9kYXRhM1tmaWVsZF07IC8vIG5vdyBzdHJpbmdcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWwgPT0gbnVsbCB8fCB2YWwgPT09ICcnKSB7XG4gICAgICAgICAgLy8gY2FuJ3QgY3JlYXRlIGlmIHNvdXJjZSBvciB0YXJnZXQgaXMgbm90IGRlZmluZWQgcHJvcGVybHlcbiAgICAgICAgICBlcnJvcignQ2FuIG5vdCBjcmVhdGUgZWRnZSBgJyArIGlkICsgJ2Agd2l0aCB1bnNwZWNpZmllZCAnICsgZmllbGQpO1xuICAgICAgICAgIGJhZFNvdXJjZU9yVGFyZ2V0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICghY3kuaGFzRWxlbWVudFdpdGhJZCh2YWwpKSB7XG4gICAgICAgICAgLy8gY2FuJ3QgY3JlYXRlIGVkZ2UgaWYgb25lIG9mIGl0cyBub2RlcyBkb2Vzbid0IGV4aXN0XG4gICAgICAgICAgZXJyb3IoJ0NhbiBub3QgY3JlYXRlIGVkZ2UgYCcgKyBpZCArICdgIHdpdGggbm9uZXhpc3RhbnQgJyArIGZpZWxkICsgJyBgJyArIHZhbCArICdgJyk7XG4gICAgICAgICAgYmFkU291cmNlT3JUYXJnZXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChiYWRTb3VyY2VPclRhcmdldCkge1xuICAgICAgICByZW1vdmVGcm9tRWxlbWVudHMoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIGNhbid0IGNyZWF0ZSB0aGlzXG5cblxuICAgICAgdmFyIHNyYyA9IGN5LmdldEVsZW1lbnRCeUlkKF9kYXRhMy5zb3VyY2UpO1xuICAgICAgdmFyIHRndCA9IGN5LmdldEVsZW1lbnRCeUlkKF9kYXRhMy50YXJnZXQpOyAvLyBvbmx5IG9uZSBlZGdlIGluIG5vZGUgaWYgbG9vcFxuXG4gICAgICBpZiAoc3JjLnNhbWUodGd0KSkge1xuICAgICAgICBzcmMuX3ByaXZhdGUuZWRnZXMucHVzaChlZGdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNyYy5fcHJpdmF0ZS5lZGdlcy5wdXNoKGVkZ2UpO1xuXG4gICAgICAgIHRndC5fcHJpdmF0ZS5lZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgfVxuXG4gICAgICBlZGdlLl9wcml2YXRlLnNvdXJjZSA9IHNyYztcbiAgICAgIGVkZ2UuX3ByaXZhdGUudGFyZ2V0ID0gdGd0O1xuICAgIH0gLy8gaWYgaXMgZWRnZVxuICAgIC8vIGNyZWF0ZSBtb2NrIGlkcyAvIGluZGV4ZXMgbWFwcyBmb3IgZWxlbWVudCBzbyBpdCBjYW4gYmUgdXNlZCBsaWtlIGNvbGxlY3Rpb25zXG5cblxuICAgIF9wcml2YXRlLm1hcCA9IG5ldyBNYXAkMSgpO1xuXG4gICAgX3ByaXZhdGUubWFwLnNldChpZCwge1xuICAgICAgZWxlOiBfZWxlMixcbiAgICAgIGluZGV4OiAwXG4gICAgfSk7XG5cbiAgICBfcHJpdmF0ZS5yZW1vdmVkID0gZmFsc2U7XG5cbiAgICBpZiAoYWRkVG9Qb29sKSB7XG4gICAgICBjeS5hZGRUb1Bvb2woX2VsZTIpO1xuICAgIH1cbiAgfSAvLyBmb3IgZWFjaCBlbGVtZW50XG4gIC8vIGRvIGNvbXBvdW5kIG5vZGUgc2FuaXR5IGNoZWNrc1xuXG5cbiAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgbm9kZXMubGVuZ3RoOyBfaTQrKykge1xuICAgIC8vIGVhY2ggbm9kZVxuICAgIHZhciBub2RlID0gbm9kZXNbX2k0XTtcbiAgICB2YXIgX2RhdGE0ID0gbm9kZS5fcHJpdmF0ZS5kYXRhO1xuXG4gICAgaWYgKG51bWJlcihfZGF0YTQucGFyZW50KSkge1xuICAgICAgLy8gdGhlbiBhdXRvbWFrZSBzdHJpbmdcbiAgICAgIF9kYXRhNC5wYXJlbnQgPSAnJyArIF9kYXRhNC5wYXJlbnQ7XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudElkID0gX2RhdGE0LnBhcmVudDtcbiAgICB2YXIgc3BlY2lmaWVkUGFyZW50ID0gcGFyZW50SWQgIT0gbnVsbDtcblxuICAgIGlmIChzcGVjaWZpZWRQYXJlbnQpIHtcbiAgICAgIHZhciBwYXJlbnQgPSBjeS5nZXRFbGVtZW50QnlJZChwYXJlbnRJZCk7XG5cbiAgICAgIGlmIChwYXJlbnQuZW1wdHkoKSkge1xuICAgICAgICAvLyBub24tZXhpc3RhbnQgcGFyZW50OyBqdXN0IHJlbW92ZSBpdFxuICAgICAgICBfZGF0YTQucGFyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNlbGZBc1BhcmVudCA9IGZhbHNlO1xuICAgICAgICB2YXIgYW5jZXN0b3IgPSBwYXJlbnQ7XG5cbiAgICAgICAgd2hpbGUgKCFhbmNlc3Rvci5lbXB0eSgpKSB7XG4gICAgICAgICAgaWYgKG5vZGUuc2FtZShhbmNlc3RvcikpIHtcbiAgICAgICAgICAgIC8vIG1hcmsgc2VsZiBhcyBwYXJlbnQgYW5kIHJlbW92ZSBmcm9tIGRhdGFcbiAgICAgICAgICAgIHNlbGZBc1BhcmVudCA9IHRydWU7XG4gICAgICAgICAgICBfZGF0YTQucGFyZW50ID0gdW5kZWZpbmVkOyAvLyByZW1vdmUgcGFyZW50IHJlZmVyZW5jZVxuICAgICAgICAgICAgLy8gZXhpdCBvciB3ZSBsb29wIGZvcmV2ZXJcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2VsZkFzUGFyZW50KSB7XG4gICAgICAgICAgLy8gY29ubmVjdCB3aXRoIGNoaWxkcmVuXG4gICAgICAgICAgcGFyZW50WzBdLl9wcml2YXRlLmNoaWxkcmVuLnB1c2gobm9kZSk7XG5cbiAgICAgICAgICBub2RlLl9wcml2YXRlLnBhcmVudCA9IHBhcmVudFswXTsgLy8gbGV0IHRoZSBjb3JlIGtub3cgd2UgaGF2ZSBhIGNvbXBvdW5kIGdyYXBoXG5cbiAgICAgICAgICBjeV9wLmhhc0NvbXBvdW5kTm9kZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IC8vIGVsc2VcblxuICAgIH0gLy8gaWYgc3BlY2lmaWVkIHBhcmVudFxuXG4gIH0gLy8gZm9yIGVhY2ggbm9kZVxuXG5cbiAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgcmVzdG9yZWQgPSBlbGVtZW50cy5sZW5ndGggPT09IHNlbGYubGVuZ3RoID8gc2VsZiA6IG5ldyBDb2xsZWN0aW9uKGN5LCBlbGVtZW50cyk7XG5cbiAgICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCByZXN0b3JlZC5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICB2YXIgX2VsZTMgPSByZXN0b3JlZFtfaTVdO1xuXG4gICAgICBpZiAoX2VsZTMuaXNOb2RlKCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIGFkZGluZyBhbiBlZGdlIGludmFsaWRhdGVzIHRoZSB0cmF2ZXJzYWwgY2FjaGVzIGZvciB0aGUgcGFyYWxsZWwgZWRnZXNcblxuXG4gICAgICBfZWxlMy5wYXJhbGxlbEVkZ2VzKCkuY2xlYXJUcmF2ZXJzYWxDYWNoZSgpOyAvLyBhZGRpbmcgYW4gZWRnZSBpbnZhbGlkYXRlcyB0aGUgdHJhdmVyc2FsIGNhY2hlIGZvciB0aGUgY29ubmVjdGVkIG5vZGVzXG5cblxuICAgICAgX2VsZTMuc291cmNlKCkuY2xlYXJUcmF2ZXJzYWxDYWNoZSgpO1xuXG4gICAgICBfZWxlMy50YXJnZXQoKS5jbGVhclRyYXZlcnNhbENhY2hlKCk7XG4gICAgfVxuXG4gICAgdmFyIHRvVXBkYXRlU3R5bGU7XG5cbiAgICBpZiAoY3lfcC5oYXNDb21wb3VuZE5vZGVzKSB7XG4gICAgICB0b1VwZGF0ZVN0eWxlID0gY3kuY29sbGVjdGlvbigpLm1lcmdlKHJlc3RvcmVkKS5tZXJnZShyZXN0b3JlZC5jb25uZWN0ZWROb2RlcygpKS5tZXJnZShyZXN0b3JlZC5wYXJlbnQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvVXBkYXRlU3R5bGUgPSByZXN0b3JlZDtcbiAgICB9XG5cbiAgICB0b1VwZGF0ZVN0eWxlLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSgpLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSgpLnVwZGF0ZVN0eWxlKG5vdGlmeVJlbmRlcmVyKTtcblxuICAgIGlmIChub3RpZnlSZW5kZXJlcikge1xuICAgICAgcmVzdG9yZWQuZW1pdEFuZE5vdGlmeSgnYWRkJyk7XG4gICAgfSBlbHNlIGlmIChhZGRUb1Bvb2wpIHtcbiAgICAgIHJlc3RvcmVkLmVtaXQoJ2FkZCcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxmOyAvLyBjaGFpbmFiaWxpdHlcbn07XG5cbmVsZXNmbiR1LnJlbW92ZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlbGUgPSB0aGlzWzBdO1xuICByZXR1cm4gZWxlICYmIGVsZS5fcHJpdmF0ZS5yZW1vdmVkO1xufTtcblxuZWxlc2ZuJHUuaW5zaWRlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlID0gdGhpc1swXTtcbiAgcmV0dXJuIGVsZSAmJiAhZWxlLl9wcml2YXRlLnJlbW92ZWQ7XG59O1xuXG5lbGVzZm4kdS5yZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBub3RpZnlSZW5kZXJlciA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcbiAgdmFyIHJlbW92ZUZyb21Qb29sID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0cnVlO1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBlbGVzVG9SZW1vdmUgPSBbXTtcbiAgdmFyIGVsZXNUb1JlbW92ZUlkcyA9IHt9O1xuICB2YXIgY3kgPSBzZWxmLl9wcml2YXRlLmN5OyAvLyBhZGQgY29ubmVjdGVkIGVkZ2VzXG5cbiAgZnVuY3Rpb24gYWRkQ29ubmVjdGVkRWRnZXMobm9kZSkge1xuICAgIHZhciBlZGdlcyA9IG5vZGUuX3ByaXZhdGUuZWRnZXM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhZGQoZWRnZXNbaV0pO1xuICAgIH1cbiAgfSAvLyBhZGQgZGVzY2VuZGFudCBub2Rlc1xuXG5cbiAgZnVuY3Rpb24gYWRkQ2hpbGRyZW4obm9kZSkge1xuICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuX3ByaXZhdGUuY2hpbGRyZW47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhZGQoY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZChlbGUpIHtcbiAgICB2YXIgYWxyZWFkeUFkZGVkID0gZWxlc1RvUmVtb3ZlSWRzW2VsZS5pZCgpXTtcblxuICAgIGlmIChyZW1vdmVGcm9tUG9vbCAmJiBlbGUucmVtb3ZlZCgpIHx8IGFscmVhZHlBZGRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVzVG9SZW1vdmVJZHNbZWxlLmlkKCldID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICBlbGVzVG9SZW1vdmUucHVzaChlbGUpOyAvLyBub2RlcyBhcmUgcmVtb3ZlZCBsYXN0XG5cbiAgICAgIGFkZENvbm5lY3RlZEVkZ2VzKGVsZSk7XG4gICAgICBhZGRDaGlsZHJlbihlbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVzVG9SZW1vdmUudW5zaGlmdChlbGUpOyAvLyBlZGdlcyBhcmUgcmVtb3ZlZCBmaXJzdFxuICAgIH1cbiAgfSAvLyBtYWtlIHRoZSBsaXN0IG9mIGVsZW1lbnRzIHRvIHJlbW92ZVxuICAvLyAobWF5IGJlIHJlbW92aW5nIG1vcmUgdGhhbiBzcGVjaWZpZWQgZHVlIHRvIGNvbm5lY3RlZCBlZGdlcyBldGMpXG5cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IHNlbGYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IHNlbGZbaV07XG4gICAgYWRkKGVsZSk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVFZGdlUmVmKG5vZGUsIGVkZ2UpIHtcbiAgICB2YXIgY29ubmVjdGVkRWRnZXMgPSBub2RlLl9wcml2YXRlLmVkZ2VzO1xuICAgIHJlbW92ZUZyb21BcnJheShjb25uZWN0ZWRFZGdlcywgZWRnZSk7IC8vIHJlbW92aW5nIGFuIGVkZ2VzIGludmFsaWRhdGVzIHRoZSB0cmF2ZXJzYWwgY2FjaGUgZm9yIGl0cyBub2Rlc1xuXG4gICAgbm9kZS5jbGVhclRyYXZlcnNhbENhY2hlKCk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVQYXJhbGxlbFJlZihwbGxFZGdlKSB7XG4gICAgLy8gcmVtb3ZpbmcgYW4gZWRnZSBpbnZhbGlkYXRlcyB0aGUgdHJhdmVyc2FsIGNhY2hlcyBmb3IgdGhlIHBhcmFsbGVsIGVkZ2VzXG4gICAgcGxsRWRnZS5jbGVhclRyYXZlcnNhbENhY2hlKCk7XG4gIH1cblxuICB2YXIgYWx0ZXJlZFBhcmVudHMgPSBbXTtcbiAgYWx0ZXJlZFBhcmVudHMuaWRzID0ge307XG5cbiAgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRSZWYocGFyZW50LCBlbGUpIHtcbiAgICBlbGUgPSBlbGVbMF07XG4gICAgcGFyZW50ID0gcGFyZW50WzBdO1xuICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudC5fcHJpdmF0ZS5jaGlsZHJlbjtcbiAgICB2YXIgcGlkID0gcGFyZW50LmlkKCk7XG4gICAgcmVtb3ZlRnJvbUFycmF5KGNoaWxkcmVuLCBlbGUpOyAvLyByZW1vdmUgcGFyZW50ID0+IGNoaWxkIHJlZlxuXG4gICAgZWxlLl9wcml2YXRlLnBhcmVudCA9IG51bGw7IC8vIHJlbW92ZSBjaGlsZCA9PiBwYXJlbnQgcmVmXG5cbiAgICBpZiAoIWFsdGVyZWRQYXJlbnRzLmlkc1twaWRdKSB7XG4gICAgICBhbHRlcmVkUGFyZW50cy5pZHNbcGlkXSA9IHRydWU7XG4gICAgICBhbHRlcmVkUGFyZW50cy5wdXNoKHBhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZi5kaXJ0eUNvbXBvdW5kQm91bmRzQ2FjaGUoKTtcblxuICBpZiAocmVtb3ZlRnJvbVBvb2wpIHtcbiAgICBjeS5yZW1vdmVGcm9tUG9vbChlbGVzVG9SZW1vdmUpOyAvLyByZW1vdmUgZnJvbSBjb3JlIHBvb2xcbiAgfVxuXG4gIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IGVsZXNUb1JlbW92ZS5sZW5ndGg7IF9pNisrKSB7XG4gICAgdmFyIF9lbGU0ID0gZWxlc1RvUmVtb3ZlW19pNl07XG5cbiAgICBpZiAoX2VsZTQuaXNFZGdlKCkpIHtcbiAgICAgIC8vIHJlbW92ZSByZWZlcmVuY2VzIHRvIHRoaXMgZWRnZSBpbiBpdHMgY29ubmVjdGVkIG5vZGVzXG4gICAgICB2YXIgc3JjID0gX2VsZTQuc291cmNlKClbMF07XG5cbiAgICAgIHZhciB0Z3QgPSBfZWxlNC50YXJnZXQoKVswXTtcblxuICAgICAgcmVtb3ZlRWRnZVJlZihzcmMsIF9lbGU0KTtcbiAgICAgIHJlbW92ZUVkZ2VSZWYodGd0LCBfZWxlNCk7XG5cbiAgICAgIHZhciBwbGxFZGdlcyA9IF9lbGU0LnBhcmFsbGVsRWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwbGxFZGdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgcGxsRWRnZSA9IHBsbEVkZ2VzW2pdO1xuICAgICAgICByZW1vdmVQYXJhbGxlbFJlZihwbGxFZGdlKTtcblxuICAgICAgICBpZiAocGxsRWRnZS5pc0J1bmRsZWRCZXppZXIoKSkge1xuICAgICAgICAgIHBsbEVkZ2UuZGlydHlCb3VuZGluZ0JveENhY2hlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmVtb3ZlIHJlZmVyZW5jZSB0byBwYXJlbnRcbiAgICAgIHZhciBwYXJlbnQgPSBfZWxlNC5wYXJlbnQoKTtcblxuICAgICAgaWYgKHBhcmVudC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgcmVtb3ZlQ2hpbGRSZWYocGFyZW50LCBfZWxlNCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlbW92ZUZyb21Qb29sKSB7XG4gICAgICAvLyBtYXJrIGFzIHJlbW92ZWRcbiAgICAgIF9lbGU0Ll9wcml2YXRlLnJlbW92ZWQgPSB0cnVlO1xuICAgIH1cbiAgfSAvLyBjaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhIGNvbXBvdW5kIGdyYXBoIG9yIG5vdFxuXG5cbiAgdmFyIGVsZXNTdGlsbEluc2lkZSA9IGN5Ll9wcml2YXRlLmVsZW1lbnRzO1xuICBjeS5fcHJpdmF0ZS5oYXNDb21wb3VuZE5vZGVzID0gZmFsc2U7XG5cbiAgZm9yICh2YXIgX2k3ID0gMDsgX2k3IDwgZWxlc1N0aWxsSW5zaWRlLmxlbmd0aDsgX2k3KyspIHtcbiAgICB2YXIgX2VsZTUgPSBlbGVzU3RpbGxJbnNpZGVbX2k3XTtcblxuICAgIGlmIChfZWxlNS5pc1BhcmVudCgpKSB7XG4gICAgICBjeS5fcHJpdmF0ZS5oYXNDb21wb3VuZE5vZGVzID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZhciByZW1vdmVkRWxlbWVudHMgPSBuZXcgQ29sbGVjdGlvbih0aGlzLmN5KCksIGVsZXNUb1JlbW92ZSk7XG5cbiAgaWYgKHJlbW92ZWRFbGVtZW50cy5zaXplKCkgPiAwKSB7XG4gICAgLy8gbXVzdCBtYW51YWxseSBub3RpZnkgc2luY2UgdHJpZ2dlciB3b24ndCBkbyB0aGlzIGF1dG9tYXRpY2FsbHkgb25jZSByZW1vdmVkXG4gICAgaWYgKG5vdGlmeVJlbmRlcmVyKSB7XG4gICAgICByZW1vdmVkRWxlbWVudHMuZW1pdEFuZE5vdGlmeSgncmVtb3ZlJyk7XG4gICAgfSBlbHNlIGlmIChyZW1vdmVGcm9tUG9vbCkge1xuICAgICAgcmVtb3ZlZEVsZW1lbnRzLmVtaXQoJ3JlbW92ZScpO1xuICAgIH1cbiAgfSAvLyB0aGUgcGFyZW50cyB3aG8gd2VyZSBtb2RpZmllZCBieSB0aGUgcmVtb3ZhbCBuZWVkIHRoZWlyIHN0eWxlIHVwZGF0ZWRcblxuXG4gIGZvciAodmFyIF9pOCA9IDA7IF9pOCA8IGFsdGVyZWRQYXJlbnRzLmxlbmd0aDsgX2k4KyspIHtcbiAgICB2YXIgX2VsZTYgPSBhbHRlcmVkUGFyZW50c1tfaThdO1xuXG4gICAgaWYgKCFyZW1vdmVGcm9tUG9vbCB8fCAhX2VsZTYucmVtb3ZlZCgpKSB7XG4gICAgICBfZWxlNi51cGRhdGVTdHlsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZW1vdmVkRWxlbWVudHM7XG59O1xuXG5lbGVzZm4kdS5tb3ZlID0gZnVuY3Rpb24gKHN0cnVjdCkge1xuICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuICB2YXIgZWxlcyA9IHRoaXM7IC8vIGp1c3QgY2xlYW4gdXAgcmVmcywgY2FjaGVzLCBldGMuIGluIHRoZSBzYW1lIHdheSBhcyB3aGVuIHJlbW92aW5nIGFuZCB0aGVuIHJlc3RvcmluZ1xuICAvLyAob3VyIGNhbGxzIHRvIHJlbW92ZS9yZXN0b3JlIGRvIG5vdCByZW1vdmUgZnJvbSB0aGUgZ3JhcGggb3IgbWFrZSBldmVudHMpXG5cbiAgdmFyIG5vdGlmeVJlbmRlcmVyID0gZmFsc2U7XG4gIHZhciBtb2RpZnlQb29sID0gZmFsc2U7XG5cbiAgdmFyIHRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoaWQpIHtcbiAgICByZXR1cm4gaWQgPT0gbnVsbCA/IGlkIDogJycgKyBpZDtcbiAgfTsgLy8gaWQgbXVzdCBiZSBzdHJpbmdcblxuXG4gIGlmIChzdHJ1Y3Quc291cmNlICE9PSB1bmRlZmluZWQgfHwgc3RydWN0LnRhcmdldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHNyY0lkID0gdG9TdHJpbmcoc3RydWN0LnNvdXJjZSk7XG4gICAgdmFyIHRndElkID0gdG9TdHJpbmcoc3RydWN0LnRhcmdldCk7XG4gICAgdmFyIHNyY0V4aXN0cyA9IHNyY0lkICE9IG51bGwgJiYgY3kuaGFzRWxlbWVudFdpdGhJZChzcmNJZCk7XG4gICAgdmFyIHRndEV4aXN0cyA9IHRndElkICE9IG51bGwgJiYgY3kuaGFzRWxlbWVudFdpdGhJZCh0Z3RJZCk7XG5cbiAgICBpZiAoc3JjRXhpc3RzIHx8IHRndEV4aXN0cykge1xuICAgICAgY3kuYmF0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBhdm9pZCBkdXBsaWNhdGUgc3R5bGUgdXBkYXRlc1xuICAgICAgICBlbGVzLnJlbW92ZShub3RpZnlSZW5kZXJlciwgbW9kaWZ5UG9vbCk7IC8vIGNsZWFuIHVwIHJlZnMgZXRjLlxuXG4gICAgICAgIGVsZXMuZW1pdEFuZE5vdGlmeSgnbW92ZW91dCcpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgICAgIHZhciBfZGF0YTUgPSBlbGUuX3ByaXZhdGUuZGF0YTtcblxuICAgICAgICAgIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICAgICAgICAgIGlmIChzcmNFeGlzdHMpIHtcbiAgICAgICAgICAgICAgX2RhdGE1LnNvdXJjZSA9IHNyY0lkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGd0RXhpc3RzKSB7XG4gICAgICAgICAgICAgIF9kYXRhNS50YXJnZXQgPSB0Z3RJZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBlbGVzLnJlc3RvcmUobm90aWZ5UmVuZGVyZXIsIG1vZGlmeVBvb2wpOyAvLyBtYWtlIG5ldyByZWZzLCBzdHlsZSwgZXRjLlxuICAgICAgfSk7XG4gICAgICBlbGVzLmVtaXRBbmROb3RpZnkoJ21vdmUnKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoc3RydWN0LnBhcmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gbW92ZSBub2RlIHRvIG5ldyBwYXJlbnRcbiAgICB2YXIgcGFyZW50SWQgPSB0b1N0cmluZyhzdHJ1Y3QucGFyZW50KTtcbiAgICB2YXIgcGFyZW50RXhpc3RzID0gcGFyZW50SWQgPT09IG51bGwgfHwgY3kuaGFzRWxlbWVudFdpdGhJZChwYXJlbnRJZCk7XG5cbiAgICBpZiAocGFyZW50RXhpc3RzKSB7XG4gICAgICB2YXIgcGlkVG9Bc3NpZ24gPSBwYXJlbnRJZCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHBhcmVudElkO1xuICAgICAgY3kuYmF0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBhdm9pZCBkdXBsaWNhdGUgc3R5bGUgdXBkYXRlc1xuICAgICAgICB2YXIgdXBkYXRlZCA9IGVsZXMucmVtb3ZlKG5vdGlmeVJlbmRlcmVyLCBtb2RpZnlQb29sKTsgLy8gY2xlYW4gdXAgcmVmcyBldGMuXG5cbiAgICAgICAgdXBkYXRlZC5lbWl0QW5kTm90aWZ5KCdtb3Zlb3V0Jyk7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICAgICAgdmFyIF9kYXRhNiA9IGVsZS5fcHJpdmF0ZS5kYXRhO1xuXG4gICAgICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICAgICAgX2RhdGE2LnBhcmVudCA9IHBpZFRvQXNzaWduO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZWQucmVzdG9yZShub3RpZnlSZW5kZXJlciwgbW9kaWZ5UG9vbCk7IC8vIG1ha2UgbmV3IHJlZnMsIHN0eWxlLCBldGMuXG4gICAgICB9KTtcbiAgICAgIGVsZXMuZW1pdEFuZE5vdGlmeSgnbW92ZScpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuW2VsZXNmbiRjLCBlbGVzZm4kZCwgZWxlc2ZuJGUsIGVsZXNmbiRmLCBlbGVzZm4kZywgZGF0YSQxLCBlbGVzZm4kaSwgZGltZW5zaW9ucywgZWxlc2ZuJG0sIGVsZXNmbiRuLCBlbGVzZm4kbywgZWxlc2ZuJHAsIGVsZXNmbiRxLCBlbGVzZm4kciwgZWxlc2ZuJHMsIGVsZXNmbiR0XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICBleHRlbmQoZWxlc2ZuJHUsIHByb3BzKTtcbn0pO1xuXG52YXIgY29yZWZuID0ge1xuICBhZGQ6IGZ1bmN0aW9uIGFkZChvcHRzKSB7XG4gICAgdmFyIGVsZW1lbnRzO1xuICAgIHZhciBjeSA9IHRoaXM7IC8vIGFkZCB0aGUgZWxlbWVudHNcblxuICAgIGlmIChlbGVtZW50T3JDb2xsZWN0aW9uKG9wdHMpKSB7XG4gICAgICB2YXIgZWxlcyA9IG9wdHM7XG5cbiAgICAgIGlmIChlbGVzLl9wcml2YXRlLmN5ID09PSBjeSkge1xuICAgICAgICAvLyBzYW1lIGluc3RhbmNlID0+IGp1c3QgcmVzdG9yZVxuICAgICAgICBlbGVtZW50cyA9IGVsZXMucmVzdG9yZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gb3RoZXJ3aXNlLCBjb3B5IGZyb20ganNvblxuICAgICAgICB2YXIganNvbnMgPSBbXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgICBqc29ucy5wdXNoKGVsZS5qc29uKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlbWVudHMgPSBuZXcgQ29sbGVjdGlvbihjeSwganNvbnMpO1xuICAgICAgfVxuICAgIH0gLy8gc3BlY2lmeSBhbiBhcnJheSBvZiBvcHRpb25zXG4gICAgZWxzZSBpZiAoYXJyYXkob3B0cykpIHtcbiAgICAgICAgdmFyIF9qc29ucyA9IG9wdHM7XG4gICAgICAgIGVsZW1lbnRzID0gbmV3IENvbGxlY3Rpb24oY3ksIF9qc29ucyk7XG4gICAgICB9IC8vIHNwZWNpZnkgdmlhIG9wdHMubm9kZXMgYW5kIG9wdHMuZWRnZXNcbiAgICAgIGVsc2UgaWYgKHBsYWluT2JqZWN0KG9wdHMpICYmIChhcnJheShvcHRzLm5vZGVzKSB8fCBhcnJheShvcHRzLmVkZ2VzKSkpIHtcbiAgICAgICAgICB2YXIgZWxlc0J5R3JvdXAgPSBvcHRzO1xuICAgICAgICAgIHZhciBfanNvbnMyID0gW107XG4gICAgICAgICAgdmFyIGdycyA9IFsnbm9kZXMnLCAnZWRnZXMnXTtcblxuICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgaWwgPSBncnMubGVuZ3RoOyBfaSA8IGlsOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgZ3JvdXAgPSBncnNbX2ldO1xuICAgICAgICAgICAgdmFyIGVsZXNBcnJheSA9IGVsZXNCeUdyb3VwW2dyb3VwXTtcblxuICAgICAgICAgICAgaWYgKGFycmF5KGVsZXNBcnJheSkpIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGpsID0gZWxlc0FycmF5Lmxlbmd0aDsgaiA8IGpsOyBqKyspIHtcbiAgICAgICAgICAgICAgICB2YXIganNvbiA9IGV4dGVuZCh7XG4gICAgICAgICAgICAgICAgICBncm91cDogZ3JvdXBcbiAgICAgICAgICAgICAgICB9LCBlbGVzQXJyYXlbal0pO1xuXG4gICAgICAgICAgICAgICAgX2pzb25zMi5wdXNoKGpzb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZWxlbWVudHMgPSBuZXcgQ29sbGVjdGlvbihjeSwgX2pzb25zMik7XG4gICAgICAgIH0gLy8gc3BlY2lmeSBvcHRpb25zIGZvciBvbmUgZWxlbWVudFxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBfanNvbiA9IG9wdHM7XG4gICAgICAgICAgICBlbGVtZW50cyA9IG5ldyBFbGVtZW50KGN5LCBfanNvbikuY29sbGVjdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50cztcbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoY29sbGVjdGlvbikge1xuICAgIGlmIChlbGVtZW50T3JDb2xsZWN0aW9uKGNvbGxlY3Rpb24pKSA7IGVsc2UgaWYgKHN0cmluZyhjb2xsZWN0aW9uKSkge1xuICAgICAgdmFyIHNlbGVjdG9yID0gY29sbGVjdGlvbjtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLiQoc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIHJldHVybiBjb2xsZWN0aW9uLnJlbW92ZSgpO1xuICB9XG59O1xuXG4vKiBnbG9iYWwgRmxvYXQzMkFycmF5ICovXG5cbi8qISBCZXppZXIgY3VydmUgZnVuY3Rpb24gZ2VuZXJhdG9yLiBDb3B5cmlnaHQgR2FldGFuIFJlbmF1ZGVhdS4gTUlUIExpY2Vuc2U6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX0xpY2Vuc2UgKi9cbmZ1bmN0aW9uIGdlbmVyYXRlQ3ViaWNCZXppZXIobVgxLCBtWTEsIG1YMiwgbVkyKSB7XG4gIHZhciBORVdUT05fSVRFUkFUSU9OUyA9IDQsXG4gICAgICBORVdUT05fTUlOX1NMT1BFID0gMC4wMDEsXG4gICAgICBTVUJESVZJU0lPTl9QUkVDSVNJT04gPSAwLjAwMDAwMDEsXG4gICAgICBTVUJESVZJU0lPTl9NQVhfSVRFUkFUSU9OUyA9IDEwLFxuICAgICAga1NwbGluZVRhYmxlU2l6ZSA9IDExLFxuICAgICAga1NhbXBsZVN0ZXBTaXplID0gMS4wIC8gKGtTcGxpbmVUYWJsZVNpemUgLSAxLjApLFxuICAgICAgZmxvYXQzMkFycmF5U3VwcG9ydGVkID0gdHlwZW9mIEZsb2F0MzJBcnJheSAhPT0gJ3VuZGVmaW5lZCc7XG4gIC8qIE11c3QgY29udGFpbiBmb3VyIGFyZ3VtZW50cy4gKi9cblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPT0gNCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvKiBBcmd1bWVudHMgbXVzdCBiZSBudW1iZXJzLiAqL1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSAhPT0gXCJudW1iZXJcIiB8fCBpc05hTihhcmd1bWVudHNbaV0pIHx8ICFpc0Zpbml0ZShhcmd1bWVudHNbaV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8qIFggdmFsdWVzIG11c3QgYmUgaW4gdGhlIFswLCAxXSByYW5nZS4gKi9cblxuXG4gIG1YMSA9IE1hdGgubWluKG1YMSwgMSk7XG4gIG1YMiA9IE1hdGgubWluKG1YMiwgMSk7XG4gIG1YMSA9IE1hdGgubWF4KG1YMSwgMCk7XG4gIG1YMiA9IE1hdGgubWF4KG1YMiwgMCk7XG4gIHZhciBtU2FtcGxlVmFsdWVzID0gZmxvYXQzMkFycmF5U3VwcG9ydGVkID8gbmV3IEZsb2F0MzJBcnJheShrU3BsaW5lVGFibGVTaXplKSA6IG5ldyBBcnJheShrU3BsaW5lVGFibGVTaXplKTtcblxuICBmdW5jdGlvbiBBKGFBMSwgYUEyKSB7XG4gICAgcmV0dXJuIDEuMCAtIDMuMCAqIGFBMiArIDMuMCAqIGFBMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIEIoYUExLCBhQTIpIHtcbiAgICByZXR1cm4gMy4wICogYUEyIC0gNi4wICogYUExO1xuICB9XG5cbiAgZnVuY3Rpb24gQyhhQTEpIHtcbiAgICByZXR1cm4gMy4wICogYUExO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FsY0JlemllcihhVCwgYUExLCBhQTIpIHtcbiAgICByZXR1cm4gKChBKGFBMSwgYUEyKSAqIGFUICsgQihhQTEsIGFBMikpICogYVQgKyBDKGFBMSkpICogYVQ7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRTbG9wZShhVCwgYUExLCBhQTIpIHtcbiAgICByZXR1cm4gMy4wICogQShhQTEsIGFBMikgKiBhVCAqIGFUICsgMi4wICogQihhQTEsIGFBMikgKiBhVCArIEMoYUExKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5ld3RvblJhcGhzb25JdGVyYXRlKGFYLCBhR3Vlc3NUKSB7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IE5FV1RPTl9JVEVSQVRJT05TOyArK19pKSB7XG4gICAgICB2YXIgY3VycmVudFNsb3BlID0gZ2V0U2xvcGUoYUd1ZXNzVCwgbVgxLCBtWDIpO1xuXG4gICAgICBpZiAoY3VycmVudFNsb3BlID09PSAwLjApIHtcbiAgICAgICAgcmV0dXJuIGFHdWVzc1Q7XG4gICAgICB9XG5cbiAgICAgIHZhciBjdXJyZW50WCA9IGNhbGNCZXppZXIoYUd1ZXNzVCwgbVgxLCBtWDIpIC0gYVg7XG4gICAgICBhR3Vlc3NUIC09IGN1cnJlbnRYIC8gY3VycmVudFNsb3BlO1xuICAgIH1cblxuICAgIHJldHVybiBhR3Vlc3NUO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FsY1NhbXBsZVZhbHVlcygpIHtcbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBrU3BsaW5lVGFibGVTaXplOyArK19pMikge1xuICAgICAgbVNhbXBsZVZhbHVlc1tfaTJdID0gY2FsY0JlemllcihfaTIgKiBrU2FtcGxlU3RlcFNpemUsIG1YMSwgbVgyKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBiaW5hcnlTdWJkaXZpZGUoYVgsIGFBLCBhQikge1xuICAgIHZhciBjdXJyZW50WCxcbiAgICAgICAgY3VycmVudFQsXG4gICAgICAgIGkgPSAwO1xuXG4gICAgZG8ge1xuICAgICAgY3VycmVudFQgPSBhQSArIChhQiAtIGFBKSAvIDIuMDtcbiAgICAgIGN1cnJlbnRYID0gY2FsY0JlemllcihjdXJyZW50VCwgbVgxLCBtWDIpIC0gYVg7XG5cbiAgICAgIGlmIChjdXJyZW50WCA+IDAuMCkge1xuICAgICAgICBhQiA9IGN1cnJlbnRUO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYUEgPSBjdXJyZW50VDtcbiAgICAgIH1cbiAgICB9IHdoaWxlIChNYXRoLmFicyhjdXJyZW50WCkgPiBTVUJESVZJU0lPTl9QUkVDSVNJT04gJiYgKytpIDwgU1VCRElWSVNJT05fTUFYX0lURVJBVElPTlMpO1xuXG4gICAgcmV0dXJuIGN1cnJlbnRUO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0VEZvclgoYVgpIHtcbiAgICB2YXIgaW50ZXJ2YWxTdGFydCA9IDAuMCxcbiAgICAgICAgY3VycmVudFNhbXBsZSA9IDEsXG4gICAgICAgIGxhc3RTYW1wbGUgPSBrU3BsaW5lVGFibGVTaXplIC0gMTtcblxuICAgIGZvciAoOyBjdXJyZW50U2FtcGxlICE9PSBsYXN0U2FtcGxlICYmIG1TYW1wbGVWYWx1ZXNbY3VycmVudFNhbXBsZV0gPD0gYVg7ICsrY3VycmVudFNhbXBsZSkge1xuICAgICAgaW50ZXJ2YWxTdGFydCArPSBrU2FtcGxlU3RlcFNpemU7XG4gICAgfVxuXG4gICAgLS1jdXJyZW50U2FtcGxlO1xuICAgIHZhciBkaXN0ID0gKGFYIC0gbVNhbXBsZVZhbHVlc1tjdXJyZW50U2FtcGxlXSkgLyAobVNhbXBsZVZhbHVlc1tjdXJyZW50U2FtcGxlICsgMV0gLSBtU2FtcGxlVmFsdWVzW2N1cnJlbnRTYW1wbGVdKSxcbiAgICAgICAgZ3Vlc3NGb3JUID0gaW50ZXJ2YWxTdGFydCArIGRpc3QgKiBrU2FtcGxlU3RlcFNpemUsXG4gICAgICAgIGluaXRpYWxTbG9wZSA9IGdldFNsb3BlKGd1ZXNzRm9yVCwgbVgxLCBtWDIpO1xuXG4gICAgaWYgKGluaXRpYWxTbG9wZSA+PSBORVdUT05fTUlOX1NMT1BFKSB7XG4gICAgICByZXR1cm4gbmV3dG9uUmFwaHNvbkl0ZXJhdGUoYVgsIGd1ZXNzRm9yVCk7XG4gICAgfSBlbHNlIGlmIChpbml0aWFsU2xvcGUgPT09IDAuMCkge1xuICAgICAgcmV0dXJuIGd1ZXNzRm9yVDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJpbmFyeVN1YmRpdmlkZShhWCwgaW50ZXJ2YWxTdGFydCwgaW50ZXJ2YWxTdGFydCArIGtTYW1wbGVTdGVwU2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIF9wcmVjb21wdXRlZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHByZWNvbXB1dGUoKSB7XG4gICAgX3ByZWNvbXB1dGVkID0gdHJ1ZTtcblxuICAgIGlmIChtWDEgIT09IG1ZMSB8fCBtWDIgIT09IG1ZMikge1xuICAgICAgY2FsY1NhbXBsZVZhbHVlcygpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBmID0gZnVuY3Rpb24gZihhWCkge1xuICAgIGlmICghX3ByZWNvbXB1dGVkKSB7XG4gICAgICBwcmVjb21wdXRlKCk7XG4gICAgfVxuXG4gICAgaWYgKG1YMSA9PT0gbVkxICYmIG1YMiA9PT0gbVkyKSB7XG4gICAgICByZXR1cm4gYVg7XG4gICAgfVxuXG4gICAgaWYgKGFYID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAoYVggPT09IDEpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHJldHVybiBjYWxjQmV6aWVyKGdldFRGb3JYKGFYKSwgbVkxLCBtWTIpO1xuICB9O1xuXG4gIGYuZ2V0Q29udHJvbFBvaW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gW3tcbiAgICAgIHg6IG1YMSxcbiAgICAgIHk6IG1ZMVxuICAgIH0sIHtcbiAgICAgIHg6IG1YMixcbiAgICAgIHk6IG1ZMlxuICAgIH1dO1xuICB9O1xuXG4gIHZhciBzdHIgPSBcImdlbmVyYXRlQmV6aWVyKFwiICsgW21YMSwgbVkxLCBtWDIsIG1ZMl0gKyBcIilcIjtcblxuICBmLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBzdHI7XG4gIH07XG5cbiAgcmV0dXJuIGY7XG59XG5cbi8qISBSdW5nZS1LdXR0YSBzcHJpbmcgcGh5c2ljcyBmdW5jdGlvbiBnZW5lcmF0b3IuIEFkYXB0ZWQgZnJvbSBGcmFtZXIuanMsIGNvcHlyaWdodCBLb2VuIEJvay4gTUlUIExpY2Vuc2U6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX0xpY2Vuc2UgKi9cblxuLyogR2l2ZW4gYSB0ZW5zaW9uLCBmcmljdGlvbiwgYW5kIGR1cmF0aW9uLCBhIHNpbXVsYXRpb24gYXQgNjBGUFMgd2lsbCBmaXJzdCBydW4gd2l0aG91dCBhIGRlZmluZWQgZHVyYXRpb24gaW4gb3JkZXIgdG8gY2FsY3VsYXRlIHRoZSBmdWxsIHBhdGguIEEgc2Vjb25kIHBhc3NcbiAgIHRoZW4gYWRqdXN0cyB0aGUgdGltZSBkZWx0YSAtLSB1c2luZyB0aGUgcmVsYXRpb24gYmV0d2VlbiBhY3R1YWwgdGltZSBhbmQgZHVyYXRpb24gLS0gdG8gY2FsY3VsYXRlIHRoZSBwYXRoIGZvciB0aGUgZHVyYXRpb24tY29uc3RyYWluZWQgYW5pbWF0aW9uLiAqL1xudmFyIGdlbmVyYXRlU3ByaW5nUks0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBzcHJpbmdBY2NlbGVyYXRpb25Gb3JTdGF0ZShzdGF0ZSkge1xuICAgIHJldHVybiAtc3RhdGUudGVuc2lvbiAqIHN0YXRlLnggLSBzdGF0ZS5mcmljdGlvbiAqIHN0YXRlLnY7XG4gIH1cblxuICBmdW5jdGlvbiBzcHJpbmdFdmFsdWF0ZVN0YXRlV2l0aERlcml2YXRpdmUoaW5pdGlhbFN0YXRlLCBkdCwgZGVyaXZhdGl2ZSkge1xuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHg6IGluaXRpYWxTdGF0ZS54ICsgZGVyaXZhdGl2ZS5keCAqIGR0LFxuICAgICAgdjogaW5pdGlhbFN0YXRlLnYgKyBkZXJpdmF0aXZlLmR2ICogZHQsXG4gICAgICB0ZW5zaW9uOiBpbml0aWFsU3RhdGUudGVuc2lvbixcbiAgICAgIGZyaWN0aW9uOiBpbml0aWFsU3RhdGUuZnJpY3Rpb25cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBkeDogc3RhdGUudixcbiAgICAgIGR2OiBzcHJpbmdBY2NlbGVyYXRpb25Gb3JTdGF0ZShzdGF0ZSlcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gc3ByaW5nSW50ZWdyYXRlU3RhdGUoc3RhdGUsIGR0KSB7XG4gICAgdmFyIGEgPSB7XG4gICAgICBkeDogc3RhdGUudixcbiAgICAgIGR2OiBzcHJpbmdBY2NlbGVyYXRpb25Gb3JTdGF0ZShzdGF0ZSlcbiAgICB9LFxuICAgICAgICBiID0gc3ByaW5nRXZhbHVhdGVTdGF0ZVdpdGhEZXJpdmF0aXZlKHN0YXRlLCBkdCAqIDAuNSwgYSksXG4gICAgICAgIGMgPSBzcHJpbmdFdmFsdWF0ZVN0YXRlV2l0aERlcml2YXRpdmUoc3RhdGUsIGR0ICogMC41LCBiKSxcbiAgICAgICAgZCA9IHNwcmluZ0V2YWx1YXRlU3RhdGVXaXRoRGVyaXZhdGl2ZShzdGF0ZSwgZHQsIGMpLFxuICAgICAgICBkeGR0ID0gMS4wIC8gNi4wICogKGEuZHggKyAyLjAgKiAoYi5keCArIGMuZHgpICsgZC5keCksXG4gICAgICAgIGR2ZHQgPSAxLjAgLyA2LjAgKiAoYS5kdiArIDIuMCAqIChiLmR2ICsgYy5kdikgKyBkLmR2KTtcbiAgICBzdGF0ZS54ID0gc3RhdGUueCArIGR4ZHQgKiBkdDtcbiAgICBzdGF0ZS52ID0gc3RhdGUudiArIGR2ZHQgKiBkdDtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gc3ByaW5nUks0RmFjdG9yeSh0ZW5zaW9uLCBmcmljdGlvbiwgZHVyYXRpb24pIHtcbiAgICB2YXIgaW5pdFN0YXRlID0ge1xuICAgICAgeDogLTEsXG4gICAgICB2OiAwLFxuICAgICAgdGVuc2lvbjogbnVsbCxcbiAgICAgIGZyaWN0aW9uOiBudWxsXG4gICAgfSxcbiAgICAgICAgcGF0aCA9IFswXSxcbiAgICAgICAgdGltZV9sYXBzZWQgPSAwLFxuICAgICAgICB0b2xlcmFuY2UgPSAxIC8gMTAwMDAsXG4gICAgICAgIERUID0gMTYgLyAxMDAwLFxuICAgICAgICBoYXZlX2R1cmF0aW9uLFxuICAgICAgICBkdCxcbiAgICAgICAgbGFzdF9zdGF0ZTtcbiAgICB0ZW5zaW9uID0gcGFyc2VGbG9hdCh0ZW5zaW9uKSB8fCA1MDA7XG4gICAgZnJpY3Rpb24gPSBwYXJzZUZsb2F0KGZyaWN0aW9uKSB8fCAyMDtcbiAgICBkdXJhdGlvbiA9IGR1cmF0aW9uIHx8IG51bGw7XG4gICAgaW5pdFN0YXRlLnRlbnNpb24gPSB0ZW5zaW9uO1xuICAgIGluaXRTdGF0ZS5mcmljdGlvbiA9IGZyaWN0aW9uO1xuICAgIGhhdmVfZHVyYXRpb24gPSBkdXJhdGlvbiAhPT0gbnVsbDtcbiAgICAvKiBDYWxjdWxhdGUgdGhlIGFjdHVhbCB0aW1lIGl0IHRha2VzIGZvciB0aGlzIGFuaW1hdGlvbiB0byBjb21wbGV0ZSB3aXRoIHRoZSBwcm92aWRlZCBjb25kaXRpb25zLiAqL1xuXG4gICAgaWYgKGhhdmVfZHVyYXRpb24pIHtcbiAgICAgIC8qIFJ1biB0aGUgc2ltdWxhdGlvbiB3aXRob3V0IGEgZHVyYXRpb24uICovXG4gICAgICB0aW1lX2xhcHNlZCA9IHNwcmluZ1JLNEZhY3RvcnkodGVuc2lvbiwgZnJpY3Rpb24pO1xuICAgICAgLyogQ29tcHV0ZSB0aGUgYWRqdXN0ZWQgdGltZSBkZWx0YS4gKi9cblxuICAgICAgZHQgPSB0aW1lX2xhcHNlZCAvIGR1cmF0aW9uICogRFQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGR0ID0gRFQ7XG4gICAgfVxuXG4gICAgZm9yICg7Oykge1xuICAgICAgLyogTmV4dC9zdGVwIGZ1bmN0aW9uIC4qL1xuICAgICAgbGFzdF9zdGF0ZSA9IHNwcmluZ0ludGVncmF0ZVN0YXRlKGxhc3Rfc3RhdGUgfHwgaW5pdFN0YXRlLCBkdCk7XG4gICAgICAvKiBTdG9yZSB0aGUgcG9zaXRpb24uICovXG5cbiAgICAgIHBhdGgucHVzaCgxICsgbGFzdF9zdGF0ZS54KTtcbiAgICAgIHRpbWVfbGFwc2VkICs9IDE2O1xuICAgICAgLyogSWYgdGhlIGNoYW5nZSB0aHJlc2hvbGQgaXMgcmVhY2hlZCwgYnJlYWsuICovXG5cbiAgICAgIGlmICghKE1hdGguYWJzKGxhc3Rfc3RhdGUueCkgPiB0b2xlcmFuY2UgJiYgTWF0aC5hYnMobGFzdF9zdGF0ZS52KSA+IHRvbGVyYW5jZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIC8qIElmIGR1cmF0aW9uIGlzIG5vdCBkZWZpbmVkLCByZXR1cm4gdGhlIGFjdHVhbCB0aW1lIHJlcXVpcmVkIGZvciBjb21wbGV0aW5nIHRoaXMgYW5pbWF0aW9uLiBPdGhlcndpc2UsIHJldHVybiBhIGNsb3N1cmUgdGhhdCBob2xkcyB0aGVcbiAgICAgICBjb21wdXRlZCBwYXRoIGFuZCByZXR1cm5zIGEgc25hcHNob3Qgb2YgdGhlIHBvc2l0aW9uIGFjY29yZGluZyB0byBhIGdpdmVuIHBlcmNlbnRDb21wbGV0ZS4gKi9cblxuXG4gICAgcmV0dXJuICFoYXZlX2R1cmF0aW9uID8gdGltZV9sYXBzZWQgOiBmdW5jdGlvbiAocGVyY2VudENvbXBsZXRlKSB7XG4gICAgICByZXR1cm4gcGF0aFtwZXJjZW50Q29tcGxldGUgKiAocGF0aC5sZW5ndGggLSAxKSB8IDBdO1xuICAgIH07XG4gIH07XG59KCk7XG5cbnZhciBjdWJpY0JlemllciA9IGZ1bmN0aW9uIGN1YmljQmV6aWVyKHQxLCBwMSwgdDIsIHAyKSB7XG4gIHZhciBiZXppZXIgPSBnZW5lcmF0ZUN1YmljQmV6aWVyKHQxLCBwMSwgdDIsIHAyKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzdGFydCwgZW5kLCBwZXJjZW50KSB7XG4gICAgcmV0dXJuIHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIGJlemllcihwZXJjZW50KTtcbiAgfTtcbn07XG5cbnZhciBlYXNpbmdzID0ge1xuICAnbGluZWFyJzogZnVuY3Rpb24gbGluZWFyKHN0YXJ0LCBlbmQsIHBlcmNlbnQpIHtcbiAgICByZXR1cm4gc3RhcnQgKyAoZW5kIC0gc3RhcnQpICogcGVyY2VudDtcbiAgfSxcbiAgLy8gZGVmYXVsdCBlYXNpbmdzXG4gICdlYXNlJzogY3ViaWNCZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKSxcbiAgJ2Vhc2UtaW4nOiBjdWJpY0JlemllcigwLjQyLCAwLCAxLCAxKSxcbiAgJ2Vhc2Utb3V0JzogY3ViaWNCZXppZXIoMCwgMCwgMC41OCwgMSksXG4gICdlYXNlLWluLW91dCc6IGN1YmljQmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpLFxuICAvLyBzaW5lXG4gICdlYXNlLWluLXNpbmUnOiBjdWJpY0JlemllcigwLjQ3LCAwLCAwLjc0NSwgMC43MTUpLFxuICAnZWFzZS1vdXQtc2luZSc6IGN1YmljQmV6aWVyKDAuMzksIDAuNTc1LCAwLjU2NSwgMSksXG4gICdlYXNlLWluLW91dC1zaW5lJzogY3ViaWNCZXppZXIoMC40NDUsIDAuMDUsIDAuNTUsIDAuOTUpLFxuICAvLyBxdWFkXG4gICdlYXNlLWluLXF1YWQnOiBjdWJpY0JlemllcigwLjU1LCAwLjA4NSwgMC42OCwgMC41MyksXG4gICdlYXNlLW91dC1xdWFkJzogY3ViaWNCZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCksXG4gICdlYXNlLWluLW91dC1xdWFkJzogY3ViaWNCZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSksXG4gIC8vIGN1YmljXG4gICdlYXNlLWluLWN1YmljJzogY3ViaWNCZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KSxcbiAgJ2Vhc2Utb3V0LWN1YmljJzogY3ViaWNCZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKSxcbiAgJ2Vhc2UtaW4tb3V0LWN1YmljJzogY3ViaWNCZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSksXG4gIC8vIHF1YXJ0XG4gICdlYXNlLWluLXF1YXJ0JzogY3ViaWNCZXppZXIoMC44OTUsIDAuMDMsIDAuNjg1LCAwLjIyKSxcbiAgJ2Vhc2Utb3V0LXF1YXJ0JzogY3ViaWNCZXppZXIoMC4xNjUsIDAuODQsIDAuNDQsIDEpLFxuICAnZWFzZS1pbi1vdXQtcXVhcnQnOiBjdWJpY0JlemllcigwLjc3LCAwLCAwLjE3NSwgMSksXG4gIC8vIHF1aW50XG4gICdlYXNlLWluLXF1aW50JzogY3ViaWNCZXppZXIoMC43NTUsIDAuMDUsIDAuODU1LCAwLjA2KSxcbiAgJ2Vhc2Utb3V0LXF1aW50JzogY3ViaWNCZXppZXIoMC4yMywgMSwgMC4zMiwgMSksXG4gICdlYXNlLWluLW91dC1xdWludCc6IGN1YmljQmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpLFxuICAvLyBleHBvXG4gICdlYXNlLWluLWV4cG8nOiBjdWJpY0JlemllcigwLjk1LCAwLjA1LCAwLjc5NSwgMC4wMzUpLFxuICAnZWFzZS1vdXQtZXhwbyc6IGN1YmljQmV6aWVyKDAuMTksIDEsIDAuMjIsIDEpLFxuICAnZWFzZS1pbi1vdXQtZXhwbyc6IGN1YmljQmV6aWVyKDEsIDAsIDAsIDEpLFxuICAvLyBjaXJjXG4gICdlYXNlLWluLWNpcmMnOiBjdWJpY0JlemllcigwLjYsIDAuMDQsIDAuOTgsIDAuMzM1KSxcbiAgJ2Vhc2Utb3V0LWNpcmMnOiBjdWJpY0JlemllcigwLjA3NSwgMC44MiwgMC4xNjUsIDEpLFxuICAnZWFzZS1pbi1vdXQtY2lyYyc6IGN1YmljQmV6aWVyKDAuNzg1LCAwLjEzNSwgMC4xNSwgMC44NiksXG4gIC8vIHVzZXIgcGFyYW0gZWFzaW5ncy4uLlxuICAnc3ByaW5nJzogZnVuY3Rpb24gc3ByaW5nKHRlbnNpb24sIGZyaWN0aW9uLCBkdXJhdGlvbikge1xuICAgIGlmIChkdXJhdGlvbiA9PT0gMCkge1xuICAgICAgLy8gY2FuJ3QgZ2V0IGEgc3ByaW5nIHcvIGR1cmF0aW9uIDBcbiAgICAgIHJldHVybiBlYXNpbmdzLmxpbmVhcjsgLy8gZHVyYXRpb24gMCA9PiBqdW1wIHRvIGVuZCBzbyBpbXBsIGRvZXNuJ3QgbWF0dGVyXG4gICAgfVxuXG4gICAgdmFyIHNwcmluZyA9IGdlbmVyYXRlU3ByaW5nUks0KHRlbnNpb24sIGZyaWN0aW9uLCBkdXJhdGlvbik7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzdGFydCwgZW5kLCBwZXJjZW50KSB7XG4gICAgICByZXR1cm4gc3RhcnQgKyAoZW5kIC0gc3RhcnQpICogc3ByaW5nKHBlcmNlbnQpO1xuICAgIH07XG4gIH0sXG4gICdjdWJpYy1iZXppZXInOiBjdWJpY0JlemllclxufTtcblxuZnVuY3Rpb24gZ2V0RWFzZWRWYWx1ZSh0eXBlLCBzdGFydCwgZW5kLCBwZXJjZW50LCBlYXNpbmdGbikge1xuICBpZiAocGVyY2VudCA9PT0gMSkge1xuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuICBpZiAoc3RhcnQgPT09IGVuZCkge1xuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuICB2YXIgdmFsID0gZWFzaW5nRm4oc3RhcnQsIGVuZCwgcGVyY2VudCk7XG5cbiAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBpZiAodHlwZS5yb3VuZFZhbHVlIHx8IHR5cGUuY29sb3IpIHtcbiAgICB2YWwgPSBNYXRoLnJvdW5kKHZhbCk7XG4gIH1cblxuICBpZiAodHlwZS5taW4gIT09IHVuZGVmaW5lZCkge1xuICAgIHZhbCA9IE1hdGgubWF4KHZhbCwgdHlwZS5taW4pO1xuICB9XG5cbiAgaWYgKHR5cGUubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YWwgPSBNYXRoLm1pbih2YWwsIHR5cGUubWF4KTtcbiAgfVxuXG4gIHJldHVybiB2YWw7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlKHByb3AsIHNwZWMpIHtcbiAgaWYgKHByb3AucGZWYWx1ZSAhPSBudWxsIHx8IHByb3AudmFsdWUgIT0gbnVsbCkge1xuICAgIGlmIChwcm9wLnBmVmFsdWUgIT0gbnVsbCAmJiAoc3BlYyA9PSBudWxsIHx8IHNwZWMudHlwZS51bml0cyAhPT0gJyUnKSkge1xuICAgICAgcmV0dXJuIHByb3AucGZWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHByb3AudmFsdWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBwcm9wO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVhc2Uoc3RhcnRQcm9wLCBlbmRQcm9wLCBwZXJjZW50LCBlYXNpbmdGbiwgcHJvcFNwZWMpIHtcbiAgdmFyIHR5cGUgPSBwcm9wU3BlYyAhPSBudWxsID8gcHJvcFNwZWMudHlwZSA6IG51bGw7XG5cbiAgaWYgKHBlcmNlbnQgPCAwKSB7XG4gICAgcGVyY2VudCA9IDA7XG4gIH0gZWxzZSBpZiAocGVyY2VudCA+IDEpIHtcbiAgICBwZXJjZW50ID0gMTtcbiAgfVxuXG4gIHZhciBzdGFydCA9IGdldFZhbHVlKHN0YXJ0UHJvcCwgcHJvcFNwZWMpO1xuICB2YXIgZW5kID0gZ2V0VmFsdWUoZW5kUHJvcCwgcHJvcFNwZWMpO1xuXG4gIGlmIChudW1iZXIoc3RhcnQpICYmIG51bWJlcihlbmQpKSB7XG4gICAgcmV0dXJuIGdldEVhc2VkVmFsdWUodHlwZSwgc3RhcnQsIGVuZCwgcGVyY2VudCwgZWFzaW5nRm4pO1xuICB9IGVsc2UgaWYgKGFycmF5KHN0YXJ0KSAmJiBhcnJheShlbmQpKSB7XG4gICAgdmFyIGVhc2VkQXJyID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVuZC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNpID0gc3RhcnRbaV07XG4gICAgICB2YXIgZWkgPSBlbmRbaV07XG5cbiAgICAgIGlmIChzaSAhPSBudWxsICYmIGVpICE9IG51bGwpIHtcbiAgICAgICAgdmFyIHZhbCA9IGdldEVhc2VkVmFsdWUodHlwZSwgc2ksIGVpLCBwZXJjZW50LCBlYXNpbmdGbik7XG4gICAgICAgIGVhc2VkQXJyLnB1c2godmFsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVhc2VkQXJyLnB1c2goZWkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlYXNlZEFycjtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHN0ZXAoc2VsZiwgYW5pLCBub3csIGlzQ29yZSkge1xuICB2YXIgaXNFbGVzID0gIWlzQ29yZTtcbiAgdmFyIF9wID0gc2VsZi5fcHJpdmF0ZTtcbiAgdmFyIGFuaV9wID0gYW5pLl9wcml2YXRlO1xuICB2YXIgcEVhc2luZyA9IGFuaV9wLmVhc2luZztcbiAgdmFyIHN0YXJ0VGltZSA9IGFuaV9wLnN0YXJ0VGltZTtcbiAgdmFyIGN5ID0gaXNDb3JlID8gc2VsZiA6IHNlbGYuY3koKTtcbiAgdmFyIHN0eWxlID0gY3kuc3R5bGUoKTtcblxuICBpZiAoIWFuaV9wLmVhc2luZ0ltcGwpIHtcbiAgICBpZiAocEVhc2luZyA9PSBudWxsKSB7XG4gICAgICAvLyB1c2UgZGVmYXVsdFxuICAgICAgYW5pX3AuZWFzaW5nSW1wbCA9IGVhc2luZ3NbJ2xpbmVhciddO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0aGVuIGRlZmluZSB3LyBuYW1lXG4gICAgICB2YXIgZWFzaW5nVmFscztcblxuICAgICAgaWYgKHN0cmluZyhwRWFzaW5nKSkge1xuICAgICAgICB2YXIgZWFzaW5nUHJvcCA9IHN0eWxlLnBhcnNlKCd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicsIHBFYXNpbmcpO1xuICAgICAgICBlYXNpbmdWYWxzID0gZWFzaW5nUHJvcC52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoZW4gYXNzdW1lIHByZXBhcnNlZCBhcnJheVxuICAgICAgICBlYXNpbmdWYWxzID0gcEVhc2luZztcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUsIGFyZ3M7XG5cbiAgICAgIGlmIChzdHJpbmcoZWFzaW5nVmFscykpIHtcbiAgICAgICAgbmFtZSA9IGVhc2luZ1ZhbHM7XG4gICAgICAgIGFyZ3MgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5hbWUgPSBlYXNpbmdWYWxzWzFdO1xuICAgICAgICBhcmdzID0gZWFzaW5nVmFscy5zbGljZSgyKS5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICByZXR1cm4gK247XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXJncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIGNyZWF0ZSB3aXRoIGFyZ3NcbiAgICAgICAgaWYgKG5hbWUgPT09ICdzcHJpbmcnKSB7XG4gICAgICAgICAgYXJncy5wdXNoKGFuaV9wLmR1cmF0aW9uKTsgLy8gbmVlZCBkdXJhdGlvbiB0byBnZW5lcmF0ZSBzcHJpbmdcbiAgICAgICAgfVxuXG4gICAgICAgIGFuaV9wLmVhc2luZ0ltcGwgPSBlYXNpbmdzW25hbWVdLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc3RhdGljIGltcGwgYnkgbmFtZVxuICAgICAgICBhbmlfcC5lYXNpbmdJbXBsID0gZWFzaW5nc1tuYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgZWFzaW5nID0gYW5pX3AuZWFzaW5nSW1wbDtcbiAgdmFyIHBlcmNlbnQ7XG5cbiAgaWYgKGFuaV9wLmR1cmF0aW9uID09PSAwKSB7XG4gICAgcGVyY2VudCA9IDE7XG4gIH0gZWxzZSB7XG4gICAgcGVyY2VudCA9IChub3cgLSBzdGFydFRpbWUpIC8gYW5pX3AuZHVyYXRpb247XG4gIH1cblxuICBpZiAoYW5pX3AuYXBwbHlpbmcpIHtcbiAgICBwZXJjZW50ID0gYW5pX3AucHJvZ3Jlc3M7XG4gIH1cblxuICBpZiAocGVyY2VudCA8IDApIHtcbiAgICBwZXJjZW50ID0gMDtcbiAgfSBlbHNlIGlmIChwZXJjZW50ID4gMSkge1xuICAgIHBlcmNlbnQgPSAxO1xuICB9XG5cbiAgaWYgKGFuaV9wLmRlbGF5ID09IG51bGwpIHtcbiAgICAvLyB0aGVuIHVwZGF0ZVxuICAgIHZhciBzdGFydFBvcyA9IGFuaV9wLnN0YXJ0UG9zaXRpb247XG4gICAgdmFyIGVuZFBvcyA9IGFuaV9wLnBvc2l0aW9uO1xuXG4gICAgaWYgKGVuZFBvcyAmJiBpc0VsZXMgJiYgIXNlbGYubG9ja2VkKCkpIHtcbiAgICAgIHZhciBuZXdQb3MgPSB7fTtcblxuICAgICAgaWYgKHZhbGlkKHN0YXJ0UG9zLngsIGVuZFBvcy54KSkge1xuICAgICAgICBuZXdQb3MueCA9IGVhc2Uoc3RhcnRQb3MueCwgZW5kUG9zLngsIHBlcmNlbnQsIGVhc2luZyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZChzdGFydFBvcy55LCBlbmRQb3MueSkpIHtcbiAgICAgICAgbmV3UG9zLnkgPSBlYXNlKHN0YXJ0UG9zLnksIGVuZFBvcy55LCBwZXJjZW50LCBlYXNpbmcpO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnBvc2l0aW9uKG5ld1Bvcyk7XG4gICAgfVxuXG4gICAgdmFyIHN0YXJ0UGFuID0gYW5pX3Auc3RhcnRQYW47XG4gICAgdmFyIGVuZFBhbiA9IGFuaV9wLnBhbjtcbiAgICB2YXIgcGFuID0gX3AucGFuO1xuICAgIHZhciBhbmltYXRpbmdQYW4gPSBlbmRQYW4gIT0gbnVsbCAmJiBpc0NvcmU7XG5cbiAgICBpZiAoYW5pbWF0aW5nUGFuKSB7XG4gICAgICBpZiAodmFsaWQoc3RhcnRQYW4ueCwgZW5kUGFuLngpKSB7XG4gICAgICAgIHBhbi54ID0gZWFzZShzdGFydFBhbi54LCBlbmRQYW4ueCwgcGVyY2VudCwgZWFzaW5nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkKHN0YXJ0UGFuLnksIGVuZFBhbi55KSkge1xuICAgICAgICBwYW4ueSA9IGVhc2Uoc3RhcnRQYW4ueSwgZW5kUGFuLnksIHBlcmNlbnQsIGVhc2luZyk7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuZW1pdCgncGFuJyk7XG4gICAgfVxuXG4gICAgdmFyIHN0YXJ0Wm9vbSA9IGFuaV9wLnN0YXJ0Wm9vbTtcbiAgICB2YXIgZW5kWm9vbSA9IGFuaV9wLnpvb207XG4gICAgdmFyIGFuaW1hdGluZ1pvb20gPSBlbmRab29tICE9IG51bGwgJiYgaXNDb3JlO1xuXG4gICAgaWYgKGFuaW1hdGluZ1pvb20pIHtcbiAgICAgIGlmICh2YWxpZChzdGFydFpvb20sIGVuZFpvb20pKSB7XG4gICAgICAgIF9wLnpvb20gPSBib3VuZChfcC5taW5ab29tLCBlYXNlKHN0YXJ0Wm9vbSwgZW5kWm9vbSwgcGVyY2VudCwgZWFzaW5nKSwgX3AubWF4Wm9vbSk7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuZW1pdCgnem9vbScpO1xuICAgIH1cblxuICAgIGlmIChhbmltYXRpbmdQYW4gfHwgYW5pbWF0aW5nWm9vbSkge1xuICAgICAgc2VsZi5lbWl0KCd2aWV3cG9ydCcpO1xuICAgIH1cblxuICAgIHZhciBwcm9wcyA9IGFuaV9wLnN0eWxlO1xuXG4gICAgaWYgKHByb3BzICYmIHByb3BzLmxlbmd0aCA+IDAgJiYgaXNFbGVzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwcm9wID0gcHJvcHNbaV07XG4gICAgICAgIHZhciBfbmFtZSA9IHByb3AubmFtZTtcbiAgICAgICAgdmFyIGVuZCA9IHByb3A7XG4gICAgICAgIHZhciBzdGFydCA9IGFuaV9wLnN0YXJ0U3R5bGVbX25hbWVdO1xuICAgICAgICB2YXIgcHJvcFNwZWMgPSBzdHlsZS5wcm9wZXJ0aWVzW3N0YXJ0Lm5hbWVdO1xuICAgICAgICB2YXIgZWFzZWRWYWwgPSBlYXNlKHN0YXJ0LCBlbmQsIHBlcmNlbnQsIGVhc2luZywgcHJvcFNwZWMpO1xuICAgICAgICBzdHlsZS5vdmVycmlkZUJ5cGFzcyhzZWxmLCBfbmFtZSwgZWFzZWRWYWwpO1xuICAgICAgfSAvLyBmb3IgcHJvcHNcblxuXG4gICAgICBzZWxmLmVtaXQoJ3N0eWxlJyk7XG4gICAgfSAvLyBpZlxuXG4gIH1cblxuICBhbmlfcC5wcm9ncmVzcyA9IHBlcmNlbnQ7XG4gIHJldHVybiBwZXJjZW50O1xufVxuXG5mdW5jdGlvbiB2YWxpZChzdGFydCwgZW5kKSB7XG4gIGlmIChzdGFydCA9PSBudWxsIHx8IGVuZCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKG51bWJlcihzdGFydCkgJiYgbnVtYmVyKGVuZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc3RhcnRBbmltYXRpb24oc2VsZiwgYW5pLCBub3csIGlzQ29yZSkge1xuICB2YXIgYW5pX3AgPSBhbmkuX3ByaXZhdGU7XG4gIGFuaV9wLnN0YXJ0ZWQgPSB0cnVlO1xuICBhbmlfcC5zdGFydFRpbWUgPSBub3cgLSBhbmlfcC5wcm9ncmVzcyAqIGFuaV9wLmR1cmF0aW9uO1xufVxuXG5mdW5jdGlvbiBzdGVwQWxsKG5vdywgY3kpIHtcbiAgdmFyIGVsZXMgPSBjeS5fcHJpdmF0ZS5hbmlFbGVzO1xuICB2YXIgZG9uZUVsZXMgPSBbXTtcblxuICBmdW5jdGlvbiBzdGVwT25lKGVsZSwgaXNDb3JlKSB7XG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIHZhciBjdXJyZW50ID0gX3AuYW5pbWF0aW9uLmN1cnJlbnQ7XG4gICAgdmFyIHF1ZXVlID0gX3AuYW5pbWF0aW9uLnF1ZXVlO1xuICAgIHZhciByYW5BbmlzID0gZmFsc2U7IC8vIGlmIG5vdGhpbmcgY3VycmVudGx5IGFuaW1hdGluZywgZ2V0IHNvbWV0aGluZyBmcm9tIHRoZSBxdWV1ZVxuXG4gICAgaWYgKGN1cnJlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICB2YXIgbmV4dCA9IHF1ZXVlLnNoaWZ0KCk7XG5cbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIGN1cnJlbnQucHVzaChuZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY2FsbGJhY2tzID0gZnVuY3Rpb24gY2FsbGJhY2tzKF9jYWxsYmFja3MpIHtcbiAgICAgIGZvciAodmFyIGogPSBfY2FsbGJhY2tzLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgIHZhciBjYiA9IF9jYWxsYmFja3Nbal07XG4gICAgICAgIGNiKCk7XG4gICAgICB9XG5cbiAgICAgIF9jYWxsYmFja3Muc3BsaWNlKDAsIF9jYWxsYmFja3MubGVuZ3RoKTtcbiAgICB9OyAvLyBzdGVwIGFuZCByZW1vdmUgaWYgZG9uZVxuXG5cbiAgICBmb3IgKHZhciBpID0gY3VycmVudC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGFuaSA9IGN1cnJlbnRbaV07XG4gICAgICB2YXIgYW5pX3AgPSBhbmkuX3ByaXZhdGU7XG5cbiAgICAgIGlmIChhbmlfcC5zdG9wcGVkKSB7XG4gICAgICAgIGN1cnJlbnQuc3BsaWNlKGksIDEpO1xuICAgICAgICBhbmlfcC5ob29rZWQgPSBmYWxzZTtcbiAgICAgICAgYW5pX3AucGxheWluZyA9IGZhbHNlO1xuICAgICAgICBhbmlfcC5zdGFydGVkID0gZmFsc2U7XG4gICAgICAgIGNhbGxiYWNrcyhhbmlfcC5mcmFtZXMpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFhbmlfcC5wbGF5aW5nICYmICFhbmlfcC5hcHBseWluZykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gYW4gYXBwbHkoKSB3aGlsZSBwbGF5aW5nIHNob3VsZG4ndCBkbyBhbnl0aGluZ1xuXG5cbiAgICAgIGlmIChhbmlfcC5wbGF5aW5nICYmIGFuaV9wLmFwcGx5aW5nKSB7XG4gICAgICAgIGFuaV9wLmFwcGx5aW5nID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICghYW5pX3Auc3RhcnRlZCkge1xuICAgICAgICBzdGFydEFuaW1hdGlvbihlbGUsIGFuaSwgbm93KTtcbiAgICAgIH1cblxuICAgICAgc3RlcChlbGUsIGFuaSwgbm93LCBpc0NvcmUpO1xuXG4gICAgICBpZiAoYW5pX3AuYXBwbHlpbmcpIHtcbiAgICAgICAgYW5pX3AuYXBwbHlpbmcgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2tzKGFuaV9wLmZyYW1lcyk7XG5cbiAgICAgIGlmIChhbmlfcC5zdGVwICE9IG51bGwpIHtcbiAgICAgICAgYW5pX3Auc3RlcChub3cpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYW5pLmNvbXBsZXRlZCgpKSB7XG4gICAgICAgIGN1cnJlbnQuc3BsaWNlKGksIDEpO1xuICAgICAgICBhbmlfcC5ob29rZWQgPSBmYWxzZTtcbiAgICAgICAgYW5pX3AucGxheWluZyA9IGZhbHNlO1xuICAgICAgICBhbmlfcC5zdGFydGVkID0gZmFsc2U7XG4gICAgICAgIGNhbGxiYWNrcyhhbmlfcC5jb21wbGV0ZXMpO1xuICAgICAgfVxuXG4gICAgICByYW5BbmlzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzQ29yZSAmJiBjdXJyZW50Lmxlbmd0aCA9PT0gMCAmJiBxdWV1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIGRvbmVFbGVzLnB1c2goZWxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmFuQW5pcztcbiAgfSAvLyBzdGVwRWxlbWVudFxuICAvLyBoYW5kbGUgYWxsIGVsZXNcblxuXG4gIHZhciByYW5FbGVBbmkgPSBmYWxzZTtcblxuICBmb3IgKHZhciBlID0gMDsgZSA8IGVsZXMubGVuZ3RoOyBlKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tlXTtcbiAgICB2YXIgaGFuZGxlZFRoaXNFbGUgPSBzdGVwT25lKGVsZSk7XG4gICAgcmFuRWxlQW5pID0gcmFuRWxlQW5pIHx8IGhhbmRsZWRUaGlzRWxlO1xuICB9IC8vIGVhY2ggZWxlbWVudFxuXG5cbiAgdmFyIHJhbkNvcmVBbmkgPSBzdGVwT25lKGN5LCB0cnVlKTsgLy8gbm90aWZ5IHJlbmRlcmVyXG5cbiAgaWYgKHJhbkVsZUFuaSB8fCByYW5Db3JlQW5pKSB7XG4gICAgaWYgKGVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgY3kubm90aWZ5KCdkcmF3JywgZWxlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN5Lm5vdGlmeSgnZHJhdycpO1xuICAgIH1cbiAgfSAvLyByZW1vdmUgZWxlbWVudHMgZnJvbSBsaXN0IG9mIGN1cnJlbnRseSBhbmltYXRpbmcgaWYgaXRzIHF1ZXVlcyBhcmUgZW1wdHlcblxuXG4gIGVsZXMudW5tZXJnZShkb25lRWxlcyk7XG4gIGN5LmVtaXQoJ3N0ZXAnKTtcbn0gLy8gc3RlcEFsbFxuXG52YXIgY29yZWZuJDEgPSB7XG4gIC8vIHB1bGwgaW4gYW5pbWF0aW9uIGZ1bmN0aW9uc1xuICBhbmltYXRlOiBkZWZpbmUkMy5hbmltYXRlKCksXG4gIGFuaW1hdGlvbjogZGVmaW5lJDMuYW5pbWF0aW9uKCksXG4gIGFuaW1hdGVkOiBkZWZpbmUkMy5hbmltYXRlZCgpLFxuICBjbGVhclF1ZXVlOiBkZWZpbmUkMy5jbGVhclF1ZXVlKCksXG4gIGRlbGF5OiBkZWZpbmUkMy5kZWxheSgpLFxuICBkZWxheUFuaW1hdGlvbjogZGVmaW5lJDMuZGVsYXlBbmltYXRpb24oKSxcbiAgc3RvcDogZGVmaW5lJDMuc3RvcCgpLFxuICBhZGRUb0FuaW1hdGlvblBvb2w6IGZ1bmN0aW9uIGFkZFRvQW5pbWF0aW9uUG9vbChlbGVzKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIHNhdmUgY3ljbGVzIHdoZW4gbm8gc3R5bGUgdXNlZFxuXG5cbiAgICBjeS5fcHJpdmF0ZS5hbmlFbGVzLm1lcmdlKGVsZXMpO1xuICB9LFxuICBzdG9wQW5pbWF0aW9uTG9vcDogZnVuY3Rpb24gc3RvcEFuaW1hdGlvbkxvb3AoKSB7XG4gICAgdGhpcy5fcHJpdmF0ZS5hbmltYXRpb25zUnVubmluZyA9IGZhbHNlO1xuICB9LFxuICBzdGFydEFuaW1hdGlvbkxvb3A6IGZ1bmN0aW9uIHN0YXJ0QW5pbWF0aW9uTG9vcCgpIHtcbiAgICB2YXIgY3kgPSB0aGlzO1xuICAgIGN5Ll9wcml2YXRlLmFuaW1hdGlvbnNSdW5uaW5nID0gdHJ1ZTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIHNhdmUgY3ljbGVzIHdoZW4gbm8gc3R5bGUgdXNlZFxuICAgIC8vIE5CIHRoZSBhbmltYXRpb24gbG9vcCB3aWxsIGV4ZWMgaW4gaGVhZGxlc3MgZW52aXJvbm1lbnRzIGlmIHN0eWxlIGVuYWJsZWRcbiAgICAvLyBhbmQgZXhwbGljaXQgY3kuZGVzdHJveSgpIGlzIG5lY2Vzc2FyeSB0byBzdG9wIHRoZSBsb29wXG5cblxuICAgIGZ1bmN0aW9uIGhlYWRsZXNzU3RlcCgpIHtcbiAgICAgIGlmICghY3kuX3ByaXZhdGUuYW5pbWF0aW9uc1J1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gYW5pbWF0aW9uU3RlcChub3cpIHtcbiAgICAgICAgc3RlcEFsbChub3csIGN5KTtcbiAgICAgICAgaGVhZGxlc3NTdGVwKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgcmVuZGVyZXIgPSBjeS5yZW5kZXJlcigpO1xuXG4gICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLmJlZm9yZVJlbmRlcikge1xuICAgICAgLy8gbGV0IHRoZSByZW5kZXJlciBzY2hlZHVsZSBhbmltYXRpb25zXG4gICAgICByZW5kZXJlci5iZWZvcmVSZW5kZXIoZnVuY3Rpb24gcmVuZGVyZXJBbmltYXRpb25TdGVwKHdpbGxEcmF3LCBub3cpIHtcbiAgICAgICAgc3RlcEFsbChub3csIGN5KTtcbiAgICAgIH0sIHJlbmRlcmVyLmJlZm9yZVJlbmRlclByaW9yaXRpZXMuYW5pbWF0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG1hbmFnZSB0aGUgYW5pbWF0aW9uIGxvb3Agb3Vyc2VsdmVzXG4gICAgICBoZWFkbGVzc1N0ZXAoKTsgLy8gZmlyc3QgY2FsbFxuICAgIH1cbiAgfVxufTtcblxudmFyIGVtaXR0ZXJPcHRpb25zJDEgPSB7XG4gIHF1YWxpZmllckNvbXBhcmU6IGZ1bmN0aW9uIHF1YWxpZmllckNvbXBhcmUoc2VsZWN0b3IxLCBzZWxlY3RvcjIpIHtcbiAgICBpZiAoc2VsZWN0b3IxID09IG51bGwgfHwgc2VsZWN0b3IyID09IG51bGwpIHtcbiAgICAgIHJldHVybiBzZWxlY3RvcjEgPT0gbnVsbCAmJiBzZWxlY3RvcjIgPT0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHNlbGVjdG9yMS5zYW1lVGV4dChzZWxlY3RvcjIpO1xuICAgIH1cbiAgfSxcbiAgZXZlbnRNYXRjaGVzOiBmdW5jdGlvbiBldmVudE1hdGNoZXMoY3ksIGxpc3RlbmVyLCBldmVudE9iaikge1xuICAgIHZhciBzZWxlY3RvciA9IGxpc3RlbmVyLnF1YWxpZmllcjtcblxuICAgIGlmIChzZWxlY3RvciAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gY3kgIT09IGV2ZW50T2JqLnRhcmdldCAmJiBlbGVtZW50KGV2ZW50T2JqLnRhcmdldCkgJiYgc2VsZWN0b3IubWF0Y2hlcyhldmVudE9iai50YXJnZXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBhZGRFdmVudEZpZWxkczogZnVuY3Rpb24gYWRkRXZlbnRGaWVsZHMoY3ksIGV2dCkge1xuICAgIGV2dC5jeSA9IGN5O1xuICAgIGV2dC50YXJnZXQgPSBjeTtcbiAgfSxcbiAgY2FsbGJhY2tDb250ZXh0OiBmdW5jdGlvbiBjYWxsYmFja0NvbnRleHQoY3ksIGxpc3RlbmVyLCBldmVudE9iaikge1xuICAgIHJldHVybiBsaXN0ZW5lci5xdWFsaWZpZXIgIT0gbnVsbCA/IGV2ZW50T2JqLnRhcmdldCA6IGN5O1xuICB9XG59O1xuXG52YXIgYXJnU2VsZWN0b3IkMSA9IGZ1bmN0aW9uIGFyZ1NlbGVjdG9yKGFyZykge1xuICBpZiAoc3RyaW5nKGFyZykpIHtcbiAgICByZXR1cm4gbmV3IFNlbGVjdG9yKGFyZyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGFyZztcbiAgfVxufTtcblxudmFyIGVsZXNmbiR2ID0ge1xuICBjcmVhdGVFbWl0dGVyOiBmdW5jdGlvbiBjcmVhdGVFbWl0dGVyKCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoIV9wLmVtaXR0ZXIpIHtcbiAgICAgIF9wLmVtaXR0ZXIgPSBuZXcgRW1pdHRlcihlbWl0dGVyT3B0aW9ucyQxLCB0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZW1pdHRlcjogZnVuY3Rpb24gZW1pdHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5lbWl0dGVyO1xuICB9LFxuICBvbjogZnVuY3Rpb24gb24oZXZlbnRzLCBzZWxlY3RvciwgY2FsbGJhY2spIHtcbiAgICB0aGlzLmVtaXR0ZXIoKS5vbihldmVudHMsIGFyZ1NlbGVjdG9yJDEoc2VsZWN0b3IpLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJlbW92ZUxpc3RlbmVyOiBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgIHRoaXMuZW1pdHRlcigpLnJlbW92ZUxpc3RlbmVyKGV2ZW50cywgYXJnU2VsZWN0b3IkMShzZWxlY3RvciksIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcmVtb3ZlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnMoKSB7XG4gICAgdGhpcy5lbWl0dGVyKCkucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIG9uZTogZnVuY3Rpb24gb25lKGV2ZW50cywgc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5lbWl0dGVyKCkub25lKGV2ZW50cywgYXJnU2VsZWN0b3IkMShzZWxlY3RvciksIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgb25jZTogZnVuY3Rpb24gb25jZShldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgIHRoaXMuZW1pdHRlcigpLm9uZShldmVudHMsIGFyZ1NlbGVjdG9yJDEoc2VsZWN0b3IpLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGVtaXQ6IGZ1bmN0aW9uIGVtaXQoZXZlbnRzLCBleHRyYVBhcmFtcykge1xuICAgIHRoaXMuZW1pdHRlcigpLmVtaXQoZXZlbnRzLCBleHRyYVBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGVtaXRBbmROb3RpZnk6IGZ1bmN0aW9uIGVtaXRBbmROb3RpZnkoZXZlbnQsIGVsZXMpIHtcbiAgICB0aGlzLmVtaXQoZXZlbnQpO1xuICAgIHRoaXMubm90aWZ5KGV2ZW50LCBlbGVzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufTtcbmRlZmluZSQzLmV2ZW50QWxpYXNlc09uKGVsZXNmbiR2KTtcblxudmFyIGNvcmVmbiQyID0ge1xuICBwbmc6IGZ1bmN0aW9uIHBuZyhvcHRpb25zKSB7XG4gICAgdmFyIHJlbmRlcmVyID0gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICByZXR1cm4gcmVuZGVyZXIucG5nKG9wdGlvbnMpO1xuICB9LFxuICBqcGc6IGZ1bmN0aW9uIGpwZyhvcHRpb25zKSB7XG4gICAgdmFyIHJlbmRlcmVyID0gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBvcHRpb25zLmJnID0gb3B0aW9ucy5iZyB8fCAnI2ZmZic7XG4gICAgcmV0dXJuIHJlbmRlcmVyLmpwZyhvcHRpb25zKTtcbiAgfVxufTtcbmNvcmVmbiQyLmpwZWcgPSBjb3JlZm4kMi5qcGc7XG5cbnZhciBjb3JlZm4kMyA9IHtcbiAgbGF5b3V0OiBmdW5jdGlvbiBsYXlvdXQob3B0aW9ucykge1xuICAgIHZhciBjeSA9IHRoaXM7XG5cbiAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7XG4gICAgICBlcnJvcignTGF5b3V0IG9wdGlvbnMgbXVzdCBiZSBzcGVjaWZpZWQgdG8gbWFrZSBhIGxheW91dCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm5hbWUgPT0gbnVsbCkge1xuICAgICAgZXJyb3IoJ0EgYG5hbWVgIG11c3QgYmUgc3BlY2lmaWVkIHRvIG1ha2UgYSBsYXlvdXQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IG9wdGlvbnMubmFtZTtcbiAgICB2YXIgTGF5b3V0ID0gY3kuZXh0ZW5zaW9uKCdsYXlvdXQnLCBuYW1lKTtcblxuICAgIGlmIChMYXlvdXQgPT0gbnVsbCkge1xuICAgICAgZXJyb3IoJ05vIHN1Y2ggbGF5b3V0IGAnICsgbmFtZSArICdgIGZvdW5kLiAgRGlkIHlvdSBmb3JnZXQgdG8gaW1wb3J0IGl0IGFuZCBgY3l0b3NjYXBlLnVzZSgpYCBpdD8nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZWxlcztcblxuICAgIGlmIChzdHJpbmcob3B0aW9ucy5lbGVzKSkge1xuICAgICAgZWxlcyA9IGN5LiQob3B0aW9ucy5lbGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlcyA9IG9wdGlvbnMuZWxlcyAhPSBudWxsID8gb3B0aW9ucy5lbGVzIDogY3kuJCgpO1xuICAgIH1cblxuICAgIHZhciBsYXlvdXQgPSBuZXcgTGF5b3V0KGV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgY3k6IGN5LFxuICAgICAgZWxlczogZWxlc1xuICAgIH0pKTtcbiAgICByZXR1cm4gbGF5b3V0O1xuICB9XG59O1xuY29yZWZuJDMuY3JlYXRlTGF5b3V0ID0gY29yZWZuJDMubWFrZUxheW91dCA9IGNvcmVmbiQzLmxheW91dDtcblxudmFyIGNvcmVmbiQ0ID0ge1xuICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeShldmVudE5hbWUsIGV2ZW50RWxlcykge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAodGhpcy5iYXRjaGluZygpKSB7XG4gICAgICBfcC5iYXRjaE5vdGlmaWNhdGlvbnMgPSBfcC5iYXRjaE5vdGlmaWNhdGlvbnMgfHwge307XG4gICAgICB2YXIgZWxlcyA9IF9wLmJhdGNoTm90aWZpY2F0aW9uc1tldmVudE5hbWVdID0gX3AuYmF0Y2hOb3RpZmljYXRpb25zW2V2ZW50TmFtZV0gfHwgdGhpcy5jb2xsZWN0aW9uKCk7XG5cbiAgICAgIGlmIChldmVudEVsZXMgIT0gbnVsbCkge1xuICAgICAgICBlbGVzLm1lcmdlKGV2ZW50RWxlcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjsgLy8gbm90aWZpY2F0aW9ucyBhcmUgZGlzYWJsZWQgZHVyaW5nIGJhdGNoaW5nXG4gICAgfVxuXG4gICAgaWYgKCFfcC5ub3RpZmljYXRpb25zRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gZXhpdCBvbiBkaXNhYmxlZFxuXG5cbiAgICB2YXIgcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyKCk7IC8vIGV4aXQgaWYgZGVzdHJveSgpIGNhbGxlZCBvbiBjb3JlIG9yIHJlbmRlcmVyIGluIGJldHdlZW4gZnJhbWVzICMxNDk5ICMxNTI4XG5cbiAgICBpZiAodGhpcy5kZXN0cm95ZWQoKSB8fCAhcmVuZGVyZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZW5kZXJlci5ub3RpZnkoZXZlbnROYW1lLCBldmVudEVsZXMpO1xuICB9LFxuICBub3RpZmljYXRpb25zOiBmdW5jdGlvbiBub3RpZmljYXRpb25zKGJvb2wpIHtcbiAgICB2YXIgcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoYm9vbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcC5ub3RpZmljYXRpb25zRW5hYmxlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcC5ub3RpZmljYXRpb25zRW5hYmxlZCA9IGJvb2wgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIG5vTm90aWZpY2F0aW9uczogZnVuY3Rpb24gbm9Ob3RpZmljYXRpb25zKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zKGZhbHNlKTtcbiAgICBjYWxsYmFjaygpO1xuICAgIHRoaXMubm90aWZpY2F0aW9ucyh0cnVlKTtcbiAgfSxcbiAgYmF0Y2hpbmc6IGZ1bmN0aW9uIGJhdGNoaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmJhdGNoQ291bnQgPiAwO1xuICB9LFxuICBzdGFydEJhdGNoOiBmdW5jdGlvbiBzdGFydEJhdGNoKCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoX3AuYmF0Y2hDb3VudCA9PSBudWxsKSB7XG4gICAgICBfcC5iYXRjaENvdW50ID0gMDtcbiAgICB9XG5cbiAgICBpZiAoX3AuYmF0Y2hDb3VudCA9PT0gMCkge1xuICAgICAgX3AuYmF0Y2hTdHlsZUVsZXMgPSB0aGlzLmNvbGxlY3Rpb24oKTtcbiAgICAgIF9wLmJhdGNoTm90aWZpY2F0aW9ucyA9IHt9O1xuICAgIH1cblxuICAgIF9wLmJhdGNoQ291bnQrKztcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZW5kQmF0Y2g6IGZ1bmN0aW9uIGVuZEJhdGNoKCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoX3AuYmF0Y2hDb3VudCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgX3AuYmF0Y2hDb3VudC0tO1xuXG4gICAgaWYgKF9wLmJhdGNoQ291bnQgPT09IDApIHtcbiAgICAgIC8vIHVwZGF0ZSBzdHlsZSBmb3IgZGlydHkgZWxlc1xuICAgICAgX3AuYmF0Y2hTdHlsZUVsZXMudXBkYXRlU3R5bGUoKTtcblxuICAgICAgdmFyIHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlcigpOyAvLyBub3RpZnkgdGhlIHJlbmRlcmVyIG9mIHF1ZXVlZCBlbGVzIGFuZCBldmVudCB0eXBlc1xuXG4gICAgICBPYmplY3Qua2V5cyhfcC5iYXRjaE5vdGlmaWNhdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xuICAgICAgICB2YXIgZWxlcyA9IF9wLmJhdGNoTm90aWZpY2F0aW9uc1tldmVudE5hbWVdO1xuXG4gICAgICAgIGlmIChlbGVzLmVtcHR5KCkpIHtcbiAgICAgICAgICByZW5kZXJlci5ub3RpZnkoZXZlbnROYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW5kZXJlci5ub3RpZnkoZXZlbnROYW1lLCBlbGVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGJhdGNoOiBmdW5jdGlvbiBiYXRjaChjYWxsYmFjaykge1xuICAgIHRoaXMuc3RhcnRCYXRjaCgpO1xuICAgIGNhbGxiYWNrKCk7XG4gICAgdGhpcy5lbmRCYXRjaCgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgYmF0Y2hEYXRhOiBmdW5jdGlvbiBiYXRjaERhdGEobWFwKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICByZXR1cm4gdGhpcy5iYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgaWRzID0gT2JqZWN0LmtleXMobWFwKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGlkID0gaWRzW2ldO1xuICAgICAgICB2YXIgZGF0YSA9IG1hcFtpZF07XG4gICAgICAgIHZhciBlbGUgPSBjeS5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgIGVsZS5kYXRhKGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuXG52YXIgcmVuZGVyZXJEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgaGlkZUVkZ2VzT25WaWV3cG9ydDogZmFsc2UsXG4gIHRleHR1cmVPblZpZXdwb3J0OiBmYWxzZSxcbiAgbW90aW9uQmx1cjogZmFsc2UsXG4gIG1vdGlvbkJsdXJPcGFjaXR5OiAwLjA1LFxuICBwaXhlbFJhdGlvOiB1bmRlZmluZWQsXG4gIGRlc2t0b3BUYXBUaHJlc2hvbGQ6IDQsXG4gIHRvdWNoVGFwVGhyZXNob2xkOiA4LFxuICB3aGVlbFNlbnNpdGl2aXR5OiAxLFxuICBkZWJ1ZzogZmFsc2UsXG4gIHNob3dGcHM6IGZhbHNlXG59KTtcbnZhciBjb3JlZm4kNSA9IHtcbiAgcmVuZGVyVG86IGZ1bmN0aW9uIHJlbmRlclRvKGNvbnRleHQsIHpvb20sIHBhbiwgcHhSYXRpbykge1xuICAgIHZhciByID0gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgICByLnJlbmRlclRvKGNvbnRleHQsIHpvb20sIHBhbiwgcHhSYXRpbyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJlbmRlcmVyOiBmdW5jdGlvbiByZW5kZXJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgfSxcbiAgZm9yY2VSZW5kZXI6IGZ1bmN0aW9uIGZvcmNlUmVuZGVyKCkge1xuICAgIHRoaXMubm90aWZ5KCdkcmF3Jyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJlc2l6ZTogZnVuY3Rpb24gcmVzaXplKCkge1xuICAgIHRoaXMuaW52YWxpZGF0ZVNpemUoKTtcbiAgICB0aGlzLmVtaXRBbmROb3RpZnkoJ3Jlc2l6ZScpO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBpbml0UmVuZGVyZXI6IGZ1bmN0aW9uIGluaXRSZW5kZXJlcihvcHRpb25zKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICB2YXIgUmVuZGVyZXJQcm90byA9IGN5LmV4dGVuc2lvbigncmVuZGVyZXInLCBvcHRpb25zLm5hbWUpO1xuXG4gICAgaWYgKFJlbmRlcmVyUHJvdG8gPT0gbnVsbCkge1xuICAgICAgZXJyb3IoXCJDYW4gbm90IGluaXRpYWxpc2U6IE5vIHN1Y2ggcmVuZGVyZXIgYFwiLmNvbmNhdChvcHRpb25zLm5hbWUsIFwiYCBmb3VuZC4gRGlkIHlvdSBmb3JnZXQgdG8gaW1wb3J0IGl0IGFuZCBgY3l0b3NjYXBlLnVzZSgpYCBpdD9cIikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLndoZWVsU2Vuc2l0aXZpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgd2FybihcIllvdSBoYXZlIHNldCBhIGN1c3RvbSB3aGVlbCBzZW5zaXRpdml0eS4gIFRoaXMgd2lsbCBtYWtlIHlvdXIgYXBwIHpvb20gdW5uYXR1cmFsbHkgd2hlbiB1c2luZyBtYWluc3RyZWFtIG1pY2UuICBZb3Ugc2hvdWxkIGNoYW5nZSB0aGlzIHZhbHVlIGZyb20gdGhlIGRlZmF1bHQgb25seSBpZiB5b3UgY2FuIGd1YXJhbnRlZSB0aGF0IGFsbCB5b3VyIHVzZXJzIHdpbGwgdXNlIHRoZSBzYW1lIGhhcmR3YXJlIGFuZCBPUyBjb25maWd1cmF0aW9uIGFzIHlvdXIgY3VycmVudCBtYWNoaW5lLlwiKTtcbiAgICB9XG5cbiAgICB2YXIgck9wdHMgPSByZW5kZXJlckRlZmF1bHRzKG9wdGlvbnMpO1xuICAgIHJPcHRzLmN5ID0gY3k7XG4gICAgY3kuX3ByaXZhdGUucmVuZGVyZXIgPSBuZXcgUmVuZGVyZXJQcm90byhyT3B0cyk7XG4gICAgdGhpcy5ub3RpZnkoJ2luaXQnKTtcbiAgfSxcbiAgZGVzdHJveVJlbmRlcmVyOiBmdW5jdGlvbiBkZXN0cm95UmVuZGVyZXIoKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICBjeS5ub3RpZnkoJ2Rlc3Ryb3knKTsgLy8gZGVzdHJveSB0aGUgcmVuZGVyZXJcblxuICAgIHZhciBkb21FbGUgPSBjeS5jb250YWluZXIoKTtcblxuICAgIGlmIChkb21FbGUpIHtcbiAgICAgIGRvbUVsZS5fY3lyZWcgPSBudWxsO1xuXG4gICAgICB3aGlsZSAoZG9tRWxlLmNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBkb21FbGUucmVtb3ZlQ2hpbGQoZG9tRWxlLmNoaWxkTm9kZXNbMF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN5Ll9wcml2YXRlLnJlbmRlcmVyID0gbnVsbDsgLy8gdG8gYmUgZXh0cmEgc2FmZSwgcmVtb3ZlIHRoZSByZWZcblxuICAgIGN5Lm11dGFibGVFbGVtZW50cygpLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgX3AucnNjcmF0Y2ggPSB7fTtcbiAgICAgIF9wLnJzdHlsZSA9IHt9O1xuICAgICAgX3AuYW5pbWF0aW9uLmN1cnJlbnQgPSBbXTtcbiAgICAgIF9wLmFuaW1hdGlvbi5xdWV1ZSA9IFtdO1xuICAgIH0pO1xuICB9LFxuICBvblJlbmRlcjogZnVuY3Rpb24gb25SZW5kZXIoZm4pIHtcbiAgICByZXR1cm4gdGhpcy5vbigncmVuZGVyJywgZm4pO1xuICB9LFxuICBvZmZSZW5kZXI6IGZ1bmN0aW9uIG9mZlJlbmRlcihmbikge1xuICAgIHJldHVybiB0aGlzLm9mZigncmVuZGVyJywgZm4pO1xuICB9XG59O1xuY29yZWZuJDUuaW52YWxpZGF0ZURpbWVuc2lvbnMgPSBjb3JlZm4kNS5yZXNpemU7XG5cbnZhciBjb3JlZm4kNiA9IHtcbiAgLy8gZ2V0IGEgY29sbGVjdGlvblxuICAvLyAtIGVtcHR5IGNvbGxlY3Rpb24gb24gbm8gYXJnc1xuICAvLyAtIGNvbGxlY3Rpb24gb2YgZWxlbWVudHMgaW4gdGhlIGdyYXBoIG9uIHNlbGVjdG9yIGFyZ1xuICAvLyAtIGd1YXJhbnRlZSBhIHJldHVybmVkIGNvbGxlY3Rpb24gd2hlbiBlbGVtZW50cyBvciBjb2xsZWN0aW9uIHNwZWNpZmllZFxuICBjb2xsZWN0aW9uOiBmdW5jdGlvbiBjb2xsZWN0aW9uKGVsZXMsIG9wdHMpIHtcbiAgICBpZiAoc3RyaW5nKGVsZXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy4kKGVsZXMpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudE9yQ29sbGVjdGlvbihlbGVzKSkge1xuICAgICAgcmV0dXJuIGVsZXMuY29sbGVjdGlvbigpO1xuICAgIH0gZWxzZSBpZiAoYXJyYXkoZWxlcykpIHtcbiAgICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLCBlbGVzLCBvcHRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENvbGxlY3Rpb24odGhpcyk7XG4gIH0sXG4gIG5vZGVzOiBmdW5jdGlvbiBub2RlcyhzZWxlY3Rvcikge1xuICAgIHZhciBub2RlcyA9IHRoaXMuJChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTm9kZSgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gbm9kZXMuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH0sXG4gIGVkZ2VzOiBmdW5jdGlvbiBlZGdlcyhzZWxlY3Rvcikge1xuICAgIHZhciBlZGdlcyA9IHRoaXMuJChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzRWRnZSgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gZWRnZXMuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWRnZXM7XG4gIH0sXG4gIC8vIHNlYXJjaCB0aGUgZ3JhcGggbGlrZSBqUXVlcnlcbiAgJDogZnVuY3Rpb24gJChzZWxlY3Rvcikge1xuICAgIHZhciBlbGVzID0gdGhpcy5fcHJpdmF0ZS5lbGVtZW50cztcblxuICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIGVsZXMuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGVsZXMuc3Bhd25TZWxmKCk7XG4gICAgfVxuICB9LFxuICBtdXRhYmxlRWxlbWVudHM6IGZ1bmN0aW9uIG11dGFibGVFbGVtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5lbGVtZW50cztcbiAgfVxufTsgLy8gYWxpYXNlc1xuXG5jb3JlZm4kNi5lbGVtZW50cyA9IGNvcmVmbiQ2LmZpbHRlciA9IGNvcmVmbiQ2LiQ7XG5cbnZhciBzdHlmbiA9IHt9OyAvLyBrZXlzIGZvciBzdHlsZSBibG9ja3MsIGUuZy4gdHRmZnR0XG5cbnZhciBUUlVFID0gJ3QnO1xudmFyIEZBTFNFID0gJ2YnOyAvLyAocG90ZW50aWFsbHkgZXhwZW5zaXZlIGNhbGN1bGF0aW9uKVxuLy8gYXBwbHkgdGhlIHN0eWxlIHRvIHRoZSBlbGVtZW50IGJhc2VkIG9uXG4vLyAtIGl0cyBieXBhc3Ncbi8vIC0gd2hhdCBzZWxlY3RvcnMgbWF0Y2ggaXRcblxuc3R5Zm4uYXBwbHkgPSBmdW5jdGlvbiAoZWxlcykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBfcCA9IHNlbGYuX3ByaXZhdGU7XG4gIHZhciBjeSA9IF9wLmN5O1xuICB2YXIgdXBkYXRlZEVsZXMgPSBjeS5jb2xsZWN0aW9uKCk7XG5cbiAgZm9yICh2YXIgaWUgPSAwOyBpZSA8IGVsZXMubGVuZ3RoOyBpZSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaWVdO1xuICAgIHZhciBjeHRNZXRhID0gc2VsZi5nZXRDb250ZXh0TWV0YShlbGUpO1xuXG4gICAgaWYgKGN4dE1ldGEuZW1wdHkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBjeHRTdHlsZSA9IHNlbGYuZ2V0Q29udGV4dFN0eWxlKGN4dE1ldGEpO1xuICAgIHZhciBhcHAgPSBzZWxmLmFwcGx5Q29udGV4dFN0eWxlKGN4dE1ldGEsIGN4dFN0eWxlLCBlbGUpO1xuXG4gICAgaWYgKGVsZS5fcHJpdmF0ZS5hcHBsaWVkSW5pdFN0eWxlKSB7XG4gICAgICBzZWxmLnVwZGF0ZVRyYW5zaXRpb25zKGVsZSwgYXBwLmRpZmZQcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZS5fcHJpdmF0ZS5hcHBsaWVkSW5pdFN0eWxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgaGludHNEaWZmID0gc2VsZi51cGRhdGVTdHlsZUhpbnRzKGVsZSk7XG5cbiAgICBpZiAoaGludHNEaWZmKSB7XG4gICAgICB1cGRhdGVkRWxlcy5wdXNoKGVsZSk7XG4gICAgfVxuICB9IC8vIGZvciBlbGVtZW50c1xuXG5cbiAgcmV0dXJuIHVwZGF0ZWRFbGVzO1xufTtcblxuc3R5Zm4uZ2V0UHJvcGVydGllc0RpZmYgPSBmdW5jdGlvbiAob2xkQ3h0S2V5LCBuZXdDeHRLZXkpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgY2FjaGUgPSBzZWxmLl9wcml2YXRlLnByb3BEaWZmcyA9IHNlbGYuX3ByaXZhdGUucHJvcERpZmZzIHx8IHt9O1xuICB2YXIgZHVhbEN4dEtleSA9IG9sZEN4dEtleSArICctJyArIG5ld0N4dEtleTtcbiAgdmFyIGNhY2hlZFZhbCA9IGNhY2hlW2R1YWxDeHRLZXldO1xuXG4gIGlmIChjYWNoZWRWYWwpIHtcbiAgICByZXR1cm4gY2FjaGVkVmFsO1xuICB9XG5cbiAgdmFyIGRpZmZQcm9wcyA9IFtdO1xuICB2YXIgYWRkZWRQcm9wID0ge307XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGN4dCA9IHNlbGZbaV07XG4gICAgdmFyIG9sZEhhc0N4dCA9IG9sZEN4dEtleVtpXSA9PT0gVFJVRTtcbiAgICB2YXIgbmV3SGFzQ3h0ID0gbmV3Q3h0S2V5W2ldID09PSBUUlVFO1xuICAgIHZhciBjeHRIYXNEaWZmZWQgPSBvbGRIYXNDeHQgIT09IG5ld0hhc0N4dDtcbiAgICB2YXIgY3h0SGFzTWFwcGVkUHJvcHMgPSBjeHQubWFwcGVkUHJvcGVydGllcy5sZW5ndGggPiAwO1xuXG4gICAgaWYgKGN4dEhhc0RpZmZlZCB8fCBuZXdIYXNDeHQgJiYgY3h0SGFzTWFwcGVkUHJvcHMpIHtcbiAgICAgIHZhciBwcm9wcyA9IHZvaWQgMDtcblxuICAgICAgaWYgKGN4dEhhc0RpZmZlZCAmJiBjeHRIYXNNYXBwZWRQcm9wcykge1xuICAgICAgICBwcm9wcyA9IGN4dC5wcm9wZXJ0aWVzOyAvLyBzdWZmaWNlcyBiL2MgbWFwcGVkUHJvcGVydGllcyBpcyBhIHN1YnNldCBvZiBwcm9wZXJ0aWVzXG4gICAgICB9IGVsc2UgaWYgKGN4dEhhc0RpZmZlZCkge1xuICAgICAgICBwcm9wcyA9IGN4dC5wcm9wZXJ0aWVzOyAvLyBuZWVkIHRvIGNoZWNrIHRoZW0gYWxsXG4gICAgICB9IGVsc2UgaWYgKGN4dEhhc01hcHBlZFByb3BzKSB7XG4gICAgICAgIHByb3BzID0gY3h0Lm1hcHBlZFByb3BlcnRpZXM7IC8vIG9ubHkgbmVlZCB0byBjaGVjayBtYXBwZWRcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwcm9wcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgcHJvcCA9IHByb3BzW2pdO1xuICAgICAgICB2YXIgbmFtZSA9IHByb3AubmFtZTsgLy8gaWYgYSBsYXRlciBjb250ZXh0IG92ZXJyaWRlcyB0aGlzIHByb3BlcnR5LCB0aGVuIHRoZSBmYWN0IHRoYXQgdGhpcyBjb250ZXh0IGhhcyBzd2l0Y2hlZC9kaWZmZWQgZG9lc24ndCBtYXR0ZXJcbiAgICAgICAgLy8gKHNlbWkgZXhwZW5zaXZlIGNoZWNrIHNpbmNlIGl0IG1ha2VzIHRoaXMgZnVuY3Rpb24gTyhuXjIpIG9uIGNvbnRleHQgbGVuZ3RoLCBidXQgd29ydGggaXQgc2luY2Ugb3ZlcmFsbCByZXN1bHRcbiAgICAgICAgLy8gaXMgY2FjaGVkKVxuXG4gICAgICAgIHZhciBsYXRlckN4dE92ZXJyaWRlcyA9IGZhbHNlO1xuXG4gICAgICAgIGZvciAodmFyIGsgPSBpICsgMTsgayA8IHNlbGYubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICB2YXIgbGF0ZXJDeHQgPSBzZWxmW2tdO1xuICAgICAgICAgIHZhciBoYXNMYXRlckN4dCA9IG5ld0N4dEtleVtrXSA9PT0gVFJVRTtcblxuICAgICAgICAgIGlmICghaGFzTGF0ZXJDeHQpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gLy8gY2FuJ3Qgb3ZlcnJpZGUgdW5sZXNzIHRoZSBjb250ZXh0IGlzIGFjdGl2ZVxuXG5cbiAgICAgICAgICBsYXRlckN4dE92ZXJyaWRlcyA9IGxhdGVyQ3h0LnByb3BlcnRpZXNbcHJvcC5uYW1lXSAhPSBudWxsO1xuXG4gICAgICAgICAgaWYgKGxhdGVyQ3h0T3ZlcnJpZGVzKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IC8vIGV4aXQgZWFybHkgYXMgbG9uZyBhcyBvbmUgbGF0ZXIgY29udGV4dCBvdmVycmlkZXNcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhZGRlZFByb3BbbmFtZV0gJiYgIWxhdGVyQ3h0T3ZlcnJpZGVzKSB7XG4gICAgICAgICAgYWRkZWRQcm9wW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgICBkaWZmUHJvcHMucHVzaChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBmb3IgcHJvcHNcblxuICAgIH0gLy8gaWZcblxuICB9IC8vIGZvciBjb250ZXh0c1xuXG5cbiAgY2FjaGVbZHVhbEN4dEtleV0gPSBkaWZmUHJvcHM7XG4gIHJldHVybiBkaWZmUHJvcHM7XG59O1xuXG5zdHlmbi5nZXRDb250ZXh0TWV0YSA9IGZ1bmN0aW9uIChlbGUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgY3h0S2V5ID0gJyc7XG4gIHZhciBkaWZmUHJvcHM7XG4gIHZhciBwcmV2S2V5ID0gZWxlLl9wcml2YXRlLnN0eWxlQ3h0S2V5IHx8ICcnOyAvLyBnZXQgdGhlIGN4dCBrZXlcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY29udGV4dCA9IHNlbGZbaV07XG4gICAgdmFyIGNvbnRleHRTZWxlY3Rvck1hdGNoZXMgPSBjb250ZXh0LnNlbGVjdG9yICYmIGNvbnRleHQuc2VsZWN0b3IubWF0Y2hlcyhlbGUpOyAvLyBOQjogY29udGV4dC5zZWxlY3RvciBtYXkgYmUgbnVsbCBmb3IgJ2NvcmUnXG5cbiAgICBpZiAoY29udGV4dFNlbGVjdG9yTWF0Y2hlcykge1xuICAgICAgY3h0S2V5ICs9IFRSVUU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN4dEtleSArPSBGQUxTRTtcbiAgICB9XG4gIH0gLy8gZm9yIGNvbnRleHRcblxuXG4gIGRpZmZQcm9wcyA9IHNlbGYuZ2V0UHJvcGVydGllc0RpZmYocHJldktleSwgY3h0S2V5KTtcbiAgZWxlLl9wcml2YXRlLnN0eWxlQ3h0S2V5ID0gY3h0S2V5O1xuICByZXR1cm4ge1xuICAgIGtleTogY3h0S2V5LFxuICAgIGRpZmZQcm9wTmFtZXM6IGRpZmZQcm9wcyxcbiAgICBlbXB0eTogZGlmZlByb3BzLmxlbmd0aCA9PT0gMFxuICB9O1xufTsgLy8gZ2V0cyBhIGNvbXB1dGVkIGVsZSBzdHlsZSBvYmplY3QgYmFzZWQgb24gbWF0Y2hlZCBjb250ZXh0c1xuXG5cbnN0eWZuLmdldENvbnRleHRTdHlsZSA9IGZ1bmN0aW9uIChjeHRNZXRhKSB7XG4gIHZhciBjeHRLZXkgPSBjeHRNZXRhLmtleTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgY3h0U3R5bGVzID0gdGhpcy5fcHJpdmF0ZS5jb250ZXh0U3R5bGVzID0gdGhpcy5fcHJpdmF0ZS5jb250ZXh0U3R5bGVzIHx8IHt9OyAvLyBpZiBhbHJlYWR5IGNvbXB1dGVkIHN0eWxlLCByZXR1cm5lZCBjYWNoZWQgY29weVxuXG4gIGlmIChjeHRTdHlsZXNbY3h0S2V5XSkge1xuICAgIHJldHVybiBjeHRTdHlsZXNbY3h0S2V5XTtcbiAgfVxuXG4gIHZhciBzdHlsZSA9IHtcbiAgICBfcHJpdmF0ZToge1xuICAgICAga2V5OiBjeHRLZXlcbiAgICB9XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGN4dCA9IHNlbGZbaV07XG4gICAgdmFyIGhhc0N4dCA9IGN4dEtleVtpXSA9PT0gVFJVRTtcblxuICAgIGlmICghaGFzQ3h0KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGN4dC5wcm9wZXJ0aWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgcHJvcCA9IGN4dC5wcm9wZXJ0aWVzW2pdO1xuICAgICAgc3R5bGVbcHJvcC5uYW1lXSA9IHByb3A7XG4gICAgfVxuICB9XG5cbiAgY3h0U3R5bGVzW2N4dEtleV0gPSBzdHlsZTtcbiAgcmV0dXJuIHN0eWxlO1xufTtcblxuc3R5Zm4uYXBwbHlDb250ZXh0U3R5bGUgPSBmdW5jdGlvbiAoY3h0TWV0YSwgY3h0U3R5bGUsIGVsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBkaWZmUHJvcHMgPSBjeHRNZXRhLmRpZmZQcm9wTmFtZXM7XG4gIHZhciByZXREaWZmUHJvcHMgPSB7fTtcbiAgdmFyIHR5cGVzID0gc2VsZi50eXBlcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZmZQcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkaWZmUHJvcE5hbWUgPSBkaWZmUHJvcHNbaV07XG4gICAgdmFyIGN4dFByb3AgPSBjeHRTdHlsZVtkaWZmUHJvcE5hbWVdO1xuICAgIHZhciBlbGVQcm9wID0gZWxlLnBzdHlsZShkaWZmUHJvcE5hbWUpO1xuXG4gICAgaWYgKCFjeHRQcm9wKSB7XG4gICAgICAvLyBubyBjb250ZXh0IHByb3AgbWVhbnMgZGVsZXRlXG4gICAgICBpZiAoIWVsZVByb3ApIHtcbiAgICAgICAgY29udGludWU7IC8vIG5vIGV4aXN0aW5nIHByb3AgbWVhbnMgbm90aGluZyBuZWVkcyB0byBiZSByZW1vdmVkXG4gICAgICAgIC8vIG5iIGFmZmVjdHMgaW5pdGlhbCBhcHBsaWNhdGlvbiBvbiBtYXBwZWQgdmFsdWVzIGxpa2UgY29udHJvbC1wb2ludC1kaXN0YW5jZXNcbiAgICAgIH0gZWxzZSBpZiAoZWxlUHJvcC5ieXBhc3MpIHtcbiAgICAgICAgY3h0UHJvcCA9IHtcbiAgICAgICAgICBuYW1lOiBkaWZmUHJvcE5hbWUsXG4gICAgICAgICAgZGVsZXRlQnlwYXNzZWQ6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN4dFByb3AgPSB7XG4gICAgICAgICAgbmFtZTogZGlmZlByb3BOYW1lLFxuICAgICAgICAgIFwiZGVsZXRlXCI6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IC8vIHNhdmUgY3ljbGVzIHdoZW4gdGhlIGNvbnRleHQgcHJvcCBkb2Vzbid0IG5lZWQgdG8gYmUgYXBwbGllZFxuXG5cbiAgICBpZiAoZWxlUHJvcCA9PT0gY3h0UHJvcCkge1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBzYXZlIGN5Y2xlcyB3aGVuIGEgbWFwcGVkIGNvbnRleHQgcHJvcCBkb2Vzbid0IG5lZWQgdG8gYmUgYXBwbGllZFxuXG5cbiAgICBpZiAoY3h0UHJvcC5tYXBwZWQgPT09IHR5cGVzLmZuIC8vIGNvbnRleHQgcHJvcCBpcyBmdW5jdGlvbiBtYXBwZXJcbiAgICAmJiBlbGVQcm9wICE9IG51bGwgLy8gc29tZSBwcm9wcyBjYW4gYmUgbnVsbCBldmVuIGJ5IGRlZmF1bHQgKGUuZy4gYSBwcm9wIHRoYXQgb3ZlcnJpZGVzIGFub3RoZXIgb25lKVxuICAgICYmIGVsZVByb3AubWFwcGluZyAhPSBudWxsIC8vIGVsZSBwcm9wIGlzIGEgY29uY3JldGUgdmFsdWUgZnJvbSBmcm9tIGEgbWFwcGVyXG4gICAgJiYgZWxlUHJvcC5tYXBwaW5nLnZhbHVlID09PSBjeHRQcm9wLnZhbHVlIC8vIHRoZSBjdXJyZW50IHByb3Agb24gdGhlIGVsZSBpcyBhIGZsYXQgcHJvcCB2YWx1ZSBmb3IgdGhlIGZ1bmN0aW9uIG1hcHBlclxuICAgICkge1xuICAgICAgICAvLyBOQiBkb24ndCB3cml0ZSB0byBjeHRQcm9wLCBhcyBpdCdzIHNoYXJlZCBhbW9uZyBlbGVzIChzdG9yZWQgaW4gc3R5bGVzaGVldClcbiAgICAgICAgdmFyIG1hcHBpbmcgPSBlbGVQcm9wLm1hcHBpbmc7IC8vIGNhbiB3cml0ZSB0byBtYXBwaW5nLCBhcyBpdCdzIGEgcGVyLWVsZSBjb3B5XG5cbiAgICAgICAgdmFyIGZuVmFsdWUgPSBtYXBwaW5nLmZuVmFsdWUgPSBjeHRQcm9wLnZhbHVlKGVsZSk7IC8vIHRlbXBvcmFyaWx5IGNhY2hlIHRoZSB2YWx1ZSBpbiBjYXNlIG9mIGEgbWlzc1xuXG4gICAgICAgIGlmIChmblZhbHVlID09PSBtYXBwaW5nLnByZXZGblZhbHVlKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIHZhciByZXREaWZmUHJvcCA9IHJldERpZmZQcm9wc1tkaWZmUHJvcE5hbWVdID0ge1xuICAgICAgcHJldjogZWxlUHJvcFxuICAgIH07XG4gICAgc2VsZi5hcHBseVBhcnNlZFByb3BlcnR5KGVsZSwgY3h0UHJvcCk7XG4gICAgcmV0RGlmZlByb3AubmV4dCA9IGVsZS5wc3R5bGUoZGlmZlByb3BOYW1lKTtcblxuICAgIGlmIChyZXREaWZmUHJvcC5uZXh0ICYmIHJldERpZmZQcm9wLm5leHQuYnlwYXNzKSB7XG4gICAgICByZXREaWZmUHJvcC5uZXh0ID0gcmV0RGlmZlByb3AubmV4dC5ieXBhc3NlZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRpZmZQcm9wczogcmV0RGlmZlByb3BzXG4gIH07XG59O1xuXG5zdHlmbi51cGRhdGVTdHlsZUhpbnRzID0gZnVuY3Rpb24gKGVsZSkge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHByb3BOYW1lcyA9IHNlbGYucHJvcGVydHlHcm91cE5hbWVzO1xuICB2YXIgcHJvcEdyS2V5cyA9IHNlbGYucHJvcGVydHlHcm91cEtleXM7XG5cbiAgdmFyIHByb3BIYXNoID0gZnVuY3Rpb24gcHJvcEhhc2goZWxlLCBwcm9wTmFtZXMsIHNlZWRLZXkpIHtcbiAgICByZXR1cm4gc2VsZi5nZXRQcm9wZXJ0aWVzSGFzaChlbGUsIHByb3BOYW1lcywgc2VlZEtleSk7XG4gIH07XG5cbiAgdmFyIG9sZFN0eWxlS2V5ID0gX3Auc3R5bGVLZXk7XG5cbiAgaWYgKGVsZS5yZW1vdmVkKCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNOb2RlID0gX3AuZ3JvdXAgPT09ICdub2Rlcyc7IC8vIGdldCB0aGUgc3R5bGUga2V5IGhhc2hlcyBwZXIgcHJvcCBncm91cFxuICAvLyBidXQgbGF6aWx5IC0tIG9ubHkgdXNlIG5vbi1kZWZhdWx0IHByb3AgdmFsdWVzIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGhhc2hlc1xuICAvL1xuXG4gIHZhciBvdmVycmlkZGVuU3R5bGVzID0gZWxlLl9wcml2YXRlLnN0eWxlO1xuICBwcm9wTmFtZXMgPSBPYmplY3Qua2V5cyhvdmVycmlkZGVuU3R5bGVzKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BHcktleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZ3JLZXkgPSBwcm9wR3JLZXlzW2ldO1xuICAgIF9wLnN0eWxlS2V5c1tncktleV0gPSBbREVGQVVMVF9IQVNIX1NFRUQsIERFRkFVTFRfSEFTSF9TRUVEX0FMVF07XG4gIH1cblxuICB2YXIgdXBkYXRlR3JLZXkxID0gZnVuY3Rpb24gdXBkYXRlR3JLZXkxKHZhbCwgZ3JLZXkpIHtcbiAgICByZXR1cm4gX3Auc3R5bGVLZXlzW2dyS2V5XVswXSA9IGhhc2hJbnQodmFsLCBfcC5zdHlsZUtleXNbZ3JLZXldWzBdKTtcbiAgfTtcblxuICB2YXIgdXBkYXRlR3JLZXkyID0gZnVuY3Rpb24gdXBkYXRlR3JLZXkyKHZhbCwgZ3JLZXkpIHtcbiAgICByZXR1cm4gX3Auc3R5bGVLZXlzW2dyS2V5XVsxXSA9IGhhc2hJbnRBbHQodmFsLCBfcC5zdHlsZUtleXNbZ3JLZXldWzFdKTtcbiAgfTtcblxuICB2YXIgdXBkYXRlR3JLZXkgPSBmdW5jdGlvbiB1cGRhdGVHcktleSh2YWwsIGdyS2V5KSB7XG4gICAgdXBkYXRlR3JLZXkxKHZhbCwgZ3JLZXkpO1xuICAgIHVwZGF0ZUdyS2V5Mih2YWwsIGdyS2V5KTtcbiAgfTtcblxuICB2YXIgdXBkYXRlR3JLZXlXU3RyID0gZnVuY3Rpb24gdXBkYXRlR3JLZXlXU3RyKHN0clZhbCwgZ3JLZXkpIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN0clZhbC5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIGNoID0gc3RyVmFsLmNoYXJDb2RlQXQoaik7XG4gICAgICB1cGRhdGVHcktleTEoY2gsIGdyS2V5KTtcbiAgICAgIHVwZGF0ZUdyS2V5MihjaCwgZ3JLZXkpO1xuICAgIH1cbiAgfTsgLy8gLSBoYXNoaW5nIHdvcmtzIG9uIDMyIGJpdCBpbnRzIGIvYyB3ZSB1c2UgYml0d2lzZSBvcHNcbiAgLy8gLSBzbWFsbCBudW1iZXJzIGdldCBjdXQgb2ZmIChlLmcuIDAuMTIzIGlzIHNlZW4gYXMgMCBieSB0aGUgaGFzaGluZyBmdW5jdGlvbilcbiAgLy8gLSByYWlzZSB1cCBzbWFsbCBudW1iZXJzIHNvIG1vcmUgc2lnbmlmaWNhbnQgZGlnaXRzIGFyZSBzZWVuIGJ5IGhhc2hpbmdcbiAgLy8gLSBtYWtlIHNtYWxsIG51bWJlcnMgbGFyZ2VyIHRoYW4gYSBub3JtYWwgdmFsdWUgdG8gYXZvaWQgY29sbGlzaW9uc1xuICAvLyAtIHdvcmtzIGluIHByYWN0aWNlIGFuZCBpdCdzIHJlbGF0aXZlbHkgY2hlYXBcblxuXG4gIHZhciBOID0gMjAwMDAwMDAwMDtcblxuICB2YXIgY2xlYW5OdW0gPSBmdW5jdGlvbiBjbGVhbk51bSh2YWwpIHtcbiAgICByZXR1cm4gLTEyOCA8IHZhbCAmJiB2YWwgPCAxMjggJiYgTWF0aC5mbG9vcih2YWwpICE9PSB2YWwgPyBOIC0gKHZhbCAqIDEwMjQgfCAwKSA6IHZhbDtcbiAgfTtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgcHJvcE5hbWVzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBuYW1lID0gcHJvcE5hbWVzW19pXTtcbiAgICB2YXIgcGFyc2VkUHJvcCA9IG92ZXJyaWRkZW5TdHlsZXNbbmFtZV07XG5cbiAgICBpZiAocGFyc2VkUHJvcCA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgcHJvcEluZm8gPSB0aGlzLnByb3BlcnRpZXNbbmFtZV07XG4gICAgdmFyIHR5cGUgPSBwcm9wSW5mby50eXBlO1xuICAgIHZhciBfZ3JLZXkgPSBwcm9wSW5mby5ncm91cEtleTtcbiAgICB2YXIgbm9ybWFsaXplZE51bWJlclZhbCA9IHZvaWQgMDtcblxuICAgIGlmIChwcm9wSW5mby5oYXNoT3ZlcnJpZGUgIT0gbnVsbCkge1xuICAgICAgbm9ybWFsaXplZE51bWJlclZhbCA9IHByb3BJbmZvLmhhc2hPdmVycmlkZShlbGUsIHBhcnNlZFByb3ApO1xuICAgIH0gZWxzZSBpZiAocGFyc2VkUHJvcC5wZlZhbHVlICE9IG51bGwpIHtcbiAgICAgIG5vcm1hbGl6ZWROdW1iZXJWYWwgPSBwYXJzZWRQcm9wLnBmVmFsdWU7XG4gICAgfSAvLyBtaWdodCBub3QgYmUgYSBudW1iZXIgaWYgaXQgYWxsb3dzIGVudW1zXG5cblxuICAgIHZhciBudW1iZXJWYWwgPSBwcm9wSW5mby5lbnVtcyA9PSBudWxsID8gcGFyc2VkUHJvcC52YWx1ZSA6IG51bGw7XG4gICAgdmFyIGhhdmVOb3JtTnVtID0gbm9ybWFsaXplZE51bWJlclZhbCAhPSBudWxsO1xuICAgIHZhciBoYXZlVW5pdGVkTnVtID0gbnVtYmVyVmFsICE9IG51bGw7XG4gICAgdmFyIGhhdmVOdW0gPSBoYXZlTm9ybU51bSB8fCBoYXZlVW5pdGVkTnVtO1xuICAgIHZhciB1bml0cyA9IHBhcnNlZFByb3AudW5pdHM7IC8vIG51bWJlcnMgYXJlIGNoZWFwZXIgdG8gaGFzaCB0aGFuIHN0cmluZ3NcbiAgICAvLyAxIGhhc2ggb3AgdnMgbiBoYXNoIG9wcyAoZm9yIGxlbmd0aCBuIHN0cmluZylcblxuICAgIGlmICh0eXBlLm51bWJlciAmJiBoYXZlTnVtICYmICF0eXBlLm11bHRpcGxlKSB7XG4gICAgICB2YXIgdiA9IGhhdmVOb3JtTnVtID8gbm9ybWFsaXplZE51bWJlclZhbCA6IG51bWJlclZhbDtcbiAgICAgIHVwZGF0ZUdyS2V5KGNsZWFuTnVtKHYpLCBfZ3JLZXkpO1xuXG4gICAgICBpZiAoIWhhdmVOb3JtTnVtICYmIHVuaXRzICE9IG51bGwpIHtcbiAgICAgICAgdXBkYXRlR3JLZXlXU3RyKHVuaXRzLCBfZ3JLZXkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGVHcktleVdTdHIocGFyc2VkUHJvcC5zdHJWYWx1ZSwgX2dyS2V5KTtcbiAgICB9XG4gIH0gLy8gb3ZlcmFsbCBzdHlsZSBrZXlcbiAgLy9cblxuXG4gIHZhciBoYXNoID0gW0RFRkFVTFRfSEFTSF9TRUVELCBERUZBVUxUX0hBU0hfU0VFRF9BTFRdO1xuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHByb3BHcktleXMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBfZ3JLZXkyID0gcHJvcEdyS2V5c1tfaTJdO1xuICAgIHZhciBnckhhc2ggPSBfcC5zdHlsZUtleXNbX2dyS2V5Ml07XG4gICAgaGFzaFswXSA9IGhhc2hJbnQoZ3JIYXNoWzBdLCBoYXNoWzBdKTtcbiAgICBoYXNoWzFdID0gaGFzaEludEFsdChnckhhc2hbMV0sIGhhc2hbMV0pO1xuICB9XG5cbiAgX3Auc3R5bGVLZXkgPSBjb21iaW5lSGFzaGVzKGhhc2hbMF0sIGhhc2hbMV0pOyAvLyBsYWJlbCBkaW1zXG4gIC8vXG5cbiAgdmFyIHNrID0gX3Auc3R5bGVLZXlzO1xuICBfcC5sYWJlbERpbXNLZXkgPSBjb21iaW5lSGFzaGVzQXJyYXkoc2subGFiZWxEaW1lbnNpb25zKTtcbiAgdmFyIGxhYmVsS2V5cyA9IHByb3BIYXNoKGVsZSwgWydsYWJlbCddLCBzay5sYWJlbERpbWVuc2lvbnMpO1xuICBfcC5sYWJlbEtleSA9IGNvbWJpbmVIYXNoZXNBcnJheShsYWJlbEtleXMpO1xuICBfcC5sYWJlbFN0eWxlS2V5ID0gY29tYmluZUhhc2hlc0FycmF5KGhhc2hBcnJheXMoc2suY29tbW9uTGFiZWwsIGxhYmVsS2V5cykpO1xuXG4gIGlmICghaXNOb2RlKSB7XG4gICAgdmFyIHNvdXJjZUxhYmVsS2V5cyA9IHByb3BIYXNoKGVsZSwgWydzb3VyY2UtbGFiZWwnXSwgc2subGFiZWxEaW1lbnNpb25zKTtcbiAgICBfcC5zb3VyY2VMYWJlbEtleSA9IGNvbWJpbmVIYXNoZXNBcnJheShzb3VyY2VMYWJlbEtleXMpO1xuICAgIF9wLnNvdXJjZUxhYmVsU3R5bGVLZXkgPSBjb21iaW5lSGFzaGVzQXJyYXkoaGFzaEFycmF5cyhzay5jb21tb25MYWJlbCwgc291cmNlTGFiZWxLZXlzKSk7XG4gICAgdmFyIHRhcmdldExhYmVsS2V5cyA9IHByb3BIYXNoKGVsZSwgWyd0YXJnZXQtbGFiZWwnXSwgc2subGFiZWxEaW1lbnNpb25zKTtcbiAgICBfcC50YXJnZXRMYWJlbEtleSA9IGNvbWJpbmVIYXNoZXNBcnJheSh0YXJnZXRMYWJlbEtleXMpO1xuICAgIF9wLnRhcmdldExhYmVsU3R5bGVLZXkgPSBjb21iaW5lSGFzaGVzQXJyYXkoaGFzaEFycmF5cyhzay5jb21tb25MYWJlbCwgdGFyZ2V0TGFiZWxLZXlzKSk7XG4gIH0gLy8gbm9kZVxuICAvL1xuXG5cbiAgaWYgKGlzTm9kZSkge1xuICAgIHZhciBfcCRzdHlsZUtleXMgPSBfcC5zdHlsZUtleXMsXG4gICAgICAgIG5vZGVCb2R5ID0gX3Akc3R5bGVLZXlzLm5vZGVCb2R5LFxuICAgICAgICBub2RlQm9yZGVyID0gX3Akc3R5bGVLZXlzLm5vZGVCb3JkZXIsXG4gICAgICAgIGJhY2tncm91bmRJbWFnZSA9IF9wJHN0eWxlS2V5cy5iYWNrZ3JvdW5kSW1hZ2UsXG4gICAgICAgIGNvbXBvdW5kID0gX3Akc3R5bGVLZXlzLmNvbXBvdW5kLFxuICAgICAgICBwaWUgPSBfcCRzdHlsZUtleXMucGllO1xuICAgIHZhciBub2RlS2V5cyA9IFtub2RlQm9keSwgbm9kZUJvcmRlciwgYmFja2dyb3VuZEltYWdlLCBjb21wb3VuZCwgcGllXS5maWx0ZXIoZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiBrICE9IG51bGw7XG4gICAgfSkucmVkdWNlKGhhc2hBcnJheXMsIFtERUZBVUxUX0hBU0hfU0VFRCwgREVGQVVMVF9IQVNIX1NFRURfQUxUXSk7XG4gICAgX3Aubm9kZUtleSA9IGNvbWJpbmVIYXNoZXNBcnJheShub2RlS2V5cyk7XG4gICAgX3AuaGFzUGllID0gcGllICE9IG51bGwgJiYgcGllWzBdICE9PSBERUZBVUxUX0hBU0hfU0VFRCAmJiBwaWVbMV0gIT09IERFRkFVTFRfSEFTSF9TRUVEX0FMVDtcbiAgfVxuXG4gIHJldHVybiBvbGRTdHlsZUtleSAhPT0gX3Auc3R5bGVLZXk7XG59O1xuXG5zdHlmbi5jbGVhclN0eWxlSGludHMgPSBmdW5jdGlvbiAoZWxlKSB7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgX3Auc3R5bGVDeHRLZXkgPSAnJztcbiAgX3Auc3R5bGVLZXlzID0ge307XG4gIF9wLnN0eWxlS2V5ID0gbnVsbDtcbiAgX3AubGFiZWxLZXkgPSBudWxsO1xuICBfcC5sYWJlbFN0eWxlS2V5ID0gbnVsbDtcbiAgX3Auc291cmNlTGFiZWxLZXkgPSBudWxsO1xuICBfcC5zb3VyY2VMYWJlbFN0eWxlS2V5ID0gbnVsbDtcbiAgX3AudGFyZ2V0TGFiZWxLZXkgPSBudWxsO1xuICBfcC50YXJnZXRMYWJlbFN0eWxlS2V5ID0gbnVsbDtcbiAgX3Aubm9kZUtleSA9IG51bGw7XG4gIF9wLmhhc1BpZSA9IG51bGw7XG59OyAvLyBhcHBseSBhIHByb3BlcnR5IHRvIHRoZSBzdHlsZSAoZm9yIGludGVybmFsIHVzZSlcbi8vIHJldHVybnMgd2hldGhlciBhcHBsaWNhdGlvbiB3YXMgc3VjY2Vzc2Z1bFxuLy9cbi8vIG5vdywgdGhpcyBmdW5jdGlvbiBmbGF0dGVucyB0aGUgcHJvcGVydHksIGFuZCBoZXJlJ3MgaG93OlxuLy9cbi8vIGZvciBwYXJzZWRQcm9wOnsgYnlwYXNzOiB0cnVlLCBkZWxldGVCeXBhc3M6IHRydWUgfVxuLy8gbm8gcHJvcGVydHkgaXMgZ2VuZXJhdGVkLCBpbnN0ZWFkIHRoZSBieXBhc3MgcHJvcGVydHkgaW4gdGhlXG4vLyBlbGVtZW50J3Mgc3R5bGUgaXMgcmVwbGFjZWQgYnkgd2hhdCdzIHBvaW50ZWQgdG8gYnkgdGhlIGBieXBhc3NlZGBcbi8vIGZpZWxkIGluIHRoZSBieXBhc3MgcHJvcGVydHkgKGkuZS4gcmVzdG9yaW5nIHRoZSBwcm9wZXJ0eSB0aGVcbi8vIGJ5cGFzcyB3YXMgb3ZlcnJpZGluZylcbi8vXG4vLyBmb3IgcGFyc2VkUHJvcDp7IG1hcHBlZDogdHJ1dGh5IH1cbi8vIHRoZSBnZW5lcmF0ZWQgZmxhdHRlbmVkUHJvcDp7IG1hcHBpbmc6IHByb3AgfVxuLy9cbi8vIGZvciBwYXJzZWRQcm9wOnsgYnlwYXNzOiB0cnVlIH1cbi8vIHRoZSBnZW5lcmF0ZWQgZmxhdHRlbmVkUHJvcDp7IGJ5cGFzc2VkOiBwYXJzZWRQcm9wIH1cblxuXG5zdHlmbi5hcHBseVBhcnNlZFByb3BlcnR5ID0gZnVuY3Rpb24gKGVsZSwgcGFyc2VkUHJvcCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBwcm9wID0gcGFyc2VkUHJvcDtcbiAgdmFyIHN0eWxlID0gZWxlLl9wcml2YXRlLnN0eWxlO1xuICB2YXIgZmxhdFByb3A7XG4gIHZhciB0eXBlcyA9IHNlbGYudHlwZXM7XG4gIHZhciB0eXBlID0gc2VsZi5wcm9wZXJ0aWVzW3Byb3AubmFtZV0udHlwZTtcbiAgdmFyIHByb3BJc0J5cGFzcyA9IHByb3AuYnlwYXNzO1xuICB2YXIgb3JpZ1Byb3AgPSBzdHlsZVtwcm9wLm5hbWVdO1xuICB2YXIgb3JpZ1Byb3BJc0J5cGFzcyA9IG9yaWdQcm9wICYmIG9yaWdQcm9wLmJ5cGFzcztcbiAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICB2YXIgZmxhdFByb3BNYXBwaW5nID0gJ21hcHBpbmcnO1xuXG4gIHZhciBnZXRWYWwgPSBmdW5jdGlvbiBnZXRWYWwocCkge1xuICAgIGlmIChwID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAocC5wZlZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwLnBmVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwLnZhbHVlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgY2hlY2tUcmlnZ2VycyA9IGZ1bmN0aW9uIGNoZWNrVHJpZ2dlcnMoKSB7XG4gICAgdmFyIGZyb21WYWwgPSBnZXRWYWwob3JpZ1Byb3ApO1xuICAgIHZhciB0b1ZhbCA9IGdldFZhbChwcm9wKTtcbiAgICBzZWxmLmNoZWNrVHJpZ2dlcnMoZWxlLCBwcm9wLm5hbWUsIGZyb21WYWwsIHRvVmFsKTtcbiAgfTtcblxuICBpZiAocHJvcCAmJiBwcm9wLm5hbWUuc3Vic3RyKDAsIDMpID09PSAncGllJykge1xuICAgIHdhcm4oJ1RoZSBwaWUgc3R5bGUgcHJvcGVydGllcyBhcmUgZGVwcmVjYXRlZC4gIENyZWF0ZSBjaGFydHMgdXNpbmcgYmFja2dyb3VuZCBpbWFnZXMgaW5zdGVhZC4nKTtcbiAgfSAvLyBlZGdlIHNhbml0eSBjaGVja3MgdG8gcHJldmVudCB0aGUgY2xpZW50IGZyb20gbWFraW5nIHNlcmlvdXMgbWlzdGFrZXNcblxuXG4gIGlmIChwYXJzZWRQcm9wLm5hbWUgPT09ICdjdXJ2ZS1zdHlsZScgJiYgZWxlLmlzRWRnZSgpICYmICggLy8gbG9vcHMgbXVzdCBiZSBidW5kbGVkIGJlemllcnNcbiAgcGFyc2VkUHJvcC52YWx1ZSAhPT0gJ2JlemllcicgJiYgZWxlLmlzTG9vcCgpIHx8IC8vIGVkZ2VzIGNvbm5lY3RlZCB0byBjb21wb3VuZCBub2RlcyBjYW4gbm90IGJlIGhheXN0YWNrc1xuICBwYXJzZWRQcm9wLnZhbHVlID09PSAnaGF5c3RhY2snICYmIChlbGUuc291cmNlKCkuaXNQYXJlbnQoKSB8fCBlbGUudGFyZ2V0KCkuaXNQYXJlbnQoKSkpKSB7XG4gICAgcHJvcCA9IHBhcnNlZFByb3AgPSB0aGlzLnBhcnNlKHBhcnNlZFByb3AubmFtZSwgJ2JlemllcicsIHByb3BJc0J5cGFzcyk7XG4gIH1cblxuICBpZiAocHJvcFtcImRlbGV0ZVwiXSkge1xuICAgIC8vIGRlbGV0ZSB0aGUgcHJvcGVydHkgYW5kIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZSBvbiBmYWxzZXkgdmFsdWVcbiAgICBzdHlsZVtwcm9wLm5hbWVdID0gdW5kZWZpbmVkO1xuICAgIGNoZWNrVHJpZ2dlcnMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wLmRlbGV0ZUJ5cGFzc2VkKSB7XG4gICAgLy8gZGVsZXRlIHRoZSBwcm9wZXJ0eSB0aGF0IHRoZVxuICAgIGlmICghb3JpZ1Byb3ApIHtcbiAgICAgIGNoZWNrVHJpZ2dlcnMoKTtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBjYW4ndCBkZWxldGUgaWYgbm8gcHJvcFxuICAgIH0gZWxzZSBpZiAob3JpZ1Byb3AuYnlwYXNzKSB7XG4gICAgICAvLyBkZWxldGUgYnlwYXNzZWRcbiAgICAgIG9yaWdQcm9wLmJ5cGFzc2VkID0gdW5kZWZpbmVkO1xuICAgICAgY2hlY2tUcmlnZ2VycygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTsgLy8gd2UncmUgdW5zdWNjZXNzZnVsIGRlbGV0aW5nIHRoZSBieXBhc3NlZFxuICAgIH1cbiAgfSAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIGRlbGV0ZSB0aGUgY3VycmVudCBieXBhc3NcblxuXG4gIGlmIChwcm9wLmRlbGV0ZUJ5cGFzcykge1xuICAgIC8vIHRoZW4gdGhpcyBwcm9wZXJ0eSBpcyBqdXN0IGhlcmUgdG8gaW5kaWNhdGUgd2UgbmVlZCB0byBkZWxldGVcbiAgICBpZiAoIW9yaWdQcm9wKSB7XG4gICAgICBjaGVja1RyaWdnZXJzKCk7XG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gcHJvcGVydHkgaXMgYWxyZWFkeSBub3QgZGVmaW5lZFxuICAgIH0gZWxzZSBpZiAob3JpZ1Byb3AuYnlwYXNzKSB7XG4gICAgICAvLyB0aGVuIHJlcGxhY2UgdGhlIGJ5cGFzcyBwcm9wZXJ0eSB3aXRoIHRoZSBvcmlnaW5hbFxuICAgICAgLy8gYmVjYXVzZSB0aGUgYnlwYXNzZWQgcHJvcGVydHkgd2FzIGFscmVhZHkgYXBwbGllZCAoYW5kIHRoZXJlZm9yZSBwYXJzZWQpLCB3ZSBjYW4ganVzdCByZXBsYWNlIGl0IChubyByZWFwcGx5aW5nIG5lY2Vzc2FyeSlcbiAgICAgIHN0eWxlW3Byb3AubmFtZV0gPSBvcmlnUHJvcC5ieXBhc3NlZDtcbiAgICAgIGNoZWNrVHJpZ2dlcnMoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIHdlJ3JlIHVuc3VjY2Vzc2Z1bCBkZWxldGluZyB0aGUgYnlwYXNzXG4gICAgfVxuICB9XG5cbiAgdmFyIHByaW50TWFwcGluZ0VyciA9IGZ1bmN0aW9uIHByaW50TWFwcGluZ0VycigpIHtcbiAgICB3YXJuKCdEbyBub3QgYXNzaWduIG1hcHBpbmdzIHRvIGVsZW1lbnRzIHdpdGhvdXQgY29ycmVzcG9uZGluZyBkYXRhIChpLmUuIGVsZSBgJyArIGVsZS5pZCgpICsgJ2AgaGFzIG5vIG1hcHBpbmcgZm9yIHByb3BlcnR5IGAnICsgcHJvcC5uYW1lICsgJ2Agd2l0aCBkYXRhIGZpZWxkIGAnICsgcHJvcC5maWVsZCArICdgKTsgdHJ5IGEgYFsnICsgcHJvcC5maWVsZCArICddYCBzZWxlY3RvciB0byBsaW1pdCBzY29wZSB0byBlbGVtZW50cyB3aXRoIGAnICsgcHJvcC5maWVsZCArICdgIGRlZmluZWQnKTtcbiAgfTsgLy8gcHV0IHRoZSBwcm9wZXJ0eSBpbiB0aGUgc3R5bGUgb2JqZWN0c1xuXG5cbiAgc3dpdGNoIChwcm9wLm1hcHBlZCkge1xuICAgIC8vIGZsYXR0ZW4gdGhlIHByb3BlcnR5IGlmIG1hcHBlZFxuICAgIGNhc2UgdHlwZXMubWFwRGF0YTpcbiAgICAgIHtcbiAgICAgICAgLy8gZmxhdHRlbiB0aGUgZmllbGQgKGUuZy4gZGF0YS5mb28uYmFyKVxuICAgICAgICB2YXIgZmllbGRzID0gcHJvcC5maWVsZC5zcGxpdCgnLicpO1xuICAgICAgICB2YXIgZmllbGRWYWwgPSBfcC5kYXRhO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aCAmJiBmaWVsZFZhbDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGZpZWxkID0gZmllbGRzW2ldO1xuICAgICAgICAgIGZpZWxkVmFsID0gZmllbGRWYWxbZmllbGRdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkVmFsID09IG51bGwpIHtcbiAgICAgICAgICBwcmludE1hcHBpbmdFcnIoKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGVyY2VudDtcblxuICAgICAgICBpZiAoIW51bWJlcihmaWVsZFZhbCkpIHtcbiAgICAgICAgICAvLyB0aGVuIGRvbid0IGFwcGx5IGFuZCBmYWxsIGJhY2sgb24gdGhlIGV4aXN0aW5nIHN0eWxlXG4gICAgICAgICAgd2FybignRG8gbm90IHVzZSBjb250aW51b3VzIG1hcHBlcnMgd2l0aG91dCBzcGVjaWZ5aW5nIG51bWVyaWMgZGF0YSAoaS5lLiBgJyArIHByb3AuZmllbGQgKyAnOiAnICsgZmllbGRWYWwgKyAnYCBmb3IgYCcgKyBlbGUuaWQoKSArICdgIGlzIG5vbi1udW1lcmljKScpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgZmllbGRXaWR0aCA9IHByb3AuZmllbGRNYXggLSBwcm9wLmZpZWxkTWluO1xuXG4gICAgICAgICAgaWYgKGZpZWxkV2lkdGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIHNhZmV0eSBjaGVjayAtLSBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGFzIG5vIHByb3BzIG9mIHplcm8gcmFuZ2Ugc2hvdWxkIGJlIHBhc3NlZCBoZXJlXG4gICAgICAgICAgICBwZXJjZW50ID0gMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVyY2VudCA9IChmaWVsZFZhbCAtIHByb3AuZmllbGRNaW4pIC8gZmllbGRXaWR0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gbWFrZSBzdXJlIHRvIGJvdW5kIHBlcmNlbnQgdmFsdWVcblxuXG4gICAgICAgIGlmIChwZXJjZW50IDwgMCkge1xuICAgICAgICAgIHBlcmNlbnQgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxKSB7XG4gICAgICAgICAgcGVyY2VudCA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZS5jb2xvcikge1xuICAgICAgICAgIHZhciByMSA9IHByb3AudmFsdWVNaW5bMF07XG4gICAgICAgICAgdmFyIHIyID0gcHJvcC52YWx1ZU1heFswXTtcbiAgICAgICAgICB2YXIgZzEgPSBwcm9wLnZhbHVlTWluWzFdO1xuICAgICAgICAgIHZhciBnMiA9IHByb3AudmFsdWVNYXhbMV07XG4gICAgICAgICAgdmFyIGIxID0gcHJvcC52YWx1ZU1pblsyXTtcbiAgICAgICAgICB2YXIgYjIgPSBwcm9wLnZhbHVlTWF4WzJdO1xuICAgICAgICAgIHZhciBhMSA9IHByb3AudmFsdWVNaW5bM10gPT0gbnVsbCA/IDEgOiBwcm9wLnZhbHVlTWluWzNdO1xuICAgICAgICAgIHZhciBhMiA9IHByb3AudmFsdWVNYXhbM10gPT0gbnVsbCA/IDEgOiBwcm9wLnZhbHVlTWF4WzNdO1xuICAgICAgICAgIHZhciBjbHIgPSBbTWF0aC5yb3VuZChyMSArIChyMiAtIHIxKSAqIHBlcmNlbnQpLCBNYXRoLnJvdW5kKGcxICsgKGcyIC0gZzEpICogcGVyY2VudCksIE1hdGgucm91bmQoYjEgKyAoYjIgLSBiMSkgKiBwZXJjZW50KSwgTWF0aC5yb3VuZChhMSArIChhMiAtIGExKSAqIHBlcmNlbnQpXTtcbiAgICAgICAgICBmbGF0UHJvcCA9IHtcbiAgICAgICAgICAgIC8vIGNvbG91cnMgYXJlIHNpbXBsZSwgc28ganVzdCBjcmVhdGUgdGhlIGZsYXQgcHJvcGVydHkgaW5zdGVhZCBvZiBleHBlbnNpdmUgc3RyaW5nIHBhcnNpbmdcbiAgICAgICAgICAgIGJ5cGFzczogcHJvcC5ieXBhc3MsXG4gICAgICAgICAgICAvLyB3ZSdyZSBhIGJ5cGFzcyBpZiB0aGUgbWFwcGluZyBwcm9wZXJ0eSBpcyBhIGJ5cGFzc1xuICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgICAgdmFsdWU6IGNscixcbiAgICAgICAgICAgIHN0clZhbHVlOiAncmdiKCcgKyBjbHJbMF0gKyAnLCAnICsgY2xyWzFdICsgJywgJyArIGNsclsyXSArICcpJ1xuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZS5udW1iZXIpIHtcbiAgICAgICAgICB2YXIgY2FsY1ZhbHVlID0gcHJvcC52YWx1ZU1pbiArIChwcm9wLnZhbHVlTWF4IC0gcHJvcC52YWx1ZU1pbikgKiBwZXJjZW50O1xuICAgICAgICAgIGZsYXRQcm9wID0gdGhpcy5wYXJzZShwcm9wLm5hbWUsIGNhbGNWYWx1ZSwgcHJvcC5ieXBhc3MsIGZsYXRQcm9wTWFwcGluZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBjYW4gb25seSBtYXAgdG8gY29sb3VycyBhbmQgbnVtYmVyc1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmbGF0UHJvcCkge1xuICAgICAgICAgIC8vIGlmIHdlIGNhbid0IGZsYXR0ZW4gdGhlIHByb3BlcnR5LCB0aGVuIGRvbid0IGFwcGx5IHRoZSBwcm9wZXJ0eSBhbmQgZmFsbCBiYWNrIG9uIHRoZSBleGlzdGluZyBzdHlsZVxuICAgICAgICAgIHByaW50TWFwcGluZ0VycigpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZsYXRQcm9wLm1hcHBpbmcgPSBwcm9wOyAvLyBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBtYXBwaW5nXG5cbiAgICAgICAgcHJvcCA9IGZsYXRQcm9wOyAvLyB0aGUgZmxhdHRlbmVkIChtYXBwZWQpIHByb3BlcnR5IGlzIHRoZSBvbmUgd2Ugd2FudFxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIC8vIGRpcmVjdCBtYXBwaW5nXG5cbiAgICBjYXNlIHR5cGVzLmRhdGE6XG4gICAgICB7XG4gICAgICAgIC8vIGZsYXR0ZW4gdGhlIGZpZWxkIChlLmcuIGRhdGEuZm9vLmJhcilcbiAgICAgICAgdmFyIF9maWVsZHMgPSBwcm9wLmZpZWxkLnNwbGl0KCcuJyk7XG5cbiAgICAgICAgdmFyIF9maWVsZFZhbCA9IF9wLmRhdGE7XG5cbiAgICAgICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgX2ZpZWxkcy5sZW5ndGggJiYgX2ZpZWxkVmFsOyBfaTMrKykge1xuICAgICAgICAgIHZhciBfZmllbGQgPSBfZmllbGRzW19pM107XG4gICAgICAgICAgX2ZpZWxkVmFsID0gX2ZpZWxkVmFsW19maWVsZF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX2ZpZWxkVmFsICE9IG51bGwpIHtcbiAgICAgICAgICBmbGF0UHJvcCA9IHRoaXMucGFyc2UocHJvcC5uYW1lLCBfZmllbGRWYWwsIHByb3AuYnlwYXNzLCBmbGF0UHJvcE1hcHBpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmbGF0UHJvcCkge1xuICAgICAgICAgIC8vIGlmIHdlIGNhbid0IGZsYXR0ZW4gdGhlIHByb3BlcnR5LCB0aGVuIGRvbid0IGFwcGx5IGFuZCBmYWxsIGJhY2sgb24gdGhlIGV4aXN0aW5nIHN0eWxlXG4gICAgICAgICAgcHJpbnRNYXBwaW5nRXJyKCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZmxhdFByb3AubWFwcGluZyA9IHByb3A7IC8vIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1hcHBpbmdcblxuICAgICAgICBwcm9wID0gZmxhdFByb3A7IC8vIHRoZSBmbGF0dGVuZWQgKG1hcHBlZCkgcHJvcGVydHkgaXMgdGhlIG9uZSB3ZSB3YW50XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBjYXNlIHR5cGVzLmZuOlxuICAgICAge1xuICAgICAgICB2YXIgZm4gPSBwcm9wLnZhbHVlO1xuICAgICAgICB2YXIgZm5SZXRWYWwgPSBwcm9wLmZuVmFsdWUgIT0gbnVsbCA/IHByb3AuZm5WYWx1ZSA6IGZuKGVsZSk7IC8vIGNoZWNrIGZvciBjYWNoZWQgdmFsdWUgYmVmb3JlIGNhbGxpbmcgZnVuY3Rpb25cblxuICAgICAgICBwcm9wLnByZXZGblZhbHVlID0gZm5SZXRWYWw7XG5cbiAgICAgICAgaWYgKGZuUmV0VmFsID09IG51bGwpIHtcbiAgICAgICAgICB3YXJuKCdDdXN0b20gZnVuY3Rpb24gbWFwcGVycyBtYXkgbm90IHJldHVybiBudWxsIChpLmUuIGAnICsgcHJvcC5uYW1lICsgJ2AgZm9yIGVsZSBgJyArIGVsZS5pZCgpICsgJ2AgaXMgbnVsbCknKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmbGF0UHJvcCA9IHRoaXMucGFyc2UocHJvcC5uYW1lLCBmblJldFZhbCwgcHJvcC5ieXBhc3MsIGZsYXRQcm9wTWFwcGluZyk7XG5cbiAgICAgICAgaWYgKCFmbGF0UHJvcCkge1xuICAgICAgICAgIHdhcm4oJ0N1c3RvbSBmdW5jdGlvbiBtYXBwZXJzIG1heSBub3QgcmV0dXJuIGludmFsaWQgdmFsdWVzIGZvciB0aGUgcHJvcGVydHkgdHlwZSAoaS5lLiBgJyArIHByb3AubmFtZSArICdgIGZvciBlbGUgYCcgKyBlbGUuaWQoKSArICdgIGlzIGludmFsaWQpJyk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZmxhdFByb3AubWFwcGluZyA9IGNvcHkocHJvcCk7IC8vIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1hcHBpbmdcblxuICAgICAgICBwcm9wID0gZmxhdFByb3A7IC8vIHRoZSBmbGF0dGVuZWQgKG1hcHBlZCkgcHJvcGVydHkgaXMgdGhlIG9uZSB3ZSB3YW50XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgIGJyZWFrO1xuICAgIC8vIGp1c3Qgc2V0IHRoZSBwcm9wZXJ0eVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyBub3QgYSB2YWxpZCBtYXBwaW5nXG4gIH0gLy8gaWYgdGhlIHByb3BlcnR5IGlzIGEgYnlwYXNzIHByb3BlcnR5LCB0aGVuIGxpbmsgdGhlIHJlc3VsdGFudCBwcm9wZXJ0eSB0byB0aGUgb3JpZ2luYWwgb25lXG5cblxuICBpZiAocHJvcElzQnlwYXNzKSB7XG4gICAgaWYgKG9yaWdQcm9wSXNCeXBhc3MpIHtcbiAgICAgIC8vIHRoZW4gdGhpcyBieXBhc3Mgb3ZlcnJpZGVzIHRoZSBleGlzdGluZyBvbmVcbiAgICAgIHByb3AuYnlwYXNzZWQgPSBvcmlnUHJvcC5ieXBhc3NlZDsgLy8gc3RlYWwgYnlwYXNzZWQgcHJvcCBmcm9tIG9sZCBieXBhc3NcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdGhlbiBsaW5rIHRoZSBvcmlnIHByb3AgdG8gdGhlIG5ldyBieXBhc3NcbiAgICAgIHByb3AuYnlwYXNzZWQgPSBvcmlnUHJvcDtcbiAgICB9XG5cbiAgICBzdHlsZVtwcm9wLm5hbWVdID0gcHJvcDsgLy8gYW5kIHNldFxuICB9IGVsc2Uge1xuICAgIC8vIHByb3AgaXMgbm90IGJ5cGFzc1xuICAgIGlmIChvcmlnUHJvcElzQnlwYXNzKSB7XG4gICAgICAvLyB0aGVuIGtlZXAgdGhlIG9yaWcgcHJvcCAoc2luY2UgaXQncyBhIGJ5cGFzcykgYW5kIGxpbmsgdG8gdGhlIG5ldyBwcm9wXG4gICAgICBvcmlnUHJvcC5ieXBhc3NlZCA9IHByb3A7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoZW4ganVzdCByZXBsYWNlIHRoZSBvbGQgcHJvcCB3aXRoIHRoZSBuZXcgb25lXG4gICAgICBzdHlsZVtwcm9wLm5hbWVdID0gcHJvcDtcbiAgICB9XG4gIH1cblxuICBjaGVja1RyaWdnZXJzKCk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuc3R5Zm4uY2xlYW5FbGVtZW50cyA9IGZ1bmN0aW9uIChlbGVzLCBrZWVwQnlwYXNzZXMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgdGhpcy5jbGVhclN0eWxlSGludHMoZWxlKTtcbiAgICBlbGUuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlKCk7XG4gICAgZWxlLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSgpO1xuXG4gICAgaWYgKCFrZWVwQnlwYXNzZXMpIHtcbiAgICAgIGVsZS5fcHJpdmF0ZS5zdHlsZSA9IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3R5bGUgPSBlbGUuX3ByaXZhdGUuc3R5bGU7XG4gICAgICB2YXIgcHJvcE5hbWVzID0gT2JqZWN0LmtleXMoc3R5bGUpO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BOYW1lcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wTmFtZXNbal07XG4gICAgICAgIHZhciBlbGVQcm9wID0gc3R5bGVbcHJvcE5hbWVdO1xuXG4gICAgICAgIGlmIChlbGVQcm9wICE9IG51bGwpIHtcbiAgICAgICAgICBpZiAoZWxlUHJvcC5ieXBhc3MpIHtcbiAgICAgICAgICAgIGVsZVByb3AuYnlwYXNzZWQgPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZVtwcm9wTmFtZV0gPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufTsgLy8gdXBkYXRlcyB0aGUgdmlzdWFsIHN0eWxlIGZvciBhbGwgZWxlbWVudHMgKHVzZWZ1bCBmb3IgbWFudWFsIHN0eWxlIG1vZGlmaWNhdGlvbiBhZnRlciBpbml0KVxuXG5cbnN0eWZuLnVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgdmFyIGVsZXMgPSBjeS5tdXRhYmxlRWxlbWVudHMoKTtcbiAgZWxlcy51cGRhdGVTdHlsZSgpO1xufTsgLy8gZGlmZlByb3BzIDogeyBuYW1lID0+IHsgcHJldiwgbmV4dCB9IH1cblxuXG5zdHlmbi51cGRhdGVUcmFuc2l0aW9ucyA9IGZ1bmN0aW9uIChlbGUsIGRpZmZQcm9wcykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgdmFyIHByb3BzID0gZWxlLnBzdHlsZSgndHJhbnNpdGlvbi1wcm9wZXJ0eScpLnZhbHVlO1xuICB2YXIgZHVyYXRpb24gPSBlbGUucHN0eWxlKCd0cmFuc2l0aW9uLWR1cmF0aW9uJykucGZWYWx1ZTtcbiAgdmFyIGRlbGF5ID0gZWxlLnBzdHlsZSgndHJhbnNpdGlvbi1kZWxheScpLnBmVmFsdWU7XG5cbiAgaWYgKHByb3BzLmxlbmd0aCA+IDAgJiYgZHVyYXRpb24gPiAwKSB7XG4gICAgdmFyIHN0eWxlID0ge307IC8vIGJ1aWxkIHVwIHRoZSBzdHlsZSB0byBhbmltYXRlIHRvd2FyZHNcblxuICAgIHZhciBhbnlQcmV2ID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcHJvcCA9IHByb3BzW2ldO1xuICAgICAgdmFyIHN0eVByb3AgPSBlbGUucHN0eWxlKHByb3ApO1xuICAgICAgdmFyIGRpZmZQcm9wID0gZGlmZlByb3BzW3Byb3BdO1xuXG4gICAgICBpZiAoIWRpZmZQcm9wKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJldlByb3AgPSBkaWZmUHJvcC5wcmV2O1xuICAgICAgdmFyIGZyb21Qcm9wID0gcHJldlByb3A7XG4gICAgICB2YXIgdG9Qcm9wID0gZGlmZlByb3AubmV4dCAhPSBudWxsID8gZGlmZlByb3AubmV4dCA6IHN0eVByb3A7XG4gICAgICB2YXIgZGlmZiA9IGZhbHNlO1xuICAgICAgdmFyIGluaXRWYWwgPSB2b2lkIDA7XG4gICAgICB2YXIgaW5pdER0ID0gMC4wMDAwMDE7IC8vIGRlbHRhIHRpbWUgJSB2YWx1ZSBmb3IgaW5pdFZhbCAoYWxsb3dzIGFuaW1hdGluZyBvdXQgb2YgaW5pdCB6ZXJvIG9wYWNpdHkpXG5cbiAgICAgIGlmICghZnJvbVByb3ApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIGNvbnNpZGVyIHB4IHZhbHVlc1xuXG5cbiAgICAgIGlmIChudW1iZXIoZnJvbVByb3AucGZWYWx1ZSkgJiYgbnVtYmVyKHRvUHJvcC5wZlZhbHVlKSkge1xuICAgICAgICBkaWZmID0gdG9Qcm9wLnBmVmFsdWUgLSBmcm9tUHJvcC5wZlZhbHVlOyAvLyBub256ZXJvIGlzIHRydXRoeVxuXG4gICAgICAgIGluaXRWYWwgPSBmcm9tUHJvcC5wZlZhbHVlICsgaW5pdER0ICogZGlmZjsgLy8gY29uc2lkZXIgbnVtZXJpY2FsIHZhbHVlc1xuICAgICAgfSBlbHNlIGlmIChudW1iZXIoZnJvbVByb3AudmFsdWUpICYmIG51bWJlcih0b1Byb3AudmFsdWUpKSB7XG4gICAgICAgIGRpZmYgPSB0b1Byb3AudmFsdWUgLSBmcm9tUHJvcC52YWx1ZTsgLy8gbm9uemVybyBpcyB0cnV0aHlcblxuICAgICAgICBpbml0VmFsID0gZnJvbVByb3AudmFsdWUgKyBpbml0RHQgKiBkaWZmOyAvLyBjb25zaWRlciBjb2xvdXIgdmFsdWVzXG4gICAgICB9IGVsc2UgaWYgKGFycmF5KGZyb21Qcm9wLnZhbHVlKSAmJiBhcnJheSh0b1Byb3AudmFsdWUpKSB7XG4gICAgICAgIGRpZmYgPSBmcm9tUHJvcC52YWx1ZVswXSAhPT0gdG9Qcm9wLnZhbHVlWzBdIHx8IGZyb21Qcm9wLnZhbHVlWzFdICE9PSB0b1Byb3AudmFsdWVbMV0gfHwgZnJvbVByb3AudmFsdWVbMl0gIT09IHRvUHJvcC52YWx1ZVsyXTtcbiAgICAgICAgaW5pdFZhbCA9IGZyb21Qcm9wLnN0clZhbHVlO1xuICAgICAgfSAvLyB0aGUgcHJldmlvdXMgdmFsdWUgaXMgZ29vZCBmb3IgYW4gYW5pbWF0aW9uIG9ubHkgaWYgaXQncyBkaWZmZXJlbnRcblxuXG4gICAgICBpZiAoZGlmZikge1xuICAgICAgICBzdHlsZVtwcm9wXSA9IHRvUHJvcC5zdHJWYWx1ZTsgLy8gdG8gdmFsXG5cbiAgICAgICAgdGhpcy5hcHBseUJ5cGFzcyhlbGUsIHByb3AsIGluaXRWYWwpOyAvLyBmcm9tIHZhbFxuXG4gICAgICAgIGFueVByZXYgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gLy8gZW5kIGlmIHByb3BzIGFsbG93IGFuaVxuICAgIC8vIGNhbid0IHRyYW5zaXRpb24gaWYgdGhlcmUncyBub3RoaW5nIHByZXZpb3VzIHRvIHRyYW5zaXRpb24gZnJvbVxuXG5cbiAgICBpZiAoIWFueVByZXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBfcC50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICBpZiAoZGVsYXkgPiAwKSB7XG4gICAgICAgIGVsZS5kZWxheUFuaW1hdGlvbihkZWxheSkucGxheSgpLnByb21pc2UoKS50aGVuKHJlc29sdmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGVsZS5hbmltYXRpb24oe1xuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcbiAgICAgICAgZWFzaW5nOiBlbGUucHN0eWxlKCd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicpLnZhbHVlLFxuICAgICAgICBxdWV1ZTogZmFsc2VcbiAgICAgIH0pLnBsYXkoKS5wcm9taXNlKCk7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBpZiggIWlzQnlwYXNzICl7XG4gICAgICBzZWxmLnJlbW92ZUJ5cGFzc2VzKGVsZSwgcHJvcHMpO1xuICAgICAgZWxlLmVtaXRBbmROb3RpZnkoJ3N0eWxlJyk7IC8vIH1cblxuICAgICAgX3AudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKF9wLnRyYW5zaXRpb25pbmcpIHtcbiAgICB0aGlzLnJlbW92ZUJ5cGFzc2VzKGVsZSwgcHJvcHMpO1xuICAgIGVsZS5lbWl0QW5kTm90aWZ5KCdzdHlsZScpO1xuICAgIF9wLnRyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgfVxufTtcblxuc3R5Zm4uY2hlY2tUcmlnZ2VyID0gZnVuY3Rpb24gKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlLCBnZXRUcmlnZ2VyLCBvblRyaWdnZXIpIHtcbiAgdmFyIHByb3AgPSB0aGlzLnByb3BlcnRpZXNbbmFtZV07XG4gIHZhciB0cmlnZ2VyQ2hlY2sgPSBnZXRUcmlnZ2VyKHByb3ApO1xuXG4gIGlmICh0cmlnZ2VyQ2hlY2sgIT0gbnVsbCAmJiB0cmlnZ2VyQ2hlY2soZnJvbVZhbHVlLCB0b1ZhbHVlKSkge1xuICAgIG9uVHJpZ2dlcihwcm9wKTtcbiAgfVxufTtcblxuc3R5Zm4uY2hlY2taT3JkZXJUcmlnZ2VyID0gZnVuY3Rpb24gKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5jaGVja1RyaWdnZXIoZWxlLCBuYW1lLCBmcm9tVmFsdWUsIHRvVmFsdWUsIGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgcmV0dXJuIHByb3AudHJpZ2dlcnNaT3JkZXI7XG4gIH0sIGZ1bmN0aW9uICgpIHtcbiAgICBfdGhpcy5fcHJpdmF0ZS5jeS5ub3RpZnkoJ3pvcmRlcicsIGVsZSk7XG4gIH0pO1xufTtcblxuc3R5Zm4uY2hlY2tCb3VuZHNUcmlnZ2VyID0gZnVuY3Rpb24gKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlKSB7XG4gIHRoaXMuY2hlY2tUcmlnZ2VyKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlLCBmdW5jdGlvbiAocHJvcCkge1xuICAgIHJldHVybiBwcm9wLnRyaWdnZXJzQm91bmRzO1xuICB9LCBmdW5jdGlvbiAocHJvcCkge1xuICAgIGVsZS5kaXJ0eUNvbXBvdW5kQm91bmRzQ2FjaGUoKTtcbiAgICBlbGUuZGlydHlCb3VuZGluZ0JveENhY2hlKCk7IC8vIGlmIHRoZSBwcm9wIGNoYW5nZSBtYWtlcyB0aGUgYmIgb2YgcGxsIGJlemllciBlZGdlcyBpbnZhbGlkLFxuICAgIC8vIHRoZW4gZGlydHkgdGhlIHBsbCBlZGdlIGJiIGNhY2hlIGFzIHdlbGxcblxuICAgIGlmICggLy8gb25seSBmb3IgYmV6aWVycyAtLSBzbyBwZXJmb3JtYW5jZSBvZiBvdGhlciBlZGdlcyBpc24ndCBhZmZlY3RlZFxuICAgIG5hbWUgPT09ICdjdXJ2ZS1zdHlsZScgJiYgKGZyb21WYWx1ZSA9PT0gJ2JlemllcicgfHwgdG9WYWx1ZSA9PT0gJ2JlemllcicpICYmIHByb3AudHJpZ2dlcnNCb3VuZHNPZlBhcmFsbGVsQmV6aWVycykge1xuICAgICAgZWxlLnBhcmFsbGVsRWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChwbGxFZGdlKSB7XG4gICAgICAgIGlmIChwbGxFZGdlLmlzQnVuZGxlZEJlemllcigpKSB7XG4gICAgICAgICAgcGxsRWRnZS5kaXJ0eUJvdW5kaW5nQm94Q2FjaGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn07XG5cbnN0eWZuLmNoZWNrVHJpZ2dlcnMgPSBmdW5jdGlvbiAoZWxlLCBuYW1lLCBmcm9tVmFsdWUsIHRvVmFsdWUpIHtcbiAgZWxlLmRpcnR5U3R5bGVDYWNoZSgpO1xuICB0aGlzLmNoZWNrWk9yZGVyVHJpZ2dlcihlbGUsIG5hbWUsIGZyb21WYWx1ZSwgdG9WYWx1ZSk7XG4gIHRoaXMuY2hlY2tCb3VuZHNUcmlnZ2VyKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlKTtcbn07XG5cbnZhciBzdHlmbiQxID0ge307IC8vIGJ5cGFzc2VzIGFyZSBhcHBsaWVkIHRvIGFuIGV4aXN0aW5nIHN0eWxlIG9uIGFuIGVsZW1lbnQsIGFuZCBqdXN0IHRhY2tlZCBvbiB0ZW1wb3JhcmlseVxuLy8gcmV0dXJucyB0cnVlIGlmZiBhcHBsaWNhdGlvbiB3YXMgc3VjY2Vzc2Z1bCBmb3IgYXQgbGVhc3QgMSBzcGVjaWZpZWQgcHJvcGVydHlcblxuc3R5Zm4kMS5hcHBseUJ5cGFzcyA9IGZ1bmN0aW9uIChlbGVzLCBuYW1lLCB2YWx1ZSwgdXBkYXRlVHJhbnNpdGlvbnMpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgcHJvcHMgPSBbXTtcbiAgdmFyIGlzQnlwYXNzID0gdHJ1ZTsgLy8gcHV0IGFsbCB0aGUgcHJvcGVydGllcyAoY2FuIHNwZWNpZnkgb25lIG9yIG1hbnkpIGluIGFuIGFycmF5IGFmdGVyIHBhcnNpbmcgdGhlbVxuXG4gIGlmIChuYW1lID09PSAnKicgfHwgbmFtZSA9PT0gJyoqJykge1xuICAgIC8vIGFwcGx5IHRvIGFsbCBwcm9wZXJ0eSBuYW1lc1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYucHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcHJvcCA9IHNlbGYucHJvcGVydGllc1tpXTtcbiAgICAgICAgdmFyIF9uYW1lID0gcHJvcC5uYW1lO1xuICAgICAgICB2YXIgcGFyc2VkUHJvcCA9IHRoaXMucGFyc2UoX25hbWUsIHZhbHVlLCB0cnVlKTtcblxuICAgICAgICBpZiAocGFyc2VkUHJvcCkge1xuICAgICAgICAgIHByb3BzLnB1c2gocGFyc2VkUHJvcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoc3RyaW5nKG5hbWUpKSB7XG4gICAgLy8gdGhlbiBwYXJzZSB0aGUgc2luZ2xlIHByb3BlcnR5XG4gICAgdmFyIF9wYXJzZWRQcm9wID0gdGhpcy5wYXJzZShuYW1lLCB2YWx1ZSwgdHJ1ZSk7XG5cbiAgICBpZiAoX3BhcnNlZFByb3ApIHtcbiAgICAgIHByb3BzLnB1c2goX3BhcnNlZFByb3ApO1xuICAgIH1cbiAgfSBlbHNlIGlmIChwbGFpbk9iamVjdChuYW1lKSkge1xuICAgIC8vIHRoZW4gcGFyc2UgZWFjaCBwcm9wZXJ0eVxuICAgIHZhciBzcGVjaWZpZWRQcm9wcyA9IG5hbWU7XG4gICAgdXBkYXRlVHJhbnNpdGlvbnMgPSB2YWx1ZTtcbiAgICB2YXIgbmFtZXMgPSBPYmplY3Qua2V5cyhzcGVjaWZpZWRQcm9wcyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbmFtZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX25hbWUyID0gbmFtZXNbX2ldO1xuICAgICAgdmFyIF92YWx1ZSA9IHNwZWNpZmllZFByb3BzW19uYW1lMl07XG5cbiAgICAgIGlmIChfdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyB0cnkgY2FtZWwgY2FzZSBuYW1lIHRvb1xuICAgICAgICBfdmFsdWUgPSBzcGVjaWZpZWRQcm9wc1tkYXNoMmNhbWVsKF9uYW1lMildO1xuICAgICAgfVxuXG4gICAgICBpZiAoX3ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIF9wYXJzZWRQcm9wMiA9IHRoaXMucGFyc2UoX25hbWUyLCBfdmFsdWUsIHRydWUpO1xuXG4gICAgICAgIGlmIChfcGFyc2VkUHJvcDIpIHtcbiAgICAgICAgICBwcm9wcy5wdXNoKF9wYXJzZWRQcm9wMik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gY2FuJ3QgZG8gYW55dGhpbmcgd2l0aG91dCB3ZWxsIGRlZmluZWQgcHJvcGVydGllc1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyB3ZSd2ZSBmYWlsZWQgaWYgdGhlcmUgYXJlIG5vIHZhbGlkIHByb3BlcnRpZXNcblxuXG4gIGlmIChwcm9wcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gbm93LCBhcHBseSB0aGUgYnlwYXNzIHByb3BlcnRpZXMgb24gdGhlIGVsZW1lbnRzXG5cblxuICB2YXIgcmV0ID0gZmFsc2U7IC8vIHJldHVybiB0cnVlIGlmIGF0IGxlYXN0IG9uZSBzdWNjZXNmdWwgYnlwYXNzIGFwcGxpZWRcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBlbGVzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAvLyBmb3IgZWFjaCBlbGVcbiAgICB2YXIgZWxlID0gZWxlc1tfaTJdO1xuICAgIHZhciBkaWZmUHJvcHMgPSB7fTtcbiAgICB2YXIgZGlmZlByb3AgPSB2b2lkIDA7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BzLmxlbmd0aDsgaisrKSB7XG4gICAgICAvLyBmb3IgZWFjaCBwcm9wXG4gICAgICB2YXIgX3Byb3AgPSBwcm9wc1tqXTtcblxuICAgICAgaWYgKHVwZGF0ZVRyYW5zaXRpb25zKSB7XG4gICAgICAgIHZhciBwcmV2UHJvcCA9IGVsZS5wc3R5bGUoX3Byb3AubmFtZSk7XG4gICAgICAgIGRpZmZQcm9wID0gZGlmZlByb3BzW19wcm9wLm5hbWVdID0ge1xuICAgICAgICAgIHByZXY6IHByZXZQcm9wXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldCA9IHRoaXMuYXBwbHlQYXJzZWRQcm9wZXJ0eShlbGUsIGNvcHkoX3Byb3ApKSB8fCByZXQ7XG5cbiAgICAgIGlmICh1cGRhdGVUcmFuc2l0aW9ucykge1xuICAgICAgICBkaWZmUHJvcC5uZXh0ID0gZWxlLnBzdHlsZShfcHJvcC5uYW1lKTtcbiAgICAgIH1cbiAgICB9IC8vIGZvciBwcm9wc1xuXG5cbiAgICBpZiAocmV0KSB7XG4gICAgICB0aGlzLnVwZGF0ZVN0eWxlSGludHMoZWxlKTtcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlVHJhbnNpdGlvbnMpIHtcbiAgICAgIHRoaXMudXBkYXRlVHJhbnNpdGlvbnMoZWxlLCBkaWZmUHJvcHMsIGlzQnlwYXNzKTtcbiAgICB9XG4gIH0gLy8gZm9yIGVsZXNcblxuXG4gIHJldHVybiByZXQ7XG59OyAvLyBvbmx5IHVzZWZ1bCBpbiBzcGVjaWZpYyBjYXNlcyBsaWtlIGFuaW1hdGlvblxuXG5cbnN0eWZuJDEub3ZlcnJpZGVCeXBhc3MgPSBmdW5jdGlvbiAoZWxlcywgbmFtZSwgdmFsdWUpIHtcbiAgbmFtZSA9IGNhbWVsMmRhc2gobmFtZSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgdmFyIHByb3AgPSBlbGUuX3ByaXZhdGUuc3R5bGVbbmFtZV07XG4gICAgdmFyIHR5cGUgPSB0aGlzLnByb3BlcnRpZXNbbmFtZV0udHlwZTtcbiAgICB2YXIgaXNDb2xvciA9IHR5cGUuY29sb3I7XG4gICAgdmFyIGlzTXVsdGkgPSB0eXBlLm11dGlwbGU7XG4gICAgdmFyIG9sZFZhbHVlID0gIXByb3AgPyBudWxsIDogcHJvcC5wZlZhbHVlICE9IG51bGwgPyBwcm9wLnBmVmFsdWUgOiBwcm9wLnZhbHVlO1xuXG4gICAgaWYgKCFwcm9wIHx8ICFwcm9wLmJ5cGFzcykge1xuICAgICAgLy8gbmVlZCBhIGJ5cGFzcyBpZiBvbmUgZG9lc24ndCBleGlzdFxuICAgICAgdGhpcy5hcHBseUJ5cGFzcyhlbGUsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvcC52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICBpZiAocHJvcC5wZlZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgcHJvcC5wZlZhbHVlID0gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0NvbG9yKSB7XG4gICAgICAgIHByb3Auc3RyVmFsdWUgPSAncmdiKCcgKyB2YWx1ZS5qb2luKCcsJykgKyAnKSc7XG4gICAgICB9IGVsc2UgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgcHJvcC5zdHJWYWx1ZSA9IHZhbHVlLmpvaW4oJyAnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3Auc3RyVmFsdWUgPSAnJyArIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVwZGF0ZVN0eWxlSGludHMoZWxlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrVHJpZ2dlcnMoZWxlLCBuYW1lLCBvbGRWYWx1ZSwgdmFsdWUpO1xuICB9XG59O1xuXG5zdHlmbiQxLnJlbW92ZUFsbEJ5cGFzc2VzID0gZnVuY3Rpb24gKGVsZXMsIHVwZGF0ZVRyYW5zaXRpb25zKSB7XG4gIHJldHVybiB0aGlzLnJlbW92ZUJ5cGFzc2VzKGVsZXMsIHRoaXMucHJvcGVydHlOYW1lcywgdXBkYXRlVHJhbnNpdGlvbnMpO1xufTtcblxuc3R5Zm4kMS5yZW1vdmVCeXBhc3NlcyA9IGZ1bmN0aW9uIChlbGVzLCBwcm9wcywgdXBkYXRlVHJhbnNpdGlvbnMpIHtcbiAgdmFyIGlzQnlwYXNzID0gdHJ1ZTtcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IGVsZXMubGVuZ3RoOyBqKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tqXTtcbiAgICB2YXIgZGlmZlByb3BzID0ge307XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmFtZSA9IHByb3BzW2ldO1xuICAgICAgdmFyIHByb3AgPSB0aGlzLnByb3BlcnRpZXNbbmFtZV07XG4gICAgICB2YXIgcHJldlByb3AgPSBlbGUucHN0eWxlKHByb3AubmFtZSk7XG5cbiAgICAgIGlmICghcHJldlByb3AgfHwgIXByZXZQcm9wLmJ5cGFzcykge1xuICAgICAgICAvLyBpZiBhIGJ5cGFzcyBkb2Vzbid0IGV4aXN0IGZvciB0aGUgcHJvcCwgbm90aGluZyBuZWVkcyB0byBiZSByZW1vdmVkXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgdmFsdWUgPSAnJzsgLy8gZW1wdHkgPT4gcmVtb3ZlIGJ5cGFzc1xuXG4gICAgICB2YXIgcGFyc2VkUHJvcCA9IHRoaXMucGFyc2UobmFtZSwgdmFsdWUsIHRydWUpO1xuICAgICAgdmFyIGRpZmZQcm9wID0gZGlmZlByb3BzW3Byb3AubmFtZV0gPSB7XG4gICAgICAgIHByZXY6IHByZXZQcm9wXG4gICAgICB9O1xuICAgICAgdGhpcy5hcHBseVBhcnNlZFByb3BlcnR5KGVsZSwgcGFyc2VkUHJvcCk7XG4gICAgICBkaWZmUHJvcC5uZXh0ID0gZWxlLnBzdHlsZShwcm9wLm5hbWUpO1xuICAgIH0gLy8gZm9yIHByb3BzXG5cblxuICAgIHRoaXMudXBkYXRlU3R5bGVIaW50cyhlbGUpO1xuXG4gICAgaWYgKHVwZGF0ZVRyYW5zaXRpb25zKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRyYW5zaXRpb25zKGVsZSwgZGlmZlByb3BzLCBpc0J5cGFzcyk7XG4gICAgfVxuICB9IC8vIGZvciBlbGVzXG5cbn07XG5cbnZhciBzdHlmbiQyID0ge307IC8vIGdldHMgd2hhdCBhbiBlbSBzaXplIGNvcnJlc3BvbmRzIHRvIGluIHBpeGVscyByZWxhdGl2ZSB0byBhIGRvbSBlbGVtZW50XG5cbnN0eWZuJDIuZ2V0RW1TaXplSW5QaXhlbHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBweCA9IHRoaXMuY29udGFpbmVyQ3NzKCdmb250LXNpemUnKTtcblxuICBpZiAocHggIT0gbnVsbCkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KHB4KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMTsgLy8gZm9yIGhlYWRsZXNzXG4gIH1cbn07IC8vIGdldHMgY3NzIHByb3BlcnR5IGZyb20gdGhlIGNvcmUgY29udGFpbmVyXG5cblxuc3R5Zm4kMi5jb250YWluZXJDc3MgPSBmdW5jdGlvbiAocHJvcE5hbWUpIHtcbiAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgdmFyIGRvbUVsZW1lbnQgPSBjeS5jb250YWluZXIoKTtcblxuICBpZiAod2luZG93JDEgJiYgZG9tRWxlbWVudCAmJiB3aW5kb3ckMS5nZXRDb21wdXRlZFN0eWxlKSB7XG4gICAgcmV0dXJuIHdpbmRvdyQxLmdldENvbXB1dGVkU3R5bGUoZG9tRWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wTmFtZSk7XG4gIH1cbn07XG5cbnZhciBzdHlmbiQzID0ge307IC8vIGdldHMgdGhlIHJlbmRlcmVkIHN0eWxlIGZvciBhbiBlbGVtZW50XG5cbnN0eWZuJDMuZ2V0UmVuZGVyZWRTdHlsZSA9IGZ1bmN0aW9uIChlbGUsIHByb3ApIHtcbiAgaWYgKHByb3ApIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHlsZVByb3BlcnR5VmFsdWUoZWxlLCBwcm9wLCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSYXdTdHlsZShlbGUsIHRydWUpO1xuICB9XG59OyAvLyBnZXRzIHRoZSByYXcgc3R5bGUgZm9yIGFuIGVsZW1lbnRcblxuXG5zdHlmbiQzLmdldFJhd1N0eWxlID0gZnVuY3Rpb24gKGVsZSwgaXNSZW5kZXJlZFZhbCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGVsZSA9IGVsZVswXTsgLy8gaW5zdXJlIGl0J3MgYW4gZWxlbWVudFxuXG4gIGlmIChlbGUpIHtcbiAgICB2YXIgcnN0eWxlID0ge307XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYucHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHByb3AgPSBzZWxmLnByb3BlcnRpZXNbaV07XG4gICAgICB2YXIgdmFsID0gc2VsZi5nZXRTdHlsZVByb3BlcnR5VmFsdWUoZWxlLCBwcm9wLm5hbWUsIGlzUmVuZGVyZWRWYWwpO1xuXG4gICAgICBpZiAodmFsICE9IG51bGwpIHtcbiAgICAgICAgcnN0eWxlW3Byb3AubmFtZV0gPSB2YWw7XG4gICAgICAgIHJzdHlsZVtkYXNoMmNhbWVsKHByb3AubmFtZSldID0gdmFsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByc3R5bGU7XG4gIH1cbn07XG5cbnN0eWZuJDMuZ2V0SW5kZXhlZFN0eWxlID0gZnVuY3Rpb24gKGVsZSwgcHJvcGVydHksIHN1YnByb3BlcnR5LCBpbmRleCkge1xuICB2YXIgcHN0eWxlID0gZWxlLnBzdHlsZShwcm9wZXJ0eSlbc3VicHJvcGVydHldW2luZGV4XTtcbiAgcmV0dXJuIHBzdHlsZSAhPSBudWxsID8gcHN0eWxlIDogZWxlLmN5KCkuc3R5bGUoKS5nZXREZWZhdWx0UHJvcGVydHkocHJvcGVydHkpW3N1YnByb3BlcnR5XVswXTtcbn07XG5cbnN0eWZuJDMuZ2V0U3R5bGVQcm9wZXJ0eVZhbHVlID0gZnVuY3Rpb24gKGVsZSwgcHJvcE5hbWUsIGlzUmVuZGVyZWRWYWwpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBlbGUgPSBlbGVbMF07IC8vIGluc3VyZSBpdCdzIGFuIGVsZW1lbnRcblxuICBpZiAoZWxlKSB7XG4gICAgdmFyIHByb3AgPSBzZWxmLnByb3BlcnRpZXNbcHJvcE5hbWVdO1xuXG4gICAgaWYgKHByb3AuYWxpYXMpIHtcbiAgICAgIHByb3AgPSBwcm9wLnBvaW50c1RvO1xuICAgIH1cblxuICAgIHZhciB0eXBlID0gcHJvcC50eXBlO1xuICAgIHZhciBzdHlsZVByb3AgPSBlbGUucHN0eWxlKHByb3AubmFtZSk7XG5cbiAgICBpZiAoc3R5bGVQcm9wKSB7XG4gICAgICB2YXIgdmFsdWUgPSBzdHlsZVByb3AudmFsdWUsXG4gICAgICAgICAgdW5pdHMgPSBzdHlsZVByb3AudW5pdHMsXG4gICAgICAgICAgc3RyVmFsdWUgPSBzdHlsZVByb3Auc3RyVmFsdWU7XG5cbiAgICAgIGlmIChpc1JlbmRlcmVkVmFsICYmIHR5cGUubnVtYmVyICYmIHZhbHVlICE9IG51bGwgJiYgbnVtYmVyKHZhbHVlKSkge1xuICAgICAgICB2YXIgem9vbSA9IGVsZS5jeSgpLnpvb20oKTtcblxuICAgICAgICB2YXIgZ2V0UmVuZGVyZWRWYWx1ZSA9IGZ1bmN0aW9uIGdldFJlbmRlcmVkVmFsdWUodmFsKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbCAqIHpvb207XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGdldFZhbHVlU3RyaW5nV2l0aFVuaXRzID0gZnVuY3Rpb24gZ2V0VmFsdWVTdHJpbmdXaXRoVW5pdHModmFsLCB1bml0cykge1xuICAgICAgICAgIHJldHVybiBnZXRSZW5kZXJlZFZhbHVlKHZhbCkgKyB1bml0cztcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgaXNBcnJheVZhbHVlID0gYXJyYXkodmFsdWUpO1xuICAgICAgICB2YXIgaGF2ZVVuaXRzID0gaXNBcnJheVZhbHVlID8gdW5pdHMuZXZlcnkoZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgICByZXR1cm4gdSAhPSBudWxsO1xuICAgICAgICB9KSA6IHVuaXRzICE9IG51bGw7XG5cbiAgICAgICAgaWYgKGhhdmVVbml0cykge1xuICAgICAgICAgIGlmIChpc0FycmF5VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVlU3RyaW5nV2l0aFVuaXRzKHYsIHVuaXRzW2ldKTtcbiAgICAgICAgICAgIH0pLmpvaW4oJyAnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVlU3RyaW5nV2l0aFVuaXRzKHZhbHVlLCB1bml0cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0FycmF5VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZyh2KSA/IHYgOiAnJyArIGdldFJlbmRlcmVkVmFsdWUodik7XG4gICAgICAgICAgICB9KS5qb2luKCcgJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnJyArIGdldFJlbmRlcmVkVmFsdWUodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdHJWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBzdHJWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuc3R5Zm4kMy5nZXRBbmltYXRpb25TdGFydFN0eWxlID0gZnVuY3Rpb24gKGVsZSwgYW5pUHJvcHMpIHtcbiAgdmFyIHJzdHlsZSA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYW5pUHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYW5pUHJvcCA9IGFuaVByb3BzW2ldO1xuICAgIHZhciBuYW1lID0gYW5pUHJvcC5uYW1lO1xuICAgIHZhciBzdHlsZVByb3AgPSBlbGUucHN0eWxlKG5hbWUpO1xuXG4gICAgaWYgKHN0eWxlUHJvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyB0aGVuIG1ha2UgYSBwcm9wIG9mIGl0XG4gICAgICBpZiAocGxhaW5PYmplY3Qoc3R5bGVQcm9wKSkge1xuICAgICAgICBzdHlsZVByb3AgPSB0aGlzLnBhcnNlKG5hbWUsIHN0eWxlUHJvcC5zdHJWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHlsZVByb3AgPSB0aGlzLnBhcnNlKG5hbWUsIHN0eWxlUHJvcCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0eWxlUHJvcCkge1xuICAgICAgcnN0eWxlW25hbWVdID0gc3R5bGVQcm9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByc3R5bGU7XG59O1xuXG5zdHlmbiQzLmdldFByb3BzTGlzdCA9IGZ1bmN0aW9uIChwcm9wc09iaikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciByc3R5bGUgPSBbXTtcbiAgdmFyIHN0eWxlID0gcHJvcHNPYmo7XG4gIHZhciBwcm9wcyA9IHNlbGYucHJvcGVydGllcztcblxuICBpZiAoc3R5bGUpIHtcbiAgICB2YXIgbmFtZXMgPSBPYmplY3Qua2V5cyhzdHlsZSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgdmFyIHZhbCA9IHN0eWxlW25hbWVdO1xuICAgICAgdmFyIHByb3AgPSBwcm9wc1tuYW1lXSB8fCBwcm9wc1tjYW1lbDJkYXNoKG5hbWUpXTtcbiAgICAgIHZhciBzdHlsZVByb3AgPSB0aGlzLnBhcnNlKHByb3AubmFtZSwgdmFsKTtcblxuICAgICAgaWYgKHN0eWxlUHJvcCkge1xuICAgICAgICByc3R5bGUucHVzaChzdHlsZVByb3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByc3R5bGU7XG59O1xuXG5zdHlmbiQzLmdldE5vbkRlZmF1bHRQcm9wZXJ0aWVzSGFzaCA9IGZ1bmN0aW9uIChlbGUsIHByb3BOYW1lcywgc2VlZCkge1xuICB2YXIgaGFzaCA9IHNlZWQuc2xpY2UoKTtcbiAgdmFyIG5hbWUsIHZhbCwgc3RyVmFsLCBjaFZhbDtcbiAgdmFyIGksIGo7XG5cbiAgZm9yIChpID0gMDsgaSA8IHByb3BOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIG5hbWUgPSBwcm9wTmFtZXNbaV07XG4gICAgdmFsID0gZWxlLnBzdHlsZShuYW1lLCBmYWxzZSk7XG5cbiAgICBpZiAodmFsID09IG51bGwpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gZWxzZSBpZiAodmFsLnBmVmFsdWUgIT0gbnVsbCkge1xuICAgICAgaGFzaFswXSA9IGhhc2hJbnQoY2hWYWwsIGhhc2hbMF0pO1xuICAgICAgaGFzaFsxXSA9IGhhc2hJbnRBbHQoY2hWYWwsIGhhc2hbMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJWYWwgPSB2YWwuc3RyVmFsdWU7XG5cbiAgICAgIGZvciAoaiA9IDA7IGogPCBzdHJWYWwubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY2hWYWwgPSBzdHJWYWwuY2hhckNvZGVBdChqKTtcbiAgICAgICAgaGFzaFswXSA9IGhhc2hJbnQoY2hWYWwsIGhhc2hbMF0pO1xuICAgICAgICBoYXNoWzFdID0gaGFzaEludEFsdChjaFZhbCwgaGFzaFsxXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhc2g7XG59O1xuXG5zdHlmbiQzLmdldFByb3BlcnRpZXNIYXNoID0gc3R5Zm4kMy5nZXROb25EZWZhdWx0UHJvcGVydGllc0hhc2g7XG5cbnZhciBzdHlmbiQ0ID0ge307XG5cbnN0eWZuJDQuYXBwZW5kRnJvbUpzb24gPSBmdW5jdGlvbiAoanNvbikge1xuICB2YXIgc3R5bGUgPSB0aGlzO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwganNvbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjb250ZXh0ID0ganNvbltpXTtcbiAgICB2YXIgc2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yO1xuICAgIHZhciBwcm9wcyA9IGNvbnRleHQuc3R5bGUgfHwgY29udGV4dC5jc3M7XG4gICAgdmFyIG5hbWVzID0gT2JqZWN0LmtleXMocHJvcHMpO1xuICAgIHN0eWxlLnNlbGVjdG9yKHNlbGVjdG9yKTsgLy8gYXBwbHkgc2VsZWN0b3JcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmFtZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBuYW1lID0gbmFtZXNbal07XG4gICAgICB2YXIgdmFsdWUgPSBwcm9wc1tuYW1lXTtcbiAgICAgIHN0eWxlLmNzcyhuYW1lLCB2YWx1ZSk7IC8vIGFwcGx5IHByb3BlcnR5XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufTsgLy8gYWNjZXNzaWJsZSBjeS5zdHlsZSgpIGZ1bmN0aW9uXG5cblxuc3R5Zm4kNC5mcm9tSnNvbiA9IGZ1bmN0aW9uIChqc29uKSB7XG4gIHZhciBzdHlsZSA9IHRoaXM7XG4gIHN0eWxlLnJlc2V0VG9EZWZhdWx0KCk7XG4gIHN0eWxlLmFwcGVuZEZyb21Kc29uKGpzb24pO1xuICByZXR1cm4gc3R5bGU7XG59OyAvLyBnZXQganNvbiBmcm9tIGN5LnN0eWxlKCkgYXBpXG5cblxuc3R5Zm4kNC5qc29uID0gZnVuY3Rpb24gKCkge1xuICB2YXIganNvbiA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSB0aGlzLmRlZmF1bHRMZW5ndGg7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGN4dCA9IHRoaXNbaV07XG4gICAgdmFyIHNlbGVjdG9yID0gY3h0LnNlbGVjdG9yO1xuICAgIHZhciBwcm9wcyA9IGN4dC5wcm9wZXJ0aWVzO1xuICAgIHZhciBjc3MgPSB7fTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcHJvcHMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBwcm9wID0gcHJvcHNbal07XG4gICAgICBjc3NbcHJvcC5uYW1lXSA9IHByb3Auc3RyVmFsdWU7XG4gICAgfVxuXG4gICAganNvbi5wdXNoKHtcbiAgICAgIHNlbGVjdG9yOiAhc2VsZWN0b3IgPyAnY29yZScgOiBzZWxlY3Rvci50b1N0cmluZygpLFxuICAgICAgc3R5bGU6IGNzc1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGpzb247XG59O1xuXG52YXIgc3R5Zm4kNSA9IHt9O1xuXG5zdHlmbiQ1LmFwcGVuZEZyb21TdHJpbmcgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHN0eWxlID0gdGhpcztcbiAgdmFyIHJlbWFpbmluZyA9ICcnICsgc3RyaW5nO1xuICB2YXIgc2VsQW5kQmxvY2tTdHI7XG4gIHZhciBibG9ja1JlbTtcbiAgdmFyIHByb3BBbmRWYWxTdHI7IC8vIHJlbW92ZSBjb21tZW50cyBmcm9tIHRoZSBzdHlsZSBzdHJpbmdcblxuICByZW1haW5pbmcgPSByZW1haW5pbmcucmVwbGFjZSgvWy9dWypdKFxcc3wuKSs/WypdWy9dL2csICcnKTtcblxuICBmdW5jdGlvbiByZW1vdmVTZWxBbmRCbG9ja0Zyb21SZW1haW5pbmcoKSB7XG4gICAgLy8gcmVtb3ZlIHRoZSBwYXJzZWQgc2VsZWN0b3IgYW5kIGJsb2NrIGZyb20gdGhlIHJlbWFpbmluZyB0ZXh0IHRvIHBhcnNlXG4gICAgaWYgKHJlbWFpbmluZy5sZW5ndGggPiBzZWxBbmRCbG9ja1N0ci5sZW5ndGgpIHtcbiAgICAgIHJlbWFpbmluZyA9IHJlbWFpbmluZy5zdWJzdHIoc2VsQW5kQmxvY2tTdHIubGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtYWluaW5nID0gJyc7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlUHJvcEFuZFZhbEZyb21SZW0oKSB7XG4gICAgLy8gcmVtb3ZlIHRoZSBwYXJzZWQgcHJvcGVydHkgYW5kIHZhbHVlIGZyb20gdGhlIHJlbWFpbmluZyBibG9jayB0ZXh0IHRvIHBhcnNlXG4gICAgaWYgKGJsb2NrUmVtLmxlbmd0aCA+IHByb3BBbmRWYWxTdHIubGVuZ3RoKSB7XG4gICAgICBibG9ja1JlbSA9IGJsb2NrUmVtLnN1YnN0cihwcm9wQW5kVmFsU3RyLmxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJsb2NrUmVtID0gJyc7XG4gICAgfVxuICB9XG5cbiAgZm9yICg7Oykge1xuICAgIHZhciBub3RoaW5nTGVmdFRvUGFyc2UgPSByZW1haW5pbmcubWF0Y2goL15cXHMqJC8pO1xuXG4gICAgaWYgKG5vdGhpbmdMZWZ0VG9QYXJzZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdmFyIHNlbEFuZEJsb2NrID0gcmVtYWluaW5nLm1hdGNoKC9eXFxzKigoPzoufFxccykrPylcXHMqXFx7KCg/Oi58XFxzKSs/KVxcfS8pO1xuXG4gICAgaWYgKCFzZWxBbmRCbG9jaykge1xuICAgICAgd2FybignSGFsdGluZyBzdHlsZXNoZWV0IHBhcnNpbmc6IFN0cmluZyBzdHlsZXNoZWV0IGNvbnRhaW5zIG1vcmUgdG8gcGFyc2UgYnV0IG5vIHNlbGVjdG9yIGFuZCBibG9jayBmb3VuZCBpbjogJyArIHJlbWFpbmluZyk7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzZWxBbmRCbG9ja1N0ciA9IHNlbEFuZEJsb2NrWzBdOyAvLyBwYXJzZSB0aGUgc2VsZWN0b3JcblxuICAgIHZhciBzZWxlY3RvclN0ciA9IHNlbEFuZEJsb2NrWzFdO1xuXG4gICAgaWYgKHNlbGVjdG9yU3RyICE9PSAnY29yZScpIHtcbiAgICAgIHZhciBzZWxlY3RvciA9IG5ldyBTZWxlY3RvcihzZWxlY3RvclN0cik7XG5cbiAgICAgIGlmIChzZWxlY3Rvci5pbnZhbGlkKSB7XG4gICAgICAgIHdhcm4oJ1NraXBwaW5nIHBhcnNpbmcgb2YgYmxvY2s6IEludmFsaWQgc2VsZWN0b3IgZm91bmQgaW4gc3RyaW5nIHN0eWxlc2hlZXQ6ICcgKyBzZWxlY3RvclN0cik7IC8vIHNraXAgdGhpcyBzZWxlY3RvciBhbmQgYmxvY2tcblxuICAgICAgICByZW1vdmVTZWxBbmRCbG9ja0Zyb21SZW1haW5pbmcoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfSAvLyBwYXJzZSB0aGUgYmxvY2sgb2YgcHJvcGVydGllcyBhbmQgdmFsdWVzXG5cblxuICAgIHZhciBibG9ja1N0ciA9IHNlbEFuZEJsb2NrWzJdO1xuICAgIHZhciBpbnZhbGlkQmxvY2sgPSBmYWxzZTtcbiAgICBibG9ja1JlbSA9IGJsb2NrU3RyO1xuICAgIHZhciBwcm9wcyA9IFtdO1xuXG4gICAgZm9yICg7Oykge1xuICAgICAgdmFyIF9ub3RoaW5nTGVmdFRvUGFyc2UgPSBibG9ja1JlbS5tYXRjaCgvXlxccyokLyk7XG5cbiAgICAgIGlmIChfbm90aGluZ0xlZnRUb1BhcnNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcEFuZFZhbCA9IGJsb2NrUmVtLm1hdGNoKC9eXFxzKiguKz8pXFxzKjpcXHMqKC4rPylcXHMqOy8pO1xuXG4gICAgICBpZiAoIXByb3BBbmRWYWwpIHtcbiAgICAgICAgd2FybignU2tpcHBpbmcgcGFyc2luZyBvZiBibG9jazogSW52YWxpZCBmb3JtYXR0aW5nIG9mIHN0eWxlIHByb3BlcnR5IGFuZCB2YWx1ZSBkZWZpbml0aW9ucyBmb3VuZCBpbjonICsgYmxvY2tTdHIpO1xuICAgICAgICBpbnZhbGlkQmxvY2sgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcHJvcEFuZFZhbFN0ciA9IHByb3BBbmRWYWxbMF07XG4gICAgICB2YXIgcHJvcFN0ciA9IHByb3BBbmRWYWxbMV07XG4gICAgICB2YXIgdmFsU3RyID0gcHJvcEFuZFZhbFsyXTtcbiAgICAgIHZhciBwcm9wID0gc2VsZi5wcm9wZXJ0aWVzW3Byb3BTdHJdO1xuXG4gICAgICBpZiAoIXByb3ApIHtcbiAgICAgICAgd2FybignU2tpcHBpbmcgcHJvcGVydHk6IEludmFsaWQgcHJvcGVydHkgbmFtZSBpbjogJyArIHByb3BBbmRWYWxTdHIpOyAvLyBza2lwIHRoaXMgcHJvcGVydHkgaW4gdGhlIGJsb2NrXG5cbiAgICAgICAgcmVtb3ZlUHJvcEFuZFZhbEZyb21SZW0oKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXJzZWRQcm9wID0gc3R5bGUucGFyc2UocHJvcFN0ciwgdmFsU3RyKTtcblxuICAgICAgaWYgKCFwYXJzZWRQcm9wKSB7XG4gICAgICAgIHdhcm4oJ1NraXBwaW5nIHByb3BlcnR5OiBJbnZhbGlkIHByb3BlcnR5IGRlZmluaXRpb24gaW46ICcgKyBwcm9wQW5kVmFsU3RyKTsgLy8gc2tpcCB0aGlzIHByb3BlcnR5IGluIHRoZSBibG9ja1xuXG4gICAgICAgIHJlbW92ZVByb3BBbmRWYWxGcm9tUmVtKCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwcm9wcy5wdXNoKHtcbiAgICAgICAgbmFtZTogcHJvcFN0cixcbiAgICAgICAgdmFsOiB2YWxTdHJcbiAgICAgIH0pO1xuICAgICAgcmVtb3ZlUHJvcEFuZFZhbEZyb21SZW0oKTtcbiAgICB9XG5cbiAgICBpZiAoaW52YWxpZEJsb2NrKSB7XG4gICAgICByZW1vdmVTZWxBbmRCbG9ja0Zyb21SZW1haW5pbmcoKTtcbiAgICAgIGJyZWFrO1xuICAgIH0gLy8gcHV0IHRoZSBwYXJzZWQgYmxvY2sgaW4gdGhlIHN0eWxlXG5cblxuICAgIHN0eWxlLnNlbGVjdG9yKHNlbGVjdG9yU3RyKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBfcHJvcCA9IHByb3BzW2ldO1xuICAgICAgc3R5bGUuY3NzKF9wcm9wLm5hbWUsIF9wcm9wLnZhbCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlU2VsQW5kQmxvY2tGcm9tUmVtYWluaW5nKCk7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59O1xuXG5zdHlmbiQ1LmZyb21TdHJpbmcgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBzdHlsZSA9IHRoaXM7XG4gIHN0eWxlLnJlc2V0VG9EZWZhdWx0KCk7XG4gIHN0eWxlLmFwcGVuZEZyb21TdHJpbmcoc3RyaW5nKTtcbiAgcmV0dXJuIHN0eWxlO1xufTtcblxudmFyIHN0eWZuJDYgPSB7fTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIG51bWJlciA9IG51bWJlciQxO1xuICB2YXIgcmdiYSA9IHJnYmFOb0JhY2tSZWZzO1xuICB2YXIgaHNsYSA9IGhzbGFOb0JhY2tSZWZzO1xuICB2YXIgaGV4MyQxID0gaGV4MztcbiAgdmFyIGhleDYkMSA9IGhleDY7XG5cbiAgdmFyIGRhdGEgPSBmdW5jdGlvbiBkYXRhKHByZWZpeCkge1xuICAgIHJldHVybiAnXicgKyBwcmVmaXggKyAnXFxcXHMqXFxcXChcXFxccyooW1xcXFx3XFxcXC5dKylcXFxccypcXFxcKSQnO1xuICB9O1xuXG4gIHZhciBtYXBEYXRhID0gZnVuY3Rpb24gbWFwRGF0YShwcmVmaXgpIHtcbiAgICB2YXIgbWFwQXJnID0gbnVtYmVyICsgJ3xcXFxcdyt8JyArIHJnYmEgKyAnfCcgKyBoc2xhICsgJ3wnICsgaGV4MyQxICsgJ3wnICsgaGV4NiQxO1xuICAgIHJldHVybiAnXicgKyBwcmVmaXggKyAnXFxcXHMqXFxcXCgoW1xcXFx3XFxcXC5dKylcXFxccypcXFxcLFxcXFxzKignICsgbnVtYmVyICsgJylcXFxccypcXFxcLFxcXFxzKignICsgbnVtYmVyICsgJylcXFxccyosXFxcXHMqKCcgKyBtYXBBcmcgKyAnKVxcXFxzKlxcXFwsXFxcXHMqKCcgKyBtYXBBcmcgKyAnKVxcXFwpJCc7XG4gIH07XG5cbiAgdmFyIHVybFJlZ2V4ZXMgPSBbJ151cmxcXFxccypcXFxcKFxcXFxzKltcXCdcIl0/KC4rPylbXFwnXCJdP1xcXFxzKlxcXFwpJCcsICdeKG5vbmUpJCcsICdeKC4rKSQnXTsgLy8gZWFjaCB2aXN1YWwgc3R5bGUgcHJvcGVydHkgaGFzIGEgdHlwZSBhbmQgbmVlZHMgdG8gYmUgdmFsaWRhdGVkIGFjY29yZGluZyB0byBpdFxuXG4gIHN0eWZuJDYudHlwZXMgPSB7XG4gICAgdGltZToge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgbWluOiAwLFxuICAgICAgdW5pdHM6ICdzfG1zJyxcbiAgICAgIGltcGxpY2l0VW5pdHM6ICdtcydcbiAgICB9LFxuICAgIHBlcmNlbnQ6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogMTAwLFxuICAgICAgdW5pdHM6ICclJyxcbiAgICAgIGltcGxpY2l0VW5pdHM6ICclJ1xuICAgIH0sXG4gICAgcGVyY2VudGFnZXM6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogMTAwLFxuICAgICAgdW5pdHM6ICclJyxcbiAgICAgIGltcGxpY2l0VW5pdHM6ICclJyxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICB6ZXJvT25lTnVtYmVyOiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICBtaW46IDAsXG4gICAgICBtYXg6IDEsXG4gICAgICB1bml0bGVzczogdHJ1ZVxuICAgIH0sXG4gICAgemVyb09uZU51bWJlcnM6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogMSxcbiAgICAgIHVuaXRsZXNzOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIG5PbmVPbmVOdW1iZXI6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogLTEsXG4gICAgICBtYXg6IDEsXG4gICAgICB1bml0bGVzczogdHJ1ZVxuICAgIH0sXG4gICAgbm9uTmVnYXRpdmVJbnQ6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIGludGVnZXI6IHRydWUsXG4gICAgICB1bml0bGVzczogdHJ1ZVxuICAgIH0sXG4gICAgcG9zaXRpb246IHtcbiAgICAgIGVudW1zOiBbJ3BhcmVudCcsICdvcmlnaW4nXVxuICAgIH0sXG4gICAgbm9kZVNpemU6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIGVudW1zOiBbJ2xhYmVsJ11cbiAgICB9LFxuICAgIG51bWJlcjoge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgdW5pdGxlc3M6IHRydWVcbiAgICB9LFxuICAgIG51bWJlcnM6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIHVuaXRsZXNzOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIHBvc2l0aXZlTnVtYmVyOiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICB1bml0bGVzczogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIHN0cmljdE1pbjogdHJ1ZVxuICAgIH0sXG4gICAgc2l6ZToge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgbWluOiAwXG4gICAgfSxcbiAgICBiaWRpcmVjdGlvbmFsU2l6ZToge1xuICAgICAgbnVtYmVyOiB0cnVlXG4gICAgfSxcbiAgICAvLyBhbGxvd3MgbmVnYXRpdmVcbiAgICBiaWRpcmVjdGlvbmFsU2l6ZU1heWJlUGVyY2VudDoge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgYWxsb3dQZXJjZW50OiB0cnVlXG4gICAgfSxcbiAgICAvLyBhbGxvd3MgbmVnYXRpdmVcbiAgICBiaWRpcmVjdGlvbmFsU2l6ZXM6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICAvLyBhbGxvd3MgbmVnYXRpdmVcbiAgICBzaXplTWF5YmVQZXJjZW50OiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICBtaW46IDAsXG4gICAgICBhbGxvd1BlcmNlbnQ6IHRydWVcbiAgICB9LFxuICAgIGF4aXNEaXJlY3Rpb246IHtcbiAgICAgIGVudW1zOiBbJ2hvcml6b250YWwnLCAnbGVmdHdhcmQnLCAncmlnaHR3YXJkJywgJ3ZlcnRpY2FsJywgJ3Vwd2FyZCcsICdkb3dud2FyZCcsICdhdXRvJ11cbiAgICB9LFxuICAgIHBhZGRpbmdSZWxhdGl2ZVRvOiB7XG4gICAgICBlbnVtczogWyd3aWR0aCcsICdoZWlnaHQnLCAnYXZlcmFnZScsICdtaW4nLCAnbWF4J11cbiAgICB9LFxuICAgIGJnV0g6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIGFsbG93UGVyY2VudDogdHJ1ZSxcbiAgICAgIGVudW1zOiBbJ2F1dG8nXSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICBiZ1Bvczoge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgYWxsb3dQZXJjZW50OiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIGJnUmVsYXRpdmVUbzoge1xuICAgICAgZW51bXM6IFsnaW5uZXInLCAnaW5jbHVkZS1wYWRkaW5nJ10sXG4gICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgIH0sXG4gICAgYmdSZXBlYXQ6IHtcbiAgICAgIGVudW1zOiBbJ3JlcGVhdCcsICdyZXBlYXQteCcsICdyZXBlYXQteScsICduby1yZXBlYXQnXSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICBiZ0ZpdDoge1xuICAgICAgZW51bXM6IFsnbm9uZScsICdjb250YWluJywgJ2NvdmVyJ10sXG4gICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgIH0sXG4gICAgYmdDcm9zc09yaWdpbjoge1xuICAgICAgZW51bXM6IFsnYW5vbnltb3VzJywgJ3VzZS1jcmVkZW50aWFscyddLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIGJnQ2xpcDoge1xuICAgICAgZW51bXM6IFsnbm9uZScsICdub2RlJ10sXG4gICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgIH0sXG4gICAgYmdDb250YWlubWVudDoge1xuICAgICAgZW51bXM6IFsnaW5zaWRlJywgJ292ZXInXSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgY29sb3I6IHRydWVcbiAgICB9LFxuICAgIGNvbG9yczoge1xuICAgICAgY29sb3I6IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgIH0sXG4gICAgZmlsbDoge1xuICAgICAgZW51bXM6IFsnc29saWQnLCAnbGluZWFyLWdyYWRpZW50JywgJ3JhZGlhbC1ncmFkaWVudCddXG4gICAgfSxcbiAgICBib29sOiB7XG4gICAgICBlbnVtczogWyd5ZXMnLCAnbm8nXVxuICAgIH0sXG4gICAgYm9vbHM6IHtcbiAgICAgIGVudW1zOiBbJ3llcycsICdubyddLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIGxpbmVTdHlsZToge1xuICAgICAgZW51bXM6IFsnc29saWQnLCAnZG90dGVkJywgJ2Rhc2hlZCddXG4gICAgfSxcbiAgICBsaW5lQ2FwOiB7XG4gICAgICBlbnVtczogWydidXR0JywgJ3JvdW5kJywgJ3NxdWFyZSddXG4gICAgfSxcbiAgICBib3JkZXJTdHlsZToge1xuICAgICAgZW51bXM6IFsnc29saWQnLCAnZG90dGVkJywgJ2Rhc2hlZCcsICdkb3VibGUnXVxuICAgIH0sXG4gICAgY3VydmVTdHlsZToge1xuICAgICAgZW51bXM6IFsnYmV6aWVyJywgJ3VuYnVuZGxlZC1iZXppZXInLCAnaGF5c3RhY2snLCAnc2VnbWVudHMnLCAnc3RyYWlnaHQnLCAnc3RyYWlnaHQtdHJpYW5nbGUnLCAndGF4aSddXG4gICAgfSxcbiAgICBmb250RmFtaWx5OiB7XG4gICAgICByZWdleDogJ14oW1xcXFx3LSBcXFxcXCJdKyg/OlxcXFxzKixcXFxccypbXFxcXHctIFxcXFxcIl0rKSopJCdcbiAgICB9LFxuICAgIGZvbnRTdHlsZToge1xuICAgICAgZW51bXM6IFsnaXRhbGljJywgJ25vcm1hbCcsICdvYmxpcXVlJ11cbiAgICB9LFxuICAgIGZvbnRXZWlnaHQ6IHtcbiAgICAgIGVudW1zOiBbJ25vcm1hbCcsICdib2xkJywgJ2JvbGRlcicsICdsaWdodGVyJywgJzEwMCcsICcyMDAnLCAnMzAwJywgJzQwMCcsICc1MDAnLCAnNjAwJywgJzgwMCcsICc5MDAnLCAxMDAsIDIwMCwgMzAwLCA0MDAsIDUwMCwgNjAwLCA3MDAsIDgwMCwgOTAwXVxuICAgIH0sXG4gICAgdGV4dERlY29yYXRpb246IHtcbiAgICAgIGVudW1zOiBbJ25vbmUnLCAndW5kZXJsaW5lJywgJ292ZXJsaW5lJywgJ2xpbmUtdGhyb3VnaCddXG4gICAgfSxcbiAgICB0ZXh0VHJhbnNmb3JtOiB7XG4gICAgICBlbnVtczogWydub25lJywgJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnXVxuICAgIH0sXG4gICAgdGV4dFdyYXA6IHtcbiAgICAgIGVudW1zOiBbJ25vbmUnLCAnd3JhcCcsICdlbGxpcHNpcyddXG4gICAgfSxcbiAgICB0ZXh0T3ZlcmZsb3dXcmFwOiB7XG4gICAgICBlbnVtczogWyd3aGl0ZXNwYWNlJywgJ2FueXdoZXJlJ11cbiAgICB9LFxuICAgIHRleHRCYWNrZ3JvdW5kU2hhcGU6IHtcbiAgICAgIGVudW1zOiBbJ3JlY3RhbmdsZScsICdyb3VuZHJlY3RhbmdsZScsICdyb3VuZC1yZWN0YW5nbGUnXVxuICAgIH0sXG4gICAgbm9kZVNoYXBlOiB7XG4gICAgICBlbnVtczogWydyZWN0YW5nbGUnLCAncm91bmRyZWN0YW5nbGUnLCAncm91bmQtcmVjdGFuZ2xlJywgJ2N1dHJlY3RhbmdsZScsICdjdXQtcmVjdGFuZ2xlJywgJ2JvdHRvbXJvdW5kcmVjdGFuZ2xlJywgJ2JvdHRvbS1yb3VuZC1yZWN0YW5nbGUnLCAnYmFycmVsJywgJ2VsbGlwc2UnLCAndHJpYW5nbGUnLCAncm91bmQtdHJpYW5nbGUnLCAnc3F1YXJlJywgJ3BlbnRhZ29uJywgJ3JvdW5kLXBlbnRhZ29uJywgJ2hleGFnb24nLCAncm91bmQtaGV4YWdvbicsICdjb25jYXZlaGV4YWdvbicsICdjb25jYXZlLWhleGFnb24nLCAnaGVwdGFnb24nLCAncm91bmQtaGVwdGFnb24nLCAnb2N0YWdvbicsICdyb3VuZC1vY3RhZ29uJywgJ3RhZycsICdyb3VuZC10YWcnLCAnc3RhcicsICdkaWFtb25kJywgJ3JvdW5kLWRpYW1vbmQnLCAndmVlJywgJ3Job21ib2lkJywgJ3BvbHlnb24nXVxuICAgIH0sXG4gICAgb3ZlcmxheVNoYXBlOiB7XG4gICAgICBlbnVtczogWydyb3VuZHJlY3RhbmdsZScsICdyb3VuZC1yZWN0YW5nbGUnLCAnZWxsaXBzZSddXG4gICAgfSxcbiAgICBjb21wb3VuZEluY2x1ZGVMYWJlbHM6IHtcbiAgICAgIGVudW1zOiBbJ2luY2x1ZGUnLCAnZXhjbHVkZSddXG4gICAgfSxcbiAgICBhcnJvd1NoYXBlOiB7XG4gICAgICBlbnVtczogWyd0ZWUnLCAndHJpYW5nbGUnLCAndHJpYW5nbGUtdGVlJywgJ2NpcmNsZS10cmlhbmdsZScsICd0cmlhbmdsZS1jcm9zcycsICd0cmlhbmdsZS1iYWNrY3VydmUnLCAndmVlJywgJ3NxdWFyZScsICdjaXJjbGUnLCAnZGlhbW9uZCcsICdjaGV2cm9uJywgJ25vbmUnXVxuICAgIH0sXG4gICAgYXJyb3dGaWxsOiB7XG4gICAgICBlbnVtczogWydmaWxsZWQnLCAnaG9sbG93J11cbiAgICB9LFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIGVudW1zOiBbJ2VsZW1lbnQnLCAnbm9uZSddXG4gICAgfSxcbiAgICB2aXNpYmlsaXR5OiB7XG4gICAgICBlbnVtczogWydoaWRkZW4nLCAndmlzaWJsZSddXG4gICAgfSxcbiAgICB6Q29tcG91bmREZXB0aDoge1xuICAgICAgZW51bXM6IFsnYm90dG9tJywgJ29ycGhhbicsICdhdXRvJywgJ3RvcCddXG4gICAgfSxcbiAgICB6SW5kZXhDb21wYXJlOiB7XG4gICAgICBlbnVtczogWydhdXRvJywgJ21hbnVhbCddXG4gICAgfSxcbiAgICB2YWxpZ246IHtcbiAgICAgIGVudW1zOiBbJ3RvcCcsICdjZW50ZXInLCAnYm90dG9tJ11cbiAgICB9LFxuICAgIGhhbGlnbjoge1xuICAgICAgZW51bXM6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnXVxuICAgIH0sXG4gICAganVzdGlmaWNhdGlvbjoge1xuICAgICAgZW51bXM6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAnYXV0byddXG4gICAgfSxcbiAgICB0ZXh0OiB7XG4gICAgICBzdHJpbmc6IHRydWVcbiAgICB9LFxuICAgIGRhdGE6IHtcbiAgICAgIG1hcHBpbmc6IHRydWUsXG4gICAgICByZWdleDogZGF0YSgnZGF0YScpXG4gICAgfSxcbiAgICBsYXlvdXREYXRhOiB7XG4gICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgcmVnZXg6IGRhdGEoJ2xheW91dERhdGEnKVxuICAgIH0sXG4gICAgc2NyYXRjaDoge1xuICAgICAgbWFwcGluZzogdHJ1ZSxcbiAgICAgIHJlZ2V4OiBkYXRhKCdzY3JhdGNoJylcbiAgICB9LFxuICAgIG1hcERhdGE6IHtcbiAgICAgIG1hcHBpbmc6IHRydWUsXG4gICAgICByZWdleDogbWFwRGF0YSgnbWFwRGF0YScpXG4gICAgfSxcbiAgICBtYXBMYXlvdXREYXRhOiB7XG4gICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgcmVnZXg6IG1hcERhdGEoJ21hcExheW91dERhdGEnKVxuICAgIH0sXG4gICAgbWFwU2NyYXRjaDoge1xuICAgICAgbWFwcGluZzogdHJ1ZSxcbiAgICAgIHJlZ2V4OiBtYXBEYXRhKCdtYXBTY3JhdGNoJylcbiAgICB9LFxuICAgIGZuOiB7XG4gICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgZm46IHRydWVcbiAgICB9LFxuICAgIHVybDoge1xuICAgICAgcmVnZXhlczogdXJsUmVnZXhlcyxcbiAgICAgIHNpbmdsZVJlZ2V4TWF0Y2hWYWx1ZTogdHJ1ZVxuICAgIH0sXG4gICAgdXJsczoge1xuICAgICAgcmVnZXhlczogdXJsUmVnZXhlcyxcbiAgICAgIHNpbmdsZVJlZ2V4TWF0Y2hWYWx1ZTogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICBwcm9wTGlzdDoge1xuICAgICAgcHJvcExpc3Q6IHRydWVcbiAgICB9LFxuICAgIGFuZ2xlOiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICB1bml0czogJ2RlZ3xyYWQnLFxuICAgICAgaW1wbGljaXRVbml0czogJ3JhZCdcbiAgICB9LFxuICAgIHRleHRSb3RhdGlvbjoge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgdW5pdHM6ICdkZWd8cmFkJyxcbiAgICAgIGltcGxpY2l0VW5pdHM6ICdyYWQnLFxuICAgICAgZW51bXM6IFsnbm9uZScsICdhdXRvcm90YXRlJ11cbiAgICB9LFxuICAgIHBvbHlnb25Qb2ludExpc3Q6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgZXZlbk11bHRpcGxlOiB0cnVlLFxuICAgICAgbWluOiAtMSxcbiAgICAgIG1heDogMSxcbiAgICAgIHVuaXRsZXNzOiB0cnVlXG4gICAgfSxcbiAgICBlZGdlRGlzdGFuY2VzOiB7XG4gICAgICBlbnVtczogWydpbnRlcnNlY3Rpb24nLCAnbm9kZS1wb3NpdGlvbiddXG4gICAgfSxcbiAgICBlZGdlRW5kcG9pbnQ6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgdW5pdHM6ICclfHB4fGVtfGRlZ3xyYWQnLFxuICAgICAgaW1wbGljaXRVbml0czogJ3B4JyxcbiAgICAgIGVudW1zOiBbJ2luc2lkZS10by1ub2RlJywgJ291dHNpZGUtdG8tbm9kZScsICdvdXRzaWRlLXRvLW5vZGUtb3ItbGFiZWwnLCAnb3V0c2lkZS10by1saW5lJywgJ291dHNpZGUtdG8tbGluZS1vci1sYWJlbCddLFxuICAgICAgc2luZ2xlRW51bTogdHJ1ZSxcbiAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbiB2YWxpZGF0ZSh2YWxBcnIsIHVuaXRzQXJyKSB7XG4gICAgICAgIHN3aXRjaCAodmFsQXJyLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIC8vIGNhbiBiZSAlIG9yIHB4IG9ubHlcbiAgICAgICAgICAgIHJldHVybiB1bml0c0FyclswXSAhPT0gJ2RlZycgJiYgdW5pdHNBcnJbMF0gIT09ICdyYWQnICYmIHVuaXRzQXJyWzFdICE9PSAnZGVnJyAmJiB1bml0c0FyclsxXSAhPT0gJ3JhZCc7XG5cbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAvLyBjYW4gYmUgZW51bSwgZGVnLCBvciByYWQgb25seVxuICAgICAgICAgICAgcmV0dXJuIHN0cmluZyh2YWxBcnJbMF0pIHx8IHVuaXRzQXJyWzBdID09PSAnZGVnJyB8fCB1bml0c0FyclswXSA9PT0gJ3JhZCc7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBlYXNpbmc6IHtcbiAgICAgIHJlZ2V4ZXM6IFsnXihzcHJpbmcpXFxcXHMqXFxcXChcXFxccyooJyArIG51bWJlciArICcpXFxcXHMqLFxcXFxzKignICsgbnVtYmVyICsgJylcXFxccypcXFxcKSQnLCAnXihjdWJpYy1iZXppZXIpXFxcXHMqXFxcXChcXFxccyooJyArIG51bWJlciArICcpXFxcXHMqLFxcXFxzKignICsgbnVtYmVyICsgJylcXFxccyosXFxcXHMqKCcgKyBudW1iZXIgKyAnKVxcXFxzKixcXFxccyooJyArIG51bWJlciArICcpXFxcXHMqXFxcXCkkJ10sXG4gICAgICBlbnVtczogWydsaW5lYXInLCAnZWFzZScsICdlYXNlLWluJywgJ2Vhc2Utb3V0JywgJ2Vhc2UtaW4tb3V0JywgJ2Vhc2UtaW4tc2luZScsICdlYXNlLW91dC1zaW5lJywgJ2Vhc2UtaW4tb3V0LXNpbmUnLCAnZWFzZS1pbi1xdWFkJywgJ2Vhc2Utb3V0LXF1YWQnLCAnZWFzZS1pbi1vdXQtcXVhZCcsICdlYXNlLWluLWN1YmljJywgJ2Vhc2Utb3V0LWN1YmljJywgJ2Vhc2UtaW4tb3V0LWN1YmljJywgJ2Vhc2UtaW4tcXVhcnQnLCAnZWFzZS1vdXQtcXVhcnQnLCAnZWFzZS1pbi1vdXQtcXVhcnQnLCAnZWFzZS1pbi1xdWludCcsICdlYXNlLW91dC1xdWludCcsICdlYXNlLWluLW91dC1xdWludCcsICdlYXNlLWluLWV4cG8nLCAnZWFzZS1vdXQtZXhwbycsICdlYXNlLWluLW91dC1leHBvJywgJ2Vhc2UtaW4tY2lyYycsICdlYXNlLW91dC1jaXJjJywgJ2Vhc2UtaW4tb3V0LWNpcmMnXVxuICAgIH0sXG4gICAgZ3JhZGllbnREaXJlY3Rpb246IHtcbiAgICAgIGVudW1zOiBbJ3RvLWJvdHRvbScsICd0by10b3AnLCAndG8tbGVmdCcsICd0by1yaWdodCcsICd0by1ib3R0b20tcmlnaHQnLCAndG8tYm90dG9tLWxlZnQnLCAndG8tdG9wLXJpZ2h0JywgJ3RvLXRvcC1sZWZ0JywgJ3RvLXJpZ2h0LWJvdHRvbScsICd0by1sZWZ0LWJvdHRvbScsICd0by1yaWdodC10b3AnLCAndG8tbGVmdC10b3AnXVxuICAgIH0sXG4gICAgYm91bmRzRXhwYW5zaW9uOiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbiB2YWxpZGF0ZSh2YWxBcnIpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IHZhbEFyci5sZW5ndGg7XG4gICAgICAgIHJldHVybiBsZW5ndGggPT09IDEgfHwgbGVuZ3RoID09PSAyIHx8IGxlbmd0aCA9PT0gNDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHZhciBkaWZmID0ge1xuICAgIHplcm9Ob25aZXJvOiBmdW5jdGlvbiB6ZXJvTm9uWmVybyh2YWwxLCB2YWwyKSB7XG4gICAgICBpZiAoKHZhbDEgPT0gbnVsbCB8fCB2YWwyID09IG51bGwpICYmIHZhbDEgIT09IHZhbDIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIG51bGwgY2FzZXMgY291bGQgcmVwcmVzZW50IGFueSB2YWx1ZVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsMSA9PSAwICYmIHZhbDIgIT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAodmFsMSAhPSAwICYmIHZhbDIgPT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFueTogZnVuY3Rpb24gYW55KHZhbDEsIHZhbDIpIHtcbiAgICAgIHJldHVybiB2YWwxICE9IHZhbDI7XG4gICAgfSxcbiAgICBlbXB0eU5vbkVtcHR5OiBmdW5jdGlvbiBlbXB0eU5vbkVtcHR5KHN0cjEsIHN0cjIpIHtcbiAgICAgIHZhciBlbXB0eTEgPSBlbXB0eVN0cmluZyhzdHIxKTtcbiAgICAgIHZhciBlbXB0eTIgPSBlbXB0eVN0cmluZyhzdHIyKTtcbiAgICAgIHJldHVybiBlbXB0eTEgJiYgIWVtcHR5MiB8fCAhZW1wdHkxICYmIGVtcHR5MjtcbiAgICB9XG4gIH07IC8vIGRlZmluZSB2aXN1YWwgc3R5bGUgcHJvcGVydGllc1xuICAvL1xuICAvLyAtIG4uYi4gYWRkaW5nIGEgbmV3IGdyb3VwIG9mIHByb3BzIG1heSByZXF1aXJlIHVwZGF0ZXMgdG8gdXBkYXRlU3R5bGVIaW50cygpXG4gIC8vIC0gYWRkaW5nIG5ldyBwcm9wcyB0byBhbiBleGlzdGluZyBncm91cCBnZXRzIGhhbmRsZWQgYXV0b21hdGljYWxseVxuXG4gIHZhciB0ID0gc3R5Zm4kNi50eXBlcztcbiAgdmFyIG1haW5MYWJlbCA9IFt7XG4gICAgbmFtZTogJ2xhYmVsJyxcbiAgICB0eXBlOiB0LnRleHQsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLmVtcHR5Tm9uRW1wdHlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LXJvdGF0aW9uJyxcbiAgICB0eXBlOiB0LnRleHRSb3RhdGlvbixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LW1hcmdpbi14JyxcbiAgICB0eXBlOiB0LmJpZGlyZWN0aW9uYWxTaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtbWFyZ2luLXknLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgc291cmNlTGFiZWwgPSBbe1xuICAgIG5hbWU6ICdzb3VyY2UtbGFiZWwnLFxuICAgIHR5cGU6IHQudGV4dCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdzb3VyY2UtdGV4dC1yb3RhdGlvbicsXG4gICAgdHlwZTogdC50ZXh0Um90YXRpb24sXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc291cmNlLXRleHQtbWFyZ2luLXgnLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc291cmNlLXRleHQtbWFyZ2luLXknLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc291cmNlLXRleHQtb2Zmc2V0JyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgdGFyZ2V0TGFiZWwgPSBbe1xuICAgIG5hbWU6ICd0YXJnZXQtbGFiZWwnLFxuICAgIHR5cGU6IHQudGV4dCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0YXJnZXQtdGV4dC1yb3RhdGlvbicsXG4gICAgdHlwZTogdC50ZXh0Um90YXRpb24sXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGFyZ2V0LXRleHQtbWFyZ2luLXgnLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGFyZ2V0LXRleHQtbWFyZ2luLXknLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGFyZ2V0LXRleHQtb2Zmc2V0JyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgbGFiZWxEaW1lbnNpb25zID0gW3tcbiAgICBuYW1lOiAnZm9udC1mYW1pbHknLFxuICAgIHR5cGU6IHQuZm9udEZhbWlseSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdmb250LXN0eWxlJyxcbiAgICB0eXBlOiB0LmZvbnRTdHlsZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdmb250LXdlaWdodCcsXG4gICAgdHlwZTogdC5mb250V2VpZ2h0LFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2ZvbnQtc2l6ZScsXG4gICAgdHlwZTogdC5zaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtdHJhbnNmb3JtJyxcbiAgICB0eXBlOiB0LnRleHRUcmFuc2Zvcm0sXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC13cmFwJyxcbiAgICB0eXBlOiB0LnRleHRXcmFwLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtb3ZlcmZsb3ctd3JhcCcsXG4gICAgdHlwZTogdC50ZXh0T3ZlcmZsb3dXcmFwLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtbWF4LXdpZHRoJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1vdXRsaW5lLXdpZHRoJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnbGluZS1oZWlnaHQnLFxuICAgIHR5cGU6IHQucG9zaXRpdmVOdW1iZXIsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgY29tbW9uTGFiZWwgPSBbe1xuICAgIG5hbWU6ICd0ZXh0LXZhbGlnbicsXG4gICAgdHlwZTogdC52YWxpZ24sXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1oYWxpZ24nLFxuICAgIHR5cGU6IHQuaGFsaWduLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2NvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1vdXRsaW5lLWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1vdXRsaW5lLW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtYmFja2dyb3VuZC1jb2xvcicsXG4gICAgdHlwZTogdC5jb2xvclxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtYmFja2dyb3VuZC1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWJhY2tncm91bmQtcGFkZGluZycsXG4gICAgdHlwZTogdC5zaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtYm9yZGVyLW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtYm9yZGVyLWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1ib3JkZXItd2lkdGgnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWJvcmRlci1zdHlsZScsXG4gICAgdHlwZTogdC5ib3JkZXJTdHlsZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWJhY2tncm91bmQtc2hhcGUnLFxuICAgIHR5cGU6IHQudGV4dEJhY2tncm91bmRTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWp1c3RpZmljYXRpb24nLFxuICAgIHR5cGU6IHQuanVzdGlmaWNhdGlvblxuICB9XTtcbiAgdmFyIGJlaGF2aW9yID0gW3tcbiAgICBuYW1lOiAnZXZlbnRzJyxcbiAgICB0eXBlOiB0LmJvb2xcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWV2ZW50cycsXG4gICAgdHlwZTogdC5ib29sXG4gIH1dO1xuICB2YXIgdmlzaWJpbGl0eSA9IFt7XG4gICAgbmFtZTogJ2Rpc3BsYXknLFxuICAgIHR5cGU6IHQuZGlzcGxheSxcbiAgICB0cmlnZ2Vyc1pPcmRlcjogZGlmZi5hbnksXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgIHRyaWdnZXJzQm91bmRzT2ZQYXJhbGxlbEJlemllcnM6IHRydWVcbiAgfSwge1xuICAgIG5hbWU6ICd2aXNpYmlsaXR5JyxcbiAgICB0eXBlOiB0LnZpc2liaWxpdHksXG4gICAgdHJpZ2dlcnNaT3JkZXI6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnb3BhY2l0eScsXG4gICAgdHlwZTogdC56ZXJvT25lTnVtYmVyLFxuICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLnplcm9Ob25aZXJvXG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgfSwge1xuICAgIG5hbWU6ICdtaW4tem9vbWVkLWZvbnQtc2l6ZScsXG4gICAgdHlwZTogdC5zaXplXG4gIH0sIHtcbiAgICBuYW1lOiAnei1jb21wb3VuZC1kZXB0aCcsXG4gICAgdHlwZTogdC56Q29tcG91bmREZXB0aCxcbiAgICB0cmlnZ2Vyc1pPcmRlcjogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd6LWluZGV4LWNvbXBhcmUnLFxuICAgIHR5cGU6IHQuekluZGV4Q29tcGFyZSxcbiAgICB0cmlnZ2Vyc1pPcmRlcjogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd6LWluZGV4JyxcbiAgICB0eXBlOiB0Lm5vbk5lZ2F0aXZlSW50LFxuICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLmFueVxuICB9XTtcbiAgdmFyIG92ZXJsYXkgPSBbe1xuICAgIG5hbWU6ICdvdmVybGF5LXBhZGRpbmcnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdvdmVybGF5LWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAnb3ZlcmxheS1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXIsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuemVyb05vblplcm9cbiAgfSwge1xuICAgIG5hbWU6ICdvdmVybGF5LXNoYXBlJyxcbiAgICB0eXBlOiB0Lm92ZXJsYXlTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfV07XG4gIHZhciB1bmRlcmxheSA9IFt7XG4gICAgbmFtZTogJ3VuZGVybGF5LXBhZGRpbmcnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd1bmRlcmxheS1jb2xvcicsXG4gICAgdHlwZTogdC5jb2xvclxuICB9LCB7XG4gICAgbmFtZTogJ3VuZGVybGF5LW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlcixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi56ZXJvTm9uWmVyb1xuICB9LCB7XG4gICAgbmFtZTogJ3VuZGVybGF5LXNoYXBlJyxcbiAgICB0eXBlOiB0Lm92ZXJsYXlTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfV07XG4gIHZhciB0cmFuc2l0aW9uID0gW3tcbiAgICBuYW1lOiAndHJhbnNpdGlvbi1wcm9wZXJ0eScsXG4gICAgdHlwZTogdC5wcm9wTGlzdFxuICB9LCB7XG4gICAgbmFtZTogJ3RyYW5zaXRpb24tZHVyYXRpb24nLFxuICAgIHR5cGU6IHQudGltZVxuICB9LCB7XG4gICAgbmFtZTogJ3RyYW5zaXRpb24tZGVsYXknLFxuICAgIHR5cGU6IHQudGltZVxuICB9LCB7XG4gICAgbmFtZTogJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJyxcbiAgICB0eXBlOiB0LmVhc2luZ1xuICB9XTtcblxuICB2YXIgbm9kZVNpemVIYXNoT3ZlcnJpZGUgPSBmdW5jdGlvbiBub2RlU2l6ZUhhc2hPdmVycmlkZShlbGUsIHBhcnNlZFByb3ApIHtcbiAgICBpZiAocGFyc2VkUHJvcC52YWx1ZSA9PT0gJ2xhYmVsJykge1xuICAgICAgcmV0dXJuIC1lbGUucG9vbEluZGV4KCk7IC8vIG5vIGhhc2gga2V5IGhpdHMgaXMgdXNpbmcgbGFiZWwgc2l6ZSAoaGl0cmF0ZSBmb3IgcGVyZiBwcm9iYWJseSBsb3cgYW55d2F5KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFyc2VkUHJvcC5wZlZhbHVlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgbm9kZUJvZHkgPSBbe1xuICAgIG5hbWU6ICdoZWlnaHQnLFxuICAgIHR5cGU6IHQubm9kZVNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgIGhhc2hPdmVycmlkZTogbm9kZVNpemVIYXNoT3ZlcnJpZGVcbiAgfSwge1xuICAgIG5hbWU6ICd3aWR0aCcsXG4gICAgdHlwZTogdC5ub2RlU2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnksXG4gICAgaGFzaE92ZXJyaWRlOiBub2RlU2l6ZUhhc2hPdmVycmlkZVxuICB9LCB7XG4gICAgbmFtZTogJ3NoYXBlJyxcbiAgICB0eXBlOiB0Lm5vZGVTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdzaGFwZS1wb2x5Z29uLXBvaW50cycsXG4gICAgdHlwZTogdC5wb2x5Z29uUG9pbnRMaXN0LFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtY29sb3InLFxuICAgIHR5cGU6IHQuY29sb3JcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWZpbGwnLFxuICAgIHR5cGU6IHQuZmlsbFxuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtb3BhY2l0eScsXG4gICAgdHlwZTogdC56ZXJvT25lTnVtYmVyXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1ibGFja2VuJyxcbiAgICB0eXBlOiB0Lm5PbmVPbmVOdW1iZXJcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWdyYWRpZW50LXN0b3AtY29sb3JzJyxcbiAgICB0eXBlOiB0LmNvbG9yc1xuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtZ3JhZGllbnQtc3RvcC1wb3NpdGlvbnMnLFxuICAgIHR5cGU6IHQucGVyY2VudGFnZXNcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWdyYWRpZW50LWRpcmVjdGlvbicsXG4gICAgdHlwZTogdC5ncmFkaWVudERpcmVjdGlvblxuICB9LCB7XG4gICAgbmFtZTogJ3BhZGRpbmcnLFxuICAgIHR5cGU6IHQuc2l6ZU1heWJlUGVyY2VudCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdwYWRkaW5nLXJlbGF0aXZlLXRvJyxcbiAgICB0eXBlOiB0LnBhZGRpbmdSZWxhdGl2ZVRvLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2JvdW5kcy1leHBhbnNpb24nLFxuICAgIHR5cGU6IHQuYm91bmRzRXhwYW5zaW9uLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9XTtcbiAgdmFyIG5vZGVCb3JkZXIgPSBbe1xuICAgIG5hbWU6ICdib3JkZXItY29sb3InLFxuICAgIHR5cGU6IHQuY29sb3JcbiAgfSwge1xuICAgIG5hbWU6ICdib3JkZXItb3BhY2l0eScsXG4gICAgdHlwZTogdC56ZXJvT25lTnVtYmVyXG4gIH0sIHtcbiAgICBuYW1lOiAnYm9yZGVyLXdpZHRoJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnYm9yZGVyLXN0eWxlJyxcbiAgICB0eXBlOiB0LmJvcmRlclN0eWxlXG4gIH1dO1xuICB2YXIgYmFja2dyb3VuZEltYWdlID0gW3tcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZScsXG4gICAgdHlwZTogdC51cmxzXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZS1jcm9zc29yaWdpbicsXG4gICAgdHlwZTogdC5iZ0Nyb3NzT3JpZ2luXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZS1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJzXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZS1jb250YWlubWVudCcsXG4gICAgdHlwZTogdC5iZ0NvbnRhaW5tZW50XG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZS1zbW9vdGhpbmcnLFxuICAgIHR5cGU6IHQuYm9vbHNcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXgnLFxuICAgIHR5cGU6IHQuYmdQb3NcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXknLFxuICAgIHR5cGU6IHQuYmdQb3NcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLXdpZHRoLXJlbGF0aXZlLXRvJyxcbiAgICB0eXBlOiB0LmJnUmVsYXRpdmVUb1xuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtaGVpZ2h0LXJlbGF0aXZlLXRvJyxcbiAgICB0eXBlOiB0LmJnUmVsYXRpdmVUb1xuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtcmVwZWF0JyxcbiAgICB0eXBlOiB0LmJnUmVwZWF0XG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1maXQnLFxuICAgIHR5cGU6IHQuYmdGaXRcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWNsaXAnLFxuICAgIHR5cGU6IHQuYmdDbGlwXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC13aWR0aCcsXG4gICAgdHlwZTogdC5iZ1dIXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1oZWlnaHQnLFxuICAgIHR5cGU6IHQuYmdXSFxuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtb2Zmc2V0LXgnLFxuICAgIHR5cGU6IHQuYmdQb3NcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLW9mZnNldC15JyxcbiAgICB0eXBlOiB0LmJnUG9zXG4gIH1dO1xuICB2YXIgY29tcG91bmQgPSBbe1xuICAgIG5hbWU6ICdwb3NpdGlvbicsXG4gICAgdHlwZTogdC5wb3NpdGlvbixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdjb21wb3VuZC1zaXppbmctd3J0LWxhYmVscycsXG4gICAgdHlwZTogdC5jb21wb3VuZEluY2x1ZGVMYWJlbHMsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnbWluLXdpZHRoJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnbWluLXdpZHRoLWJpYXMtbGVmdCcsXG4gICAgdHlwZTogdC5zaXplTWF5YmVQZXJjZW50LFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ21pbi13aWR0aC1iaWFzLXJpZ2h0JyxcbiAgICB0eXBlOiB0LnNpemVNYXliZVBlcmNlbnQsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnbWluLWhlaWdodCcsXG4gICAgdHlwZTogdC5zaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ21pbi1oZWlnaHQtYmlhcy10b3AnLFxuICAgIHR5cGU6IHQuc2l6ZU1heWJlUGVyY2VudCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdtaW4taGVpZ2h0LWJpYXMtYm90dG9tJyxcbiAgICB0eXBlOiB0LnNpemVNYXliZVBlcmNlbnQsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgZWRnZUxpbmUgPSBbe1xuICAgIG5hbWU6ICdsaW5lLXN0eWxlJyxcbiAgICB0eXBlOiB0LmxpbmVTdHlsZVxuICB9LCB7XG4gICAgbmFtZTogJ2xpbmUtY29sb3InLFxuICAgIHR5cGU6IHQuY29sb3JcbiAgfSwge1xuICAgIG5hbWU6ICdsaW5lLWZpbGwnLFxuICAgIHR5cGU6IHQuZmlsbFxuICB9LCB7XG4gICAgbmFtZTogJ2xpbmUtY2FwJyxcbiAgICB0eXBlOiB0LmxpbmVDYXBcbiAgfSwge1xuICAgIG5hbWU6ICdsaW5lLW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ2xpbmUtZGFzaC1wYXR0ZXJuJyxcbiAgICB0eXBlOiB0Lm51bWJlcnNcbiAgfSwge1xuICAgIG5hbWU6ICdsaW5lLWRhc2gtb2Zmc2V0JyxcbiAgICB0eXBlOiB0Lm51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ2xpbmUtZ3JhZGllbnQtc3RvcC1jb2xvcnMnLFxuICAgIHR5cGU6IHQuY29sb3JzXG4gIH0sIHtcbiAgICBuYW1lOiAnbGluZS1ncmFkaWVudC1zdG9wLXBvc2l0aW9ucycsXG4gICAgdHlwZTogdC5wZXJjZW50YWdlc1xuICB9LCB7XG4gICAgbmFtZTogJ2N1cnZlLXN0eWxlJyxcbiAgICB0eXBlOiB0LmN1cnZlU3R5bGUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgIHRyaWdnZXJzQm91bmRzT2ZQYXJhbGxlbEJlemllcnM6IHRydWVcbiAgfSwge1xuICAgIG5hbWU6ICdoYXlzdGFjay1yYWRpdXMnLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlcixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdzb3VyY2UtZW5kcG9pbnQnLFxuICAgIHR5cGU6IHQuZWRnZUVuZHBvaW50LFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RhcmdldC1lbmRwb2ludCcsXG4gICAgdHlwZTogdC5lZGdlRW5kcG9pbnQsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnY29udHJvbC1wb2ludC1zdGVwLXNpemUnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdjb250cm9sLXBvaW50LWRpc3RhbmNlcycsXG4gICAgdHlwZTogdC5iaWRpcmVjdGlvbmFsU2l6ZXMsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnY29udHJvbC1wb2ludC13ZWlnaHRzJyxcbiAgICB0eXBlOiB0Lm51bWJlcnMsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc2VnbWVudC1kaXN0YW5jZXMnLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemVzLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3NlZ21lbnQtd2VpZ2h0cycsXG4gICAgdHlwZTogdC5udW1iZXJzLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RheGktdHVybicsXG4gICAgdHlwZTogdC5iaWRpcmVjdGlvbmFsU2l6ZU1heWJlUGVyY2VudCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0YXhpLXR1cm4tbWluLWRpc3RhbmNlJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGF4aS1kaXJlY3Rpb24nLFxuICAgIHR5cGU6IHQuYXhpc0RpcmVjdGlvbixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdlZGdlLWRpc3RhbmNlcycsXG4gICAgdHlwZTogdC5lZGdlRGlzdGFuY2VzLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2Fycm93LXNjYWxlJyxcbiAgICB0eXBlOiB0LnBvc2l0aXZlTnVtYmVyLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2xvb3AtZGlyZWN0aW9uJyxcbiAgICB0eXBlOiB0LmFuZ2xlLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2xvb3Atc3dlZXAnLFxuICAgIHR5cGU6IHQuYW5nbGUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc291cmNlLWRpc3RhbmNlLWZyb20tbm9kZScsXG4gICAgdHlwZTogdC5zaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RhcmdldC1kaXN0YW5jZS1mcm9tLW5vZGUnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfV07XG4gIHZhciBnaG9zdCA9IFt7XG4gICAgbmFtZTogJ2dob3N0JyxcbiAgICB0eXBlOiB0LmJvb2wsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnZ2hvc3Qtb2Zmc2V0LXgnLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnZ2hvc3Qtb2Zmc2V0LXknLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnZ2hvc3Qtb3BhY2l0eScsXG4gICAgdHlwZTogdC56ZXJvT25lTnVtYmVyXG4gIH1dO1xuICB2YXIgY29yZSA9IFt7XG4gICAgbmFtZTogJ3NlbGVjdGlvbi1ib3gtY29sb3InLFxuICAgIHR5cGU6IHQuY29sb3JcbiAgfSwge1xuICAgIG5hbWU6ICdzZWxlY3Rpb24tYm94LW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ3NlbGVjdGlvbi1ib3gtYm9yZGVyLWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAnc2VsZWN0aW9uLWJveC1ib3JkZXItd2lkdGgnLFxuICAgIHR5cGU6IHQuc2l6ZVxuICB9LCB7XG4gICAgbmFtZTogJ2FjdGl2ZS1iZy1jb2xvcicsXG4gICAgdHlwZTogdC5jb2xvclxuICB9LCB7XG4gICAgbmFtZTogJ2FjdGl2ZS1iZy1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgfSwge1xuICAgIG5hbWU6ICdhY3RpdmUtYmctc2l6ZScsXG4gICAgdHlwZTogdC5zaXplXG4gIH0sIHtcbiAgICBuYW1lOiAnb3V0c2lkZS10ZXh0dXJlLWJnLWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAnb3V0c2lkZS10ZXh0dXJlLWJnLW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9XTsgLy8gcGllIGJhY2tncm91bmRzIGZvciBub2Rlc1xuXG4gIHZhciBwaWUgPSBbXTtcbiAgc3R5Zm4kNi5waWVCYWNrZ3JvdW5kTiA9IDE2OyAvLyBiZWNhdXNlIHRoZSBwaWUgcHJvcGVydGllcyBhcmUgbnVtYmVyZWQsIGdpdmUgYWNjZXNzIHRvIGEgY29uc3RhbnQgTiAoZm9yIHJlbmRlcmVyIHVzZSlcblxuICBwaWUucHVzaCh7XG4gICAgbmFtZTogJ3BpZS1zaXplJyxcbiAgICB0eXBlOiB0LnNpemVNYXliZVBlcmNlbnRcbiAgfSk7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc3R5Zm4kNi5waWVCYWNrZ3JvdW5kTjsgaSsrKSB7XG4gICAgcGllLnB1c2goe1xuICAgICAgbmFtZTogJ3BpZS0nICsgaSArICctYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICB0eXBlOiB0LmNvbG9yXG4gICAgfSk7XG4gICAgcGllLnB1c2goe1xuICAgICAgbmFtZTogJ3BpZS0nICsgaSArICctYmFja2dyb3VuZC1zaXplJyxcbiAgICAgIHR5cGU6IHQucGVyY2VudFxuICAgIH0pO1xuICAgIHBpZS5wdXNoKHtcbiAgICAgIG5hbWU6ICdwaWUtJyArIGkgKyAnLWJhY2tncm91bmQtb3BhY2l0eScsXG4gICAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgICB9KTtcbiAgfSAvLyBlZGdlIGFycm93c1xuXG5cbiAgdmFyIGVkZ2VBcnJvdyA9IFtdO1xuICB2YXIgYXJyb3dQcmVmaXhlcyA9IHN0eWZuJDYuYXJyb3dQcmVmaXhlcyA9IFsnc291cmNlJywgJ21pZC1zb3VyY2UnLCAndGFyZ2V0JywgJ21pZC10YXJnZXQnXTtcbiAgW3tcbiAgICBuYW1lOiAnYXJyb3ctc2hhcGUnLFxuICAgIHR5cGU6IHQuYXJyb3dTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdhcnJvdy1jb2xvcicsXG4gICAgdHlwZTogdC5jb2xvclxuICB9LCB7XG4gICAgbmFtZTogJ2Fycm93LWZpbGwnLFxuICAgIHR5cGU6IHQuYXJyb3dGaWxsXG4gIH1dLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICBhcnJvd1ByZWZpeGVzLmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkge1xuICAgICAgdmFyIG5hbWUgPSBwcmVmaXggKyAnLScgKyBwcm9wLm5hbWU7XG4gICAgICB2YXIgdHlwZSA9IHByb3AudHlwZSxcbiAgICAgICAgICB0cmlnZ2Vyc0JvdW5kcyA9IHByb3AudHJpZ2dlcnNCb3VuZHM7XG4gICAgICBlZGdlQXJyb3cucHVzaCh7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIHRyaWdnZXJzQm91bmRzOiB0cmlnZ2Vyc0JvdW5kc1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIHt9KTtcbiAgdmFyIHByb3BzID0gc3R5Zm4kNi5wcm9wZXJ0aWVzID0gW10uY29uY2F0KGJlaGF2aW9yLCB0cmFuc2l0aW9uLCB2aXNpYmlsaXR5LCBvdmVybGF5LCB1bmRlcmxheSwgZ2hvc3QsIGNvbW1vbkxhYmVsLCBsYWJlbERpbWVuc2lvbnMsIG1haW5MYWJlbCwgc291cmNlTGFiZWwsIHRhcmdldExhYmVsLCBub2RlQm9keSwgbm9kZUJvcmRlciwgYmFja2dyb3VuZEltYWdlLCBwaWUsIGNvbXBvdW5kLCBlZGdlTGluZSwgZWRnZUFycm93LCBjb3JlKTtcbiAgdmFyIHByb3BHcm91cHMgPSBzdHlmbiQ2LnByb3BlcnR5R3JvdXBzID0ge1xuICAgIC8vIGNvbW1vbiB0byBhbGwgZWxlc1xuICAgIGJlaGF2aW9yOiBiZWhhdmlvcixcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uLFxuICAgIHZpc2liaWxpdHk6IHZpc2liaWxpdHksXG4gICAgb3ZlcmxheTogb3ZlcmxheSxcbiAgICB1bmRlcmxheTogdW5kZXJsYXksXG4gICAgZ2hvc3Q6IGdob3N0LFxuICAgIC8vIGxhYmVsc1xuICAgIGNvbW1vbkxhYmVsOiBjb21tb25MYWJlbCxcbiAgICBsYWJlbERpbWVuc2lvbnM6IGxhYmVsRGltZW5zaW9ucyxcbiAgICBtYWluTGFiZWw6IG1haW5MYWJlbCxcbiAgICBzb3VyY2VMYWJlbDogc291cmNlTGFiZWwsXG4gICAgdGFyZ2V0TGFiZWw6IHRhcmdldExhYmVsLFxuICAgIC8vIG5vZGUgcHJvcHNcbiAgICBub2RlQm9keTogbm9kZUJvZHksXG4gICAgbm9kZUJvcmRlcjogbm9kZUJvcmRlcixcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6IGJhY2tncm91bmRJbWFnZSxcbiAgICBwaWU6IHBpZSxcbiAgICBjb21wb3VuZDogY29tcG91bmQsXG4gICAgLy8gZWRnZSBwcm9wc1xuICAgIGVkZ2VMaW5lOiBlZGdlTGluZSxcbiAgICBlZGdlQXJyb3c6IGVkZ2VBcnJvdyxcbiAgICBjb3JlOiBjb3JlXG4gIH07XG4gIHZhciBwcm9wR3JvdXBOYW1lcyA9IHN0eWZuJDYucHJvcGVydHlHcm91cE5hbWVzID0ge307XG4gIHZhciBwcm9wR3JvdXBLZXlzID0gc3R5Zm4kNi5wcm9wZXJ0eUdyb3VwS2V5cyA9IE9iamVjdC5rZXlzKHByb3BHcm91cHMpO1xuICBwcm9wR3JvdXBLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHByb3BHcm91cE5hbWVzW2tleV0gPSBwcm9wR3JvdXBzW2tleV0ubWFwKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICByZXR1cm4gcHJvcC5uYW1lO1xuICAgIH0pO1xuICAgIHByb3BHcm91cHNba2V5XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICByZXR1cm4gcHJvcC5ncm91cEtleSA9IGtleTtcbiAgICB9KTtcbiAgfSk7IC8vIGRlZmluZSBhbGlhc2VzXG5cbiAgdmFyIGFsaWFzZXMgPSBzdHlmbiQ2LmFsaWFzZXMgPSBbe1xuICAgIG5hbWU6ICdjb250ZW50JyxcbiAgICBwb2ludHNUbzogJ2xhYmVsJ1xuICB9LCB7XG4gICAgbmFtZTogJ2NvbnRyb2wtcG9pbnQtZGlzdGFuY2UnLFxuICAgIHBvaW50c1RvOiAnY29udHJvbC1wb2ludC1kaXN0YW5jZXMnXG4gIH0sIHtcbiAgICBuYW1lOiAnY29udHJvbC1wb2ludC13ZWlnaHQnLFxuICAgIHBvaW50c1RvOiAnY29udHJvbC1wb2ludC13ZWlnaHRzJ1xuICB9LCB7XG4gICAgbmFtZTogJ2VkZ2UtdGV4dC1yb3RhdGlvbicsXG4gICAgcG9pbnRzVG86ICd0ZXh0LXJvdGF0aW9uJ1xuICB9LCB7XG4gICAgbmFtZTogJ3BhZGRpbmctbGVmdCcsXG4gICAgcG9pbnRzVG86ICdwYWRkaW5nJ1xuICB9LCB7XG4gICAgbmFtZTogJ3BhZGRpbmctcmlnaHQnLFxuICAgIHBvaW50c1RvOiAncGFkZGluZydcbiAgfSwge1xuICAgIG5hbWU6ICdwYWRkaW5nLXRvcCcsXG4gICAgcG9pbnRzVG86ICdwYWRkaW5nJ1xuICB9LCB7XG4gICAgbmFtZTogJ3BhZGRpbmctYm90dG9tJyxcbiAgICBwb2ludHNUbzogJ3BhZGRpbmcnXG4gIH1dOyAvLyBsaXN0IG9mIHByb3BlcnR5IG5hbWVzXG5cbiAgc3R5Zm4kNi5wcm9wZXJ0eU5hbWVzID0gcHJvcHMubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgcmV0dXJuIHAubmFtZTtcbiAgfSk7IC8vIGFsbG93IGFjY2VzcyBvZiBwcm9wZXJ0aWVzIGJ5IG5hbWUgKCBlLmcuIHN0eWxlLnByb3BlcnRpZXMuaGVpZ2h0IClcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgcHJvcHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIHByb3AgPSBwcm9wc1tfaV07XG4gICAgcHJvcHNbcHJvcC5uYW1lXSA9IHByb3A7IC8vIGFsbG93IGxvb2t1cCBieSBuYW1lXG4gIH0gLy8gbWFwIGFsaWFzZXNcblxuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGFsaWFzZXMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBhbGlhcyA9IGFsaWFzZXNbX2kyXTtcbiAgICB2YXIgcG9pbnRzVG9Qcm9wID0gcHJvcHNbYWxpYXMucG9pbnRzVG9dO1xuICAgIHZhciBhbGlhc1Byb3AgPSB7XG4gICAgICBuYW1lOiBhbGlhcy5uYW1lLFxuICAgICAgYWxpYXM6IHRydWUsXG4gICAgICBwb2ludHNUbzogcG9pbnRzVG9Qcm9wXG4gICAgfTsgLy8gYWRkIGFsaWFzIHByb3AgZm9yIHBhcnNpbmdcblxuICAgIHByb3BzLnB1c2goYWxpYXNQcm9wKTtcbiAgICBwcm9wc1thbGlhcy5uYW1lXSA9IGFsaWFzUHJvcDsgLy8gYWxsb3cgbG9va3VwIGJ5IG5hbWVcbiAgfVxufSkoKTtcblxuc3R5Zm4kNi5nZXREZWZhdWx0UHJvcGVydHkgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gdGhpcy5nZXREZWZhdWx0UHJvcGVydGllcygpW25hbWVdO1xufTtcblxuc3R5Zm4kNi5nZXREZWZhdWx0UHJvcGVydGllcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcblxuICBpZiAoX3AuZGVmYXVsdFByb3BlcnRpZXMgIT0gbnVsbCkge1xuICAgIHJldHVybiBfcC5kZWZhdWx0UHJvcGVydGllcztcbiAgfVxuXG4gIHZhciByYXdQcm9wcyA9IGV4dGVuZCh7XG4gICAgLy8gY29yZSBwcm9wc1xuICAgICdzZWxlY3Rpb24tYm94LWNvbG9yJzogJyNkZGQnLFxuICAgICdzZWxlY3Rpb24tYm94LW9wYWNpdHknOiAwLjY1LFxuICAgICdzZWxlY3Rpb24tYm94LWJvcmRlci1jb2xvcic6ICcjYWFhJyxcbiAgICAnc2VsZWN0aW9uLWJveC1ib3JkZXItd2lkdGgnOiAxLFxuICAgICdhY3RpdmUtYmctY29sb3InOiAnYmxhY2snLFxuICAgICdhY3RpdmUtYmctb3BhY2l0eSc6IDAuMTUsXG4gICAgJ2FjdGl2ZS1iZy1zaXplJzogMzAsXG4gICAgJ291dHNpZGUtdGV4dHVyZS1iZy1jb2xvcic6ICcjMDAwJyxcbiAgICAnb3V0c2lkZS10ZXh0dXJlLWJnLW9wYWNpdHknOiAwLjEyNSxcbiAgICAvLyBjb21tb24gbm9kZS9lZGdlIHByb3BzXG4gICAgJ2V2ZW50cyc6ICd5ZXMnLFxuICAgICd0ZXh0LWV2ZW50cyc6ICdubycsXG4gICAgJ3RleHQtdmFsaWduJzogJ3RvcCcsXG4gICAgJ3RleHQtaGFsaWduJzogJ2NlbnRlcicsXG4gICAgJ3RleHQtanVzdGlmaWNhdGlvbic6ICdhdXRvJyxcbiAgICAnbGluZS1oZWlnaHQnOiAxLFxuICAgICdjb2xvcic6ICcjMDAwJyxcbiAgICAndGV4dC1vdXRsaW5lLWNvbG9yJzogJyMwMDAnLFxuICAgICd0ZXh0LW91dGxpbmUtd2lkdGgnOiAwLFxuICAgICd0ZXh0LW91dGxpbmUtb3BhY2l0eSc6IDEsXG4gICAgJ3RleHQtb3BhY2l0eSc6IDEsXG4gICAgJ3RleHQtZGVjb3JhdGlvbic6ICdub25lJyxcbiAgICAndGV4dC10cmFuc2Zvcm0nOiAnbm9uZScsXG4gICAgJ3RleHQtd3JhcCc6ICdub25lJyxcbiAgICAndGV4dC1vdmVyZmxvdy13cmFwJzogJ3doaXRlc3BhY2UnLFxuICAgICd0ZXh0LW1heC13aWR0aCc6IDk5OTksXG4gICAgJ3RleHQtYmFja2dyb3VuZC1jb2xvcic6ICcjMDAwJyxcbiAgICAndGV4dC1iYWNrZ3JvdW5kLW9wYWNpdHknOiAwLFxuICAgICd0ZXh0LWJhY2tncm91bmQtc2hhcGUnOiAncmVjdGFuZ2xlJyxcbiAgICAndGV4dC1iYWNrZ3JvdW5kLXBhZGRpbmcnOiAwLFxuICAgICd0ZXh0LWJvcmRlci1vcGFjaXR5JzogMCxcbiAgICAndGV4dC1ib3JkZXItd2lkdGgnOiAwLFxuICAgICd0ZXh0LWJvcmRlci1zdHlsZSc6ICdzb2xpZCcsXG4gICAgJ3RleHQtYm9yZGVyLWNvbG9yJzogJyMwMDAnLFxuICAgICdmb250LWZhbWlseSc6ICdIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJyxcbiAgICAnZm9udC1zdHlsZSc6ICdub3JtYWwnLFxuICAgICdmb250LXdlaWdodCc6ICdub3JtYWwnLFxuICAgICdmb250LXNpemUnOiAxNixcbiAgICAnbWluLXpvb21lZC1mb250LXNpemUnOiAwLFxuICAgICd0ZXh0LXJvdGF0aW9uJzogJ25vbmUnLFxuICAgICdzb3VyY2UtdGV4dC1yb3RhdGlvbic6ICdub25lJyxcbiAgICAndGFyZ2V0LXRleHQtcm90YXRpb24nOiAnbm9uZScsXG4gICAgJ3Zpc2liaWxpdHknOiAndmlzaWJsZScsXG4gICAgJ2Rpc3BsYXknOiAnZWxlbWVudCcsXG4gICAgJ29wYWNpdHknOiAxLFxuICAgICd6LWNvbXBvdW5kLWRlcHRoJzogJ2F1dG8nLFxuICAgICd6LWluZGV4LWNvbXBhcmUnOiAnYXV0bycsXG4gICAgJ3otaW5kZXgnOiAwLFxuICAgICdsYWJlbCc6ICcnLFxuICAgICd0ZXh0LW1hcmdpbi14JzogMCxcbiAgICAndGV4dC1tYXJnaW4teSc6IDAsXG4gICAgJ3NvdXJjZS1sYWJlbCc6ICcnLFxuICAgICdzb3VyY2UtdGV4dC1vZmZzZXQnOiAwLFxuICAgICdzb3VyY2UtdGV4dC1tYXJnaW4teCc6IDAsXG4gICAgJ3NvdXJjZS10ZXh0LW1hcmdpbi15JzogMCxcbiAgICAndGFyZ2V0LWxhYmVsJzogJycsXG4gICAgJ3RhcmdldC10ZXh0LW9mZnNldCc6IDAsXG4gICAgJ3RhcmdldC10ZXh0LW1hcmdpbi14JzogMCxcbiAgICAndGFyZ2V0LXRleHQtbWFyZ2luLXknOiAwLFxuICAgICdvdmVybGF5LW9wYWNpdHknOiAwLFxuICAgICdvdmVybGF5LWNvbG9yJzogJyMwMDAnLFxuICAgICdvdmVybGF5LXBhZGRpbmcnOiAxMCxcbiAgICAnb3ZlcmxheS1zaGFwZSc6ICdyb3VuZC1yZWN0YW5nbGUnLFxuICAgICd1bmRlcmxheS1vcGFjaXR5JzogMCxcbiAgICAndW5kZXJsYXktY29sb3InOiAnIzAwMCcsXG4gICAgJ3VuZGVybGF5LXBhZGRpbmcnOiAxMCxcbiAgICAndW5kZXJsYXktc2hhcGUnOiAncm91bmQtcmVjdGFuZ2xlJyxcbiAgICAndHJhbnNpdGlvbi1wcm9wZXJ0eSc6ICdub25lJyxcbiAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6IDAsXG4gICAgJ3RyYW5zaXRpb24tZGVsYXknOiAwLFxuICAgICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbic6ICdsaW5lYXInLFxuICAgIC8vIG5vZGUgcHJvcHNcbiAgICAnYmFja2dyb3VuZC1ibGFja2VuJzogMCxcbiAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjOTk5JyxcbiAgICAnYmFja2dyb3VuZC1maWxsJzogJ3NvbGlkJyxcbiAgICAnYmFja2dyb3VuZC1vcGFjaXR5JzogMSxcbiAgICAnYmFja2dyb3VuZC1pbWFnZSc6ICdub25lJyxcbiAgICAnYmFja2dyb3VuZC1pbWFnZS1jcm9zc29yaWdpbic6ICdhbm9ueW1vdXMnLFxuICAgICdiYWNrZ3JvdW5kLWltYWdlLW9wYWNpdHknOiAxLFxuICAgICdiYWNrZ3JvdW5kLWltYWdlLWNvbnRhaW5tZW50JzogJ2luc2lkZScsXG4gICAgJ2JhY2tncm91bmQtaW1hZ2Utc21vb3RoaW5nJzogJ3llcycsXG4gICAgJ2JhY2tncm91bmQtcG9zaXRpb24teCc6ICc1MCUnLFxuICAgICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXknOiAnNTAlJyxcbiAgICAnYmFja2dyb3VuZC1vZmZzZXQteCc6IDAsXG4gICAgJ2JhY2tncm91bmQtb2Zmc2V0LXknOiAwLFxuICAgICdiYWNrZ3JvdW5kLXdpZHRoLXJlbGF0aXZlLXRvJzogJ2luY2x1ZGUtcGFkZGluZycsXG4gICAgJ2JhY2tncm91bmQtaGVpZ2h0LXJlbGF0aXZlLXRvJzogJ2luY2x1ZGUtcGFkZGluZycsXG4gICAgJ2JhY2tncm91bmQtcmVwZWF0JzogJ25vLXJlcGVhdCcsXG4gICAgJ2JhY2tncm91bmQtZml0JzogJ25vbmUnLFxuICAgICdiYWNrZ3JvdW5kLWNsaXAnOiAnbm9kZScsXG4gICAgJ2JhY2tncm91bmQtd2lkdGgnOiAnYXV0bycsXG4gICAgJ2JhY2tncm91bmQtaGVpZ2h0JzogJ2F1dG8nLFxuICAgICdib3JkZXItY29sb3InOiAnIzAwMCcsXG4gICAgJ2JvcmRlci1vcGFjaXR5JzogMSxcbiAgICAnYm9yZGVyLXdpZHRoJzogMCxcbiAgICAnYm9yZGVyLXN0eWxlJzogJ3NvbGlkJyxcbiAgICAnaGVpZ2h0JzogMzAsXG4gICAgJ3dpZHRoJzogMzAsXG4gICAgJ3NoYXBlJzogJ2VsbGlwc2UnLFxuICAgICdzaGFwZS1wb2x5Z29uLXBvaW50cyc6ICctMSwgLTEsICAgMSwgLTEsICAgMSwgMSwgICAtMSwgMScsXG4gICAgJ2JvdW5kcy1leHBhbnNpb24nOiAwLFxuICAgIC8vIG5vZGUgZ3JhZGllbnRcbiAgICAnYmFja2dyb3VuZC1ncmFkaWVudC1kaXJlY3Rpb24nOiAndG8tYm90dG9tJyxcbiAgICAnYmFja2dyb3VuZC1ncmFkaWVudC1zdG9wLWNvbG9ycyc6ICcjOTk5JyxcbiAgICAnYmFja2dyb3VuZC1ncmFkaWVudC1zdG9wLXBvc2l0aW9ucyc6ICcwJScsXG4gICAgLy8gZ2hvc3QgcHJvcHNcbiAgICAnZ2hvc3QnOiAnbm8nLFxuICAgICdnaG9zdC1vZmZzZXQteSc6IDAsXG4gICAgJ2dob3N0LW9mZnNldC14JzogMCxcbiAgICAnZ2hvc3Qtb3BhY2l0eSc6IDAsXG4gICAgLy8gY29tcG91bmQgcHJvcHNcbiAgICAncGFkZGluZyc6IDAsXG4gICAgJ3BhZGRpbmctcmVsYXRpdmUtdG8nOiAnd2lkdGgnLFxuICAgICdwb3NpdGlvbic6ICdvcmlnaW4nLFxuICAgICdjb21wb3VuZC1zaXppbmctd3J0LWxhYmVscyc6ICdpbmNsdWRlJyxcbiAgICAnbWluLXdpZHRoJzogMCxcbiAgICAnbWluLXdpZHRoLWJpYXMtbGVmdCc6IDAsXG4gICAgJ21pbi13aWR0aC1iaWFzLXJpZ2h0JzogMCxcbiAgICAnbWluLWhlaWdodCc6IDAsXG4gICAgJ21pbi1oZWlnaHQtYmlhcy10b3AnOiAwLFxuICAgICdtaW4taGVpZ2h0LWJpYXMtYm90dG9tJzogMFxuICB9LCB7XG4gICAgLy8gbm9kZSBwaWUgYmdcbiAgICAncGllLXNpemUnOiAnMTAwJSdcbiAgfSwgW3tcbiAgICBuYW1lOiAncGllLXt7aX19LWJhY2tncm91bmQtY29sb3InLFxuICAgIHZhbHVlOiAnYmxhY2snXG4gIH0sIHtcbiAgICBuYW1lOiAncGllLXt7aX19LWJhY2tncm91bmQtc2l6ZScsXG4gICAgdmFsdWU6ICcwJSdcbiAgfSwge1xuICAgIG5hbWU6ICdwaWUte3tpfX0tYmFja2dyb3VuZC1vcGFjaXR5JyxcbiAgICB2YWx1ZTogMVxuICB9XS5yZWR1Y2UoZnVuY3Rpb24gKGNzcywgcHJvcCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHN0eWZuJDYucGllQmFja2dyb3VuZE47IGkrKykge1xuICAgICAgdmFyIG5hbWUgPSBwcm9wLm5hbWUucmVwbGFjZSgne3tpfX0nLCBpKTtcbiAgICAgIHZhciB2YWwgPSBwcm9wLnZhbHVlO1xuICAgICAgY3NzW25hbWVdID0gdmFsO1xuICAgIH1cblxuICAgIHJldHVybiBjc3M7XG4gIH0sIHt9KSwge1xuICAgIC8vIGVkZ2UgcHJvcHNcbiAgICAnbGluZS1zdHlsZSc6ICdzb2xpZCcsXG4gICAgJ2xpbmUtY29sb3InOiAnIzk5OScsXG4gICAgJ2xpbmUtZmlsbCc6ICdzb2xpZCcsXG4gICAgJ2xpbmUtY2FwJzogJ2J1dHQnLFxuICAgICdsaW5lLW9wYWNpdHknOiAxLFxuICAgICdsaW5lLWdyYWRpZW50LXN0b3AtY29sb3JzJzogJyM5OTknLFxuICAgICdsaW5lLWdyYWRpZW50LXN0b3AtcG9zaXRpb25zJzogJzAlJyxcbiAgICAnY29udHJvbC1wb2ludC1zdGVwLXNpemUnOiA0MCxcbiAgICAnY29udHJvbC1wb2ludC13ZWlnaHRzJzogMC41LFxuICAgICdzZWdtZW50LXdlaWdodHMnOiAwLjUsXG4gICAgJ3NlZ21lbnQtZGlzdGFuY2VzJzogMjAsXG4gICAgJ3RheGktdHVybic6ICc1MCUnLFxuICAgICd0YXhpLXR1cm4tbWluLWRpc3RhbmNlJzogMTAsXG4gICAgJ3RheGktZGlyZWN0aW9uJzogJ2F1dG8nLFxuICAgICdlZGdlLWRpc3RhbmNlcyc6ICdpbnRlcnNlY3Rpb24nLFxuICAgICdjdXJ2ZS1zdHlsZSc6ICdoYXlzdGFjaycsXG4gICAgJ2hheXN0YWNrLXJhZGl1cyc6IDAsXG4gICAgJ2Fycm93LXNjYWxlJzogMSxcbiAgICAnbG9vcC1kaXJlY3Rpb24nOiAnLTQ1ZGVnJyxcbiAgICAnbG9vcC1zd2VlcCc6ICctOTBkZWcnLFxuICAgICdzb3VyY2UtZGlzdGFuY2UtZnJvbS1ub2RlJzogMCxcbiAgICAndGFyZ2V0LWRpc3RhbmNlLWZyb20tbm9kZSc6IDAsXG4gICAgJ3NvdXJjZS1lbmRwb2ludCc6ICdvdXRzaWRlLXRvLW5vZGUnLFxuICAgICd0YXJnZXQtZW5kcG9pbnQnOiAnb3V0c2lkZS10by1ub2RlJyxcbiAgICAnbGluZS1kYXNoLXBhdHRlcm4nOiBbNiwgM10sXG4gICAgJ2xpbmUtZGFzaC1vZmZzZXQnOiAwXG4gIH0sIFt7XG4gICAgbmFtZTogJ2Fycm93LXNoYXBlJyxcbiAgICB2YWx1ZTogJ25vbmUnXG4gIH0sIHtcbiAgICBuYW1lOiAnYXJyb3ctY29sb3InLFxuICAgIHZhbHVlOiAnIzk5OSdcbiAgfSwge1xuICAgIG5hbWU6ICdhcnJvdy1maWxsJyxcbiAgICB2YWx1ZTogJ2ZpbGxlZCdcbiAgfV0ucmVkdWNlKGZ1bmN0aW9uIChjc3MsIHByb3ApIHtcbiAgICBzdHlmbiQ2LmFycm93UHJlZml4ZXMuZm9yRWFjaChmdW5jdGlvbiAocHJlZml4KSB7XG4gICAgICB2YXIgbmFtZSA9IHByZWZpeCArICctJyArIHByb3AubmFtZTtcbiAgICAgIHZhciB2YWwgPSBwcm9wLnZhbHVlO1xuICAgICAgY3NzW25hbWVdID0gdmFsO1xuICAgIH0pO1xuICAgIHJldHVybiBjc3M7XG4gIH0sIHt9KSk7XG4gIHZhciBwYXJzZWRQcm9wcyA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHByb3AgPSB0aGlzLnByb3BlcnRpZXNbaV07XG5cbiAgICBpZiAocHJvcC5wb2ludHNUbykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIG5hbWUgPSBwcm9wLm5hbWU7XG4gICAgdmFyIHZhbCA9IHJhd1Byb3BzW25hbWVdO1xuICAgIHZhciBwYXJzZWRQcm9wID0gdGhpcy5wYXJzZShuYW1lLCB2YWwpO1xuICAgIHBhcnNlZFByb3BzW25hbWVdID0gcGFyc2VkUHJvcDtcbiAgfVxuXG4gIF9wLmRlZmF1bHRQcm9wZXJ0aWVzID0gcGFyc2VkUHJvcHM7XG4gIHJldHVybiBfcC5kZWZhdWx0UHJvcGVydGllcztcbn07XG5cbnN0eWZuJDYuYWRkRGVmYXVsdFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VsZWN0b3IoJzpwYXJlbnQnKS5jc3Moe1xuICAgICdzaGFwZSc6ICdyZWN0YW5nbGUnLFxuICAgICdwYWRkaW5nJzogMTAsXG4gICAgJ2JhY2tncm91bmQtY29sb3InOiAnI2VlZScsXG4gICAgJ2JvcmRlci1jb2xvcic6ICcjY2NjJyxcbiAgICAnYm9yZGVyLXdpZHRoJzogMVxuICB9KS5zZWxlY3RvcignZWRnZScpLmNzcyh7XG4gICAgJ3dpZHRoJzogM1xuICB9KS5zZWxlY3RvcignOmxvb3AnKS5jc3Moe1xuICAgICdjdXJ2ZS1zdHlsZSc6ICdiZXppZXInXG4gIH0pLnNlbGVjdG9yKCdlZGdlOmNvbXBvdW5kJykuY3NzKHtcbiAgICAnY3VydmUtc3R5bGUnOiAnYmV6aWVyJyxcbiAgICAnc291cmNlLWVuZHBvaW50JzogJ291dHNpZGUtdG8tbGluZScsXG4gICAgJ3RhcmdldC1lbmRwb2ludCc6ICdvdXRzaWRlLXRvLWxpbmUnXG4gIH0pLnNlbGVjdG9yKCc6c2VsZWN0ZWQnKS5jc3Moe1xuICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyMwMTY5RDknLFxuICAgICdsaW5lLWNvbG9yJzogJyMwMTY5RDknLFxuICAgICdzb3VyY2UtYXJyb3ctY29sb3InOiAnIzAxNjlEOScsXG4gICAgJ3RhcmdldC1hcnJvdy1jb2xvcic6ICcjMDE2OUQ5JyxcbiAgICAnbWlkLXNvdXJjZS1hcnJvdy1jb2xvcic6ICcjMDE2OUQ5JyxcbiAgICAnbWlkLXRhcmdldC1hcnJvdy1jb2xvcic6ICcjMDE2OUQ5J1xuICB9KS5zZWxlY3RvcignOnBhcmVudDpzZWxlY3RlZCcpLmNzcyh7XG4gICAgJ2JhY2tncm91bmQtY29sb3InOiAnI0NDRTFGOScsXG4gICAgJ2JvcmRlci1jb2xvcic6ICcjYWVjOGU1J1xuICB9KS5zZWxlY3RvcignOmFjdGl2ZScpLmNzcyh7XG4gICAgJ292ZXJsYXktY29sb3InOiAnYmxhY2snLFxuICAgICdvdmVybGF5LXBhZGRpbmcnOiAxMCxcbiAgICAnb3ZlcmxheS1vcGFjaXR5JzogMC4yNVxuICB9KTtcbiAgdGhpcy5kZWZhdWx0TGVuZ3RoID0gdGhpcy5sZW5ndGg7XG59O1xuXG52YXIgc3R5Zm4kNyA9IHt9OyAvLyBhIGNhY2hpbmcgbGF5ZXIgZm9yIHByb3BlcnR5IHBhcnNpbmdcblxuc3R5Zm4kNy5wYXJzZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgcHJvcElzQnlwYXNzLCBwcm9wSXNGbGF0KSB7XG4gIHZhciBzZWxmID0gdGhpczsgLy8gZnVuY3Rpb24gdmFsdWVzIGNhbid0IGJlIGNhY2hlZCBpbiBhbGwgY2FzZXMsIGFuZCB0aGVyZSBpc24ndCBtdWNoIGJlbmVmaXQgb2YgY2FjaGluZyB0aGVtIGFueXdheVxuXG4gIGlmIChmbih2YWx1ZSkpIHtcbiAgICByZXR1cm4gc2VsZi5wYXJzZUltcGxXYXJuKG5hbWUsIHZhbHVlLCBwcm9wSXNCeXBhc3MsIHByb3BJc0ZsYXQpO1xuICB9XG5cbiAgdmFyIGZsYXRLZXkgPSBwcm9wSXNGbGF0ID09PSAnbWFwcGluZycgfHwgcHJvcElzRmxhdCA9PT0gdHJ1ZSB8fCBwcm9wSXNGbGF0ID09PSBmYWxzZSB8fCBwcm9wSXNGbGF0ID09IG51bGwgPyAnZG9udGNhcmUnIDogcHJvcElzRmxhdDtcbiAgdmFyIGJ5cGFzc0tleSA9IHByb3BJc0J5cGFzcyA/ICd0JyA6ICdmJztcbiAgdmFyIHZhbHVlS2V5ID0gJycgKyB2YWx1ZTtcbiAgdmFyIGFyZ0hhc2ggPSBoYXNoU3RyaW5ncyhuYW1lLCB2YWx1ZUtleSwgYnlwYXNzS2V5LCBmbGF0S2V5KTtcbiAgdmFyIHByb3BDYWNoZSA9IHNlbGYucHJvcENhY2hlID0gc2VsZi5wcm9wQ2FjaGUgfHwgW107XG4gIHZhciByZXQ7XG5cbiAgaWYgKCEocmV0ID0gcHJvcENhY2hlW2FyZ0hhc2hdKSkge1xuICAgIHJldCA9IHByb3BDYWNoZVthcmdIYXNoXSA9IHNlbGYucGFyc2VJbXBsV2FybihuYW1lLCB2YWx1ZSwgcHJvcElzQnlwYXNzLCBwcm9wSXNGbGF0KTtcbiAgfSAvLyAtIGJ5cGFzc2VzIGNhbid0IGJlIHNoYXJlZCBiL2MgdGhlIHZhbHVlIGNhbiBiZSBjaGFuZ2VkIGJ5IGFuaW1hdGlvbnMgb3Igb3RoZXJ3aXNlIG92ZXJyaWRkZW5cbiAgLy8gLSBtYXBwaW5ncyBjYW4ndCBiZSBzaGFyZWQgYi9jIG1hcHBpbmdzIGFyZSBwZXItZWxlbWVudFxuXG5cbiAgaWYgKHByb3BJc0J5cGFzcyB8fCBwcm9wSXNGbGF0ID09PSAnbWFwcGluZycpIHtcbiAgICAvLyBuZWVkIGEgY29weSBzaW5jZSBwcm9wcyBhcmUgbXV0YXRlZCBsYXRlciBpbiB0aGVpciBsaWZlY3ljbGVzXG4gICAgcmV0ID0gY29weShyZXQpO1xuXG4gICAgaWYgKHJldCkge1xuICAgICAgcmV0LnZhbHVlID0gY29weShyZXQudmFsdWUpOyAvLyBiZWNhdXNlIGl0IGNvdWxkIGJlIGFuIGFycmF5LCBlLmcuIGNvbG91clxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59O1xuXG5zdHlmbiQ3LnBhcnNlSW1wbFdhcm4gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIHByb3BJc0J5cGFzcywgcHJvcElzRmxhdCkge1xuICB2YXIgcHJvcCA9IHRoaXMucGFyc2VJbXBsKG5hbWUsIHZhbHVlLCBwcm9wSXNCeXBhc3MsIHByb3BJc0ZsYXQpO1xuXG4gIGlmICghcHJvcCAmJiB2YWx1ZSAhPSBudWxsKSB7XG4gICAgd2FybihcIlRoZSBzdHlsZSBwcm9wZXJ0eSBgXCIuY29uY2F0KG5hbWUsIFwiOiBcIikuY29uY2F0KHZhbHVlLCBcImAgaXMgaW52YWxpZFwiKSk7XG4gIH1cblxuICBpZiAocHJvcCAmJiAocHJvcC5uYW1lID09PSAnd2lkdGgnIHx8IHByb3AubmFtZSA9PT0gJ2hlaWdodCcpICYmIHZhbHVlID09PSAnbGFiZWwnKSB7XG4gICAgd2FybignVGhlIHN0eWxlIHZhbHVlIG9mIGBsYWJlbGAgaXMgZGVwcmVjYXRlZCBmb3IgYCcgKyBwcm9wLm5hbWUgKyAnYCcpO1xuICB9XG5cbiAgcmV0dXJuIHByb3A7XG59OyAvLyBwYXJzZSBhIHByb3BlcnR5OyByZXR1cm4gbnVsbCBvbiBpbnZhbGlkOyByZXR1cm4gcGFyc2VkIHByb3BlcnR5IG90aGVyd2lzZVxuLy8gZmllbGRzIDpcbi8vIC0gbmFtZSA6IHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eVxuLy8gLSB2YWx1ZSA6IHRoZSBwYXJzZWQsIG5hdGl2ZS10eXBlZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHlcbi8vIC0gc3RyVmFsdWUgOiBhIHN0cmluZyB2YWx1ZSB0aGF0IHJlcHJlc2VudHMgdGhlIHByb3BlcnR5IHZhbHVlIGluIHZhbGlkIGNzc1xuLy8gLSBieXBhc3MgOiB0cnVlIGlmZiB0aGUgcHJvcGVydHkgaXMgYSBieXBhc3MgcHJvcGVydHlcblxuXG5zdHlmbiQ3LnBhcnNlSW1wbCA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgcHJvcElzQnlwYXNzLCBwcm9wSXNGbGF0KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgbmFtZSA9IGNhbWVsMmRhc2gobmFtZSk7IC8vIG1ha2Ugc3VyZSB0aGUgcHJvcGVydHkgbmFtZSBpcyBpbiBkYXNoIGZvcm0gKGUuZy4gJ3Byb3BlcnR5LW5hbWUnIG5vdCAncHJvcGVydHlOYW1lJylcblxuICB2YXIgcHJvcGVydHkgPSBzZWxmLnByb3BlcnRpZXNbbmFtZV07XG4gIHZhciBwYXNzZWRWYWx1ZSA9IHZhbHVlO1xuICB2YXIgdHlwZXMgPSBzZWxmLnR5cGVzO1xuXG4gIGlmICghcHJvcGVydHkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyByZXR1cm4gbnVsbCBvbiBwcm9wZXJ0eSBvZiB1bmtub3duIG5hbWVcblxuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gY2FuJ3QgYXNzaWduIHVuZGVmaW5lZFxuICAvLyB0aGUgcHJvcGVydHkgbWF5IGJlIGFuIGFsaWFzXG5cblxuICBpZiAocHJvcGVydHkuYWxpYXMpIHtcbiAgICBwcm9wZXJ0eSA9IHByb3BlcnR5LnBvaW50c1RvO1xuICAgIG5hbWUgPSBwcm9wZXJ0eS5uYW1lO1xuICB9XG5cbiAgdmFyIHZhbHVlSXNTdHJpbmcgPSBzdHJpbmcodmFsdWUpO1xuXG4gIGlmICh2YWx1ZUlzU3RyaW5nKSB7XG4gICAgLy8gdHJpbSB0aGUgdmFsdWUgdG8gbWFrZSBwYXJzaW5nIGVhc2llclxuICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xuICB9XG5cbiAgdmFyIHR5cGUgPSBwcm9wZXJ0eS50eXBlO1xuXG4gIGlmICghdHlwZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9IC8vIG5vIHR5cGUsIG5vIGx1Y2tcbiAgLy8gY2hlY2sgaWYgYnlwYXNzIGlzIG51bGwgb3IgZW1wdHkgc3RyaW5nIChpLmUuIGluZGljYXRpb24gdG8gZGVsZXRlIGJ5cGFzcyBwcm9wZXJ0eSlcblxuXG4gIGlmIChwcm9wSXNCeXBhc3MgJiYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGJ5cGFzczogdHJ1ZSxcbiAgICAgIGRlbGV0ZUJ5cGFzczogdHJ1ZVxuICAgIH07XG4gIH0gLy8gY2hlY2sgaWYgdmFsdWUgaXMgYSBmdW5jdGlvbiB1c2VkIGFzIGEgbWFwcGVyXG5cblxuICBpZiAoZm4odmFsdWUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBzdHJWYWx1ZTogJ2ZuJyxcbiAgICAgIG1hcHBlZDogdHlwZXMuZm4sXG4gICAgICBieXBhc3M6IHByb3BJc0J5cGFzc1xuICAgIH07XG4gIH0gLy8gY2hlY2sgaWYgdmFsdWUgaXMgbWFwcGVkXG5cblxuICB2YXIgZGF0YSwgbWFwRGF0YTtcblxuICBpZiAoIXZhbHVlSXNTdHJpbmcgfHwgcHJvcElzRmxhdCB8fCB2YWx1ZS5sZW5ndGggPCA3IHx8IHZhbHVlWzFdICE9PSAnYScpIDsgZWxzZSBpZiAodmFsdWUubGVuZ3RoID49IDcgJiYgdmFsdWVbMF0gPT09ICdkJyAmJiAoZGF0YSA9IG5ldyBSZWdFeHAodHlwZXMuZGF0YS5yZWdleCkuZXhlYyh2YWx1ZSkpKSB7XG4gICAgaWYgKHByb3BJc0J5cGFzcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gbWFwcGVycyBub3QgYWxsb3dlZCBpbiBieXBhc3NcblxuXG4gICAgdmFyIG1hcHBlZCA9IHR5cGVzLmRhdGE7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogZGF0YSxcbiAgICAgIHN0clZhbHVlOiAnJyArIHZhbHVlLFxuICAgICAgbWFwcGVkOiBtYXBwZWQsXG4gICAgICBmaWVsZDogZGF0YVsxXSxcbiAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgfTtcbiAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPj0gMTAgJiYgdmFsdWVbMF0gPT09ICdtJyAmJiAobWFwRGF0YSA9IG5ldyBSZWdFeHAodHlwZXMubWFwRGF0YS5yZWdleCkuZXhlYyh2YWx1ZSkpKSB7XG4gICAgaWYgKHByb3BJc0J5cGFzcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gbWFwcGVycyBub3QgYWxsb3dlZCBpbiBieXBhc3NcblxuXG4gICAgaWYgKHR5cGUubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGltcG9zc2libGUgdG8gbWFwIHRvIG51bVxuXG5cbiAgICB2YXIgX21hcHBlZCA9IHR5cGVzLm1hcERhdGE7IC8vIHdlIGNhbiBtYXAgb25seSBpZiB0aGUgdHlwZSBpcyBhIGNvbG91ciBvciBhIG51bWJlclxuXG4gICAgaWYgKCEodHlwZS5jb2xvciB8fCB0eXBlLm51bWJlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWVNaW4gPSB0aGlzLnBhcnNlKG5hbWUsIG1hcERhdGFbNF0pOyAvLyBwYXJzZSB0byB2YWxpZGF0ZVxuXG4gICAgaWYgKCF2YWx1ZU1pbiB8fCB2YWx1ZU1pbi5tYXBwZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGNhbid0IGJlIGludmFsaWQgb3IgbWFwcGVkXG5cblxuICAgIHZhciB2YWx1ZU1heCA9IHRoaXMucGFyc2UobmFtZSwgbWFwRGF0YVs1XSk7IC8vIHBhcnNlIHRvIHZhbGlkYXRlXG5cbiAgICBpZiAoIXZhbHVlTWF4IHx8IHZhbHVlTWF4Lm1hcHBlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gY2FuJ3QgYmUgaW52YWxpZCBvciBtYXBwZWRcbiAgICAvLyBjaGVjayBpZiB2YWx1ZU1pbiBhbmQgdmFsdWVNYXggYXJlIHRoZSBzYW1lXG5cblxuICAgIGlmICh2YWx1ZU1pbi5wZlZhbHVlID09PSB2YWx1ZU1heC5wZlZhbHVlIHx8IHZhbHVlTWluLnN0clZhbHVlID09PSB2YWx1ZU1heC5zdHJWYWx1ZSkge1xuICAgICAgd2FybignYCcgKyBuYW1lICsgJzogJyArIHZhbHVlICsgJ2AgaXMgbm90IGEgdmFsaWQgbWFwcGVyIGJlY2F1c2UgdGhlIG91dHB1dCByYW5nZSBpcyB6ZXJvOyBjb252ZXJ0aW5nIHRvIGAnICsgbmFtZSArICc6ICcgKyB2YWx1ZU1pbi5zdHJWYWx1ZSArICdgJyk7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZShuYW1lLCB2YWx1ZU1pbi5zdHJWYWx1ZSk7IC8vIGNhbid0IG1ha2UgbXVjaCBvZiBhIG1hcHBlciB3aXRob3V0IGEgcmFuZ2VcbiAgICB9IGVsc2UgaWYgKHR5cGUuY29sb3IpIHtcbiAgICAgIHZhciBjMSA9IHZhbHVlTWluLnZhbHVlO1xuICAgICAgdmFyIGMyID0gdmFsdWVNYXgudmFsdWU7XG4gICAgICB2YXIgc2FtZSA9IGMxWzBdID09PSBjMlswXSAvLyByZWRcbiAgICAgICYmIGMxWzFdID09PSBjMlsxXSAvLyBncmVlblxuICAgICAgJiYgYzFbMl0gPT09IGMyWzJdIC8vIGJsdWVcbiAgICAgICYmICggLy8gb3B0aW9uYWwgYWxwaGFcbiAgICAgIGMxWzNdID09PSBjMlszXSAvLyBzYW1lIGFscGhhIG91dHJpZ2h0XG4gICAgICB8fCAoYzFbM10gPT0gbnVsbCB8fCBjMVszXSA9PT0gMSkgJiYgKCAvLyBmdWxsIG9wYWNpdHkgZm9yIGNvbG91ciAxP1xuICAgICAgYzJbM10gPT0gbnVsbCB8fCBjMlszXSA9PT0gMSkgLy8gZnVsbCBvcGFjaXR5IGZvciBjb2xvdXIgMj9cbiAgICAgICk7XG5cbiAgICAgIGlmIChzYW1lKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gY2FuJ3QgbWFrZSBhIG1hcHBlciB3aXRob3V0IGEgcmFuZ2VcblxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IG1hcERhdGEsXG4gICAgICBzdHJWYWx1ZTogJycgKyB2YWx1ZSxcbiAgICAgIG1hcHBlZDogX21hcHBlZCxcbiAgICAgIGZpZWxkOiBtYXBEYXRhWzFdLFxuICAgICAgZmllbGRNaW46IHBhcnNlRmxvYXQobWFwRGF0YVsyXSksXG4gICAgICAvLyBtaW4gJiBtYXggYXJlIG51bWVyaWNcbiAgICAgIGZpZWxkTWF4OiBwYXJzZUZsb2F0KG1hcERhdGFbM10pLFxuICAgICAgdmFsdWVNaW46IHZhbHVlTWluLnZhbHVlLFxuICAgICAgdmFsdWVNYXg6IHZhbHVlTWF4LnZhbHVlLFxuICAgICAgYnlwYXNzOiBwcm9wSXNCeXBhc3NcbiAgICB9O1xuICB9XG5cbiAgaWYgKHR5cGUubXVsdGlwbGUgJiYgcHJvcElzRmxhdCAhPT0gJ211bHRpcGxlJykge1xuICAgIHZhciB2YWxzO1xuXG4gICAgaWYgKHZhbHVlSXNTdHJpbmcpIHtcbiAgICAgIHZhbHMgPSB2YWx1ZS5zcGxpdCgvXFxzKy8pO1xuICAgIH0gZWxzZSBpZiAoYXJyYXkodmFsdWUpKSB7XG4gICAgICB2YWxzID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHMgPSBbdmFsdWVdO1xuICAgIH1cblxuICAgIGlmICh0eXBlLmV2ZW5NdWx0aXBsZSAmJiB2YWxzLmxlbmd0aCAlIDIgIT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciB2YWxBcnIgPSBbXTtcbiAgICB2YXIgdW5pdHNBcnIgPSBbXTtcbiAgICB2YXIgcGZWYWxBcnIgPSBbXTtcbiAgICB2YXIgc3RyVmFsID0gJyc7XG4gICAgdmFyIGhhc0VudW0gPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHAgPSBzZWxmLnBhcnNlKG5hbWUsIHZhbHNbaV0sIHByb3BJc0J5cGFzcywgJ211bHRpcGxlJyk7XG4gICAgICBoYXNFbnVtID0gaGFzRW51bSB8fCBzdHJpbmcocC52YWx1ZSk7XG4gICAgICB2YWxBcnIucHVzaChwLnZhbHVlKTtcbiAgICAgIHBmVmFsQXJyLnB1c2gocC5wZlZhbHVlICE9IG51bGwgPyBwLnBmVmFsdWUgOiBwLnZhbHVlKTtcbiAgICAgIHVuaXRzQXJyLnB1c2gocC51bml0cyk7XG4gICAgICBzdHJWYWwgKz0gKGkgPiAwID8gJyAnIDogJycpICsgcC5zdHJWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZS52YWxpZGF0ZSAmJiAhdHlwZS52YWxpZGF0ZSh2YWxBcnIsIHVuaXRzQXJyKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUuc2luZ2xlRW51bSAmJiBoYXNFbnVtKSB7XG4gICAgICBpZiAodmFsQXJyLmxlbmd0aCA9PT0gMSAmJiBzdHJpbmcodmFsQXJyWzBdKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgdmFsdWU6IHZhbEFyclswXSxcbiAgICAgICAgICBzdHJWYWx1ZTogdmFsQXJyWzBdLFxuICAgICAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHZhbHVlOiB2YWxBcnIsXG4gICAgICBwZlZhbHVlOiBwZlZhbEFycixcbiAgICAgIHN0clZhbHVlOiBzdHJWYWwsXG4gICAgICBieXBhc3M6IHByb3BJc0J5cGFzcyxcbiAgICAgIHVuaXRzOiB1bml0c0FyclxuICAgIH07XG4gIH0gLy8gc2V2ZXJhbCB0eXBlcyBhbHNvIGFsbG93IGVudW1zXG5cblxuICB2YXIgY2hlY2tFbnVtcyA9IGZ1bmN0aW9uIGNoZWNrRW51bXMoKSB7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHR5cGUuZW51bXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgZW4gPSB0eXBlLmVudW1zW19pXTtcblxuICAgICAgaWYgKGVuID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIHN0clZhbHVlOiAnJyArIHZhbHVlLFxuICAgICAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07IC8vIGNoZWNrIHRoZSB0eXBlIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIG9iamVjdFxuXG5cbiAgaWYgKHR5cGUubnVtYmVyKSB7XG4gICAgdmFyIHVuaXRzO1xuICAgIHZhciBpbXBsaWNpdFVuaXRzID0gJ3B4JzsgLy8gbm90IHNldCA9PiBweFxuXG4gICAgaWYgKHR5cGUudW5pdHMpIHtcbiAgICAgIC8vIHVzZSBzcGVjaWZpZWQgdW5pdHMgaWYgc2V0XG4gICAgICB1bml0cyA9IHR5cGUudW5pdHM7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUuaW1wbGljaXRVbml0cykge1xuICAgICAgaW1wbGljaXRVbml0cyA9IHR5cGUuaW1wbGljaXRVbml0cztcbiAgICB9XG5cbiAgICBpZiAoIXR5cGUudW5pdGxlc3MpIHtcbiAgICAgIGlmICh2YWx1ZUlzU3RyaW5nKSB7XG4gICAgICAgIHZhciB1bml0c1JlZ2V4ID0gJ3B4fGVtJyArICh0eXBlLmFsbG93UGVyY2VudCA/ICd8XFxcXCUnIDogJycpO1xuXG4gICAgICAgIGlmICh1bml0cykge1xuICAgICAgICAgIHVuaXRzUmVnZXggPSB1bml0cztcbiAgICAgICAgfSAvLyBvbmx5IGFsbG93IGV4cGxpY2l0IHVuaXRzIGlmIHNvIHNldFxuXG5cbiAgICAgICAgdmFyIG1hdGNoID0gdmFsdWUubWF0Y2goJ14oJyArIG51bWJlciQxICsgJykoJyArIHVuaXRzUmVnZXggKyAnKT8nICsgJyQnKTtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB2YWx1ZSA9IG1hdGNoWzFdO1xuICAgICAgICAgIHVuaXRzID0gbWF0Y2hbMl0gfHwgaW1wbGljaXRVbml0cztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdW5pdHMgfHwgdHlwZS5pbXBsaWNpdFVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gaW1wbGljaXRVbml0czsgLy8gaW1wbGljaXRseSBweCBpZiB1bnNwZWNpZmllZFxuICAgICAgfVxuICAgIH1cblxuICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7IC8vIGlmIG5vdCBhIG51bWJlciBhbmQgZW51bXMgbm90IGFsbG93ZWQsIHRoZW4gdGhlIHZhbHVlIGlzIGludmFsaWRcblxuICAgIGlmIChpc05hTih2YWx1ZSkgJiYgdHlwZS5lbnVtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIGNoZWNrIGlmIHRoaXMgbnVtYmVyIHR5cGUgYWxzbyBhY2NlcHRzIHNwZWNpYWwga2V5d29yZHMgaW4gcGxhY2Ugb2YgbnVtYmVyc1xuICAgIC8vIChpLmUuIGBsZWZ0YCwgYGF1dG9gLCBldGMpXG5cblxuICAgIGlmIChpc05hTih2YWx1ZSkgJiYgdHlwZS5lbnVtcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZSA9IHBhc3NlZFZhbHVlO1xuICAgICAgcmV0dXJuIGNoZWNrRW51bXMoKTtcbiAgICB9IC8vIGNoZWNrIGlmIHZhbHVlIG11c3QgYmUgYW4gaW50ZWdlclxuXG5cbiAgICBpZiAodHlwZS5pbnRlZ2VyICYmICFpbnRlZ2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSAvLyBjaGVjayB2YWx1ZSBpcyB3aXRoaW4gcmFuZ2VcblxuXG4gICAgaWYgKHR5cGUubWluICE9PSB1bmRlZmluZWQgJiYgKHZhbHVlIDwgdHlwZS5taW4gfHwgdHlwZS5zdHJpY3RNaW4gJiYgdmFsdWUgPT09IHR5cGUubWluKSB8fCB0eXBlLm1heCAhPT0gdW5kZWZpbmVkICYmICh2YWx1ZSA+IHR5cGUubWF4IHx8IHR5cGUuc3RyaWN0TWF4ICYmIHZhbHVlID09PSB0eXBlLm1heCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciByZXQgPSB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgc3RyVmFsdWU6ICcnICsgdmFsdWUgKyAodW5pdHMgPyB1bml0cyA6ICcnKSxcbiAgICAgIHVuaXRzOiB1bml0cyxcbiAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgfTsgLy8gbm9ybWFsaXNlIHZhbHVlIGluIHBpeGVsc1xuXG4gICAgaWYgKHR5cGUudW5pdGxlc3MgfHwgdW5pdHMgIT09ICdweCcgJiYgdW5pdHMgIT09ICdlbScpIHtcbiAgICAgIHJldC5wZlZhbHVlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldC5wZlZhbHVlID0gdW5pdHMgPT09ICdweCcgfHwgIXVuaXRzID8gdmFsdWUgOiB0aGlzLmdldEVtU2l6ZUluUGl4ZWxzKCkgKiB2YWx1ZTtcbiAgICB9IC8vIG5vcm1hbGlzZSB2YWx1ZSBpbiBtc1xuXG5cbiAgICBpZiAodW5pdHMgPT09ICdtcycgfHwgdW5pdHMgPT09ICdzJykge1xuICAgICAgcmV0LnBmVmFsdWUgPSB1bml0cyA9PT0gJ21zJyA/IHZhbHVlIDogMTAwMCAqIHZhbHVlO1xuICAgIH0gLy8gbm9ybWFsaXNlIHZhbHVlIGluIHJhZFxuXG5cbiAgICBpZiAodW5pdHMgPT09ICdkZWcnIHx8IHVuaXRzID09PSAncmFkJykge1xuICAgICAgcmV0LnBmVmFsdWUgPSB1bml0cyA9PT0gJ3JhZCcgPyB2YWx1ZSA6IGRlZzJyYWQodmFsdWUpO1xuICAgIH0gLy8gbm9ybWFsaXplIHZhbHVlIGluICVcblxuXG4gICAgaWYgKHVuaXRzID09PSAnJScpIHtcbiAgICAgIHJldC5wZlZhbHVlID0gdmFsdWUgLyAxMDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfSBlbHNlIGlmICh0eXBlLnByb3BMaXN0KSB7XG4gICAgdmFyIHByb3BzID0gW107XG4gICAgdmFyIHByb3BzU3RyID0gJycgKyB2YWx1ZTtcblxuICAgIGlmIChwcm9wc1N0ciA9PT0gJ25vbmUnKSA7IGVsc2Uge1xuICAgICAgLy8gZ28gb3ZlciBlYWNoIHByb3BcbiAgICAgIHZhciBwcm9wc1NwbGl0ID0gcHJvcHNTdHIuc3BsaXQoL1xccyosXFxzKnxcXHMrLyk7XG5cbiAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHByb3BzU3BsaXQubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wc1NwbGl0W19pMl0udHJpbSgpO1xuXG4gICAgICAgIGlmIChzZWxmLnByb3BlcnRpZXNbcHJvcE5hbWVdKSB7XG4gICAgICAgICAgcHJvcHMucHVzaChwcm9wTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2FybignYCcgKyBwcm9wTmFtZSArICdgIGlzIG5vdCBhIHZhbGlkIHByb3BlcnR5IG5hbWUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IHByb3BzLFxuICAgICAgc3RyVmFsdWU6IHByb3BzLmxlbmd0aCA9PT0gMCA/ICdub25lJyA6IHByb3BzLmpvaW4oJyAnKSxcbiAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlLmNvbG9yKSB7XG4gICAgdmFyIHR1cGxlID0gY29sb3IydHVwbGUodmFsdWUpO1xuXG4gICAgaWYgKCF0dXBsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogdHVwbGUsXG4gICAgICBwZlZhbHVlOiB0dXBsZSxcbiAgICAgIHN0clZhbHVlOiAncmdiKCcgKyB0dXBsZVswXSArICcsJyArIHR1cGxlWzFdICsgJywnICsgdHVwbGVbMl0gKyAnKScsXG4gICAgICAvLyBuLmIuIG5vIHNwYWNlcyBiL2Mgb2YgbXVsdGlwbGUgc3VwcG9ydFxuICAgICAgYnlwYXNzOiBwcm9wSXNCeXBhc3NcbiAgICB9O1xuICB9IGVsc2UgaWYgKHR5cGUucmVnZXggfHwgdHlwZS5yZWdleGVzKSB7XG4gICAgLy8gZmlyc3QgY2hlY2sgZW51bXNcbiAgICBpZiAodHlwZS5lbnVtcykge1xuICAgICAgdmFyIGVudW1Qcm9wID0gY2hlY2tFbnVtcygpO1xuXG4gICAgICBpZiAoZW51bVByb3ApIHtcbiAgICAgICAgcmV0dXJuIGVudW1Qcm9wO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZWdleGVzID0gdHlwZS5yZWdleGVzID8gdHlwZS5yZWdleGVzIDogW3R5cGUucmVnZXhdO1xuXG4gICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgcmVnZXhlcy5sZW5ndGg7IF9pMysrKSB7XG4gICAgICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4ZXNbX2kzXSk7IC8vIG1ha2UgYSByZWdleCBmcm9tIHRoZSB0eXBlIHN0cmluZ1xuXG4gICAgICB2YXIgbSA9IHJlZ2V4LmV4ZWModmFsdWUpO1xuXG4gICAgICBpZiAobSkge1xuICAgICAgICAvLyByZWdleCBtYXRjaGVzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICB2YWx1ZTogdHlwZS5zaW5nbGVSZWdleE1hdGNoVmFsdWUgPyBtWzFdIDogbSxcbiAgICAgICAgICBzdHJWYWx1ZTogJycgKyB2YWx1ZSxcbiAgICAgICAgICBieXBhc3M6IHByb3BJc0J5cGFzc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsOyAvLyBkaWRuJ3QgbWF0Y2ggYW55XG4gIH0gZWxzZSBpZiAodHlwZS5zdHJpbmcpIHtcbiAgICAvLyBqdXN0IHJldHVyblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6ICcnICsgdmFsdWUsXG4gICAgICBzdHJWYWx1ZTogJycgKyB2YWx1ZSxcbiAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlLmVudW1zKSB7XG4gICAgLy8gY2hlY2sgZW51bXMgbGFzdCBiZWNhdXNlIGl0J3MgYSBjb21ibyB0eXBlIGluIG90aGVyc1xuICAgIHJldHVybiBjaGVja0VudW1zKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7IC8vIG5vdCBhIHR5cGUgd2UgY2FuIGhhbmRsZVxuICB9XG59O1xuXG52YXIgU3R5bGUgPSBmdW5jdGlvbiBTdHlsZShjeSkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3R5bGUpKSB7XG4gICAgcmV0dXJuIG5ldyBTdHlsZShjeSk7XG4gIH1cblxuICBpZiAoIWNvcmUoY3kpKSB7XG4gICAgZXJyb3IoJ0Egc3R5bGUgbXVzdCBoYXZlIGEgY29yZSByZWZlcmVuY2UnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLl9wcml2YXRlID0ge1xuICAgIGN5OiBjeSxcbiAgICBjb3JlU3R5bGU6IHt9XG4gIH07XG4gIHRoaXMubGVuZ3RoID0gMDtcbiAgdGhpcy5yZXNldFRvRGVmYXVsdCgpO1xufTtcblxudmFyIHN0eWZuJDggPSBTdHlsZS5wcm90b3R5cGU7XG5cbnN0eWZuJDguaW5zdGFuY2VTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnc3R5bGUnO1xufTsgLy8gcmVtb3ZlIGFsbCBjb250ZXh0c1xuXG5cbnN0eWZuJDguY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gIHZhciBjeSA9IF9wLmN5O1xuICB2YXIgZWxlcyA9IGN5LmVsZW1lbnRzKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpc1tpXSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRoaXMubGVuZ3RoID0gMDtcbiAgX3AuY29udGV4dFN0eWxlcyA9IHt9O1xuICBfcC5wcm9wRGlmZnMgPSB7fTtcbiAgdGhpcy5jbGVhbkVsZW1lbnRzKGVsZXMsIHRydWUpO1xuICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgIHZhciBlbGVfcCA9IGVsZVswXS5fcHJpdmF0ZTtcbiAgICBlbGVfcC5zdHlsZURpcnR5ID0gdHJ1ZTtcbiAgICBlbGVfcC5hcHBsaWVkSW5pdFN0eWxlID0gZmFsc2U7XG4gIH0pO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnN0eWZuJDgucmVzZXRUb0RlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2xlYXIoKTtcbiAgdGhpcy5hZGREZWZhdWx0U3R5bGVzaGVldCgpO1xuICByZXR1cm4gdGhpcztcbn07IC8vIGJ1aWxkcyBhIHN0eWxlIG9iamVjdCBmb3IgdGhlICdjb3JlJyBzZWxlY3RvclxuXG5cbnN0eWZuJDguY29yZSA9IGZ1bmN0aW9uIChwcm9wTmFtZSkge1xuICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5jb3JlU3R5bGVbcHJvcE5hbWVdIHx8IHRoaXMuZ2V0RGVmYXVsdFByb3BlcnR5KHByb3BOYW1lKTtcbn07IC8vIGNyZWF0ZSBhIG5ldyBjb250ZXh0IGZyb20gdGhlIHNwZWNpZmllZCBzZWxlY3RvciBzdHJpbmcgYW5kIHN3aXRjaCB0byB0aGF0IGNvbnRleHRcblxuXG5zdHlmbiQ4LnNlbGVjdG9yID0gZnVuY3Rpb24gKHNlbGVjdG9yU3RyKSB7XG4gIC8vICdjb3JlJyBpcyBhIHNwZWNpYWwgY2FzZSBhbmQgZG9lcyBub3QgbmVlZCBhIHNlbGVjdG9yXG4gIHZhciBzZWxlY3RvciA9IHNlbGVjdG9yU3RyID09PSAnY29yZScgPyBudWxsIDogbmV3IFNlbGVjdG9yKHNlbGVjdG9yU3RyKTtcbiAgdmFyIGkgPSB0aGlzLmxlbmd0aCsrOyAvLyBuZXcgY29udGV4dCBtZWFucyBuZXcgaW5kZXhcblxuICB0aGlzW2ldID0ge1xuICAgIHNlbGVjdG9yOiBzZWxlY3RvcixcbiAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICBtYXBwZWRQcm9wZXJ0aWVzOiBbXSxcbiAgICBpbmRleDogaVxuICB9O1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07IC8vIGFkZCBvbmUgb3IgbWFueSBjc3MgcnVsZXMgdG8gdGhlIGN1cnJlbnQgY29udGV4dFxuXG5cbnN0eWZuJDguY3NzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgIHZhciBtYXAgPSBhcmdzWzBdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBwcm9wID0gc2VsZi5wcm9wZXJ0aWVzW2ldO1xuICAgICAgdmFyIG1hcFZhbCA9IG1hcFtwcm9wLm5hbWVdO1xuXG4gICAgICBpZiAobWFwVmFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFwVmFsID0gbWFwW2Rhc2gyY2FtZWwocHJvcC5uYW1lKV07XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXBWYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNzc1J1bGUocHJvcC5uYW1lLCBtYXBWYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgIHRoaXMuY3NzUnVsZShhcmdzWzBdLCBhcmdzWzFdKTtcbiAgfSAvLyBkbyBub3RoaW5nIGlmIGFyZ3MgYXJlIGludmFsaWRcblxuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuc3R5Zm4kOC5zdHlsZSA9IHN0eWZuJDguY3NzOyAvLyBhZGQgYSBzaW5nbGUgY3NzIHJ1bGUgdG8gdGhlIGN1cnJlbnQgY29udGV4dFxuXG5zdHlmbiQ4LmNzc1J1bGUgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgLy8gbmFtZS12YWx1ZSBwYWlyXG4gIHZhciBwcm9wZXJ0eSA9IHRoaXMucGFyc2UobmFtZSwgdmFsdWUpOyAvLyBhZGQgcHJvcGVydHkgdG8gY3VycmVudCBjb250ZXh0IGlmIHZhbGlkXG5cbiAgaWYgKHByb3BlcnR5KSB7XG4gICAgdmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7XG4gICAgdGhpc1tpXS5wcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpO1xuICAgIHRoaXNbaV0ucHJvcGVydGllc1twcm9wZXJ0eS5uYW1lXSA9IHByb3BlcnR5OyAvLyBhbGxvdyBhY2Nlc3MgYnkgbmFtZSBhcyB3ZWxsXG5cbiAgICBpZiAocHJvcGVydHkubmFtZS5tYXRjaCgvcGllLShcXGQrKS1iYWNrZ3JvdW5kLXNpemUvKSAmJiBwcm9wZXJ0eS52YWx1ZSkge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5oYXNQaWUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9wZXJ0eS5tYXBwZWQpIHtcbiAgICAgIHRoaXNbaV0ubWFwcGVkUHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTtcbiAgICB9IC8vIGFkZCB0byBjb3JlIHN0eWxlIGlmIG5lY2Vzc2FyeVxuXG5cbiAgICB2YXIgY3VycmVudFNlbGVjdG9ySXNDb3JlID0gIXRoaXNbaV0uc2VsZWN0b3I7XG5cbiAgICBpZiAoY3VycmVudFNlbGVjdG9ySXNDb3JlKSB7XG4gICAgICB0aGlzLl9wcml2YXRlLmNvcmVTdHlsZVtwcm9wZXJ0eS5uYW1lXSA9IHByb3BlcnR5O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuc3R5Zm4kOC5hcHBlbmQgPSBmdW5jdGlvbiAoc3R5bGUpIHtcbiAgaWYgKHN0eWxlc2hlZXQoc3R5bGUpKSB7XG4gICAgc3R5bGUuYXBwZW5kVG9TdHlsZSh0aGlzKTtcbiAgfSBlbHNlIGlmIChhcnJheShzdHlsZSkpIHtcbiAgICB0aGlzLmFwcGVuZEZyb21Kc29uKHN0eWxlKTtcbiAgfSBlbHNlIGlmIChzdHJpbmcoc3R5bGUpKSB7XG4gICAgdGhpcy5hcHBlbmRGcm9tU3RyaW5nKHN0eWxlKTtcbiAgfSAvLyB5b3UgcHJvYmFibHkgd291bGRuJ3Qgd2FudCB0byBhcHBlbmQgYSBTdHlsZSwgc2luY2UgeW91J2QgZHVwbGljYXRlIHRoZSBkZWZhdWx0IHBhcnRzXG5cblxuICByZXR1cm4gdGhpcztcbn07IC8vIHN0YXRpYyBmdW5jdGlvblxuXG5cblN0eWxlLmZyb21Kc29uID0gZnVuY3Rpb24gKGN5LCBqc29uKSB7XG4gIHZhciBzdHlsZSA9IG5ldyBTdHlsZShjeSk7XG4gIHN0eWxlLmZyb21Kc29uKGpzb24pO1xuICByZXR1cm4gc3R5bGU7XG59O1xuXG5TdHlsZS5mcm9tU3RyaW5nID0gZnVuY3Rpb24gKGN5LCBzdHJpbmcpIHtcbiAgcmV0dXJuIG5ldyBTdHlsZShjeSkuZnJvbVN0cmluZyhzdHJpbmcpO1xufTtcblxuW3N0eWZuLCBzdHlmbiQxLCBzdHlmbiQyLCBzdHlmbiQzLCBzdHlmbiQ0LCBzdHlmbiQ1LCBzdHlmbiQ2LCBzdHlmbiQ3XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICBleHRlbmQoc3R5Zm4kOCwgcHJvcHMpO1xufSk7XG5TdHlsZS50eXBlcyA9IHN0eWZuJDgudHlwZXM7XG5TdHlsZS5wcm9wZXJ0aWVzID0gc3R5Zm4kOC5wcm9wZXJ0aWVzO1xuU3R5bGUucHJvcGVydHlHcm91cHMgPSBzdHlmbiQ4LnByb3BlcnR5R3JvdXBzO1xuU3R5bGUucHJvcGVydHlHcm91cE5hbWVzID0gc3R5Zm4kOC5wcm9wZXJ0eUdyb3VwTmFtZXM7XG5TdHlsZS5wcm9wZXJ0eUdyb3VwS2V5cyA9IHN0eWZuJDgucHJvcGVydHlHcm91cEtleXM7XG5cbnZhciBjb3JlZm4kNyA9IHtcbiAgc3R5bGU6IGZ1bmN0aW9uIHN0eWxlKG5ld1N0eWxlKSB7XG4gICAgaWYgKG5ld1N0eWxlKSB7XG4gICAgICB2YXIgcyA9IHRoaXMuc2V0U3R5bGUobmV3U3R5bGUpO1xuICAgICAgcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5zdHlsZTtcbiAgfSxcbiAgc2V0U3R5bGU6IGZ1bmN0aW9uIHNldFN0eWxlKHN0eWxlKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcblxuICAgIGlmIChzdHlsZXNoZWV0KHN0eWxlKSkge1xuICAgICAgX3Auc3R5bGUgPSBzdHlsZS5nZW5lcmF0ZVN0eWxlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoYXJyYXkoc3R5bGUpKSB7XG4gICAgICBfcC5zdHlsZSA9IFN0eWxlLmZyb21Kc29uKHRoaXMsIHN0eWxlKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyhzdHlsZSkpIHtcbiAgICAgIF9wLnN0eWxlID0gU3R5bGUuZnJvbVN0cmluZyh0aGlzLCBzdHlsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9wLnN0eWxlID0gU3R5bGUodGhpcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9wLnN0eWxlO1xuICB9LFxuICAvLyBlLmcuIGN5LmRhdGEoKSBjaGFuZ2VkID0+IHJlY2FsYyBlbGUgbWFwcGVyc1xuICB1cGRhdGVTdHlsZTogZnVuY3Rpb24gdXBkYXRlU3R5bGUoKSB7XG4gICAgdGhpcy5tdXRhYmxlRWxlbWVudHMoKS51cGRhdGVTdHlsZSgpOyAvLyBqdXN0IHNlbmQgdG8gYWxsIGVsZXNcbiAgfVxufTtcblxudmFyIGRlZmF1bHRTZWxlY3Rpb25UeXBlID0gJ3NpbmdsZSc7XG52YXIgY29yZWZuJDggPSB7XG4gIGF1dG9sb2NrOiBmdW5jdGlvbiBhdXRvbG9jayhib29sKSB7XG4gICAgaWYgKGJvb2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5hdXRvbG9jayA9IGJvb2wgPyB0cnVlIDogZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmF1dG9sb2NrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBhdXRvdW5ncmFiaWZ5OiBmdW5jdGlvbiBhdXRvdW5ncmFiaWZ5KGJvb2wpIHtcbiAgICBpZiAoYm9vbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9wcml2YXRlLmF1dG91bmdyYWJpZnkgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5hdXRvdW5ncmFiaWZ5O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBhdXRvdW5zZWxlY3RpZnk6IGZ1bmN0aW9uIGF1dG91bnNlbGVjdGlmeShib29sKSB7XG4gICAgaWYgKGJvb2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5hdXRvdW5zZWxlY3RpZnkgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5hdXRvdW5zZWxlY3RpZnk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHNlbGVjdGlvblR5cGU6IGZ1bmN0aW9uIHNlbGVjdGlvblR5cGUoc2VsVHlwZSkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoX3Auc2VsZWN0aW9uVHlwZSA9PSBudWxsKSB7XG4gICAgICBfcC5zZWxlY3Rpb25UeXBlID0gZGVmYXVsdFNlbGVjdGlvblR5cGU7XG4gICAgfVxuXG4gICAgaWYgKHNlbFR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHNlbFR5cGUgPT09ICdhZGRpdGl2ZScgfHwgc2VsVHlwZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgX3Auc2VsZWN0aW9uVHlwZSA9IHNlbFR5cGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBfcC5zZWxlY3Rpb25UeXBlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBwYW5uaW5nRW5hYmxlZDogZnVuY3Rpb24gcGFubmluZ0VuYWJsZWQoYm9vbCkge1xuICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUucGFubmluZ0VuYWJsZWQgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5wYW5uaW5nRW5hYmxlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgdXNlclBhbm5pbmdFbmFibGVkOiBmdW5jdGlvbiB1c2VyUGFubmluZ0VuYWJsZWQoYm9vbCkge1xuICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUudXNlclBhbm5pbmdFbmFibGVkID0gYm9vbCA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUudXNlclBhbm5pbmdFbmFibGVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICB6b29taW5nRW5hYmxlZDogZnVuY3Rpb24gem9vbWluZ0VuYWJsZWQoYm9vbCkge1xuICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUuem9vbWluZ0VuYWJsZWQgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS56b29taW5nRW5hYmxlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgdXNlclpvb21pbmdFbmFibGVkOiBmdW5jdGlvbiB1c2VyWm9vbWluZ0VuYWJsZWQoYm9vbCkge1xuICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUudXNlclpvb21pbmdFbmFibGVkID0gYm9vbCA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUudXNlclpvb21pbmdFbmFibGVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBib3hTZWxlY3Rpb25FbmFibGVkOiBmdW5jdGlvbiBib3hTZWxlY3Rpb25FbmFibGVkKGJvb2wpIHtcbiAgICBpZiAoYm9vbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9wcml2YXRlLmJveFNlbGVjdGlvbkVuYWJsZWQgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5ib3hTZWxlY3Rpb25FbmFibGVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBwYW46IGZ1bmN0aW9uIHBhbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgcGFuID0gdGhpcy5fcHJpdmF0ZS5wYW47XG4gICAgdmFyIGRpbSwgdmFsLCBkaW1zLCB4LCB5O1xuXG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICAvLyAucGFuKClcbiAgICAgICAgcmV0dXJuIHBhbjtcblxuICAgICAgY2FzZSAxOlxuICAgICAgICBpZiAoc3RyaW5nKGFyZ3NbMF0pKSB7XG4gICAgICAgICAgLy8gLnBhbigneCcpXG4gICAgICAgICAgZGltID0gYXJnc1swXTtcbiAgICAgICAgICByZXR1cm4gcGFuW2RpbV07XG4gICAgICAgIH0gZWxzZSBpZiAocGxhaW5PYmplY3QoYXJnc1swXSkpIHtcbiAgICAgICAgICAvLyAucGFuKHsgeDogMCwgeTogMTAwIH0pXG4gICAgICAgICAgaWYgKCF0aGlzLl9wcml2YXRlLnBhbm5pbmdFbmFibGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkaW1zID0gYXJnc1swXTtcbiAgICAgICAgICB4ID0gZGltcy54O1xuICAgICAgICAgIHkgPSBkaW1zLnk7XG5cbiAgICAgICAgICBpZiAobnVtYmVyKHgpKSB7XG4gICAgICAgICAgICBwYW4ueCA9IHg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG51bWJlcih5KSkge1xuICAgICAgICAgICAgcGFuLnkgPSB5O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZW1pdCgncGFuIHZpZXdwb3J0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAyOlxuICAgICAgICAvLyAucGFuKCd4JywgMTAwKVxuICAgICAgICBpZiAoIXRoaXMuX3ByaXZhdGUucGFubmluZ0VuYWJsZWQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGRpbSA9IGFyZ3NbMF07XG4gICAgICAgIHZhbCA9IGFyZ3NbMV07XG5cbiAgICAgICAgaWYgKChkaW0gPT09ICd4JyB8fCBkaW0gPT09ICd5JykgJiYgbnVtYmVyKHZhbCkpIHtcbiAgICAgICAgICBwYW5bZGltXSA9IHZhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW1pdCgncGFuIHZpZXdwb3J0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gaW52YWxpZFxuICAgIH1cblxuICAgIHRoaXMubm90aWZ5KCd2aWV3cG9ydCcpO1xuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBwYW5CeTogZnVuY3Rpb24gcGFuQnkoYXJnMCwgYXJnMSkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgIHZhciBwYW4gPSB0aGlzLl9wcml2YXRlLnBhbjtcbiAgICB2YXIgZGltLCB2YWwsIGRpbXMsIHgsIHk7XG5cbiAgICBpZiAoIXRoaXMuX3ByaXZhdGUucGFubmluZ0VuYWJsZWQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaWYgKHBsYWluT2JqZWN0KGFyZzApKSB7XG4gICAgICAgICAgLy8gLnBhbkJ5KHsgeDogMCwgeTogMTAwIH0pXG4gICAgICAgICAgZGltcyA9IGFyZ3NbMF07XG4gICAgICAgICAgeCA9IGRpbXMueDtcbiAgICAgICAgICB5ID0gZGltcy55O1xuXG4gICAgICAgICAgaWYgKG51bWJlcih4KSkge1xuICAgICAgICAgICAgcGFuLnggKz0geDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobnVtYmVyKHkpKSB7XG4gICAgICAgICAgICBwYW4ueSArPSB5O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZW1pdCgncGFuIHZpZXdwb3J0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAyOlxuICAgICAgICAvLyAucGFuQnkoJ3gnLCAxMDApXG4gICAgICAgIGRpbSA9IGFyZzA7XG4gICAgICAgIHZhbCA9IGFyZzE7XG5cbiAgICAgICAgaWYgKChkaW0gPT09ICd4JyB8fCBkaW0gPT09ICd5JykgJiYgbnVtYmVyKHZhbCkpIHtcbiAgICAgICAgICBwYW5bZGltXSArPSB2YWw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVtaXQoJ3BhbiB2aWV3cG9ydCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIGludmFsaWRcbiAgICB9XG5cbiAgICB0aGlzLm5vdGlmeSgndmlld3BvcnQnKTtcbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgZml0OiBmdW5jdGlvbiBmaXQoZWxlbWVudHMsIHBhZGRpbmcpIHtcbiAgICB2YXIgdmlld3BvcnRTdGF0ZSA9IHRoaXMuZ2V0Rml0Vmlld3BvcnQoZWxlbWVudHMsIHBhZGRpbmcpO1xuXG4gICAgaWYgKHZpZXdwb3J0U3RhdGUpIHtcbiAgICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgICBfcC56b29tID0gdmlld3BvcnRTdGF0ZS56b29tO1xuICAgICAgX3AucGFuID0gdmlld3BvcnRTdGF0ZS5wYW47XG4gICAgICB0aGlzLmVtaXQoJ3BhbiB6b29tIHZpZXdwb3J0Jyk7XG4gICAgICB0aGlzLm5vdGlmeSgndmlld3BvcnQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgZ2V0Rml0Vmlld3BvcnQ6IGZ1bmN0aW9uIGdldEZpdFZpZXdwb3J0KGVsZW1lbnRzLCBwYWRkaW5nKSB7XG4gICAgaWYgKG51bWJlcihlbGVtZW50cykgJiYgcGFkZGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBlbGVtZW50cyBpcyBvcHRpb25hbFxuICAgICAgcGFkZGluZyA9IGVsZW1lbnRzO1xuICAgICAgZWxlbWVudHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9wcml2YXRlLnBhbm5pbmdFbmFibGVkIHx8ICF0aGlzLl9wcml2YXRlLnpvb21pbmdFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGJiO1xuXG4gICAgaWYgKHN0cmluZyhlbGVtZW50cykpIHtcbiAgICAgIHZhciBzZWwgPSBlbGVtZW50cztcbiAgICAgIGVsZW1lbnRzID0gdGhpcy4kKHNlbCk7XG4gICAgfSBlbHNlIGlmIChib3VuZGluZ0JveChlbGVtZW50cykpIHtcbiAgICAgIC8vIGFzc3VtZSBiYlxuICAgICAgdmFyIGJiZSA9IGVsZW1lbnRzO1xuICAgICAgYmIgPSB7XG4gICAgICAgIHgxOiBiYmUueDEsXG4gICAgICAgIHkxOiBiYmUueTEsXG4gICAgICAgIHgyOiBiYmUueDIsXG4gICAgICAgIHkyOiBiYmUueTJcbiAgICAgIH07XG4gICAgICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICAgIH0gZWxzZSBpZiAoIWVsZW1lbnRPckNvbGxlY3Rpb24oZWxlbWVudHMpKSB7XG4gICAgICBlbGVtZW50cyA9IHRoaXMubXV0YWJsZUVsZW1lbnRzKCk7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnRPckNvbGxlY3Rpb24oZWxlbWVudHMpICYmIGVsZW1lbnRzLmVtcHR5KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGNhbid0IGZpdCB0byBub3RoaW5nXG5cblxuICAgIGJiID0gYmIgfHwgZWxlbWVudHMuYm91bmRpbmdCb3goKTtcbiAgICB2YXIgdyA9IHRoaXMud2lkdGgoKTtcbiAgICB2YXIgaCA9IHRoaXMuaGVpZ2h0KCk7XG4gICAgdmFyIHpvb207XG4gICAgcGFkZGluZyA9IG51bWJlcihwYWRkaW5nKSA/IHBhZGRpbmcgOiAwO1xuXG4gICAgaWYgKCFpc05hTih3KSAmJiAhaXNOYU4oaCkgJiYgdyA+IDAgJiYgaCA+IDAgJiYgIWlzTmFOKGJiLncpICYmICFpc05hTihiYi5oKSAmJiBiYi53ID4gMCAmJiBiYi5oID4gMCkge1xuICAgICAgem9vbSA9IE1hdGgubWluKCh3IC0gMiAqIHBhZGRpbmcpIC8gYmIudywgKGggLSAyICogcGFkZGluZykgLyBiYi5oKTsgLy8gY3JvcCB6b29tXG5cbiAgICAgIHpvb20gPSB6b29tID4gdGhpcy5fcHJpdmF0ZS5tYXhab29tID8gdGhpcy5fcHJpdmF0ZS5tYXhab29tIDogem9vbTtcbiAgICAgIHpvb20gPSB6b29tIDwgdGhpcy5fcHJpdmF0ZS5taW5ab29tID8gdGhpcy5fcHJpdmF0ZS5taW5ab29tIDogem9vbTtcbiAgICAgIHZhciBwYW4gPSB7XG4gICAgICAgIC8vIG5vdyBwYW4gdG8gbWlkZGxlXG4gICAgICAgIHg6ICh3IC0gem9vbSAqIChiYi54MSArIGJiLngyKSkgLyAyLFxuICAgICAgICB5OiAoaCAtIHpvb20gKiAoYmIueTEgKyBiYi55MikpIC8gMlxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHpvb206IHpvb20sXG4gICAgICAgIHBhbjogcGFuXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfSxcbiAgem9vbVJhbmdlOiBmdW5jdGlvbiB6b29tUmFuZ2UobWluLCBtYXgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuXG4gICAgaWYgKG1heCA9PSBudWxsKSB7XG4gICAgICB2YXIgb3B0cyA9IG1pbjtcbiAgICAgIG1pbiA9IG9wdHMubWluO1xuICAgICAgbWF4ID0gb3B0cy5tYXg7XG4gICAgfVxuXG4gICAgaWYgKG51bWJlcihtaW4pICYmIG51bWJlcihtYXgpICYmIG1pbiA8PSBtYXgpIHtcbiAgICAgIF9wLm1pblpvb20gPSBtaW47XG4gICAgICBfcC5tYXhab29tID0gbWF4O1xuICAgIH0gZWxzZSBpZiAobnVtYmVyKG1pbikgJiYgbWF4ID09PSB1bmRlZmluZWQgJiYgbWluIDw9IF9wLm1heFpvb20pIHtcbiAgICAgIF9wLm1pblpvb20gPSBtaW47XG4gICAgfSBlbHNlIGlmIChudW1iZXIobWF4KSAmJiBtaW4gPT09IHVuZGVmaW5lZCAmJiBtYXggPj0gX3AubWluWm9vbSkge1xuICAgICAgX3AubWF4Wm9vbSA9IG1heDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgbWluWm9vbTogZnVuY3Rpb24gbWluWm9vbSh6b29tKSB7XG4gICAgaWYgKHpvb20gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUubWluWm9vbTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuem9vbVJhbmdlKHtcbiAgICAgICAgbWluOiB6b29tXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIG1heFpvb206IGZ1bmN0aW9uIG1heFpvb20oem9vbSkge1xuICAgIGlmICh6b29tID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLm1heFpvb207XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnpvb21SYW5nZSh7XG4gICAgICAgIG1heDogem9vbVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBnZXRab29tZWRWaWV3cG9ydDogZnVuY3Rpb24gZ2V0Wm9vbWVkVmlld3BvcnQocGFyYW1zKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgY3VycmVudFBhbiA9IF9wLnBhbjtcbiAgICB2YXIgY3VycmVudFpvb20gPSBfcC56b29tO1xuICAgIHZhciBwb3M7IC8vIGluIHJlbmRlcmVkIHB4XG5cbiAgICB2YXIgem9vbTtcbiAgICB2YXIgYmFpbCA9IGZhbHNlO1xuXG4gICAgaWYgKCFfcC56b29taW5nRW5hYmxlZCkge1xuICAgICAgLy8gem9vbWluZyBkaXNhYmxlZFxuICAgICAgYmFpbCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG51bWJlcihwYXJhbXMpKSB7XG4gICAgICAvLyB0aGVuIHNldCB0aGUgem9vbVxuICAgICAgem9vbSA9IHBhcmFtcztcbiAgICB9IGVsc2UgaWYgKHBsYWluT2JqZWN0KHBhcmFtcykpIHtcbiAgICAgIC8vIHRoZW4gem9vbSBhYm91dCBhIHBvaW50XG4gICAgICB6b29tID0gcGFyYW1zLmxldmVsO1xuXG4gICAgICBpZiAocGFyYW1zLnBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgcG9zID0gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24ocGFyYW1zLnBvc2l0aW9uLCBjdXJyZW50Wm9vbSwgY3VycmVudFBhbik7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5yZW5kZXJlZFBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgcG9zID0gcGFyYW1zLnJlbmRlcmVkUG9zaXRpb247XG4gICAgICB9XG5cbiAgICAgIGlmIChwb3MgIT0gbnVsbCAmJiAhX3AucGFubmluZ0VuYWJsZWQpIHtcbiAgICAgICAgLy8gcGFubmluZyBkaXNhYmxlZFxuICAgICAgICBiYWlsID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IC8vIGNyb3Agem9vbVxuXG5cbiAgICB6b29tID0gem9vbSA+IF9wLm1heFpvb20gPyBfcC5tYXhab29tIDogem9vbTtcbiAgICB6b29tID0gem9vbSA8IF9wLm1pblpvb20gPyBfcC5taW5ab29tIDogem9vbTsgLy8gY2FuJ3Qgem9vbSB3aXRoIGludmFsaWQgcGFyYW1zXG5cbiAgICBpZiAoYmFpbCB8fCAhbnVtYmVyKHpvb20pIHx8IHpvb20gPT09IGN1cnJlbnRab29tIHx8IHBvcyAhPSBudWxsICYmICghbnVtYmVyKHBvcy54KSB8fCAhbnVtYmVyKHBvcy55KSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChwb3MgIT0gbnVsbCkge1xuICAgICAgLy8gc2V0IHpvb20gYWJvdXQgcG9zaXRpb25cbiAgICAgIHZhciBwYW4xID0gY3VycmVudFBhbjtcbiAgICAgIHZhciB6b29tMSA9IGN1cnJlbnRab29tO1xuICAgICAgdmFyIHpvb20yID0gem9vbTtcbiAgICAgIHZhciBwYW4yID0ge1xuICAgICAgICB4OiAtem9vbTIgLyB6b29tMSAqIChwb3MueCAtIHBhbjEueCkgKyBwb3MueCxcbiAgICAgICAgeTogLXpvb20yIC8gem9vbTEgKiAocG9zLnkgLSBwYW4xLnkpICsgcG9zLnlcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICB6b29tZWQ6IHRydWUsXG4gICAgICAgIHBhbm5lZDogdHJ1ZSxcbiAgICAgICAgem9vbTogem9vbTIsXG4gICAgICAgIHBhbjogcGFuMlxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8ganVzdCBzZXQgdGhlIHpvb21cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHpvb21lZDogdHJ1ZSxcbiAgICAgICAgcGFubmVkOiBmYWxzZSxcbiAgICAgICAgem9vbTogem9vbSxcbiAgICAgICAgcGFuOiBjdXJyZW50UGFuXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgem9vbTogZnVuY3Rpb24gem9vbShwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGdldFxuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuem9vbTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2V0XG4gICAgICB2YXIgdnAgPSB0aGlzLmdldFpvb21lZFZpZXdwb3J0KHBhcmFtcyk7XG4gICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuXG4gICAgICBpZiAodnAgPT0gbnVsbCB8fCAhdnAuem9vbWVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBfcC56b29tID0gdnAuem9vbTtcblxuICAgICAgaWYgKHZwLnBhbm5lZCkge1xuICAgICAgICBfcC5wYW4ueCA9IHZwLnBhbi54O1xuICAgICAgICBfcC5wYW4ueSA9IHZwLnBhbi55O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXQoJ3pvb20nICsgKHZwLnBhbm5lZCA/ICcgcGFuJyA6ICcnKSArICcgdmlld3BvcnQnKTtcbiAgICAgIHRoaXMubm90aWZ5KCd2aWV3cG9ydCcpO1xuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfVxuICB9LFxuICB2aWV3cG9ydDogZnVuY3Rpb24gdmlld3BvcnQob3B0cykge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgdmFyIHpvb21EZWZkID0gdHJ1ZTtcbiAgICB2YXIgcGFuRGVmZCA9IHRydWU7XG4gICAgdmFyIGV2ZW50cyA9IFtdOyAvLyB0byB0cmlnZ2VyXG5cbiAgICB2YXIgem9vbUZhaWxlZCA9IGZhbHNlO1xuICAgIHZhciBwYW5GYWlsZWQgPSBmYWxzZTtcblxuICAgIGlmICghb3B0cykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKCFudW1iZXIob3B0cy56b29tKSkge1xuICAgICAgem9vbURlZmQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXBsYWluT2JqZWN0KG9wdHMucGFuKSkge1xuICAgICAgcGFuRGVmZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghem9vbURlZmQgJiYgIXBhbkRlZmQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmICh6b29tRGVmZCkge1xuICAgICAgdmFyIHogPSBvcHRzLnpvb207XG5cbiAgICAgIGlmICh6IDwgX3AubWluWm9vbSB8fCB6ID4gX3AubWF4Wm9vbSB8fCAhX3Auem9vbWluZ0VuYWJsZWQpIHtcbiAgICAgICAgem9vbUZhaWxlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcC56b29tID0gejtcbiAgICAgICAgZXZlbnRzLnB1c2goJ3pvb20nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFuRGVmZCAmJiAoIXpvb21GYWlsZWQgfHwgIW9wdHMuY2FuY2VsT25GYWlsZWRab29tKSAmJiBfcC5wYW5uaW5nRW5hYmxlZCkge1xuICAgICAgdmFyIHAgPSBvcHRzLnBhbjtcblxuICAgICAgaWYgKG51bWJlcihwLngpKSB7XG4gICAgICAgIF9wLnBhbi54ID0gcC54O1xuICAgICAgICBwYW5GYWlsZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG51bWJlcihwLnkpKSB7XG4gICAgICAgIF9wLnBhbi55ID0gcC55O1xuICAgICAgICBwYW5GYWlsZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwYW5GYWlsZWQpIHtcbiAgICAgICAgZXZlbnRzLnB1c2goJ3BhbicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChldmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgZXZlbnRzLnB1c2goJ3ZpZXdwb3J0Jyk7XG4gICAgICB0aGlzLmVtaXQoZXZlbnRzLmpvaW4oJyAnKSk7XG4gICAgICB0aGlzLm5vdGlmeSgndmlld3BvcnQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgY2VudGVyOiBmdW5jdGlvbiBjZW50ZXIoZWxlbWVudHMpIHtcbiAgICB2YXIgcGFuID0gdGhpcy5nZXRDZW50ZXJQYW4oZWxlbWVudHMpO1xuXG4gICAgaWYgKHBhbikge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5wYW4gPSBwYW47XG4gICAgICB0aGlzLmVtaXQoJ3BhbiB2aWV3cG9ydCcpO1xuICAgICAgdGhpcy5ub3RpZnkoJ3ZpZXdwb3J0Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIGdldENlbnRlclBhbjogZnVuY3Rpb24gZ2V0Q2VudGVyUGFuKGVsZW1lbnRzLCB6b29tKSB7XG4gICAgaWYgKCF0aGlzLl9wcml2YXRlLnBhbm5pbmdFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHN0cmluZyhlbGVtZW50cykpIHtcbiAgICAgIHZhciBzZWxlY3RvciA9IGVsZW1lbnRzO1xuICAgICAgZWxlbWVudHMgPSB0aGlzLm11dGFibGVFbGVtZW50cygpLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfSBlbHNlIGlmICghZWxlbWVudE9yQ29sbGVjdGlvbihlbGVtZW50cykpIHtcbiAgICAgIGVsZW1lbnRzID0gdGhpcy5tdXRhYmxlRWxlbWVudHMoKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBjYW4ndCBjZW50cmUgcGFuIHRvIG5vdGhpbmdcblxuXG4gICAgdmFyIGJiID0gZWxlbWVudHMuYm91bmRpbmdCb3goKTtcbiAgICB2YXIgdyA9IHRoaXMud2lkdGgoKTtcbiAgICB2YXIgaCA9IHRoaXMuaGVpZ2h0KCk7XG4gICAgem9vbSA9IHpvb20gPT09IHVuZGVmaW5lZCA/IHRoaXMuX3ByaXZhdGUuem9vbSA6IHpvb207XG4gICAgdmFyIHBhbiA9IHtcbiAgICAgIC8vIG1pZGRsZVxuICAgICAgeDogKHcgLSB6b29tICogKGJiLngxICsgYmIueDIpKSAvIDIsXG4gICAgICB5OiAoaCAtIHpvb20gKiAoYmIueTEgKyBiYi55MikpIC8gMlxuICAgIH07XG4gICAgcmV0dXJuIHBhbjtcbiAgfSxcbiAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGlmICghdGhpcy5fcHJpdmF0ZS5wYW5uaW5nRW5hYmxlZCB8fCAhdGhpcy5fcHJpdmF0ZS56b29taW5nRW5hYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy52aWV3cG9ydCh7XG4gICAgICBwYW46IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfSxcbiAgICAgIHpvb206IDFcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgaW52YWxpZGF0ZVNpemU6IGZ1bmN0aW9uIGludmFsaWRhdGVTaXplKCkge1xuICAgIHRoaXMuX3ByaXZhdGUuc2l6ZUNhY2hlID0gbnVsbDtcbiAgfSxcbiAgc2l6ZTogZnVuY3Rpb24gc2l6ZSgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgIHZhciBjb250YWluZXIgPSBfcC5jb250YWluZXI7XG4gICAgcmV0dXJuIF9wLnNpemVDYWNoZSA9IF9wLnNpemVDYWNoZSB8fCAoY29udGFpbmVyID8gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHN0eWxlID0gd2luZG93JDEuZ2V0Q29tcHV0ZWRTdHlsZShjb250YWluZXIpO1xuXG4gICAgICB2YXIgdmFsID0gZnVuY3Rpb24gdmFsKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShuYW1lKSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogY29udGFpbmVyLmNsaWVudFdpZHRoIC0gdmFsKCdwYWRkaW5nLWxlZnQnKSAtIHZhbCgncGFkZGluZy1yaWdodCcpLFxuICAgICAgICBoZWlnaHQ6IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgLSB2YWwoJ3BhZGRpbmctdG9wJykgLSB2YWwoJ3BhZGRpbmctYm90dG9tJylcbiAgICAgIH07XG4gICAgfSgpIDoge1xuICAgICAgLy8gZmFsbGJhY2sgaWYgbm8gY29udGFpbmVyIChub3QgMCBiL2MgY2FuIGJlIHVzZWQgZm9yIGRpdmlkaW5nIGV0YylcbiAgICAgIHdpZHRoOiAxLFxuICAgICAgaGVpZ2h0OiAxXG4gICAgfSk7XG4gIH0sXG4gIHdpZHRoOiBmdW5jdGlvbiB3aWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5zaXplKCkud2lkdGg7XG4gIH0sXG4gIGhlaWdodDogZnVuY3Rpb24gaGVpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLnNpemUoKS5oZWlnaHQ7XG4gIH0sXG4gIGV4dGVudDogZnVuY3Rpb24gZXh0ZW50KCkge1xuICAgIHZhciBwYW4gPSB0aGlzLl9wcml2YXRlLnBhbjtcbiAgICB2YXIgem9vbSA9IHRoaXMuX3ByaXZhdGUuem9vbTtcbiAgICB2YXIgcmIgPSB0aGlzLnJlbmRlcmVkRXh0ZW50KCk7XG4gICAgdmFyIGIgPSB7XG4gICAgICB4MTogKHJiLngxIC0gcGFuLngpIC8gem9vbSxcbiAgICAgIHgyOiAocmIueDIgLSBwYW4ueCkgLyB6b29tLFxuICAgICAgeTE6IChyYi55MSAtIHBhbi55KSAvIHpvb20sXG4gICAgICB5MjogKHJiLnkyIC0gcGFuLnkpIC8gem9vbVxuICAgIH07XG4gICAgYi53ID0gYi54MiAtIGIueDE7XG4gICAgYi5oID0gYi55MiAtIGIueTE7XG4gICAgcmV0dXJuIGI7XG4gIH0sXG4gIHJlbmRlcmVkRXh0ZW50OiBmdW5jdGlvbiByZW5kZXJlZEV4dGVudCgpIHtcbiAgICB2YXIgd2lkdGggPSB0aGlzLndpZHRoKCk7XG4gICAgdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHgxOiAwLFxuICAgICAgeTE6IDAsXG4gICAgICB4Mjogd2lkdGgsXG4gICAgICB5MjogaGVpZ2h0LFxuICAgICAgdzogd2lkdGgsXG4gICAgICBoOiBoZWlnaHRcbiAgICB9O1xuICB9LFxuICBtdWx0aUNsaWNrRGVib3VuY2VUaW1lOiBmdW5jdGlvbiBtdWx0aUNsaWNrRGVib3VuY2VUaW1lKF9pbnQpIHtcbiAgICBpZiAoX2ludCkgdGhpcy5fcHJpdmF0ZS5tdWx0aUNsaWNrRGVib3VuY2VUaW1lID0gX2ludDtlbHNlIHJldHVybiB0aGlzLl9wcml2YXRlLm11bHRpQ2xpY2tEZWJvdW5jZVRpbWU7XG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH1cbn07IC8vIGFsaWFzZXNcblxuY29yZWZuJDguY2VudHJlID0gY29yZWZuJDguY2VudGVyOyAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXG5jb3JlZm4kOC5hdXRvbG9ja05vZGVzID0gY29yZWZuJDguYXV0b2xvY2s7XG5jb3JlZm4kOC5hdXRvdW5ncmFiaWZ5Tm9kZXMgPSBjb3JlZm4kOC5hdXRvdW5ncmFiaWZ5O1xuXG52YXIgZm4kNiA9IHtcbiAgZGF0YTogZGVmaW5lJDMuZGF0YSh7XG4gICAgZmllbGQ6ICdkYXRhJyxcbiAgICBiaW5kaW5nRXZlbnQ6ICdkYXRhJyxcbiAgICBhbGxvd0JpbmRpbmc6IHRydWUsXG4gICAgYWxsb3dTZXR0aW5nOiB0cnVlLFxuICAgIHNldHRpbmdFdmVudDogJ2RhdGEnLFxuICAgIHNldHRpbmdUcmlnZ2Vyc0V2ZW50OiB0cnVlLFxuICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICBhbGxvd0dldHRpbmc6IHRydWUsXG4gICAgdXBkYXRlU3R5bGU6IHRydWVcbiAgfSksXG4gIHJlbW92ZURhdGE6IGRlZmluZSQzLnJlbW92ZURhdGEoe1xuICAgIGZpZWxkOiAnZGF0YScsXG4gICAgZXZlbnQ6ICdkYXRhJyxcbiAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgdHJpZ2dlckV2ZW50OiB0cnVlLFxuICAgIHVwZGF0ZVN0eWxlOiB0cnVlXG4gIH0pLFxuICBzY3JhdGNoOiBkZWZpbmUkMy5kYXRhKHtcbiAgICBmaWVsZDogJ3NjcmF0Y2gnLFxuICAgIGJpbmRpbmdFdmVudDogJ3NjcmF0Y2gnLFxuICAgIGFsbG93QmluZGluZzogdHJ1ZSxcbiAgICBhbGxvd1NldHRpbmc6IHRydWUsXG4gICAgc2V0dGluZ0V2ZW50OiAnc2NyYXRjaCcsXG4gICAgc2V0dGluZ1RyaWdnZXJzRXZlbnQ6IHRydWUsXG4gICAgdHJpZ2dlckZuTmFtZTogJ3RyaWdnZXInLFxuICAgIGFsbG93R2V0dGluZzogdHJ1ZSxcbiAgICB1cGRhdGVTdHlsZTogdHJ1ZVxuICB9KSxcbiAgcmVtb3ZlU2NyYXRjaDogZGVmaW5lJDMucmVtb3ZlRGF0YSh7XG4gICAgZmllbGQ6ICdzY3JhdGNoJyxcbiAgICBldmVudDogJ3NjcmF0Y2gnLFxuICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICB0cmlnZ2VyRXZlbnQ6IHRydWUsXG4gICAgdXBkYXRlU3R5bGU6IHRydWVcbiAgfSlcbn07IC8vIGFsaWFzZXNcblxuZm4kNi5hdHRyID0gZm4kNi5kYXRhO1xuZm4kNi5yZW1vdmVBdHRyID0gZm4kNi5yZW1vdmVEYXRhO1xuXG52YXIgQ29yZSA9IGZ1bmN0aW9uIENvcmUob3B0cykge1xuICB2YXIgY3kgPSB0aGlzO1xuICBvcHRzID0gZXh0ZW5kKHt9LCBvcHRzKTtcbiAgdmFyIGNvbnRhaW5lciA9IG9wdHMuY29udGFpbmVyOyAvLyBhbGxvdyBmb3IgcGFzc2luZyBhIHdyYXBwZWQganF1ZXJ5IG9iamVjdFxuICAvLyBlLmcuIGN5dG9zY2FwZSh7IGNvbnRhaW5lcjogJCgnI2N5JykgfSlcblxuICBpZiAoY29udGFpbmVyICYmICFodG1sRWxlbWVudChjb250YWluZXIpICYmIGh0bWxFbGVtZW50KGNvbnRhaW5lclswXSkpIHtcbiAgICBjb250YWluZXIgPSBjb250YWluZXJbMF07XG4gIH1cblxuICB2YXIgcmVnID0gY29udGFpbmVyID8gY29udGFpbmVyLl9jeXJlZyA6IG51bGw7IC8vIGUuZy4gYWxyZWFkeSByZWdpc3RlcmVkIHNvbWUgaW5mbyAoZS5nLiByZWFkaWVzKSB2aWEganF1ZXJ5XG5cbiAgcmVnID0gcmVnIHx8IHt9O1xuXG4gIGlmIChyZWcgJiYgcmVnLmN5KSB7XG4gICAgcmVnLmN5LmRlc3Ryb3koKTtcbiAgICByZWcgPSB7fTsgLy8gb2xkIGluc3RhbmNlID0+IHJlcGxhY2UgcmVnIGNvbXBsZXRlbHlcbiAgfVxuXG4gIHZhciByZWFkaWVzID0gcmVnLnJlYWRpZXMgPSByZWcucmVhZGllcyB8fCBbXTtcblxuICBpZiAoY29udGFpbmVyKSB7XG4gICAgY29udGFpbmVyLl9jeXJlZyA9IHJlZztcbiAgfSAvLyBtYWtlIHN1cmUgY29udGFpbmVyIGFzc29jJ2QgcmVnIHBvaW50cyB0byB0aGlzIGN5XG5cblxuICByZWcuY3kgPSBjeTtcbiAgdmFyIGhlYWQgPSB3aW5kb3ckMSAhPT0gdW5kZWZpbmVkICYmIGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkICYmICFvcHRzLmhlYWRsZXNzO1xuICB2YXIgb3B0aW9ucyA9IG9wdHM7XG4gIG9wdGlvbnMubGF5b3V0ID0gZXh0ZW5kKHtcbiAgICBuYW1lOiBoZWFkID8gJ2dyaWQnIDogJ251bGwnXG4gIH0sIG9wdGlvbnMubGF5b3V0KTtcbiAgb3B0aW9ucy5yZW5kZXJlciA9IGV4dGVuZCh7XG4gICAgbmFtZTogaGVhZCA/ICdjYW52YXMnIDogJ251bGwnXG4gIH0sIG9wdGlvbnMucmVuZGVyZXIpO1xuXG4gIHZhciBkZWZWYWwgPSBmdW5jdGlvbiBkZWZWYWwoZGVmLCB2YWwsIGFsdFZhbCkge1xuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9IGVsc2UgaWYgKGFsdFZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYWx0VmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGVmO1xuICAgIH1cbiAgfTtcblxuICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlID0ge1xuICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgIC8vIGh0bWwgZG9tIGVsZSBjb250YWluZXJcbiAgICByZWFkeTogZmFsc2UsXG4gICAgLy8gd2hldGhlciByZWFkeSBoYXMgYmVlbiB0cmlnZ2VyZWRcbiAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgIC8vIGNhY2hlZCBvcHRpb25zXG4gICAgZWxlbWVudHM6IG5ldyBDb2xsZWN0aW9uKHRoaXMpLFxuICAgIC8vIGVsZW1lbnRzIGluIHRoZSBncmFwaFxuICAgIGxpc3RlbmVyczogW10sXG4gICAgLy8gbGlzdCBvZiBsaXN0ZW5lcnNcbiAgICBhbmlFbGVzOiBuZXcgQ29sbGVjdGlvbih0aGlzKSxcbiAgICAvLyBlbGVtZW50cyBiZWluZyBhbmltYXRlZFxuICAgIGRhdGE6IG9wdGlvbnMuZGF0YSB8fCB7fSxcbiAgICAvLyBkYXRhIGZvciB0aGUgY29yZVxuICAgIHNjcmF0Y2g6IHt9LFxuICAgIC8vIHNjcmF0Y2ggb2JqZWN0IGZvciBjb3JlXG4gICAgbGF5b3V0OiBudWxsLFxuICAgIHJlbmRlcmVyOiBudWxsLFxuICAgIGRlc3Ryb3llZDogZmFsc2UsXG4gICAgLy8gd2hldGhlciBkZXN0cm95IHdhcyBjYWxsZWRcbiAgICBub3RpZmljYXRpb25zRW5hYmxlZDogdHJ1ZSxcbiAgICAvLyB3aGV0aGVyIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgdG8gdGhlIHJlbmRlcmVyXG4gICAgbWluWm9vbTogMWUtNTAsXG4gICAgbWF4Wm9vbTogMWU1MCxcbiAgICB6b29taW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMuem9vbWluZ0VuYWJsZWQpLFxuICAgIHVzZXJab29taW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMudXNlclpvb21pbmdFbmFibGVkKSxcbiAgICBwYW5uaW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMucGFubmluZ0VuYWJsZWQpLFxuICAgIHVzZXJQYW5uaW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMudXNlclBhbm5pbmdFbmFibGVkKSxcbiAgICBib3hTZWxlY3Rpb25FbmFibGVkOiBkZWZWYWwodHJ1ZSwgb3B0aW9ucy5ib3hTZWxlY3Rpb25FbmFibGVkKSxcbiAgICBhdXRvbG9jazogZGVmVmFsKGZhbHNlLCBvcHRpb25zLmF1dG9sb2NrLCBvcHRpb25zLmF1dG9sb2NrTm9kZXMpLFxuICAgIGF1dG91bmdyYWJpZnk6IGRlZlZhbChmYWxzZSwgb3B0aW9ucy5hdXRvdW5ncmFiaWZ5LCBvcHRpb25zLmF1dG91bmdyYWJpZnlOb2RlcyksXG4gICAgYXV0b3Vuc2VsZWN0aWZ5OiBkZWZWYWwoZmFsc2UsIG9wdGlvbnMuYXV0b3Vuc2VsZWN0aWZ5KSxcbiAgICBzdHlsZUVuYWJsZWQ6IG9wdGlvbnMuc3R5bGVFbmFibGVkID09PSB1bmRlZmluZWQgPyBoZWFkIDogb3B0aW9ucy5zdHlsZUVuYWJsZWQsXG4gICAgem9vbTogbnVtYmVyKG9wdGlvbnMuem9vbSkgPyBvcHRpb25zLnpvb20gOiAxLFxuICAgIHBhbjoge1xuICAgICAgeDogcGxhaW5PYmplY3Qob3B0aW9ucy5wYW4pICYmIG51bWJlcihvcHRpb25zLnBhbi54KSA/IG9wdGlvbnMucGFuLnggOiAwLFxuICAgICAgeTogcGxhaW5PYmplY3Qob3B0aW9ucy5wYW4pICYmIG51bWJlcihvcHRpb25zLnBhbi55KSA/IG9wdGlvbnMucGFuLnkgOiAwXG4gICAgfSxcbiAgICBhbmltYXRpb246IHtcbiAgICAgIC8vIG9iamVjdCBmb3IgY3VycmVudGx5LXJ1bm5pbmcgYW5pbWF0aW9uc1xuICAgICAgY3VycmVudDogW10sXG4gICAgICBxdWV1ZTogW11cbiAgICB9LFxuICAgIGhhc0NvbXBvdW5kTm9kZXM6IGZhbHNlLFxuICAgIG11bHRpQ2xpY2tEZWJvdW5jZVRpbWU6IGRlZlZhbCgyNTAsIG9wdGlvbnMubXVsdGlDbGlja0RlYm91bmNlVGltZSlcbiAgfTtcblxuICB0aGlzLmNyZWF0ZUVtaXR0ZXIoKTsgLy8gc2V0IHNlbGVjdGlvbiB0eXBlXG5cbiAgdGhpcy5zZWxlY3Rpb25UeXBlKG9wdGlvbnMuc2VsZWN0aW9uVHlwZSk7IC8vIGluaXQgem9vbSBib3VuZHNcblxuICB0aGlzLnpvb21SYW5nZSh7XG4gICAgbWluOiBvcHRpb25zLm1pblpvb20sXG4gICAgbWF4OiBvcHRpb25zLm1heFpvb21cbiAgfSk7XG5cbiAgdmFyIGxvYWRFeHREYXRhID0gZnVuY3Rpb24gbG9hZEV4dERhdGEoZXh0RGF0YSwgbmV4dCkge1xuICAgIHZhciBhbnlJc1Byb21pc2UgPSBleHREYXRhLnNvbWUocHJvbWlzZSk7XG5cbiAgICBpZiAoYW55SXNQcm9taXNlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZSQxLmFsbChleHREYXRhKS50aGVuKG5leHQpOyAvLyBsb2FkIGFsbCBkYXRhIGFzeW5jaHJvbm91c2x5LCB0aGVuIGV4ZWMgcmVzdCBvZiBpbml0XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQoZXh0RGF0YSk7IC8vIGV4ZWMgc3luY2hyb25vdXNseSBmb3IgY29udmVuaWVuY2VcbiAgICB9XG4gIH07IC8vIHN0YXJ0IHdpdGggdGhlIGRlZmF1bHQgc3R5bGVzaGVldCBzbyB3ZSBoYXZlIHNvbWV0aGluZyBiZWZvcmUgbG9hZGluZyBhbiBleHRlcm5hbCBzdHlsZXNoZWV0XG5cblxuICBpZiAoX3Auc3R5bGVFbmFibGVkKSB7XG4gICAgY3kuc2V0U3R5bGUoW10pO1xuICB9IC8vIGNyZWF0ZSB0aGUgcmVuZGVyZXJcblxuXG4gIHZhciByZW5kZXJlck9wdGlvbnMgPSBleHRlbmQoe30sIG9wdGlvbnMsIG9wdGlvbnMucmVuZGVyZXIpOyAvLyBhbGxvdyByZW5kZXJpbmcgaGludHMgaW4gdG9wIGxldmVsIG9wdGlvbnNcblxuICBjeS5pbml0UmVuZGVyZXIocmVuZGVyZXJPcHRpb25zKTtcblxuICB2YXIgc2V0RWxlc0FuZExheW91dCA9IGZ1bmN0aW9uIHNldEVsZXNBbmRMYXlvdXQoZWxlbWVudHMsIG9ubG9hZCwgb25kb25lKSB7XG4gICAgY3kubm90aWZpY2F0aW9ucyhmYWxzZSk7IC8vIHJlbW92ZSBvbGQgZWxlbWVudHNcblxuICAgIHZhciBvbGRFbGVzID0gY3kubXV0YWJsZUVsZW1lbnRzKCk7XG5cbiAgICBpZiAob2xkRWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBvbGRFbGVzLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50cyAhPSBudWxsKSB7XG4gICAgICBpZiAocGxhaW5PYmplY3QoZWxlbWVudHMpIHx8IGFycmF5KGVsZW1lbnRzKSkge1xuICAgICAgICBjeS5hZGQoZWxlbWVudHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN5Lm9uZSgnbGF5b3V0cmVhZHknLCBmdW5jdGlvbiAoZSkge1xuICAgICAgY3kubm90aWZpY2F0aW9ucyh0cnVlKTtcbiAgICAgIGN5LmVtaXQoZSk7IC8vIHdlIG1pc3NlZCB0aGlzIGV2ZW50IGJ5IHR1cm5pbmcgbm90aWZpY2F0aW9ucyBvZmYsIHNvIHBhc3MgaXQgb25cblxuICAgICAgY3kub25lKCdsb2FkJywgb25sb2FkKTtcbiAgICAgIGN5LmVtaXRBbmROb3RpZnkoJ2xvYWQnKTtcbiAgICB9KS5vbmUoJ2xheW91dHN0b3AnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjeS5vbmUoJ2RvbmUnLCBvbmRvbmUpO1xuICAgICAgY3kuZW1pdCgnZG9uZScpO1xuICAgIH0pO1xuICAgIHZhciBsYXlvdXRPcHRzID0gZXh0ZW5kKHt9LCBjeS5fcHJpdmF0ZS5vcHRpb25zLmxheW91dCk7XG4gICAgbGF5b3V0T3B0cy5lbGVzID0gY3kuZWxlbWVudHMoKTtcbiAgICBjeS5sYXlvdXQobGF5b3V0T3B0cykucnVuKCk7XG4gIH07XG5cbiAgbG9hZEV4dERhdGEoW29wdGlvbnMuc3R5bGUsIG9wdGlvbnMuZWxlbWVudHNdLCBmdW5jdGlvbiAodGhlbnMpIHtcbiAgICB2YXIgaW5pdFN0eWxlID0gdGhlbnNbMF07XG4gICAgdmFyIGluaXRFbGVzID0gdGhlbnNbMV07IC8vIGluaXQgc3R5bGVcblxuICAgIGlmIChfcC5zdHlsZUVuYWJsZWQpIHtcbiAgICAgIGN5LnN0eWxlKCkuYXBwZW5kKGluaXRTdHlsZSk7XG4gICAgfSAvLyBpbml0aWFsIGxvYWRcblxuXG4gICAgc2V0RWxlc0FuZExheW91dChpbml0RWxlcywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gb25yZWFkeVxuICAgICAgY3kuc3RhcnRBbmltYXRpb25Mb29wKCk7XG4gICAgICBfcC5yZWFkeSA9IHRydWU7IC8vIGlmIGEgcmVhZHkgY2FsbGJhY2sgaXMgc3BlY2lmaWVkIGFzIGFuIG9wdGlvbiwgdGhlIGJpbmQgaXRcblxuICAgICAgaWYgKGZuKG9wdGlvbnMucmVhZHkpKSB7XG4gICAgICAgIGN5Lm9uKCdyZWFkeScsIG9wdGlvbnMucmVhZHkpO1xuICAgICAgfSAvLyBiaW5kIGFsbCB0aGUgcmVhZHkgaGFuZGxlcnMgcmVnaXN0ZXJlZCBiZWZvcmUgY3JlYXRpbmcgdGhpcyBpbnN0YW5jZVxuXG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVhZGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZm4kMSA9IHJlYWRpZXNbaV07XG4gICAgICAgIGN5Lm9uKCdyZWFkeScsIGZuJDEpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVnKSB7XG4gICAgICAgIHJlZy5yZWFkaWVzID0gW107XG4gICAgICB9IC8vIGNsZWFyIGIvYyB3ZSd2ZSBib3VuZCB0aGVtIGFsbCBhbmQgZG9uJ3Qgd2FudCB0byBrZWVwIGl0IGFyb3VuZCBpbiBjYXNlIGEgbmV3IGNvcmUgdXNlcyB0aGUgc2FtZSBkaXYgZXRjXG5cblxuICAgICAgY3kuZW1pdCgncmVhZHknKTtcbiAgICB9LCBvcHRpb25zLmRvbmUpO1xuICB9KTtcbn07XG5cbnZhciBjb3JlZm4kOSA9IENvcmUucHJvdG90eXBlOyAvLyBzaG9ydCBhbGlhc1xuXG5leHRlbmQoY29yZWZuJDksIHtcbiAgaW5zdGFuY2VTdHJpbmc6IGZ1bmN0aW9uIGluc3RhbmNlU3RyaW5nKCkge1xuICAgIHJldHVybiAnY29yZSc7XG4gIH0sXG4gIGlzUmVhZHk6IGZ1bmN0aW9uIGlzUmVhZHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucmVhZHk7XG4gIH0sXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KGZuKSB7XG4gICAgaWYgKHRoaXMuaXNSZWFkeSgpKSB7XG4gICAgICB0aGlzLmVtaXR0ZXIoKS5lbWl0KCdyZWFkeScsIFtdLCBmbik7IC8vIGp1c3QgY2FsbHMgZm4gYXMgdGhvdWdoIHRyaWdnZXJlZCB2aWEgcmVhZHkgZXZlbnRcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbigncmVhZHknLCBmbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICBpZiAoY3kuZGVzdHJveWVkKCkpIHJldHVybjtcbiAgICBjeS5zdG9wQW5pbWF0aW9uTG9vcCgpO1xuICAgIGN5LmRlc3Ryb3lSZW5kZXJlcigpO1xuICAgIHRoaXMuZW1pdCgnZGVzdHJveScpO1xuICAgIGN5Ll9wcml2YXRlLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgcmV0dXJuIGN5O1xuICB9LFxuICBoYXNFbGVtZW50V2l0aElkOiBmdW5jdGlvbiBoYXNFbGVtZW50V2l0aElkKGlkKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuZWxlbWVudHMuaGFzRWxlbWVudFdpdGhJZChpZCk7XG4gIH0sXG4gIGdldEVsZW1lbnRCeUlkOiBmdW5jdGlvbiBnZXRFbGVtZW50QnlJZChpZCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmVsZW1lbnRzLmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgfSxcbiAgaGFzQ29tcG91bmROb2RlczogZnVuY3Rpb24gaGFzQ29tcG91bmROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5oYXNDb21wb3VuZE5vZGVzO1xuICB9LFxuICBoZWFkbGVzczogZnVuY3Rpb24gaGVhZGxlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucmVuZGVyZXIuaXNIZWFkbGVzcygpO1xuICB9LFxuICBzdHlsZUVuYWJsZWQ6IGZ1bmN0aW9uIHN0eWxlRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5zdHlsZUVuYWJsZWQ7XG4gIH0sXG4gIGFkZFRvUG9vbDogZnVuY3Rpb24gYWRkVG9Qb29sKGVsZXMpIHtcbiAgICB0aGlzLl9wcml2YXRlLmVsZW1lbnRzLm1lcmdlKGVsZXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHJlbW92ZUZyb21Qb29sOiBmdW5jdGlvbiByZW1vdmVGcm9tUG9vbChlbGVzKSB7XG4gICAgdGhpcy5fcHJpdmF0ZS5lbGVtZW50cy51bm1lcmdlKGVsZXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGNvbnRhaW5lcjogZnVuY3Rpb24gY29udGFpbmVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmNvbnRhaW5lciB8fCBudWxsO1xuICB9LFxuICBtb3VudDogZnVuY3Rpb24gbW91bnQoY29udGFpbmVyKSB7XG4gICAgaWYgKGNvbnRhaW5lciA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICB2YXIgX3AgPSBjeS5fcHJpdmF0ZTtcbiAgICB2YXIgb3B0aW9ucyA9IF9wLm9wdGlvbnM7XG5cbiAgICBpZiAoIWh0bWxFbGVtZW50KGNvbnRhaW5lcikgJiYgaHRtbEVsZW1lbnQoY29udGFpbmVyWzBdKSkge1xuICAgICAgY29udGFpbmVyID0gY29udGFpbmVyWzBdO1xuICAgIH1cblxuICAgIGN5LnN0b3BBbmltYXRpb25Mb29wKCk7XG4gICAgY3kuZGVzdHJveVJlbmRlcmVyKCk7XG4gICAgX3AuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIF9wLnN0eWxlRW5hYmxlZCA9IHRydWU7XG4gICAgY3kuaW52YWxpZGF0ZVNpemUoKTtcbiAgICBjeS5pbml0UmVuZGVyZXIoZXh0ZW5kKHt9LCBvcHRpb25zLCBvcHRpb25zLnJlbmRlcmVyLCB7XG4gICAgICAvLyBhbGxvdyBjdXN0b20gcmVuZGVyZXIgbmFtZSB0byBiZSByZS11c2VkLCBvdGhlcndpc2UgdXNlIGNhbnZhc1xuICAgICAgbmFtZTogb3B0aW9ucy5yZW5kZXJlci5uYW1lID09PSAnbnVsbCcgPyAnY2FudmFzJyA6IG9wdGlvbnMucmVuZGVyZXIubmFtZVxuICAgIH0pKTtcbiAgICBjeS5zdGFydEFuaW1hdGlvbkxvb3AoKTtcbiAgICBjeS5zdHlsZShvcHRpb25zLnN0eWxlKTtcbiAgICBjeS5lbWl0KCdtb3VudCcpO1xuICAgIHJldHVybiBjeTtcbiAgfSxcbiAgdW5tb3VudDogZnVuY3Rpb24gdW5tb3VudCgpIHtcbiAgICB2YXIgY3kgPSB0aGlzO1xuICAgIGN5LnN0b3BBbmltYXRpb25Mb29wKCk7XG4gICAgY3kuZGVzdHJveVJlbmRlcmVyKCk7XG4gICAgY3kuaW5pdFJlbmRlcmVyKHtcbiAgICAgIG5hbWU6ICdudWxsJ1xuICAgIH0pO1xuICAgIGN5LmVtaXQoJ3VubW91bnQnKTtcbiAgICByZXR1cm4gY3k7XG4gIH0sXG4gIG9wdGlvbnM6IGZ1bmN0aW9uIG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIGNvcHkodGhpcy5fcHJpdmF0ZS5vcHRpb25zKTtcbiAgfSxcbiAganNvbjogZnVuY3Rpb24ganNvbihvYmopIHtcbiAgICB2YXIgY3kgPSB0aGlzO1xuICAgIHZhciBfcCA9IGN5Ll9wcml2YXRlO1xuICAgIHZhciBlbGVzID0gY3kubXV0YWJsZUVsZW1lbnRzKCk7XG5cbiAgICB2YXIgZ2V0RnJlc2hSZWYgPSBmdW5jdGlvbiBnZXRGcmVzaFJlZihlbGUpIHtcbiAgICAgIHJldHVybiBjeS5nZXRFbGVtZW50QnlJZChlbGUuaWQoKSk7XG4gICAgfTtcblxuICAgIGlmIChwbGFpbk9iamVjdChvYmopKSB7XG4gICAgICAvLyBzZXRcbiAgICAgIGN5LnN0YXJ0QmF0Y2goKTtcblxuICAgICAgaWYgKG9iai5lbGVtZW50cykge1xuICAgICAgICB2YXIgaWRJbkpzb24gPSB7fTtcblxuICAgICAgICB2YXIgdXBkYXRlRWxlcyA9IGZ1bmN0aW9uIHVwZGF0ZUVsZXMoanNvbnMsIGdyKSB7XG4gICAgICAgICAgdmFyIHRvQWRkID0gW107XG4gICAgICAgICAgdmFyIHRvTW9kID0gW107XG5cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIganNvbiA9IGpzb25zW2ldO1xuXG4gICAgICAgICAgICBpZiAoIWpzb24uZGF0YS5pZCkge1xuICAgICAgICAgICAgICB3YXJuKCdjeS5qc29uKCkgY2Fubm90IGhhbmRsZSBlbGVtZW50cyB3aXRob3V0IGFuIElEIGF0dHJpYnV0ZScpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGlkID0gJycgKyBqc29uLmRhdGEuaWQ7IC8vIGlkIG11c3QgYmUgc3RyaW5nXG5cbiAgICAgICAgICAgIHZhciBlbGUgPSBjeS5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgICAgICBpZEluSnNvbltpZF0gPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAoZWxlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAvLyBleGlzdGluZyBlbGVtZW50IHNob3VsZCBiZSB1cGRhdGVkXG4gICAgICAgICAgICAgIHRvTW9kLnB1c2goe1xuICAgICAgICAgICAgICAgIGVsZTogZWxlLFxuICAgICAgICAgICAgICAgIGpzb246IGpzb25cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugc2hvdWxkIGJlIGFkZGVkXG4gICAgICAgICAgICAgIGlmIChncikge1xuICAgICAgICAgICAgICAgIGpzb24uZ3JvdXAgPSBncjtcbiAgICAgICAgICAgICAgICB0b0FkZC5wdXNoKGpzb24pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvQWRkLnB1c2goanNvbik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjeS5hZGQodG9BZGQpO1xuXG4gICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHRvTW9kLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIF90b01vZCRfaSA9IHRvTW9kW19pXSxcbiAgICAgICAgICAgICAgICBfZWxlID0gX3RvTW9kJF9pLmVsZSxcbiAgICAgICAgICAgICAgICBfanNvbiA9IF90b01vZCRfaS5qc29uO1xuXG4gICAgICAgICAgICBfZWxlLmpzb24oX2pzb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYXJyYXkob2JqLmVsZW1lbnRzKSkge1xuICAgICAgICAgIC8vIGVsZW1lbnRzOiBbXVxuICAgICAgICAgIHVwZGF0ZUVsZXMob2JqLmVsZW1lbnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBlbGVtZW50czogeyBub2RlczogW10sIGVkZ2VzOiBbXSB9XG4gICAgICAgICAgdmFyIGdycyA9IFsnbm9kZXMnLCAnZWRnZXMnXTtcblxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZ3IgPSBncnNbaV07XG4gICAgICAgICAgICB2YXIgZWxlbWVudHMgPSBvYmouZWxlbWVudHNbZ3JdO1xuXG4gICAgICAgICAgICBpZiAoYXJyYXkoZWxlbWVudHMpKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZUVsZXMoZWxlbWVudHMsIGdyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGFyZW50c1RvUmVtb3ZlID0gY3kuY29sbGVjdGlvbigpO1xuICAgICAgICBlbGVzLmZpbHRlcihmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgcmV0dXJuICFpZEluSnNvbltlbGUuaWQoKV07XG4gICAgICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgIGlmIChlbGUuaXNQYXJlbnQoKSkge1xuICAgICAgICAgICAgcGFyZW50c1RvUmVtb3ZlLm1lcmdlKGVsZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZS5yZW1vdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pOyAvLyBzbyB0aGF0IGNoaWxkcmVuIGFyZSBub3QgcmVtb3ZlZCB3L3BhcmVudFxuXG4gICAgICAgIHBhcmVudHNUb1JlbW92ZS5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLmNoaWxkcmVuKCkubW92ZSh7XG4gICAgICAgICAgICBwYXJlbnQ6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IC8vIGludGVybWVkaWF0ZSBwYXJlbnRzIG1heSBiZSBtb3ZlZCBieSBwcmlvciBsaW5lLCBzbyBtYWtlIHN1cmUgd2UgcmVtb3ZlIGJ5IGZyZXNoIHJlZnNcblxuICAgICAgICBwYXJlbnRzVG9SZW1vdmUuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgcmV0dXJuIGdldEZyZXNoUmVmKGVsZSkucmVtb3ZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAob2JqLnN0eWxlKSB7XG4gICAgICAgIGN5LnN0eWxlKG9iai5zdHlsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvYmouem9vbSAhPSBudWxsICYmIG9iai56b29tICE9PSBfcC56b29tKSB7XG4gICAgICAgIGN5Lnpvb20ob2JqLnpvb20pO1xuICAgICAgfVxuXG4gICAgICBpZiAob2JqLnBhbikge1xuICAgICAgICBpZiAob2JqLnBhbi54ICE9PSBfcC5wYW4ueCB8fCBvYmoucGFuLnkgIT09IF9wLnBhbi55KSB7XG4gICAgICAgICAgY3kucGFuKG9iai5wYW4pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvYmouZGF0YSkge1xuICAgICAgICBjeS5kYXRhKG9iai5kYXRhKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZpZWxkcyA9IFsnbWluWm9vbScsICdtYXhab29tJywgJ3pvb21pbmdFbmFibGVkJywgJ3VzZXJab29taW5nRW5hYmxlZCcsICdwYW5uaW5nRW5hYmxlZCcsICd1c2VyUGFubmluZ0VuYWJsZWQnLCAnYm94U2VsZWN0aW9uRW5hYmxlZCcsICdhdXRvbG9jaycsICdhdXRvdW5ncmFiaWZ5JywgJ2F1dG91bnNlbGVjdGlmeScsICdtdWx0aUNsaWNrRGVib3VuY2VUaW1lJ107XG5cbiAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGZpZWxkcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgIHZhciBmID0gZmllbGRzW19pMl07XG5cbiAgICAgICAgaWYgKG9ialtmXSAhPSBudWxsKSB7XG4gICAgICAgICAgY3lbZl0ob2JqW2ZdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjeS5lbmRCYXRjaCgpO1xuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGdldFxuICAgICAgdmFyIGZsYXQgPSAhIW9iajtcbiAgICAgIHZhciBqc29uID0ge307XG5cbiAgICAgIGlmIChmbGF0KSB7XG4gICAgICAgIGpzb24uZWxlbWVudHMgPSB0aGlzLmVsZW1lbnRzKCkubWFwKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLmpzb24oKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBqc29uLmVsZW1lbnRzID0ge307XG4gICAgICAgIGVsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgdmFyIGdyb3VwID0gZWxlLmdyb3VwKCk7XG5cbiAgICAgICAgICBpZiAoIWpzb24uZWxlbWVudHNbZ3JvdXBdKSB7XG4gICAgICAgICAgICBqc29uLmVsZW1lbnRzW2dyb3VwXSA9IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGpzb24uZWxlbWVudHNbZ3JvdXBdLnB1c2goZWxlLmpzb24oKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fcHJpdmF0ZS5zdHlsZUVuYWJsZWQpIHtcbiAgICAgICAganNvbi5zdHlsZSA9IGN5LnN0eWxlKCkuanNvbigpO1xuICAgICAgfVxuXG4gICAgICBqc29uLmRhdGEgPSBjb3B5KGN5LmRhdGEoKSk7XG4gICAgICB2YXIgb3B0aW9ucyA9IF9wLm9wdGlvbnM7XG4gICAgICBqc29uLnpvb21pbmdFbmFibGVkID0gX3Auem9vbWluZ0VuYWJsZWQ7XG4gICAgICBqc29uLnVzZXJab29taW5nRW5hYmxlZCA9IF9wLnVzZXJab29taW5nRW5hYmxlZDtcbiAgICAgIGpzb24uem9vbSA9IF9wLnpvb207XG4gICAgICBqc29uLm1pblpvb20gPSBfcC5taW5ab29tO1xuICAgICAganNvbi5tYXhab29tID0gX3AubWF4Wm9vbTtcbiAgICAgIGpzb24ucGFubmluZ0VuYWJsZWQgPSBfcC5wYW5uaW5nRW5hYmxlZDtcbiAgICAgIGpzb24udXNlclBhbm5pbmdFbmFibGVkID0gX3AudXNlclBhbm5pbmdFbmFibGVkO1xuICAgICAganNvbi5wYW4gPSBjb3B5KF9wLnBhbik7XG4gICAgICBqc29uLmJveFNlbGVjdGlvbkVuYWJsZWQgPSBfcC5ib3hTZWxlY3Rpb25FbmFibGVkO1xuICAgICAganNvbi5yZW5kZXJlciA9IGNvcHkob3B0aW9ucy5yZW5kZXJlcik7XG4gICAgICBqc29uLmhpZGVFZGdlc09uVmlld3BvcnQgPSBvcHRpb25zLmhpZGVFZGdlc09uVmlld3BvcnQ7XG4gICAgICBqc29uLnRleHR1cmVPblZpZXdwb3J0ID0gb3B0aW9ucy50ZXh0dXJlT25WaWV3cG9ydDtcbiAgICAgIGpzb24ud2hlZWxTZW5zaXRpdml0eSA9IG9wdGlvbnMud2hlZWxTZW5zaXRpdml0eTtcbiAgICAgIGpzb24ubW90aW9uQmx1ciA9IG9wdGlvbnMubW90aW9uQmx1cjtcbiAgICAgIGpzb24ubXVsdGlDbGlja0RlYm91bmNlVGltZSA9IG9wdGlvbnMubXVsdGlDbGlja0RlYm91bmNlVGltZTtcbiAgICAgIHJldHVybiBqc29uO1xuICAgIH1cbiAgfVxufSk7XG5jb3JlZm4kOS4kaWQgPSBjb3JlZm4kOS5nZXRFbGVtZW50QnlJZDtcbltjb3JlZm4sIGNvcmVmbiQxLCBlbGVzZm4kdiwgY29yZWZuJDIsIGNvcmVmbiQzLCBjb3JlZm4kNCwgY29yZWZuJDUsIGNvcmVmbiQ2LCBjb3JlZm4kNywgY29yZWZuJDgsIGZuJDZdLmZvckVhY2goZnVuY3Rpb24gKHByb3BzKSB7XG4gIGV4dGVuZChjb3JlZm4kOSwgcHJvcHMpO1xufSk7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5cbnZhciBkZWZhdWx0cyQ5ID0ge1xuICBmaXQ6IHRydWUsXG4gIC8vIHdoZXRoZXIgdG8gZml0IHRoZSB2aWV3cG9ydCB0byB0aGUgZ3JhcGhcbiAgZGlyZWN0ZWQ6IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRoZSB0cmVlIGlzIGRpcmVjdGVkIGRvd253YXJkcyAob3IgZWRnZXMgY2FuIHBvaW50IGluIGFueSBkaXJlY3Rpb24gaWYgZmFsc2UpXG4gIHBhZGRpbmc6IDMwLFxuICAvLyBwYWRkaW5nIG9uIGZpdFxuICBjaXJjbGU6IGZhbHNlLFxuICAvLyBwdXQgZGVwdGhzIGluIGNvbmNlbnRyaWMgY2lyY2xlcyBpZiB0cnVlLCBwdXQgZGVwdGhzIHRvcCBkb3duIGlmIGZhbHNlXG4gIGdyaWQ6IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRvIGNyZWF0ZSBhbiBldmVuIGdyaWQgaW50byB3aGljaCB0aGUgREFHIGlzIHBsYWNlZCAoY2lyY2xlOmZhbHNlIG9ubHkpXG4gIHNwYWNpbmdGYWN0b3I6IDEuNzUsXG4gIC8vIHBvc2l0aXZlIHNwYWNpbmcgZmFjdG9yLCBsYXJnZXIgPT4gbW9yZSBzcGFjZSBiZXR3ZWVuIG5vZGVzIChOLkIuIG4vYSBpZiBjYXVzZXMgb3ZlcmxhcClcbiAgYm91bmRpbmdCb3g6IHVuZGVmaW5lZCxcbiAgLy8gY29uc3RyYWluIGxheW91dCBib3VuZHM7IHsgeDEsIHkxLCB4MiwgeTIgfSBvciB7IHgxLCB5MSwgdywgaCB9XG4gIGF2b2lkT3ZlcmxhcDogdHJ1ZSxcbiAgLy8gcHJldmVudHMgbm9kZSBvdmVybGFwLCBtYXkgb3ZlcmZsb3cgYm91bmRpbmdCb3ggaWYgbm90IGVub3VnaCBzcGFjZVxuICBub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHM6IGZhbHNlLFxuICAvLyBFeGNsdWRlcyB0aGUgbGFiZWwgd2hlbiBjYWxjdWxhdGluZyBub2RlIGJvdW5kaW5nIGJveGVzIGZvciB0aGUgbGF5b3V0IGFsZ29yaXRobVxuICByb290czogdW5kZWZpbmVkLFxuICAvLyB0aGUgcm9vdHMgb2YgdGhlIHRyZWVzXG4gIG1heGltYWw6IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRvIHNoaWZ0IG5vZGVzIGRvd24gdGhlaXIgbmF0dXJhbCBCRlMgZGVwdGhzIGluIG9yZGVyIHRvIGF2b2lkIHVwd2FyZHMgZWRnZXMgKERBR1Mgb25seSlcbiAgYW5pbWF0ZTogZmFsc2UsXG4gIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0aW9uRHVyYXRpb246IDUwMCxcbiAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgYW5pbWF0aW9uRWFzaW5nOiB1bmRlZmluZWQsXG4gIC8vIGVhc2luZyBvZiBhbmltYXRpb24gaWYgZW5hYmxlZCxcbiAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24gYW5pbWF0ZUZpbHRlcihub2RlLCBpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIC8vIGEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG5vZGUgc2hvdWxkIGJlIGFuaW1hdGVkLiAgQWxsIG5vZGVzIGFuaW1hdGVkIGJ5IGRlZmF1bHQgb24gYW5pbWF0ZSBlbmFibGVkLiAgTm9uLWFuaW1hdGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGxheW91dCBzdGFydHNcbiAgcmVhZHk6IHVuZGVmaW5lZCxcbiAgLy8gY2FsbGJhY2sgb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogdW5kZWZpbmVkLFxuICAvLyBjYWxsYmFjayBvbiBsYXlvdXRzdG9wXG4gIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKG5vZGUsIHBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uO1xuICB9IC8vIHRyYW5zZm9ybSBhIGdpdmVuIG5vZGUgcG9zaXRpb24uIFVzZWZ1bCBmb3IgY2hhbmdpbmcgZmxvdyBkaXJlY3Rpb24gaW4gZGlzY3JldGUgbGF5b3V0c1xuXG59O1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG52YXIgZ2V0SW5mbyA9IGZ1bmN0aW9uIGdldEluZm8oZWxlKSB7XG4gIHJldHVybiBlbGUuc2NyYXRjaCgnYnJlYWR0aGZpcnN0Jyk7XG59O1xuXG52YXIgc2V0SW5mbyA9IGZ1bmN0aW9uIHNldEluZm8oZWxlLCBvYmopIHtcbiAgcmV0dXJuIGVsZS5zY3JhdGNoKCdicmVhZHRoZmlyc3QnLCBvYmopO1xufTtcblxuZnVuY3Rpb24gQnJlYWR0aEZpcnN0TGF5b3V0KG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cyQ5LCBvcHRpb25zKTtcbn1cblxuQnJlYWR0aEZpcnN0TGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBwYXJhbXMgPSB0aGlzLm9wdGlvbnM7XG4gIHZhciBvcHRpb25zID0gcGFyYW1zO1xuICB2YXIgY3kgPSBwYXJhbXMuY3k7XG4gIHZhciBlbGVzID0gb3B0aW9ucy5lbGVzO1xuICB2YXIgbm9kZXMgPSBlbGVzLm5vZGVzKCkuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgcmV0dXJuICFuLmlzUGFyZW50KCk7XG4gIH0pO1xuICB2YXIgZ3JhcGggPSBlbGVzO1xuICB2YXIgZGlyZWN0ZWQgPSBvcHRpb25zLmRpcmVjdGVkO1xuICB2YXIgbWF4aW1hbCA9IG9wdGlvbnMubWF4aW1hbCB8fCBvcHRpb25zLm1heGltYWxBZGp1c3RtZW50cyA+IDA7IC8vIG1heGltYWxBZGp1c3RtZW50cyBmb3IgY29tcGF0LiB3LyBvbGQgY29kZVxuXG4gIHZhciBiYiA9IG1ha2VCb3VuZGluZ0JveChvcHRpb25zLmJvdW5kaW5nQm94ID8gb3B0aW9ucy5ib3VuZGluZ0JveCA6IHtcbiAgICB4MTogMCxcbiAgICB5MTogMCxcbiAgICB3OiBjeS53aWR0aCgpLFxuICAgIGg6IGN5LmhlaWdodCgpXG4gIH0pO1xuICB2YXIgcm9vdHM7XG5cbiAgaWYgKGVsZW1lbnRPckNvbGxlY3Rpb24ob3B0aW9ucy5yb290cykpIHtcbiAgICByb290cyA9IG9wdGlvbnMucm9vdHM7XG4gIH0gZWxzZSBpZiAoYXJyYXkob3B0aW9ucy5yb290cykpIHtcbiAgICB2YXIgcm9vdHNBcnJheSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLnJvb3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWQgPSBvcHRpb25zLnJvb3RzW2ldO1xuICAgICAgdmFyIGVsZSA9IGN5LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICAgIHJvb3RzQXJyYXkucHVzaChlbGUpO1xuICAgIH1cblxuICAgIHJvb3RzID0gY3kuY29sbGVjdGlvbihyb290c0FycmF5KTtcbiAgfSBlbHNlIGlmIChzdHJpbmcob3B0aW9ucy5yb290cykpIHtcbiAgICByb290cyA9IGN5LiQob3B0aW9ucy5yb290cyk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICByb290cyA9IG5vZGVzLnJvb3RzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjb21wb25lbnRzID0gZWxlcy5jb21wb25lbnRzKCk7XG4gICAgICByb290cyA9IGN5LmNvbGxlY3Rpb24oKTtcblxuICAgICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoX2kpIHtcbiAgICAgICAgdmFyIGNvbXAgPSBjb21wb25lbnRzW19pXTtcbiAgICAgICAgdmFyIG1heERlZ3JlZSA9IGNvbXAubWF4RGVncmVlKGZhbHNlKTtcbiAgICAgICAgdmFyIGNvbXBSb290cyA9IGNvbXAuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLmRlZ3JlZShmYWxzZSkgPT09IG1heERlZ3JlZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJvb3RzID0gcm9vdHMuYWRkKGNvbXBSb290cyk7XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgY29tcG9uZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgX2xvb3AoX2kpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBkZXB0aHMgPSBbXTtcbiAgdmFyIGZvdW5kQnlCZnMgPSB7fTtcblxuICB2YXIgYWRkVG9EZXB0aCA9IGZ1bmN0aW9uIGFkZFRvRGVwdGgoZWxlLCBkKSB7XG4gICAgaWYgKGRlcHRoc1tkXSA9PSBudWxsKSB7XG4gICAgICBkZXB0aHNbZF0gPSBbXTtcbiAgICB9XG5cbiAgICB2YXIgaSA9IGRlcHRoc1tkXS5sZW5ndGg7XG4gICAgZGVwdGhzW2RdLnB1c2goZWxlKTtcbiAgICBzZXRJbmZvKGVsZSwge1xuICAgICAgaW5kZXg6IGksXG4gICAgICBkZXB0aDogZFxuICAgIH0pO1xuICB9O1xuXG4gIHZhciBjaGFuZ2VEZXB0aCA9IGZ1bmN0aW9uIGNoYW5nZURlcHRoKGVsZSwgbmV3RGVwdGgpIHtcbiAgICB2YXIgX2dldEluZm8gPSBnZXRJbmZvKGVsZSksXG4gICAgICAgIGRlcHRoID0gX2dldEluZm8uZGVwdGgsXG4gICAgICAgIGluZGV4ID0gX2dldEluZm8uaW5kZXg7XG5cbiAgICBkZXB0aHNbZGVwdGhdW2luZGV4XSA9IG51bGw7XG4gICAgYWRkVG9EZXB0aChlbGUsIG5ld0RlcHRoKTtcbiAgfTsgLy8gZmluZCB0aGUgZGVwdGhzIG9mIHRoZSBub2Rlc1xuXG5cbiAgZ3JhcGguYmZzKHtcbiAgICByb290czogcm9vdHMsXG4gICAgZGlyZWN0ZWQ6IG9wdGlvbnMuZGlyZWN0ZWQsXG4gICAgdmlzaXQ6IGZ1bmN0aW9uIHZpc2l0KG5vZGUsIGVkZ2UsIHBOb2RlLCBpLCBkZXB0aCkge1xuICAgICAgdmFyIGVsZSA9IG5vZGVbMF07XG4gICAgICB2YXIgaWQgPSBlbGUuaWQoKTtcbiAgICAgIGFkZFRvRGVwdGgoZWxlLCBkZXB0aCk7XG4gICAgICBmb3VuZEJ5QmZzW2lkXSA9IHRydWU7XG4gICAgfVxuICB9KTsgLy8gY2hlY2sgZm9yIG5vZGVzIG5vdCBmb3VuZCBieSBiZnNcblxuICB2YXIgb3JwaGFuTm9kZXMgPSBbXTtcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBub2Rlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIF9lbGUgPSBub2Rlc1tfaTJdO1xuXG4gICAgaWYgKGZvdW5kQnlCZnNbX2VsZS5pZCgpXSkge1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ycGhhbk5vZGVzLnB1c2goX2VsZSk7XG4gICAgfVxuICB9IC8vIGFzc2lnbiB0aGUgbm9kZXMgYSBkZXB0aCBhbmQgaW5kZXhcblxuXG4gIHZhciBhc3NpZ25EZXB0aHNBdCA9IGZ1bmN0aW9uIGFzc2lnbkRlcHRoc0F0KGkpIHtcbiAgICB2YXIgZWxlcyA9IGRlcHRoc1tpXTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlcy5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIF9lbGUyID0gZWxlc1tqXTtcblxuICAgICAgaWYgKF9lbGUyID09IG51bGwpIHtcbiAgICAgICAgZWxlcy5zcGxpY2UoaiwgMSk7XG4gICAgICAgIGotLTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHNldEluZm8oX2VsZTIsIHtcbiAgICAgICAgZGVwdGg6IGksXG4gICAgICAgIGluZGV4OiBqXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGFzc2lnbkRlcHRocyA9IGZ1bmN0aW9uIGFzc2lnbkRlcHRocygpIHtcbiAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBkZXB0aHMubGVuZ3RoOyBfaTMrKykge1xuICAgICAgYXNzaWduRGVwdGhzQXQoX2kzKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGFkanVzdE1heGltYWxseSA9IGZ1bmN0aW9uIGFkanVzdE1heGltYWxseShlbGUsIHNoaWZ0ZWQpIHtcbiAgICB2YXIgZUluZm8gPSBnZXRJbmZvKGVsZSk7XG4gICAgdmFyIGluY29tZXJzID0gZWxlLmluY29tZXJzKCkuZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xuICAgICAgcmV0dXJuIGVsLmlzTm9kZSgpICYmIGVsZXMuaGFzKGVsKTtcbiAgICB9KTtcbiAgICB2YXIgbWF4RGVwdGggPSAtMTtcbiAgICB2YXIgaWQgPSBlbGUuaWQoKTtcblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaW5jb21lcnMubGVuZ3RoOyBrKyspIHtcbiAgICAgIHZhciBpbmNtciA9IGluY29tZXJzW2tdO1xuICAgICAgdmFyIGlJbmZvID0gZ2V0SW5mbyhpbmNtcik7XG4gICAgICBtYXhEZXB0aCA9IE1hdGgubWF4KG1heERlcHRoLCBpSW5mby5kZXB0aCk7XG4gICAgfVxuXG4gICAgaWYgKGVJbmZvLmRlcHRoIDw9IG1heERlcHRoKSB7XG4gICAgICBpZiAoc2hpZnRlZFtpZF0pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNoYW5nZURlcHRoKGVsZSwgbWF4RGVwdGggKyAxKTtcbiAgICAgIHNoaWZ0ZWRbaWRdID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTsgLy8gZm9yIHRoZSBkaXJlY3RlZCBjYXNlLCB0cnkgdG8gbWFrZSB0aGUgZWRnZXMgYWxsIGdvIGRvd24gKGkuZS4gZGVwdGggaSA9PiBkZXB0aCBpICsgMSlcblxuXG4gIGlmIChkaXJlY3RlZCAmJiBtYXhpbWFsKSB7XG4gICAgdmFyIFEgPSBbXTtcbiAgICB2YXIgc2hpZnRlZCA9IHt9O1xuXG4gICAgdmFyIGVucXVldWUgPSBmdW5jdGlvbiBlbnF1ZXVlKG4pIHtcbiAgICAgIHJldHVybiBRLnB1c2gobik7XG4gICAgfTtcblxuICAgIHZhciBkZXF1ZXVlID0gZnVuY3Rpb24gZGVxdWV1ZSgpIHtcbiAgICAgIHJldHVybiBRLnNoaWZ0KCk7XG4gICAgfTtcblxuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgIHJldHVybiBRLnB1c2gobik7XG4gICAgfSk7XG5cbiAgICB3aGlsZSAoUS5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgX2VsZTMgPSBkZXF1ZXVlKCk7XG5cbiAgICAgIHZhciBkaWRTaGlmdCA9IGFkanVzdE1heGltYWxseShfZWxlMywgc2hpZnRlZCk7XG5cbiAgICAgIGlmIChkaWRTaGlmdCkge1xuICAgICAgICBfZWxlMy5vdXRnb2VycygpLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICByZXR1cm4gZWwuaXNOb2RlKCkgJiYgZWxlcy5oYXMoZWwpO1xuICAgICAgICB9KS5mb3JFYWNoKGVucXVldWUpO1xuICAgICAgfSBlbHNlIGlmIChkaWRTaGlmdCA9PT0gbnVsbCkge1xuICAgICAgICB3YXJuKCdEZXRlY3RlZCBkb3VibGUgbWF4aW1hbCBzaGlmdCBmb3Igbm9kZSBgJyArIF9lbGUzLmlkKCkgKyAnYC4gIEJhaWxpbmcgbWF4aW1hbCBhZGp1c3RtZW50IGR1ZSB0byBjeWNsZS4gIFVzZSBgb3B0aW9ucy5tYXhpbWFsOiB0cnVlYCBvbmx5IG9uIERBR3MuJyk7XG4gICAgICAgIGJyZWFrOyAvLyBleGl0IG9uIGZhaWx1cmVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3NpZ25EZXB0aHMoKTsgLy8gY2xlYXIgaG9sZXNcbiAgLy8gZmluZCBtaW4gZGlzdGFuY2Ugd2UgbmVlZCB0byBsZWF2ZSBiZXR3ZWVuIG5vZGVzXG5cbiAgdmFyIG1pbkRpc3RhbmNlID0gMDtcblxuICBpZiAob3B0aW9ucy5hdm9pZE92ZXJsYXApIHtcbiAgICBmb3IgKHZhciBfaTQgPSAwOyBfaTQgPCBub2Rlcy5sZW5ndGg7IF9pNCsrKSB7XG4gICAgICB2YXIgbiA9IG5vZGVzW19pNF07XG4gICAgICB2YXIgbmJiID0gbi5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuICAgICAgdmFyIHcgPSBuYmIudztcbiAgICAgIHZhciBoID0gbmJiLmg7XG4gICAgICBtaW5EaXN0YW5jZSA9IE1hdGgubWF4KG1pbkRpc3RhbmNlLCB3LCBoKTtcbiAgICB9XG4gIH0gLy8gZ2V0IHRoZSB3ZWlnaHRlZCBwZXJjZW50IGZvciBhbiBlbGVtZW50IGJhc2VkIG9uIGl0cyBjb25uZWN0aXZpdHkgdG8gb3RoZXIgbGV2ZWxzXG5cblxuICB2YXIgY2FjaGVkV2VpZ2h0ZWRQZXJjZW50ID0ge307XG5cbiAgdmFyIGdldFdlaWdodGVkUGVyY2VudCA9IGZ1bmN0aW9uIGdldFdlaWdodGVkUGVyY2VudChlbGUpIHtcbiAgICBpZiAoY2FjaGVkV2VpZ2h0ZWRQZXJjZW50W2VsZS5pZCgpXSkge1xuICAgICAgcmV0dXJuIGNhY2hlZFdlaWdodGVkUGVyY2VudFtlbGUuaWQoKV07XG4gICAgfVxuXG4gICAgdmFyIGVsZURlcHRoID0gZ2V0SW5mbyhlbGUpLmRlcHRoO1xuICAgIHZhciBuZWlnaGJvcnMgPSBlbGUubmVpZ2hib3Job29kKCk7XG4gICAgdmFyIHBlcmNlbnQgPSAwO1xuICAgIHZhciBzYW1wbGVzID0gMDtcblxuICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IG5laWdoYm9ycy5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICB2YXIgbmVpZ2hib3IgPSBuZWlnaGJvcnNbX2k1XTtcblxuICAgICAgaWYgKG5laWdoYm9yLmlzRWRnZSgpIHx8IG5laWdoYm9yLmlzUGFyZW50KCkgfHwgIW5vZGVzLmhhcyhuZWlnaGJvcikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBiZiA9IGdldEluZm8obmVpZ2hib3IpO1xuXG4gICAgICBpZiAoYmYgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGluZGV4ID0gYmYuaW5kZXg7XG4gICAgICB2YXIgZGVwdGggPSBiZi5kZXB0aDsgLy8gdW5hc3NpZ25lZCBuZWlnaGJvdXJzIHNob3VsZG4ndCBhZmZlY3QgdGhlIG9yZGVyaW5nXG5cbiAgICAgIGlmIChpbmRleCA9PSBudWxsIHx8IGRlcHRoID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBuRGVwdGggPSBkZXB0aHNbZGVwdGhdLmxlbmd0aDtcblxuICAgICAgaWYgKGRlcHRoIDwgZWxlRGVwdGgpIHtcbiAgICAgICAgLy8gb25seSBnZXQgaW5mbHVlbmNlZCBieSBlbGVtZW50cyBhYm92ZVxuICAgICAgICBwZXJjZW50ICs9IGluZGV4IC8gbkRlcHRoO1xuICAgICAgICBzYW1wbGVzKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2FtcGxlcyA9IE1hdGgubWF4KDEsIHNhbXBsZXMpO1xuICAgIHBlcmNlbnQgPSBwZXJjZW50IC8gc2FtcGxlcztcblxuICAgIGlmIChzYW1wbGVzID09PSAwKSB7XG4gICAgICAvLyBwdXQgbG9uZSBub2RlcyBhdCB0aGUgc3RhcnRcbiAgICAgIHBlcmNlbnQgPSAwO1xuICAgIH1cblxuICAgIGNhY2hlZFdlaWdodGVkUGVyY2VudFtlbGUuaWQoKV0gPSBwZXJjZW50O1xuICAgIHJldHVybiBwZXJjZW50O1xuICB9OyAvLyByZWFycmFuZ2UgdGhlIGluZGljZXMgaW4gZWFjaCBkZXB0aCBsZXZlbCBiYXNlZCBvbiBjb25uZWN0aXZpdHlcblxuXG4gIHZhciBzb3J0Rm4gPSBmdW5jdGlvbiBzb3J0Rm4oYSwgYikge1xuICAgIHZhciBhcGN0ID0gZ2V0V2VpZ2h0ZWRQZXJjZW50KGEpO1xuICAgIHZhciBicGN0ID0gZ2V0V2VpZ2h0ZWRQZXJjZW50KGIpO1xuICAgIHZhciBkaWZmID0gYXBjdCAtIGJwY3Q7XG5cbiAgICBpZiAoZGlmZiA9PT0gMCkge1xuICAgICAgcmV0dXJuIGFzY2VuZGluZyhhLmlkKCksIGIuaWQoKSk7IC8vIG1ha2Ugc3VyZSBzb3J0IGRvZXNuJ3QgaGF2ZSBkb24ndC1jYXJlIGNvbXBhcmlzb25zXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkaWZmO1xuICAgIH1cbiAgfTsgLy8gc29ydCBlYWNoIGxldmVsIHRvIG1ha2UgY29ubmVjdGVkIG5vZGVzIGNsb3NlclxuXG5cbiAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgZGVwdGhzLmxlbmd0aDsgX2k2KyspIHtcbiAgICBkZXB0aHNbX2k2XS5zb3J0KHNvcnRGbik7XG5cbiAgICBhc3NpZ25EZXB0aHNBdChfaTYpO1xuICB9IC8vIGFzc2lnbiBvcnBoYW4gbm9kZXMgdG8gYSBuZXcgdG9wLWxldmVsIGRlcHRoXG5cblxuICB2YXIgb3JwaGFuRGVwdGggPSBbXTtcblxuICBmb3IgKHZhciBfaTcgPSAwOyBfaTcgPCBvcnBoYW5Ob2Rlcy5sZW5ndGg7IF9pNysrKSB7XG4gICAgb3JwaGFuRGVwdGgucHVzaChvcnBoYW5Ob2Rlc1tfaTddKTtcbiAgfVxuXG4gIGRlcHRocy51bnNoaWZ0KG9ycGhhbkRlcHRoKTtcbiAgYXNzaWduRGVwdGhzKCk7XG4gIHZhciBiaWdnZXN0RGVwdGhTaXplID0gMDtcblxuICBmb3IgKHZhciBfaTggPSAwOyBfaTggPCBkZXB0aHMubGVuZ3RoOyBfaTgrKykge1xuICAgIGJpZ2dlc3REZXB0aFNpemUgPSBNYXRoLm1heChkZXB0aHNbX2k4XS5sZW5ndGgsIGJpZ2dlc3REZXB0aFNpemUpO1xuICB9XG5cbiAgdmFyIGNlbnRlciA9IHtcbiAgICB4OiBiYi54MSArIGJiLncgLyAyLFxuICAgIHk6IGJiLngxICsgYmIuaCAvIDJcbiAgfTtcbiAgdmFyIG1heERlcHRoU2l6ZSA9IGRlcHRocy5yZWR1Y2UoZnVuY3Rpb24gKG1heCwgZWxlcykge1xuICAgIHJldHVybiBNYXRoLm1heChtYXgsIGVsZXMubGVuZ3RoKTtcbiAgfSwgMCk7XG5cbiAgdmFyIGdldFBvc2l0aW9uID0gZnVuY3Rpb24gZ2V0UG9zaXRpb24oZWxlKSB7XG4gICAgdmFyIF9nZXRJbmZvMiA9IGdldEluZm8oZWxlKSxcbiAgICAgICAgZGVwdGggPSBfZ2V0SW5mbzIuZGVwdGgsXG4gICAgICAgIGluZGV4ID0gX2dldEluZm8yLmluZGV4O1xuXG4gICAgdmFyIGRlcHRoU2l6ZSA9IGRlcHRoc1tkZXB0aF0ubGVuZ3RoO1xuICAgIHZhciBkaXN0YW5jZVggPSBNYXRoLm1heChiYi53IC8gKChvcHRpb25zLmdyaWQgPyBtYXhEZXB0aFNpemUgOiBkZXB0aFNpemUpICsgMSksIG1pbkRpc3RhbmNlKTtcbiAgICB2YXIgZGlzdGFuY2VZID0gTWF0aC5tYXgoYmIuaCAvIChkZXB0aHMubGVuZ3RoICsgMSksIG1pbkRpc3RhbmNlKTtcbiAgICB2YXIgcmFkaXVzU3RlcFNpemUgPSBNYXRoLm1pbihiYi53IC8gMiAvIGRlcHRocy5sZW5ndGgsIGJiLmggLyAyIC8gZGVwdGhzLmxlbmd0aCk7XG4gICAgcmFkaXVzU3RlcFNpemUgPSBNYXRoLm1heChyYWRpdXNTdGVwU2l6ZSwgbWluRGlzdGFuY2UpO1xuXG4gICAgaWYgKCFvcHRpb25zLmNpcmNsZSkge1xuICAgICAgdmFyIGVwb3MgPSB7XG4gICAgICAgIHg6IGNlbnRlci54ICsgKGluZGV4ICsgMSAtIChkZXB0aFNpemUgKyAxKSAvIDIpICogZGlzdGFuY2VYLFxuICAgICAgICB5OiAoZGVwdGggKyAxKSAqIGRpc3RhbmNlWVxuICAgICAgfTtcbiAgICAgIHJldHVybiBlcG9zO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmFkaXVzID0gcmFkaXVzU3RlcFNpemUgKiBkZXB0aCArIHJhZGl1c1N0ZXBTaXplIC0gKGRlcHRocy5sZW5ndGggPiAwICYmIGRlcHRoc1swXS5sZW5ndGggPD0gMyA/IHJhZGl1c1N0ZXBTaXplIC8gMiA6IDApO1xuICAgICAgdmFyIHRoZXRhID0gMiAqIE1hdGguUEkgLyBkZXB0aHNbZGVwdGhdLmxlbmd0aCAqIGluZGV4O1xuXG4gICAgICBpZiAoZGVwdGggPT09IDAgJiYgZGVwdGhzWzBdLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByYWRpdXMgPSAxO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBjZW50ZXIueCArIHJhZGl1cyAqIE1hdGguY29zKHRoZXRhKSxcbiAgICAgICAgeTogY2VudGVyLnkgKyByYWRpdXMgKiBNYXRoLnNpbih0aGV0YSlcbiAgICAgIH07XG4gICAgfVxuICB9O1xuXG4gIGVsZXMubm9kZXMoKS5sYXlvdXRQb3NpdGlvbnModGhpcywgb3B0aW9ucywgZ2V0UG9zaXRpb24pO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciBkZWZhdWx0cyRhID0ge1xuICBmaXQ6IHRydWUsXG4gIC8vIHdoZXRoZXIgdG8gZml0IHRoZSB2aWV3cG9ydCB0byB0aGUgZ3JhcGhcbiAgcGFkZGluZzogMzAsXG4gIC8vIHRoZSBwYWRkaW5nIG9uIGZpdFxuICBib3VuZGluZ0JveDogdW5kZWZpbmVkLFxuICAvLyBjb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cbiAgYXZvaWRPdmVybGFwOiB0cnVlLFxuICAvLyBwcmV2ZW50cyBub2RlIG92ZXJsYXAsIG1heSBvdmVyZmxvdyBib3VuZGluZ0JveCBhbmQgcmFkaXVzIGlmIG5vdCBlbm91Z2ggc3BhY2VcbiAgbm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzOiBmYWxzZSxcbiAgLy8gRXhjbHVkZXMgdGhlIGxhYmVsIHdoZW4gY2FsY3VsYXRpbmcgbm9kZSBib3VuZGluZyBib3hlcyBmb3IgdGhlIGxheW91dCBhbGdvcml0aG1cbiAgc3BhY2luZ0ZhY3RvcjogdW5kZWZpbmVkLFxuICAvLyBBcHBsaWVzIGEgbXVsdGlwbGljYXRpdmUgZmFjdG9yICg+MCkgdG8gZXhwYW5kIG9yIGNvbXByZXNzIHRoZSBvdmVyYWxsIGFyZWEgdGhhdCB0aGUgbm9kZXMgdGFrZSB1cFxuICByYWRpdXM6IHVuZGVmaW5lZCxcbiAgLy8gdGhlIHJhZGl1cyBvZiB0aGUgY2lyY2xlXG4gIHN0YXJ0QW5nbGU6IDMgLyAyICogTWF0aC5QSSxcbiAgLy8gd2hlcmUgbm9kZXMgc3RhcnQgaW4gcmFkaWFuc1xuICBzd2VlcDogdW5kZWZpbmVkLFxuICAvLyBob3cgbWFueSByYWRpYW5zIHNob3VsZCBiZSBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgbGFzdCBub2RlIChkZWZhdWx0cyB0byBmdWxsIGNpcmNsZSlcbiAgY2xvY2t3aXNlOiB0cnVlLFxuICAvLyB3aGV0aGVyIHRoZSBsYXlvdXQgc2hvdWxkIGdvIGNsb2Nrd2lzZSAodHJ1ZSkgb3IgY291bnRlcmNsb2Nrd2lzZS9hbnRpY2xvY2t3aXNlIChmYWxzZSlcbiAgc29ydDogdW5kZWZpbmVkLFxuICAvLyBhIHNvcnRpbmcgZnVuY3Rpb24gdG8gb3JkZXIgdGhlIG5vZGVzOyBlLmcuIGZ1bmN0aW9uKGEsIGIpeyByZXR1cm4gYS5kYXRhKCd3ZWlnaHQnKSAtIGIuZGF0YSgnd2VpZ2h0JykgfVxuICBhbmltYXRlOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGFuaW1hdGVGaWx0ZXI6IGZ1bmN0aW9uIGFuaW1hdGVGaWx0ZXIobm9kZSwgaSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAvLyBhIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBub2RlIHNob3VsZCBiZSBhbmltYXRlZC4gIEFsbCBub2RlcyBhbmltYXRlZCBieSBkZWZhdWx0IG9uIGFuaW1hdGUgZW5hYmxlZC4gIE5vbi1hbmltYXRlZCBub2RlcyBhcmUgcG9zaXRpb25lZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBsYXlvdXQgc3RhcnRzXG4gIHJlYWR5OiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHJlYWR5XG4gIHN0b3A6IHVuZGVmaW5lZCxcbiAgLy8gY2FsbGJhY2sgb24gbGF5b3V0c3RvcFxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3NpdGlvbikge1xuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfSAvLyB0cmFuc2Zvcm0gYSBnaXZlbiBub2RlIHBvc2l0aW9uLiBVc2VmdWwgZm9yIGNoYW5naW5nIGZsb3cgZGlyZWN0aW9uIGluIGRpc2NyZXRlIGxheW91dHMgXG5cbn07XG5cbmZ1bmN0aW9uIENpcmNsZUxheW91dChvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkYSwgb3B0aW9ucyk7XG59XG5cbkNpcmNsZUxheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcGFyYW1zID0gdGhpcy5vcHRpb25zO1xuICB2YXIgb3B0aW9ucyA9IHBhcmFtcztcbiAgdmFyIGN5ID0gcGFyYW1zLmN5O1xuICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgdmFyIGNsb2Nrd2lzZSA9IG9wdGlvbnMuY291bnRlcmNsb2Nrd2lzZSAhPT0gdW5kZWZpbmVkID8gIW9wdGlvbnMuY291bnRlcmNsb2Nrd2lzZSA6IG9wdGlvbnMuY2xvY2t3aXNlO1xuICB2YXIgbm9kZXMgPSBlbGVzLm5vZGVzKCkubm90KCc6cGFyZW50Jyk7XG5cbiAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgIG5vZGVzID0gbm9kZXMuc29ydChvcHRpb25zLnNvcnQpO1xuICB9XG5cbiAgdmFyIGJiID0gbWFrZUJvdW5kaW5nQm94KG9wdGlvbnMuYm91bmRpbmdCb3ggPyBvcHRpb25zLmJvdW5kaW5nQm94IDoge1xuICAgIHgxOiAwLFxuICAgIHkxOiAwLFxuICAgIHc6IGN5LndpZHRoKCksXG4gICAgaDogY3kuaGVpZ2h0KClcbiAgfSk7XG4gIHZhciBjZW50ZXIgPSB7XG4gICAgeDogYmIueDEgKyBiYi53IC8gMixcbiAgICB5OiBiYi55MSArIGJiLmggLyAyXG4gIH07XG4gIHZhciBzd2VlcCA9IG9wdGlvbnMuc3dlZXAgPT09IHVuZGVmaW5lZCA/IDIgKiBNYXRoLlBJIC0gMiAqIE1hdGguUEkgLyBub2Rlcy5sZW5ndGggOiBvcHRpb25zLnN3ZWVwO1xuICB2YXIgZFRoZXRhID0gc3dlZXAgLyBNYXRoLm1heCgxLCBub2Rlcy5sZW5ndGggLSAxKTtcbiAgdmFyIHI7XG4gIHZhciBtaW5EaXN0YW5jZSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBuID0gbm9kZXNbaV07XG4gICAgdmFyIG5iYiA9IG4ubGF5b3V0RGltZW5zaW9ucyhvcHRpb25zKTtcbiAgICB2YXIgdyA9IG5iYi53O1xuICAgIHZhciBoID0gbmJiLmg7XG4gICAgbWluRGlzdGFuY2UgPSBNYXRoLm1heChtaW5EaXN0YW5jZSwgdywgaCk7XG4gIH1cblxuICBpZiAobnVtYmVyKG9wdGlvbnMucmFkaXVzKSkge1xuICAgIHIgPSBvcHRpb25zLnJhZGl1cztcbiAgfSBlbHNlIGlmIChub2Rlcy5sZW5ndGggPD0gMSkge1xuICAgIHIgPSAwO1xuICB9IGVsc2Uge1xuICAgIHIgPSBNYXRoLm1pbihiYi5oLCBiYi53KSAvIDIgLSBtaW5EaXN0YW5jZTtcbiAgfSAvLyBjYWxjdWxhdGUgdGhlIHJhZGl1c1xuXG5cbiAgaWYgKG5vZGVzLmxlbmd0aCA+IDEgJiYgb3B0aW9ucy5hdm9pZE92ZXJsYXApIHtcbiAgICAvLyBidXQgb25seSBpZiBtb3JlIHRoYW4gb25lIG5vZGUgKGNhbid0IG92ZXJsYXApXG4gICAgbWluRGlzdGFuY2UgKj0gMS43NTsgLy8ganVzdCB0byBoYXZlIHNvbWUgbmljZSBzcGFjaW5nXG5cbiAgICB2YXIgZGNvcyA9IE1hdGguY29zKGRUaGV0YSkgLSBNYXRoLmNvcygwKTtcbiAgICB2YXIgZHNpbiA9IE1hdGguc2luKGRUaGV0YSkgLSBNYXRoLnNpbigwKTtcbiAgICB2YXIgck1pbiA9IE1hdGguc3FydChtaW5EaXN0YW5jZSAqIG1pbkRpc3RhbmNlIC8gKGRjb3MgKiBkY29zICsgZHNpbiAqIGRzaW4pKTsgLy8gcy50LiBubyBub2RlcyBvdmVybGFwcGluZ1xuXG4gICAgciA9IE1hdGgubWF4KHJNaW4sIHIpO1xuICB9XG5cbiAgdmFyIGdldFBvcyA9IGZ1bmN0aW9uIGdldFBvcyhlbGUsIGkpIHtcbiAgICB2YXIgdGhldGEgPSBvcHRpb25zLnN0YXJ0QW5nbGUgKyBpICogZFRoZXRhICogKGNsb2Nrd2lzZSA/IDEgOiAtMSk7XG4gICAgdmFyIHJ4ID0gciAqIE1hdGguY29zKHRoZXRhKTtcbiAgICB2YXIgcnkgPSByICogTWF0aC5zaW4odGhldGEpO1xuICAgIHZhciBwb3MgPSB7XG4gICAgICB4OiBjZW50ZXIueCArIHJ4LFxuICAgICAgeTogY2VudGVyLnkgKyByeVxuICAgIH07XG4gICAgcmV0dXJuIHBvcztcbiAgfTtcblxuICBlbGVzLm5vZGVzKCkubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGdldFBvcyk7XG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxudmFyIGRlZmF1bHRzJGIgPSB7XG4gIGZpdDogdHJ1ZSxcbiAgLy8gd2hldGhlciB0byBmaXQgdGhlIHZpZXdwb3J0IHRvIHRoZSBncmFwaFxuICBwYWRkaW5nOiAzMCxcbiAgLy8gdGhlIHBhZGRpbmcgb24gZml0XG4gIHN0YXJ0QW5nbGU6IDMgLyAyICogTWF0aC5QSSxcbiAgLy8gd2hlcmUgbm9kZXMgc3RhcnQgaW4gcmFkaWFuc1xuICBzd2VlcDogdW5kZWZpbmVkLFxuICAvLyBob3cgbWFueSByYWRpYW5zIHNob3VsZCBiZSBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgbGFzdCBub2RlIChkZWZhdWx0cyB0byBmdWxsIGNpcmNsZSlcbiAgY2xvY2t3aXNlOiB0cnVlLFxuICAvLyB3aGV0aGVyIHRoZSBsYXlvdXQgc2hvdWxkIGdvIGNsb2Nrd2lzZSAodHJ1ZSkgb3IgY291bnRlcmNsb2Nrd2lzZS9hbnRpY2xvY2t3aXNlIChmYWxzZSlcbiAgZXF1aWRpc3RhbnQ6IGZhbHNlLFxuICAvLyB3aGV0aGVyIGxldmVscyBoYXZlIGFuIGVxdWFsIHJhZGlhbCBkaXN0YW5jZSBiZXR3ZW4gdGhlbSwgbWF5IGNhdXNlIGJvdW5kaW5nIGJveCBvdmVyZmxvd1xuICBtaW5Ob2RlU3BhY2luZzogMTAsXG4gIC8vIG1pbiBzcGFjaW5nIGJldHdlZW4gb3V0c2lkZSBvZiBub2RlcyAodXNlZCBmb3IgcmFkaXVzIGFkanVzdG1lbnQpXG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsXG4gIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICBhdm9pZE92ZXJsYXA6IHRydWUsXG4gIC8vIHByZXZlbnRzIG5vZGUgb3ZlcmxhcCwgbWF5IG92ZXJmbG93IGJvdW5kaW5nQm94IGlmIG5vdCBlbm91Z2ggc3BhY2VcbiAgbm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzOiBmYWxzZSxcbiAgLy8gRXhjbHVkZXMgdGhlIGxhYmVsIHdoZW4gY2FsY3VsYXRpbmcgbm9kZSBib3VuZGluZyBib3hlcyBmb3IgdGhlIGxheW91dCBhbGdvcml0aG1cbiAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gIC8vIGhlaWdodCBvZiBsYXlvdXQgYXJlYSAob3ZlcnJpZGVzIGNvbnRhaW5lciBoZWlnaHQpXG4gIHdpZHRoOiB1bmRlZmluZWQsXG4gIC8vIHdpZHRoIG9mIGxheW91dCBhcmVhIChvdmVycmlkZXMgY29udGFpbmVyIHdpZHRoKVxuICBzcGFjaW5nRmFjdG9yOiB1bmRlZmluZWQsXG4gIC8vIEFwcGxpZXMgYSBtdWx0aXBsaWNhdGl2ZSBmYWN0b3IgKD4wKSB0byBleHBhbmQgb3IgY29tcHJlc3MgdGhlIG92ZXJhbGwgYXJlYSB0aGF0IHRoZSBub2RlcyB0YWtlIHVwXG4gIGNvbmNlbnRyaWM6IGZ1bmN0aW9uIGNvbmNlbnRyaWMobm9kZSkge1xuICAgIC8vIHJldHVybnMgbnVtZXJpYyB2YWx1ZSBmb3IgZWFjaCBub2RlLCBwbGFjaW5nIGhpZ2hlciBub2RlcyBpbiBsZXZlbHMgdG93YXJkcyB0aGUgY2VudHJlXG4gICAgcmV0dXJuIG5vZGUuZGVncmVlKCk7XG4gIH0sXG4gIGxldmVsV2lkdGg6IGZ1bmN0aW9uIGxldmVsV2lkdGgobm9kZXMpIHtcbiAgICAvLyB0aGUgdmFyaWF0aW9uIG9mIGNvbmNlbnRyaWMgdmFsdWVzIGluIGVhY2ggbGV2ZWxcbiAgICByZXR1cm4gbm9kZXMubWF4RGVncmVlKCkgLyA0O1xuICB9LFxuICBhbmltYXRlOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGFuaW1hdGVGaWx0ZXI6IGZ1bmN0aW9uIGFuaW1hdGVGaWx0ZXIobm9kZSwgaSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAvLyBhIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBub2RlIHNob3VsZCBiZSBhbmltYXRlZC4gIEFsbCBub2RlcyBhbmltYXRlZCBieSBkZWZhdWx0IG9uIGFuaW1hdGUgZW5hYmxlZC4gIE5vbi1hbmltYXRlZCBub2RlcyBhcmUgcG9zaXRpb25lZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBsYXlvdXQgc3RhcnRzXG4gIHJlYWR5OiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHJlYWR5XG4gIHN0b3A6IHVuZGVmaW5lZCxcbiAgLy8gY2FsbGJhY2sgb24gbGF5b3V0c3RvcFxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3NpdGlvbikge1xuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfSAvLyB0cmFuc2Zvcm0gYSBnaXZlbiBub2RlIHBvc2l0aW9uLiBVc2VmdWwgZm9yIGNoYW5naW5nIGZsb3cgZGlyZWN0aW9uIGluIGRpc2NyZXRlIGxheW91dHNcblxufTtcblxuZnVuY3Rpb24gQ29uY2VudHJpY0xheW91dChvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkYiwgb3B0aW9ucyk7XG59XG5cbkNvbmNlbnRyaWNMYXlvdXQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHBhcmFtcyA9IHRoaXMub3B0aW9ucztcbiAgdmFyIG9wdGlvbnMgPSBwYXJhbXM7XG4gIHZhciBjbG9ja3dpc2UgPSBvcHRpb25zLmNvdW50ZXJjbG9ja3dpc2UgIT09IHVuZGVmaW5lZCA/ICFvcHRpb25zLmNvdW50ZXJjbG9ja3dpc2UgOiBvcHRpb25zLmNsb2Nrd2lzZTtcbiAgdmFyIGN5ID0gcGFyYW1zLmN5O1xuICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgdmFyIG5vZGVzID0gZWxlcy5ub2RlcygpLm5vdCgnOnBhcmVudCcpO1xuICB2YXIgYmIgPSBtYWtlQm91bmRpbmdCb3gob3B0aW9ucy5ib3VuZGluZ0JveCA/IG9wdGlvbnMuYm91bmRpbmdCb3ggOiB7XG4gICAgeDE6IDAsXG4gICAgeTE6IDAsXG4gICAgdzogY3kud2lkdGgoKSxcbiAgICBoOiBjeS5oZWlnaHQoKVxuICB9KTtcbiAgdmFyIGNlbnRlciA9IHtcbiAgICB4OiBiYi54MSArIGJiLncgLyAyLFxuICAgIHk6IGJiLnkxICsgYmIuaCAvIDJcbiAgfTtcbiAgdmFyIG5vZGVWYWx1ZXMgPSBbXTsgLy8geyBub2RlLCB2YWx1ZSB9XG5cbiAgdmFyIG1heE5vZGVTaXplID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgdmFsdWUgPSB2b2lkIDA7IC8vIGNhbGN1bGF0ZSB0aGUgbm9kZSB2YWx1ZVxuXG4gICAgdmFsdWUgPSBvcHRpb25zLmNvbmNlbnRyaWMobm9kZSk7XG4gICAgbm9kZVZhbHVlcy5wdXNoKHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIG5vZGU6IG5vZGVcbiAgICB9KTsgLy8gZm9yIHN0eWxlIG1hcHBpbmdcblxuICAgIG5vZGUuX3ByaXZhdGUuc2NyYXRjaC5jb25jZW50cmljID0gdmFsdWU7XG4gIH0gLy8gaW4gY2FzZSB3ZSB1c2VkIHRoZSBgY29uY2VudHJpY2AgaW4gc3R5bGVcblxuXG4gIG5vZGVzLnVwZGF0ZVN0eWxlKCk7IC8vIGNhbGN1bGF0ZSBtYXggc2l6ZSBub3cgYmFzZWQgb24gcG90ZW50aWFsbHkgdXBkYXRlZCBtYXBwZXJzXG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG5vZGVzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBfbm9kZSA9IG5vZGVzW19pXTtcblxuICAgIHZhciBuYmIgPSBfbm9kZS5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuXG4gICAgbWF4Tm9kZVNpemUgPSBNYXRoLm1heChtYXhOb2RlU2l6ZSwgbmJiLncsIG5iYi5oKTtcbiAgfSAvLyBzb3J0IG5vZGUgdmFsdWVzIGluIGRlc2NyZWFzaW5nIG9yZGVyXG5cblxuICBub2RlVmFsdWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi52YWx1ZSAtIGEudmFsdWU7XG4gIH0pO1xuICB2YXIgbGV2ZWxXaWR0aCA9IG9wdGlvbnMubGV2ZWxXaWR0aChub2Rlcyk7IC8vIHB1dCB0aGUgdmFsdWVzIGludG8gbGV2ZWxzXG5cbiAgdmFyIGxldmVscyA9IFtbXV07XG4gIHZhciBjdXJyZW50TGV2ZWwgPSBsZXZlbHNbMF07XG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbm9kZVZhbHVlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIHZhbCA9IG5vZGVWYWx1ZXNbX2kyXTtcblxuICAgIGlmIChjdXJyZW50TGV2ZWwubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhjdXJyZW50TGV2ZWxbMF0udmFsdWUgLSB2YWwudmFsdWUpO1xuXG4gICAgICBpZiAoZGlmZiA+PSBsZXZlbFdpZHRoKSB7XG4gICAgICAgIGN1cnJlbnRMZXZlbCA9IFtdO1xuICAgICAgICBsZXZlbHMucHVzaChjdXJyZW50TGV2ZWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN1cnJlbnRMZXZlbC5wdXNoKHZhbCk7XG4gIH0gLy8gY3JlYXRlIHBvc2l0aW9ucyBmcm9tIGxldmVsc1xuXG5cbiAgdmFyIG1pbkRpc3QgPSBtYXhOb2RlU2l6ZSArIG9wdGlvbnMubWluTm9kZVNwYWNpbmc7IC8vIG1pbiBkaXN0IGJldHdlZW4gbm9kZXNcblxuICBpZiAoIW9wdGlvbnMuYXZvaWRPdmVybGFwKSB7XG4gICAgLy8gdGhlbiBzdHJpY3RseSBjb25zdHJhaW4gdG8gYmJcbiAgICB2YXIgZmlyc3RMdmxIYXNNdWx0aSA9IGxldmVscy5sZW5ndGggPiAwICYmIGxldmVsc1swXS5sZW5ndGggPiAxO1xuICAgIHZhciBtYXhSID0gTWF0aC5taW4oYmIudywgYmIuaCkgLyAyIC0gbWluRGlzdDtcbiAgICB2YXIgclN0ZXAgPSBtYXhSIC8gKGxldmVscy5sZW5ndGggKyBmaXJzdEx2bEhhc011bHRpID8gMSA6IDApO1xuICAgIG1pbkRpc3QgPSBNYXRoLm1pbihtaW5EaXN0LCByU3RlcCk7XG4gIH0gLy8gZmluZCB0aGUgbWV0cmljcyBmb3IgZWFjaCBsZXZlbFxuXG5cbiAgdmFyIHIgPSAwO1xuXG4gIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGxldmVscy5sZW5ndGg7IF9pMysrKSB7XG4gICAgdmFyIGxldmVsID0gbGV2ZWxzW19pM107XG4gICAgdmFyIHN3ZWVwID0gb3B0aW9ucy5zd2VlcCA9PT0gdW5kZWZpbmVkID8gMiAqIE1hdGguUEkgLSAyICogTWF0aC5QSSAvIGxldmVsLmxlbmd0aCA6IG9wdGlvbnMuc3dlZXA7XG4gICAgdmFyIGRUaGV0YSA9IGxldmVsLmRUaGV0YSA9IHN3ZWVwIC8gTWF0aC5tYXgoMSwgbGV2ZWwubGVuZ3RoIC0gMSk7IC8vIGNhbGN1bGF0ZSB0aGUgcmFkaXVzXG5cbiAgICBpZiAobGV2ZWwubGVuZ3RoID4gMSAmJiBvcHRpb25zLmF2b2lkT3ZlcmxhcCkge1xuICAgICAgLy8gYnV0IG9ubHkgaWYgbW9yZSB0aGFuIG9uZSBub2RlIChjYW4ndCBvdmVybGFwKVxuICAgICAgdmFyIGRjb3MgPSBNYXRoLmNvcyhkVGhldGEpIC0gTWF0aC5jb3MoMCk7XG4gICAgICB2YXIgZHNpbiA9IE1hdGguc2luKGRUaGV0YSkgLSBNYXRoLnNpbigwKTtcbiAgICAgIHZhciByTWluID0gTWF0aC5zcXJ0KG1pbkRpc3QgKiBtaW5EaXN0IC8gKGRjb3MgKiBkY29zICsgZHNpbiAqIGRzaW4pKTsgLy8gcy50LiBubyBub2RlcyBvdmVybGFwcGluZ1xuXG4gICAgICByID0gTWF0aC5tYXgock1pbiwgcik7XG4gICAgfVxuXG4gICAgbGV2ZWwuciA9IHI7XG4gICAgciArPSBtaW5EaXN0O1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuZXF1aWRpc3RhbnQpIHtcbiAgICB2YXIgckRlbHRhTWF4ID0gMDtcbiAgICB2YXIgX3IgPSAwO1xuXG4gICAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgbGV2ZWxzLmxlbmd0aDsgX2k0KyspIHtcbiAgICAgIHZhciBfbGV2ZWwgPSBsZXZlbHNbX2k0XTtcbiAgICAgIHZhciByRGVsdGEgPSBfbGV2ZWwuciAtIF9yO1xuICAgICAgckRlbHRhTWF4ID0gTWF0aC5tYXgockRlbHRhTWF4LCByRGVsdGEpO1xuICAgIH1cblxuICAgIF9yID0gMDtcblxuICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IGxldmVscy5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICB2YXIgX2xldmVsMiA9IGxldmVsc1tfaTVdO1xuXG4gICAgICBpZiAoX2k1ID09PSAwKSB7XG4gICAgICAgIF9yID0gX2xldmVsMi5yO1xuICAgICAgfVxuXG4gICAgICBfbGV2ZWwyLnIgPSBfcjtcbiAgICAgIF9yICs9IHJEZWx0YU1heDtcbiAgICB9XG4gIH0gLy8gY2FsY3VsYXRlIHRoZSBub2RlIHBvc2l0aW9uc1xuXG5cbiAgdmFyIHBvcyA9IHt9OyAvLyBpZCA9PiBwb3NpdGlvblxuXG4gIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IGxldmVscy5sZW5ndGg7IF9pNisrKSB7XG4gICAgdmFyIF9sZXZlbDMgPSBsZXZlbHNbX2k2XTtcbiAgICB2YXIgX2RUaGV0YSA9IF9sZXZlbDMuZFRoZXRhO1xuICAgIHZhciBfcjIgPSBfbGV2ZWwzLnI7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IF9sZXZlbDMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBfdmFsID0gX2xldmVsM1tqXTtcbiAgICAgIHZhciB0aGV0YSA9IG9wdGlvbnMuc3RhcnRBbmdsZSArIChjbG9ja3dpc2UgPyAxIDogLTEpICogX2RUaGV0YSAqIGo7XG4gICAgICB2YXIgcCA9IHtcbiAgICAgICAgeDogY2VudGVyLnggKyBfcjIgKiBNYXRoLmNvcyh0aGV0YSksXG4gICAgICAgIHk6IGNlbnRlci55ICsgX3IyICogTWF0aC5zaW4odGhldGEpXG4gICAgICB9O1xuICAgICAgcG9zW192YWwubm9kZS5pZCgpXSA9IHA7XG4gICAgfVxuICB9IC8vIHBvc2l0aW9uIHRoZSBub2Rlc1xuXG5cbiAgZWxlcy5ub2RlcygpLmxheW91dFBvc2l0aW9ucyh0aGlzLCBvcHRpb25zLCBmdW5jdGlvbiAoZWxlKSB7XG4gICAgdmFyIGlkID0gZWxlLmlkKCk7XG4gICAgcmV0dXJuIHBvc1tpZF07XG4gIH0pO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbi8qXG5UaGUgQ29TRSBsYXlvdXQgd2FzIHdyaXR0ZW4gYnkgR2VyYXJkbyBIdWNrLlxuaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2dlcmFyZG9odWNrL1xuXG5CYXNlZCBvbiB0aGUgZm9sbG93aW5nIGFydGljbGU6XG5odHRwOi8vZGwuYWNtLm9yZy9jaXRhdGlvbi5jZm0/aWQ9MTQ5ODA0N1xuXG5Nb2RpZmljYXRpb25zIHRyYWNrZWQgb24gR2l0aHViLlxuKi9cbnZhciBERUJVRztcbi8qKlxuICogQGJyaWVmIDogIGRlZmF1bHQgbGF5b3V0IG9wdGlvbnNcbiAqL1xuXG52YXIgZGVmYXVsdHMkYyA9IHtcbiAgLy8gQ2FsbGVkIG9uIGBsYXlvdXRyZWFkeWBcbiAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge30sXG4gIC8vIENhbGxlZCBvbiBgbGF5b3V0c3RvcGBcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHt9LFxuICAvLyBXaGV0aGVyIHRvIGFuaW1hdGUgd2hpbGUgcnVubmluZyB0aGUgbGF5b3V0XG4gIC8vIHRydWUgOiBBbmltYXRlIGNvbnRpbnVvdXNseSBhcyB0aGUgbGF5b3V0IGlzIHJ1bm5pbmdcbiAgLy8gZmFsc2UgOiBKdXN0IHNob3cgdGhlIGVuZCByZXN1bHRcbiAgLy8gJ2VuZCcgOiBBbmltYXRlIHdpdGggdGhlIGVuZCByZXN1bHQsIGZyb20gdGhlIGluaXRpYWwgcG9zaXRpb25zIHRvIHRoZSBlbmQgcG9zaXRpb25zXG4gIGFuaW1hdGU6IHRydWUsXG4gIC8vIEVhc2luZyBvZiB0aGUgYW5pbWF0aW9uIGZvciBhbmltYXRlOidlbmQnXG4gIGFuaW1hdGlvbkVhc2luZzogdW5kZWZpbmVkLFxuICAvLyBUaGUgZHVyYXRpb24gb2YgdGhlIGFuaW1hdGlvbiBmb3IgYW5pbWF0ZTonZW5kJ1xuICBhbmltYXRpb25EdXJhdGlvbjogdW5kZWZpbmVkLFxuICAvLyBBIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBub2RlIHNob3VsZCBiZSBhbmltYXRlZFxuICAvLyBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWRcbiAgLy8gTm9uLWFuaW1hdGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGxheW91dCBzdGFydHNcbiAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24gYW5pbWF0ZUZpbHRlcihub2RlLCBpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIC8vIFRoZSBsYXlvdXQgYW5pbWF0ZXMgb25seSBhZnRlciB0aGlzIG1hbnkgbWlsbGlzZWNvbmRzIGZvciBhbmltYXRlOnRydWVcbiAgLy8gKHByZXZlbnRzIGZsYXNoaW5nIG9uIGZhc3QgcnVucylcbiAgYW5pbWF0aW9uVGhyZXNob2xkOiAyNTAsXG4gIC8vIE51bWJlciBvZiBpdGVyYXRpb25zIGJldHdlZW4gY29uc2VjdXRpdmUgc2NyZWVuIHBvc2l0aW9ucyB1cGRhdGVcbiAgcmVmcmVzaDogMjAsXG4gIC8vIFdoZXRoZXIgdG8gZml0IHRoZSBuZXR3b3JrIHZpZXcgYWZ0ZXIgd2hlbiBkb25lXG4gIGZpdDogdHJ1ZSxcbiAgLy8gUGFkZGluZyBvbiBmaXRcbiAgcGFkZGluZzogMzAsXG4gIC8vIENvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICBib3VuZGluZ0JveDogdW5kZWZpbmVkLFxuICAvLyBFeGNsdWRlcyB0aGUgbGFiZWwgd2hlbiBjYWxjdWxhdGluZyBub2RlIGJvdW5kaW5nIGJveGVzIGZvciB0aGUgbGF5b3V0IGFsZ29yaXRobVxuICBub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHM6IGZhbHNlLFxuICAvLyBSYW5kb21pemUgdGhlIGluaXRpYWwgcG9zaXRpb25zIG9mIHRoZSBub2RlcyAodHJ1ZSkgb3IgdXNlIGV4aXN0aW5nIHBvc2l0aW9ucyAoZmFsc2UpXG4gIHJhbmRvbWl6ZTogZmFsc2UsXG4gIC8vIEV4dHJhIHNwYWNpbmcgYmV0d2VlbiBjb21wb25lbnRzIGluIG5vbi1jb21wb3VuZCBncmFwaHNcbiAgY29tcG9uZW50U3BhY2luZzogNDAsXG4gIC8vIE5vZGUgcmVwdWxzaW9uIChub24gb3ZlcmxhcHBpbmcpIG11bHRpcGxpZXJcbiAgbm9kZVJlcHVsc2lvbjogZnVuY3Rpb24gbm9kZVJlcHVsc2lvbihub2RlKSB7XG4gICAgcmV0dXJuIDIwNDg7XG4gIH0sXG4gIC8vIE5vZGUgcmVwdWxzaW9uIChvdmVybGFwcGluZykgbXVsdGlwbGllclxuICBub2RlT3ZlcmxhcDogNCxcbiAgLy8gSWRlYWwgZWRnZSAobm9uIG5lc3RlZCkgbGVuZ3RoXG4gIGlkZWFsRWRnZUxlbmd0aDogZnVuY3Rpb24gaWRlYWxFZGdlTGVuZ3RoKGVkZ2UpIHtcbiAgICByZXR1cm4gMzI7XG4gIH0sXG4gIC8vIERpdmlzb3IgdG8gY29tcHV0ZSBlZGdlIGZvcmNlc1xuICBlZGdlRWxhc3RpY2l0eTogZnVuY3Rpb24gZWRnZUVsYXN0aWNpdHkoZWRnZSkge1xuICAgIHJldHVybiAzMjtcbiAgfSxcbiAgLy8gTmVzdGluZyBmYWN0b3IgKG11bHRpcGxpZXIpIHRvIGNvbXB1dGUgaWRlYWwgZWRnZSBsZW5ndGggZm9yIG5lc3RlZCBlZGdlc1xuICBuZXN0aW5nRmFjdG9yOiAxLjIsXG4gIC8vIEdyYXZpdHkgZm9yY2UgKGNvbnN0YW50KVxuICBncmF2aXR5OiAxLFxuICAvLyBNYXhpbXVtIG51bWJlciBvZiBpdGVyYXRpb25zIHRvIHBlcmZvcm1cbiAgbnVtSXRlcjogMTAwMCxcbiAgLy8gSW5pdGlhbCB0ZW1wZXJhdHVyZSAobWF4aW11bSBub2RlIGRpc3BsYWNlbWVudClcbiAgaW5pdGlhbFRlbXA6IDEwMDAsXG4gIC8vIENvb2xpbmcgZmFjdG9yIChob3cgdGhlIHRlbXBlcmF0dXJlIGlzIHJlZHVjZWQgYmV0d2VlbiBjb25zZWN1dGl2ZSBpdGVyYXRpb25zXG4gIGNvb2xpbmdGYWN0b3I6IDAuOTksXG4gIC8vIExvd2VyIHRlbXBlcmF0dXJlIHRocmVzaG9sZCAoYmVsb3cgdGhpcyBwb2ludCB0aGUgbGF5b3V0IHdpbGwgZW5kKVxuICBtaW5UZW1wOiAxLjBcbn07XG4vKipcbiAqIEBicmllZiAgICAgICA6IGNvbnN0cnVjdG9yXG4gKiBAYXJnIG9wdGlvbnMgOiBvYmplY3QgY29udGFpbmluZyBsYXlvdXQgb3B0aW9uc1xuICovXG5cbmZ1bmN0aW9uIENvc2VMYXlvdXQob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBleHRlbmQoe30sIGRlZmF1bHRzJGMsIG9wdGlvbnMpO1xuICB0aGlzLm9wdGlvbnMubGF5b3V0ID0gdGhpcztcbn1cbi8qKlxuICogQGJyaWVmIDogcnVucyB0aGUgbGF5b3V0XG4gKi9cblxuXG5Db3NlTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICB2YXIgY3kgPSBvcHRpb25zLmN5O1xuICB2YXIgbGF5b3V0ID0gdGhpcztcbiAgbGF5b3V0LnN0b3BwZWQgPSBmYWxzZTtcblxuICBpZiAob3B0aW9ucy5hbmltYXRlID09PSB0cnVlIHx8IG9wdGlvbnMuYW5pbWF0ZSA9PT0gZmFsc2UpIHtcbiAgICBsYXlvdXQuZW1pdCh7XG4gICAgICB0eXBlOiAnbGF5b3V0c3RhcnQnLFxuICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICB9KTtcbiAgfSAvLyBTZXQgREVCVUcgLSBHbG9iYWwgdmFyaWFibGVcblxuXG4gIGlmICh0cnVlID09PSBvcHRpb25zLmRlYnVnKSB7XG4gICAgREVCVUcgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIERFQlVHID0gZmFsc2U7XG4gIH0gLy8gSW5pdGlhbGl6ZSBsYXlvdXQgaW5mb1xuXG5cbiAgdmFyIGxheW91dEluZm8gPSBjcmVhdGVMYXlvdXRJbmZvKGN5LCBsYXlvdXQsIG9wdGlvbnMpOyAvLyBTaG93IExheW91dEluZm8gY29udGVudHMgaWYgZGVidWdnaW5nXG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcHJpbnRMYXlvdXRJbmZvKGxheW91dEluZm8pO1xuICB9IC8vIElmIHJlcXVpcmVkLCByYW5kb21pemUgbm9kZSBwb3NpdGlvbnNcblxuXG4gIGlmIChvcHRpb25zLnJhbmRvbWl6ZSkge1xuICAgIHJhbmRvbWl6ZVBvc2l0aW9ucyhsYXlvdXRJbmZvKTtcbiAgfVxuXG4gIHZhciBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZU5vdygpO1xuXG4gIHZhciByZWZyZXNoID0gZnVuY3Rpb24gcmVmcmVzaCgpIHtcbiAgICByZWZyZXNoUG9zaXRpb25zKGxheW91dEluZm8sIGN5LCBvcHRpb25zKTsgLy8gRml0IHRoZSBncmFwaCBpZiBuZWNlc3NhcnlcblxuICAgIGlmICh0cnVlID09PSBvcHRpb25zLmZpdCkge1xuICAgICAgY3kuZml0KG9wdGlvbnMucGFkZGluZyk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBtYWluTG9vcCA9IGZ1bmN0aW9uIG1haW5Mb29wKGkpIHtcbiAgICBpZiAobGF5b3V0LnN0b3BwZWQgfHwgaSA+PSBvcHRpb25zLm51bUl0ZXIpIHtcbiAgICAgIC8vIGxvZ0RlYnVnKFwiTGF5b3V0IG1hbnVhbGx5IHN0b3BwZWQuIFN0b3BwaW5nIGNvbXB1dGF0aW9uIGluIHN0ZXAgXCIgKyBpKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIERvIG9uZSBzdGVwIGluIHRoZSBwaGlzaWNhbCBzaW11bGF0aW9uXG5cblxuICAgIHN0ZXAkMShsYXlvdXRJbmZvLCBvcHRpb25zKTsgLy8gVXBkYXRlIHRlbXBlcmF0dXJlXG5cbiAgICBsYXlvdXRJbmZvLnRlbXBlcmF0dXJlID0gbGF5b3V0SW5mby50ZW1wZXJhdHVyZSAqIG9wdGlvbnMuY29vbGluZ0ZhY3RvcjsgLy8gbG9nRGVidWcoXCJOZXcgdGVtcGVyYXR1cmU6IFwiICsgbGF5b3V0SW5mby50ZW1wZXJhdHVyZSk7XG5cbiAgICBpZiAobGF5b3V0SW5mby50ZW1wZXJhdHVyZSA8IG9wdGlvbnMubWluVGVtcCkge1xuICAgICAgLy8gbG9nRGVidWcoXCJUZW1wZXJhdHVyZSBkcm9wIGJlbG93IG1pbmltdW0gdGhyZXNob2xkLiBTdG9wcGluZyBjb21wdXRhdGlvbiBpbiBzdGVwIFwiICsgaSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgdmFyIGRvbmUgPSBmdW5jdGlvbiBkb25lKCkge1xuICAgIGlmIChvcHRpb25zLmFuaW1hdGUgPT09IHRydWUgfHwgb3B0aW9ucy5hbmltYXRlID09PSBmYWxzZSkge1xuICAgICAgcmVmcmVzaCgpOyAvLyBMYXlvdXQgaGFzIGZpbmlzaGVkXG5cbiAgICAgIGxheW91dC5vbmUoJ2xheW91dHN0b3AnLCBvcHRpb25zLnN0b3ApO1xuICAgICAgbGF5b3V0LmVtaXQoe1xuICAgICAgICB0eXBlOiAnbGF5b3V0c3RvcCcsXG4gICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGVzID0gb3B0aW9ucy5lbGVzLm5vZGVzKCk7XG4gICAgICB2YXIgZ2V0U2NhbGVkUG9zID0gZ2V0U2NhbGVJbkJvdW5kc0ZuKGxheW91dEluZm8sIG9wdGlvbnMsIG5vZGVzKTtcbiAgICAgIG5vZGVzLmxheW91dFBvc2l0aW9ucyhsYXlvdXQsIG9wdGlvbnMsIGdldFNjYWxlZFBvcyk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpID0gMDtcbiAgdmFyIGxvb3BSZXQgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zLmFuaW1hdGUgPT09IHRydWUpIHtcbiAgICB2YXIgZnJhbWUgPSBmdW5jdGlvbiBmcmFtZSgpIHtcbiAgICAgIHZhciBmID0gMDtcblxuICAgICAgd2hpbGUgKGxvb3BSZXQgJiYgZiA8IG9wdGlvbnMucmVmcmVzaCkge1xuICAgICAgICBsb29wUmV0ID0gbWFpbkxvb3AoaSk7XG4gICAgICAgIGkrKztcbiAgICAgICAgZisrO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWxvb3BSZXQpIHtcbiAgICAgICAgLy8gaXQncyBkb25lXG4gICAgICAgIHNlcGFyYXRlQ29tcG9uZW50cyhsYXlvdXRJbmZvLCBvcHRpb25zKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5vdyA9IHBlcmZvcm1hbmNlTm93KCk7XG5cbiAgICAgICAgaWYgKG5vdyAtIHN0YXJ0VGltZSA+PSBvcHRpb25zLmFuaW1hdGlvblRocmVzaG9sZCkge1xuICAgICAgICAgIHJlZnJlc2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZyYW1lKCk7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKGxvb3BSZXQpIHtcbiAgICAgIGxvb3BSZXQgPSBtYWluTG9vcChpKTtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICBzZXBhcmF0ZUNvbXBvbmVudHMobGF5b3V0SW5mbywgb3B0aW9ucyk7XG4gICAgZG9uZSgpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG59O1xuLyoqXG4gKiBAYnJpZWYgOiBjYWxsZWQgb24gY29udGludW91cyBsYXlvdXRzIHRvIHN0b3AgdGhlbSBiZWZvcmUgdGhleSBmaW5pc2hcbiAqL1xuXG5cbkNvc2VMYXlvdXQucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc3RvcHBlZCA9IHRydWU7XG5cbiAgaWYgKHRoaXMudGhyZWFkKSB7XG4gICAgdGhpcy50aHJlYWQuc3RvcCgpO1xuICB9XG5cbiAgdGhpcy5lbWl0KCdsYXlvdXRzdG9wJyk7XG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuQ29zZUxheW91dC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMudGhyZWFkKSB7XG4gICAgdGhpcy50aHJlYWQuc3RvcCgpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG59O1xuLyoqXG4gKiBAYnJpZWYgICAgIDogQ3JlYXRlcyBhbiBvYmplY3Qgd2hpY2ggaXMgY29udGFpbnMgYWxsIHRoZSBkYXRhXG4gKiAgICAgICAgICAgICAgdXNlZCBpbiB0aGUgbGF5b3V0IHByb2Nlc3NcbiAqIEBhcmcgY3kgICAgOiBjeXRvc2NhcGUuanMgb2JqZWN0XG4gKiBAcmV0dXJuICAgIDogbGF5b3V0SW5mbyBvYmplY3QgaW5pdGlhbGl6ZWRcbiAqL1xuXG5cbnZhciBjcmVhdGVMYXlvdXRJbmZvID0gZnVuY3Rpb24gY3JlYXRlTGF5b3V0SW5mbyhjeSwgbGF5b3V0LCBvcHRpb25zKSB7XG4gIC8vIFNob3J0Y3V0XG4gIHZhciBlZGdlcyA9IG9wdGlvbnMuZWxlcy5lZGdlcygpO1xuICB2YXIgbm9kZXMgPSBvcHRpb25zLmVsZXMubm9kZXMoKTtcbiAgdmFyIGxheW91dEluZm8gPSB7XG4gICAgaXNDb21wb3VuZDogY3kuaGFzQ29tcG91bmROb2RlcygpLFxuICAgIGxheW91dE5vZGVzOiBbXSxcbiAgICBpZFRvSW5kZXg6IHt9LFxuICAgIG5vZGVTaXplOiBub2Rlcy5zaXplKCksXG4gICAgZ3JhcGhTZXQ6IFtdLFxuICAgIGluZGV4VG9HcmFwaDogW10sXG4gICAgbGF5b3V0RWRnZXM6IFtdLFxuICAgIGVkZ2VTaXplOiBlZGdlcy5zaXplKCksXG4gICAgdGVtcGVyYXR1cmU6IG9wdGlvbnMuaW5pdGlhbFRlbXAsXG4gICAgY2xpZW50V2lkdGg6IGN5LndpZHRoKCksXG4gICAgY2xpZW50SGVpZ2h0OiBjeS53aWR0aCgpLFxuICAgIGJvdW5kaW5nQm94OiBtYWtlQm91bmRpbmdCb3gob3B0aW9ucy5ib3VuZGluZ0JveCA/IG9wdGlvbnMuYm91bmRpbmdCb3ggOiB7XG4gICAgICB4MTogMCxcbiAgICAgIHkxOiAwLFxuICAgICAgdzogY3kud2lkdGgoKSxcbiAgICAgIGg6IGN5LmhlaWdodCgpXG4gICAgfSlcbiAgfTtcbiAgdmFyIGNvbXBvbmVudHMgPSBvcHRpb25zLmVsZXMuY29tcG9uZW50cygpO1xuICB2YXIgaWQyY21wdElkID0ge307XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNbaV07XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbXBvbmVudC5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIG5vZGUgPSBjb21wb25lbnRbal07XG4gICAgICBpZDJjbXB0SWRbbm9kZS5pZCgpXSA9IGk7XG4gICAgfVxuICB9IC8vIEl0ZXJhdGUgb3ZlciBhbGwgbm9kZXMsIGNyZWF0aW5nIGxheW91dCBub2Rlc1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICB2YXIgbiA9IG5vZGVzW2ldO1xuICAgIHZhciBuYmIgPSBuLmxheW91dERpbWVuc2lvbnMob3B0aW9ucyk7XG4gICAgdmFyIHRlbXBOb2RlID0ge307XG4gICAgdGVtcE5vZGUuaXNMb2NrZWQgPSBuLmxvY2tlZCgpO1xuICAgIHRlbXBOb2RlLmlkID0gbi5kYXRhKCdpZCcpO1xuICAgIHRlbXBOb2RlLnBhcmVudElkID0gbi5kYXRhKCdwYXJlbnQnKTtcbiAgICB0ZW1wTm9kZS5jbXB0SWQgPSBpZDJjbXB0SWRbbi5pZCgpXTtcbiAgICB0ZW1wTm9kZS5jaGlsZHJlbiA9IFtdO1xuICAgIHRlbXBOb2RlLnBvc2l0aW9uWCA9IG4ucG9zaXRpb24oJ3gnKTtcbiAgICB0ZW1wTm9kZS5wb3NpdGlvblkgPSBuLnBvc2l0aW9uKCd5Jyk7XG4gICAgdGVtcE5vZGUub2Zmc2V0WCA9IDA7XG4gICAgdGVtcE5vZGUub2Zmc2V0WSA9IDA7XG4gICAgdGVtcE5vZGUuaGVpZ2h0ID0gbmJiLnc7XG4gICAgdGVtcE5vZGUud2lkdGggPSBuYmIuaDtcbiAgICB0ZW1wTm9kZS5tYXhYID0gdGVtcE5vZGUucG9zaXRpb25YICsgdGVtcE5vZGUud2lkdGggLyAyO1xuICAgIHRlbXBOb2RlLm1pblggPSB0ZW1wTm9kZS5wb3NpdGlvblggLSB0ZW1wTm9kZS53aWR0aCAvIDI7XG4gICAgdGVtcE5vZGUubWF4WSA9IHRlbXBOb2RlLnBvc2l0aW9uWSArIHRlbXBOb2RlLmhlaWdodCAvIDI7XG4gICAgdGVtcE5vZGUubWluWSA9IHRlbXBOb2RlLnBvc2l0aW9uWSAtIHRlbXBOb2RlLmhlaWdodCAvIDI7XG4gICAgdGVtcE5vZGUucGFkTGVmdCA9IHBhcnNlRmxvYXQobi5zdHlsZSgncGFkZGluZycpKTtcbiAgICB0ZW1wTm9kZS5wYWRSaWdodCA9IHBhcnNlRmxvYXQobi5zdHlsZSgncGFkZGluZycpKTtcbiAgICB0ZW1wTm9kZS5wYWRUb3AgPSBwYXJzZUZsb2F0KG4uc3R5bGUoJ3BhZGRpbmcnKSk7XG4gICAgdGVtcE5vZGUucGFkQm90dG9tID0gcGFyc2VGbG9hdChuLnN0eWxlKCdwYWRkaW5nJykpOyAvLyBmb3JjZXNcblxuICAgIHRlbXBOb2RlLm5vZGVSZXB1bHNpb24gPSBmbihvcHRpb25zLm5vZGVSZXB1bHNpb24pID8gb3B0aW9ucy5ub2RlUmVwdWxzaW9uKG4pIDogb3B0aW9ucy5ub2RlUmVwdWxzaW9uOyAvLyBBZGQgbmV3IG5vZGVcblxuICAgIGxheW91dEluZm8ubGF5b3V0Tm9kZXMucHVzaCh0ZW1wTm9kZSk7IC8vIEFkZCBlbnRyeSB0byBpZC1pbmRleCBtYXBcblxuICAgIGxheW91dEluZm8uaWRUb0luZGV4W3RlbXBOb2RlLmlkXSA9IGk7XG4gIH0gLy8gSW5saW5lIGltcGxlbWVudGF0aW9uIG9mIGEgcXVldWUsIHVzZWQgZm9yIHRyYXZlcnNpbmcgdGhlIGdyYXBoIGluIEJGUyBvcmRlclxuXG5cbiAgdmFyIHF1ZXVlID0gW107XG4gIHZhciBzdGFydCA9IDA7IC8vIFBvaW50cyB0byB0aGUgc3RhcnQgdGhlIHF1ZXVlXG5cbiAgdmFyIGVuZCA9IC0xOyAvLyBQb2ludHMgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWVcblxuICB2YXIgdGVtcEdyYXBoID0gW107IC8vIFNlY29uZCBwYXNzIHRvIGFkZCBjaGlsZCBpbmZvcm1hdGlvbiBhbmRcbiAgLy8gaW5pdGlhbGl6ZSBxdWV1ZSBmb3IgaGllcmFyY2hpY2FsIHRyYXZlcnNhbFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ub2RlU2l6ZTsgaSsrKSB7XG4gICAgdmFyIG4gPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2ldO1xuICAgIHZhciBwX2lkID0gbi5wYXJlbnRJZDsgLy8gQ2hlY2sgaWYgbm9kZSBuIGhhcyBhIHBhcmVudCBub2RlXG5cbiAgICBpZiAobnVsbCAhPSBwX2lkKSB7XG4gICAgICAvLyBBZGQgbm9kZSBJZCB0byBwYXJlbnQncyBsaXN0IG9mIGNoaWxkcmVuXG4gICAgICBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3BfaWRdXS5jaGlsZHJlbi5wdXNoKG4uaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBhIG5vZGUgZG9lc24ndCBoYXZlIGEgcGFyZW50LCB0aGVuIGl0J3MgaW4gdGhlIHJvb3QgZ3JhcGhcbiAgICAgIHF1ZXVlWysrZW5kXSA9IG4uaWQ7XG4gICAgICB0ZW1wR3JhcGgucHVzaChuLmlkKTtcbiAgICB9XG4gIH0gLy8gQWRkIHJvb3QgZ3JhcGggdG8gZ3JhcGhTZXRcblxuXG4gIGxheW91dEluZm8uZ3JhcGhTZXQucHVzaCh0ZW1wR3JhcGgpOyAvLyBUcmF2ZXJzZSB0aGUgZ3JhcGgsIGxldmVsIGJ5IGxldmVsLFxuXG4gIHdoaWxlIChzdGFydCA8PSBlbmQpIHtcbiAgICAvLyBHZXQgdGhlIG5vZGUgdG8gdmlzaXQgYW5kIHJlbW92ZSBpdCBmcm9tIHF1ZXVlXG4gICAgdmFyIG5vZGVfaWQgPSBxdWV1ZVtzdGFydCsrXTtcbiAgICB2YXIgbm9kZV9peCA9IGxheW91dEluZm8uaWRUb0luZGV4W25vZGVfaWRdO1xuICAgIHZhciBub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tub2RlX2l4XTtcbiAgICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEFkZCBjaGlsZHJlbiBub2RlcyBhcyBhIG5ldyBncmFwaCB0byBncmFwaCBzZXRcbiAgICAgIGxheW91dEluZm8uZ3JhcGhTZXQucHVzaChjaGlsZHJlbik7IC8vIEFkZCBjaGlsZHJlbiB0byBxdWUgcXVldWUgdG8gYmUgdmlzaXRlZFxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHF1ZXVlWysrZW5kXSA9IGNoaWxkcmVuW2ldO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBDcmVhdGUgaW5kZXhUb0dyYXBoIG1hcFxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLmdyYXBoU2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGdyYXBoID0gbGF5b3V0SW5mby5ncmFwaFNldFtpXTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZ3JhcGgubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBpbmRleCA9IGxheW91dEluZm8uaWRUb0luZGV4W2dyYXBoW2pdXTtcbiAgICAgIGxheW91dEluZm8uaW5kZXhUb0dyYXBoW2luZGV4XSA9IGk7XG4gICAgfVxuICB9IC8vIEl0ZXJhdGUgb3ZlciBhbGwgZWRnZXMsIGNyZWF0aW5nIExheW91dCBFZGdlc1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLmVkZ2VTaXplOyBpKyspIHtcbiAgICB2YXIgZSA9IGVkZ2VzW2ldO1xuICAgIHZhciB0ZW1wRWRnZSA9IHt9O1xuICAgIHRlbXBFZGdlLmlkID0gZS5kYXRhKCdpZCcpO1xuICAgIHRlbXBFZGdlLnNvdXJjZUlkID0gZS5kYXRhKCdzb3VyY2UnKTtcbiAgICB0ZW1wRWRnZS50YXJnZXRJZCA9IGUuZGF0YSgndGFyZ2V0Jyk7IC8vIENvbXB1dGUgaWRlYWwgbGVuZ3RoXG5cbiAgICB2YXIgaWRlYWxMZW5ndGggPSBmbihvcHRpb25zLmlkZWFsRWRnZUxlbmd0aCkgPyBvcHRpb25zLmlkZWFsRWRnZUxlbmd0aChlKSA6IG9wdGlvbnMuaWRlYWxFZGdlTGVuZ3RoO1xuICAgIHZhciBlbGFzdGljaXR5ID0gZm4ob3B0aW9ucy5lZGdlRWxhc3RpY2l0eSkgPyBvcHRpb25zLmVkZ2VFbGFzdGljaXR5KGUpIDogb3B0aW9ucy5lZGdlRWxhc3RpY2l0eTsgLy8gQ2hlY2sgaWYgaXQncyBhbiBpbnRlciBncmFwaCBlZGdlXG5cbiAgICB2YXIgc291cmNlSXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFt0ZW1wRWRnZS5zb3VyY2VJZF07XG4gICAgdmFyIHRhcmdldEl4ID0gbGF5b3V0SW5mby5pZFRvSW5kZXhbdGVtcEVkZ2UudGFyZ2V0SWRdO1xuICAgIHZhciBzb3VyY2VHcmFwaCA9IGxheW91dEluZm8uaW5kZXhUb0dyYXBoW3NvdXJjZUl4XTtcbiAgICB2YXIgdGFyZ2V0R3JhcGggPSBsYXlvdXRJbmZvLmluZGV4VG9HcmFwaFt0YXJnZXRJeF07XG5cbiAgICBpZiAoc291cmNlR3JhcGggIT0gdGFyZ2V0R3JhcGgpIHtcbiAgICAgIC8vIEZpbmQgbG93ZXN0IGNvbW1vbiBncmFwaCBhbmNlc3RvclxuICAgICAgdmFyIGxjYSA9IGZpbmRMQ0EodGVtcEVkZ2Uuc291cmNlSWQsIHRlbXBFZGdlLnRhcmdldElkLCBsYXlvdXRJbmZvKTsgLy8gQ29tcHV0ZSBzdW0gb2Ygbm9kZSBkZXB0aHMsIHJlbGF0aXZlIHRvIGxjYSBncmFwaFxuXG4gICAgICB2YXIgbGNhR3JhcGggPSBsYXlvdXRJbmZvLmdyYXBoU2V0W2xjYV07XG4gICAgICB2YXIgZGVwdGggPSAwOyAvLyBTb3VyY2UgZGVwdGhcblxuICAgICAgdmFyIHRlbXBOb2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tzb3VyY2VJeF07XG5cbiAgICAgIHdoaWxlICgtMSA9PT0gbGNhR3JhcGguaW5kZXhPZih0ZW1wTm9kZS5pZCkpIHtcbiAgICAgICAgdGVtcE5vZGUgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3RlbXBOb2RlLnBhcmVudElkXV07XG4gICAgICAgIGRlcHRoKys7XG4gICAgICB9IC8vIFRhcmdldCBkZXB0aFxuXG5cbiAgICAgIHRlbXBOb2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1t0YXJnZXRJeF07XG5cbiAgICAgIHdoaWxlICgtMSA9PT0gbGNhR3JhcGguaW5kZXhPZih0ZW1wTm9kZS5pZCkpIHtcbiAgICAgICAgdGVtcE5vZGUgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3RlbXBOb2RlLnBhcmVudElkXV07XG4gICAgICAgIGRlcHRoKys7XG4gICAgICB9IC8vIGxvZ0RlYnVnKCdMQ0Egb2Ygbm9kZXMgJyArIHRlbXBFZGdlLnNvdXJjZUlkICsgJyBhbmQgJyArIHRlbXBFZGdlLnRhcmdldElkICtcbiAgICAgIC8vICBcIi4gSW5kZXg6IFwiICsgbGNhICsgXCIgQ29udGVudHM6IFwiICsgbGNhR3JhcGgudG9TdHJpbmcoKSArXG4gICAgICAvLyAgXCIuIERlcHRoOiBcIiArIGRlcHRoKTtcbiAgICAgIC8vIFVwZGF0ZSBpZGVhbExlbmd0aFxuXG5cbiAgICAgIGlkZWFsTGVuZ3RoICo9IGRlcHRoICogb3B0aW9ucy5uZXN0aW5nRmFjdG9yO1xuICAgIH1cblxuICAgIHRlbXBFZGdlLmlkZWFsTGVuZ3RoID0gaWRlYWxMZW5ndGg7XG4gICAgdGVtcEVkZ2UuZWxhc3RpY2l0eSA9IGVsYXN0aWNpdHk7XG4gICAgbGF5b3V0SW5mby5sYXlvdXRFZGdlcy5wdXNoKHRlbXBFZGdlKTtcbiAgfSAvLyBGaW5hbGx5LCByZXR1cm4gbGF5b3V0SW5mbyBvYmplY3RcblxuXG4gIHJldHVybiBsYXlvdXRJbmZvO1xufTtcbi8qKlxuICogQGJyaWVmIDogVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgaW5kZXggb2YgdGhlIGxvd2VzdCBjb21tb25cbiAqICAgICAgICAgIGdyYXBoIGFuY2VzdG9yIGJldHdlZW4gMiBub2RlcyBpbiB0aGUgc3VidHJlZVxuICogICAgICAgICAgKGZyb20gdGhlIGdyYXBoIGhpZXJhcmNoeSBpbmR1Y2VkIHRyZWUpIHdob3NlXG4gKiAgICAgICAgICByb290IGlzIGdyYXBoSXhcbiAqXG4gKiBAYXJnIG5vZGUxOiBub2RlMSdzIElEXG4gKiBAYXJnIG5vZGUyOiBub2RlMidzIElEXG4gKiBAYXJnIGxheW91dEluZm86IGxheW91dEluZm8gb2JqZWN0XG4gKlxuICovXG5cblxudmFyIGZpbmRMQ0EgPSBmdW5jdGlvbiBmaW5kTENBKG5vZGUxLCBub2RlMiwgbGF5b3V0SW5mbykge1xuICAvLyBGaW5kIHRoZWlyIGNvbW1vbiBhbmNlc3Rlciwgc3RhcnRpbmcgZnJvbSB0aGUgcm9vdCBncmFwaFxuICB2YXIgcmVzID0gZmluZExDQV9hdXgobm9kZTEsIG5vZGUyLCAwLCBsYXlvdXRJbmZvKTtcblxuICBpZiAoMiA+IHJlcy5jb3VudCkge1xuICAgIC8vIElmIGF1eCBmdW5jdGlvbiBjb3VsZG4ndCBmaW5kIHRoZSBjb21tb24gYW5jZXN0ZXIsXG4gICAgLy8gdGhlbiBpdCBpcyB0aGUgcm9vdCBncmFwaFxuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXMuZ3JhcGg7XG4gIH1cbn07XG4vKipcbiAqIEBicmllZiAgICAgICAgICA6IEF1eGlsaWFyeSBmdW5jdGlvbiB1c2VkIGZvciBMQ0EgY29tcHV0YXRpb25cbiAqXG4gKiBAYXJnIG5vZGUxICAgICAgOiBub2RlMSdzIElEXG4gKiBAYXJnIG5vZGUyICAgICAgOiBub2RlMidzIElEXG4gKiBAYXJnIGdyYXBoSXggICAgOiBzdWJncmFwaCBpbmRleFxuICogQGFyZyBsYXlvdXRJbmZvIDogbGF5b3V0SW5mbyBvYmplY3RcbiAqXG4gKiBAcmV0dXJuICAgICAgICAgOiBvYmplY3Qgb2YgdGhlIGZvcm0ge2NvdW50OiBYLCBncmFwaDogWX0sIHdoZXJlOlxuICogICAgICAgICAgICAgICAgICAgWCBpcyB0aGUgbnVtYmVyIG9mIGFuY2VzdGVycyAobWF4OiAyKSBmb3VuZCBpblxuICogICAgICAgICAgICAgICAgICAgZ3JhcGhJeCAoYW5kIGl0J3Mgc3ViZ3JhcGhzKSxcbiAqICAgICAgICAgICAgICAgICAgIFkgaXMgdGhlIGdyYXBoIGluZGV4IG9mIHRoZSBsb3dlc3QgZ3JhcGggY29udGFpbmluZ1xuICogICAgICAgICAgICAgICAgICAgYWxsIFggbm9kZXNcbiAqL1xuXG5cbnZhciBmaW5kTENBX2F1eCA9IGZ1bmN0aW9uIGZpbmRMQ0FfYXV4KG5vZGUxLCBub2RlMiwgZ3JhcGhJeCwgbGF5b3V0SW5mbykge1xuICB2YXIgZ3JhcGggPSBsYXlvdXRJbmZvLmdyYXBoU2V0W2dyYXBoSXhdOyAvLyBJZiBib3RoIG5vZGVzIGJlbG9uZ3MgdG8gZ3JhcGhJeFxuXG4gIGlmICgtMSA8IGdyYXBoLmluZGV4T2Yobm9kZTEpICYmIC0xIDwgZ3JhcGguaW5kZXhPZihub2RlMikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY291bnQ6IDIsXG4gICAgICBncmFwaDogZ3JhcGhJeFxuICAgIH07XG4gIH0gLy8gTWFrZSByZWN1cnNpdmUgY2FsbHMgZm9yIGFsbCBzdWJncmFwaHNcblxuXG4gIHZhciBjID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBoLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGVJZCA9IGdyYXBoW2ldO1xuICAgIHZhciBub2RlSXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFtub2RlSWRdO1xuICAgIHZhciBjaGlsZHJlbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbm9kZUl4XS5jaGlsZHJlbjsgLy8gSWYgdGhlIG5vZGUgaGFzIG5vIGNoaWxkLCBza2lwIGl0XG5cbiAgICBpZiAoMCA9PT0gY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRHcmFwaEl4ID0gbGF5b3V0SW5mby5pbmRleFRvR3JhcGhbbGF5b3V0SW5mby5pZFRvSW5kZXhbY2hpbGRyZW5bMF1dXTtcbiAgICB2YXIgcmVzdWx0ID0gZmluZExDQV9hdXgobm9kZTEsIG5vZGUyLCBjaGlsZEdyYXBoSXgsIGxheW91dEluZm8pO1xuXG4gICAgaWYgKDAgPT09IHJlc3VsdC5jb3VudCkge1xuICAgICAgLy8gTmVpdGhlciBub2RlMSBub3Igbm9kZTIgYXJlIHByZXNlbnQgaW4gdGhpcyBzdWJncmFwaFxuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIGlmICgxID09PSByZXN1bHQuY291bnQpIHtcbiAgICAgIC8vIE9uZSBvZiAobm9kZTEsIG5vZGUyKSBpcyBwcmVzZW50IGluIHRoaXMgc3ViZ3JhcGhcbiAgICAgIGMrKztcblxuICAgICAgaWYgKDIgPT09IGMpIHtcbiAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBmb3VuZCBib3RoIG5vZGVzLCBubyBuZWVkIHRvIGtlZXAgc2VhcmNoaW5nXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIG5vZGVzIGFyZSBwcmVzZW50IGluIHRoaXMgc3ViZ3JhcGhcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb3VudDogYyxcbiAgICBncmFwaDogZ3JhcGhJeFxuICB9O1xufTtcbi8qKlxuICogQGJyaWVmOiBwcmludHNMYXlvdXRJbmZvIGludG8ganMgY29uc29sZVxuICogICAgICAgICBPbmx5IHVzZWQgZm9yIGRlYmJ1Z2luZ1xuICovXG5cblxuaWYgKGZhbHNlKSB7XG4gIHZhciBwcmludExheW91dEluZm87XG59XG4vKipcbiAqIEBicmllZiA6IFJhbmRvbWl6ZXMgdGhlIHBvc2l0aW9uIG9mIGFsbCBub2Rlc1xuICovXG5cblxudmFyIHJhbmRvbWl6ZVBvc2l0aW9ucyA9IGZ1bmN0aW9uIHJhbmRvbWl6ZVBvc2l0aW9ucyhsYXlvdXRJbmZvLCBjeSkge1xuICB2YXIgd2lkdGggPSBsYXlvdXRJbmZvLmNsaWVudFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gbGF5b3V0SW5mby5jbGllbnRIZWlnaHQ7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICB2YXIgbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbaV07IC8vIE5vIG5lZWQgdG8gcmFuZG9taXplIGNvbXBvdW5kIG5vZGVzIG9yIGxvY2tlZCBub2Rlc1xuXG4gICAgaWYgKDAgPT09IG4uY2hpbGRyZW4ubGVuZ3RoICYmICFuLmlzTG9ja2VkKSB7XG4gICAgICBuLnBvc2l0aW9uWCA9IE1hdGgucmFuZG9tKCkgKiB3aWR0aDtcbiAgICAgIG4ucG9zaXRpb25ZID0gTWF0aC5yYW5kb20oKSAqIGhlaWdodDtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBnZXRTY2FsZUluQm91bmRzRm4gPSBmdW5jdGlvbiBnZXRTY2FsZUluQm91bmRzRm4obGF5b3V0SW5mbywgb3B0aW9ucywgbm9kZXMpIHtcbiAgdmFyIGJiID0gbGF5b3V0SW5mby5ib3VuZGluZ0JveDtcbiAgdmFyIGNvc2VCQiA9IHtcbiAgICB4MTogSW5maW5pdHksXG4gICAgeDI6IC1JbmZpbml0eSxcbiAgICB5MTogSW5maW5pdHksXG4gICAgeTI6IC1JbmZpbml0eVxuICB9O1xuXG4gIGlmIChvcHRpb25zLmJvdW5kaW5nQm94KSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIGxub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtub2RlLmRhdGEoJ2lkJyldXTtcbiAgICAgIGNvc2VCQi54MSA9IE1hdGgubWluKGNvc2VCQi54MSwgbG5vZGUucG9zaXRpb25YKTtcbiAgICAgIGNvc2VCQi54MiA9IE1hdGgubWF4KGNvc2VCQi54MiwgbG5vZGUucG9zaXRpb25YKTtcbiAgICAgIGNvc2VCQi55MSA9IE1hdGgubWluKGNvc2VCQi55MSwgbG5vZGUucG9zaXRpb25ZKTtcbiAgICAgIGNvc2VCQi55MiA9IE1hdGgubWF4KGNvc2VCQi55MiwgbG5vZGUucG9zaXRpb25ZKTtcbiAgICB9KTtcbiAgICBjb3NlQkIudyA9IGNvc2VCQi54MiAtIGNvc2VCQi54MTtcbiAgICBjb3NlQkIuaCA9IGNvc2VCQi55MiAtIGNvc2VCQi55MTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoZWxlLCBpKSB7XG4gICAgdmFyIGxub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtlbGUuZGF0YSgnaWQnKV1dO1xuXG4gICAgaWYgKG9wdGlvbnMuYm91bmRpbmdCb3gpIHtcbiAgICAgIC8vIHRoZW4gYWRkIGV4dHJhIGJvdW5kaW5nIGJveCBjb25zdHJhaW50XG4gICAgICB2YXIgcGN0WCA9IChsbm9kZS5wb3NpdGlvblggLSBjb3NlQkIueDEpIC8gY29zZUJCLnc7XG4gICAgICB2YXIgcGN0WSA9IChsbm9kZS5wb3NpdGlvblkgLSBjb3NlQkIueTEpIC8gY29zZUJCLmg7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBiYi54MSArIHBjdFggKiBiYi53LFxuICAgICAgICB5OiBiYi55MSArIHBjdFkgKiBiYi5oXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBsbm9kZS5wb3NpdGlvblgsXG4gICAgICAgIHk6IGxub2RlLnBvc2l0aW9uWVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuLyoqXG4gKiBAYnJpZWYgICAgICAgICAgOiBVcGRhdGVzIHRoZSBwb3NpdGlvbnMgb2Ygbm9kZXMgaW4gdGhlIG5ldHdvcmtcbiAqIEBhcmcgbGF5b3V0SW5mbyA6IExheW91dEluZm8gb2JqZWN0XG4gKiBAYXJnIGN5ICAgICAgICAgOiBDeXRvc2NhcGUgb2JqZWN0XG4gKiBAYXJnIG9wdGlvbnMgICAgOiBMYXlvdXQgb3B0aW9uc1xuICovXG5cblxudmFyIHJlZnJlc2hQb3NpdGlvbnMgPSBmdW5jdGlvbiByZWZyZXNoUG9zaXRpb25zKGxheW91dEluZm8sIGN5LCBvcHRpb25zKSB7XG4gIC8vIHZhciBzID0gJ1JlZnJlc2hpbmcgcG9zaXRpb25zJztcbiAgLy8gbG9nRGVidWcocyk7XG4gIHZhciBsYXlvdXQgPSBvcHRpb25zLmxheW91dDtcbiAgdmFyIG5vZGVzID0gb3B0aW9ucy5lbGVzLm5vZGVzKCk7XG4gIHZhciBnZXRTY2FsZWRQb3MgPSBnZXRTY2FsZUluQm91bmRzRm4obGF5b3V0SW5mbywgb3B0aW9ucywgbm9kZXMpO1xuICBub2Rlcy5wb3NpdGlvbnMoZ2V0U2NhbGVkUG9zKTsgLy8gVHJpZ2dlciBsYXlvdXRSZWFkeSBvbmx5IG9uIGZpcnN0IGNhbGxcblxuICBpZiAodHJ1ZSAhPT0gbGF5b3V0SW5mby5yZWFkeSkge1xuICAgIC8vIHMgPSAnVHJpZ2dlcmluZyBsYXlvdXRyZWFkeSc7XG4gICAgLy8gbG9nRGVidWcocyk7XG4gICAgbGF5b3V0SW5mby5yZWFkeSA9IHRydWU7XG4gICAgbGF5b3V0Lm9uZSgnbGF5b3V0cmVhZHknLCBvcHRpb25zLnJlYWR5KTtcbiAgICBsYXlvdXQuZW1pdCh7XG4gICAgICB0eXBlOiAnbGF5b3V0cmVhZHknLFxuICAgICAgbGF5b3V0OiB0aGlzXG4gICAgfSk7XG4gIH1cbn07XG4vKipcbiAqIEBicmllZiA6IExvZ3MgYSBkZWJ1ZyBtZXNzYWdlIGluIEpTIGNvbnNvbGUsIGlmIERFQlVHIGlzIE9OXG4gKi9cbi8vIHZhciBsb2dEZWJ1ZyA9IGZ1bmN0aW9uKHRleHQpIHtcbi8vICAgaWYgKERFQlVHKSB7XG4vLyAgICAgY29uc29sZS5kZWJ1Zyh0ZXh0KTtcbi8vICAgfVxuLy8gfTtcblxuLyoqXG4gKiBAYnJpZWYgICAgICAgICAgOiBQZXJmb3JtcyBvbmUgaXRlcmF0aW9uIG9mIHRoZSBwaHlzaWNhbCBzaW11bGF0aW9uXG4gKiBAYXJnIGxheW91dEluZm8gOiBMYXlvdXRJbmZvIG9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkXG4gKiBAYXJnIGN5ICAgICAgICAgOiBDeXRvc2NhcGUgb2JqZWN0XG4gKiBAYXJnIG9wdGlvbnMgICAgOiBMYXlvdXQgb3B0aW9uc1xuICovXG5cblxudmFyIHN0ZXAkMSA9IGZ1bmN0aW9uIHN0ZXAobGF5b3V0SW5mbywgb3B0aW9ucywgX3N0ZXApIHtcbiAgLy8gdmFyIHMgPSBcIlxcblxcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcIjtcbiAgLy8gcyArPSBcIlxcblNURVA6IFwiICsgc3RlcDtcbiAgLy8gcyArPSBcIlxcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcXG5cIjtcbiAgLy8gbG9nRGVidWcocyk7XG4gIC8vIENhbGN1bGF0ZSBub2RlIHJlcHVsc2lvbnNcbiAgY2FsY3VsYXRlTm9kZUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKTsgLy8gQ2FsY3VsYXRlIGVkZ2UgZm9yY2VzXG5cbiAgY2FsY3VsYXRlRWRnZUZvcmNlcyhsYXlvdXRJbmZvKTsgLy8gQ2FsY3VsYXRlIGdyYXZpdHkgZm9yY2VzXG5cbiAgY2FsY3VsYXRlR3Jhdml0eUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKTsgLy8gUHJvcGFnYXRlIGZvcmNlcyBmcm9tIHBhcmVudCB0byBjaGlsZFxuXG4gIHByb3BhZ2F0ZUZvcmNlcyhsYXlvdXRJbmZvKTsgLy8gVXBkYXRlIHBvc2l0aW9ucyBiYXNlZCBvbiBjYWxjdWxhdGVkIGZvcmNlc1xuXG4gIHVwZGF0ZVBvc2l0aW9ucyhsYXlvdXRJbmZvKTtcbn07XG4vKipcbiAqIEBicmllZiA6IENvbXB1dGVzIHRoZSBub2RlIHJlcHVsc2lvbiBmb3JjZXNcbiAqL1xuXG5cbnZhciBjYWxjdWxhdGVOb2RlRm9yY2VzID0gZnVuY3Rpb24gY2FsY3VsYXRlTm9kZUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gIC8vIEdvIHRocm91Z2ggZWFjaCBvZiB0aGUgZ3JhcGhzIGluIGdyYXBoU2V0XG4gIC8vIE5vZGVzIG9ubHkgcmVwZWwgZWFjaCBvdGhlciBpZiB0aGV5IGJlbG9uZyB0byB0aGUgc2FtZSBncmFwaFxuICAvLyB2YXIgcyA9ICdjYWxjdWxhdGVOb2RlRm9yY2VzJztcbiAgLy8gbG9nRGVidWcocyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ncmFwaFNldC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBncmFwaCA9IGxheW91dEluZm8uZ3JhcGhTZXRbaV07XG4gICAgdmFyIG51bU5vZGVzID0gZ3JhcGgubGVuZ3RoOyAvLyBzID0gXCJTZXQ6IFwiICsgZ3JhcGgudG9TdHJpbmcoKTtcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcbiAgICAvLyBOb3cgZ2V0IGFsbCB0aGUgcGFpcnMgb2Ygbm9kZXNcbiAgICAvLyBPbmx5IGdldCBlYWNoIHBhaXIgb25jZSwgKEEsIEIpID0gKEIsIEEpXG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bU5vZGVzOyBqKyspIHtcbiAgICAgIHZhciBub2RlMSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbGF5b3V0SW5mby5pZFRvSW5kZXhbZ3JhcGhbal1dXTtcblxuICAgICAgZm9yICh2YXIgayA9IGogKyAxOyBrIDwgbnVtTm9kZXM7IGsrKykge1xuICAgICAgICB2YXIgbm9kZTIgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W2dyYXBoW2tdXV07XG4gICAgICAgIG5vZGVSZXB1bHNpb24obm9kZTEsIG5vZGUyLCBsYXlvdXRJbmZvLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbnZhciByYW5kb21EaXN0YW5jZSA9IGZ1bmN0aW9uIHJhbmRvbURpc3RhbmNlKG1heCkge1xuICByZXR1cm4gLW1heCArIDIgKiBtYXggKiBNYXRoLnJhbmRvbSgpO1xufTtcbi8qKlxuICogQGJyaWVmIDogQ29tcHV0ZSB0aGUgbm9kZSByZXB1bHNpb24gZm9yY2VzIGJldHdlZW4gYSBwYWlyIG9mIG5vZGVzXG4gKi9cblxuXG52YXIgbm9kZVJlcHVsc2lvbiA9IGZ1bmN0aW9uIG5vZGVSZXB1bHNpb24obm9kZTEsIG5vZGUyLCBsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gIC8vIHZhciBzID0gXCJOb2RlIHJlcHVsc2lvbi4gTm9kZTE6IFwiICsgbm9kZTEuaWQgKyBcIiBOb2RlMjogXCIgKyBub2RlMi5pZDtcbiAgdmFyIGNtcHRJZDEgPSBub2RlMS5jbXB0SWQ7XG4gIHZhciBjbXB0SWQyID0gbm9kZTIuY21wdElkO1xuXG4gIGlmIChjbXB0SWQxICE9PSBjbXB0SWQyICYmICFsYXlvdXRJbmZvLmlzQ29tcG91bmQpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gR2V0IGRpcmVjdGlvbiBvZiBsaW5lIGNvbm5lY3RpbmcgYm90aCBub2RlIGNlbnRlcnNcblxuXG4gIHZhciBkaXJlY3Rpb25YID0gbm9kZTIucG9zaXRpb25YIC0gbm9kZTEucG9zaXRpb25YO1xuICB2YXIgZGlyZWN0aW9uWSA9IG5vZGUyLnBvc2l0aW9uWSAtIG5vZGUxLnBvc2l0aW9uWTtcbiAgdmFyIG1heFJhbmREaXN0ID0gMTsgLy8gcyArPSBcIlxcbmRpcmVjdGlvblg6IFwiICsgZGlyZWN0aW9uWCArIFwiLCBkaXJlY3Rpb25ZOiBcIiArIGRpcmVjdGlvblk7XG4gIC8vIElmIGJvdGggY2VudGVycyBhcmUgdGhlIHNhbWUsIGFwcGx5IGEgcmFuZG9tIGZvcmNlXG5cbiAgaWYgKDAgPT09IGRpcmVjdGlvblggJiYgMCA9PT0gZGlyZWN0aW9uWSkge1xuICAgIGRpcmVjdGlvblggPSByYW5kb21EaXN0YW5jZShtYXhSYW5kRGlzdCk7XG4gICAgZGlyZWN0aW9uWSA9IHJhbmRvbURpc3RhbmNlKG1heFJhbmREaXN0KTtcbiAgfVxuXG4gIHZhciBvdmVybGFwID0gbm9kZXNPdmVybGFwKG5vZGUxLCBub2RlMiwgZGlyZWN0aW9uWCwgZGlyZWN0aW9uWSk7XG5cbiAgaWYgKG92ZXJsYXAgPiAwKSB7XG4gICAgLy8gcyArPSBcIlxcbk5vZGVzIERPIG92ZXJsYXAuXCI7XG4gICAgLy8gcyArPSBcIlxcbk92ZXJsYXA6IFwiICsgb3ZlcmxhcDtcbiAgICAvLyBJZiBub2RlcyBvdmVybGFwLCByZXB1bHNpb24gZm9yY2UgaXMgcHJvcG9ydGlvbmFsXG4gICAgLy8gdG8gdGhlIG92ZXJsYXBcbiAgICB2YXIgZm9yY2UgPSBvcHRpb25zLm5vZGVPdmVybGFwICogb3ZlcmxhcDsgLy8gQ29tcHV0ZSB0aGUgbW9kdWxlIGFuZCBjb21wb25lbnRzIG9mIHRoZSBmb3JjZSB2ZWN0b3JcblxuICAgIHZhciBkaXN0YW5jZSA9IE1hdGguc3FydChkaXJlY3Rpb25YICogZGlyZWN0aW9uWCArIGRpcmVjdGlvblkgKiBkaXJlY3Rpb25ZKTsgLy8gcyArPSBcIlxcbkRpc3RhbmNlOiBcIiArIGRpc3RhbmNlO1xuXG4gICAgdmFyIGZvcmNlWCA9IGZvcmNlICogZGlyZWN0aW9uWCAvIGRpc3RhbmNlO1xuICAgIHZhciBmb3JjZVkgPSBmb3JjZSAqIGRpcmVjdGlvblkgLyBkaXN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICAvLyBzICs9IFwiXFxuTm9kZXMgZG8gTk9UIG92ZXJsYXAuXCI7XG4gICAgLy8gSWYgdGhlcmUncyBubyBvdmVybGFwLCBmb3JjZSBpcyBpbnZlcnNlbHkgcHJvcG9ydGlvbmFsXG4gICAgLy8gdG8gc3F1YXJlZCBkaXN0YW5jZVxuICAgIC8vIEdldCBjbGlwcGluZyBwb2ludHMgZm9yIGJvdGggbm9kZXNcbiAgICB2YXIgcG9pbnQxID0gZmluZENsaXBwaW5nUG9pbnQobm9kZTEsIGRpcmVjdGlvblgsIGRpcmVjdGlvblkpO1xuICAgIHZhciBwb2ludDIgPSBmaW5kQ2xpcHBpbmdQb2ludChub2RlMiwgLTEgKiBkaXJlY3Rpb25YLCAtMSAqIGRpcmVjdGlvblkpOyAvLyBVc2UgY2xpcHBpbmcgcG9pbnRzIHRvIGNvbXB1dGUgZGlzdGFuY2VcblxuICAgIHZhciBkaXN0YW5jZVggPSBwb2ludDIueCAtIHBvaW50MS54O1xuICAgIHZhciBkaXN0YW5jZVkgPSBwb2ludDIueSAtIHBvaW50MS55O1xuICAgIHZhciBkaXN0YW5jZVNxciA9IGRpc3RhbmNlWCAqIGRpc3RhbmNlWCArIGRpc3RhbmNlWSAqIGRpc3RhbmNlWTtcbiAgICB2YXIgZGlzdGFuY2UgPSBNYXRoLnNxcnQoZGlzdGFuY2VTcXIpOyAvLyBzICs9IFwiXFxuRGlzdGFuY2U6IFwiICsgZGlzdGFuY2U7XG4gICAgLy8gQ29tcHV0ZSB0aGUgbW9kdWxlIGFuZCBjb21wb25lbnRzIG9mIHRoZSBmb3JjZSB2ZWN0b3JcblxuICAgIHZhciBmb3JjZSA9IChub2RlMS5ub2RlUmVwdWxzaW9uICsgbm9kZTIubm9kZVJlcHVsc2lvbikgLyBkaXN0YW5jZVNxcjtcbiAgICB2YXIgZm9yY2VYID0gZm9yY2UgKiBkaXN0YW5jZVggLyBkaXN0YW5jZTtcbiAgICB2YXIgZm9yY2VZID0gZm9yY2UgKiBkaXN0YW5jZVkgLyBkaXN0YW5jZTtcbiAgfSAvLyBBcHBseSBmb3JjZVxuXG5cbiAgaWYgKCFub2RlMS5pc0xvY2tlZCkge1xuICAgIG5vZGUxLm9mZnNldFggLT0gZm9yY2VYO1xuICAgIG5vZGUxLm9mZnNldFkgLT0gZm9yY2VZO1xuICB9XG5cbiAgaWYgKCFub2RlMi5pc0xvY2tlZCkge1xuICAgIG5vZGUyLm9mZnNldFggKz0gZm9yY2VYO1xuICAgIG5vZGUyLm9mZnNldFkgKz0gZm9yY2VZO1xuICB9IC8vIHMgKz0gXCJcXG5Gb3JjZVg6IFwiICsgZm9yY2VYICsgXCIgRm9yY2VZOiBcIiArIGZvcmNlWTtcbiAgLy8gbG9nRGVidWcocyk7XG5cblxuICByZXR1cm47XG59O1xuLyoqXG4gKiBAYnJpZWYgIDogRGV0ZXJtaW5lcyB3aGV0aGVyIHR3byBub2RlcyBvdmVybGFwIG9yIG5vdFxuICogQHJldHVybiA6IEFtb3VudCBvZiBvdmVybGFwcGluZyAoMCA9PiBubyBvdmVybGFwKVxuICovXG5cblxudmFyIG5vZGVzT3ZlcmxhcCA9IGZ1bmN0aW9uIG5vZGVzT3ZlcmxhcChub2RlMSwgbm9kZTIsIGRYLCBkWSkge1xuICBpZiAoZFggPiAwKSB7XG4gICAgdmFyIG92ZXJsYXBYID0gbm9kZTEubWF4WCAtIG5vZGUyLm1pblg7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG92ZXJsYXBYID0gbm9kZTIubWF4WCAtIG5vZGUxLm1pblg7XG4gIH1cblxuICBpZiAoZFkgPiAwKSB7XG4gICAgdmFyIG92ZXJsYXBZID0gbm9kZTEubWF4WSAtIG5vZGUyLm1pblk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG92ZXJsYXBZID0gbm9kZTIubWF4WSAtIG5vZGUxLm1pblk7XG4gIH1cblxuICBpZiAob3ZlcmxhcFggPj0gMCAmJiBvdmVybGFwWSA+PSAwKSB7XG4gICAgcmV0dXJuIE1hdGguc3FydChvdmVybGFwWCAqIG92ZXJsYXBYICsgb3ZlcmxhcFkgKiBvdmVybGFwWSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG4vKipcbiAqIEBicmllZiA6IEZpbmRzIHRoZSBwb2ludCBpbiB3aGljaCBhbiBlZGdlIChkaXJlY3Rpb24gZFgsIGRZKSBpbnRlcnNlY3RzXG4gKiAgICAgICAgICB0aGUgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IG9mIGl0J3Mgc291cmNlL3RhcmdldCBub2RlXG4gKi9cblxuXG52YXIgZmluZENsaXBwaW5nUG9pbnQgPSBmdW5jdGlvbiBmaW5kQ2xpcHBpbmdQb2ludChub2RlLCBkWCwgZFkpIHtcbiAgLy8gU2hvcmN1dHNcbiAgdmFyIFggPSBub2RlLnBvc2l0aW9uWDtcbiAgdmFyIFkgPSBub2RlLnBvc2l0aW9uWTtcbiAgdmFyIEggPSBub2RlLmhlaWdodCB8fCAxO1xuICB2YXIgVyA9IG5vZGUud2lkdGggfHwgMTtcbiAgdmFyIGRpclNsb3BlID0gZFkgLyBkWDtcbiAgdmFyIG5vZGVTbG9wZSA9IEggLyBXOyAvLyB2YXIgcyA9ICdDb21wdXRpbmcgY2xpcHBpbmcgcG9pbnQgb2Ygbm9kZSAnICsgbm9kZS5pZCArXG4gIC8vICAgXCIgLiBIZWlnaHQ6ICBcIiArIEggKyBcIiwgV2lkdGg6IFwiICsgVyArXG4gIC8vICAgXCJcXG5EaXJlY3Rpb24gXCIgKyBkWCArIFwiLCBcIiArIGRZO1xuICAvL1xuICAvLyBDb21wdXRlIGludGVyc2VjdGlvblxuXG4gIHZhciByZXMgPSB7fTsgLy8gQ2FzZTogVmVydGljYWwgZGlyZWN0aW9uICh1cClcblxuICBpZiAoMCA9PT0gZFggJiYgMCA8IGRZKSB7XG4gICAgcmVzLnggPSBYOyAvLyBzICs9IFwiXFxuVXAgZGlyZWN0aW9uXCI7XG5cbiAgICByZXMueSA9IFkgKyBIIC8gMjtcbiAgICByZXR1cm4gcmVzO1xuICB9IC8vIENhc2U6IFZlcnRpY2FsIGRpcmVjdGlvbiAoZG93bilcblxuXG4gIGlmICgwID09PSBkWCAmJiAwID4gZFkpIHtcbiAgICByZXMueCA9IFg7XG4gICAgcmVzLnkgPSBZICsgSCAvIDI7IC8vIHMgKz0gXCJcXG5Eb3duIGRpcmVjdGlvblwiO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBDYXNlOiBJbnRlcnNlY3RzIHRoZSByaWdodCBib3JkZXJcblxuXG4gIGlmICgwIDwgZFggJiYgLTEgKiBub2RlU2xvcGUgPD0gZGlyU2xvcGUgJiYgZGlyU2xvcGUgPD0gbm9kZVNsb3BlKSB7XG4gICAgcmVzLnggPSBYICsgVyAvIDI7XG4gICAgcmVzLnkgPSBZICsgVyAqIGRZIC8gMiAvIGRYOyAvLyBzICs9IFwiXFxuUmlnaHRib3JkZXJcIjtcblxuICAgIHJldHVybiByZXM7XG4gIH0gLy8gQ2FzZTogSW50ZXJzZWN0cyB0aGUgbGVmdCBib3JkZXJcblxuXG4gIGlmICgwID4gZFggJiYgLTEgKiBub2RlU2xvcGUgPD0gZGlyU2xvcGUgJiYgZGlyU2xvcGUgPD0gbm9kZVNsb3BlKSB7XG4gICAgcmVzLnggPSBYIC0gVyAvIDI7XG4gICAgcmVzLnkgPSBZIC0gVyAqIGRZIC8gMiAvIGRYOyAvLyBzICs9IFwiXFxuTGVmdGJvcmRlclwiO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBDYXNlOiBJbnRlcnNlY3RzIHRoZSB0b3AgYm9yZGVyXG5cblxuICBpZiAoMCA8IGRZICYmIChkaXJTbG9wZSA8PSAtMSAqIG5vZGVTbG9wZSB8fCBkaXJTbG9wZSA+PSBub2RlU2xvcGUpKSB7XG4gICAgcmVzLnggPSBYICsgSCAqIGRYIC8gMiAvIGRZO1xuICAgIHJlcy55ID0gWSArIEggLyAyOyAvLyBzICs9IFwiXFxuVG9wIGJvcmRlclwiO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBDYXNlOiBJbnRlcnNlY3RzIHRoZSBib3R0b20gYm9yZGVyXG5cblxuICBpZiAoMCA+IGRZICYmIChkaXJTbG9wZSA8PSAtMSAqIG5vZGVTbG9wZSB8fCBkaXJTbG9wZSA+PSBub2RlU2xvcGUpKSB7XG4gICAgcmVzLnggPSBYIC0gSCAqIGRYIC8gMiAvIGRZO1xuICAgIHJlcy55ID0gWSAtIEggLyAyOyAvLyBzICs9IFwiXFxuQm90dG9tIGJvcmRlclwiO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBzICs9IFwiXFxuQ2xpcHBpbmcgcG9pbnQgZm91bmQgYXQgXCIgKyByZXMueCArIFwiLCBcIiArIHJlcy55O1xuICAvLyBsb2dEZWJ1ZyhzKTtcblxuXG4gIHJldHVybiByZXM7XG59O1xuLyoqXG4gKiBAYnJpZWYgOiBDYWxjdWxhdGVzIGFsbCBlZGdlIGZvcmNlc1xuICovXG5cblxudmFyIGNhbGN1bGF0ZUVkZ2VGb3JjZXMgPSBmdW5jdGlvbiBjYWxjdWxhdGVFZGdlRm9yY2VzKGxheW91dEluZm8sIG9wdGlvbnMpIHtcbiAgLy8gSXRlcmF0ZSBvdmVyIGFsbCBlZGdlc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxheW91dEluZm8uZWRnZVNpemU7IGkrKykge1xuICAgIC8vIEdldCBlZGdlLCBzb3VyY2UgJiB0YXJnZXQgbm9kZXNcbiAgICB2YXIgZWRnZSA9IGxheW91dEluZm8ubGF5b3V0RWRnZXNbaV07XG4gICAgdmFyIHNvdXJjZUl4ID0gbGF5b3V0SW5mby5pZFRvSW5kZXhbZWRnZS5zb3VyY2VJZF07XG4gICAgdmFyIHNvdXJjZSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbc291cmNlSXhdO1xuICAgIHZhciB0YXJnZXRJeCA9IGxheW91dEluZm8uaWRUb0luZGV4W2VkZ2UudGFyZ2V0SWRdO1xuICAgIHZhciB0YXJnZXQgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW3RhcmdldEl4XTsgLy8gR2V0IGRpcmVjdGlvbiBvZiBsaW5lIGNvbm5lY3RpbmcgYm90aCBub2RlIGNlbnRlcnNcblxuICAgIHZhciBkaXJlY3Rpb25YID0gdGFyZ2V0LnBvc2l0aW9uWCAtIHNvdXJjZS5wb3NpdGlvblg7XG4gICAgdmFyIGRpcmVjdGlvblkgPSB0YXJnZXQucG9zaXRpb25ZIC0gc291cmNlLnBvc2l0aW9uWTsgLy8gSWYgYm90aCBjZW50ZXJzIGFyZSB0aGUgc2FtZSwgZG8gbm90aGluZy5cbiAgICAvLyBBIHJhbmRvbSBmb3JjZSBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQgYXMgbm9kZSByZXB1bHNpb25cblxuICAgIGlmICgwID09PSBkaXJlY3Rpb25YICYmIDAgPT09IGRpcmVjdGlvblkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gR2V0IGNsaXBwaW5nIHBvaW50cyBmb3IgYm90aCBub2Rlc1xuXG5cbiAgICB2YXIgcG9pbnQxID0gZmluZENsaXBwaW5nUG9pbnQoc291cmNlLCBkaXJlY3Rpb25YLCBkaXJlY3Rpb25ZKTtcbiAgICB2YXIgcG9pbnQyID0gZmluZENsaXBwaW5nUG9pbnQodGFyZ2V0LCAtMSAqIGRpcmVjdGlvblgsIC0xICogZGlyZWN0aW9uWSk7XG4gICAgdmFyIGx4ID0gcG9pbnQyLnggLSBwb2ludDEueDtcbiAgICB2YXIgbHkgPSBwb2ludDIueSAtIHBvaW50MS55O1xuICAgIHZhciBsID0gTWF0aC5zcXJ0KGx4ICogbHggKyBseSAqIGx5KTtcbiAgICB2YXIgZm9yY2UgPSBNYXRoLnBvdyhlZGdlLmlkZWFsTGVuZ3RoIC0gbCwgMikgLyBlZGdlLmVsYXN0aWNpdHk7XG5cbiAgICBpZiAoMCAhPT0gbCkge1xuICAgICAgdmFyIGZvcmNlWCA9IGZvcmNlICogbHggLyBsO1xuICAgICAgdmFyIGZvcmNlWSA9IGZvcmNlICogbHkgLyBsO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZm9yY2VYID0gMDtcbiAgICAgIHZhciBmb3JjZVkgPSAwO1xuICAgIH0gLy8gQWRkIHRoaXMgZm9yY2UgdG8gdGFyZ2V0IGFuZCBzb3VyY2Ugbm9kZXNcblxuXG4gICAgaWYgKCFzb3VyY2UuaXNMb2NrZWQpIHtcbiAgICAgIHNvdXJjZS5vZmZzZXRYICs9IGZvcmNlWDtcbiAgICAgIHNvdXJjZS5vZmZzZXRZICs9IGZvcmNlWTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldC5pc0xvY2tlZCkge1xuICAgICAgdGFyZ2V0Lm9mZnNldFggLT0gZm9yY2VYO1xuICAgICAgdGFyZ2V0Lm9mZnNldFkgLT0gZm9yY2VZO1xuICAgIH0gLy8gdmFyIHMgPSAnRWRnZSBmb3JjZSBiZXR3ZWVuIG5vZGVzICcgKyBzb3VyY2UuaWQgKyAnIGFuZCAnICsgdGFyZ2V0LmlkO1xuICAgIC8vIHMgKz0gXCJcXG5EaXN0YW5jZTogXCIgKyBsICsgXCIgRm9yY2U6IChcIiArIGZvcmNlWCArIFwiLCBcIiArIGZvcmNlWSArIFwiKVwiO1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuXG4gIH1cbn07XG4vKipcbiAqIEBicmllZiA6IENvbXB1dGVzIGdyYXZpdHkgZm9yY2VzIGZvciBhbGwgbm9kZXNcbiAqL1xuXG5cbnZhciBjYWxjdWxhdGVHcmF2aXR5Rm9yY2VzID0gZnVuY3Rpb24gY2FsY3VsYXRlR3Jhdml0eUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLmdyYXZpdHkgPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZGlzdFRocmVzaG9sZCA9IDE7IC8vIHZhciBzID0gJ2NhbGN1bGF0ZUdyYXZpdHlGb3JjZXMnO1xuICAvLyBsb2dEZWJ1ZyhzKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxheW91dEluZm8uZ3JhcGhTZXQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZ3JhcGggPSBsYXlvdXRJbmZvLmdyYXBoU2V0W2ldO1xuICAgIHZhciBudW1Ob2RlcyA9IGdyYXBoLmxlbmd0aDsgLy8gcyA9IFwiU2V0OiBcIiArIGdyYXBoLnRvU3RyaW5nKCk7XG4gICAgLy8gbG9nRGVidWcocyk7XG4gICAgLy8gQ29tcHV0ZSBncmFwaCBjZW50ZXJcblxuICAgIGlmICgwID09PSBpKSB7XG4gICAgICB2YXIgY2VudGVyWCA9IGxheW91dEluZm8uY2xpZW50SGVpZ2h0IC8gMjtcbiAgICAgIHZhciBjZW50ZXJZID0gbGF5b3V0SW5mby5jbGllbnRXaWR0aCAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEdldCBQYXJlbnQgbm9kZSBmb3IgdGhpcyBncmFwaCwgYW5kIHVzZSBpdHMgcG9zaXRpb24gYXMgY2VudGVyXG4gICAgICB2YXIgdGVtcCA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbGF5b3V0SW5mby5pZFRvSW5kZXhbZ3JhcGhbMF1dXTtcbiAgICAgIHZhciBwYXJlbnQgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3RlbXAucGFyZW50SWRdXTtcbiAgICAgIHZhciBjZW50ZXJYID0gcGFyZW50LnBvc2l0aW9uWDtcbiAgICAgIHZhciBjZW50ZXJZID0gcGFyZW50LnBvc2l0aW9uWTtcbiAgICB9IC8vIHMgPSBcIkNlbnRlciBmb3VuZCBhdDogXCIgKyBjZW50ZXJYICsgXCIsIFwiICsgY2VudGVyWTtcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcbiAgICAvLyBBcHBseSBmb3JjZSB0byBhbGwgbm9kZXMgaW4gZ3JhcGhcblxuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1Ob2RlczsgaisrKSB7XG4gICAgICB2YXIgbm9kZSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbGF5b3V0SW5mby5pZFRvSW5kZXhbZ3JhcGhbal1dXTsgLy8gcyA9IFwiTm9kZTogXCIgKyBub2RlLmlkO1xuXG4gICAgICBpZiAobm9kZS5pc0xvY2tlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGR4ID0gY2VudGVyWCAtIG5vZGUucG9zaXRpb25YO1xuICAgICAgdmFyIGR5ID0gY2VudGVyWSAtIG5vZGUucG9zaXRpb25ZO1xuICAgICAgdmFyIGQgPSBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xuXG4gICAgICBpZiAoZCA+IGRpc3RUaHJlc2hvbGQpIHtcbiAgICAgICAgdmFyIGZ4ID0gb3B0aW9ucy5ncmF2aXR5ICogZHggLyBkO1xuICAgICAgICB2YXIgZnkgPSBvcHRpb25zLmdyYXZpdHkgKiBkeSAvIGQ7XG4gICAgICAgIG5vZGUub2Zmc2V0WCArPSBmeDtcbiAgICAgICAgbm9kZS5vZmZzZXRZICs9IGZ5OyAvLyBzICs9IFwiOiBBcHBsaWVkIGZvcmNlOiBcIiArIGZ4ICsgXCIsIFwiICsgZnk7XG4gICAgICB9IC8vIHMgKz0gXCI6IHNreXBwZWQgc2luY2UgaXQncyB0b28gY2xvc2UgdG8gY2VudGVyXCI7XG4gICAgICAgIC8vIGxvZ0RlYnVnKHMpO1xuXG4gICAgfVxuICB9XG59O1xuLyoqXG4gKiBAYnJpZWYgICAgICAgICAgOiBUaGlzIGZ1bmN0aW9uIHByb3BhZ2F0ZXMgdGhlIGV4aXN0aW5nIG9mZnNldHMgZnJvbVxuICogICAgICAgICAgICAgICAgICAgcGFyZW50IG5vZGVzIHRvIGl0cyBkZXNjZW5kZW50cy5cbiAqIEBhcmcgbGF5b3V0SW5mbyA6IGxheW91dEluZm8gT2JqZWN0XG4gKiBAYXJnIGN5ICAgICAgICAgOiBjeXRvc2NhcGUgT2JqZWN0XG4gKiBAYXJnIG9wdGlvbnMgICAgOiBMYXlvdXQgb3B0aW9uc1xuICovXG5cblxudmFyIHByb3BhZ2F0ZUZvcmNlcyA9IGZ1bmN0aW9uIHByb3BhZ2F0ZUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gIC8vIElubGluZSBpbXBsZW1lbnRhdGlvbiBvZiBhIHF1ZXVlLCB1c2VkIGZvciB0cmF2ZXJzaW5nIHRoZSBncmFwaCBpbiBCRlMgb3JkZXJcbiAgdmFyIHF1ZXVlID0gW107XG4gIHZhciBzdGFydCA9IDA7IC8vIFBvaW50cyB0byB0aGUgc3RhcnQgdGhlIHF1ZXVlXG5cbiAgdmFyIGVuZCA9IC0xOyAvLyBQb2ludHMgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWVcbiAgLy8gbG9nRGVidWcoJ3Byb3BhZ2F0ZUZvcmNlcycpO1xuICAvLyBTdGFydCBieSB2aXNpdGluZyB0aGUgbm9kZXMgaW4gdGhlIHJvb3QgZ3JhcGhcblxuICBxdWV1ZS5wdXNoLmFwcGx5KHF1ZXVlLCBsYXlvdXRJbmZvLmdyYXBoU2V0WzBdKTtcbiAgZW5kICs9IGxheW91dEluZm8uZ3JhcGhTZXRbMF0ubGVuZ3RoOyAvLyBUcmF2ZXJzZSB0aGUgZ3JhcGgsIGxldmVsIGJ5IGxldmVsLFxuXG4gIHdoaWxlIChzdGFydCA8PSBlbmQpIHtcbiAgICAvLyBHZXQgdGhlIG5vZGUgdG8gdmlzaXQgYW5kIHJlbW92ZSBpdCBmcm9tIHF1ZXVlXG4gICAgdmFyIG5vZGVJZCA9IHF1ZXVlW3N0YXJ0KytdO1xuICAgIHZhciBub2RlSW5kZXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFtub2RlSWRdO1xuICAgIHZhciBub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tub2RlSW5kZXhdO1xuICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47IC8vIFdlIG9ubHkgbmVlZCB0byBwcm9jZXNzIHRoZSBub2RlIGlmIGl0J3MgY29tcG91bmRcblxuICAgIGlmICgwIDwgY2hpbGRyZW4ubGVuZ3RoICYmICFub2RlLmlzTG9ja2VkKSB7XG4gICAgICB2YXIgb2ZmWCA9IG5vZGUub2Zmc2V0WDtcbiAgICAgIHZhciBvZmZZID0gbm9kZS5vZmZzZXRZOyAvLyB2YXIgcyA9IFwiUHJvcGFnYXRpbmcgb2Zmc2V0IGZyb20gcGFyZW50IG5vZGUgOiBcIiArIG5vZGUuaWQgK1xuICAgICAgLy8gICBcIi4gT2Zmc2V0WDogXCIgKyBvZmZYICsgXCIuIE9mZnNldFk6IFwiICsgb2ZmWTtcbiAgICAgIC8vIHMgKz0gXCJcXG4gQ2hpbGRyZW46IFwiICsgY2hpbGRyZW4udG9TdHJpbmcoKTtcbiAgICAgIC8vIGxvZ0RlYnVnKHMpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZE5vZGUgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W2NoaWxkcmVuW2ldXV07IC8vIFByb3BhZ2F0ZSBvZmZzZXRcblxuICAgICAgICBjaGlsZE5vZGUub2Zmc2V0WCArPSBvZmZYO1xuICAgICAgICBjaGlsZE5vZGUub2Zmc2V0WSArPSBvZmZZOyAvLyBBZGQgY2hpbGRyZW4gdG8gcXVldWUgdG8gYmUgdmlzaXRlZFxuXG4gICAgICAgIHF1ZXVlWysrZW5kXSA9IGNoaWxkcmVuW2ldO1xuICAgICAgfSAvLyBSZXNldCBwYXJlbnQgb2Zmc2V0c1xuXG5cbiAgICAgIG5vZGUub2Zmc2V0WCA9IDA7XG4gICAgICBub2RlLm9mZnNldFkgPSAwO1xuICAgIH1cbiAgfVxufTtcbi8qKlxuICogQGJyaWVmIDogVXBkYXRlcyB0aGUgbGF5b3V0IG1vZGVsIHBvc2l0aW9ucywgYmFzZWQgb25cbiAqICAgICAgICAgIHRoZSBhY2N1bXVsYXRlZCBmb3JjZXNcbiAqL1xuXG5cbnZhciB1cGRhdGVQb3NpdGlvbnMgPSBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbnMobGF5b3V0SW5mbywgb3B0aW9ucykge1xuICAvLyB2YXIgcyA9ICdVcGRhdGluZyBwb3NpdGlvbnMnO1xuICAvLyBsb2dEZWJ1ZyhzKTtcbiAgLy8gUmVzZXQgYm91bmRhcmllcyBmb3IgY29tcG91bmQgbm9kZXNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICB2YXIgbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbaV07XG5cbiAgICBpZiAoMCA8IG4uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAvLyBsb2dEZWJ1ZyhcIlJlc2V0dGluZyBib3VuZGFyaWVzIG9mIGNvbXBvdW5kIG5vZGU6IFwiICsgbi5pZCk7XG4gICAgICBuLm1heFggPSB1bmRlZmluZWQ7XG4gICAgICBuLm1pblggPSB1bmRlZmluZWQ7XG4gICAgICBuLm1heFkgPSB1bmRlZmluZWQ7XG4gICAgICBuLm1pblkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICB2YXIgbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbaV07XG5cbiAgICBpZiAoMCA8IG4uY2hpbGRyZW4ubGVuZ3RoIHx8IG4uaXNMb2NrZWQpIHtcbiAgICAgIC8vIE5vIG5lZWQgdG8gc2V0IGNvbXBvdW5kIG9yIGxvY2tlZCBub2RlIHBvc2l0aW9uXG4gICAgICAvLyBsb2dEZWJ1ZyhcIlNraXBwaW5nIHBvc2l0aW9uIHVwZGF0ZSBvZiBub2RlOiBcIiArIG4uaWQpO1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBzID0gXCJOb2RlOiBcIiArIG4uaWQgKyBcIiBQcmV2aW91cyBwb3NpdGlvbjogKFwiICtcbiAgICAvLyBuLnBvc2l0aW9uWCArIFwiLCBcIiArIG4ucG9zaXRpb25ZICsgXCIpLlwiO1xuICAgIC8vIExpbWl0IGRpc3BsYWNlbWVudCBpbiBvcmRlciB0byBpbXByb3ZlIHN0YWJpbGl0eVxuXG5cbiAgICB2YXIgdGVtcEZvcmNlID0gbGltaXRGb3JjZShuLm9mZnNldFgsIG4ub2Zmc2V0WSwgbGF5b3V0SW5mby50ZW1wZXJhdHVyZSk7XG4gICAgbi5wb3NpdGlvblggKz0gdGVtcEZvcmNlLng7XG4gICAgbi5wb3NpdGlvblkgKz0gdGVtcEZvcmNlLnk7XG4gICAgbi5vZmZzZXRYID0gMDtcbiAgICBuLm9mZnNldFkgPSAwO1xuICAgIG4ubWluWCA9IG4ucG9zaXRpb25YIC0gbi53aWR0aDtcbiAgICBuLm1heFggPSBuLnBvc2l0aW9uWCArIG4ud2lkdGg7XG4gICAgbi5taW5ZID0gbi5wb3NpdGlvblkgLSBuLmhlaWdodDtcbiAgICBuLm1heFkgPSBuLnBvc2l0aW9uWSArIG4uaGVpZ2h0OyAvLyBzICs9IFwiIE5ldyBQb3NpdGlvbjogKFwiICsgbi5wb3NpdGlvblggKyBcIiwgXCIgKyBuLnBvc2l0aW9uWSArIFwiKS5cIjtcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcbiAgICAvLyBVcGRhdGUgYW5jZXN0cnkgYm91ZGFyaWVzXG5cbiAgICB1cGRhdGVBbmNlc3RyeUJvdW5kYXJpZXMobiwgbGF5b3V0SW5mbyk7XG4gIH0gLy8gVXBkYXRlIHNpemUsIHBvc2l0aW9uIG9mIGNvbXB1bmQgbm9kZXNcblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ub2RlU2l6ZTsgaSsrKSB7XG4gICAgdmFyIG4gPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2ldO1xuXG4gICAgaWYgKDAgPCBuLmNoaWxkcmVuLmxlbmd0aCAmJiAhbi5pc0xvY2tlZCkge1xuICAgICAgbi5wb3NpdGlvblggPSAobi5tYXhYICsgbi5taW5YKSAvIDI7XG4gICAgICBuLnBvc2l0aW9uWSA9IChuLm1heFkgKyBuLm1pblkpIC8gMjtcbiAgICAgIG4ud2lkdGggPSBuLm1heFggLSBuLm1pblg7XG4gICAgICBuLmhlaWdodCA9IG4ubWF4WSAtIG4ubWluWTsgLy8gcyA9IFwiVXBkYXRpbmcgcG9zaXRpb24sIHNpemUgb2YgY29tcG91bmQgbm9kZSBcIiArIG4uaWQ7XG4gICAgICAvLyBzICs9IFwiXFxuUG9zaXRpb25YOiBcIiArIG4ucG9zaXRpb25YICsgXCIsIFBvc2l0aW9uWTogXCIgKyBuLnBvc2l0aW9uWTtcbiAgICAgIC8vIHMgKz0gXCJcXG5XaWR0aDogXCIgKyBuLndpZHRoICsgXCIsIEhlaWdodDogXCIgKyBuLmhlaWdodDtcbiAgICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgIH1cbiAgfVxufTtcbi8qKlxuICogQGJyaWVmIDogTGltaXRzIGEgZm9yY2UgKGZvcmNlWCwgZm9yY2VZKSB0byBiZSBub3RcbiAqICAgICAgICAgIGdyZWF0ZXIgKGluIG1vZHVsbykgdGhhbiBtYXguXG4gOCAgICAgICAgICBQcmVzZXJ2ZXMgZm9yY2UgZGlyZWN0aW9uLlxuICAqL1xuXG5cbnZhciBsaW1pdEZvcmNlID0gZnVuY3Rpb24gbGltaXRGb3JjZShmb3JjZVgsIGZvcmNlWSwgbWF4KSB7XG4gIC8vIHZhciBzID0gXCJMaW1pdGluZyBmb3JjZTogKFwiICsgZm9yY2VYICsgXCIsIFwiICsgZm9yY2VZICsgXCIpLiBNYXg6IFwiICsgbWF4O1xuICB2YXIgZm9yY2UgPSBNYXRoLnNxcnQoZm9yY2VYICogZm9yY2VYICsgZm9yY2VZICogZm9yY2VZKTtcblxuICBpZiAoZm9yY2UgPiBtYXgpIHtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgeDogbWF4ICogZm9yY2VYIC8gZm9yY2UsXG4gICAgICB5OiBtYXggKiBmb3JjZVkgLyBmb3JjZVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgdmFyIHJlcyA9IHtcbiAgICAgIHg6IGZvcmNlWCxcbiAgICAgIHk6IGZvcmNlWVxuICAgIH07XG4gIH0gLy8gcyArPSBcIi5cXG5SZXN1bHQ6IChcIiArIHJlcy54ICsgXCIsIFwiICsgcmVzLnkgKyBcIilcIjtcbiAgLy8gbG9nRGVidWcocyk7XG5cblxuICByZXR1cm4gcmVzO1xufTtcbi8qKlxuICogQGJyaWVmIDogRnVuY3Rpb24gdXNlZCBmb3Iga2VlcGluZyB0cmFjayBvZiBjb21wb3VuZCBub2RlXG4gKiAgICAgICAgICBzaXplcywgc2luY2UgdGhleSBzaG91bGQgYm91bmQgYWxsIHRoZWlyIHN1Ym5vZGVzLlxuICovXG5cblxudmFyIHVwZGF0ZUFuY2VzdHJ5Qm91bmRhcmllcyA9IGZ1bmN0aW9uIHVwZGF0ZUFuY2VzdHJ5Qm91bmRhcmllcyhub2RlLCBsYXlvdXRJbmZvKSB7XG4gIC8vIHZhciBzID0gXCJQcm9wYWdhdGluZyBuZXcgcG9zaXRpb24vc2l6ZSBvZiBub2RlIFwiICsgbm9kZS5pZDtcbiAgdmFyIHBhcmVudElkID0gbm9kZS5wYXJlbnRJZDtcblxuICBpZiAobnVsbCA9PSBwYXJlbnRJZCkge1xuICAgIC8vIElmIHRoZXJlJ3Mgbm8gcGFyZW50LCB3ZSBhcmUgZG9uZVxuICAgIC8vIHMgKz0gXCIuIE5vIHBhcmVudCBub2RlLlwiO1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgIHJldHVybjtcbiAgfSAvLyBHZXQgUGFyZW50IE5vZGVcblxuXG4gIHZhciBwID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtwYXJlbnRJZF1dO1xuICB2YXIgZmxhZyA9IGZhbHNlOyAvLyBNYXhYXG5cbiAgaWYgKG51bGwgPT0gcC5tYXhYIHx8IG5vZGUubWF4WCArIHAucGFkUmlnaHQgPiBwLm1heFgpIHtcbiAgICBwLm1heFggPSBub2RlLm1heFggKyBwLnBhZFJpZ2h0O1xuICAgIGZsYWcgPSB0cnVlOyAvLyBzICs9IFwiXFxuTmV3IG1heFggZm9yIHBhcmVudCBub2RlIFwiICsgcC5pZCArIFwiOiBcIiArIHAubWF4WDtcbiAgfSAvLyBNaW5YXG5cblxuICBpZiAobnVsbCA9PSBwLm1pblggfHwgbm9kZS5taW5YIC0gcC5wYWRMZWZ0IDwgcC5taW5YKSB7XG4gICAgcC5taW5YID0gbm9kZS5taW5YIC0gcC5wYWRMZWZ0O1xuICAgIGZsYWcgPSB0cnVlOyAvLyBzICs9IFwiXFxuTmV3IG1pblggZm9yIHBhcmVudCBub2RlIFwiICsgcC5pZCArIFwiOiBcIiArIHAubWluWDtcbiAgfSAvLyBNYXhZXG5cblxuICBpZiAobnVsbCA9PSBwLm1heFkgfHwgbm9kZS5tYXhZICsgcC5wYWRCb3R0b20gPiBwLm1heFkpIHtcbiAgICBwLm1heFkgPSBub2RlLm1heFkgKyBwLnBhZEJvdHRvbTtcbiAgICBmbGFnID0gdHJ1ZTsgLy8gcyArPSBcIlxcbk5ldyBtYXhZIGZvciBwYXJlbnQgbm9kZSBcIiArIHAuaWQgKyBcIjogXCIgKyBwLm1heFk7XG4gIH0gLy8gTWluWVxuXG5cbiAgaWYgKG51bGwgPT0gcC5taW5ZIHx8IG5vZGUubWluWSAtIHAucGFkVG9wIDwgcC5taW5ZKSB7XG4gICAgcC5taW5ZID0gbm9kZS5taW5ZIC0gcC5wYWRUb3A7XG4gICAgZmxhZyA9IHRydWU7IC8vIHMgKz0gXCJcXG5OZXcgbWluWSBmb3IgcGFyZW50IG5vZGUgXCIgKyBwLmlkICsgXCI6IFwiICsgcC5taW5ZO1xuICB9IC8vIElmIHVwZGF0ZWQgYm91bmRhcmllcywgcHJvcGFnYXRlIGNoYW5nZXMgdXB3YXJkXG5cblxuICBpZiAoZmxhZykge1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgIHJldHVybiB1cGRhdGVBbmNlc3RyeUJvdW5kYXJpZXMocCwgbGF5b3V0SW5mbyk7XG4gIH0gLy8gcyArPSBcIi4gTm8gY2hhbmdlcyBpbiBib3VuZGFyaWVzL3Bvc2l0aW9uIG9mIHBhcmVudCBub2RlIFwiICsgcC5pZDtcbiAgLy8gbG9nRGVidWcocyk7XG5cblxuICByZXR1cm47XG59O1xuXG52YXIgc2VwYXJhdGVDb21wb25lbnRzID0gZnVuY3Rpb24gc2VwYXJhdGVDb21wb25lbnRzKGxheW91dEluZm8sIG9wdGlvbnMpIHtcbiAgdmFyIG5vZGVzID0gbGF5b3V0SW5mby5sYXlvdXROb2RlcztcbiAgdmFyIGNvbXBvbmVudHMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgY2lkID0gbm9kZS5jbXB0SWQ7XG4gICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNbY2lkXSA9IGNvbXBvbmVudHNbY2lkXSB8fCBbXTtcbiAgICBjb21wb25lbnQucHVzaChub2RlKTtcbiAgfVxuXG4gIHZhciB0b3RhbEEgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjID0gY29tcG9uZW50c1tpXTtcblxuICAgIGlmICghYykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgYy54MSA9IEluZmluaXR5O1xuICAgIGMueDIgPSAtSW5maW5pdHk7XG4gICAgYy55MSA9IEluZmluaXR5O1xuICAgIGMueTIgPSAtSW5maW5pdHk7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBuID0gY1tqXTtcbiAgICAgIGMueDEgPSBNYXRoLm1pbihjLngxLCBuLnBvc2l0aW9uWCAtIG4ud2lkdGggLyAyKTtcbiAgICAgIGMueDIgPSBNYXRoLm1heChjLngyLCBuLnBvc2l0aW9uWCArIG4ud2lkdGggLyAyKTtcbiAgICAgIGMueTEgPSBNYXRoLm1pbihjLnkxLCBuLnBvc2l0aW9uWSAtIG4uaGVpZ2h0IC8gMik7XG4gICAgICBjLnkyID0gTWF0aC5tYXgoYy55Miwgbi5wb3NpdGlvblkgKyBuLmhlaWdodCAvIDIpO1xuICAgIH1cblxuICAgIGMudyA9IGMueDIgLSBjLngxO1xuICAgIGMuaCA9IGMueTIgLSBjLnkxO1xuICAgIHRvdGFsQSArPSBjLncgKiBjLmg7XG4gIH1cblxuICBjb21wb25lbnRzLnNvcnQoZnVuY3Rpb24gKGMxLCBjMikge1xuICAgIHJldHVybiBjMi53ICogYzIuaCAtIGMxLncgKiBjMS5oO1xuICB9KTtcbiAgdmFyIHggPSAwO1xuICB2YXIgeSA9IDA7XG4gIHZhciB1c2VkVyA9IDA7XG4gIHZhciByb3dIID0gMDtcbiAgdmFyIG1heFJvd1cgPSBNYXRoLnNxcnQodG90YWxBKSAqIGxheW91dEluZm8uY2xpZW50V2lkdGggLyBsYXlvdXRJbmZvLmNsaWVudEhlaWdodDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYyA9IGNvbXBvbmVudHNbaV07XG5cbiAgICBpZiAoIWMpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgYy5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIG4gPSBjW2pdO1xuXG4gICAgICBpZiAoIW4uaXNMb2NrZWQpIHtcbiAgICAgICAgbi5wb3NpdGlvblggKz0geCAtIGMueDE7XG4gICAgICAgIG4ucG9zaXRpb25ZICs9IHkgLSBjLnkxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHggKz0gYy53ICsgb3B0aW9ucy5jb21wb25lbnRTcGFjaW5nO1xuICAgIHVzZWRXICs9IGMudyArIG9wdGlvbnMuY29tcG9uZW50U3BhY2luZztcbiAgICByb3dIID0gTWF0aC5tYXgocm93SCwgYy5oKTtcblxuICAgIGlmICh1c2VkVyA+IG1heFJvd1cpIHtcbiAgICAgIHkgKz0gcm93SCArIG9wdGlvbnMuY29tcG9uZW50U3BhY2luZztcbiAgICAgIHggPSAwO1xuICAgICAgdXNlZFcgPSAwO1xuICAgICAgcm93SCA9IDA7XG4gICAgfVxuICB9XG59O1xuXG52YXIgZGVmYXVsdHMkZCA9IHtcbiAgZml0OiB0cnVlLFxuICAvLyB3aGV0aGVyIHRvIGZpdCB0aGUgdmlld3BvcnQgdG8gdGhlIGdyYXBoXG4gIHBhZGRpbmc6IDMwLFxuICAvLyBwYWRkaW5nIHVzZWQgb24gZml0XG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsXG4gIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICBhdm9pZE92ZXJsYXA6IHRydWUsXG4gIC8vIHByZXZlbnRzIG5vZGUgb3ZlcmxhcCwgbWF5IG92ZXJmbG93IGJvdW5kaW5nQm94IGlmIG5vdCBlbm91Z2ggc3BhY2VcbiAgYXZvaWRPdmVybGFwUGFkZGluZzogMTAsXG4gIC8vIGV4dHJhIHNwYWNpbmcgYXJvdW5kIG5vZGVzIHdoZW4gYXZvaWRPdmVybGFwOiB0cnVlXG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2UsXG4gIC8vIEV4Y2x1ZGVzIHRoZSBsYWJlbCB3aGVuIGNhbGN1bGF0aW5nIG5vZGUgYm91bmRpbmcgYm94ZXMgZm9yIHRoZSBsYXlvdXQgYWxnb3JpdGhtXG4gIHNwYWNpbmdGYWN0b3I6IHVuZGVmaW5lZCxcbiAgLy8gQXBwbGllcyBhIG11bHRpcGxpY2F0aXZlIGZhY3RvciAoPjApIHRvIGV4cGFuZCBvciBjb21wcmVzcyB0aGUgb3ZlcmFsbCBhcmVhIHRoYXQgdGhlIG5vZGVzIHRha2UgdXBcbiAgY29uZGVuc2U6IGZhbHNlLFxuICAvLyB1c2VzIGFsbCBhdmFpbGFibGUgc3BhY2Ugb24gZmFsc2UsIHVzZXMgbWluaW1hbCBzcGFjZSBvbiB0cnVlXG4gIHJvd3M6IHVuZGVmaW5lZCxcbiAgLy8gZm9yY2UgbnVtIG9mIHJvd3MgaW4gdGhlIGdyaWRcbiAgY29sczogdW5kZWZpbmVkLFxuICAvLyBmb3JjZSBudW0gb2YgY29sdW1ucyBpbiB0aGUgZ3JpZFxuICBwb3NpdGlvbjogZnVuY3Rpb24gcG9zaXRpb24obm9kZSkge30sXG4gIC8vIHJldHVybnMgeyByb3csIGNvbCB9IGZvciBlbGVtZW50XG4gIHNvcnQ6IHVuZGVmaW5lZCxcbiAgLy8gYSBzb3J0aW5nIGZ1bmN0aW9uIHRvIG9yZGVyIHRoZSBub2RlczsgZS5nLiBmdW5jdGlvbihhLCBiKXsgcmV0dXJuIGEuZGF0YSgnd2VpZ2h0JykgLSBiLmRhdGEoJ3dlaWdodCcpIH1cbiAgYW5pbWF0ZTogZmFsc2UsXG4gIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0aW9uRHVyYXRpb246IDUwMCxcbiAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgYW5pbWF0aW9uRWFzaW5nOiB1bmRlZmluZWQsXG4gIC8vIGVhc2luZyBvZiBhbmltYXRpb24gaWYgZW5hYmxlZFxuICBhbmltYXRlRmlsdGVyOiBmdW5jdGlvbiBhbmltYXRlRmlsdGVyKG5vZGUsIGkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgLy8gYSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgbm9kZSBzaG91bGQgYmUgYW5pbWF0ZWQuICBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWQuICBOb24tYW5pbWF0ZWQgbm9kZXMgYXJlIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgbGF5b3V0IHN0YXJ0c1xuICByZWFkeTogdW5kZWZpbmVkLFxuICAvLyBjYWxsYmFjayBvbiBsYXlvdXRyZWFkeVxuICBzdG9wOiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHN0b3BcbiAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0obm9kZSwgcG9zaXRpb24pIHtcbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH0gLy8gdHJhbnNmb3JtIGEgZ2l2ZW4gbm9kZSBwb3NpdGlvbi4gVXNlZnVsIGZvciBjaGFuZ2luZyBmbG93IGRpcmVjdGlvbiBpbiBkaXNjcmV0ZSBsYXlvdXRzIFxuXG59O1xuXG5mdW5jdGlvbiBHcmlkTGF5b3V0KG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cyRkLCBvcHRpb25zKTtcbn1cblxuR3JpZExheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcGFyYW1zID0gdGhpcy5vcHRpb25zO1xuICB2YXIgb3B0aW9ucyA9IHBhcmFtcztcbiAgdmFyIGN5ID0gcGFyYW1zLmN5O1xuICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgdmFyIG5vZGVzID0gZWxlcy5ub2RlcygpLm5vdCgnOnBhcmVudCcpO1xuXG4gIGlmIChvcHRpb25zLnNvcnQpIHtcbiAgICBub2RlcyA9IG5vZGVzLnNvcnQob3B0aW9ucy5zb3J0KTtcbiAgfVxuXG4gIHZhciBiYiA9IG1ha2VCb3VuZGluZ0JveChvcHRpb25zLmJvdW5kaW5nQm94ID8gb3B0aW9ucy5ib3VuZGluZ0JveCA6IHtcbiAgICB4MTogMCxcbiAgICB5MTogMCxcbiAgICB3OiBjeS53aWR0aCgpLFxuICAgIGg6IGN5LmhlaWdodCgpXG4gIH0pO1xuXG4gIGlmIChiYi5oID09PSAwIHx8IGJiLncgPT09IDApIHtcbiAgICBlbGVzLm5vZGVzKCkubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGJiLngxLFxuICAgICAgICB5OiBiYi55MVxuICAgICAgfTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICAvLyB3aWR0aC9oZWlnaHQgKiBzcGxpdHNeMiA9IGNlbGxzIHdoZXJlIHNwbGl0cyBpcyBudW1iZXIgb2YgdGltZXMgdG8gc3BsaXQgd2lkdGhcbiAgICB2YXIgY2VsbHMgPSBub2Rlcy5zaXplKCk7XG4gICAgdmFyIHNwbGl0cyA9IE1hdGguc3FydChjZWxscyAqIGJiLmggLyBiYi53KTtcbiAgICB2YXIgcm93cyA9IE1hdGgucm91bmQoc3BsaXRzKTtcbiAgICB2YXIgY29scyA9IE1hdGgucm91bmQoYmIudyAvIGJiLmggKiBzcGxpdHMpO1xuXG4gICAgdmFyIHNtYWxsID0gZnVuY3Rpb24gc21hbGwodmFsKSB7XG4gICAgICBpZiAodmFsID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKHJvd3MsIGNvbHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG1pbiA9IE1hdGgubWluKHJvd3MsIGNvbHMpO1xuXG4gICAgICAgIGlmIChtaW4gPT0gcm93cykge1xuICAgICAgICAgIHJvd3MgPSB2YWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29scyA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgbGFyZ2UgPSBmdW5jdGlvbiBsYXJnZSh2YWwpIHtcbiAgICAgIGlmICh2YWwgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgocm93cywgY29scyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbWF4ID0gTWF0aC5tYXgocm93cywgY29scyk7XG5cbiAgICAgICAgaWYgKG1heCA9PSByb3dzKSB7XG4gICAgICAgICAgcm93cyA9IHZhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2xzID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBvUm93cyA9IG9wdGlvbnMucm93cztcbiAgICB2YXIgb0NvbHMgPSBvcHRpb25zLmNvbHMgIT0gbnVsbCA/IG9wdGlvbnMuY29scyA6IG9wdGlvbnMuY29sdW1uczsgLy8gaWYgcm93cyBvciBjb2x1bW5zIHdlcmUgc2V0IGluIG9wdGlvbnMsIHVzZSB0aG9zZSB2YWx1ZXNcblxuICAgIGlmIChvUm93cyAhPSBudWxsICYmIG9Db2xzICE9IG51bGwpIHtcbiAgICAgIHJvd3MgPSBvUm93cztcbiAgICAgIGNvbHMgPSBvQ29scztcbiAgICB9IGVsc2UgaWYgKG9Sb3dzICE9IG51bGwgJiYgb0NvbHMgPT0gbnVsbCkge1xuICAgICAgcm93cyA9IG9Sb3dzO1xuICAgICAgY29scyA9IE1hdGguY2VpbChjZWxscyAvIHJvd3MpO1xuICAgIH0gZWxzZSBpZiAob1Jvd3MgPT0gbnVsbCAmJiBvQ29scyAhPSBudWxsKSB7XG4gICAgICBjb2xzID0gb0NvbHM7XG4gICAgICByb3dzID0gTWF0aC5jZWlsKGNlbGxzIC8gY29scyk7XG4gICAgfSAvLyBvdGhlcndpc2UgdXNlIHRoZSBhdXRvbWF0aWMgdmFsdWVzIGFuZCBhZGp1c3QgYWNjb3JkaW5nbHlcbiAgICAvLyBpZiByb3VuZGluZyB3YXMgdXAsIHNlZSBpZiB3ZSBjYW4gcmVkdWNlIHJvd3Mgb3IgY29sdW1uc1xuICAgIGVsc2UgaWYgKGNvbHMgKiByb3dzID4gY2VsbHMpIHtcbiAgICAgICAgdmFyIHNtID0gc21hbGwoKTtcbiAgICAgICAgdmFyIGxnID0gbGFyZ2UoKTsgLy8gcmVkdWNpbmcgdGhlIHNtYWxsIHNpZGUgdGFrZXMgYXdheSB0aGUgbW9zdCBjZWxscywgc28gdHJ5IGl0IGZpcnN0XG5cbiAgICAgICAgaWYgKChzbSAtIDEpICogbGcgPj0gY2VsbHMpIHtcbiAgICAgICAgICBzbWFsbChzbSAtIDEpO1xuICAgICAgICB9IGVsc2UgaWYgKChsZyAtIDEpICogc20gPj0gY2VsbHMpIHtcbiAgICAgICAgICBsYXJnZShsZyAtIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpZiByb3VuZGluZyB3YXMgdG9vIGxvdywgYWRkIHJvd3Mgb3IgY29sdW1uc1xuICAgICAgICB3aGlsZSAoY29scyAqIHJvd3MgPCBjZWxscykge1xuICAgICAgICAgIHZhciBfc20gPSBzbWFsbCgpO1xuXG4gICAgICAgICAgdmFyIF9sZyA9IGxhcmdlKCk7IC8vIHRyeSB0byBhZGQgdG8gbGFyZ2VyIHNpZGUgZmlyc3QgKGFkZHMgbGVzcyBpbiBtdWx0aXBsaWNhdGlvbilcblxuXG4gICAgICAgICAgaWYgKChfbGcgKyAxKSAqIF9zbSA+PSBjZWxscykge1xuICAgICAgICAgICAgbGFyZ2UoX2xnICsgMSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNtYWxsKF9zbSArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgdmFyIGNlbGxXaWR0aCA9IGJiLncgLyBjb2xzO1xuICAgIHZhciBjZWxsSGVpZ2h0ID0gYmIuaCAvIHJvd3M7XG5cbiAgICBpZiAob3B0aW9ucy5jb25kZW5zZSkge1xuICAgICAgY2VsbFdpZHRoID0gMDtcbiAgICAgIGNlbGxIZWlnaHQgPSAwO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmF2b2lkT3ZlcmxhcCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICB2YXIgcG9zID0gbm9kZS5fcHJpdmF0ZS5wb3NpdGlvbjtcblxuICAgICAgICBpZiAocG9zLnggPT0gbnVsbCB8fCBwb3MueSA9PSBudWxsKSB7XG4gICAgICAgICAgLy8gZm9yIGJiXG4gICAgICAgICAgcG9zLnggPSAwO1xuICAgICAgICAgIHBvcy55ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuYmIgPSBub2RlLmxheW91dERpbWVuc2lvbnMob3B0aW9ucyk7XG4gICAgICAgIHZhciBwID0gb3B0aW9ucy5hdm9pZE92ZXJsYXBQYWRkaW5nO1xuICAgICAgICB2YXIgdyA9IG5iYi53ICsgcDtcbiAgICAgICAgdmFyIGggPSBuYmIuaCArIHA7XG4gICAgICAgIGNlbGxXaWR0aCA9IE1hdGgubWF4KGNlbGxXaWR0aCwgdyk7XG4gICAgICAgIGNlbGxIZWlnaHQgPSBNYXRoLm1heChjZWxsSGVpZ2h0LCBoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY2VsbFVzZWQgPSB7fTsgLy8gZS5nLiAnYy0wLTInID0+IHRydWVcblxuICAgIHZhciB1c2VkID0gZnVuY3Rpb24gdXNlZChyb3csIGNvbCkge1xuICAgICAgcmV0dXJuIGNlbGxVc2VkWydjLScgKyByb3cgKyAnLScgKyBjb2xdID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH07XG5cbiAgICB2YXIgdXNlID0gZnVuY3Rpb24gdXNlKHJvdywgY29sKSB7XG4gICAgICBjZWxsVXNlZFsnYy0nICsgcm93ICsgJy0nICsgY29sXSA9IHRydWU7XG4gICAgfTsgLy8gdG8ga2VlcCB0cmFjayBvZiBjdXJyZW50IGNlbGwgcG9zaXRpb25cblxuXG4gICAgdmFyIHJvdyA9IDA7XG4gICAgdmFyIGNvbCA9IDA7XG5cbiAgICB2YXIgbW92ZVRvTmV4dENlbGwgPSBmdW5jdGlvbiBtb3ZlVG9OZXh0Q2VsbCgpIHtcbiAgICAgIGNvbCsrO1xuXG4gICAgICBpZiAoY29sID49IGNvbHMpIHtcbiAgICAgICAgY29sID0gMDtcbiAgICAgICAgcm93Kys7XG4gICAgICB9XG4gICAgfTsgLy8gZ2V0IGEgY2FjaGUgb2YgYWxsIHRoZSBtYW51YWwgcG9zaXRpb25zXG5cblxuICAgIHZhciBpZDJtYW5Qb3MgPSB7fTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBub2Rlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfbm9kZSA9IG5vZGVzW19pXTtcbiAgICAgIHZhciByY1BvcyA9IG9wdGlvbnMucG9zaXRpb24oX25vZGUpO1xuXG4gICAgICBpZiAocmNQb3MgJiYgKHJjUG9zLnJvdyAhPT0gdW5kZWZpbmVkIHx8IHJjUG9zLmNvbCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAvLyBtdXN0IGhhdmUgYXQgbGVhc3Qgcm93IG9yIGNvbCBkZWYnZFxuICAgICAgICB2YXIgX3BvcyA9IHtcbiAgICAgICAgICByb3c6IHJjUG9zLnJvdyxcbiAgICAgICAgICBjb2w6IHJjUG9zLmNvbFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChfcG9zLmNvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gZmluZCB1bnVzZWQgY29sXG4gICAgICAgICAgX3Bvcy5jb2wgPSAwO1xuXG4gICAgICAgICAgd2hpbGUgKHVzZWQoX3Bvcy5yb3csIF9wb3MuY29sKSkge1xuICAgICAgICAgICAgX3Bvcy5jb2wrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoX3Bvcy5yb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIGZpbmQgdW51c2VkIHJvd1xuICAgICAgICAgIF9wb3Mucm93ID0gMDtcblxuICAgICAgICAgIHdoaWxlICh1c2VkKF9wb3Mucm93LCBfcG9zLmNvbCkpIHtcbiAgICAgICAgICAgIF9wb3Mucm93Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWQybWFuUG9zW19ub2RlLmlkKCldID0gX3BvcztcbiAgICAgICAgdXNlKF9wb3Mucm93LCBfcG9zLmNvbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGdldFBvcyA9IGZ1bmN0aW9uIGdldFBvcyhlbGVtZW50LCBpKSB7XG4gICAgICB2YXIgeCwgeTtcblxuICAgICAgaWYgKGVsZW1lbnQubG9ja2VkKCkgfHwgZWxlbWVudC5pc1BhcmVudCgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gc2VlIGlmIHdlIGhhdmUgYSBtYW51YWwgcG9zaXRpb24gc2V0XG5cblxuICAgICAgdmFyIHJjUG9zID0gaWQybWFuUG9zW2VsZW1lbnQuaWQoKV07XG5cbiAgICAgIGlmIChyY1Bvcykge1xuICAgICAgICB4ID0gcmNQb3MuY29sICogY2VsbFdpZHRoICsgY2VsbFdpZHRoIC8gMiArIGJiLngxO1xuICAgICAgICB5ID0gcmNQb3Mucm93ICogY2VsbEhlaWdodCArIGNlbGxIZWlnaHQgLyAyICsgYmIueTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBvdGhlcndpc2Ugc2V0IGF1dG9tYXRpY2FsbHlcbiAgICAgICAgd2hpbGUgKHVzZWQocm93LCBjb2wpKSB7XG4gICAgICAgICAgbW92ZVRvTmV4dENlbGwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHggPSBjb2wgKiBjZWxsV2lkdGggKyBjZWxsV2lkdGggLyAyICsgYmIueDE7XG4gICAgICAgIHkgPSByb3cgKiBjZWxsSGVpZ2h0ICsgY2VsbEhlaWdodCAvIDIgKyBiYi55MTtcbiAgICAgICAgdXNlKHJvdywgY29sKTtcbiAgICAgICAgbW92ZVRvTmV4dENlbGwoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbm9kZXMubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGdldFBvcyk7XG4gIH1cblxuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciBkZWZhdWx0cyRlID0ge1xuICByZWFkeTogZnVuY3Rpb24gcmVhZHkoKSB7fSxcbiAgLy8gb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHt9IC8vIG9uIGxheW91dHN0b3BcblxufTsgLy8gY29uc3RydWN0b3Jcbi8vIG9wdGlvbnMgOiBvYmplY3QgY29udGFpbmluZyBsYXlvdXQgb3B0aW9uc1xuXG5mdW5jdGlvbiBOdWxsTGF5b3V0KG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cyRlLCBvcHRpb25zKTtcbn0gLy8gcnVucyB0aGUgbGF5b3V0XG5cblxuTnVsbExheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7IC8vIGVsZW1lbnRzIHRvIGNvbnNpZGVyIGluIHRoZSBsYXlvdXRcblxuICB2YXIgbGF5b3V0ID0gdGhpczsgLy8gY3kgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgZm9yIHVzIGluIHRoZSBjb25zdHJ1Y3RvclxuICAvLyAoZGlzYWJsZSBlc2xpbnQgZm9yIG5leHQgbGluZSBhcyB0aGlzIHNlcnZlcyBhcyBleGFtcGxlIGxheW91dCBjb2RlIHRvIGV4dGVybmFsIGRldmVsb3BlcnMpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuXG4gIHZhciBjeSA9IG9wdGlvbnMuY3k7XG4gIGxheW91dC5lbWl0KCdsYXlvdXRzdGFydCcpOyAvLyBwdXRzIGFsbCBub2RlcyBhdCAoMCwgMClcbiAgLy8gbi5iLiBtb3N0IGxheW91dHMgd291bGQgdXNlIGxheW91dFBvc2l0aW9ucygpLCBpbnN0ZWFkIG9mIHBvc2l0aW9ucygpIGFuZCBtYW51YWwgZXZlbnRzXG5cbiAgZWxlcy5ub2RlcygpLnBvc2l0aW9ucyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfTtcbiAgfSk7IC8vIHRyaWdnZXIgbGF5b3V0cmVhZHkgd2hlbiBlYWNoIG5vZGUgaGFzIGhhZCBpdHMgcG9zaXRpb24gc2V0IGF0IGxlYXN0IG9uY2VcblxuICBsYXlvdXQub25lKCdsYXlvdXRyZWFkeScsIG9wdGlvbnMucmVhZHkpO1xuICBsYXlvdXQuZW1pdCgnbGF5b3V0cmVhZHknKTsgLy8gdHJpZ2dlciBsYXlvdXRzdG9wIHdoZW4gdGhlIGxheW91dCBzdG9wcyAoZS5nLiBmaW5pc2hlcylcblxuICBsYXlvdXQub25lKCdsYXlvdXRzdG9wJywgb3B0aW9ucy5zdG9wKTtcbiAgbGF5b3V0LmVtaXQoJ2xheW91dHN0b3AnKTtcbiAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG59OyAvLyBjYWxsZWQgb24gY29udGludW91cyBsYXlvdXRzIHRvIHN0b3AgdGhlbSBiZWZvcmUgdGhleSBmaW5pc2hcblxuXG5OdWxsTGF5b3V0LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciBkZWZhdWx0cyRmID0ge1xuICBwb3NpdGlvbnM6IHVuZGVmaW5lZCxcbiAgLy8gbWFwIG9mIChub2RlIGlkKSA9PiAocG9zaXRpb24gb2JqKTsgb3IgZnVuY3Rpb24obm9kZSl7IHJldHVybiBzb21Qb3M7IH1cbiAgem9vbTogdW5kZWZpbmVkLFxuICAvLyB0aGUgem9vbSBsZXZlbCB0byBzZXQgKHByb2Igd2FudCBmaXQgPSBmYWxzZSBpZiBzZXQpXG4gIHBhbjogdW5kZWZpbmVkLFxuICAvLyB0aGUgcGFuIGxldmVsIHRvIHNldCAocHJvYiB3YW50IGZpdCA9IGZhbHNlIGlmIHNldClcbiAgZml0OiB0cnVlLFxuICAvLyB3aGV0aGVyIHRvIGZpdCB0byB2aWV3cG9ydFxuICBwYWRkaW5nOiAzMCxcbiAgLy8gcGFkZGluZyBvbiBmaXRcbiAgYW5pbWF0ZTogZmFsc2UsXG4gIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0aW9uRHVyYXRpb246IDUwMCxcbiAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgYW5pbWF0aW9uRWFzaW5nOiB1bmRlZmluZWQsXG4gIC8vIGVhc2luZyBvZiBhbmltYXRpb24gaWYgZW5hYmxlZFxuICBhbmltYXRlRmlsdGVyOiBmdW5jdGlvbiBhbmltYXRlRmlsdGVyKG5vZGUsIGkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgLy8gYSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgbm9kZSBzaG91bGQgYmUgYW5pbWF0ZWQuICBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWQuICBOb24tYW5pbWF0ZWQgbm9kZXMgYXJlIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgbGF5b3V0IHN0YXJ0c1xuICByZWFkeTogdW5kZWZpbmVkLFxuICAvLyBjYWxsYmFjayBvbiBsYXlvdXRyZWFkeVxuICBzdG9wOiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHN0b3BcbiAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0obm9kZSwgcG9zaXRpb24pIHtcbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH0gLy8gdHJhbnNmb3JtIGEgZ2l2ZW4gbm9kZSBwb3NpdGlvbi4gVXNlZnVsIGZvciBjaGFuZ2luZyBmbG93IGRpcmVjdGlvbiBpbiBkaXNjcmV0ZSBsYXlvdXRzXG5cbn07XG5cbmZ1bmN0aW9uIFByZXNldExheW91dChvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkZiwgb3B0aW9ucyk7XG59XG5cblByZXNldExheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7XG4gIHZhciBub2RlcyA9IGVsZXMubm9kZXMoKTtcbiAgdmFyIHBvc0lzRm4gPSBmbihvcHRpb25zLnBvc2l0aW9ucyk7XG5cbiAgZnVuY3Rpb24gZ2V0UG9zaXRpb24obm9kZSkge1xuICAgIGlmIChvcHRpb25zLnBvc2l0aW9ucyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29weVBvc2l0aW9uKG5vZGUucG9zaXRpb24oKSk7XG4gICAgfVxuXG4gICAgaWYgKHBvc0lzRm4pIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnBvc2l0aW9ucyhub2RlKTtcbiAgICB9XG5cbiAgICB2YXIgcG9zID0gb3B0aW9ucy5wb3NpdGlvbnNbbm9kZS5fcHJpdmF0ZS5kYXRhLmlkXTtcblxuICAgIGlmIChwb3MgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvcztcbiAgfVxuXG4gIG5vZGVzLmxheW91dFBvc2l0aW9ucyh0aGlzLCBvcHRpb25zLCBmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBwb3NpdGlvbiA9IGdldFBvc2l0aW9uKG5vZGUpO1xuXG4gICAgaWYgKG5vZGUubG9ja2VkKCkgfHwgcG9zaXRpb24gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfSk7XG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxudmFyIGRlZmF1bHRzJGcgPSB7XG4gIGZpdDogdHJ1ZSxcbiAgLy8gd2hldGhlciB0byBmaXQgdG8gdmlld3BvcnRcbiAgcGFkZGluZzogMzAsXG4gIC8vIGZpdCBwYWRkaW5nXG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsXG4gIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICBhbmltYXRlOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGFuaW1hdGVGaWx0ZXI6IGZ1bmN0aW9uIGFuaW1hdGVGaWx0ZXIobm9kZSwgaSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAvLyBhIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBub2RlIHNob3VsZCBiZSBhbmltYXRlZC4gIEFsbCBub2RlcyBhbmltYXRlZCBieSBkZWZhdWx0IG9uIGFuaW1hdGUgZW5hYmxlZC4gIE5vbi1hbmltYXRlZCBub2RlcyBhcmUgcG9zaXRpb25lZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBsYXlvdXQgc3RhcnRzXG4gIHJlYWR5OiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHJlYWR5XG4gIHN0b3A6IHVuZGVmaW5lZCxcbiAgLy8gY2FsbGJhY2sgb24gbGF5b3V0c3RvcFxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3NpdGlvbikge1xuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfSAvLyB0cmFuc2Zvcm0gYSBnaXZlbiBub2RlIHBvc2l0aW9uLiBVc2VmdWwgZm9yIGNoYW5naW5nIGZsb3cgZGlyZWN0aW9uIGluIGRpc2NyZXRlIGxheW91dHMgXG5cbn07XG5cbmZ1bmN0aW9uIFJhbmRvbUxheW91dChvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkZywgb3B0aW9ucyk7XG59XG5cblJhbmRvbUxheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgdmFyIGN5ID0gb3B0aW9ucy5jeTtcbiAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7XG4gIHZhciBiYiA9IG1ha2VCb3VuZGluZ0JveChvcHRpb25zLmJvdW5kaW5nQm94ID8gb3B0aW9ucy5ib3VuZGluZ0JveCA6IHtcbiAgICB4MTogMCxcbiAgICB5MTogMCxcbiAgICB3OiBjeS53aWR0aCgpLFxuICAgIGg6IGN5LmhlaWdodCgpXG4gIH0pO1xuXG4gIHZhciBnZXRQb3MgPSBmdW5jdGlvbiBnZXRQb3Mobm9kZSwgaSkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBiYi54MSArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIGJiLncpLFxuICAgICAgeTogYmIueTEgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiBiYi5oKVxuICAgIH07XG4gIH07XG5cbiAgZWxlcy5ub2RlcygpLmxheW91dFBvc2l0aW9ucyh0aGlzLCBvcHRpb25zLCBnZXRQb3MpO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciBsYXlvdXQgPSBbe1xuICBuYW1lOiAnYnJlYWR0aGZpcnN0JyxcbiAgaW1wbDogQnJlYWR0aEZpcnN0TGF5b3V0XG59LCB7XG4gIG5hbWU6ICdjaXJjbGUnLFxuICBpbXBsOiBDaXJjbGVMYXlvdXRcbn0sIHtcbiAgbmFtZTogJ2NvbmNlbnRyaWMnLFxuICBpbXBsOiBDb25jZW50cmljTGF5b3V0XG59LCB7XG4gIG5hbWU6ICdjb3NlJyxcbiAgaW1wbDogQ29zZUxheW91dFxufSwge1xuICBuYW1lOiAnZ3JpZCcsXG4gIGltcGw6IEdyaWRMYXlvdXRcbn0sIHtcbiAgbmFtZTogJ251bGwnLFxuICBpbXBsOiBOdWxsTGF5b3V0XG59LCB7XG4gIG5hbWU6ICdwcmVzZXQnLFxuICBpbXBsOiBQcmVzZXRMYXlvdXRcbn0sIHtcbiAgbmFtZTogJ3JhbmRvbScsXG4gIGltcGw6IFJhbmRvbUxheW91dFxufV07XG5cbmZ1bmN0aW9uIE51bGxSZW5kZXJlcihvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIHRoaXMubm90aWZpY2F0aW9ucyA9IDA7IC8vIGZvciB0ZXN0aW5nXG59XG5cbnZhciBub29wJDEgPSBmdW5jdGlvbiBub29wKCkge307XG5cbnZhciB0aHJvd0ltZ0VyciA9IGZ1bmN0aW9uIHRocm93SW1nRXJyKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ0EgaGVhZGxlc3MgaW5zdGFuY2UgY2FuIG5vdCByZW5kZXIgaW1hZ2VzJyk7XG59O1xuXG5OdWxsUmVuZGVyZXIucHJvdG90eXBlID0ge1xuICByZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGU6IG5vb3AkMSxcbiAgbm90aWZ5OiBmdW5jdGlvbiBub3RpZnkoKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zKys7XG4gIH0sXG4gIGluaXQ6IG5vb3AkMSxcbiAgaXNIZWFkbGVzczogZnVuY3Rpb24gaXNIZWFkbGVzcygpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgcG5nOiB0aHJvd0ltZ0VycixcbiAganBnOiB0aHJvd0ltZ0VyclxufTtcblxudmFyIEJScCA9IHt9O1xuQlJwLmFycm93U2hhcGVXaWR0aCA9IDAuMztcblxuQlJwLnJlZ2lzdGVyQXJyb3dTaGFwZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBhcnJvd1NoYXBlcyA9IHRoaXMuYXJyb3dTaGFwZXMgPSB7fTtcbiAgdmFyIHJlbmRlcmVyID0gdGhpczsgLy8gQ29udHJhY3QgZm9yIGFycm93IHNoYXBlczpcbiAgLy8gMCwgMCBpcyBhcnJvdyB0aXBcbiAgLy8gKDAsIDEpIGlzIGRpcmVjdGlvbiB0b3dhcmRzIG5vZGVcbiAgLy8gKDEsIDApIGlzIHJpZ2h0XG4gIC8vXG4gIC8vIGZ1bmN0aW9uYWwgYXBpOlxuICAvLyBjb2xsaWRlOiBjaGVjayB4LCB5IGluIHNoYXBlXG4gIC8vIHJvdWdoQ29sbGlkZTogY2FsbGVkIGJlZm9yZSBjb2xsaWRlLCBubyBmYWxzZSBuZWdhdGl2ZXNcbiAgLy8gZHJhdzogZHJhd1xuICAvLyBzcGFjaW5nOiBkaXN0KGFycm93VGlwLCBub2RlQm91bmRhcnkpXG4gIC8vIGdhcDogZGlzdChlZGdlVGlwLCBub2RlQm91bmRhcnkpLCBlZGdlVGlwIG1heSAhPSBhcnJvd1RpcFxuXG4gIHZhciBiYkNvbGxpZGUgPSBmdW5jdGlvbiBiYkNvbGxpZGUoeCwgeSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgsIHBhZGRpbmcpIHtcbiAgICB2YXIgeDEgPSB0cmFuc2xhdGlvbi54IC0gc2l6ZSAvIDIgLSBwYWRkaW5nO1xuICAgIHZhciB4MiA9IHRyYW5zbGF0aW9uLnggKyBzaXplIC8gMiArIHBhZGRpbmc7XG4gICAgdmFyIHkxID0gdHJhbnNsYXRpb24ueSAtIHNpemUgLyAyIC0gcGFkZGluZztcbiAgICB2YXIgeTIgPSB0cmFuc2xhdGlvbi55ICsgc2l6ZSAvIDIgKyBwYWRkaW5nO1xuICAgIHZhciBpbnNpZGUgPSB4MSA8PSB4ICYmIHggPD0geDIgJiYgeTEgPD0geSAmJiB5IDw9IHkyO1xuICAgIHJldHVybiBpbnNpZGU7XG4gIH07XG5cbiAgdmFyIHRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24pIHtcbiAgICB2YXIgeFJvdGF0ZWQgPSB4ICogTWF0aC5jb3MoYW5nbGUpIC0geSAqIE1hdGguc2luKGFuZ2xlKTtcbiAgICB2YXIgeVJvdGF0ZWQgPSB4ICogTWF0aC5zaW4oYW5nbGUpICsgeSAqIE1hdGguY29zKGFuZ2xlKTtcbiAgICB2YXIgeFNjYWxlZCA9IHhSb3RhdGVkICogc2l6ZTtcbiAgICB2YXIgeVNjYWxlZCA9IHlSb3RhdGVkICogc2l6ZTtcbiAgICB2YXIgeFRyYW5zbGF0ZWQgPSB4U2NhbGVkICsgdHJhbnNsYXRpb24ueDtcbiAgICB2YXIgeVRyYW5zbGF0ZWQgPSB5U2NhbGVkICsgdHJhbnNsYXRpb24ueTtcbiAgICByZXR1cm4ge1xuICAgICAgeDogeFRyYW5zbGF0ZWQsXG4gICAgICB5OiB5VHJhbnNsYXRlZFxuICAgIH07XG4gIH07XG5cbiAgdmFyIHRyYW5zZm9ybVBvaW50cyA9IGZ1bmN0aW9uIHRyYW5zZm9ybVBvaW50cyhwdHMsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbikge1xuICAgIHZhciByZXRQdHMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHRzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB2YXIgeCA9IHB0c1tpXTtcbiAgICAgIHZhciB5ID0gcHRzW2kgKyAxXTtcbiAgICAgIHJldFB0cy5wdXNoKHRyYW5zZm9ybSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0UHRzO1xuICB9O1xuXG4gIHZhciBwb2ludHNUb0FyciA9IGZ1bmN0aW9uIHBvaW50c1RvQXJyKHB0cykge1xuICAgIHZhciByZXQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcCA9IHB0c1tpXTtcbiAgICAgIHJldC5wdXNoKHAueCwgcC55KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIHZhciBzdGFuZGFyZEdhcCA9IGZ1bmN0aW9uIHN0YW5kYXJkR2FwKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSAqIGVkZ2UucHN0eWxlKCdhcnJvdy1zY2FsZScpLnBmVmFsdWUgKiAyO1xuICB9O1xuXG4gIHZhciBkZWZpbmVBcnJvd1NoYXBlID0gZnVuY3Rpb24gZGVmaW5lQXJyb3dTaGFwZShuYW1lLCBkZWZuKSB7XG4gICAgaWYgKHN0cmluZyhkZWZuKSkge1xuICAgICAgZGVmbiA9IGFycm93U2hhcGVzW2RlZm5dO1xuICAgIH1cblxuICAgIGFycm93U2hhcGVzW25hbWVdID0gZXh0ZW5kKHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBwb2ludHM6IFstMC4xNSwgLTAuMywgMC4xNSwgLTAuMywgMC4xNSwgMC4zLCAtMC4xNSwgMC4zXSxcbiAgICAgIGNvbGxpZGU6IGZ1bmN0aW9uIGNvbGxpZGUoeCwgeSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBwYWRkaW5nKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSBwb2ludHNUb0Fycih0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHMsIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICAgIHZhciBpbnNpZGUgPSBwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgcG9pbnRzKTtcbiAgICAgICAgcmV0dXJuIGluc2lkZTtcbiAgICAgIH0sXG4gICAgICByb3VnaENvbGxpZGU6IGJiQ29sbGlkZSxcbiAgICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHMsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbik7XG4gICAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKCdwb2x5Z29uJykoY29udGV4dCwgcG9pbnRzKTtcbiAgICAgIH0sXG4gICAgICBzcGFjaW5nOiBmdW5jdGlvbiBzcGFjaW5nKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9LFxuICAgICAgZ2FwOiBzdGFuZGFyZEdhcFxuICAgIH0sIGRlZm4pO1xuICB9O1xuXG4gIGRlZmluZUFycm93U2hhcGUoJ25vbmUnLCB7XG4gICAgY29sbGlkZTogZmFsc2lmeSxcbiAgICByb3VnaENvbGxpZGU6IGZhbHNpZnksXG4gICAgZHJhdzogbm9vcCxcbiAgICBzcGFjaW5nOiB6ZXJvaWZ5LFxuICAgIGdhcDogemVyb2lmeVxuICB9KTtcbiAgZGVmaW5lQXJyb3dTaGFwZSgndHJpYW5nbGUnLCB7XG4gICAgcG9pbnRzOiBbLTAuMTUsIC0wLjMsIDAsIDAsIDAuMTUsIC0wLjNdXG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCdhcnJvdycsICd0cmlhbmdsZScpO1xuICBkZWZpbmVBcnJvd1NoYXBlKCd0cmlhbmdsZS1iYWNrY3VydmUnLCB7XG4gICAgcG9pbnRzOiBhcnJvd1NoYXBlc1sndHJpYW5nbGUnXS5wb2ludHMsXG4gICAgY29udHJvbFBvaW50OiBbMCwgLTAuMTVdLFxuICAgIHJvdWdoQ29sbGlkZTogYmJDb2xsaWRlLFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgpIHtcbiAgICAgIHZhciBwdHNUcmFucyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHZhciBjdHJsUHQgPSB0aGlzLmNvbnRyb2xQb2ludDtcbiAgICAgIHZhciBjdHJsUHRUcmFucyA9IHRyYW5zZm9ybShjdHJsUHRbMF0sIGN0cmxQdFsxXSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgcHRzVHJhbnMsIGN0cmxQdFRyYW5zKTtcbiAgICB9LFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiBzdGFuZGFyZEdhcChlZGdlKSAqIDAuODtcbiAgICB9XG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCd0cmlhbmdsZS10ZWUnLCB7XG4gICAgcG9pbnRzOiBbMCwgMCwgMC4xNSwgLTAuMywgLTAuMTUsIC0wLjMsIDAsIDBdLFxuICAgIHBvaW50c1RlZTogWy0wLjE1LCAtMC40LCAtMC4xNSwgLTAuNSwgMC4xNSwgLTAuNSwgMC4xNSwgLTAuNF0sXG4gICAgY29sbGlkZTogZnVuY3Rpb24gY29sbGlkZSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCwgcGFkZGluZykge1xuICAgICAgdmFyIHRyaVB0cyA9IHBvaW50c1RvQXJyKHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSArIDIgKiBwYWRkaW5nLCBhbmdsZSwgdHJhbnNsYXRpb24pKTtcbiAgICAgIHZhciB0ZWVQdHMgPSBwb2ludHNUb0Fycih0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHNUZWUsIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICB2YXIgaW5zaWRlID0gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRyaVB0cykgfHwgcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRlZVB0cyk7XG4gICAgICByZXR1cm4gaW5zaWRlO1xuICAgIH0sXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCkge1xuICAgICAgdmFyIHRyaVB0cyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHZhciB0ZWVQdHMgPSB0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHNUZWUsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbik7XG4gICAgICByZW5kZXJlci5hcnJvd1NoYXBlSW1wbCh0aGlzLm5hbWUpKGNvbnRleHQsIHRyaVB0cywgdGVlUHRzKTtcbiAgICB9XG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCdjaXJjbGUtdHJpYW5nbGUnLCB7XG4gICAgcmFkaXVzOiAwLjE1LFxuICAgIHBvaW50c1RyOiBbMCwgLTAuMTUsIDAuMTUsIC0wLjQ1LCAtMC4xNSwgLTAuNDUsIDAsIC0wLjE1XSxcbiAgICBjb2xsaWRlOiBmdW5jdGlvbiBjb2xsaWRlKHgsIHksIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbiwgZWRnZVdpZHRoLCBwYWRkaW5nKSB7XG4gICAgICB2YXIgdCA9IHRyYW5zbGF0aW9uO1xuICAgICAgdmFyIGNpcmNsZUluc2lkZSA9IE1hdGgucG93KHQueCAtIHgsIDIpICsgTWF0aC5wb3codC55IC0geSwgMikgPD0gTWF0aC5wb3coKHNpemUgKyAyICogcGFkZGluZykgKiB0aGlzLnJhZGl1cywgMik7XG4gICAgICB2YXIgdHJpUHRzID0gcG9pbnRzVG9BcnIodHJhbnNmb3JtUG9pbnRzKHRoaXMucG9pbnRzLCBzaXplICsgMiAqIHBhZGRpbmcsIGFuZ2xlLCB0cmFuc2xhdGlvbikpO1xuICAgICAgcmV0dXJuIHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCB0cmlQdHMpIHx8IGNpcmNsZUluc2lkZTtcbiAgICB9LFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgpIHtcbiAgICAgIHZhciB0cmlQdHMgPSB0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHNUciwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgdHJpUHRzLCB0cmFuc2xhdGlvbi54LCB0cmFuc2xhdGlvbi55LCB0aGlzLnJhZGl1cyAqIHNpemUpO1xuICAgIH0sXG4gICAgc3BhY2luZzogZnVuY3Rpb24gc3BhY2luZyhlZGdlKSB7XG4gICAgICByZXR1cm4gcmVuZGVyZXIuZ2V0QXJyb3dXaWR0aChlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlLCBlZGdlLnBzdHlsZSgnYXJyb3ctc2NhbGUnKS52YWx1ZSkgKiB0aGlzLnJhZGl1cztcbiAgICB9XG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCd0cmlhbmdsZS1jcm9zcycsIHtcbiAgICBwb2ludHM6IFswLCAwLCAwLjE1LCAtMC4zLCAtMC4xNSwgLTAuMywgMCwgMF0sXG4gICAgYmFzZUNyb3NzTGluZVB0czogWy0wLjE1LCAtMC40LCAvLyBmaXJzdCBoYWxmIG9mIHRoZSByZWN0YW5nbGVcbiAgICAtMC4xNSwgLTAuNCwgMC4xNSwgLTAuNCwgLy8gc2Vjb25kIGhhbGYgb2YgdGhlIHJlY3RhbmdsZVxuICAgIDAuMTUsIC0wLjRdLFxuICAgIGNyb3NzTGluZVB0czogZnVuY3Rpb24gY3Jvc3NMaW5lUHRzKHNpemUsIGVkZ2VXaWR0aCkge1xuICAgICAgLy8gc2hpZnQgcG9pbnRzIHNvIHRoYXQgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGNyb3NzIHBvaW50cyBtYXRjaGVzIGVkZ2Ugd2lkdGhcbiAgICAgIHZhciBwID0gdGhpcy5iYXNlQ3Jvc3NMaW5lUHRzLnNsaWNlKCk7XG4gICAgICB2YXIgc2hpZnRGYWN0b3IgPSBlZGdlV2lkdGggLyBzaXplO1xuICAgICAgdmFyIHkwID0gMztcbiAgICAgIHZhciB5MSA9IDU7XG4gICAgICBwW3kwXSA9IHBbeTBdIC0gc2hpZnRGYWN0b3I7XG4gICAgICBwW3kxXSA9IHBbeTFdIC0gc2hpZnRGYWN0b3I7XG4gICAgICByZXR1cm4gcDtcbiAgICB9LFxuICAgIGNvbGxpZGU6IGZ1bmN0aW9uIGNvbGxpZGUoeCwgeSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgsIHBhZGRpbmcpIHtcbiAgICAgIHZhciB0cmlQdHMgPSBwb2ludHNUb0Fycih0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHMsIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICB2YXIgdGVlUHRzID0gcG9pbnRzVG9BcnIodHJhbnNmb3JtUG9pbnRzKHRoaXMuY3Jvc3NMaW5lUHRzKHNpemUsIGVkZ2VXaWR0aCksIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICB2YXIgaW5zaWRlID0gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRyaVB0cykgfHwgcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRlZVB0cyk7XG4gICAgICByZXR1cm4gaW5zaWRlO1xuICAgIH0sXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCkge1xuICAgICAgdmFyIHRyaVB0cyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHZhciBjcm9zc0xpbmVQdHMgPSB0cmFuc2Zvcm1Qb2ludHModGhpcy5jcm9zc0xpbmVQdHMoc2l6ZSwgZWRnZVdpZHRoKSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgdHJpUHRzLCBjcm9zc0xpbmVQdHMpO1xuICAgIH1cbiAgfSk7XG4gIGRlZmluZUFycm93U2hhcGUoJ3ZlZScsIHtcbiAgICBwb2ludHM6IFstMC4xNSwgLTAuMywgMCwgMCwgMC4xNSwgLTAuMywgMCwgLTAuMTVdLFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiBzdGFuZGFyZEdhcChlZGdlKSAqIDAuNTI1O1xuICAgIH1cbiAgfSk7XG4gIGRlZmluZUFycm93U2hhcGUoJ2NpcmNsZScsIHtcbiAgICByYWRpdXM6IDAuMTUsXG4gICAgY29sbGlkZTogZnVuY3Rpb24gY29sbGlkZSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCwgcGFkZGluZykge1xuICAgICAgdmFyIHQgPSB0cmFuc2xhdGlvbjtcbiAgICAgIHZhciBpbnNpZGUgPSBNYXRoLnBvdyh0LnggLSB4LCAyKSArIE1hdGgucG93KHQueSAtIHksIDIpIDw9IE1hdGgucG93KChzaXplICsgMiAqIHBhZGRpbmcpICogdGhpcy5yYWRpdXMsIDIpO1xuICAgICAgcmV0dXJuIGluc2lkZTtcbiAgICB9LFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgpIHtcbiAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgdHJhbnNsYXRpb24ueCwgdHJhbnNsYXRpb24ueSwgdGhpcy5yYWRpdXMgKiBzaXplKTtcbiAgICB9LFxuICAgIHNwYWNpbmc6IGZ1bmN0aW9uIHNwYWNpbmcoZWRnZSkge1xuICAgICAgcmV0dXJuIHJlbmRlcmVyLmdldEFycm93V2lkdGgoZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSwgZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWUpICogdGhpcy5yYWRpdXM7XG4gICAgfVxuICB9KTtcbiAgZGVmaW5lQXJyb3dTaGFwZSgndGVlJywge1xuICAgIHBvaW50czogWy0wLjE1LCAwLCAtMC4xNSwgLTAuMSwgMC4xNSwgLTAuMSwgMC4xNSwgMF0sXG4gICAgc3BhY2luZzogZnVuY3Rpb24gc3BhY2luZyhlZGdlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9LFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfSk7XG4gIGRlZmluZUFycm93U2hhcGUoJ3NxdWFyZScsIHtcbiAgICBwb2ludHM6IFstMC4xNSwgMC4wMCwgMC4xNSwgMC4wMCwgMC4xNSwgLTAuMywgLTAuMTUsIC0wLjNdXG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCdkaWFtb25kJywge1xuICAgIHBvaW50czogWy0wLjE1LCAtMC4xNSwgMCwgLTAuMywgMC4xNSwgLTAuMTUsIDAsIDBdLFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlICogZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWU7XG4gICAgfVxuICB9KTtcbiAgZGVmaW5lQXJyb3dTaGFwZSgnY2hldnJvbicsIHtcbiAgICBwb2ludHM6IFswLCAwLCAtMC4xNSwgLTAuMTUsIC0wLjEsIC0wLjIsIDAsIC0wLjEsIDAuMSwgLTAuMiwgMC4xNSwgLTAuMTVdLFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiAwLjk1ICogZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSAqIGVkZ2UucHN0eWxlKCdhcnJvdy1zY2FsZScpLnZhbHVlO1xuICAgIH1cbiAgfSk7XG59O1xuXG52YXIgQlJwJDEgPSB7fTsgLy8gUHJvamVjdCBtb3VzZVxuXG5CUnAkMS5wcm9qZWN0SW50b1ZpZXdwb3J0ID0gZnVuY3Rpb24gKGNsaWVudFgsIGNsaWVudFkpIHtcbiAgdmFyIGN5ID0gdGhpcy5jeTtcbiAgdmFyIG9mZnNldHMgPSB0aGlzLmZpbmRDb250YWluZXJDbGllbnRDb29yZHMoKTtcbiAgdmFyIG9mZnNldExlZnQgPSBvZmZzZXRzWzBdO1xuICB2YXIgb2Zmc2V0VG9wID0gb2Zmc2V0c1sxXTtcbiAgdmFyIHNjYWxlID0gb2Zmc2V0c1s0XTtcbiAgdmFyIHBhbiA9IGN5LnBhbigpO1xuICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgdmFyIHggPSAoKGNsaWVudFggLSBvZmZzZXRMZWZ0KSAvIHNjYWxlIC0gcGFuLngpIC8gem9vbTtcbiAgdmFyIHkgPSAoKGNsaWVudFkgLSBvZmZzZXRUb3ApIC8gc2NhbGUgLSBwYW4ueSkgLyB6b29tO1xuICByZXR1cm4gW3gsIHldO1xufTtcblxuQlJwJDEuZmluZENvbnRhaW5lckNsaWVudENvb3JkcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY29udGFpbmVyQkIpIHtcbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJCQjtcbiAgfVxuXG4gIHZhciBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcjtcbiAgdmFyIHJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzdHlsZSA9IHdpbmRvdyQxLmdldENvbXB1dGVkU3R5bGUoY29udGFpbmVyKTtcblxuICB2YXIgc3R5bGVWYWx1ZSA9IGZ1bmN0aW9uIHN0eWxlVmFsdWUobmFtZSkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUobmFtZSkpO1xuICB9O1xuXG4gIHZhciBwYWRkaW5nID0ge1xuICAgIGxlZnQ6IHN0eWxlVmFsdWUoJ3BhZGRpbmctbGVmdCcpLFxuICAgIHJpZ2h0OiBzdHlsZVZhbHVlKCdwYWRkaW5nLXJpZ2h0JyksXG4gICAgdG9wOiBzdHlsZVZhbHVlKCdwYWRkaW5nLXRvcCcpLFxuICAgIGJvdHRvbTogc3R5bGVWYWx1ZSgncGFkZGluZy1ib3R0b20nKVxuICB9O1xuICB2YXIgYm9yZGVyID0ge1xuICAgIGxlZnQ6IHN0eWxlVmFsdWUoJ2JvcmRlci1sZWZ0LXdpZHRoJyksXG4gICAgcmlnaHQ6IHN0eWxlVmFsdWUoJ2JvcmRlci1yaWdodC13aWR0aCcpLFxuICAgIHRvcDogc3R5bGVWYWx1ZSgnYm9yZGVyLXRvcC13aWR0aCcpLFxuICAgIGJvdHRvbTogc3R5bGVWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpXG4gIH07XG4gIHZhciBjbGllbnRXaWR0aCA9IGNvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgdmFyIGNsaWVudEhlaWdodCA9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XG4gIHZhciBwYWRkaW5nSG9yID0gcGFkZGluZy5sZWZ0ICsgcGFkZGluZy5yaWdodDtcbiAgdmFyIHBhZGRpbmdWZXIgPSBwYWRkaW5nLnRvcCArIHBhZGRpbmcuYm90dG9tO1xuICB2YXIgYm9yZGVySG9yID0gYm9yZGVyLmxlZnQgKyBib3JkZXIucmlnaHQ7XG4gIHZhciBzY2FsZSA9IHJlY3Qud2lkdGggLyAoY2xpZW50V2lkdGggKyBib3JkZXJIb3IpO1xuICB2YXIgdW5zY2FsZWRXID0gY2xpZW50V2lkdGggLSBwYWRkaW5nSG9yO1xuICB2YXIgdW5zY2FsZWRIID0gY2xpZW50SGVpZ2h0IC0gcGFkZGluZ1ZlcjtcbiAgdmFyIGxlZnQgPSByZWN0LmxlZnQgKyBwYWRkaW5nLmxlZnQgKyBib3JkZXIubGVmdDtcbiAgdmFyIHRvcCA9IHJlY3QudG9wICsgcGFkZGluZy50b3AgKyBib3JkZXIudG9wO1xuICByZXR1cm4gdGhpcy5jb250YWluZXJCQiA9IFtsZWZ0LCB0b3AsIHVuc2NhbGVkVywgdW5zY2FsZWRILCBzY2FsZV07XG59O1xuXG5CUnAkMS5pbnZhbGlkYXRlQ29udGFpbmVyQ2xpZW50Q29vcmRzQ2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY29udGFpbmVyQkIgPSBudWxsO1xufTtcblxuQlJwJDEuZmluZE5lYXJlc3RFbGVtZW50ID0gZnVuY3Rpb24gKHgsIHksIGludGVyYWN0aXZlRWxlbWVudHNPbmx5LCBpc1RvdWNoKSB7XG4gIHJldHVybiB0aGlzLmZpbmROZWFyZXN0RWxlbWVudHMoeCwgeSwgaW50ZXJhY3RpdmVFbGVtZW50c09ubHksIGlzVG91Y2gpWzBdO1xufTtcblxuQlJwJDEuZmluZE5lYXJlc3RFbGVtZW50cyA9IGZ1bmN0aW9uICh4LCB5LCBpbnRlcmFjdGl2ZUVsZW1lbnRzT25seSwgaXNUb3VjaCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIGVsZXMgPSByLmdldENhY2hlZFpTb3J0ZWRFbGVzKCk7XG4gIHZhciBuZWFyID0gW107IC8vIDEgbm9kZSBtYXgsIDEgZWRnZSBtYXhcblxuICB2YXIgem9vbSA9IHIuY3kuem9vbSgpO1xuICB2YXIgaGFzQ29tcG91bmRzID0gci5jeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gIHZhciBlZGdlVGhyZXNob2xkID0gKGlzVG91Y2ggPyAyNCA6IDgpIC8gem9vbTtcbiAgdmFyIG5vZGVUaHJlc2hvbGQgPSAoaXNUb3VjaCA/IDggOiAyKSAvIHpvb207XG4gIHZhciBsYWJlbFRocmVzaG9sZCA9IChpc1RvdWNoID8gOCA6IDIpIC8gem9vbTtcbiAgdmFyIG1pblNxRGlzdCA9IEluZmluaXR5O1xuICB2YXIgbmVhckVkZ2U7XG4gIHZhciBuZWFyTm9kZTtcblxuICBpZiAoaW50ZXJhY3RpdmVFbGVtZW50c09ubHkpIHtcbiAgICBlbGVzID0gZWxlcy5pbnRlcmFjdGl2ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZEVsZShlbGUsIHNxRGlzdCkge1xuICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgIGlmIChuZWFyTm9kZSkge1xuICAgICAgICByZXR1cm47IC8vIGNhbid0IHJlcGxhY2Ugbm9kZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmVhck5vZGUgPSBlbGU7XG4gICAgICAgIG5lYXIucHVzaChlbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbGUuaXNFZGdlKCkgJiYgKHNxRGlzdCA9PSBudWxsIHx8IHNxRGlzdCA8IG1pblNxRGlzdCkpIHtcbiAgICAgIGlmIChuZWFyRWRnZSkge1xuICAgICAgICAvLyB0aGVuIHJlcGxhY2UgZXhpc3RpbmcgZWRnZVxuICAgICAgICAvLyBjYW4gcmVwbGFjZSBvbmx5IGlmIHNhbWUgei1pbmRleFxuICAgICAgICBpZiAobmVhckVkZ2UucHN0eWxlKCd6LWNvbXBvdW5kLWRlcHRoJykudmFsdWUgPT09IGVsZS5wc3R5bGUoJ3otY29tcG91bmQtZGVwdGgnKS52YWx1ZSAmJiBuZWFyRWRnZS5wc3R5bGUoJ3otY29tcG91bmQtZGVwdGgnKS52YWx1ZSA9PT0gZWxlLnBzdHlsZSgnei1jb21wb3VuZC1kZXB0aCcpLnZhbHVlKSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWFyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobmVhcltpXS5pc0VkZ2UoKSkge1xuICAgICAgICAgICAgICBuZWFyW2ldID0gZWxlO1xuICAgICAgICAgICAgICBuZWFyRWRnZSA9IGVsZTtcbiAgICAgICAgICAgICAgbWluU3FEaXN0ID0gc3FEaXN0ICE9IG51bGwgPyBzcURpc3QgOiBtaW5TcURpc3Q7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmVhci5wdXNoKGVsZSk7XG4gICAgICAgIG5lYXJFZGdlID0gZWxlO1xuICAgICAgICBtaW5TcURpc3QgPSBzcURpc3QgIT0gbnVsbCA/IHNxRGlzdCA6IG1pblNxRGlzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjaGVja05vZGUobm9kZSkge1xuICAgIHZhciB3aWR0aCA9IG5vZGUub3V0ZXJXaWR0aCgpICsgMiAqIG5vZGVUaHJlc2hvbGQ7XG4gICAgdmFyIGhlaWdodCA9IG5vZGUub3V0ZXJIZWlnaHQoKSArIDIgKiBub2RlVGhyZXNob2xkO1xuICAgIHZhciBodyA9IHdpZHRoIC8gMjtcbiAgICB2YXIgaGggPSBoZWlnaHQgLyAyO1xuICAgIHZhciBwb3MgPSBub2RlLnBvc2l0aW9uKCk7XG5cbiAgICBpZiAocG9zLnggLSBodyA8PSB4ICYmIHggPD0gcG9zLnggKyBodyAvLyBiYiBjaGVjayB4XG4gICAgJiYgcG9zLnkgLSBoaCA8PSB5ICYmIHkgPD0gcG9zLnkgKyBoaCAvLyBiYiBjaGVjayB5XG4gICAgKSB7XG4gICAgICAgIHZhciBzaGFwZSA9IHIubm9kZVNoYXBlc1tzZWxmLmdldE5vZGVTaGFwZShub2RlKV07XG5cbiAgICAgICAgaWYgKHNoYXBlLmNoZWNrUG9pbnQoeCwgeSwgMCwgd2lkdGgsIGhlaWdodCwgcG9zLngsIHBvcy55KSkge1xuICAgICAgICAgIGFkZEVsZShub2RlLCAwKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2hlY2tFZGdlKGVkZ2UpIHtcbiAgICB2YXIgX3AgPSBlZGdlLl9wcml2YXRlO1xuICAgIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICAgIHZhciBzdHlsZVdpZHRoID0gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgc2NhbGUgPSBlZGdlLnBzdHlsZSgnYXJyb3ctc2NhbGUnKS52YWx1ZTtcbiAgICB2YXIgd2lkdGggPSBzdHlsZVdpZHRoIC8gMiArIGVkZ2VUaHJlc2hvbGQ7IC8vIG1vcmUgbGlrZSBhIGRpc3RhbmNlIHJhZGl1cyBmcm9tIGNlbnRyZVxuXG4gICAgdmFyIHdpZHRoU3EgPSB3aWR0aCAqIHdpZHRoO1xuICAgIHZhciB3aWR0aDIgPSB3aWR0aCAqIDI7XG4gICAgdmFyIHNyYyA9IF9wLnNvdXJjZTtcbiAgICB2YXIgdGd0ID0gX3AudGFyZ2V0O1xuICAgIHZhciBzcURpc3Q7XG5cbiAgICBpZiAocnMuZWRnZVR5cGUgPT09ICdzZWdtZW50cycgfHwgcnMuZWRnZVR5cGUgPT09ICdzdHJhaWdodCcgfHwgcnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjaycpIHtcbiAgICAgIHZhciBwdHMgPSBycy5hbGxwdHM7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpICsgMyA8IHB0cy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICBpZiAoaW5MaW5lVmljaW5pdHkoeCwgeSwgcHRzW2ldLCBwdHNbaSArIDFdLCBwdHNbaSArIDJdLCBwdHNbaSArIDNdLCB3aWR0aDIpICYmIHdpZHRoU3EgPiAoc3FEaXN0ID0gc3FkaXN0VG9GaW5pdGVMaW5lKHgsIHksIHB0c1tpXSwgcHRzW2kgKyAxXSwgcHRzW2kgKyAyXSwgcHRzW2kgKyAzXSkpKSB7XG4gICAgICAgICAgYWRkRWxlKGVkZ2UsIHNxRGlzdCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJzLmVkZ2VUeXBlID09PSAnYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ3NlbGYnIHx8IHJzLmVkZ2VUeXBlID09PSAnY29tcG91bmQnKSB7XG4gICAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSArIDUgPCBycy5hbGxwdHMubGVuZ3RoOyBpICs9IDQpIHtcbiAgICAgICAgaWYgKGluQmV6aWVyVmljaW5pdHkoeCwgeSwgcHRzW2ldLCBwdHNbaSArIDFdLCBwdHNbaSArIDJdLCBwdHNbaSArIDNdLCBwdHNbaSArIDRdLCBwdHNbaSArIDVdLCB3aWR0aDIpICYmIHdpZHRoU3EgPiAoc3FEaXN0ID0gc3FkaXN0VG9RdWFkcmF0aWNCZXppZXIoeCwgeSwgcHRzW2ldLCBwdHNbaSArIDFdLCBwdHNbaSArIDJdLCBwdHNbaSArIDNdLCBwdHNbaSArIDRdLCBwdHNbaSArIDVdKSkpIHtcbiAgICAgICAgICBhZGRFbGUoZWRnZSwgc3FEaXN0KTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gaWYgd2UncmUgY2xvc2UgdG8gdGhlIGVkZ2UgYnV0IGRpZG4ndCBoaXQgaXQsIG1heWJlIHdlIGhpdCBpdHMgYXJyb3dzXG5cblxuICAgIHZhciBzcmMgPSBzcmMgfHwgX3Auc291cmNlO1xuICAgIHZhciB0Z3QgPSB0Z3QgfHwgX3AudGFyZ2V0O1xuICAgIHZhciBhclNpemUgPSBzZWxmLmdldEFycm93V2lkdGgoc3R5bGVXaWR0aCwgc2NhbGUpO1xuICAgIHZhciBhcnJvd3MgPSBbe1xuICAgICAgbmFtZTogJ3NvdXJjZScsXG4gICAgICB4OiBycy5hcnJvd1N0YXJ0WCxcbiAgICAgIHk6IHJzLmFycm93U3RhcnRZLFxuICAgICAgYW5nbGU6IHJzLnNyY0Fycm93QW5nbGVcbiAgICB9LCB7XG4gICAgICBuYW1lOiAndGFyZ2V0JyxcbiAgICAgIHg6IHJzLmFycm93RW5kWCxcbiAgICAgIHk6IHJzLmFycm93RW5kWSxcbiAgICAgIGFuZ2xlOiBycy50Z3RBcnJvd0FuZ2xlXG4gICAgfSwge1xuICAgICAgbmFtZTogJ21pZC1zb3VyY2UnLFxuICAgICAgeDogcnMubWlkWCxcbiAgICAgIHk6IHJzLm1pZFksXG4gICAgICBhbmdsZTogcnMubWlkc3JjQXJyb3dBbmdsZVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdtaWQtdGFyZ2V0JyxcbiAgICAgIHg6IHJzLm1pZFgsXG4gICAgICB5OiBycy5taWRZLFxuICAgICAgYW5nbGU6IHJzLm1pZHRndEFycm93QW5nbGVcbiAgICB9XTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYXIgPSBhcnJvd3NbaV07XG4gICAgICB2YXIgc2hhcGUgPSByLmFycm93U2hhcGVzW2VkZ2UucHN0eWxlKGFyLm5hbWUgKyAnLWFycm93LXNoYXBlJykudmFsdWVdO1xuICAgICAgdmFyIGVkZ2VXaWR0aCA9IGVkZ2UucHN0eWxlKCd3aWR0aCcpLnBmVmFsdWU7XG5cbiAgICAgIGlmIChzaGFwZS5yb3VnaENvbGxpZGUoeCwgeSwgYXJTaXplLCBhci5hbmdsZSwge1xuICAgICAgICB4OiBhci54LFxuICAgICAgICB5OiBhci55XG4gICAgICB9LCBlZGdlV2lkdGgsIGVkZ2VUaHJlc2hvbGQpICYmIHNoYXBlLmNvbGxpZGUoeCwgeSwgYXJTaXplLCBhci5hbmdsZSwge1xuICAgICAgICB4OiBhci54LFxuICAgICAgICB5OiBhci55XG4gICAgICB9LCBlZGdlV2lkdGgsIGVkZ2VUaHJlc2hvbGQpKSB7XG4gICAgICAgIGFkZEVsZShlZGdlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSAvLyBmb3IgY29tcG91bmQgZ3JhcGhzLCBoaXR0aW5nIGVkZ2UgbWF5IGFjdHVhbGx5IHdhbnQgYSBjb25uZWN0ZWQgbm9kZSBpbnN0ZWFkIChiL2MgZWRnZSBtYXkgaGF2ZSBncmVhdGVyIHotaW5kZXggcHJlY2VkZW5jZSlcblxuXG4gICAgaWYgKGhhc0NvbXBvdW5kcyAmJiBuZWFyLmxlbmd0aCA+IDApIHtcbiAgICAgIGNoZWNrTm9kZShzcmMpO1xuICAgICAgY2hlY2tOb2RlKHRndCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcHJlcHJvcChvYmosIG5hbWUsIHByZSkge1xuICAgIHJldHVybiBnZXRQcmVmaXhlZFByb3BlcnR5KG9iaiwgbmFtZSwgcHJlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNoZWNrTGFiZWwoZWxlLCBwcmVmaXgpIHtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgdmFyIHRoID0gbGFiZWxUaHJlc2hvbGQ7XG4gICAgdmFyIHByZWZpeERhc2g7XG5cbiAgICBpZiAocHJlZml4KSB7XG4gICAgICBwcmVmaXhEYXNoID0gcHJlZml4ICsgJy0nO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVmaXhEYXNoID0gJyc7XG4gICAgfVxuXG4gICAgZWxlLmJvdW5kaW5nQm94KCk7XG4gICAgdmFyIGJiID0gX3AubGFiZWxCb3VuZHNbcHJlZml4IHx8ICdtYWluJ107XG4gICAgdmFyIHRleHQgPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAnbGFiZWwnKS52YWx1ZTtcbiAgICB2YXIgZXZlbnRzRW5hYmxlZCA9IGVsZS5wc3R5bGUoJ3RleHQtZXZlbnRzJykuc3RyVmFsdWUgPT09ICd5ZXMnO1xuXG4gICAgaWYgKCFldmVudHNFbmFibGVkIHx8ICF0ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGx4ID0gcHJlcHJvcChfcC5yc2NyYXRjaCwgJ2xhYmVsWCcsIHByZWZpeCk7XG4gICAgdmFyIGx5ID0gcHJlcHJvcChfcC5yc2NyYXRjaCwgJ2xhYmVsWScsIHByZWZpeCk7XG4gICAgdmFyIHRoZXRhID0gcHJlcHJvcChfcC5yc2NyYXRjaCwgJ2xhYmVsQW5nbGUnLCBwcmVmaXgpO1xuICAgIHZhciBveCA9IGVsZS5wc3R5bGUocHJlZml4RGFzaCArICd0ZXh0LW1hcmdpbi14JykucGZWYWx1ZTtcbiAgICB2YXIgb3kgPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1tYXJnaW4teScpLnBmVmFsdWU7XG4gICAgdmFyIGx4MSA9IGJiLngxIC0gdGggLSBveDsgLy8gKC1veCwgLW95KSBhcyBiYiBhbHJlYWR5IGluY2x1ZGVzIG1hcmdpblxuXG4gICAgdmFyIGx4MiA9IGJiLngyICsgdGggLSBveDsgLy8gYW5kIHJvdGF0aW9uIGlzIGFib3V0IChseCwgbHkpXG5cbiAgICB2YXIgbHkxID0gYmIueTEgLSB0aCAtIG95O1xuICAgIHZhciBseTIgPSBiYi55MiArIHRoIC0gb3k7XG5cbiAgICBpZiAodGhldGEpIHtcbiAgICAgIHZhciBjb3MgPSBNYXRoLmNvcyh0aGV0YSk7XG4gICAgICB2YXIgc2luID0gTWF0aC5zaW4odGhldGEpO1xuXG4gICAgICB2YXIgcm90YXRlID0gZnVuY3Rpb24gcm90YXRlKHgsIHkpIHtcbiAgICAgICAgeCA9IHggLSBseDtcbiAgICAgICAgeSA9IHkgLSBseTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB4ICogY29zIC0geSAqIHNpbiArIGx4LFxuICAgICAgICAgIHk6IHggKiBzaW4gKyB5ICogY29zICsgbHlcbiAgICAgICAgfTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBweDF5MSA9IHJvdGF0ZShseDEsIGx5MSk7XG4gICAgICB2YXIgcHgxeTIgPSByb3RhdGUobHgxLCBseTIpO1xuICAgICAgdmFyIHB4MnkxID0gcm90YXRlKGx4MiwgbHkxKTtcbiAgICAgIHZhciBweDJ5MiA9IHJvdGF0ZShseDIsIGx5Mik7XG4gICAgICB2YXIgcG9pbnRzID0gWy8vIHdpdGggdGhlIG1hcmdpbiBhZGRlZCBhZnRlciB0aGUgcm90YXRpb24gaXMgYXBwbGllZFxuICAgICAgcHgxeTEueCArIG94LCBweDF5MS55ICsgb3ksIHB4MnkxLnggKyBveCwgcHgyeTEueSArIG95LCBweDJ5Mi54ICsgb3gsIHB4MnkyLnkgKyBveSwgcHgxeTIueCArIG94LCBweDF5Mi55ICsgb3ldO1xuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHBvaW50cykpIHtcbiAgICAgICAgYWRkRWxlKGVsZSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkbyBhIGNoZWFwZXIgYmIgY2hlY2tcbiAgICAgIGlmIChpbkJvdW5kaW5nQm94KGJiLCB4LCB5KSkge1xuICAgICAgICBhZGRFbGUoZWxlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IGVsZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAvLyByZXZlcnNlIG9yZGVyIGZvciBwcmVjZWRlbmNlXG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG5cbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICBjaGVja05vZGUoZWxlKSB8fCBjaGVja0xhYmVsKGVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoZW4gZWRnZVxuICAgICAgY2hlY2tFZGdlKGVsZSkgfHwgY2hlY2tMYWJlbChlbGUpIHx8IGNoZWNrTGFiZWwoZWxlLCAnc291cmNlJykgfHwgY2hlY2tMYWJlbChlbGUsICd0YXJnZXQnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmVhcjtcbn07IC8vICdHaXZlIG1lIGV2ZXJ5dGhpbmcgZnJvbSB0aGlzIGJveCdcblxuXG5CUnAkMS5nZXRBbGxJbkJveCA9IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5Mikge1xuICB2YXIgZWxlcyA9IHRoaXMuZ2V0Q2FjaGVkWlNvcnRlZEVsZXMoKS5pbnRlcmFjdGl2ZTtcbiAgdmFyIGJveCA9IFtdO1xuICB2YXIgeDFjID0gTWF0aC5taW4oeDEsIHgyKTtcbiAgdmFyIHgyYyA9IE1hdGgubWF4KHgxLCB4Mik7XG4gIHZhciB5MWMgPSBNYXRoLm1pbih5MSwgeTIpO1xuICB2YXIgeTJjID0gTWF0aC5tYXgoeTEsIHkyKTtcbiAgeDEgPSB4MWM7XG4gIHgyID0geDJjO1xuICB5MSA9IHkxYztcbiAgeTIgPSB5MmM7XG4gIHZhciBib3hCYiA9IG1ha2VCb3VuZGluZ0JveCh7XG4gICAgeDE6IHgxLFxuICAgIHkxOiB5MSxcbiAgICB4MjogeDIsXG4gICAgeTI6IHkyXG4gIH0pO1xuXG4gIGZvciAodmFyIGUgPSAwOyBlIDwgZWxlcy5sZW5ndGg7IGUrKykge1xuICAgIHZhciBlbGUgPSBlbGVzW2VdO1xuXG4gICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgdmFyIG5vZGUgPSBlbGU7XG4gICAgICB2YXIgbm9kZUJiID0gbm9kZS5ib3VuZGluZ0JveCh7XG4gICAgICAgIGluY2x1ZGVOb2RlczogdHJ1ZSxcbiAgICAgICAgaW5jbHVkZUVkZ2VzOiBmYWxzZSxcbiAgICAgICAgaW5jbHVkZUxhYmVsczogZmFsc2VcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYm91bmRpbmdCb3hlc0ludGVyc2VjdChib3hCYiwgbm9kZUJiKSAmJiAhYm91bmRpbmdCb3hJbkJvdW5kaW5nQm94KG5vZGVCYiwgYm94QmIpKSB7XG4gICAgICAgIGJveC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZWRnZSA9IGVsZTtcbiAgICAgIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gICAgICB2YXIgcnMgPSBfcC5yc2NyYXRjaDtcblxuICAgICAgaWYgKHJzLnN0YXJ0WCAhPSBudWxsICYmIHJzLnN0YXJ0WSAhPSBudWxsICYmICFpbkJvdW5kaW5nQm94KGJveEJiLCBycy5zdGFydFgsIHJzLnN0YXJ0WSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChycy5lbmRYICE9IG51bGwgJiYgcnMuZW5kWSAhPSBudWxsICYmICFpbkJvdW5kaW5nQm94KGJveEJiLCBycy5lbmRYLCBycy5lbmRZKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJzLmVkZ2VUeXBlID09PSAnYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ3NlbGYnIHx8IHJzLmVkZ2VUeXBlID09PSAnY29tcG91bmQnIHx8IHJzLmVkZ2VUeXBlID09PSAnc2VnbWVudHMnIHx8IHJzLmVkZ2VUeXBlID09PSAnaGF5c3RhY2snKSB7XG4gICAgICAgIHZhciBwdHMgPSBfcC5yc3R5bGUuYmV6aWVyUHRzIHx8IF9wLnJzdHlsZS5saW5lUHRzIHx8IF9wLnJzdHlsZS5oYXlzdGFja1B0cztcbiAgICAgICAgdmFyIGFsbEluc2lkZSA9IHRydWU7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoIXBvaW50SW5Cb3VuZGluZ0JveChib3hCYiwgcHRzW2ldKSkge1xuICAgICAgICAgICAgYWxsSW5zaWRlID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWxsSW5zaWRlKSB7XG4gICAgICAgICAgYm94LnB1c2goZWRnZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjaycgfHwgcnMuZWRnZVR5cGUgPT09ICdzdHJhaWdodCcpIHtcbiAgICAgICAgYm94LnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJveDtcbn07XG5cbnZhciBCUnAkMiA9IHt9O1xuXG5CUnAkMi5jYWxjdWxhdGVBcnJvd0FuZ2xlcyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHZhciBpc0hheXN0YWNrID0gcnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjayc7XG4gIHZhciBpc0JlemllciA9IHJzLmVkZ2VUeXBlID09PSAnYmV6aWVyJztcbiAgdmFyIGlzTXVsdGliZXppZXIgPSBycy5lZGdlVHlwZSA9PT0gJ211bHRpYmV6aWVyJztcbiAgdmFyIGlzU2VnbWVudHMgPSBycy5lZGdlVHlwZSA9PT0gJ3NlZ21lbnRzJztcbiAgdmFyIGlzQ29tcG91bmQgPSBycy5lZGdlVHlwZSA9PT0gJ2NvbXBvdW5kJztcbiAgdmFyIGlzU2VsZiA9IHJzLmVkZ2VUeXBlID09PSAnc2VsZic7IC8vIERpc3BsYWNlbWVudCBnaXZlcyBkaXJlY3Rpb24gZm9yIGFycm93aGVhZCBvcmllbnRhdGlvblxuXG4gIHZhciBkaXNwWCwgZGlzcFk7XG4gIHZhciBzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgbWlkWCwgbWlkWTtcblxuICBpZiAoaXNIYXlzdGFjaykge1xuICAgIHN0YXJ0WCA9IHJzLmhheXN0YWNrUHRzWzBdO1xuICAgIHN0YXJ0WSA9IHJzLmhheXN0YWNrUHRzWzFdO1xuICAgIGVuZFggPSBycy5oYXlzdGFja1B0c1syXTtcbiAgICBlbmRZID0gcnMuaGF5c3RhY2tQdHNbM107XG4gIH0gZWxzZSB7XG4gICAgc3RhcnRYID0gcnMuYXJyb3dTdGFydFg7XG4gICAgc3RhcnRZID0gcnMuYXJyb3dTdGFydFk7XG4gICAgZW5kWCA9IHJzLmFycm93RW5kWDtcbiAgICBlbmRZID0gcnMuYXJyb3dFbmRZO1xuICB9XG5cbiAgbWlkWCA9IHJzLm1pZFg7XG4gIG1pZFkgPSBycy5taWRZOyAvLyBzb3VyY2VcbiAgLy9cblxuICBpZiAoaXNTZWdtZW50cykge1xuICAgIGRpc3BYID0gc3RhcnRYIC0gcnMuc2VncHRzWzBdO1xuICAgIGRpc3BZID0gc3RhcnRZIC0gcnMuc2VncHRzWzFdO1xuICB9IGVsc2UgaWYgKGlzTXVsdGliZXppZXIgfHwgaXNDb21wb3VuZCB8fCBpc1NlbGYgfHwgaXNCZXppZXIpIHtcbiAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuICAgIHZhciBiWCA9IHFiZXppZXJBdChwdHNbMF0sIHB0c1syXSwgcHRzWzRdLCAwLjEpO1xuICAgIHZhciBiWSA9IHFiZXppZXJBdChwdHNbMV0sIHB0c1szXSwgcHRzWzVdLCAwLjEpO1xuICAgIGRpc3BYID0gc3RhcnRYIC0gYlg7XG4gICAgZGlzcFkgPSBzdGFydFkgLSBiWTtcbiAgfSBlbHNlIHtcbiAgICBkaXNwWCA9IHN0YXJ0WCAtIG1pZFg7XG4gICAgZGlzcFkgPSBzdGFydFkgLSBtaWRZO1xuICB9XG5cbiAgcnMuc3JjQXJyb3dBbmdsZSA9IGdldEFuZ2xlRnJvbURpc3AoZGlzcFgsIGRpc3BZKTsgLy8gbWlkIHRhcmdldFxuICAvL1xuXG4gIHZhciBtaWRYID0gcnMubWlkWDtcbiAgdmFyIG1pZFkgPSBycy5taWRZO1xuXG4gIGlmIChpc0hheXN0YWNrKSB7XG4gICAgbWlkWCA9IChzdGFydFggKyBlbmRYKSAvIDI7XG4gICAgbWlkWSA9IChzdGFydFkgKyBlbmRZKSAvIDI7XG4gIH1cblxuICBkaXNwWCA9IGVuZFggLSBzdGFydFg7XG4gIGRpc3BZID0gZW5kWSAtIHN0YXJ0WTtcblxuICBpZiAoaXNTZWdtZW50cykge1xuICAgIHZhciBwdHMgPSBycy5hbGxwdHM7XG5cbiAgICBpZiAocHRzLmxlbmd0aCAvIDIgJSAyID09PSAwKSB7XG4gICAgICB2YXIgaTIgPSBwdHMubGVuZ3RoIC8gMjtcbiAgICAgIHZhciBpMSA9IGkyIC0gMjtcbiAgICAgIGRpc3BYID0gcHRzW2kyXSAtIHB0c1tpMV07XG4gICAgICBkaXNwWSA9IHB0c1tpMiArIDFdIC0gcHRzW2kxICsgMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpMiA9IHB0cy5sZW5ndGggLyAyIC0gMTtcbiAgICAgIHZhciBpMSA9IGkyIC0gMjtcbiAgICAgIHZhciBpMyA9IGkyICsgMjtcbiAgICAgIGRpc3BYID0gcHRzW2kyXSAtIHB0c1tpMV07XG4gICAgICBkaXNwWSA9IHB0c1tpMiArIDFdIC0gcHRzW2kxICsgMV07XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzTXVsdGliZXppZXIgfHwgaXNDb21wb3VuZCB8fCBpc1NlbGYpIHtcbiAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuICAgIHZhciBjcHRzID0gcnMuY3RybHB0cztcbiAgICB2YXIgYnAweCwgYnAweTtcbiAgICB2YXIgYnAxeCwgYnAxeTtcblxuICAgIGlmIChjcHRzLmxlbmd0aCAvIDIgJSAyID09PSAwKSB7XG4gICAgICB2YXIgcDAgPSBwdHMubGVuZ3RoIC8gMiAtIDE7IC8vIHN0YXJ0cHRcblxuICAgICAgdmFyIGljID0gcDAgKyAyO1xuICAgICAgdmFyIHAxID0gaWMgKyAyO1xuICAgICAgYnAweCA9IHFiZXppZXJBdChwdHNbcDBdLCBwdHNbaWNdLCBwdHNbcDFdLCAwLjApO1xuICAgICAgYnAweSA9IHFiZXppZXJBdChwdHNbcDAgKyAxXSwgcHRzW2ljICsgMV0sIHB0c1twMSArIDFdLCAwLjApO1xuICAgICAgYnAxeCA9IHFiZXppZXJBdChwdHNbcDBdLCBwdHNbaWNdLCBwdHNbcDFdLCAwLjAwMDEpO1xuICAgICAgYnAxeSA9IHFiZXppZXJBdChwdHNbcDAgKyAxXSwgcHRzW2ljICsgMV0sIHB0c1twMSArIDFdLCAwLjAwMDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgaWMgPSBwdHMubGVuZ3RoIC8gMiAtIDE7IC8vIGN0cnB0XG5cbiAgICAgIHZhciBwMCA9IGljIC0gMjsgLy8gc3RhcnRwdFxuXG4gICAgICB2YXIgcDEgPSBpYyArIDI7IC8vIGVuZHB0XG5cbiAgICAgIGJwMHggPSBxYmV6aWVyQXQocHRzW3AwXSwgcHRzW2ljXSwgcHRzW3AxXSwgMC40OTk5KTtcbiAgICAgIGJwMHkgPSBxYmV6aWVyQXQocHRzW3AwICsgMV0sIHB0c1tpYyArIDFdLCBwdHNbcDEgKyAxXSwgMC40OTk5KTtcbiAgICAgIGJwMXggPSBxYmV6aWVyQXQocHRzW3AwXSwgcHRzW2ljXSwgcHRzW3AxXSwgMC41KTtcbiAgICAgIGJwMXkgPSBxYmV6aWVyQXQocHRzW3AwICsgMV0sIHB0c1tpYyArIDFdLCBwdHNbcDEgKyAxXSwgMC41KTtcbiAgICB9XG5cbiAgICBkaXNwWCA9IGJwMXggLSBicDB4O1xuICAgIGRpc3BZID0gYnAxeSAtIGJwMHk7XG4gIH1cblxuICBycy5taWR0Z3RBcnJvd0FuZ2xlID0gZ2V0QW5nbGVGcm9tRGlzcChkaXNwWCwgZGlzcFkpO1xuICBycy5taWREaXNwWCA9IGRpc3BYO1xuICBycy5taWREaXNwWSA9IGRpc3BZOyAvLyBtaWQgc291cmNlXG4gIC8vXG5cbiAgZGlzcFggKj0gLTE7XG4gIGRpc3BZICo9IC0xO1xuXG4gIGlmIChpc1NlZ21lbnRzKSB7XG4gICAgdmFyIHB0cyA9IHJzLmFsbHB0cztcblxuICAgIGlmIChwdHMubGVuZ3RoIC8gMiAlIDIgPT09IDApIDsgZWxzZSB7XG4gICAgICB2YXIgaTIgPSBwdHMubGVuZ3RoIC8gMiAtIDE7XG4gICAgICB2YXIgaTMgPSBpMiArIDI7XG4gICAgICBkaXNwWCA9IC0ocHRzW2kzXSAtIHB0c1tpMl0pO1xuICAgICAgZGlzcFkgPSAtKHB0c1tpMyArIDFdIC0gcHRzW2kyICsgMV0pO1xuICAgIH1cbiAgfVxuXG4gIHJzLm1pZHNyY0Fycm93QW5nbGUgPSBnZXRBbmdsZUZyb21EaXNwKGRpc3BYLCBkaXNwWSk7IC8vIHRhcmdldFxuICAvL1xuXG4gIGlmIChpc1NlZ21lbnRzKSB7XG4gICAgZGlzcFggPSBlbmRYIC0gcnMuc2VncHRzW3JzLnNlZ3B0cy5sZW5ndGggLSAyXTtcbiAgICBkaXNwWSA9IGVuZFkgLSBycy5zZWdwdHNbcnMuc2VncHRzLmxlbmd0aCAtIDFdO1xuICB9IGVsc2UgaWYgKGlzTXVsdGliZXppZXIgfHwgaXNDb21wb3VuZCB8fCBpc1NlbGYgfHwgaXNCZXppZXIpIHtcbiAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuICAgIHZhciBsID0gcHRzLmxlbmd0aDtcbiAgICB2YXIgYlggPSBxYmV6aWVyQXQocHRzW2wgLSA2XSwgcHRzW2wgLSA0XSwgcHRzW2wgLSAyXSwgMC45KTtcbiAgICB2YXIgYlkgPSBxYmV6aWVyQXQocHRzW2wgLSA1XSwgcHRzW2wgLSAzXSwgcHRzW2wgLSAxXSwgMC45KTtcbiAgICBkaXNwWCA9IGVuZFggLSBiWDtcbiAgICBkaXNwWSA9IGVuZFkgLSBiWTtcbiAgfSBlbHNlIHtcbiAgICBkaXNwWCA9IGVuZFggLSBtaWRYO1xuICAgIGRpc3BZID0gZW5kWSAtIG1pZFk7XG4gIH1cblxuICBycy50Z3RBcnJvd0FuZ2xlID0gZ2V0QW5nbGVGcm9tRGlzcChkaXNwWCwgZGlzcFkpO1xufTtcblxuQlJwJDIuZ2V0QXJyb3dXaWR0aCA9IEJScCQyLmdldEFycm93SGVpZ2h0ID0gZnVuY3Rpb24gKGVkZ2VXaWR0aCwgc2NhbGUpIHtcbiAgdmFyIGNhY2hlID0gdGhpcy5hcnJvd1dpZHRoQ2FjaGUgPSB0aGlzLmFycm93V2lkdGhDYWNoZSB8fCB7fTtcbiAgdmFyIGNhY2hlZFZhbCA9IGNhY2hlW2VkZ2VXaWR0aCArICcsICcgKyBzY2FsZV07XG5cbiAgaWYgKGNhY2hlZFZhbCkge1xuICAgIHJldHVybiBjYWNoZWRWYWw7XG4gIH1cblxuICBjYWNoZWRWYWwgPSBNYXRoLm1heChNYXRoLnBvdyhlZGdlV2lkdGggKiAxMy4zNywgMC45KSwgMjkpICogc2NhbGU7XG4gIGNhY2hlW2VkZ2VXaWR0aCArICcsICcgKyBzY2FsZV0gPSBjYWNoZWRWYWw7XG4gIHJldHVybiBjYWNoZWRWYWw7XG59O1xuXG52YXIgQlJwJDMgPSB7fTtcblxuQlJwJDMuZmluZEhheXN0YWNrUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2VzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gICAgdmFyIHJzID0gX3AucnNjcmF0Y2g7XG5cbiAgICBpZiAoIXJzLmhheXN0YWNrKSB7XG4gICAgICB2YXIgYW5nbGUgPSBNYXRoLnJhbmRvbSgpICogMiAqIE1hdGguUEk7XG4gICAgICBycy5zb3VyY2UgPSB7XG4gICAgICAgIHg6IE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgeTogTWF0aC5zaW4oYW5nbGUpXG4gICAgICB9O1xuICAgICAgYW5nbGUgPSBNYXRoLnJhbmRvbSgpICogMiAqIE1hdGguUEk7XG4gICAgICBycy50YXJnZXQgPSB7XG4gICAgICAgIHg6IE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgeTogTWF0aC5zaW4oYW5nbGUpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBzcmMgPSBfcC5zb3VyY2U7XG4gICAgdmFyIHRndCA9IF9wLnRhcmdldDtcbiAgICB2YXIgc3JjUG9zID0gc3JjLnBvc2l0aW9uKCk7XG4gICAgdmFyIHRndFBvcyA9IHRndC5wb3NpdGlvbigpO1xuICAgIHZhciBzcmNXID0gc3JjLndpZHRoKCk7XG4gICAgdmFyIHRndFcgPSB0Z3Qud2lkdGgoKTtcbiAgICB2YXIgc3JjSCA9IHNyYy5oZWlnaHQoKTtcbiAgICB2YXIgdGd0SCA9IHRndC5oZWlnaHQoKTtcbiAgICB2YXIgcmFkaXVzID0gZWRnZS5wc3R5bGUoJ2hheXN0YWNrLXJhZGl1cycpLnZhbHVlO1xuICAgIHZhciBoYWxmUmFkaXVzID0gcmFkaXVzIC8gMjsgLy8gYi9jIGhhdmUgdG8gaGFsZiB3aWR0aC9oZWlnaHRcblxuICAgIHJzLmhheXN0YWNrUHRzID0gcnMuYWxscHRzID0gW3JzLnNvdXJjZS54ICogc3JjVyAqIGhhbGZSYWRpdXMgKyBzcmNQb3MueCwgcnMuc291cmNlLnkgKiBzcmNIICogaGFsZlJhZGl1cyArIHNyY1Bvcy55LCBycy50YXJnZXQueCAqIHRndFcgKiBoYWxmUmFkaXVzICsgdGd0UG9zLngsIHJzLnRhcmdldC55ICogdGd0SCAqIGhhbGZSYWRpdXMgKyB0Z3RQb3MueV07XG4gICAgcnMubWlkWCA9IChycy5hbGxwdHNbMF0gKyBycy5hbGxwdHNbMl0pIC8gMjtcbiAgICBycy5taWRZID0gKHJzLmFsbHB0c1sxXSArIHJzLmFsbHB0c1szXSkgLyAyOyAvLyBhbHdheXMgb3ZlcnJpZGUgYXMgaGF5c3RhY2sgaW4gY2FzZSBzZXQgdG8gZGlmZmVyZW50IHR5cGUgcHJldmlvdXNseVxuXG4gICAgcnMuZWRnZVR5cGUgPSAnaGF5c3RhY2snO1xuICAgIHJzLmhheXN0YWNrID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3JlRWRnZVByb2plY3Rpb25zKGVkZ2UpO1xuICAgIHRoaXMuY2FsY3VsYXRlQXJyb3dBbmdsZXMoZWRnZSk7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZUVkZ2VMYWJlbFByb2plY3Rpb25zKGVkZ2UpO1xuICAgIHRoaXMuY2FsY3VsYXRlTGFiZWxBbmdsZXMoZWRnZSk7XG4gIH1cbn07XG5cbkJScCQzLmZpbmRTZWdtZW50c1BvaW50cyA9IGZ1bmN0aW9uIChlZGdlLCBwYWlySW5mbykge1xuICAvLyBTZWdtZW50cyAobXVsdGlwbGUgc3RyYWlnaHQgbGluZXMpXG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHZhciBwb3NQdHMgPSBwYWlySW5mby5wb3NQdHMsXG4gICAgICBpbnRlcnNlY3Rpb25QdHMgPSBwYWlySW5mby5pbnRlcnNlY3Rpb25QdHMsXG4gICAgICB2ZWN0b3JOb3JtSW52ZXJzZSA9IHBhaXJJbmZvLnZlY3Rvck5vcm1JbnZlcnNlO1xuICB2YXIgZWRnZURpc3RhbmNlcyA9IGVkZ2UucHN0eWxlKCdlZGdlLWRpc3RhbmNlcycpLnZhbHVlO1xuICB2YXIgc2VnbWVudFdzID0gZWRnZS5wc3R5bGUoJ3NlZ21lbnQtd2VpZ2h0cycpO1xuICB2YXIgc2VnbWVudERzID0gZWRnZS5wc3R5bGUoJ3NlZ21lbnQtZGlzdGFuY2VzJyk7XG4gIHZhciBzZWdtZW50c04gPSBNYXRoLm1pbihzZWdtZW50V3MucGZWYWx1ZS5sZW5ndGgsIHNlZ21lbnREcy5wZlZhbHVlLmxlbmd0aCk7XG4gIHJzLmVkZ2VUeXBlID0gJ3NlZ21lbnRzJztcbiAgcnMuc2VncHRzID0gW107XG5cbiAgZm9yICh2YXIgcyA9IDA7IHMgPCBzZWdtZW50c047IHMrKykge1xuICAgIHZhciB3ID0gc2VnbWVudFdzLnBmVmFsdWVbc107XG4gICAgdmFyIGQgPSBzZWdtZW50RHMucGZWYWx1ZVtzXTtcbiAgICB2YXIgdzEgPSAxIC0gdztcbiAgICB2YXIgdzIgPSB3O1xuICAgIHZhciBtaWRwdFB0cyA9IGVkZ2VEaXN0YW5jZXMgPT09ICdub2RlLXBvc2l0aW9uJyA/IHBvc1B0cyA6IGludGVyc2VjdGlvblB0cztcbiAgICB2YXIgYWRqdXN0ZWRNaWRwdCA9IHtcbiAgICAgIHg6IG1pZHB0UHRzLngxICogdzEgKyBtaWRwdFB0cy54MiAqIHcyLFxuICAgICAgeTogbWlkcHRQdHMueTEgKiB3MSArIG1pZHB0UHRzLnkyICogdzJcbiAgICB9O1xuICAgIHJzLnNlZ3B0cy5wdXNoKGFkanVzdGVkTWlkcHQueCArIHZlY3Rvck5vcm1JbnZlcnNlLnggKiBkLCBhZGp1c3RlZE1pZHB0LnkgKyB2ZWN0b3JOb3JtSW52ZXJzZS55ICogZCk7XG4gIH1cbn07XG5cbkJScCQzLmZpbmRMb29wUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UsIHBhaXJJbmZvLCBpLCBlZGdlSXNVbmJ1bmRsZWQpIHtcbiAgLy8gU2VsZi1lZGdlXG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHZhciBkaXJDb3VudHMgPSBwYWlySW5mby5kaXJDb3VudHMsXG4gICAgICBzcmNQb3MgPSBwYWlySW5mby5zcmNQb3M7XG4gIHZhciBjdHJscHREaXN0cyA9IGVkZ2UucHN0eWxlKCdjb250cm9sLXBvaW50LWRpc3RhbmNlcycpO1xuICB2YXIgY3RybHB0RGlzdCA9IGN0cmxwdERpc3RzID8gY3RybHB0RGlzdHMucGZWYWx1ZVswXSA6IHVuZGVmaW5lZDtcbiAgdmFyIGxvb3BEaXIgPSBlZGdlLnBzdHlsZSgnbG9vcC1kaXJlY3Rpb24nKS5wZlZhbHVlO1xuICB2YXIgbG9vcFN3cCA9IGVkZ2UucHN0eWxlKCdsb29wLXN3ZWVwJykucGZWYWx1ZTtcbiAgdmFyIHN0ZXBTaXplID0gZWRnZS5wc3R5bGUoJ2NvbnRyb2wtcG9pbnQtc3RlcC1zaXplJykucGZWYWx1ZTtcbiAgcnMuZWRnZVR5cGUgPSAnc2VsZic7XG4gIHZhciBqID0gaTtcbiAgdmFyIGxvb3BEaXN0ID0gc3RlcFNpemU7XG5cbiAgaWYgKGVkZ2VJc1VuYnVuZGxlZCkge1xuICAgIGogPSAwO1xuICAgIGxvb3BEaXN0ID0gY3RybHB0RGlzdDtcbiAgfVxuXG4gIHZhciBsb29wQW5nbGUgPSBsb29wRGlyIC0gTWF0aC5QSSAvIDI7XG4gIHZhciBvdXRBbmdsZSA9IGxvb3BBbmdsZSAtIGxvb3BTd3AgLyAyO1xuICB2YXIgaW5BbmdsZSA9IGxvb3BBbmdsZSArIGxvb3BTd3AgLyAyOyAvLyBpbmNyZWFzZSBieSBzdGVwIHNpemUgZm9yIG92ZXJsYXBwaW5nIGxvb3BzLCBrZXllZCBvbiBkaXJlY3Rpb24gYW5kIHN3ZWVwIHZhbHVlc1xuXG4gIHZhciBkYyA9IFN0cmluZyhsb29wRGlyICsgJ18nICsgbG9vcFN3cCk7XG4gIGogPSBkaXJDb3VudHNbZGNdID09PSB1bmRlZmluZWQgPyBkaXJDb3VudHNbZGNdID0gMCA6ICsrZGlyQ291bnRzW2RjXTtcbiAgcnMuY3RybHB0cyA9IFtzcmNQb3MueCArIE1hdGguY29zKG91dEFuZ2xlKSAqIDEuNCAqIGxvb3BEaXN0ICogKGogLyAzICsgMSksIHNyY1Bvcy55ICsgTWF0aC5zaW4ob3V0QW5nbGUpICogMS40ICogbG9vcERpc3QgKiAoaiAvIDMgKyAxKSwgc3JjUG9zLnggKyBNYXRoLmNvcyhpbkFuZ2xlKSAqIDEuNCAqIGxvb3BEaXN0ICogKGogLyAzICsgMSksIHNyY1Bvcy55ICsgTWF0aC5zaW4oaW5BbmdsZSkgKiAxLjQgKiBsb29wRGlzdCAqIChqIC8gMyArIDEpXTtcbn07XG5cbkJScCQzLmZpbmRDb21wb3VuZExvb3BQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSwgcGFpckluZm8sIGksIGVkZ2VJc1VuYnVuZGxlZCkge1xuICAvLyBDb21wb3VuZCBlZGdlXG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHJzLmVkZ2VUeXBlID0gJ2NvbXBvdW5kJztcbiAgdmFyIHNyY1BvcyA9IHBhaXJJbmZvLnNyY1BvcyxcbiAgICAgIHRndFBvcyA9IHBhaXJJbmZvLnRndFBvcyxcbiAgICAgIHNyY1cgPSBwYWlySW5mby5zcmNXLFxuICAgICAgc3JjSCA9IHBhaXJJbmZvLnNyY0gsXG4gICAgICB0Z3RXID0gcGFpckluZm8udGd0VyxcbiAgICAgIHRndEggPSBwYWlySW5mby50Z3RIO1xuICB2YXIgc3RlcFNpemUgPSBlZGdlLnBzdHlsZSgnY29udHJvbC1wb2ludC1zdGVwLXNpemUnKS5wZlZhbHVlO1xuICB2YXIgY3RybHB0RGlzdHMgPSBlZGdlLnBzdHlsZSgnY29udHJvbC1wb2ludC1kaXN0YW5jZXMnKTtcbiAgdmFyIGN0cmxwdERpc3QgPSBjdHJscHREaXN0cyA/IGN0cmxwdERpc3RzLnBmVmFsdWVbMF0gOiB1bmRlZmluZWQ7XG4gIHZhciBqID0gaTtcbiAgdmFyIGxvb3BEaXN0ID0gc3RlcFNpemU7XG5cbiAgaWYgKGVkZ2VJc1VuYnVuZGxlZCkge1xuICAgIGogPSAwO1xuICAgIGxvb3BEaXN0ID0gY3RybHB0RGlzdDtcbiAgfVxuXG4gIHZhciBsb29wVyA9IDUwO1xuICB2YXIgbG9vcGFQb3MgPSB7XG4gICAgeDogc3JjUG9zLnggLSBzcmNXIC8gMixcbiAgICB5OiBzcmNQb3MueSAtIHNyY0ggLyAyXG4gIH07XG4gIHZhciBsb29wYlBvcyA9IHtcbiAgICB4OiB0Z3RQb3MueCAtIHRndFcgLyAyLFxuICAgIHk6IHRndFBvcy55IC0gdGd0SCAvIDJcbiAgfTtcbiAgdmFyIGxvb3BQb3MgPSB7XG4gICAgeDogTWF0aC5taW4obG9vcGFQb3MueCwgbG9vcGJQb3MueCksXG4gICAgeTogTWF0aC5taW4obG9vcGFQb3MueSwgbG9vcGJQb3MueSlcbiAgfTsgLy8gYXZvaWRzIGNhc2VzIHdpdGggaW1wb3NzaWJsZSBiZXppZXJzXG5cbiAgdmFyIG1pbkNvbXBvdW5kU3RyZXRjaCA9IDAuNTtcbiAgdmFyIGNvbXBvdW5kU3RyZXRjaEEgPSBNYXRoLm1heChtaW5Db21wb3VuZFN0cmV0Y2gsIE1hdGgubG9nKHNyY1cgKiAwLjAxKSk7XG4gIHZhciBjb21wb3VuZFN0cmV0Y2hCID0gTWF0aC5tYXgobWluQ29tcG91bmRTdHJldGNoLCBNYXRoLmxvZyh0Z3RXICogMC4wMSkpO1xuICBycy5jdHJscHRzID0gW2xvb3BQb3MueCwgbG9vcFBvcy55IC0gKDEgKyBNYXRoLnBvdyhsb29wVywgMS4xMikgLyAxMDApICogbG9vcERpc3QgKiAoaiAvIDMgKyAxKSAqIGNvbXBvdW5kU3RyZXRjaEEsIGxvb3BQb3MueCAtICgxICsgTWF0aC5wb3cobG9vcFcsIDEuMTIpIC8gMTAwKSAqIGxvb3BEaXN0ICogKGogLyAzICsgMSkgKiBjb21wb3VuZFN0cmV0Y2hCLCBsb29wUG9zLnldO1xufTtcblxuQlJwJDMuZmluZFN0cmFpZ2h0RWRnZVBvaW50cyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIC8vIFN0cmFpZ2h0IGVkZ2Ugd2l0aGluIGJ1bmRsZVxuICBlZGdlLl9wcml2YXRlLnJzY3JhdGNoLmVkZ2VUeXBlID0gJ3N0cmFpZ2h0Jztcbn07XG5cbkJScCQzLmZpbmRCZXppZXJQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSwgcGFpckluZm8sIGksIGVkZ2VJc1VuYnVuZGxlZCwgZWRnZUlzU3dhcHBlZCkge1xuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuICB2YXIgdmVjdG9yTm9ybUludmVyc2UgPSBwYWlySW5mby52ZWN0b3JOb3JtSW52ZXJzZSxcbiAgICAgIHBvc1B0cyA9IHBhaXJJbmZvLnBvc1B0cyxcbiAgICAgIGludGVyc2VjdGlvblB0cyA9IHBhaXJJbmZvLmludGVyc2VjdGlvblB0cztcbiAgdmFyIGVkZ2VEaXN0YW5jZXMgPSBlZGdlLnBzdHlsZSgnZWRnZS1kaXN0YW5jZXMnKS52YWx1ZTtcbiAgdmFyIHN0ZXBTaXplID0gZWRnZS5wc3R5bGUoJ2NvbnRyb2wtcG9pbnQtc3RlcC1zaXplJykucGZWYWx1ZTtcbiAgdmFyIGN0cmxwdERpc3RzID0gZWRnZS5wc3R5bGUoJ2NvbnRyb2wtcG9pbnQtZGlzdGFuY2VzJyk7XG4gIHZhciBjdHJscHRXcyA9IGVkZ2UucHN0eWxlKCdjb250cm9sLXBvaW50LXdlaWdodHMnKTtcbiAgdmFyIGJlemllck4gPSBjdHJscHREaXN0cyAmJiBjdHJscHRXcyA/IE1hdGgubWluKGN0cmxwdERpc3RzLnZhbHVlLmxlbmd0aCwgY3RybHB0V3MudmFsdWUubGVuZ3RoKSA6IDE7XG4gIHZhciBjdHJscHREaXN0ID0gY3RybHB0RGlzdHMgPyBjdHJscHREaXN0cy5wZlZhbHVlWzBdIDogdW5kZWZpbmVkO1xuICB2YXIgY3RybHB0V2VpZ2h0ID0gY3RybHB0V3MudmFsdWVbMF07IC8vIChNdWx0aSliZXppZXJcblxuICB2YXIgbXVsdGkgPSBlZGdlSXNVbmJ1bmRsZWQ7XG4gIHJzLmVkZ2VUeXBlID0gbXVsdGkgPyAnbXVsdGliZXppZXInIDogJ2Jlemllcic7XG4gIHJzLmN0cmxwdHMgPSBbXTtcblxuICBmb3IgKHZhciBiID0gMDsgYiA8IGJlemllck47IGIrKykge1xuICAgIHZhciBub3JtY3RybHB0RGlzdCA9ICgwLjUgLSBwYWlySW5mby5lbGVzLmxlbmd0aCAvIDIgKyBpKSAqIHN0ZXBTaXplICogKGVkZ2VJc1N3YXBwZWQgPyAtMSA6IDEpO1xuICAgIHZhciBtYW5jdHJscHREaXN0ID0gdm9pZCAwO1xuICAgIHZhciBzaWduID0gc2lnbnVtKG5vcm1jdHJscHREaXN0KTtcblxuICAgIGlmIChtdWx0aSkge1xuICAgICAgY3RybHB0RGlzdCA9IGN0cmxwdERpc3RzID8gY3RybHB0RGlzdHMucGZWYWx1ZVtiXSA6IHN0ZXBTaXplOyAvLyBmYWxsIGJhY2sgb24gc3RlcCBzaXplXG5cbiAgICAgIGN0cmxwdFdlaWdodCA9IGN0cmxwdFdzLnZhbHVlW2JdO1xuICAgIH1cblxuICAgIGlmIChlZGdlSXNVbmJ1bmRsZWQpIHtcbiAgICAgIC8vIG11bHRpIG9yIHNpbmdsZSB1bmJ1bmRsZWRcbiAgICAgIG1hbmN0cmxwdERpc3QgPSBjdHJscHREaXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBtYW5jdHJscHREaXN0ID0gY3RybHB0RGlzdCAhPT0gdW5kZWZpbmVkID8gc2lnbiAqIGN0cmxwdERpc3QgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIGRpc3RhbmNlRnJvbU1pZHBvaW50ID0gbWFuY3RybHB0RGlzdCAhPT0gdW5kZWZpbmVkID8gbWFuY3RybHB0RGlzdCA6IG5vcm1jdHJscHREaXN0O1xuICAgIHZhciB3MSA9IDEgLSBjdHJscHRXZWlnaHQ7XG4gICAgdmFyIHcyID0gY3RybHB0V2VpZ2h0O1xuICAgIHZhciBtaWRwdFB0cyA9IGVkZ2VEaXN0YW5jZXMgPT09ICdub2RlLXBvc2l0aW9uJyA/IHBvc1B0cyA6IGludGVyc2VjdGlvblB0cztcbiAgICB2YXIgYWRqdXN0ZWRNaWRwdCA9IHtcbiAgICAgIHg6IG1pZHB0UHRzLngxICogdzEgKyBtaWRwdFB0cy54MiAqIHcyLFxuICAgICAgeTogbWlkcHRQdHMueTEgKiB3MSArIG1pZHB0UHRzLnkyICogdzJcbiAgICB9O1xuICAgIHJzLmN0cmxwdHMucHVzaChhZGp1c3RlZE1pZHB0LnggKyB2ZWN0b3JOb3JtSW52ZXJzZS54ICogZGlzdGFuY2VGcm9tTWlkcG9pbnQsIGFkanVzdGVkTWlkcHQueSArIHZlY3Rvck5vcm1JbnZlcnNlLnkgKiBkaXN0YW5jZUZyb21NaWRwb2ludCk7XG4gIH1cbn07XG5cbkJScCQzLmZpbmRUYXhpUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UsIHBhaXJJbmZvKSB7XG4gIC8vIFRheGljYWIgZ2VvbWV0cnkgd2l0aCB0d28gdHVybnMgbWF4aW11bVxuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuICBycy5lZGdlVHlwZSA9ICdzZWdtZW50cyc7XG4gIHZhciBWRVJUSUNBTCA9ICd2ZXJ0aWNhbCc7XG4gIHZhciBIT1JJWk9OVEFMID0gJ2hvcml6b250YWwnO1xuICB2YXIgTEVGVFdBUkQgPSAnbGVmdHdhcmQnO1xuICB2YXIgUklHSFRXQVJEID0gJ3JpZ2h0d2FyZCc7XG4gIHZhciBET1dOV0FSRCA9ICdkb3dud2FyZCc7XG4gIHZhciBVUFdBUkQgPSAndXB3YXJkJztcbiAgdmFyIEFVVE8gPSAnYXV0byc7XG4gIHZhciBwb3NQdHMgPSBwYWlySW5mby5wb3NQdHMsXG4gICAgICBzcmNXID0gcGFpckluZm8uc3JjVyxcbiAgICAgIHNyY0ggPSBwYWlySW5mby5zcmNILFxuICAgICAgdGd0VyA9IHBhaXJJbmZvLnRndFcsXG4gICAgICB0Z3RIID0gcGFpckluZm8udGd0SDtcbiAgdmFyIGVkZ2VEaXN0YW5jZXMgPSBlZGdlLnBzdHlsZSgnZWRnZS1kaXN0YW5jZXMnKS52YWx1ZTtcbiAgdmFyIGRJbmNsdWRlc05vZGVCb2R5ID0gZWRnZURpc3RhbmNlcyAhPT0gJ25vZGUtcG9zaXRpb24nO1xuICB2YXIgdGF4aURpciA9IGVkZ2UucHN0eWxlKCd0YXhpLWRpcmVjdGlvbicpLnZhbHVlO1xuICB2YXIgcmF3VGF4aURpciA9IHRheGlEaXI7IC8vIHVucHJvY2Vzc2VkIHZhbHVlXG5cbiAgdmFyIHRheGlUdXJuID0gZWRnZS5wc3R5bGUoJ3RheGktdHVybicpO1xuICB2YXIgdHVybklzUGVyY2VudCA9IHRheGlUdXJuLnVuaXRzID09PSAnJSc7XG4gIHZhciB0YXhpVHVyblBmVmFsID0gdGF4aVR1cm4ucGZWYWx1ZTtcbiAgdmFyIHR1cm5Jc05lZ2F0aXZlID0gdGF4aVR1cm5QZlZhbCA8IDA7IC8vIGkuZS4gZnJvbSB0YXJnZXQgc2lkZVxuXG4gIHZhciBtaW5EID0gZWRnZS5wc3R5bGUoJ3RheGktdHVybi1taW4tZGlzdGFuY2UnKS5wZlZhbHVlO1xuICB2YXIgZHcgPSBkSW5jbHVkZXNOb2RlQm9keSA/IChzcmNXICsgdGd0VykgLyAyIDogMDtcbiAgdmFyIGRoID0gZEluY2x1ZGVzTm9kZUJvZHkgPyAoc3JjSCArIHRndEgpIC8gMiA6IDA7XG4gIHZhciBwZHggPSBwb3NQdHMueDIgLSBwb3NQdHMueDE7XG4gIHZhciBwZHkgPSBwb3NQdHMueTIgLSBwb3NQdHMueTE7IC8vIHRha2UgYXdheSB0aGUgZWZmZWN0aXZlIHcvaCBmcm9tIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGRlbHRhIHZhbHVlXG5cbiAgdmFyIHN1YkRXSCA9IGZ1bmN0aW9uIHN1YkRXSChkeHksIGR3aCkge1xuICAgIGlmIChkeHkgPiAwKSB7XG4gICAgICByZXR1cm4gTWF0aC5tYXgoZHh5IC0gZHdoLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIE1hdGgubWluKGR4eSArIGR3aCwgMCk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBkeCA9IHN1YkRXSChwZHgsIGR3KTtcbiAgdmFyIGR5ID0gc3ViRFdIKHBkeSwgZGgpO1xuICB2YXIgaXNFeHBsaWNpdERpciA9IGZhbHNlO1xuXG4gIGlmIChyYXdUYXhpRGlyID09PSBBVVRPKSB7XG4gICAgdGF4aURpciA9IE1hdGguYWJzKGR4KSA+IE1hdGguYWJzKGR5KSA/IEhPUklaT05UQUwgOiBWRVJUSUNBTDtcbiAgfSBlbHNlIGlmIChyYXdUYXhpRGlyID09PSBVUFdBUkQgfHwgcmF3VGF4aURpciA9PT0gRE9XTldBUkQpIHtcbiAgICB0YXhpRGlyID0gVkVSVElDQUw7XG4gICAgaXNFeHBsaWNpdERpciA9IHRydWU7XG4gIH0gZWxzZSBpZiAocmF3VGF4aURpciA9PT0gTEVGVFdBUkQgfHwgcmF3VGF4aURpciA9PT0gUklHSFRXQVJEKSB7XG4gICAgdGF4aURpciA9IEhPUklaT05UQUw7XG4gICAgaXNFeHBsaWNpdERpciA9IHRydWU7XG4gIH1cblxuICB2YXIgaXNWZXJ0ID0gdGF4aURpciA9PT0gVkVSVElDQUw7XG4gIHZhciBsID0gaXNWZXJ0ID8gZHkgOiBkeDtcbiAgdmFyIHBsID0gaXNWZXJ0ID8gcGR5IDogcGR4O1xuICB2YXIgc2duTCA9IHNpZ251bShwbCk7XG4gIHZhciBmb3JjZWREaXIgPSBmYWxzZTtcblxuICBpZiAoIShpc0V4cGxpY2l0RGlyICYmICh0dXJuSXNQZXJjZW50IHx8IHR1cm5Jc05lZ2F0aXZlKSkgLy8gZm9yY2luZyBpbiB0aGlzIGNhc2Ugd291bGQgY2F1c2Ugd2VpcmQgZ3Jvd2luZyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uXG4gICYmIChyYXdUYXhpRGlyID09PSBET1dOV0FSRCAmJiBwbCA8IDAgfHwgcmF3VGF4aURpciA9PT0gVVBXQVJEICYmIHBsID4gMCB8fCByYXdUYXhpRGlyID09PSBMRUZUV0FSRCAmJiBwbCA+IDAgfHwgcmF3VGF4aURpciA9PT0gUklHSFRXQVJEICYmIHBsIDwgMCkpIHtcbiAgICBzZ25MICo9IC0xO1xuICAgIGwgPSBzZ25MICogTWF0aC5hYnMobCk7XG4gICAgZm9yY2VkRGlyID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBkO1xuXG4gIGlmICh0dXJuSXNQZXJjZW50KSB7XG4gICAgdmFyIHAgPSB0YXhpVHVyblBmVmFsIDwgMCA/IDEgKyB0YXhpVHVyblBmVmFsIDogdGF4aVR1cm5QZlZhbDtcbiAgICBkID0gcCAqIGw7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGsgPSB0YXhpVHVyblBmVmFsIDwgMCA/IGwgOiAwO1xuICAgIGQgPSBrICsgdGF4aVR1cm5QZlZhbCAqIHNnbkw7XG4gIH1cblxuICB2YXIgZ2V0SXNUb29DbG9zZSA9IGZ1bmN0aW9uIGdldElzVG9vQ2xvc2UoZCkge1xuICAgIHJldHVybiBNYXRoLmFicyhkKSA8IG1pbkQgfHwgTWF0aC5hYnMoZCkgPj0gTWF0aC5hYnMobCk7XG4gIH07XG5cbiAgdmFyIGlzVG9vQ2xvc2VTcmMgPSBnZXRJc1Rvb0Nsb3NlKGQpO1xuICB2YXIgaXNUb29DbG9zZVRndCA9IGdldElzVG9vQ2xvc2UoTWF0aC5hYnMobCkgLSBNYXRoLmFicyhkKSk7XG4gIHZhciBpc1Rvb0Nsb3NlID0gaXNUb29DbG9zZVNyYyB8fCBpc1Rvb0Nsb3NlVGd0O1xuXG4gIGlmIChpc1Rvb0Nsb3NlICYmICFmb3JjZWREaXIpIHtcbiAgICAvLyBub24taWRlYWwgcm91dGluZ1xuICAgIGlmIChpc1ZlcnQpIHtcbiAgICAgIC8vIHZlcnRpY2FsIGZhbGxiYWNrc1xuICAgICAgdmFyIGxTaGFwZUluc2lkZVNyYyA9IE1hdGguYWJzKHBsKSA8PSBzcmNIIC8gMjtcbiAgICAgIHZhciBsU2hhcGVJbnNpZGVUZ3QgPSBNYXRoLmFicyhwZHgpIDw9IHRndFcgLyAyO1xuXG4gICAgICBpZiAobFNoYXBlSW5zaWRlU3JjKSB7XG4gICAgICAgIC8vIGhvcml6b250YWwgWi1zaGFwZSAoZGlyZWN0aW9uIG5vdCByZXNwZWN0ZWQpXG4gICAgICAgIHZhciB4ID0gKHBvc1B0cy54MSArIHBvc1B0cy54MikgLyAyO1xuICAgICAgICB2YXIgeTEgPSBwb3NQdHMueTEsXG4gICAgICAgICAgICB5MiA9IHBvc1B0cy55MjtcbiAgICAgICAgcnMuc2VncHRzID0gW3gsIHkxLCB4LCB5Ml07XG4gICAgICB9IGVsc2UgaWYgKGxTaGFwZUluc2lkZVRndCkge1xuICAgICAgICAvLyB2ZXJ0aWNhbCBaLXNoYXBlIChkaXN0YW5jZSBub3QgcmVzcGVjdGVkKVxuICAgICAgICB2YXIgeSA9IChwb3NQdHMueTEgKyBwb3NQdHMueTIpIC8gMjtcbiAgICAgICAgdmFyIHgxID0gcG9zUHRzLngxLFxuICAgICAgICAgICAgeDIgPSBwb3NQdHMueDI7XG4gICAgICAgIHJzLnNlZ3B0cyA9IFt4MSwgeSwgeDIsIHldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTC1zaGFwZSBmYWxsYmFjayAodHVybiBkaXN0YW5jZSBub3QgcmVzcGVjdGVkLCBidXQgd29ya3Mgd2VsbCB3aXRoIHRyZWUgc2libGluZ3MpXG4gICAgICAgIHJzLnNlZ3B0cyA9IFtwb3NQdHMueDEsIHBvc1B0cy55Ml07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhvcml6b250YWwgZmFsbGJhY2tzXG4gICAgICB2YXIgX2xTaGFwZUluc2lkZVNyYyA9IE1hdGguYWJzKHBsKSA8PSBzcmNXIC8gMjtcblxuICAgICAgdmFyIF9sU2hhcGVJbnNpZGVUZ3QgPSBNYXRoLmFicyhwZHkpIDw9IHRndEggLyAyO1xuXG4gICAgICBpZiAoX2xTaGFwZUluc2lkZVNyYykge1xuICAgICAgICAvLyB2ZXJ0aWNhbCBaLXNoYXBlIChkaXJlY3Rpb24gbm90IHJlc3BlY3RlZClcbiAgICAgICAgdmFyIF95ID0gKHBvc1B0cy55MSArIHBvc1B0cy55MikgLyAyO1xuXG4gICAgICAgIHZhciBfeCA9IHBvc1B0cy54MSxcbiAgICAgICAgICAgIF94MiA9IHBvc1B0cy54MjtcbiAgICAgICAgcnMuc2VncHRzID0gW194LCBfeSwgX3gyLCBfeV07XG4gICAgICB9IGVsc2UgaWYgKF9sU2hhcGVJbnNpZGVUZ3QpIHtcbiAgICAgICAgLy8gaG9yaXpvbnRhbCBaLXNoYXBlICh0dXJuIGRpc3RhbmNlIG5vdCByZXNwZWN0ZWQpXG4gICAgICAgIHZhciBfeDMgPSAocG9zUHRzLngxICsgcG9zUHRzLngyKSAvIDI7XG5cbiAgICAgICAgdmFyIF95MiA9IHBvc1B0cy55MSxcbiAgICAgICAgICAgIF95MyA9IHBvc1B0cy55MjtcbiAgICAgICAgcnMuc2VncHRzID0gW194MywgX3kyLCBfeDMsIF95M107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBMLXNoYXBlICh0dXJuIGRpc3RhbmNlIG5vdCByZXNwZWN0ZWQsIGJ1dCB3b3JrcyB3ZWxsIGZvciB0cmVlIHNpYmxpbmdzKVxuICAgICAgICBycy5zZWdwdHMgPSBbcG9zUHRzLngyLCBwb3NQdHMueTFdO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBpZGVhbCByb3V0aW5nXG4gICAgaWYgKGlzVmVydCkge1xuICAgICAgdmFyIF95NCA9IHBvc1B0cy55MSArIGQgKyAoZEluY2x1ZGVzTm9kZUJvZHkgPyBzcmNIIC8gMiAqIHNnbkwgOiAwKTtcblxuICAgICAgdmFyIF94NCA9IHBvc1B0cy54MSxcbiAgICAgICAgICBfeDUgPSBwb3NQdHMueDI7XG4gICAgICBycy5zZWdwdHMgPSBbX3g0LCBfeTQsIF94NSwgX3k0XTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaG9yaXpvbnRhbFxuICAgICAgdmFyIF94NiA9IHBvc1B0cy54MSArIGQgKyAoZEluY2x1ZGVzTm9kZUJvZHkgPyBzcmNXIC8gMiAqIHNnbkwgOiAwKTtcblxuICAgICAgdmFyIF95NSA9IHBvc1B0cy55MSxcbiAgICAgICAgICBfeTYgPSBwb3NQdHMueTI7XG4gICAgICBycy5zZWdwdHMgPSBbX3g2LCBfeTUsIF94NiwgX3k2XTtcbiAgICB9XG4gIH1cbn07XG5cbkJScCQzLnRyeVRvQ29ycmVjdEludmFsaWRQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSwgcGFpckluZm8pIHtcbiAgdmFyIHJzID0gZWRnZS5fcHJpdmF0ZS5yc2NyYXRjaDsgLy8gY2FuIG9ubHkgY29ycmVjdCBiZXppZXJzIGZvciBub3cuLi5cblxuICBpZiAocnMuZWRnZVR5cGUgPT09ICdiZXppZXInKSB7XG4gICAgdmFyIHNyY1BvcyA9IHBhaXJJbmZvLnNyY1BvcyxcbiAgICAgICAgdGd0UG9zID0gcGFpckluZm8udGd0UG9zLFxuICAgICAgICBzcmNXID0gcGFpckluZm8uc3JjVyxcbiAgICAgICAgc3JjSCA9IHBhaXJJbmZvLnNyY0gsXG4gICAgICAgIHRndFcgPSBwYWlySW5mby50Z3RXLFxuICAgICAgICB0Z3RIID0gcGFpckluZm8udGd0SCxcbiAgICAgICAgc3JjU2hhcGUgPSBwYWlySW5mby5zcmNTaGFwZSxcbiAgICAgICAgdGd0U2hhcGUgPSBwYWlySW5mby50Z3RTaGFwZTtcbiAgICB2YXIgYmFkU3RhcnQgPSAhbnVtYmVyKHJzLnN0YXJ0WCkgfHwgIW51bWJlcihycy5zdGFydFkpO1xuICAgIHZhciBiYWRBU3RhcnQgPSAhbnVtYmVyKHJzLmFycm93U3RhcnRYKSB8fCAhbnVtYmVyKHJzLmFycm93U3RhcnRZKTtcbiAgICB2YXIgYmFkRW5kID0gIW51bWJlcihycy5lbmRYKSB8fCAhbnVtYmVyKHJzLmVuZFkpO1xuICAgIHZhciBiYWRBRW5kID0gIW51bWJlcihycy5hcnJvd0VuZFgpIHx8ICFudW1iZXIocnMuYXJyb3dFbmRZKTtcbiAgICB2YXIgbWluQ3BBRGlzdEZhY3RvciA9IDM7XG4gICAgdmFyIGFycm93VyA9IHRoaXMuZ2V0QXJyb3dXaWR0aChlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlLCBlZGdlLnBzdHlsZSgnYXJyb3ctc2NhbGUnKS52YWx1ZSkgKiB0aGlzLmFycm93U2hhcGVXaWR0aDtcbiAgICB2YXIgbWluQ3BBRGlzdCA9IG1pbkNwQURpc3RGYWN0b3IgKiBhcnJvd1c7XG4gICAgdmFyIHN0YXJ0QUNwRGlzdCA9IGRpc3Qoe1xuICAgICAgeDogcnMuY3RybHB0c1swXSxcbiAgICAgIHk6IHJzLmN0cmxwdHNbMV1cbiAgICB9LCB7XG4gICAgICB4OiBycy5zdGFydFgsXG4gICAgICB5OiBycy5zdGFydFlcbiAgICB9KTtcbiAgICB2YXIgY2xvc2VTdGFydEFDcCA9IHN0YXJ0QUNwRGlzdCA8IG1pbkNwQURpc3Q7XG4gICAgdmFyIGVuZEFDcERpc3QgPSBkaXN0KHtcbiAgICAgIHg6IHJzLmN0cmxwdHNbMF0sXG4gICAgICB5OiBycy5jdHJscHRzWzFdXG4gICAgfSwge1xuICAgICAgeDogcnMuZW5kWCxcbiAgICAgIHk6IHJzLmVuZFlcbiAgICB9KTtcbiAgICB2YXIgY2xvc2VFbmRBQ3AgPSBlbmRBQ3BEaXN0IDwgbWluQ3BBRGlzdDtcbiAgICB2YXIgb3ZlcmxhcHBpbmcgPSBmYWxzZTtcblxuICAgIGlmIChiYWRTdGFydCB8fCBiYWRBU3RhcnQgfHwgY2xvc2VTdGFydEFDcCkge1xuICAgICAgb3ZlcmxhcHBpbmcgPSB0cnVlOyAvLyBwcm9qZWN0IGNvbnRyb2wgcG9pbnQgYWxvbmcgbGluZSBmcm9tIHNyYyBjZW50cmUgdG8gb3V0c2lkZSB0aGUgc3JjIHNoYXBlXG4gICAgICAvLyAob3RoZXJ3aXNlIGludGVyc2VjdGlvbiB3aWxsIHlpZWxkIG5vdGhpbmcpXG5cbiAgICAgIHZhciBjcEQgPSB7XG4gICAgICAgIC8vIGRlbHRhXG4gICAgICAgIHg6IHJzLmN0cmxwdHNbMF0gLSBzcmNQb3MueCxcbiAgICAgICAgeTogcnMuY3RybHB0c1sxXSAtIHNyY1Bvcy55XG4gICAgICB9O1xuICAgICAgdmFyIGNwTCA9IE1hdGguc3FydChjcEQueCAqIGNwRC54ICsgY3BELnkgKiBjcEQueSk7IC8vIGxlbmd0aCBvZiBsaW5lXG5cbiAgICAgIHZhciBjcE0gPSB7XG4gICAgICAgIC8vIG5vcm1hbGlzZWQgZGVsdGFcbiAgICAgICAgeDogY3BELnggLyBjcEwsXG4gICAgICAgIHk6IGNwRC55IC8gY3BMXG4gICAgICB9O1xuICAgICAgdmFyIHJhZGl1cyA9IE1hdGgubWF4KHNyY1csIHNyY0gpO1xuICAgICAgdmFyIGNwUHJvaiA9IHtcbiAgICAgICAgLy8gKjIgcmFkaXVzIGd1YXJhbnRlZXMgb3V0c2lkZSBzaGFwZVxuICAgICAgICB4OiBycy5jdHJscHRzWzBdICsgY3BNLnggKiAyICogcmFkaXVzLFxuICAgICAgICB5OiBycy5jdHJscHRzWzFdICsgY3BNLnkgKiAyICogcmFkaXVzXG4gICAgICB9O1xuICAgICAgdmFyIHNyY0N0cmxQdEludG4gPSBzcmNTaGFwZS5pbnRlcnNlY3RMaW5lKHNyY1Bvcy54LCBzcmNQb3MueSwgc3JjVywgc3JjSCwgY3BQcm9qLngsIGNwUHJvai55LCAwKTtcblxuICAgICAgaWYgKGNsb3NlU3RhcnRBQ3ApIHtcbiAgICAgICAgcnMuY3RybHB0c1swXSA9IHJzLmN0cmxwdHNbMF0gKyBjcE0ueCAqIChtaW5DcEFEaXN0IC0gc3RhcnRBQ3BEaXN0KTtcbiAgICAgICAgcnMuY3RybHB0c1sxXSA9IHJzLmN0cmxwdHNbMV0gKyBjcE0ueSAqIChtaW5DcEFEaXN0IC0gc3RhcnRBQ3BEaXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzLmN0cmxwdHNbMF0gPSBzcmNDdHJsUHRJbnRuWzBdICsgY3BNLnggKiBtaW5DcEFEaXN0O1xuICAgICAgICBycy5jdHJscHRzWzFdID0gc3JjQ3RybFB0SW50blsxXSArIGNwTS55ICogbWluQ3BBRGlzdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYmFkRW5kIHx8IGJhZEFFbmQgfHwgY2xvc2VFbmRBQ3ApIHtcbiAgICAgIG92ZXJsYXBwaW5nID0gdHJ1ZTsgLy8gcHJvamVjdCBjb250cm9sIHBvaW50IGFsb25nIGxpbmUgZnJvbSB0Z3QgY2VudHJlIHRvIG91dHNpZGUgdGhlIHRndCBzaGFwZVxuICAgICAgLy8gKG90aGVyd2lzZSBpbnRlcnNlY3Rpb24gd2lsbCB5aWVsZCBub3RoaW5nKVxuXG4gICAgICB2YXIgX2NwRCA9IHtcbiAgICAgICAgLy8gZGVsdGFcbiAgICAgICAgeDogcnMuY3RybHB0c1swXSAtIHRndFBvcy54LFxuICAgICAgICB5OiBycy5jdHJscHRzWzFdIC0gdGd0UG9zLnlcbiAgICAgIH07XG5cbiAgICAgIHZhciBfY3BMID0gTWF0aC5zcXJ0KF9jcEQueCAqIF9jcEQueCArIF9jcEQueSAqIF9jcEQueSk7IC8vIGxlbmd0aCBvZiBsaW5lXG5cblxuICAgICAgdmFyIF9jcE0gPSB7XG4gICAgICAgIC8vIG5vcm1hbGlzZWQgZGVsdGFcbiAgICAgICAgeDogX2NwRC54IC8gX2NwTCxcbiAgICAgICAgeTogX2NwRC55IC8gX2NwTFxuICAgICAgfTtcblxuICAgICAgdmFyIF9yYWRpdXMgPSBNYXRoLm1heChzcmNXLCBzcmNIKTtcblxuICAgICAgdmFyIF9jcFByb2ogPSB7XG4gICAgICAgIC8vICoyIHJhZGl1cyBndWFyYW50ZWVzIG91dHNpZGUgc2hhcGVcbiAgICAgICAgeDogcnMuY3RybHB0c1swXSArIF9jcE0ueCAqIDIgKiBfcmFkaXVzLFxuICAgICAgICB5OiBycy5jdHJscHRzWzFdICsgX2NwTS55ICogMiAqIF9yYWRpdXNcbiAgICAgIH07XG4gICAgICB2YXIgdGd0Q3RybFB0SW50biA9IHRndFNoYXBlLmludGVyc2VjdExpbmUodGd0UG9zLngsIHRndFBvcy55LCB0Z3RXLCB0Z3RILCBfY3BQcm9qLngsIF9jcFByb2oueSwgMCk7XG5cbiAgICAgIGlmIChjbG9zZUVuZEFDcCkge1xuICAgICAgICBycy5jdHJscHRzWzBdID0gcnMuY3RybHB0c1swXSArIF9jcE0ueCAqIChtaW5DcEFEaXN0IC0gZW5kQUNwRGlzdCk7XG4gICAgICAgIHJzLmN0cmxwdHNbMV0gPSBycy5jdHJscHRzWzFdICsgX2NwTS55ICogKG1pbkNwQURpc3QgLSBlbmRBQ3BEaXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzLmN0cmxwdHNbMF0gPSB0Z3RDdHJsUHRJbnRuWzBdICsgX2NwTS54ICogbWluQ3BBRGlzdDtcbiAgICAgICAgcnMuY3RybHB0c1sxXSA9IHRndEN0cmxQdEludG5bMV0gKyBfY3BNLnkgKiBtaW5DcEFEaXN0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvdmVybGFwcGluZykge1xuICAgICAgLy8gcmVjYWxjIGVuZHB0c1xuICAgICAgdGhpcy5maW5kRW5kcG9pbnRzKGVkZ2UpO1xuICAgIH1cbiAgfVxufTtcblxuQlJwJDMuc3RvcmVBbGxwdHMgPSBmdW5jdGlvbiAoZWRnZSkge1xuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuXG4gIGlmIChycy5lZGdlVHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ2JlemllcicgfHwgcnMuZWRnZVR5cGUgPT09ICdzZWxmJyB8fCBycy5lZGdlVHlwZSA9PT0gJ2NvbXBvdW5kJykge1xuICAgIHJzLmFsbHB0cyA9IFtdO1xuICAgIHJzLmFsbHB0cy5wdXNoKHJzLnN0YXJ0WCwgcnMuc3RhcnRZKTtcblxuICAgIGZvciAodmFyIGIgPSAwOyBiICsgMSA8IHJzLmN0cmxwdHMubGVuZ3RoOyBiICs9IDIpIHtcbiAgICAgIC8vIGN0cmwgcHQgaXRzZWxmXG4gICAgICBycy5hbGxwdHMucHVzaChycy5jdHJscHRzW2JdLCBycy5jdHJscHRzW2IgKyAxXSk7IC8vIHRoZSBtaWRwdCBiZXR3ZWVuIGN0cmxwdHMgYXMgaW50ZXJtZWRpYXRlIGRlc3RpbmF0aW9uIHB0c1xuXG4gICAgICBpZiAoYiArIDMgPCBycy5jdHJscHRzLmxlbmd0aCkge1xuICAgICAgICBycy5hbGxwdHMucHVzaCgocnMuY3RybHB0c1tiXSArIHJzLmN0cmxwdHNbYiArIDJdKSAvIDIsIChycy5jdHJscHRzW2IgKyAxXSArIHJzLmN0cmxwdHNbYiArIDNdKSAvIDIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJzLmFsbHB0cy5wdXNoKHJzLmVuZFgsIHJzLmVuZFkpO1xuICAgIHZhciBtLCBtdDtcblxuICAgIGlmIChycy5jdHJscHRzLmxlbmd0aCAvIDIgJSAyID09PSAwKSB7XG4gICAgICBtID0gcnMuYWxscHRzLmxlbmd0aCAvIDIgLSAxO1xuICAgICAgcnMubWlkWCA9IHJzLmFsbHB0c1ttXTtcbiAgICAgIHJzLm1pZFkgPSBycy5hbGxwdHNbbSArIDFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gcnMuYWxscHRzLmxlbmd0aCAvIDIgLSAzO1xuICAgICAgbXQgPSAwLjU7XG4gICAgICBycy5taWRYID0gcWJlemllckF0KHJzLmFsbHB0c1ttXSwgcnMuYWxscHRzW20gKyAyXSwgcnMuYWxscHRzW20gKyA0XSwgbXQpO1xuICAgICAgcnMubWlkWSA9IHFiZXppZXJBdChycy5hbGxwdHNbbSArIDFdLCBycy5hbGxwdHNbbSArIDNdLCBycy5hbGxwdHNbbSArIDVdLCBtdCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHJzLmVkZ2VUeXBlID09PSAnc3RyYWlnaHQnKSB7XG4gICAgLy8gbmVlZCB0byBjYWxjIHRoZXNlIGFmdGVyIGVuZHB0c1xuICAgIHJzLmFsbHB0cyA9IFtycy5zdGFydFgsIHJzLnN0YXJ0WSwgcnMuZW5kWCwgcnMuZW5kWV07IC8vIGRlZmF1bHQgbWlkcHQgZm9yIGxhYmVscyBldGNcblxuICAgIHJzLm1pZFggPSAocnMuc3RhcnRYICsgcnMuZW5kWCArIHJzLmFycm93U3RhcnRYICsgcnMuYXJyb3dFbmRYKSAvIDQ7XG4gICAgcnMubWlkWSA9IChycy5zdGFydFkgKyBycy5lbmRZICsgcnMuYXJyb3dTdGFydFkgKyBycy5hcnJvd0VuZFkpIC8gNDtcbiAgfSBlbHNlIGlmIChycy5lZGdlVHlwZSA9PT0gJ3NlZ21lbnRzJykge1xuICAgIHJzLmFsbHB0cyA9IFtdO1xuICAgIHJzLmFsbHB0cy5wdXNoKHJzLnN0YXJ0WCwgcnMuc3RhcnRZKTtcbiAgICBycy5hbGxwdHMucHVzaC5hcHBseShycy5hbGxwdHMsIHJzLnNlZ3B0cyk7XG4gICAgcnMuYWxscHRzLnB1c2gocnMuZW5kWCwgcnMuZW5kWSk7XG5cbiAgICBpZiAocnMuc2VncHRzLmxlbmd0aCAlIDQgPT09IDApIHtcbiAgICAgIHZhciBpMiA9IHJzLnNlZ3B0cy5sZW5ndGggLyAyO1xuICAgICAgdmFyIGkxID0gaTIgLSAyO1xuICAgICAgcnMubWlkWCA9IChycy5zZWdwdHNbaTFdICsgcnMuc2VncHRzW2kyXSkgLyAyO1xuICAgICAgcnMubWlkWSA9IChycy5zZWdwdHNbaTEgKyAxXSArIHJzLnNlZ3B0c1tpMiArIDFdKSAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfaSA9IHJzLnNlZ3B0cy5sZW5ndGggLyAyIC0gMTtcblxuICAgICAgcnMubWlkWCA9IHJzLnNlZ3B0c1tfaV07XG4gICAgICBycy5taWRZID0gcnMuc2VncHRzW19pICsgMV07XG4gICAgfVxuICB9XG59O1xuXG5CUnAkMy5jaGVja0ZvckludmFsaWRFZGdlV2FybmluZyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIHZhciBycyA9IGVkZ2VbMF0uX3ByaXZhdGUucnNjcmF0Y2g7XG5cbiAgaWYgKHJzLm5vZGVzT3ZlcmxhcCB8fCBudW1iZXIocnMuc3RhcnRYKSAmJiBudW1iZXIocnMuc3RhcnRZKSAmJiBudW1iZXIocnMuZW5kWCkgJiYgbnVtYmVyKHJzLmVuZFkpKSB7XG4gICAgcnMubG9nZ2VkRXJyID0gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFycy5sb2dnZWRFcnIpIHtcbiAgICAgIHJzLmxvZ2dlZEVyciA9IHRydWU7XG4gICAgICB3YXJuKCdFZGdlIGAnICsgZWRnZS5pZCgpICsgJ2AgaGFzIGludmFsaWQgZW5kcG9pbnRzIGFuZCBzbyBpdCBpcyBpbXBvc3NpYmxlIHRvIGRyYXcuICBBZGp1c3QgeW91ciBlZGdlIHN0eWxlIChlLmcuIGNvbnRyb2wgcG9pbnRzKSBhY2NvcmRpbmdseSBvciB1c2UgYW4gYWx0ZXJuYXRpdmUgZWRnZSB0eXBlLiAgVGhpcyBpcyBleHBlY3RlZCBiZWhhdmlvdXIgd2hlbiB0aGUgc291cmNlIG5vZGUgYW5kIHRoZSB0YXJnZXQgbm9kZSBvdmVybGFwLicpO1xuICAgIH1cbiAgfVxufTtcblxuQlJwJDMuZmluZEVkZ2VDb250cm9sUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2VzKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKCFlZGdlcyB8fCBlZGdlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgciA9IHRoaXM7XG4gIHZhciBjeSA9IHIuY3k7XG4gIHZhciBoYXNDb21wb3VuZHMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gIHZhciBoYXNoVGFibGUgPSB7XG4gICAgbWFwOiBuZXcgTWFwJDEoKSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldChwYWlySWQpIHtcbiAgICAgIHZhciBtYXAyID0gdGhpcy5tYXAuZ2V0KHBhaXJJZFswXSk7XG5cbiAgICAgIGlmIChtYXAyICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG1hcDIuZ2V0KHBhaXJJZFsxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gc2V0KHBhaXJJZCwgdmFsKSB7XG4gICAgICB2YXIgbWFwMiA9IHRoaXMubWFwLmdldChwYWlySWRbMF0pO1xuXG4gICAgICBpZiAobWFwMiA9PSBudWxsKSB7XG4gICAgICAgIG1hcDIgPSBuZXcgTWFwJDEoKTtcbiAgICAgICAgdGhpcy5tYXAuc2V0KHBhaXJJZFswXSwgbWFwMik7XG4gICAgICB9XG5cbiAgICAgIG1hcDIuc2V0KHBhaXJJZFsxXSwgdmFsKTtcbiAgICB9XG4gIH07XG4gIHZhciBwYWlySWRzID0gW107XG4gIHZhciBoYXlzdGFja0VkZ2VzID0gW107IC8vIGNyZWF0ZSBhIHRhYmxlIG9mIGVkZ2UgKHNyYywgdGd0KSA9PiBsaXN0IG9mIGVkZ2VzIGJldHdlZW4gdGhlbVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gICAgdmFyIGN1cnZlU3R5bGUgPSBlZGdlLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZTsgLy8gaWdub3JlIGVkZ2VzIHdobyBhcmUgbm90IHRvIGJlIGRpc3BsYXllZFxuICAgIC8vIHRoZXkgc2hvdWxkbid0IHRha2UgdXAgc3BhY2VcblxuICAgIGlmIChlZGdlLnJlbW92ZWQoKSB8fCAhZWRnZS50YWtlc1VwU3BhY2UoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGN1cnZlU3R5bGUgPT09ICdoYXlzdGFjaycpIHtcbiAgICAgIGhheXN0YWNrRWRnZXMucHVzaChlZGdlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBlZGdlSXNVbmJ1bmRsZWQgPSBjdXJ2ZVN0eWxlID09PSAndW5idW5kbGVkLWJlemllcicgfHwgY3VydmVTdHlsZSA9PT0gJ3NlZ21lbnRzJyB8fCBjdXJ2ZVN0eWxlID09PSAnc3RyYWlnaHQnIHx8IGN1cnZlU3R5bGUgPT09ICdzdHJhaWdodC10cmlhbmdsZScgfHwgY3VydmVTdHlsZSA9PT0gJ3RheGknO1xuICAgIHZhciBlZGdlSXNCZXppZXIgPSBjdXJ2ZVN0eWxlID09PSAndW5idW5kbGVkLWJlemllcicgfHwgY3VydmVTdHlsZSA9PT0gJ2Jlemllcic7XG4gICAgdmFyIHNyYyA9IF9wLnNvdXJjZTtcbiAgICB2YXIgdGd0ID0gX3AudGFyZ2V0O1xuICAgIHZhciBzcmNJbmRleCA9IHNyYy5wb29sSW5kZXgoKTtcbiAgICB2YXIgdGd0SW5kZXggPSB0Z3QucG9vbEluZGV4KCk7XG4gICAgdmFyIHBhaXJJZCA9IFtzcmNJbmRleCwgdGd0SW5kZXhdLnNvcnQoKTtcbiAgICB2YXIgdGFibGVFbnRyeSA9IGhhc2hUYWJsZS5nZXQocGFpcklkKTtcblxuICAgIGlmICh0YWJsZUVudHJ5ID09IG51bGwpIHtcbiAgICAgIHRhYmxlRW50cnkgPSB7XG4gICAgICAgIGVsZXM6IFtdXG4gICAgICB9O1xuICAgICAgaGFzaFRhYmxlLnNldChwYWlySWQsIHRhYmxlRW50cnkpO1xuICAgICAgcGFpcklkcy5wdXNoKHBhaXJJZCk7XG4gICAgfVxuXG4gICAgdGFibGVFbnRyeS5lbGVzLnB1c2goZWRnZSk7XG5cbiAgICBpZiAoZWRnZUlzVW5idW5kbGVkKSB7XG4gICAgICB0YWJsZUVudHJ5Lmhhc1VuYnVuZGxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGVkZ2VJc0Jlemllcikge1xuICAgICAgdGFibGVFbnRyeS5oYXNCZXppZXIgPSB0cnVlO1xuICAgIH1cbiAgfSAvLyBmb3IgZWFjaCBwYWlyIChzcmMsIHRndCksIGNyZWF0ZSB0aGUgY3RybCBwdHNcbiAgLy8gTmVzdGVkIGZvciBsb29wIGlzIE9LOyB0b3RhbCBudW1iZXIgb2YgaXRlcmF0aW9ucyBmb3IgYm90aCBsb29wcyA9IGVkZ2VDb3VudFxuXG5cbiAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AocCkge1xuICAgIHZhciBwYWlySWQgPSBwYWlySWRzW3BdO1xuICAgIHZhciBwYWlySW5mbyA9IGhhc2hUYWJsZS5nZXQocGFpcklkKTtcbiAgICB2YXIgc3dhcHBlZHBhaXJJbmZvID0gdm9pZCAwO1xuXG4gICAgaWYgKCFwYWlySW5mby5oYXNVbmJ1bmRsZWQpIHtcbiAgICAgIHZhciBwbGxFZGdlcyA9IHBhaXJJbmZvLmVsZXNbMF0ucGFyYWxsZWxFZGdlcygpLmZpbHRlcihmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gZS5pc0J1bmRsZWRCZXppZXIoKTtcbiAgICAgIH0pO1xuICAgICAgY2xlYXJBcnJheShwYWlySW5mby5lbGVzKTtcbiAgICAgIHBsbEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIHBhaXJJbmZvLmVsZXMucHVzaChlZGdlKTtcbiAgICAgIH0pOyAvLyBmb3IgZWFjaCBwYWlyIGlkLCB0aGUgZWRnZXMgc2hvdWxkIGJlIHNvcnRlZCBieSBpbmRleFxuXG4gICAgICBwYWlySW5mby5lbGVzLnNvcnQoZnVuY3Rpb24gKGVkZ2UxLCBlZGdlMikge1xuICAgICAgICByZXR1cm4gZWRnZTEucG9vbEluZGV4KCkgLSBlZGdlMi5wb29sSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBmaXJzdEVkZ2UgPSBwYWlySW5mby5lbGVzWzBdO1xuICAgIHZhciBzcmMgPSBmaXJzdEVkZ2Uuc291cmNlKCk7XG4gICAgdmFyIHRndCA9IGZpcnN0RWRnZS50YXJnZXQoKTsgLy8gbWFrZSBzdXJlIHNyYy90Z3QgZGlzdGluY3Rpb24gaXMgY29uc2lzdGVudCB3LnIudC4gcGFpcklkXG5cbiAgICBpZiAoc3JjLnBvb2xJbmRleCgpID4gdGd0LnBvb2xJbmRleCgpKSB7XG4gICAgICB2YXIgdGVtcCA9IHNyYztcbiAgICAgIHNyYyA9IHRndDtcbiAgICAgIHRndCA9IHRlbXA7XG4gICAgfVxuXG4gICAgdmFyIHNyY1BvcyA9IHBhaXJJbmZvLnNyY1BvcyA9IHNyYy5wb3NpdGlvbigpO1xuICAgIHZhciB0Z3RQb3MgPSBwYWlySW5mby50Z3RQb3MgPSB0Z3QucG9zaXRpb24oKTtcbiAgICB2YXIgc3JjVyA9IHBhaXJJbmZvLnNyY1cgPSBzcmMub3V0ZXJXaWR0aCgpO1xuICAgIHZhciBzcmNIID0gcGFpckluZm8uc3JjSCA9IHNyYy5vdXRlckhlaWdodCgpO1xuICAgIHZhciB0Z3RXID0gcGFpckluZm8udGd0VyA9IHRndC5vdXRlcldpZHRoKCk7XG4gICAgdmFyIHRndEggPSBwYWlySW5mby50Z3RIID0gdGd0Lm91dGVySGVpZ2h0KCk7XG5cbiAgICB2YXIgc3JjU2hhcGUgPSBwYWlySW5mby5zcmNTaGFwZSA9IHIubm9kZVNoYXBlc1tfdGhpcy5nZXROb2RlU2hhcGUoc3JjKV07XG5cbiAgICB2YXIgdGd0U2hhcGUgPSBwYWlySW5mby50Z3RTaGFwZSA9IHIubm9kZVNoYXBlc1tfdGhpcy5nZXROb2RlU2hhcGUodGd0KV07XG5cbiAgICBwYWlySW5mby5kaXJDb3VudHMgPSB7XG4gICAgICAnbm9ydGgnOiAwLFxuICAgICAgJ3dlc3QnOiAwLFxuICAgICAgJ3NvdXRoJzogMCxcbiAgICAgICdlYXN0JzogMCxcbiAgICAgICdub3J0aHdlc3QnOiAwLFxuICAgICAgJ3NvdXRod2VzdCc6IDAsXG4gICAgICAnbm9ydGhlYXN0JzogMCxcbiAgICAgICdzb3V0aGVhc3QnOiAwXG4gICAgfTtcblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHBhaXJJbmZvLmVsZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIF9lZGdlID0gcGFpckluZm8uZWxlc1tfaTJdO1xuICAgICAgdmFyIHJzID0gX2VkZ2VbMF0uX3ByaXZhdGUucnNjcmF0Y2g7XG5cbiAgICAgIHZhciBfY3VydmVTdHlsZSA9IF9lZGdlLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZTtcblxuICAgICAgdmFyIF9lZGdlSXNVbmJ1bmRsZWQgPSBfY3VydmVTdHlsZSA9PT0gJ3VuYnVuZGxlZC1iZXppZXInIHx8IF9jdXJ2ZVN0eWxlID09PSAnc2VnbWVudHMnIHx8IF9jdXJ2ZVN0eWxlID09PSAndGF4aSc7IC8vIHdoZXRoZXIgdGhlIG5vcm1hbGlzZWQgcGFpciBvcmRlciBpcyB0aGUgcmV2ZXJzZSBvZiB0aGUgZWRnZSdzIHNyYy10Z3Qgb3JkZXJcblxuXG4gICAgICB2YXIgZWRnZUlzU3dhcHBlZCA9ICFzcmMuc2FtZShfZWRnZS5zb3VyY2UoKSk7XG5cbiAgICAgIGlmICghcGFpckluZm8uY2FsY3VsYXRlZEludGVyc2VjdGlvbiAmJiBzcmMgIT09IHRndCAmJiAocGFpckluZm8uaGFzQmV6aWVyIHx8IHBhaXJJbmZvLmhhc1VuYnVuZGxlZCkpIHtcbiAgICAgICAgcGFpckluZm8uY2FsY3VsYXRlZEludGVyc2VjdGlvbiA9IHRydWU7IC8vIHB0IG91dHNpZGUgc3JjIHNoYXBlIHRvIGNhbGMgZGlzdGFuY2UvZGlzcGxhY2VtZW50IGZyb20gc3JjIHRvIHRndFxuXG4gICAgICAgIHZhciBzcmNPdXRzaWRlID0gc3JjU2hhcGUuaW50ZXJzZWN0TGluZShzcmNQb3MueCwgc3JjUG9zLnksIHNyY1csIHNyY0gsIHRndFBvcy54LCB0Z3RQb3MueSwgMCk7XG4gICAgICAgIHZhciBzcmNJbnRuID0gcGFpckluZm8uc3JjSW50biA9IHNyY091dHNpZGU7IC8vIHB0IG91dHNpZGUgdGd0IHNoYXBlIHRvIGNhbGMgZGlzdGFuY2UvZGlzcGxhY2VtZW50IGZyb20gc3JjIHRvIHRndFxuXG4gICAgICAgIHZhciB0Z3RPdXRzaWRlID0gdGd0U2hhcGUuaW50ZXJzZWN0TGluZSh0Z3RQb3MueCwgdGd0UG9zLnksIHRndFcsIHRndEgsIHNyY1Bvcy54LCBzcmNQb3MueSwgMCk7XG4gICAgICAgIHZhciB0Z3RJbnRuID0gcGFpckluZm8udGd0SW50biA9IHRndE91dHNpZGU7XG4gICAgICAgIHZhciBpbnRlcnNlY3Rpb25QdHMgPSBwYWlySW5mby5pbnRlcnNlY3Rpb25QdHMgPSB7XG4gICAgICAgICAgeDE6IHNyY091dHNpZGVbMF0sXG4gICAgICAgICAgeDI6IHRndE91dHNpZGVbMF0sXG4gICAgICAgICAgeTE6IHNyY091dHNpZGVbMV0sXG4gICAgICAgICAgeTI6IHRndE91dHNpZGVbMV1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHBvc1B0cyA9IHBhaXJJbmZvLnBvc1B0cyA9IHtcbiAgICAgICAgICB4MTogc3JjUG9zLngsXG4gICAgICAgICAgeDI6IHRndFBvcy54LFxuICAgICAgICAgIHkxOiBzcmNQb3MueSxcbiAgICAgICAgICB5MjogdGd0UG9zLnlcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGR5ID0gdGd0T3V0c2lkZVsxXSAtIHNyY091dHNpZGVbMV07XG4gICAgICAgIHZhciBkeCA9IHRndE91dHNpZGVbMF0gLSBzcmNPdXRzaWRlWzBdO1xuICAgICAgICB2YXIgbCA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gICAgICAgIHZhciB2ZWN0b3IgPSBwYWlySW5mby52ZWN0b3IgPSB7XG4gICAgICAgICAgeDogZHgsXG4gICAgICAgICAgeTogZHlcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHZlY3Rvck5vcm0gPSBwYWlySW5mby52ZWN0b3JOb3JtID0ge1xuICAgICAgICAgIHg6IHZlY3Rvci54IC8gbCxcbiAgICAgICAgICB5OiB2ZWN0b3IueSAvIGxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHZlY3Rvck5vcm1JbnZlcnNlID0ge1xuICAgICAgICAgIHg6IC12ZWN0b3JOb3JtLnksXG4gICAgICAgICAgeTogdmVjdG9yTm9ybS54XG4gICAgICAgIH07IC8vIGlmIG5vZGUgc2hhcGVzIG92ZXJsYXAsIHRoZW4gbm8gY3RybCBwdHMgdG8gZHJhd1xuXG4gICAgICAgIHBhaXJJbmZvLm5vZGVzT3ZlcmxhcCA9ICFudW1iZXIobCkgfHwgdGd0U2hhcGUuY2hlY2tQb2ludChzcmNPdXRzaWRlWzBdLCBzcmNPdXRzaWRlWzFdLCAwLCB0Z3RXLCB0Z3RILCB0Z3RQb3MueCwgdGd0UG9zLnkpIHx8IHNyY1NoYXBlLmNoZWNrUG9pbnQodGd0T3V0c2lkZVswXSwgdGd0T3V0c2lkZVsxXSwgMCwgc3JjVywgc3JjSCwgc3JjUG9zLngsIHNyY1Bvcy55KTtcbiAgICAgICAgcGFpckluZm8udmVjdG9yTm9ybUludmVyc2UgPSB2ZWN0b3JOb3JtSW52ZXJzZTtcbiAgICAgICAgc3dhcHBlZHBhaXJJbmZvID0ge1xuICAgICAgICAgIG5vZGVzT3ZlcmxhcDogcGFpckluZm8ubm9kZXNPdmVybGFwLFxuICAgICAgICAgIGRpckNvdW50czogcGFpckluZm8uZGlyQ291bnRzLFxuICAgICAgICAgIGNhbGN1bGF0ZWRJbnRlcnNlY3Rpb246IHRydWUsXG4gICAgICAgICAgaGFzQmV6aWVyOiBwYWlySW5mby5oYXNCZXppZXIsXG4gICAgICAgICAgaGFzVW5idW5kbGVkOiBwYWlySW5mby5oYXNVbmJ1bmRsZWQsXG4gICAgICAgICAgZWxlczogcGFpckluZm8uZWxlcyxcbiAgICAgICAgICBzcmNQb3M6IHRndFBvcyxcbiAgICAgICAgICB0Z3RQb3M6IHNyY1BvcyxcbiAgICAgICAgICBzcmNXOiB0Z3RXLFxuICAgICAgICAgIHNyY0g6IHRndEgsXG4gICAgICAgICAgdGd0Vzogc3JjVyxcbiAgICAgICAgICB0Z3RIOiBzcmNILFxuICAgICAgICAgIHNyY0ludG46IHRndEludG4sXG4gICAgICAgICAgdGd0SW50bjogc3JjSW50bixcbiAgICAgICAgICBzcmNTaGFwZTogdGd0U2hhcGUsXG4gICAgICAgICAgdGd0U2hhcGU6IHNyY1NoYXBlLFxuICAgICAgICAgIHBvc1B0czoge1xuICAgICAgICAgICAgeDE6IHBvc1B0cy54MixcbiAgICAgICAgICAgIHkxOiBwb3NQdHMueTIsXG4gICAgICAgICAgICB4MjogcG9zUHRzLngxLFxuICAgICAgICAgICAgeTI6IHBvc1B0cy55MVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW50ZXJzZWN0aW9uUHRzOiB7XG4gICAgICAgICAgICB4MTogaW50ZXJzZWN0aW9uUHRzLngyLFxuICAgICAgICAgICAgeTE6IGludGVyc2VjdGlvblB0cy55MixcbiAgICAgICAgICAgIHgyOiBpbnRlcnNlY3Rpb25QdHMueDEsXG4gICAgICAgICAgICB5MjogaW50ZXJzZWN0aW9uUHRzLnkxXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2ZWN0b3I6IHtcbiAgICAgICAgICAgIHg6IC12ZWN0b3IueCxcbiAgICAgICAgICAgIHk6IC12ZWN0b3IueVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmVjdG9yTm9ybToge1xuICAgICAgICAgICAgeDogLXZlY3Rvck5vcm0ueCxcbiAgICAgICAgICAgIHk6IC12ZWN0b3JOb3JtLnlcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZlY3Rvck5vcm1JbnZlcnNlOiB7XG4gICAgICAgICAgICB4OiAtdmVjdG9yTm9ybUludmVyc2UueCxcbiAgICAgICAgICAgIHk6IC12ZWN0b3JOb3JtSW52ZXJzZS55XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB2YXIgcGFzc2VkUGFpckluZm8gPSBlZGdlSXNTd2FwcGVkID8gc3dhcHBlZHBhaXJJbmZvIDogcGFpckluZm87XG4gICAgICBycy5ub2Rlc092ZXJsYXAgPSBwYXNzZWRQYWlySW5mby5ub2Rlc092ZXJsYXA7XG4gICAgICBycy5zcmNJbnRuID0gcGFzc2VkUGFpckluZm8uc3JjSW50bjtcbiAgICAgIHJzLnRndEludG4gPSBwYXNzZWRQYWlySW5mby50Z3RJbnRuO1xuXG4gICAgICBpZiAoaGFzQ29tcG91bmRzICYmIChzcmMuaXNQYXJlbnQoKSB8fCBzcmMuaXNDaGlsZCgpIHx8IHRndC5pc1BhcmVudCgpIHx8IHRndC5pc0NoaWxkKCkpICYmIChzcmMucGFyZW50cygpLmFueVNhbWUodGd0KSB8fCB0Z3QucGFyZW50cygpLmFueVNhbWUoc3JjKSB8fCBzcmMuc2FtZSh0Z3QpICYmIHNyYy5pc1BhcmVudCgpKSkge1xuICAgICAgICBfdGhpcy5maW5kQ29tcG91bmRMb29wUG9pbnRzKF9lZGdlLCBwYXNzZWRQYWlySW5mbywgX2kyLCBfZWRnZUlzVW5idW5kbGVkKTtcbiAgICAgIH0gZWxzZSBpZiAoc3JjID09PSB0Z3QpIHtcbiAgICAgICAgX3RoaXMuZmluZExvb3BQb2ludHMoX2VkZ2UsIHBhc3NlZFBhaXJJbmZvLCBfaTIsIF9lZGdlSXNVbmJ1bmRsZWQpO1xuICAgICAgfSBlbHNlIGlmIChfY3VydmVTdHlsZSA9PT0gJ3NlZ21lbnRzJykge1xuICAgICAgICBfdGhpcy5maW5kU2VnbWVudHNQb2ludHMoX2VkZ2UsIHBhc3NlZFBhaXJJbmZvKTtcbiAgICAgIH0gZWxzZSBpZiAoX2N1cnZlU3R5bGUgPT09ICd0YXhpJykge1xuICAgICAgICBfdGhpcy5maW5kVGF4aVBvaW50cyhfZWRnZSwgcGFzc2VkUGFpckluZm8pO1xuICAgICAgfSBlbHNlIGlmIChfY3VydmVTdHlsZSA9PT0gJ3N0cmFpZ2h0JyB8fCAhX2VkZ2VJc1VuYnVuZGxlZCAmJiBwYWlySW5mby5lbGVzLmxlbmd0aCAlIDIgPT09IDEgJiYgX2kyID09PSBNYXRoLmZsb29yKHBhaXJJbmZvLmVsZXMubGVuZ3RoIC8gMikpIHtcbiAgICAgICAgX3RoaXMuZmluZFN0cmFpZ2h0RWRnZVBvaW50cyhfZWRnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5maW5kQmV6aWVyUG9pbnRzKF9lZGdlLCBwYXNzZWRQYWlySW5mbywgX2kyLCBfZWRnZUlzVW5idW5kbGVkLCBlZGdlSXNTd2FwcGVkKTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuZmluZEVuZHBvaW50cyhfZWRnZSk7XG5cbiAgICAgIF90aGlzLnRyeVRvQ29ycmVjdEludmFsaWRQb2ludHMoX2VkZ2UsIHBhc3NlZFBhaXJJbmZvKTtcblxuICAgICAgX3RoaXMuY2hlY2tGb3JJbnZhbGlkRWRnZVdhcm5pbmcoX2VkZ2UpO1xuXG4gICAgICBfdGhpcy5zdG9yZUFsbHB0cyhfZWRnZSk7XG5cbiAgICAgIF90aGlzLnN0b3JlRWRnZVByb2plY3Rpb25zKF9lZGdlKTtcblxuICAgICAgX3RoaXMuY2FsY3VsYXRlQXJyb3dBbmdsZXMoX2VkZ2UpO1xuXG4gICAgICBfdGhpcy5yZWNhbGN1bGF0ZUVkZ2VMYWJlbFByb2plY3Rpb25zKF9lZGdlKTtcblxuICAgICAgX3RoaXMuY2FsY3VsYXRlTGFiZWxBbmdsZXMoX2VkZ2UpO1xuICAgIH0gLy8gZm9yIHBhaXIgZWRnZXNcblxuICB9O1xuXG4gIGZvciAodmFyIHAgPSAwOyBwIDwgcGFpcklkcy5sZW5ndGg7IHArKykge1xuICAgIF9sb29wKHApO1xuICB9IC8vIGZvciBwYWlyIGlkc1xuICAvLyBoYXlzdGFja3MgYXZvaWQgdGhlIGV4cGVuc2Ugb2YgcGFpckluZm8gc3R1ZmYgKGludGVyc2VjdGlvbnMgZXRjLilcblxuXG4gIHRoaXMuZmluZEhheXN0YWNrUG9pbnRzKGhheXN0YWNrRWRnZXMpO1xufTtcblxuZnVuY3Rpb24gZ2V0UHRzKHB0cykge1xuICB2YXIgcmV0UHRzID0gW107XG5cbiAgaWYgKHB0cyA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwdHMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgeCA9IHB0c1tpXTtcbiAgICB2YXIgeSA9IHB0c1tpICsgMV07XG4gICAgcmV0UHRzLnB1c2goe1xuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXRQdHM7XG59XG5cbkJScCQzLmdldFNlZ21lbnRQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSkge1xuICB2YXIgcnMgPSBlZGdlWzBdLl9wcml2YXRlLnJzY3JhdGNoO1xuICB2YXIgdHlwZSA9IHJzLmVkZ2VUeXBlO1xuXG4gIGlmICh0eXBlID09PSAnc2VnbWVudHMnKSB7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoZWRnZSk7XG4gICAgcmV0dXJuIGdldFB0cyhycy5zZWdwdHMpO1xuICB9XG59O1xuXG5CUnAkMy5nZXRDb250cm9sUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHJzID0gZWRnZVswXS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdmFyIHR5cGUgPSBycy5lZGdlVHlwZTtcblxuICBpZiAodHlwZSA9PT0gJ2JlemllcicgfHwgdHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCB0eXBlID09PSAnc2VsZicgfHwgdHlwZSA9PT0gJ2NvbXBvdW5kJykge1xuICAgIHRoaXMucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKGVkZ2UpO1xuICAgIHJldHVybiBnZXRQdHMocnMuY3RybHB0cyk7XG4gIH1cbn07XG5cbkJScCQzLmdldEVkZ2VNaWRwb2ludCA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIHZhciBycyA9IGVkZ2VbMF0uX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHRoaXMucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKGVkZ2UpO1xuICByZXR1cm4ge1xuICAgIHg6IHJzLm1pZFgsXG4gICAgeTogcnMubWlkWVxuICB9O1xufTtcblxudmFyIEJScCQ0ID0ge307XG5cbkJScCQ0Lm1hbnVhbEVuZHB0VG9QeCA9IGZ1bmN0aW9uIChub2RlLCBwcm9wKSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIG5wb3MgPSBub2RlLnBvc2l0aW9uKCk7XG4gIHZhciB3ID0gbm9kZS5vdXRlcldpZHRoKCk7XG4gIHZhciBoID0gbm9kZS5vdXRlckhlaWdodCgpO1xuXG4gIGlmIChwcm9wLnZhbHVlLmxlbmd0aCA9PT0gMikge1xuICAgIHZhciBwID0gW3Byb3AucGZWYWx1ZVswXSwgcHJvcC5wZlZhbHVlWzFdXTtcblxuICAgIGlmIChwcm9wLnVuaXRzWzBdID09PSAnJScpIHtcbiAgICAgIHBbMF0gPSBwWzBdICogdztcbiAgICB9XG5cbiAgICBpZiAocHJvcC51bml0c1sxXSA9PT0gJyUnKSB7XG4gICAgICBwWzFdID0gcFsxXSAqIGg7XG4gICAgfVxuXG4gICAgcFswXSArPSBucG9zLng7XG4gICAgcFsxXSArPSBucG9zLnk7XG4gICAgcmV0dXJuIHA7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGFuZ2xlID0gcHJvcC5wZlZhbHVlWzBdO1xuICAgIGFuZ2xlID0gLU1hdGguUEkgLyAyICsgYW5nbGU7IC8vIHN0YXJ0IGF0IDEyIG8nY2xvY2tcblxuICAgIHZhciBsID0gMiAqIE1hdGgubWF4KHcsIGgpO1xuICAgIHZhciBfcCA9IFtucG9zLnggKyBNYXRoLmNvcyhhbmdsZSkgKiBsLCBucG9zLnkgKyBNYXRoLnNpbihhbmdsZSkgKiBsXTtcbiAgICByZXR1cm4gci5ub2RlU2hhcGVzW3RoaXMuZ2V0Tm9kZVNoYXBlKG5vZGUpXS5pbnRlcnNlY3RMaW5lKG5wb3MueCwgbnBvcy55LCB3LCBoLCBfcFswXSwgX3BbMV0sIDApO1xuICB9XG59O1xuXG5CUnAkNC5maW5kRW5kcG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgaW50ZXJzZWN0O1xuICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UoKVswXTtcbiAgdmFyIHRhcmdldCA9IGVkZ2UudGFyZ2V0KClbMF07XG4gIHZhciBzcmNQb3MgPSBzb3VyY2UucG9zaXRpb24oKTtcbiAgdmFyIHRndFBvcyA9IHRhcmdldC5wb3NpdGlvbigpO1xuICB2YXIgdGd0QXJTaGFwZSA9IGVkZ2UucHN0eWxlKCd0YXJnZXQtYXJyb3ctc2hhcGUnKS52YWx1ZTtcbiAgdmFyIHNyY0FyU2hhcGUgPSBlZGdlLnBzdHlsZSgnc291cmNlLWFycm93LXNoYXBlJykudmFsdWU7XG4gIHZhciB0Z3REaXN0ID0gZWRnZS5wc3R5bGUoJ3RhcmdldC1kaXN0YW5jZS1mcm9tLW5vZGUnKS5wZlZhbHVlO1xuICB2YXIgc3JjRGlzdCA9IGVkZ2UucHN0eWxlKCdzb3VyY2UtZGlzdGFuY2UtZnJvbS1ub2RlJykucGZWYWx1ZTtcbiAgdmFyIGN1cnZlU3R5bGUgPSBlZGdlLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZTtcbiAgdmFyIHJzID0gZWRnZS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdmFyIGV0ID0gcnMuZWRnZVR5cGU7XG4gIHZhciB0YXhpID0gY3VydmVTdHlsZSA9PT0gJ3RheGknO1xuICB2YXIgc2VsZiA9IGV0ID09PSAnc2VsZicgfHwgZXQgPT09ICdjb21wb3VuZCc7XG4gIHZhciBiZXppZXIgPSBldCA9PT0gJ2JlemllcicgfHwgZXQgPT09ICdtdWx0aWJlemllcicgfHwgc2VsZjtcbiAgdmFyIG11bHRpID0gZXQgIT09ICdiZXppZXInO1xuICB2YXIgbGluZXMgPSBldCA9PT0gJ3N0cmFpZ2h0JyB8fCBldCA9PT0gJ3NlZ21lbnRzJztcbiAgdmFyIHNlZ21lbnRzID0gZXQgPT09ICdzZWdtZW50cyc7XG4gIHZhciBoYXNFbmRwdHMgPSBiZXppZXIgfHwgbXVsdGkgfHwgbGluZXM7XG4gIHZhciBvdmVycmlkZUVuZHB0cyA9IHNlbGYgfHwgdGF4aTtcbiAgdmFyIHNyY01hbkVuZHB0ID0gZWRnZS5wc3R5bGUoJ3NvdXJjZS1lbmRwb2ludCcpO1xuICB2YXIgc3JjTWFuRW5kcHRWYWwgPSBvdmVycmlkZUVuZHB0cyA/ICdvdXRzaWRlLXRvLW5vZGUnIDogc3JjTWFuRW5kcHQudmFsdWU7XG4gIHZhciB0Z3RNYW5FbmRwdCA9IGVkZ2UucHN0eWxlKCd0YXJnZXQtZW5kcG9pbnQnKTtcbiAgdmFyIHRndE1hbkVuZHB0VmFsID0gb3ZlcnJpZGVFbmRwdHMgPyAnb3V0c2lkZS10by1ub2RlJyA6IHRndE1hbkVuZHB0LnZhbHVlO1xuICBycy5zcmNNYW5FbmRwdCA9IHNyY01hbkVuZHB0O1xuICBycy50Z3RNYW5FbmRwdCA9IHRndE1hbkVuZHB0O1xuICB2YXIgcDE7IC8vIGxhc3Qga25vd24gcG9pbnQgb2YgZWRnZSBvbiB0YXJnZXQgc2lkZVxuXG4gIHZhciBwMjsgLy8gbGFzdCBrbm93biBwb2ludCBvZiBlZGdlIG9uIHNvdXJjZSBzaWRlXG5cbiAgdmFyIHAxX2k7IC8vIHBvaW50IHRvIGludGVyc2VjdCB3aXRoIHRhcmdldCBzaGFwZVxuXG4gIHZhciBwMl9pOyAvLyBwb2ludCB0byBpbnRlcnNlY3Qgd2l0aCBzb3VyY2Ugc2hhcGVcblxuICBpZiAoYmV6aWVyKSB7XG4gICAgdmFyIGNwU3RhcnQgPSBbcnMuY3RybHB0c1swXSwgcnMuY3RybHB0c1sxXV07XG4gICAgdmFyIGNwRW5kID0gbXVsdGkgPyBbcnMuY3RybHB0c1tycy5jdHJscHRzLmxlbmd0aCAtIDJdLCBycy5jdHJscHRzW3JzLmN0cmxwdHMubGVuZ3RoIC0gMV1dIDogY3BTdGFydDtcbiAgICBwMSA9IGNwRW5kO1xuICAgIHAyID0gY3BTdGFydDtcbiAgfSBlbHNlIGlmIChsaW5lcykge1xuICAgIHZhciBzcmNBcnJvd0Zyb21QdCA9ICFzZWdtZW50cyA/IFt0Z3RQb3MueCwgdGd0UG9zLnldIDogcnMuc2VncHRzLnNsaWNlKDAsIDIpO1xuICAgIHZhciB0Z3RBcnJvd0Zyb21QdCA9ICFzZWdtZW50cyA/IFtzcmNQb3MueCwgc3JjUG9zLnldIDogcnMuc2VncHRzLnNsaWNlKHJzLnNlZ3B0cy5sZW5ndGggLSAyKTtcbiAgICBwMSA9IHRndEFycm93RnJvbVB0O1xuICAgIHAyID0gc3JjQXJyb3dGcm9tUHQ7XG4gIH1cblxuICBpZiAodGd0TWFuRW5kcHRWYWwgPT09ICdpbnNpZGUtdG8tbm9kZScpIHtcbiAgICBpbnRlcnNlY3QgPSBbdGd0UG9zLngsIHRndFBvcy55XTtcbiAgfSBlbHNlIGlmICh0Z3RNYW5FbmRwdC51bml0cykge1xuICAgIGludGVyc2VjdCA9IHRoaXMubWFudWFsRW5kcHRUb1B4KHRhcmdldCwgdGd0TWFuRW5kcHQpO1xuICB9IGVsc2UgaWYgKHRndE1hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1saW5lJykge1xuICAgIGludGVyc2VjdCA9IHJzLnRndEludG47IC8vIHVzZSBjYWNoZWQgdmFsdWUgZnJvbSBjdHJscHQgY2FsY1xuICB9IGVsc2Uge1xuICAgIGlmICh0Z3RNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbm9kZScgfHwgdGd0TWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLW5vZGUtb3ItbGFiZWwnKSB7XG4gICAgICBwMV9pID0gcDE7XG4gICAgfSBlbHNlIGlmICh0Z3RNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbGluZScgfHwgdGd0TWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLWxpbmUtb3ItbGFiZWwnKSB7XG4gICAgICBwMV9pID0gW3NyY1Bvcy54LCBzcmNQb3MueV07XG4gICAgfVxuXG4gICAgaW50ZXJzZWN0ID0gci5ub2RlU2hhcGVzW3RoaXMuZ2V0Tm9kZVNoYXBlKHRhcmdldCldLmludGVyc2VjdExpbmUodGd0UG9zLngsIHRndFBvcy55LCB0YXJnZXQub3V0ZXJXaWR0aCgpLCB0YXJnZXQub3V0ZXJIZWlnaHQoKSwgcDFfaVswXSwgcDFfaVsxXSwgMCk7XG5cbiAgICBpZiAodGd0TWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLW5vZGUtb3ItbGFiZWwnIHx8IHRndE1hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1saW5lLW9yLWxhYmVsJykge1xuICAgICAgdmFyIHRycyA9IHRhcmdldC5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgICAgIHZhciBsdyA9IHRycy5sYWJlbFdpZHRoO1xuICAgICAgdmFyIGxoID0gdHJzLmxhYmVsSGVpZ2h0O1xuICAgICAgdmFyIGx4ID0gdHJzLmxhYmVsWDtcbiAgICAgIHZhciBseSA9IHRycy5sYWJlbFk7XG4gICAgICB2YXIgbHcyID0gbHcgLyAyO1xuICAgICAgdmFyIGxoMiA9IGxoIC8gMjtcbiAgICAgIHZhciB2YSA9IHRhcmdldC5wc3R5bGUoJ3RleHQtdmFsaWduJykudmFsdWU7XG5cbiAgICAgIGlmICh2YSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgbHkgLT0gbGgyO1xuICAgICAgfSBlbHNlIGlmICh2YSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgbHkgKz0gbGgyO1xuICAgICAgfVxuXG4gICAgICB2YXIgaGEgPSB0YXJnZXQucHN0eWxlKCd0ZXh0LWhhbGlnbicpLnZhbHVlO1xuXG4gICAgICBpZiAoaGEgPT09ICdsZWZ0Jykge1xuICAgICAgICBseCAtPSBsdzI7XG4gICAgICB9IGVsc2UgaWYgKGhhID09PSAncmlnaHQnKSB7XG4gICAgICAgIGx4ICs9IGx3MjtcbiAgICAgIH1cblxuICAgICAgdmFyIGxhYmVsSW50ZXJzZWN0ID0gcG9seWdvbkludGVyc2VjdExpbmUocDFfaVswXSwgcDFfaVsxXSwgW2x4IC0gbHcyLCBseSAtIGxoMiwgbHggKyBsdzIsIGx5IC0gbGgyLCBseCArIGx3MiwgbHkgKyBsaDIsIGx4IC0gbHcyLCBseSArIGxoMl0sIHRndFBvcy54LCB0Z3RQb3MueSk7XG5cbiAgICAgIGlmIChsYWJlbEludGVyc2VjdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciByZWZQdCA9IHNyY1BvcztcbiAgICAgICAgdmFyIGludFNxZGlzdCA9IHNxZGlzdChyZWZQdCwgYXJyYXkycG9pbnQoaW50ZXJzZWN0KSk7XG4gICAgICAgIHZhciBsYWJJbnRTcWRpc3QgPSBzcWRpc3QocmVmUHQsIGFycmF5MnBvaW50KGxhYmVsSW50ZXJzZWN0KSk7XG4gICAgICAgIHZhciBtaW5TcURpc3QgPSBpbnRTcWRpc3Q7XG5cbiAgICAgICAgaWYgKGxhYkludFNxZGlzdCA8IGludFNxZGlzdCkge1xuICAgICAgICAgIGludGVyc2VjdCA9IGxhYmVsSW50ZXJzZWN0O1xuICAgICAgICAgIG1pblNxRGlzdCA9IGxhYkludFNxZGlzdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsYWJlbEludGVyc2VjdC5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgdmFyIGxhYkludDJTcURpc3QgPSBzcWRpc3QocmVmUHQsIHtcbiAgICAgICAgICAgIHg6IGxhYmVsSW50ZXJzZWN0WzJdLFxuICAgICAgICAgICAgeTogbGFiZWxJbnRlcnNlY3RbM11cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChsYWJJbnQyU3FEaXN0IDwgbWluU3FEaXN0KSB7XG4gICAgICAgICAgICBpbnRlcnNlY3QgPSBbbGFiZWxJbnRlcnNlY3RbMl0sIGxhYmVsSW50ZXJzZWN0WzNdXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgYXJyb3dFbmQgPSBzaG9ydGVuSW50ZXJzZWN0aW9uKGludGVyc2VjdCwgcDEsIHIuYXJyb3dTaGFwZXNbdGd0QXJTaGFwZV0uc3BhY2luZyhlZGdlKSArIHRndERpc3QpO1xuICB2YXIgZWRnZUVuZCA9IHNob3J0ZW5JbnRlcnNlY3Rpb24oaW50ZXJzZWN0LCBwMSwgci5hcnJvd1NoYXBlc1t0Z3RBclNoYXBlXS5nYXAoZWRnZSkgKyB0Z3REaXN0KTtcbiAgcnMuZW5kWCA9IGVkZ2VFbmRbMF07XG4gIHJzLmVuZFkgPSBlZGdlRW5kWzFdO1xuICBycy5hcnJvd0VuZFggPSBhcnJvd0VuZFswXTtcbiAgcnMuYXJyb3dFbmRZID0gYXJyb3dFbmRbMV07XG5cbiAgaWYgKHNyY01hbkVuZHB0VmFsID09PSAnaW5zaWRlLXRvLW5vZGUnKSB7XG4gICAgaW50ZXJzZWN0ID0gW3NyY1Bvcy54LCBzcmNQb3MueV07XG4gIH0gZWxzZSBpZiAoc3JjTWFuRW5kcHQudW5pdHMpIHtcbiAgICBpbnRlcnNlY3QgPSB0aGlzLm1hbnVhbEVuZHB0VG9QeChzb3VyY2UsIHNyY01hbkVuZHB0KTtcbiAgfSBlbHNlIGlmIChzcmNNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbGluZScpIHtcbiAgICBpbnRlcnNlY3QgPSBycy5zcmNJbnRuOyAvLyB1c2UgY2FjaGVkIHZhbHVlIGZyb20gY3RybHB0IGNhbGNcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3JjTWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLW5vZGUnIHx8IHNyY01hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1ub2RlLW9yLWxhYmVsJykge1xuICAgICAgcDJfaSA9IHAyO1xuICAgIH0gZWxzZSBpZiAoc3JjTWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLWxpbmUnIHx8IHNyY01hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1saW5lLW9yLWxhYmVsJykge1xuICAgICAgcDJfaSA9IFt0Z3RQb3MueCwgdGd0UG9zLnldO1xuICAgIH1cblxuICAgIGludGVyc2VjdCA9IHIubm9kZVNoYXBlc1t0aGlzLmdldE5vZGVTaGFwZShzb3VyY2UpXS5pbnRlcnNlY3RMaW5lKHNyY1Bvcy54LCBzcmNQb3MueSwgc291cmNlLm91dGVyV2lkdGgoKSwgc291cmNlLm91dGVySGVpZ2h0KCksIHAyX2lbMF0sIHAyX2lbMV0sIDApO1xuXG4gICAgaWYgKHNyY01hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1ub2RlLW9yLWxhYmVsJyB8fCBzcmNNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbGluZS1vci1sYWJlbCcpIHtcbiAgICAgIHZhciBzcnMgPSBzb3VyY2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgICB2YXIgX2x3ID0gc3JzLmxhYmVsV2lkdGg7XG4gICAgICB2YXIgX2xoID0gc3JzLmxhYmVsSGVpZ2h0O1xuICAgICAgdmFyIF9seCA9IHNycy5sYWJlbFg7XG4gICAgICB2YXIgX2x5ID0gc3JzLmxhYmVsWTtcblxuICAgICAgdmFyIF9sdzIgPSBfbHcgLyAyO1xuXG4gICAgICB2YXIgX2xoMiA9IF9saCAvIDI7XG5cbiAgICAgIHZhciBfdmEgPSBzb3VyY2UucHN0eWxlKCd0ZXh0LXZhbGlnbicpLnZhbHVlO1xuXG4gICAgICBpZiAoX3ZhID09PSAndG9wJykge1xuICAgICAgICBfbHkgLT0gX2xoMjtcbiAgICAgIH0gZWxzZSBpZiAoX3ZhID09PSAnYm90dG9tJykge1xuICAgICAgICBfbHkgKz0gX2xoMjtcbiAgICAgIH1cblxuICAgICAgdmFyIF9oYSA9IHNvdXJjZS5wc3R5bGUoJ3RleHQtaGFsaWduJykudmFsdWU7XG5cbiAgICAgIGlmIChfaGEgPT09ICdsZWZ0Jykge1xuICAgICAgICBfbHggLT0gX2x3MjtcbiAgICAgIH0gZWxzZSBpZiAoX2hhID09PSAncmlnaHQnKSB7XG4gICAgICAgIF9seCArPSBfbHcyO1xuICAgICAgfVxuXG4gICAgICB2YXIgX2xhYmVsSW50ZXJzZWN0ID0gcG9seWdvbkludGVyc2VjdExpbmUocDJfaVswXSwgcDJfaVsxXSwgW19seCAtIF9sdzIsIF9seSAtIF9saDIsIF9seCArIF9sdzIsIF9seSAtIF9saDIsIF9seCArIF9sdzIsIF9seSArIF9saDIsIF9seCAtIF9sdzIsIF9seSArIF9saDJdLCBzcmNQb3MueCwgc3JjUG9zLnkpO1xuXG4gICAgICBpZiAoX2xhYmVsSW50ZXJzZWN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIF9yZWZQdCA9IHRndFBvcztcblxuICAgICAgICB2YXIgX2ludFNxZGlzdCA9IHNxZGlzdChfcmVmUHQsIGFycmF5MnBvaW50KGludGVyc2VjdCkpO1xuXG4gICAgICAgIHZhciBfbGFiSW50U3FkaXN0ID0gc3FkaXN0KF9yZWZQdCwgYXJyYXkycG9pbnQoX2xhYmVsSW50ZXJzZWN0KSk7XG5cbiAgICAgICAgdmFyIF9taW5TcURpc3QgPSBfaW50U3FkaXN0O1xuXG4gICAgICAgIGlmIChfbGFiSW50U3FkaXN0IDwgX2ludFNxZGlzdCkge1xuICAgICAgICAgIGludGVyc2VjdCA9IFtfbGFiZWxJbnRlcnNlY3RbMF0sIF9sYWJlbEludGVyc2VjdFsxXV07XG4gICAgICAgICAgX21pblNxRGlzdCA9IF9sYWJJbnRTcWRpc3Q7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX2xhYmVsSW50ZXJzZWN0Lmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICB2YXIgX2xhYkludDJTcURpc3QgPSBzcWRpc3QoX3JlZlB0LCB7XG4gICAgICAgICAgICB4OiBfbGFiZWxJbnRlcnNlY3RbMl0sXG4gICAgICAgICAgICB5OiBfbGFiZWxJbnRlcnNlY3RbM11cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChfbGFiSW50MlNxRGlzdCA8IF9taW5TcURpc3QpIHtcbiAgICAgICAgICAgIGludGVyc2VjdCA9IFtfbGFiZWxJbnRlcnNlY3RbMl0sIF9sYWJlbEludGVyc2VjdFszXV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGFycm93U3RhcnQgPSBzaG9ydGVuSW50ZXJzZWN0aW9uKGludGVyc2VjdCwgcDIsIHIuYXJyb3dTaGFwZXNbc3JjQXJTaGFwZV0uc3BhY2luZyhlZGdlKSArIHNyY0Rpc3QpO1xuICB2YXIgZWRnZVN0YXJ0ID0gc2hvcnRlbkludGVyc2VjdGlvbihpbnRlcnNlY3QsIHAyLCByLmFycm93U2hhcGVzW3NyY0FyU2hhcGVdLmdhcChlZGdlKSArIHNyY0Rpc3QpO1xuICBycy5zdGFydFggPSBlZGdlU3RhcnRbMF07XG4gIHJzLnN0YXJ0WSA9IGVkZ2VTdGFydFsxXTtcbiAgcnMuYXJyb3dTdGFydFggPSBhcnJvd1N0YXJ0WzBdO1xuICBycy5hcnJvd1N0YXJ0WSA9IGFycm93U3RhcnRbMV07XG5cbiAgaWYgKGhhc0VuZHB0cykge1xuICAgIGlmICghbnVtYmVyKHJzLnN0YXJ0WCkgfHwgIW51bWJlcihycy5zdGFydFkpIHx8ICFudW1iZXIocnMuZW5kWCkgfHwgIW51bWJlcihycy5lbmRZKSkge1xuICAgICAgcnMuYmFkTGluZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJzLmJhZExpbmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn07XG5cbkJScCQ0LmdldFNvdXJjZUVuZHBvaW50ID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHJzID0gZWRnZVswXS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdGhpcy5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoZWRnZSk7XG5cbiAgc3dpdGNoIChycy5lZGdlVHlwZSkge1xuICAgIGNhc2UgJ2hheXN0YWNrJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHJzLmhheXN0YWNrUHRzWzBdLFxuICAgICAgICB5OiBycy5oYXlzdGFja1B0c1sxXVxuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBycy5hcnJvd1N0YXJ0WCxcbiAgICAgICAgeTogcnMuYXJyb3dTdGFydFlcbiAgICAgIH07XG4gIH1cbn07XG5cbkJScCQ0LmdldFRhcmdldEVuZHBvaW50ID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHJzID0gZWRnZVswXS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdGhpcy5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoZWRnZSk7XG5cbiAgc3dpdGNoIChycy5lZGdlVHlwZSkge1xuICAgIGNhc2UgJ2hheXN0YWNrJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHJzLmhheXN0YWNrUHRzWzJdLFxuICAgICAgICB5OiBycy5oYXlzdGFja1B0c1szXVxuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBycy5hcnJvd0VuZFgsXG4gICAgICAgIHk6IHJzLmFycm93RW5kWVxuICAgICAgfTtcbiAgfVxufTtcblxudmFyIEJScCQ1ID0ge307XG5cbmZ1bmN0aW9uIHB1c2hCZXppZXJQdHMociwgZWRnZSwgcHRzKSB7XG4gIHZhciBxYmV6aWVyQXQkMSA9IGZ1bmN0aW9uIHFiZXppZXJBdCQxKHAxLCBwMiwgcDMsIHQpIHtcbiAgICByZXR1cm4gcWJlemllckF0KHAxLCBwMiwgcDMsIHQpO1xuICB9O1xuXG4gIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gIHZhciBicHRzID0gX3AucnN0eWxlLmJlemllclB0cztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHIuYmV6aWVyUHJvalBjdHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IHIuYmV6aWVyUHJvalBjdHNbaV07XG4gICAgYnB0cy5wdXNoKHtcbiAgICAgIHg6IHFiZXppZXJBdCQxKHB0c1swXSwgcHRzWzJdLCBwdHNbNF0sIHApLFxuICAgICAgeTogcWJlemllckF0JDEocHRzWzFdLCBwdHNbM10sIHB0c1s1XSwgcClcbiAgICB9KTtcbiAgfVxufVxuXG5CUnAkNS5zdG9yZUVkZ2VQcm9qZWN0aW9ucyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICB2YXIgZXQgPSBycy5lZGdlVHlwZTsgLy8gY2xlYXIgdGhlIGNhY2hlZCBwb2ludHMgc3RhdGVcblxuICBfcC5yc3R5bGUuYmV6aWVyUHRzID0gbnVsbDtcbiAgX3AucnN0eWxlLmxpbmVQdHMgPSBudWxsO1xuICBfcC5yc3R5bGUuaGF5c3RhY2tQdHMgPSBudWxsO1xuXG4gIGlmIChldCA9PT0gJ211bHRpYmV6aWVyJyB8fCBldCA9PT0gJ2JlemllcicgfHwgZXQgPT09ICdzZWxmJyB8fCBldCA9PT0gJ2NvbXBvdW5kJykge1xuICAgIF9wLnJzdHlsZS5iZXppZXJQdHMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpICsgNSA8IHJzLmFsbHB0cy5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgcHVzaEJlemllclB0cyh0aGlzLCBlZGdlLCBycy5hbGxwdHMuc2xpY2UoaSwgaSArIDYpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXQgPT09ICdzZWdtZW50cycpIHtcbiAgICB2YXIgbHB0cyA9IF9wLnJzdHlsZS5saW5lUHRzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSArIDEgPCBycy5hbGxwdHMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgIGxwdHMucHVzaCh7XG4gICAgICAgIHg6IHJzLmFsbHB0c1tpXSxcbiAgICAgICAgeTogcnMuYWxscHRzW2kgKyAxXVxuICAgICAgfSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV0ID09PSAnaGF5c3RhY2snKSB7XG4gICAgdmFyIGhwdHMgPSBycy5oYXlzdGFja1B0cztcbiAgICBfcC5yc3R5bGUuaGF5c3RhY2tQdHMgPSBbe1xuICAgICAgeDogaHB0c1swXSxcbiAgICAgIHk6IGhwdHNbMV1cbiAgICB9LCB7XG4gICAgICB4OiBocHRzWzJdLFxuICAgICAgeTogaHB0c1szXVxuICAgIH1dO1xuICB9XG5cbiAgX3AucnN0eWxlLmFycm93V2lkdGggPSB0aGlzLmdldEFycm93V2lkdGgoZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSwgZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWUpICogdGhpcy5hcnJvd1NoYXBlV2lkdGg7XG59O1xuXG5CUnAkNS5yZWNhbGN1bGF0ZUVkZ2VQcm9qZWN0aW9ucyA9IGZ1bmN0aW9uIChlZGdlcykge1xuICB0aGlzLmZpbmRFZGdlQ29udHJvbFBvaW50cyhlZGdlcyk7XG59O1xuXG4vKiBnbG9iYWwgZG9jdW1lbnQgKi9cblxudmFyIEJScCQ2ID0ge307XG5cbkJScCQ2LnJlY2FsY3VsYXRlTm9kZUxhYmVsUHJvamVjdGlvbiA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIHZhciBjb250ZW50ID0gbm9kZS5wc3R5bGUoJ2xhYmVsJykuc3RyVmFsdWU7XG5cbiAgaWYgKGVtcHR5U3RyaW5nKGNvbnRlbnQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRleHRYLCB0ZXh0WTtcbiAgdmFyIF9wID0gbm9kZS5fcHJpdmF0ZTtcbiAgdmFyIG5vZGVXaWR0aCA9IG5vZGUud2lkdGgoKTtcbiAgdmFyIG5vZGVIZWlnaHQgPSBub2RlLmhlaWdodCgpO1xuICB2YXIgcGFkZGluZyA9IG5vZGUucGFkZGluZygpO1xuICB2YXIgbm9kZVBvcyA9IG5vZGUucG9zaXRpb24oKTtcbiAgdmFyIHRleHRIYWxpZ24gPSBub2RlLnBzdHlsZSgndGV4dC1oYWxpZ24nKS5zdHJWYWx1ZTtcbiAgdmFyIHRleHRWYWxpZ24gPSBub2RlLnBzdHlsZSgndGV4dC12YWxpZ24nKS5zdHJWYWx1ZTtcbiAgdmFyIHJzID0gX3AucnNjcmF0Y2g7XG4gIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG5cbiAgc3dpdGNoICh0ZXh0SGFsaWduKSB7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICB0ZXh0WCA9IG5vZGVQb3MueCAtIG5vZGVXaWR0aCAvIDIgLSBwYWRkaW5nO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdyaWdodCc6XG4gICAgICB0ZXh0WCA9IG5vZGVQb3MueCArIG5vZGVXaWR0aCAvIDIgKyBwYWRkaW5nO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgLy8gZS5nLiBjZW50ZXJcbiAgICAgIHRleHRYID0gbm9kZVBvcy54O1xuICB9XG5cbiAgc3dpdGNoICh0ZXh0VmFsaWduKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIHRleHRZID0gbm9kZVBvcy55IC0gbm9kZUhlaWdodCAvIDIgLSBwYWRkaW5nO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgdGV4dFkgPSBub2RlUG9zLnkgKyBub2RlSGVpZ2h0IC8gMiArIHBhZGRpbmc7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBlLmcuIG1pZGRsZVxuICAgICAgdGV4dFkgPSBub2RlUG9zLnk7XG4gIH1cblxuICBycy5sYWJlbFggPSB0ZXh0WDtcbiAgcnMubGFiZWxZID0gdGV4dFk7XG4gIHJzdHlsZS5sYWJlbFggPSB0ZXh0WDtcbiAgcnN0eWxlLmxhYmVsWSA9IHRleHRZO1xuICB0aGlzLmNhbGN1bGF0ZUxhYmVsQW5nbGVzKG5vZGUpO1xuICB0aGlzLmFwcGx5TGFiZWxEaW1lbnNpb25zKG5vZGUpO1xufTtcblxudmFyIGxpbmVBbmdsZUZyb21EZWx0YSA9IGZ1bmN0aW9uIGxpbmVBbmdsZUZyb21EZWx0YShkeCwgZHkpIHtcbiAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuKGR5IC8gZHgpO1xuXG4gIGlmIChkeCA9PT0gMCAmJiBhbmdsZSA8IDApIHtcbiAgICBhbmdsZSA9IGFuZ2xlICogLTE7XG4gIH1cblxuICByZXR1cm4gYW5nbGU7XG59O1xuXG52YXIgbGluZUFuZ2xlID0gZnVuY3Rpb24gbGluZUFuZ2xlKHAwLCBwMSkge1xuICB2YXIgZHggPSBwMS54IC0gcDAueDtcbiAgdmFyIGR5ID0gcDEueSAtIHAwLnk7XG4gIHJldHVybiBsaW5lQW5nbGVGcm9tRGVsdGEoZHgsIGR5KTtcbn07XG5cbnZhciBiZXppZXJBbmdsZSA9IGZ1bmN0aW9uIGJlemllckFuZ2xlKHAwLCBwMSwgcDIsIHQpIHtcbiAgdmFyIHQwID0gYm91bmQoMCwgdCAtIDAuMDAxLCAxKTtcbiAgdmFyIHQxID0gYm91bmQoMCwgdCArIDAuMDAxLCAxKTtcbiAgdmFyIGxwMCA9IHFiZXppZXJQdEF0KHAwLCBwMSwgcDIsIHQwKTtcbiAgdmFyIGxwMSA9IHFiZXppZXJQdEF0KHAwLCBwMSwgcDIsIHQxKTtcbiAgcmV0dXJuIGxpbmVBbmdsZShscDAsIGxwMSk7XG59O1xuXG5CUnAkNi5yZWNhbGN1bGF0ZUVkZ2VMYWJlbFByb2plY3Rpb25zID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHA7XG4gIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBjb250ZW50ID0ge1xuICAgIG1pZDogZWRnZS5wc3R5bGUoJ2xhYmVsJykuc3RyVmFsdWUsXG4gICAgc291cmNlOiBlZGdlLnBzdHlsZSgnc291cmNlLWxhYmVsJykuc3RyVmFsdWUsXG4gICAgdGFyZ2V0OiBlZGdlLnBzdHlsZSgndGFyZ2V0LWxhYmVsJykuc3RyVmFsdWVcbiAgfTtcblxuICBpZiAoY29udGVudC5taWQgfHwgY29udGVudC5zb3VyY2UgfHwgY29udGVudC50YXJnZXQpIDsgZWxzZSB7XG4gICAgICByZXR1cm47IC8vIG5vIGxhYmVscyA9PiBubyBjYWxjc1xuICAgIH0gLy8gYWRkIGNlbnRlciBwb2ludCB0byBzdHlsZSBzbyBib3VuZGluZyBib3ggY2FsY3VsYXRpb25zIGNhbiB1c2UgaXRcbiAgLy9cblxuXG4gIHAgPSB7XG4gICAgeDogcnMubWlkWCxcbiAgICB5OiBycy5taWRZXG4gIH07XG5cbiAgdmFyIHNldFJzID0gZnVuY3Rpb24gc2V0UnMocHJvcE5hbWUsIHByZWZpeCwgdmFsdWUpIHtcbiAgICBzZXRQcmVmaXhlZFByb3BlcnR5KF9wLnJzY3JhdGNoLCBwcm9wTmFtZSwgcHJlZml4LCB2YWx1ZSk7XG4gICAgc2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc3R5bGUsIHByb3BOYW1lLCBwcmVmaXgsIHZhbHVlKTtcbiAgfTtcblxuICBzZXRScygnbGFiZWxYJywgbnVsbCwgcC54KTtcbiAgc2V0UnMoJ2xhYmVsWScsIG51bGwsIHAueSk7XG4gIHZhciBtaWRBbmdsZSA9IGxpbmVBbmdsZUZyb21EZWx0YShycy5taWREaXNwWCwgcnMubWlkRGlzcFkpO1xuICBzZXRScygnbGFiZWxBdXRvQW5nbGUnLCBudWxsLCBtaWRBbmdsZSk7XG5cbiAgdmFyIGNyZWF0ZUNvbnRyb2xQb2ludEluZm8gPSBmdW5jdGlvbiBjcmVhdGVDb250cm9sUG9pbnRJbmZvKCkge1xuICAgIGlmIChjcmVhdGVDb250cm9sUG9pbnRJbmZvLmNhY2hlKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29udHJvbFBvaW50SW5mby5jYWNoZTtcbiAgICB9IC8vIHVzZSBjYWNoZSBzbyBvbmx5IDF4IHBlciBlZGdlXG5cblxuICAgIHZhciBjdHJscHRzID0gW107IC8vIHN0b3JlIGVhY2ggY3RybHB0IGluZm8gaW5pdFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgKyA1IDwgcnMuYWxscHRzLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgICB2YXIgcDAgPSB7XG4gICAgICAgIHg6IHJzLmFsbHB0c1tpXSxcbiAgICAgICAgeTogcnMuYWxscHRzW2kgKyAxXVxuICAgICAgfTtcbiAgICAgIHZhciBwMSA9IHtcbiAgICAgICAgeDogcnMuYWxscHRzW2kgKyAyXSxcbiAgICAgICAgeTogcnMuYWxscHRzW2kgKyAzXVxuICAgICAgfTsgLy8gY3RybHB0XG5cbiAgICAgIHZhciBwMiA9IHtcbiAgICAgICAgeDogcnMuYWxscHRzW2kgKyA0XSxcbiAgICAgICAgeTogcnMuYWxscHRzW2kgKyA1XVxuICAgICAgfTtcbiAgICAgIGN0cmxwdHMucHVzaCh7XG4gICAgICAgIHAwOiBwMCxcbiAgICAgICAgcDE6IHAxLFxuICAgICAgICBwMjogcDIsXG4gICAgICAgIHN0YXJ0RGlzdDogMCxcbiAgICAgICAgbGVuZ3RoOiAwLFxuICAgICAgICBzZWdtZW50czogW11cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBicHRzID0gX3AucnN0eWxlLmJlemllclB0cztcbiAgICB2YXIgblByb2pzID0gci5iZXppZXJQcm9qUGN0cy5sZW5ndGg7XG5cbiAgICBmdW5jdGlvbiBhZGRTZWdtZW50KGNwLCBwMCwgcDEsIHQwLCB0MSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGRpc3QocDAsIHAxKTtcbiAgICAgIHZhciBwcmV2U2VnbWVudCA9IGNwLnNlZ21lbnRzW2NwLnNlZ21lbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgdmFyIHNlZ21lbnQgPSB7XG4gICAgICAgIHAwOiBwMCxcbiAgICAgICAgcDE6IHAxLFxuICAgICAgICB0MDogdDAsXG4gICAgICAgIHQxOiB0MSxcbiAgICAgICAgc3RhcnREaXN0OiBwcmV2U2VnbWVudCA/IHByZXZTZWdtZW50LnN0YXJ0RGlzdCArIHByZXZTZWdtZW50Lmxlbmd0aCA6IDAsXG4gICAgICAgIGxlbmd0aDogbGVuZ3RoXG4gICAgICB9O1xuICAgICAgY3Auc2VnbWVudHMucHVzaChzZWdtZW50KTtcbiAgICAgIGNwLmxlbmd0aCArPSBsZW5ndGg7XG4gICAgfSAvLyB1cGRhdGUgZWFjaCBjdHJscHQgd2l0aCBzZWdtZW50IGluZm9cblxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGN0cmxwdHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgY3AgPSBjdHJscHRzW19pXTtcbiAgICAgIHZhciBwcmV2Q3AgPSBjdHJscHRzW19pIC0gMV07XG5cbiAgICAgIGlmIChwcmV2Q3ApIHtcbiAgICAgICAgY3Auc3RhcnREaXN0ID0gcHJldkNwLnN0YXJ0RGlzdCArIHByZXZDcC5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIGFkZFNlZ21lbnQoY3AsIGNwLnAwLCBicHRzW19pICogblByb2pzXSwgMCwgci5iZXppZXJQcm9qUGN0c1swXSk7IC8vIGZpcnN0XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgblByb2pzIC0gMTsgaisrKSB7XG4gICAgICAgIGFkZFNlZ21lbnQoY3AsIGJwdHNbX2kgKiBuUHJvanMgKyBqXSwgYnB0c1tfaSAqIG5Qcm9qcyArIGogKyAxXSwgci5iZXppZXJQcm9qUGN0c1tqXSwgci5iZXppZXJQcm9qUGN0c1tqICsgMV0pO1xuICAgICAgfVxuXG4gICAgICBhZGRTZWdtZW50KGNwLCBicHRzW19pICogblByb2pzICsgblByb2pzIC0gMV0sIGNwLnAyLCByLmJlemllclByb2pQY3RzW25Qcm9qcyAtIDFdLCAxKTsgLy8gbGFzdFxuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVDb250cm9sUG9pbnRJbmZvLmNhY2hlID0gY3RybHB0cztcbiAgfTtcblxuICB2YXIgY2FsY3VsYXRlRW5kUHJvamVjdGlvbiA9IGZ1bmN0aW9uIGNhbGN1bGF0ZUVuZFByb2plY3Rpb24ocHJlZml4KSB7XG4gICAgdmFyIGFuZ2xlO1xuICAgIHZhciBpc1NyYyA9IHByZWZpeCA9PT0gJ3NvdXJjZSc7XG5cbiAgICBpZiAoIWNvbnRlbnRbcHJlZml4XSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBvZmZzZXQgPSBlZGdlLnBzdHlsZShwcmVmaXggKyAnLXRleHQtb2Zmc2V0JykucGZWYWx1ZTtcblxuICAgIHN3aXRjaCAocnMuZWRnZVR5cGUpIHtcbiAgICAgIGNhc2UgJ3NlbGYnOlxuICAgICAgY2FzZSAnY29tcG91bmQnOlxuICAgICAgY2FzZSAnYmV6aWVyJzpcbiAgICAgIGNhc2UgJ211bHRpYmV6aWVyJzpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBjcHMgPSBjcmVhdGVDb250cm9sUG9pbnRJbmZvKCk7XG4gICAgICAgICAgdmFyIHNlbGVjdGVkO1xuICAgICAgICAgIHZhciBzdGFydERpc3QgPSAwO1xuICAgICAgICAgIHZhciB0b3RhbERpc3QgPSAwOyAvLyBmaW5kIHRoZSBzZWdtZW50IHdlJ3JlIG9uXG5cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIF9jcCA9IGNwc1tpc1NyYyA/IGkgOiBjcHMubGVuZ3RoIC0gMSAtIGldO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IF9jcC5zZWdtZW50cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICB2YXIgX3NlZyA9IF9jcC5zZWdtZW50c1tpc1NyYyA/IGogOiBfY3Auc2VnbWVudHMubGVuZ3RoIC0gMSAtIGpdO1xuICAgICAgICAgICAgICB2YXIgbGFzdFNlZyA9IGkgPT09IGNwcy5sZW5ndGggLSAxICYmIGogPT09IF9jcC5zZWdtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICBzdGFydERpc3QgPSB0b3RhbERpc3Q7XG4gICAgICAgICAgICAgIHRvdGFsRGlzdCArPSBfc2VnLmxlbmd0aDtcblxuICAgICAgICAgICAgICBpZiAodG90YWxEaXN0ID49IG9mZnNldCB8fCBsYXN0U2VnKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB7XG4gICAgICAgICAgICAgICAgICBjcDogX2NwLFxuICAgICAgICAgICAgICAgICAgc2VnbWVudDogX3NlZ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBjcCA9IHNlbGVjdGVkLmNwO1xuICAgICAgICAgIHZhciBzZWcgPSBzZWxlY3RlZC5zZWdtZW50O1xuICAgICAgICAgIHZhciB0U2VnbWVudCA9IChvZmZzZXQgLSBzdGFydERpc3QpIC8gc2VnLmxlbmd0aDtcbiAgICAgICAgICB2YXIgc2VnRHQgPSBzZWcudDEgLSBzZWcudDA7XG4gICAgICAgICAgdmFyIHQgPSBpc1NyYyA/IHNlZy50MCArIHNlZ0R0ICogdFNlZ21lbnQgOiBzZWcudDEgLSBzZWdEdCAqIHRTZWdtZW50O1xuICAgICAgICAgIHQgPSBib3VuZCgwLCB0LCAxKTtcbiAgICAgICAgICBwID0gcWJlemllclB0QXQoY3AucDAsIGNwLnAxLCBjcC5wMiwgdCk7XG4gICAgICAgICAgYW5nbGUgPSBiZXppZXJBbmdsZShjcC5wMCwgY3AucDEsIGNwLnAyLCB0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlICdzdHJhaWdodCc6XG4gICAgICBjYXNlICdzZWdtZW50cyc6XG4gICAgICBjYXNlICdoYXlzdGFjayc6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgZCA9IDAsXG4gICAgICAgICAgICAgIGRpLFxuICAgICAgICAgICAgICBkMDtcbiAgICAgICAgICB2YXIgcDAsIHAxO1xuICAgICAgICAgIHZhciBsID0gcnMuYWxscHRzLmxlbmd0aDtcblxuICAgICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiArIDMgPCBsOyBfaTIgKz0gMikge1xuICAgICAgICAgICAgaWYgKGlzU3JjKSB7XG4gICAgICAgICAgICAgIHAwID0ge1xuICAgICAgICAgICAgICAgIHg6IHJzLmFsbHB0c1tfaTJdLFxuICAgICAgICAgICAgICAgIHk6IHJzLmFsbHB0c1tfaTIgKyAxXVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBwMSA9IHtcbiAgICAgICAgICAgICAgICB4OiBycy5hbGxwdHNbX2kyICsgMl0sXG4gICAgICAgICAgICAgICAgeTogcnMuYWxscHRzW19pMiArIDNdXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwMCA9IHtcbiAgICAgICAgICAgICAgICB4OiBycy5hbGxwdHNbbCAtIDIgLSBfaTJdLFxuICAgICAgICAgICAgICAgIHk6IHJzLmFsbHB0c1tsIC0gMSAtIF9pMl1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcDEgPSB7XG4gICAgICAgICAgICAgICAgeDogcnMuYWxscHRzW2wgLSA0IC0gX2kyXSxcbiAgICAgICAgICAgICAgICB5OiBycy5hbGxwdHNbbCAtIDMgLSBfaTJdXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRpID0gZGlzdChwMCwgcDEpO1xuICAgICAgICAgICAgZDAgPSBkO1xuICAgICAgICAgICAgZCArPSBkaTtcblxuICAgICAgICAgICAgaWYgKGQgPj0gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBwRCA9IG9mZnNldCAtIGQwO1xuXG4gICAgICAgICAgdmFyIF90ID0gcEQgLyBkaTtcblxuICAgICAgICAgIF90ID0gYm91bmQoMCwgX3QsIDEpO1xuICAgICAgICAgIHAgPSBsaW5lQXQocDAsIHAxLCBfdCk7XG4gICAgICAgICAgYW5nbGUgPSBsaW5lQW5nbGUocDAsIHAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFJzKCdsYWJlbFgnLCBwcmVmaXgsIHAueCk7XG4gICAgc2V0UnMoJ2xhYmVsWScsIHByZWZpeCwgcC55KTtcbiAgICBzZXRScygnbGFiZWxBdXRvQW5nbGUnLCBwcmVmaXgsIGFuZ2xlKTtcbiAgfTtcblxuICBjYWxjdWxhdGVFbmRQcm9qZWN0aW9uKCdzb3VyY2UnKTtcbiAgY2FsY3VsYXRlRW5kUHJvamVjdGlvbigndGFyZ2V0Jyk7XG4gIHRoaXMuYXBwbHlMYWJlbERpbWVuc2lvbnMoZWRnZSk7XG59O1xuXG5CUnAkNi5hcHBseUxhYmVsRGltZW5zaW9ucyA9IGZ1bmN0aW9uIChlbGUpIHtcbiAgdGhpcy5hcHBseVByZWZpeGVkTGFiZWxEaW1lbnNpb25zKGVsZSk7XG5cbiAgaWYgKGVsZS5pc0VkZ2UoKSkge1xuICAgIHRoaXMuYXBwbHlQcmVmaXhlZExhYmVsRGltZW5zaW9ucyhlbGUsICdzb3VyY2UnKTtcbiAgICB0aGlzLmFwcGx5UHJlZml4ZWRMYWJlbERpbWVuc2lvbnMoZWxlLCAndGFyZ2V0Jyk7XG4gIH1cbn07XG5cbkJScCQ2LmFwcGx5UHJlZml4ZWRMYWJlbERpbWVuc2lvbnMgPSBmdW5jdGlvbiAoZWxlLCBwcmVmaXgpIHtcbiAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICB2YXIgdGV4dCA9IHRoaXMuZ2V0TGFiZWxUZXh0KGVsZSwgcHJlZml4KTtcbiAgdmFyIGxhYmVsRGltcyA9IHRoaXMuY2FsY3VsYXRlTGFiZWxEaW1lbnNpb25zKGVsZSwgdGV4dCk7XG4gIHZhciBsaW5lSGVpZ2h0ID0gZWxlLnBzdHlsZSgnbGluZS1oZWlnaHQnKS5wZlZhbHVlO1xuICB2YXIgdGV4dFdyYXAgPSBlbGUucHN0eWxlKCd0ZXh0LXdyYXAnKS5zdHJWYWx1ZTtcbiAgdmFyIGxpbmVzID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc2NyYXRjaCwgJ2xhYmVsV3JhcENhY2hlZExpbmVzJywgcHJlZml4KSB8fCBbXTtcbiAgdmFyIG51bUxpbmVzID0gdGV4dFdyYXAgIT09ICd3cmFwJyA/IDEgOiBNYXRoLm1heChsaW5lcy5sZW5ndGgsIDEpO1xuICB2YXIgbm9ybVBlckxpbmVIZWlnaHQgPSBsYWJlbERpbXMuaGVpZ2h0IC8gbnVtTGluZXM7XG4gIHZhciBsYWJlbExpbmVIZWlnaHQgPSBub3JtUGVyTGluZUhlaWdodCAqIGxpbmVIZWlnaHQ7XG4gIHZhciB3aWR0aCA9IGxhYmVsRGltcy53aWR0aDtcbiAgdmFyIGhlaWdodCA9IGxhYmVsRGltcy5oZWlnaHQgKyAobnVtTGluZXMgLSAxKSAqIChsaW5lSGVpZ2h0IC0gMSkgKiBub3JtUGVyTGluZUhlaWdodDtcbiAgc2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc3R5bGUsICdsYWJlbFdpZHRoJywgcHJlZml4LCB3aWR0aCk7XG4gIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnNjcmF0Y2gsICdsYWJlbFdpZHRoJywgcHJlZml4LCB3aWR0aCk7XG4gIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnN0eWxlLCAnbGFiZWxIZWlnaHQnLCBwcmVmaXgsIGhlaWdodCk7XG4gIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnNjcmF0Y2gsICdsYWJlbEhlaWdodCcsIHByZWZpeCwgaGVpZ2h0KTtcbiAgc2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc2NyYXRjaCwgJ2xhYmVsTGluZUhlaWdodCcsIHByZWZpeCwgbGFiZWxMaW5lSGVpZ2h0KTtcbn07XG5cbkJScCQ2LmdldExhYmVsVGV4dCA9IGZ1bmN0aW9uIChlbGUsIHByZWZpeCkge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBwZmQgPSBwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJztcbiAgdmFyIHRleHQgPSBlbGUucHN0eWxlKHBmZCArICdsYWJlbCcpLnN0clZhbHVlO1xuICB2YXIgdGV4dFRyYW5zZm9ybSA9IGVsZS5wc3R5bGUoJ3RleHQtdHJhbnNmb3JtJykudmFsdWU7XG5cbiAgdmFyIHJzY3JhdGNoID0gZnVuY3Rpb24gcnNjcmF0Y2gocHJvcE5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBzZXRQcmVmaXhlZFByb3BlcnR5KF9wLnJzY3JhdGNoLCBwcm9wTmFtZSwgcHJlZml4LCB2YWx1ZSk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBnZXRQcmVmaXhlZFByb3BlcnR5KF9wLnJzY3JhdGNoLCBwcm9wTmFtZSwgcHJlZml4KTtcbiAgICB9XG4gIH07IC8vIGZvciBlbXB0eSB0ZXh0LCBza2lwIGFsbCBwcm9jZXNzaW5nXG5cblxuICBpZiAoIXRleHQpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZiAodGV4dFRyYW5zZm9ybSA9PSAnbm9uZScpIDsgZWxzZSBpZiAodGV4dFRyYW5zZm9ybSA9PSAndXBwZXJjYXNlJykge1xuICAgIHRleHQgPSB0ZXh0LnRvVXBwZXJDYXNlKCk7XG4gIH0gZWxzZSBpZiAodGV4dFRyYW5zZm9ybSA9PSAnbG93ZXJjYXNlJykge1xuICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICB2YXIgd3JhcFN0eWxlID0gZWxlLnBzdHlsZSgndGV4dC13cmFwJykudmFsdWU7XG5cbiAgaWYgKHdyYXBTdHlsZSA9PT0gJ3dyYXAnKSB7XG4gICAgdmFyIGxhYmVsS2V5ID0gcnNjcmF0Y2goJ2xhYmVsS2V5Jyk7IC8vIHNhdmUgcmVjYWxjIGlmIHRoZSBsYWJlbCBpcyB0aGUgc2FtZSBhcyBiZWZvcmVcblxuICAgIGlmIChsYWJlbEtleSAhPSBudWxsICYmIHJzY3JhdGNoKCdsYWJlbFdyYXBLZXknKSA9PT0gbGFiZWxLZXkpIHtcbiAgICAgIHJldHVybiByc2NyYXRjaCgnbGFiZWxXcmFwQ2FjaGVkVGV4dCcpO1xuICAgIH1cblxuICAgIHZhciB6d3NwID0gXCJcXHUyMDBCXCI7XG4gICAgdmFyIGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgdmFyIG1heFcgPSBlbGUucHN0eWxlKCd0ZXh0LW1heC13aWR0aCcpLnBmVmFsdWU7XG4gICAgdmFyIG92ZXJmbG93ID0gZWxlLnBzdHlsZSgndGV4dC1vdmVyZmxvdy13cmFwJykudmFsdWU7XG4gICAgdmFyIG92ZXJmbG93QW55ID0gb3ZlcmZsb3cgPT09ICdhbnl3aGVyZSc7XG4gICAgdmFyIHdyYXBwZWRMaW5lcyA9IFtdO1xuICAgIHZhciB3b3Jkc1JlZ2V4ID0gL1tcXHNcXHUyMDBiXSsvO1xuICAgIHZhciB3b3JkU2VwYXJhdG9yID0gb3ZlcmZsb3dBbnkgPyAnJyA6ICcgJztcblxuICAgIGZvciAodmFyIGwgPSAwOyBsIDwgbGluZXMubGVuZ3RoOyBsKyspIHtcbiAgICAgIHZhciBsaW5lID0gbGluZXNbbF07XG4gICAgICB2YXIgbGluZURpbXMgPSB0aGlzLmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyhlbGUsIGxpbmUpO1xuICAgICAgdmFyIGxpbmVXID0gbGluZURpbXMud2lkdGg7XG5cbiAgICAgIGlmIChvdmVyZmxvd0FueSkge1xuICAgICAgICB2YXIgcHJvY2Vzc2VkTGluZSA9IGxpbmUuc3BsaXQoJycpLmpvaW4oendzcCk7XG4gICAgICAgIGxpbmUgPSBwcm9jZXNzZWRMaW5lO1xuICAgICAgfVxuXG4gICAgICBpZiAobGluZVcgPiBtYXhXKSB7XG4gICAgICAgIC8vIGxpbmUgaXMgdG9vIGxvbmdcbiAgICAgICAgdmFyIHdvcmRzID0gbGluZS5zcGxpdCh3b3Jkc1JlZ2V4KTtcbiAgICAgICAgdmFyIHN1YmxpbmUgPSAnJztcblxuICAgICAgICBmb3IgKHZhciB3ID0gMDsgdyA8IHdvcmRzLmxlbmd0aDsgdysrKSB7XG4gICAgICAgICAgdmFyIHdvcmQgPSB3b3Jkc1t3XTtcbiAgICAgICAgICB2YXIgdGVzdExpbmUgPSBzdWJsaW5lLmxlbmd0aCA9PT0gMCA/IHdvcmQgOiBzdWJsaW5lICsgd29yZFNlcGFyYXRvciArIHdvcmQ7XG4gICAgICAgICAgdmFyIHRlc3REaW1zID0gdGhpcy5jYWxjdWxhdGVMYWJlbERpbWVuc2lvbnMoZWxlLCB0ZXN0TGluZSk7XG4gICAgICAgICAgdmFyIHRlc3RXID0gdGVzdERpbXMud2lkdGg7XG5cbiAgICAgICAgICBpZiAodGVzdFcgPD0gbWF4Vykge1xuICAgICAgICAgICAgLy8gd29yZCBmaXRzIG9uIGN1cnJlbnQgbGluZVxuICAgICAgICAgICAgc3VibGluZSArPSB3b3JkICsgd29yZFNlcGFyYXRvcjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd29yZCBzdGFydHMgbmV3IGxpbmVcbiAgICAgICAgICAgIGlmIChzdWJsaW5lKSB7XG4gICAgICAgICAgICAgIHdyYXBwZWRMaW5lcy5wdXNoKHN1YmxpbmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWJsaW5lID0gd29yZCArIHdvcmRTZXBhcmF0b3I7XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIGlmIHRoZXJlJ3MgcmVtYWluaW5nIHRleHQsIHB1dCBpdCBpbiBhIHdyYXBwZWQgbGluZVxuXG5cbiAgICAgICAgaWYgKCFzdWJsaW5lLm1hdGNoKC9eW1xcc1xcdTIwMGJdKyQvKSkge1xuICAgICAgICAgIHdyYXBwZWRMaW5lcy5wdXNoKHN1YmxpbmUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBsaW5lIGlzIGFscmVhZHkgc2hvcnQgZW5vdWdoXG4gICAgICAgIHdyYXBwZWRMaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgfVxuICAgIH0gLy8gZm9yXG5cblxuICAgIHJzY3JhdGNoKCdsYWJlbFdyYXBDYWNoZWRMaW5lcycsIHdyYXBwZWRMaW5lcyk7XG4gICAgdGV4dCA9IHJzY3JhdGNoKCdsYWJlbFdyYXBDYWNoZWRUZXh0Jywgd3JhcHBlZExpbmVzLmpvaW4oJ1xcbicpKTtcbiAgICByc2NyYXRjaCgnbGFiZWxXcmFwS2V5JywgbGFiZWxLZXkpO1xuICB9IGVsc2UgaWYgKHdyYXBTdHlsZSA9PT0gJ2VsbGlwc2lzJykge1xuICAgIHZhciBfbWF4VyA9IGVsZS5wc3R5bGUoJ3RleHQtbWF4LXdpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgZWxsaXBzaXplZCA9ICcnO1xuICAgIHZhciBlbGxpcHNpcyA9IFwiXFx1MjAyNlwiO1xuICAgIHZhciBpbmNMYXN0Q2ggPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyhlbGUsIHRleHQpLndpZHRoIDwgX21heFcpIHtcbiAgICAgIC8vIHRoZSBsYWJlbCBhbHJlYWR5IGZpdHNcbiAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdpZHRoV2l0aE5leHRDaCA9IHRoaXMuY2FsY3VsYXRlTGFiZWxEaW1lbnNpb25zKGVsZSwgZWxsaXBzaXplZCArIHRleHRbaV0gKyBlbGxpcHNpcykud2lkdGg7XG5cbiAgICAgIGlmICh3aWR0aFdpdGhOZXh0Q2ggPiBfbWF4Vykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZWxsaXBzaXplZCArPSB0ZXh0W2ldO1xuXG4gICAgICBpZiAoaSA9PT0gdGV4dC5sZW5ndGggLSAxKSB7XG4gICAgICAgIGluY0xhc3RDaCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpbmNMYXN0Q2gpIHtcbiAgICAgIGVsbGlwc2l6ZWQgKz0gZWxsaXBzaXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsbGlwc2l6ZWQ7XG4gIH0gLy8gaWYgZWxsaXBzaXplXG5cblxuICByZXR1cm4gdGV4dDtcbn07XG5cbkJScCQ2LmdldExhYmVsSnVzdGlmaWNhdGlvbiA9IGZ1bmN0aW9uIChlbGUpIHtcbiAgdmFyIGp1c3RpZmljYXRpb24gPSBlbGUucHN0eWxlKCd0ZXh0LWp1c3RpZmljYXRpb24nKS5zdHJWYWx1ZTtcbiAgdmFyIHRleHRIYWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LWhhbGlnbicpLnN0clZhbHVlO1xuXG4gIGlmIChqdXN0aWZpY2F0aW9uID09PSAnYXV0bycpIHtcbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICBzd2l0Y2ggKHRleHRIYWxpZ24pIHtcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgcmV0dXJuICdyaWdodCc7XG5cbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIHJldHVybiAnbGVmdCc7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJ2NlbnRlcic7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnY2VudGVyJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGp1c3RpZmljYXRpb247XG4gIH1cbn07XG5cbkJScCQ2LmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyA9IGZ1bmN0aW9uIChlbGUsIHRleHQpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgY2FjaGVLZXkgPSBoYXNoU3RyaW5nKHRleHQsIGVsZS5fcHJpdmF0ZS5sYWJlbERpbXNLZXkpO1xuICB2YXIgY2FjaGUgPSByLmxhYmVsRGltQ2FjaGUgfHwgKHIubGFiZWxEaW1DYWNoZSA9IFtdKTtcbiAgdmFyIGV4aXN0aW5nVmFsID0gY2FjaGVbY2FjaGVLZXldO1xuXG4gIGlmIChleGlzdGluZ1ZhbCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nVmFsO1xuICB9XG5cbiAgdmFyIHBhZGRpbmcgPSAwOyAvLyBhZGQgcGFkZGluZyBhcm91bmQgdGV4dCBkaW1zLCBhcyB0aGUgbWVhc3VyZW1lbnQgaXNuJ3QgdGhhdCBhY2N1cmF0ZVxuXG4gIHZhciBmU3R5bGUgPSBlbGUucHN0eWxlKCdmb250LXN0eWxlJykuc3RyVmFsdWU7XG4gIHZhciBzaXplID0gZWxlLnBzdHlsZSgnZm9udC1zaXplJykucGZWYWx1ZTtcbiAgdmFyIGZhbWlseSA9IGVsZS5wc3R5bGUoJ2ZvbnQtZmFtaWx5Jykuc3RyVmFsdWU7XG4gIHZhciB3ZWlnaHQgPSBlbGUucHN0eWxlKCdmb250LXdlaWdodCcpLnN0clZhbHVlO1xuICB2YXIgY2FudmFzID0gdGhpcy5sYWJlbENhbGNDYW52YXM7XG4gIHZhciBjMmQgPSB0aGlzLmxhYmVsQ2FsY0NhbnZhc0NvbnRleHQ7XG5cbiAgaWYgKCFjYW52YXMpIHtcbiAgICBjYW52YXMgPSB0aGlzLmxhYmVsQ2FsY0NhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGMyZCA9IHRoaXMubGFiZWxDYWxjQ2FudmFzQ29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIHZhciBkcyA9IGNhbnZhcy5zdHlsZTtcbiAgICBkcy5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgZHMubGVmdCA9ICctOTk5OXB4JztcbiAgICBkcy50b3AgPSAnLTk5OTlweCc7XG4gICAgZHMuekluZGV4ID0gJy0xJztcbiAgICBkcy52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgZHMucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgfVxuXG4gIGMyZC5mb250ID0gXCJcIi5jb25jYXQoZlN0eWxlLCBcIiBcIikuY29uY2F0KHdlaWdodCwgXCIgXCIpLmNvbmNhdChzaXplLCBcInB4IFwiKS5jb25jYXQoZmFtaWx5KTtcbiAgdmFyIHdpZHRoID0gMDtcbiAgdmFyIGhlaWdodCA9IDA7XG4gIHZhciBsaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbGluZSA9IGxpbmVzW2ldO1xuICAgIHZhciBtZXRyaWNzID0gYzJkLm1lYXN1cmVUZXh0KGxpbmUpO1xuICAgIHZhciB3ID0gTWF0aC5jZWlsKG1ldHJpY3Mud2lkdGgpO1xuICAgIHZhciBoID0gc2l6ZTtcbiAgICB3aWR0aCA9IE1hdGgubWF4KHcsIHdpZHRoKTtcbiAgICBoZWlnaHQgKz0gaDtcbiAgfVxuXG4gIHdpZHRoICs9IHBhZGRpbmc7XG4gIGhlaWdodCArPSBwYWRkaW5nO1xuICByZXR1cm4gY2FjaGVbY2FjaGVLZXldID0ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufTtcblxuQlJwJDYuY2FsY3VsYXRlTGFiZWxBbmdsZSA9IGZ1bmN0aW9uIChlbGUsIHByZWZpeCkge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICB2YXIgaXNFZGdlID0gZWxlLmlzRWRnZSgpO1xuICB2YXIgcHJlZml4RGFzaCA9IHByZWZpeCA/IHByZWZpeCArICctJyA6ICcnO1xuICB2YXIgcm90ID0gZWxlLnBzdHlsZShwcmVmaXhEYXNoICsgJ3RleHQtcm90YXRpb24nKTtcbiAgdmFyIHJvdFN0ciA9IHJvdC5zdHJWYWx1ZTtcblxuICBpZiAocm90U3RyID09PSAnbm9uZScpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIGlmIChpc0VkZ2UgJiYgcm90U3RyID09PSAnYXV0b3JvdGF0ZScpIHtcbiAgICByZXR1cm4gcnMubGFiZWxBdXRvQW5nbGU7XG4gIH0gZWxzZSBpZiAocm90U3RyID09PSAnYXV0b3JvdGF0ZScpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcm90LnBmVmFsdWU7XG4gIH1cbn07XG5cbkJScCQ2LmNhbGN1bGF0ZUxhYmVsQW5nbGVzID0gZnVuY3Rpb24gKGVsZSkge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBpc0VkZ2UgPSBlbGUuaXNFZGdlKCk7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgdmFyIHJzID0gX3AucnNjcmF0Y2g7XG4gIHJzLmxhYmVsQW5nbGUgPSByLmNhbGN1bGF0ZUxhYmVsQW5nbGUoZWxlKTtcblxuICBpZiAoaXNFZGdlKSB7XG4gICAgcnMuc291cmNlTGFiZWxBbmdsZSA9IHIuY2FsY3VsYXRlTGFiZWxBbmdsZShlbGUsICdzb3VyY2UnKTtcbiAgICBycy50YXJnZXRMYWJlbEFuZ2xlID0gci5jYWxjdWxhdGVMYWJlbEFuZ2xlKGVsZSwgJ3RhcmdldCcpO1xuICB9XG59O1xuXG52YXIgQlJwJDcgPSB7fTtcbnZhciBUT09fU01BTExfQ1VUX1JFQ1QgPSAyODtcbnZhciB3YXJuZWRDdXRSZWN0ID0gZmFsc2U7XG5cbkJScCQ3LmdldE5vZGVTaGFwZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIHNoYXBlID0gbm9kZS5wc3R5bGUoJ3NoYXBlJykudmFsdWU7XG5cbiAgaWYgKHNoYXBlID09PSAnY3V0cmVjdGFuZ2xlJyAmJiAobm9kZS53aWR0aCgpIDwgVE9PX1NNQUxMX0NVVF9SRUNUIHx8IG5vZGUuaGVpZ2h0KCkgPCBUT09fU01BTExfQ1VUX1JFQ1QpKSB7XG4gICAgaWYgKCF3YXJuZWRDdXRSZWN0KSB7XG4gICAgICB3YXJuKCdUaGUgYGN1dHJlY3RhbmdsZWAgbm9kZSBzaGFwZSBjYW4gbm90IGJlIHVzZWQgYXQgc21hbGwgc2l6ZXMgc28gYHJlY3RhbmdsZWAgaXMgdXNlZCBpbnN0ZWFkJyk7XG4gICAgICB3YXJuZWRDdXRSZWN0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gJ3JlY3RhbmdsZSc7XG4gIH1cblxuICBpZiAobm9kZS5pc1BhcmVudCgpKSB7XG4gICAgaWYgKHNoYXBlID09PSAncmVjdGFuZ2xlJyB8fCBzaGFwZSA9PT0gJ3JvdW5kcmVjdGFuZ2xlJyB8fCBzaGFwZSA9PT0gJ3JvdW5kLXJlY3RhbmdsZScgfHwgc2hhcGUgPT09ICdjdXRyZWN0YW5nbGUnIHx8IHNoYXBlID09PSAnY3V0LXJlY3RhbmdsZScgfHwgc2hhcGUgPT09ICdiYXJyZWwnKSB7XG4gICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAncmVjdGFuZ2xlJztcbiAgICB9XG4gIH1cblxuICBpZiAoc2hhcGUgPT09ICdwb2x5Z29uJykge1xuICAgIHZhciBwb2ludHMgPSBub2RlLnBzdHlsZSgnc2hhcGUtcG9seWdvbi1wb2ludHMnKS52YWx1ZTtcbiAgICByZXR1cm4gci5ub2RlU2hhcGVzLm1ha2VQb2x5Z29uKHBvaW50cykubmFtZTtcbiAgfVxuXG4gIHJldHVybiBzaGFwZTtcbn07XG5cbnZhciBCUnAkOCA9IHt9O1xuXG5CUnAkOC5yZWdpc3RlckNhbGN1bGF0aW9uTGlzdGVuZXJzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY3kgPSB0aGlzLmN5O1xuICB2YXIgZWxlc1RvVXBkYXRlID0gY3kuY29sbGVjdGlvbigpO1xuICB2YXIgciA9IHRoaXM7XG5cbiAgdmFyIGVucXVldWUgPSBmdW5jdGlvbiBlbnF1ZXVlKGVsZXMpIHtcbiAgICB2YXIgZGlydHlTdHlsZUNhY2hlcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgICBlbGVzVG9VcGRhdGUubWVyZ2UoZWxlcyk7XG5cbiAgICBpZiAoZGlydHlTdHlsZUNhY2hlcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgICAgIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG4gICAgICAgIHJzdHlsZS5jbGVhbiA9IGZhbHNlO1xuICAgICAgICByc3R5bGUuY2xlYW5Db25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgci5iaW5kZXIoY3kpLm9uKCdib3VuZHMuKiBkaXJ0eS4qJywgZnVuY3Rpb24gb25EaXJ0eUJvdW5kcyhlKSB7XG4gICAgdmFyIGVsZSA9IGUudGFyZ2V0O1xuICAgIGVucXVldWUoZWxlKTtcbiAgfSkub24oJ3N0eWxlLiogYmFja2dyb3VuZC4qJywgZnVuY3Rpb24gb25EaXJ0eVN0eWxlKGUpIHtcbiAgICB2YXIgZWxlID0gZS50YXJnZXQ7XG4gICAgZW5xdWV1ZShlbGUsIGZhbHNlKTtcbiAgfSk7XG5cbiAgdmFyIHVwZGF0ZUVsZUNhbGNzID0gZnVuY3Rpb24gdXBkYXRlRWxlQ2FsY3Mod2lsbERyYXcpIHtcbiAgICBpZiAod2lsbERyYXcpIHtcbiAgICAgIHZhciBmbnMgPSByLm9uVXBkYXRlRWxlQ2FsY3NGbnM7IC8vIGJlY2F1c2Ugd2UgbmVlZCB0byBoYXZlIHVwLXRvLWRhdGUgc3R5bGUgKGUuZy4gc3R5bGVzaGVldCBtYXBwZXJzKVxuICAgICAgLy8gYmVmb3JlIGNhbGN1bGF0aW5nIHJlbmRlcmVkIHN0eWxlIChhbmQgcHN0eWxlIG1pZ2h0IG5vdCBiZSBjYWxsZWQgeWV0KVxuXG4gICAgICBlbGVzVG9VcGRhdGUuY2xlYW5TdHlsZSgpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXNUb1VwZGF0ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1RvVXBkYXRlW2ldO1xuICAgICAgICB2YXIgcnN0eWxlID0gZWxlLl9wcml2YXRlLnJzdHlsZTtcblxuICAgICAgICBpZiAoZWxlLmlzTm9kZSgpICYmICFyc3R5bGUuY2xlYW5Db25uZWN0ZWQpIHtcbiAgICAgICAgICBlbnF1ZXVlKGVsZS5jb25uZWN0ZWRFZGdlcygpKTtcbiAgICAgICAgICByc3R5bGUuY2xlYW5Db25uZWN0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmbnMpIHtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGZucy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICB2YXIgZm4gPSBmbnNbX2ldO1xuICAgICAgICAgIGZuKHdpbGxEcmF3LCBlbGVzVG9VcGRhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHIucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKGVsZXNUb1VwZGF0ZSk7XG4gICAgICBlbGVzVG9VcGRhdGUgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9O1xuXG4gIHIuZmx1c2hSZW5kZXJlZFN0eWxlUXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdXBkYXRlRWxlQ2FsY3ModHJ1ZSk7XG4gIH07XG5cbiAgci5iZWZvcmVSZW5kZXIodXBkYXRlRWxlQ2FsY3MsIHIuYmVmb3JlUmVuZGVyUHJpb3JpdGllcy5lbGVDYWxjcyk7XG59O1xuXG5CUnAkOC5vblVwZGF0ZUVsZUNhbGNzID0gZnVuY3Rpb24gKGZuKSB7XG4gIHZhciBmbnMgPSB0aGlzLm9uVXBkYXRlRWxlQ2FsY3NGbnMgPSB0aGlzLm9uVXBkYXRlRWxlQ2FsY3NGbnMgfHwgW107XG4gIGZucy5wdXNoKGZuKTtcbn07XG5cbkJScCQ4LnJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZSA9IGZ1bmN0aW9uIChlbGVzLCB1c2VDYWNoZSkge1xuICB2YXIgaXNDbGVhbkNvbm5lY3RlZCA9IGZ1bmN0aW9uIGlzQ2xlYW5Db25uZWN0ZWQoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5fcHJpdmF0ZS5yc3R5bGUuY2xlYW5Db25uZWN0ZWQ7XG4gIH07XG5cbiAgdmFyIGVkZ2VzID0gW107XG4gIHZhciBub2RlcyA9IFtdOyAvLyB0aGUgcmVuZGVyZXIgY2FuJ3QgYmUgdXNlZCBmb3IgY2FsY3Mgd2hlbiBkZXN0cm95ZWQsIGUuZy4gZWxlLmJvdW5kaW5nQm94KClcblxuICBpZiAodGhpcy5kZXN0cm95ZWQpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gdXNlIGNhY2hlIGJ5IGRlZmF1bHQgZm9yIHBlcmZcblxuXG4gIGlmICh1c2VDYWNoZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdXNlQ2FjaGUgPSB0cnVlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7IC8vIGFuIGVkZ2UgbWF5IGJlIGltcGxpY2l0bHkgZGlydHkgYi9jIG9mIG9uZSBvZiBpdHMgY29ubmVjdGVkIG5vZGVzXG4gICAgLy8gKGFuZCBhIHJlcXVlc3QgZm9yIHJlY2FsYyBtYXkgY29tZSBpbiBiZXR3ZWVuIGZyYW1lcylcblxuICAgIGlmIChlbGUuaXNFZGdlKCkgJiYgKCFpc0NsZWFuQ29ubmVjdGVkKGVsZS5zb3VyY2UoKSkgfHwgIWlzQ2xlYW5Db25uZWN0ZWQoZWxlLnRhcmdldCgpKSkpIHtcbiAgICAgIHJzdHlsZS5jbGVhbiA9IGZhbHNlO1xuICAgIH0gLy8gb25seSB1cGRhdGUgaWYgZGlydHkgYW5kIGluIGdyYXBoXG5cblxuICAgIGlmICh1c2VDYWNoZSAmJiByc3R5bGUuY2xlYW4gfHwgZWxlLnJlbW92ZWQoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBvbmx5IHVwZGF0ZSBpZiBub3QgZGlzcGxheTogbm9uZVxuXG5cbiAgICBpZiAoZWxlLnBzdHlsZSgnZGlzcGxheScpLnZhbHVlID09PSAnbm9uZScpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChfcC5ncm91cCA9PT0gJ25vZGVzJykge1xuICAgICAgbm9kZXMucHVzaChlbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlZGdlc1xuICAgICAgZWRnZXMucHVzaChlbGUpO1xuICAgIH1cblxuICAgIHJzdHlsZS5jbGVhbiA9IHRydWU7XG4gIH0gLy8gdXBkYXRlIG5vZGUgZGF0YSBmcm9tIHByb2plY3Rpb25zXG5cblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBub2Rlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIF9lbGUgPSBub2Rlc1tfaTJdO1xuICAgIHZhciBfcDIgPSBfZWxlLl9wcml2YXRlO1xuICAgIHZhciBfcnN0eWxlID0gX3AyLnJzdHlsZTtcblxuICAgIHZhciBwb3MgPSBfZWxlLnBvc2l0aW9uKCk7XG5cbiAgICB0aGlzLnJlY2FsY3VsYXRlTm9kZUxhYmVsUHJvamVjdGlvbihfZWxlKTtcbiAgICBfcnN0eWxlLm5vZGVYID0gcG9zLng7XG4gICAgX3JzdHlsZS5ub2RlWSA9IHBvcy55O1xuICAgIF9yc3R5bGUubm9kZVcgPSBfZWxlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuICAgIF9yc3R5bGUubm9kZUggPSBfZWxlLnBzdHlsZSgnaGVpZ2h0JykucGZWYWx1ZTtcbiAgfVxuXG4gIHRoaXMucmVjYWxjdWxhdGVFZGdlUHJvamVjdGlvbnMoZWRnZXMpOyAvLyB1cGRhdGUgZWRnZSBkYXRhIGZyb20gcHJvamVjdGlvbnNcblxuICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBlZGdlcy5sZW5ndGg7IF9pMysrKSB7XG4gICAgdmFyIF9lbGUyID0gZWRnZXNbX2kzXTtcbiAgICB2YXIgX3AzID0gX2VsZTIuX3ByaXZhdGU7XG4gICAgdmFyIF9yc3R5bGUyID0gX3AzLnJzdHlsZTtcbiAgICB2YXIgcnMgPSBfcDMucnNjcmF0Y2g7IC8vIHVwZGF0ZSByc3R5bGUgcG9zaXRpb25zXG5cbiAgICBfcnN0eWxlMi5zcmNYID0gcnMuYXJyb3dTdGFydFg7XG4gICAgX3JzdHlsZTIuc3JjWSA9IHJzLmFycm93U3RhcnRZO1xuICAgIF9yc3R5bGUyLnRndFggPSBycy5hcnJvd0VuZFg7XG4gICAgX3JzdHlsZTIudGd0WSA9IHJzLmFycm93RW5kWTtcbiAgICBfcnN0eWxlMi5taWRYID0gcnMubWlkWDtcbiAgICBfcnN0eWxlMi5taWRZID0gcnMubWlkWTtcbiAgICBfcnN0eWxlMi5sYWJlbEFuZ2xlID0gcnMubGFiZWxBbmdsZTtcbiAgICBfcnN0eWxlMi5zb3VyY2VMYWJlbEFuZ2xlID0gcnMuc291cmNlTGFiZWxBbmdsZTtcbiAgICBfcnN0eWxlMi50YXJnZXRMYWJlbEFuZ2xlID0gcnMudGFyZ2V0TGFiZWxBbmdsZTtcbiAgfVxufTtcblxudmFyIEJScCQ5ID0ge307XG5cbkJScCQ5LnVwZGF0ZUNhY2hlZEdyYWJiZWRFbGVzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlcyA9IHRoaXMuY2FjaGVkWlNvcnRlZEVsZXM7XG5cbiAgaWYgKCFlbGVzKSB7XG4gICAgLy8ganVzdCBsZXQgdGhpcyBiZSByZWNhbGN1bGF0ZWQgb24gdGhlIG5leHQgeiBzb3J0IHRpY2tcbiAgICByZXR1cm47XG4gIH1cblxuICBlbGVzLmRyYWcgPSBbXTtcbiAgZWxlcy5ub25kcmFnID0gW107XG4gIHZhciBncmFiVGFyZ2V0cyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgIHZhciBycyA9IGVsZS5fcHJpdmF0ZS5yc2NyYXRjaDtcblxuICAgIGlmIChlbGUuZ3JhYmJlZCgpICYmICFlbGUuaXNQYXJlbnQoKSkge1xuICAgICAgZ3JhYlRhcmdldHMucHVzaChlbGUpO1xuICAgIH0gZWxzZSBpZiAocnMuaW5EcmFnTGF5ZXIpIHtcbiAgICAgIGVsZXMuZHJhZy5wdXNoKGVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZXMubm9uZHJhZy5wdXNoKGVsZSk7XG4gICAgfVxuICB9IC8vIHB1dCB0aGUgZ3JhYiB0YXJnZXQgbm9kZXMgbGFzdCBzbyBpdCdzIG9uIHRvcCBvZiBpdHMgbmVpZ2hib3VyaG9vZFxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBncmFiVGFyZ2V0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbGUgPSBncmFiVGFyZ2V0c1tpXTtcbiAgICBlbGVzLmRyYWcucHVzaChlbGUpO1xuICB9XG59O1xuXG5CUnAkOS5pbnZhbGlkYXRlQ2FjaGVkWlNvcnRlZEVsZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2FjaGVkWlNvcnRlZEVsZXMgPSBudWxsO1xufTtcblxuQlJwJDkuZ2V0Q2FjaGVkWlNvcnRlZEVsZXMgPSBmdW5jdGlvbiAoZm9yY2VSZWNhbGMpIHtcbiAgaWYgKGZvcmNlUmVjYWxjIHx8ICF0aGlzLmNhY2hlZFpTb3J0ZWRFbGVzKSB7XG4gICAgdmFyIGVsZXMgPSB0aGlzLmN5Lm11dGFibGVFbGVtZW50cygpLnRvQXJyYXkoKTtcbiAgICBlbGVzLnNvcnQoekluZGV4U29ydCk7XG4gICAgZWxlcy5pbnRlcmFjdGl2ZSA9IGVsZXMuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaW50ZXJhY3RpdmUoKTtcbiAgICB9KTtcbiAgICB0aGlzLmNhY2hlZFpTb3J0ZWRFbGVzID0gZWxlcztcbiAgICB0aGlzLnVwZGF0ZUNhY2hlZEdyYWJiZWRFbGVzKCk7XG4gIH0gZWxzZSB7XG4gICAgZWxlcyA9IHRoaXMuY2FjaGVkWlNvcnRlZEVsZXM7XG4gIH1cblxuICByZXR1cm4gZWxlcztcbn07XG5cbnZhciBCUnAkYSA9IHt9O1xuW0JScCQxLCBCUnAkMiwgQlJwJDMsIEJScCQ0LCBCUnAkNSwgQlJwJDYsIEJScCQ3LCBCUnAkOCwgQlJwJDldLmZvckVhY2goZnVuY3Rpb24gKHByb3BzKSB7XG4gIGV4dGVuZChCUnAkYSwgcHJvcHMpO1xufSk7XG5cbnZhciBCUnAkYiA9IHt9O1xuXG5CUnAkYi5nZXRDYWNoZWRJbWFnZSA9IGZ1bmN0aW9uICh1cmwsIGNyb3NzT3JpZ2luLCBvbkxvYWQpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgaW1hZ2VDYWNoZSA9IHIuaW1hZ2VDYWNoZSA9IHIuaW1hZ2VDYWNoZSB8fCB7fTtcbiAgdmFyIGNhY2hlID0gaW1hZ2VDYWNoZVt1cmxdO1xuXG4gIGlmIChjYWNoZSkge1xuICAgIGlmICghY2FjaGUuaW1hZ2UuY29tcGxldGUpIHtcbiAgICAgIGNhY2hlLmltYWdlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkxvYWQpO1xuICAgIH1cblxuICAgIHJldHVybiBjYWNoZS5pbWFnZTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZSA9IGltYWdlQ2FjaGVbdXJsXSA9IGltYWdlQ2FjaGVbdXJsXSB8fCB7fTtcbiAgICB2YXIgaW1hZ2UgPSBjYWNoZS5pbWFnZSA9IG5ldyBJbWFnZSgpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgb25Mb2FkKTtcbiAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGltYWdlLmVycm9yID0gdHJ1ZTtcbiAgICB9KTsgLy8gIzE1ODIgc2FmYXJpIGRvZXNuJ3QgbG9hZCBkYXRhIHVyaXMgd2l0aCBjcm9zc09yaWdpbiBwcm9wZXJseVxuICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM5NzhcblxuICAgIHZhciBkYXRhVXJpUHJlZml4ID0gJ2RhdGE6JztcbiAgICB2YXIgaXNEYXRhVXJpID0gdXJsLnN1YnN0cmluZygwLCBkYXRhVXJpUHJlZml4Lmxlbmd0aCkudG9Mb3dlckNhc2UoKSA9PT0gZGF0YVVyaVByZWZpeDtcblxuICAgIGlmICghaXNEYXRhVXJpKSB7XG4gICAgICBpbWFnZS5jcm9zc09yaWdpbiA9IGNyb3NzT3JpZ2luOyAvLyBwcmV2ZW50IHRhaW50ZWQgY2FudmFzXG4gICAgfVxuXG4gICAgaW1hZ2Uuc3JjID0gdXJsO1xuICAgIHJldHVybiBpbWFnZTtcbiAgfVxufTtcblxudmFyIEJScCRjID0ge307XG4vKiBnbG9iYWwgZG9jdW1lbnQsIHdpbmRvdywgUmVzaXplT2JzZXJ2ZXIsIE11dGF0aW9uT2JzZXJ2ZXIgKi9cblxuQlJwJGMucmVnaXN0ZXJCaW5kaW5nID0gZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIGhhbmRsZXIsIHVzZUNhcHR1cmUpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhcmd1bWVudHMsIFsxXSk7IC8vIGNvcHlcblxuICB2YXIgYiA9IHRoaXMuYmluZGVyKHRhcmdldCk7XG4gIHJldHVybiBiLm9uLmFwcGx5KGIsIGFyZ3MpO1xufTtcblxuQlJwJGMuYmluZGVyID0gZnVuY3Rpb24gKHRndCkge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciB0Z3RJc0RvbSA9IHRndCA9PT0gd2luZG93IHx8IHRndCA9PT0gZG9jdW1lbnQgfHwgdGd0ID09PSBkb2N1bWVudC5ib2R5IHx8IGRvbUVsZW1lbnQodGd0KTtcblxuICBpZiAoci5zdXBwb3J0c1Bhc3NpdmVFdmVudHMgPT0gbnVsbCkge1xuICAgIC8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvRXZlbnRMaXN0ZW5lck9wdGlvbnMvYmxvYi9naC1wYWdlcy9leHBsYWluZXIubWQjZmVhdHVyZS1kZXRlY3Rpb25cbiAgICB2YXIgc3VwcG9ydHNQYXNzaXZlID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIG9wdHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdwYXNzaXZlJywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0JywgbnVsbCwgb3B0cyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7Ly8gbm90IHN1cHBvcnRlZFxuICAgIH1cblxuICAgIHIuc3VwcG9ydHNQYXNzaXZlRXZlbnRzID0gc3VwcG9ydHNQYXNzaXZlO1xuICB9XG5cbiAgdmFyIG9uID0gZnVuY3Rpb24gb24oZXZlbnQsIGhhbmRsZXIsIHVzZUNhcHR1cmUpIHtcbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG5cbiAgICBpZiAodGd0SXNEb20gJiYgci5zdXBwb3J0c1Bhc3NpdmVFdmVudHMpIHtcbiAgICAgIC8vIHJlcGxhY2UgdXNlQ2FwdHVyZSB3LyBvcHRzIG9ialxuICAgICAgYXJnc1syXSA9IHtcbiAgICAgICAgY2FwdHVyZTogdXNlQ2FwdHVyZSAhPSBudWxsID8gdXNlQ2FwdHVyZSA6IGZhbHNlLFxuICAgICAgICBwYXNzaXZlOiBmYWxzZSxcbiAgICAgICAgb25jZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuXG4gICAgci5iaW5kaW5ncy5wdXNoKHtcbiAgICAgIHRhcmdldDogdGd0LFxuICAgICAgYXJnczogYXJnc1xuICAgIH0pO1xuICAgICh0Z3QuYWRkRXZlbnRMaXN0ZW5lciB8fCB0Z3Qub24pLmFwcGx5KHRndCwgYXJncyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBvbjogb24sXG4gICAgYWRkRXZlbnRMaXN0ZW5lcjogb24sXG4gICAgYWRkTGlzdGVuZXI6IG9uLFxuICAgIGJpbmQ6IG9uXG4gIH07XG59O1xuXG5CUnAkYy5ub2RlSXNEcmFnZ2FibGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLmlzTm9kZSgpICYmICFub2RlLmxvY2tlZCgpICYmIG5vZGUuZ3JhYmJhYmxlKCk7XG59O1xuXG5CUnAkYy5ub2RlSXNHcmFiYmFibGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICByZXR1cm4gdGhpcy5ub2RlSXNEcmFnZ2FibGUobm9kZSkgJiYgbm9kZS5pbnRlcmFjdGl2ZSgpO1xufTtcblxuQlJwJGMubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHIgPSB0aGlzO1xuXG4gIHZhciBpc1NlbGVjdGVkID0gZnVuY3Rpb24gaXNTZWxlY3RlZChlbGUpIHtcbiAgICByZXR1cm4gZWxlLnNlbGVjdGVkKCk7XG4gIH07XG5cbiAgdmFyIHRyaWdnZXJFdmVudHMgPSBmdW5jdGlvbiB0cmlnZ2VyRXZlbnRzKHRhcmdldCwgbmFtZXMsIGUsIHBvc2l0aW9uKSB7XG4gICAgaWYgKHRhcmdldCA9PSBudWxsKSB7XG4gICAgICB0YXJnZXQgPSByLmN5O1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuYW1lID0gbmFtZXNbaV07XG4gICAgICB0YXJnZXQuZW1pdCh7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6IG5hbWUsXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpc011bHRTZWxLZXlEb3duID0gZnVuY3Rpb24gaXNNdWx0U2VsS2V5RG93bihlKSB7XG4gICAgcmV0dXJuIGUuc2hpZnRLZXkgfHwgZS5tZXRhS2V5IHx8IGUuY3RybEtleTsgLy8gbWF5YmUgZS5hbHRLZXlcbiAgfTtcblxuICB2YXIgYWxsb3dQYW5uaW5nUGFzc3Rocm91Z2ggPSBmdW5jdGlvbiBhbGxvd1Bhbm5pbmdQYXNzdGhyb3VnaChkb3duLCBkb3ducykge1xuICAgIHZhciBhbGxvd1Bhc3N0aHJvdWdoID0gdHJ1ZTtcblxuICAgIGlmIChyLmN5Lmhhc0NvbXBvdW5kTm9kZXMoKSAmJiBkb3duICYmIGRvd24ucGFubmFibGUoKSkge1xuICAgICAgLy8gYSBncmFiYmFibGUgY29tcG91bmQgbm9kZSBiZWxvdyB0aGUgZWxlID0+IG5vIHBhc3N0aHJvdWdoIHBhbm5pbmdcbiAgICAgIGZvciAodmFyIGkgPSAwOyBkb3ducyAmJiBpIDwgZG93bnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGRvd24gPSBkb3duc1tpXTsgLy9pZiBhbnkgcGFyZW50IG5vZGUgaW4gZXZlbnQgaGllcmFyY2h5IGlzbid0IHBhbm5hYmxlLCByZWplY3QgcGFzc3Rocm91Z2hcblxuICAgICAgICBpZiAoZG93bi5pc05vZGUoKSAmJiBkb3duLmlzUGFyZW50KCkgJiYgIWRvd24ucGFubmFibGUoKSkge1xuICAgICAgICAgIGFsbG93UGFzc3Rocm91Z2ggPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhbGxvd1Bhc3N0aHJvdWdoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsb3dQYXNzdGhyb3VnaDtcbiAgfTtcblxuICB2YXIgc2V0R3JhYmJlZCA9IGZ1bmN0aW9uIHNldEdyYWJiZWQoZWxlKSB7XG4gICAgZWxlWzBdLl9wcml2YXRlLmdyYWJiZWQgPSB0cnVlO1xuICB9O1xuXG4gIHZhciBzZXRGcmVlZCA9IGZ1bmN0aW9uIHNldEZyZWVkKGVsZSkge1xuICAgIGVsZVswXS5fcHJpdmF0ZS5ncmFiYmVkID0gZmFsc2U7XG4gIH07XG5cbiAgdmFyIHNldEluRHJhZ0xheWVyID0gZnVuY3Rpb24gc2V0SW5EcmFnTGF5ZXIoZWxlKSB7XG4gICAgZWxlWzBdLl9wcml2YXRlLnJzY3JhdGNoLmluRHJhZ0xheWVyID0gdHJ1ZTtcbiAgfTtcblxuICB2YXIgc2V0T3V0RHJhZ0xheWVyID0gZnVuY3Rpb24gc2V0T3V0RHJhZ0xheWVyKGVsZSkge1xuICAgIGVsZVswXS5fcHJpdmF0ZS5yc2NyYXRjaC5pbkRyYWdMYXllciA9IGZhbHNlO1xuICB9O1xuXG4gIHZhciBzZXRHcmFiVGFyZ2V0ID0gZnVuY3Rpb24gc2V0R3JhYlRhcmdldChlbGUpIHtcbiAgICBlbGVbMF0uX3ByaXZhdGUucnNjcmF0Y2guaXNHcmFiVGFyZ2V0ID0gdHJ1ZTtcbiAgfTtcblxuICB2YXIgcmVtb3ZlR3JhYlRhcmdldCA9IGZ1bmN0aW9uIHJlbW92ZUdyYWJUYXJnZXQoZWxlKSB7XG4gICAgZWxlWzBdLl9wcml2YXRlLnJzY3JhdGNoLmlzR3JhYlRhcmdldCA9IGZhbHNlO1xuICB9O1xuXG4gIHZhciBhZGRUb0RyYWdMaXN0ID0gZnVuY3Rpb24gYWRkVG9EcmFnTGlzdChlbGUsIG9wdHMpIHtcbiAgICB2YXIgbGlzdCA9IG9wdHMuYWRkVG9MaXN0O1xuICAgIHZhciBsaXN0SGFzRWxlID0gbGlzdC5oYXMoZWxlKTtcblxuICAgIGlmICghbGlzdEhhc0VsZSkge1xuICAgICAgbGlzdC5tZXJnZShlbGUpO1xuICAgICAgc2V0R3JhYmJlZChlbGUpO1xuICAgIH1cbiAgfTsgLy8gaGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGljaCBjaGlsZCBub2RlcyBhbmQgaW5uZXIgZWRnZXNcbiAgLy8gb2YgYSBjb21wb3VuZCBub2RlIHRvIGJlIGRyYWdnZWQgYXMgd2VsbCBhcyB0aGUgZ3JhYmJlZCBhbmQgc2VsZWN0ZWQgbm9kZXNcblxuXG4gIHZhciBhZGREZXNjZW5kYW50c1RvRHJhZyA9IGZ1bmN0aW9uIGFkZERlc2NlbmRhbnRzVG9EcmFnKG5vZGUsIG9wdHMpIHtcbiAgICBpZiAoIW5vZGUuY3koKS5oYXNDb21wb3VuZE5vZGVzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5pbkRyYWdMYXllciA9PSBudWxsICYmIG9wdHMuYWRkVG9MaXN0ID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIG5vdGhpbmcgdG8gZG9cblxuXG4gICAgdmFyIGlubmVyTm9kZXMgPSBub2RlLmRlc2NlbmRhbnRzKCk7XG5cbiAgICBpZiAob3B0cy5pbkRyYWdMYXllcikge1xuICAgICAgaW5uZXJOb2Rlcy5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICAgIGlubmVyTm9kZXMuY29ubmVjdGVkRWRnZXMoKS5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5hZGRUb0xpc3QpIHtcbiAgICAgIG9wdHMuYWRkVG9MaXN0LnVubWVyZ2UoaW5uZXJOb2Rlcyk7XG4gICAgfVxuICB9OyAvLyBhZGRzIHRoZSBnaXZlbiBub2RlcyBhbmQgaXRzIG5laWdoYm91cmhvb2QgdG8gdGhlIGRyYWcgbGF5ZXJcblxuXG4gIHZhciBhZGROb2Rlc1RvRHJhZyA9IGZ1bmN0aW9uIGFkZE5vZGVzVG9EcmFnKG5vZGVzLCBvcHRzKSB7XG4gICAgb3B0cyA9IG9wdHMgfHwge307XG4gICAgdmFyIGhhc0NvbXBvdW5kTm9kZXMgPSBub2Rlcy5jeSgpLmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgIGlmIChvcHRzLmluRHJhZ0xheWVyKSB7XG4gICAgICBub2Rlcy5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICAgIG5vZGVzLm5laWdoYm9yaG9vZCgpLnN0ZEZpbHRlcihmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHJldHVybiAhaGFzQ29tcG91bmROb2RlcyB8fCBlbGUuaXNFZGdlKCk7XG4gICAgICB9KS5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5hZGRUb0xpc3QpIHtcbiAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICBhZGRUb0RyYWdMaXN0KGVsZSwgb3B0cyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGREZXNjZW5kYW50c1RvRHJhZyhub2Rlcywgb3B0cyk7IC8vIGFsd2F5cyBhZGQgdG8gZHJhZ1xuICAgIC8vIGFsc28gYWRkIG5vZGVzIGFuZCBlZGdlcyByZWxhdGVkIHRvIHRoZSB0b3Btb3N0IGFuY2VzdG9yXG5cbiAgICB1cGRhdGVBbmNlc3RvcnNJbkRyYWdMYXllcihub2Rlcywge1xuICAgICAgaW5EcmFnTGF5ZXI6IG9wdHMuaW5EcmFnTGF5ZXJcbiAgICB9KTtcbiAgICByLnVwZGF0ZUNhY2hlZEdyYWJiZWRFbGVzKCk7XG4gIH07XG5cbiAgdmFyIGFkZE5vZGVUb0RyYWcgPSBhZGROb2Rlc1RvRHJhZztcblxuICB2YXIgZnJlZURyYWdnZWRFbGVtZW50cyA9IGZ1bmN0aW9uIGZyZWVEcmFnZ2VkRWxlbWVudHMoZ3JhYmJlZEVsZXMpIHtcbiAgICBpZiAoIWdyYWJiZWRFbGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBqdXN0IGdvIG92ZXIgYWxsIGVsZW1lbnRzIHJhdGhlciB0aGFuIGRvaW5nIGEgYnVuY2ggb2YgKHBvc3NpYmx5IGV4cGVuc2l2ZSkgdHJhdmVyc2Fsc1xuXG5cbiAgICByLmdldENhY2hlZFpTb3J0ZWRFbGVzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICBzZXRGcmVlZChlbGUpO1xuICAgICAgc2V0T3V0RHJhZ0xheWVyKGVsZSk7XG4gICAgICByZW1vdmVHcmFiVGFyZ2V0KGVsZSk7XG4gICAgfSk7XG4gICAgci51cGRhdGVDYWNoZWRHcmFiYmVkRWxlcygpO1xuICB9OyAvLyBoZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoaWNoIGFuY2VzdG9yIG5vZGVzIGFuZCBlZGdlcyBzaG91bGQgZ29cbiAgLy8gdG8gdGhlIGRyYWcgbGF5ZXIgKG9yIHNob3VsZCBiZSByZW1vdmVkIGZyb20gZHJhZyBsYXllcikuXG5cblxuICB2YXIgdXBkYXRlQW5jZXN0b3JzSW5EcmFnTGF5ZXIgPSBmdW5jdGlvbiB1cGRhdGVBbmNlc3RvcnNJbkRyYWdMYXllcihub2RlLCBvcHRzKSB7XG4gICAgaWYgKG9wdHMuaW5EcmFnTGF5ZXIgPT0gbnVsbCAmJiBvcHRzLmFkZFRvTGlzdCA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBub3RoaW5nIHRvIGRvXG5cblxuICAgIGlmICghbm9kZS5jeSgpLmhhc0NvbXBvdW5kTm9kZXMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gZmluZCB0b3AtbGV2ZWwgcGFyZW50XG5cblxuICAgIHZhciBwYXJlbnQgPSBub2RlLmFuY2VzdG9ycygpLm9ycGhhbnMoKTsgLy8gbm8gcGFyZW50IG5vZGU6IG5vIG5vZGVzIHRvIGFkZCB0byB0aGUgZHJhZyBsYXllclxuXG4gICAgaWYgKHBhcmVudC5zYW1lKG5vZGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG5vZGVzID0gcGFyZW50LmRlc2NlbmRhbnRzKCkuc3Bhd25TZWxmKCkubWVyZ2UocGFyZW50KS51bm1lcmdlKG5vZGUpLnVubWVyZ2Uobm9kZS5kZXNjZW5kYW50cygpKTtcbiAgICB2YXIgZWRnZXMgPSBub2Rlcy5jb25uZWN0ZWRFZGdlcygpO1xuXG4gICAgaWYgKG9wdHMuaW5EcmFnTGF5ZXIpIHtcbiAgICAgIGVkZ2VzLmZvckVhY2goc2V0SW5EcmFnTGF5ZXIpO1xuICAgICAgbm9kZXMuZm9yRWFjaChzZXRJbkRyYWdMYXllcik7XG4gICAgfVxuXG4gICAgaWYgKG9wdHMuYWRkVG9MaXN0KSB7XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgYWRkVG9EcmFnTGlzdChlbGUsIG9wdHMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBibHVyQWN0aXZlRG9tRWxlbWVudCA9IGZ1bmN0aW9uIGJsdXJBY3RpdmVEb21FbGVtZW50KCkge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9IG51bGwgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyICE9IG51bGwpIHtcbiAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgaGF2ZU11dGF0aW9uc0FwaSA9IHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJztcbiAgdmFyIGhhdmVSZXNpemVPYnNlcnZlckFwaSA9IHR5cGVvZiBSZXNpemVPYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCc7IC8vIHdhdGNoIGZvciB3aGVuIHRoZSBjeSBjb250YWluZXIgaXMgcmVtb3ZlZCBmcm9tIHRoZSBkb21cblxuICBpZiAoaGF2ZU11dGF0aW9uc0FwaSkge1xuICAgIHIucmVtb3ZlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0bnMpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXV0bnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG11dG4gPSBtdXRuc1tpXTtcbiAgICAgICAgdmFyIHJOb2RlcyA9IG11dG4ucmVtb3ZlZE5vZGVzO1xuXG4gICAgICAgIGlmIChyTm9kZXMpIHtcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJOb2Rlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgdmFyIHJOb2RlID0gck5vZGVzW2pdO1xuXG4gICAgICAgICAgICBpZiAock5vZGUgPT09IHIuY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgIHIuZGVzdHJveSgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChyLmNvbnRhaW5lci5wYXJlbnROb2RlKSB7XG4gICAgICByLnJlbW92ZU9ic2VydmVyLm9ic2VydmUoci5jb250YWluZXIucGFyZW50Tm9kZSwge1xuICAgICAgICBjaGlsZExpc3Q6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ0RPTU5vZGVSZW1vdmVkJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHIuZGVzdHJveSgpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIG9uUmVzaXplID0gdXRpbChmdW5jdGlvbiAoKSB7XG4gICAgci5jeS5yZXNpemUoKTtcbiAgfSwgMTAwKTtcblxuICBpZiAoaGF2ZU11dGF0aW9uc0FwaSkge1xuICAgIHIuc3R5bGVPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG9uUmVzaXplKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgci5zdHlsZU9ic2VydmVyLm9ic2VydmUoci5jb250YWluZXIsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWVcbiAgICB9KTtcbiAgfSAvLyBhdXRvIHJlc2l6ZVxuXG5cbiAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAncmVzaXplJywgb25SZXNpemUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgaWYgKGhhdmVSZXNpemVPYnNlcnZlckFwaSkge1xuICAgIHIucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIob25SZXNpemUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgICByLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoci5jb250YWluZXIpO1xuICB9XG5cbiAgdmFyIGZvckVhY2hVcCA9IGZ1bmN0aW9uIGZvckVhY2hVcChkb21FbGUsIGZuKSB7XG4gICAgd2hpbGUgKGRvbUVsZSAhPSBudWxsKSB7XG4gICAgICBmbihkb21FbGUpO1xuICAgICAgZG9tRWxlID0gZG9tRWxlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpbnZhbGlkYXRlQ29vcmRzID0gZnVuY3Rpb24gaW52YWxpZGF0ZUNvb3JkcygpIHtcbiAgICByLmludmFsaWRhdGVDb250YWluZXJDbGllbnRDb29yZHNDYWNoZSgpO1xuICB9O1xuXG4gIGZvckVhY2hVcChyLmNvbnRhaW5lciwgZnVuY3Rpb24gKGRvbUVsZSkge1xuICAgIHIucmVnaXN0ZXJCaW5kaW5nKGRvbUVsZSwgJ3RyYW5zaXRpb25lbmQnLCBpbnZhbGlkYXRlQ29vcmRzKTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhkb21FbGUsICdhbmltYXRpb25lbmQnLCBpbnZhbGlkYXRlQ29vcmRzKTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhkb21FbGUsICdzY3JvbGwnLCBpbnZhbGlkYXRlQ29vcmRzKTtcbiAgfSk7IC8vIHN0b3AgcmlnaHQgY2xpY2sgbWVudSBmcm9tIGFwcGVhcmluZyBvbiBjeVxuXG4gIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnY29udGV4dG1lbnUnLCBmdW5jdGlvbiAoZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfSk7XG5cbiAgdmFyIGluQm94U2VsZWN0aW9uID0gZnVuY3Rpb24gaW5Cb3hTZWxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHIuc2VsZWN0aW9uWzRdICE9PSAwO1xuICB9O1xuXG4gIHZhciBldmVudEluQ29udGFpbmVyID0gZnVuY3Rpb24gZXZlbnRJbkNvbnRhaW5lcihlKSB7XG4gICAgLy8gc2F2ZSBjeWNsZXMgaWYgbW91c2UgZXZlbnRzIGFyZW4ndCB0byBiZSBjYXB0dXJlZFxuICAgIHZhciBjb250YWluZXJQYWdlQ29vcmRzID0gci5maW5kQ29udGFpbmVyQ2xpZW50Q29vcmRzKCk7XG4gICAgdmFyIHggPSBjb250YWluZXJQYWdlQ29vcmRzWzBdO1xuICAgIHZhciB5ID0gY29udGFpbmVyUGFnZUNvb3Jkc1sxXTtcbiAgICB2YXIgd2lkdGggPSBjb250YWluZXJQYWdlQ29vcmRzWzJdO1xuICAgIHZhciBoZWlnaHQgPSBjb250YWluZXJQYWdlQ29vcmRzWzNdO1xuICAgIHZhciBwb3NpdGlvbnMgPSBlLnRvdWNoZXMgPyBlLnRvdWNoZXMgOiBbZV07XG4gICAgdmFyIGF0TGVhc3RPbmVQb3NJbnNpZGUgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcCA9IHBvc2l0aW9uc1tpXTtcblxuICAgICAgaWYgKHggPD0gcC5jbGllbnRYICYmIHAuY2xpZW50WCA8PSB4ICsgd2lkdGggJiYgeSA8PSBwLmNsaWVudFkgJiYgcC5jbGllbnRZIDw9IHkgKyBoZWlnaHQpIHtcbiAgICAgICAgYXRMZWFzdE9uZVBvc0luc2lkZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghYXRMZWFzdE9uZVBvc0luc2lkZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBjb250YWluZXIgPSByLmNvbnRhaW5lcjtcbiAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgdmFyIHRQYXJlbnQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICB2YXIgY29udGFpbmVySXNUYXJnZXQgPSBmYWxzZTtcblxuICAgIHdoaWxlICh0UGFyZW50KSB7XG4gICAgICBpZiAodFBhcmVudCA9PT0gY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnRhaW5lcklzVGFyZ2V0ID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHRQYXJlbnQgPSB0UGFyZW50LnBhcmVudE5vZGU7XG4gICAgfVxuXG4gICAgaWYgKCFjb250YWluZXJJc1RhcmdldCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gaWYgdGFyZ2V0IGlzIG91dGlzZGUgY3kgY29udGFpbmVyLCB0aGVuIHRoaXMgZXZlbnQgaXMgbm90IGZvciB1c1xuXG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTsgLy8gUHJpbWFyeSBrZXlcblxuXG4gIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnbW91c2Vkb3duJywgZnVuY3Rpb24gbW91c2Vkb3duSGFuZGxlcihlKSB7XG4gICAgaWYgKCFldmVudEluQ29udGFpbmVyKGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGJsdXJBY3RpdmVEb21FbGVtZW50KCk7XG4gICAgci5ob3ZlckRhdGEuY2FwdHVyZSA9IHRydWU7XG4gICAgci5ob3ZlckRhdGEud2hpY2ggPSBlLndoaWNoO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgdmFyIGdwb3MgPSBbZS5jbGllbnRYLCBlLmNsaWVudFldO1xuICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZ3Bvc1swXSwgZ3Bvc1sxXSk7XG4gICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgIHZhciBuZWFycyA9IHIuZmluZE5lYXJlc3RFbGVtZW50cyhwb3NbMF0sIHBvc1sxXSwgdHJ1ZSwgZmFsc2UpO1xuICAgIHZhciBuZWFyID0gbmVhcnNbMF07XG4gICAgdmFyIGRyYWdnZWRFbGVtZW50cyA9IHIuZHJhZ0RhdGEucG9zc2libGVEcmFnRWxlbWVudHM7XG4gICAgci5ob3ZlckRhdGEubWRvd25Qb3MgPSBwb3M7XG4gICAgci5ob3ZlckRhdGEubWRvd25HUG9zID0gZ3BvcztcblxuICAgIHZhciBjaGVja0ZvclRhcGhvbGQgPSBmdW5jdGlvbiBjaGVja0ZvclRhcGhvbGQoKSB7XG4gICAgICByLmhvdmVyRGF0YS50YXBob2xkQ2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICBjbGVhclRpbWVvdXQoci5ob3ZlckRhdGEudGFwaG9sZFRpbWVvdXQpO1xuICAgICAgci5ob3ZlckRhdGEudGFwaG9sZFRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHIuaG92ZXJEYXRhLnRhcGhvbGRDYW5jZWxsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGVsZSA9IHIuaG92ZXJEYXRhLmRvd247XG5cbiAgICAgICAgICBpZiAoZWxlKSB7XG4gICAgICAgICAgICBlbGUuZW1pdCh7XG4gICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICAgIHR5cGU6ICd0YXBob2xkJyxcbiAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjeS5lbWl0KHtcbiAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgdHlwZTogJ3RhcGhvbGQnLFxuICAgICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCByLnRhcGhvbGREdXJhdGlvbik7XG4gICAgfTsgLy8gUmlnaHQgY2xpY2sgYnV0dG9uXG5cblxuICAgIGlmIChlLndoaWNoID09IDMpIHtcbiAgICAgIHIuaG92ZXJEYXRhLmN4dFN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgdmFyIGN4dEV2dCA9IHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgdHlwZTogJ2N4dHRhcHN0YXJ0JyxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgIG5lYXIuYWN0aXZhdGUoKTtcbiAgICAgICAgbmVhci5lbWl0KGN4dEV2dCk7XG4gICAgICAgIHIuaG92ZXJEYXRhLmRvd24gPSBuZWFyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3kuZW1pdChjeHRFdnQpO1xuICAgICAgfVxuXG4gICAgICByLmhvdmVyRGF0YS5kb3duVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgci5ob3ZlckRhdGEuY3h0RHJhZ2dlZCA9IGZhbHNlOyAvLyBQcmltYXJ5IGJ1dHRvblxuICAgIH0gZWxzZSBpZiAoZS53aGljaCA9PSAxKSB7XG4gICAgICBpZiAobmVhcikge1xuICAgICAgICBuZWFyLmFjdGl2YXRlKCk7XG4gICAgICB9IC8vIEVsZW1lbnQgZHJhZ2dpbmdcblxuXG4gICAgICB7XG4gICAgICAgIC8vIElmIHNvbWV0aGluZyBpcyB1bmRlciB0aGUgY3Vyc29yIGFuZCBpdCBpcyBkcmFnZ2FibGUsIHByZXBhcmUgdG8gZ3JhYiBpdFxuICAgICAgICBpZiAobmVhciAhPSBudWxsKSB7XG4gICAgICAgICAgaWYgKHIubm9kZUlzR3JhYmJhYmxlKG5lYXIpKSB7XG4gICAgICAgICAgICB2YXIgbWFrZUV2ZW50ID0gZnVuY3Rpb24gbWFrZUV2ZW50KHR5cGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZhciB0cmlnZ2VyR3JhYiA9IGZ1bmN0aW9uIHRyaWdnZXJHcmFiKGVsZSkge1xuICAgICAgICAgICAgICBlbGUuZW1pdChtYWtlRXZlbnQoJ2dyYWInKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzZXRHcmFiVGFyZ2V0KG5lYXIpO1xuXG4gICAgICAgICAgICBpZiAoIW5lYXIuc2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgICBkcmFnZ2VkRWxlbWVudHMgPSByLmRyYWdEYXRhLnBvc3NpYmxlRHJhZ0VsZW1lbnRzID0gY3kuY29sbGVjdGlvbigpO1xuICAgICAgICAgICAgICBhZGROb2RlVG9EcmFnKG5lYXIsIHtcbiAgICAgICAgICAgICAgICBhZGRUb0xpc3Q6IGRyYWdnZWRFbGVtZW50c1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgbmVhci5lbWl0KG1ha2VFdmVudCgnZ3JhYm9uJykpLmVtaXQobWFrZUV2ZW50KCdncmFiJykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZHJhZ2dlZEVsZW1lbnRzID0gci5kcmFnRGF0YS5wb3NzaWJsZURyYWdFbGVtZW50cyA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkTm9kZXMgPSBjeS4kKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5zZWxlY3RlZCgpICYmIHIubm9kZUlzR3JhYmJhYmxlKGVsZSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBhZGROb2Rlc1RvRHJhZyhzZWxlY3RlZE5vZGVzLCB7XG4gICAgICAgICAgICAgICAgYWRkVG9MaXN0OiBkcmFnZ2VkRWxlbWVudHNcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIG5lYXIuZW1pdChtYWtlRXZlbnQoJ2dyYWJvbicpKTtcbiAgICAgICAgICAgICAgc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKHRyaWdnZXJHcmFiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByLmhvdmVyRGF0YS5kb3duID0gbmVhcjtcbiAgICAgICAgci5ob3ZlckRhdGEuZG93bnMgPSBuZWFycztcbiAgICAgICAgci5ob3ZlckRhdGEuZG93blRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIH1cbiAgICAgIHRyaWdnZXJFdmVudHMobmVhciwgWydtb3VzZWRvd24nLCAndGFwc3RhcnQnLCAndm1vdXNlZG93biddLCBlLCB7XG4gICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgeTogcG9zWzFdXG4gICAgICB9KTtcblxuICAgICAgaWYgKG5lYXIgPT0gbnVsbCkge1xuICAgICAgICBzZWxlY3RbNF0gPSAxO1xuICAgICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB7XG4gICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICB9O1xuICAgICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgICByLnJlZHJhdygpO1xuICAgICAgfSBlbHNlIGlmIChuZWFyLnBhbm5hYmxlKCkpIHtcbiAgICAgICAgc2VsZWN0WzRdID0gMTsgLy8gZm9yIGZ1dHVyZSBwYW5cbiAgICAgIH1cblxuICAgICAgY2hlY2tGb3JUYXBob2xkKCk7XG4gICAgfSAvLyBJbml0aWFsaXplIHNlbGVjdGlvbiBib3ggY29vcmRpbmF0ZXNcblxuXG4gICAgc2VsZWN0WzBdID0gc2VsZWN0WzJdID0gcG9zWzBdO1xuICAgIHNlbGVjdFsxXSA9IHNlbGVjdFszXSA9IHBvc1sxXTtcbiAgfSwgZmFsc2UpO1xuICByLnJlZ2lzdGVyQmluZGluZyh3aW5kb3csICdtb3VzZW1vdmUnLCBmdW5jdGlvbiBtb3VzZW1vdmVIYW5kbGVyKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGNhcHR1cmUgPSByLmhvdmVyRGF0YS5jYXB0dXJlO1xuXG4gICAgaWYgKCFjYXB0dXJlICYmICFldmVudEluQ29udGFpbmVyKGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHByZXZlbnREZWZhdWx0ID0gZmFsc2U7XG4gICAgdmFyIGN5ID0gci5jeTtcbiAgICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgICB2YXIgZ3BvcyA9IFtlLmNsaWVudFgsIGUuY2xpZW50WV07XG4gICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChncG9zWzBdLCBncG9zWzFdKTtcbiAgICB2YXIgbWRvd25Qb3MgPSByLmhvdmVyRGF0YS5tZG93blBvcztcbiAgICB2YXIgbWRvd25HUG9zID0gci5ob3ZlckRhdGEubWRvd25HUG9zO1xuICAgIHZhciBzZWxlY3QgPSByLnNlbGVjdGlvbjtcbiAgICB2YXIgbmVhciA9IG51bGw7XG5cbiAgICBpZiAoIXIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyAmJiAhci5ob3ZlckRhdGEuZHJhZ2dpbmcgJiYgIXIuaG92ZXJEYXRhLnNlbGVjdGluZykge1xuICAgICAgbmVhciA9IHIuZmluZE5lYXJlc3RFbGVtZW50KHBvc1swXSwgcG9zWzFdLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIGxhc3QgPSByLmhvdmVyRGF0YS5sYXN0O1xuICAgIHZhciBkb3duID0gci5ob3ZlckRhdGEuZG93bjtcbiAgICB2YXIgZGlzcCA9IFtwb3NbMF0gLSBzZWxlY3RbMl0sIHBvc1sxXSAtIHNlbGVjdFszXV07XG4gICAgdmFyIGRyYWdnZWRFbGVtZW50cyA9IHIuZHJhZ0RhdGEucG9zc2libGVEcmFnRWxlbWVudHM7XG4gICAgdmFyIGlzT3ZlclRocmVzaG9sZERyYWc7XG5cbiAgICBpZiAobWRvd25HUG9zKSB7XG4gICAgICB2YXIgZHggPSBncG9zWzBdIC0gbWRvd25HUG9zWzBdO1xuICAgICAgdmFyIGR4MiA9IGR4ICogZHg7XG4gICAgICB2YXIgZHkgPSBncG9zWzFdIC0gbWRvd25HUG9zWzFdO1xuICAgICAgdmFyIGR5MiA9IGR5ICogZHk7XG4gICAgICB2YXIgZGlzdDIgPSBkeDIgKyBkeTI7XG4gICAgICByLmhvdmVyRGF0YS5pc092ZXJUaHJlc2hvbGREcmFnID0gaXNPdmVyVGhyZXNob2xkRHJhZyA9IGRpc3QyID49IHIuZGVza3RvcFRhcFRocmVzaG9sZDI7XG4gICAgfVxuXG4gICAgdmFyIG11bHRTZWxLZXlEb3duID0gaXNNdWx0U2VsS2V5RG93bihlKTtcblxuICAgIGlmIChpc092ZXJUaHJlc2hvbGREcmFnKSB7XG4gICAgICByLmhvdmVyRGF0YS50YXBob2xkQ2FuY2VsbGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgdXBkYXRlRHJhZ0RlbHRhID0gZnVuY3Rpb24gdXBkYXRlRHJhZ0RlbHRhKCkge1xuICAgICAgdmFyIGRyYWdEZWx0YSA9IHIuaG92ZXJEYXRhLmRyYWdEZWx0YSA9IHIuaG92ZXJEYXRhLmRyYWdEZWx0YSB8fCBbXTtcblxuICAgICAgaWYgKGRyYWdEZWx0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZHJhZ0RlbHRhLnB1c2goZGlzcFswXSk7XG4gICAgICAgIGRyYWdEZWx0YS5wdXNoKGRpc3BbMV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHJhZ0RlbHRhWzBdICs9IGRpc3BbMF07XG4gICAgICAgIGRyYWdEZWx0YVsxXSArPSBkaXNwWzFdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBwcmV2ZW50RGVmYXVsdCA9IHRydWU7XG4gICAgdHJpZ2dlckV2ZW50cyhuZWFyLCBbJ21vdXNlbW92ZScsICd2bW91c2Vtb3ZlJywgJ3RhcGRyYWcnXSwgZSwge1xuICAgICAgeDogcG9zWzBdLFxuICAgICAgeTogcG9zWzFdXG4gICAgfSk7XG5cbiAgICB2YXIgZ29JbnRvQm94TW9kZSA9IGZ1bmN0aW9uIGdvSW50b0JveE1vZGUoKSB7XG4gICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICghci5ob3ZlckRhdGEuc2VsZWN0aW5nKSB7XG4gICAgICAgIGN5LmVtaXQoe1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgdHlwZTogJ2JveHN0YXJ0JyxcbiAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgc2VsZWN0WzRdID0gMTtcbiAgICAgIHIuaG92ZXJEYXRhLnNlbGVjdGluZyA9IHRydWU7XG4gICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgci5yZWRyYXcoKTtcbiAgICB9OyAvLyB0cmlnZ2VyIGNvbnRleHQgZHJhZyBpZiBybW91c2UgZG93blxuXG5cbiAgICBpZiAoci5ob3ZlckRhdGEud2hpY2ggPT09IDMpIHtcbiAgICAgIC8vIGJ1dCBvbmx5IGlmIG92ZXIgdGhyZXNob2xkXG4gICAgICBpZiAoaXNPdmVyVGhyZXNob2xkRHJhZykge1xuICAgICAgICB2YXIgY3h0RXZ0ID0ge1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgdHlwZTogJ2N4dGRyYWcnLFxuICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGRvd24pIHtcbiAgICAgICAgICBkb3duLmVtaXQoY3h0RXZ0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjeS5lbWl0KGN4dEV2dCk7XG4gICAgICAgIH1cblxuICAgICAgICByLmhvdmVyRGF0YS5jeHREcmFnZ2VkID0gdHJ1ZTtcblxuICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmN4dE92ZXIgfHwgbmVhciAhPT0gci5ob3ZlckRhdGEuY3h0T3Zlcikge1xuICAgICAgICAgIGlmIChyLmhvdmVyRGF0YS5jeHRPdmVyKSB7XG4gICAgICAgICAgICByLmhvdmVyRGF0YS5jeHRPdmVyLmVtaXQoe1xuICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgICB0eXBlOiAnY3h0ZHJhZ291dCcsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByLmhvdmVyRGF0YS5jeHRPdmVyID0gbmVhcjtcblxuICAgICAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgICAgICBuZWFyLmVtaXQoe1xuICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgICB0eXBlOiAnY3h0ZHJhZ292ZXInLFxuICAgICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIENoZWNrIGlmIHdlIGFyZSBkcmFnIHBhbm5pbmcgdGhlIGVudGlyZSBncmFwaFxuXG4gICAgfSBlbHNlIGlmIChyLmhvdmVyRGF0YS5kcmFnZ2luZykge1xuICAgICAgcHJldmVudERlZmF1bHQgPSB0cnVlO1xuXG4gICAgICBpZiAoY3kucGFubmluZ0VuYWJsZWQoKSAmJiBjeS51c2VyUGFubmluZ0VuYWJsZWQoKSkge1xuICAgICAgICB2YXIgZGVsdGFQO1xuXG4gICAgICAgIGlmIChyLmhvdmVyRGF0YS5qdXN0U3RhcnRlZFBhbikge1xuICAgICAgICAgIHZhciBtZFBvcyA9IHIuaG92ZXJEYXRhLm1kb3duUG9zO1xuICAgICAgICAgIGRlbHRhUCA9IHtcbiAgICAgICAgICAgIHg6IChwb3NbMF0gLSBtZFBvc1swXSkgKiB6b29tLFxuICAgICAgICAgICAgeTogKHBvc1sxXSAtIG1kUG9zWzFdKSAqIHpvb21cbiAgICAgICAgICB9O1xuICAgICAgICAgIHIuaG92ZXJEYXRhLmp1c3RTdGFydGVkUGFuID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsdGFQID0ge1xuICAgICAgICAgICAgeDogZGlzcFswXSAqIHpvb20sXG4gICAgICAgICAgICB5OiBkaXNwWzFdICogem9vbVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjeS5wYW5CeShkZWx0YVApO1xuICAgICAgICBjeS5lbWl0KCdkcmFncGFuJyk7XG4gICAgICAgIHIuaG92ZXJEYXRhLmRyYWdnZWQgPSB0cnVlO1xuICAgICAgfSAvLyBOZWVkcyByZXByb2plY3QgZHVlIHRvIHBhbiBjaGFuZ2luZyB2aWV3cG9ydFxuXG5cbiAgICAgIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7IC8vIENoZWNrcyBwcmltYXJ5IGJ1dHRvbiBkb3duICYgb3V0IG9mIHRpbWUgJiBtb3VzZSBub3QgbW92ZWQgbXVjaFxuICAgIH0gZWxzZSBpZiAoc2VsZWN0WzRdID09IDEgJiYgKGRvd24gPT0gbnVsbCB8fCBkb3duLnBhbm5hYmxlKCkpKSB7XG4gICAgICBpZiAoaXNPdmVyVGhyZXNob2xkRHJhZykge1xuICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmRyYWdnaW5nICYmIGN5LmJveFNlbGVjdGlvbkVuYWJsZWQoKSAmJiAobXVsdFNlbEtleURvd24gfHwgIWN5LnBhbm5pbmdFbmFibGVkKCkgfHwgIWN5LnVzZXJQYW5uaW5nRW5hYmxlZCgpKSkge1xuICAgICAgICAgIGdvSW50b0JveE1vZGUoKTtcbiAgICAgICAgfSBlbHNlIGlmICghci5ob3ZlckRhdGEuc2VsZWN0aW5nICYmIGN5LnBhbm5pbmdFbmFibGVkKCkgJiYgY3kudXNlclBhbm5pbmdFbmFibGVkKCkpIHtcbiAgICAgICAgICB2YXIgYWxsb3dQYXNzdGhyb3VnaCA9IGFsbG93UGFubmluZ1Bhc3N0aHJvdWdoKGRvd24sIHIuaG92ZXJEYXRhLmRvd25zKTtcblxuICAgICAgICAgIGlmIChhbGxvd1Bhc3N0aHJvdWdoKSB7XG4gICAgICAgICAgICByLmhvdmVyRGF0YS5kcmFnZ2luZyA9IHRydWU7XG4gICAgICAgICAgICByLmhvdmVyRGF0YS5qdXN0U3RhcnRlZFBhbiA9IHRydWU7XG4gICAgICAgICAgICBzZWxlY3RbNF0gPSAwO1xuICAgICAgICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gYXJyYXkycG9pbnQobWRvd25Qb3MpO1xuICAgICAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgICAgICAgIHIucmVkcmF3KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRvd24gJiYgZG93bi5wYW5uYWJsZSgpICYmIGRvd24uYWN0aXZlKCkpIHtcbiAgICAgICAgICBkb3duLnVuYWN0aXZhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZG93biAmJiBkb3duLnBhbm5hYmxlKCkgJiYgZG93bi5hY3RpdmUoKSkge1xuICAgICAgICBkb3duLnVuYWN0aXZhdGUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCghZG93biB8fCAhZG93bi5ncmFiYmVkKCkpICYmIG5lYXIgIT0gbGFzdCkge1xuICAgICAgICBpZiAobGFzdCkge1xuICAgICAgICAgIHRyaWdnZXJFdmVudHMobGFzdCwgWydtb3VzZW91dCcsICd0YXBkcmFnb3V0J10sIGUsIHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5lYXIpIHtcbiAgICAgICAgICB0cmlnZ2VyRXZlbnRzKG5lYXIsIFsnbW91c2VvdmVyJywgJ3RhcGRyYWdvdmVyJ10sIGUsIHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgci5ob3ZlckRhdGEubGFzdCA9IG5lYXI7XG4gICAgICB9XG5cbiAgICAgIGlmIChkb3duKSB7XG4gICAgICAgIGlmIChpc092ZXJUaHJlc2hvbGREcmFnKSB7XG4gICAgICAgICAgLy8gdGhlbiB3ZSBjYW4gdGFrZSBhY3Rpb25cbiAgICAgICAgICBpZiAoY3kuYm94U2VsZWN0aW9uRW5hYmxlZCgpICYmIG11bHRTZWxLZXlEb3duKSB7XG4gICAgICAgICAgICAvLyB0aGVuIHNlbGVjdGlvbiBvdmVycmlkZXNcbiAgICAgICAgICAgIGlmIChkb3duICYmIGRvd24uZ3JhYmJlZCgpKSB7XG4gICAgICAgICAgICAgIGZyZWVEcmFnZ2VkRWxlbWVudHMoZHJhZ2dlZEVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgZG93bi5lbWl0KCdmcmVlb24nKTtcbiAgICAgICAgICAgICAgZHJhZ2dlZEVsZW1lbnRzLmVtaXQoJ2ZyZWUnKTtcblxuICAgICAgICAgICAgICBpZiAoci5kcmFnRGF0YS5kaWREcmFnKSB7XG4gICAgICAgICAgICAgICAgZG93bi5lbWl0KCdkcmFnZnJlZW9uJyk7XG4gICAgICAgICAgICAgICAgZHJhZ2dlZEVsZW1lbnRzLmVtaXQoJ2RyYWdmcmVlJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ29JbnRvQm94TW9kZSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZG93biAmJiBkb3duLmdyYWJiZWQoKSAmJiByLm5vZGVJc0RyYWdnYWJsZShkb3duKSkge1xuICAgICAgICAgICAgLy8gZHJhZyBub2RlXG4gICAgICAgICAgICB2YXIganVzdFN0YXJ0ZWREcmFnID0gIXIuZHJhZ0RhdGEuZGlkRHJhZztcblxuICAgICAgICAgICAgaWYgKGp1c3RTdGFydGVkRHJhZykge1xuICAgICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgci5kcmFnRGF0YS5kaWREcmFnID0gdHJ1ZTsgLy8gaW5kaWNhdGUgdGhhdCB3ZSBhY3R1YWxseSBkaWQgZHJhZyB0aGUgbm9kZVxuXG4gICAgICAgICAgICB2YXIgdG9UcmlnZ2VyID0gY3kuY29sbGVjdGlvbigpOyAvLyBub3csIGFkZCB0aGUgZWxlbWVudHMgdG8gdGhlIGRyYWcgbGF5ZXIgaWYgbm90IGRvbmUgYWxyZWFkeVxuXG4gICAgICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcykge1xuICAgICAgICAgICAgICBhZGROb2Rlc1RvRHJhZyhkcmFnZ2VkRWxlbWVudHMsIHtcbiAgICAgICAgICAgICAgICBpbkRyYWdMYXllcjogdHJ1ZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHRvdGFsU2hpZnQgPSB7XG4gICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgIHk6IDBcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChudW1iZXIoZGlzcFswXSkgJiYgbnVtYmVyKGRpc3BbMV0pKSB7XG4gICAgICAgICAgICAgIHRvdGFsU2hpZnQueCArPSBkaXNwWzBdO1xuICAgICAgICAgICAgICB0b3RhbFNoaWZ0LnkgKz0gZGlzcFsxXTtcblxuICAgICAgICAgICAgICBpZiAoanVzdFN0YXJ0ZWREcmFnKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRyYWdEZWx0YSA9IHIuaG92ZXJEYXRhLmRyYWdEZWx0YTtcblxuICAgICAgICAgICAgICAgIGlmIChkcmFnRGVsdGEgJiYgbnVtYmVyKGRyYWdEZWx0YVswXSkgJiYgbnVtYmVyKGRyYWdEZWx0YVsxXSkpIHtcbiAgICAgICAgICAgICAgICAgIHRvdGFsU2hpZnQueCArPSBkcmFnRGVsdGFbMF07XG4gICAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0LnkgKz0gZHJhZ0RlbHRhWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRyYWdnZWRFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICB2YXIgZEVsZSA9IGRyYWdnZWRFbGVtZW50c1tpXTtcblxuICAgICAgICAgICAgICBpZiAoci5ub2RlSXNEcmFnZ2FibGUoZEVsZSkgJiYgZEVsZS5ncmFiYmVkKCkpIHtcbiAgICAgICAgICAgICAgICB0b1RyaWdnZXIucHVzaChkRWxlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByLmhvdmVyRGF0YS5kcmFnZ2luZ0VsZXMgPSB0cnVlO1xuICAgICAgICAgICAgdG9UcmlnZ2VyLnNpbGVudFNoaWZ0KHRvdGFsU2hpZnQpLmVtaXQoJ3Bvc2l0aW9uIGRyYWcnKTtcbiAgICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gb3RoZXJ3aXNlIHNhdmUgZHJhZyBkZWx0YSBmb3Igd2hlbiB3ZSBhY3R1YWxseSBzdGFydCBkcmFnZ2luZyBzbyB0aGUgcmVsYXRpdmUgZ3JhYiBwb3MgaXMgY29uc3RhbnRcbiAgICAgICAgICB1cGRhdGVEcmFnRGVsdGEoKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwcmV2ZW50IHRoZSBkcmFnZ2luZyBmcm9tIHRyaWdnZXJpbmcgdGV4dCBzZWxlY3Rpb24gb24gdGhlIHBhZ2VcblxuXG4gICAgICBwcmV2ZW50RGVmYXVsdCA9IHRydWU7XG4gICAgfVxuXG4gICAgc2VsZWN0WzJdID0gcG9zWzBdO1xuICAgIHNlbGVjdFszXSA9IHBvc1sxXTtcblxuICAgIGlmIChwcmV2ZW50RGVmYXVsdCkge1xuICAgICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9uKSBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgaWYgKGUucHJldmVudERlZmF1bHQpIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sIGZhbHNlKTtcbiAgdmFyIGNsaWNrVGltZW91dCwgZGlkRG91YmxlQ2xpY2ssIHByZXZDbGlja1RpbWVTdGFtcDtcbiAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAnbW91c2V1cCcsIGZ1bmN0aW9uIG1vdXNldXBIYW5kbGVyKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGNhcHR1cmUgPSByLmhvdmVyRGF0YS5jYXB0dXJlO1xuXG4gICAgaWYgKCFjYXB0dXJlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgci5ob3ZlckRhdGEuY2FwdHVyZSA9IGZhbHNlO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgIHZhciBuZWFyID0gci5maW5kTmVhcmVzdEVsZW1lbnQocG9zWzBdLCBwb3NbMV0sIHRydWUsIGZhbHNlKTtcbiAgICB2YXIgZHJhZ2dlZEVsZW1lbnRzID0gci5kcmFnRGF0YS5wb3NzaWJsZURyYWdFbGVtZW50cztcbiAgICB2YXIgZG93biA9IHIuaG92ZXJEYXRhLmRvd247XG4gICAgdmFyIG11bHRTZWxLZXlEb3duID0gaXNNdWx0U2VsS2V5RG93bihlKTtcblxuICAgIGlmIChyLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24pIHtcbiAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICByLnJlZHJhdygpO1xuICAgIH1cblxuICAgIHIuaG92ZXJEYXRhLnRhcGhvbGRDYW5jZWxsZWQgPSB0cnVlO1xuICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDsgLy8gbm90IGFjdGl2ZSBiZyBub3dcblxuICAgIGlmIChkb3duKSB7XG4gICAgICBkb3duLnVuYWN0aXZhdGUoKTtcbiAgICB9XG5cbiAgICBpZiAoci5ob3ZlckRhdGEud2hpY2ggPT09IDMpIHtcbiAgICAgIHZhciBjeHRFdnQgPSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6ICdjeHR0YXBlbmQnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgaWYgKGRvd24pIHtcbiAgICAgICAgZG93bi5lbWl0KGN4dEV2dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjeS5lbWl0KGN4dEV2dCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghci5ob3ZlckRhdGEuY3h0RHJhZ2dlZCkge1xuICAgICAgICB2YXIgY3h0VGFwID0ge1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgdHlwZTogJ2N4dHRhcCcsXG4gICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZG93bikge1xuICAgICAgICAgIGRvd24uZW1pdChjeHRUYXApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN5LmVtaXQoY3h0VGFwKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByLmhvdmVyRGF0YS5jeHREcmFnZ2VkID0gZmFsc2U7XG4gICAgICByLmhvdmVyRGF0YS53aGljaCA9IG51bGw7XG4gICAgfSBlbHNlIGlmIChyLmhvdmVyRGF0YS53aGljaCA9PT0gMSkge1xuICAgICAgdHJpZ2dlckV2ZW50cyhuZWFyLCBbJ21vdXNldXAnLCAndGFwZW5kJywgJ3Ztb3VzZXVwJ10sIGUsIHtcbiAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICB5OiBwb3NbMV1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXIuZHJhZ0RhdGEuZGlkRHJhZyAmJiAvLyBkaWRuJ3QgbW92ZSBhIG5vZGUgYXJvdW5kXG4gICAgICAhci5ob3ZlckRhdGEuZHJhZ2dlZCAmJiAvLyBkaWRuJ3QgcGFuXG4gICAgICAhci5ob3ZlckRhdGEuc2VsZWN0aW5nICYmIC8vIG5vdCBib3ggc2VsZWN0aW9uXG4gICAgICAhci5ob3ZlckRhdGEuaXNPdmVyVGhyZXNob2xkRHJhZyAvLyBkaWRuJ3QgbW92ZSB0b28gbXVjaFxuICAgICAgKSB7XG4gICAgICAgICAgdHJpZ2dlckV2ZW50cyhkb3duLCBbXCJjbGlja1wiLCBcInRhcFwiLCBcInZjbGlja1wiXSwgZSwge1xuICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGlkRG91YmxlQ2xpY2sgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChlLnRpbWVTdGFtcCAtIHByZXZDbGlja1RpbWVTdGFtcCA8PSBjeS5tdWx0aUNsaWNrRGVib3VuY2VUaW1lKCkpIHtcbiAgICAgICAgICAgIGNsaWNrVGltZW91dCAmJiBjbGVhclRpbWVvdXQoY2xpY2tUaW1lb3V0KTtcbiAgICAgICAgICAgIGRpZERvdWJsZUNsaWNrID0gdHJ1ZTtcbiAgICAgICAgICAgIHByZXZDbGlja1RpbWVTdGFtcCA9IG51bGw7XG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnRzKGRvd24sIFtcImRibGNsaWNrXCIsIFwiZGJsdGFwXCIsIFwidmRibGNsaWNrXCJdLCBlLCB7XG4gICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xpY2tUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGlmIChkaWREb3VibGVDbGljaykgcmV0dXJuO1xuICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnRzKGRvd24sIFtcIm9uZWNsaWNrXCIsIFwib25ldGFwXCIsIFwidm9uZWNsaWNrXCJdLCBlLCB7XG4gICAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIGN5Lm11bHRpQ2xpY2tEZWJvdW5jZVRpbWUoKSk7XG4gICAgICAgICAgICBwcmV2Q2xpY2tUaW1lU3RhbXAgPSBlLnRpbWVTdGFtcDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gRGVzZWxlY3QgYWxsIGVsZW1lbnRzIGlmIG5vdGhpbmcgaXMgY3VycmVudGx5IHVuZGVyIHRoZSBtb3VzZSBjdXJzb3IgYW5kIHdlIGFyZW4ndCBkcmFnZ2luZyBzb21ldGhpbmdcblxuXG4gICAgICBpZiAoZG93biA9PSBudWxsICYmIC8vIG5vdCBtb3VzZWRvd24gb24gbm9kZVxuICAgICAgIXIuZHJhZ0RhdGEuZGlkRHJhZyAvLyBkaWRuJ3QgbW92ZSB0aGUgbm9kZSBhcm91bmRcbiAgICAgICYmICFyLmhvdmVyRGF0YS5zZWxlY3RpbmcgLy8gbm90IGJveCBzZWxlY3Rpb25cbiAgICAgICYmICFyLmhvdmVyRGF0YS5kcmFnZ2VkIC8vIGRpZG4ndCBwYW5cbiAgICAgICYmICFpc011bHRTZWxLZXlEb3duKGUpKSB7XG4gICAgICAgIGN5LiQoaXNTZWxlY3RlZCkudW5zZWxlY3QoWyd0YXB1bnNlbGVjdCddKTtcblxuICAgICAgICBpZiAoZHJhZ2dlZEVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHIuZHJhZ0RhdGEucG9zc2libGVEcmFnRWxlbWVudHMgPSBkcmFnZ2VkRWxlbWVudHMgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgICB9IC8vIFNpbmdsZSBzZWxlY3Rpb25cblxuXG4gICAgICBpZiAobmVhciA9PSBkb3duICYmICFyLmRyYWdEYXRhLmRpZERyYWcgJiYgIXIuaG92ZXJEYXRhLnNlbGVjdGluZykge1xuICAgICAgICBpZiAobmVhciAhPSBudWxsICYmIG5lYXIuX3ByaXZhdGUuc2VsZWN0YWJsZSkge1xuICAgICAgICAgIGlmIChyLmhvdmVyRGF0YS5kcmFnZ2luZykgOyBlbHNlIGlmIChjeS5zZWxlY3Rpb25UeXBlKCkgPT09ICdhZGRpdGl2ZScgfHwgbXVsdFNlbEtleURvd24pIHtcbiAgICAgICAgICAgIGlmIChuZWFyLnNlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgICAgbmVhci51bnNlbGVjdChbJ3RhcHVuc2VsZWN0J10pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmVhci5zZWxlY3QoWyd0YXBzZWxlY3QnXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghbXVsdFNlbEtleURvd24pIHtcbiAgICAgICAgICAgICAgY3kuJChpc1NlbGVjdGVkKS51bm1lcmdlKG5lYXIpLnVuc2VsZWN0KFsndGFwdW5zZWxlY3QnXSk7XG4gICAgICAgICAgICAgIG5lYXIuc2VsZWN0KFsndGFwc2VsZWN0J10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyLmhvdmVyRGF0YS5zZWxlY3RpbmcpIHtcbiAgICAgICAgdmFyIGJveCA9IGN5LmNvbGxlY3Rpb24oci5nZXRBbGxJbkJveChzZWxlY3RbMF0sIHNlbGVjdFsxXSwgc2VsZWN0WzJdLCBzZWxlY3RbM10pKTtcbiAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcblxuICAgICAgICBpZiAoYm94Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN5LmVtaXQoe1xuICAgICAgICAgIHR5cGU6ICdib3hlbmQnLFxuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIGVsZVdvdWxkQmVTZWxlY3RlZCA9IGZ1bmN0aW9uIGVsZVdvdWxkQmVTZWxlY3RlZChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLnNlbGVjdGFibGUoKSAmJiAhZWxlLnNlbGVjdGVkKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGN5LnNlbGVjdGlvblR5cGUoKSA9PT0gJ2FkZGl0aXZlJykge1xuICAgICAgICAgIGJveC5lbWl0KCdib3gnKS5zdGRGaWx0ZXIoZWxlV291bGRCZVNlbGVjdGVkKS5zZWxlY3QoKS5lbWl0KCdib3hzZWxlY3QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIW11bHRTZWxLZXlEb3duKSB7XG4gICAgICAgICAgICBjeS4kKGlzU2VsZWN0ZWQpLnVubWVyZ2UoYm94KS51bnNlbGVjdCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJveC5lbWl0KCdib3gnKS5zdGRGaWx0ZXIoZWxlV291bGRCZVNlbGVjdGVkKS5zZWxlY3QoKS5lbWl0KCdib3hzZWxlY3QnKTtcbiAgICAgICAgfSAvLyBhbHdheXMgbmVlZCByZWRyYXcgaW4gY2FzZSBlbGVzIHVuc2VsZWN0YWJsZVxuXG5cbiAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgIH0gLy8gQ2FuY2VsIGRyYWcgcGFuXG5cblxuICAgICAgaWYgKHIuaG92ZXJEYXRhLmRyYWdnaW5nKSB7XG4gICAgICAgIHIuaG92ZXJEYXRhLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICByLnJlZHJhdygpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNlbGVjdFs0XSkge1xuICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcbiAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgIHZhciBkb3duV2FzR3JhYmJlZCA9IGRvd24gJiYgZG93bi5ncmFiYmVkKCk7XG4gICAgICAgIGZyZWVEcmFnZ2VkRWxlbWVudHMoZHJhZ2dlZEVsZW1lbnRzKTtcblxuICAgICAgICBpZiAoZG93bldhc0dyYWJiZWQpIHtcbiAgICAgICAgICBkb3duLmVtaXQoJ2ZyZWVvbicpO1xuICAgICAgICAgIGRyYWdnZWRFbGVtZW50cy5lbWl0KCdmcmVlJyk7XG5cbiAgICAgICAgICBpZiAoci5kcmFnRGF0YS5kaWREcmFnKSB7XG4gICAgICAgICAgICBkb3duLmVtaXQoJ2RyYWdmcmVlb24nKTtcbiAgICAgICAgICAgIGRyYWdnZWRFbGVtZW50cy5lbWl0KCdkcmFnZnJlZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gZWxzZSBub3QgcmlnaHQgbW91c2VcblxuXG4gICAgc2VsZWN0WzRdID0gMDtcbiAgICByLmhvdmVyRGF0YS5kb3duID0gbnVsbDtcbiAgICByLmhvdmVyRGF0YS5jeHRTdGFydGVkID0gZmFsc2U7XG4gICAgci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzID0gZmFsc2U7XG4gICAgci5ob3ZlckRhdGEuc2VsZWN0aW5nID0gZmFsc2U7XG4gICAgci5ob3ZlckRhdGEuaXNPdmVyVGhyZXNob2xkRHJhZyA9IGZhbHNlO1xuICAgIHIuZHJhZ0RhdGEuZGlkRHJhZyA9IGZhbHNlO1xuICAgIHIuaG92ZXJEYXRhLmRyYWdnZWQgPSBmYWxzZTtcbiAgICByLmhvdmVyRGF0YS5kcmFnRGVsdGEgPSBbXTtcbiAgICByLmhvdmVyRGF0YS5tZG93blBvcyA9IG51bGw7XG4gICAgci5ob3ZlckRhdGEubWRvd25HUG9zID0gbnVsbDtcbiAgfSwgZmFsc2UpO1xuXG4gIHZhciB3aGVlbEhhbmRsZXIgPSBmdW5jdGlvbiB3aGVlbEhhbmRsZXIoZSkge1xuICAgIGlmIChyLnNjcm9sbGluZ1BhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIHdoaWxlIHNjcm9sbGluZywgaWdub3JlIHdoZWVsLXRvLXpvb21cblxuXG4gICAgdmFyIGN5ID0gci5jeTtcbiAgICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgdmFyIHJwb3MgPSBbcG9zWzBdICogem9vbSArIHBhbi54LCBwb3NbMV0gKiB6b29tICsgcGFuLnldO1xuXG4gICAgaWYgKHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyB8fCByLmhvdmVyRGF0YS5kcmFnZ2luZyB8fCByLmhvdmVyRGF0YS5jeHRTdGFydGVkIHx8IGluQm94U2VsZWN0aW9uKCkpIHtcbiAgICAgIC8vIGlmIHBhbiBkcmFnZ2luZyBvciBjeHQgZHJhZ2dpbmcsIHdoZWVsIG1vdmVtZW50cyBtYWtlIG5vIHpvb21cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY3kucGFubmluZ0VuYWJsZWQoKSAmJiBjeS51c2VyUGFubmluZ0VuYWJsZWQoKSAmJiBjeS56b29taW5nRW5hYmxlZCgpICYmIGN5LnVzZXJab29taW5nRW5hYmxlZCgpKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByLmRhdGEud2hlZWxab29taW5nID0gdHJ1ZTtcbiAgICAgIGNsZWFyVGltZW91dChyLmRhdGEud2hlZWxUaW1lb3V0KTtcbiAgICAgIHIuZGF0YS53aGVlbFRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgci5kYXRhLndoZWVsWm9vbWluZyA9IGZhbHNlO1xuICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgIH0sIDE1MCk7XG4gICAgICB2YXIgZGlmZjtcblxuICAgICAgaWYgKGUuZGVsdGFZICE9IG51bGwpIHtcbiAgICAgICAgZGlmZiA9IGUuZGVsdGFZIC8gLTI1MDtcbiAgICAgIH0gZWxzZSBpZiAoZS53aGVlbERlbHRhWSAhPSBudWxsKSB7XG4gICAgICAgIGRpZmYgPSBlLndoZWVsRGVsdGFZIC8gMTAwMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpZmYgPSBlLndoZWVsRGVsdGEgLyAxMDAwO1xuICAgICAgfVxuXG4gICAgICBkaWZmID0gZGlmZiAqIHIud2hlZWxTZW5zaXRpdml0eTtcbiAgICAgIHZhciBuZWVkc1doZWVsRml4ID0gZS5kZWx0YU1vZGUgPT09IDE7XG5cbiAgICAgIGlmIChuZWVkc1doZWVsRml4KSB7XG4gICAgICAgIC8vIGZpeGVzIHNsb3cgd2hlZWwgZXZlbnRzIG9uIGZmL2xpbnV4IGFuZCBmZi93aW5kb3dzXG4gICAgICAgIGRpZmYgKj0gMzM7XG4gICAgICB9XG5cbiAgICAgIHZhciBuZXdab29tID0gY3kuem9vbSgpICogTWF0aC5wb3coMTAsIGRpZmYpO1xuXG4gICAgICBpZiAoZS50eXBlID09PSAnZ2VzdHVyZWNoYW5nZScpIHtcbiAgICAgICAgbmV3Wm9vbSA9IHIuZ2VzdHVyZVN0YXJ0Wm9vbSAqIGUuc2NhbGU7XG4gICAgICB9XG5cbiAgICAgIGN5Lnpvb20oe1xuICAgICAgICBsZXZlbDogbmV3Wm9vbSxcbiAgICAgICAgcmVuZGVyZWRQb3NpdGlvbjoge1xuICAgICAgICAgIHg6IHJwb3NbMF0sXG4gICAgICAgICAgeTogcnBvc1sxXVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGN5LmVtaXQoZS50eXBlID09PSAnZ2VzdHVyZWNoYW5nZScgPyAncGluY2h6b29tJyA6ICdzY3JvbGx6b29tJyk7XG4gICAgfVxuICB9OyAvLyBGdW5jdGlvbnMgdG8gaGVscCB3aXRoIHdoZXRoZXIgbW91c2Ugd2hlZWwgc2hvdWxkIHRyaWdnZXIgem9vbWluZ1xuICAvLyAtLVxuXG5cbiAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICd3aGVlbCcsIHdoZWVsSGFuZGxlciwgdHJ1ZSk7IC8vIGRpc2FibGUgbm9uc3RhbmRhcmQgd2hlZWwgZXZlbnRzXG4gIC8vIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnbW91c2V3aGVlbCcsIHdoZWVsSGFuZGxlciwgdHJ1ZSk7XG4gIC8vIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnRE9NTW91c2VTY3JvbGwnLCB3aGVlbEhhbmRsZXIsIHRydWUpO1xuICAvLyByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ01vek1vdXNlUGl4ZWxTY3JvbGwnLCB3aGVlbEhhbmRsZXIsIHRydWUpOyAvLyBvbGRlciBmaXJlZm94XG5cbiAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAnc2Nyb2xsJywgZnVuY3Rpb24gc2Nyb2xsSGFuZGxlcihlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHIuc2Nyb2xsaW5nUGFnZSA9IHRydWU7XG4gICAgY2xlYXJUaW1lb3V0KHIuc2Nyb2xsaW5nUGFnZVRpbWVvdXQpO1xuICAgIHIuc2Nyb2xsaW5nUGFnZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHIuc2Nyb2xsaW5nUGFnZSA9IGZhbHNlO1xuICAgIH0sIDI1MCk7XG4gIH0sIHRydWUpOyAvLyBkZXNrdG9wIHNhZmFyaSBwaW5jaCB0byB6b29tIHN0YXJ0XG5cbiAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdnZXN0dXJlc3RhcnQnLCBmdW5jdGlvbiBnZXN0dXJlU3RhcnRIYW5kbGVyKGUpIHtcbiAgICByLmdlc3R1cmVTdGFydFpvb20gPSByLmN5Lnpvb20oKTtcblxuICAgIGlmICghci5oYXNUb3VjaFN0YXJ0ZWQpIHtcbiAgICAgIC8vIGRvbid0IGFmZmVjdCB0b3VjaCBkZXZpY2VzIGxpa2UgaXBob25lXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9LCB0cnVlKTtcbiAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdnZXN0dXJlY2hhbmdlJywgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoIXIuaGFzVG91Y2hTdGFydGVkKSB7XG4gICAgICAvLyBkb24ndCBhZmZlY3QgdG91Y2ggZGV2aWNlcyBsaWtlIGlwaG9uZVxuICAgICAgd2hlZWxIYW5kbGVyKGUpO1xuICAgIH1cbiAgfSwgdHJ1ZSk7IC8vIEZ1bmN0aW9ucyB0byBoZWxwIHdpdGggaGFuZGxpbmcgbW91c2VvdXQvbW91c2VvdmVyIG9uIHRoZSBDeXRvc2NhcGUgY29udGFpbmVyXG4gIC8vIEhhbmRsZSBtb3VzZW91dCBvbiBDeXRvc2NhcGUgY29udGFpbmVyXG5cbiAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdtb3VzZW91dCcsIGZ1bmN0aW9uIG1vdXNlT3V0SGFuZGxlcihlKSB7XG4gICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgci5jeS5lbWl0KHtcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICB0eXBlOiAnbW91c2VvdXQnLFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICB5OiBwb3NbMV1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgZmFsc2UpO1xuICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ21vdXNlb3ZlcicsIGZ1bmN0aW9uIG1vdXNlT3ZlckhhbmRsZXIoZSkge1xuICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgIHIuY3kuZW1pdCh7XG4gICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgdHlwZTogJ21vdXNlb3ZlcicsXG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgIHk6IHBvc1sxXVxuICAgICAgfVxuICAgIH0pO1xuICB9LCBmYWxzZSk7XG4gIHZhciBmMXgxLCBmMXkxLCBmMngxLCBmMnkxOyAvLyBzdGFydGluZyBwb2ludHMgZm9yIHBpbmNoLXRvLXpvb21cblxuICB2YXIgZGlzdGFuY2UxLCBkaXN0YW5jZTFTcTsgLy8gaW5pdGlhbCBkaXN0YW5jZSBiZXR3ZWVuIGZpbmdlciAxIGFuZCBmaW5nZXIgMiBmb3IgcGluY2gtdG8tem9vbVxuXG4gIHZhciBjZW50ZXIxLCBtb2RlbENlbnRlcjE7IC8vIGNlbnRlciBwb2ludCBvbiBzdGFydCBwaW5jaCB0byB6b29tXG5cbiAgdmFyIG9mZnNldExlZnQsIG9mZnNldFRvcDtcbiAgdmFyIGNvbnRhaW5lcldpZHRoLCBjb250YWluZXJIZWlnaHQ7XG4gIHZhciB0d29GaW5nZXJzU3RhcnRJbnNpZGU7XG5cbiAgdmFyIGRpc3RhbmNlID0gZnVuY3Rpb24gZGlzdGFuY2UoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KCh4MiAtIHgxKSAqICh4MiAtIHgxKSArICh5MiAtIHkxKSAqICh5MiAtIHkxKSk7XG4gIH07XG5cbiAgdmFyIGRpc3RhbmNlU3EgPSBmdW5jdGlvbiBkaXN0YW5jZVNxKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgcmV0dXJuICh4MiAtIHgxKSAqICh4MiAtIHgxKSArICh5MiAtIHkxKSAqICh5MiAtIHkxKTtcbiAgfTtcblxuICB2YXIgdG91Y2hzdGFydEhhbmRsZXI7XG4gIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAndG91Y2hzdGFydCcsIHRvdWNoc3RhcnRIYW5kbGVyID0gZnVuY3Rpb24gdG91Y2hzdGFydEhhbmRsZXIoZSkge1xuICAgIHIuaGFzVG91Y2hTdGFydGVkID0gdHJ1ZTtcblxuICAgIGlmICghZXZlbnRJbkNvbnRhaW5lcihlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGJsdXJBY3RpdmVEb21FbGVtZW50KCk7XG4gICAgci50b3VjaERhdGEuY2FwdHVyZSA9IHRydWU7XG4gICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gdW5kZWZpbmVkO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgdmFyIG5vdyA9IHIudG91Y2hEYXRhLm5vdztcbiAgICB2YXIgZWFybGllciA9IHIudG91Y2hEYXRhLmVhcmxpZXI7XG5cbiAgICBpZiAoZS50b3VjaGVzWzBdKSB7XG4gICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1swXS5jbGllbnRYLCBlLnRvdWNoZXNbMF0uY2xpZW50WSk7XG4gICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICBub3dbMV0gPSBwb3NbMV07XG4gICAgfVxuXG4gICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMV0uY2xpZW50WCwgZS50b3VjaGVzWzFdLmNsaWVudFkpO1xuICAgICAgbm93WzJdID0gcG9zWzBdO1xuICAgICAgbm93WzNdID0gcG9zWzFdO1xuICAgIH1cblxuICAgIGlmIChlLnRvdWNoZXNbMl0pIHtcbiAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzJdLmNsaWVudFgsIGUudG91Y2hlc1syXS5jbGllbnRZKTtcbiAgICAgIG5vd1s0XSA9IHBvc1swXTtcbiAgICAgIG5vd1s1XSA9IHBvc1sxXTtcbiAgICB9IC8vIHJlY29yZCBzdGFydGluZyBwb2ludHMgZm9yIHBpbmNoLXRvLXpvb21cblxuXG4gICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgci50b3VjaERhdGEuc2luZ2xlVG91Y2hNb3ZlZCA9IHRydWU7XG4gICAgICBmcmVlRHJhZ2dlZEVsZW1lbnRzKHIuZHJhZ0RhdGEudG91Y2hEcmFnRWxlcyk7XG4gICAgICB2YXIgb2Zmc2V0cyA9IHIuZmluZENvbnRhaW5lckNsaWVudENvb3JkcygpO1xuICAgICAgb2Zmc2V0TGVmdCA9IG9mZnNldHNbMF07XG4gICAgICBvZmZzZXRUb3AgPSBvZmZzZXRzWzFdO1xuICAgICAgY29udGFpbmVyV2lkdGggPSBvZmZzZXRzWzJdO1xuICAgICAgY29udGFpbmVySGVpZ2h0ID0gb2Zmc2V0c1szXTtcbiAgICAgIGYxeDEgPSBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIG9mZnNldExlZnQ7XG4gICAgICBmMXkxID0gZS50b3VjaGVzWzBdLmNsaWVudFkgLSBvZmZzZXRUb3A7XG4gICAgICBmMngxID0gZS50b3VjaGVzWzFdLmNsaWVudFggLSBvZmZzZXRMZWZ0O1xuICAgICAgZjJ5MSA9IGUudG91Y2hlc1sxXS5jbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgdHdvRmluZ2Vyc1N0YXJ0SW5zaWRlID0gMCA8PSBmMXgxICYmIGYxeDEgPD0gY29udGFpbmVyV2lkdGggJiYgMCA8PSBmMngxICYmIGYyeDEgPD0gY29udGFpbmVyV2lkdGggJiYgMCA8PSBmMXkxICYmIGYxeTEgPD0gY29udGFpbmVySGVpZ2h0ICYmIDAgPD0gZjJ5MSAmJiBmMnkxIDw9IGNvbnRhaW5lckhlaWdodDtcbiAgICAgIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuICAgICAgZGlzdGFuY2UxID0gZGlzdGFuY2UoZjF4MSwgZjF5MSwgZjJ4MSwgZjJ5MSk7XG4gICAgICBkaXN0YW5jZTFTcSA9IGRpc3RhbmNlU3EoZjF4MSwgZjF5MSwgZjJ4MSwgZjJ5MSk7XG4gICAgICBjZW50ZXIxID0gWyhmMXgxICsgZjJ4MSkgLyAyLCAoZjF5MSArIGYyeTEpIC8gMl07XG4gICAgICBtb2RlbENlbnRlcjEgPSBbKGNlbnRlcjFbMF0gLSBwYW4ueCkgLyB6b29tLCAoY2VudGVyMVsxXSAtIHBhbi55KSAvIHpvb21dOyAvLyBjb25zaWRlciBjb250ZXh0IHRhcFxuXG4gICAgICB2YXIgY3h0RGlzdFRocmVzaG9sZCA9IDIwMDtcbiAgICAgIHZhciBjeHREaXN0VGhyZXNob2xkU3EgPSBjeHREaXN0VGhyZXNob2xkICogY3h0RGlzdFRocmVzaG9sZDtcblxuICAgICAgaWYgKGRpc3RhbmNlMVNxIDwgY3h0RGlzdFRocmVzaG9sZFNxICYmICFlLnRvdWNoZXNbMl0pIHtcbiAgICAgICAgdmFyIG5lYXIxID0gci5maW5kTmVhcmVzdEVsZW1lbnQobm93WzBdLCBub3dbMV0sIHRydWUsIHRydWUpO1xuICAgICAgICB2YXIgbmVhcjIgPSByLmZpbmROZWFyZXN0RWxlbWVudChub3dbMl0sIG5vd1szXSwgdHJ1ZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKG5lYXIxICYmIG5lYXIxLmlzTm9kZSgpKSB7XG4gICAgICAgICAgbmVhcjEuYWN0aXZhdGUoKS5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICB0eXBlOiAnY3h0dGFwc3RhcnQnLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG5lYXIxO1xuICAgICAgICB9IGVsc2UgaWYgKG5lYXIyICYmIG5lYXIyLmlzTm9kZSgpKSB7XG4gICAgICAgICAgbmVhcjIuYWN0aXZhdGUoKS5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICB0eXBlOiAnY3h0dGFwc3RhcnQnLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG5lYXIyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN5LmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgIHR5cGU6ICdjeHR0YXBzdGFydCcsXG4gICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHIudG91Y2hEYXRhLnN0YXJ0KSB7XG4gICAgICAgICAgci50b3VjaERhdGEuc3RhcnQuX3ByaXZhdGUuZ3JhYmJlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgci50b3VjaERhdGEuY3h0ID0gdHJ1ZTtcbiAgICAgICAgci50b3VjaERhdGEuY3h0RHJhZ2dlZCA9IGZhbHNlO1xuICAgICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIHIucmVkcmF3KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZS50b3VjaGVzWzJdKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICAgIC8vIHNhZmFyaSBvbiBpb3MgcGFucyB0aGUgcGFnZSBvdGhlcndpc2UgKG5vcm1hbGx5IHlvdSBzaG91bGQgYmUgYWJsZSB0byBwcmV2ZW50ZGVmYXVsdCBvbiB0b3VjaG1vdmUuLi4pXG4gICAgICBpZiAoY3kuYm94U2VsZWN0aW9uRW5hYmxlZCgpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGUudG91Y2hlc1sxXSkgOyBlbHNlIGlmIChlLnRvdWNoZXNbMF0pIHtcbiAgICAgIHZhciBuZWFycyA9IHIuZmluZE5lYXJlc3RFbGVtZW50cyhub3dbMF0sIG5vd1sxXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICB2YXIgbmVhciA9IG5lYXJzWzBdO1xuXG4gICAgICBpZiAobmVhciAhPSBudWxsKSB7XG4gICAgICAgIG5lYXIuYWN0aXZhdGUoKTtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBuZWFyO1xuICAgICAgICByLnRvdWNoRGF0YS5zdGFydHMgPSBuZWFycztcblxuICAgICAgICBpZiAoci5ub2RlSXNHcmFiYmFibGUobmVhcikpIHtcbiAgICAgICAgICB2YXIgZHJhZ2dlZEVsZXMgPSByLmRyYWdEYXRhLnRvdWNoRHJhZ0VsZXMgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgICAgICAgdmFyIHNlbGVjdGVkTm9kZXMgPSBudWxsO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuXG4gICAgICAgICAgaWYgKG5lYXIuc2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgLy8gcmVzZXQgZHJhZyBlbGVtZW50cywgc2luY2UgbmVhciB3aWxsIGJlIGFkZGVkIGFnYWluXG4gICAgICAgICAgICBzZWxlY3RlZE5vZGVzID0gY3kuJChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlbGUuc2VsZWN0ZWQoKSAmJiByLm5vZGVJc0dyYWJiYWJsZShlbGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhZGROb2Rlc1RvRHJhZyhzZWxlY3RlZE5vZGVzLCB7XG4gICAgICAgICAgICAgIGFkZFRvTGlzdDogZHJhZ2dlZEVsZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhZGROb2RlVG9EcmFnKG5lYXIsIHtcbiAgICAgICAgICAgICAgYWRkVG9MaXN0OiBkcmFnZ2VkRWxlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2V0R3JhYlRhcmdldChuZWFyKTtcblxuICAgICAgICAgIHZhciBtYWtlRXZlbnQgPSBmdW5jdGlvbiBtYWtlRXZlbnQodHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIG5lYXIuZW1pdChtYWtlRXZlbnQoJ2dyYWJvbicpKTtcblxuICAgICAgICAgIGlmIChzZWxlY3RlZE5vZGVzKSB7XG4gICAgICAgICAgICBzZWxlY3RlZE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgICAgbi5lbWl0KG1ha2VFdmVudCgnZ3JhYicpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZWFyLmVtaXQobWFrZUV2ZW50KCdncmFiJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0cmlnZ2VyRXZlbnRzKG5lYXIsIFsndG91Y2hzdGFydCcsICd0YXBzdGFydCcsICd2bW91c2Vkb3duJ10sIGUsIHtcbiAgICAgICAgeDogbm93WzBdLFxuICAgICAgICB5OiBub3dbMV1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAobmVhciA9PSBudWxsKSB7XG4gICAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHtcbiAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgIH07XG4gICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3KCk7XG4gICAgICB9IC8vIFRhcCwgdGFwaG9sZFxuICAgICAgLy8gLS0tLS1cblxuXG4gICAgICByLnRvdWNoRGF0YS5zaW5nbGVUb3VjaE1vdmVkID0gZmFsc2U7XG4gICAgICByLnRvdWNoRGF0YS5zaW5nbGVUb3VjaFN0YXJ0VGltZSA9ICtuZXcgRGF0ZSgpO1xuICAgICAgY2xlYXJUaW1lb3V0KHIudG91Y2hEYXRhLnRhcGhvbGRUaW1lb3V0KTtcbiAgICAgIHIudG91Y2hEYXRhLnRhcGhvbGRUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChyLnRvdWNoRGF0YS5zaW5nbGVUb3VjaE1vdmVkID09PSBmYWxzZSAmJiAhci5waW5jaGluZyAvLyBpZiBwaW5jaGluZywgdGhlbiB0YXBob2xkIHVuc2VsZWN0IHNob3VsZG4ndCB0YWtlIGVmZmVjdFxuICAgICAgICAmJiAhci50b3VjaERhdGEuc2VsZWN0aW5nIC8vIGJveCBzZWxlY3Rpb24gc2hvdWxkbid0IGFsbG93IHRhcGhvbGQgdGhyb3VnaFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudHMoci50b3VjaERhdGEuc3RhcnQsIFsndGFwaG9sZCddLCBlLCB7XG4gICAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICB9LCByLnRhcGhvbGREdXJhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPj0gMSkge1xuICAgICAgdmFyIHNQb3MgPSByLnRvdWNoRGF0YS5zdGFydFBvc2l0aW9uID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm93Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHNQb3NbaV0gPSBlYXJsaWVyW2ldID0gbm93W2ldO1xuICAgICAgfVxuXG4gICAgICB2YXIgdG91Y2gwID0gZS50b3VjaGVzWzBdO1xuICAgICAgci50b3VjaERhdGEuc3RhcnRHUG9zaXRpb24gPSBbdG91Y2gwLmNsaWVudFgsIHRvdWNoMC5jbGllbnRZXTtcbiAgICB9XG4gIH0sIGZhbHNlKTtcbiAgdmFyIHRvdWNobW92ZUhhbmRsZXI7XG4gIHIucmVnaXN0ZXJCaW5kaW5nKHdpbmRvdywgJ3RvdWNobW92ZScsIHRvdWNobW92ZUhhbmRsZXIgPSBmdW5jdGlvbiB0b3VjaG1vdmVIYW5kbGVyKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGNhcHR1cmUgPSByLnRvdWNoRGF0YS5jYXB0dXJlO1xuXG4gICAgaWYgKCFjYXB0dXJlICYmICFldmVudEluQ29udGFpbmVyKGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgdmFyIG5vdyA9IHIudG91Y2hEYXRhLm5vdztcbiAgICB2YXIgZWFybGllciA9IHIudG91Y2hEYXRhLmVhcmxpZXI7XG4gICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG5cbiAgICBpZiAoZS50b3VjaGVzWzBdKSB7XG4gICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1swXS5jbGllbnRYLCBlLnRvdWNoZXNbMF0uY2xpZW50WSk7XG4gICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICBub3dbMV0gPSBwb3NbMV07XG4gICAgfVxuXG4gICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMV0uY2xpZW50WCwgZS50b3VjaGVzWzFdLmNsaWVudFkpO1xuICAgICAgbm93WzJdID0gcG9zWzBdO1xuICAgICAgbm93WzNdID0gcG9zWzFdO1xuICAgIH1cblxuICAgIGlmIChlLnRvdWNoZXNbMl0pIHtcbiAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzJdLmNsaWVudFgsIGUudG91Y2hlc1syXS5jbGllbnRZKTtcbiAgICAgIG5vd1s0XSA9IHBvc1swXTtcbiAgICAgIG5vd1s1XSA9IHBvc1sxXTtcbiAgICB9XG5cbiAgICB2YXIgc3RhcnRHUG9zID0gci50b3VjaERhdGEuc3RhcnRHUG9zaXRpb247XG4gICAgdmFyIGlzT3ZlclRocmVzaG9sZERyYWc7XG5cbiAgICBpZiAoY2FwdHVyZSAmJiBlLnRvdWNoZXNbMF0gJiYgc3RhcnRHUG9zKSB7XG4gICAgICB2YXIgZGlzcCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vdy5sZW5ndGg7IGorKykge1xuICAgICAgICBkaXNwW2pdID0gbm93W2pdIC0gZWFybGllcltqXTtcbiAgICAgIH1cblxuICAgICAgdmFyIGR4ID0gZS50b3VjaGVzWzBdLmNsaWVudFggLSBzdGFydEdQb3NbMF07XG4gICAgICB2YXIgZHgyID0gZHggKiBkeDtcbiAgICAgIHZhciBkeSA9IGUudG91Y2hlc1swXS5jbGllbnRZIC0gc3RhcnRHUG9zWzFdO1xuICAgICAgdmFyIGR5MiA9IGR5ICogZHk7XG4gICAgICB2YXIgZGlzdDIgPSBkeDIgKyBkeTI7XG4gICAgICBpc092ZXJUaHJlc2hvbGREcmFnID0gZGlzdDIgPj0gci50b3VjaFRhcFRocmVzaG9sZDI7XG4gICAgfSAvLyBjb250ZXh0IHN3aXBlIGNhbmNlbGxpbmdcblxuXG4gICAgaWYgKGNhcHR1cmUgJiYgci50b3VjaERhdGEuY3h0KSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB2YXIgZjF4MiA9IGUudG91Y2hlc1swXS5jbGllbnRYIC0gb2Zmc2V0TGVmdCxcbiAgICAgICAgICBmMXkyID0gZS50b3VjaGVzWzBdLmNsaWVudFkgLSBvZmZzZXRUb3A7XG4gICAgICB2YXIgZjJ4MiA9IGUudG91Y2hlc1sxXS5jbGllbnRYIC0gb2Zmc2V0TGVmdCxcbiAgICAgICAgICBmMnkyID0gZS50b3VjaGVzWzFdLmNsaWVudFkgLSBvZmZzZXRUb3A7IC8vIHZhciBkaXN0YW5jZTIgPSBkaXN0YW5jZSggZjF4MiwgZjF5MiwgZjJ4MiwgZjJ5MiApO1xuXG4gICAgICB2YXIgZGlzdGFuY2UyU3EgPSBkaXN0YW5jZVNxKGYxeDIsIGYxeTIsIGYyeDIsIGYyeTIpO1xuICAgICAgdmFyIGZhY3RvclNxID0gZGlzdGFuY2UyU3EgLyBkaXN0YW5jZTFTcTtcbiAgICAgIHZhciBkaXN0VGhyZXNob2xkID0gMTUwO1xuICAgICAgdmFyIGRpc3RUaHJlc2hvbGRTcSA9IGRpc3RUaHJlc2hvbGQgKiBkaXN0VGhyZXNob2xkO1xuICAgICAgdmFyIGZhY3RvclRocmVzaG9sZCA9IDEuNTtcbiAgICAgIHZhciBmYWN0b3JUaHJlc2hvbGRTcSA9IGZhY3RvclRocmVzaG9sZCAqIGZhY3RvclRocmVzaG9sZDsgLy8gY2FuY2VsIGN0eCBnZXN0dXJlcyBpZiB0aGUgZGlzdGFuY2UgYi90IHRoZSBmaW5nZXJzIGluY3JlYXNlc1xuXG4gICAgICBpZiAoZmFjdG9yU3EgPj0gZmFjdG9yVGhyZXNob2xkU3EgfHwgZGlzdGFuY2UyU3EgPj0gZGlzdFRocmVzaG9sZFNxKSB7XG4gICAgICAgIHIudG91Y2hEYXRhLmN4dCA9IGZhbHNlO1xuICAgICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgIHZhciBjeHRFdnQgPSB7XG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICB0eXBlOiAnY3h0dGFwZW5kJyxcbiAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChyLnRvdWNoRGF0YS5zdGFydCkge1xuICAgICAgICAgIHIudG91Y2hEYXRhLnN0YXJ0LnVuYWN0aXZhdGUoKS5lbWl0KGN4dEV2dCk7XG4gICAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN5LmVtaXQoY3h0RXZ0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gY29udGV4dCBzd2lwZVxuXG5cbiAgICBpZiAoY2FwdHVyZSAmJiByLnRvdWNoRGF0YS5jeHQpIHtcbiAgICAgIHZhciBjeHRFdnQgPSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6ICdjeHRkcmFnJyxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgeTogbm93WzFdXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuXG4gICAgICBpZiAoci50b3VjaERhdGEuc3RhcnQpIHtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnQuZW1pdChjeHRFdnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3kuZW1pdChjeHRFdnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoci50b3VjaERhdGEuc3RhcnQpIHtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnQuX3ByaXZhdGUuZ3JhYmJlZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByLnRvdWNoRGF0YS5jeHREcmFnZ2VkID0gdHJ1ZTtcbiAgICAgIHZhciBuZWFyID0gci5maW5kTmVhcmVzdEVsZW1lbnQobm93WzBdLCBub3dbMV0sIHRydWUsIHRydWUpO1xuXG4gICAgICBpZiAoIXIudG91Y2hEYXRhLmN4dE92ZXIgfHwgbmVhciAhPT0gci50b3VjaERhdGEuY3h0T3Zlcikge1xuICAgICAgICBpZiAoci50b3VjaERhdGEuY3h0T3Zlcikge1xuICAgICAgICAgIHIudG91Y2hEYXRhLmN4dE92ZXIuZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgdHlwZTogJ2N4dGRyYWdvdXQnLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHIudG91Y2hEYXRhLmN4dE92ZXIgPSBuZWFyO1xuXG4gICAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgICAgbmVhci5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICB0eXBlOiAnY3h0ZHJhZ292ZXInLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBib3ggc2VsZWN0aW9uXG5cbiAgICB9IGVsc2UgaWYgKGNhcHR1cmUgJiYgZS50b3VjaGVzWzJdICYmIGN5LmJveFNlbGVjdGlvbkVuYWJsZWQoKSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5sYXN0VGhyZWVUb3VjaCA9ICtuZXcgRGF0ZSgpO1xuXG4gICAgICBpZiAoIXIudG91Y2hEYXRhLnNlbGVjdGluZykge1xuICAgICAgICBjeS5lbWl0KHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgIHR5cGU6ICdib3hzdGFydCcsXG4gICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHIudG91Y2hEYXRhLnNlbGVjdGluZyA9IHRydWU7XG4gICAgICByLnRvdWNoRGF0YS5kaWRTZWxlY3QgPSB0cnVlO1xuICAgICAgc2VsZWN0WzRdID0gMTtcblxuICAgICAgaWYgKCFzZWxlY3QgfHwgc2VsZWN0Lmxlbmd0aCA9PT0gMCB8fCBzZWxlY3RbMF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZWxlY3RbMF0gPSAobm93WzBdICsgbm93WzJdICsgbm93WzRdKSAvIDM7XG4gICAgICAgIHNlbGVjdFsxXSA9IChub3dbMV0gKyBub3dbM10gKyBub3dbNV0pIC8gMztcbiAgICAgICAgc2VsZWN0WzJdID0gKG5vd1swXSArIG5vd1syXSArIG5vd1s0XSkgLyAzICsgMTtcbiAgICAgICAgc2VsZWN0WzNdID0gKG5vd1sxXSArIG5vd1szXSArIG5vd1s1XSkgLyAzICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGVjdFsyXSA9IChub3dbMF0gKyBub3dbMl0gKyBub3dbNF0pIC8gMztcbiAgICAgICAgc2VsZWN0WzNdID0gKG5vd1sxXSArIG5vd1szXSArIG5vd1s1XSkgLyAzO1xuICAgICAgfVxuXG4gICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgci5yZWRyYXcoKTsgLy8gcGluY2ggdG8gem9vbVxuICAgIH0gZWxzZSBpZiAoY2FwdHVyZSAmJiBlLnRvdWNoZXNbMV0gJiYgIXIudG91Y2hEYXRhLmRpZFNlbGVjdCAvLyBkb24ndCBhbGxvdyBib3ggc2VsZWN0aW9uIHRvIGRlZ3JhZGUgdG8gcGluY2gtdG8tem9vbVxuICAgICYmIGN5Lnpvb21pbmdFbmFibGVkKCkgJiYgY3kucGFubmluZ0VuYWJsZWQoKSAmJiBjeS51c2VyWm9vbWluZ0VuYWJsZWQoKSAmJiBjeS51c2VyUGFubmluZ0VuYWJsZWQoKSkge1xuICAgICAgLy8gdHdvIGZpbmdlcnMgPT4gcGluY2ggdG8gem9vbVxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgIHZhciBkcmFnZ2VkRWxlcyA9IHIuZHJhZ0RhdGEudG91Y2hEcmFnRWxlcztcblxuICAgICAgaWYgKGRyYWdnZWRFbGVzKSB7XG4gICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZHJhZ2dlZEVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZGVfcCA9IGRyYWdnZWRFbGVzW2ldLl9wcml2YXRlO1xuICAgICAgICAgIGRlX3AuZ3JhYmJlZCA9IGZhbHNlO1xuICAgICAgICAgIGRlX3AucnNjcmF0Y2guaW5EcmFnTGF5ZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgX3N0YXJ0ID0gci50b3VjaERhdGEuc3RhcnQ7IC8vICh4MiwgeTIpIGZvciBmaW5nZXJzIDEgYW5kIDJcblxuICAgICAgdmFyIGYxeDIgPSBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIG9mZnNldExlZnQsXG4gICAgICAgICAgZjF5MiA9IGUudG91Y2hlc1swXS5jbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgdmFyIGYyeDIgPSBlLnRvdWNoZXNbMV0uY2xpZW50WCAtIG9mZnNldExlZnQsXG4gICAgICAgICAgZjJ5MiA9IGUudG91Y2hlc1sxXS5jbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgdmFyIGRpc3RhbmNlMiA9IGRpc3RhbmNlKGYxeDIsIGYxeTIsIGYyeDIsIGYyeTIpOyAvLyB2YXIgZGlzdGFuY2UyU3EgPSBkaXN0YW5jZVNxKCBmMXgyLCBmMXkyLCBmMngyLCBmMnkyICk7XG4gICAgICAvLyB2YXIgZmFjdG9yID0gTWF0aC5zcXJ0KCBkaXN0YW5jZTJTcSApIC8gTWF0aC5zcXJ0KCBkaXN0YW5jZTFTcSApO1xuXG4gICAgICB2YXIgZmFjdG9yID0gZGlzdGFuY2UyIC8gZGlzdGFuY2UxO1xuXG4gICAgICBpZiAodHdvRmluZ2Vyc1N0YXJ0SW5zaWRlKSB7XG4gICAgICAgIC8vIGRlbHRhIGZpbmdlcjFcbiAgICAgICAgdmFyIGRmMXggPSBmMXgyIC0gZjF4MTtcbiAgICAgICAgdmFyIGRmMXkgPSBmMXkyIC0gZjF5MTsgLy8gZGVsdGEgZmluZ2VyIDJcblxuICAgICAgICB2YXIgZGYyeCA9IGYyeDIgLSBmMngxO1xuICAgICAgICB2YXIgZGYyeSA9IGYyeTIgLSBmMnkxOyAvLyB0cmFuc2xhdGlvbiBpcyB0aGUgbm9ybWFsaXNlZCB2ZWN0b3Igb2YgdGhlIHR3byBmaW5nZXJzIG1vdmVtZW50XG4gICAgICAgIC8vIGkuZS4gc28gcGluY2hpbmcgY2FuY2VscyBvdXQgYW5kIG1vdmluZyB0b2dldGhlciBwYW5zXG5cbiAgICAgICAgdmFyIHR4ID0gKGRmMXggKyBkZjJ4KSAvIDI7XG4gICAgICAgIHZhciB0eSA9IChkZjF5ICsgZGYyeSkgLyAyOyAvLyBub3cgY2FsY3VsYXRlIHRoZSB6b29tXG5cbiAgICAgICAgdmFyIHpvb20xID0gY3kuem9vbSgpO1xuICAgICAgICB2YXIgem9vbTIgPSB6b29tMSAqIGZhY3RvcjtcbiAgICAgICAgdmFyIHBhbjEgPSBjeS5wYW4oKTsgLy8gdGhlIG1vZGVsIGNlbnRlciBwb2ludCBjb252ZXJ0ZWQgdG8gdGhlIGN1cnJlbnQgcmVuZGVyZWQgcG9zXG5cbiAgICAgICAgdmFyIGN0cnggPSBtb2RlbENlbnRlcjFbMF0gKiB6b29tMSArIHBhbjEueDtcbiAgICAgICAgdmFyIGN0cnkgPSBtb2RlbENlbnRlcjFbMV0gKiB6b29tMSArIHBhbjEueTtcbiAgICAgICAgdmFyIHBhbjIgPSB7XG4gICAgICAgICAgeDogLXpvb20yIC8gem9vbTEgKiAoY3RyeCAtIHBhbjEueCAtIHR4KSArIGN0cngsXG4gICAgICAgICAgeTogLXpvb20yIC8gem9vbTEgKiAoY3RyeSAtIHBhbjEueSAtIHR5KSArIGN0cnlcbiAgICAgICAgfTsgLy8gcmVtb3ZlIGRyYWdnZWQgZWxlc1xuXG4gICAgICAgIGlmIChfc3RhcnQgJiYgX3N0YXJ0LmFjdGl2ZSgpKSB7XG4gICAgICAgICAgdmFyIGRyYWdnZWRFbGVzID0gci5kcmFnRGF0YS50b3VjaERyYWdFbGVzO1xuICAgICAgICAgIGZyZWVEcmFnZ2VkRWxlbWVudHMoZHJhZ2dlZEVsZXMpO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuXG4gICAgICAgICAgX3N0YXJ0LnVuYWN0aXZhdGUoKS5lbWl0KCdmcmVlb24nKTtcblxuICAgICAgICAgIGRyYWdnZWRFbGVzLmVtaXQoJ2ZyZWUnKTtcblxuICAgICAgICAgIGlmIChyLmRyYWdEYXRhLmRpZERyYWcpIHtcbiAgICAgICAgICAgIF9zdGFydC5lbWl0KCdkcmFnZnJlZW9uJyk7XG5cbiAgICAgICAgICAgIGRyYWdnZWRFbGVzLmVtaXQoJ2RyYWdmcmVlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY3kudmlld3BvcnQoe1xuICAgICAgICAgIHpvb206IHpvb20yLFxuICAgICAgICAgIHBhbjogcGFuMixcbiAgICAgICAgICBjYW5jZWxPbkZhaWxlZFpvb206IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIGN5LmVtaXQoJ3BpbmNoem9vbScpO1xuICAgICAgICBkaXN0YW5jZTEgPSBkaXN0YW5jZTI7XG4gICAgICAgIGYxeDEgPSBmMXgyO1xuICAgICAgICBmMXkxID0gZjF5MjtcbiAgICAgICAgZjJ4MSA9IGYyeDI7XG4gICAgICAgIGYyeTEgPSBmMnkyO1xuICAgICAgICByLnBpbmNoaW5nID0gdHJ1ZTtcbiAgICAgIH0gLy8gUmUtcHJvamVjdFxuXG5cbiAgICAgIGlmIChlLnRvdWNoZXNbMF0pIHtcbiAgICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMF0uY2xpZW50WCwgZS50b3VjaGVzWzBdLmNsaWVudFkpO1xuICAgICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICAgIG5vd1sxXSA9IHBvc1sxXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1sxXS5jbGllbnRYLCBlLnRvdWNoZXNbMV0uY2xpZW50WSk7XG4gICAgICAgIG5vd1syXSA9IHBvc1swXTtcbiAgICAgICAgbm93WzNdID0gcG9zWzFdO1xuICAgICAgfVxuXG4gICAgICBpZiAoZS50b3VjaGVzWzJdKSB7XG4gICAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzJdLmNsaWVudFgsIGUudG91Y2hlc1syXS5jbGllbnRZKTtcbiAgICAgICAgbm93WzRdID0gcG9zWzBdO1xuICAgICAgICBub3dbNV0gPSBwb3NbMV07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlLnRvdWNoZXNbMF0gJiYgIXIudG91Y2hEYXRhLmRpZFNlbGVjdCAvLyBkb24ndCBhbGxvdyBib3ggc2VsZWN0aW9uIHRvIGRlZ3JhZGUgdG8gc2luZ2xlIGZpbmdlciBldmVudHMgbGlrZSBwYW5uaW5nXG4gICAgKSB7XG4gICAgICAgIHZhciBzdGFydCA9IHIudG91Y2hEYXRhLnN0YXJ0O1xuICAgICAgICB2YXIgbGFzdCA9IHIudG91Y2hEYXRhLmxhc3Q7XG4gICAgICAgIHZhciBuZWFyO1xuXG4gICAgICAgIGlmICghci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzICYmICFyLnN3aXBlUGFubmluZykge1xuICAgICAgICAgIG5lYXIgPSByLmZpbmROZWFyZXN0RWxlbWVudChub3dbMF0sIG5vd1sxXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2FwdHVyZSAmJiBzdGFydCAhPSBudWxsKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IC8vIGRyYWdnaW5nIG5vZGVzXG5cblxuICAgICAgICBpZiAoY2FwdHVyZSAmJiBzdGFydCAhPSBudWxsICYmIHIubm9kZUlzRHJhZ2dhYmxlKHN0YXJ0KSkge1xuICAgICAgICAgIGlmIChpc092ZXJUaHJlc2hvbGREcmFnKSB7XG4gICAgICAgICAgICAvLyB0aGVuIGRyYWdnaW5nIGNhbiBoYXBwZW5cbiAgICAgICAgICAgIHZhciBkcmFnZ2VkRWxlcyA9IHIuZHJhZ0RhdGEudG91Y2hEcmFnRWxlcztcbiAgICAgICAgICAgIHZhciBqdXN0U3RhcnRlZERyYWcgPSAhci5kcmFnRGF0YS5kaWREcmFnO1xuXG4gICAgICAgICAgICBpZiAoanVzdFN0YXJ0ZWREcmFnKSB7XG4gICAgICAgICAgICAgIGFkZE5vZGVzVG9EcmFnKGRyYWdnZWRFbGVzLCB7XG4gICAgICAgICAgICAgICAgaW5EcmFnTGF5ZXI6IHRydWVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIuZHJhZ0RhdGEuZGlkRHJhZyA9IHRydWU7XG4gICAgICAgICAgICB2YXIgdG90YWxTaGlmdCA9IHtcbiAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKG51bWJlcihkaXNwWzBdKSAmJiBudW1iZXIoZGlzcFsxXSkpIHtcbiAgICAgICAgICAgICAgdG90YWxTaGlmdC54ICs9IGRpc3BbMF07XG4gICAgICAgICAgICAgIHRvdGFsU2hpZnQueSArPSBkaXNwWzFdO1xuXG4gICAgICAgICAgICAgIGlmIChqdXN0U3RhcnRlZERyYWcpIHtcbiAgICAgICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB2YXIgZHJhZ0RlbHRhID0gci50b3VjaERhdGEuZHJhZ0RlbHRhO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRyYWdEZWx0YSAmJiBudW1iZXIoZHJhZ0RlbHRhWzBdKSAmJiBudW1iZXIoZHJhZ0RlbHRhWzFdKSkge1xuICAgICAgICAgICAgICAgICAgdG90YWxTaGlmdC54ICs9IGRyYWdEZWx0YVswXTtcbiAgICAgICAgICAgICAgICAgIHRvdGFsU2hpZnQueSArPSBkcmFnRGVsdGFbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyA9IHRydWU7XG4gICAgICAgICAgICBkcmFnZ2VkRWxlcy5zaWxlbnRTaGlmdCh0b3RhbFNoaWZ0KS5lbWl0KCdwb3NpdGlvbiBkcmFnJyk7XG4gICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcblxuICAgICAgICAgICAgaWYgKHIudG91Y2hEYXRhLnN0YXJ0UG9zaXRpb25bMF0gPT0gZWFybGllclswXSAmJiByLnRvdWNoRGF0YS5zdGFydFBvc2l0aW9uWzFdID09IGVhcmxpZXJbMV0pIHtcbiAgICAgICAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIucmVkcmF3KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG90aGVyaXNlIGtlZXAgdHJhY2sgb2YgZHJhZyBkZWx0YSBmb3IgbGF0ZXJcbiAgICAgICAgICAgIHZhciBkcmFnRGVsdGEgPSByLnRvdWNoRGF0YS5kcmFnRGVsdGEgPSByLnRvdWNoRGF0YS5kcmFnRGVsdGEgfHwgW107XG5cbiAgICAgICAgICAgIGlmIChkcmFnRGVsdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIGRyYWdEZWx0YS5wdXNoKGRpc3BbMF0pO1xuICAgICAgICAgICAgICBkcmFnRGVsdGEucHVzaChkaXNwWzFdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGRyYWdEZWx0YVswXSArPSBkaXNwWzBdO1xuICAgICAgICAgICAgICBkcmFnRGVsdGFbMV0gKz0gZGlzcFsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gdG91Y2htb3ZlXG5cblxuICAgICAgICB7XG4gICAgICAgICAgdHJpZ2dlckV2ZW50cyhzdGFydCB8fCBuZWFyLCBbJ3RvdWNobW92ZScsICd0YXBkcmFnJywgJ3Ztb3VzZW1vdmUnXSwgZSwge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoKCFzdGFydCB8fCAhc3RhcnQuZ3JhYmJlZCgpKSAmJiBuZWFyICE9IGxhc3QpIHtcbiAgICAgICAgICAgIGlmIChsYXN0KSB7XG4gICAgICAgICAgICAgIGxhc3QuZW1pdCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGFwZHJhZ291dCcsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgICAgICAgIG5lYXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGFwZHJhZ292ZXInLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHIudG91Y2hEYXRhLmxhc3QgPSBuZWFyO1xuICAgICAgICB9IC8vIGNoZWNrIHRvIGNhbmNlbCB0YXBob2xkXG5cbiAgICAgICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vdy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKG5vd1tpXSAmJiByLnRvdWNoRGF0YS5zdGFydFBvc2l0aW9uW2ldICYmIGlzT3ZlclRocmVzaG9sZERyYWcpIHtcbiAgICAgICAgICAgICAgci50b3VjaERhdGEuc2luZ2xlVG91Y2hNb3ZlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIHBhbm5pbmdcblxuXG4gICAgICAgIGlmIChjYXB0dXJlICYmIChzdGFydCA9PSBudWxsIHx8IHN0YXJ0LnBhbm5hYmxlKCkpICYmIGN5LnBhbm5pbmdFbmFibGVkKCkgJiYgY3kudXNlclBhbm5pbmdFbmFibGVkKCkpIHtcbiAgICAgICAgICB2YXIgYWxsb3dQYXNzdGhyb3VnaCA9IGFsbG93UGFubmluZ1Bhc3N0aHJvdWdoKHN0YXJ0LCByLnRvdWNoRGF0YS5zdGFydHMpO1xuXG4gICAgICAgICAgaWYgKGFsbG93UGFzc3Rocm91Z2gpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgaWYgKCFyLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24pIHtcbiAgICAgICAgICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gYXJyYXkycG9pbnQoci50b3VjaERhdGEuc3RhcnRQb3NpdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyLnN3aXBlUGFubmluZykge1xuICAgICAgICAgICAgICBjeS5wYW5CeSh7XG4gICAgICAgICAgICAgICAgeDogZGlzcFswXSAqIHpvb20sXG4gICAgICAgICAgICAgICAgeTogZGlzcFsxXSAqIHpvb21cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGN5LmVtaXQoJ2RyYWdwYW4nKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNPdmVyVGhyZXNob2xkRHJhZykge1xuICAgICAgICAgICAgICByLnN3aXBlUGFubmluZyA9IHRydWU7XG4gICAgICAgICAgICAgIGN5LnBhbkJ5KHtcbiAgICAgICAgICAgICAgICB4OiBkeCAqIHpvb20sXG4gICAgICAgICAgICAgICAgeTogZHkgKiB6b29tXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjeS5lbWl0KCdkcmFncGFuJyk7XG5cbiAgICAgICAgICAgICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgc3RhcnQudW5hY3RpdmF0ZSgpO1xuICAgICAgICAgICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyBSZS1wcm9qZWN0XG5cblxuICAgICAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzBdLmNsaWVudFgsIGUudG91Y2hlc1swXS5jbGllbnRZKTtcbiAgICAgICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICAgICAgbm93WzFdID0gcG9zWzFdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vdy5sZW5ndGg7IGorKykge1xuICAgICAgZWFybGllcltqXSA9IG5vd1tqXTtcbiAgICB9IC8vIHRoZSBhY3RpdmUgYmcgaW5kaWNhdG9yIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gbWFraW5nIGEgc3dpcGUgdGhhdCBpcyBuZWl0aGVyIGZvciBkcmFnZ2luZyBub2RlcyBvciBwYW5uaW5nXG5cblxuICAgIGlmIChjYXB0dXJlICYmIGUudG91Y2hlcy5sZW5ndGggPiAwICYmICFyLmhvdmVyRGF0YS5kcmFnZ2luZ0VsZXMgJiYgIXIuc3dpcGVQYW5uaW5nICYmIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiAhPSBudWxsKSB7XG4gICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgci5yZWRyYXcoKTtcbiAgICB9XG4gIH0sIGZhbHNlKTtcbiAgdmFyIHRvdWNoY2FuY2VsSGFuZGxlcjtcbiAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAndG91Y2hjYW5jZWwnLCB0b3VjaGNhbmNlbEhhbmRsZXIgPSBmdW5jdGlvbiB0b3VjaGNhbmNlbEhhbmRsZXIoZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICB2YXIgc3RhcnQgPSByLnRvdWNoRGF0YS5zdGFydDtcbiAgICByLnRvdWNoRGF0YS5jYXB0dXJlID0gZmFsc2U7XG5cbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIHN0YXJ0LnVuYWN0aXZhdGUoKTtcbiAgICB9XG4gIH0pO1xuICB2YXIgdG91Y2hlbmRIYW5kbGVyLCBkaWREb3VibGVUb3VjaCwgdG91Y2hUaW1lb3V0LCBwcmV2VG91Y2hUaW1lU3RhbXA7XG4gIHIucmVnaXN0ZXJCaW5kaW5nKHdpbmRvdywgJ3RvdWNoZW5kJywgdG91Y2hlbmRIYW5kbGVyID0gZnVuY3Rpb24gdG91Y2hlbmRIYW5kbGVyKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgdmFyIHN0YXJ0ID0gci50b3VjaERhdGEuc3RhcnQ7XG4gICAgdmFyIGNhcHR1cmUgPSByLnRvdWNoRGF0YS5jYXB0dXJlO1xuXG4gICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHIudG91Y2hEYXRhLmNhcHR1cmUgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgIHIuc3dpcGVQYW5uaW5nID0gZmFsc2U7XG4gICAgci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzID0gZmFsc2U7XG4gICAgdmFyIGN5ID0gci5jeTtcbiAgICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgICB2YXIgbm93ID0gci50b3VjaERhdGEubm93O1xuICAgIHZhciBlYXJsaWVyID0gci50b3VjaERhdGEuZWFybGllcjtcblxuICAgIGlmIChlLnRvdWNoZXNbMF0pIHtcbiAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzBdLmNsaWVudFgsIGUudG91Y2hlc1swXS5jbGllbnRZKTtcbiAgICAgIG5vd1swXSA9IHBvc1swXTtcbiAgICAgIG5vd1sxXSA9IHBvc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoZS50b3VjaGVzWzFdKSB7XG4gICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1sxXS5jbGllbnRYLCBlLnRvdWNoZXNbMV0uY2xpZW50WSk7XG4gICAgICBub3dbMl0gPSBwb3NbMF07XG4gICAgICBub3dbM10gPSBwb3NbMV07XG4gICAgfVxuXG4gICAgaWYgKGUudG91Y2hlc1syXSkge1xuICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMl0uY2xpZW50WCwgZS50b3VjaGVzWzJdLmNsaWVudFkpO1xuICAgICAgbm93WzRdID0gcG9zWzBdO1xuICAgICAgbm93WzVdID0gcG9zWzFdO1xuICAgIH1cblxuICAgIGlmIChzdGFydCkge1xuICAgICAgc3RhcnQudW5hY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIHZhciBjdHhUYXBlbmQ7XG5cbiAgICBpZiAoci50b3VjaERhdGEuY3h0KSB7XG4gICAgICBjdHhUYXBlbmQgPSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6ICdjeHR0YXBlbmQnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgIHN0YXJ0LmVtaXQoY3R4VGFwZW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN5LmVtaXQoY3R4VGFwZW5kKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFyLnRvdWNoRGF0YS5jeHREcmFnZ2VkKSB7XG4gICAgICAgIHZhciBjdHhUYXAgPSB7XG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICB0eXBlOiAnY3h0dGFwJyxcbiAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChzdGFydCkge1xuICAgICAgICAgIHN0YXJ0LmVtaXQoY3R4VGFwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjeS5lbWl0KGN0eFRhcCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHIudG91Y2hEYXRhLnN0YXJ0KSB7XG4gICAgICAgIHIudG91Y2hEYXRhLnN0YXJ0Ll9wcml2YXRlLmdyYWJiZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgci50b3VjaERhdGEuY3h0ID0gZmFsc2U7XG4gICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG51bGw7XG4gICAgICByLnJlZHJhdygpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gbm8gbW9yZSBib3ggc2VsZWN0aW9uIGlmIHdlIGRvbid0IGhhdmUgdGhyZWUgZmluZ2Vyc1xuXG5cbiAgICBpZiAoIWUudG91Y2hlc1syXSAmJiBjeS5ib3hTZWxlY3Rpb25FbmFibGVkKCkgJiYgci50b3VjaERhdGEuc2VsZWN0aW5nKSB7XG4gICAgICByLnRvdWNoRGF0YS5zZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgIHZhciBib3ggPSBjeS5jb2xsZWN0aW9uKHIuZ2V0QWxsSW5Cb3goc2VsZWN0WzBdLCBzZWxlY3RbMV0sIHNlbGVjdFsyXSwgc2VsZWN0WzNdKSk7XG4gICAgICBzZWxlY3RbMF0gPSB1bmRlZmluZWQ7XG4gICAgICBzZWxlY3RbMV0gPSB1bmRlZmluZWQ7XG4gICAgICBzZWxlY3RbMl0gPSB1bmRlZmluZWQ7XG4gICAgICBzZWxlY3RbM10gPSB1bmRlZmluZWQ7XG4gICAgICBzZWxlY3RbNF0gPSAwO1xuICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgIGN5LmVtaXQoe1xuICAgICAgICB0eXBlOiAnYm94ZW5kJyxcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgeTogbm93WzFdXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB2YXIgZWxlV291bGRCZVNlbGVjdGVkID0gZnVuY3Rpb24gZWxlV291bGRCZVNlbGVjdGVkKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLnNlbGVjdGFibGUoKSAmJiAhZWxlLnNlbGVjdGVkKCk7XG4gICAgICB9O1xuXG4gICAgICBib3guZW1pdCgnYm94Jykuc3RkRmlsdGVyKGVsZVdvdWxkQmVTZWxlY3RlZCkuc2VsZWN0KCkuZW1pdCgnYm94c2VsZWN0Jyk7XG5cbiAgICAgIGlmIChib3gubm9uZW1wdHkoKSkge1xuICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgIH1cblxuICAgICAgci5yZWRyYXcoKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgIT0gbnVsbCkge1xuICAgICAgc3RhcnQudW5hY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIGlmIChlLnRvdWNoZXNbMl0pIHtcbiAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChlLnRvdWNoZXNbMV0pIDsgZWxzZSBpZiAoZS50b3VjaGVzWzBdKSA7IGVsc2UgaWYgKCFlLnRvdWNoZXNbMF0pIHtcbiAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICB2YXIgZHJhZ2dlZEVsZXMgPSByLmRyYWdEYXRhLnRvdWNoRHJhZ0VsZXM7XG5cbiAgICAgIGlmIChzdGFydCAhPSBudWxsKSB7XG4gICAgICAgIHZhciBzdGFydFdhc0dyYWJiZWQgPSBzdGFydC5fcHJpdmF0ZS5ncmFiYmVkO1xuICAgICAgICBmcmVlRHJhZ2dlZEVsZW1lbnRzKGRyYWdnZWRFbGVzKTtcbiAgICAgICAgci5yZWRyYXdIaW50KCdkcmFnJywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuXG4gICAgICAgIGlmIChzdGFydFdhc0dyYWJiZWQpIHtcbiAgICAgICAgICBzdGFydC5lbWl0KCdmcmVlb24nKTtcbiAgICAgICAgICBkcmFnZ2VkRWxlcy5lbWl0KCdmcmVlJyk7XG5cbiAgICAgICAgICBpZiAoci5kcmFnRGF0YS5kaWREcmFnKSB7XG4gICAgICAgICAgICBzdGFydC5lbWl0KCdkcmFnZnJlZW9uJyk7XG4gICAgICAgICAgICBkcmFnZ2VkRWxlcy5lbWl0KCdkcmFnZnJlZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRyaWdnZXJFdmVudHMoc3RhcnQsIFsndG91Y2hlbmQnLCAndGFwZW5kJywgJ3Ztb3VzZXVwJywgJ3RhcGRyYWdvdXQnXSwgZSwge1xuICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgfSk7XG4gICAgICAgIHN0YXJ0LnVuYWN0aXZhdGUoKTtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5lYXIgPSByLmZpbmROZWFyZXN0RWxlbWVudChub3dbMF0sIG5vd1sxXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHRyaWdnZXJFdmVudHMobmVhciwgWyd0b3VjaGVuZCcsICd0YXBlbmQnLCAndm1vdXNldXAnLCAndGFwZHJhZ291dCddLCBlLCB7XG4gICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGR4ID0gci50b3VjaERhdGEuc3RhcnRQb3NpdGlvblswXSAtIG5vd1swXTtcbiAgICAgIHZhciBkeDIgPSBkeCAqIGR4O1xuICAgICAgdmFyIGR5ID0gci50b3VjaERhdGEuc3RhcnRQb3NpdGlvblsxXSAtIG5vd1sxXTtcbiAgICAgIHZhciBkeTIgPSBkeSAqIGR5O1xuICAgICAgdmFyIGRpc3QyID0gZHgyICsgZHkyO1xuICAgICAgdmFyIHJkaXN0MiA9IGRpc3QyICogem9vbSAqIHpvb207IC8vIFRhcCBldmVudCwgcm91Z2hseSBzYW1lIGFzIG1vdXNlIGNsaWNrIGV2ZW50IGZvciB0b3VjaFxuXG4gICAgICBpZiAoIXIudG91Y2hEYXRhLnNpbmdsZVRvdWNoTW92ZWQpIHtcbiAgICAgICAgaWYgKCFzdGFydCkge1xuICAgICAgICAgIGN5LiQoJzpzZWxlY3RlZCcpLnVuc2VsZWN0KFsndGFwdW5zZWxlY3QnXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0cmlnZ2VyRXZlbnRzKHN0YXJ0LCBbJ3RhcCcsICd2Y2xpY2snXSwgZSwge1xuICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgfSk7XG4gICAgICAgIGRpZERvdWJsZVRvdWNoID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKGUudGltZVN0YW1wIC0gcHJldlRvdWNoVGltZVN0YW1wIDw9IGN5Lm11bHRpQ2xpY2tEZWJvdW5jZVRpbWUoKSkge1xuICAgICAgICAgIHRvdWNoVGltZW91dCAmJiBjbGVhclRpbWVvdXQodG91Y2hUaW1lb3V0KTtcbiAgICAgICAgICBkaWREb3VibGVUb3VjaCA9IHRydWU7XG4gICAgICAgICAgcHJldlRvdWNoVGltZVN0YW1wID0gbnVsbDtcbiAgICAgICAgICB0cmlnZ2VyRXZlbnRzKHN0YXJ0LCBbJ2RibHRhcCcsICd2ZGJsY2xpY2snXSwgZSwge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG91Y2hUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZGlkRG91YmxlVG91Y2gpIHJldHVybjtcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudHMoc3RhcnQsIFsnb25ldGFwJywgJ3ZvbmVjbGljayddLCBlLCB7XG4gICAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCBjeS5tdWx0aUNsaWNrRGVib3VuY2VUaW1lKCkpO1xuICAgICAgICAgIHByZXZUb3VjaFRpbWVTdGFtcCA9IGUudGltZVN0YW1wO1xuICAgICAgICB9XG4gICAgICB9IC8vIFByZXBhcmUgdG8gc2VsZWN0IHRoZSBjdXJyZW50bHkgdG91Y2hlZCBub2RlLCBvbmx5IGlmIGl0IGhhc24ndCBiZWVuIGRyYWdnZWQgcGFzdCBhIGNlcnRhaW4gZGlzdGFuY2VcblxuXG4gICAgICBpZiAoc3RhcnQgIT0gbnVsbCAmJiAhci5kcmFnRGF0YS5kaWREcmFnIC8vIGRpZG4ndCBkcmFnIG5vZGVzIGFyb3VuZFxuICAgICAgJiYgc3RhcnQuX3ByaXZhdGUuc2VsZWN0YWJsZSAmJiByZGlzdDIgPCByLnRvdWNoVGFwVGhyZXNob2xkMiAmJiAhci5waW5jaGluZyAvLyBwaW5jaCB0byB6b29tIHNob3VsZCBub3QgYWZmZWN0IHNlbGVjdGlvblxuICAgICAgKSB7XG4gICAgICAgICAgaWYgKGN5LnNlbGVjdGlvblR5cGUoKSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgIGN5LiQoaXNTZWxlY3RlZCkudW5tZXJnZShzdGFydCkudW5zZWxlY3QoWyd0YXB1bnNlbGVjdCddKTtcbiAgICAgICAgICAgIHN0YXJ0LnNlbGVjdChbJ3RhcHNlbGVjdCddKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHN0YXJ0LnNlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgICAgc3RhcnQudW5zZWxlY3QoWyd0YXB1bnNlbGVjdCddKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN0YXJ0LnNlbGVjdChbJ3RhcHNlbGVjdCddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICByLnRvdWNoRGF0YS5zaW5nbGVUb3VjaE1vdmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vdy5sZW5ndGg7IGorKykge1xuICAgICAgZWFybGllcltqXSA9IG5vd1tqXTtcbiAgICB9XG5cbiAgICByLmRyYWdEYXRhLmRpZERyYWcgPSBmYWxzZTsgLy8gcmVzZXQgZm9yIG5leHQgdG91Y2hzdGFydFxuXG4gICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHIudG91Y2hEYXRhLmRyYWdEZWx0YSA9IFtdO1xuICAgICAgci50b3VjaERhdGEuc3RhcnRQb3NpdGlvbiA9IG51bGw7XG4gICAgICByLnRvdWNoRGF0YS5zdGFydEdQb3NpdGlvbiA9IG51bGw7XG4gICAgICByLnRvdWNoRGF0YS5kaWRTZWxlY3QgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIC8vIHRoZSBvbGQgc3RhcnQgZ2xvYmFsIHBvcyduIG1heSBub3QgYmUgdGhlIHNhbWUgZmluZ2VyIHRoYXQgcmVtYWluc1xuICAgICAgICByLnRvdWNoRGF0YS5zdGFydEdQb3NpdGlvbiA9IFtlLnRvdWNoZXNbMF0uY2xpZW50WCwgZS50b3VjaGVzWzBdLmNsaWVudFldO1xuICAgICAgfVxuXG4gICAgICByLnBpbmNoaW5nID0gZmFsc2U7XG4gICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgIHIucmVkcmF3KCk7XG4gICAgfSAvL3IucmVkcmF3KCk7XG5cbiAgfSwgZmFsc2UpOyAvLyBmYWxsYmFjayBjb21wYXRpYmlsaXR5IGxheWVyIGZvciBtcyBwb2ludGVyIGV2ZW50c1xuXG4gIGlmICh0eXBlb2YgVG91Y2hFdmVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgcG9pbnRlcnMgPSBbXTtcblxuICAgIHZhciBtYWtlVG91Y2ggPSBmdW5jdGlvbiBtYWtlVG91Y2goZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xpZW50WDogZS5jbGllbnRYLFxuICAgICAgICBjbGllbnRZOiBlLmNsaWVudFksXG4gICAgICAgIGZvcmNlOiAxLFxuICAgICAgICBpZGVudGlmaWVyOiBlLnBvaW50ZXJJZCxcbiAgICAgICAgcGFnZVg6IGUucGFnZVgsXG4gICAgICAgIHBhZ2VZOiBlLnBhZ2VZLFxuICAgICAgICByYWRpdXNYOiBlLndpZHRoIC8gMixcbiAgICAgICAgcmFkaXVzWTogZS5oZWlnaHQgLyAyLFxuICAgICAgICBzY3JlZW5YOiBlLnNjcmVlblgsXG4gICAgICAgIHNjcmVlblk6IGUuc2NyZWVuWSxcbiAgICAgICAgdGFyZ2V0OiBlLnRhcmdldFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdmFyIG1ha2VQb2ludGVyID0gZnVuY3Rpb24gbWFrZVBvaW50ZXIoZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIHRvdWNoOiBtYWtlVG91Y2goZSlcbiAgICAgIH07XG4gICAgfTtcblxuICAgIHZhciBhZGRQb2ludGVyID0gZnVuY3Rpb24gYWRkUG9pbnRlcihlKSB7XG4gICAgICBwb2ludGVycy5wdXNoKG1ha2VQb2ludGVyKGUpKTtcbiAgICB9O1xuXG4gICAgdmFyIHJlbW92ZVBvaW50ZXIgPSBmdW5jdGlvbiByZW1vdmVQb2ludGVyKGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHAgPSBwb2ludGVyc1tpXTtcblxuICAgICAgICBpZiAocC5ldmVudC5wb2ludGVySWQgPT09IGUucG9pbnRlcklkKSB7XG4gICAgICAgICAgcG9pbnRlcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgdXBkYXRlUG9pbnRlciA9IGZ1bmN0aW9uIHVwZGF0ZVBvaW50ZXIoZSkge1xuICAgICAgdmFyIHAgPSBwb2ludGVycy5maWx0ZXIoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHAuZXZlbnQucG9pbnRlcklkID09PSBlLnBvaW50ZXJJZDtcbiAgICAgIH0pWzBdO1xuICAgICAgcC5ldmVudCA9IGU7XG4gICAgICBwLnRvdWNoID0gbWFrZVRvdWNoKGUpO1xuICAgIH07XG5cbiAgICB2YXIgYWRkVG91Y2hlc1RvRXZlbnQgPSBmdW5jdGlvbiBhZGRUb3VjaGVzVG9FdmVudChlKSB7XG4gICAgICBlLnRvdWNoZXMgPSBwb2ludGVycy5tYXAoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHAudG91Y2g7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdmFyIHBvaW50ZXJJc01vdXNlID0gZnVuY3Rpb24gcG9pbnRlcklzTW91c2UoZSkge1xuICAgICAgcmV0dXJuIGUucG9pbnRlclR5cGUgPT09ICdtb3VzZScgfHwgZS5wb2ludGVyVHlwZSA9PT0gNDtcbiAgICB9O1xuXG4gICAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdwb2ludGVyZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAocG9pbnRlcklzTW91c2UoZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBtb3VzZSBhbHJlYWR5IGhhbmRsZWRcblxuXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBhZGRQb2ludGVyKGUpO1xuICAgICAgYWRkVG91Y2hlc1RvRXZlbnQoZSk7XG4gICAgICB0b3VjaHN0YXJ0SGFuZGxlcihlKTtcbiAgICB9KTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ3BvaW50ZXJ1cCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAocG9pbnRlcklzTW91c2UoZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBtb3VzZSBhbHJlYWR5IGhhbmRsZWRcblxuXG4gICAgICByZW1vdmVQb2ludGVyKGUpO1xuICAgICAgYWRkVG91Y2hlc1RvRXZlbnQoZSk7XG4gICAgICB0b3VjaGVuZEhhbmRsZXIoZSk7XG4gICAgfSk7XG4gICAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdwb2ludGVyY2FuY2VsJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChwb2ludGVySXNNb3VzZShlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIG1vdXNlIGFscmVhZHkgaGFuZGxlZFxuXG5cbiAgICAgIHJlbW92ZVBvaW50ZXIoZSk7XG4gICAgICBhZGRUb3VjaGVzVG9FdmVudChlKTtcbiAgICAgIHRvdWNoY2FuY2VsSGFuZGxlcihlKTtcbiAgICB9KTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ3BvaW50ZXJtb3ZlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChwb2ludGVySXNNb3VzZShlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIG1vdXNlIGFscmVhZHkgaGFuZGxlZFxuXG5cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHVwZGF0ZVBvaW50ZXIoZSk7XG4gICAgICBhZGRUb3VjaGVzVG9FdmVudChlKTtcbiAgICAgIHRvdWNobW92ZUhhbmRsZXIoZSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbnZhciBCUnAkZCA9IHt9O1xuXG5CUnAkZC5nZW5lcmF0ZVBvbHlnb24gPSBmdW5jdGlvbiAobmFtZSwgcG9pbnRzKSB7XG4gIHJldHVybiB0aGlzLm5vZGVTaGFwZXNbbmFtZV0gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogbmFtZSxcbiAgICBwb2ludHM6IHBvaW50cyxcbiAgICBkcmF3OiBmdW5jdGlvbiBkcmF3KGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIubm9kZVNoYXBlSW1wbCgncG9seWdvbicsIGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHRoaXMucG9pbnRzKTtcbiAgICB9LFxuICAgIGludGVyc2VjdExpbmU6IGZ1bmN0aW9uIGludGVyc2VjdExpbmUobm9kZVgsIG5vZGVZLCB3aWR0aCwgaGVpZ2h0LCB4LCB5LCBwYWRkaW5nKSB7XG4gICAgICByZXR1cm4gcG9seWdvbkludGVyc2VjdExpbmUoeCwgeSwgdGhpcy5wb2ludHMsIG5vZGVYLCBub2RlWSwgd2lkdGggLyAyLCBoZWlnaHQgLyAyLCBwYWRkaW5nKTtcbiAgICB9LFxuICAgIGNoZWNrUG9pbnQ6IGZ1bmN0aW9uIGNoZWNrUG9pbnQoeCwgeSwgcGFkZGluZywgd2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgcmV0dXJuIHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgWzAsIC0xXSwgcGFkZGluZyk7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVFbGxpcHNlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ub2RlU2hhcGVzWydlbGxpcHNlJ10gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogJ2VsbGlwc2UnLFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5ub2RlU2hhcGVJbXBsKHRoaXMubmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgcmV0dXJuIGludGVyc2VjdExpbmVFbGxpcHNlKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGggLyAyICsgcGFkZGluZywgaGVpZ2h0IC8gMiArIHBhZGRpbmcpO1xuICAgIH0sXG4gICAgY2hlY2tQb2ludDogZnVuY3Rpb24gY2hlY2tQb2ludCh4LCB5LCBwYWRkaW5nLCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKSB7XG4gICAgICByZXR1cm4gY2hlY2tJbkVsbGlwc2UoeCwgeSwgd2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSwgcGFkZGluZyk7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVSb3VuZFBvbHlnb24gPSBmdW5jdGlvbiAobmFtZSwgcG9pbnRzKSB7XG4gIC8vIFByZS1jb21wdXRlIGNvbnRyb2wgcG9pbnRzXG4gIC8vIFNpbmNlIHRoZXNlIHBvaW50cyBkZXBlbmQgb24gdGhlIHJhZGl1cyBsZW5ndGggKHdoaWNoIGluIHR1cm5zIGRlcGVuZCBvbiB0aGUgd2lkdGgvaGVpZ2h0IG9mIHRoZSBub2RlKSB3ZSB3aWxsIG9ubHkgcHJlLWNvbXB1dGVcbiAgLy8gdGhlIHVuaXQgdmVjdG9ycy5cbiAgLy8gRm9yIHNpbXBsaWNpdHkgdGhlIGxheW91dCB3aWxsIGJlOlxuICAvLyBbIHAwLCBVbml0VmVjdG9yUDBQMSwgcDEsIFVuaVZlY3RvclAxUDIsIC4uLiwgcG4sIFVuaXRWZWN0b3JQblAwIF1cbiAgdmFyIGFsbFBvaW50cyA9IG5ldyBBcnJheShwb2ludHMubGVuZ3RoICogMik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZUluZGV4ID0gaSAqIDI7XG4gICAgdmFyIGRlc3RJbmRleCA9IHZvaWQgMDtcblxuICAgIGlmIChpIDwgcG9pbnRzLmxlbmd0aCAvIDIgLSAxKSB7XG4gICAgICBkZXN0SW5kZXggPSAoaSArIDEpICogMjtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVzdEluZGV4ID0gMDtcbiAgICB9XG5cbiAgICBhbGxQb2ludHNbaSAqIDRdID0gcG9pbnRzW3NvdXJjZUluZGV4XTtcbiAgICBhbGxQb2ludHNbaSAqIDQgKyAxXSA9IHBvaW50c1tzb3VyY2VJbmRleCArIDFdO1xuICAgIHZhciB4RGVzdCA9IHBvaW50c1tkZXN0SW5kZXhdIC0gcG9pbnRzW3NvdXJjZUluZGV4XTtcbiAgICB2YXIgeURlc3QgPSBwb2ludHNbZGVzdEluZGV4ICsgMV0gLSBwb2ludHNbc291cmNlSW5kZXggKyAxXTtcbiAgICB2YXIgbm9ybSA9IE1hdGguc3FydCh4RGVzdCAqIHhEZXN0ICsgeURlc3QgKiB5RGVzdCk7XG4gICAgYWxsUG9pbnRzW2kgKiA0ICsgMl0gPSB4RGVzdCAvIG5vcm07XG4gICAgYWxsUG9pbnRzW2kgKiA0ICsgM10gPSB5RGVzdCAvIG5vcm07XG4gIH1cblxuICByZXR1cm4gdGhpcy5ub2RlU2hhcGVzW25hbWVdID0ge1xuICAgIHJlbmRlcmVyOiB0aGlzLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgcG9pbnRzOiBhbGxQb2ludHMsXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLm5vZGVTaGFwZUltcGwoJ3JvdW5kLXBvbHlnb24nLCBjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0LCB0aGlzLnBvaW50cyk7XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgcmV0dXJuIHJvdW5kUG9seWdvbkludGVyc2VjdExpbmUoeCwgeSwgdGhpcy5wb2ludHMsIG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSxcbiAgICBjaGVja1BvaW50OiBmdW5jdGlvbiBjaGVja1BvaW50KHgsIHksIHBhZGRpbmcsIHdpZHRoLCBoZWlnaHQsIGNlbnRlclgsIGNlbnRlclkpIHtcbiAgICAgIHJldHVybiBwb2ludEluc2lkZVJvdW5kUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVSb3VuZFJlY3RhbmdsZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubm9kZVNoYXBlc1sncm91bmQtcmVjdGFuZ2xlJ10gPSB0aGlzLm5vZGVTaGFwZXNbJ3JvdW5kcmVjdGFuZ2xlJ10gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogJ3JvdW5kLXJlY3RhbmdsZScsXG4gICAgcG9pbnRzOiBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNCwgMCksXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLm5vZGVTaGFwZUltcGwodGhpcy5uYW1lLCBjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB9LFxuICAgIGludGVyc2VjdExpbmU6IGZ1bmN0aW9uIGludGVyc2VjdExpbmUobm9kZVgsIG5vZGVZLCB3aWR0aCwgaGVpZ2h0LCB4LCB5LCBwYWRkaW5nKSB7XG4gICAgICByZXR1cm4gcm91bmRSZWN0YW5nbGVJbnRlcnNlY3RMaW5lKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgcGFkZGluZyk7XG4gICAgfSxcbiAgICBjaGVja1BvaW50OiBmdW5jdGlvbiBjaGVja1BvaW50KHgsIHksIHBhZGRpbmcsIHdpZHRoLCBoZWlnaHQsIGNlbnRlclgsIGNlbnRlclkpIHtcbiAgICAgIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIHZhciBkaWFtID0gY29ybmVyUmFkaXVzICogMjsgLy8gQ2hlY2sgaEJveFxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gZGlhbSwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IC8vIENoZWNrIHZCb3hcblxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCAtIGRpYW0sIGhlaWdodCwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IC8vIENoZWNrIHRvcCBsZWZ0IHF1YXJ0ZXIgY2lyY2xlXG5cblxuICAgICAgaWYgKGNoZWNrSW5FbGxpcHNlKHgsIHksIGRpYW0sIGRpYW0sIGNlbnRlclggLSB3aWR0aCAvIDIgKyBjb3JuZXJSYWRpdXMsIGNlbnRlclkgLSBoZWlnaHQgLyAyICsgY29ybmVyUmFkaXVzLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gQ2hlY2sgdG9wIHJpZ2h0IHF1YXJ0ZXIgY2lyY2xlXG5cblxuICAgICAgaWYgKGNoZWNrSW5FbGxpcHNlKHgsIHksIGRpYW0sIGRpYW0sIGNlbnRlclggKyB3aWR0aCAvIDIgLSBjb3JuZXJSYWRpdXMsIGNlbnRlclkgLSBoZWlnaHQgLyAyICsgY29ybmVyUmFkaXVzLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gQ2hlY2sgYm90dG9tIHJpZ2h0IHF1YXJ0ZXIgY2lyY2xlXG5cblxuICAgICAgaWYgKGNoZWNrSW5FbGxpcHNlKHgsIHksIGRpYW0sIGRpYW0sIGNlbnRlclggKyB3aWR0aCAvIDIgLSBjb3JuZXJSYWRpdXMsIGNlbnRlclkgKyBoZWlnaHQgLyAyIC0gY29ybmVyUmFkaXVzLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gQ2hlY2sgYm90dG9tIGxlZnQgcXVhcnRlciBjaXJjbGVcblxuXG4gICAgICBpZiAoY2hlY2tJbkVsbGlwc2UoeCwgeSwgZGlhbSwgZGlhbSwgY2VudGVyWCAtIHdpZHRoIC8gMiArIGNvcm5lclJhZGl1cywgY2VudGVyWSArIGhlaWdodCAvIDIgLSBjb3JuZXJSYWRpdXMsIHBhZGRpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVDdXRSZWN0YW5nbGUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLm5vZGVTaGFwZXNbJ2N1dC1yZWN0YW5nbGUnXSA9IHRoaXMubm9kZVNoYXBlc1snY3V0cmVjdGFuZ2xlJ10gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogJ2N1dC1yZWN0YW5nbGUnLFxuICAgIGNvcm5lckxlbmd0aDogZ2V0Q3V0UmVjdGFuZ2xlQ29ybmVyTGVuZ3RoKCksXG4gICAgcG9pbnRzOiBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNCwgMCksXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLm5vZGVTaGFwZUltcGwodGhpcy5uYW1lLCBjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB9LFxuICAgIGdlbmVyYXRlQ3V0VHJpYW5nbGVQdHM6IGZ1bmN0aW9uIGdlbmVyYXRlQ3V0VHJpYW5nbGVQdHMod2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgdmFyIGNsID0gdGhpcy5jb3JuZXJMZW5ndGg7XG4gICAgICB2YXIgaGggPSBoZWlnaHQgLyAyO1xuICAgICAgdmFyIGh3ID0gd2lkdGggLyAyO1xuICAgICAgdmFyIHhCZWdpbiA9IGNlbnRlclggLSBodztcbiAgICAgIHZhciB4RW5kID0gY2VudGVyWCArIGh3O1xuICAgICAgdmFyIHlCZWdpbiA9IGNlbnRlclkgLSBoaDtcbiAgICAgIHZhciB5RW5kID0gY2VudGVyWSArIGhoOyAvLyBwb2ludHMgYXJlIGluIGNsb2Nrd2lzZSBvcmRlciwgaW5uZXIgKGltYWdpbmFyeSkgdHJpYW5nbGUgcHQgb24gWzQsIDVdXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvcExlZnQ6IFt4QmVnaW4sIHlCZWdpbiArIGNsLCB4QmVnaW4gKyBjbCwgeUJlZ2luLCB4QmVnaW4gKyBjbCwgeUJlZ2luICsgY2xdLFxuICAgICAgICB0b3BSaWdodDogW3hFbmQgLSBjbCwgeUJlZ2luLCB4RW5kLCB5QmVnaW4gKyBjbCwgeEVuZCAtIGNsLCB5QmVnaW4gKyBjbF0sXG4gICAgICAgIGJvdHRvbVJpZ2h0OiBbeEVuZCwgeUVuZCAtIGNsLCB4RW5kIC0gY2wsIHlFbmQsIHhFbmQgLSBjbCwgeUVuZCAtIGNsXSxcbiAgICAgICAgYm90dG9tTGVmdDogW3hCZWdpbiArIGNsLCB5RW5kLCB4QmVnaW4sIHlFbmQgLSBjbCwgeEJlZ2luICsgY2wsIHlFbmQgLSBjbF1cbiAgICAgIH07XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgdmFyIGNQdHMgPSB0aGlzLmdlbmVyYXRlQ3V0VHJpYW5nbGVQdHMod2lkdGggKyAyICogcGFkZGluZywgaGVpZ2h0ICsgMiAqIHBhZGRpbmcsIG5vZGVYLCBub2RlWSk7XG4gICAgICB2YXIgcHRzID0gW10uY29uY2F0LmFwcGx5KFtdLCBbY1B0cy50b3BMZWZ0LnNwbGljZSgwLCA0KSwgY1B0cy50b3BSaWdodC5zcGxpY2UoMCwgNCksIGNQdHMuYm90dG9tUmlnaHQuc3BsaWNlKDAsIDQpLCBjUHRzLmJvdHRvbUxlZnQuc3BsaWNlKDAsIDQpXSk7XG4gICAgICByZXR1cm4gcG9seWdvbkludGVyc2VjdExpbmUoeCwgeSwgcHRzLCBub2RlWCwgbm9kZVkpO1xuICAgIH0sXG4gICAgY2hlY2tQb2ludDogZnVuY3Rpb24gY2hlY2tQb2ludCh4LCB5LCBwYWRkaW5nLCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKSB7XG4gICAgICAvLyBDaGVjayBoQm94XG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gMiAqIHRoaXMuY29ybmVyTGVuZ3RoLCBbMCwgLTFdLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gQ2hlY2sgdkJveFxuXG5cbiAgICAgIGlmIChwb2ludEluc2lkZVBvbHlnb24oeCwgeSwgdGhpcy5wb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoIC0gMiAqIHRoaXMuY29ybmVyTGVuZ3RoLCBoZWlnaHQsIFswLCAtMV0sIHBhZGRpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgY3V0VHJpYW5nbGVQdHMgPSB0aGlzLmdlbmVyYXRlQ3V0VHJpYW5nbGVQdHMod2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSk7XG4gICAgICByZXR1cm4gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIGN1dFRyaWFuZ2xlUHRzLnRvcExlZnQpIHx8IHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCBjdXRUcmlhbmdsZVB0cy50b3BSaWdodCkgfHwgcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIGN1dFRyaWFuZ2xlUHRzLmJvdHRvbVJpZ2h0KSB8fCBwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgY3V0VHJpYW5nbGVQdHMuYm90dG9tTGVmdCk7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVCYXJyZWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLm5vZGVTaGFwZXNbJ2JhcnJlbCddID0ge1xuICAgIHJlbmRlcmVyOiB0aGlzLFxuICAgIG5hbWU6ICdiYXJyZWwnLFxuICAgIHBvaW50czogZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDQsIDApLFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5ub2RlU2hhcGVJbXBsKHRoaXMubmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgLy8gdXNlIHR3byBmaXhlZCB0IHZhbHVlcyBmb3IgdGhlIGJlemllciBjdXJ2ZSBhcHByb3hpbWF0aW9uXG4gICAgICB2YXIgdDAgPSAwLjE1O1xuICAgICAgdmFyIHQxID0gMC41O1xuICAgICAgdmFyIHQyID0gMC44NTtcbiAgICAgIHZhciBiUHRzID0gdGhpcy5nZW5lcmF0ZUJhcnJlbEJlemllclB0cyh3aWR0aCArIDIgKiBwYWRkaW5nLCBoZWlnaHQgKyAyICogcGFkZGluZywgbm9kZVgsIG5vZGVZKTtcblxuICAgICAgdmFyIGFwcHJveGltYXRlQmFycmVsQ3VydmVQdHMgPSBmdW5jdGlvbiBhcHByb3hpbWF0ZUJhcnJlbEN1cnZlUHRzKHB0cykge1xuICAgICAgICAvLyBhcHByb3hpbWF0ZSBjdXJ2ZSBwdHMgYmFzZWQgb24gdGhlIHR3byB0IHZhbHVlc1xuICAgICAgICB2YXIgbTAgPSBxYmV6aWVyUHRBdCh7XG4gICAgICAgICAgeDogcHRzWzBdLFxuICAgICAgICAgIHk6IHB0c1sxXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgeDogcHRzWzJdLFxuICAgICAgICAgIHk6IHB0c1szXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgeDogcHRzWzRdLFxuICAgICAgICAgIHk6IHB0c1s1XVxuICAgICAgICB9LCB0MCk7XG4gICAgICAgIHZhciBtMSA9IHFiZXppZXJQdEF0KHtcbiAgICAgICAgICB4OiBwdHNbMF0sXG4gICAgICAgICAgeTogcHRzWzFdXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB4OiBwdHNbMl0sXG4gICAgICAgICAgeTogcHRzWzNdXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB4OiBwdHNbNF0sXG4gICAgICAgICAgeTogcHRzWzVdXG4gICAgICAgIH0sIHQxKTtcbiAgICAgICAgdmFyIG0yID0gcWJlemllclB0QXQoe1xuICAgICAgICAgIHg6IHB0c1swXSxcbiAgICAgICAgICB5OiBwdHNbMV1cbiAgICAgICAgfSwge1xuICAgICAgICAgIHg6IHB0c1syXSxcbiAgICAgICAgICB5OiBwdHNbM11cbiAgICAgICAgfSwge1xuICAgICAgICAgIHg6IHB0c1s0XSxcbiAgICAgICAgICB5OiBwdHNbNV1cbiAgICAgICAgfSwgdDIpO1xuICAgICAgICByZXR1cm4gW3B0c1swXSwgcHRzWzFdLCBtMC54LCBtMC55LCBtMS54LCBtMS55LCBtMi54LCBtMi55LCBwdHNbNF0sIHB0c1s1XV07XG4gICAgICB9O1xuXG4gICAgICB2YXIgcHRzID0gW10uY29uY2F0KGFwcHJveGltYXRlQmFycmVsQ3VydmVQdHMoYlB0cy50b3BMZWZ0KSwgYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhiUHRzLnRvcFJpZ2h0KSwgYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhiUHRzLmJvdHRvbVJpZ2h0KSwgYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhiUHRzLmJvdHRvbUxlZnQpKTtcbiAgICAgIHJldHVybiBwb2x5Z29uSW50ZXJzZWN0TGluZSh4LCB5LCBwdHMsIG5vZGVYLCBub2RlWSk7XG4gICAgfSxcbiAgICBnZW5lcmF0ZUJhcnJlbEJlemllclB0czogZnVuY3Rpb24gZ2VuZXJhdGVCYXJyZWxCZXppZXJQdHMod2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgdmFyIGhoID0gaGVpZ2h0IC8gMjtcbiAgICAgIHZhciBodyA9IHdpZHRoIC8gMjtcbiAgICAgIHZhciB4QmVnaW4gPSBjZW50ZXJYIC0gaHc7XG4gICAgICB2YXIgeEVuZCA9IGNlbnRlclggKyBodztcbiAgICAgIHZhciB5QmVnaW4gPSBjZW50ZXJZIC0gaGg7XG4gICAgICB2YXIgeUVuZCA9IGNlbnRlclkgKyBoaDtcbiAgICAgIHZhciBjdXJ2ZUNvbnN0YW50cyA9IGdldEJhcnJlbEN1cnZlQ29uc3RhbnRzKHdpZHRoLCBoZWlnaHQpO1xuICAgICAgdmFyIGhPZmZzZXQgPSBjdXJ2ZUNvbnN0YW50cy5oZWlnaHRPZmZzZXQ7XG4gICAgICB2YXIgd09mZnNldCA9IGN1cnZlQ29uc3RhbnRzLndpZHRoT2Zmc2V0O1xuICAgICAgdmFyIGN0cmxQdFhPZmZzZXQgPSBjdXJ2ZUNvbnN0YW50cy5jdHJsUHRPZmZzZXRQY3QgKiB3aWR0aDsgLy8gcG9pbnRzIGFyZSBpbiBjbG9ja3dpc2Ugb3JkZXIsIGlubmVyIChpbWFnaW5hcnkpIGNvbnRyb2wgcHQgb24gWzQsIDVdXG5cbiAgICAgIHZhciBwdHMgPSB7XG4gICAgICAgIHRvcExlZnQ6IFt4QmVnaW4sIHlCZWdpbiArIGhPZmZzZXQsIHhCZWdpbiArIGN0cmxQdFhPZmZzZXQsIHlCZWdpbiwgeEJlZ2luICsgd09mZnNldCwgeUJlZ2luXSxcbiAgICAgICAgdG9wUmlnaHQ6IFt4RW5kIC0gd09mZnNldCwgeUJlZ2luLCB4RW5kIC0gY3RybFB0WE9mZnNldCwgeUJlZ2luLCB4RW5kLCB5QmVnaW4gKyBoT2Zmc2V0XSxcbiAgICAgICAgYm90dG9tUmlnaHQ6IFt4RW5kLCB5RW5kIC0gaE9mZnNldCwgeEVuZCAtIGN0cmxQdFhPZmZzZXQsIHlFbmQsIHhFbmQgLSB3T2Zmc2V0LCB5RW5kXSxcbiAgICAgICAgYm90dG9tTGVmdDogW3hCZWdpbiArIHdPZmZzZXQsIHlFbmQsIHhCZWdpbiArIGN0cmxQdFhPZmZzZXQsIHlFbmQsIHhCZWdpbiwgeUVuZCAtIGhPZmZzZXRdXG4gICAgICB9O1xuICAgICAgcHRzLnRvcExlZnQuaXNUb3AgPSB0cnVlO1xuICAgICAgcHRzLnRvcFJpZ2h0LmlzVG9wID0gdHJ1ZTtcbiAgICAgIHB0cy5ib3R0b21MZWZ0LmlzQm90dG9tID0gdHJ1ZTtcbiAgICAgIHB0cy5ib3R0b21SaWdodC5pc0JvdHRvbSA9IHRydWU7XG4gICAgICByZXR1cm4gcHRzO1xuICAgIH0sXG4gICAgY2hlY2tQb2ludDogZnVuY3Rpb24gY2hlY2tQb2ludCh4LCB5LCBwYWRkaW5nLCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKSB7XG4gICAgICB2YXIgY3VydmVDb25zdGFudHMgPSBnZXRCYXJyZWxDdXJ2ZUNvbnN0YW50cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIHZhciBoT2Zmc2V0ID0gY3VydmVDb25zdGFudHMuaGVpZ2h0T2Zmc2V0O1xuICAgICAgdmFyIHdPZmZzZXQgPSBjdXJ2ZUNvbnN0YW50cy53aWR0aE9mZnNldDsgLy8gQ2hlY2sgaEJveFxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gMiAqIGhPZmZzZXQsIFswLCAtMV0sIHBhZGRpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSAvLyBDaGVjayB2Qm94XG5cblxuICAgICAgaWYgKHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGggLSAyICogd09mZnNldCwgaGVpZ2h0LCBbMCwgLTFdLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGJhcnJlbEN1cnZlUHRzID0gdGhpcy5nZW5lcmF0ZUJhcnJlbEJlemllclB0cyh3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKTtcblxuICAgICAgdmFyIGdldEN1cnZlVCA9IGZ1bmN0aW9uIGdldEN1cnZlVCh4LCB5LCBjdXJ2ZVB0cykge1xuICAgICAgICB2YXIgeDAgPSBjdXJ2ZVB0c1s0XTtcbiAgICAgICAgdmFyIHgxID0gY3VydmVQdHNbMl07XG4gICAgICAgIHZhciB4MiA9IGN1cnZlUHRzWzBdO1xuICAgICAgICB2YXIgeTAgPSBjdXJ2ZVB0c1s1XTsgLy8gdmFyIHkxID0gY3VydmVQdHNbIDMgXTtcblxuICAgICAgICB2YXIgeTIgPSBjdXJ2ZVB0c1sxXTtcbiAgICAgICAgdmFyIHhNaW4gPSBNYXRoLm1pbih4MCwgeDIpO1xuICAgICAgICB2YXIgeE1heCA9IE1hdGgubWF4KHgwLCB4Mik7XG4gICAgICAgIHZhciB5TWluID0gTWF0aC5taW4oeTAsIHkyKTtcbiAgICAgICAgdmFyIHlNYXggPSBNYXRoLm1heCh5MCwgeTIpO1xuXG4gICAgICAgIGlmICh4TWluIDw9IHggJiYgeCA8PSB4TWF4ICYmIHlNaW4gPD0geSAmJiB5IDw9IHlNYXgpIHtcbiAgICAgICAgICB2YXIgY29lZmYgPSBiZXppZXJQdHNUb1F1YWRDb2VmZih4MCwgeDEsIHgyKTtcbiAgICAgICAgICB2YXIgcm9vdHMgPSBzb2x2ZVF1YWRyYXRpYyhjb2VmZlswXSwgY29lZmZbMV0sIGNvZWZmWzJdLCB4KTtcbiAgICAgICAgICB2YXIgdmFsaWRSb290cyA9IHJvb3RzLmZpbHRlcihmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgcmV0dXJuIDAgPD0gciAmJiByIDw9IDE7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAodmFsaWRSb290cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsaWRSb290c1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIHZhciBjdXJ2ZVJlZ2lvbnMgPSBPYmplY3Qua2V5cyhiYXJyZWxDdXJ2ZVB0cyk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3VydmVSZWdpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjb3JuZXIgPSBjdXJ2ZVJlZ2lvbnNbaV07XG4gICAgICAgIHZhciBjb3JuZXJQdHMgPSBiYXJyZWxDdXJ2ZVB0c1tjb3JuZXJdO1xuICAgICAgICB2YXIgdCA9IGdldEN1cnZlVCh4LCB5LCBjb3JuZXJQdHMpO1xuXG4gICAgICAgIGlmICh0ID09IG51bGwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB5MCA9IGNvcm5lclB0c1s1XTtcbiAgICAgICAgdmFyIHkxID0gY29ybmVyUHRzWzNdO1xuICAgICAgICB2YXIgeTIgPSBjb3JuZXJQdHNbMV07XG4gICAgICAgIHZhciBiZXpZID0gcWJlemllckF0KHkwLCB5MSwgeTIsIHQpO1xuXG4gICAgICAgIGlmIChjb3JuZXJQdHMuaXNUb3AgJiYgYmV6WSA8PSB5KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29ybmVyUHRzLmlzQm90dG9tICYmIHkgPD0gYmV6WSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG59O1xuXG5CUnAkZC5nZW5lcmF0ZUJvdHRvbVJvdW5kcmVjdGFuZ2xlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ub2RlU2hhcGVzWydib3R0b20tcm91bmQtcmVjdGFuZ2xlJ10gPSB0aGlzLm5vZGVTaGFwZXNbJ2JvdHRvbXJvdW5kcmVjdGFuZ2xlJ10gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogJ2JvdHRvbS1yb3VuZC1yZWN0YW5nbGUnLFxuICAgIHBvaW50czogZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDQsIDApLFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5ub2RlU2hhcGVJbXBsKHRoaXMubmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgdmFyIHRvcFN0YXJ0WCA9IG5vZGVYIC0gKHdpZHRoIC8gMiArIHBhZGRpbmcpO1xuICAgICAgdmFyIHRvcFN0YXJ0WSA9IG5vZGVZIC0gKGhlaWdodCAvIDIgKyBwYWRkaW5nKTtcbiAgICAgIHZhciB0b3BFbmRZID0gdG9wU3RhcnRZO1xuICAgICAgdmFyIHRvcEVuZFggPSBub2RlWCArICh3aWR0aCAvIDIgKyBwYWRkaW5nKTtcbiAgICAgIHZhciB0b3BJbnRlcnNlY3Rpb25zID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgbm9kZVgsIG5vZGVZLCB0b3BTdGFydFgsIHRvcFN0YXJ0WSwgdG9wRW5kWCwgdG9wRW5kWSwgZmFsc2UpO1xuXG4gICAgICBpZiAodG9wSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiB0b3BJbnRlcnNlY3Rpb25zO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcm91bmRSZWN0YW5nbGVJbnRlcnNlY3RMaW5lKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgcGFkZGluZyk7XG4gICAgfSxcbiAgICBjaGVja1BvaW50OiBmdW5jdGlvbiBjaGVja1BvaW50KHgsIHksIHBhZGRpbmcsIHdpZHRoLCBoZWlnaHQsIGNlbnRlclgsIGNlbnRlclkpIHtcbiAgICAgIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIHZhciBkaWFtID0gMiAqIGNvcm5lclJhZGl1czsgLy8gQ2hlY2sgaEJveFxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gZGlhbSwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IC8vIENoZWNrIHZCb3hcblxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCAtIGRpYW0sIGhlaWdodCwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IC8vIGNoZWNrIG5vbi1yb3VuZGVkIHRvcCBzaWRlXG5cblxuICAgICAgdmFyIG91dGVyV2lkdGggPSB3aWR0aCAvIDIgKyAyICogcGFkZGluZztcbiAgICAgIHZhciBvdXRlckhlaWdodCA9IGhlaWdodCAvIDIgKyAyICogcGFkZGluZztcbiAgICAgIHZhciBwb2ludHMgPSBbY2VudGVyWCAtIG91dGVyV2lkdGgsIGNlbnRlclkgLSBvdXRlckhlaWdodCwgY2VudGVyWCAtIG91dGVyV2lkdGgsIGNlbnRlclksIGNlbnRlclggKyBvdXRlcldpZHRoLCBjZW50ZXJZLCBjZW50ZXJYICsgb3V0ZXJXaWR0aCwgY2VudGVyWSAtIG91dGVySGVpZ2h0XTtcblxuICAgICAgaWYgKHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCBwb2ludHMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSAvLyBDaGVjayBib3R0b20gcmlnaHQgcXVhcnRlciBjaXJjbGVcblxuXG4gICAgICBpZiAoY2hlY2tJbkVsbGlwc2UoeCwgeSwgZGlhbSwgZGlhbSwgY2VudGVyWCArIHdpZHRoIC8gMiAtIGNvcm5lclJhZGl1cywgY2VudGVyWSArIGhlaWdodCAvIDIgLSBjb3JuZXJSYWRpdXMsIHBhZGRpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSAvLyBDaGVjayBib3R0b20gbGVmdCBxdWFydGVyIGNpcmNsZVxuXG5cbiAgICAgIGlmIChjaGVja0luRWxsaXBzZSh4LCB5LCBkaWFtLCBkaWFtLCBjZW50ZXJYIC0gd2lkdGggLyAyICsgY29ybmVyUmFkaXVzLCBjZW50ZXJZICsgaGVpZ2h0IC8gMiAtIGNvcm5lclJhZGl1cywgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG59O1xuXG5CUnAkZC5yZWdpc3Rlck5vZGVTaGFwZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBub2RlU2hhcGVzID0gdGhpcy5ub2RlU2hhcGVzID0ge307XG4gIHZhciByZW5kZXJlciA9IHRoaXM7XG4gIHRoaXMuZ2VuZXJhdGVFbGxpcHNlKCk7XG4gIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCd0cmlhbmdsZScsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSgzLCAwKSk7XG4gIHRoaXMuZ2VuZXJhdGVSb3VuZFBvbHlnb24oJ3JvdW5kLXRyaWFuZ2xlJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDMsIDApKTtcbiAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ3JlY3RhbmdsZScsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg0LCAwKSk7XG4gIG5vZGVTaGFwZXNbJ3NxdWFyZSddID0gbm9kZVNoYXBlc1sncmVjdGFuZ2xlJ107XG4gIHRoaXMuZ2VuZXJhdGVSb3VuZFJlY3RhbmdsZSgpO1xuICB0aGlzLmdlbmVyYXRlQ3V0UmVjdGFuZ2xlKCk7XG4gIHRoaXMuZ2VuZXJhdGVCYXJyZWwoKTtcbiAgdGhpcy5nZW5lcmF0ZUJvdHRvbVJvdW5kcmVjdGFuZ2xlKCk7XG4gIHtcbiAgICB2YXIgZGlhbW9uZFBvaW50cyA9IFswLCAxLCAxLCAwLCAwLCAtMSwgLTEsIDBdO1xuICAgIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdkaWFtb25kJywgZGlhbW9uZFBvaW50cyk7XG4gICAgdGhpcy5nZW5lcmF0ZVJvdW5kUG9seWdvbigncm91bmQtZGlhbW9uZCcsIGRpYW1vbmRQb2ludHMpO1xuICB9XG4gIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdwZW50YWdvbicsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg1LCAwKSk7XG4gIHRoaXMuZ2VuZXJhdGVSb3VuZFBvbHlnb24oJ3JvdW5kLXBlbnRhZ29uJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDUsIDApKTtcbiAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ2hleGFnb24nLCBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNiwgMCkpO1xuICB0aGlzLmdlbmVyYXRlUm91bmRQb2x5Z29uKCdyb3VuZC1oZXhhZ29uJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDYsIDApKTtcbiAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ2hlcHRhZ29uJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDcsIDApKTtcbiAgdGhpcy5nZW5lcmF0ZVJvdW5kUG9seWdvbigncm91bmQtaGVwdGFnb24nLCBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNywgMCkpO1xuICB0aGlzLmdlbmVyYXRlUG9seWdvbignb2N0YWdvbicsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg4LCAwKSk7XG4gIHRoaXMuZ2VuZXJhdGVSb3VuZFBvbHlnb24oJ3JvdW5kLW9jdGFnb24nLCBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoOCwgMCkpO1xuICB2YXIgc3RhcjVQb2ludHMgPSBuZXcgQXJyYXkoMjApO1xuICB7XG4gICAgdmFyIG91dGVyUG9pbnRzID0gZ2VuZXJhdGVVbml0TmdvblBvaW50cyg1LCAwKTtcbiAgICB2YXIgaW5uZXJQb2ludHMgPSBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzKDUsIE1hdGguUEkgLyA1KTsgLy8gT3V0ZXIgcmFkaXVzIGlzIDE7IGlubmVyIHJhZGl1cyBvZiBzdGFyIGlzIHNtYWxsZXJcblxuICAgIHZhciBpbm5lclJhZGl1cyA9IDAuNSAqICgzIC0gTWF0aC5zcXJ0KDUpKTtcbiAgICBpbm5lclJhZGl1cyAqPSAxLjU3O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbm5lclBvaW50cy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgIGlubmVyUG9pbnRzW2kgKiAyXSAqPSBpbm5lclJhZGl1cztcbiAgICAgIGlubmVyUG9pbnRzW2kgKiAyICsgMV0gKj0gaW5uZXJSYWRpdXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyMCAvIDQ7IGkrKykge1xuICAgICAgc3RhcjVQb2ludHNbaSAqIDRdID0gb3V0ZXJQb2ludHNbaSAqIDJdO1xuICAgICAgc3RhcjVQb2ludHNbaSAqIDQgKyAxXSA9IG91dGVyUG9pbnRzW2kgKiAyICsgMV07XG4gICAgICBzdGFyNVBvaW50c1tpICogNCArIDJdID0gaW5uZXJQb2ludHNbaSAqIDJdO1xuICAgICAgc3RhcjVQb2ludHNbaSAqIDQgKyAzXSA9IGlubmVyUG9pbnRzW2kgKiAyICsgMV07XG4gICAgfVxuICB9XG4gIHN0YXI1UG9pbnRzID0gZml0UG9seWdvblRvU3F1YXJlKHN0YXI1UG9pbnRzKTtcbiAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ3N0YXInLCBzdGFyNVBvaW50cyk7XG4gIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCd2ZWUnLCBbLTEsIC0xLCAwLCAtMC4zMzMsIDEsIC0xLCAwLCAxXSk7XG4gIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdyaG9tYm9pZCcsIFstMSwgLTEsIDAuMzMzLCAtMSwgMSwgMSwgLTAuMzMzLCAxXSk7XG4gIHRoaXMubm9kZVNoYXBlc1snY29uY2F2ZWhleGFnb24nXSA9IHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdjb25jYXZlLWhleGFnb24nLCBbLTEsIC0wLjk1LCAtMC43NSwgMCwgLTEsIDAuOTUsIDEsIDAuOTUsIDAuNzUsIDAsIDEsIC0wLjk1XSk7XG4gIHtcbiAgICB2YXIgdGFnUG9pbnRzID0gWy0xLCAtMSwgMC4yNSwgLTEsIDEsIDAsIDAuMjUsIDEsIC0xLCAxXTtcbiAgICB0aGlzLmdlbmVyYXRlUG9seWdvbigndGFnJywgdGFnUG9pbnRzKTtcbiAgICB0aGlzLmdlbmVyYXRlUm91bmRQb2x5Z29uKCdyb3VuZC10YWcnLCB0YWdQb2ludHMpO1xuICB9XG5cbiAgbm9kZVNoYXBlcy5tYWtlUG9seWdvbiA9IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICAvLyB1c2UgY2FjaGluZyBvbiB1c2VyLXNwZWNpZmllZCBwb2x5Z29ucyBzbyB0aGV5IGFyZSBhcyBmYXN0IGFzIG5hdGl2ZSBzaGFwZXNcbiAgICB2YXIga2V5ID0gcG9pbnRzLmpvaW4oJyQnKTtcbiAgICB2YXIgbmFtZSA9ICdwb2x5Z29uLScgKyBrZXk7XG4gICAgdmFyIHNoYXBlO1xuXG4gICAgaWYgKHNoYXBlID0gdGhpc1tuYW1lXSkge1xuICAgICAgLy8gZ290IGNhY2hlZCBzaGFwZVxuICAgICAgcmV0dXJuIHNoYXBlO1xuICAgIH0gLy8gY3JlYXRlIGFuZCBjYWNoZSBuZXcgc2hhcGVcblxuXG4gICAgcmV0dXJuIHJlbmRlcmVyLmdlbmVyYXRlUG9seWdvbihuYW1lLCBwb2ludHMpO1xuICB9O1xufTtcblxudmFyIEJScCRlID0ge307XG5cbkJScCRlLnRpbWVUb1JlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVkcmF3VG90YWxUaW1lIC8gdGhpcy5yZWRyYXdDb3VudDtcbn07XG5cbkJScCRlLnJlZHJhdyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHN0YXRpY0VtcHR5T2JqZWN0KCk7XG4gIHZhciByID0gdGhpcztcblxuICBpZiAoci5hdmVyYWdlUmVkcmF3VGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgci5hdmVyYWdlUmVkcmF3VGltZSA9IDA7XG4gIH1cblxuICBpZiAoci5sYXN0UmVkcmF3VGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgci5sYXN0UmVkcmF3VGltZSA9IDA7XG4gIH1cblxuICBpZiAoci5sYXN0RHJhd1RpbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHIubGFzdERyYXdUaW1lID0gMDtcbiAgfVxuXG4gIHIucmVxdWVzdGVkRnJhbWUgPSB0cnVlO1xuICByLnJlbmRlck9wdGlvbnMgPSBvcHRpb25zO1xufTtcblxuQlJwJGUuYmVmb3JlUmVuZGVyID0gZnVuY3Rpb24gKGZuLCBwcmlvcml0eSkge1xuICAvLyB0aGUgcmVuZGVyZXIgY2FuJ3QgYWRkIHRpY2sgY2FsbGJhY2tzIHdoZW4gZGVzdHJveWVkXG4gIGlmICh0aGlzLmRlc3Ryb3llZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwcmlvcml0eSA9PSBudWxsKSB7XG4gICAgZXJyb3IoJ1ByaW9yaXR5IGlzIG5vdCBvcHRpb25hbCBmb3IgYmVmb3JlUmVuZGVyJyk7XG4gIH1cblxuICB2YXIgY2JzID0gdGhpcy5iZWZvcmVSZW5kZXJDYWxsYmFja3M7XG4gIGNicy5wdXNoKHtcbiAgICBmbjogZm4sXG4gICAgcHJpb3JpdHk6IHByaW9yaXR5XG4gIH0pOyAvLyBoaWdoZXIgcHJpb3JpdHkgY2FsbGJhY2tzIGV4ZWN1dGVkIGZpcnN0XG5cbiAgY2JzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi5wcmlvcml0eSAtIGEucHJpb3JpdHk7XG4gIH0pO1xufTtcblxudmFyIGJlZm9yZVJlbmRlckNhbGxiYWNrcyA9IGZ1bmN0aW9uIGJlZm9yZVJlbmRlckNhbGxiYWNrcyhyLCB3aWxsRHJhdywgc3RhcnRUaW1lKSB7XG4gIHZhciBjYnMgPSByLmJlZm9yZVJlbmRlckNhbGxiYWNrcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNicy5sZW5ndGg7IGkrKykge1xuICAgIGNic1tpXS5mbih3aWxsRHJhdywgc3RhcnRUaW1lKTtcbiAgfVxufTtcblxuQlJwJGUuc3RhcnRSZW5kZXJMb29wID0gZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBjeSA9IHIuY3k7XG5cbiAgaWYgKHIucmVuZGVyTG9vcFN0YXJ0ZWQpIHtcbiAgICByZXR1cm47XG4gIH0gZWxzZSB7XG4gICAgci5yZW5kZXJMb29wU3RhcnRlZCA9IHRydWU7XG4gIH1cblxuICB2YXIgcmVuZGVyRm4gPSBmdW5jdGlvbiByZW5kZXJGbihyZXF1ZXN0VGltZSkge1xuICAgIGlmIChyLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjeS5iYXRjaGluZygpKSA7IGVsc2UgaWYgKHIucmVxdWVzdGVkRnJhbWUgJiYgIXIuc2tpcEZyYW1lKSB7XG4gICAgICBiZWZvcmVSZW5kZXJDYWxsYmFja3MociwgdHJ1ZSwgcmVxdWVzdFRpbWUpO1xuICAgICAgdmFyIHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlTm93KCk7XG4gICAgICByLnJlbmRlcihyLnJlbmRlck9wdGlvbnMpO1xuICAgICAgdmFyIGVuZFRpbWUgPSByLmxhc3REcmF3VGltZSA9IHBlcmZvcm1hbmNlTm93KCk7XG5cbiAgICAgIGlmIChyLmF2ZXJhZ2VSZWRyYXdUaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgci5hdmVyYWdlUmVkcmF3VGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChyLnJlZHJhd0NvdW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgci5yZWRyYXdDb3VudCA9IDA7XG4gICAgICB9XG5cbiAgICAgIHIucmVkcmF3Q291bnQrKztcblxuICAgICAgaWYgKHIucmVkcmF3VG90YWxUaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgci5yZWRyYXdUb3RhbFRpbWUgPSAwO1xuICAgICAgfVxuXG4gICAgICB2YXIgZHVyYXRpb24gPSBlbmRUaW1lIC0gc3RhcnRUaW1lO1xuICAgICAgci5yZWRyYXdUb3RhbFRpbWUgKz0gZHVyYXRpb247XG4gICAgICByLmxhc3RSZWRyYXdUaW1lID0gZHVyYXRpb247IC8vIHVzZSBhIHdlaWdodGVkIGF2ZXJhZ2Ugd2l0aCBhIGJpYXMgZnJvbSB0aGUgcHJldmlvdXMgYXZlcmFnZSBzbyB3ZSBkb24ndCBzcGlrZSBzbyBlYXNpbHlcblxuICAgICAgci5hdmVyYWdlUmVkcmF3VGltZSA9IHIuYXZlcmFnZVJlZHJhd1RpbWUgLyAyICsgZHVyYXRpb24gLyAyO1xuICAgICAgci5yZXF1ZXN0ZWRGcmFtZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBiZWZvcmVSZW5kZXJDYWxsYmFja3MociwgZmFsc2UsIHJlcXVlc3RUaW1lKTtcbiAgICB9XG5cbiAgICByLnNraXBGcmFtZSA9IGZhbHNlO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW5kZXJGbik7XG4gIH07XG5cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbmRlckZuKTtcbn07XG5cbnZhciBCYXNlUmVuZGVyZXIgPSBmdW5jdGlvbiBCYXNlUmVuZGVyZXIob3B0aW9ucykge1xuICB0aGlzLmluaXQob3B0aW9ucyk7XG59O1xuXG52YXIgQlIgPSBCYXNlUmVuZGVyZXI7XG52YXIgQlJwJGYgPSBCUi5wcm90b3R5cGU7XG5CUnAkZi5jbGllbnRGdW5jdGlvbnMgPSBbJ3JlZHJhd0hpbnQnLCAncmVuZGVyJywgJ3JlbmRlclRvJywgJ21hdGNoQ2FudmFzU2l6ZScsICdub2RlU2hhcGVJbXBsJywgJ2Fycm93U2hhcGVJbXBsJ107XG5cbkJScCRmLmluaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgciA9IHRoaXM7XG4gIHIub3B0aW9ucyA9IG9wdGlvbnM7XG4gIHIuY3kgPSBvcHRpb25zLmN5O1xuICB2YXIgY3RyID0gci5jb250YWluZXIgPSBvcHRpb25zLmN5LmNvbnRhaW5lcigpOyAvLyBwcmVwZW5kIGEgc3R5bGVzaGVldCBpbiB0aGUgaGVhZCBzdWNoIHRoYXRcblxuICBpZiAod2luZG93JDEpIHtcbiAgICB2YXIgZG9jdW1lbnQgPSB3aW5kb3ckMS5kb2N1bWVudDtcbiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQ7XG4gICAgdmFyIHN0eWxlc2hlZXRJZCA9ICdfX19fX19fX19fY3l0b3NjYXBlX3N0eWxlc2hlZXQnO1xuICAgIHZhciBjbGFzc05hbWUgPSAnX19fX19fX19fX2N5dG9zY2FwZV9jb250YWluZXInO1xuICAgIHZhciBzdHlsZXNoZWV0QWxyZWFkeUV4aXN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN0eWxlc2hlZXRJZCkgIT0gbnVsbDtcblxuICAgIGlmIChjdHIuY2xhc3NOYW1lLmluZGV4T2YoY2xhc3NOYW1lKSA8IDApIHtcbiAgICAgIGN0ci5jbGFzc05hbWUgPSAoY3RyLmNsYXNzTmFtZSB8fCAnJykgKyAnICcgKyBjbGFzc05hbWU7XG4gICAgfVxuXG4gICAgaWYgKCFzdHlsZXNoZWV0QWxyZWFkeUV4aXN0cykge1xuICAgICAgdmFyIHN0eWxlc2hlZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgc3R5bGVzaGVldC5pZCA9IHN0eWxlc2hlZXRJZDtcbiAgICAgIHN0eWxlc2hlZXQuaW5uZXJIVE1MID0gJy4nICsgY2xhc3NOYW1lICsgJyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfSc7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZXNoZWV0LCBoZWFkLmNoaWxkcmVuWzBdKTsgLy8gZmlyc3Qgc28gbG93ZXN0IHByaW9yaXR5XG4gICAgfVxuXG4gICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3ckMS5nZXRDb21wdXRlZFN0eWxlKGN0cik7XG4gICAgdmFyIHBvc2l0aW9uID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwb3NpdGlvbicpO1xuXG4gICAgaWYgKHBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgd2FybignQSBDeXRvc2NhcGUgY29udGFpbmVyIGhhcyBzdHlsZSBwb3NpdGlvbjpzdGF0aWMgYW5kIHNvIGNhbiBub3QgdXNlIFVJIGV4dGVuc2lvbnMgcHJvcGVybHknKTtcbiAgICB9XG4gIH1cblxuICByLnNlbGVjdGlvbiA9IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDBdOyAvLyBDb29yZGluYXRlcyBmb3Igc2VsZWN0aW9uIGJveCwgcGx1cyBlbmFibGVkIGZsYWdcblxuICByLmJlemllclByb2pQY3RzID0gWzAuMDUsIDAuMjI1LCAwLjQsIDAuNSwgMC42LCAwLjc3NSwgMC45NV07IC8vLS1Qb2ludGVyLXJlbGF0ZWQgZGF0YVxuXG4gIHIuaG92ZXJEYXRhID0ge1xuICAgIGRvd246IG51bGwsXG4gICAgbGFzdDogbnVsbCxcbiAgICBkb3duVGltZTogbnVsbCxcbiAgICB0cmlnZ2VyTW9kZTogbnVsbCxcbiAgICBkcmFnZ2luZzogZmFsc2UsXG4gICAgaW5pdGlhbFBhbjogW251bGwsIG51bGxdLFxuICAgIGNhcHR1cmU6IGZhbHNlXG4gIH07XG4gIHIuZHJhZ0RhdGEgPSB7XG4gICAgcG9zc2libGVEcmFnRWxlbWVudHM6IFtdXG4gIH07XG4gIHIudG91Y2hEYXRhID0ge1xuICAgIHN0YXJ0OiBudWxsLFxuICAgIGNhcHR1cmU6IGZhbHNlLFxuICAgIC8vIFRoZXNlIDMgZmllbGRzIHJlbGF0ZWQgdG8gdGFwLCB0YXBob2xkIGV2ZW50c1xuICAgIHN0YXJ0UG9zaXRpb246IFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXSxcbiAgICBzaW5nbGVUb3VjaFN0YXJ0VGltZTogbnVsbCxcbiAgICBzaW5nbGVUb3VjaE1vdmVkOiB0cnVlLFxuICAgIG5vdzogW251bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGxdLFxuICAgIGVhcmxpZXI6IFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXVxuICB9O1xuICByLnJlZHJhd3MgPSAwO1xuICByLnNob3dGcHMgPSBvcHRpb25zLnNob3dGcHM7XG4gIHIuZGVidWcgPSBvcHRpb25zLmRlYnVnO1xuICByLmhpZGVFZGdlc09uVmlld3BvcnQgPSBvcHRpb25zLmhpZGVFZGdlc09uVmlld3BvcnQ7XG4gIHIudGV4dHVyZU9uVmlld3BvcnQgPSBvcHRpb25zLnRleHR1cmVPblZpZXdwb3J0O1xuICByLndoZWVsU2Vuc2l0aXZpdHkgPSBvcHRpb25zLndoZWVsU2Vuc2l0aXZpdHk7XG4gIHIubW90aW9uQmx1ckVuYWJsZWQgPSBvcHRpb25zLm1vdGlvbkJsdXI7IC8vIG9uIGJ5IGRlZmF1bHRcblxuICByLmZvcmNlZFBpeGVsUmF0aW8gPSBudW1iZXIob3B0aW9ucy5waXhlbFJhdGlvKSA/IG9wdGlvbnMucGl4ZWxSYXRpbyA6IG51bGw7XG4gIHIubW90aW9uQmx1ciA9IG9wdGlvbnMubW90aW9uQmx1cjsgLy8gZm9yIGluaXRpYWwga2ljayBvZmZcblxuICByLm1vdGlvbkJsdXJPcGFjaXR5ID0gb3B0aW9ucy5tb3Rpb25CbHVyT3BhY2l0eTtcbiAgci5tb3Rpb25CbHVyVHJhbnNwYXJlbmN5ID0gMSAtIHIubW90aW9uQmx1ck9wYWNpdHk7XG4gIHIubW90aW9uQmx1clB4UmF0aW8gPSAxO1xuICByLm1iUHhSQmx1cnJ5ID0gMTsgLy8wLjg7XG5cbiAgci5taW5NYkxvd1F1YWxGcmFtZXMgPSA0O1xuICByLmZ1bGxRdWFsaXR5TWIgPSBmYWxzZTtcbiAgci5jbGVhcmVkRm9yTW90aW9uQmx1ciA9IFtdO1xuICByLmRlc2t0b3BUYXBUaHJlc2hvbGQgPSBvcHRpb25zLmRlc2t0b3BUYXBUaHJlc2hvbGQ7XG4gIHIuZGVza3RvcFRhcFRocmVzaG9sZDIgPSBvcHRpb25zLmRlc2t0b3BUYXBUaHJlc2hvbGQgKiBvcHRpb25zLmRlc2t0b3BUYXBUaHJlc2hvbGQ7XG4gIHIudG91Y2hUYXBUaHJlc2hvbGQgPSBvcHRpb25zLnRvdWNoVGFwVGhyZXNob2xkO1xuICByLnRvdWNoVGFwVGhyZXNob2xkMiA9IG9wdGlvbnMudG91Y2hUYXBUaHJlc2hvbGQgKiBvcHRpb25zLnRvdWNoVGFwVGhyZXNob2xkO1xuICByLnRhcGhvbGREdXJhdGlvbiA9IDUwMDtcbiAgci5iaW5kaW5ncyA9IFtdO1xuICByLmJlZm9yZVJlbmRlckNhbGxiYWNrcyA9IFtdO1xuICByLmJlZm9yZVJlbmRlclByaW9yaXRpZXMgPSB7XG4gICAgLy8gaGlnaGVyIHByaW9yaXR5IGV4ZWNzIGJlZm9yZSBsb3dlciBvbmVcbiAgICBhbmltYXRpb25zOiA0MDAsXG4gICAgZWxlQ2FsY3M6IDMwMCxcbiAgICBlbGVUeHJEZXE6IDIwMCxcbiAgICBseXJUeHJEZXE6IDE1MCxcbiAgICBseXJUeHJTa2lwOiAxMDBcbiAgfTtcbiAgci5yZWdpc3Rlck5vZGVTaGFwZXMoKTtcbiAgci5yZWdpc3RlckFycm93U2hhcGVzKCk7XG4gIHIucmVnaXN0ZXJDYWxjdWxhdGlvbkxpc3RlbmVycygpO1xufTtcblxuQlJwJGYubm90aWZ5ID0gZnVuY3Rpb24gKGV2ZW50TmFtZSwgZWxlcykge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBjeSA9IHIuY3k7IC8vIHRoZSByZW5kZXJlciBjYW4ndCBiZSBub3RpZmllZCBhZnRlciBpdCdzIGRlc3Ryb3llZFxuXG4gIGlmICh0aGlzLmRlc3Ryb3llZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChldmVudE5hbWUgPT09ICdpbml0Jykge1xuICAgIHIubG9hZCgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChldmVudE5hbWUgPT09ICdkZXN0cm95Jykge1xuICAgIHIuZGVzdHJveSgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChldmVudE5hbWUgPT09ICdhZGQnIHx8IGV2ZW50TmFtZSA9PT0gJ3JlbW92ZScgfHwgZXZlbnROYW1lID09PSAnbW92ZScgJiYgY3kuaGFzQ29tcG91bmROb2RlcygpIHx8IGV2ZW50TmFtZSA9PT0gJ2xvYWQnIHx8IGV2ZW50TmFtZSA9PT0gJ3pvcmRlcicgfHwgZXZlbnROYW1lID09PSAnbW91bnQnKSB7XG4gICAgci5pbnZhbGlkYXRlQ2FjaGVkWlNvcnRlZEVsZXMoKTtcbiAgfVxuXG4gIGlmIChldmVudE5hbWUgPT09ICd2aWV3cG9ydCcpIHtcbiAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICB9XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQnIHx8IGV2ZW50TmFtZSA9PT0gJ3Jlc2l6ZScgfHwgZXZlbnROYW1lID09PSAnbW91bnQnKSB7XG4gICAgci5pbnZhbGlkYXRlQ29udGFpbmVyQ2xpZW50Q29vcmRzQ2FjaGUoKTtcbiAgICByLm1hdGNoQ2FudmFzU2l6ZShyLmNvbnRhaW5lcik7XG4gIH1cblxuICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgci5yZWRyYXdIaW50KCdkcmFnJywgdHJ1ZSk7XG4gIHRoaXMuc3RhcnRSZW5kZXJMb29wKCk7XG4gIHRoaXMucmVkcmF3KCk7XG59O1xuXG5CUnAkZi5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IHRoaXM7XG4gIHIuZGVzdHJveWVkID0gdHJ1ZTtcbiAgci5jeS5zdG9wQW5pbWF0aW9uTG9vcCgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgci5iaW5kaW5ncy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBiaW5kaW5nID0gci5iaW5kaW5nc1tpXTtcbiAgICB2YXIgYiA9IGJpbmRpbmc7XG4gICAgdmFyIHRndCA9IGIudGFyZ2V0O1xuICAgICh0Z3Qub2ZmIHx8IHRndC5yZW1vdmVFdmVudExpc3RlbmVyKS5hcHBseSh0Z3QsIGIuYXJncyk7XG4gIH1cblxuICByLmJpbmRpbmdzID0gW107XG4gIHIuYmVmb3JlUmVuZGVyQ2FsbGJhY2tzID0gW107XG4gIHIub25VcGRhdGVFbGVDYWxjc0ZucyA9IFtdO1xuXG4gIGlmIChyLnJlbW92ZU9ic2VydmVyKSB7XG4gICAgci5yZW1vdmVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBpZiAoci5zdHlsZU9ic2VydmVyKSB7XG4gICAgci5zdHlsZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIGlmIChyLnJlc2l6ZU9ic2VydmVyKSB7XG4gICAgci5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBpZiAoci5sYWJlbENhbGNEaXYpIHtcbiAgICB0cnkge1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyLmxhYmVsQ2FsY0Rpdik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICB9IGNhdGNoIChlKSB7Ly8gaWUxMCBpc3N1ZSAjMTAxNFxuICAgIH1cbiAgfVxufTtcblxuQlJwJGYuaXNIZWFkbGVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuW0JScCwgQlJwJGEsIEJScCRiLCBCUnAkYywgQlJwJGQsIEJScCRlXS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICBleHRlbmQoQlJwJGYsIHByb3BzKTtcbn0pO1xuXG52YXIgZnVsbEZwc1RpbWUgPSAxMDAwIC8gNjA7IC8vIGFzc3VtZSA2MCBmcmFtZXMgcGVyIHNlY29uZFxuXG52YXIgZGVmcyA9IHtcbiAgc2V0dXBEZXF1ZXVlaW5nOiBmdW5jdGlvbiBzZXR1cERlcXVldWVpbmcob3B0cykge1xuICAgIHJldHVybiBmdW5jdGlvbiBzZXR1cERlcXVldWVpbmdJbXBsKCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIHIgPSB0aGlzLnJlbmRlcmVyO1xuXG4gICAgICBpZiAoc2VsZi5kZXF1ZXVlaW5nU2V0dXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi5kZXF1ZXVlaW5nU2V0dXAgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcXVldWVSZWRyYXcgPSB1dGlsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgICByLnJlZHJhdygpO1xuICAgICAgfSwgb3B0cy5kZXFSZWRyYXdUaHJlc2hvbGQpO1xuXG4gICAgICB2YXIgZGVxdWV1ZSA9IGZ1bmN0aW9uIGRlcXVldWUod2lsbERyYXcsIGZyYW1lU3RhcnRUaW1lKSB7XG4gICAgICAgIHZhciBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZU5vdygpO1xuICAgICAgICB2YXIgYXZnUmVuZGVyVGltZSA9IHIuYXZlcmFnZVJlZHJhd1RpbWU7XG4gICAgICAgIHZhciByZW5kZXJUaW1lID0gci5sYXN0UmVkcmF3VGltZTtcbiAgICAgICAgdmFyIGRlcWQgPSBbXTtcbiAgICAgICAgdmFyIGV4dGVudCA9IHIuY3kuZXh0ZW50KCk7XG4gICAgICAgIHZhciBwaXhlbFJhdGlvID0gci5nZXRQaXhlbFJhdGlvKCk7IC8vIGlmIHdlIGFyZW4ndCBpbiBhIHRpY2sgdGhhdCBjYXVzZXMgYSBkcmF3LCB0aGVuIHRoZSByZW5kZXJlZCBzdHlsZVxuICAgICAgICAvLyBxdWV1ZSB3b24ndCBhdXRvbWF0aWNhbGx5IGJlIGZsdXNoZWQgYmVmb3JlIGRlcXVldWVpbmcgc3RhcnRzXG5cbiAgICAgICAgaWYgKCF3aWxsRHJhdykge1xuICAgICAgICAgIHIuZmx1c2hSZW5kZXJlZFN0eWxlUXVldWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICAgICAgICB2YXIgbm93ID0gcGVyZm9ybWFuY2VOb3coKTtcbiAgICAgICAgICB2YXIgZHVyYXRpb24gPSBub3cgLSBzdGFydFRpbWU7XG4gICAgICAgICAgdmFyIGZyYW1lRHVyYXRpb24gPSBub3cgLSBmcmFtZVN0YXJ0VGltZTtcblxuICAgICAgICAgIGlmIChyZW5kZXJUaW1lIDwgZnVsbEZwc1RpbWUpIHtcbiAgICAgICAgICAgIC8vIGlmIHdlJ3JlIHJlbmRlcmluZyBmYXN0ZXIgdGhhbiB0aGUgaWRlYWwgZnBzLCB0aGVuIGRvIGRlcXVldWVpbmdcbiAgICAgICAgICAgIC8vIGR1cmluZyBhbGwgb2YgdGhlIHJlbWFpbmluZyBmcmFtZSB0aW1lXG4gICAgICAgICAgICB2YXIgdGltZUF2YWlsYWJsZSA9IGZ1bGxGcHNUaW1lIC0gKHdpbGxEcmF3ID8gYXZnUmVuZGVyVGltZSA6IDApO1xuXG4gICAgICAgICAgICBpZiAoZnJhbWVEdXJhdGlvbiA+PSBvcHRzLmRlcUZhc3RDb3N0ICogdGltZUF2YWlsYWJsZSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdpbGxEcmF3KSB7XG4gICAgICAgICAgICAgIGlmIChkdXJhdGlvbiA+PSBvcHRzLmRlcUNvc3QgKiByZW5kZXJUaW1lIHx8IGR1cmF0aW9uID49IG9wdHMuZGVxQXZnQ29zdCAqIGF2Z1JlbmRlclRpbWUpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmcmFtZUR1cmF0aW9uID49IG9wdHMuZGVxTm9EcmF3Q29zdCAqIGZ1bGxGcHNUaW1lKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB0aGlzRGVxZCA9IG9wdHMuZGVxKHNlbGYsIHBpeGVsUmF0aW8sIGV4dGVudCk7XG5cbiAgICAgICAgICBpZiAodGhpc0RlcWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzRGVxZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBkZXFkLnB1c2godGhpc0RlcWRbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gY2FsbGJhY2tzIG9uIGRlcXVldWVcblxuXG4gICAgICAgIGlmIChkZXFkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBvcHRzLm9uRGVxZChzZWxmLCBkZXFkKTtcblxuICAgICAgICAgIGlmICghd2lsbERyYXcgJiYgb3B0cy5zaG91bGRSZWRyYXcoc2VsZiwgZGVxZCwgcGl4ZWxSYXRpbywgZXh0ZW50KSkge1xuICAgICAgICAgICAgcXVldWVSZWRyYXcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZhciBwcmlvcml0eSA9IG9wdHMucHJpb3JpdHkgfHwgbm9vcDtcbiAgICAgIHIuYmVmb3JlUmVuZGVyKGRlcXVldWUsIHByaW9yaXR5KHNlbGYpKTtcbiAgICB9O1xuICB9XG59O1xuXG4vLyBVc2VzIGtleXMgc28gZWxlbWVudHMgbWF5IHNoYXJlIHRoZSBzYW1lIGNhY2hlLlxuXG52YXIgRWxlbWVudFRleHR1cmVDYWNoZUxvb2t1cCA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXAoZ2V0S2V5KSB7XG4gICAgdmFyIGRvZXNFbGVJbnZhbGlkYXRlS2V5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzaWZ5O1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXApO1xuXG4gICAgdGhpcy5pZHNCeUtleSA9IG5ldyBNYXAkMSgpO1xuICAgIHRoaXMua2V5Rm9ySWQgPSBuZXcgTWFwJDEoKTtcbiAgICB0aGlzLmNhY2hlc0J5THZsID0gbmV3IE1hcCQxKCk7XG4gICAgdGhpcy5sdmxzID0gW107XG4gICAgdGhpcy5nZXRLZXkgPSBnZXRLZXk7XG4gICAgdGhpcy5kb2VzRWxlSW52YWxpZGF0ZUtleSA9IGRvZXNFbGVJbnZhbGlkYXRlS2V5O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXAsIFt7XG4gICAga2V5OiBcImdldElkc0ZvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJZHNGb3Ioa2V5KSB7XG4gICAgICBpZiAoa2V5ID09IG51bGwpIHtcbiAgICAgICAgZXJyb3IoXCJDYW4gbm90IGdldCBpZCBsaXN0IGZvciBudWxsIGtleVwiKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGlkc0J5S2V5ID0gdGhpcy5pZHNCeUtleTtcbiAgICAgIHZhciBpZHMgPSB0aGlzLmlkc0J5S2V5LmdldChrZXkpO1xuXG4gICAgICBpZiAoIWlkcykge1xuICAgICAgICBpZHMgPSBuZXcgU2V0JDEoKTtcbiAgICAgICAgaWRzQnlLZXkuc2V0KGtleSwgaWRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlkcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYWRkSWRGb3JLZXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkSWRGb3JLZXkoa2V5LCBpZCkge1xuICAgICAgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuZ2V0SWRzRm9yKGtleSkuYWRkKGlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVsZXRlSWRGb3JLZXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVsZXRlSWRGb3JLZXkoa2V5LCBpZCkge1xuICAgICAgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuZ2V0SWRzRm9yKGtleSlbXCJkZWxldGVcIl0oaWQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXROdW1iZXJPZklkc0ZvcktleVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXROdW1iZXJPZklkc0ZvcktleShrZXkpIHtcbiAgICAgIGlmIChrZXkgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldElkc0ZvcihrZXkpLnNpemU7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZUtleU1hcHBpbmdGb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlS2V5TWFwcGluZ0ZvcihlbGUpIHtcbiAgICAgIHZhciBpZCA9IGVsZS5pZCgpO1xuICAgICAgdmFyIHByZXZLZXkgPSB0aGlzLmtleUZvcklkLmdldChpZCk7XG4gICAgICB2YXIgY3VycktleSA9IHRoaXMuZ2V0S2V5KGVsZSk7XG4gICAgICB0aGlzLmRlbGV0ZUlkRm9yS2V5KHByZXZLZXksIGlkKTtcbiAgICAgIHRoaXMuYWRkSWRGb3JLZXkoY3VycktleSwgaWQpO1xuICAgICAgdGhpcy5rZXlGb3JJZC5zZXQoaWQsIGN1cnJLZXkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZWxldGVLZXlNYXBwaW5nRm9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlbGV0ZUtleU1hcHBpbmdGb3IoZWxlKSB7XG4gICAgICB2YXIgaWQgPSBlbGUuaWQoKTtcbiAgICAgIHZhciBwcmV2S2V5ID0gdGhpcy5rZXlGb3JJZC5nZXQoaWQpO1xuICAgICAgdGhpcy5kZWxldGVJZEZvcktleShwcmV2S2V5LCBpZCk7XG4gICAgICB0aGlzLmtleUZvcklkW1wiZGVsZXRlXCJdKGlkKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwia2V5SGFzQ2hhbmdlZEZvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBrZXlIYXNDaGFuZ2VkRm9yKGVsZSkge1xuICAgICAgdmFyIGlkID0gZWxlLmlkKCk7XG4gICAgICB2YXIgcHJldktleSA9IHRoaXMua2V5Rm9ySWQuZ2V0KGlkKTtcbiAgICAgIHZhciBuZXdLZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgICAgcmV0dXJuIHByZXZLZXkgIT09IG5ld0tleTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNJbnZhbGlkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzSW52YWxpZChlbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmtleUhhc0NoYW5nZWRGb3IoZWxlKSB8fCB0aGlzLmRvZXNFbGVJbnZhbGlkYXRlS2V5KGVsZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENhY2hlc0F0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENhY2hlc0F0KGx2bCkge1xuICAgICAgdmFyIGNhY2hlc0J5THZsID0gdGhpcy5jYWNoZXNCeUx2bCxcbiAgICAgICAgICBsdmxzID0gdGhpcy5sdmxzO1xuICAgICAgdmFyIGNhY2hlcyA9IGNhY2hlc0J5THZsLmdldChsdmwpO1xuXG4gICAgICBpZiAoIWNhY2hlcykge1xuICAgICAgICBjYWNoZXMgPSBuZXcgTWFwJDEoKTtcbiAgICAgICAgY2FjaGVzQnlMdmwuc2V0KGx2bCwgY2FjaGVzKTtcbiAgICAgICAgbHZscy5wdXNoKGx2bCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjYWNoZXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENhY2hlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENhY2hlKGtleSwgbHZsKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDYWNoZXNBdChsdmwpLmdldChrZXkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KGVsZSwgbHZsKSB7XG4gICAgICB2YXIga2V5ID0gdGhpcy5nZXRLZXkoZWxlKTtcbiAgICAgIHZhciBjYWNoZSA9IHRoaXMuZ2V0Q2FjaGUoa2V5LCBsdmwpOyAvLyBnZXR0aW5nIGZvciBhbiBlbGVtZW50IG1heSBuZWVkIHRvIGFkZCB0byB0aGUgaWQgbGlzdCBiL2MgZWxlcyBjYW4gc2hhcmUga2V5c1xuXG4gICAgICBpZiAoY2FjaGUgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUtleU1hcHBpbmdGb3IoZWxlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhY2hlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGb3JDYWNoZWRLZXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Rm9yQ2FjaGVkS2V5KGVsZSwgbHZsKSB7XG4gICAgICB2YXIga2V5ID0gdGhpcy5rZXlGb3JJZC5nZXQoZWxlLmlkKCkpOyAvLyBuLmIuIHVzZSBjYWNoZWQga2V5LCBub3QgbmV3bHkgY29tcHV0ZWQga2V5XG5cbiAgICAgIHZhciBjYWNoZSA9IHRoaXMuZ2V0Q2FjaGUoa2V5LCBsdmwpO1xuICAgICAgcmV0dXJuIGNhY2hlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNDYWNoZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNDYWNoZShrZXksIGx2bCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2FjaGVzQXQobHZsKS5oYXMoa2V5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhcyhlbGUsIGx2bCkge1xuICAgICAgdmFyIGtleSA9IHRoaXMuZ2V0S2V5KGVsZSk7XG4gICAgICByZXR1cm4gdGhpcy5oYXNDYWNoZShrZXksIGx2bCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldENhY2hlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENhY2hlKGtleSwgbHZsLCBjYWNoZSkge1xuICAgICAgY2FjaGUua2V5ID0ga2V5O1xuICAgICAgdGhpcy5nZXRDYWNoZXNBdChsdmwpLnNldChrZXksIGNhY2hlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChlbGUsIGx2bCwgY2FjaGUpIHtcbiAgICAgIHZhciBrZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgICAgdGhpcy5zZXRDYWNoZShrZXksIGx2bCwgY2FjaGUpO1xuICAgICAgdGhpcy51cGRhdGVLZXlNYXBwaW5nRm9yKGVsZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlbGV0ZUNhY2hlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlbGV0ZUNhY2hlKGtleSwgbHZsKSB7XG4gICAgICB0aGlzLmdldENhY2hlc0F0KGx2bClbXCJkZWxldGVcIl0oa2V5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVsZXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9kZWxldGUoZWxlLCBsdmwpIHtcbiAgICAgIHZhciBrZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgICAgdGhpcy5kZWxldGVDYWNoZShrZXksIGx2bCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImludmFsaWRhdGVLZXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW52YWxpZGF0ZUtleShrZXkpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHRoaXMubHZscy5mb3JFYWNoKGZ1bmN0aW9uIChsdmwpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmRlbGV0ZUNhY2hlKGtleSwgbHZsKTtcbiAgICAgIH0pO1xuICAgIH0gLy8gcmV0dXJucyB0cnVlIGlmIG5vIG90aGVyIGVsZXMgcmVmZXJlbmNlIHRoZSBpbnZhbGlkYXRlZCBjYWNoZSAobi5iLiBvdGhlciBlbGVzIG1heSBuZWVkIHRoZSBjYWNoZSB3aXRoIHRoZSBzYW1lIGtleSlcblxuICB9LCB7XG4gICAga2V5OiBcImludmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW52YWxpZGF0ZShlbGUpIHtcbiAgICAgIHZhciBpZCA9IGVsZS5pZCgpO1xuICAgICAgdmFyIGtleSA9IHRoaXMua2V5Rm9ySWQuZ2V0KGlkKTsgLy8gbi5iLiB1c2Ugc3RvcmVkIGtleSByYXRoZXIgdGhhbiBjdXJyZW50IChwb3RlbnRpYWwga2V5KVxuXG4gICAgICB0aGlzLmRlbGV0ZUtleU1hcHBpbmdGb3IoZWxlKTtcbiAgICAgIHZhciBlbnRpcmVLZXlJbnZhbGlkYXRlZCA9IHRoaXMuZG9lc0VsZUludmFsaWRhdGVLZXkoZWxlKTtcblxuICAgICAgaWYgKGVudGlyZUtleUludmFsaWRhdGVkKSB7XG4gICAgICAgIC8vIGNsZWFyIG1hcHBpbmcgZm9yIGN1cnJlbnQga2V5XG4gICAgICAgIHRoaXMuaW52YWxpZGF0ZUtleShrZXkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW50aXJlS2V5SW52YWxpZGF0ZWQgfHwgdGhpcy5nZXROdW1iZXJPZklkc0ZvcktleShrZXkpID09PSAwO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBFbGVtZW50VGV4dHVyZUNhY2hlTG9va3VwO1xufSgpO1xuXG52YXIgbWluVHhySCA9IDI1OyAvLyB0aGUgc2l6ZSBvZiB0aGUgdGV4dHVyZSBjYWNoZSBmb3Igc21hbGwgaGVpZ2h0IGVsZXMgKHNwZWNpYWwgY2FzZSlcblxudmFyIHR4clN0ZXBIID0gNTA7IC8vIHRoZSBtaW4gc2l6ZSBvZiB0aGUgcmVndWxhciBjYWNoZSwgYW5kIHRoZSBzaXplIGl0IGluY3JlYXNlcyB3aXRoIGVhY2ggc3RlcCB1cFxuXG52YXIgbWluTHZsID0gLTQ7IC8vIHdoZW4gc2NhbGluZyBzbWFsbGVyIHRoYW4gdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHJlLXJlbmRlclxuXG52YXIgbWF4THZsID0gMzsgLy8gd2hlbiBsYXJnZXIgdGhhbiB0aGlzIHNjYWxlIGp1c3QgcmVuZGVyIGRpcmVjdGx5IChjYWNoaW5nIGlzIG5vdCBoZWxwZnVsKVxuXG52YXIgbWF4Wm9vbSA9IDcuOTk7IC8vIGJleW9uZCB0aGlzIHpvb20gbGV2ZWwsIGxheWVyZWQgdGV4dHVyZXMgYXJlIG5vdCB1c2VkXG5cbnZhciBlbGVUeHJTcGFjaW5nID0gODsgLy8gc3BhY2luZyBiZXR3ZWVuIGVsZW1lbnRzIG9uIHRleHR1cmVzIHRvIGF2b2lkIGJsaXR0aW5nIG92ZXJsYXBzXG5cbnZhciBkZWZUeHJXaWR0aCA9IDEwMjQ7IC8vIGRlZmF1bHQvbWluaW11bSB0ZXh0dXJlIHdpZHRoXG5cbnZhciBtYXhUeHJXID0gMTAyNDsgLy8gdGhlIG1heGltdW0gd2lkdGggb2YgYSB0ZXh0dXJlXG5cbnZhciBtYXhUeHJIID0gMTAyNDsgLy8gdGhlIG1heGltdW0gaGVpZ2h0IG9mIGEgdGV4dHVyZVxuXG52YXIgbWluVXRpbGl0eSA9IDAuMjsgLy8gaWYgdXNhZ2Ugb2YgdGV4dHVyZSBpcyBsZXNzIHRoYW4gdGhpcywgaXQgaXMgcmV0aXJlZFxuXG52YXIgbWF4RnVsbG5lc3MgPSAwLjg7IC8vIGZ1bGxuZXNzIG9mIHRleHR1cmUgYWZ0ZXIgd2hpY2ggcXVldWUgcmVtb3ZhbCBpcyBjaGVja2VkXG5cbnZhciBtYXhGdWxsbmVzc0NoZWNrcyA9IDEwOyAvLyBkZXF1ZXVlZCBhZnRlciB0aGlzIG1hbnkgY2hlY2tzXG5cbnZhciBkZXFDb3N0ID0gMC4xNTsgLy8gJSBvZiBhZGQnbCByZW5kZXJpbmcgY29zdCBhbGxvd2VkIGZvciBkZXF1ZXVpbmcgZWxlIGNhY2hlcyBlYWNoIGZyYW1lXG5cbnZhciBkZXFBdmdDb3N0ID0gMC4xOyAvLyAlIG9mIGFkZCdsIHJlbmRlcmluZyBjb3N0IGNvbXBhcmVkIHRvIGF2ZXJhZ2Ugb3ZlcmFsbCByZWRyYXcgdGltZVxuXG52YXIgZGVxTm9EcmF3Q29zdCA9IDAuOTsgLy8gJSBvZiBhdmcgZnJhbWUgdGltZSB0aGF0IGNhbiBiZSB1c2VkIGZvciBkZXF1ZXVlaW5nIHdoZW4gbm90IGRyYXdpbmdcblxudmFyIGRlcUZhc3RDb3N0ID0gMC45OyAvLyAlIG9mIGZyYW1lIHRpbWUgdG8gYmUgdXNlZCB3aGVuID42MGZwc1xuXG52YXIgZGVxUmVkcmF3VGhyZXNob2xkID0gMTAwOyAvLyB0aW1lIHRvIGJhdGNoIHJlZHJhd3MgdG9nZXRoZXIgZnJvbSBkZXF1ZXVlaW5nIHRvIGFsbG93IG1vcmUgZGVxdWV1ZWluZyBjYWxjcyB0byBoYXBwZW4gaW4gdGhlIG1lYW53aGlsZVxuXG52YXIgbWF4RGVxU2l6ZSA9IDE7IC8vIG51bWJlciBvZiBlbGVzIHRvIGRlcXVldWUgYW5kIHJlbmRlciBhdCBoaWdoZXIgdGV4dHVyZSBpbiBlYWNoIGJhdGNoXG5cbnZhciBnZXRUeHJSZWFzb25zID0ge1xuICBkZXF1ZXVlOiAnZGVxdWV1ZScsXG4gIGRvd25zY2FsZTogJ2Rvd25zY2FsZScsXG4gIGhpZ2hRdWFsaXR5OiAnaGlnaFF1YWxpdHknXG59O1xudmFyIGluaXREZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgZ2V0S2V5OiBudWxsLFxuICBkb2VzRWxlSW52YWxpZGF0ZUtleTogZmFsc2lmeSxcbiAgZHJhd0VsZW1lbnQ6IG51bGwsXG4gIGdldEJvdW5kaW5nQm94OiBudWxsLFxuICBnZXRSb3RhdGlvblBvaW50OiBudWxsLFxuICBnZXRSb3RhdGlvbk9mZnNldDogbnVsbCxcbiAgaXNWaXNpYmxlOiB0cnVlaWZ5LFxuICBhbGxvd0VkZ2VUeHJDYWNoaW5nOiB0cnVlLFxuICBhbGxvd1BhcmVudFR4ckNhY2hpbmc6IHRydWVcbn0pO1xuXG52YXIgRWxlbWVudFRleHR1cmVDYWNoZSA9IGZ1bmN0aW9uIEVsZW1lbnRUZXh0dXJlQ2FjaGUocmVuZGVyZXIsIGluaXRPcHRpb25zKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgc2VsZi5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICBzZWxmLm9uRGVxdWV1ZXMgPSBbXTtcbiAgdmFyIG9wdHMgPSBpbml0RGVmYXVsdHMoaW5pdE9wdGlvbnMpO1xuICBleHRlbmQoc2VsZiwgb3B0cyk7XG4gIHNlbGYubG9va3VwID0gbmV3IEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXAob3B0cy5nZXRLZXksIG9wdHMuZG9lc0VsZUludmFsaWRhdGVLZXkpO1xuICBzZWxmLnNldHVwRGVxdWV1ZWluZygpO1xufTtcblxudmFyIEVUQ3AgPSBFbGVtZW50VGV4dHVyZUNhY2hlLnByb3RvdHlwZTtcbkVUQ3AucmVhc29ucyA9IGdldFR4clJlYXNvbnM7IC8vIHRoZSBsaXN0IG9mIHRleHR1cmVzIGluIHdoaWNoIG5ldyBzdWJ0ZXh0dXJlcyBmb3IgZWxlbWVudHMgY2FuIGJlIHBsYWNlZFxuXG5FVENwLmdldFRleHR1cmVRdWV1ZSA9IGZ1bmN0aW9uICh0eHJIKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgc2VsZi5lbGVJbWdDYWNoZXMgPSBzZWxmLmVsZUltZ0NhY2hlcyB8fCB7fTtcbiAgcmV0dXJuIHNlbGYuZWxlSW1nQ2FjaGVzW3R4ckhdID0gc2VsZi5lbGVJbWdDYWNoZXNbdHhySF0gfHwgW107XG59OyAvLyB0aGUgbGlzdCBvZiB1c3VzZWQgdGV4dHVyZXMgd2hpY2ggY2FuIGJlIHJlY3ljbGVkIChpbiB1c2UgaW4gdGV4dHVyZSBxdWV1ZSlcblxuXG5FVENwLmdldFJldGlyZWRUZXh0dXJlUXVldWUgPSBmdW5jdGlvbiAodHhySCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBydHh0clFzID0gc2VsZi5lbGVJbWdDYWNoZXMucmV0aXJlZCA9IHNlbGYuZWxlSW1nQ2FjaGVzLnJldGlyZWQgfHwge307XG4gIHZhciBydHh0clEgPSBydHh0clFzW3R4ckhdID0gcnR4dHJRc1t0eHJIXSB8fCBbXTtcbiAgcmV0dXJuIHJ0eHRyUTtcbn07IC8vIHF1ZXVlIG9mIGVsZW1lbnQgZHJhdyByZXF1ZXN0cyBhdCBkaWZmZXJlbnQgc2NhbGUgbGV2ZWxzXG5cblxuRVRDcC5nZXRFbGVtZW50UXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHEgPSBzZWxmLmVsZUNhY2hlUXVldWUgPSBzZWxmLmVsZUNhY2hlUXVldWUgfHwgbmV3IEhlYXAoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi5yZXFzIC0gYS5yZXFzO1xuICB9KTtcbiAgcmV0dXJuIHE7XG59OyAvLyBxdWV1ZSBvZiBlbGVtZW50IGRyYXcgcmVxdWVzdHMgYXQgZGlmZmVyZW50IHNjYWxlIGxldmVscyAoZWxlbWVudCBpZCBsb29rdXApXG5cblxuRVRDcC5nZXRFbGVtZW50S2V5VG9RdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgazJxID0gc2VsZi5lbGVLZXlUb0NhY2hlUXVldWUgPSBzZWxmLmVsZUtleVRvQ2FjaGVRdWV1ZSB8fCB7fTtcbiAgcmV0dXJuIGsycTtcbn07XG5cbkVUQ3AuZ2V0RWxlbWVudCA9IGZ1bmN0aW9uIChlbGUsIGJiLCBweFJhdGlvLCBsdmwsIHJlYXNvbikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciByID0gdGhpcy5yZW5kZXJlcjtcbiAgdmFyIHpvb20gPSByLmN5Lnpvb20oKTtcbiAgdmFyIGxvb2t1cCA9IHRoaXMubG9va3VwO1xuXG4gIGlmICghYmIgfHwgYmIudyA9PT0gMCB8fCBiYi5oID09PSAwIHx8IGlzTmFOKGJiLncpIHx8IGlzTmFOKGJiLmgpIHx8ICFlbGUudmlzaWJsZSgpIHx8IGVsZS5yZW1vdmVkKCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICghc2VsZi5hbGxvd0VkZ2VUeHJDYWNoaW5nICYmIGVsZS5pc0VkZ2UoKSB8fCAhc2VsZi5hbGxvd1BhcmVudFR4ckNhY2hpbmcgJiYgZWxlLmlzUGFyZW50KCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChsdmwgPT0gbnVsbCkge1xuICAgIGx2bCA9IE1hdGguY2VpbChsb2cyKHpvb20gKiBweFJhdGlvKSk7XG4gIH1cblxuICBpZiAobHZsIDwgbWluTHZsKSB7XG4gICAgbHZsID0gbWluTHZsO1xuICB9IGVsc2UgaWYgKHpvb20gPj0gbWF4Wm9vbSB8fCBsdmwgPiBtYXhMdmwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IE1hdGgucG93KDIsIGx2bCk7XG4gIHZhciBlbGVTY2FsZWRIID0gYmIuaCAqIHNjYWxlO1xuICB2YXIgZWxlU2NhbGVkVyA9IGJiLncgKiBzY2FsZTtcbiAgdmFyIHNjYWxlZExhYmVsU2hvd24gPSByLmVsZVRleHRCaWdnZXJUaGFuTWluKGVsZSwgc2NhbGUpO1xuXG4gIGlmICghdGhpcy5pc1Zpc2libGUoZWxlLCBzY2FsZWRMYWJlbFNob3duKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGVsZUNhY2hlID0gbG9va3VwLmdldChlbGUsIGx2bCk7IC8vIGlmIHRoaXMgZ2V0IHdhcyBvbiBhbiB1bnVzZWQvaW52YWxpZGF0ZWQgY2FjaGUsIHRoZW4gcmVzdG9yZSB0aGUgdGV4dHVyZSB1c2FnZSBtZXRyaWNcblxuICBpZiAoZWxlQ2FjaGUgJiYgZWxlQ2FjaGUuaW52YWxpZGF0ZWQpIHtcbiAgICBlbGVDYWNoZS5pbnZhbGlkYXRlZCA9IGZhbHNlO1xuICAgIGVsZUNhY2hlLnRleHR1cmUuaW52YWxpZGF0ZWRXaWR0aCAtPSBlbGVDYWNoZS53aWR0aDtcbiAgfVxuXG4gIGlmIChlbGVDYWNoZSkge1xuICAgIHJldHVybiBlbGVDYWNoZTtcbiAgfVxuXG4gIHZhciB0eHJIOyAvLyB3aGljaCB0ZXh0dXJlIGhlaWdodCB0aGlzIGVsZSBiZWxvbmdzIHRvXG5cbiAgaWYgKGVsZVNjYWxlZEggPD0gbWluVHhySCkge1xuICAgIHR4ckggPSBtaW5UeHJIO1xuICB9IGVsc2UgaWYgKGVsZVNjYWxlZEggPD0gdHhyU3RlcEgpIHtcbiAgICB0eHJIID0gdHhyU3RlcEg7XG4gIH0gZWxzZSB7XG4gICAgdHhySCA9IE1hdGguY2VpbChlbGVTY2FsZWRIIC8gdHhyU3RlcEgpICogdHhyU3RlcEg7XG4gIH1cblxuICBpZiAoZWxlU2NhbGVkSCA+IG1heFR4ckggfHwgZWxlU2NhbGVkVyA+IG1heFR4clcpIHtcbiAgICByZXR1cm4gbnVsbDsgLy8gY2FjaGluZyBsYXJnZSBlbGVtZW50cyBpcyBub3QgZWZmaWNpZW50XG4gIH1cblxuICB2YXIgdHhyUSA9IHNlbGYuZ2V0VGV4dHVyZVF1ZXVlKHR4ckgpOyAvLyBmaXJzdCB0cnkgdGhlIHNlY29uZCBsYXN0IG9uZSBpbiBjYXNlIGl0IGhhcyBzcGFjZSBhdCB0aGUgZW5kXG5cbiAgdmFyIHR4ciA9IHR4clFbdHhyUS5sZW5ndGggLSAyXTtcblxuICB2YXIgYWRkTmV3VHhyID0gZnVuY3Rpb24gYWRkTmV3VHhyKCkge1xuICAgIHJldHVybiBzZWxmLnJlY3ljbGVUZXh0dXJlKHR4ckgsIGVsZVNjYWxlZFcpIHx8IHNlbGYuYWRkVGV4dHVyZSh0eHJILCBlbGVTY2FsZWRXKTtcbiAgfTsgLy8gdHJ5IHRoZSBsYXN0IG9uZSBpZiB0aGVyZSBpcyBubyBzZWNvbmQgbGFzdCBvbmVcblxuXG4gIGlmICghdHhyKSB7XG4gICAgdHhyID0gdHhyUVt0eHJRLmxlbmd0aCAtIDFdO1xuICB9IC8vIGlmIHRoZSBsYXN0IG9uZSBkb2Vzbid0IGV4aXN0LCB3ZSBuZWVkIGEgZmlyc3Qgb25lXG5cblxuICBpZiAoIXR4cikge1xuICAgIHR4ciA9IGFkZE5ld1R4cigpO1xuICB9IC8vIGlmIHRoZXJlJ3Mgbm8gcm9vbSBpbiB0aGUgY3VycmVudCB0ZXh0dXJlLCB3ZSBuZWVkIGEgbmV3IG9uZVxuXG5cbiAgaWYgKHR4ci53aWR0aCAtIHR4ci51c2VkV2lkdGggPCBlbGVTY2FsZWRXKSB7XG4gICAgdHhyID0gYWRkTmV3VHhyKCk7XG4gIH1cblxuICB2YXIgc2NhbGFibGVGcm9tID0gZnVuY3Rpb24gc2NhbGFibGVGcm9tKG90aGVyQ2FjaGUpIHtcbiAgICByZXR1cm4gb3RoZXJDYWNoZSAmJiBvdGhlckNhY2hlLnNjYWxlZExhYmVsU2hvd24gPT09IHNjYWxlZExhYmVsU2hvd247XG4gIH07XG5cbiAgdmFyIGRlcWluZyA9IHJlYXNvbiAmJiByZWFzb24gPT09IGdldFR4clJlYXNvbnMuZGVxdWV1ZTtcbiAgdmFyIGhpZ2hRdWFsaXR5UmVxID0gcmVhc29uICYmIHJlYXNvbiA9PT0gZ2V0VHhyUmVhc29ucy5oaWdoUXVhbGl0eTtcbiAgdmFyIGRvd25zY2FsZVJlcSA9IHJlYXNvbiAmJiByZWFzb24gPT09IGdldFR4clJlYXNvbnMuZG93bnNjYWxlO1xuICB2YXIgaGlnaGVyQ2FjaGU7IC8vIHRoZSBuZWFyZXN0IGNhY2hlIHdpdGggYSBoaWdoZXIgbGV2ZWxcblxuICBmb3IgKHZhciBsID0gbHZsICsgMTsgbCA8PSBtYXhMdmw7IGwrKykge1xuICAgIHZhciBjID0gbG9va3VwLmdldChlbGUsIGwpO1xuXG4gICAgaWYgKGMpIHtcbiAgICAgIGhpZ2hlckNhY2hlID0gYztcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZhciBvbmVVcENhY2hlID0gaGlnaGVyQ2FjaGUgJiYgaGlnaGVyQ2FjaGUubGV2ZWwgPT09IGx2bCArIDEgPyBoaWdoZXJDYWNoZSA6IG51bGw7XG5cbiAgdmFyIGRvd25zY2FsZSA9IGZ1bmN0aW9uIGRvd25zY2FsZSgpIHtcbiAgICB0eHIuY29udGV4dC5kcmF3SW1hZ2Uob25lVXBDYWNoZS50ZXh0dXJlLmNhbnZhcywgb25lVXBDYWNoZS54LCAwLCBvbmVVcENhY2hlLndpZHRoLCBvbmVVcENhY2hlLmhlaWdodCwgdHhyLnVzZWRXaWR0aCwgMCwgZWxlU2NhbGVkVywgZWxlU2NhbGVkSCk7XG4gIH07IC8vIHJlc2V0IGVsZSBhcmVhIGluIHRleHR1cmVcblxuXG4gIHR4ci5jb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcbiAgdHhyLmNvbnRleHQuY2xlYXJSZWN0KHR4ci51c2VkV2lkdGgsIDAsIGVsZVNjYWxlZFcsIHR4ckgpO1xuXG4gIGlmIChzY2FsYWJsZUZyb20ob25lVXBDYWNoZSkpIHtcbiAgICAvLyB0aGVuIHdlIGNhbiByZWxhdGl2ZWx5IGNoZWFwbHkgcmVzY2FsZSB0aGUgZXhpc3RpbmcgaW1hZ2Ugdy9vIHJlcmVuZGVyaW5nXG4gICAgZG93bnNjYWxlKCk7XG4gIH0gZWxzZSBpZiAoc2NhbGFibGVGcm9tKGhpZ2hlckNhY2hlKSkge1xuICAgIC8vIHRoZW4gdXNlIHRoZSBoaWdoZXIgY2FjaGUgZm9yIG5vdyBhbmQgcXVldWUgdGhlIG5leHQgbGV2ZWwgZG93blxuICAgIC8vIHRvIGNoZWFwbHkgc2NhbGUgdG93YXJkcyB0aGUgc21hbGxlciBsZXZlbFxuICAgIGlmIChoaWdoUXVhbGl0eVJlcSkge1xuICAgICAgZm9yICh2YXIgX2wgPSBoaWdoZXJDYWNoZS5sZXZlbDsgX2wgPiBsdmw7IF9sLS0pIHtcbiAgICAgICAgb25lVXBDYWNoZSA9IHNlbGYuZ2V0RWxlbWVudChlbGUsIGJiLCBweFJhdGlvLCBfbCwgZ2V0VHhyUmVhc29ucy5kb3duc2NhbGUpO1xuICAgICAgfVxuXG4gICAgICBkb3duc2NhbGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5xdWV1ZUVsZW1lbnQoZWxlLCBoaWdoZXJDYWNoZS5sZXZlbCAtIDEpO1xuICAgICAgcmV0dXJuIGhpZ2hlckNhY2hlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgbG93ZXJDYWNoZTsgLy8gdGhlIG5lYXJlc3QgY2FjaGUgd2l0aCBhIGxvd2VyIGxldmVsXG5cbiAgICBpZiAoIWRlcWluZyAmJiAhaGlnaFF1YWxpdHlSZXEgJiYgIWRvd25zY2FsZVJlcSkge1xuICAgICAgZm9yICh2YXIgX2wyID0gbHZsIC0gMTsgX2wyID49IG1pbkx2bDsgX2wyLS0pIHtcbiAgICAgICAgdmFyIF9jID0gbG9va3VwLmdldChlbGUsIF9sMik7XG5cbiAgICAgICAgaWYgKF9jKSB7XG4gICAgICAgICAgbG93ZXJDYWNoZSA9IF9jO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNjYWxhYmxlRnJvbShsb3dlckNhY2hlKSkge1xuICAgICAgLy8gdGhlbiB1c2UgdGhlIGxvd2VyIHF1YWxpdHkgY2FjaGUgZm9yIG5vdyBhbmQgcXVldWUgdGhlIGJldHRlciBvbmUgZm9yIGxhdGVyXG4gICAgICBzZWxmLnF1ZXVlRWxlbWVudChlbGUsIGx2bCk7XG4gICAgICByZXR1cm4gbG93ZXJDYWNoZTtcbiAgICB9XG5cbiAgICB0eHIuY29udGV4dC50cmFuc2xhdGUodHhyLnVzZWRXaWR0aCwgMCk7XG4gICAgdHhyLmNvbnRleHQuc2NhbGUoc2NhbGUsIHNjYWxlKTtcbiAgICB0aGlzLmRyYXdFbGVtZW50KHR4ci5jb250ZXh0LCBlbGUsIGJiLCBzY2FsZWRMYWJlbFNob3duLCBmYWxzZSk7XG4gICAgdHhyLmNvbnRleHQuc2NhbGUoMSAvIHNjYWxlLCAxIC8gc2NhbGUpO1xuICAgIHR4ci5jb250ZXh0LnRyYW5zbGF0ZSgtdHhyLnVzZWRXaWR0aCwgMCk7XG4gIH1cblxuICBlbGVDYWNoZSA9IHtcbiAgICB4OiB0eHIudXNlZFdpZHRoLFxuICAgIHRleHR1cmU6IHR4cixcbiAgICBsZXZlbDogbHZsLFxuICAgIHNjYWxlOiBzY2FsZSxcbiAgICB3aWR0aDogZWxlU2NhbGVkVyxcbiAgICBoZWlnaHQ6IGVsZVNjYWxlZEgsXG4gICAgc2NhbGVkTGFiZWxTaG93bjogc2NhbGVkTGFiZWxTaG93blxuICB9O1xuICB0eHIudXNlZFdpZHRoICs9IE1hdGguY2VpbChlbGVTY2FsZWRXICsgZWxlVHhyU3BhY2luZyk7XG4gIHR4ci5lbGVDYWNoZXMucHVzaChlbGVDYWNoZSk7XG4gIGxvb2t1cC5zZXQoZWxlLCBsdmwsIGVsZUNhY2hlKTtcbiAgc2VsZi5jaGVja1RleHR1cmVGdWxsbmVzcyh0eHIpO1xuICByZXR1cm4gZWxlQ2FjaGU7XG59O1xuXG5FVENwLmludmFsaWRhdGVFbGVtZW50cyA9IGZ1bmN0aW9uIChlbGVzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuaW52YWxpZGF0ZUVsZW1lbnQoZWxlc1tpXSk7XG4gIH1cbn07XG5cbkVUQ3AuaW52YWxpZGF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGxvb2t1cCA9IHNlbGYubG9va3VwO1xuICB2YXIgY2FjaGVzID0gW107XG4gIHZhciBpbnZhbGlkID0gbG9va3VwLmlzSW52YWxpZChlbGUpO1xuXG4gIGlmICghaW52YWxpZCkge1xuICAgIHJldHVybjsgLy8gb3ZlcnJpZGUgdGhlIGludmFsaWRhdGlvbiByZXF1ZXN0IGlmIHRoZSBlbGVtZW50IGtleSBoYXMgbm90IGNoYW5nZWRcbiAgfVxuXG4gIGZvciAodmFyIGx2bCA9IG1pbkx2bDsgbHZsIDw9IG1heEx2bDsgbHZsKyspIHtcbiAgICB2YXIgY2FjaGUgPSBsb29rdXAuZ2V0Rm9yQ2FjaGVkS2V5KGVsZSwgbHZsKTtcblxuICAgIGlmIChjYWNoZSkge1xuICAgICAgY2FjaGVzLnB1c2goY2FjaGUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBub090aGVyRWxlc1VzZUNhY2hlID0gbG9va3VwLmludmFsaWRhdGUoZWxlKTtcblxuICBpZiAobm9PdGhlckVsZXNVc2VDYWNoZSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgX2NhY2hlID0gY2FjaGVzW2ldO1xuICAgICAgdmFyIHR4ciA9IF9jYWNoZS50ZXh0dXJlOyAvLyByZW1vdmUgc3BhY2UgZnJvbSB0aGUgdGV4dHVyZSBpdCBiZWxvbmdzIHRvXG5cbiAgICAgIHR4ci5pbnZhbGlkYXRlZFdpZHRoICs9IF9jYWNoZS53aWR0aDsgLy8gbWFyayB0aGUgY2FjaGUgYXMgaW52YWxpZGF0ZWRcblxuICAgICAgX2NhY2hlLmludmFsaWRhdGVkID0gdHJ1ZTsgLy8gcmV0aXJlIHRoZSB0ZXh0dXJlIGlmIGl0cyB1dGlsaXR5IGlzIGxvd1xuXG4gICAgICBzZWxmLmNoZWNrVGV4dHVyZVV0aWxpdHkodHhyKTtcbiAgICB9XG4gIH0gLy8gcmVtb3ZlIGZyb20gcXVldWUgc2luY2UgdGhlIG9sZCByZXEgd2FzIGZvciB0aGUgb2xkIHN0YXRlXG5cblxuICBzZWxmLnJlbW92ZUZyb21RdWV1ZShlbGUpO1xufTtcblxuRVRDcC5jaGVja1RleHR1cmVVdGlsaXR5ID0gZnVuY3Rpb24gKHR4cikge1xuICAvLyBpbnZhbGlkYXRlIGFsbCBlbnRyaWVzIGluIHRoZSBjYWNoZSBpZiB0aGUgY2FjaGUgc2l6ZSBpcyBzbWFsbFxuICBpZiAodHhyLmludmFsaWRhdGVkV2lkdGggPj0gbWluVXRpbGl0eSAqIHR4ci53aWR0aCkge1xuICAgIHRoaXMucmV0aXJlVGV4dHVyZSh0eHIpO1xuICB9XG59O1xuXG5FVENwLmNoZWNrVGV4dHVyZUZ1bGxuZXNzID0gZnVuY3Rpb24gKHR4cikge1xuICAvLyBpZiB0ZXh0dXJlIGhhcyBiZWVuIG1vc3RseSBmaWxsZWQgYW5kIHBhc3NlZCBvdmVyIHNldmVyYWwgdGltZXMsIHJlbW92ZVxuICAvLyBpdCBmcm9tIHRoZSBxdWV1ZSBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhc3RlIHRpbWUgbG9va2luZyBhdCBpdCB0byBwdXQgbmV3IHRoaW5nc1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0eHJRID0gc2VsZi5nZXRUZXh0dXJlUXVldWUodHhyLmhlaWdodCk7XG5cbiAgaWYgKHR4ci51c2VkV2lkdGggLyB0eHIud2lkdGggPiBtYXhGdWxsbmVzcyAmJiB0eHIuZnVsbG5lc3NDaGVja3MgPj0gbWF4RnVsbG5lc3NDaGVja3MpIHtcbiAgICByZW1vdmVGcm9tQXJyYXkodHhyUSwgdHhyKTtcbiAgfSBlbHNlIHtcbiAgICB0eHIuZnVsbG5lc3NDaGVja3MrKztcbiAgfVxufTtcblxuRVRDcC5yZXRpcmVUZXh0dXJlID0gZnVuY3Rpb24gKHR4cikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0eHJIID0gdHhyLmhlaWdodDtcbiAgdmFyIHR4clEgPSBzZWxmLmdldFRleHR1cmVRdWV1ZSh0eHJIKTtcbiAgdmFyIGxvb2t1cCA9IHRoaXMubG9va3VwOyAvLyByZXRpcmUgdGhlIHRleHR1cmUgZnJvbSB0aGUgYWN0aXZlIC8gc2VhcmNoYWJsZSBxdWV1ZTpcblxuICByZW1vdmVGcm9tQXJyYXkodHhyUSwgdHhyKTtcbiAgdHhyLnJldGlyZWQgPSB0cnVlOyAvLyByZW1vdmUgdGhlIHJlZnMgZnJvbSB0aGUgZWxlcyB0byB0aGUgY2FjaGVzOlxuXG4gIHZhciBlbGVDYWNoZXMgPSB0eHIuZWxlQ2FjaGVzO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlQ2FjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZUNhY2hlID0gZWxlQ2FjaGVzW2ldO1xuICAgIGxvb2t1cC5kZWxldGVDYWNoZShlbGVDYWNoZS5rZXksIGVsZUNhY2hlLmxldmVsKTtcbiAgfVxuXG4gIGNsZWFyQXJyYXkoZWxlQ2FjaGVzKTsgLy8gYWRkIHRoZSB0ZXh0dXJlIHRvIGEgcmV0aXJlZCBxdWV1ZSBzbyBpdCBjYW4gYmUgcmVjeWNsZWQgaW4gZnV0dXJlOlxuXG4gIHZhciBydHh0clEgPSBzZWxmLmdldFJldGlyZWRUZXh0dXJlUXVldWUodHhySCk7XG4gIHJ0eHRyUS5wdXNoKHR4cik7XG59O1xuXG5FVENwLmFkZFRleHR1cmUgPSBmdW5jdGlvbiAodHhySCwgbWluVykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0eHJRID0gc2VsZi5nZXRUZXh0dXJlUXVldWUodHhySCk7XG4gIHZhciB0eHIgPSB7fTtcbiAgdHhyUS5wdXNoKHR4cik7XG4gIHR4ci5lbGVDYWNoZXMgPSBbXTtcbiAgdHhyLmhlaWdodCA9IHR4ckg7XG4gIHR4ci53aWR0aCA9IE1hdGgubWF4KGRlZlR4cldpZHRoLCBtaW5XKTtcbiAgdHhyLnVzZWRXaWR0aCA9IDA7XG4gIHR4ci5pbnZhbGlkYXRlZFdpZHRoID0gMDtcbiAgdHhyLmZ1bGxuZXNzQ2hlY2tzID0gMDtcbiAgdHhyLmNhbnZhcyA9IHNlbGYucmVuZGVyZXIubWFrZU9mZnNjcmVlbkNhbnZhcyh0eHIud2lkdGgsIHR4ci5oZWlnaHQpO1xuICB0eHIuY29udGV4dCA9IHR4ci5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgcmV0dXJuIHR4cjtcbn07XG5cbkVUQ3AucmVjeWNsZVRleHR1cmUgPSBmdW5jdGlvbiAodHhySCwgbWluVykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0eHJRID0gc2VsZi5nZXRUZXh0dXJlUXVldWUodHhySCk7XG4gIHZhciBydHh0clEgPSBzZWxmLmdldFJldGlyZWRUZXh0dXJlUXVldWUodHhySCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBydHh0clEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdHhyID0gcnR4dHJRW2ldO1xuXG4gICAgaWYgKHR4ci53aWR0aCA+PSBtaW5XKSB7XG4gICAgICB0eHIucmV0aXJlZCA9IGZhbHNlO1xuICAgICAgdHhyLnVzZWRXaWR0aCA9IDA7XG4gICAgICB0eHIuaW52YWxpZGF0ZWRXaWR0aCA9IDA7XG4gICAgICB0eHIuZnVsbG5lc3NDaGVja3MgPSAwO1xuICAgICAgY2xlYXJBcnJheSh0eHIuZWxlQ2FjaGVzKTtcbiAgICAgIHR4ci5jb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcbiAgICAgIHR4ci5jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0eHIud2lkdGgsIHR4ci5oZWlnaHQpO1xuICAgICAgcmVtb3ZlRnJvbUFycmF5KHJ0eHRyUSwgdHhyKTtcbiAgICAgIHR4clEucHVzaCh0eHIpO1xuICAgICAgcmV0dXJuIHR4cjtcbiAgICB9XG4gIH1cbn07XG5cbkVUQ3AucXVldWVFbGVtZW50ID0gZnVuY3Rpb24gKGVsZSwgbHZsKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHEgPSBzZWxmLmdldEVsZW1lbnRRdWV1ZSgpO1xuICB2YXIgazJxID0gc2VsZi5nZXRFbGVtZW50S2V5VG9RdWV1ZSgpO1xuICB2YXIga2V5ID0gdGhpcy5nZXRLZXkoZWxlKTtcbiAgdmFyIGV4aXN0aW5nUmVxID0gazJxW2tleV07XG5cbiAgaWYgKGV4aXN0aW5nUmVxKSB7XG4gICAgLy8gdXNlIHRoZSBtYXggbHZsIGIvYyBpbiBiZXR3ZWVuIGx2bHMgYXJlIGNoZWFwIHRvIG1ha2VcbiAgICBleGlzdGluZ1JlcS5sZXZlbCA9IE1hdGgubWF4KGV4aXN0aW5nUmVxLmxldmVsLCBsdmwpO1xuICAgIGV4aXN0aW5nUmVxLmVsZXMubWVyZ2UoZWxlKTtcbiAgICBleGlzdGluZ1JlcS5yZXFzKys7XG4gICAgcS51cGRhdGVJdGVtKGV4aXN0aW5nUmVxKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcmVxID0ge1xuICAgICAgZWxlczogZWxlLnNwYXduKCkubWVyZ2UoZWxlKSxcbiAgICAgIGxldmVsOiBsdmwsXG4gICAgICByZXFzOiAxLFxuICAgICAga2V5OiBrZXlcbiAgICB9O1xuICAgIHEucHVzaChyZXEpO1xuICAgIGsycVtrZXldID0gcmVxO1xuICB9XG59O1xuXG5FVENwLmRlcXVldWUgPSBmdW5jdGlvbiAocHhSYXRpb1xuLyosIGV4dGVudCovXG4pIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgcSA9IHNlbGYuZ2V0RWxlbWVudFF1ZXVlKCk7XG4gIHZhciBrMnEgPSBzZWxmLmdldEVsZW1lbnRLZXlUb1F1ZXVlKCk7XG4gIHZhciBkZXF1ZXVlZCA9IFtdO1xuICB2YXIgbG9va3VwID0gc2VsZi5sb29rdXA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXhEZXFTaXplOyBpKyspIHtcbiAgICBpZiAocS5zaXplKCkgPiAwKSB7XG4gICAgICB2YXIgcmVxID0gcS5wb3AoKTtcbiAgICAgIHZhciBrZXkgPSByZXEua2V5O1xuICAgICAgdmFyIGVsZSA9IHJlcS5lbGVzWzBdOyAvLyBhbGwgZWxlcyBoYXZlIHRoZSBzYW1lIGtleVxuXG4gICAgICB2YXIgY2FjaGVFeGlzdHMgPSBsb29rdXAuaGFzQ2FjaGUoZWxlLCByZXEubGV2ZWwpOyAvLyBjbGVhciBvdXQgdGhlIGtleSB0byByZXEgbG9va3VwXG5cbiAgICAgIGsycVtrZXldID0gbnVsbDsgLy8gZGVxdWV1ZWluZyBpc24ndCBuZWNlc3Nhcnkgd2l0aCBhbiBleGlzdGluZyBjYWNoZVxuXG4gICAgICBpZiAoY2FjaGVFeGlzdHMpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGRlcXVldWVkLnB1c2gocmVxKTtcbiAgICAgIHZhciBiYiA9IHNlbGYuZ2V0Qm91bmRpbmdCb3goZWxlKTtcbiAgICAgIHNlbGYuZ2V0RWxlbWVudChlbGUsIGJiLCBweFJhdGlvLCByZXEubGV2ZWwsIGdldFR4clJlYXNvbnMuZGVxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXF1ZXVlZDtcbn07XG5cbkVUQ3AucmVtb3ZlRnJvbVF1ZXVlID0gZnVuY3Rpb24gKGVsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBxID0gc2VsZi5nZXRFbGVtZW50UXVldWUoKTtcbiAgdmFyIGsycSA9IHNlbGYuZ2V0RWxlbWVudEtleVRvUXVldWUoKTtcbiAgdmFyIGtleSA9IHRoaXMuZ2V0S2V5KGVsZSk7XG4gIHZhciByZXEgPSBrMnFba2V5XTtcblxuICBpZiAocmVxICE9IG51bGwpIHtcbiAgICBpZiAocmVxLmVsZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyByZW1vdmUgaWYgbGFzdCBlbGUgaW4gdGhlIHJlcVxuICAgICAgLy8gYnJpbmcgdG8gZnJvbnQgb2YgcXVldWVcbiAgICAgIHJlcS5yZXFzID0gTUFYX0lOVDtcbiAgICAgIHEudXBkYXRlSXRlbShyZXEpO1xuICAgICAgcS5wb3AoKTsgLy8gcmVtb3ZlIGZyb20gcXVldWVcblxuICAgICAgazJxW2tleV0gPSBudWxsOyAvLyByZW1vdmUgZnJvbSBsb29rdXAgbWFwXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG90aGVyd2lzZSBqdXN0IHJlbW92ZSBlbGUgZnJvbSByZXFcbiAgICAgIHJlcS5lbGVzLnVubWVyZ2UoZWxlKTtcbiAgICB9XG4gIH1cbn07XG5cbkVUQ3Aub25EZXF1ZXVlID0gZnVuY3Rpb24gKGZuKSB7XG4gIHRoaXMub25EZXF1ZXVlcy5wdXNoKGZuKTtcbn07XG5cbkVUQ3Aub2ZmRGVxdWV1ZSA9IGZ1bmN0aW9uIChmbikge1xuICByZW1vdmVGcm9tQXJyYXkodGhpcy5vbkRlcXVldWVzLCBmbik7XG59O1xuXG5FVENwLnNldHVwRGVxdWV1ZWluZyA9IGRlZnMuc2V0dXBEZXF1ZXVlaW5nKHtcbiAgZGVxUmVkcmF3VGhyZXNob2xkOiBkZXFSZWRyYXdUaHJlc2hvbGQsXG4gIGRlcUNvc3Q6IGRlcUNvc3QsXG4gIGRlcUF2Z0Nvc3Q6IGRlcUF2Z0Nvc3QsXG4gIGRlcU5vRHJhd0Nvc3Q6IGRlcU5vRHJhd0Nvc3QsXG4gIGRlcUZhc3RDb3N0OiBkZXFGYXN0Q29zdCxcbiAgZGVxOiBmdW5jdGlvbiBkZXEoc2VsZiwgcHhSYXRpbywgZXh0ZW50KSB7XG4gICAgcmV0dXJuIHNlbGYuZGVxdWV1ZShweFJhdGlvLCBleHRlbnQpO1xuICB9LFxuICBvbkRlcWQ6IGZ1bmN0aW9uIG9uRGVxZChzZWxmLCBkZXFkKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLm9uRGVxdWV1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBmbiA9IHNlbGYub25EZXF1ZXVlc1tpXTtcbiAgICAgIGZuKGRlcWQpO1xuICAgIH1cbiAgfSxcbiAgc2hvdWxkUmVkcmF3OiBmdW5jdGlvbiBzaG91bGRSZWRyYXcoc2VsZiwgZGVxZCwgcHhSYXRpbywgZXh0ZW50KSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXFkLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlcyA9IGRlcWRbaV0uZWxlcztcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlbGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBiYiA9IGVsZXNbal0uYm91bmRpbmdCb3goKTtcblxuICAgICAgICBpZiAoYm91bmRpbmdCb3hlc0ludGVyc2VjdChiYiwgZXh0ZW50KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICBwcmlvcml0eTogZnVuY3Rpb24gcHJpb3JpdHkoc2VsZikge1xuICAgIHJldHVybiBzZWxmLnJlbmRlcmVyLmJlZm9yZVJlbmRlclByaW9yaXRpZXMuZWxlVHhyRGVxO1xuICB9XG59KTtcblxudmFyIGRlZk51bUxheWVycyA9IDE7IC8vIGRlZmF1bHQgbnVtYmVyIG9mIGxheWVycyB0byB1c2VcblxudmFyIG1pbkx2bCQxID0gLTQ7IC8vIHdoZW4gc2NhbGluZyBzbWFsbGVyIHRoYW4gdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHJlLXJlbmRlclxuXG52YXIgbWF4THZsJDEgPSAyOyAvLyB3aGVuIGxhcmdlciB0aGFuIHRoaXMgc2NhbGUganVzdCByZW5kZXIgZGlyZWN0bHkgKGNhY2hpbmcgaXMgbm90IGhlbHBmdWwpXG5cbnZhciBtYXhab29tJDEgPSAzLjk5OyAvLyBiZXlvbmQgdGhpcyB6b29tIGxldmVsLCBsYXllcmVkIHRleHR1cmVzIGFyZSBub3QgdXNlZFxuXG52YXIgZGVxUmVkcmF3VGhyZXNob2xkJDEgPSA1MDsgLy8gdGltZSB0byBiYXRjaCByZWRyYXdzIHRvZ2V0aGVyIGZyb20gZGVxdWV1ZWluZyB0byBhbGxvdyBtb3JlIGRlcXVldWVpbmcgY2FsY3MgdG8gaGFwcGVuIGluIHRoZSBtZWFud2hpbGVcblxudmFyIHJlZmluZUVsZURlYm91bmNlVGltZSA9IDUwOyAvLyB0aW1lIHRvIGRlYm91bmNlIHNoYXJwZXIgZWxlIHRleHR1cmUgdXBkYXRlc1xuXG52YXIgZGVxQ29zdCQxID0gMC4xNTsgLy8gJSBvZiBhZGQnbCByZW5kZXJpbmcgY29zdCBhbGxvd2VkIGZvciBkZXF1ZXVpbmcgZWxlIGNhY2hlcyBlYWNoIGZyYW1lXG5cbnZhciBkZXFBdmdDb3N0JDEgPSAwLjE7IC8vICUgb2YgYWRkJ2wgcmVuZGVyaW5nIGNvc3QgY29tcGFyZWQgdG8gYXZlcmFnZSBvdmVyYWxsIHJlZHJhdyB0aW1lXG5cbnZhciBkZXFOb0RyYXdDb3N0JDEgPSAwLjk7IC8vICUgb2YgYXZnIGZyYW1lIHRpbWUgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVxdWV1ZWluZyB3aGVuIG5vdCBkcmF3aW5nXG5cbnZhciBkZXFGYXN0Q29zdCQxID0gMC45OyAvLyAlIG9mIGZyYW1lIHRpbWUgdG8gYmUgdXNlZCB3aGVuID42MGZwc1xuXG52YXIgbWF4RGVxU2l6ZSQxID0gMTsgLy8gbnVtYmVyIG9mIGVsZXMgdG8gZGVxdWV1ZSBhbmQgcmVuZGVyIGF0IGhpZ2hlciB0ZXh0dXJlIGluIGVhY2ggYmF0Y2hcblxudmFyIGludmFsaWRUaHJlc2hvbGQgPSAyNTA7IC8vIHRpbWUgdGhyZXNob2xkIGZvciBkaXNhYmxpbmcgYi9jIG9mIGludmFsaWRhdGlvbnNcblxudmFyIG1heExheWVyQXJlYSA9IDQwMDAgKiA0MDAwOyAvLyBsYXllcnMgY2FuJ3QgYmUgYmlnZ2VyIHRoYW4gdGhpc1xuXG52YXIgdXNlSGlnaFF1YWxpdHlFbGVUeHJSZXFzID0gdHJ1ZTsgLy8gd2hldGhlciB0byB1c2UgaGlnaCBxdWFsaXR5IGVsZSB0eHIgcmVxdWVzdHMgKGdlbmVyYWxseSBmYXN0ZXIgYW5kIGNoZWFwZXIgaW4gdGhlIGxvbmd0ZXJtKVxuLy8gdmFyIGxvZyA9IGZ1bmN0aW9uKCl7IGNvbnNvbGUubG9nLmFwcGx5KCBjb25zb2xlLCBhcmd1bWVudHMgKTsgfTtcblxudmFyIExheWVyZWRUZXh0dXJlQ2FjaGUgPSBmdW5jdGlvbiBMYXllcmVkVGV4dHVyZUNhY2hlKHJlbmRlcmVyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHIgPSBzZWxmLnJlbmRlcmVyID0gcmVuZGVyZXI7XG4gIHZhciBjeSA9IHIuY3k7XG4gIHNlbGYubGF5ZXJzQnlMZXZlbCA9IHt9OyAvLyBlLmcuIDIgPT4gWyBsYXllcjEsIGxheWVyMiwgLi4uLCBsYXllck4gXVxuXG4gIHNlbGYuZmlyc3RHZXQgPSB0cnVlO1xuICBzZWxmLmxhc3RJbnZhbGlkYXRpb25UaW1lID0gcGVyZm9ybWFuY2VOb3coKSAtIDIgKiBpbnZhbGlkVGhyZXNob2xkO1xuICBzZWxmLnNraXBwaW5nID0gZmFsc2U7XG4gIHNlbGYuZWxlVHhyRGVxcyA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgc2VsZi5zY2hlZHVsZUVsZW1lbnRSZWZpbmVtZW50ID0gdXRpbChmdW5jdGlvbiAoKSB7XG4gICAgc2VsZi5yZWZpbmVFbGVtZW50VGV4dHVyZXMoc2VsZi5lbGVUeHJEZXFzKTtcbiAgICBzZWxmLmVsZVR4ckRlcXMudW5tZXJnZShzZWxmLmVsZVR4ckRlcXMpO1xuICB9LCByZWZpbmVFbGVEZWJvdW5jZVRpbWUpO1xuICByLmJlZm9yZVJlbmRlcihmdW5jdGlvbiAod2lsbERyYXcsIG5vdykge1xuICAgIGlmIChub3cgLSBzZWxmLmxhc3RJbnZhbGlkYXRpb25UaW1lIDw9IGludmFsaWRUaHJlc2hvbGQpIHtcbiAgICAgIHNlbGYuc2tpcHBpbmcgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLnNraXBwaW5nID0gZmFsc2U7XG4gICAgfVxuICB9LCByLmJlZm9yZVJlbmRlclByaW9yaXRpZXMubHlyVHhyU2tpcCk7XG5cbiAgdmFyIHFTb3J0ID0gZnVuY3Rpb24gcVNvcnQoYSwgYikge1xuICAgIHJldHVybiBiLnJlcXMgLSBhLnJlcXM7XG4gIH07XG5cbiAgc2VsZi5sYXllcnNRdWV1ZSA9IG5ldyBIZWFwKHFTb3J0KTtcbiAgc2VsZi5zZXR1cERlcXVldWVpbmcoKTtcbn07XG5cbnZhciBMVENwID0gTGF5ZXJlZFRleHR1cmVDYWNoZS5wcm90b3R5cGU7XG52YXIgbGF5ZXJJZFBvb2wgPSAwO1xudmFyIE1BWF9JTlQkMSA9IE1hdGgucG93KDIsIDUzKSAtIDE7XG5cbkxUQ3AubWFrZUxheWVyID0gZnVuY3Rpb24gKGJiLCBsdmwpIHtcbiAgdmFyIHNjYWxlID0gTWF0aC5wb3coMiwgbHZsKTtcbiAgdmFyIHcgPSBNYXRoLmNlaWwoYmIudyAqIHNjYWxlKTtcbiAgdmFyIGggPSBNYXRoLmNlaWwoYmIuaCAqIHNjYWxlKTtcbiAgdmFyIGNhbnZhcyA9IHRoaXMucmVuZGVyZXIubWFrZU9mZnNjcmVlbkNhbnZhcyh3LCBoKTtcbiAgdmFyIGxheWVyID0ge1xuICAgIGlkOiBsYXllcklkUG9vbCA9ICsrbGF5ZXJJZFBvb2wgJSBNQVhfSU5UJDEsXG4gICAgYmI6IGJiLFxuICAgIGxldmVsOiBsdmwsXG4gICAgd2lkdGg6IHcsXG4gICAgaGVpZ2h0OiBoLFxuICAgIGNhbnZhczogY2FudmFzLFxuICAgIGNvbnRleHQ6IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLFxuICAgIGVsZXM6IFtdLFxuICAgIGVsZXNRdWV1ZTogW10sXG4gICAgcmVxczogMFxuICB9OyAvLyBsb2coJ21ha2UgbGF5ZXIgJXMgd2l0aCB3ICVzIGFuZCBoICVzIGFuZCBsdmwgJXMnLCBsYXllci5pZCwgbGF5ZXIud2lkdGgsIGxheWVyLmhlaWdodCwgbGF5ZXIubGV2ZWwpO1xuXG4gIHZhciBjeHQgPSBsYXllci5jb250ZXh0O1xuICB2YXIgZHggPSAtbGF5ZXIuYmIueDE7XG4gIHZhciBkeSA9IC1sYXllci5iYi55MTsgLy8gZG8gdGhlIHRyYW5zZm9ybSBvbiBjcmVhdGlvbiB0byBzYXZlIGN5Y2xlcyAoaXQncyB0aGUgc2FtZSBmb3IgYWxsIGVsZXMpXG5cbiAgY3h0LnNjYWxlKHNjYWxlLCBzY2FsZSk7XG4gIGN4dC50cmFuc2xhdGUoZHgsIGR5KTtcbiAgcmV0dXJuIGxheWVyO1xufTtcblxuTFRDcC5nZXRMYXllcnMgPSBmdW5jdGlvbiAoZWxlcywgcHhSYXRpbywgbHZsKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHIgPSBzZWxmLnJlbmRlcmVyO1xuICB2YXIgY3kgPSByLmN5O1xuICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgdmFyIGZpcnN0R2V0ID0gc2VsZi5maXJzdEdldDtcbiAgc2VsZi5maXJzdEdldCA9IGZhbHNlOyAvLyBsb2coJy0tXFxuZ2V0IGxheWVycyB3aXRoICVzIGVsZXMnLCBlbGVzLmxlbmd0aCk7XG4gIC8vbG9nIGVsZXMubWFwKGZ1bmN0aW9uKGVsZSl7IHJldHVybiBlbGUuaWQoKSB9KSApO1xuXG4gIGlmIChsdmwgPT0gbnVsbCkge1xuICAgIGx2bCA9IE1hdGguY2VpbChsb2cyKHpvb20gKiBweFJhdGlvKSk7XG5cbiAgICBpZiAobHZsIDwgbWluTHZsJDEpIHtcbiAgICAgIGx2bCA9IG1pbkx2bCQxO1xuICAgIH0gZWxzZSBpZiAoem9vbSA+PSBtYXhab29tJDEgfHwgbHZsID4gbWF4THZsJDEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNlbGYudmFsaWRhdGVMYXllcnNFbGVzT3JkZXJpbmcobHZsLCBlbGVzKTtcbiAgdmFyIGxheWVyc0J5THZsID0gc2VsZi5sYXllcnNCeUxldmVsO1xuICB2YXIgc2NhbGUgPSBNYXRoLnBvdygyLCBsdmwpO1xuICB2YXIgbGF5ZXJzID0gbGF5ZXJzQnlMdmxbbHZsXSA9IGxheWVyc0J5THZsW2x2bF0gfHwgW107XG4gIHZhciBiYjtcbiAgdmFyIGx2bENvbXBsZXRlID0gc2VsZi5sZXZlbElzQ29tcGxldGUobHZsLCBlbGVzKTtcbiAgdmFyIHRtcExheWVycztcblxuICB2YXIgY2hlY2tUZW1wTGV2ZWxzID0gZnVuY3Rpb24gY2hlY2tUZW1wTGV2ZWxzKCkge1xuICAgIHZhciBjYW5Vc2VBc1RtcEx2bCA9IGZ1bmN0aW9uIGNhblVzZUFzVG1wTHZsKGwpIHtcbiAgICAgIHNlbGYudmFsaWRhdGVMYXllcnNFbGVzT3JkZXJpbmcobCwgZWxlcyk7XG5cbiAgICAgIGlmIChzZWxmLmxldmVsSXNDb21wbGV0ZShsLCBlbGVzKSkge1xuICAgICAgICB0bXBMYXllcnMgPSBsYXllcnNCeUx2bFtsXTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBjaGVja0x2bHMgPSBmdW5jdGlvbiBjaGVja0x2bHMoZGlyKSB7XG4gICAgICBpZiAodG1wTGF5ZXJzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgbCA9IGx2bCArIGRpcjsgbWluTHZsJDEgPD0gbCAmJiBsIDw9IG1heEx2bCQxOyBsICs9IGRpcikge1xuICAgICAgICBpZiAoY2FuVXNlQXNUbXBMdmwobCkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBjaGVja0x2bHMoKzEpO1xuICAgIGNoZWNrTHZscygtMSk7IC8vIHJlbW92ZSB0aGUgaW52YWxpZCBsYXllcnM7IHRoZXkgd2lsbCBiZSByZXBsYWNlZCBhcyBuZWVkZWQgbGF0ZXIgaW4gdGhpcyBmdW5jdGlvblxuXG4gICAgZm9yICh2YXIgaSA9IGxheWVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGxheWVyID0gbGF5ZXJzW2ldO1xuXG4gICAgICBpZiAobGF5ZXIuaW52YWxpZCkge1xuICAgICAgICByZW1vdmVGcm9tQXJyYXkobGF5ZXJzLCBsYXllcik7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGlmICghbHZsQ29tcGxldGUpIHtcbiAgICAvLyBpZiB0aGUgY3VycmVudCBsZXZlbCBpcyBpbmNvbXBsZXRlLCB0aGVuIHVzZSB0aGUgY2xvc2VzdCwgYmVzdCBxdWFsaXR5IGxheWVyc2V0IHRlbXBvcmFyaWx5XG4gICAgLy8gYW5kIGxhdGVyIHF1ZXVlIHRoZSBjdXJyZW50IGxheWVyc2V0IHNvIHdlIGNhbiBnZXQgdGhlIHByb3BlciBxdWFsaXR5IGxldmVsIHNvb25cbiAgICBjaGVja1RlbXBMZXZlbHMoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBsb2coJ2xldmVsIGNvbXBsZXRlLCB1c2luZyBleGlzdGluZyBsYXllcnNcXG4tLScpO1xuICAgIHJldHVybiBsYXllcnM7XG4gIH1cblxuICB2YXIgZ2V0QmIgPSBmdW5jdGlvbiBnZXRCYigpIHtcbiAgICBpZiAoIWJiKSB7XG4gICAgICBiYiA9IG1ha2VCb3VuZGluZ0JveCgpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdXBkYXRlQm91bmRpbmdCb3goYmIsIGVsZXNbaV0uYm91bmRpbmdCb3goKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJiO1xuICB9O1xuXG4gIHZhciBtYWtlTGF5ZXIgPSBmdW5jdGlvbiBtYWtlTGF5ZXIob3B0cykge1xuICAgIG9wdHMgPSBvcHRzIHx8IHt9O1xuICAgIHZhciBhZnRlciA9IG9wdHMuYWZ0ZXI7XG4gICAgZ2V0QmIoKTtcbiAgICB2YXIgYXJlYSA9IGJiLncgKiBzY2FsZSAqIChiYi5oICogc2NhbGUpO1xuXG4gICAgaWYgKGFyZWEgPiBtYXhMYXllckFyZWEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBsYXllciA9IHNlbGYubWFrZUxheWVyKGJiLCBsdmwpO1xuXG4gICAgaWYgKGFmdGVyICE9IG51bGwpIHtcbiAgICAgIHZhciBpbmRleCA9IGxheWVycy5pbmRleE9mKGFmdGVyKSArIDE7XG4gICAgICBsYXllcnMuc3BsaWNlKGluZGV4LCAwLCBsYXllcik7XG4gICAgfSBlbHNlIGlmIChvcHRzLmluc2VydCA9PT0gdW5kZWZpbmVkIHx8IG9wdHMuaW5zZXJ0KSB7XG4gICAgICAvLyBubyBhZnRlciBzcGVjaWZpZWQgPT4gZmlyc3QgbGF5ZXIgbWFkZSBzbyBwdXQgYXQgc3RhcnRcbiAgICAgIGxheWVycy51bnNoaWZ0KGxheWVyKTtcbiAgICB9IC8vIGlmKCB0bXBMYXllcnMgKXtcbiAgICAvL3NlbGYucXVldWVMYXllciggbGF5ZXIgKTtcbiAgICAvLyB9XG5cblxuICAgIHJldHVybiBsYXllcjtcbiAgfTtcblxuICBpZiAoc2VsZi5za2lwcGluZyAmJiAhZmlyc3RHZXQpIHtcbiAgICAvLyBsb2coJ3NraXAgbGF5ZXJzJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gbG9nKCdkbyBsYXllcnMnKTtcblxuXG4gIHZhciBsYXllciA9IG51bGw7XG4gIHZhciBtYXhFbGVzUGVyTGF5ZXIgPSBlbGVzLmxlbmd0aCAvIGRlZk51bUxheWVycztcbiAgdmFyIGFsbG93TGF6eVF1ZXVlaW5nID0gICFmaXJzdEdldDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICB2YXIgcnMgPSBlbGUuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgdmFyIGNhY2hlcyA9IHJzLmltZ0xheWVyQ2FjaGVzID0gcnMuaW1nTGF5ZXJDYWNoZXMgfHwge307IC8vIGxvZygnbG9vayBhdCBlbGUnLCBlbGUuaWQoKSk7XG5cbiAgICB2YXIgZXhpc3RpbmdMYXllciA9IGNhY2hlc1tsdmxdO1xuXG4gICAgaWYgKGV4aXN0aW5nTGF5ZXIpIHtcbiAgICAgIC8vIHJldXNlIGxheWVyIGZvciBsYXRlciBlbGVzXG4gICAgICAvLyBsb2coJ3JldXNlIGxheWVyIGZvcicsIGVsZS5pZCgpKTtcbiAgICAgIGxheWVyID0gZXhpc3RpbmdMYXllcjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghbGF5ZXIgfHwgbGF5ZXIuZWxlcy5sZW5ndGggPj0gbWF4RWxlc1BlckxheWVyIHx8ICFib3VuZGluZ0JveEluQm91bmRpbmdCb3gobGF5ZXIuYmIsIGVsZS5ib3VuZGluZ0JveCgpKSkge1xuICAgICAgLy8gbG9nKCdtYWtlIG5ldyBsYXllciBmb3IgZWxlICVzJywgZWxlLmlkKCkpO1xuICAgICAgbGF5ZXIgPSBtYWtlTGF5ZXIoe1xuICAgICAgICBpbnNlcnQ6IHRydWUsXG4gICAgICAgIGFmdGVyOiBsYXllclxuICAgICAgfSk7IC8vIGlmIG5vdyBsYXllciBjYW4gYmUgYnVpbHQgdGhlbiB3ZSBjYW4ndCB1c2UgbGF5ZXJzIGF0IHRoaXMgbGV2ZWxcblxuICAgICAgaWYgKCFsYXllcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gLy8gbG9nKCduZXcgbGF5ZXIgd2l0aCBpZCAlcycsIGxheWVyLmlkKTtcblxuICAgIH1cblxuICAgIGlmICh0bXBMYXllcnMgfHwgYWxsb3dMYXp5UXVldWVpbmcpIHtcbiAgICAgIC8vIGxvZygncXVldWUgZWxlICVzIGluIGxheWVyICVzJywgZWxlLmlkKCksIGxheWVyLmlkKTtcbiAgICAgIHNlbGYucXVldWVMYXllcihsYXllciwgZWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbG9nKCdkcmF3IGVsZSAlcyBpbiBsYXllciAlcycsIGVsZS5pZCgpLCBsYXllci5pZCk7XG4gICAgICBzZWxmLmRyYXdFbGVJbkxheWVyKGxheWVyLCBlbGUsIGx2bCwgcHhSYXRpbyk7XG4gICAgfVxuXG4gICAgbGF5ZXIuZWxlcy5wdXNoKGVsZSk7XG4gICAgY2FjaGVzW2x2bF0gPSBsYXllcjtcbiAgfSAvLyBsb2coJy0tJyk7XG5cblxuICBpZiAodG1wTGF5ZXJzKSB7XG4gICAgLy8gdGhlbiB3ZSBvbmx5IHF1ZXVlZCB0aGUgY3VycmVudCBsYXllcnNldCBhbmQgY2FuJ3QgZHJhdyBpdCB5ZXRcbiAgICByZXR1cm4gdG1wTGF5ZXJzO1xuICB9XG5cbiAgaWYgKGFsbG93TGF6eVF1ZXVlaW5nKSB7XG4gICAgLy8gbG9nKCdsYXp5IHF1ZXVlIGxldmVsJywgbHZsKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBsYXllcnM7XG59OyAvLyBhIGxheWVyIG1heSB3YW50IHRvIHVzZSBhbiBlbGUgY2FjaGUgb2YgYSBoaWdoZXIgbGV2ZWwgdG8gYXZvaWQgYmx1cnJpbmVzc1xuLy8gc28gdGhlIGxheWVyIGxldmVsIG1pZ2h0IG5vdCBlcXVhbCB0aGUgZWxlIGxldmVsXG5cblxuTFRDcC5nZXRFbGVMZXZlbEZvckxheWVyTGV2ZWwgPSBmdW5jdGlvbiAobHZsLCBweFJhdGlvKSB7XG4gIHJldHVybiBsdmw7XG59O1xuXG5MVENwLmRyYXdFbGVJbkxheWVyID0gZnVuY3Rpb24gKGxheWVyLCBlbGUsIGx2bCwgcHhSYXRpbykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciByID0gdGhpcy5yZW5kZXJlcjtcbiAgdmFyIGNvbnRleHQgPSBsYXllci5jb250ZXh0O1xuICB2YXIgYmIgPSBlbGUuYm91bmRpbmdCb3goKTtcblxuICBpZiAoYmIudyA9PT0gMCB8fCBiYi5oID09PSAwIHx8ICFlbGUudmlzaWJsZSgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbHZsID0gc2VsZi5nZXRFbGVMZXZlbEZvckxheWVyTGV2ZWwobHZsLCBweFJhdGlvKTtcblxuICB7XG4gICAgci5zZXRJbWdTbW9vdGhpbmcoY29udGV4dCwgZmFsc2UpO1xuICB9XG5cbiAge1xuICAgIHIuZHJhd0NhY2hlZEVsZW1lbnQoY29udGV4dCwgZWxlLCBudWxsLCBudWxsLCBsdmwsIHVzZUhpZ2hRdWFsaXR5RWxlVHhyUmVxcyk7XG4gIH1cblxuICB7XG4gICAgci5zZXRJbWdTbW9vdGhpbmcoY29udGV4dCwgdHJ1ZSk7XG4gIH1cbn07XG5cbkxUQ3AubGV2ZWxJc0NvbXBsZXRlID0gZnVuY3Rpb24gKGx2bCwgZWxlcykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBsYXllcnMgPSBzZWxmLmxheWVyc0J5TGV2ZWxbbHZsXTtcblxuICBpZiAoIWxheWVycyB8fCBsYXllcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIG51bUVsZXNJbkxheWVycyA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXllcnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbGF5ZXIgPSBsYXllcnNbaV07IC8vIGlmIHRoZXJlIGFyZSBhbnkgZWxlcyBuZWVkZWQgdG8gYmUgZHJhd24geWV0LCB0aGUgbGV2ZWwgaXMgbm90IGNvbXBsZXRlXG5cbiAgICBpZiAobGF5ZXIucmVxcyA+IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGlmIHRoZSBsYXllciBpcyBpbnZhbGlkLCB0aGUgbGV2ZWwgaXMgbm90IGNvbXBsZXRlXG5cblxuICAgIGlmIChsYXllci5pbnZhbGlkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbnVtRWxlc0luTGF5ZXJzICs9IGxheWVyLmVsZXMubGVuZ3RoO1xuICB9IC8vIHdlIHNob3VsZCBoYXZlIGV4YWN0bHkgdGhlIG51bWJlciBvZiBlbGVzIHBhc3NlZCBpbiB0byBiZSBjb21wbGV0ZVxuXG5cbiAgaWYgKG51bUVsZXNJbkxheWVycyAhPT0gZWxlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkxUQ3AudmFsaWRhdGVMYXllcnNFbGVzT3JkZXJpbmcgPSBmdW5jdGlvbiAobHZsLCBlbGVzKSB7XG4gIHZhciBsYXllcnMgPSB0aGlzLmxheWVyc0J5TGV2ZWxbbHZsXTtcblxuICBpZiAoIWxheWVycykge1xuICAgIHJldHVybjtcbiAgfSAvLyBpZiBpbiBhIGxheWVyIHRoZSBlbGVzIGFyZSBub3QgaW4gdGhlIHNhbWUgb3JkZXIsIHRoZW4gdGhlIGxheWVyIGlzIGludmFsaWRcbiAgLy8gKGkuZS4gdGhlcmUgaXMgYW4gZWxlIGluIGJldHdlZW4gdGhlIGVsZXMgaW4gdGhlIGxheWVyKVxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXllcnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbGF5ZXIgPSBsYXllcnNbaV07XG4gICAgdmFyIG9mZnNldCA9IC0xOyAvLyBmaW5kIHRoZSBvZmZzZXRcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlcy5sZW5ndGg7IGorKykge1xuICAgICAgaWYgKGxheWVyLmVsZXNbMF0gPT09IGVsZXNbal0pIHtcbiAgICAgICAgb2Zmc2V0ID0gajtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9mZnNldCA8IDApIHtcbiAgICAgIC8vIHRoZW4gdGhlIGxheWVyIGhhcyBub25leGlzdGFudCBlbGVtZW50cyBhbmQgaXMgaW52YWxpZFxuICAgICAgdGhpcy5pbnZhbGlkYXRlTGF5ZXIobGF5ZXIpO1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyB0aGUgZWxlcyBpbiB0aGUgbGF5ZXIgbXVzdCBiZSBpbiB0aGUgc2FtZSBjb250aW51b3VzIG9yZGVyLCBlbHNlIHRoZSBsYXllciBpcyBpbnZhbGlkXG5cblxuICAgIHZhciBvID0gb2Zmc2V0O1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsYXllci5lbGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAobGF5ZXIuZWxlc1tqXSAhPT0gZWxlc1tvICsgal0pIHtcbiAgICAgICAgLy8gbG9nKCdpbnZhbGlkYXRlIGJhc2VkIG9uIG9yZGVyaW5nJywgbGF5ZXIuaWQpO1xuICAgICAgICB0aGlzLmludmFsaWRhdGVMYXllcihsYXllcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuTFRDcC51cGRhdGVFbGVtZW50c0luTGF5ZXJzID0gZnVuY3Rpb24gKGVsZXMsIHVwZGF0ZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBpc0VsZXMgPSBlbGVtZW50KGVsZXNbMF0pOyAvLyBjb2xsZWN0IHVkcGF0ZWQgZWxlbWVudHMgKGNhc2NhZGVkIGZyb20gdGhlIGxheWVycykgYW5kIHVwZGF0ZSBlYWNoXG4gIC8vIGxheWVyIGl0c2VsZiBhbG9uZyB0aGUgd2F5XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHJlcSA9IGlzRWxlcyA/IG51bGwgOiBlbGVzW2ldO1xuICAgIHZhciBlbGUgPSBpc0VsZXMgPyBlbGVzW2ldIDogZWxlc1tpXS5lbGU7XG4gICAgdmFyIHJzID0gZWxlLl9wcml2YXRlLnJzY3JhdGNoO1xuICAgIHZhciBjYWNoZXMgPSBycy5pbWdMYXllckNhY2hlcyA9IHJzLmltZ0xheWVyQ2FjaGVzIHx8IHt9O1xuXG4gICAgZm9yICh2YXIgbCA9IG1pbkx2bCQxOyBsIDw9IG1heEx2bCQxOyBsKyspIHtcbiAgICAgIHZhciBsYXllciA9IGNhY2hlc1tsXTtcblxuICAgICAgaWYgKCFsYXllcikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gaWYgdXBkYXRlIGlzIGEgcmVxdWVzdCBmcm9tIHRoZSBlbGUgY2FjaGUsIHRoZW4gaXQgYWZmZWN0cyBvbmx5XG4gICAgICAvLyB0aGUgbWF0Y2hpbmcgbGV2ZWxcblxuXG4gICAgICBpZiAocmVxICYmIHNlbGYuZ2V0RWxlTGV2ZWxGb3JMYXllckxldmVsKGxheWVyLmxldmVsKSAhPT0gcmVxLmxldmVsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGUobGF5ZXIsIGVsZSwgcmVxKTtcbiAgICB9XG4gIH1cbn07XG5cbkxUQ3AuaGF2ZUxheWVycyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgaGF2ZUxheWVycyA9IGZhbHNlO1xuXG4gIGZvciAodmFyIGwgPSBtaW5MdmwkMTsgbCA8PSBtYXhMdmwkMTsgbCsrKSB7XG4gICAgdmFyIGxheWVycyA9IHNlbGYubGF5ZXJzQnlMZXZlbFtsXTtcblxuICAgIGlmIChsYXllcnMgJiYgbGF5ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGhhdmVMYXllcnMgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhdmVMYXllcnM7XG59O1xuXG5MVENwLmludmFsaWRhdGVFbGVtZW50cyA9IGZ1bmN0aW9uIChlbGVzKSB7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICBpZiAoZWxlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzZWxmLmxhc3RJbnZhbGlkYXRpb25UaW1lID0gcGVyZm9ybWFuY2VOb3coKTsgLy8gbG9nKCd1cGRhdGUgaW52YWxpZGF0ZSBsYXllciB0aW1lIGZyb20gZWxlcycpO1xuXG4gIGlmIChlbGVzLmxlbmd0aCA9PT0gMCB8fCAhc2VsZi5oYXZlTGF5ZXJzKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzZWxmLnVwZGF0ZUVsZW1lbnRzSW5MYXllcnMoZWxlcywgZnVuY3Rpb24gaW52YWxBc3NvY0xheWVycyhsYXllciwgZWxlLCByZXEpIHtcbiAgICBzZWxmLmludmFsaWRhdGVMYXllcihsYXllcik7XG4gIH0pO1xufTtcblxuTFRDcC5pbnZhbGlkYXRlTGF5ZXIgPSBmdW5jdGlvbiAobGF5ZXIpIHtcbiAgLy8gbG9nKCd1cGRhdGUgaW52YWxpZGF0ZSBsYXllciB0aW1lJyk7XG4gIHRoaXMubGFzdEludmFsaWRhdGlvblRpbWUgPSBwZXJmb3JtYW5jZU5vdygpO1xuXG4gIGlmIChsYXllci5pbnZhbGlkKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIHNhdmUgY3ljbGVzXG5cblxuICB2YXIgbHZsID0gbGF5ZXIubGV2ZWw7XG4gIHZhciBlbGVzID0gbGF5ZXIuZWxlcztcbiAgdmFyIGxheWVycyA9IHRoaXMubGF5ZXJzQnlMZXZlbFtsdmxdOyAvLyBsb2coJ2ludmFsaWRhdGUgbGF5ZXInLCBsYXllci5pZCApO1xuXG4gIHJlbW92ZUZyb21BcnJheShsYXllcnMsIGxheWVyKTsgLy8gbGF5ZXIuZWxlcyA9IFtdO1xuXG4gIGxheWVyLmVsZXNRdWV1ZSA9IFtdO1xuICBsYXllci5pbnZhbGlkID0gdHJ1ZTtcblxuICBpZiAobGF5ZXIucmVwbGFjZW1lbnQpIHtcbiAgICBsYXllci5yZXBsYWNlbWVudC5pbnZhbGlkID0gdHJ1ZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjYWNoZXMgPSBlbGVzW2ldLl9wcml2YXRlLnJzY3JhdGNoLmltZ0xheWVyQ2FjaGVzO1xuXG4gICAgaWYgKGNhY2hlcykge1xuICAgICAgY2FjaGVzW2x2bF0gPSBudWxsO1xuICAgIH1cbiAgfVxufTtcblxuTFRDcC5yZWZpbmVFbGVtZW50VGV4dHVyZXMgPSBmdW5jdGlvbiAoZWxlcykge1xuICB2YXIgc2VsZiA9IHRoaXM7IC8vIGxvZygncmVmaW5lJywgZWxlcy5sZW5ndGgpO1xuXG4gIHNlbGYudXBkYXRlRWxlbWVudHNJbkxheWVycyhlbGVzLCBmdW5jdGlvbiByZWZpbmVFYWNoRWxlKGxheWVyLCBlbGUsIHJlcSkge1xuICAgIHZhciByTHlyID0gbGF5ZXIucmVwbGFjZW1lbnQ7XG5cbiAgICBpZiAoIXJMeXIpIHtcbiAgICAgIHJMeXIgPSBsYXllci5yZXBsYWNlbWVudCA9IHNlbGYubWFrZUxheWVyKGxheWVyLmJiLCBsYXllci5sZXZlbCk7XG4gICAgICByTHlyLnJlcGxhY2VzID0gbGF5ZXI7XG4gICAgICByTHlyLmVsZXMgPSBsYXllci5lbGVzOyAvLyBsb2coJ21ha2UgcmVwbGFjZW1lbnQgbGF5ZXIgJXMgZm9yICVzIHdpdGggbGV2ZWwgJXMnLCByTHlyLmlkLCBsYXllci5pZCwgckx5ci5sZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKCFyTHlyLnJlcXMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgckx5ci5lbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHNlbGYucXVldWVMYXllcihyTHlyLCByTHlyLmVsZXNbaV0pO1xuICAgICAgfSAvLyBsb2coJ3F1ZXVlIHJlcGxhY2VtZW50IGxheWVyIHJlZmluZW1lbnQnLCByTHlyLmlkKTtcblxuICAgIH1cbiAgfSk7XG59O1xuXG5MVENwLmVucXVldWVFbGVtZW50UmVmaW5lbWVudCA9IGZ1bmN0aW9uIChlbGUpIHtcblxuICB0aGlzLmVsZVR4ckRlcXMubWVyZ2UoZWxlKTtcbiAgdGhpcy5zY2hlZHVsZUVsZW1lbnRSZWZpbmVtZW50KCk7XG59O1xuXG5MVENwLnF1ZXVlTGF5ZXIgPSBmdW5jdGlvbiAobGF5ZXIsIGVsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBxID0gc2VsZi5sYXllcnNRdWV1ZTtcbiAgdmFyIGVsZXNRID0gbGF5ZXIuZWxlc1F1ZXVlO1xuICB2YXIgaGFzSWQgPSBlbGVzUS5oYXNJZCA9IGVsZXNRLmhhc0lkIHx8IHt9OyAvLyBpZiBhIGxheWVyIGlzIGdvaW5nIHRvIGJlIHJlcGxhY2VkLCBxdWV1aW5nIGlzIGEgd2FzdGUgb2YgdGltZVxuXG4gIGlmIChsYXllci5yZXBsYWNlbWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChlbGUpIHtcbiAgICBpZiAoaGFzSWRbZWxlLmlkKCldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlc1EucHVzaChlbGUpO1xuICAgIGhhc0lkW2VsZS5pZCgpXSA9IHRydWU7XG4gIH1cblxuICBpZiAobGF5ZXIucmVxcykge1xuICAgIGxheWVyLnJlcXMrKztcbiAgICBxLnVwZGF0ZUl0ZW0obGF5ZXIpO1xuICB9IGVsc2Uge1xuICAgIGxheWVyLnJlcXMgPSAxO1xuICAgIHEucHVzaChsYXllcik7XG4gIH1cbn07XG5cbkxUQ3AuZGVxdWV1ZSA9IGZ1bmN0aW9uIChweFJhdGlvKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHEgPSBzZWxmLmxheWVyc1F1ZXVlO1xuICB2YXIgZGVxZCA9IFtdO1xuICB2YXIgZWxlRGVxcyA9IDA7XG5cbiAgd2hpbGUgKGVsZURlcXMgPCBtYXhEZXFTaXplJDEpIHtcbiAgICBpZiAocS5zaXplKCkgPT09IDApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBsYXllciA9IHEucGVlaygpOyAvLyBpZiBhIGxheWVyIGhhcyBiZWVuIG9yIHdpbGwgYmUgcmVwbGFjZWQsIHRoZW4gZG9uJ3Qgd2FzdGUgdGltZSB3aXRoIGl0XG5cbiAgICBpZiAobGF5ZXIucmVwbGFjZW1lbnQpIHtcbiAgICAgIC8vIGxvZygnbGF5ZXIgJXMgaW4gcXVldWUgc2tpcHBlZCBiL2MgaXQgYWxyZWFkeSBoYXMgYSByZXBsYWNlbWVudCcsIGxheWVyLmlkKTtcbiAgICAgIHEucG9wKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIGlmIHRoaXMgaXMgYSByZXBsYWNlbWVudCBsYXllciB0aGF0IGhhcyBiZWVuIHN1cGVyY2VkZWQsIHRoZW4gZm9yZ2V0IGl0XG5cblxuICAgIGlmIChsYXllci5yZXBsYWNlcyAmJiBsYXllciAhPT0gbGF5ZXIucmVwbGFjZXMucmVwbGFjZW1lbnQpIHtcbiAgICAgIC8vIGxvZygnbGF5ZXIgaXMgbm8gbG9uZ2VyIHRoZSBtb3N0IHVwdG9kYXRlIHJlcGxhY2VtZW50OyBkZXF1ZXVlZCcsIGxheWVyLmlkKVxuICAgICAgcS5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChsYXllci5pbnZhbGlkKSB7XG4gICAgICAvLyBsb2coJ3JlcGxhY2VtZW50IGxheWVyICVzIGlzIGludmFsaWQ7IGRlcXVldWVkJywgbGF5ZXIuaWQpO1xuICAgICAgcS5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBlbGUgPSBsYXllci5lbGVzUXVldWUuc2hpZnQoKTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIC8vIGxvZygnZGVxdWV1ZSBsYXllciAlcycsIGxheWVyLmlkKTtcbiAgICAgIHNlbGYuZHJhd0VsZUluTGF5ZXIobGF5ZXIsIGVsZSwgbGF5ZXIubGV2ZWwsIHB4UmF0aW8pO1xuICAgICAgZWxlRGVxcysrO1xuICAgIH1cblxuICAgIGlmIChkZXFkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gd2UgbmVlZCBvbmx5IG9uZSBlbnRyeSBpbiBkZXFkIHRvIHF1ZXVlIHJlZHJhd2luZyBldGNcbiAgICAgIGRlcWQucHVzaCh0cnVlKTtcbiAgICB9IC8vIGlmIHRoZSBsYXllciBoYXMgYWxsIGl0cyBlbGVzIGRvbmUsIHRoZW4gcmVtb3ZlIGZyb20gdGhlIHF1ZXVlXG5cblxuICAgIGlmIChsYXllci5lbGVzUXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICBxLnBvcCgpO1xuICAgICAgbGF5ZXIucmVxcyA9IDA7IC8vIGxvZygnZGVxdWV1ZSBvZiBsYXllciAlcyBjb21wbGV0ZScsIGxheWVyLmlkKTtcbiAgICAgIC8vIHdoZW4gYSByZXBsYWNlbWVudCBsYXllciBpcyBkZXF1ZXVlZCwgaXQgcmVwbGFjZXMgdGhlIG9sZCBsYXllciBpbiB0aGUgbGV2ZWxcblxuICAgICAgaWYgKGxheWVyLnJlcGxhY2VzKSB7XG4gICAgICAgIHNlbGYuYXBwbHlMYXllclJlcGxhY2VtZW50KGxheWVyKTtcbiAgICAgIH1cblxuICAgICAgc2VsZi5yZXF1ZXN0UmVkcmF3KCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlcWQ7XG59O1xuXG5MVENwLmFwcGx5TGF5ZXJSZXBsYWNlbWVudCA9IGZ1bmN0aW9uIChsYXllcikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBsYXllcnNJbkxldmVsID0gc2VsZi5sYXllcnNCeUxldmVsW2xheWVyLmxldmVsXTtcbiAgdmFyIHJlcGxhY2VkID0gbGF5ZXIucmVwbGFjZXM7XG4gIHZhciBpbmRleCA9IGxheWVyc0luTGV2ZWwuaW5kZXhPZihyZXBsYWNlZCk7IC8vIGlmIHRoZSByZXBsYWNlZCBsYXllciBpcyBub3QgaW4gdGhlIGFjdGl2ZSBsaXN0IGZvciB0aGUgbGV2ZWwsIHRoZW4gcmVwbGFjaW5nXG4gIC8vIHJlZnMgd291bGQgYmUgYSBtaXN0YWtlIChpLmUuIG92ZXJ3cml0aW5nIHRoZSB0cnVlIGFjdGl2ZSBsYXllcilcblxuICBpZiAoaW5kZXggPCAwIHx8IHJlcGxhY2VkLmludmFsaWQpIHtcbiAgICAvLyBsb2coJ3JlcGxhY2VtZW50IGxheWVyIHdvdWxkIGhhdmUgbm8gZWZmZWN0JywgbGF5ZXIuaWQpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxheWVyc0luTGV2ZWxbaW5kZXhdID0gbGF5ZXI7IC8vIHJlcGxhY2UgbGV2ZWwgcmVmXG4gIC8vIHJlcGxhY2UgcmVmcyBpbiBlbGVzXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXllci5lbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIF9wID0gbGF5ZXIuZWxlc1tpXS5fcHJpdmF0ZTtcbiAgICB2YXIgY2FjaGUgPSBfcC5pbWdMYXllckNhY2hlcyA9IF9wLmltZ0xheWVyQ2FjaGVzIHx8IHt9O1xuXG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICBjYWNoZVtsYXllci5sZXZlbF0gPSBsYXllcjtcbiAgICB9XG4gIH0gLy8gbG9nKCdhcHBseSByZXBsYWNlbWVudCBsYXllciAlcyBvdmVyICVzJywgbGF5ZXIuaWQsIHJlcGxhY2VkLmlkKTtcblxuXG4gIHNlbGYucmVxdWVzdFJlZHJhdygpO1xufTtcblxuTFRDcC5yZXF1ZXN0UmVkcmF3ID0gdXRpbChmdW5jdGlvbiAoKSB7XG4gIHZhciByID0gdGhpcy5yZW5kZXJlcjtcbiAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICByLnJlZHJhdygpO1xufSwgMTAwKTtcbkxUQ3Auc2V0dXBEZXF1ZXVlaW5nID0gZGVmcy5zZXR1cERlcXVldWVpbmcoe1xuICBkZXFSZWRyYXdUaHJlc2hvbGQ6IGRlcVJlZHJhd1RocmVzaG9sZCQxLFxuICBkZXFDb3N0OiBkZXFDb3N0JDEsXG4gIGRlcUF2Z0Nvc3Q6IGRlcUF2Z0Nvc3QkMSxcbiAgZGVxTm9EcmF3Q29zdDogZGVxTm9EcmF3Q29zdCQxLFxuICBkZXFGYXN0Q29zdDogZGVxRmFzdENvc3QkMSxcbiAgZGVxOiBmdW5jdGlvbiBkZXEoc2VsZiwgcHhSYXRpbykge1xuICAgIHJldHVybiBzZWxmLmRlcXVldWUocHhSYXRpbyk7XG4gIH0sXG4gIG9uRGVxZDogbm9vcCxcbiAgc2hvdWxkUmVkcmF3OiB0cnVlaWZ5LFxuICBwcmlvcml0eTogZnVuY3Rpb24gcHJpb3JpdHkoc2VsZikge1xuICAgIHJldHVybiBzZWxmLnJlbmRlcmVyLmJlZm9yZVJlbmRlclByaW9yaXRpZXMubHlyVHhyRGVxO1xuICB9XG59KTtcblxudmFyIENScCA9IHt9O1xudmFyIGltcGw7XG5cbmZ1bmN0aW9uIHBvbHlnb24oY29udGV4dCwgcG9pbnRzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHB0ID0gcG9pbnRzW2ldO1xuICAgIGNvbnRleHQubGluZVRvKHB0LngsIHB0LnkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRyaWFuZ2xlQmFja2N1cnZlKGNvbnRleHQsIHBvaW50cywgY29udHJvbFBvaW50KSB7XG4gIHZhciBmaXJzdFB0O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHB0ID0gcG9pbnRzW2ldO1xuXG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGZpcnN0UHQgPSBwdDtcbiAgICB9XG5cbiAgICBjb250ZXh0LmxpbmVUbyhwdC54LCBwdC55KTtcbiAgfVxuXG4gIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyhjb250cm9sUG9pbnQueCwgY29udHJvbFBvaW50LnksIGZpcnN0UHQueCwgZmlyc3RQdC55KTtcbn1cblxuZnVuY3Rpb24gdHJpYW5nbGVUZWUoY29udGV4dCwgdHJpYW5nbGVQb2ludHMsIHRlZVBvaW50cykge1xuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9XG5cbiAgdmFyIHRyaVB0cyA9IHRyaWFuZ2xlUG9pbnRzO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdHJpUHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHB0ID0gdHJpUHRzW2ldO1xuICAgIGNvbnRleHQubGluZVRvKHB0LngsIHB0LnkpO1xuICB9XG5cbiAgdmFyIHRlZVB0cyA9IHRlZVBvaW50cztcbiAgdmFyIGZpcnN0VGVlUHQgPSB0ZWVQb2ludHNbMF07XG4gIGNvbnRleHQubW92ZVRvKGZpcnN0VGVlUHQueCwgZmlyc3RUZWVQdC55KTtcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IHRlZVB0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwdCA9IHRlZVB0c1tpXTtcbiAgICBjb250ZXh0LmxpbmVUbyhwdC54LCBwdC55KTtcbiAgfVxuXG4gIGlmIChjb250ZXh0LmNsb3NlUGF0aCkge1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2lyY2xlVHJpYW5nbGUoY29udGV4dCwgdHJpYW5nbGVQb2ludHMsIHJ4LCByeSwgcikge1xuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9XG5cbiAgY29udGV4dC5hcmMocngsIHJ5LCByLCAwLCBNYXRoLlBJICogMiwgZmFsc2UpO1xuICB2YXIgdHJpUHRzID0gdHJpYW5nbGVQb2ludHM7XG4gIHZhciBmaXJzdFRyUHQgPSB0cmlQdHNbMF07XG4gIGNvbnRleHQubW92ZVRvKGZpcnN0VHJQdC54LCBmaXJzdFRyUHQueSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmlQdHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHQgPSB0cmlQdHNbaV07XG4gICAgY29udGV4dC5saW5lVG8ocHQueCwgcHQueSk7XG4gIH1cblxuICBpZiAoY29udGV4dC5jbG9zZVBhdGgpIHtcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNpcmNsZShjb250ZXh0LCByeCwgcnksIHIpIHtcbiAgY29udGV4dC5hcmMocngsIHJ5LCByLCAwLCBNYXRoLlBJICogMiwgZmFsc2UpO1xufVxuXG5DUnAuYXJyb3dTaGFwZUltcGwgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gKGltcGwgfHwgKGltcGwgPSB7XG4gICAgJ3BvbHlnb24nOiBwb2x5Z29uLFxuICAgICd0cmlhbmdsZS1iYWNrY3VydmUnOiB0cmlhbmdsZUJhY2tjdXJ2ZSxcbiAgICAndHJpYW5nbGUtdGVlJzogdHJpYW5nbGVUZWUsXG4gICAgJ2NpcmNsZS10cmlhbmdsZSc6IGNpcmNsZVRyaWFuZ2xlLFxuICAgICd0cmlhbmdsZS1jcm9zcyc6IHRyaWFuZ2xlVGVlLFxuICAgICdjaXJjbGUnOiBjaXJjbGVcbiAgfSkpW25hbWVdO1xufTtcblxudmFyIENScCQxID0ge307XG5cbkNScCQxLmRyYXdFbGVtZW50ID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSwgc2hpZnRUb09yaWdpbldpdGhCYiwgc2hvd0xhYmVsLCBzaG93T3ZlcmxheSwgc2hvd09wYWNpdHkpIHtcbiAgdmFyIHIgPSB0aGlzO1xuXG4gIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICByLmRyYXdOb2RlKGNvbnRleHQsIGVsZSwgc2hpZnRUb09yaWdpbldpdGhCYiwgc2hvd0xhYmVsLCBzaG93T3ZlcmxheSwgc2hvd09wYWNpdHkpO1xuICB9IGVsc2Uge1xuICAgIHIuZHJhd0VkZ2UoY29udGV4dCwgZWxlLCBzaGlmdFRvT3JpZ2luV2l0aEJiLCBzaG93TGFiZWwsIHNob3dPdmVybGF5LCBzaG93T3BhY2l0eSk7XG4gIH1cbn07XG5cbkNScCQxLmRyYXdFbGVtZW50T3ZlcmxheSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUpIHtcbiAgdmFyIHIgPSB0aGlzO1xuXG4gIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICByLmRyYXdOb2RlT3ZlcmxheShjb250ZXh0LCBlbGUpO1xuICB9IGVsc2Uge1xuICAgIHIuZHJhd0VkZ2VPdmVybGF5KGNvbnRleHQsIGVsZSk7XG4gIH1cbn07XG5cbkNScCQxLmRyYXdFbGVtZW50VW5kZXJsYXkgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlKSB7XG4gIHZhciByID0gdGhpcztcblxuICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgci5kcmF3Tm9kZVVuZGVybGF5KGNvbnRleHQsIGVsZSk7XG4gIH0gZWxzZSB7XG4gICAgci5kcmF3RWRnZVVuZGVybGF5KGNvbnRleHQsIGVsZSk7XG4gIH1cbn07XG5cbkNScCQxLmRyYXdDYWNoZWRFbGVtZW50UG9ydGlvbiA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIGVsZVR4ckNhY2hlLCBweFJhdGlvLCBsdmwsIHJlYXNvbiwgZ2V0Um90YXRpb24sIGdldE9wYWNpdHkpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgYmIgPSBlbGVUeHJDYWNoZS5nZXRCb3VuZGluZ0JveChlbGUpO1xuXG4gIGlmIChiYi53ID09PSAwIHx8IGJiLmggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH0gLy8gaWdub3JlIHplcm8gc2l6ZSBjYXNlXG5cblxuICB2YXIgZWxlQ2FjaGUgPSBlbGVUeHJDYWNoZS5nZXRFbGVtZW50KGVsZSwgYmIsIHB4UmF0aW8sIGx2bCwgcmVhc29uKTtcblxuICBpZiAoZWxlQ2FjaGUgIT0gbnVsbCkge1xuICAgIHZhciBvcGFjaXR5ID0gZ2V0T3BhY2l0eShyLCBlbGUpO1xuXG4gICAgaWYgKG9wYWNpdHkgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdGhldGEgPSBnZXRSb3RhdGlvbihyLCBlbGUpO1xuICAgIHZhciB4MSA9IGJiLngxLFxuICAgICAgICB5MSA9IGJiLnkxLFxuICAgICAgICB3ID0gYmIudyxcbiAgICAgICAgaCA9IGJiLmg7XG4gICAgdmFyIHgsIHksIHN4LCBzeSwgc21vb3RoO1xuXG4gICAgaWYgKHRoZXRhICE9PSAwKSB7XG4gICAgICB2YXIgcm90UHQgPSBlbGVUeHJDYWNoZS5nZXRSb3RhdGlvblBvaW50KGVsZSk7XG4gICAgICBzeCA9IHJvdFB0Lng7XG4gICAgICBzeSA9IHJvdFB0Lnk7XG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZShzeCwgc3kpO1xuICAgICAgY29udGV4dC5yb3RhdGUodGhldGEpO1xuICAgICAgc21vb3RoID0gci5nZXRJbWdTbW9vdGhpbmcoY29udGV4dCk7XG5cbiAgICAgIGlmICghc21vb3RoKSB7XG4gICAgICAgIHIuc2V0SW1nU21vb3RoaW5nKGNvbnRleHQsIHRydWUpO1xuICAgICAgfVxuXG4gICAgICB2YXIgb2ZmID0gZWxlVHhyQ2FjaGUuZ2V0Um90YXRpb25PZmZzZXQoZWxlKTtcbiAgICAgIHggPSBvZmYueDtcbiAgICAgIHkgPSBvZmYueTtcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHgxO1xuICAgICAgeSA9IHkxO1xuICAgIH1cblxuICAgIHZhciBvbGRHbG9iYWxBbHBoYTtcblxuICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICBvbGRHbG9iYWxBbHBoYSA9IGNvbnRleHQuZ2xvYmFsQWxwaGE7XG4gICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb2xkR2xvYmFsQWxwaGEgKiBvcGFjaXR5O1xuICAgIH1cblxuICAgIGNvbnRleHQuZHJhd0ltYWdlKGVsZUNhY2hlLnRleHR1cmUuY2FudmFzLCBlbGVDYWNoZS54LCAwLCBlbGVDYWNoZS53aWR0aCwgZWxlQ2FjaGUuaGVpZ2h0LCB4LCB5LCB3LCBoKTtcblxuICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb2xkR2xvYmFsQWxwaGE7XG4gICAgfVxuXG4gICAgaWYgKHRoZXRhICE9PSAwKSB7XG4gICAgICBjb250ZXh0LnJvdGF0ZSgtdGhldGEpO1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoLXN4LCAtc3kpO1xuXG4gICAgICBpZiAoIXNtb290aCkge1xuICAgICAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGVsZVR4ckNhY2hlLmRyYXdFbGVtZW50KGNvbnRleHQsIGVsZSk7IC8vIGRpcmVjdCBkcmF3IGZhbGxiYWNrXG4gIH1cbn07XG5cbnZhciBnZXRaZXJvUm90YXRpb24gPSBmdW5jdGlvbiBnZXRaZXJvUm90YXRpb24oKSB7XG4gIHJldHVybiAwO1xufTtcblxudmFyIGdldExhYmVsUm90YXRpb24gPSBmdW5jdGlvbiBnZXRMYWJlbFJvdGF0aW9uKHIsIGVsZSkge1xuICByZXR1cm4gci5nZXRUZXh0QW5nbGUoZWxlLCBudWxsKTtcbn07XG5cbnZhciBnZXRTb3VyY2VMYWJlbFJvdGF0aW9uID0gZnVuY3Rpb24gZ2V0U291cmNlTGFiZWxSb3RhdGlvbihyLCBlbGUpIHtcbiAgcmV0dXJuIHIuZ2V0VGV4dEFuZ2xlKGVsZSwgJ3NvdXJjZScpO1xufTtcblxudmFyIGdldFRhcmdldExhYmVsUm90YXRpb24gPSBmdW5jdGlvbiBnZXRUYXJnZXRMYWJlbFJvdGF0aW9uKHIsIGVsZSkge1xuICByZXR1cm4gci5nZXRUZXh0QW5nbGUoZWxlLCAndGFyZ2V0Jyk7XG59O1xuXG52YXIgZ2V0T3BhY2l0eSA9IGZ1bmN0aW9uIGdldE9wYWNpdHkociwgZWxlKSB7XG4gIHJldHVybiBlbGUuZWZmZWN0aXZlT3BhY2l0eSgpO1xufTtcblxudmFyIGdldFRleHRPcGFjaXR5ID0gZnVuY3Rpb24gZ2V0VGV4dE9wYWNpdHkoZSwgZWxlKSB7XG4gIHJldHVybiBlbGUucHN0eWxlKCd0ZXh0LW9wYWNpdHknKS5wZlZhbHVlICogZWxlLmVmZmVjdGl2ZU9wYWNpdHkoKTtcbn07XG5cbkNScCQxLmRyYXdDYWNoZWRFbGVtZW50ID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSwgcHhSYXRpbywgZXh0ZW50LCBsdmwsIHJlcXVlc3RIaWdoUXVhbGl0eSkge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBfciRkYXRhID0gci5kYXRhLFxuICAgICAgZWxlVHhyQ2FjaGUgPSBfciRkYXRhLmVsZVR4ckNhY2hlLFxuICAgICAgbGJsVHhyQ2FjaGUgPSBfciRkYXRhLmxibFR4ckNhY2hlLFxuICAgICAgc2xiVHhyQ2FjaGUgPSBfciRkYXRhLnNsYlR4ckNhY2hlLFxuICAgICAgdGxiVHhyQ2FjaGUgPSBfciRkYXRhLnRsYlR4ckNhY2hlO1xuICB2YXIgYmIgPSBlbGUuYm91bmRpbmdCb3goKTtcbiAgdmFyIHJlYXNvbiA9IHJlcXVlc3RIaWdoUXVhbGl0eSA9PT0gdHJ1ZSA/IGVsZVR4ckNhY2hlLnJlYXNvbnMuaGlnaFF1YWxpdHkgOiBudWxsO1xuXG4gIGlmIChiYi53ID09PSAwIHx8IGJiLmggPT09IDAgfHwgIWVsZS52aXNpYmxlKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIWV4dGVudCB8fCBib3VuZGluZ0JveGVzSW50ZXJzZWN0KGJiLCBleHRlbnQpKSB7XG4gICAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcblxuICAgIHZhciBiYWRMaW5lID0gZWxlLmVsZW1lbnQoKS5fcHJpdmF0ZS5yc2NyYXRjaC5iYWRMaW5lO1xuXG4gICAgci5kcmF3RWxlbWVudFVuZGVybGF5KGNvbnRleHQsIGVsZSk7XG4gICAgci5kcmF3Q2FjaGVkRWxlbWVudFBvcnRpb24oY29udGV4dCwgZWxlLCBlbGVUeHJDYWNoZSwgcHhSYXRpbywgbHZsLCByZWFzb24sIGdldFplcm9Sb3RhdGlvbiwgZ2V0T3BhY2l0eSk7XG5cbiAgICBpZiAoIWlzRWRnZSB8fCAhYmFkTGluZSkge1xuICAgICAgci5kcmF3Q2FjaGVkRWxlbWVudFBvcnRpb24oY29udGV4dCwgZWxlLCBsYmxUeHJDYWNoZSwgcHhSYXRpbywgbHZsLCByZWFzb24sIGdldExhYmVsUm90YXRpb24sIGdldFRleHRPcGFjaXR5KTtcbiAgICB9XG5cbiAgICBpZiAoaXNFZGdlICYmICFiYWRMaW5lKSB7XG4gICAgICByLmRyYXdDYWNoZWRFbGVtZW50UG9ydGlvbihjb250ZXh0LCBlbGUsIHNsYlR4ckNhY2hlLCBweFJhdGlvLCBsdmwsIHJlYXNvbiwgZ2V0U291cmNlTGFiZWxSb3RhdGlvbiwgZ2V0VGV4dE9wYWNpdHkpO1xuICAgICAgci5kcmF3Q2FjaGVkRWxlbWVudFBvcnRpb24oY29udGV4dCwgZWxlLCB0bGJUeHJDYWNoZSwgcHhSYXRpbywgbHZsLCByZWFzb24sIGdldFRhcmdldExhYmVsUm90YXRpb24sIGdldFRleHRPcGFjaXR5KTtcbiAgICB9XG5cbiAgICByLmRyYXdFbGVtZW50T3ZlcmxheShjb250ZXh0LCBlbGUpO1xuICB9XG59O1xuXG5DUnAkMS5kcmF3RWxlbWVudHMgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlcykge1xuICB2YXIgciA9IHRoaXM7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgci5kcmF3RWxlbWVudChjb250ZXh0LCBlbGUpO1xuICB9XG59O1xuXG5DUnAkMS5kcmF3Q2FjaGVkRWxlbWVudHMgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlcywgcHhSYXRpbywgZXh0ZW50KSB7XG4gIHZhciByID0gdGhpcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICByLmRyYXdDYWNoZWRFbGVtZW50KGNvbnRleHQsIGVsZSwgcHhSYXRpbywgZXh0ZW50KTtcbiAgfVxufTtcblxuQ1JwJDEuZHJhd0NhY2hlZE5vZGVzID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZXMsIHB4UmF0aW8sIGV4dGVudCkge1xuICB2YXIgciA9IHRoaXM7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG5cbiAgICBpZiAoIWVsZS5pc05vZGUoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgci5kcmF3Q2FjaGVkRWxlbWVudChjb250ZXh0LCBlbGUsIHB4UmF0aW8sIGV4dGVudCk7XG4gIH1cbn07XG5cbkNScCQxLmRyYXdMYXllcmVkRWxlbWVudHMgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlcywgcHhSYXRpbywgZXh0ZW50KSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIGxheWVycyA9IHIuZGF0YS5seXJUeHJDYWNoZS5nZXRMYXllcnMoZWxlcywgcHhSYXRpbyk7XG5cbiAgaWYgKGxheWVycykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbGF5ZXIgPSBsYXllcnNbaV07XG4gICAgICB2YXIgYmIgPSBsYXllci5iYjtcblxuICAgICAgaWYgKGJiLncgPT09IDAgfHwgYmIuaCA9PT0gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5kcmF3SW1hZ2UobGF5ZXIuY2FudmFzLCBiYi54MSwgYmIueTEsIGJiLncsIGJiLmgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBmYWxsIGJhY2sgb24gcGxhaW4gY2FjaGluZyBpZiBubyBsYXllcnNcbiAgICByLmRyYXdDYWNoZWRFbGVtZW50cyhjb250ZXh0LCBlbGVzLCBweFJhdGlvLCBleHRlbnQpO1xuICB9XG59O1xuXG4vKiBnbG9iYWwgUGF0aDJEICovXG52YXIgQ1JwJDIgPSB7fTtcblxuQ1JwJDIuZHJhd0VkZ2UgPSBmdW5jdGlvbiAoY29udGV4dCwgZWRnZSwgc2hpZnRUb09yaWdpbldpdGhCYikge1xuICB2YXIgZHJhd0xhYmVsID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiB0cnVlO1xuICB2YXIgc2hvdWxkRHJhd092ZXJsYXkgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IHRydWU7XG4gIHZhciBzaG91bGREcmF3T3BhY2l0eSA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogdHJ1ZTtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuXG4gIGlmIChzaG91bGREcmF3T3BhY2l0eSAmJiAhZWRnZS52aXNpYmxlKCkpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gaWYgYmV6aWVyIGN0cmwgcHRzIGNhbiBub3QgYmUgY2FsY3VsYXRlZCwgdGhlbiBkaWVcblxuXG4gIGlmIChycy5iYWRMaW5lIHx8IHJzLmFsbHB0cyA9PSBudWxsIHx8IGlzTmFOKHJzLmFsbHB0c1swXSkpIHtcbiAgICAvLyBpc05hTiBpbiBjYXNlIGVkZ2UgaXMgaW1wb3NzaWJsZSBhbmQgYnJvd3NlciBidWdzIChlLmcuIHNhZmFyaSlcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgYmI7XG5cbiAgaWYgKHNoaWZ0VG9PcmlnaW5XaXRoQmIpIHtcbiAgICBiYiA9IHNoaWZ0VG9PcmlnaW5XaXRoQmI7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLWJiLngxLCAtYmIueTEpO1xuICB9XG5cbiAgdmFyIG9wYWNpdHkgPSBzaG91bGREcmF3T3BhY2l0eSA/IGVkZ2UucHN0eWxlKCdvcGFjaXR5JykudmFsdWUgOiAxO1xuICB2YXIgbGluZU9wYWNpdHkgPSBzaG91bGREcmF3T3BhY2l0eSA/IGVkZ2UucHN0eWxlKCdsaW5lLW9wYWNpdHknKS52YWx1ZSA6IDE7XG4gIHZhciBjdXJ2ZVN0eWxlID0gZWRnZS5wc3R5bGUoJ2N1cnZlLXN0eWxlJykudmFsdWU7XG4gIHZhciBsaW5lU3R5bGUgPSBlZGdlLnBzdHlsZSgnbGluZS1zdHlsZScpLnZhbHVlO1xuICB2YXIgZWRnZVdpZHRoID0gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZTtcbiAgdmFyIGxpbmVDYXAgPSBlZGdlLnBzdHlsZSgnbGluZS1jYXAnKS52YWx1ZTtcbiAgdmFyIGVmZmVjdGl2ZUxpbmVPcGFjaXR5ID0gb3BhY2l0eSAqIGxpbmVPcGFjaXR5OyAvLyBzZXBhcmF0ZSBhcnJvdyBvcGFjaXR5IHdvdWxkIHJlcXVpcmUgYXJyb3ctb3BhY2l0eSBwcm9wZXJ0eVxuXG4gIHZhciBlZmZlY3RpdmVBcnJvd09wYWNpdHkgPSBvcGFjaXR5ICogbGluZU9wYWNpdHk7XG5cbiAgdmFyIGRyYXdMaW5lID0gZnVuY3Rpb24gZHJhd0xpbmUoKSB7XG4gICAgdmFyIHN0cm9rZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGVmZmVjdGl2ZUxpbmVPcGFjaXR5O1xuXG4gICAgaWYgKGN1cnZlU3R5bGUgPT09ICdzdHJhaWdodC10cmlhbmdsZScpIHtcbiAgICAgIHIuZWxlU3Ryb2tlU3R5bGUoY29udGV4dCwgZWRnZSwgc3Ryb2tlT3BhY2l0eSk7XG4gICAgICByLmRyYXdFZGdlVHJpYW5nbGVQYXRoKGVkZ2UsIGNvbnRleHQsIHJzLmFsbHB0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQubGluZVdpZHRoID0gZWRnZVdpZHRoO1xuICAgICAgY29udGV4dC5saW5lQ2FwID0gbGluZUNhcDtcbiAgICAgIHIuZWxlU3Ryb2tlU3R5bGUoY29udGV4dCwgZWRnZSwgc3Ryb2tlT3BhY2l0eSk7XG4gICAgICByLmRyYXdFZGdlUGF0aChlZGdlLCBjb250ZXh0LCBycy5hbGxwdHMsIGxpbmVTdHlsZSk7XG4gICAgICBjb250ZXh0LmxpbmVDYXAgPSAnYnV0dCc7IC8vIHJlc2V0IGZvciBvdGhlciBkcmF3aW5nIGZ1bmN0aW9uc1xuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd092ZXJsYXkgPSBmdW5jdGlvbiBkcmF3T3ZlcmxheSgpIHtcbiAgICBpZiAoIXNob3VsZERyYXdPdmVybGF5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgci5kcmF3RWRnZU92ZXJsYXkoY29udGV4dCwgZWRnZSk7XG4gIH07XG5cbiAgdmFyIGRyYXdVbmRlcmxheSA9IGZ1bmN0aW9uIGRyYXdVbmRlcmxheSgpIHtcbiAgICBpZiAoIXNob3VsZERyYXdPdmVybGF5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgci5kcmF3RWRnZVVuZGVybGF5KGNvbnRleHQsIGVkZ2UpO1xuICB9O1xuXG4gIHZhciBkcmF3QXJyb3dzID0gZnVuY3Rpb24gZHJhd0Fycm93cygpIHtcbiAgICB2YXIgYXJyb3dPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBlZmZlY3RpdmVBcnJvd09wYWNpdHk7XG4gICAgci5kcmF3QXJyb3doZWFkcyhjb250ZXh0LCBlZGdlLCBhcnJvd09wYWNpdHkpO1xuICB9O1xuXG4gIHZhciBkcmF3VGV4dCA9IGZ1bmN0aW9uIGRyYXdUZXh0KCkge1xuICAgIHIuZHJhd0VsZW1lbnRUZXh0KGNvbnRleHQsIGVkZ2UsIG51bGwsIGRyYXdMYWJlbCk7XG4gIH07XG5cbiAgY29udGV4dC5saW5lSm9pbiA9ICdyb3VuZCc7XG4gIHZhciBnaG9zdCA9IGVkZ2UucHN0eWxlKCdnaG9zdCcpLnZhbHVlID09PSAneWVzJztcblxuICBpZiAoZ2hvc3QpIHtcbiAgICB2YXIgZ3ggPSBlZGdlLnBzdHlsZSgnZ2hvc3Qtb2Zmc2V0LXgnKS5wZlZhbHVlO1xuICAgIHZhciBneSA9IGVkZ2UucHN0eWxlKCdnaG9zdC1vZmZzZXQteScpLnBmVmFsdWU7XG4gICAgdmFyIGdob3N0T3BhY2l0eSA9IGVkZ2UucHN0eWxlKCdnaG9zdC1vcGFjaXR5JykudmFsdWU7XG4gICAgdmFyIGVmZmVjdGl2ZUdob3N0T3BhY2l0eSA9IGVmZmVjdGl2ZUxpbmVPcGFjaXR5ICogZ2hvc3RPcGFjaXR5O1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGd4LCBneSk7XG4gICAgZHJhd0xpbmUoZWZmZWN0aXZlR2hvc3RPcGFjaXR5KTtcbiAgICBkcmF3QXJyb3dzKGVmZmVjdGl2ZUdob3N0T3BhY2l0eSk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLWd4LCAtZ3kpO1xuICB9XG5cbiAgZHJhd1VuZGVybGF5KCk7XG4gIGRyYXdMaW5lKCk7XG4gIGRyYXdBcnJvd3MoKTtcbiAgZHJhd092ZXJsYXkoKTtcbiAgZHJhd1RleHQoKTtcblxuICBpZiAoc2hpZnRUb09yaWdpbldpdGhCYikge1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGJiLngxLCBiYi55MSk7XG4gIH1cbn07XG5cbnZhciBkcmF3RWRnZU92ZXJsYXlVbmRlcmxheSA9IGZ1bmN0aW9uIGRyYXdFZGdlT3ZlcmxheVVuZGVybGF5KG92ZXJsYXlPclVuZGVybGF5KSB7XG4gIGlmICghWydvdmVybGF5JywgJ3VuZGVybGF5J10uaW5jbHVkZXMob3ZlcmxheU9yVW5kZXJsYXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0YXRlJyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGNvbnRleHQsIGVkZ2UpIHtcbiAgICBpZiAoIWVkZ2UudmlzaWJsZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG9wYWNpdHkgPSBlZGdlLnBzdHlsZShcIlwiLmNvbmNhdChvdmVybGF5T3JVbmRlcmxheSwgXCItb3BhY2l0eVwiKSkudmFsdWU7XG5cbiAgICBpZiAob3BhY2l0eSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciByID0gdGhpcztcbiAgICB2YXIgdXNlUGF0aHMgPSByLnVzZVBhdGhzKCk7XG4gICAgdmFyIHJzID0gZWRnZS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgICB2YXIgcGFkZGluZyA9IGVkZ2UucHN0eWxlKFwiXCIuY29uY2F0KG92ZXJsYXlPclVuZGVybGF5LCBcIi1wYWRkaW5nXCIpKS5wZlZhbHVlO1xuICAgIHZhciB3aWR0aCA9IDIgKiBwYWRkaW5nO1xuICAgIHZhciBjb2xvciA9IGVkZ2UucHN0eWxlKFwiXCIuY29uY2F0KG92ZXJsYXlPclVuZGVybGF5LCBcIi1jb2xvclwiKSkudmFsdWU7XG4gICAgY29udGV4dC5saW5lV2lkdGggPSB3aWR0aDtcblxuICAgIGlmIChycy5lZGdlVHlwZSA9PT0gJ3NlbGYnICYmICF1c2VQYXRocykge1xuICAgICAgY29udGV4dC5saW5lQ2FwID0gJ2J1dHQnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmxpbmVDYXAgPSAncm91bmQnO1xuICAgIH1cblxuICAgIHIuY29sb3JTdHJva2VTdHlsZShjb250ZXh0LCBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgICByLmRyYXdFZGdlUGF0aChlZGdlLCBjb250ZXh0LCBycy5hbGxwdHMsICdzb2xpZCcpO1xuICB9O1xufTtcblxuQ1JwJDIuZHJhd0VkZ2VPdmVybGF5ID0gZHJhd0VkZ2VPdmVybGF5VW5kZXJsYXkoJ292ZXJsYXknKTtcbkNScCQyLmRyYXdFZGdlVW5kZXJsYXkgPSBkcmF3RWRnZU92ZXJsYXlVbmRlcmxheSgndW5kZXJsYXknKTtcblxuQ1JwJDIuZHJhd0VkZ2VQYXRoID0gZnVuY3Rpb24gKGVkZ2UsIGNvbnRleHQsIHB0cywgdHlwZSkge1xuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuICB2YXIgY2FudmFzQ3h0ID0gY29udGV4dDtcbiAgdmFyIHBhdGg7XG4gIHZhciBwYXRoQ2FjaGVIaXQgPSBmYWxzZTtcbiAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpO1xuICB2YXIgbGluZURhc2hQYXR0ZXJuID0gZWRnZS5wc3R5bGUoJ2xpbmUtZGFzaC1wYXR0ZXJuJykucGZWYWx1ZTtcbiAgdmFyIGxpbmVEYXNoT2Zmc2V0ID0gZWRnZS5wc3R5bGUoJ2xpbmUtZGFzaC1vZmZzZXQnKS5wZlZhbHVlO1xuXG4gIGlmICh1c2VQYXRocykge1xuICAgIHZhciBwYXRoQ2FjaGVLZXkgPSBwdHMuam9pbignJCcpO1xuICAgIHZhciBrZXlNYXRjaGVzID0gcnMucGF0aENhY2hlS2V5ICYmIHJzLnBhdGhDYWNoZUtleSA9PT0gcGF0aENhY2hlS2V5O1xuXG4gICAgaWYgKGtleU1hdGNoZXMpIHtcbiAgICAgIHBhdGggPSBjb250ZXh0ID0gcnMucGF0aENhY2hlO1xuICAgICAgcGF0aENhY2hlSGl0ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aCA9IGNvbnRleHQgPSBuZXcgUGF0aDJEKCk7XG4gICAgICBycy5wYXRoQ2FjaGVLZXkgPSBwYXRoQ2FjaGVLZXk7XG4gICAgICBycy5wYXRoQ2FjaGUgPSBwYXRoO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjYW52YXNDeHQuc2V0TGluZURhc2gpIHtcbiAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2RvdHRlZCc6XG4gICAgICAgIGNhbnZhc0N4dC5zZXRMaW5lRGFzaChbMSwgMV0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZGFzaGVkJzpcbiAgICAgICAgY2FudmFzQ3h0LnNldExpbmVEYXNoKGxpbmVEYXNoUGF0dGVybik7XG4gICAgICAgIGNhbnZhc0N4dC5saW5lRGFzaE9mZnNldCA9IGxpbmVEYXNoT2Zmc2V0O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc29saWQnOlxuICAgICAgICBjYW52YXNDeHQuc2V0TGluZURhc2goW10pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhdGhDYWNoZUhpdCAmJiAhcnMuYmFkTGluZSkge1xuICAgIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICB9XG5cbiAgICBjb250ZXh0Lm1vdmVUbyhwdHNbMF0sIHB0c1sxXSk7XG5cbiAgICBzd2l0Y2ggKHJzLmVkZ2VUeXBlKSB7XG4gICAgICBjYXNlICdiZXppZXInOlxuICAgICAgY2FzZSAnc2VsZic6XG4gICAgICBjYXNlICdjb21wb3VuZCc6XG4gICAgICBjYXNlICdtdWx0aWJlemllcic6XG4gICAgICAgIGZvciAodmFyIGkgPSAyOyBpICsgMyA8IHB0cy5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgICAgIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyhwdHNbaV0sIHB0c1tpICsgMV0sIHB0c1tpICsgMl0sIHB0c1tpICsgM10pO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3N0cmFpZ2h0JzpcbiAgICAgIGNhc2UgJ3NlZ21lbnRzJzpcbiAgICAgIGNhc2UgJ2hheXN0YWNrJzpcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSArIDEgPCBwdHMubGVuZ3RoOyBfaSArPSAyKSB7XG4gICAgICAgICAgY29udGV4dC5saW5lVG8ocHRzW19pXSwgcHRzW19pICsgMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29udGV4dCA9IGNhbnZhc0N4dDtcblxuICBpZiAodXNlUGF0aHMpIHtcbiAgICBjb250ZXh0LnN0cm9rZShwYXRoKTtcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xuICB9IC8vIHJlc2V0IGFueSBsaW5lIGRhc2hlc1xuXG5cbiAgaWYgKGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgfVxufTtcblxuQ1JwJDIuZHJhd0VkZ2VUcmlhbmdsZVBhdGggPSBmdW5jdGlvbiAoZWRnZSwgY29udGV4dCwgcHRzKSB7XG4gIC8vIHVzZSBsaW5lIHN0cm9rZSBzdHlsZSBmb3IgdHJpYW5nbGUgZmlsbCBzdHlsZVxuICBjb250ZXh0LmZpbGxTdHlsZSA9IGNvbnRleHQuc3Ryb2tlU3R5bGU7XG4gIHZhciBlZGdlV2lkdGggPSBlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpICsgMSA8IHB0cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciB2ZWN0b3IgPSBbcHRzW2kgKyAyXSAtIHB0c1tpXSwgcHRzW2kgKyAzXSAtIHB0c1tpICsgMV1dO1xuICAgIHZhciBsZW5ndGggPSBNYXRoLnNxcnQodmVjdG9yWzBdICogdmVjdG9yWzBdICsgdmVjdG9yWzFdICogdmVjdG9yWzFdKTtcbiAgICB2YXIgbm9ybWFsID0gW3ZlY3RvclsxXSAvIGxlbmd0aCwgLXZlY3RvclswXSAvIGxlbmd0aF07XG4gICAgdmFyIHRyaWFuZ2xlSGVhZCA9IFtub3JtYWxbMF0gKiBlZGdlV2lkdGggLyAyLCBub3JtYWxbMV0gKiBlZGdlV2lkdGggLyAyXTtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIGNvbnRleHQubW92ZVRvKHB0c1tpXSAtIHRyaWFuZ2xlSGVhZFswXSwgcHRzW2kgKyAxXSAtIHRyaWFuZ2xlSGVhZFsxXSk7XG4gICAgY29udGV4dC5saW5lVG8ocHRzW2ldICsgdHJpYW5nbGVIZWFkWzBdLCBwdHNbaSArIDFdICsgdHJpYW5nbGVIZWFkWzFdKTtcbiAgICBjb250ZXh0LmxpbmVUbyhwdHNbaSArIDJdLCBwdHNbaSArIDNdKTtcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIGNvbnRleHQuZmlsbCgpO1xuICB9XG59O1xuXG5DUnAkMi5kcmF3QXJyb3doZWFkcyA9IGZ1bmN0aW9uIChjb250ZXh0LCBlZGdlLCBvcGFjaXR5KSB7XG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHZhciBpc0hheXN0YWNrID0gcnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjayc7XG5cbiAgaWYgKCFpc0hheXN0YWNrKSB7XG4gICAgdGhpcy5kcmF3QXJyb3doZWFkKGNvbnRleHQsIGVkZ2UsICdzb3VyY2UnLCBycy5hcnJvd1N0YXJ0WCwgcnMuYXJyb3dTdGFydFksIHJzLnNyY0Fycm93QW5nbGUsIG9wYWNpdHkpO1xuICB9XG5cbiAgdGhpcy5kcmF3QXJyb3doZWFkKGNvbnRleHQsIGVkZ2UsICdtaWQtdGFyZ2V0JywgcnMubWlkWCwgcnMubWlkWSwgcnMubWlkdGd0QXJyb3dBbmdsZSwgb3BhY2l0eSk7XG4gIHRoaXMuZHJhd0Fycm93aGVhZChjb250ZXh0LCBlZGdlLCAnbWlkLXNvdXJjZScsIHJzLm1pZFgsIHJzLm1pZFksIHJzLm1pZHNyY0Fycm93QW5nbGUsIG9wYWNpdHkpO1xuXG4gIGlmICghaXNIYXlzdGFjaykge1xuICAgIHRoaXMuZHJhd0Fycm93aGVhZChjb250ZXh0LCBlZGdlLCAndGFyZ2V0JywgcnMuYXJyb3dFbmRYLCBycy5hcnJvd0VuZFksIHJzLnRndEFycm93QW5nbGUsIG9wYWNpdHkpO1xuICB9XG59O1xuXG5DUnAkMi5kcmF3QXJyb3doZWFkID0gZnVuY3Rpb24gKGNvbnRleHQsIGVkZ2UsIHByZWZpeCwgeCwgeSwgYW5nbGUsIG9wYWNpdHkpIHtcbiAgaWYgKGlzTmFOKHgpIHx8IHggPT0gbnVsbCB8fCBpc05hTih5KSB8fCB5ID09IG51bGwgfHwgaXNOYU4oYW5nbGUpIHx8IGFuZ2xlID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBhcnJvd1NoYXBlID0gZWRnZS5wc3R5bGUocHJlZml4ICsgJy1hcnJvdy1zaGFwZScpLnZhbHVlO1xuXG4gIGlmIChhcnJvd1NoYXBlID09PSAnbm9uZScpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgYXJyb3dDbGVhckZpbGwgPSBlZGdlLnBzdHlsZShwcmVmaXggKyAnLWFycm93LWZpbGwnKS52YWx1ZSA9PT0gJ2hvbGxvdycgPyAnYm90aCcgOiAnZmlsbGVkJztcbiAgdmFyIGFycm93RmlsbCA9IGVkZ2UucHN0eWxlKHByZWZpeCArICctYXJyb3ctZmlsbCcpLnZhbHVlO1xuICB2YXIgZWRnZVdpZHRoID0gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZTtcbiAgdmFyIGVkZ2VPcGFjaXR5ID0gZWRnZS5wc3R5bGUoJ29wYWNpdHknKS52YWx1ZTtcblxuICBpZiAob3BhY2l0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgb3BhY2l0eSA9IGVkZ2VPcGFjaXR5O1xuICB9XG5cbiAgdmFyIGdjbyA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuXG4gIGlmIChvcGFjaXR5ICE9PSAxIHx8IGFycm93RmlsbCA9PT0gJ2hvbGxvdycpIHtcbiAgICAvLyB0aGVuIGV4dHJhIGNsZWFyIGlzIG5lZWRlZFxuICAgIGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW91dCc7XG4gICAgc2VsZi5jb2xvckZpbGxTdHlsZShjb250ZXh0LCAyNTUsIDI1NSwgMjU1LCAxKTtcbiAgICBzZWxmLmNvbG9yU3Ryb2tlU3R5bGUoY29udGV4dCwgMjU1LCAyNTUsIDI1NSwgMSk7XG4gICAgc2VsZi5kcmF3QXJyb3dTaGFwZShlZGdlLCBjb250ZXh0LCBhcnJvd0NsZWFyRmlsbCwgZWRnZVdpZHRoLCBhcnJvd1NoYXBlLCB4LCB5LCBhbmdsZSk7XG4gICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBnY287XG4gIH0gLy8gb3RoZXJ3aXNlLCB0aGUgb3BhcXVlIGFycm93IGNsZWFycyBpdCBmb3IgZnJlZSA6KVxuXG5cbiAgdmFyIGNvbG9yID0gZWRnZS5wc3R5bGUocHJlZml4ICsgJy1hcnJvdy1jb2xvcicpLnZhbHVlO1xuICBzZWxmLmNvbG9yRmlsbFN0eWxlKGNvbnRleHQsIGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIG9wYWNpdHkpO1xuICBzZWxmLmNvbG9yU3Ryb2tlU3R5bGUoY29udGV4dCwgY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgb3BhY2l0eSk7XG4gIHNlbGYuZHJhd0Fycm93U2hhcGUoZWRnZSwgY29udGV4dCwgYXJyb3dGaWxsLCBlZGdlV2lkdGgsIGFycm93U2hhcGUsIHgsIHksIGFuZ2xlKTtcbn07XG5cbkNScCQyLmRyYXdBcnJvd1NoYXBlID0gZnVuY3Rpb24gKGVkZ2UsIGNvbnRleHQsIGZpbGwsIGVkZ2VXaWR0aCwgc2hhcGUsIHgsIHksIGFuZ2xlKSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpICYmIHNoYXBlICE9PSAndHJpYW5nbGUtY3Jvc3MnO1xuICB2YXIgcGF0aENhY2hlSGl0ID0gZmFsc2U7XG4gIHZhciBwYXRoO1xuICB2YXIgY2FudmFzQ29udGV4dCA9IGNvbnRleHQ7XG4gIHZhciB0cmFuc2xhdGlvbiA9IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbiAgdmFyIHNjYWxlID0gZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWU7XG4gIHZhciBzaXplID0gdGhpcy5nZXRBcnJvd1dpZHRoKGVkZ2VXaWR0aCwgc2NhbGUpO1xuICB2YXIgc2hhcGVJbXBsID0gci5hcnJvd1NoYXBlc1tzaGFwZV07XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgdmFyIGNhY2hlID0gci5hcnJvd1BhdGhDYWNoZSA9IHIuYXJyb3dQYXRoQ2FjaGUgfHwgW107XG4gICAgdmFyIGtleSA9IGhhc2hTdHJpbmcoc2hhcGUpO1xuICAgIHZhciBjYWNoZWRQYXRoID0gY2FjaGVba2V5XTtcblxuICAgIGlmIChjYWNoZWRQYXRoICE9IG51bGwpIHtcbiAgICAgIHBhdGggPSBjb250ZXh0ID0gY2FjaGVkUGF0aDtcbiAgICAgIHBhdGhDYWNoZUhpdCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGggPSBjb250ZXh0ID0gbmV3IFBhdGgyRCgpO1xuICAgICAgY2FjaGVba2V5XSA9IHBhdGg7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFwYXRoQ2FjaGVIaXQpIHtcbiAgICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgfVxuXG4gICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAvLyBzdG9yZSBpbiB0aGUgcGF0aCBjYWNoZSB3aXRoIHZhbHVlcyBlYXNpbHkgbWFuaXB1bGF0ZWQgbGF0ZXJcbiAgICAgIHNoYXBlSW1wbC5kcmF3KGNvbnRleHQsIDEsIDAsIHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfSwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNoYXBlSW1wbC5kcmF3KGNvbnRleHQsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbiwgZWRnZVdpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dC5jbG9zZVBhdGgpIHtcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgfVxuICB9XG5cbiAgY29udGV4dCA9IGNhbnZhc0NvbnRleHQ7XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgLy8gc2V0IHRyYW5zZm9ybSB0byBhcnJvdyBwb3NpdGlvbi9vcmllbnRhdGlvblxuICAgIGNvbnRleHQudHJhbnNsYXRlKHgsIHkpO1xuICAgIGNvbnRleHQucm90YXRlKGFuZ2xlKTtcbiAgICBjb250ZXh0LnNjYWxlKHNpemUsIHNpemUpO1xuICB9XG5cbiAgaWYgKGZpbGwgPT09ICdmaWxsZWQnIHx8IGZpbGwgPT09ICdib3RoJykge1xuICAgIGlmICh1c2VQYXRocykge1xuICAgICAgY29udGV4dC5maWxsKHBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmZpbGwoKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZmlsbCA9PT0gJ2hvbGxvdycgfHwgZmlsbCA9PT0gJ2JvdGgnKSB7XG4gICAgY29udGV4dC5saW5lV2lkdGggPSAoc2hhcGVJbXBsLm1hdGNoRWRnZVdpZHRoID8gZWRnZVdpZHRoIDogMSkgLyAodXNlUGF0aHMgPyBzaXplIDogMSk7XG4gICAgY29udGV4dC5saW5lSm9pbiA9ICdtaXRlcic7XG5cbiAgICBpZiAodXNlUGF0aHMpIHtcbiAgICAgIGNvbnRleHQuc3Ryb2tlKHBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh1c2VQYXRocykge1xuICAgIC8vIHJlc2V0IHRyYW5zZm9ybSBieSBhcHBseWluZyBpbnZlcnNlXG4gICAgY29udGV4dC5zY2FsZSgxIC8gc2l6ZSwgMSAvIHNpemUpO1xuICAgIGNvbnRleHQucm90YXRlKC1hbmdsZSk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLXgsIC15KTtcbiAgfVxufTtcblxudmFyIENScCQzID0ge307XG5cbkNScCQzLnNhZmVEcmF3SW1hZ2UgPSBmdW5jdGlvbiAoY29udGV4dCwgaW1nLCBpeCwgaXksIGl3LCBpaCwgeCwgeSwgdywgaCkge1xuICAvLyBkZXRlY3QgcHJvYmxlbWF0aWMgY2FzZXMgZm9yIG9sZCBicm93c2VycyB3aXRoIGJhZCBpbWFnZXMgKGNoZWFwZXIgdGhhbiB0cnktY2F0Y2gpXG4gIGlmIChpdyA8PSAwIHx8IGloIDw9IDAgfHwgdyA8PSAwIHx8IGggPD0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnRleHQuZHJhd0ltYWdlKGltZywgaXgsIGl5LCBpdywgaWgsIHgsIHksIHcsIGgpO1xufTtcblxuQ1JwJDMuZHJhd0luc2NyaWJlZEltYWdlID0gZnVuY3Rpb24gKGNvbnRleHQsIGltZywgbm9kZSwgaW5kZXgsIG5vZGVPcGFjaXR5KSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIHBvcyA9IG5vZGUucG9zaXRpb24oKTtcbiAgdmFyIG5vZGVYID0gcG9zLng7XG4gIHZhciBub2RlWSA9IHBvcy55O1xuICB2YXIgc3R5bGVPYmogPSBub2RlLmN5KCkuc3R5bGUoKTtcbiAgdmFyIGdldEluZGV4ZWRTdHlsZSA9IHN0eWxlT2JqLmdldEluZGV4ZWRTdHlsZS5iaW5kKHN0eWxlT2JqKTtcbiAgdmFyIGZpdCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1maXQnLCAndmFsdWUnLCBpbmRleCk7XG4gIHZhciByZXBlYXQgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtcmVwZWF0JywgJ3ZhbHVlJywgaW5kZXgpO1xuICB2YXIgbm9kZVcgPSBub2RlLndpZHRoKCk7XG4gIHZhciBub2RlSCA9IG5vZGUuaGVpZ2h0KCk7XG4gIHZhciBwYWRkaW5nWDIgPSBub2RlLnBhZGRpbmcoKSAqIDI7XG4gIHZhciBub2RlVFcgPSBub2RlVyArIChnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtd2lkdGgtcmVsYXRpdmUtdG8nLCAndmFsdWUnLCBpbmRleCkgPT09ICdpbm5lcicgPyAwIDogcGFkZGluZ1gyKTtcbiAgdmFyIG5vZGVUSCA9IG5vZGVIICsgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1oZWlnaHQtcmVsYXRpdmUtdG8nLCAndmFsdWUnLCBpbmRleCkgPT09ICdpbm5lcicgPyAwIDogcGFkZGluZ1gyKTtcbiAgdmFyIHJzID0gbm9kZS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdmFyIGNsaXAgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtY2xpcCcsICd2YWx1ZScsIGluZGV4KTtcbiAgdmFyIHNob3VsZENsaXAgPSBjbGlwID09PSAnbm9kZSc7XG4gIHZhciBpbWdPcGFjaXR5ID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWltYWdlLW9wYWNpdHknLCAndmFsdWUnLCBpbmRleCkgKiBub2RlT3BhY2l0eTtcbiAgdmFyIHNtb290aCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1pbWFnZS1zbW9vdGhpbmcnLCAndmFsdWUnLCBpbmRleCk7XG4gIHZhciBpbWdXID0gaW1nLndpZHRoIHx8IGltZy5jYWNoZWRXO1xuICB2YXIgaW1nSCA9IGltZy5oZWlnaHQgfHwgaW1nLmNhY2hlZEg7IC8vIHdvcmthcm91bmQgZm9yIGJyb2tlbiBicm93c2VycyBsaWtlIGllXG5cbiAgaWYgKG51bGwgPT0gaW1nVyB8fCBudWxsID09IGltZ0gpIHtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICAgIGltZ1cgPSBpbWcuY2FjaGVkVyA9IGltZy53aWR0aCB8fCBpbWcub2Zmc2V0V2lkdGg7XG4gICAgaW1nSCA9IGltZy5jYWNoZWRIID0gaW1nLmhlaWdodCB8fCBpbWcub2Zmc2V0SGVpZ2h0O1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaW1nKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICB9XG5cbiAgdmFyIHcgPSBpbWdXO1xuICB2YXIgaCA9IGltZ0g7XG5cbiAgaWYgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC13aWR0aCcsICd2YWx1ZScsIGluZGV4KSAhPT0gJ2F1dG8nKSB7XG4gICAgaWYgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC13aWR0aCcsICd1bml0cycsIGluZGV4KSA9PT0gJyUnKSB7XG4gICAgICB3ID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLXdpZHRoJywgJ3BmVmFsdWUnLCBpbmRleCkgKiBub2RlVFc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHcgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtd2lkdGgnLCAncGZWYWx1ZScsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBpZiAoZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWhlaWdodCcsICd2YWx1ZScsIGluZGV4KSAhPT0gJ2F1dG8nKSB7XG4gICAgaWYgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1oZWlnaHQnLCAndW5pdHMnLCBpbmRleCkgPT09ICclJykge1xuICAgICAgaCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1oZWlnaHQnLCAncGZWYWx1ZScsIGluZGV4KSAqIG5vZGVUSDtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1oZWlnaHQnLCAncGZWYWx1ZScsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBpZiAodyA9PT0gMCB8fCBoID09PSAwKSB7XG4gICAgcmV0dXJuOyAvLyBubyBwb2ludCBpbiBkcmF3aW5nIGVtcHR5IGltYWdlIChhbmQgY2hyb21lIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UpXG4gIH1cblxuICBpZiAoZml0ID09PSAnY29udGFpbicpIHtcbiAgICB2YXIgc2NhbGUgPSBNYXRoLm1pbihub2RlVFcgLyB3LCBub2RlVEggLyBoKTtcbiAgICB3ICo9IHNjYWxlO1xuICAgIGggKj0gc2NhbGU7XG4gIH0gZWxzZSBpZiAoZml0ID09PSAnY292ZXInKSB7XG4gICAgdmFyIHNjYWxlID0gTWF0aC5tYXgobm9kZVRXIC8gdywgbm9kZVRIIC8gaCk7XG4gICAgdyAqPSBzY2FsZTtcbiAgICBoICo9IHNjYWxlO1xuICB9XG5cbiAgdmFyIHggPSBub2RlWCAtIG5vZGVUVyAvIDI7IC8vIGxlZnRcblxuICB2YXIgcG9zWFVuaXRzID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXgnLCAndW5pdHMnLCBpbmRleCk7XG4gIHZhciBwb3NYUGZWYWwgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtcG9zaXRpb24teCcsICdwZlZhbHVlJywgaW5kZXgpO1xuXG4gIGlmIChwb3NYVW5pdHMgPT09ICclJykge1xuICAgIHggKz0gKG5vZGVUVyAtIHcpICogcG9zWFBmVmFsO1xuICB9IGVsc2Uge1xuICAgIHggKz0gcG9zWFBmVmFsO1xuICB9XG5cbiAgdmFyIG9mZlhVbml0cyA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1vZmZzZXQteCcsICd1bml0cycsIGluZGV4KTtcbiAgdmFyIG9mZlhQZlZhbCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1vZmZzZXQteCcsICdwZlZhbHVlJywgaW5kZXgpO1xuXG4gIGlmIChvZmZYVW5pdHMgPT09ICclJykge1xuICAgIHggKz0gKG5vZGVUVyAtIHcpICogb2ZmWFBmVmFsO1xuICB9IGVsc2Uge1xuICAgIHggKz0gb2ZmWFBmVmFsO1xuICB9XG5cbiAgdmFyIHkgPSBub2RlWSAtIG5vZGVUSCAvIDI7IC8vIHRvcFxuXG4gIHZhciBwb3NZVW5pdHMgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtcG9zaXRpb24teScsICd1bml0cycsIGluZGV4KTtcbiAgdmFyIHBvc1lQZlZhbCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1wb3NpdGlvbi15JywgJ3BmVmFsdWUnLCBpbmRleCk7XG5cbiAgaWYgKHBvc1lVbml0cyA9PT0gJyUnKSB7XG4gICAgeSArPSAobm9kZVRIIC0gaCkgKiBwb3NZUGZWYWw7XG4gIH0gZWxzZSB7XG4gICAgeSArPSBwb3NZUGZWYWw7XG4gIH1cblxuICB2YXIgb2ZmWVVuaXRzID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLW9mZnNldC15JywgJ3VuaXRzJywgaW5kZXgpO1xuICB2YXIgb2ZmWVBmVmFsID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLW9mZnNldC15JywgJ3BmVmFsdWUnLCBpbmRleCk7XG5cbiAgaWYgKG9mZllVbml0cyA9PT0gJyUnKSB7XG4gICAgeSArPSAobm9kZVRIIC0gaCkgKiBvZmZZUGZWYWw7XG4gIH0gZWxzZSB7XG4gICAgeSArPSBvZmZZUGZWYWw7XG4gIH1cblxuICBpZiAocnMucGF0aENhY2hlKSB7XG4gICAgeCAtPSBub2RlWDtcbiAgICB5IC09IG5vZGVZO1xuICAgIG5vZGVYID0gMDtcbiAgICBub2RlWSA9IDA7XG4gIH1cblxuICB2YXIgZ0FscGhhID0gY29udGV4dC5nbG9iYWxBbHBoYTtcbiAgY29udGV4dC5nbG9iYWxBbHBoYSA9IGltZ09wYWNpdHk7XG4gIHZhciBzbW9vdGhpbmdFbmFibGVkID0gci5nZXRJbWdTbW9vdGhpbmcoY29udGV4dCk7XG4gIHZhciBpc1Ntb290aGluZ1N3aXRjaGVkID0gZmFsc2U7XG5cbiAgaWYgKHNtb290aCA9PT0gJ25vJyAmJiBzbW9vdGhpbmdFbmFibGVkKSB7XG4gICAgci5zZXRJbWdTbW9vdGhpbmcoY29udGV4dCwgZmFsc2UpO1xuICAgIGlzU21vb3RoaW5nU3dpdGNoZWQgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHNtb290aCA9PT0gJ3llcycgJiYgIXNtb290aGluZ0VuYWJsZWQpIHtcbiAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCB0cnVlKTtcbiAgICBpc1Ntb290aGluZ1N3aXRjaGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChyZXBlYXQgPT09ICduby1yZXBlYXQnKSB7XG4gICAgaWYgKHNob3VsZENsaXApIHtcbiAgICAgIGNvbnRleHQuc2F2ZSgpO1xuXG4gICAgICBpZiAocnMucGF0aENhY2hlKSB7XG4gICAgICAgIGNvbnRleHQuY2xpcChycy5wYXRoQ2FjaGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgci5ub2RlU2hhcGVzW3IuZ2V0Tm9kZVNoYXBlKG5vZGUpXS5kcmF3KGNvbnRleHQsIG5vZGVYLCBub2RlWSwgbm9kZVRXLCBub2RlVEgpO1xuICAgICAgICBjb250ZXh0LmNsaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByLnNhZmVEcmF3SW1hZ2UoY29udGV4dCwgaW1nLCAwLCAwLCBpbWdXLCBpbWdILCB4LCB5LCB3LCBoKTtcblxuICAgIGlmIChzaG91bGRDbGlwKSB7XG4gICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHBhdHRlcm4gPSBjb250ZXh0LmNyZWF0ZVBhdHRlcm4oaW1nLCByZXBlYXQpO1xuICAgIGNvbnRleHQuZmlsbFN0eWxlID0gcGF0dGVybjtcbiAgICByLm5vZGVTaGFwZXNbci5nZXROb2RlU2hhcGUobm9kZSldLmRyYXcoY29udGV4dCwgbm9kZVgsIG5vZGVZLCBub2RlVFcsIG5vZGVUSCk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoeCwgeSk7XG4gICAgY29udGV4dC5maWxsKCk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLXgsIC15KTtcbiAgfVxuXG4gIGNvbnRleHQuZ2xvYmFsQWxwaGEgPSBnQWxwaGE7XG5cbiAgaWYgKGlzU21vb3RoaW5nU3dpdGNoZWQpIHtcbiAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCBzbW9vdGhpbmdFbmFibGVkKTtcbiAgfVxufTtcblxudmFyIENScCQ0ID0ge307XG5cbkNScCQ0LmVsZVRleHRCaWdnZXJUaGFuTWluID0gZnVuY3Rpb24gKGVsZSwgc2NhbGUpIHtcbiAgaWYgKCFzY2FsZSkge1xuICAgIHZhciB6b29tID0gZWxlLmN5KCkuem9vbSgpO1xuICAgIHZhciBweFJhdGlvID0gdGhpcy5nZXRQaXhlbFJhdGlvKCk7XG4gICAgdmFyIGx2bCA9IE1hdGguY2VpbChsb2cyKHpvb20gKiBweFJhdGlvKSk7IC8vIHRoZSBlZmZlY3RpdmUgdGV4dHVyZSBsZXZlbFxuXG4gICAgc2NhbGUgPSBNYXRoLnBvdygyLCBsdmwpO1xuICB9XG5cbiAgdmFyIGNvbXB1dGVkU2l6ZSA9IGVsZS5wc3R5bGUoJ2ZvbnQtc2l6ZScpLnBmVmFsdWUgKiBzY2FsZTtcbiAgdmFyIG1pblNpemUgPSBlbGUucHN0eWxlKCdtaW4tem9vbWVkLWZvbnQtc2l6ZScpLnBmVmFsdWU7XG5cbiAgaWYgKGNvbXB1dGVkU2l6ZSA8IG1pblNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkNScCQ0LmRyYXdFbGVtZW50VGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIHNoaWZ0VG9PcmlnaW5XaXRoQmIsIGZvcmNlLCBwcmVmaXgpIHtcbiAgdmFyIHVzZUVsZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IHRydWU7XG4gIHZhciByID0gdGhpcztcblxuICBpZiAoZm9yY2UgPT0gbnVsbCkge1xuICAgIGlmICh1c2VFbGVPcGFjaXR5ICYmICFyLmVsZVRleHRCaWdnZXJUaGFuTWluKGVsZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZm9yY2UgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgIHZhciBsYWJlbCA9IGVsZS5wc3R5bGUoJ2xhYmVsJyk7XG5cbiAgICBpZiAoIWxhYmVsIHx8ICFsYWJlbC52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBqdXN0aWZpY2F0aW9uID0gci5nZXRMYWJlbEp1c3RpZmljYXRpb24oZWxlKTtcbiAgICBjb250ZXh0LnRleHRBbGlnbiA9IGp1c3RpZmljYXRpb247XG4gICAgY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbiAgfSBlbHNlIHtcbiAgICB2YXIgYmFkTGluZSA9IGVsZS5lbGVtZW50KCkuX3ByaXZhdGUucnNjcmF0Y2guYmFkTGluZTtcblxuICAgIHZhciBfbGFiZWwgPSBlbGUucHN0eWxlKCdsYWJlbCcpO1xuXG4gICAgdmFyIHNyY0xhYmVsID0gZWxlLnBzdHlsZSgnc291cmNlLWxhYmVsJyk7XG4gICAgdmFyIHRndExhYmVsID0gZWxlLnBzdHlsZSgndGFyZ2V0LWxhYmVsJyk7XG5cbiAgICBpZiAoYmFkTGluZSB8fCAoIV9sYWJlbCB8fCAhX2xhYmVsLnZhbHVlKSAmJiAoIXNyY0xhYmVsIHx8ICFzcmNMYWJlbC52YWx1ZSkgJiYgKCF0Z3RMYWJlbCB8fCAhdGd0TGFiZWwudmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29udGV4dC50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICBjb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xuICB9XG5cbiAgdmFyIGFwcGx5Um90YXRpb24gPSAhc2hpZnRUb09yaWdpbldpdGhCYjtcbiAgdmFyIGJiO1xuXG4gIGlmIChzaGlmdFRvT3JpZ2luV2l0aEJiKSB7XG4gICAgYmIgPSBzaGlmdFRvT3JpZ2luV2l0aEJiO1xuICAgIGNvbnRleHQudHJhbnNsYXRlKC1iYi54MSwgLWJiLnkxKTtcbiAgfVxuXG4gIGlmIChwcmVmaXggPT0gbnVsbCkge1xuICAgIHIuZHJhd1RleHQoY29udGV4dCwgZWxlLCBudWxsLCBhcHBseVJvdGF0aW9uLCB1c2VFbGVPcGFjaXR5KTtcblxuICAgIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICAgIHIuZHJhd1RleHQoY29udGV4dCwgZWxlLCAnc291cmNlJywgYXBwbHlSb3RhdGlvbiwgdXNlRWxlT3BhY2l0eSk7XG4gICAgICByLmRyYXdUZXh0KGNvbnRleHQsIGVsZSwgJ3RhcmdldCcsIGFwcGx5Um90YXRpb24sIHVzZUVsZU9wYWNpdHkpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByLmRyYXdUZXh0KGNvbnRleHQsIGVsZSwgcHJlZml4LCBhcHBseVJvdGF0aW9uLCB1c2VFbGVPcGFjaXR5KTtcbiAgfVxuXG4gIGlmIChzaGlmdFRvT3JpZ2luV2l0aEJiKSB7XG4gICAgY29udGV4dC50cmFuc2xhdGUoYmIueDEsIGJiLnkxKTtcbiAgfVxufTtcblxuQ1JwJDQuZ2V0Rm9udENhY2hlID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIGNhY2hlO1xuICB0aGlzLmZvbnRDYWNoZXMgPSB0aGlzLmZvbnRDYWNoZXMgfHwgW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZvbnRDYWNoZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjYWNoZSA9IHRoaXMuZm9udENhY2hlc1tpXTtcblxuICAgIGlmIChjYWNoZS5jb250ZXh0ID09PSBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gY2FjaGU7XG4gICAgfVxuICB9XG5cbiAgY2FjaGUgPSB7XG4gICAgY29udGV4dDogY29udGV4dFxuICB9O1xuICB0aGlzLmZvbnRDYWNoZXMucHVzaChjYWNoZSk7XG4gIHJldHVybiBjYWNoZTtcbn07IC8vIHNldCB1cCBjYW52YXMgY29udGV4dCB3aXRoIGZvbnRcbi8vIHJldHVybnMgdHJhbnNmb3JtZWQgdGV4dCBzdHJpbmdcblxuXG5DUnAkNC5zZXR1cFRleHRTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUpIHtcbiAgdmFyIHVzZUVsZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHRydWU7XG4gIC8vIEZvbnQgc3R5bGVcbiAgdmFyIGxhYmVsU3R5bGUgPSBlbGUucHN0eWxlKCdmb250LXN0eWxlJykuc3RyVmFsdWU7XG4gIHZhciBsYWJlbFNpemUgPSBlbGUucHN0eWxlKCdmb250LXNpemUnKS5wZlZhbHVlICsgJ3B4JztcbiAgdmFyIGxhYmVsRmFtaWx5ID0gZWxlLnBzdHlsZSgnZm9udC1mYW1pbHknKS5zdHJWYWx1ZTtcbiAgdmFyIGxhYmVsV2VpZ2h0ID0gZWxlLnBzdHlsZSgnZm9udC13ZWlnaHQnKS5zdHJWYWx1ZTtcbiAgdmFyIG9wYWNpdHkgPSB1c2VFbGVPcGFjaXR5ID8gZWxlLmVmZmVjdGl2ZU9wYWNpdHkoKSAqIGVsZS5wc3R5bGUoJ3RleHQtb3BhY2l0eScpLnZhbHVlIDogMTtcbiAgdmFyIG91dGxpbmVPcGFjaXR5ID0gZWxlLnBzdHlsZSgndGV4dC1vdXRsaW5lLW9wYWNpdHknKS52YWx1ZSAqIG9wYWNpdHk7XG4gIHZhciBjb2xvciA9IGVsZS5wc3R5bGUoJ2NvbG9yJykudmFsdWU7XG4gIHZhciBvdXRsaW5lQ29sb3IgPSBlbGUucHN0eWxlKCd0ZXh0LW91dGxpbmUtY29sb3InKS52YWx1ZTtcbiAgY29udGV4dC5mb250ID0gbGFiZWxTdHlsZSArICcgJyArIGxhYmVsV2VpZ2h0ICsgJyAnICsgbGFiZWxTaXplICsgJyAnICsgbGFiZWxGYW1pbHk7XG4gIGNvbnRleHQubGluZUpvaW4gPSAncm91bmQnOyAvLyBzbyB0ZXh0IG91dGxpbmVzIGFyZW4ndCBqYWdnZWRcblxuICB0aGlzLmNvbG9yRmlsbFN0eWxlKGNvbnRleHQsIGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIG9wYWNpdHkpO1xuICB0aGlzLmNvbG9yU3Ryb2tlU3R5bGUoY29udGV4dCwgb3V0bGluZUNvbG9yWzBdLCBvdXRsaW5lQ29sb3JbMV0sIG91dGxpbmVDb2xvclsyXSwgb3V0bGluZU9wYWNpdHkpO1xufTsgLy8gVE9ETyBlbnN1cmUgcmUtdXNlZFxuXG5cbmZ1bmN0aW9uIHJvdW5kUmVjdChjdHgsIHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgdmFyIHJhZGl1cyA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogNTtcbiAgY3R4LmJlZ2luUGF0aCgpO1xuICBjdHgubW92ZVRvKHggKyByYWRpdXMsIHkpO1xuICBjdHgubGluZVRvKHggKyB3aWR0aCAtIHJhZGl1cywgeSk7XG4gIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKHggKyB3aWR0aCwgeSwgeCArIHdpZHRoLCB5ICsgcmFkaXVzKTtcbiAgY3R4LmxpbmVUbyh4ICsgd2lkdGgsIHkgKyBoZWlnaHQgLSByYWRpdXMpO1xuICBjdHgucXVhZHJhdGljQ3VydmVUbyh4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHggKyB3aWR0aCAtIHJhZGl1cywgeSArIGhlaWdodCk7XG4gIGN0eC5saW5lVG8oeCArIHJhZGl1cywgeSArIGhlaWdodCk7XG4gIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKHgsIHkgKyBoZWlnaHQsIHgsIHkgKyBoZWlnaHQgLSByYWRpdXMpO1xuICBjdHgubGluZVRvKHgsIHkgKyByYWRpdXMpO1xuICBjdHgucXVhZHJhdGljQ3VydmVUbyh4LCB5LCB4ICsgcmFkaXVzLCB5KTtcbiAgY3R4LmNsb3NlUGF0aCgpO1xuICBjdHguZmlsbCgpO1xufVxuXG5DUnAkNC5nZXRUZXh0QW5nbGUgPSBmdW5jdGlvbiAoZWxlLCBwcmVmaXgpIHtcbiAgdmFyIHRoZXRhO1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciByc2NyYXRjaCA9IF9wLnJzY3JhdGNoO1xuICB2YXIgcGRhc2ggPSBwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJztcbiAgdmFyIHJvdGF0aW9uID0gZWxlLnBzdHlsZShwZGFzaCArICd0ZXh0LXJvdGF0aW9uJyk7XG4gIHZhciB0ZXh0QW5nbGUgPSBnZXRQcmVmaXhlZFByb3BlcnR5KHJzY3JhdGNoLCAnbGFiZWxBbmdsZScsIHByZWZpeCk7XG5cbiAgaWYgKHJvdGF0aW9uLnN0clZhbHVlID09PSAnYXV0b3JvdGF0ZScpIHtcbiAgICB0aGV0YSA9IGVsZS5pc0VkZ2UoKSA/IHRleHRBbmdsZSA6IDA7XG4gIH0gZWxzZSBpZiAocm90YXRpb24uc3RyVmFsdWUgPT09ICdub25lJykge1xuICAgIHRoZXRhID0gMDtcbiAgfSBlbHNlIHtcbiAgICB0aGV0YSA9IHJvdGF0aW9uLnBmVmFsdWU7XG4gIH1cblxuICByZXR1cm4gdGhldGE7XG59O1xuXG5DUnAkNC5kcmF3VGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIHByZWZpeCkge1xuICB2YXIgYXBwbHlSb3RhdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogdHJ1ZTtcbiAgdmFyIHVzZUVsZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IHRydWU7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgdmFyIHJzY3JhdGNoID0gX3AucnNjcmF0Y2g7XG4gIHZhciBwYXJlbnRPcGFjaXR5ID0gdXNlRWxlT3BhY2l0eSA/IGVsZS5lZmZlY3RpdmVPcGFjaXR5KCkgOiAxO1xuXG4gIGlmICh1c2VFbGVPcGFjaXR5ICYmIChwYXJlbnRPcGFjaXR5ID09PSAwIHx8IGVsZS5wc3R5bGUoJ3RleHQtb3BhY2l0eScpLnZhbHVlID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfSAvLyB1c2UgJ21haW4nIGFzIGFuIGFsaWFzIGZvciB0aGUgbWFpbiBsYWJlbCAoaS5lLiBudWxsIHByZWZpeClcblxuXG4gIGlmIChwcmVmaXggPT09ICdtYWluJykge1xuICAgIHByZWZpeCA9IG51bGw7XG4gIH1cblxuICB2YXIgdGV4dFggPSBnZXRQcmVmaXhlZFByb3BlcnR5KHJzY3JhdGNoLCAnbGFiZWxYJywgcHJlZml4KTtcbiAgdmFyIHRleHRZID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsWScsIHByZWZpeCk7XG4gIHZhciBvcmdUZXh0WCwgb3JnVGV4dFk7IC8vIHVzZWQgZm9yIHJvdGF0aW9uXG5cbiAgdmFyIHRleHQgPSB0aGlzLmdldExhYmVsVGV4dChlbGUsIHByZWZpeCk7XG5cbiAgaWYgKHRleHQgIT0gbnVsbCAmJiB0ZXh0ICE9PSAnJyAmJiAhaXNOYU4odGV4dFgpICYmICFpc05hTih0ZXh0WSkpIHtcbiAgICB0aGlzLnNldHVwVGV4dFN0eWxlKGNvbnRleHQsIGVsZSwgdXNlRWxlT3BhY2l0eSk7XG4gICAgdmFyIHBkYXNoID0gcHJlZml4ID8gcHJlZml4ICsgJy0nIDogJyc7XG4gICAgdmFyIHRleHRXID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsV2lkdGgnLCBwcmVmaXgpO1xuICAgIHZhciB0ZXh0SCA9IGdldFByZWZpeGVkUHJvcGVydHkocnNjcmF0Y2gsICdsYWJlbEhlaWdodCcsIHByZWZpeCk7XG4gICAgdmFyIG1hcmdpblggPSBlbGUucHN0eWxlKHBkYXNoICsgJ3RleHQtbWFyZ2luLXgnKS5wZlZhbHVlO1xuICAgIHZhciBtYXJnaW5ZID0gZWxlLnBzdHlsZShwZGFzaCArICd0ZXh0LW1hcmdpbi15JykucGZWYWx1ZTtcbiAgICB2YXIgaXNFZGdlID0gZWxlLmlzRWRnZSgpO1xuICAgIHZhciBoYWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LWhhbGlnbicpLnZhbHVlO1xuICAgIHZhciB2YWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LXZhbGlnbicpLnZhbHVlO1xuXG4gICAgaWYgKGlzRWRnZSkge1xuICAgICAgaGFsaWduID0gJ2NlbnRlcic7XG4gICAgICB2YWxpZ24gPSAnY2VudGVyJztcbiAgICB9XG5cbiAgICB0ZXh0WCArPSBtYXJnaW5YO1xuICAgIHRleHRZICs9IG1hcmdpblk7XG4gICAgdmFyIHRoZXRhO1xuXG4gICAgaWYgKCFhcHBseVJvdGF0aW9uKSB7XG4gICAgICB0aGV0YSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoZXRhID0gdGhpcy5nZXRUZXh0QW5nbGUoZWxlLCBwcmVmaXgpO1xuICAgIH1cblxuICAgIGlmICh0aGV0YSAhPT0gMCkge1xuICAgICAgb3JnVGV4dFggPSB0ZXh0WDtcbiAgICAgIG9yZ1RleHRZID0gdGV4dFk7XG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZShvcmdUZXh0WCwgb3JnVGV4dFkpO1xuICAgICAgY29udGV4dC5yb3RhdGUodGhldGEpO1xuICAgICAgdGV4dFggPSAwO1xuICAgICAgdGV4dFkgPSAwO1xuICAgIH1cblxuICAgIHN3aXRjaCAodmFsaWduKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgdGV4dFkgKz0gdGV4dEggLyAyO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgdGV4dFkgKz0gdGV4dEg7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBiYWNrZ3JvdW5kT3BhY2l0eSA9IGVsZS5wc3R5bGUoJ3RleHQtYmFja2dyb3VuZC1vcGFjaXR5JykudmFsdWU7XG4gICAgdmFyIGJvcmRlck9wYWNpdHkgPSBlbGUucHN0eWxlKCd0ZXh0LWJvcmRlci1vcGFjaXR5JykudmFsdWU7XG4gICAgdmFyIHRleHRCb3JkZXJXaWR0aCA9IGVsZS5wc3R5bGUoJ3RleHQtYm9yZGVyLXdpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgYmFja2dyb3VuZFBhZGRpbmcgPSBlbGUucHN0eWxlKCd0ZXh0LWJhY2tncm91bmQtcGFkZGluZycpLnBmVmFsdWU7XG5cbiAgICBpZiAoYmFja2dyb3VuZE9wYWNpdHkgPiAwIHx8IHRleHRCb3JkZXJXaWR0aCA+IDAgJiYgYm9yZGVyT3BhY2l0eSA+IDApIHtcbiAgICAgIHZhciBiZ1ggPSB0ZXh0WCAtIGJhY2tncm91bmRQYWRkaW5nO1xuXG4gICAgICBzd2l0Y2ggKGhhbGlnbikge1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICBiZ1ggLT0gdGV4dFc7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICBiZ1ggLT0gdGV4dFcgLyAyO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgYmdZID0gdGV4dFkgLSB0ZXh0SCAtIGJhY2tncm91bmRQYWRkaW5nO1xuICAgICAgdmFyIGJnVyA9IHRleHRXICsgMiAqIGJhY2tncm91bmRQYWRkaW5nO1xuICAgICAgdmFyIGJnSCA9IHRleHRIICsgMiAqIGJhY2tncm91bmRQYWRkaW5nO1xuXG4gICAgICBpZiAoYmFja2dyb3VuZE9wYWNpdHkgPiAwKSB7XG4gICAgICAgIHZhciB0ZXh0RmlsbCA9IGNvbnRleHQuZmlsbFN0eWxlO1xuICAgICAgICB2YXIgdGV4dEJhY2tncm91bmRDb2xvciA9IGVsZS5wc3R5bGUoJ3RleHQtYmFja2dyb3VuZC1jb2xvcicpLnZhbHVlO1xuICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICdyZ2JhKCcgKyB0ZXh0QmFja2dyb3VuZENvbG9yWzBdICsgJywnICsgdGV4dEJhY2tncm91bmRDb2xvclsxXSArICcsJyArIHRleHRCYWNrZ3JvdW5kQ29sb3JbMl0gKyAnLCcgKyBiYWNrZ3JvdW5kT3BhY2l0eSAqIHBhcmVudE9wYWNpdHkgKyAnKSc7XG4gICAgICAgIHZhciBzdHlsZVNoYXBlID0gZWxlLnBzdHlsZSgndGV4dC1iYWNrZ3JvdW5kLXNoYXBlJykuc3RyVmFsdWU7XG5cbiAgICAgICAgaWYgKHN0eWxlU2hhcGUuaW5kZXhPZigncm91bmQnKSA9PT0gMCkge1xuICAgICAgICAgIHJvdW5kUmVjdChjb250ZXh0LCBiZ1gsIGJnWSwgYmdXLCBiZ0gsIDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmdYLCBiZ1ksIGJnVywgYmdIKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gdGV4dEZpbGw7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZXh0Qm9yZGVyV2lkdGggPiAwICYmIGJvcmRlck9wYWNpdHkgPiAwKSB7XG4gICAgICAgIHZhciB0ZXh0U3Ryb2tlID0gY29udGV4dC5zdHJva2VTdHlsZTtcbiAgICAgICAgdmFyIHRleHRMaW5lV2lkdGggPSBjb250ZXh0LmxpbmVXaWR0aDtcbiAgICAgICAgdmFyIHRleHRCb3JkZXJDb2xvciA9IGVsZS5wc3R5bGUoJ3RleHQtYm9yZGVyLWNvbG9yJykudmFsdWU7XG4gICAgICAgIHZhciB0ZXh0Qm9yZGVyU3R5bGUgPSBlbGUucHN0eWxlKCd0ZXh0LWJvcmRlci1zdHlsZScpLnZhbHVlO1xuICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gJ3JnYmEoJyArIHRleHRCb3JkZXJDb2xvclswXSArICcsJyArIHRleHRCb3JkZXJDb2xvclsxXSArICcsJyArIHRleHRCb3JkZXJDb2xvclsyXSArICcsJyArIGJvcmRlck9wYWNpdHkgKiBwYXJlbnRPcGFjaXR5ICsgJyknO1xuICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRleHRCb3JkZXJXaWR0aDtcblxuICAgICAgICBpZiAoY29udGV4dC5zZXRMaW5lRGFzaCkge1xuICAgICAgICAgIC8vIGZvciB2ZXJ5IG91dG9mZGF0ZSBicm93c2Vyc1xuICAgICAgICAgIHN3aXRjaCAodGV4dEJvcmRlclN0eWxlKSB7XG4gICAgICAgICAgICBjYXNlICdkb3R0ZWQnOlxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFsxLCAxXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkYXNoZWQnOlxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFs0LCAyXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkb3VibGUnOlxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRleHRCb3JkZXJXaWR0aCAvIDQ7IC8vIDUwJSByZXNlcnZlZCBmb3Igd2hpdGUgYmV0d2VlbiB0aGUgdHdvIGJvcmRlcnNcblxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3NvbGlkJzpcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlUmVjdChiZ1gsIGJnWSwgYmdXLCBiZ0gpO1xuXG4gICAgICAgIGlmICh0ZXh0Qm9yZGVyU3R5bGUgPT09ICdkb3VibGUnKSB7XG4gICAgICAgICAgdmFyIHdoaXRlV2lkdGggPSB0ZXh0Qm9yZGVyV2lkdGggLyAyO1xuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlUmVjdChiZ1ggKyB3aGl0ZVdpZHRoLCBiZ1kgKyB3aGl0ZVdpZHRoLCBiZ1cgLSB3aGl0ZVdpZHRoICogMiwgYmdIIC0gd2hpdGVXaWR0aCAqIDIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAgICAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gdGV4dExpbmVXaWR0aDtcbiAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IHRleHRTdHJva2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxpbmVXaWR0aCA9IDIgKiBlbGUucHN0eWxlKCd0ZXh0LW91dGxpbmUtd2lkdGgnKS5wZlZhbHVlOyAvLyAqMiBiL2MgdGhlIHN0cm9rZSBpcyBkcmF3biBjZW50cmVkIG9uIHRoZSBtaWRkbGVcblxuICAgIGlmIChsaW5lV2lkdGggPiAwKSB7XG4gICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IGxpbmVXaWR0aDtcbiAgICB9XG5cbiAgICBpZiAoZWxlLnBzdHlsZSgndGV4dC13cmFwJykudmFsdWUgPT09ICd3cmFwJykge1xuICAgICAgdmFyIGxpbmVzID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsV3JhcENhY2hlZExpbmVzJywgcHJlZml4KTtcbiAgICAgIHZhciBsaW5lSGVpZ2h0ID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsTGluZUhlaWdodCcsIHByZWZpeCk7XG4gICAgICB2YXIgaGFsZlRleHRXID0gdGV4dFcgLyAyO1xuICAgICAgdmFyIGp1c3RpZmljYXRpb24gPSB0aGlzLmdldExhYmVsSnVzdGlmaWNhdGlvbihlbGUpO1xuXG4gICAgICBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2F1dG8nKSA7IGVsc2UgaWYgKGhhbGlnbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIC8vIGF1dG8ganVzdGlmaWNhdGlvbiA6IHJpZ2h0XG4gICAgICAgIGlmIChqdXN0aWZpY2F0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgICB0ZXh0WCArPSAtdGV4dFc7XG4gICAgICAgIH0gZWxzZSBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgICB0ZXh0WCArPSAtaGFsZlRleHRXO1xuICAgICAgICB9IC8vIGVsc2Ugc2FtZSBhcyBhdXRvXG5cbiAgICAgIH0gZWxzZSBpZiAoaGFsaWduID09PSAnY2VudGVyJykge1xuICAgICAgICAvLyBhdXRvIGp1c3RmaWNhdGlvbiA6IGNlbnRlclxuICAgICAgICBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgdGV4dFggKz0gLWhhbGZUZXh0VztcbiAgICAgICAgfSBlbHNlIGlmIChqdXN0aWZpY2F0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgdGV4dFggKz0gaGFsZlRleHRXO1xuICAgICAgICB9IC8vIGVsc2Ugc2FtZSBhcyBhdXRvXG5cbiAgICAgIH0gZWxzZSBpZiAoaGFsaWduID09PSAncmlnaHQnKSB7XG4gICAgICAgIC8vIGF1dG8ganVzdGlmaWNhdGlvbiA6IGxlZnRcbiAgICAgICAgaWYgKGp1c3RpZmljYXRpb24gPT09ICdjZW50ZXInKSB7XG4gICAgICAgICAgdGV4dFggKz0gaGFsZlRleHRXO1xuICAgICAgICB9IGVsc2UgaWYgKGp1c3RpZmljYXRpb24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgICB0ZXh0WCArPSB0ZXh0VztcbiAgICAgICAgfSAvLyBlbHNlIHNhbWUgYXMgYXV0b1xuXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAodmFsaWduKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgdGV4dFkgLT0gKGxpbmVzLmxlbmd0aCAtIDEpICogbGluZUhlaWdodDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIHRleHRZIC09IChsaW5lcy5sZW5ndGggLSAxKSAqIGxpbmVIZWlnaHQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgbGluZXMubGVuZ3RoOyBsKyspIHtcbiAgICAgICAgaWYgKGxpbmVXaWR0aCA+IDApIHtcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQobGluZXNbbF0sIHRleHRYLCB0ZXh0WSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LmZpbGxUZXh0KGxpbmVzW2xdLCB0ZXh0WCwgdGV4dFkpO1xuICAgICAgICB0ZXh0WSArPSBsaW5lSGVpZ2h0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobGluZVdpZHRoID4gMCkge1xuICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQodGV4dCwgdGV4dFgsIHRleHRZKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCB0ZXh0WCwgdGV4dFkpO1xuICAgIH1cblxuICAgIGlmICh0aGV0YSAhPT0gMCkge1xuICAgICAgY29udGV4dC5yb3RhdGUoLXRoZXRhKTtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1vcmdUZXh0WCwgLW9yZ1RleHRZKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qIGdsb2JhbCBQYXRoMkQgKi9cbnZhciBDUnAkNSA9IHt9O1xuXG5DUnAkNS5kcmF3Tm9kZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBub2RlLCBzaGlmdFRvT3JpZ2luV2l0aEJiKSB7XG4gIHZhciBkcmF3TGFiZWwgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHRydWU7XG4gIHZhciBzaG91bGREcmF3T3ZlcmxheSA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogdHJ1ZTtcbiAgdmFyIHNob3VsZERyYXdPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiB0cnVlO1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBub2RlV2lkdGgsIG5vZGVIZWlnaHQ7XG4gIHZhciBfcCA9IG5vZGUuX3ByaXZhdGU7XG4gIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICB2YXIgcG9zID0gbm9kZS5wb3NpdGlvbigpO1xuXG4gIGlmICghbnVtYmVyKHBvcy54KSB8fCAhbnVtYmVyKHBvcy55KSkge1xuICAgIHJldHVybjsgLy8gY2FuJ3QgZHJhdyBub2RlIHdpdGggdW5kZWZpbmVkIHBvc2l0aW9uXG4gIH1cblxuICBpZiAoc2hvdWxkRHJhd09wYWNpdHkgJiYgIW5vZGUudmlzaWJsZSgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGVsZU9wYWNpdHkgPSBzaG91bGREcmF3T3BhY2l0eSA/IG5vZGUuZWZmZWN0aXZlT3BhY2l0eSgpIDogMTtcbiAgdmFyIHVzZVBhdGhzID0gci51c2VQYXRocygpO1xuICB2YXIgcGF0aDtcbiAgdmFyIHBhdGhDYWNoZUhpdCA9IGZhbHNlO1xuICB2YXIgcGFkZGluZyA9IG5vZGUucGFkZGluZygpO1xuICBub2RlV2lkdGggPSBub2RlLndpZHRoKCkgKyAyICogcGFkZGluZztcbiAgbm9kZUhlaWdodCA9IG5vZGUuaGVpZ2h0KCkgKyAyICogcGFkZGluZzsgLy9cbiAgLy8gc2V0dXAgc2hpZnRcblxuICB2YXIgYmI7XG5cbiAgaWYgKHNoaWZ0VG9PcmlnaW5XaXRoQmIpIHtcbiAgICBiYiA9IHNoaWZ0VG9PcmlnaW5XaXRoQmI7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLWJiLngxLCAtYmIueTEpO1xuICB9IC8vXG4gIC8vIGxvYWQgYmcgaW1hZ2VcblxuXG4gIHZhciBiZ0ltZ1Byb3AgPSBub2RlLnBzdHlsZSgnYmFja2dyb3VuZC1pbWFnZScpO1xuICB2YXIgdXJscyA9IGJnSW1nUHJvcC52YWx1ZTtcbiAgdmFyIHVybERlZmluZWQgPSBuZXcgQXJyYXkodXJscy5sZW5ndGgpO1xuICB2YXIgaW1hZ2UgPSBuZXcgQXJyYXkodXJscy5sZW5ndGgpO1xuICB2YXIgbnVtSW1hZ2VzID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHVybHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdXJsID0gdXJsc1tpXTtcbiAgICB2YXIgZGVmZCA9IHVybERlZmluZWRbaV0gPSB1cmwgIT0gbnVsbCAmJiB1cmwgIT09ICdub25lJztcblxuICAgIGlmIChkZWZkKSB7XG4gICAgICB2YXIgYmdJbWdDcm9zc09yaWdpbiA9IG5vZGUuY3koKS5zdHlsZSgpLmdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1pbWFnZS1jcm9zc29yaWdpbicsICd2YWx1ZScsIGkpO1xuICAgICAgbnVtSW1hZ2VzKys7IC8vIGdldCBpbWFnZSwgYW5kIGlmIG5vdCBsb2FkZWQgdGhlbiBhc2sgdG8gcmVkcmF3IHdoZW4gbGF0ZXIgbG9hZGVkXG5cbiAgICAgIGltYWdlW2ldID0gci5nZXRDYWNoZWRJbWFnZSh1cmwsIGJnSW1nQ3Jvc3NPcmlnaW4sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3AuYmFja2dyb3VuZFRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICAgIG5vZGUuZW1pdEFuZE5vdGlmeSgnYmFja2dyb3VuZCcpO1xuICAgICAgfSk7XG4gICAgfVxuICB9IC8vXG4gIC8vIHNldHVwIHN0eWxlc1xuXG5cbiAgdmFyIGRhcmtuZXNzID0gbm9kZS5wc3R5bGUoJ2JhY2tncm91bmQtYmxhY2tlbicpLnZhbHVlO1xuICB2YXIgYm9yZGVyV2lkdGggPSBub2RlLnBzdHlsZSgnYm9yZGVyLXdpZHRoJykucGZWYWx1ZTtcbiAgdmFyIGJnT3BhY2l0eSA9IG5vZGUucHN0eWxlKCdiYWNrZ3JvdW5kLW9wYWNpdHknKS52YWx1ZSAqIGVsZU9wYWNpdHk7XG4gIHZhciBib3JkZXJDb2xvciA9IG5vZGUucHN0eWxlKCdib3JkZXItY29sb3InKS52YWx1ZTtcbiAgdmFyIGJvcmRlclN0eWxlID0gbm9kZS5wc3R5bGUoJ2JvcmRlci1zdHlsZScpLnZhbHVlO1xuICB2YXIgYm9yZGVyT3BhY2l0eSA9IG5vZGUucHN0eWxlKCdib3JkZXItb3BhY2l0eScpLnZhbHVlICogZWxlT3BhY2l0eTtcbiAgY29udGV4dC5saW5lSm9pbiA9ICdtaXRlcic7IC8vIHNvIGJvcmRlcnMgYXJlIHNxdWFyZSB3aXRoIHRoZSBub2RlIHNoYXBlXG5cbiAgdmFyIHNldHVwU2hhcGVDb2xvciA9IGZ1bmN0aW9uIHNldHVwU2hhcGVDb2xvcigpIHtcbiAgICB2YXIgYmdPcHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGJnT3BhY2l0eTtcbiAgICByLmVsZUZpbGxTdHlsZShjb250ZXh0LCBub2RlLCBiZ09weSk7XG4gIH07XG5cbiAgdmFyIHNldHVwQm9yZGVyQ29sb3IgPSBmdW5jdGlvbiBzZXR1cEJvcmRlckNvbG9yKCkge1xuICAgIHZhciBiZHJPcHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGJvcmRlck9wYWNpdHk7XG4gICAgci5jb2xvclN0cm9rZVN0eWxlKGNvbnRleHQsIGJvcmRlckNvbG9yWzBdLCBib3JkZXJDb2xvclsxXSwgYm9yZGVyQ29sb3JbMl0sIGJkck9weSk7XG4gIH07IC8vXG4gIC8vIHNldHVwIHNoYXBlXG5cblxuICB2YXIgc3R5bGVTaGFwZSA9IG5vZGUucHN0eWxlKCdzaGFwZScpLnN0clZhbHVlO1xuICB2YXIgc2hhcGVQdHMgPSBub2RlLnBzdHlsZSgnc2hhcGUtcG9seWdvbi1wb2ludHMnKS5wZlZhbHVlO1xuXG4gIGlmICh1c2VQYXRocykge1xuICAgIGNvbnRleHQudHJhbnNsYXRlKHBvcy54LCBwb3MueSk7XG4gICAgdmFyIHBhdGhDYWNoZSA9IHIubm9kZVBhdGhDYWNoZSA9IHIubm9kZVBhdGhDYWNoZSB8fCBbXTtcbiAgICB2YXIga2V5ID0gaGFzaFN0cmluZ3Moc3R5bGVTaGFwZSA9PT0gJ3BvbHlnb24nID8gc3R5bGVTaGFwZSArICcsJyArIHNoYXBlUHRzLmpvaW4oJywnKSA6IHN0eWxlU2hhcGUsICcnICsgbm9kZUhlaWdodCwgJycgKyBub2RlV2lkdGgpO1xuICAgIHZhciBjYWNoZWRQYXRoID0gcGF0aENhY2hlW2tleV07XG5cbiAgICBpZiAoY2FjaGVkUGF0aCAhPSBudWxsKSB7XG4gICAgICBwYXRoID0gY2FjaGVkUGF0aDtcbiAgICAgIHBhdGhDYWNoZUhpdCA9IHRydWU7XG4gICAgICBycy5wYXRoQ2FjaGUgPSBwYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoID0gbmV3IFBhdGgyRCgpO1xuICAgICAgcGF0aENhY2hlW2tleV0gPSBycy5wYXRoQ2FjaGUgPSBwYXRoO1xuICAgIH1cbiAgfVxuXG4gIHZhciBkcmF3U2hhcGUgPSBmdW5jdGlvbiBkcmF3U2hhcGUoKSB7XG4gICAgaWYgKCFwYXRoQ2FjaGVIaXQpIHtcbiAgICAgIHZhciBucG9zID0gcG9zO1xuXG4gICAgICBpZiAodXNlUGF0aHMpIHtcbiAgICAgICAgbnBvcyA9IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDBcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgci5ub2RlU2hhcGVzW3IuZ2V0Tm9kZVNoYXBlKG5vZGUpXS5kcmF3KHBhdGggfHwgY29udGV4dCwgbnBvcy54LCBucG9zLnksIG5vZGVXaWR0aCwgbm9kZUhlaWdodCk7XG4gICAgfVxuXG4gICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICBjb250ZXh0LmZpbGwocGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd0ltYWdlcyA9IGZ1bmN0aW9uIGRyYXdJbWFnZXMoKSB7XG4gICAgdmFyIG5vZGVPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBlbGVPcGFjaXR5O1xuICAgIHZhciBpbnNpZGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gICAgdmFyIHByZXZCZ2luZyA9IF9wLmJhY2tncm91bmRpbmc7XG4gICAgdmFyIHRvdGFsQ29tcGxldGVkID0gMDtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBpbWFnZS5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBiZ0NvbnRhaW5tZW50ID0gbm9kZS5jeSgpLnN0eWxlKCkuZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWltYWdlLWNvbnRhaW5tZW50JywgJ3ZhbHVlJywgX2kpO1xuXG4gICAgICBpZiAoaW5zaWRlICYmIGJnQ29udGFpbm1lbnQgPT09ICdvdmVyJyB8fCAhaW5zaWRlICYmIGJnQ29udGFpbm1lbnQgPT09ICdpbnNpZGUnKSB7XG4gICAgICAgIHRvdGFsQ29tcGxldGVkKys7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodXJsRGVmaW5lZFtfaV0gJiYgaW1hZ2VbX2ldLmNvbXBsZXRlICYmICFpbWFnZVtfaV0uZXJyb3IpIHtcbiAgICAgICAgdG90YWxDb21wbGV0ZWQrKztcbiAgICAgICAgci5kcmF3SW5zY3JpYmVkSW1hZ2UoY29udGV4dCwgaW1hZ2VbX2ldLCBub2RlLCBfaSwgbm9kZU9wYWNpdHkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9wLmJhY2tncm91bmRpbmcgPSAhKHRvdGFsQ29tcGxldGVkID09PSBudW1JbWFnZXMpO1xuXG4gICAgaWYgKHByZXZCZ2luZyAhPT0gX3AuYmFja2dyb3VuZGluZykge1xuICAgICAgLy8gdXBkYXRlIHN0eWxlIGIvYyA6YmFja2dyb3VuZGluZyBzdGF0ZSBjaGFuZ2VkXG4gICAgICBub2RlLnVwZGF0ZVN0eWxlKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGRyYXdQaWUgPSBmdW5jdGlvbiBkcmF3UGllKCkge1xuICAgIHZhciByZWRyYXdTaGFwZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZmFsc2U7XG4gICAgdmFyIHBpZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGVsZU9wYWNpdHk7XG5cbiAgICBpZiAoci5oYXNQaWUobm9kZSkpIHtcbiAgICAgIHIuZHJhd1BpZShjb250ZXh0LCBub2RlLCBwaWVPcGFjaXR5KTsgLy8gcmVkcmF3L3Jlc3RvcmUgcGF0aCBpZiBzdGVwcyBhZnRlciBwaWUgbmVlZCBpdFxuXG4gICAgICBpZiAocmVkcmF3U2hhcGUpIHtcbiAgICAgICAgaWYgKCF1c2VQYXRocykge1xuICAgICAgICAgIHIubm9kZVNoYXBlc1tyLmdldE5vZGVTaGFwZShub2RlKV0uZHJhdyhjb250ZXh0LCBwb3MueCwgcG9zLnksIG5vZGVXaWR0aCwgbm9kZUhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGRhcmtlbiA9IGZ1bmN0aW9uIGRhcmtlbigpIHtcbiAgICB2YXIgZGFya2VuT3BhY2l0eSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZWxlT3BhY2l0eTtcbiAgICB2YXIgb3BhY2l0eSA9IChkYXJrbmVzcyA+IDAgPyBkYXJrbmVzcyA6IC1kYXJrbmVzcykgKiBkYXJrZW5PcGFjaXR5O1xuICAgIHZhciBjID0gZGFya25lc3MgPiAwID8gMCA6IDI1NTtcblxuICAgIGlmIChkYXJrbmVzcyAhPT0gMCkge1xuICAgICAgci5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBjLCBjLCBjLCBvcGFjaXR5KTtcblxuICAgICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAgIGNvbnRleHQuZmlsbChwYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd0JvcmRlciA9IGZ1bmN0aW9uIGRyYXdCb3JkZXIoKSB7XG4gICAgaWYgKGJvcmRlcldpZHRoID4gMCkge1xuICAgICAgY29udGV4dC5saW5lV2lkdGggPSBib3JkZXJXaWR0aDtcbiAgICAgIGNvbnRleHQubGluZUNhcCA9ICdidXR0JztcblxuICAgICAgaWYgKGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAgICAgLy8gZm9yIHZlcnkgb3V0b2ZkYXRlIGJyb3dzZXJzXG4gICAgICAgIHN3aXRjaCAoYm9yZGVyU3R5bGUpIHtcbiAgICAgICAgICBjYXNlICdkb3R0ZWQnOlxuICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbMSwgMV0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdkYXNoZWQnOlxuICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbNCwgMl0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdzb2xpZCc6XG4gICAgICAgICAgY2FzZSAnZG91YmxlJzpcbiAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKHBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJvcmRlclN0eWxlID09PSAnZG91YmxlJykge1xuICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IGJvcmRlcldpZHRoIC8gMztcbiAgICAgICAgdmFyIGdjbyA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuICAgICAgICBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdXQnO1xuXG4gICAgICAgIGlmICh1c2VQYXRocykge1xuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKHBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IGdjbztcbiAgICAgIH0gLy8gcmVzZXQgaW4gY2FzZSB3ZSBjaGFuZ2VkIHRoZSBib3JkZXIgc3R5bGVcblxuXG4gICAgICBpZiAoY29udGV4dC5zZXRMaW5lRGFzaCkge1xuICAgICAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZhciBkcmF3T3ZlcmxheSA9IGZ1bmN0aW9uIGRyYXdPdmVybGF5KCkge1xuICAgIGlmIChzaG91bGREcmF3T3ZlcmxheSkge1xuICAgICAgci5kcmF3Tm9kZU92ZXJsYXkoY29udGV4dCwgbm9kZSwgcG9zLCBub2RlV2lkdGgsIG5vZGVIZWlnaHQpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd1VuZGVybGF5ID0gZnVuY3Rpb24gZHJhd1VuZGVybGF5KCkge1xuICAgIGlmIChzaG91bGREcmF3T3ZlcmxheSkge1xuICAgICAgci5kcmF3Tm9kZVVuZGVybGF5KGNvbnRleHQsIG5vZGUsIHBvcywgbm9kZVdpZHRoLCBub2RlSGVpZ2h0KTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGRyYXdUZXh0ID0gZnVuY3Rpb24gZHJhd1RleHQoKSB7XG4gICAgci5kcmF3RWxlbWVudFRleHQoY29udGV4dCwgbm9kZSwgbnVsbCwgZHJhd0xhYmVsKTtcbiAgfTtcblxuICB2YXIgZ2hvc3QgPSBub2RlLnBzdHlsZSgnZ2hvc3QnKS52YWx1ZSA9PT0gJ3llcyc7XG5cbiAgaWYgKGdob3N0KSB7XG4gICAgdmFyIGd4ID0gbm9kZS5wc3R5bGUoJ2dob3N0LW9mZnNldC14JykucGZWYWx1ZTtcbiAgICB2YXIgZ3kgPSBub2RlLnBzdHlsZSgnZ2hvc3Qtb2Zmc2V0LXknKS5wZlZhbHVlO1xuICAgIHZhciBnaG9zdE9wYWNpdHkgPSBub2RlLnBzdHlsZSgnZ2hvc3Qtb3BhY2l0eScpLnZhbHVlO1xuICAgIHZhciBlZmZHaG9zdE9wYWNpdHkgPSBnaG9zdE9wYWNpdHkgKiBlbGVPcGFjaXR5O1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGd4LCBneSk7XG4gICAgc2V0dXBTaGFwZUNvbG9yKGdob3N0T3BhY2l0eSAqIGJnT3BhY2l0eSk7XG4gICAgZHJhd1NoYXBlKCk7XG4gICAgZHJhd0ltYWdlcyhlZmZHaG9zdE9wYWNpdHksIHRydWUpO1xuICAgIHNldHVwQm9yZGVyQ29sb3IoZ2hvc3RPcGFjaXR5ICogYm9yZGVyT3BhY2l0eSk7XG4gICAgZHJhd0JvcmRlcigpO1xuICAgIGRyYXdQaWUoZGFya25lc3MgIT09IDAgfHwgYm9yZGVyV2lkdGggIT09IDApO1xuICAgIGRyYXdJbWFnZXMoZWZmR2hvc3RPcGFjaXR5LCBmYWxzZSk7XG4gICAgZGFya2VuKGVmZkdob3N0T3BhY2l0eSk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLWd4LCAtZ3kpO1xuICB9XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLXBvcy54LCAtcG9zLnkpO1xuICB9XG5cbiAgZHJhd1VuZGVybGF5KCk7XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgY29udGV4dC50cmFuc2xhdGUocG9zLngsIHBvcy55KTtcbiAgfVxuXG4gIHNldHVwU2hhcGVDb2xvcigpO1xuICBkcmF3U2hhcGUoKTtcbiAgZHJhd0ltYWdlcyhlbGVPcGFjaXR5LCB0cnVlKTtcbiAgc2V0dXBCb3JkZXJDb2xvcigpO1xuICBkcmF3Qm9yZGVyKCk7XG4gIGRyYXdQaWUoZGFya25lc3MgIT09IDAgfHwgYm9yZGVyV2lkdGggIT09IDApO1xuICBkcmF3SW1hZ2VzKGVsZU9wYWNpdHksIGZhbHNlKTtcbiAgZGFya2VuKCk7XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLXBvcy54LCAtcG9zLnkpO1xuICB9XG5cbiAgZHJhd1RleHQoKTtcbiAgZHJhd092ZXJsYXkoKTsgLy9cbiAgLy8gY2xlYW4gdXAgc2hpZnRcblxuICBpZiAoc2hpZnRUb09yaWdpbldpdGhCYikge1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGJiLngxLCBiYi55MSk7XG4gIH1cbn07XG5cbnZhciBkcmF3Tm9kZU92ZXJsYXlVbmRlcmxheSA9IGZ1bmN0aW9uIGRyYXdOb2RlT3ZlcmxheVVuZGVybGF5KG92ZXJsYXlPclVuZGVybGF5KSB7XG4gIGlmICghWydvdmVybGF5JywgJ3VuZGVybGF5J10uaW5jbHVkZXMob3ZlcmxheU9yVW5kZXJsYXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0YXRlJyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGNvbnRleHQsIG5vZGUsIHBvcywgbm9kZVdpZHRoLCBub2RlSGVpZ2h0KSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuXG4gICAgaWYgKCFub2RlLnZpc2libGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBwYWRkaW5nID0gbm9kZS5wc3R5bGUoXCJcIi5jb25jYXQob3ZlcmxheU9yVW5kZXJsYXksIFwiLXBhZGRpbmdcIikpLnBmVmFsdWU7XG4gICAgdmFyIG9wYWNpdHkgPSBub2RlLnBzdHlsZShcIlwiLmNvbmNhdChvdmVybGF5T3JVbmRlcmxheSwgXCItb3BhY2l0eVwiKSkudmFsdWU7XG4gICAgdmFyIGNvbG9yID0gbm9kZS5wc3R5bGUoXCJcIi5jb25jYXQob3ZlcmxheU9yVW5kZXJsYXksIFwiLWNvbG9yXCIpKS52YWx1ZTtcbiAgICB2YXIgc2hhcGUgPSBub2RlLnBzdHlsZShcIlwiLmNvbmNhdChvdmVybGF5T3JVbmRlcmxheSwgXCItc2hhcGVcIikpLnZhbHVlO1xuXG4gICAgaWYgKG9wYWNpdHkgPiAwKSB7XG4gICAgICBwb3MgPSBwb3MgfHwgbm9kZS5wb3NpdGlvbigpO1xuXG4gICAgICBpZiAobm9kZVdpZHRoID09IG51bGwgfHwgbm9kZUhlaWdodCA9PSBudWxsKSB7XG4gICAgICAgIHZhciBfcGFkZGluZyA9IG5vZGUucGFkZGluZygpO1xuXG4gICAgICAgIG5vZGVXaWR0aCA9IG5vZGUud2lkdGgoKSArIDIgKiBfcGFkZGluZztcbiAgICAgICAgbm9kZUhlaWdodCA9IG5vZGUuaGVpZ2h0KCkgKyAyICogX3BhZGRpbmc7XG4gICAgICB9XG5cbiAgICAgIHIuY29sb3JGaWxsU3R5bGUoY29udGV4dCwgY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgb3BhY2l0eSk7XG4gICAgICByLm5vZGVTaGFwZXNbc2hhcGVdLmRyYXcoY29udGV4dCwgcG9zLngsIHBvcy55LCBub2RlV2lkdGggKyBwYWRkaW5nICogMiwgbm9kZUhlaWdodCArIHBhZGRpbmcgKiAyKTtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIH1cbiAgfTtcbn07XG5cbkNScCQ1LmRyYXdOb2RlT3ZlcmxheSA9IGRyYXdOb2RlT3ZlcmxheVVuZGVybGF5KCdvdmVybGF5Jyk7XG5DUnAkNS5kcmF3Tm9kZVVuZGVybGF5ID0gZHJhd05vZGVPdmVybGF5VW5kZXJsYXkoJ3VuZGVybGF5Jyk7IC8vIGRvZXMgdGhlIG5vZGUgaGF2ZSBhdCBsZWFzdCBvbmUgcGllIHBpZWNlP1xuXG5DUnAkNS5oYXNQaWUgPSBmdW5jdGlvbiAobm9kZSkge1xuICBub2RlID0gbm9kZVswXTsgLy8gZW5zdXJlIGVsZSByZWZcblxuICByZXR1cm4gbm9kZS5fcHJpdmF0ZS5oYXNQaWU7XG59O1xuXG5DUnAkNS5kcmF3UGllID0gZnVuY3Rpb24gKGNvbnRleHQsIG5vZGUsIG5vZGVPcGFjaXR5LCBwb3MpIHtcbiAgbm9kZSA9IG5vZGVbMF07IC8vIGVuc3VyZSBlbGUgcmVmXG5cbiAgcG9zID0gcG9zIHx8IG5vZGUucG9zaXRpb24oKTtcbiAgdmFyIGN5U3R5bGUgPSBub2RlLmN5KCkuc3R5bGUoKTtcbiAgdmFyIHBpZVNpemUgPSBub2RlLnBzdHlsZSgncGllLXNpemUnKTtcbiAgdmFyIHggPSBwb3MueDtcbiAgdmFyIHkgPSBwb3MueTtcbiAgdmFyIG5vZGVXID0gbm9kZS53aWR0aCgpO1xuICB2YXIgbm9kZUggPSBub2RlLmhlaWdodCgpO1xuICB2YXIgcmFkaXVzID0gTWF0aC5taW4obm9kZVcsIG5vZGVIKSAvIDI7IC8vIG11c3QgZml0IGluIG5vZGVcblxuICB2YXIgbGFzdFBlcmNlbnQgPSAwOyAvLyB3aGF0ICUgdG8gY29udGludWUgZHJhd2luZyBwaWUgc2xpY2VzIGZyb20gb24gWzAsIDFdXG5cbiAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpO1xuXG4gIGlmICh1c2VQYXRocykge1xuICAgIHggPSAwO1xuICAgIHkgPSAwO1xuICB9XG5cbiAgaWYgKHBpZVNpemUudW5pdHMgPT09ICclJykge1xuICAgIHJhZGl1cyA9IHJhZGl1cyAqIHBpZVNpemUucGZWYWx1ZTtcbiAgfSBlbHNlIGlmIChwaWVTaXplLnBmVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJhZGl1cyA9IHBpZVNpemUucGZWYWx1ZSAvIDI7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMTsgaSA8PSBjeVN0eWxlLnBpZUJhY2tncm91bmROOyBpKyspIHtcbiAgICAvLyAxLi5OXG4gICAgdmFyIHNpemUgPSBub2RlLnBzdHlsZSgncGllLScgKyBpICsgJy1iYWNrZ3JvdW5kLXNpemUnKS52YWx1ZTtcbiAgICB2YXIgY29sb3IgPSBub2RlLnBzdHlsZSgncGllLScgKyBpICsgJy1iYWNrZ3JvdW5kLWNvbG9yJykudmFsdWU7XG4gICAgdmFyIG9wYWNpdHkgPSBub2RlLnBzdHlsZSgncGllLScgKyBpICsgJy1iYWNrZ3JvdW5kLW9wYWNpdHknKS52YWx1ZSAqIG5vZGVPcGFjaXR5O1xuICAgIHZhciBwZXJjZW50ID0gc2l6ZSAvIDEwMDsgLy8gbWFwIGludGVnZXIgcmFuZ2UgWzAsIDEwMF0gdG8gWzAsIDFdXG4gICAgLy8gcGVyY2VudCBjYW4ndCBwdXNoIGJleW9uZCAxXG5cbiAgICBpZiAocGVyY2VudCArIGxhc3RQZXJjZW50ID4gMSkge1xuICAgICAgcGVyY2VudCA9IDEgLSBsYXN0UGVyY2VudDtcbiAgICB9XG5cbiAgICB2YXIgYW5nbGVTdGFydCA9IDEuNSAqIE1hdGguUEkgKyAyICogTWF0aC5QSSAqIGxhc3RQZXJjZW50OyAvLyBzdGFydCBhdCAxMiBvJ2Nsb2NrIGFuZCBnbyBjbG9ja3dpc2VcblxuICAgIHZhciBhbmdsZURlbHRhID0gMiAqIE1hdGguUEkgKiBwZXJjZW50O1xuICAgIHZhciBhbmdsZUVuZCA9IGFuZ2xlU3RhcnQgKyBhbmdsZURlbHRhOyAvLyBpZ25vcmUgaWZcbiAgICAvLyAtIHplcm8gc2l6ZVxuICAgIC8vIC0gd2UncmUgYWxyZWFkeSBiZXlvbmQgdGhlIGZ1bGwgY2lyY2xlXG4gICAgLy8gLSBhZGRpbmcgdGhlIGN1cnJlbnQgc2xpY2Ugd291bGQgZ28gYmV5b25kIHRoZSBmdWxsIGNpcmNsZVxuXG4gICAgaWYgKHNpemUgPT09IDAgfHwgbGFzdFBlcmNlbnQgPj0gMSB8fCBsYXN0UGVyY2VudCArIHBlcmNlbnQgPiAxKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIGNvbnRleHQubW92ZVRvKHgsIHkpO1xuICAgIGNvbnRleHQuYXJjKHgsIHksIHJhZGl1cywgYW5nbGVTdGFydCwgYW5nbGVFbmQpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgICBjb250ZXh0LmZpbGwoKTtcbiAgICBsYXN0UGVyY2VudCArPSBwZXJjZW50O1xuICB9XG59O1xuXG52YXIgQ1JwJDYgPSB7fTtcbnZhciBtb3Rpb25CbHVyRGVsYXkgPSAxMDA7IC8vIHZhciBpc0ZpcmVmb3ggPSB0eXBlb2YgSW5zdGFsbFRyaWdnZXIgIT09ICd1bmRlZmluZWQnO1xuXG5DUnAkNi5nZXRQaXhlbFJhdGlvID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY29udGV4dCA9IHRoaXMuZGF0YS5jb250ZXh0c1swXTtcblxuICBpZiAodGhpcy5mb3JjZWRQaXhlbFJhdGlvICE9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JjZWRQaXhlbFJhdGlvO1xuICB9XG5cbiAgdmFyIGJhY2tpbmdTdG9yZSA9IGNvbnRleHQuYmFja2luZ1N0b3JlUGl4ZWxSYXRpbyB8fCBjb250ZXh0LndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW8gfHwgY29udGV4dC5tb3pCYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IGNvbnRleHQubXNCYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IGNvbnRleHQub0JhY2tpbmdTdG9yZVBpeGVsUmF0aW8gfHwgY29udGV4dC5iYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiAod2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMSkgLyBiYWNraW5nU3RvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbn07XG5cbkNScCQ2LnBhaW50Q2FjaGUgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICB2YXIgY2FjaGVzID0gdGhpcy5wYWludENhY2hlcyA9IHRoaXMucGFpbnRDYWNoZXMgfHwgW107XG4gIHZhciBuZWVkVG9DcmVhdGVDYWNoZSA9IHRydWU7XG4gIHZhciBjYWNoZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNhY2hlcy5sZW5ndGg7IGkrKykge1xuICAgIGNhY2hlID0gY2FjaGVzW2ldO1xuXG4gICAgaWYgKGNhY2hlLmNvbnRleHQgPT09IGNvbnRleHQpIHtcbiAgICAgIG5lZWRUb0NyZWF0ZUNhY2hlID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAobmVlZFRvQ3JlYXRlQ2FjaGUpIHtcbiAgICBjYWNoZSA9IHtcbiAgICAgIGNvbnRleHQ6IGNvbnRleHRcbiAgICB9O1xuICAgIGNhY2hlcy5wdXNoKGNhY2hlKTtcbiAgfVxuXG4gIHJldHVybiBjYWNoZTtcbn07XG5cbkNScCQ2LmNyZWF0ZUdyYWRpZW50U3R5bGVGb3IgPSBmdW5jdGlvbiAoY29udGV4dCwgc2hhcGVTdHlsZU5hbWUsIGVsZSwgZmlsbCwgb3BhY2l0eSkge1xuICB2YXIgZ3JhZGllbnRTdHlsZTtcbiAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpO1xuICB2YXIgY29sb3JzID0gZWxlLnBzdHlsZShzaGFwZVN0eWxlTmFtZSArICctZ3JhZGllbnQtc3RvcC1jb2xvcnMnKS52YWx1ZSxcbiAgICAgIHBvc2l0aW9ucyA9IGVsZS5wc3R5bGUoc2hhcGVTdHlsZU5hbWUgKyAnLWdyYWRpZW50LXN0b3AtcG9zaXRpb25zJykucGZWYWx1ZTtcblxuICBpZiAoZmlsbCA9PT0gJ3JhZGlhbC1ncmFkaWVudCcpIHtcbiAgICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgICB2YXIgc3RhcnQgPSBlbGUuc291cmNlRW5kcG9pbnQoKSxcbiAgICAgICAgICBlbmQgPSBlbGUudGFyZ2V0RW5kcG9pbnQoKSxcbiAgICAgICAgICBtaWQgPSBlbGUubWlkcG9pbnQoKTtcbiAgICAgIHZhciBkMSA9IGRpc3Qoc3RhcnQsIG1pZCk7XG4gICAgICB2YXIgZDIgPSBkaXN0KGVuZCwgbWlkKTtcbiAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZVJhZGlhbEdyYWRpZW50KG1pZC54LCBtaWQueSwgMCwgbWlkLngsIG1pZC55LCBNYXRoLm1heChkMSwgZDIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBvcyA9IHVzZVBhdGhzID8ge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwXG4gICAgICB9IDogZWxlLnBvc2l0aW9uKCksXG4gICAgICAgICAgd2lkdGggPSBlbGUucGFkZGVkV2lkdGgoKSxcbiAgICAgICAgICBoZWlnaHQgPSBlbGUucGFkZGVkSGVpZ2h0KCk7XG4gICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVSYWRpYWxHcmFkaWVudChwb3MueCwgcG9zLnksIDAsIHBvcy54LCBwb3MueSwgTWF0aC5tYXgod2lkdGgsIGhlaWdodCkpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgICB2YXIgX3N0YXJ0ID0gZWxlLnNvdXJjZUVuZHBvaW50KCksXG4gICAgICAgICAgX2VuZCA9IGVsZS50YXJnZXRFbmRwb2ludCgpO1xuXG4gICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfc3RhcnQueCwgX3N0YXJ0LnksIF9lbmQueCwgX2VuZC55KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9wb3MgPSB1c2VQYXRocyA/IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfSA6IGVsZS5wb3NpdGlvbigpLFxuICAgICAgICAgIF93aWR0aCA9IGVsZS5wYWRkZWRXaWR0aCgpLFxuICAgICAgICAgIF9oZWlnaHQgPSBlbGUucGFkZGVkSGVpZ2h0KCksXG4gICAgICAgICAgaGFsZldpZHRoID0gX3dpZHRoIC8gMixcbiAgICAgICAgICBoYWxmSGVpZ2h0ID0gX2hlaWdodCAvIDI7XG5cbiAgICAgIHZhciBkaXJlY3Rpb24gPSBlbGUucHN0eWxlKCdiYWNrZ3JvdW5kLWdyYWRpZW50LWRpcmVjdGlvbicpLnZhbHVlO1xuXG4gICAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgICBjYXNlICd0by1ib3R0b20nOlxuICAgICAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KF9wb3MueCwgX3Bvcy55IC0gaGFsZkhlaWdodCwgX3Bvcy54LCBfcG9zLnkgKyBoYWxmSGVpZ2h0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0by10b3AnOlxuICAgICAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KF9wb3MueCwgX3Bvcy55ICsgaGFsZkhlaWdodCwgX3Bvcy54LCBfcG9zLnkgLSBoYWxmSGVpZ2h0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0by1sZWZ0JzpcbiAgICAgICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSwgX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvLXJpZ2h0JzpcbiAgICAgICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfcG9zLnggLSBoYWxmV2lkdGgsIF9wb3MueSwgX3Bvcy54ICsgaGFsZldpZHRoLCBfcG9zLnkpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvLWJvdHRvbS1yaWdodCc6XG4gICAgICAgIGNhc2UgJ3RvLXJpZ2h0LWJvdHRvbSc6XG4gICAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkgLSBoYWxmSGVpZ2h0LCBfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSArIGhhbGZIZWlnaHQpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvLXRvcC1yaWdodCc6XG4gICAgICAgIGNhc2UgJ3RvLXJpZ2h0LXRvcCc6XG4gICAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkgKyBoYWxmSGVpZ2h0LCBfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSAtIGhhbGZIZWlnaHQpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvLWJvdHRvbS1sZWZ0JzpcbiAgICAgICAgY2FzZSAndG8tbGVmdC1ib3R0b20nOlxuICAgICAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KF9wb3MueCArIGhhbGZXaWR0aCwgX3Bvcy55IC0gaGFsZkhlaWdodCwgX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkgKyBoYWxmSGVpZ2h0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0by10b3AtbGVmdCc6XG4gICAgICAgIGNhc2UgJ3RvLWxlZnQtdG9wJzpcbiAgICAgICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSArIGhhbGZIZWlnaHQsIF9wb3MueCAtIGhhbGZXaWR0aCwgX3Bvcy55IC0gaGFsZkhlaWdodCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFncmFkaWVudFN0eWxlKSByZXR1cm4gbnVsbDsgLy8gaW52YWxpZCBncmFkaWVudCBzdHlsZVxuXG4gIHZhciBoYXNQb3NpdGlvbnMgPSBwb3NpdGlvbnMubGVuZ3RoID09PSBjb2xvcnMubGVuZ3RoO1xuICB2YXIgbGVuZ3RoID0gY29sb3JzLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgZ3JhZGllbnRTdHlsZS5hZGRDb2xvclN0b3AoaGFzUG9zaXRpb25zID8gcG9zaXRpb25zW2ldIDogaSAvIChsZW5ndGggLSAxKSwgJ3JnYmEoJyArIGNvbG9yc1tpXVswXSArICcsJyArIGNvbG9yc1tpXVsxXSArICcsJyArIGNvbG9yc1tpXVsyXSArICcsJyArIG9wYWNpdHkgKyAnKScpO1xuICB9XG5cbiAgcmV0dXJuIGdyYWRpZW50U3R5bGU7XG59O1xuXG5DUnAkNi5ncmFkaWVudEZpbGxTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIGZpbGwsIG9wYWNpdHkpIHtcbiAgdmFyIGdyYWRpZW50U3R5bGUgPSB0aGlzLmNyZWF0ZUdyYWRpZW50U3R5bGVGb3IoY29udGV4dCwgJ2JhY2tncm91bmQnLCBlbGUsIGZpbGwsIG9wYWNpdHkpO1xuICBpZiAoIWdyYWRpZW50U3R5bGUpIHJldHVybiBudWxsOyAvLyBlcnJvclxuXG4gIGNvbnRleHQuZmlsbFN0eWxlID0gZ3JhZGllbnRTdHlsZTtcbn07XG5cbkNScCQ2LmNvbG9yRmlsbFN0eWxlID0gZnVuY3Rpb24gKGNvbnRleHQsIHIsIGcsIGIsIGEpIHtcbiAgY29udGV4dC5maWxsU3R5bGUgPSAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgYSArICcpJzsgLy8gdHVybiBvZmYgZm9yIG5vdywgc2VlbXMgY29udGV4dCBkb2VzIGl0cyBvd24gY2FjaGluZ1xuICAvLyB2YXIgY2FjaGUgPSB0aGlzLnBhaW50Q2FjaGUoY29udGV4dCk7XG4gIC8vIHZhciBmaWxsU3R5bGUgPSAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgYSArICcpJztcbiAgLy8gaWYoIGNhY2hlLmZpbGxTdHlsZSAhPT0gZmlsbFN0eWxlICl7XG4gIC8vICAgY29udGV4dC5maWxsU3R5bGUgPSBjYWNoZS5maWxsU3R5bGUgPSBmaWxsU3R5bGU7XG4gIC8vIH1cbn07XG5cbkNScCQ2LmVsZUZpbGxTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIG9wYWNpdHkpIHtcbiAgdmFyIGJhY2tncm91bmRGaWxsID0gZWxlLnBzdHlsZSgnYmFja2dyb3VuZC1maWxsJykudmFsdWU7XG5cbiAgaWYgKGJhY2tncm91bmRGaWxsID09PSAnbGluZWFyLWdyYWRpZW50JyB8fCBiYWNrZ3JvdW5kRmlsbCA9PT0gJ3JhZGlhbC1ncmFkaWVudCcpIHtcbiAgICB0aGlzLmdyYWRpZW50RmlsbFN0eWxlKGNvbnRleHQsIGVsZSwgYmFja2dyb3VuZEZpbGwsIG9wYWNpdHkpO1xuICB9IGVsc2Uge1xuICAgIHZhciBiYWNrZ3JvdW5kQ29sb3IgPSBlbGUucHN0eWxlKCdiYWNrZ3JvdW5kLWNvbG9yJykudmFsdWU7XG4gICAgdGhpcy5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBiYWNrZ3JvdW5kQ29sb3JbMF0sIGJhY2tncm91bmRDb2xvclsxXSwgYmFja2dyb3VuZENvbG9yWzJdLCBvcGFjaXR5KTtcbiAgfVxufTtcblxuQ1JwJDYuZ3JhZGllbnRTdHJva2VTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIGZpbGwsIG9wYWNpdHkpIHtcbiAgdmFyIGdyYWRpZW50U3R5bGUgPSB0aGlzLmNyZWF0ZUdyYWRpZW50U3R5bGVGb3IoY29udGV4dCwgJ2xpbmUnLCBlbGUsIGZpbGwsIG9wYWNpdHkpO1xuICBpZiAoIWdyYWRpZW50U3R5bGUpIHJldHVybiBudWxsOyAvLyBlcnJvclxuXG4gIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBncmFkaWVudFN0eWxlO1xufTtcblxuQ1JwJDYuY29sb3JTdHJva2VTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCByLCBnLCBiLCBhKSB7XG4gIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgYSArICcpJzsgLy8gdHVybiBvZmYgZm9yIG5vdywgc2VlbXMgY29udGV4dCBkb2VzIGl0cyBvd24gY2FjaGluZ1xuICAvLyB2YXIgY2FjaGUgPSB0aGlzLnBhaW50Q2FjaGUoY29udGV4dCk7XG4gIC8vIHZhciBzdHJva2VTdHlsZSA9ICdyZ2JhKCcgKyByICsgJywnICsgZyArICcsJyArIGIgKyAnLCcgKyBhICsgJyknO1xuICAvLyBpZiggY2FjaGUuc3Ryb2tlU3R5bGUgIT09IHN0cm9rZVN0eWxlICl7XG4gIC8vICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGNhY2hlLnN0cm9rZVN0eWxlID0gc3Ryb2tlU3R5bGU7XG4gIC8vIH1cbn07XG5cbkNScCQ2LmVsZVN0cm9rZVN0eWxlID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSwgb3BhY2l0eSkge1xuICB2YXIgbGluZUZpbGwgPSBlbGUucHN0eWxlKCdsaW5lLWZpbGwnKS52YWx1ZTtcblxuICBpZiAobGluZUZpbGwgPT09ICdsaW5lYXItZ3JhZGllbnQnIHx8IGxpbmVGaWxsID09PSAncmFkaWFsLWdyYWRpZW50Jykge1xuICAgIHRoaXMuZ3JhZGllbnRTdHJva2VTdHlsZShjb250ZXh0LCBlbGUsIGxpbmVGaWxsLCBvcGFjaXR5KTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbGluZUNvbG9yID0gZWxlLnBzdHlsZSgnbGluZS1jb2xvcicpLnZhbHVlO1xuICAgIHRoaXMuY29sb3JTdHJva2VTdHlsZShjb250ZXh0LCBsaW5lQ29sb3JbMF0sIGxpbmVDb2xvclsxXSwgbGluZUNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgfVxufTsgLy8gUmVzaXplIGNhbnZhc1xuXG5cbkNScCQ2Lm1hdGNoQ2FudmFzU2l6ZSA9IGZ1bmN0aW9uIChjb250YWluZXIpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgZGF0YSA9IHIuZGF0YTtcbiAgdmFyIGJiID0gci5maW5kQ29udGFpbmVyQ2xpZW50Q29vcmRzKCk7XG4gIHZhciB3aWR0aCA9IGJiWzJdO1xuICB2YXIgaGVpZ2h0ID0gYmJbM107XG4gIHZhciBwaXhlbFJhdGlvID0gci5nZXRQaXhlbFJhdGlvKCk7XG4gIHZhciBtYlB4UmF0aW8gPSByLm1vdGlvbkJsdXJQeFJhdGlvO1xuXG4gIGlmIChjb250YWluZXIgPT09IHIuZGF0YS5idWZmZXJDYW52YXNlc1tyLk1PVElPTkJMVVJfQlVGRkVSX05PREVdIHx8IGNvbnRhaW5lciA9PT0gci5kYXRhLmJ1ZmZlckNhbnZhc2VzW3IuTU9USU9OQkxVUl9CVUZGRVJfRFJBR10pIHtcbiAgICBwaXhlbFJhdGlvID0gbWJQeFJhdGlvO1xuICB9XG5cbiAgdmFyIGNhbnZhc1dpZHRoID0gd2lkdGggKiBwaXhlbFJhdGlvO1xuICB2YXIgY2FudmFzSGVpZ2h0ID0gaGVpZ2h0ICogcGl4ZWxSYXRpbztcbiAgdmFyIGNhbnZhcztcblxuICBpZiAoY2FudmFzV2lkdGggPT09IHIuY2FudmFzV2lkdGggJiYgY2FudmFzSGVpZ2h0ID09PSByLmNhbnZhc0hlaWdodCkge1xuICAgIHJldHVybjsgLy8gc2F2ZSBjeWNsZXMgaWYgc2FtZVxuICB9XG5cbiAgci5mb250Q2FjaGVzID0gbnVsbDsgLy8gcmVzaXppbmcgcmVzZXRzIHRoZSBzdHlsZVxuXG4gIHZhciBjYW52YXNDb250YWluZXIgPSBkYXRhLmNhbnZhc0NvbnRhaW5lcjtcbiAgY2FudmFzQ29udGFpbmVyLnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICBjYW52YXNDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHIuQ0FOVkFTX0xBWUVSUzsgaSsrKSB7XG4gICAgY2FudmFzID0gZGF0YS5jYW52YXNlc1tpXTtcbiAgICBjYW52YXMud2lkdGggPSBjYW52YXNXaWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gY2FudmFzSGVpZ2h0O1xuICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9IHdpZHRoICsgJ3B4JztcbiAgICBjYW52YXMuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgci5CVUZGRVJfQ09VTlQ7IGkrKykge1xuICAgIGNhbnZhcyA9IGRhdGEuYnVmZmVyQ2FudmFzZXNbaV07XG4gICAgY2FudmFzLndpZHRoID0gY2FudmFzV2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGNhbnZhc0hlaWdodDtcbiAgICBjYW52YXMuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gICAgY2FudmFzLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7XG4gIH1cblxuICByLnRleHR1cmVNdWx0ID0gMTtcblxuICBpZiAocGl4ZWxSYXRpbyA8PSAxKSB7XG4gICAgY2FudmFzID0gZGF0YS5idWZmZXJDYW52YXNlc1tyLlRFWFRVUkVfQlVGRkVSXTtcbiAgICByLnRleHR1cmVNdWx0ID0gMjtcbiAgICBjYW52YXMud2lkdGggPSBjYW52YXNXaWR0aCAqIHIudGV4dHVyZU11bHQ7XG4gICAgY2FudmFzLmhlaWdodCA9IGNhbnZhc0hlaWdodCAqIHIudGV4dHVyZU11bHQ7XG4gIH1cblxuICByLmNhbnZhc1dpZHRoID0gY2FudmFzV2lkdGg7XG4gIHIuY2FudmFzSGVpZ2h0ID0gY2FudmFzSGVpZ2h0O1xufTtcblxuQ1JwJDYucmVuZGVyVG8gPSBmdW5jdGlvbiAoY3h0LCB6b29tLCBwYW4sIHB4UmF0aW8pIHtcbiAgdGhpcy5yZW5kZXIoe1xuICAgIGZvcmNlZENvbnRleHQ6IGN4dCxcbiAgICBmb3JjZWRab29tOiB6b29tLFxuICAgIGZvcmNlZFBhbjogcGFuLFxuICAgIGRyYXdBbGxMYXllcnM6IHRydWUsXG4gICAgZm9yY2VkUHhSYXRpbzogcHhSYXRpb1xuICB9KTtcbn07XG5cbkNScCQ2LnJlbmRlciA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHN0YXRpY0VtcHR5T2JqZWN0KCk7XG4gIHZhciBmb3JjZWRDb250ZXh0ID0gb3B0aW9ucy5mb3JjZWRDb250ZXh0O1xuICB2YXIgZHJhd0FsbExheWVycyA9IG9wdGlvbnMuZHJhd0FsbExheWVycztcbiAgdmFyIGRyYXdPbmx5Tm9kZUxheWVyID0gb3B0aW9ucy5kcmF3T25seU5vZGVMYXllcjtcbiAgdmFyIGZvcmNlZFpvb20gPSBvcHRpb25zLmZvcmNlZFpvb207XG4gIHZhciBmb3JjZWRQYW4gPSBvcHRpb25zLmZvcmNlZFBhbjtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgcGl4ZWxSYXRpbyA9IG9wdGlvbnMuZm9yY2VkUHhSYXRpbyA9PT0gdW5kZWZpbmVkID8gdGhpcy5nZXRQaXhlbFJhdGlvKCkgOiBvcHRpb25zLmZvcmNlZFB4UmF0aW87XG4gIHZhciBjeSA9IHIuY3k7XG4gIHZhciBkYXRhID0gci5kYXRhO1xuICB2YXIgbmVlZERyYXcgPSBkYXRhLmNhbnZhc05lZWRzUmVkcmF3O1xuICB2YXIgdGV4dHVyZURyYXcgPSByLnRleHR1cmVPblZpZXdwb3J0ICYmICFmb3JjZWRDb250ZXh0ICYmIChyLnBpbmNoaW5nIHx8IHIuaG92ZXJEYXRhLmRyYWdnaW5nIHx8IHIuc3dpcGVQYW5uaW5nIHx8IHIuZGF0YS53aGVlbFpvb21pbmcpO1xuICB2YXIgbW90aW9uQmx1ciA9IG9wdGlvbnMubW90aW9uQmx1ciAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5tb3Rpb25CbHVyIDogci5tb3Rpb25CbHVyO1xuICB2YXIgbWJQeFJhdGlvID0gci5tb3Rpb25CbHVyUHhSYXRpbztcbiAgdmFyIGhhc0NvbXBvdW5kTm9kZXMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gIHZhciBpbk5vZGVEcmFnR2VzdHVyZSA9IHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcztcbiAgdmFyIGluQm94U2VsZWN0aW9uID0gci5ob3ZlckRhdGEuc2VsZWN0aW5nIHx8IHIudG91Y2hEYXRhLnNlbGVjdGluZyA/IHRydWUgOiBmYWxzZTtcbiAgbW90aW9uQmx1ciA9IG1vdGlvbkJsdXIgJiYgIWZvcmNlZENvbnRleHQgJiYgci5tb3Rpb25CbHVyRW5hYmxlZCAmJiAhaW5Cb3hTZWxlY3Rpb247XG4gIHZhciBtb3Rpb25CbHVyRmFkZUVmZmVjdCA9IG1vdGlvbkJsdXI7XG5cbiAgaWYgKCFmb3JjZWRDb250ZXh0KSB7XG4gICAgaWYgKHIucHJldlB4UmF0aW8gIT09IHBpeGVsUmF0aW8pIHtcbiAgICAgIHIuaW52YWxpZGF0ZUNvbnRhaW5lckNsaWVudENvb3Jkc0NhY2hlKCk7XG4gICAgICByLm1hdGNoQ2FudmFzU2l6ZShyLmNvbnRhaW5lcik7XG4gICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgIH1cblxuICAgIHIucHJldlB4UmF0aW8gPSBwaXhlbFJhdGlvO1xuICB9XG5cbiAgaWYgKCFmb3JjZWRDb250ZXh0ICYmIHIubW90aW9uQmx1clRpbWVvdXQpIHtcbiAgICBjbGVhclRpbWVvdXQoci5tb3Rpb25CbHVyVGltZW91dCk7XG4gIH1cblxuICBpZiAobW90aW9uQmx1cikge1xuICAgIGlmIChyLm1iRnJhbWVzID09IG51bGwpIHtcbiAgICAgIHIubWJGcmFtZXMgPSAwO1xuICAgIH1cblxuICAgIHIubWJGcmFtZXMrKztcblxuICAgIGlmIChyLm1iRnJhbWVzIDwgMykge1xuICAgICAgLy8gbmVlZCBzZXZlcmFsIGZyYW1lcyBiZWZvcmUgZXZlbiBoaWdoIHF1YWxpdHkgbW90aW9uYmx1clxuICAgICAgbW90aW9uQmx1ckZhZGVFZmZlY3QgPSBmYWxzZTtcbiAgICB9IC8vIGdvIHRvIGxvd2VyIHF1YWxpdHkgYmx1cnJ5IGZyYW1lcyB3aGVuIHNldmVyYWwgbS9iIGZyYW1lcyBoYXZlIGJlZW4gcmVuZGVyZWQgKGF2b2lkcyBmbGFzaGluZylcblxuXG4gICAgaWYgKHIubWJGcmFtZXMgPiByLm1pbk1iTG93UXVhbEZyYW1lcykge1xuICAgICAgLy9yLmZ1bGxRdWFsaXR5TWIgPSBmYWxzZTtcbiAgICAgIHIubW90aW9uQmx1clB4UmF0aW8gPSByLm1iUHhSQmx1cnJ5O1xuICAgIH1cbiAgfVxuXG4gIGlmIChyLmNsZWFyaW5nTW90aW9uQmx1cikge1xuICAgIHIubW90aW9uQmx1clB4UmF0aW8gPSAxO1xuICB9IC8vIGIvYyBkcmF3VG9Db250ZXh0KCkgbWF5IGJlIGFzeW5jIHcuci50LiByZWRyYXcoKSwga2VlcCB0cmFjayBvZiBsYXN0IHRleHR1cmUgZnJhbWVcbiAgLy8gYmVjYXVzZSBhIHJvZ3VlIGFzeW5jIHRleHR1cmUgZnJhbWUgd291bGQgY2xlYXIgbmVlZERyYXdcblxuXG4gIGlmIChyLnRleHR1cmVEcmF3TGFzdEZyYW1lICYmICF0ZXh0dXJlRHJhdykge1xuICAgIG5lZWREcmF3W3IuTk9ERV0gPSB0cnVlO1xuICAgIG5lZWREcmF3W3IuU0VMRUNUX0JPWF0gPSB0cnVlO1xuICB9XG5cbiAgdmFyIHN0eWxlID0gY3kuc3R5bGUoKTtcbiAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gIHZhciBlZmZlY3RpdmVab29tID0gZm9yY2VkWm9vbSAhPT0gdW5kZWZpbmVkID8gZm9yY2VkWm9vbSA6IHpvb207XG4gIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgdmFyIGVmZmVjdGl2ZVBhbiA9IHtcbiAgICB4OiBwYW4ueCxcbiAgICB5OiBwYW4ueVxuICB9O1xuICB2YXIgdnAgPSB7XG4gICAgem9vbTogem9vbSxcbiAgICBwYW46IHtcbiAgICAgIHg6IHBhbi54LFxuICAgICAgeTogcGFuLnlcbiAgICB9XG4gIH07XG4gIHZhciBwcmV2VnAgPSByLnByZXZWaWV3cG9ydDtcbiAgdmFyIHZpZXdwb3J0SXNEaWZmID0gcHJldlZwID09PSB1bmRlZmluZWQgfHwgdnAuem9vbSAhPT0gcHJldlZwLnpvb20gfHwgdnAucGFuLnggIT09IHByZXZWcC5wYW4ueCB8fCB2cC5wYW4ueSAhPT0gcHJldlZwLnBhbi55OyAvLyB3ZSB3YW50IHRoZSBsb3cgcXVhbGl0eSBtb3Rpb25ibHVyIG9ubHkgd2hlbiB0aGUgdmlld3BvcnQgaXMgYmVpbmcgbWFuaXB1bGF0ZWQgZXRjICh3aGVyZSBpdCdzIG5vdCBub3RpY2VkKVxuXG4gIGlmICghdmlld3BvcnRJc0RpZmYgJiYgIShpbk5vZGVEcmFnR2VzdHVyZSAmJiAhaGFzQ29tcG91bmROb2RlcykpIHtcbiAgICByLm1vdGlvbkJsdXJQeFJhdGlvID0gMTtcbiAgfVxuXG4gIGlmIChmb3JjZWRQYW4pIHtcbiAgICBlZmZlY3RpdmVQYW4gPSBmb3JjZWRQYW47XG4gIH0gLy8gYXBwbHkgcGl4ZWwgcmF0aW9cblxuXG4gIGVmZmVjdGl2ZVpvb20gKj0gcGl4ZWxSYXRpbztcbiAgZWZmZWN0aXZlUGFuLnggKj0gcGl4ZWxSYXRpbztcbiAgZWZmZWN0aXZlUGFuLnkgKj0gcGl4ZWxSYXRpbztcbiAgdmFyIGVsZXMgPSByLmdldENhY2hlZFpTb3J0ZWRFbGVzKCk7XG5cbiAgZnVuY3Rpb24gbWJjbGVhcihjb250ZXh0LCB4LCB5LCB3LCBoKSB7XG4gICAgdmFyIGdjbyA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuICAgIGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW91dCc7XG4gICAgci5jb2xvckZpbGxTdHlsZShjb250ZXh0LCAyNTUsIDI1NSwgMjU1LCByLm1vdGlvbkJsdXJUcmFuc3BhcmVuY3kpO1xuICAgIGNvbnRleHQuZmlsbFJlY3QoeCwgeSwgdywgaCk7XG4gICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBnY287XG4gIH1cblxuICBmdW5jdGlvbiBzZXRDb250ZXh0VHJhbnNmb3JtKGNvbnRleHQsIGNsZWFyKSB7XG4gICAgdmFyIGVQYW4sIGVab29tLCB3LCBoO1xuXG4gICAgaWYgKCFyLmNsZWFyaW5nTW90aW9uQmx1ciAmJiAoY29udGV4dCA9PT0gZGF0YS5idWZmZXJDb250ZXh0c1tyLk1PVElPTkJMVVJfQlVGRkVSX05PREVdIHx8IGNvbnRleHQgPT09IGRhdGEuYnVmZmVyQ29udGV4dHNbci5NT1RJT05CTFVSX0JVRkZFUl9EUkFHXSkpIHtcbiAgICAgIGVQYW4gPSB7XG4gICAgICAgIHg6IHBhbi54ICogbWJQeFJhdGlvLFxuICAgICAgICB5OiBwYW4ueSAqIG1iUHhSYXRpb1xuICAgICAgfTtcbiAgICAgIGVab29tID0gem9vbSAqIG1iUHhSYXRpbztcbiAgICAgIHcgPSByLmNhbnZhc1dpZHRoICogbWJQeFJhdGlvO1xuICAgICAgaCA9IHIuY2FudmFzSGVpZ2h0ICogbWJQeFJhdGlvO1xuICAgIH0gZWxzZSB7XG4gICAgICBlUGFuID0gZWZmZWN0aXZlUGFuO1xuICAgICAgZVpvb20gPSBlZmZlY3RpdmVab29tO1xuICAgICAgdyA9IHIuY2FudmFzV2lkdGg7XG4gICAgICBoID0gci5jYW52YXNIZWlnaHQ7XG4gICAgfVxuXG4gICAgY29udGV4dC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7XG5cbiAgICBpZiAoY2xlYXIgPT09ICdtb3Rpb25CbHVyJykge1xuICAgICAgbWJjbGVhcihjb250ZXh0LCAwLCAwLCB3LCBoKTtcbiAgICB9IGVsc2UgaWYgKCFmb3JjZWRDb250ZXh0ICYmIChjbGVhciA9PT0gdW5kZWZpbmVkIHx8IGNsZWFyKSkge1xuICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdywgaCk7XG4gICAgfVxuXG4gICAgaWYgKCFkcmF3QWxsTGF5ZXJzKSB7XG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZShlUGFuLngsIGVQYW4ueSk7XG4gICAgICBjb250ZXh0LnNjYWxlKGVab29tLCBlWm9vbSk7XG4gICAgfVxuXG4gICAgaWYgKGZvcmNlZFBhbikge1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoZm9yY2VkUGFuLngsIGZvcmNlZFBhbi55KTtcbiAgICB9XG5cbiAgICBpZiAoZm9yY2VkWm9vbSkge1xuICAgICAgY29udGV4dC5zY2FsZShmb3JjZWRab29tLCBmb3JjZWRab29tKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXRleHR1cmVEcmF3KSB7XG4gICAgci50ZXh0dXJlRHJhd0xhc3RGcmFtZSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHRleHR1cmVEcmF3KSB7XG4gICAgci50ZXh0dXJlRHJhd0xhc3RGcmFtZSA9IHRydWU7XG5cbiAgICBpZiAoIXIudGV4dHVyZUNhY2hlKSB7XG4gICAgICByLnRleHR1cmVDYWNoZSA9IHt9O1xuICAgICAgci50ZXh0dXJlQ2FjaGUuYmIgPSBjeS5tdXRhYmxlRWxlbWVudHMoKS5ib3VuZGluZ0JveCgpO1xuICAgICAgci50ZXh0dXJlQ2FjaGUudGV4dHVyZSA9IHIuZGF0YS5idWZmZXJDYW52YXNlc1tyLlRFWFRVUkVfQlVGRkVSXTtcbiAgICAgIHZhciBjeHQgPSByLmRhdGEuYnVmZmVyQ29udGV4dHNbci5URVhUVVJFX0JVRkZFUl07XG4gICAgICBjeHQuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuICAgICAgY3h0LmNsZWFyUmVjdCgwLCAwLCByLmNhbnZhc1dpZHRoICogci50ZXh0dXJlTXVsdCwgci5jYW52YXNIZWlnaHQgKiByLnRleHR1cmVNdWx0KTtcbiAgICAgIHIucmVuZGVyKHtcbiAgICAgICAgZm9yY2VkQ29udGV4dDogY3h0LFxuICAgICAgICBkcmF3T25seU5vZGVMYXllcjogdHJ1ZSxcbiAgICAgICAgZm9yY2VkUHhSYXRpbzogcGl4ZWxSYXRpbyAqIHIudGV4dHVyZU11bHRcbiAgICAgIH0pO1xuICAgICAgdmFyIHZwID0gci50ZXh0dXJlQ2FjaGUudmlld3BvcnQgPSB7XG4gICAgICAgIHpvb206IGN5Lnpvb20oKSxcbiAgICAgICAgcGFuOiBjeS5wYW4oKSxcbiAgICAgICAgd2lkdGg6IHIuY2FudmFzV2lkdGgsXG4gICAgICAgIGhlaWdodDogci5jYW52YXNIZWlnaHRcbiAgICAgIH07XG4gICAgICB2cC5tcGFuID0ge1xuICAgICAgICB4OiAoMCAtIHZwLnBhbi54KSAvIHZwLnpvb20sXG4gICAgICAgIHk6ICgwIC0gdnAucGFuLnkpIC8gdnAuem9vbVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBuZWVkRHJhd1tyLkRSQUddID0gZmFsc2U7XG4gICAgbmVlZERyYXdbci5OT0RFXSA9IGZhbHNlO1xuICAgIHZhciBjb250ZXh0ID0gZGF0YS5jb250ZXh0c1tyLk5PREVdO1xuICAgIHZhciB0ZXh0dXJlID0gci50ZXh0dXJlQ2FjaGUudGV4dHVyZTtcbiAgICB2YXIgdnAgPSByLnRleHR1cmVDYWNoZS52aWV3cG9ydDtcbiAgICBjb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcblxuICAgIGlmIChtb3Rpb25CbHVyKSB7XG4gICAgICBtYmNsZWFyKGNvbnRleHQsIDAsIDAsIHZwLndpZHRoLCB2cC5oZWlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB2cC53aWR0aCwgdnAuaGVpZ2h0KTtcbiAgICB9XG5cbiAgICB2YXIgb3V0c2lkZUJnQ29sb3IgPSBzdHlsZS5jb3JlKCdvdXRzaWRlLXRleHR1cmUtYmctY29sb3InKS52YWx1ZTtcbiAgICB2YXIgb3V0c2lkZUJnT3BhY2l0eSA9IHN0eWxlLmNvcmUoJ291dHNpZGUtdGV4dHVyZS1iZy1vcGFjaXR5JykudmFsdWU7XG4gICAgci5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBvdXRzaWRlQmdDb2xvclswXSwgb3V0c2lkZUJnQ29sb3JbMV0sIG91dHNpZGVCZ0NvbG9yWzJdLCBvdXRzaWRlQmdPcGFjaXR5KTtcbiAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHZwLndpZHRoLCB2cC5oZWlnaHQpO1xuICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuICAgIHNldENvbnRleHRUcmFuc2Zvcm0oY29udGV4dCwgZmFsc2UpO1xuICAgIGNvbnRleHQuY2xlYXJSZWN0KHZwLm1wYW4ueCwgdnAubXBhbi55LCB2cC53aWR0aCAvIHZwLnpvb20gLyBwaXhlbFJhdGlvLCB2cC5oZWlnaHQgLyB2cC56b29tIC8gcGl4ZWxSYXRpbyk7XG4gICAgY29udGV4dC5kcmF3SW1hZ2UodGV4dHVyZSwgdnAubXBhbi54LCB2cC5tcGFuLnksIHZwLndpZHRoIC8gdnAuem9vbSAvIHBpeGVsUmF0aW8sIHZwLmhlaWdodCAvIHZwLnpvb20gLyBwaXhlbFJhdGlvKTtcbiAgfSBlbHNlIGlmIChyLnRleHR1cmVPblZpZXdwb3J0ICYmICFmb3JjZWRDb250ZXh0KSB7XG4gICAgLy8gY2xlYXIgdGhlIGNhY2hlIHNpbmNlIHdlIGRvbid0IG5lZWQgaXRcbiAgICByLnRleHR1cmVDYWNoZSA9IG51bGw7XG4gIH1cblxuICB2YXIgZXh0ZW50ID0gY3kuZXh0ZW50KCk7XG4gIHZhciB2cE1hbmlwID0gci5waW5jaGluZyB8fCByLmhvdmVyRGF0YS5kcmFnZ2luZyB8fCByLnN3aXBlUGFubmluZyB8fCByLmRhdGEud2hlZWxab29taW5nIHx8IHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyB8fCByLmN5LmFuaW1hdGVkKCk7XG4gIHZhciBoaWRlRWRnZXMgPSByLmhpZGVFZGdlc09uVmlld3BvcnQgJiYgdnBNYW5pcDtcbiAgdmFyIG5lZWRNYkNsZWFyID0gW107XG4gIG5lZWRNYkNsZWFyW3IuTk9ERV0gPSAhbmVlZERyYXdbci5OT0RFXSAmJiBtb3Rpb25CbHVyICYmICFyLmNsZWFyZWRGb3JNb3Rpb25CbHVyW3IuTk9ERV0gfHwgci5jbGVhcmluZ01vdGlvbkJsdXI7XG5cbiAgaWYgKG5lZWRNYkNsZWFyW3IuTk9ERV0pIHtcbiAgICByLmNsZWFyZWRGb3JNb3Rpb25CbHVyW3IuTk9ERV0gPSB0cnVlO1xuICB9XG5cbiAgbmVlZE1iQ2xlYXJbci5EUkFHXSA9ICFuZWVkRHJhd1tyLkRSQUddICYmIG1vdGlvbkJsdXIgJiYgIXIuY2xlYXJlZEZvck1vdGlvbkJsdXJbci5EUkFHXSB8fCByLmNsZWFyaW5nTW90aW9uQmx1cjtcblxuICBpZiAobmVlZE1iQ2xlYXJbci5EUkFHXSkge1xuICAgIHIuY2xlYXJlZEZvck1vdGlvbkJsdXJbci5EUkFHXSA9IHRydWU7XG4gIH1cblxuICBpZiAobmVlZERyYXdbci5OT0RFXSB8fCBkcmF3QWxsTGF5ZXJzIHx8IGRyYXdPbmx5Tm9kZUxheWVyIHx8IG5lZWRNYkNsZWFyW3IuTk9ERV0pIHtcbiAgICB2YXIgdXNlQnVmZmVyID0gbW90aW9uQmx1ciAmJiAhbmVlZE1iQ2xlYXJbci5OT0RFXSAmJiBtYlB4UmF0aW8gIT09IDE7XG4gICAgdmFyIGNvbnRleHQgPSBmb3JjZWRDb250ZXh0IHx8ICh1c2VCdWZmZXIgPyByLmRhdGEuYnVmZmVyQ29udGV4dHNbci5NT1RJT05CTFVSX0JVRkZFUl9OT0RFXSA6IGRhdGEuY29udGV4dHNbci5OT0RFXSk7XG4gICAgdmFyIGNsZWFyID0gbW90aW9uQmx1ciAmJiAhdXNlQnVmZmVyID8gJ21vdGlvbkJsdXInIDogdW5kZWZpbmVkO1xuICAgIHNldENvbnRleHRUcmFuc2Zvcm0oY29udGV4dCwgY2xlYXIpO1xuXG4gICAgaWYgKGhpZGVFZGdlcykge1xuICAgICAgci5kcmF3Q2FjaGVkTm9kZXMoY29udGV4dCwgZWxlcy5ub25kcmFnLCBwaXhlbFJhdGlvLCBleHRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByLmRyYXdMYXllcmVkRWxlbWVudHMoY29udGV4dCwgZWxlcy5ub25kcmFnLCBwaXhlbFJhdGlvLCBleHRlbnQpO1xuICAgIH1cblxuICAgIGlmIChyLmRlYnVnKSB7XG4gICAgICByLmRyYXdEZWJ1Z1BvaW50cyhjb250ZXh0LCBlbGVzLm5vbmRyYWcpO1xuICAgIH1cblxuICAgIGlmICghZHJhd0FsbExheWVycyAmJiAhbW90aW9uQmx1cikge1xuICAgICAgbmVlZERyYXdbci5OT0RFXSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZHJhd09ubHlOb2RlTGF5ZXIgJiYgKG5lZWREcmF3W3IuRFJBR10gfHwgZHJhd0FsbExheWVycyB8fCBuZWVkTWJDbGVhcltyLkRSQUddKSkge1xuICAgIHZhciB1c2VCdWZmZXIgPSBtb3Rpb25CbHVyICYmICFuZWVkTWJDbGVhcltyLkRSQUddICYmIG1iUHhSYXRpbyAhPT0gMTtcbiAgICB2YXIgY29udGV4dCA9IGZvcmNlZENvbnRleHQgfHwgKHVzZUJ1ZmZlciA/IHIuZGF0YS5idWZmZXJDb250ZXh0c1tyLk1PVElPTkJMVVJfQlVGRkVSX0RSQUddIDogZGF0YS5jb250ZXh0c1tyLkRSQUddKTtcbiAgICBzZXRDb250ZXh0VHJhbnNmb3JtKGNvbnRleHQsIG1vdGlvbkJsdXIgJiYgIXVzZUJ1ZmZlciA/ICdtb3Rpb25CbHVyJyA6IHVuZGVmaW5lZCk7XG5cbiAgICBpZiAoaGlkZUVkZ2VzKSB7XG4gICAgICByLmRyYXdDYWNoZWROb2Rlcyhjb250ZXh0LCBlbGVzLmRyYWcsIHBpeGVsUmF0aW8sIGV4dGVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHIuZHJhd0NhY2hlZEVsZW1lbnRzKGNvbnRleHQsIGVsZXMuZHJhZywgcGl4ZWxSYXRpbywgZXh0ZW50KTtcbiAgICB9XG5cbiAgICBpZiAoci5kZWJ1Zykge1xuICAgICAgci5kcmF3RGVidWdQb2ludHMoY29udGV4dCwgZWxlcy5kcmFnKTtcbiAgICB9XG5cbiAgICBpZiAoIWRyYXdBbGxMYXllcnMgJiYgIW1vdGlvbkJsdXIpIHtcbiAgICAgIG5lZWREcmF3W3IuRFJBR10gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoci5zaG93RnBzIHx8ICFkcmF3T25seU5vZGVMYXllciAmJiBuZWVkRHJhd1tyLlNFTEVDVF9CT1hdICYmICFkcmF3QWxsTGF5ZXJzKSB7XG4gICAgdmFyIGNvbnRleHQgPSBmb3JjZWRDb250ZXh0IHx8IGRhdGEuY29udGV4dHNbci5TRUxFQ1RfQk9YXTtcbiAgICBzZXRDb250ZXh0VHJhbnNmb3JtKGNvbnRleHQpO1xuXG4gICAgaWYgKHIuc2VsZWN0aW9uWzRdID09IDEgJiYgKHIuaG92ZXJEYXRhLnNlbGVjdGluZyB8fCByLnRvdWNoRGF0YS5zZWxlY3RpbmcpKSB7XG4gICAgICB2YXIgem9vbSA9IHIuY3kuem9vbSgpO1xuICAgICAgdmFyIGJvcmRlcldpZHRoID0gc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1ib3JkZXItd2lkdGgnKS52YWx1ZSAvIHpvb207XG4gICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IGJvcmRlcldpZHRoO1xuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAncmdiYSgnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1jb2xvcicpLnZhbHVlWzBdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1jb2xvcicpLnZhbHVlWzFdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1jb2xvcicpLnZhbHVlWzJdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1vcGFjaXR5JykudmFsdWUgKyAnKSc7XG4gICAgICBjb250ZXh0LmZpbGxSZWN0KHIuc2VsZWN0aW9uWzBdLCByLnNlbGVjdGlvblsxXSwgci5zZWxlY3Rpb25bMl0gLSByLnNlbGVjdGlvblswXSwgci5zZWxlY3Rpb25bM10gLSByLnNlbGVjdGlvblsxXSk7XG5cbiAgICAgIGlmIChib3JkZXJXaWR0aCA+IDApIHtcbiAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9ICdyZ2JhKCcgKyBzdHlsZS5jb3JlKCdzZWxlY3Rpb24tYm94LWJvcmRlci1jb2xvcicpLnZhbHVlWzBdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1ib3JkZXItY29sb3InKS52YWx1ZVsxXSArICcsJyArIHN0eWxlLmNvcmUoJ3NlbGVjdGlvbi1ib3gtYm9yZGVyLWNvbG9yJykudmFsdWVbMl0gKyAnLCcgKyBzdHlsZS5jb3JlKCdzZWxlY3Rpb24tYm94LW9wYWNpdHknKS52YWx1ZSArICcpJztcbiAgICAgICAgY29udGV4dC5zdHJva2VSZWN0KHIuc2VsZWN0aW9uWzBdLCByLnNlbGVjdGlvblsxXSwgci5zZWxlY3Rpb25bMl0gLSByLnNlbGVjdGlvblswXSwgci5zZWxlY3Rpb25bM10gLSByLnNlbGVjdGlvblsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gJiYgIXIuaG92ZXJEYXRhLnNlbGVjdGluZykge1xuICAgICAgdmFyIHpvb20gPSByLmN5Lnpvb20oKTtcbiAgICAgIHZhciBwb3MgPSBkYXRhLmJnQWN0aXZlUG9zaXN0aW9uO1xuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAncmdiYSgnICsgc3R5bGUuY29yZSgnYWN0aXZlLWJnLWNvbG9yJykudmFsdWVbMF0gKyAnLCcgKyBzdHlsZS5jb3JlKCdhY3RpdmUtYmctY29sb3InKS52YWx1ZVsxXSArICcsJyArIHN0eWxlLmNvcmUoJ2FjdGl2ZS1iZy1jb2xvcicpLnZhbHVlWzJdICsgJywnICsgc3R5bGUuY29yZSgnYWN0aXZlLWJnLW9wYWNpdHknKS52YWx1ZSArICcpJztcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICBjb250ZXh0LmFyYyhwb3MueCwgcG9zLnksIHN0eWxlLmNvcmUoJ2FjdGl2ZS1iZy1zaXplJykucGZWYWx1ZSAvIHpvb20sIDAsIDIgKiBNYXRoLlBJKTtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIH1cblxuICAgIHZhciB0aW1lVG9SZW5kZXIgPSByLmxhc3RSZWRyYXdUaW1lO1xuXG4gICAgaWYgKHIuc2hvd0ZwcyAmJiB0aW1lVG9SZW5kZXIpIHtcbiAgICAgIHRpbWVUb1JlbmRlciA9IE1hdGgucm91bmQodGltZVRvUmVuZGVyKTtcbiAgICAgIHZhciBmcHMgPSBNYXRoLnJvdW5kKDEwMDAgLyB0aW1lVG9SZW5kZXIpO1xuICAgICAgY29udGV4dC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7XG4gICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICdyZ2JhKDI1NSwgMCwgMCwgMC43NSknO1xuICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9ICdyZ2JhKDI1NSwgMCwgMCwgMC43NSknO1xuICAgICAgY29udGV4dC5saW5lV2lkdGggPSAxO1xuICAgICAgY29udGV4dC5maWxsVGV4dCgnMSBmcmFtZSA9ICcgKyB0aW1lVG9SZW5kZXIgKyAnIG1zID0gJyArIGZwcyArICcgZnBzJywgMCwgMjApO1xuICAgICAgdmFyIG1heEZwcyA9IDYwO1xuICAgICAgY29udGV4dC5zdHJva2VSZWN0KDAsIDMwLCAyNTAsIDIwKTtcbiAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMzAsIDI1MCAqIE1hdGgubWluKGZwcyAvIG1heEZwcywgMSksIDIwKTtcbiAgICB9XG5cbiAgICBpZiAoIWRyYXdBbGxMYXllcnMpIHtcbiAgICAgIG5lZWREcmF3W3IuU0VMRUNUX0JPWF0gPSBmYWxzZTtcbiAgICB9XG4gIH0gLy8gbW90aW9uYmx1cjogYmxpdCByZW5kZXJlZCBibHVycnkgZnJhbWVzXG5cblxuICBpZiAobW90aW9uQmx1ciAmJiBtYlB4UmF0aW8gIT09IDEpIHtcbiAgICB2YXIgY3h0Tm9kZSA9IGRhdGEuY29udGV4dHNbci5OT0RFXTtcbiAgICB2YXIgdHh0Tm9kZSA9IHIuZGF0YS5idWZmZXJDYW52YXNlc1tyLk1PVElPTkJMVVJfQlVGRkVSX05PREVdO1xuICAgIHZhciBjeHREcmFnID0gZGF0YS5jb250ZXh0c1tyLkRSQUddO1xuICAgIHZhciB0eHREcmFnID0gci5kYXRhLmJ1ZmZlckNhbnZhc2VzW3IuTU9USU9OQkxVUl9CVUZGRVJfRFJBR107XG5cbiAgICB2YXIgZHJhd01vdGlvbkJsdXIgPSBmdW5jdGlvbiBkcmF3TW90aW9uQmx1cihjeHQsIHR4dCwgbmVlZENsZWFyKSB7XG4gICAgICBjeHQuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuXG4gICAgICBpZiAobmVlZENsZWFyIHx8ICFtb3Rpb25CbHVyRmFkZUVmZmVjdCkge1xuICAgICAgICBjeHQuY2xlYXJSZWN0KDAsIDAsIHIuY2FudmFzV2lkdGgsIHIuY2FudmFzSGVpZ2h0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1iY2xlYXIoY3h0LCAwLCAwLCByLmNhbnZhc1dpZHRoLCByLmNhbnZhc0hlaWdodCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBweHIgPSBtYlB4UmF0aW87XG4gICAgICBjeHQuZHJhd0ltYWdlKHR4dCwgLy8gaW1nXG4gICAgICAwLCAwLCAvLyBzeCwgc3lcbiAgICAgIHIuY2FudmFzV2lkdGggKiBweHIsIHIuY2FudmFzSGVpZ2h0ICogcHhyLCAvLyBzdywgc2hcbiAgICAgIDAsIDAsIC8vIHgsIHlcbiAgICAgIHIuY2FudmFzV2lkdGgsIHIuY2FudmFzSGVpZ2h0IC8vIHcsIGhcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGlmIChuZWVkRHJhd1tyLk5PREVdIHx8IG5lZWRNYkNsZWFyW3IuTk9ERV0pIHtcbiAgICAgIGRyYXdNb3Rpb25CbHVyKGN4dE5vZGUsIHR4dE5vZGUsIG5lZWRNYkNsZWFyW3IuTk9ERV0pO1xuICAgICAgbmVlZERyYXdbci5OT0RFXSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChuZWVkRHJhd1tyLkRSQUddIHx8IG5lZWRNYkNsZWFyW3IuRFJBR10pIHtcbiAgICAgIGRyYXdNb3Rpb25CbHVyKGN4dERyYWcsIHR4dERyYWcsIG5lZWRNYkNsZWFyW3IuRFJBR10pO1xuICAgICAgbmVlZERyYXdbci5EUkFHXSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHIucHJldlZpZXdwb3J0ID0gdnA7XG5cbiAgaWYgKHIuY2xlYXJpbmdNb3Rpb25CbHVyKSB7XG4gICAgci5jbGVhcmluZ01vdGlvbkJsdXIgPSBmYWxzZTtcbiAgICByLm1vdGlvbkJsdXJDbGVhcmVkID0gdHJ1ZTtcbiAgICByLm1vdGlvbkJsdXIgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG1vdGlvbkJsdXIpIHtcbiAgICByLm1vdGlvbkJsdXJUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICByLm1vdGlvbkJsdXJUaW1lb3V0ID0gbnVsbDtcbiAgICAgIHIuY2xlYXJlZEZvck1vdGlvbkJsdXJbci5OT0RFXSA9IGZhbHNlO1xuICAgICAgci5jbGVhcmVkRm9yTW90aW9uQmx1cltyLkRSQUddID0gZmFsc2U7XG4gICAgICByLm1vdGlvbkJsdXIgPSBmYWxzZTtcbiAgICAgIHIuY2xlYXJpbmdNb3Rpb25CbHVyID0gIXRleHR1cmVEcmF3O1xuICAgICAgci5tYkZyYW1lcyA9IDA7XG4gICAgICBuZWVkRHJhd1tyLk5PREVdID0gdHJ1ZTtcbiAgICAgIG5lZWREcmF3W3IuRFJBR10gPSB0cnVlO1xuICAgICAgci5yZWRyYXcoKTtcbiAgICB9LCBtb3Rpb25CbHVyRGVsYXkpO1xuICB9XG5cbiAgaWYgKCFmb3JjZWRDb250ZXh0KSB7XG4gICAgY3kuZW1pdCgncmVuZGVyJyk7XG4gIH1cbn07XG5cbnZhciBDUnAkNyA9IHt9OyAvLyBATyBQb2x5Z29uIGRyYXdpbmdcblxuQ1JwJDcuZHJhd1BvbHlnb25QYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHBvaW50cykge1xuICB2YXIgaGFsZlcgPSB3aWR0aCAvIDI7XG4gIHZhciBoYWxmSCA9IGhlaWdodCAvIDI7XG5cbiAgaWYgKGNvbnRleHQuYmVnaW5QYXRoKSB7XG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgfVxuXG4gIGNvbnRleHQubW92ZVRvKHggKyBoYWxmVyAqIHBvaW50c1swXSwgeSArIGhhbGZIICogcG9pbnRzWzFdKTtcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IHBvaW50cy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICBjb250ZXh0LmxpbmVUbyh4ICsgaGFsZlcgKiBwb2ludHNbaSAqIDJdLCB5ICsgaGFsZkggKiBwb2ludHNbaSAqIDIgKyAxXSk7XG4gIH1cblxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xufTtcblxuQ1JwJDcuZHJhd1JvdW5kUG9seWdvblBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKSB7XG4gIHZhciBoYWxmVyA9IHdpZHRoIC8gMjtcbiAgdmFyIGhhbGZIID0gaGVpZ2h0IC8gMjtcbiAgdmFyIGNvcm5lclJhZGl1cyA9IGdldFJvdW5kUG9seWdvblJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcblxuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9XG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHBvaW50cy5sZW5ndGggLyA0OyBfaSsrKSB7XG4gICAgdmFyIHNvdXJjZVV2ID0gdm9pZCAwLFxuICAgICAgICBkZXN0VXYgPSB2b2lkIDA7XG5cbiAgICBpZiAoX2kgPT09IDApIHtcbiAgICAgIHNvdXJjZVV2ID0gcG9pbnRzLmxlbmd0aCAtIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNvdXJjZVV2ID0gX2kgKiA0IC0gMjtcbiAgICB9XG5cbiAgICBkZXN0VXYgPSBfaSAqIDQgKyAyO1xuICAgIHZhciBweCA9IHggKyBoYWxmVyAqIHBvaW50c1tfaSAqIDRdO1xuICAgIHZhciBweSA9IHkgKyBoYWxmSCAqIHBvaW50c1tfaSAqIDQgKyAxXTtcbiAgICB2YXIgY29zVGhldGEgPSAtcG9pbnRzW3NvdXJjZVV2XSAqIHBvaW50c1tkZXN0VXZdIC0gcG9pbnRzW3NvdXJjZVV2ICsgMV0gKiBwb2ludHNbZGVzdFV2ICsgMV07XG4gICAgdmFyIG9mZnNldCA9IGNvcm5lclJhZGl1cyAvIE1hdGgudGFuKE1hdGguYWNvcyhjb3NUaGV0YSkgLyAyKTtcbiAgICB2YXIgY3AweCA9IHB4IC0gb2Zmc2V0ICogcG9pbnRzW3NvdXJjZVV2XTtcbiAgICB2YXIgY3AweSA9IHB5IC0gb2Zmc2V0ICogcG9pbnRzW3NvdXJjZVV2ICsgMV07XG4gICAgdmFyIGNwMXggPSBweCArIG9mZnNldCAqIHBvaW50c1tkZXN0VXZdO1xuICAgIHZhciBjcDF5ID0gcHkgKyBvZmZzZXQgKiBwb2ludHNbZGVzdFV2ICsgMV07XG5cbiAgICBpZiAoX2kgPT09IDApIHtcbiAgICAgIGNvbnRleHQubW92ZVRvKGNwMHgsIGNwMHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmxpbmVUbyhjcDB4LCBjcDB5KTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmFyY1RvKHB4LCBweSwgY3AxeCwgY3AxeSwgY29ybmVyUmFkaXVzKTtcbiAgfVxuXG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XG59OyAvLyBSb3VuZCByZWN0YW5nbGUgZHJhd2luZ1xuXG5cbkNScCQ3LmRyYXdSb3VuZFJlY3RhbmdsZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCkge1xuICB2YXIgaGFsZldpZHRoID0gd2lkdGggLyAyO1xuICB2YXIgaGFsZkhlaWdodCA9IGhlaWdodCAvIDI7XG4gIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcblxuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9IC8vIFN0YXJ0IGF0IHRvcCBtaWRkbGVcblxuXG4gIGNvbnRleHQubW92ZVRvKHgsIHkgLSBoYWxmSGVpZ2h0KTsgLy8gQXJjIGZyb20gbWlkZGxlIHRvcCB0byByaWdodCBzaWRlXG5cbiAgY29udGV4dC5hcmNUbyh4ICsgaGFsZldpZHRoLCB5IC0gaGFsZkhlaWdodCwgeCArIGhhbGZXaWR0aCwgeSwgY29ybmVyUmFkaXVzKTsgLy8gQXJjIGZyb20gcmlnaHQgc2lkZSB0byBib3R0b21cblxuICBjb250ZXh0LmFyY1RvKHggKyBoYWxmV2lkdGgsIHkgKyBoYWxmSGVpZ2h0LCB4LCB5ICsgaGFsZkhlaWdodCwgY29ybmVyUmFkaXVzKTsgLy8gQXJjIGZyb20gYm90dG9tIHRvIGxlZnQgc2lkZVxuXG4gIGNvbnRleHQuYXJjVG8oeCAtIGhhbGZXaWR0aCwgeSArIGhhbGZIZWlnaHQsIHggLSBoYWxmV2lkdGgsIHksIGNvcm5lclJhZGl1cyk7IC8vIEFyYyBmcm9tIGxlZnQgc2lkZSB0byB0b3BCb3JkZXJcblxuICBjb250ZXh0LmFyY1RvKHggLSBoYWxmV2lkdGgsIHkgLSBoYWxmSGVpZ2h0LCB4LCB5IC0gaGFsZkhlaWdodCwgY29ybmVyUmFkaXVzKTsgLy8gSm9pbiBsaW5lXG5cbiAgY29udGV4dC5saW5lVG8oeCwgeSAtIGhhbGZIZWlnaHQpO1xuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xufTtcblxuQ1JwJDcuZHJhd0JvdHRvbVJvdW5kUmVjdGFuZ2xlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBoYWxmV2lkdGggPSB3aWR0aCAvIDI7XG4gIHZhciBoYWxmSGVpZ2h0ID0gaGVpZ2h0IC8gMjtcbiAgdmFyIGNvcm5lclJhZGl1cyA9IGdldFJvdW5kUmVjdGFuZ2xlUmFkaXVzKHdpZHRoLCBoZWlnaHQpO1xuXG4gIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIH0gLy8gU3RhcnQgYXQgdG9wIG1pZGRsZVxuXG5cbiAgY29udGV4dC5tb3ZlVG8oeCwgeSAtIGhhbGZIZWlnaHQpO1xuICBjb250ZXh0LmxpbmVUbyh4ICsgaGFsZldpZHRoLCB5IC0gaGFsZkhlaWdodCk7XG4gIGNvbnRleHQubGluZVRvKHggKyBoYWxmV2lkdGgsIHkpO1xuICBjb250ZXh0LmFyY1RvKHggKyBoYWxmV2lkdGgsIHkgKyBoYWxmSGVpZ2h0LCB4LCB5ICsgaGFsZkhlaWdodCwgY29ybmVyUmFkaXVzKTtcbiAgY29udGV4dC5hcmNUbyh4IC0gaGFsZldpZHRoLCB5ICsgaGFsZkhlaWdodCwgeCAtIGhhbGZXaWR0aCwgeSwgY29ybmVyUmFkaXVzKTtcbiAgY29udGV4dC5saW5lVG8oeCAtIGhhbGZXaWR0aCwgeSAtIGhhbGZIZWlnaHQpO1xuICBjb250ZXh0LmxpbmVUbyh4LCB5IC0gaGFsZkhlaWdodCk7XG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XG59O1xuXG5DUnAkNy5kcmF3Q3V0UmVjdGFuZ2xlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBoYWxmV2lkdGggPSB3aWR0aCAvIDI7XG4gIHZhciBoYWxmSGVpZ2h0ID0gaGVpZ2h0IC8gMjtcbiAgdmFyIGNvcm5lckxlbmd0aCA9IGdldEN1dFJlY3RhbmdsZUNvcm5lckxlbmd0aCgpO1xuXG4gIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIH1cblxuICBjb250ZXh0Lm1vdmVUbyh4IC0gaGFsZldpZHRoICsgY29ybmVyTGVuZ3RoLCB5IC0gaGFsZkhlaWdodCk7XG4gIGNvbnRleHQubGluZVRvKHggKyBoYWxmV2lkdGggLSBjb3JuZXJMZW5ndGgsIHkgLSBoYWxmSGVpZ2h0KTtcbiAgY29udGV4dC5saW5lVG8oeCArIGhhbGZXaWR0aCwgeSAtIGhhbGZIZWlnaHQgKyBjb3JuZXJMZW5ndGgpO1xuICBjb250ZXh0LmxpbmVUbyh4ICsgaGFsZldpZHRoLCB5ICsgaGFsZkhlaWdodCAtIGNvcm5lckxlbmd0aCk7XG4gIGNvbnRleHQubGluZVRvKHggKyBoYWxmV2lkdGggLSBjb3JuZXJMZW5ndGgsIHkgKyBoYWxmSGVpZ2h0KTtcbiAgY29udGV4dC5saW5lVG8oeCAtIGhhbGZXaWR0aCArIGNvcm5lckxlbmd0aCwgeSArIGhhbGZIZWlnaHQpO1xuICBjb250ZXh0LmxpbmVUbyh4IC0gaGFsZldpZHRoLCB5ICsgaGFsZkhlaWdodCAtIGNvcm5lckxlbmd0aCk7XG4gIGNvbnRleHQubGluZVRvKHggLSBoYWxmV2lkdGgsIHkgLSBoYWxmSGVpZ2h0ICsgY29ybmVyTGVuZ3RoKTtcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcbn07XG5cbkNScCQ3LmRyYXdCYXJyZWxQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgdmFyIGhhbGZXaWR0aCA9IHdpZHRoIC8gMjtcbiAgdmFyIGhhbGZIZWlnaHQgPSBoZWlnaHQgLyAyO1xuICB2YXIgeEJlZ2luID0geCAtIGhhbGZXaWR0aDtcbiAgdmFyIHhFbmQgPSB4ICsgaGFsZldpZHRoO1xuICB2YXIgeUJlZ2luID0geSAtIGhhbGZIZWlnaHQ7XG4gIHZhciB5RW5kID0geSArIGhhbGZIZWlnaHQ7XG4gIHZhciBiYXJyZWxDdXJ2ZUNvbnN0YW50cyA9IGdldEJhcnJlbEN1cnZlQ29uc3RhbnRzKHdpZHRoLCBoZWlnaHQpO1xuICB2YXIgd09mZnNldCA9IGJhcnJlbEN1cnZlQ29uc3RhbnRzLndpZHRoT2Zmc2V0O1xuICB2YXIgaE9mZnNldCA9IGJhcnJlbEN1cnZlQ29uc3RhbnRzLmhlaWdodE9mZnNldDtcbiAgdmFyIGN0cmxQdFhPZmZzZXQgPSBiYXJyZWxDdXJ2ZUNvbnN0YW50cy5jdHJsUHRPZmZzZXRQY3QgKiB3T2Zmc2V0O1xuXG4gIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIH1cblxuICBjb250ZXh0Lm1vdmVUbyh4QmVnaW4sIHlCZWdpbiArIGhPZmZzZXQpO1xuICBjb250ZXh0LmxpbmVUbyh4QmVnaW4sIHlFbmQgLSBoT2Zmc2V0KTtcbiAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKHhCZWdpbiArIGN0cmxQdFhPZmZzZXQsIHlFbmQsIHhCZWdpbiArIHdPZmZzZXQsIHlFbmQpO1xuICBjb250ZXh0LmxpbmVUbyh4RW5kIC0gd09mZnNldCwgeUVuZCk7XG4gIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyh4RW5kIC0gY3RybFB0WE9mZnNldCwgeUVuZCwgeEVuZCwgeUVuZCAtIGhPZmZzZXQpO1xuICBjb250ZXh0LmxpbmVUbyh4RW5kLCB5QmVnaW4gKyBoT2Zmc2V0KTtcbiAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKHhFbmQgLSBjdHJsUHRYT2Zmc2V0LCB5QmVnaW4sIHhFbmQgLSB3T2Zmc2V0LCB5QmVnaW4pO1xuICBjb250ZXh0LmxpbmVUbyh4QmVnaW4gKyB3T2Zmc2V0LCB5QmVnaW4pO1xuICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oeEJlZ2luICsgY3RybFB0WE9mZnNldCwgeUJlZ2luLCB4QmVnaW4sIHlCZWdpbiArIGhPZmZzZXQpO1xuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xufTtcblxudmFyIHNpbjAgPSBNYXRoLnNpbigwKTtcbnZhciBjb3MwID0gTWF0aC5jb3MoMCk7XG52YXIgc2luID0ge307XG52YXIgY29zID0ge307XG52YXIgZWxsaXBzZVN0ZXBTaXplID0gTWF0aC5QSSAvIDQwO1xuXG5mb3IgKHZhciBpID0gMCAqIE1hdGguUEk7IGkgPCAyICogTWF0aC5QSTsgaSArPSBlbGxpcHNlU3RlcFNpemUpIHtcbiAgc2luW2ldID0gTWF0aC5zaW4oaSk7XG4gIGNvc1tpXSA9IE1hdGguY29zKGkpO1xufVxuXG5DUnAkNy5kcmF3RWxsaXBzZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9XG5cbiAgaWYgKGNvbnRleHQuZWxsaXBzZSkge1xuICAgIGNvbnRleHQuZWxsaXBzZShjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCAvIDIsIGhlaWdodCAvIDIsIDAsIDAsIDIgKiBNYXRoLlBJKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgeFBvcywgeVBvcztcbiAgICB2YXIgcncgPSB3aWR0aCAvIDI7XG4gICAgdmFyIHJoID0gaGVpZ2h0IC8gMjtcblxuICAgIGZvciAodmFyIGkgPSAwICogTWF0aC5QSTsgaSA8IDIgKiBNYXRoLlBJOyBpICs9IGVsbGlwc2VTdGVwU2l6ZSkge1xuICAgICAgeFBvcyA9IGNlbnRlclggLSBydyAqIHNpbltpXSAqIHNpbjAgKyBydyAqIGNvc1tpXSAqIGNvczA7XG4gICAgICB5UG9zID0gY2VudGVyWSArIHJoICogY29zW2ldICogc2luMCArIHJoICogc2luW2ldICogY29zMDtcblxuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZXh0LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xufTtcblxuLyogZ2xvYmFsIGF0b2IsIEFycmF5QnVmZmVyLCBVaW50OEFycmF5LCBCbG9iICovXG52YXIgQ1JwJDggPSB7fTtcblxuQ1JwJDguY3JlYXRlQnVmZmVyID0gZnVuY3Rpb24gKHcsIGgpIHtcbiAgdmFyIGJ1ZmZlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgYnVmZmVyLndpZHRoID0gdztcbiAgYnVmZmVyLmhlaWdodCA9IGg7XG4gIHJldHVybiBbYnVmZmVyLCBidWZmZXIuZ2V0Q29udGV4dCgnMmQnKV07XG59O1xuXG5DUnAkOC5idWZmZXJDYW52YXNJbWFnZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBjeSA9IHRoaXMuY3k7XG4gIHZhciBlbGVzID0gY3kubXV0YWJsZUVsZW1lbnRzKCk7XG4gIHZhciBiYiA9IGVsZXMuYm91bmRpbmdCb3goKTtcbiAgdmFyIGN0clJlY3QgPSB0aGlzLmZpbmRDb250YWluZXJDbGllbnRDb29yZHMoKTtcbiAgdmFyIHdpZHRoID0gb3B0aW9ucy5mdWxsID8gTWF0aC5jZWlsKGJiLncpIDogY3RyUmVjdFsyXTtcbiAgdmFyIGhlaWdodCA9IG9wdGlvbnMuZnVsbCA/IE1hdGguY2VpbChiYi5oKSA6IGN0clJlY3RbM107XG4gIHZhciBzcGVjZE1heERpbXMgPSBudW1iZXIob3B0aW9ucy5tYXhXaWR0aCkgfHwgbnVtYmVyKG9wdGlvbnMubWF4SGVpZ2h0KTtcbiAgdmFyIHB4UmF0aW8gPSB0aGlzLmdldFBpeGVsUmF0aW8oKTtcbiAgdmFyIHNjYWxlID0gMTtcblxuICBpZiAob3B0aW9ucy5zY2FsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgd2lkdGggKj0gb3B0aW9ucy5zY2FsZTtcbiAgICBoZWlnaHQgKj0gb3B0aW9ucy5zY2FsZTtcbiAgICBzY2FsZSA9IG9wdGlvbnMuc2NhbGU7XG4gIH0gZWxzZSBpZiAoc3BlY2RNYXhEaW1zKSB7XG4gICAgdmFyIG1heFNjYWxlVyA9IEluZmluaXR5O1xuICAgIHZhciBtYXhTY2FsZUggPSBJbmZpbml0eTtcblxuICAgIGlmIChudW1iZXIob3B0aW9ucy5tYXhXaWR0aCkpIHtcbiAgICAgIG1heFNjYWxlVyA9IHNjYWxlICogb3B0aW9ucy5tYXhXaWR0aCAvIHdpZHRoO1xuICAgIH1cblxuICAgIGlmIChudW1iZXIob3B0aW9ucy5tYXhIZWlnaHQpKSB7XG4gICAgICBtYXhTY2FsZUggPSBzY2FsZSAqIG9wdGlvbnMubWF4SGVpZ2h0IC8gaGVpZ2h0O1xuICAgIH1cblxuICAgIHNjYWxlID0gTWF0aC5taW4obWF4U2NhbGVXLCBtYXhTY2FsZUgpO1xuICAgIHdpZHRoICo9IHNjYWxlO1xuICAgIGhlaWdodCAqPSBzY2FsZTtcbiAgfVxuXG4gIGlmICghc3BlY2RNYXhEaW1zKSB7XG4gICAgd2lkdGggKj0gcHhSYXRpbztcbiAgICBoZWlnaHQgKj0gcHhSYXRpbztcbiAgICBzY2FsZSAqPSBweFJhdGlvO1xuICB9XG5cbiAgdmFyIGJ1ZmZDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gIGJ1ZmZDYW52YXMud2lkdGggPSB3aWR0aDtcbiAgYnVmZkNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIGJ1ZmZDYW52YXMuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gIGJ1ZmZDYW52YXMuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgdmFyIGJ1ZmZDeHQgPSBidWZmQ2FudmFzLmdldENvbnRleHQoJzJkJyk7IC8vIFJhc3Rlcml6ZSB0aGUgbGF5ZXJzLCBidXQgb25seSBpZiBjb250YWluZXIgaGFzIG5vbnplcm8gc2l6ZVxuXG4gIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkge1xuICAgIGJ1ZmZDeHQuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIGJ1ZmZDeHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcbiAgICB2YXIgenNvcnRlZEVsZXMgPSB0aGlzLmdldENhY2hlZFpTb3J0ZWRFbGVzKCk7XG5cbiAgICBpZiAob3B0aW9ucy5mdWxsKSB7XG4gICAgICAvLyBkcmF3IHRoZSBmdWxsIGJvdW5kcyBvZiB0aGUgZ3JhcGhcbiAgICAgIGJ1ZmZDeHQudHJhbnNsYXRlKC1iYi54MSAqIHNjYWxlLCAtYmIueTEgKiBzY2FsZSk7XG4gICAgICBidWZmQ3h0LnNjYWxlKHNjYWxlLCBzY2FsZSk7XG4gICAgICB0aGlzLmRyYXdFbGVtZW50cyhidWZmQ3h0LCB6c29ydGVkRWxlcyk7XG4gICAgICBidWZmQ3h0LnNjYWxlKDEgLyBzY2FsZSwgMSAvIHNjYWxlKTtcbiAgICAgIGJ1ZmZDeHQudHJhbnNsYXRlKGJiLngxICogc2NhbGUsIGJiLnkxICogc2NhbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkcmF3IHRoZSBjdXJyZW50IHZpZXdcbiAgICAgIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgICAgIHZhciB0cmFuc2xhdGlvbiA9IHtcbiAgICAgICAgeDogcGFuLnggKiBzY2FsZSxcbiAgICAgICAgeTogcGFuLnkgKiBzY2FsZVxuICAgICAgfTtcbiAgICAgIHNjYWxlICo9IGN5Lnpvb20oKTtcbiAgICAgIGJ1ZmZDeHQudHJhbnNsYXRlKHRyYW5zbGF0aW9uLngsIHRyYW5zbGF0aW9uLnkpO1xuICAgICAgYnVmZkN4dC5zY2FsZShzY2FsZSwgc2NhbGUpO1xuICAgICAgdGhpcy5kcmF3RWxlbWVudHMoYnVmZkN4dCwgenNvcnRlZEVsZXMpO1xuICAgICAgYnVmZkN4dC5zY2FsZSgxIC8gc2NhbGUsIDEgLyBzY2FsZSk7XG4gICAgICBidWZmQ3h0LnRyYW5zbGF0ZSgtdHJhbnNsYXRpb24ueCwgLXRyYW5zbGF0aW9uLnkpO1xuICAgIH0gLy8gbmVlZCB0byBmaWxsIGJnIGF0IGVuZCBsaWtlIHRoaXMgaW4gb3JkZXIgdG8gZmlsbCBjbGVhcmVkIHRyYW5zcGFyZW50IHBpeGVscyBpbiBqcGdzXG5cblxuICAgIGlmIChvcHRpb25zLmJnKSB7XG4gICAgICBidWZmQ3h0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdmVyJztcbiAgICAgIGJ1ZmZDeHQuZmlsbFN0eWxlID0gb3B0aW9ucy5iZztcbiAgICAgIGJ1ZmZDeHQucmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGJ1ZmZDeHQuZmlsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBidWZmQ2FudmFzO1xufTtcblxuZnVuY3Rpb24gYjY0VG9CbG9iKGI2NCwgbWltZVR5cGUpIHtcbiAgdmFyIGJ5dGVzID0gYXRvYihiNjQpO1xuICB2YXIgYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgpO1xuICB2YXIgYnVmZlVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykge1xuICAgIGJ1ZmZVaW50OFtpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICByZXR1cm4gbmV3IEJsb2IoW2J1ZmZdLCB7XG4gICAgdHlwZTogbWltZVR5cGVcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGI2NFVyaVRvQjY0KGI2NHVyaSkge1xuICB2YXIgaSA9IGI2NHVyaS5pbmRleE9mKCcsJyk7XG4gIHJldHVybiBiNjR1cmkuc3Vic3RyKGkgKyAxKTtcbn1cblxuZnVuY3Rpb24gb3V0cHV0KG9wdGlvbnMsIGNhbnZhcywgbWltZVR5cGUpIHtcbiAgdmFyIGdldEI2NFVyaSA9IGZ1bmN0aW9uIGdldEI2NFVyaSgpIHtcbiAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTChtaW1lVHlwZSwgb3B0aW9ucy5xdWFsaXR5KTtcbiAgfTtcblxuICBzd2l0Y2ggKG9wdGlvbnMub3V0cHV0KSB7XG4gICAgY2FzZSAnYmxvYi1wcm9taXNlJzpcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjYW52YXMudG9CbG9iKGZ1bmN0aW9uIChibG9iKSB7XG4gICAgICAgICAgICBpZiAoYmxvYiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoYmxvYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdgY2FudmFzLnRvQmxvYigpYCBzZW50IGEgbnVsbCB2YWx1ZSBpbiBpdHMgY2FsbGJhY2snKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgbWltZVR5cGUsIG9wdGlvbnMucXVhbGl0eSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ2Jsb2InOlxuICAgICAgcmV0dXJuIGI2NFRvQmxvYihiNjRVcmlUb0I2NChnZXRCNjRVcmkoKSksIG1pbWVUeXBlKTtcblxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICByZXR1cm4gYjY0VXJpVG9CNjQoZ2V0QjY0VXJpKCkpO1xuXG4gICAgY2FzZSAnYmFzZTY0dXJpJzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGdldEI2NFVyaSgpO1xuICB9XG59XG5cbkNScCQ4LnBuZyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHJldHVybiBvdXRwdXQob3B0aW9ucywgdGhpcy5idWZmZXJDYW52YXNJbWFnZShvcHRpb25zKSwgJ2ltYWdlL3BuZycpO1xufTtcblxuQ1JwJDguanBnID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG91dHB1dChvcHRpb25zLCB0aGlzLmJ1ZmZlckNhbnZhc0ltYWdlKG9wdGlvbnMpLCAnaW1hZ2UvanBlZycpO1xufTtcblxudmFyIENScCQ5ID0ge307XG5cbkNScCQ5Lm5vZGVTaGFwZUltcGwgPSBmdW5jdGlvbiAobmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKSB7XG4gIHN3aXRjaCAobmFtZSkge1xuICAgIGNhc2UgJ2VsbGlwc2UnOlxuICAgICAgcmV0dXJuIHRoaXMuZHJhd0VsbGlwc2VQYXRoKGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgY2FzZSAncG9seWdvbic6XG4gICAgICByZXR1cm4gdGhpcy5kcmF3UG9seWdvblBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKTtcblxuICAgIGNhc2UgJ3JvdW5kLXBvbHlnb24nOlxuICAgICAgcmV0dXJuIHRoaXMuZHJhd1JvdW5kUG9seWdvblBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKTtcblxuICAgIGNhc2UgJ3JvdW5kcmVjdGFuZ2xlJzpcbiAgICBjYXNlICdyb3VuZC1yZWN0YW5nbGUnOlxuICAgICAgcmV0dXJuIHRoaXMuZHJhd1JvdW5kUmVjdGFuZ2xlUGF0aChjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgIGNhc2UgJ2N1dHJlY3RhbmdsZSc6XG4gICAgY2FzZSAnY3V0LXJlY3RhbmdsZSc6XG4gICAgICByZXR1cm4gdGhpcy5kcmF3Q3V0UmVjdGFuZ2xlUGF0aChjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgIGNhc2UgJ2JvdHRvbXJvdW5kcmVjdGFuZ2xlJzpcbiAgICBjYXNlICdib3R0b20tcm91bmQtcmVjdGFuZ2xlJzpcbiAgICAgIHJldHVybiB0aGlzLmRyYXdCb3R0b21Sb3VuZFJlY3RhbmdsZVBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG5cbiAgICBjYXNlICdiYXJyZWwnOlxuICAgICAgcmV0dXJuIHRoaXMuZHJhd0JhcnJlbFBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gIH1cbn07XG5cbnZhciBDUiA9IENhbnZhc1JlbmRlcmVyO1xudmFyIENScCRhID0gQ2FudmFzUmVuZGVyZXIucHJvdG90eXBlO1xuQ1JwJGEuQ0FOVkFTX0xBWUVSUyA9IDM7IC8vXG5cbkNScCRhLlNFTEVDVF9CT1ggPSAwO1xuQ1JwJGEuRFJBRyA9IDE7XG5DUnAkYS5OT0RFID0gMjtcbkNScCRhLkJVRkZFUl9DT1VOVCA9IDM7IC8vXG5cbkNScCRhLlRFWFRVUkVfQlVGRkVSID0gMDtcbkNScCRhLk1PVElPTkJMVVJfQlVGRkVSX05PREUgPSAxO1xuQ1JwJGEuTU9USU9OQkxVUl9CVUZGRVJfRFJBRyA9IDI7XG5cbmZ1bmN0aW9uIENhbnZhc1JlbmRlcmVyKG9wdGlvbnMpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICByLmRhdGEgPSB7XG4gICAgY2FudmFzZXM6IG5ldyBBcnJheShDUnAkYS5DQU5WQVNfTEFZRVJTKSxcbiAgICBjb250ZXh0czogbmV3IEFycmF5KENScCRhLkNBTlZBU19MQVlFUlMpLFxuICAgIGNhbnZhc05lZWRzUmVkcmF3OiBuZXcgQXJyYXkoQ1JwJGEuQ0FOVkFTX0xBWUVSUyksXG4gICAgYnVmZmVyQ2FudmFzZXM6IG5ldyBBcnJheShDUnAkYS5CVUZGRVJfQ09VTlQpLFxuICAgIGJ1ZmZlckNvbnRleHRzOiBuZXcgQXJyYXkoQ1JwJGEuQ0FOVkFTX0xBWUVSUylcbiAgfTtcbiAgdmFyIHRhcEhsT2ZmQXR0ciA9ICctd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3InO1xuICB2YXIgdGFwSGxPZmZTdHlsZSA9ICdyZ2JhKDAsMCwwLDApJztcbiAgci5kYXRhLmNhbnZhc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgdmFyIGNvbnRhaW5lclN0eWxlID0gci5kYXRhLmNhbnZhc0NvbnRhaW5lci5zdHlsZTtcbiAgci5kYXRhLmNhbnZhc0NvbnRhaW5lci5zdHlsZVt0YXBIbE9mZkF0dHJdID0gdGFwSGxPZmZTdHlsZTtcbiAgY29udGFpbmVyU3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICBjb250YWluZXJTdHlsZS56SW5kZXggPSAnMCc7XG4gIGNvbnRhaW5lclN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gIHZhciBjb250YWluZXIgPSBvcHRpb25zLmN5LmNvbnRhaW5lcigpO1xuICBjb250YWluZXIuYXBwZW5kQ2hpbGQoci5kYXRhLmNhbnZhc0NvbnRhaW5lcik7XG4gIGNvbnRhaW5lci5zdHlsZVt0YXBIbE9mZkF0dHJdID0gdGFwSGxPZmZTdHlsZTtcbiAgdmFyIHN0eWxlTWFwID0ge1xuICAgICctd2Via2l0LXVzZXItc2VsZWN0JzogJ25vbmUnLFxuICAgICctbW96LXVzZXItc2VsZWN0JzogJy1tb3otbm9uZScsXG4gICAgJ3VzZXItc2VsZWN0JzogJ25vbmUnLFxuICAgICctd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3InOiAncmdiYSgwLDAsMCwwKScsXG4gICAgJ291dGxpbmUtc3R5bGUnOiAnbm9uZSdcbiAgfTtcblxuICBpZiAobXMoKSkge1xuICAgIHN0eWxlTWFwWyctbXMtdG91Y2gtYWN0aW9uJ10gPSAnbm9uZSc7XG4gICAgc3R5bGVNYXBbJ3RvdWNoLWFjdGlvbiddID0gJ25vbmUnO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBDUnAkYS5DQU5WQVNfTEFZRVJTOyBpKyspIHtcbiAgICB2YXIgY2FudmFzID0gci5kYXRhLmNhbnZhc2VzW2ldID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICAgIHIuZGF0YS5jb250ZXh0c1tpXSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIE9iamVjdC5rZXlzKHN0eWxlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICBjYW52YXMuc3R5bGVba10gPSBzdHlsZU1hcFtrXTtcbiAgICB9KTtcbiAgICBjYW52YXMuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnLCAnbGF5ZXInICsgaSk7XG4gICAgY2FudmFzLnN0eWxlLnpJbmRleCA9IFN0cmluZyhDUnAkYS5DQU5WQVNfTEFZRVJTIC0gaSk7XG4gICAgci5kYXRhLmNhbnZhc0NvbnRhaW5lci5hcHBlbmRDaGlsZChjYW52YXMpO1xuICAgIHIuZGF0YS5jYW52YXNOZWVkc1JlZHJhd1tpXSA9IGZhbHNlO1xuICB9XG5cbiAgci5kYXRhLnRvcENhbnZhcyA9IHIuZGF0YS5jYW52YXNlc1swXTtcbiAgci5kYXRhLmNhbnZhc2VzW0NScCRhLk5PREVdLnNldEF0dHJpYnV0ZSgnZGF0YS1pZCcsICdsYXllcicgKyBDUnAkYS5OT0RFICsgJy1ub2RlJyk7XG4gIHIuZGF0YS5jYW52YXNlc1tDUnAkYS5TRUxFQ1RfQk9YXS5zZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnLCAnbGF5ZXInICsgQ1JwJGEuU0VMRUNUX0JPWCArICctc2VsZWN0Ym94Jyk7XG4gIHIuZGF0YS5jYW52YXNlc1tDUnAkYS5EUkFHXS5zZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnLCAnbGF5ZXInICsgQ1JwJGEuRFJBRyArICctZHJhZycpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgQ1JwJGEuQlVGRkVSX0NPVU5UOyBpKyspIHtcbiAgICByLmRhdGEuYnVmZmVyQ2FudmFzZXNbaV0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgci5kYXRhLmJ1ZmZlckNvbnRleHRzW2ldID0gci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldLmdldENvbnRleHQoJzJkJyk7XG4gICAgci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICByLmRhdGEuYnVmZmVyQ2FudmFzZXNbaV0uc2V0QXR0cmlidXRlKCdkYXRhLWlkJywgJ2J1ZmZlcicgKyBpKTtcbiAgICByLmRhdGEuYnVmZmVyQ2FudmFzZXNbaV0uc3R5bGUuekluZGV4ID0gU3RyaW5nKC1pIC0gMSk7XG4gICAgci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsgLy9yLmRhdGEuY2FudmFzQ29udGFpbmVyLmFwcGVuZENoaWxkKHIuZGF0YS5idWZmZXJDYW52YXNlc1tpXSk7XG4gIH1cblxuICByLnBhdGhzRW5hYmxlZCA9IHRydWU7XG4gIHZhciBlbXB0eUJiID0gbWFrZUJvdW5kaW5nQm94KCk7XG5cbiAgdmFyIGdldEJveENlbnRlciA9IGZ1bmN0aW9uIGdldEJveENlbnRlcihiYikge1xuICAgIHJldHVybiB7XG4gICAgICB4OiAoYmIueDEgKyBiYi54MikgLyAyLFxuICAgICAgeTogKGJiLnkxICsgYmIueTIpIC8gMlxuICAgIH07XG4gIH07XG5cbiAgdmFyIGdldENlbnRlck9mZnNldCA9IGZ1bmN0aW9uIGdldENlbnRlck9mZnNldChiYikge1xuICAgIHJldHVybiB7XG4gICAgICB4OiAtYmIudyAvIDIsXG4gICAgICB5OiAtYmIuaCAvIDJcbiAgICB9O1xuICB9O1xuXG4gIHZhciBiYWNrZ3JvdW5kVGltZXN0YW1wSGFzQ2hhbmdlZCA9IGZ1bmN0aW9uIGJhY2tncm91bmRUaW1lc3RhbXBIYXNDaGFuZ2VkKGVsZSkge1xuICAgIHZhciBfcCA9IGVsZVswXS5fcHJpdmF0ZTtcbiAgICB2YXIgc2FtZSA9IF9wLm9sZEJhY2tncm91bmRUaW1lc3RhbXAgPT09IF9wLmJhY2tncm91bmRUaW1lc3RhbXA7XG4gICAgcmV0dXJuICFzYW1lO1xuICB9O1xuXG4gIHZhciBnZXRTdHlsZUtleSA9IGZ1bmN0aW9uIGdldFN0eWxlS2V5KGVsZSkge1xuICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUubm9kZUtleTtcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxLZXkgPSBmdW5jdGlvbiBnZXRMYWJlbEtleShlbGUpIHtcbiAgICByZXR1cm4gZWxlWzBdLl9wcml2YXRlLmxhYmVsU3R5bGVLZXk7XG4gIH07XG5cbiAgdmFyIGdldFNvdXJjZUxhYmVsS2V5ID0gZnVuY3Rpb24gZ2V0U291cmNlTGFiZWxLZXkoZWxlKSB7XG4gICAgcmV0dXJuIGVsZVswXS5fcHJpdmF0ZS5zb3VyY2VMYWJlbFN0eWxlS2V5O1xuICB9O1xuXG4gIHZhciBnZXRUYXJnZXRMYWJlbEtleSA9IGZ1bmN0aW9uIGdldFRhcmdldExhYmVsS2V5KGVsZSkge1xuICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUudGFyZ2V0TGFiZWxTdHlsZUtleTtcbiAgfTtcblxuICB2YXIgZHJhd0VsZW1lbnQgPSBmdW5jdGlvbiBkcmF3RWxlbWVudChjb250ZXh0LCBlbGUsIGJiLCBzY2FsZWRMYWJlbFNob3duLCB1c2VFbGVPcGFjaXR5KSB7XG4gICAgcmV0dXJuIHIuZHJhd0VsZW1lbnQoY29udGV4dCwgZWxlLCBiYiwgZmFsc2UsIGZhbHNlLCB1c2VFbGVPcGFjaXR5KTtcbiAgfTtcblxuICB2YXIgZHJhd0xhYmVsID0gZnVuY3Rpb24gZHJhd0xhYmVsKGNvbnRleHQsIGVsZSwgYmIsIHNjYWxlZExhYmVsU2hvd24sIHVzZUVsZU9wYWNpdHkpIHtcbiAgICByZXR1cm4gci5kcmF3RWxlbWVudFRleHQoY29udGV4dCwgZWxlLCBiYiwgc2NhbGVkTGFiZWxTaG93biwgJ21haW4nLCB1c2VFbGVPcGFjaXR5KTtcbiAgfTtcblxuICB2YXIgZHJhd1NvdXJjZUxhYmVsID0gZnVuY3Rpb24gZHJhd1NvdXJjZUxhYmVsKGNvbnRleHQsIGVsZSwgYmIsIHNjYWxlZExhYmVsU2hvd24sIHVzZUVsZU9wYWNpdHkpIHtcbiAgICByZXR1cm4gci5kcmF3RWxlbWVudFRleHQoY29udGV4dCwgZWxlLCBiYiwgc2NhbGVkTGFiZWxTaG93biwgJ3NvdXJjZScsIHVzZUVsZU9wYWNpdHkpO1xuICB9O1xuXG4gIHZhciBkcmF3VGFyZ2V0TGFiZWwgPSBmdW5jdGlvbiBkcmF3VGFyZ2V0TGFiZWwoY29udGV4dCwgZWxlLCBiYiwgc2NhbGVkTGFiZWxTaG93biwgdXNlRWxlT3BhY2l0eSkge1xuICAgIHJldHVybiByLmRyYXdFbGVtZW50VGV4dChjb250ZXh0LCBlbGUsIGJiLCBzY2FsZWRMYWJlbFNob3duLCAndGFyZ2V0JywgdXNlRWxlT3BhY2l0eSk7XG4gIH07XG5cbiAgdmFyIGdldEVsZW1lbnRCb3ggPSBmdW5jdGlvbiBnZXRFbGVtZW50Qm94KGVsZSkge1xuICAgIGVsZS5ib3VuZGluZ0JveCgpO1xuICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUuYm9keUJvdW5kcztcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxCb3ggPSBmdW5jdGlvbiBnZXRMYWJlbEJveChlbGUpIHtcbiAgICBlbGUuYm91bmRpbmdCb3goKTtcbiAgICByZXR1cm4gZWxlWzBdLl9wcml2YXRlLmxhYmVsQm91bmRzLm1haW4gfHwgZW1wdHlCYjtcbiAgfTtcblxuICB2YXIgZ2V0U291cmNlTGFiZWxCb3ggPSBmdW5jdGlvbiBnZXRTb3VyY2VMYWJlbEJveChlbGUpIHtcbiAgICBlbGUuYm91bmRpbmdCb3goKTtcbiAgICByZXR1cm4gZWxlWzBdLl9wcml2YXRlLmxhYmVsQm91bmRzLnNvdXJjZSB8fCBlbXB0eUJiO1xuICB9O1xuXG4gIHZhciBnZXRUYXJnZXRMYWJlbEJveCA9IGZ1bmN0aW9uIGdldFRhcmdldExhYmVsQm94KGVsZSkge1xuICAgIGVsZS5ib3VuZGluZ0JveCgpO1xuICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUubGFiZWxCb3VuZHMudGFyZ2V0IHx8IGVtcHR5QmI7XG4gIH07XG5cbiAgdmFyIGlzTGFiZWxWaXNpYmxlQXRTY2FsZSA9IGZ1bmN0aW9uIGlzTGFiZWxWaXNpYmxlQXRTY2FsZShlbGUsIHNjYWxlZExhYmVsU2hvd24pIHtcbiAgICByZXR1cm4gc2NhbGVkTGFiZWxTaG93bjtcbiAgfTtcblxuICB2YXIgZ2V0RWxlbWVudFJvdGF0aW9uUG9pbnQgPSBmdW5jdGlvbiBnZXRFbGVtZW50Um90YXRpb25Qb2ludChlbGUpIHtcbiAgICByZXR1cm4gZ2V0Qm94Q2VudGVyKGdldEVsZW1lbnRCb3goZWxlKSk7XG4gIH07XG5cbiAgdmFyIGFkZFRleHRNYXJnaW4gPSBmdW5jdGlvbiBhZGRUZXh0TWFyZ2luKHByZWZpeCwgcHQsIGVsZSkge1xuICAgIHZhciBwcmUgPSBwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJztcbiAgICByZXR1cm4ge1xuICAgICAgeDogcHQueCArIGVsZS5wc3R5bGUocHJlICsgJ3RleHQtbWFyZ2luLXgnKS5wZlZhbHVlLFxuICAgICAgeTogcHQueSArIGVsZS5wc3R5bGUocHJlICsgJ3RleHQtbWFyZ2luLXknKS5wZlZhbHVlXG4gICAgfTtcbiAgfTtcblxuICB2YXIgZ2V0UnNQdCA9IGZ1bmN0aW9uIGdldFJzUHQoZWxlLCB4LCB5KSB7XG4gICAgdmFyIHJzID0gZWxlWzBdLl9wcml2YXRlLnJzY3JhdGNoO1xuICAgIHJldHVybiB7XG4gICAgICB4OiByc1t4XSxcbiAgICAgIHk6IHJzW3ldXG4gICAgfTtcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxSb3RhdGlvblBvaW50ID0gZnVuY3Rpb24gZ2V0TGFiZWxSb3RhdGlvblBvaW50KGVsZSkge1xuICAgIHJldHVybiBhZGRUZXh0TWFyZ2luKCcnLCBnZXRSc1B0KGVsZSwgJ2xhYmVsWCcsICdsYWJlbFknKSwgZWxlKTtcbiAgfTtcblxuICB2YXIgZ2V0U291cmNlTGFiZWxSb3RhdGlvblBvaW50ID0gZnVuY3Rpb24gZ2V0U291cmNlTGFiZWxSb3RhdGlvblBvaW50KGVsZSkge1xuICAgIHJldHVybiBhZGRUZXh0TWFyZ2luKCdzb3VyY2UnLCBnZXRSc1B0KGVsZSwgJ3NvdXJjZUxhYmVsWCcsICdzb3VyY2VMYWJlbFknKSwgZWxlKTtcbiAgfTtcblxuICB2YXIgZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvblBvaW50ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvblBvaW50KGVsZSkge1xuICAgIHJldHVybiBhZGRUZXh0TWFyZ2luKCd0YXJnZXQnLCBnZXRSc1B0KGVsZSwgJ3RhcmdldExhYmVsWCcsICd0YXJnZXRMYWJlbFknKSwgZWxlKTtcbiAgfTtcblxuICB2YXIgZ2V0RWxlbWVudFJvdGF0aW9uT2Zmc2V0ID0gZnVuY3Rpb24gZ2V0RWxlbWVudFJvdGF0aW9uT2Zmc2V0KGVsZSkge1xuICAgIHJldHVybiBnZXRDZW50ZXJPZmZzZXQoZ2V0RWxlbWVudEJveChlbGUpKTtcbiAgfTtcblxuICB2YXIgZ2V0U291cmNlTGFiZWxSb3RhdGlvbk9mZnNldCA9IGZ1bmN0aW9uIGdldFNvdXJjZUxhYmVsUm90YXRpb25PZmZzZXQoZWxlKSB7XG4gICAgcmV0dXJuIGdldENlbnRlck9mZnNldChnZXRTb3VyY2VMYWJlbEJveChlbGUpKTtcbiAgfTtcblxuICB2YXIgZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvbk9mZnNldCA9IGZ1bmN0aW9uIGdldFRhcmdldExhYmVsUm90YXRpb25PZmZzZXQoZWxlKSB7XG4gICAgcmV0dXJuIGdldENlbnRlck9mZnNldChnZXRUYXJnZXRMYWJlbEJveChlbGUpKTtcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxSb3RhdGlvbk9mZnNldCA9IGZ1bmN0aW9uIGdldExhYmVsUm90YXRpb25PZmZzZXQoZWxlKSB7XG4gICAgdmFyIGJiID0gZ2V0TGFiZWxCb3goZWxlKTtcbiAgICB2YXIgcCA9IGdldENlbnRlck9mZnNldChnZXRMYWJlbEJveChlbGUpKTtcblxuICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgIHN3aXRjaCAoZWxlLnBzdHlsZSgndGV4dC1oYWxpZ24nKS52YWx1ZSkge1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICBwLnggPSAtYmIudztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgcC54ID0gMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChlbGUucHN0eWxlKCd0ZXh0LXZhbGlnbicpLnZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgcC55ID0gLWJiLmg7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICBwLnkgPSAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwO1xuICB9O1xuXG4gIHZhciBlbGVUeHJDYWNoZSA9IHIuZGF0YS5lbGVUeHJDYWNoZSA9IG5ldyBFbGVtZW50VGV4dHVyZUNhY2hlKHIsIHtcbiAgICBnZXRLZXk6IGdldFN0eWxlS2V5LFxuICAgIGRvZXNFbGVJbnZhbGlkYXRlS2V5OiBiYWNrZ3JvdW5kVGltZXN0YW1wSGFzQ2hhbmdlZCxcbiAgICBkcmF3RWxlbWVudDogZHJhd0VsZW1lbnQsXG4gICAgZ2V0Qm91bmRpbmdCb3g6IGdldEVsZW1lbnRCb3gsXG4gICAgZ2V0Um90YXRpb25Qb2ludDogZ2V0RWxlbWVudFJvdGF0aW9uUG9pbnQsXG4gICAgZ2V0Um90YXRpb25PZmZzZXQ6IGdldEVsZW1lbnRSb3RhdGlvbk9mZnNldCxcbiAgICBhbGxvd0VkZ2VUeHJDYWNoaW5nOiBmYWxzZSxcbiAgICBhbGxvd1BhcmVudFR4ckNhY2hpbmc6IGZhbHNlXG4gIH0pO1xuICB2YXIgbGJsVHhyQ2FjaGUgPSByLmRhdGEubGJsVHhyQ2FjaGUgPSBuZXcgRWxlbWVudFRleHR1cmVDYWNoZShyLCB7XG4gICAgZ2V0S2V5OiBnZXRMYWJlbEtleSxcbiAgICBkcmF3RWxlbWVudDogZHJhd0xhYmVsLFxuICAgIGdldEJvdW5kaW5nQm94OiBnZXRMYWJlbEJveCxcbiAgICBnZXRSb3RhdGlvblBvaW50OiBnZXRMYWJlbFJvdGF0aW9uUG9pbnQsXG4gICAgZ2V0Um90YXRpb25PZmZzZXQ6IGdldExhYmVsUm90YXRpb25PZmZzZXQsXG4gICAgaXNWaXNpYmxlOiBpc0xhYmVsVmlzaWJsZUF0U2NhbGVcbiAgfSk7XG4gIHZhciBzbGJUeHJDYWNoZSA9IHIuZGF0YS5zbGJUeHJDYWNoZSA9IG5ldyBFbGVtZW50VGV4dHVyZUNhY2hlKHIsIHtcbiAgICBnZXRLZXk6IGdldFNvdXJjZUxhYmVsS2V5LFxuICAgIGRyYXdFbGVtZW50OiBkcmF3U291cmNlTGFiZWwsXG4gICAgZ2V0Qm91bmRpbmdCb3g6IGdldFNvdXJjZUxhYmVsQm94LFxuICAgIGdldFJvdGF0aW9uUG9pbnQ6IGdldFNvdXJjZUxhYmVsUm90YXRpb25Qb2ludCxcbiAgICBnZXRSb3RhdGlvbk9mZnNldDogZ2V0U291cmNlTGFiZWxSb3RhdGlvbk9mZnNldCxcbiAgICBpc1Zpc2libGU6IGlzTGFiZWxWaXNpYmxlQXRTY2FsZVxuICB9KTtcbiAgdmFyIHRsYlR4ckNhY2hlID0gci5kYXRhLnRsYlR4ckNhY2hlID0gbmV3IEVsZW1lbnRUZXh0dXJlQ2FjaGUociwge1xuICAgIGdldEtleTogZ2V0VGFyZ2V0TGFiZWxLZXksXG4gICAgZHJhd0VsZW1lbnQ6IGRyYXdUYXJnZXRMYWJlbCxcbiAgICBnZXRCb3VuZGluZ0JveDogZ2V0VGFyZ2V0TGFiZWxCb3gsXG4gICAgZ2V0Um90YXRpb25Qb2ludDogZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvblBvaW50LFxuICAgIGdldFJvdGF0aW9uT2Zmc2V0OiBnZXRUYXJnZXRMYWJlbFJvdGF0aW9uT2Zmc2V0LFxuICAgIGlzVmlzaWJsZTogaXNMYWJlbFZpc2libGVBdFNjYWxlXG4gIH0pO1xuICB2YXIgbHlyVHhyQ2FjaGUgPSByLmRhdGEubHlyVHhyQ2FjaGUgPSBuZXcgTGF5ZXJlZFRleHR1cmVDYWNoZShyKTtcbiAgci5vblVwZGF0ZUVsZUNhbGNzKGZ1bmN0aW9uIGludmFsaWRhdGVUZXh0dXJlQ2FjaGVzKHdpbGxEcmF3LCBlbGVzKSB7XG4gICAgLy8gZWFjaCBjYWNoZSBzaG91bGQgY2hlY2sgZm9yIHN1Yi1rZXkgZGlmZiB0byBzZWUgdGhhdCB0aGUgdXBkYXRlIGFmZmVjdHMgdGhhdCBjYWNoZSBwYXJ0aWN1bGFybHlcbiAgICBlbGVUeHJDYWNoZS5pbnZhbGlkYXRlRWxlbWVudHMoZWxlcyk7XG4gICAgbGJsVHhyQ2FjaGUuaW52YWxpZGF0ZUVsZW1lbnRzKGVsZXMpO1xuICAgIHNsYlR4ckNhY2hlLmludmFsaWRhdGVFbGVtZW50cyhlbGVzKTtcbiAgICB0bGJUeHJDYWNoZS5pbnZhbGlkYXRlRWxlbWVudHMoZWxlcyk7IC8vIGFueSBjaGFuZ2UgaW52YWxpZGF0ZXMgdGhlIGxheWVyc1xuXG4gICAgbHlyVHhyQ2FjaGUuaW52YWxpZGF0ZUVsZW1lbnRzKGVsZXMpOyAvLyB1cGRhdGUgdGhlIG9sZCBiZyB0aW1lc3RhbXAgc28gZGlmZnMgY2FuIGJlIGRvbmUgaW4gdGhlIGVsZSB0eHIgY2FjaGVzXG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgZWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfcCA9IGVsZXNbX2ldLl9wcml2YXRlO1xuICAgICAgX3Aub2xkQmFja2dyb3VuZFRpbWVzdGFtcCA9IF9wLmJhY2tncm91bmRUaW1lc3RhbXA7XG4gICAgfVxuICB9KTtcblxuICB2YXIgcmVmaW5lSW5MYXllcnMgPSBmdW5jdGlvbiByZWZpbmVJbkxheWVycyhyZXFzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXFzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBseXJUeHJDYWNoZS5lbnF1ZXVlRWxlbWVudFJlZmluZW1lbnQocmVxc1tpXS5lbGUpO1xuICAgIH1cbiAgfTtcblxuICBlbGVUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xuICBsYmxUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xuICBzbGJUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xuICB0bGJUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xufVxuXG5DUnAkYS5yZWRyYXdIaW50ID0gZnVuY3Rpb24gKGdyb3VwLCBib29sKSB7XG4gIHZhciByID0gdGhpcztcblxuICBzd2l0Y2ggKGdyb3VwKSB7XG4gICAgY2FzZSAnZWxlcyc6XG4gICAgICByLmRhdGEuY2FudmFzTmVlZHNSZWRyYXdbQ1JwJGEuTk9ERV0gPSBib29sO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdkcmFnJzpcbiAgICAgIHIuZGF0YS5jYW52YXNOZWVkc1JlZHJhd1tDUnAkYS5EUkFHXSA9IGJvb2w7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICByLmRhdGEuY2FudmFzTmVlZHNSZWRyYXdbQ1JwJGEuU0VMRUNUX0JPWF0gPSBib29sO1xuICAgICAgYnJlYWs7XG4gIH1cbn07IC8vIHdoZXRoZXIgdG8gdXNlIFBhdGgyRCBjYWNoaW5nIGZvciBkcmF3aW5nXG5cblxudmFyIHBhdGhzSW1wbGQgPSB0eXBlb2YgUGF0aDJEICE9PSAndW5kZWZpbmVkJztcblxuQ1JwJGEucGF0aDJkRW5hYmxlZCA9IGZ1bmN0aW9uIChvbikge1xuICBpZiAob24gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhzRW5hYmxlZDtcbiAgfVxuXG4gIHRoaXMucGF0aHNFbmFibGVkID0gb24gPyB0cnVlIDogZmFsc2U7XG59O1xuXG5DUnAkYS51c2VQYXRocyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHBhdGhzSW1wbGQgJiYgdGhpcy5wYXRoc0VuYWJsZWQ7XG59O1xuXG5DUnAkYS5zZXRJbWdTbW9vdGhpbmcgPSBmdW5jdGlvbiAoY29udGV4dCwgYm9vbCkge1xuICBpZiAoY29udGV4dC5pbWFnZVNtb290aGluZ0VuYWJsZWQgIT0gbnVsbCkge1xuICAgIGNvbnRleHQuaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gYm9vbDtcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0LndlYmtpdEltYWdlU21vb3RoaW5nRW5hYmxlZCA9IGJvb2w7XG4gICAgY29udGV4dC5tb3pJbWFnZVNtb290aGluZ0VuYWJsZWQgPSBib29sO1xuICAgIGNvbnRleHQubXNJbWFnZVNtb290aGluZ0VuYWJsZWQgPSBib29sO1xuICB9XG59O1xuXG5DUnAkYS5nZXRJbWdTbW9vdGhpbmcgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICBpZiAoY29udGV4dC5pbWFnZVNtb290aGluZ0VuYWJsZWQgIT0gbnVsbCkge1xuICAgIHJldHVybiBjb250ZXh0LmltYWdlU21vb3RoaW5nRW5hYmxlZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY29udGV4dC53ZWJraXRJbWFnZVNtb290aGluZ0VuYWJsZWQgfHwgY29udGV4dC5tb3pJbWFnZVNtb290aGluZ0VuYWJsZWQgfHwgY29udGV4dC5tc0ltYWdlU21vb3RoaW5nRW5hYmxlZDtcbiAgfVxufTtcblxuQ1JwJGEubWFrZU9mZnNjcmVlbkNhbnZhcyA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBjYW52YXM7XG5cbiAgaWYgKCh0eXBlb2YgT2Zmc2NyZWVuQ2FudmFzID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoT2Zmc2NyZWVuQ2FudmFzKSkgIT09ICggXCJ1bmRlZmluZWRcIiApKSB7XG4gICAgY2FudmFzID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTtcbiAgfSBlbHNlIHtcbiAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgfVxuXG4gIHJldHVybiBjYW52YXM7XG59O1xuXG5bQ1JwLCBDUnAkMSwgQ1JwJDIsIENScCQzLCBDUnAkNCwgQ1JwJDUsIENScCQ2LCBDUnAkNywgQ1JwJDgsIENScCQ5XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICBleHRlbmQoQ1JwJGEsIHByb3BzKTtcbn0pO1xuXG52YXIgcmVuZGVyZXIgPSBbe1xuICBuYW1lOiAnbnVsbCcsXG4gIGltcGw6IE51bGxSZW5kZXJlclxufSwge1xuICBuYW1lOiAnYmFzZScsXG4gIGltcGw6IEJSXG59LCB7XG4gIG5hbWU6ICdjYW52YXMnLFxuICBpbXBsOiBDUlxufV07XG5cbnZhciBpbmNFeHRzID0gW3tcbiAgdHlwZTogJ2xheW91dCcsXG4gIGV4dGVuc2lvbnM6IGxheW91dFxufSwge1xuICB0eXBlOiAncmVuZGVyZXInLFxuICBleHRlbnNpb25zOiByZW5kZXJlclxufV07XG5cbnZhciBleHRlbnNpb25zID0ge307IC8vIHJlZ2lzdGVyZWQgbW9kdWxlcyBmb3IgZXh0ZW5zaW9ucywgaW5kZXhlZCBieSBuYW1lXG5cbnZhciBtb2R1bGVzID0ge307XG5cbmZ1bmN0aW9uIHNldEV4dGVuc2lvbih0eXBlLCBuYW1lLCByZWdpc3RyYW50KSB7XG4gIHZhciBleHQgPSByZWdpc3RyYW50O1xuXG4gIHZhciBvdmVycmlkZUVyciA9IGZ1bmN0aW9uIG92ZXJyaWRlRXJyKGZpZWxkKSB7XG4gICAgd2FybignQ2FuIG5vdCByZWdpc3RlciBgJyArIG5hbWUgKyAnYCBmb3IgYCcgKyB0eXBlICsgJ2Agc2luY2UgYCcgKyBmaWVsZCArICdgIGFscmVhZHkgZXhpc3RzIGluIHRoZSBwcm90b3R5cGUgYW5kIGNhbiBub3QgYmUgb3ZlcnJpZGRlbicpO1xuICB9O1xuXG4gIGlmICh0eXBlID09PSAnY29yZScpIHtcbiAgICBpZiAoQ29yZS5wcm90b3R5cGVbbmFtZV0pIHtcbiAgICAgIHJldHVybiBvdmVycmlkZUVycihuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ29yZS5wcm90b3R5cGVbbmFtZV0gPSByZWdpc3RyYW50O1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlID09PSAnY29sbGVjdGlvbicpIHtcbiAgICBpZiAoQ29sbGVjdGlvbi5wcm90b3R5cGVbbmFtZV0pIHtcbiAgICAgIHJldHVybiBvdmVycmlkZUVycihuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ29sbGVjdGlvbi5wcm90b3R5cGVbbmFtZV0gPSByZWdpc3RyYW50O1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlID09PSAnbGF5b3V0Jykge1xuICAgIC8vIGZpbGwgaW4gbWlzc2luZyBsYXlvdXQgZnVuY3Rpb25zIGluIHRoZSBwcm90b3R5cGVcbiAgICB2YXIgTGF5b3V0ID0gZnVuY3Rpb24gTGF5b3V0KG9wdGlvbnMpIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICByZWdpc3RyYW50LmNhbGwodGhpcywgb3B0aW9ucyk7IC8vIG1ha2Ugc3VyZSBsYXlvdXQgaGFzIF9wcml2YXRlIGZvciB1c2Ugdy8gc3RkIGFwaXMgbGlrZSAub24oKVxuXG4gICAgICBpZiAoIXBsYWluT2JqZWN0KHRoaXMuX3ByaXZhdGUpKSB7XG4gICAgICAgIHRoaXMuX3ByaXZhdGUgPSB7fTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcHJpdmF0ZS5jeSA9IG9wdGlvbnMuY3k7XG4gICAgICB0aGlzLl9wcml2YXRlLmxpc3RlbmVycyA9IFtdO1xuICAgICAgdGhpcy5jcmVhdGVFbWl0dGVyKCk7XG4gICAgfTtcblxuICAgIHZhciBsYXlvdXRQcm90byA9IExheW91dC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHJlZ2lzdHJhbnQucHJvdG90eXBlKTtcbiAgICB2YXIgb3B0TGF5b3V0Rm5zID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdExheW91dEZucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGZuTmFtZSA9IG9wdExheW91dEZuc1tpXTtcblxuICAgICAgbGF5b3V0UHJvdG9bZm5OYW1lXSA9IGxheW91dFByb3RvW2ZuTmFtZV0gfHwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH07XG4gICAgfSAvLyBlaXRoZXIgLnN0YXJ0KCkgb3IgLnJ1bigpIGlzIGRlZmluZWQsIHNvIGF1dG9nZW4gdGhlIG90aGVyXG5cblxuICAgIGlmIChsYXlvdXRQcm90by5zdGFydCAmJiAhbGF5b3V0UHJvdG8ucnVuKSB7XG4gICAgICBsYXlvdXRQcm90by5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoIWxheW91dFByb3RvLnN0YXJ0ICYmIGxheW91dFByb3RvLnJ1bikge1xuICAgICAgbGF5b3V0UHJvdG8uc3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucnVuKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgcmVnU3RvcCA9IHJlZ2lzdHJhbnQucHJvdG90eXBlLnN0b3A7XG5cbiAgICBsYXlvdXRQcm90by5zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG9wdHMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGlmIChvcHRzICYmIG9wdHMuYW5pbWF0ZSkge1xuICAgICAgICB2YXIgYW5pcyA9IHRoaXMuYW5pbWF0aW9ucztcblxuICAgICAgICBpZiAoYW5pcykge1xuICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhbmlzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYW5pc1tfaV0uc3RvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVnU3RvcCkge1xuICAgICAgICByZWdTdG9wLmNhbGwodGhpcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVtaXQoJ2xheW91dHN0b3AnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIGlmICghbGF5b3V0UHJvdG8uZGVzdHJveSkge1xuICAgICAgbGF5b3V0UHJvdG8uZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGxheW91dFByb3RvLmN5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuY3k7XG4gICAgfTtcblxuICAgIHZhciBnZXRDeSA9IGZ1bmN0aW9uIGdldEN5KGxheW91dCkge1xuICAgICAgcmV0dXJuIGxheW91dC5fcHJpdmF0ZS5jeTtcbiAgICB9O1xuXG4gICAgdmFyIGVtaXR0ZXJPcHRzID0ge1xuICAgICAgYWRkRXZlbnRGaWVsZHM6IGZ1bmN0aW9uIGFkZEV2ZW50RmllbGRzKGxheW91dCwgZXZ0KSB7XG4gICAgICAgIGV2dC5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICAgIGV2dC5jeSA9IGdldEN5KGxheW91dCk7XG4gICAgICAgIGV2dC50YXJnZXQgPSBsYXlvdXQ7XG4gICAgICB9LFxuICAgICAgYnViYmxlOiBmdW5jdGlvbiBidWJibGUoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICAgIHBhcmVudDogZnVuY3Rpb24gcGFyZW50KGxheW91dCkge1xuICAgICAgICByZXR1cm4gZ2V0Q3kobGF5b3V0KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4dGVuZChsYXlvdXRQcm90bywge1xuICAgICAgY3JlYXRlRW1pdHRlcjogZnVuY3Rpb24gY3JlYXRlRW1pdHRlcigpIHtcbiAgICAgICAgdGhpcy5fcHJpdmF0ZS5lbWl0dGVyID0gbmV3IEVtaXR0ZXIoZW1pdHRlck9wdHMsIHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICBlbWl0dGVyOiBmdW5jdGlvbiBlbWl0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5lbWl0dGVyO1xuICAgICAgfSxcbiAgICAgIG9uOiBmdW5jdGlvbiBvbihldnQsIGNiKSB7XG4gICAgICAgIHRoaXMuZW1pdHRlcigpLm9uKGV2dCwgY2IpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICBvbmU6IGZ1bmN0aW9uIG9uZShldnQsIGNiKSB7XG4gICAgICAgIHRoaXMuZW1pdHRlcigpLm9uZShldnQsIGNiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgb25jZTogZnVuY3Rpb24gb25jZShldnQsIGNiKSB7XG4gICAgICAgIHRoaXMuZW1pdHRlcigpLm9uZShldnQsIGNiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgcmVtb3ZlTGlzdGVuZXI6IGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKGV2dCwgY2IpIHtcbiAgICAgICAgdGhpcy5lbWl0dGVyKCkucmVtb3ZlTGlzdGVuZXIoZXZ0LCBjYik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUFsbExpc3RlbmVyczogZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKCkge1xuICAgICAgICB0aGlzLmVtaXR0ZXIoKS5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgZW1pdDogZnVuY3Rpb24gZW1pdChldnQsIHBhcmFtcykge1xuICAgICAgICB0aGlzLmVtaXR0ZXIoKS5lbWl0KGV2dCwgcGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZGVmaW5lJDMuZXZlbnRBbGlhc2VzT24obGF5b3V0UHJvdG8pO1xuICAgIGV4dCA9IExheW91dDsgLy8gcmVwbGFjZSB3aXRoIG91ciB3cmFwcGVkIGxheW91dFxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyZW5kZXJlcicgJiYgbmFtZSAhPT0gJ251bGwnICYmIG5hbWUgIT09ICdiYXNlJykge1xuICAgIC8vIHVzZXIgcmVnaXN0ZXJlZCByZW5kZXJlcnMgaW5oZXJpdCBmcm9tIGJhc2VcbiAgICB2YXIgQmFzZVJlbmRlcmVyID0gZ2V0RXh0ZW5zaW9uKCdyZW5kZXJlcicsICdiYXNlJyk7XG4gICAgdmFyIGJQcm90byA9IEJhc2VSZW5kZXJlci5wcm90b3R5cGU7XG4gICAgdmFyIFJlZ2lzdHJhbnRSZW5kZXJlciA9IHJlZ2lzdHJhbnQ7XG4gICAgdmFyIHJQcm90byA9IHJlZ2lzdHJhbnQucHJvdG90eXBlO1xuXG4gICAgdmFyIFJlbmRlcmVyID0gZnVuY3Rpb24gUmVuZGVyZXIoKSB7XG4gICAgICBCYXNlUmVuZGVyZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIFJlZ2lzdHJhbnRSZW5kZXJlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG5cbiAgICB2YXIgcHJvdG8gPSBSZW5kZXJlci5wcm90b3R5cGU7XG5cbiAgICBmb3IgKHZhciBwTmFtZSBpbiBiUHJvdG8pIHtcbiAgICAgIHZhciBwVmFsID0gYlByb3RvW3BOYW1lXTtcbiAgICAgIHZhciBleGlzdHNJblIgPSByUHJvdG9bcE5hbWVdICE9IG51bGw7XG5cbiAgICAgIGlmIChleGlzdHNJblIpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlRXJyKHBOYW1lKTtcbiAgICAgIH1cblxuICAgICAgcHJvdG9bcE5hbWVdID0gcFZhbDsgLy8gdGFrZSBpbXBsIGZyb20gYmFzZVxuICAgIH1cblxuICAgIGZvciAodmFyIF9wTmFtZSBpbiByUHJvdG8pIHtcbiAgICAgIHByb3RvW19wTmFtZV0gPSByUHJvdG9bX3BOYW1lXTsgLy8gdGFrZSBpbXBsIGZyb20gcmVnaXN0cmFudFxuICAgIH1cblxuICAgIGJQcm90by5jbGllbnRGdW5jdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcHJvdG9bbmFtZV0gPSBwcm90b1tuYW1lXSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGVycm9yKCdSZW5kZXJlciBkb2VzIG5vdCBpbXBsZW1lbnQgYHJlbmRlcmVyLicgKyBuYW1lICsgJygpYCBvbiBpdHMgcHJvdG90eXBlJyk7XG4gICAgICB9O1xuICAgIH0pO1xuICAgIGV4dCA9IFJlbmRlcmVyO1xuICB9XG5cbiAgcmV0dXJuIHNldE1hcCh7XG4gICAgbWFwOiBleHRlbnNpb25zLFxuICAgIGtleXM6IFt0eXBlLCBuYW1lXSxcbiAgICB2YWx1ZTogZXh0XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRFeHRlbnNpb24odHlwZSwgbmFtZSkge1xuICByZXR1cm4gZ2V0TWFwKHtcbiAgICBtYXA6IGV4dGVuc2lvbnMsXG4gICAga2V5czogW3R5cGUsIG5hbWVdXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXRNb2R1bGUodHlwZSwgbmFtZSwgbW9kdWxlVHlwZSwgbW9kdWxlTmFtZSwgcmVnaXN0cmFudCkge1xuICByZXR1cm4gc2V0TWFwKHtcbiAgICBtYXA6IG1vZHVsZXMsXG4gICAga2V5czogW3R5cGUsIG5hbWUsIG1vZHVsZVR5cGUsIG1vZHVsZU5hbWVdLFxuICAgIHZhbHVlOiByZWdpc3RyYW50XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRNb2R1bGUodHlwZSwgbmFtZSwgbW9kdWxlVHlwZSwgbW9kdWxlTmFtZSkge1xuICByZXR1cm4gZ2V0TWFwKHtcbiAgICBtYXA6IG1vZHVsZXMsXG4gICAga2V5czogW3R5cGUsIG5hbWUsIG1vZHVsZVR5cGUsIG1vZHVsZU5hbWVdXG4gIH0pO1xufVxuXG52YXIgZXh0ZW5zaW9uID0gZnVuY3Rpb24gZXh0ZW5zaW9uKCkge1xuICAvLyBlLmcuIGV4dGVuc2lvbigncmVuZGVyZXInLCAnc3ZnJylcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICByZXR1cm4gZ2V0RXh0ZW5zaW9uLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gIH0gLy8gZS5nLiBleHRlbnNpb24oJ3JlbmRlcmVyJywgJ3N2ZycsIHsgLi4uIH0pXG4gIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICAgIHJldHVybiBzZXRFeHRlbnNpb24uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9IC8vIGUuZy4gZXh0ZW5zaW9uKCdyZW5kZXJlcicsICdzdmcnLCAnbm9kZVNoYXBlJywgJ2VsbGlwc2UnKVxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDQpIHtcbiAgICAgICAgcmV0dXJuIGdldE1vZHVsZS5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgfSAvLyBlLmcuIGV4dGVuc2lvbigncmVuZGVyZXInLCAnc3ZnJywgJ25vZGVTaGFwZScsICdlbGxpcHNlJywgeyAuLi4gfSlcbiAgICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDUpIHtcbiAgICAgICAgICByZXR1cm4gc2V0TW9kdWxlLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXJyb3IoJ0ludmFsaWQgZXh0ZW5zaW9uIGFjY2VzcyBzeW50YXgnKTtcbiAgICAgICAgfVxufTsgLy8gYWxsb3dzIGEgY29yZSBpbnN0YW5jZSB0byBhY2Nlc3MgZXh0ZW5zaW9ucyBpbnRlcm5hbGx5XG5cblxuQ29yZS5wcm90b3R5cGUuZXh0ZW5zaW9uID0gZXh0ZW5zaW9uOyAvLyBpbmNsdWRlZCBleHRlbnNpb25zXG5cbmluY0V4dHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JvdXApIHtcbiAgZ3JvdXAuZXh0ZW5zaW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChleHQpIHtcbiAgICBzZXRFeHRlbnNpb24oZ3JvdXAudHlwZSwgZXh0Lm5hbWUsIGV4dC5pbXBsKTtcbiAgfSk7XG59KTtcblxuLy8gKHVzZWZ1bCBmb3IgaW5pdClcblxudmFyIFN0eWxlc2hlZXQgPSBmdW5jdGlvbiBTdHlsZXNoZWV0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3R5bGVzaGVldCkpIHtcbiAgICByZXR1cm4gbmV3IFN0eWxlc2hlZXQoKTtcbiAgfVxuXG4gIHRoaXMubGVuZ3RoID0gMDtcbn07XG5cbnZhciBzaGVldGZuID0gU3R5bGVzaGVldC5wcm90b3R5cGU7XG5cbnNoZWV0Zm4uaW5zdGFuY2VTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnc3R5bGVzaGVldCc7XG59OyAvLyBqdXN0IHN0b3JlIHRoZSBzZWxlY3RvciB0byBiZSBwYXJzZWQgbGF0ZXJcblxuXG5zaGVldGZuLnNlbGVjdG9yID0gZnVuY3Rpb24gKHNlbGVjdG9yKSB7XG4gIHZhciBpID0gdGhpcy5sZW5ndGgrKztcbiAgdGhpc1tpXSA9IHtcbiAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgcHJvcGVydGllczogW11cbiAgfTtcbiAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG59OyAvLyBqdXN0IHN0b3JlIHRoZSBwcm9wZXJ0eSB0byBiZSBwYXJzZWQgbGF0ZXJcblxuXG5zaGVldGZuLmNzcyA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICB2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTtcblxuICBpZiAoc3RyaW5nKG5hbWUpKSB7XG4gICAgdGhpc1tpXS5wcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKHBsYWluT2JqZWN0KG5hbWUpKSB7XG4gICAgdmFyIG1hcCA9IG5hbWU7XG4gICAgdmFyIHByb3BOYW1lcyA9IE9iamVjdC5rZXlzKG1hcCk7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BOYW1lcy5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIGtleSA9IHByb3BOYW1lc1tqXTtcbiAgICAgIHZhciBtYXBWYWwgPSBtYXBba2V5XTtcblxuICAgICAgaWYgKG1hcFZhbCA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcCA9IFN0eWxlLnByb3BlcnRpZXNba2V5XSB8fCBTdHlsZS5wcm9wZXJ0aWVzW2Rhc2gyY2FtZWwoa2V5KV07XG5cbiAgICAgIGlmIChwcm9wID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBfbmFtZSA9IHByb3AubmFtZTtcbiAgICAgIHZhciBfdmFsdWUgPSBtYXBWYWw7XG4gICAgICB0aGlzW2ldLnByb3BlcnRpZXMucHVzaCh7XG4gICAgICAgIG5hbWU6IF9uYW1lLFxuICAgICAgICB2YWx1ZTogX3ZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnNoZWV0Zm4uc3R5bGUgPSBzaGVldGZuLmNzczsgLy8gZ2VuZXJhdGUgYSByZWFsIHN0eWxlIG9iamVjdCBmcm9tIHRoZSBkdW1teSBzdHlsZXNoZWV0XG5cbnNoZWV0Zm4uZ2VuZXJhdGVTdHlsZSA9IGZ1bmN0aW9uIChjeSkge1xuICB2YXIgc3R5bGUgPSBuZXcgU3R5bGUoY3kpO1xuICByZXR1cm4gdGhpcy5hcHBlbmRUb1N0eWxlKHN0eWxlKTtcbn07IC8vIGFwcGVuZCBhIGR1bW15IHN0eWxlc2hlZXQgb2JqZWN0IG9uIGEgcmVhbCBzdHlsZSBvYmplY3RcblxuXG5zaGVldGZuLmFwcGVuZFRvU3R5bGUgPSBmdW5jdGlvbiAoc3R5bGUpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNvbnRleHQgPSB0aGlzW2ldO1xuICAgIHZhciBzZWxlY3RvciA9IGNvbnRleHQuc2VsZWN0b3I7XG4gICAgdmFyIHByb3BzID0gY29udGV4dC5wcm9wZXJ0aWVzO1xuICAgIHN0eWxlLnNlbGVjdG9yKHNlbGVjdG9yKTsgLy8gYXBwbHkgc2VsZWN0b3JcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcHJvcHMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBwcm9wID0gcHJvcHNbal07XG4gICAgICBzdHlsZS5jc3MocHJvcC5uYW1lLCBwcm9wLnZhbHVlKTsgLy8gYXBwbHkgcHJvcGVydHlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59O1xuXG52YXIgdmVyc2lvbiA9IFwiMy4yMC4wXCI7XG5cbnZhciBjeXRvc2NhcGUgPSBmdW5jdGlvbiBjeXRvc2NhcGUob3B0aW9ucykge1xuICAvLyBpZiBubyBvcHRpb25zIHNwZWNpZmllZCwgdXNlIGRlZmF1bHRcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfSAvLyBjcmVhdGUgaW5zdGFuY2VcblxuXG4gIGlmIChwbGFpbk9iamVjdChvcHRpb25zKSkge1xuICAgIHJldHVybiBuZXcgQ29yZShvcHRpb25zKTtcbiAgfSAvLyBhbGxvdyBmb3IgcmVnaXN0cmF0aW9uIG9mIGV4dGVuc2lvbnNcbiAgZWxzZSBpZiAoc3RyaW5nKG9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZXh0ZW5zaW9uLmFwcGx5KGV4dGVuc2lvbiwgYXJndW1lbnRzKTtcbiAgICB9XG59OyAvLyBlLmcuIGN5dG9zY2FwZS51c2UoIHJlcXVpcmUoJ2N5dG9zY2FwZS1mb28nKSwgYmFyIClcblxuXG5jeXRvc2NhcGUudXNlID0gZnVuY3Rpb24gKGV4dCkge1xuICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7IC8vIGFyZ3MgdG8gcGFzcyB0byBleHRcblxuICBhcmdzLnVuc2hpZnQoY3l0b3NjYXBlKTsgLy8gY3l0b3NjYXBlIGlzIGZpcnN0IGFyZyB0byBleHRcblxuICBleHQuYXBwbHkobnVsbCwgYXJncyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuY3l0b3NjYXBlLndhcm5pbmdzID0gZnVuY3Rpb24gKGJvb2wpIHtcbiAgcmV0dXJuIHdhcm5pbmdzKGJvb2wpO1xufTsgLy8gcmVwbGFjZWQgYnkgYnVpbGQgc3lzdGVtXG5cblxuY3l0b3NjYXBlLnZlcnNpb24gPSB2ZXJzaW9uOyAvLyBleHBvc2UgcHVibGljIGFwaXMgKG1vc3RseSBmb3IgZXh0ZW5zaW9ucylcblxuY3l0b3NjYXBlLnN0eWxlc2hlZXQgPSBjeXRvc2NhcGUuU3R5bGVzaGVldCA9IFN0eWxlc2hlZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gY3l0b3NjYXBlO1xuIiwiLy8gTWF0ZXJpYWwgRGVzaWduIEljb25zIHY1LjkuNTVcclxuZXhwb3J0IHZhciBtZGlBYlRlc3RpbmcgPSBcIk00IDJBMiAyIDAgMCAwIDIgNFYxMkg0VjhINlYxMkg4VjRBMiAyIDAgMCAwIDYgMkg0TTQgNEg2VjZINE0yMiAxNS41VjE0QTIgMiAwIDAgMCAyMCAxMkgxNlYyMkgyMEEyIDIgMCAwIDAgMjIgMjBWMTguNUExLjU0IDEuNTQgMCAwIDAgMjAuNSAxN0ExLjU0IDEuNTQgMCAwIDAgMjIgMTUuNU0yMCAyMEgxOFYxOEgyMFYyME0yMCAxNkgxOFYxNEgyME01Ljc5IDIxLjYxTDQuMjEgMjAuMzlMMTguMjEgMi4zOUwxOS43OSAzLjYxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFiYWN1cyA9IFwiTTUgNUg3VjExSDVWNU0xMCA1SDhWMTFIMTBWNU01IDE5SDdWMTNINVYxOU0xMCAxM0g4VjE5SDEwVjE3SDE1VjE1SDEwVjEzTTIgMjFINFYzSDJWMjFNMjAgM1Y3SDEzVjVIMTFWMTFIMTNWOUgyMFYxNUgxOFYxM0gxNlYxOUgxOFYxN0gyMFYyMUgyMlYzSDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFiamFkQXJhYmljID0gXCJNMTIgNEMxMC4wOCA0IDguNSA1LjU4IDguNSA3LjVDOC41IDguNDMgOC44OCA5LjI4IDkuNSA5LjkxQzcuOTcgMTAuOTEgNyAxMi42MiA3IDE0LjVDNyAxNy41MyA5LjQ3IDIwIDEyLjUgMjBDMTQuMjYgMjAgMTYgMTkuNTQgMTcuNSAxOC42NkwxNi41IDE2LjkzQzE1LjI4IDE3LjYzIDEzLjkgMTggMTIuNSAxOEMxMC41NiAxOCA5IDE2LjQ1IDkgMTQuNUM5IDEyLjkxIDEwLjA2IDExLjUzIDExLjU5IDExLjEyTDE2LjggOS43MkwxNi4yOCA3Ljc5TDExLjgzIDlDMTEuMDggOC45IDEwLjUgOC4yOCAxMC41IDcuNUMxMC41IDYuNjYgMTEuMTYgNiAxMiA2QzEyLjI2IDYgMTIuNSA2LjA3IDEyLjc1IDYuMkwxMy43NSA0LjQ3QzEzLjIyIDQuMTYgMTIuNjEgNCAxMiA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFiamFkSGVicmV3ID0gXCJNMy45IDRMOSAxMC4wM0M3LjU4IDEwLjE3IDYuMzYgMTEuMTggNiAxMi41OUw0IDIwSDYuMDdMNy45MiAxMy4xMUM4LjA5IDEyLjQ2IDguNjkgMTIgOS4zNiAxMkgxMC42OUwxNy40NyAyMEgyMC4xTDE1IDEzLjk3QzE2LjQyIDEzLjgzIDE3LjY0IDEyLjgyIDE4IDExLjQxTDIwIDRIMTcuOTNMMTYuMDggMTAuODlDMTUuOTEgMTEuNTQgMTUuMzEgMTIgMTQuNjQgMTJIMTMuMzFMNi41MyA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFidWdpZGFEZXZhbmFnYXJpID0gXCJNOCAzVjVIMTFDMTIuMzIgNSAxMy40MSA1LjgzIDEzLjgyIDdINlY5SDE0VjEwSDEyQzkuMjUgMTAgNyAxMi4yNSA3IDE1QzcgMTcuNzUgOS4yNSAyMCAxMiAyMEMxMi43NyAyMCAxMy40NSAxOS43MyAxNCAxOS4zVjIxSDE2VjE3SDE0QzEzLjU1IDE3LjYyIDEyLjgzIDE4IDEyIDE4QzEwLjMzIDE4IDkgMTYuNjcgOSAxNUM5IDEzLjMzIDEwLjMzIDEyIDEyIDEySDE2VjlIMThWN0gxNS45QzE1LjQzIDQuNzIgMTMuNDEgMyAxMSAzSDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWJ1Z2lkYVRoYWkgPSBcIk05IDIwQzkgMTcuNDQgMTAuODcgMTIuNDIgMTMuODYgNy4yNUMxNC4yOSA2LjUgMTUuMDggNiAxNiA2QzE3LjEyIDYgMTggNi44OCAxOCA4VjIwSDIwVjhDMjAgNS44IDE4LjIgNCAxNiA0QzE0LjM0IDQgMTIuOSA0LjkyIDEyLjEzIDYuMjVDMTAuNTYgOC45NiA5LjYxIDExLjE1IDkgMTMuMDNWNi41QzkgNS4xMyA3Ljg3IDQgNi41IDRDNS4xMyA0IDQgNS4xMyA0IDYuNUM0IDcuODcgNS4xMyA5IDYuNSA5QzYuNjcgOSA2Ljg0IDkgNyA4Ljk1VjIwTTYuNSA2QzYuNzkgNiA3IDYuMjEgNyA2LjVDNyA2Ljc5IDYuNzkgNyA2LjUgN0M2LjIxIDcgNiA2Ljc5IDYgNi41QzYgNi4yMSA2LjIxIDYgNi41IDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjZXNzUG9pbnQgPSBcIk00LjkzLDQuOTNDMy4xMiw2Ljc0IDIsOS4yNCAyLDEyQzIsMTQuNzYgMy4xMiwxNy4yNiA0LjkzLDE5LjA3TDYuMzQsMTcuNjZDNC44OSwxNi4yMiA0LDE0LjIyIDQsMTJDNCw5Ljc5IDQuODksNy43OCA2LjM0LDYuMzRMNC45Myw0LjkzTTE5LjA3LDQuOTNMMTcuNjYsNi4zNEMxOS4xMSw3Ljc4IDIwLDkuNzkgMjAsMTJDMjAsMTQuMjIgMTkuMTEsMTYuMjIgMTcuNjYsMTcuNjZMMTkuMDcsMTkuMDdDMjAuODgsMTcuMjYgMjIsMTQuNzYgMjIsMTJDMjIsOS4yNCAyMC44OCw2Ljc0IDE5LjA3LDQuOTNNNy43Niw3Ljc2QzYuNjcsOC44NSA2LDEwLjM1IDYsMTJDNiwxMy42NSA2LjY3LDE1LjE1IDcuNzYsMTYuMjRMOS4xNywxNC44M0M4LjQ1LDE0LjExIDgsMTMuMTEgOCwxMkM4LDEwLjg5IDguNDUsOS44OSA5LjE3LDkuMTdMNy43Niw3Ljc2TTE2LjI0LDcuNzZMMTQuODMsOS4xN0MxNS41NSw5Ljg5IDE2LDEwLjg5IDE2LDEyQzE2LDEzLjExIDE1LjU1LDE0LjExIDE0LjgzLDE0LjgzTDE2LjI0LDE2LjI0QzE3LjMzLDE1LjE1IDE4LDEzLjY1IDE4LDEyQzE4LDEwLjM1IDE3LjMzLDguODUgMTYuMjQsNy43Nk0xMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkEyLDIgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjZXNzUG9pbnRDaGVjayA9IFwiTTIwLjU5IDE0Ljg0TDIxLjc1IDE2LjI1TDE3IDIxTDE0LjI1IDE4TDE1LjQxIDE2Ljg0TDE3IDE4LjQzTDIwLjU5IDE0Ljg0TTE5LjA3IDQuOTNMMTcuNjYgNi4zNEMxOS4xMSA3Ljc4IDIwIDkuNzkgMjAgMTJWMTIuMzRDMjAuNjggMTIuNTkgMjEuMzMgMTIuOTYgMjEuODggMTMuNDNDMjEuOTUgMTIuOTYgMjIgMTIuNSAyMiAxMkMyMiA5LjI0IDIwLjg4IDYuNzQgMTkuMDcgNC45M00xNS45NiAxMi4zNkMxNi42IDEyLjEzIDE3LjI4IDEyIDE4IDEyQzE4IDEwLjM1IDE3LjMzIDguODUgMTYuMjQgNy43NkwxNC44MyA5LjE3QzE1LjU1IDkuODkgMTYgMTAuODkgMTYgMTJDMTYgMTIuMTIgMTUuOTcgMTIuMjQgMTUuOTYgMTIuMzZNMTIgMTBDMTAuOSAxMCAxMCAxMC45IDEwIDEyUzEwLjkgMTQgMTIgMTQgMTQgMTMuMSAxNCAxMiAxMy4xIDEwIDEyIDEwTTYuMzQgNi4zNEw0LjkzIDQuOTNDMy4xMiA2Ljc0IDIgOS4yNCAyIDEyUzMuMTIgMTcuMjYgNC45MyAxOS4wN0w2LjM0IDE3LjY2QzQuODkgMTYuMjIgNCAxNC4yMiA0IDEyQzQgOS43OSA0Ljg5IDcuNzggNi4zNCA2LjM0TTcuNzYgNy43NkM2LjY3IDguODUgNiAxMC4zNSA2IDEyUzYuNjcgMTUuMTUgNy43NiAxNi4yNEw5LjE3IDE0LjgzQzguNDUgMTQuMTEgOCAxMy4xMSA4IDEyUzguNDUgOS44OSA5LjE3IDkuMTdMNy43NiA3Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY2Vzc1BvaW50TWludXMgPSBcIk0xNiAxMkMxNiAxMC44OSAxNS41NSA5Ljg5IDE0LjgzIDkuMTdMMTYuMjQgNy43NkMxNy4zMyA4Ljg1IDE4IDEwLjM1IDE4IDEyQzE3LjI4IDEyIDE2LjYgMTIuMTMgMTUuOTYgMTIuMzZDMTUuOTcgMTIuMjQgMTYgMTIuMTIgMTYgMTJNMjAgMTIuMzRDMjAuNjggMTIuNTkgMjEuMzMgMTIuOTYgMjEuODggMTMuNDNDMjEuOTUgMTIuOTYgMjIgMTIuNSAyMiAxMkMyMiA5LjI0IDIwLjg4IDYuNzQgMTkuMDcgNC45M0wxNy42NiA2LjM0QzE5LjExIDcuNzggMjAgOS43OSAyMCAxMkMyMCAxMi4xMiAyMCAxMi4yMyAyMCAxMi4zNE0xMiAxMEMxMC45IDEwIDEwIDEwLjkgMTAgMTJTMTAuOSAxNCAxMiAxNCAxNCAxMy4xIDE0IDEyIDEzLjEgMTAgMTIgMTBNNy43NiA3Ljc2QzYuNjcgOC44NSA2IDEwLjM1IDYgMTJTNi42NyAxNS4xNSA3Ljc2IDE2LjI0TDkuMTcgMTQuODNDOC40NSAxNC4xMSA4IDEzLjExIDggMTJTOC40NSA5Ljg5IDkuMTcgOS4xN0w3Ljc2IDcuNzZNNi4zNCA2LjM0TDQuOTMgNC45M0MzLjEyIDYuNzQgMiA5LjI0IDIgMTJTMy4xMiAxNy4yNiA0LjkzIDE5LjA3TDYuMzQgMTcuNjZDNC44OSAxNi4yMiA0IDE0LjIyIDQgMTJDNCA5Ljc5IDQuODkgNy43OCA2LjM0IDYuMzRNMTQgMTlIMjJWMTdIMTRWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjZXNzUG9pbnROZXR3b3JrID0gXCJNNC45MywzLjkzQzMuMTIsNS43NCAyLDguMjQgMiwxMUMyLDEzLjc2IDMuMTIsMTYuMjYgNC45MywxOC4wN0w2LjM0LDE2LjY2QzQuODksMTUuMjIgNCwxMy4yMiA0LDExQzQsOC43OSA0Ljg5LDYuNzggNi4zNCw1LjM0TDQuOTMsMy45M00xOS4wNywzLjkzTDE3LjY2LDUuMzRDMTkuMTEsNi43OCAyMCw4Ljc5IDIwLDExQzIwLDEzLjIyIDE5LjExLDE1LjIyIDE3LjY2LDE2LjY2TDE5LjA3LDE4LjA3QzIwLjg4LDE2LjI2IDIyLDEzLjc2IDIyLDExQzIyLDguMjQgMjAuODgsNS43NCAxOS4wNywzLjkzTTcuNzYsNi43NkM2LjY3LDcuODUgNiw5LjM1IDYsMTFDNiwxMi42NSA2LjY3LDE0LjE1IDcuNzYsMTUuMjRMOS4xNywxMy44M0M4LjQ1LDEzLjExIDgsMTIuMTEgOCwxMUM4LDkuODkgOC40NSw4Ljg5IDkuMTcsOC4xN0w3Ljc2LDYuNzZNMTYuMjQsNi43NkwxNC44Myw4LjE3QzE1LjU1LDguODkgMTYsOS44OSAxNiwxMUMxNiwxMi4xMSAxNS41NSwxMy4xMSAxNC44MywxMy44M0wxNi4yNCwxNS4yNEMxNy4zMywxNC4xNSAxOCwxMi42NSAxOCwxMUMxOCw5LjM1IDE3LjMzLDcuODUgMTYuMjQsNi43Nk0xMiw5QTIsMiAwIDAsMCAxMCwxMUEyLDIgMCAwLDAgMTIsMTNBMiwyIDAgMCwwIDE0LDExQTIsMiAwIDAsMCAxMiw5TTExLDE1VjE5SDEwQTEsMSAwIDAsMCA5LDIwSDJWMjJIOUExLDEgMCAwLDAgMTAsMjNIMTRBMSwxIDAgMCwwIDE1LDIySDIyVjIwSDE1QTEsMSAwIDAsMCAxNCwxOUgxM1YxNUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2Nlc3NQb2ludE5ldHdvcmtPZmYgPSBcIk0xNC44MywxMy44M0MxNS41NSwxMy4xMSAxNiwxMi4xMSAxNiwxMUMxNiw5Ljg5IDE1LjU1LDguODkgMTQuODMsOC4xN0wxNi4yNCw2Ljc2QzE3LjMzLDcuODUgMTgsOS4zNSAxOCwxMUMxOCwxMi42NSAxNy4zMywxNC4xNSAxNi4yNCwxNS4yNEwxNC44MywxMy44M00xNCwxMUEyLDIgMCAwLDAgMTIsOUMxMS40LDkgMTAuODcsOS4yNyAxMC41LDkuNjhMMTMuMzIsMTIuNUMxMy43MywxMi4xMyAxNCwxMS42IDE0LDExTTE3LjY2LDE2LjY2TDE5LjA3LDE4LjA3QzIwLjg4LDE2LjI2IDIyLDEzLjc2IDIyLDExQzIyLDguMjQgMjAuODgsNS43NCAxOS4wNywzLjkzTDE3LjY2LDUuMzRDMTkuMTEsNi43OCAyMCw4Ljc5IDIwLDExQzIwLDEzLjIyIDE5LjExLDE1LjIyIDE3LjY2LDE2LjY2TTIyLDIxLjE4VjIwSDIwLjgyTDIyLDIxLjE4TTIwLjI3LDIyTDIxLDIyLjczTDE5LjczLDI0TDE3LjczLDIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE1LjI3TDguMzQsMTIuNjFDOC41NCwxMy4wNyA4LjgyLDEzLjUgOS4xNywxMy44M0w3Ljc2LDE1LjI0QzYuNjcsMTQuMTUgNiwxMi42NSA2LDExQzYsMTAuNzcgNiwxMC41NCA2LjA0LDEwLjMxTDQuMzcsOC42NEM0LjE0LDkuMzkgNCwxMC4xOCA0LDExQzQsMTMuMjIgNC44OSwxNS4yMiA2LjM0LDE2LjY2TDQuOTMsMTguMDdDMy4xMiwxNi4yNiAyLDEzLjc2IDIsMTFDMiw5LjYxIDIuMjksOC4yOCAyLjgxLDcuMDhMMSw1LjI3TDIuMjgsNEwzLjcsNS40Mkw1LjE1LDYuODdMNi42Myw4LjM1VjguMzVMOC4xNyw5LjlMMTAuMjgsMTJMMTEsMTIuNzFMMTguMjcsMjBIMTguMjhMMjAuMjgsMjJIMjAuMjdNMTUuNzMsMjBMMTMsMTcuMjdWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDE1LjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY2Vzc1BvaW50T2ZmID0gXCJNMjAuODQgMjIuNzNMMTIuMSAxNEMxMi4wNiAxNCAxMi4wMyAxNCAxMiAxNEMxMC45IDE0IDEwIDEzLjExIDEwIDEyQzEwIDExLjk3IDEwIDExLjk0IDEwIDExLjlMOC40IDEwLjI5QzguMTUgMTAuODEgOCAxMS4zOCA4IDEyQzggMTMuMTEgOC40NSAxNC4xMSA5LjE3IDE0LjgzTDcuNzYgMTYuMjRDNi42NyAxNS4xNSA2IDEzLjY1IDYgMTJDNiAxMC44MyA2LjM0IDkuNzQgNi45MyA4LjgyTDUuNSA3LjM3QzQuNTUgOC42NyA0IDEwLjI3IDQgMTJDNCAxNC4yMiA0Ljg5IDE2LjIyIDYuMzQgMTcuNjZMNC45MyAxOS4wN0MzLjEyIDE3LjI2IDIgMTQuNzYgMiAxMkMyIDkuNzIgMi43NyA3LjYzIDQuMDYgNS45NUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTE1LjkzIDEyLjczTDE3LjUzIDE0LjMzQzE3LjgzIDEzLjYxIDE4IDEyLjgzIDE4IDEyQzE4IDEwLjM1IDE3LjMzIDguODUgMTYuMjQgNy43NkwxNC44MyA5LjE3QzE1LjU1IDkuODkgMTYgMTAuODkgMTYgMTJDMTYgMTIuMjUgMTUuOTcgMTIuNSAxNS45MyAxMi43M00xOS4wMyAxNS44M0wyMC41IDE3LjI4QzIxLjQ0IDE1Ljc1IDIyIDEzLjk0IDIyIDEyQzIyIDkuMjQgMjAuODggNi43NCAxOS4wNyA0LjkzTDE3LjY2IDYuMzRDMTkuMTEgNy43OCAyMCA5Ljc5IDIwIDEyQzIwIDEzLjM5IDE5LjY1IDE0LjcgMTkuMDMgMTUuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjZXNzUG9pbnRQbHVzID0gXCJNMTYgMTJDMTYgMTAuODkgMTUuNTUgOS44OSAxNC44MyA5LjE3TDE2LjI0IDcuNzZDMTcuMzMgOC44NSAxOCAxMC4zNSAxOCAxMkMxNy4yOCAxMiAxNi42IDEyLjEzIDE1Ljk2IDEyLjM2QzE1Ljk3IDEyLjI0IDE2IDEyLjEyIDE2IDEyTTIwIDEyLjM0QzIwLjY4IDEyLjU5IDIxLjMzIDEyLjk2IDIxLjg4IDEzLjQzQzIxLjk1IDEyLjk2IDIyIDEyLjUgMjIgMTJDMjIgOS4yNCAyMC44OCA2Ljc0IDE5LjA3IDQuOTNMMTcuNjYgNi4zNEMxOS4xMSA3Ljc4IDIwIDkuNzkgMjAgMTJDMjAgMTIuMTIgMjAgMTIuMjMgMjAgMTIuMzRNMTIgMTBDMTAuOSAxMCAxMCAxMC45IDEwIDEyUzEwLjkgMTQgMTIgMTQgMTQgMTMuMSAxNCAxMiAxMy4xIDEwIDEyIDEwTTYuMzQgNi4zNEw0LjkzIDQuOTNDMy4xMiA2Ljc0IDIgOS4yNCAyIDEyUzMuMTIgMTcuMjYgNC45MyAxOS4wN0w2LjM0IDE3LjY2QzQuODkgMTYuMjIgNCAxNC4yMiA0IDEyQzQgOS43OSA0Ljg5IDcuNzggNi4zNCA2LjM0TTcuNzYgNy43NkM2LjY3IDguODUgNiAxMC4zNSA2IDEyUzYuNjcgMTUuMTUgNy43NiAxNi4yNEw5LjE3IDE0LjgzQzguNDUgMTQuMTEgOCAxMy4xMSA4IDEyUzguNDUgOS44OSA5LjE3IDkuMTdMNy43NiA3Ljc2TTE5IDE0SDE3VjE3SDE0VjE5SDE3VjIySDE5VjE5SDIyVjE3SDE5VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY2Vzc1BvaW50UmVtb3ZlID0gXCJNMTYgMTJDMTYgMTAuODkgMTUuNTUgOS44OSAxNC44MyA5LjE3TDE2LjI0IDcuNzZDMTcuMzMgOC44NSAxOCAxMC4zNSAxOCAxMkMxNy4yOCAxMiAxNi42IDEyLjEzIDE1Ljk2IDEyLjM2QzE1Ljk3IDEyLjI0IDE2IDEyLjEyIDE2IDEyTTYuMzQgNi4zNEw0LjkzIDQuOTNDMy4xMiA2Ljc0IDIgOS4yNCAyIDEyUzMuMTIgMTcuMjYgNC45MyAxOS4wN0w2LjM0IDE3LjY2QzQuODkgMTYuMjIgNCAxNC4yMiA0IDEyQzQgOS43OSA0Ljg5IDcuNzggNi4zNCA2LjM0TTE5LjA3IDQuOTNMMTcuNjYgNi4zNEMxOS4xMSA3Ljc4IDIwIDkuNzkgMjAgMTJDMjAgMTIuMTIgMjAgMTIuMjMgMjAgMTIuMzRDMjAuNjggMTIuNTkgMjEuMzMgMTIuOTYgMjEuODggMTMuNDNDMjEuOTUgMTIuOTYgMjIgMTIuNSAyMiAxMkMyMiA5LjI0IDIwLjg4IDYuNzQgMTkuMDcgNC45M00xMiAxMEMxMC45IDEwIDEwIDEwLjkgMTAgMTJTMTAuOSAxNCAxMiAxNCAxNCAxMy4xIDE0IDEyIDEzLjEgMTAgMTIgMTBNNy43NiA3Ljc2QzYuNjcgOC44NSA2IDEwLjM1IDYgMTJTNi42NyAxNS4xNSA3Ljc2IDE2LjI0TDkuMTcgMTQuODNDOC40NSAxNC4xMSA4IDEzLjExIDggMTJTOC40NSA5Ljg5IDkuMTcgOS4xN0w3Ljc2IDcuNzZNMjAuMTIgMTQuNDZMMTggMTYuNTlMMTUuODggMTQuNDdMMTQuNDcgMTUuODhMMTYuNTkgMThMMTQuNDcgMjAuMTJMMTUuODggMjEuNTNMMTggMTkuNDFMMjAuMTIgMjEuNTNMMjEuNTMgMjAuMTJMMTkuNDEgMThMMjEuNTMgMTUuODhMMjAuMTIgMTQuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudCA9IFwiTTEyLDRBNCw0IDAgMCwxIDE2LDhBNCw0IDAgMCwxIDEyLDEyQTQsNCAwIDAsMSA4LDhBNCw0IDAgMCwxIDEyLDRNMTIsMTRDMTYuNDIsMTQgMjAsMTUuNzkgMjAsMThWMjBINFYxOEM0LDE1Ljc5IDcuNTgsMTQgMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEFsZXJ0ID0gXCJNMTAgNEE0IDQgMCAwIDEgMTQgOEE0IDQgMCAwIDEgMTAgMTJBNCA0IDAgMCAxIDYgOEE0IDQgMCAwIDEgMTAgNE0xMCAxNEMxNC40MiAxNCAxOCAxNS43OSAxOCAxOFYyMEgyVjE4QzIgMTUuNzkgNS41OCAxNCAxMCAxNE0yMCAxMlY3SDIyVjEzSDIwTTIwIDE3VjE1SDIyVjE3SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRBbGVydE91dGxpbmUgPSBcIk0yMCAxMlY3SDIyVjEzSDIwTTIwIDE3SDIyVjE1SDIwTTEwIDEzQzEyLjY3IDEzIDE4IDE0LjM0IDE4IDE3VjIwSDJWMTdDMiAxNC4zNCA3LjMzIDEzIDEwIDEzTTEwIDRBNCA0IDAgMCAxIDE0IDhBNCA0IDAgMCAxIDEwIDEyQTQgNCAwIDAgMSA2IDhBNCA0IDAgMCAxIDEwIDRNMTAgMTQuOUM3LjAzIDE0LjkgMy45IDE2LjM2IDMuOSAxN1YxOC4xSDE2LjFWMTdDMTYuMSAxNi4zNiAxMi45NyAxNC45IDEwIDE0LjlNMTAgNS45QTIuMSAyLjEgMCAwIDAgNy45IDhBMi4xIDIuMSAwIDAgMCAxMCAxMC4xQTIuMSAyLjEgMCAwIDAgMTIuMSA4QTIuMSAyLjEgMCAwIDAgMTAgNS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRBcnJvd0xlZnQgPSBcIk0xOCwyMUwxNSwxOEwxOCwxNVYxN0gyMlYxOUgxOFYyMU0xMCw0QTQsNCAwIDAsMSAxNCw4QTQsNCAwIDAsMSAxMCwxMkE0LDQgMCAwLDEgNiw4QTQsNCAwIDAsMSAxMCw0TTEwLDE0QzExLjE1LDE0IDEyLjI1LDE0LjEyIDEzLjI0LDE0LjM0QzEyLjQ2LDE1LjM1IDEyLDE2LjYyIDEyLDE4QzEyLDE4LjcgMTIuMTIsMTkuMzcgMTIuMzQsMjBIMlYxOEMyLDE1Ljc5IDUuNTgsMTQgMTAsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEFycm93TGVmdE91dGxpbmUgPSBcIk0xOCwyMUwxNSwxOEwxOCwxNVYxN0gyMlYxOUgxOFYyMU0xMywxOEMxMywxOC43MSAxMy4xNSwxOS4zOSAxMy40MiwyMEgyVjE3QzIsMTQuNzkgNS41OCwxMyAxMCwxM0MxMSwxMyAxMS45NiwxMy4wOSAxMi44NSwxMy4yNkMxMy42OCwxMy40MiAxNC40NCwxMy42NCAxNS4xMSwxMy45MkMxMy44MywxNC44MyAxMywxNi4zMiAxMywxOE00LDE3VjE4SDExQzExLDE2Ljk2IDExLjIzLDE1Ljk3IDExLjY0LDE1LjA4TDEwLDE1QzYuNjksMTUgNCwxNS45IDQsMTdNMTAsNEE0LDQgMCAwLDEgMTQsOEE0LDQgMCAwLDEgMTAsMTJBNCw0IDAgMCwxIDYsOEE0LDQgMCAwLDEgMTAsNE0xMCw2QTIsMiAwIDAsMCA4LDhBMiwyIDAgMCwwIDEwLDEwQTIsMiAwIDAsMCAxMiw4QTIsMiAwIDAsMCAxMCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRBcnJvd1JpZ2h0ID0gXCJNMTksMjFWMTlIMTVWMTdIMTlWMTVMMjIsMThMMTksMjFNMTAsNEE0LDQgMCAwLDEgMTQsOEE0LDQgMCAwLDEgMTAsMTJBNCw0IDAgMCwxIDYsOEE0LDQgMCAwLDEgMTAsNE0xMCwxNEMxMS4xNSwxNCAxMi4yNSwxNC4xMiAxMy4yNCwxNC4zNEMxMi40NiwxNS4zNSAxMiwxNi42MiAxMiwxOEMxMiwxOC43IDEyLjEyLDE5LjM3IDEyLjM0LDIwSDJWMThDMiwxNS43OSA1LjU4LDE0IDEwLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRBcnJvd1JpZ2h0T3V0bGluZSA9IFwiTTE5LDIxVjE5SDE1VjE3SDE5VjE1TDIyLDE4TDE5LDIxTTEzLDE4QzEzLDE4LjcxIDEzLjE1LDE5LjM5IDEzLjQyLDIwSDJWMTdDMiwxNC43OSA1LjU4LDEzIDEwLDEzQzExLDEzIDExLjk2LDEzLjA5IDEyLjg1LDEzLjI2QzEzLjY4LDEzLjQyIDE0LjQ0LDEzLjY0IDE1LjExLDEzLjkyQzEzLjgzLDE0LjgzIDEzLDE2LjMyIDEzLDE4TTQsMTdWMThIMTFDMTEsMTYuOTYgMTEuMjMsMTUuOTcgMTEuNjQsMTUuMDhMMTAsMTVDNi42OSwxNSA0LDE1LjkgNCwxN00xMCw0QTQsNCAwIDAsMSAxNCw4QTQsNCAwIDAsMSAxMCwxMkE0LDQgMCAwLDEgNiw4QTQsNCAwIDAsMSAxMCw0TTEwLDZBMiwyIDAgMCwwIDgsOEEyLDIgMCAwLDAgMTAsMTBBMiwyIDAgMCwwIDEyLDhBMiwyIDAgMCwwIDEwLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEJveCA9IFwiTTYsMTdDNiwxNSAxMCwxMy45IDEyLDEzLjlDMTQsMTMuOSAxOCwxNSAxOCwxN1YxOEg2TTE1LDlBMywzIDAgMCwxIDEyLDEyQTMsMyAwIDAsMSA5LDlBMywzIDAgMCwxIDEyLDZBMywzIDAgMCwxIDE1LDlNMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVDMy44OSwzIDMsMy45IDMsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Qm94TXVsdGlwbGUgPSBcIk00LDZIMlYyMEEyLDIgMCAwLDAgNCwyMkgxOFYyMEg0VjZNMjAsMkEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIOEEyLDIgMCAwLDEgNiwxNlY0QTIsMiAwIDAsMSA4LDJIMjBNMTcsN0EzLDMgMCAwLDAgMTQsNEEzLDMgMCAwLDAgMTEsN0EzLDMgMCAwLDAgMTQsMTBBMywzIDAgMCwwIDE3LDdNOCwxNVYxNkgyMFYxNUMyMCwxMyAxNiwxMS45IDE0LDExLjlDMTIsMTEuOSA4LDEzIDgsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEJveE11bHRpcGxlT3V0bGluZSA9IFwiTTQgNkgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMThWMjBINFY2TTE4LjUgMTQuMjVDMTguNSAxMi43NSAxNS41IDEyIDE0IDEyUzkuNSAxMi43NSA5LjUgMTQuMjVWMTVIMTguNU0xNCAxMC4yNUMxNS4yNCAxMC4yNSAxNi4yNSA5LjI0IDE2LjI1IDhTMTUuMjQgNS43NSAxNCA1Ljc1IDExLjc1IDYuNzYgMTEuNzUgOCAxMi43NiAxMC4yNSAxNCAxMC4yNU0yMCAySDhDNi45IDIgNiAyLjkgNiA0VjE2QzYgMTcuMTEgNi45IDE4IDggMThIMjBDMjEuMTEgMTggMjIgMTcuMTEgMjIgMTZWNEMyMiAyLjg5IDIxLjEgMiAyMCAyTTIwIDE2SDhWNEgyMFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Qm94T3V0bGluZSA9IFwiTTE5LDE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzTTE2LjUsMTYuMjVDMTYuNSwxNC43NSAxMy41LDE0IDEyLDE0QzEwLjUsMTQgNy41LDE0Ljc1IDcuNSwxNi4yNVYxN0gxNi41TTEyLDEyLjI1QTIuMjUsMi4yNSAwIDAsMCAxNC4yNSwxMEEyLjI1LDIuMjUgMCAwLDAgMTIsNy43NUEyLjI1LDIuMjUgMCAwLDAgOS43NSwxMEEyLjI1LDIuMjUgMCAwLDAgMTIsMTIuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENhbmNlbCA9IFwiTTEwIDRBNCA0IDAgMCAwIDYgOEE0IDQgMCAwIDAgMTAgMTJBNCA0IDAgMCAwIDE0IDhBNCA0IDAgMCAwIDEwIDRNMTcuNSAxM0MxNSAxMyAxMyAxNSAxMyAxNy41QzEzIDIwIDE1IDIyIDE3LjUgMjJDMjAgMjIgMjIgMjAgMjIgMTcuNUMyMiAxNSAyMCAxMyAxNy41IDEzTTEwIDE0QzUuNTggMTQgMiAxNS43OSAyIDE4VjIwSDExLjVBNi41IDYuNSAwIDAgMSAxMSAxNy41QTYuNSA2LjUgMCAwIDEgMTEuOTUgMTQuMTRDMTEuMzIgMTQuMDYgMTAuNjggMTQgMTAgMTRNMTcuNSAxNC41QzE5LjE2IDE0LjUgMjAuNSAxNS44NCAyMC41IDE3LjVDMjAuNSAxOC4wNiAyMC4zNSAxOC41OCAyMC4wOCAxOUwxNiAxNC45MkMxNi40MiAxNC42NSAxNi45NCAxNC41IDE3LjUgMTQuNU0xNC45MiAxNkwxOSAyMC4wOEMxOC41OCAyMC4zNSAxOC4wNiAyMC41IDE3LjUgMjAuNUMxNS44NCAyMC41IDE0LjUgMTkuMTYgMTQuNSAxNy41QzE0LjUgMTYuOTQgMTQuNjUgMTYuNDIgMTQuOTIgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENhbmNlbE91dGxpbmUgPSBcIk0xMCA0QTQgNCAwIDAgMCA2IDhBNCA0IDAgMCAwIDEwIDEyQTQgNCAwIDAgMCAxNCA4QTQgNCAwIDAgMCAxMCA0TTEwIDZBMiAyIDAgMCAxIDEyIDhBMiAyIDAgMCAxIDEwIDEwQTIgMiAwIDAgMSA4IDhBMiAyIDAgMCAxIDEwIDZNMTAgMTNDNy4zMyAxMyAyIDE0LjMzIDIgMTdWMjBIMTEuNUE2LjUgNi41IDAgMCAxIDExLjAzIDE4LjFIMy45VjE3QzMuOSAxNi4zNiA3LjAzIDE0LjkgMTAgMTQuOUMxMC41IDE0LjkgMTEgMTQuOTUgMTEuNSAxNS4wM0E2LjUgNi41IDAgMCAxIDEyLjU1IDEzLjI5QzExLjYxIDEzLjEgMTAuNzEgMTMgMTAgMTNNMTcuNSAxM0MxNSAxMyAxMyAxNSAxMyAxNy41QzEzIDIwIDE1IDIyIDE3LjUgMjJDMjAgMjIgMjIgMjAgMjIgMTcuNUMyMiAxNSAyMCAxMyAxNy41IDEzTTE3LjUgMTQuNUMxOS4xNiAxNC41IDIwLjUgMTUuODQgMjAuNSAxNy41QzIwLjUgMTguMDYgMjAuMzUgMTguNTggMjAuMDggMTlMMTYgMTQuOTJDMTYuNDIgMTQuNjUgMTYuOTQgMTQuNSAxNy41IDE0LjVNMTQuOTIgMTZMMTkgMjAuMDhDMTguNTggMjAuMzUgMTguMDYgMjAuNSAxNy41IDIwLjVDMTUuODQgMjAuNSAxNC41IDE5LjE2IDE0LjUgMTcuNUMxNC41IDE2Ljk0IDE0LjY1IDE2LjQyIDE0LjkyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDYXNoID0gXCJNMTEgOEMxMSAxMC4yMSA5LjIxIDEyIDcgMTJDNC43OSAxMiAzIDEwLjIxIDMgOEMzIDUuNzkgNC43OSA0IDcgNEM5LjIxIDQgMTEgNS43OSAxMSA4TTExIDE0LjcyVjIwSDBWMThDMCAxNS43OSAzLjEzIDE0IDcgMTRDOC41IDE0IDkuODcgMTQuMjcgMTEgMTQuNzJNMjQgMjBIMTNWM0gyNFYyME0xNiAxMS41QzE2IDEwLjEyIDE3LjEyIDkgMTguNSA5QzE5Ljg4IDkgMjEgMTAuMTIgMjEgMTEuNUMyMSAxMi44OCAxOS44OCAxNCAxOC41IDE0QzE3LjEyIDE0IDE2IDEyLjg4IDE2IDExLjVNMjIgN0MyMC45IDcgMjAgNi4xMSAyMCA1SDE3QzE3IDYuMTEgMTYuMTEgNyAxNSA3VjE2QzE2LjExIDE2IDE3IDE2LjkgMTcgMThIMjBDMjAgMTYuOSAyMC45IDE2IDIyIDE2VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENhc2hPdXRsaW5lID0gXCJNMTYgMTEuNUMxNiAxMC4xMiAxNy4xMiA5IDE4LjUgOVMyMSAxMC4xMiAyMSAxMS41IDE5Ljg4IDE0IDE4LjUgMTQgMTYgMTIuODggMTYgMTEuNU0xMyAzVjIwSDI0VjNIMTNNMjIgMTZDMjAuOSAxNiAyMCAxNi45IDIwIDE4SDE3QzE3IDE2LjkgMTYuMTEgMTYgMTUgMTZWN0MxNi4xMSA3IDE3IDYuMTEgMTcgNUgyMEMyMCA2LjExIDIwLjkgNyAyMiA3VjE2TTcgNkM4LjEgNiA5IDYuOSA5IDhTOC4xIDEwIDcgMTAgNSA5LjEgNSA4IDUuOSA2IDcgNk03IDRDNC43OSA0IDMgNS43OSAzIDhTNC43OSAxMiA3IDEyIDExIDEwLjIxIDExIDggOS4yMSA0IDcgNE03IDE0QzMuMTMgMTQgMCAxNS43OSAwIDE4VjIwSDExVjE4SDJDMiAxNy40MiAzLjc1IDE2IDcgMTZDOC44MyAxNiAxMC4xNyAxNi40NSAxMSAxNi45NVYxNC43MkM5Ljg3IDE0LjI3IDguNSAxNCA3IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDaGVjayA9IFwiTTIxLjEsMTIuNUwyMi41LDEzLjkxTDE1Ljk3LDIwLjVMMTIuNSwxN0wxMy45LDE1LjU5TDE1Ljk3LDE3LjY3TDIxLjEsMTIuNU0xMCwxN0wxMywyMEgzVjE4QzMsMTUuNzkgNi41OCwxNCAxMSwxNEwxMi44OSwxNC4xMUwxMCwxN00xMSw0QTQsNCAwIDAsMSAxNSw4QTQsNCAwIDAsMSAxMSwxMkE0LDQgMCAwLDEgNyw4QTQsNCAwIDAsMSAxMSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDaGVja091dGxpbmUgPSBcIk0yMS4xLDEyLjVMMjIuNSwxMy45MUwxNS45NywyMC41TDEyLjUsMTdMMTMuOSwxNS41OUwxNS45NywxNy42N0wyMS4xLDEyLjVNMTEsNEE0LDQgMCAwLDEgMTUsOEE0LDQgMCAwLDEgMTEsMTJBNCw0IDAgMCwxIDcsOEE0LDQgMCAwLDEgMTEsNE0xMSw2QTIsMiAwIDAsMCA5LDhBMiwyIDAgMCwwIDExLDEwQTIsMiAwIDAsMCAxMyw4QTIsMiAwIDAsMCAxMSw2TTExLDEzQzExLjY4LDEzIDEyLjUsMTMuMDkgMTMuNDEsMTMuMjZMMTEuNzQsMTQuOTNMMTEsMTQuOUM4LjAzLDE0LjkgNC45LDE2LjM2IDQuOSwxN1YxOC4xSDExLjFMMTMsMjBIM1YxN0MzLDE0LjM0IDguMzMsMTMgMTEsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENoaWxkID0gXCJNMTIsMkEzLDMgMCAwLDEgMTUsNUEzLDMgMCAwLDEgMTIsOEEzLDMgMCAwLDEgOSw1QTMsMyAwIDAsMSAxMiwyTTEyLDlDMTMuNjMsOSAxNS4xMiw5LjM1IDE2LjUsMTAuMDVDMTcuODQsMTAuNzYgMTguNSwxMS42MSAxOC41LDEyLjYxVjE4LjM4QzE4LjUsMTkuNSAxNy42NCwyMC40NCAxNS44OSwyMS4xOVYxOUMxNS44OSwxOC4wNSAxNS4wMywxNy4zOCAxMy4zMSwxNi45N0MxMi43NSwxNi44NCAxMi4zMSwxNi43OCAxMiwxNi43OEMxMS4xMywxNi43OCAxMC4zLDE2Ljk1IDkuNTQsMTcuM0M4Ljc3LDE3LjY0IDguMzEsMTguMDggOC4xNiwxOC42MUM5LjUsMTkuMTQgMTAuNzgsMTkuNDEgMTIsMTkuNDFMMTMsMTkuMzFWMjEuOTRMMTIsMjJDMTAuNjMsMjIgOS4zMywyMS43MiA4LjExLDIxLjE5QzYuMzYsMjAuNDQgNS41LDE5LjUgNS41LDE4LjM4VjEyLjYxQzUuNSwxMS42MSA2LjE2LDEwLjc2IDcuNSwxMC4wNUM4Ljg4LDkuMzUgMTAuMzgsOSAxMiw5TTEyLDExQTIsMiAwIDAsMCAxMCwxM0EyLDIgMCAwLDAgMTIsMTVBMiwyIDAgMCwwIDE0LDEzQTIsMiAwIDAsMCAxMiwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Q2hpbGRDaXJjbGUgPSBcIk0xMiwxMkExLjUsMS41IDAgMCwxIDEzLjUsMTMuNUExLjUsMS41IDAgMCwxIDEyLDE1QTEuNSwxLjUgMCAwLDEgMTAuNSwxMy41QTEuNSwxLjUgMCAwLDEgMTIsMTJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsMTZDMTIuNzIsMTYgMTMuNCwxNi4xNSAxNC4wNCwxNi41QzE0LjY4LDE2LjggMTUsMTcuMiAxNSwxNy42N1YxOS40MUMxNi4zNCwxOC44MSAxNywxOC4wOCAxNywxNy4yVjEyLjhDMTcsMTIgMTYuNSwxMS4zNSAxNS40NSwxMC44QzE0LjQsMTAuMjYgMTMuMjUsMTAgMTIsMTBDMTAuNzUsMTAgOS42LDEwLjI2IDguNTUsMTAuOEM3LjUsMTEuMzUgNywxMiA3LDEyLjhWMTcuMkM3LDE4IDcuNTMsMTguNjkgOC42MywxOS4yMkM5LjcyLDE5Ljc1IDEwLjg0LDIwIDEyLDIwTDEzLDE5LjkyVjE3LjkxTDEyLDE4QzExLDE4IDEwLDE3LjggOS4wNSwxNy4zOUM5LjE3LDE3IDkuNTMsMTYuNjkgMTAuMTMsMTYuNDFDMTAuNzIsMTYuMTMgMTEuMzQsMTYgMTIsMTZNMTIsNEEyLjUsMi41IDAgMCwwIDkuNSw2LjVBMi41LDIuNSAwIDAsMCAxMiw5QTIuNSwyLjUgMCAwLDAgMTQuNSw2LjVBMi41LDIuNSAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDaGlsZE91dGxpbmUgPSBcIk0xMiAxN0MxMC45IDE3IDEwIDE2LjEgMTAgMTVDMTAgMTMuOSAxMC45IDEzIDEyIDEzQzEzLjEgMTMgMTQgMTMuOSAxNCAxNUMxNCAxNi4xIDEzLjEgMTcgMTIgMTdNMTIgMTBDMTQuMzQgMTAgMTkgMTEuMTYgMTkgMTMuNVYxOC42M0MxOSAxOS41IDE4LjMxIDIwLjI0IDE3LjM0IDIwLjc5VjEzLjM4QzE3LjM0IDEyLjgyIDE0LjYgMTEuNTQgMTIgMTEuNTRDOS40IDExLjU0IDYuNjYgMTIuODIgNi42NiAxMy4zOFYxOC43NUM2LjY2IDE5IDcuMzEgMTkuNDYgOC4yOCAxOS44NUM5IDE5IDEwLjkzIDE4LjU2IDEyIDE4LjU2QzEzLjMzIDE4LjU2IDE2IDE5LjIyIDE2IDIwLjU2VjIxLjM5QzE0LjYzIDIxLjg4IDEzLjA3IDIyLjEzIDEyIDIyLjEzQzEwLjkzIDIyLjEzIDkuMzggMjEuODggOCAyMS4zOUg4QzYuMzcgMjAuODEgNSAxOS44OSA1IDE4LjYzVjEzLjVDNSAxMS4xNiA5LjY2IDEwIDEyIDEwTTEyIDMuNzVDMTEuMDMgMy43NSAxMC4yNSA0LjUzIDEwLjI1IDUuNUMxMC4yNSA2LjQ3IDExLjAzIDcuMjUgMTIgNy4yNUMxMi45NyA3LjI1IDEzLjc1IDYuNDcgMTMuNzUgNS41QzEzLjc1IDQuNTMgMTIuOTcgMy43NSAxMiAzLjc1TTEyIDlDMTAuMDcgOSA4LjUgNy40MyA4LjUgNS41QzguNSAzLjU3IDEwLjA3IDIgMTIgMkMxMy45MyAyIDE1LjUgMy41NyAxNS41IDUuNUMxNS41IDcuNDMgMTMuOTMgOSAxMiA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDaXJjbGUgPSBcIk0xMiwxOS4yQzkuNSwxOS4yIDcuMjksMTcuOTIgNiwxNkM2LjAzLDE0IDEwLDEyLjkgMTIsMTIuOUMxNCwxMi45IDE3Ljk3LDE0IDE4LDE2QzE2LjcxLDE3LjkyIDE0LjUsMTkuMiAxMiwxOS4yTTEyLDVBMywzIDAgMCwxIDE1LDhBMywzIDAgMCwxIDEyLDExQTMsMyAwIDAsMSA5LDhBMywzIDAgMCwxIDEyLDVNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk03LjA3LDE4LjI4QzcuNSwxNy4zOCAxMC4xMiwxNi41IDEyLDE2LjVDMTMuODgsMTYuNSAxNi41LDE3LjM4IDE2LjkzLDE4LjI4QzE1LjU3LDE5LjM2IDEzLjg2LDIwIDEyLDIwQzEwLjE0LDIwIDguNDMsMTkuMzYgNy4wNywxOC4yOE0xOC4zNiwxNi44M0MxNi45MywxNS4wOSAxMy40NiwxNC41IDEyLDE0LjVDMTAuNTQsMTQuNSA3LjA3LDE1LjA5IDUuNjQsMTYuODNDNC42MiwxNS41IDQsMTMuODIgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDEzLjgyIDE5LjM4LDE1LjUgMTguMzYsMTYuODNNMTIsNkMxMC4wNiw2IDguNSw3LjU2IDguNSw5LjVDOC41LDExLjQ0IDEwLjA2LDEzIDEyLDEzQzEzLjk0LDEzIDE1LjUsMTEuNDQgMTUuNSw5LjVDMTUuNSw3LjU2IDEzLjk0LDYgMTIsNk0xMiwxMUExLjUsMS41IDAgMCwxIDEwLjUsOS41QTEuNSwxLjUgMCAwLDEgMTIsOEExLjUsMS41IDAgMCwxIDEzLjUsOS41QTEuNSwxLjUgMCAwLDEgMTIsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENsb2NrID0gXCJNMTAuNjMsMTQuMUMxMi4yMywxMC41OCAxNi4zOCw5LjAzIDE5LjksMTAuNjNDMjMuNDIsMTIuMjMgMjQuOTcsMTYuMzggMjMuMzcsMTkuOUMyMi4yNCwyMi40IDE5Ljc1LDI0IDE3LDI0QzE0LjMsMjQgMTEuODMsMjIuNDQgMTAuNjcsMjBIMVYxOEMxLjA2LDE2Ljg2IDEuODQsMTUuOTMgMy4zNCwxNS4xOEM0Ljg0LDE0LjQzIDYuNzIsMTQuMDQgOSwxNEM5LjU3LDE0IDEwLjExLDE0LjA1IDEwLjYzLDE0LjFWMTQuMU05LDRDMTAuMTIsNC4wMyAxMS4wNiw0LjQyIDExLjgxLDUuMTdDMTIuNTYsNS45MiAxMi45Myw2Ljg2IDEyLjkzLDhDMTIuOTMsOS4xNCAxMi41NiwxMC4wOCAxMS44MSwxMC44M0MxMS4wNiwxMS41OCAxMC4xMiwxMS45NSA5LDExLjk1QzcuODgsMTEuOTUgNi45NCwxMS41OCA2LjE5LDEwLjgzQzUuNDQsMTAuMDggNS4wNyw5LjE0IDUuMDcsOEM1LjA3LDYuODYgNS40NCw1LjkyIDYuMTksNS4xN0M2Ljk0LDQuNDIgNy44OCw0LjAzIDksNE0xNywyMkE1LDUgMCAwLDAgMjIsMTdBNSw1IDAgMCwwIDE3LDEyQTUsNSAwIDAsMCAxMiwxN0E1LDUgMCAwLDAgMTcsMjJNMTYsMTRIMTcuNVYxNi44MkwxOS45NCwxOC4yM0wxOS4xOSwxOS41M0wxNiwxNy42OVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Q2xvY2tPdXRsaW5lID0gXCJNMTYsMTRIMTcuNVYxNi44MkwxOS45NCwxOC4yM0wxOS4xOSwxOS41M0wxNiwxNy42OVYxNE0xNywxMkE1LDUgMCAwLDAgMTIsMTdBNSw1IDAgMCwwIDE3LDIyQTUsNSAwIDAsMCAyMiwxN0E1LDUgMCAwLDAgMTcsMTJNMTcsMTBBNyw3IDAgMCwxIDI0LDE3QTcsNyAwIDAsMSAxNywyNEMxNC4yMSwyNCAxMS44LDIyLjM2IDEwLjY3LDIwSDFWMTdDMSwxNC4zNCA2LjMzLDEzIDksMTNDOS42LDEzIDEwLjM0LDEzLjA3IDExLjEyLDEzLjJDMTIuMzYsMTEuMjggMTQuNTMsMTAgMTcsMTBNMTAsMTdDMTAsMTYuMyAxMC4xLDE1LjYyIDEwLjI5LDE1QzkuODcsMTQuOTMgOS40MywxNC45IDksMTQuOUM2LjAzLDE0LjkgMi45LDE2LjM2IDIuOSwxN1YxOC4xSDEwLjA5QzEwLjAzLDE3Ljc0IDEwLDE3LjM3IDEwLDE3TTksNEE0LDQgMCAwLDEgMTMsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSw4QTQsNCAwIDAsMSA5LDRNOSw1LjlBMi4xLDIuMSAwIDAsMCA2LjksOEEyLjEsMi4xIDAgMCwwIDksMTAuMUEyLjEsMi4xIDAgMCwwIDExLjEsOEEyLjEsMi4xIDAgMCwwIDksNS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDb2cgPSBcIk0xMCA0QTQgNCAwIDAgMCA2IDhBNCA0IDAgMCAwIDEwIDEyQTQgNCAwIDAgMCAxNCA4QTQgNCAwIDAgMCAxMCA0TTE3IDEyQzE2Ljg3IDEyIDE2Ljc2IDEyLjA5IDE2Ljc0IDEyLjIxTDE2LjU1IDEzLjUzQzE2LjI1IDEzLjY2IDE1Ljk2IDEzLjgyIDE1LjcgMTRMMTQuNDYgMTMuNUMxNC4zNSAxMy41IDE0LjIyIDEzLjUgMTQuMTUgMTMuNjNMMTMuMTUgMTUuMzZDMTMuMDkgMTUuNDcgMTMuMTEgMTUuNiAxMy4yMSAxNS42OEwxNC4yNyAxNi41QzE0LjI1IDE2LjY3IDE0LjI0IDE2LjgzIDE0LjI0IDE3QzE0LjI0IDE3LjE3IDE0LjI1IDE3LjMzIDE0LjI3IDE3LjVMMTMuMjEgMTguMzJDMTMuMTIgMTguNCAxMy4wOSAxOC41MyAxMy4xNSAxOC42NEwxNC4xNSAyMC4zN0MxNC4yMSAyMC41IDE0LjM0IDIwLjUgMTQuNDYgMjAuNUwxNS43IDIwQzE1Ljk2IDIwLjE4IDE2LjI0IDIwLjM1IDE2LjU1IDIwLjQ3TDE2Ljc0IDIxLjc5QzE2Ljc2IDIxLjkxIDE2Ljg2IDIyIDE3IDIySDE5QzE5LjExIDIyIDE5LjIyIDIxLjkxIDE5LjI0IDIxLjc5TDE5LjQzIDIwLjQ3QzE5LjczIDIwLjM0IDIwIDIwLjE4IDIwLjI3IDIwTDIxLjUgMjAuNUMyMS42MyAyMC41IDIxLjc2IDIwLjUgMjEuODMgMjAuMzdMMjIuODMgMTguNjRDMjIuODkgMTguNTMgMjIuODYgMTguNCAyMi43NyAxOC4zMkwyMS43IDE3LjVDMjEuNzIgMTcuMzMgMjEuNzQgMTcuMTcgMjEuNzQgMTdDMjEuNzQgMTYuODMgMjEuNzMgMTYuNjcgMjEuNyAxNi41TDIyLjc2IDE1LjY4QzIyLjg1IDE1LjYgMjIuODggMTUuNDcgMjIuODIgMTUuMzZMMjEuODIgMTMuNjNDMjEuNzYgMTMuNSAyMS42MyAxMy41IDIxLjUgMTMuNUwyMC4yNyAxNEMyMCAxMy44MiAxOS43MyAxMy42NSAxOS40MiAxMy41M0wxOS4yMyAxMi4yMUMxOS4yMiAxMi4wOSAxOS4xMSAxMiAxOSAxMkgxN00xMCAxNEM1LjU4IDE0IDIgMTUuNzkgMiAxOFYyMEgxMS42OEE3IDcgMCAwIDEgMTEgMTdBNyA3IDAgMCAxIDExLjY0IDE0LjA5QzExLjExIDE0LjAzIDEwLjU2IDE0IDEwIDE0TTE4IDE1LjVDMTguODMgMTUuNSAxOS41IDE2LjE3IDE5LjUgMTdDMTkuNSAxNy44MyAxOC44MyAxOC41IDE4IDE4LjVDMTcuMTYgMTguNSAxNi41IDE3LjgzIDE2LjUgMTdDMTYuNSAxNi4xNyAxNy4xNyAxNS41IDE4IDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENvZ091dGxpbmUgPSBcIk0xMCA0QTQgNCAwIDAgMCA2IDhBNCA0IDAgMCAwIDEwIDEyQTQgNCAwIDAgMCAxNCA4QTQgNCAwIDAgMCAxMCA0TTEwIDZBMiAyIDAgMCAxIDEyIDhBMiAyIDAgMCAxIDEwIDEwQTIgMiAwIDAgMSA4IDhBMiAyIDAgMCAxIDEwIDZNMTcgMTJDMTYuODQgMTIgMTYuNzYgMTIuMDggMTYuNzYgMTIuMjRMMTYuNSAxMy41QzE2LjI4IDEzLjY4IDE1Ljk2IDEzLjg0IDE1LjcyIDE0TDE0LjQ0IDEzLjVDMTQuMzYgMTMuNSAxNC4yIDEzLjUgMTQuMTIgMTMuNkwxMy4xNiAxNS4zNkMxMy4wOCAxNS40NCAxMy4wOCAxNS42IDEzLjI0IDE1LjY4TDE0LjI4IDE2LjVWMTcuNUwxMy4yNCAxOC4zMkMxMy4xNiAxOC40IDEzLjA4IDE4LjU2IDEzLjE2IDE4LjY0TDE0LjEyIDIwLjRDMTQuMiAyMC41IDE0LjM2IDIwLjUgMTQuNDQgMjAuNUwxNS43MiAyMEMxNS45NiAyMC4xNiAxNi4yOCAyMC4zMiAxNi41IDIwLjVMMTYuNzYgMjEuNzZDMTYuNzYgMjEuOTIgMTYuODQgMjIgMTcgMjJIMTlDMTkuMDggMjIgMTkuMjQgMjEuOTIgMTkuMjQgMjEuNzZMMTkuNCAyMC41QzE5LjcyIDIwLjMyIDIwLjA0IDIwLjE2IDIwLjI4IDIwTDIxLjUgMjAuNUMyMS42NCAyMC41IDIxLjggMjAuNSAyMS44IDIwLjRMMjIuODQgMTguNjRDMjIuOTIgMTguNTYgMjIuODQgMTguNCAyMi43NiAxOC4zMkwyMS43MiAxNy41VjE2LjVMMjIuNzYgMTUuNjhDMjIuODQgMTUuNiAyMi45MiAxNS40NCAyMi44NCAxNS4zNkwyMS44IDEzLjZDMjEuOCAxMy41IDIxLjY0IDEzLjUgMjEuNSAxMy41TDIwLjI4IDE0QzIwLjA0IDEzLjg0IDE5LjcyIDEzLjY4IDE5LjQgMTMuNUwxOS4yNCAxMi4yNEMxOS4yNCAxMi4wOCAxOS4wOCAxMiAxOSAxMkgxN00xMCAxM0M3LjMzIDEzIDIgMTQuMzMgMiAxN1YyMEgxMS42N0MxMS4zOSAxOS40MSAxMS4xOSAxOC43NyAxMS4wOSAxOC4xSDMuOVYxN0MzLjkgMTYuMzYgNy4wMyAxNC45IDEwIDE0LjlDMTAuNDMgMTQuOSAxMC44NyAxNC45NCAxMS4zIDE1QzExLjUgMTQuMzYgMTEuNzcgMTMuNzYgMTIuMTIgMTMuMjFDMTEuMzQgMTMuMDggMTAuNiAxMyAxMCAxM00xOC4wNCAxNS41QzE4Ljg0IDE1LjUgMTkuNSAxNi4xNiAxOS41IDE3LjA0QzE5LjUgMTcuODQgMTguODQgMTguNSAxOC4wNCAxOC41QzE3LjE2IDE4LjUgMTYuNSAxNy44NCAxNi41IDE3LjA0QzE2LjUgMTYuMTYgMTcuMTYgMTUuNSAxOC4wNCAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDb252ZXJ0ID0gXCJNMTIgMEwxMS4zNCAuMDNMMTUuMTUgMy44NEwxNi41IDIuNUMxOS43NSA0LjA3IDIyLjA5IDcuMjQgMjIuNDUgMTFIMjMuOTVDMjMuNDQgNC44NCAxOC4yOSAwIDEyIDBNMTIgNEMxMC4wNyA0IDguNSA1LjU3IDguNSA3LjVDOC41IDkuNDMgMTAuMDcgMTEgMTIgMTFDMTMuOTMgMTEgMTUuNSA5LjQzIDE1LjUgNy41QzE1LjUgNS41NyAxMy45MyA0IDEyIDRNLjA1IDEzQy41NiAxOS4xNiA1LjcxIDI0IDEyIDI0TDEyLjY2IDIzLjk3TDguODUgMjAuMTZMNy41IDIxLjVDNC4yNSAxOS45NCAxLjkxIDE2Ljc2IDEuNTUgMTNILjA1TTEyIDEzQzguMTMgMTMgNSAxNC41NyA1IDE2LjVWMThIMTlWMTYuNUMxOSAxNC41NyAxNS44NyAxMyAxMiAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Q29udmVydE91dGxpbmUgPSBcIk0xMiAwTDExLjM0IC4wM0wxNS4xNSAzLjg0TDE2LjUgMi41QzE5Ljc1IDQuMDcgMjIuMDkgNy4yNCAyMi40NSAxMUgyMy45NUMyMy40NCA0Ljg0IDE4LjI5IDAgMTIgME0xMiA0QzEwLjA3IDQgOC41IDUuNTcgOC41IDcuNUM4LjUgOS40MyAxMC4wNyAxMSAxMiAxMUMxMy45MyAxMSAxNS41IDkuNDMgMTUuNSA3LjVDMTUuNSA1LjU3IDEzLjkzIDQgMTIgNE0xMiA2QzEyLjgzIDYgMTMuNSA2LjY3IDEzLjUgNy41QzEzLjUgOC4zMyAxMi44MyA5IDEyIDlDMTEuMTcgOSAxMC41IDguMzMgMTAuNSA3LjVDMTAuNSA2LjY3IDExLjE3IDYgMTIgNk0uMDUgMTNDLjU2IDE5LjE2IDUuNzEgMjQgMTIgMjRMMTIuNjYgMjMuOTdMOC44NSAyMC4xNkw3LjUgMjEuNUM0LjI1IDE5Ljk0IDEuOTEgMTYuNzYgMS41NSAxM0guMDVNMTIgMTNDOC4xMyAxMyA1IDE0LjU3IDUgMTYuNVYxOEgxOVYxNi41QzE5IDE0LjU3IDE1Ljg3IDEzIDEyIDEzTTEyIDE1QzE0LjExIDE1IDE1LjYxIDE1LjUzIDE2LjM5IDE2SDcuNjFDOC4zOSAxNS41MyA5Ljg5IDE1IDEyIDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDb3dib3lIYXQgPSBcIk0yMCAyMkg0VjIwQzQgMTcuOCA3LjYgMTYgMTIgMTZTMjAgMTcuOCAyMCAyME04IDlIMTZWMTBDMTYgMTIuMiAxNC4yIDE0IDEyIDE0UzggMTIuMiA4IDEwTTE5IDRDMTguNCA0IDE4IDQuNCAxOCA1VjZIMTYuNUwxNS4xIDNDMTUgMi44IDE0LjkgMi42IDE0LjcgMi41QzE0LjIgMiAxMy40IDEuOSAxMi43IDIuMkwxMiAyLjRMMTEuMyAyLjFDMTAuNiAxLjggOS44IDEuOSA5LjMgMi40QzkuMSAyLjYgOSAyLjggOC45IDNMNy41IDZINlY1QzYgNC40IDUuNiA0IDUgNFM0IDQuNCA0IDVWNkM0IDcuMSA0LjkgOCA2IDhIMThDMTkuMSA4IDIwIDcuMSAyMCA2VjVDMjAgNC41IDE5LjYgNCAxOSA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnREZXRhaWxzID0gXCJNMTEgOUMxMSAxMC42NiA5LjY2IDEyIDggMTJDNi4zNCAxMiA1IDEwLjY2IDUgOUM1IDcuMzQgNi4zNCA2IDggNkM5LjY2IDYgMTEgNy4zNCAxMSA5TTE0IDIwSDJWMThDMiAxNS43OSA0LjY5IDE0IDggMTRDMTEuMzEgMTQgMTQgMTUuNzkgMTQgMThNMjIgMTJWMTRIMTNWMTJNMjIgOFYxMEgxM1Y4TTIyIDRWNkgxM1Y0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnREZXRhaWxzT3V0bGluZSA9IFwiTTExIDlDMTEgMTAuNjYgOS42NiAxMiA4IDEyQzYuMzQgMTIgNSAxMC42NiA1IDlDNSA3LjM0IDYuMzQgNiA4IDZDOS42NiA2IDExIDcuMzQgMTEgOU0xNCAyMEgyVjE4QzIgMTUuNzkgNC42OSAxNCA4IDE0QzExLjMxIDE0IDE0IDE1Ljc5IDE0IDE4TTcgOUM3IDkuNTUgNy40NSAxMCA4IDEwQzguNTUgMTAgOSA5LjU1IDkgOUM5IDguNDUgOC41NSA4IDggOEM3LjQ1IDggNyA4LjQ1IDcgOU00IDE4SDEyQzEyIDE2LjkgMTAuMjEgMTYgOCAxNkM1Ljc5IDE2IDQgMTYuOSA0IDE4TTIyIDEyVjE0SDEzVjEyTTIyIDhWMTBIMTNWOE0yMiA0VjZIMTNWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50RWRpdCA9IFwiTTIxLjcsMTMuMzVMMjAuNywxNC4zNUwxOC42NSwxMi4zTDE5LjY1LDExLjNDMTkuODYsMTEuMDkgMjAuMjEsMTEuMDkgMjAuNDIsMTEuM0wyMS43LDEyLjU4QzIxLjkxLDEyLjc5IDIxLjkxLDEzLjE0IDIxLjcsMTMuMzVNMTIsMTguOTRMMTguMDYsMTIuODhMMjAuMTEsMTQuOTNMMTQuMDYsMjFIMTJWMTguOTRNMTIsMTRDNy41OCwxNCA0LDE1Ljc5IDQsMThWMjBIMTBWMTguMTFMMTQsMTQuMTFDMTMuMzQsMTQuMDMgMTIuNjcsMTQgMTIsMTRNMTIsNEE0LDQgMCAwLDAgOCw4QTQsNCAwIDAsMCAxMiwxMkE0LDQgMCAwLDAgMTYsOEE0LDQgMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50RWRpdE91dGxpbmUgPSBcIk0yIDE3VjIwSDEwVjE4LjExSDMuOVYxN0MzLjkgMTYuMzYgNy4wMyAxNC45IDEwIDE0LjlDMTAuOTYgMTQuOTEgMTEuOTEgMTUuMDQgMTIuODMgMTUuMjhMMTQuMzUgMTMuNzZDMTIuOTUgMTMuMjkgMTEuNSAxMy4wMyAxMCAxM0M3LjMzIDEzIDIgMTQuMzMgMiAxN00xMCA0QzcuNzkgNCA2IDUuNzkgNiA4UzcuNzkgMTIgMTAgMTIgMTQgMTAuMjEgMTQgOCAxMi4yMSA0IDEwIDRNMTAgMTBDOC45IDEwIDggOS4xMSA4IDhTOC45IDYgMTAgNiAxMiA2LjkgMTIgOCAxMS4xMSAxMCAxMCAxME0yMS43IDEzLjM1TDIwLjcgMTQuMzVMMTguNjUgMTIuMzVMMTkuNjUgMTEuMzVDMTkuODYgMTEuMTQgMjAuMjEgMTEuMTQgMjAuNDIgMTEuMzVMMjEuNyAxMi42M0MyMS45MSAxMi44NCAyMS45MSAxMy4xOSAyMS43IDEzLjRNMTIgMTguOTRMMTguMDYgMTIuODhMMjAuMTEgMTQuODhMMTQuMTEgMjAuOTVIMTJWMTguOTRcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50R3JvdXAgPSBcIk0xMiw1LjVBMy41LDMuNSAwIDAsMSAxNS41LDlBMy41LDMuNSAwIDAsMSAxMiwxMi41QTMuNSwzLjUgMCAwLDEgOC41LDlBMy41LDMuNSAwIDAsMSAxMiw1LjVNNSw4QzUuNTYsOCA2LjA4LDguMTUgNi41Myw4LjQyQzYuMzgsOS44NSA2LjgsMTEuMjcgNy42NiwxMi4zOEM3LjE2LDEzLjM0IDYuMTYsMTQgNSwxNEEzLDMgMCAwLDEgMiwxMUEzLDMgMCAwLDEgNSw4TTE5LDhBMywzIDAgMCwxIDIyLDExQTMsMyAwIDAsMSAxOSwxNEMxNy44NCwxNCAxNi44NCwxMy4zNCAxNi4zNCwxMi4zOEMxNy4yLDExLjI3IDE3LjYyLDkuODUgMTcuNDcsOC40MkMxNy45Miw4LjE1IDE4LjQ0LDggMTksOE01LjUsMTguMjVDNS41LDE2LjE4IDguNDEsMTQuNSAxMiwxNC41QzE1LjU5LDE0LjUgMTguNSwxNi4xOCAxOC41LDE4LjI1VjIwSDUuNVYxOC4yNU0wLDIwVjE4LjVDMCwxNy4xMSAxLjg5LDE1Ljk0IDQuNDUsMTUuNkMzLjg2LDE2LjI4IDMuNSwxNy4yMiAzLjUsMTguMjVWMjBIME0yNCwyMEgyMC41VjE4LjI1QzIwLjUsMTcuMjIgMjAuMTQsMTYuMjggMTkuNTUsMTUuNkMyMi4xMSwxNS45NCAyNCwxNy4xMSAyNCwxOC41VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRHcm91cE91dGxpbmUgPSBcIk0xMiw1QTMuNSwzLjUgMCAwLDAgOC41LDguNUEzLjUsMy41IDAgMCwwIDEyLDEyQTMuNSwzLjUgMCAwLDAgMTUuNSw4LjVBMy41LDMuNSAwIDAsMCAxMiw1TTEyLDdBMS41LDEuNSAwIDAsMSAxMy41LDguNUExLjUsMS41IDAgMCwxIDEyLDEwQTEuNSwxLjUgMCAwLDEgMTAuNSw4LjVBMS41LDEuNSAwIDAsMSAxMiw3TTUuNSw4QTIuNSwyLjUgMCAwLDAgMywxMC41QzMsMTEuNDQgMy41MywxMi4yNSA0LjI5LDEyLjY4QzQuNjUsMTIuODggNS4wNiwxMyA1LjUsMTNDNS45NCwxMyA2LjM1LDEyLjg4IDYuNzEsMTIuNjhDNy4wOCwxMi40NyA3LjM5LDEyLjE3IDcuNjIsMTEuODFDNi44OSwxMC44NiA2LjUsOS43IDYuNSw4LjVDNi41LDguNDEgNi41LDguMzEgNi41LDguMjJDNi4yLDguMDggNS44Niw4IDUuNSw4TTE4LjUsOEMxOC4xNCw4IDE3LjgsOC4wOCAxNy41LDguMjJDMTcuNSw4LjMxIDE3LjUsOC40MSAxNy41LDguNUMxNy41LDkuNyAxNy4xMSwxMC44NiAxNi4zOCwxMS44MUMxNi41LDEyIDE2LjYzLDEyLjE1IDE2Ljc4LDEyLjNDMTYuOTQsMTIuNDUgMTcuMSwxMi41OCAxNy4yOSwxMi42OEMxNy42NSwxMi44OCAxOC4wNiwxMyAxOC41LDEzQzE4Ljk0LDEzIDE5LjM1LDEyLjg4IDE5LjcxLDEyLjY4QzIwLjQ3LDEyLjI1IDIxLDExLjQ0IDIxLDEwLjVBMi41LDIuNSAwIDAsMCAxOC41LDhNMTIsMTRDOS42NiwxNCA1LDE1LjE3IDUsMTcuNVYxOUgxOVYxNy41QzE5LDE1LjE3IDE0LjM0LDE0IDEyLDE0TTQuNzEsMTQuNTVDMi43OCwxNC43OCAwLDE1Ljc2IDAsMTcuNVYxOUgzVjE3LjA3QzMsMTYuMDYgMy42OSwxNS4yMiA0LjcxLDE0LjU1TTE5LjI5LDE0LjU1QzIwLjMxLDE1LjIyIDIxLDE2LjA2IDIxLDE3LjA3VjE5SDI0VjE3LjVDMjQsMTUuNzYgMjEuMjIsMTQuNzggMTkuMjksMTQuNTVNMTIsMTZDMTMuNTMsMTYgMTUuMjQsMTYuNSAxNi4yMywxN0g3Ljc3QzguNzYsMTYuNSAxMC40NywxNiAxMiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50SGFyZEhhdCA9IFwiTTEyLDE1QzcuNTgsMTUgNCwxNi43OSA0LDE5VjIxSDIwVjE5QzIwLDE2Ljc5IDE2LjQyLDE1IDEyLDE1TTgsOUE0LDQgMCAwLDAgMTIsMTNBNCw0IDAgMCwwIDE2LDlNMTEuNSwyQzExLjIsMiAxMSwyLjIxIDExLDIuNVY1LjVIMTBWM0MxMCwzIDcuNzUsMy44NiA3Ljc1LDYuNzVDNy43NSw2Ljc1IDcsNi44OSA3LDhIMTdDMTYuOTUsNi44OSAxNi4yNSw2Ljc1IDE2LjI1LDYuNzVDMTYuMjUsMy44NiAxNCwzIDE0LDNWNS41SDEzVjIuNUMxMywyLjIxIDEyLjgxLDIgMTIuNSwySDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEhlYXJ0ID0gXCJNMTUsMTRDMTIuMywxNCA3LDE1LjMgNywxOFYyMEgyM1YxOEMyMywxNS4zIDE3LjcsMTQgMTUsMTRNMTUsMTJBNCw0IDAgMCwwIDE5LDhBNCw0IDAgMCwwIDE1LDRBNCw0IDAgMCwwIDExLDhBNCw0IDAgMCwwIDE1LDEyTTUsMTVMNC40LDE0LjVDMi40LDEyLjYgMSwxMS40IDEsOS45QzEsOC43IDIsNy43IDMuMiw3LjdDMy45LDcuNyA0LjYsOCA1LDguNUM1LjQsOCA2LjEsNy43IDYuOCw3LjdDOCw3LjcgOSw4LjYgOSw5LjlDOSwxMS40IDcuNiwxMi42IDUuNiwxNC41TDUsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEhlYXJ0T3V0bGluZSA9IFwiTTUsMTVMNC40LDE0LjVDMi40LDEyLjYgMSwxMS40IDEsOS45QzEsOC43IDIsNy43IDMuMiw3LjdDMy45LDcuNyA0LjYsOCA1LDguNUM1LjQsOCA2LjEsNy43IDYuOCw3LjdDOCw3LjcgOSw4LjYgOSw5LjlDOSwxMS40IDcuNiwxMi42IDUuNiwxNC41TDUsMTVNMTUsNEE0LDQgMCAwLDAgMTEsOEE0LDQgMCAwLDAgMTUsMTJBNCw0IDAgMCwwIDE5LDhBNCw0IDAgMCwwIDE1LDRNMTUsMTAuMUEyLjEsMi4xIDAgMCwxIDEyLjksOEEyLjEsMi4xIDAgMCwxIDE1LDUuOUMxNi4xNiw1LjkgMTcuMSw2Ljg0IDE3LjEsOEMxNy4xLDkuMTYgMTYuMTYsMTAuMSAxNSwxMC4xTTE1LDEzQzEyLjMzLDEzIDcsMTQuMzMgNywxN1YyMEgyM1YxN0MyMywxNC4zMyAxNy42NywxMyAxNSwxM00yMS4xLDE4LjFIOC45VjE3QzguOSwxNi4zNiAxMiwxNC45IDE1LDE0LjlDMTcuOTcsMTQuOSAyMS4xLDE2LjM2IDIxLjEsMTdWMTguMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50S2V5ID0gXCJNMTEsMTBWMTJIMTBWMTRIOFYxMkg1LjgzQzUuNDIsMTMuMTcgNC4zMSwxNCAzLDE0QTMsMyAwIDAsMSAwLDExQTMsMyAwIDAsMSAzLDhDNC4zMSw4IDUuNDIsOC44MyA1LjgzLDEwSDExTTMsMTBBMSwxIDAgMCwwIDIsMTFBMSwxIDAgMCwwIDMsMTJBMSwxIDAgMCwwIDQsMTFBMSwxIDAgMCwwIDMsMTBNMTYsMTRDMTguNjcsMTQgMjQsMTUuMzQgMjQsMThWMjBIOFYxOEM4LDE1LjM0IDEzLjMzLDE0IDE2LDE0TTE2LDEyQTQsNCAwIDAsMSAxMiw4QTQsNCAwIDAsMSAxNiw0QTQsNCAwIDAsMSAyMCw4QTQsNCAwIDAsMSAxNiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50S2V5T3V0bGluZSA9IFwiTTUuODMsMTBDNS40Miw4LjgzIDQuMzEsOCAzLDhBMywzIDAgMCwwIDAsMTFBMywzIDAgMCwwIDMsMTRDNC4zMSwxNCA1LjQyLDEzLjE3IDUuODMsMTJIOFYxNEgxMFYxMkgxMVYxMEg1LjgzTTMsMTJBMSwxIDAgMCwxIDIsMTFBMSwxIDAgMCwxIDMsMTBBMSwxIDAgMCwxIDQsMTFBMSwxIDAgMCwxIDMsMTJNMTYsNEE0LDQgMCAwLDAgMTIsOEE0LDQgMCAwLDAgMTYsMTJBNCw0IDAgMCwwIDIwLDhBNCw0IDAgMCwwIDE2LDRNMTYsMTAuMUEyLjEsMi4xIDAgMCwxIDEzLjksOEEyLjEsMi4xIDAgMCwxIDE2LDUuOUMxNy4xNiw1LjkgMTguMSw2Ljg0IDE4LjEsOEMxOC4xLDkuMTYgMTcuMTYsMTAuMSAxNiwxMC4xTTE2LDEzQzEzLjMzLDEzIDgsMTQuMzMgOCwxN1YyMEgyNFYxN0MyNCwxNC4zMyAxOC42NywxMyAxNiwxM00yMi4xLDE4LjFIOS45VjE3QzkuOSwxNi4zNiAxMywxNC45IDE2LDE0LjlDMTguOTcsMTQuOSAyMi4xLDE2LjM2IDIyLjEsMTdWMTguMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TG9jayA9IFwiTTIyIDE3VjE2LjVDMjIgMTUuMTIgMjAuODggMTQgMTkuNSAxNFMxNyAxNS4xMiAxNyAxNi41VjE3QzE2LjQ1IDE3IDE2IDE3LjQ1IDE2IDE4VjIyQzE2IDIyLjU1IDE2LjQ1IDIzIDE3IDIzSDIyQzIyLjU1IDIzIDIzIDIyLjU1IDIzIDIyVjE4QzIzIDE3LjQ1IDIyLjU1IDE3IDIyIDE3TTIxIDE3SDE4VjE2LjVDMTggMTUuNjcgMTguNjcgMTUgMTkuNSAxNVMyMSAxNS42NyAyMSAxNi41VjE3TTggOEM4IDUuNzkgOS43OSA0IDEyIDRTMTYgNS43OSAxNiA4IDE0LjIxIDEyIDEyIDEyIDggMTAuMjEgOCA4TTE0IDIwSDRWMThDNCAxNS43OSA3LjU4IDE0IDEyIDE0QzEzLjI3IDE0IDE0LjQ2IDE0LjE1IDE1LjUzIDE0LjQxQzE1LjMyIDE0LjgyIDE1LjE1IDE1LjI1IDE1LjA3IDE1LjcxQzE0LjQyIDE2LjI2IDE0IDE3LjA4IDE0IDE4VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRMb2NrT3V0bGluZSA9IFwiTTIyIDE3VjE2LjVDMjIgMTUuMTIgMjAuODggMTQgMTkuNSAxNFMxNyAxNS4xMiAxNyAxNi41VjE3QzE2LjQ1IDE3IDE2IDE3LjQ1IDE2IDE4VjIyQzE2IDIyLjU1IDE2LjQ1IDIzIDE3IDIzSDIyQzIyLjU1IDIzIDIzIDIyLjU1IDIzIDIyVjE4QzIzIDE3LjQ1IDIyLjU1IDE3IDIyIDE3TTIxIDE3SDE4VjE2LjVDMTggMTUuNjcgMTguNjcgMTUgMTkuNSAxNVMyMSAxNS42NyAyMSAxNi41VjE3TTE0IDIwSDRWMTdDNCAxNC4zMyA5LjMzIDEzIDEyIDEzQzEzLjA4IDEzIDE0LjYgMTMuMjIgMTYgMTMuNjZDMTUuNjEgMTQuMTUgMTUuMzMgMTQuNzQgMTUuMTYgMTUuMzhDMTQuMTkgMTUuMSAxMy4wOSAxNC45IDEyIDE0LjlDOS4wMyAxNC45IDUuOSAxNi4zNiA1LjkgMTdWMTguMUgxNFYyME0xMiAxMkMxNC4yMSAxMiAxNiAxMC4yMSAxNiA4UzE0LjIxIDQgMTIgNCA4IDUuNzkgOCA4IDkuNzkgMTIgMTIgMTJNMTIgNkMxMy4xMSA2IDE0IDYuOSAxNCA4UzEzLjExIDEwIDEyIDEwIDEwIDkuMTEgMTAgOCAxMC45IDYgMTIgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TWludXMgPSBcIk0xNSwxNEMxMi4zMywxNCA3LDE1LjMzIDcsMThWMjBIMjNWMThDMjMsMTUuMzMgMTcuNjcsMTQgMTUsMTRNMSwxMFYxMkg5VjEwTTE1LDEyQTQsNCAwIDAsMCAxOSw4QTQsNCAwIDAsMCAxNSw0QTQsNCAwIDAsMCAxMSw4QTQsNCAwIDAsMCAxNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TWludXNPdXRsaW5lID0gXCJNMTUsNEE0LDQgMCAwLDAgMTEsOEE0LDQgMCAwLDAgMTUsMTJBNCw0IDAgMCwwIDE5LDhBNCw0IDAgMCwwIDE1LDRNMTUsNS45QzE2LjE2LDUuOSAxNy4xLDYuODQgMTcuMSw4QzE3LjEsOS4xNiAxNi4xNiwxMC4xIDE1LDEwLjFBMi4xLDIuMSAwIDAsMSAxMi45LDhBMi4xLDIuMSAwIDAsMSAxNSw1LjlNMSwxMFYxMkg5VjEwSDFNMTUsMTNDMTIuMzMsMTMgNywxNC4zMyA3LDE3VjIwSDIzVjE3QzIzLDE0LjMzIDE3LjY3LDEzIDE1LDEzTTE1LDE0LjlDMTcuOTcsMTQuOSAyMS4xLDE2LjM2IDIxLjEsMTdWMTguMUg4LjlWMTdDOC45LDE2LjM2IDEyLDE0LjkgMTUsMTQuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGUgPSBcIk0xNiAxN1YxOUgyVjE3UzIgMTMgOSAxMyAxNiAxNyAxNiAxN00xMi41IDcuNUEzLjUgMy41IDAgMSAwIDkgMTFBMy41IDMuNSAwIDAgMCAxMi41IDcuNU0xNS45NCAxM0E1LjMyIDUuMzIgMCAwIDEgMTggMTdWMTlIMjJWMTdTMjIgMTMuMzcgMTUuOTQgMTNNMTUgNEEzLjM5IDMuMzkgMCAwIDAgMTMuMDcgNC41OUE1IDUgMCAwIDEgMTMuMDcgMTAuNDFBMy4zOSAzLjM5IDAgMCAwIDE1IDExQTMuNSAzLjUgMCAwIDAgMTUgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVDaGVjayA9IFwiTTE5IDE3VjE5SDdWMTdTNyAxMyAxMyAxMyAxOSAxNyAxOSAxN00xNiA4QTMgMyAwIDEgMCAxMyAxMUEzIDMgMCAwIDAgMTYgOE0xOS4yIDEzLjA2QTUuNiA1LjYgMCAwIDEgMjEgMTdWMTlIMjRWMTdTMjQgMTMuNTUgMTkuMiAxMy4wNk0xOCA1QTIuOTEgMi45MSAwIDAgMCAxNy4xMSA1LjE0QTUgNSAwIDAgMSAxNy4xMSAxMC44NkEyLjkxIDIuOTEgMCAwIDAgMTggMTFBMyAzIDAgMCAwIDE4IDVNNy4zNCA4LjkyTDguNSAxMC4zM0wzLjc1IDE1LjA4TDEgMTIuMDhMMi4xNiAxMC45MkwzLjc1IDEyLjVMNy4zNCA4LjkyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudE11bHRpcGxlQ2hlY2tPdXRsaW5lID0gXCJNMTMgMTFBMyAzIDAgMSAwIDEwIDhBMyAzIDAgMCAwIDEzIDExTTEzIDdBMSAxIDAgMSAxIDEyIDhBMSAxIDAgMCAxIDEzIDdNMTcuMTEgMTAuODZBNSA1IDAgMCAwIDE3LjExIDUuMTRBMi45MSAyLjkxIDAgMCAxIDE4IDVBMyAzIDAgMCAxIDE4IDExQTIuOTEgMi45MSAwIDAgMSAxNy4xMSAxMC44Nk0xMyAxM0M3IDEzIDcgMTcgNyAxN1YxOUgxOVYxN1MxOSAxMyAxMyAxM005IDE3QzkgMTYuNzEgOS4zMiAxNSAxMyAxNUMxNi41IDE1IDE2Ljk0IDE2LjU2IDE3IDE3TTI0IDE3VjE5SDIxVjE3QTUuNiA1LjYgMCAwIDAgMTkuMiAxMy4wNkMyNCAxMy41NSAyNCAxNyAyNCAxN003LjM0IDguOTJMOC41IDEwLjMzTDMuNzUgMTUuMDhMMSAxMi4wOEwyLjE2IDEwLjkyTDMuNzUgMTIuNUw3LjM0IDguOTJcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVNaW51cyA9IFwiTTE5IDE3VjE5SDdWMTdTNyAxMyAxMyAxMyAxOSAxNyAxOSAxN00xNiA4QTMgMyAwIDEgMCAxMyAxMUEzIDMgMCAwIDAgMTYgOE0xOS4yIDEzLjA2QTUuNiA1LjYgMCAwIDEgMjEgMTdWMTlIMjRWMTdTMjQgMTMuNTUgMTkuMiAxMy4wNk0xOCA1QTIuOTEgMi45MSAwIDAgMCAxNy4xMSA1LjE0QTUgNSAwIDAgMSAxNy4xMSAxMC44NkEyLjkxIDIuOTEgMCAwIDAgMTggMTFBMyAzIDAgMCAwIDE4IDVNOCAxMEgwVjEySDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudE11bHRpcGxlTWludXNPdXRsaW5lID0gXCJNMTMgMTFBMyAzIDAgMSAwIDEwIDhBMyAzIDAgMCAwIDEzIDExTTEzIDdBMSAxIDAgMSAxIDEyIDhBMSAxIDAgMCAxIDEzIDdNMTcuMTEgMTAuODZBNSA1IDAgMCAwIDE3LjExIDUuMTRBMi45MSAyLjkxIDAgMCAxIDE4IDVBMyAzIDAgMCAxIDE4IDExQTIuOTEgMi45MSAwIDAgMSAxNy4xMSAxMC44Nk0xMyAxM0M3IDEzIDcgMTcgNyAxN1YxOUgxOVYxN1MxOSAxMyAxMyAxM005IDE3QzkgMTYuNzEgOS4zMiAxNSAxMyAxNUMxNi41IDE1IDE2Ljk0IDE2LjU2IDE3IDE3TTI0IDE3VjE5SDIxVjE3QTUuNiA1LjYgMCAwIDAgMTkuMiAxMy4wNkMyNCAxMy41NSAyNCAxNyAyNCAxN004IDEySDBWMTBIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVPdXRsaW5lID0gXCJNMTMuMDcgMTAuNDFBNSA1IDAgMCAwIDEzLjA3IDQuNTlBMy4zOSAzLjM5IDAgMCAxIDE1IDRBMy41IDMuNSAwIDAgMSAxNSAxMUEzLjM5IDMuMzkgMCAwIDEgMTMuMDcgMTAuNDFNNS41IDcuNUEzLjUgMy41IDAgMSAxIDkgMTFBMy41IDMuNSAwIDAgMSA1LjUgNy41TTcuNSA3LjVBMS41IDEuNSAwIDEgMCA5IDZBMS41IDEuNSAwIDAgMCA3LjUgNy41TTE2IDE3VjE5SDJWMTdTMiAxMyA5IDEzIDE2IDE3IDE2IDE3TTE0IDE3QzEzLjg2IDE2LjIyIDEyLjY3IDE1IDkgMTVTNC4wNyAxNi4zMSA0IDE3TTE1Ljk1IDEzQTUuMzIgNS4zMiAwIDAgMSAxOCAxN1YxOUgyMlYxN1MyMiAxMy4zNyAxNS45NCAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVQbHVzID0gXCJNMTkgMTdWMTlIN1YxN1M3IDEzIDEzIDEzIDE5IDE3IDE5IDE3TTE2IDhBMyAzIDAgMSAwIDEzIDExQTMgMyAwIDAgMCAxNiA4TTE5LjIgMTMuMDZBNS42IDUuNiAwIDAgMSAyMSAxN1YxOUgyNFYxN1MyNCAxMy41NSAxOS4yIDEzLjA2TTE4IDVBMi45MSAyLjkxIDAgMCAwIDE3LjExIDUuMTRBNSA1IDAgMCAxIDE3LjExIDEwLjg2QTIuOTEgMi45MSAwIDAgMCAxOCAxMUEzIDMgMCAwIDAgMTggNU04IDEwSDVWN0gzVjEwSDBWMTJIM1YxNUg1VjEySDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudE11bHRpcGxlUGx1c091dGxpbmUgPSBcIk0xMyAxMUEzIDMgMCAxIDAgMTAgOEEzIDMgMCAwIDAgMTMgMTFNMTMgN0ExIDEgMCAxIDEgMTIgOEExIDEgMCAwIDEgMTMgN00xNy4xMSAxMC44NkE1IDUgMCAwIDAgMTcuMTEgNS4xNEEyLjkxIDIuOTEgMCAwIDEgMTggNUEzIDMgMCAwIDEgMTggMTFBMi45MSAyLjkxIDAgMCAxIDE3LjExIDEwLjg2TTEzIDEzQzcgMTMgNyAxNyA3IDE3VjE5SDE5VjE3UzE5IDEzIDEzIDEzTTkgMTdDOSAxNi43MSA5LjMyIDE1IDEzIDE1QzE2LjUgMTUgMTYuOTQgMTYuNTYgMTcgMTdNMjQgMTdWMTlIMjFWMTdBNS42IDUuNiAwIDAgMCAxOS4yIDEzLjA2QzI0IDEzLjU1IDI0IDE3IDI0IDE3TTggMTJINVYxNUgzVjEySDBWMTBIM1Y3SDVWMTBIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVSZW1vdmUgPSBcIk0yNCAxN1YxOUgyMVYxN0MyMSAxNS40NSAyMC4zIDE0LjA2IDE5LjE4IDEzLjA2QzI0IDEzLjU1IDI0IDE3IDI0IDE3TTE4IDVDMTkuNjYgNSAyMSA2LjM0IDIxIDhDMjEgOS42NiAxOS42NiAxMSAxOCAxMUMxNy42OSAxMSAxNy4zOCAxMC45NSAxNy4xIDEwLjg2QzE3LjY3IDEwLjA1IDE4IDkuMDcgMTggOEMxOCA2Ljk0IDE3LjY3IDUuOTUgMTcuMSA1LjE0QzE3LjM4IDUuMDUgMTcuNjkgNSAxOCA1TTEzIDVDMTQuNjYgNSAxNiA2LjM0IDE2IDhDMTYgOS42NiAxNC42NiAxMSAxMyAxMUMxMS4zNCAxMSAxMCA5LjY2IDEwIDhDMTAgNi4zNCAxMS4zNCA1IDEzIDVNMTkgMTdWMTlIN1YxN0M3IDE0Ljc5IDkuNjkgMTMgMTMgMTNDMTYuMzEgMTMgMTkgMTQuNzkgMTkgMTdNLjQ2NCAxMy4xMkwyLjU5IDExTC40NjQgOC44OEwxLjg4IDcuNDZMNCA5LjU5TDYuMTIgNy40Nkw3LjU0IDguODhMNS40MSAxMUw3LjU0IDEzLjEyTDYuMTIgMTQuNTRMNCAxMi40MUwxLjg4IDE0LjU0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRNdWx0aXBsZVJlbW92ZU91dGxpbmUgPSBcIk0yNCAxN1YxOUgyMVYxN0MyMSAxNS40NSAyMC4zIDE0LjA2IDE5LjE4IDEzLjA2QzI0IDEzLjU1IDI0IDE3IDI0IDE3TTE4IDVDMTkuNjYgNSAyMSA2LjM0IDIxIDhDMjEgOS42NiAxOS42NiAxMSAxOCAxMUMxNy42OSAxMSAxNy4zOCAxMC45NSAxNy4xIDEwLjg2QzE3LjY3IDEwLjA1IDE4IDkuMDcgMTggOEMxOCA2Ljk0IDE3LjY3IDUuOTUgMTcuMSA1LjE0QzE3LjM4IDUuMDUgMTcuNjkgNSAxOCA1TTEzIDVDMTQuNjYgNSAxNiA2LjM0IDE2IDhDMTYgOS42NiAxNC42NiAxMSAxMyAxMUMxMS4zNCAxMSAxMCA5LjY2IDEwIDhDMTAgNi4zNCAxMS4zNCA1IDEzIDVNMTkgMTdWMTlIN1YxN0M3IDE0Ljc5IDkuNjkgMTMgMTMgMTNDMTYuMzEgMTMgMTkgMTQuNzkgMTkgMTdNMTMgN0MxMi40NSA3IDEyIDcuNDUgMTIgOEMxMiA4LjU1IDEyLjQ1IDkgMTMgOUMxMy41NSA5IDE0IDguNTUgMTQgOEMxNCA3LjQ1IDEzLjU1IDcgMTMgN00xMyAxNUMxMC43OSAxNSA5IDE1LjkgOSAxN0gxN0MxNyAxNS45IDE1LjIxIDE1IDEzIDE1TS40NjQgMTMuMTJMMi41OSAxMUwuNDY0IDguODhMMS44OCA3LjQ2TDQgOS41OUw2LjEyIDcuNDZMNy41NCA4Ljg4TDUuNDEgMTFMNy41NCAxMy4xMkw2LjEyIDE0LjU0TDQgMTIuNDFMMS44OCAxNC41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVzaWMgPSBcIk0xMSwxNEMxMiwxNCAxMy4wNSwxNC4xNiAxNC4yLDE0LjQ0QzEzLjM5LDE1LjMxIDEzLDE2LjMzIDEzLDE3LjVDMTMsMTguMzkgMTMuMjUsMTkuMjMgMTMuNzgsMjBIM1YxOEMzLDE2LjgxIDMuOTEsMTUuODUgNS43NCwxNS4xMkM3LjU3LDE0LjM4IDkuMzMsMTQgMTEsMTRNMTEsMTJDOS45MiwxMiA5LDExLjYxIDguMTgsMTAuODNDNy4zOCwxMC4wNSA3LDkuMTEgNyw4QzcsNi45MiA3LjM4LDYgOC4xOCw1LjE4QzksNC4zOCA5LjkyLDQgMTEsNEMxMi4xMSw0IDEzLjA1LDQuMzggMTMuODMsNS4xOEMxNC42MSw2IDE1LDYuOTIgMTUsOEMxNSw5LjExIDE0LjYxLDEwLjA1IDEzLjgzLDEwLjgzQzEzLjA1LDExLjYxIDEyLjExLDEyIDExLDEyTTE4LjUsMTBIMjBMMjIsMTBWMTJIMjBWMTcuNUEyLjUsMi41IDAgMCwxIDE3LjUsMjBBMi41LDIuNSAwIDAsMSAxNSwxNy41QTIuNSwyLjUgMCAwLDEgMTcuNSwxNUMxNy44NiwxNSAxOC4xOSwxNS4wNyAxOC41LDE1LjIxVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRNdXNpY091dGxpbmUgPSBcIk0xMSw0QTQsNCAwIDAsMSAxNSw4QTQsNCAwIDAsMSAxMSwxMkE0LDQgMCAwLDEgNyw4QTQsNCAwIDAsMSAxMSw0TTExLDZBMiwyIDAgMCwwIDksOEEyLDIgMCAwLDAgMTEsMTBBMiwyIDAgMCwwIDEzLDhBMiwyIDAgMCwwIDExLDZNMTEsMTNDMTIuMSwxMyAxMy42NiwxMy4yMyAxNS4xMSwxMy42OUMxNC41LDE0LjA3IDE0LDE0LjYgMTMuNjEsMTUuMjNDMTIuNzksMTUuMDMgMTEuODksMTQuOSAxMSwxNC45QzguMDMsMTQuOSA0LjksMTYuMzYgNC45LDE3VjE4LjFIMTMuMDRDMTMuMTMsMTguOCAxMy4zOCwxOS40NCAxMy43NiwyMEgzVjE3QzMsMTQuMzQgOC4zMywxMyAxMSwxM00xOC41LDEwSDIwTDIyLDEwVjEySDIwVjE3LjVBMi41LDIuNSAwIDAsMSAxNy41LDIwQTIuNSwyLjUgMCAwLDEgMTUsMTcuNUEyLjUsMi41IDAgMCwxIDE3LjUsMTVDMTcuODYsMTUgMTguMTksMTUuMDcgMTguNSwxNS4yMVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TmV0d29yayA9IFwiTTEzLDE3VjE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMlYyMkgxNUExLDEgMCAwLDEgMTQsMjNIMTBBMSwxIDAgMCwxIDksMjJIMlYyMEg5QTEsMSAwIDAsMSAxMCwxOUgxMVYxN0g1VjE1LjVDNSwxMy41NyA4LjEzLDEyIDEyLDEyQzE1Ljg3LDEyIDE5LDEzLjU3IDE5LDE1LjVWMTdIMTNNMTIsM0EzLjUsMy41IDAgMCwxIDE1LjUsNi41QTMuNSwzLjUgMCAwLDEgMTIsMTBBMy41LDMuNSAwIDAsMSA4LjUsNi41QTMuNSwzLjUgMCAwLDEgMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TmV0d29ya091dGxpbmUgPSBcIk0xMiwxMEEzLjUsMy41IDAgMCwwIDE1LjUsNi41QTMuNSwzLjUgMCAwLDAgMTIsM0EzLjUsMy41IDAgMCwwIDguNSw2LjVBMy41LDMuNSAwIDAsMCAxMiwxME0xMiw1QTEuNSwxLjUgMCAwLDEgMTMuNSw2LjVBMS41LDEuNSAwIDAsMSAxMiw4QTEuNSwxLjUgMCAwLDEgMTAuNSw2LjVBMS41LDEuNSAwIDAsMSAxMiw1TTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxOVYxNS41QzE5LDEzLjU3IDE1Ljg3LDEyIDEyLDEyQzguMTMsMTIgNSwxMy41NyA1LDE1LjVWMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNy42MSwxNUM4LjM5LDE0LjUzIDkuODksMTQgMTIsMTRDMTQuMTEsMTQgMTUuNjEsMTQuNTMgMTYuMzksMTVINy42MVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50T2ZmID0gXCJNMTIsNEE0LDQgMCAwLDEgMTYsOEMxNiw5Ljk1IDE0LjYsMTEuNTggMTIuNzUsMTEuOTNMOC4wNyw3LjI1QzguNDIsNS40IDEwLjA1LDQgMTIsNE0xMi4yOCwxNEwxOC4yOCwyMEwyMCwyMS43MkwxOC43MywyM0wxNS43MywyMEg0VjE4QzQsMTYuMTYgNi41LDE0LjYxIDkuODcsMTQuMTRMMi43OCw3LjA1TDQuMDUsNS43OEwxMi4yOCwxNE0yMCwxOFYxOS4xOEwxNS4xNCwxNC4zMkMxOCwxNC45MyAyMCwxNi4zNSAyMCwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50T2ZmT3V0bGluZSA9IFwiTTIuNzUsN0w0LjAzLDUuNzVMMTMuMjYsMTVMMjAsMjEuNzJMMTguNzMsMjNMMTUuNzMsMjBINFYxN0M0LDE1LjE0IDYuNjEsMTMuOTIgOS4wOSwxMy4zNkwyLjc1LDdNMjAsMTdWMTkuMThMMTguMSwxNy4yOFYxN0MxOC4xLDE2Ljc0IDE3LjYsMTYuMzUgMTYuOCwxNkwxNCwxMy4xOEMxNi43MSwxMy42MyAyMCwxNC45MSAyMCwxN001LjksMTdWMTguMUgxMy44M0wxMC43MiwxNUM4LjE5LDE1LjMgNS45LDE2LjQ1IDUuOSwxN00xMiw0QTQsNCAwIDAsMSAxNiw4QzE2LDkuOTUgMTQuNiwxMS41OCAxMi43NSwxMS45M0w4LjA3LDcuMjVDOC40Miw1LjQgMTAuMDUsNCAxMiw0TTEyLDZBMiwyIDAgMCwwIDEwLDhBMiwyIDAgMCwwIDEyLDEwQTIsMiAwIDAsMCAxNCw4QTIsMiAwIDAsMCAxMiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRPdXRsaW5lID0gXCJNMTIsNEE0LDQgMCAwLDEgMTYsOEE0LDQgMCAwLDEgMTIsMTJBNCw0IDAgMCwxIDgsOEE0LDQgMCAwLDEgMTIsNE0xMiw2QTIsMiAwIDAsMCAxMCw4QTIsMiAwIDAsMCAxMiwxMEEyLDIgMCAwLDAgMTQsOEEyLDIgMCAwLDAgMTIsNk0xMiwxM0MxNC42NywxMyAyMCwxNC4zMyAyMCwxN1YyMEg0VjE3QzQsMTQuMzMgOS4zMywxMyAxMiwxM00xMiwxNC45QzkuMDMsMTQuOSA1LjksMTYuMzYgNS45LDE3VjE4LjFIMTguMVYxN0MxOC4xLDE2LjM2IDE0Ljk3LDE0LjkgMTIsMTQuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UGx1cyA9IFwiTTE1LDE0QzEyLjMzLDE0IDcsMTUuMzMgNywxOFYyMEgyM1YxOEMyMywxNS4zMyAxNy42NywxNCAxNSwxNE02LDEwVjdINFYxMEgxVjEySDRWMTVINlYxMkg5VjEwTTE1LDEyQTQsNCAwIDAsMCAxOSw4QTQsNCAwIDAsMCAxNSw0QTQsNCAwIDAsMCAxMSw4QTQsNCAwIDAsMCAxNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UGx1c091dGxpbmUgPSBcIk0xNSw0QTQsNCAwIDAsMCAxMSw4QTQsNCAwIDAsMCAxNSwxMkE0LDQgMCAwLDAgMTksOEE0LDQgMCAwLDAgMTUsNE0xNSw1LjlDMTYuMTYsNS45IDE3LjEsNi44NCAxNy4xLDhDMTcuMSw5LjE2IDE2LjE2LDEwLjEgMTUsMTAuMUEyLjEsMi4xIDAgMCwxIDEyLjksOEEyLjEsMi4xIDAgMCwxIDE1LDUuOU00LDdWMTBIMVYxMkg0VjE1SDZWMTJIOVYxMEg2VjdINE0xNSwxM0MxMi4zMywxMyA3LDE0LjMzIDcsMTdWMjBIMjNWMTdDMjMsMTQuMzMgMTcuNjcsMTMgMTUsMTNNMTUsMTQuOUMxNy45NywxNC45IDIxLjEsMTYuMzYgMjEuMSwxN1YxOC4xSDguOVYxN0M4LjksMTYuMzYgMTIsMTQuOSAxNSwxNC45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRRdWVzdGlvbiA9IFwiTTEzLDhBNCw0IDAgMCwxIDksMTJBNCw0IDAgMCwxIDUsOEE0LDQgMCAwLDEgOSw0QTQsNCAwIDAsMSAxMyw4TTE3LDE4VjIwSDFWMThDMSwxNS43OSA0LjU4LDE0IDksMTRDMTMuNDIsMTQgMTcsMTUuNzkgMTcsMThNMjAuNSwxNC41VjE2SDE5VjE0LjVIMjAuNU0xOC41LDkuNUgxN1Y5QTMsMyAwIDAsMSAyMCw2QTMsMyAwIDAsMSAyMyw5QzIzLDkuOTcgMjIuNSwxMC44OCAyMS43MSwxMS40MUwyMS40MSwxMS42QzIwLjg0LDEyIDIwLjUsMTIuNjEgMjAuNSwxMy4zVjEzLjVIMTlWMTMuM0MxOSwxMi4xMSAxOS42LDExIDIwLjU5LDEwLjM1TDIwLjg4LDEwLjE2QzIxLjI3LDkuOSAyMS41LDkuNDcgMjEuNSw5QTEuNSwxLjUgMCAwLDAgMjAsNy41QTEuNSwxLjUgMCAwLDAgMTguNSw5VjkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UXVlc3Rpb25PdXRsaW5lID0gXCJNMjAuNSwxNC41VjE2SDE5VjE0LjVIMjAuNU0xOC41LDkuNUgxN1Y5QTMsMyAwIDAsMSAyMCw2QTMsMyAwIDAsMSAyMyw5QzIzLDkuOTcgMjIuNSwxMC44OCAyMS43MSwxMS40MUwyMS40MSwxMS42QzIwLjg0LDEyIDIwLjUsMTIuNjEgMjAuNSwxMy4zVjEzLjVIMTlWMTMuM0MxOSwxMi4xMSAxOS42LDExIDIwLjU5LDEwLjM1TDIwLjg4LDEwLjE2QzIxLjI3LDkuOSAyMS41LDkuNDcgMjEuNSw5QTEuNSwxLjUgMCAwLDAgMjAsNy41QTEuNSwxLjUgMCAwLDAgMTguNSw5VjkuNU05LDEzQzExLjY3LDEzIDE3LDE0LjM0IDE3LDE3VjIwSDFWMTdDMSwxNC4zNCA2LjMzLDEzIDksMTNNOSw0QTQsNCAwIDAsMSAxMyw4QTQsNCAwIDAsMSA5LDEyQTQsNCAwIDAsMSA1LDhBNCw0IDAgMCwxIDksNE05LDE0LjlDNi4wMywxNC45IDIuOSwxNi4zNiAyLjksMTdWMTguMUgxNS4xVjE3QzE1LjEsMTYuMzYgMTEuOTcsMTQuOSA5LDE0LjlNOSw1LjlBMi4xLDIuMSAwIDAsMCA2LjksOEEyLjEsMi4xIDAgMCwwIDksMTAuMUEyLjEsMi4xIDAgMCwwIDExLjEsOEEyLjEsMi4xIDAgMCwwIDksNS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRSZWFjdGl2YXRlID0gXCJNMjEuNSA5SDE2LjVMMTguMzYgNy4xNEMxNi45IDUuMjMgMTQuNTkgNCAxMiA0QzcuNTggNCA0IDcuNTggNCAxMkM0IDEzLjgzIDQuNjEgMTUuNSA1LjY0IDE2Ljg1QzYuODYgMTUuNDUgOS4xNSAxNC41IDEyIDE0LjVDMTQuODUgMTQuNSAxNy4xNSAxNS40NSAxOC4zNiAxNi44NUMxOS4zOSAxNS41IDIwIDEzLjgzIDIwIDEySDIyQzIyIDE3LjUgMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMkMxNS4xNCAyIDE3Ljk1IDMuNDUgMTkuNzggNS43MkwyMS41IDRWOU0xMiA3QzEzLjY2IDcgMTUgOC4zNCAxNSAxMEMxNSAxMS42NiAxMy42NiAxMyAxMiAxM0MxMC4zNCAxMyA5IDExLjY2IDkgMTBDOSA4LjM0IDEwLjM0IDcgMTIgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UmVhY3RpdmF0ZU91dGxpbmUgPSBcIk0yMS41IDlIMTYuNUwxOC4zNiA3LjE0QzE2LjkgNS4yMyAxNC41OSA0IDEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTMuODMgNC42MSAxNS41IDUuNjQgMTYuODVDNi44NiAxNS40NSA5LjE1IDE0LjUgMTIgMTQuNUMxNC44NSAxNC41IDE3LjE1IDE1LjQ1IDE4LjM2IDE2Ljg1QzE5LjM5IDE1LjUgMjAgMTMuODMgMjAgMTJIMjJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyQzE1LjE0IDIgMTcuOTUgMy40NSAxOS43OCA1LjcyTDIxLjUgNFY5TTEyIDIwQzEzLjkgMjAgMTUuNjQgMTkuMzQgMTcgMTguMjRDMTYuMzYgMTcuMjMgMTQuNDUgMTYuNSAxMiAxNi41QzkuNTUgMTYuNSA3LjY0IDE3LjIzIDcgMTguMjRDOC4zNiAxOS4zNCAxMC4xIDIwIDEyIDIwTTEyIDZDMTMuOTMgNiAxNS41IDcuNTcgMTUuNSA5LjVDMTUuNSAxMS40MyAxMy45MyAxMyAxMiAxM0MxMC4wNyAxMyA4LjUgMTEuNDMgOC41IDkuNUM4LjUgNy41NyAxMC4wNyA2IDEyIDZNMTIgOEMxMS4xNyA4IDEwLjUgOC42NyAxMC41IDkuNUMxMC41IDEwLjMzIDExLjE3IDExIDEyIDExQzEyLjgzIDExIDEzLjUgMTAuMzMgMTMuNSA5LjVDMTMuNSA4LjY3IDEyLjgzIDggMTIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UmVtb3ZlID0gXCJNMTUsMTRDMTcuNjcsMTQgMjMsMTUuMzMgMjMsMThWMjBIN1YxOEM3LDE1LjMzIDEyLjMzLDE0IDE1LDE0TTE1LDEyQTQsNCAwIDAsMSAxMSw4QTQsNCAwIDAsMSAxNSw0QTQsNCAwIDAsMSAxOSw4QTQsNCAwIDAsMSAxNSwxMk01LDkuNTlMNy4xMiw3LjQ2TDguNTQsOC44OEw2LjQxLDExTDguNTQsMTMuMTJMNy4xMiwxNC41NEw1LDEyLjQxTDIuODgsMTQuNTRMMS40NiwxMy4xMkwzLjU5LDExTDEuNDYsOC44OEwyLjg4LDcuNDZMNSw5LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRSZW1vdmVPdXRsaW5lID0gXCJNMS40Niw4Ljg4TDIuODgsNy40Nkw1LDkuNTlMNy4xMiw3LjQ2TDguNTQsOC44OEw2LjQxLDExTDguNTQsMTMuMTJMNy4xMiwxNC41NEw1LDEyLjQxTDIuODgsMTQuNTRMMS40NiwxMy4xMkwzLjU5LDExTDEuNDYsOC44OE0xNSw0QTQsNCAwIDAsMSAxOSw4QTQsNCAwIDAsMSAxNSwxMkE0LDQgMCAwLDEgMTEsOEE0LDQgMCAwLDEgMTUsNE0xNSw1LjlBMi4xLDIuMSAwIDAsMCAxMi45LDhBMi4xLDIuMSAwIDAsMCAxNSwxMC4xQzE2LjE2LDEwLjEgMTcuMSw5LjE2IDE3LjEsOEMxNy4xLDYuODQgMTYuMTYsNS45IDE1LDUuOU0xNSwxM0MxNy42NywxMyAyMywxNC4zMyAyMywxN1YyMEg3VjE3QzcsMTQuMzMgMTIuMzMsMTMgMTUsMTNNMTUsMTQuOUMxMiwxNC45IDguOSwxNi4zNiA4LjksMTdWMTguMUgyMS4xVjE3QzIxLjEsMTYuMzYgMTcuOTcsMTQuOSAxNSwxNC45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTZWFyY2ggPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE0xMCw0QTQsNCAwIDAsMSAxNCw4QzE0LDguOTEgMTMuNjksOS43NSAxMy4xOCwxMC40M0MxMi4zMiwxMC43NSAxMS41NSwxMS4yNiAxMC45MSwxMS45TDEwLDEyQTQsNCAwIDAsMSA2LDhBNCw0IDAgMCwxIDEwLDRNMiwyMFYxOEMyLDE1Ljg4IDUuMzEsMTQuMTQgOS41LDE0QzkuMTgsMTQuNzggOSwxNS42MiA5LDE2LjVDOSwxNy43OSA5LjM4LDE5IDEwLDIwSDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFNlYXJjaE91dGxpbmUgPSBcIk0xMCwxM0M5LjY1LDEzLjU5IDkuMzYsMTQuMjQgOS4xOSwxNC45M0M2LjUsMTUuMTYgMy45LDE2LjQyIDMuOSwxN1YxOC4xSDkuMkM5LjM3LDE4Ljc4IDkuNjUsMTkuNDIgMTAsMjBIMlYxN0MyLDE0LjM0IDcuMzMsMTMgMTAsMTNNMTAsNEE0LDQgMCAwLDEgMTQsOEMxNCw4LjkxIDEzLjY5LDkuNzUgMTMuMTgsMTAuNDNDMTIuMzIsMTAuNzUgMTEuNTUsMTEuMjYgMTAuOTEsMTEuOUwxMCwxMkE0LDQgMCAwLDEgNiw4QTQsNCAwIDAsMSAxMCw0TTEwLDUuOUEyLjEsMi4xIDAgMCwwIDcuOSw4QTIuMSwyLjEgMCAwLDAgMTAsMTAuMUEyLjEsMi4xIDAgMCwwIDEyLjEsOEEyLjEsMi4xIDAgMCwwIDEwLDUuOU0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U2V0dGluZ3MgPSBcIk0xMiw0QTQsNCAwIDAsMSAxNiw4QTQsNCAwIDAsMSAxMiwxMkE0LDQgMCAwLDEgOCw4QTQsNCAwIDAsMSAxMiw0TTEyLDE0QzE2LjQyLDE0IDIwLDE1Ljc5IDIwLDE4VjIwSDRWMThDNCwxNS43OSA3LjU4LDE0IDEyLDE0TTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTZXR0aW5nc091dGxpbmUgPSBcIk0xMiA0QzE0LjIxIDQgMTYgNS43OSAxNiA4UzE0LjIxIDEyIDEyIDEyIDggMTAuMjEgOCA4IDkuNzkgNCAxMiA0TTEyIDZDMTAuOSA2IDEwIDYuOSAxMCA4UzEwLjkgMTAgMTIgMTAgMTQgOS4xMSAxNCA4IDEzLjExIDYgMTIgNk0xMiAxM0MxNC42NyAxMyAyMCAxNC4zMyAyMCAxN1YyMEg0VjE3QzQgMTQuMzMgOS4zMyAxMyAxMiAxM00xMiAxNC45QzkuMDMgMTQuOSA1LjkgMTYuMzYgNS45IDE3VjE4LjFIMTguMVYxN0MxOC4xIDE2LjM2IDE0Ljk3IDE0LjkgMTIgMTQuOU0xMyAyMkgxMVYyNEgxM1YyMk0xNyAyMkgxNVYyNEgxN1YyMk05IDIySDdWMjRIOVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U3RhciA9IFwiTTE1LDE0QzEyLjMzLDE0IDcsMTUuMzMgNywxOFYyMEgyM1YxOEMyMywxNS4zMyAxNy42NywxNCAxNSwxNE0xNSwxMkE0LDQgMCAwLDAgMTksOEE0LDQgMCAwLDAgMTUsNEE0LDQgMCAwLDAgMTEsOEE0LDQgMCAwLDAgMTUsMTJNNSwxMy4yOEw3LjQ1LDE0Ljc3TDYuOCwxMS45Nkw5LDEwLjA4TDYuMTEsOS44M0w1LDcuMTlMMy44Nyw5LjgzTDEsMTAuMDhMMy4xOCwxMS45NkwyLjUsMTQuNzdMNSwxMy4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U3Rhck91dGxpbmUgPSBcIk0xNSw0QTQsNCAwIDAsMSAxOSw4QTQsNCAwIDAsMSAxNSwxMkE0LDQgMCAwLDEgMTEsOEE0LDQgMCAwLDEgMTUsNE0xNSw1LjlBMi4xLDIuMSAwIDAsMCAxMi45LDhBMi4xLDIuMSAwIDAsMCAxNSwxMC4xQzE2LjE2LDEwLjEgMTcuMSw5LjE2IDE3LjEsOEMxNy4xLDYuODQgMTYuMTYsNS45IDE1LDUuOU0xNSwxM0MxNy42NywxMyAyMywxNC4zMyAyMywxN1YyMEg3VjE3QzcsMTQuMzMgMTIuMzMsMTMgMTUsMTNNMTUsMTQuOUMxMiwxNC45IDguOSwxNi4zNiA4LjksMTdWMTguMUgyMS4xVjE3QzIxLjEsMTYuMzYgMTcuOTcsMTQuOSAxNSwxNC45TTUsMTMuMjhMMi41LDE0Ljc3TDMuMTgsMTEuOTZMMSwxMC4wOEwzLjg3LDkuODNMNSw3LjE5TDYuMTEsOS44M0w5LDEwLjA4TDYuOCwxMS45Nkw3LjQ1LDE0Ljc3TDUsMTMuMjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFN1cGVydmlzb3IgPSBcIk0xNi41LDEyQTIuNSwyLjUgMCAwLDAgMTksOS41QTIuNSwyLjUgMCAwLDAgMTYuNSw3QTIuNSwyLjUgMCAwLDAgMTQsOS41QTIuNSwyLjUgMCAwLDAgMTYuNSwxMk05LDExQTMsMyAwIDAsMCAxMiw4QTMsMyAwIDAsMCA5LDVBMywzIDAgMCwwIDYsOEEzLDMgMCAwLDAgOSwxMU0xNi41LDE0QzE0LjY3LDE0IDExLDE0LjkyIDExLDE2Ljc1VjE5SDIyVjE2Ljc1QzIyLDE0LjkyIDE4LjMzLDE0IDE2LjUsMTRNOSwxM0M2LjY3LDEzIDIsMTQuMTcgMiwxNi41VjE5SDlWMTYuNzVDOSwxNS45IDkuMzMsMTQuNDEgMTEuMzcsMTMuMjhDMTAuNSwxMy4xIDkuNjYsMTMgOSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U3VwZXJ2aXNvckNpcmNsZSA9IFwiTTEyLDJDNi40NywyIDIsNi41IDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNS42LDguMzRDMTYuNjcsOC4zNCAxNy41Myw5LjIgMTcuNTMsMTAuMjdDMTcuNTMsMTEuMzQgMTYuNjcsMTIuMiAxNS42LDEyLjJBMS45MywxLjkzIDAgMCwxIDEzLjY3LDEwLjI3QzEzLjY2LDkuMiAxNC41Myw4LjM0IDE1LjYsOC4zNE05LjYsNi43NkMxMC45LDYuNzYgMTEuOTYsNy44MiAxMS45Niw5LjEyQzExLjk2LDEwLjQyIDEwLjksMTEuNSA5LjYsMTEuNUM4LjMsMTEuNSA3LjI0LDEwLjQyIDcuMjQsOS4xMkM3LjI0LDcuODEgOC4yOSw2Ljc2IDkuNiw2Ljc2TTkuNiwxNS44OVYxOS42NEM3LjIsMTguODkgNS4zLDE3LjA0IDQuNDYsMTQuNjhDNS41LDEzLjU2IDguMTMsMTMgOS42LDEzQzEwLjEzLDEzIDEwLjgsMTMuMDcgMTEuNSwxMy4yMUM5Ljg2LDE0LjA4IDkuNiwxNS4yMyA5LjYsMTUuODlNMTIsMjBDMTEuNzIsMjAgMTEuNDYsMjAgMTEuMiwxOS45NlYxNS44OUMxMS4yLDE0LjQ3IDE0LjE0LDEzLjc2IDE1LjYsMTMuNzZDMTYuNjcsMTMuNzYgMTguNSwxNC4xNSAxOS40NCwxNC45MUMxOC4yNywxNy44OCAxNS4zOCwyMCAxMiwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U3VwZXJ2aXNvckNpcmNsZU91dGxpbmUgPSBcIk0xMi41IDEwQzEyLjUgOC4zNCAxMS4xNiA3IDkuNSA3QzcuODYgNyA2LjUgOC4zNCA2LjUgMTBDNi41IDExLjY0IDcuODYgMTMgOS41IDEzQzExLjE2IDEzIDEyLjUgMTEuNjQgMTIuNSAxME05LjUgMTFDOC45NiAxMSA4LjUgMTAuNTQgOC41IDEwQzguNSA5LjQ0IDguOTYgOSA5LjUgOUMxMC4wNiA5IDEwLjUgOS40NCAxMC41IDEwQzEwLjUgMTAuNTQgMTAuMDYgMTEgOS41IDExTTE2IDEzQzE3LjEyIDEzIDE4IDEyLjEgMTggMTFDMTggOS44OCAxNy4xMiA5IDE2IDlDMTQuOSA5IDE0IDkuODggMTQgMTFDMTQgMTIuMSAxNC45IDEzIDE2IDEzTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMkMyMiA2LjUgMTcuNSAyIDEyIDJNNS44NSAxNy4xMUM2LjUzIDE2LjU3IDguMTIgMTYgOS41IDE2QzkuNTggMTYgOS42NiAxNiA5Ljc0IDE2QzEwIDE1LjM3IDEwLjQxIDE0LjcyIDExLjA0IDE0LjE1QzEwLjUgMTQuMDUgOS45NSAxNCA5LjUgMTRDOC4yMSAxNCA2LjEyIDE0LjQ0IDQuNzggMTUuNDJDNC4yOCAxNC4zOCA0IDEzLjIyIDQgMTJDNCA3LjU4IDcuNTkgNCAxMiA0QzE2LjQxIDQgMjAgNy41OCAyMCAxMkMyMCAxMy4xOSAxOS43MyAxNC4zMyAxOS4yNSAxNS4zNkMxOC4yNSAxNC43NyAxNi44OSAxNC41IDE2IDE0LjVDMTQuNSAxNC41IDExLjUgMTUuMyAxMS41IDE3LjE5VjE5Ljk3QzkuMjQgMTkuODQgNy4yMiAxOC43NiA1Ljg1IDE3LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTdXBlcnZpc29yT3V0bGluZSA9IFwiTTE2LjUgMTUuNUMxOC4yMiAxNS41IDIwLjI1IDE2LjMgMjAuNSAxNi43OFYxNy41SDEyLjVWMTYuNzhDMTIuNzUgMTYuMyAxNC43OCAxNS41IDE2LjUgMTUuNU0xNi41IDE0QzE0LjY3IDE0IDExIDE0LjkyIDExIDE2Ljc1VjE5SDIyVjE2Ljc1QzIyIDE0LjkyIDE4LjMzIDE0IDE2LjUgMTRNOSAxM0M2LjY3IDEzIDIgMTQuMTcgMiAxNi41VjE5SDlWMTcuNUgzLjVWMTYuNUMzLjUgMTUuODcgNi4yOSAxNC4zNCA5LjgyIDE0LjVBNS4xMiA1LjEyIDAgMCAxIDExLjM3IDEzLjI1QTEyLjI4IDEyLjI4IDAgMCAwIDkgMTNNOSA2LjVBMS41IDEuNSAwIDEgMSA3LjUgOEExLjUgMS41IDAgMCAxIDkgNi41TTkgNUEzIDMgMCAxIDAgMTIgOEEzIDMgMCAwIDAgOSA1TTE2LjUgOC41QTEgMSAwIDEgMSAxNS41IDkuNUExIDEgMCAwIDEgMTYuNSA4LjVNMTYuNSA3QTIuNSAyLjUgMCAxIDAgMTkgOS41QTIuNSAyLjUgMCAwIDAgMTYuNSA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTd2l0Y2ggPSBcIk0xNiA5QzIyIDkgMjIgMTMgMjIgMTNWMTVIMTZWMTNDMTYgMTMgMTYgMTEuMzEgMTQuODUgOS44QzE0LjY4IDkuNTcgMTQuNDcgOS4zNSAxNC4yNSA5LjE0QzE0Ljc3IDkuMDYgMTUuMzQgOSAxNiA5TTIgMTNDMiAxMyAyIDkgOCA5UzE0IDEzIDE0IDEzVjE1SDJWMTNNOSAxN1YxOUgxNVYxN0wxOCAyMEwxNSAyM1YyMUg5VjIzTDYgMjBMOSAxN004IDFDNi4zNCAxIDUgMi4zNCA1IDRTNi4zNCA3IDggNyAxMSA1LjY2IDExIDQgOS42NiAxIDggMU0xNiAxQzE0LjM0IDEgMTMgMi4zNCAxMyA0UzE0LjM0IDcgMTYgNyAxOSA1LjY2IDE5IDQgMTcuNjYgMSAxNiAxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTd2l0Y2hPdXRsaW5lID0gXCJNMTYgOUMyMiA5IDIyIDEzIDIyIDEzVjE1SDE2VjEzQzE2IDEzIDE2IDExLjMxIDE0Ljg1IDkuOEMxNC42OCA5LjU3IDE0LjQ3IDkuMzUgMTQuMjUgOS4xNEMxNC43NyA5LjA2IDE1LjM0IDkgMTYgOU04IDExQzExLjUgMTEgMTEuOTQgMTIuNTYgMTIgMTNINEM0LjA2IDEyLjU2IDQuNSAxMSA4IDExTTggOUMyIDkgMiAxMyAyIDEzVjE1SDE0VjEzQzE0IDEzIDE0IDkgOCA5TTkgMTdWMTlIMTVWMTdMMTggMjBMMTUgMjNWMjFIOVYyM0w2IDIwTDkgMTdNOCAzQzguNTUgMyA5IDMuNDUgOSA0UzguNTUgNSA4IDUgNyA0LjU1IDcgNCA3LjQ1IDMgOCAzTTggMUM2LjM0IDEgNSAyLjM0IDUgNFM2LjM0IDcgOCA3IDExIDUuNjYgMTEgNCA5LjY2IDEgOCAxTTE2IDFDMTQuMzQgMSAxMyAyLjM0IDEzIDRTMTQuMzQgNyAxNiA3IDE5IDUuNjYgMTkgNCAxNy42NiAxIDE2IDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZSA9IFwiTTEyIDNDMTQuMjEgMyAxNiA0Ljc5IDE2IDdTMTQuMjEgMTEgMTIgMTEgOCA5LjIxIDggNyA5Ljc5IDMgMTIgM00xNiAxMy41NEMxNiAxNC42IDE1LjcyIDE3LjA3IDEzLjgxIDE5LjgzTDEzIDE1TDEzLjk0IDEzLjEyQzEzLjMyIDEzLjA1IDEyLjY3IDEzIDEyIDEzUzEwLjY4IDEzLjA1IDEwLjA2IDEzLjEyTDExIDE1TDEwLjE5IDE5LjgzQzguMjggMTcuMDcgOCAxNC42IDggMTMuNTRDNS42MSAxNC4yNCA0IDE1LjUgNCAxN1YyMUgyMFYxN0MyMCAxNS41IDE4LjQgMTQuMjQgMTYgMTMuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZU91dGxpbmUgPSBcIk0xNi4zNiAxMi43NkMxOC4zMSAxMy40MiAyMCAxNC41IDIwIDE2VjIxSDRWMTZDNCAxNC41IDUuNjkgMTMuNDIgNy42NSAxMi43Nkw4LjI3IDE0TDguNSAxNC41QzcgMTQuOTYgNS45IDE1LjYyIDUuOSAxNlYxOS4xSDEwLjEyTDExIDE0LjAzTDEwLjA2IDEyLjE1QzEwLjY4IDEyLjA4IDExLjMzIDEyLjAzIDEyIDEyLjAzQzEyLjY3IDEyLjAzIDEzLjMyIDEyLjA4IDEzLjk0IDEyLjE1TDEzIDE0LjAzTDEzLjg4IDE5LjFIMTguMVYxNkMxOC4xIDE1LjYyIDE3IDE0Ljk2IDE1LjUgMTQuNUwxNS43MyAxNEwxNi4zNiAxMi43Nk0xMiA1QzEwLjkgNSAxMCA1LjkgMTAgN0MxMCA4LjEgMTAuOSA5IDEyIDlDMTMuMSA5IDE0IDguMSAxNCA3QzE0IDUuOSAxMy4xIDUgMTIgNU0xMiAxMUM5Ljc5IDExIDggOS4yMSA4IDdDOCA0Ljc5IDkuNzkgMyAxMiAzQzE0LjIxIDMgMTYgNC43OSAxNiA3QzE2IDkuMjEgMTQuMjEgMTEgMTIgMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZVZvaWNlID0gXCJNMTYuNzUgNC4zNkMxOC43NyA2LjU2IDE4Ljc3IDkuNjEgMTYuNzUgMTEuNjNMMTUuMDcgOS45NEMxNS45MSA4Ljc2IDE1LjkxIDcuMjMgMTUuMDcgNi4wNUwxNi43NSA0LjM2TTIwLjA2IDFDMjQgNS4wNSAyMy45NiAxMS4xMSAyMC4wNiAxNUwxOC40MyAxMy4zN0MyMS4yIDEwLjE5IDIxLjIgNS42NSAxOC40MyAyLjYzTDIwLjA2IDFNOSA0QzExLjIgNCAxMyA1Ljc5IDEzIDhTMTEuMiAxMiA5IDEyIDUgMTAuMjEgNSA4IDYuNzkgNCA5IDRNMTMgMTQuNTRDMTMgMTUuNiAxMi43MSAxOC4wNyAxMC44IDIwLjgzTDEwIDE2TDEwLjkzIDE0LjEyQzEwLjMxIDE0LjA1IDkuNjYgMTQgOSAxNFM3LjY3IDE0LjA1IDcuMDUgMTQuMTJMOCAxNkw3LjE4IDIwLjgzQzUuMjcgMTguMDcgNSAxNS42IDUgMTQuNTRDMi42IDE1LjI0IC45OTQgMTYuNSAuOTk0IDE4VjIySDE3VjE4QzE3IDE2LjUgMTUuMzkgMTUuMjQgMTMgMTQuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZVZvaWNlT2ZmID0gXCJNMTIuNyA5LjVMNy41IDQuM0M3Ljk2IDQuMTEgOC40NiA0IDkgNEMxMS4yIDQgMTMgNS43OSAxMyA4QzEzIDguNTMgMTIuODkgOS4wNCAxMi43IDkuNU0xNi43NSAxMS42M0MxOC43NyA5LjYxIDE4Ljc3IDYuNTYgMTYuNzUgNC4zNkwxNS4wNyA2LjA1QzE1LjkxIDcuMjMgMTUuOTEgOC43NiAxNS4wNyA5Ljk0TDE2Ljc1IDExLjYzTTIwLjA2IDE1QzIzLjk2IDExLjExIDI0IDUuMDUgMjAuMDYgMUwxOC40MyAyLjYzQzIxLjIgNS42NSAyMS4yIDEwLjE5IDE4LjQzIDEzLjM3TDIwLjA2IDE1TTIuMzkgMS43M0wxLjExIDNMNS4xMyA3QzUuMDUgNy4zNCA1IDcuNjYgNSA4QzUgMTAuMjEgNi43OSAxMiA5IDEyQzkuMzMgMTIgOS42NiAxMS45NCA5Ljk3IDExLjg2TDEzIDE0Ljg3QzEyLjkzIDE2LjA2IDEyLjU0IDE4LjMyIDEwLjggMjAuODNMMTAgMTZMMTAuOTMgMTQuMTJDMTAuMzEgMTQuMDUgOS42NiAxNCA5IDE0QzguMzIgMTQgNy42NyAxNC4wNSA3LjA1IDE0LjEyTDggMTZMNy4xOCAyMC44M0M1LjI3IDE4LjA3IDUgMTUuNiA1IDE0LjU0QzIuNiAxNS4yNCAuOTk0IDE2LjUgLjk5NCAxOFYyMkgxN1YxOC44OEwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZVZvaWNlT2ZmT3V0bGluZSA9IFwiTTkuMjIgNkw3LjUgNC4zQzcuOTYgNC4xMSA4LjQ3IDQgOSA0QzExLjIxIDQgMTMgNS43OSAxMyA4QzEzIDguNTMgMTIuODkgOS4wNCAxMi43IDkuNUwxMSA3Ljc4QzEwLjg3IDYuODYgMTAuMTQgNi4xMyA5LjIyIDZNMjAuMDYgMTVDMjMuOTYgMTEuMTEgMjQgNS4wNSAyMC4wNiAxTDE4LjQzIDIuNjNDMjEuMiA1LjY1IDIxLjIgMTAuMTkgMTguNDMgMTMuMzdMMjAuMDYgMTVNMTYuNzUgMTEuNjNDMTguNzcgOS42MSAxOC43NyA2LjU2IDE2Ljc1IDQuMzZMMTUuMDcgNi4wNUMxNS45MSA3LjIzIDE1LjkxIDguNzYgMTUuMDcgOS45NEwxNi43NSAxMS42M00yLjM5IDEuNzNMMS4xMSAzTDUuMTQgNy4wM0M1LjA2IDcuMzQgNSA3LjY2IDUgOEM1IDEwLjIxIDYuNzkgMTIgOSAxMkM5LjM0IDEyIDkuNjYgMTEuOTQgOS45NyAxMS44NkwxMi44NiAxNC43NUwxMi43MyAxNUwxMi41IDE1LjVDMTMuMyAxNS43NCAxMy45NyAxNi4wNSAxNC40NCAxNi4zM0wxNS4xIDE3VjIwLjFIMTAuODhMMTAgMTUuMDNMMTAuOTQgMTMuMTVDMTAuMzIgMTMuMDggOS42NyAxMy4wMyA5IDEzLjAzUzcuNjggMTMuMDggNy4wNiAxMy4xNUw4IDE1LjAzTDcuMTIgMjAuMUgyLjlWMTdDMi45IDE2LjYyIDQgMTUuOTYgNS41IDE1LjVMNS4yNyAxNUw0LjY1IDEzLjc2QzIuNjkgMTQuNDIgMSAxNS41IDEgMTdWMjJIMTdWMTguODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRUaWVWb2ljZU91dGxpbmUgPSBcIk0xNi43NSA0LjM2QzE4Ljc3IDYuNTYgMTguNzcgOS42MSAxNi43NSAxMS42M0wxNS4wNyA5Ljk0QzE1LjkxIDguNzYgMTUuOTEgNy4yMyAxNS4wNyA2LjA1TDE2Ljc1IDQuMzZNMjAuMDYgMUMyNCA1LjA1IDIzLjk2IDExLjExIDIwLjA2IDE1TDE4LjQzIDEzLjM3QzIxLjIgMTAuMTkgMjEuMiA1LjY1IDE4LjQzIDIuNjNMMjAuMDYgMU0xMy4zNiAxMy43NkMxNS4zMSAxNC40MiAxNyAxNS41IDE3IDE3VjIySDFWMTdDMSAxNS41IDIuNjkgMTQuNDIgNC42NSAxMy43Nkw1LjI3IDE1TDUuNSAxNS41QzQgMTUuOTYgMi45IDE2LjYyIDIuOSAxN1YyMC4xSDcuMTJMOCAxNS4wM0w3LjA2IDEzLjE1QzcuNjggMTMuMDggOC4zMyAxMy4wMyA5IDEzLjAzUzEwLjMyIDEzLjA4IDEwLjk0IDEzLjE1TDEwIDE1LjAzTDEwLjg4IDIwLjFIMTUuMVYxN0MxNS4xIDE2LjYyIDE0IDE1Ljk2IDEyLjUgMTUuNUwxMi43MyAxNUwxMy4zNiAxMy43Nk05IDZDNy45IDYgNyA2LjkgNyA4UzcuOSAxMCA5IDEwIDExIDkuMSAxMSA4IDEwLjEgNiA5IDZNOSAxMkM2Ljc5IDEyIDUgMTAuMjEgNSA4UzYuNzkgNCA5IDQgMTMgNS43OSAxMyA4IDExLjIxIDEyIDkgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFZvaWNlID0gXCJNOSw1QTQsNCAwIDAsMSAxMyw5QTQsNCAwIDAsMSA5LDEzQTQsNCAwIDAsMSA1LDlBNCw0IDAgMCwxIDksNU05LDE1QzExLjY3LDE1IDE3LDE2LjM0IDE3LDE5VjIxSDFWMTlDMSwxNi4zNCA2LjMzLDE1IDksMTVNMTYuNzYsNS4zNkMxOC43OCw3LjU2IDE4Ljc4LDEwLjYxIDE2Ljc2LDEyLjYzTDE1LjA4LDEwLjk0QzE1LjkyLDkuNzYgMTUuOTIsOC4yMyAxNS4wOCw3LjA1TDE2Ljc2LDUuMzZNMjAuMDcsMkMyNCw2LjA1IDIzLjk3LDEyLjExIDIwLjA3LDE2TDE4LjQ0LDE0LjM3QzIxLjIxLDExLjE5IDIxLjIxLDYuNjUgMTguNDQsMy42M0wyMC4wNywyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFkanVzdCA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsMTJDMjAsMTYuNDEgMTYuNDEsMjAgMTIsMjBNMTUsMTJBMywzIDAgMCwxIDEyLDE1QTMsMyAwIDAsMSA5LDEyQTMsMyAwIDAsMSAxMiw5QTMsMyAwIDAsMSAxNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBZG9iZSA9IFwiTTE0LjU4LDNIMjJWMTkuNjdMMTQuNTgsM005LjQyLDNIMlYxOS42N0w5LjQyLDNNMTIsOS4xN0wxNi42NywxOS42N0gxMy41TDEyLjE3LDE2LjMzSDguNzVMMTIsOS4xN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBZG9iZUFjcm9iYXQgPSBcIk0yMS44IDE0LjVDMjEuMyAxMy43IDIwLjEgMTMuNCAxOC4xIDEzLjRDMTcuNCAxMy40IDE2LjcgMTMuNCAxNiAxMy41QzE1LjUgMTMuMiAxNSAxMi45IDE0LjYgMTIuNkMxMy42IDExLjggMTIuNyAxMC4zIDEyIDguNUMxMiA4LjUgMTIgOC40IDEyLjEgOC4zQzEyLjYgNi4yIDEzLjEgMy42IDEyLjEgMi41QzExLjggMi4yIDExLjUgMi4xIDExLjEgMi4xSDEwLjdDMTAuMSAyLjEgOS42IDIuNyA5LjQgMy4zQzguOCA1LjQgOS4yIDYuNiA5LjggOC41QzkuNCAxMCA4LjkgMTEuNiA4IDEzLjNDNy41IDE0LjQgNi45IDE1LjQgNi41IDE2LjJDNS45IDE2LjUgNS40IDE2LjggNS4xIDE3QzMuMiAxOC4yIDIuMiAxOS42IDIuMSAyMC40QzIgMjAuNyAyIDIxIDIuMSAyMS4yVjIxLjNMMi45IDIxLjhDMy4xIDIxLjkgMy40IDIyIDMuNiAyMkM0LjkgMjIgNi40IDIwLjUgOC40IDE3QzguNSAxNyA4LjYgMTYuOSA4LjcgMTYuOUMxMC40IDE2LjQgMTIuNCAxNiAxNS4yIDE1LjdDMTYuOCAxNi41IDE4LjggMTYuOSAyMCAxNi45QzIwLjcgMTYuOSAyMS4yIDE2LjcgMjEuNSAxNi40QzIxLjggMTYuMSAyMS45IDE1LjcgMjIgMTUuM0MyMiAxNSAyMiAxNC43IDIxLjggMTQuNU0zLjQgMjAuOUMzLjUgMjAuMyA0LjIgMTkuMiA1LjQgMTguMkM1LjYgMTguMSA1LjggMTcuOSA2LjIgMTcuN0M1IDE5LjYgNC4xIDIwLjYgMy40IDIwLjlNMTAuOCAzLjJDMTAuOSAzLjEgMTAuOSAzIDExIDNMMTEuMiAzLjFDMTEuNSAzLjUgMTEuNSA0IDExLjMgNC45VjUuMkMxMS4yIDUuNiAxMS4yIDYgMTEgNi41QzEwLjYgNSAxMC42IDMuOSAxMC44IDMuMk04LjggMTUuOEw4LjYgMTUuOUM4LjcgMTUuNCA5LjEgMTQuOCA5LjQgMTQuMkMxMC4xIDEyLjggMTAuNyAxMS41IDExIDEwLjNDMTEuNyAxMS44IDEyLjUgMTIuOSAxMy41IDEzLjhDMTMuNyAxNCAxMy45IDE0LjIgMTQuMiAxNC4zQzEyLjggMTQuNSAxMC45IDE1IDguOCAxNS44TTIwLjkgMTUuN0gyMC41QzE5LjggMTUuNyAxOC42IDE1LjQgMTcuNCAxNC45QzE3LjUgMTQuNyAxNy43IDE0LjcgMTcuOCAxNC43QzIwLjEgMTQuNyAyMC43IDE1LjEgMjAuOSAxNS4zQzIxIDE1LjQgMjEgMTUuNCAyMSAxNS41QzIxIDE1LjYgMjEgMTUuNiAyMC45IDE1LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlyQ29uZGl0aW9uZXIgPSBcIk02LjU5LDAuNjZDOC45MywtMS4xNSAxMS40NywxLjA2IDEyLjA0LDQuNUMxMi40Nyw0LjUgMTIuODksNC42MiAxMy4yNyw0Ljg0QzEzLjc5LDQuMjQgMTQuMjUsMy40MiAxNC4wNywyLjVDMTMuNjUsMC4zNSAxNi4wNiwtMS4zOSAxOC4zNSwxLjU4QzIwLjE2LDMuOTIgMTcuOTUsNi40NiAxNC41LDcuMDNDMTQuNSw3LjQ2IDE0LjM5LDcuODkgMTQuMTYsOC4yN0MxNC43Niw4Ljc4IDE1LjU4LDkuMjQgMTYuNSw5LjA2QzE4LjYzLDguNjQgMjAuMzgsMTEuMDQgMTcuNDEsMTMuMzRDMTUuMDcsMTUuMTUgMTIuNTMsMTIuOTQgMTEuOTYsOS41QzExLjUzLDkuNSAxMS4xMSw5LjM3IDEwLjc0LDkuMTVDMTAuMjIsOS43NSA5Ljc1LDEwLjU4IDkuOTMsMTEuNUMxMC4zNSwxMy42NCA3Ljk0LDE1LjM5IDUuNjUsMTIuNDJDMy44MywxMC4wNyA2LjA1LDcuNTMgOS41LDYuOTdDOS41LDYuNTQgOS42Myw2LjEyIDkuODUsNS43NEM5LjI1LDUuMjMgOC40Myw0Ljc2IDcuNSw0Ljk0QzUuMzcsNS4zNiAzLjYyLDIuOTYgNi41OSwwLjY2TTUsMTZIN0EyLDIgMCAwLDEgOSwxOFYyNEg3VjIySDVWMjRIM1YxOEEyLDIgMCAwLDEgNSwxNk01LDE4VjIwSDdWMThINU0xMi45MywxNkgxNUwxMi4wNywyNEgxMEwxMi45MywxNk0xOCwxNkgyMVYxOEgxOFYyMkgyMVYyNEgxOEEyLDIgMCAwLDEgMTYsMjJWMThBMiwyIDAgMCwxIDE4LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFpckZpbHRlciA9IFwiTTE5LDE4LjMxVjIwQTIsMiAwIDAsMSAxNywyMkg3QTIsMiAwIDAsMSA1LDIwVjE2LjNDNC41NCwxNi4xMiAzLjk1LDE2IDMsMTZBMSwxIDAgMCwxIDIsMTVBMSwxIDAgMCwxIDMsMTRDMy44MiwxNCA0LjQ3LDE0LjA4IDUsMTQuMjFWMTIuM0M0LjU0LDEyLjEyIDMuOTUsMTIgMywxMkExLDEgMCAwLDEgMiwxMUExLDEgMCAwLDEgMywxMEMzLjgyLDEwIDQuNDcsMTAuMDggNSwxMC4yMVY4LjNDNC41NCw4LjEyIDMuOTUsOCAzLDhBMSwxIDAgMCwxIDIsN0ExLDEgMCAwLDEgMyw2QzMuODIsNiA0LjQ3LDYuMDggNSw2LjIxVjRBMiwyIDAgMCwxIDcsMkgxN0EyLDIgMCAwLDEgMTksNFY2LjE2QzIwLjc4LDYuNDcgMjEuNTQsNy4xMyAyMS43MSw3LjI5QzIyLjEsNy42OCAyMi4xLDguMzIgMjEuNzEsOC43MUMyMS4zMiw5LjEgMjAuOCw5LjA5IDIwLjI5LDguNzFWOC43MUMyMC4yOSw4LjcxIDE5LjI1LDggMTcsOEMxNS43NCw4IDE0LjkxLDguNDEgMTMuOTUsOC45QzEyLjkxLDkuNDEgMTEuNzQsMTAgMTAsMTBDOS42NCwxMCA5LjMxLDEwIDksOS45NlY3Ljk1QzkuMyw4IDkuNjMsOCAxMCw4QzExLjI2LDggMTIuMDksNy41OSAxMy4wNSw3LjExQzE0LjA5LDYuNTkgMTUuMjcsNiAxNyw2VjRIN1YyMEgxN1YxOEMxOC41LDE4IDE4Ljk3LDE4LjI5IDE5LDE4LjMxTTE3LDEwQzE1LjI3LDEwIDE0LjA5LDEwLjU5IDEzLjA1LDExLjExQzEyLjA5LDExLjU5IDExLjI2LDEyIDEwLDEyQzkuNjMsMTIgOS4zLDEyIDksMTEuOTVWMTMuOTZDOS4zMSwxNCA5LjY0LDE0IDEwLDE0QzExLjc0LDE0IDEyLjkxLDEzLjQxIDEzLjk1LDEyLjlDMTQuOTEsMTIuNDIgMTUuNzQsMTIgMTcsMTJDMTkuMjUsMTIgMjAuMjksMTIuNzEgMjAuMjksMTIuNzFWMTIuNzFDMjAuOCwxMy4xIDIxLjMyLDEzLjEgMjEuNzEsMTIuNzFDMjIuMSwxMi4zMiAyMi4xLDExLjY5IDIxLjcxLDExLjI5QzIxLjUsMTEuMDggMjAuMjUsMTAgMTcsMTBNMTcsMTRDMTUuMjcsMTQgMTQuMDksMTQuNTkgMTMuMDUsMTUuMTFDMTIuMDksMTUuNTkgMTEuMjYsMTYgMTAsMTZDOS42MywxNiA5LjMsMTYgOSwxNS45NVYxNy45NkM5LjMxLDE4IDkuNjQsMTggMTAsMThDMTEuNzQsMTggMTIuOTEsMTcuNDEgMTMuOTUsMTYuOUMxNC45MSwxNi40MiAxNS43NCwxNiAxNywxNkMxOS4yNSwxNiAyMC4yOSwxNi43MSAyMC4yOSwxNi43MVYxNi43MUMyMC44LDE3LjEgMjEuMzIsMTcuMSAyMS43MSwxNi43MUMyMi4xLDE2LjMyIDIyLjEsMTUuNjkgMjEuNzEsMTUuMjlDMjEuNSwxNS4wOCAyMC4yNSwxNCAxNywxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBaXJIb3JuID0gXCJNMTksMi44VjZMMTksOS4yQzE5LDkuNSAxOC43LDkuOCAxOC40LDkuN0MxOC40LDkuNyAxNC41LDcuMSAxMCw3LjFWOS41SDEwLjJDMTAuNyw5LjUgMTEuMiw5LjcgMTEuNCwxMC4xTDEyLjcsMTEuOUMxMi45LDEyLjEgMTMsMTIuNCAxMywxMi42VjIwLjZDMTMsMjEuMyAxMi4zLDIyIDExLjUsMjJINi41QzUuNywyMiA1LDIxLjQgNSwyMC42VjEyLjZDNSwxMi4zIDUuMSwxMi4xIDUuMywxMS45TDYuNiwxMC4xQzYuOSw5LjcgNy4zLDkuNSA3LjgsOS41SDhWOEM3LjYsOC41IDcsOC44IDYuNCw4LjhDNS4xLDguOCA0LDcuNSA0LDZDNCw0LjUgNS4xLDMuMiA2LjQsMy4yQzcsMy4zIDcuNiwzLjYgOCw0VjIuNkgxMFY1QzE0LjUsNSAxOC40LDIuNCAxOC40LDIuNEMxOC43LDIuMyAxOSwyLjUgMTksMi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFpckh1bWlkaWZpZXIgPSBcIk0xMSA5QzguNzkgOSA3IDEwLjc5IDcgMTNTOC43OSAxNyAxMSAxNyAxNSAxNS4yMSAxNSAxMyAxMy4yMSA5IDExIDlNMTEgMTVDOS45IDE1IDkgMTQuMTEgOSAxM1M5LjkgMTEgMTEgMTEgMTMgMTEuOSAxMyAxMyAxMi4xMSAxNSAxMSAxNU03IDRIMTRDMTYuMjEgNCAxOCA1Ljc5IDE4IDhWOUgxNlY4QzE2IDYuOSAxNS4xMSA2IDE0IDZIN0M1LjkgNiA1IDYuOSA1IDhWMjBIMTZWMThIMThWMjJIM1Y4QzMgNS43OSA0Ljc5IDQgNyA0TTE5IDEwLjVDMTkgMTAuNSAyMSAxMi42NyAyMSAxNEMyMSAxNS4xIDIwLjEgMTYgMTkgMTZTMTcgMTUuMSAxNyAxNEMxNyAxMi42NyAxOSAxMC41IDE5IDEwLjVcIjtcclxuZXhwb3J0IHZhciBtZGlBaXJIdW1pZGlmaWVyT2ZmID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMMy44IDUuN0MzLjMgNi4zIDMgNy4xIDMgOFYyMkgxOFYxOS45TDIwLjggMjIuN0wyMi4xIDIxLjVNOS42IDExLjVMMTIuNCAxNC4zQzEyLjEgMTQuNyAxMS42IDE1IDExIDE1QzkuOSAxNSA5IDE0LjEgOSAxM0M5IDEyLjQgOS4zIDExLjkgOS42IDExLjVNMTYgMTcuOVYyMEg1VjhDNSA3LjcgNS4xIDcuNCA1LjIgNy4xTDguMiAxMC4xQzcuNSAxMC44IDcgMTEuOSA3IDEzQzcgMTUuMiA4LjggMTcgMTEgMTdDMTIuMSAxNyAxMy4yIDE2LjUgMTMuOSAxNS44TDE2IDE3LjlNMTcgMTMuOEMxNy4xIDEyLjUgMTkgMTAuNSAxOSAxMC41UzIxIDEyLjcgMjEgMTRDMjEgMTUgMjAuMiAxNS45IDE5LjIgMTZMMTcgMTMuOE05LjIgNkw3LjIgNEgxNEMxNi4yIDQgMTggNS44IDE4IDhWOUgxNlY4QzE2IDYuOSAxNS4xIDYgMTQgNkg5LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlyUHVyaWZpZXIgPSBcIk0xMSw5QTQsNCAwIDAsMSAxNSwxM0E0LDQgMCAwLDEgMTEsMTdBNCw0IDAgMCwxIDcsMTNBNCw0IDAgMCwxIDExLDlNMTEsMTFBMiwyIDAgMCwwIDksMTNBMiwyIDAgMCwwIDExLDE1QTIsMiAwIDAsMCAxMywxM0EyLDIgMCAwLDAgMTEsMTFNNyw0SDE0QTQsNCAwIDAsMSAxOCw4VjlIMTZWOEEyLDIgMCAwLDAgMTQsNkg3QTIsMiAwIDAsMCA1LDhWMjBIMTZWMThIMThWMjJIM1Y4QTQsNCAwIDAsMSA3LDRNMTYsMTFDMTguNSwxMSAxOC41LDkgMjEsOVYxMUMxOC41LDExIDE4LjUsMTMgMTYsMTNWMTFNMTYsMTVDMTguNSwxNSAxOC41LDEzIDIxLDEzVjE1QzE4LjUsMTUgMTguNSwxNyAxNiwxN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBaXJiYWcgPSBcIk0xNCw4QTUsNSAwIDAsMSA5LDEzQTUsNSAwIDAsMSA0LDhBNSw1IDAgMCwxIDksM0E1LDUgMCAwLDEgMTQsOE0xMC40NiwxNS41NUwxMywxOC4wM0wxMSwxOC4wNUw3LjUsMjEuNThMNiwyMC4wOUwxMC40NiwxNS41NU0xNywyQzE4LjA4LDIgMTksMi44OCAxOSw0QzE5LDUuMDggMTguMTIsNiAxNyw2QzE1LjkyLDYgMTUsNS4xMiAxNSw0QzE1LDIuOTIgMTUuODksMiAxNywyTTE0LjQxLDE1SDExLjU5TDE3LjI5LDIwLjcxTDE4LjcxLDE5LjI5TDE0LjQxLDE1TTE1LjEyLDE0LjI5TDE5LjQxLDE4LjU5TDE5LjYzLDE4LjhDMTkuODYsMTguNDIgMjAsMTggMjAsMTcuNVY5LjVBMi41LDIuNSAwIDAsMCAxNy41LDdBMi41LDIuNSAwIDAsMCAxNSw5LjVWMTQuMTdMMTUuMTIsMTQuMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlyYmFsbG9vbiA9IFwiTTExLDIzQTIsMiAwIDAsMSA5LDIxVjE5SDE1VjIxQTIsMiAwIDAsMSAxMywyM0gxMU0xMiwxQzEyLjcxLDEgMTMuMzksMS4wOSAxNC4wNSwxLjI2QzE1LjIyLDIuODMgMTYsNS43MSAxNiw5QzE2LDExLjI4IDE1LjYyLDEzLjM3IDE1LDE2QTIsMiAwIDAsMSAxMywxOEgxMUEyLDIgMCAwLDEgOSwxNkM4LjM4LDEzLjM3IDgsMTEuMjggOCw5QzgsNS43MSA4Ljc4LDIuODMgOS45NSwxLjI2QzEwLjYxLDEuMDkgMTEuMjksMSAxMiwxTTIwLDhDMjAsMTEuMTggMTguMTUsMTUuOTIgMTUuNDYsMTcuMjFDMTYuNDEsMTUuMzkgMTcsMTEuODMgMTcsOUMxNyw2LjE3IDE2LjQxLDMuNjEgMTUuNDYsMS43OUMxOC4xNSwzLjA4IDIwLDQuODIgMjAsOE00LDhDNCw0LjgyIDUuODUsMy4wOCA4LjU0LDEuNzlDNy41OSwzLjYxIDcsNi4xNyA3LDlDNywxMS44MyA3LjU5LDE1LjM5IDguNTQsMTcuMjFDNS44NSwxNS45MiA0LDExLjE4IDQsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBaXJiYWxsb29uT3V0bGluZSA9IFwiTTExIDIzQzkuOSAyMyA5IDIyLjEgOSAyMVYxOUgxNVYyMUMxNSAyMi4xIDE0LjEgMjMgMTMgMjNIMTFNMTIgM0MxMi4yOCAzIDEyLjU1IDMgMTIuODEgMy4wNUMxMy40MiA0LjIyIDE0IDYuMjYgMTQgOUMxNCAxMS4xIDEzIDE2IDEzIDE2SDExQzExIDE2IDEwIDExLjEgMTAgOUMxMCA2LjI2IDEwLjU4IDQuMjIgMTEuMTkgMy4wNUMxMS40NSAzIDExLjcyIDMgMTIgM00xMiAxQzExLjI5IDEgMTAuNjEgMS4wOSA5Ljk1IDEuMjZDOC43OCAyLjgzIDggNS43MSA4IDlDOCAxMS4yOCA4LjM4IDEzLjM3IDkgMTZDOSAxNy4xIDkuOSAxOCAxMSAxOEgxM0MxNC4xIDE4IDE1IDE3LjEgMTUgMTZDMTUuNjIgMTMuMzcgMTYgMTEuMjggMTYgOUMxNiA1LjcxIDE1LjIyIDIuODMgMTQuMDUgMS4yNkMxMy4zOSAxLjA5IDEyLjcxIDEgMTIgMU00IDhDNCAxMS4xOCA1Ljg1IDE1LjkyIDguNTQgMTcuMjFDOCAxNi4yMSA3LjYxIDE0LjY3IDcuMzQgMTNDNi41NSAxMS41MyA2IDkuNjIgNiA4QzYgNi42NiA2LjQ0IDUuNjcgNy40NyA0LjhDNy43MyAzLjY3IDguMDkgMi42NSA4LjU0IDEuNzlDNS44NSAzLjA4IDQgNC44MiA0IDhNMTUuNDYgMS43OUMxNS45MSAyLjY1IDE2LjI3IDMuNjcgMTYuNTMgNC44QzE3LjU2IDUuNjcgMTggNi42NiAxOCA4QzE4IDkuNjIgMTcuNDUgMTEuNTMgMTYuNjYgMTNDMTYuMzkgMTQuNjcgMTYgMTYuMjEgMTUuNDYgMTcuMjFDMTguMTUgMTUuOTIgMjAgMTEuMTggMjAgOFMxOC4xNSAzLjA4IDE1LjQ2IDEuNzlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlycGxhbmUgPSBcIk0yMSwxNlYxNEwxMyw5VjMuNUExLjUsMS41IDAgMCwwIDExLjUsMkExLjUsMS41IDAgMCwwIDEwLDMuNVY5TDIsMTRWMTZMMTAsMTMuNVYxOUw4LDIwLjVWMjJMMTEuNSwyMUwxNSwyMlYyMC41TDEzLDE5VjEzLjVMMjEsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlycGxhbmVMYW5kaW5nID0gXCJNMi41LDE5SDIxLjVWMjFIMi41VjE5TTkuNjgsMTMuMjdMMTQuMDMsMTQuNDNMMTkuMzQsMTUuODVDMjAuMTQsMTYuMDYgMjAuOTYsMTUuNTkgMjEuMTgsMTQuNzlDMjEuMzksMTQgMjAuOTIsMTMuMTcgMjAuMTIsMTIuOTVMMTQuODEsMTEuNTNMMTIuMDUsMi41TDEwLjEyLDJWMTAuMjhMNS4xNSw4Ljk1TDQuMjIsNi42M0wyLjc3LDYuMjRWMTEuNDFMNC4zNywxMS44NEw5LjY4LDEzLjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFpcnBsYW5lT2ZmID0gXCJNMy4xNSw1LjI3TDguMTMsMTAuMjZMMi4xNSwxNFYxNkwxMC4xNSwxMy41VjE5TDguMTUsMjAuNVYyMkwxMS42NSwyMUwxNS4xNSwyMlYyMC41TDEzLjE1LDE5VjE1LjI3TDE4Ljg3LDIxTDIwLjE1LDE5LjczTDQuNDIsNE0xMy4xNSw5VjMuNUExLjUsMS41IDAgMCwwIDExLjY1LDJBMS41LDEuNSAwIDAsMCAxMC4xNSwzLjVWNy4xOEwxNy45NywxNUwyMS4xNSwxNlYxNEwxMy4xNSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFpcnBsYW5lVGFrZW9mZiA9IFwiTTIuNSwxOUgyMS41VjIxSDIuNVYxOU0yMi4wNyw5LjY0QzIxLjg2LDguODQgMjEuMDMsOC4zNiAyMC4yMyw4LjU4TDE0LjkyLDEwTDgsMy41N0w2LjA5LDQuMDhMMTAuMjMsMTEuMjVMNS4yNiwxMi41OEwzLjI5LDExLjA0TDEuODQsMTEuNDNMMy42NiwxNC41OUw0LjQzLDE1LjkyTDYuMDMsMTUuNUwxMS4zNCwxNC4wN0wxNS42OSwxMi45MUwyMSwxMS41QzIxLjgxLDExLjI2IDIyLjI4LDEwLjQ0IDIyLjA3LDkuNjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlycG9ydCA9IFwiTTE0Ljk3LDUuOTJDMTQuODMsNS40MSAxNC4zLDUuMSAxMy43OSw1LjI0TDEwLjM5LDYuMTVMNS45NSwyLjAzTDQuNzIsMi4zNkw3LjM4LDYuOTVMNC4xOSw3LjhMMi45Myw2LjgyTDIsNy4wN0wzLjY2LDkuOTVMMTQuMjgsNy4xMUMxNC44LDYuOTYgMTUuMSw2LjQzIDE0Ljk3LDUuOTJNMjEsMTBMMjAsMTJIMTVMMTQsMTBMMTUsOUgxN1Y3SDE4VjlIMjBMMjEsMTBNMjIsMjBWMjJIMlYyMEgxNVYxM0gyMFYyMEgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybSA9IFwiTTEyLDIwQTcsNyAwIDAsMSA1LDEzQTcsNyAwIDAsMSAxMiw2QTcsNyAwIDAsMSAxOSwxM0E3LDcgMCAwLDEgMTIsMjBNMTIsNEE5LDkgMCAwLDAgMywxM0E5LDkgMCAwLDAgMTIsMjJBOSw5IDAgMCwwIDIxLDEzQTksOSAwIDAsMCAxMiw0TTEyLjUsOEgxMVYxNEwxNS43NSwxNi44NUwxNi41LDE1LjYyTDEyLjUsMTMuMjVWOE03Ljg4LDMuMzlMNi42LDEuODZMMiw1LjcxTDMuMjksNy4yNEw3Ljg4LDMuMzlNMjIsNS43MkwxNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TDIyLDUuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxhcm1CZWxsID0gXCJNMTUsMTguNjZWMjJINVYxOC42NkM4LjA5LDIwLjQ1IDExLjkxLDIwLjQ1IDE1LDE4LjY2TTIyLDRBMiwyIDAgMCwwIDIwLDJDMTkuNjksMiAxOS4zOSwyLjA3IDE5LjEyLDIuMjFDMTguODIsMi4zNiAxOC41NiwyLjU4IDE4LjM2LDIuODVDMTcuNzIsMy43NSAxNy45NCw1IDE4Ljg1LDUuNjRDMTkuMTgsNS44NyAxOS41OSw2IDIwLDZDMjAuMDgsNiAyMC4xNiw2IDIwLjI0LDZDMjEuOTcsMTAuNDMgMjAuNjYsMTUuNDYgMTcsMTguNUMxNi42OCwxOC43NSAxNi4zNSwxOSAxNiwxOS4yMlYyMUgxN1YxOS43NEMyMC4xNCwxNy41IDIyLDEzLjg2IDIyLDEwQzIyLDguNSAyMS43Miw3IDIxLjE3LDUuNjJDMjEuNjksNS4yNCAyMiw0LjY0IDIyLDRNMTgsMTBBOCw4IDAgMCwxIDEwLDE4QTgsOCAwIDAsMSAyLDEwQTgsOCAwIDAsMSAxMCwyQTgsOCAwIDAsMSAxOCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybUNoZWNrID0gXCJNMTAuNTQsMTQuNTNMOC40MSwxMi40TDcuMzUsMTMuNDZMMTAuNTMsMTYuNjRMMTYuNTMsMTAuNjRMMTUuNDcsOS41OEwxMC41NCwxNC41M00xMiwyMEE3LDcgMCAwLDEgNSwxM0E3LDcgMCAwLDEgMTIsNkE3LDcgMCAwLDEgMTksMTNBNyw3IDAgMCwxIDEyLDIwTTEyLDRBOSw5IDAgMCwwIDMsMTNBOSw5IDAgMCwwIDEyLDIyQTksOSAwIDAsMCAyMSwxM0E5LDkgMCAwLDAgMTIsNE03Ljg4LDMuMzlMNi42LDEuODZMMiw1LjcxTDMuMjksNy4yNEw3Ljg4LDMuMzlNMjIsNS43MkwxNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TDIyLDUuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxhcm1MaWdodCA9IFwiTTYsNi45TDMuODcsNC43OEw1LjI4LDMuMzdMNy40LDUuNUw2LDYuOU0xMywxVjRIMTFWMUgxM00yMC4xMyw0Ljc4TDE4LDYuOUwxNi42LDUuNUwxOC43MiwzLjM3TDIwLjEzLDQuNzhNNC41LDEwLjVWMTIuNUgxLjVWMTAuNUg0LjVNMTkuNSwxMC41SDIyLjVWMTIuNUgxOS41VjEwLjVNNiwyMEgxOEEyLDIgMCAwLDEgMjAsMjJINEEyLDIgMCAwLDEgNiwyME0xMiw1QTYsNiAwIDAsMSAxOCwxMVYxOUg2VjExQTYsNiAwIDAsMSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtTGlnaHRPZmYgPSBcIk0xOCAxNC44TDkgNS44QzkuOSA1LjMgMTAuOSA1IDEyIDVDMTUuMyA1IDE4IDcuNyAxOCAxMVYxNC44TTIwLjEgNC44TDE4LjcgMy40TDE2LjYgNS41TDE4IDYuOUwyMC4xIDQuOE0xOS41IDEwLjVWMTIuNUgyMi41VjEwLjVIMTkuNU00LjUgMTAuNUgxLjVWMTIuNUg0LjVWMTAuNU0xLjEgM0w2LjYgOC41QzYuMiA5LjIgNiAxMC4xIDYgMTFWMTlIMTcuMUwxOC4xIDIwSDZDNC45IDIwIDQgMjAuOSA0IDIySDIwLjFMMjAuOCAyMi43TDIyLjEgMjEuNEwyLjQgMS43TDEuMSAzTTEzIDFIMTFWNEgxM1YxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtTGlnaHRPZmZPdXRsaW5lID0gXCJNMTAuNSA3LjNMOSA1LjhDOS45IDUuMyAxMC45IDUgMTIgNUMxNS4zIDUgMTggNy43IDE4IDExVjE0LjhMMTYgMTIuOFYxMUMxNiA4LjggMTQuMiA3IDEyIDdDMTEuNSA3IDExIDcuMSAxMC41IDcuM00yMC4xIDQuOEwxOC43IDMuNEwxNi42IDUuNUwxOCA2LjlMMjAuMSA0LjhNMTkuNSAxMC41VjEyLjVIMjIuNVYxMC41SDE5LjVNNC41IDEwLjVIMS41VjEyLjVINC41VjEwLjVNMi40IDEuN0wyMi4xIDIxLjRMMjAuOCAyMi43TDIwLjEgMjJINEM0IDIwLjkgNC45IDIwIDYgMjBIMTguMUwxNy4xIDE5SDZWMTFDNiAxMC4xIDYuMiA5LjIgNi42IDguNUwxLjEgM0wyLjQgMS43TTggMTdIMTUuMUw4LjEgMTBDOC4xIDEwLjMgOCAxMC43IDggMTFWMTdNMTMgMUgxMVY0SDEzVjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxhcm1MaWdodE91dGxpbmUgPSBcIk02LDYuOUwzLjg3LDQuNzhMNS4yOCwzLjM3TDcuNCw1LjVMNiw2LjlNMTMsMVY0SDExVjFIMTNNMjAuMTMsNC43OEwxOCw2LjlMMTYuNiw1LjVMMTguNzIsMy4zN0wyMC4xMyw0Ljc4TTQuNSwxMC41VjEyLjVIMS41VjEwLjVINC41TTE5LjUsMTAuNUgyMi41VjEyLjVIMTkuNVYxMC41TTYsMjBIMThBMiwyIDAgMCwxIDIwLDIySDRBMiwyIDAgMCwxIDYsMjBNMTIsNUE2LDYgMCAwLDEgMTgsMTFWMTlINlYxMUE2LDYgMCAwLDEgMTIsNU0xMiw3QTQsNCAwIDAsMCA4LDExVjE3SDE2VjExQTQsNCAwIDAsMCAxMiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtTXVsdGlwbGUgPSBcIk05LjI5LDMuMjVMNS4xNiw2LjcyTDQsNS4zNEw4LjE0LDEuODdMOS4yOSwzLjI1TTIyLDUuMzVMMjAuODQsNi43M0wxNi43LDMuMjVMMTcuODYsMS44N0wyMiw1LjM1TTEzLDRBOCw4IDAgMCwxIDIxLDEyQTgsOCAwIDAsMSAxMywyMEE4LDggMCAwLDEgNSwxMkE4LDggMCAwLDEgMTMsNE0xMyw2QTYsNiAwIDAsMCA3LDEyQTYsNiAwIDAsMCAxMywxOEE2LDYgMCAwLDAgMTksMTJBNiw2IDAgMCwwIDEzLDZNMTIsNy41SDEzLjVWMTIuMDNMMTYuNzIsMTMuNUwxNi4xLDE0Ljg2TDEyLDEzVjcuNU0xLDE0QzEsMTEuNSAyLjEzLDkuMyAzLjkxLDcuODNDMy4zMyw5LjEgMywxMC41IDMsMTJMMy4wNiwxMy4xM0wzLDE0QzMsMTYuMjggNC4yNywxOC4yNiA2LjE0LDE5LjI4QzcuNDQsMjAuNSA5LjA3LDIxLjM5IDEwLjg5LDIxLjc4QzEwLjI4LDIxLjkyIDkuNjUsMjIgOSwyMkE4LDggMCAwLDEgMSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybU5vdGUgPSBcIk0xNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TDIyLDUuNzJMMTcuNCwxLjg2TTYuNiwxLjg2TDIsNS43MUwzLjI5LDcuMjRMNy44OCwzLjM5TDYuNiwxLjg2TTEyLDRBOSw5IDAgMCwwIDMsMTNBOSw5IDAgMCwwIDEyLDIyQzEyLjMzLDIyIDEyLjY3LDIyIDEzLDIxLjk0VjE5Ljk0QzEyLjY3LDIwIDEyLjMzLDIwIDEyLDIwQTcsNyAwIDAsMSA1LDEzQTcsNyAwIDAsMSAxMiw2QzE1LjEsNiAxNy44Myw4LjAzIDE4LjcxLDExSDIwLjc4QzE5Ljg1LDYuOSAxNi4yLDQgMTIsNE0yMywxNUgyMFYyMC41QTIuNSwyLjUgMCAwLDEgMTcuNSwyM0EyLjUsMi41IDAgMCwxIDE1LDIwLjVBMi41LDIuNSAwIDAsMSAxNy41LDE4QzE4LjA0LDE4IDE4LjU3LDE4LjE4IDE5LDE4LjVWMTNIMjNWMTVNMTEuNSw4VjEzLjI1TDcuNSwxNS42Mkw4LjI1LDE2Ljg1TDEzLDE0VjhIMTEuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybU5vdGVPZmYgPSBcIk0xOSwxM1YxNS44TDIwLDE2LjhWMTVIMjNWMTNIMTlNMi4zOCwxLjczTDEuMTEsM0wzLDQuODhMMiw1LjcxTDMuMjksNy4yNEw0LjQxLDYuM0w1LjIxLDcuMUMxLjk1LDEwLjg1IDIuMzUsMTYuNTQgNi4xMSwxOS44QzcuNzQsMjEuMjIgOS44MywyMiAxMiwyMkMxMi4zMywyMiAxMi42NywyMiAxMywyMS45NFYxOS45NEMxMi42NywyMCAxMi4zMywyMCAxMiwyMEE3LDcgMCAwLDEgNSwxM0M1LDExLjM2IDUuNTcsOS43NyA2LjYzLDguNUwxMS40MSwxMy4zTDcuNSwxNS42Mkw4LjI1LDE2Ljg1TDEyLjQ0LDE0LjMzTDE2LjM4LDE4LjI3QzE1LjE0LDE4Ljg4IDE0LjY0LDIwLjM4IDE1LjI1LDIxLjYyQzE1Ljg2LDIyLjg2IDE3LjM2LDIzLjM2IDE4LjYsMjIuNzVDMTkuMDksMjIuNSAxOS41LDIyLjExIDE5LjczLDIxLjYyTDIwLjg0LDIyLjczTDIyLjExLDIxLjQ2TDIuMzgsMS43M00xMiw2QzE1LjEsNiAxNy44Myw4LjAzIDE4LjcxLDExSDIwLjc4QzE5Ljg1LDYuOSAxNi4yLDQgMTIsNEMxMC42NSw0IDkuMzEsNC4zIDguMSw0LjlMOS42Miw2LjQyQzEwLjM4LDYuMTQgMTEuMTksNiAxMiw2TTExLjUsOC4zTDEzLDkuOFY4SDExLjVWOC4zTTcuODgsMy4zOUw2LjYsMS44Nkw1Ljc2LDIuNTZMNy4xOCw0TDcuODgsMy4zOU0xNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TDIyLDUuNzJMMTcuNCwxLjg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtT2ZmID0gXCJNOCwzLjI4TDYuNiwxLjg2TDUuNzQsMi41N0w3LjE2LDRNMTYuNDcsMTguMzlDMTUuMjYsMTkuMzkgMTMuNywyMCAxMiwyMEE3LDcgMCAwLDEgNSwxM0M1LDExLjMgNS42MSw5Ljc0IDYuNjEsOC41M00yLjkyLDIuMjlMMS42NSwzLjU3TDMsNC45TDEuODcsNS44M0wzLjI5LDcuMjVMNC40LDYuMzFMNS4yLDcuMTFDMy44Myw4LjY5IDMsMTAuNzUgMywxM0E5LDkgMCAwLDAgMTIsMjJDMTQuMjUsMjIgMTYuMzEsMjEuMTcgMTcuODksMTkuOEwyMC4wOSwyMkwyMS4zNiwyMC43M0wzLjg5LDMuMjdMMi45MiwyLjI5TTIyLDUuNzJMMTcuNCwxLjg2TDE2LjExLDMuMzlMMjAuNzEsNy4yNUwyMiw1LjcyTTEyLDZBNyw3IDAgMCwxIDE5LDEzQzE5LDEzLjg0IDE4Ljg0LDE0LjY1IDE4LjU3LDE1LjRMMjAuMDksMTYuOTJDMjAuNjcsMTUuNzMgMjEsMTQuNDEgMjEsMTNBOSw5IDAgMCwwIDEyLDRDMTAuNTksNCA5LjI3LDQuMzMgOC4wOCw0LjkxTDkuNiw2LjQzQzEwLjM1LDYuMTYgMTEuMTYsNiAxMiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtUGFuZWwgPSBcIk0yMCAzSDRDMi45IDMgMiAzLjkgMiA1VjE5QzIgMjAuMSAyLjkgMjEgNCAyMUgyMEMyMS4xIDIxIDIyIDIwLjEgMjIgMTlWNUMyMiAzLjkgMjEuMSAzIDIwIDNNOCAxOUg1VjE3SDhWMTlNOCAxNkg1VjE0SDhWMTZNOCAxM0g1VjExSDhWMTNNMTMuNSAxOUgxMC41VjE3SDEzLjVWMTlNMTMuNSAxNkgxMC41VjE0SDEzLjVWMTZNMTMuNSAxM0gxMC41VjExSDEzLjVWMTNNMTkgMTlIMTZWMTdIMTlWMTlNMTkgMTZIMTZWMTRIMTlWMTZNMTkgMTNIMTZWMTFIMTlWMTNNMTkgOUg1VjVIMTlWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybVBhbmVsT3V0bGluZSA9IFwiTTkgMTJINlYxMEg5VjEyTTEzLjUgMTBIMTAuNVYxMkgxMy41VjEwTTE4IDEwSDE1VjEySDE4VjEwTTE4IDZINlY5SDE4VjZNMjAgNUg0TDQgMTlMMjAgMTlMMjAgNUwyMCA1TTIwIDNDMjEuMSAzIDIyIDMuOSAyMiA1VjE5QzIyIDIwLjEgMjEuMSAyMSAyMCAyMUg0QzIuOSAyMSAyIDIwLjEgMiAxOVY1QzIgMy45IDIuOSAzIDQgM0gyME05IDEzSDZWMTVIOVYxM00xMy41IDEzSDEwLjVWMTVIMTMuNVYxM00xOCAxM0gxNVYxNUgxOFYxM005IDE2SDZWMThIOVYxNk0xMy41IDE2SDEwLjVWMThIMTMuNVYxNk0xOCAxNkgxNVYxOEgxOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybVBsdXMgPSBcIk0xMyw5SDExVjEySDhWMTRIMTFWMTdIMTNWMTRIMTZWMTJIMTNNMTIsMjBBNyw3IDAgMCwxIDUsMTNBNyw3IDAgMCwxIDEyLDZBNyw3IDAgMCwxIDE5LDEzQTcsNyAwIDAsMSAxMiwyME0xMiw0QTksOSAwIDAsMCAzLDEzQTksOSAwIDAsMCAxMiwyMkE5LDkgMCAwLDAgMjEsMTNBOSw5IDAgMCwwIDEyLDRNMjIsNS43MkwxNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TTcuODgsMy4zOUw2LjYsMS44NkwyLDUuNzFMMy4yOSw3LjI0TDcuODgsMy4zOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybVNub296ZSA9IFwiTTcuODgsMy4zOUw2LjYsMS44NkwyLDUuNzFMMy4yOSw3LjI0TDcuODgsMy4zOU0yMiw1LjcyTDE3LjQsMS44NkwxNi4xMSwzLjM5TDIwLjcxLDcuMjVMMjIsNS43Mk0xMiw0QTksOSAwIDAsMCAzLDEzQTksOSAwIDAsMCAxMiwyMkE5LDkgMCAwLDAgMjEsMTNBOSw5IDAgMCwwIDEyLDRNMTIsMjBBNyw3IDAgMCwxIDUsMTNBNyw3IDAgMCwxIDEyLDZBNyw3IDAgMCwxIDE5LDEzQTcsNyAwIDAsMSAxMiwyME05LDExSDEyLjYzTDksMTUuMlYxN0gxNVYxNUgxMS4zN0wxNSwxMC44VjlIOVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGJ1bSA9IFwiTTEyLDExQTEsMSAwIDAsMCAxMSwxMkExLDEgMCAwLDAgMTIsMTNBMSwxIDAgMCwwIDEzLDEyQTEsMSAwIDAsMCAxMiwxMU0xMiwxNi41QzkuNSwxNi41IDcuNSwxNC41IDcuNSwxMkM3LjUsOS41IDkuNSw3LjUgMTIsNy41QzE0LjUsNy41IDE2LjUsOS41IDE2LjUsMTJDMTYuNSwxNC41IDE0LjUsMTYuNSAxMiwxNi41TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0ID0gXCJNMTMgMTRIMTFWOUgxM00xMyAxOEgxMVYxNkgxM00xIDIxSDIzTDEyIDJMMSAyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydEJveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNMTMsMTNWN0gxMVYxM0gxM00xMywxN1YxNUgxMVYxN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydEJveE91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xMSwxNUgxM1YxN0gxMVYxNU0xMSw3SDEzVjEzSDExVjdcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydENpcmNsZSA9IFwiTTEzLDEzSDExVjdIMTNNMTMsMTdIMTFWMTVIMTNNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRDaXJjbGVDaGVjayA9IFwiTTE4Ljc1IDIyLjE2TDE2IDE5LjE2TDE3LjE2IDE4TDE4Ljc1IDE5LjU5TDIyLjM0IDE2TDIzLjUgMTcuNDFMMTguNzUgMjIuMTZNMTMgMTNWN0gxMVYxM0gxM00xMyAxN1YxNUgxMVYxN0gxM00xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJMMjEuOTEgMTMuMzFDMjEuMzEgMTMuMTEgMjAuNjcgMTMgMjAgMTNDMTYuNjkgMTMgMTQgMTUuNjkgMTQgMTlDMTQgMTkuOTUgMTQuMjIgMjAuODUgMTQuNjIgMjEuNjVDMTMuNzggMjEuODggMTIuOTEgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRDaXJjbGVDaGVja091dGxpbmUgPSBcIk0xOC43NSAyMi4xNkwxNiAxOS4xNkwxNy4xNiAxOEwxOC43NSAxOS41OUwyMi4zNCAxNkwyMy41IDE3LjQxTDE4Ljc1IDIyLjE2TTExIDE1SDEzVjE3SDExVjE1TTExIDdIMTNWMTNIMTFWN00xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJMMjEuOTIgMTMuMzFDMjEuMzEgMTMuMTEgMjAuNjcgMTMgMTkuOTQgMTNMMjAgMTJDMjAgNy41OCAxNi40MiA0IDEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxMi43MSAyMCAxMy4zOSAxOS45MSAxNC4wNSAxOS43NEMxNC4xMyAyMC40MiAxNC4zMyAyMS4wNiAxNC42MiAyMS42NUMxMy43OCAyMS44OCAxMi45IDIyIDEyIDIyQzYuNDcgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi40NyAyIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRDaXJjbGVPdXRsaW5lID0gXCJNMTEsMTVIMTNWMTdIMTFWMTVNMTEsN0gxM1YxM0gxMVY3TTEyLDJDNi40NywyIDIsNi41IDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0RGVjYWdyYW0gPSBcIk0yMywxMkwyMC41Niw5LjIyTDIwLjksNS41NEwxNy4yOSw0LjcyTDE1LjQsMS41NEwxMiwzTDguNiwxLjU0TDYuNzEsNC43MkwzLjEsNS41M0wzLjQ0LDkuMjFMMSwxMkwzLjQ0LDE0Ljc4TDMuMSwxOC40N0w2LjcxLDE5LjI5TDguNiwyMi40N0wxMiwyMUwxNS40LDIyLjQ2TDE3LjI5LDE5LjI4TDIwLjksMTguNDZMMjAuNTYsMTQuNzhMMjMsMTJNMTMsMTdIMTFWMTVIMTNWMTdNMTMsMTNIMTFWN0gxM1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydERlY2FncmFtT3V0bGluZSA9IFwiTTIzLDEyTDIwLjU2LDE0Ljc4TDIwLjksMTguNDZMMTcuMjksMTkuMjhMMTUuNCwyMi40NkwxMiwyMUw4LjYsMjIuNDdMNi43MSwxOS4yOUwzLjEsMTguNDdMMy40NCwxNC43OEwxLDEyTDMuNDQsOS4yMUwzLjEsNS41M0w2LjcxLDQuNzJMOC42LDEuNTRMMTIsM0wxNS40LDEuNTRMMTcuMjksNC43MkwyMC45LDUuNTRMMjAuNTYsOS4yMkwyMywxMk0yMC4zMywxMkwxOC41LDkuODlMMTguNzQsNy4xTDE2LDYuNUwxNC41OCw0LjA3TDEyLDUuMThMOS40Miw0LjA3TDgsNi41TDUuMjYsNy4wOUw1LjUsOS44OEwzLjY3LDEyTDUuNSwxNC4xTDUuMjYsMTYuOUw4LDE3LjVMOS40MiwxOS45M0wxMiwxOC44MUwxNC41OCwxOS45MkwxNiwxNy41TDE4Ljc0LDE2Ljg5TDE4LjUsMTQuMUwyMC4zMywxMk0xMSwxNUgxM1YxN0gxMVYxNU0xMSw3SDEzVjEzSDExVjdcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydE1pbnVzID0gXCJNMTQgMTlDMTQgMTYuMjEgMTUuOTEgMTMuODcgMTguNSAxMy4yTDEyIDJMMSAyMUgxNC4zNUMxNC4xMyAyMC4zNyAxNCAxOS43IDE0IDE5TTEzIDE4SDExVjE2SDEzVjE4TTEzIDE0SDExVjEwSDEzVjE0TTI0IDE4VjIwSDE2VjE4SDI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0TWludXNPdXRsaW5lID0gXCJNMTEgMTUuNUgxM1YxNy41SDExVjE1LjVNMTQgMTlDMTQgMTguODYgMTQgMTguNzMgMTQgMTguNkg1LjRMMTIgNy4zTDE2LjExIDE0LjQ0QzE2LjYyIDE0IDE3LjIgMTMuNjUgMTcuODQgMTMuNDFMMTIgMy4zTDIgMjAuNkgxNC4yMkMxNC4wOCAyMC4wOSAxNCAxOS41NiAxNCAxOU0xMyAxMC41SDExVjE0LjVIMTNWMTAuNU0xNiAxOFYyMEgyNFYxOEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydE9jdGFnb24gPSBcIk0xMyAxM0gxMVY3SDEzTTExIDE1SDEzVjE3SDExTTE1LjczIDNIOC4yN0wzIDguMjdWMTUuNzNMOC4yNyAyMUgxNS43M0wyMSAxNS43M1Y4LjI3TDE1LjczIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRPY3RhZ29uT3V0bGluZSA9IFwiTTguMjcsM0wzLDguMjdWMTUuNzNMOC4yNywyMUgxNS43M0MxNy41LDE5LjI0IDIxLDE1LjczIDIxLDE1LjczVjguMjdMMTUuNzMsM005LjEsNUgxNC45TDE5LDkuMVYxNC45TDE0LjksMTlIOS4xTDUsMTQuOVY5LjFNMTEsMTVIMTNWMTdIMTFWMTVNMTEsN0gxM1YxM0gxMVY3XCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRPY3RhZ3JhbSA9IFwiTTIuMiwxNi4wNkwzLjg4LDEyTDIuMiw3Ljk0TDYuMjYsNi4yNkw3Ljk0LDIuMkwxMiwzLjg4TDE2LjA2LDIuMkwxNy43NCw2LjI2TDIxLjgsNy45NEwyMC4xMiwxMkwyMS44LDE2LjA2TDE3Ljc0LDE3Ljc0TDE2LjA2LDIxLjhMMTIsMjAuMTJMNy45NCwyMS44TDYuMjYsMTcuNzRMMi4yLDE2LjA2TTEzLDE3VjE1SDExVjE3SDEzTTEzLDEzVjdIMTFWMTNIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRPY3RhZ3JhbU91dGxpbmUgPSBcIk0yLjIsMTYuMDZMMy44OCwxMkwyLjIsNy45NEw2LjI2LDYuMjZMNy45NCwyLjJMMTIsMy44OEwxNi4wNiwyLjJMMTcuNzQsNi4yNkwyMS44LDcuOTRMMjAuMTIsMTJMMjEuOCwxNi4wNkwxNy43NCwxNy43NEwxNi4wNiwyMS44TDEyLDIwLjEyTDcuOTQsMjEuOEw2LjI2LDE3Ljc0TDIuMiwxNi4wNk00LjgxLDlMNi4wNSwxMkw0LjgxLDE1TDcuNzksMTYuMjFMOSwxOS4xOUwxMiwxNy45NUwxNSwxOS4xOUwxNi4yMSwxNi4yMUwxOS4xOSwxNUwxNy45NSwxMkwxOS4xOSw5TDE2LjIxLDcuNzlMMTUsNC44MUwxMiw2LjA1TDksNC44MUw3Ljc5LDcuNzlMNC44MSw5TTExLDE1SDEzVjE3SDExVjE1TTExLDdIMTNWMTNIMTFWN1wiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0T3V0bGluZSA9IFwiTTEyLDJMMSwyMUgyM00xMiw2TDE5LjUzLDE5SDQuNDdNMTEsMTBWMTRIMTNWMTBNMTEsMTZWMThIMTNWMTZcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydFBsdXMgPSBcIk0xNCAxOUMxNCAxNi4yMSAxNS45MSAxMy44NyAxOC41IDEzLjJMMTIgMkwxIDIxSDE0LjM1QzE0LjEzIDIwLjM3IDE0IDE5LjcgMTQgMTlNMTMgMThIMTFWMTZIMTNWMThNMTMgMTRIMTFWMTBIMTNWMTRNMjEgMTVWMThIMjRWMjBIMjFWMjNIMTlWMjBIMTZWMThIMTlWMTVIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRQbHVzT3V0bGluZSA9IFwiTTExIDE1LjVIMTNWMTcuNUgxMVYxNS41TTE0IDE5QzE0IDE4Ljg2IDE0IDE4LjczIDE0IDE4LjZINS40TDEyIDcuM0wxNi4xMSAxNC40NEMxNi42MiAxNCAxNy4yIDEzLjY1IDE3Ljg0IDEzLjQxTDEyIDMuM0wyIDIwLjZIMTQuMjJDMTQuMDggMjAuMDkgMTQgMTkuNTYgMTQgMTlNMTMgMTAuNUgxMVYxNC41SDEzVjEwLjVNMTkgMTVWMThIMTZWMjBIMTlWMjNIMjFWMjBIMjRWMThIMjFWMTVIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRSZW1vdmUgPSBcIk0xNCAxOUMxNCAxNi4yMSAxNS45MSAxMy44NyAxOC41IDEzLjJMMTIgMkwxIDIxSDE0LjM1QzE0LjEzIDIwLjM3IDE0IDE5LjcgMTQgMTlNMTMgMThIMTFWMTZIMTNWMThNMTMgMTRIMTFWMTBIMTNWMTRNMjMuNTQgMTYuODhMMjEuNDEgMTlMMjMuNTQgMjEuMTJMMjIuMTIgMjIuNTRMMjAgMjAuNDFMMTcuODggMjIuNTRMMTYuNDcgMjEuMTJMMTguNTkgMTlMMTYuNDcgMTYuODhMMTcuODggMTUuNDdMMjAgMTcuNTlMMjIuMTIgMTUuNDZMMjMuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRSZW1vdmVPdXRsaW5lID0gXCJNMTEgMTUuNUgxM1YxNy41SDExVjE1LjVNMTQgMTlDMTQgMTguODYgMTQgMTguNzMgMTQgMTguNkg1LjRMMTIgNy4zTDE2LjExIDE0LjQ0QzE2LjYyIDE0IDE3LjIgMTMuNjUgMTcuODQgMTMuNDFMMTIgMy4zTDIgMjAuNkgxNC4yMkMxNC4wOCAyMC4wOSAxNCAxOS41NiAxNCAxOU0xMyAxMC41SDExVjE0LjVIMTNWMTAuNU0yMi4xMiAxNS40NkwyMCAxNy41OUwxNy44OCAxNS40NkwxNi40NyAxNi44OEwxOC41OSAxOUwxNi40NyAyMS4xMkwxNy44OCAyMi41NEwyMCAyMC40MUwyMi4xMiAyMi41NEwyMy41NCAyMS4xMkwyMS40MSAxOUwyMy41NCAxNi44OEwyMi4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydFJob21idXMgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTEgN0gxM1YxM0gxMVY3TTExIDE1SDEzVjE3SDExVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0UmhvbWJ1c091dGxpbmUgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTIgNEwyMCAxMkwxMiAyMEw0IDEyTTExIDdWMTNIMTNWN00xMSAxNVYxN0gxM1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGllbiA9IFwiTTEyLDNDMTYuOTcsMyAyMSw2LjU4IDIxLDExQzIxLDE1LjQyIDE1LDIxIDEyLDIxQzksMjEgMywxNS40MiAzLDExQzMsNi41OCA3LjAzLDMgMTIsM00xMC4zMSwxMC45M0M5LjI5LDkuMjkgNy40Nyw4LjU4IDYuMjUsOS4zNEM1LjAzLDEwLjEgNC44NywxMi4wNSA1Ljg5LDEzLjY5QzYuOTIsMTUuMzMgOC43NCwxNi4wNCA5Ljk2LDE1LjI4QzExLjE4LDE0LjUgMTEuMzMsMTIuNTcgMTAuMzEsMTAuOTNNMTMuNjksMTAuOTNDMTIuNjcsMTIuNTcgMTIuODIsMTQuNSAxNC4wNCwxNS4yOEMxNS4yNiwxNi4wNCAxNy4wOCwxNS4zMyAxOC4xMSwxMy42OUMxOS4xMywxMi4wNSAxOC45NywxMC4xIDE3Ljc1LDkuMzRDMTYuNTMsOC41OCAxNC43MSw5LjI5IDEzLjY5LDEwLjkzTTEyLDE3Ljc1QzEwLDE3Ljc1IDkuNSwxNyA5LjUsMTdDOS41LDE3LjAzIDEwLDE5IDEyLDE5QzE0LDE5IDE0LjUsMTcgMTQuNSwxN0MxNC41LDE3IDE0LDE3Ljc1IDEyLDE3Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsaWVuT3V0bGluZSA9IFwiTTEwLjMxIDEwLjkzQzExLjMzIDEyLjU3IDExLjE4IDE0LjUgOS45NiAxNS4yOEM4Ljc0IDE2LjA0IDYuOTIgMTUuMzMgNS44OSAxMy42OUM0Ljg3IDEyLjA1IDUuMDMgMTAuMSA2LjI1IDkuMzRDNy40NyA4LjU4IDkuMjkgOS4yOSAxMC4zMSAxMC45M00xMiAxNy43NUMxNCAxNy43NSAxNC41IDE3IDE0LjUgMTdDMTQuNSAxNyAxNCAxOSAxMiAxOUMxMCAxOSA5LjUgMTcuMDMgOS41IDE3QzkuNSAxNyAxMCAxNy43NSAxMiAxNy43NU0xNy43NSA5LjM0QzE4Ljk3IDEwLjEgMTkuMTMgMTIuMDUgMTguMTEgMTMuNjlDMTcuMDggMTUuMzMgMTUuMjYgMTYuMDQgMTQuMDQgMTUuMjhDMTIuODIgMTQuNSAxMi42NyAxMi41NyAxMy42OSAxMC45M0MxNC43MSA5LjI5IDE2LjUzIDguNTggMTcuNzUgOS4zNE0xMiAyMEMxNC41IDIwIDIwIDE0Ljg2IDIwIDExQzIwIDcuMTQgMTYuNDEgNCAxMiA0QzcuNTkgNCA0IDcuMTQgNCAxMUM0IDE0Ljg2IDkuNSAyMCAxMiAyME0xMiAyQzE3LjUgMiAyMiA2LjA0IDIyIDExQzIyIDE1LjA4IDE2LjMyIDIyIDEyIDIyQzcuNjggMjIgMiAxNS4wOCAyIDExQzIgNi4wNCA2LjUgMiAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsaWduSG9yaXpvbnRhbENlbnRlciA9IFwiTTIwIDE5SDEzVjIySDExVjE5SDRWMTNIMTFWMTFIN1Y1SDExVjJIMTNWNUgxN1YxMUgxM1YxM0gyMFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGlnbkhvcml6b250YWxMZWZ0ID0gXCJNMjIgMTNWMTlINlYxM0gyMk02IDVWMTFIMTZWNUg2TTIgMlYyMkg0VjJIMlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsaWduSG9yaXpvbnRhbFJpZ2h0ID0gXCJNMTggMTNWMTlIMlYxM0gxOE04IDVWMTFIMThWNUg4TTIwIDJWMjJIMjJWMkgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGlnblZlcnRpY2FsQm90dG9tID0gXCJNMTEgMThINVYySDExVjE4TTE5IDhIMTNWMThIMTlWOE0yMiAyMEgyVjIySDIyVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsaWduVmVydGljYWxDZW50ZXIgPSBcIk01IDIwVjEzSDJWMTFINVY0SDExVjExSDEzVjdIMTlWMTFIMjJWMTNIMTlWMTdIMTNWMTNIMTFWMjBINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGlnblZlcnRpY2FsVG9wID0gXCJNMTEgMjJINVY2SDExVjIyTTE5IDZIMTNWMTZIMTlWNk0yMiAySDJWNEgyMlYyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsbEluY2x1c2l2ZSA9IFwiTTE4LjYsNi42MkMxNy4xNiw2LjYyIDE1LjgsNy4xOCAxNC44Myw4LjE1TDcuOCwxNC4zOUM3LjE2LDE1LjAzIDYuMzEsMTUuMzggNS40LDE1LjM4QzMuNTMsMTUuMzggMiwxMy44NyAyLDEyQzIsMTAuMTMgMy41Myw4LjYyIDUuNCw4LjYyQzYuMzEsOC42MiA3LjE2LDguOTcgNy44NCw5LjY1TDguOTcsMTAuNjVMMTAuNSw5LjMxTDkuMjIsOC4yQzguMiw3LjE4IDYuODQsNi42MiA1LjQsNi42MkMyLjQyLDYuNjIgMCw5LjA0IDAsMTJDMCwxNC45NiAyLjQyLDE3LjM4IDUuNCwxNy4zOEM2Ljg0LDE3LjM4IDguMiwxNi44MiA5LjE3LDE1Ljg1TDE2LjIsOS42MUMxNi44NCw4Ljk3IDE3LjY5LDguNjIgMTguNiw4LjYyQzIwLjQ3LDguNjIgMjIsMTAuMTMgMjIsMTJDMjIsMTMuODcgMjAuNDcsMTUuMzggMTguNiwxNS4zOEMxNy43LDE1LjM4IDE2Ljg0LDE1LjAzIDE2LjE2LDE0LjM1TDE1LDEzLjM0TDEzLjUsMTQuNjhMMTQuNzgsMTUuOEMxNS44LDE2LjgxIDE3LjE1LDE3LjM3IDE4LjYsMTcuMzdDMjEuNTgsMTcuMzcgMjQsMTQuOTYgMjQsMTJDMjQsOSAyMS41OCw2LjYyIDE4LjYsNi42MlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGxlcmd5ID0gXCJNMTkuNzUgNS4zM0ExLjI1IDEuMjUgMCAwIDAgMTguNSA2LjU4VjExLjE3SDE3LjY3VjQuMDhBMS4yNSAxLjI1IDAgMCAwIDE1LjE3IDQuMDhWMTEuMTdIMTQuMzNWMy4yNUExLjI1IDEuMjUgMCAxIDAgMTEuODMgMy4yNVYxMS4xN0gxMVY1LjMzQTEuMjUgMS4yNSAwIDAgMCA4LjUgNS4zM1YxNS4yNkw0LjkxIDEzLjI2QTEgMSAwIDAgMCA0LjQxIDEzLjEyQTEgMSAwIDAgMCAzLjc1IDEzLjM3TDIuNjcgMTQuMzdMOS4yMSAyMUEzLjI5IDMuMjkgMCAwIDAgMTEuNTggMjJIMTcuNjdBMy4zMyAzLjMzIDAgMCAwIDIxIDE4LjY3VjYuNThBMS4yNSAxLjI1IDAgMCAwIDE5Ljc1IDUuMzNNMTEgMTVBMSAxIDAgMSAxIDEyIDE0QTEgMSAwIDAgMSAxMSAxNU0xMyAxOEExIDEgMCAxIDEgMTQgMTdBMSAxIDAgMCAxIDEzIDE4TTE4IDE2QTEgMSAwIDEgMSAxOSAxNUExIDEgMCAwIDEgMTggMTZNMTcgMTlBMSAxIDAgMSAxIDE4IDE4QTEgMSAwIDAgMSAxNyAxOU0xNSAxNUExIDEgMCAxIDEgMTYgMTRBMSAxIDAgMCAxIDE1IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhID0gXCJNMTguMDgsMTcuOEMxNy42MiwxNy45MyAxNy4yMSwxOCAxNi44NSwxOEMxNS42NSwxOCAxNC44NCwxNy4xMiAxNC40MywxNS4zNUgxNC4zOEMxMy4zOSwxNy4yNiAxMiwxOC4yMSAxMC4yNSwxOC4yMUM4Ljk0LDE4LjIxIDcuODksMTcuNzIgNy4xLDE2LjczQzYuMzEsMTUuNzQgNS45MiwxNC41IDUuOTIsMTNDNS45MiwxMS4yNSA2LjM3LDkuODUgNy4yNiw4Ljc2QzguMTUsNy42NyA5LjM2LDcuMTIgMTAuODksNy4xMkMxMS43MSw3LjEyIDEyLjQ1LDcuMzUgMTMuMDksNy44QzEzLjczLDguMjYgMTQuMjIsOC45IDE0LjU2LDkuNzNIMTQuNkwxNS4zMSw3LjMzSDE3Ljg3TDE1LjczLDEyLjY1QzE1Ljk3LDEzLjg5IDE2LjIyLDE0Ljc0IDE2LjUsMTUuMTlDMTYuNzQsMTUuNjQgMTcuMDgsMTUuODcgMTcuNSwxNS44N0MxNy43NCwxNS44NyAxNy45MywxNS44MyAxOC4xLDE1Ljc2TDE4LjA4LDE3LjhNMTMuODIsMTIuNTZDMTMuNjEsMTEuNDMgMTMuMjcsMTAuNTUgMTIuODEsOS45NUMxMi4zNiw5LjM0IDExLjgxLDkuMDQgMTEuMTgsOS4wNEMxMC4zNiw5LjA0IDkuNyw5LjQxIDkuMjEsMTAuMTRDOC43MiwxMC44OCA4LjUsMTEuNzkgOC41LDEyLjg2QzguNSwxMy44NCA4LjY5LDE0LjY1IDkuMTIsMTUuMzFDOS41NCwxNS45NyAxMC4xMSwxNi4yOSAxMC44MiwxNi4yOUMxMS40MiwxNi4yOSAxMS45NywxNiAxMi40NiwxNS40NUMxMi45NiwxNC44OCAxMy4zNywxNC4wNSAxMy43LDEyLjk2TDEzLjgyLDEyLjU2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQSA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxN0gxMVYxM0gxM1YxN0gxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTFIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUFCb3ggPSBcIk0zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNMTEsN0EyLDIgMCAwLDAgOSw5VjE3SDExVjEzSDEzVjE3SDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxMUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQUJveE91dGxpbmUgPSBcIk0zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNNSw1VjE5SDE5VjVINU0xMSw3SDEzQTIsMiAwIDAsMSAxNSw5VjE3SDEzVjEzSDExVjE3SDlWOUEyLDIgMCAwLDEgMTEsN00xMSw5VjExSDEzVjlIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFBQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTEsN0EyLDIgMCAwLDAgOSw5VjE3SDExVjEzSDEzVjE3SDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxMUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQUNpcmNsZU91dGxpbmUgPSBcIk0xMSw3SDEzQTIsMiAwIDAsMSAxNSw5VjE3SDEzVjEzSDExVjE3SDlWOUEyLDIgMCAwLDEgMTEsN00xMSw5VjExSDEzVjlIMTFNMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyME0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUIgPSBcIk0xNSwxMC41VjlBMiwyIDAgMCwwIDEzLDdIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTMuNUMxNSwxMi43IDE0LjMsMTIgMTMuNSwxMkMxNC4zLDEyIDE1LDExLjMgMTUsMTAuNU0xMywxNUgxMVYxM0gxM1YxNU0xMywxMUgxMVY5SDEzVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQkJveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNMTUsMTAuNVY5QTIsMiAwIDAsMCAxMyw3SDlWMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjEzLjVDMTUsMTIuNyAxNC4zLDEyIDEzLjUsMTJDMTQuMywxMiAxNSwxMS4zIDE1LDEwLjVNMTMsMTVIMTFWMTNIMTNWMTVNMTMsMTFIMTFWOUgxM1YxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUJCb3hPdXRsaW5lID0gXCJNMTUsMTAuNUMxNSwxMS4zIDE0LjMsMTIgMTMuNSwxMkMxNC4zLDEyIDE1LDEyLjcgMTUsMTMuNVYxNUEyLDIgMCAwLDEgMTMsMTdIOVY3SDEzQTIsMiAwIDAsMSAxNSw5VjEwLjVNMTMsMTVWMTNIMTFWMTVIMTNNMTMsMTFWOUgxMVYxMUgxM00zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUJDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xNSwxMC41VjlBMiwyIDAgMCwwIDEzLDdIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTMuNUMxNSwxMi43IDE0LjMsMTIgMTMuNSwxMkMxNC4zLDEyIDE1LDExLjMgMTUsMTAuNU0xMywxNUgxMVYxM0gxM1YxNU0xMywxMUgxMVY5SDEzVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQkNpcmNsZU91dGxpbmUgPSBcIk0xNSwxMC41QzE1LDExLjMgMTQuMywxMiAxMy41LDEyQzE0LjMsMTIgMTUsMTIuNyAxNSwxMy41VjE1QTIsMiAwIDAsMSAxMywxN0g5VjdIMTNBMiwyIDAgMCwxIDE1LDlWMTAuNU0xMywxNVYxM0gxMVYxNUgxM00xMywxMVY5SDExVjExSDEzTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUMgPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxNEgxM1YxNUgxMVY5SDEzVjEwSDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFDQm94ID0gXCJNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM00xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxNEgxM1YxNUgxMVY5SDEzVjEwSDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFDQm94T3V0bGluZSA9IFwiTTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU01LDVWMTlIMTlWNUg1TTExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTBIMTNWOUgxMVYxNUgxM1YxNEgxNVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUEyLDIgMCAwLDEgMTEsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUNDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxNEgxM1YxNUgxMVY5SDEzVjEwSDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFDQ2lyY2xlT3V0bGluZSA9IFwiTTExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTBIMTNWOUgxMVYxNUgxM1YxNEgxNVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUEyLDIgMCAwLDEgMTEsN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFEID0gXCJNOSw3VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDlNMTEsOUgxM1YxNUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhREJveCA9IFwiTTksN1YxN0gxM0EyLDIgMCAwLDAgMTUsMTVWOUEyLDIgMCAwLDAgMTMsN0g5TTExLDlIMTNWMTVIMTFWOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhREJveE91dGxpbmUgPSBcIk05LDdIMTNBMiwyIDAgMCwxIDE1LDlWMTVBMiwyIDAgMCwxIDEzLDE3SDlWN00xMSw5VjE1SDEzVjlIMTFNMyw1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1TTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFEQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNOSw3VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDlNMTEsOUgxM1YxNUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhRENpcmNsZU91dGxpbmUgPSBcIk05LDdIMTNBMiwyIDAgMCwxIDE1LDlWMTVBMiwyIDAgMCwxIDEzLDE3SDlWN00xMSw5VjE1SDEzVjlIMTFNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhRSA9IFwiTTksN1YxN0gxNVYxNUgxMVYxM0gxNVYxMUgxMVY5SDE1VjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUVCb3ggPSBcIk05LDdWMTdIMTVWMTVIMTFWMTNIMTVWMTFIMTFWOUgxNVY3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUVCb3hPdXRsaW5lID0gXCJNOSw3SDE1VjlIMTFWMTFIMTVWMTNIMTFWMTVIMTVWMTdIOVY3TTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU01LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhRUNpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTksN1YxN0gxNVYxNUgxMVYxM0gxNVYxMUgxMVY5SDE1VjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUVDaXJjbGVPdXRsaW5lID0gXCJNOSw3SDE1VjlIMTFWMTFIMTVWMTNIMTFWMTVIMTVWMTdIOVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUYgPSBcIk05LDdWMTdIMTFWMTNIMTRWMTFIMTFWOUgxNVY3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFGQm94ID0gXCJNOSw3VjE3SDExVjEzSDE0VjExSDExVjlIMTVWN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFGQm94T3V0bGluZSA9IFwiTTksN0gxNVY5SDExVjExSDE0VjEzSDExVjE3SDlWN00zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUZDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk05LDdWMTdIMTFWMTNIMTRWMTFIMTFWOUgxNVY3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFGQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxNVY5SDExVjExSDE0VjEzSDExVjE3SDlWN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFHID0gXCJNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTFIMTNWMTVIMTFWOUgxNVY3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhR0JveCA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjExSDEzVjE1SDExVjlIMTVWN0gxMU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhR0JveE91dGxpbmUgPSBcIk0xMSw3SDE1VjlIMTFWMTVIMTNWMTFIMTVWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMyw1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1TTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFHQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTFIMTNWMTVIMTFWOUgxNVY3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhR0NpcmNsZU91dGxpbmUgPSBcIk0xMSw3SDE1VjlIMTFWMTVIMTNWMTFIMTVWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSCA9IFwiTTksN1YxN0gxMVYxM0gxM1YxN0gxNVY3SDEzVjExSDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUhCb3ggPSBcIk05LDdWMTdIMTFWMTNIMTNWMTdIMTVWN0gxM1YxMUgxMVY3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUhCb3hPdXRsaW5lID0gXCJNOSw3SDExVjExSDEzVjdIMTVWMTdIMTNWMTNIMTFWMTdIOVY3TTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU01LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSENpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTksN1YxN0gxMVYxM0gxM1YxN0gxNVY3SDEzVjExSDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUhDaXJjbGVPdXRsaW5lID0gXCJNOSw3SDExVjExSDEzVjdIMTVWMTdIMTNWMTNIMTFWMTdIOVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUkgPSBcIk0xNCw3VjlIMTNWMTVIMTRWMTdIMTBWMTVIMTFWOUgxMFY3SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSUJveCA9IFwiTTE0LDdIMTBWOUgxMVYxNUgxMFYxN0gxNFYxNUgxM1Y5SDE0VjdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUlCb3hPdXRsaW5lID0gXCJNMTQsN1Y5SDEzVjE1SDE0VjE3SDEwVjE1SDExVjlIMTBWN0gxNE01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFJQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTQsN0gxMFY5SDExVjE1SDEwVjE3SDE0VjE1SDEzVjlIMTRWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUlDaXJjbGVPdXRsaW5lID0gXCJNMTQsN1Y5SDEzVjE1SDE0VjE3SDEwVjE1SDExVjlIMTBWN0gxNE0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFKID0gXCJNMTMsN1YxNUgxMVYxNEg5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUpCb3ggPSBcIk0xMyw3VjE1SDExVjE0SDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY3SDEzTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFKQm94T3V0bGluZSA9IFwiTTEzLDdIMTVWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjE0SDExVjE1SDEzVjdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSkNpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEzLDdWMTVIMTFWMTRIOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjdIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFKQ2lyY2xlT3V0bGluZSA9IFwiTTEzLDdIMTVWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjE0SDExVjE1SDEzVjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSyA9IFwiTTksN1YxN0gxMVYxMy42N0wxMywxN0gxNUwxMiwxMkwxNSw3SDEzTDExLDEwLjMzVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUtCb3ggPSBcIk05LDdWMTdIMTFWMTMuNjdMMTMsMTdIMTVMMTIsMTJMMTUsN0gxM0wxMSwxMC4zM1Y3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUtCb3hPdXRsaW5lID0gXCJNOSw3SDExVjEwLjMzTDEzLDdIMTVMMTIsMTJMMTUsMTdIMTNMMTEsMTMuNjdWMTdIOVY3TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUtDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk05LDdWMTdIMTFWMTMuNjdMMTMsMTdIMTVMMTIsMTJMMTUsN0gxM0wxMSwxMC4zM1Y3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFLQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxMVYxMC4zM0wxMyw3SDE1TDEyLDEyTDE1LDE3SDEzTDExLDEzLjY3VjE3SDlWN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFMID0gXCJNOSw3VjE3SDE1VjE1SDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUxCb3ggPSBcIk05LDdWMTdIMTVWMTVIMTFWN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFMQm94T3V0bGluZSA9IFwiTTksN0gxMVYxNUgxNVYxN0g5VjdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTENpcmNsZSA9IFwiTTksN1YxN0gxNVYxNUgxMVY3SDlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFMQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxMVYxNUgxNVYxN0g5VjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTSA9IFwiTTksN0EyLDIgMCAwLDAgNyw5VjE3SDlWOUgxMVYxNkgxM1Y5SDE1VjE3SDE3VjlBMiwyIDAgMCwwIDE1LDdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU1Cb3ggPSBcIk05LDdBMiwyIDAgMCwwIDcsOVYxN0g5VjlIMTFWMTZIMTNWOUgxNVYxN0gxN1Y5QTIsMiAwIDAsMCAxNSw3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU1Cb3hPdXRsaW5lID0gXCJNOSw3SDE1QTIsMiAwIDAsMSAxNyw5VjE3SDE1VjlIMTNWMTZIMTFWOUg5VjE3SDdWOUEyLDIgMCAwLDEgOSw3TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU1DaXJjbGUgPSBcIk05LDdBMiwyIDAgMCwwIDcsOVYxN0g5VjlIMTFWMTZIMTNWOUgxNVYxN0gxN1Y5QTIsMiAwIDAsMCAxNSw3SDlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFNQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxNUEyLDIgMCAwLDEgMTcsOVYxN0gxNVY5SDEzVjE2SDExVjlIOVYxN0g3VjlBMiwyIDAgMCwxIDksN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFOID0gXCJNOSw3VjE3SDExVjEyTDEzLDE3SDE1VjdIMTNWMTJMMTEsN0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTkJveCA9IFwiTTksN1YxN0gxMVYxMkwxMywxN0gxNVY3SDEzVjEyTDExLDdIOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTkJveE91dGxpbmUgPSBcIk05LDdIMTFMMTMsMTJWN0gxNVYxN0gxM0wxMSwxMlYxN0g5VjdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTkNpcmNsZSA9IFwiTTksN1YxN0gxMVYxMkwxMywxN0gxNVY3SDEzVjEyTDExLDdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU5DaXJjbGVPdXRsaW5lID0gXCJNOSw3SDExTDEzLDEyVjdIMTVWMTdIMTNMMTEsMTJWMTdIOVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU8gPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTVIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU9Cb3ggPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTVIMTFWOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhT0JveE91dGxpbmUgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVNMTEsN0gxM0EyLDIgMCAwLDEgMTUsOVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUEyLDIgMCAwLDEgMTEsN00xMSw5VjE1SDEzVjlIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFPQ2lyY2xlID0gXCJNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWOUEyLDIgMCAwLDAgMTMsN0gxMU0xMSw5SDEzVjE1SDExVjlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFPQ2lyY2xlT3V0bGluZSA9IFwiTTExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMTEsOVYxNUgxM1Y5SDExTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVAgPSBcIk05LDdWMTdIMTFWMTNIMTNBMiwyIDAgMCwwIDE1LDExVjlBMiwyIDAgMCwwIDEzLDdIOU0xMSw5SDEzVjExSDExVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFQQm94ID0gXCJNOSw3VjE3SDExVjEzSDEzQTIsMiAwIDAsMCAxNSwxMVY5QTIsMiAwIDAsMCAxMyw3SDlNMTEsOUgxM1YxMUgxMVY5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFQQm94T3V0bGluZSA9IFwiTTksN0gxM0EyLDIgMCAwLDEgMTUsOVYxMUEyLDIgMCAwLDEgMTMsMTNIMTFWMTdIOVY3TTExLDlWMTFIMTNWOUgxMU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFQQ2lyY2xlID0gXCJNOSw3VjE3SDExVjEzSDEzQTIsMiAwIDAsMCAxNSwxMVY5QTIsMiAwIDAsMCAxMyw3SDlNMTEsOUgxM1YxMUgxMVY5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhUENpcmNsZU91dGxpbmUgPSBcIk05LDdIMTNBMiwyIDAgMCwxIDE1LDlWMTFBMiwyIDAgMCwxIDEzLDEzSDExVjE3SDlWN00xMSw5VjExSDEzVjlIMTFNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhUSA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdWMTlIMTNWMTdBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhUUJveCA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdWMTlIMTNWMTdBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5TTUsNEgxOUEyLDIgMCAwLDEgMjEsNlYyMEEyLDIgMCAwLDEgMTksMjJINUEyLDIgMCAwLDEgMywyMFY2QTIsMiAwIDAsMSA1LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFRQm94T3V0bGluZSA9IFwiTTUsNEgxOUEyLDIgMCAwLDEgMjEsNlYyMEEyLDIgMCAwLDEgMTksMjJINUEyLDIgMCAwLDEgMywyMFY2QTIsMiAwIDAsMSA1LDRNNSw2VjIwSDE5VjZINU0xMSw3SDEzQTIsMiAwIDAsMSAxNSw5VjE1QTIsMiAwIDAsMSAxMywxN1YxOUgxMVYxN0EyLDIgMCAwLDEgOSwxNVY5QTIsMiAwIDAsMSAxMSw3TTExLDlWMTVIMTNWOUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVFDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3VjE5SDEzVjE3QTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTVIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVFDaXJjbGVPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0TTExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTVBMiwyIDAgMCwxIDEzLDE3VjE5SDExVjE3QTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMTEsOVYxNUgxM1Y5SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhUiA9IFwiTTksN1YxN0gxMVYxM0gxMS44TDEzLDE3SDE1TDEzLjc2LDEyLjg1QzE0LjUsMTIuNTUgMTUsMTEuODQgMTUsMTFWOUEyLDIgMCAwLDAgMTMsN0g5TTExLDlIMTNWMTFIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVJCb3ggPSBcIk05LDdWMTdIMTFWMTNIMTEuOEwxMywxN0gxNUwxMy43NiwxMi44NUMxNC41LDEyLjU1IDE1LDExLjg0IDE1LDExVjlBMiwyIDAgMCwwIDEzLDdIOU0xMSw5SDEzVjExSDExVjlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVJCb3hPdXRsaW5lID0gXCJNOSw3SDEzQTIsMiAwIDAsMSAxNSw5VjExQzE1LDExLjg0IDE0LjUsMTIuNTUgMTMuNzYsMTIuODVMMTUsMTdIMTNMMTEuOCwxM0gxMVYxN0g5VjdNMTEsOVYxMUgxM1Y5SDExTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVJDaXJjbGUgPSBcIk05LDdWMTdIMTFWMTNIMTEuOEwxMywxN0gxNUwxMy43NiwxMi44NUMxNC41LDEyLjU1IDE1LDExLjg0IDE1LDExVjlBMiwyIDAgMCwwIDEzLDdIOU0xMSw5SDEzVjExSDExVjlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFSQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxM0EyLDIgMCAwLDEgMTUsOVYxMUMxNSwxMS44NCAxNC41LDEyLjU1IDEzLjc2LDEyLjg1TDE1LDE3SDEzTDExLjgsMTNIMTFWMTdIOVY3TTExLDlWMTFIMTNWOUgxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQzQsMTYuNDEgNy41OCwyMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFTID0gXCJNMTEsN0EyLDIgMCAwLDAgOSw5VjExQTIsMiAwIDAsMCAxMSwxM0gxM1YxNUg5VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxM0EyLDIgMCAwLDAgMTMsMTFIMTFWOUgxNVY3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhU0JveCA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxMUEyLDIgMCAwLDAgMTEsMTNIMTNWMTVIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNBMiwyIDAgMCwwIDEzLDExSDExVjlIMTVWN0gxMU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhU0JveE91dGxpbmUgPSBcIk0xMSw3SDE1VjlIMTFWMTFIMTNBMiwyIDAgMCwxIDE1LDEzVjE1QTIsMiAwIDAsMSAxMywxN0g5VjE1SDEzVjEzSDExQTIsMiAwIDAsMSA5LDExVjlBMiwyIDAgMCwxIDExLDdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhU0NpcmNsZSA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxMUEyLDIgMCAwLDAgMTEsMTNIMTNWMTVIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNBMiwyIDAgMCwwIDEzLDExSDExVjlIMTVWN0gxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVNDaXJjbGVPdXRsaW5lID0gXCJNMTEsN0gxNVY5SDExVjExSDEzQTIsMiAwIDAsMSAxNSwxM1YxNUEyLDIgMCAwLDEgMTMsMTdIOVYxNUgxM1YxM0gxMUEyLDIgMCAwLDEgOSwxMVY5QTIsMiAwIDAsMSAxMSw3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVQgPSBcIk05LDdWOUgxMVYxN0gxM1Y5SDE1VjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVRCb3ggPSBcIk05LDdWOUgxMVYxN0gxM1Y5SDE1VjdIOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhVEJveE91dGxpbmUgPSBcIk05LDdIMTVWOUgxM1YxN0gxMVY5SDlWN001LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFUQ2lyY2xlID0gXCJNOSw3VjlIMTFWMTdIMTNWOUgxNVY3SDlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFUQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxNVY5SDEzVjE3SDExVjlIOVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVUgPSBcIk05LDdWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY3SDEzVjE1SDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVVCb3ggPSBcIk05LDdWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY3SDEzVjE1SDExVjdIOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhVUJveE91dGxpbmUgPSBcIk05LDdIMTFWMTVIMTNWN0gxNVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWN001LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFVQ2lyY2xlID0gXCJNOSw3VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWN0gxM1YxNUgxMVY3SDlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFVQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxMVYxNUgxM1Y3SDE1VjE1QTIsMiAwIDAsMSAxMywxN0gxMUEyLDIgMCAwLDEgOSwxNVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVYgPSBcIk05LDdMMTEsMTdIMTNMMTUsN0gxM0wxMiwxMkwxMSw3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFWQm94ID0gXCJNOSw3TDExLDE3SDEzTDE1LDdIMTNMMTIsMTJMMTEsN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFWQm94T3V0bGluZSA9IFwiTTksN0gxMUwxMiwxMkwxMyw3SDE1TDEzLDE3SDExTDksN001LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFWQ2lyY2xlID0gXCJNOSw3TDExLDE3SDEzTDE1LDdIMTNMMTIsMTJMMTEsN0g5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhVkNpcmNsZU91dGxpbmUgPSBcIk05LDdIMTFMMTIsMTJMMTMsN0gxNUwxMywxN0gxMUw5LDdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhVyA9IFwiTTksMTdBMiwyIDAgMCwxIDcsMTVWN0g5VjE1SDExVjhIMTNWMTVIMTVWN0gxN1YxNUEyLDIgMCAwLDEgMTUsMTdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVdCb3ggPSBcIk05LDE3SDE1QTIsMiAwIDAsMCAxNywxNVY3SDE1VjE1SDEzVjhIMTFWMTVIOVY3SDdWMTVBMiwyIDAgMCwwIDksMTdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVdCb3hPdXRsaW5lID0gXCJNOSwxN0EyLDIgMCAwLDEgNywxNVY3SDlWMTVIMTFWOEgxM1YxNUgxNVY3SDE3VjE1QTIsMiAwIDAsMSAxNSwxN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVdDaXJjbGUgPSBcIk05LDE3SDE1QTIsMiAwIDAsMCAxNywxNVY3SDE1VjE1SDEzVjhIMTFWMTVIOVY3SDdWMTVBMiwyIDAgMCwwIDksMTdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFXQ2lyY2xlT3V0bGluZSA9IFwiTTksMTdBMiwyIDAgMCwxIDcsMTVWN0g5VjE1SDExVjhIMTNWMTVIMTVWN0gxN1YxNUEyLDIgMCAwLDEgMTUsMTdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFYID0gXCJNOSw3TDExLDEyTDksMTdIMTFMMTIsMTQuNUwxMywxN0gxNUwxMywxMkwxNSw3SDEzTDEyLDkuNUwxMSw3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFYQm94ID0gXCJNOSw3TDExLDEyTDksMTdIMTFMMTIsMTQuNUwxMywxN0gxNUwxMywxMkwxNSw3SDEzTDEyLDkuNUwxMSw3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVhCb3hPdXRsaW5lID0gXCJNOSw3SDExTDEyLDkuNUwxMyw3SDE1TDEzLDEyTDE1LDE3SDEzTDEyLDE0LjVMMTEsMTdIOUwxMSwxMkw5LDdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWENpcmNsZSA9IFwiTTksN0wxMSwxMkw5LDE3SDExTDEyLDE0LjVMMTMsMTdIMTVMMTMsMTJMMTUsN0gxM0wxMiw5LjVMMTEsN0g5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWENpcmNsZU91dGxpbmUgPSBcIk05LDdIMTFMMTIsOS41TDEzLDdIMTVMMTMsMTJMMTUsMTdIMTNMMTIsMTQuNUwxMSwxN0g5TDExLDEyTDksN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFZID0gXCJNOSw3TDExLDEzVjE3SDEzVjEzTDE1LDdIMTNMMTIsMTBMMTEsN0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWUJveCA9IFwiTTksN0wxMSwxM1YxN0gxM1YxM0wxNSw3SDEzTDEyLDEwTDExLDdIOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWUJveE91dGxpbmUgPSBcIk05LDdIMTFMMTIsMTBMMTMsN0gxNUwxMywxM1YxN0gxMVYxM0w5LDdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWUNpcmNsZSA9IFwiTTksN0wxMSwxM1YxN0gxM1YxM0wxNSw3SDEzTDEyLDEwTDExLDdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVlDaXJjbGVPdXRsaW5lID0gXCJNOSw3SDExTDEyLDEwTDEzLDdIMTVMMTMsMTNWMTdIMTFWMTNMOSw3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVogPSBcIk05LDdWOUgxM0w5LDE1VjE3SDE1VjE1SDExTDE1LDlWN0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWkJveCA9IFwiTTksN1Y5SDEzTDksMTVWMTdIMTVWMTVIMTFMMTUsOVY3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVpCb3hPdXRsaW5lID0gXCJNOSw3SDE1VjlMMTEsMTVIMTVWMTdIOVYxNUwxMyw5SDlWN001LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFaQ2lyY2xlID0gXCJNOSw3VjlIMTNMOSwxNVYxN0gxNVYxNUgxMUwxNSw5VjdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVpDaXJjbGVPdXRsaW5lID0gXCJNOSw3SDE1VjlMMTEsMTVIMTVWMTdIOVYxNUwxMyw5SDlWN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFiZXRBdXJlYmVzaCA9IFwiTTMgNFYxMUgxNC4yM0wyMiA0SDE5TDEzLjQ2IDlINVY0SDNNMyAxM1YyMEg1VjE1SDEzLjQ2TDE5IDIwSDIyTDE0LjIzIDEzSDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFiZXRDeXJpbGxpYyA9IFwiTTE2IDZDMTQuMzYgNiAxMyA3LjM2IDEzIDlWMTVDMTMgMTYuNjUgMTQuMzYgMTggMTYgMThIMTdDMTguNjUgMTggMjAgMTYuNjUgMjAgMTVWMTJDMjAgMTAuMzYgMTguNjUgOSAxNyA5SDE1QzE1IDguNDQgMTUuNDQgOCAxNiA4SDE4QzE5LjA5IDggMjAgNy4wOSAyMCA2TTUgOVYxMUg4QzguNTcgMTEgOSAxMS40MyA5IDEySDdDNS4zNiAxMiA0IDEzLjM2IDQgMTVDNCAxNi42NSA1LjM2IDE4IDcgMThIMTFWMTJDMTEgMTAuMzYgOS42NSA5IDggOU0xNSAxMUgxN0MxNy41NyAxMSAxOCAxMS40MyAxOCAxMlYxNUMxOCAxNS41NyAxNy41NyAxNiAxNyAxNkgxNkMxNS40MyAxNiAxNSAxNS41NyAxNSAxNU03IDE0SDlWMTZIN0M2LjQzIDE2IDYgMTUuNTcgNiAxNUM2IDE0LjQzIDYuNDMgMTQgNyAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYWJldEdyZWVrID0gXCJNMTYgNkMxNC4zNiA2IDEzIDcuMzYgMTMgOVYyMUgxNVY5QzE1IDguNDMgMTUuNDMgOCAxNiA4SDE3QzE3LjU3IDggMTggOC40MyAxOCA5VjEwQzE4IDEwLjU3IDE3LjU3IDExIDE3IDExSDE2VjEzSDE3QzE3LjU3IDEzIDE4IDEzLjQzIDE4IDE0VjE1QzE4IDE1LjU3IDE3LjU3IDE2IDE3IDE2SDE2VjE4SDE3QzE4LjY1IDE4IDIwIDE2LjY1IDIwIDE1VjE0QzIwIDEzLjE4IDE5LjU5IDEyLjQ2IDE5IDEyQzE5LjU5IDExLjU0IDIwIDEwLjgyIDIwIDEwVjlDMjAgNy4zNiAxOC42NSA2IDE3IDZNNyA5QzUuMzYgOSA0IDEwLjM2IDQgMTJWMTVDNCAxNi42NSA1LjM2IDE4IDcgMThINy43QzguMiAxOCA4LjY1IDE3LjgxIDkgMTcuNVYxOEgxMVY5SDlWOS41QzguNjUgOS4xOSA4LjIgOSA3LjcgOU03IDExSDhDOC41NyAxMSA5IDExLjQzIDkgMTJWMTVDOSAxNS41NyA4LjU3IDE2IDggMTZIN0M2LjQzIDE2IDYgMTUuNTcgNiAxNVYxMkM2IDExLjQzIDYuNDMgMTEgNyAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYWJldExhdGluID0gXCJNMTMgNlYxOEgxNVYxNy4zMUMxNS4zNyAxNy43MyAxNS45IDE4IDE2LjUgMThIMTdDMTguNjUgMTggMjAgMTYuNjUgMjAgMTVWMTJDMjAgMTAuMzYgMTguNjUgOSAxNyA5SDE2LjVDMTUuOSA5IDE1LjM3IDkuMjcgMTUgOS43VjZNNSA5VjExSDhDOC41NyAxMSA5IDExLjQzIDkgMTJIN0M1LjM2IDEyIDQgMTMuMzYgNCAxNUM0IDE2LjY1IDUuMzYgMTggNyAxOEgxMVYxMkMxMSAxMC4zNiA5LjY1IDkgOCA5TTE2IDExSDE3QzE3LjU3IDExIDE4IDExLjQzIDE4IDEyVjE1QzE4IDE1LjU3IDE3LjU3IDE2IDE3IDE2SDE2QzE1LjQzIDE2IDE1IDE1LjU3IDE1IDE1VjEyQzE1IDExLjQzIDE1LjQzIDExIDE2IDExTTcgMTRIOVYxNkg3QzYuNDMgMTYgNiAxNS41NyA2IDE1QzYgMTQuNDMgNi40MyAxNCA3IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhYmV0UGlxYWQgPSBcIk0xMy4wNCA0TDYuNTQgMTcuODVDNi4yMSAxOC41NSA1LjUgMTkgNC43MyAxOUg0VjIwSDE2QzE3LjIgMjAgMTguMjcgMjAuNTQgMTkgMjEuMzlIMjBDMTkuMDUgMTkuMzIgMTcgMTggMTQuNyAxOEgxMkMxMS4yOSAxOCAxMC42MiAxNy42MyAxMC4yNCAxNy4wM0M5Ljg1IDE2LjQzIDkuOCAxNS42OCAxMC4xIDE1LjAzTDEwLjU4IDE0SDE5VjEzSDE3LjVDMTUuMjkgMTMgMTMuNSAxMS4yMSAxMy41IDlDMTMuNSA2Ljc5IDE1LjI5IDUgMTcuNSA1SDIwVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFiZXRUZW5nd2FyID0gXCJNMTAgN0wxMi41IDNIMTVMMTEgN0gxME0xMi41IDlDMTEuOTYgOSAxMS40NiA5LjEzIDExIDkuMzVWOUg4VjExSDlWMjFIMTFWMTIuNUMxMSAxMS42NyAxMS42NyAxMSAxMi41IDExQzEzLjMzIDExIDE0IDExLjY3IDE0IDEyLjVWMTQuNUMxNCAxNS4zMyAxMy4zMyAxNiAxMi41IDE2SDEyVjE4SDEyLjVDMTQuNDMgMTggMTYgMTYuNDMgMTYgMTQuNVYxMi41QzE2IDEwLjU3IDE0LjQzIDkgMTIuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhYmV0aWNhbCA9IFwiTTYsMTFBMiwyIDAgMCwxIDgsMTNWMTdINEEyLDIgMCAwLDEgMiwxNVYxM0EyLDIgMCAwLDEgNCwxMUg2TTQsMTNWMTVINlYxM0g0TTIwLDEzVjE1SDIyVjE3SDIwQTIsMiAwIDAsMSAxOCwxNVYxM0EyLDIgMCAwLDEgMjAsMTFIMjJWMTNIMjBNMTIsN1YxMUgxNEEyLDIgMCAwLDEgMTYsMTNWMTVBMiwyIDAgMCwxIDE0LDE3SDEyQTIsMiAwIDAsMSAxMCwxNVY3SDEyTTEyLDE1SDE0VjEzSDEyVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhYmV0aWNhbE9mZiA9IFwiTTIyLjExIDIxLjQ2TDE2IDE1LjMxTDE0IDEzLjMxTDEzLjY1IDEzTDEwIDkuMzRMMi4zOSAxLjczTDEuMTEgM0wxMCAxMS44OVYxNUEyIDIgMCAwIDAgMTIgMTdIMTRBMS45MiAxLjkyIDAgMCAwIDE0Ljg5IDE2Ljc4TDIwLjg0IDIyLjczTTEyIDE1VjEzLjg5TDEzLjExIDE1TTE2IDEyLjc4TDE0LjIyIDExQTIgMiAwIDAgMSAxNiAxMi43OE0yMC4yIDE3TDE4IDE0LjhWMTNBMiAyIDAgMCAxIDIwIDExSDIyVjEzSDIwVjE1SDIyVjE3TTYgMTFINEEyIDIgMCAwIDAgMiAxM1YxNUEyIDIgMCAwIDAgNCAxN0g4VjEzQTIgMiAwIDAgMCA2IDExTTYgMTVINFYxM0g2TTEyIDguOEwxMC4yIDdIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFiZXRpY2FsVmFyaWFudCA9IFwiTTMgN0EyIDIgMCAwIDAgMSA5VjE3SDNWMTNINVYxN0g3VjlBMiAyIDAgMCAwIDUgN0gzTTMgOUg1VjExSDNNMTUgMTAuNVY5QTIgMiAwIDAgMCAxMyA3SDlWMTdIMTNBMiAyIDAgMCAwIDE1IDE1VjEzLjVBMS41NCAxLjU0IDAgMCAwIDEzLjUgMTJBMS41NCAxLjU0IDAgMCAwIDE1IDEwLjVNMTMgMTVIMTFWMTNIMTNWMTVNMTMgMTFIMTFWOUgxM00xOSA3QTIgMiAwIDAgMCAxNyA5VjE1QTIgMiAwIDAgMCAxOSAxN0gyMUEyIDIgMCAwIDAgMjMgMTVWMTRIMjFWMTVIMTlWOUgyMVYxMEgyM1Y5QTIgMiAwIDAgMCAyMSA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhYmV0aWNhbFZhcmlhbnRPZmYgPSBcIk0xMi4yIDlMMTAuMiA3SDEzQTIgMiAwIDAgMSAxNSA5VjEwLjVBMS40NyAxLjQ3IDAgMCAxIDE0LjY0IDExLjQ0TDEzIDkuOFY5TTIzIDEwVjlBMiAyIDAgMCAwIDIxIDdIMTlBMiAyIDAgMCAwIDE3IDlWMTMuOEwyMC4yIDE3SDIxQTIgMiAwIDAgMCAyMyAxNVYxNEgyMVYxNUgxOVY5SDIxVjEwTTE1IDE0LjM1TDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE0LjQ2IDE2LjM1QTIgMiAwIDAgMSAxMyAxN0g5VjEwLjg5TDcgOC44OVYxN0g1VjEzSDNWMTdIMVY5QTIgMiAwIDAgMSAzIDdINS4xMkwxLjEyIDNMMi4zOSAxLjczTDkgOC4zNEwxMSAxMC4zNEwxMS42NiAxMUwxNSAxNC4zNE01IDlIM1YxMUg1TTEzIDE0Ljg5TDExLjExIDEzSDExVjE1SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsdGltZXRlciA9IFwiTTcsM1Y1SDE3VjNIN005LDdWOUgxNVY3SDlNMiw3Ljk2VjE2LjA0TDYuMDMsMTJMMiw3Ljk2TTIyLjAzLDcuOTZMMTgsMTJMMjIuMDMsMTYuMDRWNy45Nk03LDExVjEzSDE3VjExSDdNOSwxNVYxN0gxNVYxNUg5TTcsMTlWMjFIMTdWMTlIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbWF6b24gPSBcIk0xNS45MywxNy4wOUMxNS43NSwxNy4yNSAxNS41LDE3LjI2IDE1LjMsMTcuMTVDMTQuNDEsMTYuNDEgMTQuMjUsMTYuMDcgMTMuNzYsMTUuMzZDMTIuMjksMTYuODYgMTEuMjUsMTcuMzEgOS4zNCwxNy4zMUM3LjA5LDE3LjMxIDUuMzMsMTUuOTIgNS4zMywxMy4xNEM1LjMzLDEwLjk2IDYuNSw5LjUgOC4xOSw4Ljc2QzkuNjUsOC4xMiAxMS42OCw4IDEzLjIzLDcuODNWNy41QzEzLjIzLDYuODQgMTMuMjgsNi4wOSAxMi45LDUuNTRDMTIuNTgsNS4wNSAxMS45NSw0Ljg0IDExLjQsNC44NEMxMC4zOCw0Ljg0IDkuNDcsNS4zNyA5LjI1LDYuNDVDOS4yLDYuNjkgOSw2LjkzIDguNzgsNi45NEw2LjE4LDYuNjZDNS45Niw2LjYxIDUuNzIsNi40NCA1Ljc4LDYuMUM2LjM4LDIuOTUgOS4yMywyIDExLjc4LDJDMTMuMDgsMiAxNC43OCwyLjM1IDE1LjgxLDMuMzNDMTcuMTEsNC41NSAxNyw2LjE4IDE3LDcuOTVWMTIuMTJDMTcsMTMuMzcgMTcuNSwxMy45MyAxOCwxNC42QzE4LjE3LDE0Ljg1IDE4LjIxLDE1LjE0IDE4LDE1LjMxTDE1Ljk0LDE3LjA5SDE1LjkzTTEzLjIzLDEwLjU2VjEwQzExLjI5LDEwIDkuMjQsMTAuMzkgOS4yNCwxMi42N0M5LjI0LDEzLjgzIDkuODUsMTQuNjIgMTAuODcsMTQuNjJDMTEuNjMsMTQuNjIgMTIuMywxNC4xNSAxMi43MywxMy40QzEzLjI1LDEyLjQ3IDEzLjIzLDExLjYgMTMuMjMsMTAuNTZNMjAuMTYsMTkuNTRDMTgsMjEuMTQgMTQuODIsMjIgMTIuMSwyMkM4LjI5LDIyIDQuODUsMjAuNTkgMi4yNSwxOC4yNEMyLjA1LDE4LjA2IDIuMjMsMTcuODEgMi41LDE3Ljk1QzUuMjgsMTkuNTggOC43NSwyMC41NiAxMi4zMywyMC41NkMxNC43NCwyMC41NiAxNy40LDIwLjA2IDE5Ljg0LDE5LjAzQzIwLjIxLDE4Ljg3IDIwLjUsMTkuMjcgMjAuMTYsMTkuNTRNMjEuMDcsMTguNUMyMC43OSwxOC4xNCAxOS4yMiwxOC4zMyAxOC41LDE4LjQyQzE4LjMxLDE4LjQ0IDE4LjI4LDE4LjI2IDE4LjQ3LDE4LjEyQzE5LjcxLDE3LjI0IDIxLjc2LDE3LjUgMjIsMTcuNzlDMjIuMjQsMTguMDkgMjEuOTMsMjAuMTQgMjAuNzYsMjEuMTFDMjAuNTgsMjEuMjcgMjAuNDEsMjEuMTggMjAuNSwyMUMyMC43NiwyMC4zMyAyMS4zNSwxOC44NiAyMS4wNywxOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFtYXpvbkFsZXhhID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTAuNDMsMjEuODdWMTkuOTFDMTAuNDMsMTkuMjIgMTAsMTguNTcgOS4zNSwxOC4zQzYuOTEsMTcuMjYgNS4xNywxNC44MyA1LjE3LDEyQzUuMTcsOC4yNiA4LjIyLDUuMTcgMTIsNS4xN0MxNS43OCw1LjE3IDE4LjgzLDguMjYgMTguODMsMTJDMTguODMsMTYuNDMgMTUuMzksMjAuNjEgMTAuNDMsMjEuODdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW1idWxhbmNlID0gXCJNMTgsMTguNUExLjUsMS41IDAgMCwwIDE5LjUsMTdBMS41LDEuNSAwIDAsMCAxOCwxNS41QTEuNSwxLjUgMCAwLDAgMTYuNSwxN0ExLjUsMS41IDAgMCwwIDE4LDE4LjVNMTkuNSw5LjVIMTdWMTJIMjEuNDZMMTkuNSw5LjVNNiwxOC41QTEuNSwxLjUgMCAwLDAgNy41LDE3QTEuNSwxLjUgMCAwLDAgNiwxNS41QTEuNSwxLjUgMCAwLDAgNC41LDE3QTEuNSwxLjUgMCAwLDAgNiwxOC41TTIwLDhMMjMsMTJWMTdIMjFBMywzIDAgMCwxIDE4LDIwQTMsMyAwIDAsMSAxNSwxN0g5QTMsMyAwIDAsMSA2LDIwQTMsMyAwIDAsMSAzLDE3SDFWNkMxLDQuODkgMS44OSw0IDMsNEgxN1Y4SDIwTTgsNlY5SDVWMTFIOFYxNEgxMFYxMUgxM1Y5SDEwVjZIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbW11bml0aW9uID0gXCJNMTQsMjJIMTBWMjFIMTRWMjJNMTMsMTBWN0gxMVYxMEwxMCwxMS41VjIwSDE0VjExLjVMMTMsMTBNMTIsMkMxMiwyIDExLDMgMTEsNVY2SDEzVjVDMTMsNSAxMywzIDEyLDJNOCwyMkg0VjIxSDhWMjJNNywxMFY3SDVWMTBMNCwxMS41VjIwSDhWMTEuNUw3LDEwTTYsMkM2LDIgNSwzIDUsNVY2SDdWNUM3LDUgNywzIDYsMk0yMCwyMkgxNlYyMUgyMFYyMk0xOSwxMFY3SDE3VjEwTDE2LDExLjVWMjBIMjBWMTEuNUwxOSwxME0xOCwyQzE4LDIgMTcsMyAxNyw1VjZIMTlWNUMxOSw1IDE5LDMgMTgsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbXBlcnNhbmQgPSBcIk00LjQsMTYuNUM0LjQsMTUuNiA0LjcsMTQuNyA1LjIsMTMuOUM1LjcsMTMuMSA2LjcsMTIuMiA4LjIsMTEuMkM3LjMsMTAuMSA2LjgsOS4zIDYuNSw4LjdDNi4xLDggNiw3LjQgNiw2LjdDNiw1LjIgNi40LDQuMSA3LjMsMy4yQzguMiwyLjMgOS40LDIgMTAuOSwyQzEyLjIsMiAxMy4zLDIuNCAxNC4yLDMuMkMxNS4xLDQgMTUuNSw1IDE1LjUsNi4xQzE1LjUsNi45IDE1LjMsNy42IDE0LjksOC4zQzE0LjUsOSAxMy44LDkuNyAxMi44LDEwLjRMMTEuNCwxMS41TDE1LjcsMTYuN0MxNi4zLDE1LjUgMTYuNiwxNC4zIDE2LjYsMTIuOEgxOC44QzE4LjgsMTUuMSAxOC4zLDE3IDE3LjIsMTguNUwyMCwyMS44SDE3TDE1LjcsMjAuM0MxNSwyMC45IDE0LjMsMjEuMyAxMy40LDIxLjZDMTIuNSwyMS45IDExLjYsMjIuMSAxMC43LDIyLjFDOC44LDIyLjEgNy4zLDIxLjYgNi4xLDIwLjZDNSwxOS41IDQuNCwxOC4yIDQuNCwxNi41TTEwLjcsMjBDMTIsMjAgMTMuMiwxOS41IDE0LjMsMTguNUw5LjYsMTIuOEw5LjIsMTMuMUM3LjcsMTQuMiA3LDE1LjMgNywxNi41QzcsMTcuNiA3LjMsMTguNCA4LDE5QzguNywxOS42IDkuNSwyMCAxMC43LDIwTTguNSw2LjdDOC41LDcuNiA5LDguNiAxMC4xLDkuOUwxMS43LDguOEMxMi4zLDguNCAxMi43LDggMTIuOSw3LjZDMTMuMSw3LjIgMTMuMiw2LjcgMTMuMiw2LjJDMTMuMiw1LjYgMTMsNS4xIDEyLjUsNC43QzEyLjEsNC4zIDExLjUsNC4xIDEwLjgsNC4xQzEwLjEsNC4xIDkuNSw0LjMgOS4xLDQuOEM4LjcsNS4zIDguNSw1LjkgOC41LDYuN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbXBsaWZpZXIgPSBcIk0xMCwySDE0QTEsMSAwIDAsMSAxNSwzSDIxVjIxSDE5QTEsMSAwIDAsMSAxOCwyMkExLDEgMCAwLDEgMTcsMjFIN0ExLDEgMCAwLDEgNiwyMkExLDEgMCAwLDEgNSwyMUgzVjNIOUExLDEgMCAwLDEgMTAsMk01LDVWOUgxOVY1SDVNNyw2QTEsMSAwIDAsMSA4LDdBMSwxIDAgMCwxIDcsOEExLDEgMCAwLDEgNiw3QTEsMSAwIDAsMSA3LDZNMTIsNkgxNFY3SDEyVjZNMTUsNkgxNlY4SDE1VjZNMTcsNkgxOFY4SDE3VjZNMTIsMTFBNCw0IDAgMCwwIDgsMTVBNCw0IDAgMCwwIDEyLDE5QTQsNCAwIDAsMCAxNiwxNUE0LDQgMCAwLDAgMTIsMTFNMTAsNkExLDEgMCAwLDEgMTEsN0ExLDEgMCAwLDEgMTAsOEExLDEgMCAwLDEgOSw3QTEsMSAwIDAsMSAxMCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFtcGxpZmllck9mZiA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDMgNC45VjIxSDVDNSAyMS42IDUuNCAyMiA2IDIyUzcgMjEuNiA3IDIxSDE3QzE3IDIxLjYgMTcuNCAyMiAxOCAyMlMxOSAyMS42IDE5IDIxSDE5LjFMMjAuOCAyMi43TDIyLjEgMjEuNU01IDlWNi45TDcuMSA5SDVNMTIgMTlDOS44IDE5IDggMTcuMiA4IDE1QzggMTMuNiA4LjcgMTIuNCA5LjggMTEuN0wxNS4zIDE3LjJDMTQuNiAxOC4zIDEzLjQgMTkgMTIgMTlNMTQgNlY3SDEyVjZIMTRNMTAgNkMxMC42IDYgMTEgNi40IDExIDdDMTEgNy4yIDEwLjkgNy40IDEwLjggNy42TDkuNCA2LjJDOS42IDYuMSA5LjggNiAxMCA2TTguMiA1TDYuMiAzSDlDOSAyLjQgOS40IDIgMTAgMkgxNEMxNC42IDIgMTUgMi40IDE1IDNIMjFWMTcuOEwxMi4yIDlIMTlWNUg4LjJNMTYgNlY4SDE1VjZIMTZNMTggNlY4SDE3VjZIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5jaG9yID0gXCJNMTIgMkEzIDMgMCAwIDAgOSA1QTMgMyAwIDAgMCAxMSA3LjgzVjlIOFYxMUgxMVYxOS45MkMxMC4yNiAxOS43OSA5LjUgMTkuNTggOC43OSAxOS4yN0M4LjA1IDE4Ljk1IDcuNCAxOC41NiA2LjgyIDE4LjA5QzYuMjQgMTcuNjIgNS43OCAxNy4xMSA1LjQ0IDE2LjU1TDcgMTVMMyAxMlYxNUMzIDE1Ljk3IDMuMjcgMTYuODggMy44MiAxNy43MkM0LjM3IDE4LjU2IDUuMDkgMTkuMzEgNiAxOS45NUM2Ljg3IDIwLjU5IDcuODQgMjEuMDkgOC44OCAyMS40NUM5LjkzIDIxLjgxIDEwLjk3IDIyIDEyIDIyQzEzLjAzIDIyIDE0LjA3IDIxLjggMTUuMTIgMjEuNDRDMTYuMTYgMjEuMDggMTcuMTMgMjAuNTggMTggMTkuOTVDMTguOTIgMTkuMzEgMTkuNjMgMTguNTcgMjAuMTggMTcuNzJDMjAuNzMgMTYuODggMjEgMTUuOTcgMjEgMTVWMTJMMTcgMTVMMTguNTYgMTYuNTVDMTguMjIgMTcuMTEgMTcuNzYgMTcuNjIgMTcuMTggMTguMDlDMTYuNiAxOC41NiAxNS45NSAxOC45NSAxNS4yMSAxOS4yN0MxNC41IDE5LjU4IDEzLjc0IDE5Ljc5IDEzIDE5LjkyVjExSDE2VjlIMTNWNy44MkEzIDMgMCAwIDAgMTUgNUEzIDMgMCAwIDAgMTIgMk0xMiA0QTEgMSAwIDAgMSAxMyA1QTEgMSAwIDAgMSAxMiA2QTEgMSAwIDAgMSAxMSA1QTEgMSAwIDAgMSAxMiA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFuZHJvaWQgPSBcIk0xNi42MSAxNS4xNUMxNi4xNSAxNS4xNSAxNS43NyAxNC43OCAxNS43NyAxNC4zMlMxNi4xNSAxMy41IDE2LjYxIDEzLjVIMTYuNjFDMTcuMDcgMTMuNSAxNy40NSAxMy44NiAxNy40NSAxNC4zMkMxNy40NSAxNC43OCAxNy4wNyAxNS4xNSAxNi42MSAxNS4xNU03LjQxIDE1LjE1QzYuOTUgMTUuMTUgNi41NyAxNC43OCA2LjU3IDE0LjMyQzYuNTcgMTMuODYgNi45NSAxMy41IDcuNDEgMTMuNUg3LjQxQzcuODcgMTMuNSA4LjI0IDEzLjg2IDguMjQgMTQuMzJDOC4yNCAxNC43OCA3Ljg3IDE1LjE1IDcuNDEgMTUuMTVNMTYuOTEgMTAuMTRMMTguNTggNy4yNkMxOC42NyA3LjA5IDE4LjYxIDYuODggMTguNDUgNi43OUMxOC4yOCA2LjY5IDE4LjA3IDYuNzUgMTggNi45MkwxNi4yOSA5LjgzQzE0Ljk1IDkuMjIgMTMuNSA4LjkgMTIgOC45MUMxMC40NyA4LjkxIDkgOS4yNCA3LjczIDkuODJMNi4wNCA2LjkxQzUuOTUgNi43NCA1Ljc0IDYuNjggNS41NyA2Ljc4QzUuNCA2Ljg3IDUuMzUgNy4wOCA1LjQ0IDcuMjVMNy4xIDEwLjEzQzQuMjUgMTEuNjkgMi4yOSAxNC41OCAyIDE4SDIyQzIxLjcyIDE0LjU5IDE5Ljc3IDExLjcgMTYuOTEgMTAuMTRIMTYuOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5kcm9pZEF1dG8gPSBcIk0yMi43OCwxNy45MUMyMi45NCwxOC4xNiAyMywxOC40MiAyMywxOC43QzIzLDE5LjA4IDIyLjg3LDE5LjM5IDIyLjU3LDE5LjY0QzIyLjI3LDE5Ljg5IDIxLjk0LDIwIDIxLjU2LDIwSDE5LjA4TDEyLjQyLDhIMTEuNThMNC45MiwyMEgyLjM5QzEuOTIsMjAgMS41MywxOS44IDEuMjIsMTkuMzhDMC45MSwxOC45NiAwLjg5LDE4LjUgMS4xNywxOEwxMC43OCwxLjY5QzExLjA5LDEuMjIgMTEuNSwxIDEyLDFDMTIuNTMsMSAxMi45MiwxLjIyIDEzLjE3LDEuNjlMMjIuNzgsMTcuOTFNNC43OCwyMi4zMUwxMiw5LjM4TDE5LjIyLDIyLjMxTDE4LjUsMjNMMTIsMjAuMzRMNS40NCwyM0w0Ljc4LDIyLjMxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFuZHJvaWREZWJ1Z0JyaWRnZSA9IFwiTTE1LDlBMSwxIDAgMCwxIDE0LDhBMSwxIDAgMCwxIDE1LDdBMSwxIDAgMCwxIDE2LDhBMSwxIDAgMCwxIDE1LDlNOSw5QTEsMSAwIDAsMSA4LDhBMSwxIDAgMCwxIDksN0ExLDEgMCAwLDEgMTAsOEExLDEgMCAwLDEgOSw5TTE2LjEyLDQuMzdMMTguMjIsMi4yN0wxNy40LDEuNDRMMTUuMDksMy43NUMxNC4xNiwzLjI4IDEzLjExLDMgMTIsM0MxMC44OCwzIDkuODQsMy4yOCA4LjkxLDMuNzVMNi42LDEuNDRMNS43OCwyLjI3TDcuODgsNC4zN0M2LjE0LDUuNjQgNSw3LjY4IDUsMTBWMTFIMTlWMTBDMTksNy42OCAxNy44Niw1LjY0IDE2LjEyLDQuMzdNNSwxNkM1LDE5Ljg2IDguMTMsMjMgMTIsMjNBNyw3IDAgMCwwIDE5LDE2VjEySDVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5kcm9pZE1lc3NhZ2VzID0gXCJNMjAsMjBIN0EyLDIgMCAwLDEgNSwxOFY4Ljk0TDIuMjMsNS42NEMyLjA5LDUuNDcgMiw1LjI0IDIsNUExLDEgMCAwLDEgMyw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyME04LjUsN0EwLjUsMC41IDAgMCwwIDgsNy41VjguNUEwLjUsMC41IDAgMCwwIDguNSw5SDE4LjVBMC41LDAuNSAwIDAsMCAxOSw4LjVWNy41QTAuNSwwLjUgMCAwLDAgMTguNSw3SDguNU04LjUsMTFBMC41LDAuNSAwIDAsMCA4LDExLjVWMTIuNUEwLjUsMC41IDAgMCwwIDguNSwxM0gxOC41QTAuNSwwLjUgMCAwLDAgMTksMTIuNVYxMS41QTAuNSwwLjUgMCAwLDAgMTguNSwxMUg4LjVNOC41LDE1QTAuNSwwLjUgMCAwLDAgOCwxNS41VjE2LjVBMC41LDAuNSAwIDAsMCA4LjUsMTdIMTMuNUEwLjUsMC41IDAgMCwwIDE0LDE2LjVWMTUuNUEwLjUsMC41IDAgMCwwIDEzLjUsMTVIOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFuZHJvaWRTdHVkaW8gPSBcIk0xMSwySDEzVjRIMTMuNUExLjUsMS41IDAgMCwxIDE1LDUuNVY5TDE0LjU2LDkuNDRMMTYuMiwxMi4yOEMxNy4zMSwxMS4xOSAxOCw5LjY4IDE4LDhIMjBDMjAsMTAuNDIgMTguOTMsMTIuNTkgMTcuMjMsMTQuMDZMMjAuMzcsMTkuNUwyMC41LDIxLjcyTDE4LjYzLDIwLjVMMTUuNTYsMTUuMTdDMTQuNSwxNS43IDEzLjI4LDE2IDEyLDE2QzEwLjcyLDE2IDkuNSwxNS43IDguNDQsMTUuMTdMNS4zNywyMC41TDMuNSwyMS43MkwzLjYzLDE5LjVMOS40NCw5LjQ0TDksOVY1LjVBMS41LDEuNSAwIDAsMSAxMC41LDRIMTFWMk05LjQ0LDEzLjQzQzEwLjIyLDEzLjggMTEuMDksMTQgMTIsMTRDMTIuOTEsMTQgMTMuNzgsMTMuOCAxNC41NiwxMy40M0wxMy4xLDEwLjlIMTMuMDlDMTIuNDcsMTEuNSAxMS41MywxMS41IDEwLjkxLDEwLjlIMTAuOUw5LjQ0LDEzLjQzTTEyLDZBMSwxIDAgMCwwIDExLDdBMSwxIDAgMCwwIDEyLDhBMSwxIDAgMCwwIDEzLDdBMSwxIDAgMCwwIDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5nbGVBY3V0ZSA9IFwiTTIwLDE5SDQuMDlMMTQuMTgsNC40M0wxNS44Miw1LjU3TDExLjI4LDEyLjEzQzEyLjg5LDEyLjk2IDE0LDE0LjYyIDE0LDE2LjU0QzE0LDE2LjcgMTQsMTYuODUgMTMuOTcsMTdIMjBWMTlNNy45MSwxN0gxMS45NkMxMiwxNi44NSAxMiwxNi43IDEyLDE2LjU0QzEyLDE1LjI4IDExLjI0LDE0LjIyIDEwLjE0LDEzLjc4TDcuOTEsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5nbGVPYnR1c2UgPSBcIk0yMSwxOUg5LjMxTDQuMDcsNS4zNkw1LjkzLDQuNjRMOC45NiwxMi41QzkuNSwxMi4yOSAxMC4wOSwxMi4xNyAxMC43MSwxMi4xN1YxMi4xN0MxMy4zOCwxMi4xNyAxNS41NiwxNC4zNCAxNS41OCwxN0gyMVYxOU0xMC42OSwxN0gxMy41OEMxMy41NiwxNS40MiAxMi4zLDE0LjE3IDEwLjcxLDE0LjE3QzEwLjM0LDE0LjE3IDEwLDE0LjI0IDkuNjcsMTQuMzZMMTAuNjksMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5nbGVSaWdodCA9IFwiTTUsNEg3VjExSDEzVjE3SDIwVjE5SDVWNE03LDE3SDExVjEzSDdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5ndWxhciA9IFwiTTEyLDIuNUwyMC44NCw1LjY1TDE5LjUsMTcuMzVMMTIsMjEuNUw0LjUsMTcuMzVMMy4xNiw1LjY1TDEyLDIuNU0xMiw0LjZMNi40NywxN0g4LjUzTDkuNjQsMTQuMjJIMTQuMzRMMTUuNDUsMTdIMTcuNUwxMiw0LjZNMTMuNjIsMTIuNUgxMC4zOUwxMiw4LjYzTDEzLjYyLDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5ndWxhcmpzID0gXCJNMTIsMi41TDIwLjg0LDUuNjVMMTkuNSwxNy4zNUwxMiwyMS41TDQuNSwxNy4zNUwzLjE2LDUuNjVMMTIsMi41TTEyLDQuNUw1LDdMNi4wOCwxNi4yMkwxMiwxOS41TDE3LjkyLDE2LjIyTDE5LDdMMTIsNC41TTEyLDUuNzJMMTYuNTgsMTZIMTQuODdMMTMuOTQsMTMuNzJIMTAuMDRMOS4xMiwxNkg3LjQxTDEyLDUuNzJNMTMuMzQsMTIuM0wxMiw5LjA3TDEwLjY2LDEyLjNIMTMuMzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5pbWF0aW9uID0gXCJNNCwyQzIuODksMiAyLDIuODkgMiw0VjE0SDRWNEgxNFYySDRNOCw2QzYuODksNiA2LDYuODkgNiw4VjE4SDhWOEgxOFY2SDhNMTIsMTBDMTAuODksMTAgMTAsMTAuODkgMTAsMTJWMjBDMTAsMjEuMTEgMTAuODksMjIgMTIsMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWMTJDMjIsMTAuODkgMjEuMTEsMTAgMjAsMTBIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5pbWF0aW9uT3V0bGluZSA9IFwiTTQsMkEyLDIgMCAwLDAgMiw0VjE0SDRWNEgxNFYySDRNOCw2QTIsMiAwIDAsMCA2LDhWMThIOFY4SDE4VjZIOE0yMCwxMlYyMEgxMlYxMkgyME0yMCwxMEgxMkEyLDIgMCAwLDAgMTAsMTJWMjBBMiwyIDAgMCwwIDEyLDIySDIwQTIsMiAwIDAsMCAyMiwyMFYxMkEyLDIgMCAwLDAgMjAsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5pbWF0aW9uUGxheSA9IFwiTTQsMkgxNFY0SDRWMTRIMlY0QzIsMi44OSAyLjg5LDIgNCwyTTgsNkgxOFY4SDhWMThINlY4QzYsNi44OSA2Ljg5LDYgOCw2TTEyLDEwSDIwQzIxLjExLDEwIDIyLDEwLjg5IDIyLDEyVjIwQzIyLDIxLjExIDIxLjExLDIyIDIwLDIySDEyQzEwLjg5LDIyIDEwLDIxLjExIDEwLDIwVjEyQzEwLDEwLjg5IDEwLjg5LDEwIDEyLDEwTTE0LDEyVjIwTDIwLDE2TDE0LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFuaW1hdGlvblBsYXlPdXRsaW5lID0gXCJNNCwyQTIsMiAwIDAsMCAyLDRWMTRINFY0SDE0VjJINE04LDZBMiwyIDAgMCwwIDYsOFYxOEg4VjhIMThWNkg4TTIwLDEyVjIwSDEyVjEySDIwTTIwLDEwSDEyQTIsMiAwIDAsMCAxMCwxMlYyMEEyLDIgMCAwLDAgMTIsMjJIMjBBMiwyIDAgMCwwIDIyLDIwVjEyQTIsMiAwIDAsMCAyMCwxME0xNCwxM1YxOUwxOCwxNkwxNCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbnNpYmxlID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMk0xNi4xIDE3QzE1LjkxIDE3IDE1Ljc2IDE2LjkgMTUuNTUgMTYuNzNMMTAuMzkgMTIuNTZMOC42NiAxNi45SDcuMTdMMTEuNTQgNi4zOUMxMS42NSA2LjExIDExLjg5IDUuOTcgMTIuMTcgNS45N0MxMi40NSA1Ljk3IDEyLjY3IDYuMTEgMTIuNzkgNi4zOUwxNi43NyAxNS45N0MxNi44MSAxNi4wOCAxNi44NCAxNi4xOSAxNi44NCAxNi4yNkMxNi44MyAxNi42OCAxNi41IDE3IDE2LjEgMTdNMTIuMTcgOC4xMUwxNC43NiAxNC41TDEwLjg1IDExLjQyTDEyLjE3IDguMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW50ZW5uYSA9IFwiTTEyIDcuNUMxMi42OSA3LjUgMTMuMjcgNy43MyAxMy43NiA4LjJTMTQuNSA5LjI3IDE0LjUgMTBDMTQuNSAxMS4wNSAxNCAxMS44MSAxMyAxMi4yOFYyMUgxMVYxMi4yOEMxMCAxMS44MSA5LjUgMTEuMDUgOS41IDEwQzkuNSA5LjI3IDkuNzYgOC42NyAxMC4yNCA4LjJTMTEuMzEgNy41IDEyIDcuNU0xNi42OSA1LjNDMTcuOTQgNi41NSAxOC42MSA4LjExIDE4LjcgMTBDMTguNyAxMS44IDE4LjAzIDEzLjM4IDE2LjY5IDE0LjcyTDE1LjUgMTMuNUMxNi41IDEyLjU5IDE3IDExLjQyIDE3IDEwQzE3IDguNjcgMTYuNSA3LjUgMTUuNSA2LjVMMTYuNjkgNS4zTTYuMDkgNC4wOEM0LjUgNS42NyAzLjcgNy42NCAzLjcgMTBTNC41IDE0LjMgNi4wOSAxNS44OUw0LjkyIDE3LjExQzMgMTUuMDggMiAxMi43IDIgMTBDMiA3LjMgMyA0Ljk0IDQuOTIgMi45MUw2LjA5IDQuMDhNMTkuMDggMi45MUMyMSA0Ljk0IDIyIDcuMyAyMiAxMEMyMiAxMi44IDIxIDE1LjE3IDE5LjA4IDE3LjExTDE3LjkxIDE1Ljg5QzE5LjUgMTQuMyAyMC4zIDEyLjMzIDIwLjMgMTBTMTkuNSA1LjY3IDE3LjkxIDQuMDhMMTkuMDggMi45MU03LjMxIDUuM0w4LjUgNi41QzcuNSA3LjQyIDcgOC41OCA3IDEwQzcgMTEuMzMgNy41IDEyLjUgOC41IDEzLjVMNy4zMSAxNC43MkM1Ljk3IDEzLjM4IDUuMyAxMS44IDUuMyAxMEM1LjMgOC4yIDUuOTcgNi42NCA3LjMxIDUuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbnZpbCA9IFwiTTksNVYxMEMxMy4wMywxMi40NyA4LjQ0LDE0Ljk3IDYsMTZWMTlIMjFWMTZDMTQuNTksMTMuMjcgMTcuNDcsOSAyMiw4VjVIOU0yLDZDMi44MSw4LjEzIDQuNDIsOS41IDcsMTBWNkgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwYWNoZUthZmthID0gXCJNMTUuNTQgMTIuOTdDMTQuODYgMTIuOTcgMTQuMjQgMTMuMjIgMTMuNzYgMTMuNjRMMTIuNDcgMTIuODlDMTIuNTYgMTIuNiAxMi42IDEyLjI5IDEyLjYgMTEuOTdDMTIuNiAxMS42NSAxMi41NiAxMS4zNCAxMi41IDExLjA1TDEzLjczIDEwLjMyQzE0LjIxIDEwLjc2IDE0Ljg1IDExIDE1LjU0IDExQzE3LjAzIDExIDE4LjI0IDkuODEgMTguMjQgOC4zMlMxNy4wMyA1LjYzIDE1LjU0IDUuNjMgMTIuODQgNi44NCAxMi44NCA4LjMzQzEyLjg0IDguNSAxMi44NiA4LjcgMTIuODkgOC44OEwxMS42NCA5LjZDMTEuMjEgOS4xNSAxMC42NCA4LjgyIDEwIDguNjVWNy4yNkMxMS4wOSA2LjkxIDExLjg4IDUuODkgMTEuODggNC42OUMxMS44OCAzLjIgMTAuNjcgMiA5LjE4IDJDNy42OSAyIDYuNSAzLjIgNi41IDQuNjlDNi41IDUuODkgNy4yNiA2LjkgOC4zNCA3LjI2VjguNjZDNi44NiA5LjA0IDUuNzYgMTAuMzcgNS43NiAxMS45N0M1Ljc2IDEzLjU3IDYuODYgMTQuOTEgOC4zNCAxNS4yOFYxNi43M0M3LjI2IDE3LjA5IDYuNSAxOC4xIDYuNSAxOS4zQzYuNSAyMC43OSA3LjY5IDIyIDkuMTggMjJDMTAuNjcgMjIgMTEuODggMjAuNzkgMTEuODggMTkuM0MxMS44OCAxOC4xIDExLjA5IDE3LjA4IDEwIDE2LjczVjE1LjI5QzEwLjY0IDE1LjEzIDExLjIgMTQuOCAxMS42NCAxNC4zNUwxMi45IDE1LjA4QzEyLjg2IDE1LjI3IDEyLjg0IDE1LjQ2IDEyLjg0IDE1LjY2QzEyLjg0IDE3LjE1IDE0LjA1IDE4LjM2IDE1LjU0IDE4LjM2UzE4LjI0IDE3LjE1IDE4LjI0IDE1LjY2IDE3LjAzIDEyLjk3IDE1LjU0IDEyLjk3TTE1LjU0IDdDMTYuMjggNyAxNi44NyA3LjU5IDE2Ljg3IDguMzJTMTYuMjggOS42NiAxNS41NCA5LjY2IDE0LjIxIDkuMDYgMTQuMjEgOC4zMiAxNC44IDcgMTUuNTQgN003Ljg1IDQuNjlDNy44NSAzLjk1IDguNDQgMy4zNSA5LjE4IDMuMzVDOS45MiAzLjM1IDEwLjUgMy45NSAxMC41IDQuNjlTOS45MiA2LjAzIDkuMTggNi4wM0M4LjQ0IDYuMDMgNy44NSA1LjQzIDcuODUgNC42OU0xMC41IDE5LjNDMTAuNSAyMC4wNCA5LjkyIDIwLjY0IDkuMTggMjAuNjRDOC40NCAyMC42NCA3Ljg1IDIwLjA0IDcuODUgMTkuM0M3Ljg1IDE4LjU2IDguNDQgMTcuOTYgOS4xOCAxNy45NkM5LjkyIDE3Ljk2IDEwLjUgMTguNTYgMTAuNSAxOS4zTTkuMTggMTMuODlDOC4xMiAxMy44OSA3LjI2IDEzLjAzIDcuMjYgMTEuOTdDNy4yNiAxMC45MSA4LjEyIDEwLjA1IDkuMTggMTAuMDVTMTEuMSAxMC45MSAxMS4xIDExLjk3QzExLjEgMTMuMDMgMTAuMjQgMTMuODkgOS4xOCAxMy44OU0xNS41NCAxN0MxNC44IDE3IDE0LjIxIDE2LjQgMTQuMjEgMTUuNjZTMTQuOCAxNC4zMyAxNS41NCAxNC4zMyAxNi44NyAxNC45MyAxNi44NyAxNS42NiAxNi4yOCAxNyAxNS41NCAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcGkgPSBcIk03IDdINUEyIDIgMCAwIDAgMyA5VjE3SDVWMTNIN1YxN0g5VjlBMiAyIDAgMCAwIDcgN003IDExSDVWOUg3TTE0IDdIMTBWMTdIMTJWMTNIMTRBMiAyIDAgMCAwIDE2IDExVjlBMiAyIDAgMCAwIDE0IDdNMTQgMTFIMTJWOUgxNE0yMCA5VjE1SDIxVjE3SDE3VjE1SDE4VjlIMTdWN0gyMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwaU9mZiA9IFwiTTcgMTFINVY5SDdNMTQgN0gxMS4zOEwxMy4yOSA5SDE0VjkuNzVMMTUuODcgMTEuNzFDMTUuOTUgMTEuNSAxNiAxMS4yNSAxNiAxMVY5QzE2IDcuOSAxNS4xMSA3IDE0IDdNNC40NSAyLjYyTDMgNEw1Ljg2IDdINUMzLjkgNyAzIDcuOSAzIDlWMTdINVYxM0g3VjE3SDlWMTAuM0wxMCAxMS4zNFYxN0gxMlYxMy40NUwxOS41NSAyMS4zOEwyMSAyME0yMC45IDE3SDIxVjE1SDIwVjlIMjFWN0gxN1Y5SDE4VjEzLjk1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcGxlID0gXCJNMTguNzEsMTkuNUMxNy44OCwyMC43NCAxNywyMS45NSAxNS42NiwyMS45N0MxNC4zMiwyMiAxMy44OSwyMS4xOCAxMi4zNywyMS4xOEMxMC44NCwyMS4xOCAxMC4zNywyMS45NSA5LjEsMjJDNy43OSwyMi4wNSA2LjgsMjAuNjggNS45NiwxOS40N0M0LjI1LDE3IDIuOTQsMTIuNDUgNC43LDkuMzlDNS41Nyw3Ljg3IDcuMTMsNi45MSA4LjgyLDYuODhDMTAuMSw2Ljg2IDExLjMyLDcuNzUgMTIuMTEsNy43NUMxMi44OSw3Ljc1IDE0LjM3LDYuNjggMTUuOTIsNi44NEMxNi41Nyw2Ljg3IDE4LjM5LDcuMSAxOS41Niw4LjgyQzE5LjQ3LDguODggMTcuMzksMTAuMSAxNy40MSwxMi42M0MxNy40NCwxNS42NSAyMC4wNiwxNi42NiAyMC4wOSwxNi42N0MyMC4wNiwxNi43NCAxOS42NywxOC4xMSAxOC43MSwxOS41TTEzLDMuNUMxMy43MywyLjY3IDE0Ljk0LDIuMDQgMTUuOTQsMkMxNi4wNywzLjE3IDE1LjYsNC4zNSAxNC45LDUuMTlDMTQuMjEsNi4wNCAxMy4wNyw2LjcgMTEuOTUsNi42MUMxMS44LDUuNDYgMTIuMzYsNC4yNiAxMywzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGVBaXJwbGF5ID0gXCJNNiwyMkgxOEwxMiwxNk0yMSwzSDNBMiwyIDAgMCwwIDEsNVYxN0EyLDIgMCAwLDAgMywxOUg3VjE3SDNWNUgyMVYxN0gxN1YxOUgyMUEyLDIgMCAwLDAgMjMsMTdWNUEyLDIgMCAwLDAgMjEsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUZpbmRlciA9IFwiTTggMTFDNy40NSAxMSA3IDEwLjU1IDcgMTBWOEM3IDcuNDUgNy40NSA3IDggN0M4LjU1IDcgOSA3LjQ1IDkgOFYxMEM5IDEwLjU1IDguNTUgMTEgOCAxMU0xNyAxMFY4QzE3IDcuNDUgMTYuNTUgNyAxNiA3QzE1LjQ1IDcgMTUgNy40NSAxNSA4VjEwQzE1IDEwLjU1IDE1LjQ1IDExIDE2IDExQzE2LjU1IDExIDE3IDEwLjU1IDE3IDEwTTIyIDVWMjBDMjIgMjEuMSAyMS4xIDIyIDIwIDIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjVDMiAzLjkgMi45IDMgNCAzSDIwQzIxLjEgMyAyMiAzLjkgMjIgNU00IDIwTDEzLjA2IDIwQzEyLjk2IDE5LjM1IDEyLjg5IDE4LjY0IDEyLjgzIDE3Ljk0QzEyLjU2IDE3Ljk2IDEyLjMgMTggMTIgMThDOC4yNCAxOCA2LjMxIDE1LjczIDYuMjMgMTUuNjNDNS44OCAxNS4yMSA1Ljk0IDE0LjU4IDYuMzYgMTQuMjJDNi43OCAxMy44NyA3LjQxIDEzLjkzIDcuNzcgMTQuMzVDNy44MyAxNC40MyA5LjIzIDE2IDEyIDE2QzEyLjI3IDE2IDEyLjUgMTUuOTcgMTIuNzQgMTUuOTVDMTIuNzEgMTQuNzUgMTIuNzMgMTMuNzQgMTIuNzQgMTMuMjZIMTAuOTNDMTAuMjggMTMuMjYgOS43NSAxMi43IDkuNzUgMTJDOS43NyAxMS43NSAxMC4wNyA3LjgyIDExIDVINEw0IDIwTTIwIDIwTDIwIDVIMTIuNkMxMS43NCA3LjE5IDExLjM3IDEwLjczIDExLjI3IDExLjc2SDEzLjA4QzEzLjcyIDExLjc2IDE0LjI1IDEyLjMyIDE0LjI1IDEzQzE0LjI1IDEzLjA0IDE0LjIxIDE0LjE1IDE0LjI0IDE1LjZDMTUuNTQgMTUuMTEgMTYuMjIgMTQuMzUgMTYuMjMgMTQuMzRDMTYuNTggMTMuOTIgMTcuMjEgMTMuODUgMTcuNjMgMTQuMkMxOC4wNiAxNC41NSAxOC4xMiAxNS4xOCAxNy43NyAxNS42MUMxNy43MSAxNS42OCAxNi41NSAxNy4wNSAxNC4zMiAxNy42OEMxNC4zOCAxOC41IDE0LjQ2IDE5LjI5IDE0LjU4IDIwSDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcGxlSWNsb3VkID0gXCJNMjIsMTUuMDRDMjIsMTcuMjMgMjAuMjQsMTkgMTguMDcsMTlINS45M0MzLjc2LDE5IDIsMTcuMjMgMiwxNS4wNEMyLDEzLjA3IDMuNDMsMTEuNDQgNS4zMSwxMS4xNEM1LjI4LDExIDUuMjcsMTAuODYgNS4yNywxMC43MUM1LjI3LDkuMzMgNi4zOCw4LjIgNy43Niw4LjJDOC4zNyw4LjIgOC45NCw4LjQzIDkuMzcsOC44QzEwLjE0LDcuMDUgMTEuMTMsNS40NCAxMy45MSw1LjQ0QzE3LjI4LDUuNDQgMTguODcsOC4wNiAxOC44NywxMC44M0MxOC44NywxMC45NCAxOC44NywxMS4wNiAxOC44NiwxMS4xN0MyMC42NSwxMS41NCAyMiwxMy4xMyAyMiwxNS4wNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUlvcyA9IFwiTTIuMDkgMTYuOEgzLjc1VjkuNzZIMi4wOU0yLjkyIDguODRDMy40NCA4Ljg0IDMuODQgOC40NCAzLjg0IDcuOTRDMy44NCA3LjQ0IDMuNDQgNy4wNCAyLjkyIDcuMDRDMi40IDcuMDQgMiA3LjQ0IDIgNy45NEMyIDguNDQgMi40IDguODQgMi45MiA4Ljg0TTkuMjUgNy4wNkM2LjQ2IDcuMDYgNC43IDguOTYgNC43IDEyQzQuNyAxNS4wNiA2LjQ2IDE2Ljk2IDkuMjUgMTYuOTZDMTIuMDQgMTYuOTYgMTMuOCAxNS4wNiAxMy44IDEyQzEzLjggOC45NiAxMi4wNCA3LjA2IDkuMjUgNy4wNk05LjI1IDguNUMxMC45NiA4LjUgMTIuMDUgOS44NyAxMi4wNSAxMkMxMi4wNSAxNC4xNSAxMC45NiAxNS41IDkuMjUgMTUuNUM3LjU0IDE1LjUgNi40NiAxNC4xNSA2LjQ2IDEyQzYuNDYgOS44NyA3LjU0IDguNSA5LjI1IDguNU0xNC41IDE0LjExQzE0LjU3IDE1Ljg3IDE2IDE2Ljk2IDE4LjIyIDE2Ljk2QzIwLjU0IDE2Ljk2IDIyIDE1LjgyIDIyIDE0QzIyIDEyLjU3IDIxLjE4IDExLjc3IDE5LjIzIDExLjMyTDE4LjEzIDExLjA3QzE2Ljk1IDEwLjc5IDE2LjQ3IDEwLjQyIDE2LjQ3IDkuNzhDMTYuNDcgOSAxNy4yIDguNDUgMTguMjggOC40NUMxOS4zOCA4LjQ1IDIwLjEzIDkgMjAuMjEgOS44OUgyMS44NEMyMS44IDguMiAyMC40MSA3LjA2IDE4LjI5IDcuMDZDMTYuMjEgNy4wNiAxNC43MyA4LjIxIDE0LjczIDkuOTFDMTQuNzMgMTEuMjggMTUuNTYgMTIuMTMgMTcuMzMgMTIuNTNMMTguNTcgMTIuODJDMTkuNzggMTMuMTEgMjAuMjcgMTMuNSAyMC4yNyAxNC4yQzIwLjI3IDE1IDE5LjQ3IDE1LjU3IDE4LjMxIDE1LjU3QzE3LjE1IDE1LjU3IDE2LjI2IDE1IDE2LjE2IDE0LjExSDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGVLZXlib2FyZENhcHMgPSBcIk0xNSwxNFY4SDE3LjE3TDEyLDIuODNMNi44Myw4SDlWMTRIMTVNMTIsMEwyMiwxMEgxN1YxNkg3VjEwSDJMMTIsME03LDE4SDE3VjI0SDdWMThNMTUsMjBIOVYyMkgxNVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUtleWJvYXJkQ29tbWFuZCA9IFwiTTYsMkE0LDQgMCAwLDEgMTAsNlY4SDE0VjZBNCw0IDAgMCwxIDE4LDJBNCw0IDAgMCwxIDIyLDZBNCw0IDAgMCwxIDE4LDEwSDE2VjE0SDE4QTQsNCAwIDAsMSAyMiwxOEE0LDQgMCAwLDEgMTgsMjJBNCw0IDAgMCwxIDE0LDE4VjE2SDEwVjE4QTQsNCAwIDAsMSA2LDIyQTQsNCAwIDAsMSAyLDE4QTQsNCAwIDAsMSA2LDE0SDhWMTBINkE0LDQgMCAwLDEgMiw2QTQsNCAwIDAsMSA2LDJNMTYsMThBMiwyIDAgMCwwIDE4LDIwQTIsMiAwIDAsMCAyMCwxOEEyLDIgMCAwLDAgMTgsMTZIMTZWMThNMTQsMTBIMTBWMTRIMTRWMTBNNiwxNkEyLDIgMCAwLDAgNCwxOEEyLDIgMCAwLDAgNiwyMEEyLDIgMCAwLDAgOCwxOFYxNkg2TTgsNkEyLDIgMCAwLDAgNiw0QTIsMiAwIDAsMCA0LDZBMiwyIDAgMCwwIDYsOEg4VjZNMTgsOEEyLDIgMCAwLDAgMjAsNkEyLDIgMCAwLDAgMTgsNEEyLDIgMCAwLDAgMTYsNlY4SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcGxlS2V5Ym9hcmRDb250cm9sID0gXCJNMTkuNzgsMTEuNzhMMTguMzYsMTMuMTlMMTIsNi44M0w1LjY0LDEzLjE5TDQuMjIsMTEuNzhMMTIsNEwxOS43OCwxMS43OFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUtleWJvYXJkT3B0aW9uID0gXCJNMyw0SDkuMTFMMTYuMTUsMThIMjFWMjBIMTQuODhMNy44NCw2SDNWNE0xNCw0SDIxVjZIMTRWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUtleWJvYXJkU2hpZnQgPSBcIk0xNSwxOFYxMkgxNy4xN0wxMiw2LjgzTDYuODMsMTJIOVYxOEgxNU0xMiw0TDIyLDE0SDE3VjIwSDdWMTRIMkwxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcGxlU2FmYXJpID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkM0LDE0LjA5IDQuOCwxNiA2LjExLDE3LjQxTDkuODgsOS44OEwxNy40MSw2LjExQzE2LDQuOCAxNC4wOSw0IDEyLDRNMTIsMjBBOCw4IDAgMCwwIDIwLDEyQzIwLDkuOTEgMTkuMiw4IDE3Ljg5LDYuNTlMMTQuMTIsMTQuMTJMNi41OSwxNy44OUM4LDE5LjIgOS45MSwyMCAxMiwyME0xMiwxMkwxMS4yMywxMS4yM0w5LjcsMTQuM0wxMi43NywxMi43N0wxMiwxMk0xMiwxNy41SDEzVjE5SDEyVjE3LjVNMTUuODgsMTUuODlMMTYuNTksMTUuMThMMTcuNjUsMTYuMjRMMTYuOTQsMTYuOTVMMTUuODgsMTUuODlNMTcuNSwxMlYxMUgxOVYxMkgxNy41TTEyLDYuNUgxMVY1SDEyVjYuNU04LjEyLDguMTFMNy40MSw4LjgyTDYuMzUsNy43Nkw3LjA2LDcuMDVMOC4xMiw4LjExTTYuNSwxMlYxM0g1VjEySDYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsaWNhdGlvbiA9IFwiTTE5LDRDMjAuMTEsNCAyMSw0LjkgMjEsNlYxOEEyLDIgMCAwLDEgMTksMjBINUMzLjg5LDIwIDMsMTkuMSAzLDE4VjZBMiwyIDAgMCwxIDUsNEgxOU0xOSwxOFY4SDVWMThIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGljYXRpb25Db2cgPSBcIk0yMS43IDE4LjZWMTcuNkwyMi44IDE2LjhDMjIuOSAxNi43IDIzIDE2LjYgMjIuOSAxNi41TDIxLjkgMTQuOEMyMS45IDE0LjcgMjEuNyAxNC43IDIxLjYgMTQuN0wyMC40IDE1LjJDMjAuMSAxNSAxOS44IDE0LjggMTkuNSAxNC43TDE5LjMgMTMuNEMxOS4zIDEzLjMgMTkuMiAxMy4yIDE5LjEgMTMuMkgxNy4xQzE2LjkgMTMuMiAxNi44IDEzLjMgMTYuOCAxMy40TDE2LjYgMTQuN0MxNi4zIDE0LjkgMTYuMSAxNSAxNS44IDE1LjJMMTQuNiAxNC43QzE0LjUgMTQuNyAxNC40IDE0LjcgMTQuMyAxNC44TDEzLjMgMTYuNUMxMy4zIDE2LjYgMTMuMyAxNi43IDEzLjQgMTYuOEwxNC41IDE3LjZWMTguNkwxMy40IDE5LjRDMTMuMyAxOS41IDEzLjIgMTkuNiAxMy4zIDE5LjdMMTQuMyAyMS40QzE0LjQgMjEuNSAxNC41IDIxLjUgMTQuNiAyMS41TDE1LjggMjFDMTYgMjEuMiAxNi4zIDIxLjQgMTYuNiAyMS41TDE2LjggMjIuOEMxNi45IDIyLjkgMTcgMjMgMTcuMSAyM0gxOS4xQzE5LjIgMjMgMTkuMyAyMi45IDE5LjMgMjIuOEwxOS41IDIxLjVDMTkuOCAyMS4zIDIwIDIxLjIgMjAuMyAyMUwyMS41IDIxLjRDMjEuNiAyMS40IDIxLjcgMjEuNCAyMS44IDIxLjNMMjIuOCAxOS42QzIyLjkgMTkuNSAyMi45IDE5LjQgMjIuOCAxOS40TDIxLjcgMTguNk0xOCAxOS41QzE3LjIgMTkuNSAxNi41IDE4LjggMTYuNSAxOFMxNy4yIDE2LjUgMTggMTYuNSAxOS41IDE3LjIgMTkuNSAxOCAxOC44IDE5LjUgMTggMTkuNU0xMS4yOSAyMEg1QzMuODkgMjAgMyAxOS4xIDMgMThWNkMzIDQuODkgMy45IDQgNSA0SDE5QzIwLjExIDQgMjEgNC45IDIxIDZWMTEuNjhDMjAuMzggMTEuMzkgMTkuNzEgMTEuMTggMTkgMTEuMDhWOEg1VjE4SDExQzExIDE4LjcgMTEuMTEgMTkuMzcgMTEuMjkgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGljYXRpb25FeHBvcnQgPSBcIk04LDEySDE3Ljc2TDE1LjI2LDkuNUwxNi42Nyw4LjA4TDIxLjU5LDEzTDE2LjY3LDE3LjkyTDE1LjI2LDE2LjVMMTcuNzYsMTRIOFYxMk0xOSwzQzIwLjExLDMgMjEsMy45IDIxLDVWOS42N0wxOSw3LjY3VjdINVYxOUgxOVYxOC4zM0wyMSwxNi4zM1YxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsaWNhdGlvbkltcG9ydCA9IFwiTTEsMTJIMTAuNzZMOC4yNiw5LjVMOS42Nyw4LjA4TDE0LjU5LDEzTDkuNjcsMTcuOTJMOC4yNiwxNi41TDEwLjc2LDE0SDFWMTJNMTksM0MyMC4xMSwzIDIxLDMuOSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWMTZINVYxOUgxOVY3SDVWMTBIM1Y1QTIsMiAwIDAsMSA1LDNIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGljYXRpb25TZXR0aW5ncyA9IFwiTTcgMjJIOVYyNEg3VjIyTTExIDIySDEzVjI0SDExVjIyTTE1IDIySDE3VjI0SDE1VjIyTTUgNEgxOUEyIDIgMCAwIDEgMjEgNlYxOEEyIDIgMCAwIDEgMTkgMjBINUEyIDIgMCAwIDEgMyAxOFY2QTIgMiAwIDAgMSA1IDRNNSA4VjE4SDE5VjhINVwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcHJveGltYXRlbHlFcXVhbCA9IFwiTTE4LjkgOS4yQzE4LjEgMTAuMSAxNi42IDExIDE1IDExQzEzLjUgMTEgMTIuNiAxMC41IDExLjggMTAuMUMxMSA5LjggMTAuMiA5LjMgOC45IDkuM0M3LjcgOS4zIDYuNiAxMCA2IDEwLjZMNSA5LjFDNS45IDguMiA3LjMgNy4yIDguOSA3LjJDMTAuNCA3LjIgMTEuMyA3LjggMTIuMSA4LjFDMTIuOSA4LjQgMTMuNyA5IDE1IDlDMTYuMiA5IDE3LjMgOC4yIDE3LjkgNy42TDE4LjkgOS4yTTE5IDE0LjFDMTguMSAxNSAxNi43IDE2IDE1LjEgMTZDMTMuNiAxNiAxMi43IDE1LjUgMTEuOSAxNS4xQzExLjEgMTQuOCAxMC4zIDE0LjIgOSAxNC4yQzcuOCAxNC4yIDYuNyAxNSA2LjEgMTUuNkw1LjEgMTRDNiAxMy4xIDcuNCAxMi4xIDkgMTIuMUMxMC41IDEyLjEgMTEuNCAxMi42IDEyLjIgMTNDMTMgMTMuMyAxMy44IDEzLjggMTUuMSAxMy44QzE2LjMgMTMuOCAxNy40IDEzIDE4IDEyLjRMMTkgMTQuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHByb3hpbWF0ZWx5RXF1YWxCb3ggPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNOS4zIDguMkMxMC42IDguMiAxMS40IDguNyAxMi4xIDlDMTIuNyA5LjMgMTMuNCA5LjcgMTQuNSA5LjdDMTUuNSA5LjcgMTYuNSA5IDE3IDguNUwxNy44IDkuOEMxNy4xIDEwLjYgMTUuOCAxMS40IDE0LjQgMTEuNEMxMy4xIDExLjQgMTIuMyAxMC45IDExLjcgMTAuNkMxMS4xIDEwLjMgMTAuMyA5LjkgOS4yIDkuOUM4LjIgOS45IDcuMiAxMC42IDYuNyAxMS4xTDYgOS44QzYuNyA5IDggOC4yIDkuMyA4LjJNMTQuNiAxNS44QzEzLjMgMTUuOCAxMi41IDE1LjMgMTEuOCAxNUMxMS4yIDE0LjcgMTAuNCAxNC4zIDkuMyAxNC4zQzguMyAxNC4zIDcuMyAxNSA2LjggMTUuNUw2IDE0LjFDNi43IDEzLjMgOCAxMi41IDkuMyAxMi41QzEwLjYgMTIuNSAxMS40IDEzIDEyLjEgMTMuM0MxMi43IDEzLjYgMTMuNCAxNCAxNC42IDE0QzE1LjYgMTQgMTYuNiAxMy4zIDE3LjEgMTIuOEwxNy45IDE0LjFDMTcuMyAxNSAxNiAxNS44IDE0LjYgMTUuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBzID0gXCJNMTYsMjBIMjBWMTZIMTZNMTYsMTRIMjBWMTBIMTZNMTAsOEgxNFY0SDEwTTE2LDhIMjBWNEgxNk0xMCwxNEgxNFYxMEgxME00LDE0SDhWMTBINE00LDIwSDhWMTZINE0xMCwyMEgxNFYxNkgxME00LDhIOFY0SDRWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBzQm94ID0gXCJNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM003LDdWOUg5VjdIN00xMSw3VjlIMTNWN0gxMU0xNSw3VjlIMTdWN0gxNU03LDExVjEzSDlWMTFIN00xMSwxMVYxM0gxM1YxMUgxMU0xNSwxMVYxM0gxN1YxMUgxNU03LDE1VjE3SDlWMTVIN00xMSwxNVYxN0gxM1YxNUgxMU0xNSwxNVYxN0gxN1YxNUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcmNoID0gXCJNMTIsMkMxMS4xMSw0LjE4IDEwLjU3LDUuNjEgOS41OCw3LjczQzEwLjE5LDguMzcgMTAuOTMsOS4xMiAxMi4xNCw5Ljk3QzEwLjg0LDkuNDMgOS45NSw4LjkgOS4yOSw4LjM0QzgsMTEgNi4wMywxNC43NSAyLDIyQzUuMTcsMjAuMTcgNy42MywxOS4wNCA5LjkyLDE4LjYxQzkuODIsMTguMTkgOS43NiwxNy43MyA5Ljc3LDE3LjI1VjE3LjE1QzkuODIsMTUuMTIgMTAuODgsMTMuNTYgMTIuMTMsMTMuNjdDMTMuMzgsMTMuNzcgMTQuMzUsMTUuNSAxNC4zLDE3LjU0QzE0LjI5LDE3LjkyIDE0LjI1LDE4LjI5IDE0LjE4LDE4LjYzQzE2LjQ0LDE5LjA3IDE4Ljg3LDIwLjE5IDIyLDIyQzIxLjM4LDIwLjg2IDIwLjgzLDE5Ljg0IDIwLjMxLDE4Ljg3QzE5LjUsMTguMjMgMTguNjEsMTcuMzkgMTYuODUsMTYuNUMxOC4wNiwxNi44IDE4LjkzLDE3LjE2IDE5LjYxLDE3LjU3QzE0LjI2LDcuNjIgMTMuODMsNi4zIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJjaGl2ZSA9IFwiTTMsM0gyMVY3SDNWM000LDhIMjBWMjFINFY4TTkuNSwxMUEwLjUsMC41IDAgMCwwIDksMTEuNVYxM0gxNVYxMS41QTAuNSwwLjUgMCAwLDAgMTQuNSwxMUg5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJjaGl2ZUFsZXJ0ID0gXCJNMiA0SDE4VjdIMlY0TTMgOEgxN1YyMEgzVjhNNy41IDExQzcuMjIgMTEgNyAxMS4yMiA3IDExLjVWMTNIMTNWMTEuNUMxMyAxMS4yMiAxMi43OCAxMSAxMi41IDExSDcuNU0yMCAxM1Y3SDIyVjEzSDIwTTIwIDE3VjE1SDIyVjE3SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFyY2hpdmVBbGVydE91dGxpbmUgPSBcIk0yIDRIMThWN0gyVjRNNy41IDExSDEyLjVDMTIuNzggMTEgMTMgMTEuMjIgMTMgMTEuNVYxM0g3VjExLjVDNyAxMS4yMiA3LjIyIDExIDcuNSAxMU0yMCAxM1Y3SDIyVjEzSDIwTTIwIDE3VjE1SDIyVjE3SDIwTTMgOEg1VjE4SDE1VjhIMTdWMjBIM1Y4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFyY2hpdmVBcnJvd0Rvd24gPSBcIk0zIDNIMjFWN0gzVjNNNCAyMVY4SDIwVjIxSDRNMTQgMTRWMTFIMTBWMTRIN0wxMiAxOUwxNyAxNEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcmNoaXZlQXJyb3dEb3duT3V0bGluZSA9IFwiTTIwIDIxSDRWMTBINlYxOUgxOFYxMEgyMFYyMU0zIDNIMjFWOUgzVjNNNSA1VjdIMTlWNU0xMC41IDExVjE0SDhMMTIgMThMMTYgMTRIMTMuNVYxMVwiO1xyXG5leHBvcnQgdmFyIG1kaUFyY2hpdmVBcnJvd1VwID0gXCJNNCAyMUgyMFY4SDRNMTQgMTVWMThIMTBWMTVIN0wxMiAxMEwxNyAxNU0zIDNIMjFWN0gzXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJjaGl2ZUFycm93VXBPdXRsaW5lID0gXCJNMjAgMjFINFYxMEg2VjE5SDE4VjEwSDIwVjIxTTMgM0gyMVY5SDNWM001IDVWN0gxOVY1TTEwLjUgMTdWMTRIOEwxMiAxMEwxNiAxNEgxMy41VjE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJjaGl2ZU91dGxpbmUgPSBcIk0yMCAyMUg0VjEwSDZWMTlIMThWMTBIMjBWMjFNMyAzSDIxVjlIM1YzTTkuNSAxMUgxNC41QzE0Ljc4IDExIDE1IDExLjIyIDE1IDExLjVWMTNIOVYxMS41QzkgMTEuMjIgOS4yMiAxMSA5LjUgMTFNNSA1VjdIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFybUZsZXggPSBcIk0zIDE4LjM0QzMgMTguMzQgNCA3LjA5IDcgM0wxMiA0TDExIDcuMDlIOVYxNC4yNUgxMEMxMiAxMS4xOCAxNi4xNCAxMC4wNiAxOC42NCAxMS4xOEMyMS45NCAxMi43MSAyMS42NCAxNy4zMiAxOC42NCAxOS4zNkMxNi4yNCAyMSA5IDIyLjQzIDMgMTguMzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJtRmxleE91dGxpbmUgPSBcIk03IDcuNzZWMTYuMjVIMTEuMDhMMTEuNjggMTUuMzRDMTIuODQgMTMuNTUgMTQuOTMgMTIuNzUgMTYuNDcgMTIuNzVDMTcgMTIuNzUgMTcuNDUgMTIuODQgMTcuNzkgMTNDMTguNyAxMy40MSAxOC45NSAxNC4xOCAxOSAxNC43NEMxOS4wOCAxNS44NyAxOC41IDE3LjAzIDE3LjUgMTcuNzFDMTYuNiAxOC4zMyAxNC40NCAxOSAxMS44NyAxOUMxMC4xMiAxOSA3LjYxIDE4LjY5IDUuMTIgMTcuM0M1LjQxIDE0Ljg1IDYgMTAuODggNyA3Ljc2TTcgM0M0IDcuMDkgMyAxOC4zNCAzIDE4LjM0QzUuOSAyMC4zMSA5LjA4IDIxIDExLjg3IDIxQzE0Ljg2IDIxIDE3LjM5IDIwLjIxIDE4LjY0IDE5LjM2QzIxLjY0IDE3LjMyIDIxLjk0IDEyLjcxIDE4LjY0IDExLjE4QzE4IDEwLjg5IDE3LjI2IDEwLjc1IDE2LjQ3IDEwLjc1QzE0LjE3IDEwLjc1IDExLjUgMTEuOTYgMTAgMTQuMjVIOVY3LjA5SDExTDEyIDRMNyAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycmFuZ2VCcmluZ0ZvcndhcmQgPSBcIk0yLDJIMTZWMTZIMlYyTTIyLDhWMjJIOFYxOEgxMFYyMEgyMFYxMEgxOFY4SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycmFuZ2VCcmluZ1RvRnJvbnQgPSBcIk0yLDJIMTFWNkg5VjRINFY5SDZWMTFIMlYyTTIyLDEzVjIySDEzVjE4SDE1VjIwSDIwVjE1SDE4VjEzSDIyTTgsOEgxNlYxNkg4VjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyYW5nZVNlbmRCYWNrd2FyZCA9IFwiTTIsMkgxNlYxNkgyVjJNMjIsOFYyMkg4VjE4SDE4VjhIMjJNNCw0VjE0SDE0VjRINFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJhbmdlU2VuZFRvQmFjayA9IFwiTTIsMkgxMVYxMUgyVjJNOSw0SDRWOUg5VjRNMjIsMTNWMjJIMTNWMTNIMjJNMTUsMjBIMjBWMTVIMTVWMjBNMTYsOFYxMUgxM1Y4SDE2TTExLDE2SDhWMTNIMTFWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dBbGwgPSBcIk0xMywxMUgxOEwxNi41LDkuNUwxNy45Miw4LjA4TDIxLjg0LDEyTDE3LjkyLDE1LjkyTDE2LjUsMTQuNUwxOCwxM0gxM1YxOEwxNC41LDE2LjVMMTUuOTIsMTcuOTJMMTIsMjEuODRMOC4wOCwxNy45Mkw5LjUsMTYuNUwxMSwxOFYxM0g2TDcuNSwxNC41TDYuMDgsMTUuOTJMMi4xNiwxMkw2LjA4LDguMDhMNy41LDkuNUw2LDExSDExVjZMOS41LDcuNUw4LjA4LDYuMDhMMTIsMi4xNkwxNS45Miw2LjA4TDE0LjUsNy41TDEzLDZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dCb3R0b21MZWZ0ID0gXCJNMTksNi40MUwxNy41OSw1TDcsMTUuNTlWOUg1VjE5SDE1VjE3SDguNDFMMTksNi40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0JvdHRvbUxlZnRCb2xkT3V0bGluZSA9IFwiTTE4LjM2LDE5Ljc4SDQuMjJWNS42NEw4LjQ3LDkuODhMMTQuMTIsNC4yMkwxOS43OCw5Ljg4TDE0LjEyLDE1LjU0TDE4LjM2LDE5Ljc4TTYuMzQsMTcuNjZIMTMuNDFMMTEuMjksMTUuNTRMMTYuOTUsOS44OEwxNC4xMiw3LjA1TDguNDYsMTIuNzFMNi4zNCwxMC41OVYxNy42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0JvdHRvbUxlZnRUaGljayA9IFwiTTE1LjUsNS42OUwxOC4zMSw4LjVMMTEuOTQsMTQuODlIMTYuODlWMTguMzFINS42OVY3LjExSDkuMTJWMTIuMDZMMTUuNSw1LjY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Qm90dG9tTGVmdFRoaW5DaXJjbGVPdXRsaW5lID0gXCJNMTIgMjAuMDNDMTYuNDEgMjAuMDMgMjAuMDMgMTYuNDEgMjAuMDMgMTJDMjAuMDMgNy41OSAxNi40MSAzLjk3IDEyIDMuOTdDNy41OSAzLjk3IDMuOTcgNy41OSAzLjk3IDEyQzMuOTcgMTYuNDEgNy41OSAyMC4wMyAxMiAyMC4wM00xMiAyMkM2LjQ2IDIyIDIgMTcuNTQgMiAxMkMyIDYuNDYgNi40NiAyIDEyIDJDMTcuNTQgMiAyMiA2LjQ2IDIyIDEyQzIyIDE3LjU0IDE3LjU0IDIyIDEyIDIyTTEwLjEyIDEyLjQ3TDggMTAuMzZWMTZIMTMuNjRMMTEuNTMgMTMuODhMMTYuNSA4LjlMMTUuMSA3LjVcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0JvdHRvbVJpZ2h0ID0gXCJNNSw2LjQxTDYuNDEsNUwxNywxNS41OVY5SDE5VjE5SDlWMTdIMTUuNTlMNSw2LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Qm90dG9tUmlnaHRCb2xkT3V0bGluZSA9IFwiTTkuODgsMTUuNTRMNC4yMiw5Ljg4TDkuODgsNC4yMkwxNS41NCw5Ljg4TDE5Ljc4LDUuNjRWMTkuNzhINS42NEw5Ljg4LDE1LjU0TTE3LjY2LDEwLjU5TDE1LjU0LDEyLjcxTDkuODgsNy4wNUw3LjA1LDkuODhMMTIuNzEsMTUuNTRMMTAuNTksMTcuNjZIMTcuNjZWMTAuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dCb3R0b21SaWdodFRoaWNrID0gXCJNMTQuODksMTIuMDZWNy4xMUgxOC4zMVYxOC4zMUg3LjExVjE0Ljg5SDEyLjA2TDUuNjksOC41TDguNSw1LjY5TDE0Ljg5LDEyLjA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Qm90dG9tUmlnaHRUaGluQ2lyY2xlT3V0bGluZSA9IFwiTTEyIDIwLjAzQzcuNTkgMjAuMDMgMy45NyAxNi40MSAzLjk3IDEyQzMuOTcgNy41OSA3LjU5IDMuOTcgMTIgMy45N0MxNi40MSAzLjk3IDIwLjAzIDcuNTkgMjAuMDMgMTJDMjAuMDMgMTYuNDEgMTYuNDEgMjAuMDMgMTIgMjAuMDNNMTIgMjJDMTcuNTQgMjIgMjIgMTcuNTQgMjIgMTJDMjIgNi40NiAxNy41NCAyIDEyIDJDNi40NiAyIDIgNi40NiAyIDEyQzIgMTcuNTQgNi40NiAyMiAxMiAyMk0xMy44OCAxMi40N0wxNiAxMC4zNlYxNkgxMC4zNkwxMi40NyAxMy44OEw3LjUgOC45TDguOSA3LjVcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0NvbGxhcHNlID0gXCJNMTkuNSwzLjA5TDE1LDcuNTlWNEgxM1YxMUgyMFY5SDE2LjQxTDIwLjkxLDQuNUwxOS41LDMuMDlNNCwxM1YxNUg3LjU5TDMuMDksMTkuNUw0LjUsMjAuOTFMOSwxNi40MVYyMEgxMVYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Q29sbGFwc2VBbGwgPSBcIk0xOS41LDMuMDlMMjAuOTEsNC41TDE2LjQxLDlIMjBWMTFIMTNWNEgxNVY3LjU5TDE5LjUsMy4wOU0yMC45MSwxOS41TDE5LjUsMjAuOTFMMTUsMTYuNDFWMjBIMTNWMTNIMjBWMTVIMTYuNDFMMjAuOTEsMTkuNU00LjUsMy4wOUw5LDcuNTlWNEgxMVYxMUg0VjlINy41OUwzLjA5LDQuNUw0LjUsMy4wOU0zLjA5LDE5LjVMNy41OSwxNUg0VjEzSDExVjIwSDlWMTYuNDFMNC41LDIwLjkxTDMuMDksMTkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0NvbGxhcHNlRG93biA9IFwiTTE5LjkyLDEyLjA4TDEyLDIwTDQuMDgsMTIuMDhMNS41LDEwLjY3TDExLDE2LjE3VjJIMTNWMTYuMTdMMTguNSwxMC42NkwxOS45MiwxMi4wOE0xMiwyMEgyVjIySDIyVjIwSDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Q29sbGFwc2VIb3Jpem9udGFsID0gXCJNMTMsMjBWNEgxNS4wM1YyMEgxM00xMCwyMFY0SDEyLjAzVjIwSDEwTTUsOEw5LjAzLDEyTDUsMTZWMTNIMlYxMUg1VjhNMjAsMTZMMTYsMTJMMjAsOFYxMUgyM1YxM0gyMFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0NvbGxhcHNlTGVmdCA9IFwiTTExLjkyLDE5LjkyTDQsMTJMMTEuOTIsNC4wOEwxMy4zMyw1LjVMNy44MywxMUgyMlYxM0g3LjgzTDEzLjM0LDE4LjVMMTEuOTIsMTkuOTJNNCwxMlYySDJWMjJINFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0NvbGxhcHNlUmlnaHQgPSBcIk0xMi4wOCw0LjA4TDIwLDEyTDEyLjA4LDE5LjkyTDEwLjY3LDE4LjVMMTYuMTcsMTNIMlYxMUgxNi4xN0wxMC42Nyw1LjVMMTIuMDgsNC4wOE0yMCwxMlYyMkgyMlYySDIwVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Q29sbGFwc2VVcCA9IFwiTTQuMDgsMTEuOTJMMTIsNEwxOS45MiwxMS45MkwxOC41LDEzLjMzTDEzLDcuODNWMjJIMTFWNy44M0w1LjUsMTMuMzNMNC4wOCwxMS45Mk0xMiw0SDIyVjJIMlY0SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Q29sbGFwc2VWZXJ0aWNhbCA9IFwiTTQsMTJIMjBWMTRINFYxMk00LDlIMjBWMTFINFY5TTE2LDRMMTIsOEw4LDRIMTFWMUgxM1Y0SDE2TTgsMTlMMTIsMTVMMTYsMTlIMTNWMjJIMTFWMTlIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0RlY2lzaW9uID0gXCJNMTEsNUg4TDEyLDFMMTYsNUgxM1Y5LjQzQzEyLjI1LDkuODkgMTEuNTgsMTAuNDYgMTEsMTEuMTJWNU0yMiwxMUwxOCw3VjEwQzE0LjM5LDkuODUgMTEuMzEsMTIuNTcgMTEsMTYuMTdDOS40NCwxNi43MiA4LjYyLDE4LjQ0IDkuMTcsMjBDOS43MiwyMS41NiAxMS40NCwyMi4zOCAxMywyMS44M0MxNC41NiwyMS4yNyAxNS4zOCwxOS41NiAxNC44MywxOEMxNC41MywxNy4xNCAxMy44NSwxNi40NyAxMywxNi4xN0MxMy40NywxMi4xNyAxNy40NywxMS45NyAxNy45NSwxMS45N1YxNC45N0wyMiwxMU0xMC42MywxMS41OUM5LjMsMTAuNTcgNy42NywxMCA2LDEwVjdMMiwxMUw2LDE1VjEyQzcuMzQsMTIuMDMgOC42MywxMi41IDkuNjQsMTMuNEM5Ljg5LDEyLjc2IDEwLjIyLDEyLjE1IDEwLjYzLDExLjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RGVjaXNpb25BdXRvID0gXCJNMTIsNUg5TDEzLDFMMTcsNUgxNFY5LjQzQzEzLjI1LDkuODkgMTIuNTgsMTAuNDYgMTIsMTEuMTJWNU0xMC40LDE1SDguNUw3LjgsMTNINC42TDMuOSwxNUgyTDUuMiw2SDcuMkwxMC40LDE1TTcuMzUsMTEuNjVMNi4yLDhMNS4wNSwxMS42NUg3LjM1TTIzLDExTDE5LDdWMTBDMTUuMzksOS44NSAxMi4zMSwxMi41NyAxMiwxNi4xN0MxMC40NCwxNi43MiA5LjYyLDE4LjQ0IDEwLjE3LDIwQzEwLjcyLDIxLjU2IDEyLjQ0LDIyLjM4IDE0LDIxLjgzQzE1LjU2LDIxLjI3IDE2LjM4LDE5LjU2IDE1LjgzLDE4QzE1LjUzLDE3LjE0IDE0Ljg1LDE2LjQ3IDE0LDE2LjE3QzE0LjQ3LDEyLjE3IDE4LjQ3LDExLjk3IDE4Ljk1LDExLjk3VjE0Ljk3TDIzLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RGVjaXNpb25BdXRvT3V0bGluZSA9IFwiTTE5LDE1VjEyQzE4LjUsMTIgMTQuNSwxMi4xNiAxNC4wNSwxNi4yQzE1LjYxLDE2Ljc1IDE2LjQzLDE4LjQ3IDE1Ljg4LDIwLjAzQzE1LjMzLDIxLjU5IDEzLjYxLDIyLjQxIDEyLjA1LDIxLjg2QzEwLjUsMjEuMyA5LjY3LDE5LjU5IDEwLjIyLDE4LjAzQzEwLjUsMTcuMTcgMTEuMiwxNi41IDEyLjA1LDE2LjJDMTIuMzQsMTIuNjEgMTUuNCw5Ljg4IDE5LDEwVjdMMjMsMTFMMTksMTVNMTQsMTlBMSwxIDAgMCwwIDEzLDE4QTEsMSAwIDAsMCAxMiwxOUExLDEgMCAwLDAgMTMsMjBBMSwxIDAgMCwwIDE0LDE5TTEyLDExLjEyQzEyLjU4LDEwLjQ2IDEzLjI1LDkuODkgMTQsOS40M1Y1SDE3TDEzLDFMOSw1SDEyVjExLjEyTTcuMiw2SDUuMkwyLDE1SDMuOUw0LjYsMTNINy44TDguNSwxNUgxMC40TDcuMiw2TTUuMDUsMTEuNjVMNi4yLDhMNy4zNSwxMS42NUg1LjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RGVjaXNpb25PdXRsaW5lID0gXCJNOS42NCwxMy40QzguNjMsMTIuNSA3LjM0LDEyLjAzIDYsMTJWMTVMMiwxMUw2LDdWMTBDNy42NywxMCA5LjMsMTAuNTcgMTAuNjMsMTEuNTlDMTAuMjIsMTIuMTUgOS44OSwxMi43NiA5LjY0LDEzLjRNMTgsMTVWMTJDMTcuNSwxMiAxMy41LDEyLjE2IDEzLjA1LDE2LjJDMTQuNjEsMTYuNzUgMTUuNDMsMTguNDcgMTQuODgsMjAuMDNDMTQuMzMsMjEuNTkgMTIuNjEsMjIuNDEgMTEuMDUsMjEuODZDOS41LDIxLjMgOC42NywxOS41OSA5LjIyLDE4LjAzQzkuNSwxNy4xNyAxMC4yLDE2LjUgMTEuMDUsMTYuMkMxMS4zNCwxMi42MSAxNC40LDkuODggMTgsMTBWN0wyMiwxMUwxOCwxNU0xMywxOUExLDEgMCAwLDAgMTIsMThBMSwxIDAgMCwwIDExLDE5QTEsMSAwIDAsMCAxMiwyMEExLDEgMCAwLDAgMTMsMTlNMTEsMTEuMTJDMTEuNTgsMTAuNDYgMTIuMjUsOS44OSAxMyw5LjQzVjVIMTZMMTIsMUw4LDVIMTFWMTEuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dEb3duID0gXCJNMTEsNEgxM1YxNkwxOC41LDEwLjVMMTkuOTIsMTEuOTJMMTIsMTkuODRMNC4wOCwxMS45Mkw1LjUsMTAuNUwxMSwxNlY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJvbGQgPSBcIk05LDRIMTVWMTJIMTkuODRMMTIsMTkuODRMNC4xNiwxMkg5VjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dEb3duQm9sZEJveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNMTIsMTdMMTcsMTJIMTRWOEgxMFYxMkg3TDEyLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJvbGRCb3hPdXRsaW5lID0gXCJNMTIsMTdMNywxMkgxMFY4SDE0VjEySDE3TDEyLDE3TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0Rvd25Cb2xkQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsMTdMMTcsMTJIMTRWOEgxMFYxMkg3TDEyLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJvbGRDaXJjbGVPdXRsaW5lID0gXCJNMTIsMTdMNywxMkgxMFY4SDE0VjEySDE3TDEyLDE3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0Rvd25Cb2xkSGV4YWdvbk91dGxpbmUgPSBcIk0xMiwxN0w3LDEySDEwVjhIMTRWMTJIMTdMMTIsMTdNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsNC4xNUw1LDguMDlWMTUuOTFMMTIsMTkuODVMMTksMTUuOTFWOC4wOUwxMiw0LjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJvbGRPdXRsaW5lID0gXCJNMjIsMTFMMTIsMjFMMiwxMUg4VjNIMTZWMTFIMjJNMTIsMThMMTcsMTNIMTRWNUgxMFYxM0g3TDEyLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJveCA9IFwiTTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU0xMSw2VjE0LjVMNy41LDExTDYuMDgsMTIuNDJMMTIsMTguMzRMMTcuOTIsMTIuNDJMMTYuNSwxMUwxMywxNC41VjZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dEb3duQ2lyY2xlID0gXCJNMTEsNlYxNEw3LjUsMTAuNUw2LjA4LDExLjkyTDEyLDE3Ljg0TDE3LjkyLDExLjkyTDE2LjUsMTAuNUwxMywxNFY2SDExTTEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0Rvd25DaXJjbGVPdXRsaW5lID0gXCJNMTEsNkgxM1YxNEwxNi41LDEwLjVMMTcuOTIsMTEuOTJMMTIsMTcuODRMNi4wOCwxMS45Mkw3LjUsMTAuNUwxMSwxNFY2TTEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMk0xMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkRyb3BDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk03LDEwTDEyLDE1TDE3LDEwSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dEb3duRHJvcENpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRNNywxMEwxMiwxNUwxNywxMEg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93blRoaWNrID0gXCJNMTAsNEgxNFYxM0wxNy41LDkuNUwxOS45MiwxMS45MkwxMiwxOS44NEw0LjA4LDExLjkyTDYuNSw5LjVMMTAsMTNWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0Rvd25UaGluQ2lyY2xlT3V0bGluZSA9IFwiTTEyIDIwLjAzQzE2LjQxIDIwLjAzIDIwLjAzIDE2LjQxIDIwLjAzIDEyQzIwLjAzIDcuNTkgMTYuNDEgMy45NyAxMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMkMzLjk3IDE2LjQxIDcuNTkgMjAuMDMgMTIgMjAuMDNNMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJDMiA2LjQ2IDYuNDYgMiAxMiAyQzE3LjU0IDIgMjIgNi40NiAyMiAxMkMyMiAxNy41NCAxNy41NCAyMiAxMiAyMk0xMSAxMy41NEg4TDEyIDE3LjVMMTYgMTMuNTRIMTNWNi41SDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dFeHBhbmQgPSBcIk0xMCwyMVYxOUg2LjQxTDEwLjkxLDE0LjVMOS41LDEzLjA5TDUsMTcuNTlWMTRIM1YyMUgxME0xNC41LDEwLjkxTDE5LDYuNDFWMTBIMjFWM0gxNFY1SDE3LjU5TDEzLjA5LDkuNUwxNC41LDEwLjkxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RXhwYW5kQWxsID0gXCJNOS41LDEzLjA5TDEwLjkxLDE0LjVMNi40MSwxOUgxMFYyMUgzVjE0SDVWMTcuNTlMOS41LDEzLjA5TTEwLjkxLDkuNUw5LjUsMTAuOTFMNSw2LjQxVjEwSDNWM0gxMFY1SDYuNDFMMTAuOTEsOS41TTE0LjUsMTMuMDlMMTksMTcuNTlWMTRIMjFWMjFIMTRWMTlIMTcuNTlMMTMuMDksMTQuNUwxNC41LDEzLjA5TTEzLjA5LDkuNUwxNy41OSw1SDE0VjNIMjFWMTBIMTlWNi40MUwxNC41LDEwLjkxTDEzLjA5LDkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0V4cGFuZERvd24gPSBcIk0yMiw0VjJIMlY0SDExVjE4LjE3TDUuNSwxMi42N0w0LjA4LDE0LjA4TDEyLDIyTDE5LjkyLDE0LjA4TDE4LjUsMTIuNjdMMTMsMTguMTdWNEgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0V4cGFuZEhvcml6b250YWwgPSBcIk05LDExSDE1VjhMMTksMTJMMTUsMTZWMTNIOVYxNkw1LDEyTDksOFYxMU0yLDIwVjRINFYyMEgyTTIwLDIwVjRIMjJWMjBIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dFeHBhbmRMZWZ0ID0gXCJNMjAsMjJIMjJWMkgyMFYxMUg1LjgzTDExLjMzLDUuNUw5LjkyLDQuMDhMMiwxMkw5LjkyLDE5LjkyTDExLjMzLDE4LjVMNS44MywxM0gyMFYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0V4cGFuZFJpZ2h0ID0gXCJNNCwySDJWMjJINFYxM0gxOC4xN0wxMi42NywxOC41TDE0LjA4LDE5LjkyTDIyLDEyTDE0LjA4LDQuMDhMMTIuNjcsNS41TDE4LjE3LDExSDRWMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0V4cGFuZFVwID0gXCJNMiwyMFYyMkgyMlYyMEgxM1Y1LjgzTDE4LjUsMTEuMzNMMTkuOTIsOS45MkwxMiwyTDQuMDgsOS45Mkw1LjUsMTEuMzNMMTEsNS44M1YyMEgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RXhwYW5kVmVydGljYWwgPSBcIk0xMyw5VjE1SDE2TDEyLDE5TDgsMTVIMTFWOUg4TDEyLDVMMTYsOUgxM000LDJIMjBWNEg0VjJNNCwyMEgyMFYyMkg0VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93SG9yaXpvbnRhbExvY2sgPSBcIk0xNC44IDdWNS41QzE0LjggNC4xIDEzLjQgMyAxMiAzUzkuMiA0LjEgOS4yIDUuNVY3QzguNiA3IDggNy42IDggOC4yVjExLjdDOCAxMi40IDguNiAxMyA5LjIgMTNIMTQuN0MxNS40IDEzIDE2IDEyLjQgMTYgMTEuOFY4LjNDMTYgNy42IDE1LjQgNyAxNC44IDdNMTMuNSA3SDEwLjVWNS41QzEwLjUgNC43IDExLjIgNC4yIDEyIDQuMlMxMy41IDQuNyAxMy41IDUuNVY3TTYgMTdWMjBMMiAxNkw2IDEyVjE1SDE4VjEyTDIyIDE2TDE4IDIwVjE3SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0ID0gXCJNMjAsMTFWMTNIOEwxMy41LDE4LjVMMTIuMDgsMTkuOTJMNC4xNiwxMkwxMi4wOCw0LjA4TDEzLjUsNS41TDgsMTFIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0Qm9sZCA9IFwiTTIwLDlWMTVIMTJWMTkuODRMNC4xNiwxMkwxMiw0LjE2VjlIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0Qm9sZEJveCA9IFwiTTIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1TTcsMTJMMTIsMTdWMTRIMTZWMTBIMTJWN0w3LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdEJvbGRCb3hPdXRsaW5lID0gXCJNNywxMkwxMiw3VjEwSDE2VjE0SDEyVjE3TDcsMTJNMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVNMTksNUg1VjE5SDE5VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0Qm9sZENpcmNsZSA9IFwiTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk03LDEyTDEyLDE3VjE0SDE2VjEwSDEyVjdMNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0xlZnRCb2xkQ2lyY2xlT3V0bGluZSA9IFwiTTcsMTJMMTIsN1YxMEgxNlYxNEgxMlYxN0w3LDEyTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdEJvbGRIZXhhZ29uT3V0bGluZSA9IFwiTTcsMTJMMTIsN1YxMEgxNlYxNEgxMlYxN0w3LDEyTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTEyLDQuMTVMNSw4LjA5VjE1LjkxTDEyLDE5Ljg1TDE5LDE1LjkxVjguMDlMMTIsNC4xNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0xlZnRCb2xkT3V0bGluZSA9IFwiTTEzLDIyTDMsMTJMMTMsMlY4SDIxVjE2SDEzVjIyTTYsMTJMMTEsMTdWMTRIMTlWMTBIMTFWN0w2LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdEJveCA9IFwiTTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUMzLDMuODkgMy45LDMgNSwzSDE5TTE4LDExSDkuNUwxMyw3LjVMMTEuNTgsNi4wOEw1LjY2LDEyTDExLjU4LDE3LjkyTDEzLDE2LjVMOS41LDEzSDE4VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdENpcmNsZSA9IFwiTTIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyTTE4LDExSDEwTDEzLjUsNy41TDEyLjA4LDYuMDhMNi4xNiwxMkwxMi4wOCwxNy45MkwxMy41LDE2LjVMMTAsMTNIMThWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0Q2lyY2xlT3V0bGluZSA9IFwiTTE4LDExVjEzSDEwTDEzLjUsMTYuNUwxMi4wOCwxNy45Mkw2LjE2LDEyTDEyLjA4LDYuMDhMMTMuNSw3LjVMMTAsMTFIMThNMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJNNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdERyb3BDaXJjbGUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTQsN0w5LDEyTDE0LDE3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0RHJvcENpcmNsZU91dGxpbmUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMCAxMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJNMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMk0xNCw3TDksMTJMMTQsMTdWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0xlZnRSaWdodCA9IFwiTTYuNDUsMTcuNDVMMSwxMkw2LjQ1LDYuNTVMNy44Niw3Ljk2TDQuODMsMTFIMTkuMTdMMTYuMTQsNy45NkwxNy41NSw2LjU1TDIzLDEyTDE3LjU1LDE3LjQ1TDE2LjE0LDE2LjA0TDE5LjE3LDEzSDQuODNMNy44NiwxNi4wNEw2LjQ1LDE3LjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdFJpZ2h0Qm9sZCA9IFwiTTgsMTRWMThMMiwxMkw4LDZWMTBIMTZWNkwyMiwxMkwxNiwxOFYxNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdFJpZ2h0Qm9sZE91dGxpbmUgPSBcIk0xNCwxNlYyMkwyNCwxMkwxNCwyVjhIMTBWMkwwLDEyTDEwLDIyVjE2SDE0TTgsMTRWMTdMMywxMkw4LDdWMTBIMTZWN0wyMSwxMkwxNiwxN1YxNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdFRoaWNrID0gXCJNMjAsMTBWMTRIMTFMMTQuNSwxNy41TDEyLjA4LDE5LjkyTDQuMTYsMTJMMTIuMDgsNC4wOEwxNC41LDYuNUwxMSwxMEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0xlZnRUaGluQ2lyY2xlT3V0bGluZSA9IFwiTTMuOTcgMTJDMy45NyAxNi40MSA3LjU5IDIwLjAzIDEyIDIwLjAzQzE2LjQxIDIwLjAzIDIwLjAzIDE2LjQxIDIwLjAzIDEyQzIwLjAzIDcuNTkgMTYuNDEgMy45NyAxMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMk0yIDEyQzIgNi40NiA2LjQ2IDIgMTIgMkMxNy41NCAyIDIyIDYuNDYgMjIgMTJDMjIgMTcuNTQgMTcuNTQgMjIgMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJNMTAuNDYgMTFWOEw2LjUgMTJMMTAuNDYgMTZWMTNIMTcuNVYxMVwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHQgPSBcIk00LDExVjEzSDE2TDEwLjUsMTguNUwxMS45MiwxOS45MkwxOS44NCwxMkwxMS45Miw0LjA4TDEwLjUsNS41TDE2LDExSDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dSaWdodEJvbGQgPSBcIk00LDE1VjlIMTJWNC4xNkwxOS44NCwxMkwxMiwxOS44NFYxNUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb2xkQm94ID0gXCJNMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlNMTcsMTJMMTIsN1YxMEg4VjE0SDEyVjE3TDE3LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb2xkQm94T3V0bGluZSA9IFwiTTE3LDEyTDEyLDE3VjE0SDhWMTBIMTJWN0wxNywxMk0zLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOU01LDE5SDE5VjVINVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1JpZ2h0Qm9sZENpcmNsZSA9IFwiTTIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyTTE3LDEyTDEyLDdWMTBIOFYxNEgxMlYxN0wxNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1JpZ2h0Qm9sZENpcmNsZU91dGxpbmUgPSBcIk0xNywxMkwxMiwxN1YxNEg4VjEwSDEyVjdMMTcsMTJNMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJNNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb2xkSGV4YWdvbk91dGxpbmUgPSBcIk0xNywxMkwxMiwxN1YxNEg4VjEwSDEyVjdMMTcsMTJNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsNC4xNUw1LDguMDlWMTUuOTFMMTIsMTkuODVMMTksMTUuOTFWOC4wOUwxMiw0LjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb2xkT3V0bGluZSA9IFwiTTExLDE2SDNWOEgxMVYyTDIxLDEyTDExLDIyVjE2TTEzLDdWMTBINVYxNEgxM1YxN0wxOCwxMkwxMyw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb3ggPSBcIk01LDIxQTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUMyMSwyMC4xMSAyMC4xLDIxIDE5LDIxSDVNNiwxM0gxNC41TDExLDE2LjVMMTIuNDIsMTcuOTJMMTguMzQsMTJMMTIuNDIsNi4wOEwxMSw3LjVMMTQuNSwxMUg2VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRDaXJjbGUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNNiwxM0gxNEwxMC41LDE2LjVMMTEuOTIsMTcuOTJMMTcuODQsMTJMMTEuOTIsNi4wOEwxMC41LDcuNUwxNCwxMUg2VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRDaXJjbGVPdXRsaW5lID0gXCJNNiwxM1YxMUgxNEwxMC41LDcuNUwxMS45Miw2LjA4TDE3Ljg0LDEyTDExLjkyLDE3LjkyTDEwLjUsMTYuNUwxNCwxM0g2TTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHREcm9wQ2lyY2xlID0gXCJNMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJNMTAsMTdMMTUsMTJMMTAsN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1JpZ2h0RHJvcENpcmNsZU91dGxpbmUgPSBcIk0yLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJBMTAsMTAgMCAwLDAgMiwxMk00LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBBOCw4IDAgMCwxIDQsMTJNMTAsMTdMMTUsMTJMMTAsN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1JpZ2h0VGhpY2sgPSBcIk00LDEwVjE0SDEzTDkuNSwxNy41TDExLjkyLDE5LjkyTDE5Ljg0LDEyTDExLjkyLDQuMDhMOS41LDYuNUwxMywxMEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRUaGluQ2lyY2xlT3V0bGluZSA9IFwiTTIwLjAzIDEyQzIwLjAzIDcuNTkgMTYuNDEgMy45NyAxMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMkMzLjk3IDE2LjQxIDcuNTkgMjAuMDMgMTIgMjAuMDNDMTYuNDEgMjAuMDMgMjAuMDMgMTYuNDEgMjAuMDMgMTJNMjIgMTJDMjIgMTcuNTQgMTcuNTQgMjIgMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJDMiA2LjQ2IDYuNDYgMiAxMiAyQzE3LjU0IDIgMjIgNi40NiAyMiAxMk0xMy41NCAxM1YxNkwxNy41IDEyTDEzLjU0IDhWMTFINi41VjEzXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dTcGxpdEhvcml6b250YWwgPSBcIk04LDE4SDExVjE1SDJWMTNIMjJWMTVIMTNWMThIMTZMMTIsMjJMOCwxOE0xMiwyTDgsNkgxMVY5SDJWMTFIMjJWOUgxM1Y2SDE2TDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dTcGxpdFZlcnRpY2FsID0gXCJNMTgsMTZWMTNIMTVWMjJIMTNWMkgxNVYxMUgxOFY4TDIyLDEyTDE4LDE2TTIsMTJMNiwxNlYxM0g5VjIySDExVjJIOVYxMUg2VjhMMiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcExlZnQgPSBcIk0xOSwxNy41OUwxNy41OSwxOUw3LDguNDFWMTVINVY1SDE1VjdIOC40MUwxOSwxNy41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcExlZnRCb2xkT3V0bGluZSA9IFwiTTE0LjEyLDguNDZMMTkuNzgsMTQuMTJMMTQuMTIsMTkuNzhMOC40NiwxNC4xMkw0LjIyLDE4LjM2VjQuMjJIMTguMzZMMTQuMTIsOC40Nk02LjM0LDEzLjQxTDguNDYsMTEuMjlMMTQuMTIsMTYuOTVMMTYuOTUsMTQuMTJMMTEuMjksOC40N0wxMy40MSw2LjM0SDYuMzRWMTMuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dUb3BMZWZ0Qm90dG9tUmlnaHQgPSBcIk0xMywyMUgyMVYxM0gxOVYxNy41OUw2LjQxLDVIMTFWM0gzVjExSDVWNi40MUwxNy41OSwxOUgxM1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcExlZnRCb3R0b21SaWdodEJvbGQgPSBcIk01LjgzLDguNjZMMywxMS41VjNIMTEuNUw4LjY2LDUuODNMMTguMTcsMTUuMzRMMjEsMTIuNVYyMUgxMi41TDE1LjM0LDE4LjE3TDUuODMsOC42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcExlZnRUaGljayA9IFwiTTkuMTIsMTEuOTRWMTYuODlINS42OVY1LjY5SDE2Ljg5VjkuMTJIMTEuOTRMMTguMzEsMTUuNUwxNS41LDE4LjMxTDkuMTIsMTEuOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dUb3BMZWZ0VGhpbkNpcmNsZU91dGxpbmUgPSBcIk0xMiAzLjk3QzE2LjQxIDMuOTcgMjAuMDMgNy41OSAyMC4wMyAxMkMyMC4wMyAxNi40MSAxNi40MSAyMC4wMyAxMiAyMC4wM0M3LjU5IDIwLjAzIDMuOTcgMTYuNDEgMy45NyAxMkMzLjk3IDcuNTkgNy41OSAzLjk3IDEyIDMuOTdNMTIgMkM2LjQ2IDIgMiA2LjQ2IDIgMTJDMiAxNy41NCA2LjQ2IDIyIDEyIDIyQzE3LjU0IDIyIDIyIDE3LjU0IDIyIDEyQzIyIDYuNDYgMTcuNTQgMiAxMiAyTTEwLjEyIDExLjUzTDggMTMuNjRWOEgxMy42NEwxMS41MyAxMC4xMkwxNi41IDE1LjFMMTUuMSAxNi41XCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dUb3BSaWdodCA9IFwiTTUsMTcuNTlMMTUuNTksN0g5VjVIMTlWMTVIMTdWOC40MUw2LjQxLDE5TDUsMTcuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dUb3BSaWdodEJvbGRPdXRsaW5lID0gXCJNNS42NCw0LjIySDE5Ljc4VjE4LjM2TDE1LjU0LDE0LjEyTDkuODgsMTkuNzhMNC4yMiwxNC4xMkw5Ljg4LDguNDZMNS42NCw0LjIyTTE3LjY2LDYuMzRIMTAuNTlMMTIuNzEsOC40Nkw3LjA1LDE0LjEyTDkuODgsMTYuOTVMMTUuNTQsMTEuMjlMMTcuNjYsMTMuNDFWNi4zNEgxNy42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcFJpZ2h0Qm90dG9tTGVmdCA9IFwiTTExLDIxSDNWMTNINVYxNy41OUwxNy41OSw1SDEzVjNIMjFWMTFIMTlWNi40MUw2LjQxLDE5SDExVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VG9wUmlnaHRCb3R0b21MZWZ0Qm9sZCA9IFwiTTE4LjE3LDguNjZMMjEsMTEuNVYzSDEyLjVMMTUuMzQsNS44M0w1LjgzLDE1LjM0TDMsMTIuNVYyMUgxMS41TDguNjYsMTguMTdMMTguMTcsOC42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcFJpZ2h0VGhpY2sgPSBcIk04LjUsMTguMzFMNS42OSwxNS41TDEyLjA2LDkuMTJINy4xMVY1LjY5SDE4LjMxVjE2Ljg5SDE0Ljg5VjExLjk0TDguNSwxOC4zMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcFJpZ2h0VGhpbkNpcmNsZU91dGxpbmUgPSBcIk0xMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMkMzLjk3IDE2LjQxIDcuNTkgMjAuMDMgMTIgMjAuMDNDMTYuNDEgMjAuMDMgMjAuMDMgMTYuNDEgMjAuMDMgMTJDMjAuMDMgNy41OSAxNi40MSAzLjk3IDEyIDMuOTdNMTIgMkMxNy41NCAyIDIyIDYuNDYgMjIgMTJDMjIgMTcuNTQgMTcuNTQgMjIgMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJDMiA2LjQ2IDYuNDYgMiAxMiAyTTEzLjg4IDExLjUzTDE2IDEzLjY0VjhIMTAuMzZMMTIuNDcgMTAuMTJMNy41IDE1LjFMOC45IDE2LjVcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwID0gXCJNMTMsMjBIMTFWOEw1LjUsMTMuNUw0LjA4LDEyLjA4TDEyLDQuMTZMMTkuOTIsMTIuMDhMMTguNSwxMy41TDEzLDhWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcEJvbGQgPSBcIk0xNSwyMEg5VjEySDQuMTZMMTIsNC4xNkwxOS44NCwxMkgxNVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwQm9sZEJveCA9IFwiTTE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMU0xMiw3TDcsMTJIMTBWMTZIMTRWMTJIMTdMMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwQm9sZEJveE91dGxpbmUgPSBcIk0xMiw3TDE3LDEySDE0VjE2SDEwVjEySDdMMTIsN00xOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFNMTksMTlWNUg1VjE5SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBCb2xkQ2lyY2xlID0gXCJNMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyTTEyLDdMNywxMkgxMFYxNkgxNFYxMkgxN0wxMiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBCb2xkQ2lyY2xlT3V0bGluZSA9IFwiTTEyLDdMMTcsMTJIMTRWMTZIMTBWMTJIN0wxMiw3TTEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMk0xMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBCb2xkSGV4YWdvbk91dGxpbmUgPSBcIk0xMiw3TDE3LDEySDE0VjE2SDEwVjEySDdMMTIsN00yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcEJvbGRPdXRsaW5lID0gXCJNMTYsMTNWMjFIOFYxM0gyTDEyLDNMMjIsMTNIMTZNNywxMUgxMFYxOUgxNFYxMUgxN0wxMiw2TDcsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcEJveCA9IFwiTTIxLDE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUMyMC4xMSwzIDIxLDMuOSAyMSw1VjE5TTEzLDE4VjkuNUwxNi41LDEzTDE3LjkyLDExLjU4TDEyLDUuNjZMNi4wOCwxMS41OEw3LjUsMTNMMTEsOS41VjE4SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBDaXJjbGUgPSBcIk0xMywxOFYxMEwxNi41LDEzLjVMMTcuOTIsMTIuMDhMMTIsNi4xNkw2LjA4LDEyLjA4TDcuNSwxMy41TDExLDEwVjE4SDEzTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBDaXJjbGVPdXRsaW5lID0gXCJNMTMsMThIMTFWMTBMNy41LDEzLjVMNi4wOCwxMi4wOEwxMiw2LjE2TDE3LjkyLDEyLjA4TDE2LjUsMTMuNUwxMywxMFYxOE0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcERvd24gPSBcIk0xNy40NSwxNy41NUwxMiwyM0w2LjU1LDE3LjU1TDcuOTYsMTYuMTRMMTEsMTkuMTdWNC44M0w3Ljk2LDcuODZMNi41NSw2LjQ1TDEyLDFMMTcuNDUsNi40NUwxNi4wNCw3Ljg2TDEzLDQuODNWMTkuMTdMMTYuMDQsMTYuMTRMMTcuNDUsMTcuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcERvd25Cb2xkID0gXCJNMTAsOEg2TDEyLDJMMTgsOEgxNFYxNkgxOEwxMiwyMkw2LDE2SDEwVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcERvd25Cb2xkT3V0bGluZSA9IFwiTTE2LDEwSDIyTDEyLDBMMiwxMEg4VjE0SDJMMTIsMjRMMjIsMTRIMTZWMTBNMTQsMTZIMTdMMTIsMjFMNywxNkgxMFY4SDdMMTIsM0wxNyw4SDE0VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBEcm9wQ2lyY2xlID0gXCJNMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyTTE3LDE0TDEyLDlMNywxNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwRHJvcENpcmNsZU91dGxpbmUgPSBcIk0xMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xNywxNEwxMiw5TDcsMTRIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcFRoaWNrID0gXCJNMTQsMjBIMTBWMTFMNi41LDE0LjVMNC4wOCwxMi4wOEwxMiw0LjE2TDE5LjkyLDEyLjA4TDE3LjUsMTQuNUwxNCwxMVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwVGhpbkNpcmNsZU91dGxpbmUgPSBcIk0xMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMkMzLjk3IDE2LjQxIDcuNTkgMjAuMDMgMTIgMjAuMDNDMTYuNDEgMjAuMDMgMjAuMDMgMTYuNDEgMjAuMDMgMTJDMjAuMDMgNy41OSAxNi40MSAzLjk3IDEyIDMuOTdNMTIgMkMxNy41NCAyIDIyIDYuNDYgMjIgMTJDMjIgMTcuNTQgMTcuNTQgMjIgMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJDMiA2LjQ2IDYuNDYgMiAxMiAyTTEzIDEwLjQ2SDE2TDEyIDYuNUw4IDEwLjQ2SDExVjE3LjVIMTNcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1ZlcnRpY2FsTG9jayA9IFwiTTE4LjggMTFWOS41QzE4LjggOC4xIDE3LjQgNyAxNiA3UzEzLjIgOC4xIDEzLjIgOS41VjExQzEyLjYgMTEgMTIgMTEuNiAxMiAxMi4yVjE1LjdDMTIgMTYuNCAxMi42IDE3IDEzLjIgMTdIMTguN0MxOS40IDE3IDIwIDE2LjQgMjAgMTUuOFYxMi4zQzIwIDExLjYgMTkuNCAxMSAxOC44IDExTTE3LjUgMTFIMTQuNVY5LjVDMTQuNSA4LjcgMTUuMiA4LjIgMTYgOC4yQzE2LjggOC4yIDE3LjUgOC43IDE3LjUgOS41VjExTTkgNkgxMkw4IDJMNCA2SDdWMThINEw4IDIyTDEyIDE4SDlWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnRzdGF0aW9uID0gXCJNMS43NywxNi44OEwzLjUsMTkuODZDMy44NCwyMC41NCA0LjU0LDIxIDUuMzMsMjFIMTYuNzlMMTQuNDMsMTYuODhIMS43N00yMi4yMywxNi45QzIyLjIzLDE2LjUgMjIuMTEsMTYuMTEgMjEuOSwxNS43OEwxNS4xNyw0LjFDMTQuODIsMy40NCAxNC4xNSwzIDEzLjM1LDNIOS44TDIwLjE4LDIxTDIxLjgyLDE4LjE0QzIyLjEzLDE3LjYgMjIuMjMsMTcuMzYgMjIuMjMsMTYuOU0xMi43MywxMy45NEw4LjEsNS45MkwzLjQ1LDEzLjk0SDEyLjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFzcGVjdFJhdGlvID0gXCJNMTksMTJIMTdWMTVIMTRWMTdIMTlWMTJNNyw5SDEwVjdINVYxMkg3VjlNMjEsM0gzQTIsMiAwIDAsMCAxLDVWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjVBMiwyIDAgMCwwIDIxLDNNMjEsMTlIM1Y1SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFzc2lzdGFudCA9IFwiTTE5LDJINUEyLDIgMCAwLDAgMyw0VjE4QTIsMiAwIDAsMCA1LDIwSDlMMTIsMjNMMTUsMjBIMTlBMiwyIDAgMCwwIDIxLDE4VjRBMiwyIDAgMCwwIDE5LDJNMTMuODgsMTIuODhMMTIsMTdMMTAuMTIsMTIuODhMNiwxMUwxMC4xMiw5LjEyTDEyLDVMMTMuODgsOS4xMkwxOCwxMVwiO1xyXG5leHBvcnQgdmFyIG1kaUFzdGVyaXNrID0gXCJNMTAsMkgxNEwxMy4yMSw5LjkxTDE5LjY2LDUuMjdMMjEuNjYsOC43M0wxNC40MiwxMkwyMS42NiwxNS4yN0wxOS42NiwxOC43M0wxMy4yMSwxNC4wOUwxNCwyMkgxMEwxMC43OSwxNC4wOUw0LjM0LDE4LjczTDIuMzQsMTUuMjdMOS41OCwxMkwyLjM0LDguNzNMNC4zNCw1LjI3TDEwLjc5LDkuOTFMMTAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBdCA9IFwiTTEyLDE1QzEyLjgxLDE1IDEzLjUsMTQuNyAxNC4xMSwxNC4xMUMxNC43LDEzLjUgMTUsMTIuODEgMTUsMTJDMTUsMTEuMTkgMTQuNywxMC41IDE0LjExLDkuODlDMTMuNSw5LjMgMTIuODEsOSAxMiw5QzExLjE5LDkgMTAuNSw5LjMgOS44OSw5Ljg5QzkuMywxMC41IDksMTEuMTkgOSwxMkM5LDEyLjgxIDkuMywxMy41IDkuODksMTQuMTFDMTAuNSwxNC43IDExLjE5LDE1IDEyLDE1TTEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMlYxMy40NUMyMiwxNC40NSAyMS42NSwxNS4zIDIxLDE2QzIwLjMsMTYuNjcgMTkuNSwxNyAxOC41LDE3QzE3LjMsMTcgMTYuMzEsMTYuNSAxNS41NiwxNS41QzE0LjU2LDE2LjUgMTMuMzgsMTcgMTIsMTdDMTAuNjMsMTcgOS40NSwxNi41IDguNDYsMTUuNTRDNy41LDE0LjU1IDcsMTMuMzggNywxMkM3LDEwLjYzIDcuNSw5LjQ1IDguNDYsOC40NkM5LjQ1LDcuNSAxMC42Myw3IDEyLDdDMTMuMzgsNyAxNC41NSw3LjUgMTUuNTQsOC40NkMxNi41LDkuNDUgMTcsMTAuNjMgMTcsMTJWMTMuNDVDMTcsMTMuODYgMTcuMTYsMTQuMjIgMTcuNDYsMTQuNTNDMTcuNzYsMTQuODQgMTguMTEsMTUgMTguNSwxNUMxOC45MiwxNSAxOS4yNywxNC44NCAxOS41NywxNC41M0MxOS44NywxNC4yMiAyMCwxMy44NiAyMCwxMy40NVYxMkMyMCw5LjgxIDE5LjIzLDcuOTMgMTcuNjUsNi4zNUMxNi4wNyw0Ljc3IDE0LjE5LDQgMTIsNEM5LjgxLDQgNy45Myw0Ljc3IDYuMzUsNi4zNUM0Ljc3LDcuOTMgNCw5LjgxIDQsMTJDNCwxNC4xOSA0Ljc3LDE2LjA3IDYuMzUsMTcuNjVDNy45MywxOS4yMyA5LjgxLDIwIDEyLDIwSDE3VjIySDEyQzkuMjUsMjIgNi45LDIxIDQuOTUsMTkuMDVDMywxNy4xIDIsMTQuNzUgMiwxMkMyLDkuMjUgMyw2LjkgNC45NSw0Ljk1QzYuOSwzIDkuMjUsMiAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUF0bGFzc2lhbiA9IFwiTTcuOTMsMTEuMjRDNy43NCwxMSA3LjM4LDEwLjk0IDcuMTMsMTEuMTNDNy4wNiwxMS4xOSA3LDExLjI2IDYuOTYsMTEuMzRMMi4wNiwyMS4xNUMxLjkxLDIxLjQ0IDIuMDMsMjEuNzkgMi4zMiwyMS45NEMyLjQsMjIgMi41LDIyIDIuNTksMjJIOS40MUM5LjYzLDIyIDkuODQsMjEuODggOS45NCwyMS42OEMxMS40MSwxOC42MyAxMC41LDE0IDcuOTMsMTEuMjRNMTEuNTMsMi4zMUM5LjA1LDYuMTQgOC43NiwxMSAxMC43NywxNS4wOUwxNC4wNiwyMS42OEMxNC4xNywyMS44OCAxNC4zNywyMiAxNC41OSwyMkgyMS40MUEwLjU5LDAuNTkgMCAwLDAgMjIsMjEuNDFDMjIsMjEuMzIgMjIsMjEuMjMgMjEuOTQsMjEuMTVDMjEuOTQsMjEuMTUgMTIuNzYsMi43NyAxMi41LDIuMzFDMTIuMzksMi4wNCAxMi4wNiwxLjkyIDExLjc4LDIuMDZDMTEuNjcsMi4xMSAxMS41OCwyLjIgMTEuNTMsMi4zMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBdG0gPSBcIk04LDlWMTAuNUgxMC4yNVYxNUgxMS43NVYxMC41SDE0VjlIOE02LDlIM0ExLDEgMCAwLDAgMiwxMFYxNUgzLjVWMTMuNUg1LjVWMTVIN1YxMEExLDEgMCAwLDAgNiw5TTUuNSwxMkgzLjVWMTAuNUg1LjVWMTJNMjEsOUgxNi41QTEsMSAwIDAsMCAxNS41LDEwVjE1SDE3VjEwLjVIMThWMTRIMTkuNVYxMC41SDIwLjVWMTVIMjJWMTBBMSwxIDAgMCwwIDIxLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXRvbSA9IFwiTTEyLDExQTEsMSAwIDAsMSAxMywxMkExLDEgMCAwLDEgMTIsMTNBMSwxIDAgMCwxIDExLDEyQTEsMSAwIDAsMSAxMiwxMU00LjIyLDQuMjJDNS42NSwyLjc5IDguNzUsMy40MyAxMiw1LjU2QzE1LjI1LDMuNDMgMTguMzUsMi43OSAxOS43OCw0LjIyQzIxLjIxLDUuNjUgMjAuNTcsOC43NSAxOC40NCwxMkMyMC41NywxNS4yNSAyMS4yMSwxOC4zNSAxOS43OCwxOS43OEMxOC4zNSwyMS4yMSAxNS4yNSwyMC41NyAxMiwxOC40NEM4Ljc1LDIwLjU3IDUuNjUsMjEuMjEgNC4yMiwxOS43OEMyLjc5LDE4LjM1IDMuNDMsMTUuMjUgNS41NiwxMkMzLjQzLDguNzUgMi43OSw1LjY1IDQuMjIsNC4yMk0xNS41NCw4LjQ2QzE2LjE1LDkuMDggMTYuNzEsOS43MSAxNy4yMywxMC4zNEMxOC42MSw4LjIxIDE5LjExLDYuMzggMTguMzYsNS42NEMxNy42Miw0Ljg5IDE1Ljc5LDUuMzkgMTMuNjYsNi43N0MxNC4yOSw3LjI5IDE0LjkyLDcuODUgMTUuNTQsOC40Nk04LjQ2LDE1LjU0QzcuODUsMTQuOTIgNy4yOSwxNC4yOSA2Ljc3LDEzLjY2QzUuMzksMTUuNzkgNC44OSwxNy42MiA1LjY0LDE4LjM2QzYuMzgsMTkuMTEgOC4yMSwxOC42MSAxMC4zNCwxNy4yM0M5LjcxLDE2LjcxIDkuMDgsMTYuMTUgOC40NiwxNS41NE01LjY0LDUuNjRDNC44OSw2LjM4IDUuMzksOC4yMSA2Ljc3LDEwLjM0QzcuMjksOS43MSA3Ljg1LDkuMDggOC40Niw4LjQ2QzkuMDgsNy44NSA5LjcxLDcuMjkgMTAuMzQsNi43N0M4LjIxLDUuMzkgNi4zOCw0Ljg5IDUuNjQsNS42NE05Ljg4LDE0LjEyQzEwLjU4LDE0LjgyIDExLjMsMTUuNDYgMTIsMTYuMDNDMTIuNywxNS40NiAxMy40MiwxNC44MiAxNC4xMiwxNC4xMkMxNC44MiwxMy40MiAxNS40NiwxMi43IDE2LjAzLDEyQzE1LjQ2LDExLjMgMTQuODIsMTAuNTggMTQuMTIsOS44OEMxMy40Miw5LjE4IDEyLjcsOC41NCAxMiw3Ljk3QzExLjMsOC41NCAxMC41OCw5LjE4IDkuODgsOS44OEM5LjE4LDEwLjU4IDguNTQsMTEuMyA3Ljk3LDEyQzguNTQsMTIuNyA5LjE4LDEzLjQyIDkuODgsMTQuMTJNMTguMzYsMTguMzZDMTkuMTEsMTcuNjIgMTguNjEsMTUuNzkgMTcuMjMsMTMuNjZDMTYuNzEsMTQuMjkgMTYuMTUsMTQuOTIgMTUuNTQsMTUuNTRDMTQuOTIsMTYuMTUgMTQuMjksMTYuNzEgMTMuNjYsMTcuMjNDMTUuNzksMTguNjEgMTcuNjIsMTkuMTEgMTguMzYsMTguMzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXRvbVZhcmlhbnQgPSBcIk0xOC4zNiwyLjY0QzIwLDIuNjQgMjEuMzYsNCAyMS4zNiw1LjY0QzIxLjM2LDcuMjkgMjAsOC42NCAxOC4zNiw4LjY0QzE2LjcxLDguNjQgMTUuMzYsNy4yOSAxNS4zNiw1LjY0QzE1LjM2LDUuMzQgMTUuNDEsNS4wNiAxNS41LDQuOEMxNC40Myw0LjI5IDEzLjI1LDQgMTIsNEE4LDggMCAwLDAgNCwxMkw0LjA0LDEyLjg0TDIuMDUsMTMuMDVMMiwxMkExMCwxMCAwIDAsMSAxMiwyQzEzLjY5LDIgMTUuMjgsMi40MiAxNi42NywzLjE2QzE3LjE2LDIuODMgMTcuNzQsMi42NCAxOC4zNiwyLjY0TTE4LjM2LDQuNjRBMSwxIDAgMCwwIDE3LjM2LDUuNjRBMSwxIDAgMCwwIDE4LjM2LDYuNjRDMTguOTIsNi42NCAxOS4zNiw2LjE5IDE5LjM2LDUuNjRDMTkuMzYsNS4wOCAxOC45Miw0LjY0IDE4LjM2LDQuNjRNNS42NCwxNS4zNkM3LjI5LDE1LjM2IDguNjQsMTYuNzEgOC42NCwxOC4zNkM4LjY0LDE4LjY2IDguNTksMTguOTQgOC41LDE5LjJDOS41NywxOS43MSAxMC43NSwyMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJMMTkuOTYsMTEuMTZMMjEuOTUsMTAuOTVMMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJDMTAuMzEsMjIgOC43MiwyMS41OCA3LjMzLDIwLjg0QzYuODQsMjEuMTcgNi4yNiwyMS4zNiA1LjY0LDIxLjM2QzQsMjEuMzYgMi42NCwyMCAyLjY0LDE4LjM2QzIuNjQsMTYuNzEgNCwxNS4zNiA1LjY0LDE1LjM2TTUuNjQsMTcuMzZDNS4wOCwxNy4zNiA0LjY0LDE3LjgxIDQuNjQsMTguMzZDNC42NCwxOC45MiA1LjA4LDE5LjM2IDUuNjQsMTkuMzZBMSwxIDAgMCwwIDYuNjQsMTguMzZBMSwxIDAgMCwwIDUuNjQsMTcuMzZNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF0dGFjaG1lbnQgPSBcIk03LjUsMThBNS41LDUuNSAwIDAsMSAyLDEyLjVBNS41LDUuNSAwIDAsMSA3LjUsN0gxOEE0LDQgMCAwLDEgMjIsMTFBNCw0IDAgMCwxIDE4LDE1SDkuNUEyLjUsMi41IDAgMCwxIDcsMTIuNUEyLjUsMi41IDAgMCwxIDkuNSwxMEgxN1YxMS41SDkuNUExLDEgMCAwLDAgOC41LDEyLjVBMSwxIDAgMCwwIDkuNSwxMy41SDE4QTIuNSwyLjUgMCAwLDAgMjAuNSwxMUEyLjUsMi41IDAgMCwwIDE4LDguNUg3LjVBNCw0IDAgMCwwIDMuNSwxMi41QTQsNCAwIDAsMCA3LjUsMTYuNUgxN1YxOEg3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXVkaW9WaWRlbyA9IFwiTTIwLDdINEEyLDIgMCAwLDAgMiw5VjE1QTIsMiAwIDAsMCA0LDE3SDVWMThDNSwxOC42IDUuNCwxOSA2LDE5SDhDOC42LDE5IDksMTguNiA5LDE4VjE3SDE1VjE4QzE1LDE4LjYgMTUuNCwxOSAxNiwxOUgxOEMxOC42LDE5IDE5LDE4LjYgMTksMThWMTdIMjBBMiwyIDAgMCwwIDIyLDE1VjlBMiwyIDAgMCwwIDIwLDdNMTQsMTJINFYxMEgxNFYxMk0xOCwxM0EyLDIgMCAwLDEgMTYsMTFBMiwyIDAgMCwxIDE4LDlBMiwyIDAgMCwxIDIwLDExQTIsMiAwIDAsMSAxOCwxM002LDE1SDRWMTRINlYxNU0xMCwxNUg4VjE0SDEwVjE1TTE0LDE1SDEyVjE0SDE0VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF1ZGlvVmlkZW9PZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w1LjEgN0g0QzIuOSA3IDIgNy45IDIgOVYxNUMyIDE2LjEgMi45IDE3IDQgMTdINVYxOEM1IDE4LjYgNS40IDE5IDYgMTlIOEM4LjYgMTkgOSAxOC42IDkgMThWMTdIMTVWMThDMTUgMTguNiAxNS40IDE5IDE2IDE5SDE3LjFMMjAuOCAyMi43TDIyLjEgMjEuNU02IDE1SDRWMTRINlYxNU00IDEyVjEwSDguMUwxMC4xIDEySDRNMTAgMTVIOFYxNEgxMFYxNU0xMiAxNVYxNEgxMi4xTDEzLjEgMTVIMTJNMTQgMTBWMTAuOEwyMC4yIDE3QzIxLjIgMTYuOSAyMiAxNi4xIDIyIDE1VjlDMjIgNy45IDIxLjEgNyAyMCA3SDEwLjJMMTMuMiAxMEgxNE0xOCA5QzE5LjEgOSAyMCA5LjkgMjAgMTFTMTkuMSAxMyAxOCAxMyAxNiAxMi4xIDE2IDExIDE2LjkgOSAxOCA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF1Z21lbnRlZFJlYWxpdHkgPSBcIk01LDNDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM0g1TTcsOUgxMEMxMC42LDkgMTEsOS41IDExLDEwVjE1SDkuNVYxMy41SDcuNVYxNUg2VjEwQzYsOS41IDYuNCw5IDcsOU0xMyw5SDE2LjVDMTcuMzUsOSAxOCw5LjY1IDE4LDEwLjVWMTEuNUMxOCwxMi4xIDE3LjYsMTIuNjUgMTcuMSwxMi45TDE4LDE1SDE2LjVMMTUuNjUsMTNIMTQuNVYxNUgxM1Y5TTcuNSwxMC41VjEySDkuNVYxMC41SDcuNU0xNC41LDEwLjVWMTEuNUgxNi41VjEwLjVIMTQuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUF1dG9Eb3dubG9hZCA9IFwiTTIyIDE3VjE5SDExVjE3SDIyTTE5IDQuNVY5LjVIMjJMMTYuNSAxNUwxMSA5LjVIMTRWNC41SDE5TTEwLjcgMTVIOC44TDguMSAxM0g0LjlMNC4yIDE1SDIuM0w1LjUgNkg3LjVMMTAuNyAxNU03LjY1IDExLjY1TDYuNSA4TDUuMzUgMTEuNjVINy42NVpcIjtcclxuZXhwb3J0IHZhciBtZGlBdXRvRml4ID0gXCJNNy41LDUuNkw1LDdMNi40LDQuNUw1LDJMNy41LDMuNEwxMCwyTDguNiw0LjVMMTAsN0w3LjUsNS42TTE5LjUsMTUuNEwyMiwxNEwyMC42LDE2LjVMMjIsMTlMMTkuNSwxNy42TDE3LDE5TDE4LjQsMTYuNUwxNywxNEwxOS41LDE1LjRNMjIsMkwyMC42LDQuNUwyMiw3TDE5LjUsNS42TDE3LDdMMTguNCw0LjVMMTcsMkwxOS41LDMuNEwyMiwyTTEzLjM0LDEyLjc4TDE1Ljc4LDEwLjM0TDEzLjY2LDguMjJMMTEuMjIsMTAuNjZMMTMuMzQsMTIuNzhNMTQuMzcsNy4yOUwxNi43MSw5LjYzQzE3LjEsMTAgMTcuMSwxMC42NSAxNi43MSwxMS4wNEw1LjA0LDIyLjcxQzQuNjUsMjMuMSA0LDIzLjEgMy42MywyMi43MUwxLjI5LDIwLjM3QzAuOSwyMCAwLjksMTkuMzUgMS4yOSwxOC45NkwxMi45Niw3LjI5QzEzLjM1LDYuOSAxNCw2LjkgMTQuMzcsNy4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBdXRvVXBsb2FkID0gXCJNNS4zNSwxMi42NUw2LjUsOUw3LjY1LDEyLjY1TTUuNSw3TDIuMywxNkg0LjJMNC45LDE0SDguMUw4LjgsMTZIMTAuN0w3LjUsN00xMSwyMEgyMlYxOEgxMU0xNCwxNkgxOVYxMUgyMkwxNi41LDUuNUwxMSwxMUgxNFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBdXRvcmVuZXcgPSBcIk0xMiw2VjlMMTYsNUwxMiwxVjRBOCw4IDAgMCwwIDQsMTJDNCwxMy41NyA0LjQ2LDE1LjAzIDUuMjQsMTYuMjZMNi43LDE0LjhDNi4yNSwxMy45NyA2LDEzIDYsMTJBNiw2IDAgMCwxIDEyLDZNMTguNzYsNy43NEwxNy4zLDkuMkMxNy43NCwxMC4wNCAxOCwxMSAxOCwxMkE2LDYgMCAwLDEgMTIsMThWMTVMOCwxOUwxMiwyM1YyMEE4LDggMCAwLDAgMjAsMTJDMjAsMTAuNDMgMTkuNTQsOC45NyAxOC43Niw3Ljc0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF2VGltZXIgPSBcIk0xMSwxN0ExLDEgMCAwLDAgMTIsMThBMSwxIDAgMCwwIDEzLDE3QTEsMSAwIDAsMCAxMiwxNkExLDEgMCAwLDAgMTEsMTdNMTEsM1Y3SDEzVjUuMDhDMTYuMzksNS41NyAxOSw4LjQ3IDE5LDEyQTcsNyAwIDAsMSAxMiwxOUE3LDcgMCAwLDEgNSwxMkM1LDEwLjMyIDUuNTksOC43OCA2LjU4LDcuNThMMTIsMTNMMTMuNDEsMTEuNTlMNi42MSw0Ljc5VjQuODFDNC40Miw2LjQ1IDMsOS4wNSAzLDEyQTksOSAwIDAsMCAxMiwyMUE5LDkgMCAwLDAgMjEsMTJBOSw5IDAgMCwwIDEyLDNNMTgsMTJBMSwxIDAgMCwwIDE3LDExQTEsMSAwIDAsMCAxNiwxMkExLDEgMCAwLDAgMTcsMTNBMSwxIDAgMCwwIDE4LDEyTTYsMTJBMSwxIDAgMCwwIDcsMTNBMSwxIDAgMCwwIDgsMTJBMSwxIDAgMCwwIDcsMTFBMSwxIDAgMCwwIDYsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXdzID0gXCJNNy42NCwxMC4zOEM3LjY0LDEwLjYzIDcuNjYsMTAuODMgNy43MSwxMUM3Ljc2LDExLjEyIDcuODMsMTEuMjggNy45MiwxMS40NkM3Ljk2LDExLjUgNy45NywxMS41NiA3Ljk3LDExLjYxQzcuOTcsMTEuNjggNy45MywxMS43NCA3Ljg0LDExLjgxTDcuNDIsMTIuMDlDNy4zNiwxMi4xMyA3LjMsMTIuMTUgNy4yNSwxMi4xNUM3LjE4LDEyLjE1IDcuMTIsMTIuMTEgNy4wNSwxMi4wNUM2Ljk2LDExLjk1IDYuODgsMTEuODUgNi44MSwxMS43NEM2Ljc1LDExLjYzIDYuNjgsMTEuNSA2LjYxLDExLjM1QzYuMDksMTEuOTYgNS40NCwxMi4yNyA0LjY1LDEyLjI3QzQuMDksMTIuMjcgMy42NSwxMi4xMSAzLjMyLDExLjc5QzMsMTEuNDcgMi44MywxMS4wNCAyLjgzLDEwLjVDMi44Myw5Ljk1IDMuMDMsOS41IDMuNDMsOS4xNEMzLjg0LDguOCA0LjM4LDguNjIgNS4wNiw4LjYyQzUuMjksOC42MiA1LjUsOC42NCA1Ljc3LDguNjhDNiw4LjcxIDYuMjcsOC43NiA2LjUzLDguODJWOC4zNEM2LjUzLDcuODMgNi40Myw3LjUgNi4yMiw3LjI3QzYsNy4wNiA1LjY1LDYuOTcgNS4xNCw2Ljk3QzQuOSw2Ljk3IDQuNjYsNyA0LjQyLDcuMDVDNC4xNyw3LjExIDMuOTMsNy4xOCAzLjcsNy4yOEMzLjU5LDcuMzIgMy41LDcuMzUgMy40Nyw3LjM2QzMuNDIsNy4zOCAzLjM5LDcuMzggMy4zNiw3LjM4QzMuMjcsNy4zOCAzLjIyLDcuMzIgMy4yMiw3LjE4VjYuODVDMy4yMiw2Ljc1IDMuMjMsNi42NyAzLjI3LDYuNjJDMy4zLDYuNTcgMy4zNiw2LjUzIDMuNDUsNi41QzMuNjksNi4zNiAzLjk2LDYuMjYgNC4yOSw2LjE4QzQuNjIsNi4wOSA0Ljk2LDYuMDUgNS4zMyw2LjA1QzYuMTIsNi4wNSA2LjcsNi4yMyA3LjA3LDYuNTlDNy40NCw2Ljk1IDcuNjIsNy41IDcuNjIsOC4yM1YxMC4zOEg3LjY0TTQuOTQsMTEuNEM1LjE2LDExLjQgNS4zOCwxMS4zNiA1LjYyLDExLjI4QzUuODYsMTEuMiA2LjA3LDExLjA1IDYuMjUsMTAuODVDNi4zNiwxMC43MiA2LjQ0LDEwLjU4IDYuNSwxMC40MkM2LjUsMTAuMjYgNi41NSwxMC4wNyA2LjU1LDkuODRWOS41N0M2LjM1LDkuNSA2LjE1LDkuNSA1LjkzLDkuNDVDNS43Miw5LjQzIDUuNSw5LjQxIDUuMzEsOS40MUM0Ljg2LDkuNDEgNC41NCw5LjUgNC4zMiw5LjY4QzQuMSw5Ljg2IDQsMTAuMTEgNCwxMC40NEM0LDEwLjc2IDQuMDcsMTEgNC4yNCwxMS4xNUM0LjQsMTEuMzIgNC42MywxMS40IDQuOTQsMTEuNE0xMC4yOCwxMi4xMUMxMC4xNiwxMi4xMSAxMC4wOCwxMi4wOSAxMCwxMi4wNUM5Ljk3LDEyIDkuOTIsMTEuOTEgOS44OCwxMS43OUw4LjMyLDYuNjVDOC4yOCw2LjUgOC4yNiw2LjQzIDguMjYsNi4zOEM4LjI2LDYuMjcgOC4zMSw2LjIxIDguNDIsNi4yMUg5LjA3QzkuMiw2LjIxIDkuMjksNi4yMyA5LjMzLDYuMjhDOS4zOSw2LjMyIDkuNDMsNi40MSA5LjQ3LDYuNTRMMTAuNTgsMTAuOTRMMTEuNjIsNi41NEMxMS42NSw2LjQxIDExLjY5LDYuMzIgMTEuNzUsNi4yOEMxMS44LDYuMjQgMTEuODksNi4yMSAxMiw2LjIxSDEyLjU1QzEyLjY3LDYuMjEgMTIuNzYsNi4yMyAxMi44MSw2LjI4QzEyLjg2LDYuMzIgMTIuOTEsNi40MSAxMi45NCw2LjU0TDE0LDExTDE1LjE0LDYuNTRDMTUuMTgsNi40MSAxNS4yMyw2LjMyIDE1LjI3LDYuMjhDMTUuMzMsNi4yNCAxNS40MSw2LjIxIDE1LjUzLDYuMjFIMTYuMTVDMTYuMjYsNi4yMSAxNi4zMiw2LjI3IDE2LjMyLDYuMzhDMTYuMzIsNi40MSAxNi4zMSw2LjQ1IDE2LjMsNi41QzE2LjMsNi41IDE2LjI4LDYuNTggMTYuMjYsNi42NUwxNC42NSwxMS43OUMxNC42MSwxMS45MyAxNC41NywxMiAxNC41LDEyLjA1QzE0LjQ2LDEyLjA5IDE0LjM3LDEyLjEyIDE0LjI2LDEyLjEySDEzLjY5QzEzLjU2LDEyLjEyIDEzLjUsMTIuMSAxMy40MiwxMi4wNUMxMy4zNywxMiAxMy4zMiwxMS45MiAxMy4zLDExLjc5TDEyLjI3LDcuNUwxMS4yNCwxMS43OEMxMS4yMSwxMS45MSAxMS4xNywxMiAxMS4xMiwxMi4wNUMxMS4wNiwxMi4wOSAxMC45NywxMi4xMSAxMC44NSwxMi4xMUgxMC4yOE0xOC44MywxMi4yOUMxOC41LDEyLjI5IDE4LjEzLDEyLjI1IDE3LjgsMTIuMTdDMTcuNDcsMTIuMDkgMTcuMjEsMTIgMTcuMDQsMTEuOTFDMTYuOTMsMTEuODUgMTYuODYsMTEuNzggMTYuODMsMTEuNzJDMTYuOCwxMS42NiAxNi43OSwxMS42IDE2Ljc5LDExLjU0VjExLjJDMTYuNzksMTEuMDYgMTYuODQsMTEgMTYuOTQsMTFDMTcsMTEgMTcsMTEgMTcuMDYsMTFDMTcuMSwxMSAxNy4xNiwxMS4wNSAxNy4yMywxMS4wOEMxNy40NSwxMS4xOCAxNy43LDExLjI2IDE3Ljk2LDExLjMxQzE4LjIzLDExLjM2IDE4LjUsMTEuMzkgMTguNzUsMTEuMzlDMTkuMTcsMTEuMzkgMTkuNSwxMS4zMiAxOS43MiwxMS4xN0MxOS45NSwxMSAyMC4wNywxMC44MSAyMC4wNywxMC41NEMyMC4wNywxMC4zNSAyMCwxMC4yIDE5Ljg5LDEwLjA3QzE5Ljc3LDkuOTUgMTkuNTQsOS44MyAxOS4yMiw5LjczTDE4LjI1LDkuNDNDMTcuNzcsOS4yNyAxNy40MSw5LjA1IDE3LjE5LDguNzVDMTYuOTcsOC40NiAxNi44Niw4LjEzIDE2Ljg2LDcuNzhDMTYuODYsNy41IDE2LjkyLDcuMjYgMTcuMDQsNy4wNUMxNy4xNiw2LjgzIDE3LjMyLDYuNjUgMTcuNSw2LjVDMTcuNzIsNi4zNSAxNy45NCw2LjI0IDE4LjIxLDYuMTZDMTguNDcsNi4wOCAxOC43NSw2LjA0IDE5LjA1LDYuMDRDMTkuMTksNi4wNCAxOS4zNCw2LjA1IDE5LjUsNi4wN0MxOS42NCw2LjA5IDE5Ljc4LDYuMTIgMTkuOTIsNi4xNEMyMC4wNiw2LjE4IDIwLjE4LDYuMjEgMjAuMyw2LjI1QzIwLjQyLDYuMjkgMjAuNSw2LjMzIDIwLjU4LDYuMzdDMjAuNjcsNi40MiAyMC43NCw2LjQ3IDIwLjc4LDYuNTNDMjAuODIsNi41OSAyMC44NCw2LjY2IDIwLjg0LDYuNzVWNy4wN0MyMC44NCw3LjIxIDIwLjc5LDcuMjggMjAuNjksNy4yOEMyMC42NCw3LjI4IDIwLjU1LDcuMjUgMjAuNDMsNy4yQzIwLjA2LDcuMDMgMTkuNjMsNi45NCAxOS4xNiw2Ljk0QzE4Ljc4LDYuOTQgMTguNSw3IDE4LjI3LDcuMTNDMTguMDcsNy4yNSAxNy45Niw3LjQ1IDE3Ljk2LDcuNzJDMTcuOTYsNy45MSAxOC4wMyw4LjA3IDE4LjE2LDguMTlDMTguMjksOC4zMiAxOC41NCw4LjQ0IDE4Ljg5LDguNTZMMTkuODQsOC44NkMyMC4zMiw5IDIwLjY2LDkuMjIgMjAuODcsOS41QzIxLjA3LDkuNzcgMjEuMTcsMTAuMDggMjEuMTcsMTAuNDNDMjEuMTcsMTAuNzEgMjEuMTEsMTAuOTcgMjEsMTEuMkMyMC44OCwxMS40MiAyMC43MiwxMS42MiAyMC41LDExLjc4QzIwLjMxLDExLjk1IDIwLjA2LDEyLjA3IDE5Ljc4LDEyLjE2QzE5LjUsMTIuMjUgMTkuMTYsMTIuMjkgMTguODMsMTIuMjlNMjAuMDgsMTUuNTNDMTcuODksMTcuMTQgMTQuNzEsMTggMTIsMThDOC4xNSwxOCA0LjcsMTYuNTggMi4wOSwxNC4yM0MxLjg4LDE0LjA0IDIuMDcsMTMuNzkgMi4zMiwxMy45NEM1LjE0LDE1LjU3IDguNjEsMTYuNTYgMTIuMjEsMTYuNTZDMTQuNjQsMTYuNTYgMTcuMzEsMTYuMDYgMTkuNzYsMTVDMjAuMTMsMTQuODUgMjAuNDQsMTUuMjYgMjAuMDgsMTUuNTNNMjEsMTQuNUMyMC43MSwxNC4xMyAxOS4xNCwxNC4zMiAxOC40MywxNC40QzE4LjIyLDE0LjQzIDE4LjE5LDE0LjI0IDE4LjM4LDE0LjFDMTkuNjMsMTMuMjMgMjEuNjksMTMuNSAyMS45MiwxMy43N0MyMi4xNiwxNC4wNyAyMS44NiwxNi4xMyAyMC42OSwxNy4xMUMyMC41LDE3LjI2IDIwLjMzLDE3LjE4IDIwLjQxLDE3QzIwLjY4LDE2LjMyIDIxLjI3LDE0Ljg0IDIxLDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhlID0gXCJNMTIsMkwyMiw4QzIyLDEyIDIwLDE0IDE2LDE1TDEzLDEwTDksNkwxMiwyTTQuMTEsMTkuODRMMi4xMiwxOC4zM0w5LjE5LDlMMTEsMTAuODFMNC4xMSwxOS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzID0gXCJNMi42MSwyMUwxLjYxLDE5LjI3TDExLDEzLjg1VjNIMTNWMTMuODVMMjIuMzksMTkuMjdMMjEuMzksMjFMMTIsMTUuNThMMi42MSwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzQXJyb3cgPSBcIk0xMiwyTDE2LDZIMTNWMTMuODVMMTkuNTMsMTcuNjFMMjEsMTUuMDNMMjIuNSwyMC41TDE3LDIxLjk2TDE4LjUzLDE5LjM1TDEyLDE1LjU4TDUuNDcsMTkuMzVMNywyMS45NkwxLjUsMjAuNUwzLDE1LjAzTDQuNDcsMTcuNjFMMTEsMTMuODVWNkg4TDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc0Fycm93SW5mbyA9IFwiTTEyIDJMMTYgNkgxM1YxMy44NUwxOS41MyAxNy42MUwyMSAxNS4wM0wyMi41IDIwLjVMMTcgMjEuOTZMMTguNTMgMTkuMzVMMTIgMTUuNThMNS40NyAxOS4zNUw3IDIxLjk2TDEuNSAyMC41TDMgMTUuMDNMNC40NyAxNy42MUwxMSAxMy44NVY2SDhMMTIgMk0yMSA1SDE5VjNIMjFWNU0yMiAxMFYxMkgxOFYxMEgxOVY4SDE4VjZIMjFWMTBIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc0Fycm93TG9jayA9IFwiTTIxLjgsNUMyMi40LDUgMjMsNS42IDIzLDYuM1Y5LjhDMjMsMTAuNCAyMi40LDExIDIxLjcsMTFIMTYuMkMxNS42LDExIDE1LDEwLjQgMTUsOS43VjYuMkMxNSw1LjYgMTUuNiw1IDE2LjIsNVYzLjVDMTYuMiwyLjEgMTcuNiwxIDE5LDFDMjAuNCwxIDIxLjgsMi4xIDIxLjgsMy41VjVNMjAuNSw1VjMuNUMyMC41LDIuNyAxOS44LDIuMiAxOSwyLjJDMTguMiwyLjIgMTcuNSwyLjcgMTcuNSwzLjVWNUgyMC41TTEuNzQsMTkuMjVMMy4yMSwxMy43OUw0LjY4LDE2LjM0TDksMTMuODVWNkg2TDEwLDJMMTQsNkgxMVYxMy44NUwxOC4wMywxNy44NkwxOS41LDE1LjI4TDIxLDIwLjc0TDE1LjUsMjIuMjFMMTcuMDMsMTkuNkwxMCwxNS41OEw1LjY4LDE4LjA3TDcuMjEsMjAuNzFMMS43NCwxOS4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzTG9jayA9IFwiTTIxLjgsNUMyMi40LDUgMjMsNS42IDIzLDYuM1Y5LjhDMjMsMTAuNCAyMi40LDExIDIxLjcsMTFIMTYuMkMxNS42LDExIDE1LDEwLjQgMTUsOS43VjYuMkMxNSw1LjYgMTUuNiw1IDE2LjIsNVYzLjVDMTYuMiwyLjEgMTcuNiwxIDE5LDFDMjAuNCwxIDIxLjgsMi4xIDIxLjgsMy41VjVNMjAuNSw1VjMuNUMyMC41LDIuNyAxOS44LDIuMiAxOSwyLjJDMTguMiwyLjIgMTcuNSwyLjcgMTcuNSwzLjVWNUgyMC41TTExLDEzLjgyTDIwLjM5LDE5LjI1TDE5LjM5LDIxTDEwLDE1LjU2TDMuMTcsMTkuNUwyLjE3LDE3Ljc3TDksMTMuODJWM0gxMVYxMy44MlpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWEFycm93ID0gXCJNMS41LDIwLjVMMywxNS4wM0w0LjQ2LDE3LjZMMTEsMTMuODJWM0gxM1YxMy44MkwyMi4zOSwxOS4yNUwyMS4zOSwyMUwxMiwxNS41Nkw1LjQ2LDE5LjMzTDcsMjEuOTZMMS41LDIwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc1hBcnJvd0xvY2sgPSBcIk0yMS44LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjNWOS44QzIzLDEwLjQgMjIuNCwxMSAyMS43LDExSDE2LjJDMTUuNiwxMSAxNSwxMC40IDE1LDkuN1Y2LjJDMTUsNS42IDE1LjYsNSAxNi4yLDVWMy41QzE2LjIsMi4xIDE3LjYsMSAxOSwxQzIwLjQsMSAyMS44LDIuMSAyMS44LDMuNVY1TTIwLjUsNVYzLjVDMjAuNSwyLjcgMTkuOCwyLjIgMTksMi4yQzE4LjMxLDIuMiAxNy42OSwyLjU4IDE3LjU0LDMuMkMxNy41LDMuMjkgMTcuNSwzLjM5IDE3LjUsMy41VjVIMjAuNU0xLjc0LDE5LjI1TDMuMjEsMTMuNzlMNC42NywxNi4zMkw5LDEzLjgyVjNIMTFWMTMuODJMMjAuMzksMTkuMjVMMTkuMzksMjFMMTAsMTUuNTZMNS42NywxOC4wNkw3LjIxLDIwLjcxTDEuNzQsMTkuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc1hSb3RhdGVDbG9ja3dpc2UgPSBcIk0xMiwxMEgxNC45MUMxNC41Nyw2LjU1IDEzLjQsNCAxMiw0QzEwLjQyLDQgOS4xMiw3LjI3IDksMTEuNDJMNywxMi41N1YxMkM3LDYuNSA5LjI0LDIgMTIsMkMxNC40MiwyIDE2LjQ0LDUuNDQgMTYuOSwxMEgyMEwxNiwxNEwxMiwxME0xMiwyMkMxMC4xMiwyMiA4LjQ3LDE5LjkyIDcuNjIsMTYuODRMOS4zNywxNS44M0M5Ljg3LDE4LjMxIDEwLjg2LDIwIDEyLDIwQzEzLjI3LDIwIDE0LjM2LDE3Ljg5IDE0Ljc5LDE0LjkyTDE2LDE2LjEyTDE2LjcsMTUuNDJDMTYsMTkuMjYgMTQuMTYsMjIgMTIsMjJNMi4xMSwxOC44N0wxLjExLDE3LjEzTDEuMDYsMTcuMDZMMTEuMTIsMTEuMjVMMTIuNzIsMTIuODRMMi4xNSwxOC45NEwyLjExLDE4Ljg3TTIxLjg5LDUuMTNMMjIuODksNi44N0wxOS4yLDlIMTcuNzdMMTcuNSw3LjY2TDIxLjg5LDUuMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc1hSb3RhdGVDb3VudGVyY2xvY2t3aXNlID0gXCJNMTIsMTRMMTYsMTBMMjAsMTRIMTYuOUMxNi40NCwxOC41NiAxNC40MiwyMiAxMiwyMkMxMC4xMiwyMiA4LjQ3LDE5LjkyIDcuNjIsMTYuODRMOS4zNywxNS44M0M5Ljg3LDE4LjMxIDEwLjg2LDIwIDEyLDIwQzEzLjQsMjAgMTQuNTcsMTcuNDUgMTQuOTEsMTRIMTJNMS4xMSwxNy4xM0wxMy44OSw5Ljc1TDEzLjk2LDEwLjU0TDEwLjUsMTRIMTAuNTRMMi4xMSwxOC44N0wxLjExLDE3LjEzTTIxLjg5LDUuMTNMMjIuODksNi44N0wxNy44OCw5Ljc2QzE3Ljc5LDkuMDMgMTcuNjcsOC4zMyAxNy41LDcuNjZMMjEuODksNS4xM00xMiwyQzE0LjMsMiAxNi4yMyw1LjEgMTYuODIsOS4zMkwxNiw4LjVMMTQuODcsOS42M0MxNC41LDYuMzcgMTMuMzUsNCAxMiw0QzEwLjQyLDQgOS4xMiw3LjI3IDksMTEuNDJMNywxMi41N1YxMkM3LDYuNSA5LjI0LDIgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWFlBcnJvd0xvY2sgPSBcIk0yMS44LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjNWOS44QzIzLDEwLjQgMjIuNCwxMSAyMS43LDExSDE2LjJDMTUuNiwxMSAxNSwxMC40IDE1LDkuN1Y2LjJDMTUsNS42IDE1LjYsNSAxNi4yLDVWMy41QzE2LjIsMi4xIDE3LjYsMSAxOSwxQzIwLjQsMSAyMS44LDIuMSAyMS44LDMuNVY1TTIwLjUsNVYzLjVDMjAuNSwyLjcgMTkuOCwyLjIgMTksMi4yQzE4LjIsMi4yIDE3LjUsMi43IDE3LjUsMy41VjVIMjAuNU0xLjc0LDE5LjI1TDMuMjEsMTMuNzlMNC42OCwxNi4zNEw5LDEzLjg1VjNIMTFWMTMuODVMMTcuNTMsMTcuNjFMMTksMTUuMDNMMjAuNSwyMC41TDE1LDIxLjk2TDE2LjUzLDE5LjM1TDEwLDE1LjU4TDUuNjgsMTguMDdMNy4yMSwyMC43MUwxLjc0LDE5LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF4aXNZQXJyb3cgPSBcIk0yMi41LDIwLjVMMTcsMjEuOTZMMTguNTMsMTkuMzVMMTIsMTUuNThMMi42MSwyMUwxLjYxLDE5LjI3TDExLDEzLjg1VjNIMTNWMTMuODVMMTkuNTMsMTcuNjFMMjEsMTUuMDNMMjIuNSwyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF4aXNZQXJyb3dMb2NrID0gXCJNMTEsMTMuODJMMTgsMTcuODhMMTkuNSwxNS4yOEwyMSwyMC43NEwxNS41LDIyLjIxTDE3LDE5LjYxTDEwLDE1LjU2TDMuMTcsMTkuNUwyLjE3LDE3Ljc3TDksMTMuODJWM0gxMVYxMy44Mk0yMS44LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjNWOS44QzIzLDEwLjQgMjIuNCwxMSAyMS43LDExSDE2LjJDMTUuNiwxMSAxNSwxMC40IDE1LDkuN1Y2LjJDMTUsNS42IDE1LjYsNSAxNi4yLDVWMy41QzE2LjIsMi4xIDE3LjYsMSAxOSwxQzIwLjQsMSAyMS44LDIuMSAyMS44LDMuNVY1TTIwLjUsNVYzLjVDMjAuNSwyLjcgMTkuOCwyLjIgMTksMi4yQzE4LjIsMi4yIDE3LjUsMi43IDE3LjUsMy41VjVIMjAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWVJvdGF0ZUNsb2Nrd2lzZSA9IFwiTTEyLDEwTDE2LDE0TDIwLDEwSDE2LjlDMTYuNDQsNS40NCAxNC40MiwyIDEyLDJDMTAuMTIsMiA4LjQ3LDQuMDggNy42Miw3LjE2TDkuMzcsOC4xN0M5Ljg3LDUuNjkgMTAuODYsNCAxMiw0QzEzLjQsNCAxNC41Nyw2LjU1IDE0LjkxLDEwSDEyTTEuMTEsNi44N0wxMy44OSwxNC4yNUwxMy45NiwxMy40NkwxMC41LDEwSDEwLjU0TDIuMTEsNS4xM0wxLjExLDYuODdNMjEuODksMTguODdMMjIuODksMTcuMTNMMTcuODgsMTQuMjRDMTcuNzksMTQuOTcgMTcuNjcsMTUuNjcgMTcuNSwxNi4zNEwyMS44OSwxOC44N00xMiwyMkMxNC4zLDIyIDE2LjIzLDE4LjkgMTYuODIsMTQuNjhMMTYsMTUuNUwxNC44NywxNC4zN0MxNC41LDE3LjYzIDEzLjM1LDIwIDEyLDIwQzEwLjQyLDIwIDkuMTIsMTYuNzMgOSwxMi41OEw3LDExLjQzVjEyQzcsMTcuNSA5LjI0LDIyIDEyLDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUF4aXNZUm90YXRlQ291bnRlcmNsb2Nrd2lzZSA9IFwiTTEyLDE0SDE0LjkxQzE0LjU3LDE3LjQ1IDEzLjQsMjAgMTIsMjBDMTAuNDIsMjAgOS4xMiwxNi43MyA5LDEyLjU4TDcsMTEuNDNWMTJDNywxNy41IDkuMjQsMjIgMTIsMjJDMTQuNDIsMjIgMTYuNDQsMTguNTYgMTYuOSwxNEgyMEwxNiwxMEwxMiwxNE0xMiwyQzEwLjEyLDIgOC40Nyw0LjA4IDcuNjIsNy4xNkw5LjM3LDguMTdDOS44Nyw1LjY5IDEwLjg2LDQgMTIsNEMxMy4yNyw0IDE0LjM2LDYuMTEgMTQuNzksOS4wOEwxNiw3Ljg4TDE2LjcsOC41OEMxNiw0Ljc0IDE0LjE2LDIgMTIsMk0yLjExLDUuMTNMMS4xMSw2Ljg3TDEuMDYsNi45NEwxMS4xMiwxMi43NUwxMi43MiwxMS4xNkwyLjE1LDUuMDZMMi4xMSw1LjEzTTIxLjg5LDE4Ljg3TDIyLjg5LDE3LjEzTDE5LjIsMTVIMTcuNzdMMTcuNSwxNi4zNEwyMS44OSwxOC44N1pcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWkFycm93ID0gXCJNMTIsMkwxNiw2SDEzVjEzLjgyTDIyLjM5LDE5LjI1TDIxLjM5LDIxTDEyLDE1LjU2TDIuNjEsMjFMMS42MSwxOS4yNUwxMSwxMy44MlY2SDhMMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWkFycm93TG9jayA9IFwiTTIxLjgsNUMyMi40LDUgMjMsNS42IDIzLDYuM1Y5LjhDMjMsMTAuNCAyMi40LDExIDIxLjcsMTFIMTYuMkMxNS42LDExIDE1LDEwLjQgMTUsOS43VjYuMkMxNSw1LjYgMTUuNiw1IDE2LjIsNVYzLjVDMTYuMiwyLjEgMTcuNiwxIDE5LDFDMjAuNCwxIDIxLjgsMi4xIDIxLjgsMy41VjVNMjAuNSw1VjMuNUMyMC41LDIuNyAxOS44LDIuMiAxOSwyLjJDMTguMiwyLjIgMTcuNSwyLjcgMTcuNSwzLjVWNUgyMC41TTEwLDJMMTQsNkgxMVYxMy44MkwyMC4zOSwxOS4yNUwxOS4zOSwyMUwxMCwxNS41NkwzLjE3LDE5LjVMMi4xNywxNy43N0w5LDEzLjgyVjZINkwxMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUF4aXNaUm90YXRlQ2xvY2t3aXNlID0gXCJNMTQsMTJMMTAsMTZMMTQsMjBWMTYuOUMxOC41NiwxNi40NCAyMiwxNC40MiAyMiwxMkMyMiw5LjU4IDE4LjU2LDcuNTYgMTQsNy4xVjkuMDlDMTcuNDUsOS40MyAyMCwxMC42IDIwLDEyQzIwLDEzLjQgMTcuNDUsMTQuNTcgMTQsMTQuOTFWMTJNNCwxMkM0LDEwLjYgNi41NSw5LjQzIDEwLDkuMDlWNy4xQzUuNDQsNy41NiAyLDkuNTggMiwxMkMyLDE0LjE2IDQuNzQsMTYgOC41OCwxNi43TDcuODgsMTZMOS4wOCwxNC43OUM2LjExLDE0LjM2IDQsMTMuMjcgNCwxMk0xMywySDExVjEzTDEzLDExVjJNMTMsMjJWMjFMMTEsMTlWMjJIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc1pSb3RhdGVDb3VudGVyY2xvY2t3aXNlID0gXCJNMTAsMTJMMTQsMTZMMTAsMjBWMTYuOUM1LjQ0LDE2LjQ0IDIsMTQuNDIgMiwxMkMyLDkuNTggNS40NCw3LjU2IDEwLDcuMVY5LjA5QzYuNTUsOS40MyA0LDEwLjYgNCwxMkM0LDEzLjQgNi41NSwxNC41NyAxMCwxNC45MVYxMk0yMCwxMkMyMCwxMC42IDE3LjQ1LDkuNDMgMTQsOS4wOVY3LjFDMTguNTYsNy41NiAyMiw5LjU4IDIyLDEyQzIyLDE0LjE2IDE5LjI2LDE2IDE1LjQyLDE2LjdMMTYuMTIsMTZMMTQuOTIsMTQuNzlDMTcuODksMTQuMzYgMjAsMTMuMjcgMjAsMTJNMTEsMkgxM1YxM0wxMSwxMVYyTTExLDIyVjIxTDEzLDE5VjIySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhYmVsID0gXCJNMTUuMTQgMkMxMy44IDIuMTIgMTIuMDQgMi41OSA5Ljg3IDMuNDNDOS4yOCAzLjg3IDguNiA0LjMgNy44NCA0LjcyVjQuODVDNy45IDQuODUgNy45NiA0LjgxIDguMDQgNC43N0M4LjEzIDQuNzYgOC4xOSA0Ljc5IDguMTkgNC44OEw4LjMyIDQuOEw4LjM5IDQuNzlMOC40IDQuODZDOC40MSA0LjkyIDcuOTMgNS4yOSA3IDUuOTZMNy4wNiA2LjA5SDdMNi44NCA2LjA0QzYuODQgNi4wOSA2Ljc4IDYuMTEgNi42NCA2LjEyTDYuNjUgNi4xOUw2LjgxIDYuMzdDNi43NSA2LjM3IDYuNjggNi4zNiA2LjYgNi4zMkM2LjI5IDYuMzUgNiA2LjU4IDUuNjkgN0w1Ljc3IDcuMTJDNi4wMyA2Ljg4IDYuMTggNi43NiA2LjIyIDYuNzZMNi4yNCA2Ljk1QzYuMiA2Ljk1IDYuMTIgNyA2LjA0IDcuMDNMNi4yIDcuMjdDNi41IDYuOTMgNi44NiA2LjY0IDcuMjQgNi40MUM3LjQzIDYuNDYgNy41MyA2LjUgNy41MyA2LjU4TDcuNjcgNi41N0M4LjY5IDUuODEgOS43MSA1LjI3IDEwLjcxIDQuOTNMMTAuNzIgNS4wNkMxMC41MyA1LjM0IDEwLjQgNS41IDEwLjMzIDUuNUMxMC4zNCA1LjU5IDEwLjM4IDUuNjcgMTAuNDMgNS43NEMxMC40NSA1LjkyIDEwIDcuMDYgOS4wNyA5LjE5QzYuOTUgMTQuMTMgNS4xOSAxNy43OCAzLjc3IDIwLjE2QzMuNzcgMjAuMiAzLjggMjAuMjcgMy44NSAyMC4zNUM0LjIgMjAuMjYgNC40MiAyMC4xOCA0LjUgMjAuMUw0LjYgMjAuMDlMNC42MSAyMC4yMkw0Ljc0IDIwLjIxTDQuODggMjAuMTNDNC44OCAyMC4xOCA0LjkzIDIwLjE5IDUgMjAuMThMNS4wMyAyMC4zMUM1LjAzIDIwLjQ1IDQuOTYgMjAuNjUgNC44IDIwLjkyQzQuNjUgMjEuMDggNC41IDIxLjQyIDQuMzQgMjEuOTRWMjJINC40N0M1LjA0IDIxLjM1IDUuNSAyMC43MiA1Ljc4IDIwLjExQzcuNDQgMTkuNjIgOC43MSAxOS4xNSA5LjU5IDE4LjY3QzEwLjQ3IDE4LjYgMTEuMTUgMTguMzcgMTEuNjEgMThMMTEuNiAxNy45MUwxMS4yNyAxOEgxMS4xOUwxMS4xOCAxNy45NUMxMS44MyAxNy44NSAxMi4yOCAxNy43IDEyLjUgMTcuNUMxMy43OSAxNi41NCAxNC43NCAxNS44NSAxNS4zOSAxNS40NEMxNy4zOSAxMy45NyAxOC4zMyAxMi41NSAxOC4yMiAxMS4yMUMxOC4yMSAxMS4wNyAxNy43NiAxMC41IDE2LjkgOS41NkMxNi44OCA5LjM4IDE3LjE5IDkuMTIgMTcuOCA4Ljc3TDE5LjUzIDcuMjRDMTkuOTIgNi43NCAyMC4xNSA1Ljk0IDIwLjIzIDQuODNMMjAuMiA0LjU3QzIwLjE0IDMuNzkgMTkuNTggMy4xNiAxOC41IDIuNjhDMTcuODggMi4yNSAxNi43NiAyLjAzIDE1LjE0IDJNMTcuMjQgMi44N0MxOC41MyAyLjkyIDE5LjE5IDMuMTQgMTkuMjMgMy41NUwxOS4xOCAzLjY4TDE3LjI0IDIuODdNMTYgMy45NkMxNi44OSAzLjk1IDE3LjM1IDQuMTggMTcuNCA0LjY4TDE3LjUgNC42N1Y0LjM0TDE3LjY0IDQuMzNDMTggNC41IDE4LjE2IDQuNzQgMTguMTggNUMxOC4yIDUuMiAxOC4xIDUuNDIgMTcuODkgNS42OUMxNy44IDUuNyAxNy43NSA1LjY0IDE3Ljc0IDUuNUgxNy42TDE3LjU2IDUuOTFDMTcgNi43OCAxNi41NiA3LjIzIDE2LjMgNy4yNkMxNi4wNiA3LjU4IDE1LjkxIDcuNzUgMTUuODUgNy43NUMxNS42NyA3Ljk3IDE1LjE3IDguMzUgMTQuMzUgOC44N0MxNC4wOCA4LjkgMTMuMDcgOS4yOCAxMS4zNCAxMC4wNEMxMS4yNSAxMCAxMS4xNiAxMCAxMS4wNiAxMEwxMS4wNSA5Ljg4QzExLjAzIDkuNjIgMTEuMTQgOS4zMSAxMS4zOSA4LjkyQzExLjUgOC4yMSAxMS42NyA3LjggMTEuODMgNy43TDEzLjI4IDQuNDRDMTMuMjcgNC4yNCAxMy41NyA0LjA5IDE0LjIxIDRMMTQuNDIgMy45NkwxNC40NCA0LjE1QzE1LjA2IDQuMDUgMTUuNDUgNCAxNS42IDRDMTUuNzQgMy45NyAxNS44OCAzLjk2IDE2IDMuOTZNMTkgNC4yOUgxOS4wNEMxOS4xNiA0LjMgMTkuMjggNC41IDE5LjQxIDQuOTFMMTkuNDIgNS4wM0MxOS4zNSA1LjA0IDE5LjIyIDQuODMgMTkuMDMgNC40MUwxOSA0LjI5TTEwLjgyIDYuMzZIMTAuODhMMTAuOSA2LjU1QzEwLjg0IDYuNTYgMTAuNzUgNi42NSAxMC42NSA2LjgzTDEwLjY0IDYuN0MxMC43NiA2LjU1IDEwLjgyIDYuNDMgMTAuODIgNi4zNk02LjY3IDYuNDZMNi42OCA2LjVDNi42MyA2LjUgNi41NiA2LjU2IDYuNSA2LjZMNi40MSA2LjYxTDYuMzkgNi41TDYuNjcgNi40Nk0xMC4yNCA3LjcyTDEwLjI2IDhIMTAuMTlMMTAuMTYgNy43M0wxMC4yNCA3LjcyTTEwLjA3IDguMTlDMTAuMDUgOC40MSAxMCA4LjUgOS44OSA4LjUzTDkuODIgOC41NEM5LjkgOC4zOSA5Ljk0IDguMjkgOS45MyA4LjIxTDEwLjA3IDguMTlNOS43OCA4Ljg3TDkuNzkgOC45M0w5LjY3IDkuMTRMOS41NCA5LjE1TDkuNTMgOS4wOUM5LjY2IDkuMDggOS43MiA5IDkuNzEgOC44OEw5Ljc4IDguODdNOS41IDkuNUw5LjQ1IDkuODFIOS4zOEw5LjM2IDkuNUg5LjVNMTYuNTcgOS43MkwxNi44NSA5Ljg5QzE2Ljg2IDEwIDE2LjgyIDEwLjAzIDE2LjczIDEwLjA0QzE2LjYxIDkuOTYgMTYuNSA5LjkzIDE2LjQ0IDkuOTNMMTYuNDMgOS43M0wxNi41NyA5LjcyTTExIDEwLjQ2TDExLjAzIDEwLjU4TDEwLjc2IDEwLjYxTDEwLjc1IDEwLjVMMTEgMTAuNDZNMTUuNSAxMC45MUMxNS42OCAxMSAxNS43OCAxMS4wOSAxNS43OSAxMS4xNkwxNS44IDExLjIyQzE1LjYxIDExLjI0IDE1LjQ1IDExLjE0IDE1LjI5IDEwLjkzTDE1LjUgMTAuOTFNMTcuNjYgMTEuMTJDMTcuODEgMTEuMTggMTcuODggMTEuMjUgMTcuODkgMTEuMzFMMTcuOTMgMTEuODJDMTcuODcgMTEuOTYgMTcuODEgMTIuMDMgMTcuNzQgMTIuMDNMMTcuNjYgMTEuMTJNMTQuMTYgMTEuMThDMTQuODYgMTEuMTcgMTUuNCAxMS4zMyAxNS43NiAxMS42OEwxNS43OSAxMS45NEMxNS41IDEyLjg1IDE1LjEzIDEzLjM4IDE0Ljc1IDEzLjU0TDEzIDE0LjkzQzExLjcgMTUuNzkgMTEgMTYuMjEgMTAuOSAxNi4yMkM4LjgzIDE3LjM2IDcuNTQgMTcuOTUgNy4wNCAxOEg2Ljk2QzcuMDMgMTcuNzYgNy45NSAxNS44NyA5LjczIDEyLjMzQzEwLjUgMTIuMjYgMTEuNzYgMTEuODkgMTMuNDQgMTEuMjNMMTMuODUgMTEuMTlDMTMuOTYgMTEuMTkgMTQuMDYgMTEuMTggMTQuMTYgMTEuMThNMTEuNjIgMTEuNTlMMTEuNjMgMTEuNjVMMTEuMzUgMTEuNjdMMTEuMzQgMTEuNjFMMTEuNjIgMTEuNTlNNy4yNiAxNS44MUM3LjE3IDE2LjI2IDcuMDggMTYuNSA3IDE2LjVMNi45NyAxNi40M0M2Ljk1IDE2LjIgNy4wNSAxNiA3LjI2IDE1LjgxTTEzLjE4IDE2LjA5TDEzLjE5IDE2LjIxQzEzLjIgMTYuMjcgMTMgMTYuNDMgMTIuNiAxNi43MkMxMS40NCAxNy4yOSAxMC43NiAxNy42OCAxMC41NiAxNy44OEM5LjMgMTguMzIgOC42OCAxOC41OSA4LjY5IDE4LjY5QzcuNTcgMTkuMTQgNi44NCAxOS40NiA2LjUgMTkuNjZDNi40MSAxOS42NyA2LjI5IDE5LjYzIDYuMTMgMTkuNTZDNi4xMiAxOS4zNCA2LjIxIDE5LjE1IDYuNDQgMTlDNi42MyAxOSA2LjgyIDE5IDcgMTkuMDlDNy4yMSAxOSA3LjU3IDE4Ljg3IDguMDggMTguNzRMOC4wNyAxOC42MUw3LjY2IDE4LjY1QzcuNzEgMTguNTggOC4xMSAxOC40IDguODYgMTguMDlMOS4wNyAxOC4wN0w5LjA4IDE4LjEzQzguNzMgMTguMTYgOC41MyAxOC4yNyA4LjUgMTguNDZDOC41IDE4LjUzIDguNTMgMTguNTggOC42MiAxOC41N0M4Ljg3IDE4LjM5IDkgMTguMyA5IDE4LjI3QzkuNSAxOC4xOCAxMC45IDE3LjQ0IDEzLjE4IDE2LjA5TTYuODYgMTYuNjlMNi44NyAxNi43NUM2Ljg4IDE2Ljg0IDYuODMgMTYuODkgNi43NCAxNi45VjE2Ljg0QzYuNzMgMTYuNzYgNi43NyAxNi43MSA2Ljg2IDE2LjY5TTEwIDE3LjVDMTAuMDcgMTcuNDcgMTAuMTIgMTcuNSAxMC4xMiAxNy41OEM5Ljk2IDE3LjYgOS42NSAxNy43MyA5LjE5IDE4SDkuMTJMOS4xMSAxNy44N0M5LjQ0IDE3Ljg0IDkuNzMgMTcuNzEgOS45NyAxNy41SDEwTTYuOTUgMTguNUw2Ljk2IDE4LjU4QzYuOSAxOC41OCA2Ljg0IDE4LjYxIDYuNzUgMTguNjZMNi42MiAxOC42N0M2LjYxIDE4LjYxIDYuNjUgMTguNTUgNi43NCAxOC41M0w2Ljk1IDE4LjVNNS4zNSAxOS4zTDUuNSAxOS4zNkM1LjQ0IDE5Ljc2IDUuMzMgMTkuOTYgNS4xMyAyMEM0Ljk3IDE5LjkxIDQuODMgMTkuODggNC43IDE5Ljg5TDQuNjggMTkuN0M0LjY3IDE5LjYyIDQuNzIgMTkuNTcgNC44MiAxOS41NUM0LjkgMTkuNTQgNC45NSAxOS42IDQuOTYgMTkuNzNDNS4yIDE5LjQ0IDUuMzMgMTkuMyA1LjM1IDE5LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieSA9IFwiTTE4LjUsNEEyLjUsMi41IDAgMCwxIDIxLDYuNUEyLjUsMi41IDAgMCwxIDE4LjUsOUEyLjUsMi41IDAgMCwxIDE2LDYuNUEyLjUsMi41IDAgMCwxIDE4LjUsNE00LjUsMjBBMS41LDEuNSAwIDAsMSAzLDE4LjVBMS41LDEuNSAwIDAsMSA0LjUsMTdIMTEuNUExLjUsMS41IDAgMCwxIDEzLDE4LjVBMS41LDEuNSAwIDAsMSAxMS41LDIwSDQuNU0xNi4wOSwxOUwxNC42OSwxNUgxMUw2Ljc1LDEwLjc1QzYuNzUsMTAuNzUgOSw4LjI1IDEyLjUsOC4yNUMxNS41LDguMjUgMTUuODUsOS4yNSAxNi4wNiw5Ljg3TDE4LjkyLDE4QzE5LjIsMTguNzggMTguNzgsMTkuNjQgMTgsMTkuOTJDMTcuMjIsMjAuMTkgMTYuMzYsMTkuNzggMTYuMDksMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieUJvdHRsZSA9IFwiTTExLjI4IDIuOEwxMC43OCAzLjNBNS41IDUuNSAwIDAgMCA2LjQxIDIuODdMNi4zMyAyLjhBMi41IDIuNSAwIDAgMCAyLjggNi4zM0wyLjg3IDYuNDFBNS41IDUuNSAwIDAgMCAzLjMgMTAuNzhMMi44IDExLjI4QTEuNSAxLjUgMCAwIDAgMi44IDEzLjRMNC4yMSAxNC44MkExLjUgMS41IDAgMCAwIDYuMzMgMTQuODJMNi42OCAxNC40NkwxMy43NiAyMS41M0ExLjUgMS41IDAgMCAwIDE1Ljg4IDIxLjUzTDIxLjUzIDE1Ljg4QTEuNSAxLjUgMCAwIDAgMjEuNTMgMTMuNzZMMTQuNDYgNi42OEwxNC44MiA2LjMzQTEuNSAxLjUgMCAwIDAgMTQuODIgNC4yMUwxMy40IDIuOEExLjUgMS41IDAgMCAwIDExLjI4IDIuOE0xMy43NiA1LjI3TDUuMjcgMTMuNzZMMy44NiAxMi4zNEwxMi4zNCAzLjg2TTE0LjgyIDExLjYzTDExLjYzIDE0LjgyTDEwLjU3IDEzLjc2TDEzLjc2IDEwLjU3TTE2Ljk0IDEzLjc2TDEzLjc2IDE2Ljk0TDEyLjY5IDE1Ljg4TDE1Ljg4IDEyLjY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhYnlCb3R0bGVPdXRsaW5lID0gXCJNMTEuMjggMi44TDEwLjc4IDMuM0M5LjQ0IDIuNTUgNy44NCAyLjQgNi40MSAyLjg3TDYuMzMgMi44QzUuMzYgMS44MiAzLjc3IDEuODIgMi44IDIuOFMxLjgyIDUuMzYgMi44IDYuMzNMMi44NyA2LjQxQzIuNCA3Ljg0IDIuNTUgOS40NCAzLjMgMTAuNzhMMi44IDExLjI4QzIuMjEgMTEuODcgMi4yMSAxMi44MSAyLjggMTMuNEw0LjIxIDE0LjgyQzQuOCAxNS40IDUuNzQgMTUuNCA2LjMzIDE0LjgyTDYuNjggMTQuNDZMMTMuNzYgMjEuNTNDMTQuMzQgMjIuMTIgMTUuMjkgMjIuMTIgMTUuODggMjEuNTNMMjEuNTMgMTUuODhDMjIuMTIgMTUuMjkgMjIuMTIgMTQuMzQgMjEuNTMgMTMuNzVMMTQuNDYgNi42OEwxNC44MiA2LjMzQzE1LjQgNS43NCAxNS40IDQuOCAxNC44MiA0LjIxTDEzLjQgMi43OUMxMi44MiAyLjIxIDExLjg3IDIuMjEgMTEuMjggMi44TTQuMjUgNy4wNUM0LjMzIDYuNzEgNC40NyA2LjM4IDQuNjYgNi4wN0wzLjg2IDUuMjdDMy43NSA1LjE2IDMuNjcgNS4wNCAzLjYzIDQuOUMzLjUgNC41NiAzLjU3IDQuMTQgMy44NiAzLjg2UzQuNTYgMy41IDQuOSAzLjYzQzUuMDQgMy42NyA1LjE2IDMuNzUgNS4yNyAzLjg2TDYuMDcgNC42NkM2LjM4IDQuNDcgNi43MSA0LjMzIDcuMDUgNC4yNUM3LjkxIDQgOC44MyA0LjA2IDkuNjUgNC40Mkw0LjQyIDkuNjVDNC4wNiA4LjgzIDQgNy45MSA0LjI1IDcuMDVNMjAuNDcgMTQuODJMMTQuODIgMjAuNDdMNy43NSAxMy40TDEzLjQgNy43NUwyMC40NyAxNC44Mk0xMy43NiA1LjI3TDUuMjcgMTMuNzZMMy44NiAxMi4zNEwxMi4zNCAzLjg2TDEzLjc2IDUuMjdNMTQuODIgMTEuNjNMMTEuNjMgMTQuODJMMTAuNTcgMTMuNzZMMTMuNzYgMTAuNTdMMTQuODIgMTEuNjNNMTYuOTQgMTMuNzZMMTMuNzYgMTYuOTRMMTIuNjkgMTUuODhMMTUuODggMTIuNjlMMTYuOTQgMTMuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieUJ1Z2d5ID0gXCJNMTcgMjBBMiAyIDAgMCAxIDE1IDIyQTIgMiAwIDAgMSAxMyAyMEEyIDIgMCAwIDEgMTUgMThBMiAyIDAgMCAxIDE3IDIwTTcgMjBBMiAyIDAgMCAxIDUgMjJBMiAyIDAgMCAxIDMgMjBBMiAyIDAgMCAxIDUgMThBMiAyIDAgMCAxIDcgMjBNMTcuNjEgM0MxNi45NSAzIDE2LjQ0IDMuMiAxNiAzLjVDMTUuMzIgMy45MSAxNC44OCA0LjU5IDE0LjQ3IDUuMDdMNS43MSAxNS4zNUM1LjE2IDE2IDUuNjIgMTcgNi40NyAxN0gxNEMxNS4xMSAxNyAxNiAxNi4xIDE2IDE1VjYuMzhDMTYuNTggNS43IDE2LjkzIDUgMTcuNjEgNUMxOC4zOCA1IDE5IDUuNjYgMTkgNi41VjdIMjFWNi41QzIxIDQuNTYgMTkuNSAzIDE3LjYxIDNNOC44NiAzLjA5QzcuMDQgMy4xNiA1LjIzIDMuNzYgMy42OCA0LjlMOC40NCA5LjY2TDEyLjMyIDUuMUMxMi41OSA0Ljc4IDEyLjkxIDQuMzggMTMuMyA0QzEyLjE0IDMuNDUgMTAuOSAzLjE1IDkuNjUgMy4wOUM5LjM5IDMuMDggOS4xMiAzLjA4IDguODYgMy4wOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWJ5Q2FycmlhZ2UgPSBcIk0xMywyVjEwSDIxQTgsOCAwIDAsMCAxMywyTTE5LjMyLDE1Ljg5QzIwLjM3LDE0LjU0IDIxLDEyLjg0IDIxLDExSDYuNDRMNS41LDlIMlYxMUg0LjIyQzQuMjIsMTEgNi4xMSwxNS4wNyA2LjM0LDE1LjQyQzUuMjQsMTYgNC41LDE3LjE3IDQuNSwxOC41QTMuNSwzLjUgMCAwLDAgOCwyMkM5Ljc2LDIyIDExLjIyLDIwLjcgMTEuNDYsMTlIMTMuNTRDMTMuNzgsMjAuNyAxNS4yNCwyMiAxNywyMkEzLjUsMy41IDAgMCwwIDIwLjUsMTguNUMyMC41LDE3LjQ2IDIwLjA0LDE2LjUzIDE5LjMyLDE1Ljg5TTgsMjBBMS41LDEuNSAwIDAsMSA2LjUsMTguNUExLjUsMS41IDAgMCwxIDgsMTdBMS41LDEuNSAwIDAsMSA5LjUsMTguNUExLjUsMS41IDAgMCwxIDgsMjBNMTcsMjBBMS41LDEuNSAwIDAsMSAxNS41LDE4LjVBMS41LDEuNSAwIDAsMSAxNywxN0ExLjUsMS41IDAgMCwxIDE4LjUsMTguNUExLjUsMS41IDAgMCwxIDE3LDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhYnlDYXJyaWFnZU9mZiA9IFwiTTIyIDEwQzIyIDUuNiAxOC40IDIgMTQgMlYxMEgyMk0xNC4yIDExSDIyQzIyIDEyLjggMjEuNCAxNC41IDIwLjMgMTUuOUMyMSAxNi41IDIxLjQgMTcuNCAyMS41IDE4LjNMMTQuMiAxMU0yMC44IDIyLjdMMjIuMSAyMS40TDIuNCAxLjdMMS4xIDNMOS4xIDExSDcuNEw2LjUgOUgzVjExSDUuMkM1LjIgMTEgNy4xIDE1LjEgNy4zIDE1LjRDNi4zIDE1LjkgNS42IDE2LjkgNS41IDE4QzUuMiAxOS45IDYuNiAyMS43IDguNSAyMkMxMC40IDIyLjMgMTIuMiAyMC45IDEyLjUgMTlIMTQuNkMxNC43IDE5LjQgMTQuOCAxOS44IDE1IDIwLjJDMTUuOSAyMS45IDE4LjEgMjIuNSAxOS43IDIxLjZMMjAuOCAyMi43TTEwLjUgMTguNUMxMC41IDE5LjMgOS44IDIwIDkgMjBTNy41IDE5LjMgNy41IDE4LjUgOC4yIDE3IDkgMTcgMTAuNSAxNy43IDEwLjUgMTguNU0xOC4xIDIwQzE3LjIgMjAgMTYuNSAxOS4zIDE2LjUgMTguNVYxOC40TDE4LjEgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieUZhY2UgPSBcIk0xLDEyQzEsMTAuMTkgMi4yLDguNjYgMy44Niw4LjE3QzUuMjksNS4xMSA4LjQsMyAxMiwzQzE1LjYsMyAxOC43MSw1LjExIDIwLjE1LDguMTdDMjEuOCw4LjY2IDIzLDEwLjE5IDIzLDEyQzIzLDEzLjgxIDIxLjgsMTUuMzQgMjAuMTUsMTUuODNDMTguNzEsMTguODkgMTUuNiwyMSAxMiwyMUM4LjQsMjEgNS4yOSwxOC44OSAzLjg2LDE1LjgzQzIuMiwxNS4zNCAxLDEzLjgxIDEsMTJNMTQuNSw5LjI1QTEuMjUsMS4yNSAwIDAsMCAxMy4yNSwxMC41QTEuMjUsMS4yNSAwIDAsMCAxNC41LDExLjc1QTEuMjUsMS4yNSAwIDAsMCAxNS43NSwxMC41QTEuMjUsMS4yNSAwIDAsMCAxNC41LDkuMjVNOS41LDkuMjVBMS4yNSwxLjI1IDAgMCwwIDguMjUsMTAuNUExLjI1LDEuMjUgMCAwLDAgOS41LDExLjc1QTEuMjUsMS4yNSAwIDAsMCAxMC43NSwxMC41QTEuMjUsMS4yNSAwIDAsMCA5LjUsOS4yNU03LjUsMTRDOC4yNiwxNS43NyAxMCwxNyAxMiwxN0MxNCwxNyAxNS43NCwxNS43NyAxNi41LDE0SDcuNU0zLDEyQzMsMTIuODIgMy41LDEzLjUzIDQuMjEsMTMuODRDNC4wNywxMy4yNSA0LDEyLjYzIDQsMTJDNCwxMS4zNyA0LjA3LDEwLjc1IDQuMjEsMTAuMTZDMy41LDEwLjQ3IDMsMTEuMTggMywxMk0yMSwxMkMyMSwxMS4xOCAyMC41LDEwLjQ3IDE5Ljc5LDEwLjE2QzE5LjkzLDEwLjc1IDIwLDExLjM3IDIwLDEyQzIwLDEyLjYzIDE5LjkzLDEzLjI1IDE5Ljc5LDEzLjg0QzIwLjUsMTMuNTMgMjEsMTIuODIgMjEsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieUZhY2VPdXRsaW5lID0gXCJNMTQuNSw5LjI1QTEuMjUsMS4yNSAwIDAsMSAxNS43NSwxMC41QTEuMjUsMS4yNSAwIDAsMSAxNC41LDExLjc1QTEuMjUsMS4yNSAwIDAsMSAxMy4yNSwxMC41QTEuMjUsMS4yNSAwIDAsMSAxNC41LDkuMjVNOS41LDkuMjVBMS4yNSwxLjI1IDAgMCwxIDEwLjc1LDEwLjVBMS4yNSwxLjI1IDAgMCwxIDkuNSwxMS43NUExLjI1LDEuMjUgMCAwLDEgOC4yNSwxMC41QTEuMjUsMS4yNSAwIDAsMSA5LjUsOS4yNU03LjUsMTRIMTYuNUMxNS43NCwxNS43NyAxNCwxNyAxMiwxN0MxMCwxNyA4LjI2LDE1Ljc3IDcuNSwxNE0xLDEyQzEsMTAuMTkgMi4yLDguNjYgMy44Niw4LjE3QzUuMjksNS4xMSA4LjQsMyAxMiwzQzE1LjYsMyAxOC43MSw1LjExIDIwLjE1LDguMTdDMjEuOCw4LjY2IDIzLDEwLjE5IDIzLDEyQzIzLDEzLjgxIDIxLjgsMTUuMzQgMjAuMTUsMTUuODNDMTguNzEsMTguODkgMTUuNiwyMSAxMiwyMUM4LjQsMjEgNS4yOSwxOC44OSAzLjg2LDE1LjgzQzIuMiwxNS4zNCAxLDEzLjgxIDEsMTJNMTIsNUM4LjgyLDUgNi4xNCw3LjEyIDUuMjgsMTBINUEyLDIgMCAwLDAgMywxMkEyLDIgMCAwLDAgNSwxNEg1LjI4QzYuMTQsMTYuODggOC44MiwxOSAxMiwxOUMxNS4xOCwxOSAxNy44NiwxNi44OCAxOC43MiwxNEgxOUEyLDIgMCAwLDAgMjEsMTJBMiwyIDAgMCwwIDE5LDEwSDE4LjcyQzE3Ljg2LDcuMTIgMTUuMTgsNSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhY2tidXJnZXIgPSBcIk01LDEzTDksMTdMNy42LDE4LjQyTDEuMTgsMTJMNy42LDUuNThMOSw3TDUsMTFIMjFWMTNINU0yMSw2VjhIMTFWNkgyMU0yMSwxNlYxOEgxMVYxNkgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWNrc3BhY2UgPSBcIk0yMiwzSDdDNi4zMSwzIDUuNzcsMy4zNSA1LjQxLDMuODhMMCwxMkw1LjQxLDIwLjExQzUuNzcsMjAuNjQgNi4zMSwyMSA3LDIxSDIyQTIsMiAwIDAsMCAyNCwxOVY1QTIsMiAwIDAsMCAyMiwzTTE5LDE1LjU5TDE3LjU5LDE3TDE0LDEzLjQxTDEwLjQxLDE3TDksMTUuNTlMMTIuNTksMTJMOSw4LjQxTDEwLjQxLDdMMTQsMTAuNTlMMTcuNTksN0wxOSw4LjQxTDE1LjQxLDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFja3NwYWNlT3V0bGluZSA9IFwiTTE5LDE1LjU5TDE3LjU5LDE3TDE0LDEzLjQxTDEwLjQxLDE3TDksMTUuNTlMMTIuNTksMTJMOSw4LjQxTDEwLjQxLDdMMTQsMTAuNTlMMTcuNTksN0wxOSw4LjQxTDE1LjQxLDEyTDE5LDE1LjU5TTIyLDNBMiwyIDAgMCwxIDI0LDVWMTlBMiwyIDAgMCwxIDIyLDIxSDdDNi4zMSwyMSA1Ljc3LDIwLjY0IDUuNDEsMjAuMTFMMCwxMkw1LjQxLDMuODhDNS43NywzLjM1IDYuMzEsMyA3LDNIMjJNMjIsNUg3TDIuMjgsMTJMNywxOUgyMlY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhY2tzcGFjZVJldmVyc2UgPSBcIk0yLDIxSDE3QzE3LjcsMjEgMTguMiwyMC42IDE4LjYsMjAuMUwyNCwxMkwxOC42LDMuOUMxOC4yLDMuNCAxNy43LDMgMTcsM0gyQTIsMiAwIDAsMCAwLDVWMTlBMiwyIDAgMCwwIDIsMjFNNSw4LjRMNi40LDdMMTAsMTAuNkwxMy42LDdMMTUsOC40TDExLjQsMTJMMTUsMTUuNkwxMy42LDE3TDEwLDEzLjRMNi40LDE3TDUsMTUuNkw4LjYsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlCYWNrc3BhY2VSZXZlcnNlT3V0bGluZSA9IFwiTTUsMTUuNTlMNi40MSwxN0wxMCwxMy40MUwxMy41OSwxN0wxNSwxNS41OUwxMS40MSwxMkwxNSw4LjQxTDEzLjU5LDdMMTAsMTAuNTlMNi40MSw3TDUsOC40MUw4LjU5LDEyTDUsMTUuNTlNMiwzQTIsMiAwIDAsMCAwLDVWMTlBMiwyIDAgMCwwIDIsMjFIMTdDMTcuNjksMjEgMTguMjMsMjAuNjQgMTguNTksMjAuMTFMMjQsMTJMMTguNTksMy44OEMxOC4yMywzLjM1IDE3LjY5LDMgMTcsM0gyTTIsNUgxN0wyMS43MiwxMkwxNywxOUgyVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFja3VwUmVzdG9yZSA9IFwiTTEyLDNBOSw5IDAgMCwwIDMsMTJIMEw0LDE2TDgsMTJINUE3LDcgMCAwLDEgMTIsNUE3LDcgMCAwLDEgMTksMTJBNyw3IDAgMCwxIDEyLDE5QzEwLjUsMTkgOS4wOSwxOC41IDcuOTQsMTcuN0w2LjUsMTkuMTRDOC4wNCwyMC4zIDkuOTQsMjEgMTIsMjFBOSw5IDAgMCwwIDIxLDEyQTksOSAwIDAsMCAxMiwzTTE0LDEyQTIsMiAwIDAsMCAxMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWN0ZXJpYSA9IFwiTTIxLDE2QzIxLDE1LjUgMjAuOTUsMTUuMDggMjAuODgsMTQuNjhMMjIuNDUsMTMuOUwyMS41NSwxMi4xTDIwLjE4LDEyLjc5QzE5LjYzLDExLjk2IDE4LjkxLDExLjUgMTguMjksMTEuMjhMMTguOTUsOS4zMkwxNy4wNSw4LjY4TDE2LjI5LDEwLjk2QzE0Ljk2LDEwLjgzIDE0LjE3LDEwLjMyIDEzLjcsOS43N0wxNS40NSw4LjlMMTQuNTUsNy4xTDEzLDcuODlDMTIuOTcsNy41OSAxMi44Niw2LjcyIDEyLjI4LDUuODdMMTMuODMsMy41NUwxMi4xNywyLjQ0TDEwLjc2LDQuNTZDMTAuMjgsNC4zMyA5LjcsNC4xNSA5LDQuMDZWMkg3VjQuMUM2LjI5LDQuMjUgNS43Myw0LjU0IDUuMzIsNC45MUwyLjcsMi4yOUwxLjI5LDMuNzFMNC4yNCw2LjY1QzQsNy4zOSA0LDggNCw4SDJWMTBINC4wNEM0LjEsMTAuNjMgNC4yMSwxMS4zNiA0LjQsMTIuMTVMMS42OCwxMy4wNUwyLjMxLDE0Ljk1TDUsMTQuMDVDNS4yNCwxNC41NiA1LjUsMTUuMDggNS44MiwxNS41OEwzLjQ0LDE3LjE3TDQuNTUsMTguODNMNy4wNywxNy4xNUM3LjYzLDE3LjcxIDguMjksMTguMjEgOS4wNiwxOC42NEw4LjEsMjAuNTVMOS44OSwyMS40NUwxMC44OSwxOS40NUwxMC43MywxOS4zNkMxMS42OCwxOS42OCAxMi43NiwxOS45IDE0LDE5Ljk3VjIySDE2VjE5LjkzQzE2Ljc2LDE5Ljg0IDE3LjgxLDE5LjY0IDE4Ljc3LDE5LjE5TDIwLjI5LDIwLjcxTDIxLjcsMTkuMjlMMjAuMzcsMTcuOTVDMjAuNzUsMTcuNDQgMjEsMTYuOCAyMSwxNk04LjUsMTFBMS41LDEuNSAwIDAsMSA3LDkuNUExLjUsMS41IDAgMCwxIDguNSw4QTEuNSwxLjUgMCAwLDEgMTAsOS41QTEuNSwxLjUgMCAwLDEgOC41LDExTTExLDE0QTEsMSAwIDAsMSAxMCwxM0ExLDEgMCAwLDEgMTEsMTJBMSwxIDAgMCwxIDEyLDEzQTEsMSAwIDAsMSAxMSwxNE0xNS41LDE3QTEuNSwxLjUgMCAwLDEgMTQsMTUuNUExLjUsMS41IDAgMCwxIDE1LjUsMTRBMS41LDEuNSAwIDAsMSAxNywxNS41QTEuNSwxLjUgMCAwLDEgMTUuNSwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYWN0ZXJpYU91dGxpbmUgPSBcIk05LDJIN1Y0LjFDNi4yOSw0LjI1IDUuNzMsNC41NCA1LjMyLDQuOTFMMi43LDIuMjlMMS4yOSwzLjcxTDQuMjQsNi42NUM0LDcuMzkgNCw4IDQsOEgyVjEwSDQuMDRDNC4xLDEwLjYzIDQuMjEsMTEuMzYgNC40LDEyLjE1TDEuNjgsMTMuMDVMMi4zMSwxNC45NUw1LDE0LjA1QzUuMjQsMTQuNTYgNS41LDE1LjA4IDUuODIsMTUuNThMMy40NCwxNy4xN0w0LjU1LDE4LjgzTDcuMDcsMTcuMTVDNy42MywxNy43MSA4LjI5LDE4LjIxIDkuMDYsMTguNjRMOC4xLDIwLjU1TDkuODksMjEuNDVMMTAuODksMTkuNDVMMTAuNzMsMTkuMzZDMTEuNjgsMTkuNjggMTIuNzYsMTkuOSAxNCwxOS45N1YyMkgxNlYxOS45M0MxNi43NiwxOS44NCAxNy44MSwxOS42NCAxOC43NywxOS4xOUwyMC4yOSwyMC43MUwyMS43LDE5LjI5TDIwLjM3LDE3Ljk1QzIwLjc1LDE3LjQ0IDIxLDE2LjggMjEsMTZDMjEsMTUuNSAyMC45NSwxNS4wOCAyMC44OCwxNC42OEwyMi40NSwxMy45TDIxLjU1LDEyLjFMMjAuMTgsMTIuNzlDMTkuNjMsMTEuOTYgMTguOTEsMTEuNSAxOC4yOSwxMS4yOEwxOC45NSw5LjMyTDE3LjA1LDguNjhMMTYuMjksMTAuOTZDMTQuOTYsMTAuODMgMTQuMTcsMTAuMzIgMTMuNyw5Ljc3TDE1LjQ1LDguOUwxNC41NSw3LjFMMTMsNy44OUMxMi45Nyw3LjU5IDEyLjg2LDYuNzIgMTIuMjgsNS44N0wxMy44MywzLjU1TDEyLjE3LDIuNDRMMTAuNzYsNC41NkMxMC4yOCw0LjMzIDkuNyw0LjE1IDksNC4wNk0xNSwxOEMxMi4wNiwxOCA5LjgxLDE3LjE4IDguMzEsMTUuNTZDNS42OCwxMi43MiA2LDguMiA2LDguMTdWOC4xMUw2LDguMDNDNiw3LjEgNi4zOSw2IDgsNkMxMC42Myw2IDEwLjk3LDcuNDMgMTEsOEMxMSwxMCAxMi42LDEzIDE3LDEzQzE3LjMzLDEzIDE5LDEzLjE1IDE5LDE2QzE5LDE3Ljg5IDE1LjAzLDE4IDE1LDE4TTguNSw4QTEuNSwxLjUgMCAwLDAgNyw5LjVBMS41LDEuNSAwIDAsMCA4LjUsMTFBMS41LDEuNSAwIDAsMCAxMCw5LjVBMS41LDEuNSAwIDAsMCA4LjUsOE0xMSwxMkExLDEgMCAwLDAgMTAsMTNBMSwxIDAgMCwwIDExLDE0QTEsMSAwIDAsMCAxMiwxM0ExLDEgMCAwLDAgMTEsMTJNMTUuNSwxNEExLjUsMS41IDAgMCwwIDE0LDE1LjVBMS41LDEuNSAwIDAsMCAxNS41LDE3QTEuNSwxLjUgMCAwLDAgMTcsMTUuNUExLjUsMS41IDAgMCwwIDE1LjUsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFkZ2VBY2NvdW50ID0gXCJNMTcsM0gxNFY2SDEwVjNIN0EyLDIgMCAwLDAgNSw1VjIxQTIsMiAwIDAsMCA3LDIzSDE3QTIsMiAwIDAsMCAxOSwyMVY1QTIsMiAwIDAsMCAxNywzTTEyLDhBMiwyIDAgMCwxIDE0LDEwQTIsMiAwIDAsMSAxMiwxMkEyLDIgMCAwLDEgMTAsMTBBMiwyIDAgMCwxIDEyLDhNMTYsMTZIOFYxNUM4LDEzLjY3IDEwLjY3LDEzIDEyLDEzQzEzLjMzLDEzIDE2LDEzLjY3IDE2LDE1VjE2TTEzLDVIMTFWMUgxM1Y1TTE2LDE5SDhWMThIMTZWMTlNMTIsMjFIOFYyMEgxMlYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWRnZUFjY291bnRBbGVydCA9IFwiTTE1LDNIMTJWNkg4VjNINUEyLDIgMCAwLDAgMyw1VjIxQTIsMiAwIDAsMCA1LDIzSDE1QTIsMiAwIDAsMCAxNywyMVY1QTIsMiAwIDAsMCAxNSwzTTEwLDhBMiwyIDAgMCwxIDEyLDEwQTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgOCwxMEEyLDIgMCAwLDEgMTAsOE0xNCwxNkg2VjE1QzYsMTMuNjcgOC42NywxMyAxMCwxM0MxMS4zMywxMyAxNCwxMy42NyAxNCwxNVYxNk0xMSw1SDlWMUgxMVY1TTE0LDE5SDZWMThIMTRWMTlNMTAsMjFINlYyMEgxMFYyMU0xOSwxM1Y3SDIxVjEzSDE5TTE5LDE3VjE1SDIxVjE3SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhZGdlQWNjb3VudEFsZXJ0T3V0bGluZSA9IFwiTTE1LDNIMTJWNUgxNVYyMUg1VjVIOFYzSDVBMiwyIDAgMCwwIDMsNVYyMUEyLDIgMCAwLDAgNSwyM0gxNUEyLDIgMCAwLDAgMTcsMjFWNUEyLDIgMCAwLDAgMTUsM00xMCw3QTIsMiAwIDAsMSAxMiw5QTIsMiAwIDAsMSAxMCwxMUEyLDIgMCAwLDEgOCw5QTIsMiAwIDAsMSAxMCw3TTE0LDE1SDZWMTRDNiwxMi42NyA4LjY3LDEyIDEwLDEyQzExLjMzLDEyIDE0LDEyLjY3IDE0LDE0VjE1TTE0LDE4SDZWMTdIMTRWMThNMTAsMjBINlYxOUgxMFYyME0xMSw1SDlWMUgxMVY1TTE5LDEzVjdIMjFWMTNIMTlNMTksMTdWMTVIMjFWMTdIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFkZ2VBY2NvdW50SG9yaXpvbnRhbCA9IFwiTTIyLDRIMTRWN0gxMFY0SDJBMiwyIDAgMCwwIDAsNlYyMEEyLDIgMCAwLDAgMiwyMkgyMkEyLDIgMCAwLDAgMjQsMjBWNkEyLDIgMCAwLDAgMjIsNE04LDlBMiwyIDAgMCwxIDEwLDExQTIsMiAwIDAsMSA4LDEzQTIsMiAwIDAsMSA2LDExQTIsMiAwIDAsMSA4LDlNMTIsMTdINFYxNkM0LDE0LjY3IDYuNjcsMTQgOCwxNEM5LjMzLDE0IDEyLDE0LjY3IDEyLDE2VjE3TTIwLDE4SDE0VjE2SDIwVjE4TTIwLDE0SDE0VjEySDIwVjE0TTIwLDEwSDE0VjhIMjBWMTBNMTMsNkgxMVYySDEzVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFkZ2VBY2NvdW50SG9yaXpvbnRhbE91dGxpbmUgPSBcIk04LDlBMiwyIDAgMCwxIDEwLDExQTIsMiAwIDAsMSA4LDEzQTIsMiAwIDAsMSA2LDExQTIsMiAwIDAsMSA4LDlNMTIsMTdINFYxNkM0LDE0LjY3IDYuNjcsMTQgOCwxNEM5LjMzLDE0IDEyLDE0LjY3IDEyLDE2VjE3TTIwLDhIMTRWMTBIMjBWOE0yMCwxMkgxNFYxNEgyMFYxMk0yMCwxNkgxNFYxOEgyMFYxNk0yMiw0SDE0VjZIMjJWMjBIMlY2SDEwVjRIMkEyLDIgMCAwLDAgMCw2VjIwQTIsMiAwIDAsMCAyLDIySDIyQTIsMiAwIDAsMCAyNCwyMFY2QTIsMiAwIDAsMCAyMiw0TTEzLDZIMTFWMkgxM1Y2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhZGdlQWNjb3VudE91dGxpbmUgPSBcIk0xNywzSDE0VjVIMTdWMjFIN1Y1SDEwVjNIN0EyLDIgMCAwLDAgNSw1VjIxQTIsMiAwIDAsMCA3LDIzSDE3QTIsMiAwIDAsMCAxOSwyMVY1QTIsMiAwIDAsMCAxNywzTTEyLDdBMiwyIDAgMCwxIDE0LDlBMiwyIDAgMCwxIDEyLDExQTIsMiAwIDAsMSAxMCw5QTIsMiAwIDAsMSAxMiw3TTE2LDE1SDhWMTRDOCwxMi42NyAxMC42NywxMiAxMiwxMkMxMy4zMywxMiAxNiwxMi42NyAxNiwxNFYxNU0xNiwxOEg4VjE3SDE2VjE4TTEyLDIwSDhWMTlIMTJWMjBNMTMsNUgxMVYxSDEzVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFkbWludG9uID0gXCJNMTIuMywyQzExLjMzLDIuMDMgMTAuNTgsMi44NCAxMC42MSwzLjhDMTAuNjIsNC4wNCAxMC42Nyw0LjI3IDEwLjc3LDQuNUwxMS4wNiw1LjE0VjUuMTRDMTEuMSw1LjI3IDExLjAzLDUuNDEgMTAuODksNS40NUMxMC44LDUuNSAxMC43LDUuNDUgMTAuNjMsNS4zN0wxMC4yMSw0LjgyQzkuODgsNC40IDkuMzgsNC4xNCA4Ljg1LDQuMTNDNy44OCw0LjExIDcuMDgsNC44OCA3LjA2LDUuODRDNy4wNSw2LjI2IDcuMTksNi42NiA3LjQ1LDdMNy44Nyw3LjVINy44OEM3Ljk2LDcuNjMgNy45Myw3Ljc5IDcuODIsNy44N0M3LjczLDcuOTQgNy42MSw3Ljk0IDcuNTMsNy44N0w3LDcuNDVDNi42Niw3LjE5IDYuMjUsNy4wNSA1Ljg0LDcuMDZDNC44OCw3LjA4IDQuMTEsNy44OCA0LjEzLDguODVDNC4xNCw5LjM4IDQuNCw5Ljg4IDQuODIsMTAuMjFMNS4zOSwxMC42NUM1LjUsMTAuNzUgNS41LDEwLjkxIDUuMzgsMTFDNS4zMSwxMS4wNyA1LjIxLDExLjA5IDUuMTIsMTEuMDVINS4xMUw0LjUsMTAuNzdDNC4yNywxMC42OCA0LjA0LDEwLjYyIDMuOCwxMC42MUMyLjg0LDEwLjU4IDIuMDMsMTEuMzQgMiwxMi4zMUMyLDEzLjAzIDIuNCwxMy42OSAzLjA2LDEzLjk3TDE0LjQ1LDE5LjA0TDE5LjA0LDE0LjQ1TDEzLjk3LDMuMDZDMTMuNjksMi4zOSAxMywxLjk3IDEyLjMsMk0xMy4xMyw2LjFDMTMuNTUsNi4wOSAxMy45Myw2LjMzIDE0LjA5LDYuNzFMMTcuMTQsMTMuNTVMMTMuMTksOS42MUwxMi4yNiw3LjVDMTEuOTYsNi44NyAxMi40Miw2LjEyIDEzLjEzLDYuMU05Ljg1LDguODVDMTAuMTIsOC44NSAxMC4zNyw4Ljk1IDEwLjU2LDkuMTVMMTUuMzcsMTMuOTZDMTUuNzcsMTQuMzQgMTUuNzgsMTQuOTcgMTUuNCwxNS4zN0MxNSwxNS43NyAxNC4zOCwxNS43OCAxMy45NiwxNS4zN0w5LjE1LDEwLjU2QzguNzUsMTAuMTggOC43NCw5LjU0IDkuMTMsOS4xNUM5LjMyLDguOTUgOS41OCw4Ljg1IDkuODUsOC44NU03LjEzLDEyLjE3QzcuMjYsMTIuMTcgNy40LDEyLjIxIDcuNSwxMi4yNkw5LjYzLDEzLjJMMTMuNTcsMTcuMTRMNi43MSwxNC4wOUM1LjY5LDEzLjY1IDYuMDMsMTIuMTQgNy4xMywxMi4xN00yMC4yOCwxNi4wNEwxNi4wNCwyMC4yOEwxNi44OSwyMS4xM0MxNy42NSwyMS44OCAxOC43NSwyMi4xNyAxOS43OCwyMS45QzIwLjgxLDIxLjYyIDIxLjYyLDIwLjgxIDIxLjksMTkuNzhDMjIuMTcsMTguNzUgMjEuODgsMTcuNjUgMjEuMTMsMTYuODlMMjAuMjgsMTYuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFnQ2FycnlPbiA9IFwiTTE0LjYgMjEuNEMxNSAyMS44IDE1LjQgMjIgMTYgMjJTMTcgMjEuOCAxNy40IDIxLjQgMTggMjAuNiAxOCAyMCAxNy44IDE5IDE3LjQgMTguNiAxNi41IDE4IDE2IDE4IDE1IDE4LjIgMTQuNiAxOC42IDE0IDE5LjQgMTQgMjAgMTQuMiAyMSAxNC42IDIxLjRNNiAxOUM2IDE5LjUgNi4yIDIwIDYuNiAyMC40QzcgMjAuOCA3LjUgMjEgOCAyMVY3QzcuNSA3IDcgNy4yIDYuNiA3LjZDNi4yIDggNiA4LjUgNiA5VjE5TTE2IDJIMTJDMTIgMi41IDEyLjIgMyAxMi42IDMuNEMxMyAzLjggMTMuNSA0IDE0IDRWN0g5VjIxSDEzLjJDMTMgMjAuNSAxMyAyMC4yIDEzIDIwQzEzIDE5LjIgMTMuMyAxOC41IDEzLjkgMTcuOUMxNC41IDE3LjMgMTUuMiAxNyAxNiAxN1YyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhZ0NhcnJ5T25DaGVjayA9IFwiTTE1LjI4LDE2LjY5TDE4LjE0LDEzLjg4TDE4Ljg0LDE0LjU4TDE1LjI4LDE4LjE0TDEzLjE3LDE2TDEzLjg4LDE1LjI4TDE1LjI4LDE2LjY5TTgsMjFBMiwyIDAgMCwxIDYsMTlWOUEyLDIgMCAwLDEgOCw3VjIxTTksN0gxNFY0QTIsMiAwIDAsMSAxMiwySDE2VjEwQTYsNiAwIDAsMSAyMiwxNkE2LDYgMCAwLDEgMTYsMjJDMTQuNzcsMjIgMTMuNjMsMjEuNjMgMTIuNjgsMjFIOVY3TTE2LDEyQTQsNCAwIDAsMCAxMiwxNkE0LDQgMCAwLDAgMTYsMjBBNCw0IDAgMCwwIDIwLDE2QTQsNCAwIDAsMCAxNiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdDYXJyeU9uT2ZmID0gXCJNMi4xIDQuOUw2IDguOVYxOUM2IDE5LjUgNi4yIDIwIDYuNiAyMC40QzcgMjAuOCA3LjUgMjEgOCAyMVYxMC44TDkgMTEuOFYyMUgxMy4yQzEzLjEgMjAuNiAxMyAyMC4yIDEzIDIwQzEzIDE4LjggMTMuNSAxOCAxNC42IDE3LjRMMTUuNCAxOC4yQzE0LjUgMTguNSAxNC4xIDE5LjIgMTQuMSAyMC4xQzE0LjEgMjAuNiAxNC4zIDIxLjEgMTQuNyAyMS41QzE1IDIxLjggMTUuNSAyMiAxNiAyMkMxNi45IDIyIDE3LjYgMjEuNiAxNy45IDIwLjdMMTkuMSAyMS45TDIwLjUgMjAuNUwzLjUgMy41TDIuMSA0LjlNMTIgMkMxMiAyLjUgMTIuMiAzIDEyLjYgMy40UzEzLjUgNCAxNCA0VjdIOS44TDE2IDEzLjJWMkgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdDaGVja2VkID0gXCJNMjIgMTlIMlYyMUgyMlYxOU00IDE1QzQgMTUuNSA0LjIgMTYgNC42IDE2LjRDNSAxNi44IDUuNSAxNyA2IDE3VjZDNS41IDYgNSA2LjIgNC42IDYuNkM0LjIgNyA0IDcuNSA0IDhWMTVNMTMuNSA2SDEwLjVDMTAuNSA1LjYgMTAuNiA1LjIgMTAuOSA0LjlDMTEuMiA0LjYgMTEuNSA0LjUgMTIgNC41QzEyLjQgNC41IDEyLjggNC42IDEzLjEgNC45QzEzLjMgNS4yIDEzLjUgNS42IDEzLjUgNk03IDZWMTdIMTdWNkgxNUMxNSA1LjIgMTQuNyA0LjUgMTQuMSAzLjlTMTIuOCAzIDEyIDNDMTEuMiAzIDEwLjUgMy4zIDkuOSAzLjlDOS4zIDQuNSA5IDUuMiA5IDZIN00xOCAxN0MxOC41IDE3IDE5IDE2LjggMTkuNCAxNi40QzE5LjggMTYgMjAgMTUuNSAyMCAxNVY4QzIwIDcuNSAxOS44IDcgMTkuNCA2LjZDMTkgNi4yIDE4LjUgNiAxOCA2VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhZ1BlcnNvbmFsID0gXCJNMTYsNVY0QTIsMiAwIDAsMCAxNCwySDEwQTIsMiAwIDAsMCA4LDRWNUE0LDQgMCAwLDAgNCw5VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY5QTQsNCAwIDAsMCAxNiw1TTEwLDRIMTRWNUgxMFY0TTEyLDlMMTQsMTFMMTIsMTNMMTAsMTFMMTIsOU0xOCwxNkg5VjE4SDhWMTZINlYxNUgxOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdQZXJzb25hbE9mZiA9IFwiTTIwLDE5LjM1TDIuMzgsMS43M0wxLjExLDNMNC43Nyw2LjY2QzQuMjcsNy4zNCA0LDguMTYgNCw5VjIwQTIsMiAwIDAsMCA2LDIySDE4QzE4LjU2LDIyIDE5LjA4LDIxLjc2IDE5LjQ2LDIxLjM1TDIwLjg0LDIyLjczTDIyLjExLDIxLjQ2TDIwLDE5LjM1TTksMTZWMThIOFYxNkg2VjE1SDEzLjExTDE0LjExLDE2SDlNMjAsOUE0LDQgMCAwLDAgMTYsNVY0QTIsMiAwIDAsMCAxNCwySDEwQTIsMiAwIDAsMCA4LDRWNC44TDIwLDE2LjhWOU0xNCw1SDEwVjRIMTRWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdQZXJzb25hbE9mZk91dGxpbmUgPSBcIk0yMCwxOS4zNUwyLjM4LDEuNzNMMS4xMSwzTDQuNzcsNi42NkM0LjI3LDcuMzQgNCw4LjE2IDQsOVYyMEEyLDIgMCAwLDAgNiwyMkgxOEMxOC41NiwyMiAxOS4wOCwyMS43NiAxOS40NiwyMS4zNUwyMC44NCwyMi43M0wyMi4xMSwyMS40NkwyMCwxOS4zNU02LDlDNiw4LjY5IDYuMDgsOC4zOCA2LjIyLDguMTFMMTMuMTEsMTVINlY5TTE4LDIwSDZWMTZIOFYxOEg5VjE2SDE0LjExTDE4LDE5Ljg5VjIwTTE2LDdBMiwyIDAgMCwxIDE4LDlWMTQuOEwyMCwxNi44VjlBNCw0IDAgMCwwIDE2LDVWNEEyLDIgMCAwLDAgMTQsMkgxMEEyLDIgMCAwLDAgOCw0VjQuOEwxMC4yLDdIMTZNMTAsNEgxNFY1SDEwVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFnUGVyc29uYWxPdXRsaW5lID0gXCJNMTYsNVY0QTIsMiAwIDAsMCAxNCwySDEwQTIsMiAwIDAsMCA4LDRWNUE0LDQgMCAwLDAgNCw5VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY5QTQsNCAwIDAsMCAxNiw1TTEwLDRIMTRWNUgxMFY0TTEyLDlMMTQsMTFMMTIsMTNMMTAsMTFMMTIsOU0xOCwyMEg2VjE2SDhWMThIOVYxNkgxOFYyME0xOCwxNUg2VjlBMiwyIDAgMCwxIDgsN0gxNkEyLDIgMCAwLDEgMTgsOVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdTdWl0Y2FzZSA9IFwiTTE3LjAzIDZDMTguMTEgNiAxOSA2Ljg4IDE5IDhWMTlDMTkgMjAuMTMgMTguMTEgMjEgMTcuMDMgMjFDMTcuMDMgMjEuNTggMTYuNTYgMjIgMTYgMjJDMTUuNSAyMiAxNSAyMS41OCAxNSAyMUg5QzkgMjEuNTggOC41IDIyIDggMjJDNy40NCAyMiA2Ljk3IDIxLjU4IDYuOTcgMjFDNS44OSAyMSA1IDIwLjEzIDUgMTlWOEM1IDYuODggNS44OSA2IDYuOTcgNkg5VjNDOSAyLjQyIDkuNDYgMiAxMCAySDE0QzE0LjU0IDIgMTUgMi40MiAxNSAzVjZIMTcuMDNNMTMuNSA2VjMuNUgxMC41VjZIMTMuNU04IDlWMThIOS41VjlIOE0xNC41IDlWMThIMTZWOUgxNC41TTExLjI1IDlWMThIMTIuNzVWOUgxMS4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdTdWl0Y2FzZU9mZiA9IFwiTTIgNC43N0wzLjI4IDMuNUwyMSAyMS4yMkwxOS43MyAyMi41TDE4IDIwLjc2QzE3LjcxIDIwLjkzIDE3LjM4IDIxIDE3LjAzIDIxQzE3LjAzIDIxLjU4IDE2LjU2IDIyIDE2IDIyQzE1LjUgMjIgMTUgMjEuNTggMTUgMjFIOUM5IDIxLjU4IDguNSAyMiA4IDIyQzcuNDQgMjIgNi45NyAyMS41OCA2Ljk3IDIxQzUuODkgMjEgNSAyMC4xMyA1IDE5VjcuNzdMMiA0Ljc3TTE3LjAzIDZDMTguMTEgNiAxOSA2Ljg4IDE5IDhWMTYuNjhMMTYgMTMuNjhWOUgxNC41VjEyLjE4TDEyLjc1IDEwLjQzVjlIMTEuMzJMOC4zMSA2SDlWM0M5IDIuNDIgOS40NiAyIDEwIDJIMTRDMTQuNTQgMiAxNSAyLjQyIDE1IDNWNkgxNy4wM004IDE4SDkuNVYxMi4yN0w4IDEwLjc3VjE4TTExLjI1IDE4SDEyLjc1VjE1LjVMMTEuMjUgMTRWMThNMTQuNSAxOEgxNS4yM0wxNC41IDE3LjI3VjE4TTEzLjUgNlYzLjVIMTAuNVY2SDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFnU3VpdGNhc2VPZmZPdXRsaW5lID0gXCJNMiA0Ljc3TDMuMjggMy41TDIxIDIxLjIyTDE5LjczIDIyLjVMMTggMjAuNzZDMTcuNzEgMjAuOTMgMTcuMzggMjEgMTcuMDMgMjFDMTcuMDMgMjEuNTggMTYuNTYgMjIgMTYgMjJDMTUuNSAyMiAxNSAyMS41OCAxNSAyMUg5QzkgMjEuNTggOC41IDIyIDggMjJDNy40NCAyMiA2Ljk3IDIxLjU4IDYuOTcgMjFDNS44OSAyMSA1IDIwLjEzIDUgMTlMNSA3Ljc4TDIgNC43N005LjUgMThIOFYxMC43OEw2Ljk3IDkuNzRWMTlIMTYuMjNMMTUuMjUgMThIMTQuNVYxNy4yNkwxMi43NSAxNS41VjE4SDExLjI1VjE0TDkuNSAxMi4yOFYxOE0xMi43NSA5VjEwLjQzTDExLjMyIDlIMTIuNzVNMTQuNSA5SDE2VjEzLjY3TDE0LjUgMTIuMTdWOU0xNy4wMyA2QzE4LjExIDYgMTkgNi44OCAxOSA4VjE2LjY4TDE3LjAzIDE0LjdWOEgxMC4zM0w4LjMxIDZIOVYzQzkgMi40MiA5LjQ2IDIgMTAgMkgxNEMxNC41NCAyIDE1IDIuNDIgMTUgM1Y2SDE3LjAzTTEwLjUgMy41VjZIMTMuNVYzLjVIMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdTdWl0Y2FzZU91dGxpbmUgPSBcIk05LjUgMThWOUg4VjE4TTEyLjc1IDE4VjlIMTEuMjVWMThNMTYgMThWOUgxNC41VjE4TTE3LjAzIDZDMTguMTEgNiAxOSA2Ljg4IDE5IDhWMTlDMTkgMjAuMTMgMTguMTEgMjEgMTcuMDMgMjFDMTcuMDMgMjEuNTggMTYuNTYgMjIgMTYgMjJDMTUuNSAyMiAxNSAyMS41OCAxNSAyMUg5QzkgMjEuNTggOC41IDIyIDggMjJDNy40NCAyMiA2Ljk3IDIxLjU4IDYuOTcgMjFDNS44OSAyMSA1IDIwLjEzIDUgMTlWOEM1IDYuODggNS44OSA2IDYuOTcgNkg5VjNDOSAyLjQyIDkuNDYgMiAxMCAySDE0QzE0LjU0IDIgMTUgMi40MiAxNSAzVjZNMTAuNSAzLjVWNkgxMy41VjMuNU0xNy4wMyAxOVY4SDYuOTdWMTlcIjtcclxuZXhwb3J0IHZhciBtZGlCYWd1ZXR0ZSA9IFwiTTUgMjJDMy42OCAyMiAzLjE1IDE5LjY0IDMuMDQgMTguN0E1LjU2IDUuNTYgMCAwIDEgMy4zNiAxNkEyLjUgMi41IDAgMCAxIDUuMjMgMTQuMzhDNi40IDE0LjE4IDcuMjMgMTQuODggOC4yOSAxNS4xMkExLjIxIDEuMjEgMCAwIDAgOS44NSAxMy43NUM5LjQxIDEyLjAzIDYuMjggMTIgNSAxMkM1IDEwLjE0IDcuMDQgOS45IDguNSAxMC4wNEExMC44IDEwLjggMCAwIDEgMTEuMDQgMTAuNkMxMS41NCAxMC43NyAxMi4xMiAxMS4yIDEyLjY3IDExLjE2QzEzLjUgMTEuMDkgMTMuNjcgMTAuMjMgMTMuMzEgOS42QzEyLjQ0IDguMTIgOS45NyA4IDguNSA4QzguNSA2IDEwLjIzIDUuNjIgMTEuODkgNS45MkExMS41OCAxMS41OCAwIDAgMSAxNC4zOCA2LjcxQzE0Ljg5IDYuOTMgMTUuNSA3LjM1IDE2LjA2IDcuMTZDMTcuNSA2LjcyIDE2IDUuMTggMTUuMzYgNC44MUE2LjYgNi42IDAgMCAwIDEzLjk0IDQuMjNDMTMuNCA0LjA3IDEyLjc0IDQuMTMgMTMuMjMgMy41QTUuMTMgNS4xMyAwIDAgMSAxNS45NiAyLjI2QzE3Ljg1IDEuODIgMjAuNDYgMS43NCAyMC45MiA0LjEyQTUuMyA1LjMgMCAwIDEgMjAuMDcgNy43QTM4Ljk2IDM4Ljk2IDAgMCAxIDEzLjIyIDE2LjMzQTM2LjYgMzYuNiAwIDAgMSA4LjYyIDIwLjMyQzcuNjIgMjEuMDQgNi4zIDIyIDUgMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFsbG9vbiA9IFwiTTEzLjE2LDEyLjc0TDE0LDE0SDEyLjVDMTIuMzUsMTYuNzEgMTIsMTkuNDEgMTEuNSwyMi4wOEwxMC41LDIxLjkyQzExLDE5LjMgMTEuMzQsMTYuNjYgMTEuNSwxNEgxMEwxMC44NCwxMi43NEM4LjY0LDExLjc5IDcsOC4zNiA3LDZBNSw1IDAgMCwxIDEyLDFBNSw1IDAgMCwxIDE3LDZDMTcsOC4zNiAxNS4zNiwxMS43OSAxMy4xNiwxMi43NFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWxsb3QgPSBcIk0xMyw5LjVIMThWNy41SDEzVjkuNU0xMywxNi41SDE4VjE0LjVIMTNWMTYuNU0xOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFNNiwxMUgxMVY2SDZWMTFNNyw3SDEwVjEwSDdWN002LDE4SDExVjEzSDZWMThNNywxNEgxMFYxN0g3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbGxvdE91dGxpbmUgPSBcIk0xMyw3LjVIMThWOS41SDEzVjcuNU0xMywxNC41SDE4VjE2LjVIMTNWMTQuNU0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xOSwxOVY1SDVWMTlIMTlNMTEsNlYxMUg2VjZIMTFNMTAsMTBWN0g3VjEwSDEwTTExLDEzVjE4SDZWMTNIMTFNMTAsMTdWMTRIN1YxN0gxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWxsb3RSZWNvdW50ID0gXCJNMTksMTJWMTMuNUE0LDQgMCAwLDEgMjMsMTcuNUMyMywxOC4zMiAyMi43NSwxOS4wOCAyMi4zMywxOS43MUwyMS4yNCwxOC42MkMyMS40MSwxOC4yOCAyMS41LDE3LjkgMjEuNSwxNy41QTIuNSwyLjUgMCAwLDAgMTksMTVWMTYuNUwxNi43NSwxNC4yNUwxOSwxMk0xOSwyM1YyMS41QTQsNCAwIDAsMSAxNSwxNy41QzE1LDE2LjY4IDE1LjI1LDE1LjkyIDE1LjY3LDE1LjI5TDE2Ljc2LDE2LjM4QzE2LjU5LDE2LjcyIDE2LjUsMTcuMSAxNi41LDE3LjVBMi41LDIuNSAwIDAsMCAxOSwyMFYxOC41TDIxLjI1LDIwLjc1TDE5LDIzTTEwLDE3SDdWMTRIMTBWMTdNMTAsN1YxMEg3VjdIMTBNNSwyMUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTEuMTdDMjAuNSwxMS4wNiAyMCwxMSAxOS41LDExQTYuNSw2LjUgMCAwLDAgMTMsMTcuNUMxMywxOC43OSAxMy4zOCwyMCAxNCwyMUg1TTEzLDkuNUgxOFY3LjVIMTNWOS41TTExLDEzSDZWMThIMTFWMTNNMTEsNkg2VjExSDExVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFsbG90UmVjb3VudE91dGxpbmUgPSBcIk02LDE4VjEzSDExVjE4SDZNNywxNFYxN0gxMFYxNEg3TTEzLDcuNUgxOFY5LjVIMTNWNy41TTUsMjFBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjExLjE3QzIwLjUsMTEuMDYgMjAsMTEgMTkuNSwxMUgxOVY1SDVWMTlIMTMuMTdDMTMuMzQsMTkuNzIgMTMuNjMsMjAuMzkgMTQsMjFINU0xMSw2VjExSDZWNkgxMU0xMCwxMFY3SDdWMTBIMTBNMTksMTJWMTMuNUE0LDQgMCAwLDEgMjMsMTcuNUMyMywxOC4zMiAyMi43NSwxOS4wOCAyMi4zMywxOS43MUwyMS4yNCwxOC42MkMyMS40MSwxOC4yOCAyMS41LDE3LjkgMjEuNSwxNy41QTIuNSwyLjUgMCAwLDAgMTksMTVWMTYuNUwxNi43NSwxNC4yNUwxOSwxMk0xOSwyM1YyMS41QTQsNCAwIDAsMSAxNSwxNy41QzE1LDE2LjY4IDE1LjI1LDE1LjkyIDE1LjY3LDE1LjI5TDE2Ljc2LDE2LjM4QzE2LjU5LDE2LjcyIDE2LjUsMTcuMSAxNi41LDE3LjVBMi41LDIuNSAwIDAsMCAxOSwyMFYxOC41TDIxLjI1LDIwLjc1TDE5LDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmRhZ2UgPSBcIk0xNy43MywxMkwyMS43MSw4LjA0QzIyLjEsNy42NSAyMi4xLDcgMjEuNzEsNi42M0wxNy4zNywyLjI5QzE3LDEuOSAxNi4zNSwxLjkgMTUuOTYsMi4yOUwxMiw2LjI3TDgsMi4yOUM3LjgsMi4xIDcuNTUsMiA3LjI5LDJDNy4wNCwyIDYuNzgsMi4xIDYuNTksMi4yOUwyLjI1LDYuNjNDMS44Niw3IDEuODYsNy42NSAyLjI1LDguMDRMNi4yMywxMkwyLjI1LDE2QzEuODYsMTYuMzkgMS44NiwxNyAyLjI1LDE3LjQxTDYuNTksMjEuNzVDNywyMi4xNCA3LjYxLDIyLjE0IDgsMjEuNzVMMTIsMTcuNzdMMTUuOTYsMjEuNzVDMTYuMTYsMjEuOTUgMTYuNDEsMjIuMDQgMTYuNjcsMjIuMDRDMTYuOTMsMjIuMDQgMTcuMTgsMjEuOTQgMTcuMzgsMjEuNzVMMjEuNzIsMTcuNDFDMjIuMTEsMTcgMjIuMTEsMTYuMzkgMjEuNzIsMTZMMTcuNzMsMTJNMTIsOUExLDEgMCAwLDEgMTMsMTBBMSwxIDAgMCwxIDEyLDExQTEsMSAwIDAsMSAxMSwxMEExLDEgMCAwLDEgMTIsOU03LjI5LDEwLjk2TDMuNjYsNy4zNEw3LjI5LDMuNzFMMTAuOTEsNy4zM0w3LjI5LDEwLjk2TTEwLDEzQTEsMSAwIDAsMSA5LDEyQTEsMSAwIDAsMSAxMCwxMUExLDEgMCAwLDEgMTEsMTJBMSwxIDAgMCwxIDEwLDEzTTEyLDE1QTEsMSAwIDAsMSAxMSwxNEExLDEgMCAwLDEgMTIsMTNBMSwxIDAgMCwxIDEzLDE0QTEsMSAwIDAsMSAxMiwxNU0xNCwxMUExLDEgMCAwLDEgMTUsMTJBMSwxIDAgMCwxIDE0LDEzQTEsMSAwIDAsMSAxMywxMkExLDEgMCAwLDEgMTQsMTFNMTYuNjYsMjAuMzRMMTMuMDMsMTYuNzJMMTYuNjYsMTMuMDlMMjAuMjgsMTYuNzFMMTYuNjYsMjAuMzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFuZGNhbXAgPSBcIk0yMiw2TDE1LjUsMThIMkw4LjUsNkgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYW5rID0gXCJNMTEuNSwxTDIsNlY4SDIxVjZNMTYsMTBWMTdIMTlWMTBNMiwyMkgyMVYxOUgyTTEwLDEwVjE3SDEzVjEwTTQsMTBWMTdIN1YxMEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmtDaGVjayA9IFwiTTEwLjUgMTdWMTBIMTMuNVYxNi42MUMxMy40NCAxNi43MyAxMy40IDE2Ljg3IDEzLjM1IDE3SDEwLjVNMTkgMTNDMTkuMTcgMTMgMTkuMzMgMTMgMTkuNSAxMy4wM1YxMEgxNi41VjEzLjU1QzE3LjI2IDEzLjIgMTguMTEgMTMgMTkgMTNNNy41IDE3VjEwSDQuNVYxN0g3LjVNMjEuNSA2TDEyIDFMMi41IDZWOEgyMS41VjZNMi41IDE5VjIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMDkgMTMgMTlIMi41TTIxLjM0IDE2TDE3Ljc1IDE5LjU5TDE2LjE2IDE4TDE1IDE5LjE2TDE3Ljc1IDIyLjE2TDIyLjUgMTcuNDFMMjEuMzQgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFua01pbnVzID0gXCJNMTQsMTdIMjJWMTlIMTRWMTdNMTEuNSwxTDIxLDZWOEgyVjZMMTEuNSwxTTE2LDEwSDE5VjEyLjA4TDE4LDEyQzE3LjMsMTIgMTYuNjMsMTIuMTIgMTYsMTIuMzRWMTBNMiwyMlYxOUgxMi4wOEMxMi4yNywyMC4xNCAxMi43OSwyMS4xNyAxMy41MywyMkgyTTEwLDEwSDEzVjE0LjY4QzEyLjU0LDE1LjM3IDEyLjIyLDE2LjE1IDEyLjA4LDE3SDEwVjEwTTQsMTBIN1YxN0g0VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmtPZmYgPSBcIk0xMS4yIDhMNi44OSAzLjY5TDEyIDFMMjEuNSA2VjhIMTEuMk0xOS41IDE2LjNWMTBIMTYuNVYxMy4zTDE5LjUgMTYuM00yMS41IDIwLjg1VjIwLjg0TDE5LjY2IDE5SDE5LjY1TDE3LjY1IDE3SDE3LjY2TDE2LjUgMTUuODRWMTUuODVMMTMuNSAxMi44NVYxMi44NEwxMC42NiAxMEgxMC42Nkw4LjY2IDhIOC42NkwyLjM5IDEuNzNMMS4xMSAzTDMuNTYgNS40NUwyLjUgNlY4SDYuMTFMMTAuNSAxMi4zOVYxN0gxMy41VjE1LjM5TDE3LjExIDE5SDIuNVYyMkgyMC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyMS41IDIwLjg1TTQuNSAxMFYxN0g3LjVWMTBINC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmtPZmZPdXRsaW5lID0gXCJNMTcgMTMuOFYxMEgxOVYxNS44TDE3IDEzLjhNMTIgMy4yNkwxNy4yMSA2SDkuMkwxMS4yIDhIMjEuNVY2TDEyIDFMNi44OSAzLjY5TDguMzcgNS4xN0wxMiAzLjI2TTUgMTBWMTdIN1YxMEg1TTIxLjUgMjAuODVWMjAuODRMMTkuNjYgMTlIMTkuNjVMMTcuNjUgMTdIMTcuNjZMMTcgMTYuMzRWMTYuMzVMMTMgMTIuMzVWMTIuMzRMMTEgMTAuMzRWMTAuMzVMOC42NiA4SDguNjZMMi4zOSAxLjczTDEuMTEgM0wzLjU2IDUuNDVMMi41IDZWOEg2LjExTDExIDEyLjg5VjE3SDEzVjE0Ljg5TDE3LjExIDE5SDIuNVYyMUgxOS4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyMS41IDIwLjg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmtPdXRsaW5lID0gXCJNNi41LDEwSDQuNVYxN0g2LjVWMTBNMTIuNSwxMEgxMC41VjE3SDEyLjVWMTBNMjEsMTlIMlYyMUgyMVYxOU0xOC41LDEwSDE2LjVWMTdIMTguNVYxME0xMS41LDMuMjZMMTYuNzEsNkg2LjI5TDExLjUsMy4yNk0xMS41LDFMMiw2VjhIMjFWNkwxMS41LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFua1BsdXMgPSBcIk0xNywxNEgxOVYxN0gyMlYxOUgxOVYyMkgxN1YxOUgxNFYxN0gxN1YxNE0xMS41LDFMMjEsNlY4SDJWNkwxMS41LDFNMTYsMTBIMTlWMTIuMDhMMTgsMTJDMTcuMywxMiAxNi42MywxMi4xMiAxNiwxMi4zNFYxME0yLDIyVjE5SDEyLjA4QzEyLjI3LDIwLjE0IDEyLjc5LDIxLjE3IDEzLjUzLDIySDJNMTAsMTBIMTNWMTQuNjhDMTIuNTQsMTUuMzcgMTIuMjIsMTYuMTUgMTIuMDgsMTdIMTBWMTBNNCwxMEg3VjE3SDRWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFua1JlbW92ZSA9IFwiTTE0LjQ2LDE1Ljg4TDE1Ljg4LDE0LjQ2TDE4LDE2LjU5TDIwLjEyLDE0LjQ2TDIxLjU0LDE1Ljg4TDE5LjQxLDE4TDIxLjU0LDIwLjEyTDIwLjEyLDIxLjU0TDE4LDE5LjQxTDE1Ljg4LDIxLjU0TDE0LjQ2LDIwLjEyTDE2LjU5LDE4TDE0LjQ2LDE1Ljg4TTExLjUsMUwyMSw2VjhIMlY2TDExLjUsMU0xNiwxMEgxOVYxMi4wOEwxOCwxMkMxNy4zLDEyIDE2LjYzLDEyLjEyIDE2LDEyLjM0VjEwTTIsMjJWMTlIMTIuMDhDMTIuMjcsMjAuMTQgMTIuNzksMjEuMTcgMTMuNTMsMjJIMk0xMCwxMEgxM1YxNC42OEMxMi41NCwxNS4zNyAxMi4yMiwxNi4xNSAxMi4wOCwxN0gxMFYxME00LDEwSDdWMTdINFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYW5rVHJhbnNmZXIgPSBcIk0xNSwxNFYxMUgxOFY5TDIyLDEyLjVMMTgsMTZWMTRIMTVNMTQsNy43VjlIMlY3LjdMOCw0TDE0LDcuN003LDEwSDlWMTVIN1YxME0zLDEwSDVWMTVIM1YxME0xMywxMFYxMi41TDExLDE0LjNWMTBIMTNNOS4xLDE2TDguNSwxNi41TDEwLjIsMThIMlYxNkg5LjFNMTcsMTVWMThIMTRWMjBMMTAsMTYuNUwxNCwxM1YxNUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYW5rVHJhbnNmZXJJbiA9IFwiTTIsMTVWMTJINVYxMEw5LDEzLjVMNSwxN1YxNUgyTTIyLDguN1YxMEgxMFY4LjdMMTYsNUwyMiw4LjdNMTAsMTdIMjJWMTlIMTBWMTdNMTUsMTFIMTdWMTZIMTVWMTFNMTEsMTFIMTNWMTZIMTFWMTFNMTksMTFIMjFWMTZIMTlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFua1RyYW5zZmVyT3V0ID0gXCJNMTUsMTVWMTJIMThWMTBMMjIsMTMuNUwxOCwxN1YxNUgxNU0xNCw4LjdWMTBIMlY4LjdMOCw1TDE0LDguN00yLDE3SDE0VjE5SDJWMTdNNywxMUg5VjE2SDdWMTFNMywxMUg1VjE2SDNWMTFNMTEsMTFIMTNWMTZIMTFWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFyY29kZSA9IFwiTTIsNkg0VjE4SDJWNk01LDZINlYxOEg1VjZNNyw2SDEwVjE4SDdWNk0xMSw2SDEyVjE4SDExVjZNMTQsNkgxNlYxOEgxNFY2TTE3LDZIMjBWMThIMTdWNk0yMSw2SDIyVjE4SDIxVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFyY29kZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE2IDE3Ljg5VjE4SDE0VjE1Ljg5TDEyIDEzLjg5VjE4SDExVjEyLjg5TDEwIDExLjg5VjE4SDdWOC44OUw2IDcuODlWMThINVY2Ljg5TDEuMTEgM0wyLjM5IDEuNzNMNyA2LjM0TDEwIDkuMzRMMTEgMTAuMzRMMTIgMTEuMzRMMTQgMTMuMzVWMTMuMzRMMTYgMTUuMzRWMTUuMzVMMTcgMTYuMzVWMTYuMzRMMTguNjYgMThIMTguNjVMMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNNMTYgNkgxNFYxMC44TDE2IDEyLjhWNk0xMiA2SDExVjcuOEwxMiA4LjhWNk0yMCA2SDE3VjEzLjhMMjAgMTYuOFY2TTIyIDE4VjZIMjFWMTcuOEwyMS4yIDE4SDIyTTEwIDZIOS4yTDEwIDYuOFY2TTIgMThINFY2SDJWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFyY29kZVNjYW4gPSBcIk00LDZINlYxOEg0VjZNNyw2SDhWMThIN1Y2TTksNkgxMlYxOEg5VjZNMTMsNkgxNFYxOEgxM1Y2TTE2LDZIMThWMThIMTZWNk0xOSw2SDIwVjE4SDE5VjZNMiw0VjhIMFY0QTIsMiAwIDAsMSAyLDJINlY0SDJNMjIsMkEyLDIgMCAwLDEgMjQsNFY4SDIyVjRIMThWMkgyMk0yLDE2VjIwSDZWMjJIMkEyLDIgMCAwLDEgMCwyMFYxNkgyTTIyLDIwVjE2SDI0VjIwQTIsMiAwIDAsMSAyMiwyMkgxOFYyMEgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXJsZXkgPSBcIk03LjMzLDE4LjMzQzYuNSwxNy4xNyA2LjUsMTUuODMgNi41LDE0LjVDOC4xNywxNS41IDkuODMsMTYuNSAxMC42NywxNy42N0wxMSwxOC4yM1YxNS45NUM5LjUsMTUuMDUgOC4wOCwxNC4xMyA3LjMzLDEzLjA4QzYuNSwxMS45MiA2LjUsMTAuNTggNi41LDkuMjVDOC4xNywxMC4yNSA5LjgzLDExLjI1IDEwLjY3LDEyLjQyTDExLDEzVjEwLjdDOS41LDkuOCA4LjA4LDguODggNy4zMyw3LjgzQzYuNSw2LjY3IDYuNSw1LjMzIDYuNSw0QzguMTcsNSA5LjgzLDYgMTAuNjcsNy4xN0MxMC43Nyw3LjMxIDEwLjg2LDcuNDYgMTAuOTQsNy42MkMxMC43Nyw3IDEwLjY2LDYuNDIgMTAuNjUsNS44MkMxMC42NCw0LjMxIDExLjMsMi43NiAxMS45NiwxLjIxQzEyLjY1LDIuNjkgMTMuMzQsNC4xOCAxMy4zNSw1LjY5QzEzLjM2LDYuMzIgMTMuMjUsNi45NiAxMy4wNyw3LjU5QzEzLjE1LDcuNDUgMTMuMjMsNy4zMSAxMy4zMyw3LjE3QzE0LjE3LDYgMTUuODMsNSAxNy41LDRDMTcuNSw1LjMzIDE3LjUsNi42NyAxNi42Nyw3LjgzQzE1LjkyLDguODggMTQuNSw5LjggMTMsMTAuN1YxM0wxMy4zMywxMi40MkMxNC4xNywxMS4yNSAxNS44MywxMC4yNSAxNy41LDkuMjVDMTcuNSwxMC41OCAxNy41LDExLjkyIDE2LjY3LDEzLjA4QzE1LjkyLDE0LjEzIDE0LjUsMTUuMDUgMTMsMTUuOTVWMTguMjNMMTMuMzMsMTcuNjdDMTQuMTcsMTYuNSAxNS44MywxNS41IDE3LjUsMTQuNUMxNy41LDE1LjgzIDE3LjUsMTcuMTcgMTYuNjcsMTguMzNDMTUuOTIsMTkuMzggMTQuNSwyMC4zIDEzLDIxLjJWMjNIMTFWMjEuMkM5LjUsMjAuMyA4LjA4LDE5LjM4IDcuMzMsMTguMzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFybGV5T2ZmID0gXCJNMTEuOTYsMS4yMUMxMS4zLDIuNzYgMTAuNjQsNC4zMSAxMC42NSw1LjgyQzEwLjY2LDYuNDIgMTAuNzcsNyAxMC45NCw3LjYyQzEwLjg2LDcuNDYgMTAuNzcsNy4zMSAxMC42Nyw3LjE3QzkuODMsNiA4LjE3LDUgNi41LDRDNi41LDQuOCA2LjUsNS41OSA2LjY4LDYuMzZMMTMsMTIuNjhWMTAuN0MxNC41LDkuOCAxNS45Miw4Ljg4IDE2LjY3LDcuODNDMTcuNSw2LjY3IDE3LjUsNS4zMyAxNy41LDRDMTUuODMsNSAxNC4xNyw2IDEzLjMzLDcuMTdDMTMuMjMsNy4zMSAxMy4xNSw3LjQ1IDEzLjA3LDcuNTlDMTMuMjUsNi45NiAxMy4zNiw2LjMyIDEzLjM1LDUuNjlDMTMuMzQsNC4xOCAxMi42NSwyLjY5IDExLjk2LDEuMjFNMy4yOCw1LjVMMiw2Ljc3TDYuNjQsMTEuNDFDNi43NSwxMiA2Ljk1LDEyLjU1IDcuMzMsMTMuMDhDOC4wOCwxNC4xMyA5LjUsMTUuMDUgMTEsMTUuOTVWMTguMjNMMTAuNjcsMTcuNjdDOS44MywxNi41IDguMTcsMTUuNSA2LjUsMTQuNUM2LjUsMTUuODMgNi41LDE3LjE3IDcuMzMsMTguMzNDOC4wOCwxOS4zOCA5LjUsMjAuMyAxMSwyMS4yVjIzSDEzVjIxLjJDMTMuNzQsMjAuNzYgMTQuNDUsMjAuMzEgMTUuMDcsMTkuODRMMTguNzMsMjMuNUwyMCwyMi4yMkMxNCwxNi4yMyA5LjEsMTEuMzIgMy4yOCw1LjVNMTcuNSw5LjI1QzE1LjgzLDEwLjI1IDE0LjE3LDExLjI1IDEzLjMzLDEyLjQyTDEzLjEyLDEyLjc5TDE1LDE0LjY2QzE1LjY3LDE0LjE2IDE2LjI3LDEzLjY0IDE2LjY3LDEzLjA4QzE3LjUsMTEuOTIgMTcuNSwxMC41OCAxNy41LDkuMjVNMTcuNSwxNC41QzE2LjkzLDE0Ljg0IDE2LjM4LDE1LjE4IDE1Ljg1LDE1LjUzTDE3LjI5LDE2Ljk3QzE3LjUsMTYuMTcgMTcuNSwxNS4zMyAxNy41LDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFybiA9IFwiTTEyLDNMMyw4LjJWMjFIOUwxMS45LDE4TDE1LDIxSDIxVjguMkwxMiwzTTcuOSwyMFYxNEwxMC45LDE3TDcuOSwyME04LjksMTNIMTQuOUwxMS45LDE2TDguOSwxM00xNS45LDIwTDEyLjksMTdMMTUuOSwxNFYyME0xNSwxMUg4LjhWOUgxNVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXJyZWwgPSBcIk0xOCwxOUgxOVYyMUg1VjE5SDZWMTNINVYxMUg2VjVINVYzSDE5VjVIMThWMTFIMTlWMTNIMThWMTlNOSwxM0EzLDMgMCAwLDAgMTIsMTZBMywzIDAgMCwwIDE1LDEzQzE1LDExIDEyLDcuNjMgMTIsNy42M0MxMiw3LjYzIDksMTEgOSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNlYmFsbCA9IFwiTTEyLDJDOS41LDIgNy4yNSwyLjkgNS41LDQuNEM2LDQuODEgNi40MSw1LjI3IDYuOCw1Ljc2TDcuODksNS4xM0w4Ljg5LDYuODdMNy44OSw3LjQ0QzguNDUsOC41MyA4LjgyLDkuNzMgOC45NSwxMUgxMFYxMkwxMCwxM0g4Ljk1QzguODIsMTQuMjcgOC40NSwxNS40NyA3Ljg5LDE2LjU2TDguODksMTcuMTNMNy44OSwxOC44N0w2LjgsMTguMjRDNi40MSwxOC43MyA2LDE5LjE5IDUuNSwxOS42QzcuMjUsMjEuMSA5LjUsMjIgMTIsMjJDMTQuNSwyMiAxNi43NSwyMS4xIDE4LjUsMTkuNkMxOCwxOS4xOSAxNy41OSwxOC43MyAxNy4xOSwxOC4yNEwxNi4xMSwxOC44N0wxNS4xMSwxNy4xM0wxNi4xMSwxNi41NUMxNS41NSwxNS40NyAxNS4xOCwxNC4yNyAxNS4wNSwxM0gxNFYxMUgxNS4wNUMxNS4xOCw5LjczIDE1LjU1LDguNTMgMTYuMTEsNy40NUwxNS4xMSw2Ljg3TDE2LjExLDUuMTNMMTcuMTksNS43NkMxNy41OSw1LjI3IDE4LDQuODEgMTguNSw0LjRDMTYuNzUsMi45IDE0LjUsMiAxMiwyTTQuMTIsNS44NUMyLjc5LDcuNTUgMiw5LjY4IDIsMTJDMiwxNC4zMiAyLjc5LDE2LjQ1IDQuMTIsMTguMTVDNC40NiwxNy44NyA0Ljc2LDE3LjU1IDUuMDUsMTcuMjJMNC40MywxNi44N0w1LjQzLDE1LjEzTDYuMTYsMTUuNTZDNi41NSwxNC43NyA2LjgyLDEzLjkxIDYuOTMsMTNINlYxMkw2LDExSDYuOTNDNi44MiwxMC4wOSA2LjU1LDkuMjMgNi4xNiw4LjQ0TDUuNDMsOC44N0w0LjQzLDcuMTNMNS4wNSw2Ljc4QzQuNzYsNi40NSA0LjQ2LDYuMTMgNC4xMiw1Ljg1TTE5Ljg4LDUuODVDMTkuNTQsNi4xMyAxOS4yNCw2LjQ1IDE4Ljk1LDYuNzhMMTkuNTcsNy4xM0wxOC41Nyw4Ljg3TDE3Ljg0LDguNDRDMTcuNDUsOS4yMyAxNy4xOCwxMC4wOSAxNy4wNywxMUgxOFYxM0gxNy4wN0MxNy4xOCwxMy45MSAxNy40NSwxNC43NyAxNy44NCwxNS41NkwxOC41NywxNS4xM0wxOS41NywxNi44N0wxOC45NSwxNy4yMkMxOS4yNCwxNy41NSAxOS41NCwxNy44NyAxOS44OCwxOC4xNUMyMS4yMSwxNi40NSAyMiwxNC4zMiAyMiwxMkMyMiw5LjY4IDIxLjIxLDcuNTUgMTkuODgsNS44NVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNlYmFsbEJhdCA9IFwiTTIwLDJDMTkuNzIsMiAxOS41LDIuMTEgMTkuMjksMi4yOUw5Ljc5LDExLjc5QzkuNzUsMTEuODMgOS43MiwxMS44NyA3LjIzLDE1LjM1TDQsMTguNTlMMy43MSwxOC4yOUMzLjUsMTguMSAzLjI2LDE4IDMsMThDMi40NCwxOCAyLDE4LjQ0IDIsMTlDMiwxOS4yNiAyLjEsMTkuNSAyLjI5LDE5LjcxTDQuMjksMjEuNzFDNC42OCwyMi4xMSA1LjMxLDIyLjEyIDUuNzEsMjEuNzRDNi4xMSwyMS4zNSA2LjEyLDIwLjcyIDUuNzEsMjAuMjlMNS40MSwyMEw4LjY0LDE2Ljc3TDEyLjIxLDE0LjIxTDIxLjcxLDQuNzFDMjIuMSw0LjMyIDIyLjEsMy42OCAyMS43MSwzLjI5TDIwLjcxLDIuMjlDMjAuNSwyLjEgMjAuMjYsMiAyMCwyTTE4LjUsMTNBMi41LDIuNSAwIDAsMCAxNiwxNS41QTIuNSwyLjUgMCAwLDAgMTguNSwxOEEyLjUsMi41IDAgMCwwIDIxLDE1LjVBMi41LDIuNSAwIDAsMCAxOC41LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2ViYWxsRGlhbW9uZCA9IFwiTTUuNzkgMTIuNzlMMiA5QzIgOSA2IDMgMTIgM1MyMiA5IDIyIDlMMTguMjEgMTIuNzlMMTIgNi41OUw1Ljc5IDEyLjc5TTEzLjUgMThIMTAuNVYyMEwxMiAyMUwxMy41IDIwVjE4TTE2Ljc5IDE0LjIxTDE0LjIgMTYuOEMxMy42IDE2LjMxIDEyLjg0IDE2IDEyIDE2UzEwLjQgMTYuMzEgOS44IDE2LjhMNy4yMSAxNC4yMUwxMiA5LjQxTDE2Ljc5IDE0LjIxTTEzIDE0QzEzIDEzLjQ1IDEyLjU1IDEzIDEyIDEzUzExIDEzLjQ1IDExIDE0IDExLjQ1IDE1IDEyIDE1IDEzIDE0LjU1IDEzIDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2ViYWxsRGlhbW9uZE91dGxpbmUgPSBcIk0xMiAyQzUgMiAxIDkgMSA5TDkuMyAxNy4zQzkuNzQgMTYuNzcgMTAuMzIgMTYuMzcgMTEgMTYuMTdMNy44MyAxM0wxMiA4LjgzTDE2LjE3IDEzTDEzIDE2LjE3QzEzLjY4IDE2LjM3IDE0LjI3IDE2Ljc3IDE0LjcgMTcuM0wyMyA5QzIzIDkgMTkgMiAxMiAyTTE3LjU5IDExLjU5TDEyIDZMNi40MSAxMS41OUwzLjU5IDguNzZDNC45NSA3IDcuODkgNCAxMiA0QzE2LjA4IDQgMTkuMDMgNyAyMC40IDguNzdMMTcuNTkgMTEuNTlNMTMgMTNDMTMgMTMuNTUgMTIuNTUgMTQgMTIgMTRTMTEgMTMuNTUgMTEgMTMgMTEuNDUgMTIgMTIgMTIgMTMgMTIuNDUgMTMgMTNNMTMuNSAyMEwxMiAyMUwxMC41IDIwVjE4SDEzLjVWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFzaCA9IFwiTTUgOUg3LjMxTDcuNjMgNkg5LjYzTDkuMzEgOUgxMS4zMUwxMS42MyA2SDEzLjYzTDEzLjMxIDlIMTVWMTFIMTMuMUwxMi45IDEzSDE1VjE1SDEyLjY5TDEyLjM3IDE4SDEwLjM3TDEwLjY5IDE1SDguNjlMOC4zNyAxOEg2LjM3TDYuNjkgMTVINVYxM0g2LjlMNy4xIDExSDVWOU05LjEgMTFMOC45IDEzSDEwLjlMMTEuMSAxMU0xOSA2SDE3VjE0SDE5TTE5IDE2SDE3VjE4SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2tldCA9IFwiTTUuNSwyMUM0LjcyLDIxIDQuMDQsMjAuNTUgMy43MSwxOS45VjE5LjlMMS4xLDEwLjQ0TDEsMTBBMSwxIDAgMCwxIDIsOUg2LjU4TDExLjE4LDIuNDNDMTEuMzYsMi4xNyAxMS42NiwyIDEyLDJDMTIuMzQsMiAxMi42NSwyLjE3IDEyLjgzLDIuNDRMMTcuNDIsOUgyMkExLDEgMCAwLDEgMjMsMTBMMjIuOTYsMTAuMjlMMjAuMjksMTkuOUMxOS45NiwyMC41NSAxOS4yOCwyMSAxOC41LDIxSDUuNU0xMiw0Ljc0TDksOUgxNUwxMiw0Ljc0TTEyLDEzQTIsMiAwIDAsMCAxMCwxNUEyLDIgMCAwLDAgMTIsMTdBMiwyIDAgMCwwIDE0LDE1QTIsMiAwIDAsMCAxMiwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRGaWxsID0gXCJNMywySDZWNUgzVjJNNiw3SDlWMTBINlY3TTgsMkgxMVY1SDhWMk0xNywxMUwxMiw2SDE1VjJIMTlWNkgyMkwxNywxMU03LjUsMjJDNi43MiwyMiA2LjA0LDIxLjU1IDUuNzEsMjAuOVYyMC45TDMuMSwxMy40NEwzLDEzQTEsMSAwIDAsMSA0LDEySDIwQTEsMSAwIDAsMSAyMSwxM0wyMC45NiwxMy4yOUwxOC4yOSwyMC45QzE3Ljk2LDIxLjU1IDE3LjI4LDIyIDE2LjUsMjJINy41TTcuNjEsMjBIMTYuMzlMMTguNTcsMTRINS40Mkw3LjYxLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2tldE1pbnVzID0gXCJNMjMgMThWMjBIMTVWMThIMjNNMjMgMTBMMjIuOTYgMTAuMjlMMjIgMTMuOEMyMS4xMSAxMy4yOSAyMC4wOSAxMyAxOSAxM0MxNS42OSAxMyAxMyAxNS42OSAxMyAxOUMxMyAxOS43IDEzLjEzIDIwLjM3IDEzLjM1IDIxSDUuNUM0LjcyIDIxIDQuMDQgMjAuNTUgMy43MSAxOS45TDEuMSAxMC40NEwxIDEwQzEgOS40NSAxLjQ1IDkgMiA5SDYuNThMMTEuMTggMi40M0MxMS4zNiAyLjE3IDExLjY2IDIgMTIgMlMxMi42NSAyLjE3IDEyLjgzIDIuNDRMMTcuNDIgOUgyMkMyMi41NSA5IDIzIDkuNDUgMjMgMTBNMTQgMTVDMTQgMTMuOSAxMy4xMSAxMyAxMiAxM1MxMCAxMy45IDEwIDE1IDEwLjkgMTcgMTIgMTcgMTQgMTYuMTEgMTQgMTVNMTUgOUwxMiA0Ljc0TDkgOUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRNaW51c091dGxpbmUgPSBcIk0yMyAxOFYyMEgxNVYxOEgyM00xMiAxM0MxMC45IDEzIDEwIDEzLjkgMTAgMTVTMTAuOSAxNyAxMiAxNyAxNCAxNi4xIDE0IDE1IDEzLjEgMTMgMTIgMTNNMTMuMzUgMjFINS41QzQuNTggMjEgMy44MSAyMC4zOCAzLjU4IDE5LjU0TDEuMDQgMTAuMjdDMSAxMC4xOCAxIDEwLjA5IDEgMTBDMSA5LjQ1IDEuNDUgOSAyIDlINi43OUwxMS4xNyAyLjQ1QzExLjM2IDIuMTYgMTEuNjggMiAxMiAyUzEyLjY0IDIuMTYgMTIuODMgMi40NEwxNy4yMSA5SDIyQzIyLjU1IDkgMjMgOS40NSAyMyAxMEwyMi45NyAxMC4yN0wyMiAxMy44MUMyMS40MyAxMy41IDIwLjc5IDEzLjI0IDIwLjEyIDEzLjExTDIwLjcgMTFIMy4zMUw1LjUgMTlIMTNDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMU05LjIgOUgxNC44TDEyIDQuOEw5LjIgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRPZmYgPSBcIk0yMyAxMEwyMi45NiAxMC4yOUwyMC45IDE3LjdMMTIuMiA5SDE1TDEyIDQuNzRMMTAuMzIgNy4xMkw4Ljg5IDUuNjlMMTEuMTggMi40M0MxMS4zNiAyLjE3IDExLjY2IDIgMTIgMlMxMi42NSAyLjE3IDEyLjgzIDIuNDRMMTcuNDIgOUgyMkMyMi41NSA5IDIzIDkuNDUgMjMgMTBNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuMDMgMjAuOTJDMTguODYgMjAuOTcgMTguNjggMjEgMTguNSAyMUg1LjVDNC43MiAyMSA0LjA0IDIwLjU1IDMuNzEgMTkuOUwxLjEgMTAuNDRMMSAxMEMxIDkuNDUgMS40NSA5IDIgOUg2LjU4TDYuOCA4LjY5TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZNMTMuODUgMTUuNzRMMTEuMjYgMTMuMTVDMTAuNSAxMy40NCAxMCAxNC4xNiAxMCAxNUMxMCAxNi4xMSAxMC45IDE3IDEyIDE3QzEyLjg0IDE3IDEzLjU2IDE2LjUgMTMuODUgMTUuNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0T2ZmT3V0bGluZSA9IFwiTTIuMzkgMS43M0wxLjExIDNMNi45MiA4LjgxTDYuNzkgOUgyQzEuNDUgOSAxIDkuNDUgMSAxMEMxIDEwLjA5IDEgMTAuMTggMS4wNCAxMC4yN0wzLjU4IDE5LjU0QzMuODEgMjAuMzggNC41OCAyMSA1LjUgMjFIMTguNUMxOC42OCAyMSAxOC44NiAyMC45NiAxOS4wMyAyMC45MkwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNNNS41IDE5TDMuMzEgMTFIOS4xMUwxMS4yNiAxMy4xNUMxMC41IDEzLjQ0IDEwIDE0LjE2IDEwIDE1QzEwIDE2LjEgMTAuOSAxNyAxMiAxN0MxMi44NCAxNyAxMy41NiAxNi41IDEzLjg1IDE1Ljc0TDE3LjExIDE5SDUuNU0yMyAxMEwyMi45NyAxMC4yN0wyMC45MyAxNy43M0wxOS4zIDE2LjFMMjAuNyAxMUgxNC4yTDEyLjIgOUgxNC44TDEyIDQuOEwxMC40IDcuMkw4Ljk2IDUuNzZMMTEuMTcgMi40NUMxMS4zNiAyLjE2IDExLjY4IDIgMTIgMlMxMi42NCAyLjE2IDEyLjgzIDIuNDRMMTcuMjEgOUgyMkMyMi41NSA5IDIzIDkuNDUgMjMgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0T3V0bGluZSA9IFwiTTIyIDlIMTcuMjFMMTIuODMgMi40NEMxMi42NCAyLjE2IDEyLjMyIDIgMTIgMlMxMS4zNiAyLjE2IDExLjE3IDIuNDVMNi43OSA5SDJDMS40NSA5IDEgOS40NSAxIDEwQzEgMTAuMDkgMSAxMC4xOCAxLjA0IDEwLjI3TDMuNTggMTkuNTRDMy44MSAyMC4zOCA0LjU4IDIxIDUuNSAyMUgxOC41QzE5LjQyIDIxIDIwLjE5IDIwLjM4IDIwLjQzIDE5LjU0TDIyLjk3IDEwLjI3TDIzIDEwQzIzIDkuNDUgMjIuNTUgOSAyMiA5TTEyIDQuOEwxNC44IDlIOS4yTDEyIDQuOE0xOC41IDE5TDUuNSAxOUwzLjMxIDExSDIwLjdMMTguNSAxOU0xMiAxM0MxMC45IDEzIDEwIDEzLjkgMTAgMTVTMTAuOSAxNyAxMiAxNyAxNCAxNi4xIDE0IDE1IDEzLjEgMTMgMTIgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0UGx1cyA9IFwiTTIwIDE1VjE4SDIzVjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1SDIwTTIzIDEwTDIyLjk2IDEwLjI5TDIyIDEzLjhDMjEuMTEgMTMuMjkgMjAuMDkgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMUg1LjVDNC43MiAyMSA0LjA0IDIwLjU1IDMuNzEgMTkuOUwxLjEgMTAuNDRMMSAxMEMxIDkuNDUgMS40NSA5IDIgOUg2LjU4TDExLjE4IDIuNDNDMTEuMzYgMi4xNyAxMS42NiAyIDEyIDJTMTIuNjUgMi4xNyAxMi44MyAyLjQ0TDE3LjQyIDlIMjJDMjIuNTUgOSAyMyA5LjQ1IDIzIDEwTTE0IDE1QzE0IDEzLjkgMTMuMTEgMTMgMTIgMTNTMTAgMTMuOSAxMCAxNSAxMC45IDE3IDEyIDE3IDE0IDE2LjExIDE0IDE1TTE1IDlMMTIgNC43NEw5IDlIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0UGx1c091dGxpbmUgPSBcIk0yMCAxNVYxOEgyM1YyMEgyMFYyM0gxOFYyMEgxNVYxOEgxOFYxNUgyME0xMiAxM0MxMC45IDEzIDEwIDEzLjkgMTAgMTVTMTAuOSAxNyAxMiAxNyAxNCAxNi4xIDE0IDE1IDEzLjEgMTMgMTIgMTNNMTMuMzUgMjFINS41QzQuNTggMjEgMy44MSAyMC4zOCAzLjU4IDE5LjU0TDEuMDQgMTAuMjdDMSAxMC4xOCAxIDEwLjA5IDEgMTBDMSA5LjQ1IDEuNDUgOSAyIDlINi43OUwxMS4xNyAyLjQ1QzExLjM2IDIuMTYgMTEuNjggMiAxMiAyUzEyLjY0IDIuMTYgMTIuODMgMi40NEwxNy4yMSA5SDIyQzIyLjU1IDkgMjMgOS40NSAyMyAxMEwyMi45NyAxMC4yN0wyMiAxMy44MUMyMS40MyAxMy41IDIwLjc5IDEzLjI0IDIwLjEyIDEzLjExTDIwLjcgMTFIMy4zMUw1LjUgMTlIMTNDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMU05LjIgOUgxNC44TDEyIDQuOEw5LjIgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRSZW1vdmUgPSBcIk0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NyAyMS4xMkwxNy41OSAxOUwxNS40NyAxNi44OEwxNi44OCAxNS40N0wxOSAxNy41OUwyMS4xMiAxNS40NkwyMi41NCAxNi44OE0yMyAxMEwyMi45NiAxMC4yOUwyMiAxMy44QzIxLjExIDEzLjI5IDIwLjA5IDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5QzEzIDE5LjcgMTMuMTMgMjAuMzcgMTMuMzUgMjFINS41QzQuNzIgMjEgNC4wNCAyMC41NSAzLjcxIDE5LjlMMS4xIDEwLjQ0TDEgMTBDMSA5LjQ1IDEuNDUgOSAyIDlINi41OEwxMS4xOCAyLjQzQzExLjM2IDIuMTcgMTEuNjYgMiAxMiAyUzEyLjY1IDIuMTcgMTIuODMgMi40NEwxNy40MiA5SDIyQzIyLjU1IDkgMjMgOS40NSAyMyAxME0xNCAxNUMxNCAxMy45IDEzLjExIDEzIDEyIDEzUzEwIDEzLjkgMTAgMTUgMTAuOSAxNyAxMiAxNyAxNCAxNi4xMSAxNCAxNU0xNSA5TDEyIDQuNzRMOSA5SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2tldFJlbW92ZU91dGxpbmUgPSBcIk0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NyAyMS4xMkwxNy41OSAxOUwxNS40NyAxNi44OEwxNi44OCAxNS40N0wxOSAxNy41OUwyMS4xMiAxNS40NkwyMi41NCAxNi44OE0xMiAxM0MxMC45IDEzIDEwIDEzLjkgMTAgMTVTMTAuOSAxNyAxMiAxNyAxNCAxNi4xIDE0IDE1IDEzLjEgMTMgMTIgMTNNMTMuMzUgMjFINS41QzQuNTggMjEgMy44MSAyMC4zOCAzLjU4IDE5LjU0TDEuMDQgMTAuMjdDMSAxMC4xOCAxIDEwLjA5IDEgMTBDMSA5LjQ1IDEuNDUgOSAyIDlINi43OUwxMS4xNyAyLjQ1QzExLjM2IDIuMTYgMTEuNjggMiAxMiAyUzEyLjY0IDIuMTYgMTIuODMgMi40NEwxNy4yMSA5SDIyQzIyLjU1IDkgMjMgOS40NSAyMyAxMEwyMi45NyAxMC4yN0wyMiAxMy44MUMyMS40MyAxMy41IDIwLjc5IDEzLjI0IDIwLjEyIDEzLjExTDIwLjcgMTFIMy4zMUw1LjUgMTlIMTNDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMU05LjIgOUgxNC44TDEyIDQuOEw5LjIgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRVbmZpbGwgPSBcIk0zLDEwSDZWN0gzVjEwTTUsNUg4VjJINVY1TTgsMTBIMTFWN0g4VjEwTTE3LDFMMTIsNkgxNVYxMEgxOVY2SDIyTDE3LDFNNy41LDIyQzYuNzIsMjIgNi4wNCwyMS41NSA1LjcxLDIwLjlWMjAuOUwzLjEsMTMuNDRMMywxM0ExLDEgMCAwLDEgNCwxMkgyMEExLDEgMCAwLDEgMjEsMTNMMjAuOTYsMTMuMjlMMTguMjksMjAuOUMxNy45NiwyMS41NSAxNy4yOCwyMiAxNi41LDIySDcuNU03LjYxLDIwSDE2LjM5TDE4LjU3LDE0SDUuNDJMNy42MSwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRiYWxsID0gXCJNMi4zNCwxNC42M0MyLjk0LDE0LjQxIDMuNTYsMTQuMyA0LjIyLDE0LjNDNS41NiwxNC4zIDYuNzMsMTQuNzIgNy43MywxNS41Nkw0LjU5LDE4LjdDMy41MywxNy41IDIuNzgsMTYuMTMgMi4zNCwxNC42M00xNS41Niw5LjhDMTcuNTMsMTEuMjcgMTkuNjYsMTEuNjMgMjEuOTQsMTAuODhDMjEuOTcsMTEuMDkgMjIsMTEuNDcgMjIsMTJDMjIsMTMuMDMgMjEuNzUsMTQuMTggMjEuMjgsMTUuNDVDMjAuODEsMTYuNzEgMjAuMjMsMTcuNzMgMTkuNTUsMTguNUwxMy4yMiwxMi4xOUwxNS41Niw5LjhNOC43NywxNi42NEM5LjgzLDE4LjE3IDEwLjA1LDE5Ljg0IDkuNDIsMjEuNjZDOCwyMS4yNSA2LjczLDIwLjYxIDUuNjcsMTkuNzNMOC43NywxNi42NE0xMi4xOSwxMy4yMkwxOC41LDE5LjU1QzE2LjMzLDIxLjQ1IDEzLjc4LDIyLjI1IDEwLjg4LDIxLjk0QzExLjA5LDIxLjI4IDExLjIsMjAuNTYgMTEuMiwxOS43OEMxMS4yLDE5LjE2IDExLjA2LDE4LjQzIDEwLjc4LDE3LjZDMTAuNSwxNi43NyAxMC4xNywxNi4wOSA5LjgsMTUuNTZMMTIuMTksMTMuMjJNOC44MSwxNC41QzcuODgsMTMuNjcgNi44LDEzLjE1IDUuNTgsMTIuOTFDNC4zNiwxMi42OCAzLjE5LDEyLjc1IDIuMDYsMTMuMTNDMi4wMywxMi45MSAyLDEyLjUzIDIsMTJDMiwxMC45NyAyLjI1LDkuODIgMi43Miw4LjU1QzMuMTksNy4yOSAzLjc3LDYuMjcgNC40NSw1LjVMMTEuMTEsMTIuMTlMOC44MSwxNC41TTE1LjU2LDcuNzNDMTQuMjIsNi4wOCAxMy45MSw0LjI4IDE0LjYzLDIuMzRDMTUuMjUsMi41IDE1Ljk2LDIuOCAxNi43NiwzLjI2QzE3LjU1LDMuNzEgMTguMiw0LjE2IDE4LjcsNC41OUwxNS41Niw3LjczTTIxLjY2LDkuMzhDMjEuMDYsOS41OSAyMC40NCw5LjcgMTkuNzgsOS43QzE4LjY5LDkuNyAxNy42NCw5LjM4IDE2LjY0LDguNzJMMTkuNzMsNS42N0MyMC42MSw2Ljc3IDIxLjI1LDggMjEuNjYsOS4zOE0xMi4xOSwxMS4xMUw1LjUsNC40NUM3LjY3LDIuNTUgMTAuMjIsMS43NSAxMy4xMywyLjA2QzEyLjkxLDIuNzIgMTIuOCwzLjQ0IDEyLjgsNC4yMkMxMi44LDQuOTQgMTIuOTYsNS43NSAxMy4yOSw2LjY2QzEzLjYyLDcuNTYgMTQsOC4yOCAxNC41LDguODFMMTIuMTksMTEuMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0YmFsbEhvb3AgPSBcIk0yMSwySDNBMiwyIDAgMCwwIDEsNFYxNkEyLDIgMCAwLDAgMywxOEg1VjE0SDE5VjE4SDIxQTIsMiAwIDAsMCAyMywxNlY0QTIsMiAwIDAsMCAyMSwyTTE3LDEySDE1VjlIOVYxMkg3VjlBMiwyIDAgMCwxIDksN0gxNUEyLDIgMCAwLDEgMTcsOVYxMk03LDE2VjE5LjVMOCwyM0wxMCwyMUwxMiwyM0wxNCwyMUwxNiwyM0wxNywxOS41VjE2SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0YmFsbEhvb3BPdXRsaW5lID0gXCJNMjEsMkgzQTIsMiAwIDAsMCAxLDRWMTZBMiwyIDAgMCwwIDMsMThINi41N0w4LDIzTDEwLDIxTDEyLDIzTDE0LDIxTDE2LDIzTDE3LjQzLDE4SDIxQTIsMiAwIDAsMCAyMywxNlY0QTIsMiAwIDAsMCAyMSwyTTIxLDE2SDE4VjE0SDE3VjlBMiwyIDAgMCwwIDE1LDdIOUEyLDIgMCAwLDAgNyw5VjE0SDZWMTZIM1Y0SDIxVjE2TTksMTRWOUgxNVYxNEg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdCA9IFwiTTAuNzUsOEMwLjc1LDggNSw3IDgsOUM4LDkgOC41LDEyLjc1IDEwLjUsMTIuNzVWMTFDMTAuNSwxMSAxMSwxMiAxMiwxMkMxMywxMiAxMy41LDExIDEzLjUsMTFWMTIuNzVDMTUuNSwxMi43NSAxNiw5IDE2LDlDMTksNyAyMy4yNSw4IDIzLjI1LDhDMjEuMjUsOSAyMSwxMi41IDIxLDEyLjVDMTcsMTIuNSAxNywxNS43NSAxNywxNS43NUMxMiwxNC43NSAxMiwxOC41IDEyLDE4LjVDMTIsMTguNSAxMiwxNC43NSA3LDE1Ljc1QzcsMTUuNzUgNywxMi41IDMsMTIuNUMzLDEyLjUgMi43NSw5IDAuNzUsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5ID0gXCJNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5MTAgPSBcIk0xNiwxOEg4VjZIMTZNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5MTBCbHVldG9vdGggPSBcIk01LDJWNEgzLjMzQTEuMzMsMS4zMyAwIDAsMCAyLDUuMzNWMjAuNjdDMiwyMS40IDIuNiwyMiAzLjMzLDIySDEyLjY3QzEzLjQsMjIgMTQsMjEuNCAxNCwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi42Nyw0SDExVjJINU00LDZIMTJWMThINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnkyMCA9IFwiTTE2LDE3SDhWNkgxNk0xNi42Nyw0SDE1VjJIOVY0SDcuMzNBMS4zMywxLjMzIDAgMCwwIDYsNS4zM1YyMC42N0M2LDIxLjQgNi42LDIyIDcuMzMsMjJIMTYuNjdBMS4zMywxLjMzIDAgMCwwIDE4LDIwLjY3VjUuMzNDMTgsNC42IDE3LjQsNCAxNi42Nyw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnkyMEJsdWV0b290aCA9IFwiTTUsMlY0SDMuMzNBMS4zMywxLjMzIDAgMCwwIDIsNS4zM1YyMC42N0MyLDIxLjQgMi42LDIyIDMuMzMsMjJIMTIuNjdDMTMuNCwyMiAxNCwyMS40IDE0LDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwwIDEyLjY3LDRIMTFWMkg1TTQsNkgxMlYxN0g0VjZNMTksOFYxMS43OUwxNi43MSw5LjVMMTYsMTAuMjFMMTguNzksMTNMMTYsMTUuNzlMMTYuNzEsMTYuNUwxOSwxNC4yMVYxOEgxOS41TDIyLjM1LDE1LjE0TDIwLjIxLDEzTDIyLjM1LDEwLjg1TDE5LjUsOEgxOU0yMCw5LjkxTDIwLjk0LDEwLjg1TDIwLDExLjc5VjkuOTFNMjAsMTQuMjFMMjAuOTQsMTUuMTRMMjAsMTYuMDhWMTQuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTMwID0gXCJNMTYsMTVIOFY2SDE2TTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY3QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42N0ExLjMzLDEuMzMgMCAwLDAgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTMwQmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNNCw2SDEyVjE1SDRWNk0xOSw4VjExLjc5TDE2LjcxLDkuNUwxNiwxMC4yMUwxOC43OSwxM0wxNiwxNS43OUwxNi43MSwxNi41TDE5LDE0LjIxVjE4SDE5LjVMMjIuMzUsMTUuMTRMMjAuMjEsMTNMMjIuMzUsMTAuODVMMTkuNSw4SDE5TTIwLDkuOTFMMjAuOTQsMTAuODVMMjAsMTEuNzlWOS45MU0yMCwxNC4yMUwyMC45NCwxNS4xNEwyMCwxNi4wOFYxNC4yMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5NDAgPSBcIk0xNiwxNEg4VjZIMTZNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5NDBCbHVldG9vdGggPSBcIk01LDJWNEgzLjMzQTEuMzMsMS4zMyAwIDAsMCAyLDUuMzNWMjAuNjdDMiwyMS40IDIuNiwyMiAzLjMzLDIySDEyLjY3QzEzLjQsMjIgMTQsMjEuNCAxNCwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi42Nyw0SDExVjJINU00LDZIMTJWMTRINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnk1MCA9IFwiTTE2LDEzSDhWNkgxNk0xNi42Nyw0SDE1VjJIOVY0SDcuMzNBMS4zMywxLjMzIDAgMCwwIDYsNS4zM1YyMC42N0M2LDIxLjQgNi42LDIyIDcuMzMsMjJIMTYuNjdBMS4zMywxLjMzIDAgMCwwIDE4LDIwLjY3VjUuMzNDMTgsNC42IDE3LjQsNCAxNi42Nyw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnk1MEJsdWV0b290aCA9IFwiTTUsMlY0SDMuMzNBMS4zMywxLjMzIDAgMCwwIDIsNS4zM1YyMC42N0MyLDIxLjQgMi42LDIyIDMuMzMsMjJIMTIuNjdDMTMuNCwyMiAxNCwyMS40IDE0LDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwwIDEyLjY3LDRIMTFWMkg1TTQsNkgxMlYxM0g0VjZNMTksOFYxMS43OUwxNi43MSw5LjVMMTYsMTAuMjFMMTguNzksMTNMMTYsMTUuNzlMMTYuNzEsMTYuNUwxOSwxNC4yMVYxOEgxOS41TDIyLjM1LDE1LjE0TDIwLjIxLDEzTDIyLjM1LDEwLjg1TDE5LjUsOEgxOU0yMCw5LjkxTDIwLjk0LDEwLjg1TDIwLDExLjc5VjkuOTFNMjAsMTQuMjFMMjAuOTQsMTUuMTRMMjAsMTYuMDhWMTQuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTYwID0gXCJNMTYsMTJIOFY2SDE2TTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY3QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42N0ExLjMzLDEuMzMgMCAwLDAgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTYwQmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNNCw2SDEyVjEySDRWNk0xOSw4VjExLjc5TDE2LjcxLDkuNUwxNiwxMC4yMUwxOC43OSwxM0wxNiwxNS43OUwxNi43MSwxNi41TDE5LDE0LjIxVjE4SDE5LjVMMjIuMzUsMTUuMTRMMjAuMjEsMTNMMjIuMzUsMTAuODVMMTkuNSw4SDE5TTIwLDkuOTFMMjAuOTQsMTAuODVMMjAsMTEuNzlWOS45MU0yMCwxNC4yMUwyMC45NCwxNS4xNEwyMCwxNi4wOFYxNC4yMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5NzAgPSBcIk0xNiwxMEg4VjZIMTZNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5NzBCbHVldG9vdGggPSBcIk01LDJWNEgzLjMzQTEuMzMsMS4zMyAwIDAsMCAyLDUuMzNWMjAuNjdDMiwyMS40IDIuNiwyMiAzLjMzLDIySDEyLjY3QzEzLjQsMjIgMTQsMjEuNCAxNCwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi42Nyw0SDExVjJINU00LDZIMTJWMTBINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnk4MCA9IFwiTTE2LDlIOFY2SDE2TTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY3QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42N0ExLjMzLDEuMzMgMCAwLDAgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTgwQmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNNCw2SDEyVjlINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnk5MCA9IFwiTTE2LDhIOFY2SDE2TTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY3QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42N0ExLjMzLDEuMzMgMCAwLDAgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTkwQmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNNCw2SDEyVjhINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlBbGVydCA9IFwiTTEzIDE0SDExVjhIMTNNMTMgMThIMTFWMTZIMTNNMTYuNyA0SDE1VjJIOVY0SDcuM0M2LjYgNCA2IDQuNiA2IDUuM1YyMC42QzYgMjEuNCA2LjYgMjIgNy4zIDIySDE2LjZDMTcuMyAyMiAxNy45IDIxLjQgMTcuOSAyMC43VjUuM0MxOCA0LjYgMTcuNCA0IDE2LjcgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5QWxlcnRCbHVldG9vdGggPSBcIk01IDJWNEgzLjNDMi42IDQgMiA0LjYgMiA1LjNWMjAuNkMyIDIxLjQgMi42IDIyIDMuMyAyMkgxMi42QzEzLjMgMjIgMTMuOSAyMS40IDEzLjkgMjAuN1Y1LjNDMTQgNC42IDEzLjQgNCAxMi43IDRIMTFWMkg1TTE5IDhWMTEuOEwxNi43IDkuNUwxNiAxMC4yTDE4LjggMTNMMTYgMTUuOEwxNi43IDE2LjVMMTkgMTQuMlYxOEgxOS41TDIyLjQgMTUuMUwyMC4yIDEzTDIyLjMgMTAuOUwxOS41IDhIMTlNNyA4SDlWMTRIN00yMCA5LjlMMjAuOSAxMC44TDIwIDExLjhWOS45TTIwIDE0LjJMMjAuOSAxNS4xTDIwIDE2LjFWMTQuMk03IDE2SDlWMThIN1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5QWxlcnRWYXJpYW50ID0gXCJNMTQuNjcgNEgxM1YySDdWNEg1LjMzQzQuNiA0IDQgNC42IDQgNS4zM1YyMC42N0M0IDIxLjQgNC42IDIyIDUuMzMgMjJIMTQuNjdDMTUuNCAyMiAxNiAyMS40IDE2IDIwLjY3VjUuMzNDMTYgNC42IDE1LjQgNCAxNC42NyA0TTIxIDEzSDE5VjdIMjFWMTNNMjEgMTdIMTlWMTVIMjFWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUFsZXJ0VmFyaWFudE91dGxpbmUgPSBcIk0xNCAyMEg2VjZIMTRNMTQuNjcgNEgxM1YySDdWNEg1LjMzQzQuNiA0IDQgNC42IDQgNS4zM1YyMC42N0M0IDIxLjQgNC42IDIyIDUuMzMgMjJIMTQuNjdDMTUuNCAyMiAxNiAyMS40IDE2IDIwLjY3VjUuMzNDMTYgNC42IDE1LjQgNCAxNC42NyA0TTIxIDdIMTlWMTNIMjFWOE0yMSAxNUgxOVYxN0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Qmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNMTksOFYxMS43OUwxNi43MSw5LjVMMTYsMTAuMjFMMTguNzksMTNMMTYsMTUuNzlMMTYuNzEsMTYuNUwxOSwxNC4yMVYxOEgxOS41TDIyLjM1LDE1LjE0TDIwLjIxLDEzTDIyLjM1LDEwLjg1TDE5LjUsOEgxOU0yMCw5LjkxTDIwLjk0LDEwLjg1TDIwLDExLjc5VjkuOTFNMjAsMTQuMjFMMjAuOTQsMTUuMTRMMjAsMTYuMDhWMTQuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUJsdWV0b290aFZhcmlhbnQgPSBcIk05LDJWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNEgxNVYySDlNMTEuODMsOEgxMi4zM0wxNS4xOCwxMC44NUwxMy4wNCwxM0wxNS4xNywxNS4xNEwxMi4zMywxOEgxMS44M1YxNC4yMUw5LjU0LDE2LjVMOC44MywxNS43OUwxMS42MiwxM0w4LjgzLDEwLjIxTDkuNTQsOS41TDExLjgzLDExLjc5VjhNMTIuODMsOS45MVYxMS43OUwxMy43NywxMC44NUwxMi44Myw5LjkxTTEyLjgzLDE0LjIxVjE2LjA4TDEzLjc3LDE1LjE0TDEyLjgzLDE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZyA9IFwiTTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY2QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42NkMxNy40LDIyIDE4LDIxLjQgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRNMTEsMjBWMTQuNUg5TDEzLDdWMTIuNUgxNVwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzEwID0gXCJNMjMuMDUsMTFIMjAuMDVWNEwxNS4wNSwxNEgxOC4wNVYyMk0xMiwxOEg0TDQuMDUsNkgxMi4wNU0xMi43Miw0SDExLjA1VjJINS4wNVY0SDMuMzhBMS4zMywxLjMzIDAgMCwwIDIuMDUsNS4zM1YyMC42N0MyLjA1LDIxLjQgMi42NSwyMiAzLjM4LDIySDEyLjcyQzEzLjQ1LDIyIDE0LjA1LDIxLjQgMTQuMDUsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNzIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmcxMDAgPSBcIk0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmcyMCA9IFwiTTIzLjA1LDExSDIwLjA1VjRMMTUuMDUsMTRIMTguMDVWMjJNMTIuMDUsMTdINC4wNVY2SDEyLjA1TTEyLjcyLDRIMTEuMDVWMkg1LjA1VjRIMy4zOEExLjMzLDEuMzMgMCAwLDAgMi4wNSw1LjMzVjIwLjY3QzIuMDUsMjEuNCAyLjY1LDIyIDMuMzgsMjJIMTIuNzJDMTMuNDUsMjIgMTQuMDUsMjEuNCAxNC4wNSwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi43Miw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzMwID0gXCJNMTIsMTVINFY2SDEyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNE0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTDIzLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzQwID0gXCJNMTMgNEgxMVYySDVWNEgzQzIuNCA0IDIgNC40IDIgNVYyMUMyIDIxLjYgMi40IDIyIDMgMjJIMTNDMTMuNiAyMiAxNCAyMS42IDE0IDIxVjVDMTQgNC40IDEzLjYgNCAxMyA0TTEyIDE0LjVINFY2SDEyVjE0LjVNMjMgMTFIMjBWNEwxNSAxNEgxOFYyMlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzUwID0gXCJNMjMsMTFIMjBWNEwxNSwxNEgxOFYyMk0xMiwxM0g0VjZIMTJNMTIuNjcsNEgxMVYySDVWNEgzLjMzQTEuMzMsMS4zMyAwIDAsMCAyLDUuMzNWMjAuNjdDMiwyMS40IDIuNiwyMiAzLjMzLDIySDEyLjY3QzEzLjQsMjIgMTQsMjEuNCAxNCwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi42Nyw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzYwID0gXCJNMTIsMTFINFY2SDEyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNE0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTDIzLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzcwID0gXCJNMTIsMTBINFY2SDEyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNE0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTDIzLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzgwID0gXCJNMjMsMTFIMjBWNEwxNSwxNEgxOFYyMk0xMiw5SDRWNkgxMk0xMi42Nyw0SDExVjJINVY0SDMuMzNBMS4zMywxLjMzIDAgMCwwIDIsNS4zM1YyMC42N0MyLDIxLjQgMi42LDIyIDMuMzMsMjJIMTIuNjdDMTMuNCwyMiAxNCwyMS40IDE0LDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwwIDEyLjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nOTAgPSBcIk0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTTEyLDhINFY2SDEyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdIaWdoID0gXCJNMTIgMjBINFY2SDEyTTEyLjY3IDRIMTFWMkg1VjRIMy4zM0MyLjYgNCAyIDQuNiAyIDUuMzNWMjAuNjdDMiAyMS40IDIuNiAyMiAzLjMzIDIySDEyLjY3QzEzLjQxIDIyIDE0IDIxLjQxIDE0IDIwLjY3VjUuMzNDMTQgNC42IDEzLjQgNCAxMi42NyA0TTExIDE2SDVWMTlIMTFWMTZNMTEgN0g1VjEwSDExVjdNMTEgMTEuNUg1VjE0LjVIMTFWMTEuNU0yMyAxMEgyMFYzTDE1IDEzSDE4VjIxXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nTG93ID0gXCJNMTIgMjBINFY2SDEyTTEyLjY3IDRIMTFWMkg1VjRIMy4zM0MyLjYgNCAyIDQuNiAyIDUuMzNWMjAuNjdDMiAyMS40IDIuNiAyMiAzLjMzIDIySDEyLjY3QzEzLjQxIDIyIDE0IDIxLjQxIDE0IDIwLjY3VjUuMzNDMTQgNC42IDEzLjQgNCAxMi42NyA0TTExIDE2SDVWMTlIMTFWMTZNMjMgMTBIMjBWM0wxNSAxM0gxOFYyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ01lZGl1bSA9IFwiTTEyIDIwSDRWNkgxMk0xMi42NyA0SDExVjJINVY0SDMuMzNDMi42IDQgMiA0LjYgMiA1LjMzVjIwLjY3QzIgMjEuNCAyLjYgMjIgMy4zMyAyMkgxMi42N0MxMy40MSAyMiAxNCAyMS40MSAxNCAyMC42N1Y1LjMzQzE0IDQuNiAxMy40IDQgMTIuNjcgNE0xMSAxNkg1VjE5SDExVjE2TTExIDExLjVINVYxNC41SDExVjExLjVNMjMgMTBIMjBWM0wxNSAxM0gxOFYyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ091dGxpbmUgPSBcIk0yMy4wNSwxMUgyMC4wNVY0TDE1LjA1LDE0SDE4LjA1VjIyTTEyLDIwSDRMNC4wNSw2SDEyLjA1TTEyLjcyLDRIMTEuMDVWMkg1LjA1VjRIMy4zOEExLjMzLDEuMzMgMCAwLDAgMi4wNSw1LjMzVjIwLjY3QzIuMDUsMjEuNCAyLjY1LDIyIDMuMzgsMjJIMTIuNzJDMTMuNDUsMjIgMTQuMDUsMjEuNCAxNC4wNSwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi43Miw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ1dpcmVsZXNzID0gXCJNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43NlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczEwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiwxOC41SDRWNkgxMlYxOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ1dpcmVsZXNzMjAgPSBcIk0yMC4wNyw0LjkzTDE4LjY2LDYuMzRDMjEuNzksOS40NiAyMS43OSwxNC41MyAxOC42NiwxNy42NkwyMC4wNywxOS4wN0MyMy45NywxNS4xNyAyMy45Nyw4Ljg0IDIwLjA3LDQuOTNNMTcuMjQsNy43NkwxNS44Myw5LjE3QzE3LjM5LDEwLjczIDE3LjM5LDEzLjI2IDE1LjgzLDE0LjgzTDE3LjI0LDE2LjI0QzE5LjU4LDEzLjkgMTkuNTgsMTAuMSAxNy4yNCw3Ljc2TTEzLDRIMTFWMkg1VjRIM0ExLDEgMCAwLDAgMiw1VjIxQTEsMSAwIDAsMCAzLDIySDEzQTEsMSAwIDAsMCAxNCwyMVY1QTEsMSAwIDAsMCAxMyw0TTEyLDE3SDRWNkgxMlYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczMwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiwxNkg0VjZIMTJWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nV2lyZWxlc3M0MCA9IFwiTTIwLjA3LDQuOTNMMTguNjYsNi4zNEMyMS43OSw5LjQ2IDIxLjc5LDE0LjUzIDE4LjY2LDE3LjY2TDIwLjA3LDE5LjA3QzIzLjk3LDE1LjE3IDIzLjk3LDguODQgMjAuMDcsNC45M00xNy4yNCw3Ljc2TDE1LjgzLDkuMTdDMTcuMzksMTAuNzMgMTcuMzksMTMuMjYgMTUuODMsMTQuODNMMTcuMjQsMTYuMjRDMTkuNTgsMTMuOSAxOS41OCwxMC4xIDE3LjI0LDcuNzZNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMTIsMTQuNUg0VjZIMTJWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczUwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiwxM0g0VjZIMTJWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nV2lyZWxlc3M2MCA9IFwiTTIwLjA3LDQuOTNMMTguNjYsNi4zNEMyMS43OSw5LjQ2IDIxLjc5LDE0LjUzIDE4LjY2LDE3LjY2TDIwLjA3LDE5LjA3QzIzLjk3LDE1LjE3IDIzLjk3LDguODQgMjAuMDcsNC45M00xNy4yNCw3Ljc2TDE1LjgzLDkuMTdDMTcuMzksMTAuNzMgMTcuMzksMTMuMjYgMTUuODMsMTQuODNMMTcuMjQsMTYuMjRDMTkuNTgsMTMuOSAxOS41OCwxMC4xIDE3LjI0LDcuNzZNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMTIsMTEuNkg0VjZIMTJWMTEuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczcwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiwxMEg0VjZIMTJWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nV2lyZWxlc3M4MCA9IFwiTTIwLjA3LDQuOTNMMTguNjYsNi4zNEMyMS43OSw5LjQ2IDIxLjc5LDE0LjUzIDE4LjY2LDE3LjY2TDIwLjA3LDE5LjA3QzIzLjk3LDE1LjE3IDIzLjk3LDguODQgMjAuMDcsNC45M00xNy4yNCw3Ljc2TDE1LjgzLDkuMTdDMTcuMzksMTAuNzMgMTcuMzksMTMuMjYgMTUuODMsMTQuODNMMTcuMjQsMTYuMjRDMTkuNTgsMTMuOSAxOS41OCwxMC4xIDE3LjI0LDcuNzZNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMTIsOUg0VjZIMTJWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczkwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiw3LjVINFY2SDEyVjcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzc0FsZXJ0ID0gXCJNMTMgNEgxMVYySDVWNEgzQzIuNCA0IDIgNC40IDIgNVYyMUMyIDIxLjYgMi40IDIyIDMgMjJIMTNDMTMuNiAyMiAxNCAyMS42IDE0IDIxVjVDMTQgNC40IDEzLjYgNCAxMyA0TTkgMThIN1YxNkg5VjE4TTkgMTRIN1Y4SDlWMTRNMjAuMSA0LjlMMTguNyA2LjNDMjEuOCA5LjQgMjEuOCAxNC41IDE4LjcgMTcuNkwyMC4xIDE5QzI0IDE1LjIgMjQgOC44IDIwLjEgNC45TTE3LjIgNy44TDE1LjggOS4yQzE3LjQgMTAuOCAxNy40IDEzLjMgMTUuOCAxNC45TDE3LjIgMTYuM0MxOS42IDEzLjkgMTkuNiAxMC4xIDE3LjIgNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ1dpcmVsZXNzT3V0bGluZSA9IFwiTTIwLjA3LDQuOTNMMTguNjYsNi4zNEMyMS43OSw5LjQ2IDIxLjc5LDE0LjUzIDE4LjY2LDE3LjY2TDIwLjA3LDE5LjA3QzIzLjk3LDE1LjE3IDIzLjk3LDguODQgMjAuMDcsNC45M00xNy4yNCw3Ljc2TDE1LjgzLDkuMTdDMTcuMzksMTAuNzMgMTcuMzksMTMuMjYgMTUuODMsMTQuODNMMTcuMjQsMTYuMjRDMTkuNTgsMTMuOSAxOS41OCwxMC4xIDE3LjI0LDcuNzZNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMTIsMjBINFY2SDEyVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlIZWFydCA9IFwiTTEyLjY3IDRIMTFWMkg1VjRIMy4zM0ExLjM0IDEuMzQgMCAwIDAgMiA1LjMzVjIwLjY3QTEuMzQgMS4zNCAwIDAgMCAzLjMzIDIySDEyLjY3QTEuMzQgMS4zNCAwIDAgMCAxNCAyMC42N1Y1LjMzQTEuMzQgMS4zNCAwIDAgMCAxMi42NyA0TTE5IDE2LjE3TDE4LjQyIDE1LjY0QzE2LjM2IDEzLjc3IDE1IDEyLjU0IDE1IDExQTIuMTggMi4xOCAwIDAgMSAxNy4yIDguOEEyLjQgMi40IDAgMCAxIDE5IDkuNjNBMi40IDIuNCAwIDAgMSAyMC44IDguOEEyLjE4IDIuMTggMCAwIDEgMjMgMTFDMjMgMTIuNSAyMS42NCAxMy43NCAxOS41OCAxNS42MVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5SGVhcnRPdXRsaW5lID0gXCJNMTkgMTYuMkwxOC40IDE1LjdDMTYuNCAxMy44IDE1IDEyLjUgMTUgMTFDMTUgOS44IDE2IDguOCAxNy4yIDguOEMxNy45IDguOCAxOC41IDkuMSAxOSA5LjZDMTkuNSA5LjEgMjAuMSA4LjggMjAuOCA4LjhDMjIgOC44IDIzIDkuOCAyMyAxMUMyMyAxMi41IDIxLjYgMTMuNyAxOS42IDE1LjZMMTkgMTYuMk0xMi43IDRIMTFWMkg1VjRIMy4zQzIuNiA0IDIgNC42IDIgNS4zVjIwLjZDMiAyMS40IDIuNiAyMiAzLjMgMjJIMTIuNkMxMy4zIDIyIDEzLjkgMjEuNCAxMy45IDIwLjdWNS4zQzE0IDQuNiAxMy40IDQgMTIuNyA0TTEyIDIwSDRWNkgxMlYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5SGVhcnRWYXJpYW50ID0gXCJNMTYuNjcgNEgxNVYySDlWNEg3LjMzQTEuMzQgMS4zNCAwIDAgMCA2IDUuMzNWMjAuNjdBMS4zNCAxLjM0IDAgMCAwIDcuMzMgMjJIMTYuNjdBMS4zNCAxLjM0IDAgMCAwIDE4IDIwLjY3VjUuMzNBMS4zNCAxLjM0IDAgMCAwIDE2LjY3IDRNMTIuNTggMTUuNjRMMTIgMTYuMTdMMTEuNDIgMTUuNjRDOS4zNiAxMy43NyA4IDEyLjU0IDggMTFBMi4xOCAyLjE4IDAgMCAxIDEwLjIgOC44QTIuNCAyLjQgMCAwIDEgMTIgOS42M0EyLjQgMi40IDAgMCAxIDEzLjggOC44QTIuMTggMi4xOCAwIDAgMSAxNiAxMUMxNiAxMi41NCAxNC42NCAxMy43NyAxMi41OCAxNS42NFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5SGlnaCA9IFwiTTE2IDIwSDhWNkgxNk0xNi42NyA0SDE1VjJIOVY0SDcuMzNDNi42IDQgNiA0LjYgNiA1LjMzVjIwLjY3QzYgMjEuNCA2LjYgMjIgNy4zMyAyMkgxNi42N0MxNy40MSAyMiAxOCAyMS40MSAxOCAyMC42N1Y1LjMzQzE4IDQuNiAxNy40IDQgMTYuNjcgNE0xNSAxNkg5VjE5SDE1VjE2TTE1IDdIOVYxMEgxNVY3TTE1IDExLjVIOVYxNC41SDE1VjExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUxvdyA9IFwiTTE2IDIwSDhWNkgxNk0xNi42NyA0SDE1VjJIOVY0SDcuMzNDNi42IDQgNiA0LjYgNiA1LjMzVjIwLjY3QzYgMjEuNCA2LjYgMjIgNy4zMyAyMkgxNi42N0MxNy40MSAyMiAxOCAyMS40MSAxOCAyMC42N1Y1LjMzQzE4IDQuNiAxNy40IDQgMTYuNjcgNE0xNSAxNkg5VjE5SDE1VjE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU1lZGl1bSA9IFwiTTE2IDIwSDhWNkgxNk0xNi42NyA0SDE1VjJIOVY0SDcuMzNDNi42IDQgNiA0LjYgNiA1LjMzVjIwLjY3QzYgMjEuNCA2LjYgMjIgNy4zMyAyMkgxNi42N0MxNy40MSAyMiAxOCAyMS40MSAxOCAyMC42N1Y1LjMzQzE4IDQuNiAxNy40IDQgMTYuNjcgNE0xNSAxNkg5VjE5SDE1VjE2TTE1IDExLjVIOVYxNC41SDE1VjExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU1pbnVzID0gXCJNMTYuNjcsNEMxNy40LDQgMTgsNC42IDE4LDUuMzNWMjAuNjdBMS4zMywxLjMzIDAgMCwxIDE2LjY3LDIySDcuMzNDNi42LDIyIDYsMjEuNCA2LDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwxIDcuMzMsNEg5VjJIMTVWNEgxNi42N004LDEyVjE0SDE2VjEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU5lZ2F0aXZlID0gXCJNMTEuNjcsNEExLjMzLDEuMzMgMCAwLDEgMTMsNS4zM1YyMC42N0MxMywyMS40IDEyLjQsMjIgMTEuNjcsMjJIMi4zM0MxLjYsMjIgMSwyMS40IDEsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDEgMi4zMyw0SDRWMkgxMFY0SDExLjY3TTE1LDEySDIzVjE0SDE1VjEyTTMsMTNIMTFWNkgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlPZmYgPSBcIk0xOCAxNC44TDcuMjEgNEg5VjJIMTVWNEgxNi42N0ExLjM0IDEuMzQgMCAwIDEgMTggNS4zM00xOCAxNy4zNUwzLjM4IDIuNzNMMi4xMSA0TDYgNy44OVYyMC42N0ExLjM0IDEuMzQgMCAwIDAgNy4zMyAyMkgxNi42N0ExLjM0IDEuMzQgMCAwIDAgMTggMjAuNjdWMTkuODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU9mZk91dGxpbmUgPSBcIk0xOCAxNy4zNUwzLjM4IDIuNzNMMi4xMSA0TDYgNy44OVYyMC42N0ExLjM0IDEuMzQgMCAwIDAgNy4zMyAyMkgxNi42N0ExLjM0IDEuMzQgMCAwIDAgMTggMjAuNjdWMTkuODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTYgMjBIOFY5Ljg5TDE2IDE3Ljg5TTE2IDZWMTIuOEwxOCAxNC44VjUuMzNBMS4zNCAxLjM0IDAgMCAwIDE2LjY3IDRIMTVWMkg5VjRINy4yMUw5LjIxIDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU91dGxpbmUgPSBcIk0xNiwyMEg4VjZIMTZNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5UGx1cyA9IFwiTTE2LjY3LDRDMTcuNCw0IDE4LDQuNiAxOCw1LjMzVjIwLjY3QTEuMzMsMS4zMyAwIDAsMSAxNi42NywyMkg3LjMzQzYuNiwyMiA2LDIxLjQgNiwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMSA3LjMzLDRIOVYySDE1VjRIMTYuNjdNMTYsMTRWMTJIMTNWOUgxMVYxMkg4VjE0SDExVjE3SDEzVjE0SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlQb3NpdGl2ZSA9IFwiTTExLjY3LDRBMS4zMywxLjMzIDAgMCwxIDEzLDUuMzNWMjAuNjdDMTMsMjEuNCAxMi40LDIyIDExLjY3LDIySDIuMzNDMS42LDIyIDEsMjEuNCAxLDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwxIDIuMzMsNEg0VjJIMTBWNEgxMS42N00yMywxNEgyMFYxN0gxOFYxNEgxNVYxMkgxOFY5SDIwVjEySDIzVjE0TTMsMTNIMTFWNkgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlVbmtub3duID0gXCJNMTUuMDcsMTIuMjVMMTQuMTcsMTMuMTdDMTMuNjMsMTMuNzEgMTMuMjUsMTQuMTggMTMuMDksMTVIMTEuMDVDMTEuMTYsMTQuMSAxMS41NiwxMy4yOCAxMi4xNywxMi42N0wxMy40MSwxMS40MUMxMy43OCwxMS4wNSAxNCwxMC41NSAxNCwxMEMxNCw4Ljg5IDEzLjEsOCAxMiw4QTIsMiAwIDAsMCAxMCwxMEg4QTQsNCAwIDAsMSAxMiw2QTQsNCAwIDAsMSAxNiwxMEMxNiwxMC44OCAxNS42NCwxMS42OCAxNS4wNywxMi4yNU0xMywxOUgxMVYxN0gxM00xNi42Nyw0SDE1VjJIOVY0SDcuMzNBMS4zMywxLjMzIDAgMCwwIDYsNS4zM1YyMC42NkM2LDIxLjQgNi42LDIyIDcuMzMsMjJIMTYuNjdDMTcuNCwyMiAxOCwyMS40IDE4LDIwLjY2VjUuMzNDMTgsNC41OSAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5VW5rbm93bkJsdWV0b290aCA9IFwiTTUsMlY0SDMuMzNBMS4zMywxLjMzIDAgMCwwIDIsNS4zM1YyMC42NkMyLDIxLjQgMi42LDIyIDMuMzMsMjJIMTIuNjdDMTMuNCwyMiAxNCwyMS40IDE0LDIwLjY2VjUuMzNDMTQsNC41OSAxMy40LDQgMTIuNjcsNEgxMVYySDVNOCw2QTQsNCAwIDAsMSAxMiwxMEMxMiwxMC44OCAxMS42NCwxMS42OCAxMS4wNywxMi4yNUwxMC4xNywxMy4xN0M5LjYzLDEzLjcxIDkuMjUsMTQuMTggOS4wOSwxNUg3LjA1QzcuMTYsMTQuMSA3LjU2LDEzLjI4IDguMTcsMTIuNjdMOS40MSwxMS40MUM5Ljc4LDExLjA1IDEwLDEwLjU1IDEwLDEwQzEwLDguODkgOS4xLDggOCw4QTIsMiAwIDAsMCA2LDEwSDRBNCw0IDAgMCwxIDgsNk0xOSw4VjExLjc5TDE2LjcxLDkuNUwxNiwxMC4yMUwxOC43OSwxM0wxNiwxNS43OUwxNi43MSwxNi41TDE5LDE0LjIxVjE4SDE5LjVMMjIuMzUsMTUuMTRMMjAuMjEsMTNMMjIuMzUsMTAuODVMMTkuNSw4SDE5TTIwLDkuOTFMMjAuOTQsMTAuODVMMjAsMTEuNzlWOS45MU0yMCwxNC4yMUwyMC45NCwxNS4xNEwyMCwxNi4wOFYxNC4yMU03LDE3SDlWMTlIN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0bGVuZXQgPSBcIk0xOS45MiwxMC43NkMxOS45MiwxMC43NiAyMi41LDEyLjI0IDIyLjUsMTMuODlDMjIuNSwxNS41IDE5LjUsMTYuMDYgMTYuMTgsMTUuOUMxNi4xOCwxNS45IDE0Ljc3LDE3Ljg3IDEzLjQyLDE4LjdDMTQuODgsMjEuNDQgMTYsMjIuNSAxNS45NywyMi41QzE1Ljk3LDIyLjUgMTUuMjMsMjIuNjkgMTMsMTkuMDRDMTEuNjYsMTkuODkgMTAuMTcsMjAuMjMgOS41NiwxOS43QzguOTQsMTkuMTcgOS40MiwxOC4yOCA5LjY4LDE3Ljg1QzkuNDEsMTggOCwxOC44MyA2Ljc1LDE4LjgzQzUuMjYsMTguODMgNS4wNSwxNy43MiA1LjA1LDE3LjE1QzUuMDUsMTUgNy4xMiwxMiA3LjEyLDEyQzcuMTIsMTIgNi4xNiw5Ljg4IDYuMDUsOC4yMkM0LjE3LDguMDYgMiw4LjM5IDEuNTMsOC41NEMxLjQsOC41NCAxLjg0LDguMjIgMiw4LjE4QzIuMTUsOC4xMyAzLjkxLDcuNjcgNiw3LjY3QzYsNS45MyA2LjM1LDQuMzMgNy40MSw0LjMzQzguMTMsNC4zMyA4LjcxLDUuNDUgOC43MSw1LjQ1QzguNzEsNS40NSA4LjcsMS41IDEwLjc0LDEuNUMxMi44LDEuNSAxNSw2LjExIDE1LDYuMTFDMTUsNi4xMSAxNy4yMiw2LjMyIDE4Ljg1LDcuMDlDMTkuNSw1LjczIDIwLjA5LDUuMTEgMjAuODEsM0MyMSwzLjcgMjAuMiw1LjUgMTkuMzUsNy4zVjcuM0gxOS4zNUMxOS4zNSw3LjMgMjEuNjUsOC41IDIxLjY1LDkuODNDMjEuNjUsMTAuODQgMTkuOTIsMTAuNzYgMTkuOTIsMTAuNzZNMTAuNjgsMTguNThDMTEuMzYsMTguNjkgMTIuNDEsMTguMSAxMi40LDE4LjFMMTEuNTgsMTYuNTdMMTAuNCwxNy40QzEwLjM5LDE3LjQxIDkuNjQsMTguMzggMTAuNjgsMTguNThNMjAuMTUsOS43NkMyMC4xNSw5LjEgMTguOTUsOC4zNSAxOC44MSw4LjI3TDE3Ljg5LDkuNzVMMTkuMTcsMTAuMzdDMTkuNTksMTAuMzQgMjAuMTUsMTAuMzUgMjAuMTUsOS43Nk04LDUuNjNDNy43LDUuNjMgNy4wOSw2LjA3IDcuMDksNy42NEw4LjgzLDcuN0w4LjcyLDYuM0M4LjYsNiA4LjMsNS42MyA4LDUuNjNNMTAuMTgsMTUuNzhDOC45MiwxNS4xMyA4LjE2LDE0LjA2IDcuNTQsMTIuOUM3LjU0LDEyLjkgNS45NiwxNS41NSA2Ljk3LDE2LjIyQzgsMTYuODkgOS42NCwxNi4xNiAxMC4xOCwxNS43OE0xMi45NywxNy43NkMxNC4xMSwxNi44OSAxNy4xOSwxNC43MyAxNy40NSwxMS4wOEMxNC41Nyw5LjQ0IDEwLjYyLDguNzEgMTAuNjIsOC43MUMxMC42Miw4LjcxIDEwLjYxLDguMjEgMTAuNyw3Ljg2QzExLjY0LDcuOTcgMTQuNTksOC40NyAxNy4wMyw5LjQzQzE2LjM1LDguMjggMTUuODQsNy44NSAxNS4zNyw3LjVDMTYuNTMsNy43NiAxNy4zNiw5LjI2IDE3LjM2LDkuMjZMMTguMjgsNy45NkMxOC4yOCw3Ljk2IDEzLjkxLDUuNjEgMTAuMTksNy40MkMxMC4xMSwxMC4zIDExLjU5LDE0LjU2IDExLjU5LDE0LjU2TDEwLjgyLDE0Ljg5QzEwLjMsMTMuODQgOS42MywxMi4wOSA5LDguNjdDOC43LDkuMDggOC4xNyw5LjU1IDguMTYsMTEuMDlDNy43LDkuOCA4LjY2LDguNDMgOC42Nyw4LjQyTDcuMDcsOC4yNkM3LjE3LDkuOTIgOC4wNSwxNC4yIDEwLjY4LDE1LjUzQzEzLDE0LjIxIDE1LjUsMTEuNTQgMTYuMTMsMTAuNzdMMTYuODIsMTEuMjhMMTIuMzUsMTUuOTdDMTMuNTksMTYgMTQuMzIsMTUuNzIgMTQuODIsMTUuNUMxNC4xLDE2LjI1IDEyLjg2LDE2LjMyIDEyLjI3LDE2LjMyQzEyLjI4LDE2LjM0IDEyLjU3LDE3LjA3IDEyLjk3LDE3Ljc2TTE0LjAzLDYuMDVDMTQsNS45NyAxMi42NiwzLjY5IDExLjQ3LDMuODZDMTAuNjksNC4xMSAxMC4yNCw1LjQzIDEwLjIzLDYuODdDMTAuNzYsNi41NiAxMiw2IDE0LjAzLDYuMDVNMTYuNzEsMTUuMDdDMTYuNzEsMTUuMDcgMjAsMTUgMTkuOSwxMy43NkMxOS45LDEyLjU2IDE3LjkyLDExLjMzIDE3LjkyLDExLjM1QzE3LjkzLDEzLjQ3IDE2LjcxLDE1LjA3IDE2LjcxLDE1LjA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWNoID0gXCJNMTUsMTguNTRDMTcuMTMsMTguMjEgMTkuNSwxOCAyMiwxOFYyMkg1QzUsMjEuMzUgOC4yLDE5Ljg2IDEzLDE4LjlWMTIuNEMxMi4xNiwxMi42NSAxMS40NSwxMy4yMSAxMSwxMy45NUMxMC4zOSwxMi45MyA5LjI3LDEyLjI1IDgsMTIuMjVDNi43MywxMi4yNSA1LjYxLDEyLjkzIDUsMTMuOTVDNS4wMywxMC4zNyA4LjUsNy40MyAxMyw3LjA0VjdBMSwxIDAgMCwxIDE0LDZBMSwxIDAgMCwxIDE1LDdWNy4wNEMxOS41LDcuNDMgMjIuOTYsMTAuMzcgMjMsMTMuOTVDMjIuMzksMTIuOTMgMjEuMjcsMTIuMjUgMjAsMTIuMjVDMTguNzMsMTIuMjUgMTcuNjEsMTIuOTMgMTcsMTMuOTVDMTYuNTUsMTMuMjEgMTUuODQsMTIuNjUgMTUsMTIuMzlWMTguNTRNNywyQTUsNSAwIDAsMSAyLDdWMkg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlciA9IFwiTTMsM1Y1QTIsMiAwIDAsMSA1LDdWMTlBMiwyIDAgMCwwIDcsMjFIMTdBMiwyIDAgMCwwIDE5LDE5VjdBMiwyIDAgMCwxIDIxLDVWM0gzTTcsOUgxMFYxMEg3VjlNNywxMUgxMFYxMkg3VjExTTEwLDE2SDdWMTVIMTBWMTZNMTIsMTRIN1YxM0gxMlYxNE0xMiw4SDdWN0gxMlY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlckFsZXJ0ID0gXCJNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjE5QzE5IDIwLjEgMTguMSAyMSAxNyAyMUg3QzUuOSAyMSA1IDIwLjEgNSAxOVY3QzUgNS45IDQuMSA1IDMgNVYzTTcgOVYxMEgxMFY5SDdNNyAxMVYxMkgxMFYxMUg3TTEwIDE2VjE1SDdWMTZIMTBNMTIgMTRWMTNIN1YxNEgxMk0xMiA4VjdIN1Y4SDEyTTIxIDEzVjdIMjNWMTNIMjFNMjEgMTdWMTVIMjNWMTdIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVha2VyQWxlcnRPdXRsaW5lID0gXCJNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjE5QzE5IDIwLjExIDE4LjExIDIxIDE3IDIxSDdDNS45IDIxIDUgMjAuMTEgNSAxOVY3QzUgNS45IDQuMTEgNSAzIDVWM003IDVWN0gxMlY4SDdWOUgxMFYxMEg3VjExSDEwVjEySDdWMTNIMTJWMTRIN1YxNUgxMFYxNkg3VjE5SDE3VjVIN00yMSAxM1Y3SDIzVjEzSDIxTTIxIDE3VjE1SDIzVjE3SDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlckNoZWNrID0gXCJNMTcuNzUgMjEuMTZMMTUgMTguMTZMMTYuMTYgMTdMMTcuNzUgMTguNTlMMjEuMzQgMTVMMjIuNSAxNi40MUwxNy43NSAyMS4xNk0zIDNIMjFWNUMxOS45IDUgMTkgNS45IDE5IDdWMTJDMTUuNjkgMTIgMTMgMTQuNjkgMTMgMThDMTMgMTkuMDkgMTMuMjkgMjAuMTIgMTMuOCAyMUg3QzUuOSAyMSA1IDIwLjEgNSAxOVY3QzUgNS45IDQuMSA1IDMgNVYzTTcgOVYxMEgxMFY5SDdNNyAxMVYxMkgxMFYxMUg3TTEwIDE2VjE1SDdWMTZIMTBNMTIgMTRWMTNIN1YxNEgxMk0xMiA4VjdIN1Y4SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlckNoZWNrT3V0bGluZSA9IFwiTTE3Ljc1IDIxLjE2TDE1IDE4LjE2TDE2LjE2IDE3TDE3Ljc1IDE4LjU5TDIxLjM0IDE1TDIyLjUgMTYuNDFMMTcuNzUgMjEuMTZNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE4LjMgMTIgMTcuNjMgMTIuMTIgMTcgMTIuMzRWNUg3VjdIMTJWOEg3VjlIMTBWMTBIN1YxMUgxMFYxMkg3VjEzSDEyVjE0SDdWMTVIMTBWMTZIN1YxOUgxMy4wOEMxMy4yIDE5LjcyIDEzLjQ1IDIwLjM5IDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xMSA1IDE5VjdDNSA1LjkgNC4xMSA1IDMgNVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlck1pbnVzID0gXCJNMjMgMTdWMTlIMTVWMTdIMjNNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE1LjY5IDEyIDEzIDE0LjY5IDEzIDE4QzEzIDE5LjA5IDEzLjI5IDIwLjEyIDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xIDUgMTlWN0M1IDUuOSA0LjEgNSAzIDVWM003IDlWMTBIMTBWOUg3TTcgMTFWMTJIMTBWMTFIN00xMCAxNlYxNUg3VjE2SDEwTTEyIDE0VjEzSDdWMTRIMTJNMTIgOFY3SDdWOEgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWFrZXJNaW51c091dGxpbmUgPSBcIk0yMyAxN1YxOUgxNVYxN00zIDNIMjFWNUMxOS45IDUgMTkgNS45IDE5IDdWMTJDMTguMyAxMiAxNy42MyAxMi4xMiAxNyAxMi4zNFY1SDdWN0gxMlY4SDdWOUgxMFYxMEg3VjExSDEwVjEySDdWMTNIMTJWMTRIN1YxNUgxMFYxNkg3VjE5SDEzLjA4QzEzLjIgMTkuNzIgMTMuNDUgMjAuMzkgMTMuOCAyMUg3QzUuOSAyMSA1IDIwLjExIDUgMTlWN0M1IDUuOSA0LjExIDUgMyA1VjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVha2VyT3V0bGluZSA9IFwiTTMsM0gyMVY1QTIsMiAwIDAsMCAxOSw3VjE5QTIsMiAwIDAsMSAxNywyMUg3QTIsMiAwIDAsMSA1LDE5VjdBMiwyIDAgMCwwIDMsNVYzTTcsNVY3SDEyVjhIN1Y5SDEwVjEwSDdWMTFIMTBWMTJIN1YxM0gxMlYxNEg3VjE1SDEwVjE2SDdWMTlIMTdWNUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlclBsdXMgPSBcIk0xOCAxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNE0zIDNIMjFWNUMxOS45IDUgMTkgNS45IDE5IDdWMTJDMTUuNjkgMTIgMTMgMTQuNjkgMTMgMThDMTMgMTkuMDkgMTMuMjkgMjAuMTIgMTMuOCAyMUg3QzUuOSAyMSA1IDIwLjEgNSAxOVY3QzUgNS45IDQuMSA1IDMgNVYzTTcgOVYxMEgxMFY5SDdNNyAxMVYxMkgxMFYxMUg3TTEwIDE2VjE1SDdWMTZIMTBNMTIgMTRWMTNIN1YxNEgxMk0xMiA4VjdIN1Y4SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlclBsdXNPdXRsaW5lID0gXCJNMTggMTRIMjBWMTdIMjNWMTlIMjBWMjJIMThWMTlIMTVWMTdIMThWMTRNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE4LjMgMTIgMTcuNjMgMTIuMTIgMTcgMTIuMzRWNUg3VjdIMTJWOEg3VjlIMTBWMTBIN1YxMUgxMFYxMkg3VjEzSDEyVjE0SDdWMTVIMTBWMTZIN1YxOUgxMy4wOEMxMy4yIDE5LjcyIDEzLjQ1IDIwLjM5IDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xMSA1IDE5VjdDNSA1LjkgNC4xMSA1IDMgNVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlclF1ZXN0aW9uID0gXCJNMCAzSDE4VjVDMTYuOSA1IDE2IDUuOSAxNiA3VjE5QzE2IDIwLjEgMTUuMSAyMSAxNCAyMUg0QzIuOSAyMSAyIDIwLjEgMiAxOVY3QzIgNS45IDEuMSA1IDAgNVYzTTQgOVYxMEg3VjlINE00IDExVjEySDdWMTFINE03IDE2VjE1SDRWMTZIN005IDE0VjEzSDRWMTRIOU05IDhWN0g0VjhIOU0yMS41IDE1LjVWMTdIMjBWMTUuNUgyMS41TTE5LjUgMTAuNUgxOFYxMEMxOCA4LjM0IDE5LjM0IDcgMjEgN0MyMi42NiA3IDI0IDguMzQgMjQgMTBDMjQgMTAuOTcgMjMuNSAxMS44OCAyMi43MSAxMi40MUwyMi40MSAxMi42QzIxLjg0IDEzIDIxLjUgMTMuNjIgMjEuNSAxNC4zVjE0LjVIMjBWMTQuM0MyMCAxMy4xMSAyMC42IDEyIDIxLjU5IDExLjM1TDIxLjg4IDExLjE2QzIyLjI3IDEwLjkgMjIuNSAxMC40NyAyMi41IDEwQzIyLjUgOS4xOCAyMS44MyA4LjUgMjEgOC41QzIwLjE3IDguNSAxOS41IDkuMTcgMTkuNSAxMFYxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlclF1ZXN0aW9uT3V0bGluZSA9IFwiTTAgM0gxOFY1QzE2LjkgNSAxNiA1LjkgMTYgN1YxOUMxNiAyMC4xMSAxNS4xMSAyMSAxNCAyMUg0QzIuOSAyMSAyIDIwLjExIDIgMTlWN0MyIDUuOSAxLjExIDUgMCA1VjNNNCA1VjdIOVY4SDRWOUg3VjEwSDRWMTFIN1YxMkg0VjEzSDlWMTRINFYxNUg3VjE2SDRWMTlIMTRWNUg0TTIxLjUgMTUuNVYxN0gyMFYxNS41SDIxLjVNMTkuNSAxMC41SDE4VjEwQzE4IDguMzQgMTkuMzQgNyAyMSA3QzIyLjY2IDcgMjQgOC4zNCAyNCAxMEMyNCAxMC45NyAyMy41IDExLjg4IDIyLjcxIDEyLjQxTDIyLjQxIDEyLjZDMjEuODQgMTMgMjEuNSAxMy42MiAyMS41IDE0LjNWMTQuNUgyMFYxNC4zQzIwIDEzLjExIDIwLjYgMTIgMjEuNTkgMTEuMzVMMjEuODggMTEuMTZDMjIuMjcgMTAuOSAyMi41IDEwLjQ3IDIyLjUgMTBDMjIuNSA5LjE4IDIxLjgzIDguNSAyMSA4LjVDMjAuMTcgOC41IDE5LjUgOS4xNyAxOS41IDEwVjEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVha2VyUmVtb3ZlID0gXCJNMTUuNDYgMTUuODhMMTYuODggMTQuNDZMMTkgMTYuNTlMMjEuMTIgMTQuNDdMMjIuNTMgMTUuODhMMjAuNDEgMThMMjIuNTQgMjAuMTJMMjEuMTIgMjEuNTRMMTkgMTkuNDFMMTYuODggMjEuNTNMMTUuNDcgMjAuMTJMMTcuNTkgMThMMTUuNDYgMTUuODhNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE1LjY5IDEyIDEzIDE0LjY5IDEzIDE4QzEzIDE5LjA5IDEzLjI5IDIwLjEyIDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xIDUgMTlWN0M1IDUuOSA0LjEgNSAzIDVWM003IDlWMTBIMTBWOUg3TTcgMTFWMTJIMTBWMTFIN00xMCAxNlYxNUg3VjE2SDEwTTEyIDE0VjEzSDdWMTRIMTJNMTIgOFY3SDdWOEgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWFrZXJSZW1vdmVPdXRsaW5lID0gXCJNMTUuNDYgMTUuODhMMTYuODggMTQuNDZMMTkgMTYuNTlMMjEuMTIgMTQuNDdMMjIuNTMgMTUuODhMMjAuNDEgMThMMjIuNTQgMjAuMTJMMjEuMTIgMjEuNTRMMTkgMTkuNDFMMTYuODggMjEuNTNMMTUuNDcgMjAuMTJMMTcuNTkgMThMMTUuNDYgMTUuODhNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE4LjMgMTIgMTcuNjMgMTIuMTIgMTcgMTIuMzRWNUg3VjdIMTJWOEg3VjlIMTBWMTBIN1YxMUgxMFYxMkg3VjEzSDEyVjE0SDdWMTVIMTBWMTZIN1YxOUgxMy4wOEMxMy4yIDE5LjcyIDEzLjQ1IDIwLjM5IDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xMSA1IDE5VjdDNSA1LjkgNC4xMSA1IDMgNVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZCA9IFwiTTE5LDdIMTFWMTRIM1Y1SDFWMjBIM1YxN0gyMVYyMEgyM1YxMUE0LDQgMCAwLDAgMTksN003LDEzQTMsMyAwIDAsMCAxMCwxMEEzLDMgMCAwLDAgNyw3QTMsMyAwIDAsMCA0LDEwQTMsMyAwIDAsMCA3LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZERvdWJsZSA9IFwiTTE4IDEwVjdBMiAyIDAgMCAwIDE2IDVIOEEyIDIgMCAwIDAgNiA3VjEwQTIgMiAwIDAgMCA0IDEyVjE3SDUuMzNMNiAxOUg3TDcuNjcgMTdIMTYuMzNMMTcgMTlIMThMMTguNjcgMTdIMjBWMTJBMiAyIDAgMCAwIDE4IDEwTTExIDEwSDhWN0gxMU0xNiAxMEgxM1Y3SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZERvdWJsZU91dGxpbmUgPSBcIk04IDVDNy41IDUgNyA1LjIxIDYuNjEgNS42UzYgNi40NSA2IDdWMTBDNS40NyAxMCA1IDEwLjE5IDQuNTkgMTAuNTlTNCAxMS40NyA0IDEyVjE3SDUuMzRMNiAxOUg3TDcuNjkgMTdIMTYuMzZMMTcgMTlIMThMMTguNjYgMTdIMjBWMTJDMjAgMTEuNDcgMTkuODEgMTEgMTkuNDEgMTAuNTlTMTguNTMgMTAgMTggMTBWN0MxOCA2LjQ1IDE3LjggNiAxNy4zOSA1LjZTMTYuNSA1IDE2IDVNOCA3SDExVjEwSDhNMTMgN0gxNlYxMEgxM002IDEySDE4VjE1SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVkRW1wdHkgPSBcIk0xOSw3SDVWMTRIM1Y1SDFWMjBIM1YxN0gyMVYyMEgyM1YxMUE0LDQgMCAwLDAgMTksN1wiO1xyXG5leHBvcnQgdmFyIG1kaUJlZEtpbmcgPSBcIk02IDVDNS40NyA1IDUgNS4yMSA0LjU5IDUuNlM0IDYuNDUgNCA3VjEwQzMuNDUgMTAgMyAxMC4xOSAyLjYgMTAuNTlTMiAxMS40NyAyIDEyVjE3SDMuMzNMNCAxOUg1TDUuNjcgMTdIMTguMzNMMTkgMTlIMjBMMjAuNjcgMTdIMjJWMTJDMjIgMTEuNDcgMjEuNzkgMTEgMjEuNCAxMC41OUMyMSAxMC4xOSAyMC41NSAxMCAyMCAxMFY3QzIwIDYuNDUgMTkuODEgNiAxOS40MSA1LjZTMTguNTMgNSAxOCA1TTYgN0gxMVYxMEg2TTEzIDdIMThWMTBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVkS2luZ091dGxpbmUgPSBcIk0yMCAxMFY3QTIgMiAwIDAgMCAxOCA1SDZBMiAyIDAgMCAwIDQgN1YxMEEyIDIgMCAwIDAgMiAxMlYxN0gzLjMzTDQgMTlINUw1LjY3IDE3SDE4LjMzTDE5IDE5SDIwTDIwLjY3IDE3SDIyVjEyQTIgMiAwIDAgMCAyMCAxME0xMyA3SDE4VjEwSDEzTTYgN0gxMVYxMEg2TTIwIDE1SDRWMTJIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVkT3V0bGluZSA9IFwiTTcgMTRDOC42NiAxNCAxMCAxMi42NiAxMCAxMUMxMCA5LjM0IDguNjYgOCA3IDhDNS4zNCA4IDQgOS4zNCA0IDExQzQgMTIuNjYgNS4zNCAxNCA3IDE0TTcgMTBDNy41NSAxMCA4IDEwLjQ1IDggMTFDOCAxMS41NSA3LjU1IDEyIDcgMTJDNi40NSAxMiA2IDExLjU1IDYgMTFDNiAxMC40NSA2LjQ1IDEwIDcgMTBNMTkgN0gxMVYxNUgzVjVIMVYyMEgzVjE3SDIxVjIwSDIzVjExQzIzIDguNzkgMjEuMjEgNyAxOSA3TTIxIDE1SDEzVjlIMTlDMjAuMSA5IDIxIDkuOSAyMSAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWRRdWVlbiA9IFwiTTE5IDEwVjdBMiAyIDAgMCAwIDE3IDVIN0EyIDIgMCAwIDAgNSA3VjEwQTIgMiAwIDAgMCAzIDEyVjE3SDQuMzNMNSAxOUg2TDYuNjcgMTdIMTcuMzNMMTggMTlIMTlMMTkuNjcgMTdIMjFWMTJBMiAyIDAgMCAwIDE5IDEwTTE3IDEwSDdWN0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCZWRRdWVlbk91dGxpbmUgPSBcIk0xOSAxMFY3QTIgMiAwIDAgMCAxNyA1SDdBMiAyIDAgMCAwIDUgN1YxMEEyIDIgMCAwIDAgMyAxMlYxN0g0LjMzTDUgMTlINkw2LjY3IDE3SDE3LjMzTDE4IDE5SDE5TDE5LjY3IDE3SDIxVjEyQTIgMiAwIDAgMCAxOSAxME03IDdIMTdWMTBIN00xOSAxNUg1VjEySDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZFNpbmdsZSA9IFwiTTE3IDEwVjdDMTcgNS45IDE2LjExIDUgMTUgNUg5QzcuOSA1IDcgNS45IDcgN1YxMEM1LjkgMTAgNC44OSAxMC45IDUgMTJWMTdINi4zM0w3IDE5SDhMOC42NyAxN0gxNS4zM0wxNiAxOUgxN0wxNy42NyAxN0gxOVYxMkMxOSAxMC45IDE4LjExIDEwIDE3IDEwTTE1IDEwSDlWN0gxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWRTaW5nbGVPdXRsaW5lID0gXCJNMTcgMTBWN0MxNyA1LjkgMTYuMTEgNSAxNSA1SDlDNy45IDUgNyA1LjkgNyA3VjEwQzUuOSAxMCA1IDEwLjkgNSAxMlYxN0g2LjMzTDcgMTlIOEw4LjY3IDE3SDE1LjMzTDE2IDE5SDE3TDE3LjY3IDE3SDE5VjEyQzE5IDEwLjkgMTguMTEgMTAgMTcgMTBNOSA3SDE1VjEwSDlNMTcgMTVIN1YxMkgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCZWUgPSBcIk0xNy40IDlDMTcgNy44IDE2LjIgNyAxNSA2LjVWNUgxNFY2LjRIMTMuNkMxMi41IDYuNCAxMS42IDYuOCAxMC44IDcuNkwxMC40IDhMOSA3LjVDOC43IDcuNCA4LjQgNy4zIDggNy4zQzcuNCA3LjMgNi44IDcuNSA2LjMgNy45QzUuNyA4LjMgNS40IDguOCA1LjIgOS4zQzUgMTAgNSAxMC42IDUuMiAxMS4zQzUuNSAxMiA1LjggMTIuNSA2LjMgMTIuOEM1LjkgMTQuMyA2LjIgMTUuNiA3LjMgMTYuN0M4LjEgMTcuNSA5IDE3LjkgMTAuMSAxNy45QzEwLjYgMTcuOSAxMC45IDE3LjkgMTEuMiAxNy44QzExLjggMTguNiAxMi42IDE5LjEgMTMuNiAxOS4xQzEzLjkgMTkuMSAxNC4zIDE5LjEgMTQuNiAxOUMxNS4yIDE4LjggMTUuNiAxOC40IDE2IDE3LjlDMTYuNCAxNy4zIDE2LjYgMTYuOCAxNi42IDE2LjJDMTYuNiAxNS44IDE2LjYgMTUuNSAxNi41IDE1LjJMMTYgMTMuNkwxNi42IDEzLjJDMTcuNCAxMi40IDE3LjggMTEuMyAxNy43IDEwLjFIMTlWOUgxNy40TTcuNyAxMS4zQzcuMSAxMSA2LjkgMTAuNiA3LjEgMTBDNy4zIDkuNCA3LjcgOS4yIDguMyA5LjRMMTEuNSAxMC42QzkuOSAxMS40IDguNyAxMS42IDcuNyAxMS4zTTE0IDE2LjlDMTMuNCAxNy4xIDEzIDE2LjkgMTIuNyAxNi4zQzEyLjQgMTUuMyAxMi42IDE0LjEgMTMuNCAxMi41TDE0LjYgMTUuNkMxNC44IDE2LjMgMTQuNiAxNi43IDE0IDE2LjlNMTUuMiAxMS42TDE0LjYgMTBWOS45TDE0LjMgOS42SDE0LjJMMTIuNiA5QzEzIDguNyAxMy40IDguNSAxMy45IDguNUMxNC40IDguNSAxNC45IDguNyAxNS4zIDkuMUMxNS43IDkuNSAxNS45IDkuOSAxNS45IDEwLjRDMTUuNyAxMC43IDE1LjUgMTEuMiAxNS4yIDExLjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVlRmxvd2VyID0gXCJNMTEuNiAxM1YxMi45TDExLjMgMTIuNkgxMS4yTDkuNiAxMkMxMCAxMS43IDEwLjQgMTEuNSAxMC45IDExLjVDMTEuNCAxMS41IDExLjkgMTEuNyAxMi4zIDEyLjFDMTIuNyAxMi41IDEyLjkgMTIuOSAxMi45IDEzLjRDMTIuOSAxMy45IDEyLjggMTQuMyAxMi40IDE0LjdMMTEuNiAxM005LjcgMTkuM0M5LjQgMTguMyA5LjYgMTcuMSAxMC40IDE1LjVMMTEuNiAxOC42QzExLjggMTkuMiAxMS42IDE5LjYgMTEgMTkuOUMxMC40IDIwLjIgMTAgMjAgOS43IDE5LjNNNC4xIDEzLjFDNC4zIDEyLjUgNC43IDEyLjMgNS4zIDEyLjVMOC41IDEzLjdDNi45IDE0LjUgNS43IDE0LjcgNC43IDE0LjRDNC4xIDE0LjEgMy45IDEzLjcgNC4xIDEzLjFNMTIgOC4xSDExVjkuNUgxMC42QzkuNSA5LjUgOC42IDkuOSA3LjggMTAuN0w3LjQgMTEuM0w2IDEwLjVDNS43IDEwLjQgNS40IDEwLjQgNSAxMC40QzQuNCAxMC40IDMuOCAxMC42IDMuMyAxMVMyLjQgMTEuOCAyLjIgMTIuNEMyIDEzLjEgMiAxMy43IDIuMiAxNC40QzIuNSAxNS4xIDIuOCAxNS42IDMuMyAxNS45QzIuOSAxNy40IDMuMiAxOC43IDQuMyAxOS44QzUuMSAyMC42IDYgMjEgNy4xIDIxQzcuNiAyMSA3LjkgMjEgOC4yIDIwLjlDOC44IDIxLjcgOS42IDIyLjIgMTAuNiAyMi4yQzEwLjkgMjIuMiAxMS4zIDIyLjIgMTEuNiAyMi4xQzEyLjIgMjEuOSAxMi42IDIxLjUgMTMgMjFDMTMuNCAyMC40IDEzLjYgMTkuOSAxMy42IDE5LjNDMTMuNiAxOC45IDEzLjYgMTguNiAxMy41IDE4LjNMMTIuOSAxNi45TDEzLjUgMTYuNUMxNC4zIDE1LjcgMTQuNyAxNC42IDE0LjYgMTMuNEgxNlYxMi40SDE0LjRDMTQgMTEuMiAxMy4yIDEwLjQgMTIgMTBWOC4xTTE3LjMgNi44QzE3LjEgNi42IDE3IDYuMyAxNyA2LjFDMTcgNS44IDE3LjEgNS42IDE3LjMgNS40QzE3LjUgNS4yIDE3LjcgNS4xIDE4IDUuMVMxOC41IDUuMiAxOC43IDUuNEMxOC45IDUuNSAxOSA1LjggMTkgNi4xQzE5IDYuNCAxOC45IDYuNiAxOC43IDYuOEMxOC41IDcgMTguMyA3IDE4IDdTMTcuNSA3IDE3LjMgNi44TTIwLjcgNC4xSDE5LjZMMTkuMyAzLjJDMTkuMSAyLjUgMTguNyAyLjIgMTggMi4yQzE3LjMgMi4yIDE2LjggMi41IDE2LjcgMy4yTDE2LjQgNC4xSDE1LjNDMTQuNyA0LjEgMTQuMyA0LjQgMTQgNUMxMy44IDUuNiAxNCA2LjEgMTQuNiA2LjVMMTUuNSA3TDE1LjEgOC4yQzE0LjkgOC42IDE1IDkgMTUuMiA5LjRDMTUuNSA5LjggMTUuOCAxMCAxNi4zIDEwQzE2LjcgMTAgMTcgOS45IDE3LjIgOS43TDE4IDkuMUwxOC44IDkuOEMxOSA5LjkgMTkuMyAxMCAxOS43IDEwQzIwLjIgMTAgMjAuNSA5LjggMjAuOCA5LjRDMjEgOSAyMS4xIDguNiAyMC45IDguMkwyMC41IDdMMjEuMyA2LjVDMjEuOSA2LjEgMjIuMSA1LjYgMjEuOSA1QzIxLjcgNC4zIDIxLjMgNC4xIDIwLjcgNC4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZWhpdmVPZmZPdXRsaW5lID0gXCJNMS4xIDNMNC43IDYuNUMzLjcgNy4yIDMgOC4yIDMgOS41QzMgMTAuMSAzLjIgMTAuNyAzLjUgMTEuMkMyIDExLjYgMSAxMi45IDEgMTQuNUMxIDE1LjggMS43IDE2LjggMi43IDE3LjVDMi4yIDE4IDIgMTguNyAyIDE5LjVDMiAyMS40IDMuNiAyMyA1LjUgMjNIMTguNUMxOS4zIDIzIDIwIDIyLjcgMjAuNiAyMi4zTDIxLjMgMjNMMjIuNiAyMS43TDIuNCAxLjdMMS4xIDNNOS4yIDExSDYuNUM1LjcgMTEgNSAxMC4zIDUgOS41QzUgOC44IDUuNSA4LjIgNi4yIDhMOS4yIDExTTkgMjFINS41QzQuNyAyMSA0IDIwLjMgNCAxOS41UzQuNyAxOCA1LjUgMThIOVYyMU05LjIgMTZINC41QzMuNyAxNiAzIDE1LjMgMyAxNC41UzMuNyAxMyA0LjUgMTNIMTEuMkwxMi4yIDE0SDEyQzEwLjcgMTQgOS42IDE0LjggOS4yIDE2TTE4LjUgMjFIMTVWMThIMTYuMkwxOS4xIDIwLjlDMTguOSAyMSAxOC43IDIxIDE4LjUgMjFNNy4xIDMuOUw1LjcgMi41QzYuMyAxLjYgNy4zIDEgOC41IDFIMTUuNUMxNy40IDEgMTkgMi42IDE5IDQuNUMxOSA1LjEgMTguOCA1LjcgMTguNSA2LjJDMjAgNi42IDIxIDcuOSAyMSA5LjVDMjEgMTAuMSAyMC44IDEwLjcgMjAuNSAxMS4yQzIxLjkgMTEuNyAyMyAxMyAyMyAxNC41QzIzIDE1LjggMjIuMyAxNi44IDIxLjMgMTcuNUMyMS42IDE3LjkgMjEuOCAxOC4zIDIxLjkgMTguN0wxOS4yIDE2SDE5LjVDMjAuMyAxNiAyMSAxNS4zIDIxIDE0LjVTMjAuMyAxMyAxOS41IDEzSDE2LjJMMTQuMiAxMUgxNy41QzE4LjMgMTEgMTkgMTAuMyAxOSA5LjVTMTguMyA4IDE3LjUgOEgxMS4yTDkuMiA2SDE1LjVDMTYuMyA2IDE3IDUuMyAxNyA0LjVTMTYuMyAzIDE1LjUgM0g4LjVDNy45IDMgNy4zIDMuNCA3LjEgMy45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZWhpdmVPdXRsaW5lID0gXCJNMjMgMTQuNUMyMyAxMi45NCAyMS45NyAxMS42MyAyMC41NSAxMS4xOEMyMC44MyAxMC42OCAyMSAxMC4xMSAyMSA5LjVDMjEgNy45NCAxOS45NyA2LjYzIDE4LjU1IDYuMThDMTguODMgNS42OCAxOSA1LjExIDE5IDQuNUMxOSAyLjU3IDE3LjQzIDEgMTUuNSAxSDguNUM2LjU3IDEgNSAyLjU3IDUgNC41QzUgNS4xMSA1LjE3IDUuNjggNS40NSA2LjE4QzQuMDQgNi42MyAzIDcuOTQgMyA5LjVDMyAxMC4xMSAzLjE3IDEwLjY4IDMuNDUgMTEuMThDMi4wNCAxMS42MyAxIDEyLjk0IDEgMTQuNUMxIDE1Ljc2IDEuNjcgMTYuODQgMi42NyAxNy40NkMyLjI1IDE4LjAzIDIgMTguNzQgMiAxOS41QzIgMjEuNDMgMy41NyAyMyA1LjUgMjNIMTguNUMyMC40MyAyMyAyMiAyMS40MyAyMiAxOS41QzIyIDE4Ljc0IDIxLjc1IDE4LjAzIDIxLjMzIDE3LjQ2QzIyLjMzIDE2Ljg0IDIzIDE1Ljc2IDIzIDE0LjVNOC41IDNIMTUuNUMxNi4zMyAzIDE3IDMuNjcgMTcgNC41UzE2LjMzIDYgMTUuNSA2SDguNUM3LjY3IDYgNyA1LjMzIDcgNC41UzcuNjcgMyA4LjUgM002LjUgOEgxNy41QzE4LjMzIDggMTkgOC42NyAxOSA5LjVTMTguMzMgMTEgMTcuNSAxMUg2LjVDNS42NyAxMSA1IDEwLjMzIDUgOS41UzUuNjcgOCA2LjUgOE00IDE5LjVDNCAxOC42NyA0LjY3IDE4IDUuNSAxOEg5VjIxSDUuNUM0LjY3IDIxIDQgMjAuMzMgNCAxOS41TTE4LjUgMjFIMTVWMThIMTguNUMxOS4zMyAxOCAyMCAxOC42NyAyMCAxOS41UzE5LjMzIDIxIDE4LjUgMjFNMTkuNSAxNkgxNC44MkMxNC40IDE0Ljg0IDEzLjMgMTQgMTIgMTRTOS42IDE0Ljg0IDkuMTggMTZINC41QzMuNjcgMTYgMyAxNS4zMyAzIDE0LjVTMy42NyAxMyA0LjUgMTNIMTkuNUMyMC4zMyAxMyAyMSAxMy42NyAyMSAxNC41UzIwLjMzIDE2IDE5LjUgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVla2VlcGVyID0gXCJNMTkgNUgxNkMxNiAzLjM0IDE0LjIxIDIgMTIgMkM5Ljc5IDIgOCAzLjM0IDggNUg1QzQuNDUgNSA0IDUuNDUgNCA2UzQuNDUgNyA1IDdWMTRDNSAxNS4xMSA1LjkgMTYgNyAxNkgxN0MxOC4xMSAxNiAxOSAxNS4xMSAxOSAxNFY3QzE5LjU1IDcgMjAgNi41NSAyMCA2UzE5LjU1IDUgMTkgNU0xNyAxNEg3VjdIMTdWMTRNMTUuODYgOEMxNS45NCA4LjMyIDE2IDguNjUgMTYgOUMxNiAxMS4yMSAxNC4yMSAxMyAxMiAxM1M4IDExLjIxIDggOUM4IDguNjUgOC4wNiA4LjMyIDguMTQgOEgxMC4yOEMxMC4xMSA4LjMgMTAgOC42MyAxMCA5QzEwIDEwLjEgMTAuOSAxMSAxMiAxMVMxNCAxMC4xIDE0IDlDMTQgOC42MyAxMy44OSA4LjMgMTMuNzIgOEgxNS44Nk0yMCAxOVYyMkg0VjE5QzQgMTguMjIgNC40NyAxNy41NSA1LjE4IDE3SDEyQzkuMjggMTcgNi4xOSAxOC4yOSA2IDE5VjIwSDE4VjE5QzE3LjgxIDE4LjI5IDE0LjcyIDE3IDEyIDE3SDE4LjgyQzE5LjUzIDE3LjU1IDIwIDE4LjIyIDIwIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZXIgPSBcIk00LDJIMTlMMTcsMjJINkw0LDJNNi4yLDRMNy44LDIwSDguOEw3LjQzLDYuMzRDOC41LDYgOS44OSw1Ljg5IDExLDdDMTIuNTYsOC41NiAxNS4zMyw3LjY5IDE2LjUsNy4yM0wxNi44LDRINi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZXJPdXRsaW5lID0gXCJNNCAyTDYgMjJIMTdMMTkgMkg0TTYuMiA0SDE2LjhMMTYuNSA3LjIzQzEzLjE4IDguNSAxMS44NSA3LjY3IDExLjM4IDcuMzFDMTEuMTMgNy4xMiAxMC43NyA2LjY5IDEwLjExIDYuMzlDOS40NSA2LjA4IDguNTUgNiA3LjUgNi4zMkM3LjA5IDYuNDMgNi43NyA2LjYxIDYuNSA2Ljc5TDYuMiA0TTguODYgOC4xMUM5LjA1IDguMTEgOS4xNiA4LjE1IDkuMjcgOC4yQzkuNSA4LjMgOS43MSA4LjU1IDEwLjE3IDguOUMxMS4wMyA5LjU2IDEzLjAzIDEwLjM2IDE2LjI2IDkuNDFMMTUuMiAyMEg3LjhMNi43MSA5LjA2QzYuNzYgOSA2LjkxIDguODkgNy4xNyA4LjcxQzcuNSA4LjUgNy45MSA4LjI4IDggOC4yNUw4IDguMjVIOC4wM0M4LjQxIDguMTQgOC42NyA4LjEgOC44NiA4LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGwgPSBcIk0yMSwxOVYyMEgzVjE5TDUsMTdWMTFDNSw3LjkgNy4wMyw1LjE3IDEwLDQuMjlDMTAsNC4xOSAxMCw0LjEgMTAsNEEyLDIgMCAwLDEgMTIsMkEyLDIgMCAwLDEgMTQsNEMxNCw0LjEgMTQsNC4xOSAxNCw0LjI5QzE2Ljk3LDUuMTcgMTksNy45IDE5LDExVjE3TDIxLDE5TTE0LDIxQTIsMiAwIDAsMSAxMiwyM0EyLDIgMCAwLDEgMTAsMjFcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsQWxlcnQgPSBcIk0yMyA3VjEzSDIxVjdNMjEgMTVIMjNWMTdIMjFNMTIgMkEyIDIgMCAwIDAgMTAgNEEyIDIgMCAwIDAgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgyMVYxOUwxOSAxN1YxMUMxOSA3LjgyIDE2Ljg4IDUuMTQgMTQgNC4yOUEyIDIgMCAwIDAgMTQgNEEyIDIgMCAwIDAgMTIgMk0xMCAyMUEyIDIgMCAwIDAgMTIgMjNBMiAyIDAgMCAwIDE0IDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxBbGVydE91dGxpbmUgPSBcIk0xMiAyQTIgMiAwIDAgMCAxMCA0QTIgMiAwIDAgMCAxMCA0LjI5QzcuMTIgNS4xNCA1IDcuODIgNSAxMVYxN0wzIDE5VjIwSDIxVjE5TDE5IDE3VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5QTIgMiAwIDAgMCAxNCA0QTIgMiAwIDAgMCAxMiAyTTEyIDZBNSA1IDAgMCAxIDE3IDExVjE4SDdWMTFBNSA1IDAgMCAxIDEyIDZNMjEgN1YxM0gyM1Y3SDIxTTIxIDE1VjE3SDIzVjE1SDIxTTEwIDIxQTIgMiAwIDAgMCAxMiAyM0EyIDIgMCAwIDAgMTQgMjFIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbENhbmNlbCA9IFwiTTE3LjUgMTNBNC41IDQuNSAwIDAgMCAxMyAxNy41QTQuNSA0LjUgMCAwIDAgMTcuNSAyMkE0LjUgNC41IDAgMCAwIDIyIDE3LjVBNC41IDQuNSAwIDAgMCAxNy41IDEzTTE3LjUgMTQuNUEzIDMgMCAwIDEgMjAuNSAxNy41QTMgMyAwIDAgMSAyMC4wOCAxOUwxNiAxNC45MkEzIDMgMCAwIDEgMTcuNSAxNC41TTE0LjkyIDE2TDE5IDIwLjA4QTMgMyAwIDAgMSAxNy41IDIwLjVBMyAzIDAgMCAxIDE0LjUgMTcuNUEzIDMgMCAwIDEgMTQuOTIgMTZNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRDMTAgNC4xIDEwIDQuMTkgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMS41QTYuNSA2LjUgMCAwIDEgMTEgMTcuNUE2LjUgNi41IDAgMCAxIDE3LjUgMTFBNi41IDYuNSAwIDAgMSAxOSAxMS4xOFYxMUMxOSA3LjgyIDE2Ljg4IDUuMTQgMTQgNC4yOUMxNCA0LjE5IDE0IDQuMSAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJNMTAgMjFDMTAgMjIuMTEgMTAuOSAyMyAxMiAyM0MxMi41IDIzIDEyLjk3IDIyLjgxIDEzLjMzIDIyLjVBNi41IDYuNSAwIDAgMSAxMi4wMyAyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsQ2FuY2VsT3V0bGluZSA9IFwiTTE3LjUgMTNBNC41IDQuNSAwIDAgMCAxMyAxNy41QTQuNSA0LjUgMCAwIDAgMTcuNSAyMkE0LjUgNC41IDAgMCAwIDIyIDE3LjVBNC41IDQuNSAwIDAgMCAxNy41IDEzTTE3LjUgMTQuNUEzIDMgMCAwIDEgMjAuNSAxNy41QTMgMyAwIDAgMSAyMC4wOCAxOUwxNiAxNC45MkEzIDMgMCAwIDEgMTcuNSAxNC41TTE0LjkyIDE2TDE5IDIwLjA4QTMgMyAwIDAgMSAxNy41IDIwLjVBMyAzIDAgMCAxIDE0LjUgMTcuNUEzIDMgMCAwIDEgMTQuOTIgMTZNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRDMTAgNC4xIDEwIDQuMTkgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMS41QTYuNSA2LjUgMCAwIDEgMTEuMDMgMThIN1YxMUE1IDUgMCAwIDEgMTIgNkE1IDUgMCAwIDEgMTcgMTFWMTFBNi41IDYuNSAwIDAgMSAxNy41IDExQTYuNSA2LjUgMCAwIDEgMTkgMTEuMThWMTFDMTkgNy44MiAxNi44OCA1LjE0IDE0IDQuMjlDMTQgNC4xOSAxNCA0LjEgMTQgNEMxNCAyLjkgMTMuMTEgMiAxMiAyTTEwIDIxQzEwIDIyLjExIDEwLjkgMjMgMTIgMjNDMTIuNSAyMyAxMi45NyAyMi44MSAxMy4zMyAyMi41QTYuNSA2LjUgMCAwIDEgMTIuMDMgMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbENoZWNrID0gXCJNMTcuNzUgMjEuMTZMMTUgMTguMTZMMTYuMTYgMTdMMTcuNzUgMTguNTlMMjEuMzQgMTVMMjIuNSAxNi40MUwxNy43NSAyMS4xNk0zIDIwVjE5TDUgMTdWMTFDNSA3LjkgNy4wMyA1LjE4IDEwIDQuMjlWNEMxMCAyLjkgMTAuOSAyIDEyIDJDMTMuMTEgMiAxNCAyLjkgMTQgNFY0LjI5QzE2Ljk3IDUuMTggMTkgNy45IDE5IDExVjEyLjA4TDE4IDEyQzE0LjY5IDEyIDEyIDE0LjY5IDEyIDE4QzEyIDE4LjcgMTIuMTIgMTkuMzcgMTIuMzQgMjBIM00xMiAyM0MxMC45IDIzIDEwIDIyLjExIDEwIDIxSDEyLjhDMTMuMDQgMjEuNDEgMTMuMzMgMjEuNzkgMTMuNjUgMjIuMTNDMTMuMjkgMjIuNjYgMTIuNjkgMjMgMTIgMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbENoZWNrT3V0bGluZSA9IFwiTTE3Ljc1IDIxLjE2TDE1IDE4LjE2TDE2LjE2IDE3TDE3Ljc1IDE4LjU5TDIxLjM0IDE1TDIyLjUgMTYuNDFMMTcuNzUgMjEuMTZNMTAgMjFIMTIuOEMxMy4wNCAyMS40MSAxMy4zMyAyMS43OSAxMy42NSAyMi4xM0MxMy4yOSAyMi42NiAxMi42OSAyMyAxMiAyM0MxMC45IDIzIDEwIDIyLjExIDEwIDIxTTMgMjBWMTlMNSAxN1YxMUM1IDcuOSA3LjAzIDUuMTggMTAgNC4yOVY0QzEwIDIuOSAxMC45IDIgMTIgMkMxMy4xMSAyIDE0IDIuOSAxNCA0VjQuMjlDMTYuOTcgNS4xOCAxOSA3LjkgMTkgMTFWMTIuMDhMMTggMTJMMTcgMTIuMDhWMTFDMTcgOC4yNCAxNC43NiA2IDEyIDZDOS4yNCA2IDcgOC4yNCA3IDExVjE4SDEyQzEyIDE4LjcgMTIuMTIgMTkuMzcgMTIuMzQgMjBIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTcsMTZWMTVMMTYsMTRWMTEuMzlDMTYsMTAuMyAxNS43Myw5LjM0IDE1LjIxLDguNTNDMTQuNyw3LjcyIDEzLjk2LDcuMjEgMTMsN1Y2LjVBMSwxIDAgMCwwIDEyLDUuNUExLDEgMCAwLDAgMTEsNi41VjdDMTAuMDQsNy4yMSA5LjMsNy43MiA4Ljc5LDguNTNDOC4yNyw5LjM0IDgsMTAuMyA4LDExLjM5VjE0TDcsMTVWMTZIMTdNMTMuNSwxN0gxMC41QTEuNSwxLjUgMCAwLDAgMTIsMTguNUExLjUsMS41IDAgMCwwIDEzLjUsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbENpcmNsZU91dGxpbmUgPSBcIk0xNywxNkg3VjE1TDgsMTRWMTEuMzlDOCwxMC4zIDguMjcsOS4zNCA4Ljc5LDguNTNDOS4zLDcuNzIgMTAuMDQsNy4yMSAxMSw3VjYuNUExLDEgMCAwLDEgMTIsNS41QTEsMSAwIDAsMSAxMyw2LjVWN0MxMy45Niw3LjIxIDE0LjcsNy43MiAxNS4yMSw4LjUzQzE1LjczLDkuMzQgMTYsMTAuMyAxNiwxMS4zOVYxNEwxNywxNVYxNk0xMy41LDE3QTEuNSwxLjUgMCAwLDEgMTIsMTguNUExLjUsMS41IDAgMCwxIDEwLjUsMTdIMTMuNU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbE1pbnVzID0gXCJNMjIgMTlWMTdIMTRWMTlIMjJNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRDMTAgNC4xIDEwIDQuMTkgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMi4zNUMxMi4xMiAxOS4zNiAxMiAxOC42OCAxMiAxOEMxMiAxNC42OSAxNC42OSAxMiAxOCAxMkMxOC4zNCAxMiAxOC42NyAxMi4wMyAxOSAxMi4wOVYxMUMxOSA3LjgyIDE2Ljg4IDUuMTQgMTQgNC4yOUMxNCA0LjE5IDE0IDQuMSAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJNMTAgMjFDMTAgMjIuMTEgMTAuOSAyMyAxMiAyM0MxMi42NiAyMyAxMy4yOCAyMi42NyAxMy42NSAyMi4xM0MxMy4zMyAyMS43OSAxMy4wNSAyMS40MSAxMi44MSAyMUgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsTWludXNPdXRsaW5lID0gXCJNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRWNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMi4zNUMxMi4xMiAxOS4zNiAxMiAxOC42OCAxMiAxOEg3VjExQzcgOC4yNCA5LjI0IDYgMTIgNlMxNyA4LjI0IDE3IDExVjEyLjA5QzE3LjMzIDEyLjAzIDE3LjY3IDEyIDE4IDEyQzE4LjM0IDEyIDE4LjY3IDEyLjAzIDE5IDEyLjA5VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5VjRDMTQgMi45IDEzLjExIDIgMTIgMk0xNCAxN1YxOUgyMlYxN00xMCAyMUMxMCAyMi4xMSAxMC45IDIzIDEyIDIzQzEyLjY2IDIzIDEzLjI4IDIyLjY3IDEzLjY1IDIyLjEzQzEzLjMzIDIxLjc5IDEzLjA1IDIxLjQxIDEyLjgxIDIxSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxPZmYgPSBcIk0yMC44NCwyMi43M0wxOC4xMSwyMEgzVjE5TDUsMTdWMTFDNSw5Ljg2IDUuMjksOC43MyA1LjgzLDcuNzJMMS4xMSwzTDIuMzksMS43M0wyMi4xMSwyMS40NkwyMC44NCwyMi43M00xOSwxNS44VjExQzE5LDcuOSAxNi45Nyw1LjE3IDE0LDQuMjlDMTQsNC4xOSAxNCw0LjEgMTQsNEEyLDIgMCAwLDAgMTIsMkEyLDIgMCAwLDAgMTAsNEMxMCw0LjEgMTAsNC4xOSAxMCw0LjI5QzkuMzksNC40NyA4LjgsNC43NCA4LjI2LDUuMDlMMTksMTUuOE0xMiwyM0EyLDIgMCAwLDAgMTQsMjFIMTBBMiwyIDAgMCwwIDEyLDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxPZmZPdXRsaW5lID0gXCJNMjIuMTEsMjEuNDZMMi4zOSwxLjczTDEuMTEsM0w1LjgzLDcuNzJDNS4yOSw4LjczIDUsOS44NiA1LDExVjE3TDMsMTlWMjBIMTguMTFMMjAuODQsMjIuNzNMMjIuMTEsMjEuNDZNNywxOFYxMUM3LDEwLjM5IDcuMTEsOS43OSA3LjM0LDkuMjNMMTYuMTEsMThIN00xMCwyMUgxNEEyLDIgMCAwLDEgMTIsMjNBMiwyIDAgMCwxIDEwLDIxTTguMjksNS4wOUM4LjgyLDQuNzUgOS40LDQuNSAxMCw0LjI5QzEwLDQuMTkgMTAsNC4xIDEwLDRBMiwyIDAgMCwxIDEyLDJBMiwyIDAgMCwxIDE0LDRDMTQsNC4xIDE0LDQuMTkgMTQsNC4yOUMxNi45Nyw1LjE3IDE5LDcuOSAxOSwxMVYxNS44TDE3LDEzLjhWMTFBNSw1IDAgMCwwIDEyLDZDMTEuMjIsNiAxMC40NSw2LjIgOS43Niw2LjU2TDguMjksNS4wOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsT3V0bGluZSA9IFwiTTE2LDE3SDdWMTAuNUM3LDggOSw2IDExLjUsNkMxNCw2IDE2LDggMTYsMTAuNU0xOCwxNlYxMC41QzE4LDcuNDMgMTUuODYsNC44NiAxMyw0LjE4VjMuNUExLjUsMS41IDAgMCwwIDExLjUsMkExLjUsMS41IDAgMCwwIDEwLDMuNVY0LjE4QzcuMTMsNC44NiA1LDcuNDMgNSwxMC41VjE2TDMsMThWMTlIMjBWMThNMTEuNSwyMkEyLDIgMCAwLDAgMTMuNSwyMEg5LjVBMiwyIDAgMCwwIDExLjUsMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbFBsdXMgPSBcIk0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNE0xMiAyQTIgMiAwIDAgMCAxMCA0QTIgMiAwIDAgMCAxMCA0LjI5QzcuMTIgNS4xNCA1IDcuODIgNSAxMVYxN0wzIDE5VjIwSDEyLjM1QTYgNiAwIDAgMSAxMiAxOEE2IDYgMCAwIDEgMTggMTJBNiA2IDAgMCAxIDE5IDEyLjA5VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5QTIgMiAwIDAgMCAxNCA0QTIgMiAwIDAgMCAxMiAyTTEwIDIxQTIgMiAwIDAgMCAxMiAyM0EyIDIgMCAwIDAgMTMuNjUgMjIuMTNBNiA2IDAgMCAxIDEyLjgxIDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxQbHVzT3V0bGluZSA9IFwiTTEyIDJDMTAuOSAyIDEwIDIuOSAxMCA0QzEwIDQuMSAxMCA0LjE5IDEwIDQuMjlDNy4xMiA1LjE0IDUgNy44MiA1IDExVjE3TDMgMTlWMjBIMTIuMzVDMTIuMTIgMTkuMzYgMTIgMTguNjggMTIgMThIN1YxMUM3IDguMjQgOS4yNCA2IDEyIDZDMTQuNzYgNiAxNyA4LjI0IDE3IDExVjEyLjA5QzE3LjMzIDEyLjAzIDE3LjY3IDEyIDE4IDEyQzE4LjM0IDEyIDE4LjY3IDEyLjAzIDE5IDEyLjA5VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5QzE0IDQuMTkgMTQgNC4xIDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMk0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNE0xMCAyMUMxMCAyMi4xMSAxMC45IDIzIDEyIDIzQzEyLjY2IDIzIDEzLjI4IDIyLjY3IDEzLjY1IDIyLjEzQzEzLjMzIDIxLjc5IDEzLjA1IDIxLjQxIDEyLjgxIDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxSZW1vdmUgPSBcIk0yMC4xMiAxNC40NkwxOCAxNi41OUwxNS44OCAxNC40NkwxNC40NiAxNS44OEwxNi41OSAxOEwxNC40NiAyMC4xMkwxNS44OCAyMS41NEwxOCAxOS40MUwyMC4xMiAyMS41NEwyMS41NCAyMC4xMkwxOS40MSAxOEwyMS41NCAxNS44OE0xMiAyQzEwLjkgMiAxMCAyLjkgMTAgNEMxMCA0LjEgMTAgNC4xOSAxMCA0LjI5QzcuMTIgNS4xNCA1IDcuODIgNSAxMVYxN0wzIDE5VjIwSDEyLjM1QzEyLjEyIDE5LjM2IDEyIDE4LjY4IDEyIDE4QzEyIDE0LjY5IDE0LjY5IDEyIDE4IDEyQzE4LjM0IDEyIDE4LjY3IDEyLjAzIDE5IDEyLjA5VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5QzE0IDQuMTkgMTQgNC4xIDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMk0xMCAyMUMxMCAyMi4xMSAxMC45IDIzIDEyIDIzQzEyLjY2IDIzIDEzLjI4IDIyLjY3IDEzLjY1IDIyLjEzQzEzLjMzIDIxLjc5IDEzLjA1IDIxLjQxIDEyLjgxIDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxSZW1vdmVPdXRsaW5lID0gXCJNMjAuMTIgMTQuNDZMMTggMTYuNTlMMTUuODggMTQuNDZMMTQuNDYgMTUuODhMMTYuNTkgMThMMTQuNDYgMjAuMTJMMTUuODggMjEuNTRMMTggMTkuNDFMMjAuMTIgMjEuNTRMMjEuNTQgMjAuMTJMMTkuNDEgMThMMjEuNTQgMTUuODhNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRDMTAgNC4xIDEwIDQuMTkgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMi4zNUMxMi4xMiAxOS4zNiAxMiAxOC42OCAxMiAxOEg3VjExQTUgNSAwIDAgMSAxMiA2QTUgNSAwIDAgMSAxNyAxMVYxMi4wOUMxNy4zMyAxMi4wNCAxNy42NiAxMiAxOCAxMkMxOC4zNCAxMiAxOC42NyAxMi4wMyAxOSAxMi4wOVYxMUMxOSA3LjgyIDE2Ljg4IDUuMTQgMTQgNC4yOUMxNCA0LjE5IDE0IDQuMSAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJNMTAgMjFDMTAgMjIuMTEgMTAuOSAyMyAxMiAyM0MxMi42NiAyMyAxMy4yOCAyMi42NyAxMy42NSAyMi4xM0MxMy4zMyAyMS43OSAxMy4wNSAyMS40MSAxMi44MSAyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsUmluZyA9IFwiTTIxLDE5VjIwSDNWMTlMNSwxN1YxMUM1LDcuOSA3LjAzLDUuMTcgMTAsNC4yOUMxMCw0LjE5IDEwLDQuMSAxMCw0QTIsMiAwIDAsMSAxMiwyQTIsMiAwIDAsMSAxNCw0QzE0LDQuMSAxNCw0LjE5IDE0LDQuMjlDMTYuOTcsNS4xNyAxOSw3LjkgMTksMTFWMTdMMjEsMTlNMTQsMjFBMiwyIDAgMCwxIDEyLDIzQTIsMiAwIDAsMSAxMCwyMU0xOS43NSwzLjE5TDE4LjMzLDQuNjFDMjAuMDQsNi4zIDIxLDguNiAyMSwxMUgyM0MyMyw4LjA3IDIxLjg0LDUuMjUgMTkuNzUsMy4xOU0xLDExSDNDMyw4LjYgMy45Niw2LjMgNS42Nyw0LjYxTDQuMjUsMy4xOUMyLjE2LDUuMjUgMSw4LjA3IDEsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbFJpbmdPdXRsaW5lID0gXCJNMTAsMjFIMTRBMiwyIDAgMCwxIDEyLDIzQTIsMiAwIDAsMSAxMCwyMU0yMSwxOVYyMEgzVjE5TDUsMTdWMTFDNSw3LjkgNy4wMyw1LjE3IDEwLDQuMjlDMTAsNC4xOSAxMCw0LjEgMTAsNEEyLDIgMCAwLDEgMTIsMkEyLDIgMCAwLDEgMTQsNEMxNCw0LjEgMTQsNC4xOSAxNCw0LjI5QzE2Ljk3LDUuMTcgMTksNy45IDE5LDExVjE3TDIxLDE5TTE3LDExQTUsNSAwIDAsMCAxMiw2QTUsNSAwIDAsMCA3LDExVjE4SDE3VjExTTE5Ljc1LDMuMTlMMTguMzMsNC42MUMyMC4wNCw2LjMgMjEsOC42IDIxLDExSDIzQzIzLDguMDcgMjEuODQsNS4yNSAxOS43NSwzLjE5TTEsMTFIM0MzLDguNiAzLjk2LDYuMyA1LjY3LDQuNjFMNC4yNSwzLjE5QzIuMTYsNS4yNSAxLDguMDcgMSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsU2xlZXAgPSBcIk0xMCwyMUgxNEEyLDIgMCAwLDEgMTIsMjNBMiwyIDAgMCwxIDEwLDIxTTIxLDE5VjIwSDNWMTlMNSwxN1YxMUM1LDcuOSA3LjAzLDUuMTcgMTAsNC4yOUMxMCw0LjE5IDEwLDQuMSAxMCw0QTIsMiAwIDAsMSAxMiwyQTIsMiAwIDAsMSAxNCw0QzE0LDQuMSAxNCw0LjE5IDE0LDQuMjlDMTYuOTcsNS4xNyAxOSw3LjkgMTksMTFWMTdMMjEsMTlNMTUsOUg5VjExSDEyLjI0TDksMTMuN1YxNkgxNVYxNEgxMS43NkwxNSwxMS4zVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbFNsZWVwT3V0bGluZSA9IFwiTTEwLDIxSDE0QTIsMiAwIDAsMSAxMiwyM0EyLDIgMCAwLDEgMTAsMjFNMjEsMTlWMjBIM1YxOUw1LDE3VjExQzUsNy45IDcuMDMsNS4xNyAxMCw0LjI5QzEwLDQuMTkgMTAsNC4xIDEwLDRBMiwyIDAgMCwxIDEyLDJBMiwyIDAgMCwxIDE0LDRDMTQsNC4xIDE0LDQuMTkgMTQsNC4yOUMxNi45Nyw1LjE3IDE5LDcuOSAxOSwxMVYxN0wyMSwxOU0xNywxMUE1LDUgMCAwLDAgMTIsNkE1LDUgMCAwLDAgNywxMVYxOEgxN1YxMU05LDlWMTFIMTIuMjRMOSwxMy43VjE2SDE1VjE0SDExLjc2TDE1LDExLjNWOUg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJldGEgPSBcIk05LjIzLDE3LjU5VjIzLjEySDYuODhWNi43MkM2Ljg4LDUuMjcgNy4zMSw0LjEzIDguMTYsMy4yOEM5LDIuNDMgMTAuMTcsMiAxMS42MSwyQzEzLDIgMTQuMDcsMi4zNCAxNC44NywzQzE1LjY2LDMuNjggMTYuMDUsNC42MiAxNi4wNSw1LjgxQzE2LjA1LDYuNjMgMTUuNzksNy40IDE1LjI3LDguMTFDMTQuNzUsOC44MiAxNC4wOCw5LjMxIDEzLjI1LDkuNThWOS42MkMxNC41LDkuODIgMTUuNDcsMTAuMjcgMTYuMTMsMTFDMTYuNzksMTEuNzEgMTcuMTIsMTIuNjIgMTcuMTIsMTMuNzRDMTcuMTIsMTUuMDYgMTYuNjYsMTYuMTQgMTUuNzUsMTYuOTdDMTQuODMsMTcuOCAxMy42MywxOC4yMSAxMi4xMywxOC4yMUMxMS4wNywxOC4yMSAxMC4xLDE4IDkuMjMsMTcuNTlNMTAuNzIsMTAuNzVWOC44M0MxMS41OSw4LjcyIDEyLjMsOC40IDEyLjg3LDcuODZDMTMuNDMsNy4zMSAxMy43MSw2LjcgMTMuNzEsNkMxMy43MSw0LjYyIDEzLDMuOTIgMTEuNiwzLjkyQzEwLjg0LDMuOTIgMTAuMjUsNC4xNiA5Ljg0LDQuNjVDOS40Myw1LjE0IDkuMjMsNS44MiA5LjIzLDYuNzFWMTUuNUMxMC4xNCwxNi4wMyAxMS4wMywxNi4yOSAxMS44OSwxNi4yOUMxMi43MywxNi4yOSAxMy4zOSwxNi4wNyAxMy44NiwxNS42NEMxNC4zMywxNS4yIDE0LjU2LDE0LjU4IDE0LjU2LDEzLjc5QzE0LjU2LDEyIDEzLjI4LDExIDEwLjcyLDEwLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJldGFtYXggPSBcIk00LDVBMiwyIDAgMCwwIDIsN1YxN0EyLDIgMCAwLDAgNCwxOUgyMEEyLDIgMCAwLDAgMjIsMTdWN0EyLDIgMCAwLDAgMjAsNUg0TTgsOUE0LDQgMCAwLDEgMTIsMTNBNCw0IDAgMCwxIDgsMTdBNCw0IDAgMCwxIDQsMTNBNCw0IDAgMCwxIDgsOU0xMyw5SDIwVjE3SDEzVjlNOCwxMUEyLDIgMCAwLDAgNiwxM0EyLDIgMCAwLDAgOCwxNUEyLDIgMCAwLDAgMTAsMTNBMiwyIDAgMCwwIDgsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlhdGhsb24gPSBcIk0xMi44OCwzLjY0QzEzLjY1LDMuNjQgMTQuMjgsNC4yNyAxNC4yOCw1LjA0QzE0LjI4LDUuODEgMTMuNjUsNi40NCAxMi44OCw2LjQ0QzEyLjExLDYuNDQgMTEuNSw1LjgxIDExLjUsNS4wNEMxMS41LDQuMjcgMTIuMTEsMy42NCAxMi44OCwzLjY0TTE1LDEzSDE2LjVWMTlIMTVWMTNNMTUsOC41SDE2LjVWMTBIMTVWOC41TTEwLjA0LDIuNkw4LDIuMDRMNi4wNiw4LjU4TDMuOSwxMS40Mkw3LjE3LDEyLjM3TDEwLjA0LDIuNk0xOS42NywxOC41NUMxOS4zMSwxOC45MyAxOC44OCwxOS41IDE4LjQsMTkuN0MxNy45MSwxOS45MiAxNy41NCwyMCAxNywyMEgxMy41TDEzLjQzLDE3QzEzLjQyLDE2LjgzIDEzLjM3LDE2LjY3IDEzLjI4LDE2LjVMMTAuODgsMTIuMjRMMTEuNzYsOS41QzEyLjM0LDEwLjU1IDEzLDExLjczIDEzLjA2LDExLjgzQzEzLjIxLDEyIDEzLjQ1LDEyLjEzIDEzLjY5LDEyLjEzSDE1LjlBMC44MSwwLjgxIDAgMCwwIDE2LjcxLDExLjMyQzE2LjcxLDEwLjkgMTYuMzgsMTAuNTYgMTUuOTYsMTAuNTNMMTQuMjksMTAuNEwxMi40LDdDMTIuNCw3IDEyLDYuNDIgMTEuMTQsNi40MkMxMC4yNyw2LjQyIDEwLDYuODQgOS44Myw3LjQyTDYsMjBIM1YyMkgxN0MxOC4zNywyMiAxOS41MywyMS4zNCAyMC41LDIwLjM3TDE5LjY3LDE4LjU1TTkuNzUsMTQuMzlMMTEuNjIsMTcuMzlMMTEuNzUsMjBINy43NUw5Ljc1LDE0LjM5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpY3ljbGUgPSBcIk0xOSAxMEMxOC40NCAxMCAxNy45MSAxMC4xMSAxNy40MSAxMC4yOEwxNC40NiA0LjVIMTFWNkgxMy41NEwxNC40MiA3LjcyTDEyIDEzLjEzTDEwLjIzIDguOTVDMTAuNSA4Ljg1IDEwLjc0IDguNTggMTAuNzQgOC4yNUMxMC43NCA3Ljg0IDEwLjQxIDcuNSAxMCA3LjVIOEM3LjU4IDcuNSA3LjI0IDcuODQgNy4yNCA4LjI1UzcuNTggOSA4IDlIOC42MUwxMC44NiAxNC4yNUg5LjkyQzkuNTYgMTEuODUgNy41IDEwIDUgMTBDMi4yNCAxMCAwIDEyLjI0IDAgMTVTMi4yNCAyMCA1IDIwQzcuNSAyMCA5LjU2IDE4LjE1IDkuOTIgMTUuNzVIMTIuNUwxNS4yOSA5LjQzTDE2LjA4IDEwLjk2QzE0LjgyIDExLjg3IDE0IDEzLjM0IDE0IDE1QzE0IDE3Ljc2IDE2LjI0IDIwIDE5IDIwUzI0IDE3Ljc2IDI0IDE1IDIxLjc2IDEwIDE5IDEwTTUgMTguNUMzLjA3IDE4LjUgMS41IDE2LjkzIDEuNSAxNVMzLjA3IDExLjUgNSAxMS41QzYuNjcgMTEuNSA4LjA3IDEyLjY4IDguNDEgMTQuMjVINFYxNS43NUg4LjQxQzguMDcgMTcuMzIgNi42NyAxOC41IDUgMTguNU0xOSAxOC41QzE3LjA3IDE4LjUgMTUuNSAxNi45MyAxNS41IDE1QzE1LjUgMTMuOTIgMTYgMTIuOTcgMTYuNzcgMTIuMzNMMTguNTcgMTUuODVMMTkuODkgMTUuMTNMMTguMSAxMS42M0MxOC4zOSAxMS41NiAxOC42OSAxMS41IDE5IDExLjVDMjAuOTMgMTEuNSAyMi41IDEzLjA3IDIyLjUgMTVTMjAuOTMgMTguNSAxOSAxOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpY3ljbGVCYXNrZXQgPSBcIk0xMS43NCAxMy4zNkwxNC4xNCA3LjcxTDEzLjA2IDUuNUgxMC41VjRIMTRMMTQuNzMgNS41SDIxLjc1TDIwLjc1IDlIMTYuNDRMMTcuMTEgMTAuMzdDMTcuNjkgMTAuMTMgMTguMzMgMTAgMTkgMTBDMjEuNzYgMTAgMjQgMTIuMjQgMjQgMTVDMjQgMTcuNzYgMjEuNzYgMjAgMTkgMjBDMTYuMjQgMjAgMTQgMTcuNzYgMTQgMTVDMTQgMTMuNDUgMTQuNzEgMTIuMDYgMTUuODIgMTEuMTVMMTUgOS41TDEyLjI1IDE2SDkuOUM5LjQ0IDE4LjI4IDcuNDIgMjAgNSAyMEMyLjI0IDIwIDAgMTcuNzYgMCAxNUMwIDEyLjI0IDIuMjQgMTAgNSAxMEM3LjU5IDEwIDkuNzIgMTEuOTcgMTAgMTQuNUgxMC41OEw4LjMgOUg3LjVDNy4wOSA5IDYuNzUgOC42NiA2Ljc1IDguMjVDNi43NSA3Ljg0IDcuMDkgNy41IDcuNSA3LjVIMTAuMjVDMTAuNjYgNy41IDExIDcuODQgMTEgOC4yNUMxMSA4LjY2IDEwLjY2IDkgMTAuMjUgOUg5Ljk3TDExLjc0IDEzLjM2TTUgMTEuNUMzLjA3IDExLjUgMS41IDEzLjA3IDEuNSAxNUMxLjUgMTYuOTMgMy4wNyAxOC41IDUgMTguNUM2LjU5IDE4LjUgNy45MyAxNy40NSA4LjM2IDE2SDRWMTQuNUg4LjQ3QzguMjIgMTIuOCA2Ljc2IDExLjUgNSAxMS41TTE5IDExLjVDMTguNTcgMTEuNSAxOC4xNSAxMS41OCAxNy43NyAxMS43MkwxOS43IDE1LjY4TDE4LjM1IDE2LjM0TDE2LjUgMTIuNTVDMTUuODggMTMuMTggMTUuNSAxNC4wNSAxNS41IDE1QzE1LjUgMTYuOTMgMTcuMDcgMTguNSAxOSAxOC41QzIwLjkzIDE4LjUgMjIuNSAxNi45MyAyMi41IDE1QzIyLjUgMTMuMDcgMjAuOTMgMTEuNSAxOSAxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpY3ljbGVFbGVjdHJpYyA9IFwiTTE5IDdDMTguNDQgNyAxNy45MSA3LjExIDE3LjQxIDcuMjhMMTQuNDYgMS41SDExVjNIMTMuNTRMMTQuNDIgNC43MkwxMiAxMC4xM0wxMC4yMyA1Ljk1QzEwLjUgNS44NSAxMC43NCA1LjU4IDEwLjc0IDUuMjVDMTAuNzQgNC44NCAxMC40MSA0LjUgMTAgNC41SDhDNy41OCA0LjUgNy4yNCA0Ljg0IDcuMjQgNS4yNVM3LjU4IDYgOCA2SDguNjFMMTAuODYgMTEuMjVIOS45MkM5LjU2IDguODUgNy41IDcgNSA3QzIuMjQgNyAwIDkuMjQgMCAxMlMyLjI0IDE3IDUgMTdDNy41IDE3IDkuNTYgMTUuMTUgOS45MiAxMi43NUgxMi41TDE1LjI5IDYuNDNMMTYuMDggNy45NkMxNC44MiA4Ljg3IDE0IDEwLjM0IDE0IDEyQzE0IDE0Ljc2IDE2LjI0IDE3IDE5IDE3UzI0IDE0Ljc2IDI0IDEyIDIxLjc2IDcgMTkgN001IDE1LjVDMy4wNyAxNS41IDEuNSAxMy45MyAxLjUgMTJTMy4wNyA4LjUgNSA4LjVDNi42NyA4LjUgOC4wNyA5LjY4IDguNDEgMTEuMjVINFYxMi43NUg4LjQxQzguMDcgMTQuMzIgNi42NyAxNS41IDUgMTUuNU0xOSAxNS41QzE3LjA3IDE1LjUgMTUuNSAxMy45MyAxNS41IDEyQzE1LjUgMTAuOTIgMTYgOS45NyAxNi43NyA5LjMzTDE4LjU3IDEyLjg1TDE5Ljg5IDEyLjEzTDE4LjEgOC42M0MxOC4zOSA4LjU2IDE4LjY5IDguNSAxOSA4LjVDMjAuOTMgOC41IDIyLjUgMTAuMDcgMjIuNSAxMlMyMC45MyAxNS41IDE5IDE1LjVNMTEgMjBIN0wxMyAyM1YyMUgxN0wxMSAxOFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCaWN5Y2xlUGVubnlGYXJ0aGluZyA9IFwiTTE1LjUgNS4wNlYySDEyVjRIMTMuNVY1LjA0QzEyLjcxIDUuMTEgMTEuOTQgNS4yNyAxMS4yIDUuNUMxMS4wMyA1LjIgMTAuNzIgNSAxMC4zNiA1SDdDNi40NSA1IDYgNS40NSA2IDZTNi40NSA3IDcgN0g4LjA1QzUuMDkgOSAzLjEyIDEyLjM2IDMgMTYuMThDMS44NSAxNi41OSAxIDE3LjY5IDEgMTlDMSAyMC42NiAyLjM0IDIyIDQgMjJTNyAyMC42NiA3IDE5QzcgMTcuNyA2LjE3IDE2LjYxIDUgMTYuMTlDNS4wNyAxNC42NyA1LjQ2IDEzLjI1IDYuMTQgMTJDNi4wNSAxMi41IDYgMTMgNiAxMy41QzYgMTguMTkgOS44MSAyMiAxNC41IDIyQzE5LjE5IDIyIDIzIDE4LjE5IDIzIDEzLjVDMjMgOS4xNCAxOS43MiA1LjU2IDE1LjUgNS4wNk00IDIwQzMuNDUgMjAgMyAxOS41NSAzIDE5UzMuNDUgMTggNCAxOCA1IDE4LjQ1IDUgMTkgNC41NSAyMCA0IDIwTTE0LjUgMjBDMTAuOTIgMjAgOCAxNy4wOCA4IDEzLjVDOCAxMC4yNiAxMC4zOSA3LjU3IDEzLjUgNy4wOVYxNUgxNS41VjcuMDlDMTguNjEgNy41NyAyMSAxMC4yNiAyMSAxMy41QzIxIDE3LjA4IDE4LjA4IDIwIDE0LjUgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlrZSA9IFwiTTUsMjAuNUEzLjUsMy41IDAgMCwxIDEuNSwxN0EzLjUsMy41IDAgMCwxIDUsMTMuNUEzLjUsMy41IDAgMCwxIDguNSwxN0EzLjUsMy41IDAgMCwxIDUsMjAuNU01LDEyQTUsNSAwIDAsMCAwLDE3QTUsNSAwIDAsMCA1LDIyQTUsNSAwIDAsMCAxMCwxN0E1LDUgMCAwLDAgNSwxMk0xNC44LDEwSDE5VjguMkgxNS44TDEzLjg2LDQuOTNDMTMuNTcsNC40MyAxMyw0LjEgMTIuNCw0LjFDMTEuOTMsNC4xIDExLjUsNC4yOSAxMS4yLDQuNkw3LjUsOC4yOUM3LjE5LDguNiA3LDkgNyw5LjVDNywxMC4xMyA3LjMzLDEwLjY2IDcuODUsMTAuOTdMMTEuMiwxM1YxOEgxM1YxMS41TDEwLjc1LDkuODVMMTMuMDcsNy41TTE5LDIwLjVBMy41LDMuNSAwIDAsMSAxNS41LDE3QTMuNSwzLjUgMCAwLDEgMTksMTMuNUEzLjUsMy41IDAgMCwxIDIyLjUsMTdBMy41LDMuNSAwIDAsMSAxOSwyMC41TTE5LDEyQTUsNSAwIDAsMCAxNCwxN0E1LDUgMCAwLDAgMTksMjJBNSw1IDAgMCwwIDI0LDE3QTUsNSAwIDAsMCAxOSwxMk0xNiw0LjhDMTcsNC44IDE3LjgsNCAxNy44LDNDMTcuOCwyIDE3LDEuMiAxNiwxLjJDMTUsMS4yIDE0LjIsMiAxNC4yLDNDMTQuMiw0IDE1LDQuOCAxNiw0LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlrZUZhc3QgPSBcIk0xNiAxLjJDMTUgMS4yIDE0LjIgMiAxNC4yIDNTMTUgNC44IDE2IDQuOCAxNy44IDQgMTcuOCAzIDE3IDEuMiAxNiAxLjJNMTIuNCA0LjFDMTEuOTMgNC4xIDExLjUgNC4yOSAxMS4yIDQuNkw3LjUgOC4yOUM3LjE5IDguNiA3IDkgNyA5LjVDNyAxMC4xMyA3LjMzIDEwLjY2IDcuODUgMTAuOTdMMTEuMiAxM1YxOEgxM1YxMS41TDEwLjc1IDkuODVMMTMuMDcgNy41TDE0LjggMTBIMTlWOC4ySDE1LjhMMTMuODYgNC45M0MxMy41NyA0LjQzIDEzIDQuMSAxMi40IDQuMU0xMCAzSDNDMi40NSAzIDIgMi41NSAyIDJTMi40NSAxIDMgMUgxMi43OUMxMi41OCAxLjM0IDEyLjQxIDEuNzEgMTIuMzIgMi4xMUMxMS40NiAyLjEzIDEwLjY1IDIuNDUgMTAgM001IDEyQzIuMjQgMTIgMCAxNC4yNCAwIDE3UzIuMjQgMjIgNSAyMiAxMCAxOS43NiAxMCAxNyA3Ljc2IDEyIDUgMTJNNSAyMC41QzMuMDcgMjAuNSAxLjUgMTguOTMgMS41IDE3UzMuMDcgMTMuNSA1IDEzLjUgOC41IDE1LjA3IDguNSAxNyA2LjkzIDIwLjUgNSAyMC41TTE5IDEyQzE2LjI0IDEyIDE0IDE0LjI0IDE0IDE3UzE2LjI0IDIyIDE5IDIyIDI0IDE5Ljc2IDI0IDE3IDIxLjc2IDEyIDE5IDEyTTE5IDIwLjVDMTcuMDcgMjAuNSAxNS41IDE4LjkzIDE1LjUgMTdTMTcuMDcgMTMuNSAxOSAxMy41IDIyLjUgMTUuMDcgMjIuNSAxNyAyMC45MyAyMC41IDE5IDIwLjVNNS4zMiAxMUgxQy40NDggMTEgMCAxMC41NSAwIDEwUy40NDggOSAxIDlINS4wNUM1LjAzIDkuMTYgNSA5LjMzIDUgOS41QzUgMTAuMDMgNS4xMiAxMC41NCA1LjMyIDExTTYgN0gyQzEuNDUgNyAxIDYuNTUgMSA2UzEuNDUgNSAyIDVINy45N0w2LjA5IDYuODdDNi4wNSA2LjkxIDYgNi45NiA2IDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlsbGJvYXJkID0gXCJNMjAgMjJIMThWMTdIMjBNNiAyMkg0VjE3SDZNMjMgNFYxM0EyIDIgMCAwIDEgMjEgMTVIM0EyIDIgMCAwIDEgMSAxM1Y0QTIgMiAwIDAgMSAzIDJIMjFBMiAyIDAgMCAxIDIzIDRNMjEgNEgzVjEzSDIxTTIwIDZIMTVWOEgyME0xOCA5SDE1VjExSDE4TTE0IDExSDRMNi43MyA3LjM2TDguNzMgMTAuMDlMOS40NiA5LjU1TDguMiA3LjgyTDkuOTEgNS41NVpcIjtcclxuZXhwb3J0IHZhciBtZGlCaWxsaWFyZHMgPSBcIk0xMSwxM0gxM1YxNUgxMU0xMSw5SDEzVjExSDExTTExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDE1LDEwLjVWOUEyLDIgMCAwLDAgMTMsN0gxMUEyLDIgMCAwLDAgOSw5VjEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgOSwxMy41VjE1QTIsMiAwIDAsMCAxMSwxN00xMiwxQzUuOTIsMSAxLDUuOTIgMSwxMkMxLDE4LjA4IDUuOTIsMjMgMTIsMjNDMTguMDgsMjMgMjMsMTguMDggMjMsMTJDMjMsNS45MiAxOC4wOCwxIDEyLDFNMTIsMTlBNyw3IDAgMCwxIDUsMTJBNyw3IDAgMCwxIDEyLDVBNyw3IDAgMCwxIDE5LDEyQTcsNyAwIDAsMSAxMiwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCaWxsaWFyZHNSYWNrID0gXCJNMjAuMzEsMTYuNDRMMTQuNTQsNi40N0MxMy43Miw1LjA0IDExLjg5LDQuNTUgMTAuNDYsNS4zOEMxMCw1LjY0IDkuNjMsNiA5LjM2LDYuNDdMMy42LDE2LjQ0QzIuNzcsMTcuODcgMy4yNiwxOS42OSA0LjY5LDIwLjVDNS4xNCwyMC43OCA1LjY1LDIwLjkyIDYuMTgsMjAuOTJIMTcuNzNDMTkuMzgsMjAuOTEgMjAuNzIsMTkuNTcgMjAuNzEsMTcuOTJDMjAuNzEsMTcuNCAyMC41NywxNi44OSAyMC4zMSwxNi40NE01LjM3LDE3LjQzTDExLjExLDcuNDdDMTEuMzgsNyAxMiw2LjgyIDEyLjQ2LDcuMUMxMi42Miw3LjE4IDEyLjc1LDcuMzEgMTIuODQsNy40N0wxOC41OCwxNy40M0MxOC44NSwxNy45MSAxOC42OSwxOC41IDE4LjIxLDE4Ljc5QzE4LjA2LDE4Ljg4IDE3Ljg5LDE4LjkzIDE3LjcyLDE4LjkzSDYuMjFDNS42NiwxOC45MiA1LjIxLDE4LjQ3IDUuMjIsMTcuOTJDNS4yMiwxNy43NSA1LjI2LDE3LjU4IDUuMzUsMTcuNDNINS4zN00xMS45NywxMy40NUMxMC44NywxMy40NSAxMCwxMi41NiAxMCwxMS40NkMxMCwxMC4zNSAxMC44Nyw5LjQ2IDExLjk3LDkuNDZBMiwyIDAgMCwxIDEzLjk3LDExLjQ2QzEzLjk3LDEyLjU2IDEzLjA3LDEzLjQ1IDExLjk1LDEzLjQ1SDExLjk3TTkuNDYsMTcuOTNDOC4zNiwxNy45MyA3LjQ3LDE3LjA0IDcuNDcsMTUuOTRDNy40NywxNC44NCA4LjM2LDEzLjk1IDkuNDYsMTMuOTVDMTAuNTYsMTMuOTUgMTEuNDYsMTQuODQgMTEuNDYsMTUuOTRDMTEuNDYsMTcuMDQgMTAuNTYsMTcuOTMgOS40NiwxNy45M00xNC40NCwxNy45M0EyLDIgMCAwLDEgMTIuNDUsMTUuOTRBMiwyIDAgMCwxIDE0LjQ0LDEzLjk1QzE1LjU0LDEzLjk1IDE2LjQ0LDE0Ljg0IDE2LjQ0LDE1Ljk0QzE2LjQ0LDE3LjA0IDE1LjU0LDE3LjkzIDE0LjQ0LDE3LjkzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpbm9jdWxhcnMgPSBcIk0xMSw2SDEzVjEzSDExVjZNOSwyMEExLDEgMCAwLDEgOCwyMUg1QTEsMSAwIDAsMSA0LDIwVjE1TDYsNkgxMFYxM0ExLDEgMCAwLDEgOSwxNFYyME0xMCw1SDdWM0gxMFY1TTE1LDIwVjE0QTEsMSAwIDAsMSAxNCwxM1Y2SDE4TDIwLDE1VjIwQTEsMSAwIDAsMSAxOSwyMUgxNkExLDEgMCAwLDEgMTUsMjBNMTQsNVYzSDE3VjVIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlvID0gXCJNMTcsMTJIMjBBMiwyIDAgMCwxIDIyLDE0VjE3QTIsMiAwIDAsMSAyMCwxOUgxN0EyLDIgMCAwLDEgMTUsMTdWMTRBMiwyIDAgMCwxIDE3LDEyTTE3LDE0VjE3SDIwVjE0SDE3TTIsN0g3QTIsMiAwIDAsMSA5LDlWMTFBMiwyIDAgMCwxIDcsMTNBMiwyIDAgMCwxIDksMTVWMTdBMiwyIDAgMCwxIDcsMTlIMlYxM0wyLDdNNCw5VjEySDdWOUg0TTQsMTdIN1YxNEg0VjE3TTExLDEzSDEzVjE5SDExVjEzTTExLDlIMTNWMTFIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCaW9oYXphcmQgPSBcIk0yMywxNi4wNkMyMywxNi4yOSAyMywxNi41IDIyLjk2LDE2LjdDMjIuNzgsMTQuMTQgMjAuNjQsMTIuMTEgMTgsMTIuMTFDMTcuNjMsMTIuMTEgMTcuMjcsMTIuMTYgMTYuOTIsMTIuMjNDMTYuOTYsMTIuNSAxNywxMi43MyAxNywxM0MxNywxNS4zNSAxNS4zMSwxNy4zMiAxMy4wNywxNy44MUMxMy40MiwyMC4wNSAxNS4zMSwyMS43OSAxNy42NSwyMS45NkMxNy40MywyMiAxNy4yMiwyMiAxNywyMkMxNC45MiwyMiAxMy4wNywyMC45NCAxMiwxOS4zNEMxMC45MywyMC45NCA5LjA5LDIyIDcsMjJDNi43OCwyMiA2LjU3LDIyIDYuMzUsMjEuOTZDOC42OSwyMS43OSAxMC41NywyMC4wNiAxMC45MywxNy44MUM4LjY4LDE3LjMyIDcsMTUuMzUgNywxM0M3LDEyLjczIDcuMDQsMTIuNSA3LjA3LDEyLjIzQzYuNzMsMTIuMTYgNi4zNywxMi4xMSA2LDEyLjExQzMuMzYsMTIuMTEgMS4yMiwxNC4xNCAxLjAzLDE2LjdDMSwxNi41IDEsMTYuMjkgMSwxNi4wNkMxLDEyLjg1IDMuNTksMTAuMjQgNi44MSwxMC4xNEM2LjMsOS4yNyA2LDguMjUgNiw3LjE3QzYsNC45NCA3LjIzLDMgOS4wNiwyQzcuODEsMi45IDcsNC4zNCA3LDZDNyw3LjM1IDcuNTYsOC41OSA4LjQ3LDkuNUM5LjM4LDguNTkgMTAuNjIsOC4wNCAxMiw4LjA0QzEzLjM3LDguMDQgMTQuNjIsOC41OSAxNS41LDkuNUMxNi40Myw4LjU5IDE3LDcuMzUgMTcsNkMxNyw0LjM0IDE2LjE4LDIuOSAxNC45NCwyQzE2Ljc3LDMgMTgsNC45NCAxOCw3LjE3QzE4LDguMjUgMTcuNyw5LjI3IDE3LjE5LDEwLjE0QzIwLjQyLDEwLjI0IDIzLDEyLjg1IDIzLDE2LjA2TTkuMjcsMTAuMTFDMTAuMDUsMTAuNjIgMTEsMTAuOTIgMTIsMTAuOTJDMTMsMTAuOTIgMTMuOTUsMTAuNjIgMTQuNzMsMTAuMTFDMTQsOS40NSAxMy4wNiw5LjAzIDEyLDkuMDNDMTAuOTQsOS4wMyAxMCw5LjQ1IDkuMjcsMTAuMTFNMTIsMTQuNDdDMTIuODIsMTQuNDcgMTMuNSwxMy44IDEzLjUsMTNBMS41LDEuNSAwIDAsMCAxMiwxMS41QTEuNSwxLjUgMCAwLDAgMTAuNSwxM0MxMC41LDEzLjggMTEuMTcsMTQuNDcgMTIsMTQuNDdNMTAuOTcsMTYuNzlDMTAuODcsMTQuOSA5LjcxLDEzLjI5IDguMDUsMTIuNTVDOC4wMywxMi43IDgsMTIuODQgOCwxM0M4LDE0LjgyIDkuMjcsMTYuMzQgMTAuOTcsMTYuNzlNMTUuOTYsMTIuNTVDMTQuMjksMTMuMjkgMTMuMTIsMTQuOSAxMywxNi43OUMxNC43MywxNi4zNCAxNiwxNC44MiAxNiwxM0MxNiwxMi44NCAxNS45NywxMi43IDE1Ljk2LDEyLjU1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpcmQgPSBcIk0yMyAxMS41TDE5Ljk1IDEwLjM3QzE5LjY5IDkuMjIgMTkuMDQgOC41NiAxOS4wNCA4LjU2QzE3LjQgNi45MiAxNC43NSA2LjkyIDEzLjExIDguNTZMMTEuNjMgMTAuMDRMNSAzQzQgNyA1IDExIDcuNDUgMTQuMjJMMiAxOS41QzIgMTkuNSAxMC44OSAyMS41IDE2LjA3IDE3LjQ1QzE4LjgzIDE1LjI5IDE5LjQ1IDE0LjAzIDE5Ljg0IDEyLjdMMjMgMTEuNU0xNy43MSAxMS43MkMxNy4zMiAxMi4xMSAxNi42OCAxMi4xMSAxNi4yOSAxMS43MkMxNS45IDExLjMzIDE1LjkgMTAuNyAxNi4yOSAxMC4zMUMxNi42OCA5LjkyIDE3LjMyIDkuOTIgMTcuNzEgMTAuMzFDMTguMSAxMC43IDE4LjEgMTEuMzMgMTcuNzEgMTEuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQml0YnVja2V0ID0gXCJNMi42NSAzQzIuMyAzIDIgMy4zIDIgMy42NUMyIDMuNjkgMiAzLjczIDIgMy43N0w0LjczIDIwLjI3QzQuOCAyMC42OSA1LjE2IDIxIDUuNTggMjFIMTguNjNDMTguOTQgMjEgMTkuMjIgMjAuNzggMTkuMjcgMjAuNDZMMjIgMy43N0MyMi4wNSAzLjQyIDIxLjgxIDMuMDkgMjEuNDYgMy4wNEMyMS40MyAzLjAzIDIxLjM5IDMuMDMgMjEuMzUgMy4wM0wyLjY1IDNNMTQuMSAxNC45NUg5Ljk0TDguODEgOS4wN0gxNS4xMUwxNC4xIDE0Ljk1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpdGNvaW4gPSBcIk0xNC4yNCAxMC41NkMxMy45MyAxMS44IDEyIDExLjE3IDExLjQgMTFMMTEuOTUgOC44MkMxMi41NyA5IDE0LjU2IDkuMjYgMTQuMjQgMTAuNTZNMTEuMTMgMTIuMTJMMTAuNTMgMTQuNTNDMTEuMjcgMTQuNzIgMTMuNTYgMTUuNDUgMTMuOSAxNC4wOUMxNC4yNiAxMi42NyAxMS44NyAxMi4zIDExLjEzIDEyLjEyTTIxLjcgMTQuNDJDMjAuMzYgMTkuNzggMTQuOTQgMjMuMDQgOS41OCAyMS43QzQuMjIgMjAuMzYgLjk2MyAxNC45NCAyLjMgOS41OEMzLjY0IDQuMjIgOS4wNiAuOTY0IDE0LjQyIDIuM0MxOS43NyAzLjY0IDIzLjAzIDkuMDYgMjEuNyAxNC40Mk0xNC4yMSA4LjA1TDE0LjY2IDYuMjVMMTMuNTYgNkwxMy4xMiA3LjczQzEyLjgzIDcuNjYgMTIuNTQgNy41OSAxMi4yNCA3LjUzTDEyLjY4IDUuNzZMMTEuNTkgNS41TDExLjE0IDcuMjlDMTAuOSA3LjIzIDEwLjY2IDcuMTggMTAuNDQgNy4xMkwxMC40NCA3LjEyTDguOTMgNi43NEw4LjYzIDcuOTFDOC42MyA3LjkxIDkuNDUgOC4xIDkuNDMgOC4xMUM5Ljg4IDguMjIgOS45NiA4LjUgOS45NCA4Ljc1TDguNzEgMTMuNjhDOC42NiAxMy44MiA4LjUgMTQgOC4yMSAxMy45NUM4LjIyIDEzLjk2IDcuNDEgMTMuNzUgNy40MSAxMy43NUw2Ljg3IDE1TDguMjkgMTUuMzZDOC41NiAxNS40MyA4LjgyIDE1LjUgOS4wOCAxNS41Nkw4LjYyIDE3LjM4TDkuNzIgMTcuNjZMMTAuMTcgMTUuODVDMTAuNDcgMTUuOTMgMTAuNzYgMTYgMTEuMDQgMTYuMDhMMTAuNTkgMTcuODdMMTEuNjkgMTguMTVMMTIuMTUgMTYuMzNDMTQgMTYuNjggMTUuNDIgMTYuNTQgMTYgMTQuODVDMTYuNSAxMy41IDE2IDEyLjcgMTUgMTIuMTlDMTUuNzIgMTIgMTYuMjYgMTEuNTUgMTYuNDEgMTAuNTdDMTYuNjEgOS4yNCAxNS41OSA4LjUzIDE0LjIxIDguMDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxhY2tNZXNhID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkM0LDE0LjM5IDUuMDUsMTYuNTMgNi43MSwxOEg5VjEySDE3TDE5LjE1LDE1LjU5QzE5LjY5LDE0LjUgMjAsMTMuMjkgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxlbmRlciA9IFwiTTE5LDVIMTcuOEwxOCwySDRMNSw0SDZMNi45NCwxNi4xOUw1LDIySDE5TDE3LjA2LDE2LjE3TDE3LjIsMTRIMTlDMjAuMywxNCAyMSwxMi45NyAyMSwxMlY3QzIxLDUuNyAxOS45Nyw1IDE5LDVNMTIsMjBBMS41LDEuNSAwIDAsMSAxMC41LDE4LjVBMS41LDEuNSAwIDAsMSAxMiwxN0ExLjUsMS41IDAgMCwxIDEzLjUsMTguNUExLjUsMS41IDAgMCwxIDEyLDIwTTE1LjEzLDE1SDguODVMOC43LDEzSDEzVjEySDguNjJMOC40NywxMEgxM1Y5SDguMzlMOC4yNCw3SDEzVjZIOC4xNkw4LDRIMTUuODZMMTUuMTMsMTVNMTksMTJIMTcuMzNMMTcuNjcsN0gxOVYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCbGVuZGVyU29mdHdhcmUgPSBcIk0xMi41OCwzLjEyVjMuMTNDMTIuMjcsMy4xMyAxMS45NiwzLjIyIDExLjcxLDMuMzlDMTEuMjEsMy43NCAxMS4xNSw0LjMyIDExLjYsNC42OUwxNC40Niw3TDUuNzMsNy4wM0g1LjcyQzUsNy4wMyA0LjMsNy41IDQuMTYsOC4xQzQsOC43MSA0LjUsOS4yMiA1LjI2LDkuMjJMOS42OSw5LjIxTDEuNzYsMTUuM0MxLDE1Ljg3IDAuNzcsMTYuODIgMS4yNCwxNy40MkMxLjcyLDE4LjAzIDIuNzMsMTguMDMgMy41LDE3LjQyTDcuOCwxMy44OUM3LjgsMTMuODkgNy43MywxNC4zNyA3Ljc0LDE0LjY1QzcuNzQsMTQuOTQgNy44NCwxNS41IDcuOTcsMTUuOTNDOC4yNiwxNi44NiA4Ljc1LDE3LjcxIDkuNDMsMTguNDZDMTAuMTMsMTkuMjMgMTEsMTkuODUgMTIsMjAuMjlDMTMuMDMsMjAuNzYgMTQuMTcsMjEgMTUuMzQsMjFDMTYuNSwyMSAxNy42NSwyMC43NSAxOC42OSwyMC4yOEMxOS42OSwxOS44NCAyMC41NSwxOS4yMSAyMS4yNSwxOC40NEMyMS45MywxNy42OSAyMi40MiwxNi44MyAyMi43MSwxNS45MUMyMi44NSwxNS40NCAyMi45NCwxNC45NyAyMywxNC41QzIzLDE0LjAzIDIzLDEzLjU2IDIyLjk0LDEzLjA5QzIyLjgxLDEyLjE4IDIyLjUsMTEuMzIgMjIsMTAuNTRDMjEuNTYsOS44MyAyMSw5LjIgMjAuMzEsOC42N1Y4LjY3TDEzLjQyLDMuMzhDMTMuMTksMy4yMSAxMi44OSwzLjEyIDEyLjU4LDMuMTJNMTUuMzQsOS4yMUMxNi41LDkuMjEgMTcuNTksOS41OSAxOC40NiwxMC4yOUMxOC45LDEwLjY1IDE5LjI1LDExLjA3IDE5LjUsMTEuNTRDMTkuNzcsMTIgMTkuOTQsMTIuNTUgMjAsMTMuMTFDMjAuMDQsMTMuNjcgMTkuOTYsMTQuMjMgMTkuNzcsMTQuNzdDMTkuNTcsMTUuMzEgMTkuMjUsMTUuODEgMTguODIsMTYuMjZDMTcuOTMsMTcuMTYgMTYuNjksMTcuNjggMTUuMzQsMTcuNjhDMTQsMTcuNjggMTIuNzUsMTcuMTcgMTEuODYsMTYuMjdDMTEuNDMsMTUuODMgMTEuMTEsMTUuMzIgMTAuOTEsMTQuNzhDMTAuNzIsMTQuMjUgMTAuNjQsMTMuNjkgMTAuNjksMTMuMTJDMTAuNzQsMTIuNTYgMTAuOTEsMTIuMDMgMTEuMTcsMTEuNTVDMTEuNDMsMTEuMDggMTEuNzksMTAuNjYgMTIuMjMsMTAuM0MxMy4wOSw5LjU5IDE0LjE5LDkuMjEgMTUuMzQsOS4yMU0xNS40NCwxMC42MUMxNC42NiwxMC42MSAxMy45NCwxMC44OSAxMy40MSwxMS4zNEMxMi44NywxMS44IDEyLjUsMTIuNDQgMTIuNDcsMTMuMThDMTIuNDMsMTMuOTMgMTIuNzMsMTQuNjMgMTMuMjYsMTUuMTVDMTMuOCwxNS42OCAxNC41OCwxNiAxNS40NCwxNkMxNi4zLDE2IDE3LjA3LDE1LjY4IDE3LjYyLDE1LjE1QzE4LjE1LDE0LjYzIDE4LjQ1LDEzLjkzIDE4LjQxLDEzLjE4QzE4LjM3LDEyLjQ0IDE4LDExLjggMTcuNDcsMTEuMzRDMTYuOTQsMTAuODkgMTYuMjIsMTAuNjEgMTUuNDQsMTAuNjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxpbmRzID0gXCJNMywySDIxQTEsMSAwIDAsMSAyMiwzVjVBMSwxIDAgMCwxIDIxLDZIMjBWMTNBMSwxIDAgMCwxIDE5LDE0SDEzVjE2LjE3QzE0LjE3LDE2LjU4IDE1LDE3LjY5IDE1LDE5QTMsMyAwIDAsMSAxMiwyMkEzLDMgMCAwLDEgOSwxOUM5LDE3LjY5IDkuODMsMTYuNTggMTEsMTYuMTdWMTRINUExLDEgMCAwLDEgNCwxM1Y2SDNBMSwxIDAgMCwxIDIsNVYzQTEsMSAwIDAsMSAzLDJNMTIsMThBMSwxIDAgMCwwIDExLDE5QTEsMSAwIDAsMCAxMiwyMEExLDEgMCAwLDAgMTMsMTlBMSwxIDAgMCwwIDEyLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsaW5kc09wZW4gPSBcIk0zIDJIMjFDMjEuNTUgMiAyMiAyLjQ1IDIyIDNWNUMyMiA1LjU1IDIxLjU1IDYgMjEgNkgyMFY3QzIwIDcuNTUgMTkuNTUgOCAxOSA4SDEzVjEwLjE3QzE0LjE3IDEwLjU4IDE1IDExLjcgMTUgMTNDMTUgMTQuNjYgMTMuNjYgMTYgMTIgMTZDMTAuMzQgMTYgOSAxNC42NiA5IDEzQzkgMTEuNjkgOS44NCAxMC41OCAxMSAxMC4xN1Y4SDVDNC40NSA4IDQgNy41NSA0IDdWNkgzQzIuNDUgNiAyIDUuNTUgMiA1VjNDMiAyLjQ1IDIuNDUgMiAzIDJNMTIgMTJDMTEuNDUgMTIgMTEgMTIuNDUgMTEgMTNDMTEgMTMuNTUgMTEuNDUgMTQgMTIgMTRDMTIuNTUgMTQgMTMgMTMuNTUgMTMgMTNDMTMgMTIuNDUgMTIuNTUgMTIgMTIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxvY2tIZWxwZXIgPSBcIk0xMiwwQTEyLDEyIDAgMCwxIDI0LDEyQTEyLDEyIDAgMCwxIDEyLDI0QTEyLDEyIDAgMCwxIDAsMTJBMTIsMTIgMCAwLDEgMTIsME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJDMiwxNC40IDIuODUsMTYuNiA0LjI2LDE4LjMzTDE4LjMzLDQuMjZDMTYuNiwyLjg1IDE0LjQsMiAxMiwyTTEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDkuNiAyMS4xNSw3LjQgMTkuNzQsNS42N0w1LjY3LDE5Ljc0QzcuNCwyMS4xNSA5LjYsMjIgMTIsMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxvZ2dlciA9IFwiTTEyLjUgMTBIMTBDOS40NSAxMCA5IDkuNTUgOSA5QzkgOC40NSA5LjQ1IDggMTAgOEgxMi41QzEzLjA1IDggMTMuNSA4LjQ1IDEzLjUgOUMxMy41IDkuNTUgMTMuMDUgMTAgMTIuNSAxME0xNSAxNEMxNSAxMy40NSAxNC41NSAxMyAxNCAxM0gxMEM5LjQ1IDEzIDkgMTMuNDUgOSAxNEM5IDE0LjU1IDkuNDUgMTUgMTAgMTVIMTRDMTQuNTUgMTUgMTUgMTQuNTUgMTUgMTRNMjIgNFYyMEMyMiAyMS4xMSAyMS4xMSAyMiAyMCAyMkg0QzIuODkgMjIgMiAyMS4xMSAyIDIwVjRDMiAyLjg5IDIuODkgMiA0IDJIMjBDMjEuMTEgMiAyMiAyLjg5IDIyIDRNMTggMTJDMTggMTIgMTggMTEgMTcgMTFDMTYuMDUgMTEuMDMgMTYgMTAgMTYgMTBMMTYgOEMxNiA2LjM0IDE0LjY2IDUgMTMgNUg5QzcuMzQgNSA2IDYuMzQgNiA4VjE1QzYgMTYuNjYgNy4zNCAxOCA5IDE4SDE1QzE2LjY2IDE4IDE4IDE2LjY2IDE4IDE1TDE4IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsb29kQmFnID0gXCJNMjEsN0MyMCw3IDIwLDYgMjAsNlY1SDE4VjdIMTZWNkMxNiw0LjI3IDE0Ljc1LDEgMTAsMUM1LjI1LDEgNCw0LjI3IDQsNlYxOUM0LDE5LjMzIDMuOSwyMSAyLDIxVjIzQzQuOTMsMjMgNiwyMC42MSA2LDE5VjZDNiw1Ljg4IDYuMDUsMyAxMCwzQzEzLjgzLDMgMTQsNS43IDE0LDZWN0gxMlY1SDEwVjZDMTAsNiAxMCw3IDksN0M4LDcgOCw4IDgsOFYyMEM4LDIwIDgsMjIgMTMsMjJDMTMuMjQsMjIgMTQuMTMsMjIgMTcsMjJDMjIsMjIgMjIsMjAgMjIsMjBWOEMyMiw4IDIyLDcgMjEsN00xNSwxOS40QTMsMyAwIDAsMSAxMiwxNi40QzEyLDE0LjQgMTUsMTEgMTUsMTFDMTUsMTEgMTgsMTQuNCAxOCwxNi40QTMsMyAwIDAsMSAxNSwxOS40WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsdWV0b290aCA9IFwiTTE0Ljg4LDE2LjI5TDEzLDE4LjE3VjE0LjQxTTEzLDUuODNMMTQuODgsNy43MUwxMyw5LjU4TTE3LjcxLDcuNzFMMTIsMkgxMVY5LjU4TDYuNDEsNUw1LDYuNDFMMTAuNTksMTJMNSwxNy41OEw2LjQxLDE5TDExLDE0LjQxVjIySDEyTDE3LjcxLDE2LjI5TDEzLjQxLDEyTDE3LjcxLDcuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmx1ZXRvb3RoQXVkaW8gPSBcIk0xMi44OCwxNi4yOUwxMSwxOC4xN1YxNC40MU0xMSw1LjgzTDEyLjg4LDcuNzFMMTEsOS41OE0xNS43MSw3LjcxTDEwLDJIOVY5LjU4TDQuNDEsNUwzLDYuNDFMOC41OSwxMkwzLDE3LjU4TDQuNDEsMTlMOSwxNC40MVYyMkgxMEwxNS43MSwxNi4yOUwxMS40MSwxMk0xOS41Myw2LjcxTDE4LjI2LDhDMTguODksOS4xOCAxOS4yNSwxMC41NSAxOS4yNSwxMkMxOS4yNSwxMy40NSAxOC44OSwxNC44MiAxOC4yNiwxNkwxOS40NiwxNy4yMkMyMC40MywxNS42OCAyMSwxMy44NyAyMSwxMS45MUMyMSwxMCAyMC40Niw4LjIzIDE5LjUzLDYuNzFNMTQuMjQsMTJMMTYuNTYsMTQuMzNDMTYuODQsMTMuNiAxNywxMi44MiAxNywxMkMxNywxMS4xOCAxNi44NCwxMC40IDE2LjU3LDkuNjhMMTQuMjQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmx1ZXRvb3RoQ29ubmVjdCA9IFwiTTE5LDEwTDE3LDEyTDE5LDE0TDIxLDEyTTE0Ljg4LDE2LjI5TDEzLDE4LjE3VjE0LjQxTTEzLDUuODNMMTQuODgsNy43MUwxMyw5LjU4TTE3LjcxLDcuNzFMMTIsMkgxMVY5LjU4TDYuNDEsNUw1LDYuNDFMMTAuNTksMTJMNSwxNy41OEw2LjQxLDE5TDExLDE0LjQxVjIySDEyTDE3LjcxLDE2LjI5TDEzLjQxLDEyTTcsMTJMNSwxMEwzLDEyTDUsMTRMNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCbHVldG9vdGhPZmYgPSBcIk0xMyw1LjgzTDE0Ljg4LDcuNzFMMTMuMjgsOS4zMUwxNC42OSwxMC43MkwxNy43MSw3LjdMMTIsMkgxMVY3LjAzTDEzLDkuMDNNNS40MSw0TDQsNS40MUwxMC41OSwxMkw1LDE3LjU5TDYuNDEsMTlMMTEsMTQuNDFWMjJIMTJMMTYuMjksMTcuNzFMMTguNTksMjBMMjAsMTguNTlNMTMsMTguMTdWMTQuNDFMMTQuODgsMTYuMjlcIjtcclxuZXhwb3J0IHZhciBtZGlCbHVldG9vdGhTZXR0aW5ncyA9IFwiTTE0Ljg4LDE0LjI5TDEzLDE2LjE3VjEyLjQxTDE0Ljg4LDE0LjI5TTEzLDMuODNMMTQuODgsNS43MUwxMyw3LjU5TTE3LjcxLDUuNzFMMTIsMEgxMVY3LjU5TDYuNDEsM0w1LDQuNDFMMTAuNTksMTBMNSwxNS41OUw2LjQxLDE3TDExLDEyLjQxVjIwSDEyTDE3LjcxLDE0LjI5TDEzLjQxLDEwTDE3LjcxLDUuNzFNMTUsMjRIMTdWMjJIMTVNNywyNEg5VjIySDdNMTEsMjRIMTNWMjJIMTFWMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmx1ZXRvb3RoVHJhbnNmZXIgPSBcIk0xNC43MSw3LjcxTDEwLjQxLDEyTDE0LjcxLDE2LjI5TDksMjJIOFYxNC40MUwzLjQxLDE5TDIsMTcuNTlMNy41OSwxMkwyLDYuNDFMMy40MSw1TDgsOS41OVYySDlMMTQuNzEsNy43MU0xMCw1LjgzVjkuNTlMMTEuODgsNy43MUwxMCw1LjgzTTExLjg4LDE2LjI5TDEwLDE0LjQxVjE4LjE3TDExLjg4LDE2LjI5TTIyLDhIMjBWMTFIMThWOEgxNkwxOSw0TDIyLDhNMjIsMTZMMTksMjBMMTYsMTZIMThWMTNIMjBWMTZIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmx1ciA9IFwiTTE0LDguNUExLjUsMS41IDAgMCwwIDEyLjUsMTBBMS41LDEuNSAwIDAsMCAxNCwxMS41QTEuNSwxLjUgMCAwLDAgMTUuNSwxMEExLjUsMS41IDAgMCwwIDE0LDguNU0xNCwxMi41QTEuNSwxLjUgMCAwLDAgMTIuNSwxNEExLjUsMS41IDAgMCwwIDE0LDE1LjVBMS41LDEuNSAwIDAsMCAxNS41LDE0QTEuNSwxLjUgMCAwLDAgMTQsMTIuNU0xMCwxN0ExLDEgMCAwLDAgOSwxOEExLDEgMCAwLDAgMTAsMTlBMSwxIDAgMCwwIDExLDE4QTEsMSAwIDAsMCAxMCwxN00xMCw4LjVBMS41LDEuNSAwIDAsMCA4LjUsMTBBMS41LDEuNSAwIDAsMCAxMCwxMS41QTEuNSwxLjUgMCAwLDAgMTEuNSwxMEExLjUsMS41IDAgMCwwIDEwLDguNU0xNCwyMC41QTAuNSwwLjUgMCAwLDAgMTMuNSwyMUEwLjUsMC41IDAgMCwwIDE0LDIxLjVBMC41LDAuNSAwIDAsMCAxNC41LDIxQTAuNSwwLjUgMCAwLDAgMTQsMjAuNU0xNCwxN0ExLDEgMCAwLDAgMTMsMThBMSwxIDAgMCwwIDE0LDE5QTEsMSAwIDAsMCAxNSwxOEExLDEgMCAwLDAgMTQsMTdNMjEsMTMuNUEwLjUsMC41IDAgMCwwIDIwLjUsMTRBMC41LDAuNSAwIDAsMCAyMSwxNC41QTAuNSwwLjUgMCAwLDAgMjEuNSwxNEEwLjUsMC41IDAgMCwwIDIxLDEzLjVNMTgsNUExLDEgMCAwLDAgMTcsNkExLDEgMCAwLDAgMTgsN0ExLDEgMCAwLDAgMTksNkExLDEgMCAwLDAgMTgsNU0xOCw5QTEsMSAwIDAsMCAxNywxMEExLDEgMCAwLDAgMTgsMTFBMSwxIDAgMCwwIDE5LDEwQTEsMSAwIDAsMCAxOCw5TTE4LDE3QTEsMSAwIDAsMCAxNywxOEExLDEgMCAwLDAgMTgsMTlBMSwxIDAgMCwwIDE5LDE4QTEsMSAwIDAsMCAxOCwxN00xOCwxM0ExLDEgMCAwLDAgMTcsMTRBMSwxIDAgMCwwIDE4LDE1QTEsMSAwIDAsMCAxOSwxNEExLDEgMCAwLDAgMTgsMTNNMTAsMTIuNUExLjUsMS41IDAgMCwwIDguNSwxNEExLjUsMS41IDAgMCwwIDEwLDE1LjVBMS41LDEuNSAwIDAsMCAxMS41LDE0QTEuNSwxLjUgMCAwLDAgMTAsMTIuNU0xMCw3QTEsMSAwIDAsMCAxMSw2QTEsMSAwIDAsMCAxMCw1QTEsMSAwIDAsMCA5LDZBMSwxIDAgMCwwIDEwLDdNMTAsMy41QTAuNSwwLjUgMCAwLDAgMTAuNSwzQTAuNSwwLjUgMCAwLDAgMTAsMi41QTAuNSwwLjUgMCAwLDAgOS41LDNBMC41LDAuNSAwIDAsMCAxMCwzLjVNMTAsMjAuNUEwLjUsMC41IDAgMCwwIDkuNSwyMUEwLjUsMC41IDAgMCwwIDEwLDIxLjVBMC41LDAuNSAwIDAsMCAxMC41LDIxQTAuNSwwLjUgMCAwLDAgMTAsMjAuNU0zLDEzLjVBMC41LDAuNSAwIDAsMCAyLjUsMTRBMC41LDAuNSAwIDAsMCAzLDE0LjVBMC41LDAuNSAwIDAsMCAzLjUsMTRBMC41LDAuNSAwIDAsMCAzLDEzLjVNMTQsMy41QTAuNSwwLjUgMCAwLDAgMTQuNSwzQTAuNSwwLjUgMCAwLDAgMTQsMi41QTAuNSwwLjUgMCAwLDAgMTMuNSwzQTAuNSwwLjUgMCAwLDAgMTQsMy41TTE0LDdBMSwxIDAgMCwwIDE1LDZBMSwxIDAgMCwwIDE0LDVBMSwxIDAgMCwwIDEzLDZBMSwxIDAgMCwwIDE0LDdNMjEsMTAuNUEwLjUsMC41IDAgMCwwIDIxLjUsMTBBMC41LDAuNSAwIDAsMCAyMSw5LjVBMC41LDAuNSAwIDAsMCAyMC41LDEwQTAuNSwwLjUgMCAwLDAgMjEsMTAuNU02LDVBMSwxIDAgMCwwIDUsNkExLDEgMCAwLDAgNiw3QTEsMSAwIDAsMCA3LDZBMSwxIDAgMCwwIDYsNU0zLDkuNUEwLjUsMC41IDAgMCwwIDIuNSwxMEEwLjUsMC41IDAgMCwwIDMsMTAuNUEwLjUsMC41IDAgMCwwIDMuNSwxMEEwLjUsMC41IDAgMCwwIDMsOS41TTYsOUExLDEgMCAwLDAgNSwxMEExLDEgMCAwLDAgNiwxMUExLDEgMCAwLDAgNywxMEExLDEgMCAwLDAgNiw5TTYsMTdBMSwxIDAgMCwwIDUsMThBMSwxIDAgMCwwIDYsMTlBMSwxIDAgMCwwIDcsMThBMSwxIDAgMCwwIDYsMTdNNiwxM0ExLDEgMCAwLDAgNSwxNEExLDEgMCAwLDAgNiwxNUExLDEgMCAwLDAgNywxNEExLDEgMCAwLDAgNiwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCbHVyTGluZWFyID0gXCJNMTMsMTdBMSwxIDAgMCwwIDE0LDE2QTEsMSAwIDAsMCAxMywxNUExLDEgMCAwLDAgMTIsMTZBMSwxIDAgMCwwIDEzLDE3TTEzLDEzQTEsMSAwIDAsMCAxNCwxMkExLDEgMCAwLDAgMTMsMTFBMSwxIDAgMCwwIDEyLDEyQTEsMSAwIDAsMCAxMywxM00xMyw5QTEsMSAwIDAsMCAxNCw4QTEsMSAwIDAsMCAxMyw3QTEsMSAwIDAsMCAxMiw4QTEsMSAwIDAsMCAxMyw5TTE3LDEyLjVBMC41LDAuNSAwIDAsMCAxNy41LDEyQTAuNSwwLjUgMCAwLDAgMTcsMTEuNUEwLjUsMC41IDAgMCwwIDE2LjUsMTJBMC41LDAuNSAwIDAsMCAxNywxMi41TTE3LDguNUEwLjUsMC41IDAgMCwwIDE3LjUsOEEwLjUsMC41IDAgMCwwIDE3LDcuNUEwLjUsMC41IDAgMCwwIDE2LjUsOEEwLjUsMC41IDAgMCwwIDE3LDguNU0zLDNWNUgyMVYzTTE3LDE2LjVBMC41LDAuNSAwIDAsMCAxNy41LDE2QTAuNSwwLjUgMCAwLDAgMTcsMTUuNUEwLjUsMC41IDAgMCwwIDE2LjUsMTZBMC41LDAuNSAwIDAsMCAxNywxNi41TTksMTdBMSwxIDAgMCwwIDEwLDE2QTEsMSAwIDAsMCA5LDE1QTEsMSAwIDAsMCA4LDE2QTEsMSAwIDAsMCA5LDE3TTUsMTMuNUExLjUsMS41IDAgMCwwIDYuNSwxMkExLjUsMS41IDAgMCwwIDUsMTAuNUExLjUsMS41IDAgMCwwIDMuNSwxMkExLjUsMS41IDAgMCwwIDUsMTMuNU01LDkuNUExLjUsMS41IDAgMCwwIDYuNSw4QTEuNSwxLjUgMCAwLDAgNSw2LjVBMS41LDEuNSAwIDAsMCAzLjUsOEExLjUsMS41IDAgMCwwIDUsOS41TTMsMjFIMjFWMTlIM005LDlBMSwxIDAgMCwwIDEwLDhBMSwxIDAgMCwwIDksN0ExLDEgMCAwLDAgOCw4QTEsMSAwIDAsMCA5LDlNOSwxM0ExLDEgMCAwLDAgMTAsMTJBMSwxIDAgMCwwIDksMTFBMSwxIDAgMCwwIDgsMTJBMSwxIDAgMCwwIDksMTNNNSwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE2QTEuNSwxLjUgMCAwLDAgNSwxNC41QTEuNSwxLjUgMCAwLDAgMy41LDE2QTEuNSwxLjUgMCAwLDAgNSwxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsdXJPZmYgPSBcIk0zLDEzLjVBMC41LDAuNSAwIDAsMCAyLjUsMTRBMC41LDAuNSAwIDAsMCAzLDE0LjVBMC41LDAuNSAwIDAsMCAzLjUsMTRBMC41LDAuNSAwIDAsMCAzLDEzLjVNNiwxN0ExLDEgMCAwLDAgNSwxOEExLDEgMCAwLDAgNiwxOUExLDEgMCAwLDAgNywxOEExLDEgMCAwLDAgNiwxN00xMCwyMC41QTAuNSwwLjUgMCAwLDAgOS41LDIxQTAuNSwwLjUgMCAwLDAgMTAsMjEuNUEwLjUsMC41IDAgMCwwIDEwLjUsMjFBMC41LDAuNSAwIDAsMCAxMCwyMC41TTMsOS41QTAuNSwwLjUgMCAwLDAgMi41LDEwQTAuNSwwLjUgMCAwLDAgMywxMC41QTAuNSwwLjUgMCAwLDAgMy41LDEwQTAuNSwwLjUgMCAwLDAgMyw5LjVNNiwxM0ExLDEgMCAwLDAgNSwxNEExLDEgMCAwLDAgNiwxNUExLDEgMCAwLDAgNywxNEExLDEgMCAwLDAgNiwxM00yMSwxMy41QTAuNSwwLjUgMCAwLDAgMjAuNSwxNEEwLjUsMC41IDAgMCwwIDIxLDE0LjVBMC41LDAuNSAwIDAsMCAyMS41LDE0QTAuNSwwLjUgMCAwLDAgMjEsMTMuNU0xMCwxN0ExLDEgMCAwLDAgOSwxOEExLDEgMCAwLDAgMTAsMTlBMSwxIDAgMCwwIDExLDE4QTEsMSAwIDAsMCAxMCwxN00yLjUsNS4yN0w2LjI4LDkuMDVMNiw5QTEsMSAwIDAsMCA1LDEwQTEsMSAwIDAsMCA2LDExQTEsMSAwIDAsMCA3LDEwQzcsOS45IDYuOTcsOS44MSA2Ljk0LDkuNzJMOS43NSwxMi41M0M5LjA0LDEyLjY0IDguNSwxMy4yNiA4LjUsMTRBMS41LDEuNSAwIDAsMCAxMCwxNS41QzEwLjc0LDE1LjUgMTEuMzYsMTQuOTYgMTEuNDcsMTQuMjVMMTQuMjgsMTcuMDZDMTQuMTksMTcuMDMgMTQuMSwxNyAxNCwxN0ExLDEgMCAwLDAgMTMsMThBMSwxIDAgMCwwIDE0LDE5QTEsMSAwIDAsMCAxNSwxOEMxNSwxNy45IDE0Ljk3LDE3LjgxIDE0Ljk0LDE3LjcyTDE4LjcyLDIxLjVMMjAsMjAuMjNMMy43Nyw0TDIuNSw1LjI3TTE0LDIwLjVBMC41LDAuNSAwIDAsMCAxMy41LDIxQTAuNSwwLjUgMCAwLDAgMTQsMjEuNUEwLjUsMC41IDAgMCwwIDE0LjUsMjFBMC41LDAuNSAwIDAsMCAxNCwyMC41TTE4LDdBMSwxIDAgMCwwIDE5LDZBMSwxIDAgMCwwIDE4LDVBMSwxIDAgMCwwIDE3LDZBMSwxIDAgMCwwIDE4LDdNMTgsMTFBMSwxIDAgMCwwIDE5LDEwQTEsMSAwIDAsMCAxOCw5QTEsMSAwIDAsMCAxNywxMEExLDEgMCAwLDAgMTgsMTFNMTgsMTVBMSwxIDAgMCwwIDE5LDE0QTEsMSAwIDAsMCAxOCwxM0ExLDEgMCAwLDAgMTcsMTRBMSwxIDAgMCwwIDE4LDE1TTEwLDdBMSwxIDAgMCwwIDExLDZBMSwxIDAgMCwwIDEwLDVBMSwxIDAgMCwwIDksNkExLDEgMCAwLDAgMTAsN00yMSwxMC41QTAuNSwwLjUgMCAwLDAgMjEuNSwxMEEwLjUsMC41IDAgMCwwIDIxLDkuNUEwLjUsMC41IDAgMCwwIDIwLjUsMTBBMC41LDAuNSAwIDAsMCAyMSwxMC41TTEwLDMuNUEwLjUsMC41IDAgMCwwIDEwLjUsM0EwLjUsMC41IDAgMCwwIDEwLDIuNUEwLjUsMC41IDAgMCwwIDkuNSwzQTAuNSwwLjUgMCAwLDAgMTAsMy41TTE0LDMuNUEwLjUsMC41IDAgMCwwIDE0LjUsM0EwLjUsMC41IDAgMCwwIDE0LDIuNUEwLjUsMC41IDAgMCwwIDEzLjUsM0EwLjUsMC41IDAgMCwwIDE0LDMuNU0xMy44LDExLjVIMTRBMS41LDEuNSAwIDAsMCAxNS41LDEwQTEuNSwxLjUgMCAwLDAgMTQsOC41QTEuNSwxLjUgMCAwLDAgMTIuNSwxMFYxMC4yQzEyLjYxLDEwLjg3IDEzLjEzLDExLjM5IDEzLjgsMTEuNU0xNCw3QTEsMSAwIDAsMCAxNSw2QTEsMSAwIDAsMCAxNCw1QTEsMSAwIDAsMCAxMyw2QTEsMSAwIDAsMCAxNCw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsdXJSYWRpYWwgPSBcIk0xNCwxM0ExLDEgMCAwLDAgMTMsMTRBMSwxIDAgMCwwIDE0LDE1QTEsMSAwIDAsMCAxNSwxNEExLDEgMCAwLDAgMTQsMTNNMTQsMTYuNUEwLjUsMC41IDAgMCwwIDEzLjUsMTdBMC41LDAuNSAwIDAsMCAxNCwxNy41QTAuNSwwLjUgMCAwLDAgMTQuNSwxN0EwLjUsMC41IDAgMCwwIDE0LDE2LjVNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNyw5LjVBMC41LDAuNSAwIDAsMCAxNi41LDEwQTAuNSwwLjUgMCAwLDAgMTcsMTAuNUEwLjUsMC41IDAgMCwwIDE3LjUsMTBBMC41LDAuNSAwIDAsMCAxNyw5LjVNMTcsMTMuNUEwLjUsMC41IDAgMCwwIDE2LjUsMTRBMC41LDAuNSAwIDAsMCAxNywxNC41QTAuNSwwLjUgMCAwLDAgMTcuNSwxNEEwLjUsMC41IDAgMCwwIDE3LDEzLjVNMTQsNy41QTAuNSwwLjUgMCAwLDAgMTQuNSw3QTAuNSwwLjUgMCAwLDAgMTQsNi41QTAuNSwwLjUgMCAwLDAgMTMuNSw3QTAuNSwwLjUgMCAwLDAgMTQsNy41TTE0LDlBMSwxIDAgMCwwIDEzLDEwQTEsMSAwIDAsMCAxNCwxMUExLDEgMCAwLDAgMTUsMTBBMSwxIDAgMCwwIDE0LDlNMTAsNy41QTAuNSwwLjUgMCAwLDAgMTAuNSw3QTAuNSwwLjUgMCAwLDAgMTAsNi41QTAuNSwwLjUgMCAwLDAgOS41LDdBMC41LDAuNSAwIDAsMCAxMCw3LjVNNywxMy41QTAuNSwwLjUgMCAwLDAgNi41LDE0QTAuNSwwLjUgMCAwLDAgNywxNC41QTAuNSwwLjUgMCAwLDAgNy41LDE0QTAuNSwwLjUgMCAwLDAgNywxMy41TTEwLDE2LjVBMC41LDAuNSAwIDAsMCA5LjUsMTdBMC41LDAuNSAwIDAsMCAxMCwxNy41QTAuNSwwLjUgMCAwLDAgMTAuNSwxN0EwLjUsMC41IDAgMCwwIDEwLDE2LjVNNyw5LjVBMC41LDAuNSAwIDAsMCA2LjUsMTBBMC41LDAuNSAwIDAsMCA3LDEwLjVBMC41LDAuNSAwIDAsMCA3LjUsMTBBMC41LDAuNSAwIDAsMCA3LDkuNU0xMCwxM0ExLDEgMCAwLDAgOSwxNEExLDEgMCAwLDAgMTAsMTVBMSwxIDAgMCwwIDExLDE0QTEsMSAwIDAsMCAxMCwxM00xMCw5QTEsMSAwIDAsMCA5LDEwQTEsMSAwIDAsMCAxMCwxMUExLDEgMCAwLDAgMTEsMTBBMSwxIDAgMCwwIDEwLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9sbmlzaUNyb3NzID0gXCJNMjIsN0wyMS41LDYuNUMxOS45Myw4IDE4LjQ3LDkuNCAxNi45MywxMC4xOEMxNS41LDEwLjkxIDE0LjQ0LDEwLjkxIDEzLDExQzEzLjA5LDkuNTYgMTMuMDksOC41IDEzLjgyLDcuMDdDMTQuNiw1LjUzIDE2LDQuMDcgMTcuNSwyLjVMMTcsMkMxNS4zMiwzLjIzIDEzLjY0LDMuODMgMTIsMy44M0MxMC4zNiwzLjgzIDguNjgsMy4yMyA3LDJMNi41LDIuNUM4LDQuMDcgOS40LDUuNTMgMTAuMTgsNy4wN0MxMC45MSw4LjUgMTAuOTEsOS41NiAxMSwxMUM5LjU2LDEwLjkxIDguNSwxMC45MSA3LjA3LDEwLjE4QzUuNTMsOS40IDQuMDYsOCAyLjUsNi41TDIsN0MzLjIzLDguNjggMy44MywxMC4zNiAzLjgzLDEyQzMuODMsMTMuNjQgMy4yMywxNS4zMiAyLDE3TDIuNSwxNy41QzQuMDcsMTYgNS41MywxNC42IDcuMDcsMTMuODJDOC41LDEzLjA5IDkuNTYsMTMuMDkgMTEsMTNDMTAuOTEsMTQuNDQgMTAuOTEsMTUuNSAxMC4xOCwxNi45M0M5LjQsMTguNDcgOCwxOS45MyA2LjUsMjEuNUw3LDIyQzguNjgsMjAuNzcgMTAuMzYsMjAuMTcgMTIsMjAuMTdDMTMuNjQsMjAuMTcgMTUuMzIsMjAuNzcgMTcsMjJMMTcuNSwyMS41QzE2LDE5LjkzIDE0LjYsMTguNDcgMTMuODIsMTYuOTNDMTMuMDksMTUuNSAxMy4wOSwxNC40NCAxMywxM0MxNC40NCwxMy4wOSAxNS41LDEzLjA5IDE2LjkzLDEzLjgyQzE4LjQ3LDE0LjYgMTkuOTMsMTYgMjEuNSwxNy41TDIyLDE3QzIwLjc3LDE1LjMyIDIwLjE3LDEzLjY0IDIwLjE3LDEyQzIwLjE3LDEwLjM2IDIwLjc3LDguNjggMjIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb2x0ID0gXCJNMTQsMTcuN1YyMUgxMFYyMC4zTDE0LDE3LjdNMTcsM0g3VjZIMTdWM00xNSw3TDE0LDcuN1Y3SDEwVjEwLjNMOSwxMVYxMkwxNSw4LjFWN00xNSwxMUwxNCwxMS43VjkuN0wxMCwxMi40VjE0LjRMOSwxNVYxNkwxNSwxMi4xVjExTTE1LDE1TDE0LDE1LjdWMTMuN0wxMCwxNi40VjE4LjRMOSwxOVYyMEwxNSwxNi4xVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvbWIgPSBcIk0xMS4yNSw2QTMuMjUsMy4yNSAwIDAsMSAxNC41LDIuNzVBMy4yNSwzLjI1IDAgMCwxIDE3Ljc1LDZDMTcuNzUsNi40MiAxOC4wOCw2Ljc1IDE4LjUsNi43NUMxOC45Miw2Ljc1IDE5LjI1LDYuNDIgMTkuMjUsNlY1LjI1SDIwLjc1VjZBMi4yNSwyLjI1IDAgMCwxIDE4LjUsOC4yNUEyLjI1LDIuMjUgMCAwLDEgMTYuMjUsNkExLjc1LDEuNzUgMCAwLDAgMTQuNSw0LjI1QTEuNzUsMS43NSAwIDAsMCAxMi43NSw2SDE0VjcuMjlDMTYuODksOC4xNSAxOSwxMC44MyAxOSwxNEE3LDcgMCAwLDEgMTIsMjFBNyw3IDAgMCwxIDUsMTRDNSwxMC44MyA3LjExLDguMTUgMTAsNy4yOVY2SDExLjI1TTIyLDZIMjRWN0gyMlY2TTE5LDRWMkgyMFY0SDE5TTIwLjkxLDQuMzhMMjIuMzMsMi45NkwyMy4wNCwzLjY3TDIxLjYyLDUuMDlMMjAuOTEsNC4zOFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb21iT2ZmID0gXCJNMTQuNSwyLjc1QzEyLjcsMi43NSAxMS4yNSw0LjIgMTEuMjUsNkgxMFY3LjI5QzkuMzEsNy41IDguNjcsNy44MSA4LjA4LDguMkwxNy43OSwxNy45MUMxOC41OCwxNi43NiAxOSwxNS4zOSAxOSwxNEMxOSwxMC44MyAxNi44OSw4LjE1IDE0LDcuMjlWNkgxMi43NUExLjc1LDEuNzUgMCAwLDEgMTQuNSw0LjI1QTEuNzUsMS43NSAwIDAsMSAxNi4yNSw2QTIuMjUsMi4yNSAwIDAsMCAxOC41LDguMjVDMTkuNzQsOC4yNSAyMC43NCw3LjI0IDIwLjc0LDZWNS4yNUgxOS4yNVY2QzE5LjI1LDYuNDIgMTguOTEsNi43NSAxOC41LDYuNzVDMTguMDgsNi43NSAxNy43NSw2LjQyIDE3Ljc1LDZDMTcuNzUsNC4yIDE2LjI5LDIuNzUgMTQuNSwyLjc1TTMuNDEsNi4zNkwyLDcuNzdMNS41NSwxMS4zMkM1LjIsMTIuMTQgNSwxMy4wNCA1LDE0QzUsMTcuODYgOC4xMywyMSAxMiwyMUMxMi45MiwyMSAxMy44MywyMC44MSAxNC42OCwyMC40NUwxOC4yMywyNEwxOS42NCwyMi41OUwzLjQxLDYuMzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9uZSA9IFwiTTgsMTRBMywzIDAgMCwxIDUsMTdBMywzIDAgMCwxIDIsMTRDMiwxMy4yMyAyLjI5LDEyLjUzIDIuNzYsMTJDMi4yOSwxMS40NyAyLDEwLjc3IDIsMTBBMywzIDAgMCwxIDUsN0EzLDMgMCAwLDEgOCwxMEM5LjMzLDEwLjA4IDEwLjY3LDEwLjE3IDEyLDEwLjE3QzEzLjMzLDEwLjE3IDE0LjY3LDEwLjA4IDE2LDEwQTMsMyAwIDAsMSAxOSw3QTMsMyAwIDAsMSAyMiwxMEMyMiwxMC43NyAyMS43MSwxMS40NyAyMS4yNCwxMkMyMS43MSwxMi41MyAyMiwxMy4yMyAyMiwxNEEzLDMgMCAwLDEgMTksMTdBMywzIDAgMCwxIDE2LDE0QzE0LjY3LDEzLjkyIDEzLjMzLDEzLjgzIDEyLDEzLjgzQzEwLjY3LDEzLjgzIDkuMzMsMTMuOTIgOCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rID0gXCJNMTgsMjJBMiwyIDAgMCwwIDIwLDIwVjRDMjAsMi44OSAxOS4xLDIgMTgsMkgxMlY5TDkuNSw3LjVMNyw5VjJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBY2NvdW50ID0gXCJNMTggMkgxMlY5TDkuNSA3LjVMNyA5VjJINkEyIDIgMCAwIDAgNCA0VjIwQTIgMiAwIDAgMCA2IDIySDE4QTIgMiAwIDAgMCAyMCAyMFY0QTIgMiAwIDAgMCAxOCAyTTE0IDEyQTIgMiAwIDEgMSAxMiAxNEEyIDIgMCAwIDEgMTQgMTJNMTggMjBIMTBWMTlDMTAgMTcuNjcgMTIuNjcgMTcgMTQgMTdTMTggMTcuNjcgMTggMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0FjY291bnRPdXRsaW5lID0gXCJNMTggMkEyIDIgMCAwIDEgMjAgNFYyMEEyIDIgMCAwIDEgMTggMjJINkEyIDIgMCAwIDEgNCAyMFY0QTIgMiAwIDAgMSA2IDJIMThNMTggNEgxM1Y5TDEwLjUgNi43TDggOVY0SDZWMjBIMThNMTMgMTFBMiAyIDAgMSAxIDExIDEzQTIgMiAwIDAgMSAxMyAxMU0xNyAxOUg5VjE4QzkgMTYuNjcgMTEuNjcgMTYgMTMgMTZTMTcgMTYuNjcgMTcgMThWMTlcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rQWxlcnQgPSBcIk0xOCA0VjIwQzE4IDIxLjExIDE3LjExIDIyIDE2IDIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFY0QzIgMi45IDIuOSAyIDQgMkg1VjlMNy41IDcuNUwxMCA5VjJIMTZDMTcuMSAyIDE4IDIuODkgMTggNE0yMCAxN0gyMlYxNUgyMFYxN00yMCA3VjEzSDIyVjdIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0FsZXJ0T3V0bGluZSA9IFwiTTE2IDJINEMyLjkgMiAyIDIuOSAyIDRWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxNkMxNy4xMSAyMiAxOCAyMS4xMSAxOCAyMFY0QzE4IDIuOSAxNy4xMSAyIDE2IDJNMTYgMjBINFY0SDZWMTJMOC41IDkuNzVMMTEgMTJWNEgxNlYyME0yMCAxNUgyMlYxN0gyMFYxNU0yMiA3VjEzSDIwVjdIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0FscGhhYmV0ID0gXCJNNS44MSwyQzQuODMsMi4wOSA0LDMgNCw0VjIwQzQsMjEuMDUgNC45NSwyMiA2LDIySDE4QzE5LjA1LDIyIDIwLDIxLjA1IDIwLDIwVjRDMjAsMi44OSAxOS4xLDIgMTgsMkgxMlY5TDkuNSw3LjVMNyw5VjJINkM1Ljk0LDIgNS44NywyIDUuODEsMk0xMiwxM0gxM0ExLDEgMCAwLDEgMTQsMTRWMThIMTNWMTZIMTJWMThIMTFWMTRBMSwxIDAgMCwxIDEyLDEzTTEyLDE0VjE1SDEzVjE0SDEyTTE1LDE1SDE4VjE2TDE2LDE5SDE4VjIwSDE1VjE5TDE3LDE2SDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBcnJvd0Rvd24gPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjAgMjBWMTZIMThWMjBIMTZMMTkgMjNMMjIgMjBIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Fycm93RG93bk91dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzLjA5TTIwIDIwVjE2SDE4VjIwSDE2TDE5IDIzTDIyIDIwSDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBcnJvd0xlZnQgPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMTggMThWMTZMMTUgMTlMMTggMjJWMjBIMjJWMThIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Fycm93TGVmdE91dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzLjA5TTE4IDE4VjE2TDE1IDE5TDE4IDIyVjIwSDIyVjE4SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBcnJvd1JpZ2h0ID0gXCJNMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEyIDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDdWOUw5LjUgNy41TDEyIDlWMkgxOEMxOS4xIDIgMjAgMi44OSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTIzIDE5TDIwIDE2VjE4SDE2VjIwSDIwVjIyTDIzIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBcnJvd1JpZ2h0T3V0bGluZSA9IFwiTTEzLjA5IDIwQzEzLjIxIDIwLjcyIDEzLjQ2IDIxLjM5IDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWNEgxM1YxMkwxMC41IDkuNzVMOCAxMlY0SDZWMjBIMTMuMDlNMjMgMTlMMjAgMTZWMThIMTZWMjBIMjBWMjJMMjMgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Fycm93VXAgPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMTkgMTVMMTYgMThIMThWMjJIMjBWMThIMjJMMTkgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Fycm93VXBPdXRsaW5lID0gXCJNMTMuMDkgMjBDMTMuMjEgMjAuNzIgMTMuNDYgMjEuMzkgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMy4wOUMxOS42NyAxMy4wNCAxOS4zNCAxMyAxOSAxM0MxOC42NiAxMyAxOC4zMyAxMy4wNCAxOCAxMy4wOVY0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMy4wOU0xOSAxNUwxNiAxOEgxOFYyMkgyMFYxOEgyMkwxOSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rQ2FuY2VsID0gXCJNMTIgMTguNUMxMiAxOS43OSAxMi4zOSAyMSAxMy4wNCAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMi4xOEMxOS41IDEyLjA3IDE5IDEyIDE4LjUgMTJDMTQuOTEgMTIgMTIgMTQuOTEgMTIgMTguNU0yMyAxOC41QzIzIDIxIDIxIDIzIDE4LjUgMjNTMTQgMjEgMTQgMTguNSAxNiAxNCAxOC41IDE0IDIzIDE2IDIzIDE4LjVNMjAgMjEuMDhMMTUuOTIgMTdDMTUuNjUgMTcuNDIgMTUuNSAxNy45NCAxNS41IDE4LjVDMTUuNSAyMC4xNiAxNi44NCAyMS41IDE4LjUgMjEuNUMxOS4wNiAyMS41IDE5LjU4IDIxLjM1IDIwIDIxLjA4TTIxLjUgMTguNUMyMS41IDE2Ljg0IDIwLjE2IDE1LjUgMTguNSAxNS41QzE3Ljk0IDE1LjUgMTcuNDIgMTUuNjUgMTcgMTUuOTJMMjEuMDggMjBDMjEuMzUgMTkuNTggMjEuNSAxOS4wNiAyMS41IDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0NhbmNlbE91dGxpbmUgPSBcIk0xMi4xOCAyMEMxMi4zNiAyMC43MiAxMi42NSAyMS4zOSAxMy4wNCAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEyLjE4QzE5LjUgMTIuMDcgMTkgMTIgMTguNSAxMkMxOC4zMyAxMiAxOC4xNyAxMiAxOCAxMi4wM1Y0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMi4xOE0yMyAxOC41QzIzIDIxIDIxIDIzIDE4LjUgMjNTMTQgMjEgMTQgMTguNSAxNiAxNCAxOC41IDE0IDIzIDE2IDIzIDE4LjVNMjAgMjEuMDhMMTUuOTIgMTdDMTUuNjUgMTcuNDIgMTUuNSAxNy45NCAxNS41IDE4LjVDMTUuNSAyMC4xNiAxNi44NCAyMS41IDE4LjUgMjEuNUMxOS4wNiAyMS41IDE5LjU4IDIxLjM1IDIwIDIxLjA4TTIxLjUgMTguNUMyMS41IDE2Ljg0IDIwLjE2IDE1LjUgMTguNSAxNS41QzE3Ljk0IDE1LjUgMTcuNDIgMTUuNjUgMTcgMTUuOTJMMjEuMDggMjBDMjEuMzUgMTkuNTggMjEuNSAxOS4wNiAyMS41IDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0NoZWNrID0gXCJNMTYuNzUgMjIuMTZMMTQgMTkuMTZMMTUuMTYgMThMMTYuNzUgMTkuNTlMMjAuMzQgMTZMMjEuNSAxNy40MUwxNi43NSAyMi4xNk02IDIyQzQuODkgMjIgNCAyMS4xIDQgMjBWNEM0IDIuODkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMy4zNEMxOS4zNyAxMy4xMiAxOC43IDEzIDE4IDEzQzE0LjY5IDEzIDEyIDE1LjY5IDEyIDE5QzEyIDIwLjA5IDEyLjI5IDIxLjEyIDEyLjggMjJINlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rQ2hlY2tPdXRsaW5lID0gXCJNMTYuNzUgMjIuMTZMMTQgMTkuMTZMMTUuMTYgMThMMTYuNzUgMTkuNTlMMjAuMzQgMTZMMjEuNSAxNy40MUwxNi43NSAyMi4xNk0xOCAyQzE5LjEgMiAyMCAyLjkgMjAgNFYxMy4zNEMxOS4zNyAxMy4xMiAxOC43IDEzIDE4IDEzVjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEyLjA4QzEyLjIgMjAuNzIgMTIuNDUgMjEuMzkgMTIuOCAyMkg2QzQuOSAyMiA0IDIxLjEgNCAyMFY0QzQgMi45IDQuOSAyIDYgMkgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rQ2xvY2sgPSBcIk0xNi41IDE3LjI1TDE5LjM2IDE4Ljk0TDE4LjYxIDIwLjE2TDE1IDE4VjEzSDE2LjVWMTcuMjVNMjMgMTdDMjMgMjAuODcgMTkuODcgMjQgMTYgMjRDMTQuMDkgMjQgMTIuMzcgMjMuMjQgMTEuMTEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTEuMjZDMjEuODEgMTIuNTMgMjMgMTQuNjIgMjMgMTdNMjEgMTdDMjEgMTQuMjQgMTguNzYgMTIgMTYgMTJTMTEgMTQuMjQgMTEgMTcgMTMuMjQgMjIgMTYgMjIgMjEgMTkuNzYgMjEgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Nsb2NrT3V0bGluZSA9IFwiTTIwIDExLjI2VjRDMjAgMi45IDE5LjExIDIgMTggMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMTEuMTFDMTIuMzcgMjMuMjQgMTQuMDkgMjQgMTYgMjRDMTkuODcgMjQgMjMgMjAuODcgMjMgMTdDMjMgMTQuNjIgMjEuODEgMTIuNTMgMjAgMTEuMjZNMTggNFYxMC4yOUMxNy4zNyAxMC4xMSAxNi43IDEwIDE2IDEwQzE0LjkzIDEwIDEzLjkxIDEwLjI1IDEzIDEwLjY4VjRIMThNNiA0SDhWMTJMMTAuNSA5Ljc1TDEyLjEgMTEuMTlDMTAuMjMgMTIuNDUgOSAxNC41OCA5IDE3QzkgMTguMDggOS4yNSAxOS4wOSA5LjY4IDIwSDZWNE0xNiAyMkMxMy4yNCAyMiAxMSAxOS43NiAxMSAxN1MxMy4yNCAxMiAxNiAxMiAyMSAxNC4yNCAyMSAxNyAxOC43NiAyMiAxNiAyMk0xNi41IDE3LjI1TDE5LjM2IDE4Ljk0TDE4LjYxIDIwLjE2TDE1IDE4VjEzSDE2LjVWMTcuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0NvZyA9IFwiTTEyIDE5QzEyIDIwLjA4IDEyLjI1IDIxLjA5IDEyLjY4IDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDdWOUw5LjUgNy41TDEyIDlWMkgxOEMxOS4xIDIgMjAgMi44OSAyMCA0VjEyLjA4QzE5LjY3IDEyLjAzIDE5LjM0IDEyIDE5IDEyQzE1LjEzIDEyIDEyIDE1LjEzIDEyIDE5TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tDb2dPdXRsaW5lID0gXCJNMTggNEgxM1YxMkwxMC41IDkuNzVMOCAxMlY0SDZWMjBIMTIuMDhDMTIuMTggMjAuNzEgMTIuMzkgMjEuMzggMTIuNjkgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMi4wOEMxOS42NyAxMi4wMyAxOS4zNCAxMiAxOSAxMkMxOC42NiAxMiAxOC4zMyAxMi4wMyAxOCAxMi4wOFY0TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tDcm9zcyA9IFwiTTUuODEsMkg3VjlMOS41LDcuNUwxMiw5VjJIMThBMiwyIDAgMCwxIDIwLDRWMjBDMjAsMjEuMDUgMTkuMDUsMjIgMTgsMjJINkM0Ljk1LDIyIDQsMjEuMDUgNCwyMFY0QzQsMyA0LjgzLDIuMDkgNS44MSwyTTEzLDEwVjEzSDEwVjE1SDEzVjIwSDE1VjE1SDE4VjEzSDE1VjEwSDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tFZGl0ID0gXCJNMTkuMzkgMTAuNzRMMTEgMTkuMTNWMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTAuM0MxOS43OCAxMC40MiAxOS41NyAxMC41NiAxOS4zOSAxMC43NE0xMyAxOS45NlYyMkgxNS4wNEwyMS4xNyAxNS44OEwxOS4xMyAxMy44M0wxMyAxOS45Nk0yMi44NSAxMy40N0wyMS41MyAxMi4xNUMyMS4zMyAxMS45NSAyMSAxMS45NSAyMC44MSAxMi4xNUwxOS44MyAxMy4xM0wyMS44NyAxNS4xN0wyMi44NSAxNC4xOUMyMy4wNSAxNCAyMy4wNSAxMy42NyAyMi44NSAxMy40N1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rRWRpdE91dGxpbmUgPSBcIk02IDIwSDExVjIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWMTAuM0MxOS43OCAxMC40MiAxOS41NyAxMC41NiAxOS4zOSAxMC43NEwxOCAxMi4xM1Y0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyME0yMi44NSAxMy40N0wyMS41MyAxMi4xNUMyMS4zMyAxMS45NSAyMSAxMS45NSAyMC44MSAxMi4xNUwxOS44MyAxMy4xM0wyMS44NyAxNS4xN0wyMi44NSAxNC4xOUMyMy4wNSAxNCAyMy4wNSAxMy42NyAyMi44NSAxMy40N00xMyAxOS45NlYyMkgxNS4wNEwyMS4xNyAxNS44OEwxOS4xMyAxMy44M0wxMyAxOS45NlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rRWR1Y2F0aW9uID0gXCJNOC44MiAxN0wxMyAxOS4yOFYyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMi41NEwxOC41IDExLjcyTDguODIgMTdNMjQgMTdMMTguNSAxNEwxMyAxN0wxOC41IDIwTDI0IDE3TTE1IDE5LjA5VjIxLjA5TDE4LjUgMjNMMjIgMjEuMDlWMTkuMDlMMTguNSAyMUwxNSAxOS4wOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rRWR1Y2F0aW9uT3V0bGluZSA9IFwiTTYgMjBIMTNWMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMi41NEwxOC41IDExLjcyTDE4IDEyVjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwTTI0IDE3TDE4LjUgMTRMMTMgMTdMMTguNSAyMEwyNCAxN00xNSAxOS4wOVYyMS4wOUwxOC41IDIzTDIyIDIxLjA5VjE5LjA5TDE4LjUgMjFMMTUgMTkuMDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0luZm9ybWF0aW9uVmFyaWFudCA9IFwiTTE4IDJIMTJWOUw5LjUgNy41TDcgOVYySDZDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOEMxOS4xIDIyIDIwIDIxLjEgMjAgMjBWNEMyMCAyLjg5IDE5LjEgMiAxOCAyTTE3LjY4IDE4LjQxQzE3LjU3IDE4LjUgMTYuNDcgMTkuMjUgMTYuMDUgMTkuNUMxNS42MyAxOS43OSAxNCAyMC43MiAxNC4yNiAxOC45MkMxNC44OSAxNS4yOCAxNi4xMSAxMy4xMiAxNC42NSAxNC4wNkMxNC4yNyAxNC4yOSAxNC4wNSAxNC40MyAxMy45MSAxNC41QzEzLjc4IDE0LjYxIDEzLjc5IDE0LjYgMTMuNjggMTQuNDFTMTMuNTMgMTQuMjMgMTMuNjcgMTQuMTNDMTMuNjcgMTQuMTMgMTUuOSAxMi4zNCAxNi43MiAxMi4yOEMxNy41IDEyLjIxIDE3LjMxIDEzLjE3IDE3LjI0IDEzLjYxQzE2Ljc4IDE1LjQ2IDE1Ljk0IDE4LjE1IDE2LjA3IDE4LjU0QzE2LjE4IDE4LjkzIDE3IDE4LjMxIDE3LjQ0IDE4QzE3LjQ0IDE4IDE3LjUgMTcuOTMgMTcuNjEgMTguMDVDMTcuNzIgMTguMjIgMTcuODMgMTguMyAxNy42OCAxOC40MU0xNi45NyAxMS4wNkMxNi40IDExLjA2IDE1Ljk0IDEwLjYgMTUuOTQgMTAuMDNDMTUuOTQgOS40NiAxNi40IDkgMTYuOTcgOUMxNy41NCA5IDE4IDkuNDYgMTggMTAuMDNDMTggMTAuNiAxNy41NCAxMS4wNiAxNi45NyAxMS4wNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTG9jayA9IFwiTTE0LjIgMTQuNVYxNC43NEMxMy41IDE1LjM0IDEzIDE2LjI0IDEzIDE3LjJWMjAuN0MxMyAyMS4xNiAxMy4xIDIxLjYgMTMuMjcgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTAuMTFDMTkuNjggMTAuMDQgMTkuMzQgMTAgMTkgMTBDMTYuNCAxMCAxNC4yIDEyLjA2IDE0LjIgMTQuNU0yMyAxNy4zVjIwLjhDMjMgMjEuNCAyMi40IDIyIDIxLjcgMjJIMTYuMkMxNS42IDIyIDE1IDIxLjQgMTUgMjAuN1YxNy4yQzE1IDE2LjYgMTUuNiAxNiAxNi4yIDE2VjE0LjVDMTYuMiAxMy4xIDE3LjYgMTIgMTkgMTJTMjEuOCAxMy4xIDIxLjggMTQuNVYxNkMyMi40IDE2IDIzIDE2LjYgMjMgMTcuM00yMC41IDE0LjVDMjAuNSAxMy43IDE5LjggMTMuMiAxOSAxMy4yUzE3LjUgMTMuNyAxNy41IDE0LjVWMTZIMjAuNVYxNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tMb2NrT3BlbiA9IFwiTTE0LjIgMTMuNVYxNC43NEMxMy41IDE1LjM0IDEzIDE2LjI0IDEzIDE3LjJWMjAuN0MxMyAyMS4xNiAxMy4xIDIxLjYgMTMuMjcgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWOS4xMUMxOS42OCA5LjA0IDE5LjM0IDkgMTkgOUMxNi40IDkgMTQuMiAxMS4wNiAxNC4yIDEzLjVNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0xvY2tPcGVuT3V0bGluZSA9IFwiTTEzIDIwLjdDMTMgMjEuMTYgMTMuMSAyMS42IDEzLjI3IDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWOS4xMUMxOS42OCA5LjA0IDE5LjM0IDkgMTkgOVMxOC4zMiA5LjA0IDE4IDkuMTFWNEgxM1YxMkwxMC41IDkuNzVMOCAxMlY0SDZWMjBIMTNWMjAuN00yMS44IDE2SDE3LjVWMTMuNUMxNy41IDEyLjcgMTguMiAxMi4yIDE5IDEyLjJTMjAuNSAxMi43IDIwLjUgMTMuNVYxNEgyMS44VjEzLjVDMjEuOCAxMi4xIDIwLjQgMTEgMTkgMTFTMTYuMiAxMi4xIDE2LjIgMTMuNVYxNkMxNS42IDE2IDE1IDE2LjYgMTUgMTcuMlYyMC43QzE1IDIxLjQgMTUuNiAyMiAxNi4yIDIySDIxLjdDMjIuNCAyMiAyMyAyMS40IDIzIDIwLjhWMTcuM0MyMyAxNi42IDIyLjQgMTYgMjEuOCAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTG9ja091dGxpbmUgPSBcIk0xMyAyMC43QzEzIDIxLjE2IDEzLjEgMjEuNiAxMy4yNyAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEwLjExQzE5LjY4IDEwLjA0IDE5LjM0IDEwIDE5IDEwUzE4LjMyIDEwLjA0IDE4IDEwLjExVjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzVjIwLjdNMjMgMTcuM1YyMC44QzIzIDIxLjQgMjIuNCAyMiAyMS43IDIySDE2LjJDMTUuNiAyMiAxNSAyMS40IDE1IDIwLjdWMTcuMkMxNSAxNi42IDE1LjYgMTYgMTYuMiAxNlYxNC41QzE2LjIgMTMuMSAxNy42IDEyIDE5IDEyUzIxLjggMTMuMSAyMS44IDE0LjVWMTZDMjIuNCAxNiAyMyAxNi42IDIzIDE3LjNNMjAuNSAxNC41QzIwLjUgMTMuNyAxOS44IDEzLjIgMTkgMTMuMlMxNy41IDEzLjcgMTcuNSAxNC41VjE2SDIwLjVWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTWFya2VyID0gXCJNMTMgMTUuNUMxMyAxNy43OCAxNC43IDIwLjQxIDE1LjkxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDdWOUw5LjUgNy41TDEyIDlWMkgxOEMxOS4xIDIgMjAgMi44OSAyMCA0VjEwLjIyQzE5LjUgMTAuMDggMTkgMTAgMTguNSAxMEMxNS41IDEwIDEzIDEyLjUgMTMgMTUuNU0yMiAxNS41QzIyIDE4LjEgMTguNSAyMiAxOC41IDIyUzE1IDE4LjEgMTUgMTUuNUMxNSAxMy42IDE2LjYgMTIgMTguNSAxMlMyMiAxMy42IDIyIDE1LjVNMTkuNyAxNS42QzE5LjcgMTUgMTkuMSAxNC40IDE4LjUgMTQuNFMxNy4zIDE0LjkgMTcuMyAxNS42QzE3LjMgMTYuMiAxNy44IDE2LjggMTguNSAxNi44UzE5LjggMTYuMiAxOS43IDE1LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va01hcmtlck91dGxpbmUgPSBcIk0xNC41NSAyMEMxNSAyMC43NiAxNS41IDIxLjQ0IDE1LjkxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWMTAuMjJDMTkuNSAxMC4wOCAxOSAxMCAxOC41IDEwQzE4LjMzIDEwIDE4LjE3IDEwIDE4IDEwLjAzVjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDE0LjU1TTIyIDE1LjVDMjIgMTguMSAxOC41IDIyIDE4LjUgMjJTMTUgMTguMSAxNSAxNS41QzE1IDEzLjYgMTYuNiAxMiAxOC41IDEyUzIyIDEzLjYgMjIgMTUuNU0xOS43IDE1LjZDMTkuNyAxNSAxOS4xIDE0LjQgMTguNSAxNC40UzE3LjMgMTQuOSAxNy4zIDE1LjZDMTcuMyAxNi4yIDE3LjggMTYuOCAxOC41IDE2LjhTMTkuOCAxNi4yIDE5LjcgMTUuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTWludXMgPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va01pbnVzTXVsdGlwbGUgPSBcIk0xMy4wOSAyMEg1VjZIM1YyMEMzIDIxLjExIDMuOSAyMiA1IDIySDEzLjgxQzEzLjQ0IDIxLjM5IDEzLjIgMjAuNzEgMTMuMDkgMjBNMTkgMkgxNFY3TDEyIDUuNUwxMCA3VjJIOUM3LjkgMiA3IDIuOSA3IDRWMTZDNyAxNy4xMSA3LjkgMTggOSAxOEgxMy4wOUMxMy42NCAxNC43MyAxNi43NCAxMi41MyAyMCAxMy4wOEMyMC4zNCAxMy4xNCAyMC42OCAxMy4yMyAyMSAxMy4zNFY0QzIxIDIuOSAyMC4xMSAyIDE5IDJNMjMgMThWMjBIMTVWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va01pbnVzTXVsdGlwbGVPdXRsaW5lID0gXCJNMTMuMDkgMjBINVY2SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxMy44MUMxMy40NCAyMS4zOSAxMy4yIDIwLjcxIDEzLjA5IDIwTTE5IDJIOUM3LjkgMiA3IDIuOSA3IDRWMTZDNyAxNy4xMSA3LjkgMTggOSAxOEgxMy4wOUMxMy4yIDE3LjI5IDEzLjQ0IDE2LjYxIDEzLjgxIDE2SDlWNEgxMVYxMEwxMy41IDcuNzVMMTYgMTBWNEgxOVYxM0MxOS42OCAxMyAyMC4zNiAxMy4xMSAyMSAxMy4zNFY0QzIxIDIuOSAyMC4xMSAyIDE5IDJNMjMgMThWMjBIMTVWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va01pbnVzT3V0bGluZSA9IFwiTTEzLjA5IDIwQzEzLjIxIDIwLjcyIDEzLjQ2IDIxLjM5IDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWNEgxM1YxMkwxMC41IDkuNzVMOCAxMlY0SDZWMjBIMTMuMDlNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va011bHRpcGxlID0gXCJNMTksMThIOUEyLDIgMCAwLDEgNywxNlY0QTIsMiAwIDAsMSA5LDJIMTBWN0wxMiw1LjVMMTQsN1YySDE5QTIsMiAwIDAsMSAyMSw0VjE2QTIsMiAwIDAsMSAxOSwxOE0xNywyMFYyMkg1QTIsMiAwIDAsMSAzLDIwVjZINVYyMEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTXVsdGlwbGVPdXRsaW5lID0gXCJNMTkgMkEyIDIgMCAwIDEgMjEgNFYxNkEyIDIgMCAwIDEgMTkgMThIOUEyIDIgMCAwIDEgNyAxNlY0QTIgMiAwIDAgMSA5IDJIMTlNMTkgNEgxNlYxMEwxMy41IDcuNzVMMTEgMTBWNEg5VjE2SDE5TTMgMjBBMiAyIDAgMCAwIDUgMjJIMTdWMjBINVY2SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va011c2ljID0gXCJNMTMgMjAuNUMxMyAyMS4wMyAxMy4wOSAyMS41MyAxMy4yNiAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMUgxNi41VjE2LjExQzE0LjUgMTYuNTcgMTMgMTguMzYgMTMgMjAuNU0yMCAxM0gxOC41VjE4LjIxQzE4LjE5IDE4LjA3IDE3Ljg2IDE4IDE3LjUgMThDMTYuMTIgMTggMTUgMTkuMTIgMTUgMjAuNVMxNi4xMiAyMyAxNy41IDIzIDIwIDIxLjg4IDIwIDIwLjVWMTVIMjJWMTNIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va011c2ljT3V0bGluZSA9IFwiTTEzIDIwLjVDMTMgMjEuMDMgMTMuMDkgMjEuNTMgMTMuMjYgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMUgxOFY0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMy4wNEMxMy4wMyAyMC4xNyAxMyAyMC4zMyAxMyAyMC41TTIwIDEzSDE4LjVWMTguMjFDMTguMTkgMTguMDcgMTcuODYgMTggMTcuNSAxOEMxNi4xMiAxOCAxNSAxOS4xMiAxNSAyMC41UzE2LjEyIDIzIDE3LjUgMjMgMjAgMjEuODggMjAgMjAuNVYxNUgyMlYxM0gyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rT2ZmID0gXCJNMTguNjggMi4xMkwxMiA4LjhWMkgxOEMxOC4yNCAyIDE4LjQ2IDIuMDUgMTguNjggMi4xMk05LjUgNy41TDcgOVYySDZDNC44OSAyIDQgMi45IDQgNFYxNi44TDExLjg4IDguOTNMOS41IDcuNU0yMS42MSAxLjczTDEuODkgMjEuNDZMMy4xNiAyMi43M0w0LjU0IDIxLjM1QzQuOSAyMS43NSA1LjQyIDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWNS44OUwyMi44OSAzTDIxLjYxIDEuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va09mZk91dGxpbmUgPSBcIk02IDE0LjhMNCAxNi44VjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOC4yNCAyIDE4LjQ3IDIuMDQgMTguNjggMi4xMkwxNi44IDRIMTNWNy44TDEwLjc5IDEwTDEwLjUgOS43NUw4IDEyVjRINlYxNC44TTIyLjg5IDNMMjAgNS44OVYyMEMyMCAyMS4xMSAxOS4xMSAyMiAxOCAyMkg2QzUuNDIgMjIgNC45IDIxLjc1IDQuNTQgMjEuMzVMMy4xNiAyMi43M0wxLjg5IDIxLjQ2TDIxLjYxIDEuNzNMMjIuODkgM00xOCA3Ljg5TDYgMTkuODlWMjBIMThWNy44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rT3BlbiA9IFwiTTEzLDEySDIwVjEzLjVIMTNNMTMsOS41SDIwVjExSDEzTTEzLDE0LjVIMjBWMTZIMTNNMjEsNEgzQTIsMiAwIDAsMCAxLDZWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjZBMiwyIDAgMCwwIDIxLDRNMjEsMTlIMTJWNkgyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tPcGVuQmxhbmtWYXJpYW50ID0gXCJNMjEsNUMxOS44OSw0LjY1IDE4LjY3LDQuNSAxNy41LDQuNUMxNS41NSw0LjUgMTMuNDUsNC45IDEyLDZDMTAuNTUsNC45IDguNDUsNC41IDYuNSw0LjVDNC41NSw0LjUgMi40NSw0LjkgMSw2VjIwLjY1QzEsMjAuOSAxLjI1LDIxLjE1IDEuNSwyMS4xNUMxLjYsMjEuMTUgMS42NSwyMS4xIDEuNzUsMjEuMUMzLjEsMjAuNDUgNS4wNSwyMCA2LjUsMjBDOC40NSwyMCAxMC41NSwyMC40IDEyLDIxLjVDMTMuMzUsMjAuNjUgMTUuOCwyMCAxNy41LDIwQzE5LjE1LDIwIDIwLjg1LDIwLjMgMjIuMjUsMjEuMDVDMjIuMzUsMjEuMSAyMi40LDIxLjEgMjIuNSwyMS4xQzIyLjc1LDIxLjEgMjMsMjAuODUgMjMsMjAuNlY2QzIyLjQsNS41NSAyMS43NSw1LjI1IDIxLDVNMjEsMTguNUMxOS45LDE4LjE1IDE4LjcsMTggMTcuNSwxOEMxNS44LDE4IDEzLjM1LDE4LjY1IDEyLDE5LjVWOEMxMy4zNSw3LjE1IDE1LjgsNi41IDE3LjUsNi41QzE4LjcsNi41IDE5LjksNi42NSAyMSw3VjE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va09wZW5PdXRsaW5lID0gXCJNMjEsNEgzQTIsMiAwIDAsMCAxLDZWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjZBMiwyIDAgMCwwIDIxLDRNMywxOVY2SDExVjE5SDNNMjEsMTlIMTNWNkgyMVYxOU0xNCw5LjVIMjBWMTFIMTRWOS41TTE0LDEySDIwVjEzLjVIMTRWMTJNMTQsMTQuNUgyMFYxNkgxNFYxNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tPcGVuUGFnZVZhcmlhbnQgPSBcIk0xOSAyTDE0IDYuNVYxNy41TDE5IDEzVjJNNi41IDVDNC41NSA1IDIuNDUgNS40IDEgNi41VjIxLjE2QzEgMjEuNDEgMS4yNSAyMS42NiAxLjUgMjEuNjZDMS42IDIxLjY2IDEuNjUgMjEuNTkgMS43NSAyMS41OUMzLjEgMjAuOTQgNS4wNSAyMC41IDYuNSAyMC41QzguNDUgMjAuNSAxMC41NSAyMC45IDEyIDIyQzEzLjM1IDIxLjE1IDE1LjggMjAuNSAxNy41IDIwLjVDMTkuMTUgMjAuNSAyMC44NSAyMC44MSAyMi4yNSAyMS41NkMyMi4zNSAyMS42MSAyMi40IDIxLjU5IDIyLjUgMjEuNTlDMjIuNzUgMjEuNTkgMjMgMjEuMzQgMjMgMjEuMDlWNi41QzIyLjQgNi4wNSAyMS43NSA1Ljc1IDIxIDUuNVYxOUMxOS45IDE4LjY1IDE4LjcgMTguNSAxNy41IDE4LjVDMTUuOCAxOC41IDEzLjM1IDE5LjE1IDEyIDIwVjYuNUMxMC41NSA1LjQgOC40NSA1IDYuNSA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tPcGVuUGFnZVZhcmlhbnRPdXRsaW5lID0gXCJNMTkgMUwxNCA2VjE3TDE5IDEyLjVWMU0yMSA1VjE4LjVDMTkuOSAxOC4xNSAxOC43IDE4IDE3LjUgMThDMTUuOCAxOCAxMy4zNSAxOC42NSAxMiAxOS41VjZDMTAuNTUgNC45IDguNDUgNC41IDYuNSA0LjVDNC41NSA0LjUgMi40NSA0LjkgMSA2VjIwLjY1QzEgMjAuOSAxLjI1IDIxLjE1IDEuNSAyMS4xNUMxLjYgMjEuMTUgMS42NSAyMS4xIDEuNzUgMjEuMUMzLjEgMjAuNDUgNS4wNSAyMCA2LjUgMjBDOC40NSAyMCAxMC41NSAyMC40IDEyIDIxLjVDMTMuMzUgMjAuNjUgMTUuOCAyMCAxNy41IDIwQzE5LjE1IDIwIDIwLjg1IDIwLjMgMjIuMjUgMjEuMDVDMjIuMzUgMjEuMSAyMi40IDIxLjEgMjIuNSAyMS4xQzIyLjc1IDIxLjEgMjMgMjAuODUgMjMgMjAuNlY2QzIyLjQgNS41NSAyMS43NSA1LjI1IDIxIDVNMTAgMTguNDFDOC43NSAxOC4wOSA3LjUgMTggNi41IDE4QzUuNDQgMTggNC4xOCAxOC4xOSAzIDE4LjVWNy4xM0MzLjkxIDYuNzMgNS4xNCA2LjUgNi41IDYuNUM3Ljg2IDYuNSA5LjA5IDYuNzMgMTAgNy4xM1YxOC40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rT3BlblZhcmlhbnQgPSBcIk0xNy41IDE0LjMzQzE4LjI5IDE0LjMzIDE5LjEzIDE0LjQxIDIwIDE0LjU3VjE2LjA3QzE5LjM4IDE1LjkxIDE4LjU0IDE1LjgzIDE3LjUgMTUuODNDMTUuNiAxNS44MyAxNC4xMSAxNi4xNiAxMyAxNi44MlYxNS4xM0MxNC4xNyAxNC42IDE1LjY3IDE0LjMzIDE3LjUgMTQuMzNNMTMgMTIuNDZDMTQuMjkgMTEuOTMgMTUuNzkgMTEuNjcgMTcuNSAxMS42N0MxOC4yOSAxMS42NyAxOS4xMyAxMS43NCAyMCAxMS45VjEzLjRDMTkuMzggMTMuMjQgMTguNTQgMTMuMTYgMTcuNSAxMy4xNkMxNS42IDEzLjE2IDE0LjExIDEzLjUgMTMgMTQuMTVNMTcuNSAxMC41QzE1LjYgMTAuNSAxNC4xMSAxMC44MiAxMyAxMS41VjkuODRDMTQuMjMgOS4yOCAxNS43MyA5IDE3LjUgOUMxOC4yOSA5IDE5LjEzIDkuMDggMjAgOS4yM1YxMC43OEMxOS4yNiAxMC41OSAxOC40MSAxMC41IDE3LjUgMTAuNU0yMSAxOC41VjdDMTkuOTYgNi42NyAxOC43OSA2LjUgMTcuNSA2LjVDMTUuNDUgNi41IDEzLjYyIDcgMTIgOFYxOS41QzEzLjYyIDE4LjUgMTUuNDUgMTggMTcuNSAxOEMxOC42OSAxOCAxOS44NiAxOC4xNiAyMSAxOC41TTE3LjUgNC41QzE5Ljg1IDQuNSAyMS42OSA1IDIzIDZWMjAuNTZDMjMgMjAuNjggMjIuOTUgMjAuOCAyMi44NCAyMC45MUMyMi43MyAyMSAyMi42MSAyMS4wOCAyMi41IDIxLjA4QzIyLjM5IDIxLjA4IDIyLjMxIDIxLjA2IDIyLjI1IDIxLjAzQzIwLjk3IDIwLjM0IDE5LjM4IDIwIDE3LjUgMjBDMTUuNDUgMjAgMTMuNjIgMjAuNSAxMiAyMS41QzEwLjY2IDIwLjUgOC44MyAyMCA2LjUgMjBDNC44NCAyMCAzLjI1IDIwLjM2IDEuNzUgMjEuMDdDMS43MiAyMS4wOCAxLjY4IDIxLjA4IDEuNjMgMjEuMUMxLjU5IDIxLjExIDEuNTUgMjEuMTIgMS41IDIxLjEyQzEuMzkgMjEuMTIgMS4yNyAyMS4wOCAxLjE2IDIxQzEuMDUgMjAuODkgMSAyMC43OCAxIDIwLjY1VjZDMi4zNCA1IDQuMTggNC41IDYuNSA0LjVDOC44MyA0LjUgMTAuNjYgNSAxMiA2QzEzLjM0IDUgMTUuMTcgNC41IDE3LjUgNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tPdXRsaW5lID0gXCJNMTgsMkEyLDIgMCAwLDEgMjAsNFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMThNMTgsNEgxM1YxMkwxMC41LDkuNzVMOCwxMlY0SDZWMjBIMThWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUGxheSA9IFwiTTEzIDE5QzEzIDIwLjEgMTMuMyAyMS4xMiAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMy4wOUMxOS42NyAxMy4wNCAxOS4zNCAxMyAxOSAxM0MxNS42OSAxMyAxMyAxNS42OSAxMyAxOU0xNyAxNlYyMkwyMiAxOUwxNyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUGxheU91dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzLjA5TTE3IDE2VjIyTDIyIDE5TDE3IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tQbHVzID0gXCJNMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEyIDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDdWOUw5LjUgNy41TDEyIDlWMkgxOEMxOS4xIDIgMjAgMi44OSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tQbHVzTXVsdGlwbGUgPSBcIk0xMy4wOSAyMEg1VjZIM1YyMEEyIDIgMCAwIDAgNSAyMkgxMy44MUE1LjUgNS41IDAgMCAxIDEzLjA5IDIwTTE5IDJIMTRWN0wxMiA1LjVMMTAgN1YySDlBMiAyIDAgMCAwIDcgNFYxNkEyIDIgMCAwIDAgOSAxOEgxMy4wOUE2IDYgMCAwIDEgMjEgMTMuMzRWNEEyIDIgMCAwIDAgMTkgMk0yMCAxNVYxOEgyM1YyMEgyMFYyM0gxOFYyMEgxNVYxOEgxOFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUGx1c011bHRpcGxlT3V0bGluZSA9IFwiTTEzLjA5IDIwSDVWNkgzVjIwQTIgMiAwIDAgMCA1IDIySDEzLjgxQTUuNSA1LjUgMCAwIDEgMTMuMDkgMjBNMTkgMkg5QTIgMiAwIDAgMCA3IDRWMTZBMiAyIDAgMCAwIDkgMThIMTMuMDlBNS41IDUuNSAwIDAgMSAxMy44MSAxNkg5VjRIMTFWMTBMMTMuNSA3Ljc1TDE2IDEwVjRIMTlWMTNBNiA2IDAgMCAxIDIxIDEzLjM0VjRBMiAyIDAgMCAwIDE5IDJNMjAgMTVWMThIMjNWMjBIMjBWMjNIMThWMjBIMTVWMThIMThWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1BsdXNPdXRsaW5lID0gXCJNMTMuMDkgMjBDMTMuMjEgMjAuNzIgMTMuNDYgMjEuMzkgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMy4wOUMxOS42NyAxMy4wNCAxOS4zNCAxMyAxOSAxM0MxOC42NiAxMyAxOC4zMyAxMy4wNCAxOCAxMy4wOVY0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMy4wOU0yMCAxOFYxNUgxOFYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUmVmcmVzaCA9IFwiTTEyIDE4LjVDMTIgMTkuNzkgMTIuMzkgMjEgMTMuMDQgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTIuMThDMTkuNSAxMi4wNyAxOSAxMiAxOC41IDEyQzE0LjkxIDEyIDEyIDE0LjkxIDEyIDE4LjVNMjIgMTguNVYxNC41TDIwLjgzIDE1LjY3QzIwLjExIDE0Ljk1IDE5LjExIDE0LjUgMTggMTQuNUMxNS43OSAxNC41IDE0IDE2LjI5IDE0IDE4LjVTMTUuNzkgMjIuNSAxOCAyMi41QzE5LjY4IDIyLjUgMjEuMTIgMjEuNDcgMjEuNzEgMjBIMjBDMTkuNTQgMjAuNjEgMTguODIgMjEgMTggMjFDMTYuNjIgMjEgMTUuNSAxOS44OCAxNS41IDE4LjVTMTYuNjIgMTYgMTggMTZDMTguNjkgMTYgMTkuMzIgMTYuMjggMTkuNzcgMTYuNzNMMTggMTguNUgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUmVmcmVzaE91dGxpbmUgPSBcIk0xMi4xOCAyMEMxMi4zNiAyMC43MiAxMi42NSAyMS4zOSAxMy4wNCAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEyLjE4QzE5LjUgMTIuMDcgMTkgMTIgMTguNSAxMkMxOC4zMyAxMiAxOC4xNyAxMiAxOCAxMi4wM1Y0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMi4xOE0yMiAxOC41VjE0LjVMMjAuODMgMTUuNjdDMjAuMTEgMTQuOTUgMTkuMTEgMTQuNSAxOCAxNC41QzE1Ljc5IDE0LjUgMTQgMTYuMjkgMTQgMTguNVMxNS43OSAyMi41IDE4IDIyLjVDMTkuNjggMjIuNSAyMS4xMiAyMS40NyAyMS43MSAyMEgyMEMxOS41NCAyMC42MSAxOC44MiAyMSAxOCAyMUMxNi42MiAyMSAxNS41IDE5Ljg4IDE1LjUgMTguNVMxNi42MiAxNiAxOCAxNkMxOC42OSAxNiAxOS4zMiAxNi4yOCAxOS43NyAxNi43M0wxOCAxOC41SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tSZW1vdmUgPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjIuNTQgMTYuODhMMjEuMTIgMTUuNDdMMTkgMTcuNTlMMTYuODggMTUuNDdMMTUuNDcgMTYuODhMMTcuNTkgMTlMMTUuNDcgMjEuMTJMMTYuODggMjIuNTRMMTkgMjAuNDFMMjEuMTIgMjIuNTRMMjIuNTQgMjEuMTJMMjAuNDEgMTlMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1JlbW92ZU11bHRpcGxlID0gXCJNMTMuMDkgMjBINVY2SDNWMjBBMiAyIDAgMCAwIDUgMjJIMTMuODFBNS41IDUuNSAwIDAgMSAxMy4wOSAyME0xOSAySDE0VjdMMTIgNS41TDEwIDdWMkg5QTIgMiAwIDAgMCA3IDRWMTZBMiAyIDAgMCAwIDkgMThIMTMuMDlBNiA2IDAgMCAxIDIxIDEzLjM0VjRBMiAyIDAgMCAwIDE5IDJNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDYgMjEuMTJMMTcuNTkgMTlMMTUuNDYgMTYuODhMMTYuODggMTUuNDZMMTkgMTcuNTlMMjEuMTIgMTUuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1JlbW92ZU11bHRpcGxlT3V0bGluZSA9IFwiTTEzLjA5IDIwSDVWNkgzVjIwQTIgMiAwIDAgMCA1IDIySDEzLjgxQTUuNSA1LjUgMCAwIDEgMTMuMDkgMjBNMTkgMkg5QTIgMiAwIDAgMCA3IDRWMTZBMiAyIDAgMCAwIDkgMThIMTMuMDlBNS41IDUuNSAwIDAgMSAxMy44MSAxNkg5VjRIMTFWMTBMMTMuNSA3Ljc1TDE2IDEwVjRIMTlWMTNBNiA2IDAgMCAxIDIxIDEzLjM0VjRBMiAyIDAgMCAwIDE5IDJNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDYgMjEuMTJMMTcuNTkgMTlMMTUuNDYgMTYuODhMMTYuODggMTUuNDZMMTkgMTcuNTlMMjEuMTIgMTUuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1JlbW92ZU91dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzLjA5TTIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ3TDE5IDE3LjU5TDE2Ljg4IDE1LjQ3TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tTZWFyY2ggPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE02LDIyQTIsMiAwIDAsMSA0LDIwVjRDNCwyLjg5IDQuOSwyIDYsMkg3VjlMOS41LDcuNUwxMiw5VjJIMThBMiwyIDAgMCwxIDIwLDRWMTEuODFDMTguODMsMTAuNjkgMTcuMjUsMTAgMTUuNSwxMEE2LjUsNi41IDAgMCwwIDksMTYuNUM5LDE4LjgxIDEwLjIxLDIwLjg1IDEyLjAzLDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1NlYXJjaE91dGxpbmUgPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE0xMyw0VjEyTDEwLjUsOS43NUw4LDEyVjRINlYyMEgxMEMxMC41NCwyMC44MSAxMS4yMywyMS41IDEyLjAzLDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwySDE4QTIsMiAwIDAsMSAyMCw0VjExLjgxQzE5LjQyLDExLjI2IDE4Ljc1LDEwLjgxIDE4LDEwLjVWNEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rU2V0dGluZ3MgPSBcIk0yMCAyVjE4QzIwIDE5LjExIDE5LjExIDIwIDE4IDIwSDZDNC44OSAyMCA0IDE5LjExIDQgMThWMkM0IC44OTUgNC44OSAwIDYgMEg3VjdMOS41IDUuNUwxMiA3VjBIMThDMTkuMSAwIDIwIC44OSAyMCAyTTcgMjRIOVYyMkg3VjI0TTE1IDI0SDE3VjIySDE1VjI0TTExIDI0SDEzVjIySDExVjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tTZXR0aW5nc091dGxpbmUgPSBcIk0xOCAwSDZDNC44OSAwIDQgLjg5NSA0IDJWMThDNCAxOS4xMSA0Ljg5IDIwIDYgMjBIMThDMTkuMTEgMjAgMjAgMTkuMTEgMjAgMThWMkMyMCAuODk1IDE5LjExIDAgMTggME0xOCAxOEg2VjJIOFYxMEwxMC41IDcuNzVMMTMgMTBWMkgxOFYxOE03IDIySDlWMjRIN1YyMk0xMSAyMkgxM1YyNEgxMVYyMk0xNSAyMkgxN1YyNEgxNVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rU3luYyA9IFwiTTEzIDE3LjVDMTMgMTkuMjUgMTMuNjkgMjAuODMgMTQuODIgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTEuMDNDMTkuODQgMTEgMTkuNjcgMTEgMTkuNSAxMUMxNS45MSAxMSAxMyAxMy45MSAxMyAxNy41TTE5IDIwQzE3LjYyIDIwIDE2LjUgMTguODggMTYuNSAxNy41QzE2LjUgMTcuMSAxNi41OSAxNi43MiAxNi43NiAxNi4zOEwxNS42NyAxNS4yOUMxNS4yNSAxNS45MiAxNSAxNi42OCAxNSAxNy41QzE1IDE5LjcxIDE2Ljc5IDIxLjUgMTkgMjEuNVYyM0wyMS4yNSAyMC43NUwxOSAxOC41VjIwTTE5IDEzLjVWMTJMMTYuNzUgMTQuMjVMMTkgMTYuNVYxNUMyMC4zOCAxNSAyMS41IDE2LjEyIDIxLjUgMTcuNUMyMS41IDE3LjkgMjEuNDEgMTguMjggMjEuMjQgMTguNjJMMjIuMzMgMTkuNzFDMjIuNzUgMTkuMDggMjMgMTguMzIgMjMgMTcuNUMyMyAxNS4yOSAyMS4yMSAxMy41IDE5IDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1N5bmNPdXRsaW5lID0gXCJNMTMuNSAyMEMxMy44MSAyMC43NSAxNC4yNiAyMS40MiAxNC44MiAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjExLjAzQzE5Ljg0IDExIDE5LjY3IDExIDE5LjUgMTFDMTkgMTEgMTguNSAxMS4wNyAxOCAxMS4xOFY0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMy41TTE5IDIwQzE3LjYyIDIwIDE2LjUgMTguODggMTYuNSAxNy41QzE2LjUgMTcuMSAxNi41OSAxNi43MiAxNi43NiAxNi4zOEwxNS42NyAxNS4yOUMxNS4yNSAxNS45MiAxNSAxNi42OCAxNSAxNy41QzE1IDE5LjcxIDE2Ljc5IDIxLjUgMTkgMjEuNVYyM0wyMS4yNSAyMC43NUwxOSAxOC41VjIwTTE5IDEzLjVWMTJMMTYuNzUgMTQuMjVMMTkgMTYuNVYxNUMyMC4zOCAxNSAyMS41IDE2LjEyIDIxLjUgMTcuNUMyMS41IDE3LjkgMjEuNDEgMTguMjggMjEuMjQgMTguNjJMMjIuMzMgMTkuNzFDMjIuNzUgMTkuMDggMjMgMTguMzIgMjMgMTcuNUMyMyAxNS4yOSAyMS4yMSAxMy41IDE5IDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1ZhcmlhbnQgPSBcIk02LDRIMTFWMTJMOC41LDEwLjVMNiwxMk0xOCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWNEEyLDIgMCAwLDAgMTgsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rVmFyaWFudE11bHRpcGxlID0gXCJNNCw2SDJWMjBBMiwyIDAgMCwwIDQsMjJIMThWMjBINFY2TTIwLDJIOEEyLDIgMCAwLDAgNiw0VjE2QTIsMiAwIDAsMCA4LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTIwLDEyTDE3LjUsMTAuNUwxNSwxMlY0SDIwVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrID0gXCJNMTcsM0g3QTIsMiAwIDAsMCA1LDVWMjFMMTIsMThMMTksMjFWNUMxOSwzLjg5IDE4LjEsMyAxNywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrQ2hlY2sgPSBcIk0xNywzQTIsMiAwIDAsMSAxOSw1VjIxTDEyLDE4TDUsMjFWNUM1LDMuODkgNS45LDMgNywzSDE3TTExLDE0TDE3LjI1LDcuNzZMMTUuODQsNi4zNEwxMSwxMS4xOEw4LjQxLDguNTlMNywxMEwxMSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rbWFya0NoZWNrT3V0bGluZSA9IFwiTTkuNDcgOS42NUw4LjA2IDExLjA3TDExIDE0TDE2LjE5IDguODJMMTQuNzggNy40TDExIDExLjE4TTE3IDNIN0M1LjkgMyA1IDMuOSA1IDVMNSAyMUwxMiAxOEwxOSAyMVY1QzE5IDMuOSAxOC4xIDMgMTcgM00xNyAxOEwxMiAxNS44Mkw3IDE4VjVIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtNaW51cyA9IFwiTTE3LDNIN0EyLDIgMCAwLDAgNSw1VjIxTDEyLDE4TDE5LDIxVjVBMiwyIDAgMCwwIDE3LDNNMTUsMTFIOVY5SDE1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrTWludXNPdXRsaW5lID0gXCJNOSwxMVY5SDE1VjExSDlNMTksNVYyMUwxMiwxOEw1LDIxVjVDNSwzLjg5IDUuOSwzIDcsM0gxN0MxOC4xMSwzIDE5LDMuOSAxOSw1TTE3LDVIN1YxOEwxMiwxNS44MkwxNywxOFY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrTXVsdGlwbGUgPSBcIk0xNSw1QTIsMiAwIDAsMSAxNyw3VjIzTDEwLDIwTDMsMjNWN0MzLDUuODkgMy45LDUgNSw1SDE1TTksMUgxOUEyLDIgMCAwLDEgMjEsM1YxOUwxOSwxOC4xM1YzSDdBMiwyIDAgMCwxIDksMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rbWFya011bHRpcGxlT3V0bGluZSA9IFwiTTksMUgxOUEyLDIgMCAwLDEgMjEsM1YxOUwxOSwxOC4xM1YzSDdBMiwyIDAgMCwxIDksMU0xNSwyMFY3SDVWMjBMMTAsMTcuODJMMTUsMjBNMTUsNUMxNi4xMSw1IDE3LDUuOSAxNyw3VjIzTDEwLDIwTDMsMjNWN0EyLDIgMCAwLDEgNSw1SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrTXVzaWMgPSBcIk0xNywzQTIsMiAwIDAsMSAxOSw1VjIxTDEyLDE4TDUsMjFWNUM1LDMuODkgNS45LDMgNywzSDE3TTExLDExQTIsMiAwIDAsMCA5LDEzQTIsMiAwIDAsMCAxMSwxNUEyLDIgMCAwLDAgMTMsMTNWOEgxNlY2SDEyVjExLjI3QzExLjcxLDExLjEgMTEuMzYsMTEgMTEsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtNdXNpY091dGxpbmUgPSBcIk03IDNDNS45IDMgNSAzLjkgNSA1VjIxTDEyIDE4TDE5IDIxVjVDMTkgMy44OSAxOC4xIDMgMTcgM0g3TTcgNUgxN1YxOEwxMiAxNS44Mkw3IDE4VjVNMTIgNlYxMS4zQzExLjcgMTEuMSAxMS40IDExIDExIDExQzkuOSAxMSA5IDExLjkgOSAxM0M5IDE0LjExIDkuOSAxNSAxMSAxNUMxMi4xMSAxNSAxMyAxNC4xMSAxMyAxM1Y4SDE1VjZIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtPZmYgPSBcIk0yMCwyMC43MkwxOC43MywyMkwxNi43OCwyMC4wNUwxMiwxOEw1LDIxVjguMjdMMiw1LjI3TDMuMjgsNEwyMCwyMC43Mk0xOSwxNy4xNlY1QzE5LDMuODkgMTguMSwzIDE3LDNIN0M2LjQxLDMgNS44OSwzLjI3IDUuNSwzLjY4TDE5LDE3LjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrT2ZmT3V0bGluZSA9IFwiTTMuMjgsNEwyLDUuMjdMNSw4LjI3VjIxTDEyLDE4TDE2Ljc4LDIwLjA1TDE4LjczLDIyTDIwLDIwLjcyTDMuMjgsNE03LDE4VjEwLjI3TDEzLDE2LjI1TDEyLDE1LjgyTDcsMThNNyw1LjE2TDUuNSwzLjY3QzUuODgsMy4yNiA2LjQxLDMgNywzSDE3QTIsMiAwIDAsMSAxOSw1VjE3LjE2TDE3LDE1LjE2VjVIN1Y1LjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrT3V0bGluZSA9IFwiTTE3LDE4TDEyLDE1LjgyTDcsMThWNUgxN00xNywzSDdBMiwyIDAgMCwwIDUsNVYyMUwxMiwxOEwxOSwyMVY1QzE5LDMuODkgMTguMSwzIDE3LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtQbHVzID0gXCJNMTcsM0EyLDIgMCAwLDEgMTksNVYyMUwxMiwxOEw1LDIxVjVDNSwzLjg5IDUuOSwzIDcsM0gxN00xMSw3VjlIOVYxMUgxMVYxM0gxM1YxMUgxNVY5SDEzVjdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtQbHVzT3V0bGluZSA9IFwiTTE3LDE4VjVIN1YxOEwxMiwxNS44MkwxNywxOE0xNywzQTIsMiAwIDAsMSAxOSw1VjIxTDEyLDE4TDUsMjFWNUM1LDMuODkgNS45LDMgNywzSDE3TTExLDdIMTNWOUgxNVYxMUgxM1YxM0gxMVYxMUg5VjlIMTFWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rbWFya1JlbW92ZSA9IFwiTTE3LDNBMiwyIDAgMCwxIDE5LDVWMjFMMTIsMThMNSwyMVY1QzUsMy44OSA1LjksMyA3LDNIMTdNOC4xNyw4LjU4TDEwLjU5LDExTDguMTcsMTMuNDFMOS41OSwxNC44M0wxMiwxMi40MUwxNC40MSwxNC44M0wxNS44MywxMy40MUwxMy40MSwxMUwxNS44Myw4LjU4TDE0LjQxLDcuMTdMMTIsOS41OEw5LjU5LDcuMTdMOC4xNyw4LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrUmVtb3ZlT3V0bGluZSA9IFwiTTcgM0M1LjkgMyA1IDMuOSA1IDVWMjFMMTIgMThMMTkgMjFWNUMxOSAzLjg5IDE4LjEgMyAxNyAzSDdNNyA1SDE3VjE4TDEyIDE1LjgyTDcgMThWNU05Ljg4IDcuNDdMOC40NyA4Ljg4TDEwLjU5IDExTDguNDcgMTMuMTJMOS44OCAxNC41NEwxMiAxMi40MkwxNC4xMiAxNC41M0wxNS41NCAxMy4xMkwxMy40MiAxMUwxNS41MyA4Ljg4TDE0LjEyIDcuNDdMMTIgOS41OUw5Ljg4IDcuNDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va3NoZWxmID0gXCJNOSAzVjE4SDEyVjNIOU0xMiA1TDE2IDE4TDE5IDE3TDE1IDRMMTIgNU01IDVWMThIOFY1SDVNMyAxOVYyMUgyMVYxOUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb21HYXRlID0gXCJNMjAsOUg4LjIyQzcuMTEsNy43NyA1LjIxLDcuNjggNCw4LjhDMy4zNiw5LjM2IDMsMTAuMTYgMywxMVYyMEExLDEgMCAwLDAgMiwyMVYyMkgxMFYyMUExLDEgMCAwLDAgOSwyMFYxM0gyMEEyLDIgMCAwLDAgMjIsMTFBMiwyIDAgMCwwIDIwLDlNNiwxMi41QTEuNSwxLjUgMCAwLDEgNC41LDExQTEuNSwxLjUgMCAwLDEgNiw5LjVBMS41LDEuNSAwIDAsMSA3LjUsMTFBMS41LDEuNSAwIDAsMSA2LDEyLjVNMTAuNSwxMkw5LDEwSDEwLjVMMTIsMTJIMTAuNU0xNC41LDEyTDEzLDEwSDE0LjVMMTYsMTJIMTQuNU0xOC41LDEyTDE3LDEwSDE4LjVMMjAsMTJIMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29tR2F0ZUFsZXJ0ID0gXCJNMTkuOSAzQzE5LjMgMiAxOC4xIDEuNyAxNy4yIDIuM0w2LjkgOC4yQzYuNiA4LjEgNi4zIDggNiA4QzQuMyA4IDMgOS4zIDMgMTFWMjBDMi40IDIwIDIgMjAuNCAyIDIxVjIySDEwVjIxQzEwIDIwLjQgOS42IDIwIDkgMjBWMTEuNkwxOS4xIDUuOEMyMC4xIDUuMiAyMC40IDQgMTkuOSAzTTYgMTIuNUM1LjIgMTIuNSA0LjUgMTEuOCA0LjUgMTFTNS4yIDkuNSA2IDkuNSA3LjUgMTAuMiA3LjUgMTEgNi44IDEyLjUgNiAxMi41TTEwLjQgOS42TDguMSA4LjZMOS40IDcuOEwxMS43IDguOEwxMC40IDkuNk0xMy45IDcuNkwxMS42IDYuNkwxMi45IDUuOEwxNS4yIDYuOEwxMy45IDcuNk0xNy4zIDUuNkwxNSA0LjZMMTYuMyAzLjhMMTguNiA0LjhMMTcuMyA1LjZNMjAgMThIMThWMjBIMjBWMThNMjAgMTBIMThWMTZIMjBWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbUdhdGVBbGVydE91dGxpbmUgPSBcIk0xOS45IDNDMTkuMyAyIDE4LjEgMS43IDE3LjIgMi4zTDYuOSA4LjJDNi42IDguMSA2LjMgOCA2IDhDNC4zIDggMyA5LjMgMyAxMVYyMEMyLjQgMjAgMiAyMC40IDIgMjFWMjJIMTBWMjFDMTAgMjAuNCA5LjYgMjAgOSAyMFYxMS42TDE5LjEgNS44QzIwLjEgNS4yIDIwLjQgNCAxOS45IDNNNy41IDIwSDQuNVYxMy42QzUuNCAxNC4xIDYuNiAxNC4xIDcuNSAxMy42VjIwTTYgMTIuNUM1LjIgMTIuNSA0LjUgMTEuOCA0LjUgMTFTNS4yIDkuNSA2IDkuNSA3LjUgMTAuMiA3LjUgMTEgNi44IDEyLjUgNiAxMi41TTEwLjQgOS42TDguMSA4LjZMOS40IDcuOEwxMS43IDguOEwxMC40IDkuNk0xMy45IDcuNkwxMS42IDYuNkwxMi45IDUuOEwxNS4yIDYuOEwxMy45IDcuNk0xNy4zIDUuNkwxNSA0LjZMMTYuMyAzLjhMMTguNiA0LjhMMTcuMyA1LjZNMjAgMTZIMThWMTBIMjBWMTZNMjAgMjBIMThWMThIMjBWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbUdhdGVEb3duID0gXCJNMTkuODYsM0MxOS4zMSwyLjA0IDE4LjA5LDEuNzEgMTcuMTIsMi4yN0w2LjkyLDguMTZDNi42Miw4LjA2IDYuMzEsOCA2LDhBMywzIDAgMCwwIDMsMTFWMjBBMSwxIDAgMCwwIDIsMjFWMjJIMTBWMjFBMSwxIDAgMCwwIDksMjBWMTEuNThMMTkuMTIsNS43M0MyMC4wOCw1LjE4IDIwLjQxLDMuOTYgMTkuODYsM002LDEyLjVBMS41LDEuNSAwIDAsMSA0LjUsMTFBMS41LDEuNSAwIDAsMSA2LDkuNUExLjUsMS41IDAgMCwxIDcuNSwxMUExLjUsMS41IDAgMCwxIDYsMTIuNU0xMC40LDkuNjJMOC4xLDguNjJMOS40LDcuODdMMTEuNyw4Ljg3TDEwLjQsOS42Mk0xMy44Niw3LjYyTDExLjU2LDYuNjJMMTIuODYsNS44N0wxNS4xNiw2Ljg3TDEzLjg2LDcuNjJNMTcuMzMsNS42MkwxNS4wMyw0LjYyTDE2LjMzLDMuODdMMTguNjIsNC44N0wxNy4zMyw1LjYyTTE3LDIwTDEyLDE1SDE1VjExSDE5VjE1SDIyTDE3LDIwXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbUdhdGVEb3duT3V0bGluZSA9IFwiTTE5Ljg2LDNDMjAuNDEsMy45NiAyMC4wOCw1LjE4IDE5LjEyLDUuNzNMOSwxMS41OFYyMEExLDEgMCAwLDEgMTAsMjFWMjJIMlYyMUExLDEgMCAwLDEgMywyMFYxMUEzLDMgMCAwLDEgNiw4QzYuMzEsOCA2LjYyLDguMDYgNi45Miw4LjE2TDE3LjEyLDIuMjdDMTguMDksMS43MSAxOS4zMSwyLjA0IDE5Ljg2LDNNNy41LDIwVjEzLjZDNi41NywxNC4xNCA1LjQzLDE0LjE0IDQuNSwxMy42VjIwSDcuNU02LDEyLjVBMS41LDEuNSAwIDAsMCA3LjUsMTFBMS41LDEuNSAwIDAsMCA2LDkuNUExLjUsMS41IDAgMCwwIDQuNSwxMUExLjUsMS41IDAgMCwwIDYsMTIuNU0xMC40LDkuNjJMMTEuNyw4Ljg3TDkuNCw3Ljg3TDguMSw4LjYyTDEwLjQsOS42Mk0xMy44Niw3LjYyTDE1LjE2LDYuODdMMTIuODYsNS44N0wxMS41Niw2LjYyTDEzLjg2LDcuNjJNMTcuMzMsNS42MkwxOC42Miw0Ljg3TDE2LjMzLDMuODdMMTUuMDMsNC42MkwxNy4zMyw1LjYyTTE2LDExLjE2SDE4VjE2LjE3TDIxLDE2LjE2TDE3LDIwTDEzLDE2LjE2TDE2LDE2LjE3VjExLjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb21HYXRlT3V0bGluZSA9IFwiTTIwLDlIOC4yMkM3LjExLDcuNzcgNS4yMSw3LjY4IDQsOC44QzMuMzYsOS4zNiAzLDEwLjE2IDMsMTFWMjBBMSwxIDAgMCwwIDIsMjFWMjJIMTBWMjFBMSwxIDAgMCwwIDksMjBWMTNIMjBBMiwyIDAgMCwwIDIyLDExQTIsMiAwIDAsMCAyMCw5TTcuNSwyMEg0LjVWMTMuNkM1LjQzLDE0LjE0IDYuNTcsMTQuMTQgNy41LDEzLjZWMjBNNiwxMi41QTEuNSwxLjUgMCAwLDEgNC41LDExQTEuNSwxLjUgMCAwLDEgNiw5LjVBMS41LDEuNSAwIDAsMSA3LjUsMTFBMS41LDEuNSAwIDAsMSA2LDEyLjVNMTAuNSwxMkw5LDEwSDEwLjVMMTIsMTJIMTAuNU0xNC41LDEyTDEzLDEwSDE0LjVMMTYsMTJIMTQuNU0xOC41LDEyTDE3LDEwSDE4LjVMMjAsMTJIMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29tR2F0ZVVwID0gXCJNMTkuODYsM0MxOS4zMSwyLjA0IDE4LjA5LDEuNzEgMTcuMTIsMi4yN0w2LjkyLDguMTZDNi42Miw4LjA2IDYuMzEsOCA2LDhBMywzIDAgMCwwIDMsMTFWMjBBMSwxIDAgMCwwIDIsMjFWMjJIMTBWMjFBMSwxIDAgMCwwIDksMjBWMTEuNThMMTkuMTIsNS43M0MyMC4wOCw1LjE4IDIwLjQxLDMuOTYgMTkuODYsM002LDEyLjVBMS41LDEuNSAwIDAsMSA0LjUsMTFBMS41LDEuNSAwIDAsMSA2LDkuNUExLjUsMS41IDAgMCwxIDcuNSwxMUExLjUsMS41IDAgMCwxIDYsMTIuNU0xMC40LDkuNjJMOC4xLDguNjJMOS40LDcuODdMMTEuNyw4Ljg3TDEwLjQsOS42Mk0xMy44Niw3LjYyTDExLjU2LDYuNjJMMTIuODYsNS44N0wxNS4xNiw2Ljg3TDEzLjg2LDcuNjJNMTcuMzMsNS42MkwxNS4wMyw0LjYyTDE2LjMzLDMuODdMMTguNjIsNC44N0wxNy4zMyw1LjYyTTE3LDExTDIyLDE2SDE5VjIwSDE1VjE2SDEyTDE3LDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbUdhdGVVcE91dGxpbmUgPSBcIk0xOS44NiwzQzIwLjQxLDMuOTYgMjAuMDgsNS4xOCAxOS4xMiw1LjczTDksMTEuNThWMjBBMSwxIDAgMCwxIDEwLDIxVjIySDJWMjFBMSwxIDAgMCwxIDMsMjBWMTFBMywzIDAgMCwxIDYsOEM2LjMxLDggNi42Miw4LjA2IDYuOTIsOC4xNkwxNy4xMiwyLjI3QzE4LjA5LDEuNzEgMTkuMzEsMi4wNCAxOS44NiwzTTcuNSwyMFYxMy42QzYuNTcsMTQuMTQgNS40MywxNC4xNCA0LjUsMTMuNlYyMEg3LjVNNiwxMi41QTEuNSwxLjUgMCAwLDAgNy41LDExQTEuNSwxLjUgMCAwLDAgNiw5LjVBMS41LDEuNSAwIDAsMCA0LjUsMTFBMS41LDEuNSAwIDAsMCA2LDEyLjVNMTAuNCw5LjYyTDExLjcsOC44N0w5LjQsNy44N0w4LjEsOC42MkwxMC40LDkuNjJNMTMuODYsNy42MkwxNS4xNiw2Ljg3TDEyLjg2LDUuODdMMTEuNTYsNi42MkwxMy44Niw3LjYyTTE3LjMzLDUuNjJMMTguNjIsNC44N0wxNi4zMywzLjg3TDE1LjAzLDQuNjJMMTcuMzMsNS42Mk0xNiwyMFYxNUgxM0wxNywxMS4xNkwyMSwxNUgxOFYyMEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29tYm94ID0gXCJNNyw1TDUsN1Y4SDNBMSwxIDAgMCwwIDIsOVYxN0ExLDEgMCAwLDAgMywxOEgyMUExLDEgMCAwLDAgMjIsMTdWOUExLDEgMCAwLDAgMjEsOEgxOVY3TDE3LDVIN003LDdIMTdWOEg3VjdNMTEsOUgxM0EwLjUsMC41IDAgMCwxIDEzLjUsOS41QTAuNSwwLjUgMCAwLDEgMTMsMTBIMTFBMC41LDAuNSAwIDAsMSAxMC41LDkuNUEwLjUsMC41IDAgMCwxIDExLDlNNy41LDEwLjVBMywzIDAgMCwxIDEwLjUsMTMuNUEzLDMgMCAwLDEgNy41LDE2LjVBMywzIDAgMCwxIDQuNSwxMy41QTMsMyAwIDAsMSA3LjUsMTAuNU0xNi41LDEwLjVBMywzIDAgMCwxIDE5LjUsMTMuNUEzLDMgMCAwLDEgMTYuNSwxNi41QTMsMyAwIDAsMSAxMy41LDEzLjVBMywzIDAgMCwxIDE2LjUsMTAuNU03LjUsMTJBMS41LDEuNSAwIDAsMCA2LDEzLjVBMS41LDEuNSAwIDAsMCA3LjUsMTVBMS41LDEuNSAwIDAsMCA5LDEzLjVBMS41LDEuNSAwIDAsMCA3LjUsMTJNMTYuNSwxMkExLjUsMS41IDAgMCwwIDE1LDEzLjVBMS41LDEuNSAwIDAsMCAxNi41LDE1QTEuNSwxLjUgMCAwLDAgMTgsMTMuNUExLjUsMS41IDAgMCwwIDE2LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbWVyYW5nID0gXCJNMTAgMkg0QzIuOSAyIDIgMi45IDIgNFMyLjkgNiA0IDZIOEwxMCAyTTE4IDJDMjAuMiAyIDIyIDMuOCAyMiA2VjEyTDE4IDE0QzE4IDkuNiAxNC40IDYgMTAgNkwxMiAySDE4TTE4IDIwVjE2TDIyIDE0VjIwQzIyIDIxLjEgMjEuMSAyMiAyMCAyMlMxOCAyMS4xIDE4IDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb3RzdHJhcCA9IFwiTTExLjc5IDExLjVIOS43MlY4LjE5SDEyLjE5QzEzLjQ1IDguMTkgMTQuMTUgOC43NSAxNC4xNSA5Ljc4QzE0LjE1IDEwLjkgMTMuMzIgMTEuNSAxMS43OSAxMS41TTEyLjE2IDEyLjYzSDkuNzJWMTYuMjdMMTIuMjggMTYuMjdDMTMuODQgMTYuMjcgMTQuNjYgMTUuNjQgMTQuNjYgMTQuNDRTMTMuODEgMTIuNjMgMTIuMTYgMTIuNjNNMjIgNS4zMVYxOC42OUMyMiAyMC41IDIwLjUgMjIgMTguNjkgMjJINS4zMUMzLjUgMjIgMiAyMC41IDIgMTguNjlWNS4zMUMyIDMuNSAzLjUgMiA1LjMxIDJIMTguNjlDMjAuNSAyIDIyIDMuNSAyMiA1LjMxTTE2IDE0LjVDMTYgMTMuMTIgMTUuMDggMTIuMTMgMTMuNjcgMTEuOTVWMTEuODlDMTQuNjcgMTEuNzEgMTUuNDYgMTAuNzEgMTUuNDYgOS42M0MxNS40NiA4LjA4IDE0LjI2IDcuMDUgMTIuNSA3LjA1SDguNDNWMTcuNDFIMTIuNDdDMTQuNjggMTcuNDEgMTYgMTYuMzIgMTYgMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJBbGwgPSBcIk0xOSwxMUgxM1Y1SDE5TTE5LDE5SDEzVjEzSDE5TTExLDExSDVWNUgxMU0xMSwxOUg1VjEzSDExTTMsMjFIMjFWM0gzVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlckFsbFZhcmlhbnQgPSBcIk0zLDIxVjNIMjFWMjFIM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlckJvdHRvbSA9IFwiTTUsMTVIM1YxN0g1TTMsMjFIMjFWMTlIM001LDExSDNWMTNINU0xOSw5SDIxVjdIMTlNMTksNUgyMVYzSDE5TTUsN0gzVjlINU0xOSwxN0gyMVYxNUgxOU0xOSwxM0gyMVYxMUgxOU0xNywzSDE1VjVIMTdNMTMsM0gxMVY1SDEzTTE3LDExSDE1VjEzSDE3TTEzLDdIMTFWOUgxM001LDNIM1Y1SDVNMTMsMTFIMTFWMTNIMTNNOSwzSDdWNUg5TTEzLDE1SDExVjE3SDEzTTksMTFIN1YxM0g5VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlckJvdHRvbVZhcmlhbnQgPSBcIk01LDE1SDNWMTdINU0zLDIxSDIxVjE5SDNNNSwxMUgzVjEzSDVNMTksOUgyMVY3SDE5TTE5LDVIMjFWM0gxOU01LDdIM1Y5SDVNMTksMTdIMjFWMTVIMTlNMTksMTNIMjFWMTFIMTlNMTcsM0gxNVY1SDE3TTEzLDNIMTFWNUgxM001LDNIM1Y1SDVNOSwzSDdWNUg5XCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVyQ29sb3IgPSBcIk0yMC43MSw0LjA0QzIxLjEsMy42NSAyMS4xLDMgMjAuNzEsMi42M0wxOC4zNywwLjI5QzE4LC0wLjEgMTcuMzUsLTAuMSAxNi45NiwwLjI5TDE1LDIuMjVMMTguNzUsNk0xNy43NSw3TDE0LDMuMjVMNCwxMy4yNVYxN0g3Ljc1TDE3Ljc1LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVySG9yaXpvbnRhbCA9IFwiTTE5LDIxSDIxVjE5SDE5TTE1LDIxSDE3VjE5SDE1TTExLDE3SDEzVjE1SDExTTE5LDlIMjFWN0gxOU0xOSw1SDIxVjNIMTlNMywxM0gyMVYxMUgzTTExLDIxSDEzVjE5SDExTTE5LDE3SDIxVjE1SDE5TTEzLDNIMTFWNUgxM00xMyw3SDExVjlIMTNNMTcsM0gxNVY1SDE3TTksM0g3VjVIOU01LDNIM1Y1SDVNNywyMUg5VjE5SDdNMywxN0g1VjE1SDNNNSw3SDNWOUg1TTMsMjFINVYxOUgzVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlckluc2lkZSA9IFwiTTE5LDE3SDIxVjE1SDE5TTE5LDIxSDIxVjE5SDE5TTEzLDNIMTFWMTFIM1YxM0gxMVYyMUgxM1YxM0gyMVYxMUgxM00xNSwyMUgxN1YxOUgxNU0xOSw1SDIxVjNIMTlNMTksOUgyMVY3SDE5TTE3LDNIMTVWNUgxN001LDNIM1Y1SDVNOSwzSDdWNUg5TTMsMTdINVYxNUgzTTUsN0gzVjlINU03LDIxSDlWMTlIN00zLDIxSDVWMTlIM1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJMZWZ0ID0gXCJNMTUsNUgxN1YzSDE1TTE1LDEzSDE3VjExSDE1TTE5LDIxSDIxVjE5SDE5TTE5LDEzSDIxVjExSDE5TTE5LDVIMjFWM0gxOU0xOSwxN0gyMVYxNUgxOU0xNSwyMUgxN1YxOUgxNU0xOSw5SDIxVjdIMTlNMywyMUg1VjNIM003LDEzSDlWMTFIN003LDVIOVYzSDdNNywyMUg5VjE5SDdNMTEsMTNIMTNWMTFIMTFNMTEsOUgxM1Y3SDExTTExLDVIMTNWM0gxMU0xMSwxN0gxM1YxNUgxMU0xMSwyMUgxM1YxOUgxMVYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJMZWZ0VmFyaWFudCA9IFwiTTE1LDVIMTdWM0gxNU0xOSwyMUgyMVYxOUgxOU0xOSwxM0gyMVYxMUgxOU0xOSw1SDIxVjNIMTlNMTksMTdIMjFWMTVIMTlNMTUsMjFIMTdWMTlIMTVNMTksOUgyMVY3SDE5TTMsMjFINVYzSDNNNyw1SDlWM0g3TTcsMjFIOVYxOUg3TTExLDVIMTNWM0gxMU0xMSwyMUgxM1YxOUgxMVYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJOb25lID0gXCJNMTUsNUgxN1YzSDE1TTE1LDEzSDE3VjExSDE1TTE1LDIxSDE3VjE5SDE1TTExLDVIMTNWM0gxMU0xOSw1SDIxVjNIMTlNMTEsOUgxM1Y3SDExTTE5LDlIMjFWN0gxOU0xOSwyMUgyMVYxOUgxOU0xOSwxM0gyMVYxMUgxOU0xOSwxN0gyMVYxNUgxOU0xMSwxM0gxM1YxMUgxMU0zLDVINVYzSDNNMyw5SDVWN0gzTTMsMTNINVYxMUgzTTMsMTdINVYxNUgzTTMsMjFINVYxOUgzTTExLDIxSDEzVjE5SDExTTExLDE3SDEzVjE1SDExTTcsMjFIOVYxOUg3TTcsMTNIOVYxMUg3TTcsNUg5VjNIN1Y1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlck5vbmVWYXJpYW50ID0gXCJNMTUsNUgxN1YzSDE1TTE1LDIxSDE3VjE5SDE1TTExLDVIMTNWM0gxMU0xOSw1SDIxVjNIMTlNMTksOUgyMVY3SDE5TTE5LDIxSDIxVjE5SDE5TTE5LDEzSDIxVjExSDE5TTE5LDE3SDIxVjE1SDE5TTMsNUg1VjNIM00zLDlINVY3SDNNMywxM0g1VjExSDNNMywxN0g1VjE1SDNNMywyMUg1VjE5SDNNMTEsMjFIMTNWMTlIMTFNNywyMUg5VjE5SDdNNyw1SDlWM0g3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVyT3V0c2lkZSA9IFwiTTksMTFIN1YxM0g5TTEzLDE1SDExVjE3SDEzTTE5LDE5SDVWNUgxOU0zLDIxSDIxVjNIM00xNywxMUgxNVYxM0gxN00xMywxMUgxMVYxM0gxM00xMyw3SDExVjlIMTNWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJSaWdodCA9IFwiTTExLDlIMTNWN0gxMU0xMSw1SDEzVjNIMTFNMTEsMTNIMTNWMTFIMTFNMTUsNUgxN1YzSDE1TTE1LDIxSDE3VjE5SDE1TTE5LDIxSDIxVjNIMTlNMTUsMTNIMTdWMTFIMTVNMTEsMTdIMTNWMTVIMTFNMyw5SDVWN0gzTTMsMTdINVYxNUgzTTMsMTNINVYxMUgzTTExLDIxSDEzVjE5SDExTTMsMjFINVYxOUgzTTcsMTNIOVYxMUg3TTcsNUg5VjNIN00zLDVINVYzSDNNNywyMUg5VjE5SDdWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVyUmlnaHRWYXJpYW50ID0gXCJNMTEsNUgxM1YzSDExTTE1LDVIMTdWM0gxNU0xNSwyMUgxN1YxOUgxNU0xOSwyMUgyMVYzSDE5TTMsOUg1VjdIM00zLDE3SDVWMTVIM00zLDEzSDVWMTFIM00xMSwyMUgxM1YxOUgxMU0zLDIxSDVWMTlIM003LDVIOVYzSDdNMyw1SDVWM0gzTTcsMjFIOVYxOUg3VjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlclN0eWxlID0gXCJNMTUsMjFIMTdWMTlIMTVNMTksMjFIMjFWMTlIMTlNNywyMUg5VjE5SDdNMTEsMjFIMTNWMTlIMTFNMTksMTdIMjFWMTVIMTlNMTksMTNIMjFWMTFIMTlNMywzVjIxSDVWNUgyMVYzTTE5LDlIMjFWN0gxOVwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlclRvcCA9IFwiTTE1LDEzSDE3VjExSDE1TTE5LDIxSDIxVjE5SDE5TTExLDlIMTNWN0gxMU0xNSwyMUgxN1YxOUgxNU0xOSwxN0gyMVYxNUgxOU0zLDVIMjFWM0gzTTE5LDEzSDIxVjExSDE5TTE5LDlIMjFWN0gxOU0xMSwxN0gxM1YxNUgxMU0zLDlINVY3SDNNMywxM0g1VjExSDNNMywyMUg1VjE5SDNNMywxN0g1VjE1SDNNMTEsMjFIMTNWMTlIMTFNMTEsMTNIMTNWMTFIMTFNNywxM0g5VjExSDdNNywyMUg5VjE5SDdWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVyVG9wVmFyaWFudCA9IFwiTTE5LDIxSDIxVjE5SDE5TTE1LDIxSDE3VjE5SDE1TTE5LDE3SDIxVjE1SDE5TTMsNUgyMVYzSDNNMTksMTNIMjFWMTFIMTlNMTksOUgyMVY3SDE5TTMsOUg1VjdIM00zLDEzSDVWMTFIM00zLDIxSDVWMTlIM00zLDE3SDVWMTVIM00xMSwyMUgxM1YxOUgxMU03LDIxSDlWMTlIN1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJWZXJ0aWNhbCA9IFwiTTE1LDEzSDE3VjExSDE1TTE1LDIxSDE3VjE5SDE1TTE1LDVIMTdWM0gxNU0xOSw5SDIxVjdIMTlNMTksNUgyMVYzSDE5TTE5LDEzSDIxVjExSDE5TTE5LDIxSDIxVjE5SDE5TTExLDIxSDEzVjNIMTFNMTksMTdIMjFWMTVIMTlNNyw1SDlWM0g3TTMsMTdINVYxNUgzTTMsMjFINVYxOUgzTTMsMTNINVYxMUgzTTcsMTNIOVYxMUg3TTcsMjFIOVYxOUg3TTMsNUg1VjNIM00zLDlINVY3SDNWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVTb2RhID0gXCJNMTUgMTFWMjBBMiAyIDAgMCAxIDEzIDIySDExQTIgMiAwIDAgMSA5IDIwVjExQTIgMiAwIDAgMSA5LjYgOS41OEMxMS4xIDcuODkgMTEgNCAxMSA0SDEwVjJIMTRWNEgxM1MxMi45IDcuODkgMTQuNCA5LjU4QTIgMiAwIDAgMSAxNSAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVTb2RhQ2xhc3NpYyA9IFwiTTE1IDEzLjc3QTMgMyAwIDAgMCAxNSAxOC4yM1YyMEEyIDIgMCAwIDEgMTMgMjJIMTFBMiAyIDAgMCAxIDkgMjBWMTguMjNBMyAzIDAgMCAwIDkgMTMuNzdWOUExMi4yOCAxMi4yOCAwIDAgMCAxMC45MSA0SDEwVjJIMTRWNEgxMy4wOUExMi4yOCAxMi4yOCAwIDAgMCAxNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVNvZGFDbGFzc2ljT3V0bGluZSA9IFwiTTEwIDJWNEgxMC45MUMxMC42NSA1Ljc5IDkgNy41IDggOVYxMy43N0M5LjMyIDE0Ljk2IDkuMzIgMTcuMDQgOCAxOC4yM1YyMEM4IDIxLjExIDguOSAyMiAxMCAyMkgxNEMxNS4xMSAyMiAxNiAyMS4xMSAxNiAyMFYxOC4yM0MxNC42OCAxNy4wNCAxNC42OCAxNC45NiAxNiAxMy43N1Y5QzE1IDcuNSAxMy4zNSA1Ljc5IDEzLjA5IDRIMTRWMk0xMiA2LjVDMTIuMjQgNyAxMy41NCA4LjUgMTMuOSA4LjkxTDE0IDlWMTNDMTMuMzUgMTMuODcgMTMgMTQuOTIgMTMgMTZDMTMgMTcuMDggMTMuMzUgMTguMTMgMTQgMTlWMjBIMTBWMTlDMTAuNjUgMTguMTMgMTEgMTcuMDggMTEgMTZDMTEgMTQuOTIgMTAuNjUgMTMuODcgMTAgMTNWOUwxMC4xIDguOTFDMTAuNDYgOC41IDExLjc2IDcgMTIgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVNvZGFPdXRsaW5lID0gXCJNMTQuNCA5LjU4QzEyLjkgNy44OSAxMyA0IDEzIDRIMTRWMkgxMFY0SDExUzExLjEgNy44OSA5LjYgOS41OEEyIDIgMCAwIDAgOSAxMVYyMEEyIDIgMCAwIDAgMTEgMjJIMTNBMiAyIDAgMCAwIDE1IDIwVjExQTIgMiAwIDAgMCAxNC40IDkuNThNMTMgMjBIMTFWMTFMMTEuMSAxMC45MUE2LjI2IDYuMjYgMCAwIDAgMTIgOS41QTYuMjYgNi4yNiAwIDAgMCAxMi45IDEwLjkxTDEzIDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVRvbmljID0gXCJNMTMgNEgxMUwxMCAySDE0TDEzIDRNMTkgMTNWMjJINVYxM0M1IDEwLjI0IDcuMjQgOCAxMCA4VjZIOVY1SDE1VjZIMTRWOEMxNi43NiA4IDE5IDEwLjI0IDE5IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVRvbmljT3V0bGluZSA9IFwiTTEzIDRIMTFMMTAgMkgxNEwxMyA0TTE5IDEzVjIySDVWMTNDNSAxMC4yNCA3LjI0IDggMTAgOFY2SDlWNUgxNVY2SDE0VjhDMTYuNzYgOCAxOSAxMC4yNCAxOSAxM00xNyAxM0MxNyAxMS4zNSAxNS42NSAxMCAxNCAxMEgxMEM4LjM1IDEwIDcgMTEuMzUgNyAxM1YyMEgxN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVUb25pY1BsdXMgPSBcIk0xMyA0SDExTDEwIDJIMTRMMTMgNE0xNCA4VjZIMTVWNUg5VjZIMTBWOEM3LjI0IDggNSAxMC4yNCA1IDEzVjIySDE5VjEzQzE5IDEwLjI0IDE2Ljc2IDggMTQgOE0xNiAxN0gxM1YyMEgxMVYxN0g4VjE1SDExVjEySDEzVjE1SDE2VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVRvbmljUGx1c091dGxpbmUgPSBcIk0xMyA0SDExTDEwIDJIMTRMMTMgNE0xOSAxM1YyMkg1VjEzQzUgMTAuMjQgNy4yNCA4IDEwIDhWNkg5VjVIMTVWNkgxNFY4QzE2Ljc2IDggMTkgMTAuMjQgMTkgMTNNMTcgMTNDMTcgMTEuMzUgMTUuNjUgMTAgMTQgMTBIMTBDOC4zNSAxMCA3IDExLjM1IDcgMTNWMjBIMTdWMTNNMTUgMTZIMTNWMThIMTFWMTZIOVYxNEgxMVYxMkgxM1YxNEgxNVYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVUb25pY1NrdWxsID0gXCJNMTkgMTNWMjJINVYxM0M1IDEwLjI0IDcuMjQgOCAxMCA4VjZIOVY1SDE1VjZIMTRWOEMxNi43NiA4IDE5IDEwLjI0IDE5IDEzTTEzIDRMMTQgMkgxMEwxMSA0SDEzTTEyIDExQzkuNzkgMTEgOCAxMi43OSA4IDE1QzggMTYgOC4zOSAxNi45IDkgMTcuNTlWMTlIMTAuMjVWMTcuNUgxMS4zOFYxOUgxMi42M1YxNy41SDEzLjc1VjE5SDE1VjE3LjU5QzE1LjYxIDE2LjkgMTYgMTYgMTYgMTVDMTYgMTIuNzkgMTQuMjEgMTEgMTIgMTFNMTAuNSAxNUM5Ljk1IDE1IDkuNSAxNC41NSA5LjUgMTRTOS45NSAxMyAxMC41IDEzIDExLjUgMTMuNDUgMTEuNSAxNCAxMS4wNSAxNSAxMC41IDE1TTExLjI1IDE2LjI1TDEyIDE1TDEyLjc1IDE2LjI1SDExLjI1TTEzLjUgMTVDMTIuOTUgMTUgMTIuNSAxNC41NSAxMi41IDE0UzEyLjk1IDEzIDEzLjUgMTMgMTQuNSAxMy40NSAxNC41IDE0IDE0LjA1IDE1IDEzLjUgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm90dGxlVG9uaWNTa3VsbE91dGxpbmUgPSBcIk0xMyA0SDExTDEwIDJIMTRMMTMgNE0xNCA4VjZIMTVWNUg5VjZIMTBWOEM3LjI0IDggNSAxMC4yNCA1IDEzVjIySDE5VjEzQzE5IDEwLjI0IDE2Ljc2IDggMTQgOE0xNyAyMEg3VjEzQzcgMTEuMzUgOC4zNSAxMCAxMCAxMEgxNEMxNS42NSAxMCAxNyAxMS4zNSAxNyAxM1YyME0xMiAxMUM5Ljc5IDExIDggMTIuNzkgOCAxNUM4IDE2IDguMzkgMTYuOSA5IDE3LjU5VjE5SDEwLjI1VjE3LjVIMTEuMzhWMTlIMTIuNjNWMTcuNUgxMy43NVYxOUgxNVYxNy41OUMxNS42MSAxNi45IDE2IDE2IDE2IDE1QzE2IDEyLjc5IDE0LjIxIDExIDEyIDExTTEwLjUgMTVDOS45NSAxNSA5LjUgMTQuNTUgOS41IDE0UzkuOTUgMTMgMTAuNSAxMyAxMS41IDEzLjQ1IDExLjUgMTQgMTEuMDUgMTUgMTAuNSAxNU0xMS4yNSAxNi4yNUwxMiAxNUwxMi43NSAxNi4yNUgxMS4yNU0xMy41IDE1QzEyLjk1IDE1IDEyLjUgMTQuNTUgMTIuNSAxNFMxMi45NSAxMyAxMy41IDEzIDE0LjUgMTMuNDUgMTQuNSAxNCAxNC4wNSAxNSAxMy41IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVdpbmUgPSBcIk0xMCwyMkExLDEgMCAwLDEgOSwyMVYxMUM5LDkgMTAsNy4yNSAxMSw3VjIuNUEwLjUsMC41IDAgMCwxIDExLjUsMkgxMi41QTAuNSwwLjUgMCAwLDEgMTMsMi41VjdDMTQsNy4yNSAxNSw5IDE1LDExVjIxQTEsMSAwIDAsMSAxNCwyMkgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVXaW5lT3V0bGluZSA9IFwiTTExLjUgMkMxMS4yMiAyIDExIDIuMjIgMTEgMi41VjdDMTAuOTMgNyAxMC44NSA3IDEwLjc4IDcuMDNDOS44MiA3LjI3IDkuMjEgOCA4Ljc2IDguODlDOC4zIDkuNzYgOCAxMC44NCA4IDEyQzguMDUgMTUgOCAxOC4wMyA4IDIxQzggMjEuNTUgOC40NSAyMiA5IDIyQzExIDIyIDEzIDIyIDE1IDIyQzE1LjU1IDIyIDE2IDIxLjU1IDE2IDIxQzE2LjA0IDE4IDE2IDE1IDE2IDEyQzE2IDEwLjg0IDE1Ljc0IDkuNzYgMTUuMjggOC44OEMxNC44MyA4IDE0LjIyIDcuMjcgMTMuMjYgNy4wNEMxMy4xOCA3IDEzLjA1IDcgMTMgN1YyLjVDMTMgMi4yMiAxMi43OCAyIDEyLjUgMk0xMiA4Ljg1QzEyLjMyIDguODUgMTIuNjMgOC45IDEyLjc4IDlDMTIuODUgOS4wMyAxMy4yIDkuMjYgMTMuNSA5LjgxQzEzLjc4IDEwLjM3IDE0IDExLjE3IDE0IDEyVjIwSDEwVjEyQzEwIDExLjE3IDEwLjIyIDEwLjM3IDEwLjUgOS44MUMxMC44IDkuMjYgMTEuMTUgOS4wMyAxMS4yMiA5QzExLjM2IDguOSAxMS42OCA4Ljg1IDEyIDguODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm93VGllID0gXCJNMTUsMTRMMjEsMTdWN0wxNSwxMFYxNE05LDE0TDMsMTdWN0w5LDEwVjE0TTEwLDEwSDE0VjE0SDEwVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvd2wgPSBcIk0yMiAxNUMyMiAxOC45IDE4LjkgMjIgMTUgMjJIOUM1LjEgMjIgMiAxOC45IDIgMTVWMTJIMjJWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm93bE1peCA9IFwiTTE2LjIgMTFMMjAuMyA0LjVMMjIgNS41TDE4LjYgMTFIMTYuMk0xNS42IDEySDJWMTVDMiAxOC45IDUuMSAyMiA5IDIySDE1QzE4LjkgMjIgMjIgMTguOSAyMiAxNVYxMkgxNS42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvd2xNaXhPdXRsaW5lID0gXCJNMTUuNiAxMkgyVjE1QzIgMTguOSA1LjEgMjIgOSAyMkgxNUMxOC45IDIyIDIyIDE4LjkgMjIgMTVWMTJIMTUuNk0yMCAxNUMyMCAxNy44IDE3LjggMjAgMTUgMjBIOUM2LjIgMjAgNCAxNy44IDQgMTVWMTRIMjBWMTVNMTYuMiAxMUwyMC4zIDQuNEwyMiA1LjVMMTguNiAxMUgxNi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvd2xPdXRsaW5lID0gXCJNMiAxMlYxNUMyIDE4LjkgNS4xIDIyIDkgMjJIMTVDMTguOSAyMiAyMiAxOC45IDIyIDE1VjEySDJNNCAxNEgyMFYxNUMyMCAxNy44IDE3LjggMjAgMTUgMjBIOUM2LjIgMjAgNCAxNy44IDQgMTVWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm93bGluZyA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLjUsMTFBMS41LDEuNSAwIDAsMCAxMSwxMi41QTEuNSwxLjUgMCAwLDAgMTIuNSwxNEExLjUsMS41IDAgMCwwIDE0LDEyLjVBMS41LDEuNSAwIDAsMCAxMi41LDExTTEyLDVBMiwyIDAgMCwwIDEwLDdBMiwyIDAgMCwwIDEyLDlBMiwyIDAgMCwwIDE0LDdBMiwyIDAgMCwwIDEyLDVNNS45Myw4LjVDNS4zOCw5LjQ1IDUuNzEsMTAuNjcgNi42NiwxMS4yMkM3LjYyLDExLjc4IDguODQsMTEuNDUgOS40LDEwLjVDOS45NSw5LjUzIDkuNjIsOC4zMSA4LjY2LDcuNzZDNy43MSw3LjIxIDYuNSw3LjUzIDUuOTMsOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJveCA9IFwiTTE1LjM5LDE0LjA0VjE0LjA0QzE1LjM5LDEyLjYyIDE0LjI0LDExLjQ3IDEyLjgyLDExLjQ3QzExLjQxLDExLjQ3IDEwLjI2LDEyLjYyIDEwLjI2LDE0LjA0VjE0LjA0QzEwLjI2LDE1LjQ1IDExLjQxLDE2LjYgMTIuODIsMTYuNkMxNC4yNCwxNi42IDE1LjM5LDE1LjQ1IDE1LjM5LDE0LjA0TTE3LjEsMTQuMDRDMTcuMSwxNi40IDE1LjE4LDE4LjMxIDEyLjgyLDE4LjMxQzExLjE5LDE4LjMxIDkuNzcsMTcuMzkgOS4wNSwxNi4wNEM4LjMzLDE3LjM5IDYuOTEsMTguMzEgNS4yOCwxOC4zMUMyLjk0LDE4LjMxIDEuMDQsMTYuNDMgMSwxNC4xMVYxNC4xMUgxVjdIMVY3QzEsNi41NiAxLjM5LDYuMTggMS44Niw2LjE4QzIuMzMsNi4xOCAyLjcsNi41NiAyLjcxLDdWN0gyLjcxVjEwLjYyQzMuNDMsMTAuMDggNC4zMiw5Ljc2IDUuMjgsOS43NkM2LjkxLDkuNzYgOC4zMywxMC42OCA5LjA1LDEyLjAzQzkuNzcsMTAuNjggMTEuMTksOS43NiAxMi44Miw5Ljc2QzE1LjE4LDkuNzYgMTcuMSwxMS42OCAxNy4xLDE0LjA0VjE0LjA0TTcuODQsMTQuMDRWMTQuMDRDNy44NCwxMi42MiA2LjY5LDExLjQ3IDUuMjgsMTEuNDdDMy44NiwxMS40NyAyLjcxLDEyLjYyIDIuNzEsMTQuMDRWMTQuMDRDMi43MSwxNS40NSAzLjg2LDE2LjYgNS4yOCwxNi42QzYuNjksMTYuNiA3Ljg0LDE1LjQ1IDcuODQsMTQuMDRNMjIuODQsMTYuOTZWMTYuOTZDMjIuOTUsMTcuMTIgMjMsMTcuMyAyMywxNy40N0MyMywxNy43MyAyMi44OCwxOCAyMi42NiwxOC4xNUMyMi41LDE4LjI2IDIyLjMzLDE4LjMyIDIyLjE1LDE4LjMyQzIxLjksMTguMzIgMjEuNjUsMTguMjEgMjEuNSwxOEwxOS41OSwxNS40N0wxNy43LDE4VjE4QzE3LjUzLDE4LjIxIDE3LjI4LDE4LjMyIDE3LjAzLDE4LjMyQzE2Ljg1LDE4LjMyIDE2LjY3LDE4LjI2IDE2LjUsMTguMTVDMTYuMjksMTggMTYuMTcsMTcuNzIgMTYuMTcsMTcuNDZDMTYuMTcsMTcuMjkgMTYuMjMsMTcuMTEgMTYuMzMsMTYuOTZWMTYuOTZIMTYuMzNWMTYuOTZMMTguNSwxNC4wNEwxNi4zMywxMS4xMVYxMS4xMUgxNi4zM1YxMS4xMUMxNi4yMiwxMC45NiAxNi4xNywxMC43OSAxNi4xNywxMC42MUMxNi4xNywxMC4zNSAxNi4yOSwxMC4xIDE2LjUsOS45M0MxNi44OSw5LjY1IDE3LjQxLDkuNzIgMTcuNywxMC4wOVYxMC4wOUwxOS41OSwxMi42MUwyMS41LDEwLjA5QzIxLjc2LDkuNzIgMjIuMjksOS42NSAyMi42Niw5LjkzQzIyLjg5LDEwLjEgMjMsMTAuMzYgMjMsMTAuNjNDMjMsMTAuOCAyMi45NSwxMC45NyAyMi44NCwxMS4xMVYxMS4xMUgyMi44NFYxMS4xMUwyMC42NiwxNC4wNEwyMi44NCwxNi45NlYxNi45NkgyMi44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3hDdXR0ZXIgPSBcIk03LjIyLDExLjkxQzYuODksMTIuMjQgNi43MSwxMi42NSA2LjY2LDEzLjA4TDEyLjE3LDE1LjQ0TDIwLjY2LDYuOTZDMjEuNDQsNi4xNyAyMS40NCw0LjkxIDIwLjY2LDQuMTNMMTkuMjQsMi43MUMxOC40NiwxLjkzIDE3LjIsMS45MyAxNi40MSwyLjcxTDcuMjIsMTEuOTFNNSwxNlYyMS43NUwxMC44MSwxNi41M0w1LjgxLDE0LjUzTDUsMTZNMTcuMTIsNC44M0MxNy41LDQuNDQgMTguMTUsNC40NCAxOC41NCw0LjgzQzE4LjkzLDUuMjMgMTguOTMsNS44NiAxOC41NCw2LjI1QzE4LjE1LDYuNjQgMTcuNSw2LjY0IDE3LjEyLDYuMjVDMTYuNzMsNS44NiAxNi43Myw1LjIzIDE3LjEyLDQuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm94Q3V0dGVyT2ZmID0gXCJNMjAuODQgMjIuNzNMMTIuODYgMTQuNzVMMTIuMTcgMTUuNDRMNi42NiAxMy4wOEM2LjcxIDEyLjY1IDYuODkgMTIuMjQgNy4yMiAxMS45MUw4LjYyIDEwLjVMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xNS40MSAxMi4yMUwxMS4xNiA3Ljk2TDE2LjQxIDIuNzFDMTcuMiAxLjkzIDE4LjQ2IDEuOTMgMTkuMjQgMi43MUwyMC42NiA0LjEzQzIxLjQ0IDQuOTEgMjEuNDQgNi4xNyAyMC42NiA2Ljk2TDE1LjQxIDEyLjIxTTE3LjEyIDYuMjVDMTcuNSA2LjY0IDE4LjE1IDYuNjQgMTguNTQgNi4yNUMxOC45MyA1Ljg2IDE4LjkzIDUuMjMgMTguNTQgNC44M0MxOC4xNSA0LjQ0IDE3LjUgNC40NCAxNy4xMiA0LjgzQzE2LjczIDUuMjMgMTYuNzMgNS44NiAxNy4xMiA2LjI1TTUgMTZWMjEuNzVMMTAuODEgMTYuNTNMNS44MSAxNC41M0w1IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJveFNoYWRvdyA9IFwiTTMsM0gxOFYxOEgzVjNNMTksMTlIMjFWMjFIMTlWMTlNMTksMTZIMjFWMThIMTlWMTZNMTksMTNIMjFWMTVIMTlWMTNNMTksMTBIMjFWMTJIMTlWMTBNMTksN0gyMVY5SDE5VjdNMTYsMTlIMThWMjFIMTZWMTlNMTMsMTlIMTVWMjFIMTNWMTlNMTAsMTlIMTJWMjFIMTBWMTlNNywxOUg5VjIxSDdWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm94aW5nR2xvdmUgPSBcIk0xOSwxNlY2SDIyVjE2SDE5TTEyLDRDOCw0IDcsNCA3LDRDNyw0IDIsNCAyLDhWMTRDMiwxNS43NyAzLDE2Ljc2IDQuMDcsMTcuMzFDNC40LDE1LjQzIDYuMDMsMTQgOCwxNEgxMVYxNkg4QTIsMiAwIDAsMCA2LDE4QzYsMTkuMTEgNi45LDIwIDgsMjBIMTNDMTcsMjAgMTcsMTYgMTcsMTZWNkMxNyw2IDE2LDQgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmFpbGxlID0gXCJNNyw4QTEsMSAwIDAsMSA4LDdBMSwxIDAgMCwxIDksOFYxMi40N0wxMC4yMSwxMi42TDE1LjE1LDE0Ljc5QzE1LjY3LDE1LjAzIDE2LDE1LjU2IDE2LDE2LjE0VjIwLjVDMTUuOTcsMjEuMzIgMTUuMzIsMjEuOTcgMTQuNSwyMkg4QzcuNjIsMjIgNy4yNiwyMS44NSA3LDIxLjU3TDIuMSwxNy4zN0wyLjg0LDE2LjZDMy4wMywxNi4zOSAzLjMsMTYuMjggMy41OCwxNi4yOEgzLjhMNywxOFY4TTE5LjUsMkExLjUsMS41IDAgMCwwIDE4LDMuNUExLjUsMS41IDAgMCwwIDE5LjUsNUExLjUsMS41IDAgMCwwIDIxLDMuNUExLjUsMS41IDAgMCwwIDE5LjUsMk0xOS41LDdBMS41LDEuNSAwIDAsMCAxOCw4LjVBMS41LDEuNSAwIDAsMCAxOS41LDEwQTEuNSwxLjUgMCAwLDAgMjEsOC41QTEuNSwxLjUgMCAwLDAgMTkuNSw3TTE0LjUsN0ExLjUsMS41IDAgMCwwIDEzLDguNUExLjUsMS41IDAgMCwwIDE0LjUsMTBBMS41LDEuNSAwIDAsMCAxNiw4LjVBMS41LDEuNSAwIDAsMCAxNC41LDdNMTkuNSwxMkExLjUsMS41IDAgMCwwIDE4LDEzLjVBMS41LDEuNSAwIDAsMCAxOS41LDE1QTEuNSwxLjUgMCAwLDAgMjEsMTMuNUExLjUsMS41IDAgMCwwIDE5LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJhaW4gPSBcIk0yMS4zMywxMi45MUMyMS40MiwxNC40NiAyMC43MSwxNS45NSAxOS40NCwxNi44NkwyMC4yMSwxOC4zNUMyMC40NCwxOC44IDIwLjQ3LDE5LjMzIDIwLjI3LDE5LjhDMjAuMDgsMjAuMjcgMTkuNjksMjAuNjQgMTkuMjEsMjAuOEwxOC40MiwyMS4wNUMxOC4yNSwyMS4xMSAxOC4wNiwyMS4xNCAxNy44OCwyMS4xNEMxNy4zNywyMS4xNCAxNi44OSwyMC45MSAxNi41NiwyMC41TDE0LjQ0LDE4QzEzLjU1LDE3Ljg1IDEyLjcxLDE3LjQ3IDEyLDE2LjlDMTEuNSwxNy4wNSAxMSwxNy4xMyAxMC41LDE3LjEzQzkuNjIsMTcuMTMgOC43NCwxNi44NiA4LDE2LjM0QzcuNDcsMTYuNSA2LjkzLDE2LjU3IDYuMzgsMTYuNTZDNS41OSwxNi41NyA0LjgxLDE2LjQxIDQuMDgsMTYuMTFDMi42NSwxNS40NyAxLjcsMTQuMDcgMS42NSwxMi41QzEuNTcsMTEuNzggMS42OSwxMS4wNSAyLDEwLjM5QzEuNzEsOS42NCAxLjY4LDguODIgMS45Myw4LjA2QzIuMyw3LjExIDMsNi4zMiAzLjg3LDUuODJDNC40NSw0LjEzIDYuMDgsMyA3Ljg3LDMuMTJDOS40NywxLjYyIDExLjkyLDEuNDYgMTMuNywyLjc1QzE0LjEyLDIuNjQgMTQuNTYsMi41OCAxNSwyLjU4QzE2LjM2LDIuNTUgMTcuNjUsMy4xNSAxOC41LDQuMjJDMjAuNTQsNC43NSAyMiw2LjU3IDIyLjA4LDguNjlDMjIuMTMsOS44IDIxLjgzLDEwLjg5IDIxLjIyLDExLjgyQzIxLjI5LDEyLjE4IDIxLjMzLDEyLjU0IDIxLjMzLDEyLjkxTTE2LjMzLDExLjVDMTYuOSwxMS41NyAxNy4zNSwxMiAxNy4zNSwxMi41N0ExLDEgMCAwLDEgMTYuMzUsMTMuNTdIMTUuNzJDMTUuNCwxNC40NyAxNC44NCwxNS4yNiAxNC4xLDE1Ljg2QzE0LjM1LDE1Ljk1IDE0LjYxLDE2IDE0Ljg3LDE2LjA3QzIwLDE2IDE5LjQsMTIuODcgMTkuNCwxMi44MkMxOS4zNCwxMS4zOSAxOC4xNCwxMC4yNyAxNi43MSwxMC4zM0ExLDEgMCAwLDEgMTUuNzEsOS4zM0ExLDEgMCAwLDEgMTYuNzEsOC4zM0MxNy45NCw4LjM2IDE5LjEyLDguODIgMjAuMDQsOS42M0MyMC4wOSw5LjM0IDIwLjEyLDkuMDQgMjAuMTIsOC43NEMyMC4wNiw3LjUgMTkuNSw2LjQyIDE3LjI1LDYuMjFDMTYsMy4yNSAxMi44NSw0Ljg5IDEyLjg1LDUuODFWNS44MUMxMi44Miw2LjA0IDEzLjA2LDYuNTMgMTMuMSw2LjU2QTEsMSAwIDAsMSAxNC4xLDcuNTZDMTQuMSw4LjExIDEzLjY1LDguNTYgMTMuMSw4LjU2VjguNTZDMTIuNTcsOC41NCAxMi4wNyw4LjM0IDExLjY3LDhDMTEuMTksOC4zMSAxMC42NCw4LjUgMTAuMDcsOC41NlY4LjU2QzkuNSw4LjYxIDkuMDMsOC4yMSA5LDcuNjZDOC45Miw3LjEgOS4zMyw2LjYxIDkuODgsNi41NkMxMC4wNCw2LjU0IDEwLjgyLDYuNDIgMTAuODIsNS43OVY1Ljc5QzEwLjgyLDUuMTMgMTEuMDcsNC41IDExLjUsNEMxMC41OCwzLjc1IDkuNTksNC4wOCA4LjU5LDUuMjlDNi43NSw1IDYsNS4yNSA1LjQ1LDcuMkM0LjUsNy42NyA0LDggMy43OCw5QzQuODYsOC43OCA1Ljk3LDguODcgNyw5LjI1QzcuNSw5LjQ0IDcuNzgsMTAgNy41OSwxMC41NEM3LjQsMTEuMDYgNi44MiwxMS4zMiA2LjMsMTEuMTNDNS41NywxMC44MSA0Ljc1LDEwLjc5IDQsMTEuMDdDMy42OCwxMS4zNCAzLjY4LDExLjkgMy42OCwxMi4zNEMzLjY4LDEzLjA4IDQuMDUsMTMuNzcgNC42OCwxNC4xN0M1LjIxLDE0LjQ0IDUuOCwxNC41OCA2LjM5LDE0LjU3QzYuMjQsMTQuMzEgNi4xMSwxNC4wNCA2LDEzLjc2QzUuODEsMTMuMjIgNi4xLDEyLjYzIDYuNjQsMTIuNDRDNy4xOCwxMi4yNSA3Ljc3LDEyLjU0IDcuOTYsMTMuMDhDOC4zNiwxNC4yMiA5LjM4LDE1IDEwLjU4LDE1LjEzQzExLjk1LDE1LjA2IDEzLjE3LDE0LjI1IDEzLjc3LDEzQzE0LDExLjYyIDE1LjExLDExLjUgMTYuMzMsMTEuNU0xOC4zMywxOC45N0wxNy43MSwxNy42N0wxNywxNy44M0wxOCwxOS4wOEwxOC4zMywxOC45N00xMy42OCwxMC4zNkMxMy43LDkuODMgMTMuMyw5LjM4IDEyLjc3LDkuMzNDMTIuMDYsOS4yOSAxMS4zNyw5LjUzIDEwLjg0LDEwQzEwLjI3LDEwLjU4IDkuOTcsMTEuMzggMTAsMTIuMTlBMSwxIDAgMCwwIDExLDEzLjE5QzExLjU3LDEzLjE5IDEyLDEyLjc0IDEyLDEyLjE5QzEyLDExLjkyIDEyLjA3LDExLjY1IDEyLjIzLDExLjQzQzEyLjM1LDExLjMzIDEyLjUsMTEuMjggMTIuNjYsMTEuMjhDMTMuMjEsMTEuMzEgMTMuNjgsMTAuOSAxMy42OCwxMC4zNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmVhZFNsaWNlID0gXCJNMTIsMkMxNy41LDIgMjIsNS4zNiAyMiw5LjVDMjIsMTEuMTkgMjEuMjYsMTIuNzUgMjAsMTRWMjJINFYxNEMyLjc0LDEyLjc1IDIsMTEuMTkgMiw5LjVDMiw1LjM2IDYuNSwyIDEyLDJNOCwxOEgxMlYxNEg4VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyZWFkU2xpY2VPdXRsaW5lID0gXCJNMTIsMkMxNy41LDIgMjIsNS4zNiAyMiw5LjVDMjIsMTEuMTkgMjEuMjYsMTIuNzUgMjAsMTRWMjJINFYxNEMyLjc0LDEyLjc1IDIsMTEuMTkgMiw5LjVDMiw1LjM2IDYuNSwyIDEyLDJNMTgsMTMuMTRDMTkuMjQsMTIuMTcgMjAsMTAuODkgMjAsOS41QzIwLDYuNDYgMTYuNDIsNCAxMiw0QzcuNTgsNCA0LDYuNDYgNCw5LjVDNCwxMC44OSA0Ljc2LDEyLjE3IDYsMTMuMTRWMjBIMThWMTMuMTRNOCwxOFYxNEgxMlYxOEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWRnZSA9IFwiTTcsMTRWMTAuOTFDNi4yOCwxMC41OCA1LjYxLDEwLjE4IDUsOS43MVYxNEg3TTUsMThIM1YxNkgxVjE0SDNWN0g1VjguNDNDNi44LDEwIDkuMjcsMTEgMTIsMTFDMTQuNzMsMTEgMTcuMiwxMCAxOSw4LjQzVjdIMjFWMTRIMjNWMTZIMjFWMThIMTlWMTZINVYxOE0xNywxMC45MVYxNEgxOVY5LjcxQzE4LjM5LDEwLjE4IDE3LjcyLDEwLjU4IDE3LDEwLjkxTTE2LDE0VjExLjMyQzE1LjM2LDExLjU1IDE0LjY5LDExLjcyIDE0LDExLjg0VjE0SDE2TTEzLDE0VjExLjk2TDEyLDEyTDExLDExLjk2VjE0SDEzTTEwLDE0VjExLjg0QzkuMzEsMTEuNzIgOC42NCwxMS41NSA4LDExLjMyVjE0SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZSA9IFwiTTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOFYxOUEyLDIgMCAwLDEgMjAsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VBY2NvdW50ID0gXCJNMjAsNkgxNlY0QTIsMiAwIDAsMCAxNCwySDEwQzguODksMiA4LDIuODkgOCw0VjZINEMyLjg5LDYgMiw2Ljg5IDIsOFYxOUEyLDIgMCAwLDAgNCwyMUgyMEEyLDIgMCAwLDAgMjIsMTlWOEEyLDIgMCAwLDAgMjAsNk0xMCw0SDE0VjZIMTBWNE0xMiw5QTIuNSwyLjUgMCAwLDEgMTQuNSwxMS41QTIuNSwyLjUgMCAwLDEgMTIsMTRBMi41LDIuNSAwIDAsMSA5LjUsMTEuNUEyLjUsMi41IDAgMCwxIDEyLDlNMTcsMTlIN1YxNy43NUM3LDE2LjM3IDkuMjQsMTUuMjUgMTIsMTUuMjVDMTQuNzYsMTUuMjUgMTcsMTYuMzcgMTcsMTcuNzVWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlQWNjb3VudE91dGxpbmUgPSBcIk0yMCw2QzIwLjU4LDYgMjEuMDUsNi4yIDIxLjQyLDYuNTlDMjEuOCw3IDIyLDcuNDUgMjIsOFYxOUMyMiwxOS41NSAyMS44LDIwIDIxLjQyLDIwLjQxQzIxLjA1LDIwLjggMjAuNTgsMjEgMjAsMjFINEMzLjQyLDIxIDIuOTUsMjAuOCAyLjU4LDIwLjQxQzIuMiwyMCAyLDE5LjU1IDIsMTlWOEMyLDcuNDUgMi4yLDcgMi41OCw2LjU5QzIuOTUsNi4yIDMuNDIsNiA0LDZIOFY0QzgsMy40MiA4LjIsMi45NSA4LjU4LDIuNThDOC45NSwyLjIgOS40MiwyIDEwLDJIMTRDMTQuNTgsMiAxNS4wNSwyLjIgMTUuNDIsMi41OEMxNS44LDIuOTUgMTYsMy40MiAxNiw0VjZIMjBNNCw4VjE5SDIwVjhINE0xNCw2VjRIMTBWNkgxNE0xMiw5QTIuMjUsMi4yNSAwIDAsMSAxNC4yNSwxMS4yNUMxNC4yNSwxMi41IDEzLjI0LDEzLjUgMTIsMTMuNUEyLjI1LDIuMjUgMCAwLDEgOS43NSwxMS4yNUM5Ljc1LDEwIDEwLjc2LDkgMTIsOU0xNi41LDE4SDcuNVYxNi44OEM3LjUsMTUuNjMgOS41LDE0LjYzIDEyLDE0LjYzQzE0LjUsMTQuNjMgMTYuNSwxNS42MyAxNi41LDE2Ljg4VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZUNoZWNrID0gXCJNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjE5QTIsMiAwIDAsMSAyMCwyMUg0QTIsMiAwIDAsMSAyLDE5VjhBMiwyIDAgMCwxIDQsNkg4VjRBMiwyIDAgMCwxIDEwLDJNMTQsNlY0SDEwVjZIMTRNMTAuNSwxNy41TDE3LjA5LDEwLjkxTDE1LjY4LDkuNUwxMC41LDE0LjY3TDguNDEsMTIuNTlMNywxNEwxMC41LDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlQ2hlY2tPdXRsaW5lID0gXCJNMjAgNkMyMC41OCA2IDIxLjA1IDYuMiAyMS40MiA2LjU5QzIxLjggNyAyMiA3LjQ1IDIyIDhWMTlDMjIgMTkuNTUgMjEuOCAyMCAyMS40MiAyMC40MUMyMS4wNSAyMC44IDIwLjU4IDIxIDIwIDIxSDRDMy40MiAyMSAyLjk1IDIwLjggMi41OCAyMC40MUMyLjIgMjAgMiAxOS41NSAyIDE5VjhDMiA3LjQ1IDIuMiA3IDIuNTggNi41OUMyLjk1IDYuMiAzLjQyIDYgNCA2SDhWNEM4IDMuNDIgOC4yIDIuOTUgOC41OCAyLjU4QzguOTUgMi4yIDkuNDIgMiAxMCAySDE0QzE0LjU4IDIgMTUuMDUgMi4yIDE1LjQyIDIuNThDMTUuOCAyLjk1IDE2IDMuNDIgMTYgNFY2SDIwTTQgOFYxOUgyMFY4SDRNMTQgNlY0SDEwVjZIMTRNMTAuNDYgMTcuNUwxNy4wNSAxMC45MUwxNS42NCA5LjVMMTAuNDYgMTQuNjdMOC4zNyAxMi41OUw2Ljk2IDE0TDEwLjQ2IDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlQ2xvY2sgPSBcIk0yMSAxMS4xMVY3QTIgMiAwIDAgMCAxOSA1SDE1VjNBMiAyIDAgMCAwIDEzIDFIOUEyIDIgMCAwIDAgNyAzVjVIM0EyIDIgMCAwIDAgMSA3VjE4QTIgMiAwIDAgMCAzIDIwSDEwLjI2QTcgNyAwIDEgMCAyMSAxMS4xMU05IDNIMTNWNUg5TTE5IDIwQTUgNSAwIDAgMSAxMyAyMEE1IDUgMCAxIDEgMTkgMjBNMTUgMTNIMTYuNVYxNS44MkwxOC45NCAxNy4yM0wxOC4xOSAxOC41M0wxNSAxNi42OVYxM1wiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZUNsb2NrT3V0bGluZSA9IFwiTTIxIDExLjExVjdBMiAyIDAgMCAwIDIwLjQyIDUuNTlBMS44NyAxLjg3IDAgMCAwIDE5IDVIMTVWM0ExLjkgMS45IDAgMCAwIDE0LjQyIDEuNThBMS45IDEuOSAwIDAgMCAxMyAxSDlBMS45IDEuOSAwIDAgMCA3LjU4IDEuNThBMS45IDEuOSAwIDAgMCA3IDNWNUgzQTEuODcgMS44NyAwIDAgMCAxLjU4IDUuNTlBMiAyIDAgMCAwIDEgN1YxOEEyIDIgMCAwIDAgMS41OCAxOS40MUExLjg3IDEuODcgMCAwIDAgMyAyMEgxMC4yNkE3IDcgMCAxIDAgMjEgMTEuMTFNOSAzSDEzVjVIOU0zIDE4VjdIMTlWOS42OEE2Ljg0IDYuODQgMCAwIDAgMTYgOUE3IDcgMCAwIDAgOSAxNkE2LjkxIDYuOTEgMCAwIDAgOS4yOSAxOE0xOSAyMEE1IDUgMCAwIDEgMTMgMjBBNC45NCA0Ljk0IDAgMCAxIDExIDE2QTUgNSAwIDAgMSAxNiAxMUE0Ljk0IDQuOTQgMCAwIDEgMTkgMTJBNSA1IDAgMCAxIDE5IDIwTTE1IDEzSDE2LjVWMTUuODJMMTguOTQgMTcuMjNMMTguMTkgMTguNTNMMTUgMTYuNjlWMTNcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VEb3dubG9hZCA9IFwiTTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOFYxOUEyLDIgMCAwLDEgMjAsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNE0xMiwxOUwxNywxNEgxNFYxMEgxMFYxNEg3TDEyLDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZURvd25sb2FkT3V0bGluZSA9IFwiTTEyLDE4TDcsMTNIMTBWOUgxNFYxM0gxN0wxMiwxOE0xMCwySDE0QTIsMiAwIDAsMSAxNiw0VjZIMjBBMiwyIDAgMCwxIDIyLDhWMTlBMiwyIDAgMCwxIDIwLDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRNNCw4VjE5SDIwVjhINFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VFZGl0ID0gXCJNMTQsMkEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4TDEwLjg1LDE5QzEwLjg1LDIwLjEgMTAuODUsMTkuNSAxMC44NSwyMUg0QzIuODksMjEgMiwyMC4xIDIsMTlWOEMyLDYuODkgMi44OSw2IDQsNkg4VjRDOCwyLjg5IDguODksMiAxMCwySDE0TTE0LDZWNEgxMFY2SDE0TTIxLjA0LDEyLjEzQzIwLjksMTIuMTMgMjAuNzYsMTIuMTkgMjAuNjUsMTIuM0wxOS42NSwxMy4zTDIxLjcsMTUuMzVMMjIuNywxNC4zNUMyMi45MiwxNC4xNCAyMi45MiwxMy43OSAyMi43LDEzLjU4TDIxLjQyLDEyLjNDMjEuMzEsMTIuMTkgMjEuMTgsMTIuMTMgMjEuMDQsMTIuMTNNMTkuMDcsMTMuODhMMTMsMTkuOTRWMjJIMTUuMDZMMjEuMTIsMTUuOTNMMTkuMDcsMTMuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlRWRpdE91dGxpbmUgPSBcIk0yMS4wNCwxMi4xM0MyMS4xOCwxMi4xMyAyMS4zMSwxMi4xOSAyMS40MiwxMi4zTDIyLjcsMTMuNThDMjIuOTIsMTMuNzkgMjIuOTIsMTQuMTQgMjIuNywxNC4zNUwyMS43LDE1LjM1TDE5LjY1LDEzLjNMMjAuNjUsMTIuM0MyMC43NiwxMi4xOSAyMC45LDEyLjEzIDIxLjA0LDEyLjEzTTE5LjA3LDEzLjg4TDIxLjEyLDE1LjkzTDE1LjA2LDIySDEzVjE5Ljk0TDE5LjA3LDEzLjg4TTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOEwyMCwxMFY4SDRWMTlIMTFWMjFINEEyLDIgMCAwLDEgMiwxOVY4QTIsMiAwIDAsMSA0LDZIOFY0QTIsMiAwIDAsMSAxMCwyTTE0LDZWNEgxMFY2SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZU1pbnVzID0gXCJNMjIsMTdWMTlIMTRWMTdIMjJNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjUzQzIwLjk0LDEyLjU4IDE5LjU0LDEyIDE4LDEyQTYsNiAwIDAsMCAxMiwxOEMxMiwxOS4wOSAxMi4yOSwyMC4xMiAxMi44LDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlTWludXNPdXRsaW5lID0gXCJNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjUzQzIxLjQyLDEzIDIwLjc1LDEyLjYgMjAsMTIuMzRWOEg0VjE5SDEyLjA4QzEyLjIsMTkuNzIgMTIuNDUsMjAuMzkgMTIuOCwyMUg0QTIsMiAwIDAsMSAyLDE5VjhBMiwyIDAgMCwxIDQsNkg4VjRBMiwyIDAgMCwxIDEwLDJNMTQsNlY0SDEwVjZIMTRNMTQsMTdIMjJWMTlIMTRWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlT2ZmID0gXCJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuMTEgMjFINEMyLjg5IDIxIDIgMjAuMSAyIDE5VjhDMiA2Ljg5IDIuODkgNiA0IDZINC4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTIyIDE4LjhMOCA0LjhWNEM4IDIuODkgOC44OSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY2SDIwQzIxLjExIDYgMjIgNi45IDIyIDhWMTguOE0xNCA0SDEwVjZIMTRWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VPZmZPdXRsaW5lID0gXCJNMjAgOFYxNi44TDIyIDE4LjhWOEMyMiA3LjQ1IDIxLjggNyAyMS40MiA2LjU5QzIxLjA1IDYuMiAyMC41OCA2IDIwIDZIMTZWNEMxNiAzLjQyIDE1LjggMi45NSAxNS40MiAyLjU4QzE1LjA1IDIuMiAxNC41OCAyIDE0IDJIMTBDOS40MiAyIDguOTUgMi4yIDguNTggMi41OEM4LjIgMi45NSA4IDMuNDIgOCA0VjQuOEwxMS4yIDhIMjBNMTAgNEgxNFY2SDEwVjRNMi4zOSAxLjczTDEuMTEgM0w0LjExIDZINEMzLjQyIDYgMi45NSA2LjIgMi41OCA2LjU5QzIuMiA3IDIgNy40NSAyIDhWMTlDMiAxOS41NSAyLjIgMjAgMi41OCAyMC40MUMyLjk1IDIwLjggMy40MiAyMSA0IDIxSDE5LjExTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M000IDE5VjhINi4xMUwxNy4xMSAxOUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZU91dGxpbmUgPSBcIk0yMCw2QzIwLjU4LDYgMjEuMDUsNi4yIDIxLjQyLDYuNTlDMjEuOCw3IDIyLDcuNDUgMjIsOFYxOUMyMiwxOS41NSAyMS44LDIwIDIxLjQyLDIwLjQxQzIxLjA1LDIwLjggMjAuNTgsMjEgMjAsMjFINEMzLjQyLDIxIDIuOTUsMjAuOCAyLjU4LDIwLjQxQzIuMiwyMCAyLDE5LjU1IDIsMTlWOEMyLDcuNDUgMi4yLDcgMi41OCw2LjU5QzIuOTUsNi4yIDMuNDIsNiA0LDZIOFY0QzgsMy40MiA4LjIsMi45NSA4LjU4LDIuNThDOC45NSwyLjIgOS40MiwyIDEwLDJIMTRDMTQuNTgsMiAxNS4wNSwyLjIgMTUuNDIsMi41OEMxNS44LDIuOTUgMTYsMy40MiAxNiw0VjZIMjBNNCw4VjE5SDIwVjhINE0xNCw2VjRIMTBWNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VQbHVzID0gXCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjUzQzIwLjk0LDEyLjU4IDE5LjU0LDEyIDE4LDEyQTYsNiAwIDAsMCAxMiwxOEMxMiwxOS4wOSAxMi4yOSwyMC4xMiAxMi44LDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlUGx1c091dGxpbmUgPSBcIk0xMCwySDE0QTIsMiAwIDAsMSAxNiw0VjZIMjBBMiwyIDAgMCwxIDIyLDhWMTMuNTNDMjEuNDIsMTMgMjAuNzUsMTIuNiAyMCwxMi4zNFY4SDRWMTlIMTIuMDhDMTIuMiwxOS43MiAxMi40NSwyMC4zOSAxMi44LDIxSDRBMiwyIDAgMCwxIDIsMTlWOEEyLDIgMCAwLDEgNCw2SDhWNEEyLDIgMCAwLDEgMTAsMk0xNCw2VjRIMTBWNkgxNE0xNCwxN0gxN1YxNEgxOVYxN0gyMlYxOUgxOVYyMkgxN1YxOUgxNFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VSZW1vdmUgPSBcIk0xNC40NiwxNS44OEwxNS44OCwxNC40NkwxOCwxNi41OUwyMC4xMiwxNC40NkwyMS41NCwxNS44OEwxOS40MSwxOEwyMS41NCwyMC4xMkwyMC4xMiwyMS41NEwxOCwxOS40MUwxNS44OCwyMS41NEwxNC40NiwyMC4xMkwxNi41OSwxOEwxNC40NiwxNS44OE0xMCwySDE0QTIsMiAwIDAsMSAxNiw0VjZIMjBBMiwyIDAgMCwxIDIyLDhWMTMuNTNDMjAuOTQsMTIuNTggMTkuNTQsMTIgMTgsMTJBNiw2IDAgMCwwIDEyLDE4QzEyLDE5LjA5IDEyLjI5LDIwLjEyIDEyLjgsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VSZW1vdmVPdXRsaW5lID0gXCJNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjUzQzIxLjQyLDEzIDIwLjc1LDEyLjYgMjAsMTIuMzRWOEg0VjE5SDEyLjA4QzEyLjIsMTkuNzIgMTIuNDUsMjAuMzkgMTIuOCwyMUg0QTIsMiAwIDAsMSAyLDE5VjhBMiwyIDAgMCwxIDQsNkg4VjRBMiwyIDAgMCwxIDEwLDJNMTQsNlY0SDEwVjZIMTRNMTQuNDYsMTUuODhMMTUuODgsMTQuNDZMMTgsMTYuNTlMMjAuMTIsMTQuNDZMMjEuNTQsMTUuODhMMTkuNDEsMThMMjEuNTQsMjAuMTJMMjAuMTIsMjEuNTRMMTgsMTkuNDFMMTUuODgsMjEuNTRMMTQuNDYsMjAuMTJMMTYuNTksMThMMTQuNDYsMTUuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlU2VhcmNoID0gXCJNMTYuNSwxMkMxOSwxMiAyMSwxNCAyMSwxNi41QzIxLDE3LjM4IDIwLjc1LDE4LjIxIDIwLjMxLDE4LjlMMjMuMzksMjJMMjIsMjMuMzlMMTguODgsMjAuMzJDMTguMTksMjAuNzUgMTcuMzcsMjEgMTYuNSwyMUMxNCwyMSAxMiwxOSAxMiwxNi41QzEyLDE0IDE0LDEyIDE2LjUsMTJNMTYuNSwxNEEyLjUsMi41IDAgMCwwIDE0LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE5QTIuNSwyLjUgMCAwLDAgMTksMTYuNUEyLjUsMi41IDAgMCwwIDE2LjUsMTRNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjAzQzIwLjg1LDExLjIxIDE4LjgyLDEwIDE2LjUsMTBBNi41LDYuNSAwIDAsMCAxMCwxNi41QzEwLDE4LjI1IDEwLjY5LDE5LjgzIDExLjgxLDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlU2VhcmNoT3V0bGluZSA9IFwiTTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOFYxMy4wM0MyMS41LDEyLjIzIDIwLjgsMTEuNTQgMjAsMTFWOEg0VjE5SDEwLjVDMTAuODEsMTkuNzUgMTEuMjYsMjAuNDIgMTEuODEsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNE0yMC4zMSwxOC45TDIzLjM5LDIyTDIyLDIzLjM5TDE4Ljg4LDIwLjMyQzE4LjE5LDIwLjc1IDE3LjM3LDIxIDE2LjUsMjFDMTQsMjEgMTIsMTkgMTIsMTYuNUMxMiwxNCAxNCwxMiAxNi41LDEyQzE5LDEyIDIxLDE0IDIxLDE2LjVDMjEsMTcuMzggMjAuNzUsMTguMjEgMjAuMzEsMTguOU0xNi41LDE5QTIuNSwyLjUgMCAwLDAgMTksMTYuNUEyLjUsMi41IDAgMCwwIDE2LjUsMTRBMi41LDIuNSAwIDAsMCAxNCwxNi41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VVcGxvYWQgPSBcIk0xMCwySDE0QTIsMiAwIDAsMSAxNiw0VjZIMjBBMiwyIDAgMCwxIDIyLDhWMTlBMiwyIDAgMCwxIDIwLDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRNMTIsOUw3LDE0SDEwVjE4SDE0VjE0SDE3TDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlVXBsb2FkT3V0bGluZSA9IFwiTTEyLDlMMTcsMTRIMTRWMThIMTBWMTRIN0wxMiw5TTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOFYxOUEyLDIgMCAwLDEgMjAsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNE00LDhWMTlIMjBWOEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZVZhcmlhbnQgPSBcIk0xMCAxNlYxNUgzTDMgMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWMTVIMTRWMTZIMTBNMjAgN0gxNlY1TDE0IDNIMTBMOCA1VjdINEMyLjkgNyAyIDcuOSAyIDlWMTJDMiAxMy4xMSAyLjg5IDE0IDQgMTRIMTBWMTJIMTRWMTRIMjBDMjEuMSAxNCAyMiAxMy4xIDIyIDEyVjlDMjIgNy45IDIxLjEgNyAyMCA3TTE0IDdIMTBWNUgxNFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZVZhcmlhbnRPZmYgPSBcIk0xMCA2LjhMOC4xIDQuOUwxMCAzSDE0TDE2IDVWN0gyMEMyMS4xIDcgMjIgNy45IDIyIDlWMTJDMjIgMTMuMSAyMS4xIDE0IDIwIDE0SDE3LjJMMTAuMiA3SDE0VjVIMTBWNi44TTIuMzkgMS43M0wxLjExIDNMNS4xMSA3SDRDMi45IDcgMiA3LjkgMiA5VjEyQzIgMTMuMTEgMi44OSAxNCA0IDE0SDEwVjEySDEwLjExTDE0IDE1Ljg5VjE2SDEwVjE1SDNWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMTkuMDMgMjEgMTkuMDcgMjEgMTkuMSAyMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNNMjEgMTcuOFYxNUgxOC4yTDIxIDE3LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlVmFyaWFudE9mZk91dGxpbmUgPSBcIk0xMCA2LjhMOC4xIDQuOUwxMCAzSDE0TDE2IDVWN0gyMEMyMS4xIDcgMjIgNy45IDIyIDlWMTRDMjIgMTQuNzMgMjEuNTkgMTUuMzcgMjEgMTUuNzJWMTcuOEwxNy4yIDE0SDIwVjlIMTIuMkwxMC4yIDdIMTRWNUgxMFY2LjhNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuMSAyMUMxOS4wNyAyMSAxOS4wMyAyMSAxOSAyMUg1QzMuODkgMjEgMyAyMC4xMSAzIDE5VjE1LjczQzIuNCAxNS4zOCAyIDE0Ljc1IDIgMTRWOUMyIDcuOSAyLjkgNyA0IDdINS4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTExIDE1SDEzVjE0Ljg5TDExLjExIDEzSDExVjE1TTkgMTRWMTFIOS4xMUw3LjExIDlINFYxNEg5TTE3LjExIDE5TDE1IDE2Ljg5VjE3SDlWMTZINVYxOUgxNy4xMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VWYXJpYW50T3V0bGluZSA9IFwiTTIwIDdIMTZWNUwxNCAzSDEwTDggNVY3SDRDMi45IDcgMiA3LjkgMiA5VjE0QzIgMTQuNzUgMi40IDE1LjM4IDMgMTUuNzNWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWMTUuNzJDMjEuNTkgMTUuMzcgMjIgMTQuNzMgMjIgMTRWOUMyMiA3LjkgMjEuMSA3IDIwIDdNMTAgNUgxNFY3SDEwVjVNNCA5SDIwVjE0SDE1VjExSDlWMTRINFY5TTEzIDE1SDExVjEzSDEzVjE1TTE5IDE5SDVWMTZIOVYxN0gxNVYxNkgxOVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmlnaHRuZXNzMSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3MyID0gXCJNMTAsMkM4LjE4LDIgNi40NywyLjUgNSwzLjM1QzgsNS4wOCAxMCw4LjMgMTAsMTJDMTAsMTUuNyA4LDE4LjkyIDUsMjAuNjVDNi40NywyMS41IDguMTgsMjIgMTAsMjJBMTAsMTAgMCAwLDAgMjAsMTJBMTAsMTAgMCAwLDAgMTAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmlnaHRuZXNzMyA9IFwiTTksMkM3Ljk1LDIgNi45NSwyLjE2IDYsMi40NkMxMC4wNiwzLjczIDEzLDcuNSAxMywxMkMxMywxNi41IDEwLjA2LDIwLjI3IDYsMjEuNTRDNi45NSwyMS44NCA3Ljk1LDIyIDksMjJBMTAsMTAgMCAwLDAgMTksMTJBMTAsMTAgMCAwLDAgOSwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3M0ID0gXCJNMTIsMThDMTEuMTEsMTggMTAuMjYsMTcuOCA5LjUsMTcuNDVDMTEuNTYsMTYuNSAxMywxNC40MiAxMywxMkMxMyw5LjU4IDExLjU2LDcuNSA5LjUsNi41NUMxMC4yNiw2LjIgMTEuMTEsNiAxMiw2QTYsNiAwIDAsMSAxOCwxMkE2LDYgMCAwLDEgMTIsMThNMjAsOC42OVY0SDE1LjMxTDEyLDAuNjlMOC42OSw0SDRWOC42OUwwLjY5LDEyTDQsMTUuMzFWMjBIOC42OUwxMiwyMy4zMUwxNS4zMSwyMEgyMFYxNS4zMUwyMy4zMSwxMkwyMCw4LjY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3M1ID0gXCJNMTIsMThBNiw2IDAgMCwxIDYsMTJBNiw2IDAgMCwxIDEyLDZBNiw2IDAgMCwxIDE4LDEyQTYsNiAwIDAsMSAxMiwxOE0yMCwxNS4zMUwyMy4zMSwxMkwyMCw4LjY5VjRIMTUuMzFMMTIsMC42OUw4LjY5LDRINFY4LjY5TDAuNjksMTJMNCwxNS4zMVYyMEg4LjY5TDEyLDIzLjMxTDE1LjMxLDIwSDIwVjE1LjMxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3M2ID0gXCJNMTIsMThWNkE2LDYgMCAwLDEgMTgsMTJBNiw2IDAgMCwxIDEyLDE4TTIwLDE1LjMxTDIzLjMxLDEyTDIwLDguNjlWNEgxNS4zMUwxMiwwLjY5TDguNjksNEg0VjguNjlMMC42OSwxMkw0LDE1LjMxVjIwSDguNjlMMTIsMjMuMzFMMTUuMzEsMjBIMjBWMTUuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZ2h0bmVzczcgPSBcIk0xMiw4QTQsNCAwIDAsMCA4LDEyQTQsNCAwIDAsMCAxMiwxNkE0LDQgMCAwLDAgMTYsMTJBNCw0IDAgMCwwIDEyLDhNMTIsMThBNiw2IDAgMCwxIDYsMTJBNiw2IDAgMCwxIDEyLDZBNiw2IDAgMCwxIDE4LDEyQTYsNiAwIDAsMSAxMiwxOE0yMCw4LjY5VjRIMTUuMzFMMTIsMC42OUw4LjY5LDRINFY4LjY5TDAuNjksMTJMNCwxNS4zMVYyMEg4LjY5TDEyLDIzLjMxTDE1LjMxLDIwSDIwVjE1LjMxTDIzLjMxLDEyTDIwLDguNjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZ2h0bmVzc0F1dG8gPSBcIk0xNC4zLDE2TDEzLjYsMTRIMTAuNEw5LjcsMTZINy44TDExLDdIMTNMMTYuMiwxNkgxNC4zTTIwLDguNjlWNEgxNS4zMUwxMiwwLjY5TDguNjksNEg0VjguNjlMMC42OSwxMkw0LDE1LjMxVjIwSDguNjlMMTIsMjMuMzFMMTUuMzEsMjBIMjBWMTUuMzFMMjMuMzEsMTJMMjAsOC42OU0xMC44NSwxMi42NUgxMy4xNUwxMiw5TDEwLjg1LDEyLjY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3NQZXJjZW50ID0gXCJNMjAuMDQsOC43MVY0SDE1LjM0TDEyLDAuNjlMOC43MSw0SDRWOC43MUwwLjY5LDEyTDQsMTUuMzRWMjAuMDRIOC43MUwxMiwyMy4zNUwxNS4zNCwyMC4wNEgyMC4wNFYxNS4zNEwyMy4zNSwxMkwyMC4wNCw4LjcxTTguODMsNy4wNUM5LjgxLDcuMDUgMTAuNiw3Ljg0IDEwLjYsOC44M0ExLjc3LDEuNzcgMCAwLDEgOC44MywxMC42QzcuODQsMTAuNiA3LjA1LDkuODEgNy4wNSw4LjgzQzcuMDUsNy44NCA3Ljg0LDcuMDUgOC44Myw3LjA1TTE1LjIyLDE3QzE0LjI0LDE3IDEzLjQ1LDE2LjIgMTMuNDUsMTUuMjJBMS43NywxLjc3IDAgMCwxIDE1LjIyLDEzLjQ1QzE2LjIsMTMuNDUgMTcsMTQuMjQgMTcsMTUuMjJBMS43OCwxLjc4IDAgMCwxIDE1LjIyLDE3TTguNSwxNy4wM0w3LDE1LjUzTDE1LjUzLDdMMTcuMDMsOC41TDguNSwxNy4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCcm9hZGNhc3QgPSBcIk0xMiAxMEMxMC45IDEwIDEwIDEwLjkgMTAgMTJTMTAuOSAxNCAxMiAxNCAxNCAxMy4xIDE0IDEyIDEzLjEgMTAgMTIgMTBNMTggMTJDMTggOC43IDE1LjMgNiAxMiA2UzYgOC43IDYgMTJDNiAxNC4yIDcuMiAxNi4xIDkgMTcuMkwxMCAxNS41QzguOCAxNC44IDggMTMuNSA4IDEyLjFDOCA5LjkgOS44IDguMSAxMiA4LjFTMTYgOS45IDE2IDEyLjFDMTYgMTMuNiAxNS4yIDE0LjkgMTQgMTUuNUwxNSAxNy4yQzE2LjggMTYuMiAxOCAxNC4yIDE4IDEyTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE1LjcgNCAxOC45IDcgMjAuNkw4IDE4LjlDNS42IDE3LjUgNCAxNC45IDQgMTJDNCA3LjYgNy42IDQgMTIgNFMyMCA3LjYgMjAgMTJDMjAgMTUgMTguNCAxNy41IDE2IDE4LjlMMTcgMjAuNkMyMCAxOC45IDIyIDE1LjcgMjIgMTJDMjIgNi41IDE3LjUgMiAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyb2FkY2FzdE9mZiA9IFwiTTE3LjYgMTQuMkMxNy45IDEzLjUgMTggMTIuOCAxOCAxMkMxOCA4LjcgMTUuMyA2IDEyIDZDMTEuMiA2IDEwLjQgNi4yIDkuOCA2LjRMMTEuNCA4SDEyQzE0LjIgOCAxNiA5LjggMTYgMTJDMTYgMTIuMiAxNiAxMi40IDE1LjkgMTIuNkwxNy42IDE0LjJNMTIgNEMxNi40IDQgMjAgNy42IDIwIDEyQzIwIDEzLjQgMTkuNiAxNC42IDE5IDE1LjdMMjAuNSAxNy4yQzIxLjQgMTUuNyAyMiAxMy45IDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMkMxMC4xIDIgOC4zIDIuNSA2LjggMy41TDguMyA1QzkuNCA0LjMgMTAuNiA0IDEyIDRNMy4zIDIuNUwyIDMuOEw0LjEgNS45QzIuOCA3LjYgMiA5LjcgMiAxMkMyIDE1LjcgNCAxOC45IDcgMjAuNkw4IDE4LjlDNS42IDE3LjUgNCAxNC45IDQgMTJDNCAxMC4yIDQuNiA4LjYgNS41IDcuM0w3IDguOEM2LjQgOS43IDYgMTAuOCA2IDEyQzYgMTQuMiA3LjIgMTYuMSA5IDE3LjJMMTAgMTUuNUM4LjggMTQuOCA4IDEzLjUgOCAxMi4xQzggMTEuNSA4LjIgMTAuOSA4LjQgMTAuM0wxMCAxMS45VjEyLjFDMTAgMTMuMiAxMC45IDE0LjEgMTIgMTQuMUgxMi4yTDE5LjcgMjEuNkwyMSAyMC4zTDQuMyAzLjVMMy4zIDIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCcm9vbSA9IFwiTTE5LjM2LDIuNzJMMjAuNzgsNC4xNEwxNS4wNiw5Ljg1QzE2LjEzLDExLjM5IDE2LjI4LDEzLjI0IDE1LjM4LDE0LjQ0TDkuMDYsOC4xMkMxMC4yNiw3LjIyIDEyLjExLDcuMzcgMTMuNjUsOC40NEwxOS4zNiwyLjcyTTUuOTMsMTcuNTdDMy45MiwxNS41NiAyLjY5LDEzLjE2IDIuMzUsMTAuOTJMNy4yMyw4LjgzTDE0LjY3LDE2LjI3TDEyLjU4LDIxLjE1QzEwLjM0LDIwLjgxIDcuOTQsMTkuNTggNS45MywxNy41N1pcIjtcclxuZXhwb3J0IHZhciBtZGlCcnVzaCA9IFwiTTIwLjcxLDQuNjNMMTkuMzcsMy4yOUMxOSwyLjkgMTguMzUsMi45IDE3Ljk2LDMuMjlMOSwxMi4yNUwxMS43NSwxNUwyMC43MSw2LjA0QzIxLjEsNS42NSAyMS4xLDUgMjAuNzEsNC42M003LDE0QTMsMyAwIDAsMCA0LDE3QzQsMTguMzEgMi44NCwxOSAyLDE5QzIuOTIsMjAuMjIgNC41LDIxIDYsMjFBNCw0IDAgMCwwIDEwLDE3QTMsMyAwIDAsMCA3LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1Y2tldCA9IFwiTTMgNEgyMVY3SDIwTDE3LjUgMjFINi41TDQgN0gzVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVja2V0T3V0bGluZSA9IFwiTTMgNEgyMVY3SDIwTDE3LjUgMjFINi41TDQgN0gzVjRNMTcuOTcgN0g2LjAzTDguMTUgMTlIMTUuODVMMTcuOTcgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCdWRkaGlzbSA9IFwiTTExLDJWM0M5LjI3LDMuMiA3LjY5LDMuOSA2LjQsNC45NEw1LjY0LDQuMThMNC4yMiw1LjZMNSw2LjM1QzMuOSw3LjY4IDMuMjEsOS4zIDMsMTFIMlYxM0gzQzMuMjEsMTQuNjggMy45LDE2LjI2IDUsMTcuNTZMNC4yMiwxOC4zMkw1LjY0LDE5Ljc0TDYuMzksMTlDNy43MSwyMC4wNyA5LjMsMjAuNzcgMTEsMjFWMjJIMTNWMjFDMTQuNjksMjAuNzcgMTYuMjksMjAuMDcgMTcuNiwxOUwxOC4zNiwxOS43NEwxOS43OCwxOC4zMkwxOSwxNy41N0MyMC4xLDE2LjI3IDIwLjc5LDE0LjY4IDIxLDEzSDIyVjExSDIxQzIwLjc5LDkuMyAyMC4xLDcuNjkgMTksNi4zNkwxOS43OCw1LjZMMTguMzYsNC4xOEwxNy42MSw0Ljk0QzE2LjI5LDMuODcgMTQuNjksMy4yIDEzLDNWMkgxMU0xMSw1VjhMMTAsOC41TDcuODEsNi4zNUM4LjcyLDUuNjcgOS44MSw1LjE3IDExLDVNMTMsNUMxNC4xNiw1LjE4IDE1LjI2LDUuNjQgMTYuMiw2LjM1TDE0LDguNUwxMyw4VjVNNi40LDcuNzZMOC41LDEwTDgsMTFINUM1LjE2LDkuODQgNS43LDguNyA2LjM5LDcuNzVMNi40LDcuNzZNMTcuNiw3Ljc2QzE4LjMzLDguNzEgMTguODEsOS44MiAxOSwxMUgxNkwxNS41LDEwTDE3LjYxLDcuNzZIMTcuNk0xMiwxMEMxMy4xMiwxMCAxNCwxMC44OCAxNCwxMkMxNCwxMy4xMiAxMy4xMiwxNCAxMiwxNEMxMC44OCwxNCAxMCwxMy4xMiAxMCwxMkMxMCwxMC44OCAxMC44OCwxMCAxMiwxME01LDEzSDhMOC41NywxNEw2LjM5LDE2LjE1QzUuNjcsMTUuMjQgNS4xOSwxNC4xNiA1LDEzVjEzTTE2LDEzSDE5QzE4LjgxLDE0LjE1IDE4LjMzLDE1LjI0IDE3LjYxLDE2LjE2TDE1LjUsMTRMMTYsMTNNMTAsMTUuNUwxMSwxNlYxOUM5LjgzLDE4LjggOC43MywxOC4zMSA3LjgsMTcuNTdMMTAsMTUuNU0xNCwxNS41TDE2LjE5LDE3LjU3QzE1LjI4LDE4LjI1IDE0LjE5LDE4LjgzIDEzLDE5VjE2TDE0LDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVmZmVyID0gXCJNMTIuNiwyLjg2QzE1LjI3LDQuMSAxOCw1LjM5IDIwLjY2LDYuNjNDMjAuODEsNi43IDIxLDYuNzUgMjEsNi45NUMyMSw3LjE1IDIwLjgxLDcuMTkgMjAuNjYsNy4yNkMxOCw4LjUgMTUuMyw5Ljc3IDEyLjYyLDExQzEyLjIxLDExLjIxIDExLjc5LDExLjIxIDExLjM4LDExQzguNjksOS43NiA2LDguNSAzLjMyLDcuMjVDMy4xOCw3LjE5IDMsNy4xNCAzLDYuOTRDMyw2Ljc2IDMuMTgsNi43MSAzLjMxLDYuNjVDNiw1LjM5IDguNzQsNC4xIDExLjQ0LDIuODVDMTEuNzMsMi43MiAxMi4zLDIuNzMgMTIuNiwyLjg2TTEyLDIxLjE1QzExLjgsMjEuMTUgMTEuNjYsMjEuMDcgMTEuMzgsMjAuOTdDOC42OSwxOS43MyA2LDE4LjQ3IDMuMzMsMTcuMjJDMy4xOSwxNy4xNSAzLDE3LjExIDMsMTYuOUMzLDE2LjcgMy4xOSwxNi42NiAzLjM0LDE2LjU5QzMuNzgsMTYuMzggNC4yMywxNi4xNyA0LjY3LDE1Ljk2QzUuMTIsMTUuNzYgNS41NiwxNS43NiA2LDE1Ljk3QzcuNzksMTYuOCA5LjU3LDE3LjYzIDExLjM1LDE4LjQ2QzExLjc5LDE4LjY3IDEyLjIzLDE4LjY2IDEyLjY3LDE4LjQ2QzE0LjQ1LDE3LjYyIDE2LjIzLDE2Ljc5IDE4LDE1Ljk2QzE4LjQ0LDE1Ljc2IDE4Ljg3LDE1Ljc1IDE5LjI5LDE1Ljk1QzE5Ljc3LDE2LjE2IDIwLjI0LDE2LjM5IDIwLjcxLDE2LjYxQzIwLjc4LDE2LjY0IDIwLjg1LDE2LjY4IDIwLjkxLDE2LjczQzIxLjA0LDE2LjgzIDIxLjA0LDE3IDIwLjkxLDE3LjA4QzIwLjgzLDE3LjE0IDIwLjc0LDE3LjE5IDIwLjY1LDE3LjIzQzE4LDE4LjUgMTUuMzMsMTkuNzIgMTIuNjYsMjAuOTVDMTIuNDYsMjEuMDUgMTIuMTksMjEuMTUgMTIsMjEuMTVNMTIsMTYuMTdDMTEuOSwxNi4xNyAxMS41NSwxNi4wNyAxMS4zNiwxNkM4LjY4LDE0Ljc0IDYsMTMuNSAzLjM0LDEyLjI0QzMuMiwxMi4xOCAzLDEyLjEzIDMsMTEuOTNDMywxMS43MiAzLjIsMTEuNjggMy4zNSwxMS42MUMzLjgsMTEuMzkgNC4yNSwxMS4xOCA0LjcsMTAuOTdDNS4xMywxMC43OCA1LjU2LDEwLjc4IDYsMTFDNy43OCwxMS44MiA5LjU4LDEyLjY2IDExLjM4LDEzLjVDMTEuNzksMTMuNjkgMTIuMjEsMTMuNjkgMTIuNjMsMTMuNUMxNC40MywxMi42NSAxNi4yMywxMS44MSAxOC4wNCwxMC45N0MxOC40NSwxMC43OCAxOC44NywxMC43OCAxOS4yOSwxMC45N0MxOS43NiwxMS4xOSAyMC4yNCwxMS40MSAyMC43MSwxMS42M0MyMC43NywxMS42NiAyMC44NCwxMS42OSAyMC45LDExLjc0QzIxLjA0LDExLjg1IDIxLjA0LDEyIDIwLjg5LDEyLjEyQzIwLjg0LDEyLjE2IDIwLjc3LDEyLjE5IDIwLjcxLDEyLjIyQzE4LDEzLjUgMTUuMzEsMTQuNzUgMTIuNjEsMTZDMTIuNDIsMTYuMDkgMTIuMDgsMTYuMTcgMTIsMTYuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVmZmV0ID0gXCJNOSAxNEM5LjU1IDE0IDEwIDE0LjQ1IDEwIDE1QzEwIDE1LjU1IDkuNTUgMTYgOSAxNkM4LjQ1IDE2IDggMTUuNTUgOCAxNUM4IDE0LjQ1IDguNDUgMTQgOSAxNE0xNSAxNEMxNS41NSAxNCAxNiAxNC40NSAxNiAxNUMxNiAxNS41NSAxNS41NSAxNiAxNSAxNkMxNC40NSAxNiAxNCAxNS41NSAxNCAxNUMxNCAxNC40NSAxNC40NSAxNCAxNSAxNE0zIDIyTDQgMTlIM0MyLjQ1IDE5IDIgMTguNTUgMiAxOFYxMkMyIDExLjQ1IDIuNDUgMTEgMyAxMUgyMUMyMS41NSAxMSAyMiAxMS40NSAyMiAxMlYxOEMyMiAxOC41NSAyMS41NSAxOSAyMSAxOUgyMEwyMSAyMkgxOUwxOCAxOUg2TDUgMjJIM00xMyAxM1YxN0gyMFYxM0gxM000IDEzVjE3SDExVjEzSDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVnID0gXCJNMTQsMTJIMTBWMTBIMTRNMTQsMTZIMTBWMTRIMTRNMjAsOEgxNy4xOUMxNi43NCw3LjIyIDE2LjEyLDYuNTUgMTUuMzcsNi4wNEwxNyw0LjQxTDE1LjU5LDNMMTMuNDIsNS4xN0MxMi45Niw1LjA2IDEyLjUsNSAxMiw1QzExLjUsNSAxMS4wNCw1LjA2IDEwLjU5LDUuMTdMOC40MSwzTDcsNC40MUw4LjYyLDYuMDRDNy44OCw2LjU1IDcuMjYsNy4yMiA2LjgxLDhINFYxMEg2LjA5QzYuMDQsMTAuMzMgNiwxMC42NiA2LDExVjEySDRWMTRINlYxNUM2LDE1LjM0IDYuMDQsMTUuNjcgNi4wOSwxNkg0VjE4SDYuODFDNy44NSwxOS43OSA5Ljc4LDIxIDEyLDIxQzE0LjIyLDIxIDE2LjE1LDE5Ljc5IDE3LjE5LDE4SDIwVjE2SDE3LjkxQzE3Ljk2LDE1LjY3IDE4LDE1LjM0IDE4LDE1VjE0SDIwVjEySDE4VjExQzE4LDEwLjY2IDE3Ljk2LDEwLjMzIDE3LjkxLDEwSDIwVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVnQ2hlY2sgPSBcIk0xOCw3SDE1LjE5QzE0Ljc0LDYuMiAxNC4xMiw1LjUgMTMuMzcsNUwxNSwzLjQxTDEzLjU5LDJMMTEuNDIsNC4xN0MxMC45Niw0LjA2IDEwLjUsNCAxMCw0QzkuNSw0IDkuMDUsNC4wNiA4LjU5LDQuMTdMNi40MSwyTDUsMy40MUw2LjYyLDVDNS44Nyw1LjUgNS4yNiw2LjIxIDQuODEsN0gyVjlINC4wOUM0LjAzLDkuMzMgNCw5LjY2IDQsMTBWMTFIMlYxM0g0VjE0QzQsMTQuMzQgNC4wMywxNC42NyA0LjA5LDE1SDJWMTdINC44MUM2LjI2LDE5LjUgOS4yOCwyMC42MSAxMiwxOS42NUMxMiwxOS40MyAxMiwxOS4yMiAxMiwxOUMxMiwxNi40NiAxMy42MSwxNC4yIDE2LDEzLjM1VjEzSDE4VjExSDE2VjEwQzE2LDkuNjYgMTUuOTcsOS4zMyAxNS45MSw5SDE4VjdNMTIsMTVIOFYxM0gxMlYxNU0xMiwxMUg4VjlIMTJWMTFNMTcuNzUsMjIuMTZMMTUsMTkuMTZMMTYuMTYsMThMMTcuNzUsMTkuNTlMMjEuMzQsMTZMMjIuNSwxNy40MUwxNy43NSwyMi4xNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWdDaGVja091dGxpbmUgPSBcIk0xOCw3SDE1LjE5QzE0Ljc0LDYuMiAxNC4xMiw1LjUgMTMuMzcsNUwxNSwzLjQxTDEzLjU5LDJMMTEuNDIsNC4xN0MxMC45Niw0LjA2IDEwLjUsNCAxMCw0QzkuNSw0IDkuMDUsNC4wNiA4LjU5LDQuMTdMNi40MSwyTDUsMy40MUw2LjYyLDVDNS44Nyw1LjUgNS4yNiw2LjIxIDQuODEsN0gyVjlINC4wOUM0LjAzLDkuMzMgNCw5LjY2IDQsMTBWMTFIMlYxM0g0VjE0QzQsMTQuMzQgNC4wMywxNC42NyA0LjA5LDE1SDJWMTdINC44MUM2LjI2LDE5LjUgOS4yOCwyMC42MSAxMiwxOS42NUMxMiwxOS40MyAxMiwxOS4yMiAxMiwxOUMxMiwxOC40MyAxMi4wOSwxNy44NiAxMi4yNSwxNy4zMUMxMS41OSwxNy43NiAxMC44LDE4IDEwLDE4QTQsNCAwIDAsMSA2LDE0VjEwQTQsNCAwIDAsMSAxMCw2QTQsNCAwIDAsMSAxNCwxMFYxNEMxNCwxNC4xOSAxNCwxNC4zOSAxMy45NSwxNC41OEMxNC41NCwxNC4wNCAxNS4yNCwxMy42MiAxNiwxMy4zNVYxM0gxOFYxMUgxNlYxMEMxNiw5LjY2IDE1Ljk3LDkuMzMgMTUuOTEsOUgxOFY3TTIxLjM0LDE2TDE3Ljc1LDE5LjU5TDE2LjE2LDE4TDE1LDE5LjE2TDE3Ljc1LDIyLjE2TDIyLjUsMTcuNDFMMjEuMzQsMTZNMTIsOVYxMUg4VjlIMTJNMTIsMTNWMTVIOFYxM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWdPdXRsaW5lID0gXCJNMjAsOEgxNy4xOUMxNi43NCw3LjIgMTYuMTIsNi41IDE1LjM3LDZMMTcsNC40MUwxNS41OSwzTDEzLjQyLDUuMTdDMTIuOTYsNS4wNiAxMi41LDUgMTIsNUMxMS41LDUgMTEuMDUsNS4wNiAxMC41OSw1LjE3TDguNDEsM0w3LDQuNDFMOC42Miw2QzcuODcsNi41IDcuMjYsNy4yMSA2LjgxLDhINFYxMEg2LjA5QzYuMDMsMTAuMzMgNiwxMC42NiA2LDExVjEySDRWMTRINlYxNUM2LDE1LjM0IDYuMDMsMTUuNjcgNi4wOSwxNkg0VjE4SDYuODFDOC40NywyMC44NyAxMi4xNCwyMS44NCAxNSwyMC4xOEMxNS45MSwxOS42NiAxNi42NywxOC45IDE3LjE5LDE4SDIwVjE2SDE3LjkxQzE3Ljk3LDE1LjY3IDE4LDE1LjM0IDE4LDE1VjE0SDIwVjEySDE4VjExQzE4LDEwLjY2IDE3Ljk3LDEwLjMzIDE3LjkxLDEwSDIwVjhNMTYsMTVBNCw0IDAgMCwxIDEyLDE5QTQsNCAwIDAsMSA4LDE1VjExQTQsNCAwIDAsMSAxMiw3QTQsNCAwIDAsMSAxNiwxMVYxNU0xNCwxMFYxMkgxMFYxMEgxNE0xMCwxNEgxNFYxNkgxMFYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWdsZSA9IFwiTTIxLDZDMjEsMTEgMTIsMTEgMTIsMTFDMTIsMTEgNiwxMSA1LDExQzQsMTEgMywxMCAzLDEwSDJWMTRIM0MzLDE0IDQsMTMgNSwxM0M1LjIsMTMgNS43LDEzIDYuMywxM0M1LjUsMTMuNSA1LDE0LjIgNSwxNUM1LDE2LjggNy4zLDE4IDEwLjUsMThDMTMuNywxOCAxNiwxNi44IDE2LDE1QzE2LDE0LjQgMTUuNywxMy44IDE1LjIsMTMuM0MxNy44LDEzLjggMjEsMTUgMjEsMThIMjJWNkgyMU0xMC41LDE2LjdDOC4yLDE2LjcgNi40LDE1LjkgNi40LDE1QzYuNCwxNC4xIDguMiwxMy4zIDEwLjUsMTMuM0MxMi44LDEzLjMgMTQuNiwxNC4xIDE0LjYsMTVDMTQuNiwxNS45IDEyLjgsMTYuNyAxMC41LDE2LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVsbGRvemVyID0gXCJNNCw0QTEsMSAwIDAsMCAzLDVWMTBDMi41NCwxMCAyLjE0LDEwLjMxIDIuMDMsMTAuNzZWMTMuOTdIMi4yOUMyLjY1LDEzLjM3IDMuMywxMyA0LDEzSDEzQzEzLjcsMTMgMTQuMzUsMTMuMzcgMTQuNzEsMTMuOTdIMTYuMDNMMTYsMTFWMTFBMSwxIDAgMCwwIDE1LDEwSDEzVjhBMSwxIDAgMCwwIDEyLDdBMSwxIDAgMCwwIDExLDhWMTBIOVY1QTEsMSAwIDAsMCA4LDRINE01LDZIN1YxMEw3LDExSDVWNk0xNywxMVYxOUgyMlYxOEwxOSwxN0wxOCwxMUgxN000LDE1QTIsMiAwIDAsMCAyLDE3QTIsMiAwIDAsMCA0LDE5SDEzQTIsMiAwIDAsMCAxNSwxN0EyLDIgMCAwLDAgMTMsMTVINFpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsZXQgPSBcIk0xNCwyMkgxMFYyMUgxNFYyMk0xMywxMFY3SDExVjEwTDEwLDExLjVWMjBIMTRWMTEuNUwxMywxME0xMiwyQzEyLDIgMTEsMyAxMSw1VjZIMTNWNUMxMyw1IDEzLDMgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsZXRpbkJvYXJkID0gXCJNMTIuMDQsMi41TDkuNTMsNUgxNC41M0wxMi4wNCwyLjVNNCw3VjIwSDIwVjdINE0xMiwwTDE3LDVWNUgyMEEyLDIgMCAwLDEgMjIsN1YyMEEyLDIgMCAwLDEgMjAsMjJINEEyLDIgMCAwLDEgMiwyMFY3QTIsMiAwIDAsMSA0LDVIN1Y1TDEyLDBNNywxOFYxNEgxMlYxOEg3TTE0LDE3VjEwSDE4VjE3SDE0TTYsMTJWOUgxMVYxMkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1bGxob3JuID0gXCJNMTIsOEg0QTIsMiAwIDAsMCAyLDEwVjE0QTIsMiAwIDAsMCA0LDE2SDVWMjBBMSwxIDAgMCwwIDYsMjFIOEExLDEgMCAwLDAgOSwyMFYxNkgxMkwxNywyMFY0TDEyLDhNMjEuNSwxMkMyMS41LDEzLjcxIDIwLjU0LDE1LjI2IDE5LDE2VjhDMjAuNTMsOC43NSAyMS41LDEwLjMgMjEuNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsaG9ybk91dGxpbmUgPSBcIk0xMiw4SDRBMiwyIDAgMCwwIDIsMTBWMTRBMiwyIDAgMCwwIDQsMTZINVYyMEExLDEgMCAwLDAgNiwyMUg4QTEsMSAwIDAsMCA5LDIwVjE2SDEyTDE3LDIwVjRMMTIsOE0xNSwxNS42TDEzLDE0SDRWMTBIMTNMMTUsOC40VjE1LjZNMjEuNSwxMkMyMS41LDEzLjcxIDIwLjU0LDE1LjI2IDE5LDE2VjhDMjAuNTMsOC43NSAyMS41LDEwLjMgMjEuNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsc2V5ZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNE0xMiw2QTYsNiAwIDAsMCA2LDEyQTYsNiAwIDAsMCAxMiwxOEE2LDYgMCAwLDAgMTgsMTJBNiw2IDAgMCwwIDEyLDZNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4TTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsc2V5ZUFycm93ID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDEwLjg0IDIxLjc5LDkuNjkgMjEuMzksOC42MUwxOS43OSwxMC4yMUMxOS45MywxMC44IDIwLDExLjQgMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QzEyLjYsNCAxMy4yLDQuMDcgMTMuNzksNC4yMUwxNS40LDIuNkMxNC4zMSwyLjIxIDEzLjE2LDIgMTIsMk0xOSwyTDE1LDZWNy41TDEyLjQ1LDEwLjA1QzEyLjMsMTAgMTIuMTUsMTAgMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJDMTQsMTEuODUgMTQsMTEuNyAxMy45NSwxMS41NUwxNi41LDlIMThMMjIsNUgxOVYyTTEyLDZBNiw2IDAgMCwwIDYsMTJBNiw2IDAgMCwwIDEyLDE4QTYsNiAwIDAsMCAxOCwxMkgxNkE0LDQgMCAwLDEgMTIsMTZBNCw0IDAgMCwxIDgsMTJBNCw0IDAgMCwxIDEyLDhWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxtYSA9IFwiTTExLjM4IDJMNi4zOCA3TDUuMTMgMTUuNzVMMTEuMzggMjJMMTguODggMTdMMTMuODggMTJMMTcuNjMgOC4yNUwxMS4zOCAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1bmtCZWQgPSBcIk0xIDJWMjNIM1YyMUgyMVYyM0gyM1Y3QzIzIDQuNzkgMjEuMjEgMyAxOSAzSDEwVjhIM1YyTTYuNSAyQTIuNSAyLjUgMCAwIDAgNCA0LjVBMi41IDIuNSAwIDAgMCA2LjUgN0EyLjUgMi41IDAgMCAwIDkgNC41QTIuNSAyLjUgMCAwIDAgNi41IDJNMyAxMUgyMVYxMy41NkMyMC40MSAxMy4yMSAxOS43MyAxMyAxOSAxM0gxMFYxOEgzTTYuNSAxMkEyLjUgMi41IDAgMCAwIDQgMTQuNUEyLjUgMi41IDAgMCAwIDYuNSAxN0EyLjUgMi41IDAgMCAwIDkgMTQuNUEyLjUgMi41IDAgMCAwIDYuNSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdW5rQmVkT3V0bGluZSA9IFwiTTEgMkgzVjlIMTBWM0gxOUMyMS4yIDMgMjMgNC44IDIzIDdWMjNIMjFWMjFIM1YyM0gxVjJNMTIgNVY5SDIxVjdDMjEgNS45IDIwLjEgNSAxOSA1SDEyTTMgMTFWMTlIMTBWMTNIMTlDMTkuNyAxMyAyMC40IDEzLjIgMjEgMTMuNlYxMUgzTTYuNSAxM0M3LjkgMTMgOSAxNC4xIDkgMTUuNVM3LjkgMTggNi41IDE4IDQgMTYuOSA0IDE1LjUgNS4xIDEzIDYuNSAxM002LjUgMTQuNkM2IDE0LjYgNS42IDE1IDUuNiAxNS41UzYgMTYuNCA2LjUgMTYuNCA3LjQgMTYgNy40IDE1LjUgNyAxNC42IDYuNSAxNC42TTEyIDE1VjE5SDIxVjE3QzIxIDE1LjkgMjAuMSAxNSAxOSAxNUgxMk02LjUgM0M3LjkgMyA5IDQuMSA5IDUuNVM3LjkgOCA2LjUgOCA0IDYuOSA0IDUuNSA1LjEgMyA2LjUgM002LjUgNC42QzYgNC42IDUuNiA1IDUuNiA1LjVTNiA2LjQgNi41IDYuNCA3LjQgNiA3LjQgNS41IDcgNC42IDYuNSA0LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVzID0gXCJNMTgsMTFINlY2SDE4TTE2LjUsMTdBMS41LDEuNSAwIDAsMSAxNSwxNS41QTEuNSwxLjUgMCAwLDEgMTYuNSwxNEExLjUsMS41IDAgMCwxIDE4LDE1LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3TTcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxNEExLjUsMS41IDAgMCwxIDksMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN000LDE2QzQsMTYuODggNC4zOSwxNy42NyA1LDE4LjIyVjIwQTEsMSAwIDAsMCA2LDIxSDdBMSwxIDAgMCwwIDgsMjBWMTlIMTZWMjBBMSwxIDAgMCwwIDE3LDIxSDE4QTEsMSAwIDAsMCAxOSwyMFYxOC4yMkMxOS42MSwxNy42NyAyMCwxNi44OCAyMCwxNlY2QzIwLDIuNSAxNi40MiwyIDEyLDJDNy41OCwyIDQsMi41IDQsNlYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXNBbGVydCA9IFwiTTE2LDFBNyw3IDAgMCwxIDIzLDhDMjMsMTEuNTMgMjAuMzksMTQuNDUgMTcsMTQuOTNWMThDMTcsMTguODQgMTYuNjUsMTkuNTggMTUuOTYsMjAuMlYyMkMxNS45NiwyMi4yNyAxNS44NywyMi41IDE1LjY4LDIyLjcxQzE1LjUsMjIuOTEgMTUuMjYsMjMgMTUsMjNIMTRDMTMuNzEsMjMgMTMuNDcsMjIuOTEgMTMuMjcsMjIuNzFDMTMuMDYsMjIuNSAxMi45NiwyMi4yNyAxMi45NiwyMlYyMUg1LjA0VjIyQzUuMDQsMjIuMjcgNC45NCwyMi41IDQuNzMsMjIuNzFDNC41MywyMi45MSA0LjI5LDIzIDQsMjNIM0MyLjc0LDIzIDIuNSwyMi45MSAyLjMyLDIyLjcxQzIuMTMsMjIuNSAyLjA0LDIyLjI3IDIuMDQsMjJWMjAuMkMxLjM1LDE5LjU4IDEsMTguODQgMSwxOFY4QzEsNi40MiAxLjcsNS4zNSAzLjA3LDQuOEM0LjQ0LDQuMjYgNi40Miw0IDksNEwxMC4yMyw0LjAzQzExLjUsMi4yIDEzLjYxLDEgMTYsMU0xNiwzQTUsNSAwIDAsMCAxMSw4QTUsNSAwIDAsMCAxNiwxM0E1LDUgMCAwLDAgMjEsOEE1LDUgMCAwLDAgMTYsM00xNSwxMEgxN1YxMkgxNVYxME0xNSw0SDE3VjlIMTVWNE0zLDEzSDExLjA5QzkuOCwxMS43MiA5LDkuOTYgOSw4SDNWMTNNNC41LDE2QzMuNjksMTYgMywxNi42NyAzLDE3LjVBMS41LDEuNSAwIDAsMCA0LjUsMTlDNS4zNSwxOSA2LDE4LjMzIDYsMTcuNUExLjUsMS41IDAgMCwwIDQuNSwxNk0xMy41LDE2QzEyLjY1LDE2IDEyLDE2LjY3IDEyLDE3LjVBMS41LDEuNSAwIDAsMCAxMy41LDE5QzE0LjMxLDE5IDE1LDE4LjMzIDE1LDE3LjVBMS41LDEuNSAwIDAsMCAxMy41LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c0FydGljdWxhdGVkRW5kID0gXCJNMjEuNSw2TDIwLDcuNUwyMS41LDlMMjAsMTAuNUwyMS41LDEyTDIwLDEzLjVMMjEuNSwxNUgxMi41QTMsMyAwIDAsMSA5LjUsMThBMywzIDAgMCwxIDYuNSwxNUgyLjVWOEMyLjUsNi44OSAzLjM5LDYgNC41LDZIMjEuNU0xOC41LDcuNUgxNVYxMEgxOC41VjcuNU0xMy41LDcuNUg5LjVWMTBIMTMuNVY3LjVNOCw3LjVINFYxMEg4VjcuNU05LjUsMTMuNUExLjUsMS41IDAgMCwwIDgsMTVBMS41LDEuNSAwIDAsMCA5LjUsMTYuNUExLjUsMS41IDAgMCwwIDExLDE1QTEuNSwxLjUgMCAwLDAgOS41LDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVzQXJ0aWN1bGF0ZWRGcm9udCA9IFwiTTEsNkwyLjUsNy41TDEsOUwyLjUsMTAuNUwxLDEyTDIuNSwxMy41TDEsMTVIM0EzLDMgMCAwLDAgNiwxOEEzLDMgMCAwLDAgOSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjhDMjMsNi44OSAyMi4xMSw2IDIxLDZIMU00LDcuNUg2LjVWMTBINFY3LjVNOCw3LjVIMTJWMTBIOFY3LjVNMTMuNSw3LjVIMTcuNVYxMEgxMy41VjcuNU0xOSw3LjVIMjEuNVYxM0wxOSwxMVY3LjVNNiwxMy41QTEuNSwxLjUgMCAwLDEgNy41LDE1QTEuNSwxLjUgMCAwLDEgNiwxNi41QTEuNSwxLjUgMCAwLDEgNC41LDE1QTEuNSwxLjUgMCAwLDEgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTYuNUExLjUsMS41IDAgMCwxIDE2LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c0Nsb2NrID0gXCJNMTYuNSw0VjguMjVMMTkuMzYsOS45NEwxOC42MSwxMS4xNkwxNSw5VjRIMTYuNU0xNiwxM0MxNy4zNiwxMyAxOC41NCwxMi41IDE5LjUsMTEuNTNDMjAuNSwxMC41NiAyMSw5LjM5IDIxLDhDMjEsNi42NCAyMC41LDUuNDYgMTkuNSw0LjVDMTguNTQsMy41IDE3LjM2LDMgMTYsM0MxNC42MSwzIDEzLjQ0LDMuNSAxMi40Nyw0LjVDMTEuNSw1LjQ2IDExLDYuNjQgMTEsOEMxMSw5LjM5IDExLjUsMTAuNTYgMTIuNDcsMTEuNTNDMTMuNDQsMTIuNSAxNC42MSwxMyAxNiwxM00xMy41LDE5QzEzLjk0LDE5IDE0LjMsMTguODQgMTQuNTgsMTguNTRDMTQuODYsMTguMjQgMTUsMTcuODkgMTUsMTcuNUMxNSwxNy4wOCAxNC44NiwxNi43MyAxNC41OCwxNi40M0MxNC4zLDE2LjEzIDEzLjk0LDE2IDEzLjUsMTZDMTMuMDYsMTYgMTIuNywxNi4xMyAxMi40MiwxNi40M0MxMi4xNCwxNi43MyAxMiwxNy4wOCAxMiwxNy41QzEyLDE3Ljg5IDEyLjE0LDE4LjI0IDEyLjQyLDE4LjU0QzEyLjcsMTguODQgMTMuMDYsMTkgMTMuNSwxOU0zLDEzSDExLjExQzkuNywxMS42NCA5LDEwIDksOEgzVjEzTTQuNSwxOUM0Ljk0LDE5IDUuMywxOC44NCA1LjU4LDE4LjU0QzUuODYsMTguMjQgNiwxNy44OSA2LDE3LjVDNiwxNy4wOCA1Ljg2LDE2LjczIDUuNTgsMTYuNDNDNS4zLDE2LjEzIDQuOTQsMTYgNC41LDE2QzQuMDYsMTYgMy43LDE2LjEzIDMuNDIsMTYuNDNDMy4xNCwxNi43MyAzLDE3LjA4IDMsMTcuNUMzLDE3Ljg5IDMuMTQsMTguMjQgMy40MiwxOC41NEMzLjcsMTguODQgNC4wNiwxOSA0LjUsMTlNMTYsMUMxNy45MiwxIDE5LjU4LDEuNjcgMjAuOTUsMy4wNUMyMi4zMyw0LjQyIDIzLDYuMDggMjMsOEMyMyw5Ljc3IDIyLjQ0LDExLjI5IDIxLjI4LDEyLjU5QzIwLjEzLDEzLjg4IDE4LjcsMTQuNjYgMTcsMTQuOTFWMThDMTcsMTguODQgMTYuNjcsMTkuNTggMTYsMjAuMlYyMkMxNiwyMi4yNyAxNS44OSwyMi41IDE1LjcsMjIuNzFDMTUuNSwyMi45MSAxNS4yOCwyMyAxNSwyM0gxNEMxMy43MywyMyAxMy41LDIyLjkxIDEzLjI5LDIyLjcxQzEzLjA5LDIyLjUgMTMsMjIuMjcgMTMsMjJWMjFINVYyMkM1LDIyLjI3IDQuOTEsMjIuNSA0LjcxLDIyLjcxQzQuNSwyMi45MSA0LjI3LDIzIDQsMjNIM0MyLjcyLDIzIDIuNSwyMi45MSAyLjMsMjIuNzFDMi4xMSwyMi41IDIsMjIuMjcgMiwyMlYyMC4yQzEuMzMsMTkuNTggMSwxOC44NCAxLDE4VjhDMSw2LjQyIDEuNjcsNS4zNSAzLjA1LDQuOEM0LjQyLDQuMjYgNi40MSw0IDksNEM5LjEzLDQgOS4zMyw0IDkuNjEsNEM5Ljg5LDQgMTAuMDksNC4wMyAxMC4yMiw0LjAzQzExLjYzLDIgMTMuNTUsMSAxNiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c0RvdWJsZURlY2tlciA9IFwiTTMsNEMxLjg5LDQgMSw0Ljg5IDEsNlYxN0gzQTMsMyAwIDAsMCA2LDIwQTMsMyAwIDAsMCA5LDE3SDE1QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdIMjNWMTRDMjMsMTIuODkgMjIuMTEsMTIgMjEsMTJIMTlWOS41SDIzVjZDMjMsNC44OSAyMi4xMSw0IDIxLDRIM00yLjUsNS41SDYuNVY4SDIuNVY1LjVNOCw1LjVIMTJWOEg4VjUuNU0xMy41LDUuNUgxNy41VjhIMTMuNVY1LjVNMTksNS41SDIxLjVWOEgxOVY1LjVNMTMuNSw5LjVIMTcuNVYxMkgxMy41VjkuNU0yLjUsOS41SDYuNVYxMkgyLjVWOS41TTgsOS41SDEyVjEySDhWOS41TTYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTguNUExLjUsMS41IDAgMCwxIDQuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNU0xOCwxNS41QTEuNSwxLjUgMCAwLDEgMTkuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE4LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXNNYXJrZXIgPSBcIk0xMiAyQzcuNTggMiA0IDIuNSA0IDZWMTZBMyAzIDAgMCAwIDUgMTguMjJWMjBBMSAxIDAgMCAwIDYgMjFIN0ExIDEgMCAwIDAgOCAyMFYxOUgxNEE4IDggMCAwIDEgMTMgMTUuNUE1LjU1IDUuNTUgMCAwIDEgMTUuMzggMTFINlY2SDE4VjEwQTQuMDcgNC4wNyAwIDAgMSAxOC41IDEwQTUuMzQgNS4zNCAwIDAgMSAyMCAxMC4yMlY2QzIwIDIuNSAxNi40MiAyIDEyIDJNNy41IDE0QTEuNSAxLjUgMCAxIDEgNiAxNS41QTEuNSAxLjUgMCAwIDEgNy41IDE0TTE4LjUgMTJBMy41NCAzLjU0IDAgMCAwIDE1IDE1LjVDMTUgMTguMSAxOC41IDIyIDE4LjUgMjJTMjIgMTguMSAyMiAxNS41QTMuNTQgMy41NCAwIDAgMCAxOC41IDEyTTE4LjUgMTYuOEExLjIgMS4yIDAgMSAxIDE4LjUgMTQuNEExLjI5IDEuMjkgMCAwIDEgMTkuNyAxNS42QTEuMTUgMS4xNSAwIDAgMSAxOC41IDE2LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVzTXVsdGlwbGUgPSBcIk0xMCA1QzUuNTggNSAyIDUuNSAyIDlWMTlDMiAxOS44NSAyLjM3IDIwLjY2IDMgMjEuMjJWMjNDMyAyMy41NSAzLjQ1IDI0IDQgMjRINUM1LjU1IDI0IDYgMjMuNTUgNiAyM1YyMkgxNFYyM0MxNCAyMy41NSAxNC40NSAyNCAxNSAyNEgxNkMxNi41NSAyNCAxNyAyMy41NSAxNyAyM1YyMS4yMkMxNy42MyAyMC42NiAxOCAxOS44NSAxOCAxOVY5QzE4IDUuNSAxNC40MiA1IDEwIDVNNS41IDIwQzQuNjcgMjAgNCAxOS4zMyA0IDE4LjVTNC42NyAxNyA1LjUgMTcgNyAxNy42NyA3IDE4LjUgNi4zMyAyMCA1LjUgMjBNMTQuNSAyMEMxMy42NyAyMCAxMyAxOS4zMyAxMyAxOC41UzEzLjY3IDE3IDE0LjUgMTcgMTYgMTcuNjcgMTYgMTguNSAxNS4zMyAyMCAxNC41IDIwTTE2IDE0SDRWOUgxNlYxNE0yMiA1VjE1QzIyIDE1Ljg1IDIxLjYzIDE2LjY2IDIxIDE3LjIyVjE5QzIxIDE5LjU1IDIwLjU1IDIwIDIwIDIwSDE5Ljg4QzE5Ljk1IDE5LjY4IDIwIDE5LjM1IDIwIDE5VjlDMjAgMyAxMyAzIDEwIDNDOS4wOSAzIDcuOCAzIDYuNDYgMy4xN0M3LjU1IDEuMzIgMTAuNSAxIDE0IDFDMTguNDIgMSAyMiAxLjUgMjIgNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXNTY2hvb2wgPSBcIk0zLDZDMS44OSw2IDEsNi44OSAxLDhWMTVIM0EzLDMgMCAwLDAgNiwxOEEzLDMgMCAwLDAgOSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjEyQzIzLDEwLjg5IDIyLjExLDEwIDIxLDEwSDE5VjhDMTksNi44OSAxOC4xMSw2IDE3LDZIM00xMy41LDcuNUgxNy41VjEwSDEzLjVWNy41TTIuNSw3LjVINi41VjEwSDIuNVY3LjVNOCw3LjVIMTJWMTBIOFY3LjVNNiwxMy41QTEuNSwxLjUgMCAwLDEgNy41LDE1QTEuNSwxLjUgMCAwLDEgNiwxNi41QTEuNSwxLjUgMCAwLDEgNC41LDE1QTEuNSwxLjUgMCAwLDEgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTYuNUExLjUsMS41IDAgMCwxIDE2LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c1NpZGUgPSBcIk0zLDZDMS44OSw2IDEsNi44OSAxLDhWMTVIM0EzLDMgMCAwLDAgNiwxOEEzLDMgMCAwLDAgOSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjhDMjMsNi44OSAyMi4xMSw2IDIxLDZIM00yLjUsNy41SDYuNVYxMEgyLjVWNy41TTgsNy41SDEyVjEwSDhWNy41TTEzLjUsNy41SDE3LjVWMTBIMTMuNVY3LjVNMTksNy41SDIxLjVWMTNMMTksMTFWNy41TTYsMTMuNUExLjUsMS41IDAgMCwxIDcuNSwxNUExLjUsMS41IDAgMCwxIDYsMTYuNUExLjUsMS41IDAgMCwxIDQuNSwxNUExLjUsMS41IDAgMCwxIDYsMTMuNU0xOCwxMy41QTEuNSwxLjUgMCAwLDEgMTkuNSwxNUExLjUsMS41IDAgMCwxIDE4LDE2LjVBMS41LDEuNSAwIDAsMSAxNi41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXNTdG9wID0gXCJNMjIgN1YxNkMyMiAxNi43MSAyMS42MiAxNy4zNiAyMSAxNy43MlYxOS4yNUMyMSAxOS42NiAyMC42NiAyMCAyMC4yNSAyMEgxOS43NUMxOS4zNCAyMCAxOSAxOS42NiAxOSAxOS4yNVYxOEgxMlYxOS4yNUMxMiAxOS42NiAxMS42NiAyMCAxMS4yNSAyMEgxMC43NUMxMC4zNCAyMCAxMCAxOS42NiAxMCAxOS4yNVYxNy43MkM5LjM5IDE3LjM2IDkgMTYuNzEgOSAxNlY3QzkgNCAxMiA0IDE1LjUgNFMyMiA0IDIyIDdNMTMgMTVDMTMgMTQuNDUgMTIuNTUgMTQgMTIgMTRTMTEgMTQuNDUgMTEgMTUgMTEuNDUgMTYgMTIgMTYgMTMgMTUuNTUgMTMgMTVNMjAgMTVDMjAgMTQuNDUgMTkuNTUgMTQgMTkgMTRTMTggMTQuNDUgMTggMTUgMTguNDUgMTYgMTkgMTYgMjAgMTUuNTUgMjAgMTVNMjAgN0gxMVYxMUgyMFY3TTcgOS41QzYuOTcgOC4xMiA1LjgzIDcgNC40NSA3LjA1QzMuMDcgNy4wOCAxLjk3IDguMjIgMiA5LjZDMi4wMyAxMC43NyAyLjg2IDExLjc3IDQgMTJWMjBINVYxMkM2LjE4IDExLjc2IDcgMTAuNzEgNyA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVzU3RvcENvdmVyZWQgPSBcIk0yMCAzSDdWMkg2QTEuNzggMS43OCAwIDAgMCA0LjU5IDNIMlY1SDMuNzNDMiAxMC41OCAyIDIyIDIgMjJIN1Y1SDIwTTIyIDguNUEyLjUgMi41IDAgMSAwIDE5IDExVjIySDIwVjExQTIuNSAyLjUgMCAwIDAgMjIgOC41TTE1IDExLjVWMTZIMTRWMjJIMTIuNVYxN0gxMS41VjIySDEwVjE2SDlWMTEuNUExLjUgMS41IDAgMCAxIDEwLjUgMTBIMTMuNUExLjUgMS41IDAgMCAxIDE1IDExLjVNMTIgNi41QTEuNSAxLjUgMCAxIDAgMTMuNSA4QTEuNSAxLjUgMCAwIDAgMTIgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c1N0b3BVbmNvdmVyZWQgPSBcIk02IDIyVjE5SDRWMjJIMlYxNEExIDEgMCAwIDEgMyAxM0ExIDEgMCAwIDEgNCAxNFYxN0g3QTEgMSAwIDAgMSA4IDE4VjIyTTIwIDExVjIySDE5VjExQTIuNSAyLjUgMCAxIDEgMjAgMTFNMTUgMTEuNTVWMTZIMTRWMjJIMTIuNVYxN0gxMS41VjIySDEwVjE2SDlWMTEuNUExLjUgMS41IDAgMCAxIDEwLjUgMTBIMTMuNUExLjUgMS41IDAgMCAxIDE1IDExLjVNMTIgNi41NUExLjUgMS41IDAgMSAwIDEzLjUgOEExLjUgMS41IDAgMCAwIDEyIDYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXR0ZXJmbHkgPSBcIk0xMyAyMUgxMVY2TDkuMDMgMy45N0wxMCAzTDEyIDVMMTQgM0wxNSA0TDEzIDZWMjFNNyA2QzQuMjQgNiAyIDguMjQgMiAxMUMyIDEyLjY0IDIuNzkgMTQuMDkgNCAxNUg0VjE3QzQgMTkuMjEgNS43OSAyMSA4IDIxQzguNzIgMjEgOS4zOSAyMC44MSA5Ljk3IDIwLjVMMTAgMjAuNDZWN0M5LjE2IDYuMzcgOC4xMyA2IDcgNk02LjUgMTIuNUw1IDExTDYuNSA5LjVMOCAxMUw2LjUgMTIuNU0yMiAxMUMyMiA4LjI0IDE5Ljc2IDYgMTcgNkMxNS44OCA2IDE0Ljg1IDYuMzcgMTQgN0wxNCA3VjIwLjQ2QzE0LjU5IDIwLjgxIDE1LjI3IDIxIDE2IDIxQzE4LjIxIDIxIDIwIDE5LjIxIDIwIDE3VjE1SDIwQzIxLjIxIDE0LjA5IDIyIDEyLjY0IDIyIDExTTE3LjUgMTIuNUwxNiAxMUwxNy41IDkuNUwxOSAxMUwxNy41IDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnV0dGVyZmx5T3V0bGluZSA9IFwiTTEzIDIxSDExVjZMOS4wMyAzLjk3TDEwIDNMMTIgNUwxNCAzTDE1IDRMMTMgNlYyMU0xNCA5SDE0VjdDMTQuODQgNi4zNyAxNS44OCA2IDE3IDZDMTkuNzYgNiAyMiA4LjI0IDIyIDExQzIyIDEyLjY0IDIxLjIxIDE0LjA5IDIwIDE1SDIwVjE3QzIwIDE5LjIxIDE4LjIxIDIxIDE2IDIxQzE1LjI3IDIxIDE0LjU5IDIwLjgxIDE0IDIwLjQ2VjE4LjQ2QzE0LjU5IDE4LjgxIDE1LjI3IDE5IDE2IDE5QzE3LjEgMTkgMTggMTguMSAxOCAxN1YxMy44M0MxOS4xNyAxMy40MiAyMCAxMi4zMSAyMCAxMUMyMCA5LjM1IDE4LjY3IDggMTcgOEgxN0MxNS44OCA4IDE0Ljg0IDguMzcgMTQgOU0xMCA5SDEwQzkuMTYgOC4zNyA4LjEzIDggNyA4SDdDNS4zMyA4IDQgOS4zNSA0IDExQzQgMTIuMzEgNC44NCAxMy40MiA2IDEzLjgzVjE3QzYgMTguMSA2LjkgMTkgOCAxOUM4LjczIDE5IDkuNDEgMTguODEgMTAgMTguNDZWMjAuNDZDOS40MSAyMC44MSA4LjczIDIxIDggMjFDNS43OSAyMSA0IDE5LjIxIDQgMTdWMTVINEMyLjc5IDE0LjA5IDIgMTIuNjQgMiAxMUMyIDguMjQgNC4yNCA2IDcgNkM4LjEzIDYgOS4xNiA2LjM3IDEwIDdWOU05IDExTDcuNSA5LjVMNiAxMUw3LjUgMTIuNUw5IDExTTE4IDExTDE2LjUgOS41TDE1IDExTDE2LjUgMTIuNUwxOCAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWJsZURhdGEgPSBcIk03LjA1IDMuNUM1LjY4IDQuODggNS42OCA3LjEgNy4wNSA4LjQ3TDE1LjU0IDE2Ljk1QzE2LjEyIDE3LjU0IDE2LjEyIDE4LjUgMTUuNTQgMTkuMDdDMTQuOTUgMTkuNjYgMTQgMTkuNjYgMTMuNDEgMTkuMDdMOS4xNyAxNC44M0wxMC4yMyAxMy43N0w2LjcgMTAuMjNMNi4zNCAxMC41OUw0LjkzIDkuMTdDNC41NCA4Ljc4IDMuOTEgOC43OCAzLjUgOS4xN0wyLjEgMTAuNTlDMS43MSAxMSAxLjcxIDExLjYxIDIuMSAxMkwzLjUgMTMuNDFMMy4xNiAxMy43N0w2LjcgMTcuM0w3Ljc2IDE2LjI0TDEyIDIwLjVDMTMuMzcgMjEuODUgMTUuNTggMjEuODUgMTYuOTUgMjAuNUMxOC4zMiAxOS4xMiAxOC4zMiAxNi45IDE2Ljk1IDE1LjU0TDguNDYgNy4wNUM3Ljg4IDYuNDYgNy44OCA1LjUgOC40NiA0LjkzQzkuMDUgNC4zNCAxMCA0LjM0IDEwLjU5IDQuOTNMMTQuODMgOS4xN0wxMy43NyAxMC4yM0wxNy4zIDEzLjc3TDE3LjY2IDEzLjQxTDE5LjA3IDE0LjgzQzE5LjQ2IDE1LjIyIDIwLjEgMTUuMjIgMjAuNSAxNC44M0wyMS45IDEzLjQxQzIyLjI5IDEzIDIyLjI5IDEyLjM5IDIxLjkgMTJMMjAuNSAxMC41OUwyMC44NCAxMC4yM0wxNy4zIDYuN0wxNi4yNCA3Ljc2TDEyIDMuNUMxMC42MyAyLjE1IDguNDIgMi4xNSA3LjA1IDMuNU0yLjgxIDExLjI5TDQuMjIgOS44OEw1LjY0IDExLjI5TDQuMjIgMTIuNzFNMTguMzYgMTIuNzFMMTkuNzggMTEuMjlMMjEuMTkgMTIuNzFMMTkuNzggMTQuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FjaGVkID0gXCJNMTksOEwxNSwxMkgxOEE2LDYgMCAwLDEgMTIsMThDMTEsMTggMTAuMDMsMTcuNzUgOS4yLDE3LjNMNy43NCwxOC43NkM4Ljk3LDE5LjU0IDEwLjQzLDIwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkgyM002LDEyQTYsNiAwIDAsMSAxMiw2QzEzLDYgMTMuOTcsNi4yNSAxNC44LDYuN0wxNi4yNiw1LjI0QzE1LjAzLDQuNDYgMTMuNTcsNCAxMiw0QTgsOCAwIDAsMCA0LDEySDFMNSwxNkw5LDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FjdHVzID0gXCJNMTQsMTZWMjFIMTBWMThIOUEzLDMgMCAwLDEgNiwxNVYxMkExLDEgMCAwLDEgNywxMUExLDEgMCAwLDEgOCwxMlYxNUM4LDE1LjU2IDguNDUsMTYgOSwxNkgxMFY2QTIsMiAwIDAsMSAxMiw0QTIsMiAwIDAsMSAxNCw2VjE0SDE1QTEsMSAwIDAsMCAxNiwxM1YxMUExLDEgMCAwLDEgMTcsMTBBMSwxIDAgMCwxIDE4LDExVjEzQTMsMyAwIDAsMSAxNSwxNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWtlID0gXCJNMTEuNSwwLjVDMTIsMC43NSAxMywyLjQgMTMsMy41QzEzLDQuNiAxMi4zMyw1IDExLjUsNUMxMC42Nyw1IDEwLDQuODUgMTAsMy43NUMxMCwyLjY1IDExLDIgMTEuNSwwLjVNMTguNSw5QzIxLDkgMjMsMTEgMjMsMTMuNUMyMywxNS4wNiAyMi4yMSwxNi40MyAyMSwxNy4yNFYyM0gxMkwzLDIzVjE3LjI0QzEuNzksMTYuNDMgMSwxNS4wNiAxLDEzLjVDMSwxMSAzLDkgNS41LDlIMTBWNkgxM1Y5SDE4LjVNMTIsMTZBMi41LDIuNSAwIDAsMCAxNC41LDEzLjVIMTZBMi41LDIuNSAwIDAsMCAxOC41LDE2QTIuNSwyLjUgMCAwLDAgMjEsMTMuNUEyLjUsMi41IDAgMCwwIDE4LjUsMTFINS41QTIuNSwyLjUgMCAwLDAgMywxMy41QTIuNSwyLjUgMCAwLDAgNS41LDE2QTIuNSwyLjUgMCAwLDAgOCwxMy41SDkuNUEyLjUsMi41IDAgMCwwIDEyLDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNha2VMYXllcmVkID0gXCJNMjEsMjFWMTdDMjEsMTUuODkgMjAuMSwxNSAxOSwxNUgxOFYxMkMxOCwxMC44OSAxNy4xLDEwIDE2LDEwSDEzVjhIMTFWMTBIOEM2Ljg5LDEwIDYsMTAuODkgNiwxMlYxNUg1QzMuODksMTUgMywxNS44OSAzLDE3VjIxSDFWMjNIMjNWMjFNMTIsN0EyLDIgMCAwLDAgMTQsNUMxNCw0LjYyIDEzLjksNC4yNyAxMy43MSwzLjk3TDEyLDFMMTAuMjgsMy45N0MxMC4xLDQuMjcgMTAsNC42MiAxMCw1QTIsMiAwIDAsMCAxMiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNha2VWYXJpYW50ID0gXCJNMTIsNkMxMy4xMSw2IDE0LDUuMSAxNCw0QzE0LDMuNjIgMTMuOSwzLjI3IDEzLjcxLDIuOTdMMTIsMEwxMC4yOSwyLjk3QzEwLjEsMy4yNyAxMCwzLjYyIDEwLDRBMiwyIDAgMCwwIDEyLDZNMTYuNiwxNkwxNS41MywxNC45MkwxNC40NSwxNkMxMy4xNSwxNy4yOSAxMC44NywxNy4zIDkuNTYsMTZMOC41LDE0LjkyTDcuNCwxNkM2Ljc1LDE2LjY0IDUuODgsMTcgNC45NiwxN0M0LjIzLDE3IDMuNTYsMTYuNzcgMywxNi4zOVYyMUExLDEgMCAwLDAgNCwyMkgyMEExLDEgMCAwLDAgMjEsMjFWMTYuMzlDMjAuNDQsMTYuNzcgMTkuNzcsMTcgMTkuMDQsMTdDMTguMTIsMTcgMTcuMjUsMTYuNjQgMTYuNiwxNk0xOCw5SDEzVjdIMTFWOUg2QTMsMyAwIDAsMCAzLDEyVjEzLjU0QzMsMTQuNjIgMy44OCwxNS41IDQuOTYsMTUuNUM1LjUsMTUuNSA2LDE1LjMgNi4zNCwxNC45M0w4LjUsMTIuOEwxMC42MSwxNC45M0MxMS4zNSwxNS42NyAxMi42NCwxNS42NyAxMy4zOCwxNC45M0wxNS41LDEyLjhMMTcuNjUsMTQuOTNDMTgsMTUuMyAxOC41LDE1LjUgMTkuMDMsMTUuNUMyMC4xMSwxNS41IDIxLDE0LjYyIDIxLDEzLjU0VjEyQTMsMyAwIDAsMCAxOCw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGN1bGF0b3IgPSBcIk03LDJIMTdBMiwyIDAgMCwxIDE5LDRWMjBBMiwyIDAgMCwxIDE3LDIySDdBMiwyIDAgMCwxIDUsMjBWNEEyLDIgMCAwLDEgNywyTTcsNFY4SDE3VjRIN003LDEwVjEySDlWMTBIN00xMSwxMFYxMkgxM1YxMEgxMU0xNSwxMFYxMkgxN1YxMEgxNU03LDE0VjE2SDlWMTRIN00xMSwxNFYxNkgxM1YxNEgxMU0xNSwxNFYxNkgxN1YxNEgxNU03LDE4VjIwSDlWMThIN00xMSwxOFYyMEgxM1YxOEgxMU0xNSwxOFYyMEgxN1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxjdWxhdG9yVmFyaWFudCA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMyA3LjFMMTQuMSA2TDE1LjUgNy40TDE2LjkgNkwxOCA3LjFMMTYuNiA4LjVMMTggOS45TDE2LjkgMTFMMTUuNSA5LjZMMTQuMSAxMUwxMyA5LjlMMTQuNCA4LjVMMTMgNy4xTTYuMiA3LjdIMTEuMlY5LjJINi4yVjcuN00xMS41IDE2SDkuNVYxOEg4VjE2SDZWMTQuNUg4VjEyLjVIOS41VjE0LjVIMTEuNVYxNk0xOCAxNy4ySDEzVjE1LjdIMThWMTcuMk0xOCAxNC44SDEzVjEzLjNIMThWMTQuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxjdWxhdG9yVmFyaWFudE91dGxpbmUgPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTkgMTlINVY1SDE5VjE5TTYuMiA3LjdIMTEuMlY5LjJINi4yVjcuN00xMyAxNS44SDE4VjE3LjNIMTNWMTUuOE0xMyAxMy4ySDE4VjE0LjdIMTNWMTMuMk04IDE4SDkuNVYxNkgxMS41VjE0LjVIOS41VjEyLjVIOFYxNC41SDZWMTZIOFYxOE0xNC4xIDEwLjlMMTUuNSA5LjVMMTYuOSAxMC45TDE4IDkuOUwxNi42IDguNUwxOCA3LjFMMTYuOSA2TDE1LjUgNy40TDE0LjEgNkwxMyA3LjFMMTQuNCA4LjVMMTMgOS45TDE0LjEgMTAuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhciA9IFwiTTE5LDE5SDVWOEgxOU0xNiwxVjNIOFYxSDZWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNIMThWMU0xNywxMkgxMlYxN0gxN1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckFjY291bnQgPSBcIk0xMiwxMEMxNCwxMCAxNSwxMi40MiAxMy41OSwxMy44NEMxMi4xNywxNS4yNiA5Ljc1LDE0LjI1IDkuNzUsMTIuMjVDOS43NSwxMSAxMC43NSwxMCAxMiwxME0xNi41LDE5SDcuNVYxNy44OEM3LjUsMTYuNjMgOS41LDE1LjYzIDEyLDE1LjYzQzE0LjUsMTUuNjMgMTYuNSwxNi42MyAxNi41LDE3Ljg4TTE5LDIwSDVWOUgxOU0xNiwyVjRIOFYySDZWNEg1QTIsMiAwIDAsMCAzLDZWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjZBMiwyIDAgMCwwIDE5LDRIMThWMkgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckFjY291bnRPdXRsaW5lID0gXCJNMTksNEgxOFYySDE2VjRIOFYySDZWNEg1QTIsMiAwIDAsMCAzLDZWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjZBMiwyIDAgMCwwIDE5LDRNMTksMjBINVYxMEgxOVYyME0xOSw4SDVWNkgxOU0xMiwxMUMxNCwxMSAxNSwxMy40MiAxMy41OSwxNC44NEMxMi4xNywxNi4yNiA5Ljc1LDE1LjI1IDkuNzUsMTMuMjVDOS43NSwxMiAxMC43NSwxMSAxMiwxMU0xNi41LDE4Ljg4VjE5SDcuNVYxOC44OEM3LjUsMTcuNjMgOS41LDE2LjYzIDEyLDE2LjYzQzE0LjUsMTYuNjMgMTYuNSwxNy42MyAxNi41LDE4Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyQWxlcnQgPSBcIk02IDFWM0g1QzMuODkgMyAzIDMuODkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzSDE4VjFIMTZWM0g4VjFINk01IDhIMTlWMTlINVY3TTExIDlWMTRIMTNWOUgxMU0xMSAxNlYxOEgxM1YxNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckFycm93TGVmdCA9IFwiTTE5IDNIMThWMUgxNlYzSDhWMUg2VjNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuODkgMjAuMSAzIDE5IDNNMTkgMTlINVY4SDE5VjE5TTEyIDEwVjEySDE2VjE1SDEyVjE3TDggMTMuNUwxMiAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckFycm93UmlnaHQgPSBcIk0xOSAzSDE4VjFIMTZWM0g4VjFINlYzSDVDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xIDMuODkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjg5IDIwLjEgMyAxOSAzTTE5IDE5SDVWOEgxOVYxOU0xMiAxN1YxNUg4VjEySDEyVjEwTDE2IDEzLjVMMTIgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJCbGFuayA9IFwiTTE5LDE5SDVWOEgxOU0xNiwxVjNIOFYxSDZWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNIMThWMVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyQmxhbmtNdWx0aXBsZSA9IFwiTTIxIDE3VjhIN1YxN0gyMU0yMSAzQzIyLjEgMyAyMyAzLjkgMjMgNVYxN0MyMyAxOC4xIDIyLjEgMTkgMjEgMTlIN0M1Ljg5IDE5IDUgMTguMSA1IDE3VjVDNSAzLjkgNS45IDMgNyAzSDhWMUgxMFYzSDE4VjFIMjBWM0gyMU0zIDIxSDE3VjIzSDNDMS44OSAyMyAxIDIyLjEgMSAyMVY5SDNWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJCbGFua091dGxpbmUgPSBcIk0xOSw0SDE4VjJIMTZWNEg4VjJINlY0SDVDMy44OSw0IDMsNC45IDMsNlYyMEEyLDIgMCAwLDAgNSwyMkgxOUEyLDIgMCAwLDAgMjEsMjBWNkEyLDIgMCAwLDAgMTksNE0xOSwyMEg1VjEwSDE5VjIwTTE5LDhINVY2SDE5VjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJDaGVjayA9IFwiTTE5LDE5SDVWOEgxOU0xOSwzSDE4VjFIMTZWM0g4VjFINlYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xNi41MywxMS4wNkwxNS40NywxMEwxMC41OSwxNC44OEw4LjQ3LDEyLjc2TDcuNDEsMTMuODJMMTAuNTksMTdMMTYuNTMsMTEuMDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJDaGVja091dGxpbmUgPSBcIk0xOSw0SDE4VjJIMTZWNEg4VjJINlY0SDVBMiwyIDAgMCwwIDMsNlYyMEEyLDIgMCAwLDAgNSwyMkgxOUEyLDIgMCAwLDAgMjEsMjBWNkEyLDIgMCAwLDAgMTksNE0xOSwyMEg1VjEwSDE5VjIwTTUsOFY2SDE5VjhINU0xMC41NiwxOC40NkwxNi41LDEyLjUzTDE1LjQzLDExLjQ3TDEwLjU2LDE2LjM0TDguNDUsMTQuMjNMNy4zOSwxNS4yOUwxMC41NiwxOC40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckNsb2NrID0gXCJNMTUsMTNIMTYuNVYxNS44MkwxOC45NCwxNy4yM0wxOC4xOSwxOC41M0wxNSwxNi42OVYxM00xOSw4SDVWMTlIOS42N0M5LjI0LDE4LjA5IDksMTcuMDcgOSwxNkE3LDcgMCAwLDEgMTYsOUMxNy4wNyw5IDE4LjA5LDkuMjQgMTksOS42N1Y4TTUsMjFDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDZWMUg4VjNIMTZWMUgxOFYzSDE5QTIsMiAwIDAsMSAyMSw1VjExLjFDMjIuMjQsMTIuMzYgMjMsMTQuMDkgMjMsMTZBNyw3IDAgMCwxIDE2LDIzQzE0LjA5LDIzIDEyLjM2LDIyLjI0IDExLjEsMjFINU0xNiwxMS4xNUE0Ljg1LDQuODUgMCAwLDAgMTEuMTUsMTZDMTEuMTUsMTguNjggMTMuMzIsMjAuODUgMTYsMjAuODVBNC44NSw0Ljg1IDAgMCwwIDIwLjg1LDE2QzIwLjg1LDEzLjMyIDE4LjY4LDExLjE1IDE2LDExLjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyQ2xvY2tPdXRsaW5lID0gXCJNNiAxVjNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDExLjFDMTIuMzYgMjIuMjQgMTQuMDkgMjMgMTYgMjNDMTkuODcgMjMgMjMgMTkuODcgMjMgMTZDMjMgMTQuMDkgMjIuMjQgMTIuMzYgMjEgMTEuMVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMThWMUgxNlYzSDhWMU01IDVIMTlWN0g1TTUgOUgxOVY5LjY3QzE4LjA5IDkuMjQgMTcuMDcgOSAxNiA5QzEyLjEzIDkgOSAxMi4xMyA5IDE2QzkgMTcuMDcgOS4yNCAxOC4wOSA5LjY3IDE5SDVNMTYgMTEuMTVDMTguNjggMTEuMTUgMjAuODUgMTMuMzIgMjAuODUgMTZDMjAuODUgMTguNjggMTguNjggMjAuODUgMTYgMjAuODVDMTMuMzIgMjAuODUgMTEuMTUgMTguNjggMTEuMTUgMTZDMTEuMTUgMTMuMzIgMTMuMzIgMTEuMTUgMTYgMTEuMTVNMTUgMTNWMTYuNjlMMTguMTkgMTguNTNMMTguOTQgMTcuMjNMMTYuNSAxNS44MlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckN1cnNvciA9IFwiTTIxLjcgMjAuMjZMMjAuMjkgMjEuNjdMMTcuMDYgMTguNUwxNiAyMC45N0wxNCAxNEwyMSAxNkwxOC40NyAxNy4wM0wyMS43IDIwLjI2TTE5IDhINVYxOUgxMy40MUwxMy45NyAyMUg1QzMuODkgMjEgMyAyMC4xIDMgMTlMMyA1QzMgMy45IDMuODkgMyA1IDNINlYxSDhWM0gxNlYxSDE4VjNIMTlDMjAuMSAzIDIxIDMuOSAyMSA1VjEzLjk1TDE5IDEzLjM1VjhNMTIgMTBWMTVIN1YxMEgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckVkaXQgPSBcIk0xOSwzSDE4VjFIMTZWM0g4VjFINlYzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxMFYxOUg1VjhIMTlWOUgyMVY1QTIsMiAwIDAsMCAxOSwzTTIxLjcsMTMuMzVMMjAuNywxNC4zNUwxOC42NSwxMi4zNUwxOS42NSwxMS4zNUMxOS44NSwxMS4xNCAyMC4xOSwxMS4xMyAyMC40MiwxMS4zNUwyMS43LDEyLjYzQzIxLjg5LDEyLjgzIDIxLjg5LDEzLjE1IDIxLjcsMTMuMzVNMTIsMTguOTRMMTguMDcsMTIuODhMMjAuMTIsMTQuODhMMTQuMDYsMjFIMTJWMTguOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJFbmQgPSBcIk0yMiAxNFYyMkgyMFYxOEwxNiAyMlYxOUgxMVYxN0gxNlYxNEwyMCAxOFYxNEgyMk01IDE5TDkgMTlWMjFMNSAyMUMzLjkgMjEgMyAyMC4xIDMgMTlWNUMzIDMuODkgMy45IDMgNSAzSDZWLjk5OEg4VjNIMTZWLjk5OEgxOFYzSDE5QzIwLjExIDMgMjEgMy44OSAyMSA1TDIxIDEySDE5VjhINVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckV4cG9ydCA9IFwiTTEyLDIyTDE2LDE4SDEzVjEySDExVjE4SDhNMTksNEgxOFYySDE2VjRIOFYySDZWNEg1QTIsMiAwIDAsMCAzLDZWMjBBMiwyIDAgMCwwIDUsMjJIOFYyMEg1VjlIMTlWMjBIMTZWMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjZBMiwyIDAgMCwwIDE5LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJIZWFydCA9IFwiTTE5LDIwVjlINVYyMEgxOU0xNiwySDE4VjRIMTlBMiwyIDAgMCwxIDIxLDZWMjBBMiwyIDAgMCwxIDE5LDIySDVBMiwyIDAgMCwxIDMsMjBWNkEyLDIgMCAwLDEgNSw0SDZWMkg4VjRIMTZWMk0xMiwxOC4xN0wxMS40MiwxNy42NEM5LjM2LDE1Ljc3IDgsMTQuNTQgOCwxMy4wM0M4LDExLjggOC45NywxMC44MyAxMC4yLDEwLjgzQzEwLjksMTAuODMgMTEuNTYsMTEuMTUgMTIsMTEuNjZDMTIuNDQsMTEuMTUgMTMuMSwxMC44MyAxMy44LDEwLjgzQzE1LjAzLDEwLjgzIDE2LDExLjggMTYsMTMuMDNDMTYsMTQuNTQgMTQuNjQsMTUuNzcgMTIuNTgsMTcuNjRMMTIsMTguMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJJbXBvcnQgPSBcIk0xMiwxMkw4LDE2SDExVjIySDEzVjE2SDE2TTE5LDRIMThWMkgxNlY0SDhWMkg2VjRINUEyLDIgMCAwLDAgMyw2VjIwQTIsMiAwIDAsMCA1LDIySDlWMjBINVY5SDE5VjIwSDE1VjIySDE5QTIsMiAwIDAsMCAyMSwyMFY2QTIsMiAwIDAsMCAxOSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyTG9jayA9IFwiTTEzIDIxQzEzIDIxLjM1IDEzLjA3IDIxLjY5IDEzLjE4IDIySDVDMy45IDIyIDMgMjEuMTEgMyAyMFY2QzMgNC44OSAzLjg5IDQgNSA0SDZWMkg4VjRIMTZWMkgxOFY0SDE5QzIwLjEgNCAyMSA0Ljg5IDIxIDZWMTEuNzhDMjAuNDIgMTEuMzggMTkuNzQgMTEuMTMgMTkgMTEuMDVWOUg1VjIwSDEzVjIxTTIyIDE3VjIxQzIyIDIxLjU1IDIxLjU1IDIyIDIxIDIySDE2QzE1LjQ1IDIyIDE1IDIxLjU1IDE1IDIxVjE3QzE1IDE2LjQ1IDE1LjQ1IDE2IDE2IDE2VjE1LjVDMTYgMTQuMTIgMTcuMTIgMTMgMTguNSAxM1MyMSAxNC4xMiAyMSAxNS41VjE2QzIxLjU1IDE2IDIyIDE2LjQ1IDIyIDE3TTIwIDE1LjVDMjAgMTQuNjcgMTkuMzMgMTQgMTguNSAxNFMxNyAxNC42NyAxNyAxNS41VjE2SDIwVjE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJMb2NrT3V0bGluZSA9IFwiTTEzIDIwSDVWMTBIMTlWMTEuMDVDMTkuNzQgMTEuMTMgMjAuNDIgMTEuMzggMjEgMTEuNzhWNkMyMSA0Ljg5IDIwLjExIDQgMTkgNEgxOFYySDE2VjRIOFYySDZWNEg1QzMuODkgNCAzIDQuOSAzIDZWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxMy4xOEMxMy4wNyAyMS42OSAxMyAyMS4zNSAxMyAyMVYyME01IDZIMTlWOEg1VjZNMjEgMTZWMTUuNUMyMSAxNC4xMiAxOS44OCAxMyAxOC41IDEzUzE2IDE0LjEyIDE2IDE1LjVWMTZDMTUuNDUgMTYgMTUgMTYuNDUgMTUgMTdWMjFDMTUgMjEuNTUgMTUuNDUgMjIgMTYgMjJIMjFDMjEuNTUgMjIgMjIgMjEuNTUgMjIgMjFWMTdDMjIgMTYuNDUgMjEuNTUgMTYgMjEgMTZNMjAgMTZIMTdWMTUuNUMxNyAxNC42NyAxNy42NyAxNCAxOC41IDE0UzIwIDE0LjY3IDIwIDE1LjVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJNaW51cyA9IFwiTTE5IDE5VjhINVYxOUgxOU0xNiAxSDE4VjNIMTlDMjAuMTEgMyAyMSAzLjkgMjEgNVYxOUMyMSAyMC4xMSAyMC4xMSAyMSAxOSAyMUg1QzMuODkgMjEgMyAyMC4xIDMgMTlWNUMzIDMuODkgMy44OSAzIDUgM0g2VjFIOFYzSDE2VjFNMTYgMTIuNVYxNC41SDhWMTIuNUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhck1vbnRoID0gXCJNOSwxMFYxMkg3VjEwSDlNMTMsMTBWMTJIMTFWMTBIMTNNMTcsMTBWMTJIMTVWMTBIMTdNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0g2VjFIOFYzSDE2VjFIMThWM0gxOU0xOSwxOVY4SDVWMTlIMTlNOSwxNFYxNkg3VjE0SDlNMTMsMTRWMTZIMTFWMTRIMTNNMTcsMTRWMTZIMTVWMTRIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJNb250aE91dGxpbmUgPSBcIk03LDEySDlWMTRIN1YxMk0yMSw2VjIwQTIsMiAwIDAsMSAxOSwyMkg1QzMuODksMjIgMywyMS4xIDMsMjBWNkEyLDIgMCAwLDEgNSw0SDZWMkg4VjRIMTZWMkgxOFY0SDE5QTIsMiAwIDAsMSAyMSw2TTUsOEgxOVY2SDVWOE0xOSwyMFYxMEg1VjIwSDE5TTE1LDE0VjEySDE3VjE0SDE1TTExLDE0VjEySDEzVjE0SDExTTcsMTZIOVYxOEg3VjE2TTE1LDE4VjE2SDE3VjE4SDE1TTExLDE4VjE2SDEzVjE4SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyTXVsdGlwbGUgPSBcIk0yMSwxN1Y4SDdWMTdIMjFNMjEsM0EyLDIgMCAwLDEgMjMsNVYxN0EyLDIgMCAwLDEgMjEsMTlIN0M1Ljg5LDE5IDUsMTguMSA1LDE3VjVBMiwyIDAgMCwxIDcsM0g4VjFIMTBWM0gxOFYxSDIwVjNIMjFNMywyMUgxN1YyM0gzQzEuODksMjMgMSwyMi4xIDEsMjFWOUgzVjIxTTE5LDE1SDE1VjExSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyTXVsdGlwbGVDaGVjayA9IFwiTTIxLDE3VjhIN1YxN0gyMU0yMSwzQTIsMiAwIDAsMSAyMyw1VjE3QTIsMiAwIDAsMSAyMSwxOUg3QzUuODksMTkgNSwxOC4xIDUsMTdWNUEyLDIgMCAwLDEgNywzSDhWMUgxMFYzSDE4VjFIMjBWM0gyMU0xNy41MywxMS4wNkwxMy4wOSwxNS41TDEwLjQxLDEyLjgyTDExLjQ3LDExLjc2TDEzLjA5LDEzLjM4TDE2LjQ3LDEwTDE3LjUzLDExLjA2TTMsMjFIMTdWMjNIM0MxLjg5LDIzIDEsMjIuMSAxLDIxVjlIM1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhck11bHRpc2VsZWN0ID0gXCJNMTksMTlWOEg1VjE5SDE5TTE2LDFIMThWM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNINlYxSDhWM0gxNlYxTTcsMTBIOVYxMkg3VjEwTTE1LDEwSDE3VjEySDE1VjEwTTExLDE0SDEzVjE2SDExVjE0TTE1LDE0SDE3VjE2SDE1VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyT3V0bGluZSA9IFwiTTE5LDRIMThWMkgxNlY0SDhWMkg2VjRINUMzLjg5LDQgMyw0LjkgMyw2VjIwQTIsMiAwIDAsMCA1LDIySDE5QTIsMiAwIDAsMCAyMSwyMFY2QTIsMiAwIDAsMCAxOSw0TTE5LDIwSDVWMTBIMTlWMjBNMTksOEg1VjZIMTlWOE0xMiwxM0gxN1YxOEgxMlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclBsdXMgPSBcIk0xOSAxOVY4SDVWMTlIMTlNMTYgMUgxOFYzSDE5QzIwLjExIDMgMjEgMy45IDIxIDVWMTlDMjEgMjAuMTEgMjAuMTEgMjEgMTkgMjFINUMzLjg5IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjg5IDMuODkgMyA1IDNINlYxSDhWM0gxNlYxTTExIDkuNUgxM1YxMi41SDE2VjE0LjVIMTNWMTcuNUgxMVYxNC41SDhWMTIuNUgxMVY5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJRdWVzdGlvbiA9IFwiTTYsMVYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM0gxOFYxSDE2VjNIOFYxSDZNNSw4SDE5VjE5SDVWOE0xMi4xOSw5QzExLjMyLDkgMTAuNjIsOS4yIDEwLjA4LDkuNTlDOS41NiwxMCA5LjMsMTAuNTcgOS4zMSwxMS4zNkw5LjMyLDExLjM5SDExLjI1QzExLjI2LDExLjA5IDExLjM1LDEwLjg2IDExLjUzLDEwLjdDMTEuNzEsMTAuNTUgMTEuOTMsMTAuNDcgMTIuMTksMTAuNDdDMTIuNSwxMC40NyAxMi43NiwxMC41NyAxMi45NCwxMC43NUMxMy4xMiwxMC45NCAxMy4yLDExLjIgMTMuMiwxMS41QzEzLjIsMTEuODIgMTMuMTMsMTIuMDkgMTIuOTcsMTIuMzJDMTIuODMsMTIuNTUgMTIuNjIsMTIuNzUgMTIuMzYsMTIuOTFDMTEuODUsMTMuMjUgMTEuNSwxMy41NSAxMS4zMSwxMy44MkMxMS4xMSwxNC4wOCAxMSwxNC41IDExLDE1SDEzQzEzLDE0LjY5IDEzLjA0LDE0LjQ0IDEzLjEzLDE0LjI2QzEzLjIyLDE0LjA4IDEzLjM5LDEzLjkgMTMuNjQsMTMuNzRDMTQuMDksMTMuNSAxNC40NiwxMy4yMSAxNC43NSwxMi44MUMxNS4wNCwxMi40MSAxNS4xOSwxMiAxNS4xOSwxMS41QzE1LjE5LDEwLjc0IDE0LjkyLDEwLjEzIDE0LjM4LDkuNjhDMTMuODUsOS4yMyAxMy4xMiw5IDEyLjE5LDlNMTEsMTZWMThIMTNWMTZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJSYW5nZSA9IFwiTTksMTBIN1YxMkg5VjEwTTEzLDEwSDExVjEySDEzVjEwTTE3LDEwSDE1VjEySDE3VjEwTTE5LDNIMThWMUgxNlYzSDhWMUg2VjNINUMzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWOEgxOVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclJhbmdlT3V0bGluZSA9IFwiTTcsMTJIOVYxNEg3VjEyTTIxLDZWMjBBMiwyIDAgMCwxIDE5LDIySDVDMy44OSwyMiAzLDIxLjEgMywyMFY2QTIsMiAwIDAsMSA1LDRINlYySDhWNEgxNlYySDE4VjRIMTlBMiwyIDAgMCwxIDIxLDZNNSw4SDE5VjZINVY4TTE5LDIwVjEwSDVWMjBIMTlNMTUsMTRIMTdWMTJIMTVWMTRNMTEsMTRIMTNWMTJIMTFWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJSZWZyZXNoID0gXCJNMTkgM0gxOFYxSDE2VjNIOFYxSDZWM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTRDMTMuNCAyMC41IDEyLjkgMTkuOCAxMi41IDE5SDVWOEgxOVYxMC42QzE5LjcgMTAuNyAyMC40IDEwLjkgMjEgMTEuM1Y1QzIxIDMuOSAyMC4xIDMgMTkgM00xOCAxMi41QzE5LjEgMTIuNSAyMC4xIDEyLjkgMjAuOCAxMy43TDIyIDEyLjVWMTYuNUgxOEwxOS44IDE0LjdDMTkuMyAxNC4zIDE4LjcgMTQgMTggMTRDMTYuNiAxNCAxNS41IDE1LjEgMTUuNSAxNi41UzE2LjYgMTkgMTggMTlDMTguOCAxOSAxOS41IDE4LjYgMjAgMThIMjEuN0MyMS4xIDE5LjUgMTkuNyAyMC41IDE4IDIwLjVDMTUuOCAyMC41IDE0IDE4LjcgMTQgMTYuNVMxNS44IDEyLjUgMTggMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclJlZnJlc2hPdXRsaW5lID0gXCJNMTkgM0gxOFYxSDE2VjNIOFYxSDZWM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTRDMTMuNCAyMC41IDEyLjkgMTkuOCAxMi41IDE5SDVWOUgxOVYxMC42QzE5LjcgMTAuNyAyMC40IDEwLjkgMjEgMTEuM1Y1QzIxIDMuOSAyMC4xIDMgMTkgM00xOSA3SDVWNUgxOU0xOCAxMi41QzE5LjEgMTIuNSAyMC4xIDEyLjkgMjAuOCAxMy43TDIyIDEyLjVWMTYuNUgxOEwxOS44IDE0LjdDMTkuMyAxNC4zIDE4LjcgMTQgMTggMTRDMTYuNiAxNCAxNS41IDE1LjEgMTUuNSAxNi41UzE2LjYgMTkgMTggMTlDMTguOCAxOSAxOS41IDE4LjYgMjAgMThIMjEuN0MyMS4xIDE5LjUgMTkuNyAyMC41IDE4IDIwLjVDMTUuOCAyMC41IDE0IDE4LjcgMTQgMTYuNVMxNS44IDEyLjUgMTggMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclJlbW92ZSA9IFwiTTE5LDE5SDVWOEgxOU0xOSwzSDE4VjFIMTZWM0g4VjFINlYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM005LjMxLDE3TDExLjc1LDE0LjU2TDE0LjE5LDE3TDE1LjI1LDE1Ljk0TDEyLjgxLDEzLjVMMTUuMjUsMTEuMDZMMTQuMTksMTBMMTEuNzUsMTIuNDRMOS4zMSwxMEw4LjI1LDExLjA2TDEwLjY5LDEzLjVMOC4yNSwxNS45NEw5LjMxLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyUmVtb3ZlT3V0bGluZSA9IFwiTTE5LDRIMThWMkgxNlY0SDhWMkg2VjRINUEyLDIgMCAwLDAgMyw2VjIwQTIsMiAwIDAsMCA1LDIySDE5QTIsMiAwIDAsMCAyMSwyMFY2QTIsMiAwIDAsMCAxOSw0TTE5LDIwSDVWMTBIMTlWMjBNNSw4VjZIMTlWOEg1TTguMjMsMTcuNDFMOS4yOSwxOC40N0wxMS43MywxNi4wM0wxNC4xNywxOC40N0wxNS4yMywxNy40MUwxMi43OSwxNC45N0wxNS4yMywxMi41M0wxNC4xNywxMS40N0wxMS43MywxMy45MUw5LjI5LDExLjQ3TDguMjMsMTIuNTNMMTAuNjcsMTQuOTdMOC4yMywxNy40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclNlYXJjaCA9IFwiTTE1LjUsMTJDMTgsMTIgMjAsMTQgMjAsMTYuNUMyMCwxNy4zOCAxOS43NSwxOC4yMSAxOS4zMSwxOC45TDIyLjM5LDIyTDIxLDIzLjM5TDE3Ljg4LDIwLjMyQzE3LjE5LDIwLjc1IDE2LjM3LDIxIDE1LjUsMjFDMTMsMjEgMTEsMTkgMTEsMTYuNUMxMSwxNCAxMywxMiAxNS41LDEyTTE1LjUsMTRBMi41LDIuNSAwIDAsMCAxMywxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxOUEyLjUsMi41IDAgMCwwIDE4LDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE0TTE5LDhINVYxOUg5LjVDOS44MSwxOS43NSAxMC4yNiwyMC40MiAxMC44MSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0g2VjFIOFYzSDE2VjFIMThWM0gxOUEyLDIgMCAwLDEgMjEsNVYxMy4wM0MyMC41LDEyLjIyIDE5LjgsMTEuNTQgMTksMTFWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclN0YXIgPSBcIk0xOSwyMEg1VjlIMTlNMTYsMlY0SDhWMkg2VjRINUEyLDIgMCAwLDAgMyw2VjIwQTIsMiAwIDAsMCA1LDIySDE5QTIsMiAwIDAsMCAyMSwyMFY2QTIsMiAwIDAsMCAxOSw0SDE4VjJNMTAuODgsMTNINy4yN0wxMC4xOSwxNS4xMUw5LjA4LDE4LjU2TDEyLDE2LjQzTDE0LjkyLDE4LjU2TDEzLjgsMTUuMTJMMTYuNzIsMTNIMTMuMTJMMTIsOS41NkwxMC44OCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclN0YXJ0ID0gXCJNMiAxNEg0VjE3SDlWMTRMMTMgMThMOSAyMlYxOUg0VjIySDJWMTRNMTkgMTlWOEg1VjEySDNMMyA1QzMgMy44OSAzLjg5IDMgNSAzSDZWLjk5OEg4VjNIMTZWLjk5OEgxOFYzSDE5QzIwLjEgMyAyMSAzLjg5IDIxIDVWMTlDMjEgMjAuMSAyMC4xIDIxIDE5IDIxTDEyLjgzIDIxTDE0LjgzIDE5TDE5IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyU3luYyA9IFwiTTE4LDExVjEyLjVDMjEuMTksMTIuNSAyMy4wOSwxNi4wNSAyMS4zMywxOC43MUwyMC4yNCwxNy42MkMyMS4wNiwxNS45NiAxOS44NSwxNCAxOCwxNFYxNS41TDE1Ljc1LDEzLjI1TDE4LDExTTE4LDIyVjIwLjVDMTQuODEsMjAuNSAxMi45MSwxNi45NSAxNC42NywxNC4yOUwxNS43NiwxNS4zOEMxNC45NCwxNy4wNCAxNi4xNSwxOSAxOCwxOVYxNy41TDIwLjI1LDE5Ljc1TDE4LDIyTTE5LDNIMThWMUgxNlYzSDhWMUg2VjNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE0QzEzLjM2LDIwLjQ1IDEyLjg2LDE5Ljc3IDEyLjUsMTlINVY4SDE5VjEwLjU5QzE5LjcxLDEwLjcgMjAuMzksMTAuOTQgMjEsMTEuMzFWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclN5bmNPdXRsaW5lID0gXCJNMTgsMTFWMTIuNUMyMS4xOSwxMi41IDIzLjA5LDE2LjA1IDIxLjMzLDE4LjcxTDIwLjI0LDE3LjYyQzIxLjA2LDE1Ljk2IDE5Ljg1LDE0IDE4LDE0VjE1LjVMMTUuNzUsMTMuMjVMMTgsMTFNMTgsMjJWMjAuNUMxNC44MSwyMC41IDEyLjkxLDE2Ljk1IDE0LjY3LDE0LjI5TDE1Ljc2LDE1LjM4QzE0Ljk0LDE3LjA0IDE2LjE1LDE5IDE4LDE5VjE3LjVMMjAuMjUsMTkuNzVMMTgsMjJNMTksM0gxOFYxSDE2VjNIOFYxSDZWM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTRDMTMuMzYsMjAuNDUgMTIuODYsMTkuNzcgMTIuNSwxOUg1VjlIMTlWMTAuNTlDMTkuNzEsMTAuNyAyMC4zOSwxMC45NCAyMSwxMS4zMVY1QTIsMiAwIDAsMCAxOSwzTTE5LDdINVY1SDE5XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJUZXh0ID0gXCJNMTQsMTRIN1YxNkgxNE0xOSwxOUg1VjhIMTlNMTksM0gxOFYxSDE2VjNIOFYxSDZWM0g1QzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTcsMTBIN1YxMkgxN1YxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclRleHRPdXRsaW5lID0gXCJNMTksNEgxOFYySDE2VjRIOFYySDZWNEg1QTIsMiAwIDAsMCAzLDZWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjZBMiwyIDAgMCwwIDE5LDRNMTksMjBINVYxMEgxOVYyME01LDhWNkgxOVY4SDVNNywxMkgxN1YxNEg3VjEyTTcsMTZIMTRWMThIN1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclRvZGF5ID0gXCJNNywxMEgxMlYxNUg3TTE5LDE5SDVWOEgxOU0xOSwzSDE4VjFIMTZWM0g4VjFINlYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhcldlZWsgPSBcIk02IDFIOFYzSDE2VjFIMThWM0gxOUMyMC4xMSAzIDIxIDMuOSAyMSA1VjE5QzIxIDIwLjExIDIwLjExIDIxIDE5IDIxSDVDMy44OSAyMSAzIDIwLjEgMyAxOVY1QzMgMy44OSAzLjg5IDMgNSAzSDZWMU01IDhWMTlIMTlWOEg1TTcgMTBIMTdWMTJIN1YxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhcldlZWtCZWdpbiA9IFwiTTE5LDE5SDVWOEgxOU0xNiwxVjNIOFYxSDZWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNIMThWMU05LDEwSDdWMTdIOVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhcldlZWtlbmQgPSBcIk0xOSwyMFY5SDVWMjBIMTlNMTYsMkgxOFY0SDE5QTIsMiAwIDAsMSAyMSw2VjIwQTIsMiAwIDAsMSAxOSwyMkg1QTIsMiAwIDAsMSAzLDIwVjZBMiwyIDAgMCwxIDUsNEg2VjJIOFY0SDE2VjJNNywxOFYxMUg5VjE4SDdNMTUsMTFIMTdWMThIMTVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJXZWVrZW5kT3V0bGluZSA9IFwiTTE5LDRBMiwyIDAgMCwxIDIxLDZWMjBBMiwyIDAgMCwxIDE5LDIySDVDMy44OSwyMiAzLDIxLjEgMywyMFY2QTIsMiAwIDAsMSA1LDRINlYySDhWNEgxNlYySDE4VjRIMTlNMTksMjBWMTBINVYyMEgxOU0xOSw4VjZINVY4SDE5TTcsMTJIOVYxOEg3VjEyTTE1LDEySDE3VjE4SDE1VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGxNYWRlID0gXCJNOSw1VjdIMTUuNTlMNCwxOC41OUw1LjQxLDIwTDE3LDguNDFWMTVIMTlWNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGxNZXJnZSA9IFwiTTE3LDIwLjQxTDE4LjQxLDE5TDE1LDE1LjU5TDEzLjU5LDE3TTcuNSw4SDExVjEzLjU5TDUuNTksMTlMNywyMC40MUwxMywxNC40MVY4SDE2LjVMMTIsMy41XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsbE1pc3NlZCA9IFwiTTE5LjU5LDdMMTIsMTQuNTlMNi40MSw5SDExVjdIM1YxNUg1VjEwLjQxTDEyLDE3LjQxTDIxLDguNDFcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxsUmVjZWl2ZWQgPSBcIk0yMCw1LjQxTDE4LjU5LDRMNywxNS41OVY5SDVWMTlIMTVWMTdIOC40MVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGxTcGxpdCA9IFwiTTE0LDRMMTYuMjksNi4yOUwxMy40MSw5LjE3TDE0LjgzLDEwLjU5TDE3LjcxLDcuNzFMMjAsMTBWNE0xMCw0SDRWMTBMNi4yOSw3LjcxTDExLDEyLjQxVjIwSDEzVjExLjU5TDcuNzEsNi4yOVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWNvcmRlciA9IFwiTTcgMkM0LjI0IDIgMiA0LjI0IDIgN1YyMEMyIDIxLjEgMi45IDIyIDQgMjJIMTBDMTEuMSAyMiAxMiAyMS4xIDEyIDIwVjdDMTIgNC4yNCA5Ljc2IDIgNyAyTTUgMjBDNC40NSAyMCA0IDE5LjU1IDQgMTlTNC40NSAxOCA1IDE4IDYgMTguNDUgNiAxOSA1LjU1IDIwIDUgMjBNNyAxMEM1LjM0IDEwIDQgOC42NiA0IDdTNS4zNCA0IDcgNCAxMCA1LjM0IDEwIDcgOC42NiAxMCA3IDEwTTIyIDlWMTRDMjIgMTUuMSAyMS4xIDE2IDIwIDE2SDEzVjE0SDIwVjlIMTNWN0gyMEMyMS4xIDcgMjIgNy45IDIyIDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtY29yZGVyT2ZmID0gXCJNMjIuMSAyMS41TDkuNCA4LjhMMi40IDEuOEwxLjEgM0wyLjcgNC42QzIuMiA1LjMgMiA2LjEgMiA3VjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgxMEMxMS4xIDIyIDEyIDIxLjEgMTIgMjBWMTMuOUwxMyAxNC45VjE2SDE0LjFMMjAuOCAyMi43TDIyLjEgMjEuNU01IDIwQzQuNSAyMCA0IDE5LjUgNCAxOVM0LjUgMTggNSAxOCA2IDE4LjUgNiAxOSA1LjUgMjAgNSAyME03IDEwQzUuMyAxMCA0IDguNyA0IDdDNCA2LjcgNC4xIDYuNCA0LjIgNi4xTDggOS45QzcuNiA5LjkgNy4zIDEwIDcgMTBNNy4yIDRMNS41IDIuM0M2IDIuMSA2LjUgMiA3IDJDOS44IDIgMTIgNC4yIDEyIDdWOC44TDEwIDYuOEM5LjkgNS4zIDguNyA0LjEgNy4yIDRNMjAgOUgxM1Y3SDIwQzIxLjEgNyAyMiA3LjkgMjIgOVYxNEMyMiAxNS4xIDIxLjEgMTYgMjAgMTZIMTkuMkwxNy4yIDE0SDIwVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhID0gXCJNNCw0SDdMOSwySDE1TDE3LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0TTEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywxMkE1LDUgMCAwLDAgMTIsN00xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhQWNjb3VudCA9IFwiTTQsNUg3TDksM0gxNUwxNyw1SDIwQTIsMiAwIDAsMSAyMiw3VjE5QTIsMiAwIDAsMSAyMCwyMUg0QTIsMiAwIDAsMSAyLDE5VjdBMiwyIDAgMCwxIDQsNU0xNiwxN1YxNkMxNiwxNC42NyAxMy4zMywxNCAxMiwxNEMxMC42NywxNCA4LDE0LjY3IDgsMTZWMTdIMTZNMTIsOUEyLDIgMCAwLDAgMTAsMTFBMiwyIDAgMCwwIDEyLDEzQTIsMiAwIDAsMCAxNCwxMUEyLDIgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFCdXJzdCA9IFwiTTEsNUgzVjE5SDFWNU01LDVIN1YxOUg1VjVNMjIsNUgxMEExLDEgMCAwLDAgOSw2VjE4QTEsMSAwIDAsMCAxMCwxOUgyMkExLDEgMCAwLDAgMjMsMThWNkExLDEgMCAwLDAgMjIsNU0xMSwxN0wxMy41LDEzLjg1TDE1LjI5LDE2TDE3Ljc5LDEyLjc4TDIxLDE3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYUNvbnRyb2wgPSBcIk05LDEyQzksMTEuMTkgOS4zLDEwLjUgOS44OSw5Ljg5QzEwLjUsOS4zIDExLjE5LDkgMTIsOUMxMi44MSw5IDEzLjUsOS4zIDE0LjExLDkuODlDMTQuNywxMC41IDE1LDExLjE5IDE1LDEyQzE1LDEyLjgxIDE0LjcsMTMuNSAxNC4xMSwxNC4xMUMxMy41LDE0LjcgMTIuODEsMTUgMTIsMTVDMTEuMTksMTUgMTAuNSwxNC43IDkuODksMTQuMTFDOS4zLDEzLjUgOSwxMi44MSA5LDEyTTUuNTMsOC40NEw3LjMxLDEwLjIyTDUuNTMsMTJMNy4zMSwxMy43OEw1LjUzLDE1LjU2TDIsMTJMNS41Myw4LjQ0TTguNDQsMTguNDdMMTAuMjIsMTYuNjlMMTIsMTguNDdMMTMuNzgsMTYuNjlMMTUuNTYsMTguNDdMMTIsMjJMOC40NCwxOC40N00xOC40NywxNS41NkwxNi42OSwxMy43OEwxOC40NywxMkwxNi42OSwxMC4yMkwxOC40Nyw4LjQ0TDIyLDEyTDE4LjQ3LDE1LjU2TTE1LjU2LDUuNTNMMTMuNzgsNy4zMUwxMiw1LjUzTDEwLjIyLDcuMzFMOC40NCw1LjUzTDEyLDJMMTUuNTYsNS41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFFbmhhbmNlID0gXCJNOSwzTDcuMTcsNUg0QTIsMiAwIDAsMCAyLDdWMTlBMiwyIDAgMCwwIDQsMjFIMjBBMiwyIDAgMCwwIDIyLDE5VjdBMiwyIDAgMCwwIDIwLDVIMTYuODNMMTUsM00xMiwxOEE1LDUgMCAwLDEgNywxM0E1LDUgMCAwLDEgMTIsOEE1LDUgMCAwLDEgMTcsMTNBNSw1IDAgMCwxIDEyLDE4TTEyLDE3TDEzLjI1LDE0LjI1TDE2LDEzTDEzLjI1LDExLjc1TDEyLDlMMTAuNzUsMTEuNzVMOCwxM0wxMC43NSwxNC4yNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYUVuaGFuY2VPdXRsaW5lID0gXCJNMTIsMTBMMTEuMDYsMTIuMDZMOSwxM0wxMS4wNiwxMy45NEwxMiwxNkwxMi45NCwxMy45NEwxNSwxM0wxMi45NCwxMi4wNkwxMiwxME0yMCw1SDE2LjgzTDE1LDNIOUw3LjE3LDVINEEyLDIgMCAwLDAgMiw3VjE5QTIsMiAwIDAsMCA0LDIxSDIwQTIsMiAwIDAsMCAyMiwxOVY3QTIsMiAwIDAsMCAyMCw1TTIwLDE5SDRWN0g4LjA1TDguNjQsNi4zNUw5Ljg4LDVIMTQuMTJMMTUuMzYsNi4zNUwxNS45NSw3SDIwVjE5TTEyLDhBNSw1IDAgMCwwIDcsMTNBNSw1IDAgMCwwIDEyLDE4QTUsNSAwIDAsMCAxNywxM0E1LDUgMCAwLDAgMTIsOE0xMiwxNkEzLDMgMCAwLDEgOSwxM0EzLDMgMCAwLDEgMTIsMTBBMywzIDAgMCwxIDE1LDEzQTMsMyAwIDAsMSAxMiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFGbGlwID0gXCJNMjAgNUgxN0wxNSAzSDlMNyA1SDRDMi45IDUgMiA1LjkgMiA3VjE5QzIgMjAuMTEgMi45IDIxIDQgMjFIMjBDMjEuMTEgMjEgMjIgMjAuMTEgMjIgMTlWN0MyMiA1LjkgMjEuMTEgNSAyMCA1TTUgMTJINy4xQzcuNjUgOS4yOSAxMC4yOSA3LjU1IDEzIDguMUMxMy43NiA4LjI1IDE0LjQzIDguNTkgMTUgOUwxMy41NiAxMC40NUMxMy4xMSAxMC4xNyAxMi41OCAxMCAxMiAxMEMxMC43NCAxMCA5LjYgMTAuOCA5LjE4IDEySDExTDggMTVMNSAxMk0xNi45MSAxNEMxNi4zNiAxNi43MSAxMy43MiAxOC40NSAxMSAxNy45QzEwLjI1IDE3Ljc0IDkuNTggMTcuNDEgOSAxN0wxMC40NCAxNS41NUMxMC45IDE1LjgzIDExLjQzIDE2IDEyIDE2QzEzLjI3IDE2IDE0LjQxIDE1LjIgMTQuODMgMTRIMTNMMTYgMTFMMTkgMTRIMTYuOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhRmxpcE91dGxpbmUgPSBcIk0yMCA1SDE2LjgzTDE1IDNIOUw3LjE3IDVINEMyLjkgNSAyIDUuOSAyIDdWMTlDMiAyMC4xMSAyLjkgMjEgNCAyMUgyMEMyMS4xMSAyMSAyMiAyMC4xMSAyMiAxOVY3QzIyIDUuOSAyMS4xMSA1IDIwIDVNMjAgMTlINFY3SDguMDVMOS44OCA1SDE0LjEyTDE2IDdIMjBWMTlNNSAxMkg3LjFDNy42NSA5LjI5IDEwLjI5IDcuNTUgMTMgOC4xQzEzLjc2IDguMjUgMTQuNDMgOC41OSAxNSA5TDEzLjU2IDEwLjQ1QzEzLjExIDEwLjE3IDEyLjU4IDEwIDEyIDEwQzEwLjc0IDEwIDkuNiAxMC44IDkuMTggMTJIMTFMOCAxNUw1IDEyTTE2LjkxIDE0QzE2LjM2IDE2LjcxIDEzLjcyIDE4LjQ1IDExIDE3LjlDMTAuMjUgMTcuNzQgOS41OCAxNy40MSA5IDE3TDEwLjQ0IDE1LjU1QzEwLjkgMTUuODMgMTEuNDMgMTYgMTIgMTZDMTMuMjcgMTYgMTQuNDEgMTUuMiAxNC44MyAxNEgxM0wxNiAxMUwxOSAxNEgxNi45MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFGcm9udCA9IFwiTTcsMkgxN1YxMi41QzE3LDEwLjgzIDEzLjY3LDEwIDEyLDEwQzEwLjMzLDEwIDcsMTAuODMgNywxMi41TTE3LDBIN0EyLDIgMCAwLDAgNSwyVjE2QTIsMiAwIDAsMCA3LDE4SDE3QTIsMiAwIDAsMCAxOSwxNlYyQTIsMiAwIDAsMCAxNywwTTEyLDhBMiwyIDAgMCwwIDE0LDZBMiwyIDAgMCwwIDEyLDRBMiwyIDAgMCwwIDEwLDZBMiwyIDAgMCwwIDEyLDhNMTQsMjBWMjJIMTlWMjBNMTAsMjBINVYyMkgxMFYyNEwxMywyMUwxMCwxOFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFGcm9udFZhcmlhbnQgPSBcIk02LDBIMThBMiwyIDAgMCwxIDIwLDJWMjJBMiwyIDAgMCwxIDE4LDI0SDZBMiwyIDAgMCwxIDQsMjJWMkEyLDIgMCAwLDEgNiwwTTEyLDZBMywzIDAgMCwxIDE1LDlBMywzIDAgMCwxIDEyLDEyQTMsMyAwIDAsMSA5LDlBMywzIDAgMCwxIDEyLDZNMTEsMVYzSDEzVjFIMTFNNiw0VjE2LjVDNiwxNS4xMiA4LjY5LDE0IDEyLDE0QzE1LjMxLDE0IDE4LDE1LjEyIDE4LDE2LjVWNEg2TTEzLDE4SDlWMjBIMTNWMjJMMTYsMTlMMTMsMTZWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhR29wcm8gPSBcIk0yMCw1SDE1QTIsMiAwIDAsMCAxMyw3VjEyQTIsMiAwIDAsMCAxNSwxNEgyMEEyLDIgMCAwLDAgMjIsMTJWN0EyLDIgMCAwLDAgMjAsNU0xNy41LDEyLjVBMywzIDAgMCwxIDE0LjUsOS41QTMsMyAwIDAsMSAxNy41LDYuNUEzLDMgMCAwLDEgMjAuNSw5LjVBMywzIDAgMCwxIDE3LjUsMTIuNU0xNy41LDExQTEuNSwxLjUgMCAwLDEgMTYsOS41QTEuNSwxLjUgMCAwLDEgMTcuNSw4QTEuNSwxLjUgMCAwLDEgMTksOS41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMU0xMiwxNVY1SDRBMiwyIDAgMCwwIDIsN1YxN0EyLDIgMCAwLDAgNCwxOUgyMEEyLDIgMCAwLDAgMjIsMTdWMTVIMTJNMTAsMTJINFY3SDEwVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYUltYWdlID0gXCJNNCw1SDdMOSwzSDE1TDE3LDVIMjBBMiwyIDAgMCwxIDIyLDdWMTlBMiwyIDAgMCwxIDIwLDIxSDRBMiwyIDAgMCwxIDIsMTlWN0EyLDIgMCAwLDEgNCw1TTEzLjA5LDkuNDVMMTEuMDUsMTIuMThMMTIuNiwxNC4yNUwxMS43MywxNC45MUw5LjI3LDExLjY0TDYsMTZIMThMMTMuMDksOS40NVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFJcmlzID0gXCJNMTMuNzMsMTVMOS44MywyMS43NkMxMC41MywyMS45MSAxMS4yNSwyMiAxMiwyMkMxNC40LDIyIDE2LjYsMjEuMTUgMTguMzIsMTkuNzVMMTQuNjYsMTMuNE0yLjQ2LDE1QzMuMzgsMTcuOTIgNS42MSwyMC4yNiA4LjQ1LDIxLjM0TDEyLjEyLDE1TTguNTQsMTJMNC42NCw1LjI1QzMsNyAyLDkuMzkgMiwxMkMyLDEyLjY4IDIuMDcsMTMuMzUgMi4yLDE0SDkuNjlNMjEuOCwxMEgxNC4zMUwxNC42LDEwLjVMMTkuMzYsMTguNzVDMjEsMTYuOTcgMjIsMTQuNiAyMiwxMkMyMiwxMS4zMSAyMS45MywxMC42NCAyMS44LDEwTTIxLjU0LDlDMjAuNjIsNi4wNyAxOC4zOSwzLjc0IDE1LjU1LDIuNjZMMTEuODgsOU05LjQsMTAuNUwxNC4xNywyLjI0QzEzLjQ3LDIuMDkgMTIuNzUsMiAxMiwyQzkuNiwyIDcuNCwyLjg0IDUuNjgsNC4yNUw5LjM0LDEwLjZMOS40LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhTWV0ZXJpbmdDZW50ZXIgPSBcIk00LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0TTQsNlYxOEgyMFY2SDRNMTIsMTAuNUExLjUsMS41IDAgMCwxIDEzLjUsMTJBMS41LDEuNSAwIDAsMSAxMiwxMy41QTEuNSwxLjUgMCAwLDEgMTAuNSwxMkExLjUsMS41IDAgMCwxIDEyLDEwLjVNMTIsNy41QzE0LjE0LDcuNSAxNS45Myw5IDE2LjM5LDExSDE0LjgzQzE0LjQyLDkuODMgMTMuMzEsOSAxMiw5QzEwLjY5LDkgOS41OCw5LjgzIDkuMTcsMTFINy42MUM4LjA3LDkgOS44Niw3LjUgMTIsNy41TTEyLDE2LjVDOS44NiwxNi41IDguMDcsMTUgNy42MSwxM0g5LjE3QzkuNTgsMTQuMTcgMTAuNjksMTUgMTIsMTVDMTMuMzEsMTUgMTQuNDIsMTQuMTcgMTQuODMsMTNIMTYuMzlDMTUuOTMsMTUgMTQuMTQsMTYuNSAxMiwxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYU1ldGVyaW5nTWF0cml4ID0gXCJNNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNE00LDZWMThIMjBWNkg0TTUuNSw3LjVIMTFWOS4xN0MxMC4xNSw5LjQ3IDkuNDcsMTAuMTUgOS4xNywxMUg1LjVWNy41TTE4LjUsNy41VjExSDE0LjgzQzE0LjUzLDEwLjE1IDEzLjg1LDkuNDcgMTMsOS4xN1Y3LjVIMTguNU0xOC41LDE2LjVIMTNWMTQuODNDMTMuODUsMTQuNTMgMTQuNTMsMTMuODUgMTQuODMsMTNIMTguNVYxNi41TTUuNSwxNi41VjEzSDkuMTdDOS40NywxMy44NSAxMC4xNSwxNC41MyAxMSwxNC44M1YxNi41SDUuNU0xMiwxMC41QTEuNSwxLjUgMCAwLDEgMTMuNSwxMkExLjUsMS41IDAgMCwxIDEyLDEzLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyQTEuNSwxLjUgMCAwLDEgMTIsMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFNZXRlcmluZ1BhcnRpYWwgPSBcIk00LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0TTQsNlYxOEgyMFY2SDRNMTIsNy41QzE0LjE0LDcuNSAxNS45Myw5IDE2LjM5LDExSDE0LjgzQzE0LjQyLDkuODMgMTMuMzEsOSAxMiw5QzEwLjY5LDkgOS41OCw5LjgzIDkuMTcsMTFINy42MUM4LjA3LDkgOS44Niw3LjUgMTIsNy41TTEyLDE2LjVDOS44NiwxNi41IDguMDcsMTUgNy42MSwxM0g5LjE3QzkuNTgsMTQuMTcgMTAuNjksMTUgMTIsMTVDMTMuMzEsMTUgMTQuNDIsMTQuMTcgMTQuODMsMTNIMTYuMzlDMTUuOTMsMTUgMTQuMTQsMTYuNSAxMiwxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYU1ldGVyaW5nU3BvdCA9IFwiTTQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEEyLDIgMCAwLDEgMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRNNCw2VjE4SDIwVjZINE0xMiwxMC41QTEuNSwxLjUgMCAwLDEgMTMuNSwxMkExLjUsMS41IDAgMCwxIDEyLDEzLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyQTEuNSwxLjUgMCAwLDEgMTIsMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFPZmYgPSBcIk0xLjIsNC40N0wyLjUsMy4yTDIwLDIwLjcyTDE4LjczLDIyTDE2LjczLDIwSDRBMiwyIDAgMCwxIDIsMThWNkMyLDUuNzggMi4wNCw1LjU3IDIuMSw1LjM3TDEuMiw0LjQ3TTcsNEw5LDJIMTVMMTcsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEMyMiwxOC42IDIxLjc0LDE5LjEzIDIxLjMyLDE5LjVMMTYuMzMsMTQuNUMxNi43NiwxMy43NyAxNywxMi45MSAxNywxMkE1LDUgMCAwLDAgMTIsN0MxMS4wOSw3IDEwLjIzLDcuMjQgOS41LDcuNjdMNS44Miw0SDdNNywxMkE1LDUgMCAwLDAgMTIsMTdDMTIuNSwxNyAxMy4wMywxNi45MiAxMy41LDE2Ljc3TDExLjcyLDE1QzEwLjI5LDE0Ljg1IDkuMTUsMTMuNzEgOSwxMi4yOEw3LjIzLDEwLjVDNy4wOCwxMC45NyA3LDExLjUgNywxMk0xMiw5QTMsMyAwIDAsMSAxNSwxMkMxNSwxMi4zNSAxNC45NCwxMi42OSAxNC44MywxM0wxMSw5LjE3QzExLjMxLDkuMDYgMTEuNjUsOSAxMiw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYU91dGxpbmUgPSBcIk0yMCw0SDE2LjgzTDE1LDJIOUw3LjE3LDRINEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY2QTIsMiAwIDAsMCAyMCw0TTIwLDE4SDRWNkg4LjA1TDkuODgsNEgxNC4xMkwxNS45NSw2SDIwVjE4TTEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywxMkE1LDUgMCAwLDAgMTIsN00xMiwxNUEzLDMgMCAwLDEgOSwxMkEzLDMgMCAwLDEgMTIsOUEzLDMgMCAwLDEgMTUsMTJBMywzIDAgMCwxIDEyLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVBhcnR5TW9kZSA9IFwiTTEyLDE3QzEwLjM3LDE3IDguOTQsMTYuMjEgOCwxNUgxMkEzLDMgMCAwLDAgMTUsMTJDMTUsMTEuNjUgMTQuOTMsMTEuMzEgMTQuODIsMTFIMTYuOUMxNi45NiwxMS4zMiAxNywxMS42NiAxNywxMkE1LDUgMCAwLDEgMTIsMTdNMTIsN0MxMy42Myw3IDE1LjA2LDcuNzkgMTYsOUgxMkEzLDMgMCAwLDAgOSwxMkM5LDEyLjM1IDkuMDcsMTIuNjggOS4xOCwxM0g3LjFDNy4wMywxMi42OCA3LDEyLjM0IDcsMTJBNSw1IDAgMCwxIDEyLDdNMjAsNEgxNi44M0wxNSwySDlMNy4xNyw0SDRBMiwyIDAgMCwwIDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVBsdXMgPSBcIk0zIDRWMUg1VjRIOFY2SDVWOUgzVjZIMFY0TTYgMTBWN0g5VjRIMTZMMTcuOCA2SDIxQzIyLjEgNiAyMyA2LjkgMjMgOFYyMEMyMyAyMS4xIDIyLjEgMjIgMjEgMjJINUMzLjkgMjIgMyAyMS4xIDMgMjBWMTBNMTMgMTlDMTcuNDUgMTkgMTkuNjkgMTMuNjIgMTYuNTQgMTAuNDZDMTMuMzkgNy4zMSA4IDkuNTUgOCAxNEM4IDE2Ljc2IDEwLjI0IDE5IDEzIDE5TTkuOCAxNEM5LjggMTYuODUgMTMuMjUgMTguMjggMTUuMjYgMTYuMjZDMTcuMjggMTQuMjUgMTUuODUgMTAuOCAxMyAxMC44QzExLjI0IDEwLjggOS44IDEyLjI0IDkuOCAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFQbHVzT3V0bGluZSA9IFwiTTIxIDZIMTcuOEwxNiA0SDEwVjZIMTUuMUwxNyA4SDIxVjIwSDVWMTFIM1YyMEMzIDIxLjEgMy45IDIyIDUgMjJIMjFDMjIuMSAyMiAyMyAyMS4xIDIzIDIwVjhDMjMgNi45IDIyLjEgNiAyMSA2TTggMTRDOCAxOC40NSAxMy4zOSAyMC42OSAxNi41NCAxNy41NEMxOS42OSAxNC4zOSAxNy40NSA5IDEzIDlDMTAuMjQgOSA4IDExLjI0IDggMTRNMTMgMTFDMTQuNjQgMTEuMDUgMTUuOTUgMTIuMzYgMTYgMTRDMTUuOTUgMTUuNjQgMTQuNjQgMTYuOTUgMTMgMTdDMTEuMzYgMTYuOTUgMTAuMDUgMTUuNjQgMTAgMTRDMTAuMDUgMTIuMzYgMTEuMzYgMTEuMDUgMTMgMTFNNSA2SDhWNEg1VjFIM1Y0SDBWNkgzVjlINVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVJlYXIgPSBcIk0xMiw2QzEwLjg5LDYgMTAsNS4xIDEwLDRBMiwyIDAgMCwxIDEyLDJDMTMuMDksMiAxNCwyLjkgMTQsNEEyLDIgMCAwLDEgMTIsNk0xNywwSDdBMiwyIDAgMCwwIDUsMlYxNkEyLDIgMCAwLDAgNywxOEgxN0EyLDIgMCAwLDAgMTksMTZWMkEyLDIgMCAwLDAgMTcsME0xNCwyMFYyMkgxOVYyME0xMCwyMEg1VjIySDEwVjI0TDEzLDIxTDEwLDE4VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVJlYXJWYXJpYW50ID0gXCJNNiwwSDE4QTIsMiAwIDAsMSAyMCwyVjIyQTIsMiAwIDAsMSAxOCwyNEg2QTIsMiAwIDAsMSA0LDIyVjJBMiwyIDAgMCwxIDYsME0xMiwyQTIsMiAwIDAsMCAxMCw0QTIsMiAwIDAsMCAxMiw2QTIsMiAwIDAsMCAxNCw0QTIsMiAwIDAsMCAxMiwyTTEzLDE4SDlWMjBIMTNWMjJMMTYsMTlMMTMsMTZWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhUmV0YWtlID0gXCJNMjAsNUgxN0wxNSwzSDlMNyw1SDRBMiwyIDAgMCwwIDIsN1YxOUEyLDIgMCAwLDAgNCwyMUgyMEEyLDIgMCAwLDAgMjIsMTlWN0EyLDIgMCAwLDAgMjAsNU0xMiwxOEMxMC45MiwxOCA5Ljg2LDE3LjY1IDksMTdMMTAuNDQsMTUuNTZDMTAuOTEsMTUuODUgMTEuNDUsMTYgMTIsMTZBMywzIDAgMCwwIDE1LDEzQTMsMyAwIDAsMCAxMiwxMEMxMC43NCwxMCA5LjYsMTAuOCA5LjE4LDEySDExTDgsMTVMNSwxMkg3LjFDNy42NSw5LjI5IDEwLjI5LDcuNTUgMTMsOC4xQzE1LjcsOC42NSAxNy40NSwxMS4yOSAxNi45LDE0QzE2LjQyLDE2LjMzIDE0LjM4LDE4IDEyLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVJldGFrZU91dGxpbmUgPSBcIk0yMCw1SDE2LjgzTDE1LDNIOUw3LjE3LDVINEEyLDIgMCAwLDAgMiw3VjE5QTIsMiAwIDAsMCA0LDIxSDIwQTIsMiAwIDAsMCAyMiwxOVY3QTIsMiAwIDAsMCAyMCw1TTIwLDE5SDRWN0g4LjA1TDkuODgsNUgxNC4xMkwxNiw3SDIwVjE5TTEyLDE4QzEwLjkyLDE4IDkuODYsMTcuNjUgOSwxN0wxMC40NCwxNS41NkMxMC45MSwxNS44NSAxMS40NSwxNiAxMiwxNkEzLDMgMCAwLDAgMTUsMTNBMywzIDAgMCwwIDEyLDEwQzEwLjc0LDEwIDkuNiwxMC44IDkuMTgsMTJIMTFMOCwxNUw1LDEySDcuMUM3LjY1LDkuMjkgMTAuMjksNy41NSAxMyw4LjFDMTUuNyw4LjY1IDE3LjQ1LDExLjI5IDE2LjksMTRDMTYuNDIsMTYuMzMgMTQuMzgsMTggMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhU3dpdGNoID0gXCJNMTUsMTUuNVYxM0g5VjE1LjVMNS41LDEyTDksOC41VjExSDE1VjguNUwxOC41LDEyTTIwLDRIMTYuODNMMTUsMkg5TDcuMTcsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFTd2l0Y2hPdXRsaW5lID0gXCJNMjAgNEgxNi44TDE1IDJIOUw3LjIgNEg0QzIuOSA0IDIgNC45IDIgNlYxOEMyIDE5LjEgMi45IDIwIDQgMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjZDMjIgNC45IDIxLjEgNCAyMCA0TTkuOSA0SDE0LjFMMTUuOSA2SDIwVjE4SDRWNkg4LjFNMTUgMTFIOVY4LjVMNS41IDEyTDkgMTUuNVYxM0gxNVYxNS41TDE4LjUgMTJMMTUgOC41VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVRpbWVyID0gXCJNNC45NCw2LjM1QzQuNTUsNS45NiA0LjU1LDUuMzIgNC45NCw0LjkzQzUuMzMsNC41NCA1Ljk2LDQuNTQgNi4zNSw0LjkzTDEzLjA3LDEwLjMxTDEzLjQyLDEwLjU5QzE0LjIsMTEuMzcgMTQuMiwxMi42NCAxMy40MiwxMy40MkMxMi42NCwxNC4yIDExLjM3LDE0LjIgMTAuNTksMTMuNDJMMTAuMzEsMTMuMDdMNC45NCw2LjM1TTEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCw5Ljc5IDE5LjEsNy43OSAxNy42Niw2LjM0TDE5LjA3LDQuOTNDMjAuODgsNi43NCAyMiw5LjI0IDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJINEE4LDggMCAwLDAgMTIsMjBNMTIsMUEyLDIgMCAwLDEgMTQsM0EyLDIgMCAwLDEgMTIsNUEyLDIgMCAwLDEgMTAsM0EyLDIgMCAwLDEgMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFXaXJlbGVzcyA9IFwiTTEyLDEwLjhBMy4yLDMuMiAwIDAsMSAxNS4yLDE0QTMuMiwzLjIgMCAwLDEgMTIsMTcuMkEzLjIsMy4yIDAgMCwxIDguOCwxNEEzLjIsMy4yIDAgMCwxIDEyLDEwLjhNMTYsMy4zM1YyQTYsNiAwIDAsMSAyMiw4SDIwLjY3QzIwLjY3LDUuNDIgMTguNTgsMy4zMyAxNiwzLjMzTTE2LDZWNC42N0MxNy44NCw0LjY3IDE5LjMzLDYuMTYgMTkuMzMsOEgxOEMxOCw2Ljg5IDE3LjExLDYgMTYsNk0xNyw5SDIyVjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjhBMiwyIDAgMCwxIDQsNkg3LjE3TDksNEgxNVY3QzE2LjExLDcgMTcsNy44OSAxNyw5TTEyLDE5QTUsNSAwIDAsMCAxNywxNEE1LDUgMCAwLDAgMTIsOUE1LDUgMCAwLDAgNywxNEE1LDUgMCAwLDAgMTIsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhV2lyZWxlc3NPdXRsaW5lID0gXCJNMjAsOVYyMEg0VjhIOC4wNUw5Ljg4LDZIMTVWNEg5TDcuMTcsNkg0QTIsMiAwIDAsMCAyLDhWMjBBMiwyIDAgMCwwIDQsMjJIMjBBMiwyIDAgMCwwIDIyLDIwVjlIMjBNMjAuNjcsOEgyMkMyMiw0LjY4IDE5LjMxLDIgMTYsMlYzLjMzQzE4LjU4LDMuMzMgMjAuNjYsNS40MSAyMC42Nyw4TTE4LDhIMTkuMzNDMTkuMzIsNi4xNSAxNy44NCw0LjY3IDE2LDQuNjdWNkMxNy4xMSw2IDE4LDYuODkgMTgsOE03LDE0QTUsNSAwIDAsMCAxMiwxOUE1LDUgMCAwLDAgMTcsMTRBNSw1IDAgMCwwIDEyLDlBNSw1IDAgMCwwIDcsMTRNMTUsMTRBMywzIDAgMCwxIDEyLDE3QTMsMyAwIDAsMSA5LDE0QTMsMyAwIDAsMSAxMiwxMUEzLDMgMCAwLDEgMTUsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtcGZpcmUgPSBcIk0xNS45LDE4LjVMMjEuOSwyMC4xTDIxLjUsMjJMMTIuMSwxOS41TDIuNywyMkwyLjIsMjAuMUw4LjIsMTguNUwyLjEsMTYuOUwyLjYsMTVMMTIsMTcuNUwyMS40LDE1TDIxLjksMTYuOUwxNS45LDE4LjVNMTYuMDcsNy45MkMxNS45MSw3LjcgMTUuNzEsNy41IDE1LjUsNy4zM0MxNS4wNSw2LjkgMTQuNSw2LjU5IDE0LjA2LDYuMTNDMTMsNS4wOCAxMi43OSwzLjM0IDEzLjQ0LDJDMTIuNzksMi4xNyAxMi4xOCwyLjU0IDExLjY3LDIuOTVDOS44NCw0LjQ2IDkuMTEsNy4xIDEwLDkuMzhDMTAsOS40NSAxMC4wNCw5LjUzIDEwLjA0LDkuNjJDMTAuMDQsOS43OCA5LjkzLDkuOTIgOS43OSwxMEM5LjYzLDEwLjA1IDkuNDYsMTAgOS4zMyw5LjlDOS4yOCw5Ljg2IDkuMjUsOS44MiA5LjIyLDkuNzdDOC40Miw4Ljc0IDguMjksNy4yNiA4Ljg0LDYuMDdDNy42NSw3LjA2IDcsOC43MiA3LjExLDEwLjI5QzcuMTMsMTAuNjUgNy4xOCwxMSA3LjMsMTEuMzZDNy40MSwxMS44IDcuNTksMTIuMjMgNy44MiwxMi42MUM4LjU3LDEzLjg2IDkuOSwxNC43NiAxMS4zMiwxNC45NEMxMi44NCwxNS4xNCAxNC40NiwxNC44NSAxNS42MywxMy43OUMxNi45MywxMi41OSAxNy40LDEwLjY3IDE2LjcxLDlMMTYuNjEsOC44M0MxNi40Nyw4LjUgMTYuMjgsOC4yIDE2LjA0LDcuOTNMMTYuMDcsNy45Mk0xMy44MywxMi40N0MxMy42MywxMi42NSAxMy4zMSwxMi44MyAxMy4wNSwxMi45MUMxMi4yNiwxMy4xOSAxMS40NiwxMi43OSAxMSwxMi4zMUMxMS44NCwxMi4xMSAxMi4zNCwxMS40NyAxMi41LDEwLjgzQzEyLjYxLDEwLjI1IDEyLjM5LDkuNzggMTIuMjksOS4yMkMxMi4yMSw4LjY5IDEyLjIyLDguMjMgMTIuNDIsNy43M0MxMi41NSw4IDEyLjY5LDguMjggMTIuODYsOC41QzEzLjQxLDkuMjIgMTQuMjcsOS41NCAxNC40NSwxMC41QzE0LjQ3LDEwLjYzIDE0LjUsMTAuNzIgMTQuNSwxMC44M0MxNC41LDExLjQzIDE0LjI2LDEyLjA3IDEzLjgyLDEyLjQ3XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FuY2VsID0gXCJNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyUzE3LjUgMjIgMTIgMjIgMiAxNy41IDIgMTIgNi41IDIgMTIgMk0xMiA0QzEwLjEgNCA4LjQgNC42IDcuMSA1LjdMMTguMyAxNi45QzE5LjMgMTUuNSAyMCAxMy44IDIwIDEyQzIwIDcuNiAxNi40IDQgMTIgNE0xNi45IDE4LjNMNS43IDcuMUM0LjYgOC40IDQgMTAuMSA0IDEyQzQgMTYuNCA3LjYgMjAgMTIgMjBDMTMuOSAyMCAxNS42IDE5LjQgMTYuOSAxOC4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbmRsZSA9IFwiTTEyLjUsMkMxMC44NCwyIDkuNSw1LjM0IDkuNSw3QTMsMyAwIDAsMCAxMi41LDEwQTMsMyAwIDAsMCAxNS41LDdDMTUuNSw1LjM0IDE0LjE2LDIgMTIuNSwyTTEyLjUsNi41QTEsMSAwIDAsMSAxMy41LDcuNUExLDEgMCAwLDEgMTIuNSw4LjVBMSwxIDAgMCwxIDExLjUsNy41QTEsMSAwIDAsMSAxMi41LDYuNU0xMCwxMUExLDEgMCAwLDAgOSwxMlYyMEg3QTEsMSAwIDAsMSA2LDE5VjE4QTEsMSAwIDAsMCA1LDE3QTEsMSAwIDAsMCA0LDE4VjE5QTMsMyAwIDAsMCA3LDIySDE5QTEsMSAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMTksMjBIMTZWMTJBMSwxIDAgMCwwIDE1LDExSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbmR5Y2FuZSA9IFwiTTEwLDEwQTIsMiAwIDAsMSA4LDEyQTIsMiAwIDAsMSA2LDEwVjhDNiw3LjM3IDYuMSw2Ljc3IDYuMjcsNi4yTDEwLDkuOTNWMTBNMTIsMkMxMi43NCwyIDEzLjQ0LDIuMTMgMTQuMDksMi4zOEwxMS45Nyw2QzExLjE0LDYgMTAuNDQsNi41IDEwLjE1LDcuMjVMNy4yNCw0LjM0QzguMzQsMi45MiAxMC4wNiwyIDEyLDJNMTcuNzYsNi4zMUwxNCwxMC4wN1Y4QzE0LDcuNjIgMTMuOSw3LjI3IDEzLjcyLDYuOTdMMTUuODMsMy4zOEMxNi43NCw0LjEzIDE3LjQyLDUuMTUgMTcuNzYsNi4zMU0xOCwxMy4wOUwxNCwxNy4wOVYxMi45TDE4LDguOVYxMy4wOU0xOCwyMEEyLDIgMCAwLDEgMTYsMjJBMiwyIDAgMCwxIDE0LDIwVjE5LjkxTDE4LDE1LjkxVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbm5hYmlzID0gXCJNMTEuNSwyMlYxNy4zNUMxMSwxOC4xMyAxMCwxOS4wOSA4LjAzLDE5LjgxQzguMDMsMTkuODEgOC41MywxOC4xIDkuOTQsMTYuOTVDOC42NCwxNy4yMyA2LjY4LDE3LjE5IDQsMTZDNCwxNiA2LjQ3LDE0LjU5IDkuMjgsMTQuOTdDNy42OSwxNCA1LjcsMTIuMDggNC4xNyw4LjExQzQuMTcsOC4xMSA4LjY3LDkuMzQgMTAuOTEsMTMuMTRDOC44OCw4LjI0IDEyLDIgMTIsMkMxNC40Myw3LjQ3IDEzLjkxLDExLjEgMTMuMTIsMTMuMUMxNS4zNyw5LjMzIDE5LjgzLDguMTEgMTkuODMsOC4xMUMxOC4zLDEyLjA4IDE2LjMxLDE0IDE0LjcyLDE0Ljk3QzE3LjUzLDE0LjU5IDIwLDE2IDIwLDE2QzE3LjMyLDE3LjE5IDE1LjM2LDE3LjIzIDE0LjA2LDE2Ljk1QzE1LjQ3LDE4LjEgMTUuOTcsMTkuODEgMTUuOTcsMTkuODFDMTQsMTkuMDkgMTMsMTguMTMgMTIuNSwxNy4zNVYyMkgxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbm5hYmlzT2ZmID0gXCJNMTYuNjIgMTMuNDJMMTQuNSAxMS4zMkMxNi44NCA4Ljk0IDE5LjgzIDguMTEgMTkuODMgOC4xMUMxOC44NyAxMC42IDE3LjczIDEyLjI3IDE2LjYyIDEzLjQyTTEyIDJDMTIgMiAxMC44NiA0LjMgMTAuNDEgNy4yMUwxMy43MiAxMC41QzEzLjkyIDguNDUgMTMuNjEgNS42MyAxMiAyTTIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMOC42MiAxMC41QzYuNSA4Ljc1IDQuMTcgOC4xMSA0LjE3IDguMTFDNS43IDEyLjA4IDcuNjkgMTQgOS4yOCAxNC45N0M2LjQ3IDE0LjU5IDQgMTYgNCAxNkM2LjY4IDE3LjE5IDguNjQgMTcuMjMgOS45NCAxNi45NUM4LjUzIDE4LjEgOC4wMyAxOS44MSA4LjAzIDE5LjgxQzEwIDE5LjA5IDExIDE4LjEzIDExLjUgMTcuMzVWMjJIMTIuNVYxNy4zNUMxMyAxOC4xMyAxNCAxOS4wOSAxNS45NyAxOS44MUMxNS45NyAxOS44MSAxNS40NyAxOC4xIDE0LjA2IDE2Ljk1QzE0LjM5IDE3IDE0Ljc3IDE3LjA3IDE1LjIgMTcuMDlMMjAuODQgMjIuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2Fwc0xvY2sgPSBcIk05Ljk2LDEzLjcxTDEyLDguMjlMMTQuMDMsMTMuNzJNMTEuMTQsNkw2LjQzLDE4SDguMzZMOS4zMiwxNS40M0gxNC42OEwxNS42NCwxOEgxNy41N0wxMi44Niw2SDExLjE0TTIwLDJINEMyLjg5LDIgMiwyLjg5IDIsNFYyMEMyLDIxLjExIDIuOSwyMiA0LDIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjRDMjIsMi44OSAyMS4xLDIgMjAsMk0yMCwyMEg0VjRIMjBWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyID0gXCJNNSwxMUw2LjUsNi41SDE3LjVMMTksMTFNMTcuNSwxNkExLjUsMS41IDAgMCwxIDE2LDE0LjVBMS41LDEuNSAwIDAsMSAxNy41LDEzQTEuNSwxLjUgMCAwLDEgMTksMTQuNUExLjUsMS41IDAgMCwxIDE3LjUsMTZNNi41LDE2QTEuNSwxLjUgMCAwLDEgNSwxNC41QTEuNSwxLjUgMCAwLDEgNi41LDEzQTEuNSwxLjUgMCAwLDEgOCwxNC41QTEuNSwxLjUgMCAwLDEgNi41LDE2TTE4LjkyLDZDMTguNzIsNS40MiAxOC4xNiw1IDE3LjUsNUg2LjVDNS44NCw1IDUuMjgsNS40MiA1LjA4LDZMMywxMlYyMEExLDEgMCAwLDAgNCwyMUg1QTEsMSAwIDAsMCA2LDIwVjE5SDE4VjIwQTEsMSAwIDAsMCAxOSwyMUgyMEExLDEgMCAwLDAgMjEsMjBWMTJMMTguOTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXIyUGx1cyA9IFwiTTggMTZDOCAxMy42IDkuMSAxMS41IDEwLjcgMTBIM0w0LjUgNS41SDE1LjVMMTYuMyA4QzE2LjkgOCAxNy41IDguMSAxOCA4LjNMMTYuOSA1QzE2LjcgNC40IDE2LjEgNCAxNS41IDRINC41QzMuOCA0IDMuMyA0LjQgMy4xIDVMMSAxMVYxOUMxIDE5LjUgMS41IDIwIDIgMjBIM0MzLjUgMjAgNCAxOS41IDQgMTlWMThIOC4zQzguMSAxNy40IDggMTYuNyA4IDE2TTQuNSAxNUMzLjcgMTUgMyAxNC4zIDMgMTMuNVMzLjcgMTIgNC41IDEyIDYgMTIuNyA2IDEzLjUgNS4zIDE1IDQuNSAxNU0xNiAyMFYxOEgxM1YxN0gxNEMxNS4xIDE3IDE2IDE2LjEgMTYgMTVWMTRDMTYgMTIuOSAxNS4xIDEyIDE0IDEySDExVjE0SDE0VjE1SDEzQzExLjkgMTUgMTEgMTUuOSAxMSAxN1YyME0yMyAxN0gyMVYxOUgxOVYxN0gxN1YxNUgxOVYxM0gyMVYxNUgyM1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXIzUGx1cyA9IFwiTTE2LjkgNUMxNi43IDQuNCAxNi4xIDQgMTUuNSA0SDQuNUMzLjggNCAzLjMgNC40IDMuMSA1TDEgMTFWMTlDMSAxOS41IDEuNSAyMCAyIDIwSDNDMy41IDIwIDQgMTkuNSA0IDE5VjE4SDguM0M4LjEgMTcuNCA4IDE2LjcgOCAxNkM4IDEzLjYgOS4xIDExLjUgMTAuNyAxMEgzTDQuNSA1LjVIMTUuNUwxNi4zIDhDMTYuOSA4IDE3LjUgOC4xIDE4IDguM0wxNi45IDVNNC41IDEyQzUuMyAxMiA2IDEyLjcgNiAxMy41UzUuMyAxNSA0LjUgMTUgMyAxNC4zIDMgMTMuNSAzLjcgMTIgNC41IDEyTTIzIDE3SDIxVjE5SDE5VjE3SDE3VjE1SDE5VjEzSDIxVjE1SDIzVjE3TTE0LjUgMTZDMTUuMyAxNiAxNiAxNC44IDE2IDE0QzE2IDEyLjkgMTUuMSAxMiAxNCAxMkgxMVYxNEgxNFYxNUgxMlYxN0gxNFYxOEgxMVYyMEgxNEMxNS4xIDIwIDE2IDE5LjEgMTYgMThDMTYgMTcuMiAxNS4zIDE2IDE0LjUgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyQXJyb3dMZWZ0ID0gXCJNMTIgMThDMTIgMTQuNjkgMTQuNjkgMTIgMTggMTJDMTkuMDkgMTIgMjAuMTIgMTIuMyAyMSAxMi44MVYxMkwxOC45MiA2QzE4LjcyIDUuNDIgMTguMTYgNSAxNy41IDVINi41QzUuODQgNSA1LjI4IDUuNDIgNS4wOCA2TDMgMTJWMjBDMyAyMC41NSAzLjQ1IDIxIDQgMjFINUM1LjU1IDIxIDYgMjAuNTUgNiAyMFYxOUgxMi4wOUMxMi4wNCAxOC42NyAxMiAxOC4zNCAxMiAxOE02LjUgNi41SDE3LjVMMTkgMTFINUw2LjUgNi41TTYuNSAxNkM1LjY3IDE2IDUgMTUuMzMgNSAxNC41UzUuNjcgMTMgNi41IDEzIDggMTMuNjcgOCAxNC41IDcuMzMgMTYgNi41IDE2TTE4IDE1VjE3SDIyVjE5SDE4VjIxTDE1IDE4TDE4IDE1XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyQXJyb3dSaWdodCA9IFwiTTEyIDE4QzEyIDE0LjY5IDE0LjY5IDEyIDE4IDEyQzE5LjA5IDEyIDIwLjEyIDEyLjMgMjEgMTIuODFWMTJMMTguOTIgNkMxOC43MiA1LjQyIDE4LjE2IDUgMTcuNSA1SDYuNUM1Ljg0IDUgNS4yOCA1LjQyIDUuMDggNkwzIDEyVjIwQzMgMjAuNTUgMy40NSAyMSA0IDIxSDVDNS41NSAyMSA2IDIwLjU1IDYgMjBWMTlIMTIuMDlDMTIuMDQgMTguNjcgMTIgMTguMzQgMTIgMThNNi41IDYuNUgxNy41TDE5IDExSDVMNi41IDYuNU02LjUgMTZDNS42NyAxNiA1IDE1LjMzIDUgMTQuNVM1LjY3IDEzIDYuNSAxMyA4IDEzLjY3IDggMTQuNSA3LjMzIDE2IDYuNSAxNk0xOSAyMVYxOUgxNVYxN0gxOVYxNUwyMiAxOEwxOSAyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckJhY2sgPSBcIk02LDExTDcsN0gxN0wxOCwxMU0xOC45Miw2QzE4LjcxLDUuNCAxOC4xNCw1IDE3LjUsNUg2LjVDNS44Niw1IDUuMjksNS40IDUuMDgsNkwzLDEyVjIwQTEsMSAwIDAsMCA0LDIxSDVBMSwxIDAgMCwwIDYsMjBWMThIMThWMjBBMSwxIDAgMCwwIDE5LDIxSDIwQTEsMSAwIDAsMCAyMSwyMFYxMkwxOC45Miw2TTcsMTZINVYxNEg3VjE2TTE5LDE2SDE3VjE0SDE5VjE2TTE0LDE2SDEwVjE0SDE0VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckJhdHRlcnkgPSBcIk00LDNWNkgxVjIwSDIzVjZIMjBWM0gxNFY2SDEwVjNINE0zLDhIMjFWMThIM1Y4TTE1LDEwVjEySDEzVjE0SDE1VjE2SDE3VjE0SDE5VjEySDE3VjEwSDE1TTUsMTJWMTRIMTFWMTJINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJCcmFrZUFicyA9IFwiTTI0LDEyQzI0LDE1LjMxIDIyLjY2LDE4LjMxIDIwLjUsMjAuNUwxOS40MiwxOS40MkMyMS4zMiwxNy41IDIyLjUsMTQuOSAyMi41LDEyQzIyLjUsOS4xMSAyMS4zMiw2LjUgMTkuNDIsNC41OEwyMC41LDMuNUMyMi42Niw1LjY5IDI0LDguNjkgMjQsMTJNMjAsOS42VjhIMTYuOEMxNS45Miw4IDE1LjIsOC43MiAxNS4yLDkuNlYxMS4yQTEuNiwxLjYgMCAwLDAgMTYuOCwxMi44SDE4LjRWMTQuNEgxNS4yVjE2SDE4LjRDMTkuMjgsMTYgMjAsMTUuMjggMjAsMTQuNFYxMi44QTEuNiwxLjYgMCAwLDAgMTguNCwxMS4ySDE2LjhWOS42SDIwTTguNDIsNkM5LjQ3LDUuMzcgMTAuNjksNSAxMiw1QzEzLjMxLDUgMTQuNTMsNS4zNyAxNS41OCw2SDE4LjY5QzE3LjA1LDQuMTYgMTQuNjYsMyAxMiwzQzkuMzQsMyA2Ljk1LDQuMTYgNS4zMSw2SDguNDJNMTMuMiwxMkMxMy44NCwxMiAxNC40LDEyLjU2IDE0LjQsMTMuMlYxNC40QTEuNiwxLjYgMCAwLDEgMTIuOCwxNkg5LjZWOEgxMi44QTEuNiwxLjYgMCAwLDEgMTQuNCw5LjZWMTAuOEMxNC40LDExLjQ0IDEzLjg0LDEyIDEzLjIsMTJNMTIuOCwxMi44SDExLjJWMTQuNEgxMi44VjEyLjhNMTIuOCw5LjZIMTEuMlYxMS4ySDEyLjhWOS42TTQuNTgsNC41OEwzLjUsMy41QzEuMzQsNS42OSAwLDguNjkgMCwxMkMwLDE1LjMxIDEuMzQsMTguMzEgMy41LDIwLjVMNC41OCwxOS40MkMyLjY4LDE3LjUgMS41LDE0LjkgMS41LDEyQzEuNSw5LjExIDIuNjgsNi41IDQuNTgsNC41OE03LjIsMTZWMTIuOEg1LjZWMTZINFY5LjZBMS42LDEuNiAwIDAsMSA1LjYsOEg3LjJDOC4wOCw4IDguOCw4LjcyIDguOCw5LjZWMTZINy4yTTcuMiwxMS4yVjkuNkg1LjZWMTEuMkg3LjJNMTUuNTgsMThDMTQuNTMsMTguNjMgMTMuMzEsMTkgMTIsMTlDMTAuNjksMTkgOS40NywxOC42MyA4LjQyLDE4SDUuMzFDNi45NSwxOS44NCA5LjM0LDIxIDEyLDIxQzE0LjY2LDIxIDE3LjA1LDE5Ljg0IDE4LjY5LDE4SDE1LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckJyYWtlQWxlcnQgPSBcIk0xMSwxNUgxM1YxN0gxMVYxNU0xMSw3SDEzVjEzSDExVjdNMTIsM0E5LDkgMCAwLDAgMywxMkE5LDkgMCAwLDAgMTIsMjFBOSw5IDAgMCwwIDIxLDEyQTksOSAwIDAsMCAxMiwzTTEyLDE5QzguMTQsMTkgNSwxNS44NiA1LDEyQzUsOC4xNCA4LjE0LDUgMTIsNUMxNS44Niw1IDE5LDguMTQgMTksMTJDMTksMTUuODYgMTUuODYsMTkgMTIsMTlNMjAuNSwyMC41QzIyLjY2LDE4LjMxIDI0LDE1LjMxIDI0LDEyQzI0LDguNjkgMjIuNjYsNS42OSAyMC41LDMuNUwxOS40Miw0LjU4QzIxLjMyLDYuNSAyMi41LDkuMTEgMjIuNSwxMkMyMi41LDE0LjkgMjEuMzIsMTcuNSAxOS40MiwxOS40MkwyMC41LDIwLjVNNC41OCwxOS40MkMyLjY4LDE3LjUgMS41LDE0LjkgMS41LDEyQzEuNSw5LjExIDIuNjgsNi41IDQuNTgsNC41OEwzLjUsMy41QzEuMzQsNS42OSAwLDguNjkgMCwxMkMwLDE1LjMxIDEuMzQsMTguMzEgMy41LDIwLjVMNC41OCwxOS40MlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJCcmFrZUhvbGQgPSBcIk0xMiwzQzcsMyAzLDcgMywxMkMzLDE3IDcsMjEgMTIsMjFDMTcsMjEgMjEsMTcgMjEsMTJDMjEsNyAxNywzIDEyLDNNMTIsMTlDOC4xLDE5IDUsMTUuOSA1LDEyQzUsOC4xIDguMSw1IDEyLDVDMTUuOSw1IDE5LDguMSAxOSwxMkMxOSwxNS45IDE1LjksMTkgMTIsMTlNMjAuNSwyMC41QzIyLjcsMTguMyAyNCwxNS4zIDI0LDEyQzI0LDguNyAyMi43LDUuNyAyMC41LDMuNUwxOS40LDQuNkMyMS4zLDYuNSAyMi41LDkuMSAyMi41LDEyQzIyLjUsMTQuOSAyMS4zLDE3LjUgMTkuNCwxOS40TDIwLjUsMjAuNU00LjYsMTkuNEMyLjcsMTcuNSAxLjUsMTQuOSAxLjUsMTJDMS41LDkuMSAyLjcsNi41IDQuNiw0LjZMMy41LDMuNUMxLjMsNS43IDAsOC43IDAsMTJDMCwxNS4zIDEuMywxOC4zIDMuNSwyMC41TDQuNiwxOS40TTksN1YxN0gxMVYxM0gxM1YxN0gxNVY3SDEzVjExSDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJCcmFrZVBhcmtpbmcgPSBcIk0xMiwzQzcsMyAzLDcgMywxMkMzLDE3IDcsMjEgMTIsMjFDMTcsMjEgMjEsMTcgMjEsMTJDMjEsNyAxNywzIDEyLDNNMTIsMTlDOC4xLDE5IDUsMTUuOSA1LDEyQzUsOC4xIDguMSw1IDEyLDVDMTUuOSw1IDE5LDguMSAxOSwxMkMxOSwxNS45IDE1LjksMTkgMTIsMTlNMjAuNSwyMC41QzIyLjcsMTguMyAyNCwxNS4zIDI0LDEyQzI0LDguNyAyMi43LDUuNyAyMC41LDMuNUwxOS40LDQuNkMyMS4zLDYuNSAyMi41LDkuMSAyMi41LDEyQzIyLjUsMTQuOSAyMS4zLDE3LjUgMTkuNCwxOS40TDIwLjUsMjAuNU00LjYsMTkuNEMyLjcsMTcuNSAxLjUsMTQuOSAxLjUsMTJDMS41LDkuMSAyLjcsNi41IDQuNiw0LjZMMy41LDMuNUMxLjMsNS43IDAsOC43IDAsMTJDMCwxNS4zIDEuMywxOC4zIDMuNSwyMC41TDQuNiwxOS40TTkuNSw3VjE3SDExLjVWMTNIMTMuNUEyLDIgMCAwLDAgMTUuNSwxMVY5QTIsMiAwIDAsMCAxMy41LDdIOS41TTExLjUsOUgxMy41VjExSDExLjVWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJCcmFrZVJldGFyZGVyID0gXCJNMTIgM0M3IDMgMyA3IDMgMTJTNyAyMSAxMiAyMSAyMSAxNyAyMSAxMiAxNyAzIDEyIDNNMTIgMTlDOC4xIDE5IDUgMTUuOSA1IDEyUzguMSA1IDEyIDUgMTkgOC4xIDE5IDEyIDE1LjkgMTkgMTIgMTlNMjAuNSAyMC41QzIyLjcgMTguMyAyNCAxNS4zIDI0IDEyUzIyLjcgNS43IDIwLjUgMy41TDE5LjQgNC42QzIxLjMgNi41IDIyLjUgOS4xIDIyLjUgMTJTMjEuMyAxNy41IDE5LjQgMTkuNEwyMC41IDIwLjVNNC42IDE5LjRDMi43IDE3LjUgMS41IDE0LjkgMS41IDEyUzIuNyA2LjUgNC42IDQuNkwzLjUgMy41QzEuMyA1LjcgMCA4LjcgMCAxMlMxLjMgMTguMyAzLjUgMjAuNUw0LjYgMTkuNE0xNS4zIDEwLjVDMTUuOTYgMTAuNSAxNi41IDExLjE3IDE2LjUgMTJDMTYuNSAxMi44MSAxNS45NSAxMy41IDE1LjMgMTMuNUMxNC45MyAxMy41IDE0LjY2IDEzLjI5IDE0LjUgMTMuMTFMMTQuNDcgMTMuMDhMMTQuNDQgMTMuMDVMMTMuMzggMTJMMTQuNDcgMTAuOTJMMTQuNSAxMC44OUwxNC41MyAxMC44NkMxNC43NCAxMC42MyAxNSAxMC41IDE1LjMgMTAuNU04LjcgMTAuNUM5LjA3IDEwLjUgOS4zNCAxMC43MSA5LjUgMTAuODhMOS41IDEwLjkyTDkuNTYgMTAuOTVMMTAuNjIgMTJMOS41MyAxMy4wOEw5LjUgMTMuMTFMOS40NyAxMy4xNUM5LjI2IDEzLjM3IDkgMTMuNSA4LjcgMTMuNUM4LjA1IDEzLjUgNy41IDEyLjgxIDcuNSAxMlM4LjA1IDEwLjUgOC43IDEwLjVNMTUuMyA5QzE0LjU4IDkgMTMuOSA5LjMxIDEzLjQyIDkuODVMMTIgMTEuMjVMMTAuNjEgOS44OEMxMC4xIDkuMzEgOS40MiA5IDguNyA5QzcuMjEgOSA2IDEwLjM1IDYgMTJTNy4yMSAxNSA4LjcgMTVDOS40MiAxNSAxMC4xIDE0LjY5IDEwLjU5IDE0LjE1TDEyIDEyLjc1TDEzLjM5IDE0LjEyQzEzLjkgMTQuNjggMTQuNTggMTUgMTUuMyAxNUMxNi43OSAxNSAxOCAxMy42NSAxOCAxMkMxOCAxMC4zMyAxNi43OSA5IDE1LjMgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJDaGlsZFNlYXQgPSBcIk0xNyA0LjVDMTcgNS45IDE1LjkgNyAxNC41IDdTMTIgNS45IDEyIDQuNSAxMy4xIDIgMTQuNSAyIDE3IDMuMSAxNyA0LjVNMTUgOEgxNC4yQzEyLjEgOCAxMC4xIDYuOCA5LjEgNC45QzkgNC44IDguOSA0LjcgOC45IDQuNkw3LjEgNS40QzcuNiA2LjggOS4yIDguNiAxMS41IDkuNUw5LjcgMTQuNUw1LjggMTMuNEwzIDE4LjlMNSAxOS40TDYuOCAxNS44TDExLjMgMTdDMTIuMyAxNy4yIDEzLjMgMTYuNyAxMy43IDE1LjhMMTYgOS40QzE2LjIgOC43IDE1LjcgOCAxNSA4TTE4LjkgN0wxNS41IDE2LjRDMTQuOSAxOCAxMy40IDE5IDExLjggMTlDMTEuNSAxOSAxMS4xIDE5IDEwLjggMTguOUw3LjkgMTguMUw3IDE5LjlMOSAyMC40TDEwLjQgMjAuOEMxMC45IDIwLjkgMTEuNCAyMSAxMS45IDIxQzE0LjQgMjEgMTYuNiAxOS41IDE3LjUgMTcuMUwyMSA3SDE4LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyQ2x1dGNoID0gXCJNMTAgMTguODRMMTQgMjAuN1YyM0w4IDIwVjE0SDVWMTBIOFY0TDE0IDFWMy4zTDEwIDUuMTZWMTguODRNMTkgMTBIMTVWNS40MUwxMiA2LjhWMTcuMkwxNSAxOC42VjE0SDE5VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckNvZyA9IFwiTTYuNSA1QzUuODQgNSA1LjI4IDUuNDIgNS4wOCA2TDMgMTJWMjBBMSAxIDAgMCAwIDQgMjFINUExIDEgMCAwIDAgNiAyMFYxOUgxMS4zQTcgNyAwIDAgMSAxMSAxN0E3IDcgMCAwIDEgMTQuNDEgMTFINUw2LjUgNi41SDE3LjVMMTguNjggMTAuMDNBNyA3IDAgMCAxIDIwLjQ3IDEwLjQ2TDE4LjkyIDZDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNUg2LjVNMTcgMTJDMTYuODcgMTIgMTYuNzYgMTIuMDkgMTYuNzQgMTIuMjFMMTYuNTUgMTMuNTNDMTYuMjUgMTMuNjYgMTUuOTYgMTMuODIgMTUuNyAxNEwxNC40NiAxMy41QzE0LjM1IDEzLjUgMTQuMjIgMTMuNSAxNC4xNSAxMy42M0wxMy4xNSAxNS4zNkMxMy4wOSAxNS40NyAxMy4xMSAxNS42IDEzLjIxIDE1LjY4TDE0LjI3IDE2LjVDMTQuMjUgMTYuNjcgMTQuMjQgMTYuODMgMTQuMjQgMTdDMTQuMjQgMTcuMTcgMTQuMjUgMTcuMzMgMTQuMjcgMTcuNUwxMy4yMSAxOC4zMkMxMy4xMiAxOC40IDEzLjA5IDE4LjUzIDEzLjE1IDE4LjY0TDE0LjE1IDIwLjM3QzE0LjIxIDIwLjUgMTQuMzQgMjAuNSAxNC40NiAyMC41TDE1LjcgMjBDMTUuOTYgMjAuMTggMTYuMjQgMjAuMzUgMTYuNTUgMjAuNDdMMTYuNzQgMjEuNzlDMTYuNzYgMjEuOTEgMTYuODYgMjIgMTcgMjJIMTlDMTkuMTEgMjIgMTkuMjIgMjEuOTEgMTkuMjQgMjEuNzlMMTkuNDMgMjAuNDdDMTkuNzMgMjAuMzQgMjAgMjAuMTggMjAuMjcgMjBMMjEuNSAyMC41QzIxLjYzIDIwLjUgMjEuNzYgMjAuNSAyMS44MyAyMC4zN0wyMi44MyAxOC42NEMyMi44OSAxOC41MyAyMi44NiAxOC40IDIyLjc3IDE4LjMyTDIxLjcgMTcuNUMyMS43MiAxNy4zMyAyMS43NCAxNy4xNyAyMS43NCAxN0MyMS43NCAxNi44MyAyMS43MyAxNi42NyAyMS43IDE2LjVMMjIuNzYgMTUuNjhDMjIuODUgMTUuNiAyMi44OCAxNS40NyAyMi44MiAxNS4zNkwyMS44MiAxMy42M0MyMS43NiAxMy41IDIxLjYzIDEzLjUgMjEuNSAxMy41TDIwLjI3IDE0QzIwIDEzLjgyIDE5LjczIDEzLjY1IDE5LjQyIDEzLjUzTDE5LjIzIDEyLjIxQzE5LjIyIDEyLjA5IDE5LjExIDEyIDE5IDEySDE3TTYuNSAxM0ExLjUgMS41IDAgMCAxIDggMTQuNUExLjUgMS41IDAgMCAxIDYuNSAxNkExLjUgMS41IDAgMCAxIDUgMTQuNUExLjUgMS41IDAgMCAxIDYuNSAxM00xOCAxNS41QzE4LjgzIDE1LjUgMTkuNSAxNi4xNyAxOS41IDE3QzE5LjUgMTcuODMgMTguODMgMTguNSAxOCAxOC41QzE3LjE2IDE4LjUgMTYuNSAxNy44MyAxNi41IDE3QzE2LjUgMTYuMTcgMTcuMTcgMTUuNSAxOCAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckNvbm5lY3RlZCA9IFwiTTUsMTRIMTlMMTcuNSw5LjVINi41TDUsMTRNMTcuNSwxOUExLjUsMS41IDAgMCwwIDE5LDE3LjVBMS41LDEuNSAwIDAsMCAxNy41LDE2QTEuNSwxLjUgMCAwLDAgMTYsMTcuNUExLjUsMS41IDAgMCwwIDE3LjUsMTlNNi41LDE5QTEuNSwxLjUgMCAwLDAgOCwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE2QTEuNSwxLjUgMCAwLDAgNSwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE5TTE4LjkyLDlMMjEsMTVWMjNBMSwxIDAgMCwxIDIwLDI0SDE5QTEsMSAwIDAsMSAxOCwyM1YyMkg2VjIzQTEsMSAwIDAsMSA1LDI0SDRBMSwxIDAgMCwxIDMsMjNWMTVMNS4wOCw5QzUuMjgsOC40MiA1Ljg1LDggNi41LDhIMTcuNUMxOC4xNSw4IDE4LjcyLDguNDIgMTguOTIsOU0xMiwwQzE0LjEyLDAgMTYuMTUsMC44NiAxNy42NSwyLjM1TDE2LjIzLDMuNzdDMTUuMTEsMi42NSAxMy41OCwyIDEyLDJDMTAuNDIsMiA4Ljg5LDIuNjUgNy43NywzLjc3TDYuMzYsMi4zNUM3Ljg1LDAuODYgOS44OCwwIDEyLDBNMTIsNEMxMy4wNiw0IDE0LjA3LDQuNDQgMTQuODIsNS4xOEwxMy40LDYuNkMxMy4wMyw2LjIzIDEyLjUzLDYgMTIsNkMxMS41LDYgMTAuOTcsNi4yMyAxMC42LDYuNkw5LjE4LDUuMThDOS45Myw0LjQ0IDEwLjk0LDQgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJDb252ZXJ0aWJsZSA9IFwiTTE2LDZMMTUsNi43NUwxNy41LDEwSDEzLjVWOC41SDEyVjEwSDNDMS44OSwxMCAxLDEwLjg5IDEsMTJWMTVIM0EzLDMgMCAwLDAgNiwxOEEzLDMgMCAwLDAgOSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjEyQzIzLDEwLjg5IDIyLjExLDEwIDIxLDEwSDE5TDE2LDZNNiwxMy41QTEuNSwxLjUgMCAwLDEgNy41LDE1QTEuNSwxLjUgMCAwLDEgNiwxNi41QTEuNSwxLjUgMCAwLDEgNC41LDE1QTEuNSwxLjUgMCAwLDEgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTYuNUExLjUsMS41IDAgMCwxIDE2LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckNvb2xhbnRMZXZlbCA9IFwiTTE5IDdWNUgyMVYzSDEzVjVIMTVWN0gxVjIxSDIzVjdIMTlNMjEgMTQuNDJDMjAuNzEgMTQuMTMgMjAuNSAxNCAyMCAxNEMxOS4zMyAxNCAxOS4yMSAxNC4yMSAxOC43MSAxNC43MVMxNy4zMyAxNiAxNiAxNiAxMy43OSAxNS4yMSAxMy4yOSAxNC43MSAxMi42NyAxNCAxMiAxNEMxMS43OCAxNCAxMS42MyAxNC4wMyAxMS41IDE0LjA4QzExLjIyIDE0LjE4IDExLjA1IDE0LjM3IDEwLjcxIDE0LjcxQzEwLjIxIDE1LjIxIDkuMzMgMTYgOCAxNlM1Ljc5IDE1LjIxIDUuMjkgMTQuNzEgNC42NyAxNCA0IDE0QzMuNSAxNCAzLjI5IDE0LjEzIDMgMTQuNDJWOUgyMVYxNC40MlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJDcnVpc2VDb250cm9sID0gXCJNMjIsMTVDMjIsMTcuNiAyMC44LDE5LjkgMTguOSwyMS4zTDE4LjQsMjAuOEwxNi4zLDE4LjdMMTcuNywxNy4zTDE4LjksMTguNUMxOS40LDE3LjggMTkuOCwxNi45IDE5LjksMTZIMThWMTRIMTkuOUMxOS43LDEzLjEgMTkuNCwxMi4zIDE4LjksMTEuNUwxNy43LDEyLjdMMTYuMywxMS4zTDE3LjUsMTAuMUMxNi44LDkuNiAxNS45LDkuMiAxNSw5LjFWMTFIMTNWOS4xQzEyLjEsOS4zIDExLjMsOS42IDEwLjUsMTAuMUwxMy41LDEzLjFDMTMuNywxMy4xIDEzLjgsMTMgMTQsMTNBMiwyIDAgMCwxIDE2LDE1QTIsMiAwIDAsMSAxNCwxN0EyLDIgMCAwLDEgMTIsMTVDMTIsMTQuOCAxMiwxNC43IDEyLjEsMTQuNUw5LjEsMTEuNUM4LjYsMTIuMiA4LjIsMTMuMSA4LjEsMTRIMTBWMTZIOC4xQzguMywxNi45IDguNiwxNy43IDkuMSwxOC41TDEwLjMsMTcuM0wxMS43LDE4LjdMOS4xLDIxLjNDNy4yLDE5LjkgNiwxNy42IDYsMTVBOCw4IDAgMCwxIDE0LDdBOCw4IDAgMCwxIDIyLDE1TTYuNyw1LjNMMy40LDJMMiwzLjRMNS4zLDYuN0w0LDhIOFY0TDYuNyw1LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyRGVmcm9zdEZyb250ID0gXCJNMTUsMjNDMTQuNywyMyAxNC41LDIyLjkgMTQuMywyMi43QzEzLjksMjIuMyAxNCwyMS43IDE0LjQsMjEuM1YyMS4zQzE0LjksMjAuOSAxNi4xLDE5LjUgMTYuMSwxOC40QzE2LjEsMTcuOCAxNS43LDE3LjIgMTUuMywxNi41QzE0LjgsMTUuNyAxNC4xLDE0LjcgMTQuMSwxMy41QzE0LjEsMTEuMiAxNS40LDEwLjMgMTUuNiwxMC4yQzE2LjEsOS45IDE2LjcsMTAuMSAxNywxMC41QzE3LjMsMTEgMTcuMSwxMS42IDE2LjcsMTEuOVYxMS45QzE2LjcsMTEuOSAxNi4yLDEyLjMgMTYuMiwxMy41QzE2LjIsMTQuMSAxNi42LDE0LjcgMTcsMTUuNEMxNy41LDE2LjIgMTguMiwxNy4yIDE4LjIsMTguNEMxOC4yLDIwLjYgMTYuMSwyMi42IDE1LjksMjIuOEMxNS41LDIyLjkgMTUuMiwyMyAxNSwyM00xMS43LDIyLjdDMTEuOSwyMi41IDE0LDIwLjUgMTQsMTguM0MxNCwxNy4xIDEzLjQsMTYuMSAxMi44LDE1LjNDMTIuNCwxNC42IDEyLDE0IDEyLDEzLjRDMTIsMTIuMiAxMi41LDExLjggMTIuNSwxMS44VjExLjhDMTMsMTEuNSAxMy4xLDEwLjkgMTIuOCwxMC40QzEyLjUsOS45IDExLjksOS44IDExLjQsMTAuMUMxMS4yLDEwLjIgOS45LDExLjEgOS45LDEzLjRDOS45LDE0LjYgMTAuNSwxNS42IDExLjEsMTYuNEMxMS41LDE3LjEgMTEuOSwxNy43IDExLjksMTguM0MxMS45LDE5LjQgMTAuNywyMC44IDEwLjIsMjEuMlYyMS4yQzkuOCwyMS42IDkuOCwyMi4yIDEwLjEsMjIuNkMxMC4zLDIyLjggMTAuNiwyMi45IDEwLjgsMjIuOUMxMS4yLDIzIDExLjUsMjIuOSAxMS43LDIyLjdNNy43LDIyLjdDNy45LDIyLjUgMTAsMjAuNSAxMCwxOC4zQzEwLDE3LjEgOS40LDE2LjEgOC44LDE1LjNDOC40LDE0LjcgOCwxNC4xIDgsMTMuNEM4LDEyLjIgOC41LDExLjggOC41LDExLjhWMTEuOEM5LDExLjUgOS4xLDEwLjkgOC44LDEwLjRDOC42LDEwIDcuOSw5LjkgNy41LDEwLjFDNy4zLDEwLjIgNiwxMS4xIDYsMTMuNEM2LDE0LjYgNi42LDE1LjYgNy4yLDE2LjRDNy42LDE3LjEgOCwxNy43IDgsMTguM0M4LDE5LjQgNi44LDIwLjggNi4zLDIxLjJWMjEuMkM1LjksMjEuNiA1LjksMjIuMiA2LjIsMjIuNkM2LjUsMjIuOSA2LjcsMjMgNywyM0M3LjIsMjMgNy41LDIyLjkgNy43LDIyLjdNMTIsM0M5LjQsMyAxLDMuMyAxLDdDMSw5LjQgMi4yLDE1LjQgMi44LDE4SDRMNC44LDE4SDVWMTZINC40QzMuOCwxMy4xIDMsOC44IDMsN0MzLDYgNy40LDUgMTIsNUMxNi42LDUgMjEsNiAyMSw3QzIxLDguOCAyMC4yLDEzLjEgMTkuNiwxNkgxOVYxOEgxOS4yTDIwLDE4SDIxLjJDMjEuOCwxNS40IDIzLDkuNCAyMyw3QzIzLDMuMyAxNC42LDMgMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJEZWZyb3N0UmVhciA9IFwiTTEwLDE4LjNDMTAsMjAuNSA3LjksMjIuNSA3LjcsMjIuN0M3LjUsMjIuOSA3LjIsMjMgNywyM0M2LjcsMjMgNi41LDIyLjkgNi4yLDIyLjZDNS45LDIyLjIgNS45LDIxLjYgNi4zLDIxLjJDNi44LDIwLjggOCwxOS40IDgsMTguM0M4LDE3LjcgNy42LDE3LjEgNy4yLDE2LjRDNi42LDE1LjYgNiwxNC42IDYsMTMuNEM2LDExLjEgNy4zLDEwLjIgNy41LDEwLjFDNy45LDkuOSA4LjYsMTAgOC44LDEwLjRDOS4xLDEwLjkgOSwxMS41IDguNSwxMS44QzguNSwxMS44IDgsMTIuMiA4LDEzLjRDOCwxNC4xIDguNCwxNC43IDguOCwxNS4zQzkuNCwxNi4xIDEwLDE3LjEgMTAsMTguM00xMiwxMy40QzEyLDEyLjIgMTIuNSwxMS44IDEyLjUsMTEuOEMxMywxMS41IDEzLjEsMTAuOSAxMi44LDEwLjRDMTIuNSw5LjkgMTEuOSw5LjggMTEuNCwxMC4xQzExLjIsMTAuMiA5LjksMTEuMSA5LjksMTMuNEM5LjksMTQuNiAxMC41LDE1LjYgMTEuMSwxNi40QzExLjUsMTcuMSAxMS45LDE3LjcgMTEuOSwxOC4zQzExLjksMTkuNCAxMC43LDIwLjggMTAuMiwyMS4yQzkuOCwyMS42IDkuOCwyMi4yIDEwLjEsMjIuNkMxMC4zLDIyLjggMTAuNiwyMi45IDEwLjgsMjIuOUMxMS4yLDIzIDExLjUsMjIuOSAxMS43LDIyLjdDMTEuOSwyMi41IDE0LDIwLjUgMTQsMTguM0MxNCwxNy4xIDEzLjQsMTYuMSAxMi44LDE1LjNDMTIuNCwxNC42IDEyLDE0IDEyLDEzLjRNMjAsM0g0QTIsMiAwIDAsMCAyLDVWMTZBMiwyIDAgMCwwIDQsMThINVYxNkg0VjVIMjBWMTZIMTlWMThIMjBBMiwyIDAgMCwwIDIyLDE2VjVBMiwyIDAgMCwwIDIwLDNNMTYuMiwxMy41QzE2LjIsMTIuMyAxNi43LDExLjkgMTYuNywxMS45QzE3LjEsMTEuNiAxNy4zLDExIDE3LDEwLjVDMTYuNywxMC4xIDE2LjEsOS45IDE1LjYsMTAuMkMxNS40LDEwLjMgMTQuMSwxMS4yIDE0LjEsMTMuNUMxNC4xLDE0LjcgMTQuOCwxNS43IDE1LjMsMTYuNUMxNS43LDE3LjIgMTYuMSwxNy44IDE2LjEsMTguNEMxNi4xLDE5LjUgMTQuOSwyMC45IDE0LjQsMjEuM0MxNCwyMS43IDEzLjksMjIuMyAxNC4zLDIyLjdDMTQuNSwyMi45IDE0LjcsMjMgMTUsMjNDMTUuMiwyMyAxNS41LDIyLjkgMTUuOSwyMi44QzE2LjEsMjIuNiAxOC4yLDIwLjYgMTguMiwxOC40QzE4LjIsMTcuMiAxNy41LDE2LjIgMTcsMTUuNEMxNi42LDE0LjcgMTYuMiwxNC4xIDE2LjIsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJEb29yID0gXCJNMTksMTRIMTZWMTZIMTlWMTRNMjIsMjFIM1YxMUwxMSwzSDIxQTEsMSAwIDAsMSAyMiw0VjIxTTExLjgzLDVMNS44MywxMUgyMFY1SDExLjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckRvb3JMb2NrID0gXCJNMjEgM0gxMUwzIDExVjEySDQuNUM3LjUgMTIgMTAgMTQuOTEgMTAgMTguNVYyMUgyMlY0QTEgMSAwIDAgMCAyMSAzTTE5IDE2SDE2VjE0SDE5TTIwIDExSDUuODNMMTEuODMgNUgyME03IDE3VjE2LjVBMi41IDIuNSAwIDAgMCAyIDE2LjVWMTdBMSAxIDAgMCAwIDEgMThWMjJBMSAxIDAgMCAwIDIgMjNIN0ExIDEgMCAwIDAgOCAyMlYxOEExIDEgMCAwIDAgNyAxN002LjIgMTdIMi44VjE2LjVBMS43IDEuNyAwIDAgMSA2LjIgMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJFbGVjdHJpYyA9IFwiTTE4LjkyIDJDMTguNzIgMS40MiAxOC4xNiAxIDE3LjUgMUg2LjVDNS44NCAxIDUuMjkgMS40MiA1LjA4IDJMMyA4VjE2QzMgMTYuNTUgMy40NSAxNyA0IDE3SDVDNS41NSAxNyA2IDE2LjU1IDYgMTZWMTVIMThWMTZDMTggMTYuNTUgMTguNDUgMTcgMTkgMTdIMjBDMjAuNTUgMTcgMjEgMTYuNTUgMjEgMTZWOEwxOC45MiAyTTYuNSAxMkM1LjY3IDEyIDUgMTEuMzMgNSAxMC41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyTTE3LjUgMTJDMTYuNjcgMTIgMTYgMTEuMzMgMTYgMTAuNVMxNi42NyA5IDE3LjUgOSAxOSA5LjY3IDE5IDEwLjUgMTguMzMgMTIgMTcuNSAxMk01IDdMNi41IDIuNUgxNy41TDE5IDdINU03IDIwSDExVjE4TDE3IDIxSDEzVjIzTDcgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyRWxlY3RyaWNPdXRsaW5lID0gXCJNMTguOTIgMkMxOC43MiAxLjQyIDE4LjE2IDEgMTcuNSAxSDYuNUM1Ljg0IDEgNS4yOSAxLjQyIDUuMDggMkwzIDhWMTZDMyAxNi41NSAzLjQ1IDE3IDQgMTdINUM1LjU1IDE3IDYgMTYuNTUgNiAxNlYxNUgxOFYxNkMxOCAxNi41NSAxOC40NSAxNyAxOSAxN0gyMEMyMC41NSAxNyAyMSAxNi41NSAyMSAxNlY4TDE4LjkyIDJNNi44NSAzSDE3LjE0TDE4LjIyIDYuMTFINS43N0w2Ljg1IDNNMTkgMTNINVY4SDE5VjEzTTcuNSA5QzguMzMgOSA5IDkuNjcgOSAxMC41UzguMzMgMTIgNy41IDEyIDYgMTEuMzMgNiAxMC41IDYuNjcgOSA3LjUgOU0xNi41IDlDMTcuMzMgOSAxOCA5LjY3IDE4IDEwLjVTMTcuMzMgMTIgMTYuNSAxMkMxNS42NyAxMiAxNSAxMS4zMyAxNSAxMC41UzE1LjY3IDkgMTYuNSA5TTcgMjBIMTFWMThMMTcgMjFIMTNWMjNMNyAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJFbWVyZ2VuY3kgPSBcIk0xMSAwVjNIMTNWMEgxMU03Ljg4IDEuNDZMNi40NiAyLjg3TDguNTkgNUwxMCAzLjU4TDcuODggMS40Nk0xNi4xMiAxLjQ2TDE0IDMuNThMMTUuNDEgNUwxNy41NCAyLjg4TDE2LjEyIDEuNDZNMTIgNUEyIDIgMCAwIDAgMTAgN1Y4SDYuNUM1Ljg0IDggNS4yOCA4LjQyIDUuMDggOUwzIDE1VjIzQTEgMSAwIDAgMCA0IDI0SDVBMSAxIDAgMCAwIDYgMjNWMjJIMThWMjNBMSAxIDAgMCAwIDE5IDI0SDIwQTEgMSAwIDAgMCAyMSAyM1YxNUwxOC45MiA5QzE4LjcyIDguNDIgMTguMTYgOCAxNy41IDhIMTRWN0EyIDIgMCAwIDAgMTIgNU02LjUgOS41SDE3LjVMMTkgMTRINUw2LjUgOS41TTYuNSAxNkExLjUgMS41IDAgMCAxIDggMTcuNUExLjUgMS41IDAgMCAxIDYuNSAxOUExLjUgMS41IDAgMCAxIDUgMTcuNUExLjUgMS41IDAgMCAxIDYuNSAxNk0xNy41IDE2QTEuNSAxLjUgMCAwIDEgMTkgMTcuNUExLjUgMS41IDAgMCAxIDE3LjUgMTlBMS41IDEuNSAwIDAgMSAxNiAxNy41QTEuNSAxLjUgMCAwIDEgMTcuNSAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJFc3AgPSBcIk01LjMxLDZDNi45NSw0LjE2IDkuMzQsMyAxMiwzQzE0LjY2LDMgMTcuMDUsNC4xNiAxOC42OSw2SDE1LjU4QzE0LjUzLDUuMzcgMTMuMzEsNSAxMiw1QzEwLjY5LDUgOS40Nyw1LjM3IDguNDIsNkg1LjMxTTE0LjQsOS42VjhIMTEuMkExLjYsMS42IDAgMCwwIDkuNiw5LjZWMTEuMkM5LjYsMTIuMDggMTAuMzIsMTIuOCAxMS4yLDEyLjhIMTIuOFYxNC40SDkuNlYxNkgxMi44QTEuNiwxLjYgMCAwLDAgMTQuNCwxNC40VjEyLjhDMTQuNCwxMS45MiAxMy42OCwxMS4yIDEyLjgsMTEuMkgxMS4yVjkuNkgxNC40TTE4LjQsOEgxNS4yVjE2SDE2LjhWMTIuOEgxOC40QTEuNiwxLjYgMCAwLDAgMjAsMTEuMlY5LjZDMjAsOC43MiAxOS4yOCw4IDE4LjQsOE0xOC40LDExLjJIMTYuOFY5LjZIMTguNFYxMS4yTTguOCw5LjZWOEg0VjE2SDguOFYxNC40SDUuNlYxMi44SDguOFYxMS4ySDUuNlY5LjZIOC44TTE1LjU4LDE4QzE0LjUzLDE4LjYzIDEzLjMxLDE5IDEyLDE5QzEwLjY5LDE5IDkuNDcsMTguNjMgOC40MiwxOEg1LjMxQzYuOTUsMTkuODQgOS4zNCwyMSAxMiwyMUMxNC42NiwyMSAxNy4wNSwxOS44NCAxOC42OSwxOEgxNS41OE0yMC41LDMuNUwxOS40Miw0LjU4QzIxLjMyLDYuNSAyMi41LDkuMTEgMjIuNSwxMkMyMi41LDE0LjkgMjEuMzIsMTcuNSAxOS40MiwxOS40MkwyMC41LDIwLjVDMjIuNjYsMTguMzEgMjQsMTUuMzEgMjQsMTJDMjQsOC42OSAyMi42Niw1LjY5IDIwLjUsMy41TTQuNTgsNC41OEwzLjUsMy41QzEuMzQsNS42OSAwLDguNjkgMCwxMkMwLDE1LjMxIDEuMzQsMTguMzEgMy41LDIwLjVMNC41OCwxOS40MkMyLjY4LDE3LjUgMS41LDE0LjkgMS41LDEyQzEuNSw5LjExIDIuNjgsNi41IDQuNTgsNC41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJFc3RhdGUgPSBcIk0zLDZIMTZMMTksMTBIMjFDMjIuMTEsMTAgMjMsMTAuODkgMjMsMTJWMTVIMjFBMywzIDAgMCwxIDE4LDE4QTMsMyAwIDAsMSAxNSwxNUg5QTMsMyAwIDAsMSA2LDE4QTMsMyAwIDAsMSAzLDE1SDFWOEMxLDYuODkgMS44OSw2IDMsNk0yLjUsNy41VjEwSDEwLjVWNy41SDIuNU0xMiw3LjVWMTBIMTcuMTRMMTUuMjUsNy41SDEyTTYsMTMuNUExLjUsMS41IDAgMCwwIDQuNSwxNUExLjUsMS41IDAgMCwwIDYsMTYuNUExLjUsMS41IDAgMCwwIDcuNSwxNUExLjUsMS41IDAgMCwwIDYsMTMuNU0xOCwxMy41QTEuNSwxLjUgMCAwLDAgMTYuNSwxNUExLjUsMS41IDAgMCwwIDE4LDE2LjVBMS41LDEuNSAwIDAsMCAxOS41LDE1QTEuNSwxLjUgMCAwLDAgMTgsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJIYXRjaGJhY2sgPSBcIk0xNiw2SDZMMSwxMlYxNUgzQTMsMyAwIDAsMCA2LDE4QTMsMyAwIDAsMCA5LDE1SDE1QTMsMyAwIDAsMCAxOCwxOEEzLDMgMCAwLDAgMjEsMTVIMjNWMTJDMjMsMTAuODkgMjIuMTEsMTAgMjEsMTBIMTlMMTYsNk02LjUsNy41SDEwLjVWMTBINC41TDYuNSw3LjVNMTIsNy41SDE1LjVMMTcuNDYsMTBIMTJWNy41TTYsMTMuNUExLjUsMS41IDAgMCwxIDcuNSwxNUExLjUsMS41IDAgMCwxIDYsMTYuNUExLjUsMS41IDAgMCwxIDQuNSwxNUExLjUsMS41IDAgMCwxIDYsMTMuNU0xOCwxMy41QTEuNSwxLjUgMCAwLDEgMTkuNSwxNUExLjUsMS41IDAgMCwxIDE4LDE2LjVBMS41LDEuNSAwIDAsMSAxNi41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJJbmZvID0gXCJNMTkgMTVIMTdWMTNIMTlNMjAgMjBWMjJIMTZWMjBIMTdWMThIMTZWMTZIMTlWMjBNMTguOTIgNUExLjUgMS41IDAgMCAwIDE3LjUgNEg2LjVBMS41IDEuNSAwIDAgMCA1LjA4IDVMMyAxMVYxOUExIDEgMCAwIDAgNCAyMEg1QTEgMSAwIDAgMCA2IDE5VjE4SDExQTcgNyAwIDAgMSAxOCAxMUE2Ljg0IDYuODQgMCAwIDEgMjEgMTEuNjhWMTFNNi41IDE1QTEuNSAxLjUgMCAxIDEgOCAxMy41QTEuNSAxLjUgMCAwIDEgNi41IDE1TTUgMTBMNi41IDUuNUgxNy41TDE5IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcktleSA9IFwiTTkuNSwwQTMsMyAwIDAsMCA2LjUsM0EzLDMgMCAwLDAgOS41LDZDMTAuODEsNiAxMS45Miw1LjE3IDEyLjMzLDRIMTQuNVY2SDE2LjVWNEgxNy41VjJIMTIuMzNDMTEuOTIsMC44MyAxMC44MSwwIDkuNSwwTTkuNSwyQTEsMSAwIDAsMSAxMC41LDNBMSwxIDAgMCwxIDkuNSw0QTEsMSAwIDAsMSA4LjUsM0ExLDEgMCAwLDEgOS41LDJNNi41LDhDNS44NCw4IDUuMjgsOC40MiA1LjA4LDlMMywxNVYyM0ExLDEgMCAwLDAgNCwyNEg1QTEsMSAwIDAsMCA2LDIzVjIySDE4VjIzQTEsMSAwIDAsMCAxOSwyNEgyMEExLDEgMCAwLDAgMjEsMjNWMTVMMTguOTIsOUMxOC43Miw4LjQyIDE4LjE2LDggMTcuNSw4SDYuNU02LjUsOS41SDE3LjVMMTksMTRINUw2LjUsOS41TTYuNSwxNkExLjUsMS41IDAgMCwxIDgsMTcuNUExLjUsMS41IDAgMCwxIDYuNSwxOUExLjUsMS41IDAgMCwxIDUsMTcuNUExLjUsMS41IDAgMCwxIDYuNSwxNk0xNy41LDE2QTEuNSwxLjUgMCAwLDEgMTksMTcuNUExLjUsMS41IDAgMCwxIDE3LjUsMTlBMS41LDEuNSAwIDAsMSAxNiwxNy41QTEuNSwxLjUgMCAwLDEgMTcuNSwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJMaWZ0ZWRQaWNrdXAgPSBcIk0xOCAxNEwxOC43OSAxNC4xTDE4Ljc3IDE0LjMzTDE5LjI0IDE0LjVMMTkuMzkgMTQuMzRDMTkuODkgMTQuNiAyMC4zMiAxNSAyMC42IDE1LjVMMjAuNDMgMTUuNjdMMjAuNjMgMTYuMTJMMjAuODYgMTYuMUMyMC45NSAxNi4zOSAyMSAxNi42OSAyMSAxN0wyMC45IDE3Ljc4TDIwLjY2IDE3Ljc3TDIwLjQ3IDE4LjI0TDIwLjY2IDE4LjM5QzIwLjM5IDE4LjkgMjAgMTkuMzIgMTkuNSAxOS42TDE5LjMzIDE5LjQyTDE4Ljg3IDE5LjYyTDE4Ljg5IDE5Ljg2QzE4LjYxIDE5Ljk1IDE4LjMxIDIwIDE4IDIwTDE3LjIxIDE5LjlMMTcuMjIgMTkuNjVMMTYuNzYgMTkuNDdMMTYuNiAxOS42NkMxNi4xIDE5LjM5IDE1LjY3IDE5IDE1LjM5IDE4LjVMMTUuNTcgMTguMzJMMTUuMzcgMTcuODZMMTUuMTMgMTcuODhDMTUuMDUgMTcuNiAxNSAxNy4zMSAxNSAxN0wxNS4xMSAxNi4yTDE1LjM0IDE2LjIxTDE1LjUzIDE1Ljc1TDE1LjM1IDE1LjZDMTUuNjIgMTUuMDkgMTYgMTQuNjggMTYuNSAxNC4zOUwxNi42NyAxNC41NkwxNy4xMyAxNC4zNkwxNy4xMSAxNC4xNEMxNy4zOSAxNC4wNSAxNy42OSAxNCAxOCAxNE0xOCAxNS41QzE3LjE3IDE1LjUgMTYuNSAxNi4xNyAxNi41IDE3QzE2LjUgMTcuODMgMTcuMTcgMTguNSAxOCAxOC41QzE4LjgzIDE4LjUgMTkuNSAxNy44MyAxOS41IDE3QzE5LjUgMTYuMTcgMTguODMgMTUuNSAxOCAxNS41TTYgMTRMNi43OSAxNC4xTDYuNzcgMTQuMzNMNy4yNCAxNC41TDcuMzkgMTQuMzRDNy44OSAxNC42IDguMzIgMTUgOC42IDE1LjVMOC40MyAxNS42N0w4LjYzIDE2LjEyTDguODYgMTYuMUM4Ljk1IDE2LjM5IDkgMTYuNjkgOSAxN0w4LjkgMTcuNzhMOC42NSAxNy43N0w4LjQ3IDE4LjI0TDguNjYgMTguMzlDOC4zOSAxOC45IDggMTkuMzIgNy41IDE5LjZMNy4zMyAxOS40Mkw2Ljg3IDE5LjYyTDYuODkgMTkuODZDNi42MSAxOS45NSA2LjMxIDIwIDYgMjBMNS4yMSAxOS45TDUuMjIgMTkuNjVMNC43NiAxOS40N0w0LjYgMTkuNjZDNC4xIDE5LjM5IDMuNjcgMTkgMy4zOSAxOC41TDMuNTcgMTguMzJMMy4zNyAxNy44NkwzLjEzIDE3Ljg4QzMuMDUgMTcuNiAzIDE3LjMxIDMgMTdMMy4xMSAxNi4yTDMuMzQgMTYuMjFMMy41MyAxNS43NUwzLjM1IDE1LjZDMy42MiAxNS4wOSA0IDE0LjY4IDQuNSAxNC4zOUw0LjY3IDE0LjU2TDUuMTMgMTQuMzZMNS4xMSAxNC4xNEM1LjM5IDE0LjA1IDUuNjkgMTQgNiAxNE02IDE1LjVDNS4xNyAxNS41IDQuNSAxNi4xNyA0LjUgMTdDNC41IDE3LjgzIDUuMTcgMTguNSA2IDE4LjVDNi44MyAxOC41IDcuNSAxNy44MyA3LjUgMTdDNy41IDE2LjE3IDYuODMgMTUuNSA2IDE1LjVNMTYgNkwxOSAxMEgyMUMyMi4xMSAxMCAyMyAxMC44OSAyMyAxMlYxNUgyMUMyMSAxMy4zNCAxOS42NiAxMiAxOCAxMkMxNi4zNCAxMiAxNSAxMy4zNCAxNSAxNUg5QzkgMTMuMzQgNy42NiAxMiA2IDEyQzQuMzQgMTIgMyAxMy4zNCAzIDE1SDFWMTBIMTAuNVY2TDE2IDZNMTIgNy41VjEwSDE3LjQ2TDE1LjUgNy41SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckxpZ2h0RGltbWVkID0gXCJNMTMsNC44QzksNC44IDksMTkuMiAxMywxOS4yQzE3LDE5LjIgMjIsMTYuNSAyMiwxMkMyMiw3LjUgMTcsNC44IDEzLDQuOE0xMy4xLDE3LjJDMTIuNywxNi44IDEyLDE1IDEyLDEyQzEyLDkgMTIuNyw3LjIgMTMuMSw2LjhDMTYsNi45IDIwLDguNyAyMCwxMkMyMCwxNS4zIDE1LjksMTcuMSAxMy4xLDE3LjJNOCwxMC41QzgsMTEgNy45LDExLjUgNy45LDEyQzcuOSwxMi4yIDcuOSwxMi40IDcuOSwxMi42TDIuNCwxNEwxLjksMTIuMUw4LDEwLjVNMiw3TDkuNCw1LjFDOS4yLDUuNCA5LDUuOCA4LjksNi4zQzguOCw2LjYgOC43LDcgOC42LDcuNEwyLjUsOC45TDIsN004LjIsMTUuNUM4LjMsMTYuMiA4LjUsMTYuOSA4LjcsMTcuNEwyLjQsMTlMMS45LDE3LjFMOC4yLDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyTGlnaHRGb2cgPSBcIk0xMyw0LjhDOSw0LjggOSwxOS4yIDEzLDE5LjJDMTcsMTkuMiAyMiwxNi41IDIyLDEyQzIyLDcuNSAxNyw0LjggMTMsNC44TTEzLjEsMTcuMkMxMi43LDE2LjggMTIsMTUgMTIsMTJDMTIsOSAxMi43LDcuMiAxMy4xLDYuOEMxNiw2LjkgMjAsOC43IDIwLDEyQzIwLDE1LjMgMTYsMTcuMSAxMy4xLDE3LjJNNiw4VjExSDhDOCwxMS4zIDgsMTEuNyA4LDEyQzgsMTIuMyA4LDEyLjcgOCwxM0g2VjE2SDguNEM4LjYsMTYuNyA4LjgsMTcuNCA5LDE4SDZWMjFINFYxOEgyVjE2SDRWMTNIMlYxMUg0VjhIMlY2SDRWM0g2VjZIOUM5LDYuMSA4LjksNi4yIDguOSw2LjRDOC43LDYuOSA4LjUsNy40IDguNCw4SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyTGlnaHRIaWdoID0gXCJNMTMsNC44QzksNC44IDksMTkuMiAxMywxOS4yQzE3LDE5LjIgMjIsMTYuNSAyMiwxMkMyMiw3LjUgMTcsNC44IDEzLDQuOE0xMy4xLDE3LjJDMTIuNywxNi44IDEyLDE1IDEyLDEyQzEyLDkgMTIuNyw3LjIgMTMuMSw2LjhDMTYsNi45IDIwLDguNyAyMCwxMkMyMCwxNS4zIDE2LDE3LjEgMTMuMSwxNy4yTTIsNUg5LjVDOS4zLDUuNCA5LDUuOCA4LjksNi40QzguOCw2LjYgOC44LDYuOCA4LjcsN0gyVjVNOCwxMUgyVjlIOC4yQzguMSw5LjYgOC4xLDEwLjMgOCwxMU04LjcsMTdDOC45LDE3LjggOS4yLDE4LjQgOS42LDE5SDIuMVYxN0g4LjdNOC4yLDE1SDJWMTNIOEM4LjEsMTMuNyA4LjEsMTQuNCA4LjIsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyTGltb3VzaW5lID0gXCJNMSw2TDIuNSw3LjVMMSw5TDIuNSwxMC41TDEsMTJMMi41LDEzLjVMMSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjEyQzIzLDEwLjg5IDIyLjExLDEwIDIxLDEwSDE5TDE2LDZIMU00LjYyLDcuNUgxMC41VjEwSDQuMTJMMy4xMiw5TDQuNjIsNy41TTEyLDcuNUgxNS41TDE3LjQ2LDEwSDEyVjcuNU0xOCwxMy41QTEuNSwxLjUgMCAwLDEgMTkuNSwxNUExLjUsMS41IDAgMCwxIDE4LDE2LjVBMS41LDEuNSAwIDAsMSAxNi41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJNdWx0aXBsZSA9IFwiTTgsMTFMOS41LDYuNUgxOC41TDIwLDExTTE4LjUsMTZBMS41LDEuNSAwIDAsMSAxNywxNC41QTEuNSwxLjUgMCAwLDEgMTguNSwxM0ExLjUsMS41IDAgMCwxIDIwLDE0LjVBMS41LDEuNSAwIDAsMSAxOC41LDE2TTkuNSwxNkExLjUsMS41IDAgMCwxIDgsMTQuNUExLjUsMS41IDAgMCwxIDkuNSwxM0ExLjUsMS41IDAgMCwxIDExLDE0LjVBMS41LDEuNSAwIDAsMSA5LjUsMTZNMTkuOTIsNkMxOS43MSw1LjQgMTkuMTQsNSAxOC41LDVIOS41QzguODYsNSA4LjI5LDUuNCA4LjA4LDZMNiwxMlYyMEExLDEgMCAwLDAgNywyMUg4QTEsMSAwIDAsMCA5LDIwVjE5SDE5VjIwQTEsMSAwIDAsMCAyMCwyMUgyMUExLDEgMCAwLDAgMjIsMjBWMTJMMTkuOTIsNk0xNC45MiwzQzE0LjcxLDIuNCAxNC4xNCwyIDEzLjUsMkg0LjVDMy44NiwyIDMuMjksMi40IDMuMDgsM0wxLDlWMTdBMSwxIDAgMCwwIDIsMThIM0ExLDEgMCAwLDAgNCwxN1YxMi45MUMzLjIyLDEyLjYzIDIuODIsMTEuNzcgMy4xLDExQzMuMzIsMTAuNCAzLjg3LDEwIDQuNSwxMEg0LjU3TDUuMjcsOEgzTDQuNSwzLjVIMTUuMDlMMTQuOTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJPZmYgPSBcIk0yMC41LDE5Ljg1TDYuNDEsNS43NkwyLjQxLDEuNzZMMS4xMSwzTDQuNTcsNi40NkwzLDExVjE5QTEsMSAwIDAsMCA0LDIwSDVBMSwxIDAgMCwwIDYsMTlWMThIMTYuMTFMMjAuODQsMjIuNzNMMjIuMTEsMjEuNDZMMjAuNSwxOS44NU02LjUsMTVBMS41LDEuNSAwIDAsMSA1LDEzLjVBMS41LDEuNSAwIDAsMSA2LjUsMTJBMS41LDEuNSAwIDAsMSA4LDEzLjVBMS41LDEuNSAwIDAsMSA2LjUsMTVNNSwxMEw1Ljc4LDcuNjdMOC4xMSwxMEg1TTE3LjUsNS41TDE5LDEwSDEzLjJMMTYuMTIsMTIuOTJDMTYuNSwxMi4xNyAxNy4zNywxMS44NiAxOC4xMiwxMi4yMUMxOC44NywxMi41NyAxOS4xOCwxMy40NyAxOC44MywxNC4yMUMxOC42OCwxNC41IDE4LjQzLDE0Ljc3IDE4LjEyLDE0LjkyTDIxLDE3LjhWMTFMMTguOTIsNUMxOC43MSw0LjQgMTguMTQsNCAxNy41LDRINy4yTDguNyw1LjVIMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJPdXRsaW5lID0gXCJNMTguOSA2QzE4LjcgNS40IDE4LjEgNSAxNy41IDVINi41QzUuOCA1IDUuMyA1LjQgNS4xIDZMMyAxMlYyMEMzIDIwLjUgMy41IDIxIDQgMjFINUM1LjYgMjEgNiAyMC41IDYgMjBWMTlIMThWMjBDMTggMjAuNSAxOC41IDIxIDE5IDIxSDIwQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxMkwxOC45IDZNNi44IDdIMTcuMUwxOC4yIDEwSDUuOEw2LjggN00xOSAxN0g1VjEySDE5VjE3TTcuNSAxM0M4LjMgMTMgOSAxMy43IDkgMTQuNVM4LjMgMTYgNy41IDE2IDYgMTUuMyA2IDE0LjUgNi43IDEzIDcuNSAxM00xNi41IDEzQzE3LjMgMTMgMTggMTMuNyAxOCAxNC41UzE3LjMgMTYgMTYuNSAxNkMxNS43IDE2IDE1IDE1LjMgMTUgMTQuNVMxNS43IDEzIDE2LjUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyUGFya2luZ0xpZ2h0cyA9IFwiTTcuMyw5LjJDOC4xLDkuNiA5LDEwLjUgOSwxMkM5LDEzLjUgOC4xLDE0LjQgNy4zLDE0LjhDNi45LDEzLjQgNi45LDEwLjYgNy4zLDkuMk02LjUsN0M0LjUsNyA0LjUsMTcgNi41LDE3QzguNSwxNyAxMSwxNS4xIDExLDEyQzExLDguOSA4LjUsNyA2LjUsN00xNi43LDkuMkMxNywxMC42IDE3LDEzLjQgMTYuNywxNC44QzE1LjksMTQuNCAxNSwxMy41IDE1LDEyQzE1LDEwLjUgMTUuOSw5LjYgMTYuNyw5LjJNMTcuNSw3QzE1LjUsNyAxMyw4LjkgMTMsMTJDMTMsMTUuMSAxNS41LDE3IDE3LjUsMTdDMTkuNSwxNyAxOS41LDcgMTcuNSw3TTQuOSw2LjJMMi41LDQuNkwxLjQsNi4zTDQsOEM0LjIsNy4zIDQuNSw2LjYgNC45LDYuMk0yMCw4TDIyLjYsNi4zTDIxLjUsNC42TDE5LjEsNi4yQzE5LjQsNi42IDE5LjgsNy4yIDIwLDhNNCwxNkwxLjQsMTcuN0wyLjUsMTkuNEw0LjksMTcuOEM0LjYsMTcuNCA0LjIsMTYuOCA0LDE2TTIwLjUsMTFDMjAuNSwxMS4zIDIwLjUsMTEuNyAyMC41LDEyQzIwLjUsMTIuMyAyMC41LDEyLjYgMjAuNSwxM0gyNFYxMUgyMC41TTE5LjEsMTcuOEwyMS41LDE5LjRMMjIuNiwxNy43TDIwLDE2QzE5LjgsMTYuNyAxOS41LDE3LjQgMTkuMSwxNy44TTMuNSwxMkMzLjUsMTEuNyAzLjUsMTEuNCAzLjUsMTFIMFYxM0gzLjVDMy41LDEyLjcgMy41LDEyLjMgMy41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhclBpY2t1cCA9IFwiTTE2LDZIMTAuNVYxMEgxVjE1SDNBMywzIDAgMCwwIDYsMThBMywzIDAgMCwwIDksMTVIMTVBMywzIDAgMCwwIDE4LDE4QTMsMyAwIDAsMCAyMSwxNUgyM1YxMkMyMywxMC44OSAyMi4xMSwxMCAyMSwxMEgxOUwxNiw2TTEyLDcuNUgxNS41TDE3LjQ2LDEwSDEyVjcuNU02LDEzLjVBMS41LDEuNSAwIDAsMSA3LjUsMTVBMS41LDEuNSAwIDAsMSA2LDE2LjVBMS41LDEuNSAwIDAsMSA0LjUsMTVBMS41LDEuNSAwIDAsMSA2LDEzLjVNMTgsMTMuNUExLjUsMS41IDAgMCwxIDE5LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxNi41QTEuNSwxLjUgMCAwLDEgMTYuNSwxNUExLjUsMS41IDAgMCwxIDE4LDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyU2VhdCA9IFwiTTcgMThDNyAxOCA0IDEwIDQgNlM2IDIgNiAySDdDNyAyIDggMiA4IDNTNyA0IDcgNiAxMCAxMCAxMCAxMyA3IDE4IDcgMThNMTIgMTdDMTEgMTcgOCAxOS41IDggMTkuNUM3LjcgMTkuNyA3LjggMjAgOCAyMC4zQzggMjAuMyA5IDIyLjEgMTEgMjIuMUgxN0MxOC4xIDIyLjEgMTkgMjEuMiAxOSAyMC4xVjE5LjFDMTkgMTggMTguMSAxNy4xIDE3IDE3LjFIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyU2VhdENvb2xlciA9IFwiTTIwLjggMTAuMkwxOS40IDEwLjZMMTguMiA5LjlWOC4yTDE5LjQgNy41TDIwLjggNy45TDIxLjEgNi44TDIwIDYuNUwyMC4zIDUuNEwxOS4yIDUuMUwxOC44IDYuNUwxNy42IDcuMkwxNi4xIDYuM1Y1TDE3LjEgNEwxNi4zIDMuMkwxNS41IDRMMTQuNyAzLjJMMTMuOSA0TDE0LjkgNVY2LjNMMTMuNCA3LjJMMTIuMiA2LjVMMTEuOSA1LjFMMTAuOCA1LjRMMTEuMSA2LjVMMTAgNi43TDEwLjMgNy44TDExLjcgNy40TDEyLjkgOC4xVjkuOEwxMS43IDEwLjVMMTAuMyAxMC4xTDEwIDExLjRMMTEuMSAxMS43TDEwLjggMTIuN0wxMS45IDEzTDEyLjMgMTEuNkwxMy41IDEwLjlMMTUgMTEuOFYxMy4xTDE0IDE0LjFMMTQuOCAxNC45TDE1LjYgMTQuMUwxNi40IDE0LjlMMTcuMiAxNC4xTDE2LjIgMTMuMVYxMS44TDE3LjcgMTAuOUwxOC45IDExLjZMMTkuMyAxM0wyMC40IDEyLjdMMjAgMTEuNkwyMS4xIDExLjNMMjAuOCAxMC4yTTE0IDguMkwxNS41IDcuM0wxNyA4LjJWOS45TDE1LjUgMTAuOEwxNCA5LjlWOC4yTTUgMThDNSAxOCAyIDEwIDIgNlM0IDIgNCAySDVDNSAyIDYgMiA2IDNTNSA0IDUgNiA4IDEwIDggMTMgNSAxOCA1IDE4TTE1IDE3QzE2LjEgMTcgMTcgMTcuOSAxNyAxOVYyMEMxNyAyMS4xIDE2LjEgMjIgMTUgMjJIOUM3IDIyIDYgMjAuMiA2IDIwLjJDNS44IDIwIDUuNyAxOS42IDYgMTkuNEM2IDE5LjQgOSAxNi45IDEwIDE2LjlIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyU2VhdEhlYXRlciA9IFwiTTUgMThDNSAxOCAyIDEwIDIgNlM0IDIgNCAySDVDNSAyIDYgMiA2IDNTNSA0IDUgNiA4IDEwIDggMTMgNSAxOCA1IDE4TTE1IDE3QzE2LjEgMTcgMTcgMTcuOSAxNyAxOVYyMEMxNyAyMS4xIDE2LjEgMjIgMTUgMjJIOUM3IDIyIDYgMjAuMiA2IDIwLjJDNS44IDIwIDUuNyAxOS42IDYgMTkuNEM2IDE5LjQgOSAxNi45IDEwIDE2LjlIMTVNMTMuNyAzLjRMMTIuMyA2LjhMMTMuNyAxMC4yTDExLjcgMTVMMTAgMTMuNkwxMS40IDEwLjJMMTAgNi44TDEyIDJMMTMuNyAzLjRNMTcuOSAzLjRMMTYuNSA2LjhMMTcuOSAxMC4yTDE1LjkgMTVMMTQuMiAxMy42TDE1LjYgMTAuMkwxNC4yIDYuOEwxNi4yIDJMMTcuOSAzLjRNMjIgMy40TDIwLjYgNi44TDIyIDEwLjJMMjAgMTVMMTguMyAxMy42TDE5LjcgMTAuMkwxOC4zIDYuOEwyMC4zIDJMMjIgMy40XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyU2V0dGluZ3MgPSBcIk0xNSAyMkgxN1YyNEgxNU0xMSAyMkgxM1YyNEgxMU03IDIySDlWMjRIN001IDExTDYuNSA2LjVIMTcuNUwxOSAxMU0xNy41IDE2QTEuNSAxLjUgMCAwIDEgMTYgMTQuNUExLjUgMS41IDAgMCAxIDE3LjUgMTNBMS41IDEuNSAwIDAgMSAxOSAxNC41QTEuNSAxLjUgMCAwIDEgMTcuNSAxNk02LjUgMTZBMS41IDEuNSAwIDAgMSA1IDE0LjVBMS41IDEuNSAwIDAgMSA2LjUgMTNBMS41IDEuNSAwIDAgMSA4IDE0LjVBMS41IDEuNSAwIDAgMSA2LjUgMTZNMTguOTIgNkMxOC43MiA1LjQyIDE4LjE2IDUgMTcuNSA1SDYuNUM1Ljg0IDUgNS4yOCA1LjQyIDUuMDggNkwzIDEyVjIwQTEgMSAwIDAgMCA0IDIxSDVBMSAxIDAgMCAwIDYgMjBWMTlIMThWMjBBMSAxIDAgMCAwIDE5IDIxSDIwQTEgMSAwIDAgMCAyMSAyMFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJTaGlmdFBhdHRlcm4gPSBcIk04IDVINFYySDhWNU00IDIySDhWMTlINFYyMk0xNCAySDEwVjVIMTRWMk0xMCAyMkgxNFYxOUgxMFYyMk0xNiAyVjVIMjBWMkgxNk0xNyAxMUgxM1Y3SDExVjExSDdWN0g1VjE3SDdWMTNIMTFWMTdIMTNWMTNIMTlWN0gxN1YxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJTaWRlID0gXCJNMTYsNkwxOSwxMEgyMUMyMi4xMSwxMCAyMywxMC44OSAyMywxMlYxNUgyMUEzLDMgMCAwLDEgMTgsMThBMywzIDAgMCwxIDE1LDE1SDlBMywzIDAgMCwxIDYsMThBMywzIDAgMCwxIDMsMTVIMVYxMkMxLDEwLjg5IDEuODksMTAgMywxMEw2LDZIMTZNMTAuNSw3LjVINi43NUw0Ljg2LDEwSDEwLjVWNy41TTEyLDcuNVYxMEgxNy4xNEwxNS4yNSw3LjVIMTJNNiwxMy41QTEuNSwxLjUgMCAwLDAgNC41LDE1QTEuNSwxLjUgMCAwLDAgNiwxNi41QTEuNSwxLjUgMCAwLDAgNy41LDE1QTEuNSwxLjUgMCAwLDAgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMCAxNi41LDE1QTEuNSwxLjUgMCAwLDAgMTgsMTYuNUExLjUsMS41IDAgMCwwIDE5LjUsMTVBMS41LDEuNSAwIDAsMCAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhclNwb3J0cyA9IFwiTTEyLDguNUg3TDQsMTFIM0MxLjg5LDExIDEsMTEuODkgMSwxM1YxNkgzLjE3QzMuNiwxNy4yIDQuNzMsMTggNiwxOEM3LjI3LDE4IDguNCwxNy4yIDguODIsMTZIMTUuMTdDMTUuNiwxNy4yIDE2LjczLDE4IDE4LDE4QzE5LjI3LDE4IDIwLjQsMTcuMiAyMC44MiwxNkgyM1YxNUMyMywxMy44OSAyMS45NywxMy41MyAyMSwxM0wxMiw4LjVNNS4yNSwxMkw3LjUsMTBIMTEuNUwxNS41LDEySDUuMjVNNiwxMy41QTEuNSwxLjUgMCAwLDEgNy41LDE1QTEuNSwxLjUgMCAwLDEgNiwxNi41QTEuNSwxLjUgMCAwLDEgNC41LDE1QTEuNSwxLjUgMCAwLDEgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTYuNUExLjUsMS41IDAgMCwxIDE2LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhclRpcmVBbGVydCA9IFwiTTExLDEzSDEzVjE1SDExVjEzTTExLDVIMTNWMTFIMTFWNU0xNyw0Ljc2QzE4Ljg2LDYuMTkgMjAsOC42MSAyMCwxMUMyMCwxNCAxOC4zMywxNi42NCAxNS44NiwxOEg4LjE0QzUuNjcsMTYuNjQgNCwxNCA0LDExQzQsOC42MSA1LjA5LDYuMTcgNyw0Ljc2VjJINVYzLjg2QzMuMTUsNS42OCAyLDguMiAyLDExQzIsMTMuOCAzLjE1LDE2LjMyIDUsMTguMTRWMjJIN1YyMEg5VjIySDExVjIwSDEzVjIySDE1VjIwSDE3VjIySDE5VjE4LjE0QzIwLjg1LDE2LjMyIDIyLDEzLjggMjIsMTFDMjIsOC4yIDIwLjg1LDUuNjggMTksMy44NlYySDE3VjQuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyVHJhY3Rpb25Db250cm9sID0gXCJNOS41LDExSDEwLjVDMTAuOCwxMSAxMSwxMC44IDExLDEwLjVWOUgxOVYxMC41QzE5LDEwLjggMTkuMiwxMSAxOS41LDExSDIwLjVDMjAuOCwxMSAyMSwxMC44IDIxLDEwLjVWOUwyMSw4LjVWNkwxOS42LDEuN0MxOS41LDEuMyAxOS4xLDEgMTguNywxSDExLjRDMTEsMSAxMC42LDEuMyAxMC41LDEuN0w5LDZWOC41TDksOVYxMC41QzksMTAuOCA5LjIsMTEgOS41LDExTTExLjMsMkgxOC42TDE5LjUsNUgxMC40TDExLjMsMk0xMiwyM0gxMEMxMCwyMi4yIDguMSwyMS41IDYuNiwyMC45QzQuNSwyMC4xIDIsMTkuMiAyLDE3QzIsMTQuNyA0LjMsMTQuMSA2LjIsMTMuNUM3LjksMTMuMSA5LDEyLjcgOSwxMkgxMUMxMSwxNC4zIDguNywxNC45IDYuOCwxNS41QzUuMSwxNS45IDQsMTYuMyA0LDE3QzQsMTcuOCA1LjksMTguNSA3LjQsMTkuMUM5LjUsMTkuOSAxMiwyMC44IDEyLDIzTTIyLDIzSDIwQzIwLDIyLjIgMTguMSwyMS41IDE2LjYsMjAuOUMxNC41LDIwLjEgMTIsMTkuMiAxMiwxN0MxMiwxNC43IDE0LjMsMTQuMSAxNi4yLDEzLjVDMTcuOCwxMyAxOSwxMi43IDE5LDEySDIxQzIxLDE0LjMgMTguNywxNC45IDE2LjgsMTUuNUMxNS4yLDE1LjkgMTQsMTYuMyAxNCwxN0MxNCwxNy44IDE1LjksMTguNSAxNy40LDE5LjFDMTkuNSwxOS45IDIyLDIwLjggMjIsMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyVHVyYm9jaGFyZ2VyID0gXCJNMjIgMTNWMTVIMTguMzJDMTguNzUgMTQuMDkgMTkgMTMuMDggMTkgMTJDMTkgOC4xNCAxNS44NiA1IDEyIDVIMlYzSDEyQzE2Ljk3IDMgMjEgNy4wMyAyMSAxMkMyMSAxMi4zNCAyMC45NyAxMi42NyAyMC45NCAxM0gyMk0xMiAxOUM4LjE0IDE5IDUgMTUuODYgNSAxMkM1IDEwLjkzIDUuMjUgOS45MSA1LjY5IDlIMlYxMUgzLjA2QzMuMDMgMTEuMzMgMyAxMS42NiAzIDEyQzMgMTYuOTcgNy4wMyAyMSAxMiAyMUgyMlYxOUgxMk0xNi44NiAxMi4yQzE1LjkzIDEyLjk0IDE0LjcyIDEyLjQ3IDE0IDEyLjA1VjEyQzE2Ljc5IDEwLjMxIDE1LjM5IDcuODkgMTUuMzkgNy44OVMxNC4zMyA2LjA0IDE0LjYxIDcuODlDMTQuNzggOS4wNyAxMy43NiA5Ljg4IDEzLjA0IDEwLjNMMTMgMTAuMjhDMTIuOTMgNyAxMC4xMyA3IDEwLjEzIDdTOCA3IDkuNzQgNy42OUMxMC44NSA4LjEzIDExLjA0IDkuNDIgMTEuMDUgMTAuMjVMMTEgMTAuMjhDOC4xNCA4LjcgNi43NCAxMS4xMiA2Ljc0IDExLjEyUzUuNjcgMTIuOTcgNy4xNCAxMS44QzguMDcgMTEuMDcgOS4yOCAxMS41NCAxMCAxMS45NVYxMkM3LjIxIDEzLjcgOC42MSAxNi4xMiA4LjYxIDE2LjEyUzkuNjcgMTcuOTcgOS40IDE2LjExQzkuMjIgMTQuOTQgMTAuMjUgMTQuMTMgMTAuOTcgMTMuN0wxMSAxMy43M0MxMS4wNyAxNyAxMy44NyAxNyAxMy44NyAxN1MxNiAxNyAxNC4yNiAxNi4zMUMxMy4xNSAxNS44NyAxMi45NiAxNC41OCAxMi45NSAxMy43NUwxMyAxMy43M0MxNS44NiAxNS4zMSAxNy4yNiAxMi44OCAxNy4yNiAxMi44OFMxOC4zMyAxMS4wNCAxNi44NiAxMi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcldhc2ggPSBcIk01LDEzTDYuNSw4LjVIMTcuNUwxOSwxM00xNy41LDE4QTEuNSwxLjUgMCAwLDEgMTYsMTYuNUExLjUsMS41IDAgMCwxIDE3LjUsMTVBMS41LDEuNSAwIDAsMSAxOSwxNi41QTEuNSwxLjUgMCAwLDEgMTcuNSwxOE02LjUsMThBMS41LDEuNSAwIDAsMSA1LDE2LjVBMS41LDEuNSAwIDAsMSA2LjUsMTVBMS41LDEuNSAwIDAsMSA4LDE2LjVBMS41LDEuNSAwIDAsMSA2LjUsMThNMTguOTIsOEMxOC43Miw3LjQyIDE4LjE2LDcgMTcuNSw3SDYuNUM1Ljg0LDcgNS4yOCw3LjQyIDUuMDgsOEwzLDE0VjIyQTEsMSAwIDAsMCA0LDIzSDVBMSwxIDAgMCwwIDYsMjJWMjFIMThWMjJBMSwxIDAgMCwwIDE5LDIzSDIwQTEsMSAwIDAsMCAyMSwyMlYxNE03LDVBMS41LDEuNSAwIDAsMCA4LjUsMy41QzguNSwyLjUgNywwLjggNywwLjhDNywwLjggNS41LDIuNSA1LjUsMy41QTEuNSwxLjUgMCAwLDAgNyw1TTEyLDVBMS41LDEuNSAwIDAsMCAxMy41LDMuNUMxMy41LDIuNSAxMiwwLjggMTIsMC44QzEyLDAuOCAxMC41LDIuNSAxMC41LDMuNUExLjUsMS41IDAgMCwwIDEyLDVNMTcsNUExLjUsMS41IDAgMCwwIDE4LjUsMy41QzE4LjUsMi41IDE3LDAuOCAxNywwLjhDMTcsMC44IDE1LjUsMi41IDE1LjUsMy41QTEuNSwxLjUgMCAwLDAgMTcsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJXaW5kc2hpZWxkID0gXCJNMjIuNjMgMTUuNUwyMC4yMSA1Ljg1QTEgMSAwIDAgMCAxOS4xNCA1LjFDMTcuOCA1LjI0IDE0LjE0IDUuNSAxMiA1LjVTNi4yIDUuMjQgNC44NiA1LjFBMSAxIDAgMCAwIDMuNzkgNS44NUwxLjM3IDE1LjVBMS41IDEuNSAwIDAgMCAyLjU1IDE3LjM2QTYxLjUgNjEuNSAwIDAgMCAxMiAxOEE2MS41IDYxLjUgMCAwIDAgMjEuNDUgMTcuMzZBMS41IDEuNSAwIDAgMCAyMi42MyAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcldpbmRzaGllbGRPdXRsaW5lID0gXCJNMjIuNjMgMTUuNUwyMC4yMSA1Ljg1QTEgMSAwIDAgMCAxOS4xNCA1LjFDMTcuOCA1LjI0IDE0LjE0IDUuNSAxMiA1LjVTNi4yIDUuMjQgNC44NiA1LjFBMSAxIDAgMCAwIDMuNzkgNS44NUwxLjM3IDE1LjVBMS41IDEuNSAwIDAgMCAyLjU1IDE3LjM2QTYxLjUgNjEuNSAwIDAgMCAxMiAxOEE2MS41IDYxLjUgMCAwIDAgMjEuNDUgMTcuMzZBMS41IDEuNSAwIDAgMCAyMi42MyAxNS41TTEyIDE2QTYzLjMzIDYzLjMzIDAgMCAxIDMuNDQgMTUuNUw1LjUgNy4xOEM3IDcuMzIgMTAuMTYgNy41IDEyIDcuNVMxNyA3LjMyIDE4LjUgNy4xOEwyMC41NiAxNS41QTYzLjMzIDYzLjMzIDAgMCAxIDEyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmFiaW5lciA9IFwiTTggMTcuNUM4IDE4LjMzIDcuMzMgMTkgNi41IDE5UzUgMTguMzMgNSAxNy41IDUuNjcgMTYgNi41IDE2IDggMTYuNjcgOCAxNy41TTE4IDUuNTlDMTcuNzkgMy41NCAxNi4xOCAyIDE0LjI0IDJIOC44OEM2Ljk1IDIgNS4zNiAzLjUgNS4xNSA1LjUzTDUgNi41OUM0LjkyIDcuMzQgNS41IDggNi4yNCA4QzYuODcgOCA3LjM5IDcuNTMgNy40NyA2LjkxTDcuNjEgNS44MkM3LjY4IDUuMDcgOC4yMyA0LjUgOC44OCA0LjVIMTQuMjRDMTQuODkgNC41IDE1LjQ0IDUuMDcgMTUuNSA1LjgyTDE2LjUgMTYuODhDMTYuNTkgMTcuNzQgMTYgMTguNSAxNS4yNSAxOC41TDEwLjA0IDE3LjgyQzkuOTUgMTguNzcgOS41IDE5LjYgOC44IDIwLjE4TDE0LjkzIDIxTDE1LjA5IDIxSDE1LjI1QzE2LjI3IDIxIDE3LjI2IDIwLjU2IDE3Ljk2IDE5Ljc4QzE4LjcxIDE4Ljk0IDE5LjA5IDE3LjggMTkgMTYuNjVMMTggNS41OU0xMS42NiA3Ljk0QzExLjA4IDcuNTcgMTAuMzEgNy43NSA5Ljk0IDguMzRMNi4zOSAxNEM2LjQzIDE0IDYuNDYgMTQgNi41IDE0QzcuMzggMTQgOC4xOCAxNC4zNCA4LjggMTQuODhMMTIuMDYgOS42NkMxMi40MyA5LjA4IDEyLjI1IDguMzEgMTEuNjYgNy45NFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJhdmFuID0gXCJNNSw3QTIsMiAwIDAsMCAzLDlWMTVBMiwyIDAgMCwwIDUsMTdIN0EzLDMgMCAwLDAgMTAsMjBBMywzIDAgMCwwIDEzLDE3SDIxVjE1SDE5VjlBMiwyIDAgMCwwIDE3LDdINU01LDlIMTBWMTJINVY5TTEzLDlIMTdWMTJIMTNWOU0xMCwxNkExLDEgMCAwLDEgMTEsMTdBMSwxIDAgMCwxIDEwLDE4QTEsMSAwIDAsMSA5LDE3QTEsMSAwIDAsMSAxMCwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkID0gXCJNMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50RGV0YWlscyA9IFwiTTIsM0gyMkMyMy4wNSwzIDI0LDMuOTUgMjQsNVYxOUMyNCwyMC4wNSAyMy4wNSwyMSAyMiwyMUgyQzAuOTUsMjEgMCwyMC4wNSAwLDE5VjVDMCwzLjk1IDAuOTUsMyAyLDNNMTQsNlY3SDIyVjZIMTRNMTQsOFY5SDIxLjVMMjIsOVY4SDE0TTE0LDEwVjExSDIxVjEwSDE0TTgsMTMuOTFDNiwxMy45MSAyLDE1IDIsMTdWMThIMTRWMTdDMTQsMTUgMTAsMTMuOTEgOCwxMy45MU04LDZBMywzIDAgMCwwIDUsOUEzLDMgMCAwLDAgOCwxMkEzLDMgMCAwLDAgMTEsOUEzLDMgMCAwLDAgOCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50RGV0YWlsc091dGxpbmUgPSBcIk0yMiwzSDJDMC45MSwzLjA0IDAuMDQsMy45MSAwLDVWMTlDMC4wNCwyMC4wOSAwLjkxLDIwLjk2IDIsMjFIMjJDMjMuMDksMjAuOTYgMjMuOTYsMjAuMDkgMjQsMTlWNUMyMy45NiwzLjkxIDIzLjA5LDMuMDQgMjIsM00yMiwxOUgyVjVIMjJWMTlNMTQsMTdWMTUuNzVDMTQsMTQuMDkgMTAuNjYsMTMuMjUgOSwxMy4yNUM3LjM0LDEzLjI1IDQsMTQuMDkgNCwxNS43NVYxN0gxNE05LDdBMi41LDIuNSAwIDAsMCA2LjUsOS41QTIuNSwyLjUgMCAwLDAgOSwxMkEyLjUsMi41IDAgMCwwIDExLjUsOS41QTIuNSwyLjUgMCAwLDAgOSw3TTE0LDdWOEgyMFY3SDE0TTE0LDlWMTBIMjBWOUgxNE0xNCwxMVYxMkgxOFYxMUgxNFwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50RGV0YWlsc1N0YXIgPSBcIk0yMCAyMi4wOUwyMi40NSAyMy41OEwyMS44IDIwLjc3TDI0IDE4Ljg5TDIxLjExIDE4LjY0TDIwIDE2TDE4Ljg3IDE4LjY0TDE2IDE4Ljg5TDE4LjE4IDIwLjc3TDE3LjUgMjMuNThMMjAgMjIuMDlNMTQuMDggMjFIMkMuOTUgMjEgMCAyMC4wNSAwIDE5VjVDMCAzLjk1IC45NSAzIDIgM0gyMkMyMy4wNSAzIDI0IDMuOTUgMjQgNVYxNS41M0MyMi45NCAxNC41OCAyMS41NCAxNCAyMCAxNEMxNi42OSAxNCAxNCAxNi42OSAxNCAyMEMxNCAyMC4zNCAxNC4wMyAyMC42OCAxNC4wOCAyMU04IDEzLjkxQzYgMTMuOTEgMiAxNSAyIDE3VjE4SDE0VjE3QzE0IDE1IDEwIDEzLjkxIDggMTMuOTFNOCA2QzYuMzUgNiA1IDcuMzUgNSA5QzUgMTAuNjUgNi4zNSAxMiA4IDEyQzkuNjUgMTIgMTEgMTAuNjUgMTEgOUMxMSA3LjM1IDkuNjUgNiA4IDZNMjEgMTBIMTRWMTFIMjFWMTBNMjIgOEgxNFY5SDIyVjhNMjIgNkgxNFY3SDIyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZEFjY291bnREZXRhaWxzU3Rhck91dGxpbmUgPSBcIk0yMCAyMi4wOUwyMi40NSAyMy41OEwyMS44IDIwLjc3TDI0IDE4Ljg5TDIxLjExIDE4LjY0TDIwIDE2TDE4Ljg3IDE4LjY0TDE2IDE4Ljg5TDE4LjE4IDIwLjc3TDE3LjUgMjMuNThMMjAgMjIuMDlNMTQuMDggMjFIMkMuOTEgMjAuOTYgLjA0IDIwLjA5IDAgMTlWNUMuMDQgMy45MSAuOTEgMy4wNCAyIDNIMjJDMjMuMDkgMy4wNCAyMy45NiAzLjkxIDI0IDVWMTUuNTNDMjMuNDIgMTUgMjIuNzUgMTQuNjEgMjIgMTQuMzRWNUgyVjE5SDE0LjA4QzE0LjAzIDE5LjMzIDE0IDE5LjY2IDE0IDIwQzE0IDIwLjM0IDE0LjAzIDIwLjY4IDE0LjA4IDIxTTE0IDE3SDRWMTUuNzVDNCAxNC4wOSA3LjM0IDEzLjI1IDkgMTMuMjVDMTAuNjYgMTMuMjUgMTQgMTQuMDkgMTQgMTUuNzVWMTdNMTQgMTFIMThWMTJIMTRWMTFNOSA3QzcuNjMgNyA2LjUgOC4xMyA2LjUgOS41QzYuNSAxMC44NyA3LjYzIDEyIDkgMTJDMTAuMzcgMTIgMTEuNSAxMC44NyAxMS41IDkuNUMxMS41IDguMTMgMTAuMzcgNyA5IDdNMTQgOUgyMFYxMEgxNFY5TTE0IDdIMjBWOEgxNFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50TWFpbCA9IFwiTTIxLDhWN0wxOCw5TDE1LDdWOEwxOCwxME0yMiwzSDJBMiwyIDAgMCwwIDAsNVYxOUEyLDIgMCAwLDAgMiwyMUgyMkEyLDIgMCAwLDAgMjQsMTlWNUEyLDIgMCAwLDAgMjIsM004LDZBMywzIDAgMCwxIDExLDlBMywzIDAgMCwxIDgsMTJBMywzIDAgMCwxIDUsOUEzLDMgMCAwLDEgOCw2TTE0LDE4SDJWMTdDMiwxNSA2LDEzLjkgOCwxMy45QzEwLDEzLjkgMTQsMTUgMTQsMTdNMjIsMTJIMTRWNkgyMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50TWFpbE91dGxpbmUgPSBcIk0yMiwzSDJBMiwyIDAgMCwwIDAsNVYxOUEyLDIgMCAwLDAgMiwyMUgyMkEyLDIgMCAwLDAgMjQsMTlWNUEyLDIgMCAwLDAgMjIsM00yMiwxOUgyVjVIMjJWMTlNMjEsNkgxNFYxMUgyMVY2TTIwLDhMMTcuNSw5Ljc1TDE1LDhWN0wxNy41LDguNzVMMjAsN1Y4TTksMTJBMywzIDAgMCwwIDEyLDlBMywzIDAgMCwwIDksNkEzLDMgMCAwLDAgNiw5QTMsMyAwIDAsMCA5LDEyTTksOEExLDEgMCAwLDEgMTAsOUExLDEgMCAwLDEgOSwxMEExLDEgMCAwLDEgOCw5QTEsMSAwIDAsMSA5LDhNMTUsMTYuNTlDMTUsMTQuMDkgMTEuMDMsMTMgOSwxM0M2Ljk3LDEzIDMsMTQuMDkgMywxNi41OVYxOEgxNVYxNi41OU01LjUsMTZDNi4yMiwxNS41IDcuNywxNSA5LDE1QzEwLjMsMTUgMTEuNzcsMTUuNSAxMi41LDE2SDUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQWNjb3VudFBob25lID0gXCJNMjIsM0gyQTIsMiAwIDAsMCAwLDVWMTlBMiwyIDAgMCwwIDIsMjFIMjJBMiwyIDAgMCwwIDI0LDE5VjVBMiwyIDAgMCwwIDIyLDNNOCw2QTMsMyAwIDAsMSAxMSw5QTMsMyAwIDAsMSA4LDEyQTMsMyAwIDAsMSA1LDlBMywzIDAgMCwxIDgsNk0xNCwxOEgyVjE3QzIsMTUgNiwxMy45IDgsMTMuOUMxMCwxMy45IDE0LDE1IDE0LDE3VjE4TTE3Ljg1LDE0SDE5LjVMMjEsMTZMMTksMThDMTcuNywxNyAxNi43MywxNS42MSAxNi4yOCwxNEMxNi4xLDEzLjM2IDE2LDEyLjY5IDE2LDEyQzE2LDExLjMxIDE2LjEsMTAuNjQgMTYuMjgsMTBDMTYuNzMsOC4zOCAxNy43LDcgMTksNkwyMSw4TDE5LjUsMTBIMTcuODVDMTcuNjMsMTAuNjMgMTcuNSwxMS4zIDE3LjUsMTJDMTcuNSwxMi43IDE3LjYzLDEzLjM3IDE3Ljg1LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50UGhvbmVPdXRsaW5lID0gXCJNMjIsM0gyQTIsMiAwIDAsMCAwLDVWMTlBMiwyIDAgMCwwIDIsMjFIMjJBMiwyIDAgMCwwIDI0LDE5VjVBMiwyIDAgMCwwIDIyLDNNMjIsMTlIMlY1SDIyVjE5TTE5LDE4TDIxLDE2TDE5LjUsMTRIMTcuODVDMTcuNjMsMTMuMzcgMTcuNSwxMi43IDE3LjUsMTJDMTcuNSwxMS4zIDE3LjYzLDEwLjYzIDE3Ljg1LDEwSDE5LjVMMjEsOEwxOSw2QzE3LjcsNyAxNi43Myw4LjM4IDE2LjI4LDEwQzE2LjEsMTAuNjQgMTYsMTEuMzEgMTYsMTJDMTYsMTIuNjkgMTYuMSwxMy4zNiAxNi4yOCwxNEMxNi43MywxNS42MSAxNy43LDE3IDE5LDE4TTksMTJBMywzIDAgMCwwIDEyLDlBMywzIDAgMCwwIDksNkEzLDMgMCAwLDAgNiw5QTMsMyAwIDAsMCA5LDEyTTksOEExLDEgMCAwLDEgMTAsOUExLDEgMCAwLDEgOSwxMEExLDEgMCAwLDEgOCw5QTEsMSAwIDAsMSA5LDhNMTUsMTYuNTlDMTUsMTQuMDkgMTEuMDMsMTMgOSwxM0M2Ljk3LDEzIDMsMTQuMDkgMywxNi41OVYxOEgxNVYxNi41OU01LjUsMTZDNi4yMiwxNS41IDcuNywxNSA5LDE1QzEwLjMsMTUgMTEuNzcsMTUuNSAxMi41LDE2SDUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQnVsbGV0ZWQgPSBcIk0yMCw0QTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgyME0xMSwxM0g5VjE1SDExVjEzTTE5LDEzSDEzVjE1SDE5VjEzTTcsOUg1VjExSDdWOU0xOSw5SDlWMTFIMTlWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQnVsbGV0ZWRPZmYgPSBcIk0zLjM1LDMuNThMMjAuNjUsMjAuODdMMTkuMjMsMjIuMjlMMTYuOTQsMjBINEEyLDIgMCAwLDEgMiwxOFY2QzIsNS43MiAyLjA2LDUuNDYgMi4xNiw1LjIyTDEuMjMsNC4yOUwyLjY1LDIuODdMMy4zNSwzLjU4TTYuNiw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QzIyLDE4LjQgMjEuODgsMTguNzcgMjEuNjgsMTkuMDhMMTcuNiwxNUgyMFYxM0gxNS42TDEzLjYsMTFIMjBWOUgxMS42TDYuNiw0TTkuOTQsMTNIOVYxNUgxMVYxNC4wNkw5Ljk0LDEzTTUuOTQsOUg1VjExSDdWMTAuMDZMNS45NCw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRCdWxsZXRlZE9mZk91dGxpbmUgPSBcIk0yMC41OSwyMC44N0wxOS4xNywyMi4yOUwxNi44OCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZDMiw1Ljc0IDIuMDUsNS41IDIuMTQsNS4yNkwxLjE3LDQuMjlMMi41OSwyLjg3TDMuNzMsNEwyMC41OSwyMC44N1YyMC44N002LjU0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThDMjIsMTguNDEgMjEuODcsMTguOCAyMS42NiwxOS4xMkwyMCwxNy40NlY2SDguNTRMNi41NCw0TTQsMThIMTQuODhMMTEuODgsMTVIMTBWMTMuMTJMNy44OCwxMUg2VjkuMTJMNCw3LjEyVjE4TTE4LDE1SDE3LjU0TDE1LjU0LDEzSDE4VjE1TTE4LDExSDEzLjU0TDExLjU0LDlIMThWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZEJ1bGxldGVkT3V0bGluZSA9IFwiTTEyLDE1SDEwVjEzSDEyVjE1TTE4LDE1SDE0VjEzSDE4VjE1TTgsMTFINlY5SDhWMTFNMTgsMTFIMTBWOUgxOFYxMU0yMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEEyLDIgMCAwLDEgMjAsMjBNNCw2VjE4SDIwVjZINFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQnVsbGV0ZWRTZXR0aW5ncyA9IFwiTTksMjJWMjRIN1YyMkg5TTEzLDIyVjI0SDExVjIySDEzTTE3LDIyVjI0SDE1VjIySDE3TTIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyME0xMSwxM0g5VjE1SDExVjEzTTE5LDEzSDEzVjE1SDE5VjEzTTcsOUg1VjExSDdWOU0xOSw5SDlWMTFIMTlWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQnVsbGV0ZWRTZXR0aW5nc091dGxpbmUgPSBcIk05LDIyVjI0SDdWMjJIOU0xMywyMlYyNEgxMVYyMkgxM00xNywyMlYyNEgxNVYyMkgxN00xMiwxNUgxMFYxM0gxMlYxNU0xOCwxNUgxNFYxM0gxOFYxNU04LDExSDZWOUg4VjExTTE4LDExSDEwVjlIMThWMTFNMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwTTQsNlYxOEgyMFY2SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZE1pbnVzID0gXCJNMjMgMThWMjBIMTVWMThIMjNNMTkgMTNDMjAuMDkgMTMgMjEuMTIgMTMuMyAyMiAxMy44MVY2QzIyIDQuODkgMjEuMTEgNCAyMCA0SDRDMi45IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDEzLjA5QzEzLjA0IDE5LjY3IDEzIDE5LjM0IDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRNaW51c091dGxpbmUgPSBcIk0yMyAxOFYyMEgxNVYxOEgyM00xMy4wOSAxOEg0VjZIMjBWMTMuMDlDMjAuNzIgMTMuMjEgMjEuMzkgMTMuNDYgMjIgMTMuODFWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMy4wOUMxMy4wNCAxOS42NyAxMyAxOS4zNCAxMyAxOUMxMyAxOC42NiAxMy4wNCAxOC4zMyAxMy4wOSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkT2ZmID0gXCJNMjEuODggMTguNjhMNy4yIDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMThDMjIgMTguMjQgMjEuOTYgMTguNDcgMjEuODggMTguNjhNMjAuNTYgMTkuOTFMMjAuNTcgMTkuOTFMMi4zOSAxLjczTDEuMTEgM0wyLjY1IDQuNTRDMi4yNSA0LjkgMiA1LjQyIDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDE4LjExTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIwLjU2IDE5LjkxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRPZmZPdXRsaW5lID0gXCJNOS4yIDZMNy4yIDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMThDMjIgMTguMjQgMjEuOTYgMTguNDcgMjEuODggMTguNjhMMjAgMTYuOFY2SDkuMk0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOC4xMSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDUuNDIgMi4yNSA0LjkgMi42NSA0LjU0TDEuMTEgM0wyLjM5IDEuNzNMNi42NiA2TDE4LjY1IDE4SDE4LjY2TDIwLjU3IDE5LjkxTDIwLjU2IDE5LjkxTDIyLjExIDIxLjQ2TTE2LjExIDE4TDQuMTEgNkg0VjE4SDE2LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRPdXRsaW5lID0gXCJNMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwTTQsNlYxOEgyMFY2SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFBsdXMgPSBcIk0xMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDIwQzIxLjExIDQgMjIgNC44OSAyMiA2VjEzLjgxQzIxLjEyIDEzLjMgMjAuMDkgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBNMTggMTVWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBWMTVIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFBsdXNPdXRsaW5lID0gXCJNMjEgMTVWMThIMjRWMjBIMjFWMjNIMTlWMjBIMTZWMThIMTlWMTVIMjFNMTQgMThIM1Y2SDE5VjEzSDIxVjZDMjEgNC44OSAyMC4xMSA0IDE5IDRIM0MxLjkgNCAxIDQuODkgMSA2VjE4QzEgMTkuMTEgMS45IDIwIDMgMjBIMTRWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFJlbW92ZSA9IFwiTTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5TTE5IDEzQzIwLjA5IDEzIDIxLjEyIDEzLjMgMjIgMTMuODFWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMy4wOUMxMy4wNCAxOS42NyAxMyAxOS4zNCAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkUmVtb3ZlT3V0bGluZSA9IFwiTTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5TTEzLjA5IDE4SDRWNkgyMFYxMy4wOUMyMC43MiAxMy4yMSAyMS4zOSAxMy40NiAyMiAxMy44MVY2QzIyIDQuODkgMjEuMTEgNCAyMCA0SDRDMi45IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDEzLjA5QzEzLjA0IDE5LjY3IDEzIDE5LjM0IDEzIDE5QzEzIDE4LjY2IDEzLjA0IDE4LjMzIDEzLjA5IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRTZWFyY2ggPSBcIk0xMS41IDlDMTAuMTIgOSA5IDEwLjEyIDkgMTEuNVMxMC4xMiAxNCAxMS41IDE0IDE0IDEyLjg4IDE0IDExLjUgMTIuODggOSAxMS41IDlNMjAgNEg0QzIuOSA0IDIgNC45IDIgNlYxOEMyIDE5LjEgMi45IDIwIDQgMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjZDMjIgNC45IDIxLjEgNCAyMCA0TTE2Ljc5IDE4LjIxTDEzLjg4IDE1LjNDMTMuMTkgMTUuNzQgMTIuMzcgMTYgMTEuNSAxNkM5IDE2IDcgMTQgNyAxMS41UzkgNyAxMS41IDcgMTYgOSAxNiAxMS41QzE2IDEyLjM4IDE1Ljc0IDEzLjE5IDE1LjMgMTMuODlMMTguMjEgMTYuNzlMMTYuNzkgMTguMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFNlYXJjaE91dGxpbmUgPSBcIk0xMS41IDE2QzEyLjM3IDE2IDEzLjE5IDE1Ljc0IDEzLjg4IDE1LjNMMTYuMzIgMTcuNzRMMTcuNzQgMTYuMzJMMTUuMyAxMy44OUMxNS43NCAxMy4xOSAxNiAxMi4zOCAxNiAxMS41QzE2IDkgMTQgNyAxMS41IDdTNyA5IDcgMTEuNSA5IDE2IDExLjUgMTZNMTEuNSA5QzEyLjg4IDkgMTQgMTAuMTIgMTQgMTEuNVMxMi44OCAxNCAxMS41IDE0IDkgMTIuODggOSAxMS41IDEwLjEyIDkgMTEuNSA5TTIwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDIwQzIxLjEgMjAgMjIgMTkuMSAyMiAxOFY2QzIyIDQuOSAyMS4xIDQgMjAgNE0yMCAxOEg0VjZIMjBWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFRleHQgPSBcIk0yMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEEyLDIgMCAwLDEgMjAsMjBNNSwxM1YxNUgxNlYxM0g1TTUsOVYxMUgxOVY5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFRleHRPdXRsaW5lID0gXCJNMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwTTQsNlYxOEgyMFY2SDRNNiw5SDE4VjExSDZWOU02LDEzSDE2VjE1SDZWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHMgPSBcIk0yMS40Nyw0LjM1TDIwLjEzLDMuNzlWMTIuODJMMjIuNTYsNi45NkMyMi45Nyw1Ljk0IDIyLjUsNC43NyAyMS40Nyw0LjM1TTEuOTcsOC4wNUw2LjkzLDIwQzcuMjQsMjAuNzcgNy45NywyMS4yNCA4Ljc0LDIxLjI2QzksMjEuMjYgOS4yNywyMS4yMSA5LjUzLDIxLjFMMTYuOSwxOC4wNUMxNy42NSwxNy43NCAxOC4xMSwxNyAxOC4xMywxNi4yNkMxOC4xNCwxNiAxOC4wOSwxNS43MSAxOCwxNS40NUwxMywzLjVDMTIuNzEsMi43MyAxMS45NywyLjI2IDExLjE5LDIuMjVDMTAuOTMsMi4yNSAxMC42NywyLjMxIDEwLjQyLDIuNEwzLjA2LDUuNDVDMi4wNCw1Ljg3IDEuNTUsNy4wNCAxLjk3LDguMDVNMTguMTIsNC4yNUEyLDIgMCAwLDAgMTYuMTIsMi4yNUgxNC42N0wxOC4xMiwxMC41OVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRzQ2x1YiA9IFwiTTEyLDJDMTQuMywyIDE2LjMsNCAxNi4zLDYuMkMxNi4yMSw4Ljc3IDE0LjM0LDkuODMgMTQuMDQsMTBDMTUuMDQsOS41IDE2LjUsOS41IDE2LjUsOS41QzE5LDkuNSAyMSwxMS4zIDIxLDEzLjhDMjEsMTYuMyAxOSwxOCAxNi41LDE4QzE2LjUsMTggMTUsMTggMTMsMTdDMTMsMTcgMTIuNywxOSAxNSwyMkg5QzExLjMsMTkgMTEsMTcgMTEsMTdDOSwxOCA3LjUsMTggNy41LDE4QzUsMTggMywxNi4zIDMsMTMuOEMzLDExLjMgNSw5LjUgNy41LDkuNUM3LjUsOS41IDguOTYsOS41IDkuOTYsMTBDOS42Niw5LjgzIDcuNzksOC43NyA3LjcsNi4yQzcuNyw0IDkuNywyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHNEaWFtb25kID0gXCJNMTksMTJMMTIsMjJMNSwxMkwxMiwyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHNEaWFtb25kT3V0bGluZSA9IFwiTTEyIDJMNSAxMkwxMiAyMkwxOSAxMk03LjQ0IDEyTDEyIDUuNUwxNi41NiAxMkwxMiAxOC41XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHNIZWFydCA9IFwiTTEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOS4yNCwzIDEwLjkxLDMuODEgMTIsNS4wOEMxMy4wOSwzLjgxIDE0Ljc2LDMgMTYuNSwzQzE5LjU4LDMgMjIsNS40MSAyMiw4LjVDMjIsMTIuMjcgMTguNiwxNS4zNiAxMy40NSwyMC4wM0wxMiwyMS4zNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkc091dGxpbmUgPSBcIk0xMS4xOSwyLjI1QzEwLjkzLDIuMjUgMTAuNjcsMi4zMSAxMC40MiwyLjRMMy4wNiw1LjQ1QzIuMDQsNS44NyAxLjU1LDcuMDQgMS45Nyw4LjA1TDYuOTMsMjBDNy4yNCwyMC43NyA3Ljk3LDIxLjIzIDguNzQsMjEuMjVDOSwyMS4yNSA5LjI3LDIxLjIyIDkuNTMsMjEuMUwxNi45LDE4LjA1QzE3LjY1LDE3Ljc0IDE4LjExLDE3IDE4LjEzLDE2LjI1QzE4LjE0LDE2IDE4LjA5LDE1LjcxIDE4LDE1LjQ1TDEzLDMuNUMxMi43MSwyLjczIDExLjk3LDIuMjYgMTEuMTksMi4yNU0xNC42NywyLjI1TDE4LjEyLDEwLjZWNC4yNUEyLDIgMCAwLDAgMTYuMTIsMi4yNU0yMC4xMywzLjc5VjEyLjgyTDIyLjU2LDYuOTZDMjIuOTcsNS45NCAyMi41LDQuNzggMjEuNDcsNC4zNk0xMS4xOSw0LjIyTDE2LjE3LDE2LjI0TDguNzgsMTkuM0wzLjgsNy4yOVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRzUGxheWluZ091dGxpbmUgPSBcIk0xMS4xOSwyLjI1QzExLjk3LDIuMjYgMTIuNzEsMi43MyAxMywzLjVMMTgsMTUuNDVDMTguMDksMTUuNzEgMTguMTQsMTYgMTguMTMsMTYuMjVDMTguMTEsMTcgMTcuNjUsMTcuNzQgMTYuOSwxOC4wNUw5LjUzLDIxLjFDOS4yNywyMS4yMiA5LDIxLjI1IDguNzQsMjEuMjVDNy45NywyMS4yMyA3LjI0LDIwLjc3IDYuOTMsMjBMMS45Nyw4LjA1QzEuNTUsNy4wNCAyLjA0LDUuODcgMy4wNiw1LjQ1TDEwLjQyLDIuNEMxMC42NywyLjMxIDEwLjkzLDIuMjUgMTEuMTksMi4yNU0xNC42NywyLjI1SDE2LjEyQTIsMiAwIDAsMSAxOC4xMiw0LjI1VjEwLjZMMTQuNjcsMi4yNU0yMC4xMywzLjc5TDIxLjQ3LDQuMzZDMjIuNSw0Ljc4IDIyLjk3LDUuOTQgMjIuNTYsNi45NkwyMC4xMywxMi44MlYzLjc5TTExLjE5LDQuMjJMMy44LDcuMjlMOC43NywxOS4zTDE2LjE3LDE2LjI0TDExLjE5LDQuMjJNOC42NSw4LjU0TDExLjg4LDEwLjk1TDExLjQ0LDE0Ljk2TDguMjEsMTIuNTRMOC42NSw4LjU0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRzU3BhZGUgPSBcIk0xMiwyQzksNyA0LDkgNCwxNEM0LDE2IDYsMTggOCwxOEM5LDE4IDEwLDE4IDExLDE3QzExLDE3IDExLjMyLDE5IDksMjJIMTVDMTMsMTkgMTMsMTcgMTMsMTdDMTQsMTggMTUsMTggMTYsMThDMTgsMTggMjAsMTYgMjAsMTRDMjAsOSAxNSw3IDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHNWYXJpYW50ID0gXCJNNSwySDE5QTEsMSAwIDAsMSAyMCwzVjEzQTEsMSAwIDAsMSAxOSwxNEg1QTEsMSAwIDAsMSA0LDEzVjNBMSwxIDAgMCwxIDUsMk02LDRWMTJIMThWNEg2TTIwLDE3QTEsMSAwIDAsMSAxOSwxOEg1QTEsMSAwIDAsMSA0LDE3VjE2SDIwVjE3TTIwLDIxQTEsMSAwIDAsMSAxOSwyMkg1QTEsMSAwIDAsMSA0LDIxVjIwSDIwVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcnJvdCA9IFwiTTE2LDEwTDE1LjgsMTFIMTMuNUEwLjUsMC41IDAgMCwwIDEzLDExLjVBMC41LDAuNSAwIDAsMCAxMy41LDEySDE1LjZMMTQuNiwxN0gxMi41QTAuNSwwLjUgMCAwLDAgMTIsMTcuNUEwLjUsMC41IDAgMCwwIDEyLjUsMThIMTQuNEwxNCwyMEEyLDIgMCAwLDEgMTIsMjJBMiwyIDAgMCwxIDEwLDIwTDksMTVIMTAuNUEwLjUsMC41IDAgMCwwIDExLDE0LjVBMC41LDAuNSAwIDAsMCAxMC41LDE0SDguOEw4LDEwQzgsOC44IDguOTMsNy43NyAxMC4yOSw3LjI5TDguOSw1LjI4QzguNTksNC44MiA4LjcsNC4yIDkuMTYsMy44OUM5LjYxLDMuNTcgMTAuMjMsMy42OSAxMC41NSw0LjE0TDExLDQuOFYzQTEsMSAwIDAsMSAxMiwyQTEsMSAwIDAsMSAxMywzVjUuMjhMMTQuNSwzLjU0QzE0LjgzLDMuMTIgMTUuNDcsMy4wNyAxNS44OSwzLjQzQzE2LjMxLDMuNzggMTYuMzYsNC40MSAxNiw0Ljg0TDEzLjg3LDcuMzVDMTUuMTQsNy44NSAxNiw4Ljg1IDE2LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcnQgPSBcIk0xNywxOEMxNS44OSwxOCAxNSwxOC44OSAxNSwyMEEyLDIgMCAwLDAgMTcsMjJBMiwyIDAgMCwwIDE5LDIwQzE5LDE4Ljg5IDE4LjEsMTggMTcsMThNMSwyVjRIM0w2LjYsMTEuNTlMNS4yNCwxNC4wNEM1LjA5LDE0LjMyIDUsMTQuNjUgNSwxNUEyLDIgMCAwLDAgNywxN0gxOVYxNUg3LjQyQTAuMjUsMC4yNSAwIDAsMSA3LjE3LDE0Ljc1QzcuMTcsMTQuNyA3LjE4LDE0LjY2IDcuMiwxNC42M0w4LjEsMTNIMTUuNTVDMTYuMywxMyAxNi45NiwxMi41OCAxNy4zLDExLjk3TDIwLjg4LDUuNUMyMC45NSw1LjM0IDIxLDUuMTcgMjEsNUExLDEgMCAwLDAgMjAsNEg1LjIxTDQuMjcsMk03LDE4QzUuODksMTggNSwxOC44OSA1LDIwQTIsMiAwIDAsMCA3LDIyQTIsMiAwIDAsMCA5LDIwQzksMTguODkgOC4xLDE4IDcsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FydEFycm93RG93biA9IFwiTTEwLDBWNEg4TDEyLDhMMTYsNEgxNFYwTTEsMlY0SDNMNi42LDExLjU5TDUuMjUsMTQuMDRDNS4wOSwxNC4zMiA1LDE0LjY1IDUsMTVBMiwyIDAgMCwwIDcsMTdIMTlWMTVINy40MkM3LjI5LDE1IDcuMTcsMTQuODkgNy4xNywxNC43NUw3LjIsMTQuNjNMOC4xLDEzSDE1LjU1QzE2LjMsMTMgMTYuOTYsMTIuNTkgMTcuMywxMS45N0wyMS4xNiw0Ljk2TDE5LjQyLDRIMTkuNDFMMTguMzEsNkwxNS41NSwxMUg4LjUzTDguNCwxMC43M0w2LjE2LDZMNS4yMSw0TDQuMjcsMk03LDE4QTIsMiAwIDAsMCA1LDIwQTIsMiAwIDAsMCA3LDIyQTIsMiAwIDAsMCA5LDIwQTIsMiAwIDAsMCA3LDE4TTE3LDE4QTIsMiAwIDAsMCAxNSwyMEEyLDIgMCAwLDAgMTcsMjJBMiwyIDAgMCwwIDE5LDIwQTIsMiAwIDAsMCAxNywxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJ0QXJyb3dSaWdodCA9IFwiTTksMjBBMiwyIDAgMCwxIDcsMjJBMiwyIDAgMCwxIDUsMjBBMiwyIDAgMCwxIDcsMThBMiwyIDAgMCwxIDksMjBNMTcsMThBMiwyIDAgMCwwIDE1LDIwQTIsMiAwIDAsMCAxNywyMkEyLDIgMCAwLDAgMTksMjBBMiwyIDAgMCwwIDE3LDE4TTcuMiwxNC42M0M3LjE5LDE0LjY3IDcuMTksMTQuNzEgNy4yLDE0Ljc1QTAuMjUsMC4yNSAwIDAsMCA3LjQ1LDE1SDE5VjE3SDdBMiwyIDAgMCwxIDUsMTVDNSwxNC42NSA1LjA3LDE0LjMxIDUuMjQsMTRMNi42LDExLjU5TDMsNEgxVjJINC4yN0w1LjIxLDRIMjBBMSwxIDAgMCwxIDIxLDVDMjEsNS4xNyAyMC45NSw1LjM0IDIwLjg4LDUuNUwxNy4zLDEyQzE2Ljk0LDEyLjYyIDE2LjI3LDEzIDE1LjU1LDEzSDguMUw3LjIsMTQuNjNNOSw5LjVIMTNWMTEuNUwxNiw4LjVMMTMsNS41VjcuNUg5VjkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJ0QXJyb3dVcCA9IFwiTTEyLDBMOCw0SDEwVjhIMTRWNEgxNk0xLDJWNEgzTDYuNiwxMS41OUw1LjI1LDE0LjA0QzUuMDksMTQuMzIgNSwxNC42NSA1LDE1QTIsMiAwIDAsMCA3LDE3SDE5VjE1SDcuNDJDNy4yOSwxNSA3LjE3LDE0Ljg5IDcuMTcsMTQuNzVMNy4yLDE0LjYzTDguMSwxM0gxNS41NUMxNi4zLDEzIDE2Ljk2LDEyLjU5IDE3LjMsMTEuOTdMMjEuMTYsNC45NkwxOS40Miw0SDE5LjQxTDE4LjMxLDZMMTUuNTUsMTFIOC41M0w4LjQsMTAuNzNMNi4xNiw2TDUuMjEsNEw0LjI3LDJNNywxOEEyLDIgMCAwLDAgNSwyMEEyLDIgMCAwLDAgNywyMkEyLDIgMCAwLDAgOSwyMEEyLDIgMCAwLDAgNywxOE0xNywxOEEyLDIgMCAwLDAgMTUsMjBBMiwyIDAgMCwwIDE3LDIyQTIsMiAwIDAsMCAxOSwyMEEyLDIgMCAwLDAgMTcsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FydENoZWNrID0gXCJNOSAyMEM5IDIxLjExIDguMTEgMjIgNyAyMlM1IDIxLjExIDUgMjAgNS45IDE4IDcgMTggOSAxOC45IDkgMjBNMTcgMThDMTUuOSAxOCAxNSAxOC45IDE1IDIwUzE1LjkgMjIgMTcgMjIgMTkgMjEuMTEgMTkgMjAgMTguMTEgMTggMTcgMThNNy4xNyAxNC43NUw3LjIgMTQuNjNMOC4xIDEzSDE1LjU1QzE2LjMgMTMgMTYuOTYgMTIuNTkgMTcuMyAxMS45N0wyMS4xNiA0Ljk2TDE5LjQyIDRIMTkuNDFMMTguMzEgNkwxNS41NSAxMUg4LjUzTDguNCAxMC43M0w2LjE2IDZMNS4yMSA0TDQuMjcgMkgxVjRIM0w2LjYgMTEuNTlMNS4yNSAxNC4wNEM1LjA5IDE0LjMyIDUgMTQuNjUgNSAxNUM1IDE2LjExIDUuOSAxNyA3IDE3SDE5VjE1SDcuNDJDNy4yOSAxNSA3LjE3IDE0Ljg5IDcuMTcgMTQuNzVNMTggMi43NkwxNi41OSAxLjM0TDExLjc1IDYuMThMOS4xNiAzLjU5TDcuNzUgNUwxMS43NSA5TDE4IDIuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FydE1pbnVzID0gXCJNMTYsNlY0SDhWNk03LDE4QTIsMiAwIDAsMCA1LDIwQTIsMiAwIDAsMCA3LDIyQTIsMiAwIDAsMCA5LDIwQTIsMiAwIDAsMCA3LDE4TTE3LDE4QTIsMiAwIDAsMCAxNSwyMEEyLDIgMCAwLDAgMTcsMjJBMiwyIDAgMCwwIDE5LDIwQTIsMiAwIDAsMCAxNywxOE03LjE3LDE0Ljc1TDcuMiwxNC42M0w4LjEsMTNIMTUuNTVDMTYuMywxMyAxNi45NiwxMi41OSAxNy4zLDExLjk3TDIxLjE2LDQuOTZMMTkuNDIsNEgxOS40MUwxOC4zMSw2TDE1LjU1LDExSDguNTNMOC40LDEwLjczTDYuMTYsNkw1LjIxLDRMNC4yNywySDFWNEgzTDYuNiwxMS41OUw1LjI1LDE0LjA0QzUuMDksMTQuMzIgNSwxNC42NSA1LDE1QTIsMiAwIDAsMCA3LDE3SDE5VjE1SDcuNDJDNy4yOSwxNSA3LjE3LDE0Ljg5IDcuMTcsMTQuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FydE9mZiA9IFwiTTIyLjczLDIyLjczTDEuMjcsMS4yN0wwLDIuNTRMNC4zOSw2LjkzTDYuNiwxMS41OUw1LjI1LDE0LjA0QzUuMDksMTQuMzIgNSwxNC42NSA1LDE1QTIsMiAwIDAsMCA3LDE3SDE0LjQ2TDE1Ljg0LDE4LjM4QzE1LjM0LDE4Ljc0IDE1LDE5LjMzIDE1LDIwQTIsMiAwIDAsMCAxNywyMkMxNy42NywyMiAxOC4yNiwyMS42NyAxOC42MiwyMS4xNkwyMS40NiwyNEwyMi43MywyMi43M003LjQyLDE1QTAuMjUsMC4yNSAwIDAsMSA3LjE3LDE0Ljc1TDcuMiwxNC42M0w4LjEsMTNIMTAuNDZMMTIuNDYsMTVINy40Mk0xNS41NSwxM0MxNi4zLDEzIDE2Ljk2LDEyLjU5IDE3LjMsMTEuOTdMMjAuODgsNS41QzIwLjk2LDUuMzQgMjEsNS4xNyAyMSw1QTEsMSAwIDAsMCAyMCw0SDYuNTRMMTUuNTUsMTNNNywxOEEyLDIgMCAwLDAgNSwyMEEyLDIgMCAwLDAgNywyMkEyLDIgMCAwLDAgOSwyMEEyLDIgMCAwLDAgNywxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJ0T3V0bGluZSA9IFwiTTE3LDE4QTIsMiAwIDAsMSAxOSwyMEEyLDIgMCAwLDEgMTcsMjJDMTUuODksMjIgMTUsMjEuMSAxNSwyMEMxNSwxOC44OSAxNS44OSwxOCAxNywxOE0xLDJINC4yN0w1LjIxLDRIMjBBMSwxIDAgMCwxIDIxLDVDMjEsNS4xNyAyMC45NSw1LjM0IDIwLjg4LDUuNUwxNy4zLDExLjk3QzE2Ljk2LDEyLjU4IDE2LjMsMTMgMTUuNTUsMTNIOC4xTDcuMiwxNC42M0w3LjE3LDE0Ljc1QTAuMjUsMC4yNSAwIDAsMCA3LjQyLDE1SDE5VjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNUM1LDE0LjY1IDUuMDksMTQuMzIgNS4yNCwxNC4wNEw2LjYsMTEuNTlMMyw0SDFWMk03LDE4QTIsMiAwIDAsMSA5LDIwQTIsMiAwIDAsMSA3LDIyQzUuODksMjIgNSwyMS4xIDUsMjBDNSwxOC44OSA1Ljg5LDE4IDcsMThNMTYsMTFMMTguNzgsNkg2LjE0TDguNSwxMUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJ0UGx1cyA9IFwiTTExLDlIMTNWNkgxNlY0SDEzVjFIMTFWNEg4VjZIMTFNNywxOEEyLDIgMCAwLDAgNSwyMEEyLDIgMCAwLDAgNywyMkEyLDIgMCAwLDAgOSwyMEEyLDIgMCAwLDAgNywxOE0xNywxOEEyLDIgMCAwLDAgMTUsMjBBMiwyIDAgMCwwIDE3LDIyQTIsMiAwIDAsMCAxOSwyMEEyLDIgMCAwLDAgMTcsMThNNy4xNywxNC43NUw3LjIsMTQuNjNMOC4xLDEzSDE1LjU1QzE2LjMsMTMgMTYuOTYsMTIuNTkgMTcuMywxMS45N0wyMS4xNiw0Ljk2TDE5LjQyLDRIMTkuNDFMMTguMzEsNkwxNS41NSwxMUg4LjUzTDguNCwxMC43M0w2LjE2LDZMNS4yMSw0TDQuMjcsMkgxVjRIM0w2LjYsMTEuNTlMNS4yNSwxNC4wNEM1LjA5LDE0LjMyIDUsMTQuNjUgNSwxNUEyLDIgMCAwLDAgNywxN0gxOVYxNUg3LjQyQzcuMjksMTUgNy4xNywxNC44OSA3LjE3LDE0Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcnRSZW1vdmUgPSBcIk0xNC4xMiw4LjUzTDEyLDYuNDFMOS44OCw4LjU0TDguNDYsNy4xMkwxMC41OSw1TDguNDcsMi44OEw5Ljg4LDEuNDdMMTIsMy41OUwxNC4xMiwxLjQ2TDE1LjU0LDIuODhMMTMuNDEsNUwxNS41Myw3LjEyTDE0LjEyLDguNTNNNywxOEEyLDIgMCAwLDEgOSwyMEEyLDIgMCAwLDEgNywyMkEyLDIgMCAwLDEgNSwyMEEyLDIgMCAwLDEgNywxOE0xNywxOEEyLDIgMCAwLDEgMTksMjBBMiwyIDAgMCwxIDE3LDIyQTIsMiAwIDAsMSAxNSwyMEEyLDIgMCAwLDEgMTcsMThNNy4xNywxNC43NUEwLjI1LDAuMjUgMCAwLDAgNy40MiwxNUgxOVYxN0g3QTIsMiAwIDAsMSA1LDE1QzUsMTQuNjUgNS4wOSwxNC4zMiA1LjI1LDE0LjA0TDYuNiwxMS41OUwzLDRIMVYySDQuMjdMNS4yMSw0TDYuMTYsNkw4LjQsMTAuNzNMOC41MywxMUgxNS41NUwxOC4zMSw2TDE5LjQxLDRIMTkuNDJMMjEuMTYsNC45NkwxNy4zLDExLjk3QzE2Ljk2LDEyLjU5IDE2LjMsMTMgMTUuNTUsMTNIOC4xTDcuMiwxNC42M0w3LjE3LDE0Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcnRWYXJpYW50ID0gXCJNMTkgMjBDMTkgMjEuMTEgMTguMTEgMjIgMTcgMjJDMTUuODkgMjIgMTUgMjEuMSAxNSAyMEMxNSAxOC44OSAxNS44OSAxOCAxNyAxOEMxOC4xMSAxOCAxOSAxOC45IDE5IDIwTTcgMThDNS44OSAxOCA1IDE4Ljg5IDUgMjBDNSAyMS4xIDUuODkgMjIgNyAyMkM4LjExIDIyIDkgMjEuMTEgOSAyMFM4LjExIDE4IDcgMThNNy4yIDE0LjYzTDcuMTcgMTQuNzVDNy4xNyAxNC44OSA3LjI4IDE1IDcuNDIgMTVIMTlWMTdIN0M1Ljg5IDE3IDUgMTYuMSA1IDE1QzUgMTQuNjUgNS4wOSAxNC4zMiA1LjI0IDE0LjA0TDYuNiAxMS41OUwzIDRIMVYySDQuMjdMNS4yMSA0SDIwQzIwLjU1IDQgMjEgNC40NSAyMSA1QzIxIDUuMTcgMjAuOTUgNS4zNCAyMC44OCA1LjVMMTcuMyAxMS45N0MxNi45NiAxMi41OCAxNi4zIDEzIDE1LjU1IDEzSDguMUw3LjIgMTQuNjNNOC41IDExSDEwVjlINy41Nkw4LjUgMTFNMTEgOVYxMUgxNFY5SDExTTE0IDhWNkgxMVY4SDE0TTE3LjExIDlIMTVWMTFIMTZMMTcuMTEgOU0xOC43OCA2SDE1VjhIMTcuNjdMMTguNzggNk02LjE0IDZMNy4wOCA4SDEwVjZINi4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNlU2Vuc2l0aXZlQWx0ID0gXCJNMjAsMTRDMjAsMTIuNSAxOS41LDEyIDE4LDEySDE2VjExQzE2LDEwIDE2LDEwIDE0LDEwVjE1LjRMMTQsMTlIMTZMMTgsMTlDMTkuNSwxOSAyMCwxOC40NyAyMCwxN1YxNE0xMiwxMkMxMiwxMC41IDExLjQ3LDEwIDEwLDEwSDZDNC41LDEwIDQsMTAuNSA0LDEyVjE5SDZWMTZIMTBWMTlIMTJWMTJNMTAsN0gxNFY1SDEwVjdNMjIsOVYyMEMyMiwyMS4xMSAyMS4xMSwyMiAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjlDMiw3Ljg5IDIuODksNyA0LDdIOFY1TDEwLDNIMTRMMTYsNVY3SDIwQTIsMiAwIDAsMSAyMiw5SDIyTTE2LDE3SDE4VjE0SDE2VjE3TTYsMTJIMTBWMTRINlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNoID0gXCJNMyw2SDIxVjE4SDNWNk0xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlNNyw4QTIsMiAwIDAsMSA1LDEwVjE0QTIsMiAwIDAsMSA3LDE2SDE3QTIsMiAwIDAsMSAxOSwxNFYxMEEyLDIgMCAwLDEgMTcsOEg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2gxMDAgPSBcIk0yLDVIMjJWMjBIMlY1TTIwLDE4VjdINFYxOEgyME0xNyw4QTIsMiAwIDAsMCAxOSwxMFYxNUEyLDIgMCAwLDAgMTcsMTdIN0EyLDIgMCAwLDAgNSwxNVYxMEEyLDIgMCAwLDAgNyw4SDE3TTE3LDEzVjEyQzE3LDEwLjkgMTYuMzMsMTAgMTUuNSwxMEMxNC42NywxMCAxNCwxMC45IDE0LDEyVjEzQzE0LDE0LjEgMTQuNjcsMTUgMTUuNSwxNUMxNi4zMywxNSAxNywxNC4xIDE3LDEzTTE1LjUsMTFBMC41LDAuNSAwIDAsMSAxNiwxMS41VjEzLjVBMC41LDAuNSAwIDAsMSAxNS41LDE0QTAuNSwwLjUgMCAwLDEgMTUsMTMuNVYxMS41QTAuNSwwLjUgMCAwLDEgMTUuNSwxMU0xMywxM1YxMkMxMywxMC45IDEyLjMzLDEwIDExLjUsMTBDMTAuNjcsMTAgMTAsMTAuOSAxMCwxMlYxM0MxMCwxNC4xIDEwLjY3LDE1IDExLjUsMTVDMTIuMzMsMTUgMTMsMTQuMSAxMywxM00xMS41LDExQTAuNSwwLjUgMCAwLDEgMTIsMTEuNVYxMy41QTAuNSwwLjUgMCAwLDEgMTEuNSwxNEEwLjUsMC41IDAgMCwxIDExLDEzLjVWMTEuNUEwLjUsMC41IDAgMCwxIDExLjUsMTFNOCwxNUg5VjEwSDhMNywxMC41VjExLjVMOCwxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNoQ2hlY2sgPSBcIk0zIDZWMThIMTMuMzJDMTMuMSAxNy4zMyAxMyAxNi42NiAxMyAxNkg3QzcgMTQuOSA2LjExIDE0IDUgMTRWMTBDNi4xMSAxMCA3IDkuMTEgNyA4SDE3QzE3IDkuMTEgMTcuOSAxMCAxOSAxMFYxMC4wNkMxOS42NyAxMC4wNiAyMC4zNCAxMC4xOCAyMSAxMC40VjZIM00xMiA5QzEwLjMgOS4wMyA5IDEwLjMgOSAxMkM5IDEzLjcgMTAuMyAxNC45NCAxMiAxNUMxMi4zOCAxNSAxMi43NyAxNC45MiAxMy4xNCAxNC43N0MxMy40MSAxMy42NyAxMy44NiAxMi42MyAxNC45NyAxMS42MUMxNC44NSAxMC4yOCAxMy41OSA4Ljk3IDEyIDlNMjEuNjMgMTIuMjdMMTcuNzYgMTYuMTdMMTYuNDEgMTQuOEwxNSAxNi4yMkwxNy43NSAxOUwyMy4wMyAxMy42OEwyMS42MyAxMi4yN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNoTG9jayA9IFwiTTIxLjggMTVDMjIuNCAxNSAyMyAxNS42IDIzIDE2LjNWMTkuOEMyMyAyMC40IDIyLjQgMjEgMjEuNyAyMUgxNi4yQzE1LjYgMjEgMTUgMjAuNCAxNSAxOS43VjE2LjJDMTUgMTUuNiAxNS42IDE1IDE2LjIgMTVWMTMuNUMxNi4yIDEyLjEgMTcuNiAxMSAxOSAxMUMyMC40IDExIDIxLjggMTIuMSAyMS44IDEzLjVWMTVNMjAuNSAxNVYxMy41QzIwLjUgMTIuNyAxOS44IDEyLjIgMTkgMTIuMkMxOC4yIDEyLjIgMTcuNSAxMi43IDE3LjUgMTMuNVYxNUgyMC41TTIgNkgyMFY5LjFMMTkgOUMxOC4xOCA5IDE3LjQxIDkuMiAxNi43MyA5LjU0QzE2LjI4IDkuMTggMTYgOC42MiAxNiA4SDZDNiA5LjExIDUuMTEgMTAgNCAxMFYxNEM1LjExIDE0IDYgMTQuOSA2IDE2SDEzLjA0TDEzIDE2LjVWMThIMlY2TTExIDlDMTIuNjYgOSAxNCAxMC4zNCAxNCAxMkMxNCAxMy42NiAxMi42NiAxNSAxMSAxNUM5LjM0IDE1IDggMTMuNjYgOCAxMkM4IDEwLjM0IDkuMzQgOSAxMSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2hMb2NrT3BlbiA9IFwiTTIxLjggMTZDMjIuNCAxNiAyMyAxNi42IDIzIDE3LjNWMjAuOEMyMyAyMS40IDIyLjQgMjIgMjEuNyAyMkgxNi4yQzE1LjYgMjIgMTUgMjEuNCAxNSAyMC43VjE3LjJDMTUgMTYuNiAxNS42IDE2IDE2LjIgMTZWMTMuNUMxNi4yIDEyLjEgMTcuNiAxMSAxOSAxMUMyMC40IDExIDIxLjggMTIuMSAyMS44IDEzLjVWMTRIMjAuNVYxMy41QzIwLjUgMTIuNyAxOS44IDEyLjIgMTkgMTIuMkMxOC4yIDEyLjIgMTcuNSAxMi43IDE3LjUgMTMuNVYxNkgyMS44TTIgNkgyMFY5LjFMMTkgOUMxOC4xOCA5IDE3LjQxIDkuMiAxNi43MyA5LjU0QzE2LjI4IDkuMTggMTYgOC42MiAxNiA4SDZDNiA5LjExIDUuMTEgMTAgNCAxMFYxNEM1LjExIDE0IDYgMTQuOSA2IDE2SDEzLjA0TDEzIDE2LjVWMThIMlY2TTExIDlDMTIuNjYgOSAxNCAxMC4zNCAxNCAxMkMxNCAxMy42NiAxMi42NiAxNSAxMSAxNUM5LjM0IDE1IDggMTMuNjYgOCAxMkM4IDEwLjM0IDkuMzQgOSAxMSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2hNYXJrZXIgPSBcIk0xOC41LDE2LjhDMTcuOCwxNi44IDE3LjMsMTYuMiAxNy4zLDE1LjZDMTcuMywxNC45IDE3LjksMTQuNCAxOC41LDE0LjRDMTkuMSwxNC40IDE5LjcsMTUgMTkuNywxNS42QzE5LjgsMTYuMiAxOS4yLDE2LjggMTguNSwxNi44TTE4LjUsMTJDMTYuNiwxMiAxNSwxMy42IDE1LDE1LjVDMTUsMTguMSAxOC41LDIyIDE4LjUsMjJDMTguNSwyMiAyMiwxOC4xIDIyLDE1LjVDMjIsMTMuNiAyMC40LDEyIDE4LjUsMTJNMTQuOSwxMS4zQzE0LjYsMTAgMTMuNCw5IDEyLDlDMTAuMyw5IDksMTAuMyA5LDEyQzksMTMuNyAxMC4zLDE1IDEyLDE1QzEyLjQsMTUgMTIuNywxNC45IDEzLDE0LjhDMTMuMiwxMy40IDEzLjksMTIuMiAxNC45LDExLjNNMTMsMTZIN0EyLDIgMCAwLDAgNSwxNFYxMEEyLDIgMCAwLDAgNyw4SDE3QTIsMiAwIDAsMCAxOSwxMEMxOSwxMCAyMCwxMCAyMSwxMC42VjZIM1YxOEgxMy41QzEzLjMsMTcuMyAxMy4xLDE2LjcgMTMsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaE1pbnVzID0gXCJNMTUgMTVWMTdIMjNWMTVNMTQuOTcgMTEuNjFDMTQuODUgMTAuMjggMTMuNTkgOC45NyAxMiA5QzEwLjMgOS4wMyA5IDEwLjMgOSAxMkM5IDEzLjcgMTAuMyAxNC45NCAxMiAxNUMxMi4zOCAxNSAxMi43NyAxNC45MiAxMy4xNCAxNC43N0MxMy40MSAxMy42NyAxMy44NiAxMi42MyAxNC45NyAxMS42MU0xMyAxNkg3QzcgMTQuOSA2LjExIDE0IDUgMTRWMTBDNi4xMSAxMCA3IDkuMTEgNyA4SDE3QzE3IDkuMTEgMTcuOSAxMCAxOSAxMFYxMC4wNkMxOS42NyAxMC4wNiAyMC4zNCAxMC4xOCAyMSAxMC40VjZIM1YxOEgxMy4zMkMxMy4xIDE3LjMzIDEzIDE2LjY2IDEzIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2hNdWx0aXBsZSA9IFwiTTUsNkgyM1YxOEg1VjZNMTQsOUEzLDMgMCAwLDEgMTcsMTJBMywzIDAgMCwxIDE0LDE1QTMsMyAwIDAsMSAxMSwxMkEzLDMgMCAwLDEgMTQsOU05LDhBMiwyIDAgMCwxIDcsMTBWMTRBMiwyIDAgMCwxIDksMTZIMTlBMiwyIDAgMCwxIDIxLDE0VjEwQTIsMiAwIDAsMSAxOSw4SDlNMSwxMEgzVjIwSDE5VjIySDFWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaFBsdXMgPSBcIk0xNSAxNVYxN0gxOFYyMEgyMFYxN0gyM1YxNUgyMFYxMkgxOFYxNU0xNC45NyAxMS42MUMxNC44NSAxMC4yOCAxMy41OSA4Ljk3IDEyIDlDMTAuMyA5LjAzIDkgMTAuMyA5IDEyQzkgMTMuNyAxMC4zIDE0Ljk0IDEyIDE1QzEyLjM4IDE1IDEyLjc3IDE0LjkyIDEzLjE0IDE0Ljc3QzEzLjQxIDEzLjY3IDEzLjg2IDEyLjYzIDE0Ljk3IDExLjYxTTEzIDE2SDdDNyAxNC45IDYuMTEgMTQgNSAxNFYxMEM2LjExIDEwIDcgOS4xMSA3IDhIMTdDMTcgOS4xMSAxNy45IDEwIDE5IDEwVjEwLjA2QzE5LjY3IDEwLjA2IDIwLjM0IDEwLjE4IDIxIDEwLjRWNkgzVjE4SDEzLjMyQzEzLjEgMTcuMzMgMTMgMTYuNjYgMTMgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaFJlZnVuZCA9IFwiTTEyLjMgOC45M0w5Ljg4IDYuNUgxNS41VjEwSDE3VjVIOS44OEwxMi4zIDIuNTdMMTEuMjQgMS41TDcgNS43NUwxMS4yNCAxMEwxMi4zIDguOTNNMTIgMTRBMyAzIDAgMSAwIDE1IDE3QTMgMyAwIDAgMCAxMiAxNE0zIDExVjIzSDIxVjExTTE5IDE5QTIgMiAwIDAgMCAxNyAyMUg3QTIgMiAwIDAgMCA1IDE5VjE1QTIgMiAwIDAgMCA3IDEzSDE3QTIgMiAwIDAgMCAxOSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNoUmVnaXN0ZXIgPSBcIk0yLDE3SDIyVjIxSDJWMTdNNi4yNSw3SDlWNkg2VjNIMTRWNkgxMVY3SDE3LjhDMTguOCw3IDE5LjgsOCAyMCw5TDIwLjUsMTZIMy41TDQuMDUsOUM0LjA1LDggNS4wNSw3IDYuMjUsN00xMyw5VjExSDE4VjlIMTNNNiw5VjEwSDhWOUg2TTksOVYxMEgxMVY5SDlNNiwxMVYxMkg4VjExSDZNOSwxMVYxMkgxMVYxMUg5TTYsMTNWMTRIOFYxM0g2TTksMTNWMTRIMTFWMTNIOU03LDRWNUgxM1Y0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaFJlbW92ZSA9IFwiTTE1LjQ2IDE4LjEyTDE2Ljg4IDE5LjU0TDE5IDE3LjQxTDIxLjEyIDE5LjU0TDIyLjU0IDE4LjEyTDIwLjQxIDE2TDIyLjU0IDEzLjg4TDIxLjEyIDEyLjQ2TDE5IDE0LjU5TDE2Ljg4IDEyLjQ2TDE1LjQ2IDEzLjg4TDE3LjU5IDE2TTE0Ljk3IDExLjYyQzE0Ljg2IDEwLjI4IDEzLjU4IDguOTcgMTIgOUMxMC4zIDkuMDQgOSAxMC4zIDkgMTJDOSAxMy43IDEwLjMgMTQuOTQgMTIgMTVDMTIuMzkgMTUgMTIuNzcgMTQuOTIgMTMuMTQgMTQuNzdDMTMuNDEgMTMuNjcgMTMuODYgMTIuNjMgMTQuOTcgMTEuNjJNMTMgMTZIN0M3IDE0LjkgNi4xIDE0IDUgMTRWMTBDNi4xIDEwIDcgOS4xIDcgOEgxN0MxNyA5LjEgMTcuOSAxMCAxOSAxMFYxMC4wNUMxOS42NyAxMC4wNiAyMC4zNCAxMC4xOCAyMSAxMC40VjZIM1YxOEgxMy4zMkMxMy4xIDE3LjMzIDEzIDE2LjY2IDEzIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2hVc2QgPSBcIk0yMCA0SDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgyMEMyMS4xMSAyMCAyMiAxOS4xMSAyMiAxOFY2QzIyIDQuODkgMjEuMSA0IDIwIDRNMTUgMTBIMTFWMTFIMTRDMTQuNTUgMTEgMTUgMTEuNDUgMTUgMTJWMTVDMTUgMTUuNTUgMTQuNTUgMTYgMTQgMTZIMTNWMTdIMTFWMTZIOVYxNEgxM1YxM0gxMEM5LjQ1IDEzIDkgMTIuNTUgOSAxMlY5QzkgOC40NSA5LjQ1IDggMTAgOEgxMVY3SDEzVjhIMTVWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaFVzZE91dGxpbmUgPSBcIk0yMCwxOEg0VjZIMjBNMjAsNEg0QzIuODksNCAyLDQuODkgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY2QzIyLDQuODkgMjEuMSw0IDIwLDRNMTEsMTdIMTNWMTZIMTRBMSwxIDAgMCwwIDE1LDE1VjEyQTEsMSAwIDAsMCAxNCwxMUgxMVYxMEgxNVY4SDEzVjdIMTFWOEgxMEExLDEgMCAwLDAgOSw5VjEyQTEsMSAwIDAsMCAxMCwxM0gxM1YxNEg5VjE2SDExVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc3NldHRlID0gXCJNNCw1QTIsMiAwIDAsMCAyLDdWMTdBMiwyIDAgMCwwIDQsMTlINkw3LDE3SDE3TDE4LDE5SDIwQTIsMiAwIDAsMCAyMiwxN1Y3QTIsMiAwIDAsMCAyMCw1SDRNNi41LDEwQTEuNSwxLjUgMCAwLDEgOCwxMS41QTEuNSwxLjUgMCAwLDEgNi41LDEzQTEuNSwxLjUgMCAwLDEgNSwxMS41QTEuNSwxLjUgMCAwLDEgNi41LDEwTTksMTBIMTVWMTNIOVYxME0xNy41LDEwQTEuNSwxLjUgMCAwLDEgMTksMTEuNUExLjUsMS41IDAgMCwxIDE3LjUsMTNBMS41LDEuNSAwIDAsMSAxNiwxMS41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXN0ID0gXCJNMSwxMFYxMkE5LDkgMCAwLDEgMTAsMjFIMTJDMTIsMTQuOTIgNy4wNywxMCAxLDEwTTEsMTRWMTZBNSw1IDAgMCwxIDYsMjFIOEE3LDcgMCAwLDAgMSwxNE0xLDE4VjIxSDRBMywzIDAgMCwwIDEsMThNMjEsM0gzQzEuODksMyAxLDMuODkgMSw1VjhIM1Y1SDIxVjE5SDE0VjIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QzIzLDMuODkgMjIuMSwzIDIxLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzdEF1ZGlvID0gXCJNMiAxMVYxM0M3IDEzIDExIDE3IDExIDIySDEzQzEzIDE1LjkgOC4xIDExIDIgMTFNMjAgMkgxMEM4LjkgMiA4IDIuOSA4IDRWMTAuNUM5IDExIDkuOSAxMS43IDEwLjcgMTIuNEMxMS42IDExIDEzLjIgMTAgMTUgMTBDMTcuOCAxMCAyMCAxMi4yIDIwIDE1UzE3LjggMjAgMTUgMjBIMTQuOEMxNC45IDIwLjcgMTUgMjEuMyAxNSAyMkgyMEMyMS4xIDIyIDIyIDIxLjEgMjIgMjBWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTUgOEMxMy45IDggMTMgNy4xIDEzIDZDMTMgNC45IDEzLjkgNCAxNSA0QzE2LjEgNCAxNyA0LjkgMTcgNlMxNi4xIDggMTUgOE0xNSAxOEMxNC44IDE4IDE0LjUgMTggMTQuMyAxNy45QzEzLjggMTYuNCAxMy4xIDE1LjEgMTIuMiAxMy45QzEyLjYgMTIuOCAxMy43IDExLjkgMTUgMTEuOUMxNi43IDExLjkgMTggMTMuMiAxOCAxNC45UzE2LjcgMTggMTUgMThNMiAxNVYxN0M0LjggMTcgNyAxOS4yIDcgMjJIOUM5IDE4LjEgNS45IDE1IDIgMTVNMiAxOVYyMkg1QzUgMjAuMyAzLjcgMTkgMiAxOVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc3RDb25uZWN0ZWQgPSBcIk0yMSwzSDNDMS44OSwzIDEsMy44OSAxLDVWOEgzVjVIMjFWMTlIMTRWMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjVDMjMsMy44OSAyMi4xLDMgMjEsM00xLDEwVjEyQTksOSAwIDAsMSAxMCwyMUgxMkMxMiwxNC45MiA3LjA3LDEwIDEsMTBNMTksN0g1VjguNjNDOC45Niw5LjkxIDEyLjA5LDEzLjA0IDEzLjM3LDE3SDE5TTEsMTRWMTZBNSw1IDAgMCwxIDYsMjFIOEE3LDcgMCAwLDAgMSwxNE0xLDE4VjIxSDRBMywzIDAgMCwwIDEsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzdEVkdWNhdGlvbiA9IFwiTTIxLDNIM0EyLDIgMCAwLDAgMSw1VjhIM1Y1SDIxVjE5SDE0VjIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QTIsMiAwIDAsMCAyMSwzTTEsMThWMjFINEEzLDMgMCAwLDAgMSwxOE0xLDE0VjE2QTUsNSAwIDAsMSA2LDIxSDhBNyw3IDAgMCwwIDEsMTRNMSwxMFYxMkE5LDkgMCAwLDEgMTAsMjFIMTJDMTIsMTQuOTIgNy4wNywxMCAxLDEwTTExLDExLjA5VjEzLjA5TDE0LjUsMTVMMTgsMTMuMDlWMTEuMDlMMTQuNSwxM0wxMSwxMS4wOU0xNC41LDZMOSw5TDE0LjUsMTJMMjAsOUwxNC41LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzdE9mZiA9IFwiTTEuNiwxLjI3TDAuMjUsMi43NUwxLjQxLDMuOEMxLjE2LDQuMTMgMSw0LjU1IDEsNVY4SDNWNS4yM0wxOC4yLDE5SDE0VjIxSDIwLjQxTDIyLjMxLDIyLjcyTDIzLjY1LDIxLjI0TTYuNSwzTDguNyw1SDIxVjE2LjE0TDIzLDE3Ljk1VjVDMjMsMy44OSAyMi4xLDMgMjEsM00xLDEwVjEyQTksOSAwIDAsMSAxMCwyMUgxMkMxMiwxNC45MiA3LjA4LDEwIDEsMTBNMSwxNFYxNkE1LDUgMCAwLDEgNiwyMUg4QTcsNyAwIDAsMCAxLDE0TTEsMThWMjFINEEzLDMgMCAwLDAgMSwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXN0bGUgPSBcIk0yLDEzSDRWMTVINlYxM0g4VjE1SDEwVjEzSDEyVjE1SDE0VjEwTDE3LDdWMUgxOUwyMywzTDE5LDVWN0wyMiwxMFYyMkgxMVYxOUEyLDIgMCAwLDAgOSwxN0EyLDIgMCAwLDAgNywxOVYyMkgyVjEzTTE4LDEwQzE3LjQ1LDEwIDE3LDEwLjU0IDE3LDExLjJWMTNIMTlWMTEuMkMxOSwxMC41NCAxOC41NSwxMCAxOCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXQgPSBcIk0xMiw4TDEwLjY3LDguMDlDOS44MSw3LjA3IDcuNCw0LjUgNSw0LjVDNSw0LjUgMy4wMyw3LjQ2IDQuOTYsMTEuNDFDNC40MSwxMi4yNCA0LjA3LDEyLjY3IDQsMTMuNjZMMi4wNywxMy45NUwyLjI4LDE0LjkzTDQuMDQsMTQuNjdMNC4xOCwxNS4zOEwyLjYxLDE2LjMyTDMuMDgsMTcuMjFMNC41MywxNi4zMkM1LjY4LDE4Ljc2IDguNTksMjAgMTIsMjBDMTUuNDEsMjAgMTguMzIsMTguNzYgMTkuNDcsMTYuMzJMMjAuOTIsMTcuMjFMMjEuMzksMTYuMzJMMTkuODIsMTUuMzhMMTkuOTYsMTQuNjdMMjEuNzIsMTQuOTNMMjEuOTMsMTMuOTVMMjAsMTMuNjZDMTkuOTMsMTIuNjcgMTkuNTksMTIuMjQgMTkuMDQsMTEuNDFDMjAuOTcsNy40NiAxOSw0LjUgMTksNC41QzE2LjYsNC41IDE0LjE5LDcuMDcgMTMuMzMsOC4wOUwxMiw4TTksMTFBMSwxIDAgMCwxIDEwLDEyQTEsMSAwIDAsMSA5LDEzQTEsMSAwIDAsMSA4LDEyQTEsMSAwIDAsMSA5LDExTTE1LDExQTEsMSAwIDAsMSAxNiwxMkExLDEgMCAwLDEgMTUsMTNBMSwxIDAgMCwxIDE0LDEyQTEsMSAwIDAsMSAxNSwxMU0xMSwxNEgxM0wxMi4zLDE1LjM5QzEyLjUsMTYuMDMgMTMuMDYsMTYuNSAxMy43NSwxNi41QTEuNSwxLjUgMCAwLDAgMTUuMjUsMTVIMTUuNzVBMiwyIDAgMCwxIDEzLjc1LDE3QzEzLDE3IDEyLjM1LDE2LjU5IDEyLDE2VjE2SDEyQzExLjY1LDE2LjU5IDExLDE3IDEwLjI1LDE3QTIsMiAwIDAsMSA4LjI1LDE1SDguNzVBMS41LDEuNSAwIDAsMCAxMC4yNSwxNi41QzEwLjk0LDE2LjUgMTEuNSwxNi4wMyAxMS43LDE1LjM5TDExLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNjdHYgPSBcIk0xOC4xNSw0Ljk0QzE3Ljc3LDQuOTEgMTcuMzcsNSAxNyw1LjJMOC4zNSwxMC4yQzcuMzksMTAuNzYgNy4wNywxMiA3LjYyLDEyLjk0TDkuMTIsMTUuNTNDOS42NywxNi41IDEwLjg5LDE2LjgyIDExLjg1LDE2LjI3TDEzLjY1LDE1LjIzQzEzLjkyLDE1LjY5IDE0LjMyLDE2LjA2IDE0LjgxLDE2LjI3VjE4LjA0QzE0LjgxLDE5LjEzIDE1LjcsMjAgMTYuODEsMjBIMjJWMTguMDRIMTYuODFWMTYuMjdDMTcuNzIsMTUuODcgMTguMzEsMTQuOTcgMTguMzEsMTRDMTguMzEsMTMuNTQgMTguMTksMTMuMTEgMTcuOTcsMTIuNzNMMjAuNSwxMS4yN0MyMS40NywxMC43MSAyMS44LDkuNSAyMS4yNCw4LjUzTDE5Ljc0LDUuOTRDMTkuNCw1LjM0IDE4Ljc5LDUgMTguMTUsNC45NE02LjIyLDEzLjE3TDIsMTMuODdMMi43NSwxNS4xN0w0Ljc1LDE4LjYzTDUuNSwxOS45M0w4LjIyLDE2LjYzTDYuMjIsMTMuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VpbGluZ0xpZ2h0ID0gXCJNOCw5SDExVjRIMTNWOUgxNkwyMCwxN0g0TDgsOU0xNCwxOEEyLDIgMCAwLDEgMTIsMjBBMiwyIDAgMCwxIDEwLDE4SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZSA9IFwiTTE3LDE5SDdWNUgxN00xNywxSDdDNS44OSwxIDUsMS44OSA1LDNWMjFBMiwyIDAgMCwwIDcsMjNIMTdBMiwyIDAgMCwwIDE5LDIxVjNDMTksMS44OSAxOC4xLDEgMTcsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVBbmRyb2lkID0gXCJNMTcuMjUsMThINi43NVY0SDE3LjI1TTE0LDIxSDEwVjIwSDE0TTE2LDFIOEEzLDMgMCAwLDAgNSw0VjIwQTMsMyAwIDAsMCA4LDIzSDE2QTMsMyAwIDAsMCAxOSwyMFY0QTMsMyAwIDAsMCAxNiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUFycm93RG93biA9IFwiTTE3LDFIN0EyLDIgMCAwLDAgNSwzVjIxQTIsMiAwIDAsMCA3LDIzSDE3QTIsMiAwIDAsMCAxOSwyMVYzQTIsMiAwIDAsMCAxNywxTTE3LDE5SDdWNUgxN1YxOU0xNiwxM0gxM1Y4SDExVjEzSDhMMTIsMTdMMTYsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lQmFzaWMgPSBcIk0xNSwyQTEsMSAwIDAsMCAxNCwzVjZIMTBDOC44OSw2IDgsNi44OSA4LDhWMjBDOCwyMS4xMSA4Ljg5LDIyIDEwLDIySDE1QzE2LjExLDIyIDE3LDIxLjExIDE3LDIwVjhDMTcsNy4yNiAxNi42LDYuNjIgMTYsNi4yOFYzQTEsMSAwIDAsMCAxNSwyTTEwLDhIMTVWMTNIMTBWOE0xMCwxNUgxMVYxNkgxMFYxNU0xMiwxNUgxM1YxNkgxMlYxNU0xNCwxNUgxNVYxNkgxNFYxNU0xMCwxN0gxMVYxOEgxMFYxN00xMiwxN0gxM1YxOEgxMlYxN00xNCwxN0gxNVYxOEgxNFYxN00xMCwxOUgxMVYyMEgxMFYxOU0xMiwxOUgxM1YyMEgxMlYxOU0xNCwxOUgxNVYyMEgxNFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVDaGFyZ2luZyA9IFwiTTExIDE4LjVWMTNIOUwxMyA1LjVWMTFIMTVNMTcgMTlIN1Y1SDE3TTE3IDFIN0M1Ljg5IDEgNSAxLjg5IDUgM1YyMUEyIDIgMCAwIDAgNyAyM0gxN0EyIDIgMCAwIDAgMTkgMjFWM0MxOSAxLjg5IDE4LjEgMSAxNyAxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUNvZyA9IFwiTTkuODIsMTIuNUM5Ljg0LDEyLjMzIDkuODYsMTIuMTcgOS44NiwxMkM5Ljg2LDExLjgzIDkuODQsMTEuNjcgOS44MiwxMS41TDEwLjksMTAuNjlDMTEsMTAuNjIgMTEsMTAuNSAxMC45NiwxMC4zN0w5LjkzLDguNjRDOS44Nyw4LjUzIDkuNzMsOC41IDkuNjIsOC41M0w4LjM0LDkuMDNDOC4wNyw4LjgzIDcuNzgsOC42NyA3LjQ3LDguNTRMNy4yNyw3LjIxQzcuMjcsNy4wOSA3LjE2LDcgNy4wMyw3SDVDNC44NSw3IDQuNzQsNy4wOSA0LjcyLDcuMjFMNC41LDguNTNDNC4yMSw4LjY1IDMuOTIsOC44MyAzLjY1LDlMMi4zNyw4LjVDMi4yNSw4LjQ3IDIuMTIsOC41IDIuMDYsOC42M0wxLjAzLDEwLjM2QzAuOTcsMTAuNSAxLDEwLjYxIDEuMSwxMC42OUwyLjE4LDExLjVDMi4xNiwxMS42NyAyLjE1LDExLjg0IDIuMTUsMTJDMi4xNSwxMi4xNyAyLjE3LDEyLjMzIDIuMTksMTIuNUwxLjEsMTMuMzJDMSwxMy4zOSAxLDEzLjUzIDEuMDQsMTMuNjRMMi4wNywxNS4zN0MyLjEzLDE1LjUgMi4yNywxNS41IDIuMzgsMTUuNUwzLjY2LDE1QzMuOTMsMTUuMTggNC4yMiwxNS4zNCA0LjUzLDE1LjQ3TDQuNzMsMTYuNzlDNC43NCwxNi45MSA0Ljg1LDE3IDUsMTdINy4wNEM3LjE3LDE3IDcuMjgsMTYuOTEgNy4yOSwxNi43OUw3LjUsMTUuNDdDNy44LDE1LjM1IDguMDksMTUuMTcgOC4zNiwxNUw5LjY0LDE1LjVDOS43NiwxNS41MyA5Ljg5LDE1LjUgOS45NSwxNS4zN0wxMSwxMy42NEMxMS4wNCwxMy41MyAxMSwxMy40IDEwLjkyLDEzLjMyTDkuODIsMTIuNU02LDEzLjc1QzUsMTMuNzUgNC4yLDEyLjk3IDQuMiwxMkM0LjIsMTEuMDMgNSwxMC4yNSA2LDEwLjI1QzcsMTAuMjUgNy44LDExLjAzIDcuOCwxMkM3LjgsMTIuOTcgNywxMy43NSA2LDEzLjc1TTE3LDFIN0EyLDIgMCAwLDAgNSwzVjZIN1Y0SDE3VjIwSDdWMThINVYyMUEyLDIgMCAwLDAgNywyM0gxN0EyLDIgMCAwLDAgMTksMjFWM0EyLDIgMCAwLDAgMTcsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVEb2NrID0gXCJNMTYsMTVIOFY1SDE2TTE2LDFIOEM2Ljg5LDEgNiwxLjg5IDYsM1YxN0EyLDIgMCAwLDAgOCwxOUgxNkEyLDIgMCAwLDAgMTgsMTdWM0MxOCwxLjg5IDE3LjEsMSAxNiwxTTgsMjNIMTZWMjFIOFYyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVFcmFzZSA9IFwiTTExLDguMkwxMCw3LjJMNiwxMS4yTDIsNy4yTDEsOC4yTDUsMTIuMkwxLDE2LjJMMiwxNy4yTDYsMTMuMkwxMCwxNy4yTDExLDE2LjJMNywxMi4yTDExLDguMk0xNywxSDdBMiwyIDAgMCwwIDUsM1Y2SDdWNEgxN1YyMEg3VjE4SDVWMjFBMiwyIDAgMCwwIDcsMjNIMTdBMiwyIDAgMCwwIDE5LDIxVjNBMiwyIDAgMCwwIDE3LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lSW5mb3JtYXRpb24gPSBcIk0xMyA3SDExVjlIMTNWN00xMyAxMUgxMVYxN0gxM1YxMU0xNyAxSDdDNS45IDEgNSAxLjkgNSAzVjIxQzUgMjIuMSA1LjkgMjMgNyAyM0gxN0MxOC4xIDIzIDE5IDIyLjEgMTkgMjFWM0MxOSAxLjkgMTguMSAxIDE3IDFNMTcgMTlIN1Y1SDE3VjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUlwaG9uZSA9IFwiTTE2LDE4SDdWNEgxNk0xMS41LDIyQTEuNSwxLjUgMCAwLDEgMTAsMjAuNUExLjUsMS41IDAgMCwxIDExLjUsMTlBMS41LDEuNSAwIDAsMSAxMywyMC41QTEuNSwxLjUgMCAwLDEgMTEuNSwyMk0xNS41LDFINy41QTIuNSwyLjUgMCAwLDAgNSwzLjVWMjAuNUEyLjUsMi41IDAgMCwwIDcuNSwyM0gxNS41QTIuNSwyLjUgMCAwLDAgMTgsMjAuNVYzLjVBMi41LDIuNSAwIDAsMCAxNS41LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lS2V5ID0gXCJNNywxQTIsMiAwIDAsMCA1LDNWN0g3VjRIMTdWMjBIN1YxN0g1VjIxQTIsMiAwIDAsMCA3LDIzSDE3QTIsMiAwIDAsMCAxOSwyMVYzQTIsMiAwIDAsMCAxNywxSDdNNiw5QTMsMyAwIDAsMCAzLDEyQTMsMyAwIDAsMCA2LDE1QzcuMzEsMTUgOC40MiwxNC4xNyA4LjgzLDEzSDExVjE1SDEzVjEzSDE0VjExSDguODNDOC40Miw5LjgzIDcuMzEsOSA2LDlNNiwxMUExLDEgMCAwLDEgNywxMkExLDEgMCAwLDEgNiwxM0ExLDEgMCAwLDEgNSwxMkExLDEgMCAwLDEgNiwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVMaW5rID0gXCJNMjIsMTdIMThWMTBIMjJNMjMsOEgxN0ExLDEgMCAwLDAgMTYsOVYxOUExLDEgMCAwLDAgMTcsMjBIMjNBMSwxIDAgMCwwIDI0LDE5VjlBMSwxIDAgMCwwIDIzLDhNNCw2SDIyVjRINEEyLDIgMCAwLDAgMiw2VjE3SDBWMjBIMTRWMTdINFY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUxpbmtPZmYgPSBcIk0yMyw4SDE3QTEsMSAwIDAsMCAxNiw5VjEzLjE4TDE4LDE1LjE4VjEwSDIyVjE3SDE5LjgyTDIyLjgyLDIwSDIzQTEsMSAwIDAsMCAyNCwxOVY5QTEsMSAwIDAsMCAyMyw4TTQsNi4yN0wxNC43MywxN0g0VjYuMjdNMS45MiwxLjY1TDAuNjUsMi45MkwyLjQ3LDQuNzRDMi4xOCw1LjA4IDIsNS41IDIsNlYxN0gwVjIwSDE3LjczTDIwLjA4LDIyLjM1TDIxLjM1LDIxLjA4TDMuODksMy42MkwxLjkyLDEuNjVNMjIsNlY0SDYuODJMOC44Miw2SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUxvY2sgPSBcIk0xNywxSDdBMiwyIDAgMCwwIDUsM1Y2SDdWNEgxN1YyMEg3VjE4SDVWMjFBMiwyIDAgMCwwIDcsMjNIMTdBMiwyIDAgMCwwIDE5LDIxVjNBMiwyIDAgMCwwIDE3LDFNOC44LDExVjkuNUM4LjgsOC4xIDcuNCw3IDYsN0M0LjYsNyAzLjIsOC4xIDMuMiw5LjVWMTFDMi42LDExIDIsMTEuNiAyLDEyLjJWMTUuN0MyLDE2LjQgMi42LDE3IDMuMiwxN0g4LjdDOS40LDE3IDEwLDE2LjQgMTAsMTUuOFYxMi4zQzEwLDExLjYgOS40LDExIDguOCwxMU03LjUsMTFINC41VjkuNUM0LjUsOC43IDUuMiw4LjIgNiw4LjJDNi44LDguMiA3LjUsOC43IDcuNSw5LjVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lTWVzc2FnZSA9IFwiTTExLDE3VjdINFYxN0gxMU0xMSwzQTIsMiAwIDAsMSAxMyw1VjE5QTIsMiAwIDAsMSAxMSwyMUg0QzIuODksMjEgMiwyMC4xIDIsMTlWNUEyLDIgMCAwLDEgNCwzSDExTTE2LjUsM0gyMS41QTEuNSwxLjUgMCAwLDEgMjMsNC41VjcuNUExLjUsMS41IDAgMCwxIDIxLjUsOUgxOEwxNSwxMlY5TDE1LDQuNUExLjUsMS41IDAgMCwxIDE2LjUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVNZXNzYWdlT2ZmID0gXCJNMi4zOSAxLjczTDEuMTEgM0wyLjIyIDQuMTFDMi4wOCA0LjM4IDIgNC42OCAyIDVWMTlDMiAyMC4xIDIuODkgMjEgNCAyMUgxMUMxMi4xIDIxIDEzIDIwLjEgMTMgMTlWMTQuODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTExIDE3SDRWN0g1LjExTDExIDEyLjg5VjE3TTIzIDQuNVY3LjVDMjMgOC4zMyAyMi4zMyA5IDIxLjUgOUgxOEwxNS4xIDExLjlMMTUgMTEuOFY0LjVDMTUgMy42NyAxNS42NyAzIDE2LjUgM0gyMS41QzIyLjMzIDMgMjMgMy42NyAyMyA0LjVNMTAuMiA3TDYuMiAzSDExQzEyLjEgMyAxMyAzLjkgMTMgNVY5LjhMMTEgNy44VjdIMTAuMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZU5mYyA9IFwiTTIsMTZWMThBNSw1IDAgMCwxIDcsMjNIOUE3LDcgMCAwLDAgMiwxNk0yLDIwVjIzSDVBMywzIDAgMCwwIDIsMjBNMiwxMlYxNEE5LDkgMCAwLDEgMTEsMjNIMTNDMTMsMTYuOTIgOC4wOCwxMiAyLDEyTTE3LDFIN0EyLDIgMCAwLDAgNSwzVjEwLjM3QzUuNjksMTAuNTMgNi4zNiwxMC43NCA3LDExVjVIMTdWMThIMTMuOTdDMTQuNSwxOS4yNSAxNC44MSwyMC41OSAxNC45MiwyMkgxN0EyLDIgMCAwLDAgMTksMjBWM0EyLDIgMCAwLDAgMTcsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVOZmNPZmYgPSBcIk0yMC44NCAyMi43M0wxOC44NSAyMC43NEMxOC41NiAyMS41IDE3Ljg0IDIyIDE3IDIySDE0LjkyQzE0LjgxIDIwLjU5IDE0LjUgMTkuMjUgMTMuOTcgMThIMTYuMTFMNyA4Ljg5VjExQzYuMzYgMTAuNzQgNS42OSAxMC41MyA1IDEwLjM3VjYuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xNyA1VjEzLjhMMTkgMTUuOFYzQzE5IDEuOSAxOC4xMSAxIDE3IDFIN0M2LjI0IDEgNS41OSAxLjQzIDUuMjUgMi4wNUw4LjIgNUgxN00yIDIwVjIzSDVDNSAyMS4zNCAzLjY2IDIwIDIgMjBNMiAxNlYxOEM0Ljc2IDE4IDcgMjAuMjQgNyAyM0g5QzkgMTkuMTMgNS44NyAxNiAyIDE2TTIgMTJWMTRDNi45NyAxNCAxMSAxOC4wMyAxMSAyM0gxM0MxMyAxNi45MiA4LjA4IDEyIDIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lT2ZmID0gXCJNMi4zOCwxLjczTDEuMTEsM0w1LDYuODlWMjFBMiwyIDAgMCwwIDcsMjNIMTdBMiwyIDAgMCwwIDE5LDIxVjIwLjg5TDIwLjg0LDIyLjczTDIyLjExLDIxLjQ2TTE3LDE5SDdWOC44OUwxNywxOC44OVYxOU0xNyw1VjEzLjhMMTksMTUuOFYzQTIsMiAwIDAsMCAxNywxSDdDNi4yOCwxIDUuNiwxLjM3IDUuMjQsMkw4LjI0LDVIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lUGxheSA9IFwiTTE3IDE5SDdWNUgxN00xNyAxSDdDNS44OSAxIDUgMS44OSA1IDNWMjFDNSAyMi4xIDUuOSAyMyA3IDIzSDE3QzE4LjEgMjMgMTkgMjIuMSAxOSAyMVYzQzE5IDEuODkgMTguMSAxIDE3IDFNMTAgOVYxNUwxNCAxMkwxMCA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZVNjcmVlbnNob3QgPSBcIk03LDFBMiwyIDAgMCwwIDUsM1YyMUEyLDIgMCAwLDAgNywyM0gxN0EyLDIgMCAwLDAgMTksMjFWM0EyLDIgMCAwLDAgMTcsMUg3TTcsNEgxN1YyMEg3VjRNOSw2VjEwSDEwLjVWNy41SDEzVjZIOU0xMy41LDE0VjE2LjVIMTFWMThIMTVWMTRIMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVTZXR0aW5ncyA9IFwiTTE2LDE2SDhWNEgxNk0xNiwwSDhBMiwyIDAgMCwwIDYsMlYxOEEyLDIgMCAwLDAgOCwyMEgxNkEyLDIgMCAwLDAgMTgsMThWMkEyLDIgMCAwLDAgMTYsME0xNSwyNEgxN1YyMkgxNU0xMSwyNEgxM1YyMkgxMU03LDI0SDlWMjJIN1YyNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVTb3VuZCA9IFwiTTE5LjEsOC43QzIwLjksMTAuNSAyMC45LDEzLjMgMTkuMSwxNS4yTDIwLjEsMTYuMkMyMi42LDEzLjkgMjIuNiwxMC4xIDIwLjEsNy43TDE5LjEsOC43TTE4LDkuOEwxNywxMC44QzE3LjUsMTEuNSAxNy41LDEyLjQgMTcsMTMuMUwxOCwxNC4xQzE5LjIsMTIuOSAxOS4yLDExLjEgMTgsOS44TTE0LDFINEEyLDIgMCAwLDAgMiwzVjIxQTIsMiAwIDAsMCA0LDIzSDE0QTIsMiAwIDAsMCAxNiwyMVYzQTIsMiAwIDAsMCAxNCwxTTE0LDIwSDRWNEgxNFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVUZXh0ID0gXCJNMTcsMTlWNUg3VjE5SDE3TTE3LDFBMiwyIDAgMCwxIDE5LDNWMjFBMiwyIDAgMCwxIDE3LDIzSDdDNS44OSwyMyA1LDIyLjEgNSwyMVYzQzUsMS44OSA1Ljg5LDEgNywxSDE3TTksN0gxNVY5SDlWN005LDExSDEzVjEzSDlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lV2lyZWxlc3MgPSBcIk0yMC4wNyw0LjkzQzIxLjg4LDYuNzQgMjMsOS4yNCAyMywxMkMyMywxNC43NiAyMS44OCwxNy4yNiAyMC4wNywxOS4wN0wxOC42NiwxNy42NkMyMC4xMSwxNi4yMiAyMSwxNC4yMiAyMSwxMkMyMSw5Ljc5IDIwLjExLDcuNzggMTguNjYsNi4zNEwyMC4wNyw0LjkzTTE3LjI0LDcuNzZDMTguMzMsOC44NSAxOSwxMC4zNSAxOSwxMkMxOSwxMy42NSAxOC4zMywxNS4xNSAxNy4yNCwxNi4yNEwxNS44MywxNC44M0MxNi41NSwxNC4xMSAxNywxMy4xMSAxNywxMkMxNywxMC44OSAxNi41NSw5Ljg5IDE1LjgzLDkuMTdMMTcuMjQsNy43Nk0xMywxMEEyLDIgMCAwLDEgMTUsMTJBMiwyIDAgMCwxIDEzLDE0QTIsMiAwIDAsMSAxMSwxMkEyLDIgMCAwLDEgMTMsMTBNMTEuNSwxQTIuNSwyLjUgMCAwLDEgMTQsMy41VjhIMTJWNEgzVjE5SDEyVjE2SDE0VjIwLjVBMi41LDIuNSAwIDAsMSAxMS41LDIzSDMuNUEyLjUsMi41IDAgMCwxIDEsMjAuNVYzLjVBMi41LDIuNSAwIDAsMSAzLjUsMUgxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbHRpY0Nyb3NzID0gXCJNMTcuOCw4QzE3LjI2LDUuODkgMTUuNjEsNC4yNCAxMy41LDMuN1YySDEwLjVWMy43QzguMzksNC4yNCA2Ljc0LDUuODkgNi4yLDhINFYxMUg2LjJDNi43NCwxMy4xMSA4LjM5LDE0Ljc2IDEwLjUsMTUuM1YyMkgxMy41VjE1LjNDMTUuNjEsMTQuNzYgMTcuMjYsMTMuMTEgMTcuOCwxMUgxOS45N1Y4SDE3LjhNMTIuMDQsOS41M0wxNC41LDExSDE1Ljc2QzE1LjM1LDEyLjAzIDE0LjUzLDEyLjg0IDEzLjUsMTMuMjZWMTJMMTIuMDYsOS41NkwxMiw5LjVMMTEuOTQsOS41NkwxMC41LDEyVjEzLjI2QzkuNDcsMTIuODQgOC42NiwxMi4wMyA4LjI0LDExSDkuNUwxMS45Niw5LjUzTDEyLDkuNUgxMS45Nkw5LjUsOEg4LjI0QzguNjUsNi45NyA5LjQ3LDYuMTYgMTAuNSw1Ljc0VjdMMTEuOTQsOS40NEwxMiw5LjVMMTIuMDYsOS40NEwxMy41LDdWNS43NEMxNC41Myw2LjE2IDE1LjM1LDYuOTcgMTUuNzYsOEgxNC41TDEyLjA0LDkuNUgxMkwxMi4wNCw5LjUzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbnRvcyA9IFwiTTE5LjA3IDE0LjkzTDIyIDEyTDE5LjA3IDkuMDdWNC45M0gxNC45M0wxMiAyTDkuMDcgNC45M0g0LjkzVjkuMDdMMiAxMkw0LjkzIDE0LjkzVjE5LjA3SDkuMDdMMTIgMjJMMTQuOTMgMTkuMDdIMTkuMDdWMTQuOTNNMjEuNDEgMTJMMTkuMDcgMTQuMzRWMTIuNDZIMTMuNjlMMTMuMjMgMTJMMTMuNjkgMTEuNTRIMTkuMDdWOS42NkwyMS40MSAxMk0xOC42NiAxNC43NkwxNy4zMiAxNi4wOUwxNC4xMSAxMi44N0gxOC42NlYxNC43Nk0xMi40NiAxMy4xTDEyIDEyLjY1TDExLjU0IDEzLjFWMTIuNDZIMTAuOUwxMS4zNiAxMkwxMC45IDExLjU0SDExLjU0VjEwLjlMMTIgMTEuMzZMMTIuNDYgMTAuOVYxMS41NEgxMy4xTDEyLjY1IDEyTDEzLjEgMTIuNDZIMTIuNDZWMTMuMU0xNC4xMSAxMS4xM0wxNy4zMiA3LjkxTDE4LjY2IDkuMjRWMTEuMTNIMTQuMTFNMTguNjYgNS4zNVY4LjY1TDE3LjMyIDcuMzJMMTMuNSAxMS4xM0gxMi44N1YxMC41TDE2LjY4IDYuNjhMMTUuMzUgNS4zNUgxOC42Nk0xMi44NyA5Ljg5VjUuMzVIMTQuNzZMMTYuMDkgNi42OEwxMi44NyA5Ljg5TTEyIDIuNTlMMTQuMzQgNC45M0gxMi40NlYxMC4zMUwxMiAxMC43N0wxMS41NCAxMC4zMVY0LjkzSDkuNjZMMTIgMi41OU0xMS4xMyA5Ljg5TDcuOTEgNi42OEw5LjI0IDUuMzVIMTEuMTNWOS44OU01LjM1IDUuMzVIOC42NUw3LjMyIDYuNjhMMTEuMTMgMTAuNVYxMS4xM0gxMC41TDYuNjggNy4zMkw1LjM1IDguNjVWNS4zNU01LjM1IDkuMjRMNi42OCA3LjkxTDkuODkgMTEuMTNINS4zNVY5LjI0TTIuNTkgMTJMNC45MyA5LjY2VjExLjU0SDEwLjMxTDEwLjc3IDEyTDEwLjMxIDEyLjQ2SDQuOTNWMTQuMzRMMi41OSAxMk05Ljg5IDEyLjg3TDYuNjggMTYuMDlMNS4zNSAxNC43NlYxMi44N0g5Ljg5TTUuMzUgMTguNjZWMTUuMzVMNi42OCAxNi42OEwxMC41IDEyLjg3SDExLjEzVjEzLjVMNy4zMiAxNy4zMkw4LjY1IDE4LjY1SDUuMzVNMTEuMTMgMTQuMTFWMTguNjZIOS4yNEw3LjkxIDE3LjMyTDExLjEzIDE0LjExTTEyIDIxLjQxTDkuNjYgMTkuMDdIMTEuNTRWMTMuNjlMMTIgMTMuMjNMMTIuNDYgMTMuNjlWMTkuMDdIMTQuMzRMMTIgMjEuNDFNMTIuODcgMTQuMTFMMTYuMDkgMTcuMzJMMTQuNzYgMTguNjZIMTIuODdWMTQuMTFNMTUuMzUgMTguNjZMMTYuNjggMTcuMzJMMTIuODcgMTMuNVYxMi44N0gxMy41TDE3LjMyIDE2LjY4TDE4LjY1IDE1LjM1VjE4LjY2SDE1LjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlcnRpZmljYXRlID0gXCJNNCwzQzIuODksMyAyLDMuODkgMiw1VjE1QTIsMiAwIDAsMCA0LDE3SDEyVjIyTDE1LDE5TDE4LDIyVjE3SDIwQTIsMiAwIDAsMCAyMiwxNVY4TDIyLDZWNUEyLDIgMCAwLDAgMjAsM0gxNlYzSDRNMTIsNUwxNSw3TDE4LDVWOC41TDIxLDEwTDE4LDExLjVWMTVMMTUsMTNMMTIsMTVWMTEuNUw5LDEwTDEyLDguNVY1TTQsNUg5VjdINFY1TTQsOUg3VjExSDRWOU00LDEzSDlWMTVINFYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDZXJ0aWZpY2F0ZU91dGxpbmUgPSBcIk0xMyAyMUwxNSAyMEwxNyAyMVYxNEgxM00xNyA5VjdMMTUgOEwxMyA3VjlMMTEgMTBMMTMgMTFWMTNMMTUgMTJMMTcgMTNWMTFMMTkgMTBNMjAgM0g0QTIgMiAwIDAgMCAyIDVWMTVBMiAyIDAgMCAwIDQgMTdIMTFWMTVINFY1SDIwVjE1SDE5VjE3SDIwQTIgMiAwIDAgMCAyMiAxNVY1QTIgMiAwIDAgMCAyMCAzTTExIDhINVY2SDExTTkgMTFINVY5SDlNMTEgMTRINVYxMkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFpclJvbGxpbmcgPSBcIk0yMiAxMFYxM0gxOVYxMEgyMk0yIDEzSDVWMTBIMlYxM00xNyA1QzE3IDMuOSAxNi4xIDMgMTUgM0g5QzcuOSAzIDcgMy45IDcgNVYxM0gxN1Y1TTcgMTVINlYxN0gxMVYxOEw3IDIySDkuOEwxMiAxOS44TDE0LjIgMjJIMTdMMTMgMThWMTdIMThWMTVIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFpclNjaG9vbCA9IFwiTTIyLDVWN0gxN0wxMy41MywxMkgxNlYxNEgxNC40NkwxOC4xNywyMkgxNS45N0wxNS4wNCwyMEg2LjM4TDUuMzUsMjJIMy4xTDcuMjMsMTRIN0M2LjU1LDE0IDYuMTcsMTMuNyA2LjA0LDEzLjNMMi44NywzLjg0TDMuODIsMy41QzQuMzQsMy4zNCA0LjkxLDMuNjMgNS4wOCw0LjE1TDcuNzIsMTJIMTIuMUwxNS41Nyw3SDEyVjVIMjJNOS41LDE0TDcuNDIsMThIMTQuMTFMMTIuMjYsMTRIOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJpdHkgPSBcIk0xMi43NSwzLjk0QzEzLjc1LDMuMjIgMTQuOTEsMi44NiAxNi4yMiwyLjg2QzE2Ljk0LDIuODYgMTcuNzMsMy4wNSAxOC41OSwzLjQ1QzE5LjQ1LDMuODQgMjAuMTMsNC4zIDIwLjYzLDQuODNDMjEuNjYsNi4xMSAyMi4wOSw3LjYgMjEuOTQsOS4zQzIxLjc4LDExIDIxLjIyLDEyLjMzIDIwLjI1LDEzLjI3TDEyLjY2LDIwLjg2QzEyLjQ3LDIxLjA1IDEyLjIzLDIxLjE0IDExLjk1LDIxLjE0QzExLjY3LDIxLjE0IDExLjQ0LDIxLjA1IDExLjI1LDIwLjg2QzExLjA2LDIwLjY3IDEwLjk3LDIwLjQ0IDEwLjk3LDIwLjE2QzEwLjk3LDE5Ljg4IDExLjA2LDE5LjY0IDExLjI1LDE5LjQ1TDE1Ljg0LDE0Ljg2QzE2LjA5LDE0LjY0IDE2LjA5LDE0LjQxIDE1Ljg0LDE0LjE2QzE1LjU5LDEzLjkxIDE1LjM2LDEzLjkxIDE1LjE0LDE0LjE2TDEwLjU1LDE4Ljc1QzEwLjM2LDE4Ljk0IDEwLjEzLDE5LjAzIDkuODQsMTkuMDNDOS41NiwxOS4wMyA5LjMzLDE4Ljk0IDkuMTQsMTguNzVDOC45NSwxOC41NiA4Ljg2LDE4LjMzIDguODYsMTguMDVDOC44NiwxNy43NyA4Ljk1LDE3LjUzIDkuMTQsMTcuMzRMMTMuNzMsMTIuNzVDMTQsMTIuNSAxNCwxMi4yNSAxMy43MywxMkMxMy41LDExLjc1IDEzLjI4LDExLjc1IDEzLjAzLDEyTDguNDQsMTYuNjRDOC4yNSwxNi44MyA4LDE2LjkyIDcuNzMsMTYuOTJDNy40NSwxNi45MiA3LjIxLDE2LjgzIDcsMTYuNjRDNi44LDE2LjQ1IDYuNywxNi4yMiA2LjcsMTUuOTRDNi43LDE1LjY2IDYuODEsMTUuNDEgNy4wMywxNS4xOUwxMS42MywxMC41OUMxMS44OCwxMC4zNCAxMS44OCwxMC4xMSAxMS42Myw5Ljg5QzExLjM4LDkuNjcgMTEuMTQsOS42NyAxMC45Miw5Ljg5TDYuMjgsMTQuNUM2LjA2LDE0LjcgNS44MywxNC44MSA1LjU4LDE0LjgxQzUuMywxNC44MSA1LjA2LDE0LjcxIDQuODgsMTQuNUM0LjY5LDE0LjMgNC41OSwxNC4wNiA0LjU5LDEzLjc4QzQuNTksMTMuNSA0LjY5LDEzLjI3IDQuODgsMTMuMDhDNy45NCwxMCA5LjgzLDguMTQgMTAuNTUsNy40NUwxNC4xMSwxMC45N0MxNC41LDExLjM0IDE0Ljk1LDExLjUzIDE1LjUsMTEuNTNDMTYuMiwxMS41MyAxNi43NSwxMS4yNSAxNy4xNiwxMC42OUMxNy40NCwxMC4yOCAxNy41NCw5LjgzIDE3LjQ2LDkuMzNDMTcuMzgsOC44MyAxNy4xNyw4LjQxIDE2LjgzLDguMDZMMTIuNzUsMy45NE0xNC44MSwxMC4yN0wxMC41NSw2TDMuNDcsMTMuMDhDMi42MywxMi4yMyAyLjE1LDEwLjkzIDIuMDQsOS4xNkMxLjkzLDcuNCAyLjQxLDUuODcgMy40Nyw0LjU5QzQuNjYsMy40MSA2LjA4LDIuODEgNy43MywyLjgxQzkuMzksMi44MSAxMC44LDMuNDEgMTEuOTUsNC41OUwxNi4yMiw4Ljg2QzE2LjQxLDkuMDUgMTYuNSw5LjI4IDE2LjUsOS41NkMxNi41LDkuODQgMTYuNDEsMTAuMDggMTYuMjIsMTAuMjdDMTYuMDMsMTAuNDUgMTUuOCwxMC41NSAxNS41LDEwLjU1QzE1LjIzLDEwLjU1IDE1LDEwLjQ1IDE0LjgxLDEwLjI3VjEwLjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0QXJjID0gXCJNMTYuMTgsMTkuNkwxNC4xNywxNi4xMkMxNS4xNSwxNS40IDE1LjgzLDE0LjI4IDE1Ljk3LDEzSDIwQzE5LjgzLDE1Ljc2IDE4LjM1LDE4LjE2IDE2LjE4LDE5LjZNMTMsNy4wM1YzQzE3LjMsMy4yNiAyMC43NCw2LjcgMjEsMTFIMTYuOTdDMTYuNzQsOC45MSAxNS4wOSw3LjI2IDEzLDcuMDNNNywxMi41QzcsMTMuMTQgNy4xMywxMy43NSA3LjM4LDE0LjNMMy45LDE2LjMxQzMuMzIsMTUuMTYgMywxMy44NyAzLDEyLjVDMyw3Ljk3IDYuNTQsNC4yNyAxMSw0VjguMDNDOC43NSw4LjI4IDcsMTAuMTggNywxMi41TTExLjUsMjFDOC41MywyMSA1LjkyLDE5LjUgNC40LDE3LjE4TDcuODgsMTUuMTdDOC43LDE2LjI4IDEwLDE3IDExLjUsMTdDMTIuMTQsMTcgMTIuNzUsMTYuODcgMTMuMywxNi42MkwxNS4zMSwyMC4xQzE0LjE2LDIwLjY4IDEyLjg3LDIxIDExLjUsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRBcmVhc3BsaW5lID0gXCJNMTcuNDUsMTUuMThMMjIsNy4zMVYxOUwyMiwyMUgyVjNINFYxNS41NEw5LjUsNkwxNiw5Ljc4TDIwLjI0LDIuNDVMMjEuOTcsMy40NUwxNi43NCwxMi41TDEwLjIzLDguNzVMNC4zMSwxOUg2LjU3TDEwLjk2LDExLjQ0TDE3LjQ1LDE1LjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0QXJlYXNwbGluZVZhcmlhbnQgPSBcIk0yMiwyMUgyVjNINFYxNS41NEw5LjUsNkwxNiw5Ljc4TDIwLjI0LDIuNDVMMjEuOTcsMy40NUwyMiwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydEJhciA9IFwiTTIyLDIxSDJWM0g0VjE5SDZWMTBIMTBWMTlIMTJWNkgxNlYxOUgxOFYxNEgyMlYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydEJhclN0YWNrZWQgPSBcIk0yMiwyMUgyVjNINFYxOUg2VjE3SDEwVjE5SDEyVjE2SDE2VjE5SDE4VjE3SDIyVjIxTTE4LDE0SDIyVjE2SDE4VjE0TTEyLDZIMTZWOUgxMlY2TTE2LDE1SDEyVjEwSDE2VjE1TTYsMTBIMTBWMTJINlYxME0xMCwxNkg2VjEzSDEwVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0QmVsbEN1cnZlID0gXCJNOS45NiwxMS4zMUMxMC44Miw4LjEgMTEuNSw2IDEzLDZDMTQuNSw2IDE1LjE4LDguMSAxNi4wNCwxMS4zMUMxNywxNC45MiAxOC4xLDE5IDIyLDE5VjE3QzE5LjgsMTcgMTksMTQuNTQgMTcuOTcsMTAuOEMxNy4wOCw3LjQ2IDE2LjE1LDQgMTMsNEM5Ljg1LDQgOC45Miw3LjQ2IDguMDMsMTAuOEM3LjAzLDE0LjU0IDYuMiwxNyA0LDE3VjJIMlYyMkgyMlYyMEg0VjE5QzcuOSwxOSA5LDE0LjkyIDkuOTYsMTEuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRCZWxsQ3VydmVDdW11bGF0aXZlID0gXCJNNCAxOVYyMEgyMlYyMkgyVjJINFYxN0M3IDE3IDEwIDE1IDEyLjEgMTEuNEMxNS4xIDYuNCAxOC40IDQgMjIgNFY2QzE5LjIgNiAxNi41IDguMSAxMy45IDEyLjVDMTEuMyAxNi42IDcuNyAxOSA0IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0Qm94ID0gXCJNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy45IDIwLjEgMyAxOSAzTTkgMTdIN1YxMEg5VjE3TTEzIDE3SDExVjdIMTNWMTdNMTcgMTdIMTVWMTNIMTdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRCb3hPdXRsaW5lID0gXCJNOSAxN0g3VjEwSDlWMTdNMTMgMTdIMTFWN0gxM1YxN00xNyAxN0gxNVYxM0gxN1YxN00xOS41IDE5LjFINC41VjVIMTkuNVYxOS4xTTE5LjUgM0g0LjVDMy40IDMgMi41IDMuOSAyLjUgNVYxOUMyLjUgMjAuMSAzLjQgMjEgNC41IDIxSDE5LjVDMjAuNiAyMSAyMS41IDIwLjEgMjEuNSAxOVY1QzIxLjUgMy45IDIwLjYgMyAxOS41IDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRCb3hQbHVzT3V0bGluZSA9IFwiTTIyIDVWN0gxOVYxMEgxN1Y3SDE0VjVIMTdWMkgxOVY1SDIyTTE5IDE5SDVWNUgxMVYzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWMTNIMTlWMTlNMTUgMTNWMTdIMTdWMTNIMTVNMTEgMTdIMTNWOUgxMVYxN005IDE3VjExSDdWMTdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydEJ1YmJsZSA9IFwiTTcuMiwxMS4yQzguOTcsMTEuMiAxMC40LDEyLjYzIDEwLjQsMTQuNEMxMC40LDE2LjE3IDguOTcsMTcuNiA3LjIsMTcuNkM1LjQzLDE3LjYgNCwxNi4xNyA0LDE0LjRDNCwxMi42MyA1LjQzLDExLjIgNy4yLDExLjJNMTQuOCwxNkEyLDIgMCAwLDEgMTYuOCwxOEEyLDIgMCAwLDEgMTQuOCwyMEEyLDIgMCAwLDEgMTIuOCwxOEEyLDIgMCAwLDEgMTQuOCwxNk0xNS4yLDRBNC44LDQuOCAwIDAsMSAyMCw4LjhDMjAsMTEuNDUgMTcuODUsMTMuNiAxNS4yLDEzLjZBNC44LDQuOCAwIDAsMSAxMC40LDguOEMxMC40LDYuMTUgMTIuNTUsNCAxNS4yLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnREb251dCA9IFwiTTEzLDIuMDVWNS4wOEMxNi4zOSw1LjU3IDE5LDguNDcgMTksMTJDMTksMTIuOSAxOC44MiwxMy43NSAxOC41LDE0LjU0TDIxLjEyLDE2LjA3QzIxLjY4LDE0LjgzIDIyLDEzLjQ1IDIyLDEyQzIyLDYuODIgMTguMDUsMi41NSAxMywyLjA1TTEyLDE5QTcsNyAwIDAsMSA1LDEyQzUsOC40NyA3LjYxLDUuNTcgMTEsNS4wOFYyLjA1QzUuOTQsMi41NSAyLDYuODEgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkMxNS4zLDIyIDE4LjIzLDIwLjM5IDIwLjA1LDE3LjkxTDE3LjQ1LDE2LjM4QzE2LjE3LDE4IDE0LjIxLDE5IDEyLDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0RG9udXRWYXJpYW50ID0gXCJNMTMsMi4wNUMxOC4wNSwyLjU1IDIyLDYuODIgMjIsMTJDMjIsMTMuNDUgMjEuNjgsMTQuODMgMjEuMTIsMTYuMDdMMTguNSwxNC41NEMxOC44MiwxMy43NSAxOSwxMi45IDE5LDEyQzE5LDguNDcgMTYuMzksNS41NyAxMyw1LjA4VjIuMDVNMTIsMTlDMTQuMjEsMTkgMTYuMTcsMTggMTcuNDUsMTYuMzhMMjAuMDUsMTcuOTFDMTguMjMsMjAuMzkgMTUuMywyMiAxMiwyMkM2LjQ3LDIyIDIsMTcuNSAyLDEyQzIsNi44MSA1Ljk0LDIuNTUgMTEsMi4wNVY1LjA4QzcuNjEsNS41NyA1LDguNDcgNSwxMkE3LDcgMCAwLDAgMTIsMTlNMTIsNkE2LDYgMCAwLDEgMTgsMTJDMTgsMTQuOTcgMTUuODQsMTcuNDQgMTMsMTcuOTJWMTQuODNDMTQuMTcsMTQuNDIgMTUsMTMuMzEgMTUsMTJBMywzIDAgMCwwIDEyLDlMMTEuNDUsOS4wNUw5LjkxLDYuMzhDMTAuNTYsNi4xMyAxMS4yNiw2IDEyLDZNNiwxMkM2LDEwLjE0IDYuODUsOC41IDguMTgsNy4zOEw5LjcyLDEwLjA1QzkuMjcsMTAuNTcgOSwxMS4yNiA5LDEyQzksMTMuMzEgOS44MywxNC40MiAxMSwxNC44M1YxNy45MkM4LjE2LDE3LjQ0IDYsMTQuOTcgNiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydEdhbnR0ID0gXCJNMiw1SDEwVjJIMTJWMjJIMTBWMThINlYxNUgxMFYxM0g0VjEwSDEwVjhIMlY1TTE0LDVIMTdWOEgxNFY1TTE0LDEwSDE5VjEzSDE0VjEwTTE0LDE1SDIyVjE4SDE0VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0SGlzdG9ncmFtID0gXCJNMywzSDVWMTNIOVY3SDEzVjExSDE3VjE1SDIxVjIxSDNWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydExpbmUgPSBcIk0xNiwxMS43OEwyMC4yNCw0LjQ1TDIxLjk3LDUuNDVMMTYuNzQsMTQuNUwxMC4yMywxMC43NUw1LjQ2LDE5SDIyVjIxSDJWM0g0VjE3LjU0TDkuNSw4TDE2LDExLjc4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0TGluZVN0YWNrZWQgPSBcIk0xNy40NSwxNS4xOEwyMiw2LjgxVjE5TDIyLDIxSDJWM0g0VjE1LjU0TDQsMTlINC4zMUw2LDE5SDYuNTdMMTAuOTYsMTEuNDRMMTcuNDUsMTUuMThNMjIsM0wyMS45NywzLjQ1TDE3LDExTDEwLDZMNiwxMlYzSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0TGluZVZhcmlhbnQgPSBcIk0zLjUsMTguNUw5LjUsMTIuNUwxMy41LDE2LjVMMjIsNi45MkwyMC41OSw1LjVMMTMuNSwxMy41TDkuNSw5LjVMMiwxN0wzLjUsMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydE11bHRpbGluZSA9IFwiTTIyLDYuOTJMMjAuNTksNS41TDE3Ljc0LDguNzJDMTUuNjgsNi40IDEyLjgzLDUgOS42MSw1QzYuNzIsNSA0LjA3LDYuMTYgMiw4TDMuNDIsOS40MkM1LjEyLDcuOTMgNy4yNyw3IDkuNjEsN0MxMi4zNSw3IDE0LjcsOC4yNiAxNi4zOCwxMC4yNEwxMy41LDEzLjVMOS41LDkuNUwyLDE3TDMuNSwxOC41TDkuNSwxMi41TDEzLjUsMTYuNUwxNy41NSwxMS45M0MxOC4zLDEzLjI4IDE4LjgsMTQuODMgMTksMTYuNUgyMUMyMC43OCwxNC4xOCAyMC4wNSwxMi4wOSAxOC45NiwxMC4zNEwyMiw2LjkyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0TXVsdGlwbGUgPSBcIk0yMiAxNlYxOEg2VjJIOFYxMy41N0wxMy43MSA0LjU3TDE2Ljg3IDYuNjhMMTkuMjkgNC4yNkwyMC43MSA1LjY4TDE3LjEzIDkuMjlMMTQuMjkgNy40TDguODIgMTZNNCAyMFY0SDJWMjJIMjJWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRQaWUgPSBcIk0xMSwyVjIyQzUuOSwyMS41IDIsMTcuMiAyLDEyQzIsNi44IDUuOSwyLjUgMTEsMk0xMywyVjExSDIyQzIxLjUsNi4yIDE3LjgsMi41IDEzLDJNMTMsMTNWMjJDMTcuNywyMS41IDIxLjUsMTcuOCAyMiwxM0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydFBwZiA9IFwiTTUgNlY4QzguMiA4IDExLjM2IDkuMTggMTMuNTcgMTEuMTVDMTUuNjQgMTMgMTYuODMgMTUuNSAxNyAxOEgxOC45N0ExNCAxMi41IDAgMCAwIDUgNk0yMiAyMUgyVjNINFYxOUgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydFNhbmtleSA9IFwiTTIyIDVINFYySDJWMjJIMjJWMjBINFY5QzguMDkgOSAxMC4xMyAxMSAxMi4yOSAxMy4yMVMxNy4wOSAxOCAyMiAxOFYxNkMxNy45MSAxNiAxNS44NyAxNCAxMy43MSAxMS43OVM4LjkxIDcgNCA3SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0U2Fua2V5VmFyaWFudCA9IFwiTTIwIDRWNkg0VjRIMlYxMkg0VjEwQzguMTYgMTAgOS45MiAxMi4xMSAxMS43NyAxNC4zNFMxNS42NSAxOSAyMCAxOVYyMUgyMlYxNUgyMFYxN0MxNi41OSAxNyAxNS4wNyAxNS4xNyAxMy4zMSAxMy4wNkMxMS4zNCAxMC42OSA5LjEgOCA0IDhIMjBWMTBIMjJWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydFNjYXR0ZXJQbG90ID0gXCJNMiwySDRWMjBIMjJWMjJIMlYyTTksMTBBMywzIDAgMCwxIDEyLDEzQTMsMyAwIDAsMSA5LDE2QTMsMyAwIDAsMSA2LDEzQTMsMyAwIDAsMSA5LDEwTTEzLDJBMywzIDAgMCwxIDE2LDVBMywzIDAgMCwxIDEzLDhBMywzIDAgMCwxIDEwLDVBMywzIDAgMCwxIDEzLDJNMTgsMTJBMywzIDAgMCwxIDIxLDE1QTMsMyAwIDAsMSAxOCwxOEEzLDMgMCAwLDEgMTUsMTVBMywzIDAgMCwxIDE4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0U2NhdHRlclBsb3RIZXhiaW4gPSBcIk0yLDJINFYyMEgyMlYyMkgyVjJNMTQsMTQuNUwxMiwxOEg3Ljk0TDUuOTIsMTQuNUw3Ljk0LDExSDEyTDE0LDE0LjVNMTQuMDgsNi41TDEyLjA2LDEwSDhMNiw2LjVMOCwzSDEyLjA2TDE0LjA4LDYuNU0yMS4yNSwxMC41TDE5LjIzLDE0SDE1LjE5TDEzLjE3LDEwLjVMMTUuMTksN0gxOS4yM0wyMS4yNSwxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0VGltZWxpbmUgPSBcIk0yLDJINFYyMEgyMlYyMkgyVjJNNywxMEgxN1YxM0g3VjEwTTExLDE1SDIxVjE4SDExVjE1TTYsNEgyMlY4SDIwVjZIOFY4SDZWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydFRpbWVsaW5lVmFyaWFudCA9IFwiTTMsMTRMMy41LDE0LjA3TDguMDcsOS41QzcuODksOC44NSA4LjA2LDguMTEgOC41OSw3LjU5QzkuMzcsNi44IDEwLjYzLDYuOCAxMS40MSw3LjU5QzExLjk0LDguMTEgMTIuMTEsOC44NSAxMS45Myw5LjVMMTQuNSwxMi4wN0wxNSwxMkMxNS4xOCwxMiAxNS4zNSwxMiAxNS41LDEyLjA3TDE5LjA3LDguNUMxOSw4LjM1IDE5LDguMTggMTksOEEyLDIgMCAwLDEgMjEsNkEyLDIgMCAwLDEgMjMsOEEyLDIgMCAwLDEgMjEsMTBDMjAuODIsMTAgMjAuNjUsMTAgMjAuNSw5LjkzTDE2LjkzLDEzLjVDMTcsMTMuNjUgMTcsMTMuODIgMTcsMTRBMiwyIDAgMCwxIDE1LDE2QTIsMiAwIDAsMSAxMywxNEwxMy4wNywxMy41TDEwLjUsMTAuOTNDMTAuMTgsMTEgOS44MiwxMSA5LjUsMTAuOTNMNC45MywxNS41TDUsMTZBMiwyIDAgMCwxIDMsMThBMiwyIDAgMCwxIDEsMTZBMiwyIDAgMCwxIDMsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRUaW1lbGluZVZhcmlhbnRTaGltbWVyID0gXCJNMjEgOEMxOS41IDggMTguNyA5LjQgMTkuMSAxMC41TDE1LjUgMTQuMUMxNS4yIDE0IDE0LjggMTQgMTQuNSAxNC4xTDExLjkgMTEuNUMxMi4zIDEwLjQgMTEuNSA5IDEwIDlDOC42IDkgNy43IDEwLjQgOC4xIDExLjVMMy41IDE2QzIuNCAxNS43IDEgMTYuNSAxIDE4QzEgMTkuMSAxLjkgMjAgMyAyMEM0LjQgMjAgNS4zIDE4LjYgNC45IDE3LjVMOS40IDEyLjlDOS43IDEzIDEwLjEgMTMgMTAuNCAxMi45TDEzIDE1LjVDMTIuNyAxNi41IDEzLjUgMTggMTUgMThDMTYuNSAxOCAxNy4zIDE2LjYgMTYuOSAxNS41TDIwLjUgMTEuOUMyMS42IDEyLjIgMjMgMTEuNCAyMyAxMEMyMyA4LjkgMjIuMSA4IDIxIDhNMTUgOUwxNS45IDYuOUwxOCA2TDE1LjkgNS4xTDE1IDNMMTQuMSA1LjFMMTIgNkwxNC4xIDYuOUwxNSA5TTMuNSAxMUw0IDlMNiA4LjVMNCA4TDMuNSA2TDMgOEwxIDguNUwzIDlMMy41IDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0VHJlZSA9IFwiTTE0LDZIMjJWMjJIMTRWNk0yLDRIMjJWMkgyVjRNMiw4SDEyVjZIMlY4TTksMjJIMTJWMTBIOVYyMk0yLDIySDdWMTBIMlYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0ID0gXCJNMTIsM0MxNy41LDMgMjIsNi41OCAyMiwxMUMyMiwxNS40MiAxNy41LDE5IDEyLDE5QzEwLjc2LDE5IDkuNTcsMTguODIgOC40NywxOC41QzUuNTUsMjEgMiwyMSAyLDIxQzQuMzMsMTguNjcgNC43LDE3LjEgNC43NSwxNi41QzMuMDUsMTUuMDcgMiwxMy4xMyAyLDExQzIsNi41OCA2LjUsMyAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXRBbGVydCA9IFwiTTEyLDNDMTcuNSwzIDIyLDYuNTggMjIsMTFDMjIsMTUuNDIgMTcuNSwxOSAxMiwxOUMxMC43NiwxOSA5LjU3LDE4LjgyIDguNDcsMTguNUM1LjU1LDIxIDIsMjEgMiwyMUM0LjMzLDE4LjY3IDQuNywxNy4xIDQuNzUsMTYuNUMzLjA1LDE1LjA3IDIsMTMuMTMgMiwxMUMyLDYuNTggNi41LDMgMTIsM00xMSwxNFYxNkgxM1YxNEgxMU0xMSwxMkgxM1Y2SDExVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXRBbGVydE91dGxpbmUgPSBcIk0xMiAzQzYuNSAzIDIgNi41OCAyIDExQzIuMDUgMTMuMTUgMy4wNiAxNS4xNyA0Ljc1IDE2LjVDNC43NSAxNy4xIDQuMzMgMTguNjcgMiAyMUM0LjM3IDIwLjg5IDYuNjQgMjAgOC40NyAxOC41QzkuNjEgMTguODMgMTAuODEgMTkgMTIgMTlDMTcuNSAxOSAyMiAxNS40MiAyMiAxMVMxNy41IDMgMTIgM00xMiAxN0M3LjU4IDE3IDQgMTQuMzEgNCAxMVM3LjU4IDUgMTIgNSAyMCA3LjY5IDIwIDExIDE2LjQyIDE3IDEyIDE3TTExIDEzVjE1SDEzVjEzSDExTTExIDExSDEzVjdIMTFWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdE1pbnVzID0gXCJNMjMgMTdWMTlIMTVWMTdIMjNNMTIgM0MxNy41IDMgMjIgNi41OCAyMiAxMUMyMiAxMS41OCAyMS45MiAxMi4xNCAyMS43OCAxMi42OEMyMC45NSAxMi4yNSAyMCAxMiAxOSAxMkMxNS42OSAxMiAxMyAxNC42OSAxMyAxOEwxMy4wOCAxOC45NUwxMiAxOUMxMC43NiAxOSA5LjU3IDE4LjgyIDguNDcgMTguNUM1LjU1IDIxIDIgMjEgMiAyMUM0LjMzIDE4LjY3IDQuNyAxNy4xIDQuNzUgMTYuNUMzLjA1IDE1LjA3IDIgMTMuMTQgMiAxMUMyIDYuNTggNi41IDMgMTIgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0TWludXNPdXRsaW5lID0gXCJNMTIgM0MxNy41IDMgMjIgNi41OCAyMiAxMUMyMiAxMS41OCAyMS45MiAxMi4xNCAyMS43OCAxMi42OEMyMS4xOSAxMi4zOCAyMC41NSAxMi4xNiAxOS44OCAxMi4wNkMxOS45NiAxMS43MiAyMCAxMS4zNiAyMCAxMUMyMCA3LjY5IDE2LjQyIDUgMTIgNVM0IDcuNjkgNCAxMSA3LjU4IDE3IDEyIDE3TDEzLjA5IDE2Ljk1TDEzIDE4TDEzLjA4IDE4Ljk1TDEyIDE5QzEwLjgxIDE5IDkuNjIgMTguODMgOC40NyAxOC41QzYuNjQgMjAgNC4zNyAyMC44OSAyIDIxQzQuMzMgMTguNjcgNC43NSAxNy4xIDQuNzUgMTYuNUMzLjA2IDE1LjE3IDIuMDUgMTMuMTUgMiAxMUMyIDYuNTggNi41IDMgMTIgM00yMyAxN1YxOUgxNVYxN0gyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0T3V0bGluZSA9IFwiTTEyLDNDNi41LDMgMiw2LjU4IDIsMTFDMi4wNSwxMy4xNSAzLjA2LDE1LjE3IDQuNzUsMTYuNUM0Ljc1LDE3LjEgNC4zMywxOC42NyAyLDIxQzQuMzcsMjAuODkgNi42NCwyMCA4LjQ3LDE4LjVDOS42MSwxOC44MyAxMC44MSwxOSAxMiwxOUMxNy41LDE5IDIyLDE1LjQyIDIyLDExQzIyLDYuNTggMTcuNSwzIDEyLDNNMTIsMTdDNy41OCwxNyA0LDE0LjMxIDQsMTFDNCw3LjY5IDcuNTgsNSAxMiw1QzE2LjQyLDUgMjAsNy42OSAyMCwxMUMyMCwxNC4zMSAxNi40MiwxNyAxMiwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0UGx1cyA9IFwiTTE4IDE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3SDE4VjE0TTEyIDNDMTcuNSAzIDIyIDYuNTggMjIgMTFDMjIgMTEuNTggMjEuOTIgMTIuMTQgMjEuNzggMTIuNjhDMjAuOTUgMTIuMjUgMjAgMTIgMTkgMTJDMTUuNjkgMTIgMTMgMTQuNjkgMTMgMThMMTMuMDggMTguOTVMMTIgMTlDMTAuNzYgMTkgOS41NyAxOC44MiA4LjQ3IDE4LjVDNS41NSAyMSAyIDIxIDIgMjFDNC4zMyAxOC42NyA0LjcgMTcuMSA0Ljc1IDE2LjVDMy4wNSAxNS4wNyAyIDEzLjE0IDIgMTFDMiA2LjU4IDYuNSAzIDEyIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFBsdXNPdXRsaW5lID0gXCJNMTIgM0MxNy41IDMgMjIgNi41OCAyMiAxMUMyMiAxMS41OCAyMS45MiAxMi4xNCAyMS43OCAxMi42OEMyMS4xOSAxMi4zOCAyMC41NSAxMi4xNiAxOS44OCAxMi4wNkMxOS45NiAxMS43MiAyMCAxMS4zNiAyMCAxMUMyMCA3LjY5IDE2LjQyIDUgMTIgNUM3LjU4IDUgNCA3LjY5IDQgMTFDNCAxNC4zMSA3LjU4IDE3IDEyIDE3TDEzLjA5IDE2Ljk1TDEzIDE4TDEzLjA4IDE4Ljk1TDEyIDE5QzEwLjgxIDE5IDkuNjIgMTguODMgOC40NyAxOC41QzYuNjQgMjAgNC4zNyAyMC44OSAyIDIxQzQuMzMgMTguNjcgNC43NSAxNy4xIDQuNzUgMTYuNUMzLjA2IDE1LjE3IDIuMDUgMTMuMTUgMiAxMUMyIDYuNTggNi41IDMgMTIgM00xOCAxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0UHJvY2Vzc2luZyA9IFwiTTEyLDNDMTcuNSwzIDIyLDYuNTggMjIsMTFDMjIsMTUuNDIgMTcuNSwxOSAxMiwxOUMxMC43NiwxOSA5LjU3LDE4LjgyIDguNDcsMTguNUM1LjU1LDIxIDIsMjEgMiwyMUM0LjMzLDE4LjY3IDQuNywxNy4xIDQuNzUsMTYuNUMzLjA1LDE1LjA3IDIsMTMuMTMgMiwxMUMyLDYuNTggNi41LDMgMTIsM00xNywxMlYxMEgxNVYxMkgxN00xMywxMlYxMEgxMVYxMkgxM005LDEyVjEwSDdWMTJIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0UHJvY2Vzc2luZ091dGxpbmUgPSBcIk0xMiAzQzYuNSAzIDIgNi41OCAyIDExQzIuMDUgMTMuMTUgMy4wNiAxNS4xNyA0Ljc1IDE2LjVDNC43NSAxNy4xIDQuMzMgMTguNjcgMiAyMUM0LjM3IDIwLjg5IDYuNjQgMjAgOC40NyAxOC41QzkuNjEgMTguODMgMTAuODEgMTkgMTIgMTlDMTcuNSAxOSAyMiAxNS40MiAyMiAxMVMxNy41IDMgMTIgM00xMiAxN0M3LjU4IDE3IDQgMTQuMzEgNCAxMVM3LjU4IDUgMTIgNSAyMCA3LjY5IDIwIDExIDE2LjQyIDE3IDEyIDE3TTE3IDEyVjEwSDE1VjEySDE3TTEzIDEyVjEwSDExVjEySDEzTTkgMTJWMTBIN1YxMkg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXRRdWVzdGlvbiA9IFwiTTEyIDNDNi41IDMgMiA2LjYgMiAxMUMyIDEzLjEgMyAxNS4xIDQuOCAxNi41QzQuOCAxNy4xIDQuNCAxOC43IDIgMjFDMiAyMSA1LjUgMjEgOC41IDE4LjVDOS42IDE4LjggMTAuOCAxOSAxMiAxOUMxNy41IDE5IDIyIDE1LjQgMjIgMTFTMTcuNSAzIDEyIDNNMTMgMTVIMTFWMTNIMTNWMTVNMTQuOCAxMEMxNC41IDEwLjQgMTQuMSAxMC42IDEzLjcgMTAuOEMxMy40IDExIDEzLjMgMTEuMSAxMy4yIDExLjNDMTMgMTEuNSAxMyAxMS43IDEzIDEySDExQzExIDExLjUgMTEuMSAxMS4yIDExLjMgMTAuOUMxMS41IDEwLjcgMTEuOSAxMC40IDEyLjQgMTAuMUMxMi43IDEwIDEyLjkgOS44IDEzIDkuNkMxMy4xIDkuNCAxMy4yIDkuMSAxMy4yIDguOUMxMy4yIDguNiAxMy4xIDguNCAxMi45IDguMkMxMi43IDggMTIuNCA3LjkgMTIuMSA3LjlDMTEuOCA3LjkgMTEuNiA4IDExLjQgOC4xQzExLjIgOC4yIDExLjEgOC40IDExLjEgOC43SDkuMUM5LjIgOCA5LjUgNy40IDEwIDdDMTAuNSA2LjYgMTEuMiA2LjUgMTIuMSA2LjVDMTMgNi41IDEzLjggNi43IDE0LjMgNy4xQzE0LjggNy41IDE1LjEgOC4xIDE1LjEgOC44QzE1LjIgOS4yIDE1LjEgOS42IDE0LjggMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFF1ZXN0aW9uT3V0bGluZSA9IFwiTTEyIDNDNi41IDMgMiA2LjYgMiAxMUMyIDEzLjIgMy4xIDE1LjIgNC44IDE2LjVDNC44IDE3LjEgNC40IDE4LjcgMiAyMUM0LjQgMjAuOSA2LjYgMjAgOC41IDE4LjVDOS42IDE4LjggMTAuOCAxOSAxMiAxOUMxNy41IDE5IDIyIDE1LjQgMjIgMTFTMTcuNSAzIDEyIDNNMTIgMTdDNy42IDE3IDQgMTQuMyA0IDExUzcuNiA1IDEyIDUgMjAgNy43IDIwIDExIDE2LjQgMTcgMTIgMTdNMTIuMiA2LjVDMTEuMyA2LjUgMTAuNiA2LjcgMTAuMSA3QzkuNSA3LjQgOS4yIDggOS4zIDguN0gxMS4zQzExLjMgOC40IDExLjQgOC4yIDExLjYgOC4xQzExLjggOCAxMiA3LjkgMTIuMyA3LjlDMTIuNiA3LjkgMTIuOSA4IDEzLjEgOC4yQzEzLjMgOC40IDEzLjQgOC42IDEzLjQgOC45QzEzLjQgOS4yIDEzLjMgOS40IDEzLjIgOS42QzEzIDkuOCAxMi44IDEwIDEyLjYgMTAuMUMxMi4xIDEwLjQgMTEuNyAxMC43IDExLjUgMTAuOUMxMS4xIDExLjIgMTEgMTEuNSAxMSAxMkgxM0MxMyAxMS43IDEzLjEgMTEuNSAxMy4xIDExLjNDMTMuMiAxMS4xIDEzLjQgMTEgMTMuNiAxMC44QzE0LjEgMTAuNiAxNC40IDEwLjMgMTQuNyA5LjlDMTUgOS41IDE1LjEgOS4xIDE1LjEgOC43QzE1LjEgOCAxNC44IDcuNCAxNC4zIDdDMTMuOSA2LjcgMTMuMSA2LjUgMTIuMiA2LjVNMTEgMTNWMTVIMTNWMTNIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFJlbW92ZSA9IFwiTTE1LjQ2IDE1Ljg4TDE2Ljg4IDE0LjQ2TDE5IDE2LjU5TDIxLjEyIDE0LjQ3TDIyLjU0IDE1Ljg4TDIwLjQxIDE4TDIyLjU0IDIwLjEyTDIxLjEyIDIxLjU0TDE5IDE5LjQxTDE2Ljg4IDIxLjU0TDE1LjQ2IDIwLjEyTDE3LjU5IDE4TDE1LjQ3IDE1Ljg4TTEyIDNDMTcuNSAzIDIyIDYuNTggMjIgMTFDMjIgMTEuNTggMjEuOTIgMTIuMTQgMjEuNzggMTIuNjhDMjAuOTUgMTIuMjUgMjAgMTIgMTkgMTJDMTUuNjkgMTIgMTMgMTQuNjkgMTMgMThMMTMuMDggMTguOTVMMTIgMTlDMTAuNzYgMTkgOS41NyAxOC44MiA4LjQ3IDE4LjVDNS41NSAyMSAyIDIxIDIgMjFDNC4zMyAxOC42NyA0LjcgMTcuMSA0Ljc1IDE2LjVDMy4wNSAxNS4wNyAyIDEzLjE0IDIgMTFDMiA2LjU4IDYuNSAzIDEyIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFJlbW92ZU91dGxpbmUgPSBcIk0xNS40NiAxNS44OEwxNi44OCAxNC40NkwxOSAxNi41OUwyMS4xMiAxNC40N0wyMi41NCAxNS44OEwyMC40MSAxOEwyMi41NCAyMC4xMkwyMS4xMiAyMS41NEwxOSAxOS40MUwxNi44OCAyMS41NEwxNS40NiAyMC4xMkwxNy41OSAxOEwxNS40NyAxNS44OE0xMiAzQzE3LjUgMyAyMiA2LjU4IDIyIDExQzIyIDExLjU4IDIxLjkyIDEyLjE0IDIxLjc4IDEyLjY4QzIxLjE5IDEyLjM4IDIwLjU1IDEyLjE2IDE5Ljg4IDEyLjA2QzE5Ljk2IDExLjcyIDIwIDExLjM2IDIwIDExQzIwIDcuNjkgMTYuNDIgNSAxMiA1QzcuNTggNSA0IDcuNjkgNCAxMUM0IDE0LjMxIDcuNTggMTcgMTIgMTdMMTMuMDkgMTYuOTVMMTMgMThMMTMuMDggMTguOTVMMTIgMTlDMTAuODEgMTkgOS42MiAxOC44MyA4LjQ3IDE4LjVDNi42NCAyMCA0LjM3IDIwLjg5IDIgMjFDNC4zMyAxOC42NyA0Ljc1IDE3LjEgNC43NSAxNi41QzMuMDYgMTUuMTcgMi4wNSAxMy4xNSAyIDExQzIgNi41OCA2LjUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXRTbGVlcCA9IFwiTTEyIDNDNi41IDMgMiA2LjU4IDIgMTFDMiAxMy4xMyAzLjA1IDE1LjA3IDQuNzUgMTYuNUM0LjcgMTcuMSA0LjMzIDE4LjY3IDIgMjFDMiAyMSA1LjU1IDIxIDguNDcgMTguNUM5LjU3IDE4LjgyIDEwLjc2IDE5IDEyIDE5QzE3LjUgMTkgMjIgMTUuNDIgMjIgMTFTMTcuNSAzIDEyIDNNMTUgOS4zTDExLjc2IDEzSDE1VjE1SDlWMTIuN0wxMi4yNCA5SDlWN0gxNVY5LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFNsZWVwT3V0bGluZSA9IFwiTTEyIDNDNi41IDMgMiA2LjU4IDIgMTFDMi4wNSAxMy4xNSAzLjA2IDE1LjE3IDQuNzUgMTYuNUM0Ljc1IDE3LjEgNC4zMyAxOC42NyAyIDIxQzQuMzcgMjAuODkgNi42NCAyMCA4LjQ3IDE4LjVDOS42MSAxOC44MyAxMC44MSAxOSAxMiAxOUMxNy41IDE5IDIyIDE1LjQyIDIyIDExUzE3LjUgMyAxMiAzTTEyIDE3QzcuNTggMTcgNCAxNC4zMSA0IDExUzcuNTggNSAxMiA1IDIwIDcuNjkgMjAgMTEgMTYuNDIgMTcgMTIgMTdNMTUgN0g5VjlIMTIuMjRMOSAxMi43VjE1SDE1VjEzSDExLjc2TDE1IDkuM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrID0gXCJNMjEsN0w5LDE5TDMuNSwxMy41TDQuOTEsMTIuMDlMOSwxNi4xN0wxOS41OSw1LjU5TDIxLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tBbGwgPSBcIk0wLjQxLDEzLjQxTDYsMTlMNy40MSwxNy41OEwxLjgzLDEyTTIyLjI0LDUuNThMMTEuNjYsMTYuMTdMNy41LDEyTDYuMDcsMTMuNDFMMTEuNjYsMTlMMjMuNjYsN00xOCw3TDE2LjU5LDUuNThMMTAuMjQsMTEuOTNMMTEuNjYsMTMuMzRMMTgsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja0JvbGQgPSBcIk05LDIwLjQyTDIuNzksMTQuMjFMNS42MiwxMS4zOEw5LDE0Ljc3TDE4Ljg4LDQuODhMMjEuNzEsNy43MUw5LDIwLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjAsMkg4QTIsMiAwIDAsMCA2LDRWMTZBMiwyIDAgMCwwIDgsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRBMiwyIDAgMCwwIDIwLDJNMjAsMTZIOFY0SDIwVjE2TTE2LDIwVjIySDRBMiwyIDAgMCwxIDIsMjBWN0g0VjIwSDE2TTE4LjUzLDguMDZMMTcuNDcsN0wxMi41OSwxMS44OEwxMC40Nyw5Ljc2TDkuNDEsMTAuODJMMTIuNTksMTRMMTguNTMsOC4wNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja0JveE91dGxpbmUgPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xOSw1VjE5SDVWNUgxOU0xMCwxN0w2LDEzTDcuNDEsMTEuNThMMTAsMTQuMTdMMTYuNTksNy41OEwxOCw5XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tDaXJjbGUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNMTAgMTdMNSAxMkw2LjQxIDEwLjU5TDEwIDE0LjE3TDE3LjU5IDYuNThMMTkgOEwxMCAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja0NpcmNsZU91dGxpbmUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNMTIgMjBDNy41OSAyMCA0IDE2LjQxIDQgMTJTNy41OSA0IDEyIDQgMjAgNy41OSAyMCAxMiAxNi40MSAyMCAxMiAyME0xNi41OSA3LjU4TDEwIDE0LjE3TDcuNDEgMTEuNTlMNiAxM0wxMCAxN0wxOCA5TDE2LjU5IDcuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tEZWNhZ3JhbSA9IFwiTTIzLDEyTDIwLjU2LDkuMjJMMjAuOSw1LjU0TDE3LjI5LDQuNzJMMTUuNCwxLjU0TDEyLDNMOC42LDEuNTRMNi43MSw0LjcyTDMuMSw1LjUzTDMuNDQsOS4yMUwxLDEyTDMuNDQsMTQuNzhMMy4xLDE4LjQ3TDYuNzEsMTkuMjlMOC42LDIyLjQ3TDEyLDIxTDE1LjQsMjIuNDZMMTcuMjksMTkuMjhMMjAuOSwxOC40NkwyMC41NiwxNC43OEwyMywxMk0xMCwxN0w2LDEzTDcuNDEsMTEuNTlMMTAsMTQuMTdMMTYuNTksNy41OEwxOCw5TDEwLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrRGVjYWdyYW1PdXRsaW5lID0gXCJNMjMgMTJMMjAuNiA5LjJMMjAuOSA1LjVMMTcuMyA0LjdMMTUuNCAxLjVMMTIgM0w4LjYgMS41TDYuNyA0LjdMMy4xIDUuNUwzLjQgOS4yTDEgMTJMMy40IDE0LjhMMy4xIDE4LjVMNi43IDE5LjNMOC42IDIyLjVMMTIgMjFMMTUuNCAyMi41TDE3LjMgMTkuM0wyMC45IDE4LjVMMjAuNiAxNC44TDIzIDEyTTE4LjcgMTYuOUwxNiAxNy41TDE0LjYgMTkuOUwxMiAxOC44TDkuNCAxOS45TDggMTcuNUw1LjMgMTYuOUw1LjUgMTQuMUwzLjcgMTJMNS41IDkuOUw1LjMgNy4xTDggNi41TDkuNCA0LjFMMTIgNS4yTDE0LjYgNC4xTDE2IDYuNUwxOC43IDcuMUwxOC41IDkuOUwyMC4zIDEyTDE4LjUgMTQuMUwxOC43IDE2LjlNMTYuNiA3LjZMMTggOUwxMCAxN0w2IDEzTDcuNCAxMS42TDEwIDE0LjJMMTYuNiA3LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tOZXR3b3JrID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU04LjI1LDEwLjA4TDkuNDEsOC45MkwxMSwxMC41TDE0LjU5LDYuOTJMMTUuNzUsOC4zM0wxMSwxMy4wOEw4LjI1LDEwLjA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrTmV0d29ya091dGxpbmUgPSBcIk0xNSwyMEExLDEgMCAwLDAgMTQsMTlIMTNWMTdIMTdBMiwyIDAgMCwwIDE5LDE1VjVBMiwyIDAgMCwwIDE3LDNIN0EyLDIgMCAwLDAgNSw1VjE1QTIsMiAwIDAsMCA3LDE3SDExVjE5SDEwQTEsMSAwIDAsMCA5LDIwSDJWMjJIOUExLDEgMCAwLDAgMTAsMjNIMTRBMSwxIDAgMCwwIDE1LDIySDIyVjIwSDE1TTcsMTVWNUgxN1YxNUg3TTgsMTAuMzdMOS4yNCw5LjEzTDEwLjkzLDEwLjgzTDE0Ljc2LDdMMTYsOC41TDEwLjkzLDEzLjU3TDgsMTAuMzdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tPdXRsaW5lID0gXCJNMTkuNzgsMi4yTDI0LDYuNDJMOC40NCwyMkwwLDEzLjU1TDQuMjIsOS4zM0w4LjQ0LDEzLjU1TDE5Ljc4LDIuMk0xOS43OCw1TDguNDQsMTYuMzZMNC4yMiwxMi4xOUwyLjgxLDEzLjU1TDguNDQsMTkuMTdMMjEuMTksNi40MkwxOS43OCw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrVW5kZXJsaW5lID0gXCJNMjEsNUw5LDE3TDMuNSwxMS41TDQuOTEsMTAuMDlMOSwxNC4xN0wxOS41OSwzLjU5TDIxLDVNMywyMVYxOUgyMVYyMUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrVW5kZXJsaW5lQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTcsMThIN1YxNkgxN1YxOE0xMC4zLDE0TDcsMTAuN0w4LjQsOS4zTDEwLjMsMTEuMkwxNS42LDUuOUwxNyw3LjNMMTAuMywxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja1VuZGVybGluZUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTcsMTVIMTdWMTdIN1YxNU0xMC4zLDExLjJMOC40LDkuM0w3LDEwLjdMMTAuMywxNEwxNyw3LjNMMTUuNiw1LjlMMTAuMywxMS4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm9vayA9IFwiTTUsMTRIMTlWMTVINVYxNE0yMSwxN1Y4SDNWMTdIMjFNMSw1SDIzVjE5SDFWNU01LDEwSDEyVjEySDVWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hCbGFuayA9IFwiTTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94QmxhbmtDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2JveEJsYW5rQ2lyY2xlT3V0bGluZSA9IFwiTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hCbGFua09mZiA9IFwiTTIwLjg0IDIyLjczTDE5LjEgMjFDMTkuMDYgMjEgMTkuMDMgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyA0Ljk3IDMgNC45NCAzIDQuOUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTIxIDVDMjEgMy44OSAyMC4xIDMgMTkgM0g2LjJMMjEgMTcuOFY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94QmxhbmtPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0wzIDQuOVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5LjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNSAxOVY2Ljg5TDE3LjExIDE5SDVNOC4yIDVMNi4yIDNIMTlDMjAuMSAzIDIxIDMuODkgMjEgNVYxNy44TDE5IDE1LjhWNUg4LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hCbGFua091dGxpbmUgPSBcIk0xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xOSw1VjE5SDVWNUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2JveEludGVybWVkaWF0ZSA9IFwiTTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWNUgxOVYxOU0xNywxN0g3VjdIMTdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNYXJrZWQgPSBcIk0xMCwxN0w1LDEyTDYuNDEsMTAuNThMMTAsMTQuMTdMMTcuNTksNi41OEwxOSw4TTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94TWFya2VkQ2lyY2xlID0gXCJNMTAsMTdMNSwxMkw2LjQxLDEwLjU4TDEwLDE0LjE3TDE3LjU5LDYuNThMMTksOE0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2JveE1hcmtlZENpcmNsZU91dGxpbmUgPSBcIk0yMCwxMkE4LDggMCAwLDEgMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRDMTIuNzYsNCAxMy41LDQuMTEgMTQuMiw0LjMxTDE1Ljc3LDIuNzRDMTQuNjEsMi4yNiAxMy4zNCwyIDEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMk03LjkxLDEwLjA4TDYuNSwxMS41TDExLDE2TDIxLDZMMTkuNTksNC41OEwxMSwxMy4xN0w3LjkxLDEwLjA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94TWFya2VkT3V0bGluZSA9IFwiTTE5LDE5SDVWNUgxNVYzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjExSDE5TTcuOTEsMTAuMDhMNi41LDExLjVMMTEsMTZMMjEsNkwxOS41OSw0LjU4TDExLDEzLjE3TDcuOTEsMTAuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZUJsYW5rID0gXCJNMjIsMTZBMiwyIDAgMCwxIDIwLDE4SDhDNi44OSwxOCA2LDE3LjEgNiwxNlY0QzYsMi44OSA2Ljg5LDIgOCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2TTE2LDIwVjIySDRBMiwyIDAgMCwxIDIsMjBWN0g0VjIwSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94TXVsdGlwbGVCbGFua0NpcmNsZSA9IFwiTTE0LDJBOCw4IDAgMCwwIDYsMTBBOCw4IDAgMCwwIDE0LDE4QTgsOCAwIDAsMCAyMiwxMEE4LDggMCAwLDAgMTQsMk00LjkzLDUuODJDMy4wOCw3LjM0IDIsOS42MSAyLDEyQTgsOCAwIDAsMCAxMCwyMEMxMC42NCwyMCAxMS4yNywxOS45MiAxMS44OCwxOS43N0MxMC4xMiwxOS4zOCA4LjUsMTguNSA3LjE3LDE3LjI5QzUuMjIsMTYuMjUgNCwxNC4yMSA0LDEyQzQsMTEuNyA0LjAzLDExLjQxIDQuMDcsMTEuMTFDNC4wMywxMC43NCA0LDEwLjM3IDQsMTBDNCw4LjU2IDQuMzIsNy4xMyA0LjkzLDUuODJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZUJsYW5rQ2lyY2xlT3V0bGluZSA9IFwiTTE0LDJBOCw4IDAgMCwwIDYsMTBBOCw4IDAgMCwwIDE0LDE4QTgsOCAwIDAsMCAyMiwxMEE4LDggMCAwLDAgMTQsMk0xNCw0QzE3LjMyLDQgMjAsNi42OSAyMCwxMEMyMCwxMy4zMiAxNy4zMiwxNiAxNCwxNkE2LDYgMCAwLDEgOCwxMEE2LDYgMCAwLDEgMTQsNE00LjkzLDUuODJDMy4wOCw3LjM0IDIsOS42MSAyLDEyQTgsOCAwIDAsMCAxMCwyMEMxMC42NCwyMCAxMS4yNywxOS45MiAxMS44OCwxOS43N0MxMC4xMiwxOS4zOCA4LjUsMTguNSA3LjE3LDE3LjI5QzUuMjIsMTYuMjUgNCwxNC4yMSA0LDEyQzQsMTEuNyA0LjAzLDExLjQxIDQuMDcsMTEuMTFDNC4wMywxMC43NCA0LDEwLjM3IDQsMTBDNCw4LjU2IDQuMzIsNy4xMyA0LjkzLDUuODJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZUJsYW5rT3V0bGluZSA9IFwiTTIwLDE2VjRIOFYxNkgyME0yMiwxNkEyLDIgMCAwLDEgMjAsMThIOEM2Ljg5LDE4IDYsMTcuMSA2LDE2VjRDNiwyLjg5IDYuODksMiA4LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZNMTYsMjBWMjJINEEyLDIgMCAwLDEgMiwyMFY3SDRWMjBIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZU1hcmtlZCA9IFwiTTIyLDE2QTIsMiAwIDAsMSAyMCwxOEg4QzYuODksMTggNiwxNy4xIDYsMTZWNEM2LDIuODkgNi44OSwyIDgsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNk0xNiwyMFYyMkg0QTIsMiAwIDAsMSAyLDIwVjdINFYyMEgxNk0xMywxNEwyMCw3TDE4LjU5LDUuNTlMMTMsMTEuMTdMOS45MSw4LjA5TDguNSw5LjVMMTMsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZU1hcmtlZENpcmNsZSA9IFwiTTE0LDJBOCw4IDAgMCwwIDYsMTBBOCw4IDAgMCwwIDE0LDE4QTgsOCAwIDAsMCAyMiwxMEE4LDggMCAwLDAgMTQsMk00LjkzLDUuODJDMy4wOCw3LjM0IDIsOS42MSAyLDEyQTgsOCAwIDAsMCAxMCwyMEMxMC42NCwyMCAxMS4yNywxOS45MiAxMS44OCwxOS43N0MxMC4xMiwxOS4zOCA4LjUsMTguNSA3LjE3LDE3LjI5QzUuMjIsMTYuMjUgNCwxNC4yMSA0LDEyQzQsMTEuNyA0LjAzLDExLjQxIDQuMDcsMTEuMTFDNC4wMywxMC43NCA0LDEwLjM3IDQsMTBDNCw4LjU2IDQuMzIsNy4xMyA0LjkzLDUuODJNMTguMDksNi4wOEwxOS41LDcuNUwxMywxNEw5LjIxLDEwLjIxTDEwLjYzLDguNzlMMTMsMTEuMTdcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2JveE11bHRpcGxlTWFya2VkQ2lyY2xlT3V0bGluZSA9IFwiTTE0LDJBOCw4IDAgMCwwIDYsMTBBOCw4IDAgMCwwIDE0LDE4QTgsOCAwIDAsMCAyMiwxMEgyMEMyMCwxMy4zMiAxNy4zMiwxNiAxNCwxNkE2LDYgMCAwLDEgOCwxMEE2LDYgMCAwLDEgMTQsNEMxNC40Myw0IDE0Ljg2LDQuMDUgMTUuMjcsNC4xNEwxNi44OCwyLjU0QzE1Ljk2LDIuMTggMTUsMiAxNCwyTTIwLjU5LDMuNThMMTQsMTAuMTdMMTEuNjIsNy43OUwxMC4yMSw5LjIxTDE0LDEzTDIyLDVNNC45Myw1LjgyQzMuMDgsNy4zNCAyLDkuNjEgMiwxMkE4LDggMCAwLDAgMTAsMjBDMTAuNjQsMjAgMTEuMjcsMTkuOTIgMTEuODgsMTkuNzdDMTAuMTIsMTkuMzggOC41LDE4LjUgNy4xNywxNy4yOUM1LjIyLDE2LjI1IDQsMTQuMjEgNCwxMkM0LDExLjcgNC4wMywxMS40MSA0LjA3LDExLjExQzQuMDMsMTAuNzQgNCwxMC4zNyA0LDEwQzQsOC41NiA0LjMyLDcuMTMgNC45Myw1LjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94TXVsdGlwbGVNYXJrZWRPdXRsaW5lID0gXCJNMjAsMTZWMTBIMjJWMTZBMiwyIDAgMCwxIDIwLDE4SDhDNi44OSwxOCA2LDE3LjEgNiwxNlY0QzYsMi44OSA2Ljg5LDIgOCwySDE2VjRIOFYxNkgyME0xMC45MSw3LjA4TDE0LDEwLjE3TDIwLjU5LDMuNThMMjIsNUwxNCwxM0w5LjUsOC41TDEwLjkxLDcuMDhNMTYsMjBWMjJINEEyLDIgMCAwLDEgMiwyMFY3SDRWMjBIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tlcmJvYXJkID0gXCJNMiAyVjIySDIyVjJIMk0yMCAxMkgxNlYxNkgyMFYyMEgxNlYxNkgxMlYyMEg4VjE2SDRWMTJIOFY4SDRWNEg4VjhIMTJWNEgxNlY4SDIwVjEyTTE2IDhWMTJIMTJWOEgxNk0xMiAxMlYxNkg4VjEySDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrZXJib2FyZE1pbnVzID0gXCJNMTQgMTdWMTlIMjJWMTdNOCAxNkgxMlYxMkg4VjE2TTEyIDEySDE2VjhIMTJWMTJNMiAyVjIySDEzLjVDMTMgMjEuNCAxMi42IDIwLjcgMTIuMyAyMEg4VjE2SDRWMTJIOFY4SDRWNEg4VjhIMTJWNEgxNlY4SDIwVjEyLjRDMjAuNyAxMi43IDIxLjQgMTMuMSAyMiAxMy42VjJIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2VyYm9hcmRQbHVzID0gXCJNMTkgMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRIMTlWMTdNOCAxNkgxMlYxMkg4VjE2TTEyIDEySDE2VjhIMTJWMTJNMiAyVjIySDEzLjU0QzEzIDIxLjQyIDEyLjYzIDIwLjc0IDEyLjM2IDIwSDhWMTZINFYxMkg4VjhINFY0SDhWOEgxMlY0SDE2VjhIMjBWMTIuMzZDMjAuNzQgMTIuNjMgMjEuNDIgMTMgMjIgMTMuNTRWMkgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrZXJib2FyZFJlbW92ZSA9IFwiTTggMTZIMTJWMTJIOFYxNk0xMiAxMkgxNlY4SDEyVjEyTTIgMlYyMkgxMy41QzEzIDIxLjQgMTIuNiAyMC43IDEyLjMgMjBIOFYxNkg0VjEySDhWOEg0VjRIOFY4SDEyVjRIMTZWOEgyMFYxMi40QzIwLjcgMTIuNyAyMS40IDEzLjEgMjIgMTMuNlYySDJNMjAuMSAxNC41TDE4IDE2LjZMMTUuOSAxNC41TDE0LjUgMTUuOUwxNi42IDE4TDE0LjUgMjAuMUwxNS45IDIxLjVMMTggMTkuNEwyMC4xIDIxLjVMMjEuNSAyMC4xTDE5LjQgMThMMjEuNSAxNS45TDIwLjEgMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVlc2UgPSBcIk0xMSAxNy41QzExIDE2LjY3IDExLjY3IDE2IDEyLjUgMTZDMTIuNzkgMTYgMTMuMDYgMTYuMDkgMTMuMjkgMTYuMjNMMjAuNzUgMTEuOTNDMjAuMzUgMTEuMjIgMTkuOSAxMC41NSAxOS40MSA5LjlDMTkuMjkgOS45NiAxOS4xNSAxMCAxOSAxMEMxOC40NSAxMCAxOCA5LjU1IDE4IDlDMTggOC44IDE4LjA4IDguNjIgMTguMTggOC40NkMxNi40NSA2LjY0IDE0LjM0IDUuMiAxMiA0LjI1QzExLjg1IDUuMjQgMTEgNiAxMCA2QzguOSA2IDggNS4xMSA4IDRDOCAzLjcyIDguMDYgMy40NSA4LjE2IDMuMjFDNy4zIDMuMDggNi40MSAzIDUuNSAzQzUuMzMgMyA1LjE3IDMgNSAzLjAzVjkuMDVDNi4xNCA5LjI4IDcgMTAuMjkgNyAxMS41UzYuMTQgMTMuNzIgNSAxMy45NVYyMUwxMSAxNy41NEMxMSAxNy41MyAxMSAxNy41IDExIDE3LjVNMTQgOUMxNS4xMSA5IDE2IDkuOSAxNiAxMVMxNS4xMSAxMyAxNCAxMyAxMiAxMi4xMSAxMiAxMSAxMi45IDkgMTQgOU05IDE2QzguNDUgMTYgOCAxNS41NSA4IDE1UzguNDUgMTQgOSAxNCAxMCAxNC40NSAxMCAxNSA5LjU1IDE2IDkgMTZNOSAxMEM4LjQ1IDEwIDggOS41NSA4IDlTOC40NSA4IDkgOCAxMCA4LjQ1IDEwIDkgOS41NSAxMCA5IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWVzZU9mZiA9IFwiTTMuNSAxLjdMMi4yIDNMNi4xIDYuOVY5QzcuMiA5LjIgOC4xIDEwLjIgOC4xIDExLjVTNy4yIDEzLjcgNi4xIDE0VjIxTDEyLjEgMTcuNUMxMi4xIDE2LjcgMTIuOCAxNiAxMy42IDE2QzEzLjkgMTYgMTQuMiAxNi4xIDE0LjQgMTYuMkwxNS4xIDE1LjhMMjAuMyAyMUwyMS42IDE5LjdMMy41IDEuN00xMC4xIDE2QzkuNiAxNiA5LjEgMTUuNSA5LjEgMTVTOS42IDE0IDEwLjEgMTQgMTEuMSAxNC41IDExLjEgMTUgMTAuNiAxNiAxMC4xIDE2TTEzLjggOS41TDkuOSA1LjZDMTAuMiA1LjkgMTAuNiA2IDExLjEgNkMxMi4xIDYgMTIuOSA1LjIgMTMuMSA0LjJDMTUuNCA1LjIgMTcuNiA2LjYgMTkuMyA4LjRDMTkuMiA4LjYgMTkuMSA4LjcgMTkuMSA4LjlDMTkuMSA5LjQgMTkuNiA5LjkgMjAuMSA5LjlDMjAuMyA5LjkgMjAuNCA5LjkgMjAuNSA5LjhDMjEgMTAuNCAyMS40IDExLjEgMjEuOCAxMS44TDE4LjMgMTMuOEwxNi42IDEyLjFDMTYuOSAxMS44IDE3LjEgMTEuMyAxNy4xIDEwLjhDMTcuMSA5LjcgMTYuMiA4LjggMTUuMSA4LjhDMTQuNiA5IDE0LjEgOS4yIDEzLjggOS41TTkuNSA1LjJMNy4zIDNDOCAzIDguNiAzLjEgOS4yIDMuMkM5LjEgMy41IDkuMSAzLjcgOS4xIDRDOS4xIDQuNCA5LjIgNC45IDkuNSA1LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlZkhhdCA9IFwiTTEyLjUsMS41QzEwLjczLDEuNSA5LjE3LDIuNjcgOC42Nyw0LjM3QzguMTQsNC4xMyA3LjU4LDQgNyw0QTQsNCAwIDAsMCAzLDhDMyw5LjgyIDQuMjQsMTEuNDEgNiwxMS44N1YxOUgxOVYxMS44N0MyMC43NiwxMS40MSAyMiw5LjgyIDIyLDhBNCw0IDAgMCwwIDE4LDRDMTcuNDIsNCAxNi44Niw0LjEzIDE2LjMzLDQuMzdDMTUuODMsMi42NyAxNC4yNywxLjUgMTIuNSwxLjVNMTIsMTAuNUgxM1YxNy41SDEyVjEwLjVNOSwxMi41SDEwVjE3LjVIOVYxMi41TTE1LDEyLjVIMTZWMTcuNUgxNVYxMi41TTYsMjBWMjFBMSwxIDAgMCwwIDcsMjJIMThBMSwxIDAgMCwwIDE5LDIxVjIwSDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlbWljYWxXZWFwb24gPSBcIk0xMSw3LjgzQzkuODMsNy40MiA5LDYuMyA5LDVBMywzIDAgMCwxIDEyLDJBMywzIDAgMCwxIDE1LDVDMTUsNi4zMSAxNC4xNiw3LjQyIDEzLDcuODNWMTAuNjRDMTIuNjgsMTAuNTUgMTIuMzUsMTAuNSAxMiwxMC41QzExLjY1LDEwLjUgMTEuMzIsMTAuNTUgMTEsMTAuNjRWNy44M00xOC4zLDIxLjFDMTcuMTYsMjAuNDUgMTYuNjIsMTkuMTggMTYuODQsMTcuOTZMMTQuNCwxNi41NUMxNC44OCwxNi4wOSAxNS4yNCwxNS41IDE1LjQsMTQuODJMMTcuODQsMTYuMjNDMTguNzgsMTUuNDIgMjAuMTYsMTUuMjYgMjEuMjksMTUuOTFDMjIuNzMsMTYuNzQgMjMuMjIsMTguNTcgMjIuMzksMjBDMjEuNTYsMjEuNDQgMTkuNzMsMjEuOTMgMTguMywyMS4xTTIuNywxNS45QzMuODMsMTUuMjUgNS4yMSwxNS40MiA2LjE1LDE2LjIyTDguNiwxNC44MUM4Ljc2LDE1LjUgOS4xMSwxNi4wOCA5LjYsMTYuNTRMNy4xNSwxNy45NUM3LjM4LDE5LjE3IDYuODMsMjAuNDUgNS43LDIxLjFDNC4yNiwyMS45MyAyLjQzLDIxLjQ0IDEuNiwyMEMwLjc3LDE4LjU3IDEuMjYsMTYuNzMgMi43LDE1LjlNMTQsMTRBMiwyIDAgMCwxIDEyLDE2QzEwLjg5LDE2IDEwLDE1LjEgMTAsMTRBMiwyIDAgMCwxIDEyLDEyQzEzLjExLDEyIDE0LDEyLjkgMTQsMTRNMTcsMTRMMTYuOTcsMTQuNTdMMTUuNSwxMy43MUMxNS40LDEyLjY0IDE0LjgzLDExLjcxIDE0LDExLjEyVjkuNDFDMTUuNzcsMTAuMTkgMTcsMTEuOTUgMTcsMTRNMTQuOTcsMTguMDNDMTQuMTQsMTguNjQgMTMuMTEsMTkgMTIsMTlDMTAuODksMTkgOS44NiwxOC42NCA5LjAzLDE4TDEwLjUsMTcuMTdDMTAuOTYsMTcuMzggMTEuNDcsMTcuNSAxMiwxNy41QzEyLjUzLDE3LjUgMTMuMDMsMTcuMzggMTMuNSwxNy4xN0wxNC45NywxOC4wM003LjAzLDE0LjU2TDcsMTRDNywxMS45NSA4LjIzLDEwLjE5IDEwLDkuNDJWMTEuMTNDOS4xNywxMS43MSA4LjYsMTIuNjQgOC41LDEzLjdMNy4wMywxNC41NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVzc0Jpc2hvcCA9IFwiTTE5LDIySDVWMjBIMTlWMjJNMTcuMTYsOC4yNkMxOC4yMiw5LjYzIDE4Ljg2LDExLjI4IDE5LDEzQzE5LDE1Ljc2IDE1Ljg3LDE4IDEyLDE4QzguMTMsMTggNSwxNS43NiA1LDEzQzUsMTAuNjIgNy4zMyw2LjM5IDEwLjQ2LDUuMjdDMTAuMTYsNC45MSAxMCw0LjQ2IDEwLDRBMiwyIDAgMCwxIDEyLDJBMiwyIDAgMCwxIDE0LDRDMTQsNC40NiAxMy44NCw0LjkxIDEzLjU0LDUuMjdDMTQuNCw1LjYgMTUuMTgsNi4xIDE1Ljg0LDYuNzRMMTEuMjksMTEuMjlMMTIuNzEsMTIuNzFMMTcuMTYsOC4yNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVzc0tpbmcgPSBcIk0xOSwyMkg1VjIwSDE5VjIyTTE3LDEwQzE1LjU4LDEwIDE0LjI2LDEwLjc3IDEzLjU1LDEySDEzVjdIMTZWNUgxM1YySDExVjVIOFY3SDExVjEySDEwLjQ1QzkuMzUsMTAuMDkgNi45LDkuNDMgNSwxMC41NEMzLjA3LDExLjY0IDIuNDIsMTQuMDkgMy41LDE2QzQuMjQsMTcuMjQgNS41NywxOCA3LDE4SDE3QTQsNCAwIDAsMCAyMSwxNEE0LDQgMCAwLDAgMTcsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlc3NLbmlnaHQgPSBcIk0xOSwyMkg1VjIwSDE5VjIyTTEzLDJWMkMxMS43NSwyIDEwLjU4LDIuNjIgOS44OSwzLjY2TDcsOEw5LDEwTDExLjA2LDguNjNDMTEuNSw4LjMyIDEyLjE0LDguNDQgMTIuNDUsOC45QzEyLjQ3LDguOTMgMTIuNSw4Ljk2IDEyLjUsOVY5QzEyLjgsOS41OSAxMi42OSwxMC4zIDEyLjIyLDEwLjc3TDcuNDIsMTUuNTdDNi44NywxNi4xMyA2Ljg3LDE3LjAzIDcuNDMsMTcuNThDNy42OSwxNy44NCA4LjA1LDE4IDguNDIsMThIMTdWNkE0LDQgMCAwLDAgMTMsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVzc1Bhd24gPSBcIk0xOSAyMkg1VjIwSDE5VjIyTTE2IDE4SDhMMTAuMTggMTBIOFY4SDEwLjcyTDEwLjc5IDcuNzRDMTAuMSA3LjQ0IDkuNTUgNi44OSA5LjI1IDYuMkM4LjU4IDQuNjggOS4yNyAyLjkxIDEwLjc5IDIuMjVDMTIuMzEgMS41OCAxNC4wOCAyLjI3IDE0Ljc0IDMuNzlDMTUuNDEgNS4zMSAxNC43MiA3LjA3IDEzLjIgNy43NEwxMy4yNyA4SDE2VjEwSDEzLjgyTDE2IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXNzUXVlZW4gPSBcIk0xOCwzQTIsMiAwIDAsMSAyMCw1QzIwLDUuODEgMTkuNSw2LjUgMTguODMsNi44MkwxNywxMy4xNVYxOEg3VjEzLjE1TDUuMTcsNi44MkM0LjUsNi41IDQsNS44MSA0LDVBMiwyIDAgMCwxIDYsM0EyLDIgMCAwLDEgOCw1QzgsNS41IDcuODIsNS45NSA3LjUsNi4zTDEwLjMsOS4zNUwxMC44Myw1LjYyQzEwLjMzLDUuMjYgMTAsNC42NyAxMCw0QTIsMiAwIDAsMSAxMiwyQTIsMiAwIDAsMSAxNCw0QzE0LDQuNjcgMTMuNjcsNS4yNiAxMy4xNyw1LjYyTDEzLjcsOS4zNUwxNi40Nyw2LjI5QzE2LjE4LDUuOTQgMTYsNS41IDE2LDVBMiwyIDAgMCwxIDE4LDNNNSwyMEgxOVYyMkg1VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXNzUm9vayA9IFwiTTUsMjBIMTlWMjJINVYyME0xNywyVjVIMTVWMkgxM1Y1SDExVjJIOVY1SDdWMkg1VjhIN1YxOEgxN1Y4SDE5VjJIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvdWJsZURvd24gPSBcIk0xNi41OSw1LjU5TDE4LDdMMTIsMTNMNiw3TDcuNDEsNS41OUwxMiwxMC4xN0wxNi41OSw1LjU5TTE2LjU5LDExLjU5TDE4LDEzTDEyLDE5TDYsMTNMNy40MSwxMS41OUwxMiwxNi4xN0wxNi41OSwxMS41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uRG91YmxlTGVmdCA9IFwiTTE4LjQxLDcuNDFMMTcsNkwxMSwxMkwxNywxOEwxOC40MSwxNi41OUwxMy44MywxMkwxOC40MSw3LjQxTTEyLjQxLDcuNDFMMTEsNkw1LDEyTDExLDE4TDEyLjQxLDE2LjU5TDcuODMsMTJMMTIuNDEsNy40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uRG91YmxlUmlnaHQgPSBcIk01LjU5LDcuNDFMNyw2TDEzLDEyTDcsMThMNS41OSwxNi41OUwxMC4xNywxMkw1LjU5LDcuNDFNMTEuNTksNy40MUwxMyw2TDE5LDEyTDEzLDE4TDExLjU5LDE2LjU5TDE2LjE3LDEyTDExLjU5LDcuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvdWJsZVVwID0gXCJNNy40MSwxOC40MUw2LDE3TDEyLDExTDE4LDE3TDE2LjU5LDE4LjQxTDEyLDEzLjgzTDcuNDEsMTguNDFNNy40MSwxMi40MUw2LDExTDEyLDVMMTgsMTFMMTYuNTksMTIuNDFMMTIsNy44M0w3LjQxLDEyLjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25Eb3duID0gXCJNNy40MSw4LjU4TDEyLDEzLjE3TDE2LjU5LDguNThMMTgsMTBMMTIsMTZMNiwxMEw3LjQxLDguNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvd25Cb3ggPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUMzLDIwLjExIDMuOSwyMSA1LDIxSDE5QzIwLjExLDIxIDIxLDIwLjExIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTIsMTUuNzFMNiw5LjcxTDcuNDEsOC4yOUwxMiwxMi44OEwxNi41OSw4LjI5TDE4LDkuNzFMMTIsMTUuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvd25Cb3hPdXRsaW5lID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWNUgxOVYxOU03LjQxLDguMjlMMTIsMTIuODhMMTYuNTksOC4yOUwxOCw5LjcxTDEyLDE1LjcxTDYsOS43MUw3LjQxLDguMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvd25DaXJjbGUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNNiwxMEwxMiwxNkwxOCwxMEwxNi42LDguNkwxMiwxMy4yTDcuNCw4LjZMNiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uRG93bkNpcmNsZU91dGxpbmUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMk02LDEwTDEyLDE2TDE4LDEwTDE2LjYsOC42TDEyLDEzLjJMNy40LDguNkw2LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25MZWZ0ID0gXCJNMTUuNDEsMTYuNThMMTAuODMsMTJMMTUuNDEsNy40MUwxNCw2TDgsMTJMMTQsMThMMTUuNDEsMTYuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkxlZnRCb3ggPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUMzLDIwLjExIDMuOSwyMSA1LDIxSDE5QzIwLjExLDIxIDIxLDIwLjExIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTUuNzEsMTYuNTlMMTQuMjksMThMOC4yOSwxMkwxNC4yOSw2TDE1LjcxLDcuNDFMMTEuMTIsMTJMMTUuNzEsMTYuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkxlZnRCb3hPdXRsaW5lID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWNUgxOVYxOU0xNS43MSw3LjQxTDExLjEyLDEyTDE1LjcxLDE2LjU5TDE0LjI5LDE4TDguMjksMTJMMTQuMjksNkwxNS43MSw3LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25MZWZ0Q2lyY2xlID0gXCJNMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyTTE1LjQsMTYuNkwxMC44LDEyTDE1LjQsNy40TDE0LDZMOCwxMkwxNCwxOEwxNS40LDE2LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkxlZnRDaXJjbGVPdXRsaW5lID0gXCJNMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyTTIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJNMTUuNCwxNi42TDEwLjgsMTJMMTUuNCw3LjRMMTQsNkw4LDEyTDE0LDE4TDE1LjQsMTYuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uUmlnaHQgPSBcIk04LjU5LDE2LjU4TDEzLjE3LDEyTDguNTksNy40MUwxMCw2TDE2LDEyTDEwLDE4TDguNTksMTYuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblJpZ2h0Qm94ID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTkuNzEsMThMOC4yOSwxNi41OUwxMi44OCwxMkw4LjI5LDcuNDFMOS43MSw2TDE1LjcxLDEyTDkuNzEsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblJpZ2h0Qm94T3V0bGluZSA9IFwiTTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QzMsMjAuMTEgMy45LDIxIDUsMjFIMTlDMjAuMTEsMjEgMjEsMjAuMTEgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xOSwxOUg1VjVIMTlWMTlNOC4yOSwxNi41OUwxMi44OCwxMkw4LjI5LDcuNDFMOS43MSw2TDE1LjcxLDEyTDkuNzEsMThMOC4yOSwxNi41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uUmlnaHRDaXJjbGUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTAsMThMMTYsMTJMMTAsNkw4LjYsNy40TDEzLjIsMTJMOC42LDE2LjZMMTAsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblJpZ2h0Q2lyY2xlT3V0bGluZSA9IFwiTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyTTguNiwxNi42TDEzLjIsMTJMOC42LDcuNEwxMCw2TDE2LDEyTDEwLDE4TDguNiwxNi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25UcmlwbGVEb3duID0gXCJNNy40MSwxNC41OEwxMiwxOS4xN0wxNi41OSwxNC41OEwxOCwxNkwxMiwyMkw2LDE2TDcuNDEsMTQuNThNNy40MSw4LjU4TDEyLDEzLjE3TDE2LjU5LDguNThMMTgsMTBMMTIsMTZMNiwxMEw3LjQxLDguNThNNy40MSwyLjU4TDEyLDcuMTdMMTYuNTksMi41OEwxOCw0TDEyLDEwTDYsNEw3LjQxLDIuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblRyaXBsZUxlZnQgPSBcIk05LjQyLDcuNDFMNC44MywxMkw5LjQyLDE2LjU5TDgsMThMMiwxMkw4LDZMOS40Miw3LjQxTTE1LjQyLDcuNDFMMTAuODMsMTJMMTUuNDIsMTYuNTlMMTQsMThMOCwxMkwxNCw2TDE1LjQyLDcuNDFNMjEuNDIsNy40MUwxNi44MywxMkwyMS40MiwxNi41OUwyMCwxOEwxNCwxMkwyMCw2TDIxLjQyLDcuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblRyaXBsZVJpZ2h0ID0gXCJNMTQuNTgsMTYuNTlMMTkuMTcsMTJMMTQuNTgsNy40MUwxNiw2TDIyLDEyTDE2LDE4TDE0LjU4LDE2LjU5TTguNTgsMTYuNTlMMTMuMTcsMTJMOC41OCw3LjQxTDEwLDZMMTYsMTJMMTAsMThMOC41OCwxNi41OU0yLjU4LDE2LjU5TDcuMTcsMTJMMi41OCw3LjQxTDQsNkwxMCwxMkw0LDE4TDIuNTgsMTYuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblRyaXBsZVVwID0gXCJNMTYuNTksOS40MkwxMiw0LjgzTDcuNDEsOS40Mkw2LDhMMTIsMkwxOCw4TDE2LjU5LDkuNDJNMTYuNTksMTUuNDJMMTIsMTAuODNMNy40MSwxNS40Mkw2LDE0TDEyLDhMMTgsMTRMMTYuNTksMTUuNDJNMTYuNTksMjEuNDJMMTIsMTYuODNMNy40MSwyMS40Mkw2LDIwTDEyLDE0TDE4LDIwTDE2LjU5LDIxLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25VcCA9IFwiTTcuNDEsMTUuNDFMMTIsMTAuODNMMTYuNTksMTUuNDFMMTgsMTRMMTIsOEw2LDE0TDcuNDEsMTUuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblVwQm94ID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE2LjU5LDE1LjcxTDEyLDExLjEyTDcuNDEsMTUuNzFMNiwxNC4yOUwxMiw4LjI5TDE4LDE0LjI5TDE2LjU5LDE1LjcxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25VcEJveE91dGxpbmUgPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUMzLDIwLjExIDMuOSwyMSA1LDIxSDE5QzIwLjExLDIxIDIxLDIwLjExIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTksMTlINVY1SDE5VjE5TTE2LjU5LDE1LjcxTDEyLDExLjEyTDcuNDEsMTUuNzFMNiwxNC4yOUwxMiw4LjI5TDE4LDE0LjI5TDE2LjU5LDE1LjcxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25VcENpcmNsZSA9IFwiTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk03LjQsMTUuNEwxMiwxMC44TDE2LjYsMTUuNEwxOCwxNEwxMiw4TDYsMTRMNy40LDE1LjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblVwQ2lyY2xlT3V0bGluZSA9IFwiTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyTTcuNCwxNS40TDEyLDEwLjhMMTYuNiwxNS40TDE4LDE0TDEyLDhMNiwxNEw3LjQsMTUuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGlsaUhvdCA9IFwiTTE3Ljc1LDlMMTguOTUsOC4yNEMxOS41OCw4LjU4IDIwLDkuMjQgMjAsMTBWMjEuNzVDMjAsMjEuNzUgMTIsMjAgMTIsMTFWMTBDMTIsOS4yNyAxMi4zOSw4LjYzIDEyLjk3LDguMjhMMTQuNDMsOUwxNiw4TDE3Ljc1LDlNMTQsMkMxNS41MywyIDE2LjgsMy4xNSAxNyw0LjY0QzE4LDQuOTMgMTguODEsNS42NyAxOS4yMiw2LjYzTDE3Ljc1LDcuNUwxNiw2LjVMMTQuNDMsNy41TDEyLjc2LDYuNjdDMTMuMTUsNS43MiAxMy45NSw1IDE0Ljk0LDQuNjZDMTQuOCw0LjI4IDE0LjQzLDQgMTQsNFYyTTEwLDEwQzEwLDE4IDEzLjYzLDE5Ljg0IDE2LDIxLjc1QzE2LDIxLjc1IDgsMjAgOCwxMVYxMEM4LDkuMjcgOC4zOSw4LjYzIDguOTcsOC4yOEwxMC4zLDguOTRDMTAuMTEsOS4yNSAxMCw5LjYxIDEwLDEwTTEwLjQzLDcuNUw4Ljc2LDYuNjdDOS4xNSw1LjcyIDkuOTUsNSAxMC45NCw0LjY2QzEwLjgsNC4yOCAxMC40Myw0IDEwLDRWMkMxMC43NywyIDExLjQ3LDIuMjkgMTIsMi43NlY0QzEyLjQzLDQgMTIuOCw0LjI4IDEyLjk0LDQuNjZDMTEuOTUsNSAxMS4xNSw1LjcyIDEwLjQzLDcuNU02LDEwQzYsMTggOS42MywxOS44NCAxMiwyMS43NUMxMiwyMS43NSA0LDIwIDQsMTFWMTBDNCw5LjI3IDQuMzksOC42MyA0Ljk3LDguMjhMNi4zLDguOTRDNi4xMSw5LjI1IDYsOS42MSA2LDEwTTYuNDMsNy41TDQuNzYsNi42N0M1LjE1LDUuNzIgNS45NSw1IDYuOTQsNC42NkM2LjgsNC4yOCA2LjQzLDQgNiw0VjJDNi43NywyIDcuNDcsMi4yOSA4LDIuNzZWNEM4LjQzLDQgOC44LDQuMjggOC45NCw0LjY2QzcuOTUsNSA3LjE1LDUuNzIgNi40Myw3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hpbGlNZWRpdW0gPSBcIk0xNS43NSw5TDE2Ljk1LDguMjRDMTcuNTgsOC41OCAxOCw5LjI0IDE4LDEwVjIxLjc1QzE4LDIxLjc1IDEwLDIwIDEwLDExVjEwQzEwLDkuMjcgMTAuMzksOC42MyAxMC45Nyw4LjI4TDEyLjQzLDlMMTQsOEwxNS43NSw5TTEyLDJDMTMuNTMsMiAxNC44LDMuMTUgMTUsNC42NEMxNiw0LjkzIDE2LjgxLDUuNjcgMTcuMjIsNi42M0wxNS43NSw3LjVMMTQsNi41TDEyLjQzLDcuNUwxMC43Niw2LjY3QzExLjE1LDUuNzIgMTEuOTUsNSAxMi45NCw0LjY2QzEyLjgsNC4yOCAxMi40Myw0IDEyLDRWMk04LDEwQzgsMTggMTEuNjMsMTkuODQgMTQsMjEuNzVDMTQsMjEuNzUgNiwyMCA2LDExVjEwQzYsOS4yNyA2LjM5LDguNjMgNi45Nyw4LjI4TDguMyw4Ljk0QzguMTEsOS4yNSA4LDkuNjEgOCwxME04LjQzLDcuNUw2Ljc2LDYuNjdDNy4xNSw1LjcyIDcuOTUsNSA4Ljk0LDQuNjZDOC44LDQuMjggOC40Myw0IDgsNFYyQzguNzcsMiA5LjQ3LDIuMjkgMTAsMi43NlY0QzEwLjQzLDQgMTAuOCw0LjI4IDEwLjk0LDQuNjZDOS45NSw1IDkuMTUsNS43MiA4LjQzLDcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGlsaU1pbGQgPSBcIk0xMy43NSw5TDE0Ljk1LDguMjRDMTUuNTgsOC41OCAxNiw5LjI0IDE2LDEwVjIxLjc1QzE2LDIxLjc1IDgsMjAgOCwxMVYxMEM4LDkuMjcgOC4zOSw4LjYzIDguOTcsOC4yOEwxMC40Myw5TDEyLDhMMTMuNzUsOU0xMCwyQzExLjUzLDIgMTIuOCwzLjE1IDEzLDQuNjRDMTQsNC45MyAxNC44MSw1LjY3IDE1LjIyLDYuNjNMMTMuNzUsNy41TDEyLDYuNUwxMC40Myw3LjVMOC43Niw2LjY3QzkuMTUsNS43MiA5Ljk1LDUgMTAuOTQsNC42NkMxMC44LDQuMjggMTAuNDMsNCAxMCw0VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hpbGlPZmYgPSBcIk0yMC44IDIyLjdMMTYgMTcuOVYyMS44QzE2IDIxLjggOCAyMCA4IDExVjEwIDkuOUwxLjEgM0wyLjQgMS43TDIyLjEgMjEuNEwyMC44IDIyLjdNMTMuOCA5TDEyIDhMMTEuNSA4LjNMMTYgMTIuOFYxMEMxNiA5LjIgMTUuNiA4LjYgMTUgOC4yTDEzLjggOU0xMiA2LjVMMTMuOCA3LjVMMTUuMyA2LjZDMTQuOSA1LjYgMTQuMSA0LjkgMTMuMSA0LjZDMTIuOCAzLjIgMTEuNSAyIDEwIDJWNEMxMC40IDQgMTAuOCA0LjMgMTAuOSA0LjdDMTAuMiA0LjkgOS42IDUuNCA5LjIgNkwxMC42IDcuNEwxMiA2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hpcCA9IFwiTTYsNEgxOFY1SDIxVjdIMThWOUgyMVYxMUgxOFYxM0gyMVYxNUgxOFYxN0gyMVYxOUgxOFYyMEg2VjE5SDNWMTdINlYxNUgzVjEzSDZWMTFIM1Y5SDZWN0gzVjVINlY0TTExLDE1VjE4SDEyVjE1SDExTTEzLDE1VjE4SDE0VjE1SDEzTTE1LDE1VjE4SDE2VjE1SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNocmlzdGlhbml0eSA9IFwiTTEwLjUsMkgxMy41VjhIMTlWMTFIMTMuNVYyMkgxMC41VjExSDVWOEgxMC41VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hyaXN0aWFuaXR5T3V0bGluZSA9IFwiTTE1LjUsNlYxSDguNVY2SDNWMTNIOC41VjIzSDE1LjVWMTNIMjFWNkgxNS41TTE5LDExSDEzLjVWMjFIMTAuNVYxMUg1VjhIMTAuNVYzSDEzLjVWOEgxOVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaHVyY2ggPSBcIk0xMSwySDEzVjRIMTVWNkgxM1Y5LjRMMjIsMTNWMTVMMjAsMTQuMlYyMkgxNFYxN0EyLDIgMCAwLDAgMTIsMTVBMiwyIDAgMCwwIDEwLDE3VjIySDRWMTQuMkwyLDE1VjEzTDExLDkuNFY2SDlWNEgxMVYyTTYsMjBIOFYxNUw3LDE0TDYsMTVWMjBNMTYsMjBIMThWMTVMMTcsMTRMMTYsMTVWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lnYXIgPSBcIk0xNiAxMC4ySDE0LjVBMiAyIDAgMCAxIDEyLjY1IDguMkExLjc4IDEuNzggMCAwIDEgMTQuNSA2LjQ1VjVBMy4zNSAzLjM1IDAgMSAwIDE0LjUgMTEuN0gxNkExLjkzIDEuOTMgMCAwIDEgMTggMTMuN1YxNUgxOS41VjEzLjM2QTMuMzEgMy4zMSAwIDAgMCAxNiAxMC4yTTE4LjgyIDcuNzNBMy4zNCAzLjM0IDAgMCAwIDE2LjUgMlYzLjVBMS44NSAxLjg1IDAgMSAxIDE2LjUgNy4yVjguN0E0IDQgMCAwIDEgMjAuNSAxMi43N1YxNUgyMlYxMi43NkE1LjU1IDUuNTUgMCAwIDAgMTguODUgNy43M00xOCAxNlYyMkgxOS41VjE2TTIwLjUgMTZWMjJIMjJWMTZNMTIgMTZWMTcuMjdBMiAyIDAgMCAxIDEyIDIwLjczVjIySDE3VjE2TTIuODggMTYuODhBMyAzIDAgMCAwIDUgMjJIMTBWMjAuNzNBMiAyIDAgMCAxIDEwIDE3LjI3VjE2SDVBMyAzIDAgMCAwIDIuODggMTYuODhNMTIgMTlBMSAxIDAgMSAxIDExIDE4QTEgMSAwIDAgMSAxMiAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaWdhck9mZiA9IFwiTTIwLjg0IDIyLjczTDE4LjExIDIwSDE4VjE5Ljg5TDE3IDE4Ljg5VjIwSDEyVjE4LjczQzEyLjMgMTguNTYgMTIuNTUgMTguMzEgMTIuNzMgMThDMTMuMjggMTcuMDUgMTIuOTYgMTUuODMgMTIgMTUuMjdWMTRIMTIuMTFMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xNC41IDkuN0gxNkMxNy4wNyA5LjY2IDE3Ljk2IDEwLjUgMTggMTEuNTZDMTggMTEuNjEgMTggMTEuNjUgMTggMTEuN1YxM0gxOS41VjExLjM2QzE5LjQyIDkuNTMgMTcuODggOC4xMiAxNi4wNSA4LjJMMTYgOC4ySDE0LjVDMTMuNDUgOC4xMiAxMi42NSA3LjI1IDEyLjY1IDYuMkMxMi42NyA1LjIyIDEzLjUgNC40MyAxNC40NiA0LjQ1TDE0LjUgNC40NVYzQzEyLjY1IDMgMTEuMTUgNC41IDExLjE1IDYuMzVTMTIuNjUgOS43IDE0LjUgOS43TTIwLjUgMTAuN0wyMC41IDEwLjc3VjEzSDIyVjEwLjc2QzIyIDguNjIgMjAuNzggNi42NiAxOC44NSA1LjczSDE4LjgyQzE5LjU4IDUgMTkuOSA0IDE5LjggM0gxOC4zMkMxOC4zNCAzLjExIDE4LjM1IDMuMjMgMTguMzUgMy4zNUMxOC4zNSA0LjM3IDE3LjUgNS4yIDE2LjUgNS4ySDE2LjVWNi43QzE4LjcxIDYuNyAyMC41IDguNSAyMC41IDEwLjdNOS4yNyAxNkM5LjQ1IDE1LjcgOS43IDE1LjQ1IDEwIDE1LjI3VjE0SDVDNC4yMSAxNCAzLjQ0IDE0LjMyIDIuODggMTQuODhDMS43MSAxNi4wNSAxLjcxIDE3Ljk1IDIuODggMTkuMTJDMy40NSAxOS42OCA0LjIxIDIwIDUgMjBIMTBWMTguNzNDOS4wNSAxOC4xOCA4LjcyIDE2Ljk1IDkuMjcgMTZNMTggMTQuOEwxOS41IDE2LjNWMTRIMThWMTQuOE0yMC41IDE3LjNMMjIgMTguOFYxNEgyMC41VjE3LjNNMTEgMTZDMTAuNDUgMTYgMTAgMTYuNDUgMTAgMTdTMTAuNDUgMTggMTEgMTggMTIgMTcuNTUgMTIgMTcgMTEuNTUgMTYgMTEgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lyY2xlQm94ID0gXCJNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjVDMjEgMy45IDIwLjExIDMgMTkgM00xMiAxNkM5Ljc5IDE2IDggMTQuMjEgOCAxMlM5Ljc5IDggMTIgOCAxNiA5Ljc5IDE2IDEyIDE0LjIxIDE2IDEyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZUJveE91dGxpbmUgPSBcIk0xOSA1VjE5SDVWNUgxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDhDOS43OSA4IDggOS43OSA4IDEyUzkuNzkgMTYgMTIgMTYgMTYgMTQuMjEgMTYgMTIgMTQuMjEgOCAxMiA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZURvdWJsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNE0xMiw2QTYsNiAwIDAsMCA2LDEyQTYsNiAwIDAsMCAxMiwxOEE2LDYgMCAwLDAgMTgsMTJBNiw2IDAgMCwwIDEyLDZNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZUVkaXRPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEySDIwQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNFYyTTE4Ljc4LDNDMTguNjEsMyAxOC40MywzLjA3IDE4LjMsMy4yTDE3LjA4LDQuNDFMMTkuNTgsNi45MUwyMC44LDUuN0MyMS4wNiw1LjQ0IDIxLjA2LDUgMjAuOCw0Ljc1TDE5LjI1LDMuMkMxOS4xMiwzLjA3IDE4Ljk1LDMgMTguNzgsM00xNi4zNyw1LjEyTDksMTIuNVYxNUgxMS41TDE4Ljg3LDcuNjJMMTYuMzcsNS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVFeHBhbmQgPSBcIk0xNiw0TDIwLDhWNE0yMCwxNkwxNiwyMEgyME04LDIwTDQsMTZWMjBNNCw4TDgsNEg0TTE2Ljk1LDcuMDVDMTQuMjIsNC4zMiA5Ljc4LDQuMzIgNy4wNSw3LjA1QzQuMzIsOS43OCA0LjMyLDE0LjIyIDcuMDUsMTYuOTVDOS43OCwxOS42OCAxNC4yMiwxOS42OCAxNi45NSwxNi45NUMxOS42OCwxNC4yMiAxOS42OCw5Ljc5IDE2Ljk1LDcuMDVNMTUuODUsMTUuODVDMTMuNzIsMTggMTAuMjgsMTggOC4xNSwxNS44NUM2LDEzLjcyIDYsMTAuMjggOC4xNSw4LjE1QzEwLjI4LDYgMTMuNzIsNiAxNS44NSw4LjE1QzE4LDEwLjI4IDE4LDEzLjcyIDE1Ljg1LDE1Ljg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZUhhbGYgPSBcIk0xMiAyQTEwIDEwIDAgMCAwIDIgMTJBMTAgMTAgMCAwIDAgMTIgMjJWMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVIYWxmRnVsbCA9IFwiTTEyIDJBMTAgMTAgMCAwIDAgMiAxMkExMCAxMCAwIDAgMCAxMiAyMkExMCAxMCAwIDAgMCAyMiAxMkExMCAxMCAwIDAgMCAxMiAyTTEyIDRBOCA4IDAgMCAxIDIwIDEyQTggOCAwIDAgMSAxMiAyMFY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZU1lZGl1bSA9IFwiTTEyLDhBNCw0IDAgMCwwIDgsMTJBNCw0IDAgMCwwIDEyLDE2QTQsNCAwIDAsMCAxNiwxMkE0LDQgMCAwLDAgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVNdWx0aXBsZSA9IFwiTTE1IDRBOCA4IDAgMSAxIDcgMTJBOCA4IDAgMCAxIDE1IDRNMyAxMkE2IDYgMCAwIDAgNyAxNy42NVYxOS43NEE4IDggMCAwIDEgNyA0LjI2VjYuMzVBNiA2IDAgMCAwIDMgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lyY2xlTXVsdGlwbGVPdXRsaW5lID0gXCJNMTUsNEE4LDggMCAwLDEgMjMsMTJBOCw4IDAgMCwxIDE1LDIwQTgsOCAwIDAsMSA3LDEyQTgsOCAwIDAsMSAxNSw0TTE1LDE4QTYsNiAwIDAsMCAyMSwxMkE2LDYgMCAwLDAgMTUsNkE2LDYgMCAwLDAgOSwxMkE2LDYgMCAwLDAgMTUsMThNMywxMkMzLDE0LjYxIDQuNjcsMTYuODMgNywxNy42NVYxOS43NEMzLjU1LDE4Ljg1IDEsMTUuNzMgMSwxMkMxLDguMjcgMy41NSw1LjE1IDcsNC4yNlY2LjM1QzQuNjcsNy4xNyAzLDkuMzkgMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w0LjA2IDUuOTVDMi43OCA3LjYzIDIgOS43MiAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTQuMjggMjIgMTYuMzcgMjEuMjMgMTguMDUgMTkuOTRMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMjBDNy41OCAyMCA0IDE2LjQyIDQgMTJDNCAxMC4yNyA0LjU2IDguNjggNS41IDcuMzhMMTYuNjIgMTguNUMxNS4zMiAxOS40NSAxMy43MyAyMCAxMiAyME04LjE3IDQuOTdMNi43MiAzLjVDOC4yNSAyLjU2IDEwLjA2IDIgMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyQzIyIDEzLjk0IDIxLjQ0IDE1Ljc1IDIwLjUgMTcuMjhMMTkuMDMgMTUuODNDMTkuNjUgMTQuNjkgMjAgMTMuMzkgMjAgMTJDMjAgNy41OCAxNi40MiA0IDEyIDRDMTAuNjEgNCA5LjMxIDQuMzUgOC4xNyA0Ljk3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZVNsaWNlMSA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJDNCAxNi40MiA3LjU4IDIwIDEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyQzIwIDcuNTggMTYuNDIgNCAxMiA0TTEyIDVDMTMuOTMgNSAxNS42OCA1Ljc4IDE2Ljk1IDcuMDVMMTIgMTJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVTbGljZTIgPSBcIk0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNE0xMiA1QzE1Ljg3IDUgMTkgOC4xMyAxOSAxMkgxMlY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZVNsaWNlMyA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJDNCAxNi40MiA3LjU4IDIwIDEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyQzIwIDcuNTggMTYuNDIgNCAxMiA0TTEyIDVDMTUuODcgNSAxOSA4LjEzIDE5IDEyQzE5IDEzLjkzIDE4LjIyIDE1LjY4IDE2Ljk1IDE2Ljk1TDEyIDEyVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lyY2xlU2xpY2U0ID0gXCJNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyQzIyIDE3LjUgMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMiA0QzcuNTggNCA0IDcuNTggNCAxMkM0IDE2LjQyIDcuNTggMjAgMTIgMjBDMTYuNDIgMjAgMjAgMTYuNDIgMjAgMTJDMjAgNy41OCAxNi40MiA0IDEyIDRNMTIgNUMxNS44NyA1IDE5IDguMTMgMTkgMTJDMTkgMTUuODcgMTUuODcgMTkgMTIgMTlWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVTbGljZTUgPSBcIk0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNE0xMiA1QzE1Ljg3IDUgMTkgOC4xMyAxOSAxMkMxOSAxNS44NyAxNS44NyAxOSAxMiAxOUMxMC4wNyAxOSA4LjMyIDE4LjIyIDcuMDUgMTYuOTVMMTIgMTJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVTbGljZTYgPSBcIk0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNE0xMiA1QzE1Ljg3IDUgMTkgOC4xMyAxOSAxMkMxOSAxNS44NyAxNS44NyAxOSAxMiAxOUM4LjEzIDE5IDUgMTUuODcgNSAxMkgxMlY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZVNsaWNlNyA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJDNCAxNi40MiA3LjU4IDIwIDEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyQzIwIDcuNTggMTYuNDIgNCAxMiA0TTEyIDVDMTUuODcgNSAxOSA4LjEzIDE5IDEyQzE5IDE1Ljg3IDE1Ljg3IDE5IDEyIDE5QzguMTMgMTkgNSAxNS44NyA1IDEyQzUgMTAuMDcgNS43OCA4LjMyIDcuMDUgNy4wNUwxMiAxMlY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZVNsaWNlOCA9IFwiTTEyIDVDMTUuODcgNSAxOSA4LjEzIDE5IDEyQzE5IDE1Ljg3IDE1Ljg3IDE5IDEyIDE5QzguMTMgMTkgNSAxNS44NyA1IDEyQzUgOC4xMyA4LjEzIDUgMTIgNU0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVTbWFsbCA9IFwiTTEyLDEwQTIsMiAwIDAsMCAxMCwxMkMxMCwxMy4xMSAxMC45LDE0IDEyLDE0QzEzLjExLDE0IDE0LDEzLjExIDE0LDEyQTIsMiAwIDAsMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjdWxhclNhdyA9IFwiTTEzLDExQTEsMSAwIDAsMSAxNCwxMkExLDEgMCAwLDEgMTMsMTNBMSwxIDAgMCwxIDEyLDEyQTEsMSAwIDAsMSAxMywxMU03Ljg2LDYuMjVDOS4xNCw0Ljg3IDEwLjk3LDQgMTMsNEMxNi41LDQgMTkuNDQsNi42MSAxOS45MywxMEgyMlYxMkgxNkEzLDMgMCAwLDAgMTMsOUEzLDMgMCAwLDAgMTAsMTJIMlYxMEgyLjA1QzIuMjUsNy43MyAzLjE0LDUuNjYgNC41LDRMNy44Niw2LjI1TTYuNzMsNy44OUw1LjA2LDYuNzdDNC41Myw3Ljc1IDQuMTgsOC44NCA0LjA2LDEwSDYuMDdDNi4xOCw5LjI1IDYuNCw4LjU0IDYuNzMsNy44OU03LjQsMTUuNEw2LDE0SDExLjc5QzEyLjAzLDE0LjQyIDEyLjUsMTQuNyAxMywxNC43QzEzLjUsMTQuNyAxMy45NywxNC40MiAxNC4yMSwxNEgyMFYxNS40QzE4LjM5LDE0LjQyIDE4LjQ2LDE1Ljc1IDE4LjQ2LDE1Ljc1VjE3LjcxTDE2LjUsMTkuNjdDMTYsMTcuOTIgMTUuMSwxOC45IDE1LjEsMTguOUwxMy43LDIwLjNIMTAuOUMxMS44OCwxOC42OSAxMC41NSwxOC43NiAxMC41NSwxOC43Nkg4LjU5TDYuNjMsMTYuOEM4LjM4LDE2LjMxIDcuNCwxNS40IDcuNCwxNS40WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpdHkgPSBcIk0xOSwxNUgxN1YxM0gxOU0xOSwxOUgxN1YxN0gxOU0xMyw3SDExVjVIMTNNMTMsMTFIMTFWOUgxM00xMywxNUgxMVYxM0gxM00xMywxOUgxMVYxN0gxM003LDExSDVWOUg3TTcsMTVINVYxM0g3TTcsMTlINVYxN0g3TTE1LDExVjVMMTIsMkw5LDVWN0gzVjIxSDIxVjExSDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpdHlWYXJpYW50ID0gXCJNMTksOVY3QTIsMiAwIDAsMCAxNyw1SDE2VjJIMTRWNUgxM0EyLDIgMCAwLDAgMTEsN1Y5QTIsMiAwIDAsMCA5LDExVjEySDVBMiwyIDAgMCwwIDMsMTRWMjJINlYyMEg4VjIySDEyVjIwSDE0VjIySDE2VjIwSDE4VjIySDIxVjExQTIsMiAwIDAsMCAxOSw5TTgsMThINlYxNkg4VjE4TTE0LDE4SDEyVjE2SDE0VjE4TTE0LDE0SDEyVjEySDE0VjE0TTEzLDlWN0gxN1Y5SDEzTTE4LDE4SDE2VjE2SDE4VjE4TTE4LDE0SDE2VjEySDE4VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpdHlWYXJpYW50T3V0bGluZSA9IFwiTTE1LDIzSDEzVjIxSDE1VjIzTTE5LDIxSDE3VjIzSDE5VjIxTTE1LDE3SDEzVjE5SDE1VjE3TTcsMjFINVYyM0g3VjIxTTcsMTdINVYxOUg3VjE3TTE5LDE3SDE3VjE5SDE5VjE3TTE1LDEzSDEzVjE1SDE1VjEzTTE5LDEzSDE3VjE1SDE5VjEzTTIxLDlBMiwyIDAgMCwxIDIzLDExVjIzSDIxVjExSDExVjIzSDlWMTVIM1YyM0gxVjE1QTIsMiAwIDAsMSAzLDEzSDlWMTFBMiwyIDAgMCwxIDExLDlWN0EyLDIgMCAwLDEgMTMsNUgxNVYxSDE3VjVIMTlBMiwyIDAgMCwxIDIxLDdWOU0xOSw5VjdIMTNWOUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmQgPSBcIk0xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkQWNjb3VudCA9IFwiTTE4LDE5SDZWMTcuNkM2LDE1LjYgMTAsMTQuNSAxMiwxNC41QzE0LDE0LjUgMTgsMTUuNiAxOCwxNy42TTEyLDdBMywzIDAgMCwxIDE1LDEwQTMsMyAwIDAsMSAxMiwxM0EzLDMgMCAwLDEgOSwxMEEzLDMgMCAwLDEgMTIsN00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFjY291bnRPdXRsaW5lID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIOS4xOEM5LjYsMS44NCAxMC43LDEgMTIsMUMxMy4zLDEgMTQuNCwxLjg0IDE0LjgyLDNIMTlNMTIsM0ExLDEgMCAwLDAgMTEsNEExLDEgMCAwLDAgMTIsNUExLDEgMCAwLDAgMTMsNEExLDEgMCAwLDAgMTIsM003LDdWNUg1VjE5SDE5VjVIMTdWN0g3TTEyLDlBMiwyIDAgMCwxIDE0LDExQTIsMiAwIDAsMSAxMiwxM0EyLDIgMCAwLDEgMTAsMTFBMiwyIDAgMCwxIDEyLDlNOCwxN1YxNkM4LDE0LjkgOS43OSwxNCAxMiwxNEMxNC4yMSwxNCAxNiwxNC45IDE2LDE2VjE3SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkQWxlcnQgPSBcIk0xMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1TTEzLDE0SDExVjhIMTNNMTMsMThIMTFWMTZIMTNNMTksM0gxNC44MkMxNC40LDEuODQgMTMuMywxIDEyLDFDMTAuNywxIDkuNiwxLjg0IDkuMTgsM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkQWxlcnRPdXRsaW5lID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIOS4xOEM5LjYsMS44NCAxMC43LDEgMTIsMUMxMy4zLDEgMTQuNCwxLjg0IDE0LjgyLDNIMTlNMTIsM0ExLDEgMCAwLDAgMTEsNEExLDEgMCAwLDAgMTIsNUExLDEgMCAwLDAgMTMsNEExLDEgMCAwLDAgMTIsM003LDdWNUg1VjE5SDE5VjVIMTdWN0g3TTExLDlIMTNWMTMuNUgxMVY5TTExLDE1SDEzVjE3SDExVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93RG93biA9IFwiTTEyLDE4TDcsMTNIMTBWOUgxNFYxM0gxN00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93RG93bk91dGxpbmUgPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0g5LjE4QzkuNiwxLjg0IDEwLjcsMSAxMiwxQzEzLjMsMSAxNC40LDEuODQgMTQuODIsM0gxOU0xMiwzQTEsMSAwIDAsMCAxMSw0QTEsMSAwIDAsMCAxMiw1QTEsMSAwIDAsMCAxMyw0QTEsMSAwIDAsMCAxMiwzTTcsN1Y1SDVWMTlIMTlWNUgxN1Y3SDdNMTIsMThMNywxM0gxMFY5SDE0VjEzSDE3TDEyLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93TGVmdCA9IFwiTTE2LDE1SDEyVjE4TDcsMTNMMTIsOFYxMUgxNk0xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93TGVmdE91dGxpbmUgPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0g5LjE4QzkuNiwxLjg0IDEwLjcsMSAxMiwxQzEzLjMsMSAxNC40LDEuODQgMTQuODIsM0gxOU0xMiwzQTEsMSAwIDAsMCAxMSw0QTEsMSAwIDAsMCAxMiw1QTEsMSAwIDAsMCAxMyw0QTEsMSAwIDAsMCAxMiwzTTcsN1Y1SDVWMTlIMTlWNUgxN1Y3SDdNNywxM0wxMiwxOFYxNUgxNlYxMUgxMlY4TDcsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkQXJyb3dSaWdodCA9IFwiTTE3LDEzTDEyLDE4VjE1SDhWMTFIMTJWOE0xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93UmlnaHRPdXRsaW5lID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIOS4xOEM5LjYsMS44NCAxMC43LDEgMTIsMUMxMy4zLDEgMTQuNCwxLjg0IDE0LjgyLDNIMTlNMTIsM0ExLDEgMCAwLDAgMTEsNEExLDEgMCAwLDAgMTIsNUExLDEgMCAwLDAgMTMsNEExLDEgMCAwLDAgMTIsM003LDdWNUg1VjE5SDE5VjVIMTdWN0g3TTE2LjkxLDEzTDExLjkxLDE4VjE1SDcuOTFWMTFIMTEuOTFWOEwxNi45MSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRBcnJvd1VwID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIOS4xOEM5LjYsMS44NCAxMC43LDEgMTIsMUMxMy4zLDEgMTQuNCwxLjg0IDE0LjgyLDNIMTlNMTIsOEw3LDEzSDEwVjE3SDE0VjEzSDE3TDEyLDhNMTIsM0ExLDEgMCAwLDAgMTEsNEExLDEgMCAwLDAgMTIsNUExLDEgMCAwLDAgMTMsNEExLDEgMCAwLDAgMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRBcnJvd1VwT3V0bGluZSA9IFwiTTEyLDhMMTcsMTNIMTRWMTdIMTBWMTNIN0wxMiw4TTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDkuMThDOS42LDEuODQgMTAuNywxIDEyLDFDMTMuMywxIDE0LjQsMS44NCAxNC44MiwzSDE5TTEyLDNBMSwxIDAgMCwwIDExLDRBMSwxIDAgMCwwIDEyLDVBMSwxIDAgMCwwIDEzLDRBMSwxIDAgMCwwIDEyLDNNNyw3VjVINVYxOUgxOVY1SDE3VjdIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRDaGVjayA9IFwiTTEwLDE3TDYsMTNMNy40MSwxMS41OUwxMCwxNC4xN0wxNi41OSw3LjU4TDE4LDlNMTIsM0ExLDEgMCAwLDEgMTMsNEExLDEgMCAwLDEgMTIsNUExLDEgMCAwLDEgMTEsNEExLDEgMCAwLDEgMTIsM00xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRDaGVja011bHRpcGxlID0gXCJNNCA3SDJWMjFDMiAyMi4xIDIuOSAyMyA0IDIzSDE4VjIxSDRNMjAgM0gxNi44QzE2LjQgMS44IDE1LjMgMSAxNCAxQzEyLjcgMSAxMS42IDEuOCAxMS4yIDNIOEM2LjkgMyA2IDMuOSA2IDVWMTdDNiAxOC4xIDYuOSAxOSA4IDE5SDIwQzIxLjEgMTkgMjIgMTguMSAyMiAxN1Y1QzIyIDMuOSAyMS4xIDMgMjAgM00xNCAzQzE0LjYgMyAxNSAzLjUgMTUgNEMxNSA0LjUgMTQuNSA1IDE0IDVDMTMuNSA1IDEzIDQuNSAxMyA0QzEzIDMuNSAxMy40IDMgMTQgM00xMi4zIDE1LjFMOSAxMS44TDEwLjQgMTAuNEwxMi4zIDEyLjNMMTcuNiA3TDE5IDguNFwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZENoZWNrTXVsdGlwbGVPdXRsaW5lID0gXCJNNCA3VjIxSDE4VjIzSDRDMi45IDIzIDIgMjIuMSAyIDIxVjdINE0xMi44IDE1LjM1TDkuNSAxMi4wNUwxMC45IDEwLjY1TDEyLjggMTIuNTVMMTcuMSA4LjI1TDE4LjUgOS42NUwxMi44IDE1LjM1TTIwIDNDMjEuMSAzIDIyIDMuOSAyMiA1VjE3QzIyIDE4LjEgMjEuMSAxOSAyMCAxOUg4QzYuOSAxOSA2IDE4LjEgNiAxN1Y1QzYgMy45IDYuOSAzIDggM0gxMS4xOEMxMS42IDEuODQgMTIuNyAxIDE0IDFDMTUuMyAxIDE2LjQgMS44NCAxNi44MiAzSDIwTTE0IDNDMTMuNDUgMyAxMyAzLjQ1IDEzIDRDMTMgNC41NSAxMy40NSA1IDE0IDVDMTQuNTUgNSAxNSA0LjU1IDE1IDRDMTUgMy40NSAxNC41NSAzIDE0IDNNMTAgN1Y1SDhWMTdIMjBWNUgxOFY3SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZENoZWNrT3V0bGluZSA9IFwiTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDNBMSwxIDAgMCwxIDEzLDRBMSwxIDAgMCwxIDEyLDVBMSwxIDAgMCwxIDExLDRBMSwxIDAgMCwxIDEyLDNNNyw3SDE3VjVIMTlWMTlINVY1SDdWN003LjUsMTMuNUw5LDEyTDExLDE0TDE1LjUsOS41TDE3LDExTDExLDE3TDcuNSwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZENsb2NrID0gXCJNMTYuNSAxNi4yNUwxOS4zNiAxNy45NEwxOC42MSAxOS4xNkwxNSAxN1YxMkgxNi41VjE2LjI1TTIzIDE2QzIzIDE5Ljg3IDE5Ljg3IDIzIDE2IDIzQzE0LjA5IDIzIDEyLjM3IDIyLjI0IDExLjExIDIxSDVDMy45IDIxIDMgMjAuMTEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM0g5LjE4QzkuNiAxLjg0IDEwLjcgMSAxMiAxUzE0LjQgMS44NCAxNC44MiAzSDE5QzIwLjExIDMgMjEgMy45IDIxIDVWMTEuMTFDMjIuMjQgMTIuMzcgMjMgMTQuMDkgMjMgMTZNMTEgNEMxMSA0LjU1IDExLjQ1IDUgMTIgNVMxMyA0LjU1IDEzIDQgMTIuNTUgMyAxMiAzIDExIDMuNDUgMTEgNE0yMSAxNkMyMSAxMy4yNCAxOC43NiAxMSAxNiAxMVMxMSAxMy4yNCAxMSAxNiAxMy4yNCAyMSAxNiAyMSAyMSAxOC43NiAyMSAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRDbG9ja091dGxpbmUgPSBcIk0yMSAxMS4xMVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMTQuODJDMTQuNCAxLjg0IDEzLjMgMSAxMiAxUzkuNiAxLjg0IDkuMTggM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDExLjExQzEyLjM3IDIyLjI0IDE0LjA5IDIzIDE2IDIzQzE5Ljg3IDIzIDIzIDE5Ljg3IDIzIDE2QzIzIDE0LjA5IDIyLjI0IDEyLjM3IDIxIDExLjExTTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNNSAxOVY1SDdWN0gxN1Y1SDE5VjkuNjhDMTguMDkgOS4yNSAxNy4wOCA5IDE2IDlDMTIuMTMgOSA5IDEyLjEzIDkgMTZDOSAxNy4wOCA5LjI1IDE4LjA5IDkuNjggMTlINU0xNiAyMUMxMy4yNCAyMSAxMSAxOC43NiAxMSAxNlMxMy4yNCAxMSAxNiAxMSAyMSAxMy4yNCAyMSAxNiAxOC43NiAyMSAxNiAyMU0xNi41IDE2LjI1TDE5LjM2IDE3Ljk0TDE4LjYxIDE5LjE2TDE1IDE3VjEySDE2LjVWMTYuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkRWRpdCA9IFwiTTIxLjA0IDEyLjEzQzIxLjE4IDEyLjEzIDIxLjMxIDEyLjE5IDIxLjQyIDEyLjNMMjIuNyAxMy41OEMyMi45MiAxMy43OSAyMi45MiAxNC4xNCAyMi43IDE0LjM1TDIxLjcgMTUuMzVMMTkuNjUgMTMuM0wyMC42NSAxMi4zQzIwLjc2IDEyLjE5IDIwLjkgMTIuMTMgMjEuMDQgMTIuMTNNMTkuMDcgMTMuODhMMjEuMTIgMTUuOTNMMTUuMDYgMjJIMTNWMTkuOTRMMTkuMDcgMTMuODhNMTkgM0MyMC4xIDMgMjEgMy45IDIxIDVWOUwxMSAxOVYyMUg1QzMuOSAyMSAzIDIwLjEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM0g5LjE4QzkuNiAxLjg0IDEwLjcgMSAxMiAxQzEzLjMgMSAxNC40IDEuODQgMTQuODIgM0gxOU0xMiAzQzExLjQ1IDMgMTEgMy40NSAxMSA0QzExIDQuNTUgMTEuNDUgNSAxMiA1QzEyLjU1IDUgMTMgNC41NSAxMyA0QzEzIDMuNDUgMTIuNTUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEVkaXRPdXRsaW5lID0gXCJNMjEuMDQgMTIuMTNDMjEuMTggMTIuMTMgMjEuMzEgMTIuMTkgMjEuNDIgMTIuM0wyMi43IDEzLjU4QzIyLjkyIDEzLjc5IDIyLjkyIDE0LjE0IDIyLjcgMTQuMzVMMjEuNyAxNS4zNUwxOS42NSAxMy4zTDIwLjY1IDEyLjNDMjAuNzYgMTIuMTkgMjAuOSAxMi4xMyAyMS4wNCAxMi4xM00xOS4wNyAxMy44OEwyMS4xMiAxNS45M0wxNS4wNiAyMkgxM1YxOS45NEwxOS4wNyAxMy44OE0xMSAxOUw5IDIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDkuMThDOS42IDEuODQgMTAuNyAxIDEyIDFDMTMuMyAxIDE0LjQgMS44NCAxNC44MiAzSDE5QzIwLjEgMyAyMSAzLjkgMjEgNVY5TDE5IDExVjVIMTdWN0g3VjVINVYxOUgxMU0xMiAzQzExLjQ1IDMgMTEgMy40NSAxMSA0QzExIDQuNTUgMTEuNDUgNSAxMiA1QzEyLjU1IDUgMTMgNC41NSAxMyA0QzEzIDMuNDUgMTIuNTUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEZpbGUgPSBcIk0xOSAzQzIwLjEgMyAyMSAzLjkgMjEgNVY5LjE3TDE5LjgzIDhIMTVDMTIuNzkgOCAxMSA5Ljc5IDExIDEyVjIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDkuMThDOS42IDEuODQgMTAuNyAxIDEyIDFDMTMuMyAxIDE0LjQgMS44NCAxNC44MiAzSDE5TTEyIDNDMTEuNDUgMyAxMSAzLjQ1IDExIDRDMTEgNC41NSAxMS40NSA1IDEyIDVDMTIuNTUgNSAxMyA0LjU1IDEzIDRDMTMgMy40NSAxMi41NSAzIDEyIDNNMTUgMjNDMTMuOSAyMyAxMyAyMi4xMSAxMyAyMVYxMkMxMyAxMC45IDEzLjkgMTAgMTUgMTBIMTlMMjMgMTRWMjFDMjMgMjIuMTEgMjIuMTEgMjMgMjEgMjNIMTVNMjEgMTQuODNMMTguMTcgMTJIMThWMTVIMjFWMTQuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkRmlsZU91dGxpbmUgPSBcIk0xNSAyM0MxMy45IDIzIDEzIDIyLjExIDEzIDIxVjEyQzEzIDEwLjkgMTMuOSAxMCAxNSAxMEgxOUwyMyAxNFYyMUMyMyAyMi4xMSAyMi4xMSAyMyAyMSAyM0gxNU0xNSAyMUgyMVYxNC44M0wxOC4xNyAxMkgxNVYyMU0xOSAzQzIwLjEgMyAyMSAzLjkgMjEgNVY5LjE3TDE5LjgzIDhIMTlWNUgxN1Y3SDdWNUg1VjE5SDExVjIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDkuMThDOS42IDEuODQgMTAuNyAxIDEyIDFDMTMuMyAxIDE0LjQgMS44NCAxNC44MiAzSDE5TTEyIDNDMTEuNDUgMyAxMSAzLjQ1IDExIDRDMTEgNC41NSAxMS40NSA1IDEyIDVDMTIuNTUgNSAxMyA0LjU1IDEzIDRDMTMgMy40NSAxMi41NSAzIDEyIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkRmxvdyA9IFwiTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDNBMSwxIDAgMCwxIDEzLDRBMSwxIDAgMCwxIDEyLDVBMSwxIDAgMCwxIDExLDRBMSwxIDAgMCwxIDEyLDNNMTUsMTlMMTEsMTVIMTRWOEgxNlYxNUgxOUwxNSwxOU0xMCwxNkg4VjlINUw5LDVMMTMsOUgxMFYxNlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEZsb3dPdXRsaW5lID0gXCJNMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNNyA3SDE3VjVIMTlWMTlINVY1SDdWN00xMCAxNkg4VjExSDZMOSA4TDEyIDExSDEwVjE2TTE0IDEwSDE2VjE1SDE4TDE1IDE4TDEyIDE1SDE0VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZExpc3QgPSBcIk0xOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM003IDhIOVYxMkg4VjlIN1Y4TTEwIDE3VjE4SDdWMTcuMDhMOSAxNUg3VjE0SDkuMjVDOS42NiAxNCAxMCAxNC4zNCAxMCAxNC43NUMxMCAxNC45NSA5LjkyIDE1LjE0IDkuNzkgMTUuMjdMOC4xMiAxN0gxME0xMSA0QzExIDMuNDUgMTEuNDUgMyAxMiAzUzEzIDMuNDUgMTMgNCAxMi41NSA1IDEyIDUgMTEgNC41NSAxMSA0TTE3IDE3SDEyVjE1SDE3VjE3TTE3IDExSDEyVjlIMTdWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkTGlzdE91dGxpbmUgPSBcIk0xOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzTTcgN0gxN1Y1SDE5VjE5SDVWNUg3VjdNMTIgMTdWMTVIMTdWMTdIMTJNMTIgMTFWOUgxN1YxMUgxMk04IDEyVjlIN1Y4SDlWMTJIOE05LjI1IDE0QzkuNjYgMTQgMTAgMTQuMzQgMTAgMTQuNzVDMTAgMTQuOTUgOS45MiAxNS4xNCA5Ljc5IDE1LjI3TDguMTIgMTdIMTBWMThIN1YxNy4wOEw5IDE1SDdWMTRIOS4yNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZE1pbnVzID0gXCJNMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNMTYgMTRIOFYxMkgxNlYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRNaW51c091dGxpbmUgPSBcIk0xOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xMSAzLjkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNNMTIgM0MxMi41NSAzIDEzIDMuNDUgMTMgNFMxMi41NSA1IDEyIDUgMTEgNC41NSAxMSA0IDExLjQ1IDMgMTIgM00xOSAxOUg1VjVIN1Y3SDE3VjVIMTlWMTlNOCAxMkgxNlYxNEg4VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZE11bHRpcGxlID0gXCJNNCA3SDJWMjFDMiAyMi4xIDIuOSAyMyA0IDIzSDE4VjIxSDRNMjAgM0gxNi44QzE2LjQgMS44IDE1LjMgMSAxNCAxQzEyLjcgMSAxMS42IDEuOCAxMS4yIDNIOEM2LjkgMyA2IDMuOSA2IDVWMTdDNiAxOC4xIDYuOSAxOSA4IDE5SDIwQzIxLjEgMTkgMjIgMTguMSAyMiAxN1Y1QzIyIDMuOSAyMS4xIDMgMjAgM00xNCAzQzE0LjYgMyAxNSAzLjUgMTUgNEMxNSA0LjUgMTQuNSA1IDE0IDVDMTMuNSA1IDEzIDQuNSAxMyA0QzEzIDMuNSAxMy40IDMgMTQgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRNdWx0aXBsZU91dGxpbmUgPSBcIk00IDdWMjFIMThWMjNINEMyLjkgMjMgMiAyMi4xIDIgMjFWN0g0TTIwIDNDMjEuMSAzIDIyIDMuOSAyMiA1VjE3QzIyIDE4LjEgMjEuMSAxOSAyMCAxOUg4QzYuOSAxOSA2IDE4LjEgNiAxN1Y1QzYgMy45IDYuOSAzIDggM0gxMS4xOEMxMS42IDEuODQgMTIuNyAxIDE0IDFDMTUuMyAxIDE2LjQgMS44NCAxNi44MiAzSDIwTTE0IDNDMTMuNDUgMyAxMyAzLjQ1IDEzIDRDMTMgNC41NSAxMy40NSA1IDE0IDVDMTQuNTUgNSAxNSA0LjU1IDE1IDRDMTUgMy40NSAxNC41NSAzIDE0IDNNMTAgN1Y1SDhWMTdIMjBWNUgxOFY3SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZE9mZiA9IFwiTTIxIDVDMjEgMy45IDIwLjExIDMgMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDYuMkwyMSAxNy44VjVNMTIgNUMxMS40NSA1IDExIDQuNTUgMTEgNFMxMS40NSAzIDEyIDMgMTMgMy40NSAxMyA0IDEyLjU1IDUgMTIgNU0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOS4xIDIxQzE5LjA3IDIxIDE5LjAzIDIxIDE5IDIxSDVDMy45IDIxIDMgMjAuMTEgMyAxOVY1QzMgNC45NyAzIDQuOTMgMyA0LjlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRPZmZPdXRsaW5lID0gXCJNMi4zOSAxLjczTDEuMTEgM0wzIDQuOUMzIDQuOTMgMyA0Ljk3IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzE5LjAzIDIxIDE5LjA3IDIxIDE5LjEgMjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTUgMTlWNi44OUwxNy4xMSAxOUg1TTE3IDdWNUgxOVYxNS44TDIxIDE3LjhWNUMyMSAzLjkgMjAuMTEgMyAxOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINi4yTDEwLjIgN0gxN00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZE91dGxpbmUgPSBcIk0xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTcsN0gxN1Y1SDE5VjE5SDVWNUg3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkUGxheSA9IFwiTTE5LDNIMTQuODJDMTQuMjUsMS40NCAxMi41MywwLjY0IDExLDEuMkMxMC4xNCwxLjUgOS41LDIuMTYgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTEwLDE3VjlMMTUsMTNMMTAsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkUGxheU11bHRpcGxlID0gXCJNNCAyMUgxOFYyM0g0QzIuOSAyMyAyIDIyLjEgMiAyMVY3SDRNMjIgNVYxN0MyMiAxOC4xIDIxLjEgMTkgMjAgMTlIOEM2LjkgMTkgNiAxOC4xIDYgMTdWNUM2IDMuOSA2LjkgMyA4IDNIMTEuMkMxMS42IDEuOCAxMi43IDEgMTQgMUMxNS4zIDEgMTYuNCAxLjggMTYuOCAzSDIwQzIxLjEgMyAyMiAzLjkgMjIgNU0xMyA0QzEzIDQuNSAxMy41IDUgMTQgNUMxNC41IDUgMTUgNC41IDE1IDRDMTUgMy41IDE0LjYgMyAxNCAzQzEzLjQgMyAxMyAzLjUgMTMgNE0xNyAxMkwxMiA4VjE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkUGxheU11bHRpcGxlT3V0bGluZSA9IFwiTTQgN1YyMUgxOFYyM0g0QzIuOSAyMyAyIDIyLjEgMiAyMVY3SDRNMjAgM0MyMS4xIDMgMjIgMy45IDIyIDVWMTdDMjIgMTguMSAyMS4xIDE5IDIwIDE5SDhDNi45IDE5IDYgMTguMSA2IDE3VjVDNiAzLjkgNi45IDMgOCAzSDExLjJDMTEuNiAxLjggMTIuNyAxIDE0IDFDMTUuMyAxIDE2LjQgMS44IDE2LjggM0gyME0xNCAzQzEzLjQgMyAxMyAzLjUgMTMgNEMxMyA0LjUgMTMuNCA1IDE0IDVDMTQuNiA1IDE1IDQuNiAxNSA0QzE1IDMuNCAxNC42IDMgMTQgM00xMCA3VjVIOFYxN0gyMFY1SDE4VjdNMTIgMTVWOUwxNyAxMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFBsYXlPdXRsaW5lID0gXCJNMTksM0gxNC44MkMxNC4yNSwxLjQ0IDEyLjUzLDAuNjQgMTEsMS4yQzEwLjE0LDEuNSA5LjUsMi4xNiA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDNBMSwxIDAgMCwxIDEzLDRBMSwxIDAgMCwxIDEyLDVBMSwxIDAgMCwxIDExLDRBMSwxIDAgMCwxIDEyLDNNNyw3SDE3VjVIMTlWMTlINVY1SDdWN00xMCwxN1Y5TDE1LDEzTDEwLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFBsdXMgPSBcIk0xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTEzLDEySDE2VjE0SDEzVjE3SDExVjE0SDhWMTJIMTFWOUgxM1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRQbHVzT3V0bGluZSA9IFwiTTE5IDNIMTQuODJDMTQuNCAxLjg0IDEzLjMgMSAxMiAxUzkuNiAxLjg0IDkuMTggM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjVDMjEgMy45IDIwLjExIDMgMTkgM00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzTTcgN0gxN1Y1SDE5VjE5SDVWNUg3VjdNMTMgMTJIMTZWMTRIMTNWMTdIMTFWMTRIOFYxMkgxMVY5SDEzVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFB1bHNlID0gXCJNMTksM0gxNC44MkMxNC40LDEuODQgMTMuMywxIDEyLDFDMTAuNywxIDkuNiwxLjg0IDkuMTgsM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTIsM0ExLDEgMCAwLDEgMTMsNEExLDEgMCAwLDEgMTIsNUExLDEgMCAwLDEgMTEsNEExLDEgMCAwLDEgMTIsM001LDEzLjQ2SDcuMTdMMTAuNSw3LjA4TDExLjQ0LDE0LjA1TDEzLjkzLDEwLjg2TDE2LjUzLDEzLjQ2SDE5VjE1SDE1Ljg5TDE0LjA3LDEzLjIxTDEwLjM4LDE3LjkyTDkuNjIsMTIuMTVMOC4xMSwxNUg1VjEzLjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFB1bHNlT3V0bGluZSA9IFwiTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDNBMSwxIDAgMCwxIDEzLDRBMSwxIDAgMCwxIDEyLDVBMSwxIDAgMCwxIDExLDRBMSwxIDAgMCwxIDEyLDNNNSwxNUg4LjExTDkuNjIsMTIuMTVMMTAuMzgsMTcuOTJMMTQuMDcsMTMuMjFMMTUuODksMTVIMTlWMTlINVYxNU0xOSwxMy40NkgxNi41M0wxMy45MywxMC44NkwxMS40NCwxNC4wNUwxMC41LDcuMDhMNy4xNywxMy40Nkg1VjVIN1Y2SDE3VjVIMTlWNkwxOSwxMy40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRSZW1vdmUgPSBcIk0xOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xMSAzLjkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNNMTIgM0MxMi41NSAzIDEzIDMuNDUgMTMgNFMxMi41NSA1IDEyIDUgMTEgNC41NSAxMSA0IDExLjQ1IDMgMTIgM00xNS41NCAxNS4xMkwxNC4xMiAxNi41NEwxMiAxNC40MUw5Ljg4IDE2LjU0TDguNDcgMTUuMTJMMTAuNTkgMTNMOC40NyAxMC44OEw5Ljg4IDkuNDdMMTIgMTEuNTlMMTQuMTIgOS40N0wxNS41NCAxMC44OEwxMy40MSAxM0wxNS41NCAxNS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRSZW1vdmVPdXRsaW5lID0gXCJNMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNMTkgMTlINVY1SDdWN0gxN1Y1SDE5VjE5TTE1LjU0IDEwLjg4TDEzLjQxIDEzTDE1LjU0IDE1LjEyTDE0LjEyIDE2LjU0TDEyIDE0LjQxTDkuODggMTYuNTRMOC40NyAxNS4xMkwxMC41OSAxM0w4LjQ3IDEwLjg4TDkuODggOS40N0wxMiAxMS41OUwxNC4xMiA5LjQ3TDE1LjU0IDEwLjg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFNlYXJjaCA9IFwiTTExLjkgMTAuOUMxNC40MSA4LjQgMTguNDUgOC4zNyAyMSAxMC44MlY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMTQuODJDMTQuNCAxLjg0IDEzLjMgMSAxMiAxUzkuNiAxLjg0IDkuMTggM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDEzLjA2QzEyLjY1IDIwLjc0IDEyLjI2IDIwLjQ1IDExLjkgMjAuMUM5LjM3IDE3LjU2IDkuMzcgMTMuNDQgMTEuOSAxMC45TTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNMjAuMzEgMTcuOUMyMC43NSAxNy4yMSAyMSAxNi4zOCAyMSAxNS41QzIxIDEzIDE5IDExIDE2LjUgMTFTMTIgMTMgMTIgMTUuNSAxNCAyMCAxNi41IDIwQzE3LjM3IDIwIDE4LjE5IDE5Ljc1IDE4Ljg4IDE5LjMyTDIyIDIyLjM5TDIzLjM5IDIxTDIwLjMxIDE3LjlNMTYuNSAxOEMxNS4xMiAxOCAxNCAxNi44OCAxNCAxNS41UzE1LjEyIDEzIDE2LjUgMTMgMTkgMTQuMTIgMTkgMTUuNSAxNy44OCAxOCAxNi41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFNlYXJjaE91dGxpbmUgPSBcIk0xMS4wMyAxOUg1VjVIN1Y3SDE3VjVIMTlWOS41QzE5LjcyIDkuOCAyMC40IDEwLjI0IDIxIDEwLjgyVjVDMjEgMy45IDIwLjExIDMgMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTMuMDZDMTIuNjUgMjAuNzQgMTIuMjYgMjAuNDUgMTEuOSAyMC4xQzExLjU3IDE5Ljc2IDExLjI3IDE5LjM5IDExLjAzIDE5TTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNMjAuMzEgMTcuOUMyMC43NSAxNy4yMSAyMSAxNi4zOCAyMSAxNS41QzIxIDEzIDE5IDExIDE2LjUgMTFTMTIgMTMgMTIgMTUuNSAxNCAyMCAxNi41IDIwQzE3LjM3IDIwIDE4LjE5IDE5Ljc1IDE4Ljg4IDE5LjMyTDIyIDIyLjM5TDIzLjM5IDIxTDIwLjMxIDE3LjlNMTYuNSAxOEMxNS4xMiAxOCAxNCAxNi44OCAxNCAxNS41UzE1LjEyIDEzIDE2LjUgMTMgMTkgMTQuMTIgMTkgMTUuNSAxNy44OCAxOCAxNi41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFRleHQgPSBcIk0xNyw5SDdWN0gxN00xNywxM0g3VjExSDE3TTE0LDE3SDdWMTVIMTRNMTIsM0ExLDEgMCAwLDEgMTMsNEExLDEgMCAwLDEgMTIsNUExLDEgMCAwLDEgMTEsNEExLDEgMCAwLDEgMTIsM00xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRUZXh0TXVsdGlwbGUgPSBcIk0yMCAzSDE2LjhDMTYuNCAxLjggMTUuMyAxIDE0IDFDMTIuNyAxIDExLjYgMS44IDExLjIgM0g4QzYuOSAzIDYgMy45IDYgNVYxN0M2IDE4LjEgNi45IDE5IDggMTlIMjBDMjEuMSAxOSAyMiAxOC4xIDIyIDE3VjVDMjIgMy45IDIxLjEgMyAyMCAzTTE0IDNDMTQuNiAzIDE1IDMuNSAxNSA0QzE1IDQuNSAxNC41IDUgMTQgNUMxMy41IDUgMTMgNC41IDEzIDRDMTMgMy41IDEzLjQgMyAxNCAzTTE2IDE0SDlWMTJIMTZNMTkgMTBIOVY4SDE5TTQgMjFIMThWMjNINEMyLjkgMjMgMiAyMi4xIDIgMjFWN0g0XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkVGV4dE11bHRpcGxlT3V0bGluZSA9IFwiTTQgN1YyMUgxOFYyM0g0QzIuOSAyMyAyIDIyLjEgMiAyMVY3SDRNMjAgM0MyMS4xIDMgMjIgMy45IDIyIDVWMTdDMjIgMTguMSAyMS4xIDE5IDIwIDE5SDhDNi45IDE5IDYgMTguMSA2IDE3VjVDNiAzLjkgNi45IDMgOCAzSDExLjE4QzExLjYgMS44NCAxMi43IDEgMTQgMUMxNS4zIDEgMTYuNCAxLjg0IDE2LjgyIDNIMjBNMTQgM0MxMy40NSAzIDEzIDMuNDUgMTMgNEMxMyA0LjU1IDEzLjQ1IDUgMTQgNUMxNC41NSA1IDE1IDQuNTUgMTUgNEMxNSAzLjQ1IDE0LjU1IDMgMTQgM00xMCA3VjVIOFYxN0gyMFY1SDE4VjdNMTUgMTVIMTBWMTNIMTVNMTggMTFIMTBWOUgxOFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRUZXh0T2ZmID0gXCJNMi4zOSAxLjczTDEuMTEgM0wzIDQuOUMzIDQuOTMgMyA0Ljk3IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzE5LjAzIDIxIDE5LjA3IDIxIDE5LjEgMjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTcgMTFIOS4xMUwxMS4xMSAxM0g3VjExTTE0IDE3SDdWMTVIMTMuMTFMMTQgMTUuODlWMTdNMTcgN1Y5SDEyLjJMMTQuMiAxMUgxN1YxM0gxNi4yTDIxIDE3LjhWNUMyMSAzLjkgMjAuMTEgMyAxOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINi4yTDEwLjIgN0gxN00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFRleHRPZmZPdXRsaW5lID0gXCJNMTcgN1Y1SDE5VjE1LjhMMjEgMTcuOFY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMTQuODJDMTQuMjUgMS40NCAxMi41MyAuNjQgMTEgMS4yQzEwLjE0IDEuNSA5LjUgMi4xNiA5LjE4IDNINi4yTDEwLjIgN0gxN00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzTTE0LjIgMTFMMTIuMiA5SDE3VjExSDE0LjJNMi4zOSAxLjczTDEuMTEgM0wzIDQuOUMzIDQuOTMgMyA0Ljk3IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzE5LjAzIDIxIDE5LjA3IDIxIDE5LjEgMjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTUgMTlWNi44OUw3LjExIDlIN1YxMUg5LjExTDExLjExIDEzSDdWMTVIMTMuMTFMMTcuMTEgMTlINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRUZXh0T3V0bGluZSA9IFwiTTE5LDNIMTQuODJDMTQuMjUsMS40NCAxMi41MywwLjY0IDExLDEuMkMxMC4xNCwxLjUgOS41LDIuMTYgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTcsN0gxN1Y1SDE5VjE5SDVWNUg3VjdNMTcsMTFIN1Y5SDE3VjExTTE1LDE1SDdWMTNIMTVWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkVGV4dFBsYXkgPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjEzLjM0QzIwLjM2LDEzLjExIDE5LjY4LDEzIDE5LDEzQzE1LjY4LDEzIDEzLDE1LjY5IDEzLDE5QzEzLDE5LjY4IDEzLjExLDIwLjM2IDEzLjM0LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDkuMThDOS41LDIuMTYgMTAuMTQsMS41IDExLDEuMkMxMi41MywwLjY0IDE0LjI1LDEuNDQgMTQuODIsM0gxOU0xMiwzQTEsMSAwIDAsMCAxMSw0QTEsMSAwIDAsMCAxMiw1QTEsMSAwIDAsMCAxMyw0QTEsMSAwIDAsMCAxMiwzTTExLDE3VjE1SDdWMTdIMTFNMTMsMTNWMTFIN1YxM0gxM00xNyw5VjdIN1Y5SDE3TTE3LDE2TDIyLDE5TDE3LDIyVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFRleHRQbGF5T3V0bGluZSA9IFwiTTE5LDNIMTQuODJDMTQuMjUsMS40NCAxMi41MywwLjY0IDExLDEuMkMxMC4xNCwxLjUgOS41LDIuMTYgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxNVYxOUg1VjVIN1Y3SDE3VjVIMTlWMTRIMjFWNUEyLDIgMCAwLDAgMTksM00xMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1TTE3LDE2VjIyTDIyLDE5TDE3LDE2TTE3LDExSDdWOUgxN1YxMU0xNSwxNUg3VjEzSDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFRleHRTZWFyY2ggPSBcIk0xMC4xOCAxN0g3VjE1SDEwQzEwLjA4IDE0LjMyIDEwLjIzIDEzLjY0IDEwLjUgMTNIN1YxMUgxMS44MkMxMS44NSAxMC45NyAxMS44NyAxMC45NCAxMS45IDEwLjlDMTMuMTcgOS42NCAxNC44NCA5IDE2LjUgOUg3VjdIMTdWOUgxNi41QzE4LjEyIDkgMTkuNzQgOS42MSAyMSAxMC44MlY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMTQuODJDMTQuNCAxLjg0IDEzLjMgMSAxMiAxUzkuNiAxLjg0IDkuMTggM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDEzLjA2QzEyLjY1IDIwLjc0IDEyLjI2IDIwLjQ1IDExLjkgMjAuMUMxMSAxOS4yMSAxMC40NSAxOC4xMyAxMC4xOCAxN00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzTTIwLjMxIDE3LjlDMjAuNzUgMTcuMjEgMjEgMTYuMzggMjEgMTUuNUMyMSAxMyAxOSAxMSAxNi41IDExUzEyIDEzIDEyIDE1LjUgMTQgMjAgMTYuNSAyMEMxNy4zNyAyMCAxOC4xOSAxOS43NSAxOC44OCAxOS4zMkwyMiAyMi4zOUwyMy4zOSAyMUwyMC4zMSAxNy45TTE2LjUgMThDMTUuMTIgMTggMTQgMTYuODggMTQgMTUuNVMxNS4xMiAxMyAxNi41IDEzIDE5IDE0LjEyIDE5IDE1LjUgMTcuODggMTggMTYuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRUZXh0U2VhcmNoT3V0bGluZSA9IFwiTTE3IDlIMTYuNSAxN003IDE1SDEwQzEwLjA4IDE0LjMyIDEwLjIzIDEzLjY0IDEwLjUgMTNIN1YxNU0xMS45IDEwLjlDMTMuMTcgOS42NCAxNC44NCA5IDE2LjUgOUg3VjExSDExLjgyQzExLjg1IDEwLjk3IDExLjg3IDEwLjk0IDExLjkgMTAuOU0xMS45IDIwLjFDMTIuMjYgMjAuNDUgMTIuNjUgMjAuNzQgMTMuMDYgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDkuMThDOS41IDIuMTYgMTAuMTQgMS41IDExIDEuMkMxMi41MyAuNjQgMTQuMjUgMS40NCAxNC44MiAzSDE5QzIwLjExIDMgMjEgMy45IDIxIDVWMTAuODJDMjAuNCAxMC4yNCAxOS43MiA5LjggMTkgOS41VjVIMTdWN0g3VjVINVYxOUgxMS4wM0MxMS4yNyAxOS4zOSAxMS41NyAxOS43NiAxMS45IDIwLjFNMTEgNEMxMSA0LjU1IDExLjQ1IDUgMTIgNVMxMyA0LjU1IDEzIDQgMTIuNTUgMyAxMiAzIDExIDMuNDUgMTEgNE0yMy4zOSAyMUwyMiAyMi4zOUwxOC44OCAxOS4zMkMxOC4xOSAxOS43NSAxNy4zNyAyMCAxNi41IDIwQzE0IDIwIDEyIDE4IDEyIDE1LjVTMTQgMTEgMTYuNSAxMSAyMSAxMyAyMSAxNS41QzIxIDE2LjM4IDIwLjc1IDE3LjIxIDIwLjMxIDE3LjlMMjMuMzkgMjFNMTkgMTUuNUMxOSAxNC4xMiAxNy44OCAxMyAxNi41IDEzUzE0IDE0LjEyIDE0IDE1LjUgMTUuMTIgMTggMTYuNSAxOCAxOSAxNi44OCAxOSAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBweSA9IFwiTTE1LDE1LjVBMi41LDIuNSAwIDAsMSAxMi41LDE4QTIuNSwyLjUgMCAwLDEgMTAsMTUuNVYxMy43NUEwLjc1LDAuNzUgMCAwLDEgMTAuNzUsMTNBMC43NSwwLjc1IDAgMCwxIDExLjUsMTMuNzVWMTUuNUExLDEgMCAwLDAgMTIuNSwxNi41QTEsMSAwIDAsMCAxMy41LDE1LjVWMTEuODlDMTIuNjMsMTEuNjEgMTIsMTAuODcgMTIsMTBDMTIsOC45IDEzLDggMTQuMjUsOEMxNS41LDggMTYuNSw4LjkgMTYuNSwxMEMxNi41LDEwLjg3IDE1Ljg3LDExLjYxIDE1LDExLjg5VjE1LjVNOC4yNSw4QzkuNSw4IDEwLjUsOC45IDEwLjUsMTBDMTAuNSwxMC44NyA5Ljg3LDExLjYxIDksMTEuODlWMTcuMjVBMy4yNSwzLjI1IDAgMCwwIDEyLjI1LDIwLjVBMy4yNSwzLjI1IDAgMCwwIDE1LjUsMTcuMjVWMTMuNzVBMC43NSwwLjc1IDAgMCwxIDE2LjI1LDEzQTAuNzUsMC43NSAwIDAsMSAxNywxMy43NVYxNy4yNUE0Ljc1LDQuNzUgMCAwLDEgMTIuMjUsMjJBNC43NSw0Ljc1IDAgMCwxIDcuNSwxNy4yNVYxMS44OUM2LjYzLDExLjYxIDYsMTAuODcgNiwxMEM2LDguOSA3LDggOC4yNSw4TTEwLjA2LDYuMTNMOS42Myw3LjU5QzkuMjIsNy4zNyA4Ljc1LDcuMjUgOC4yNSw3LjI1QzcuMzQsNy4yNSA2LjUzLDcuNjUgNi4wMyw4LjI3TDQuODMsNy4zN0M1LjQ2LDYuNTcgNi40MSw2IDcuNSw1LjgxVjUuNzVBMy43NSwzLjc1IDAgMCwxIDExLjI1LDJBMy43NSwzLjc1IDAgMCwxIDE1LDUuNzVWNS44MUMxNi4wOSw2IDE3LjA0LDYuNTcgMTcuNjcsNy4zN0wxNi40Nyw4LjI3QzE1Ljk3LDcuNjUgMTUuMTYsNy4yNSAxNC4yNSw3LjI1QzEzLjc1LDcuMjUgMTMuMjgsNy4zNyAxMi44Nyw3LjU5TDEyLjQ0LDYuMTNDMTIuNzcsNiAxMy4xMyw1Ljg3IDEzLjUsNS44MVY1Ljc1QzEzLjUsNC41IDEyLjUsMy41IDExLjI1LDMuNUMxMCwzLjUgOSw0LjUgOSw1Ljc1VjUuODFDOS4zNyw1Ljg3IDkuNzMsNiAxMC4wNiw2LjEzTTE0LjI1LDkuMjVDMTMuNyw5LjI1IDEzLjI1LDkuNTkgMTMuMjUsMTBDMTMuMjUsMTAuNDEgMTMuNywxMC43NSAxNC4yNSwxMC43NUMxNC44LDEwLjc1IDE1LjI1LDEwLjQxIDE1LjI1LDEwQzE1LjI1LDkuNTkgMTQuOCw5LjI1IDE0LjI1LDkuMjVNOC4yNSw5LjI1QzcuNyw5LjI1IDcuMjUsOS41OSA3LjI1LDEwQzcuMjUsMTAuNDEgNy43LDEwLjc1IDguMjUsMTAuNzVDOC44LDEwLjc1IDkuMjUsMTAuNDEgOS4yNSwxMEM5LjI1LDkuNTkgOC44LDkuMjUgOC4yNSw5LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTYuMiwxNi4yTDExLDEzVjdIMTIuNVYxMi4yTDE3LDE0LjlMMTYuMiwxNi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrQWxlcnQgPSBcIk0yMCAxMkgyMlYxOEgyMFYxMk0yMCAyMEgyMlYyMkgyMFYyME0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyQzE0LjMgMjIgMTYuMyAyMS4yIDE4IDIwVjEwSDIxLjhDMjAuOSA1LjQgMTYuOCAyIDEyIDJNMTYuMiAxNi4yTDExIDEzVjdIMTIuNVYxMi4yTDE3IDE0LjlMMTYuMiAxNi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrQWxlcnRPdXRsaW5lID0gXCJNMTEgN1YxM0wxNi4yIDE2LjFMMTcgMTQuOUwxMi41IDEyLjJWN0gxMU0yMCAxMlYxOEgyMlYxMkgyME0yMCAyMFYyMkgyMlYyMEgyME0xOCAyMEMxNi4zIDIxLjMgMTQuMyAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJTNi41IDIgMTIgMkMxNi44IDIgMjAuOSA1LjQgMjEuOCAxMEgxOS43QzE4LjggNi42IDE1LjcgNCAxMiA0QzcuNiA0IDQgNy42IDQgMTJTNy42IDIwIDEyIDIwQzE0LjQgMjAgMTYuNSAxOC45IDE4IDE3LjNWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tDaGVjayA9IFwiTTIzLjUgMTdMMTguNSAyMkwxNSAxOC41TDE2LjUgMTdMMTguNSAxOUwyMiAxNS41TDIzLjUgMTdNMTMgMTlDMTMgMTcuNSAxMy41IDE2LjIgMTQuNCAxNS4xTDExIDEzVjdIMTIuNVYxMi4yTDE1LjYgMTQuMUMxNi42IDEzLjQgMTcuNyAxMyAxOSAxM0MyMCAxMyAyMSAxMy4zIDIxLjggMTMuN0MyMS45IDEzLjEgMjIgMTIuNiAyMiAxMkMyMiA2LjUgMTcuNSAyIDEyIDJTMiA2LjUgMiAxMiA2LjUgMjIgMTIgMjJDMTIuNiAyMiAxMy4yIDIxLjkgMTMuNyAyMS44QzEzLjMgMjEgMTMgMjAgMTMgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tDaGVja091dGxpbmUgPSBcIk0yMy41IDE3TDE4LjUgMjJMMTUgMTguNUwxNi41IDE3TDE4LjUgMTlMMjIgMTUuNUwyMy41IDE3TTEzLjEgMTkuOUMxMi43IDIwIDEyLjQgMjAgMTIgMjBDNy42IDIwIDQgMTYuNCA0IDEyUzcuNiA0IDEyIDQgMjAgNy42IDIwIDEyQzIwIDEyLjQgMjAgMTIuNyAxOS45IDEzLjFDMjAuNiAxMy4yIDIxLjIgMTMuNCAyMS44IDEzLjdDMjEuOSAxMy4xIDIyIDEyLjYgMjIgMTJDMjIgNi41IDE3LjUgMiAxMiAyUzIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxMi42IDIyIDEzLjIgMjEuOSAxMy43IDIxLjhDMTMuNCAyMS4zIDEzLjIgMjAuNiAxMy4xIDE5LjlNMTUuNiAxNC4xTDEyLjUgMTIuM1Y3SDExVjEzTDE0LjUgMTUuMUMxNC44IDE0LjcgMTUuMiAxNC40IDE1LjYgMTQuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja0RpZ2l0YWwgPSBcIk0yLDZBMiwyIDAgMCwwIDAsOFYxNkEyLDIgMCAwLDAgMiwxOEgyMkEyLDIgMCAwLDAgMjQsMTZWOEEyLDIgMCAwLDAgMjIsNk0yLDhIMjJWMTZIMk0zLDlWMTAuNUg2LjI1TDMsMTVINC43NUw4LDEwLjVWOU05LjI1LDlWMTAuNUgxMC43NVY5TTEyLDlWMTAuNUgxMy41VjE1SDE1VjlNMTcsOUExLDEgMCAwLDAgMTYsMTBWMTRBMSwxIDAgMCwwIDE3LDE1SDIwQTEsMSAwIDAsMCAyMSwxNFYxMEExLDEgMCAwLDAgMjAsOU0xNy41LDEwLjVIMTkuNVYxMy41SDE3LjVNOS4yNSwxMy41VjE1SDEwLjc1VjEzLjVcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja0VuZCA9IFwiTTEyLDFDOC4xNCwxIDUsNC4xNCA1LDhBNyw3IDAgMCwwIDEyLDE1QzE1Ljg2LDE1IDE5LDExLjg3IDE5LDhDMTksNC4xNCAxNS44NiwxIDEyLDFNMTIsMy4xNUMxNC42NywzLjE1IDE2Ljg1LDUuMzIgMTYuODUsOEMxNi44NSwxMC42OCAxNC42NywxMi44NSAxMiwxMi44NUE0Ljg1LDQuODUgMCAwLDEgNy4xNSw4QTQuODUsNC44NSAwIDAsMSAxMiwzLjE1TTExLDVWOC42OUwxNC4xOSwxMC41M0wxNC45NCw5LjIzTDEyLjUsNy44MlY1TTE1LDE2VjE5SDNWMjFIMTVWMjRMMTksMjBNMTksMjBWMjRIMjFWMTZIMTlcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja0Zhc3QgPSBcIk0xNSw0QTgsOCAwIDAsMSAyMywxMkE4LDggMCAwLDEgMTUsMjBBOCw4IDAgMCwxIDcsMTJBOCw4IDAgMCwxIDE1LDRNMTUsNkE2LDYgMCAwLDAgOSwxMkE2LDYgMCAwLDAgMTUsMThBNiw2IDAgMCwwIDIxLDEyQTYsNiAwIDAsMCAxNSw2TTE0LDhIMTUuNVYxMS43OEwxNy44MywxNC4xMUwxNi43NywxNS4xN0wxNCwxMi40VjhNMiwxOEExLDEgMCAwLDEgMSwxN0ExLDEgMCAwLDEgMiwxNkg1LjgzQzYuMTQsMTYuNzEgNi41NCwxNy4zOCA3LDE4SDJNMywxM0ExLDEgMCAwLDEgMiwxMkExLDEgMCAwLDEgMywxMUg1LjA1TDUsMTJMNS4wNSwxM0gzTTQsOEExLDEgMCAwLDEgMyw3QTEsMSAwIDAsMSA0LDZIN0M2LjU0LDYuNjIgNi4xNCw3LjI5IDUuODMsOEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrSW4gPSBcIk0yLjIxLDAuNzlMMC43OSwyLjIxTDQuOCw2LjIxTDMsOEg4VjNMNi4yMSw0LjhNMTIsOEM4LjE0LDggNSwxMS4xMyA1LDE1QTcsNyAwIDAsMCAxMiwyMkMxNS44NiwyMiAxOSwxOC44NyAxOSwxNUE3LDcgMCAwLDAgMTIsOE0xMiwxMC4xNUMxNC42NywxMC4xNSAxNi44NSwxMi4zMiAxNi44NSwxNUE0Ljg1LDQuODUgMCAwLDEgMTIsMTkuODVDOS4zMiwxOS44NSA3LjE1LDE3LjY4IDcuMTUsMTVBNC44NSw0Ljg1IDAgMCwxIDEyLDEwLjE1TTExLDEyVjE1LjY5TDE0LjE5LDE3LjUzTDE0Ljk0LDE2LjIzTDEyLjUsMTQuODJWMTJcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja091dCA9IFwiTTE4LDFMMTkuOCwyLjc5TDE1Ljc5LDYuNzlMMTcuMjEsOC4yMUwyMS4yMSw0LjIxTDIzLDZWMU0xMiw4QzguMTQsOCA1LDExLjEzIDUsMTVBNyw3IDAgMCwwIDEyLDIyQzE1Ljg2LDIyIDE5LDE4Ljg3IDE5LDE1QTcsNyAwIDAsMCAxMiw4TTEyLDEwLjE1QzE0LjY3LDEwLjE1IDE2Ljg1LDEyLjMyIDE2Ljg1LDE1QTQuODUsNC44NSAwIDAsMSAxMiwxOS44NUM5LjMyLDE5Ljg1IDcuMTUsMTcuNjggNy4xNSwxNUE0Ljg1LDQuODUgMCAwLDEgMTIsMTAuMTVNMTEsMTJWMTUuNjlMMTQuMTksMTcuNTNMMTQuOTQsMTYuMjNMMTIuNSwxNC44MlYxMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrT3V0bGluZSA9IFwiTTEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkM2LjQ3LDIyIDIsMTcuNSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIuNSw3VjEyLjI1TDE3LDE0LjkyTDE2LjI1LDE2LjE1TDExLDEzVjdIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1N0YXJ0ID0gXCJNMTIsMUM4LjE0LDEgNSw0LjE0IDUsOEE3LDcgMCAwLDAgMTIsMTVDMTUuODYsMTUgMTksMTEuODcgMTksOEMxOSw0LjE0IDE1Ljg2LDEgMTIsMU0xMiwzLjE1QzE0LjY3LDMuMTUgMTYuODUsNS4zMiAxNi44NSw4QzE2Ljg1LDEwLjY4IDE0LjY3LDEyLjg1IDEyLDEyLjg1QTQuODUsNC44NSAwIDAsMSA3LjE1LDhBNC44NSw0Ljg1IDAgMCwxIDEyLDMuMTVNMTEsNVY4LjY5TDE0LjE5LDEwLjUzTDE0Ljk0LDkuMjNMMTIuNSw3LjgyVjVNNCwxNlYyNEg2VjIxSDE4VjI0TDIyLDIwTDE4LDE2VjE5SDZWMTZcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVFaWdodCA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMlMxNy41IDIgMTIgMk03LjcgMTUuNUw3IDE0LjJMMTEgMTEuOVY3SDEyLjVWMTIuOEw3LjcgMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVFaWdodE91dGxpbmUgPSBcIk0xMiAyMEMxNi40IDIwIDIwIDE2LjQgMjAgMTJTMTYuNCA0IDEyIDQgNCA3LjYgNCAxMiA3LjYgMjAgMTIgMjBNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyUzE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIuNSAxMi44TDcuNyAxNS42TDcgMTQuMkwxMSAxMS45VjdIMTIuNVYxMi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZUVsZXZlbiA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMlMxNy41IDIgMTIgMk0xMi41IDEzSDExTDguNSA4LjZMOS44IDcuOEwxMSAxMFY3SDEyLjVWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tUaW1lRWxldmVuT3V0bGluZSA9IFwiTTEyIDIwQzE2LjQgMjAgMjAgMTYuNCAyMCAxMlMxNi40IDQgMTIgNCA0IDcuNiA0IDEyIDcuNiAyMCAxMiAyME0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJTMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMi41IDdWMTNIMTFMOC41IDguNkw5LjggNy44TDExIDEwVjdIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVGaXZlID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTE0IDE3TDExIDExLjhWN0gxMi41VjExLjRMMTUuMyAxNi4zTDE0IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZUZpdmVPdXRsaW5lID0gXCJNMTIgMjBDMTYuNCAyMCAyMCAxNi40IDIwIDEyUzE2LjQgNCAxMiA0IDQgNy42IDQgMTIgNy42IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTE1LjMgMTYuMkwxNCAxN0wxMSAxMS44VjdIMTIuNVYxMS40TDE1LjMgMTYuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVGb3VyID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTE2LjMgMTUuMkwxMSAxMi4zVjdIMTIuNVYxMS40TDE3IDEzLjlMMTYuMyAxNS4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZUZvdXJPdXRsaW5lID0gXCJNMTIgMjBDMTYuNCAyMCAyMCAxNi40IDIwIDEyUzE2LjQgNCAxMiA0IDQgNy42IDQgMTIgNy42IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTE3IDEzLjlMMTYuMyAxNS4yTDExIDEyLjNWN0gxMi41VjExLjRMMTcgMTMuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVOaW5lID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTEyLjUgMTNIN1YxMS41SDExVjdIMTIuNVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVOaW5lT3V0bGluZSA9IFwiTTEyIDIwQzE2LjQgMjAgMjAgMTYuNCAyMCAxMlMxNi40IDQgMTIgNCA0IDcuNiA0IDEyIDcuNiAyMCAxMiAyME0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJTMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMi41IDdWMTNIN1YxMS41SDExVjdIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVPbmUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJTMTcuNSAyIDEyIDJNMTIuMyAxM0gxMVY3SDEyLjVWOS43TDE0IDcuMUwxNS4zIDcuOUwxMi4zIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZU9uZU91dGxpbmUgPSBcIk0xMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMlMxNi40MiA0IDEyIDQgNCA3LjU4IDQgMTIgNy41OCAyMCAxMiAyME0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJTMTcuNSAyMiAxMiAyMkM2LjQ3IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTUuMyA3LjhMMTIuMyAxM0gxMVY3SDEyLjVWOS42NUwxNCA3LjA1TDE1LjMgNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZVNldmVuID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTEyLjUgMTIuMkw5LjggMTdMOC41IDE2LjJMMTEgMTEuOFY3SDEyLjVWMTIuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVTZXZlbk91dGxpbmUgPSBcIk0xMiAyMEMxNi40IDIwIDIwIDE2LjQgMjAgMTJTMTYuNCA0IDEyIDQgNCA3LjYgNCAxMiA3LjYgMjAgMTIgMjBNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyUzE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIuNSA3VjEyLjJMOS44IDE3TDguNSAxNi4yTDExIDExLjhWN0gxMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZVNpeCA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMlMxNy41IDIgMTIgMk0xMi41IDE3SDExVjdIMTIuNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVTaXhPdXRsaW5lID0gXCJNMTIgMjBDMTYuNCAyMCAyMCAxNi40IDIwIDEyUzE2LjQgNCAxMiA0IDQgNy42IDQgMTIgNy42IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyLjUgN1YxN0gxMVY3SDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tUaW1lVGVuID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTEyLjUgMTNIMTFMNyAxMC43TDcuOCA5LjRMMTEuMSAxMS4zVjdIMTIuNlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUZW5PdXRsaW5lID0gXCJNMTIgMjBDMTYuNCAyMCAyMCAxNi40IDIwIDEyUzE2LjQgNCAxMiA0IDQgNy42IDQgMTIgNy42IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyLjUgMTNIMTFMNyAxMC43TDcuOCA5LjRMMTEuMSAxMS4zVjdIMTIuNlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUaHJlZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMlMxNy41IDIgMTIgMk0xNyAxM0gxMVY3SDEyLjVWMTEuNUgxN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUaHJlZU91dGxpbmUgPSBcIk0xMiAyMEMxNi40IDIwIDIwIDE2LjQgMjAgMTJTMTYuNCA0IDEyIDQgNCA3LjYgNCAxMiA3LjYgMjAgMTIgMjBNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyUzE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTcgMTEuNVYxM0gxMVY3SDEyLjVWMTEuNUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUd2VsdmUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJTMTcuNSAyIDEyIDJNMTIuNSAxM0gxMVY3SDEyLjVWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tUaW1lVHdlbHZlT3V0bGluZSA9IFwiTTEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyUzE2LjQyIDQgMTIgNCA0IDcuNTggNCAxMiA3LjU4IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNDcgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMi41IDEzLjAzSDExVjdIMTIuNVYxMy4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUd28gPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJTMTcuNSAyIDEyIDJNMTIuNSAxM0gxMVY3SDEyLjVWMTEuM0wxNi4yIDkuMkwxNyAxMC41TDEyLjUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tUaW1lVHdvT3V0bGluZSA9IFwiTTEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyUzE2LjQyIDQgMTIgNCA0IDcuNTggNCAxMiA3LjU4IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNDcgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMi41IDEzVjEzSDExVjdIMTIuNVYxMS4yNkwxNi4yIDkuMTNMMTYuOTUgMTAuNDNMMTIuNSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZSA9IFwiTTE5LDYuNDFMMTcuNTksNUwxMiwxMC41OUw2LjQxLDVMNSw2LjQxTDEwLjU5LDEyTDUsMTcuNTlMNi40MSwxOUwxMiwxMy40MUwxNy41OSwxOUwxOSwxNy41OUwxMy40MSwxMkwxOSw2LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3NlQm94ID0gXCJNMTksM0gxNi4zSDcuN0g1QTIsMiAwIDAsMCAzLDVWNy43VjE2LjRWMTlBMiwyIDAgMCwwIDUsMjFINy43SDE2LjRIMTlBMiwyIDAgMCwwIDIxLDE5VjE2LjNWNy43VjVBMiwyIDAgMCwwIDE5LDNNMTUuNiwxN0wxMiwxMy40TDguNCwxN0w3LDE1LjZMMTAuNiwxMkw3LDguNEw4LjQsN0wxMiwxMC42TDE1LjYsN0wxNyw4LjRMMTMuNCwxMkwxNywxNS42TDE1LjYsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VCb3hNdWx0aXBsZSA9IFwiTTQgMjBIMThWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjZINFYyME0yMC4yMiAySDcuNzhDNi44IDIgNiAyLjggNiAzLjc4VjE2LjIyQzYgMTcuMiA2LjggMTggNy43OCAxOEgyMC4yMkMyMS4yIDE4IDIyIDE3LjIgMjIgMTYuMjJWMy43OEMyMiAyLjggMjEuMiAyIDIwLjIyIDJNMTkgMTMuNkwxNy42IDE1TDE0IDExLjRMMTAuNCAxNUw5IDEzLjZMMTIuNiAxMEw5IDYuNEwxMC40IDVMMTQgOC42TDE3LjYgNUwxOSA2LjRMMTUuNCAxMEwxOSAxMy42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3NlQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjExIDYuOSAxOCA4IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0yMCAxNkg4VjRIMjBWMTZNNCA2VjIwSDE4VjIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFY2SDRNOS43NyAxMi44NEwxMi42IDEwTDkuNzcgNy4xNUwxMS4xNyA1Ljc1TDE0IDguNkwxNi44NCA1Ljc3TDE4LjI0IDcuMTdMMTUuNCAxMEwxOC4yMyAxMi44NEwxNi44MyAxNC4yNEwxNCAxMS40TDExLjE3IDE0LjI0TDkuNzcgMTIuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VCb3hPdXRsaW5lID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTksMTlINVY1SDE5VjE5TTE3LDguNEwxMy40LDEyTDE3LDE1LjZMMTUuNiwxN0wxMiwxMy40TDguNCwxN0w3LDE1LjZMMTAuNiwxMkw3LDguNEw4LjQsN0wxMiwxMC42TDE1LjYsN0wxNyw4LjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VDaXJjbGUgPSBcIk0xMiwyQzE3LjUzLDIgMjIsNi40NyAyMiwxMkMyMiwxNy41MyAxNy41MywyMiAxMiwyMkM2LjQ3LDIyIDIsMTcuNTMgMiwxMkMyLDYuNDcgNi40NywyIDEyLDJNMTUuNTksN0wxMiwxMC41OUw4LjQxLDdMNyw4LjQxTDEwLjU5LDEyTDcsMTUuNTlMOC40MSwxN0wxMiwxMy40MUwxNS41OSwxN0wxNywxNS41OUwxMy40MSwxMkwxNyw4LjQxTDE1LjU5LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VDaXJjbGVNdWx0aXBsZSA9IFwiTTIgMTJDMiA5LjIxIDMuNjQgNi44IDYgNS42OFYzLjVDMi41IDQuNzYgMCA4LjA5IDAgMTJTMi41IDE5LjI0IDYgMjAuNVYxOC4zMkMzLjY0IDE3LjIgMiAxNC43OSAyIDEyTTE1IDNDMTAuMDQgMyA2IDcuMDQgNiAxMlMxMC4wNCAyMSAxNSAyMSAyNCAxNi45NiAyNCAxMiAxOS45NiAzIDE1IDNNMjAgMTUuNTlMMTguNTkgMTdMMTUgMTMuNDFMMTEuNDEgMTdMMTAgMTUuNTlMMTMuNTkgMTJMMTAgOC40MUwxMS40MSA3TDE1IDEwLjU5TDE4LjU5IDdMMjAgOC40MUwxNi40MSAxMkwyMCAxNS41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZUNpcmNsZU11bHRpcGxlT3V0bGluZSA9IFwiTTE4LjU0IDkuODhMMTcuMTIgOC40N0wxNSAxMC41OUwxMi44OCA4LjQ3TDExLjQ3IDkuODhMMTMuNTkgMTJMMTEuNDcgMTQuMTJMMTIuODggMTUuNTRMMTUgMTMuNDFMMTcuMTIgMTUuNTRMMTguNTQgMTQuMTJMMTYuNDEgMTJNMiAxMkMyIDkuMjEgMy42NCA2LjggNiA1LjY4VjMuNUMyLjUgNC43NiAwIDguMDkgMCAxMlMyLjUgMTkuMjQgNiAyMC41VjE4LjMyQzMuNjQgMTcuMiAyIDE0Ljc5IDIgMTJNMTUgM0MxMC4wNCAzIDYgNy4wNCA2IDEyUzEwLjA0IDIxIDE1IDIxIDI0IDE2Ljk2IDI0IDEyIDE5Ljk2IDMgMTUgM00xNSAxOUMxMS4xNCAxOSA4IDE1Ljg2IDggMTJTMTEuMTQgNSAxNSA1IDIyIDguMTQgMjIgMTIgMTguODYgMTkgMTUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VDaXJjbGVPdXRsaW5lID0gXCJNMTIsMjBDNy41OSwyMCA0LDE2LjQxIDQsMTJDNCw3LjU5IDcuNTksNCAxMiw0QzE2LjQxLDQgMjAsNy41OSAyMCwxMkMyMCwxNi40MSAxNi40MSwyMCAxMiwyME0xMiwyQzYuNDcsMiAyLDYuNDcgMiwxMkMyLDE3LjUzIDYuNDcsMjIgMTIsMjJDMTcuNTMsMjIgMjIsMTcuNTMgMjIsMTJDMjIsNi40NyAxNy41MywyIDEyLDJNMTQuNTksOEwxMiwxMC41OUw5LjQxLDhMOCw5LjQxTDEwLjU5LDEyTDgsMTQuNTlMOS40MSwxNkwxMiwxMy40MUwxNC41OSwxNkwxNiwxNC41OUwxMy40MSwxMkwxNiw5LjQxTDE0LjU5LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VOZXR3b3JrID0gXCJNMTQuNTksNkwxMiw4LjU5TDkuNDEsNkw4LDcuNDFMMTAuNTksMTBMOCwxMi41OUw5LjQxLDE0TDEyLDExLjQxTDE0LjU5LDE0TDE2LDEyLjU5TDEzLjQxLDEwTDE2LDcuNDFMMTQuNTksNk0xNywzQTIsMiAwIDAsMSAxOSw1VjE1QTIsMiAwIDAsMSAxNywxN0gxM1YxOUgxNEExLDEgMCAwLDEgMTUsMjBIMjJWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdIN0M1Ljg5LDE3IDUsMTYuMSA1LDE1VjVBMiwyIDAgMCwxIDcsM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZU5ldHdvcmtPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU03LDE1VjVIMTdWMTVIN00xNS41NCwxMi4xMkwxMy40MSwxMEwxNS41Myw3Ljg3TDE0LjEyLDYuNDZMMTIsOC41OUw5Ljg4LDYuNDZMOC40Nyw3Ljg3TDEwLjU5LDEwTDguNDcsMTIuMTNMOS44OCwxMy41NEwxMiwxMS40MUwxNC4xMiwxMy41NEwxNS41NCwxMi4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZU9jdGFnb24gPSBcIk04LjI3LDNMMyw4LjI3VjE1LjczTDguMjcsMjFIMTUuNzNMMjEsMTUuNzNWOC4yN0wxNS43MywzTTguNDEsN0wxMiwxMC41OUwxNS41OSw3TDE3LDguNDFMMTMuNDEsMTJMMTcsMTUuNTlMMTUuNTksMTdMMTIsMTMuNDFMOC40MSwxN0w3LDE1LjU5TDEwLjU5LDEyTDcsOC40MVwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3NlT2N0YWdvbk91dGxpbmUgPSBcIk04LjI3LDNMMyw4LjI3VjE1LjczTDguMjcsMjFIMTUuNzNDMTcuNSwxOS4yNCAyMSwxNS43MyAyMSwxNS43M1Y4LjI3TDE1LjczLDNNOS4xLDVIMTQuOUwxOSw5LjFWMTQuOUwxNC45LDE5SDkuMUw1LDE0LjlWOS4xTTkuMTIsNy43MUw3LjcxLDkuMTJMMTAuNTksMTJMNy43MSwxNC44OEw5LjEyLDE2LjI5TDEyLDEzLjQxTDE0Ljg4LDE2LjI5TDE2LjI5LDE0Ljg4TDEzLjQxLDEyTDE2LjI5LDkuMTJMMTQuODgsNy43MUwxMiwxMC41OVwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3NlT3V0bGluZSA9IFwiTTMsMTYuNzRMNy43NiwxMkwzLDcuMjZMNy4yNiwzTDEyLDcuNzZMMTYuNzQsM0wyMSw3LjI2TDE2LjI0LDEyTDIxLDE2Ljc0TDE2Ljc0LDIxTDEyLDE2LjI0TDcuMjYsMjFMMywxNi43NE0xMiwxMy40MUwxNi43NCwxOC4xNkwxOC4xNiwxNi43NEwxMy40MSwxMkwxOC4xNiw3LjI2TDE2Ljc0LDUuODRMMTIsMTAuNTlMNy4yNiw1Ljg0TDUuODQsNy4yNkwxMC41OSwxMkw1Ljg0LDE2Ljc0TDcuMjYsMTguMTZMMTIsMTMuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VUaGljayA9IFwiTTIwIDYuOTFMMTcuMDkgNEwxMiA5LjA5TDYuOTEgNEw0IDYuOTFMOS4wOSAxMkw0IDE3LjA5TDYuOTEgMjBMMTIgMTQuOTFMMTcuMDkgMjBMMjAgMTcuMDlMMTQuOTEgMTJMMjAgNi45MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZWRDYXB0aW9uID0gXCJNMTgsMTFIMTYuNVYxMC41SDE0LjVWMTMuNUgxNi41VjEzSDE4VjE0QTEsMSAwIDAsMSAxNywxNUgxNEExLDEgMCAwLDEgMTMsMTRWMTBBMSwxIDAgMCwxIDE0LDlIMTdBMSwxIDAgMCwxIDE4LDEwTTExLDExSDkuNVYxMC41SDcuNVYxMy41SDkuNVYxM0gxMVYxNEExLDEgMCAwLDEgMTAsMTVIN0ExLDEgMCAwLDEgNiwxNFYxMEExLDEgMCAwLDEgNyw5SDEwQTEsMSAwIDAsMSAxMSwxME0xOSw0SDVDMy44OSw0IDMsNC44OSAzLDZWMThBMiwyIDAgMCwwIDUsMjBIMTlBMiwyIDAgMCwwIDIxLDE4VjZDMjEsNC44OSAyMC4xLDQgMTksNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZWRDYXB0aW9uT3V0bGluZSA9IFwiTTUsNEM0LjQ1LDQgNCw0LjE4IDMuNTksNC41N0MzLjIsNC45NiAzLDUuNDQgMyw2VjE4QzMsMTguNTYgMy4yLDE5LjA0IDMuNTksMTkuNDNDNCwxOS44MiA0LjQ1LDIwIDUsMjBIMTlDMTkuNSwyMCAyMCwxOS44MSAyMC4zOSwxOS40MUMyMC44LDE5IDIxLDE4LjUzIDIxLDE4VjZDMjEsNS40NyAyMC44LDUgMjAuMzksNC41OUMyMCw0LjE5IDE5LjUsNCAxOSw0SDVNNC41LDUuNUgxOS41VjE4LjVINC41VjUuNU03LDlDNi43LDkgNi40Nyw5LjA5IDYuMjgsOS4yOEM2LjA5LDkuNDcgNiw5LjcgNiwxMFYxNEM2LDE0LjMgNi4wOSwxNC41MyA2LjI4LDE0LjcyQzYuNDcsMTQuOTEgNi43LDE1IDcsMTVIMTBDMTAuMjcsMTUgMTAuNSwxNC45MSAxMC43MSwxNC43MkMxMC45MSwxNC41MyAxMSwxNC4zIDExLDE0VjEzSDkuNVYxMy41SDcuNVYxMC41SDkuNVYxMUgxMVYxMEMxMSw5LjcgMTAuOTEsOS40NyAxMC43MSw5LjI4QzEwLjUsOS4wOSAxMC4yNyw5IDEwLDlIN00xNCw5QzEzLjczLDkgMTMuNSw5LjA5IDEzLjI5LDkuMjhDMTMuMDksOS40NyAxMyw5LjcgMTMsMTBWMTRDMTMsMTQuMyAxMy4wOSwxNC41MyAxMy4yOSwxNC43MkMxMy41LDE0LjkxIDEzLjczLDE1IDE0LDE1SDE3QzE3LjMsMTUgMTcuNTMsMTQuOTEgMTcuNzIsMTQuNzJDMTcuOTEsMTQuNTMgMTgsMTQuMyAxOCwxNFYxM0gxNi41VjEzLjVIMTQuNVYxMC41SDE2LjVWMTFIMThWMTBDMTgsOS43IDE3LjkxLDkuNDcgMTcuNzIsOS4yOEMxNy41Myw5LjA5IDE3LjMsOSAxNyw5SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkID0gXCJNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkQWxlcnQgPSBcIk0xOSAyMEg2QzIuNyAyMCAwIDE3LjMgMCAxNEMwIDEwLjkgMi4zIDguNCA1LjMgOEM2LjYgNS42IDkuMSA0IDEyIDRDMTUuNiA0IDE4LjcgNi42IDE5LjQgMTBDMjIgMTAuMiAyNCAxMi4zIDI0IDE1QzI0IDE3LjcgMjEuNyAyMCAxOSAyME0xMSAxNVYxN0gxM1YxNUgxMU0xMSAxM0gxM1Y3SDExVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkQnJhY2VzID0gXCJNNiwyMEE2LDYgMCAwLDEgMCwxNEMwLDEwLjkxIDIuMzQsOC4zNiA1LjM1LDguMDRDNi42LDUuNjQgOS4xMSw0IDEyLDRDMTUuNjMsNCAxOC42Niw2LjU4IDE5LjM1LDEwQzIxLjk1LDEwLjE5IDI0LDEyLjM2IDI0LDE1QTUsNSAwIDAsMSAxOSwyMEg2TTE4LjUsMTJIMThBMSwxIDAgMCwxIDE3LDExVjEwQTIsMiAwIDAsMCAxNSw4SDEzLjVWMTBIMTVWMTFBMiwyIDAgMCwwIDE3LDEzQTIsMiAwIDAsMCAxNSwxNVYxNkgxMy41VjE4SDE1QTIsMiAwIDAsMCAxNywxNlYxNUExLDEgMCAwLDEgMTgsMTRIMTguNVYxMk01LjUsMTJWMTRINkExLDEgMCAwLDEgNywxNVYxNkEyLDIgMCAwLDAgOSwxOEgxMC41VjE2SDlWMTVBMiwyIDAgMCwwIDcsMTNBMiwyIDAgMCwwIDksMTFWMTBIMTAuNVY4SDlBMiwyIDAgMCwwIDcsMTBWMTFBMSwxIDAgMCwxIDYsMTJINS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkQ2hlY2sgPSBcIk0xMCwxN0w2LjUsMTMuNUw3LjkxLDEyLjA4TDEwLDE0LjE3TDE1LjE4LDlMMTYuNTksMTAuNDFNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkQ2hlY2tPdXRsaW5lID0gXCJNMTkgMThINkMzLjc5IDE4IDIgMTYuMjEgMiAxNFMzLjc5IDEwIDYgMTBINi43MUM3LjM3IDcuNjkgOS41IDYgMTIgNkMxNS4wNCA2IDE3LjUgOC40NiAxNy41IDExLjVWMTJIMTlDMjAuNjYgMTIgMjIgMTMuMzQgMjIgMTVTMjAuNjYgMTggMTkgMThNMTkuMzUgMTAuMDNDMTguNjcgNi41OSAxNS42NCA0IDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wM0MyLjM0IDguMzYgMCAxMC45IDAgMTRDMCAxNy4zMSAyLjY5IDIwIDYgMjBIMTlDMjEuNzYgMjAgMjQgMTcuNzYgMjQgMTVDMjQgMTIuMzYgMjEuOTUgMTAuMjIgMTkuMzUgMTAuMDNNMTAgMTdMNi41IDEzLjVMNy45MSAxMi4wOEwxMCAxNC4xN0wxNC41OSA5LjU5TDE2IDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRDaXJjbGUgPSBcIk0xNi41LDE2SDhBMywzIDAgMCwxIDUsMTNBMywzIDAgMCwxIDgsMTBDOC4wNSwxMCA4LjA5LDEwIDguMTQsMTBDOC41OCw4LjI4IDEwLjEzLDcgMTIsN0E0LDQgMCAwLDEgMTYsMTFIMTYuNUEyLjUsMi41IDAgMCwxIDE5LDEzLjVBMi41LDIuNSAwIDAsMSAxNi41LDE2TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkRG93bmxvYWQgPSBcIk0xNywxM0wxMiwxOEw3LDEzSDEwVjlIMTRWMTNNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkRG93bmxvYWRPdXRsaW5lID0gXCJNOCwxM0gxMC41NVYxMEgxMy40NVYxM0gxNkwxMiwxN0w4LDEzTTE5LjM1LDEwLjA0QzIxLjk1LDEwLjIyIDI0LDEyLjM2IDI0LDE1QTUsNSAwIDAsMSAxOSwyMEg2QTYsNiAwIDAsMSAwLDE0QzAsMTAuOTEgMi4zNCw4LjM2IDUuMzUsOC4wNEM2LjYsNS42NCA5LjExLDQgMTIsNEMxNS42NCw0IDE4LjY3LDYuNTkgMTkuMzUsMTAuMDRNMTksMThBMywzIDAgMCwwIDIyLDE1QzIyLDEzLjQ1IDIwLjc4LDEyLjE0IDE5LjIyLDEyLjA0TDE3LjY5LDExLjkzTDE3LjM5LDEwLjQzQzE2Ljg4LDcuODYgMTQuNjIsNiAxMiw2QzkuOTQsNiA4LjA4LDcuMTQgNy4xMyw4Ljk3TDYuNjMsOS45Mkw1LjU2LDEwLjAzQzMuNTMsMTAuMjQgMiwxMS45NSAyLDE0QTQsNCAwIDAsMCA2LDE4SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkTG9jayA9IFwiTTIyIDE3QzIyLjUgMTcgMjMgMTcuNSAyMyAxOFYyMkMyMyAyMi41IDIyLjUgMjMgMjIgMjNIMTdDMTYuNSAyMyAxNiAyMi41IDE2IDIyVjE4QzE2IDE3LjUgMTYuNSAxNyAxNyAxN1YxNS41QzE3IDE0LjEgMTguMSAxMyAxOS41IDEzQzIwLjkgMTMgMjIgMTQuMSAyMiAxNS41VjE3TTIxIDE3VjE1LjVDMjEgMTQuNyAyMC4zIDE0IDE5LjUgMTRDMTguNyAxNCAxOCAxNC43IDE4IDE1LjVWMTdIMjFNMTkuMzYgOS4wM0MyMS45NSA5LjIyIDI0IDExLjM2IDI0IDE0TDIzLjk0IDE0Ljc3QzIzLjU5IDEyLjYzIDIxLjc0IDExIDE5LjUgMTFDMTcgMTEgMTUgMTMgMTUgMTUuNUwxNSAxNS43NkMxNC4zOSAxNi4zMSAxNCAxNy4xMSAxNCAxOFYxOUg2QzIuNjkgMTkgMCAxNi4zMSAwIDEzQzAgOS45IDIuMzQgNy4zNiA1LjM1IDcuMDRDNi42IDQuNjQgOS4xMSAzIDEyIDNDMTUuNjQgMyAxOC42NyA1LjU5IDE5LjM2IDkuMDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRMb2NrT3V0bGluZSA9IFwiTTIyIDE3QzIyLjUgMTcgMjMgMTcuNSAyMyAxOFYyMkMyMyAyMi41IDIyLjUgMjMgMjIgMjNIMTdDMTYuNSAyMyAxNiAyMi41IDE2IDIyVjE4QzE2IDE3LjUgMTYuNSAxNyAxNyAxN1YxNS41QzE3IDE0LjEgMTguMSAxMyAxOS41IDEzQzIwLjkgMTMgMjIgMTQuMSAyMiAxNS41VjE3TTIxIDE3VjE1LjVDMjEgMTQuNyAyMC4zIDE0IDE5LjUgMTRDMTguNyAxNCAxOCAxNC43IDE4IDE1LjVWMTdIMjFNMTcuNSAxMVYxMC41QzE3LjUgNy40NiAxNS4wNCA1IDEyIDVDOS41IDUgNy4zNyA2LjY5IDYuNzEgOUg2QzMuNzkgOSAyIDEwLjc5IDIgMTNDMiAxNS4yMSAzLjc5IDE3IDYgMTdIMTQuMTdDMTQuMDYgMTcuMzEgMTQgMTcuNjUgMTQgMThWMTlINkMyLjY5IDE5IDAgMTYuMzEgMCAxM0MwIDkuOSAyLjM0IDcuMzYgNS4zNSA3LjA0QzYuNiA0LjY0IDkuMTEgMyAxMiAzQzE1LjY0IDMgMTguNjcgNS42IDE5LjM2IDkuMDRDMjEuOTUgOS4yMiAyNCAxMS4zNiAyNCAxNEwyMy45NCAxNC43N0MyMy41OSAxMi42MyAyMS43NCAxMSAxOS41IDExSDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRPZmZPdXRsaW5lID0gXCJNNy43MywxMEwxNS43MywxOEg2QTQsNCAwIDAsMSAyLDE0QTQsNCAwIDAsMSA2LDEwTTMsNS4yN0w1Ljc1LDhDMi41Niw4LjE1IDAsMTAuNzcgMCwxNEE2LDYgMCAwLDAgNiwyMEgxNy43M0wxOS43MywyMkwyMSwyMC43M0w0LjI3LDRNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDMTAuNSw0IDkuMTUsNC40MyA4LDUuMTdMOS40NSw2LjYzQzEwLjIxLDYuMjMgMTEuMDgsNiAxMiw2QTUuNSw1LjUgMCAwLDEgMTcuNSwxMS41VjEySDE5QTMsMyAwIDAsMSAyMiwxNUMyMiwxNi4xMyAyMS4zNiwxNy4xMSAyMC40NCwxNy42MkwyMS44OSwxOS4wN0MyMy4xNiwxOC4xNiAyNCwxNi42OCAyNCwxNUMyNCwxMi4zNiAyMS45NSwxMC4yMiAxOS4zNSwxMC4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZE91dGxpbmUgPSBcIk0xOSwxOEg2QTQsNCAwIDAsMSAyLDE0QTQsNCAwIDAsMSA2LDEwSDYuNzFDNy4zNyw3LjY5IDkuNSw2IDEyLDZBNS41LDUuNSAwIDAsMSAxNy41LDExLjVWMTJIMTlBMywzIDAgMCwxIDIyLDE1QTMsMyAwIDAsMSAxOSwxOE0xOS4zNSwxMC4wM0MxOC42Nyw2LjU5IDE1LjY0LDQgMTIsNEM5LjExLDQgNi42LDUuNjQgNS4zNSw4LjAzQzIuMzQsOC4zNiAwLDEwLjkgMCwxNEE2LDYgMCAwLDAgNiwyMEgxOUE1LDUgMCAwLDAgMjQsMTVDMjQsMTIuMzYgMjEuOTUsMTAuMjIgMTkuMzUsMTAuMDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRQcmludCA9IFwiTTEyLDJDOS4xMSwyIDYuNiwzLjY0IDUuMzUsNi4wNEMyLjM0LDYuMzYgMCw4LjkxIDAsMTJBNiw2IDAgMCwwIDYsMThWMjJIMThWMThIMTlBNSw1IDAgMCwwIDI0LDEzQzI0LDEwLjM2IDIxLjk1LDguMjIgMTkuMzUsOC4wNEMxOC42Nyw0LjU5IDE1LjY0LDIgMTIsMk04LDEzSDE2VjIwSDhWMTNNOSwxNFYxNUgxNVYxNEg5TTksMTZWMTdIMTVWMTZIOU05LDE4VjE5SDE1VjE4SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRQcmludE91dGxpbmUgPSBcIk0xOSwxNkEzLDMgMCAwLDAgMjIsMTNBMywzIDAgMCwwIDE5LDEwSDE3LjVWOS41QTUuNSw1LjUgMCAwLDAgMTIsNEM5LjUsNCA3LjM3LDUuNjkgNi43MSw4SDZBNCw0IDAgMCwwIDIsMTJBNCw0IDAgMCwwIDYsMTZWMTFIMThWMTZIMTlNMTkuMzYsOC4wNEMyMS45NSw4LjIyIDI0LDEwLjM2IDI0LDEzQTUsNSAwIDAsMSAxOSwxOEgxOFYyMkg2VjE4QTYsNiAwIDAsMSAwLDEyQzAsOC45MSAyLjM0LDYuMzYgNS4zNSw2LjA0QzYuNiwzLjY0IDkuMTEsMiAxMiwyQzE1LjY0LDIgMTguNjcsNC42IDE5LjM2LDguMDRNOCwxM1YyMEgxNlYxM0g4TTksMThIMTVWMTlIOVYxOE0xNSwxN0g5VjE2SDE1VjE3TTksMTRIMTVWMTVIOVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFF1ZXN0aW9uID0gXCJNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzTTEzLDE3SDExVjE1SDEzVjE3TTE0LjgsMTEuODJDMTQuNSwxMi4yMSAxNC4xMywxMi41IDEzLjY3LDEyLjc1QzEzLjQxLDEyLjkxIDEzLjI0LDEzLjA3IDEzLjE1LDEzLjI2QzEzLjA2LDEzLjQ1IDEzLDEzLjY5IDEzLDE0SDExQzExLDEzLjQ1IDExLjExLDEzLjA4IDExLjMsMTIuODJDMTEuNSwxMi41NiAxMS44NSwxMi4yNSAxMi4zNywxMS45MUMxMi42MywxMS43NSAxMi44NCwxMS41NiAxMywxMS4zMkMxMy4xNSwxMS4wOSAxMy4yMywxMC44MSAxMy4yMywxMC41QzEzLjIzLDEwLjE4IDEzLjE0LDkuOTQgMTIuOTYsOS43NkMxMi43OCw5LjU2IDEyLjUsOS40NyAxMi4yLDkuNDdDMTEuOTMsOS40NyAxMS43MSw5LjU1IDExLjUsOS43QzExLjM1LDkuODUgMTEuMjUsMTAuMDggMTEuMjUsMTAuMzlIOS4yOEM5LjIzLDkuNjQgOS41LDkgMTAuMDYsOC41OUMxMC42LDguMiAxMS4zMSw4IDEyLjIsOEMxMy4xNCw4IDEzLjg5LDguMjMgMTQuNDMsOC42OEMxNC45Nyw5LjEzIDE1LjI0LDkuNzUgMTUuMjQsMTAuNUMxNS4yNCwxMSAxNS4wOSwxMS40MSAxNC44LDExLjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkUmVmcmVzaCA9IFwiTTEyIDRDMTUuNjQgNCAxOC42NyA2LjU5IDE5LjM1IDEwLjA0QzIxLjk1IDEwLjIyIDI0IDEyLjM2IDI0IDE1QzI0IDE3Ljc2IDIxLjc2IDIwIDE5IDIwSDZDMi42OSAyMCAwIDE3LjMxIDAgMTRDMCAxMC45MSAyLjM0IDguMzYgNS4zNSA4LjA0QzYuNiA1LjY0IDkuMTEgNCAxMiA0TTE3IDEzVjlMMTYgMTBDMTUuMDkgOC43OSAxMy42NCA4IDEyIDhDOS4yNCA4IDcgMTAuMjQgNyAxM0M3IDE1Ljc2IDkuMjQgMTggMTIgMThDMTQuMDUgMTggMTUuODEgMTYuNzcgMTYuNTggMTVIMTQuMjRDMTMuNjkgMTUuNjEgMTIuODkgMTYgMTIgMTZDMTAuMzQgMTYgOSAxNC42NiA5IDEzQzkgMTEuMzQgMTAuMzQgMTAgMTIgMTBDMTMuMDkgMTAgMTQuMDQgMTAuNTggMTQuNTYgMTEuNDRMMTMgMTNIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRTZWFyY2ggPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE0xOS4zNSw4LjAzQzIxLjk1LDguMjIgMjQsMTAuMzYgMjQsMTNDMjQsMTQuNjQgMjMuMjEsMTYuMSAyMiwxN1YxNi41QTYuNSw2LjUgMCAwLDAgMTUuNSwxMEE2LjUsNi41IDAgMCwwIDksMTYuNUM5LDE3IDkuMDYsMTcuNSA5LjE3LDE4SDZBNiw2IDAgMCwxIDAsMTJDMCw4LjkgMi4zNCw2LjM2IDUuMzUsNi4wM0M2LjYsMy42NCA5LjExLDIgMTIsMkMxNS42NCwyIDE4LjY3LDQuNTkgMTkuMzUsOC4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFNlYXJjaE91dGxpbmUgPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE0yMiwxM0EzLDMgMCAwLDAgMTksMTBIMTcuNVY5LjVBNS41LDUuNSAwIDAsMCAxMiw0QzkuNSw0IDcuMzcsNS42OSA2LjcxLDhINkE0LDQgMCAwLDAgMiwxMkE0LDQgMCAwLDAgNiwxNkg5VjE2LjVDOSwxNyA5LjA2LDE3LjUgOS4xNywxOEg2QTYsNiAwIDAsMSAwLDEyQzAsOC45IDIuMzQsNi4zNiA1LjM1LDYuMDRDNi42LDMuNjQgOS4xMSwyIDEyLDJDMTUuNjQsMiAxOC42Nyw0LjU5IDE5LjM2LDguMDRDMjEuOTUsOC4yMiAyNCwxMC4zNiAyNCwxM0MyNCwxNC42NSAyMy4yMSwxNi4xIDIyLDE3VjE2LjVDMjIsMTUuNzcgMjEuODgsMTUuMDYgMjEuNjUsMTQuNEMyMS44NywxNCAyMiwxMy41IDIyLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkU3luYyA9IFwiTTE5IDEyVjEzLjVDMjEuMjEgMTMuNSAyMyAxNS4yOSAyMyAxNy41QzIzIDE4LjMyIDIyLjc1IDE5LjA4IDIyLjMzIDE5LjcxTDIxLjI0IDE4LjYyQzIxLjQxIDE4LjI4IDIxLjUgMTcuOSAyMS41IDE3LjVDMjEuNSAxNi4xMiAyMC4zOCAxNSAxOSAxNVYxNi41TDE2Ljc1IDE0LjI1TDE2LjcyIDE0LjIyQzE2Ljc4IDE0LjE3IDE2Ljg1IDE0LjEzIDE5IDEyTTE5IDIzVjIxLjVDMTYuNzkgMjEuNSAxNSAxOS43MSAxNSAxNy41QzE1IDE2LjY4IDE1LjI1IDE1LjkyIDE1LjY3IDE1LjI5TDE2Ljc2IDE2LjM4QzE2LjU5IDE2LjcyIDE2LjUgMTcuMSAxNi41IDE3LjVDMTYuNSAxOC44OCAxNy42MiAyMCAxOSAyMFYxOC41TDIxLjI1IDIwLjc1TDIxLjI4IDIwLjc4QzIxLjIyIDIwLjgzIDIxLjE1IDIwLjg3IDE5IDIzTTEzIDE3LjVDMTMgMTMuOTEgMTUuOTEgMTEgMTkuNSAxMUMyMC43OCAxMSAyMS45NyAxMS4zOCAyMyAxMkMyMi4xMyAxMC45IDIwLjg0IDEwLjE0IDE5LjM1IDEwLjAzQzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDNDMi4zNCA4LjM2IDAgMTAuOSAwIDE0QzAgMTcuMzEgMi42OSAyMCA2IDIwSDEzLjVDMTMuMTggMTkuMjMgMTMgMTguMzkgMTMgMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFN5bmNPdXRsaW5lID0gXCJNMTkgMTJWMTMuNUMyMS4yMSAxMy41IDIzIDE1LjI5IDIzIDE3LjVDMjMgMTguMzIgMjIuNzUgMTkuMDggMjIuMzMgMTkuNzFMMjEuMjQgMTguNjJDMjEuNDEgMTguMjggMjEuNSAxNy45IDIxLjUgMTcuNUMyMS41IDE2LjEyIDIwLjM4IDE1IDE5IDE1VjE2LjVMMTYuNzUgMTQuMjVMMTYuNzIgMTQuMjJDMTYuNzggMTQuMTcgMTYuODUgMTQuMTMgMTkgMTJNMTkgMjNWMjEuNUMxNi43OSAyMS41IDE1IDE5LjcxIDE1IDE3LjVDMTUgMTYuNjggMTUuMjUgMTUuOTIgMTUuNjcgMTUuMjlMMTYuNzYgMTYuMzhDMTYuNTkgMTYuNzIgMTYuNSAxNy4xIDE2LjUgMTcuNUMxNi41IDE4Ljg4IDE3LjYyIDIwIDE5IDIwVjE4LjVMMjEuMjUgMjAuNzVMMjEuMjggMjAuNzhDMjEuMjIgMjAuODMgMjEuMTUgMjAuODcgMTkgMjNNMTMuMDMgMThINkMzLjc5IDE4IDIgMTYuMjEgMiAxNFMzLjc5IDEwIDYgMTBINi43MUM3LjM3IDcuNjkgOS41IDYgMTIgNkMxNSA2IDE3LjQgOC4zNyAxNy41IDExLjMyQzE4LjEyIDExLjExIDE4LjggMTEgMTkuNSAxMUMyMC43OCAxMSAyMS45NyAxMS4zOCAyMyAxMkMyMi4xMyAxMC45IDIwLjg0IDEwLjE0IDE5LjM1IDEwLjAzQzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDNDMi4zNCA4LjM2IDAgMTAuOSAwIDE0QzAgMTcuMzEgMi42OSAyMCA2IDIwSDEzLjVDMTMuMjQgMTkuMzggMTMuMDggMTguNyAxMy4wMyAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFRhZ3MgPSBcIk02LDIwQTYsNiAwIDAsMSAwLDE0QzAsMTAuOTEgMi4zNCw4LjM2IDUuMzUsOC4wNEM2LjYsNS42NCA5LjExLDQgMTIsNEMxNS42Myw0IDE4LjY2LDYuNTggMTkuMzUsMTBDMjEuOTUsMTAuMTkgMjQsMTIuMzYgMjQsMTVBNSw1IDAgMCwxIDE5LDIwSDZNOS4wOSw4LjRMNC41LDEzTDkuMDksMTcuNkwxMC41LDE2LjE4TDcuMzIsMTNMMTAuNSw5LjgyTDkuMDksOC40TTE0LjkxLDguNEwxMy41LDkuODJMMTYuNjgsMTNMMTMuNSwxNi4xOEwxNC45MSwxNy42TDE5LjUsMTNMMTQuOTEsOC40WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkVXBsb2FkID0gXCJNMTQsMTNWMTdIMTBWMTNIN0wxMiw4TDE3LDEzTTE5LjM1LDEwLjAzQzE4LjY3LDYuNTkgMTUuNjQsNCAxMiw0QzkuMTEsNCA2LjYsNS42NCA1LjM1LDguMDNDMi4zNCw4LjM2IDAsMTAuOSAwLDE0QTYsNiAwIDAsMCA2LDIwSDE5QTUsNSAwIDAsMCAyNCwxNUMyNCwxMi4zNiAyMS45NSwxMC4yMiAxOS4zNSwxMC4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFVwbG9hZE91dGxpbmUgPSBcIk0xOS4zNSwxMC4wNEMxOC42Nyw2LjU5IDE1LjY0LDQgMTIsNEM5LjExLDQgNi42LDUuNjQgNS4zNSw4LjA0QzIuMzQsOC4zNiAwLDEwLjkxIDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjA0TTE5LDE4SDZBNCw0IDAgMCwxIDIsMTRDMiwxMS45NSAzLjUzLDEwLjI0IDUuNTYsMTAuMDNMNi42Myw5LjkyTDcuMTMsOC45N0M4LjA4LDcuMTQgOS45NCw2IDEyLDZDMTQuNjIsNiAxNi44OCw3Ljg2IDE3LjM5LDEwLjQzTDE3LjY5LDExLjkzTDE5LjIyLDEyLjA0QzIwLjc4LDEyLjE0IDIyLDEzLjQ1IDIyLDE1QTMsMyAwIDAsMSAxOSwxOE04LDEzSDEwLjU1VjE2SDEzLjQ1VjEzSDE2TDEyLDlMOCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG92ZXIgPSBcIk0xMiwxMS4xOEMxNS4zLDguMTggMTcsNi42NCAxNyw0LjY5QzE3LDMuMTkgMTUuNzUsMiAxNC4yNSwyQzEzLjM5LDIgMTIuNTcsMi4zNiAxMiwzQzExLjQzLDIuMzYgMTAuNjEsMiA5LjY5LDJDOC4xOSwyIDcsMy4yNSA3LDQuNzVDNyw2LjY0IDguNyw4LjE4IDEyLDExLjE4TTExLjE4LDEyQzguMTgsOC43IDYuNjQsNyA0LjY5LDdDMy4xOSw3IDIsOC4yNSAyLDkuNzVDMiwxMC42MSAyLjM2LDExLjQzIDMsMTJDMi4zNiwxMi41NyAyLDEzLjM5IDIsMTQuMzFDMiwxNS44MSAzLjI1LDE3IDQuNzUsMTdDNi42NCwxNyA4LjE4LDE1LjMgMTEuMTgsMTJNMTIuODMsMTJDMTUuODIsMTUuMyAxNy4zNiwxNyAxOS4zMSwxN0MyMC44MSwxNyAyMiwxNS43NSAyMiwxNC4yNUMyMiwxMy4zOSAyMS42NCwxMi41NyAyMSwxMkMyMS42NCwxMS40MyAyMiwxMC42MSAyMiw5LjY5QzIyLDguMTkgMjAuNzUsNyAxOS4yNSw3QzE3LjM2LDcgMTUuODIsOC43IDEyLjgzLDEyTTEyLDEyLjgyQzguNywxNS44MiA3LDE3LjM2IDcsMTkuMzFDNywyMC44MSA4LjI1LDIyIDkuNzUsMjJDMTAuNjEsMjIgMTEuNDMsMjEuNjQgMTIsMjFDMTIuNTcsMjEuNjQgMTMuMzksMjIgMTQuMzEsMjJDMTUuODEsMjIgMTcsMjAuNzUgMTcsMTkuMjVDMTcsMTcuMzYgMTUuMywxNS44MiAxMiwxMi44MlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2FjaExhbXAgPSBcIk0xNiA1TDE1IDJIMTNMMTIgNUw2IDhIOEw4LjYgMTFINFY3SDJWMTdINFYxM0g5TDEwIDE4TDEyIDIwTDEzIDIySDE1TDE2IDIwTDE4IDE4TDIwIDhIMjJNMTYuMTYgMTdIMTEuODRMMTAgOEgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2F0UmFjayA9IFwiTTE4LjMzIDcuNzhBMSAxIDAgMCAwIDE2LjY2IDguODlBMiAyIDAgMSAxIDEzIDEwVjcuODJBMyAzIDAgMSAwIDExIDcuODJWMTBBMiAyIDAgMSAxIDcuMzQgOC44OUExIDEgMCAxIDAgNS42NyA3Ljc4QTQgNCAwIDAgMCAxMSAxMy40NlYyMEEyIDIgMCAwIDAgOSAyMkgxNUEyIDIgMCAwIDAgMTMgMjBWMTMuNDZBNCA0IDAgMCAwIDE4LjMzIDcuNzhNMTIgNEExIDEgMCAxIDEgMTEgNUExIDEgMCAwIDEgMTIgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlQXJyYXkgPSBcIk0zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNNiw2VjE4SDEwVjE2SDhWOEgxMFY2SDZNMTYsMTZIMTRWMThIMThWNkgxNFY4SDE2VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZGVCcmFjZXMgPSBcIk04LDNBMiwyIDAgMCwwIDYsNVY5QTIsMiAwIDAsMSA0LDExSDNWMTNINEEyLDIgMCAwLDEgNiwxNVYxOUEyLDIgMCAwLDAgOCwyMUgxMFYxOUg4VjE0QTIsMiAwIDAsMCA2LDEyQTIsMiAwIDAsMCA4LDEwVjVIMTBWM00xNiwzQTIsMiAwIDAsMSAxOCw1VjlBMiwyIDAgMCwwIDIwLDExSDIxVjEzSDIwQTIsMiAwIDAsMCAxOCwxNVYxOUEyLDIgMCAwLDEgMTYsMjFIMTRWMTlIMTZWMTRBMiwyIDAgMCwxIDE4LDEyQTIsMiAwIDAsMSAxNiwxMFY1SDE0VjNIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZUJyYWNlc0JveCA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMSA4SDlWMTBDOSAxMS4xIDguMSAxMiA3IDEyQzguMSAxMiA5IDEyLjkgOSAxNFYxNkgxMVYxOEg5QzcuOSAxOCA3IDE3LjEgNyAxNlYxNUM3IDEzLjkgNi4xIDEzIDUgMTNWMTFDNi4xIDExIDcgMTAuMSA3IDlWOEM3IDYuOSA3LjkgNiA5IDZIMTFWOE0xOSAxM0MxNy45IDEzIDE3IDEzLjkgMTcgMTVWMTZDMTcgMTcuMSAxNi4xIDE4IDE1IDE4SDEzVjE2SDE1VjE0QzE1IDEyLjkgMTUuOSAxMiAxNyAxMkMxNS45IDEyIDE1IDExLjEgMTUgMTBWOEgxM1Y2SDE1QzE2LjEgNiAxNyA2LjkgMTcgOFY5QzE3IDEwLjEgMTcuOSAxMSAxOSAxMVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlQnJhY2tldHMgPSBcIk0xNSw0VjZIMThWMThIMTVWMjBIMjBWNE00LDRWMjBIOVYxOEg2VjZIOVY0SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZUVxdWFsID0gXCJNNiwxM0gxMVYxNUg2TTEzLDEzSDE4VjE1SDEzTTEzLDlIMThWMTFIMTNNNiw5SDExVjExSDZNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlR3JlYXRlclRoYW4gPSBcIk0xMC40MSw3LjQxTDE1LDEyTDEwLjQxLDE2LjZMOSwxNS4xOEwxMi4xOCwxMkw5LDguODJNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlR3JlYXRlclRoYW5PckVxdWFsID0gXCJNMTMsMTNIMThWMTVIMTNNMTMsOUgxOFYxMUgxM002LjkxLDcuNDFMMTEuNSwxMkw2LjkxLDE2LjZMNS41LDE1LjE4TDguNjgsMTJMNS41LDguODJNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlSnNvbiA9IFwiTTUsM0g3VjVINVYxMEEyLDIgMCAwLDEgMywxMkEyLDIgMCAwLDEgNSwxNFYxOUg3VjIxSDVDMy45MywyMC43MyAzLDIwLjEgMywxOVYxNUEyLDIgMCAwLDAgMSwxM0gwVjExSDFBMiwyIDAgMCwwIDMsOVY1QTIsMiAwIDAsMSA1LDNNMTksM0EyLDIgMCAwLDEgMjEsNVY5QTIsMiAwIDAsMCAyMywxMUgyNFYxM0gyM0EyLDIgMCAwLDAgMjEsMTVWMTlBMiwyIDAgMCwxIDE5LDIxSDE3VjE5SDE5VjE0QTIsMiAwIDAsMSAyMSwxMkEyLDIgMCAwLDEgMTksMTBWNUgxN1YzSDE5TTEyLDE1QTEsMSAwIDAsMSAxMywxNkExLDEgMCAwLDEgMTIsMTdBMSwxIDAgMCwxIDExLDE2QTEsMSAwIDAsMSAxMiwxNU04LDE1QTEsMSAwIDAsMSA5LDE2QTEsMSAwIDAsMSA4LDE3QTEsMSAwIDAsMSA3LDE2QTEsMSAwIDAsMSA4LDE1TTE2LDE1QTEsMSAwIDAsMSAxNywxNkExLDEgMCAwLDEgMTYsMTdBMSwxIDAgMCwxIDE1LDE2QTEsMSAwIDAsMSAxNiwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlTGVzc1RoYW4gPSBcIk0xMy41OSw3LjQxTDksMTJMMTMuNTksMTYuNkwxNSwxNS4xOEwxMS44MiwxMkwxNSw4LjgyTTE5LDNDMjAuMTEsMyAyMSwzLjkgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZUxlc3NUaGFuT3JFcXVhbCA9IFwiTTEzLDEzSDE4VjE1SDEzTTEzLDlIMThWMTFIMTNNMTAuMDksNy40MUwxMS41LDguODJMOC4zMiwxMkwxMS41LDE1LjE4TDEwLjA5LDE2LjZMNS41LDEyTTUsM0MzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZU5vdEVxdWFsID0gXCJNNiwxNUg4VjE3SDZNMTEsMTNIMThWMTVIMTFNMTEsOUgxOFYxMUgxMU02LDdIOFYxM0g2TTUsM0MzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZU5vdEVxdWFsVmFyaWFudCA9IFwiTTExLDYuNVY5LjMzTDguMzMsMTJMMTEsMTQuNjdWMTcuNUw1LjUsMTJNMTMsNi40M0wxOC41NywxMkwxMywxNy41N1YxNC43NEwxNS43NCwxMkwxMyw5LjI2TTUsM0MzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZVBhcmVudGhlc2VzID0gXCJNMTcuNjIsM0MxOS4xMyw1LjI3IDIwLDguNTUgMjAsMTJDMjAsMTUuNDQgMTkuMTMsMTguNzIgMTcuNjIsMjFMMTYsMTkuOTZDMTcuMjYsMTguMDcgMTgsMTUuMTMgMTgsMTJDMTgsOC44NyAxNy4yNiw1LjkyIDE2LDQuMDNMMTcuNjIsM002LjM4LDNMOCw0LjA0QzYuNzQsNS45MiA2LDguODcgNiwxMkM2LDE1LjEzIDYuNzQsMTguMDggOCwxOS45Nkw2LjM4LDIxQzQuODcsMTguNzMgNCwxNS40NSA0LDEyQzQsOC41NSA0Ljg3LDUuMjcgNi4zOCwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZGVQYXJlbnRoZXNlc0JveCA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMCAxNy4zTDguNCAxOEM2LjkgMTYuNSA2IDE0LjMgNiAxMlM2LjkgNy41IDguNCA2TDEwIDYuN0M4LjcgNy45IDggOS45IDggMTJTOC43IDE2LjEgMTAgMTcuM00xNS42IDE4TDE0IDE3LjNDMTUuMyAxNiAxNiAxNC4xIDE2IDEyUzE1LjMgNy45IDE0IDYuN0wxNS42IDZDMTcuMSA3LjUgMTggOS43IDE4IDEyQzE4IDE0LjMgMTcuMSAxNi41IDE1LjYgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZVN0cmluZyA9IFwiTTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU0xMi41LDExSDExLjVBMS41LDEuNSAwIDAsMSAxMCw5LjVBMS41LDEuNSAwIDAsMSAxMS41LDhIMTIuNUExLjUsMS41IDAgMCwxIDE0LDkuNUgxNkEzLjUsMy41IDAgMCwwIDEyLjUsNkgxMS41QTMuNSwzLjUgMCAwLDAgOCw5LjVBMy41LDMuNSAwIDAsMCAxMS41LDEzSDEyLjVBMS41LDEuNSAwIDAsMSAxNCwxNC41QTEuNSwxLjUgMCAwLDEgMTIuNSwxNkgxMS41QTEuNSwxLjUgMCAwLDEgMTAsMTQuNUg4QTMuNSwzLjUgMCAwLDAgMTEuNSwxOEgxMi41QTMuNSwzLjUgMCAwLDAgMTYsMTQuNUEzLjUsMy41IDAgMCwwIDEyLjUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZVRhZ3MgPSBcIk0xNC42LDE2LjZMMTkuMiwxMkwxNC42LDcuNEwxNiw2TDIyLDEyTDE2LDE4TDE0LjYsMTYuNk05LjQsMTYuNkw0LjgsMTJMOS40LDcuNEw4LDZMMiwxMkw4LDE4TDkuNCwxNi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZGVUYWdzQ2hlY2sgPSBcIk02LjU5LDMuNDFMMiw4TDYuNTksMTIuNkw4LDExLjE4TDQuODIsOEw4LDQuODJMNi41OSwzLjQxTTEyLjQxLDMuNDFMMTEsNC44MkwxNC4xOCw4TDExLDExLjE4TDEyLjQxLDEyLjZMMTcsOEwxMi40MSwzLjQxTTIxLjU5LDExLjU5TDEzLjUsMTkuNjhMOS44MywxNkw4LjQyLDE3LjQxTDEzLjUsMjIuNUwyMywxM0wyMS41OSwxMS41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlcGVuID0gXCJNOC4yMSAxMkw2Ljg4IDEyLjg5VjExLjExTDguMjEgMTJNMTEuNDcgOS44MlY3LjM0TDcuMzEgMTAuMTJMOS4xNiAxMS4zNkwxMS40NyA5LjgyTTE2LjcgMTAuMTJMMTIuNTMgNy4zNFY5LjgyTDE0Ljg0IDExLjM2TDE2LjcgMTAuMTJNNy4zMSAxMy44OEwxMS40NyAxNi42NlYxNC4xOEw5LjE2IDEyLjY0TDcuMzEgMTMuODhNMTIuNTMgMTQuMThWMTYuNjZMMTYuNyAxMy44OEwxNC44NCAxMi42NEwxMi41MyAxNC4xOE0xMiAxMC43NEwxMC4xMiAxMkwxMiAxMy4yNkwxMy44OCAxMkwxMiAxMC43NE0yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMk0xOC4xOCAxMC4xMkMxOC4xOCAxMC4wOSAxOC4xOCAxMC4wNyAxOC4xOCAxMC4wNUwxOC4xNyAxMEwxOC4xNyAxMEwxOC4xNiA5Ljk1QzE4LjE1IDkuOTQgMTguMTUgOS45MyAxOC4xNCA5LjkxTDE4LjEzIDkuODlMMTguMTEgOS44NUwxOC4xIDkuODNMMTguMDggOS44TDE4LjA2IDkuNzdMMTguMDMgOS43NEwxOCA5LjcyTDE4IDkuN0wxNy45NiA5LjY4TDE3Ljk1IDkuNjdMMTIuMyA1LjkxQzEyLjEyIDUuNzkgMTEuODkgNS43OSAxMS43MSA1LjkxTDYuMDUgOS42N0w2LjA1IDkuNjhMNiA5LjdDNiA5LjcxIDYgOS43MiA2IDkuNzJMNS45NyA5Ljc0TDUuOTQgOS43N0w1LjkzIDkuOEw1LjkgOS44M0w1Ljg5IDkuODVMNS44NyA5Ljg5TDUuODYgOS45MUw1Ljg0IDkuOTVMNS44NCAxMEw1LjgzIDEwTDUuODIgMTAuMDVDNS44MiAxMC4wNyA1LjgyIDEwLjA5IDUuODIgMTAuMTJWMTMuODhDNS44MiAxMy45MSA1LjgyIDEzLjkzIDUuODIgMTMuOTVMNS44MyAxNEw1Ljg0IDE0TDUuODQgMTQuMDVDNS44NSAxNC4wNiA1Ljg1IDE0LjA3IDUuODYgMTQuMDlMNS44NyAxNC4xMUw1Ljg5IDE0LjE1TDUuOSAxNC4xN0w1LjkyIDE0LjJMNS45NCAxNC4yM0M1Ljk1IDE0LjI0IDUuOTYgMTQuMjUgNS45NyAxNC4yNkw2IDE0LjI4TDYgMTQuM0w2LjA0IDE0LjMyTDYuMDUgMTQuMzNMMTEuNzEgMTguMUMxMS43OSAxOC4xNiAxMS45IDE4LjE4IDEyIDE4LjE4QzEyLjEgMTguMTggMTIuMjEgMTguMTUgMTIuMyAxOC4xTDE3Ljk1IDE0LjMzTDE3Ljk2IDE0LjMyTDE4IDE0LjNMMTggMTQuMjhMMTguMDMgMTQuMjZMMTguMDYgMTQuMjNMMTguMDggMTQuMkwxOC4xIDE0LjE3TDE4LjExIDE0LjE1TDE4LjEzIDE0LjExTDE4LjE0IDE0LjA5TDE4LjE2IDE0LjA1TDE4LjE2IDE0TDE4LjE3IDE0TDE4LjE4IDEzLjk1QzE4LjE4IDEzLjkzIDE4LjE4IDEzLjkxIDE4LjE4IDEzLjg4VjEwLjEyTTE3LjEyIDEyLjg5VjExLjExTDE1Ljc5IDEyTDE3LjEyIDEyLjg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZmZlZSA9IFwiTTIsMjFIMjBWMTlIMk0yMCw4SDE4VjVIMjBNMjAsM0g0VjEzQTQsNCAwIDAsMCA4LDE3SDE0QTQsNCAwIDAsMCAxOCwxM1YxMEgyMEEyLDIgMCAwLDAgMjIsOFY1QzIyLDMuODkgMjEuMSwzIDIwLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29mZmVlTWFrZXIgPSBcIk0yMSAxVjRIN1YyMUgyMVYyM0gyVjNDMiAxLjg5IDIuODkgMSA0IDFIMjFNMjIgMTNWMTVDMjIgMTYuMTEgMjEuMTEgMTcgMjAgMTdIMThDMTggMjAgMTUgMjAgMTQgMjBTMTAgMjAgMTAgMTdWMTFIMjBDMjEuMTEgMTEgMjIgMTEuOSAyMiAxM00yMCAxM0gxOFYxNUgyMFYxM00xNyA5TDE5IDVIOUwxMSA5SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZmZlZU9mZiA9IFwiTTMuMjcgMkwyMiAyMC43MkwyMC43MiAyMkwxOS43MyAyMUgyVjE5SDE3LjczTDE1LjQ0IDE2LjcxQzE1IDE2Ljg5IDE0LjUgMTcgMTQgMTdIOEM1Ljc5IDE3IDQgMTUuMjEgNCAxM1Y1LjI3TDIgMy4yN0wzLjI3IDJNMjIgNVY4QzIyIDkuMSAyMS4xIDEwIDIwIDEwSDE4VjEzQzE4IDEzLjM2IDE3Ljk0IDEzLjcgMTcuODUgMTQuMDRMNi44MSAzSDIwQzIxLjEgMyAyMiAzLjg5IDIyIDVNMjAgNUgxOFY4SDIwVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29mZmVlT2ZmT3V0bGluZSA9IFwiTTIgMy4yN0w0IDUuMjdWMTNDNCAxNS4yMSA1Ljc5IDE3IDggMTdIMTRDMTQuNSAxNyAxNSAxNi44OSAxNS40NCAxNi43MUwxNy43MyAxOUgyVjIxSDE5LjczTDIwLjcyIDIyTDIyIDIwLjcyTDMuMjcgMkwyIDMuMjdNOCAxNUM2LjkgMTUgNiAxNC4xIDYgMTNWNy4yN0wxMy43MyAxNUg4TTIwIDNINi44MUw4LjgxIDVIMTZWMTIuMTlMMTcuODUgMTQuMDRDMTcuOTQgMTMuNyAxOCAxMy4zNiAxOCAxM1YxMEgyMEMyMS4xIDEwIDIyIDkuMSAyMiA4VjVDMjIgMy45IDIxLjEgMyAyMCAzTTIwIDhIMThWNUgyMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZmZlZU91dGxpbmUgPSBcIk0yLDIxVjE5SDIwVjIxSDJNMjAsOFY1SDE4VjhIMjBNMjAsM0EyLDIgMCAwLDEgMjIsNVY4QTIsMiAwIDAsMSAyMCwxMEgxOFYxM0E0LDQgMCAwLDEgMTQsMTdIOEE0LDQgMCAwLDEgNCwxM1YzSDIwTTE2LDVINlYxM0EyLDIgMCAwLDAgOCwxNUgxNEEyLDIgMCAwLDAgMTYsMTNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2ZmZWVUb0dvID0gXCJNMywxOVYxN0gxN0wxNS4yNiwxNS4yNEwxNi42NywxMy44M0wyMC44NCwxOEwxNi42NywyMi4xN0wxNS4yNiwyMC43NkwxNywxOUgzTTE3LDhWNUgxNVY4SDE3TTE3LDNDMTguMTEsMyAxOSwzLjkgMTksNVY4QzE5LDkuMTEgMTguMTEsMTAgMTcsMTBIMTVWMTFBNCw0IDAgMCwxIDExLDE1SDdBNCw0IDAgMCwxIDMsMTFWM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb2ZmZWVUb0dvT3V0bGluZSA9IFwiTTMgM1YxMUE0IDQgMCAwIDAgNyAxNUgxMUE0IDQgMCAwIDAgMTUgMTFWMTBIMTdDMTguMTEgMTAgMTkgOS4xMSAxOSA4VjVDMTkgMy45IDE4LjExIDMgMTcgM0gzTTUgNUgxM1YxMUEyIDIgMCAwIDEgMTEgMTNIN0EyIDIgMCAwIDEgNSAxMVY1TTE1IDVIMTdWOEgxNVY1TTE2LjY3IDEzLjgzTDE1LjI2IDE1LjI0TDE3IDE3SDNWMTlIMTdMMTUuMjYgMjAuNzZMMTYuNjcgMjIuMTdMMjAuODQgMThMMTYuNjcgMTMuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29mZmluID0gXCJNOCwyMkw1LDhMOCwySDE2TDE5LDhMMTYsMjJIOE0xMSw2VjhIOVYxMEgxMVYxNUgxM1YxMEgxNVY4SDEzVjZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29nID0gXCJNMTIsMTUuNUEzLjUsMy41IDAgMCwxIDguNSwxMkEzLjUsMy41IDAgMCwxIDEyLDguNUEzLjUsMy41IDAgMCwxIDE1LjUsMTJBMy41LDMuNSAwIDAsMSAxMiwxNS41TTE5LjQzLDEyLjk3QzE5LjQ3LDEyLjY1IDE5LjUsMTIuMzMgMTkuNSwxMkMxOS41LDExLjY3IDE5LjQ3LDExLjM0IDE5LjQzLDExTDIxLjU0LDkuMzdDMjEuNzMsOS4yMiAyMS43OCw4Ljk1IDIxLjY2LDguNzNMMTkuNjYsNS4yN0MxOS41NCw1LjA1IDE5LjI3LDQuOTYgMTkuMDUsNS4wNUwxNi41Niw2LjA1QzE2LjA0LDUuNjYgMTUuNSw1LjMyIDE0Ljg3LDUuMDdMMTQuNSwyLjQyQzE0LjQ2LDIuMTggMTQuMjUsMiAxNCwySDEwQzkuNzUsMiA5LjU0LDIuMTggOS41LDIuNDJMOS4xMyw1LjA3QzguNSw1LjMyIDcuOTYsNS42NiA3LjQ0LDYuMDVMNC45NSw1LjA1QzQuNzMsNC45NiA0LjQ2LDUuMDUgNC4zNCw1LjI3TDIuMzQsOC43M0MyLjIxLDguOTUgMi4yNyw5LjIyIDIuNDYsOS4zN0w0LjU3LDExQzQuNTMsMTEuMzQgNC41LDExLjY3IDQuNSwxMkM0LjUsMTIuMzMgNC41MywxMi42NSA0LjU3LDEyLjk3TDIuNDYsMTQuNjNDMi4yNywxNC43OCAyLjIxLDE1LjA1IDIuMzQsMTUuMjdMNC4zNCwxOC43M0M0LjQ2LDE4Ljk1IDQuNzMsMTkuMDMgNC45NSwxOC45NUw3LjQ0LDE3Ljk0QzcuOTYsMTguMzQgOC41LDE4LjY4IDkuMTMsMTguOTNMOS41LDIxLjU4QzkuNTQsMjEuODIgOS43NSwyMiAxMCwyMkgxNEMxNC4yNSwyMiAxNC40NiwyMS44MiAxNC41LDIxLjU4TDE0Ljg3LDE4LjkzQzE1LjUsMTguNjcgMTYuMDQsMTguMzQgMTYuNTYsMTcuOTRMMTkuMDUsMTguOTVDMTkuMjcsMTkuMDMgMTkuNTQsMTguOTUgMTkuNjYsMTguNzNMMjEuNjYsMTUuMjdDMjEuNzgsMTUuMDUgMjEuNzMsMTQuNzggMjEuNTQsMTQuNjNMMTkuNDMsMTIuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29nQm94ID0gXCJNMTcuMjUsMTJDMTcuMjUsMTIuMjMgMTcuMjMsMTIuNDYgMTcuMiwxMi42OEwxOC42OCwxMy44NEMxOC44MSwxMy45NSAxOC44NSwxNC4xMyAxOC43NiwxNC4yOUwxNy4zNiwxNi43MUMxNy4yNywxNi44NiAxNy4wOSwxNi45MiAxNi45MywxNi44NkwxNS4xOSwxNi4xNkMxNC44MywxNi40NCAxNC40MywxNi42NyAxNCwxNi44NUwxMy43NSwxOC43QzEzLjcyLDE4Ljg3IDEzLjU3LDE5IDEzLjQsMTlIMTAuNkMxMC40MywxOSAxMC4yOCwxOC44NyAxMC4yNSwxOC43TDEwLDE2Ljg1QzkuNTYsMTYuNjcgOS4xNywxNi40NCA4LjgxLDE2LjE2TDcuMDcsMTYuODZDNi45MSwxNi45MiA2LjczLDE2Ljg2IDYuNjQsMTYuNzFMNS4yNCwxNC4yOUM1LjE1LDE0LjEzIDUuMTksMTMuOTUgNS4zMiwxMy44NEw2LjgsMTIuNjhDNi43NywxMi40NiA2Ljc1LDEyLjIzIDYuNzUsMTJDNi43NSwxMS43NyA2Ljc3LDExLjU0IDYuOCwxMS4zMkw1LjMyLDEwLjE2QzUuMTksMTAuMDUgNS4xNSw5Ljg2IDUuMjQsOS43MUw2LjY0LDcuMjlDNi43Myw3LjEzIDYuOTEsNy4wNyA3LjA3LDcuMTNMOC44MSw3Ljg0QzkuMTcsNy41NiA5LjU2LDcuMzIgMTAsNy4xNUwxMC4yNSw1LjI5QzEwLjI4LDUuMTMgMTAuNDMsNSAxMC42LDVIMTMuNEMxMy41Nyw1IDEzLjcyLDUuMTMgMTMuNzUsNS4yOUwxNCw3LjE1QzE0LjQzLDcuMzIgMTQuODMsNy41NiAxNS4xOSw3Ljg0TDE2LjkzLDcuMTNDMTcuMDksNy4wNyAxNy4yNyw3LjEzIDE3LjM2LDcuMjlMMTguNzYsOS43MUMxOC44NSw5Ljg2IDE4LjgxLDEwLjA1IDE4LjY4LDEwLjE2TDE3LjIsMTEuMzJDMTcuMjMsMTEuNTQgMTcuMjUsMTEuNzcgMTcuMjUsMTJNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNNMTIsMTBDMTAuODksMTAgMTAsMTAuODkgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkMxNCwxMC44OSAxMy4xLDEwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZ0Nsb2Nrd2lzZSA9IFwiTTEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTQgMjEgMTUuOTIgMjAuMzQgMTcuNSAxOS4xNEwxNi4wNiAxNy43QzE0Ljg3IDE4LjU0IDEzLjQ1IDE5IDEyIDE5QzguMTMgMTkgNSAxNS44NyA1IDEyUzguMTMgNSAxMiA1IDE5IDguMTMgMTkgMTJIMTZMMjAgMTZMMjQgMTJIMjFDMjEgNy4wMyAxNi45NyAzIDEyIDNNNy43MSAxMy4xNkM3LjYyIDEzLjIzIDcuNTkgMTMuMzUgNy42NCAxMy40NUw4LjU0IDE1QzguNiAxNS4xMiA4LjcyIDE1LjEyIDguODIgMTUuMTJMOS45NSAxNC42N0MxMC4xOSAxNC44MyAxMC40NCAxNC45NyAxMC43IDE1LjA5TDEwLjg4IDE2LjI4QzEwLjkgMTYuMzkgMTEgMTYuNDcgMTEuMSAxNi40N0gxMi45QzEzIDE2LjUgMTMuMTEgMTYuNDEgMTMuMTMgMTYuM0wxMy4zMSAxNS4xMkMxMy41OCAxNSAxMy44NCAxNC44NSAxNC4wNyAxNC42N0wxNS4xOSAxNS4xMkMxNS4zIDE1LjE2IDE1LjQyIDE1LjExIDE1LjQ3IDE1TDE2LjM3IDEzLjVDMTYuNDIgMTMuMzggMTYuMzkgMTMuMjYgMTYuMzEgMTMuMTlMMTUuMzEgMTIuNDVDMTUuMzQgMTIuMTUgMTUuMzQgMTEuODUgMTUuMzEgMTEuNTVMMTYuMzEgMTAuNzlDMTYuNCAxMC43MiAxNi40MiAxMC42MSAxNi4zNyAxMC41TDE1LjQ3IDguOTVDMTUuNDEgOC44NSAxNS4zIDguODEgMTUuMTkgOC44NUwxNC4wNyA5LjNDMTMuODMgOS4xMyAxMy41NyA5IDEzLjMgOC44OEwxMy4xMyA3LjY5QzEzLjExIDcuNTggMTMgNy41IDEyLjkgNy41SDExLjE0QzExLjA0IDcuNSAxMC45NSA3LjU3IDEwLjkzIDcuNjdMMTAuNzYgOC44NUMxMC41IDguOTcgMTAuMjMgOS4xMiAxMCA5LjNMOC44NSA4Ljg4QzguNzQgOC44NCA4LjYxIDguODkgOC41NiA5TDcuNjUgMTAuNUM3LjYgMTAuNjIgNy42MyAxMC43NCA3LjcxIDEwLjgxTDguNzEgMTEuNTVDOC42OSAxMS43IDguNjkgMTEuODUgOC43MSAxMkM4LjcgMTIuMTUgOC43IDEyLjMgOC43MSAxMi40NUw3LjcxIDEzLjE5TTEyIDEzLjVIMTJDMTEuMTYgMTMuNSAxMC41IDEyLjgyIDEwLjUgMTJDMTAuNSAxMS4xNyAxMS4xNyAxMC41IDEyIDEwLjVTMTMuNSAxMS4xNyAxMy41IDEyIDEyLjgzIDEzLjUgMTIgMTMuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZ0NvdW50ZXJjbG9ja3dpc2UgPSBcIk0xMiAzQzcuMDMgMyAzIDcuMDMgMyAxMkgwTDQgMTZMOCAxMkg1QzUgOC4xMyA4LjEzIDUgMTIgNVMxOSA4LjEzIDE5IDEyIDE1Ljg3IDE5IDEyIDE5QzEwLjU1IDE5IDkuMTMgMTguNTQgNy45NCAxNy43TDYuNSAxOS4xNEM4LjA4IDIwLjM0IDEwIDIxIDEyIDIxQzE2Ljk3IDIxIDIxIDE2Ljk3IDIxIDEyUzE2Ljk3IDMgMTIgM00xNi4yOSAxMy4xOUwxNS4yOSAxMi40NUMxNS4zIDEyLjMgMTUuMyAxMi4xNSAxNS4yOSAxMkMxNS4zMSAxMS44NSAxNS4zMSAxMS43IDE1LjI5IDExLjU1TDE2LjI5IDEwLjgxQzE2LjM3IDEwLjc0IDE2LjQgMTAuNjIgMTYuMzUgMTAuNUwxNS40NCA5QzE1LjM5IDguODkgMTUuMjYgOC44NCAxNS4xNSA4Ljg4TDE0IDkuM0MxMy43NyA5LjEyIDEzLjUgOC45NyAxMy4yNCA4Ljg1TDEzLjA3IDcuNjdDMTMuMDUgNy41NyAxMi45NiA3LjUgMTIuODYgNy41SDExLjFDMTEgNy41IDEwLjg5IDcuNTggMTAuODcgNy42OUwxMC43IDguODhDMTAuNDMgOSAxMC4xNyA5LjEzIDkuOTMgOS4zTDguODEgOC44NUM4LjcxIDguODEgOC41OSA4Ljg1IDguNTMgOC45NUw3LjYzIDEwLjVDNy41OCAxMC42MSA3LjYgMTAuNzIgNy42OSAxMC43OUw4LjY5IDExLjU1QzguNjYgMTEuODUgOC42NiAxMi4xNSA4LjY5IDEyLjQ1TDcuNjkgMTMuMTlDNy42MSAxMy4yNiA3LjU4IDEzLjM4IDcuNjMgMTMuNUw4LjUzIDE1QzguNTggMTUuMTEgOC43IDE1LjE2IDguODEgMTUuMTJMOS45MyAxNC42N0MxMC4xNiAxNC44NSAxMC40MiAxNSAxMC42OSAxNS4xMkwxMC44NyAxNi4zQzEwLjg5IDE2LjQxIDExIDE2LjUgMTEuMSAxNi40N0gxMi45QzEzIDE2LjQ3IDEzLjExIDE2LjM5IDEzLjEyIDE2LjI4TDEzLjMgMTUuMDlDMTMuNTYgMTQuOTcgMTMuODEgMTQuODMgMTQuMDUgMTQuNjdMMTUuMTggMTUuMTJDMTUuMjggMTUuMTIgMTUuNCAxNS4xMiAxNS40NiAxNUwxNi4zNiAxMy40NUMxNi40MSAxMy4zNSAxNi4zOCAxMy4yMyAxNi4yOSAxMy4xNk0xMiAxMy41QzExLjE3IDEzLjUgMTAuNSAxMi44MyAxMC41IDEyUzExLjE3IDEwLjUgMTIgMTAuNSAxMy41IDExLjE3IDEzLjUgMTJDMTMuNSAxMi44MiAxMi44NCAxMy41IDEyIDEzLjVIMTJcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dPZmYgPSBcIk0yMi4xMiAyMS40NkwyLjQgMS43M0wxLjEyIDNMNCA1Ljg3TDIuMzQgOC43M0MyLjIxIDguOTUgMi4yNyA5LjIyIDIuNDYgOS4zN0w0LjU3IDExQzQuNTMgMTEuMzQgNC41IDExLjY3IDQuNSAxMlM0LjUzIDEyLjY1IDQuNTcgMTIuOTdMMi40NiAxNC42M0MyLjI3IDE0Ljc4IDIuMjEgMTUuMDUgMi4zNCAxNS4yN0w0LjM0IDE4LjczQzQuNDYgMTguOTUgNC43MyAxOS4wMyA0Ljk1IDE4Ljk1TDcuNDQgMTcuOTRDNy45NiAxOC4zNCA4LjUgMTguNjggOS4xMyAxOC45M0w5LjUgMjEuNThDOS41NCAyMS44MiA5Ljc1IDIyIDEwIDIySDE0QzE0LjI1IDIyIDE0LjQ2IDIxLjgyIDE0LjUgMjEuNThMMTQuODcgMTguOTNDMTUuMzggMTguNzIgMTUuODMgMTguNDUgMTYuMjYgMTguMTRMMjAuODUgMjIuNzNMMjIuMTIgMjEuNDZNMTIgMTUuNUMxMC4wNyAxNS41IDguNSAxMy45MyA4LjUgMTJDOC41IDExLjUgOC42MiAxMS4wOCA4Ljc5IDEwLjY3TDEzLjMzIDE1LjIxQzEyLjkyIDE1LjM5IDEyLjUgMTUuNSAxMiAxNS41TTExLjc0IDguNTNMOC41NiA1LjM1QzguNzUgNS4yNSA4LjkzIDUuMTUgOS4xMyA1LjA3TDkuNSAyLjQyQzkuNTQgMi4xOCA5Ljc1IDIgMTAgMkgxNEMxNC4yNSAyIDE0LjQ2IDIuMTggMTQuNSAyLjQyTDE0Ljg3IDUuMDdDMTUuNSA1LjMyIDE2LjA0IDUuNjYgMTYuNTYgNi4wNUwxOS4wNSA1LjA1QzE5LjI3IDQuOTYgMTkuNTQgNS4wNSAxOS42NiA1LjI3TDIxLjY2IDguNzNDMjEuNzggOC45NSAyMS43MyA5LjIyIDIxLjU0IDkuMzdMMTkuNDMgMTFDMTkuNDcgMTEuMzQgMTkuNSAxMS42NyAxOS41IDEyUzE5LjQ3IDEyLjY1IDE5LjQzIDEyLjk3TDIxLjU0IDE0LjYzQzIxLjczIDE0Ljc4IDIxLjc4IDE1LjA1IDIxLjY2IDE1LjI3TDIwLjUgMTcuMjlMMTUuNDcgMTIuMjZDMTUuNSAxMi4xOCAxNS41IDEyLjA5IDE1LjUgMTJDMTUuNSAxMC4wNyAxMy45MyA4LjUgMTIgOC41QzExLjkxIDguNSAxMS44MyA4LjUgMTEuNzQgOC41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w0IDUuODhMMi4zNCA4LjczQzIuMjEgOC45NSAyLjI3IDkuMjIgMi40NiA5LjM3TDQuNTcgMTFMNC41IDEyTDQuNTcgMTIuOTdMMi40NiAxNC42M0MyLjI3IDE0Ljc4IDIuMjEgMTUuMDUgMi4zNCAxNS4yN0w0LjM0IDE4LjczQzQuNDYgMTguOTUgNC43MyAxOS4wMyA0Ljk1IDE4Ljk1TDcuNDQgMTcuOTRDNy45NiAxOC4zNCA4LjUgMTguNjggOS4xMyAxOC45M0w5LjUgMjEuNThDOS41NCAyMS44MiA5Ljc1IDIyIDEwIDIySDE0QzE0LjI1IDIyIDE0LjQ2IDIxLjgyIDE0LjUgMjEuNThMMTQuODcgMTguOTNDMTUuMzggMTguNzMgMTUuODMgMTguNDUgMTYuMjYgMTguMTVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTAgMTEuOUwxMi4xIDE0QzEyLjA2IDE0IDEyLjAzIDE0IDEyIDE0QzEwLjkgMTQgMTAgMTMuMTEgMTAgMTJDMTAgMTEuOTcgMTAgMTEuOTQgMTAgMTEuOU0xMy4xMyAxNy4zOUwxMi43NiAyMEgxMS4yNEwxMC44NyAxNy4zOEM5LjY4IDE3LjE0IDguNjMgMTYuNSA3Ljg2IDE1LjYyTDUuNDMgMTYuNjZMNC42OCAxNS4zNkw2LjggMTMuOEM2LjQgMTIuNjQgNi40IDExLjM3IDYuOCAxMC4yTDQuNjkgOC42NUw1LjQ0IDcuMzVMNS41IDcuMzdMOC40IDEwLjI5QzguMTUgMTAuOCA4IDExLjM4IDggMTJDOCAxNC4yMSA5Ljc5IDE2IDEyIDE2QzEyLjYyIDE2IDEzLjIgMTUuODYgMTMuNzEgMTUuNkwxNC44MyAxNi43MkMxNC4zMSAxNy4wMyAxMy43NCAxNy4yNiAxMy4xMyAxNy4zOU0xMC4wNiA2Ljg2TDguNTUgNS4zNUM4Ljc0IDUuMjYgOC45MyA1LjE1IDkuMTMgNS4wN0w5LjUgMi40MkM5LjU0IDIuMTggOS43NSAyIDEwIDJIMTRDMTQuMjUgMiAxNC40NiAyLjE4IDE0LjUgMi40MkwxNC44NyA1LjA3QzE1LjUgNS4zMiAxNi4wNCA1LjY2IDE2LjU2IDYuMDVMMTkuMDUgNS4wNUMxOS4yNyA0Ljk2IDE5LjU0IDUuMDUgMTkuNjYgNS4yN0wyMS42NiA4LjczQzIxLjc5IDguOTUgMjEuNzMgOS4yMiAyMS41NCA5LjM3TDE5LjQzIDExTDE5LjUgMTJMMTkuNDMgMTNMMjEuNTQgMTQuNjNDMjEuNzMgMTQuNzggMjEuNzkgMTUuMDUgMjEuNjYgMTUuMjdMMjAuNSAxNy4yOUwxOS4wNCAxNS44NEwxOS4zMiAxNS4zNkwxNy4yIDEzLjgxQzE3LjYgMTIuNjQgMTcuNiAxMS4zNyAxNy4yIDEwLjJMMTkuMzEgOC42NUwxOC41NiA3LjM1TDE2LjE1IDguMzlDMTUuMzggNy41IDE0LjMyIDYuODYgMTMuMTIgNi42MkwxMi43NSA0SDExLjI1TDEwLjg4IDYuNjFDMTAuNiA2LjY3IDEwLjMyIDYuNzUgMTAuMDYgNi44Nk0xMiA4QzE0LjIxIDggMTYgOS43OSAxNiAxMkMxNiAxMi4yNSAxNS45NyAxMi41IDE1LjkzIDEyLjczTDExLjI3IDguMDdDMTEuNSA4LjAzIDExLjc1IDggMTIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dPdXRsaW5lID0gXCJNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4TTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxME0xMCwyMkM5Ljc1LDIyIDkuNTQsMjEuODIgOS41LDIxLjU4TDkuMTMsMTguOTNDOC41LDE4LjY4IDcuOTYsMTguMzQgNy40NCwxNy45NEw0Ljk1LDE4Ljk1QzQuNzMsMTkuMDMgNC40NiwxOC45NSA0LjM0LDE4LjczTDIuMzQsMTUuMjdDMi4yMSwxNS4wNSAyLjI3LDE0Ljc4IDIuNDYsMTQuNjNMNC41NywxMi45N0w0LjUsMTJMNC41NywxMUwyLjQ2LDkuMzdDMi4yNyw5LjIyIDIuMjEsOC45NSAyLjM0LDguNzNMNC4zNCw1LjI3QzQuNDYsNS4wNSA0LjczLDQuOTYgNC45NSw1LjA1TDcuNDQsNi4wNUM3Ljk2LDUuNjYgOC41LDUuMzIgOS4xMyw1LjA3TDkuNSwyLjQyQzkuNTQsMi4xOCA5Ljc1LDIgMTAsMkgxNEMxNC4yNSwyIDE0LjQ2LDIuMTggMTQuNSwyLjQyTDE0Ljg3LDUuMDdDMTUuNSw1LjMyIDE2LjA0LDUuNjYgMTYuNTYsNi4wNUwxOS4wNSw1LjA1QzE5LjI3LDQuOTYgMTkuNTQsNS4wNSAxOS42Niw1LjI3TDIxLjY2LDguNzNDMjEuNzksOC45NSAyMS43Myw5LjIyIDIxLjU0LDkuMzdMMTkuNDMsMTFMMTkuNSwxMkwxOS40MywxM0wyMS41NCwxNC42M0MyMS43MywxNC43OCAyMS43OSwxNS4wNSAyMS42NiwxNS4yN0wxOS42NiwxOC43M0MxOS41NCwxOC45NSAxOS4yNywxOS4wNCAxOS4wNSwxOC45NUwxNi41NiwxNy45NUMxNi4wNCwxOC4zNCAxNS41LDE4LjY4IDE0Ljg3LDE4LjkzTDE0LjUsMjEuNThDMTQuNDYsMjEuODIgMTQuMjUsMjIgMTQsMjJIMTBNMTEuMjUsNEwxMC44OCw2LjYxQzkuNjgsNi44NiA4LjYyLDcuNSA3Ljg1LDguMzlMNS40NCw3LjM1TDQuNjksOC42NUw2LjgsMTAuMkM2LjQsMTEuMzcgNi40LDEyLjY0IDYuOCwxMy44TDQuNjgsMTUuMzZMNS40MywxNi42Nkw3Ljg2LDE1LjYyQzguNjMsMTYuNSA5LjY4LDE3LjE0IDEwLjg3LDE3LjM4TDExLjI0LDIwSDEyLjc2TDEzLjEzLDE3LjM5QzE0LjMyLDE3LjE0IDE1LjM3LDE2LjUgMTYuMTQsMTUuNjJMMTguNTcsMTYuNjZMMTkuMzIsMTUuMzZMMTcuMiwxMy44MUMxNy42LDEyLjY0IDE3LjYsMTEuMzcgMTcuMiwxMC4yTDE5LjMxLDguNjVMMTguNTYsNy4zNUwxNi4xNSw4LjM5QzE1LjM4LDcuNSAxNC4zMiw2Ljg2IDEzLjEyLDYuNjJMMTIuNzUsNEgxMS4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dSZWZyZXNoID0gXCJNMTggMTQuNUMxOS4xIDE0LjUgMjAuMSAxNC45IDIwLjggMTUuN0wyMiAxNC41VjE4LjVIMThMMTkuOCAxNi43QzE5LjMgMTYuMyAxOC43IDE2IDE4IDE2QzE2LjYgMTYgMTUuNSAxNy4xIDE1LjUgMTguNVMxNi42IDIxIDE4IDIxQzE4LjggMjEgMTkuNSAyMC42IDIwIDIwSDIxLjdDMjEuMSAyMS41IDE5LjcgMjIuNSAxOCAyMi41QzE1LjggMjIuNSAxNCAyMC43IDE0IDE4LjVTMTUuOCAxNC41IDE4IDE0LjVNMTEuNSAxOC41QzExLjUgMTcuNCAxMS44IDE2LjQgMTIuMiAxNS41SDEyQzEwLjEgMTUuNSA4LjUgMTMuOSA4LjUgMTJTMTAuMSA4LjUgMTIgOC41IDE1LjUgMTAuMSAxNS41IDEyQzE1LjUgMTIuMiAxNS41IDEyLjQgMTUuNCAxMi41QzE2LjIgMTIuMiAxNyAxMiAxOCAxMkMxOC41IDEyIDE5IDEyLjEgMTkuNSAxMi4yVjEyQzE5LjUgMTEuNyAxOS41IDExLjMgMTkuNCAxMUwyMS41IDkuNEMyMS43IDkuMiAyMS43IDkgMjEuNiA4LjhMMTkuNiA1LjNDMTkuNSA1IDE5LjMgNSAxOSA1TDE2LjUgNkMxNiA1LjYgMTUuNCA1LjMgMTQuOCA1TDE0LjQgMi4zQzE0LjUgMi4yIDE0LjIgMiAxNCAySDEwQzkuOCAyIDkuNSAyLjIgOS41IDIuNEw5LjEgNS4xQzguNSA1LjMgOCA1LjcgNy40IDZMNSA1QzQuNyA1IDQuNSA1IDQuMyA1LjNMMi4zIDguOEMyLjIgOSAyLjMgOS4yIDIuNSA5LjRMNC42IDExQzQuNiAxMS4zIDQuNSAxMS43IDQuNSAxMlM0LjUgMTIuNyA0LjYgMTNMMi41IDE0LjdDMi4zIDE0LjkgMi4zIDE1LjEgMi40IDE1LjNMNC40IDE4LjhDNC41IDE5IDQuNyAxOSA1IDE5TDcuNSAxOEM4IDE4LjQgOC42IDE4LjcgOS4yIDE5TDkuNiAyMS43QzkuNiAyMS45IDkuOCAyMi4xIDEwLjEgMjIuMUgxMi42QzExLjkgMjEgMTEuNSAxOS44IDExLjUgMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dSZWZyZXNoT3V0bGluZSA9IFwiTTE4IDE0LjVDMTkuMSAxNC41IDIwLjEgMTQuOSAyMC44IDE1LjdMMjIgMTQuNVYxOC41SDE4TDE5LjggMTYuN0MxOS4zIDE2LjMgMTguNyAxNiAxOCAxNkMxNi42IDE2IDE1LjUgMTcuMSAxNS41IDE4LjVTMTYuNiAyMSAxOCAyMUMxOC44IDIxIDE5LjUgMjAuNiAyMCAyMEgyMS43QzIxLjEgMjEuNSAxOS43IDIyLjUgMTggMjIuNUMxNS44IDIyLjUgMTQgMjAuNyAxNCAxOC41UzE1LjggMTQuNSAxOCAxNC41TTExLjcgMjBIMTEuM0wxMC45IDE3LjRDOS43IDE3LjIgOC43IDE2LjUgNy45IDE1LjZMNS41IDE2LjZMNC43IDE1LjNMNi44IDEzLjdDNi40IDEyLjUgNi40IDExLjMgNi44IDEwLjFMNC43IDguN0w1LjUgNy40TDcuOSA4LjRDOC43IDcuNSA5LjcgNi45IDEwLjkgNi42TDExLjIgNEgxMi43TDEzLjEgNi42QzE0LjMgNi44IDE1LjQgNy41IDE2LjEgOC40TDE4LjUgNy40TDE5LjMgOC43TDE3LjIgMTAuMkMxNy40IDEwLjggMTcuNSAxMS40IDE3LjUgMTJIMThDMTguNSAxMiAxOSAxMi4xIDE5LjUgMTIuMlYxMkwxOS40IDExTDIxLjUgOS40QzIxLjcgOS4yIDIxLjcgOSAyMS42IDguOEwxOS42IDUuM0MxOS41IDUgMTkuMyA1IDE5IDVMMTYuNSA2QzE2IDUuNiAxNS40IDUuMyAxNC44IDVMMTQuNCAyLjNDMTQuNSAyLjIgMTQuMiAyIDE0IDJIMTBDOS44IDIgOS41IDIuMiA5LjUgMi40TDkuMSA1LjFDOC41IDUuMyA4IDUuNyA3LjQgNkw1IDVDNC43IDUgNC41IDUgNC4zIDUuM0wyLjMgOC44QzIuMiA5IDIuMyA5LjIgMi41IDkuNEw0LjYgMTFMNC41IDEyTDQuNiAxM0wyLjUgMTQuN0MyLjMgMTQuOSAyLjMgMTUuMSAyLjQgMTUuM0w0LjQgMTguOEM0LjUgMTkgNC43IDE5IDUgMTlMNy41IDE4QzggMTguNCA4LjYgMTguNyA5LjIgMTlMOS42IDIxLjdDOS42IDIxLjkgOS44IDIyLjEgMTAuMSAyMi4xSDEyLjZDMTIuMSAyMS40IDExLjkgMjAuNyAxMS43IDIwTTE2IDEyLjNWMTJDMTYgOS44IDE0LjIgOCAxMiA4UzggOS44IDggMTJDOCAxNC4yIDkuOCAxNiAxMiAxNkMxMi43IDE0LjMgMTQuMiAxMi45IDE2IDEyLjNNMTAgMTJDMTAgMTAuOSAxMC45IDEwIDEyIDEwUzE0IDEwLjkgMTQgMTIgMTMuMSAxNCAxMiAxNCAxMCAxMy4xIDEwIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZ1N5bmMgPSBcIk0xMS41IDE4LjVDMTEuNSAxNy40IDExLjggMTYuNCAxMi4yIDE1LjVIMTJDMTAuMSAxNS41IDguNSAxMy45IDguNSAxMlMxMC4xIDguNSAxMiA4LjUgMTUuNSAxMC4xIDE1LjUgMTJDMTUuNSAxMi4yIDE1LjUgMTIuNCAxNS40IDEyLjVDMTYuMiAxMi4yIDE3IDEyIDE4IDEyQzE4LjUgMTIgMTkgMTIuMSAxOS41IDEyLjJWMTJDMTkuNSAxMS43IDE5LjUgMTEuMyAxOS40IDExTDIxLjUgOS40QzIxLjcgOS4yIDIxLjcgOSAyMS42IDguOEwxOS42IDUuM0MxOS41IDUgMTkuMyA1IDE5IDVMMTYuNSA2QzE2IDUuNiAxNS40IDUuMyAxNC44IDVMMTQuNCAyLjNDMTQuNSAyLjIgMTQuMiAyIDE0IDJIMTBDOS44IDIgOS41IDIuMiA5LjUgMi40TDkuMSA1LjFDOC41IDUuMyA4IDUuNyA3LjQgNkw1IDVDNC43IDUgNC41IDUgNC4zIDUuM0wyLjMgOC44QzIuMiA5IDIuMyA5LjIgMi41IDkuNEw0LjYgMTFDNC42IDExLjMgNC41IDExLjcgNC41IDEyUzQuNSAxMi43IDQuNiAxM0wyLjUgMTQuN0MyLjMgMTQuOSAyLjMgMTUuMSAyLjQgMTUuM0w0LjQgMTguOEM0LjUgMTkgNC43IDE5IDUgMTlMNy41IDE4QzggMTguNCA4LjYgMTguNyA5LjIgMTlMOS42IDIxLjdDOS42IDIxLjkgOS44IDIyLjEgMTAuMSAyMi4xSDEyLjZDMTEuOSAyMSAxMS41IDE5LjggMTEuNSAxOC41TTE4IDE0LjVWMTNMMTUuOCAxNS4yTDE4IDE3LjRWMTZDMTkuNCAxNiAyMC41IDE3LjEgMjAuNSAxOC41QzIwLjUgMTguOSAyMC40IDE5LjMgMjAuMiAxOS42TDIxLjMgMjAuN0MyMi41IDE4LjkgMjIgMTYuNCAyMC4yIDE1LjJDMTkuNiAxNC43IDE4LjggMTQuNSAxOCAxNC41TTE4IDIxQzE2LjYgMjEgMTUuNSAxOS45IDE1LjUgMTguNUMxNS41IDE4LjEgMTUuNiAxNy43IDE1LjggMTcuNEwxNC43IDE2LjNDMTMuNSAxOC4xIDE0IDIwLjYgMTUuOCAyMS44QzE2LjUgMjIuMiAxNy4yIDIyLjUgMTggMjIuNVYyNEwyMC4yIDIxLjhMMTggMTkuNVYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dTeW5jT3V0bGluZSA9IFwiTTExLjcgMjBIMTEuM0wxMC45IDE3LjRDOS43IDE3LjIgOC43IDE2LjUgNy45IDE1LjZMNS41IDE2LjZMNC43IDE1LjNMNi44IDEzLjdDNi40IDEyLjUgNi40IDExLjMgNi44IDEwLjFMNC43IDguN0w1LjUgNy40TDcuOSA4LjRDOC43IDcuNSA5LjcgNi45IDEwLjkgNi42TDExLjIgNEgxMi43TDEzLjEgNi42QzE0LjMgNi44IDE1LjQgNy41IDE2LjEgOC40TDE4LjUgNy40TDE5LjMgOC43TDE3LjIgMTAuMkMxNy40IDEwLjggMTcuNSAxMS40IDE3LjUgMTJIMThDMTguNSAxMiAxOSAxMi4xIDE5LjUgMTIuMlYxMkwxOS40IDExTDIxLjUgOS40QzIxLjcgOS4yIDIxLjcgOSAyMS42IDguOEwxOS42IDUuM0MxOS41IDUgMTkuMyA1IDE5IDVMMTYuNSA2QzE2IDUuNiAxNS40IDUuMyAxNC44IDVMMTQuNCAyLjNDMTQuNSAyLjIgMTQuMiAyIDE0IDJIMTBDOS44IDIgOS41IDIuMiA5LjUgMi40TDkuMSA1LjFDOC41IDUuMyA4IDUuNyA3LjQgNkw1IDVDNC43IDUgNC41IDUgNC4zIDUuM0wyLjMgOC44QzIuMiA5IDIuMyA5LjIgMi41IDkuNEw0LjYgMTFMNC41IDEyTDQuNiAxM0wyLjUgMTQuN0MyLjMgMTQuOSAyLjMgMTUuMSAyLjQgMTUuM0w0LjQgMTguOEM0LjUgMTkgNC43IDE5IDUgMTlMNy41IDE4QzggMTguNCA4LjYgMTguNyA5LjIgMTlMOS42IDIxLjdDOS42IDIxLjkgOS44IDIyLjEgMTAuMSAyMi4xSDEyLjZDMTIuMSAyMS40IDExLjkgMjAuNyAxMS43IDIwTTE2IDEyLjNWMTJDMTYgOS44IDE0LjIgOCAxMiA4UzggOS44IDggMTJDOCAxNC4yIDkuOCAxNiAxMiAxNkMxMi43IDE0LjMgMTQuMiAxMi45IDE2IDEyLjNNMTAgMTJDMTAgMTAuOSAxMC45IDEwIDEyIDEwUzE0IDEwLjkgMTQgMTIgMTMuMSAxNCAxMiAxNCAxMCAxMy4xIDEwIDEyTTE4IDE0LjVWMTNMMTUuOCAxNS4yTDE4IDE3LjRWMTZDMTkuNCAxNiAyMC41IDE3LjEgMjAuNSAxOC41QzIwLjUgMTguOSAyMC40IDE5LjMgMjAuMiAxOS42TDIxLjMgMjAuN0MyMi41IDE4LjkgMjIgMTYuNCAyMC4yIDE1LjJDMTkuNiAxNC43IDE4LjggMTQuNSAxOCAxNC41TTE4IDIxQzE2LjYgMjEgMTUuNSAxOS45IDE1LjUgMTguNUMxNS41IDE4LjEgMTUuNiAxNy43IDE1LjggMTcuNEwxNC43IDE2LjNDMTMuNSAxOC4xIDE0IDIwLjYgMTUuOCAyMS44QzE2LjUgMjIuMiAxNy4yIDIyLjUgMTggMjIuNVYyNEwyMC4yIDIxLjhMMTggMTkuNVYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dUcmFuc2ZlciA9IFwiTTE0IDE4VjE2TDEwIDE5LjVMMTQgMjNWMjFIMTdWMThIMTRNMjIgMTUuNUwxOCAxMlYxNEgxNVYxN0gxOFYxOUwyMiAxNS41TTIxLjY2IDguNzNMMTkuNjYgNS4yN0MxOS41NCA1LjA1IDE5LjI4IDQuOTYgMTkuMDUgNS4wNUwxNi41NiA2LjA1QzE2LjA1IDUuNjQgMTUuNSA1LjMxIDE0Ljg3IDUuMDVMMTQuNSAyLjQyQzE0LjQ2IDIuMTggMTQuMjUgMiAxNCAySDEwQzkuNzUgMiA5LjU0IDIuMTggOS41IDIuNDJMOS4xMyA1LjA3QzguNSA1LjMzIDcuOTYgNS42NiA3LjQ0IDYuMDdMNSA1LjA1QzQuNzcgNC45NiA0LjUgNS4wNSA0LjM5IDUuMjdMMi4zOSA4LjczQzIuMjYgOC45NCAyLjMxIDkuMjIgMi41IDkuMzdMNC41NyAxMUM0LjUzIDExLjMzIDQuNSAxMS42NyA0LjUgMTJDNC41IDEyLjMzIDQuNTMgMTIuNjcgNC41NyAxM0wyLjQ2IDE0LjYzQzIuMjYgMTQuNzggMi4yMSAxNS4wNiAyLjM0IDE1LjI3TDQuMzQgMTguNzNDNC40NSAxOSA0Ljc0IDE5LjExIDUgMTlMNSAxOUw3LjUgMThDNy43NCAxOC4xOSA4IDE4LjM3IDguMjYgMTguNTNMMTEuNzcgMTUuNTNDOS44NCAxNS40IDguMzggMTMuNzMgOC41IDExLjhDOC42NSA5Ljg3IDEwLjMyIDguNDEgMTIuMjUgOC41NUMxMy42OSA4LjY0IDE0LjkyIDkuNjIgMTUuMzUgMTFIMTkuNDNMMjEuNTQgOS4zN0MyMS43MyA5LjIyIDIxLjc4IDguOTQgMjEuNjYgOC43M1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dUcmFuc2Zlck91dGxpbmUgPSBcIk0xNSAxN1YxNEgxOFYxMkwyMiAxNS41TDE4IDE5VjE3SDE1TTE3IDE4VjIxSDE0VjIzTDEwIDE5LjVMMTQgMTZWMThIMTdNMTIgOEM5Ljc5IDggOCA5LjggOCAxMkM4IDEzLjkxIDkuMzUgMTUuNTQgMTEuMjEgMTUuOTJMMTYgMTEuODZDMTUuOTMgOS43MSAxNC4xNiA4IDEyIDhNMTIgMTRDMTAuOSAxNCAxMCAxMy4xMSAxMCAxMlMxMC45IDEwIDEyIDEwIDE0IDEwLjkgMTQgMTIgMTMuMTEgMTQgMTIgMTRNMjEuNjYgOC43M0wxOS42NiA1LjI3QzE5LjU0IDUuMDUgMTkuMjggNC45NiAxOS4wNSA1LjA1TDE2LjU2IDYuMDVDMTYuMDUgNS42NCAxNS41IDUuMzEgMTQuODcgNS4wNUwxNC41IDIuNDJDMTQuNDYgMi4xOCAxNC4yNSAyIDE0IDJIMTBDOS43NSAyIDkuNTQgMi4xOCA5LjUgMi40Mkw5LjEzIDUuMDdDOC41IDUuMzMgNy45NiA1LjY2IDcuNDQgNi4wN0w1IDUuMDVDNC43NyA0Ljk2IDQuNSA1LjA1IDQuMzkgNS4yN0wyLjM5IDguNzNDMi4yNiA4Ljk0IDIuMzEgOS4yMiAyLjUgOS4zN0w0LjU3IDExTDQuNSAxMkw0LjU3IDEzTDIuNDYgMTQuNjNDMi4yNiAxNC43OCAyLjIxIDE1LjA2IDIuMzQgMTUuMjdMNC4zNCAxOC43M0M0LjQ1IDE5IDQuNzQgMTkuMTEgNSAxOUw1IDE5TDcuNSAxOEM3Ljc0IDE4LjE5IDggMTguMzcgOC4yNiAxOC41M0w5LjkxIDE3LjEzQzkuMTQgMTYuOCA4LjQ2IDE2LjMxIDcuOTEgMTUuNjhMNS41IDE2LjY4TDQuNzMgMTUuMzhMNi44IDEzLjhDNi40IDEyLjYzIDYuNCAxMS4zNyA2LjggMTAuMkw0LjY5IDguNjVMNS40NCA3LjM1TDcuODUgOC4zNUM4LjYzIDcuNDUgOS42OCA2LjgyIDEwLjg1IDYuNTdMMTEuMjUgNEgxMi43NUwxMy4xMiA2LjYyQzE0LjI5IDYuODYgMTUuMzQgNy41IDE2LjEyIDguMzlMMTguNTMgNy4zOUwxOS4yOCA4LjY5TDE3LjIgMTAuMkMxNy4yOSAxMC40NiAxNy4zNiAxMC43MyAxNy40IDExSDE5LjRMMjEuNSA5LjM3QzIxLjcyIDkuMjMgMjEuNzggOC45NSAyMS42NiA4LjczTTEyIDhDOS43OSA4IDggOS44IDggMTJDOCAxMy45MSA5LjM1IDE1LjU0IDExLjIxIDE1LjkyTDE2IDExLjg2QzE1LjkzIDkuNzEgMTQuMTYgOCAxMiA4TTEyIDE0QzEwLjkgMTQgMTAgMTMuMTEgMTAgMTJTMTAuOSAxMCAxMiAxMCAxNCAxMC45IDE0IDEyIDEzLjExIDE0IDEyIDE0TTEyIDhDOS43OSA4IDggOS44IDggMTJDOCAxMy45MSA5LjM1IDE1LjU0IDExLjIxIDE1LjkyTDE2IDExLjg2QzE1LjkzIDkuNzEgMTQuMTYgOCAxMiA4TTEyIDE0QzEwLjkgMTQgMTAgMTMuMTEgMTAgMTJTMTAuOSAxMCAxMiAxMCAxNCAxMC45IDE0IDEyIDEzLjExIDE0IDEyIDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZ3MgPSBcIk0xNS45LDE4LjQ1QzE3LjI1LDE4LjQ1IDE4LjM1LDE3LjM1IDE4LjM1LDE2QzE4LjM1LDE0LjY1IDE3LjI1LDEzLjU1IDE1LjksMTMuNTVDMTQuNTQsMTMuNTUgMTMuNDUsMTQuNjUgMTMuNDUsMTZDMTMuNDUsMTcuMzUgMTQuNTQsMTguNDUgMTUuOSwxOC40NU0yMS4xLDE2LjY4TDIyLjU4LDE3Ljg0QzIyLjcxLDE3Ljk1IDIyLjc1LDE4LjEzIDIyLjY2LDE4LjI5TDIxLjI2LDIwLjcxQzIxLjE3LDIwLjg2IDIxLDIwLjkyIDIwLjgzLDIwLjg2TDE5LjA5LDIwLjE2QzE4LjczLDIwLjQ0IDE4LjMzLDIwLjY3IDE3LjkxLDIwLjg1TDE3LjY0LDIyLjdDMTcuNjIsMjIuODcgMTcuNDcsMjMgMTcuMywyM0gxNC41QzE0LjMyLDIzIDE0LjE4LDIyLjg3IDE0LjE1LDIyLjdMMTMuODksMjAuODVDMTMuNDYsMjAuNjcgMTMuMDcsMjAuNDQgMTIuNzEsMjAuMTZMMTAuOTYsMjAuODZDMTAuODEsMjAuOTIgMTAuNjIsMjAuODYgMTAuNTQsMjAuNzFMOS4xNCwxOC4yOUM5LjA1LDE4LjEzIDkuMDksMTcuOTUgOS4yMiwxNy44NEwxMC43LDE2LjY4TDEwLjY1LDE2TDEwLjcsMTUuMzFMOS4yMiwxNC4xNkM5LjA5LDE0LjA1IDkuMDUsMTMuODYgOS4xNCwxMy43MUwxMC41NCwxMS4yOUMxMC42MiwxMS4xMyAxMC44MSwxMS4wNyAxMC45NiwxMS4xM0wxMi43MSwxMS44NEMxMy4wNywxMS41NiAxMy40NiwxMS4zMiAxMy44OSwxMS4xNUwxNC4xNSw5LjI5QzE0LjE4LDkuMTMgMTQuMzIsOSAxNC41LDlIMTcuM0MxNy40Nyw5IDE3LjYyLDkuMTMgMTcuNjQsOS4yOUwxNy45MSwxMS4xNUMxOC4zMywxMS4zMiAxOC43MywxMS41NiAxOS4wOSwxMS44NEwyMC44MywxMS4xM0MyMSwxMS4wNyAyMS4xNywxMS4xMyAyMS4yNiwxMS4yOUwyMi42NiwxMy43MUMyMi43NSwxMy44NiAyMi43MSwxNC4wNSAyMi41OCwxNC4xNkwyMS4xLDE1LjMxTDIxLjE1LDE2TDIxLjEsMTYuNjhNNi42OSw4LjA3QzcuNTYsOC4wNyA4LjI2LDcuMzcgOC4yNiw2LjVDOC4yNiw1LjYzIDcuNTYsNC45MiA2LjY5LDQuOTJBMS41OCwxLjU4IDAgMCwwIDUuMTEsNi41QzUuMTEsNy4zNyA1LjgyLDguMDcgNi42OSw4LjA3TTEwLjAzLDYuOTRMMTEsNy42OEMxMS4wNyw3Ljc1IDExLjA5LDcuODcgMTEuMDMsNy45N0wxMC4xMyw5LjUzQzEwLjA4LDkuNjMgOS45Niw5LjY3IDkuODYsOS42M0w4Ljc0LDkuMThMOCw5LjYyTDcuODEsMTAuODFDNy43OSwxMC45MiA3LjcsMTEgNy41OSwxMUg1Ljc5QzUuNjcsMTEgNS41OCwxMC45MiA1LjU2LDEwLjgxTDUuNCw5LjYyTDQuNjQsOS4xOEwzLjUsOS42M0MzLjQxLDkuNjcgMy4zLDkuNjMgMy4yNCw5LjUzTDIuMzQsNy45N0MyLjI4LDcuODcgMi4zMSw3Ljc1IDIuMzksNy42OEwzLjM0LDYuOTRMMy4zMSw2LjVMMy4zNCw2LjA2TDIuMzksNS4zMkMyLjMxLDUuMjUgMi4yOCw1LjEzIDIuMzQsNS4wM0wzLjI0LDMuNDdDMy4zLDMuMzcgMy40MSwzLjMzIDMuNSwzLjM3TDQuNjMsMy44Mkw1LjQsMy4zOEw1LjU2LDIuMTlDNS41OCwyLjA4IDUuNjcsMiA1Ljc5LDJINy41OUM3LjcsMiA3Ljc5LDIuMDggNy44MSwyLjE5TDgsMy4zOEw4Ljc0LDMuODJMOS44NiwzLjM3QzkuOTYsMy4zMyAxMC4wOCwzLjM3IDEwLjEzLDMuNDdMMTEuMDMsNS4wM0MxMS4wOSw1LjEzIDExLjA3LDUuMjUgMTEsNS4zMkwxMC4wMyw2LjA2TDEwLjA2LDYuNUwxMC4wMyw2Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbGxhZ2UgPSBcIk01LDNDMy44OSwzIDMsMy44OSAzLDVWMTlDMywyMC4xMSAzLjg5LDIxIDUsMjFIMTFWM00xMywzVjExSDIxVjVDMjEsMy44OSAyMC4xMSwzIDE5LDNNMTMsMTNWMjFIMTlDMjAuMTEsMjEgMjEsMjAuMTEgMjEsMTlWMTNcIjtcclxuZXhwb3J0IHZhciBtZGlDb2xsYXBzZUFsbCA9IFwiTTE0LDRINFYxNEgyVjRBMiwyIDAgMCwxIDQsMkgxNFY0TTE4LDZIOEEyLDIgMCAwLDAgNiw4VjE4SDhWOEgxOFY2TTIyLDEyVjIwQTIsMiAwIDAsMSAyMCwyMkgxMkEyLDIgMCAwLDEgMTAsMjBWMTJBMiwyIDAgMCwxIDEyLDEwSDIwQTIsMiAwIDAsMSAyMiwxMk0yMCwxNUgxMlYxN0gyMFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2xsYXBzZUFsbE91dGxpbmUgPSBcIk00LDJBMiwyIDAgMCwwIDIsNFYxNEg0VjRIMTRWMkg0TTgsNkEyLDIgMCAwLDAgNiw4VjE4SDhWOEgxOFY2SDhNMjAsMTJWMjBIMTJWMTJIMjBNMjAsMTBIMTJBMiwyIDAgMCwwIDEwLDEyVjIwQTIsMiAwIDAsMCAxMiwyMkgyMEEyLDIgMCAwLDAgMjIsMjBWMTJBMiwyIDAgMCwwIDIwLDEwTTE5LDE3SDEzVjE1SDE5VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbG9ySGVscGVyID0gXCJNMCwyNEgyNFYyMEgwVjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1hID0gXCJNNywzSDE2Ljk1VjEyLjk2TDEyLjk2LDIwLjk0SDhMMTEuOTcsMTIuOTZIN1YzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1hQm94ID0gXCJNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM00xNSwxM1Y3SDlWMTNIMTJMMTAsMTdIMTNMMTUsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWFCb3hPdXRsaW5lID0gXCJNMTAsMTdMMTIsMTNIOVY3SDE1VjEzTDEzLDE3SDEwTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tYUNpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTE1LDEzTDEzLDE3SDEwTDEyLDEzSDlWN0gxNVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tYUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRNMTAsMTdIMTNMMTUsMTNWN0g5VjEzSDEyTDEwLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnQgPSBcIk05LDIyQTEsMSAwIDAsMSA4LDIxVjE4SDRBMiwyIDAgMCwxIDIsMTZWNEMyLDIuODkgMi45LDIgNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuOSA5Ljc1LDIyIDkuNSwyMlYyMkg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRBY2NvdW50ID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xNiwxNFYxM0MxNiwxMS42NyAxMy4zMywxMSAxMiwxMUMxMC42NywxMSA4LDExLjY3IDgsMTNWMTRIMTZNMTIsNkEyLDIgMCAwLDAgMTAsOEEyLDIgMCAwLDAgMTIsMTBBMiwyIDAgMCwwIDE0LDhBMiwyIDAgMCwwIDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudEFjY291bnRPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNMTYsMTRIOFYxM0M4LDExLjY3IDEwLjY3LDExIDEyLDExQzEzLjMzLDExIDE2LDExLjY3IDE2LDEzVjE0TTEyLDZBMiwyIDAgMCwxIDE0LDhBMiwyIDAgMCwxIDEyLDEwQTIsMiAwIDAsMSAxMCw4QTIsMiAwIDAsMSAxMiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRBbGVydCA9IFwiTTkgMjJDOC40IDIyIDggMjEuNiA4IDIxVjE4SDRDMi45IDE4IDIgMTcuMSAyIDE2VjRDMiAyLjkgMi45IDIgNCAySDIwQzIxLjEgMiAyMiAyLjkgMjIgNFYxNkMyMiAxNy4xIDIxLjEgMTggMjAgMThIMTMuOUwxMC4yIDIxLjdDMTAgMjEuOSA5LjggMjIgOS41IDIySDlNMTMgMTFWNUgxMVYxMU0xMyAxNVYxM0gxMVYxNUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50QWxlcnRPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNMTMsMTBIMTFWNkgxM1YxME0xMywxNEgxMVYxMkgxM1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50QXJyb3dMZWZ0ID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjEgMi45IDE4IDQgMThIOFYyMUM4IDIxLjYgOC40IDIyIDkgMjJIOS41QzkuNyAyMiAxMCAyMS45IDEwLjIgMjEuN0wxMy45IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0xNiAxMUgxMS41TDEzLjMgMTIuOEwxMiAxNEw4IDEwTDEyIDZMMTMuMiA3LjJMMTEuNSA5SDE2VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRBcnJvd0xlZnRPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjEgMi45IDE4IDQgMThIOFYyMUM4IDIxLjYgOC40IDIyIDkgMjJIOS41QzkuNyAyMiAxMCAyMS45IDEwLjIgMjEuN0wxMy45IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkgxMy4xTDEwIDE5LjFWMTZINFY0SDIwVjE2TTE2IDExVjlIMTEuNUwxMy4zIDcuMkwxMiA2TDggMTBMMTIgMTRMMTMuMiAxMi44TDExLjUgMTFIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudEFycm93UmlnaHQgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjE2QzIgMTcuMSAyLjkgMTggNCAxOEg4VjIxQzggMjEuNiA4LjQgMjIgOSAyMkg5LjVDOS43IDIyIDEwIDIxLjkgMTAuMiAyMS43TDEzLjkgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTEyIDE0TDEwLjggMTIuOEwxMi42IDExSDhWOUgxMi41TDEwLjcgNy4yTDEyIDZMMTYgMTBMMTIgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudEFycm93UmlnaHRPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjEgMi45IDE4IDQgMThIOFYyMUM4IDIxLjYgOC40IDIyIDkgMjJIOS41QzkuNyAyMiAxMCAyMS45IDEwLjIgMjEuN0wxMy45IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkgxMy4xTDEwIDE5LjFWMTZINFY0SDIwVjE2TTggOVYxMUgxMi41TDEwLjcgMTIuOEwxMiAxNEwxNiAxMEwxMiA2TDEwLjggNy4yTDEyLjUgOUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRCb29rbWFyayA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xIDIuOSAxOCA0IDE4SDhWMjFDOCAyMS42IDguNCAyMiA5IDIySDkuNUM5LjcgMjIgMTAgMjEuOSAxMC4yIDIxLjdMMTMuOSAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTkgMTNMMTYuNSAxMS41TDE0IDEzVjVIMTlWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudEJvb2ttYXJrT3V0bGluZSA9IFwiTTkgMjJDOC40IDIyIDggMjEuNiA4IDIxVjE4SDRDMi45IDE4IDIgMTcuMSAyIDE2VjRDMiAyLjkgMi45IDIgNCAySDIwQzIxLjEgMiAyMiAyLjkgMjIgNFYxNkMyMiAxNy4xIDIxLjEgMTggMjAgMThIMTMuOUwxMC4yIDIxLjdDMTAgMjEuOSA5LjggMjIgOS41IDIySDlNMTAgMTZWMTkuMUwxMy4xIDE2SDIwVjRINFYxNkgxME0xOCAxNFY2SDEzVjE0TDE1LjUgMTIuNUwxOCAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50Q2hlY2sgPSBcIk05LDIyQTEsMSAwIDAsMSA4LDIxVjE4SDRBMiwyIDAgMCwxIDIsMTZWNEMyLDIuODkgMi45LDIgNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuOSA5Ljc1LDIyIDkuNSwyMlYyMkg5TTEwLDE1TDE4LDdMMTYuNTksNS41OEwxMCwxMi4xN0w3LjQxLDkuNTlMNiwxMUwxMCwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50Q2hlY2tPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNMTYuNSw4TDExLDEzLjVMNy41LDEwTDguOTEsOC41OUwxMSwxMC42N0wxNS4wOSw2LjU5TDE2LjUsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50RWRpdCA9IFwiTTIwIDJINEMyLjg5IDIgMiAyLjg5IDIgNFYxNkMyIDE3LjExIDIuOSAxOCA0IDE4SDhWMjFDOCAyMS41NSA4LjQ1IDIyIDkgMjJIOS41QzkuNzUgMjIgMTAgMjEuOSAxMC4yIDIxLjcxTDEzLjkgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi44OSAyMS4xIDIgMjAgMk05LjA4IDE1SDdWMTIuOTFMMTMuMTcgNi43MkwxNS4yNCA4LjhMOS4wOCAxNU0xNi44NCA3LjJMMTUuODMgOC4yMUwxMy43NiA2LjE4TDE0Ljc3IDUuMTZDMTQuOTcgNC45NSAxNS4zMSA0Ljk0IDE1LjU1IDUuMTZMMTYuODQgNi40MUMxNy4wNSA2LjYyIDE3LjA2IDYuOTYgMTYuODQgNy4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRFZGl0T3V0bGluZSA9IFwiTTkgMjJDOC40NSAyMiA4IDIxLjU1IDggMjFWMThINEMyLjkgMTggMiAxNy4xMSAyIDE2VjRDMiAyLjg5IDIuOSAyIDQgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDEzLjlMMTAuMiAyMS43MUMxMCAyMS45IDkuNzUgMjIgOS41IDIySDlNMTAgMTZWMTkuMDhMMTMuMDggMTZIMjBWNEg0VjE2SDEwTTE1Ljg0IDguMkwxNC44MyA5LjIxTDEyLjc2IDcuMThMMTMuNzcgNi4xNkMxMy45NyA1Ljk1IDE0LjMxIDUuOTQgMTQuNTUgNi4xNkwxNS44NCA3LjQxQzE2LjA1IDcuNjIgMTYuMDYgNy45NiAxNS44NCA4LjJNOCAxMS45MUwxMi4xNyA3LjcyTDE0LjI0IDkuOEwxMC4wOCAxNEg4VjExLjkxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRFeWUgPSBcIk0yMCwxMlYxNkMyMCwxNy4xMSAxOS4xMSwxOCAxOCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuODkgOS43NiwyMiA5LjUsMjJIOUExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjZDMiw0Ljg5IDIuOSw0IDQsNEg5LjVDOC45NSw0LjY3IDguNSw1LjQyIDguMTQsNi4yNUw3Ljg1LDdMOC4xNCw3Ljc1QzkuNDMsMTAuOTQgMTIuNSwxMyAxNiwxM0MxNy40NCwxMyAxOC44LDEyLjYzIDIwLDEyTTE2LDZDMTYuNTYsNiAxNyw2LjQ0IDE3LDdDMTcsNy41NiAxNi41Niw4IDE2LDhDMTUuNDQsOCAxNSw3LjU2IDE1LDdDMTUsNi40NCAxNS40NCw2IDE2LDZNMTYsM0MxOC43MywzIDIxLjA2LDQuNjYgMjIsN0MyMS4wNiw5LjM0IDE4LjczLDExIDE2LDExQzEzLjI3LDExIDEwLjk0LDkuMzQgMTAsN0MxMC45NCw0LjY2IDEzLjI3LDMgMTYsM00xNiw0LjVBMi41LDIuNSAwIDAsMCAxMy41LDdBMi41LDIuNSAwIDAsMCAxNiw5LjVBMi41LDIuNSAwIDAsMCAxOC41LDdBMi41LDIuNSAwIDAsMCAxNiw0LjVcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50RXllT3V0bGluZSA9IFwiTTE2LDZDMTYuNTYsNiAxNyw2LjQ0IDE3LDdDMTcsNy41NiAxNi41Niw4IDE2LDhDMTUuNDQsOCAxNSw3LjU2IDE1LDdDMTUsNi40NCAxNS40NCw2IDE2LDZNMTYsM0MxOC43MywzIDIxLjA2LDQuNjYgMjIsN0MyMS4wNiw5LjM0IDE4LjczLDExIDE2LDExQzEzLjI3LDExIDEwLjk0LDkuMzQgMTAsN0MxMC45NCw0LjY2IDEzLjI3LDMgMTYsM00xNiw0LjVBMi41LDIuNSAwIDAsMCAxMy41LDdBMi41LDIuNSAwIDAsMCAxNiw5LjVBMi41LDIuNSAwIDAsMCAxOC41LDdBMi41LDIuNSAwIDAsMCAxNiw0LjVNMTgsMTIuNzVWMTZIMTMuMDhMMTAsMTkuMDhWMTZINFY2SDguMjdDOC41OSw1LjI3IDksNC42IDkuNSw0SDRBMiwyIDAgMCwwIDIsNlYxNkMyLDE3LjExIDIuOSwxOCA0LDE4SDhWMjFBMSwxIDAgMCwwIDksMjJIOS41QzkuNzUsMjIgMTAsMjEuOSAxMC4yLDIxLjcxTDEzLjksMThIMThDMTkuMTEsMTggMjAsMTcuMTEgMjAsMTZWMTJDMTkuMzcsMTIuMzMgMTguNywxMi41OCAxOCwxMi43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50Rmxhc2ggPSBcIk0yMi41IDE2SDIwLjNMMjIgMTJIMTdWMThIMTlWMjNMMjIuNSAxNk0xNSAxOEgxMy45TDEwLjIgMjEuN0MxMCAyMS45IDkuOCAyMiA5LjUgMjJIOUM4LjQgMjIgOCAyMS42IDggMjFWMThINEMyLjkgMTggMiAxNy4xIDIgMTZWNEMyIDIuOSAyLjkgMiA0IDJIMjBDMjEuMSAyIDIyIDIuOSAyMiA0VjEwSDE1VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRGbGFzaE91dGxpbmUgPSBcIk0yMi41IDE2SDIwLjNMMjIgMTJIMTdWMThIMTlWMjNMMjIuNSAxNk0xNSAxOEgxMy45TDEwLjIgMjEuN0MxMCAyMS45IDkuOCAyMiA5LjUgMjJIOUM4LjQgMjIgOCAyMS42IDggMjFWMThINEMyLjkgMTggMiAxNy4xIDIgMTZWNEMyIDIuOSAyLjkgMiA0IDJIMjBDMjEuMSAyIDIyIDIuOSAyMiA0VjEwSDIwVjRINFYxNkgxMFYxOS4xTDEzLjEgMTZIMTVWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudE1pbnVzID0gXCJNMjAgMkg0QzIuOSAyIDIgMi44OSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4VjIxQzggMjEuNTUgOC40NSAyMiA5IDIySDkuNUM5Ljc1IDIyIDEwIDIxLjkgMTAuMiAyMS43MUwxMy45IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0xNiAxMUg4VjlIMTZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudE1pbnVzT3V0bGluZSA9IFwiTTE2IDExSDhWOUgxNlYxMU0yMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDEzLjlMMTAuMiAyMS43MUMxMCAyMS45IDkuNzUgMjIgOS41IDIySDlDOC40NSAyMiA4IDIxLjU1IDggMjFWMThINEMyLjkgMTggMiAxNy4xMSAyIDE2VjRDMiAyLjg5IDIuOSAyIDQgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0TTIwIDRINFYxNkgxMFYxOS4wOEwxMy4wOCAxNkgyMFY0XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudE11bHRpcGxlID0gXCJNMTIsMjNBMSwxIDAgMCwxIDExLDIyVjE5SDdBMiwyIDAgMCwxIDUsMTdWN0EyLDIgMCAwLDEgNyw1SDIxQTIsMiAwIDAsMSAyMyw3VjE3QTIsMiAwIDAsMSAyMSwxOUgxNi45TDEzLjIsMjIuNzFDMTMsMjIuODkgMTIuNzYsMjMgMTIuNSwyM0gxMk0zLDE1SDFWM0EyLDIgMCAwLDEgMywxSDE5VjNIM1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50TXVsdGlwbGVPdXRsaW5lID0gXCJNMTIsMjNBMSwxIDAgMCwxIDExLDIyVjE5SDdBMiwyIDAgMCwxIDUsMTdWN0M1LDUuODkgNS45LDUgNyw1SDIxQTIsMiAwIDAsMSAyMyw3VjE3QTIsMiAwIDAsMSAyMSwxOUgxNi45TDEzLjIsMjIuNzFDMTMsMjIuOSAxMi43NSwyMyAxMi41LDIzVjIzSDEyTTEzLDE3VjIwLjA4TDE2LjA4LDE3SDIxVjdIN1YxN0gxM00zLDE1SDFWM0EyLDIgMCAwLDEgMywxSDE5VjNIM1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50T2ZmID0gXCJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTYuMTEgMThIMTMuOUwxMC4yIDIxLjcxQzEwIDIxLjkgOS43NSAyMiA5LjUgMjJIOUM4LjQ1IDIyIDggMjEuNTUgOCAyMVYxOEg0QzIuOSAxOCAyIDE3LjExIDIgMTZWNCAzLjlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0yMiAxNlY0QzIyIDIuOSAyMS4xMSAyIDIwIDJINS4yTDIwLjk1IDE3Ljc1QzIxLjU3IDE3LjQxIDIyIDE2Ljc2IDIyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRPZmZPdXRsaW5lID0gXCJNNy4yIDRMNS4yIDJIMjBDMjEuMTEgMiAyMiAyLjkgMjIgNFYxNkMyMiAxNi43NiAyMS41NyAxNy40MSAyMC45NSAxNy43NUwxOS4yIDE2SDIwVjRINy4yTTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE2LjExIDE4SDEzLjlMMTAuMiAyMS43MUMxMCAyMS45IDkuNzUgMjIgOS41IDIySDlDOC40NSAyMiA4IDIxLjU1IDggMjFWMThINEMyLjkgMTggMiAxNy4xMSAyIDE2VjRDMiAzLjk3IDIgMy45MyAyIDMuOUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTE0LjExIDE2TDQgNS44OVYxNkgxMFYxOS4wOEwxMy4wOCAxNkgxNC4xMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50T3V0bGluZSA9IFwiTTksMjJBMSwxIDAgMCwxIDgsMjFWMThINEEyLDIgMCAwLDEgMiwxNlY0QzIsMi44OSAyLjksMiA0LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDEzLjlMMTAuMiwyMS43MUMxMCwyMS45IDkuNzUsMjIgOS41LDIyVjIySDlNMTAsMTZWMTkuMDhMMTMuMDgsMTZIMjBWNEg0VjE2SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRQbHVzID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJIOU0xMSw2VjlIOFYxMUgxMVYxNEgxM1YxMUgxNlY5SDEzVjZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudFBsdXNPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNMTEsNkgxM1Y5SDE2VjExSDEzVjE0SDExVjExSDhWOUgxMVY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRQcm9jZXNzaW5nID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xNywxMVY5SDE1VjExSDE3TTEzLDExVjlIMTFWMTFIMTNNOSwxMVY5SDdWMTFIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50UHJvY2Vzc2luZ091dGxpbmUgPSBcIk05LDIyQTEsMSAwIDAsMSA4LDIxVjE4SDRBMiwyIDAgMCwxIDIsMTZWNEMyLDIuODkgMi45LDIgNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuOSA5Ljc1LDIyIDkuNSwyMlYyMkg5TTEwLDE2VjE5LjA4TDEzLjA4LDE2SDIwVjRINFYxNkgxME0xNywxMUgxNVY5SDE3VjExTTEzLDExSDExVjlIMTNWMTFNOSwxMUg3VjlIOVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50UXVlc3Rpb24gPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDEzLjlMMTAuMiwyMS43MUMxMCwyMS45IDkuNzUsMjIgOS41LDIyVjIySDlBMSwxIDAgMCwxIDgsMjFWMThINEEyLDIgMCAwLDEgMiwxNlY0QzIsMi44OSAyLjksMiA0LDJNMTIuMTksNS41QzExLjMsNS41IDEwLjU5LDUuNjggMTAuMDUsNi4wNEM5LjUsNi40IDkuMjIsNyA5LjI3LDcuNjlIMTEuMjRDMTEuMjQsNy40MSAxMS4zNCw3LjIgMTEuNSw3LjA2QzExLjcsNi45MiAxMS45Miw2Ljg1IDEyLjE5LDYuODVDMTIuNSw2Ljg1IDEyLjc3LDYuOTMgMTIuOTUsNy4xMUMxMy4xMyw3LjI4IDEzLjIyLDcuNSAxMy4yMiw3LjhDMTMuMjIsOC4wOCAxMy4xNCw4LjMzIDEzLDguNTRDMTIuODMsOC43NiAxMi42Miw4Ljk0IDEyLjM2LDkuMDhDMTEuODQsOS40IDExLjUsOS42OCAxMS4yOSw5LjkyQzExLjEsMTAuMTYgMTEsMTAuNSAxMSwxMUgxM0MxMywxMC43MiAxMy4wNSwxMC41IDEzLjE0LDEwLjMyQzEzLjIzLDEwLjE1IDEzLjQsMTAgMTMuNjYsOS44NUMxNC4xMiw5LjY0IDE0LjUsOS4zNiAxNC43OSw5QzE1LjA4LDguNjMgMTUuMjMsOC4yNCAxNS4yMyw3LjhDMTUuMjMsNy4xIDE0Ljk2LDYuNTQgMTQuNDIsNi4xMkMxMy44OCw1LjcxIDEzLjEzLDUuNSAxMi4xOSw1LjVNMTEsMTJWMTRIMTNWMTJIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudFF1ZXN0aW9uT3V0bGluZSA9IFwiTTQsMkEyLDIgMCAwLDAgMiw0VjE2QTIsMiAwIDAsMCA0LDE4SDhWMjFBMSwxIDAgMCwwIDksMjJIOS41VjIyQzkuNzUsMjIgMTAsMjEuOSAxMC4yLDIxLjcxTDEzLjksMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRDMjIsMi44OSAyMS4xLDIgMjAsMkg0TTQsNEgyMFYxNkgxMy4wOEwxMCwxOS4wOFYxNkg0VjRNMTIuMTksNS41QzExLjMsNS41IDEwLjU5LDUuNjggMTAuMDUsNi4wNEM5LjUsNi40IDkuMjIsNyA5LjI3LDcuNjlDMC4yMSw3LjY5IDYuNTcsNy42OSAxMS4yNCw3LjY5QzExLjI0LDcuNDEgMTEuMzQsNy4yIDExLjUsNy4wNkMxMS43LDYuOTIgMTEuOTIsNi44NSAxMi4xOSw2Ljg1QzEyLjUsNi44NSAxMi43Nyw2LjkzIDEyLjk1LDcuMTFDMTMuMTMsNy4yOCAxMy4yMiw3LjUgMTMuMjIsNy44QzEzLjIyLDguMDggMTMuMTQsOC4zMyAxMyw4LjU0QzEyLjgzLDguNzYgMTIuNjIsOC45NCAxMi4zNiw5LjA4QzExLjg0LDkuNCAxMS41LDkuNjggMTEuMjksOS45MkMxMS4xLDEwLjE2IDExLDEwLjUgMTEsMTFIMTNDMTMsMTAuNzIgMTMuMDUsMTAuNSAxMy4xNCwxMC4zMkMxMy4yMywxMC4xNSAxMy40LDEwIDEzLjY2LDkuODVDMTQuMTIsOS42NCAxNC41LDkuMzYgMTQuNzksOUMxNS4wOCw4LjYzIDE1LjIzLDguMjQgMTUuMjMsNy44QzE1LjIzLDcuMSAxNC45Niw2LjU0IDE0LjQyLDYuMTJDMTMuODgsNS43MSAxMy4xMyw1LjUgMTIuMTksNS41TTExLDEyVjE0SDEzVjEySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRRdW90ZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xIDIuOSAxOCA0IDE4SDhWMjFDOCAyMS42IDguNCAyMiA5IDIySDkuNUM5LjcgMjIgMTAgMjEuOSAxMC4yIDIxLjdMMTMuOSAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTEgMTNIN1Y4LjhMOC4zIDZIMTAuM0w4LjkgOUgxMVYxM00xNyAxM0gxM1Y4LjhMMTQuMyA2SDE2LjNMMTQuOSA5SDE3VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRRdW90ZU91dGxpbmUgPSBcIk05IDIyQzguNCAyMiA4IDIxLjYgOCAyMVYxOEg0QzIuOSAxOCAyIDE3LjEgMiAxNlY0QzIgMi45IDIuOSAyIDQgMkgyMEMyMS4xIDIgMjIgMi45IDIyIDRWMTZDMjIgMTcuMSAyMS4xIDE4IDIwIDE4SDEzLjlMMTAuMiAyMS43QzEwIDIxLjkgOS44IDIyIDkuNSAyMkg5TTEwIDE2VjE5LjFMMTMuMSAxNkgyMFY0SDRWMTZIMTBNMTYuMyA2TDE0LjkgOUgxN1YxM0gxM1Y4LjhMMTQuMyA2SDE2LjNNMTAuMyA2TDguOSA5SDExVjEzSDdWOC44TDguMyA2SDEwLjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudFJlbW92ZSA9IFwiTTksMjJBMSwxIDAgMCwxIDgsMjFWMThINEEyLDIgMCAwLDEgMiwxNlY0QzIsMi44OSAyLjksMiA0LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDEzLjlMMTAuMiwyMS43MUMxMCwyMS45IDkuNzUsMjIgOS41LDIyVjIySDlNOS40MSw2TDgsNy40MUwxMC41OSwxMEw4LDEyLjU5TDkuNDEsMTRMMTIsMTEuNDFMMTQuNTksMTRMMTYsMTIuNTlMMTMuNDEsMTBMMTYsNy40MUwxNC41OSw2TDEyLDguNTlMOS40MSw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRSZW1vdmVPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNOS40MSw2TDEyLDguNTlMMTQuNTksNkwxNiw3LjQxTDEzLjQxLDEwTDE2LDEyLjU5TDE0LjU5LDE0TDEyLDExLjQxTDkuNDEsMTRMOCwxMi41OUwxMC41OSwxMEw4LDcuNDFMOS40MSw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRTZWFyY2ggPSBcIk0xNS41LDJDMTgsMiAyMCw0IDIwLDYuNUMyMCw3LjM4IDE5Ljc1LDguMiAxOS4zMSw4Ljg5TDIyLjQxLDEyTDIxLDEzLjM5TDE3Ljg5LDEwLjMxQzE3LjIsMTAuNzUgMTYuMzgsMTEgMTUuNSwxMUMxMywxMSAxMSw5IDExLDYuNUMxMSw0IDEzLDIgMTUuNSwyTTE1LjUsNEEyLjUsMi41IDAgMCwwIDEzLDYuNUEyLjUsMi41IDAgMCwwIDE1LjUsOUEyLjUsMi41IDAgMCwwIDE4LDYuNUEyLjUsMi41IDAgMCwwIDE1LjUsNE00LDRIOS41QzkuMTksNC43OSA5LDUuNjQgOSw2LjVBNi41LDYuNSAwIDAsMCAxNS41LDEzQzE2LjE4LDEzIDE2LjgzLDEyLjg5IDE3LjQ2LDEyLjY5TDIwLDE1LjIzVjE2QTIsMiAwIDAsMSAxOCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuODkgOS43NiwyMiA5LjUsMjJIOUExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjZBMiwyIDAgMCwxIDQsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50U2VhcmNoT3V0bGluZSA9IFwiTTQsNEg5LjVDOS4yNSw0LjY0IDkuMDksNS4zMSA5LjA0LDZINFYxNkgxMFYxOS4wOEwxMy4wOCwxNkgxOFYxMy4yM0wyMCwxNS4yM1YxNkEyLDIgMCAwLDEgMTgsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJIOUExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjZDMiw0Ljg5IDIuOSw0IDQsNE0xNS41LDJDMTgsMiAyMCw0IDIwLDYuNUMyMCw3LjM4IDE5Ljc1LDguMiAxOS4zMSw4Ljg5TDIyLjQxLDEyTDIxLDEzLjM5TDE3Ljg5LDEwLjMxQzE3LjIsMTAuNzUgMTYuMzgsMTEgMTUuNSwxMUMxMywxMSAxMSw5IDExLDYuNUMxMSw0IDEzLDIgMTUuNSwyTTE1LjUsNEEyLjUsMi41IDAgMCwwIDEzLDYuNUEyLjUsMi41IDAgMCwwIDE1LjUsOUEyLjUsMi41IDAgMCwwIDE4LDYuNUEyLjUsMi41IDAgMCwwIDE1LjUsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50VGV4dCA9IFwiTTksMjJBMSwxIDAgMCwxIDgsMjFWMThINEEyLDIgMCAwLDEgMiwxNlY0QzIsMi44OSAyLjksMiA0LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDEzLjlMMTAuMiwyMS43MUMxMCwyMS45IDkuNzUsMjIgOS41LDIyVjIySDlNNSw1VjdIMTlWNUg1TTUsOVYxMUgxM1Y5SDVNNSwxM1YxNUgxNVYxM0g1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRUZXh0TXVsdGlwbGUgPSBcIk0zLDE1SDFWM0EyLDIgMCAwLDEgMywxSDE5VjNIM1YxNU0xMiwyM0ExLDEgMCAwLDEgMTEsMjJWMTlIN0EyLDIgMCAwLDEgNSwxN1Y3QTIsMiAwIDAsMSA3LDVIMjFBMiwyIDAgMCwxIDIzLDdWMTdBMiwyIDAgMCwxIDIxLDE5SDE2LjlMMTMuMiwyMi43MUMxMywyMi44OSAxMi43NiwyMyAxMi41LDIzSDEyTTksOVYxMUgxOVY5SDlNOSwxM1YxNUgxN1YxM0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRUZXh0TXVsdGlwbGVPdXRsaW5lID0gXCJNMTIsMjNBMSwxIDAgMCwxIDExLDIyVjE5SDdBMiwyIDAgMCwxIDUsMTdWN0EyLDIgMCAwLDEgNyw1SDIxQTIsMiAwIDAsMSAyMyw3VjE3QTIsMiAwIDAsMSAyMSwxOUgxNi45TDEzLjIsMjIuNzFDMTMsMjIuODkgMTIuNzYsMjMgMTIuNSwyM0gxMk0xMywxN1YyMC4wOEwxNi4wOCwxN0gyMVY3SDdWMTdIMTNNMywxNUgxVjNBMiwyIDAgMCwxIDMsMUgxOVYzSDNWMTVNOSw5SDE5VjExSDlWOU05LDEzSDE3VjE1SDlWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudFRleHRPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNNiw3SDE4VjlINlY3TTYsMTFIMTVWMTNINlYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21wYXJlID0gXCJNMTksM0gxNFY1SDE5VjE4TDE0LDEyVjIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNNMTAsMThINUwxMCwxMk0xMCwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTBWMjNIMTJWMUgxMFYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbXBhcmVIb3Jpem9udGFsID0gXCJNOSAxNEgyVjE2SDlWMTlMMTMgMTVMOSAxMVYxNE0xNSAxM1YxMEgyMlY4SDE1VjVMMTEgOUwxNSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb21wYXJlVmVydGljYWwgPSBcIk0xNCAxNVYyMkgxNlYxNUgxOUwxNSAxMUwxMSAxNUgxNE0xMyA5SDEwVjJIOFY5SDVMOSAxM0wxMyA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbXBhc3MgPSBcIk0xNC4xOSwxNC4xOUw2LDE4TDkuODEsOS44MUwxOCw2TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDEwLjlBMS4xLDEuMSAwIDAsMCAxMC45LDEyQTEuMSwxLjEgMCAwLDAgMTIsMTMuMUExLjEsMS4xIDAgMCwwIDEzLjEsMTJBMS4xLDEuMSAwIDAsMCAxMiwxMC45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbXBhc3NPZmYgPSBcIk0xLDMuNUwyLjI4LDIuMjVMMjEuNzUsMjEuNzJMMjAuNSwyM0wxNy43LDIwLjIyQzE2LjA4LDIxLjM0IDE0LjEyLDIyIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJDMiw5Ljg4IDIuNjYsNy45MiAzLjc4LDYuM0wxLDMuNU02LDE4TDEyLjQ3LDE1TDksMTEuNTNMNiwxOE0xOCw2TDExLjU2LDlMNi4zMywzLjc2QzcuOTQsMi42NSA5LjksMiAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQzIyLDE0LjEgMjEuMzUsMTYuMDYgMjAuMjQsMTcuNjdMMTUsMTIuNDRMMTgsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21wYXNzT2ZmT3V0bGluZSA9IFwiTTEsMy41TDIuMjgsMi4yNUwyMS43NSwyMS43MkwyMC41LDIzTDE3LjcsMjAuMjJDMTYuMDgsMjEuMzQgMTQuMTIsMjIgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkMyLDkuODggMi42Niw3LjkyIDMuNzgsNi4zTDEsMy41TTcsMTdMOS4zOSwxMS45MUw1LjIzLDcuNzRDNC40NSw5IDQsMTAuNDQgNCwxMkE4LDggMCAwLDAgMTIsMjBDMTMuNTYsMjAgMTUsMTkuNTUgMTYuMjYsMTguNzdMMTIuMDksMTQuNjFMNywxN00xNyw3TDE0LjYyLDEyLjA1TDExLjk1LDkuMzhMMTcsN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQzIyLDE0LjEgMjEuMzUsMTYuMDYgMjAuMjQsMTcuNjdMMTguOCwxNi4yMkMxOS41NiwxNSAyMCwxMy41NSAyMCwxMkE4LDggMCAwLDAgMTIsNEMxMC40NSw0IDksNC40NCA3Ljc4LDUuMkw2LjMzLDMuNzZDNy45NCwyLjY1IDkuOSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tcGFzc091dGxpbmUgPSBcIk03LDE3TDEwLjIsMTAuMkwxNyw3TDEzLjgsMTMuOEw3LDE3TTEyLDExLjFBMC45LDAuOSAwIDAsMCAxMS4xLDEyQTAuOSwwLjkgMCAwLDAgMTIsMTIuOUEwLjksMC45IDAgMCwwIDEyLjksMTJBMC45LDAuOSAwIDAsMCAxMiwxMS4xTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21wYXNzUm9zZSA9IFwiTTE1IDlMMTIgMEw5IDlMMCAxMkw5IDE1TDEyIDI0TDE1IDE1TDI0IDEyTDE1IDlNNCAxMkwxMCAxMEwxMSAxMkg0TTEyIDIwTDEwIDE0TDEyIDEzVjIwTTEyIDRMMTQgMTBMMTIgMTFWNE0xNCAxNEwxMyAxMkgyMEwxNCAxNE04LjcgMTcuM0w1IDE5TDYuNyAxNS4zTDguMyAxNS44TDguNyAxNy4zTTE3LjMgMTUuM0wxOSAxOUwxNS4zIDE3LjNMMTUuOCAxNS43TDE3LjMgMTUuM002LjcgOC43TDUgNUw4LjcgNi43TDguMiA4LjJMNi43IDguN00xNS4zIDYuN0wxOSA1TDE3LjMgOC43TDE1LjcgOC4yTDE1LjMgNi43WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbmNvdXJzZUNpID0gXCJNMTAuOTQgMTIuMDlBMS4wNiAxLjA2IDAgMSAwIDExLjkxIDEwLjk1QTEuMDYgMS4wNiAwIDAgMCAxMC45NCAxMi4wOU0xMy41NCAxMy4yMUEyLjYyIDIuNjIgMCAwIDEgMTIuNTggMTMuODhMMTIuNTcgMTMuODlBMTEuMTcgMTEuMTcgMCAwIDAgMTMuODcgMTYuOTJBNC44MyA0LjgzIDAgMCAxIDEyLjkyIDE3LjNBNC45IDQuOSAwIDAgMSAxMi4yNCAxNy40NEwxMi4xNiAxNy40NUwxMi4wNiAxNy40NkwxMS44NyAxNy40N0MxMS43NSAxNy40NyAxMS42NCAxNy41IDExLjUgMTcuNDdBNSA1IDAgMCAxIDEwLjc5IDE3LjRBNS4xMyA1LjEzIDAgMCAxIDEwLjA5IDE3LjIzQTQuNzggNC43OCAwIDAgMSA5LjQ2IDE3QTUgNSAwIDAgMSA4LjkzIDE2LjY4QTQuNDUgNC40NSAwIDAgMSA4LjUgMTYuMzhDOC4zOCAxNi4yOSA4LjI4IDE2LjE5IDguMiAxNi4xMkw3Ljk1IDE1Ljg3QzcuOTUgMTUuODcgOCAxNS45NyA4LjE2IDE2LjE1QzguMjQgMTYuMjMgOC4zMiAxNi4zNCA4LjQ0IDE2LjQ1QTQuOTMgNC45MyAwIDAgMCA4LjgyIDE2LjgyQTUuMjEgNS4yMSAwIDAgMCA5LjMzIDE3LjJBNS4wOCA1LjA4IDAgMCAwIDkuOTYgMTcuNTZBNS40MyA1LjQzIDAgMCAwIDEwLjY4IDE3Ljg1QTUuNSA1LjUgMCAwIDAgMTEuNDYgMTguMDNDMTEuNiAxOC4wNiAxMS43NCAxOC4wNyAxMS44OCAxOC4wOEwxMi4wNyAxOC4xSDEyLjI3QTUuNSA1LjUgMCAwIDAgMTMuMDcgMTguMDVBNS42MSA1LjYxIDAgMCAwIDE0LjM5IDE3LjdRMTQuNjMgMTguMDMgMTQuOSAxOC4zNEwxNC44NyAxOC4zNkwxNC42NiAxOC41SDE0LjYyQzE0LjU5IDE4LjUzIDE0LjY3IDE4LjUgMTQuNjYgMTguNUgxNC42NEwxNC41OCAxOC41NEwxNC40NCAxOC42MUwxNC4zNyAxOC42NEwxNC4zMyAxOC42NkwxNC4zMiAxOC42N0gxNC4zMUMxNC4zIDE4LjY4IDE0LjM2IDE4LjY2IDE0LjMzIDE4LjY3SDE0LjMyTDE0LjE3IDE4Ljc0UTE0LjA5IDE4Ljc3IDE0IDE4LjgxVjE4LjgyTDEzLjkzIDE4Ljg0TDEzLjg0IDE4Ljg3QTYuNSA2LjUgMCAwIDEgMTIuMjUgMTkuMjZBNi40IDYuNCAwIDAgMSAxMS4zMSAxOS4zSDExLjE5TDExLjA3IDE5LjI5TDEwLjgxIDE5LjI3QzEwLjY1IDE5LjI0IDEwLjUgMTkuMjMgMTAuMzMgMTkuMkE2LjU5IDYuNTkgMCAwIDEgOC41IDE4LjU3QzguMzUgMTguNSA4LjIxIDE4LjQzIDguMDggMTguMzVDNy45NSAxOC4yNyA3LjgzIDE4LjE5IDcuNzEgMTguMTFBNi42NCA2LjY0IDAgMCAxIDcuMDcgMTcuNkE2LjM1IDYuMzUgMCAwIDEgNi41NyAxNy4xMUM2LjQzIDE2Ljk2IDYuMzIgMTYuODIgNi4yMiAxNi43QzYuMTMgMTYuNTggNi4wNiAxNi41IDYgMTYuNDJMNS45NCAxNi4zMkw2IDE2LjQzQzYuMDQgMTYuNSA2LjEgMTYuNiA2LjE4IDE2LjczQzYuMjYgMTYuODYgNi4zNiAxNyA2LjUgMTcuMThBNi41IDYuNSAwIDAgMCA2Ljk0IDE3LjczQTYuODYgNi44NiAwIDAgMCA3LjU1IDE4LjMxQzcuNjcgMTguNDEgNy43OCAxOC41IDcuOTEgMTguNkM4LjA0IDE4LjcgOC4xNyAxOC43OSA4LjMxIDE4Ljg4QTcuMTIgNy4xMiAwIDAgMCA5LjIxIDE5LjM3QTcuMiA3LjIgMCAwIDAgMTAuMiAxOS43NEMxMC4zNyAxOS44IDEwLjU1IDE5LjgzIDEwLjczIDE5Ljg3TDExIDE5LjkyTDExLjExIDE5Ljk0TDExLjI1IDE5Ljk2QTcuMjcgNy4yNyAwIDAgMCAxMi4yOSAyMC4wM0E3LjM4IDcuMzggMCAwIDAgMTQuMTQgMTkuNzdMMTQuMjMgMTkuNzRMMTQuMjggMTkuNzNMMTQuMzQgMTkuNzFDMTQuNCAxOS42OSAxNC40NiAxOS42OCAxNC41IDE5LjY2TDE0LjY4IDE5LjZMMTQuODUgMTkuNTRMMTUgMTkuNUwxNS4wNiAxOS40NUgxNS4wOEwxNS4xMyAxOS40M0wxNS4xNCAxOS40MkwxNS4xNyAxOS40MUwxNS4zOSAxOS4zTDE1LjY3IDE5LjE2QzE1Ljg2IDE5LjM0IDE2LjA2IDE5LjUgMTYuMjYgMTkuNjlDMTYuMjYgMTkuNjkgMTcuMjMgMjAuNjkgMTcuNzYgMjAuMjhDMTguMjYgMTkuODkgMTcuNjggMTguNjggMTcuNjggMTguNjhBMTEuMiAxMS4yIDAgMCAwIDEzLjU0IDEzLjIxTTEwLjE2IDExLjU3TDEwLjE1IDExLjU2QTExLjE4IDExLjE4IDAgMCAwIDYuOTEgMTEuMTFBNC43MiA0LjcyIDAgMCAxIDcuMzQgOS4zOUw3LjM4IDkuMzFMNy40MiA5LjIzTDcuNSA5LjA2QzcuNTcgOC45NiA3LjYyIDguODUgNy42OSA4Ljc1QTQuOTcgNC45NyAwIDAgMSA4LjE0IDguMTdBNS4wNSA1LjA1IDAgMCAxIDguNjYgNy42N0E0Ljc3IDQuNzcgMCAwIDEgOS4yIDcuMjdBNS4wNiA1LjA2IDAgMCAxIDkuNzQgN0E0Ljg4IDQuODggMCAwIDEgMTAuMjIgNi43OEMxMC4zNyA2LjcyIDEwLjUgNi42OSAxMC42MSA2LjY2QzEwLjgyIDYuNiAxMC45NSA2LjU4IDEwLjk1IDYuNThTMTAuODIgNi41OSAxMC42IDYuNjFDMTAuNSA2LjYzIDEwLjM1IDYuNjQgMTAuMTkgNi42OEE0Ljk0IDQuOTQgMCAwIDAgOS42NyA2LjgyQTUuMzQgNS4zNCAwIDAgMCA5LjA4IDcuMDVBNS4wOCA1LjA4IDAgMCAwIDguNDUgNy4zOUE1LjQ3IDUuNDcgMCAwIDAgNy44MiA3Ljg0QTUuNTUgNS41NSAwIDAgMCA3LjI1IDguNDFDNy4xNiA4LjUgNy4wOCA4LjYzIDcgOC43NEw2Ljg4IDguODlMNi44MiA4Ljk3TDYuNzYgOS4wNkE1LjUgNS41IDAgMCAwIDYuMzggOS43N0E1LjYxIDUuNjEgMCAwIDAgNS45NyAxMS4xNEw1Ljk2IDExLjE2QzUuNyAxMS4xOCA1LjQzIDExLjIxIDUuMTYgMTEuMjZWMTEuMTJMNS4xNyAxMC44N1YxMC44MkM1LjE3IDEwLjc4IDUuMTYgMTAuODggNS4xNiAxMC44N1YxMC44NEw1LjE3IDEwLjc3TDUuMTggMTAuNjJMNS4xOSAxMC41NFYxMC41SDUuMlYxMC40N0M1LjIgMTAuNDYgNS4xOSAxMC41IDUuMTkgMTAuNUw1LjIyIDEwLjMyTDUuMjQgMTAuMTRMNS4yNSAxMC4xMlYxMC4xMUw1LjI0IDEwLjEzTDUuMjUgMTAuMTJWMTAuMTFMNS4yNiAxMC4wN0w1LjI3IDkuOTdBNi41IDYuNSAwIDAgMSA2LjI2IDcuNTlMNi4zMiA3LjVMNi4zOSA3LjRMNi41NSA3LjE5QzYuNjUgNy4wNyA2Ljc0IDYuOTQgNi44NiA2LjgyQTYuNjEgNi42MSAwIDAgMSA4LjM3IDUuNTlDOC41IDUuNSA4LjY0IDUuNDMgOC43NyA1LjM3QzguOSA1LjI5IDkuMDQgNS4yNCA5LjE3IDUuMThBNi43NiA2Ljc2IDAgMCAxIDkuOTQgNC45QTYuNSA2LjUgMCAwIDEgMTAuNjIgNC43NEMxMC44MiA0LjY5IDExIDQuNjggMTEuMTUgNC42NkMxMS4zIDQuNjQgMTEuNDIgNC42NCAxMS41IDQuNjNMMTEuNjIgNC42MkgxMS41QzExLjQyIDQuNjIgMTEuMyA0LjYxIDExLjE1IDQuNjFDMTEgNC42MSAxMC44MiA0LjYxIDEwLjYxIDQuNjNBNi40MSA2LjQxIDAgMCAwIDkuOSA0LjczQTcuMDMgNy4wMyAwIDAgMCA5LjA4IDQuOTNDOC45NCA1IDguNzkgNS4wMyA4LjY1IDUuMDlDOC41IDUuMTQgOC4zNSA1LjIxIDguMiA1LjI4QTcuMjYgNy4yNiAwIDAgMCA3LjMxIDUuNzhBNy4zMyA3LjMzIDAgMCAwIDYuNDcgNi40MkM2LjMzIDYuNTQgNi4yIDYuNjggNi4wNyA2LjhMNS45IDdMNS44MiA3LjA5TDUuNzIgNy4xOUE3LjI1IDcuMjUgMCAwIDAgNS4xMiA4LjA0QTcuMzggNy4zOCAwIDAgMCA0LjM2IDkuNzVMNC4zMyA5Ljg0TDQuMzIgOS44OUw0LjMgOS45NUw0LjI1IDEwLjEzTDQuMjEgMTAuMjlMNC4xOCAxMC41TDQuMTUgMTAuNjNDNC4xNCAxMC42NSA0LjE0IDEwLjY3IDQuMTQgMTAuN0w0LjEzIDEwLjcyVjEwLjc4TDQuMTIgMTAuODFMNC4wOSAxMS4wNkw0LjA1IDExLjVDMy43OSAxMS41NyAzLjUzIDExLjY1IDMuMjggMTEuNzRDMy4yOCAxMS43NCAxLjkzIDEyLjA1IDIgMTIuNzJDMi4wOCAxMy4zNSAzLjQxIDEzLjUgMy40MSAxMy41QTExLjIxIDExLjIxIDAgMCAwIDEwLjI0IDEyLjc0QTIuNjIgMi42MiAwIDAgMSAxMC4xNiAxMS41N00xOS43IDEwLjg0QTcuMTkgNy4xOSAwIDAgMCAxOS41MyA5Ljc5QzE5LjUgOS42MiAxOS40MyA5LjQ1IDE5LjM4IDkuMjdMMTkuMyA5LjAzTDE5LjI2IDguOTFMMTkuMjEgOC43N0E3LjIzIDcuMjMgMCAwIDAgMTguNzUgNy44M0E3LjM1IDcuMzUgMCAwIDAgMTcuNjIgNi4zNUwxNy41NSA2LjI4TDE3LjUgNi4yNUwxNy40NyA2LjJMMTcuMzMgNi4wOEwxNy4yMSA1Ljk3TDE3LjA2IDUuODVMMTYuOTQgNS43NUwxNi44OSA1LjdMMTYuODggNS42OUgxNi44N0wxNi44MyA1LjY2TDE2LjggNS42NEwxNi41OSA1LjVMMTYuMzIgNS4zMVExNi40MiA0Ljg4IDE2LjUgNC40NVMxNi44OCAzLjExIDE2LjI1IDIuODVDMTUuNjcgMi42MSAxNC45MSAzLjcyIDE0LjkxIDMuNzJBMTEuMjEgMTEuMjEgMCAwIDAgMTIuMjUgMTAuMDVBMi42MyAyLjYzIDAgMCAxIDEzLjMyIDEwLjU1QTExLjIgMTEuMiAwIDAgMCAxNS4yNSA4QTQuNzMgNC43MyAwIDAgMSAxNi4wOCA4LjY2QTQuODEgNC44MSAwIDAgMSAxNi41MyA5LjE5TDE2LjU4IDkuMjVMMTYuNjMgOS4zM0wxNi43NCA5LjVDMTYuOCA5LjU5IDE2Ljg2IDkuNjkgMTYuOTIgOS44QTQuODkgNC44OSAwIDAgMSAxNy40IDExLjE2QTQuNzggNC43OCAwIDAgMSAxNy41IDExLjgzQTQuODggNC44OCAwIDAgMSAxNy41IDEyLjQ0QTQuNzYgNC43NiAwIDAgMSAxNy40NCAxMi45NkMxNy40MiAxMy4xMSAxNy4zOSAxMy4yNSAxNy4zNiAxMy4zNkMxNy4zMSAxMy41NyAxNy4yNyAxMy43IDE3LjI3IDEzLjdMMTcuNDEgMTMuMzdDMTcuNDUgMTMuMjYgMTcuNSAxMy4xNCAxNy41NCAxM0E1LjA2IDUuMDYgMCAwIDAgMTcuNjcgMTIuNDZBNS4zNCA1LjM0IDAgMCAwIDE3Ljc1IDExLjgzQTUuMDQgNS4wNCAwIDAgMCAxNy43NiAxMS4xMUE1LjM4IDUuMzggMCAwIDAgMTcuNDMgOS41N0MxNy4zOCA5LjQ0IDE3LjMyIDkuMzEgMTcuMjcgOS4xOUwxNy4xOCA5TDE3LjE0IDguOTNMMTcuMDkgOC44M0E1LjUzIDUuNTMgMCAwIDAgMTUuNjcgNy4xNkMxNS43OSA2LjkgMTUuODkgNi42NSAxNiA2LjM4TDE2LjAzIDYuNDFMMTYuMjUgNi41M0wxNi4yOCA2LjU0VjYuNTVIMTYuMjlDMTYuMzIgNi41NyAxNi4yNCA2LjUgMTYuMjUgNi41M0gxNi4yNkwxNi4yNyA2LjU0TDE2LjMzIDYuNThMMTYuNDUgNi42NkwxNi41IDYuNzFMMTYuNTYgNi43M0wxNi41NyA2Ljc0SDE2LjU4TDE2LjU2IDYuNzNIMTYuNTdMMTYuNzEgNi44NEwxNi44NSA2Ljk0TDE2Ljg3IDYuOTZMMTYuODYgNi45NUwxNi44NyA2Ljk2TDE2LjkxIDdMMTcgNy4wNUE2LjQ2IDYuNDYgMCAwIDEgMTguNiA5LjA1TDE4LjY1IDkuMTVMMTguNzEgOS4yN0wxOC44MiA5LjVDMTguODcgOS42NSAxOC45NCA5Ljc5IDE5IDkuOTVBNi42OSA2LjY5IDAgMCAxIDE5LjI0IDEwLjlBNi43OCA2Ljc4IDAgMCAxIDE5LjM1IDExLjg2QzE5LjM2IDEyIDE5LjM2IDEyLjE3IDE5LjM1IDEyLjMyQzE5LjM1IDEyLjUgMTkuMzQgMTIuNjIgMTkuMzMgMTIuNzdBNi43OSA2Ljc5IDAgMCAxIDE5LjIgMTMuNThBNi40IDYuNCAwIDAgMSAxOSAxNC4yNUMxOC45NiAxNC40NSAxOC44OSAxNC42MiAxOC44NCAxNC43NkMxOC43OCAxNC45IDE4LjczIDE1IDE4LjcgMTUuMDdMMTguNjQgMTUuMTlMMTguNzEgMTUuMDhDMTguNzUgMTUgMTguODEgMTQuOTEgMTguODggMTQuNzhDMTguOTUgMTQuNjQgMTkuMDQgMTQuNSAxOS4xMiAxNC4yOUE2LjUgNi41IDAgMCAwIDE5LjM3IDEzLjYyQTYuOTMgNi45MyAwIDAgMCAxOS41OSAxMi44MUMxOS42MSAxMi42NiAxOS42NCAxMi41IDE5LjY2IDEyLjM1QzE5LjY4IDEyLjE5IDE5LjcgMTIuMDMgMTkuNyAxMS44N0E3LjEgNy4xIDAgMCAwIDE5LjY5IDEwLjg0XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29ubmVjdGlvbiA9IFwiTTIxLjQgNy41QzIyLjIgOC4zIDIyLjIgOS42IDIxLjQgMTAuM0wxOC42IDEzLjFMMTAuOCA1LjNMMTMuNiAyLjVDMTQuNCAxLjcgMTUuNyAxLjcgMTYuNCAyLjVMMTguMiA0LjNMMjEuMiAxLjNMMjIuNiAyLjdMMTkuNiA1LjdMMjEuNCA3LjVNMTUuNiAxMy4zTDE0LjIgMTEuOUwxMS40IDE0LjdMOS4zIDEyLjZMMTIuMSA5LjhMMTAuNyA4LjRMNy45IDExLjJMNi40IDkuOEwzLjYgMTIuNkMyLjggMTMuNCAyLjggMTQuNyAzLjYgMTUuNEw1LjQgMTcuMkwxLjQgMjEuMkwyLjggMjIuNkw2LjggMTguNkw4LjYgMjAuNEM5LjQgMjEuMiAxMC43IDIxLjIgMTEuNCAyMC40TDE0LjIgMTcuNkwxMi44IDE2LjJMMTUuNiAxMy4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnNvbGUgPSBcIk0yMCwxOVY3SDRWMTlIMjBNMjAsM0EyLDIgMCAwLDEgMjIsNVYxOUEyLDIgMCAwLDEgMjAsMjFINEEyLDIgMCAwLDEgMiwxOVY1QzIsMy44OSAyLjksMyA0LDNIMjBNMTMsMTdWMTVIMThWMTdIMTNNOS41OCwxM0w1LjU3LDlIOC40TDExLjcsMTIuM0MxMi4wOSwxMi42OSAxMi4wOSwxMy4zMyAxMS43LDEzLjcyTDguNDIsMTdINS41OUw5LjU4LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnNvbGVMaW5lID0gXCJNMTMsMTlWMTZIMjFWMTlIMTNNOC41LDEzTDIuNDcsN0g2LjcxTDExLjY3LDExLjk1QzEyLjI1LDEyLjU0IDEyLjI1LDEzLjUgMTEuNjcsMTQuMDdMNi43NCwxOUgyLjVMOC41LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnNvbGVOZXR3b3JrID0gXCJNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdBMiwyIDAgMCwxIDUsMTVWNUEyLDIgMCAwLDEgNywzSDE3TTcsN0wxMSwxMUw3LDE1SDkuODVMMTMuMTMsMTEuNzJDMTMuNSwxMS4zMyAxMy41LDEwLjcgMTMuMTMsMTAuM0w5LjgzLDdIN00xNywxM0gxNFYxNUgxN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb25zb2xlTmV0d29ya091dGxpbmUgPSBcIk0xNSwyMEExLDEgMCAwLDAgMTQsMTlIMTNWMTdIMTdBMiwyIDAgMCwwIDE5LDE1VjVBMiwyIDAgMCwwIDE3LDNIN0EyLDIgMCAwLDAgNSw1VjE1QTIsMiAwIDAsMCA3LDE3SDExVjE5SDEwQTEsMSAwIDAsMCA5LDIwSDJWMjJIOUExLDEgMCAwLDAgMTAsMjNIMTRBMSwxIDAgMCwwIDE1LDIySDIyVjIwSDE1TTcsMTVWNUgxN1YxNUg3TTgsNi44OUwxMS41NiwxMC40NUw4LDE0SDEwLjUzTDEzLjQ1LDExLjA4QzEzLjc4LDEwLjc0IDEzLjc4LDEwLjE4IDEzLjQ1LDkuODJMMTAuNSw2Ljg5SDhNMTYsMTIuMjJIMTMuMzNWMTRIMTZWMTIuMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29uc29saWRhdGUgPSBcIk0xOCA5SDIwVjRIMjJWOUEyIDIgMCAwIDEgMjAgMTFIMThWMTNMMTUgMTBMMTggN00xNCAxMEEyIDIgMCAxIDAgMTIgMTJBMiAyIDAgMCAwIDE0IDEwTTIgMTFWMTZINFYxMUg2VjEzTDkgMTBMNiA3VjlINEEyIDIgMCAwIDAgMiAxMU0xNSAxNkwxMiAxM0w5IDE2SDExVjE4QTIgMiAwIDAgMCAxMyAyMEgxOFYxOEgxM1YxNlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRhY3RsZXNzUGF5bWVudCA9IFwiTTE2Ljc5LDIzQzE2LjM3LDIyLjgzIDE2LjA3LDIyLjQ1IDE2LDIyQzE1Ljk1LDIxLjc0IDE2LDIxLjU2IDE2LjQsMjAuODRDMTcuOSwxOC4xNCAxOC42NywxNS4wOSAxOC42MywxMkMxOC42Nyw5IDE3Ljk0LDYuMDcgMTYuNSwzLjQ0QzE2LjI5LDMgMTYuMSwyLjU4IDE1Ljk0LDIuMTNDMTYsMS43NSAxNi4xOSwxLjQgMTYuNSwxLjE5QzE2Ljk1LDAuOTUgMTcuNSwxIDE3LjkxLDEuMjhDMTguMTksMS42NCAxOC40MywyIDE4LjYzLDIuNDJDMTkuNzEsNC41IDIwLjQ0LDYuNyAyMC44LDlDMjEuMDMsMTAuODEgMjEuMDYsMTIuNjUgMjAuODksMTQuNDdDMjAuNTgsMTYuODEgMTkuODksMTkuMDcgMTguODMsMjEuMThDMTguMTksMjIuNDYgMTcuODMsMjMgMTcuNDUsMjNDMTcuMzcsMjMgMTcuMjgsMjMgMTcuMiwyM0MxNy4wNiwyMyAxNi45MywyMyAxNi43OSwyM1YyM00xMi40MywyMC43OUMxMS44NiwyMC42MyAxMS41LDIwLjA1IDExLjYyLDE5LjQ3QzExLjYyLDE5LjM1IDExLjkzLDE4LjggMTIuMjEsMTguMjRDMTMuMzksMTUuOTcgMTMuOSwxMy40MSAxMy42NywxMC44NkMxMy41Myw5LjAzIDEzLDcuMjUgMTIuMTMsNS42NEMxMS41LDQuMzggMTEuNDYsNC4xOCAxMS44MywzLjY0QzEyLjI3LDMuMTUgMTMsMy4wOCAxMy41NCwzLjVDMTQuMjYsNC41NiAxNC44Myw1LjcyIDE1LjI1LDYuOTRDMTYuNTMsMTAuNzMgMTYuMzMsMTQuODYgMTQuNjksMTguNUMxMy44NSwyMC4zOSAxMy4yNiwyMSAxMi40MywyMC43NFYyMC43OU03LjkzLDE4LjU2QzcuNTcsMTguNCA3LjMsMTguMDggNy4yLDE3LjdDNy4yLDE3LjUgNy4yLDE3LjI0IDcuNjUsMTYuNDRDOS4xNCwxMy43NCA5LjE0LDEwLjQ2IDcuNjUsNy43NkM3LDYuNSA3LDYuMjQgNy41Myw1Ljc2QzcuNzIsNS41NCA4LDUuNDMgOC4zLDUuNDdDOC45NCw1LjQ3IDkuMyw1Ljc4IDkuODQsNi45MUMxMC42OSw4LjQ3IDExLjEzLDEwLjIyIDExLjEyLDEyQzExLjE2LDEzLjgxIDEwLjcyLDE1LjYxIDkuODUsMTcuMkM5LjMxLDE4LjI1IDkuMDQsMTguNSA4LjUsMTguNTlDOC4zMSwxOC42MSA4LjExLDE4LjU5IDcuOTMsMTguNVYxOC41Nk0zLjcyLDE2LjQzQzMuMzksMTYuMjcgMy4xMywxNiAzLDE1LjY1QzIuOSwxNS4zIDMsMTUgMy40LDE0LjM2QzMuOSwxMy42OCA0LjE0LDEyLjg0IDQuMDksMTJDNC4xNiwxMS4xNSAzLjkzLDEwLjMxIDMuNDQsOS42MUMzLjI3LDkuMzYgMy4xMyw5LjA5IDMsOC44MkMyLjg5LDguMTkgMy4zMSw3LjU5IDQsNy40N0M0LjU0LDcuMzcgNC45Miw3LjYgNS40Miw4LjM2QzYuODcsMTAuNTcgNi44NywxMy40MiA1LjQyLDE1LjYzQzQuOTEsMTYuNCA0LjMzLDE2LjYzIDMuNzMsMTYuNDNIMy43MlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWN0bGVzc1BheW1lbnRDaXJjbGUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNOC40MyAxNC40NEw3LjA3IDEzLjgzQzcuMzUgMTMuMjcgNy41IDEyLjY3IDcuNSAxMi4wNUM3LjUgMTEuMzkgNy4zNSAxMC43NiA3LjA3IDEwLjE3TDguNDMgOS41NkM4LjgxIDEwLjM3IDkgMTEuMiA5IDEyLjA1QzkgMTIuOCA4LjgxIDEzLjYgOC40MyAxNC40NE0xMS41MyAxNS45NEwxMC4yMiAxNS4yOUMxMC43NSAxNC4xNiAxMSAxMyAxMSAxMS44NkMxMSAxMC43MyAxMC43NSA5LjY5IDEwLjIyIDguNzFMMTEuNTMgNy45NkMxMi4xOSA5LjEyIDEyLjUgMTAuNDIgMTIuNSAxMS44NkMxMi41IDEzLjMzIDEyLjE5IDE0LjY5IDExLjUzIDE1Ljk0TTE0LjY4IDE3LjM1TDEzLjMxIDE2LjY1QzE0LjEgMTUuMTEgMTQuNSAxMy41NyAxNC41IDEyUzE0LjEgOC44NyAxMy4zMSA3LjMxTDE0LjY4IDYuNjVDMTUuNTUgOC40MyAxNiAxMC4yMiAxNiAxMkMxNiAxMy44MiAxNS41NSAxNS42IDE0LjY4IDE3LjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRhY3RsZXNzUGF5bWVudENpcmNsZU91dGxpbmUgPSBcIk0xMiA0QzE2LjQxIDQgMjAgNy41OSAyMCAxMlMxNi40MSAyMCAxMiAyMCA0IDE2LjQxIDQgMTIgNy41OSA0IDEyIDRNMTIgMkM2LjUgMiAyIDYuNSAyIDEyUzYuNSAyMiAxMiAyMiAyMiAxNy41IDIyIDEyIDE3LjUgMiAxMiAyTTguNDMgMTQuNDRMNy4wNyAxMy44M0M3LjM1IDEzLjI3IDcuNSAxMi42NyA3LjUgMTIuMDVDNy41IDExLjM5IDcuMzUgMTAuNzYgNy4wNyAxMC4xN0w4LjQzIDkuNTZDOC44MSAxMC4zNyA5IDExLjIgOSAxMi4wNUM5IDEyLjggOC44MSAxMy42IDguNDMgMTQuNDRNMTEuNTMgMTUuOTRMMTAuMjIgMTUuMjlDMTAuNzUgMTQuMTYgMTEgMTMgMTEgMTEuODZDMTEgMTAuNzMgMTAuNzUgOS42OSAxMC4yMiA4LjcxTDExLjUzIDcuOTZDMTIuMTkgOS4xMiAxMi41IDEwLjQyIDEyLjUgMTEuODZDMTIuNSAxMy4zMyAxMi4xOSAxNC42OSAxMS41MyAxNS45NE0xNC42OCAxNy4zNUwxMy4zMSAxNi42NUMxNC4xIDE1LjExIDE0LjUgMTMuNTcgMTQuNSAxMlMxNC4xIDguODcgMTMuMzEgNy4zMUwxNC42OCA2LjY1QzE1LjU1IDguNDMgMTYgMTAuMjIgMTYgMTJDMTYgMTMuODIgMTUuNTUgMTUuNiAxNC42OCAxNy4zNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWN0cyA9IFwiTTIwLDBINFYySDIwVjBNNCwyNEgyMFYyMkg0VjI0TTIwLDRINEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY2QTIsMiAwIDAsMCAyMCw0TTEyLDYuNzVBMi4yNSwyLjI1IDAgMCwxIDE0LjI1LDlBMi4yNSwyLjI1IDAgMCwxIDEyLDExLjI1QTIuMjUsMi4yNSAwIDAsMSA5Ljc1LDlBMi4yNSwyLjI1IDAgMCwxIDEyLDYuNzVNMTcsMTdIN1YxNS41QzcsMTMuODMgMTAuMzMsMTMgMTIsMTNDMTMuNjcsMTMgMTcsMTMuODMgMTcsMTUuNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWN0c091dGxpbmUgPSBcIk0yMCA0SDRDMi45IDQgMiA0LjkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWNkMyMiA0LjkgMjEuMSA0IDIwIDRNMjAgMThINFY2SDIwVjE4TTQgMEgyMFYySDRNNCAyMkgyMFYyNEg0TTEyIDEyQzEzLjM4IDEyIDE0LjUgMTAuODggMTQuNSA5LjVTMTMuMzggNyAxMiA3IDkuNSA4LjEyIDkuNSA5LjUgMTAuNjIgMTIgMTIgMTJNMTIgOC41QzEyLjU1IDguNSAxMyA4Ljk1IDEzIDkuNVMxMi41NSAxMC41IDEyIDEwLjUgMTEgMTAuMDUgMTEgOS41IDExLjQ1IDguNSAxMiA4LjVNMTcgMTZDMTcgMTMuOSAxMy42OSAxMyAxMiAxM1M3IDEzLjkgNyAxNlYxN0gxN1YxNk04LjgxIDE1LjVDOS40MiAxNSAxMC44NCAxNC41IDEyIDE0LjVDMTMuMTcgMTQuNSAxNC41OSAxNSAxNS4yIDE1LjVIOC44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWluID0gXCJNMiwzSDhWNUg0VjE5SDhWMjFIMlYzTTcsMTdWMTVIOVYxN0g3TTExLDE3VjE1SDEzVjE3SDExTTE1LDE3VjE1SDE3VjE3SDE1TTIyLDNWMjFIMTZWMTlIMjBWNUgxNlYzSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRhaW5FbmQgPSBcIk03LDE3VjE1SDlWMTdIN00xMSwxN1YxNUgxM1YxN0gxMU0xNSwxN1YxNUgxN1YxN0gxNU0yMiwzVjIxSDE2VjE5SDIwVjVIMTZWM0gyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWluU3RhcnQgPSBcIk0yLDNIOFY1SDRWMTlIOFYyMUgyVjNNNywxN1YxNUg5VjE3SDdNMTEsMTdWMTVIMTNWMTdIMTFNMTUsMTdWMTVIMTdWMTdIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudENvcHkgPSBcIk0xOSwyMUg4VjdIMTlNMTksNUg4QTIsMiAwIDAsMCA2LDdWMjFBMiwyIDAgMCwwIDgsMjNIMTlBMiwyIDAgMCwwIDIxLDIxVjdBMiwyIDAgMCwwIDE5LDVNMTYsMUg0QTIsMiAwIDAsMCAyLDNWMTdINFYzSDE2VjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudEN1dCA9IFwiTTE5LDNMMTMsOUwxNSwxMUwyMiw0VjNNMTIsMTIuNUEwLjUsMC41IDAgMCwxIDExLjUsMTJBMC41LDAuNSAwIDAsMSAxMiwxMS41QTAuNSwwLjUgMCAwLDEgMTIuNSwxMkEwLjUsMC41IDAgMCwxIDEyLDEyLjVNNiwyMEEyLDIgMCAwLDEgNCwxOEM0LDE2Ljg5IDQuOSwxNiA2LDE2QTIsMiAwIDAsMSA4LDE4QzgsMTkuMTEgNy4xLDIwIDYsMjBNNiw4QTIsMiAwIDAsMSA0LDZDNCw0Ljg5IDQuOSw0IDYsNEEyLDIgMCAwLDEgOCw2QzgsNy4xMSA3LjEsOCA2LDhNOS42NCw3LjY0QzkuODcsNy4xNCAxMCw2LjU5IDEwLDZBNCw0IDAgMCwwIDYsMkE0LDQgMCAwLDAgMiw2QTQsNCAwIDAsMCA2LDEwQzYuNTksMTAgNy4xNCw5Ljg3IDcuNjQsOS42NEwxMCwxMkw3LjY0LDE0LjM2QzcuMTQsMTQuMTMgNi41OSwxNCA2LDE0QTQsNCAwIDAsMCAyLDE4QTQsNCAwIDAsMCA2LDIyQTQsNCAwIDAsMCAxMCwxOEMxMCwxNy40MSA5Ljg3LDE2Ljg2IDkuNjQsMTYuMzZMMTIsMTRMMTksMjFIMjJWMjBMOS42NCw3LjY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnREdXBsaWNhdGUgPSBcIk0xMSwxN0g0QTIsMiAwIDAsMSAyLDE1VjNBMiwyIDAgMCwxIDQsMUgxNlYzSDRWMTVIMTFWMTNMMTUsMTZMMTEsMTlWMTdNMTksMjFWN0g4VjEzSDZWN0EyLDIgMCAwLDEgOCw1SDE5QTIsMiAwIDAsMSAyMSw3VjIxQTIsMiAwIDAsMSAxOSwyM0g4QTIsMiAwIDAsMSA2LDIxVjE5SDhWMjFIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFBhc3RlID0gXCJNMTksMjBINVY0SDdWN0gxN1Y0SDE5TTEyLDJBMSwxIDAgMCwxIDEzLDNBMSwxIDAgMCwxIDEyLDRBMSwxIDAgMCwxIDExLDNBMSwxIDAgMCwxIDEyLDJNMTksMkgxNC44MkMxNC40LDAuODQgMTMuMywwIDEyLDBDMTAuNywwIDkuNiwwLjg0IDkuMTgsMkg1QTIsMiAwIDAsMCAzLDRWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjRBMiwyIDAgMCwwIDE5LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmUgPSBcIk0xNSw5SDVWNUgxNU0xMiwxOUEzLDMgMCAwLDEgOSwxNkEzLDMgMCAwLDEgMTIsMTNBMywzIDAgMCwxIDE1LDE2QTMsMyAwIDAsMSAxMiwxOU0xNywzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWN0wxNywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlQWxlcnQgPSBcIk0xMyA5SDNWNUgxM00xMCAxOUM4LjMgMTkgNyAxNy43IDcgMTZTOC4zIDEzIDEwIDEzIDEzIDE0LjMgMTMgMTYgMTEuNyAxOSAxMCAxOU0xNSAzSDNDMS45IDMgMSAzLjkgMSA1VjE5QzEgMjAuMSAxLjkgMjEgMyAyMUgxN0MxOC4xIDIxIDE5IDIwLjEgMTkgMTlWN0wxNSAzTTIzIDE0SDIxVjdIMjNWMTRNMjMgMThIMjFWMTZIMjNWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVBbGVydE91dGxpbmUgPSBcIk0xNSAzSDNDMS45IDMgMSAzLjkgMSA1VjE5QzEgMjAuMSAxLjkgMjEgMyAyMUgxN0MxOC4xIDIxIDE5IDIwLjEgMTkgMTlWN0wxNSAzTTE3IDE5SDNWNUgxNC4yTDE3IDcuOFYxOU0xMCAxMkM4LjMgMTIgNyAxMy4zIDcgMTVTOC4zIDE4IDEwIDE4IDEzIDE2LjcgMTMgMTUgMTEuNyAxMiAxMCAxMk00IDZIMTNWMTBINFY2TTIzIDE0SDIxVjdIMjNWMTRNMjMgMThIMjFWMTZIMjNWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVBbGwgPSBcIk0xNyw3VjNIN1Y3SDE3TTE0LDE3QTMsMyAwIDAsMCAxNywxNEEzLDMgMCAwLDAgMTQsMTFBMywzIDAgMCwwIDExLDE0QTMsMyAwIDAsMCAxNCwxN00xOSwxTDIzLDVWMTdBMiwyIDAgMCwxIDIxLDE5SDdDNS44OSwxOSA1LDE4LjEgNSwxN1YzQTIsMiAwIDAsMSA3LDFIMTlNMSw3SDNWMjFIMTdWMjNIM0EyLDIgMCAwLDEgMSwyMVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlQWxsT3V0bGluZSA9IFwiTTEgN0gzVjIxSDE3VjIzSDNDMS45IDIzIDEgMjIuMTEgMSAyMVY3TTE5IDFIN0M1Ljg5IDEgNSAxLjkgNSAzVjE3QzUgMTguMSA1Ljg5IDE5IDcgMTlIMjFDMjIuMSAxOSAyMyAxOC4xIDIzIDE3VjVMMTkgMU0yMSAxN0g3VjNIMTguMTdMMjEgNS44M1YxN00xNCAxMEMxMi4zNCAxMCAxMSAxMS4zNCAxMSAxM1MxMi4zNCAxNiAxNCAxNiAxNyAxNC42NiAxNyAxMyAxNS42NiAxMCAxNCAxME04IDRIMTdWOEg4VjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVDb2cgPSBcIk0yMSAxMS43VjdMMTcgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTEuN0MxMS40IDIwLjMgMTEuMiAxOS42IDExLjEgMTguOEM5LjkgMTguNCA5IDE3LjMgOSAxNkM5IDE0LjMgMTAuMyAxMyAxMiAxM0MxMi4zIDEzIDEyLjYgMTMuMSAxMi45IDEzLjJDMTQuMiAxMS44IDE2IDExIDE4IDExQzE5LjEgMTEgMjAuMSAxMS4yIDIxIDExLjdNMTUgOUg1VjVIMTVWOU0yMS43IDE4LjZWMTcuNkwyMi44IDE2LjhDMjIuOSAxNi43IDIzIDE2LjYgMjIuOSAxNi41TDIxLjkgMTQuOEMyMS45IDE0LjcgMjEuNyAxNC43IDIxLjYgMTQuN0wyMC40IDE1LjJDMjAuMSAxNSAxOS44IDE0LjggMTkuNSAxNC43TDE5LjMgMTMuNEMxOS4zIDEzLjMgMTkuMiAxMy4yIDE5LjEgMTMuMkgxNy4xQzE2LjkgMTMuMiAxNi44IDEzLjMgMTYuOCAxMy40TDE2LjYgMTQuN0MxNi4zIDE0LjkgMTYuMSAxNSAxNS44IDE1LjJMMTQuNiAxNC43QzE0LjUgMTQuNyAxNC40IDE0LjcgMTQuMyAxNC44TDEzLjMgMTYuNUMxMy4zIDE2LjYgMTMuMyAxNi43IDEzLjQgMTYuOEwxNC41IDE3LjZWMTguNkwxMy40IDE5LjRDMTMuMyAxOS41IDEzLjIgMTkuNiAxMy4zIDE5LjdMMTQuMyAyMS40QzE0LjQgMjEuNSAxNC41IDIxLjUgMTQuNiAyMS41TDE1LjggMjFDMTYgMjEuMiAxNi4zIDIxLjQgMTYuNiAyMS41TDE2LjggMjIuOEMxNi45IDIyLjkgMTcgMjMgMTcuMSAyM0gxOS4xQzE5LjIgMjMgMTkuMyAyMi45IDE5LjMgMjIuOEwxOS41IDIxLjVDMTkuOCAyMS4zIDIwIDIxLjIgMjAuMyAyMUwyMS41IDIxLjRDMjEuNiAyMS40IDIxLjcgMjEuNCAyMS44IDIxLjNMMjIuOCAxOS42QzIyLjkgMTkuNSAyMi45IDE5LjQgMjIuOCAxOS40TDIxLjcgMTguNk0xOCAxOS41QzE3LjIgMTkuNSAxNi41IDE4LjggMTYuNSAxOFMxNy4yIDE2LjUgMTggMTYuNSAxOS41IDE3LjIgMTkuNSAxOCAxOC44IDE5LjUgMTggMTkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250ZW50U2F2ZUNvZ091dGxpbmUgPSBcIk0xMS4xIDE5QzExLjIgMTkuNyAxMS40IDIwLjQgMTEuNyAyMUg1QzMuOSAyMSAzIDIwLjEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM0gxN0wyMSA3VjExLjdDMjAuNCAxMS40IDE5LjcgMTEuMiAxOSAxMS4xVjcuOEwxNi4yIDVINVYxOUgxMS4xTTEyIDEyQzEwLjMgMTIgOSAxMy4zIDkgMTVDOSAxNi4zIDkuOCAxNy40IDExIDE3LjhDMTEuMSAxNS42IDEyLjEgMTMuNyAxMy43IDEyLjVDMTMuMiAxMi4yIDEyLjYgMTIgMTIgMTJNMTUgMTBWNkg2VjEwSDE1TTIyLjggMTkuNkwyMS44IDIxLjNDMjEuNyAyMS40IDIxLjYgMjEuNCAyMS41IDIxLjRMMjAuMyAyMUMyMCAyMS4yIDE5LjggMjEuMyAxOS41IDIxLjVMMTkuMyAyMi44QzE5LjMgMjIuOSAxOS4yIDIzIDE5LjEgMjNIMTcuMUMxNyAyMyAxNi45IDIyLjkgMTYuOCAyMi44TDE2LjYgMjEuNUMxNi4zIDIxLjQgMTYgMjEuMiAxNS44IDIxTDE0LjYgMjEuNUMxNC41IDIxLjUgMTQuNCAyMS41IDE0LjMgMjEuNEwxMy4zIDE5LjdDMTMuMiAxOS42IDEzLjMgMTkuNSAxMy40IDE5LjRMMTQuNSAxOC42VjE3LjZMMTMuNCAxNi44QzEzLjMgMTYuNyAxMy4zIDE2LjYgMTMuMyAxNi41TDE0LjMgMTQuOEMxNC40IDE0LjcgMTQuNSAxNC43IDE0LjYgMTQuN0wxNS44IDE1LjJDMTYuMSAxNSAxNi4zIDE0LjkgMTYuNiAxNC43TDE2LjggMTMuNEMxNi44IDEzLjMgMTYuOSAxMy4yIDE3LjEgMTMuMkgxOS4xQzE5LjIgMTMuMiAxOS4zIDEzLjMgMTkuMyAxMy40TDE5LjUgMTQuN0MxOS44IDE0LjggMjAuMSAxNSAyMC40IDE1LjJMMjEuNiAxNC43QzIxLjcgMTQuNyAyMS45IDE0LjcgMjEuOSAxNC44TDIyLjkgMTYuNUMyMyAxNi42IDIyLjkgMTYuNyAyMi44IDE2LjhMMjEuNyAxNy42VjE4LjZMMjIuOCAxOS40QzIyLjkgMTkuNCAyMi45IDE5LjUgMjIuOCAxOS42TTE5LjUgMThDMTkuNSAxNy4yIDE4LjggMTYuNSAxOCAxNi41UzE2LjUgMTcuMiAxNi41IDE4IDE3LjIgMTkuNSAxOCAxOS41QzE4LjggMTkuNSAxOS41IDE4LjggMTkuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250ZW50U2F2ZUVkaXQgPSBcIk0xMCwxOUwxMC4xNCwxOC44NkM4LjksMTguNSA4LDE3LjM2IDgsMTZBMywzIDAgMCwxIDExLDEzQzEyLjM2LDEzIDEzLjUsMTMuOSAxMy44NiwxNS4xNEwyMCw5VjdMMTYsM0g0QzIuODksMyAyLDMuOSAyLDVWMTlBMiwyIDAgMCwwIDQsMjFIMTBWMTlNNCw1SDE0VjlINFY1TTIwLjA0LDEyLjEzQzE5LjksMTIuMTMgMTkuNzYsMTIuMTkgMTkuNjUsMTIuM0wxOC42NSwxMy4zTDIwLjcsMTUuMzVMMjEuNywxNC4zNUMyMS45MiwxNC4xNCAyMS45MiwxMy43OSAyMS43LDEzLjU4TDIwLjQyLDEyLjNDMjAuMzEsMTIuMTkgMjAuMTgsMTIuMTMgMjAuMDQsMTIuMTNNMTguMDcsMTMuODhMMTIsMTkuOTRWMjJIMTQuMDZMMjAuMTIsMTUuOTNMMTguMDcsMTMuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVFZGl0T3V0bGluZSA9IFwiTTQgMTlIMTBWMjFINEMyLjg5IDIxIDIgMjAuMSAyIDE5VjVDMiAzLjkgMi44OSAzIDQgM0gxNkwyMCA3VjkuMTJMMTggMTEuMTJWNy44M0wxNS4xNyA1SDRWMTlNMTQgMTBWNkg1VjEwSDE0TTIwLjQyIDEyLjNDMjAuMzEgMTIuMTkgMjAuMTggMTIuMTMgMjAuMDQgMTIuMTNDMTkuOSAxMi4xMyAxOS43NiAxMi4xOSAxOS42NSAxMi4zTDE4LjY1IDEzLjNMMjAuNyAxNS4zNUwyMS43IDE0LjM1QzIxLjkyIDE0LjE0IDIxLjkyIDEzLjc5IDIxLjcgMTMuNThMMjAuNDIgMTIuM00xMiAxOS45NFYyMkgxNC4wNkwyMC4xMiAxNS45M0wxOC4wNyAxMy44OEwxMiAxOS45NE0xNCAxNUMxNCAxMy4zNCAxMi42NiAxMiAxMSAxMlM4IDEzLjM0IDggMTUgOS4zNCAxOCAxMSAxOEMxMS4wNCAxOCAxMS4wOCAxOCAxMS4xMyAxOEwxNCAxNS4xM0MxNCAxNS4wOSAxNCAxNS4wNSAxNCAxNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlTW92ZSA9IFwiTTE3LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDExLjgxQzExLjQyLDIwLjM0IDExLjE3LDE5LjYgMTEuMDcsMTguODRDOS41LDE4LjMxIDguNjYsMTYuNiA5LjIsMTUuMDNDOS42MSwxMy44MyAxMC43MywxMyAxMiwxM0MxMi40NCwxMyAxMi44OCwxMy4xIDEzLjI4LDEzLjI5QzE1LjU3LDExLjUgMTguODMsMTEuNTkgMjEsMTMuNTRWN0wxNywzTTE1LDlINVY1SDE1VjlNMTMsMTdIMTdWMTRMMjIsMTguNUwxNywyM1YyMEgxM1YxN1wiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlTW92ZU91dGxpbmUgPSBcIk0xMyAxN0gxN1YxNEwyMiAxOC41TDE3IDIzVjIwSDEzVjE3TTE0IDEyLjhDMTMuNSAxMi4zMSAxMi43OCAxMiAxMiAxMkMxMC4zNCAxMiA5IDEzLjM0IDkgMTVDOSAxNi4zMSA5Ljg0IDE3LjQxIDExIDE3LjgyQzExLjA3IDE1LjY3IDEyLjI3IDEzLjggMTQgMTIuOE0xMS4wOSAxOUg1VjVIMTYuMTdMMTkgNy44M1YxMi4zNUMxOS43NSAxMi42MSAyMC40MiAxMyAyMSAxMy41NFY3TDE3IDNINUMzLjg5IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjg5IDIxIDUgMjFIMTEuODFDMTEuNDYgMjAuMzkgMTEuMjEgMTkuNzIgMTEuMDkgMTlNNiAxMEgxNVY2SDZWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVPZmYgPSBcIk04LjIgNUw2LjIgM0gxN0wyMSA3VjE3LjhMMTIuMiA5SDE1VjVIOC4yTTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE5LjEgMjFDMTkuMDcgMjEgMTkuMDMgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyA0Ljk3IDMgNC45MyAzIDQuOUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTcuMTEgOUw1IDYuODlWOUg3LjExTTE0Ljg5IDE2Ljc4TDExLjIyIDEzLjExQzkuOTUgMTMuNDYgOSAxNC42MSA5IDE2QzkgMTcuNjYgMTAuMzQgMTkgMTIgMTlDMTMuMzkgMTkgMTQuNTQgMTguMDUgMTQuODkgMTYuNzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVPZmZPdXRsaW5lID0gXCJNOC4yIDVMNi4yIDNIMTdMMjEgN1YxNy44TDE5IDE1LjhWNy44M0wxNi4xNyA1SDguMk0xNSAxMFY2SDkuMkwxMy4yIDEwSDE1TTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE5LjEgMjFDMTkuMDcgMjEgMTkuMDMgMjEgMTkgMjFINUMzLjg5IDIxIDMgMjAuMSAzIDE5VjVDMyA0Ljk3IDMgNC45MyAzIDQuOUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTE3LjExIDE5TDE0LjU5IDE2LjVDMTQuMDggMTcuMzkgMTMuMTIgMTggMTIgMThDMTAuMzQgMTggOSAxNi42NiA5IDE1QzkgMTMuODggOS42MSAxMi45MiAxMC41IDEyLjQxTDguMTEgMTBINlY3Ljg5TDUgNi44OVYxOUgxNy4xMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250ZW50U2F2ZU91dGxpbmUgPSBcIk0xNyAzSDVDMy44OSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY3TDE3IDNNMTkgMTlINVY1SDE2LjE3TDE5IDcuODNWMTlNMTIgMTJDMTAuMzQgMTIgOSAxMy4zNCA5IDE1UzEwLjM0IDE4IDEyIDE4IDE1IDE2LjY2IDE1IDE1IDEzLjY2IDEyIDEyIDEyTTYgNkgxNVYxMEg2VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVTZXR0aW5ncyA9IFwiTTE1LDhWNEg1VjhIMTVNMTIsMThBMywzIDAgMCwwIDE1LDE1QTMsMyAwIDAsMCAxMiwxMkEzLDMgMCAwLDAgOSwxNUEzLDMgMCAwLDAgMTIsMThNMTcsMkwyMSw2VjE4QTIsMiAwIDAsMSAxOSwyMEg1QzMuODksMjAgMywxOS4xIDMsMThWNEEyLDIgMCAwLDEgNSwySDE3TTExLDIySDEzVjI0SDExVjIyTTcsMjJIOVYyNEg3VjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlU2V0dGluZ3NPdXRsaW5lID0gXCJNNyAyMkg5VjI0SDdWMjJNMTEgMjJIMTNWMjRIMTFWMjJNMTUgMjJIMTdWMjRIMTVWMjJNMTcgMkg1QzMuODkgMiAzIDIuOSAzIDRWMThDMyAxOS4xIDMuODkgMjAgNSAyMEgxOUMyMC4xIDIwIDIxIDE5LjEgMjEgMThWNkwxNyAyTTE5IDE4SDVWNEgxNi4xN0wxOSA2LjgzVjE4TTEyIDExQzEwLjM0IDExIDkgMTIuMzQgOSAxNFMxMC4zNCAxNyAxMiAxNyAxNSAxNS42NiAxNSAxNCAxMy42NiAxMSAxMiAxMU02IDVIMTVWOUg2VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udHJhc3QgPSBcIk00LjM4LDIwLjlDMy43OCwyMC43MSAzLjMsMjAuMjMgMy4xLDE5LjYzTDE5LjYzLDMuMUMyMC4yMywzLjMgMjAuNzEsMy43OCAyMC45LDQuMzhMNC4zOCwyMC45TTIwLDE2VjE4SDEzVjE2SDIwTTMsNkg2VjNIOFY2SDExVjhIOFYxMUg2VjhIM1Y2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRyYXN0Qm94ID0gXCJNMTcsMTUuNUgxMlYxN0gxN00xOSwxOUg1TDE5LDVNNS41LDcuNUg3LjVWNS41SDlWNy41SDExVjlIOVYxMUg3LjVWOUg1LjVNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udHJhc3RDaXJjbGUgPSBcIk0xMiwyMEM5Ljc5LDIwIDcuNzksMTkuMSA2LjM0LDE3LjY2TDE3LjY2LDYuMzRDMTkuMSw3Ljc5IDIwLDkuNzkgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTYsOEg4VjZIOS41VjhIMTEuNVY5LjVIOS41VjExLjVIOFY5LjVINk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwxNkgxN1YxNC41SDEyVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRyb2xsZXJDbGFzc2ljID0gXCJNNiw3SDE4QTUsNSAwIDAsMSAyMywxMkE1LDUgMCAwLDEgMTgsMTdDMTYuMzYsMTcgMTQuOTEsMTYuMjEgMTQsMTVIMTBDOS4wOSwxNi4yMSA3LjY0LDE3IDYsMTdBNSw1IDAgMCwxIDEsMTJBNSw1IDAgMCwxIDYsN00xOS43NSw5LjVBMS4yNSwxLjI1IDAgMCwwIDE4LjUsMTAuNzVBMS4yNSwxLjI1IDAgMCwwIDE5Ljc1LDEyQTEuMjUsMS4yNSAwIDAsMCAyMSwxMC43NUExLjI1LDEuMjUgMCAwLDAgMTkuNzUsOS41TTE3LjI1LDEyQTEuMjUsMS4yNSAwIDAsMCAxNiwxMy4yNUExLjI1LDEuMjUgMCAwLDAgMTcuMjUsMTQuNUExLjI1LDEuMjUgMCAwLDAgMTguNSwxMy4yNUExLjI1LDEuMjUgMCAwLDAgMTcuMjUsMTJNNSw5VjExSDNWMTNINVYxNUg3VjEzSDlWMTFIN1Y5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udHJvbGxlckNsYXNzaWNPdXRsaW5lID0gXCJNMTcuNSw3QTUuNSw1LjUgMCAwLDEgMjMsMTIuNUE1LjUsNS41IDAgMCwxIDE3LjUsMThDMTUuNzksMTggMTQuMjcsMTcuMjIgMTMuMjYsMTZIMTAuNzRDOS43MywxNy4yMiA4LjIxLDE4IDYuNSwxOEE1LjUsNS41IDAgMCwxIDEsMTIuNUE1LjUsNS41IDAgMCwxIDYuNSw3SDE3LjVNNi41LDlBMy41LDMuNSAwIDAsMCAzLDEyLjVBMy41LDMuNSAwIDAsMCA2LjUsMTZDNy45LDE2IDkuMSwxNS4xOCA5LjY2LDE0SDE0LjM0QzE0LjksMTUuMTggMTYuMSwxNiAxNy41LDE2QTMuNSwzLjUgMCAwLDAgMjEsMTIuNUEzLjUsMy41IDAgMCwwIDE3LjUsOUg2LjVNNS43NSwxMC4yNUg3LjI1VjExLjc1SDguNzVWMTMuMjVINy4yNVYxNC43NUg1Ljc1VjEzLjI1SDQuMjVWMTEuNzVINS43NVYxMC4yNU0xNi43NSwxMi41QTEsMSAwIDAsMSAxNy43NSwxMy41QTEsMSAwIDAsMSAxNi43NSwxNC41QTEsMSAwIDAsMSAxNS43NSwxMy41QTEsMSAwIDAsMSAxNi43NSwxMi41TTE4Ljc1LDEwLjVBMSwxIDAgMCwxIDE5Ljc1LDExLjVBMSwxIDAgMCwxIDE4Ljc1LDEyLjVBMSwxIDAgMCwxIDE3Ljc1LDExLjVBMSwxIDAgMCwxIDE4Ljc1LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llID0gXCJNMTIsM0E5LDkgMCAwLDAgMywxMkE5LDkgMCAwLDAgMTIsMjFBOSw5IDAgMCwwIDIxLDEyQzIxLDExLjUgMjAuOTYsMTEgMjAuODcsMTAuNUMyMC42LDEwIDIwLDEwIDIwLDEwSDE4VjlDMTgsOCAxNyw4IDE3LDhIMTVWN0MxNSw2IDE0LDYgMTQsNkgxM1Y0QzEzLDMgMTIsMyAxMiwzTTkuNSw2QTEuNSwxLjUgMCAwLDEgMTEsNy41QTEuNSwxLjUgMCAwLDEgOS41LDlBMS41LDEuNSAwIDAsMSA4LDcuNUExLjUsMS41IDAgMCwxIDkuNSw2TTYuNSwxMEExLjUsMS41IDAgMCwxIDgsMTEuNUExLjUsMS41IDAgMCwxIDYuNSwxM0ExLjUsMS41IDAgMCwxIDUsMTEuNUExLjUsMS41IDAgMCwxIDYuNSwxME0xMS41LDExQTEuNSwxLjUgMCAwLDEgMTMsMTIuNUExLjUsMS41IDAgMCwxIDExLjUsMTRBMS41LDEuNSAwIDAsMSAxMCwxMi41QTEuNSwxLjUgMCAwLDEgMTEuNSwxMU0xNi41LDEzQTEuNSwxLjUgMCAwLDEgMTgsMTQuNUExLjUsMS41IDAgMCwxIDE2LjUsMTZIMTYuNUExLjUsMS41IDAgMCwxIDE1LDE0LjVIMTVBMS41LDEuNSAwIDAsMSAxNi41LDEzTTExLDE2QTEuNSwxLjUgMCAwLDEgMTIuNSwxNy41QTEuNSwxLjUgMCAwLDEgMTEsMTlBMS41LDEuNSAwIDAsMSA5LjUsMTcuNUExLjUsMS41IDAgMCwxIDExLDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZUFsZXJ0ID0gXCJNMTggMTBIMTZWOUMxNiA4IDE1IDggMTUgOEgxM1Y3QzEzIDYgMTIgNiAxMiA2SDExVjRDMTEgMyAxMCAzIDEwIDNDNSAzIDEgNyAxIDEyUzUgMjEgMTAgMjEgMTkgMTcgMTkgMTJDMTkgMTEuNSAxOSAxMSAxOC45IDEwLjVDMTguNiAxMCAxOCAxMCAxOCAxME00LjUgMTNDMy43IDEzIDMgMTIuMyAzIDExLjVTMy43IDEwIDQuNSAxMCA2IDEwLjcgNiAxMS41IDUuMyAxMyA0LjUgMTNNNiA3LjVDNiA2LjcgNi43IDYgNy41IDZTOSA2LjcgOSA3LjUgOC4zIDkgNy41IDkgNiA4LjMgNiA3LjVNOSAxOUM4LjIgMTkgNy41IDE4LjMgNy41IDE3LjVTOC4yIDE2IDkgMTYgMTAuNSAxNi43IDEwLjUgMTcuNSA5LjggMTkgOSAxOU05LjUgMTRDOC43IDE0IDggMTMuMyA4IDEyLjVTOC43IDExIDkuNSAxMSAxMSAxMS43IDExIDEyLjUgMTAuMyAxNCA5LjUgMTRNMTQuNSAxNkMxMy43IDE2IDEzIDE1LjMgMTMgMTQuNVMxMy43IDEzIDE0LjUgMTNDMTUuMyAxMyAxNiAxMy43IDE2IDE0LjVTMTUuMyAxNiAxNC41IDE2TTIxIDE1SDIzVjE3SDIxVjE1TTIzIDdWMTNIMjFWN0gyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVBbGVydE91dGxpbmUgPSBcIk0xNiAxNC41QzE2IDE1LjMgMTUuMyAxNiAxNC41IDE2UzEzIDE1LjMgMTMgMTQuNSAxMy43IDEzIDE0LjUgMTNDMTUuMyAxMyAxNiAxMy43IDE2IDE0LjVNMTguOSAxMC41QzE5IDExIDE5IDExLjUgMTkgMTJDMTkgMTcgMTUgMjEgMTAgMjFTMSAxNyAxIDEyIDUgMyAxMCAzQzEwIDMgMTEgMyAxMSA0VjZIMTJDMTIgNiAxMyA2IDEzIDdWOEgxNUMxNSA4IDE2IDggMTYgOVYxMEgxOEMxOCAxMCAxOC42IDEwIDE4LjkgMTAuNU0xNyAxMkgxNS41QzE0LjcgMTIgMTQgMTEuMyAxNCAxMC41VjEwSDEyLjVDMTEuNyAxMCAxMSA5LjMgMTEgOC41VjhIMTAuNUM5LjcgOCA5IDcuMyA5IDYuNVY1LjFDNS45IDUuNSAzLjUgOCAzLjEgMTEuMUMzLjIgMTAuNSAzLjggMTAgNC41IDEwQzUuMyAxMCA2IDEwLjcgNiAxMS41UzUuMyAxMyA0LjUgMTNDMy43IDEzIDMuMSAxMi40IDMgMTEuNkMzIDEyLjEgMyAxMi42IDMuMSAxMy4xQzMuNSAxNS44IDUuNiAxOCA4LjIgMTguN0M3LjggMTguNCA3LjUgMTggNy41IDE3LjVDNy41IDE2LjcgOC4yIDE2IDkgMTZTMTAuNSAxNi43IDEwLjUgMTcuNUMxMC41IDE4LjIgMTAgMTguOCA5LjMgMTlDMTMuNSAxOS40IDE3IDE2LjEgMTcgMTJNOS41IDExQzguNyAxMSA4IDExLjcgOCAxMi41UzguNyAxNCA5LjUgMTQgMTEgMTMuMyAxMSAxMi41IDEwLjMgMTEgOS41IDExTTkgNy41QzkgNi43IDguMyA2IDcuNSA2UzYgNi43IDYgNy41IDYuNyA5IDcuNSA5IDkgOC4zIDkgNy41TTIxIDE3SDIzVjE1SDIxVjE3TTIxIDdWMTNIMjNWN0gyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVDaGVjayA9IFwiTTE1IDE0LjUzQzE1IDE0LjUgMTUgMTQuNSAxNSAxNC41QzE1IDEzLjY3IDE1LjY3IDEzIDE2LjUgMTNDMTYuOCAxMyAxNy4wOCAxMy4wOSAxNy4zMiAxMy4yNEMxNy44NSAxMy4wOSAxOC40MiAxMyAxOSAxM0MxOS42NiAxMyAyMC4zIDEzLjEyIDIwLjg5IDEzLjMyQzIwLjk2IDEyLjg5IDIxIDEyLjQ1IDIxIDEyQzIxIDExLjUgMjAuOTYgMTEgMjAuODcgMTAuNUMyMC42IDEwIDIwIDEwIDIwIDEwSDE4VjlDMTggOCAxNyA4IDE3IDhIMTVWN0MxNSA2IDE0IDYgMTQgNkgxM1Y0QzEzIDMgMTIgMyAxMiAzQzcuMDMgMyAzIDcuMDMgMyAxMlM3LjAzIDIxIDEyIDIxQzEyLjQ1IDIxIDEyLjg5IDIwLjk2IDEzLjMyIDIwLjg5QzEzLjEyIDIwLjMgMTMgMTkuNjYgMTMgMTlDMTMgMTcuMjIgMTMuNzggMTUuNjMgMTUgMTQuNTNNNi41IDEzQzUuNjcgMTMgNSAxMi4zMyA1IDExLjVTNS42NyAxMCA2LjUgMTAgOCAxMC42NyA4IDExLjUgNy4zMyAxMyA2LjUgMTNNOCA3LjVDOCA2LjY3IDguNjcgNiA5LjUgNlMxMSA2LjY3IDExIDcuNSAxMC4zMyA5IDkuNSA5IDggOC4zMyA4IDcuNU0xMSAxOUMxMC4xNyAxOSA5LjUgMTguMzMgOS41IDE3LjVTMTAuMTcgMTYgMTEgMTYgMTIuNSAxNi42NyAxMi41IDE3LjUgMTEuODMgMTkgMTEgMTlNMTEuNSAxNEMxMC42NyAxNCAxMCAxMy4zMyAxMCAxMi41UzEwLjY3IDExIDExLjUgMTEgMTMgMTEuNjcgMTMgMTIuNSAxMi4zMyAxNCAxMS41IDE0TTIyLjUgMTcuMjVMMTcuNzUgMjJMMTUgMTlMMTYuMTYgMTcuODRMMTcuNzUgMTkuNDNMMjEuMzQgMTUuODRMMjIuNSAxNy4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVDaGVja091dGxpbmUgPSBcIk0xNSAxMEgxNC41QzEzLjY3IDEwIDEzIDkuMzMgMTMgOC41VjhIMTIuNUMxMS42NyA4IDExIDcuMzMgMTEgNi41VjUuMDdDNy45MSA1LjUgNS40NyA4IDUuMDcgMTEuMDhDNS4yNSAxMC40NiA1LjgyIDEwIDYuNSAxMEM3LjMzIDEwIDggMTAuNjcgOCAxMS41UzcuMzMgMTMgNi41IDEzQzUuNzEgMTMgNS4wNyAxMi4zOSA1IDExLjYyQzUgMTIuMTEgNSAxMi42MSA1LjA5IDEzLjEyQzUuNSAxNS44MSA3LjU0IDE4LjA0IDEwLjE2IDE4Ljc0QzkuNzYgMTguNDcgOS41IDE4IDkuNSAxNy41QzkuNSAxNi42NyAxMC4xNyAxNiAxMSAxNlMxMi41IDE2LjY3IDEyLjUgMTcuNUMxMi41IDE4LjIyIDEyIDE4LjgyIDExLjMyIDE4Ljk2QzExLjkgMTkgMTIuNDYgMTkgMTMgMTguOTJDMTMgMTguOTUgMTMgMTguOTcgMTMgMTlDMTMgMTkuNjYgMTMuMTIgMjAuMyAxMy4zMiAyMC44OUMxMi44OSAyMC45NiAxMi40NSAyMSAxMiAyMUM3LjAzIDIxIDMgMTYuOTcgMyAxMlM3LjAzIDMgMTIgM0MxMiAzIDEzIDMgMTMgNFY2SDE0QzE0IDYgMTUgNiAxNSA3VjhIMTdDMTcgOCAxOCA4IDE4IDlWMTBIMjBDMjAgMTAgMjAuNiAxMCAyMC44NyAxMC41QzIwLjk2IDExIDIxIDExLjUgMjEgMTJDMjEgMTIuNDUgMjAuOTYgMTIuODkgMjAuODkgMTMuMzJDMjAuMyAxMy4xMiAxOS42NiAxMyAxOSAxM0MxOC45NyAxMyAxOC45NSAxMyAxOC45MiAxM0MxOC45NyAxMi42OCAxOSAxMi4zNCAxOSAxMkgxNy41QzE2LjY3IDEyIDE2IDExLjMzIDE2IDEwLjVWMTBIMTVNMTUgMTQuNUMxNSAxNC41IDE1IDE0LjUgMTUgMTQuNTNDMTUuNjYgMTMuOTUgMTYuNDUgMTMuNSAxNy4zMiAxMy4yNEMxNy4wOCAxMy4wOSAxNi44IDEzIDE2LjUgMTNDMTUuNjcgMTMgMTUgMTMuNjcgMTUgMTQuNU0xMS41IDE0QzEyLjMzIDE0IDEzIDEzLjMzIDEzIDEyLjVTMTIuMzMgMTEgMTEuNSAxMSAxMCAxMS42NyAxMCAxMi41IDEwLjY3IDE0IDExLjUgMTRNMTEgNy41QzExIDYuNjcgMTAuMzMgNiA5LjUgNlM4IDYuNjcgOCA3LjUgOC42NyA5IDkuNSA5IDExIDguMzMgMTEgNy41TTIxLjM0IDE1Ljg0TDE3Ljc1IDE5LjQzTDE2LjE2IDE3Ljg0TDE1IDE5TDE3Ljc1IDIyTDIyLjUgMTcuMjVMMjEuMzQgMTUuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llQ2xvY2sgPSBcIk0xOS45NyAxMC4yNEMxOS45NSAxMCAxOS45MSA5Ljc0IDE5Ljg3IDkuNUMxOS42IDkgMTkgOSAxOSA5SDE3VjhDMTcgNyAxNiA3IDE2IDdIMTRWNkMxNCA1IDEzIDUgMTMgNUgxMlYzQzEyIDIgMTEgMiAxMSAyQzYuMDMgMiAyIDYuMDMgMiAxMUMyIDE1LjcxIDUuNjIgMTkuNTcgMTAuMjMgMTkuOTZDMTEuNSAyMS44IDEzLjYxIDIzIDE2IDIzQzE5Ljg3IDIzIDIzIDE5Ljg3IDIzIDE2QzIzIDEzLjYxIDIxLjggMTEuNSAxOS45NyAxMC4yNE0xMS42NCAxMC41M0MxMC44NyAxMS4xNSAxMC4yMyAxMS45MiA5Ljc4IDEyLjgxQzkuMzIgMTIuNTUgOSAxMi4wNiA5IDExLjVDOSAxMC42NyA5LjY3IDEwIDEwLjUgMTBDMTAuOTYgMTAgMTEuMzYgMTAuMjEgMTEuNjQgMTAuNTNNNS41IDEyQzQuNjcgMTIgNCAxMS4zMyA0IDEwLjVTNC42NyA5IDUuNSA5IDcgOS42NyA3IDEwLjUgNi4zMyAxMiA1LjUgMTJNNyA2LjVDNyA1LjY3IDcuNjcgNSA4LjUgNVMxMCA1LjY3IDEwIDYuNSA5LjMzIDggOC41IDggNyA3LjMzIDcgNi41TTguNSAxNi41QzguNSAxNi4wNCA4LjcxIDE1LjY0IDkuMDMgMTUuMzZDOSAxNS41NyA5IDE1Ljc5IDkgMTZDOSAxNi42MiA5LjA5IDE3LjIyIDkuMjQgMTcuNzlDOC44IDE3LjUgOC41IDE3LjA1IDguNSAxNi41TTE2IDIxQzEzLjI0IDIxIDExIDE4Ljc2IDExIDE2UzEzLjI0IDExIDE2IDExIDIxIDEzLjI0IDIxIDE2IDE4Ljc2IDIxIDE2IDIxTTE2LjUgMTYuMjVMMTkuMzYgMTcuOTRMMTguNjEgMTkuMTZMMTUgMTdWMTJIMTYuNVYxNi4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVDbG9ja091dGxpbmUgPSBcIk04LjUgOEM3LjY3IDggNyA3LjMzIDcgNi41UzcuNjcgNSA4LjUgNSAxMCA1LjY3IDEwIDYuNSA5LjMzIDggOC41IDhNMTYuNSAxMkgxNVYxN0wxOC42MSAxOS4xNkwxOS4zNiAxNy45NEwxNi41IDE2LjI1VjEyTTIzIDE2QzIzIDE5Ljg3IDE5Ljg3IDIzIDE2IDIzQzEzLjYxIDIzIDExLjUgMjEuOCAxMC4yMyAxOS45NkM1LjYyIDE5LjU3IDIgMTUuNzEgMiAxMUMyIDYuMDMgNi4wMyAyIDExIDJDMTEgMiAxMiAyIDEyIDNWNUgxM0MxMyA1IDE0IDUgMTQgNlY3SDE2QzE2IDcgMTcgNyAxNyA4VjlIMTlDMTkgOSAxOS42IDkgMTkuODcgOS41QzE5LjkxIDkuNzQgMTkuOTUgMTAgMTkuOTcgMTAuMjRDMjEuOCAxMS41IDIzIDEzLjYxIDIzIDE2TTkuMTYgMTcuNzRDOC43NiAxNy40NyA4LjUgMTcgOC41IDE2LjVDOC41IDE2LjA0IDguNzEgMTUuNjQgOS4wMyAxNS4zNkM5LjEyIDE0LjQ1IDkuMzggMTMuNTkgOS43OCAxMi44MUM5LjMyIDEyLjU1IDkgMTIuMDYgOSAxMS41QzkgMTAuNjcgOS42NyAxMCAxMC41IDEwQzEwLjk2IDEwIDExLjM2IDEwLjIxIDExLjY0IDEwLjUzQzEyLjU5IDkuNzcgMTMuNzQgOS4yNiAxNSA5LjA4VjlIMTMuNUMxMi42NyA5IDEyIDguMzMgMTIgNy41VjdIMTEuNUMxMC42NyA3IDEwIDYuMzMgMTAgNS41VjQuMDdDNi45MSA0LjUgNC40NyA3IDQuMDcgMTAuMDhDNC4yNSA5LjQ2IDQuODIgOSA1LjUgOUM2LjMzIDkgNyA5LjY3IDcgMTAuNVM2LjMzIDEyIDUuNSAxMkM0LjcxIDEyIDQuMDcgMTEuMzkgNCAxMC42MkM0IDExLjExIDQgMTEuNjEgNC4wOSAxMi4xMkM0LjUgMTQuODEgNi41NCAxNy4wNCA5LjE2IDE3Ljc0TTIxIDE2QzIxIDEzLjI0IDE4Ljc2IDExIDE2IDExUzExIDEzLjI0IDExIDE2IDEzLjI0IDIxIDE2IDIxIDIxIDE4Ljc2IDIxIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZUNvZyA9IFwiTTIxIDEyLjI5QzIxIDEyLjE5IDIxIDEyLjEgMjEgMTJDMjEgMTEuNSAyMC45NiAxMSAyMC44NyAxMC41QzIwLjYgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTIuMSAyMSAxMi4xOSAyMSAxMi4yOSAyMUMxMi4xMSAyMC4zNiAxMiAxOS42OSAxMiAxOUMxMiAxOC44NiAxMiAxOC43MyAxMiAxOC41OUMxMS43NSAxOC44NCAxMS40IDE5IDExIDE5QzEwLjE3IDE5IDkuNSAxOC4zMyA5LjUgMTcuNVMxMC4xNyAxNiAxMSAxNkMxMS41OSAxNiAxMi4xIDE2LjM1IDEyLjM0IDE2Ljg0QzEzLjI1IDE0LjAzIDE1Ljg5IDEyIDE5IDEyQzE5LjY5IDEyIDIwLjM2IDEyLjExIDIxIDEyLjI5TTYuNSAxM0M1LjY3IDEzIDUgMTIuMzMgNSAxMS41UzUuNjcgMTAgNi41IDEwIDggMTAuNjcgOCAxMS41IDcuMzMgMTMgNi41IDEzTTkuNSA5QzguNjcgOSA4IDguMzMgOCA3LjVTOC42NyA2IDkuNSA2IDExIDYuNjcgMTEgNy41IDEwLjMzIDkgOS41IDlNMTEuNSAxNEMxMC42NyAxNCAxMCAxMy4zMyAxMCAxMi41UzEwLjY3IDExIDExLjUgMTEgMTMgMTEuNjcgMTMgMTIuNSAxMi4zMyAxNCAxMS41IDE0TTIyLjcgMTkuNlYxOC42TDIzLjggMTcuOEMyMy45IDE3LjcgMjQgMTcuNiAyMy45IDE3LjVMMjIuOSAxNS44QzIyLjkgMTUuNyAyMi43IDE1LjcgMjIuNiAxNS43TDIxLjQgMTYuMkMyMS4xIDE2IDIwLjggMTUuOCAyMC41IDE1LjdMMjAuMyAxNC40QzIwLjMgMTQuMyAyMC4yIDE0LjIgMjAuMSAxNC4ySDE4LjFDMTcuOSAxNC4yIDE3LjggMTQuMyAxNy44IDE0LjRMMTcuNiAxNS43QzE3LjMgMTUuOSAxNy4xIDE2IDE2LjggMTYuMkwxNS42IDE1LjdDMTUuNSAxNS43IDE1LjQgMTUuNyAxNS4zIDE1LjhMMTQuMyAxNy41QzE0LjMgMTcuNiAxNC4zIDE3LjcgMTQuNCAxNy44TDE1LjUgMTguNlYxOS42TDE0LjQgMjAuNEMxNC4zIDIwLjUgMTQuMiAyMC42IDE0LjMgMjAuN0wxNS4zIDIyLjRDMTUuNCAyMi41IDE1LjUgMjIuNSAxNS42IDIyLjVMMTYuOCAyMkMxNyAyMi4yIDE3LjMgMjIuNCAxNy42IDIyLjVMMTcuOCAyMy44QzE3LjkgMjMuOSAxOCAyNCAxOC4xIDI0SDIwLjFDMjAuMiAyNCAyMC4zIDIzLjkgMjAuMyAyMy44TDIwLjUgMjIuNUMyMC44IDIyLjMgMjEgMjIuMiAyMS4zIDIyTDIyLjUgMjIuNEMyMi42IDIyLjQgMjIuNyAyMi40IDIyLjggMjIuM0wyMy44IDIwLjZDMjMuOSAyMC41IDIzLjkgMjAuNCAyMy44IDIwLjRMMjIuNyAxOS42TTE5IDIwLjVDMTguMiAyMC41IDE3LjUgMTkuOCAxNy41IDE5UzE4LjIgMTcuNSAxOSAxNy41IDIwLjUgMTguMiAyMC41IDE5IDE5LjggMjAuNSAxOSAyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZUNvZ091dGxpbmUgPSBcIk0xNC41IDEwQzEzLjY3IDEwIDEzIDkuMzMgMTMgOC41VjhIMTIuNUMxMS42NyA4IDExIDcuMzMgMTEgNi41VjUuMDdDNy45MSA1LjUgNS40NyA4IDUuMDcgMTEuMDhDNS4yNSAxMC40NiA1LjgyIDEwIDYuNSAxMEM3LjMzIDEwIDggMTAuNjcgOCAxMS41UzcuMzMgMTMgNi41IDEzQzUuNzEgMTMgNS4wNyAxMi4zOSA1IDExLjYyQzUgMTIuMTEgNSAxMi42MSA1LjA5IDEzLjEyQzUuNSAxNS44MSA3LjU0IDE4LjA0IDEwLjE2IDE4Ljc0QzkuNzYgMTguNDcgOS41IDE4IDkuNSAxNy41QzkuNSAxNi42NyAxMC4xNyAxNiAxMSAxNkMxMS41OSAxNiAxMi4xIDE2LjM1IDEyLjM0IDE2Ljg0QzEyLjE2IDE3LjM5IDEyLjA2IDE3Ljk3IDEyIDE4LjU3QzExLjgzIDE4Ljc2IDExLjYgMTguOSAxMS4zMiAxOC45NkMxMS41NSAxOSAxMS43OCAxOSAxMiAxOVYxOUMxMiAxOS42OSAxMi4xMSAyMC4zNiAxMi4yOSAyMUMxMi4xOSAyMSAxMi4xIDIxIDEyIDIxQzcuMDMgMjEgMyAxNi45NyAzIDEyUzcuMDMgMyAxMiAzQzEyIDMgMTMgMyAxMyA0VjZIMTRDMTQgNiAxNSA2IDE1IDdWOEgxN0MxNyA4IDE4IDggMTggOVYxMEgyMEMyMCAxMCAyMC42IDEwIDIwLjg3IDEwLjVDMjAuOTYgMTEgMjEgMTEuNSAyMSAxMkMyMSAxMi4xIDIxIDEyLjE5IDIxIDEyLjI5QzIwLjM2IDEyLjExIDE5LjY5IDEyIDE5IDEySDE3LjVDMTYuNjcgMTIgMTYgMTEuMzMgMTYgMTAuNVYxMEgxNC41TTExLjUgMTFDMTAuNjcgMTEgMTAgMTEuNjcgMTAgMTIuNVMxMC42NyAxNCAxMS41IDE0IDEzIDEzLjMzIDEzIDEyLjUgMTIuMzMgMTEgMTEuNSAxMU0xMSA3LjVDMTEgNi42NyAxMC4zMyA2IDkuNSA2UzggNi42NyA4IDcuNSA4LjY3IDkgOS41IDkgMTEgOC4zMyAxMSA3LjVNMjMuOCAyMC40QzIzLjkgMjAuNCAyMy45IDIwLjUgMjMuOCAyMC42TDIyLjggMjIuM0MyMi43IDIyLjQgMjIuNiAyMi40IDIyLjUgMjIuNEwyMS4zIDIyQzIxIDIyLjIgMjAuOCAyMi4zIDIwLjUgMjIuNUwyMC4zIDIzLjhDMjAuMyAyMy45IDIwLjIgMjQgMjAuMSAyNEgxOC4xQzE4IDI0IDE3LjkgMjMuOSAxNy44IDIzLjhMMTcuNiAyMi41QzE3LjMgMjIuNCAxNyAyMi4yIDE2LjggMjJMMTUuNiAyMi41QzE1LjUgMjIuNSAxNS40IDIyLjUgMTUuMyAyMi40TDE0LjMgMjAuN0MxNC4yIDIwLjYgMTQuMyAyMC41IDE0LjQgMjAuNEwxNS41IDE5LjZWMTguNkwxNC40IDE3LjhDMTQuMyAxNy43IDE0LjMgMTcuNiAxNC4zIDE3LjVMMTUuMyAxNS44QzE1LjQgMTUuNyAxNS41IDE1LjcgMTUuNiAxNS43TDE2LjggMTYuMkMxNy4xIDE2IDE3LjMgMTUuOSAxNy42IDE1LjdMMTcuOCAxNC40QzE3LjggMTQuMyAxNy45IDE0LjIgMTguMSAxNC4ySDIwLjFDMjAuMiAxNC4yIDIwLjMgMTQuMyAyMC4zIDE0LjRMMjAuNSAxNS43QzIwLjggMTUuOCAyMS4xIDE2IDIxLjQgMTYuMkwyMi42IDE1LjdDMjIuNyAxNS43IDIyLjkgMTUuNyAyMi45IDE1LjhMMjMuOSAxNy41QzI0IDE3LjYgMjMuOSAxNy43IDIzLjggMTcuOEwyMi43IDE4LjZWMTkuNkwyMy44IDIwLjRNMjAuNSAxOUMyMC41IDE4LjIgMTkuOCAxNy41IDE5IDE3LjVTMTcuNSAxOC4yIDE3LjUgMTkgMTguMiAyMC41IDE5IDIwLjUgMjAuNSAxOS44IDIwLjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llRWRpdCA9IFwiTTE1LjEgMTUuMDNDMTUuMDQgMTQuODYgMTUgMTQuNjkgMTUgMTQuNUMxNSAxMy42NyAxNS42NyAxMyAxNi41IDEzQzE2LjY5IDEzIDE2Ljg2IDEzLjA0IDE3LjAzIDEzLjFMMTkuMzkgMTAuNzRDMTkuNjkgMTAuNDQgMjAuMDUgMTAuMjQgMjAuNDQgMTAuMTJDMjAuMjEgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyQzMgMTYuNjMgNi41IDIwLjQ0IDExIDIwLjk0VjE5LjEzTDExLjE0IDE5QzExLjEgMTkgMTEuMDUgMTkgMTEgMTlDMTAuMTcgMTkgOS41IDE4LjMzIDkuNSAxNy41UzEwLjE3IDE2IDExIDE2IDEyLjUgMTYuNjcgMTIuNSAxNy41QzEyLjUgMTcuNTUgMTIuNSAxNy42IDEyLjUgMTcuNjRMMTUuMSAxNS4wM002LjUgMTNDNS42NyAxMyA1IDEyLjMzIDUgMTEuNVM1LjY3IDEwIDYuNSAxMCA4IDEwLjY3IDggMTEuNSA3LjMzIDEzIDYuNSAxM005LjUgOUM4LjY3IDkgOCA4LjMzIDggNy41UzguNjcgNiA5LjUgNiAxMSA2LjY3IDExIDcuNSAxMC4zMyA5IDkuNSA5TTExLjUgMTRDMTAuNjcgMTQgMTAgMTMuMzMgMTAgMTIuNVMxMC42NyAxMSAxMS41IDExIDEzIDExLjY3IDEzIDEyLjUgMTIuMzMgMTQgMTEuNSAxNE0yMi44NSAxNC4xOUwyMS44NyAxNS4xN0wxOS44MyAxMy4xM0wyMC44MSAxMi4xNUMyMSAxMS45NSAyMS4zMyAxMS45NSAyMS41MyAxMi4xNUwyMi44NSAxMy40N0MyMy4wNSAxMy42NyAyMy4wNSAxNCAyMi44NSAxNC4xOU0xOS4xMyAxMy44M0wyMS4xNyAxNS44N0wxNS4wNCAyMkgxM1YxOS45NkwxOS4xMyAxMy44M1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVFZGl0T3V0bGluZSA9IFwiTTkuNSA2QzEwLjMzIDYgMTEgNi42NyAxMSA3LjVTMTAuMzMgOSA5LjUgOSA4IDguMzMgOCA3LjUgOC42NyA2IDkuNSA2TTExLjUgMTFDMTAuNjcgMTEgMTAgMTEuNjcgMTAgMTIuNVMxMC42NyAxNCAxMS41IDE0IDEzIDEzLjMzIDEzIDEyLjUgMTIuMzMgMTEgMTEuNSAxMU0xMSAxNkMxMC4xNyAxNiA5LjUgMTYuNjcgOS41IDE3LjVDOS41IDE4IDkuNzYgMTguNDcgMTAuMTYgMTguNzRDNy41NCAxOC4wNCA1LjUgMTUuODEgNS4wOSAxMy4xMkM1IDEyLjYxIDUgMTIuMTEgNSAxMS42MkM1LjA3IDEyLjM5IDUuNzEgMTMgNi41IDEzQzcuMzMgMTMgOCAxMi4zMyA4IDExLjVTNy4zMyAxMCA2LjUgMTBDNS44MiAxMCA1LjI1IDEwLjQ2IDUuMDcgMTEuMDhDNS40NyA4IDcuOTEgNS41IDExIDUuMDdWNi41QzExIDcuMzMgMTEuNjcgOCAxMi41IDhIMTNWOC41QzEzIDkuMzMgMTMuNjcgMTAgMTQuNSAxMEgxNlYxMC41QzE2IDExLjMzIDE2LjY3IDEyIDE3LjUgMTJIMTguMTNMMTkuMzkgMTAuNzRDMTkuNjkgMTAuNDQgMjAuMDUgMTAuMjQgMjAuNDQgMTAuMTJDMjAuMjEgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyQzMgMTYuNjMgNi41IDIwLjQ0IDExIDIwLjk0VjE5LjEzTDEyLjQ3IDE3LjY2QzEyLjUgMTcuNiAxMi41IDE3LjU1IDEyLjUgMTcuNUMxMi41IDE2LjY3IDExLjgzIDE2IDExIDE2TTE1IDE0LjVDMTUgMTQuNjkgMTUuMDQgMTQuODYgMTUuMSAxNS4wM0wxNy4wMyAxMy4xQzE2Ljg2IDEzLjA0IDE2LjY5IDEzIDE2LjUgMTNDMTUuNjcgMTMgMTUgMTMuNjcgMTUgMTQuNU0yMi44NSAxMy40N0wyMS41MyAxMi4xNUMyMS4zMyAxMS45NSAyMSAxMS45NSAyMC44MSAxMi4xNUwxOS44MyAxMy4xM0wyMS44NyAxNS4xN0wyMi44NSAxNC4xOUMyMy4wNSAxNCAyMy4wNSAxMy42NyAyMi44NSAxMy40N00xMyAxOS45NlYyMkgxNS4wNEwyMS4xNyAxNS44OEwxOS4xMyAxMy44M0wxMyAxOS45NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVMb2NrID0gXCJNMTguNSAxMUMxOS40MiAxMSAyMC4yNyAxMS4yOSAyMSAxMS43N0MyMSAxMS4zNSAyMC45NSAxMC45MiAyMC44NyAxMC41QzIwLjYgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTIuMzQgMjEgMTIuNjcgMjEgMTMgMjAuOTRWMTdDMTMgMTYuMDggMTMuNDIgMTUuMjYgMTQuMDcgMTQuNzFDMTQuNDUgMTIuNiAxNi4yOSAxMSAxOC41IDExTTYuNSAxM0M1LjY3IDEzIDUgMTIuMzMgNSAxMS41UzUuNjcgMTAgNi41IDEwIDggMTAuNjcgOCAxMS41IDcuMzMgMTMgNi41IDEzTTggNy41QzggNi42NyA4LjY3IDYgOS41IDZTMTEgNi42NyAxMSA3LjUgMTAuMzMgOSA5LjUgOSA4IDguMzMgOCA3LjVNMTEgMTlDMTAuMTcgMTkgOS41IDE4LjMzIDkuNSAxNy41UzEwLjE3IDE2IDExIDE2IDEyLjUgMTYuNjcgMTIuNSAxNy41IDExLjgzIDE5IDExIDE5TTExLjUgMTRDMTAuNjcgMTQgMTAgMTMuMzMgMTAgMTIuNVMxMC42NyAxMSAxMS41IDExIDEzIDExLjY3IDEzIDEyLjUgMTIuMzMgMTQgMTEuNSAxNE0yMSAxNlYxNS41QzIxIDE0LjEyIDE5Ljg4IDEzIDE4LjUgMTNTMTYgMTQuMTIgMTYgMTUuNVYxNkMxNS40NSAxNiAxNSAxNi40NSAxNSAxN1YyMUMxNSAyMS41NSAxNS40NSAyMiAxNiAyMkgyMUMyMS41NSAyMiAyMiAyMS41NSAyMiAyMVYxN0MyMiAxNi40NSAyMS41NSAxNiAyMSAxNk0yMCAxNkgxN1YxNS41QzE3IDE0LjY3IDE3LjY3IDE0IDE4LjUgMTRTMjAgMTQuNjcgMjAgMTUuNVYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVMb2NrT3V0bGluZSA9IFwiTTEwIDEyLjVDMTAgMTEuNjcgMTAuNjcgMTEgMTEuNSAxMVMxMyAxMS42NyAxMyAxMi41IDEyLjMzIDE0IDExLjUgMTQgMTAgMTMuMzMgMTAgMTIuNU0xNiAxMFYxMC41QzE2IDEwLjkgMTYuMTYgMTEuMjYgMTYuNDEgMTEuNTNDMTcuMDQgMTEuMiAxNy43NSAxMSAxOC41IDExQzE5LjQyIDExIDIwLjI3IDExLjI5IDIxIDExLjc3QzIxIDExLjM1IDIwLjk1IDEwLjkyIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi4zNCAyMSAxMi42NyAyMSAxMyAyMC45NFYxOC45MkMxMi40NiAxOSAxMS45IDE5IDExLjMyIDE4Ljk2QzEyIDE4LjgyIDEyLjUgMTguMjIgMTIuNSAxNy41QzEyLjUgMTYuNjcgMTEuODMgMTYgMTEgMTZTOS41IDE2LjY3IDkuNSAxNy41QzkuNSAxOCA5Ljc2IDE4LjQ3IDEwLjE2IDE4Ljc0QzcuNTQgMTguMDQgNS41IDE1LjgxIDUuMDkgMTMuMTJDNSAxMi42MSA1IDEyLjExIDUgMTEuNjJDNS4wNyAxMi4zOSA1LjcxIDEzIDYuNSAxM0M3LjMzIDEzIDggMTIuMzMgOCAxMS41UzcuMzMgMTAgNi41IDEwQzUuODIgMTAgNS4yNSAxMC40NiA1LjA3IDExLjA4QzUuNDcgOCA3LjkxIDUuNSAxMSA1LjA3VjYuNUMxMSA3LjMzIDExLjY3IDggMTIuNSA4SDEzVjguNUMxMyA5LjMzIDEzLjY3IDEwIDE0LjUgMTBIMTZNMTEgNy41QzExIDYuNjcgMTAuMzMgNiA5LjUgNlM4IDYuNjcgOCA3LjUgOC42NyA5IDkuNSA5IDExIDguMzMgMTEgNy41TTIyIDE3VjIxQzIyIDIxLjU1IDIxLjU1IDIyIDIxIDIySDE2QzE1LjQ1IDIyIDE1IDIxLjU1IDE1IDIxVjE3QzE1IDE2LjQ1IDE1LjQ1IDE2IDE2IDE2VjE1LjVDMTYgMTQuMTIgMTcuMTIgMTMgMTguNSAxM1MyMSAxNC4xMiAyMSAxNS41VjE2QzIxLjU1IDE2IDIyIDE2LjQ1IDIyIDE3TTIwIDE1LjVDMjAgMTQuNjcgMTkuMzMgMTQgMTguNSAxNFMxNyAxNC42NyAxNyAxNS41VjE2SDIwVjE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llTWludXMgPSBcIk0xNSAxNC41M0MxNSAxNC41IDE1IDE0LjUgMTUgMTQuNUMxNSAxMy42NyAxNS42NyAxMyAxNi41IDEzQzE2LjggMTMgMTcuMDggMTMuMDkgMTcuMzIgMTMuMjRDMTcuODUgMTMuMDkgMTguNDIgMTMgMTkgMTNDMTkuNjYgMTMgMjAuMyAxMy4xMiAyMC44OSAxMy4zMkMyMC45NiAxMi44OSAyMSAxMi40NSAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi40NSAyMSAxMi44OSAyMC45NiAxMy4zMiAyMC44OUMxMy4xMiAyMC4zIDEzIDE5LjY2IDEzIDE5QzEzIDE3LjIyIDEzLjc4IDE1LjYzIDE1IDE0LjUzTTYuNSAxM0M1LjY3IDEzIDUgMTIuMzMgNSAxMS41UzUuNjcgMTAgNi41IDEwIDggMTAuNjcgOCAxMS41IDcuMzMgMTMgNi41IDEzTTggNy41QzggNi42NyA4LjY3IDYgOS41IDZTMTEgNi42NyAxMSA3LjUgMTAuMzMgOSA5LjUgOSA4IDguMzMgOCA3LjVNMTEgMTlDMTAuMTcgMTkgOS41IDE4LjMzIDkuNSAxNy41UzEwLjE3IDE2IDExIDE2IDEyLjUgMTYuNjcgMTIuNSAxNy41IDExLjgzIDE5IDExIDE5TTExLjUgMTRDMTAuNjcgMTQgMTAgMTMuMzMgMTAgMTIuNVMxMC42NyAxMSAxMS41IDExIDEzIDExLjY3IDEzIDEyLjUgMTIuMzMgMTQgMTEuNSAxNE0yMyAxOFYyMEgxNVYxOEgyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVNaW51c091dGxpbmUgPSBcIk0xNSAxMEgxNC41QzEzLjY3IDEwIDEzIDkuMzMgMTMgOC41VjhIMTIuNUMxMS42NyA4IDExIDcuMzMgMTEgNi41VjUuMDdDNy45MSA1LjUgNS40NyA4IDUuMDcgMTEuMDhDNS4yNSAxMC40NiA1LjgyIDEwIDYuNSAxMEM3LjMzIDEwIDggMTAuNjcgOCAxMS41UzcuMzMgMTMgNi41IDEzQzUuNzEgMTMgNS4wNyAxMi4zOSA1IDExLjYyQzUgMTIuMTEgNSAxMi42MSA1LjA5IDEzLjEyQzUuNSAxNS44MSA3LjU0IDE4LjA0IDEwLjE2IDE4Ljc0QzkuNzYgMTguNDcgOS41IDE4IDkuNSAxNy41QzkuNSAxNi42NyAxMC4xNyAxNiAxMSAxNlMxMi41IDE2LjY3IDEyLjUgMTcuNUMxMi41IDE4LjIyIDEyIDE4LjgyIDExLjMyIDE4Ljk2QzExLjkgMTkgMTIuNDYgMTkgMTMgMTguOTJDMTMgMTguOTUgMTMgMTguOTcgMTMgMTlDMTMgMTkuNjYgMTMuMTIgMjAuMyAxMy4zMiAyMC44OUMxMi44OSAyMC45NiAxMi40NSAyMSAxMiAyMUM3LjAzIDIxIDMgMTYuOTcgMyAxMlM3LjAzIDMgMTIgM0MxMiAzIDEzIDMgMTMgNFY2SDE0QzE0IDYgMTUgNiAxNSA3VjhIMTdDMTcgOCAxOCA4IDE4IDlWMTBIMjBDMjAgMTAgMjAuNiAxMCAyMC44NyAxMC41QzIwLjk2IDExIDIxIDExLjUgMjEgMTJDMjEgMTIuNDUgMjAuOTYgMTIuODkgMjAuODkgMTMuMzJDMjAuMyAxMy4xMiAxOS42NiAxMyAxOSAxM0MxOC45NyAxMyAxOC45NSAxMyAxOC45MiAxM0MxOC45NyAxMi42OCAxOSAxMi4zNCAxOSAxMkgxNy41QzE2LjY3IDEyIDE2IDExLjMzIDE2IDEwLjVWMTBIMTVNMTUgMTQuNUMxNSAxNC41IDE1IDE0LjUgMTUgMTQuNTNDMTUuNjYgMTMuOTUgMTYuNDUgMTMuNSAxNy4zMiAxMy4yNEMxNy4wOCAxMy4wOSAxNi44IDEzIDE2LjUgMTNDMTUuNjcgMTMgMTUgMTMuNjcgMTUgMTQuNU0xMSA3LjVDMTEgNi42NyAxMC4zMyA2IDkuNSA2UzggNi42NyA4IDcuNSA4LjY3IDkgOS41IDkgMTEgOC4zMyAxMSA3LjVNMTEuNSAxNEMxMi4zMyAxNCAxMyAxMy4zMyAxMyAxMi41UzEyLjMzIDExIDExLjUgMTEgMTAgMTEuNjcgMTAgMTIuNSAxMC42NyAxNCAxMS41IDE0TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZU9mZiA9IFwiTTkuMjUgNi4wNUw3LjQ1IDQuMjVDOC43OSAzLjQ2IDEwLjM0IDMgMTIgM0MxMiAzIDEzIDMgMTMgNFY2SDE0QzE0IDYgMTUgNiAxNSA3VjhIMTdDMTcgOCAxOCA4IDE4IDlWMTBIMjBDMjAgMTAgMjAuNiAxMCAyMC44NyAxMC41QzIwLjk2IDExIDIxIDExLjUgMjEgMTJDMjEgMTMuNjYgMjAuNTQgMTUuMjIgMTkuNzUgMTYuNTVMMTcuOTUgMTQuNzVDMTcuOTcgMTQuNjcgMTggMTQuNTkgMTggMTQuNUMxOCAxMy42NyAxNy4zMyAxMyAxNi41IDEzQzE2LjQxIDEzIDE2LjMzIDEzLjAzIDE2LjI1IDEzLjA1TDEwLjk1IDcuNzVDMTAuOTcgNy42NyAxMSA3LjU5IDExIDcuNUMxMSA2LjY3IDEwLjMzIDYgOS41IDZDOS40MSA2IDkuMzMgNi4wMyA5LjI1IDYuMDVNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTcuMzQgMTkuMjNDMTUuODUgMjAuMzQgMTQgMjEgMTIgMjFDNy4wMyAyMSAzIDE2Ljk3IDMgMTJDMyAxMCAzLjY2IDguMTUgNC43NyA2LjY2TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZNOCAxMS41QzggMTAuNjcgNy4zMyAxMCA2LjUgMTBTNSAxMC42NyA1IDExLjUgNS42NyAxMyA2LjUgMTMgOCAxMi4zMyA4IDExLjVNMTAgMTIuNUMxMCAxMy4zMyAxMC42NyAxNCAxMS41IDE0QzExLjY4IDE0IDExLjg1IDEzLjk2IDEyIDEzLjlMMTAuMSAxMkMxMC4wNCAxMi4xNSAxMCAxMi4zMiAxMCAxMi41TTEyLjUgMTcuNUMxMi41IDE2LjY3IDExLjgzIDE2IDExIDE2UzkuNSAxNi42NyA5LjUgMTcuNSAxMC4xNyAxOSAxMSAxOSAxMi41IDE4LjMzIDEyLjUgMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVPZmZPdXRsaW5lID0gXCJNOC45MyA1LjczTDcuNDUgNC4yNUM4Ljc5IDMuNDYgMTAuMzQgMyAxMiAzQzEyIDMgMTMgMyAxMyA0VjZIMTRDMTQgNiAxNSA2IDE1IDdWOEgxN0MxNyA4IDE4IDggMTggOVYxMEgyMEMyMCAxMCAyMC42IDEwIDIwLjg3IDEwLjVDMjAuOTYgMTEgMjEgMTEuNSAyMSAxMkMyMSAxMy42NiAyMC41NCAxNS4yMiAxOS43NSAxNi41NUwxOC4yOCAxNS4wOEMxOC43NCAxNC4xNSAxOSAxMy4xMSAxOSAxMkgxNy41QzE2LjY3IDEyIDE2IDExLjMzIDE2IDEwLjVWMTBIMTQuNUMxMy42NyAxMCAxMyA5LjMzIDEzIDguNVY4SDEyLjVDMTEuNjcgOCAxMSA3LjMzIDExIDYuNVY1LjA3QzEwLjI2IDUuMTggOS41NyA1LjQxIDguOTMgNS43M005LjI1IDYuMDVMMTAuOTUgNy43NUMxMC45NyA3LjY3IDExIDcuNTkgMTEgNy41QzExIDYuNjcgMTAuMzMgNiA5LjUgNkM5LjQxIDYgOS4zMyA2LjAzIDkuMjUgNi4wNU0xNi4yNSAxMy4wNUwxNy45NSAxNC43NUMxNy45NyAxNC42NyAxOCAxNC41OSAxOCAxNC41QzE4IDEzLjY3IDE3LjMzIDEzIDE2LjUgMTNDMTYuNDEgMTMgMTYuMzMgMTMuMDMgMTYuMjUgMTMuMDVNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTcuMzQgMTkuMjNDMTUuODUgMjAuMzQgMTQgMjEgMTIgMjFDNy4wMyAyMSAzIDE2Ljk3IDMgMTJDMyAxMCAzLjY2IDguMTUgNC43NyA2LjY2TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZNMTUuOSAxNy43OUwxMiAxMy45QzExLjg1IDEzLjk2IDExLjY4IDE0IDExLjUgMTRDMTAuNjcgMTQgMTAgMTMuMzMgMTAgMTIuNUMxMCAxMi4zMiAxMC4wNCAxMi4xNSAxMC4xIDEyTDYuMjEgOC4xQzUuNjIgOSA1LjIxIDEwIDUuMDcgMTEuMDhDNS4yNSAxMC40NiA1LjgyIDEwIDYuNSAxMEM3LjMzIDEwIDggMTAuNjcgOCAxMS41UzcuMzMgMTMgNi41IDEzQzUuNzEgMTMgNS4wNyAxMi4zOSA1IDExLjYyQzUgMTIuMTEgNSAxMi42MSA1LjA5IDEzLjEyQzUuNSAxNS44MSA3LjU0IDE4LjA0IDEwLjE2IDE4Ljc0QzkuNzYgMTguNDcgOS41IDE4IDkuNSAxNy41QzkuNSAxNi42NyAxMC4xNyAxNiAxMSAxNlMxMi41IDE2LjY3IDEyLjUgMTcuNUMxMi41IDE4LjIyIDEyIDE4LjgyIDExLjMyIDE4Ljk2QzEzLjAzIDE5LjEyIDE0LjYxIDE4LjY2IDE1LjkgMTcuNzlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llT3V0bGluZSA9IFwiTTIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJDMyAxNi45NyA3LjAzIDIxIDEyIDIxQzE2Ljk3IDIxIDIxIDE2Ljk3IDIxIDEyQzIxIDExLjUgMjAuOTYgMTEgMjAuODcgMTAuNU0xMS4zMiAxOC45NkMxMiAxOC44MiAxMi41IDE4LjIyIDEyLjUgMTcuNUMxMi41IDE2LjY3IDExLjgzIDE2IDExIDE2UzkuNSAxNi42NyA5LjUgMTcuNUM5LjUgMTggOS43NiAxOC40NyAxMC4xNiAxOC43NEM3LjU0IDE4LjA0IDUuNSAxNS44MSA1LjA5IDEzLjEyQzUgMTIuNjEgNSAxMi4xMSA1IDExLjYyQzUuMDcgMTIuMzkgNS43MSAxMyA2LjUgMTNDNy4zMyAxMyA4IDEyLjMzIDggMTEuNVM3LjMzIDEwIDYuNSAxMEM1LjgyIDEwIDUuMjUgMTAuNDYgNS4wNyAxMS4wOEM1LjQ3IDggNy45MSA1LjUgMTEgNS4wN1Y2LjVDMTEgNy4zMyAxMS42NyA4IDEyLjUgOEgxM1Y4LjVDMTMgOS4zMyAxMy42NyAxMCAxNC41IDEwSDE2VjEwLjVDMTYgMTEuMzMgMTYuNjcgMTIgMTcuNSAxMkgxOUMxOSAxNi4wOCAxNS41IDE5LjM2IDExLjMyIDE4Ljk2TTkuNSA5QzguNjcgOSA4IDguMzMgOCA3LjVTOC42NyA2IDkuNSA2IDExIDYuNjcgMTEgNy41IDEwLjMzIDkgOS41IDlNMTMgMTIuNUMxMyAxMy4zMyAxMi4zMyAxNCAxMS41IDE0UzEwIDEzLjMzIDEwIDEyLjUgMTAuNjcgMTEgMTEuNSAxMSAxMyAxMS42NyAxMyAxMi41TTE4IDE0LjVDMTggMTUuMzMgMTcuMzMgMTYgMTYuNSAxNlMxNSAxNS4zMyAxNSAxNC41IDE1LjY3IDEzIDE2LjUgMTMgMTggMTMuNjcgMTggMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVQbHVzID0gXCJNMTUgMTQuNTNDMTUgMTQuNSAxNSAxNC41IDE1IDE0LjVDMTUgMTMuNjcgMTUuNjcgMTMgMTYuNSAxM0MxNi44IDEzIDE3LjA4IDEzLjA5IDE3LjMyIDEzLjI0QzE3Ljg1IDEzLjA5IDE4LjQyIDEzIDE5IDEzQzE5LjY2IDEzIDIwLjMgMTMuMTIgMjAuODkgMTMuMzJDMjAuOTYgMTIuODkgMjEgMTIuNDUgMjEgMTJDMjEgMTEuNSAyMC45NiAxMSAyMC44NyAxMC41QzIwLjYgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTIuNDUgMjEgMTIuODkgMjAuOTYgMTMuMzIgMjAuODlDMTMuMTIgMjAuMyAxMyAxOS42NiAxMyAxOUMxMyAxNy4yMiAxMy43OCAxNS42MyAxNSAxNC41M002LjUgMTNDNS42NyAxMyA1IDEyLjMzIDUgMTEuNVM1LjY3IDEwIDYuNSAxMCA4IDEwLjY3IDggMTEuNSA3LjMzIDEzIDYuNSAxM004IDcuNUM4IDYuNjcgOC42NyA2IDkuNSA2UzExIDYuNjcgMTEgNy41IDEwLjMzIDkgOS41IDkgOCA4LjMzIDggNy41TTExIDE5QzEwLjE3IDE5IDkuNSAxOC4zMyA5LjUgMTcuNVMxMC4xNyAxNiAxMSAxNiAxMi41IDE2LjY3IDEyLjUgMTcuNSAxMS44MyAxOSAxMSAxOU0xMS41IDE0QzEwLjY3IDE0IDEwIDEzLjMzIDEwIDEyLjVTMTAuNjcgMTEgMTEuNSAxMSAxMyAxMS42NyAxMyAxMi41IDEyLjMzIDE0IDExLjUgMTRNMjMgMThWMjBIMjBWMjNIMThWMjBIMTVWMThIMThWMTVIMjBWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llUGx1c091dGxpbmUgPSBcIk0xNi41IDEzQzE2LjggMTMgMTcuMDggMTMuMDkgMTcuMzIgMTMuMjRDMTYuNDUgMTMuNSAxNS42NiAxMy45NSAxNSAxNC41M0MxNSAxNC41IDE1IDE0LjUgMTUgMTQuNUMxNSAxMy42NyAxNS42NyAxMyAxNi41IDEzTTE2IDEwVjEwLjVDMTYgMTEuMzMgMTYuNjcgMTIgMTcuNSAxMkgxOUMxOSAxMi4zNCAxOC45NyAxMi42OCAxOC45MiAxM0MxOC45NSAxMyAxOC45NyAxMyAxOSAxM0MxOS42NiAxMyAyMC4zIDEzLjEyIDIwLjg5IDEzLjMyQzIwLjk2IDEyLjg5IDIxIDEyLjQ1IDIxIDEyQzIxIDExLjUgMjAuOTYgMTEgMjAuODcgMTAuNUMyMC42IDEwIDIwIDEwIDIwIDEwSDE4VjlDMTggOCAxNyA4IDE3IDhIMTVWN0MxNSA2IDE0IDYgMTQgNkgxM1Y0QzEzIDMgMTIgMyAxMiAzQzcuMDMgMyAzIDcuMDMgMyAxMlM3LjAzIDIxIDEyIDIxQzEyLjQ1IDIxIDEyLjg5IDIwLjk2IDEzLjMyIDIwLjg5QzEzLjEyIDIwLjMgMTMgMTkuNjYgMTMgMTlDMTMgMTguOTcgMTMgMTguOTUgMTMgMTguOTJDMTIuNDYgMTkgMTEuOSAxOSAxMS4zMiAxOC45NkMxMiAxOC44MiAxMi41IDE4LjIyIDEyLjUgMTcuNUMxMi41IDE2LjY3IDExLjgzIDE2IDExIDE2UzkuNSAxNi42NyA5LjUgMTcuNUM5LjUgMTggOS43NiAxOC40NyAxMC4xNiAxOC43NEM3LjU0IDE4LjA0IDUuNSAxNS44MSA1LjA5IDEzLjEyQzUgMTIuNjEgNSAxMi4xMSA1IDExLjYyQzUuMDcgMTIuMzkgNS43MSAxMyA2LjUgMTNDNy4zMyAxMyA4IDEyLjMzIDggMTEuNVM3LjMzIDEwIDYuNSAxMEM1LjgyIDEwIDUuMjUgMTAuNDYgNS4wNyAxMS4wOEM1LjQ3IDggNy45MSA1LjUgMTEgNS4wN1Y2LjVDMTEgNy4zMyAxMS42NyA4IDEyLjUgOEgxM1Y4LjVDMTMgOS4zMyAxMy42NyAxMCAxNC41IDEwSDE2TTExLjUgMTRDMTIuMzMgMTQgMTMgMTMuMzMgMTMgMTIuNVMxMi4zMyAxMSAxMS41IDExIDEwIDExLjY3IDEwIDEyLjUgMTAuNjcgMTQgMTEuNSAxNE0xMSA3LjVDMTEgNi42NyAxMC4zMyA2IDkuNSA2UzggNi42NyA4IDcuNSA4LjY3IDkgOS41IDkgMTEgOC4zMyAxMSA3LjVNMjAgMThWMTVIMThWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llUmVmcmVzaCA9IFwiTTExIDE2QzExLjUzIDE2IDEyIDE2LjI4IDEyLjI2IDE2LjY5QzEzLjA0IDE0IDE1LjU0IDEyIDE4LjUgMTJDMTkuMzggMTIgMjAuMjEgMTIuMTggMjEgMTIuNUMyMSAxMi4zMyAyMSAxMi4xNyAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi4xNyAyMSAxMi4zMyAyMSAxMi41IDIxQzEyLjE5IDIwLjI0IDEyIDE5LjQ0IDEyIDE4LjYxQzExLjc0IDE4Ljg1IDExLjM5IDE5IDExIDE5QzEwLjE3IDE5IDkuNSAxOC4zMyA5LjUgMTcuNVMxMC4xNyAxNiAxMSAxNk0xMyAxMi41QzEzIDEzLjMzIDEyLjMzIDE0IDExLjUgMTRTMTAgMTMuMzMgMTAgMTIuNSAxMC42NyAxMSAxMS41IDExIDEzIDExLjY3IDEzIDEyLjVNNi41IDEzQzUuNjcgMTMgNSAxMi4zMyA1IDExLjVTNS42NyAxMCA2LjUgMTAgOCAxMC42NyA4IDExLjUgNy4zMyAxMyA2LjUgMTNNOCA3LjVDOCA2LjY3IDguNjcgNiA5LjUgNlMxMSA2LjY3IDExIDcuNSAxMC4zMyA5IDkuNSA5IDggOC4zMyA4IDcuNU0xOCAxOC41TDE5Ljc3IDE2LjczQzE5LjMyIDE2LjI4IDE4LjY5IDE2IDE4IDE2QzE2LjYyIDE2IDE1LjUgMTcuMTIgMTUuNSAxOC41UzE2LjYyIDIxIDE4IDIxQzE4LjgyIDIxIDE5LjU0IDIwLjYxIDIwIDIwSDIxLjcxQzIxLjEyIDIxLjQ3IDE5LjY4IDIyLjUgMTggMjIuNUMxNS43OSAyMi41IDE0IDIwLjcxIDE0IDE4LjVTMTUuNzkgMTQuNSAxOCAxNC41QzE5LjExIDE0LjUgMjAuMTEgMTQuOTUgMjAuODMgMTUuNjdMMjIgMTQuNVYxOC41SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZVJlZnJlc2hPdXRsaW5lID0gXCJNMTMgMTIuNUMxMyAxMy4zMyAxMi4zMyAxNCAxMS41IDE0UzEwIDEzLjMzIDEwIDEyLjUgMTAuNjcgMTEgMTEuNSAxMSAxMyAxMS42NyAxMyAxMi41TTExIDcuNUMxMSA2LjY3IDEwLjMzIDYgOS41IDZTOCA2LjY3IDggNy41IDguNjcgOSA5LjUgOSAxMSA4LjMzIDExIDcuNU0xNSAxMEgxNlYxMC41QzE2IDExLjMzIDE2LjY3IDEyIDE3LjUgMTJIMTlMMTkgMTIuMDNDMTkuNjkgMTIuMDkgMjAuMzYgMTIuMjQgMjEgMTIuNUMyMSAxMi4zMyAyMSAxMi4xNyAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi4xNyAyMSAxMi4zMyAyMSAxMi41IDIxQzEyLjI0IDIwLjM2IDEyLjA5IDE5LjY5IDEyLjAzIDE5QzExLjggMTkgMTEuNTYgMTkgMTEuMzIgMTguOTZDMTEuNTkgMTguOSAxMS44MSAxOC43NiAxMiAxOC41OEMxMiAxOC41NSAxMiAxOC41MyAxMiAxOC41QzEyIDE3Ljg3IDEyLjEgMTcuMjcgMTIuMjYgMTYuNjlDMTIgMTYuMjggMTEuNTMgMTYgMTEgMTZDMTAuMTcgMTYgOS41IDE2LjY3IDkuNSAxNy41QzkuNSAxOCA5Ljc2IDE4LjQ3IDEwLjE2IDE4Ljc0QzcuNTQgMTguMDQgNS41IDE1LjgxIDUuMDkgMTMuMTJDNSAxMi42MSA1IDEyLjExIDUgMTEuNjJDNS4wNyAxMi4zOSA1LjcxIDEzIDYuNSAxM0M3LjMzIDEzIDggMTIuMzMgOCAxMS41UzcuMzMgMTAgNi41IDEwQzUuODIgMTAgNS4yNSAxMC40NiA1LjA3IDExLjA4QzUuNDcgOCA3LjkxIDUuNSAxMSA1LjA3VjYuNUMxMSA3LjMzIDExLjY3IDggMTIuNSA4SDEzVjguNUMxMyA5LjMzIDEzLjY3IDEwIDE0LjUgMTBIMTVNMjIgMTguNVYxNC41TDIwLjgzIDE1LjY3QzIwLjExIDE0Ljk1IDE5LjExIDE0LjUgMTggMTQuNUMxNS43OSAxNC41IDE0IDE2LjI5IDE0IDE4LjVTMTUuNzkgMjIuNSAxOCAyMi41QzE5LjY4IDIyLjUgMjEuMTIgMjEuNDcgMjEuNzEgMjBIMjBDMTkuNTQgMjAuNjEgMTguODIgMjEgMTggMjFDMTYuNjIgMjEgMTUuNSAxOS44OCAxNS41IDE4LjVTMTYuNjIgMTYgMTggMTZDMTguNjkgMTYgMTkuMzIgMTYuMjggMTkuNzcgMTYuNzNMMTggMTguNUgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVSZW1vdmUgPSBcIk0xNi41IDEzQzE2LjggMTMgMTcuMDggMTMuMDkgMTcuMzIgMTMuMjRDMTcuODUgMTMuMDkgMTguNDIgMTMgMTkgMTNDMTkuNjYgMTMgMjAuMyAxMy4xMiAyMC44OSAxMy4zMkMyMC45NiAxMi44OSAyMSAxMi40NSAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi40NSAyMSAxMi44OSAyMC45NiAxMy4zMiAyMC44OUMxMy4xMiAyMC4zIDEzIDE5LjY2IDEzIDE5QzEzIDE3LjIyIDEzLjc4IDE1LjYzIDE1IDE0LjUzQzE1IDE0LjUgMTUgMTQuNSAxNSAxNC41QzE1IDEzLjY3IDE1LjY3IDEzIDE2LjUgMTNNNi41IDEzQzUuNjcgMTMgNSAxMi4zMyA1IDExLjVTNS42NyAxMCA2LjUgMTAgOCAxMC42NyA4IDExLjUgNy4zMyAxMyA2LjUgMTNNOCA3LjVDOCA2LjY3IDguNjcgNiA5LjUgNlMxMSA2LjY3IDExIDcuNSAxMC4zMyA5IDkuNSA5IDggOC4zMyA4IDcuNU0xMSAxOUMxMC4xNyAxOSA5LjUgMTguMzMgOS41IDE3LjVTMTAuMTcgMTYgMTEgMTYgMTIuNSAxNi42NyAxMi41IDE3LjUgMTEuODMgMTkgMTEgMTlNMTEuNSAxNEMxMC42NyAxNCAxMCAxMy4zMyAxMCAxMi41UzEwLjY3IDExIDExLjUgMTEgMTMgMTEuNjcgMTMgMTIuNSAxMi4zMyAxNCAxMS41IDE0TTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZVJlbW92ZU91dGxpbmUgPSBcIk0xNy4zMiAxMy4yNEMxNi40NSAxMy41IDE1LjY2IDEzLjk1IDE1IDE0LjUzQzE1IDE0LjUgMTUgMTQuNSAxNSAxNC41QzE1IDEzLjY3IDE1LjY3IDEzIDE2LjUgMTNDMTYuOCAxMyAxNy4wOCAxMy4wOSAxNy4zMiAxMy4yNE0xNiAxMFYxMC41QzE2IDExLjMzIDE2LjY3IDEyIDE3LjUgMTJIMTlDMTkgMTIuMzQgMTguOTcgMTIuNjggMTguOTIgMTNDMTguOTUgMTMgMTguOTcgMTMgMTkgMTNDMTkuNjYgMTMgMjAuMyAxMy4xMiAyMC44OSAxMy4zMkMyMC45NiAxMi44OSAyMSAxMi40NSAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi40NSAyMSAxMi44OSAyMC45NiAxMy4zMiAyMC44OUMxMy4xMiAyMC4zIDEzIDE5LjY2IDEzIDE5QzEzIDE4Ljk3IDEzIDE4Ljk1IDEzIDE4LjkyQzEyLjQ2IDE5IDExLjkgMTkgMTEuMzIgMTguOTZDMTIgMTguODIgMTIuNSAxOC4yMiAxMi41IDE3LjVDMTIuNSAxNi42NyAxMS44MyAxNiAxMSAxNlM5LjUgMTYuNjcgOS41IDE3LjVDOS41IDE4IDkuNzYgMTguNDcgMTAuMTYgMTguNzRDNy41NCAxOC4wNCA1LjUgMTUuODEgNS4wOSAxMy4xMkM1IDEyLjYxIDUgMTIuMTEgNSAxMS42MkM1LjA3IDEyLjM5IDUuNzEgMTMgNi41IDEzQzcuMzMgMTMgOCAxMi4zMyA4IDExLjVTNy4zMyAxMCA2LjUgMTBDNS44MiAxMCA1LjI1IDEwLjQ2IDUuMDcgMTEuMDhDNS40NyA4IDcuOTEgNS41IDExIDUuMDdWNi41QzExIDcuMzMgMTEuNjcgOCAxMi41IDhIMTNWOC41QzEzIDkuMzMgMTMuNjcgMTAgMTQuNSAxMEgxNk0xMSA3LjVDMTEgNi42NyAxMC4zMyA2IDkuNSA2UzggNi42NyA4IDcuNSA4LjY3IDkgOS41IDkgMTEgOC4zMyAxMSA3LjVNMTEuNSAxNEMxMi4zMyAxNCAxMyAxMy4zMyAxMyAxMi41UzEyLjMzIDExIDExLjUgMTEgMTAgMTEuNjcgMTAgMTIuNSAxMC42NyAxNCAxMS41IDE0TTIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ3TDE5IDE3LjU5TDE2Ljg4IDE1LjQ3TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZVNldHRpbmdzID0gXCJNMjAuODcgOS41QzIwLjYgOSAyMCA5IDIwIDlIMThWOEMxOCA3IDE3IDcgMTcgN0gxNVY2QzE1IDUgMTQgNSAxNCA1SDEzVjNDMTMgMiAxMiAyIDEyIDJDNy4wMyAyIDMgNi4wMyAzIDExUzcuMDMgMjAgMTIgMjAgMjEgMTUuOTcgMjEgMTFDMjEgMTAuNSAyMC45NiAxMCAyMC44NyA5LjVNNi41IDEyQzUuNjcgMTIgNSAxMS4zMyA1IDEwLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJNOCA2LjVDOCA1LjY3IDguNjcgNSA5LjUgNVMxMSA1LjY3IDExIDYuNSAxMC4zMyA4IDkuNSA4IDggNy4zMyA4IDYuNU0xMSAxOEMxMC4xNyAxOCA5LjUgMTcuMzMgOS41IDE2LjVTMTAuMTcgMTUgMTEgMTUgMTIuNSAxNS42NyAxMi41IDE2LjUgMTEuODMgMTggMTEgMThNMTEuNSAxM0MxMC42NyAxMyAxMCAxMi4zMyAxMCAxMS41UzEwLjY3IDEwIDExLjUgMTAgMTMgMTAuNjcgMTMgMTEuNSAxMi4zMyAxMyAxMS41IDEzTTE2LjUgMTVDMTUuNjcgMTUgMTUgMTQuMzMgMTUgMTMuNVMxNS42NyAxMiAxNi41IDEyIDE4IDEyLjY3IDE4IDEzLjUgMTcuMzMgMTUgMTYuNSAxNU03IDIySDlWMjRIN1YyMk0xMSAyMkgxM1YyNEgxMVYyMk0xNSAyMkgxN1YyNEgxNVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVTZXR0aW5nc091dGxpbmUgPSBcIk0xMyAxMS41QzEzIDEyLjMzIDEyLjMzIDEzIDExLjUgMTNTMTAgMTIuMzMgMTAgMTEuNSAxMC42NyAxMCAxMS41IDEwIDEzIDEwLjY3IDEzIDExLjVNMTEgNi41QzExIDUuNjcgMTAuMzMgNSA5LjUgNVM4IDUuNjcgOCA2LjUgOC42NyA4IDkuNSA4IDExIDcuMzMgMTEgNi41TTIxIDExQzIxIDE1Ljk3IDE2Ljk3IDIwIDEyIDIwUzMgMTUuOTcgMyAxMSA3LjAzIDIgMTIgMkMxMiAyIDEzIDIgMTMgM1Y1SDE0QzE0IDUgMTUgNSAxNSA2VjdIMTdDMTcgNyAxOCA3IDE4IDhWOUgyMEMyMCA5IDIwLjYgOSAyMC44NyA5LjVDMjAuOTYgMTAgMjEgMTAuNSAyMSAxMU0xOSAxMUgxNy41QzE2LjY3IDExIDE2IDEwLjMzIDE2IDkuNVY5SDE0LjVDMTMuNjcgOSAxMyA4LjMzIDEzIDcuNVY3SDEyLjVDMTEuNjcgNyAxMSA2LjMzIDExIDUuNVY0LjA3QzcuOTEgNC41IDUuNDcgNyA1LjA3IDEwLjA4QzUuMjUgOS40NiA1LjgyIDkgNi41IDlDNy4zMyA5IDggOS42NyA4IDEwLjVTNy4zMyAxMiA2LjUgMTJDNS43MSAxMiA1LjA3IDExLjM5IDUgMTAuNjJDNSAxMS4xMSA1IDExLjYxIDUuMDkgMTIuMTJDNS41IDE0LjgxIDcuNTQgMTcuMDQgMTAuMTYgMTcuNzRDOS43NiAxNy40NyA5LjUgMTcgOS41IDE2LjVDOS41IDE1LjY3IDEwLjE3IDE1IDExIDE1UzEyLjUgMTUuNjcgMTIuNSAxNi41QzEyLjUgMTcuMjIgMTIgMTcuODIgMTEuMzIgMTcuOTZDMTUuNSAxOC4zNiAxOSAxNS4wOCAxOSAxMU0xNi41IDEyQzE1LjY3IDEyIDE1IDEyLjY3IDE1IDEzLjVTMTUuNjcgMTUgMTYuNSAxNSAxOCAxNC4zMyAxOCAxMy41IDE3LjMzIDEyIDE2LjUgMTJNNyAyNEg5VjIySDdWMjRNMTUgMjRIMTdWMjJIMTVWMjRNMTEgMjRIMTNWMjJIMTFWMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29vbGFudFRlbXBlcmF0dXJlID0gXCJNMTEuNSwxQTEuNSwxLjUgMCAwLDAgMTAsMi41VjE0LjVDOS4zNywxNC45NyA5LDE1LjcxIDksMTYuNUEyLjUsMi41IDAgMCwwIDExLjUsMTlBMi41LDIuNSAwIDAsMCAxNCwxNi41QzE0LDE1LjcxIDEzLjYzLDE1IDEzLDE0LjVWMTNIMTdWMTFIMTNWOUgxN1Y3SDEzVjVIMTdWM0gxM1YyLjVBMS41LDEuNSAwIDAsMCAxMS41LDFNMCwxNVYxN0MwLjY3LDE3IDAuNzksMTcuMjEgMS4yOSwxNy43MUMxLjc5LDE4LjIxIDIuNjcsMTkgNCwxOUM1LjMzLDE5IDYuMjEsMTguMjEgNi43MSwxNy43MUM2LjgyLDE3LjU5IDYuOTEsMTcuNSA3LDE3LjQxVjE1LjE2QzYuMjEsMTUuNDIgNS42NSwxNS45MyA1LjI5LDE2LjI5QzQuNzksMTYuNzkgNC42NywxNyA0LDE3QzMuMzMsMTcgMy4yMSwxNi43OSAyLjcxLDE2LjI5QzIuMjEsMTUuNzkgMS4zMywxNSAwLDE1TTE2LDE1VjE3QzE2LjY3LDE3IDE2Ljc5LDE3LjIxIDE3LjI5LDE3LjcxQzE3Ljc5LDE4LjIxIDE4LjY3LDE5IDIwLDE5QzIxLjMzLDE5IDIyLjIxLDE4LjIxIDIyLjcxLDE3LjcxQzIzLjIxLDE3LjIxIDIzLjMzLDE3IDI0LDE3VjE1QzIyLjY3LDE1IDIxLjc5LDE1Ljc5IDIxLjI5LDE2LjI5QzIwLjc5LDE2Ljc5IDIwLjY3LDE3IDIwLDE3QzE5LjMzLDE3IDE5LjIxLDE2Ljc5IDE4LjcxLDE2LjI5QzE4LjIxLDE1Ljc5IDE3LjMzLDE1IDE2LDE1TTgsMjBDNi42NywyMCA1Ljc5LDIwLjc5IDUuMjksMjEuMjlDNC43OSwyMS43OSA0LjY3LDIyIDQsMjJDMy4zMywyMiAzLjIxLDIxLjc5IDIuNzEsMjEuMjlDMi4zNSwyMC45MyAxLjc5LDIwLjQyIDEsMjAuMTZWMjIuNDFDMS4wOSwyMi41IDEuMTgsMjIuNTkgMS4yOSwyMi43MUMxLjc5LDIzLjIxIDIuNjcsMjQgNCwyNEM1LjMzLDI0IDYuMjEsMjMuMjEgNi43MSwyMi43MUM3LjIxLDIyLjIxIDcuMzMsMjIgOCwyMkM4LjY3LDIyIDguNzksMjIuMjEgOS4yOSwyMi43MUM5LjczLDIzLjE0IDEwLjQ0LDIzLjggMTEuNSwyMy45NkMxMS42NiwyNCAxMS44MywyNCAxMiwyNEMxMy4zMywyNCAxNC4yMSwyMy4yMSAxNC43MSwyMi43MUMxNS4yMSwyMi4yMSAxNS4zMywyMiAxNiwyMkMxNi42NywyMiAxNi43OSwyMi4yMSAxNy4yOSwyMi43MUMxNy43OSwyMy4yMSAxOC42NywyNCAyMCwyNEMyMS4zMywyNCAyMi4yMSwyMy4yMSAyMi43MSwyMi43MUMyMi44MiwyMi41OSAyMi45MSwyMi41IDIzLDIyLjQxVjIwLjE2QzIyLjIxLDIwLjQyIDIxLjY1LDIwLjkzIDIxLjI5LDIxLjI5QzIwLjc5LDIxLjc5IDIwLjY3LDIyIDIwLDIyQzE5LjMzLDIyIDE5LjIxLDIxLjc5IDE4LjcxLDIxLjI5QzE4LjIxLDIwLjc5IDE3LjMzLDIwIDE2LDIwQzE0LjY3LDIwIDEzLjc5LDIwLjc5IDEzLjI5LDIxLjI5QzEyLjc5LDIxLjc5IDEyLjY3LDIyIDEyLDIyQzExLjc4LDIyIDExLjYzLDIxLjk3IDExLjUsMjEuOTJDMTEuMjIsMjEuODIgMTEuMDUsMjEuNjMgMTAuNzEsMjEuMjlDMTAuMjEsMjAuNzkgOS4zMywyMCA4LDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvcHlyaWdodCA9IFwiTTEwLjA4LDEwLjg2QzEwLjEzLDEwLjUzIDEwLjI0LDEwLjI0IDEwLjM4LDEwQzEwLjUsOS43NCAxMC43Miw5LjUzIDEwLjk3LDkuMzdDMTEuMjEsOS4yMiAxMS41LDkuMTUgMTEuODgsOS4xNEMxMi4xMSw5LjE1IDEyLjMyLDkuMTkgMTIuNSw5LjI3QzEyLjcxLDkuMzYgMTIuODksOS41IDEzLjAzLDkuNjNDMTMuMTcsOS43OCAxMy4yOCw5Ljk2IDEzLjM3LDEwLjE2QzEzLjQ2LDEwLjM2IDEzLjUsMTAuNTggMTMuNSwxMC44SDE1LjNDMTUuMjgsMTAuMzMgMTUuMTksOS45IDE1LDkuNUMxNC44NSw5LjEyIDE0LjYyLDguNzggMTQuMzIsOC41QzE0LDguMjIgMTMuNjYsOCAxMy4yNCw3Ljg0QzEyLjgyLDcuNjggMTIuMzYsNy42MSAxMS44NSw3LjYxQzExLjIsNy42MSAxMC42Myw3LjcyIDEwLjE1LDcuOTVDOS42Nyw4LjE4IDkuMjcsOC41IDguOTUsOC44N0M4LjYzLDkuMjYgOC4zOSw5LjcxIDguMjQsMTAuMjNDOC4wOSwxMC43NSA4LDExLjI5IDgsMTEuODdWMTIuMTRDOCwxMi43MiA4LjA4LDEzLjI2IDguMjMsMTMuNzhDOC4zOCwxNC4zIDguNjIsMTQuNzUgOC45NCwxNS4xM0M5LjI2LDE1LjUgOS42NiwxNS44MiAxMC4xNCwxNi4wNEMxMC42MiwxNi4yNiAxMS4xOSwxNi4zOCAxMS44NCwxNi4zOEMxMi4zMSwxNi4zOCAxMi43NSwxNi4zIDEzLjE2LDE2LjE1QzEzLjU3LDE2IDEzLjkzLDE1Ljc5IDE0LjI0LDE1LjVDMTQuNTUsMTUuMjUgMTQuOCwxNC45NCAxNSwxNC41OEMxNS4xNiwxNC4yMiAxNS4yNywxMy44NCAxNS4yOCwxMy40M0gxMy41QzEzLjUsMTMuNjQgMTMuNDMsMTMuODMgMTMuMzQsMTRDMTMuMjUsMTQuMTkgMTMuMTMsMTQuMzQgMTMsMTQuNDdDMTIuODMsMTQuNiAxMi42NiwxNC43IDEyLjQ2LDE0Ljc3QzEyLjI3LDE0Ljg0IDEyLjA3LDE0Ljg2IDExLjg2LDE0Ljg3QzExLjUsMTQuODYgMTEuMiwxNC43OSAxMC45NywxNC42NEMxMC43MiwxNC41IDEwLjUsMTQuMjcgMTAuMzgsMTRDMTAuMjQsMTMuNzcgMTAuMTMsMTMuNDcgMTAuMDgsMTMuMTRDMTAuMDMsMTIuODEgMTAsMTIuNDcgMTAsMTIuMTRWMTEuODdDMTAsMTEuNSAxMC4wMywxMS4xOSAxMC4wOCwxMC44Nk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvcmRvdmEgPSBcIk0yMC4xOCwyMS41NUgxNi45NEwxNy4xNywxOC44MkgxNS41OEwxNS4zNSwyMS41NUg4LjY1TDguNDIsMTguODJINi44M0w3LjA2LDIxLjU1SDMuODJMMiw5LjczTDYuNTUsMi40NUgxNy40NUwyMiw5LjczTDIwLjE4LDIxLjU1TTE2LjU1LDYuMDlIMTMuNjJMMTMuODIsNy40NUgxMC4xOEwxMC4zOCw2LjA5SDcuNDVMNS42NCw5LjczTDYuNTUsMTdIMTcuNDVMMTguMzYsOS43M0wxNi41NSw2LjA5TTE0Ljk1LDE0LjU5QzE0LjcsMTQuNTkgMTQuNSwxMy44MyAxNC41LDEyLjlDMTQuNSwxMS45NiAxNC43LDExLjIgMTQuOTUsMTEuMkMxNS4yMSwxMS4yIDE1LjQxLDExLjk2IDE1LjQxLDEyLjlDMTUuNDEsMTMuODMgMTUuMjEsMTQuNTkgMTQuOTUsMTQuNTlNOS4yMiwxNC43M0M4Ljk2LDE0LjczIDguNzYsMTMuOTcgOC43NiwxMy4wNEM4Ljc2LDEyLjEgOC45NiwxMS4zNSA5LjIyLDExLjM1QzkuNDcsMTEuMzUgOS42NywxMi4xIDkuNjcsMTMuMDRDOS42NywxMy45NyA5LjQ3LDE0LjczIDkuMjIsMTQuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29ybiA9IFwiTTExLDEySDguODJDOS42MiwxMi41IDEwLjM1LDEzLjA3IDExLDEzLjY4VjEyTTcsMTFDNy4yNyw1Ljg4IDkuMzcsMiAxMiwyQzE0LjY2LDIgMTYuNzcsNS45NCAxNywxMS4xMkMxOC41LDEwLjQzIDIwLjE3LDEwIDIyLDEwQzE2LjI1LDEyLjU3IDE4LjI1LDIyIDEyLDIyQzYsMjIgNy45MywxMi41NyAyLDEwQzMuODIsMTAgNS41LDEwLjQgNywxMU0xMSwxMVY5SDguMjRMOC4wMywxMUgxMU0xMSw4VjZIOS4wNUM4LjgsNi42IDguNiw3LjI3IDguNDMsOEgxMU0xMSw1VjMuM0MxMC40NSwzLjYzIDkuOTUsNC4yMiA5LjUsNUgxMU0xMiwzVjVIMTNWNkgxMlY4SDE0VjlIMTJWMTFIMTVWMTJIMTJWMTRIMTRWMTVIMTIuMjNDMTMuNDIsMTYuNDUgMTQuMTUsMTggMTQuMzIsMTkuMjNDMTUuMzEsMTcuNTYgMTUuOTYsMTQuODQgMTYsMTEuNzZDMTUuOTQsNyAxNC4xMywzIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29ybk9mZiA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDcuMiA5LjFDNy4xIDkuNyA3IDEwLjMgNyAxMUM1LjUgMTAuNCAzLjggMTAgMiAxMEM3LjkgMTIuNiA2IDIyIDEyIDIyQzE0LjUgMjIgMTUuNyAyMC41IDE2LjYgMTguNUwyMC45IDIyLjhMMjIuMSAyMS41TTguMSAxMEw5LjEgMTFIOEw4LjEgMTBNOC44IDEySDEwLjFMMTEgMTIuOVYxMy43QzEwLjMgMTMuMSA5LjYgMTIuNSA4LjggMTJNMTQuMyAxOS4yQzE0LjEgMTggMTMuNCAxNi40IDEyLjIgMTVIMTMuMUwxNS4yIDE3LjFDMTUgMTcuOSAxNC43IDE4LjYgMTQuMyAxOS4yTTExIDZWNy44TDEyLjIgOUgxNFY4SDEyVjZIMTNWNUgxMlYzQzE0LjEgMyAxNS45IDcgMTYgMTEuOFYxMi44TDE4IDE0LjhDMTguOCAxMi44IDE5LjkgMTAuOSAyMiAxMEMyMC4yIDEwIDE4LjUgMTAuNCAxNyAxMS4xQzE2LjggNS45IDE0LjcgMiAxMiAyQzEwLjUgMiA5LjIgMy4yIDguMyA1LjFMOS4yIDZIMTFNMTEgMy4zVjVIOS41QzEwIDQuMiAxMC41IDMuNiAxMSAzLjNNMTUgMTEuOEwxNC4yIDExSDE1VjExLjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29zaW5lV2F2ZSA9IFwiTTIyIDJWNEMyMC4yNiA0IDE5IDguNTggMTcuOTYgMTIuMjdDMTYuNTcgMTcuMjcgMTUuMjYgMjIgMTIgMjJDOC43NCAyMiA3LjQzIDE3LjI3IDYuMDQgMTIuMjdDNSA4LjU4IDMuNzQgNCAyIDRWMkM1LjI2IDIgNi41NyA2LjczIDcuOTYgMTEuNzNDOSAxNS40MiAxMC4yNiAyMCAxMiAyMEMxMy43NCAyMCAxNSAxNS40MiAxNi4wNCAxMS43M0MxNy40MyA2LjczIDE4Ljc0IDIgMjIgMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb3VudGVyID0gXCJNNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNE00LDZWMThIMTFWNkg0TTIwLDE4VjZIMTguNzZDMTksNi41NCAxOC45NSw3LjA3IDE4Ljk1LDcuMTNDMTguODgsNy44IDE4LjQxLDguNSAxOC4yNCw4Ljc1TDE1LjkxLDExLjNMMTkuMjMsMTEuMjhMMTkuMjQsMTIuNUwxNC4wNCwxMi40N0wxNCwxMS40N0MxNCwxMS40NyAxNy4wNSw4LjI0IDE3LjIsNy45NUMxNy4zNCw3LjY3IDE3LjkxLDYgMTYuNSw2QzE1LjI3LDYuMDUgMTUuNDEsNy4zIDE1LjQxLDcuM0wxMy44Nyw3LjMxQzEzLjg3LDcuMzEgMTMuODgsNi42NSAxNC4yNSw2SDEzVjE4SDE1LjU4TDE1LjU3LDE3LjE0TDE2LjU0LDE3LjEzQzE2LjU0LDE3LjEzIDE3LjQ1LDE2Ljk3IDE3LjQ2LDE2LjA4QzE3LjUsMTUuMDggMTYuNjUsMTUuMDggMTYuNSwxNS4wOEMxNi4zNywxNS4wOCAxNS40MywxNS4xMyAxNS40MywxNS45NUgxMy45MUMxMy45MSwxNS45NSAxMy45NSwxMy44OSAxNi41LDEzLjg5QzE5LjEsMTMuODkgMTguOTYsMTUuOTEgMTguOTYsMTUuOTFDMTguOTYsMTUuOTEgMTksMTcuMTYgMTcuODUsMTcuNjNMMTguMzcsMThIMjBNOC45MiwxNkg3LjQyVjEwLjJMNS42MiwxMC43NlY5LjUzTDguNzYsOC40MUg4LjkyVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvdyA9IFwiTTEwLjUsMThBMC41LDAuNSAwIDAsMSAxMSwxOC41QTAuNSwwLjUgMCAwLDEgMTAuNSwxOUEwLjUsMC41IDAgMCwxIDEwLDE4LjVBMC41LDAuNSAwIDAsMSAxMC41LDE4TTEzLjUsMThBMC41LDAuNSAwIDAsMSAxNCwxOC41QTAuNSwwLjUgMCAwLDEgMTMuNSwxOUEwLjUsMC41IDAgMCwxIDEzLDE4LjVBMC41LDAuNSAwIDAsMSAxMy41LDE4TTEwLDExQTEsMSAwIDAsMSAxMSwxMkExLDEgMCAwLDEgMTAsMTNBMSwxIDAgMCwxIDksMTJBMSwxIDAgMCwxIDEwLDExTTE0LDExQTEsMSAwIDAsMSAxNSwxMkExLDEgMCAwLDEgMTQsMTNBMSwxIDAgMCwxIDEzLDEyQTEsMSAwIDAsMSAxNCwxMU0xOCwxOEMxOCwyMC4yMSAxNS4zMSwyMiAxMiwyMkM4LjY5LDIyIDYsMjAuMjEgNiwxOEM2LDE3LjEgNi40NSwxNi4yNyA3LjIsMTUuNkM2LjQ1LDE0LjYgNiwxMy4zNSA2LDEyTDYuMTIsMTAuNzhDNS41OCwxMC45MyA0LjkzLDEwLjkzIDQuNCwxMC43OEMzLjM4LDEwLjUgMS44NCw5LjM1IDIuMDcsOC41NUMyLjMsNy43NSA0LjIxLDcuNiA1LjIzLDcuOUM1LjgyLDguMDcgNi40NSw4LjUgNi44Miw4Ljk2TDcuMzksOC4xNUM2Ljc5LDcuMDUgNyw0IDEwLDNMOS45MSwzLjE0VjMuMTRDOS42MywzLjU4IDguOTEsNC45NyA5LjY3LDYuNDdDMTAuMzksNi4xNyAxMS4xNyw2IDEyLDZDMTIuODMsNiAxMy42MSw2LjE3IDE0LjMzLDYuNDdDMTUuMDksNC45NyAxNC4zNywzLjU4IDE0LjA5LDMuMTRMMTQsM0MxNyw0IDE3LjIxLDcuMDUgMTYuNjEsOC4xNUwxNy4xOCw4Ljk2QzE3LjU1LDguNSAxOC4xOCw4LjA3IDE4Ljc3LDcuOUMxOS43OSw3LjYgMjEuNyw3Ljc1IDIxLjkzLDguNTVDMjIuMTYsOS4zNSAyMC42MiwxMC41IDE5LjYsMTAuNzhDMTkuMDcsMTAuOTMgMTguNDIsMTAuOTMgMTcuODgsMTAuNzhMMTgsMTJDMTgsMTMuMzUgMTcuNTUsMTQuNiAxNi44LDE1LjZDMTcuNTUsMTYuMjcgMTgsMTcuMSAxOCwxOE0xMiwxNkM5Ljc5LDE2IDgsMTYuOSA4LDE4QzgsMTkuMSA5Ljc5LDIwIDEyLDIwQzE0LjIxLDIwIDE2LDE5LjEgMTYsMThDMTYsMTYuOSAxNC4yMSwxNiAxMiwxNk0xMiwxNEMxMy4xMiwxNCAxNC4xNywxNC4yMSAxNS4wNywxNC41NkMxNS42NSwxMy44NyAxNiwxMyAxNiwxMkE0LDQgMCAwLDAgMTIsOEE0LDQgMCAwLDAgOCwxMkM4LDEzIDguMzUsMTMuODcgOC45MywxNC41NkM5LjgzLDE0LjIxIDEwLjg4LDE0IDEyLDE0TTE0LjA5LDMuMTRWMy4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcHUzMkJpdCA9IFwiTTksM1Y1SDdBMiwyIDAgMCwwIDUsN1Y5SDNWMTFINVYxM0gzVjE1SDVWMTdBMiwyIDAgMCwwIDcsMTlIOVYyMUgxMVYxOUgxM1YyMUgxNVYxOUgxN0EyLDIgMCAwLDAgMTksMTdWMTVIMjFWMTNIMTlWMTFIMjFWOUgxOVY3QTIsMiAwIDAsMCAxNyw1SDE1VjNIMTNWNUgxMVYzTTcsOUgxMC41QTEsMSAwIDAsMSAxMS41LDEwVjE0QTEsMSAwIDAsMSAxMC41LDE1SDdWMTMuNUgxMFYxMi43NUg4LjVWMTEuMjVIMTBWMTAuNUg3TTEyLjUsOUgxNkExLDEgMCAwLDEgMTcsMTBWMTEuNzVBMSwxIDAgMCwxIDE2LDEyLjc1SDE0VjEzLjVIMTdWMTVIMTIuNVYxMi4yNUExLDEgMCAwLDEgMTMuNSwxMS4yNUgxNS41VjEwLjVIMTIuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNwdTY0Qml0ID0gXCJNOSwzVjVIN0EyLDIgMCAwLDAgNSw3VjlIM1YxMUg1VjEzSDNWMTVINVYxN0EyLDIgMCAwLDAgNywxOUg5VjIxSDExVjE5SDEzVjIxSDE1VjE5SDE3QTIsMiAwIDAsMCAxOSwxN1YxNUgyMVYxM0gxOVYxMUgyMVY5SDE5VjdBMiwyIDAgMCwwIDE3LDVIMTVWM0gxM1Y1SDExVjNNOCw5SDExLjVWMTAuNUg4LjVWMTEuMjVIMTAuNUExLDEgMCAwLDEgMTEuNSwxMi4yNVYxNEExLDEgMCAwLDEgMTAuNSwxNUg4QTEsMSAwIDAsMSA3LDE0VjEwQTEsMSAwIDAsMSA4LDlNMTIuNSw5SDE0VjExSDE1LjVWOUgxN1YxNUgxNS41VjEyLjVIMTIuNU04LjUsMTIuNzVWMTMuNUgxMFYxMi43NVwiO1xyXG5leHBvcnQgdmFyIG1kaUNyYW5lID0gXCJNMjAsNlY1QTEsMSAwIDAsMCAxOSw0SDlWM0g2VjRINVY2SDZWMTVINVYxM0gzVjE1SDJWMTdIM1YyMUg1VjE3SDEwVjIxSDEyVjE5LjkyTDEyLDE3SDEzVjE1SDEyVjEzSDEwVjE1SDlWNkgxN1YxMC42MkMxNi41MywxMC43OSAxNi4xOSwxMS4yMyAxNi4xOSwxMS43NkMxNi4xOSwxMi4yIDE2LjQzLDEyLjYgMTYuOCwxMi44MlYxNEgxNy40MkMxNy43NiwxNCAxOC4wMywxNC4yOCAxOC4wMywxNC42MkMxOC4wMywxNC45NiAxNy43NiwxNS4yNCAxNy40MiwxNS4yNEMxNy4yLDE1LjI0IDE3LDE1LjEyIDE2Ljg5LDE0LjkzQzE2LjcxLDE0LjY0IDE2LjM0LDE0LjU0IDE2LjA1LDE0LjcxQzE1Ljc1LDE0Ljg3IDE1LjY1LDE1LjI1IDE1LjgyLDE1LjU1QzE2LjE1LDE2LjExIDE2Ljc2LDE2LjQ3IDE3LjQyLDE2LjQ3QzE4LjQzLDE2LjQ3IDE5LjI2LDE1LjY0IDE5LjI2LDE0LjYyQzE5LjI2LDEzLjg0IDE4Ljc2LDEzLjE0IDE4LjAzLDEyLjg4VjEyLjgyQzE4LjQxLDEyLjYgMTguNjUsMTIuMiAxOC42NSwxMS43NkMxOC42NSwxMS4zIDE4LjM4LDEwLjkxIDE4LDEwLjdWNkgyME04LDEzLjY2TDcsMTQuNjZWMTMuMjRMOCwxMi4yNFYxMy42Nk04LDEwLjcxTDcsMTEuNzFWMTAuMjlMOCw5LjI5VjEwLjcxTTcsOC43MVY3LjI5TDgsNi4yOVY3LjcxTDcsOC43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVhdGlvbiA9IFwiTTE5LDFMMTcuNzQsMy43NUwxNSw1TDE3Ljc0LDYuMjZMMTksOUwyMC4yNSw2LjI2TDIzLDVMMjAuMjUsMy43NU05LDRMNi41LDkuNUwxLDEyTDYuNSwxNC41TDksMjBMMTEuNSwxNC41TDE3LDEyTDExLjUsOS41TTE5LDE1TDE3Ljc0LDE3Ljc0TDE1LDE5TDE3Ljc0LDIwLjI1TDE5LDIzTDIwLjI1LDIwLjI1TDIzLDE5TDIwLjI1LDE3Ljc0XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlYXRpdmVDb21tb25zID0gXCJNMTEuODksMTAuMzRMMTAuNTUsMTEuMDRDMTAuNDEsMTAuNzQgMTAuMjQsMTAuNTMgMTAuMDMsMTAuNDFDOS44MiwxMC4yOSA5LjYyLDEwLjIzIDkuNDUsMTAuMjNDOC41NSwxMC4yMyA4LjExLDEwLjgyIDguMTEsMTJDOC4xMSwxMi41NCA4LjIyLDEyLjk3IDguNDUsMTMuMjlDOC42NywxMy42MSA5LDEzLjc3IDkuNDUsMTMuNzdDMTAuMDMsMTMuNzcgMTAuNDQsMTMuNSAxMC42OCwxMi45MUwxMS45MSwxMy41NEMxMS42NSwxNC4wMyAxMS4yOSwxNC40MSAxMC44MiwxNC42OUMxMC4zNiwxNC45NyA5Ljg1LDE1LjExIDkuMjksMTUuMTFDOC4zOSwxNS4xMSA3LjY3LDE0Ljg0IDcuMTIsMTQuMjlDNi41OCwxMy43NCA2LjMsMTMgNi4zLDEyQzYuMywxMS4wNSA2LjU4LDEwLjMgNy4xMyw5Ljc0QzcuNjksOS4xOCA4LjM5LDguOSA5LjIzLDguOUMxMC40Nyw4Ljg5IDExLjM2LDkuMzggMTEuODksMTAuMzRNMTcuNjYsMTAuMzRMMTYuMzQsMTEuMDRDMTYuMiwxMC43NCAxNiwxMC41MyAxNS44MSwxMC40MUMxNS42LDEwLjI5IDE1LjQsMTAuMjMgMTUuMjEsMTAuMjNDMTQuMzIsMTAuMjMgMTMuODcsMTAuODIgMTMuODcsMTJDMTMuODcsMTIuNTQgMTQsMTIuOTcgMTQuMjEsMTMuMjlDMTQuNDQsMTMuNjEgMTQuNzcsMTMuNzcgMTUuMjEsMTMuNzdDMTUuOCwxMy43NyAxNi4yMSwxMy41IDE2LjQ1LDEyLjkxTDE3LjcsMTMuNTRDMTcuNDIsMTQuMDMgMTcuMDUsMTQuNDEgMTYuNTksMTQuNjlDMTYuMTIsMTQuOTcgMTUuNjIsMTUuMTEgMTUuMDcsMTUuMTFDMTQuMTcsMTUuMTEgMTMuNDQsMTQuODQgMTIuOSwxNC4yOUMxMi4zNiwxMy43NCAxMi4wOSwxMyAxMi4wOSwxMkMxMi4wOSwxMS4wNSAxMi4zNywxMC4zIDEyLjkyLDkuNzRDMTMuNDcsOS4xOCAxNC4xNyw4LjkgMTUsOC45QzE2LjI2LDguODkgMTcuMTQsOS4zOCAxNy42NiwxMC4zNE0xMiwzLjVBOC41LDguNSAwIDAsMSAyMC41LDEyQTguNSw4LjUgMCAwLDEgMTIsMjAuNUE4LjUsOC41IDAgMCwxIDMuNSwxMkE4LjUsOC41IDAgMCwxIDEyLDMuNU0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkID0gXCJNMjAgNEg0QTIgMiAwIDAgMCAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjZBMiAyIDAgMCAwIDIwIDRNMjAgMTFINFY4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRDaGVjayA9IFwiTTIwIDRINEMyLjkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMTMuMDlDMTMuMDMgMTkuNjcgMTMgMTkuMzQgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNDMjAuMDYgMTMgMjEuMDkgMTMuMjggMjIgMTMuODFWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNE0yMCAxMUg0VjhIMjBNMTcuNzUgMjJMMTUgMTlMMTYuMTYgMTcuODRMMTcuNzUgMTkuNDNMMjEuMzQgMTUuODRMMjIuNSAxNy4yNUwxNy43NSAyMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRDaGVja091dGxpbmUgPSBcIk0xMyAxOUMxMyAxOC42NiAxMy4wNCAxOC4zMyAxMy4wOSAxOEgzVjEySDE5VjEzQzE5LjcgMTMgMjAuMzcgMTMuMTMgMjEgMTMuMzVWNkMyMSA0Ljg5IDIwLjExIDQgMTkgNEgzQzEuODkgNCAxIDQuODkgMSA2VjE4QzEgMTkuMSAxLjg5IDIwIDMgMjBIMTMuMDlDMTMuMDQgMTkuNjcgMTMgMTkuMzQgMTMgMTlNMyA2SDE5VjhIM1Y2TTE3Ljc1IDIyTDE1IDE5TDE2LjE2IDE3Ljg0TDE3Ljc1IDE5LjQzTDIxLjM0IDE1Ljg0TDIyLjUgMTcuMjVMMTcuNzUgMjJcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkQ2xvY2sgPSBcIk0xNiwxNEgxNy41VjE2LjgyTDE5Ljk0LDE4LjIzTDE5LjE5LDE5LjUzTDE2LDE3LjY5VjE0TTI0LDE3QTcsNyAwIDAsMSAxNywyNEMxNC4yMSwyNCAxMS44LDIyLjM2IDEwLjY3LDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNC44OSAyLjg5LDQgNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjEyLjFDMjMuMjQsMTMuMzYgMjQsMTUuMDkgMjQsMTdNMTcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywyMkE1LDUgMCAwLDAgMjIsMTdBNSw1IDAgMCwwIDE3LDEyTTIwLDEwVjdINFYxMEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkQ2xvY2tPdXRsaW5lID0gXCJNMTYsMTRIMTcuNVYxNi44MkwxOS45NCwxOC4yM0wxOS4xOSwxOS41M0wxNiwxNy42OVYxNE0yNCwxN0E3LDcgMCAwLDEgMTcsMjRDMTQuMjEsMjQgMTEuOCwyMi4zNiAxMC42NywyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxMi4xQzIzLjI0LDEzLjM2IDI0LDE1LjA5IDI0LDE3TTEwLDE3QzEwLDE1LjA0IDEwLjgxLDEzLjI3IDEyLjEsMTJINFYxOEgxMC4wN0MxMCwxNy42NyAxMCwxNy4zNCAxMCwxN00xNywxMkE1LDUgMCAwLDAgMTIsMTdBNSw1IDAgMCwwIDE3LDIyQTUsNSAwIDAsMCAyMiwxN0E1LDUgMCAwLDAgMTcsMTJNMjAsOFY2SDRWOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkTWFya2VyID0gXCJNMTguNSAxMkMxNi42IDEyIDE1IDEzLjYgMTUgMTUuNUMxNSAxOC4xIDE4LjUgMjIgMTguNSAyMlMyMiAxOC4xIDIyIDE1LjVDMjIgMTMuNiAyMC40IDEyIDE4LjUgMTJNMTguNSAxNi44QzE3LjggMTYuOCAxNy4zIDE2LjIgMTcuMyAxNS42QzE3LjMgMTQuOSAxNy45IDE0LjQgMTguNSAxNC40UzE5LjcgMTUgMTkuNyAxNS42QzE5LjggMTYuMiAxOS4yIDE2LjggMTguNSAxNi44TTE0LjU1IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMTEuM0MyMS40MiAxMC44MSAyMC43NCAxMC40NCAyMCAxMC4yMlY4SDRWMTFIMTUuMzlDMTMuOTYgMTIgMTMgMTMuNjYgMTMgMTUuNUMxMyAxNyAxMy43MiAxOC42MSAxNC41NSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkTWFya2VyT3V0bGluZSA9IFwiTTEzLjUsMThINFYxMkgxNC4zQzE1LjMsMTAuOCAxNi44LDEwIDE4LjUsMTBDMTkuOCwxMCAyMSwxMC41IDIyLDExLjNWNkEyLDIgMCAwLDAgMjAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMTQuNkMxNC4yLDE5LjQgMTMuOCwxOC43IDEzLjUsMThNNCw2SDIwVjhINFY2TTE4LjUsMTJDMTYuNiwxMiAxNSwxMy42IDE1LDE1LjVDMTUsMTguMSAxOC41LDIyIDE4LjUsMjJDMTguNSwyMiAyMiwxOC4xIDIyLDE1LjVDMjIsMTMuNiAyMC40LDEyIDE4LjUsMTJNMTguNSwxNi44QzE3LjgsMTYuOCAxNy4zLDE2LjIgMTcuMywxNS42QzE3LjMsMTQuOSAxNy45LDE0LjQgMTguNSwxNC40QzE5LjEsMTQuNCAxOS43LDE1IDE5LjcsMTUuNkMxOS44LDE2LjIgMTkuMiwxNi44IDE4LjUsMTYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkTWludXMgPSBcIk0yMCA0SDRDMi45IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDEzLjA5QzEzLjAzIDE5LjY3IDEzIDE5LjM0IDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzQzIwLjA2IDEzIDIxLjA5IDEzLjI4IDIyIDEzLjgxVjZDMjIgNC44OSAyMS4xMSA0IDIwIDRNMjAgMTFINFY4SDIwTTIzIDE4VjIwSDE1VjE4SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRNaW51c091dGxpbmUgPSBcIk0yNCAxOFYyMEgxNlYxOE0xOSA4VjZIM1Y4SDE5TTE5IDEySDNWMThIMTRWMjBIM0MxLjg5IDIwIDEgMTkuMSAxIDE4VjZDMSA0Ljg5IDEuODkgNCAzIDRIMTlDMjAuMTEgNCAyMSA0Ljg5IDIxIDZWMTNIMTlWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZE11bHRpcGxlID0gXCJNMjEgOVY2SDdWOUgyMU0yMSAzQTIgMiAwIDAgMSAyMyA1VjE1QTIgMiAwIDAgMSAyMSAxN0g3QTIgMiAwIDAgMSA1IDE1VjVBMiAyIDAgMCAxIDcgM0gyMU0zIDE5SDE4VjIxSDNBMiAyIDAgMCAxIDEgMTlWOEgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRNdWx0aXBsZU91dGxpbmUgPSBcIk0yMSw4VjZIN1Y4SDIxTTIxLDE2VjExSDdWMTZIMjFNMjEsNEEyLDIgMCAwLDEgMjMsNlYxNkEyLDIgMCAwLDEgMjEsMThIN0M1Ljg5LDE4IDUsMTcuMSA1LDE2VjZDNSw0Ljg5IDUuODksNCA3LDRIMjFNMywyMEgxOFYyMkgzQTIsMiAwIDAsMSAxLDIwVjlIM1YyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkT2ZmID0gXCJNMTEuMiA4TDcuMiA0SDIwQTIgMiAwIDAgMSAyMiA2VjE4QTEuOTEgMS45MSAwIDAgMSAyMS44OCAxOC42OEwxNC4yIDExSDIwVjhNMjAuODQgMjIuNzNMMTguMTEgMjBINEEyIDIgMCAwIDEgMiAxOFY2QTIgMiAwIDAgMSAyLjY1IDQuNTRMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk05LjExIDExTDYuMTEgOEg0VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRPZmZPdXRsaW5lID0gXCJNMC45Myw0LjJMMi4yMSwyLjkzTDIwLDIwLjcyTDE4LjczLDIyTDE2LjczLDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNS43OCAyLjA0LDUuNTcgMi4xMSw1LjM4TDAuOTMsNC4yTTIwLDhWNkg3LjgyTDUuODIsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEMyMiwxOC42IDIxLjc0LDE5LjEzIDIxLjMyLDE5LjVMMTkuODIsMThIMjBWMTJIMTMuODJMOS44Miw4SDIwTTQsOEg0LjczTDQsNy4yN1Y4TTQsMTJWMThIMTQuNzNMOC43MywxMkg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRPdXRsaW5lID0gXCJNMjAsOEg0VjZIMjBNMjAsMThINFYxMkgyME0yMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkUGx1cyA9IFwiTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDEzLjA5QTUuNDcgNS40NyAwIDAgMSAxMyAxOUE2IDYgMCAwIDEgMTkgMTNBNS44OCA1Ljg4IDAgMCAxIDIyIDEzLjgxVjZBMiAyIDAgMCAwIDIwIDRNMjAgMTFINFY4SDIwTTIwIDE1VjE4SDIzVjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRQbHVzT3V0bGluZSA9IFwiTTIxLDE4SDI0VjIwSDIxVjIzSDE5VjIwSDE2VjE4SDE5VjE1SDIxVjE4TTE5LDhWNkgzVjhIMTlNMTksMTJIM1YxOEgxNFYyMEgzQzEuODksMjAgMSwxOS4xIDEsMThWNkMxLDQuODkgMS44OSw0IDMsNEgxOUEyLDIgMCAwLDEgMjEsNlYxM0gxOVYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkUmVmcmVzaCA9IFwiTTIwIDRINEMyLjkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMTEuNjhDMTEuNTcgMTkuNSAxMS41IDE5IDExLjUgMTguNUMxMS41IDE0LjkxIDE0LjQxIDEyIDE4IDEyQzE5LjUgMTIgMjAuOSAxMi41MyAyMiAxMy40VjZDMjIgNC44OSAyMS4xMSA0IDIwIDRNMjAgMTFINFY4SDIwVjExTTIwLjgzIDE1LjY3TDIyIDE0LjVWMTguNUgxOEwxOS43NyAxNi43M0MxOS4zMiAxNi4yOCAxOC42OSAxNiAxOCAxNkMxNi42MiAxNiAxNS41IDE3LjEyIDE1LjUgMTguNVMxNi42MiAyMSAxOCAyMUMxOC44MiAyMSAxOS41NCAyMC42MSAyMCAyMEgyMS43MUMyMS4xMiAyMS40NyAxOS42OCAyMi41IDE4IDIyLjVDMTUuNzkgMjIuNSAxNCAyMC43MSAxNCAxOC41UzE1Ljc5IDE0LjUgMTggMTQuNUMxOS4xMSAxNC41IDIwLjExIDE0Ljk1IDIwLjgzIDE1LjY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRSZWZyZXNoT3V0bGluZSA9IFwiTTIwIDRINEMyLjg5IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDExLjY4QzExLjU3IDE5LjUgMTEuNSAxOSAxMS41IDE4LjVDMTEuNSAxOC4zMyAxMS41IDE4LjE3IDExLjUzIDE4SDRWMTJIMjBWMTIuMzJDMjAuNzQgMTIuNTYgMjEuNDEgMTIuOTMgMjIgMTMuNFY2QzIyIDQuODkgMjEuMSA0IDIwIDRNMjAgOEg0VjZIMjBWOE0yMC44MyAxNS42N0wyMiAxNC41VjE4LjVIMThMMTkuNzcgMTYuNzNDMTkuMzIgMTYuMjggMTguNjkgMTYgMTggMTZDMTYuNjIgMTYgMTUuNSAxNy4xMiAxNS41IDE4LjVTMTYuNjIgMjEgMTggMjFDMTguODIgMjEgMTkuNTQgMjAuNjEgMjAgMjBIMjEuNzFDMjEuMTIgMjEuNDcgMTkuNjggMjIuNSAxOCAyMi41QzE1Ljc5IDIyLjUgMTQgMjAuNzEgMTQgMTguNVMxNS43OSAxNC41IDE4IDE0LjVDMTkuMTEgMTQuNSAyMC4xMSAxNC45NSAyMC44MyAxNS42N1pcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkUmVmdW5kID0gXCJNMTggMTFINkEyIDIgMCAwIDAgNCAxM1YyMUEyIDIgMCAwIDAgNiAyM0gxOEEyIDIgMCAwIDAgMjAgMjFWMTNBMiAyIDAgMCAwIDE4IDExTTE4IDE3SDZWMTRIMThNMTcgNVYxMEgxNS41VjYuNUg5Ljg4TDEyLjMgOC45M0wxMS4yNCAxMEw3IDUuNzVMMTEuMjQgMS41TDEyLjMgMi41N0w5Ljg4IDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFJlZnVuZE91dGxpbmUgPSBcIk0xOCwxMUg2QTIsMiAwIDAsMCA0LDEzVjIxQTIsMiAwIDAsMCA2LDIzSDE4QTIsMiAwIDAsMCAyMCwyMVYxM0EyLDIgMCAwLDAgMTgsMTFNMTgsMjFINlYxN0gxOFYyMU0xOCwxNUg2VjEzSDE4VjE1TTE3LDVWMTBIMTUuNVY2LjVIOS44OEwxMi4zLDguOTNMMTEuMjQsMTBMNyw1Ljc1TDExLjI0LDEuNUwxMi4zLDIuNTdMOS44OCw1SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRSZW1vdmUgPSBcIk0yMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgxMy4wOUE1LjQ3IDUuNDcgMCAwIDEgMTMgMTlBNiA2IDAgMCAxIDE5IDEzQTUuODggNS44OCAwIDAgMSAyMiAxMy44MVY2QTIgMiAwIDAgMCAyMCA0TTIwIDExSDRWOEgyME0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NiAyMS4xMkwxNy41OSAxOUwxNS40NiAxNi44OEwxNi44OCAxNS40NkwxOSAxNy41OUwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkUmVtb3ZlT3V0bGluZSA9IFwiTTEzIDE5QzEzIDE4LjY2IDEzLjA0IDE4LjMzIDEzLjA5IDE4SDNWMTJIMTlWMTNDMTkuNyAxMyAyMC4zNyAxMy4xMyAyMSAxMy4zNVY2QzIxIDQuODkgMjAuMTEgNCAxOSA0SDNDMS44OSA0IDEgNC44OSAxIDZWMThDMSAxOS4xIDEuODkgMjAgMyAyMEgxMy4wOUMxMy4wNCAxOS42NyAxMyAxOS4zNCAxMyAxOU0zIDZIMTlWOEgzVjZNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDZMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFNjYW4gPSBcIk0xOCA2SDZBMiAyIDAgMCAwIDQgOFYxNkEyIDIgMCAwIDAgNiAxOEgxOEEyIDIgMCAwIDAgMjAgMTZWOEEyIDIgMCAwIDAgMTggNk0xOCAxMkg2VjlIMThNMiA0SDZWMkgyQTIgMiAwIDAgMCAwIDRWOEgyVjRNMjIgMkgxOFY0SDIyVjhIMjRWNEEyIDIgMCAwIDAgMjIgMk0yIDE2SDBWMjBBMiAyIDAgMCAwIDIgMjJINlYyMEgyVjE2TTIyIDIwSDE4VjIySDIyQTIgMiAwIDAgMCAyNCAyMFYxNkgyMlYyMFwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRTY2FuT3V0bGluZSA9IFwiTTIsNEg2VjJIMkEyLDIgMCAwLDAgMCw0VjhIMlY0TTIyLDJIMThWNEgyMlY4SDI0VjRBMiwyIDAgMCwwIDIyLDJNMiwxNkgwVjIwQTIsMiAwIDAsMCAyLDIySDZWMjBIMlYxNk0yMiwyMEgxOFYyMkgyMkEyLDIgMCAwLDAgMjQsMjBWMTZIMjJWMjBNNCw4VjE2QTIsMiAwIDAsMCA2LDE4SDE4QTIsMiAwIDAsMCAyMCwxNlY4QTIsMiAwIDAsMCAxOCw2SDZBMiwyIDAgMCwwIDQsOE02LDE2VjEySDE4VjE2SDZNMTgsOFYxMEg2VjhIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFNlYXJjaCA9IFwiTTExLjgyIDExQzkuNCAxMy41IDkuNCAxNy41IDExLjgyIDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMTIuMDZDMjEuNzQgMTEuNjUgMjEuNDUgMTEuMjYgMjEuMSAxMC45QzIwLjc2IDEwLjU3IDIwLjM5IDEwLjI3IDIwIDEwLjAzVjhINFYxMUgxMS44Mk0yMy4zOSAyMUwyMiAyMi4zOUwxOC44OCAxOS4zMkMxOC4xOSAxOS43NSAxNy4zNyAyMCAxNi41IDIwQzE0IDIwIDEyIDE4IDEyIDE1LjVTMTQgMTEgMTYuNSAxMSAyMSAxMyAyMSAxNS41QzIxIDE2LjM4IDIwLjc1IDE3LjIxIDIwLjMxIDE3LjlMMjMuMzkgMjFNMTkgMTUuNUMxOSAxNC4xMiAxNy44OCAxMyAxNi41IDEzUzE0IDE0LjEyIDE0IDE1LjUgMTUuMTIgMTggMTYuNSAxOCAxOSAxNi44OCAxOSAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRTZWFyY2hPdXRsaW5lID0gXCJNMTEuMDMgMTJDMTEuMjggMTEuNjEgMTEuNTcgMTEuMjQgMTEuOSAxMC45QzE0LjQ0IDguMzcgMTguNTYgOC4zNyAyMS4xIDEwLjlDMjEuNDUgMTEuMjYgMjEuNzQgMTEuNjUgMjIgMTIuMDZWNkMyMiA0Ljg5IDIxLjEgNCAyMCA0SDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMS44MkMxMS4yNCAxOS40IDEwLjggMTguNzIgMTAuNSAxOEg0VjEySDExLjAzTTQgNkgyMFY4SDRWNk0yMC4zMSAxNy45QzIwLjc1IDE3LjIxIDIxIDE2LjM4IDIxIDE1LjVDMjEgMTMgMTkgMTEgMTYuNSAxMVMxMiAxMyAxMiAxNS41IDE0IDIwIDE2LjUgMjBDMTcuMzcgMjAgMTguMTkgMTkuNzUgMTguODggMTkuMzJMMjIgMjIuMzlMMjMuMzkgMjFMMjAuMzEgMTcuOU0xNi41IDE4QzE1LjEyIDE4IDE0IDE2Ljg4IDE0IDE1LjVTMTUuMTIgMTMgMTYuNSAxMyAxOSAxNC4xMiAxOSAxNS41IDE3Ljg4IDE4IDE2LjUgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFNldHRpbmdzID0gXCJNMjAgNEg0QTIgMiAwIDAgMCAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjZBMiAyIDAgMCAwIDIwIDRNMjAgMTFINFY4SDIwTTcgMjJIOVYyNEg3VjIyTTExIDIySDEzVjI0SDExVjIyTTE1IDIySDE3VjI0SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRTZXR0aW5nc091dGxpbmUgPSBcIk0yMCw4SDRWNkgyME0yMCwxOEg0VjEySDIwTTIwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0TTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRTeW5jID0gXCJNMTMgMTcuNUMxMyAxOC4zOSAxMy4xOCAxOS4yMyAxMy41IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMTEuNUMyMS4yMyAxMS4xOCAyMC4zOSAxMSAxOS41IDExSDIwVjhINFYxMUgxOS41QzE1LjkxIDExIDEzIDEzLjkxIDEzIDE3LjVNMTkgMjBDMTcuNjIgMjAgMTYuNSAxOC44OCAxNi41IDE3LjVDMTYuNSAxNy4xIDE2LjU5IDE2LjcyIDE2Ljc2IDE2LjM4TDE1LjY3IDE1LjI5QzE1LjI1IDE1LjkyIDE1IDE2LjY4IDE1IDE3LjVDMTUgMTkuNzEgMTYuNzkgMjEuNSAxOSAyMS41VjIzTDIxLjI1IDIwLjc1TDE5IDE4LjVWMjBNMTkgMTMuNVYxMkwxNi43NSAxNC4yNUwxOSAxNi41VjE1QzIwLjM4IDE1IDIxLjUgMTYuMTIgMjEuNSAxNy41QzIxLjUgMTcuOSAyMS40MSAxOC4yOCAyMS4yNCAxOC42MkwyMi4zMyAxOS43MUMyMi43NSAxOS4wOCAyMyAxOC4zMiAyMyAxNy41QzIzIDE1LjI5IDIxLjIxIDEzLjUgMTkgMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkU3luY091dGxpbmUgPSBcIk00IDE4VjEySDE2LjA1QzE3LjA1IDExLjM3IDE4LjIzIDExIDE5LjUgMTFDMjAuMzkgMTEgMjEuMjMgMTEuMTggMjIgMTEuNVY2QzIyIDQuODkgMjEuMSA0IDIwIDRINEMyLjg5IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDEzLjVDMTMuMjQgMTkuMzggMTMuMDggMTguNyAxMy4wMyAxOEg0TTQgNkgyMFY4SDRWNk0yMyAxNy41QzIzIDE4LjMyIDIyLjc1IDE5LjA4IDIyLjMzIDE5LjcxTDIxLjI0IDE4LjYyQzIxLjQxIDE4LjI4IDIxLjUgMTcuOSAyMS41IDE3LjVDMjEuNSAxNi4xMiAyMC4zOCAxNSAxOSAxNVYxNi41TDE2Ljc1IDE0LjI1TDE5IDEyVjEzLjVDMjEuMjEgMTMuNSAyMyAxNS4yOSAyMyAxNy41TTE5IDE4LjVMMjEuMjUgMjAuNzVMMTkgMjNWMjEuNUMxNi43OSAyMS41IDE1IDE5LjcxIDE1IDE3LjVDMTUgMTYuNjggMTUuMjUgMTUuOTIgMTUuNjcgMTUuMjlMMTYuNzYgMTYuMzhDMTYuNTkgMTYuNzIgMTYuNSAxNy4xIDE2LjUgMTcuNUMxNi41IDE4Ljg4IDE3LjYyIDIwIDE5IDIwVjE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFdpcmVsZXNzID0gXCJNNC45MyA0LjkyTDYuMzQgNi4zM0M5LjQ2IDMuMiAxNC41MyAzLjIgMTcuNjYgNi4zM0wxOS4wNyA0LjkyQzE1LjE3IDEgOC44NCAxIDQuOTMgNC45Mk03Ljc2IDcuNzVMOS4xNyA5LjE2QzEwLjczIDcuNiAxMy4yNiA3LjYgMTQuODMgOS4xNkwxNi4yNCA3Ljc1QzEzLjkgNS40MSAxMC4xIDUuNDEgNy43NiA3Ljc1TTE4IDExSDZDNC44OSAxMSA0IDExLjkgNCAxM1YyMUM0IDIyLjExIDQuODkgMjMgNiAyM0gxOEMxOS4xMSAyMyAyMCAyMi4xMSAyMCAyMVYxM0MyMCAxMS45IDE5LjExIDExIDE4IDExTTE4IDE3SDZWMTRIMThWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFdpcmVsZXNzT2ZmID0gXCJNMTIgMkM5Ljg1IDIgNy43IDIuNjkgNS45IDQuMDhMNy4zMiA1LjVDMTAuNDUgMy4yNCAxNC44NCAzLjUgMTcuNjYgNi4zM0wxOS4wNyA0LjkyQzE3LjEyIDIuOTYgMTQuNTYgMiAxMiAyTTMuMjggNEwyIDUuMjdMNy43MyAxMUg2QzQuODkgMTEgNCAxMS45IDQgMTNWMjFDNCAyMi4xMSA0Ljg5IDIzIDYgMjNIMThDMTguNSAyMyAxOC45MiAyMi44MiAxOS4yNyAyMi41NEwxOS43MyAyM0wyMSAyMS43Mk0xMiA2QzEwLjg3IDYgOS43NSA2LjMxIDguNzcgNi45NEwxMC4yNCA4LjQxQzExLjczIDcuNjggMTMuNTggNy45MiAxNC44MyA5LjE2TDE2LjI0IDcuNzVDMTUuMDcgNi41OCAxMy41NCA2IDEyIDZNMTIuODIgMTFMMTUuODIgMTRIMThWMTYuMThMMjAgMTguMThWMTNDMjAgMTEuOSAxOS4xMSAxMSAxOCAxMU02IDE0SDEwLjczTDEzLjczIDE3SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFdpcmVsZXNzT2ZmT3V0bGluZSA9IFwiTTEyIDJDOS44NSAyIDcuNyAyLjY5IDUuOSA0LjA4TDcuMzIgNS41QzEwLjQ1IDMuMjQgMTQuODQgMy41IDE3LjY2IDYuMzNMMTkuMDcgNC45MkMxNy4xMiAyLjk2IDE0LjU2IDIgMTIgMk0zLjI4IDRMMiA1LjI3TDcuNzMgMTFINkM0Ljg5IDExIDQgMTEuOSA0IDEzVjIxQzQgMjIuMTEgNC44OSAyMyA2IDIzSDE4QzE4LjQ3IDIzIDE4LjkyIDIyLjg0IDE5LjI3IDIyLjU0TDE5LjczIDIzTDIxIDIxLjcyTTEyIDZDMTAuODcgNiA5Ljc1IDYuMzEgOC43NyA2Ljk0TDEwLjI0IDguNDFDMTEuNzMgNy42OCAxMy41OCA3LjkyIDE0LjgzIDkuMTZMMTYuMjQgNy43NUMxNS4wNyA2LjU4IDEzLjU0IDYgMTIgNk0xMi44MiAxMUwxNC44MiAxM0gxOFYxNUgxNi44MkwyMCAxOC4xOFYxM0MyMCAxMS45IDE5LjExIDExIDE4IDExTTYgMTNIOS43M0wxMS43MyAxNUg2TTYgMTdIMTMuNzNMMTcuNzMgMjFINlpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkV2lyZWxlc3NPdXRsaW5lID0gXCJNMTgsMTFINkEyLDIgMCAwLDAgNCwxM1YyMUEyLDIgMCAwLDAgNiwyM0gxOEEyLDIgMCAwLDAgMjAsMjFWMTNBMiwyIDAgMCwwIDE4LDExTTE4LDIxSDZWMTdIMThWMjFNMTgsMTVINlYxM0gxOFYxNU00LjkzLDQuOTJMNi4zNCw2LjMzQzkuNDYsMy4yIDE0LjUzLDMuMiAxNy42Niw2LjMzTDE5LjA3LDQuOTJDMTUuMTcsMSA4Ljg0LDEgNC45Myw0LjkyTTcuNzYsNy43NUw5LjE3LDkuMTZDMTAuNzMsNy42IDEzLjI2LDcuNiAxNC44Myw5LjE2TDE2LjI0LDcuNzVDMTMuOSw1LjQxIDEwLjEsNS40MSA3Ljc2LDcuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JpY2tldCA9IFwiTTE0LjM0LDE3Ljc3TDE1Ljc1LDE2LjM2TDIwLDIwLjU4TDE4LjU2LDIyTDE0LjM0LDE3Ljc3TTE4LjUsMkEzLjUsMy41IDAgMCwxIDIyLDUuNUEzLjUsMy41IDAgMCwxIDE4LjUsOUEzLjUsMy41IDAgMCwxIDE1LDUuNUEzLjUsMy41IDAgMCwxIDE4LjUsMk0yLjI0LDcuMTFMNS4wNyw0LjI4QzUuNDYsMy44OSA2LjA5LDMuODkgNi41LDQuMjhMMTQuOTcsMTIuNzdDMTUuMzYsMTMuMTYgMTUuMzYsMTMuNzkgMTQuOTcsMTQuMThMMTIuMTQsMTdDMTEuNzUsMTcuNCAxMS4xMiwxNy40IDEwLjcyLDE3TDIuMjQsOC41M0MxLjg1LDguMTMgMS44NSw3LjUgMi4yNCw3LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyb3AgPSBcIk03LDE3VjFINVY1SDFWN0g1VjE3QTIsMiAwIDAsMCA3LDE5SDE3VjIzSDE5VjE5SDIzVjE3TTE3LDE1SDE5VjdDMTksNS44OSAxOC4xLDUgMTcsNUg5VjdIMTdWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JvcEZyZWUgPSBcIk0xOSwzSDE1VjVIMTlWOUgyMVY1QzIxLDMuODkgMjAuMSwzIDE5LDNNMTksMTlIMTVWMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjE1SDE5TTUsMTVIM1YxOUEyLDIgMCAwLDAgNSwyMUg5VjE5SDVNMyw1VjlINVY1SDlWM0g1QTIsMiAwIDAsMCAzLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JvcExhbmRzY2FwZSA9IFwiTTE5LDE3SDVWN0gxOU0xOSw1SDVBMiwyIDAgMCwwIDMsN1YxN0EyLDIgMCAwLDAgNSwxOUgxOUEyLDIgMCAwLDAgMjEsMTdWN0MyMSw1Ljg5IDIwLjEsNSAxOSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyb3BQb3J0cmFpdCA9IFwiTTE3LDE5SDdWNUgxN00xNywzSDdBMiwyIDAgMCwwIDUsNVYxOUEyLDIgMCAwLDAgNywyMUgxN0EyLDIgMCAwLDAgMTksMTlWNUMxOSwzLjg5IDE4LjEsMyAxNywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyb3BSb3RhdGUgPSBcIk03LjQ3LDIxLjVDNC4yLDE5LjkzIDEuODYsMTYuNzYgMS41LDEzSDBDMC41LDE5LjE2IDUuNjYsMjQgMTEuOTUsMjRDMTIuMTgsMjQgMTIuMzksMjQgMTIuNjEsMjMuOTdMOC44LDIwLjE1TDcuNDcsMjEuNU0xMi4wNSwwQzExLjgyLDAgMTEuNjEsMCAxMS4zOSwwLjA0TDE1LjIsMy44NUwxNi41MywyLjVDMTkuOCw0LjA3IDIyLjE0LDcuMjQgMjIuNSwxMUgyNEMyMy41LDQuODQgMTguMzQsMCAxMi4wNSwwTTE2LDE0SDE4VjhDMTgsNi44OSAxNy4xLDYgMTYsNkgxMFY4SDE2VjE0TTgsMTZWNEg2VjZINFY4SDZWMTZBMiwyIDAgMCwwIDgsMThIMTZWMjBIMThWMThIMjBWMTZIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcm9wU3F1YXJlID0gXCJNMTgsMThINlY2SDE4TTE4LDRINkEyLDIgMCAwLDAgNCw2VjE4QTIsMiAwIDAsMCA2LDIwSDE4QTIsMiAwIDAsMCAyMCwxOFY2QzIwLDQuODkgMTkuMSw0IDE4LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Jvc3NoYWlycyA9IFwiTTMuMDUsMTNIMVYxMUgzLjA1QzMuNSw2LjgzIDYuODMsMy41IDExLDMuMDVWMUgxM1YzLjA1QzE3LjE3LDMuNSAyMC41LDYuODMgMjAuOTUsMTFIMjNWMTNIMjAuOTVDMjAuNSwxNy4xNyAxNy4xNywyMC41IDEzLDIwLjk1VjIzSDExVjIwLjk1QzYuODMsMjAuNSAzLjUsMTcuMTcgMy4wNSwxM00xMiw1QTcsNyAwIDAsMCA1LDEyQTcsNyAwIDAsMCAxMiwxOUE3LDcgMCAwLDAgMTksMTJBNyw3IDAgMCwwIDEyLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Jvc3NoYWlyc0dwcyA9IFwiTTEyLDhBNCw0IDAgMCwxIDE2LDEyQTQsNCAwIDAsMSAxMiwxNkE0LDQgMCAwLDEgOCwxMkE0LDQgMCAwLDEgMTIsOE0zLjA1LDEzSDFWMTFIMy4wNUMzLjUsNi44MyA2LjgzLDMuNSAxMSwzLjA1VjFIMTNWMy4wNUMxNy4xNywzLjUgMjAuNSw2LjgzIDIwLjk1LDExSDIzVjEzSDIwLjk1QzIwLjUsMTcuMTcgMTcuMTcsMjAuNSAxMywyMC45NVYyM0gxMVYyMC45NUM2LjgzLDIwLjUgMy41LDE3LjE3IDMuMDUsMTNNMTIsNUE3LDcgMCAwLDAgNSwxMkE3LDcgMCAwLDAgMTIsMTlBNyw3IDAgMCwwIDE5LDEyQTcsNyAwIDAsMCAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyb3NzaGFpcnNPZmYgPSBcIk0yMC45NCAxMUMyMC41IDYuODMgMTcuMTcgMy41IDEzIDMuMDZWMUgxMVYzLjA2QzkuODcgMy4xOCA4LjgxIDMuNSA3Ljg0IDQuMDNMOS4zNCA1LjUzQzEwLjE2IDUuMTkgMTEuMDYgNSAxMiA1QzE1Ljg3IDUgMTkgOC4xMyAxOSAxMkMxOSAxMi45NCAxOC44MSAxMy44NCAxOC41IDE0LjY1TDIwIDE2LjE1QzIwLjUgMTUuMTkgMjAuODIgMTQuMTMgMjAuOTUgMTNIMjNWMTFIMjAuOTRNMyA0LjI3TDUuMDQgNi4zMUMzLjk3IDcuNjIgMy4yNSA5LjIzIDMuMDYgMTFIMVYxM0gzLjA2QzMuNSAxNy4xNyA2LjgzIDIwLjUgMTEgMjAuOTRWMjNIMTNWMjAuOTRDMTQuNzcgMjAuNzQgMTYuMzggMjAuMDMgMTcuNjkgMTguOTZMMTkuNzMgMjFMMjEgMTkuNzNMNC4yNyAzTDMgNC4yN00xNi4yNyAxNy41NEMxNS4wOSAxOC40NSAxMy42MSAxOSAxMiAxOUM4LjEzIDE5IDUgMTUuODcgNSAxMkM1IDEwLjM5IDUuNTUgOC45MSA2LjQ2IDcuNzNMMTYuMjcgMTcuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Jvc3NoYWlyc1F1ZXN0aW9uID0gXCJNMy4wNSAxM0gxVjExSDMuMDVDMy41IDYuODMgNi44MyAzLjUgMTEgMy4wNVYxSDEzVjMuMDVDMTcuMTcgMy41IDIwLjUgNi44MyAyMC45NSAxMUgyM1YxM0gyMC45NUMyMC41IDE3LjE3IDE3LjE3IDIwLjUgMTMgMjAuOTVWMjNIMTFWMjAuOTVDNi44MyAyMC41IDMuNSAxNy4xNyAzLjA1IDEzTTEyIDVDOC4xMyA1IDUgOC4xMyA1IDEyUzguMTMgMTkgMTIgMTkgMTkgMTUuODcgMTkgMTIgMTUuODcgNSAxMiA1TTExLjEzIDE3LjI1SDEyLjg4VjE1LjVIMTEuMTNWMTcuMjVNMTIgNi43NUMxMC4wNyA2Ljc1IDguNSA4LjMyIDguNSAxMC4yNUgxMC4yNUMxMC4yNSA5LjI4IDExLjAzIDguNSAxMiA4LjVTMTMuNzUgOS4yOCAxMy43NSAxMC4yNUMxMy43NSAxMiAxMS4xMyAxMS43OCAxMS4xMyAxNC42M0gxMi44OEMxMi44OCAxMi42NiAxNS41IDEyLjQ0IDE1LjUgMTAuMjVDMTUuNSA4LjMyIDEzLjkzIDYuNzUgMTIgNi43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlDcm93biA9IFwiTTUgMTZMMyA1TDguNSAxMEwxMiA0TDE1LjUgMTBMMjEgNUwxOSAxNkg1TTE5IDE5QzE5IDE5LjYgMTguNiAyMCAxOCAyMEg2QzUuNCAyMCA1IDE5LjYgNSAxOVYxOEgxOVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDcm93bk91dGxpbmUgPSBcIk0xMiA4TDE1IDEzLjJMMTggMTAuNUwxNy4zIDE0SDYuN0w2IDEwLjVMOSAxMy4yTDEyIDhNMTIgNEw4LjUgMTBMMyA1TDUgMTZIMTlMMjEgNUwxNS41IDEwTDEyIDRNMTkgMThINVYxOUM1IDE5LjYgNS40IDIwIDYgMjBIMThDMTguNiAyMCAxOSAxOS42IDE5IDE5VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyeWVuZ2luZSA9IFwiTTIzLjAzLDEyLjRNMjMuMDMsMTIuNVYxMi41QzIzLDEzIDIwLjkxLDE1LjIzIDE3LjgyLDE2LjI0QzE0LjA1LDE3LjUgNy45NywxNy4wMyA3Ljk3LDEyLjNDNy45NywxMC4wOCA5Ljc4LDguMjcgMTIsOC4yN0MxNC4yNSw4LjI3IDE2LjA1LDEwLjA5IDE2LjA1LDEyLjMxQzE2LjA1LDEzLjM5IDE1LjU4LDE0LjQ0IDE0Ljg3LDE1LjE4QzE1LjU0LDE1LjE3IDE3Ljk0LDE1IDIwLjIxLDEzLjEyQzIwLjQ2LDEyLjg4IDIwLjYyLDEyLjY4IDIwLjY5LDEyLjU1QzIwLjcxLDEyLjUgMjAuNzQsMTIuNDYgMjAuNzMsMTIuNEMyMC43MywxMS45MiAxOC4xMiw4LjE5IDEyLjcyLDcuMTJDMTkuMjIsNy40NiAyMywxMS4zMiAyMy4wMywxMi40VjEyLjVIMjMuMDNNMTIsMTBDMTAuNzQsMTAgOS43MSwxMS4wNCA5LjcxLDEyLjNDOS43MSwxMy41NyAxMC43NCwxNC41OSAxMiwxNC41OUMxMy4yNywxNC41OSAxNC4yOSwxMy41NyAxNC4yOSwxMi4zQzE0LjI5LDExLjA0IDEzLjI3LDEwIDEyLDEwTTMuMzEsMTIuMzRDMy4zMSwxMi4zNCAzLjMxLDEyLjMxIDMuMzEsMTIuNDJWMTIuNDJDMy40MSwxMi45NCA0LjgyLDE1LjQxIDEwLjI4LDE2Ljg4QzMuOTYsMTYuMzcgMS4xMiwxMy4yOCAxLjA0LDEyLjQySDEuMDNDMS4wMywxMi4zMSAxLjAzLDEyLjM2IDEuMDMsMTIuMzVDMS4wMywxMS41IDQuOTYsNy41OCAxMC45Miw3LjE1QzYuMTQsOC4yNiAzLjMxLDExLjg3IDMuMzEsMTIuMzRWMTIuMzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3J5c3RhbEJhbGwgPSBcIk05LjM4LDguMzhMMTEuNSw5LjM0TDEzLjYyLDguMzhMMTIuNjYsMTAuNUwxMy42MiwxMi42MkwxMS41LDExLjY2TDkuMzgsMTIuNjJMMTAuMzQsMTAuNUw5LjM4LDguMzhNMTYuNSwyLjVMMTcuNTksNS40MUwyMC41LDYuNUwxNy41OSw3LjU5TDE2LjUsMTAuNUwxNS40MSw3LjU5TDEyLjUsNi41TDE1LjQxLDUuNDFMMTYuNSwyLjVNNiwxOUg3VjE4QTEsMSAwIDAsMSA4LDE3SDguMjZDNiwxNS43IDQuNSwxMy4yOCA0LjUsMTAuNUE3LjUsNy41IDAgMCwxIDEyLDNDMTMuMDUsMyAxNC4wNSwzLjIyIDE0Ljk2LDMuNjFMMTQuNTksNC41OUwxMy4xNyw1LjEyQzEyLjc5LDUuMDQgMTIuNCw1IDEyLDVBNS41LDUuNSAwIDAsMCA2LjUsMTAuNUE1LjUsNS41IDAgMCwwIDEyLDE2QzE0LjkxLDE2IDE3LjMsMTMuNzMgMTcuNSwxMC44N0wxOC40MSw4LjQxTDE5LjEyLDguMTRDMTkuMzcsOC44OCAxOS41LDkuNjggMTkuNSwxMC41QzE5LjUsMTMuMjggMTgsMTUuNyAxNS43NCwxN0gxNkExLDEgMCAwLDEgMTcsMThWMTlIMThBMiwyIDAgMCwxIDIwLDIxVjIySDRWMjFBMiwyIDAgMCwxIDYsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZSA9IFwiTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTEyLDQuMTVMNi4wNCw3LjVMMTIsMTAuODVMMTcuOTYsNy41TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE3LjI4IDE5LjE3TDEyLjU3IDIxLjgyQzEyLjQxIDIxLjk0IDEyLjIxIDIyIDEyIDIyUzExLjU5IDIxLjk0IDExLjQzIDIxLjgyTDMuNTMgMTcuMzhDMy4yMSAxNy4yMSAzIDE2Ljg4IDMgMTYuNVY3LjVDMyA3LjEyIDMuMjEgNi43OSAzLjUzIDYuNjJMNC4zIDYuMTlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xMiA0LjE1TDE3Ljk2IDcuNUwxMy4zMSAxMC4xMUwyMC41MyAxNy4zM0MyMC44MiAxNy4xNiAyMSAxNi44NSAyMSAxNi41VjcuNUMyMSA3LjEyIDIwLjc5IDYuNzkgMjAuNDcgNi42MkwxMi41NyAyLjE4QzEyLjQxIDIuMDYgMTIuMjEgMiAxMiAyUzExLjU5IDIuMDYgMTEuNDMgMi4xOEw3LjU2IDQuMzZMOSA1LjgyTDEyIDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZU9mZk91dGxpbmUgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDQuMyA2LjE5TDMuNTMgNi42MkMzLjIxIDYuNzkgMyA3LjEyIDMgNy41VjE2LjVDMyAxNi44OCAzLjIxIDE3LjIxIDMuNTMgMTcuMzhMMTEuNDMgMjEuODJDMTEuNTkgMjEuOTQgMTEuNzkgMjIgMTIgMjJTMTIuNDEgMjEuOTQgMTIuNTcgMjEuODJMMTcuMjggMTkuMTdMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNSAxNS45MVY5LjIxTDEwLjI5IDEyLjE4TDExIDEyLjg5VjE5LjI5TDUgMTUuOTFNMTMgMTkuMjlWMTQuODlMMTUuODIgMTcuN0wxMyAxOS4yOU05IDUuODJMNy41NiA0LjM2TDExLjQzIDIuMThDMTEuNTkgMi4wNiAxMS43OSAyIDEyIDJTMTIuNDEgMi4wNiAxMi41NyAyLjE4TDIwLjQ3IDYuNjJDMjAuNzkgNi43OSAyMSA3LjEyIDIxIDcuNVYxNi41QzIxIDE2Ljg1IDIwLjgyIDE3LjE2IDIwLjUzIDE3LjMzTDE5IDE1LjhWOS4yMUwxNC43OCAxMS41OEwxMy4zMSAxMC4xMUwxNy45NiA3LjVMMTIgNC4xNUw5IDUuODJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZU91dGxpbmUgPSBcIk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDYuMDQsNy41TDEyLDEwLjg1TDE3Ljk2LDcuNUwxMiw0LjE1TTUsMTUuOTFMMTEsMTkuMjlWMTIuNThMNSw5LjIxVjE1LjkxTTE5LDE1LjkxVjkuMjFMMTMsMTIuNThWMTkuMjlMMTksMTUuOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZVNjYW4gPSBcIk0xNywyMlYyMEgyMFYxN0gyMlYyMC41QzIyLDIwLjg5IDIxLjg0LDIxLjI0IDIxLjU0LDIxLjU0QzIxLjI0LDIxLjg0IDIwLjg5LDIyIDIwLjUsMjJIMTdNNywyMkgzLjVDMy4xMSwyMiAyLjc2LDIxLjg0IDIuNDYsMjEuNTRDMi4xNiwyMS4yNCAyLDIwLjg5IDIsMjAuNVYxN0g0VjIwSDdWMjJNMTcsMkgyMC41QzIwLjg5LDIgMjEuMjQsMi4xNiAyMS41NCwyLjQ2QzIxLjg0LDIuNzYgMjIsMy4xMSAyMiwzLjVWN0gyMFY0SDE3VjJNNywyVjRINFY3SDJWMy41QzIsMy4xMSAyLjE2LDIuNzYgMi40NiwyLjQ2QzIuNzYsMi4xNiAzLjExLDIgMy41LDJIN00xMywxNy4yNUwxNywxNC45NVYxMC4zNkwxMywxMi42NlYxNy4yNU0xMiwxMC45MkwxNiw4LjYzTDEyLDYuMjhMOCw4LjYzTDEyLDEwLjkyTTcsMTQuOTVMMTEsMTcuMjVWMTIuNjZMNywxMC4zNlYxNC45NU0xOC4yMyw3LjU5QzE4LjczLDcuOTEgMTksOC4zNCAxOSw4LjkxVjE1LjIzQzE5LDE1LjggMTguNzMsMTYuMjMgMTguMjMsMTYuNTVMMTIuNzUsMTkuNzNDMTIuMjUsMjAuMDUgMTEuNzUsMjAuMDUgMTEuMjUsMTkuNzNMNS43NywxNi41NUM1LjI3LDE2LjIzIDUsMTUuOCA1LDE1LjIzVjguOTFDNSw4LjM0IDUuMjcsNy45MSA1Ljc3LDcuNTlMMTEuMjUsNC40MUMxMS41LDQuMjggMTEuNzUsNC4yMiAxMiw0LjIyQzEyLjI1LDQuMjIgMTIuNSw0LjI4IDEyLjc1LDQuNDFMMTguMjMsNy41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdWJlU2VuZCA9IFwiTTE2LDRMOSw4LjA0VjE1Ljk2TDE2LDIwTDIzLDE1Ljk2VjguMDRNMTYsNi4zMUwxOS44LDguNUwxNiwxMC42OUwxMi4yMSw4LjVNMCw3VjlIN1Y3TTExLDEwLjExTDE1LDEyLjQyVjE3LjExTDExLDE0LjgxTTIxLDEwLjExVjE0LjgxTDE3LDE3LjExVjEyLjQyTTIsMTFWMTNIN1YxMU00LDE1VjE3SDdWMTVcIjtcclxuZXhwb3J0IHZhciBtZGlDdWJlVW5mb2xkZWQgPSBcIk02LDlWNEgxM1Y5SDIzVjE2SDE4VjIxSDExVjE2SDFWOUg2TTE2LDE2SDEzVjE5SDE2VjE2TTgsOUgxMVY2SDhWOU02LDE0VjExSDNWMTRINk0xOCwxMVYxNEgyMVYxMUgxOE0xMywxMVYxNEgxNlYxMUgxM004LDExVjE0SDExVjExSDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwID0gXCJNMTguMzIsOEg1LjY3TDUuMjMsNEgxOC43N00zLDJMNSwyMC4yM0M1LjEzLDIxLjIzIDUuOTcsMjIgNywyMkgxN0MxOCwyMiAxOC44NywyMS4yMyAxOSwyMC4yM0wyMSwySDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMSwyMS43MkwxOS43MywyM0wxOC4yNywyMS41NEMxNy45MywyMS44MyAxNy41LDIyIDE3LDIySDdDNS45NywyMiA1LjEzLDIxLjIzIDUsMjAuMjNMMy41Myw2LjhMMSw0LjI3TTE4LjMyLDhMMTguNzcsNEg1LjgyTDMuODIsMkgyMUwxOS4yOSwxNy40N0w5LjgyLDhIMTguMzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwT2ZmT3V0bGluZSA9IFwiTTMuODMgMkw1LjgzIDRIMTguNzhMMTcuNSAxNS42NkwxOS4zIDE3LjVMMjEgMk0yLjI3IDNMMSA0LjI3TDMuNTMgNi44TDUgMjAuMjNDNS4xMyAyMS4yMyA1Ljk3IDIyIDcgMjJIMTdDMTcuNDcgMjIgMTcuOTEgMjEuODIgMTguMjYgMjEuNTRMMTkuNzMgMjNMMjEgMjEuNzNNNS43OCA5LjA2TDE2LjczIDIwSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwT3V0bGluZSA9IFwiTTMgMkw1IDIwLjIzQzUuMTMgMjEuMjMgNS45NyAyMiA3IDIySDE3QzE4IDIyIDE4Ljg3IDIxLjIzIDE5IDIwLjIzTDIxIDJIM001LjIyIDRIMTguNzhMMTcgMjBIN0w1LjIyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwV2F0ZXIgPSBcIk0xOC4zMiw4SDUuNjdMNS4yMyw0SDE4Ljc3TTEyLDE5QTMsMyAwIDAsMSA5LDE2QzksMTQgMTIsMTAuNiAxMiwxMC42QzEyLDEwLjYgMTUsMTQgMTUsMTZBMywzIDAgMCwxIDEyLDE5TTMsMkw1LDIwLjIzQzUuMTMsMjEuMjMgNS45NywyMiA3LDIySDE3QzE4LDIyIDE4Ljg3LDIxLjIzIDE5LDIwLjIzTDIxLDJIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXBib2FyZCA9IFwiTTE3IDJIN0M1LjkgMiA1IDIuOSA1IDRWMTlDNSAyMC4xMSA1LjkgMjEgNyAyMVYyMkg5VjIxSDE1VjIySDE3VjIxQzE4LjExIDIxIDE5IDIwLjExIDE5IDE5VjRDMTkgMi45IDE4LjExIDIgMTcgMk0xMCAxOEg4VjE1SDEwVjE4TTE2IDE4SDE0VjE1SDE2VjE4TTE3IDEySDdWOUgxN1YxMk0xNyA3SDdWNEgxN1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cGJvYXJkT3V0bGluZSA9IFwiTTcgMkM1LjkgMiA1IDIuOSA1IDRWMTlDNSAyMC4xMSA1LjkgMjEgNyAyMVYyMkg5VjIxSDE1VjIySDE3VjIxQzE4LjExIDIxIDE5IDIwLjExIDE5IDE5VjRDMTkgMi45IDE4LjExIDIgMTcgMkg3TTcgNEgxN1Y3SDdWNE03IDlIMTdWMTJIN1Y5TTcgMTRIMTFWMTlIN1YxNE0xMyAxNEgxN1YxOUgxM1YxNE04IDE1VjE4SDEwVjE1SDhNMTQgMTVWMThIMTZWMTVIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwY2FrZSA9IFwiTTEyLDEuNUEyLjUsMi41IDAgMCwxIDE0LjUsNEEyLjUsMi41IDAgMCwxIDEyLDYuNUEyLjUsMi41IDAgMCwxIDkuNSw0QTIuNSwyLjUgMCAwLDEgMTIsMS41TTE1Ljg3LDVDMTgsNSAyMCw3IDIwLDlDMjIuNyw5IDIyLjcsMTMgMjAsMTNINEMxLjMsMTMgMS4zLDkgNCw5QzQsNyA2LDUgOC4xMyw1QzguNTcsNi43MyAxMC4xNCw4IDEyLDhDMTMuODYsOCAxNS40Myw2LjczIDE1Ljg3LDVNNSwxNUg4TDksMjJIN0w1LDE1TTEwLDE1SDE0TDEzLDIySDExTDEwLDE1TTE2LDE1SDE5TDE3LDIySDE1TDE2LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cmxpbmcgPSBcIk0xMCwzVjVDMTIuNSw1IDEzLjksNS4wNSAxNC43Miw1LjQxQzE1LjI2LDUuNjUgMTUuNzMsNi4yMSAxNi4yNSw3SDVWOUgxOS42MkwxOC44OSw3LjU1QzE3Ljg2LDUuNSAxNi45Niw0LjIyIDE1LjUzLDMuNTlDMTQuMSwyLjk1IDEyLjUsMyAxMCwzTTYsMTFDMy43OCwxMSAyLDEyLjc4IDIsMTVWMThDMiwyMC4yMiAzLjc4LDIyIDYsMjJIMThDMjAuMjIsMjIgMjIsMjAuMjIgMjIsMThWMTVDMjIsMTIuNzggMjAuMjIsMTEgMTgsMTFINlpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeUJkdCA9IFwiTTE4LjA5LDEwLjVWOUg5LjU5VjQuNUExLjUsMS41IDAgMCwwIDguMDksM0ExLjUsMS41IDAgMCwwIDYuNTksNC41QTEuNSwxLjUgMCAwLDAgOC4wOSw2VjlINS4wOVYxMC41SDguMDlWMTYuN0M4LjA5LDE5LjA2IDEwLDIwLjk3IDEyLjM0LDIxQzE0LjY4LDIwLjk2IDE2LjU0LDE5LjA0IDE2LjUsMTYuN0MxNi41LDE1LjExIDE1Ljc1LDEzLjYxIDE0LjUsMTIuNjJDMTQuMjgsMTIuNDQgMTQuMDUsMTIuMjggMTMuOCwxMi4xNUMxMy41OCwxMi4wNSAxMy4zNCwxMiAxMy4xLDEyQzEyLjM5LDEyIDExLjc0LDEyLjM5IDExLjM5LDEzQzExLjIsMTMuMyAxMS4xLDEzLjY1IDExLjEsMTRDMTEuMTEsMTUuMSAxMiwxNiAxMy4xMSwxNkMxMy43MywxNiAxNC4zMSwxNS42OSAxNC42OSwxNS4yQzE0LjksMTUuNjcgMTUsMTYuMTggMTUsMTYuN0MxNS4wNCwxOC4yIDEzLjg2LDE5LjQ1IDEyLjM0LDE5LjVDMTAuODEsMTkuNSA5LjU4LDE4LjIzIDkuNTksMTYuN1YxMC41SDE4LjA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5QnJsID0gXCJNMTIsMTVIMTRDMTQsMTYuMDggMTUuMzcsMTcgMTcsMTdDMTguNjMsMTcgMjAsMTYuMDggMjAsMTVDMjAsMTMuOSAxOC45NiwxMy41IDE2Ljc2LDEyLjk3QzE0LjY0LDEyLjQ0IDEyLDExLjc4IDEyLDlDMTIsNy4yMSAxMy40Nyw1LjY5IDE1LjUsNS4xOFYzSDE4LjVWNS4xOEMyMC41Myw1LjY5IDIyLDcuMjEgMjIsOUgyMEMyMCw3LjkyIDE4LjYzLDcgMTcsN0MxNS4zNyw3IDE0LDcuOTIgMTQsOUMxNCwxMC4xIDE1LjA0LDEwLjUgMTcuMjQsMTEuMDNDMTkuMzYsMTEuNTYgMjIsMTIuMjIgMjIsMTVDMjIsMTYuNzkgMjAuNTMsMTguMzEgMTguNSwxOC44MlYyMUgxNS41VjE4LjgyQzEzLjQ3LDE4LjMxIDEyLDE2Ljc5IDEyLDE1TTIsM0g1LjVBNS41LDUuNSAwIDAsMSAxMSw4LjVDMTEsMTAuNjkgOS43MSwxMi41OSA3Ljg2LDEzLjQ3TDExLjY0LDIxSDkuNEw1Ljg4LDE0SDUuNUw0LDE0VjIxSDJWM001LjUsMTJBMy41LDMuNSAwIDAsMCA5LDguNUEzLjUsMy41IDAgMCwwIDUuNSw1SDRWMTJINS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5QnRjID0gXCJNNiw0SDhWMkgxMFY0SDEyVjJIMTRWNC4wM0MxNi4yNSw0LjI4IDE4LDYuMTggMTgsOC41QzE4LDkuOCAxNy40NSwxMSAxNi41NiwxMS44QzE3LjczLDEyLjYxIDE4LjUsMTMuOTcgMTguNSwxNS41QzE4LjUsMTggMTYuNSwyMCAxNCwyMFYyMkgxMlYyMEgxMFYyMkg4VjIwSDZMNi41LDE4SDhWNkg2VjRNMTAsMTNWMThIMTRBMi41LDIuNSAwIDAsMCAxNi41LDE1LjVBMi41LDIuNSAwIDAsMCAxNCwxM0gxME0xMCw2VjExSDEzLjVBMi41LDIuNSAwIDAsMCAxNiw4LjVBMi41LDIuNSAwIDAsMCAxMy41LDZIMTMuNUwxMCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5Q255ID0gXCJNMTEsMjFWMTZINlYxNEgxMVYxMy43MUwxMC4xNiwxMkg2VjEwSDkuMTlMNS43NywzSDhMMTIsMTEuMkwxNiwzSDE4LjIzTDE0LjgxLDEwSDE4VjEySDEzLjg0TDEzLDEzLjcxVjE0SDE4VjE2SDEzVjIxSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5RXRoID0gXCJNNiw1SDE4VjdINk03LDExSDE3VjEzSDdNNS41LDE3SDE4LjVWMTlINS41XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lFdXIgPSBcIk03LjA3LDExTDcsMTJMNy4wNywxM0gxNy4zNUwxNi41LDE1SDcuNjdDOC44LDE3LjM2IDExLjIxLDE5IDE0LDE5QzE2LjIzLDE5IDE4LjIyLDE3Ljk2IDE5LjUsMTYuMzNWMTkuMTJDMTgsMjAuMyAxNi4wNywyMSAxNCwyMUMxMC4wOCwyMSA2Ljc1LDE4LjUgNS41LDE1SDJMMywxM0g1LjA1TDUsMTJMNS4wNSwxMUgyTDMsOUg1LjVDNi43NSw1LjUgMTAuMDgsMyAxNCwzQzE2LjUsMyAxOC44LDQuMDQgMjAuNDMsNS43MUwxOS41Nyw3Ljc1QzE4LjI5LDYuMDggMTYuMjcsNSAxNCw1QzExLjIxLDUgOC44LDYuNjQgNy42Nyw5SDE5LjA0TDE4LjE5LDExSDcuMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lFdXJPZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDYgNy44OUM1LjgxIDguMjUgNS42NCA4LjYyIDUuNSA5SDNMMiAxMUg1LjA1TDUgMTJMNS4wNSAxM0gzTDIgMTVINS41QzYuNzUgMTguNSAxMC4wOCAyMSAxNCAyMUMxNS41IDIxIDE2Ljg5IDIwLjY1IDE4LjEyIDIwTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TTcgMTJMNy4wNyAxMUg5LjEyTDExLjEyIDEzSDcuMDdMNyAxMk0xNCAxOUMxMS4yMSAxOSA4LjggMTcuMzcgNy42NyAxNUgxMy4xMkwxNi42IDE4LjVDMTUuNzkgMTguODEgMTQuOTIgMTkgMTQgMTlNMTcgMTMuODFMMTYuMjEgMTNIMTcuMzVMMTcgMTMuODFNMTguMTkgMTFIMTQuMjFMMTIuMjEgOUgxOS4wNEwxOC4xOSAxMU05LjcgNi41TDguMjcgNS4wN0M5LjgzIDMuNzggMTEuODIgMyAxNCAzQzE2LjUgMyAxOC44IDQuMDUgMjAuNDMgNS43MkwxOS41NyA3Ljc2QzE4LjI5IDYuMDkgMTYuMjcgNSAxNCA1QzEyLjM4IDUgMTAuODkgNS41OCA5LjcgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5R2JwID0gXCJNNiwyMVYxOUMxMCwxNyA5LjUsMTMgOS41LDEzSDdWMTFIOS41QzguNSw2LjUgMTAsMyAxNCwzQzE2LDMgMTcsMy41IDE3LDMuNVY1LjVDMTEsMy41IDExLDggMTEuNSwxMUgxNlYxM0gxMS41QzExLjUsMTMgMTIsMTcgOS41LDE5SDE4VjIxSDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lJbHMgPSBcIk0yMiwxNkE1LDUgMCAwLDEgMTcsMjFIOFY5SDEwVjE5SDE3QTMsMyAwIDAsMCAyMCwxNlYzSDIyVjE2TTE2LDhWMTVIMTRWOEEzLDMgMCAwLDAgMTEsNUg0VjIxSDJWM0gxMUE1LDUgMCAwLDEgMTYsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeUluciA9IFwiTTgsM0gxOEwxNyw1SDEzLjc0QzE0LjIyLDUuNTggMTQuNTgsNi4yNiAxNC43OSw3SDE4TDE3LDlIMTVDMTQuNzUsMTEuNTcgMTIuNzQsMTMuNjMgMTAuMiwxMy45NlYxNEg5LjVMMTUuNSwyMUgxM0w3LDE0VjEySDkuNVYxMkMxMS4yNiwxMiAxMi43MiwxMC43IDEyLjk2LDlIN0w4LDdIMTIuNjZDMTIuMSw1LjgyIDEwLjksNSA5LjUsNUg3TDgsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeUpweSA9IFwiTTExLDIxVjE2SDZWMTRIMTFWMTMuNzFMMTAuMTYsMTJINlYxMEg5LjE5TDUuNzcsM0g4TDEyLDExLjJMMTYsM0gxOC4yM0wxNC44MSwxMEgxOFYxMkgxMy44NEwxMywxMy43MVYxNEgxOFYxNkgxM1YyMUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeUtydyA9IFwiTTIsM0g0TDUuMzMsOUg5LjMzTDEwLjY3LDNIMTMuMzNMMTQuNjcsOUgxOC42N0wyMCwzSDIyTDIwLjY3LDlIMjJWMTFIMjAuMjJMMTkuNzgsMTNIMjJWMTVIMTkuMzNMMTgsMjFIMTUuMzNMMTQsMTVIMTBMOC42NywyMUg2TDQuNjcsMTVIMlYxM0g0LjIyTDMuNzgsMTFIMlY5SDMuMzNMMiwzTTEzLjExLDExSDEwLjg5TDEwLjQ0LDEzSDEzLjU2TDEzLjExLDExTTcuMzMsMThMOCwxNUg2LjY3TDcuMzMsMThNOC44OSwxMUg1Ljc4TDYuMjIsMTNIOC40NEw4Ljg5LDExTTE2LjY3LDE4TDE3LjMzLDE1SDE2TDE2LjY3LDE4TTE4LjIyLDExSDE1LjExTDE1LjU2LDEzSDE3Ljc4TDE4LjIyLDExTTEyLDZMMTEuMzMsOUgxMi42N0wxMiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5S3p0ID0gXCJNNSwzSDE5VjVINVYzTTUsNkgxOVY4SDEzVjIxSDExVjhINVY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5TW50ID0gXCJNMTMgNVY4LjYyTDE3IDcuMTdWOS4yOUwxMyAxMC43NFYxMi41TDE3IDExLjA3VjEzLjJMMTMgMTQuNjVWMjFIMTFWMTUuMzhMNyAxNi44NFYxNC43MUwxMSAxMy4yNFYxMS40N0w3IDEyLjkyVjEwLjhMMTEgOS4zNVY1SDVWM0gxOVY1SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5TmduID0gXCJNNCw5SDZWM0g4TDExLjQyLDlIMTZWM0gxOFY5SDIwVjExSDE4VjEzSDIwVjE1SDE4VjIxSDE2TDEyLjU3LDE1SDhWMjFINlYxNUg0VjEzSDZWMTFINFY5TTgsOUg5LjEzTDgsNy4wM1Y5TTgsMTFWMTNIMTEuNDJMMTAuMjgsMTFIOE0xNiwxN1YxNUgxNC44NUwxNiwxN00xMi41NiwxMUwxMy43MSwxM0gxNlYxMUgxMi41NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeVBocCA9IFwiTTUsMlY2SDNWOEg1VjEwSDNWMTJINVYyMkg3VjE2SDEzQzE1LjcsMTYgMTguMTYsMTQuNDQgMTkuMzIsMTJIMjJWMTBIMTkuOTJDMjAuMDMsOS4zNCAyMC4wMyw4LjY2IDE5LjkyLDhIMjJWNkgxOS4zMkMxOC4xNiwzLjU2IDE1LjcsMiAxMywyTTcsNEgxM0MxNC41Nyw0IDE2LjA2LDQuNzQgMTcsNkg3VjRNMTMsMTRIN1YxMkgxN0MxNi4wNiwxMy4yNiAxNC41NywxNCAxMywxNE0xOCw5QzE4LDkuMzQgMTcuOTYsOS42NyAxNy45LDEwSDdWOEgxNy45QzE3Ljk2LDguMzMgMTgsOC42NiAxOCw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5UmlhbCA9IFwiTTExLDE3SDEzVjE5SDExVjE3TTE0LDE3SDE2VjE5SDE0VjE3TTksNEgxMVYxNUE0LDQgMCAwLDEgNywxOUg1QTMsMyAwIDAsMSAyLDE2VjEySDRWMTZBMSwxIDAgMCwwIDUsMTdIN0M4LjExLDE3IDksMTYuMTEgOSwxNVY0TTEyLDRIMTRWMTNIMTdWOEgxOVYxM0MxOSwxNC4xMSAxOC4xMSwxNSAxNywxNUgxNEMxMi44OSwxNSAxMiwxNC4xMSAxMiwxM1Y0TTIwLDEwSDIyVjE3QTMsMyAwIDAsMSAxOSwyMEgxN1YxOEgxOUExLDEgMCAwLDAgMjAsMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lSdWIgPSBcIk02LDEwSDdWM0gxNC41QzE3LDMgMTksNSAxOSw3LjVDMTksMTAgMTcsMTIgMTQuNSwxMkg5VjE0SDE1VjE2SDlWMjFIN1YxNkg2VjE0SDdWMTJINlYxME0xNC41LDVIOVYxMEgxNC41QTIuNSwyLjUgMCAwLDAgMTcsNy41QTIuNSwyLjUgMCAwLDAgMTQuNSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5U2lnbiA9IFwiTTQuNDEgM0wzIDQuNDFMNS42OSA3LjFDNC42MyA4LjQ2IDQgMTAuMTUgNCAxMkM0IDEzLjg1IDQuNjMgMTUuNTUgNS42OSAxNi45TDMgMTkuNTlMNC40MSAyMUw3LjEgMTguMzFDOC40NiAxOS4zNyAxMC4xNSAyMCAxMiAyMEMxMy44NSAyMCAxNS41NSAxOS4zNyAxNi45IDE4LjMxTDE5LjU5IDIxTDIxIDE5LjU5TDE4LjMxIDE2LjlDMTkuMzcgMTUuNTQgMjAgMTMuODUgMjAgMTJDMjAgMTAuMTUgMTkuMzcgOC40NSAxOC4zMSA3LjFMMjEgNC40MUwxOS41OSAzTDE2LjkgNS42OUMxNS41NCA0LjYzIDEzLjg1IDQgMTIgNEMxMC4xNSA0IDguNDUgNC42MyA3LjEgNS42OUw0LjQxIDNNMTIgNkMxNS4zMSA2IDE4IDguNjkgMTggMTJDMTggMTUuMzEgMTUuMzEgMTggMTIgMThDOC42OSAxOCA2IDE1LjMxIDYgMTJDNiA4LjY5IDguNjkgNiAxMiA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5VHJ5ID0gXCJNMTksMTJBOSw5IDAgMCwxIDEwLDIxSDhWMTIuNzdMNSwxMy44N1YxMS43NEw4LDEwLjY0VjguODdMNSw5Ljk2VjcuODRMOCw2Ljc0VjNIMTBWNkwxNSw0LjJWNi4zMkwxMCw4LjE0VjkuOTJMMTUsOC4xVjEwLjIzTDEwLDEyLjA1VjE5QTcsNyAwIDAsMCAxNywxMkgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeVR3ZCA9IFwiTTMsMTFIMjFWMTNIMTVWMTlIMjFWMjFIMTVBMiwyIDAgMCwxIDEzLDE5VjEzSDEwLjM1TDUuNzMsMjFMNCwyMEw4LjA0LDEzSDNWMTFNNSwzSDE5VjVINVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5VXNkID0gXCJNNywxNUg5QzksMTYuMDggMTAuMzcsMTcgMTIsMTdDMTMuNjMsMTcgMTUsMTYuMDggMTUsMTVDMTUsMTMuOSAxMy45NiwxMy41IDExLjc2LDEyLjk3QzkuNjQsMTIuNDQgNywxMS43OCA3LDlDNyw3LjIxIDguNDcsNS42OSAxMC41LDUuMThWM0gxMy41VjUuMThDMTUuNTMsNS42OSAxNyw3LjIxIDE3LDlIMTVDMTUsNy45MiAxMy42Myw3IDEyLDdDMTAuMzcsNyA5LDcuOTIgOSw5QzksMTAuMSAxMC4wNCwxMC41IDEyLjI0LDExLjAzQzE0LjM2LDExLjU2IDE3LDEyLjIyIDE3LDE1QzE3LDE2Ljc5IDE1LjUzLDE4LjMxIDEzLjUsMTguODJWMjFIMTAuNVYxOC44MkM4LjQ3LDE4LjMxIDcsMTYuNzkgNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeVVzZENpcmNsZSA9IFwiTTEyIDJBMTAgMTAgMCAxIDAgMjIgMTJBMTAgMTAgMCAwIDAgMTIgMk0xNSAxMEgxMVYxMUgxNEExIDEgMCAwIDEgMTUgMTJWMTVBMSAxIDAgMCAxIDE0IDE2SDEzVjE3SDExVjE2SDlWMTRIMTNWMTNIMTBBMSAxIDAgMCAxIDkgMTJWOUExIDEgMCAwIDEgMTAgOEgxMVY3SDEzVjhIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lVc2RDaXJjbGVPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0TTExLDE3VjE2SDlWMTRIMTNWMTNIMTBBMSwxIDAgMCwxIDksMTJWOUExLDEgMCAwLDEgMTAsOEgxMVY3SDEzVjhIMTVWMTBIMTFWMTFIMTRBMSwxIDAgMCwxIDE1LDEyVjE1QTEsMSAwIDAsMSAxNCwxNkgxM1YxN0gxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeVVzZE9mZiA9IFwiTTMsNC4yN0w0LjI4LDNMMjEsMTkuNzJMMTkuNzMsMjFMMTYuMDYsMTcuMzNDMTUuNDQsMTggMTQuNTQsMTguNTUgMTMuNSwxOC44MlYyMUgxMC41VjE4LjgyQzguNDcsMTguMzEgNywxNi43OSA3LDE1SDlDOSwxNi4wOCAxMC4zNywxNyAxMiwxN0MxMy4xMywxNyAxNC4xNCwxNi41NiAxNC42NSwxNS45MkwxMS42OCwxMi45NUM5LjU4LDEyLjQyIDcsMTEuNzUgNyw5QzcsOC43NyA3LDguNTUgNy4wNyw4LjM0TDMsNC4yN00xMC41LDUuMThWM0gxMy41VjUuMThDMTUuNTMsNS42OSAxNyw3LjIxIDE3LDlIMTVDMTUsNy45MiAxMy42Myw3IDEyLDdDMTEuNjMsNyAxMS4yOCw3LjA1IDEwLjk1LDcuMTNMOS40LDUuNThMMTAuNSw1LjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbnRBYyA9IFwiTTEyLjQzIDExQzEyLjI4IDEwLjg0IDEwIDcgNyA3UzIuMzIgMTAuMTggMiAxMVYxM0gxMS41N0MxMS43MiAxMy4xNiAxNCAxNyAxNyAxN1MyMS42OCAxMy44MiAyMiAxM1YxMUgxMi40M003IDlDOC4xNyA5IDkuMTggOS44NSAxMCAxMUg0LjMxQzQuNzggMTAuMTcgNS41NCA5IDcgOU0xNyAxNUMxNS44MyAxNSAxNC44MiAxNC4xNSAxNCAxM0gxOS42OUMxOS4yMiAxMy44MyAxOC40NiAxNSAxNyAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW50RGMgPSBcIk0yLDlWMTFIMjJWOUgyTTIsMTNWMTVIN1YxM0gyTTksMTNWMTVIMTVWMTNIOU0xNywxM1YxNUgyMlYxM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJzb3JEZWZhdWx0ID0gXCJNMTMuNjQsMjEuOTdDMTMuMTQsMjIuMjEgMTIuNTQsMjIgMTIuMzEsMjEuNUwxMC4xMywxNi43Nkw3LjYyLDE4Ljc4QzcuNDUsMTguOTIgNy4yNCwxOSA3LDE5QTEsMSAwIDAsMSA2LDE4VjNBMSwxIDAgMCwxIDcsMkM3LjI0LDIgNy40NywyLjA5IDcuNjQsMi4yM0w3LjY1LDIuMjJMMTkuMTQsMTEuODZDMTkuNTcsMTIuMjIgMTkuNjIsMTIuODUgMTkuMjcsMTMuMjdDMTkuMTIsMTMuNDUgMTguOTEsMTMuNTcgMTguNywxMy42MUwxNS41NCwxNC4yM0wxNy43NCwxOC45NkMxOCwxOS40NiAxNy43NiwyMC4wNSAxNy4yNiwyMC4yOEwxMy42NCwyMS45N1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJzb3JEZWZhdWx0Q2xpY2sgPSBcIk0xMC43Niw4LjY5QTAuNzYsMC43NiAwIDAsMCAxMCw5LjQ1VjIwLjlDMTAsMjEuMzIgMTAuMzQsMjEuNjYgMTAuNzYsMjEuNjZDMTAuOTUsMjEuNjYgMTEuMTEsMjEuNiAxMS4yNCwyMS41TDEzLjE1LDE5Ljk1TDE0LjgxLDIzLjU3QzE0Ljk0LDIzLjg0IDE1LjIxLDI0IDE1LjUsMjRDMTUuNjEsMjQgMTUuNzIsMjQgMTUuODMsMjMuOTJMMTguNTksMjIuNjRDMTguOTcsMjIuNDYgMTkuMTUsMjIgMTguOTUsMjEuNjNMMTcuMjgsMThMMTkuNjksMTcuNTVDMTkuODUsMTcuNSAyMCwxNy40MyAyMC4xMiwxNy4yOUMyMC4zOSwxNi45NyAyMC4zNSwxNi41IDIwLDE2LjIxTDExLjI2LDguODZMMTEuMjUsOC44N0MxMS4xMiw4Ljc2IDEwLjk1LDguNjkgMTAuNzYsOC42OU0xNSwxMFY4SDIwVjEwSDE1TTEzLjgzLDQuNzZMMTYuNjYsMS45M0wxOC4wNywzLjM0TDE1LjI0LDYuMTdMMTMuODMsNC43Nk0xMCwwSDEyVjVIMTBWME0zLjkzLDE0LjY2TDYuNzYsMTEuODNMOC4xNywxMy4yNEw1LjM0LDE2LjA3TDMuOTMsMTQuNjZNMy45MywzLjM0TDUuMzQsMS45M0w4LjE3LDQuNzZMNi43Niw2LjE3TDMuOTMsMy4zNE03LDEwSDJWOEg3VjEwXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Vyc29yRGVmYXVsdENsaWNrT3V0bGluZSA9IFwiTTExLjUsMTFMMTcuODgsMTYuMzdMMTcsMTYuNTVMMTYuMzYsMTYuNjdDMTUuNzMsMTYuOCAxNS4zNywxNy41IDE1LjY1LDE4LjA3TDE1LjkyLDE4LjY1TDE3LjI4LDIxLjU5TDE1Ljg2LDIyLjI1TDE0LjUsMTkuMzJMMTQuMjQsMTguNzRDMTMuOTcsMTguMTUgMTMuMjIsMTcuOTcgMTIuNzIsMTguMzhMMTIuMjEsMTguNzhMMTEuNSwxOS4zNVYxMU0xMC43Niw4LjY5QTAuNzYsMC43NiAwIDAsMCAxMCw5LjQ1VjIwLjlDMTAsMjEuMzIgMTAuMzQsMjEuNjYgMTAuNzYsMjEuNjZDMTAuOTUsMjEuNjYgMTEuMTEsMjEuNiAxMS4yNCwyMS41TDEzLjE1LDE5Ljk1TDE0LjgxLDIzLjU3QzE0Ljk0LDIzLjg0IDE1LjIxLDI0IDE1LjUsMjRDMTUuNjEsMjQgMTUuNzIsMjQgMTUuODMsMjMuOTJMMTguNTksMjIuNjRDMTguOTcsMjIuNDYgMTkuMTUsMjIgMTguOTUsMjEuNjNMMTcuMjgsMThMMTkuNjksMTcuNTVDMTkuODUsMTcuNSAyMCwxNy40MyAyMC4xMiwxNy4yOUMyMC4zOSwxNi45NyAyMC4zNSwxNi41IDIwLDE2LjIxTDExLjI2LDguODZMMTEuMjUsOC44N0MxMS4xMiw4Ljc2IDEwLjk1LDguNjkgMTAuNzYsOC42OU0xNSwxMFY4SDIwVjEwSDE1TTEzLjgzLDQuNzZMMTYuNjYsMS45M0wxOC4wNywzLjM0TDE1LjI0LDYuMTdMMTMuODMsNC43Nk0xMCwwSDEyVjVIMTBWME0zLjkzLDE0LjY2TDYuNzYsMTEuODNMOC4xNywxMy4yNEw1LjM0LDE2LjA3TDMuOTMsMTQuNjZNMy45MywzLjM0TDUuMzQsMS45M0w4LjE3LDQuNzZMNi43Niw2LjE3TDMuOTMsMy4zNE03LDEwSDJWOEg3VjEwXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Vyc29yRGVmYXVsdEdlc3R1cmUgPSBcIk0xNS41OSA4QzE1LjI2IDggMTUgOC4yNyAxNSA4LjZWMTcuNTdDMTUgMTcuOSAxNS4yNiAxOC4xNyAxNS41OSAxOC4xN0MxNS43NCAxOC4xNyAxNS44NiAxOC4xMiAxNS45NiAxOC4wNEwxNy40NSAxNi44M0wxOC43NCAxOS42NkMxOC44NCAxOS44OCAxOS4wNSAyMCAxOS4yNyAyMEMxOS4zNiAyMCAxOS40NCAyMCAxOS41MyAxOS45NEwyMS42NyAxOC45M0MyMS45NyAxOC43OSAyMi4xMSAxOC40MyAyMS45NSAxOC4xNEwyMC42NiAxNS4zTDIyLjUzIDE0Ljk0QzIyLjY1IDE0LjkxIDIyLjc3IDE0Ljg1IDIyLjg2IDE0Ljc0QzIzLjA3IDE0LjUgMjMuMDQgMTQuMTIgMjIuNzcgMTMuODlMMTYgOC4xM0MxNS44OCA4LjA1IDE1Ljc0IDggMTUuNTkgOE0xMi41IDYuNzNDMTIuNzIgNi42NiAxMy4xNyA3LjE5IDEzLjU5IDcuNzZMMTUgNi43MUMxNC44NyA2LjUgMTQuNjkgNi4yNSAxNC40NyA1Ljk2QzE0LjMxIDUuNzUgMTMuNTkgNC45MyAxMi42NiA0LjhDMTIuMDQgNC43MiAxMC44MSA1LjA2IDEwLjYgNi42MUMxMC40NyA3LjU4IDEwLjc2IDguMTkgMTEuMjEgOS4wOEMxMS40NiA5LjYgMTIuMDQgMTAuOTYgMTIuMTggMTEuNzhDMTIuMzMgMTIuNTkgMTIuMDYgMTMuMTYgMTEuNzQgMTMuMTJDMTEuNDQgMTMuMDggMTEuMiAxMi42NSAxMS4wMyAxMi40MUMxMC44OSAxMi4yMiAxMCAxMC44MiA5LjY3IDEwLjIzQzkuMjIgOS41IDguMDQgNy45NiA2LjQ0IDcuNzRDNC4zNSA3LjQ2IDMuNDQgOS4yIDMuMTggMTAuMzZMMSAxMC4wNlYxMS44OEwyLjkzIDEyLjE1QzIuNzUgMTUuNiA0LjUgMTYuODIgNS42NyAxN0M2LjkyIDE3LjE1IDguMDggMTYuMjggOC4yNCAxNS4wNkM4LjQxIDEzLjg0IDcuNTYgMTEuNSA0Ljk2IDEwLjY5QzUuMSAxMC4xNSA1LjIxIDkuNDMgNi4zNiA5LjU5QzcuMjYgOS43MSA4LjIxIDExLjI2IDguOTMgMTIuNDRDOS41OCAxMy41MyAxMC4xIDE0LjM5IDEwLjgzIDE0LjcyQzExLjQ1IDE1IDEyLjE2IDE0Ljk3IDEyLjczIDE0LjY1QzEzLjQyIDE0LjI2IDEzLjg2IDEzLjU1IDE0IDEyLjYzQzE0LjIyIDEwLjkgMTIuNyA4LjE3IDEyLjU3IDcuODRDMTIuNCA3LjQ2IDEyLjEyIDYuODIgMTIuNSA2LjczTTYuNSAxNC43OEM2LjQzIDE1LjExIDYuMSAxNS4yNSA1Ljg4IDE1LjIyQzUuMzggMTUuMTYgNC42NiAxNC41IDQuNzEgMTIuNTNDNi4xNyAxMy4xMyA2LjUzIDE0LjM1IDYuNSAxNC43OFpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJzb3JEZWZhdWx0R2VzdHVyZU91dGxpbmUgPSBcIk0xNi41IDEwLjU0TDIwLjM3IDEzLjgzTDE4LjUgMTQuMThMMTkuMjkgMTUuOTJMMjAuMjIgMTcuOTZMMTkuNzIgMTguMTlMMTguODEgMTYuMkwxOCAxNC40M0wxNi41IDE1LjY2VjEwLjU0TTE1LjU5IDhDMTUuMjYgOCAxNSA4LjI3IDE1IDguNlYxNy41N0MxNSAxNy45IDE1LjI2IDE4LjE3IDE1LjU5IDE4LjE3QzE1Ljc0IDE4LjE3IDE1Ljg2IDE4LjEyIDE1Ljk2IDE4LjA0TDE3LjQ1IDE2LjgzTDE4Ljc0IDE5LjY2QzE4Ljg0IDE5Ljg4IDE5LjA1IDIwIDE5LjI3IDIwQzE5LjM2IDIwIDE5LjQ0IDIwIDE5LjUzIDE5Ljk0TDIxLjY3IDE4LjkzQzIxLjk3IDE4Ljc5IDIyLjExIDE4LjQzIDIxLjk1IDE4LjE0TDIwLjY2IDE1LjNMMjIuNTMgMTQuOTRDMjIuNjUgMTQuOTEgMjIuNzcgMTQuODUgMjIuODYgMTQuNzRDMjMuMDcgMTQuNSAyMy4wNCAxNC4xMiAyMi43NyAxMy44OUwxNiA4LjEzQzE1Ljg4IDguMDUgMTUuNzQgOCAxNS41OSA4TTEyLjUgNi43M0MxMi43MiA2LjY2IDEzLjE3IDcuMTkgMTMuNTkgNy43NkwxNSA2LjcxQzE0Ljg3IDYuNSAxNC42OSA2LjI1IDE0LjQ3IDUuOTZDMTQuMzEgNS43NSAxMy41OSA0LjkzIDEyLjY2IDQuOEMxMi4wNCA0LjcyIDEwLjgxIDUuMDYgMTAuNiA2LjYxQzEwLjQ3IDcuNTggMTAuNzYgOC4xOSAxMS4yMSA5LjA4QzExLjQ2IDkuNiAxMi4wNCAxMC45NiAxMi4xOCAxMS43OEMxMi4zMyAxMi41OSAxMi4wNiAxMy4xNiAxMS43NCAxMy4xMkMxMS40NCAxMy4wOCAxMS4yIDEyLjY1IDExLjAzIDEyLjQxQzEwLjg5IDEyLjIyIDEwIDEwLjgyIDkuNjcgMTAuMjNDOS4yMiA5LjUgOC4wNCA3Ljk2IDYuNDQgNy43NEM0LjM1IDcuNDYgMy40NCA5LjIgMy4xOCAxMC4zNkwxIDEwLjA2VjExLjg4TDIuOTMgMTIuMTVDMi43NSAxNS42IDQuNSAxNi44MiA1LjY3IDE3QzYuOTIgMTcuMTUgOC4wOCAxNi4yOCA4LjI0IDE1LjA2QzguNDEgMTMuODQgNy41NiAxMS41IDQuOTYgMTAuNjlDNS4xIDEwLjE1IDUuMjEgOS40MyA2LjM2IDkuNTlDNy4yNiA5LjcxIDguMjEgMTEuMjYgOC45MyAxMi40NEM5LjU4IDEzLjUzIDEwLjEgMTQuMzkgMTAuODMgMTQuNzJDMTEuNDUgMTUgMTIuMTYgMTQuOTcgMTIuNzMgMTQuNjVDMTMuNDIgMTQuMjYgMTMuODYgMTMuNTUgMTQgMTIuNjNDMTQuMjIgMTAuOSAxMi43IDguMTcgMTIuNTcgNy44NEMxMi40IDcuNDYgMTIuMTIgNi44MiAxMi41IDYuNzNNNi41IDE0Ljc4QzYuNDMgMTUuMTEgNi4xIDE1LjI1IDUuODggMTUuMjJDNS4zOCAxNS4xNiA0LjY2IDE0LjUgNC43MSAxMi41M0M2LjE3IDEzLjEzIDYuNTMgMTQuMzUgNi41IDE0Ljc4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnNvckRlZmF1bHRPdXRsaW5lID0gXCJNMTAuMDcsMTQuMjdDMTAuNTcsMTQuMDMgMTEuMTYsMTQuMjUgMTEuNCwxNC43NUwxMy43LDE5Ljc0TDE1LjUsMTguODlMMTMuMTksMTMuOTFDMTIuOTUsMTMuNDEgMTMuMTcsMTIuODEgMTMuNjcsMTIuNThMMTMuOTUsMTIuNUwxNi4yNSwxMi4wNUw4LDUuMTJWMTUuOUw5LjgyLDE0LjQzTDEwLjA3LDE0LjI3TTEzLjY0LDIxLjk3QzEzLjE0LDIyLjIxIDEyLjU0LDIyIDEyLjMxLDIxLjVMMTAuMTMsMTYuNzZMNy42MiwxOC43OEM3LjQ1LDE4LjkyIDcuMjQsMTkgNywxOUExLDEgMCAwLDEgNiwxOFYzQTEsMSAwIDAsMSA3LDJDNy4yNCwyIDcuNDcsMi4wOSA3LjY0LDIuMjNMNy42NSwyLjIyTDE5LjE0LDExLjg2QzE5LjU3LDEyLjIyIDE5LjYyLDEyLjg1IDE5LjI3LDEzLjI3QzE5LjEyLDEzLjQ1IDE4LjkxLDEzLjU3IDE4LjcsMTMuNjFMMTUuNTQsMTQuMjNMMTcuNzQsMTguOTZDMTgsMTkuNDYgMTcuNzYsMjAuMDUgMTcuMjYsMjAuMjhMMTMuNjQsMjEuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Vyc29yTW92ZSA9IFwiTTEzLDZWMTFIMThWNy43NUwyMi4yNSwxMkwxOCwxNi4yNVYxM0gxM1YxOEgxNi4yNUwxMiwyMi4yNUw3Ljc1LDE4SDExVjEzSDZWMTYuMjVMMS43NSwxMkw2LDcuNzVWMTFIMTFWNkg3Ljc1TDEyLDEuNzVMMTYuMjUsNkgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJzb3JQb2ludGVyID0gXCJNMTMuNzUsMTAuMTlMMTQuMzgsMTAuMzJMMTguNTUsMTIuNEMxOS4yNSwxMi42MyAxOS43MSwxMy4zMiAxOS42NSwxNC4wNlYxNC4xOUwxOS42NSwxNC4zMkwxOC43NSwyMC40NEMxOC42OSwyMC44NyAxOC41LDIxLjI3IDE4LjE1LDIxLjU1QzE3Ljg0LDIxLjg1IDE3LjQzLDIyIDE3LDIySDEwLjEyQzkuNjMsMjIgOS4xOCwyMS44MiA4Ljg1LDIxLjQ3TDIuODYsMTUuNUwzLjc2LDE0LjVDNCwxNC4yNSA0LjM4LDE0LjExIDQuNzQsMTQuMTNINS4wM0w5LDE1VjQuNUEyLDIgMCAwLDEgMTEsMi41QTIsMiAwIDAsMSAxMyw0LjVWMTAuMTlIMTMuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Vyc29yVGV4dCA9IFwiTTEzLDE5QTEsMSAwIDAsMCAxNCwyMEgxNlYyMkgxMy41QzEyLjk1LDIyIDEyLDIxLjU1IDEyLDIxQzEyLDIxLjU1IDExLjA1LDIyIDEwLjUsMjJIOFYyMEgxMEExLDEgMCAwLDAgMTEsMTlWNUExLDEgMCAwLDAgMTAsNEg4VjJIMTAuNUMxMS4wNSwyIDEyLDIuNDUgMTIsM0MxMiwyLjQ1IDEyLjk1LDIgMTMuNSwySDE2VjRIMTRBMSwxIDAgMCwwIDEzLDVWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGFuY2VCYWxscm9vbSA9IFwiTTE0IDMuNUMxNCA0LjMzIDEzLjMzIDUgMTIuNSA1UzExIDQuMzMgMTEgMy41IDExLjY3IDIgMTIuNSAyIDE0IDIuNjcgMTQgMy41TTguNSA1QzcuNjcgNSA3IDUuNjcgNyA2LjVTNy42NyA4IDguNSA4IDEwIDcuMzMgMTAgNi41IDkuMzMgNSA4LjUgNU0xNCAxMkwxMy4yMiA5Ljc1SDE2LjE4TDE4LjM0IDguNjdDMTguNzEgOC41IDE4Ljg2IDguMDQgMTguNjcgNy42N0MxOC41IDcuMyAxOC4wNCA3LjE0IDE3LjY3IDcuMzNMMTYuODUgNy43NEwxNi4zNiA2LjlDMTYuMDcgNi4yNSAxNS4zNiA1Ljg4IDE0LjY2IDYuMDRMMTIuMTkgNi41N0MxMS41IDYuNzIgMTEgNy4zNSAxMSA4LjA3VjguNzdMOC41NyAxMC4zOUg4LjU4QzguNSAxMC40NiA4LjM5IDEwLjU1IDguMzMgMTAuNjdMNy40NCAxMi40NEw1LjY2IDEzLjMzQzUuMjkgMTMuNSA1LjE0IDEzLjk3IDUuMzMgMTQuMzRDNS40NiAxNC42IDUuNzMgMTQuNzUgNiAxNC43NUM2LjExIDE0Ljc1IDYuMjMgMTQuNzMgNi4zNCAxNC42N0w4LjU2IDEzLjU2TDkuNiAxMS41TDExIDEzQzEwIDE2IDMgMjAgMyAyMFM3IDIyIDEyIDIyIDIxIDIwIDIxIDIwIDE2IDE2IDE0IDEyTTE2Ljg1IDExLjA5TDE2LjUzIDExLjI1SDE1LjMzTDE1LjM5IDExLjQxQzE1LjkxIDEyLjQ0IDE2LjY3IDEzLjUgMTcuNSAxNC40NEwxNi45NyAxMS4wM0wxNi44NSAxMS4wOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYW5jZVBvbGUgPSBcIk0xMiAxVjJMMTEuMjMgMS4zNkw3Ljc2IDUuNUwxMSA3LjVWNS4xNkwxMC43OCA1TDEyIDMuNTZWMjNIMTRWMTMuMjRMMTUuOTMgMTEuMzFDMTguNSAxMS43MSAyMS4xMyAxMC4zNiAyMi42NiA4LjgzTDIxLjI0IDcuNDFDMjAuMSA4LjU2IDE3LjcgOS42MSAxNiA5LjI2TDE0IDcuMjRWMU0xNyA0QTIgMiAwIDAgMCAxNSA2QTIgMiAwIDAgMCAxNyA4QTIgMiAwIDAgMCAxOSA2QTIgMiAwIDAgMCAxNyA0TTExIDcuNzZMNy4xIDExLjY2QzUuMjUgMTMuNSA0LjMxIDE0Ljg1IDMuMDYgMTguMTZMNC45NCAxOC44NkM1Ljk0IDE2LjIgNi42NiAxNS4xNCA3Ljg3IDEzLjg0TDkuMjIgMTUuMTlMNC4yNyAyMC4xNEw1LjY5IDIxLjU2TDExIDE2LjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFNYXRyaXggPSBcIk0yIDJWMjJIMjJWMjBIMjBWMThIMjJWMTZIMjBWMTRIMjJWMTJIMThWMTBIMTZWMTJIMTRWMTBIMTJWOEg4VjEySDEyVjE2SDEwVjE4SDEyVjIwSDEwVjE4SDhWMTZINlYxNEg0VjEySDZWNkg0VjJIMk02IDZIOFYySDZWNk04IDE2SDEwVjE0SDhWMTZNMTggMTBIMjJWOEgxOFYxME0xOCA4VjRIMTZWNkgxNFY4SDE4TTE2IDRWMkgxNFY0SDE2TTE4IDRIMjBWMkgxOFY0TTIwIDRWNkgyMlY0SDIwTTEwIDJWNkgxMlYySDEwTTE0IDE0SDE2VjE2SDE4VjIwSDE0VjE0TTQgMThINlYyMEg0VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFNYXRyaXhFZGl0ID0gXCJNMjAgMTIuMUMxOS45IDEyLjEgMTkuNyAxMi4yIDE5LjYgMTIuM0wxOC42IDEzLjNMMjAuNyAxNS40TDIxLjcgMTQuNEMyMS45IDE0LjIgMjEuOSAxMy44IDIxLjcgMTMuNkwyMC40IDEyLjNDMjAuMyAxMi4yIDIwLjIgMTIuMSAyMCAxMi4xTTE4LjEgMTMuOUwxMiAxOS45VjIySDE0LjFMMjAuMiAxNS45TDE4LjEgMTMuOU04IDZINlYySDhWNk0xMCAxNkg4VjE0SDEwVjE2TTEyIDZIMTBWMkgxMlY2TTE2IDJWNEgxNFYySDE2TTIwIDRIMThWMkgyMFY0TTEwIDIwVjE4SDhWMTZINlYxNEg0VjEySDZWNkg0VjJIMlYyMkgxMFYyME02IDIwSDRWMThINlYyME0yMiAxMEgxOFY4SDIyVjEwTTIwIDZWNEgyMlY2SDIwTTE4IDRWOEgxNFY2SDE2VjRIMThNMTAgMThWMTZIMTJWMTJIOFY4SDEyVjEwSDE0VjEySDE2VjEwSDE4VjExLjFMMTUuMSAxNEgxNFYxNS4xTDExLjEgMThIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YU1hdHJpeE1pbnVzID0gXCJNMTYgMlY0SDE0VjJIMTZNMTIgMkgxMFY2SDEyVjJNMTAgMTRIOFYxNkgxMFYxNE0xNiA0VjZIMTRWOEgxOFY0SDE2TTggMkg2VjZIOFYyTTIwIDJIMThWNEgyMFYyTTEzLjggMjJIMlYySDRWNkg2VjEySDRWMTRINlYxNkg4VjE4SDEwVjIwSDEyVjE4SDEwVjE2SDEyVjEySDhWOEgxMlYxMEgxNFYxMkgxNlYxMEgxOFYxMkgyMlYxMy44QzIxLjEgMTMuMyAyMC4xIDEzIDE5IDEzQzE3LjggMTMgMTYuNiAxMy40IDE1LjcgMTRIMTRWMTUuN0MxMy40IDE2LjYgMTMgMTcuOCAxMyAxOUMxMyAyMC4xIDEzLjMgMjEuMSAxMy44IDIyTTYgMThINFYyMEg2VjE4TTIyIDhIMThWMTBIMjJWOE0yMiA2VjRIMjBWNkgyMk0xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhTWF0cml4UGx1cyA9IFwiTTE2IDJWNEgxNFYySDE2TTEyIDJIMTBWNkgxMlYyTTEwIDE0SDhWMTZIMTBWMTRNMTYgNFY2SDE0VjhIMThWNEgxNk04IDJINlY2SDhWMk0yMCAySDE4VjRIMjBWMk0xMy44IDIySDJWMkg0VjZINlYxMkg0VjE0SDZWMTZIOFYxOEgxMFYyMEgxMlYxOEgxMFYxNkgxMlYxMkg4VjhIMTJWMTBIMTRWMTJIMTZWMTBIMThWMTJIMjJWMTMuOEMyMS4xIDEzLjMgMjAuMSAxMyAxOSAxM0MxNy44IDEzIDE2LjYgMTMuNCAxNS43IDE0SDE0VjE1LjdDMTMuNCAxNi42IDEzIDE3LjggMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEgMTMuOCAyMk02IDE4SDRWMjBINlYxOE0yMiA4SDE4VjEwSDIyVjhNMjIgNlY0SDIwVjZIMjJNMTggMTVWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBWMTVIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YU1hdHJpeFJlbW92ZSA9IFwiTTE2IDJWNEgxNFYySDE2TTEyIDJIMTBWNkgxMlYyTTEwIDE0SDhWMTZIMTBWMTRNMTYgNFY2SDE0VjhIMThWNEgxNk04IDJINlY2SDhWMk0yMCAySDE4VjRIMjBWMk0xMy44IDIySDJWMkg0VjZINlYxMkg0VjE0SDZWMTZIOFYxOEgxMFYyMEgxMlYxOEgxMFYxNkgxMlYxMkg4VjhIMTJWMTBIMTRWMTJIMTZWMTBIMThWMTJIMjJWMTMuOEMyMS4xIDEzLjMgMjAuMSAxMyAxOSAxM0MxNy44IDEzIDE2LjYgMTMuNCAxNS43IDE0SDE0VjE1LjdDMTMuNCAxNi42IDEzIDE3LjggMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEgMTMuOCAyMk02IDE4SDRWMjBINlYxOE0yMiA4SDE4VjEwSDIyVjhNMjIgNlY0SDIwVjZIMjJNMjEuMSAxNS41TDE5IDE3LjZMMTYuOSAxNS41TDE1LjUgMTYuOUwxNy42IDE5TDE1LjUgMjEuMUwxNi45IDIyLjVMMTkgMjAuNEwyMS4xIDIyLjVMMjIuNSAyMS4xTDIwLjQgMTlMMjIuNSAxNi45TDIxLjEgMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhTWF0cml4U2NhbiA9IFwiTTIgMkg2VjBIMkMuOSAwIDAgLjkgMCAyVjZIMlYyTTIyIDBIMThWMkgyMlY2SDI0VjJDMjQgLjkgMjMuMSAwIDIyIDBNMiAxOEgwVjIyQzAgMjMuMSAuOSAyNCAyIDI0SDZWMjJIMlYxOE0yMiAyMkgxOFYyNEgyMkMyMy4xIDI0IDI0IDIzLjEgMjQgMjJWMThIMjJWMjJNOCA2VjRIMTBWNkg4TTEwIDE0VjEySDEyVjE0SDEwTTE2IDRIMThWNkgxNlY0TTE4IDZIMjBWOEgxOFY2TTE4IDE0SDIwVjE2SDE4VjE0TTIwIDEySDE2VjE4SDIwVjIwSDRWNEg2VjZIOFYxMEg2VjEySDhWMTRIMTBWMTZIMTJWMThIMTRWMTZIMTJWMTRIMTRWMTBIMTBWNkgxMlY0SDE0VjhIMTZWMTBIMjBWMTJNOCAxOFYxNkg2VjE4SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2UgPSBcIk0xMiwzQzcuNTgsMyA0LDQuNzkgNCw3QzQsOS4yMSA3LjU4LDExIDEyLDExQzE2LjQyLDExIDIwLDkuMjEgMjAsN0MyMCw0Ljc5IDE2LjQyLDMgMTIsM000LDlWMTJDNCwxNC4yMSA3LjU4LDE2IDEyLDE2QzE2LjQyLDE2IDIwLDE0LjIxIDIwLDEyVjlDMjAsMTEuMjEgMTYuNDIsMTMgMTIsMTNDNy41OCwxMyA0LDExLjIxIDQsOU00LDE0VjE3QzQsMTkuMjEgNy41OCwyMSAxMiwyMUMxNi40MiwyMSAyMCwxOS4yMSAyMCwxN1YxNEMyMCwxNi4yMSAxNi40MiwxOCAxMiwxOEM3LjU4LDE4IDQsMTYuMjEgNCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUFsZXJ0ID0gXCJNMTggN0MxOCA5LjIxIDE0LjQyIDExIDEwIDExUzIgOS4yMSAyIDcgNS41OCAzIDEwIDMgMTggNC43OSAxOCA3TTEwIDE4QzUuNTggMTggMiAxNi4yMSAyIDE0VjE3QzIgMTkuMjEgNS41OCAyMSAxMCAyMVMxOCAxOS4yMSAxOCAxN1YxNEMxOCAxNi4yMSAxNC40MiAxOCAxMCAxOE0xMCAxM0M1LjU4IDEzIDIgMTEuMjEgMiA5VjEyQzIgMTQuMjEgNS41OCAxNiAxMCAxNlMxOCAxNC4yMSAxOCAxMlY5QzE4IDExLjIxIDE0LjQyIDEzIDEwIDEzTTIwIDE3SDIyVjE1SDIwVjE3TTIwIDdWMTNIMjJWN0gyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUFsZXJ0T3V0bGluZSA9IFwiTTEwIDNDNS41OCAzIDIgNC43OSAyIDdWMTdDMiAxOS4yMSA1LjU5IDIxIDEwIDIxUzE4IDE5LjIxIDE4IDE3VjdDMTggNC43OSAxNC40MiAzIDEwIDNNMTYgMTdDMTYgMTcuNSAxMy44NyAxOSAxMCAxOVM0IDE3LjUgNCAxN1YxNC43N0M1LjYxIDE1LjU1IDcuNzIgMTYgMTAgMTZTMTQuMzkgMTUuNTUgMTYgMTQuNzdWMTdNMTYgMTIuNDVDMTQuNyAxMy40IDEyLjQyIDE0IDEwIDE0UzUuMyAxMy40IDQgMTIuNDVWOS42NEM1LjQ3IDEwLjQ3IDcuNjEgMTEgMTAgMTFTMTQuNTMgMTAuNDcgMTYgOS42NFYxMi40NU0xMCA5QzYuMTMgOSA0IDcuNSA0IDdTNi4xMyA1IDEwIDUgMTYgNi41IDE2IDcgMTMuODcgOSAxMCA5TTIyIDdWMTNIMjBWN0gyMk0yMCAxNUgyMlYxN0gyMFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUFycm93RG93biA9IFwiTTE5IDEzQzE2LjgzIDEzIDE0LjkzIDE0LjE2IDEzLjg4IDE1Ljg5QzEzLjI4IDE1Ljk2IDEyLjY1IDE2IDEyIDE2QzcuNTggMTYgNCAxNC4yMSA0IDEyVjlDNCAxMS4yMSA3LjU4IDEzIDEyIDEzUzIwIDExLjIxIDIwIDlWMTJDMjAgMTIuMzYgMTkuOSAxMi43MSAxOS43MiAxMy4wNUMxOS41IDEzIDE5LjI0IDEzIDE5IDEzTTEyIDExQzE2LjQyIDExIDIwIDkuMjEgMjAgN1MxNi40MiAzIDEyIDMgNCA0Ljc5IDQgNyA3LjU4IDExIDEyIDExTTEzLjEgMTcuOTZDMTIuNzQgMTggMTIuMzcgMTggMTIgMThDNy41OCAxOCA0IDE2LjIxIDQgMTRWMTdDNCAxOS4yMSA3LjU4IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlDMTMgMTguNjQgMTMuMDQgMTguMyAxMy4xIDE3Ljk2TTIwIDIwVjE2SDE4VjIwSDE2TDE5IDIzTDIyIDIwSDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dEb3duT3V0bGluZSA9IFwiTTIwIDEzLjA5VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuNDYgMjEgMTIuOSAyMSAxMy4zMyAyMC45NEMxMy4xMiAyMC4zMyAxMyAxOS42OCAxMyAxOUwxMyAxOC45NUMxMi42OCAxOSAxMi4zNSAxOSAxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNkMxMi42NSAxNiAxMy4yNyAxNS45NiAxMy44OCAxNS44OUMxNC45MyAxNC4xNiAxNi44MyAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOU0xOCAxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRTNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjQ1TTEyIDlDOC4xMyA5IDYgNy41IDYgN1M4LjEzIDUgMTIgNSAxOCA2LjUgMTggNyAxNS44NyA5IDEyIDlNMjIgMjBMMTkgMjNMMTYgMjBIMThWMTZIMjBWMjBIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VBcnJvd0xlZnQgPSBcIk00IDdDNCA0Ljc5IDcuNTggMyAxMiAzUzIwIDQuNzkgMjAgNyAxNi40MiAxMSAxMiAxMSA0IDkuMjEgNCA3TTE5LjcyIDEzLjA1QzE5LjkgMTIuNzEgMjAgMTIuMzYgMjAgMTJWOUMyMCAxMS4yMSAxNi40MiAxMyAxMiAxM1M0IDExLjIxIDQgOVYxMkM0IDE0LjIxIDcuNTggMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjggMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMjQgMTMgMTkuNSAxMyAxOS43MiAxMy4wNU0xMy4xIDE3Ljk2QzEyLjc0IDE4IDEyLjM3IDE4IDEyIDE4QzcuNTggMTggNCAxNi4yMSA0IDE0VjE3QzQgMTkuMjEgNy41OCAyMSAxMiAyMUMxMi40NiAyMSAxMi45IDIxIDEzLjMzIDIwLjk0QzEzLjEyIDIwLjMzIDEzIDE5LjY4IDEzIDE5QzEzIDE4LjY0IDEzLjA0IDE4LjMgMTMuMSAxNy45Nk0xOCAxOFYxNkwxNSAxOUwxOCAyMlYyMEgyMlYxOEgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUFycm93TGVmdE91dGxpbmUgPSBcIk0yMCAxMy4wOVY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlMMTMgMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjcgMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTIyIDE4VjIwSDE4VjIyTDE1IDE5TDE4IDE2VjE4SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dSaWdodCA9IFwiTTQgN0M0IDQuNzkgNy41OCAzIDEyIDNTMjAgNC43OSAyMCA3IDE2LjQyIDExIDEyIDExIDQgOS4yMSA0IDdNMTkuNzIgMTMuMDVDMTkuOSAxMi43MSAyMCAxMi4zNiAyMCAxMlY5QzIwIDExLjIxIDE2LjQyIDEzIDEyIDEzUzQgMTEuMjEgNCA5VjEyQzQgMTQuMjEgNy41OCAxNiAxMiAxNkMxMi42NSAxNiAxMy4yOCAxNS45NiAxMy44OCAxNS44OUMxNC45MyAxNC4xNiAxNi44MyAxMyAxOSAxM0MxOS4yNCAxMyAxOS41IDEzIDE5LjcyIDEzLjA1TTEzLjEgMTcuOTZDMTIuNzQgMTggMTIuMzcgMTggMTIgMThDNy41OCAxOCA0IDE2LjIxIDQgMTRWMTdDNCAxOS4yMSA3LjU4IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlDMTMgMTguNjQgMTMuMDQgMTguMyAxMy4xIDE3Ljk2TTIzIDE5TDIwIDE2VjE4SDE2VjIwSDIwVjIyTDIzIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dSaWdodE91dGxpbmUgPSBcIk0yMCAxMy4wOVY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlMMTMgMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjcgMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTIwIDIyVjIwSDE2VjE4SDIwVjE2TDIzIDE5TDIwIDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dVcCA9IFwiTTE5IDEzQzE2LjgzIDEzIDE0LjkzIDE0LjE2IDEzLjg4IDE1Ljg5QzEzLjI4IDE1Ljk2IDEyLjY1IDE2IDEyIDE2QzcuNTggMTYgNCAxNC4yMSA0IDEyVjlDNCAxMS4yMSA3LjU4IDEzIDEyIDEzUzIwIDExLjIxIDIwIDlWMTJDMjAgMTIuMzYgMTkuOSAxMi43MSAxOS43MiAxMy4wNUMxOS41IDEzIDE5LjI0IDEzIDE5IDEzTTEyIDExQzE2LjQyIDExIDIwIDkuMjEgMjAgN1MxNi40MiAzIDEyIDMgNCA0Ljc5IDQgNyA3LjU4IDExIDEyIDExTTEzLjEgMTcuOTZDMTIuNzQgMTggMTIuMzcgMTggMTIgMThDNy41OCAxOCA0IDE2LjIxIDQgMTRWMTdDNCAxOS4yMSA3LjU4IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlDMTMgMTguNjQgMTMuMDQgMTguMyAxMy4xIDE3Ljk2TTE5IDE1TDE2IDE4SDE4VjIySDIwVjE4SDIyTDE5IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dVcE91dGxpbmUgPSBcIk0yMCAxMy4wOVY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlMMTMgMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjcgMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTIyIDE4SDIwVjIySDE4VjE4SDE2TDE5IDE1TDIyIDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ2hlY2sgPSBcIk0xMiAzQzE2LjQyIDMgMjAgNC43OSAyMCA3UzE2LjQyIDExIDEyIDExIDQgOS4yMSA0IDcgNy41OCAzIDEyIDNNNCA5QzQgMTEuMjEgNy41OCAxMyAxMiAxM1MyMCAxMS4yMSAyMCA5VjEyLjA4TDE5IDEyQzE2LjQxIDEyIDE0LjIgMTMuNjQgMTMuMzYgMTUuOTRMMTIgMTZDNy41OCAxNiA0IDE0LjIxIDQgMTJWOU00IDE0QzQgMTYuMjEgNy41OCAxOCAxMiAxOEgxM0MxMyAxOS4wNSAxMy4yNyAyMC4wNCAxMy43NSAyMC45TDEyIDIxQzcuNTggMjEgNCAxOS4yMSA0IDE3VjE0TTE4IDIxLjA4TDE1LjI1IDE4LjA4TDE2LjQxIDE2LjkyTDE4IDE4LjVMMjEuNTkgMTQuOTJMMjIuNzUgMTYuMzNMMTggMjEuMDhcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUNoZWNrT3V0bGluZSA9IFwiTTIwIDEzLjA5VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuNDYgMjEgMTIuOSAyMSAxMy4zMyAyMC45NEMxMy4xMiAyMC4zMyAxMyAxOS42OCAxMyAxOUwxMyAxOC45NUMxMi42OCAxOSAxMi4zNSAxOSAxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNkMxMi42NSAxNiAxMy4yNyAxNS45NiAxMy44OCAxNS44OUMxNC45MyAxNC4xNiAxNi44MyAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOU0xOCAxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRTNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjQ1TTEyIDlDOC4xMyA5IDYgNy41IDYgN1M4LjEzIDUgMTIgNSAxOCA2LjUgMTggNyAxNS44NyA5IDEyIDlNMjIuNSAxNy4yNUwxNy43NSAyMkwxNSAxOUwxNi4xNiAxNy44NEwxNy43NSAxOS40M0wyMS4zNCAxNS44NEwyMi41IDE3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ2xvY2sgPSBcIk0xNi41IDE2LjI1TDE5LjM2IDE3Ljk0TDE4LjYxIDE5LjE2TDE1IDE3VjEySDE2LjVWMTYuMjVNMjMgMTZDMjMgMTkuODcgMTkuODcgMjMgMTYgMjNDMTMuNjEgMjMgMTEuNSAyMS44IDEwLjI1IDIwQzYuMTggMTkuNzkgMyAxOC4wOCAzIDE2VjEzQzMgMTQuODggNS41OCAxNi40NCA5LjA2IDE2Ljg4QzkuMDMgMTYuNTkgOSAxNi4zIDkgMTZDOSAxNS42MiA5LjA0IDE1LjI1IDkuMSAxNC44OEM1LjYgMTQuNDUgMyAxMi44OCAzIDExVjhDMyAxMC4wOSA2LjIgMTEuOCAxMC4yNyAxMkMxMC44NyAxMS4xNCAxMS42NCAxMC40NCAxMi41MyA5LjkzQzEyLjA0IDkuOTcgMTEuNSAxMCAxMSAxMEM2LjU4IDEwIDMgOC4yMSAzIDZTNi41OCAyIDExIDIgMTkgMy43OSAxOSA2QzE5IDcuMiAxNy45MyA4LjI4IDE2LjI1IDlDMTcgOS4wNCAxNy43NSA5LjE5IDE4LjQ0IDkuNDVDMTguNzkgOSAxOSA4LjUgMTkgOFY5LjY4QzIxLjM2IDEwLjgxIDIzIDEzLjIxIDIzIDE2TTIxIDE2QzIxIDEzLjI0IDE4Ljc2IDExIDE2IDExUzExIDEzLjI0IDExIDE2IDEzLjI0IDIxIDE2IDIxIDIxIDE4Ljc2IDIxIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ2xvY2tPdXRsaW5lID0gXCJNMTYuNSAxNi4yNUwxOS4zNiAxNy45NEwxOC42MSAxOS4xNkwxNSAxN1YxMkgxNi41VjE2LjI1TTIzIDE2QzIzIDE5Ljg3IDE5Ljg3IDIzIDE2IDIzQzEzLjYxIDIzIDExLjUgMjEuOCAxMC4yNSAyMEM2LjE5IDE5Ljc5IDMgMTguMDggMyAxNlY2QzMgMy43OSA2LjU4IDIgMTEgMlMxOSAzLjc5IDE5IDZWOS42OEMyMS4zNiAxMC44MSAyMyAxMy4yMSAyMyAxNk0xNyA5LjA4VjguNjRDMTYuNzcgOC43NyAxNi41IDguOSAxNi4yNCA5QzE2LjUgOSAxNi43NSA5LjA0IDE3IDkuMDhNNSA2QzUgNi41IDcuMTMgOCAxMSA4UzE3IDYuNSAxNyA2IDE0Ljg3IDQgMTEgNCA1IDUuNSA1IDZNNSAxMS40NUM2LjA3IDEyLjIzIDcuOCAxMi43NiA5LjcyIDEyLjkzQzEwLjMzIDExLjY3IDExLjMyIDEwLjYyIDEyLjU0IDkuOTJDMTIuMDQgOS45NyAxMS41MyAxMCAxMSAxMEM4LjYxIDEwIDYuNDcgOS40NyA1IDguNjRWMTEuNDVNOS4yNiAxNy44N0M5LjEgMTcuMjcgOSAxNi42NSA5IDE2QzkgMTUuNjEgOS4wNCAxNS4yMyA5LjEgMTQuODZDNy41NiAxNC42OSA2LjE1IDE0LjMzIDUgMTMuNzdWMTZDNSAxNi40MiA2LjUgMTcuNSA5LjI2IDE3Ljg3TTIxIDE2QzIxIDEzLjI0IDE4Ljc2IDExIDE2IDExUzExIDEzLjI0IDExIDE2IDEzLjI0IDIxIDE2IDIxIDIxIDE4Ljc2IDIxIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ29nID0gXCJNNCA3QzQgNC43OSA3LjU4IDMgMTIgM1MyMCA0Ljc5IDIwIDcgMTYuNDIgMTEgMTIgMTEgNCA5LjIxIDQgN00xMi4wOCAxOEwxMiAxOEM3LjU4IDE4IDQgMTYuMjEgNCAxNFYxN0M0IDE5LjIxIDcuNTggMjEgMTIgMjFDMTIuMSAyMSAxMi4yIDIxIDEyLjI5IDIxQzEyLjExIDIwLjM2IDEyIDE5LjY5IDEyIDE5QzEyIDE4LjY2IDEyLjAzIDE4LjMzIDEyLjA4IDE4TTIwIDEyLjA4QzIwIDEyLjA1IDIwIDEyLjAzIDIwIDEyVjlDMjAgMTEuMjEgMTYuNDIgMTMgMTIgMTNTNCAxMS4yMSA0IDlWMTJDNCAxNC4yMSA3LjU4IDE2IDEyIDE2QzEyLjIzIDE2IDEyLjQ2IDE2IDEyLjY5IDE2QzEzLjgyIDEzLjYzIDE2LjIyIDEyIDE5IDEyQzE5LjM0IDEyIDE5LjY3IDEyLjAzIDIwIDEyLjA4TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ29nT3V0bGluZSA9IFwiTTEyIDE0QzkuNTggMTQgNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjA4QzE4LjMzIDEyLjAzIDE4LjY2IDEyIDE5IDEyQzE5LjM0IDEyIDE5LjY3IDEyLjAzIDIwIDEyLjA4VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuMSAyMSAxMi4yIDIxIDEyLjI5IDIxQzEyLjExIDIwLjM2IDEyIDE5LjY5IDEyIDE5QzguMTMgMTkgNiAxNy41IDYgMTdWMTQuNzdDNy42MSAxNS41NSA5LjcyIDE2IDEyIDE2QzEyLjI0IDE2IDEyLjQ3IDE2IDEyLjcgMTUuOTdDMTMuMSAxNS4xNCAxMy42NSAxNC40MSAxNC4zMiAxMy44MUMxMy41OCAxMy45MyAxMi44IDE0IDEyIDE0TTEyIDVDMTUuODcgNSAxOCA2LjUgMTggN1MxNS44NyA5IDEyIDkgNiA3LjUgNiA3IDguMTMgNSAxMiA1TTIyLjcgMTkuNlYxOC42TDIzLjggMTcuOEMyMy45IDE3LjcgMjQgMTcuNiAyMy45IDE3LjVMMjIuOSAxNS44QzIyLjkgMTUuNyAyMi43IDE1LjcgMjIuNiAxNS43TDIxLjQgMTYuMkMyMS4xIDE2IDIwLjggMTUuOCAyMC41IDE1LjdMMjAuMyAxNC40QzIwLjMgMTQuMyAyMC4yIDE0LjIgMjAuMSAxNC4ySDE4LjFDMTcuOSAxNC4yIDE3LjggMTQuMyAxNy44IDE0LjRMMTcuNiAxNS43QzE3LjMgMTUuOSAxNy4xIDE2IDE2LjggMTYuMkwxNS42IDE1LjdDMTUuNSAxNS43IDE1LjQgMTUuNyAxNS4zIDE1LjhMMTQuMyAxNy41QzE0LjMgMTcuNiAxNC4zIDE3LjcgMTQuNCAxNy44TDE1LjUgMTguNlYxOS42TDE0LjQgMjAuNEMxNC4zIDIwLjUgMTQuMiAyMC42IDE0LjMgMjAuN0wxNS4zIDIyLjRDMTUuNCAyMi41IDE1LjUgMjIuNSAxNS42IDIyLjVMMTYuOCAyMkMxNyAyMi4yIDE3LjMgMjIuNCAxNy42IDIyLjVMMTcuOCAyMy44QzE3LjkgMjMuOSAxOCAyNCAxOC4xIDI0SDIwLjFDMjAuMiAyNCAyMC4zIDIzLjkgMjAuMyAyMy44TDIwLjUgMjIuNUMyMC44IDIyLjMgMjEgMjIuMiAyMS4zIDIyTDIyLjUgMjIuNEMyMi42IDIyLjQgMjIuNyAyMi40IDIyLjggMjIuM0wyMy44IDIwLjZDMjMuOSAyMC41IDIzLjkgMjAuNCAyMy44IDIwLjRMMjIuNyAxOS42TTE5IDIwLjVDMTguMiAyMC41IDE3LjUgMTkuOCAxNy41IDE5UzE4LjIgMTcuNSAxOSAxNy41IDIwLjUgMTguMiAyMC41IDE5IDE5LjggMjAuNSAxOSAyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlRWRpdCA9IFwiTTQsMTRWMTdDNCwxOSA3LjA1LDIwLjcyIDExLDIxVjE4LjExTDExLjEzLDE4QzcuMTIsMTcuNzYgNCwxNi4wNiA0LDE0TTEyLDEzQzcuNTgsMTMgNCwxMS4yMSA0LDlWMTJDNCwxNC4yMSA3LjU4LDE2IDEyLDE2QzEyLjM5LDE2IDEyLjc3LDE2IDEzLjE2LDE2TDE3LDEyLjEyQzE1LjQsMTIuNzIgMTMuNzEsMTMgMTIsMTNNMTIsM0M3LjU4LDMgNCw0Ljc5IDQsN0M0LDkuMjEgNy41OCwxMSAxMiwxMUMxNi40MiwxMSAyMCw5LjIxIDIwLDdDMjAsNC43OSAxNi40MiwzIDEyLDNNMjEsMTEuMTNDMjAuODUsMTEuMTMgMjAuNzEsMTEuMTkgMjAuNjEsMTEuM0wxOS42MSwxMi4zTDIxLjY2LDE0LjNMMjIuNjYsMTMuM0MyMi44NywxMy4xIDIyLjg4LDEyLjc2IDIyLjY2LDEyLjUzTDIxLjQyLDExLjNDMjEuMzIsMTEuMTkgMjEuMTgsMTEuMTMgMjEuMDQsMTEuMTNNMTkuMDQsMTIuODhMMTMsMTguOTRWMjFIMTUuMDZMMjEuMTIsMTQuOTNMMTkuMDQsMTIuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VFZGl0T3V0bGluZSA9IFwiTTEyIDE2QzEyLjggMTYgMTMuNTcgMTUuOTMgMTQuMzEgMTUuODJMMTcuMjIgMTIuOTFDMTUuODkgMTMuNTkgMTQgMTQgMTIgMTRDOS41OCAxNCA3LjMgMTMuNCA2IDEyLjQ1VjkuNjRDNy40NyAxMC40NyA5LjYxIDExIDEyIDExUzE2LjUzIDEwLjQ3IDE4IDkuNjRWMTIuMTNMMTkuMzkgMTAuNzRDMTkuNTcgMTAuNTYgMTkuNzggMTAuNDIgMjAgMTAuM1Y3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4wNCA3LjA2IDIwLjcyIDExIDIwLjk3VjE5LjEzTDExLjE3IDE4Ljk2QzcuODQgMTguNzYgNiAxNy40NiA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNk0xMiA1QzE1Ljg3IDUgMTggNi41IDE4IDdTMTUuODcgOSAxMiA5IDYgNy41IDYgNyA4LjEzIDUgMTIgNU0xOS4xMyAxMy44M0wyMS4xNyAxNS44N0wxNS4wNCAyMkgxM1YxOS45NkwxOS4xMyAxMy44M00yMi44NSAxNC4xOUwyMS44NyAxNS4xN0wxOS44MyAxMy4xM0wyMC44MSAxMi4xNUMyMSAxMS45NSAyMS4zMyAxMS45NSAyMS41MyAxMi4xNUwyMi44NSAxMy40N0MyMy4wNSAxMy42NyAyMy4wNSAxNCAyMi44NSAxNC4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUV4cG9ydCA9IFwiTTEyLDNDNy41OCwzIDQsNC43OSA0LDdDNCw5LjIxIDcuNTgsMTEgMTIsMTFDMTIuNSwxMSAxMywxMC45NyAxMy41LDEwLjkyVjkuNUgxNi4zOUwxNS4zOSw4LjVMMTguOSw1QzE3LjUsMy44IDE0Ljk0LDMgMTIsM00xOC45Miw3LjA4TDE3LjUsOC41TDIwLDExSDE1VjEzSDIwTDE3LjUsMTUuNUwxOC45MiwxNi45MkwyMy44NCwxMk00LDlWMTJDNCwxNC4yMSA3LjU4LDE2IDEyLDE2QzEzLjE3LDE2IDE0LjI2LDE1Ljg1IDE1LjI1LDE1LjYzTDE2LjM4LDE0LjVIMTMuNVYxMi45MkMxMywxMi45NyAxMi41LDEzIDEyLDEzQzcuNTgsMTMgNCwxMS4yMSA0LDlNNCwxNFYxN0M0LDE5LjIxIDcuNTgsMjEgMTIsMjFDMTQuOTQsMjEgMTcuNSwyMC4yIDE4LjksMTlMMTcsMTcuMUMxNS42MSwxNy42NiAxMy45LDE4IDEyLDE4QzcuNTgsMTggNCwxNi4yMSA0LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlRXhwb3J0T3V0bGluZSA9IFwiTTE3Ljg2IDE4TDE4LjkgMTlDMTcuNSAyMC4yIDE0Ljk0IDIxIDEyIDIxQzcuNTkgMjEgNCAxOS4yMSA0IDE3VjdDNCA0Ljc5IDcuNTggMyAxMiAzQzE0Ljk1IDMgMTcuNSAzLjggMTguOSA1TDE3Ljg2IDZMMTcuNSA2LjRDMTYuNjUgNS43NyAxNC43OCA1IDEyIDVDOC4xMyA1IDYgNi41IDYgN1M4LjEzIDkgMTIgOUMxMy4zNyA5IDE0LjUgOC44MSAxNS40MiA4LjU0TDE2LjM4IDkuNUgxMy41VjEwLjkyQzEzIDEwLjk3IDEyLjUgMTEgMTIgMTFDOS42MSAxMSA3LjQ3IDEwLjQ3IDYgOS42NFYxMi40NUM3LjMgMTMuNCA5LjU4IDE0IDEyIDE0QzEyLjUgMTQgMTMgMTMuOTcgMTMuNSAxMy45MlYxNC41SDE2LjM4TDE1LjM4IDE1LjVMMTUuNSAxNS42MUMxNC40MSAxNS44NiAxMy4yNCAxNiAxMiAxNkM5LjcyIDE2IDcuNjEgMTUuNTUgNiAxNC43N1YxN0M2IDE3LjUgOC4xMyAxOSAxMiAxOUMxNC43OCAxOSAxNi42NSAxOC4yMyAxNy41IDE3LjYxTDE3Ljg2IDE4TTE4LjkyIDcuMDhMMTcuNSA4LjVMMjAgMTFIMTVWMTNIMjBMMTcuNSAxNS41TDE4LjkyIDE2LjkyTDIzLjg0IDEyTDE4LjkyIDcuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VJbXBvcnQgPSBcIk0xMiwzQzguNTksMyA1LjY5LDQuMDcgNC41NCw1LjU3TDkuNzksMTAuODJDMTAuNSwxMC45MyAxMS4yMiwxMSAxMiwxMUMxNi40MiwxMSAyMCw5LjIxIDIwLDdDMjAsNC43OSAxNi40MiwzIDEyLDNNMy45Miw3LjA4TDIuNSw4LjVMNSwxMUgwVjEzSDVMMi41LDE1LjVMMy45MiwxNi45Mkw4Ljg0LDEyTTIwLDlDMjAsMTEuMjEgMTYuNDIsMTMgMTIsMTNDMTEuMzQsMTMgMTAuNywxMi45NSAxMC4wOSwxMi44N0w3LjYyLDE1LjM0QzguODgsMTUuNzUgMTAuMzgsMTYgMTIsMTZDMTYuNDIsMTYgMjAsMTQuMjEgMjAsMTJNMjAsMTRDMjAsMTYuMjEgMTYuNDIsMTggMTIsMThDOS43MiwxOCA3LjY3LDE3LjUgNi4yMSwxNi43NUw0LjUzLDE4LjQzQzUuNjgsMTkuOTMgOC41OSwyMSAxMiwyMUMxNi40MiwyMSAyMCwxOS4yMSAyMCwxN1wiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlSW1wb3J0T3V0bGluZSA9IFwiTTguODQgMTJMMy45MiAxNi45MkwyLjUgMTUuNUw1IDEzSDBWMTFINUwyLjUgOC41TDMuOTIgNy4wOEw4Ljg0IDEyTTEyIDNDOC41OSAzIDUuNjggNC4wNyA0LjUzIDUuNTdMNSA2TDYuMDMgNy4wN0M2IDcuMDUgNiA3IDYgN0M2IDYuNSA4LjEzIDUgMTIgNVMxOCA2LjUgMTggNyAxNS44NyA5IDEyIDlDOS4zOCA5IDcuNTggOC4zMSA2LjY4IDcuNzJMOS44IDEwLjg0QzEwLjUgMTAuOTQgMTEuMjQgMTEgMTIgMTFDMTQuMzkgMTEgMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRDMTEuMDQgMTQgMTAuMSAxMy45IDkuMjQgMTMuNzNMNy41OSAxNS4zN0M4LjkxIDE1Ljc3IDEwLjQxIDE2IDEyIDE2QzE0LjI4IDE2IDE2LjM5IDE1LjU1IDE4IDE0Ljc3VjE3QzE4IDE3LjUgMTUuODcgMTkgMTIgMTlTNiAxNy41IDYgMTdWMTYuOTZMNSAxOEw0LjU0IDE4LjQzQzUuNjkgMTkuOTMgOC42IDIxIDEyIDIxQzE2LjQxIDIxIDIwIDE5LjIxIDIwIDE3VjdDMjAgNC43OSAxNi40MiAzIDEyIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VMb2NrID0gXCJNMTEsM0MxNS40MiwzIDE5LDQuNzkgMTksN0MxOSw5LjIxIDE1LjQyLDExIDExLDExQzYuNTgsMTEgMyw5LjIxIDMsN0MzLDQuNzkgNi41OCwzIDExLDNNMTksMTIuMDNDMTcuMTEsMTIuMjQgMTUuNTcsMTMuNjIgMTUuMTMsMTUuNDNDMTMuOTIsMTUuNzkgMTIuNSwxNiAxMSwxNkM2LjU4LDE2IDMsMTQuMjEgMywxMlY5QzMsMTEuMjEgNi41OCwxMyAxMSwxM0MxNS40MiwxMyAxOSwxMS4yMSAxOSw5VjEyLjAzTTE0LDE3LjcxVjIwLjcxQzEzLjA3LDIwLjkgMTIuMDYsMjEgMTEsMjFDNi41OCwyMSAzLDE5LjIxIDMsMTdWMTRDMywxNi4yMSA2LjU4LDE4IDExLDE4QzEyLjA2LDE4IDEzLjA3LDE3LjkgMTQsMTcuNzFNMTkuNSwxNEEyLjUsMi41IDAgMCwxIDIyLDE2LjVWMTdBMSwxIDAgMCwxIDIzLDE4VjIyQTEsMSAwIDAsMSAyMiwyM0gxN0ExLDEgMCAwLDEgMTYsMjJWMThBMSwxIDAgMCwxIDE3LDE3VjE2LjVBMi41LDIuNSAwIDAsMSAxOS41LDE0TTE5LjUsMTVBMS41LDEuNSAwIDAsMCAxOCwxNi41VjE3SDIxVjE2LjVBMS41LDEuNSAwIDAsMCAxOS41LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlTG9ja091dGxpbmUgPSBcIk02IDEyLjQ1VjkuNjRDNy40NyAxMC40NyA5LjYxIDExIDEyIDExUzE2LjUzIDEwLjQ3IDE4IDkuNjRWMTEuMDVDMTguMTcgMTEuMDMgMTguMzMgMTEgMTguNSAxMUMxOS4wMyAxMSAxOS41MyAxMS4xIDIwIDExLjI2VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuMzQgMjEgMTIuNjcgMjEgMTMgMjAuOTdWMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNDEgMTYgMTIuODEgMTUuOTcgMTMuMjEgMTUuOTRDMTMuNCAxNS40NiAxMy42OCAxNS4wMyAxNC4wNyAxNC43QzE0LjEzIDE0LjM5IDE0LjIzIDE0LjA5IDE0LjM0IDEzLjhDMTMuNiAxMy45MyAxMi44MSAxNCAxMiAxNEM5LjU4IDE0IDcuMyAxMy40IDYgMTIuNDVNMTIgNUMxNS44NyA1IDE4IDYuNSAxOCA3UzE1Ljg3IDkgMTIgOSA2IDcuNSA2IDcgOC4xMyA1IDEyIDVNMjEgMTZWMTUuNUMyMSAxNC4xMiAxOS44OCAxMyAxOC41IDEzUzE2IDE0LjEyIDE2IDE1LjVWMTZDMTUuNDUgMTYgMTUgMTYuNDUgMTUgMTdWMjFDMTUgMjEuNTUgMTUuNDUgMjIgMTYgMjJIMjFDMjEuNTUgMjIgMjIgMjEuNTUgMjIgMjFWMTdDMjIgMTYuNDUgMjEuNTUgMTYgMjEgMTZNMjAgMTZIMTdWMTUuNUMxNyAxNC42NyAxNy42NyAxNCAxOC41IDE0UzIwIDE0LjY3IDIwIDE1LjVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VNYXJrZXIgPSBcIk0xOC41IDEyQzE2LjYgMTIgMTUgMTMuNiAxNSAxNS41QzE1IDE4LjEgMTguNSAyMiAxOC41IDIyUzIyIDE4LjEgMjIgMTUuNUMyMiAxMy42IDIwLjQgMTIgMTguNSAxMk0xOC41IDE2LjhDMTcuOCAxNi44IDE3LjMgMTYuMiAxNy4zIDE1LjZDMTcuMyAxNC45IDE3LjkgMTQuNCAxOC41IDE0LjRTMTkuNyAxNSAxOS43IDE1LjZDMTkuOCAxNi4yIDE5LjIgMTYuOCAxOC41IDE2LjhNNCAxMlY5QzQgMTEuMjEgNy41OCAxMyAxMiAxM0MxMi41NyAxMyAxMy4xMyAxMi45NyAxMy42NyAxMi45MUMxMy4yNSAxMy42OSAxMyAxNC41NyAxMyAxNS41QzEzIDE1LjY1IDEzIDE1LjgxIDEzLjAzIDE1Ljk2QzEyLjY5IDE2IDEyLjM1IDE2IDEyIDE2QzcuNTggMTYgNCAxNC4yMSA0IDEyTTQgN0M0IDQuNzkgNy41OCAzIDEyIDNTMjAgNC43OSAyMCA3IDE2LjQyIDExIDEyIDExIDQgOS4yMSA0IDdNMTUgMjAuNzFDMTQuMDcgMjAuOSAxMy4wNiAyMSAxMiAyMUM3LjU4IDIxIDQgMTkuMjEgNCAxN1YxNEM0IDE2LjIxIDcuNTggMTggMTIgMThDMTIuNSAxOCAxMy4wMyAxNy45NyAxMy41IDE3LjkzQzEzLjkgMTguOTEgMTQuNDQgMTkuODcgMTUgMjAuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VNYXJrZXJPdXRsaW5lID0gXCJNMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuMzUgMTYgMTIuNjkgMTUuOTcgMTMuMDMgMTUuOTVDMTMgMTUuOCAxMyAxNS42NSAxMyAxNS41QzEzIDE0Ljk2IDEzLjA5IDE0LjQ0IDEzLjI0IDEzLjk0QzEyLjgzIDE0IDEyLjQyIDE0IDEyIDE0QzkuNTggMTQgNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEwLjAzQzE4LjE3IDEwIDE4LjMzIDEwIDE4LjUgMTBDMTkgMTAgMTkuNSAxMC4wOCAyMCAxMC4yMlY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEzLjA2IDIxIDE0LjA3IDIwLjg5IDE1IDIwLjcxQzE0LjYyIDIwLjE0IDE0LjI1IDE5LjUgMTMuOTMgMTguODVDMTMuMzQgMTguOTQgMTIuNzEgMTkgMTIgMTlNMTIgNUMxNS44NyA1IDE4IDYuNSAxOCA3UzE1Ljg3IDkgMTIgOSA2IDcuNSA2IDcgOC4xMyA1IDEyIDVNMTguNSAxMkMxNi42IDEyIDE1IDEzLjYgMTUgMTUuNUMxNSAxOC4xIDE4LjUgMjIgMTguNSAyMlMyMiAxOC4xIDIyIDE1LjVDMjIgMTMuNiAyMC40IDEyIDE4LjUgMTJNMTguNSAxNi44QzE3LjggMTYuOCAxNy4zIDE2LjIgMTcuMyAxNS42QzE3LjMgMTQuOSAxNy45IDE0LjQgMTguNSAxNC40UzE5LjcgMTUgMTkuNyAxNS42QzE5LjggMTYuMiAxOS4yIDE2LjggMTguNSAxNi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlTWludXMgPSBcIk0yMyAxN1YxOUgxNVYxN00xMiAzQzE2LjQyIDMgMjAgNC43OSAyMCA3UzE2LjQyIDExIDEyIDExIDQgOS4yMSA0IDcgNy41OCAzIDEyIDNNNCA5QzQgMTEuMjEgNy41OCAxMyAxMiAxM1MyMCAxMS4yMSAyMCA5VjEyLjA4TDE5IDEyQzE2LjQxIDEyIDE0LjIgMTMuNjQgMTMuMzYgMTUuOTRMMTIgMTZDNy41OCAxNiA0IDE0LjIxIDQgMTJWOU00IDE0QzQgMTYuMjEgNy41OCAxOCAxMiAxOEgxM0MxMyAxOS4wNSAxMy4yNyAyMC4wNCAxMy43NSAyMC45TDEyIDIxQzcuNTggMjEgNCAxOS4yMSA0IDE3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlTWludXNPdXRsaW5lID0gXCJNMjAgMTMuMDlWN0MyMCA0Ljc5IDE2LjQyIDMgMTIgM1M0IDQuNzkgNCA3VjE3QzQgMTkuMjEgNy41OSAyMSAxMiAyMUMxMi40NiAyMSAxMi45IDIxIDEzLjMzIDIwLjk0QzEzLjEyIDIwLjMzIDEzIDE5LjY4IDEzIDE5TDEzIDE4Ljk1QzEyLjY4IDE5IDEyLjM1IDE5IDEyIDE5QzguMTMgMTkgNiAxNy41IDYgMTdWMTQuNzdDNy42MSAxNS41NSA5LjcyIDE2IDEyIDE2QzEyLjY1IDE2IDEzLjI3IDE1Ljk2IDEzLjg4IDE1Ljg5QzE0LjkzIDE0LjE2IDE2LjgzIDEzIDE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5TTE4IDEyLjQ1QzE2LjcgMTMuNCAxNC40MiAxNCAxMiAxNFM3LjMgMTMuNCA2IDEyLjQ1VjkuNjRDNy40NyAxMC40NyA5LjYxIDExIDEyIDExUzE2LjUzIDEwLjQ3IDE4IDkuNjRWMTIuNDVNMTIgOUM4LjEzIDkgNiA3LjUgNiA3UzguMTMgNSAxMiA1IDE4IDYuNSAxOCA3IDE1Ljg3IDkgMTIgOU0yMyAxOFYyMEgxNVYxOEgyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZU9mZiA9IFwiTTE5LjA3IDE1Ljg3QzE5LjY2IDE1LjMxIDIwIDE0LjY4IDIwIDE0VjE2LjhMMTkuMDcgMTUuODdNMjAgOUMyMCAxMC41NCAxOC4yNyAxMS44NiAxNS43MyAxMi41M0wxNy44OSAxNC42OUMxOS4xOSAxNCAyMCAxMy4wNCAyMCAxMlY5TTIwIDdDMjAgNC43OSAxNi40MiAzIDEyIDNDMTAuMTMgMyA4LjQyIDMuMzMgNy4wNiAzLjg2TDE0LjA2IDEwLjg2QzE3LjUgMTAuNDEgMjAgOC44NSAyMCA3TTIuMzkgMS43M0wxLjExIDNMNC4yMSA2LjFDNC4wOCA2LjM5IDQgNi42OSA0IDdDNCA4LjYzIDUuOTYgMTAuMDQgOC43NyAxMC42NkwxMS4wOCAxMi45N0M3LjEgMTIuNzQgNCAxMS4wNiA0IDlWMTJDNCAxNC4yMSA3LjU4IDE2IDEyIDE2QzEyLjY5IDE2IDEzLjM1IDE1Ljk1IDE0IDE1Ljg3TDE1LjY2IDE3LjU1QzE0LjU3IDE3Ljg0IDEzLjMyIDE4IDEyIDE4QzcuNTggMTggNCAxNi4yMSA0IDE0VjE3QzQgMTkuMjEgNy41OCAyMSAxMiAyMUMxNC4zMSAyMSAxNi4zOCAyMC41IDE3Ljg0IDE5LjczTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M1pcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZU9mZk91dGxpbmUgPSBcIk0yLjM5IDEuNzNMMS4xMSAzTDQuMjEgNi4xQzQuMDggNi4zOSA0IDYuNjkgNCA3VjE3QzQgMTkuMjEgNy41OSAyMSAxMiAyMUMxNC4zIDIxIDE2LjM4IDIwLjUgMTcuODQgMTkuNzNMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTYgOS42NEM2Ljc2IDEwLjA3IDcuNyAxMC40MiA4Ljc2IDEwLjY1TDEyLjExIDE0QzEyLjA3IDE0IDEyLjA0IDE0IDEyIDE0QzkuNTggMTQgNy4zIDEzLjQgNiAxMi40NVY5LjY0TTEyIDE5QzguMTMgMTkgNiAxNy41IDYgMTdWMTQuNzdDNy42MSAxNS41NSA5LjcyIDE2IDEyIDE2QzEyLjY4IDE2IDEzLjM0IDE1Ljk1IDE0IDE1Ljg3TDE2LjM0IDE4LjIzQzE1LjMzIDE4LjY1IDEzLjg3IDE5IDEyIDE5TTguNjQgNS40NEw3LjA2IDMuODZDOC40MiAzLjMzIDEwLjEzIDMgMTIgM0MxNi40MiAzIDIwIDQuNzkgMjAgN1YxNi44TDE4IDE0LjhWMTQuNzdMMTggMTQuNzhMMTYuNDUgMTMuMjVDMTcuMDUgMTMuMDMgMTcuNTggMTIuNzYgMTggMTIuNDVWOS42NEMxNi45NyAxMC4yMiAxNS42MSAxMC42NSAxNC4wNiAxMC44NkwxMi4xOSA5QzE1Ljk0IDguOTQgMTggNy41IDE4IDdDMTggNi41IDE1Ljg3IDUgMTIgNUMxMC42NiA1IDkuNTQgNS4xOCA4LjY0IDUuNDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VPdXRsaW5lID0gXCJNMTIgM0M3LjU4IDMgNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFTMjAgMTkuMjEgMjAgMTdWN0MyMCA0Ljc5IDE2LjQyIDMgMTIgM00xOCAxN0MxOCAxNy41IDE1Ljg3IDE5IDEyIDE5UzYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNlMxNi4zOSAxNS41NSAxOCAxNC43N1YxN00xOCAxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRDOS41OCAxNCA3LjMgMTMuNCA2IDEyLjQ1VjkuNjRDNy40NyAxMC40NyA5LjYxIDExIDEyIDExQzE0LjM5IDExIDE2LjUzIDEwLjQ3IDE4IDkuNjRWMTIuNDVNMTIgOUM4LjEzIDkgNiA3LjUgNiA3UzguMTMgNSAxMiA1QzE1Ljg3IDUgMTggNi41IDE4IDdTMTUuODcgOSAxMiA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUGx1cyA9IFwiTTE4LDE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3SDE4VjE0TTEyLDNDMTYuNDIsMyAyMCw0Ljc5IDIwLDdDMjAsOS4yMSAxNi40MiwxMSAxMiwxMUM3LjU4LDExIDQsOS4yMSA0LDdDNCw0Ljc5IDcuNTgsMyAxMiwzTTQsOUM0LDExLjIxIDcuNTgsMTMgMTIsMTNDMTYuNDIsMTMgMjAsMTEuMjEgMjAsOVY5TDIwLDEyLjA4TDE5LDEyQzE2LjQxLDEyIDE0LjIsMTMuNjQgMTMuMzYsMTUuOTRMMTIsMTZDNy41OCwxNiA0LDE0LjIxIDQsMTJWOU00LDE0QzQsMTYuMjEgNy41OCwxOCAxMiwxOEgxM0MxMywxOS4wNSAxMy4yNywyMC4wNCAxMy43NSwyMC45TDEyLDIxQzcuNTgsMjEgNCwxOS4yMSA0LDE3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUGx1c091dGxpbmUgPSBcIk0yMCAxMy4wOVY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlMMTMgMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjcgMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTIzIDE4VjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1SDIwVjE4SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUmVmcmVzaCA9IFwiTTEyIDNDMTYuNDIgMyAyMCA0Ljc5IDIwIDdDMjAgOS4yMSAxNi40MiAxMSAxMiAxMUM3LjU4IDExIDQgOS4yMSA0IDdDNCA0Ljc5IDcuNTggMyAxMiAzTTQgOUM0IDExLjIxIDcuNTggMTMgMTIgMTNDMTMuMTEgMTMgMTQuMTggMTIuODkgMTUuMTQgMTIuNjhDMTQuMTkgMTMuNTQgMTMuNSAxNC42NyAxMy4xOCAxNS45NkwxMiAxNkM3LjU4IDE2IDQgMTQuMjEgNCAxMlY5TTIwIDlWMTFMMTkuNSAxMUwxOC45IDExLjAzQzE5LjYgMTAuNDMgMjAgOS43NCAyMCA5TTQgMTRDNCAxNi4yMSA3LjU4IDE4IDEyIDE4TDEzIDE3Ljk3QzEzLjA5IDE5LjAzIDEzLjQyIDIwIDEzLjk1IDIwLjg4TDEyIDIxQzcuNTggMjEgNCAxOS4yMSA0IDE3VjE0TTE5IDEzLjVDMjAuMTEgMTMuNSAyMS4xMSAxMy45NSAyMS44MyAxNC42N0wyMyAxMy41VjE3LjVIMTlMMjAuNzcgMTUuNzNDMjAuMzIgMTUuMjggMTkuNjkgMTUgMTkgMTVDMTcuNjIgMTUgMTYuNSAxNi4xMiAxNi41IDE3LjVDMTYuNSAxOC44OCAxNy42MiAyMCAxOSAyMEMxOS44MiAyMCAyMC41NCAxOS42MSAyMSAxOUgyMi43MUMyMi4xMiAyMC40NyAyMC42OCAyMS41IDE5IDIxLjVDMTYuNzkgMjEuNSAxNSAxOS43MSAxNSAxNy41QzE1IDE1LjI5IDE2Ljc5IDEzLjUgMTkgMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVJlZnJlc2hPdXRsaW5lID0gXCJNNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjAzQzE4LjE3IDEyIDE4LjMzIDEyIDE4LjUgMTJDMTkgMTIgMTkuNSAxMi4wNyAyMCAxMi4xOFY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjE3IDIxIDEyLjMzIDIxIDEyLjUgMjFDMTIuMjQgMjAuMzcgMTIuMDkgMTkuNyAxMi4wMyAxOUwxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNkMxMi4xNyAxNiAxMi4zNCAxNiAxMi41IDE2QzEyLjg1IDE1LjE4IDEzLjM0IDE0LjQ2IDEzLjk1IDEzLjg2QzEzLjMyIDEzLjk1IDEyLjY3IDE0IDEyIDE0QzkuNTggMTQgNy4zIDEzLjQgNiAxMi40NU0xMiA1QzE1Ljg3IDUgMTggNi41IDE4IDdTMTUuODcgOSAxMiA5IDYgNy41IDYgNyA4LjEzIDUgMTIgNU0xOCAxOC41TDE5Ljc3IDE2LjczQzE5LjMyIDE2LjI4IDE4LjY5IDE2IDE4IDE2QzE2LjYyIDE2IDE1LjUgMTcuMTIgMTUuNSAxOC41UzE2LjYyIDIxIDE4IDIxQzE4LjgyIDIxIDE5LjU0IDIwLjYxIDIwIDIwSDIxLjcxQzIxLjEyIDIxLjQ3IDE5LjY4IDIyLjUgMTggMjIuNUMxNS43OSAyMi41IDE0IDIwLjcxIDE0IDE4LjVTMTUuNzkgMTQuNSAxOCAxNC41QzE5LjExIDE0LjUgMjAuMTEgMTQuOTUgMjAuODMgMTUuNjdMMjIgMTQuNVYxOC41SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUmVtb3ZlID0gXCJNMTUuNDYsMTUuODhMMTYuODgsMTQuNDZMMTksMTYuNTlMMjEuMTIsMTQuNDdMMjIuNTMsMTUuODhMMjAuNDEsMThMMjIuNTQsMjAuMTJMMjEuMTIsMjEuNTRMMTksMTkuNDFMMTYuODgsMjEuNTNMMTUuNDcsMjAuMTJMMTcuNTksMThMMTUuNDYsMTUuODhNMTIsM0MxNi40MiwzIDIwLDQuNzkgMjAsN0MyMCw5LjIxIDE2LjQyLDExIDEyLDExQzcuNTgsMTEgNCw5LjIxIDQsN0M0LDQuNzkgNy41OCwzIDEyLDNNNCw5QzQsMTEuMjEgNy41OCwxMyAxMiwxM0MxNi40MiwxMyAyMCwxMS4yMSAyMCw5VjEyLjA4TDE5LDEyQzE2LjQxLDEyIDE0LjIsMTMuNjQgMTMuMzYsMTUuOTRMMTIsMTZDNy41OCwxNiA0LDE0LjIxIDQsMTJWOU00LDE0QzQsMTYuMjEgNy41OCwxOCAxMiwxOEgxM0MxMywxOS4wNSAxMy4yNywyMC4wNCAxMy43NSwyMC45TDEyLDIxQzcuNTgsMjEgNCwxOS4yMSA0LDE3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUmVtb3ZlT3V0bGluZSA9IFwiTTIwIDEzLjA5VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuNDYgMjEgMTIuOSAyMSAxMy4zMyAyMC45NEMxMy4xMiAyMC4zMyAxMyAxOS42OCAxMyAxOUwxMyAxOC45NUMxMi42OCAxOSAxMi4zNSAxOSAxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNkMxMi42NSAxNiAxMy4yNyAxNS45NiAxMy44OCAxNS44OUMxNC45MyAxNC4xNiAxNi44MyAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOU0xOCAxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRTNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjQ1TTEyIDlDOC4xMyA5IDYgNy41IDYgN1M4LjEzIDUgMTIgNSAxOCA2LjUgMTggNyAxNS44NyA5IDEyIDlNMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDdMMjIuNTQgMTYuODhMMjAuNDEgMTlcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVNlYXJjaCA9IFwiTTE4LjY4LDEyLjMyQzE2LjkyLDEwLjU2IDE0LjA3LDEwLjU3IDEyLjMyLDEyLjMzQzEwLjU2LDE0LjA5IDEwLjU2LDE2Ljk0IDEyLjMyLDE4LjY5QzEzLjgxLDIwLjE3IDE2LjExLDIwLjQzIDE3Ljg5LDE5LjMyTDIxLDIyLjM5TDIyLjM5LDIxTDE5LjMsMTcuODlDMjAuNDMsMTYuMTIgMjAuMTcsMTMuOCAxOC42OCwxMi4zMk0xNy4yNywxNy4yN0MxNi4yOSwxOC4yNSAxNC43MSwxOC4yNCAxMy43MywxNy4yN0MxMi43NiwxNi4yOSAxMi43NiwxNC43MSAxMy43NCwxMy43M0MxNC43MSwxMi43NiAxNi4yOSwxMi43NiAxNy4yNywxMy43M0MxOC4yNCwxNC43MSAxOC4yNCwxNi4yOSAxNy4yNywxNy4yN00xMC45LDIwLjFDMTAuMjUsMTkuNDQgOS43NCwxOC42NSA5LjQyLDE3Ljc4QzYuMjcsMTcuMjUgNCwxNS43NiA0LDE0VjE3QzQsMTkuMjEgNy41OCwyMSAxMiwyMVYyMUMxMS42LDIwLjc0IDExLjIzLDIwLjQ0IDEwLjksMjAuMU00LDlWMTJDNCwxMy42OCA2LjA3LDE1LjEyIDksMTUuN0M5LDE1LjYzIDksMTUuNTcgOSwxNS41QzksMTQuNTcgOS4yLDEzLjY1IDkuNTgsMTIuODFDNi4zNCwxMi4zIDQsMTAuNzkgNCw5TTEyLDNDNy41OCwzIDQsNC43OSA0LDdDNCw5IDcsMTAuNjggMTAuODUsMTFIMTAuOUMxMi4xLDkuNzQgMTMuNzYsOSAxNS41LDlDMTYuNDEsOSAxNy4zMSw5LjE5IDE4LjE0LDkuNTZDMTkuMTcsOS4wOSAxOS44Nyw4LjEyIDIwLDdDMjAsNC43OSAxNi40MiwzIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VTZWFyY2hPdXRsaW5lID0gXCJNMTEgMTguOTVDNy43NyAxOC43MiA2IDE3LjQ1IDYgMTdWMTQuNzdDNy4xMyAxNS4zMiA4LjUgMTUuNjkgMTAgMTUuODdDMTAgMTUuMjEgMTAuMDQgMTQuNTQgMTAuMjEgMTMuODlDOC41IDEzLjY3IDYuOTcgMTMuMTYgNiAxMi40NVY5LjY0QzcuNDMgMTAuNDUgOS41IDEwLjk3IDExLjgyIDExQzExLjg1IDEwLjk3IDExLjg3IDEwLjkzIDExLjkgMTAuOUMxNC4xIDguNzEgMTcuNSA4LjQxIDIwIDEwLjAzVjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuMzQgMjEgMTIuNjggMjEgMTMgMjAuOTdDMTIuNjIgMjAuNzIgMTIuMjQgMjAuNDQgMTEuOSAyMC4xQzExLjU1IDE5Ljc0IDExLjI1IDE5LjM2IDExIDE4Ljk1TTEyIDVDMTUuODcgNSAxOCA2LjUgMTggN1MxNS44NyA5IDEyIDkgNiA3LjUgNiA3IDguMTMgNSAxMiA1TTIwLjMxIDE3LjlDMjAuNzUgMTcuMjEgMjEgMTYuMzggMjEgMTUuNUMyMSAxMyAxOSAxMSAxNi41IDExUzEyIDEzIDEyIDE1LjUgMTQgMjAgMTYuNSAyMEMxNy4zNyAyMCAxOC4xOSAxOS43NSAxOC44OCAxOS4zMkwyMiAyMi4zOUwyMy4zOSAyMUwyMC4zMSAxNy45TTE2LjUgMThDMTUuMTIgMTggMTQgMTYuODggMTQgMTUuNVMxNS4xMiAxMyAxNi41IDEzIDE5IDE0LjEyIDE5IDE1LjUgMTcuODggMTggMTYuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVNldHRpbmdzID0gXCJNNywyMkg5VjI0SDdWMjJNMTEsMjJIMTNWMjRIMTFWMjJNMTUsMjJIMTdWMjRIMTVWMjJNMTIsM0MxNi40MiwzIDIwLDQuNzkgMjAsN0MyMCw5LjIxIDE2LjQyLDExIDEyLDExQzcuNTgsMTEgNCw5LjIxIDQsN0M0LDQuNzkgNy41OCwzIDEyLDNNNCw5QzQsMTEuMjEgNy41OCwxMyAxMiwxM0MxNi40MiwxMyAyMCwxMS4yMSAyMCw5VjEyQzIwLDE0LjIxIDE2LjQyLDE2IDEyLDE2QzcuNTgsMTYgNCwxNC4yMSA0LDEyVjlNNCwxNEM0LDE2LjIxIDcuNTgsMTggMTIsMThDMTYuNDIsMTggMjAsMTYuMjEgMjAsMTRWMTdDMjAsMTguMTkgMTguOTUsMTkuMjcgMTcuMjksMjBINi43MUM1LjA1LDE5LjI3IDQsMTguMTkgNCwxN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVNldHRpbmdzT3V0bGluZSA9IFwiTTEyIDNDNy41OCAzIDQgNC43OSA0IDdWMTdDNCAxOC4yIDUuMDYgMTkuMjcgNi43MyAyMEgxNy4yN0MxOC45NCAxOS4yNyAyMCAxOC4yIDIwIDE3VjdDMjAgNC43OSAxNi40MiAzIDEyIDNNMTggMTdDMTggMTcuNSAxNS44NyAxOSAxMiAxOVM2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZTMTYuMzkgMTUuNTUgMTggMTQuNzdWMTdNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTcgMjJIOVYyNEg3VjIyTTE1IDIySDE3VjI0SDE1VjIyTTExIDIySDEzVjI0SDExVjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlU3luYyA9IFwiTTE5LDEyVjEzLjVBNCw0IDAgMCwxIDIzLDE3LjVDMjMsMTguMzIgMjIuNzUsMTkuMDggMjIuMzMsMTkuNzFMMjEuMjQsMTguNjJDMjEuNDEsMTguMjggMjEuNSwxNy45IDIxLjUsMTcuNUEyLjUsMi41IDAgMCwwIDE5LDE1VjE2LjVMMTYuNzUsMTQuMjVMMTksMTJNMTksMjNWMjEuNUE0LDQgMCAwLDEgMTUsMTcuNUMxNSwxNi42OCAxNS4yNSwxNS45MiAxNS42NywxNS4yOUwxNi43NiwxNi4zOEMxNi41OSwxNi43MiAxNi41LDE3LjEgMTYuNSwxNy41QTIuNSwyLjUgMCAwLDAgMTksMjBWMTguNUwyMS4yNSwyMC43NUwxOSwyM00xMiwzQzE2LjQyLDMgMjAsNC43OSAyMCw3QzIwLDkuMjEgMTYuNDIsMTEgMTIsMTFDNy41OCwxMSA0LDkuMjEgNCw3QzQsNC43OSA3LjU4LDMgMTIsM000LDlDNCwxMS4yMSA3LjU4LDEzIDEyLDEzQzEzLjExLDEzIDE0LjE3LDEyLjg5IDE1LjE0LDEyLjY4QzE0LjE5LDEzLjU0IDEzLjUsMTQuNjcgMTMuMTgsMTUuOTZMMTIsMTZDNy41OCwxNiA0LDE0LjIxIDQsMTJWOU0yMCw5VjExSDE5LjVMMTguOSwxMS4wM0MxOS42LDEwLjQzIDIwLDkuNzQgMjAsOU00LDE0QzQsMTYuMjEgNy41OCwxOCAxMiwxOEwxMywxNy45N0MxMy4wOSwxOS4wMyAxMy40MiwyMCAxMy45NSwyMC44OEwxMiwyMUM3LjU4LDIxIDQsMTkuMjEgNCwxN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVN5bmNPdXRsaW5lID0gXCJNMTIgMTZDMTIuNDEgMTYgMTIuODEgMTUuOTcgMTMuMjEgMTUuOTRDMTMuNCAxNS4xOCAxMy43MiAxNC40NiAxNC4xNiAxMy44M0MxMy40NyAxMy45NCAxMi43NCAxNCAxMiAxNEM5LjU4IDE0IDcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMS4xOUMxOC41IDExLjA3IDE5IDExIDE5LjU1IDExQzE5LjcgMTEgMTkuODUgMTEgMjAgMTEuMDNWN0MyMCA0Ljc5IDE2LjQyIDMgMTIgM1M0IDQuNzkgNCA3VjE3QzQgMTkuMjEgNy41OSAyMSAxMiAyMUMxMi42NiAyMSAxMy4zMSAyMC45NiAxMy45MiAyMC44OEMxMy41NyAyMC4yOSAxMy4zMSAxOS42NCAxMy4xNiAxOC45NEMxMi43OSAxOSAxMi40MSAxOSAxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNk0xMiA1QzE1Ljg3IDUgMTggNi41IDE4IDdTMTUuODcgOSAxMiA5IDYgNy41IDYgNyA4LjEzIDUgMTIgNU0yMyAxNy41QzIzIDE4LjMyIDIyLjc1IDE5LjA4IDIyLjMzIDE5LjcxTDIxLjI0IDE4LjYyQzIxLjQxIDE4LjI4IDIxLjUgMTcuOSAyMS41IDE3LjVDMjEuNSAxNi4xMiAyMC4zOCAxNSAxOSAxNVYxNi41TDE2Ljc1IDE0LjI1TDE5IDEyVjEzLjVDMjEuMjEgMTMuNSAyMyAxNS4yOSAyMyAxNy41TTE5IDE4LjVMMjEuMjUgMjAuNzVMMTkgMjNWMjEuNUMxNi43OSAyMS41IDE1IDE5LjcxIDE1IDE3LjVDMTUgMTYuNjggMTUuMjUgMTUuOTIgMTUuNjcgMTUuMjlMMTYuNzYgMTYuMzhDMTYuNTkgMTYuNzIgMTYuNSAxNy4xIDE2LjUgMTcuNUMxNi41IDE4Ljg4IDE3LjYyIDIwIDE5IDIwVjE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVhdGhTdGFyID0gXCJNMi4wNSwxM0gyMS45NUMyMS40NSwxOC4wNSAxNy4xOSwyMiAxMiwyMkM2LjgyLDIyIDIuNTUsMTguMDUgMi4wNSwxM00yMS45NSwxMUgyLjA1QzIuNTUsNS45NSA2LjgyLDIgMTIsMkMxNy4xOCwyIDIxLjQ1LDUuOTUgMjEuOTUsMTFNMTIsNi43NUEyLjUsMi41IDAgMCwwIDkuNSw0LjI1QTIuNSwyLjUgMCAwLDAgNyw2Ljc1QTIuNSwyLjUgMCAwLDAgOS41LDkuMjVBMi41LDIuNSAwIDAsMCAxMiw2Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlYXRoU3RhclZhcmlhbnQgPSBcIk0yLjA1LDEzSDIxLjk0QzIxLjg4LDEzLjY5IDIxLjc0LDE0LjM2IDIxLjU0LDE1SDE0VjE3SDE3VjE5SDE1VjIxSDEyLjVWMjJDMTIuMzMsMjIgMTIuMTcsMjIgMTIsMjJDNi44MiwyMiAyLjU1LDE4LjA1IDIuMDUsMTNNMjEuOTQsMTFIMi4wNUMyLjU1LDUuOTUgNi44MiwyIDEyLDJDMTMuNjIsMiAxNS4xNSwyLjM5IDE2LjUsMy4wOFY1SDE4LjVWN0gyMFY5SDIxLjU0QzIxLjc0LDkuNjQgMjEuODgsMTAuMzEgMjEuOTQsMTFNMTIsNi43NUEyLjUsMi41IDAgMCwwIDkuNSw0LjI1QTIuNSwyLjUgMCAwLDAgNyw2Ljc1QTIuNSwyLjUgMCAwLDAgOS41LDkuMjVBMi41LDIuNSAwIDAsMCAxMiw2Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlYXRobHlIYWxsb3dzID0gXCJNMTIsMkwxLDIxSDIzTDEyLDJNMTIuNzUsMTEuNDdDMTQuNTYsMTEuODcgMTUuNywxMy42NyAxNS4zLDE1LjVDMTUsMTYuNzUgMTQsMTcuNzUgMTIuNzUsMTguMDNWMTEuNDdNMTEuMjUsMThDOS40NCwxNy42IDguMywxNS44IDguNywxNEM5LDEyLjcyIDEwLDExLjcyIDExLjI1LDExLjQ0VjE4TTE2Ljg4LDE0LjcyQzE2LjgzLDEyLjM1IDE1LjA5LDEwLjM2IDEyLjc1LDEwVjYuMjlMMjAuNCwxOS41SDEzLjA3QzE1LjI5LDE5IDE2Ljg3LDE3LjAzIDE2Ljg4LDE0Ljc1VjE0LjcyTTExLjI1LDYuMjlWMTBDOC42LDEwLjQgNi43NywxMi44OCA3LjE4LDE1LjU0QzcuNSwxNy41IDguOTcsMTkuMTIgMTAuOTMsMTkuNTVIMy42TDExLjI1LDYuMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGViaWFuID0gXCJNMTguNSwxMC41N0wxOC4zLDEwLjk0QzE4LjU2LDEwLjE2IDE4LjQxLDkuMzEgMTguNDUsOC41N0wxOC4zOCw4LjU1QzE4LjMxLDYuNyAxNi43MSw0LjczIDE1LjI5LDQuMDdDMTQuMDYsMy41IDEyLjE3LDMuNCAxMS4zLDMuODNDMTEuNDIsMy43MiAxMS45LDMuNjggMTEuNzUsMy42QzEwLjM4LDMuNzMgMTAuNjksNC4wNyA5LjY0LDQuMzRDOS4zNSw0LjYyIDEwLjUsNC4xMiA5Ljg3LDQuNUM5LjMxLDQuNjMgOS4wNSw0LjM4IDguMjIsNS4yNEM4LjI5LDUuMzYgOC43NSw0Ljg5IDguMzcsNS4zNkM3LjU4LDUuMjcgNS44OSw3LjE2IDUuNTMsNy43OEw1LjcyLDcuODJDNS40MSw4LjU5IDUsOS4wOCA0Ljk1LDkuNTRDNC44NywxMC42OCA0LjUsMTIuNzUgNS4wMywxMy4zOUw0Ljk3LDEzLjkyTDUuMiwxNC4zN0w1LjA4LDE0LjM4QzUuNjYsMTYuMjEgNS43LDE0LjQyIDYuNDcsMTYuMzJDNi4zNiwxNi4yOCA2LjI0LDE2LjI0IDYuMDgsMTZDNi4wNiwxNi4xOSA2LjMyLDE2LjY5IDYuNjIsMTcuMDhMNi41LDE3LjIyQzYuNjYsMTcuNTMgNi44MiwxNy42IDYuOTMsMTcuNzFDNi4zLDE3LjM2IDcuNSwxOC44NCA3LjYzLDE5LjAzTDcuNzMsMTguODZDNy43MSwxOS4xIDcuOSwxOS40MiA4LjI2LDE5Ljg3TDguNTYsMTkuODZDOC42OSwyMC4xIDkuMTQsMjAuNTQgOS40MSwyMC41Nkw5LjIzLDIwLjhDOS45MiwyMSA5LjU2LDIxLjA5IDEwLjQxLDIxLjM5TDEwLjI0LDIxLjA5QzEwLjY3LDIxLjQ2IDEwLjgsMjEuNzkgMTEuNDEsMjIuMDdDMTIuMjYsMjIuMzcgMTIuMzcsMjIuMjUgMTMuMjMsMjIuNUMxMi41LDIyLjUgMTEuNjQsMjIuNSAxMS4wNiwyMi4yOEM3LjEsMjEuMjEgMy41LDE2LjU2IDMuNzQsMTEuNzhDMy42OCwxMC44MSAzLjg0LDkuNiAzLjY4LDkuMzZDMy45LDguNjIgNC4xNiw3LjcyIDQuNjksNi42NUM0LjY1LDYuNTggNC43OCw2Ljg2IDUuMDUsNi40MUM1LjIxLDYuMDUgNS4zNCw1LjY2IDUuNTUsNS4zMUw1LjY1LDUuMjhDNS43Niw0LjY3IDcuMDgsMy43MyA3LjUsMy4yNlYzLjQ0QzguMzYsMi42MyA5LjksMi4wOSAxMC43NiwxLjcxQzEwLjUzLDEuOTYgMTEuMjcsMS42OCAxMS44LDEuNjVMMTEuMzEsMS45M0MxMS45NCwxLjc3IDExLjkxLDIgMTIuNTYsMS45QzEyLjMzLDEuOTMgMTIuMDYsMiAxMi4xLDIuMDZDMTIuODIsMi4xNCAxMi45NCwxLjg0IDEzLjYxLDIuMDZMMTMuNTYsMS44NkMxNC41LDIuMiAxNC42OSwyLjE0IDE1LjcsMi42OEMxNi4wNiwyLjY5IDE2LjEsMi40NiAxNi42MywyLjY4QzE2LjczLDIuODQgMTYuNjEsMi44NyAxNy4yNywzLjI3QzE3LjM0LDMuMjQgMTcuMTQsMy4wNSAxNywyLjlDMTguMywzLjYxIDE5Ljc1LDUuMTIgMjAuMTgsNi43NEMxOS43Nyw2IDIwLjE0LDcuMTMgMjAsNy4wN0MyMC4xOCw3LjU2IDIwLjMzLDguMDcgMjAuNDMsOC42QzIwLjMxLDguMTcgMjAuMDQsNy4xMiAxOS41Nyw2LjQ1QzE5LjU0LDYuODggMTguOTcsNi4xNSAxOS4yOCw3LjExQzE5LjUsNy40NSAxOS4zMyw2Ljc2IDE5LjYyLDcuMzZDMTkuNjIsNy42NSAxOS43Myw3Ljk0IDE5LjgsOC4zMUMxOS43LDguMjkgMTkuNTgsNy45IDE5LjUsOEMxOS42LDguNSAxOS43Nyw4LjcyIDE5LjgzLDguNzZDMTkuOCw4Ljg0IDE5LjcxLDguNjggMTkuNzEsOUMxOS43NSw5Ljc0IDE5LjkyLDkuNDMgMjAsOS40NkMxOS45MSw5LjgzIDE5LjU5LDEwLjI1IDE5Ljc1LDEwLjg4TDE5LjU1LDEwLjMyQzE5LjUsMTAuODUgMTkuNjYsMTAuOTUgMTkuNDIsMTEuNkMxOS42LDExIDE5LjU4LDEwLjUgMTkuNDEsMTAuNzVDMTkuNSwxMS41NyAxOC43NiwxMi4yIDE4LjgzLDEyLjczTDE4LjYyLDEyLjQ0QzE4LjA1LDEzLjI3IDE4LjYxLDEyLjg5IDE4LjIyLDEzLjVDMTguMzYsMTMuMjcgMTguMTUsMTMuNDIgMTguMzMsMTMuMTRDMTguMjEsMTMuMTUgMTcuNzgsMTMuNjcgMTcuMzksMTMuOTdDMTUuODUsMTUuMiAxNCwxNS4zNyAxMi4yNCwxNC43SDEyLjIzQzEyLjI0LDE0LjY2IDEyLjIzLDE0LjYxIDEyLjExLDE0LjUzQzEwLjYsMTMuMzggOS43MSwxMi40IDEwLDEwLjEyQzEwLjI1LDkuOTUgMTAuMzEsOSAxMC44NCw4LjY3QzExLjE2LDcuOTYgMTIuMTIsNy4zMSAxMy4xNSw3LjI5QzE0LjIsNy4yMyAxNS4wOSw3Ljg1IDE1LjU0LDguNDNDMTQuNzIsNy42OCAxMy40LDcuNDUgMTIuMjYsOEMxMS4xMSw4LjUzIDEwLjQyLDkuOCAxMC41LDExLjA3QzEwLjU2LDExIDEwLjYsMTEuMDUgMTAuNjIsMTAuODlDMTAuNTksMTMuMzYgMTMuMjgsMTUuMTcgMTUuMjIsMTQuMjZMMTUuMjUsMTQuMzFDMTYuMDMsMTQuMDkgMTUuOTMsMTMuOTIgMTYuNDQsMTMuNTZDMTYuNCwxMy42NSAxNi4xLDEzLjg2IDE2LjI4LDEzLjg2QzE2LjUzLDEzLjggMTcuMzEsMTMuMDcgMTcuNywxMi43M0MxNy44NywxMi4zNSAxNy42LDEyLjUgMTcuODUsMTIuMDRMMTguMTUsMTEuODlDMTguMzIsMTEuNDEgMTguNSwxMS4xNCAxOC41LDEwLjU3XCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVidWdTdGVwSW50byA9IFwiTTEyLDIyQTIsMiAwIDAsMSAxMCwyMEEyLDIgMCAwLDEgMTIsMThBMiwyIDAgMCwxIDE0LDIwQTIsMiAwIDAsMSAxMiwyMk0xMywyVjEzTDE3LjUsOC41TDE4LjkyLDkuOTJMMTIsMTYuODRMNS4wOCw5LjkyTDYuNSw4LjVMMTEsMTNWMkgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEZWJ1Z1N0ZXBPdXQgPSBcIk0xMiwyMkEyLDIgMCAwLDEgMTAsMjBBMiwyIDAgMCwxIDEyLDE4QTIsMiAwIDAsMSAxNCwyMEEyLDIgMCAwLDEgMTIsMjJNMTMsMTZIMTFWNkw2LjUsMTAuNUw1LjA4LDkuMDhMMTIsMi4xNkwxOC45Miw5LjA4TDE3LjUsMTAuNUwxMyw2VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlYnVnU3RlcE92ZXIgPSBcIk0xMiwxNEEyLDIgMCAwLDEgMTQsMTZBMiwyIDAgMCwxIDEyLDE4QTIsMiAwIDAsMSAxMCwxNkEyLDIgMCAwLDEgMTIsMTRNMjMuNDYsOC44NkwyMS44NywxNS43NUwxNSwxNC4xNkwxOC44LDExLjc4QzE3LjM5LDkuNSAxNC44Nyw4IDEyLDhDOC4wNSw4IDQuNzcsMTAuODYgNC4xMiwxNC42M0wyLjE1LDE0LjI4QzIuOTYsOS41OCA3LjA2LDYgMTIsNkMxNS41OCw2IDE4LjczLDcuODkgMjAuNSwxMC43MkwyMy40Niw4Ljg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlY2FncmFtID0gXCJNMjMsMTJMMjAuNTYsOS4yMkwyMC45LDUuNTRMMTcuMjksNC43MkwxNS40LDEuNTRMMTIsM0w4LjYsMS41NEw2LjcxLDQuNzJMMy4xLDUuNTNMMy40NCw5LjIxTDEsMTJMMy40NCwxNC43OEwzLjEsMTguNDdMNi43MSwxOS4yOUw4LjYsMjIuNDdMMTIsMjFMMTUuNCwyMi40NkwxNy4yOSwxOS4yOEwyMC45LDE4LjQ2TDIwLjU2LDE0Ljc4TDIzLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURlY2FncmFtT3V0bGluZSA9IFwiTTIzLDEyTDIwLjU2LDE0Ljc4TDIwLjksMTguNDZMMTcuMjksMTkuMjhMMTUuNCwyMi40NkwxMiwyMUw4LjYsMjIuNDdMNi43MSwxOS4yOUwzLjEsMTguNDdMMy40NCwxNC43OEwxLDEyTDMuNDQsOS4yMUwzLjEsNS41M0w2LjcxLDQuNzJMOC42LDEuNTRMMTIsM0wxNS40LDEuNTRMMTcuMjksNC43MkwyMC45LDUuNTRMMjAuNTYsOS4yMkwyMywxMk0yMC4zMywxMkwxOC41LDkuODlMMTguNzQsNy4xTDE2LDYuNUwxNC41OCw0LjA3TDEyLDUuMThMOS40Miw0LjA3TDgsNi41TDUuMjYsNy4wOUw1LjUsOS44OEwzLjY3LDEyTDUuNSwxNC4xTDUuMjYsMTYuOUw4LDE3LjVMOS40MiwxOS45M0wxMiwxOC44MUwxNC41OCwxOS45MkwxNiwxNy41TDE4Ljc0LDE2Ljg5TDE4LjUsMTQuMUwyMC4zMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWNpbWFsID0gXCJNMTAgN0EzIDMgMCAwIDAgNyAxMFYxM0EzIDMgMCAwIDAgMTMgMTNWMTBBMyAzIDAgMCAwIDEwIDdNMTEgMTNBMSAxIDAgMCAxIDkgMTNWMTBBMSAxIDAgMCAxIDExIDEwTTE3IDdBMyAzIDAgMCAwIDE0IDEwVjEzQTMgMyAwIDAgMCAyMCAxM1YxMEEzIDMgMCAwIDAgMTcgN00xOCAxM0ExIDEgMCAwIDEgMTYgMTNWMTBBMSAxIDAgMCAxIDE4IDEwTTYgMTVBMSAxIDAgMSAxIDUgMTRBMSAxIDAgMCAxIDYgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVjaW1hbENvbW1hID0gXCJNMTAgN0EzIDMgMCAwIDEgMTMgMTBWMTNBMyAzIDAgMCAxIDcgMTNWMTBBMyAzIDAgMCAxIDEwIDdNMTAgOUExIDEgMCAwIDAgOSAxMFYxM0ExIDEgMCAwIDAgMTEgMTNWMTBBMSAxIDAgMCAwIDEwIDlNMTcgN0EzIDMgMCAwIDEgMjAgMTBWMTNBMyAzIDAgMCAxIDE0IDEzVjEwQTMgMyAwIDAgMSAxNyA3TTE3IDlBMSAxIDAgMCAwIDE2IDEwVjEzQTEgMSAwIDAgMCAxOCAxM1YxMEExIDEgMCAwIDAgMTcgOU01IDE0QTEgMSAwIDAgMCA0IDE1TDUgMThINlYxNUExIDEgMCAwIDAgNSAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWNpbWFsQ29tbWFEZWNyZWFzZSA9IFwiTTUgMTNWMTZINEwzIDEzQTEgMSAwIDAgMSA1IDEzTTE1IDE2VjE0TDEyIDE3TDE1IDIwVjE4SDIxVjE2TTEyIDExQTMgMyAwIDAgMSA2IDExVjhBMyAzIDAgMCAxIDEyIDhNMTAgOEExIDEgMCAwIDAgOCA4VjExQTEgMSAwIDAgMCAxMCAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWNpbWFsQ29tbWFJbmNyZWFzZSA9IFwiTTkgNUEzIDMgMCAwIDAgNiA4VjExQTMgMyAwIDAgMCAxMiAxMVY4QTMgMyAwIDAgMCA5IDVNMTAgMTFBMSAxIDAgMCAxIDggMTFWOEExIDEgMCAwIDEgMTAgOE0xNiAxNEEzIDMgMCAwIDAgMTkgMTFWOEEzIDMgMCAwIDAgMTMgOFYxMUEzIDMgMCAwIDAgMTYgMTRNMTUgOEExIDEgMCAwIDEgMTcgOFYxMUExIDEgMCAwIDEgMTUgMTFNMTkgMjBWMThIMTNWMTZIMTlWMTRMMjIgMTdNNSAxM1YxNkg0TDMgMTNBMSAxIDAgMCAxIDUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVjaW1hbERlY3JlYXNlID0gXCJNMTIsMTdMMTUsMjBWMThIMjFWMTZIMTVWMTRMMTIsMTdNOSw1QTMsMyAwIDAsMSAxMiw4VjExQTMsMyAwIDAsMSA5LDE0QTMsMyAwIDAsMSA2LDExVjhBMywzIDAgMCwxIDksNU05LDdBMSwxIDAgMCwwIDgsOFYxMUExLDEgMCAwLDAgOSwxMkExLDEgMCAwLDAgMTAsMTFWOEExLDEgMCAwLDAgOSw3TTQsMTJBMSwxIDAgMCwxIDUsMTNBMSwxIDAgMCwxIDQsMTRBMSwxIDAgMCwxIDMsMTNBMSwxIDAgMCwxIDQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVjaW1hbEluY3JlYXNlID0gXCJNMjIsMTdMMTksMjBWMThIMTNWMTZIMTlWMTRMMjIsMTdNOSw1QTMsMyAwIDAsMSAxMiw4VjExQTMsMyAwIDAsMSA5LDE0QTMsMyAwIDAsMSA2LDExVjhBMywzIDAgMCwxIDksNU05LDdBMSwxIDAgMCwwIDgsOFYxMUExLDEgMCAwLDAgOSwxMkExLDEgMCAwLDAgMTAsMTFWOEExLDEgMCAwLDAgOSw3TTE2LDVBMywzIDAgMCwxIDE5LDhWMTFBMywzIDAgMCwxIDE2LDE0QTMsMyAwIDAsMSAxMywxMVY4QTMsMyAwIDAsMSAxNiw1TTE2LDdBMSwxIDAgMCwwIDE1LDhWMTFBMSwxIDAgMCwwIDE2LDEyQTEsMSAwIDAsMCAxNywxMVY4QTEsMSAwIDAsMCAxNiw3TTQsMTJBMSwxIDAgMCwxIDUsMTNBMSwxIDAgMCwxIDQsMTRBMSwxIDAgMCwxIDMsMTNBMSwxIDAgMCwxIDQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlID0gXCJNMTksNEgxNS41TDE0LjUsM0g5LjVMOC41LDRINVY2SDE5TTYsMTlBMiwyIDAgMCwwIDgsMjFIMTZBMiwyIDAgMCwwIDE4LDE5VjdINlYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVBbGVydCA9IFwiTTE3IDRWNkgzVjRINi41TDcuNSAzSDEyLjVMMTMuNSA0SDE3TTQgMTlWN0gxNlYxOUMxNiAyMC4xIDE1LjEgMjEgMTQgMjFINkM0LjkgMjEgNCAyMC4xIDQgMTlNMTkgMTVIMjFWMTdIMTlWMTVNMTkgN0gyMVYxM0gxOVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZUFsZXJ0T3V0bGluZSA9IFwiTTQgMTlWN0gxNlYxOUMxNiAyMC4xIDE1LjEgMjEgMTQgMjFINkM0LjkgMjEgNCAyMC4xIDQgMTlNNiA5VjE5SDE0VjlINk0xMy41IDRIMTdWNkgzVjRINi41TDcuNSAzSDEyLjVMMTMuNSA0TTE5IDE3VjE1SDIxVjE3SDE5TTE5IDEzVjdIMjFWMTNIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlQ2lyY2xlID0gXCJNMTIsMkMxNy41MywyIDIyLDYuNDcgMjIsMTJDMjIsMTcuNTMgMTcuNTMsMjIgMTIsMjJDNi40NywyMiAyLDE3LjUzIDIsMTJDMiw2LjQ3IDYuNDcsMiAxMiwyTTE3LDdIMTQuNUwxMy41LDZIMTAuNUw5LjUsN0g3VjlIMTdWN005LDE4SDE1QTEsMSAwIDAsMCAxNiwxN1YxMEg4VjE3QTEsMSAwIDAsMCA5LDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRNMTYsMTBWMTdBMSwxIDAgMCwxIDE1LDE4SDlBMSwxIDAgMCwxIDgsMTdWMTBIMTZNMTMuNSw2TDE0LjUsN0gxN1Y5SDdWN0g5LjVMMTAuNSw2SDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlQ2xvY2sgPSBcIk0xNSAxM0gxNi41VjE1LjgyTDE4Ljk0IDE3LjIzTDE4LjE5IDE4LjUzTDE1IDE2LjY5VjEzTTIzIDE2QzIzIDE5Ljg3IDE5Ljg3IDIzIDE2IDIzQzE0LjA5IDIzIDEyLjM2IDIyLjI0IDExLjEgMjFIOEM2LjkgMjEgNiAyMC4xIDYgMTlWN0gxOFY5LjI5QzIwLjg5IDEwLjE1IDIzIDEyLjgzIDIzIDE2TTE2IDExQzEzLjI0IDExIDExIDEzLjI0IDExIDE2QzExIDE4Ljc2IDEzLjI0IDIxIDE2IDIxQzE4Ljc2IDIxIDIxIDE4Ljc2IDIxIDE2QzIxIDEzLjI0IDE4Ljc2IDExIDE2IDExTTE5IDRWNkg1VjRIOC41TDkuNSAzSDE0LjVMMTUuNSA0SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZUNsb2NrT3V0bGluZSA9IFwiTTE1IDEzSDE2LjVWMTUuODJMMTguOTQgMTcuMjNMMTguMTkgMTguNTNMMTUgMTYuNjlWMTNNMjMgMTZDMjMgMTkuODcgMTkuODcgMjMgMTYgMjNDMTQuMDkgMjMgMTIuMzYgMjIuMjQgMTEuMSAyMUg4QzYuOSAyMSA2IDIwLjEgNiAxOVY3SDE4VjkuMjlDMjAuODkgMTAuMTUgMjMgMTIuODMgMjMgMTZNOSAxNkM5IDEyLjEzIDEyLjEzIDkgMTYgOUg4VjE5SDkuNjdDOS4yNCAxOC4wOSA5IDE3LjA3IDkgMTZNMTYgMTFDMTMuMjQgMTEgMTEgMTMuMjQgMTEgMTZDMTEgMTguNzYgMTMuMjQgMjEgMTYgMjFDMTguNzYgMjEgMjEgMTguNzYgMjEgMTZDMjEgMTMuMjQgMTguNzYgMTEgMTYgMTFNMTUuNSA0SDE5VjZINVY0SDguNUw5LjUgM0gxNC41TDE1LjUgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVFbXB0eSA9IFwiTTIwLjM3LDguOTFMMTkuMzcsMTAuNjRMNy4yNCwzLjY0TDguMjQsMS45MUwxMS4yOCwzLjY2TDEyLjY0LDMuMjlMMTYuOTcsNS43OUwxNy4zNCw3LjE2TDIwLjM3LDguOTFNNiwxOVY3SDExLjA3TDE4LDExVjE5QTIsMiAwIDAsMSAxNiwyMUg4QTIsMiAwIDAsMSA2LDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZUVtcHR5T3V0bGluZSA9IFwiTTIwLjM3LDguOTFMMTkuMzcsMTAuNjRMNy4yNCwzLjY0TDguMjQsMS45MUwxMS4yOCwzLjY2TDEyLjY0LDMuMjlMMTYuOTcsNS43OUwxNy4zNCw3LjE2TDIwLjM3LDguOTFNNiwxOVY3SDExLjA3TDE4LDExVjE5QTIsMiAwIDAsMSAxNiwyMUg4QTIsMiAwIDAsMSA2LDE5TTgsMTlIMTZWMTIuMkwxMC40Niw5SDhWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlRm9yZXZlciA9IFwiTTYsMTlBMiwyIDAgMCwwIDgsMjFIMTZBMiwyIDAgMCwwIDE4LDE5VjdINlYxOU04LjQ2LDExLjg4TDkuODcsMTAuNDdMMTIsMTIuNTlMMTQuMTIsMTAuNDdMMTUuNTMsMTEuODhMMTMuNDEsMTRMMTUuNTMsMTYuMTJMMTQuMTIsMTcuNTNMMTIsMTUuNDFMOS44OCwxNy41M0w4LjQ3LDE2LjEyTDEwLjU5LDE0TDguNDYsMTEuODhNMTUuNSw0TDE0LjUsM0g5LjVMOC41LDRINVY2SDE5VjRIMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVGb3JldmVyT3V0bGluZSA9IFwiTTE0LjEyLDEwLjQ3TDEyLDEyLjU5TDkuODcsMTAuNDdMOC40NiwxMS44OEwxMC41OSwxNEw4LjQ3LDE2LjEyTDkuODgsMTcuNTNMMTIsMTUuNDFMMTQuMTIsMTcuNTNMMTUuNTMsMTYuMTJMMTMuNDEsMTRMMTUuNTMsMTEuODhMMTQuMTIsMTAuNDdNMTUuNSw0TDE0LjUsM0g5LjVMOC41LDRINVY2SDE5VjRIMTUuNU02LDE5QTIsMiAwIDAsMCA4LDIxSDE2QTIsMiAwIDAsMCAxOCwxOVY3SDZWMTlNOCw5SDE2VjE5SDhWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVPZmYgPSBcIk0yIDUuMjdMMy4yOCA0TDUgNS43Mkw1LjI4IDZMNi4yOCA3TDE4IDE4LjcyTDIwIDIwLjcyTDE4LjczIDIyTDE3LjI3IDIwLjU0QzE2LjkzIDIwLjgzIDE2LjUgMjEgMTYgMjFIOEM2LjkgMjEgNiAyMC4xIDYgMTlWOS4yN0wyIDUuMjdNMTkgNFY2SDcuODJMNS44MiA0SDguNUw5LjUgM0gxNC41TDE1LjUgNEgxOU0xOCA3VjE2LjE4TDguODIgN0gxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVPZmZPdXRsaW5lID0gXCJNMiA1LjI3TDMuMjggNEw1IDUuNzJMNS4yOCA2TDYuMjggN0w4LjI4IDlMMTYgMTYuNzJMMTggMTguNzJMMjAgMjAuNzJMMTguNzMgMjJMMTcuMjcgMjAuNTRDMTYuOTMgMjAuODMgMTYuNSAyMSAxNiAyMUg4QzYuOSAyMSA2IDIwLjEgNiAxOVY5LjI3TDIgNS4yN004IDE5SDE1LjczTDggMTEuMjdWMTlNMTggN1YxNi4xOEwxNiAxNC4xOFY5SDEwLjgyTDguODIgN0gxOE0xNS41IDRIMTlWNkg3LjgyTDUuODIgNEg4LjVMOS41IDNIMTQuNUwxNS41IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlT3V0bGluZSA9IFwiTTYsMTlBMiwyIDAgMCwwIDgsMjFIMTZBMiwyIDAgMCwwIDE4LDE5VjdINlYxOU04LDlIMTZWMTlIOFY5TTE1LjUsNEwxNC41LDNIOS41TDguNSw0SDVWNkgxOVY0SDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlUmVzdG9yZSA9IFwiTTE0LDE0SDE2TDEyLDEwTDgsMTRIMTBWMThIMTRWMTRNNiw3SDE4VjE5QzE4LDE5LjUgMTcuOCwyMCAxNy4zOSwyMC4zOUMxNywyMC44IDE2LjUsMjEgMTYsMjFIOEM3LjUsMjEgNywyMC44IDYuNjEsMjAuMzlDNi4yLDIwIDYsMTkuNSA2LDE5VjdNMTksNFY2SDVWNEg4LjVMOS41LDNIMTQuNUwxNS41LDRIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlU3dlZXAgPSBcIk0xNSwxNkgxOVYxOEgxNVYxNk0xNSw4SDIyVjEwSDE1VjhNMTUsMTJIMjFWMTRIMTVWMTJNMywxOEEyLDIgMCAwLDAgNSwyMEgxMUEyLDIgMCAwLDAgMTMsMThWOEgzVjE4TTE0LDVIMTFMMTAsNEg2TDUsNUgyVjdIMTRWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVTd2VlcE91dGxpbmUgPSBcIk0xNSwxNkgxOVYxOEgxNVYxNk0xNSw4SDIyVjEwSDE1VjhNMTUsMTJIMjFWMTRIMTVWMTJNMTEsMTBWMThINVYxMEgxMU0xMyw4SDNWMThBMiwyIDAgMCwwIDUsMjBIMTFBMiwyIDAgMCwwIDEzLDE4VjhNMTQsNUgxMUwxMCw0SDZMNSw1SDJWN0gxNFY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZVZhcmlhbnQgPSBcIk0yMS4wMywzTDE4LDIwLjMxQzE3LjgzLDIxLjI3IDE3LDIyIDE2LDIySDhDNywyMiA2LjE3LDIxLjI3IDYsMjAuMzFMMi45NywzSDIxLjAzTTUuMzYsNUw4LDIwSDE2TDE4LjY0LDVINS4zNk05LDE4VjE0SDEzVjE4SDlNMTMsMTMuMThMOS44MiwxMEwxMyw2LjgyTDE2LjE4LDEwTDEzLDEzLjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbHRhID0gXCJNMTIsNy43N0wxOC4zOSwxOEg1LjYxTDEyLDcuNzdNMTIsNEwyLDIwSDIyXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVzayA9IFwiTTMgNkgyMUMyMS41NSA2IDIyIDYuNDUgMjIgN0MyMiA3LjU1IDIxLjU1IDggMjEgOFYxOUgxOVYxN0gxNVYxOUgxM1Y4SDVWMTlIM1Y4QzIuNDUgOCAyIDcuNTUgMiA3QzIgNi40NSAyLjQ1IDYgMyA2TTE2IDEwLjVWMTFIMThWMTAuNUMxOCAxMC4yMiAxNy43OCAxMCAxNy41IDEwSDE2LjVDMTYuMjIgMTAgMTYgMTAuMjIgMTYgMTAuNU0xNiAxNC41VjE1SDE4VjE0LjVDMTggMTQuMjIgMTcuNzggMTQgMTcuNSAxNEgxNi41QzE2LjIyIDE0IDE2IDE0LjIyIDE2IDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVza0xhbXAgPSBcIk0xMC44NSwyTDkuMTgsNC41TDEwLjMyLDUuMjVMNy4xNCwxMEM3LjEsMTAgNy4wNSwxMCA3LDEwQTIsMiAwIDAsMCA1LDEyQzUsMTIuOTQgNS42NiwxMy43NSA2LjU4LDEzLjk1TDEwLjYyLDIwSDdWMjJIMTdWMjBIMTNMOC41MywxMy4yOEM4LjgzLDEyLjkyIDksMTIuNDcgOSwxMkM5LDExLjcgOC45MywxMS40IDguOCwxMS4xM0wxMiw2LjM3QzExLjc4LDguMDUgMTIuNzUsOS44OSAxNC40NSwxMUwxOC44OSw0LjM3QzE3LjIsMy4yNCAxNS4xMiwzLjA0IDEzLjY1LDMuODdMMTAuODUsMk0xOC4zMyw3TDE2LjY3LDkuNUMxNy4zNSw5Ljk1IDE4LjI5LDkuNzcgMTguNzUsOS4wOEMxOS4yMSw4LjM5IDE5LDcuNDYgMTguMzMsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlEZXNrcGhvbmUgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTE1LDVWMTlIMTlWNUgxNU01LDVWOUgxM1Y1SDVNNSwxMVYxM0g3VjExSDVNOCwxMVYxM0gxMFYxMUg4TTExLDExVjEzSDEzVjExSDExTTUsMTRWMTZIN1YxNEg1TTgsMTRWMTZIMTBWMTRIOE0xMSwxNFYxNkgxM1YxNEgxMU0xMSwxN1YxOUgxM1YxN0gxMU04LDE3VjE5SDEwVjE3SDhNNSwxN1YxOUg3VjE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVza3RvcENsYXNzaWMgPSBcIk02LDJDNC44OSwyIDQsMi44OSA0LDRWMTJDNCwxMy4xMSA0Ljg5LDE0IDYsMTRIMThDMTkuMTEsMTQgMjAsMTMuMTEgMjAsMTJWNEMyMCwyLjg5IDE5LjExLDIgMTgsMkg2TTYsNEgxOFYxMkg2VjRNNCwxNUMyLjg5LDE1IDIsMTUuODkgMiwxN1YyMEMyLDIxLjExIDIuODksMjIgNCwyMkgyMEMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFYxN0MyMiwxNS44OSAyMS4xMSwxNSAyMCwxNUg0TTgsMTdIMjBWMjBIOFYxN005LDE3Ljc1VjE5LjI1SDEzVjE3Ljc1SDlNMTUsMTcuNzVWMTkuMjVIMTlWMTcuNzVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVza3RvcE1hYyA9IFwiTTIxLDE0SDNWNEgyMU0yMSwySDNDMS44OSwyIDEsMi44OSAxLDRWMTZBMiwyIDAgMCwwIDMsMThIMTBMOCwyMVYyMkgxNlYyMUwxNCwxOEgyMUEyLDIgMCAwLDAgMjMsMTZWNEMyMywyLjg5IDIyLjEsMiAyMSwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURlc2t0b3BNYWNEYXNoYm9hcmQgPSBcIk0yMSwxNFY0SDNWMTRIMjFNMjEsMkEyLDIgMCAwLDEgMjMsNFYxNkEyLDIgMCAwLDEgMjEsMThIMTRMMTYsMjFWMjJIOFYyMUwxMCwxOEgzQzEuODksMTggMSwxNy4xIDEsMTZWNEMxLDIuODkgMS44OSwyIDMsMkgyMU00LDVIMTVWMTBINFY1TTE2LDVIMjBWN0gxNlY1TTIwLDhWMTNIMTZWOEgyME00LDExSDlWMTNINFYxMU0xMCwxMUgxNVYxM0gxMFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZXNrdG9wVG93ZXIgPSBcIk04LDJIMTZBMiwyIDAgMCwxIDE4LDRWMjBBMiwyIDAgMCwxIDE2LDIySDhBMiwyIDAgMCwxIDYsMjBWNEEyLDIgMCAwLDEgOCwyTTgsNFY2SDE2VjRIOE0xNiw4SDhWMTBIMTZWOE0xNiwxOEgxNFYyMEgxNlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEZXNrdG9wVG93ZXJNb25pdG9yID0gXCJNMjIsMThIMTdBMSwxIDAgMCwxIDE2LDE3VjdBMSwxIDAgMCwxIDE3LDZIMjJBMSwxIDAgMCwxIDIzLDdWMTdBMSwxIDAgMCwxIDIyLDE4TTIyLDhIMTdWOUgyMlY4TTIyLDEwSDE3VjExSDIyVjEwTTksMTVWMTdIMTBWMThINVYxN0g2VjE1SDJBMSwxIDAgMCwxIDEsMTRWN0ExLDEgMCAwLDEgMiw2SDEzQTEsMSAwIDAsMSAxNCw3VjE0QTEsMSAwIDAsMSAxMywxNUg5TTEyLDhIM1YxM0gxMlY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURldGFpbHMgPSBcIk02LjM4LDZIMTcuNjNMMTIsMTZMNi4zOCw2TTMsNEwxMiwyMEwyMSw0SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGV2VG8gPSBcIk03LjczIDExLjkzQzcuNzMgMTMuNjUgNy43MSAxMy43NiA3LjUgMTRDNy4zMSAxNC4xNyA3LjEyIDE0LjIzIDYuNzQgMTQuMjNMNi4yMyAxNC4yNEw2LjIgMTEuOTdMNi4xOCA5LjdINi43QzcuMDUgOS43IDcuMyA5Ljc3IDcuNDcgOS45MUM3LjcxIDEwLjEyIDcuNzMgMTAuMTYgNy43MyAxMS45M00yMiA3LjVWMTYuNUMyMiAxNy42MSAyMS4xMSAxOC41IDIwIDE4LjVINEMyLjg5IDE4LjUgMiAxNy42MSAyIDE2LjVWNy41QzIgNi4zOSAyLjg5IDUuNSA0IDUuNUgyMEMyMS4xMSA1LjUgMjIgNi4zOSAyMiA3LjVNOC45MyAxMS43M0M4LjkgOS44OSA4Ljg4IDkuNzQgOC42NCA5LjM0QzguMjQgOC42NiA3Ljc5IDguNSA2LjI4IDguNUg1VjE1LjVINi4yMUM3LjU0IDE1LjUgOC4xIDE1LjMzIDguNSAxNC43OUM4LjkxIDE0LjI2IDkgMTMuODEgOC45MyAxMS43M00xMy4xMiA4LjVIMTEuNjRDMTAuMTUgOC41IDEwLjE0IDguNSA5LjkzIDguNzhTOS43IDkuMjEgOS43IDEyVjE0Ljk2TDkuOTcgMTUuMjNDMTAuMjIgMTUuNSAxMC4yOCAxNS41IDExLjY4IDE1LjVIMTMuMTJWMTQuMzFMMTIuMDMgMTQuMjdMMTAuOTMgMTQuMjRWMTIuNkwxMS42MSAxMi41N0wxMi4yNyAxMi41M1YxMS4zNEgxMC44OFY5LjdIMTMuMTJWOC41TTE5IDguNTZDMTkgOC41IDE4LjcgOC41IDE4LjM0IDguNUwxNy42NiA4LjU2TDE3LjA3IDEwLjkxQzE2LjY5IDEyLjM5IDE2LjQ1IDEzLjE4IDE2LjQgMTMuMDRDMTYuMzIgMTIuNzcgMTUuMjYgOC42IDE1LjI2IDguNTVDMTUuMjYgOC41IDE0Ljk1IDguNSAxNC41OCA4LjVIMTMuODlMMTQuMyAxMC4wNUMxNC41IDEwLjkyIDE0Ljg5IDEyLjMzIDE1LjExIDEzLjJDMTUuNDUgMTQuNTUgMTUuNTcgMTQuODUgMTUuODYgMTUuMTRDMTYuMDYgMTUuMzYgMTYuMzEgMTUuNSAxNi40NyAxNS41QzE2LjggMTUuNSAxNy4yMyAxNS4xNiAxNy4zNyAxNC43N0MxNy41IDE0LjUgMTkgOC42OSAxOSA4LjU2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURldmVsb3BlckJvYXJkID0gXCJNMjIsOVY3SDIwVjVBMiwyIDAgMCwwIDE4LDNINEEyLDIgMCAwLDAgMiw1VjE5QTIsMiAwIDAsMCA0LDIxSDE4QTIsMiAwIDAsMCAyMCwxOVYxN0gyMlYxNUgyMFYxM0gyMlYxMUgyMFY5SDIyTTE4LDE5SDRWNUgxOFYxOU02LDEzSDExVjE3SDZWMTNNMTIsN0gxNlYxMEgxMlY3TTYsN0gxMVYxMkg2VjdNMTIsMTFIMTZWMTdIMTJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGV2aWFudGFydCA9IFwiTTYsNkgxMkwxNCwySDE4VjZMMTQuNSwxM0gxOFYxOEgxMkwxMCwyMkg2VjE4TDkuNSwxMUg2VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGV2aWNlcyA9IFwiTTMgNkgyMVY0SDNDMS45IDQgMSA0LjkgMSA2VjE4QzEgMTkuMSAxLjkgMjAgMyAyMEg3VjE4SDNWNk0xMyAxMkg5VjEzLjc4QzguMzkgMTQuMzMgOCAxNS4xMSA4IDE2QzggMTYuODkgOC4zOSAxNy42NyA5IDE4LjIyVjIwSDEzVjE4LjIyQzEzLjYxIDE3LjY3IDE0IDE2Ljg4IDE0IDE2UzEzLjYxIDE0LjMzIDEzIDEzLjc4VjEyTTExIDE3LjVDMTAuMTcgMTcuNSA5LjUgMTYuODMgOS41IDE2UzEwLjE3IDE0LjUgMTEgMTQuNSAxMi41IDE1LjE3IDEyLjUgMTYgMTEuODMgMTcuNSAxMSAxNy41TTIyIDhIMTZDMTUuNSA4IDE1IDguNSAxNSA5VjE5QzE1IDE5LjUgMTUuNSAyMCAxNiAyMEgyMkMyMi41IDIwIDIzIDE5LjUgMjMgMTlWOUMyMyA4LjUgMjIuNSA4IDIyIDhNMjEgMThIMTdWMTBIMjFWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhYmV0ZXMgPSBcIk0xNC43MyAyLjI5QTEgMSAwIDAgMSAxNi4xNCAzLjdMMTMgNi43OUwxMy43NiA3Ljc0TDE1LjcgMTIuNzRBMS40NiAxLjQ2IDAgMCAxIDE1LjM2IDE0LjI5TDEyLjI3IDE3LjM4QTEuNTUgMS41NSAwIDAgMSAxMC4xNSAxNy4zOEw1LjU1IDEyLjc4QTEuMzcgMS4zNyAwIDAgMSA1LjE1IDExLjc4TDQuNjUgNS4zNEg1LjcyQTEgMSAwIDAgMSA2LjQ3IDUuNjRMNi42MSA1LjgxTDcuNjYgOS4yOU03LjY2IDIyTDIgMTYuMzZMNC4xMiAxNC4yNEw5Ljc4IDE5LjlNMTkuNSA0LjVTMTcgNy4yNiAxNyA5QTIuNSAyLjUgMCAxIDAgMjIgOUMyMiA3LjI2IDE5LjUgNC41IDE5LjUgNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpYWxwYWQgPSBcIk0xMiwxOUEyLDIgMCAwLDAgMTAsMjFBMiwyIDAgMCwwIDEyLDIzQTIsMiAwIDAsMCAxNCwyMUEyLDIgMCAwLDAgMTIsMTlNNiwxQTIsMiAwIDAsMCA0LDNBMiwyIDAgMCwwIDYsNUEyLDIgMCAwLDAgOCwzQTIsMiAwIDAsMCA2LDFNNiw3QTIsMiAwIDAsMCA0LDlBMiwyIDAgMCwwIDYsMTFBMiwyIDAgMCwwIDgsOUEyLDIgMCAwLDAgNiw3TTYsMTNBMiwyIDAgMCwwIDQsMTVBMiwyIDAgMCwwIDYsMTdBMiwyIDAgMCwwIDgsMTVBMiwyIDAgMCwwIDYsMTNNMTgsNUEyLDIgMCAwLDAgMjAsM0EyLDIgMCAwLDAgMTgsMUEyLDIgMCAwLDAgMTYsM0EyLDIgMCAwLDAgMTgsNU0xMiwxM0EyLDIgMCAwLDAgMTAsMTVBMiwyIDAgMCwwIDEyLDE3QTIsMiAwIDAsMCAxNCwxNUEyLDIgMCAwLDAgMTIsMTNNMTgsMTNBMiwyIDAgMCwwIDE2LDE1QTIsMiAwIDAsMCAxOCwxN0EyLDIgMCAwLDAgMjAsMTVBMiwyIDAgMCwwIDE4LDEzTTE4LDdBMiwyIDAgMCwwIDE2LDlBMiwyIDAgMCwwIDE4LDExQTIsMiAwIDAsMCAyMCw5QTIsMiAwIDAsMCAxOCw3TTEyLDdBMiwyIDAgMCwwIDEwLDlBMiwyIDAgMCwwIDEyLDExQTIsMiAwIDAsMCAxNCw5QTIsMiAwIDAsMCAxMiw3TTEyLDFBMiwyIDAgMCwwIDEwLDNBMiwyIDAgMCwwIDEyLDVBMiwyIDAgMCwwIDE0LDNBMiwyIDAgMCwwIDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbWV0ZXIgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNywxNVYxM0g3VjE1TDQsMTJMNyw5VjExSDE3VjlMMjAsMTJMMTcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbWV0ZXJPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xNiwxNVYxM0g4VjE1TDUsMTJMOCw5VjExSDE2VjlMMTksMTJMMTYsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbWV0ZXJWYXJpYW50ID0gXCJNNC4xNSwyMS40Nkw1LjQ3LDE5LjU4QzMuMzUsMTcuNzQgMiwxNS4wMyAyLDEyQTEwLDEwIDAgMCwxIDEyLDJDMTMuNzgsMiAxNS40NCwyLjQ2IDE2Ljg5LDMuMjdMMTguMjEsMS4zOUwxOS44NSwyLjU0TDE4LjUzLDQuNDJDMjAuNjUsNi4yNiAyMiw4Ljk3IDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQzEwLjIyLDIyIDguNTYsMjEuNTQgNy4xMSwyMC43M0w1Ljc5LDIyLjYxTDQuMTUsMjEuNDZNMTIsNEE4LDggMCAwLDAgNCwxMkM0LDE0LjM1IDUsMTYuNDYgNi42MywxNy45M0wxNS43Myw0LjkyQzE0LjYyLDQuMzMgMTMuMzUsNCAxMiw0TTEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCw5LjY1IDE5LDcuNTQgMTcuMzcsNi4wN0w4LjI3LDE5LjA4QzkuMzgsMTkuNjcgMTAuNjUsMjAgMTIsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbW9uZCA9IFwiTTYsMkwyLDhMMTIsMjJMMjIsOEwxOCwySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbW9uZE91dGxpbmUgPSBcIk0xOCwySDZMMiw4TDEyLDIyTDIyLDhMMTgsMk00LjQzLDhMNy4wNyw0SDE2LjkzTDE5LjU3LDhMMTIsMTguNTZMNC40Myw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpYW1vbmRTdG9uZSA9IFwiTTE2LDlIMTlMMTQsMTZNMTAsOUgxNEwxMiwxN001LDlIOEwxMCwxNk0xNSw0SDE3TDE5LDdIMTZNMTEsNEgxM0wxNCw3SDEwTTcsNEg5TDgsN0g1TTYsMkwyLDhMMTIsMjJMMjIsOEwxOCwySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTEgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlMU91dGxpbmUgPSBcIk0xOSA1VjE5SDVWNUgxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDEwLjVDMTEuMTcgMTAuNSAxMC41IDExLjE3IDEwLjUgMTJTMTEuMTcgMTMuNSAxMiAxMy41IDEzLjUgMTIuODMgMTMuNSAxMiAxMi44MyAxMC41IDEyIDEwLjVcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlMiA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNyw1QTIsMiAwIDAsMCA1LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSw3QTIsMiAwIDAsMCA3LDVNMTcsMTVBMiwyIDAgMCwwIDE1LDE3QTIsMiAwIDAsMCAxNywxOUEyLDIgMCAwLDAgMTksMTdBMiwyIDAgMCwwIDE3LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpY2UyT3V0bGluZSA9IFwiTTE5IDVWMTlINVY1SDE5TTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xMSAzLjkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNNNy41IDZDNi42NyA2IDYgNi42NyA2IDcuNVM2LjY3IDkgNy41IDkgOSA4LjMzIDkgNy41IDguMzMgNiA3LjUgNk0xNi41IDE1QzE1LjY3IDE1IDE1IDE1LjY3IDE1IDE2LjVDMTUgMTcuMzMgMTUuNjcgMTggMTYuNSAxOEMxNy4zMyAxOCAxOCAxNy4zMyAxOCAxNi41QzE4IDE1LjY3IDE3LjMzIDE1IDE2LjUgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTMgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxME03LDVBMiwyIDAgMCwwIDUsN0EyLDIgMCAwLDAgNyw5QTIsMiAwIDAsMCA5LDdBMiwyIDAgMCwwIDcsNU0xNywxNUEyLDIgMCAwLDAgMTUsMTdBMiwyIDAgMCwwIDE3LDE5QTIsMiAwIDAsMCAxOSwxN0EyLDIgMCAwLDAgMTcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTNPdXRsaW5lID0gXCJNMTkgNVYxOUg1VjVIMTlNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy45IDIwLjEgMyAxOSAzTTEyIDEwLjVDMTEuMiAxMC41IDEwLjUgMTEuMiAxMC41IDEyUzExLjIgMTMuNSAxMiAxMy41IDEzLjUgMTIuOCAxMy41IDEyIDEyLjggMTAuNSAxMiAxMC41TTcuNSA2QzYuNyA2IDYgNi43IDYgNy41UzYuNyA5IDcuNSA5IDkgOC4zIDkgNy41IDguMyA2IDcuNSA2TTE2LjUgMTVDMTUuNyAxNSAxNSAxNS43IDE1IDE2LjVDMTUgMTcuMyAxNS43IDE4IDE2LjUgMThDMTcuMyAxOCAxOCAxNy4zIDE4IDE2LjVDMTggMTUuNyAxNy4zIDE1IDE2LjUgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTQgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTcsNUEyLDIgMCAwLDAgNSw3QTIsMiAwIDAsMCA3LDlBMiwyIDAgMCwwIDksN0EyLDIgMCAwLDAgNyw1TTE3LDE1QTIsMiAwIDAsMCAxNSwxN0EyLDIgMCAwLDAgMTcsMTlBMiwyIDAgMCwwIDE5LDE3QTIsMiAwIDAsMCAxNywxNU0xNyw1QTIsMiAwIDAsMCAxNSw3QTIsMiAwIDAsMCAxNyw5QTIsMiAwIDAsMCAxOSw3QTIsMiAwIDAsMCAxNyw1TTcsMTVBMiwyIDAgMCwwIDUsMTdBMiwyIDAgMCwwIDcsMTlBMiwyIDAgMCwwIDksMTdBMiwyIDAgMCwwIDcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTRPdXRsaW5lID0gXCJNMTkgNVYxOUg1VjVIMTlNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjVDMjEgMy45IDIwLjExIDMgMTkgM003LjUgNkM2LjY3IDYgNiA2LjY3IDYgNy41UzYuNjcgOSA3LjUgOSA5IDguMzMgOSA3LjUgOC4zMyA2IDcuNSA2TTE2LjUgMTVDMTUuNjcgMTUgMTUgMTUuNjcgMTUgMTYuNUMxNSAxNy4zMyAxNS42NyAxOCAxNi41IDE4QzE3LjMzIDE4IDE4IDE3LjMzIDE4IDE2LjVDMTggMTUuNjcgMTcuMzMgMTUgMTYuNSAxNU0xNi41IDZDMTUuNjcgNiAxNSA2LjY3IDE1IDcuNVMxNS42NyA5IDE2LjUgOUMxNy4zMyA5IDE4IDguMzMgMTggNy41UzE3LjMzIDYgMTYuNSA2TTcuNSAxNUM2LjY3IDE1IDYgMTUuNjcgNiAxNi41QzYgMTcuMzMgNi42NyAxOCA3LjUgMThTOSAxNy4zMyA5IDE2LjVDOSAxNS42NyA4LjMzIDE1IDcuNSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlNSA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNyw1QTIsMiAwIDAsMCA1LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSw3QTIsMiAwIDAsMCA3LDVNMTcsMTVBMiwyIDAgMCwwIDE1LDE3QTIsMiAwIDAsMCAxNywxOUEyLDIgMCAwLDAgMTksMTdBMiwyIDAgMCwwIDE3LDE1TTE3LDVBMiwyIDAgMCwwIDE1LDdBMiwyIDAgMCwwIDE3LDlBMiwyIDAgMCwwIDE5LDdBMiwyIDAgMCwwIDE3LDVNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwTTcsMTVBMiwyIDAgMCwwIDUsMTdBMiwyIDAgMCwwIDcsMTlBMiwyIDAgMCwwIDksMTdBMiwyIDAgMCwwIDcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTVPdXRsaW5lID0gXCJNMTkgNVYxOUg1VjVIMTlNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy45IDIwLjEgMyAxOSAzTTcuNSA2QzYuNyA2IDYgNi43IDYgNy41UzYuNyA5IDcuNSA5IDkgOC4zIDkgNy41IDguMyA2IDcuNSA2TTE2LjUgMTVDMTUuNyAxNSAxNSAxNS43IDE1IDE2LjVDMTUgMTcuMyAxNS43IDE4IDE2LjUgMThDMTcuMyAxOCAxOCAxNy4zIDE4IDE2LjVDMTggMTUuNyAxNy4zIDE1IDE2LjUgMTVNMTYuNSA2QzE1LjcgNiAxNSA2LjcgMTUgNy41UzE1LjcgOSAxNi41IDlDMTcuMyA5IDE4IDguMyAxOCA3LjVTMTcuMyA2IDE2LjUgNk0xMiAxMC41QzExLjIgMTAuNSAxMC41IDExLjIgMTAuNSAxMlMxMS4yIDEzLjUgMTIgMTMuNSAxMy41IDEyLjggMTMuNSAxMiAxMi44IDEwLjUgMTIgMTAuNU03LjUgMTVDNi43IDE1IDYgMTUuNyA2IDE2LjVDNiAxNy4zIDYuNyAxOCA3LjUgMThTOSAxNy4zIDkgMTYuNUM5IDE1LjcgOC4zIDE1IDcuNSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlNiA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNyw1QTIsMiAwIDAsMCA1LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSw3QTIsMiAwIDAsMCA3LDVNMTcsMTVBMiwyIDAgMCwwIDE1LDE3QTIsMiAwIDAsMCAxNywxOUEyLDIgMCAwLDAgMTksMTdBMiwyIDAgMCwwIDE3LDE1TTE3LDEwQTIsMiAwIDAsMCAxNSwxMkEyLDIgMCAwLDAgMTcsMTRBMiwyIDAgMCwwIDE5LDEyQTIsMiAwIDAsMCAxNywxME0xNyw1QTIsMiAwIDAsMCAxNSw3QTIsMiAwIDAsMCAxNyw5QTIsMiAwIDAsMCAxOSw3QTIsMiAwIDAsMCAxNyw1TTcsMTBBMiwyIDAgMCwwIDUsMTJBMiwyIDAgMCwwIDcsMTRBMiwyIDAgMCwwIDksMTJBMiwyIDAgMCwwIDcsMTBNNywxNUEyLDIgMCAwLDAgNSwxN0EyLDIgMCAwLDAgNywxOUEyLDIgMCAwLDAgOSwxN0EyLDIgMCAwLDAgNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlNk91dGxpbmUgPSBcIk0xOSA1VjE5SDVWNUgxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNNy41IDZDNi43IDYgNiA2LjcgNiA3LjVTNi43IDkgNy41IDkgOSA4LjMgOSA3LjUgOC4zIDYgNy41IDZNMTYuNSAxNUMxNS43IDE1IDE1IDE1LjcgMTUgMTYuNUMxNSAxNy4zIDE1LjcgMTggMTYuNSAxOEMxNy4zIDE4IDE4IDE3LjMgMTggMTYuNUMxOCAxNS43IDE3LjMgMTUgMTYuNSAxNU0xNi41IDEwLjVDMTUuNyAxMC41IDE1IDExLjIgMTUgMTJTMTUuNyAxMy41IDE2LjUgMTMuNUMxNy4zIDEzLjUgMTggMTIuOCAxOCAxMlMxNy4zIDEwLjUgMTYuNSAxMC41TTE2LjUgNkMxNS43IDYgMTUgNi43IDE1IDcuNVMxNS43IDkgMTYuNSA5QzE3LjMgOSAxOCA4LjMgMTggNy41UzE3LjMgNiAxNi41IDZNNy41IDEwLjVDNi43IDEwLjUgNiAxMS4yIDYgMTJTNi43IDEzLjUgNy41IDEzLjUgOSAxMi44IDkgMTIgOC4zIDEwLjUgNy41IDEwLjVNNy41IDE1QzYuNyAxNSA2IDE1LjcgNiAxNi41QzYgMTcuMyA2LjcgMTggNy41IDE4UzkgMTcuMyA5IDE2LjVDOSAxNS43IDguMyAxNSA3LjUgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQxMCA9IFwiTTEyIDJDMTEuNSAyIDExIDIuMTkgMTAuNTkgMi41OUwyLjU5IDEwLjU5QzEuOCAxMS4zNyAxLjggMTIuNjMgMi41OSAxMy40MUwxMC41OSAyMS40MUMxMS4zNyAyMi4yIDEyLjYzIDIyLjIgMTMuNDEgMjEuNDFMMjEuNDEgMTMuNDFDMjIuMiAxMi42MyAyMi4yIDExLjM3IDIxLjQxIDEwLjU5TDEzLjQxIDIuNTlDMTMgMi4xOSAxMi41IDIgMTIgMk0xNC4wNyA4LjIxQzE1LjUgOC4yMSAxNi42NCA5LjM2IDE2LjY0IDEwLjc4VjEzLjQyQzE2LjY0IDE0Ljg0IDE1LjUgMTYgMTQuMDcgMTZDMTIuNjQgMTYgMTEuNSAxNC44NCAxMS41IDEzLjQyVjEwLjc4QzExLjUgOS4zNiAxMi42NSA4LjIxIDE0LjA3IDguMjFNMTAuMzYgOC40MUgxMC41VjE2SDlWMTAuMjFMNy4yMiAxMC43NlY5LjUzTDEwLjM2IDguNDFNMTQuMDYgOS42NUMxMy40NyA5LjY1IDEzIDEwLjEzIDEzIDEwLjcxVjEzLjVDMTMgMTQuMDcgMTMuNDcgMTQuNTQgMTQuMDYgMTQuNTRDMTQuNjQgMTQuNTQgMTUuMTQgMTQuMDYgMTUuMTQgMTMuNVYxMC43MUMxNS4xNCAxMC4xMiAxNC42NCA5LjY1IDE0LjA2IDkuNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQxME91dGxpbmUgPSBcIk0xMC41IDE2SDlWMTAuMjFMNy4yMiAxMC43NlY5LjUzTDEwLjM2IDguNDFIMTAuNVYxNk0xNC4wNyA4LjIxQzE1LjUgOC4yMSAxNi42NCA5LjM2IDE2LjY0IDEwLjc4VjEzLjQyQzE2LjY0IDE0Ljg0IDE1LjUgMTYgMTQuMDcgMTZDMTIuNjQgMTYgMTEuNSAxNC44NCAxMS41IDEzLjQyVjEwLjc4QzExLjUgOS4zNiAxMi42NSA4LjIxIDE0LjA3IDguMjFNMTQuMDYgOS42NUMxMy40NyA5LjY1IDEzIDEwLjEzIDEzIDEwLjcxVjEzLjVDMTMgMTQuMDcgMTMuNDcgMTQuNTQgMTQuMDYgMTQuNTRDMTQuNjQgMTQuNTQgMTUuMTQgMTQuMDYgMTUuMTQgMTMuNVYxMC43MUMxNS4xNCAxMC4xMiAxNC42NCA5LjY1IDE0LjA2IDkuNjVNMTIgMkMxMS41IDIgMTEgMi4xOSAxMC41OSAyLjU5TDIuNTkgMTAuNTlDMS44IDExLjM3IDEuOCAxMi42MyAyLjU5IDEzLjQxTDEwLjU5IDIxLjQxQzExLjM3IDIyLjIgMTIuNjMgMjIuMiAxMy40MSAyMS40MUwyMS40MSAxMy40MUMyMi4yIDEyLjYzIDIyLjIgMTEuMzcgMjEuNDEgMTAuNTlMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyTTEyIDRMMjAgMTJMMTIgMjBMNCAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlRDEyID0gXCJNMTIgMkwxLjUgOS42NEw1LjUgMjJIMTguNUwyMi41IDkuNjRMMTIgMk0xMC41IDE3SDguODlWMTAuODlMNyAxMS40N1YxMC4xOUwxMC4zMSA5SDEwLjVWMTdNMTcgMTdIMTEuNjZWMTUuOTFDMTEuNjYgMTUuOTEgMTUuMjMgMTIuNDUgMTUuMjMgMTEuNEMxNS4yMyAxMC4xMiAxNC4xOCAxMC4yNSAxNC4xOCAxMC4yNUMxMy41IDEwLjMgMTMgMTAuODcgMTMgMTEuNTVIMTEuNDRDMTEuNSAxMC4wOSAxMi43MiA4Ljk0IDE0LjI3IDlDMTYuNzQgOSAxNi43NyAxMC44NSAxNi43NyAxMS4zQzE2Ljc3IDEzLjA3IDEzLjU4IDE1Ljc3IDEzLjU4IDE1Ljc3TDE3IDE1Ljc1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpY2VEMTJPdXRsaW5lID0gXCJNMTIsMkwxLjUsOS42NEw1LjUsMjJIMTguNUwyMi41LDkuNjRMMTIsMk0xNywyMEg3TDMuODUsMTAuNEwxMiw0LjQ3TDIwLjE1LDEwLjRMMTcsMjBNMTcsMTUuNzVWMTdIMTEuNjZWMTUuOTFDMTEuNjYsMTUuOTEgMTUuMjMsMTIuNDUgMTUuMjMsMTEuNEMxNS4yMywxMC4xMiAxNC4xOCwxMC4yNSAxNC4xOCwxMC4yNUMxMy41LDEwLjMgMTMsMTAuODcgMTMsMTEuNTVIMTEuNDRDMTEuNSwxMC4wOSAxMi43Miw4Ljk0IDE0LjI3LDlDMTYuNzQsOSAxNi43NywxMC44NSAxNi43NywxMS4zQzE2Ljc3LDEzLjA3IDEzLjU4LDE1Ljc3IDEzLjU4LDE1Ljc3TDE3LDE1Ljc1TTEwLjUsMTdIOC44OVYxMC44OUw3LDExLjQ3VjEwLjE5TDEwLjMxLDlIMTAuNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlRDIwID0gXCJNMjAuNDcgNi42MkwxMi41NyAyLjE4QzEyLjQxIDIuMDYgMTIuMjEgMiAxMiAyUzExLjU5IDIuMDYgMTEuNDMgMi4xOEwzLjUzIDYuNjJDMy4yMSA2Ljc5IDMgNy4xMiAzIDcuNVYxNi41QzMgMTYuODggMy4yMSAxNy4yMSAzLjUzIDE3LjM4TDExLjQzIDIxLjgyQzExLjU5IDIxLjk0IDExLjc5IDIyIDEyIDIyUzEyLjQxIDIxLjk0IDEyLjU3IDIxLjgyTDIwLjQ3IDE3LjM4QzIwLjc5IDE3LjIxIDIxIDE2Ljg4IDIxIDE2LjVWNy41QzIxIDcuMTIgMjAuNzkgNi43OSAyMC40NyA2LjYyTTExLjQ1IDE1Ljk2TDYuMzEgMTUuOTNWMTQuOTFDNi4zMSAxNC45MSA5Ljc0IDExLjU4IDkuNzUgMTAuNTdDOS43NSA5LjMzIDguNzMgOS40NiA4LjczIDkuNDZTNy43NSA5LjUgNy42NCAxMC43MUw2LjE0IDEwLjc2QzYuMTQgMTAuNzYgNi4xOCA4LjI2IDguODMgOC4yNkMxMS4yIDguMjYgMTEuMjMgMTAuMDQgMTEuMjMgMTAuNUMxMS4yMyAxMi4xOCA4LjE1IDE0Ljc3IDguMTUgMTQuNzdMMTEuNDUgMTQuNzZWMTUuOTZNMTcuNSAxMy41QzE3LjUgMTQuOSAxNi4zNSAxNi4wNSAxNC45MyAxNi4wNUMxMy41IDE2LjA1IDEyLjM2IDE0LjkgMTIuMzYgMTMuNVYxMC44NEMxMi4zNiA5LjQyIDEzLjUgOC4yNyAxNC45MyA4LjI3UzE3LjUgOS40MiAxNy41IDEwLjg0VjEzLjVNMTYgMTAuNzdWMTMuNTNDMTYgMTQuMTIgMTUuNSAxNC42IDE0LjkyIDE0LjZDMTQuMzQgMTQuNiAxMy44NiAxNC4xMiAxMy44NiAxMy41M1YxMC43N0MxMy44NiAxMC4xOCAxNC4zNCA5LjcxIDE0LjkyIDkuNzFDMTUuNSA5LjcxIDE2IDEwLjE4IDE2IDEwLjc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpY2VEMjBPdXRsaW5lID0gXCJNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsNC4xNUw1LDguMDlWMTUuOTFMMTIsMTkuODVMMTksMTUuOTFWOC4wOUwxMiw0LjE1TTE0LjkzLDguMjdBMi41NywyLjU3IDAgMCwxIDE3LjUsMTAuODRWMTMuNUMxNy41LDE0LjkgMTYuMzUsMTYuMDUgMTQuOTMsMTYuMDVDMTMuNSwxNi4wNSAxMi4zNiwxNC45IDEyLjM2LDEzLjVWMTAuODRBMi41NywyLjU3IDAgMCwxIDE0LjkzLDguMjdNMTQuOTIsOS43MUMxNC4zNCw5LjcxIDEzLjg2LDEwLjE4IDEzLjg2LDEwLjc3VjEzLjUzQzEzLjg2LDE0LjEyIDE0LjM0LDE0LjYgMTQuOTIsMTQuNkMxNS41LDE0LjYgMTYsMTQuMTIgMTYsMTMuNTNWMTAuNzdDMTYsMTAuMTggMTUuNSw5LjcxIDE0LjkyLDkuNzFNMTEuNDUsMTQuNzZWMTUuOTZMNi4zMSwxNS45M1YxNC45MUM2LjMxLDE0LjkxIDkuNzQsMTEuNTggOS43NSwxMC41N0M5Ljc1LDkuMzMgOC43Myw5LjQ2IDguNzMsOS40NkM4LjczLDkuNDYgNy43NSw5LjUgNy42NCwxMC43MUw2LjE0LDEwLjc2QzYuMTQsMTAuNzYgNi4xOCw4LjI2IDguODMsOC4yNkMxMS4yLDguMjYgMTEuMjMsMTAuMDQgMTEuMjMsMTAuNUMxMS4yMywxMi4xOCA4LjE1LDE0Ljc3IDguMTUsMTQuNzdMMTEuNDUsMTQuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQ0ID0gXCJNMTAuMjUgMTUuMTVMMTEuOTIgMTIuNDdWMTUuMTVIMTAuMjVNMjEuOTIgMjFIMi4wOEMxLjI0IDIxIC43MiAyMC4wOCAxLjE2IDE5LjM2TDExLjA4IDMuMTNDMTEuNSAyLjQ0IDEyLjUgMi40NCAxMi45MiAzLjEzTDIyLjg0IDE5LjM2QzIzLjI4IDIwLjA4IDIyLjc2IDIxIDIxLjkyIDIxTTE0LjI5IDE1LjE1SDEzLjQzVjEwLjQySDExLjkxTDguNzUgMTUuNDFMOC44MiAxNi4zNkgxMS45MlYxOEgxMy40M1YxNi4zNkgxNC4yOVYxNS4xNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlRDRPdXRsaW5lID0gXCJNMTMuNDMsMTUuMTVIMTQuMjlWMTYuMzZIMTMuNDNWMThIMTEuOTJWMTYuMzZIOC44Mkw4Ljc1LDE1LjQxTDExLjkxLDEwLjQySDEzLjQzVjE1LjE1TTEwLjI1LDE1LjE1SDExLjkyVjEyLjQ3TDEwLjI1LDE1LjE1TTIyLDIxSDJDMS42NCwyMSAxLjMxLDIwLjgxIDEuMTMsMjAuNUMwLjk1LDIwLjE4IDAuOTYsMTkuNzkgMS4xNSwxOS41TDExLjE1LDNDMTEuNSwyLjM4IDEyLjUsMi4zOCAxMi44NiwzTDIyLjg2LDE5LjVDMjMuMDQsMTkuNzkgMjMuMDUsMjAuMTggMjIuODcsMjAuNUMyMi42OSwyMC44MSAyMi4zNiwyMSAyMiwyMU0zLjc4LDE5SDIwLjIzTDEyLDUuNDNMMy43OCwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlRDYgPSBcIk0xMy4wNSAxMy41QzEzLjA1IDE0LjI3IDEyLjYxIDE0LjgzIDEyIDE0LjgzUzEwLjg1IDE0LjI3IDEwLjg1IDEzLjVMMTAuODMgMTIuNzhDMTAuODMgMTIuNzggMTEuMjEgMTIgMTEuOTUgMTIuMUMxMi41NiAxMi4xIDEzLjA1IDEyLjczIDEzLjA1IDEzLjVNMjEgNVYxOUMyMSAyMC4xMSAyMC4xMSAyMSAxOSAyMUg1QzMuOSAyMSAzIDIwLjExIDMgMTlWNUMzIDMuOSAzLjkgMyA1IDNIMTlDMjAuMTEgMyAyMSAzLjkgMjEgNU0xNC41NSAxMy40MUMxNC41IDExLjQ1IDEzLjE5IDEwLjg3IDEyLjUzIDEwLjg3QzExLjQxIDEwLjg3IDEwLjg2IDExLjUzIDEwLjg2IDExLjUzUzEwLjg5IDkuNSAxMy4zOSA5LjUzVjguMzNDMTMuMzkgOC4zMyA5LjMzIDcuOTQgOS4zIDEyLjY2QzkuMjcgMTYuODYgMTIuNzcgMTYgMTIuNzcgMTZTMTQuNjEgMTUuNDcgMTQuNTUgMTMuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQ2T3V0bGluZSA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINU0xMy4zOSw5LjUzQzEwLjg5LDkuNSAxMC44NiwxMS41MyAxMC44NiwxMS41M0MxMC44NiwxMS41MyAxMS40MSwxMC44NyAxMi41MywxMC44N0MxMy4xOSwxMC44NyAxNC41LDExLjQ1IDE0LjU1LDEzLjQxQzE0LjYxLDE1LjQ3IDEyLjc3LDE2IDEyLjc3LDE2QzEyLjc3LDE2IDkuMjcsMTYuODYgOS4zLDEyLjY2QzkuMzMsNy45NCAxMy4zOSw4LjMzIDEzLjM5LDguMzNWOS41M00xMS45NSwxMi4xQzExLjIxLDEyIDEwLjgzLDEyLjc4IDEwLjgzLDEyLjc4TDEwLjg1LDEzLjVDMTAuODUsMTQuMjcgMTEuMzksMTQuODMgMTIsMTQuODNDMTIuNjEsMTQuODMgMTMuMDUsMTQuMjcgMTMuMDUsMTMuNUMxMy4wNSwxMi43MyAxMi41NiwxMi4xIDExLjk1LDEyLjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQ4ID0gXCJNMTIgMkMxMS41IDIgMTEgMi4xOSAxMC41OSAyLjU5TDIuNTkgMTAuNTlDMS44IDExLjM3IDEuOCAxMi42MyAyLjU5IDEzLjQxTDEwLjU5IDIxLjQxQzExLjM3IDIyLjIgMTIuNjMgMjIuMiAxMy40MSAyMS40MUwyMS40MSAxMy40MUMyMi4yIDEyLjYzIDIyLjIgMTEuMzcgMjEuNDEgMTAuNTlMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyTTEyIDguMjVDMTMuMzEgOC4yNSAxNC4zOCA5LjIgMTQuMzggMTAuMzhDMTQuMzggMTEuMDcgMTQgMTEuNjggMTMuNDQgMTIuMDdDMTQuMTQgMTIuNDYgMTQuNiAxMy4xMyAxNC42IDEzLjlDMTQuNiAxNS4xMiAxMy40NCAxNi4xIDEyIDE2LjFDMTAuNTYgMTYuMSA5LjQgMTUuMTIgOS40IDEzLjlDOS40IDEzLjEzIDkuODYgMTIuNDYgMTAuNTYgMTIuMDdDMTAgMTEuNjggOS42MyAxMS4wNyA5LjYzIDEwLjM4QzkuNjMgOS4yIDEwLjY5IDguMjUgMTIgOC4yNU0xMiA5LjVDMTEuNSA5LjUgMTEuMSA5Ljk1IDExLjEgMTAuNUMxMS4xIDExLjA1IDExLjUgMTEuNSAxMiAxMS41QzEyLjUgMTEuNSAxMi45IDExLjA1IDEyLjkgMTAuNUMxMi45IDkuOTUgMTIuNSA5LjUgMTIgOS41TTEyIDEyLjY1QzExLjM5IDEyLjY1IDEwLjkgMTMuMTQgMTAuOSAxMy43NUMxMC45IDE0LjM2IDExLjM5IDE0Ljg1IDEyIDE0Ljg1QzEyLjYxIDE0Ljg1IDEzLjEgMTQuMzYgMTMuMSAxMy43NUMxMy4xIDEzLjE0IDEyLjYxIDEyLjY1IDEyIDEyLjY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpY2VEOE91dGxpbmUgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTIgNEwyMCAxMkwxMiAyMEw0IDEyTTEyIDguMjVDMTMuMzEgOC4yNSAxNC4zOCA5LjIgMTQuMzggMTAuMzhDMTQuMzggMTEuMDcgMTQgMTEuNjggMTMuNDQgMTIuMDdDMTQuMTQgMTIuNDYgMTQuNiAxMy4xMyAxNC42IDEzLjlDMTQuNiAxNS4xMiAxMy40NCAxNi4xIDEyIDE2LjFDMTAuNTYgMTYuMSA5LjQgMTUuMTIgOS40IDEzLjlDOS40IDEzLjEzIDkuODYgMTIuNDYgMTAuNTYgMTIuMDdDMTAgMTEuNjggOS42MyAxMS4wNyA5LjYzIDEwLjM4QzkuNjMgOS4yIDEwLjY5IDguMjUgMTIgOC4yNU0xMiAxMi42NUMxMS4zOSAxMi42NSAxMC45IDEzLjE0IDEwLjkgMTMuNzVDMTAuOSAxNC4zNiAxMS4zOSAxNC44NSAxMiAxNC44NUMxMi42MSAxNC44NSAxMy4xIDE0LjM2IDEzLjEgMTMuNzVDMTMuMSAxMy4xNCAxMi42MSAxMi42NSAxMiAxMi42NU0xMiA5LjVDMTEuNSA5LjUgMTEuMSA5Ljk1IDExLjEgMTAuNUMxMS4xIDExLjA1IDExLjUgMTEuNSAxMiAxMS41QzEyLjUgMTEuNSAxMi45IDExLjA1IDEyLjkgMTAuNUMxMi45IDkuOTUgMTIuNSA5LjUgMTIgOS41XCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZU11bHRpcGxlID0gXCJNMTkuNzgsM0gxMS4yMkMxMC41NSwzIDEwLDMuNTUgMTAsNC4yMlY4SDE2VjE0SDE5Ljc4QzIwLjQ1LDE0IDIxLDEzLjQ1IDIxLDEyLjc4VjQuMjJDMjEsMy41NSAyMC40NSwzIDE5Ljc4LDNNMTIuNDQsNi42N0MxMS43Niw2LjY3IDExLjIxLDYuMTIgMTEuMjEsNS40NEMxMS4yMSw0Ljc2IDExLjc2LDQuMjEgMTIuNDQsNC4yMUExLjIzLDEuMjMgMCAwLDEgMTMuNjcsNS40NEMxMy42Nyw2LjEyIDEzLjEyLDYuNjcgMTIuNDQsNi42N00xOC41NiwxMi43OEMxNy44OCwxMi43OSAxNy4zMywxMi4yNCAxNy4zMiwxMS41NkMxNy4zMSwxMC44OCAxNy44NiwxMC4zMyAxOC41NCwxMC4zMkMxOS4yMiwxMC4zMSAxOS43NywxMC44NiAxOS43OCwxMS41NkMxOS43NywxMi4yMyAxOS4yMywxMi43NyAxOC41NiwxMi43OE0xOC41Niw2LjY3QzE3Ljg4LDYuNjggMTcuMzMsNi4xMyAxNy4zMiw1LjQ1QzE3LjMxLDQuNzcgMTcuODYsNC4yMiAxOC41NCw0LjIxQzE5LjIyLDQuMiAxOS43Nyw0Ljc1IDE5Ljc4LDUuNDRDMTkuNzgsNi4xMiAxOS4yNCw2LjY2IDE4LjU2LDYuNjdNNC4yMiwxMEgxMi43OEExLjIyLDEuMjIgMCAwLDEgMTQsMTEuMjJWMTkuNzhDMTQsMjAuNDUgMTMuNDUsMjEgMTIuNzgsMjFINC4yMkMzLjU1LDIxIDMsMjAuNDUgMywxOS43OFYxMS4yMkMzLDEwLjU1IDMuNTUsMTAgNC4yMiwxME04LjUsMTQuMjhDNy44MywxNC4yOCA3LjI4LDE0LjgzIDcuMjgsMTUuNUM3LjI4LDE2LjE3IDcuODMsMTYuNzIgOC41LDE2LjcyQzkuMTcsMTYuNzIgOS43MiwxNi4xNyA5LjcyLDE1LjVBMS4yMiwxLjIyIDAgMCwwIDguNSwxNC4yOE01LjQ0LDExLjIyQzQuNzcsMTEuMjIgNC4yMiwxMS43NyA0LjIyLDEyLjQ0QTEuMjIsMS4yMiAwIDAsMCA1LjQ0LDEzLjY2QzYuMTEsMTMuNjYgNi42NiwxMy4xMSA2LjY2LDEyLjQ0VjEyLjQ0QzYuNjYsMTEuNzcgNi4xMSwxMS4yMiA1LjQ0LDExLjIyTTExLjU1LDE3LjMzQzEwLjg4LDE3LjMzIDEwLjMzLDE3Ljg4IDEwLjMzLDE4LjU1QzEwLjMzLDE5LjIyIDEwLjg4LDE5Ljc3IDExLjU1LDE5Ljc3QTEuMjIsMS4yMiAwIDAsMCAxMi43NywxOC41NUgxMi43N0MxMi43NywxNy44OCAxMi4yMywxNy4zNCAxMS41NiwxNy4zM0gxMS41NVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlTXVsdGlwbGVPdXRsaW5lID0gXCJNMTQgOEMxMy40NSA4IDEzIDcuNTUgMTMgN1MxMy40NSA2IDE0IDZDMTQuNTUgNiAxNSA2LjQ1IDE1IDdDMTUgNy41NSAxNC41NSA4IDE0IDhNMTIgMTJWMTlINVYxMkgxMk0xMi43OCAxMEg0LjIyQzMuNTUgMTAgMyAxMC41NSAzIDExLjIyVjE5Ljc4QzMgMjAuNDUgMy41NSAyMSA0LjIyIDIxSDEyLjc4QzEzLjQ1IDIxIDE0IDIwLjQ1IDE0IDE5Ljc4VjExLjIyQzE0IDEwLjU1IDEzLjQ1IDEwIDEyLjc4IDEwTTE5Ljc4IDNIMTEuMjJDMTAuNTUgMyAxMCAzLjU1IDEwIDQuMjJWOEgxMlY1SDE5VjEySDE2VjE0SDE5Ljc4QzIwLjQ1IDE0IDIxIDEzLjQ1IDIxIDEyLjc4VjQuMjJDMjEgMy41NSAyMC40NSAzIDE5Ljc4IDNNMTcgOEMxNi40NSA4IDE2IDcuNTUgMTYgN1MxNi40NSA2IDE3IDZDMTcuNTUgNiAxOCA2LjQ1IDE4IDdDMTggNy41NSAxNy41NSA4IDE3IDhNMTcgMTFDMTYuNDUgMTEgMTYgMTAuNTUgMTYgMTBTMTYuNDUgOSAxNyA5QzE3LjU1IDkgMTggOS40NSAxOCAxMEMxOCAxMC41NSAxNy41NSAxMSAxNyAxMU03IDE1QzYuNDUgMTUgNiAxNC41NSA2IDE0UzYuNDUgMTMgNyAxM0M3LjU1IDEzIDggMTMuNDUgOCAxNEM4IDE0LjU1IDcuNTUgMTUgNyAxNU0xMCAxOEM5LjQ1IDE4IDkgMTcuNTUgOSAxN1M5LjQ1IDE2IDEwIDE2QzEwLjU1IDE2IDExIDE2LjQ1IDExIDE3QzExIDE3LjU1IDEwLjU1IDE4IDEwIDE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlnaXRhbE9jZWFuID0gXCJNNiAxMkgyQzIgNi41IDYuNSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJWMThIOFYxNEgxMlYxOEMxNS4zMiAxOCAxOCAxNS4zMSAxOCAxMkMxOCA4LjY5IDE1LjMxIDYgMTIgNkM4LjY5IDYgNiA4LjY5IDYgMTJNOCAxOFYyMUg1VjE4SDhNMyAxNkg1VjE4SDNWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlwU3dpdGNoID0gXCJNMyw0SDdBMSwxIDAgMCwxIDgsNVYxOUExLDEgMCAwLDEgNywyMEgzQTEsMSAwIDAsMSAyLDE5VjVBMSwxIDAgMCwxIDMsNE0xMCw0SDE0QTEsMSAwIDAsMSAxNSw1VjE5QTEsMSAwIDAsMSAxNCwyMEgxMEExLDEgMCAwLDEgOSwxOVY1QTEsMSAwIDAsMSAxMCw0TTE3LDRIMjFBMSwxIDAgMCwxIDIyLDVWMTlBMSwxIDAgMCwxIDIxLDIwSDE3QTEsMSAwIDAsMSAxNiwxOVY1QTEsMSAwIDAsMSAxNyw0TTQsMThINlYxM0g0VjE4TTExLDExSDEzVjZIMTFWMTFNMTgsMThIMjBWMTNIMThWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlyZWN0aW9ucyA9IFwiTTE0LDE0LjVWMTJIMTBWMTVIOFYxMUExLDEgMCAwLDEgOSwxMEgxNFY3LjVMMTcuNSwxMU0yMS43MSwxMS4yOUwxMi43MSwyLjI5SDEyLjdDMTIuMzEsMS45IDExLjY4LDEuOSAxMS4yOSwyLjI5TDIuMjksMTEuMjlDMS45LDExLjY4IDEuOSwxMi4zMiAyLjI5LDEyLjcxTDExLjI5LDIxLjcxQzExLjY4LDIyLjA5IDEyLjMxLDIyLjEgMTIuNzEsMjEuNzFMMjEuNzEsMTIuNzFDMjIuMSwxMi4zMiAyMi4xLDExLjY4IDIxLjcxLDExLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpcmVjdGlvbnNGb3JrID0gXCJNMyw0VjEyLjVMNiw5LjVMOSwxM0MxMCwxNCAxMCwxNSAxMCwxNVYyMUgxNFYxNEMxNCwxNCAxNCwxMyAxMy40NywxMkMxMi45NCwxMSAxMiwxMCAxMiwxMEw5LDYuNThMMTEuNSw0TTE4LDRMMTMuNTQsOC40N0wxNCw5QzE0LDkgMTQuOTMsMTAgMTUuNDcsMTFDMTUuNjgsMTEuNCAxNS44LDExLjc5IDE1Ljg3LDEyLjEzTDIxLDdcIjtcclxuZXhwb3J0IHZhciBtZGlEaXNjID0gXCJNMTIsMTRDMTAuODksMTQgMTAsMTMuMSAxMCwxMkMxMCwxMC44OSAxMC44OSwxMCAxMiwxMEMxMy4xMSwxMCAxNCwxMC44OSAxNCwxMkEyLDIgMCAwLDEgMTIsMTRNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc2NBbGVydCA9IFwiTTEwIDE0QzguOSAxNCA4IDEzLjEgOCAxMkM4IDEwLjkgOC45IDEwIDEwIDEwQzExLjEgMTAgMTIgMTAuOSAxMiAxMlMxMS4xIDE0IDEwIDE0TTEwIDRDNS42IDQgMiA3LjYgMiAxMlM1LjYgMjAgMTAgMjAgMTggMTYuNCAxOCAxMiAxNC40IDQgMTAgNE0yMCAxM0gyMlY3SDIwTTIwIDE3SDIyVjE1SDIwVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc2NQbGF5ZXIgPSBcIk0xNC41LDEwLjM3QzE1LjU0LDEwLjM3IDE2LjM4LDkuNTMgMTYuMzgsOC41QzE2LjM4LDcuNDYgMTUuNTQsNi42MyAxNC41LDYuNjNDMTMuNDYsNi42MyAxMi42Myw3LjQ2IDEyLjYzLDguNUExLjg3LDEuODcgMCAwLDAgMTQuNSwxMC4zN00xNC41LDFBNy41LDcuNSAwIDAsMSAyMiw4LjVDMjIsMTAuNjcgMjEuMDgsMTIuNjMgMTkuNiwxNEg5LjRDNy45MywxMi42MyA3LDEwLjY3IDcsOC41QzcsNC4zNSAxMC4zNiwxIDE0LjUsMU02LDIxVjIySDRWMjFIMlYxNUgyMlYyMUgyMFYyMkgxOFYyMUg2TTQsMThWMTlIMTNWMThINE0xNSwxN1YxOUgxN1YxN0gxNU0xOSwxN0ExLDEgMCAwLDAgMTgsMThBMSwxIDAgMCwwIDE5LDE5QTEsMSAwIDAsMCAyMCwxOEExLDEgMCAwLDAgMTksMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzY29yZCA9IFwiTTIyLDI0TDE2Ljc1LDE5TDE3LjM4LDIxSDQuNUEyLjUsMi41IDAgMCwxIDIsMTguNVYzLjVBMi41LDIuNSAwIDAsMSA0LjUsMUgxOS41QTIuNSwyLjUgMCAwLDEgMjIsMy41VjI0TTEyLDYuOEM5LjMyLDYuOCA3LjQ0LDcuOTUgNy40NCw3Ljk1QzguNDcsNy4wMyAxMC4yNyw2LjUgMTAuMjcsNi41TDEwLjEsNi4zM0M4LjQxLDYuMzYgNi44OCw3LjUzIDYuODgsNy41M0M1LjE2LDExLjEyIDUuMjcsMTQuMjIgNS4yNywxNC4yMkM2LjY3LDE2LjAzIDguNzUsMTUuOSA4Ljc1LDE1LjlMOS40NiwxNUM4LjIxLDE0LjczIDcuNDIsMTMuNjIgNy40MiwxMy42MkM3LjQyLDEzLjYyIDkuMywxNC45IDEyLDE0LjlDMTQuNywxNC45IDE2LjU4LDEzLjYyIDE2LjU4LDEzLjYyQzE2LjU4LDEzLjYyIDE1Ljc5LDE0LjczIDE0LjU0LDE1TDE1LjI1LDE1LjlDMTUuMjUsMTUuOSAxNy4zMywxNi4wMyAxOC43MywxNC4yMkMxOC43MywxNC4yMiAxOC44NCwxMS4xMiAxNy4xMiw3LjUzQzE3LjEyLDcuNTMgMTUuNTksNi4zNiAxMy45LDYuMzNMMTMuNzMsNi41QzEzLjczLDYuNSAxNS41Myw3LjAzIDE2LjU2LDcuOTVDMTYuNTYsNy45NSAxNC42OCw2LjggMTIsNi44TTkuOTMsMTAuNTlDMTAuNTgsMTAuNTkgMTEuMTEsMTEuMTYgMTEuMSwxMS44NkMxMS4xLDEyLjU1IDEwLjU4LDEzLjEzIDkuOTMsMTMuMTNDOS4yOSwxMy4xMyA4Ljc3LDEyLjU1IDguNzcsMTEuODZDOC43NywxMS4xNiA5LjI4LDEwLjU5IDkuOTMsMTAuNTlNMTQuMSwxMC41OUMxNC43NSwxMC41OSAxNS4yNywxMS4xNiAxNS4yNywxMS44NkMxNS4yNywxMi41NSAxNC43NSwxMy4xMyAxNC4xLDEzLjEzQzEzLjQ2LDEzLjEzIDEyLjk0LDEyLjU1IDEyLjk0LDExLjg2QzEyLjk0LDExLjE2IDEzLjQ1LDEwLjU5IDE0LjEsMTAuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzaHdhc2hlciA9IFwiTTE4LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY0QTIsMiAwIDAsMCAxOCwyTTEwLDRBMSwxIDAgMCwxIDExLDVBMSwxIDAgMCwxIDEwLDZBMSwxIDAgMCwxIDksNUExLDEgMCAwLDEgMTAsNE03LDRBMSwxIDAgMCwxIDgsNUExLDEgMCAwLDEgNyw2QTEsMSAwIDAsMSA2LDVBMSwxIDAgMCwxIDcsNE0xOCwyMEg2VjhIMThWMjBNMTQuNjcsMTUuMzNDMTQuNjksMTYuMDMgMTQuNDEsMTYuNzEgMTMuOTEsMTcuMjFDMTIuODYsMTguMjYgMTEuMTUsMTguMjcgMTAuMDksMTcuMjFDOS41OSwxNi43MSA5LjMxLDE2LjAzIDkuMzMsMTUuMzNDOS40LDE0LjYyIDkuNjMsMTMuOTQgMTAsMTMuMzNDMTAuMzcsMTIuNSAxMC44MSwxMS43MyAxMS4zMywxMUwxMiwxMEMxMy43OSwxMi41OSAxNC42NywxNC4zNiAxNC42NywxNS4zM1wiO1xyXG5leHBvcnQgdmFyIG1kaURpc2h3YXNoZXJBbGVydCA9IFwiTTE2IDJINEMyLjkgMiAyIDIuOSAyIDRWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxNkMxNy4xMSAyMiAxOCAyMS4xMSAxOCAyMFY0QzE4IDIuOSAxNy4xMSAyIDE2IDJNOCA0QzguNTUgNCA5IDQuNDUgOSA1UzguNTUgNiA4IDYgNyA1LjU1IDcgNSA3LjQ1IDQgOCA0TTUgNEM1LjU1IDQgNiA0LjQ1IDYgNVM1LjU1IDYgNSA2IDQgNS41NSA0IDUgNC40NSA0IDUgNE0xNiAyMEg0VjhIMTZWMjBNMTIuNjcgMTUuMzNDMTIuNjkgMTYuMDMgMTIuNDEgMTYuNzEgMTEuOTEgMTcuMjFDMTAuODYgMTguMjYgOS4xNSAxOC4yNyA4LjA5IDE3LjIxQzcuNTkgMTYuNzEgNy4zMSAxNi4wMyA3LjMzIDE1LjMzQzcuNCAxNC42MiA3LjYzIDEzLjk0IDggMTMuMzNDOC4zNyAxMi41IDguODEgMTEuNzMgOS4zMyAxMUwxMCAxMEMxMS43OSAxMi41OSAxMi42NyAxNC4zNiAxMi42NyAxNS4zM00yMCAxNUgyMlYxN0gyMFYxNU0yMCA3SDIyVjEzSDIwVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzaHdhc2hlck9mZiA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNCA1Ljg5VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE4LjU4IDIyIDE5LjEgMjEuNzUgMTkuNDYgMjEuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTggMjBINlY4SDYuMTFMMTAuNSAxMi4zN0MxMC4zMSAxMi42OSAxMC4xNSAxMyAxMCAxMy4zM0M5LjYzIDEzLjk0IDkuNCAxNC42MiA5LjMzIDE1LjMzQzkuMzEgMTYuMDMgOS41OSAxNi43MSAxMC4wOSAxNy4yMUMxMS4xNSAxOC4yNyAxMi44NiAxOC4yNiAxMy45MSAxNy4yMUMxNC4xNiAxNi45NyAxNC4zNSAxNi42OCAxNC41IDE2LjM2TDE4IDE5Ljg5VjIwTTExLjIgOEgxOFYxNC44TDIwIDE2LjhWNEMyMCAyLjkgMTkuMTEgMiAxOCAySDZDNS43NiAyIDUuNTQgMi4wNSA1LjMzIDIuMTNMMTEuMiA4TTEwIDRDMTAuNTUgNCAxMSA0LjQ1IDExIDVTMTAuNTUgNiAxMCA2IDkgNS41NSA5IDUgOS40NSA0IDEwIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzcXVzID0gXCJNMTIuMDgsMjJDOS42MywyMiA3LjM5LDIxLjExIDUuNjYsMTkuNjNMMS40MSwyMC4yMUwzLjA1LDE2LjE1QzIuNSwxNC44OCAyLjE2LDEzLjUgMi4xNiwxMkMyLjE2LDYuNSA2LjYsMiAxMi4wOCwyQzE3LjU2LDIgMjIsNi41IDIyLDEyQzIyLDE3LjUgMTcuNTYsMjIgMTIuMDgsMjJNMTcuNSwxMS45N1YxMS45NEMxNy41LDkuMDYgMTUuNDYsNyAxMS45NSw3SDguMTZWMTdIMTEuOUMxNS40MywxNyAxNy41LDE0Ljg2IDE3LjUsMTEuOTdNMTIsMTQuNTRIMTAuODlWOS40NkgxMkMxMy42Miw5LjQ2IDE0LjcsMTAuMzkgMTQuNywxMlYxMkMxNC43LDEzLjYzIDEzLjYyLDE0LjU0IDEyLDE0LjU0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc3RyaWJ1dGVIb3Jpem9udGFsQ2VudGVyID0gXCJNOCAyVjVIMTBWMTlIOFYyMkg2VjE5SDRWNUg2VjJIOE0xNiAyVjdIMTRWMTdIMTZWMjJIMThWMTdIMjBWN0gxOFYySDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc3RyaWJ1dGVIb3Jpem9udGFsTGVmdCA9IFwiTTIxIDdWMTdIMTZWMjJIMTRWMkgxNlY3SDIxTTUgMkgzVjIySDVWMTlIMTBWNUg1VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzdHJpYnV0ZUhvcml6b250YWxSaWdodCA9IFwiTTMgMTdWN0g4VjJIMTBWMjJIOFYxN0gzTTE5IDIySDIxVjJIMTlWNUgxNFYxOUgxOVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXN0cmlidXRlVmVydGljYWxCb3R0b20gPSBcIk03IDNIMTdWOEgyMlYxMEgyVjhIN1YzTTIgMTlWMjFIMjJWMTlIMTlWMTRINVYxOUgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc3RyaWJ1dGVWZXJ0aWNhbENlbnRlciA9IFwiTTIgMTZINVYxNEgxOVYxNkgyMlYxOEgxOVYyMEg1VjE4SDJWMTZNMiA4SDdWMTBIMTdWOEgyMlY2SDE3VjRIN1Y2SDJWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXN0cmlidXRlVmVydGljYWxUb3AgPSBcIk0xNyAyMUg3VjE2SDJWMTRIMjJWMTZIMTdWMjFNMjIgNVYzSDJWNUg1VjEwSDE5VjVIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGl2aW5nRmxpcHBlcnMgPSBcIk0yMC4yOCwzLjY2QzE5LjI4LDMuNDQgMTguNTQsMi4yNSAxNy41NywyLjA0QzE2LjYsMS44MyAxNS40LDIuNTkgMTQuNDIsMi4zN0MxMy4zOCwyIDEyLjIyLDIuMTMgMTEuMjgsMi43MUwxMS4yMSwxN0wxMSwxOEMxMC42NCwxOS42MiAxMS42NywyMS4yMiAxMy4yOSwyMS41OEMxNC45LDIxLjkzIDE2LjUsMjAuOTEgMTYuODYsMTkuMjlMMTcuMDcsMTguMjlMMjMsNS4yOEMyMi4zOSw0LjM1IDIxLjM5LDMuNzYgMjAuMjgsMy42Nk0xNC45MSwxOC44NkMxNC43OSwxOS40MSAxNC4yNSwxOS43NiAxMy43LDE5LjY1QzEzLjE0LDE5LjUzIDEyLjc5LDE5IDEyLjkxLDE4LjQzTDEzLjc3LDE0LjVDMTMuODYsMTMuOTcgMTQuMzcsMTMuNiAxNC45MiwxMy42OUMxNS40NiwxMy43OCAxNS44MywxNC4zIDE1Ljc0LDE0Ljg0QzE1Ljc0LDE0Ljg4IDE1LjczLDE0LjkxIDE1LjcyLDE0Ljk1TDE0LjkxLDE4Ljg2TTkuNzIsMjEuMzRDOS4zMywyMC43MyA5LjA4LDIwLjA1IDksMTkuMzRMOC4yNCwxNkM4LjEsMTUuNDcgOC40MSwxNC45MiA5LDE0Ljc2QzkuMDcsMTQuNzUgOS4xNSwxNC43NSA5LjIyLDE0Ljc2VjMuNDNDOC4zMSwzLjQzIDcuMjIsMi44NiA2LjM4LDMuMDZDNS41NCwzLjI2IDQuNjksNC40NCAzLjcyLDQuNjZDMi42MSw0Ljc2IDEuNjEsNS4zNSAxLDYuMjhMNi45MywxOS4yOEw3LjE0LDIwLjI4QzcuNSwyMS45IDkuMDksMjIuOTIgMTAuNzEsMjIuNTdIMTAuODFDMTAuMzgsMjIuMjIgMTAsMjEuODEgOS43MiwyMS4zNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXZpbmdIZWxtZXQgPSBcIk0xNiwxMkE0LDQgMCAwLDEgMTIsMTZBNCw0IDAgMCwxIDgsMTJBNCw0IDAgMCwxIDEyLDhBNCw0IDAgMCwxIDE2LDEyTTE5LjQ1LDcuODlMMTguMDcsOC41OEwxOC4zMiw5SDIwVjE1SDE4LjMzQzE3Ljg0LDE2LjAzIDE3LjExLDE2LjkyIDE2LjIxLDE3LjZDMTcuODUsMTguMTEgMTkuMSwxOC45MSAxOS42NywxOS44NkMxOC42OSwyMS4xIDE1LjYyLDIyIDEyLDIyQzguMzgsMjIgNS4zMSwyMS4xIDQuMzMsMTkuODZDNC45LDE4LjkxIDYuMTUsMTguMTEgNy43OSwxNy42QzYuODksMTYuOTIgNi4xNiwxNi4wMyA1LjY3LDE1SDRWOUg1LjY4QzYuMzcsNy41NCA3LjU0LDYuMzcgOSw1LjY4VjRIMTVWNS42OEMxNS42OCw2IDE2LjI5LDYuNDYgMTYuODIsN0wxOC41NSw2LjE0QzE5LjkzLDUuNDIgMjAsNC4xIDIwLDJIMjJDMjIsNC4wNiAyMiw2LjYyIDE5LjQ1LDcuODlNMTcsMTJBNSw1IDAgMCwwIDEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXZpbmdTY3ViYSA9IFwiTTEyLDE1QzEzLjMxLDE1IDE0LjQyLDE1LjgzIDE0LjgzLDE3SDE4QTQsNCAwIDAsMSAyMiwyMVYyMkgyMFYyMUEyLDIgMCAwLDAgMTgsMTlIMTQuODNDMTQuNDIsMjAuMTcgMTMuMzEsMjEgMTIsMjFBMywzIDAgMCwxIDksMThBMywzIDAgMCwxIDEyLDE1TTEyLDE3QTEsMSAwIDAsMCAxMSwxOEExLDEgMCAwLDAgMTIsMTlBMSwxIDAgMCwwIDEzLDE4QTEsMSAwIDAsMCAxMiwxN00xOCwzQTIsMiAwIDAsMSAyMCw1VjEwQTIsMiAwIDAsMSAxOCwxMkgxNC44NUMxNC40MywxMiAxNC4wNSwxMi4yNCAxMy45LDEyLjYzQzEzLjcsMTMuMjMgMTMuMjMsMTMuNzEgMTIuNjIsMTMuOTFDMTEuNTgsMTQuMjUgMTAuNDQsMTMuNjggMTAuMSwxMi42M0M5Ljk1LDEyLjI0IDkuNTcsMTIgOS4xNSwxMkg2QTIsMiAwIDAsMSA0LDEwVjVBMiwyIDAgMCwxIDYsM0gxOE0xOCwxMFY1SDZWMTBIMTAuNjVDMTAuOSw5LjQ2IDExLjQxLDkuMDkgMTIsOUMxMi41OSw5LjA5IDEzLjEsOS40NiAxMy4zNSwxMEgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXZpbmdTY3ViYUZsYWcgPSBcIk0yLDZMMTksMjBIMlY2TTUsNEwyMiwxOFY0SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGl2aW5nU2N1YmFUYW5rID0gXCJNMTksMTguNUEyLjUsMi41IDAgMCwxIDE2LjUsMjFBMi41LDIuNSAwIDAsMSAxNCwxOC41QzE0LDE3LjQ3IDE0LjYyLDE2LjU5IDE1LjUsMTYuMjFWNkgxMVY3LjM1QzEyLjIyLDcuOTMgMTMsOS4xNSAxMywxMC41VjIySDZWMTAuNUM2LDkuMTUgNi43OCw3LjkzIDgsNy4zNVY2SDZWNEg4VjMuNUExLjUsMS41IDAgMCwxIDkuNSwyQTEuNSwxLjUgMCAwLDEgMTEsMy41VjRIMTUuNUEyLDIgMCAwLDEgMTcuNSw2VjE2LjIxQzE4LjM4LDE2LjU5IDE5LDE3LjQ3IDE5LDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGl2aW5nU2N1YmFUYW5rTXVsdGlwbGUgPSBcIk0yMiwxOC41QTIuNSwyLjUgMCAwLDEgMTkuNSwyMUEyLjUsMi41IDAgMCwxIDE3LDE4LjVDMTcsMTcuNDcgMTcuNjIsMTYuNTkgMTguNSwxNi4yMVY2SDE0VjcuMzVDMTUuMjIsNy45MyAxNiw5LjE1IDE2LDEwLjVWMjJIMlYxMC41QzIsOS4xNSAyLjc4LDcuOTMgNCw3LjM1VjZIMlY0SDRWMy41QTEuNSwxLjUgMCAwLDEgNS41LDJBMS41LDEuNSAwIDAsMSA3LDMuNVY0SDExVjMuNUExLjUsMS41IDAgMCwxIDEyLjUsMkExLjUsMS41IDAgMCwxIDE0LDMuNVY0SDE4LjVBMiwyIDAgMCwxIDIwLjUsNlYxNi4yMUMyMS4zOCwxNi41OSAyMiwxNy40NyAyMiwxOC41TTExLDcuMzVWNkg3VjcuMzVDOC4yMiw3LjkzIDksOS4xNSA5LDEwLjVDOSw5LjE1IDkuNzgsNy45MyAxMSw3LjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpdmluZ1Nub3JrZWwgPSBcIk0xNiwzSDRBMiwyIDAgMCwwIDIsNVYxMEEyLDIgMCAwLDAgNCwxMkg3LjE1QzcuNTcsMTIgNy45NSwxMi4yNCA4LjEsMTIuNjNDOC40NCwxMy42OCA5LjU4LDE0LjI1IDEwLjYyLDEzLjkxQzExLjIzLDEzLjcxIDExLjcsMTMuMjMgMTEuOSwxMi42M0MxMi4wNSwxMi4yNCAxMi40MywxMiAxMi44NSwxMkgxNkEyLDIgMCAwLDAgMTgsMTBWNUEyLDIgMCAwLDAgMTYsM00xNiwxMEgxMS4zNUMxMS4xLDkuNDYgMTAuNTksOS4wOSAxMCw5QzkuNDEsOS4wOSA4LjksOS40NiA4LjY1LDEwSDRWNUgxNlYxME0yMiwyVjE1LjVBNi41LDYuNSAwIDAsMSAxNS41LDIyQzEzLjc5LDIyIDEyLjE1LDIxLjMyIDEwLjkzLDIwLjEyQzguOTUsMjAuNTggNi44OCwxOS43OSA1LjcxLDE4LjEyTDcuNjIsMTcuMjlDOC41LDE4LjIyIDkuODQsMTguNSAxMSwxOEMxMS4yLDE3LjkxIDExLjM5LDE3LjggMTEuNTYsMTcuNjdDMTIuNCwxNy4wNSAxMi44NywxNi4wNCAxMi43OCwxNUwxNC42OSwxNC4xN0MxNS4xLDE2LjA0IDE0LjQxLDE4IDEyLjksMTkuMTdDMTMuNjYsMTkuNzEgMTQuNTcsMjAgMTUuNSwyMEMxOCwyMCAyMCwxOCAyMCwxNS41VjJIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGl2aXNpb24gPSBcIk0xOSwxM0g1VjExSDE5VjEzTTEyLDVBMiwyIDAgMCwxIDE0LDdBMiwyIDAgMCwxIDEyLDlBMiwyIDAgMCwxIDEwLDdBMiwyIDAgMCwxIDEyLDVNMTIsMTVBMiwyIDAgMCwxIDE0LDE3QTIsMiAwIDAsMSAxMiwxOUEyLDIgMCAwLDEgMTAsMTdBMiwyIDAgMCwxIDEyLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpdmlzaW9uQm94ID0gXCJNMTcsMTNWMTFIN1YxM0gxN00xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0gxOU0xMiw3QTEsMSAwIDAsMCAxMSw4QTEsMSAwIDAsMCAxMiw5QTEsMSAwIDAsMCAxMyw4QTEsMSAwIDAsMCAxMiw3TTEyLDE1QTEsMSAwIDAsMCAxMSwxNkExLDEgMCAwLDAgMTIsMTdBMSwxIDAgMCwwIDEzLDE2QTEsMSAwIDAsMCAxMiwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEbG5hID0gXCJNMjEuMzgsMTIuNTZIMTIuODVDMTEuOTcsMTIuNTYgMTEuMSwxMi45NiAxMC42MSwxMy42MVYxMy42QzEwLjEyLDE0LjI4IDkuMzIsMTQuNzIgOC40MSwxNC43MkM2LjkyLDE0LjcyIDUuNzEsMTMuNSA1LjcxLDEyQzUuNzEsMTAuNSA2LjkyLDkuMzEgOC40MSw5LjMxQzkuMzIsOS4zMSAxMC4xMiw5Ljc1IDEwLjYxLDEwLjQzVjEwLjQyQzExLjEsMTEuMDcgMTEuOTcsMTEuNSAxMi44NSwxMS41SDIxLjI5QzIxLjQ1LDExLjUgMjIsMTEuNCAyMiwxMC42N0MyMS4yNiw2LjQzIDE3LjEsMy4xOCAxMi4wNiwzLjE4QzguOTYsMy4xOCA2LjE5LDQuNDEgNC4zNCw2LjM1QzQuMDUsNi43OSA0LjM1LDYuOTIgNC42Myw2Ljk2SDEwLjE0QzExLDYuOTYgMTEuODksNi41NCAxMi4zOCw1Ljg5VjUuOTFDMTIuODgsNS4yMyAxMy42Nyw0Ljc4IDE0LjU4LDQuNzhDMTYuMDcsNC43OCAxNy4yOCw2IDE3LjI4LDcuNUMxNy4yOCw5IDE2LjA3LDEwLjIgMTQuNTgsMTAuMkMxMy42NywxMC4yIDEyLjg4LDkuNzUgMTIuMzgsOS4wN1Y5LjA4QzExLjg5LDguNDQgMTEsOC4wMyAxMC4xNCw4LjAzSDQuMTNMNC4xNSw4LjAzQzQuMTUsOC4wMyAzLjI2LDggMi43Miw4Ljc1QzIuMyw5LjQyIDIsMTAuODUgMiwxMkMyLDEzLjE2IDIuMTcsMTQuMjEgMi43MiwxNS4yN0MzLjE5LDE2LjAzIDQuMTUsMTYgNC4xNSwxNkg0LjExTDEwLjE0LDE2QzExLDE2IDExLjg5LDE1LjU4IDEyLjM4LDE0LjkzVjE0Ljk0QzEyLjg4LDE0LjI2IDEzLjY3LDEzLjgxIDE0LjU4LDEzLjgxQzE2LjA3LDEzLjgxIDE3LjI4LDE1LjAzIDE3LjI4LDE2LjVDMTcuMjgsMTggMTYuMDcsMTkuMjMgMTQuNTgsMTkuMjNDMTMuNjcsMTkuMjMgMTIuODgsMTguNzggMTIuMzgsMTguMVYxOC4xMkMxMS44OSwxNy40NyAxMSwxNy4wNSAxMC4xNCwxNy4wNUg0LjY0QzQuMzYsMTcuMDkgNC4wNiwxNy4yMiA0LjMyLDE3LjY0QzYuMTcsMTkuNTggOC45NSwyMC44MiAxMi4wNiwyMC44MkMxNy4xMSwyMC44MiAyMS4yOCwxNy41NyAyMiwxMy4zMUMyMiwxMi43MiAyMS41OSwxMi41OCAyMS4zOCwxMi41NlwiO1xyXG5leHBvcnQgdmFyIG1kaURuYSA9IFwiTTQsMkg2VjRDNiw1LjQ0IDYuNjgsNi42MSA3Ljg4LDcuNzhDOC43NCw4LjYxIDkuODksOS40MSAxMS4wOSwxMC4yTDkuMjYsMTEuMzlDOC4yNywxMC43MiA3LjMxLDEwIDYuNSw5LjIxQzUuMDcsNy44MiA0LDYuMSA0LDRWMk0xOCwySDIwVjRDMjAsNi4xIDE4LjkzLDcuODIgMTcuNSw5LjIxQzE2LjA5LDEwLjU5IDE0LjI5LDExLjczIDEyLjU0LDEyLjg0QzEwLjc5LDEzLjk2IDkuMDksMTUuMDUgNy44OCwxNi4yMkM2LjY4LDE3LjM5IDYsMTguNTYgNiwyMFYyMkg0VjIwQzQsMTcuOSA1LjA3LDE2LjE4IDYuNSwxNC43OUM3LjkxLDEzLjQxIDkuNzEsMTIuMjcgMTEuNDYsMTEuMTZDMTMuMjEsMTAuMDQgMTQuOTEsOC45NSAxNi4xMiw3Ljc4QzE3LjMyLDYuNjEgMTgsNS40NCAxOCw0VjJNMTQuNzQsMTIuNjFDMTUuNzMsMTMuMjggMTYuNjksMTQgMTcuNSwxNC43OUMxOC45MywxNi4xOCAyMCwxNy45IDIwLDIwVjIySDE4VjIwQzE4LDE4LjU2IDE3LjMyLDE3LjM5IDE2LjEyLDE2LjIyQzE1LjI2LDE1LjM5IDE0LjExLDE0LjU5IDEyLjkxLDEzLjhMMTQuNzQsMTIuNjFNNywzSDE3VjRMMTYuOTQsNC41SDcuMDZMNyw0VjNNNy42OCw2SDE2LjMyQzE2LjA4LDYuMzQgMTUuOCw2LjY5IDE1LjQyLDcuMDZMMTQuOTEsNy41SDkuMDdMOC41OCw3LjA2QzguMiw2LjY5IDcuOTIsNi4zNCA3LjY4LDZNOS4wOSwxNi41SDE0LjkzTDE1LjQyLDE2Ljk0QzE1LjgsMTcuMzEgMTYuMDgsMTcuNjYgMTYuMzIsMThINy42OEM3LjkyLDE3LjY2IDguMiwxNy4zMSA4LjU4LDE2Ljk0TDkuMDksMTYuNU03LjA2LDE5LjVIMTYuOTRMMTcsMjBWMjFIN1YyMEw3LjA2LDE5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG5zID0gXCJNNyw5QTIsMiAwIDAsMSA1LDdBMiwyIDAgMCwxIDcsNUEyLDIgMCAwLDEgOSw3QTIsMiAwIDAsMSA3LDlNMjAsM0g0QTEsMSAwIDAsMCAzLDRWMTBBMSwxIDAgMCwwIDQsMTFIMjBBMSwxIDAgMCwwIDIxLDEwVjRBMSwxIDAgMCwwIDIwLDNNNywxOUEyLDIgMCAwLDEgNSwxN0EyLDIgMCAwLDEgNywxNUEyLDIgMCAwLDEgOSwxN0EyLDIgMCAwLDEgNywxOU0yMCwxM0g0QTEsMSAwIDAsMCAzLDE0VjIwQTEsMSAwIDAsMCA0LDIxSDIwQTEsMSAwIDAsMCAyMSwyMFYxNEExLDEgMCAwLDAgMjAsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG5zT3V0bGluZSA9IFwiTTE5LDE1VjE5SDVWMTVIMTlNMjAsMTNINEExLDEgMCAwLDAgMywxNFYyMEExLDEgMCAwLDAgNCwyMUgyMEExLDEgMCAwLDAgMjEsMjBWMTRBMSwxIDAgMCwwIDIwLDEzTTcsMTguNUExLjUsMS41IDAgMCwxIDUuNSwxN0ExLjUsMS41IDAgMCwxIDcsMTUuNUExLjUsMS41IDAgMCwxIDguNSwxN0ExLjUsMS41IDAgMCwxIDcsMTguNU0xOSw1VjlINVY1SDE5TTIwLDNINEExLDEgMCAwLDAgMyw0VjEwQTEsMSAwIDAsMCA0LDExSDIwQTEsMSAwIDAsMCAyMSwxMFY0QTEsMSAwIDAsMCAyMCwzTTcsOC41QTEuNSwxLjUgMCAwLDEgNS41LDdBMS41LDEuNSAwIDAsMSA3LDUuNUExLjUsMS41IDAgMCwxIDguNSw3QTEuNSwxLjUgMCAwLDEgNyw4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9Ob3REaXN0dXJiID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTcsMTNIN1YxMUgxN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEb05vdERpc3R1cmJPZmYgPSBcIk0xNywxMVYxM0gxNS41NEwyMC4yMiwxNy42OEMyMS4zNCwxNi4wNyAyMiwxNC4xMSAyMiwxMkExMCwxMCAwIDAsMCAxMiwyQzkuODksMiA3LjkzLDIuNjYgNi4zMiwzLjc4TDEzLjU0LDExSDE3TTIuMjcsMi4yN0wxLDMuNTRMMy43OCw2LjMyQzIuNjYsNy45MyAyLDkuODkgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkMxNC4xMSwyMiAxNi4wNywyMS4zNCAxNy42OCwyMC4yMkwyMC40NiwyM0wyMS43MywyMS43M0wyLjI3LDIuMjdNNywxM1YxMUg4LjQ2TDEwLjQ2LDEzSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9ja0JvdHRvbSA9IFwiTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY2QTIgMiAwIDAgMCAyMCA0TTIwIDEzSDRWNkgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb2NrTGVmdCA9IFwiTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY2QTIgMiAwIDAgMCAyMCA0TTIwIDE4SDlWNkgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb2NrUmlnaHQgPSBcIk0yMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgyMEEyIDIgMCAwIDAgMjIgMThWNkEyIDIgMCAwIDAgMjAgNE0xNSAxOEg0VjZIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9ja1RvcCA9IFwiTTQgMjBIMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyME00IDExSDIwVjE4SDRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9ja1dpbmRvdyA9IFwiTTE4IDE4VjIwSDRBMiAyIDAgMCAxIDIgMThWOEg0VjE4TTIyIDZWMTRBMiAyIDAgMCAxIDIwIDE2SDhBMiAyIDAgMCAxIDYgMTRWNkEyIDIgMCAwIDEgOCA0SDIwQTIgMiAwIDAgMSAyMiA2TTIwIDZIOFYxNEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb2NrZXIgPSBcIk0yMS44MSAxMC4yNUMyMS43NSAxMC4yMSAyMS4yNSA5LjgyIDIwLjE3IDkuODJDMTkuODkgOS44MiAxOS42MSA5Ljg1IDE5LjMzIDkuOUMxOS4xMiA4LjUgMTcuOTUgNy43OSAxNy45IDcuNzZMMTcuNjEgNy41OUwxNy40MyA3Ljg2QzE3LjE5IDguMjIgMTcgOC42MyAxNi45MiA5LjA1QzE2LjcyIDkuODUgMTYuODQgMTAuNjEgMTcuMjUgMTEuMjZDMTYuNzYgMTEuNTQgMTUuOTYgMTEuNjEgMTUuNzkgMTEuNjFIMi42MkMyLjI4IDExLjYxIDIgMTEuODkgMiAxMi4yNEMyIDEzLjM5IDIuMTggMTQuNTQgMi41OCAxNS42MkMzLjAzIDE2LjgxIDMuNzEgMTcuNjkgNC41OCAxOC4yM0M1LjU2IDE4LjgzIDcuMTcgMTkuMTcgOSAxOS4xN0M5Ljc5IDE5LjE3IDEwLjYxIDE5LjEgMTEuNDIgMTguOTVDMTIuNTQgMTguNzUgMTMuNjIgMTguMzYgMTQuNjEgMTcuNzlDMTUuNDMgMTcuMzIgMTYuMTYgMTYuNzIgMTYuNzggMTZDMTcuODMgMTQuODMgMTguNDUgMTMuNSAxOC45IDEyLjM1SDE5LjA5QzIwLjIzIDEyLjM1IDIwLjk0IDExLjg5IDIxLjMzIDExLjVDMjEuNTkgMTEuMjYgMjEuNzggMTAuOTcgMjEuOTIgMTAuNjNMMjIgMTAuMzlMMjEuODEgMTAuMjVNMy44NSAxMS4yNEg1LjYxQzUuNjkgMTEuMjQgNS43NyAxMS4xNyA1Ljc3IDExLjA4VjkuNUM1Ljc3IDkuNDIgNS43IDkuMzQgNS42MSA5LjM0SDMuODVDMy43NiA5LjM0IDMuNjkgOS40MSAzLjY5IDkuNVYxMS4wOEMzLjcgMTEuMTcgMy43NiAxMS4yNCAzLjg1IDExLjI0TTYuMjggMTEuMjRIOC4wNEM4LjEyIDExLjI0IDguMiAxMS4xNyA4LjIgMTEuMDhWOS41QzguMiA5LjQyIDguMTMgOS4zNCA4LjA0IDkuMzRINi4yOEM2LjE5IDkuMzQgNi4xMiA5LjQxIDYuMTIgOS41VjExLjA4QzYuMTMgMTEuMTcgNi4xOSAxMS4yNCA2LjI4IDExLjI0TTguNzUgMTEuMjRIMTAuNUMxMC42IDExLjI0IDEwLjY3IDExLjE3IDEwLjY3IDExLjA4VjkuNUMxMC42NyA5LjQyIDEwLjYxIDkuMzQgMTAuNSA5LjM0SDguNzVDOC42NyA5LjM0IDguNiA5LjQxIDguNiA5LjVWMTEuMDhDOC42IDExLjE3IDguNjYgMTEuMjQgOC43NSAxMS4yNE0xMS4xOSAxMS4yNEgxMi45NkMxMy4wNCAxMS4yNCAxMy4xMSAxMS4xNyAxMy4xMSAxMS4wOFY5LjVDMTMuMTEgOS40MiAxMy4wNSA5LjM0IDEyLjk2IDkuMzRIMTEuMTlDMTEuMTEgOS4zNCAxMS4wNCA5LjQxIDExLjA0IDkuNVYxMS4wOEMxMS4wNCAxMS4xNyAxMS4xMSAxMS4yNCAxMS4xOSAxMS4yNE02LjI4IDlIOC4wNEM4LjEyIDkgOC4yIDguOTEgOC4yIDguODJWNy4yNUM4LjIgNy4xNiA4LjEzIDcuMDkgOC4wNCA3LjA5SDYuMjhDNi4xOSA3LjA5IDYuMTIgNy4xNSA2LjEyIDcuMjVWOC44MkM2LjEzIDguOTEgNi4xOSA5IDYuMjggOU04Ljc1IDlIMTAuNUMxMC42IDkgMTAuNjcgOC45MSAxMC42NyA4LjgyVjcuMjVDMTAuNjcgNy4xNiAxMC42MSA3LjA5IDEwLjUgNy4wOUg4Ljc1QzguNjcgNy4wOSA4LjYgNy4xNSA4LjYgNy4yNVY4LjgyQzguNiA4LjkxIDguNjYgOSA4Ljc1IDlNMTEuMTkgOUgxMi45NkMxMy4wNCA5IDEzLjExIDguOTEgMTMuMTEgOC44MlY3LjI1QzEzLjExIDcuMTYgMTMuMDQgNy4wOSAxMi45NiA3LjA5SDExLjE5QzExLjExIDcuMDkgMTEuMDQgNy4xNSAxMS4wNCA3LjI1VjguODJDMTEuMDQgOC45MSAxMS4xMSA5IDExLjE5IDlNMTEuMTkgNi43MkgxMi45NkMxMy4wNCA2LjcyIDEzLjExIDYuNjUgMTMuMTEgNi41NlY1QzEzLjExIDQuOSAxMy4wNCA0LjgzIDEyLjk2IDQuODNIMTEuMTlDMTEuMTEgNC44MyAxMS4wNCA0Ljg5IDExLjA0IDVWNi41NkMxMS4wNCA2LjY0IDExLjExIDYuNzIgMTEuMTkgNi43Mk0xMy42NSAxMS4yNEgxNS40MUMxNS41IDExLjI0IDE1LjU3IDExLjE3IDE1LjU3IDExLjA4VjkuNUMxNS41NyA5LjQyIDE1LjUgOS4zNCAxNS40MSA5LjM0SDEzLjY1QzEzLjU3IDkuMzQgMTMuNSA5LjQxIDEzLjUgOS41VjExLjA4QzEzLjUgMTEuMTcgMTMuNTcgMTEuMjQgMTMuNjUgMTEuMjRcIjtcclxuZXhwb3J0IHZhciBtZGlEb2N0b3IgPSBcIk0xNC44NCwxNi4yNkMxNy44NiwxNi44MyAyMCwxOC4yOSAyMCwyMFYyMkg0VjIwQzQsMTguMjkgNi4xNCwxNi44MyA5LjE2LDE2LjI2TDEyLDIxTDE0Ljg0LDE2LjI2TTgsOEgxNlYxMEE0LDQgMCAwLDEgMTIsMTRBNCw0IDAgMCwxIDgsMTBWOE04LDdMOC40MSwyLjlDOC40NiwyLjM5IDguODksMiA5LjQxLDJIMTQuNkMxNS4xMSwyIDE1LjU0LDIuMzkgMTUuNTksMi45TDE2LDdIOE0xMiwzSDExVjRIMTBWNUgxMVY2SDEyVjVIMTNWNEgxMlYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURvZyA9IFwiTTE4LDRDMTYuMjksNCAxNS4yNSw0LjMzIDE0LjY1LDQuNjFDMTMuODgsNC4yMyAxMyw0IDEyLDRDMTEsNCAxMC4xMiw0LjIzIDkuMzUsNC42MUM4Ljc1LDQuMzMgNy43MSw0IDYsNEMzLDQgMSwxMiAxLDE0QzEsMTQuODMgMi4zMiwxNS41OSA0LjE0LDE1LjlDNC43OCwxOC4xNCA3LjgsMTkuODUgMTEuNSwyMFYxNS43MkMxMC45MSwxNS4zNSAxMCwxNC42OCAxMCwxNEMxMCwxMyAxMiwxMyAxMiwxM0MxMiwxMyAxNCwxMyAxNCwxNEMxNCwxNC42OCAxMy4wOSwxNS4zNSAxMi41LDE1LjcyVjIwQzE2LjIsMTkuODUgMTkuMjIsMTguMTQgMTkuODYsMTUuOUMyMS42OCwxNS41OSAyMywxNC44MyAyMywxNEMyMywxMiAyMSw0IDE4LDRNNC4xNSwxMy44N0MzLjY1LDEzLjc1IDMuMjYsMTMuNjEgMywxMy41QzMuMjUsMTAuNzMgNS4yLDYuNCA2LjA1LDZDNi41OSw2IDcsNi4wNiA3LjM3LDYuMTFDNS4yNyw4LjQyIDQuNDQsMTIuMDQgNC4xNSwxMy44N005LDEyQTEsMSAwIDAsMSA4LDExQzgsMTAuNDYgOC40NSwxMCA5LDEwQTEsMSAwIDAsMSAxMCwxMUMxMCwxMS41NiA5LjU1LDEyIDksMTJNMTUsMTJBMSwxIDAgMCwxIDE0LDExQzE0LDEwLjQ2IDE0LjQ1LDEwIDE1LDEwQTEsMSAwIDAsMSAxNiwxMUMxNiwxMS41NiAxNS41NSwxMiAxNSwxMk0xOS44NSwxMy44N0MxOS41NiwxMi4wNCAxOC43Myw4LjQyIDE2LjYzLDYuMTFDMTcsNi4wNiAxNy40MSw2IDE3Ljk1LDZDMTguOCw2LjQgMjAuNzUsMTAuNzMgMjEsMTMuNUMyMC43NSwxMy42MSAyMC4zNiwxMy43NSAxOS44NSwxMy44N1pcIjtcclxuZXhwb3J0IHZhciBtZGlEb2dTZXJ2aWNlID0gXCJNMTQsOEwxNywxMVYyMUgxNVYxNUg4TDYsMThWMjFINFYxNUw1LDE0VjExTDIsOEwzLDdMNSw5SDdWMTJBMSwxIDAgMCwwIDgsMTNIMTJBMSwxIDAgMCwwIDEzLDEyVjlMMTQsOE0xOSw1VjNMMTUsN0wxOCwxMEwxOSw5TDIwLDEwTDIyLDhMMTksNU0xMS41LDkuNUw0LjUsMi41QzQuMjMsMi4yMiAzLjc5LDIuMjIgMy41LDIuNVYyLjVDMy4yMiwyLjc3IDMuMjIsMy4yMSAzLjUsMy41TDEwLjUsMTAuNUMxMC43NywxMC43OCAxMS4yMSwxMC43OCAxMS41LDEwLjVWMTAuNUMxMS43OCwxMC4yMyAxMS43OCw5Ljc5IDExLjUsOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvZ1NpZGUgPSBcIk0xOSwzTDE1LDdMMTgsMTBMMTksOUwyMCwxMEwyMiw4TDE5LDVWM00zLDdMMiw4TDUsMTFWMTRMNCwxNVYyMUg2VjE4TDgsMTVIMTVWMjFIMTdWMTFMMTQsOEwxMyw5SDVMMyw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvZ1NpZGVPZmYgPSBcIk0xOCAxMEwxNSA3TDE5IDNWNUwyMiA4TDIwIDEwTDE5IDlMMTggMTBNMTcgMTFMMTQgOEwxMyA5SDEyLjJMMTcgMTMuOFYxMU0yLjM5IDEuNzNMMS4xMSAzTDcuMTEgOUg1TDMgN0wyIDhMNSAxMVYxNEw0IDE1VjIxSDZWMThMOCAxNUgxMy4xMUwxNSAxNi44OVYyMUgxN1YxOC44OUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9sYnkgPSBcIk0yLDVWMTlIMjJWNUgyTTYsMTdINFY3SDZDOC44Niw3LjA5IDExLjEsOS4zMyAxMSwxMkMxMS4xLDE0LjY3IDguODYsMTYuOTEgNiwxN00yMCwxN0gxOEMxNS4xNCwxNi45MSAxMi45LDE0LjY3IDEzLDEyQzEyLjksOS4zMyAxNS4xNCw3LjA5IDE4LDdIMjBWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9sbHkgPSBcIk0xMS45NywxOS44OEMxMC45MywyMC4yNiA5Ljc4LDE5LjcyIDkuNCwxOC42OUM5LDE3LjY1IDkuNTUsMTYuNSAxMC41OSwxNi4xM0MxMS42MywxNS43NSAxMi43OCwxNi4yOCAxMy4xNiwxNy4zMUMxMy41NCwxOC4zNSAxMywxOS41IDExLjk3LDE5Ljg4TTkuOSwxNC4yNUM3LjgzLDE1IDYuNzYsMTcuMyA3LjUsMTkuMzhDOC4yOCwyMS40NSAxMC41OCwyMi41IDEyLjY2LDIxLjc1QzE0LjczLDIxIDE1Ljc5LDE4LjcgMTUuMDQsMTYuNjNDMTQuMjgsMTQuNTUgMTEuOTcsMTMuNSA5LjksMTQuMjVNMTUuOTQsNC41OEw5LjM3LDdMMTAuNzUsMTAuNzRMMTcuMzIsOC4zM00yMC4zMiwxMy42MkwxNS41NCwxNS4zN0MxNS43MSwxNS42NiAxNS44NSwxNS45NiAxNS45NywxNi4yOEMxNi4wOSwxNi42IDE2LjE3LDE2LjkzIDE2LjIyLDE3LjI1TDIxLDE1LjVNMTkuNTQsOC41OEwxMS4wOSwxMS42OEwxMS41OCwxM0MxMi44MywxMy4wOSAxNCwxMy42NCAxNC44OSwxNC41NUwyMC45MiwxMi4zNE0yLDJWNEg1LjA5TDguNjYsMTMuNzVDOC45NCwxMy41NyA5LjI0LDEzLjQzIDkuNTYsMTMuMzFDOS44OCwxMy4xOSAxMC4yMSwxMy4xMSAxMC41MywxMy4wNkw2LjUsMlwiO1xyXG5leHBvcnQgdmFyIG1kaURvbWFpbiA9IFwiTTE4LDE1SDE2VjE3SDE4TTE4LDExSDE2VjEzSDE4TTIwLDE5SDEyVjE3SDE0VjE1SDEyVjEzSDE0VjExSDEyVjlIMjBNMTAsN0g4VjVIMTBNMTAsMTFIOFY5SDEwTTEwLDE1SDhWMTNIMTBNMTAsMTlIOFYxN0gxME02LDdINFY1SDZNNiwxMUg0VjlINk02LDE1SDRWMTNINk02LDE5SDRWMTdINk0xMiw3VjNIMlYyMUgyMlY3SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURvbWFpbk9mZiA9IFwiTTEyLDE5SDE2TDE0LDE3SDEyVjE5TTEwLDE1VjEzSDhWMTVIMTBNMTAsMTlWMTdIOFYxOUgxME02LDExVjlINFYxMUg2TTYsMTVWMTNINFYxNUg2TTYsMTlWMTdINFYxOUg2TTEuMzEsMS43OEwyMi4zMSwyMi42OUwyMSwyNEwxOCwyMUgyVjVMMC4wOSwzLjA5TDEuMzEsMS43OE0xNiwxMUgxOFYxM0gxNlYxMU04LDVWNS45MUw1LjExLDNIMTJWN0gyMlYxOS45MkwyMCwxNy45MVY5SDEyVjkuODlMOS4wOSw3SDEwVjVIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb21haW5QbHVzID0gXCJNMTIgN1YzSDJWMjFIMTMuMzVBNS44IDUuOCAwIDAgMSAxMyAxOUgxMlYxN0gxMy4zNUE1IDUgMCAwIDEgMTQgMTUuNjlWMTVIMTJWMTNIMTRWMTFIMTJWOUgyMFYxMy4wOUE1LjU4IDUuNTggMCAwIDEgMjIgMTMuODFWN002IDE5SDRWMTdINk02IDE1SDRWMTNINk02IDExSDRWOUg2TTYgN0g0VjVINk0xMCAxOUg4VjE3SDEwTTEwIDE1SDhWMTNIMTBNMTAgMTFIOFY5SDEwTTEwIDdIOFY1SDEwTTE2IDEzSDE4VjExSDE2TTE2IDExVjEzSDE4VjExTTE2IDExVjEzSDE4VjExTTIwIDE1VjE4SDIzVjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvbWFpblJlbW92ZSA9IFwiTTEyIDdWM0gyVjIxSDEzLjM1QTUuOCA1LjggMCAwIDEgMTMgMTlIMTJWMTdIMTMuMzVBNSA1IDAgMCAxIDE0IDE1LjY5VjE1SDEyVjEzSDE0VjExSDEyVjlIMjBWMTMuMDlBNS41OCA1LjU4IDAgMCAxIDIyIDEzLjgxVjdNNiAxOUg0VjE3SDZNNiAxNUg0VjEzSDZNNiAxMUg0VjlINk02IDdINFY1SDZNMTAgMTlIOFYxN0gxME0xMCAxNUg4VjEzSDEwTTEwIDExSDhWOUgxME0xMCA3SDhWNUgxME0xNiAxM0gxOFYxMUgxNk0xNiAxMVYxM0gxOFYxMU0xNiAxMVYxM0gxOFYxMU0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NiAyMS4xMkwxNy41OSAxOUwxNS40NiAxNi44OEwxNi44OCAxNS40NkwxOSAxNy41OUwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlEb21lTGlnaHQgPSBcIk0yMSAxMEMyMSAxNC45NyAxNi45NyAxOSAxMiAxOUM3LjAzIDE5IDMgMTQuOTcgMyAxMFY5LjAzQzMgOC43NiAzLjExIDguNSAzLjMgOC4zQzMuNSA4LjExIDMuNzYgOCA0LjAzIDhIMjBDMjAuMjUgOCAyMC41IDguMTEgMjAuNyA4LjNDMjAuODkgOC41IDIxIDguNzUgMjEgOVYxME01IDEwQzUgMTMuODYgOC4xNCAxNyAxMiAxN0MxNS44NiAxNyAxOSAxMy44NiAxOSAxMEg1TTIwIDZWN0g0VjZDNCA1LjczIDQuMSA1LjUgNC4yOSA1LjI5QzQuNSA1LjEgNC43MyA1IDUgNUgxMFYzSDE0VjVIMTlDMTkuMjUgNSAxOS41IDUuMTEgMTkuNyA1LjNDMTkuODkgNS41IDIwIDUuNzUgMjAgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlEb21pbm9NYXNrID0gXCJNMTUuODMgOS44MUMxNC43IDkuNyAxMy42OSAxMC4zOCAxMy40NiAxMS41QzEzLjQ2IDExLjg0IDE0LjgxIDEyLjI5IDE2LjA1IDEyLjI5QzE3LjI5IDEyLjI5IDE4LjQxIDExLjUgMTguNDEgMTEuMjhDMTguNDEgMTEuMDUgMTcuNjMgOS45MyAxNS44MyA5LjgxTTguMTggOS44MUM2LjM4IDkuOTMgNS41OSAxMC45NCA1LjU5IDExLjI3QzUuNTkgMTEuNSA2LjgyIDEyLjI5IDcuOTUgMTIuMjlTMTAuNTQgMTEuODQgMTAuNTQgMTEuNUMxMC4zMSAxMC4zOCA5LjE5IDkuNyA4LjE4IDkuODFNMTYuOTUgMTZDMTUuMDQgMTYgMTMuOCAxMy43NSAxMiAxMy43NVM4Ljg1IDE2IDcuMDUgMTZDNC42OSAxNiAzIDEzLjg2IDMgMTAuMDRDMyA3LjY4IDMuNjggNyA2LjcxIDdTMTAuNTQgOC4yNCAxMiA4LjI0IDE0LjM2IDcgMTcuMjkgNyAyMSA3Ljc5IDIxIDEwLjA0QzIxIDEzLjg2IDE5LjMxIDE2IDE2Ljk1IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvbmtleSA9IFwiTTIxLjM0LDEwLjM1TDIxLjI3LDEwLjI4TDIxLjE4LDEwLjE5TDE4LDdWNkEwLjUsMC41IDAgMCwwIDE3LjUsNS41QzE3LjM2LDUuNSAxNy4yMiw1LjU2IDE3LjEzLDUuNjZMMTMuNDYsOUg3QzYuMzIsOSA1LjY5LDkuMzUgNS4zMiw5LjkyTDIuNjIsMTIuNTlDMi4yOSwxMy4wNCAyLjM5LDEzLjY2IDIuODQsMTRDMy4xOCwxNC4yNCAzLjY1LDE0LjI1IDQsMTRMNSwxMy4wN1YxOUg4VjE1SDEzVjE5SDE2VjEzLjgzQzE2LDEzLjMgMTYuMjEsMTIuNzkgMTYuNTksMTIuNDJMMTgsMTFMMjAsMTJWMTJDMjAuMTUsMTIuMDggMjAuMzIsMTIuMTMgMjAuNSwxMi4xM0MyMS4xLDEyLjExIDIxLjU5LDExLjYxIDIxLjU4LDExQzIxLjU3LDEwLjc2IDIxLjUsMTAuNTMgMjEuMzQsMTAuMzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9vciA9IFwiTTgsM0M2Ljg5LDMgNiwzLjg5IDYsNVYyMUgxOFY1QzE4LDMuODkgMTcuMTEsMyAxNiwzSDhNOCw1SDE2VjE5SDhWNU0xMywxMVYxM0gxNVYxMUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEb29yQ2xvc2VkID0gXCJNMTYsMTFIMThWMTNIMTZWMTFNMTIsM0gxOUMyMC4xMSwzIDIxLDMuODkgMjEsNVYxOUgyMlYyMUgyVjE5SDEwVjVDMTAsMy44OSAxMC44OSwzIDEyLDNNMTIsNVYxOUgxOVY1SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURvb3JDbG9zZWRMb2NrID0gXCJNMTYgMTFIMThWMTNIMTZWMTFNMTIgM0gxOUEyIDIgMCAwIDEgMjEgNVYxOUgyMlYyMUgyVjE5SDEwVjVBMiAyIDAgMCAxIDEyIDNNMTIgNVYxOUgxOVY1TTYuMiA1SDIuOFY0LjVBMS43IDEuNyAwIDAgMSA2LjIgNC41TTcgNVY0LjVBMi41IDIuNSAwIDAgMCAyIDQuNVY1QTEgMSAwIDAgMCAxIDZWMTBBMSAxIDAgMCAwIDIgMTFIN0ExIDEgMCAwIDAgOCAxMFY2QTEgMSAwIDAgMCA3IDVcIjtcclxuZXhwb3J0IHZhciBtZGlEb29yT3BlbiA9IFwiTTEyLDNDMTAuODksMyAxMCwzLjg5IDEwLDVIM1YxOUgyVjIxSDIyVjE5SDIxVjVDMjEsMy44OSAyMC4xMSwzIDE5LDNIMTJNMTIsNUgxOVYxOUgxMlY1TTUsMTFIN1YxM0g1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaURvb3JiZWxsID0gXCJNMTIgMTBDMTAuOSAxMCAxMCAxMC45IDEwIDEyUzEwLjkgMTQgMTIgMTQgMTQgMTMuMSAxNCAxMiAxMy4xIDEwIDEyIDEwTTE2IDJIOEM2LjkgMiA2IDIuOSA2IDRWMjBDNiAyMS4xIDYuOSAyMiA4IDIySDE2QzE3LjEgMjIgMTggMjEuMSAxOCAyMFY0QzE4IDIuOSAxNy4xIDIgMTYgMk0xNiAyMEg4VjRIMTZWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9vcmJlbGxWaWRlbyA9IFwiTTE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3UzEwIDE2LjExIDEwIDE1IDEwLjkgMTMgMTIgMTMgMTQgMTMuOSAxNCAxNU0xOCA0VjIwQzE4IDIxLjEgMTcuMTEgMjIgMTYgMjJIOEM2LjkgMjIgNiAyMS4xMSA2IDIwVjRDNiAyLjkgNi45IDIgOCAySDE2QzE3LjExIDIgMTggMi45IDE4IDRNMTAuNSA3QzEwLjUgNy44MyAxMS4xNyA4LjUgMTIgOC41UzEzLjUgNy44MyAxMy41IDcgMTIuODMgNS41IDEyIDUuNSAxMC41IDYuMTcgMTAuNSA3TTE2IDEwSDhWMjBIMTZWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90TmV0ID0gXCJNMiwxNUExLDEgMCAwLDEgMywxNkExLDEgMCAwLDEgMiwxN0ExLDEgMCAwLDEgMSwxNkExLDEgMCAwLDEgMiwxNU0yMSwxN0gxOVY5SDE3VjdIMjNWOUgyMVYxN00xNiw3VjlIMTRWMTFIMTZWMTNIMTRWMTVIMTZWMTdIMTJWN0gxNk0xMSw3VjE3SDlMNiwxMVYxN0g0VjdINkw5LDEzVjdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c0dyaWQgPSBcIk0xMiAxNkMxMy4xIDE2IDE0IDE2LjkgMTQgMThTMTMuMSAyMCAxMiAyMCAxMCAxOS4xIDEwIDE4IDEwLjkgMTYgMTIgMTZNMTIgMTBDMTMuMSAxMCAxNCAxMC45IDE0IDEyUzEzLjEgMTQgMTIgMTQgMTAgMTMuMSAxMCAxMiAxMC45IDEwIDEyIDEwTTEyIDRDMTMuMSA0IDE0IDQuOSAxNCA2UzEzLjEgOCAxMiA4IDEwIDcuMSAxMCA2IDEwLjkgNCAxMiA0TTYgMTZDNy4xIDE2IDggMTYuOSA4IDE4UzcuMSAyMCA2IDIwIDQgMTkuMSA0IDE4IDQuOSAxNiA2IDE2TTYgMTBDNy4xIDEwIDggMTAuOSA4IDEyUzcuMSAxNCA2IDE0IDQgMTMuMSA0IDEyIDQuOSAxMCA2IDEwTTYgNEM3LjEgNCA4IDQuOSA4IDZTNy4xIDggNiA4IDQgNy4xIDQgNiA0LjkgNCA2IDRNMTggMTZDMTkuMSAxNiAyMCAxNi45IDIwIDE4UzE5LjEgMjAgMTggMjAgMTYgMTkuMSAxNiAxOCAxNi45IDE2IDE4IDE2TTE4IDEwQzE5LjEgMTAgMjAgMTAuOSAyMCAxMlMxOS4xIDE0IDE4IDE0IDE2IDEzLjEgMTYgMTIgMTYuOSAxMCAxOCAxME0xOCA0QzE5LjEgNCAyMCA0LjkgMjAgNlMxOS4xIDggMTggOCAxNiA3LjEgMTYgNiAxNi45IDQgMTggNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3RzSGV4YWdvbiA9IFwiTTE2IDEyQzE2IDEwLjkgMTYuOSAxMCAxOCAxMFMyMCAxMC45IDIwIDEyIDE5LjEgMTQgMTggMTQgMTYgMTMuMSAxNiAxMk0xMCAxMkMxMCAxMC45IDEwLjkgMTAgMTIgMTBTMTQgMTAuOSAxNCAxMiAxMy4xIDE0IDEyIDE0IDEwIDEzLjEgMTAgMTJNNCAxMkM0IDEwLjkgNC45IDEwIDYgMTBTOCAxMC45IDggMTIgNy4xIDE0IDYgMTQgNCAxMy4xIDQgMTJNMTMgMThDMTMgMTYuOSAxMy45IDE2IDE1IDE2UzE3IDE2LjkgMTcgMTggMTYuMSAyMCAxNSAyMCAxMyAxOS4xIDEzIDE4TTcgMThDNyAxNi45IDcuOSAxNiA5IDE2UzExIDE2LjkgMTEgMTggMTAuMSAyMCA5IDIwIDcgMTkuMSA3IDE4TTEzIDZDMTMgNC45IDEzLjkgNCAxNSA0UzE3IDQuOSAxNyA2IDE2LjEgOCAxNSA4IDEzIDcuMSAxMyA2TTcgNkM3IDQuOSA3LjkgNCA5IDRTMTEgNC45IDExIDYgMTAuMSA4IDkgOCA3IDcuMSA3IDZcIjtcclxuZXhwb3J0IHZhciBtZGlEb3RzSG9yaXpvbnRhbCA9IFwiTTE2LDEyQTIsMiAwIDAsMSAxOCwxMEEyLDIgMCAwLDEgMjAsMTJBMiwyIDAgMCwxIDE4LDE0QTIsMiAwIDAsMSAxNiwxMk0xMCwxMkEyLDIgMCAwLDEgMTIsMTBBMiwyIDAgMCwxIDE0LDEyQTIsMiAwIDAsMSAxMiwxNEEyLDIgMCAwLDEgMTAsMTJNNCwxMkEyLDIgMCAwLDEgNiwxMEEyLDIgMCAwLDEgOCwxMkEyLDIgMCAwLDEgNiwxNEEyLDIgMCAwLDEgNCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3RzSG9yaXpvbnRhbENpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgMTIsMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxMiwxMC41TTYuNSwxMC41QTEuNSwxLjUgMCAwLDAgNSwxMkExLjUsMS41IDAgMCwwIDYuNSwxMy41QTEuNSwxLjUgMCAwLDAgOCwxMkExLjUsMS41IDAgMCwwIDYuNSwxMC41TTE3LjUsMTAuNUExLjUsMS41IDAgMCwwIDE2LDEyQTEuNSwxLjUgMCAwLDAgMTcuNSwxMy41QTEuNSwxLjUgMCAwLDAgMTksMTJBMS41LDEuNSAwIDAsMCAxNy41LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c0hvcml6b250YWxDaXJjbGVPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0TTEyLDEwLjVBMS41LDEuNSAwIDAsMSAxMy41LDEyQTEuNSwxLjUgMCAwLDEgMTIsMTMuNUExLjUsMS41IDAgMCwxIDEwLjUsMTJBMS41LDEuNSAwIDAsMSAxMiwxMC41TTcuNSwxMC41QTEuNSwxLjUgMCAwLDEgOSwxMkExLjUsMS41IDAgMCwxIDcuNSwxMy41QTEuNSwxLjUgMCAwLDEgNiwxMkExLjUsMS41IDAgMCwxIDcuNSwxMC41TTE2LjUsMTAuNUExLjUsMS41IDAgMCwxIDE4LDEyQTEuNSwxLjUgMCAwLDEgMTYuNSwxMy41QTEuNSwxLjUgMCAwLDEgMTUsMTJBMS41LDEuNSAwIDAsMSAxNi41LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c1NxdWFyZSA9IFwiTTEyIDE2QzEzLjEgMTYgMTQgMTYuOSAxNCAxOFMxMy4xIDIwIDEyIDIwIDEwIDE5LjEgMTAgMTggMTAuOSAxNiAxMiAxNk0xMiA0QzEzLjEgNCAxNCA0LjkgMTQgNlMxMy4xIDggMTIgOCAxMCA3LjEgMTAgNiAxMC45IDQgMTIgNE02IDE2QzcuMSAxNiA4IDE2LjkgOCAxOFM3LjEgMjAgNiAyMCA0IDE5LjEgNCAxOCA0LjkgMTYgNiAxNk02IDEwQzcuMSAxMCA4IDEwLjkgOCAxMlM3LjEgMTQgNiAxNCA0IDEzLjEgNCAxMiA0LjkgMTAgNiAxME02IDRDNy4xIDQgOCA0LjkgOCA2UzcuMSA4IDYgOCA0IDcuMSA0IDYgNC45IDQgNiA0TTE4IDE2QzE5LjEgMTYgMjAgMTYuOSAyMCAxOFMxOS4xIDIwIDE4IDIwIDE2IDE5LjEgMTYgMTggMTYuOSAxNiAxOCAxNk0xOCAxMEMxOS4xIDEwIDIwIDEwLjkgMjAgMTJTMTkuMSAxNCAxOCAxNCAxNiAxMy4xIDE2IDEyIDE2LjkgMTAgMTggMTBNMTggNEMxOS4xIDQgMjAgNC45IDIwIDZTMTkuMSA4IDE4IDggMTYgNy4xIDE2IDYgMTYuOSA0IDE4IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c1RyaWFuZ2xlID0gXCJNMTIgMTZDMTMuMSAxNiAxNCAxNi45IDE0IDE4UzEzLjEgMjAgMTIgMjAgMTAgMTkuMSAxMCAxOCAxMC45IDE2IDEyIDE2TTE1IDEwQzE2LjEgMTAgMTcgMTAuOSAxNyAxMlMxNi4xIDE0IDE1IDE0IDEzIDEzLjEgMTMgMTIgMTMuOSAxMCAxNSAxME02IDE2QzcuMSAxNiA4IDE2LjkgOCAxOFM3LjEgMjAgNiAyMCA0IDE5LjEgNCAxOCA0LjkgMTYgNiAxNk05IDEwQzEwLjEgMTAgMTEgMTAuOSAxMSAxMlMxMC4xIDE0IDkgMTQgNyAxMy4xIDcgMTIgNy45IDEwIDkgMTBNMTIgNEMxMy4xIDQgMTQgNC45IDE0IDZTMTMuMSA4IDEyIDggMTAgNy4xIDEwIDYgMTAuOSA0IDEyIDRNMTggMTZDMTkuMSAxNiAyMCAxNi45IDIwIDE4UzE5LjEgMjAgMTggMjAgMTYgMTkuMSAxNiAxOCAxNi45IDE2IDE4IDE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c1ZlcnRpY2FsID0gXCJNMTIsMTZBMiwyIDAgMCwxIDE0LDE4QTIsMiAwIDAsMSAxMiwyMEEyLDIgMCAwLDEgMTAsMThBMiwyIDAgMCwxIDEyLDE2TTEyLDEwQTIsMiAwIDAsMSAxNCwxMkEyLDIgMCAwLDEgMTIsMTRBMiwyIDAgMCwxIDEwLDEyQTIsMiAwIDAsMSAxMiwxME0xMiw0QTIsMiAwIDAsMSAxNCw2QTIsMiAwIDAsMSAxMiw4QTIsMiAwIDAsMSAxMCw2QTIsMiAwIDAsMSAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvdHNWZXJ0aWNhbENpcmNsZSA9IFwiTTIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyTTEwLjUsMTJBMS41LDEuNSAwIDAsMCAxMiwxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDEyLDEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyTTEwLjUsMTcuNUExLjUsMS41IDAgMCwwIDEyLDE5QTEuNSwxLjUgMCAwLDAgMTMuNSwxNy41QTEuNSwxLjUgMCAwLDAgMTIsMTZBMS41LDEuNSAwIDAsMCAxMC41LDE3LjVNMTAuNSw2LjVBMS41LDEuNSAwIDAsMCAxMiw4QTEuNSwxLjUgMCAwLDAgMTMuNSw2LjVBMS41LDEuNSAwIDAsMCAxMiw1QTEuNSwxLjUgMCAwLDAgMTAuNSw2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c1ZlcnRpY2FsQ2lyY2xlT3V0bGluZSA9IFwiTTEwLjUsMTJBMS41LDEuNSAwIDAsMSAxMiwxMC41QTEuNSwxLjUgMCAwLDEgMTMuNSwxMkExLjUsMS41IDAgMCwxIDEyLDEzLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyTTEwLjUsMTYuNUExLjUsMS41IDAgMCwxIDEyLDE1QTEuNSwxLjUgMCAwLDEgMTMuNSwxNi41QTEuNSwxLjUgMCAwLDEgMTIsMThBMS41LDEuNSAwIDAsMSAxMC41LDE2LjVNMTAuNSw3LjVBMS41LDEuNSAwIDAsMSAxMiw2QTEuNSwxLjUgMCAwLDEgMTMuNSw3LjVBMS41LDEuNSAwIDAsMSAxMiw5QTEuNSwxLjUgMCAwLDEgMTAuNSw3LjVNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvdWJhbiA9IFwiTTIwLDZINFY0SDIwVjZNMjAsMThWMjBINFYxOEg3LjMzTDYuMjYsMTRINVY4SDE5VjE0SDE3Ljc0TDE2LjY3LDE4SDIwTTcsMTJIMTdWMTBIN1YxMk05LjQsMThIMTQuNkwxNS42NywxNEg4LjMzTDkuNCwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZCA9IFwiTTUsMjBIMTlWMThINU0xOSw5SDE1VjNIOVY5SDVMMTIsMTZMMTksOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZEJveCA9IFwiTTUgM0gxOUMyMC4xMSAzIDIxIDMuOSAyMSA1VjE5QzIxIDIwLjExIDIwLjExIDIxIDE5IDIxSDVDMy45IDIxIDMgMjAuMTEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM004IDE3SDE2VjE1SDhWMTdNMTYgMTBIMTMuNVY3SDEwLjVWMTBIOEwxMiAxNEwxNiAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZEJveE91dGxpbmUgPSBcIk04IDE3VjE1SDE2VjE3SDhNMTYgMTBMMTIgMTRMOCAxMEgxMC41VjdIMTMuNVYxMEgxNk01IDNIMTlDMjAuMTEgMyAyMSAzLjkgMjEgNVYxOUMyMSAyMC4xMSAyMC4xMSAyMSAxOSAyMUg1QzMuOSAyMSAzIDIwLjExIDMgMTlWNUMzIDMuOSAzLjkgMyA1IDNNNSA1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZENpcmNsZSA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNOCAxN0gxNlYxNUg4VjE3TTE2IDEwSDEzLjVWNkgxMC41VjEwSDhMMTIgMTRMMTYgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG93bmxvYWRDaXJjbGVPdXRsaW5lID0gXCJNOCAxN1YxNUgxNlYxN0g4TTE2IDEwTDEyIDE0TDggMTBIMTAuNVY2SDEzLjVWMTBIMTZNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyQzIyIDE3LjUgMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMiA0QzcuNTggNCA0IDcuNTggNCAxMkM0IDE2LjQyIDcuNTggMjAgMTIgMjBDMTYuNDIgMjAgMjAgMTYuNDIgMjAgMTJDMjAgNy41OCAxNi40MiA0IDEyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG93bmxvYWRMb2NrID0gXCJNNSAyMEgxNFYxOEg1TTE5IDlIMTVWM0g5VjlINUwxMiAxNk0yMiAxNkExLjA4IDEuMDggMCAwIDEgMjMgMTdWMjFBMS4wOCAxLjA4IDAgMCAxIDIyIDIySDE3QTEuMDggMS4wOCAwIDAgMSAxNiAyMVYxN0ExLjA4IDEuMDggMCAwIDEgMTcgMTZWMTQuNUEyLjUgMi41IDAgMCAxIDIyIDE0LjVWMTZNMjEgMTZWMTQuNUExLjUgMS41IDAgMCAwIDE4IDE0LjVWMTZIMjFcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZExvY2tPdXRsaW5lID0gXCJNMjIgMTZBMS4wOCAxLjA4IDAgMCAxIDIzIDE3VjIxQTEuMDggMS4wOCAwIDAgMSAyMiAyMkgxN0ExLjA4IDEuMDggMCAwIDEgMTYgMjFWMTdBMS4wOCAxLjA4IDAgMCAxIDE3IDE2VjE0LjVBMi41IDIuNSAwIDAgMSAyMiAxNC41VjE2TTIxIDE2VjE0LjVBMS41IDEuNSAwIDAgMCAxOCAxNC41VjE2SDIxTTEzIDVWMTFIMTQuMTdMMTIgMTMuMTdMOS44MyAxMUgxMVY1SDEzTTE1IDNIOVY5SDVMMTIgMTZMMTkgOUgxNVYzTTE0IDE4SDVWMjBIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG93bmxvYWRNdWx0aXBsZSA9IFwiTTksMVY3SDVMMTIsMTRMMTksN0gxNVYxSDlNNSwxNlYxOEgxOVYxNkg1TTUsMjBWMjJIMTlWMjBINVpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZE5ldHdvcmsgPSBcIk0xNywzQTIsMiAwIDAsMSAxOSw1VjE1QTIsMiAwIDAsMSAxNywxN0gxM1YxOUgxNEExLDEgMCAwLDEgMTUsMjBIMjJWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdIN0M1Ljg5LDE3IDUsMTYuMSA1LDE1VjVBMiwyIDAgMCwxIDcsM0gxN00xMiwxNC41TDE2LjUsMTBIMTNWNkgxMVYxMEg3LjVMMTIsMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZE5ldHdvcmtPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU03LDE1VjVIMTdWMTVIN00xMiwxNEwxNiwxMEgxM1Y2SDExVjEwSDhMMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG93bmxvYWRPZmYgPSBcIk0yMC44NCAyMi43M0wxOC4xMSAyMEg1VjE4SDE2LjExTDEzLjA2IDE0Ljk1TDEyIDE2TDUgOUg3LjExTDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNNMTkgOUgxNVYzSDlWNS44TDE1LjYgMTIuNEwxOSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvd25sb2FkT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNy4xMSA5SDVMMTIgMTZMMTMuMDYgMTQuOTVMMTYuMTEgMThINVYyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xMSA1SDEzVjkuOEwxNS42IDEyLjRMMTkgOUgxNVYzSDlWNS44TDExIDcuOFY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvd25sb2FkT3V0bGluZSA9IFwiTTEzLDVWMTFIMTQuMTdMMTIsMTMuMTdMOS44MywxMUgxMVY1SDEzTTE1LDNIOVY5SDVMMTIsMTZMMTksOUgxNVYzTTE5LDE4SDVWMjBIMTlWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHJhZyA9IFwiTTcsMTlWMTdIOVYxOUg3TTExLDE5VjE3SDEzVjE5SDExTTE1LDE5VjE3SDE3VjE5SDE1TTcsMTVWMTNIOVYxNUg3TTExLDE1VjEzSDEzVjE1SDExTTE1LDE1VjEzSDE3VjE1SDE1TTcsMTFWOUg5VjExSDdNMTEsMTFWOUgxM1YxMUgxMU0xNSwxMVY5SDE3VjExSDE1TTcsN1Y1SDlWN0g3TTExLDdWNUgxM1Y3SDExTTE1LDdWNUgxN1Y3SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYWdIb3Jpem9udGFsID0gXCJNMywxNVYxM0g1VjE1SDNNMywxMVY5SDVWMTFIM003LDE1VjEzSDlWMTVIN003LDExVjlIOVYxMUg3TTExLDE1VjEzSDEzVjE1SDExTTExLDExVjlIMTNWMTFIMTFNMTUsMTVWMTNIMTdWMTVIMTVNMTUsMTFWOUgxN1YxMUgxNU0xOSwxNVYxM0gyMVYxNUgxOU0xOSwxMVY5SDIxVjExSDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYWdIb3Jpem9udGFsVmFyaWFudCA9IFwiTTIxIDExSDNWOUgyMVYxMU0yMSAxM0gzVjE1SDIxVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYWdWYXJpYW50ID0gXCJNMjIuNjcsMTJMMTguMTgsMTYuNUwxNS42NywxNEwxNy42NSwxMkwxNS42NywxMC4wNEwxOC4xOCw3LjUzTDIyLjY3LDEyTTEyLDEuMzNMMTYuNDcsNS44MkwxMy45Niw4LjMzTDEyLDYuMzVMMTAsOC4zM0w3LjUsNS44MkwxMiwxLjMzTTEyLDIyLjY3TDcuNTMsMTguMThMMTAuMDQsMTUuNjdMMTIsMTcuNjVMMTQsMTUuNjdMMTYuNSwxOC4xOEwxMiwyMi42N00xLjMzLDEyTDUuODIsNy41TDguMzMsMTBMNi4zNSwxMkw4LjMzLDEzLjk2TDUuODIsMTYuNDdMMS4zMywxMk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHJhZ1ZlcnRpY2FsID0gXCJNOSwzSDExVjVIOVYzTTEzLDNIMTVWNUgxM1YzTTksN0gxMVY5SDlWN00xMyw3SDE1VjlIMTNWN005LDExSDExVjEzSDlWMTFNMTMsMTFIMTVWMTNIMTNWMTFNOSwxNUgxMVYxN0g5VjE1TTEzLDE1SDE1VjE3SDEzVjE1TTksMTlIMTFWMjFIOVYxOU0xMywxOUgxNVYyMUgxM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEcmFnVmVydGljYWxWYXJpYW50ID0gXCJNMTEgMjFIOVYzSDExVjIxTTE1IDNIMTNWMjFIMTVWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEcmFtYU1hc2tzID0gXCJNOC4xMSwxOS40NUM1Ljk0LDE4LjY1IDQuMjIsMTYuNzggMy43MSwxNC4zNUwyLjA1LDYuNTRDMS44MSw1LjQ2IDIuNSw0LjQgMy41OCw0LjE3TDEzLjM1LDIuMUwxMy4zOCwyLjA5QzE0LjQ1LDEuODggMTUuNSwyLjU3IDE1LjcyLDMuNjNMMTYuMDcsNS4zTDIwLjQyLDYuMjNIMjAuNDVDMjEuNSw2LjQ3IDIyLjE4LDcuNTMgMjEuOTYsOC41OUwyMC4zLDE2LjQxQzE5LjUsMjAuMTggMTUuNzgsMjIuNiAxMiwyMS43OUMxMC40MiwyMS40NiA5LjA4LDIwLjYxIDguMTEsMTkuNDVWMTkuNDVNMjAsOC4xOEwxMC4yMyw2LjFMOC41NywxMy45MlYxMy45NUM4LDE2LjYzIDkuNzMsMTkuMjcgMTIuNDIsMTkuODRDMTUuMTEsMjAuNDEgMTcuNzcsMTguNjkgMTguMzQsMTZMMjAsOC4xOE0xNiwxNi41QzE1LjM3LDE3LjU3IDE0LjExLDE4LjE2IDEyLjgzLDE3Ljg5QzExLjU2LDE3LjYyIDEwLjY1LDE2LjU3IDEwLjUsMTUuMzRMMTYsMTYuNU04LjQ3LDUuMTdMNCw2LjEzTDUuNjYsMTMuOTRMNS42NywxMy45N0M1LjgyLDE0LjY4IDYuMTIsMTUuMzIgNi41MywxNS44N0M2LjQzLDE1LjEgNi40NSwxNC4zIDYuNjIsMTMuNUw3LjA1LDExLjVDNi42LDExLjQyIDYuMjEsMTEuMTcgNiwxMC44MUM2LjA2LDEwLjIgNi41Niw5LjY2IDcuMjUsOS41QzcuMzMsOS41IDcuNCw5LjUgNy41LDkuNUw4LjI4LDUuNjlDOC4zMiw1LjUgOC4zOCw1LjMzIDguNDcsNS4xN00xNS4wMywxMi4yM0MxNS4zNSwxMS43IDE2LjAzLDExLjQyIDE2LjcyLDExLjU3QzE3LjQxLDExLjcxIDE3LjkxLDEyLjI0IDE4LDEyLjg2QzE3LjY3LDEzLjM4IDE3LDEzLjY2IDE2LjMsMTMuNUMxNS42MSwxMy4zNyAxNS4xMSwxMi44NCAxNS4wMywxMi4yM00xMC4xNSwxMS4xOUMxMC40NywxMC42NiAxMS4xNCwxMC4zOCAxMS44MywxMC41M0MxMi41LDEwLjY3IDEzLjAzLDExLjIxIDEzLjExLDExLjgyQzEyLjc4LDEyLjM0IDEyLjExLDEyLjYzIDExLjQyLDEyLjVDMTAuNzMsMTIuMzMgMTAuMjMsMTEuOCAxMC4xNSwxMS4xOU0xMS45Nyw0LjQzTDEzLjkzLDQuODVMMTMuNzcsNC4wNUwxMS45Nyw0LjQzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYXcgPSBcIk05Ljc1IDIwLjg1QzExLjUzIDIwLjE1IDExLjE0IDE4LjIyIDEwLjI0IDE3QzkuMzUgMTUuNzUgOC4xMiAxNC44OSA2Ljg4IDE0LjA2QzYgMTMuNSA1LjE5IDEyLjggNC41NCAxMkM0LjI2IDExLjY3IDMuNjkgMTEuMDYgNC4yNyAxMC45NEM0Ljg2IDEwLjgyIDUuODggMTEuNCA2LjQgMTEuNjJDNy4zMSAxMiA4LjIxIDEyLjQ0IDkuMDUgMTIuOTZMMTAuMDYgMTEuMjZDOC41IDEwLjIzIDYuNSA5LjMyIDQuNjQgOS4wNUMzLjU4IDguODkgMi40NiA5LjExIDIuMSAxMC4yNkMxLjc4IDExLjI1IDIuMjkgMTIuMjUgMi44NyAxMy4wM0M0LjI0IDE0Ljg2IDYuMzcgMTUuNzQgNy45NiAxNy4zMkM4LjMgMTcuNjUgOC43MSAxOC4wNCA4LjkxIDE4LjVDOS4xMiAxOC45NCA5LjA3IDE4Ljk3IDguNiAxOC45N0M3LjM2IDE4Ljk3IDUuODEgMTggNC44IDE3LjM2TDMuNzkgMTkuMDZDNS4zMiAyMCA3Ljg4IDIxLjQ3IDkuNzUgMjAuODVNMjAuODQgNS4yNUMyMS4wNiA1LjAzIDIxLjA2IDQuNjcgMjAuODQgNC40NkwxOS41NCAzLjE2QzE5LjMzIDIuOTUgMTguOTcgMi45NSAxOC43NiAzLjE2TDE3Ljc0IDQuMThMMTkuODIgNi4yNk0xMSAxMC45MlYxM0gxMy4wOEwxOS4yMyA2Ljg1TDE3LjE1IDQuNzdMMTEgMTAuOTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHJhd2luZyA9IFwiTTguNSwzQTUuNSw1LjUgMCAwLDEgMTQsOC41QzE0LDkuODMgMTMuNTMsMTEuMDUgMTIuNzQsMTJIMjFWMjFIMTJWMTIuNzRDMTEuMDUsMTMuNTMgOS44MywxNCA4LjUsMTRBNS41LDUuNSAwIDAsMSAzLDguNUE1LjUsNS41IDAgMCwxIDguNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYXdpbmdCb3ggPSBcIk0xOCwxOEgxMlYxMi4yMUMxMS4zNCwxMi44MiAxMC40NywxMy4yIDkuNSwxMy4yQzcuNDYsMTMuMiA1LjgsMTEuNTQgNS44LDkuNUEzLjcsMy43IDAgMCwxIDkuNSw1LjhDMTEuNTQsNS44IDEzLjIsNy40NiAxMy4yLDkuNUMxMy4yLDEwLjQ3IDEyLjgyLDExLjM0IDEyLjIxLDEySDE4TTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURyZXNzZXIgPSBcIk00IDNDMi45IDMgMiAzLjkgMiA1VjhIMjJWNUMyMiAzLjkgMjEuMTEgMyAyMCAzSDRNMTAgNUgxNFY2SDEwVjVNMiA5VjE0SDIyVjlIMk0xMCAxMUgxNFYxMkgxMFYxMU0yIDE1VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBWMjFINlYyMEgxOFYyMUgyMFYyMEMyMS4xMSAyMCAyMiAxOS4xMSAyMiAxOFYxNUgyTTEwIDE3SDE0VjE4SDEwVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURyZXNzZXJPdXRsaW5lID0gXCJNNCAzQzIuOSAzIDIgMy45IDIgNVYxOEMyIDE5LjExIDIuOSAyMCA0IDIwVjIxSDZWMjBIMThWMjFIMjBWMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWNUMyMiAzLjkgMjEuMTEgMyAyMCAzSDRNNCA1SDIwVjhINFY1TTEwIDZWN0gxNFY2SDEwTTQgMTBIMjBWMTNINFYxME0xMCAxMVYxMkgxNFYxMUgxME00IDE1SDIwVjE4SDRWMTVNMTAgMTZWMTdIMTRWMTZIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHJvbmUgPSBcIk0yMiwxMUgyMUwyMCw5SDEzLjc1TDE2LDEyLjVIMTRMMTAuNzUsOUg0QzMuNDUsOSAyLDguNTUgMiw4QzIsNy40NSAzLjUsNS41IDUuNSw1LjVDNy41LDUuNSA3LjY3LDYuNSA5LDdIMjFBMSwxIDAgMCwxIDIyLDhWOUwyMiwxMU0xMC43NSw2LjVMMTQsM0gxNkwxMy43NSw2LjVIMTAuNzVNMTgsMTFWOS41SDE5Ljc1TDE5LDExSDE4TTMsMTlBMSwxIDAgMCwxIDIsMThBMSwxIDAgMCwxIDMsMTdBNCw0IDAgMCwxIDcsMjFBMSwxIDAgMCwxIDYsMjJBMSwxIDAgMCwxIDUsMjFBMiwyIDAgMCwwIDMsMTlNMTEsMjFBMSwxIDAgMCwxIDEwLDIyQTEsMSAwIDAsMSA5LDIxQTYsNiAwIDAsMCAzLDE1QTEsMSAwIDAsMSAyLDE0QTEsMSAwIDAsMSAzLDEzQTgsOCAwIDAsMSAxMSwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlEcm9wYm94ID0gXCJNMyA2LjJMOCA5LjM5TDEzIDYuMkw4IDNMMyA2LjJNMTMgNi4yTDE4IDkuMzlMMjMgNi4yTDE4IDNMMTMgNi4yTTMgMTIuNTVMOCAxNS43NEwxMyAxMi41NUw4IDkuMzVMMyAxMi41NU0xOCA5LjM1TDEzIDEyLjU1TDE4IDE1Ljc0TDIzIDEyLjU1TDE4IDkuMzVNOC4wMyAxNi44TDEzLjA0IDIwTDE4LjA0IDE2LjhMMTMuMDQgMTMuNjFMOC4wMyAxNi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaURydXBhbCA9IFwiTTIwLjQ3LDE0LjY1QzIwLjQ3LDE1LjI5IDIwLjI1LDE2LjM2IDE5LjgzLDE3LjFDMTkuNCwxNy44NSAxOS4wOCwxOC4wNiAxOC40NCwxOC4wNkMxNy43LDE3Ljk1IDE2LjMxLDE1LjgyIDE1LjM2LDE1LjcyQzE0LjE4LDE1LjcyIDExLjczLDE4LjE3IDkuNzEsMTguMTdDOC41NCwxOC4xNyA4LjExLDE3Ljk1IDcuNzksMTcuNzRDNy4xNSwxNy4zMSA2Ljk0LDE2LjY3IDYuOTQsMTUuODJDNi45NCwxNC4yMiA4LjQzLDEyLjg0IDEwLjI0LDEyLjg0QzEyLjU5LDEyLjg0IDE0LjE4LDE1LjE4IDE1LjM2LDE1LjA4QzE2LjMxLDE1LjA4IDE4LjIzLDEzLjE2IDE5LjE5LDEzLjE2QzIwLjE1LDEyLjk1IDIwLjQ3LDE0IDIwLjQ3LDE0LjY1TTE2LjYzLDUuMjhDMTUuNTcsNC42NCAxNC42MSw0LjMyIDEzLjU0LDMuNjhDMTIuOTEsMy4yNSAxMi4wNSwyLjMgMTEuMzEsMS40NEMxMSwyLjgzIDEwLjc4LDMuMzYgMTAuMjQsMy43OUM5LjE4LDQuNTMgOC42NCw0Ljg1IDcuNjksNS4yOEM2Ljk0LDUuNyAzLDguMDUgMywxMy4xNkMzLDE4LjI3IDcuMzcsMjIgMTIuMDUsMjJDMTYuODUsMjIgMjEsMTguNSAyMSwxMy4yN0MyMS4yMSw4LjA1IDE3LjI3LDUuNyAxNi42Myw1LjI4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUR1Y2sgPSBcIk04LjUsNUExLjUsMS41IDAgMCwwIDcsNi41QTEuNSwxLjUgMCAwLDAgOC41LDhBMS41LDEuNSAwIDAsMCAxMCw2LjVBMS41LDEuNSAwIDAsMCA4LjUsNU0xMCwyQTUsNSAwIDAsMSAxNSw3QzE1LDguNyAxNC4xNSwxMC4yIDEyLjg2LDExLjFDMTQuNDQsMTEuMjUgMTYuMjIsMTEuNjEgMTgsMTIuNUMyMSwxNCAyMiwxMiAyMiwxMkMyMiwxMiAyMSwyMSAxNSwyMUg5QzksMjEgNCwyMSA0LDE2QzQsMTMgNywxMiA2LDEwQzIsMTAgMiw2LjUgMiw2LjVDMyw3IDQuMjQsNyA1LDYuNjVDNS4xOSw0LjA1IDcuMzYsMiAxMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUR1bWJiZWxsID0gXCJNMjAuNTcsMTQuODZMMjIsMTMuNDNMMjAuNTcsMTJMMTcsMTUuNTdMOC40Myw3TDEyLDMuNDNMMTAuNTcsMkw5LjE0LDMuNDNMNy43MSwyTDUuNTcsNC4xNEw0LjE0LDIuNzFMMi43MSw0LjE0TDQuMTQsNS41N0wyLDcuNzFMMy40Myw5LjE0TDIsMTAuNTdMMy40MywxMkw3LDguNDNMMTUuNTcsMTdMMTIsMjAuNTdMMTMuNDMsMjJMMTQuODYsMjAuNTdMMTYuMjksMjJMMTguNDMsMTkuODZMMTkuODYsMjEuMjlMMjEuMjksMTkuODZMMTkuODYsMTguNDNMMjIsMTYuMjlMMjAuNTcsMTQuODZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHVtcFRydWNrID0gXCJNMjAsOEgxOUwxNyw4SDE1VjE0SDJWMTdIM0EzLDMgMCAwLDAgNiwyMEEzLDMgMCAwLDAgOSwxN0gxNUEzLDMgMCAwLDAgMTgsMjBBMywzIDAgMCwwIDIxLDE3SDIzVjEyTDIwLDhNNiwxOC41QTEuNSwxLjUgMCAwLDEgNC41LDE3QTEuNSwxLjUgMCAwLDEgNiwxNS41QTEuNSwxLjUgMCAwLDEgNy41LDE3QTEuNSwxLjUgMCAwLDEgNiwxOC41TTE4LDE4LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTUuNUExLjUsMS41IDAgMCwxIDE5LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxOC41TTE3LDEyVjkuNUgxOS41TDIxLjQ2LDEySDE3TTE4LDdIMTRWMTNIM0wxLjU3LDhIMVY2SDEzTDE0LDVIMThWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFYXJIZWFyaW5nID0gXCJNMTcsMjBDMTYuNzEsMjAgMTYuNDQsMTkuOTQgMTYuMjQsMTkuODVDMTUuNTMsMTkuNSAxNS4wMywxOC45NyAxNC41MywxNy40N0MxNCwxNS45MSAxMy4wNiwxNS4xOCAxMi4xNCwxNC40N0MxMS4zNSwxMy44NiAxMC41MywxMy4yMyA5LjgyLDExLjk0QzkuMjksMTEgOSw5LjkzIDksOUM5LDYuMiAxMS4yLDQgMTQsNEMxNi44LDQgMTksNi4yIDE5LDlIMjFDMjEsNS4wNyAxNy45MywyIDE0LDJDMTAuMDcsMiA3LDUuMDcgNyw5QzcsMTAuMjYgNy4zOCwxMS42NSA4LjA3LDEyLjlDOSwxNC41NSAxMC4wNSwxNS4zOCAxMC45MiwxNi4wNUMxMS43MywxNi42NyAxMi4zMSwxNy4xMiAxMi42MywxOC4xQzEzLjIzLDE5LjkyIDE0LDIwLjk0IDE1LjM2LDIxLjY1QzE1Ljg3LDIxLjg4IDE2LjQzLDIyIDE3LDIyQTQsNCAwIDAsMCAyMSwxOEgxOUEyLDIgMCAwLDEgMTcsMjBNNy42NCwyLjY0TDYuMjIsMS4yMkM0LjIzLDMuMjEgMyw1Ljk2IDMsOUMzLDEyLjA0IDQuMjMsMTQuNzkgNi4yMiwxNi43OEw3LjYzLDE1LjM3QzYsMTMuNzQgNSwxMS41IDUsOUM1LDYuNSA2LDQuMjYgNy42NCwyLjY0TTExLjUsOUEyLjUsMi41IDAgMCwwIDE0LDExLjVBMi41LDIuNSAwIDAsMCAxNi41LDlBMi41LDIuNSAwIDAsMCAxNCw2LjVBMi41LDIuNSAwIDAsMCAxMS41LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFySGVhcmluZ09mZiA9IFwiTTEsNC4yN0wyLjI4LDNMMjAsMjAuNzJMMTguNzMsMjJMMTIuOTEsMTYuMThDMTIuMTksMTYuNzQgMTEuNjcsMTcuMTkgMTEuMzcsMTguMUMxMC43NywxOS45MiAxMCwyMC45NCA4LjY0LDIxLjY1QzguMTMsMjEuODggNy41NywyMiA3LDIyQTQsNCAwIDAsMSAzLDE4SDVBMiwyIDAgMCwwIDcsMjBDNy4yOSwyMCA3LjU2LDE5Ljk0IDcuNzYsMTkuODVDOC40NywxOS41IDguOTcsMTguOTcgOS40NywxNy40N0M5LjkxLDE2LjEyIDEwLjY5LDE1LjM5IDExLjUsMTQuNzZMNS4wNCw4LjMxQzUsOC41NCA1LDguNzcgNSw5SDNDMyw4LjE3IDMuMTQsNy4zOSAzLjM5LDYuNjZMMSw0LjI3TTE0LjE4LDExLjk0QzE0LjcxLDExIDE1LDkuOTMgMTUsOUMxNSw2LjIgMTIuOCw0IDEwLDRDOC44MSw0IDcuNzQsNC4zOSA2Ljg5LDUuMDZMNS40NiwzLjYzQzYuNjcsMi42MSA4LjI1LDIgMTAsMkMxMy45MywyIDE3LDUuMDcgMTcsOUMxNywxMC4yNiAxNi42MiwxMS42NSAxNS45MywxMi45TDE1LjQ3LDEzLjY1TDE0LjAzLDEyLjJMMTQuMTgsMTEuOTRNMTYuMzYsMi42NEwxNy43OCwxLjIyQzE5Ljc3LDMuMjEgMjEsNS45NiAyMSw5QzIxLDExLjgzIDE5LjkzLDE0LjQxIDE4LjE4LDE2LjM2TDE2Ljc3LDE0Ljk0QzE4LjE1LDEzLjM2IDE5LDExLjI4IDE5LDlDMTksNi41IDE4LDQuMjYgMTYuMzYsMi42NE0xMi41LDlDMTIuNSw5LjUgMTIuMzYsOS45MyAxMi4xMywxMC4zMUw4LjY5LDYuODdDOS4wNyw2LjY0IDkuNSw2LjUgMTAsNi41QTIuNSwyLjUgMCAwLDEgMTIuNSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVhcnRoID0gXCJNMTcuOSwxNy4zOUMxNy42NCwxNi41OSAxNi44OSwxNiAxNiwxNkgxNVYxM0ExLDEgMCAwLDAgMTQsMTJIOFYxMEgxMEExLDEgMCAwLDAgMTEsOVY3SDEzQTIsMiAwIDAsMCAxNSw1VjQuNTlDMTcuOTMsNS43NyAyMCw4LjY0IDIwLDEyQzIwLDE0LjA4IDE5LjIsMTUuOTcgMTcuOSwxNy4zOU0xMSwxOS45M0M3LjA1LDE5LjQ0IDQsMTYuMDggNCwxMkM0LDExLjM4IDQuMDgsMTAuNzggNC4yMSwxMC4yMUw5LDE1VjE2QTIsMiAwIDAsMCAxMSwxOE0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFYXJ0aEFycm93UmlnaHQgPSBcIk0xOSAyMVYxOUgxNVYxN0gxOVYxNUwyMiAxOEwxOSAyMU0xMiAxOEMxMiAxNS44IDEzLjIgMTMuOSAxNSAxMi44QzE0LjkgMTIuMyAxNC41IDEyIDE0IDEySDhWMTBIMTBDMTAuNiAxMCAxMSA5LjYgMTEgOVY3SDEzQzE0LjEgNyAxNSA2LjEgMTUgNVY0LjZDMTcuOSA1LjggMjAgOC42IDIwIDEyVjEyLjNDMjAuNyAxMi41IDIxLjMgMTIuOSAyMS45IDEzLjRDMjIgMTMgMjIgMTIuNSAyMiAxMkMyMiA2LjUgMTcuNSAyIDEyIDJTMiA2LjUgMiAxMiA2LjUgMjIgMTIgMjJDMTIuNSAyMiAxMyAyMiAxMy40IDIxLjlDMTIuNSAyMC44IDEyIDE5LjUgMTIgMThNMTEgMTkuOUM3IDE5LjQgNCAxNi4xIDQgMTJDNCAxMS40IDQuMSAxMC44IDQuMiAxMC4yTDkgMTVWMTZDOSAxNy4xIDkuOSAxOCAxMSAxOFYxOS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVhcnRoQm94ID0gXCJNNSwzQzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNINU0xNS43OCw1SDE5VjE3LjE4QzE4Ljc0LDE2LjM4IDE3LjY5LDE1Ljc5IDE2LjgsMTUuNzlIMTUuOFYxMi43OUExLDEgMCAwLDAgMTQuOCwxMS43OUg4LjhWOS43OUgxMC44QTEsMSAwIDAsMCAxMS44LDguNzlWNi43OUgxMy44QzE0LjgzLDYuNzkgMTUuNjcsNiAxNS43OCw1TTUsMTAuMjlMOS44LDE0Ljc5VjE1Ljc5QzkuOCwxNi45IDEwLjcsMTcuNzkgMTEuOCwxNy43OVYxOUg1VjEwLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVhcnRoQm94TWludXMgPSBcIk0yMiAxN1YxOUgxNFYxN0gyMk01IDNIMTlDMjAuMSAzIDIxIDMuODkgMjEgNVYxMi44QzIwLjM5IDEyLjQ1IDE5LjcyIDEyLjIgMTkgMTIuMDhWNUgxNS43OEMxNS42NyA2IDE0LjgzIDYuNzkgMTMuOCA2Ljc5SDExLjhWOC43OUMxMS44IDkuMzUgMTEuMzUgOS43OSAxMC44IDkuNzlIOC44VjExLjc5SDE0LjhDMTUuMjMgMTEuNzkgMTUuNiAxMi4wNiAxNS43NCAxMi40NEMxMy42IDEzLjMxIDEyLjA3IDE1LjM5IDEyIDE3LjgzQzEwLjcgMTcuNzkgOS44IDE2LjkgOS44IDE1Ljc5VjE0Ljc5TDUgMTAuMjlWMTlIMTIuMDhDMTIuMiAxOS43MiAxMi40NSAyMC4zOSAxMi44IDIxSDVDMy45IDIxIDMgMjAuMTEgMyAxOVY1QzMgMy44OSAzLjg5IDMgNSAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVhcnRoQm94T2ZmID0gXCJNMjMsNC4yN0wyMSw2LjI3VjE5QTIsMiAwIDAsMSAxOSwyMUg2LjI3TDQuMjcsMjNMMywyMS43MkwyMS43MiwzTDIzLDQuMjdNNSwzSDE5LjE4TDE3LjE4LDVIMTUuNzhDMTUuNjcsNiAxNC44Myw2Ljc5IDEzLjgsNi43OUgxMS44VjguNzlDMTEuOCw5LjM1IDExLjM1LDkuNzkgMTAuOCw5Ljc5SDguOFYxMS43OUgxMC4zOEw4LjU1LDEzLjYyTDUsMTAuMjlWMTcuMThMMywxOS4xOFY1QzMsMy44OSAzLjg5LDMgNSwzTTExLjgsMTlWMTcuNzlDMTEuMTcsMTcuNzkgMTAuNiwxNy41IDEwLjIzLDE3LjA0TDguMjcsMTlIMTEuOE0xNS44LDEyLjc5VjE1Ljc5SDE2LjhDMTcuNjksMTUuNzkgMTguNzQsMTYuMzggMTksMTcuMThWOC4yN0wxNS4zMywxMS45NEMxNS42MSwxMi4xMiAxNS44LDEyLjQzIDE1LjgsMTIuNzlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFydGhCb3hQbHVzID0gXCJNMTcgMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNNSAzSDE5QzIwLjEgMyAyMSAzLjg5IDIxIDVWMTIuOEMyMC4zOSAxMi40NSAxOS43MiAxMi4yIDE5IDEyLjA4VjVIMTUuNzhDMTUuNjcgNiAxNC44MyA2Ljc5IDEzLjggNi43OUgxMS44VjguNzlDMTEuOCA5LjM1IDExLjM1IDkuNzkgMTAuOCA5Ljc5SDguOFYxMS43OUgxNC44QzE1LjIzIDExLjc5IDE1LjYgMTIuMDYgMTUuNzQgMTIuNDRDMTMuNiAxMy4zMSAxMi4wNyAxNS4zOSAxMiAxNy44M0MxMC43IDE3Ljc5IDkuOCAxNi45IDkuOCAxNS43OVYxNC43OUw1IDEwLjI5VjE5SDEyLjA4QzEyLjIgMTkuNzIgMTIuNDUgMjAuMzkgMTIuOCAyMUg1QzMuOSAyMSAzIDIwLjExIDMgMTlWNUMzIDMuODkgMy44OSAzIDUgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlFYXJ0aEJveFJlbW92ZSA9IFwiTTE0LjQ2IDE1Ljg4TDE1Ljg4IDE0LjQ2TDE4IDE2LjU5TDIwLjEyIDE0LjQ3TDIxLjU0IDE1Ljg4TDE5LjQxIDE4TDIxLjU0IDIwLjEyTDIwLjEyIDIxLjU0TDE4IDE5LjQxTDE1Ljg4IDIxLjU0TDE0LjQ2IDIwLjEyTDE2LjU5IDE4TDE0LjQ3IDE1Ljg4TTUgM0gxOUMyMC4xIDMgMjEgMy44OSAyMSA1VjEyLjhDMjAuMzkgMTIuNDUgMTkuNzIgMTIuMiAxOSAxMi4wOFY1SDE1Ljc4QzE1LjY3IDYgMTQuODMgNi43OSAxMy44IDYuNzlIMTEuOFY4Ljc5QzExLjggOS4zNSAxMS4zNSA5Ljc5IDEwLjggOS43OUg4LjhWMTEuNzlIMTQuOEMxNS4yMyAxMS43OSAxNS42IDEyLjA2IDE1Ljc0IDEyLjQ0QzEzLjYgMTMuMzEgMTIuMDcgMTUuMzkgMTIgMTcuODNDMTAuNyAxNy43OSA5LjggMTYuOSA5LjggMTUuNzlWMTQuNzlMNSAxMC4yOVYxOUgxMi4wOEMxMi4yIDE5LjcyIDEyLjQ1IDIwLjM5IDEyLjggMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyAzLjg5IDMuODkgMyA1IDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFydGhNaW51cyA9IFwiTTE0IDE3SDIyVjE5SDE0VjE3TTIwIDEyQzIwIDguNjQgMTcuOTMgNS43NyAxNSA0LjU5VjVDMTUgNi4xIDE0LjEgNyAxMyA3SDExVjlDMTEgOS41NSAxMC41NSAxMCAxMCAxMEg4VjEySDE0QzE0LjUgMTIgMTQuOSAxMi4zNSAxNSAxMi44MUMxMy4yIDEzLjg1IDEyIDE1Ljc5IDEyIDE4QzEyIDE5LjUgMTIuNTQgMjAuODUgMTMuNDQgMjEuOUwxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyTDIxLjkgMTMuNDRDMjEuMzQgMTIuOTYgMjAuNyAxMi41OSAyMCAxMi4zNEwyMCAxMk0xMSAxOS45M1YxOEM5LjkgMTggOSAxNy4xIDkgMTZWMTVMNC4yMSAxMC4yMUM0LjA4IDEwLjc4IDQgMTEuMzggNCAxMkM0IDE2LjA4IDcuMDYgMTkuNDQgMTEgMTkuOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFydGhPZmYgPSBcIk0yMiw1LjI3TDIwLjUsNi43NUMyMS40Niw4LjI4IDIyLDEwLjA3IDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQzEwLjA4LDIyIDguMjgsMjEuNDYgNi43NSwyMC41TDUuMjcsMjJMNCwyMC43MkwyMC43Miw0TDIyLDUuMjdNMTcuOSwxNy4zOUMxOS4yLDE1Ljk3IDIwLDE0LjA4IDIwLDEyQzIwLDEwLjYzIDE5LjY2LDkuMzQgMTkuMDUsOC4yMkwxNC44MywxMi40NEMxNC45NCwxMi42IDE1LDEyLjc5IDE1LDEzVjE2SDE2QzE2Ljg5LDE2IDE3LjY0LDE2LjU5IDE3LjksMTcuMzlNMTEsMTkuOTNWMThDMTAuNSwxOCAxMC4wNywxNy44MyA5LjczLDE3LjU0TDguMjIsMTkuMDVDOS4wNywxOS41IDEwLDE5LjggMTEsMTkuOTNNMTUsNC41OVY1QTIsMiAwIDAsMSAxMyw3SDExVjlBMSwxIDAgMCwxIDEwLDEwSDhWMTJIMTAuMThMOC4wOSwxNC4wOUw0LjIxLDEwLjIxQzQuMDgsMTAuNzggNCwxMS4zOCA0LDEyQzQsMTMuNzQgNC41NiwxNS4zNiA1LjUsMTYuNjdMNC4wOCwxOC4xQzIuNzcsMTYuNDEgMiwxNC4zIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkMxNC4zLDIgMTYuNDEsMi43NyAxOC4xLDQuMDhMMTYuNjcsNS41QzE2LjE2LDUuMTQgMTUuNiw0LjgzIDE1LDQuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFydGhQbHVzID0gXCJNMTcgMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMjAgMTJDMjAgOC42NCAxNy45MyA1Ljc3IDE1IDQuNTlWNUMxNSA2LjEgMTQuMSA3IDEzIDdIMTFWOUMxMSA5LjU1IDEwLjU1IDEwIDEwIDEwSDhWMTJIMTRDMTQuNSAxMiAxNC45IDEyLjM1IDE1IDEyLjgxQzEzLjIgMTMuODUgMTIgMTUuNzkgMTIgMThDMTIgMTkuNSAxMi41NCAyMC44NSAxMy40NCAyMS45TDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJMMjEuOSAxMy40NEMyMS4zNCAxMi45NiAyMC43IDEyLjU5IDIwIDEyLjM0TDIwIDEyTTExIDE5LjkzVjE4QzkuOSAxOCA5IDE3LjEgOSAxNlYxNUw0LjIxIDEwLjIxQzQuMDggMTAuNzggNCAxMS4zOCA0IDEyQzQgMTYuMDggNy4wNiAxOS40NCAxMSAxOS45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlFYXJ0aFJlbW92ZSA9IFwiTTE0LjQ2IDE1Ljg4TDE1Ljg4IDE0LjQ2TDE4IDE2LjU5TDIwLjEyIDE0LjQ3TDIxLjU0IDE1Ljg4TDE5LjQxIDE4TDIxLjU0IDIwLjEyTDIwLjEyIDIxLjU0TDE4IDE5LjQxTDE1Ljg4IDIxLjU0TDE0LjQ2IDIwLjEyTDE2LjU5IDE4TDE0LjQ3IDE1Ljg4TTIwIDEyQzIwIDguNjQgMTcuOTMgNS43NyAxNSA0LjU5VjVDMTUgNi4xIDE0LjEgNyAxMyA3SDExVjlDMTEgOS41NSAxMC41NSAxMCAxMCAxMEg4VjEySDE0QzE0LjUgMTIgMTQuOSAxMi4zNSAxNSAxMi44MUMxMy4yIDEzLjg1IDEyIDE1Ljc5IDEyIDE4QzEyIDE5LjUgMTIuNTQgMjAuODUgMTMuNDQgMjEuOUwxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyTDIxLjkgMTMuNDRDMjEuMzQgMTIuOTYgMjAuNyAxMi41OSAyMCAxMi4zNEwyMCAxMk0xMSAxOS45M1YxOEM5LjkgMTggOSAxNy4xIDkgMTZWMTVMNC4yMSAxMC4yMUM0LjA4IDEwLjc4IDQgMTEuMzggNCAxMkM0IDE2LjA4IDcuMDYgMTkuNDQgMTEgMTkuOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWdnID0gXCJNMTkuNSwxNC41QTcuNSw3LjUgMCAwLDEgMTIsMjJBNy41LDcuNSAwIDAsMSA0LjUsMTQuNUM0LjUsMTAuMzYgNy44NiwyIDEyLDJDMTYuMTQsMiAxOS41LDEwLjM2IDE5LjUsMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFZ2dFYXN0ZXIgPSBcIk02Ljg5LDYuMzZDOC4yMywzLjkxIDEwLDIgMTIsMkMxNCwyIDE1Ljc3LDMuOTEgMTcuMTEsNi4zNkMxNi4yNiw2LjU3IDE1LjUsNy4wNyAxNSw3Ljc3QzEzLjc5LDYuMTEgMTEuNDYsNS43NSA5LjgsNi45N0M5LjUsNy4xOSA5LjIyLDcuNDYgOSw3Ljc3QzguNSw3LjA3IDcuNzQsNi41NyA2Ljg5LDYuMzZNMTUsMTguMDZMMTIsMTUuMDZMOSwxOC4wNkw2LDE1LjA2TDQuNzMsMTYuMzNDNS43NSwyMC4zNSA5LjgzLDIyLjc3IDEzLjg0LDIxLjc2QzE2LjUsMjEuMDggMTguNTksMTkgMTkuMjcsMTYuMzNMMTgsMTUuMDZMMTUsMTguMDZNOSwxNS45NEwxMiwxMi45NEwxNSwxNS45NEwxOCwxMi45NEwxOS41LDE0LjQ0QzE5LjM3LDEyLjEzIDE4LjgsOS44NiAxNy44MSw3Ljc2QzE2LjY1LDcuODYgMTUuNzUsOC44MyAxNS43NSwxMEgxNC4yNUEyLjI1LDIuMjUgMCAwLDAgMTIsNy43NUEyLjI1LDIuMjUgMCAwLDAgOS43NSwxMEg4LjI1QzguMjUsOC44MyA3LjM1LDcuODYgNi4xOSw3Ljc2QzUuMiw5Ljg2IDQuNjMsMTIuMTMgNC41LDE0LjQ0TDYsMTIuOTRMOSwxNS45NFpcIjtcclxuZXhwb3J0IHZhciBtZGlFZ2dPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w2LjEgOEM1LjEgMTAuMyA0LjUgMTIuOCA0LjUgMTQuNUM0LjUgMTguNiA3LjkgMjIgMTIgMjJDMTQuMiAyMiAxNi4yIDIxIDE3LjYgMTkuNUwyMC44IDIyLjdMMjIuMSAyMS41TTE5LjUgMTQuNUMxOS41IDEwLjQgMTYuMSAyIDEyIDJDMTAuNSAyIDkuMSAzLjEgNy45IDQuN0wxOS4zIDE2LjFDMTkuNCAxNS42IDE5LjUgMTUuMSAxOS41IDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWdnT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNi4xIDhDNS4xIDEwLjI4IDQuNSAxMi43NiA0LjUgMTQuNUM0LjUgMTguNjQgNy44NiAyMiAxMiAyMkMxNC4yMyAyMiAxNi4yMiAyMSAxNy41OSAxOS41TDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TTEyIDIwQzguOTcgMjAgNi41IDE3LjUzIDYuNSAxNC41QzYuNSAxMy4wOCA2Ljk1IDExLjI1IDcuNjMgOS41TDE2LjE3IDE4LjA2QzE1LjE2IDE5LjI0IDEzLjY3IDIwIDEyIDIwTTkuMzYgNi4xNkw3LjkyIDQuNzJDOS4xIDMuMTEgMTAuNSAyIDEyIDJDMTYuMTQgMiAxOS41IDEwLjM2IDE5LjUgMTQuNUMxOS41IDE1LjA2IDE5LjQzIDE1LjYgMTkuMzIgMTYuMTJMMTcuNSAxNC4yOUMxNy4zOCAxMC40NiAxNC4yOCA0IDEyIDRDMTEuMTcgNCAxMC4yMiA0Ljg3IDkuMzYgNi4xNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFZ2dPdXRsaW5lID0gXCJNMTIgNEMxNC4zMiA0IDE3LjUgMTAuNyAxNy41IDE0LjVDMTcuNSAxNy41MyAxNS4wMyAyMCAxMiAyMFM2LjUgMTcuNTMgNi41IDE0LjVDNi41IDEwLjcgOS42OCA0IDEyIDRNMTIgMkM3Ljg2IDIgNC41IDEwLjM2IDQuNSAxNC41QzQuNSAxOC42NCA3Ljg2IDIyIDEyIDIyUzE5LjUgMTguNjQgMTkuNSAxNC41QzE5LjUgMTAuMzYgMTYuMTQgMiAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVpZmZlbFRvd2VyID0gXCJNOC4yMSAxN0M4LjY1IDE2LjE1IDkuMDYgMTUuMTYgOS40NCAxNEg5VjEySDEwQzEwLjYxIDkuNCAxMSA2LjEzIDExIDJIMTNDMTMgNi4xMyAxMy40IDkuNCAxNCAxMkgxNVYxNEgxNC41NkMxNC45NCAxNS4xNiAxNS4zNSAxNi4xNSAxNS43OSAxN0gxN0wxNyAxOUwxOSAyMkgxNi41OEMxNS44MSAyMC4yNCAxNC4wNSAxOSAxMiAxOUM5Ljk1IDE5IDguMTkgMjAuMjQgNy40MiAyMkg1TDcgMTlMNi45NyAxN0g4LjIxTTEyLjU5IDE0SDExLjQxQzExLjA3IDE1LjEzIDEwLjY5IDE2LjEzIDEwLjI4IDE3SDEzLjcyQzEzLjMyIDE2LjEzIDEyLjkzIDE1LjEzIDEyLjU5IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVpZ2h0VHJhY2sgPSBcIk03LDJMNSw1VjE2TDYsMjBDNi4yNywyMS4wNyA2LjksMjIgOCwyMkgxNkEyLDIgMCAwLDAgMTgsMjBMMTksMTZWNUwxNywySDE1VjNIMTNWMkg3TTcsNkgxN1YxNkg3VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWplY3QgPSBcIk0xMiw1TDUuMzMsMTVIMTguNjdNNSwxN0gxOVYxOUg1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVqZWN0T3V0bGluZSA9IFwiTTUsMTdIMTlWMTlINVYxN00xMiw1TDUuMzMsMTVIMTguNjdMMTIsNU0xMiw4LjZMMTQuOTMsMTNIOS4wN0wxMiw4LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxlY3RyaWNTd2l0Y2ggPSBcIk0xLDExSDMuMTdDMy41OCw5LjgzIDQuNjksOSA2LDlDNi42NSw5IDcuMjUsOS4yMSA3Ljc0LDkuNTZMMTQuNDQsNC44N0wxNS41OCw2LjVMOC44OSwxMS4yQzguOTYsMTEuNDUgOSwxMS43MiA5LDEyQTMsMyAwIDAsMSA2LDE1QzQuNjksMTUgMy41OCwxNC4xNyAzLjE3LDEzSDFWMTFNMjMsMTFWMTNIMjAuODNDMjAuNDIsMTQuMTcgMTkuMzEsMTUgMTgsMTVBMywzIDAgMCwxIDE1LDEyQTMsMyAwIDAsMSAxOCw5QzE5LjMxLDkgMjAuNDIsOS44MyAyMC44MywxMUgyM002LDExQTEsMSAwIDAsMCA1LDEyQTEsMSAwIDAsMCA2LDEzQTEsMSAwIDAsMCA3LDEyQTEsMSAwIDAsMCA2LDExTTE4LDExQTEsMSAwIDAsMCAxNywxMkExLDEgMCAwLDAgMTgsMTNBMSwxIDAgMCwwIDE5LDEyQTEsMSAwIDAsMCAxOCwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbGVjdHJpY1N3aXRjaENsb3NlZCA9IFwiTTIwLjgzIDExQTMgMyAwIDAgMCAxNS4xOCAxMUg4LjgyQTMgMyAwIDAgMCAzLjE3IDExSDFWMTNIMy4xN0EzIDMgMCAwIDAgOC44MiAxM0gxNS4xOEEzIDMgMCAwIDAgMjAuODMgMTNIMjNWMTFNNiAxM0ExIDEgMCAxIDEgNyAxMkExIDEgMCAwIDEgNiAxM00xOCAxM0ExIDEgMCAxIDEgMTkgMTJBMSAxIDAgMCAxIDE4IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVsZWN0cm9uRnJhbWV3b3JrID0gXCJNMTIgMjJDMTAuMzMgMjIgOC44NCAyMC41IDcuOSAxNy45M0M3LjgzIDE3LjczIDcuOTMgMTcuNSA4LjE0IDE3LjQ0QzguMzQgMTcuMzYgOC41NiAxNy40NyA4LjYzIDE3LjY3QzkuNDQgMTkuOSAxMC43IDIxLjIzIDEyIDIxLjIzQzEyLjk0IDIxLjIzIDEzLjg3IDIwLjU1IDE0LjYyIDE5LjMxQzE0LjczIDE5LjEzIDE0Ljk2IDE5LjA3IDE1LjE1IDE5LjE4QzE1LjMzIDE5LjI5IDE1LjM5IDE5LjUzIDE1LjI4IDE5LjcxQzE0LjM4IDIxLjE5IDEzLjIyIDIyIDEyIDIyTTE1LjkxIDE3LjcyQzE1Ljg3IDE3LjcyIDE1LjgzIDE3LjcxIDE1LjggMTcuN0MxNS41OSAxNy42MyAxNS41IDE3LjQyIDE1LjU0IDE3LjIxQzE2IDE1LjgxIDE2LjIyIDE0LjE4IDE2LjIyIDEyLjVDMTYuMjIgOC42NSAxNC45NyA1LjI0IDEzLjE5IDQuMTRDMTIuOTQgNC41IDEyLjUgNC43OCAxMiA0Ljc4QzExLjI0IDQuNzggMTAuNjEgNC4xNiAxMC42MSAzLjM5QzEwLjYxIDIuNjIgMTEuMjQgMiAxMiAyQzEyLjc3IDIgMTMuNCAyLjYxIDEzLjQxIDMuMzdDMTUuNTMgNC41IDE3IDguMjEgMTcgMTIuNUMxNyAxNC4yNSAxNi43NSAxNS45NiAxNi4yOCAxNy40NUMxNi4yMyAxNy42MSAxNi4wOCAxNy43MiAxNS45MSAxNy43Mk0xMiAyLjc3QzExLjY2IDIuNzcgMTEuMzggMy4wNSAxMS4zOCAzLjM5QzExLjM4IDMuNzMgMTEuNjcgNCAxMiA0QzEyLjM1IDQgMTIuNjQgMy43MyAxMi42NCAzLjM5QzEyLjY0IDMuMDUgMTIuMzUgMi43NyAxMiAyLjc3TTQuMDggMTguNTRDMy4zMSAxOC41NCAyLjY4IDE3LjkxIDIuNjggMTcuMTVDMi42OCAxNi42NiAyLjk0IDE2LjIyIDMuMzMgMTUuOTdDMy4xOSAxMy41NiA1LjY4IDEwLjQxIDkuNSA4LjIyQzExLjA5IDcuMzIgMTIuNzUgNi42NyAxNC4zMiA2LjM0QzE0LjUgNi4yOSAxNC43MyA2LjQyIDE0Ljc3IDYuNjNDMTQuODIgNi44NCAxNC42OSA3LjA1IDE0LjUgNy4wOUMxMyA3LjQxIDExLjQxIDguMDMgOS45IDguODlDNi40NiAxMC44NiA0LjEgMTMuNjggNC4xIDE1Ljc2QzQuODYgMTUuNzcgNS41IDE2LjM5IDUuNSAxNy4xNUM1LjUgMTcuOTIgNC44NSAxOC41NCA0LjA4IDE4LjU0TTQuMDggMTYuNTNDMy43NCAxNi41MyAzLjQ2IDE2LjgxIDMuNDYgMTcuMTVDMy40NiAxNy41IDMuNzQgMTcuNzcgNC4wOCAxNy43N1M0LjcxIDE3LjUgNC43MSAxNy4xNUM0LjcxIDE2LjgxIDQuNDIgMTYuNTMgNC4wOCAxNi41M00xOC41IDEzLjQ0QzE4LjQzIDEzLjQ0IDE4LjM0IDEzLjQxIDE4LjI3IDEzLjM1QzE4LjExIDEzLjIxIDE4LjA5IDEyLjk3IDE4LjIzIDEyLjhDMTkuNzcgMTEgMjAuMyA5LjI2IDE5LjY0IDguMTRDMTkuMTcgNy4zMyAxOC4xIDYuODggMTYuNjMgNi44NkMxNi40MSA2Ljg2IDE2LjI0IDYuNjggMTYuMjUgNi40N0MxNi4yNSA2LjI2IDE2LjQzIDYuMSAxNi42NCA2LjA5QzE4LjM5IDYuMTEgMTkuNyA2LjcgMjAuMzEgNy43NUMyMS4xNSA5LjE5IDIwLjYgMTEuMjEgMTguODIgMTMuM0MxOC43NCAxMy4zOSAxOC42MyAxMy40NCAxOC41IDEzLjQ0TTE2LjUgMTguOUMxNC41IDE4LjkgMTEuOTQgMTguMTYgOS41IDE2Ljc3QzcuOTUgMTUuODggNi41NyAxNC43OSA1LjUgMTMuNjNDNS4zNSAxMy40NyA1LjM2IDEzLjIzIDUuNSAxMy4wOEM1LjY4IDEyLjk0IDUuOTIgMTIuOTUgNi4wNyAxMy4xMUM3LjA4IDE0LjIxIDguNCAxNS4yNSA5Ljg5IDE2LjFDMTMuMiAxOCAxNi43NyAxOC42MyAxOC42NSAxNy43MkMxOC41NyAxNy41NSAxOC41IDE3LjM1IDE4LjUgMTcuMTVDMTguNSAxNi4zOCAxOS4xNSAxNS43NiAxOS45MiAxNS43NkMyMC42OSAxNS43NiAyMS4zMiAxNi4zOCAyMS4zMiAxNy4xNUMyMS4zMiAxNy45MiAyMC42OSAxOC41NCAxOS45MiAxOC41NEMxOS42NCAxOC41NCAxOS4zOSAxOC40NiAxOS4xNyAxOC4zMkMxOC40NyAxOC43MSAxNy41NiAxOC45IDE2LjUgMTguOU0xOS41IDE3LjYzQzE5LjYzIDE3LjcxIDE5Ljc3IDE3Ljc3IDE5LjkyIDE3Ljc3QzIwLjI3IDE3Ljc3IDIwLjU1IDE3LjUgMjAuNTUgMTcuMTVDMjAuNTUgMTYuODEgMjAuMjcgMTYuNTMgMTkuOTIgMTYuNTNTMTkuMyAxNi44MSAxOS4zIDE3LjE1QzE5LjMgMTcuMjkgMTkuMzUgMTcuNDIgMTkuNDMgMTcuNTNDMTkuNDcgMTcuNTUgMTkuNSAxNy41OSAxOS41IDE3LjYzTTQuNDYgMTJDNC4zMyAxMiA0LjIgMTEuOTIgNC4xMyAxMS44QzMuMjMgMTAuMjUgMy4wOCA4LjgxIDMuNyA3Ljc0QzQuNTQgNi4zIDYuNTggNS43NiA5LjMxIDYuMjVDOS41IDYuMjkgOS42NiA2LjUgOS42MiA2LjdDOS41OSA2LjkxIDkuMzkgNy4wNSA5LjE4IDdDNi44MiA2LjU5IDUgNyA0LjM3IDguMTNDMy44OSA4Ljk1IDQuMDQgMTAuMTEgNC44IDExLjQxQzQuOSAxMS42IDQuODQgMTEuODMgNC42NSAxMS45NEM0LjU5IDExLjk3IDQuNTMgMTIgNC40NiAxMk0xMi4yMSAxMy40QzExLjcxIDEzLjUgMTEuMjEgMTMuMTkgMTEuMTEgMTIuNjlDMTEgMTIuMiAxMS4zMiAxMS43MSAxMS44MSAxMS42QzEyLjMxIDExLjUgMTIuODEgMTEuODEgMTIuOTEgMTIuMzFDMTMgMTIuOCAxMi43IDEzLjI5IDEyLjIxIDEzLjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxlcGhhbnQgPSBcIk0xOS41LDE1LjVBMC41LDAuNSAwIDAsMSAxOSwxNkEwLjUsMC41IDAgMCwxIDE4LjUsMTUuNVY4LjVDMTguNSw2LjU3IDE2LjQzLDUgMTQuNSw1SDZBNCw0IDAgMCwwIDIsOVYxOUg2VjE1SDExVjE5SDE1VjE0LjVBMC41LDAuNSAwIDAsMSAxNS41LDE0QTAuNSwwLjUgMCAwLDEgMTYsMTQuNVYxNkEzLDMgMCAwLDAgMTksMTlBMywzIDAgMCwwIDIyLDE2VjE0SDE5LjVWMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbGV2YXRpb25EZWNsaW5lID0gXCJNMjEsMjFIM1YxMS4yNUw5LjQ1LDE1TDEzLjIyLDEyLjhMMjEsMTcuMjlWMjFNMyw4Ljk0VjYuNzVMOS40NSwxMC41TDEzLjIyLDguM0wyMSwxMi43OVYxNUwxMy4yMiwxMC41TDkuNDUsMTIuNjdMMyw4Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVsZXZhdGlvblJpc2UgPSBcIk0zLDIxVjE3LjI5TDEwLjc4LDEyLjhMMTQuNTUsMTVMMjEsMTEuMjVWMjFIM00yMSw4Ljk0TDE0LjU1LDEyLjY3TDEwLjc4LDEwLjVMMywxNVYxMi43OUwxMC43OCw4LjNMMTQuNTUsMTAuNUwyMSw2Ljc1VjguOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxldmF0b3IgPSBcIk03LDJMMTEsNkg4VjEwSDZWNkgzTDcsMk0xNywxMEwxMyw2SDE2VjJIMThWNkgyMUwxNywxME03LDEySDE3QTIsMiAwIDAsMSAxOSwxNFYyMEEyLDIgMCAwLDEgMTcsMjJIN0EyLDIgMCAwLDEgNSwyMFYxNEEyLDIgMCAwLDEgNywxMk03LDE0VjIwSDE3VjE0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxldmF0b3JEb3duID0gXCJNNyAxMEwxMSA2SDhWMkg2VjZIM0w3IDEwTTE3IDEwTDEzIDZIMTZWMkgxOFY2SDIxTDE3IDEwTTcgMTJIMTdDMTguMTEgMTIgMTkgMTIuOSAxOSAxNFYyMEMxOSAyMS4xMSAxOC4xMSAyMiAxNyAyMkg3QzUuOSAyMiA1IDIxLjExIDUgMjBWMTRDNSAxMi45IDUuOSAxMiA3IDEyTTcgMTRWMjBIMTdWMTRIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbGV2YXRvclBhc3NlbmdlciA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM004IDVDOC44IDUgOS41IDUuNyA5LjUgNi41UzguOCA4IDggOCA2LjUgNy4zIDYuNSA2LjUgNy4yIDUgOCA1TTExIDE0SDkuNVYxOUg2LjVWMTRINVYxMUM1IDkuOSA1LjkgOSA3IDlIOUMxMC4xIDkgMTEgOS45IDExIDExVjE0TTE1LjkgMTlMMTMgMTQuMkgxOC44TDE1LjkgMTlNMTMgMTBMMTYgNUwxOSAxMEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbGV2YXRvclVwID0gXCJNNyAyTDExIDZIOFYxMEg2VjZIM0w3IDJNMTcgMkwxMyA2SDE2VjEwSDE4VjZIMjFMMTcgMk03IDEySDE3QzE4LjExIDEyIDE5IDEyLjkgMTkgMTRWMjBDMTkgMjEuMTEgMTguMTEgMjIgMTcgMjJIN0M1LjkgMjIgNSAyMS4xMSA1IDIwVjE0QzUgMTIuOSA1LjkgMTIgNyAxMk03IDE0VjIwSDE3VjE0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxsaXBzZSA9IFwiTTEyLDRDNi41LDQgMiw3LjU4IDIsMTJDMiwxNi40MiA2LjUsMjAgMTIsMjBDMTcuNSwyMCAyMiwxNi40MiAyMiwxMkMyMiw3LjU4IDE3LjUsNCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVsbGlwc2VPdXRsaW5lID0gXCJNMTIsNkMxNi40MSw2IDIwLDguNjkgMjAsMTJDMjAsMTUuMzEgMTYuNDEsMTggMTIsMThDNy41OSwxOCA0LDE1LjMxIDQsMTJDNCw4LjY5IDcuNTksNiAxMiw2TTEyLDRDNi41LDQgMiw3LjU4IDIsMTJDMiwxNi40MiA2LjUsMjAgMTIsMjBDMTcuNSwyMCAyMiwxNi40MiAyMiwxMkMyMiw3LjU4IDE3LjUsNCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsID0gXCJNMjAsOEwxMiwxM0w0LDhWNkwxMiwxMUwyMCw2TTIwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsQWxlcnQgPSBcIk0xOCA4TDEwIDEzTDIgOFY2TDEwIDExTDE4IDZNMTggNEgyQy45IDQgMCA0LjkgMCA2VjE4QzAgMTkuMSAuOSAyMCAyIDIwSDE4QzE5LjEgMjAgMjAgMTkuMSAyMCAxOFY2QzIwIDQuOSAxOS4xIDQgMTggNE0yNCA3SDIyVjEzSDI0VjdNMjQgMTVIMjJWMTdIMjRWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxBbGVydE91dGxpbmUgPSBcIk0yNCA3SDIyVjEzSDI0VjdNMjQgMTVIMjJWMTdIMjRWMTVNMjAgNkMyMCA0LjkgMTkuMSA0IDE4IDRIMkMuOSA0IDAgNC45IDAgNlYxOEMwIDE5LjEgLjkgMjAgMiAyMEgxOEMxOS4xIDIwIDIwIDE5LjEgMjAgMThWNk0xOCA2TDEwIDExTDIgNkgxOE0xOCAxOEgyVjhMMTAgMTNMMTggOFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbEJveCA9IFwiTTUsM0EyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVNNi40LDYuNUgxNy42QzE4LjM3LDYuNSAxOSw3LjEyIDE5LDcuOVYxNi4xQTEuNCwxLjQgMCAwLDEgMTcuNiwxNy41SDYuNEM1LjYzLDE3LjUgNSwxNi44NyA1LDE2LjFWNy45QzUsNy4xMiA1LjYyLDYuNSA2LjQsNi41TTYsOFYxMEwxMiwxNEwxOCwxMFY4TDEyLDEyTDYsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbENoZWNrID0gXCJNMjEsMTMuMzRDMjAuMzcsMTMuMTIgMTkuNywxMyAxOSwxM0E2LDYgMCAwLDAgMTMsMTlDMTMsMTkuMzQgMTMuMDMsMTkuNjcgMTMuMDgsMjBIM0EyLDIgMCAwLDEgMSwxOFY2QzEsNC44OSAxLjg5LDQgMyw0SDE5QTIsMiAwIDAsMSAyMSw2VjEzLjM0TTIzLjUsMTdMMTguNSwyMkwxNSwxOC41TDE2LjUsMTdMMTguNSwxOUwyMiwxNS41TDIzLjUsMTdNMyw2VjhMMTEsMTNMMTksOFY2TDExLDExTDMsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbENoZWNrT3V0bGluZSA9IFwiTTIzLjUgMTdMMTguNSAyMkwxNSAxOC41TDE2LjUgMTdMMTguNSAxOUwyMiAxNS41TDIzLjUgMTdNMTMgMThIM1Y4TDExIDEzTDE5IDhWMTNIMjFWNkMyMSA0LjkgMjAuMSA0IDE5IDRIM0MxLjkgNCAxIDQuOSAxIDZWMThDMSAxOS4xIDEuOSAyMCAzIDIwSDEzVjE4TTE5IDZMMTEgMTFMMyA2SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsRWRpdCA9IFwiTTIxLDEyLjEzQzIwLjg1LDEyLjE0IDIwLjcxLDEyLjE5IDIwLjYxLDEyLjNMMTkuNjEsMTMuM0wyMS42NiwxNS4zTDIyLjY2LDE0LjNDMjIuODgsMTQuMDkgMjIuODgsMTMuNzQgMjIuNjYsMTMuNTNMMjEuNDIsMTIuM0MyMS4zMiwxMi4xOSAyMS4xOCwxMi4xNCAyMS4wNCwxMi4xM00xOS4wNCwxMy44OEwxMywxOS45NFYyMkgxNS4wNkwyMS4xMiwxNS45M00yMCw0SDRBMiwyIDAgMCwwIDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgxMVYxOS4xMUwxOS4yNCwxMC44OUMxOS43MSwxMC40IDIwLjM2LDEwLjEzIDIxLjA0LDEwLjEzQzIxLjM4LDEwLjEzIDIxLjcyLDEwLjE5IDIyLjA0LDEwLjMyVjZDMjIuMDQsNC44OCAyMS4xMiw0IDIwLDRNMjAsOEwxMiwxM0w0LDhWNkwxMiwxMUwyMCw2XCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxFZGl0T3V0bGluZSA9IFwiTTE5LjA3IDEzLjg4TDEzIDE5Ljk0VjIySDE1LjA2TDIxLjEyIDE1LjkzTTIyLjcgMTMuNThMMjEuNDIgMTIuM0MyMS4zMiAxMi4xOSAyMS4xOCAxMi4xMyAyMS4wNCAxMi4xM0MyMC44OSAxMi4xNCAyMC43NSAxMi4xOSAyMC42NSAxMi4zTDE5LjY1IDEzLjNMMjEuNyAxNS4zTDIyLjcgMTQuM0MyMi44OSAxNC4xIDIyLjg5IDEzLjc4IDIyLjcgMTMuNThNMTEgMThINFY4TDEyIDEzTDIwIDhWMTBIMjJWNkMyMiA0LjkgMjEuMSA0IDIwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDExVjE4TTIwIDZMMTIgMTFMNCA2SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsTG9jayA9IFwiTTIwLjUsMEEyLjUsMi41IDAgMCwxIDIzLDIuNVYzQTEsMSAwIDAsMSAyNCw0VjhBMSwxIDAgMCwxIDIzLDlIMThBMSwxIDAgMCwxIDE3LDhWNEExLDEgMCAwLDEgMTgsM1YyLjVBMi41LDIuNSAwIDAsMSAyMC41LDBNMTIsMTFMNCw2VjhMMTIsMTNMMTYuMTgsMTAuMzlDMTYuNjksMTAuNzcgMTcuMzIsMTEgMTgsMTFIMjJWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0SDE1VjhDMTUsOC4zNiAxNS4wNiw4LjcgMTUuMTgsOUwxMiwxMU0yMC41LDFBMS41LDEuNSAwIDAsMCAxOSwyLjVWM0gyMlYyLjVBMS41LDEuNSAwIDAsMCAyMC41LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxNYXJrQXNVbnJlYWQgPSBcIk0xOC44NCw3SDE2LjIyTDEwLjUsNEw0LDcuNDFWMTdBMiwyIDAgMCwxIDIsMTVWNy4xN0MyLDYuNSAyLjI4LDYuMDYgMi44MSw1LjgxTDEwLjUsMkwxOC4wNSw1LjgxQzE4LjUsNi4wOSAxOC43OCw2LjUgMTguODQsN003LDhIMjBBMiwyIDAgMCwxIDIyLDEwVjE5QTIsMiAwIDAsMSAyMCwyMUg3QTIsMiAwIDAsMSA1LDE5VjEwQTIsMiAwIDAsMSA3LDhNMjAsMTEuNjdWMTBMMTMuNSwxMy4zMUw3LDEwVjExLjY3TDEzLjUsMTVMMjAsMTEuNjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxNaW51cyA9IFwiTTMsNEMxLjg5LDQgMSw0Ljg5IDEsNlYxOEEyLDIgMCAwLDAgMywyMEgxNC4wOUMxNC4wMywxOS42NyAxNCwxOS4zNCAxNCwxOUE2LDYgMCAwLDEgMjAsMTNDMjAuMzQsMTMgMjAuNjcsMTMuMDMgMjEsMTMuMDlWNkMyMSw0Ljg5IDIwLjEsNCAxOSw0SDNNMyw2TDExLDExTDE5LDZWOEwxMSwxM0wzLDhWNk0xNiwxOFYyMEgyNFYxOEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE1pbnVzT3V0bGluZSA9IFwiTTE2IDE4VjIwSDI0VjE4SDE2TTE0IDE5QzE0IDE4LjY2IDE0LjA0IDE4LjMzIDE0LjA5IDE4SDNWOEwxMSAxM0wxOSA4VjEzLjA5QzE5LjMzIDEzLjA0IDE5LjY2IDEzIDIwIDEzUzIwLjY3IDEzLjA0IDIxIDEzLjA5VjZDMjEgNC45IDIwLjEgNCAxOSA0SDNDMS45IDQgMSA0LjkgMSA2VjE4QzEgMTkuMSAxLjkgMjAgMyAyMEgxNC4wOUMxNC4wNCAxOS42NyAxNCAxOS4zNCAxNCAxOU0xOSA2TDExIDExTDMgNkgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE11bHRpcGxlID0gXCJNMjIsNlY0TDE0LDlMNiw0VjZMMTQsMTFMMjIsNk0yMiwyQTIsMiAwIDAsMSAyNCw0VjE2QTIsMiAwIDAsMSAyMiwxOEg2QzQuODksMTggNCwxNy4xIDQsMTZWNEM0LDIuODkgNC44OSwyIDYsMkgyMk0yLDZWMjBIMjBWMjJIMkEyLDIgMCAwLDEgMCwyMFY2SDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxNdWx0aXBsZU91dGxpbmUgPSBcIk0yIDZWMjBIMjBWMjJIMkMuODk1IDIyIDAgMjEuMTEgMCAyMFY2SDJNMjQgNEMyNCAyLjkgMjMuMSAyIDIyIDJINkM0LjkgMiA0IDIuOSA0IDRWMTZDNCAxNy4xIDQuOSAxOCA2IDE4SDIyQzIzLjEgMTggMjQgMTcuMSAyNCAxNlY0TTIyIDRMMTQgOUw2IDRIMjJNMjIgMTZINlY2TDE0IDExTDIyIDZWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxOZXdzbGV0dGVyID0gXCJNMTIgLjY0TDguMjMgM0g1VjVMMi45NyA2LjI5QzIuMzkgNi42NCAyIDcuMjcgMiA4VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWOEMyMiA3LjI3IDIxLjYxIDYuNjQgMjEuMDMgNi4yOUwxOSA1VjNIMTUuNzdNNyA1SDE3VjkuODhMMTIgMTNMNyA5Ljg4TTggNlY3LjVIMTZWNk01IDcuMzhWOC42M0w0IDhNMTkgNy4zOEwyMCA4TDE5IDguNjNNOCA4LjVWMTBIMTZWOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsT2ZmID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMMi42IDQuNUMyLjIgNC45IDIgNS40IDIgNlYxOEMyIDE5LjEgMi45IDIwIDQgMjBIMTguMUwyMC44IDIyLjdMMjIuMSAyMS41TTQgOFY2TDQuMyA2LjJMOS42IDExLjVMNCA4TTEzLjQgMTAuMkw3LjIgNEgyMEMyMS4xIDQgMjIgNC45IDIyIDZWMThDMjIgMTguMiAyMiAxOC41IDIxLjkgMTguN0wxNC42IDExLjRMMjAgOFY2TDEzLjQgMTAuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE9mZk91dGxpbmUgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0wyLjYgNC41QzIuMyA0LjkgMiA1LjQgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgxOC4xTDIwLjggMjIuN0wyMi4xIDIxLjVNNCAxOFY4TDkuNiAxMS41TDE2LjEgMThINE05LjIgNkw3LjIgNEgyMEMyMS4xIDQgMjIgNC45IDIyIDZWMThDMjIgMTguMiAyMiAxOC41IDIxLjkgMTguN0wyMCAxNi44VjhMMTQuNiAxMS40TDEzLjQgMTAuMkwyMCA2SDkuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE9wZW4gPSBcIk00LDhMMTIsMTNMMjAsOFY4TDEyLDNMNCw4VjhNMjIsOFYxOEEyLDIgMCAwLDEgMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY4QzIsNy4yNyAyLjM5LDYuNjQgMi45Nyw2LjI5TDEyLDAuNjRMMjEuMDMsNi4yOUMyMS42MSw2LjY0IDIyLDcuMjcgMjIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE9wZW5NdWx0aXBsZSA9IFwiTTYsOEwxNCwxM0wyMiw4VjhMMTQsM0w2LDhWOE0yNCw4VjE4QTIsMiAwIDAsMSAyMiwyMEg2QTIsMiAwIDAsMSA0LDE4VjhDNCw3LjI3IDQuMzksNi42NCA0Ljk3LDYuMjlMMTQsMC42NEwyMy4wMyw2LjI5QzIzLjYxLDYuNjQgMjQsNy4yNyAyNCw4TTIsOFYyMkgyMFYyNEgyQTIsMiAwIDAsMSAwLDIyVjhIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE9wZW5NdWx0aXBsZU91dGxpbmUgPSBcIk0yIDhWMjJIMjBWMjRIMkMuODk1IDI0IDAgMjMuMTEgMCAyMlY4SDJNMjMuMDMgNi4yOUwxNCAuNjRMNC45NyA2LjI5QzQuMzkgNi42NCA0IDcuMjcgNCA4VjE4QzQgMTkuMSA0LjkgMjAgNiAyMEgyMkMyMy4xIDIwIDI0IDE5LjEgMjQgMThWOEMyNCA3LjI3IDIzLjYxIDYuNjQgMjMuMDMgNi4yOU0yMiAxOEg2VjEwTDE0IDE1TDIyIDEwVjE4TTE0IDEzTDYgOEwxNCAzTDIyIDhMMTQgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxPcGVuT3V0bGluZSA9IFwiTTIxLjAzIDYuMjlMMTIgLjY0TDIuOTcgNi4yOUMyLjM5IDYuNjQgMiA3LjI3IDIgOFYxOEMyIDE5LjEgMi45IDIwIDQgMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjhDMjIgNy4yNyAyMS42MSA2LjY0IDIxLjAzIDYuMjlNMjAgMThINFYxMEwxMiAxNUwyMCAxMFYxOE0xMiAxM0w0IDhMMTIgM0wyMCA4TDEyIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsT3V0bGluZSA9IFwiTTIyIDZDMjIgNC45IDIxLjEgNCAyMCA0SDRDMi45IDQgMiA0LjkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWNk0yMCA2TDEyIDExTDQgNkgyME0yMCAxOEg0VjhMMTIgMTNMMjAgOFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbFBsdXMgPSBcIk0zLDRDMS44OSw0IDEsNC44OSAxLDZWMThBMiwyIDAgMCwwIDMsMjBIMTQuMDlDMTQuMDMsMTkuNjcgMTQsMTkuMzQgMTQsMTlBNiw2IDAgMCwxIDIwLDEzQzIwLjM0LDEzIDIwLjY3LDEzLjAzIDIxLDEzLjA5VjZDMjEsNC44OSAyMC4xLDQgMTksNEgzTTMsNkwxMSwxMUwxOSw2VjhMMTEsMTNMMyw4VjZNMTksMTVWMThIMTZWMjBIMTlWMjNIMjFWMjBIMjRWMThIMjFWMTVIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxQbHVzT3V0bGluZSA9IFwiTTE5IDE1VjE4SDE2VjIwSDE5VjIzSDIxVjIwSDI0VjE4SDIxVjE1SDE5TTE0IDE4SDNWOEwxMSAxM0wxOSA4VjEzSDIxVjZDMjEgNC45IDIwLjEgNCAxOSA0SDNDMS45IDQgMSA0LjkgMSA2VjE4QzEgMTkuMSAxLjkgMjAgMyAyMEgxNFYxOE0xOSA2TDExIDExTDMgNkgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbFJlY2VpdmUgPSBcIk0yMiAyMEgxOFYyM0wxMyAxOC41TDE4IDE0VjE3SDIyVjIwTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDExLjM1QTUuOCA1LjggMCAwIDEgMTEgMThBNiA2IDAgMCAxIDIyIDE0LjY5VjZBMiAyIDAgMCAwIDIwIDRNMjAgOEwxMiAxM0w0IDhWNkwxMiAxMUwyMCA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsUmVjZWl2ZU91dGxpbmUgPSBcIk0yMiAyMEgxOFYyM0wxMyAxOC41TDE4IDE0VjE3SDIyVjIwTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDExVjE4SDRWOEwxMiAxM0wyMCA4VjE1SDIyVjZBMiAyIDAgMCAwIDIwIDRNMTIgMTFMNCA2SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsUmVtb3ZlID0gXCJNMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDdMMjIuNTQgMTYuODhMMjAuNDEgMTlNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuODkgNCA0IDRIMjBDMjEuMSA0IDIyIDQuODkgMjIgNlYxMy44MUMyMS4xMiAxMy4zIDIwLjEgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjAgOFY2TDEyIDExTDQgNlY4TDEyIDEzTDIwIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxSZW1vdmVPdXRsaW5lID0gXCJNMTMuMDkgMThINFY4TDEyIDEzTDIwIDhWMTMuMDlDMjAuNzIgMTMuMjEgMjEuMzkgMTMuNDYgMjIgMTMuODFWNkMyMiA0LjkgMjEuMSA0IDIwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDEzLjA5QzEzLjA0IDE5LjY3IDEzIDE5LjM0IDEzIDE5QzEzIDE4LjY2IDEzLjA0IDE4LjMzIDEzLjA5IDE4TTIwIDZMMTIgMTFMNCA2SDIwTTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsU2VhcmNoID0gXCJNMyw0SDE5QTIsMiAwIDAsMSAyMSw2VjEwLjgyQzIwLDkuODUgMTguNyw5LjIzIDE3LjMxLDkuMDZMMTksOFY2TDExLDExTDMsNlY4TDEwLjYyLDEyLjc2QzEwLjIxLDEzLjYyIDEwLDE0LjU1IDEwLDE1LjVDMTAsMTcuMTggMTAuNjUsMTguNzkgMTEuODEsMjBIM0EyLDIgMCAwLDEgMSwxOFY2QzEsNC44OSAxLjg5LDQgMyw0TTE2LjUsMTFDMTksMTEgMjEsMTMgMjEsMTUuNUMyMSwxNi4zOCAyMC43NSwxNy4yMSAyMC4zMSwxNy45TDIzLjM5LDIxTDIyLDIyLjM5TDE4Ljg4LDE5LjMyQzE4LjE5LDE5Ljc1IDE3LjM3LDIwIDE2LjUsMjBDMTQsMjAgMTIsMTggMTIsMTUuNUMxMiwxMyAxNCwxMSAxNi41LDExTTE2LjUsMTNBMi41LDIuNSAwIDAsMCAxNCwxNS41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOEEyLjUsMi41IDAgMCwwIDE5LDE1LjVBMi41LDIuNSAwIDAsMCAxNi41LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsU2VhcmNoT3V0bGluZSA9IFwiTTE2LjUgMTFDMTkgMTEgMjEgMTMgMjEgMTUuNUMyMSAxNi4zOCAyMC43NSAxNy4yMSAyMC4zMSAxNy45TDIzLjM5IDIxTDIyIDIyLjM5TDE4Ljg4IDE5LjMyQzE4LjE5IDE5Ljc1IDE3LjM3IDIwIDE2LjUgMjBDMTQgMjAgMTIgMTggMTIgMTUuNVMxNCAxMSAxNi41IDExTTE2LjUgMTNDMTUuMTIgMTMgMTQgMTQuMTIgMTQgMTUuNVMxNS4xMiAxOCAxNi41IDE4IDE5IDE2Ljg4IDE5IDE1LjUgMTcuODggMTMgMTYuNSAxM00xMC41IDE4SDNWOEwxMC42MiAxMi43NkMxMS42NSAxMC41NCAxMy45IDkgMTYuNSA5QzE2Ljc3IDkgMTcuMDQgOSAxNy4zMSA5LjA2TDE5IDhWOS41QzE5Ljc1IDkuODEgMjAuNDIgMTAuMjcgMjEgMTAuODJWNkMyMSA0LjkgMjAuMSA0IDE5IDRIM0MxLjkgNCAxIDQuOSAxIDZWMThDMSAxOS4xIDEuOSAyMCAzIDIwSDExLjgyQzExLjI3IDE5LjQyIDEwLjgyIDE4Ljc1IDEwLjUgMThNMTkgNkwxMSAxMUwzIDZIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxTZW5kID0gXCJNMTMgMTdIMTdWMTRMMjIgMTguNUwxNyAyM1YyMEgxM1YxN00yMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgxMS4zNUE1LjggNS44IDAgMCAxIDExIDE4QTYgNiAwIDAgMSAyMiAxNC42OVY2QTIgMiAwIDAgMCAyMCA0TTIwIDhMMTIgMTNMNCA4VjZMMTIgMTFMMjAgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbFNlbmRPdXRsaW5lID0gXCJNMTMgMTdIMTdWMTRMMjIgMTguNUwxNyAyM1YyMEgxM1YxN00yMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgxMVYxOEg0VjhMMTIgMTNMMjAgOFYxNEgyMlY2QTIgMiAwIDAgMCAyMCA0TTEyIDExTDQgNkgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbFN5bmMgPSBcIk0zIDRDMS44OSA0IDEgNC44OSAxIDZWMThDMSAxOS4xMSAxLjkgMjAgMyAyMEgxMy41QTYuNSA2LjUgMCAwIDEgMTMgMTcuNUE2LjUgNi41IDAgMCAxIDE5LjUgMTFBNi41IDYuNSAwIDAgMSAyMSAxMS4xOFY2QzIxIDQuODkgMjAuMSA0IDE5IDRIM00zIDZMMTEgMTFMMTkgNlY4TDExIDEzTDMgOFY2TTE5IDEyTDE2Ljc1IDE0LjI1TDE5IDE2LjVWMTVDMjAuMzggMTUgMjEuNSAxNi4xMiAyMS41IDE3LjVDMjEuNSAxNy45IDIxLjQxIDE4LjI4IDIxLjI0IDE4LjYyTDIyLjMzIDE5LjcxQzIyLjc1IDE5LjA4IDIzIDE4LjMyIDIzIDE3LjVDMjMgMTUuMjkgMjEuMjEgMTMuNSAxOSAxMy41VjEyTTE1LjY3IDE1LjI5QzE1LjI1IDE1LjkyIDE1IDE2LjY4IDE1IDE3LjVDMTUgMTkuNzEgMTYuNzkgMjEuNSAxOSAyMS41VjIzTDIxLjI1IDIwLjc1TDE5IDE4LjVWMjBDMTcuNjIgMjAgMTYuNSAxOC44OCAxNi41IDE3LjVDMTYuNSAxNy4xIDE2LjU5IDE2LjcyIDE2Ljc2IDE2LjM4TDE1LjY3IDE1LjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsU3luY091dGxpbmUgPSBcIk0zIDRDMS45IDQgMSA0LjkgMSA2VjE4QzEgMTkuMSAxLjkgMjAgMyAyMEgxMy41QTYuNSA2LjUgMCAwIDEgMTMgMThIM1Y4TDExIDEzTDE5IDhWMTFBNi41IDYuNSAwIDAgMSAxOS41IDExQTYuNSA2LjUgMCAwIDEgMjEgMTEuMThWNkMyMSA0LjkgMjAuMSA0IDE5IDRIM00zIDZIMTlMMTEgMTFMMyA2TTE5IDEyTDE2Ljc1IDE0LjI1TDE5IDE2LjVWMTVDMjAuMzggMTUgMjEuNSAxNi4xMiAyMS41IDE3LjVDMjEuNSAxNy45IDIxLjQxIDE4LjI4IDIxLjI0IDE4LjYyTDIyLjMzIDE5LjcxQzIyLjc1IDE5LjA4IDIzIDE4LjMyIDIzIDE3LjVDMjMgMTUuMjkgMjEuMjEgMTMuNSAxOSAxMy41VjEyTTE1LjY3IDE1LjI5QzE1LjI1IDE1LjkyIDE1IDE2LjY4IDE1IDE3LjVDMTUgMTkuNzEgMTYuNzkgMjEuNSAxOSAyMS41VjIzTDIxLjI1IDIwLjc1TDE5IDE4LjVWMjBDMTcuNjIgMjAgMTYuNSAxOC44OCAxNi41IDE3LjVDMTYuNSAxNy4xIDE2LjU5IDE2LjcyIDE2Ljc2IDE2LjM4TDE1LjY3IDE1LjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsVmFyaWFudCA9IFwiTTEyLDEzTDIsNi43NlY2QzIsNC44OSAyLjg5LDQgNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjYuNzVMMTIsMTNNMjIsMThBMiwyIDAgMCwxIDIwLDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY5LjExTDQsMTAuMzZWMThIMjBWMTAuMzZMMjIsOS4xMVYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWJlciA9IFwiTTIyLDE0LjIyQzIyLDE0LjIyIDE3LjYxLDE3LjM1IDE0LjcyLDE3LjM5QzExLjg0LDE3LjQ0IDEyLjEzLDE1LjU2IDEyLjEzLDE1LjU2QzEyLjEzLDE1LjU2IDIyLjcxLDExLjk0IDE5LjgzLDQuNzlDMTguNTMsMi45NSAxNywyLjM3IDE0Ljg5LDIuNDJDMTIuNzYsMi40NiAxMC4xNywzLjc2IDguNDYsNy42QzcuNjQsOS40NCA3LjQxLDExLjE4IDcuMjQsMTIuNVYxMi41QzcuMjQsMTIuNSA1LjMyLDEyLjg4IDQuMzIsMTIuMDRDMy4zMiwxMS4yIDIuNzcsMTIuMDQgMi43NywxMi4wNEMyLjc3LDEyLjA0IDEuMDMsMTQuMiAyLjc1LDE0Ljg3QzQuNDYsMTUuNTQgNy4xMiwxNS44MiA3LjEyLDE1LjgyVjE1LjgyQzcuMzYsMTcgOC4wOCwxOSAxMC4xNywyMC42QzEzLjMsMjMgMTkuMzIsMjAuNCAxOS4zMiwyMC40TTExLjYzLDEyLjMzQzExLjc2LDcuMzYgMTUsNS4xOCAxNi4xNSw2LjI3QzE3LjI3LDcuMzYgMTYuODYsOS43IDE0LjcyLDExLjE2QzEyLjU5LDEyLjYzIDExLjYzLDEyLjMzIDExLjYzLDEyLjMzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYnkgPSBcIk0xMSwyTDYsN0w3LDhMMiwxM0w3LDE4TDgsMTdMMTMsMjJMMTgsMTdMMTcsMTZMMjIsMTFMMTcsNkwxNiw3TDExLDJNMTAsOC41TDE2LDEyTDEwLDE1LjVWOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uID0gXCJNMTIsMkM2LjQ3LDIgMiw2LjUgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTE1LjUsOEExLjUsMS41IDAgMCwxIDE3LDkuNUExLjUsMS41IDAgMCwxIDE1LjUsMTFBMS41LDEuNSAwIDAsMSAxNCw5LjVBMS41LDEuNSAwIDAsMSAxNS41LDhNOC41LDhBMS41LDEuNSAwIDAsMSAxMCw5LjVBMS41LDEuNSAwIDAsMSA4LjUsMTFBMS41LDEuNSAwIDAsMSA3LDkuNUExLjUsMS41IDAgMCwxIDguNSw4TTEyLDE3LjVDOS42NywxNy41IDcuNjksMTYuMDQgNi44OSwxNEgxNy4xMUMxNi4zLDE2LjA0IDE0LjMzLDE3LjUgMTIsMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkFuZ3J5ID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNyw5LjVWOEwxMCw5LjVDMTAsMTAuMyA5LjMsMTEgOC41LDExQzcuNywxMSA3LDEwLjMgNyw5LjVNMTQuNzcsMTcuMjNDMTQuMzIsMTYuNSAxMy4yNSwxNiAxMiwxNkMxMC43NSwxNiA5LjY4LDE2LjUgOS4yMywxNy4yM0w3LjgxLDE1LjgxQzguNzEsMTQuNzIgMTAuMjUsMTQgMTIsMTRDMTMuNzUsMTQgMTUuMjksMTQuNzIgMTYuMTksMTUuODFMMTQuNzcsMTcuMjNNMTcsOS41QzE3LDEwLjMgMTYuMywxMSAxNS41LDExQzE0LjcsMTEgMTQsMTAuMyAxNCw5LjVMMTcsOFY5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25BbmdyeU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEyLDE0QzEzLjc1LDE0IDE1LjI5LDE0LjcyIDE2LjE5LDE1LjgxTDE0Ljc3LDE3LjIzQzE0LjMyLDE2LjUgMTMuMjUsMTYgMTIsMTZDMTAuNzUsMTYgOS42OCwxNi41IDkuMjMsMTcuMjNMNy44MSwxNS44MUM4LjcxLDE0LjcyIDEwLjI1LDE0IDEyLDE0TTEwLDkuNUMxMCwxMC4zIDkuMywxMSA4LjUsMTFDNy43LDExIDcsMTAuMyA3LDkuNVY4TDEwLDkuNU0xNyw5LjVDMTcsMTAuMyAxNi4zLDExIDE1LjUsMTFDMTQuNywxMSAxNCwxMC4zIDE0LDkuNUwxNyw4VjkuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uQ29uZnVzZWQgPSBcIk0xMiAyQTEwIDEwIDAgMSAwIDIyIDEyQTEwIDEwIDAgMCAwIDEyIDJNOC41IDhBMS41IDEuNSAwIDEgMSA3IDkuNUExLjU0IDEuNTQgMCAwIDEgOC41IDhNMTcgMTZIMTNBNCA0IDAgMCAwIDkuNTMgMThMNy44IDE3QTYgNiAwIDAgMSAxMyAxNEgxN00xNS41IDExQTEuNSAxLjUgMCAxIDEgMTcgOS41QTEuNTQgMS41NCAwIDAgMSAxNS41IDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uQ29uZnVzZWRPdXRsaW5lID0gXCJNMjAgMTJBOCA4IDAgMSAwIDEyIDIwQTggOCAwIDAgMCAyMCAxMk0yMiAxMkExMCAxMCAwIDEgMSAxMiAyQTEwIDEwIDAgMCAxIDIyIDEyTTE1LjUgOEExLjUgMS41IDAgMSAxIDE0IDkuNUExLjU0IDEuNTQgMCAwIDEgMTUuNSA4TTEwIDkuNUExLjUgMS41IDAgMSAxIDguNSA4QTEuNTQgMS41NCAwIDAgMSAxMCA5LjVNMTcgMTVIMTNBNCA0IDAgMCAwIDkuNTMgMTdMNy44IDE2QTYgNiAwIDAgMSAxMyAxM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkNvb2wgPSBcIk0zLjIyLDcuMjJDNC45MSw0LjExIDguMjEsMiAxMiwyQzE1Ljc5LDIgMTkuMDksNC4xMSAyMC43OCw3LjIyTDIwLDhINEwzLjIyLDcuMjJNMjEuNCw4LjZDMjEuNzgsOS42NyAyMiwxMC44MSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQzIsMTAuODEgMi4yMiw5LjY3IDIuNiw4LjZMNCwxMEg1QzUsMTEuMzggNy4xMiwxMi41IDguNSwxMi41QzkuODgsMTIuNSAxMS4yNSwxMS4zOCAxMS4yNSwxMEgxMi43NUMxMi43NSwxMS4zOCAxNC4xMiwxMi41IDE1LjUsMTIuNUMxNi44OCwxMi41IDE5LDExLjM4IDE5LDEwSDIwTDIxLjQsOC42TTE2LjE5LDE1LjQyTDE0Ljc3LDE0QzE0LjMyLDE0LjcyIDEzLjI1LDE1LjIzIDEyLDE1LjIzQzEwLjc1LDE1LjIzIDkuNjgsMTQuNzIgOS4yMywxNEw3LjgxLDE1LjQyQzguNzEsMTYuNSAxMC4yNSwxNy4yMyAxMiwxNy4yM0MxMy43NSwxNy4yMyAxNS4yOSwxNi41IDE2LjE5LDE1LjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uQ29vbE91dGxpbmUgPSBcIk0xOSwxMEMxOSwxMS4zOCAxNi44OCwxMi41IDE1LjUsMTIuNUMxNC4xMiwxMi41IDEyLjc1LDExLjM4IDEyLjc1LDEwSDExLjI1QzExLjI1LDExLjM4IDkuODgsMTIuNSA4LjUsMTIuNUM3LjEyLDEyLjUgNSwxMS4zOCA1LDEwSDQuMjVDNC4wOSwxMC42NCA0LDExLjMxIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCwxMS4zMSAxOS45MSwxMC42NCAxOS43NSwxMEgxOU0xMiw0QzkuMDQsNCA2LjQ1LDUuNjEgNS4wNyw4SDE4LjkzQzE3LjU1LDUuNjEgMTQuOTYsNCAxMiw0TTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0xMiwxNy4yM0MxMC4yNSwxNy4yMyA4LjcxLDE2LjUgNy44MSwxNS40Mkw5LjIzLDE0QzkuNjgsMTQuNzIgMTAuNzUsMTUuMjMgMTIsMTUuMjNDMTMuMjUsMTUuMjMgMTQuMzIsMTQuNzIgMTQuNzcsMTRMMTYuMTksMTUuNDJDMTUuMjksMTYuNSAxMy43NSwxNy4yMyAxMiwxNy4yM1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkNyeSA9IFwiTTUuMTQsMTcuNTdDNS4xNCwxNi41IDYuMzIsMTQuNSA3LjU3LDEyLjgxQzguODIsMTQuNSAxMCwxNi41IDEwLDE3LjU3QTIuNDMsMi40MyAwIDAsMSA3LjU3LDIwQzYuMjMsMjAgNS4xNCwxOC45MSA1LjE0LDE3LjU3TTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQzExLjA4LDIyIDEwLjE4LDIxLjg2IDkuMzMsMjEuNjNDMTAuOSwyMC45NSAxMiwxOS4zOSAxMiwxNy41N0MxMiwxNy4xMiAxMS44OSwxNi42IDExLjY5LDE2QzExLjc5LDE2IDExLjg5LDE2IDEyLDE2QzEzLjI1LDE2IDE0LjMyLDE2LjUgMTQuNzcsMTcuMjNMMTYuMTksMTUuODFDMTUuMjksMTQuNzIgMTMuNzUsMTQgMTIsMTRDMTEuNTksMTQgMTEuMTksMTQuMDQgMTAuODEsMTQuMTJDMTAuMzgsMTMuMzYgOS44NSwxMi41MyA5LjE5LDExLjYzTDguNzEsMTFDOS40MiwxMC44NyAxMCwxMC4yMyAxMCw5LjVDMTAsOC43IDkuMyw4IDguNSw4QzcuNyw4IDcsOC43IDcsOS41QzcsOS42OSA3LjA0LDkuODcgNy4xMSwxMC4wNEw1Ljk2LDExLjYzQzQuNCwxMy43NSAzLjUsMTUuNSAzLjIzLDE2LjgxQzIuNDUsMTUuMzggMiwxMy43NCAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTcsOS41QzE3LDguNyAxNi4zLDggMTUuNSw4QzE0LjcsOCAxNCw4LjcgMTQsOS41QzE0LDEwLjMgMTQuNywxMSAxNS41LDExQzE2LjMsMTEgMTcsMTAuMyAxNyw5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25DcnlPdXRsaW5lID0gXCJNNy41NywyMEM2LjIzLDIwIDUuMTQsMTguOTEgNS4xNCwxNy41N0M1LjE0LDE2LjUgNi4zMiwxNC41IDcuNTcsMTIuODFDOC44MiwxNC41IDEwLDE2LjUgMTAsMTcuNTdBMi40MywyLjQzIDAgMCwxIDcuNTcsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQzIsMTMuNzUgMi40NSwxNS4zOCAzLjI0LDE2LjgxQzMuNCwxNiAzLjgxLDE1LjA3IDQuMzEsMTQuMTdDNC4xMSwxMy41IDQsMTIuNzUgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwQzExLjc2LDIwIDExLjUzLDIwIDExLjI5LDE5Ljk2QzEwLjgyLDIwLjcgMTAuMTQsMjEuMjggOS4zNCwyMS42M0MxMC4xOSwyMS44NyAxMS4wOCwyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDE0QzExLjU5LDE0IDExLjE5LDE0LjA0IDEwLjgxLDE0LjEyQzExLjE2LDE0Ljc1IDExLjQ3LDE1LjQgMTEuNjksMTZDMTEuNzksMTYgMTEuODksMTYgMTIsMTZDMTMuMjUsMTYgMTQuMzIsMTYuNSAxNC43NywxNy4yM0wxNi4xOSwxNS44MUMxNS4yOSwxNC43MiAxMy43NSwxNCAxMiwxNE0xNS41LDhDMTQuNyw4IDE0LDguNyAxNCw5LjVDMTQsMTAuMyAxNC43LDExIDE1LjUsMTFDMTYuMywxMSAxNywxMC4zIDE3LDkuNUMxNyw4LjcgMTYuMyw4IDE1LjUsOE0xMCw5LjVDMTAsOC43IDkuMyw4IDguNSw4QzcuNyw4IDcsOC43IDcsOS41QzcsMTAuMyA3LjcsMTEgOC41LDExQzkuMywxMSAxMCwxMC4zIDEwLDkuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uRGVhZCA9IFwiTTEyLDJDNi40NywyIDIsNi40NyAyLDEyQzIsMTcuNTMgNi40NywyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw2LjQ3IDE3LjUsMiAxMiwyTTYuNzYsOC44Mkw3LjgyLDcuNzZMOC44OCw4LjgyTDkuOTQsNy43NkwxMSw4LjgyTDkuOTQsOS44OEwxMSwxMC45NEw5Ljk0LDEyTDguODgsMTAuOTRMNy44MiwxMkw2Ljc2LDEwLjk0TDcuODIsOS44OEw2Ljc2LDguODJNNi44OSwxNy41QzcuNjksMTUuNDYgOS42NywxNCAxMiwxNEMxNC4zMywxNCAxNi4zMSwxNS40NiAxNy4xMSwxNy41SDYuODlNMTcuMjQsMTAuOTRMMTYuMTgsMTJMMTUuMTIsMTAuOTRMMTQuMDYsMTJMMTMsMTAuOTRMMTQuMDYsOS44OEwxMyw4LjgyTDE0LjA2LDcuNzZMMTUuMTIsOC44MkwxNi4xOCw3Ljc2TDE3LjI0LDguODJMMTYuMTgsOS44OEwxNy4yNCwxMC45NFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkRlYWRPdXRsaW5lID0gXCJNMTIsMkM2LjQ3LDIgMiw2LjQ3IDIsMTJDMiwxNy41MyA2LjQ3LDIyIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xNi4xOCw3Ljc2TDE1LjEyLDguODJMMTQuMDYsNy43NkwxMyw4LjgyTDE0LjA2LDkuODhMMTMsMTAuOTRMMTQuMDYsMTJMMTUuMTIsMTAuOTRMMTYuMTgsMTJMMTcuMjQsMTAuOTRMMTYuMTgsOS44OEwxNy4yNCw4LjgyTDE2LjE4LDcuNzZNNy44MiwxMkw4Ljg4LDEwLjk0TDkuOTQsMTJMMTEsMTAuOTRMOS45NCw5Ljg4TDExLDguODJMOS45NCw3Ljc2TDguODgsOC44Mkw3LjgyLDcuNzZMNi43Niw4LjgyTDcuODIsOS44OEw2Ljc2LDEwLjk0TDcuODIsMTJNMTIsMTRDOS42NywxNCA3LjY5LDE1LjQ2IDYuODksMTcuNUgxNy4xMUMxNi4zMSwxNS40NiAxNC4zMywxNCAxMiwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkRldmlsID0gXCJNMjIuNSwyLjA5QzIxLjYsMyAyMC4xMywzLjczIDE4LjMxLDQuMjVDMTYuNTksMi44NCAxNC4zOSwyIDEyLDJDOS42MSwyIDcuNDEsMi44NCA1LjY5LDQuMjVDMy44NywzLjczIDIuNCwzIDEuNSwyLjA5QzEuNTMsMy43MiAyLjM1LDUuMjEgMy43Miw2LjRDMi42Myw4IDIsOS45MiAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDkuOTIgMjEuMzcsOCAyMC4yOCw2LjRDMjEuNjUsNS4yMSAyMi40NywzLjcyIDIyLjUsMi4wOU03LjUsOC41TDEwLjUsMTBDMTAuNSwxMC44IDkuOCwxMS41IDksMTEuNUM4LjIsMTEuNSA3LjUsMTAuOCA3LjUsMTBWOC41TTEyLDE3LjIzQzEwLjI1LDE3LjIzIDguNzEsMTYuNSA3LjgxLDE1LjQyTDkuMjMsMTRDOS42OCwxNC43MiAxMC43NSwxNS4yMyAxMiwxNS4yM0MxMy4yNSwxNS4yMyAxNC4zMiwxNC43MiAxNC43NywxNEwxNi4xOSwxNS40MkMxNS4yOSwxNi41IDEzLjc1LDE3LjIzIDEyLDE3LjIzTTE2LjUsMTBDMTYuNSwxMC44IDE1LjgsMTEuNSAxNSwxMS41QzE0LjIsMTEuNSAxMy41LDEwLjggMTMuNSwxMEwxNi41LDguNVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkRldmlsT3V0bGluZSA9IFwiTTEuNSwyLjA5QzIuNCwzIDMuODcsMy43MyA1LjY5LDQuMjVDNy40MSwyLjg0IDkuNjEsMiAxMiwyQzE0LjM5LDIgMTYuNTksMi44NCAxOC4zMSw0LjI1QzIwLjEzLDMuNzMgMjEuNiwzIDIyLjUsMi4wOUMyMi40NywzLjcyIDIxLjY1LDUuMjEgMjAuMjgsNi40QzIxLjM3LDggMjIsOS45MiAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQzIsOS45MiAyLjYzLDggMy43Miw2LjRDMi4zNSw1LjIxIDEuNTMsMy43MiAxLjUsMi4wOU0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyTTEwLjUsMTBDMTAuNSwxMC44IDkuOCwxMS41IDksMTEuNUM4LjIsMTEuNSA3LjUsMTAuOCA3LjUsMTBWOC41TDEwLjUsMTBNMTYuNSwxMEMxNi41LDEwLjggMTUuOCwxMS41IDE1LDExLjVDMTQuMiwxMS41IDEzLjUsMTAuOCAxMy41LDEwTDE2LjUsOC41VjEwTTEyLDE3LjIzQzEwLjI1LDE3LjIzIDguNzEsMTYuNSA3LjgxLDE1LjQyTDkuMjMsMTRDOS42OCwxNC43MiAxMC43NSwxNS4yMyAxMiwxNS4yM0MxMy4yNSwxNS4yMyAxNC4zMiwxNC43MiAxNC43NywxNEwxNi4xOSwxNS40MkMxNS4yOSwxNi41IDEzLjc1LDE3LjIzIDEyLDE3LjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uRXhjaXRlZCA9IFwiTTEyLDJDNi40NywyIDIsNi40NyAyLDEyQzIsMTcuNTMgNi40NywyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw2LjQ3IDE3LjUsMiAxMiwyTTguODgsNy44MkwxMSw5Ljk0TDkuOTQsMTFMOC44OCw5Ljk0TDcuODIsMTFMNi43Niw5Ljk0TDguODgsNy44Mk0xMiwxNy41QzkuNjcsMTcuNSA3LjY5LDE2LjA0IDYuODksMTRIMTcuMTFDMTYuMzEsMTYuMDQgMTQuMzMsMTcuNSAxMiwxNy41TTE2LjE4LDExTDE1LjEyLDkuOTRMMTQuMDYsMTFMMTMsOS45NEwxNS4xMiw3LjgyTDE3LjI0LDkuOTRMMTYuMTgsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25FeGNpdGVkT3V0bGluZSA9IFwiTTEyLDJDNi40NywyIDIsNi40NyAyLDEyQzIsMTcuNTMgNi40NywyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw2LjQ3IDE3LjUsMiAxMiwyTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNMTMsOS45NEwxNC4wNiwxMUwxNS4xMiw5Ljk0TDE2LjE4LDExTDE3LjI0LDkuOTRMMTUuMTIsNy44MkwxMyw5Ljk0TTguODgsOS45NEw5Ljk0LDExTDExLDkuOTRMOC44OCw3LjgyTDYuNzYsOS45NEw3LjgyLDExTDguODgsOS45NE0xMiwxNy41QzE0LjMzLDE3LjUgMTYuMzEsMTYuMDQgMTcuMTEsMTRINi44OUM3LjY5LDE2LjA0IDkuNjcsMTcuNSAxMiwxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uRnJvd24gPSBcIk0xMiAyQzYuNDcgMiAyIDYuNSAyIDEyUzYuNDcgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTE1LjUgOEMxNi4zMyA4IDE3IDguNjcgMTcgOS41UzE2LjMzIDExIDE1LjUgMTEgMTQgMTAuMzMgMTQgOS41IDE0LjY3IDggMTUuNSA4TTguNSA4QzkuMzMgOCAxMCA4LjY3IDEwIDkuNVM5LjMzIDExIDguNSAxMSA3IDEwLjMzIDcgOS41IDcuNjcgOCA4LjUgOE02Ljg5IDE3QzcuNjkgMTQuOTYgOS42NyAxMy41IDEyIDEzLjVTMTYuMzEgMTQuOTYgMTcuMTEgMTdINi44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkZyb3duT3V0bGluZSA9IFwiTTEyIDJDNi40NyAyIDIgNi41IDIgMTJTNi40NyAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJTMTcuNSAyIDEyIDJNMTIgMjBDNy41OCAyMCA0IDE2LjQyIDQgMTJTNy41OCA0IDEyIDQgMjAgNy41OCAyMCAxMiAxNi40MiAyMCAxMiAyME0xNS41IDExQzE2LjMzIDExIDE3IDEwLjMzIDE3IDkuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNSAxNC42NyAxMSAxNS41IDExTTguNSAxMUM5LjMzIDExIDEwIDEwLjMzIDEwIDkuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExTTEyIDEzLjVDOS42NyAxMy41IDcuNjkgMTQuOTYgNi44OSAxN0gxNy4xMUMxNi4zMSAxNC45NiAxNC4zMyAxMy41IDEyIDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25IYXBweSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTcsOS41QzcsOC43IDcuNyw4IDguNSw4QzkuMyw4IDEwLDguNyAxMCw5LjVDMTAsMTAuMyA5LjMsMTEgOC41LDExQzcuNywxMSA3LDEwLjMgNyw5LjVNMTIsMTcuMjNDMTAuMjUsMTcuMjMgOC43MSwxNi41IDcuODEsMTUuNDJMOS4yMywxNEM5LjY4LDE0LjcyIDEwLjc1LDE1LjIzIDEyLDE1LjIzQzEzLjI1LDE1LjIzIDE0LjMyLDE0LjcyIDE0Ljc3LDE0TDE2LjE5LDE1LjQyQzE1LjI5LDE2LjUgMTMuNzUsMTcuMjMgMTIsMTcuMjNNMTUuNSwxMUMxNC43LDExIDE0LDEwLjMgMTQsOS41QzE0LDguNyAxNC43LDggMTUuNSw4QzE2LjMsOCAxNyw4LjcgMTcsOS41QzE3LDEwLjMgMTYuMywxMSAxNS41LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uSGFwcHlPdXRsaW5lID0gXCJNMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTAsOS41QzEwLDEwLjMgOS4zLDExIDguNSwxMUM3LjcsMTEgNywxMC4zIDcsOS41QzcsOC43IDcuNyw4IDguNSw4QzkuMyw4IDEwLDguNyAxMCw5LjVNMTcsOS41QzE3LDEwLjMgMTYuMywxMSAxNS41LDExQzE0LjcsMTEgMTQsMTAuMyAxNCw5LjVDMTQsOC43IDE0LjcsOCAxNS41LDhDMTYuMyw4IDE3LDguNyAxNyw5LjVNMTIsMTcuMjNDMTAuMjUsMTcuMjMgOC43MSwxNi41IDcuODEsMTUuNDJMOS4yMywxNEM5LjY4LDE0LjcyIDEwLjc1LDE1LjIzIDEyLDE1LjIzQzEzLjI1LDE1LjIzIDE0LjMyLDE0LjcyIDE0Ljc3LDE0TDE2LjE5LDE1LjQyQzE1LjI5LDE2LjUgMTMuNzUsMTcuMjMgMTIsMTcuMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25LaXNzID0gXCJNMTguOSwxOC45NEwxNS45NCwxNkMxNS43NiwxNS43OSAxNS41NSwxNS41IDE1LjU1LDE1LjA1QTEuMywxLjMgMCAwLDEgMTYuODUsMTMuNzVDMTcuMTksMTMuNzUgMTcuNTMsMTMuODkgMTcuNzcsMTQuMTVMMTguOTEsMTUuMjZMMjAuMDMsMTQuMTNDMjAuMjcsMTMuODkgMjAuNjEsMTMuNzUgMjAuOTUsMTMuNzVBMS4zLDEuMyAwIDAsMSAyMi4yNSwxNS4wNUMyMi4yNSwxNS4zOSAyMi4xMSwxNS43MyAyMS44NywxNS45N0wxOC45LDE4Ljk0TTE3LjQ2LDE5LjYyQzE1LjcyLDIxLjEgMTMuNDcsMjIgMTEsMjJBMTAsMTAgMCAwLDEgMSwxMkExMCwxMCAwIDAsMSAxMSwyQTEwLDEwIDAgMCwxIDIxLDEyQzIxLDEyLjA5IDIxLDEyLjE3IDIwLjk1LDEyLjI1QzIwLjIxLDEyLjI1IDE5LjUsMTIuNTUgMTguOTcsMTMuMDdMMTguOSwxMy4xNEwxOC44NCwxMy4wOUMxOC4zMiwxMi41NSAxNy42LDEyLjI1IDE2Ljg1LDEyLjI1QTIuOCwyLjggMCAwLDAgMTQuMDUsMTUuMDVDMTQuMDUsMTUuNzggMTQuMzQsMTYuNSAxNC44NywxNy4wM0wxNy40NiwxOS42Mk0xMyw5LjVDMTMsMTAuMyAxMy43LDExIDE0LjUsMTFDMTUuMywxMSAxNiwxMC4zIDE2LDkuNUMxNiw4LjcgMTUuMyw4IDE0LjUsOEMxMy43LDggMTMsOC43IDEzLDkuNU05LDkuNUM5LDguNyA4LjMsOCA3LjUsOEM2LjcsOCA2LDguNyA2LDkuNUM2LDEwLjMgNi43LDExIDcuNSwxMUM4LjMsMTEgOSwxMC4zIDksOS41TTEyLjk0LDE1LjE4TDE0LDE0LjEyTDExLjg4LDEyTDEwLjgyLDEzLjA2TDExLjg4LDE0LjEyTDEwLjgyLDE1LjE4TDExLjg4LDE2LjI0TDEwLjgyLDE3LjNMMTEuODgsMTguMzZMMTQsMTYuMjRMMTIuOTQsMTUuMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25LaXNzT3V0bGluZSA9IFwiTTksOS41QzksMTAuMyA4LjMsMTEgNy41LDExQzYuNywxMSA2LDEwLjMgNiw5LjVDNiw4LjcgNi43LDggNy41LDhDOC4zLDggOSw4LjcgOSw5LjVNMTYsOS41QzE2LDEwLjMgMTUuMywxMSAxNC41LDExQzEzLjcsMTEgMTMsMTAuMyAxMyw5LjVDMTMsOC43IDEzLjcsOCAxNC41LDhDMTUuMyw4IDE2LDguNyAxNiw5LjVNMTQsMTQuMTJMMTEuODgsMTJMMTAuODIsMTMuMDZMMTEuODgsMTQuMTJMMTAuODIsMTUuMThMMTEuODgsMTYuMjRMMTAuODIsMTcuM0wxMS44OCwxOC4zNkwxNCwxNi4yNEwxMi45NCwxNS4xOEwxNCwxNC4xMk0xNi44NSwxM0EyLjA1LDIuMDUgMCAwLDAgMTQuOCwxNS4wNUMxNC44LDE1LjYyIDE1LjAzLDE2LjEyIDE1LjQsMTYuNUwxOC45LDIwTDIyLjQsMTYuNUMyMi43NywxNi4xMyAyMywxNS42MSAyMywxNS4wNUEyLjA1LDIuMDUgMCAwLDAgMjAuOTUsMTNDMjAuNCwxMyAxOS44NywxMy4yMyAxOS41LDEzLjZMMTguOSwxNC4yTDE4LjMsMTMuNjFDMTcuOTMsMTMuMjMgMTcuNCwxMyAxNi44NSwxM00xNSwxOC45MkMxMy44MiwxOS42IDEyLjQ2LDIwIDExLDIwQTgsOCAwIDAsMSAzLDEyQTgsOCAwIDAsMSAxMSw0QzE1LjI2LDQgMTguNzMsNy4zMyAxOSwxMS41QzE5LjU4LDExLjE5IDIwLjI2LDExIDIwLjk1LDExQzIwLjQ1LDUuOTUgMTYuMTgsMiAxMSwyQTEwLDEwIDAgMCwwIDEsMTJBMTAsMTAgMCAwLDAgMTEsMjJDMTMsMjIgMTQuODgsMjEuNCAxNi40NSwyMC4zOEwxNSwxOC45MlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkxvbCA9IFwiTTE1LjA3IDguOTNWNC45M0E0LjA2IDQuMDYgMCAwIDEgMTUuNzMgMi43MkExMCAxMCAwIDAgMCAyLjczIDE1LjcyQTQuMDYgNC4wNiAwIDAgMSA0Ljk0IDE1LjA2SDguOTRWMTkuMDZBNC4wNiA0LjA2IDAgMCAxIDguMjggMjEuMjdBMTAgMTAgMCAwIDAgMjEuMjggOC4yN0E0LjA2IDQuMDYgMCAwIDEgMTkuMDcgOC45M00xMSA2SDEyLjVWNy41SDE0VjlIMTFNNy41IDE0VjEyLjVINlYxMUg5VjE0TTE1Ljg5IDE1LjlBNS41IDUuNSAwIDAgMSA5LjggMTdMMTcgOS44QTUuNSA1LjUgMCAwIDEgMTUuODkgMTUuODlNNC44OSAyMS4wOEEyIDIgMCAwIDEgMi44OSAxOS4wOEEyIDIgMCAwIDEgNC44OSAxNy4wOEg2Ljg5VjE5LjA4QTIgMiAwIDAgMSA0LjkzIDIxLjA3TTE5LjA3IDIuOTNBMiAyIDAgMCAxIDIxLjA3IDQuOTNBMiAyIDAgMCAxIDE5LjA3IDYuOTNIMTcuMDdWNC45M0EyIDIgMCAwIDEgMTkuMDcgMi45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkxvbE91dGxpbmUgPSBcIk02IDExVjEyLjVINy41VjE0SDlWMTFNMTIuNSA2SDExVjlIMTRWNy41SDEyLjVNOS44IDE3QTUuNSA1LjUgMCAwIDAgMTcgOS44TTYuMzQgNi4zNEE4IDggMCAwIDEgMTUuMDggNC42MkE0LjExIDQuMTEgMCAwIDEgMTUuNzMgMi43MkExMCAxMCAwIDAgMCAyLjczIDE1LjcyQTQuMTEgNC4xMSAwIDAgMSA0LjYzIDE1LjA3QTggOCAwIDAgMSA2LjM0IDYuMzRNMTcuNjYgMTcuNjZBOCA4IDAgMCAxIDguOTIgMTkuMzhBNC4xMSA0LjExIDAgMCAxIDguMjcgMjEuMjhBMTAgMTAgMCAwIDAgMjEuMjcgOC4yOEE0LjExIDQuMTEgMCAwIDEgMTkuMzcgOC45M0E4IDggMCAwIDEgMTcuNjYgMTcuNjZNNiAxMVYxMi41SDcuNVYxNEg5VjExTTkuOCAxN0E1LjUgNS41IDAgMCAwIDE3IDkuOE0xMi41IDZIMTFWOUgxNFY3LjVIMTIuNU02IDExVjEyLjVINy41VjE0SDlWMTFNMTIuNSA2SDExVjlIMTRWNy41SDEyLjVNOS44IDE3QTUuNSA1LjUgMCAwIDAgMTcgOS44TTQuOTMgMjFBMiAyIDAgMCAxIDIuOTMgMTlBMiAyIDAgMCAxIDQuOTMgMTdINi45M1YxOUEyIDIgMCAwIDEgNC45MyAyMS4wN00xOS4wNyAyLjkzQTIgMiAwIDAgMSAyMS4wNyA0LjkzQTIgMiAwIDAgMSAxOS4wNyA2LjkzSDE3LjA3VjQuOTNBMiAyIDAgMCAxIDE5LjA3IDIuOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25OZXV0cmFsID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNyw5LjVBMS41LDEuNSAwIDAsMSA4LjUsOEExLjUsMS41IDAgMCwxIDEwLDkuNUExLjUsMS41IDAgMCwxIDguNSwxMUExLjUsMS41IDAgMCwxIDcsOS41TTE2LDE2SDhWMTRIMTZWMTZNMTUuNSwxMUExLjUsMS41IDAgMCwxIDE0LDkuNUExLjUsMS41IDAgMCwxIDE1LjUsOEExLjUsMS41IDAgMCwxIDE3LDkuNUExLjUsMS41IDAgMCwxIDE1LjUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25OZXV0cmFsT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNOC41LDExQTEuNSwxLjUgMCAwLDEgNyw5LjVBMS41LDEuNSAwIDAsMSA4LjUsOEExLjUsMS41IDAgMCwxIDEwLDkuNUExLjUsMS41IDAgMCwxIDguNSwxMU0xNyw5LjVBMS41LDEuNSAwIDAsMSAxNS41LDExQTEuNSwxLjUgMCAwLDEgMTQsOS41QTEuNSwxLjUgMCAwLDEgMTUuNSw4QTEuNSwxLjUgMCAwLDEgMTcsOS41TTE2LDE0VjE2SDhWMTRIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25PdXRsaW5lID0gXCJNMTIsMTcuNUMxNC4zMywxNy41IDE2LjMsMTYuMDQgMTcuMTEsMTRINi44OUM3LjY5LDE2LjA0IDkuNjcsMTcuNSAxMiwxNy41TTguNSwxMUExLjUsMS41IDAgMCwwIDEwLDkuNUExLjUsMS41IDAgMCwwIDguNSw4QTEuNSwxLjUgMCAwLDAgNyw5LjVBMS41LDEuNSAwIDAsMCA4LjUsMTFNMTUuNSwxMUExLjUsMS41IDAgMCwwIDE3LDkuNUExLjUsMS41IDAgMCwwIDE1LjUsOEExLjUsMS41IDAgMCwwIDE0LDkuNUExLjUsMS41IDAgMCwwIDE1LjUsMTFNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xMiwyQzYuNDcsMiAyLDYuNSAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25Qb29wID0gXCJNMTEuMzYsMkMxMS4xNSwyIDEwLjg3LDIuMTIgMTAuNTcsMi4zMkMxMCwyLjcgOC44NSwzLjkgOC40LDUuMUM4LjA2LDYgOC4wNSw2LjgyIDguMTksNy40M0M3LjYzLDcuNTMgNy4yMiw3LjcxIDcuMDYsNy43OEM2LjU1LDggNS40Nyw4Ljk2IDUuMzcsMTAuNDVDNS4zNCwxMC45NyA1LjQxLDExLjUgNS41NywxMkM0LjkxLDEyLjE5IDQuNTMsMTIuNDMgNC41LDEyLjQ0QzQuMTgsMTIuNTYgMy42NSwxMi45MyAzLjUsMTMuMTNDMy4xNSwxMy41MyAyLjkyLDE0IDIuNzksMTQuNUMyLjUsMTUuNTkgMi42LDE2LjgzIDMuMTMsMTcuODNDMy40MiwxOC4zOSAzLjgyLDE5IDQuMjYsMTkuNDNDNS43LDIwLjkxIDguMTgsMjEuNDcgMTAuMTQsMjEuNzlDMTIuNTMsMjIuMTkgMTUuMDMsMjIuMDUgMTcuMjYsMjEuMTNDMjAuNjEsMTkuNzQgMjEuNSwxNy41IDIxLjY0LDE2Ljg5QzIxLjkzLDE1LjUgMjEuNTcsMTQuMTkgMjEuNDIsMTMuODdDMjEuMiwxMy40MSAyMC44NCwxMi45NCAyMC4yNSwxMi42NEMxOS44NSwxMi4zOSAxOS41LDEyLjI2IDE5LjI0LDEyLjJDMTkuNSwxMS4yNSAxOS4xMywxMC41IDE4LjYyLDkuOTRDMTcuODUsOS4xMiAxNy4wNiw5IDE3LjA2LDlWOUMxNy4zMiw4LjUgMTcuNDIsNy45IDE3LjI4LDcuMzJDMTcuMTIsNi42MSAxNi43Myw2LjE2IDE2LjIyLDUuODZDMTUuNyw1LjU1IDE1LjA2LDUuNCAxNC40LDUuMjhDMTQuMDgsNS4yMiAxMi43NSw1LjAzIDEyLjIsNC4yN0MxMS43NSwzLjY1IDExLjc0LDIuNTMgMTEuNjIsMi4yQzExLjU3LDIuMDcgMTEuNSwyIDExLjM2LDJNMTYsOS42MUMxNi4wNyw5LjYxIDE2LjEzLDkuNjIgMTYuMTksOS42MkMxNy42Miw5Ljc4IDE4LjY0LDExLjE2IDE4LjQ3LDEyLjY5QzE4LjMsMTQuMjIgMTcsMTUuMzQgMTUuNTcsMTUuMThWMTUuMThDMTQuMTQsMTUgMTMuMTIsMTMuNjUgMTMuMjksMTIuMTFDMTMuNDUsMTAuNjYgMTQuNjQsOS41NiAxNiw5LjYxTTguNjIsOS42MUM5Ljk1LDkuNjUgMTEuMDYsMTAuNzggMTEuMTYsMTIuMjFDMTEuMjgsMTMuNzUgMTAuMjEsMTUuMDggOC43OCwxNS4xOUg4Ljc3QzcuMzQsMTUuMyA2LjA4LDE0LjE0IDUuOTYsMTIuNlYxMi42QzUuODUsMTEuMDYgNi45Miw5LjczIDguMzUsOS42MlY5LjYyQzguNDQsOS42MSA4LjUzLDkuNjEgOC42Miw5LjYxTTguNjQsMTEuMzFDOC42LDExLjMxIDguNTcsMTEuMzEgOC41MywxMS4zMkM3Ljk3LDExLjM5IDcuNTcsMTEuOSA3LjY0LDEyLjQ1QzcuNywxMyA4LjIxLDEzLjM5IDguNzcsMTMuMzJDOS4zMywxMy4yNSA5LjczLDEyLjc0IDkuNjcsMTIuMTlDOS42MSwxMS42NyA5LjE1LDExLjMgOC42NCwxMS4zMU0xNS45NCwxMS4zM0MxNS40MiwxMS4zNSAxNSwxMS43NSAxNC45NiwxMi4yOEMxNC45MiwxMi44MyAxNS4zNSwxMy4zMSAxNS45MSwxMy4zNEMxNi41LDEzLjM4IDE2Ljk2LDEyLjk1IDE3LDEyLjRDMTcuMDQsMTEuODQgMTYuNjEsMTEuMzYgMTYuMDUsMTEuMzNDMTYsMTEuMzMgMTYsMTEuMzMgMTUuOTQsMTEuMzNNOC43MSwxNi4xNUM5LDE2LjE0IDkuMjYsMTYuMjMgOS41LDE2LjI4QzEwLjY4LDE2LjUgMTEuNywxNi41MyAxMi4xOSwxNi41M0MxMi42OCwxNi41MyAxMy42OSwxNi41IDE0Ljg2LDE2LjI4QzE1LjI3LDE2LjIgMTUuNzQsMTYuMDMgMTYuMTEsMTYuMjhDMTYuNTksMTYuNiAxNi4yNCwxNy43NSAxNS41LDE4LjUzQzE1LjA0LDE5IDEzLjk3LDE5LjkxIDEyLjE5LDE5LjkxQzEwLjQxLDE5LjkxIDkuMzMsMTkgOC44OCwxOC41M0M4LjE0LDE3Ljc1IDcuNzksMTYuNiA4LjI2LDE2LjI4QzguNCwxNi4xOSA4LjU1LDE2LjE1IDguNzEsMTYuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25Qb29wT3V0bGluZSA9IFwiTTIxLjQyLDEzLjg3QzIxLjIsMTMuNDEgMjAuODQsMTIuOTQgMjAuMjUsMTIuNjRDMTkuODUsMTIuMzkgMTkuNSwxMi4yNiAxOS4yNCwxMi4yQzE5LjUsMTEuMjUgMTkuMTMsMTAuNSAxOC42Miw5Ljk0QzE3Ljg1LDkuMTIgMTcuMDYsOSAxNy4wNiw5QzE3LjMyLDguNSAxNy40Miw3LjkgMTcuMjgsNy4zMkMxNy4xMiw2LjYxIDE2LjczLDYuMTYgMTYuMjIsNS44NkMxNS43LDUuNTUgMTUuMDYsNS40IDE0LjQsNS4yOEMxNC4wOCw1LjIyIDEyLjc1LDUuMDMgMTIuMiw0LjI3QzExLjc1LDMuNjUgMTEuNzQsMi41MyAxMS42MiwyLjJDMTEuNTcsMi4wNyAxMS41LDIgMTEuMzYsMkMxMS4xNSwyIDEwLjg3LDIuMTIgMTAuNTcsMi4zMkMxMCwyLjcgOC44NSwzLjkgOC40LDUuMUM4LjA2LDYgOC4wNSw2LjgyIDguMTksNy40M0M3LjYzLDcuNTMgNy4yMiw3LjcxIDcuMDYsNy43OEM2LjU1LDggNS40Nyw4Ljk2IDUuMzcsMTAuNDVDNS4zNCwxMC44OSA1LjQxLDExLjM0IDUuNSwxMS43OEM1LjUsMTEuODYgNS41LDExLjk0IDUuNSwxMi4wM0M0Ljg4LDEyLjIyIDQuNTMsMTIuNDMgNC41LDEyLjQ0QzQuMTgsMTIuNTYgMy42NSwxMi45MyAzLjUsMTMuMTNDMy4xNSwxMy41MyAyLjkyLDE0IDIuNzksMTQuNUMyLjUsMTUuNTkgMi42LDE2LjgzIDMuMTMsMTcuODNDMy40MiwxOC4zOSAzLjgyLDE5IDQuMjYsMTkuNDNDNS43LDIwLjkxIDguMTgsMjEuNDcgMTAuMTQsMjEuNzlDMTAuOTYsMjEuOTMgMTEuOCwyMiAxMi42MywyMkMxNC4yMiwyMiAxNS44LDIxLjczIDE3LjI2LDIxLjEzQzIwLjYxLDE5Ljc0IDIxLjUsMTcuNSAyMS42NCwxNi44OUMyMS45MywxNS41IDIxLjU3LDE0LjE5IDIxLjQyLDEzLjg3TTE2LjA1LDExLjMzQzE2LjYxLDExLjM2IDE3LjA0LDExLjg0IDE3LDEyLjRDMTYuOTYsMTIuOTUgMTYuNSwxMy4zOCAxNS45MSwxMy4zNEMxNS4zNSwxMy4zMSAxNC45MiwxMi44MyAxNC45NiwxMi4yOEMxNSwxMS43NSAxNS40MiwxMS4zNSAxNS45NCwxMS4zM0MxNiwxMS4zMyAxNiwxMS4zMyAxNi4wNSwxMS4zM00yMC4xOCwxNi41NUMyMC4xNywxNi41NyAxOS43LDE4LjUgMTYuNjksMTkuNzRDMTUuNDcsMjAuMjUgMTQuMSwyMC41IDEyLjYzLDIwLjVDMTEuOSwyMC41IDExLjE0LDIwLjQ0IDEwLjM4LDIwLjMxQzguNzYsMjAuMDUgNi41LDE5LjU2IDUuMzEsMTguMzZDNS4wNCwxOC4wOSA0LjcyLDE3LjYzIDQuNDYsMTcuMTNDNC4xMiwxNi41IDQuMDQsMTUuNjUgNC4yNCwxNC44OEM0LjMyLDE0LjU4IDQuNDUsMTQuMzIgNC42MywxNC4xMkw0LjY1LDE0LjA5QzQuNzQsMTQgNC45NSwxMy44OCA1LjAzLDEzLjg0VjEzLjg0TDUuMTQsMTMuOEw1LjI2LDEzLjc0QzUuMzIsMTMuNyA1LjQ2LDEzLjYzIDUuNjcsMTMuNTVDNi4xMywxNC44MSA3LjI4LDE1LjcgOC41OSwxNS43QzguNjcsMTUuNyA4Ljc0LDE1LjY5IDguODIsMTUuNjlDOS42NSwxNS42MyAxMC40MSwxNS4yMiAxMC45NCwxNC41NUMxMS40NywxMy44OSAxMS43MywxMy4wNCAxMS42NiwxMi4xN0MxMS41NCwxMC41IDEwLjIyLDkuMTYgOC42NCw5LjExSDguNjJDOC41LDkuMTEgOC40LDkuMTEgOC4zMSw5LjEyQzgsOS4xNSA3LjczLDkuMjMgNy40Niw5LjM0QzcuNTUsOS4yNCA3LjYzLDkuMTcgNy42Niw5LjE1QzcuNzksOS4xIDguMDcsOSA4LjQ1LDguOTFMMTAsOC42M0w5LjY1LDcuMDlDOS42MSw2LjkgOS41Myw2LjM1IDkuODEsNS42M0M5Ljk2LDUuMiAxMC4yNyw0Ljc2IDEwLjU4LDQuMzhDMTAuNjgsNC42NSAxMC44MSw0LjkxIDExLDUuMTVDMTEuNzcsNi4yMyAxMy4xMiw2LjU4IDE0LjA2LDYuNzRMMTQuMTMsNi43NkMxNC42LDYuODQgMTUuMTMsNi45NSAxNS40Niw3LjE1QzE1LjY3LDcuMjggMTUuNzYsNy40MSAxNS44Miw3LjY3QzE1Ljg3LDcuODcgMTUuODQsOC4xIDE1LjczLDguMzFMMTUuMjEsOS4yQzEzLjk1LDkuNSAxMi45NSwxMC42NCAxMi43OSwxMi4wNkMxMi41OSwxMy44NyAxMy43OCwxNS40NiAxNS41LDE1LjY4QzE1LjYyLDE1LjY5IDE1Ljc0LDE1LjcgMTUuODUsMTUuN0MxNi41NiwxNS43IDE3LjI1LDE1LjQ0IDE3LjgyLDE0Ljk1QzE4LjIzLDE0LjU5IDE4LjU0LDE0LjEzIDE4Ljc0LDEzLjYyTDE4LjksMTMuNjZDMTksMTMuNjggMTkuMTcsMTMuNzQgMTkuNDUsMTMuOTFMMTkuNSwxMy45NUwxOS41NywxNEMxOS43OCwxNC4wOCAxOS45NCwxNC4yNiAyMC4wNSwxNC41QzIwLjEzLDE0LjY3IDIwLjM4LDE1LjYgMjAuMTgsMTYuNTVNNy42NCwxMi40NUM3LjU3LDExLjkgNy45NywxMS4zOSA4LjUzLDExLjMyQzguNTcsMTEuMzEgOC42LDExLjMxIDguNjQsMTEuMzFDOS4xNSwxMS4zIDkuNjEsMTEuNjcgOS42NywxMi4xOUM5LjczLDEyLjc0IDkuMzMsMTMuMjUgOC43NywxMy4zMkM4LjIxLDEzLjM5IDcuNywxMyA3LjY0LDEyLjQ1TTguNzEsMTYuMTVDOSwxNi4xNCA5LjI2LDE2LjIzIDkuNSwxNi4yOEMxMC42OCwxNi41IDExLjcsMTYuNTMgMTIuMTksMTYuNTNDMTIuNjgsMTYuNTMgMTMuNjksMTYuNSAxNC44NiwxNi4yOEMxNS4yNywxNi4yIDE1Ljc0LDE2LjAzIDE2LjExLDE2LjI4QzE2LjU5LDE2LjYgMTYuMjQsMTcuNzUgMTUuNSwxOC41M0MxNS4wNCwxOSAxMy45NywxOS45MSAxMi4xOSwxOS45MUMxMC40MSwxOS45MSA5LjMzLDE5IDguODgsMTguNTNDOC4xNCwxNy43NSA3Ljc5LDE2LjYgOC4yNiwxNi4yOEM4LjQsMTYuMTkgOC41NSwxNi4xNSA4LjcxLDE2LjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uU2FkID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNyw5LjVDNyw4LjcgNy43LDggOC41LDhDOS4zLDggMTAsOC43IDEwLDkuNUMxMCwxMC4zIDkuMywxMSA4LjUsMTFDNy43LDExIDcsMTAuMyA3LDkuNU0xNC43NywxNy4yM0MxNC4zMiwxNi41IDEzLjI1LDE2IDEyLDE2QzEwLjc1LDE2IDkuNjgsMTYuNSA5LjIzLDE3LjIzTDcuODEsMTUuODFDOC43MSwxNC43MiAxMC4yNSwxNCAxMiwxNEMxMy43NSwxNCAxNS4yOSwxNC43MiAxNi4xOSwxNS44MUwxNC43NywxNy4yM00xNS41LDExQzE0LjcsMTEgMTQsMTAuMyAxNCw5LjVDMTQsOC43IDE0LjcsOCAxNS41LDhDMTYuMyw4IDE3LDguNyAxNyw5LjVDMTcsMTAuMyAxNi4zLDExIDE1LjUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25TYWRPdXRsaW5lID0gXCJNMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTUuNSw4QzE2LjMsOCAxNyw4LjcgMTcsOS41QzE3LDEwLjMgMTYuMywxMSAxNS41LDExQzE0LjcsMTEgMTQsMTAuMyAxNCw5LjVDMTQsOC43IDE0LjcsOCAxNS41LDhNMTAsOS41QzEwLDEwLjMgOS4zLDExIDguNSwxMUM3LjcsMTEgNywxMC4zIDcsOS41QzcsOC43IDcuNyw4IDguNSw4QzkuMyw4IDEwLDguNyAxMCw5LjVNMTIsMTRDMTMuNzUsMTQgMTUuMjksMTQuNzIgMTYuMTksMTUuODFMMTQuNzcsMTcuMjNDMTQuMzIsMTYuNSAxMy4yNSwxNiAxMiwxNkMxMC43NSwxNiA5LjY4LDE2LjUgOS4yMywxNy4yM0w3LjgxLDE1LjgxQzguNzEsMTQuNzIgMTAuMjUsMTQgMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25TaWNrID0gXCJNMjEgOUMxOS45IDkgMTkgOC4xIDE5IDdTMjEgMyAyMSAzIDIzIDUuOSAyMyA3IDIyLjEgOSAyMSA5TTE3LjUgN0MxNy41IDYuMjcgMTcuOTEgNS4yOSAxOC40MiA0LjM0QzE2LjY4IDIuODggMTQuNDQgMiAxMiAyQzYuNDcgMiAyIDYuNSAyIDEyUzYuNDcgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyQzIyIDExLjQ1IDIxLjk0IDEwLjkxIDIxLjg2IDEwLjM4QzIxLjU4IDEwLjQ1IDIxLjMgMTAuNSAyMSAxMC41QzE5LjA3IDEwLjUgMTcuNSA4LjkzIDE3LjUgN00xNS42MiA3LjM4TDE2LjY4IDguNDRMMTUuNjIgOS41TDE2LjY4IDEwLjU2TDE1LjYyIDExLjYyTDEzLjUgOS41TDE1LjYyIDcuMzhNNy4zMiA4LjQ0TDguMzggNy4zOEwxMC41IDkuNUw4LjM4IDExLjYyTDcuMzIgMTAuNTZMOC4zOCA5LjVMNy4zMiA4LjQ0TTE1LjQ0IDE3QzE0Ljc1IDE1LjgxIDEzLjQ3IDE1IDEyIDE1UzkuMjUgMTUuODEgOC41NiAxN0g2Ljg4QzcuMTggMTYuMjQgNy42NCAxNS41NyA4LjIyIDE1TDUuMjQgMTMuM0M0Ljc5IDEzLjU2IDQuMjMgMTMuNTggMy43NSAxMy4zQzMuMDMgMTIuODkgMi43OSAxMS45NyAzLjIgMTEuMjVTNC41MyAxMC4yOSA1LjI1IDEwLjdDNS43MyAxMSA2IDExLjUgNiAxMkw5LjU3IDE0LjA2QzEwLjMgMTMuNyAxMS4xMiAxMy41IDEyIDEzLjVDMTQuMzMgMTMuNSAxNi4zMiAxNC45NSAxNy4xMiAxN0gxNS40NFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvblNpY2tPdXRsaW5lID0gXCJNNy4zMiAxMC41Nkw4LjM4IDkuNUw3LjMyIDguNDRMOC4zOCA3LjM4TDEwLjUgOS41TDguMzggMTEuNjJMNy4zMiAxMC41Nk00LjUgOUM0LjUzIDkgNC41NSA5IDQuNTggOUM1Ljc3IDYuMDcgOC42NCA0IDEyIDRDMTQuMTkgNCAxNi4xNiA0Ljg4IDE3LjYxIDYuM0MxNy43NiA1LjcgMTguMDYgNSAxOC40MiA0LjM0QzE2LjY4IDIuODggMTQuNDQgMiAxMiAyQzcuMTEgMiAzLjA1IDUuNSAyLjE4IDEwLjE0QzIuNzQgOS40NCAzLjU5IDkgNC41IDlNMjEgMTAuNUMyMC41OCAxMC41IDIwLjE4IDEwLjQxIDE5LjgxIDEwLjI4QzE5LjkzIDEwLjgzIDIwIDExLjQxIDIwIDEyQzIwIDE2LjQyIDE2LjQyIDIwIDEyIDIwQzguNjQgMjAgNS43NyAxNy45MyA0LjU4IDE1QzQuNTUgMTUgNC41MyAxNSA0LjUgMTVDNCAxNSAzLjQ2IDE0Ljg2IDMgMTQuNkMyLjY4IDE0LjQyIDIuNDEgMTQuMTggMi4xOCAxMy45QzMuMDcgMTguNSA3LjExIDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMkMyMiAxMS40NSAyMS45NCAxMC45MSAyMS44NiAxMC4zOEMyMS41OCAxMC40NSAyMS4zIDEwLjUgMjEgMTAuNU0yMSAzQzIxIDMgMTkgNS45IDE5IDdTMTkuOSA5IDIxIDkgMjMgOC4xIDIzIDcgMjEgMyAyMSAzTTE1LjYyIDcuMzhMMTMuNSA5LjVMMTUuNjIgMTEuNjJMMTYuNjggMTAuNTZMMTUuNjIgOS41TDE2LjY4IDguNDRMMTUuNjIgNy4zOE04LjU2IDE3QzkuMjUgMTUuODEgMTAuNTMgMTUgMTIgMTVTMTQuNzUgMTUuODEgMTUuNDQgMTdIMTcuMTJDMTYuMzIgMTQuOTUgMTQuMzMgMTMuNSAxMiAxMy41QzExLjEzIDEzLjUgMTAuMyAxMy43IDkuNTcgMTQuMDdMNiAxMkM2IDExLjUgNS43MyAxMSA1LjI1IDEwLjcxQzQuNTMgMTAuMyAzLjYyIDEwLjU0IDMuMiAxMS4yNkMyLjc5IDEyIDMuMDMgMTIuODkgMy43NSAxMy4zMUM0LjIzIDEzLjU5IDQuOCAxMy41NiA1LjI0IDEzLjMxTDguMjEgMTUuMDNDNy42NCAxNS41NiA3LjE4IDE2LjI0IDYuODggMTdIOC41NlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvblRvbmd1ZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTcuMjcsMTFDNy4xLDEwLjcxIDcsMTAuMzYgNywxMEM3LDguODkgNy44OSw4IDksOEEyLDIgMCAwLDEgMTEsMTBDMTEsMTAuMzYgMTAuOSwxMC43MSAxMC43MywxMUMxMC4zOSwxMC40IDkuNzQsMTAgOSwxMEM4LjI2LDEwIDcuNjEsMTAuNCA3LjI3LDExTTE2LDE1SDE1QzE1LDE3IDE0LjEsMTggMTMsMThDMTEuOSwxOCAxMSwxNyAxMSwxNUg4VjEzSDE2VjE1TTE2LjczLDExQzE2LjM5LDEwLjQgMTUuNzQsMTAgMTUsMTBDMTQuMjYsMTAgMTMuNjEsMTAuNCAxMy4yNywxMUMxMy4xLDEwLjcxIDEzLDEwLjM2IDEzLDEwQzEzLDguODkgMTMuODksOCAxNSw4QTIsMiAwIDAsMSAxNywxMEMxNywxMC4zNiAxNi45LDEwLjcxIDE2LjczLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uVG9uZ3VlT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNOSwxMEM4LjI2LDEwIDcuNjEsMTAuNCA3LjI3LDExQzcuMSwxMC43MSA3LDEwLjM2IDcsMTBBMiwyIDAgMCwxIDksOEMxMC4xMSw4IDExLDguOSAxMSwxMEMxMSwxMC4zNiAxMC45LDEwLjcxIDEwLjczLDExQzEwLjM5LDEwLjQgOS43NCwxMCA5LDEwTTE3LDEwQzE3LDEwLjM2IDE2LjksMTAuNzEgMTYuNzMsMTFDMTYuMzksMTAuNCAxNS43NCwxMCAxNSwxMEMxNC4yNiwxMCAxMy42MSwxMC40IDEzLjI3LDExQzEzLjEsMTAuNzEgMTMsMTAuMzYgMTMsMTBBMiwyIDAgMCwxIDE1LDhDMTYuMTEsOCAxNyw4LjkgMTcsMTBNMTYsMTNWMTVIMTVDMTUsMTcgMTQuMSwxOCAxMywxOEMxMS45LDE4IDExLDE3IDExLDE1SDhWMTNIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25XaW5rID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNyw5LjVDNyw4LjcgNy43LDggOC41LDhDOS4zLDggMTAsOC43IDEwLDkuNUMxMCwxMC4zIDkuMywxMSA4LjUsMTFDNy43LDExIDcsMTAuMyA3LDkuNU0xMiwxNy4yM0MxMC4yNSwxNy4yMyA4LjcxLDE2LjUgNy44MSwxNS40Mkw5LjIzLDE0QzkuNjgsMTQuNzIgMTAuNzUsMTUuMjMgMTIsMTUuMjNDMTMuMjUsMTUuMjMgMTQuMzIsMTQuNzIgMTQuNzcsMTRMMTYuMTksMTUuNDJDMTUuMjksMTYuNSAxMy43NSwxNy4yMyAxMiwxNy4yM00xNywxMEgxM1Y5SDE3VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uV2lua091dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEwLDkuNUMxMCwxMC4zIDkuMywxMSA4LjUsMTFDNy43LDExIDcsMTAuMyA3LDkuNUM3LDguNyA3LjcsOCA4LjUsOEM5LjMsOCAxMCw4LjcgMTAsOS41TTEyLDE3LjIzQzEwLjI1LDE3LjIzIDguNzEsMTYuNSA3LjgxLDE1LjQyTDkuMjMsMTRDOS42OCwxNC43MiAxMC43NSwxNS4yMyAxMiwxNS4yM0MxMy4yNSwxNS4yMyAxNC4zMiwxNC43MiAxNC43NywxNEwxNi4xOSwxNS40MkMxNS4yOSwxNi41IDEzLjc1LDE3LjIzIDEyLDE3LjIzTTE3LDEwSDEzVjlIMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW5naW5lID0gXCJNNyw0VjZIMTBWOEg3TDUsMTBWMTNIM1YxMEgxVjE4SDNWMTVINVYxOEg4TDEwLDIwSDE4VjE2SDIwVjE5SDIzVjlIMjBWMTJIMThWOEgxMlY2SDE1VjRIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbmdpbmVPZmYgPSBcIk0zLjc4LDIuNUwyMS41LDIwLjIyTDIwLjIzLDIxLjVMMTgsMTkuMjdWMjBIMTBMOCwxOEg1VjE1SDNWMThIMVYxMEgzVjEzSDVWMTBMNi44Nyw4LjE0TDIuNSwzLjc3TDMuNzgsMi41TTIwLDlWMTJIMThWOEgxMlY2SDE1VjRINy44MkwyMi44MiwxOUgyM1Y5SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVuZ2luZU9mZk91dGxpbmUgPSBcIk0yLjUsMy43N0w2Ljg3LDguMTRMNSwxMFYxM0gzVjEwSDFWMThIM1YxNUg1VjE4SDhMMTAsMjBIMThWMTkuMjdMMjEuMjMsMjIuNUwyMi41LDIxLjIyTDMuNzgsMi41TDIuNSwzLjc3TTE2LDE4SDExTDksMTZIN1YxMUw4LDEwSDguNzNMMTYsMTcuMjdWMThNMjMsOVYxOUgyMi44MkwxNiwxMi4xOFYxMEgxMy44Mkw3LjgyLDRIMTVWNkgxMlY4SDE4VjEySDIwVjlIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW5naW5lT3V0bGluZSA9IFwiTTgsMTBIMTZWMThIMTFMOSwxNkg3VjExTTcsNFY2SDEwVjhIN0w1LDEwVjEzSDNWMTBIMVYxOEgzVjE1SDVWMThIOEwxMCwyMEgxOFYxNkgyMFYxOUgyM1Y5SDIwVjEySDE4VjhIMTJWNkgxNVY0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXBzaWxvbiA9IFwiTTE1LjA1IDcuNzhMMTYuMTUgNi4xOEMxNi4xNSA2LjE4IDE0LjkxIDUgMTIuNzcgNUMxMC4wNCA1IDguMzUgNi44NCA4LjM1IDguNzZDOC4zNSAxMC42OCAxMC4wOCAxMS42OSAxMC4wOCAxMS42OUMxMC4wOCAxMS42OSA4IDEyLjM4IDggMTVDOCAxNy42MyAxMC4xNCAxOSAxMi40NCAxOUMxNS4zOCAxOSAxNyAxNy4wNCAxNyAxNy4wNEwxNS42IDE1LjVDMTUuNiAxNS41IDE0LjE0IDE2Ljg3IDEyLjU5IDE2Ljg3QzEwLjY2IDE2Ljg3IDEwLjIxIDE1LjY5IDEwLjIxIDE0LjkyQzEwLjIxIDEzLjg3IDEwLjU0IDEyLjY1IDEzLjgzIDEyLjY1TDEzLjgyIDEwLjc3QzEzLjgyIDEwLjc3IDEwLjQ0IDExLjExIDEwLjQ0IDguNzhDMTAuNDQgNy4yMSAxMS45IDYuOTIgMTIuNjQgNi45MkMxNC4yOCA2LjkyIDE1LjA1IDcuNzggMTUuMDUgNy43OFwiO1xyXG5leHBvcnQgdmFyIG1kaUVxdWFsID0gXCJNMTksMTBINVY4SDE5VjEwTTE5LDE2SDVWMTRIMTlWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXF1YWxCb3ggPSBcIk0xNywxNlYxNEg3VjE2SDE3TTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDE5TTE3LDEwVjhIN1YxMEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFcXVhbGl6ZXIgPSBcIk0xMCwyMEgxNFY0SDEwVjIwTTQsMjBIOFYxMkg0VjIwTTE2LDlWMjBIMjBWOUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFcXVhbGl6ZXJPdXRsaW5lID0gXCJNMTUsMjFIOVYzSDE1VjIxTTExLDE5SDEzVjVIMTFWMTlNOCwyMUgyVjExSDhWMjFNNCwxOUg2VjEzSDRWMTlNMjIsMjFIMTZWOEgyMlYyMU0xOCwxOUgyMFYxMEgxOFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlFcmFzZXIgPSBcIk0xNi4yNCwzLjU2TDIxLjE5LDguNUMyMS45Nyw5LjI5IDIxLjk3LDEwLjU1IDIxLjE5LDExLjM0TDEyLDIwLjUzQzEwLjQ0LDIyLjA5IDcuOTEsMjIuMDkgNi4zNCwyMC41M0wyLjgxLDE3QzIuMDMsMTYuMjEgMi4wMywxNC45NSAyLjgxLDE0LjE2TDEzLjQxLDMuNTZDMTQuMiwyLjc4IDE1LjQ2LDIuNzggMTYuMjQsMy41Nk00LjIyLDE1LjU4TDcuNzYsMTkuMTFDOC41NCwxOS45IDkuOCwxOS45IDEwLjU5LDE5LjExTDE0LjEyLDE1LjU4TDkuMTcsMTAuNjNMNC4yMiwxNS41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlFcmFzZXJWYXJpYW50ID0gXCJNMTUuMTQsM0MxNC42MywzIDE0LjEyLDMuMiAxMy43MywzLjU5TDIuNTksMTQuNzNDMS44MSwxNS41IDEuODEsMTYuNzcgMi41OSwxNy41Nkw1LjAzLDIwSDEyLjY5TDIxLjQxLDExLjI3QzIyLjIsMTAuNSAyMi4yLDkuMjMgMjEuNDEsOC40NEwxNi41NiwzLjU5QzE2LjE3LDMuMiAxNS42NSwzIDE1LjE0LDNNMTcsMThMMTUsMjBIMjJWMThcIjtcclxuZXhwb3J0IHZhciBtZGlFc2NhbGF0b3IgPSBcIk0yMCw4SDE4Ljk1TDYuOTUsMjBINEEyLDIgMCAwLDEgMiwxOEEyLDIgMCAwLDEgNCwxNkg1LjI5TDcsMTQuMjlWMTBBMSwxIDAgMCwxIDgsOUg5QTEsMSAwIDAsMSAxMCwxMFYxMS4yOUwxNy4yOSw0SDIwQTIsMiAwIDAsMSAyMiw2QTIsMiAwIDAsMSAyMCw4TTguNSw1QTEuNSwxLjUgMCAwLDEgMTAsNi41QTEuNSwxLjUgMCAwLDEgOC41LDhBMS41LDEuNSAwIDAsMSA3LDYuNUExLjUsMS41IDAgMCwxIDguNSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVzY2FsYXRvckJveCA9IFwiTTUgM0MzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjExIDMuODkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuODkgMjAuMTEgMyAxOSAzSDVNMTQuMzQgNkgxNy4wNUMxOC4xNiA2IDE5LjA1IDYuOSAxOS4wNSA4QzE5LjA1IDkuMTEgMTguMTYgMTAgMTcuMDUgMTBIMTZMMTAgMThINy4wNUM1Ljk1IDE4IDUuMDUgMTcuMTEgNS4wNSAxNkM1LjA1IDE0LjkgNS45NSAxNCA3LjA1IDE0SDguMzRMMTQuMzQgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFc2NhbGF0b3JEb3duID0gXCJNMjAgOEgxOC45NUw2Ljk1IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOEMyIDE2LjkgMi45IDE2IDQgMTZINS4yOUw3IDE0LjI5VjEwQzcgOS40NSA3LjQ1IDkgOCA5SDlDOS41NSA5IDEwIDkuNDUgMTAgMTBWMTEuMjlMMTcuMjkgNEgyMEMyMS4xMSA0IDIyIDQuODkgMjIgNkMyMiA3LjExIDIxLjExIDggMjAgOE04LjUgNUM5LjMzIDUgMTAgNS42NyAxMCA2LjVDMTAgNy4zMyA5LjMzIDggOC41IDhDNy42NyA4IDcgNy4zMyA3IDYuNUM3IDUuNjcgNy42NyA1IDguNSA1TTE0LjgzIDE3LjM0TDIwLjM0IDExLjgzTDIyLjE3IDEzLjY2TDE2LjY2IDE5LjE3TDE4LjUgMjFIMTNWMTUuNUwxNC44MyAxNy4zNFpcIjtcclxuZXhwb3J0IHZhciBtZGlFc2NhbGF0b3JVcCA9IFwiTTIwIDhIMTguOTVMNi45NSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThDMiAxNi45IDIuOSAxNiA0IDE2SDUuMjlMNyAxNC4yOVYxMEM3IDkuNDUgNy40NSA5IDggOUg5QzkuNTUgOSAxMCA5LjQ1IDEwIDEwVjExLjI5TDE3LjI5IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZDMjIgNy4xMSAyMS4xMSA4IDIwIDhNOC41IDVDOS4zMyA1IDEwIDUuNjcgMTAgNi41QzEwIDcuMzMgOS4zMyA4IDguNSA4QzcuNjcgOCA3IDcuMzMgNyA2LjVDNyA1LjY3IDcuNjcgNSA4LjUgNU0yMC4xNyAxNS42NkwxNC42NiAyMS4xN0wxMi44MyAxOS4zNEwxOC4zNCAxMy44M0wxNi41IDEySDIyVjE3LjVMMjAuMTcgMTUuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXNsaW50ID0gXCJNNy45NSw5LjU1TDExLjg0LDcuM0MxMS45NCw3LjI1IDEyLjA2LDcuMjUgMTIuMTYsNy4zTDE2LjA1LDkuNTVDMTYuMTUsOS42MSAxNi4yMSw5LjcxIDE2LjIxLDkuODJWMTQuMzJDMTYuMjEsMTQuNDMgMTYuMTUsMTQuNTMgMTYuMDUsMTQuNTlMMTIuMTYsMTYuODRDMTIuMDYsMTYuODkgMTEuOTQsMTYuODkgMTEuODQsMTYuODRMNy45NSwxNC41OUM3Ljg1LDE0LjUzIDcuNzksMTQuNDMgNy43OSwxNC4zMlY5LjgyQzcuNzksOS43MSA3Ljg1LDkuNjEgNy45NSw5LjU1TTIyLjEyLDExLjZDMjIuMjksMTEuODkgMjIuMjksMTIuMjMgMjIuMTIsMTIuNTNMMTcuNDcsMjAuNTZDMTcuMywyMC44NiAxNywyMSAxNi42NSwyMUg3LjM1QzcsMjEgNi43LDIwLjg1IDYuNTMsMjAuNTZMMS44OCwxMi41M0MxLjcxLDEyLjI0IDEuNzEsMTEuODcgMS44OCwxMS41OEw2LjUzLDMuNUM2LjcsMy4yMiA3LDMgNy4zNSwzSDE2LjY1QzE3LDMgMTcuMywzLjIyIDE3LjQ3LDMuNUwyMi4xMiwxMS42TTE4LjI3LDE1LjVWOC42NUMxOC4yNyw4LjUzIDE4LjIsOC40MiAxOC4wOSw4LjM2TDEyLjE2LDQuOTVDMTIuMDYsNC44OSAxMS45Myw0Ljg5IDExLjgzLDQuOTVMNS45MSw4LjM2QzUuOCw4LjQyIDUuNzMsOC41MyA1LjczLDguNjVWMTUuNUM1LjczLDE1LjYxIDUuOCwxNS43MiA1LjkxLDE1Ljc4TDExLjg0LDE5LjE5QzExLjk0LDE5LjI1IDEyLjA3LDE5LjI1IDEyLjE3LDE5LjE5TDE4LjA5LDE1Ljc4QzE4LjIsMTUuNzIgMTguMjcsMTUuNjEgMTguMjcsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFdCA9IFwiTTIzLDguNzhMMjEuNzEsNy4yMkMyMS40NSw3LjQyIDIwLjUzLDggMTkuNzcsOEMxOS4yNiw4IDE4LjMsNy43NSAxNy40NSw3LjUzQzE2LjM5LDcuMjYgMTUuMzksNyAxNC42LDdDMTQsNyAxMy40Myw3LjE1IDEyLjkzLDcuMzVDMTIuNjIsNS40NSAxMSw0IDksNEM0LjU4LDQgMiw3LjU4IDIsMTJDMiwxNi40MiA1LjU4LDE5IDEwLDE5QzEyLjA2LDE5IDEzLjkzLDE4LjQzIDE1LjM0LDE3LjM5TDE1LDIxLjI5TDE3LDIxLjQ3TDE4LDkuNzRDMTguNjYsOS44OSAxOS4yNywxMCAxOS43NywxMEMyMS4zOCwxMCAyMi44NCw4LjkxIDIzLDguNzhNOSw2QTIsMiAwIDAsMSAxMSw4QTIsMiAwIDAsMSA5LDEwSDQuMjNDNC44LDcuNjcgNi4zOSw2IDksNk0xMCwxN0M2LjY5LDE3IDQsMTUuMzEgNCwxMkg5QzEwLjYsMTIgMTEuODMsMTEuMTcgMTIuNSw5LjkxVjkuOTFDMTIuNzYsOS43MSAxMy44NSw5IDE0LjYsOUMxNC45NCw5IDE1LjUsOS4xMSAxNi4wNSw5LjI1TDE1LjY1LDEzLjg5QzE0LjgyLDE1Ljk1IDEyLjYsMTcgMTAsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXRoZXJldW0gPSBcIk0xMiwxLjc1TDUuNzUsMTIuMjVMMTIsMTZMMTguMjUsMTIuMjVMMTIsMS43NU01Ljc1LDEzLjVMMTIsMjIuMjVMMTguMjUsMTMuNUwxMiwxNy4yNUw1Ljc1LDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXRoZXJuZXQgPSBcIk03LDE1SDlWMThIMTFWMTVIMTNWMThIMTVWMTVIMTdWMThIMTlWOUgxNVY2SDlWOUg1VjE4SDdWMTVNNC4zOCwzSDE5LjYzQzIwLjk0LDMgMjIsNC4wNiAyMiw1LjM4VjE5LjYzQTIuMzcsMi4zNyAwIDAsMSAxOS42MywyMkg0LjM4QzMuMDYsMjIgMiwyMC45NCAyLDE5LjYzVjUuMzhDMiw0LjA2IDMuMDYsMyA0LjM4LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXRoZXJuZXRDYWJsZSA9IFwiTTExLDNWN0gxM1YzSDExTTgsNFYxMUgxNlY0SDE0VjhIMTBWNEg4TTEwLDEyVjIySDE0VjEySDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV0aGVybmV0Q2FibGVPZmYgPSBcIk0xMSwzSDEzVjdIMTFWM004LDRIMTBWOEgxNFY0SDE2VjExSDEyLjgyTDgsNi4xOFY0TTIwLDIwLjcyTDE4LjczLDIyTDE0LDE3LjI3VjIySDEwVjEzLjI3TDIsNS4yN0wzLjI4LDRMMjAsMjAuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXZQbHVnQ2NzMSA9IFwiTTE2IDE1SDE1LjU5QzE3LjYzIDEzLjc4IDE5IDExLjU1IDE5IDlDMTkgNS40NyAxNi4zOSAyLjU3IDEzIDIuMDhWLjk0OUgxMVYyLjA4QzcuNjEgMi41NyA1IDUuNDcgNSA5QzUgMTEuNTUgNi4zNyAxMy43OCA4LjQxIDE1SDhDNS43OSAxNSA0IDE2Ljc5IDQgMTlTNS43OSAyMyA4IDIzSDE2QzE4LjIxIDIzIDIwIDIxLjIxIDIwIDE5UzE4LjIxIDE1IDE2IDE1TTE3LjUgMTFDMTcuNSAxMS44MyAxNi44MyAxMi41IDE2IDEyLjVTMTQuNSAxMS44MyAxNC41IDExIDE1LjE3IDkuNSAxNiA5LjUgMTcuNSAxMC4xNyAxNy41IDExTTE1IDVDMTYuMTEgNSAxNyA1LjkgMTcgN1MxNi4xMSA5IDE1IDkgMTMgOC4xMSAxMyA3IDEzLjkgNSAxNSA1TTkgNUMxMC4xMSA1IDExIDUuOSAxMSA3UzEwLjExIDkgOSA5IDcgOC4xMSA3IDcgNy45IDUgOSA1TTggMTIuNUM3LjE3IDEyLjUgNi41IDExLjgzIDYuNSAxMVM3LjE3IDkuNSA4IDkuNSA5LjUgMTAuMTcgOS41IDExIDguODMgMTIuNSA4IDEyLjVNOSAyMS44MlYyMUg3VjIxLjgyQzUuODQgMjEuNCA1IDIwLjMgNSAxOUM1IDE3LjM0IDYuMzQgMTYgOCAxNlMxMSAxNy4zNCAxMSAxOUMxMSAyMC4zIDEwLjE2IDIxLjQgOSAyMS44Mk0xMCAxMkMxMCAxMC45IDEwLjkgMTAgMTIgMTBTMTQgMTAuOSAxNCAxMiAxMy4xMSAxNCAxMiAxNCAxMCAxMy4xMSAxMCAxMk0xNyAyMS44MlYyMUgxNVYyMS44MkMxMy44NCAyMS40IDEzIDIwLjMgMTMgMTlDMTMgMTcuMzQgMTQuMzQgMTYgMTYgMTZTMTkgMTcuMzQgMTkgMTlDMTkgMjAuMyAxOC4xNiAyMS40IDE3IDIxLjgyTTE0LjUgN0MxNC41IDYuNzIgMTQuNzIgNi41IDE1IDYuNVMxNS41IDYuNzIgMTUuNSA3IDE1LjI4IDcuNSAxNSA3LjUgMTQuNSA3LjI4IDE0LjUgN004LjUgN0M4LjUgNi43MiA4LjcyIDYuNSA5IDYuNVM5LjUgNi43MiA5LjUgNyA5LjI4IDcuNSA5IDcuNSA4LjUgNy4yOCA4LjUgN005IDE5QzkgMTkuNTUgOC41NSAyMCA4IDIwUzcgMTkuNTUgNyAxOSA3LjQ1IDE4IDggMTggOSAxOC40NSA5IDE5TTE3IDE5QzE3IDE5LjU1IDE2LjU1IDIwIDE2IDIwUzE1IDE5LjU1IDE1IDE5IDE1LjQ1IDE4IDE2IDE4IDE3IDE4LjQ1IDE3IDE5TTEyLjUgMTJDMTIuNSAxMi4yOCAxMi4yOCAxMi41IDEyIDEyLjVTMTEuNSAxMi4yOCAxMS41IDEyIDExLjcyIDExLjUgMTIgMTEuNSAxMi41IDExLjcyIDEyLjUgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXZQbHVnQ2NzMiA9IFwiTTE0IDQuNUMxNCA0LjIyIDE0LjIyIDQgMTQuNSA0UzE1IDQuMjIgMTUgNC41IDE0Ljc4IDUgMTQuNSA1IDE0IDQuNzggMTQgNC41TTIwIDE5QzIwIDIxLjIxIDE4LjIxIDIzIDE2IDIzSDhDNS43OSAyMyA0IDIxLjIxIDQgMTlDNCAxNi43OSA1Ljc5IDE1IDggMTVIOC4xM0M1LjY3IDEzLjY0IDQgMTEgNCA4QzQgNS42MSA1LjA2IDMuNDcgNi43MiAySDE3LjI4QzE4Ljk0IDMuNDcgMjAgNS42MSAyMCA4QzIwIDExIDE4LjMzIDEzLjY0IDE1Ljg3IDE1SDE2QzE4LjIxIDE1IDIwIDE2Ljc5IDIwIDE5TTE2LjUgMTJDMTYuNSAxMC45IDE1LjYxIDEwIDE0LjUgMTBTMTIuNSAxMC45IDEyLjUgMTJDMTIuNSAxMy4xMSAxMy40IDE0IDE0LjUgMTRTMTYuNSAxMy4xMSAxNi41IDEyTTE3IDZDMTUuOSA2IDE1IDYuOSAxNSA4QzE1IDkuMTEgMTUuOSAxMCAxNyAxMFMxOSA5LjExIDE5IDhDMTkgNi45IDE4LjExIDYgMTcgNk0xMyA0LjVDMTMgNS4zMyAxMy42NyA2IDE0LjUgNlMxNiA1LjMzIDE2IDQuNSAxNS4zMyAzIDE0LjUgMyAxMyAzLjY3IDEzIDQuNU0xMiA2QzEwLjkgNiAxMCA2LjkgMTAgOEMxMCA5LjExIDEwLjkgMTAgMTIgMTBTMTQgOS4xMSAxNCA4QzE0IDYuOSAxMy4xMSA2IDEyIDZNOCA0LjVDOCA1LjMzIDguNjcgNiA5LjUgNlMxMSA1LjMzIDExIDQuNSAxMC4zMyAzIDkuNSAzIDggMy42NyA4IDQuNU03IDEwQzguMTEgMTAgOSA5LjExIDkgOEM5IDYuOSA4LjExIDYgNyA2UzUgNi45IDUgOEM1IDkuMTEgNS45IDEwIDcgMTBNOS41IDE0QzEwLjYxIDE0IDExLjUgMTMuMTEgMTEuNSAxMkMxMS41IDEwLjkgMTAuNjEgMTAgOS41IDEwUzcuNSAxMC45IDcuNSAxMkM3LjUgMTMuMTEgOC40IDE0IDkuNSAxNE0xMSAxOUMxMSAxNy4zNCA5LjY2IDE2IDggMTZTNSAxNy4zNCA1IDE5IDYuMzQgMjIgOCAyMiAxMSAyMC42NiAxMSAxOU0xOSAxOUMxOSAxNy4zNCAxNy42NiAxNiAxNiAxNlMxMyAxNy4zNCAxMyAxOSAxNC4zNCAyMiAxNiAyMiAxOSAyMC42NiAxOSAxOU0xNyA4LjVDMTcuMjggOC41IDE3LjUgOC4yOCAxNy41IDhTMTcuMjggNy41IDE3IDcuNSAxNi41IDcuNzIgMTYuNSA4IDE2LjcyIDguNSAxNyA4LjVNMTQuNSAxMS41QzE0LjIyIDExLjUgMTQgMTEuNzIgMTQgMTJTMTQuMjIgMTIuNSAxNC41IDEyLjUgMTUgMTIuMjggMTUgMTIgMTQuNzggMTEuNSAxNC41IDExLjVNMTYgMThDMTUuNDUgMTggMTUgMTguNDUgMTUgMTlDMTUgMTkuNTUgMTUuNDUgMjAgMTYgMjBTMTcgMTkuNTUgMTcgMTlDMTcgMTguNDUgMTYuNTUgMTggMTYgMThNMTIgOC41QzEyLjI4IDguNSAxMi41IDguMjggMTIuNSA4UzEyLjI4IDcuNSAxMiA3LjUgMTEuNSA3LjcyIDExLjUgOCAxMS43MiA4LjUgMTIgOC41TTggMThDNy40NSAxOCA3IDE4LjQ1IDcgMTlDNyAxOS41NSA3LjQ1IDIwIDggMjBTOSAxOS41NSA5IDE5QzkgMTguNDUgOC41NSAxOCA4IDE4TTcgNy41QzYuNzIgNy41IDYuNSA3LjcyIDYuNSA4UzYuNzIgOC41IDcgOC41IDcuNSA4LjI4IDcuNSA4IDcuMjggNy41IDcgNy41TTkuNSA1QzkuNzggNSAxMCA0Ljc4IDEwIDQuNVM5Ljc4IDQgOS41IDQgOSA0LjIyIDkgNC41IDkuMjIgNSA5LjUgNU0xMCAxMkMxMCAxMS43MiA5Ljc4IDExLjUgOS41IDExLjVTOSAxMS43MiA5IDEyIDkuMjIgMTIuNSA5LjUgMTIuNSAxMCAxMi4yOCAxMCAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFdlBsdWdDaGFkZW1vID0gXCJNOCAxMC41QzguODMgMTAuNSA5LjUgMTEuMTcgOS41IDEyUzguODMgMTMuNSA4IDEzLjUgNi41IDEyLjgzIDYuNSAxMiA3LjE3IDEwLjUgOCAxMC41TTggOUM2LjM0IDkgNSAxMC4zNCA1IDEyUzYuMzQgMTUgOCAxNSAxMSAxMy42NiAxMSAxMiA5LjY2IDkgOCA5TTE2IDEwLjVDMTYuODMgMTAuNSAxNy41IDExLjE3IDE3LjUgMTJTMTYuODMgMTMuNSAxNiAxMy41QzE1LjE3IDEzLjUgMTQuNSAxMi44MyAxNC41IDEyUzE1LjE3IDEwLjUgMTYgMTAuNU0xNiA5QzE0LjM0IDkgMTMgMTAuMzQgMTMgMTJTMTQuMzQgMTUgMTYgMTUgMTkgMTMuNjYgMTkgMTIgMTcuNjYgOSAxNiA5TTE0LjEyIDguNDFMMTIuNzEgN0wxNC4xMiA1LjU5TDEzLjQxIDQuODhMMTIgNi4yOUwxMC41OSA0Ljg4TDkuODggNS41OUwxMS4yOSA3TDkuODggOC40MUwxMC41OSA5LjEyTDEyIDcuNzFMMTMuNDEgOS4xMkwxNC4xMiA4LjQxTTE0LjEyIDE4LjQxTDEyLjcxIDE3TDE0LjEyIDE1LjU5TDEzLjQxIDE0Ljg4TDEyIDE2LjI5TDEwLjU5IDE0Ljg4TDkuODggMTUuNTlMMTEuMjkgMTdMOS44OCAxOC40MUwxMC41OSAxOS4xMkwxMiAxNy43MUwxMy40MSAxOS4xMkwxNC4xMiAxOC40MU0xOS43NCA1LjY3TDIwLjUgNC45M0wxOS4wNyAzLjVMMTguMzMgNC4yNkMxNi42IDIuODUgMTQuNCAyIDEyIDJTNy40IDIuODUgNS42NyA0LjI2TDQuOTMgMy41TDMuNSA0LjkzTDQuMjYgNS42N0MyLjg1IDcuNCAyIDkuNiAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJTMjIgMTcuNSAyMiAxMkMyMiA5LjYgMjEuMTUgNy40IDE5Ljc0IDUuNjdNMTIgMjBDNy41OSAyMCA0IDE2LjQxIDQgMTJTNy41OSA0IDEyIDQgMjAgNy41OSAyMCAxMiAxNi40MSAyMCAxMiAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlFdlBsdWdUZXNsYSA9IFwiTTYgOUM2IDguNDUgNi40NSA4IDcgOFM4IDguNDUgOCA5IDcuNTUgMTAgNyAxMCA2IDkuNTUgNiA5TTE3IDEwQzE3LjU1IDEwIDE4IDkuNTUgMTggOVMxNy41NSA4IDE3IDggMTYgOC40NSAxNiA5IDE2LjQ1IDEwIDE3IDEwTTIyIDkuOTNWMTFDMjIgMTUuOTcgMTcuOTcgMjAgMTMgMjBIMTFDNi4wMyAyMCAyIDE2IDIgMTFWOS45M0MyIDYuNjUgNC42NSA0IDcuOTMgNEgxNi4wN0MxOS4zNSA0IDIyIDYuNjUgMjIgOS45M00xNC41IDlDMTQuNSAxMC4zOCAxNS42MiAxMS41IDE3IDExLjVTMTkuNSAxMC4zOCAxOS41IDkgMTguMzggNi41IDE3IDYuNSAxNC41IDcuNjIgMTQuNSA5TTQuNSA5QzQuNSAxMC4zOCA1LjYyIDExLjUgNyAxMS41UzkuNSAxMC4zOCA5LjUgOSA4LjM4IDYuNSA3IDYuNSA0LjUgNy42MiA0LjUgOU05IDE3QzkgMTYuNDUgOC41NSAxNiA4IDE2UzcgMTYuNDUgNyAxNyA3LjQ1IDE4IDggMTggOSAxNy41NSA5IDE3TTEzLjUgMTdDMTMuNSAxNi4xNyAxMi44MyAxNS41IDEyIDE1LjVTMTAuNSAxNi4xNyAxMC41IDE3IDExLjE3IDE4LjUgMTIgMTguNSAxMy41IDE3LjgzIDEzLjUgMTdNMTcgMTdDMTcgMTYuNDUgMTYuNTUgMTYgMTYgMTZTMTUgMTYuNDUgMTUgMTcgMTUuNDUgMTggMTYgMTggMTcgMTcuNTUgMTcgMTdNMTkuOTcgMTEuNjZDMTkuMjMgMTIuNSAxOC4xOCAxMyAxNyAxM0MxNC43OSAxMyAxMyAxMS4yMSAxMyA5QzEzIDcuOCAxMy41NCA2LjczIDE0LjM4IDZIOS42MkMxMC40NiA2LjczIDExIDcuOCAxMSA5QzExIDExLjIxIDkuMjEgMTMgNyAxM0M1LjgyIDEzIDQuNzYgMTIuNSA0LjAzIDExLjY2QzQuMTkgMTMuMzIgNC45MyAxNC44MiA2LjA0IDE1Ljk0QzcuNzEgMTQuNzMgOS43NiAxNCAxMiAxNEMxNC4yNCAxNCAxNi4yOSAxNC43MyAxNy45NiAxNS45NEMxOS4wNyAxNC44MiAxOS44MSAxMy4zMiAxOS45NyAxMS42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlFdlBsdWdUeXBlMSA9IFwiTTEyLjUgMTVDMTIuNSAxNS4yOCAxMi4yOCAxNS41IDEyIDE1LjVTMTEuNSAxNS4yOCAxMS41IDE1IDExLjcyIDE0LjUgMTIgMTQuNSAxMi41IDE0LjcyIDEyLjUgMTVNMTUgMTAuNUMxNS4yOCAxMC41IDE1LjUgMTAuMjggMTUuNSAxMFMxNS4yOCA5LjUgMTUgOS41IDE0LjUgOS43MiAxNC41IDEwIDE0LjcyIDEwLjUgMTUgMTAuNU05IDEwLjVDOS4yOCAxMC41IDkuNSAxMC4yOCA5LjUgMTBTOS4yOCA5LjUgOSA5LjUgOC41IDkuNzIgOC41IDEwIDguNzIgMTAuNSA5IDEwLjVNMTMgMTguOTJWMjBIMTFWMTguOTJDNy42MSAxOC40MyA1IDE1LjUzIDUgMTJTNy42MSA1LjU3IDExIDUuMDhWNEgxM1Y1LjA4QzE2LjM5IDUuNTcgMTkgOC41IDE5IDEyUzE2LjM5IDE4LjQzIDEzIDE4LjkyTTEzIDEwQzEzIDExLjExIDEzLjkgMTIgMTUgMTJTMTcgMTEuMTEgMTcgMTAgMTYuMTEgOCAxNSA4IDEzIDguOSAxMyAxME03IDEwQzcgMTEuMTEgNy45IDEyIDkgMTJTMTEgMTEuMTEgMTEgMTAgMTAuMTEgOCA5IDggNyA4LjkgNyAxME05LjUgMTRDOS41IDEzLjE3IDguODMgMTIuNSA4IDEyLjVTNi41IDEzLjE3IDYuNSAxNCA3LjE3IDE1LjUgOCAxNS41IDkuNSAxNC44MyA5LjUgMTRNMTQgMTVDMTQgMTMuOSAxMy4xMSAxMyAxMiAxM1MxMCAxMy45IDEwIDE1IDEwLjkgMTcgMTIgMTcgMTQgMTYuMTEgMTQgMTVNMTYgMTUuNUMxNi44MyAxNS41IDE3LjUgMTQuODMgMTcuNSAxNFMxNi44MyAxMi41IDE2IDEyLjUgMTQuNSAxMy4xNyAxNC41IDE0IDE1LjE3IDE1LjUgMTYgMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFdlBsdWdUeXBlMiA9IFwiTTcuNSAxMUM3LjUgMTEuMjggNy4yOCAxMS41IDcgMTEuNVM2LjUgMTEuMjggNi41IDExIDYuNzIgMTAuNSA3IDEwLjUgNy41IDEwLjcyIDcuNSAxMU05LjUgMTQuNUM5LjIyIDE0LjUgOSAxNC43MiA5IDE1UzkuMjIgMTUuNSA5LjUgMTUuNSAxMCAxNS4yOCAxMCAxNSA5Ljc4IDE0LjUgOS41IDE0LjVNOS41IDhDOS43OCA4IDEwIDcuNzggMTAgNy41UzkuNzggNyA5LjUgNyA5IDcuMjIgOSA3LjUgOS4yMiA4IDkuNSA4TTE0LjUgOEMxNC43OCA4IDE1IDcuNzggMTUgNy41UzE0Ljc4IDcgMTQuNSA3IDE0IDcuMjIgMTQgNy41IDE0LjIyIDggMTQuNSA4TTEyIDEwLjVDMTEuNzIgMTAuNSAxMS41IDEwLjcyIDExLjUgMTFTMTEuNzIgMTEuNSAxMiAxMS41IDEyLjUgMTEuMjggMTIuNSAxMSAxMi4yOCAxMC41IDEyIDEwLjVNMjAgMTFDMjAgMTUuNDIgMTYuNDIgMTkgMTIgMTlTNCAxNS40MiA0IDExQzQgOC42MSA1LjA2IDYuNDcgNi43MiA1SDE3LjI4QzE4Ljk0IDYuNDcgMjAgOC42MSAyMCAxMU0xMyA3LjVDMTMgOC4zMyAxMy42NyA5IDE0LjUgOVMxNiA4LjMzIDE2IDcuNSAxNS4zMyA2IDE0LjUgNiAxMyA2LjY3IDEzIDcuNU04IDcuNUM4IDguMzMgOC42NyA5IDkuNSA5UzExIDguMzMgMTEgNy41IDEwLjMzIDYgOS41IDYgOCA2LjY3IDggNy41TTcgMTNDOC4xMSAxMyA5IDEyLjExIDkgMTFDOSA5LjkgOC4xMSA5IDcgOVM1IDkuOSA1IDExQzUgMTIuMTEgNS45IDEzIDcgMTNNMTEuNSAxNUMxMS41IDEzLjkgMTAuNjEgMTMgOS41IDEzUzcuNSAxMy45IDcuNSAxNUM3LjUgMTYuMTEgOC40IDE3IDkuNSAxN1MxMS41IDE2LjExIDExLjUgMTVNMTIgMTNDMTMuMTEgMTMgMTQgMTIuMTEgMTQgMTFDMTQgOS45IDEzLjExIDkgMTIgOVMxMCA5LjkgMTAgMTFDMTAgMTIuMTEgMTAuOSAxMyAxMiAxM00xNi41IDE1QzE2LjUgMTMuOSAxNS42MSAxMyAxNC41IDEzUzEyLjUgMTMuOSAxMi41IDE1QzEyLjUgMTYuMTEgMTMuNCAxNyAxNC41IDE3UzE2LjUgMTYuMTEgMTYuNSAxNU0xOSAxMUMxOSA5LjkgMTguMTEgOSAxNyA5UzE1IDkuOSAxNSAxMUMxNSAxMi4xMSAxNS45IDEzIDE3IDEzUzE5IDEyLjExIDE5IDExTTE3IDEwLjVDMTYuNzIgMTAuNSAxNi41IDEwLjcyIDE2LjUgMTFTMTYuNzIgMTEuNSAxNyAxMS41IDE3LjUgMTEuMjggMTcuNSAxMSAxNy4yOCAxMC41IDE3IDEwLjVNMTQuNSAxNC41QzE0LjIyIDE0LjUgMTQgMTQuNzIgMTQgMTVTMTQuMjIgMTUuNSAxNC41IDE1LjUgMTUgMTUuMjggMTUgMTUgMTQuNzggMTQuNSAxNC41IDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXZTdGF0aW9uID0gXCJNMTkuNzcsNy4yM0wxOS43OCw3LjIyTDE2LjA2LDMuNUwxNSw0LjU2TDE3LjExLDYuNjdDMTYuMTcsNy4wMyAxNS41LDcuOTMgMTUuNSw5QTIuNSwyLjUgMCAwLDAgMTgsMTEuNUMxOC4zNiwxMS41IDE4LjY5LDExLjQyIDE5LDExLjI5VjE4LjVBMSwxIDAgMCwxIDE4LDE5LjVBMSwxIDAgMCwxIDE3LDE4LjVWMTRBMiwyIDAgMCwwIDE1LDEySDE0VjVBMiwyIDAgMCwwIDEyLDNINkEyLDIgMCAwLDAgNCw1VjIxSDE0VjEzLjVIMTUuNVYxOC41QTIuNSwyLjUgMCAwLDAgMTgsMjFBMi41LDIuNSAwIDAsMCAyMC41LDE4LjVWOUMyMC41LDguMzEgMjAuMjIsNy42OCAxOS43Nyw3LjIzTTE4LDEwQTEsMSAwIDAsMSAxNyw5QTEsMSAwIDAsMSAxOCw4QTEsMSAwIDAsMSAxOSw5QTEsMSAwIDAsMSAxOCwxME04LDE4VjEzLjVINkwxMCw2VjExSDEyTDgsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXZlcm5vdGUgPSBcIk0xNS4wOSwxMS42M0MxNS4wOSwxMS42MyAxNS4yOCwxMC4zNSAxNiwxMC4zNUMxNi43NiwxMC4zNSAxNy43OCwxMi4wNiAxNy43OCwxMi4wNkMxNy43OCwxMi4wNiAxNS40NiwxMS42MyAxNS4wOSwxMS42M00xOSw0LjY5QzE4LjY0LDQuMDkgMTYuODMsMy40MSAxNS44OSwzLjQxQzE0Ljk2LDMuNDEgMTMuNSwzLjQxIDEzLjUsMy40MUMxMy41LDMuNDEgMTIuNywyIDEwLjg4LDJDOS4wNSwyIDkuMTcsMi44MSA5LjE3LDMuNVY2LjMyTDguMzQsNy4xOUg0LjVDNC41LDcuMTkgMy40NCw3LjkxIDMuNDQsOS40NEMzLjQ0LDExIDMuOTIsMTYuMzUgNy4xMywxNi44NUMxMC45MywxNy40MyAxMS41OCwxNS42NyAxMS41OCwxNS40NkMxMS41OCwxNC41NiAxMS42LDEzLjIxIDExLjYsMTMuMjFDMTEuNiwxMy4yMSAxMi43MSwxNS4zMyAxNC4zOSwxNS4zM0MxNi4wNywxNS4zMyAxNy4wNCwxNi4zIDE3LjA0LDE3LjI5QzE3LjA0LDE4LjI4IDE3LjA0LDE5LjEzIDE3LjA0LDE5LjEzQzE3LjA0LDE5LjEzIDE3LDIwLjI4IDE2LDIwLjI4QzE1LDIwLjI4IDEzLjg5LDIwLjI4IDEzLjg5LDIwLjI4QzEzLjg5LDIwLjI4IDEzLjIsMTkuNzQgMTMuMiwxOUMxMy4yLDE4LjI1IDEzLjUzLDE4LjA1IDEzLjkzLDE4LjA1QzE0LjMyLDE4LjA1IDE0LjY1LDE4LjA5IDE0LjY1LDE4LjA5VjE2LjUzQzE0LjY1LDE2LjUzIDExLjQ3LDE2LjUgMTEuNDcsMTguOTRDMTEuNDcsMjEuMzcgMTMuMTMsMjIgMTQuNDYsMjJDMTUuOCwyMiAxNi42MywyMiAxNi42MywyMkMxNi42MywyMiAyMC41NiwyMS41IDIwLjU2LDEzLjc1QzIwLjU2LDYgMTkuMzMsNS4yOCAxOSw0LjY5TTcuNSw2LjMxSDQuMjZMOC4zMiwyLjIyVjUuNUw3LjUsNi4zMVpcIjtcclxuZXhwb3J0IHZhciBtZGlFeGNhdmF0b3IgPSBcIk0xOC41IDE4LjVDMTkuMDQgMTguNSAxOS41IDE4Ljk2IDE5LjUgMTkuNVMxOS4wNCAyMC41IDE4LjUgMjAuNUg2LjVDNS45NiAyMC41IDUuNSAyMC4wNCA1LjUgMTkuNVM1Ljk2IDE4LjUgNi41IDE4LjVIMTguNU0xOC41IDE3SDYuNUM1LjEzIDE3IDQgMTguMTMgNCAxOS41UzUuMTMgMjIgNi41IDIySDE4LjVDMTkuODggMjIgMjEgMjAuODggMjEgMTkuNVMxOS44OCAxNyAxOC41IDE3TTIxIDExSDE4VjdIMTNMMTAgMTFWMTZIMjJMMjEgMTFNMTEuNTQgMTFMMTMuNSA4LjVIMTZWMTFIMTEuNTRNOS43NiAzLjQxTDQuNzYgMkwyIDExLjgzQzEuNjYgMTMuMTEgMi40MSAxNC40NCAzLjcgMTQuOEw0Ljg2IDE1LjEyTDguMTUgMTIuMjlMNC4yNyAxMS4yMUw2LjE1IDQuNDZMOC45NCA1LjI0QzkuNSA1LjUzIDEwLjcxIDYuMzQgMTEuNDcgNy4zN0wxMi41IDZIMTIuOTRDMTEuNjggNC40MSA5Ljg1IDMuNDYgOS43NiAzLjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4Y2xhbWF0aW9uID0gXCJNIDExLDRMIDEzLDRMIDEzLDE1TCAxMSwxNUwgMTEsNCBaIE0gMTMsMThMIDEzLDIwTCAxMSwyMEwgMTEsMThMIDEzLDE4IFpcIjtcclxuZXhwb3J0IHZhciBtZGlFeGNsYW1hdGlvblRoaWNrID0gXCJNMTAgM0gxNFYxNEgxMFYzTTEwIDIxVjE3SDE0VjIxSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4aXRSdW4gPSBcIk0xMy4zNCw4LjE3QzEyLjQxLDguMTcgMTEuNjUsNy40IDExLjY1LDYuNDdBMS42OSwxLjY5IDAgMCwxIDEzLjM0LDQuNzhDMTQuMjgsNC43OCAxNS4wNCw1LjU0IDE1LjA0LDYuNDdDMTUuMDQsNy40IDE0LjI4LDguMTcgMTMuMzQsOC4xN00xMC4zLDE5LjkzTDQuMzcsMTguNzVMNC43MSwxNy4wNUw4Ljg2LDE3LjlMMTAuMjEsMTEuMDRMOC42OSwxMS42NFYxNC41SDdWMTAuNTRMMTEuNCw4LjY3TDEyLjA3LDguNTlDMTIuNjcsOC41OSAxMy4xNyw4LjkzIDEzLjUsOS40NEwxNC4zNiwxMC43OUMxNS4wNCwxMiAxNi4zOSwxMi44MiAxOCwxMi44MlYxNC41QzE2LjE0LDE0LjUgMTQuNDQsMTMuNjcgMTMuMzQsMTIuNEwxMi44NCwxNC45NEwxNC42MSwxNi42M1YyM0gxMi45MlYxNy45TDExLjE0LDE2LjIxTDEwLjMsMTkuOTNNMjEsMjNIMTlWM0g2VjE2LjExTDQsMTUuNjlWMUgyMVYyM002LDIzSDRWMTkuNzhMNiwyMC4yVjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4aXRUb0FwcCA9IFwiTTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVY5SDVWNUgxOVYxOUg1VjE1SDNWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xMC4wOCwxNS41OEwxMS41LDE3TDE2LjUsMTJMMTEuNSw3TDEwLjA4LDguNDFMMTIuNjcsMTFIM1YxM0gxMi42N0wxMC4wOCwxNS41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlFeHBhbmRBbGwgPSBcIk0xOCw4SDhWMThINlY4QTIsMiAwIDAsMSA4LDZIMThWOE0xNCwySDRBMiwyIDAgMCwwIDIsNFYxNEg0VjRIMTRWMk0yMiwxMlYyMEEyLDIgMCAwLDEgMjAsMjJIMTJBMiwyIDAgMCwxIDEwLDIwVjEyQTIsMiAwIDAsMSAxMiwxMEgyMEEyLDIgMCAwLDEgMjIsMTJNMjAsMTVIMTdWMTJIMTVWMTVIMTJWMTdIMTVWMjBIMTdWMTdIMjBWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwYW5kQWxsT3V0bGluZSA9IFwiTTQsMkEyLDIgMCAwLDAgMiw0VjE0SDRWNEgxNFYySDRNOCw2QTIsMiAwIDAsMCA2LDhWMThIOFY4SDE4VjZIOE0yMCwxMlYyMEgxMlYxMkgyME0yMCwxMEgxMkEyLDIgMCAwLDAgMTAsMTJWMjBBMiwyIDAgMCwwIDEyLDIySDIwQTIsMiAwIDAsMCAyMiwyMFYxMkEyLDIgMCAwLDAgMjAsMTBNMTksMTdIMTdWMTlIMTVWMTdIMTNWMTVIMTVWMTNIMTdWMTVIMTlWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwYW5zaW9uQ2FyZCA9IFwiTTIsN1Y4LjVIM1YxN0g0LjVWN0MzLjcsNyAyLjgsNyAyLDdNNiw3VjdMNiwxNkg3VjE3SDE0VjE2SDIyVjdINk0xNy41LDlBMi41LDIuNSAwIDAsMSAyMCwxMS41QTIuNSwyLjUgMCAwLDEgMTcuNSwxNEEyLjUsMi41IDAgMCwxIDE1LDExLjVBMi41LDIuNSAwIDAsMSAxNy41LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwYW5zaW9uQ2FyZFZhcmlhbnQgPSBcIk0yIDdINC41VjE3SDNWOC41SDJNMjIgN1YxNkgxNFYxN0g3VjE2SDZWN00xMCA5SDhWMTJIMTBNMTMgOUgxMVYxMkgxM00yMCA5SDE1VjE0SDIwVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwb25lbnQgPSBcIk0xNS4zOCwzTDE3Ljc3LDguNzVDMTcuNTUsOS42OCAxNy4yNywxMC4zMiAxNywxMC43QzE2LjY3LDExLjE4IDE2LjQ0LDExLjI1IDE2LjE5LDExLjI1VjEyLjc1QzE2Ljk0LDEyLjc1IDE3Ljc0LDEyLjM1IDE4LjI0LDExLjU2QzE5Ljg3LDguOTQgMjIsMyAyMiwzSDIwLjM4TDE4LjY5LDcuMDVMMTcsM0gxNS4zOE0zLjQyLDguNTlMMiwxMEw2Ljc5LDE0Ljc5TDIsMTkuNTlMMy40MSwyMUw4LjIxLDE2LjIxTDEzLDIxTDE0LjQxLDE5LjU5TDkuNjIsMTQuNzlMMTQuNDEsMTBMMTMsOC41OUw4LjIxLDEzLjM4TDMuNDEsOC41OUgzLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4cG9uZW50Qm94ID0gXCJNNSwzQzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVNMTMuNzYsNkgxNS4zOUwxNi41LDguNkwxNy41OSw2SDE5LjI0QzE5LjI0LDYgMTcuNSwxMC41NyAxNi40NiwxMi4zMkMxNi4wOCwxMi44OSAxNS4zNSwxMy4yNyAxNC41LDEzLjI1VjExLjc1QzE0Ljk2LDExLjc2IDE1LjI1LDExLjUgMTUuNSwxMS4xM0MxNS42MSwxMSAxNS42OCwxMC44IDE1Ljc0LDEwLjY0TDEzLjc2LDZNNi40MSw5LjU5TDkuMjEsMTIuMzhMMTIsOS41OUwxMy40MSwxMUwxMC42MiwxMy43OUwxMy40MSwxNi41OUwxMiwxOEw5LjIxLDE1LjIxTDYuNDEsMThMNSwxNi41OUw3Ljc5LDEzLjc5TDUsMTFMNi40MSw5LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4cG9ydCA9IFwiTTIzLDEyTDE5LDhWMTFIMTBWMTNIMTlWMTZNMSwxOFY2QzEsNC44OSAxLjksNCAzLDRIMTVBMiwyIDAgMCwxIDE3LDZWOUgxNVY2SDNWMThIMTVWMTVIMTdWMThBMiwyIDAgMCwxIDE1LDIwSDNBMiwyIDAgMCwxIDEsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwb3J0VmFyaWFudCA9IFwiTTEyLDFMOCw1SDExVjE0SDEzVjVIMTZNMTgsMjNINkM0Ljg5LDIzIDQsMjIuMSA0LDIxVjlBMiwyIDAgMCwxIDYsN0g5VjlINlYyMUgxOFY5SDE1VjdIMThBMiwyIDAgMCwxIDIwLDlWMjFBMiwyIDAgMCwxIDE4LDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZSA9IFwiTTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOU0xMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN0E1LDUgMCAwLDEgMTcsMTJBNSw1IDAgMCwxIDEyLDE3TTEyLDQuNUM3LDQuNSAyLjczLDcuNjEgMSwxMkMyLjczLDE2LjM5IDcsMTkuNSAxMiwxOS41QzE3LDE5LjUgMjEuMjcsMTYuMzkgMjMsMTJDMjEuMjcsNy42MSAxNyw0LjUgMTIsNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZUNoZWNrID0gXCJNMjMuNSwxN0wxOC41LDIyTDE1LDE4LjVMMTYuNSwxN0wxOC41LDE5TDIyLDE1LjVMMjMuNSwxN00xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlNMTIsMTdDMTIuNSwxNyAxMi45NywxNi45MyAxMy40MiwxNi43OUMxMy4xNSwxNy41IDEzLDE4LjIyIDEzLDE5VjE5LjQ1TDEyLDE5LjVDNywxOS41IDIuNzMsMTYuMzkgMSwxMkMyLjczLDcuNjEgNyw0LjUgMTIsNC41QzE3LDQuNSAyMS4yNyw3LjYxIDIzLDEyQzIyLjc1LDEyLjY0IDIyLjQ0LDEzLjI2IDIyLjA4LDEzLjg1QzIxLjE4LDEzLjMxIDIwLjEyLDEzIDE5LDEzQzE4LjIyLDEzIDE3LjUsMTMuMTUgMTYuNzksMTMuNDJDMTYuOTMsMTIuOTcgMTcsMTIuNSAxNywxMkE1LDUgMCAwLDAgMTIsN0E1LDUgMCAwLDAgNywxMkE1LDUgMCAwLDAgMTIsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllQ2hlY2tPdXRsaW5lID0gXCJNMjMuNSwxN0wxOC41LDIyTDE1LDE4LjVMMTYuNSwxN0wxOC41LDE5TDIyLDE1LjVMMjMuNSwxN00xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlNMTIsNC41QzE3LDQuNSAyMS4yNyw3LjYxIDIzLDEyQzIyLjc1LDEyLjY1IDIyLjQ0LDEzLjI2IDIyLjA4LDEzLjg1QzIxLjUsMTMuNSAyMC44NiwxMy4yNSAyMC4xOCwxMy4xMkwyMC44MiwxMkMxOS4xNyw4LjY0IDE1Ljc2LDYuNSAxMiw2LjVDOC4yNCw2LjUgNC44Myw4LjY0IDMuMTgsMTJDNC44MywxNS4zNiA4LjI0LDE3LjUgMTIsMTcuNUwxMy4yMSwxNy40M0MxMy4wNywxNy45MyAxMywxOC40NiAxMywxOVYxOS40NkwxMiwxOS41QzcsMTkuNSAyLjczLDE2LjM5IDEsMTJDMi43Myw3LjYxIDcsNC41IDEyLDQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFeWVDaXJjbGUgPSBcIk0xMiw5LjVBMi41LDIuNSAwIDAsMCA5LjUsMTJBMi41LDIuNSAwIDAsMCAxMiwxNC41QTIuNSwyLjUgMCAwLDAgMTQuNSwxMkEyLjUsMi41IDAgMCwwIDEyLDkuNU0xMiwxM0ExLDEgMCAwLDEgMTEsMTJBMSwxIDAgMCwxIDEyLDExQTEsMSAwIDAsMSAxMywxMkExLDEgMCAwLDEgMTIsMTNNMTIsOS41QTIuNSwyLjUgMCAwLDAgOS41LDEyQTIuNSwyLjUgMCAwLDAgMTIsMTQuNUEyLjUsMi41IDAgMCwwIDE0LjUsMTJBMi41LDIuNSAwIDAsMCAxMiw5LjVNMTIsMTNBMSwxIDAgMCwxIDExLDEyQTEsMSAwIDAsMSAxMiwxMUExLDEgMCAwLDEgMTMsMTJBMSwxIDAgMCwxIDEyLDEzTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDE2QzkuMzcsMTYgNywxNC40MyA2LDEyQzcuMzgsOC42OSAxMS4xOSw3LjEyIDE0LjUsOC41QzE2LjA4LDkuMTYgMTcuMzQsMTAuNDIgMTgsMTJDMTcsMTQuNDMgMTQuNjMsMTYgMTIsMTZNMTIsOS41QTIuNSwyLjUgMCAwLDAgOS41LDEyQTIuNSwyLjUgMCAwLDAgMTIsMTQuNUEyLjUsMi41IDAgMCwwIDE0LjUsMTJBMi41LDIuNSAwIDAsMCAxMiw5LjVNMTIsMTNBMSwxIDAgMCwxIDExLDEyQTEsMSAwIDAsMSAxMiwxMUExLDEgMCAwLDEgMTMsMTJBMSwxIDAgMCwxIDEyLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJNMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyME0xMiwxMUExLDEgMCAwLDEgMTMsMTJBMSwxIDAgMCwxIDEyLDEzQTEsMSAwIDAsMSAxMSwxMkExLDEgMCAwLDEgMTIsMTFNMTIsOEMxNC42Myw4IDE3LDkuNTcgMTgsMTJDMTYuNjIsMTUuMzEgMTIuODEsMTYuODggOS41LDE1LjVDNy45MiwxNC44NCA2LjY2LDEzLjU4IDYsMTJDNyw5LjU3IDkuMzcsOCAxMiw4TTEyLDkuNUEyLjUsMi41IDAgMCwwIDkuNSwxMkEyLjUsMi41IDAgMCwwIDEyLDE0LjVBMi41LDIuNSAwIDAsMCAxNC41LDEyQTIuNSwyLjUgMCAwLDAgMTIsOS41XCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllTWludXMgPSBcIk0xMiA0LjVBMTEuOCAxMS44IDAgMCAwIDEgMTJBMTEuOCAxMS44IDAgMCAwIDEyIDE5LjVIMTMuMUEzLjggMy44IDAgMCAxIDEzIDE4LjVBOS45IDkuOSAwIDAgMSAxMy4yIDE2LjhMMTIgMTdBNSA1IDAgMSAxIDE3IDEyQTIuOCAyLjggMCAwIDEgMTYuOSAxMi45QTUuMiA1LjIgMCAwIDEgMTkgMTIuNUE1LjYgNS42IDAgMCAxIDIyLjMgMTMuNUExMC4xIDEwLjEgMCAwIDAgMjMgMTJBMTEuOCAxMS44IDAgMCAwIDEyIDQuNU0xMiA5QTMgMyAwIDEgMCAxNSAxMkEyLjkgMi45IDAgMCAwIDEyIDlNMTUgMTcuNVYxOS41SDIzVjE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllTWludXNPdXRsaW5lID0gXCJNMTIgNC41QTExLjggMTEuOCAwIDAgMCAxIDEyQTExLjggMTEuOCAwIDAgMCAxMiAxOS41SDEzLjFBMy44IDMuOCAwIDAgMSAxMyAxOC41QTQuMSA0LjEgMCAwIDEgMTMuMSAxNy40SDEyQTkuNiA5LjYgMCAwIDEgMy4yIDEyQTkuNiA5LjYgMCAwIDEgMTIgNi41QTkuNiA5LjYgMCAwIDEgMjAuOCAxMkwyMC40IDEyLjdBNC42IDQuNiAwIDAgMSAyMi4zIDEzLjVBMTAuMSAxMC4xIDAgMCAwIDIzIDEyQTExLjggMTEuOCAwIDAgMCAxMiA0LjVNMTIgOUEzIDMgMCAxIDAgMTUgMTJBMi45IDIuOSAwIDAgMCAxMiA5TTE1IDE3LjVWMTkuNUgyM1YxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZU9mZiA9IFwiTTExLjgzLDlMMTUsMTIuMTZDMTUsMTIuMTEgMTUsMTIuMDUgMTUsMTJBMywzIDAgMCwwIDEyLDlDMTEuOTQsOSAxMS44OSw5IDExLjgzLDlNNy41Myw5LjhMOS4wOCwxMS4zNUM5LjAzLDExLjU2IDksMTEuNzcgOSwxMkEzLDMgMCAwLDAgMTIsMTVDMTIuMjIsMTUgMTIuNDQsMTQuOTcgMTIuNjUsMTQuOTJMMTQuMiwxNi40N0MxMy41MywxNi44IDEyLjc5LDE3IDEyLDE3QTUsNSAwIDAsMSA3LDEyQzcsMTEuMjEgNy4yLDEwLjQ3IDcuNTMsOS44TTIsNC4yN0w0LjI4LDYuNTVMNC43Myw3QzMuMDgsOC4zIDEuNzgsMTAgMSwxMkMyLjczLDE2LjM5IDcsMTkuNSAxMiwxOS41QzEzLjU1LDE5LjUgMTUuMDMsMTkuMiAxNi4zOCwxOC42NkwxNi44MSwxOS4wOEwxOS43MywyMkwyMSwyMC43M0wzLjI3LDNNMTIsN0E1LDUgMCAwLDEgMTcsMTJDMTcsMTIuNjQgMTYuODcsMTMuMjYgMTYuNjQsMTMuODJMMTkuNTcsMTYuNzVDMjEuMDcsMTUuNSAyMi4yNywxMy44NiAyMywxMkMyMS4yNyw3LjYxIDE3LDQuNSAxMiw0LjVDMTAuNiw0LjUgOS4yNiw0Ljc1IDgsNS4yTDEwLjE3LDcuMzVDMTAuNzQsNy4xMyAxMS4zNSw3IDEyLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllT2ZmT3V0bGluZSA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTUuNjUsMTguOTJDMTQuNSwxOS4zIDEzLjI4LDE5LjUgMTIsMTkuNUM3LDE5LjUgMi43MywxNi4zOSAxLDEyQzEuNjksMTAuMjQgMi43OSw4LjY5IDQuMTksNy40NkwyLDUuMjdNMTIsOUEzLDMgMCAwLDEgMTUsMTJDMTUsMTIuMzUgMTQuOTQsMTIuNjkgMTQuODMsMTNMMTEsOS4xN0MxMS4zMSw5LjA2IDExLjY1LDkgMTIsOU0xMiw0LjVDMTcsNC41IDIxLjI3LDcuNjEgMjMsMTJDMjIuMTgsMTQuMDggMjAuNzksMTUuODggMTksMTcuMTlMMTcuNTgsMTUuNzZDMTguOTQsMTQuODIgMjAuMDYsMTMuNTQgMjAuODIsMTJDMTkuMTcsOC42NCAxNS43Niw2LjUgMTIsNi41QzEwLjkxLDYuNSA5Ljg0LDYuNjggOC44NCw3TDcuMyw1LjQ3QzguNzQsNC44NSAxMC4zMyw0LjUgMTIsNC41TTMuMTgsMTJDNC44MywxNS4zNiA4LjI0LDE3LjUgMTIsMTcuNUMxMi42OSwxNy41IDEzLjM3LDE3LjQzIDE0LDE3LjI5TDExLjcyLDE1QzEwLjI5LDE0Ljg1IDkuMTUsMTMuNzEgOSwxMi4yOEw1LjYsOC44N0M0LjYxLDkuNzIgMy43OCwxMC43OCAzLjE4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZU91dGxpbmUgPSBcIk0xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlNMTIsNC41QzE3LDQuNSAyMS4yNyw3LjYxIDIzLDEyQzIxLjI3LDE2LjM5IDE3LDE5LjUgMTIsMTkuNUM3LDE5LjUgMi43MywxNi4zOSAxLDEyQzIuNzMsNy42MSA3LDQuNSAxMiw0LjVNMy4xOCwxMkM0LjgzLDE1LjM2IDguMjQsMTcuNSAxMiwxNy41QzE1Ljc2LDE3LjUgMTkuMTcsMTUuMzYgMjAuODIsMTJDMTkuMTcsOC42NCAxNS43Niw2LjUgMTIsNi41QzguMjQsNi41IDQuODMsOC42NCAzLjE4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVBsdXMgPSBcIk0xMiw0LjVDNyw0LjUgMi43Myw3LjYxIDEsMTJDMi43MywxNi4zOSA3LDE5LjUgMTIsMTkuNUMxMi4zNiwxOS41IDEyLjcyLDE5LjUgMTMuMDgsMTkuNDVDMTMuMDMsMTkuMTMgMTMsMTguODIgMTMsMTguNUMxMywxNy45NCAxMy4wOCwxNy4zOCAxMy4yNCwxNi44NEMxMi44MywxNi45NCAxMi40MiwxNyAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN0E1LDUgMCAwLDEgMTcsMTJDMTcsMTIuMjkgMTYuOTcsMTIuNTkgMTYuOTIsMTIuODhDMTcuNTgsMTIuNjMgMTguMjksMTIuNSAxOSwxMi41QzIwLjE3LDEyLjUgMjEuMzEsMTIuODQgMjIuMjksMTMuNUMyMi41NiwxMyAyMi44LDEyLjUgMjMsMTJDMjEuMjcsNy42MSAxNyw0LjUgMTIsNC41TTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOU0xOCwxNC41VjE3LjVIMTVWMTkuNUgxOFYyMi41SDIwVjE5LjVIMjNWMTcuNUgyMFYxNC41SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVBsdXNPdXRsaW5lID0gXCJNMTIsNC41QzcsNC41IDIuNzMsNy42MSAxLDEyQzIuNzMsMTYuMzkgNywxOS41IDEyLDE5LjVDMTIuMzYsMTkuNSAxMi43MiwxOS41IDEzLjA4LDE5LjQ1QzEzLjAzLDE5LjEzIDEzLDE4LjgyIDEzLDE4LjVDMTMsMTguMTQgMTMuMDQsMTcuNzggMTMuMSwxNy40MkMxMi43NCwxNy40NiAxMi4zNywxNy41IDEyLDE3LjVDOC4yNCwxNy41IDQuODMsMTUuMzYgMy4xOCwxMkM0LjgzLDguNjQgOC4yNCw2LjUgMTIsNi41QzE1Ljc2LDYuNSAxOS4xNyw4LjY0IDIwLjgyLDEyQzIwLjcsMTIuMjQgMjAuNTYsMTIuNDUgMjAuNDMsMTIuNjhDMjEuMDksMTIuODQgMjEuNzIsMTMuMTEgMjIuMjksMTMuNUMyMi41NiwxMyAyMi44LDEyLjUgMjMsMTJDMjEuMjcsNy42MSAxNyw0LjUgMTIsNC41TTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOU0xOCwxNC41VjE3LjVIMTVWMTkuNUgxOFYyMi41SDIwVjE5LjVIMjNWMTcuNUgyMFYxNC41SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVJlbW92ZSA9IFwiTTIyLjU0IDE2Ljg4TDIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TTEyIDlDMTAuMzQgOSA5IDEwLjM0IDkgMTJTMTAuMzQgMTUgMTIgMTUgMTUgMTMuNjYgMTUgMTIgMTMuNjYgOSAxMiA5TTEyIDE3QzkuMjQgMTcgNyAxNC43NiA3IDEyUzkuMjQgNyAxMiA3IDE3IDkuMjQgMTcgMTJDMTcgMTIuNSAxNi45IDEzIDE2Ljc3IDEzLjQzQzE3LjQ2IDEzLjE2IDE4LjIxIDEzIDE5IDEzQzIwLjEyIDEzIDIxLjE3IDEzLjMyIDIyLjA3IDEzLjg1QzIyLjQzIDEzLjI3IDIyLjc0IDEyLjY1IDIzIDEyQzIxLjI3IDcuNjEgMTcgNC41IDEyIDQuNVMyLjczIDcuNjEgMSAxMkMyLjczIDE2LjM5IDcgMTkuNSAxMiAxOS41QzEyLjM1IDE5LjUgMTIuNjkgMTkuNSAxMy4wMyAxOS40NUMxMyAxOS4zIDEzIDE5LjE1IDEzIDE5QzEzIDE4LjIxIDEzLjE2IDE3LjQ2IDEzLjQzIDE2Ljc3QzEzIDE2LjkgMTIuNSAxNyAxMiAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFeWVSZW1vdmVPdXRsaW5lID0gXCJNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDdMMjIuNTQgMTYuODhNMTIgOUMxMC4zNCA5IDkgMTAuMzQgOSAxMlMxMC4zNCAxNSAxMiAxNSAxNSAxMy42NiAxNSAxMiAxMy42NiA5IDEyIDlNMTIgMTcuNUM4LjI0IDE3LjUgNC44MyAxNS4zNiAzLjE4IDEyQzQuODMgOC42NCA4LjI0IDYuNSAxMiA2LjVTMTkuMTcgOC42NCAyMC44MiAxMkMyMC42MyAxMi4zOSAyMC40MSAxMi43NyAyMC4xNyAxMy4xM0MyMC44NSAxMy4yNiAyMS41IDEzLjUgMjIuMDcgMTMuODVDMjIuNDMgMTMuMjcgMjIuNzQgMTIuNjUgMjMgMTJDMjEuMjcgNy42MSAxNyA0LjUgMTIgNC41UzIuNzMgNy42MSAxIDEyQzIuNzMgMTYuMzkgNyAxOS41IDEyIDE5LjVDMTIuMzUgMTkuNSAxMi42OSAxOS41IDEzLjAzIDE5LjQ1QzEzIDE5LjMgMTMgMTkuMTUgMTMgMTlDMTMgMTguNDUgMTMuMDggMTcuOTIgMTMuMjIgMTcuNDFDMTIuODIgMTcuNDYgMTIuNDEgMTcuNSAxMiAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVNldHRpbmdzID0gXCJNMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyQTMsMyAwIDAsMCAxMiw5TTEyLDE3QTUsNSAwIDAsMSA3LDEyQTUsNSAwIDAsMSAxMiw3QTUsNSAwIDAsMSAxNywxMkE1LDUgMCAwLDEgMTIsMTdNMTIsNC41QzcuMTQsNC41IDIuNzgsNy41IDEsMTJDMy4zOSwxOC4wOCAxMC4yNSwyMS4wNiAxNi4zMywxOC42N0MxOS4zOCwxNy40NyAyMS44LDE1LjA2IDIzLDEyQzIxLjIyLDcuNSAxNi44Niw0LjUgMTIsNC41TTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVNldHRpbmdzT3V0bGluZSA9IFwiTTEyLDlBMywzIDAgMCwxIDE1LDEyQTMsMyAwIDAsMSAxMiwxNUEzLDMgMCAwLDEgOSwxMkEzLDMgMCAwLDEgMTIsOU0xMiw0LjVDMTYuODYsNC41IDIxLjIyLDcuNSAyMywxMkMyMC42MSwxOC4wOCAxMy43NSwyMS4wNiA3LjY3LDE4LjY3QzQuNjIsMTcuNDcgMi4yLDE1LjA2IDEsMTJDMi43OCw3LjUgNy4xNCw0LjUgMTIsNC41TTMuMTgsMTJDNS41NiwxNi44NyAxMS40NSwxOC44OSAxNi4zMiwxNi41QzE4LjI4LDE1LjU0IDE5Ljg2LDEzLjk2IDIwLjgyLDEyQzE4LjQ0LDcuMTMgMTIuNTUsNS4xMSA3LjY4LDcuNUM1LjcyLDguNDYgNC4xNCwxMC4wNCAzLjE4LDEyTTksMjJIN1YyNEg5VjIyTTEzLDIySDExVjI0SDEzVjIyTTE3LDIySDE1VjI0SDE3VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZWRyb3BwZXIgPSBcIk0xOS4zNSwxMS43MkwxNy4yMiwxMy44NUwxNS44MSwxMi40M0w4LjEsMjAuMTRMMy41LDIyTDIsMjAuNUwzLjg2LDE1LjlMMTEuNTcsOC4xOUwxMC4xNSw2Ljc4TDEyLjI4LDQuNjVMMTkuMzUsMTEuNzJNMTYuNzYsM0MxNy45MywxLjgzIDE5LjgzLDEuODMgMjEsM0MyMi4xNyw0LjE3IDIyLjE3LDYuMDcgMjEsNy4yNEwxOS4wOCw5LjE2TDE0Ljg0LDQuOTJMMTYuNzYsM001LjU2LDE3LjAzTDQuNSwxOS41TDYuOTcsMTguNDRMMTQuNCwxMUwxMyw5LjZMNS41NiwxNy4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlFeWVkcm9wcGVyTWludXMgPSBcIk0xOS4zNSAxMS43MkwxNy4yMiAxMy44NUwxNS44MSAxMi40M0w4LjEgMjAuMTRMMy41IDIyTDIgMjAuNUwzLjg2IDE1LjlMMTEuNTcgOC4xOUwxMC4xNSA2Ljc4TDEyLjI4IDQuNjVMMTkuMzUgMTEuNzJNMTYuNzYgM0MxNy45MyAxLjgzIDE5LjgzIDEuODMgMjEgM1MyMi4xNyA2LjA3IDIxIDcuMjRMMTkuMDggOS4xNkwxNC44NCA0LjkyTDE2Ljc2IDNNNS41NiAxNy4wM0w0LjUgMTkuNUw2Ljk3IDE4LjQ0TDE0LjQgMTFMMTMgOS42TDUuNTYgMTcuMDNNOSA0VjZIMVY0SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllZHJvcHBlck9mZiA9IFwiTTIxIDcuMjRMMTkuMDggOS4xNkwxNC44NCA0LjkyTDE2Ljc2IDNDMTcuOTMgMS44MyAxOS44MyAxLjgzIDIxIDNTMjIuMTcgNi4wNyAyMSA3LjI0TTEwLjk0IDguODJMMTIuMzYgMTAuMjRMMTMgOS42TDE0LjQgMTFMMTMuNzYgMTEuNjRMMTUuMTggMTMuMDZMMTUuODEgMTIuNDNMMTcuMjIgMTMuODVMMTkuMzUgMTEuNzJMMTIuMjggNC42NUwxMC4xNSA2Ljc4TDExLjU3IDguMTlMMTAuOTQgOC44Mk0xOS44NiAyMC4yOUwxOC41OCAyMS41N0wxMi42MyAxNS42MUw4LjEgMjAuMTRMMy41IDIyTDIgMjAuNUwzLjg2IDE1LjlMOC4zOSAxMS4zN0wxLjg2IDQuODVMMy4xNCAzLjU3TDE5Ljg2IDIwLjI5TTExLjIxIDE0LjJMOS44MSAxMi43OUw1LjU2IDE3LjAzTDQuNSAxOS41TDYuOTcgMTguNDRMMTEuMjEgMTQuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFeWVkcm9wcGVyUGx1cyA9IFwiTTE5LjM1IDExLjcyTDE3LjIyIDEzLjg1TDE1LjgxIDEyLjQzTDguMSAyMC4xNEwzLjUgMjJMMiAyMC41TDMuODYgMTUuOUwxMS41NyA4LjE5TDEwLjE1IDYuNzhMMTIuMjggNC42NUwxOS4zNSAxMS43Mk0xNi43NiAzQzE3LjkzIDEuODMgMTkuODMgMS44MyAyMSAzUzIyLjE3IDYuMDcgMjEgNy4yNEwxOS4wOCA5LjE2TDE0Ljg0IDQuOTJMMTYuNzYgM001LjU2IDE3LjAzTDQuNSAxOS41TDYuOTcgMTguNDRMMTQuNCAxMUwxMyA5LjZMNS41NiAxNy4wM002IDFWNEg5VjZINlY5SDRWNkgxVjRINFYxSDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllZHJvcHBlclJlbW92ZSA9IFwiTTE5LjM1IDExLjcyTDE3LjIyIDEzLjg1TDE1LjgxIDEyLjQzTDguMSAyMC4xNEwzLjUgMjJMMiAyMC41TDMuODYgMTUuOUwxMS41NyA4LjE5TDEwLjE1IDYuNzhMMTIuMjggNC42NUwxOS4zNSAxMS43Mk0xNi43NiAzQzE3LjkzIDEuODMgMTkuODMgMS44MyAyMSAzUzIyLjE3IDYuMDcgMjEgNy4yNEwxOS4wOCA5LjE2TDE0Ljg0IDQuOTJMMTYuNzYgM001LjU2IDE3LjAzTDQuNSAxOS41TDYuOTcgMTguNDRMMTQuNCAxMUwxMyA5LjZMNS41NiAxNy4wM004LjU0IDIuODhMNi40MSA1TDguNTQgNy4xMkw3LjEyIDguNTRMNSA2LjQxTDIuODggOC41NEwxLjQ2IDcuMTJMMy41OSA1TDEuNDYgMi44OEwyLjg4IDEuNDdMNSAzLjU5TDcuMTIgMS40N0w4LjU0IDIuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllZHJvcHBlclZhcmlhbnQgPSBcIk02LjkyLDE5TDUsMTcuMDhMMTMuMDYsOUwxNSwxMC45NE0yMC43MSw1LjYzTDE4LjM3LDMuMjlDMTgsMi45IDE3LjM1LDIuOSAxNi45NiwzLjI5TDEzLjg0LDYuNDFMMTEuOTEsNC41TDEwLjUsNS45MUwxMS45Miw3LjMzTDMsMTYuMjVWMjFINy43NUwxNi42NywxMi4wOEwxOC4wOSwxMy41TDE5LjUsMTIuMDlMMTcuNTgsMTAuMTdMMjAuNyw3LjA1QzIxLjEsNi42NSAyMS4xLDYgMjAuNzEsNS42M1pcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlID0gXCJNOSwxMS43NUExLjI1LDEuMjUgMCAwLDAgNy43NSwxM0ExLjI1LDEuMjUgMCAwLDAgOSwxNC4yNUExLjI1LDEuMjUgMCAwLDAgMTAuMjUsMTNBMS4yNSwxLjI1IDAgMCwwIDksMTEuNzVNMTUsMTEuNzVBMS4yNSwxLjI1IDAgMCwwIDEzLjc1LDEzQTEuMjUsMS4yNSAwIDAsMCAxNSwxNC4yNUExLjI1LDEuMjUgMCAwLDAgMTYuMjUsMTNBMS4yNSwxLjI1IDAgMCwwIDE1LDExLjc1TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsMTEuNzEgNCwxMS40MiA0LjA1LDExLjE0QzYuNDEsMTAuMDkgOC4yOCw4LjE2IDkuMjYsNS43N0MxMS4wNyw4LjMzIDE0LjA1LDEwIDE3LjQyLDEwQzE4LjIsMTAgMTguOTUsOS45MSAxOS42Nyw5Ljc0QzE5Ljg4LDEwLjQ1IDIwLDExLjIxIDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhY2VBZ2VudCA9IFwiTTE4LjcyLDE0Ljc2QzE5LjA3LDEzLjkxIDE5LjI2LDEzIDE5LjI2LDEyQzE5LjI2LDExLjI4IDE5LjE1LDEwLjU5IDE4Ljk2LDkuOTVDMTguMzEsMTAuMSAxNy42MywxMC4xOCAxNi45MiwxMC4xOEMxMy44NiwxMC4xOCAxMS4xNSw4LjY3IDkuNSw2LjM0QzguNjEsOC41IDYuOTEsMTAuMjYgNC43NywxMS4yMkM0LjczLDExLjQ3IDQuNzMsMTEuNzQgNC43MywxMkE3LjI3LDcuMjcgMCAwLDAgMTIsMTkuMjdDMTMuMDUsMTkuMjcgMTQuMDYsMTkuMDQgMTQuOTcsMTguNjNDMTUuNTQsMTkuNzIgMTUuOCwyMC4yNiAxNS43OCwyMC4yNkMxNC4xNCwyMC44MSAxMi44NywyMS4wOCAxMiwyMS4wOEM5LjU4LDIxLjA4IDcuMjcsMjAuMTMgNS41NywxOC40MkM0LjUzLDE3LjM4IDMuNzYsMTYuMTEgMy4zMywxNC43M0gyVjEwLjE4SDMuMDlDMy45Myw2LjA0IDcuNiwyLjkyIDEyLDIuOTJDMTQuNCwyLjkyIDE2LjcxLDMuODcgMTguNDIsNS41OEMxOS42OSw2Ljg0IDIwLjU0LDguNDUgMjAuODksMTAuMThIMjJWMTQuNjdIMjJWMTQuNjlMMjIsMTQuNzNIMjEuOTRMMTguMzgsMThMMTMuMDgsMTcuNFYxNS43M0gxNy45MUwxOC43MiwxNC43Nk05LjI3LDExLjc3QzkuNTcsMTEuNzcgOS44NiwxMS44OSAxMC4wNywxMi4xMUMxMC4yOCwxMi4zMiAxMC40LDEyLjYxIDEwLjQsMTIuOTFDMTAuNCwxMy4yMSAxMC4yOCwxMy41IDEwLjA3LDEzLjcxQzkuODYsMTMuOTIgOS41NywxNC4wNCA5LjI3LDE0LjA0QzguNjQsMTQuMDQgOC4xMywxMy41NCA4LjEzLDEyLjkxQzguMTMsMTIuMjggOC42NCwxMS43NyA5LjI3LDExLjc3TTE0LjcyLDExLjc3QzE1LjM1LDExLjc3IDE1Ljg1LDEyLjI4IDE1Ljg1LDEyLjkxQzE1Ljg1LDEzLjU0IDE1LjM1LDE0LjA0IDE0LjcyLDE0LjA0QzE0LjA5LDE0LjA0IDEzLjU4LDEzLjU0IDEzLjU4LDEyLjkxQTEuMTQsMS4xNCAwIDAsMSAxNC43MiwxMS43N1pcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlTWFzayA9IFwiTTIwLjI1IDZDMTguNzkgNiAxNy42MSA3LjE0IDE3LjUgOC41OEwxMi41NSA3LjE2QzEyLjE5IDcuMDUgMTEuODEgNy4wNSAxMS40NSA3LjE2TDYuNSA4LjU4QzYuMzkgNy4xNCA1LjIxIDYgMy43NSA2QzIuMjMgNiAxIDcuMjMgMSA4Ljc1VjEyLjI1QzEgMTMuNzcgMi4yMyAxNSAzLjc1IDE1SDUuNjhDNi44MSAxNy4zNiA5LjIxIDE5IDEyIDE5UzE3LjE5IDE3LjM2IDE4LjMyIDE1SDIwLjI1QzIxLjc3IDE1IDIzIDEzLjc3IDIzIDEyLjI1VjguNzVDMjMgNy4yMyAyMS43NyA2IDIwLjI1IDZNNSAxMy41SDMuNzVDMy4wNiAxMy41IDIuNSAxMi45NCAyLjUgMTIuMjVWOC43NUMyLjUgOC4wNiAzLjA2IDcuNSAzLjc1IDcuNVM1IDguMDYgNSA4Ljc1VjEzLjVNMTUgMTJMMTIuNCAxMS4zQzEyLjEgMTEuMiAxMS44IDExLjIgMTEuNiAxMS4zTDkgMTJWMTFMMTEuMyAxMC4zQzExLjcgMTAuMiAxMi4yIDEwLjIgMTIuNyAxMC4zTDE1IDExVjEyTTIxLjUgMTIuMjVDMjEuNSAxMi45NCAyMC45NCAxMy41IDIwLjI1IDEzLjVIMTlWOC43NUMxOSA4LjA2IDE5LjU2IDcuNSAyMC4yNSA3LjVTMjEuNSA4LjA2IDIxLjUgOC43NVYxMi4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlTWFza091dGxpbmUgPSBcIk0xNSAxMkwxMi40IDExLjNDMTIuMSAxMS4yIDExLjggMTEuMiAxMS42IDExLjNMOSAxMlYxMUwxMS4zIDEwLjNDMTEuNyAxMC4yIDEyLjIgMTAuMiAxMi43IDEwLjNMMTUgMTFWMTJNMjAuMjUgNkMxOC43OSA2IDE3LjYxIDcuMTQgMTcuNSA4LjU4TDEyLjU1IDcuMTZDMTIuMzcgNy4xMSAxMi4xOSA3LjA4IDEyIDcuMDhDMTEuODIgNy4wOCAxMS42MyA3LjExIDExLjQ1IDcuMTZMNi41IDguNThDNi4zOSA3LjE0IDUuMjEgNiAzLjc1IDZDMi4yMyA2IDEgNy4yMyAxIDguNzVWMTIuMjVDMSAxMy43NyAyLjIzIDE1IDMuNzUgMTVINS42OEM2LjgxIDE3LjM2IDkuMjEgMTkgMTIgMTlTMTcuMTkgMTcuMzYgMTguMzIgMTVIMjAuMjVDMjEuNzcgMTUgMjMgMTMuNzcgMjMgMTIuMjVWOC43NUMyMyA3LjIzIDIxLjc3IDYgMjAuMjUgNk01IDEzLjVIMy43NUMzLjA2IDEzLjUgMi41IDEyLjk0IDIuNSAxMi4yNVY4Ljc1QzIuNSA4LjA2IDMuMDYgNy41IDMuNzUgNy41UzUgOC4wNiA1IDguNzVWMTMuNU0xNyAxMkMxNyAxNC43NiAxNC43NiAxNyAxMiAxN1M3IDE0Ljc2IDcgMTJMNyAxMC41TDEyIDkuMDhIMTJMMTcgMTAuNVYxMk0yMS41IDEyLjI1QzIxLjUgMTIuOTQgMjAuOTQgMTMuNSAyMC4yNSAxMy41SDE5VjguNzVDMTkgOC4wNiAxOS41NiA3LjUgMjAuMjUgNy41UzIxLjUgOC4wNiAyMS41IDguNzVWMTIuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZU91dGxpbmUgPSBcIk0xMC4yNSwxM0ExLjI1LDEuMjUgMCAwLDEgOSwxNC4yNUExLjI1LDEuMjUgMCAwLDEgNy43NSwxM0ExLjI1LDEuMjUgMCAwLDEgOSwxMS43NUExLjI1LDEuMjUgMCAwLDEgMTAuMjUsMTNNMTUsMTEuNzVBMS4yNSwxLjI1IDAgMCwwIDEzLjc1LDEzQTEuMjUsMS4yNSAwIDAsMCAxNSwxNC4yNUExLjI1LDEuMjUgMCAwLDAgMTYuMjUsMTNBMS4yNSwxLjI1IDAgMCwwIDE1LDExLjc1TTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0xMC42Niw0LjEyQzEyLjA2LDYuNDQgMTQuNiw4IDE3LjUsOEMxNy45Niw4IDE4LjQxLDcuOTUgMTguODQsNy44OEMxNy40NCw1LjU2IDE0LjksNCAxMiw0QzExLjU0LDQgMTEuMDksNC4wNSAxMC42Niw0LjEyTTQuNDIsOS40N0M2LjEzLDguNSA3LjQ1LDYuOTIgOC4wOCw1LjAzQzYuMzcsNiA1LjA1LDcuNTggNC40Miw5LjQ3TTIwLDEyQzIwLDExLjIyIDE5Ljg4LDEwLjQ3IDE5LjY3LDkuNzZDMTguOTcsOS45MSAxOC4yNSwxMCAxNy41LDEwQzE0LjM3LDEwIDExLjU4LDguNTYgOS43NCw2LjMxQzguNjksOC44NyA2LjYsMTAuODggNCwxMS44NkM0LDExLjkgNCwxMS45NSA0LDEyQzQsMTYuNDEgNy41OSwyMCAxMiwyMEMxNi40MSwyMCAyMCwxNi40MSAyMCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlUHJvZmlsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDguMzlDMTMuNTcsOS40IDE1LjQyLDEwIDE3LjQyLDEwQzE4LjIsMTAgMTguOTUsOS45MSAxOS42Nyw5Ljc0QzE5Ljg4LDEwLjQ1IDIwLDExLjIxIDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwQzksMjAgNi4zOSwxOC4zNCA1LDE1Ljg5TDYuNzUsMTRWMTNBMS4yNSwxLjI1IDAgMCwxIDgsMTEuNzVBMS4yNSwxLjI1IDAgMCwxIDkuMjUsMTNWMTRIMTJNMTYsMTEuNzVBMS4yNSwxLjI1IDAgMCwwIDE0Ljc1LDEzQTEuMjUsMS4yNSAwIDAsMCAxNiwxNC4yNUExLjI1LDEuMjUgMCAwLDAgMTcuMjUsMTNBMS4yNSwxLjI1IDAgMCwwIDE2LDExLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhY2VQcm9maWxlV29tYW4gPSBcIk0xNy4yNSAxM0MxNy4yNSAxMy42OSAxNi42OSAxNC4yNSAxNiAxNC4yNVMxNC43NSAxMy42OSAxNC43NSAxMyAxNS4zMSAxMS43NSAxNiAxMS43NSAxNy4yNSAxMi4zMSAxNy4yNSAxM00yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJIMlYxMkMyIDYuNSA2LjUgMiAxMiAyUzIyIDYuNSAyMiAxMk03IDE4QzguNDEgMTkuMjMgMTAgMjAgMTIgMjBDMTYuNDEgMjAgMjAgMTYuNDEgMjAgMTJDMjAgMTEuMjEgMTkuODggMTAuNDUgMTkuNjcgOS43NEMxOC45NSA5LjkxIDE4LjIgMTAgMTcuNDIgMTBDMTUuNDIgMTAgMTMuNTcgOS40IDEyIDguMzlDMTIgOC4zOSAxMC41NCAxMy43NiA4LjAzIDEzQzcuMzcgMTIuOCA3IDEzLjMxIDcgMTRcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlUmVjb2duaXRpb24gPSBcIk05LDExLjc1QTEuMjUsMS4yNSAwIDAsMCA3Ljc1LDEzQTEuMjUsMS4yNSAwIDAsMCA5LDE0LjI1QTEuMjUsMS4yNSAwIDAsMCAxMC4yNSwxM0ExLjI1LDEuMjUgMCAwLDAgOSwxMS43NU0xNSwxMS43NUExLjI1LDEuMjUgMCAwLDAgMTMuNzUsMTNBMS4yNSwxLjI1IDAgMCwwIDE1LDE0LjI1QTEuMjUsMS4yNSAwIDAsMCAxNi4yNSwxM0ExLjI1LDEuMjUgMCAwLDAgMTUsMTEuNzVNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsMjBBOCw4IDAgMCwxIDQsMTJDMy45NywxMS43MSAzLjk3LDExLjQzIDQsMTEuMTRDNi4zOCwxMC4xIDguMjcsOC4xNyA5LjI2LDUuNzdDMTEuMTMsOC40MiAxNC4xNywxMCAxNy40MiwxMEMxOC4xOCwxMCAxOC45Myw5LjkxIDE5LjY3LDkuNzRDMjAuOTIsMTQgMTguNSwxOC40MyAxNC4yNiwxOS42N0MxMy41LDE5Ljg5IDEyLjc2LDIwIDEyLDIwTTAsMkEyLDIgMCAwLDEgMiwwSDZWMkgyVjZIMFYyTTI0LDIyQTIsMiAwIDAsMSAyMiwyNEgxOFYyMkgyMlYxOEgyNFYyMk0yLDI0QTIsMiAwIDAsMSAwLDIyVjE4SDJWMjJINlYyNEgyTTIyLDBBMiwyIDAgMCwxIDI0LDJWNkgyMlYySDE4VjBIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVNoaW1tZXIgPSBcIk0xOC40MSAzLjQxTDE2IDQuNUwxOC40MSA1LjU5TDE5LjUgOEwyMC42IDUuNTlMMjMgNC41TDIwLjYgMy40MUwxOS41IDFNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyQzIyIDEwLjUzIDIxLjY3IDkuMTMgMjEuMSA3Ljg3TDE5Ljg2IDEwLjU5QzE5Ljk0IDExLjA1IDIwIDExLjUgMjAgMTJDMjAgMTYuNDMgMTYuNDMgMjAgMTIgMjBDNy41NyAyMCA0IDE2LjQzIDQgMTJDNCAxMS45NiA0IDExLjkxIDQgMTEuODdBMTAgMTAgMCAwIDAgOS43NCA2LjMxQTEwIDEwIDAgMCAwIDE3LjUgMTBBMTAgMTAgMCAwIDAgMTguODMgOS45MUwxNy4zNSA2LjY1TDEyLjYgNC41TDE2LjEzIDIuOUMxNC44NyAyLjMzIDEzLjQ3IDIgMTIgMk05IDExLjc1QTEuMjUgMS4yNSAwIDAgMCA3Ljc1IDEzQTEuMjUgMS4yNSAwIDAgMCA5IDE0LjI1QTEuMjUgMS4yNSAwIDAgMCAxMC4yNSAxM0ExLjI1IDEuMjUgMCAwIDAgOSAxMS43NU0xNSAxMS43NUExLjI1IDEuMjUgMCAwIDAgMTMuNzUgMTNBMS4yNSAxLjI1IDAgMCAwIDE1IDE0LjI1QTEuMjUgMS4yNSAwIDAgMCAxNi4yNSAxM0ExLjI1IDEuMjUgMCAwIDAgMTUgMTEuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVNoaW1tZXJPdXRsaW5lID0gXCJNMTkuNSAxTDE4LjQxIDMuNDFMMTYgNC41TDE4LjQxIDUuNTlMMTkuNSA4TDIwLjYgNS41OUwyMyA0LjVMMjAuNiAzLjQxTDE5LjUgMU0xMiAyQzYuNSAyIDIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJDMjIgMTAuNTMgMjEuNjcgOS4xMyAyMS4xIDcuODdMMTkuODYgMTAuNTdDMTkuOTUgMTEuMDQgMjAgMTEuNSAyMCAxMkMyMCAxNi40MyAxNi40MyAyMCAxMiAyMEM3LjU3IDIwIDQgMTYuNDMgNCAxMkM0IDExLjk1IDQgMTEuOTEgNCAxMS44NkExMCAxMCAwIDAgMCA5Ljc0IDYuMzFDMTEuNjEgOC42MSAxNC40NCAxMCAxNy41IDEwQzE3Ljk0IDEwIDE4LjM5IDkuOTcgMTguODMgOS45MUwxNy45NiA4QzE3LjgxIDggMTcuNjUgOCAxNy41IDhDMTQuNjggOCAxMi4xIDYuNSAxMC42NiA0LjEyQzExLjEgNC4wNSAxMS41NCA0IDEyIDRDMTIuNSA0IDEyLjk2IDQuMDUgMTMuNDIgNC4xM0wxNi4xMyAyLjkxQzE0Ljg3IDIuMzMgMTMuNDcgMiAxMiAyTTguMDkgNUE4IDggMCAwIDEgNC40MSA5LjVDNS4wNCA3LjU3IDYuMzcgNiA4LjA5IDVNOSAxMS43NUExLjI1IDEuMjUgMCAwIDAgNy43NSAxM0ExLjI1IDEuMjUgMCAwIDAgOSAxNC4yNUExLjI1IDEuMjUgMCAwIDAgMTAuMjUgMTNBMS4yNSAxLjI1IDAgMCAwIDkgMTEuNzVNMTUgMTEuNzVBMS4yNSAxLjI1IDAgMCAwIDEzLjc1IDEzQTEuMjUgMS4yNSAwIDAgMCAxNSAxNC4yNUExLjI1IDEuMjUgMCAwIDAgMTYuMjUgMTNBMS4yNSAxLjI1IDAgMCAwIDE1IDExLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhY2VXb21hbiA9IFwiTTEzLjc1IDEzQzEzLjc1IDEyLjMxIDE0LjMxIDExLjc1IDE1IDExLjc1UzE2LjI1IDEyLjMxIDE2LjI1IDEzIDE1LjY5IDE0LjI1IDE1IDE0LjI1IDEzLjc1IDEzLjY5IDEzLjc1IDEzTTIyIDEyVjIySDJWMTJDMiA2LjUgNi41IDIgMTIgMlMyMiA2LjUgMjIgMTJNNCAxMkM0IDE2LjQxIDcuNTkgMjAgMTIgMjBTMjAgMTYuNDEgMjAgMTJDMjAgMTEuMjEgMTkuODggMTAuNDUgMTkuNjcgOS43NEMxOC45NSA5LjkxIDE4LjIgMTAgMTcuNDIgMTBDMTQuMDUgMTAgMTEuMDcgOC4zMyA5LjI2IDUuNzdDOC4yOCA4LjE2IDYuNDEgMTAuMDkgNC4wNSAxMS4xNEM0IDExLjQyIDQgMTEuNzEgNCAxMk05IDE0LjI1QzkuNjkgMTQuMjUgMTAuMjUgMTMuNjkgMTAuMjUgMTNTOS42OSAxMS43NSA5IDExLjc1IDcuNzUgMTIuMzEgNy43NSAxMyA4LjMxIDE0LjI1IDkgMTQuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVdvbWFuT3V0bGluZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMlYyMkgyMlYxMkMyMiA2LjUgMTcuNSAyIDEyIDJNMTIgNEMxNC45IDQgMTcuNDQgNS41NiAxOC44NCA3Ljg4QzE4LjQxIDcuOTUgMTcuOTYgOCAxNy41IDhDMTQuNiA4IDEyLjA2IDYuNDQgMTAuNjYgNC4xMkMxMS4wOSA0LjA1IDExLjU0IDQgMTIgNE04LjA4IDUuMDNDNy40NSA2LjkyIDYuMTMgOC41IDQuNDIgOS40N0M1LjA1IDcuNTggNi4zNyA2IDguMDggNS4wM000IDExLjg2QzYuNiAxMC44OCA4LjY5IDguODcgOS43NCA2LjMxQzExLjU4IDguNTYgMTQuMzcgMTAgMTcuNSAxMEMxOC4yNSAxMCAxOC45NyA5LjkxIDE5LjY3IDkuNzZDMTkuODggMTAuNDcgMjAgMTEuMjIgMjAgMTJDMjAgMTYuNDEgMTYuNDEgMjAgMTIgMjBTNCAxNi40MSA0IDEyVjExLjg2TTQgMjBWMThDNC41NyAxOC43NSA1LjI1IDE5LjQzIDYgMjBINE0yMCAyMEgxOEMxOC43NSAxOS40MyAxOS40MyAxOC43NSAyMCAxOFYyME0xMy43NSAxM0MxMy43NSAxMi4zMSAxNC4zMSAxMS43NSAxNSAxMS43NVMxNi4yNSAxMi4zMSAxNi4yNSAxMyAxNS42OSAxNC4yNSAxNSAxNC4yNSAxMy43NSAxMy42OSAxMy43NSAxM003Ljc1IDEzQzcuNzUgMTIuMzEgOC4zMSAxMS43NSA5IDExLjc1UzEwLjI1IDEyLjMxIDEwLjI1IDEzIDkuNjkgMTQuMjUgOSAxNC4yNSA3Ljc1IDEzLjY5IDcuNzUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVdvbWFuU2hpbW1lciA9IFwiTTE5LjUgMUwxOC40MSAzLjQxTDE2IDQuNUwxOC40MSA1LjU5TDE5LjUgOEwyMC42IDUuNTlMMjMgNC41TDIwLjYgMy40MUwxOS41IDFNMTIgMkM2LjUgMiAyIDYuNSAyIDEyVjIySDIyVjEyQzIyIDEwLjUzIDIxLjY3IDkuMTMgMjEuMSA3Ljg3TDE5Ljg2IDEwLjU5QzE5Ljk0IDExLjA1IDIwIDExLjUgMjAgMTJDMjAgMTYuNDMgMTYuNDMgMjAgMTIgMjBDNy41NyAyMCA0IDE2LjQzIDQgMTJDNCAxMS45NiA0IDExLjkxIDQgMTEuODdBMTAgMTAgMCAwIDAgOS43NCA2LjMxQTEwIDEwIDAgMCAwIDE3LjUgMTBBMTAgMTAgMCAwIDAgMTguODMgOS45MUwxNy4zNSA2LjY1TDEyLjYgNC41TDE2LjEzIDIuOUMxNC44NyAyLjMzIDEzLjQ3IDIgMTIgMk05IDExLjc1QTEuMjUgMS4yNSAwIDAgMCA3Ljc1IDEzQTEuMjUgMS4yNSAwIDAgMCA5IDE0LjI1QTEuMjUgMS4yNSAwIDAgMCAxMC4yNSAxM0ExLjI1IDEuMjUgMCAwIDAgOSAxMS43NU0xNSAxMS43NUExLjI1IDEuMjUgMCAwIDAgMTMuNzUgMTNBMS4yNSAxLjI1IDAgMCAwIDE1IDE0LjI1QTEuMjUgMS4yNSAwIDAgMCAxNi4yNSAxM0ExLjI1IDEuMjUgMCAwIDAgMTUgMTEuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVdvbWFuU2hpbW1lck91dGxpbmUgPSBcIk0xOS41IDFMMTguNDEgMy40MUwxNiA0LjVMMTguNDEgNS41OUwxOS41IDhMMjAuNiA1LjU5TDIzIDQuNUwyMC42IDMuNDFNMTIgMkM2LjUgMiAyIDYuNSAyIDEyVjIySDIyVjEyQzIyIDEwLjUzIDIxLjY3IDkuMTMgMjEuMSA3Ljg3TDE5Ljg2IDEwLjU3QzE5Ljk1IDExLjA0IDIwIDExLjUgMjAgMTJDMjAgMTYuNDMgMTYuNDMgMjAgMTIgMjBDNy41NyAyMCA0IDE2LjQzIDQgMTJDNCAxMS45NSA0IDExLjkxIDQgMTEuODZDNi42MSAxMC44OSA4LjY5IDguODggOS43NCA2LjMxQzExLjYxIDguNjEgMTQuNDQgMTAgMTcuNSAxMEMxNy45NCAxMCAxOC4zOSA5Ljk3IDE4LjgzIDkuOTFMMTcuOTYgOEMxNy44MSA4IDE3LjY1IDggMTcuNSA4QzE0LjY4IDggMTIuMSA2LjUgMTAuNjYgNC4xMkMxMS4xIDQuMDUgMTEuNTQgNCAxMiA0QzEyLjUgNCAxMi45NiA0LjA1IDEzLjQyIDQuMTNMMTYuMTMgMi45MUMxNC44NyAyLjMzIDEzLjQ3IDIgMTIgMk04LjA5IDVDNy40NiA2LjkxIDYuMTUgOC41IDQuNDEgOS41QzUuMDQgNy41NyA2LjM3IDYgOC4wOSA1TTkgMTEuNzVDOC4zMSAxMS43NSA3Ljc1IDEyLjMxIDcuNzUgMTNDNy43NSAxMy42OSA4LjMxIDE0LjI1IDkgMTQuMjVDOS42OSAxNC4yNSAxMC4yNSAxMy42OSAxMC4yNSAxM0MxMC4yNSAxMi4zMSA5LjY5IDExLjc1IDkgMTEuNzVNMTUgMTEuNzVDMTQuMzEgMTEuNzUgMTMuNzUgMTIuMzEgMTMuNzUgMTNDMTMuNzUgMTMuNjkgMTQuMzEgMTQuMjUgMTUgMTQuMjVDMTUuNjkgMTQuMjUgMTYuMjUgMTMuNjkgMTYuMjUgMTNDMTYuMjUgMTIuMzEgMTUuNjkgMTEuNzUgMTUgMTEuNzVNNCAxNy45N0M0LjU4IDE4Ljc0IDUuMjYgMTkuNDIgNi4wMyAyMEg0TTIwIDE3Ljk3VjIwSDE3Ljk3QzE4Ljc0IDE5LjQyIDE5LjQyIDE4Ljc0IDIwIDE3Ljk3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhY2Vib29rID0gXCJNMTIgMi4wNEM2LjUgMi4wNCAyIDYuNTMgMiAxMi4wNkMyIDE3LjA2IDUuNjYgMjEuMjEgMTAuNDQgMjEuOTZWMTQuOTZINy45VjEyLjA2SDEwLjQ0VjkuODVDMTAuNDQgNy4zNCAxMS45MyA1Ljk2IDE0LjIyIDUuOTZDMTUuMzEgNS45NiAxNi40NSA2LjE1IDE2LjQ1IDYuMTVWOC42MkgxNS4xOUMxMy45NSA4LjYyIDEzLjU2IDkuMzkgMTMuNTYgMTAuMThWMTIuMDZIMTYuMzRMMTUuODkgMTQuOTZIMTMuNTZWMjEuOTZBMTAgMTAgMCAwIDAgMjIgMTIuMDZDMjIgNi41MyAxNy41IDIuMDQgMTIgMi4wNFpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlYm9va0dhbWluZyA9IFwiTTkuNSAxNC41VjkuNUgyMVYyMUgxNS41VjE0LjVIOS41TTMgM0gyMUwyMSA4LjVIOC41VjE1LjVIMTQuNVYyMUgzVjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZWJvb2tNZXNzZW5nZXIgPSBcIk0xMiwyQzYuMzYsMiAyLDYuMTMgMiwxMS43QzIsMTQuNjEgMy4xOSwxNy4xNCA1LjE0LDE4Ljg3QzUuMywxOSA1LjQsMTkuMjIgNS40MSwxOS40NEw1LjQ2LDIxLjIyQzUuNSwyMS43OSA2LjA3LDIyLjE2IDYuNTksMjEuOTNMOC41NywyMS4wNkM4Ljc0LDIxIDguOTMsMjAuOTcgOS4xLDIxQzEwLDIxLjI3IDExLDIxLjQgMTIsMjEuNEMxNy42NCwyMS40IDIyLDE3LjI3IDIyLDExLjdDMjIsNi4xMyAxNy42NCwyIDEyLDJNMTgsOS40NkwxNS4wNywxNC4xM0MxNC42LDE0Ljg2IDEzLjYsMTUuMDUgMTIuOSwxNC41TDEwLjU2LDEyLjc3QzEwLjM1LDEyLjYxIDEwLjA1LDEyLjYxIDkuODQsMTIuNzdMNi42OCwxNS4xN0M2LjI2LDE1LjUgNS43MSwxNSA2LDE0LjU0TDguOTMsOS44N0M5LjQsOS4xNCAxMC40LDguOTUgMTEuMSw5LjQ3TDEzLjQ0LDExLjIzQzEzLjY2LDExLjM5IDEzLjk1LDExLjM5IDE0LjE2LDExLjIzTDE3LjMyLDguODNDMTcuNzQsOC41IDE4LjI5LDkgMTgsOS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlYm9va1dvcmtwbGFjZSA9IFwiTTE5LjY5LDE2LjEyQzE5LjQyLDE2LjQzIDE4Ljk1LDE2LjkyIDE4LjE5LDE2LjkyQzE3LjEzLDE2LjkyIDE2Ljc4LDE2LjE1IDE2LjQ2LDE1LjM0TDE0Ljg2LDExLjQxTDEzLjI2LDE1LjM0QzEzLDE2IDEyLjcsMTYuOTIgMTEuNTMsMTYuOTJDMTAuMzYsMTYuOTIgMTAuMDcsMTYgOS43OSwxNS4zNEw3LjExLDguNzJIOS4zN0wxMS41MywxNC4xN0wxMy4xNCwxMC4yQzEzLjM5LDkuNTcgMTMuNjksOC42MiAxNC44Niw4LjYyQzE2LDguNjIgMTYuMzIsOS41NyAxNi41OCwxMC4yTDE4LjMzLDE0LjVDMTkuMjIsMTMuMTQgMTkuNiwxMS41IDE5LjM4LDkuODlDMTkuMTYsOC4yOCAxOC4zNyw2LjggMTcuMTQsNS43M0MxNS45Miw0LjY2IDE0LjM0LDQuMDYgMTIuNzIsNC4wNkMxMS4wMyw0LjA1IDkuMzksNC41OCA4LDUuNTZDNi42Niw2LjU1IDUuNjQsNy45NCA1LjEyLDkuNTRDNC42LDExLjE0IDQuNiwxMi44NyA1LjEyLDE0LjQ3QzUuNjQsMTYuMDcgNi42NiwxNy40NiA4LjAzLDE4LjQ0QzkuNCwxOS40MyAxMS4wNCwxOS45NSAxMi43MiwxOS45NEMxMy40NSwxOS45NCAxNC4xNywxOS44NCAxNC44NywxOS42NFYyMS43NUMxNC4xNiwyMS45MSAxMy40NCwyMiAxMi43MiwyMkMxMC42MSwyMiA4LjU0LDIxLjM0IDYuODIsMjAuMUM1LjEsMTguODYgMy44MiwxNy4xMSAzLjE3LDE1LjFDMi41LDEzLjA5IDIuNSwxMC45MiAzLjE2LDguOUMzLjgyLDYuODkgNS4xLDUuMTQgNi44MiwzLjlDOC41MywyLjY2IDEwLjYsMiAxMi43MiwyQzE3LjU2LDIgMjEuNSw1Ljk0IDIxLjUsMTAuNzlDMjEuNSwxMi43MSAyMC44NiwxNC41OSAxOS42OSwxNi4xMlYxNi4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWN0b3J5ID0gXCJNNCwxOFYyMEg4VjE4SDRNNCwxNFYxNkgxNFYxNEg0TTEwLDE4VjIwSDE0VjE4SDEwTTE2LDE0VjE2SDIwVjE0SDE2TTE2LDE4VjIwSDIwVjE4SDE2TTIsMjJWOEw3LDEyVjhMMTIsMTJWOEwxNywxMkwxOCwySDIxTDIyLDEyVjIySDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFtaWx5VHJlZSA9IFwiTTEyIDFBMi41IDIuNSAwIDAgMCA5LjUgMy41QTIuNSAyLjUgMCAwIDAgMTEgNS43OVY3SDdBMiAyIDAgMCAwIDUgOVY5LjcxQTIuNSAyLjUgMCAwIDAgMy41IDEyQTIuNSAyLjUgMCAwIDAgNSAxNC4yOVYxNUg0QTIgMiAwIDAgMCAyIDE3VjE4LjIxQTIuNSAyLjUgMCAwIDAgLjUgMjAuNUEyLjUgMi41IDAgMCAwIDMgMjNBMi41IDIuNSAwIDAgMCA1LjUgMjAuNUEyLjUgMi41IDAgMCAwIDQgMTguMjFWMTdIOFYxOC4yMUEyLjUgMi41IDAgMCAwIDYuNSAyMC41QTIuNSAyLjUgMCAwIDAgOSAyM0EyLjUgMi41IDAgMCAwIDExLjUgMjAuNUEyLjUgMi41IDAgMCAwIDEwIDE4LjIxVjE3QTIgMiAwIDAgMCA4IDE1SDdWMTQuMjlBMi41IDIuNSAwIDAgMCA4LjUgMTJBMi41IDIuNSAwIDAgMCA3IDkuNzFWOUgxN1Y5LjcxQTIuNSAyLjUgMCAwIDAgMTUuNSAxMkEyLjUgMi41IDAgMCAwIDE3IDE0LjI5VjE1SDE2QTIgMiAwIDAgMCAxNCAxN1YxOC4yMUEyLjUgMi41IDAgMCAwIDEyLjUgMjAuNUEyLjUgMi41IDAgMCAwIDE1IDIzQTIuNSAyLjUgMCAwIDAgMTcuNSAyMC41QTIuNSAyLjUgMCAwIDAgMTYgMTguMjFWMTdIMjBWMTguMjFBMi41IDIuNSAwIDAgMCAxOC41IDIwLjVBMi41IDIuNSAwIDAgMCAyMSAyM0EyLjUgMi41IDAgMCAwIDIzLjUgMjAuNUEyLjUgMi41IDAgMCAwIDIyIDE4LjIxVjE3QTIgMiAwIDAgMCAyMCAxNUgxOVYxNC4yOUEyLjUgMi41IDAgMCAwIDIwLjUgMTJBMi41IDIuNSAwIDAgMCAxOSA5LjcxVjlBMiAyIDAgMCAwIDE3IDdIMTNWNS43OUEyLjUgMi41IDAgMCAwIDE0LjUgMy41QTIuNSAyLjUgMCAwIDAgMTIgMU0xMiAyLjVBMSAxIDAgMCAxIDEzIDMuNUExIDEgMCAwIDEgMTIgNC41QTEgMSAwIDAgMSAxMSAzLjVBMSAxIDAgMCAxIDEyIDIuNU02IDExQTEgMSAwIDAgMSA3IDEyQTEgMSAwIDAgMSA2IDEzQTEgMSAwIDAgMSA1IDEyQTEgMSAwIDAgMSA2IDExTTE4IDExQTEgMSAwIDAgMSAxOSAxMkExIDEgMCAwIDEgMTggMTNBMSAxIDAgMCAxIDE3IDEyQTEgMSAwIDAgMSAxOCAxMU0zIDE5LjVBMSAxIDAgMCAxIDQgMjAuNUExIDEgMCAwIDEgMyAyMS41QTEgMSAwIDAgMSAyIDIwLjVBMSAxIDAgMCAxIDMgMTkuNU05IDE5LjVBMSAxIDAgMCAxIDEwIDIwLjVBMSAxIDAgMCAxIDkgMjEuNUExIDEgMCAwIDEgOCAyMC41QTEgMSAwIDAgMSA5IDE5LjVNMTUgMTkuNUExIDEgMCAwIDEgMTYgMjAuNUExIDEgMCAwIDEgMTUgMjEuNUExIDEgMCAwIDEgMTQgMjAuNUExIDEgMCAwIDEgMTUgMTkuNU0yMSAxOS41QTEgMSAwIDAgMSAyMiAyMC41QTEgMSAwIDAgMSAyMSAyMS41QTEgMSAwIDAgMSAyMCAyMC41QTEgMSAwIDAgMSAyMSAxOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhbiA9IFwiTTEyLDExQTEsMSAwIDAsMCAxMSwxMkExLDEgMCAwLDAgMTIsMTNBMSwxIDAgMCwwIDEzLDEyQTEsMSAwIDAsMCAxMiwxMU0xMi41LDJDMTcsMiAxNy4xMSw1LjU3IDE0Ljc1LDYuNzVDMTMuNzYsNy4yNCAxMy4zMiw4LjI5IDEzLjEzLDkuMjJDMTMuNjEsOS40MiAxNC4wMyw5LjczIDE0LjM1LDEwLjEzQzE4LjA1LDguMTMgMjIuMDMsOC45MiAyMi4wMywxMi41QzIyLjAzLDE3IDE4LjQ2LDE3LjEgMTcuMjgsMTQuNzNDMTYuNzgsMTMuNzQgMTUuNzIsMTMuMyAxNC43OSwxMy4xMUMxNC41OSwxMy41OSAxNC4yOCwxNCAxMy44OCwxNC4zNEMxNS44NywxOC4wMyAxNS4wOCwyMiAxMS41LDIyQzcsMjIgNi45MSwxOC40MiA5LjI3LDE3LjI0QzEwLjI1LDE2Ljc1IDEwLjY5LDE1LjcxIDEwLjg5LDE0Ljc5QzEwLjQsMTQuNTkgOS45NywxNC4yNyA5LjY1LDEzLjg3QzUuOTYsMTUuODUgMiwxNS4wNyAyLDExLjVDMiw3IDUuNTYsNi44OSA2Ljc0LDkuMjZDNy4yNCwxMC4yNSA4LjI5LDEwLjY4IDkuMjIsMTAuODdDOS40MSwxMC4zOSA5LjczLDkuOTcgMTAuMTQsOS42NUM4LjE1LDUuOTYgOC45NCwyIDEyLjUsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5BbGVydCA9IFwiTTEwIDExQzkuNDMgMTEgOSAxMS40NSA5IDEyUzkuNDMgMTMgMTAgMTNDMTAuNTQgMTMgMTEgMTIuNTUgMTEgMTJTMTAuNTQgMTEgMTAgMTFNMTAuNSAyQzE1IDIgMTUuMDkgNS41NyAxMi43MyA2Ljc1QzExLjc0IDcuMjQgMTEuMyA4LjI5IDExLjExIDkuMjJDMTEuNTkgOS40MiAxMiA5LjczIDEyLjMzIDEwLjEzQzE2LjAzIDguMTMgMjAgOC45MiAyMCAxMi41QzIwIDE3IDE2LjQzIDE3LjEgMTUuMjYgMTQuNzNDMTQuNzYgMTMuNzQgMTMuNyAxMy4zIDEyLjc3IDEzLjExQzEyLjU3IDEzLjU5IDEyLjI2IDE0IDExLjg2IDE0LjM0QzEzLjg1IDE4LjAzIDEzLjA2IDIyIDkuNSAyMkM1IDIyIDQuOSAxOC40MiA3LjI2IDE3LjI0QzguMjQgMTYuNzUgOC42OCAxNS43MSA4Ljg4IDE0Ljc5QzguMzkgMTQuNTkgNy45NiAxNC4yNyA3LjY0IDEzLjg3QzMuOTUgMTUuODUgMCAxNS4wNyAwIDExLjVDMCA3IDMuNTYgNi44OSA0LjczIDkuMjZDNS4yMyAxMC4yNSA2LjI4IDEwLjY4IDcuMjEgMTAuODdDNy40IDEwLjM5IDcuNzIgOS45NyA4LjEzIDkuNjVDNi4xNCA1Ljk2IDYuOTMgMiAxMC41IDJNMjIgMTNWN0gyNFYxM0gyMk0yMiAxN1YxNUgyNFYxN0gyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5BdXRvID0gXCJNMTIuNSAyQzguOTMgMiA4LjE0IDUuOTYgMTAuMTMgOS42NUM5LjcyIDkuOTcgOS40IDEwLjM5IDkuMjEgMTAuODdDOC4yOCAxMC42OCA3LjIzIDEwLjI1IDYuNzMgOS4yNkM1LjU2IDYuODkgMiA3IDIgMTEuNUMyIDE1LjA3IDUuOTUgMTUuODUgOS42NCAxMy44N0M5Ljk2IDE0LjI3IDEwLjM5IDE0LjU5IDEwLjg4IDE0Ljc5QzEwLjY4IDE1LjcxIDEwLjI0IDE2Ljc1IDkuMjYgMTcuMjRDNi45IDE4LjQyIDcgMjIgMTEuNSAyMkMxMi4zMSAyMiAxMyAyMS43OCAxMy41IDIxLjQxQzEzLjE5IDIwLjY3IDEzIDE5Ljg2IDEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMk0xMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMkMxMyAxMi41NSAxMi41NCAxMyAxMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMkMxMSAxMS40NSAxMS40MyAxMSAxMiAxMU0xOCAxNUMxNi44OSAxNSAxNiAxNS45IDE2IDE3VjIzSDE4VjIxSDIwVjIzSDIyVjE3QzIyIDE1LjkgMjEuMSAxNSAyMCAxNU0xOCAxN0gyMFYxOUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5DaGV2cm9uRG93biA9IFwiTTEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMkM4LjkzIDIgOC4xNCA1Ljk2IDEwLjEzIDkuNjVDOS43MiA5Ljk3IDkuNCAxMC4zOSA5LjIxIDEwLjg3QzguMjggMTAuNjggNy4yMyAxMC4yNSA2LjczIDkuMjZDNS41NiA2Ljg5IDIgNyAyIDExLjVDMiAxNS4wNyA1Ljk1IDE1Ljg1IDkuNjQgMTMuODdDOS45NiAxNC4yNyAxMC4zOSAxNC41OSAxMC44OCAxNC43OUMxMC42OCAxNS43MSAxMC4yNCAxNi43NSA5LjI2IDE3LjI0QzYuOSAxOC40MiA3IDIyIDExLjUgMjJDMTIuMzEgMjIgMTMgMjEuNzggMTMuNSAyMS40MUMxMy4xOSAyMC42NyAxMyAxOS44NiAxMyAxOU0xMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMlMxMS40MyAxMSAxMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMlMxMi41NCAxMyAxMiAxM00xOSAxOS4xN0wyMi4xNyAxNkwyMy41OSAxNy40MUwxOSAyMkwxNC40MSAxNy40MUwxNS44MyAxNkwxOSAxOS4xN1wiO1xyXG5leHBvcnQgdmFyIG1kaUZhbkNoZXZyb25VcCA9IFwiTTEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMkM4LjkzIDIgOC4xNCA1Ljk2IDEwLjEzIDkuNjVDOS43MiA5Ljk3IDkuNCAxMC4zOSA5LjIxIDEwLjg3QzguMjggMTAuNjggNy4yMyAxMC4yNSA2LjczIDkuMjZDNS41NiA2Ljg5IDIgNyAyIDExLjVDMiAxNS4wNyA1Ljk1IDE1Ljg1IDkuNjQgMTMuODdDOS45NiAxNC4yNyAxMC4zOSAxNC41OSAxMC44OCAxNC43OUMxMC42OCAxNS43MSAxMC4yNCAxNi43NSA5LjI2IDE3LjI0QzYuOSAxOC40MiA3IDIyIDExLjUgMjJDMTIuMzEgMjIgMTMgMjEuNzggMTMuNSAyMS40MUMxMy4xOSAyMC42NyAxMyAxOS44NiAxMyAxOU0xMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMlMxMS40MyAxMSAxMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMlMxMi41NCAxMyAxMiAxM00xOSAxNy44M0wxNS44MyAyMUwxNC40MSAxOS41OUwxOSAxNUwyMy41OSAxOS41OUwyMi4xNyAyMUwxOSAxNy44M1wiO1xyXG5leHBvcnQgdmFyIG1kaUZhbk1pbnVzID0gXCJNMTMgMTlDMTMgMTcuNTkgMTMuNSAxNi4zIDE0LjMgMTUuMjhDMTQuMTcgMTQuOTcgMTQuMDMgMTQuNjUgMTMuODYgMTQuMzRDMTQuMjYgMTQgMTQuNTcgMTMuNTkgMTQuNzcgMTMuMTFDMTUuMjYgMTMuMjEgMTUuNzggMTMuMzkgMTYuMjUgMTMuNjdDMTcuMDcgMTMuMjUgMTggMTMgMTkgMTNDMjAuMDUgMTMgMjEuMDMgMTMuMjcgMjEuODkgMTMuNzRDMjEuOTUgMTMuMzcgMjIgMTIuOTYgMjIgMTIuNUMyMiA4LjkyIDE4LjAzIDguMTMgMTQuMzMgMTAuMTNDMTQgOS43MyAxMy41OSA5LjQyIDEzLjExIDkuMjJDMTMuMyA4LjI5IDEzLjc0IDcuMjQgMTQuNzMgNi43NUMxNy4wOSA1LjU3IDE3IDIgMTIuNSAyQzguOTMgMiA4LjE0IDUuOTYgMTAuMTMgOS42NUM5LjcyIDkuOTcgOS40IDEwLjM5IDkuMjEgMTAuODdDOC4yOCAxMC42OCA3LjIzIDEwLjI1IDYuNzMgOS4yNkM1LjU2IDYuODkgMiA3IDIgMTEuNUMyIDE1LjA3IDUuOTUgMTUuODUgOS42NCAxMy44N0M5Ljk2IDE0LjI3IDEwLjM5IDE0LjU5IDEwLjg4IDE0Ljc5QzEwLjY4IDE1LjcxIDEwLjI0IDE2Ljc1IDkuMjYgMTcuMjRDNi45IDE4LjQyIDcgMjIgMTEuNSAyMkMxMi4zMSAyMiAxMyAyMS43OCAxMy41IDIxLjQxQzEzLjE5IDIwLjY3IDEzIDE5Ljg2IDEzIDE5TTEyIDEzQzExLjQzIDEzIDExIDEyLjU1IDExIDEyUzExLjQzIDExIDEyIDExQzEyLjU0IDExIDEzIDExLjQ1IDEzIDEyUzEyLjU0IDEzIDEyIDEzTTIzIDE4VjIwSDE1VjE4SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhbk9mZiA9IFwiTTEyLjUsMkM5LjY0LDIgOC41Nyw0LjU1IDkuMjksNy40N0wxNSwxMy4xNkMxNS44NywxMy4zNyAxNi44MSwxMy44MSAxNy4yOCwxNC43M0MxOC40NiwxNy4xIDIyLjAzLDE3IDIyLjAzLDEyLjVDMjIuMDMsOC45MiAxOC4wNSw4LjEzIDE0LjM1LDEwLjEzQzE0LjAzLDkuNzMgMTMuNjEsOS40MiAxMy4xMyw5LjIyQzEzLjMyLDguMjkgMTMuNzYsNy4yNCAxNC43NSw2Ljc1QzE3LjExLDUuNTcgMTcsMiAxMi41LDJNMy4yOCw0TDIsNS4yN0w0LjQ3LDcuNzNDMy4yMiw3Ljc0IDIsOC44NyAyLDExLjVDMiwxNS4wNyA1Ljk2LDE1Ljg1IDkuNjUsMTMuODdDOS45NywxNC4yNyAxMC40LDE0LjU5IDEwLjg5LDE0Ljc5QzEwLjY5LDE1LjcxIDEwLjI1LDE2Ljc1IDkuMjcsMTcuMjRDNi45MSwxOC40MiA3LDIyIDExLjUsMjJDMTMuOCwyMiAxNC45NCwyMC4zNiAxNC45NCwxOC4yMUwxOC43MywyMkwyMCwyMC43MkwzLjI4LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFuUGx1cyA9IFwiTTEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMkM4LjkzIDIgOC4xNCA1Ljk2IDEwLjEzIDkuNjVDOS43MiA5Ljk3IDkuNCAxMC4zOSA5LjIxIDEwLjg3QzguMjggMTAuNjggNy4yMyAxMC4yNSA2LjczIDkuMjZDNS41NiA2Ljg5IDIgNyAyIDExLjVDMiAxNS4wNyA1Ljk1IDE1Ljg1IDkuNjQgMTMuODdDOS45NiAxNC4yNyAxMC4zOSAxNC41OSAxMC44OCAxNC43OUMxMC42OCAxNS43MSAxMC4yNCAxNi43NSA5LjI2IDE3LjI0QzYuOSAxOC40MiA3IDIyIDExLjUgMjJDMTIuMzEgMjIgMTMgMjEuNzggMTMuNSAyMS40MUMxMy4xOSAyMC42NyAxMyAxOS44NiAxMyAxOU0xMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMlMxMS40MyAxMSAxMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMlMxMi41NCAxMyAxMiAxM00yMCAxNVYxOEgyM1YyMEgyMFYyM0gxOFYyMEgxNVYxOEgxOFYxNUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5SZW1vdmUgPSBcIk0xMyAxOUMxMyAxNy41OSAxMy41IDE2LjMgMTQuMyAxNS4yOEMxNC4xNyAxNC45NyAxNC4wMyAxNC42NSAxMy44NiAxNC4zNEMxNC4yNiAxNCAxNC41NyAxMy41OSAxNC43NyAxMy4xMUMxNS4yNiAxMy4yMSAxNS43OCAxMy4zOSAxNi4yNSAxMy42N0MxNy4wNyAxMy4yNSAxOCAxMyAxOSAxM0MyMC4wNSAxMyAyMS4wMyAxMy4yNyAyMS44OSAxMy43NEMyMS45NSAxMy4zNyAyMiAxMi45NiAyMiAxMi41QzIyIDguOTIgMTguMDMgOC4xMyAxNC4zMyAxMC4xM0MxNCA5LjczIDEzLjU5IDkuNDIgMTMuMTEgOS4yMkMxMy4zIDguMjkgMTMuNzQgNy4yNCAxNC43MyA2Ljc1QzE3LjA5IDUuNTcgMTcgMiAxMi41IDJDOC45MyAyIDguMTQgNS45NiAxMC4xMyA5LjY1QzkuNzIgOS45NyA5LjQgMTAuMzkgOS4yMSAxMC44N0M4LjI4IDEwLjY4IDcuMjMgMTAuMjUgNi43MyA5LjI2QzUuNTYgNi44OSAyIDcgMiAxMS41QzIgMTUuMDcgNS45NSAxNS44NSA5LjY0IDEzLjg3QzkuOTYgMTQuMjcgMTAuMzkgMTQuNTkgMTAuODggMTQuNzlDMTAuNjggMTUuNzEgMTAuMjQgMTYuNzUgOS4yNiAxNy4yNEM2LjkgMTguNDIgNyAyMiAxMS41IDIyQzEyLjMxIDIyIDEzIDIxLjc4IDEzLjUgMjEuNDFDMTMuMTkgMjAuNjcgMTMgMTkuODYgMTMgMTlNMTIgMTNDMTEuNDMgMTMgMTEgMTIuNTUgMTEgMTJTMTEuNDMgMTEgMTIgMTFDMTIuNTQgMTEgMTMgMTEuNDUgMTMgMTJTMTIuNTQgMTMgMTIgMTNNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDdMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFuU3BlZWQxID0gXCJNMTMgMTlDMTMgMTcuNTkgMTMuNSAxNi4zIDE0LjMgMTUuMjhDMTQuMTcgMTQuOTcgMTQuMDMgMTQuNjUgMTMuODYgMTQuMzRDMTQuMjYgMTQgMTQuNTcgMTMuNTkgMTQuNzcgMTMuMTFDMTUuMjYgMTMuMjEgMTUuNzggMTMuMzkgMTYuMjUgMTMuNjdDMTcuMDcgMTMuMjUgMTggMTMgMTkgMTNDMjAuMDUgMTMgMjEuMDMgMTMuMjcgMjEuODkgMTMuNzRDMjEuOTUgMTMuMzcgMjIgMTIuOTYgMjIgMTIuNUMyMiA4LjkyIDE4LjAzIDguMTMgMTQuMzMgMTAuMTNDMTQgOS43MyAxMy41OSA5LjQyIDEzLjExIDkuMjJDMTMuMyA4LjI5IDEzLjc0IDcuMjQgMTQuNzMgNi43NUMxNy4wOSA1LjU3IDE3IDIgMTIuNSAyQzguOTMgMiA4LjE0IDUuOTYgMTAuMTMgOS42NUM5LjcyIDkuOTcgOS40IDEwLjM5IDkuMjEgMTAuODdDOC4yOCAxMC42OCA3LjIzIDEwLjI1IDYuNzMgOS4yNkM1LjU2IDYuODkgMiA3IDIgMTEuNUMyIDE1LjA3IDUuOTUgMTUuODUgOS42NCAxMy44N0M5Ljk2IDE0LjI3IDEwLjM5IDE0LjU5IDEwLjg4IDE0Ljc5QzEwLjY4IDE1LjcxIDEwLjI0IDE2Ljc1IDkuMjYgMTcuMjRDNi45IDE4LjQyIDcgMjIgMTEuNSAyMkMxMi4zMSAyMiAxMyAyMS43OCAxMy41IDIxLjQxQzEzLjE5IDIwLjY3IDEzIDE5Ljg2IDEzIDE5TTEyIDEzQzExLjQzIDEzIDExIDEyLjU1IDExIDEyUzExLjQzIDExIDEyIDExQzEyLjU0IDExIDEzIDExLjQ1IDEzIDEyUzEyLjU0IDEzIDEyIDEzTTE3IDE1VjE3SDE4VjIzSDIwVjE1SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhblNwZWVkMiA9IFwiTTEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMkM4LjkzIDIgOC4xNCA1Ljk2IDEwLjEzIDkuNjVDOS43MiA5Ljk3IDkuNCAxMC4zOSA5LjIxIDEwLjg3QzguMjggMTAuNjggNy4yMyAxMC4yNSA2LjczIDkuMjZDNS41NiA2Ljg5IDIgNyAyIDExLjVDMiAxNS4wNyA1Ljk1IDE1Ljg1IDkuNjQgMTMuODdDOS45NiAxNC4yNyAxMC4zOSAxNC41OSAxMC44OCAxNC43OUMxMC42OCAxNS43MSAxMC4yNCAxNi43NSA5LjI2IDE3LjI0QzYuOSAxOC40MiA3IDIyIDExLjUgMjJDMTIuMzEgMjIgMTMgMjEuNzggMTMuNSAyMS40MUMxMy4xOSAyMC42NyAxMyAxOS44NiAxMyAxOU0xMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMlMxMS40MyAxMSAxMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMlMxMi41NCAxMyAxMiAxM00xNiAxNVYxN0gxOVYxOEgxOEMxNi45IDE4IDE2IDE4LjkgMTYgMjBWMjNIMjFWMjFIMThWMjBIMTlDMjAuMTEgMjAgMjEgMTkuMTEgMjEgMThWMTdDMjEgMTUuOSAyMC4xMSAxNSAxOSAxNUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5TcGVlZDMgPSBcIk0xMyAxOUMxMyAxNy41OSAxMy41IDE2LjMgMTQuMyAxNS4yOEMxNC4xNyAxNC45NyAxNC4wMyAxNC42NSAxMy44NiAxNC4zNEMxNC4yNiAxNCAxNC41NyAxMy41OSAxNC43NyAxMy4xMUMxNS4yNiAxMy4yMSAxNS43OCAxMy4zOSAxNi4yNSAxMy42N0MxNy4wNyAxMy4yNSAxOCAxMyAxOSAxM0MyMC4wNSAxMyAyMS4wMyAxMy4yNyAyMS44OSAxMy43NEMyMS45NSAxMy4zNyAyMiAxMi45NiAyMiAxMi41QzIyIDguOTIgMTguMDMgOC4xMyAxNC4zMyAxMC4xM0MxNCA5LjczIDEzLjU5IDkuNDIgMTMuMTEgOS4yMkMxMy4zIDguMjkgMTMuNzQgNy4yNCAxNC43MyA2Ljc1QzE3LjA5IDUuNTcgMTcgMiAxMi41IDJDOC45MyAyIDguMTQgNS45NiAxMC4xMyA5LjY1QzkuNzIgOS45NyA5LjQgMTAuMzkgOS4yMSAxMC44N0M4LjI4IDEwLjY4IDcuMjMgMTAuMjUgNi43MyA5LjI2QzUuNTYgNi44OSAyIDcgMiAxMS41QzIgMTUuMDcgNS45NSAxNS44NSA5LjY0IDEzLjg3QzkuOTYgMTQuMjcgMTAuMzkgMTQuNTkgMTAuODggMTQuNzlDMTAuNjggMTUuNzEgMTAuMjQgMTYuNzUgOS4yNiAxNy4yNEM2LjkgMTguNDIgNyAyMiAxMS41IDIyQzEyLjMxIDIyIDEzIDIxLjc4IDEzLjUgMjEuNDFDMTMuMTkgMjAuNjcgMTMgMTkuODYgMTMgMTlNMTIgMTNDMTEuNDMgMTMgMTEgMTIuNTUgMTEgMTJTMTEuNDMgMTEgMTIgMTFDMTIuNTQgMTEgMTMgMTEuNDUgMTMgMTJTMTIuNTQgMTMgMTIgMTNNMjEgMjFWMjAuNUMyMSAxOS42NyAyMC4zMyAxOSAxOS41IDE5QzIwLjMzIDE5IDIxIDE4LjMzIDIxIDE3LjVWMTdDMjEgMTUuODkgMjAuMSAxNSAxOSAxNUgxNlYxN0gxOVYxOEgxN1YyMEgxOVYyMUgxNlYyM0gxOUMyMC4xMSAyMyAyMSAyMi4xMSAyMSAyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUZhc3RGb3J3YXJkID0gXCJNMTMsNlYxOEwyMS41LDEyTTQsMThMMTIuNSwxMkw0LDZWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFzdEZvcndhcmQxMCA9IFwiTTEwLDEyVjIySDhWMTRINlYxMkgxME0xOCwxNFYyMEMxOCwyMS4xMSAxNy4xMSwyMiAxNiwyMkgxNEEyLDIgMCAwLDEgMTIsMjBWMTRBMiwyIDAgMCwxIDE0LDEySDE2QzE3LjExLDEyIDE4LDEyLjkgMTgsMTRNMTQsMTRWMjBIMTZWMTRIMTRNMTEuNSwzQzE0LjE1LDMgMTYuNTUsNCAxOC40LDUuNkwyMSwzVjEwSDE0TDE2LjYyLDcuMzhDMTUuMjMsNi4yMiAxMy40Niw1LjUgMTEuNSw1LjVDNy45Niw1LjUgNC45NSw3LjgxIDMuOSwxMUwxLjUzLDEwLjIyQzIuOTIsNi4wMyA2Ljg1LDMgMTEuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhc3RGb3J3YXJkMzAgPSBcIk0xMS41LDNDNi44NSwzIDIuOTIsNi4wMyAxLjUzLDEwLjIyTDMuOSwxMUM0Ljk1LDcuODEgNy45Niw1LjUgMTEuNSw1LjVDMTMuNDYsNS41IDE1LjIzLDYuMjIgMTYuNjIsNy4zOEwxNCwxMEgyMVYzTDE4LjQsNS42QzE2LjU1LDQgMTQuMTUsMyAxMS41LDNNMTksMTRWMjBDMTksMjEuMTEgMTguMTEsMjIgMTcsMjJIMTVBMiwyIDAgMCwxIDEzLDIwVjE0QTIsMiAwIDAsMSAxNSwxMkgxN0MxOC4xMSwxMiAxOSwxMi45IDE5LDE0TTE1LDE0VjIwSDE3VjE0SDE1TTExLDIwQzExLDIxLjExIDEwLjEsMjIgOSwyMkg1VjIwSDlWMThIN1YxNkg5VjE0SDVWMTJIOUEyLDIgMCAwLDEgMTEsMTRWMTUuNUExLjUsMS41IDAgMCwxIDkuNSwxN0ExLjUsMS41IDAgMCwxIDExLDE4LjVWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFzdEZvcndhcmQ1ID0gXCJNMTEuNSAzQzE0LjE1IDMgMTYuNTUgNCAxOC40IDUuNkwyMSAzVjEwSDE0TDE2LjYyIDcuMzhDMTUuMjMgNi4yMiAxMy40NiA1LjUgMTEuNSA1LjVDNy45NiA1LjUgNC45NSA3LjgxIDMuOSAxMUwxLjUzIDEwLjIyQzIuOTIgNi4wMyA2Ljg1IDMgMTEuNSAzTTkgMTJIMTVWMTRIMTFWMTZIMTNDMTQuMTEgMTYgMTUgMTYuOSAxNSAxOFYyMEMxNSAyMS4xMSAxNC4xMSAyMiAxMyAyMkg5VjIwSDEzVjE4SDlWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFzdEZvcndhcmQ2MCA9IFwiTTExLjUgM0M2LjggMyAyLjkgNiAxLjUgMTAuMkwzLjkgMTFDNC45IDcuOCA4IDUuNSAxMS41IDUuNUMxMy41IDUuNSAxNS4yIDYuMiAxNi42IDcuNEwxNCAxMEgyMVYzTDE4LjQgNS42QzE2LjUgNCAxNC4xIDMgMTEuNSAzTTE5IDE0VjIwQzE5IDIxLjEgMTguMSAyMiAxNyAyMkgxNUMxMy45IDIyIDEzIDIxLjEgMTMgMjBWMTRDMTMgMTIuOSAxMy45IDEyIDE1IDEySDE3QzE4LjEgMTIgMTkgMTIuOSAxOSAxNE0xNSAxNFYyMEgxN1YxNEgxNU03IDEyQzUuOSAxMiA1IDEyLjkgNSAxNFYyMEM1IDIxLjEgNS45IDIyIDcgMjJIOUMxMC4xIDIyIDExIDIxLjEgMTEgMjBWMThDMTEgMTYuOSAxMC4xIDE2IDkgMTZIN1YxNEgxMVYxMkg3TTcgMThIOVYyMEg3VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhc3RGb3J3YXJkT3V0bGluZSA9IFwiTTE1LDkuOUwxOCwxMkwxNSwxNC4xVjkuOU02LDkuOUw5LDEyTDYsMTQuMVY5LjlNMTMsNlYxOEwyMS41LDEyTDEzLDZNNCw2VjE4TDEyLjUsMTJMNCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZheCA9IFwiTTExLDZIMTZWOEgxMVY2TTgsOVYzSDE5VjlBMywzIDAgMCwxIDIyLDEyVjE4SDE5VjIxSDhWMThIN1Y5SDhNMTAsNVY5SDE3VjVIMTBNMTAsMTVWMTlIMTdWMTVIMTBNMTksMTFBMSwxIDAgMCwwIDE4LDEyQTEsMSAwIDAsMCAxOSwxM0ExLDEgMCAwLDAgMjAsMTJBMSwxIDAgMCwwIDE5LDExTTQsOUg1QTEsMSAwIDAsMSA2LDEwVjE3QTEsMSAwIDAsMSA1LDE4SDRBMiwyIDAgMCwxIDIsMTZWMTFBMiwyIDAgMCwxIDQsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGZWF0aGVyID0gXCJNMjIsMkMyMiwyIDE0LjM2LDEuNjMgOC4zNCw5Ljg4QzMuNzIsMTYuMjEgMiwyMiAyLDIyTDMuOTQsMjFDNS4zOCwxOC41IDYuMTMsMTcuNDcgNy41NCwxNkMxMC4wNywxNi43NCAxMi43MSwxNi42NSAxNSwxNEMxMywxMy40NCAxMS40LDEzLjU3IDkuMDQsMTMuODFDMTEuNjksMTIgMTMuNSwxMS42IDE2LDEyTDE3LDEwQzE1LjIsOS42NiAxNCw5LjYzIDEyLjIyLDEwLjA0QzE0LjE5LDguNjUgMTUuNTYsNy44NyAxOCw4TDE5LjIxLDYuMDdDMTcuNjUsNS45NiAxNi43MSw2LjEzIDE0LjkyLDYuNTdDMTYuNTMsNS4xMSAxOCw0LjQ1IDIwLjE0LDQuMzJDMjAuMTQsNC4zMiAyMS4xOSwyLjQzIDIyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVhdHVyZVNlYXJjaCA9IFwiTTIwLDIwQTIsMiAwIDAsMSAxOCwyMkg0QTIsMiAwIDAsMSAyLDIwVjZBMiwyIDAgMCwxIDQsNEg5LjVDOS4yLDQuOCA5LDUuNiA5LDYuNUM5LDEwLjEgMTEuOSwxMyAxNS41LDEzQzE2LjMsMTMgMTcsMTIuOSAxNy42LDEyLjZMMjAsMTVWMjBNMTkuMyw4LjlDMTkuNyw4LjIgMjAsNy40IDIwLDYuNUMyMCw0IDE4LDIgMTUuNSwyQzEzLDIgMTEsNCAxMSw2LjVDMTEsOSAxMywxMSAxNS41LDExQzE2LjQsMTEgMTcuMiwxMC43IDE3LjksMTAuM0wyMSwxMy40TDIyLjQsMTJMMTkuMyw4LjlNMTUuNSw5QzE0LjEsOSAxMyw3LjkgMTMsNi41QzEzLDUuMSAxNC4xLDQgMTUuNSw0QzE2LjksNCAxOCw1LjEgMTgsNi41QzE4LDcuOSAxNi45LDkgMTUuNSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZlYXR1cmVTZWFyY2hPdXRsaW5lID0gXCJNMTUuNSwyQzEzLDIgMTEsNCAxMSw2LjVDMTEsOSAxMywxMSAxNS41LDExQzE2LjQsMTEgMTcuMiwxMC43IDE3LjksMTAuM0wyMSwxMy40TDIyLjQsMTJMMTkuMyw4LjlDMTkuNyw4LjIgMjAsNy40IDIwLDYuNUMyMCw0IDE4LDIgMTUuNSwyTTQsNEEyLDIgMCAwLDAgMiw2VjIwQTIsMiAwIDAsMCA0LDIySDE4QTIsMiAwIDAsMCAyMCwyMFYxNUwxOCwxM1YyMEg0VjZIOS4wM0M5LjA5LDUuMyA5LjI2LDQuNjUgOS41LDRINE0xNS41LDRDMTYuOSw0IDE4LDUuMSAxOCw2LjVDMTgsNy45IDE2LjksOSAxNS41LDlDMTQuMSw5IDEzLDcuOSAxMyw2LjVDMTMsNS4xIDE0LjEsNCAxNS41LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVkb3JhID0gXCJNNC40LDIyQzMuMDcsMjIgMiwyMC45MyAyLDE5LjZWMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkg0LjRNMTQuOSw0LjRDMTIuMyw0LjQgMTAuMiw2LjUgMTAuMiw5LjFWMTEuNkg4LjNDNy42OSwxMS42IDcuMiwxMi4wOSA3LjIsMTIuN0M3LjIsMTMuMzEgNy42OSwxMy44IDguMywxMy44SDkuOEMxMCwxMy44IDEwLjIsMTQgMTAuMiwxNC4yVjE2LjNDMTAuMiwxNy42OCA5LjA4LDE4LjggNy43LDE4LjhDNy41NSwxOC44IDcuNDEsMTguNzkgNy4yNywxOC43NkM3LjE5LDE4Ljc0IDcuMSwxOC43MyA3LDE4LjczQzYuNDEsMTguNzMgNS45MSwxOS4yMyA1LjkxLDE5LjgzQzUuOTEsMjAuMzcgNi4zLDIwLjgxIDYuOCwyMC45MVYyMC45MUM3LjA5LDIwLjk3IDcuMzksMjEgNy43LDIxQzEwLjMsMjEgMTIuNCwxOC45IDEyLjQsMTYuM1YxMy44SDE0LjNDMTQuOTEsMTMuOCAxNS40LDEzLjMxIDE1LjQsMTIuN0ExLjEsMS4xIDAgMCwwIDE0LjMsMTEuNkgxMi44QTAuNCwwLjQgMCAwLDEgMTIuNCwxMS4yVjkuMUEyLjUsMi41IDAgMCwxIDE0LjksNi42QzE1LjA1LDYuNiAxNS4yLDYuNjEgMTUuMzQsNi42NEMxNS40Miw2LjY2IDE1LjUsNi42NyAxNS41OSw2LjY3QzE2LjE5LDYuNjcgMTYuNjksNi4xNyAxNi42OSw1LjU3QzE2LjY5LDUuMDMgMTYuMyw0LjU4IDE1LjgsNC41VjQuNUMxNS41LDQuNDMgMTUuMjEsNC40IDE0LjksNC40TTYuOCwxMi43QzYuOCwxMi41OCA2LjgxLDEyLjQ2IDYuODQsMTIuMzRMNi4zMSwxMS44MUM2LjEsMTEuODcgNS44OSwxMS45NSA1LjcsMTIuMDVMNi45MSwxMy4yNkM2Ljg0LDEzLjA4IDYuOCwxMi45IDYuOCwxMi43TTYuNTQsMTguNUg2LjQ3TDYuNSwxOC41SDYuNTRNNS42MSwxOS44M0M1LjYxLDE5LjYgNS42NywxOS4zOCA1Ljc3LDE5LjE5TDMsMTYuNDJDMywxNi43NiAzLjA1LDE3LjA4IDMuMTMsMTcuNEw1LjYxLDE5Ljg4VjE5LjgzTTUuODYsMjAuNjNDNS43NywyMC41IDUuNzEsMjAuMzcgNS42NywyMC4yMkwzLjI0LDE3Ljc5QzMuNjcsMTkuMDcgNC42MywyMC4xIDUuODYsMjAuNjNNMTUuOCwxMi43QzE1LjgsMTIuODIgMTUuNzksMTIuOTQgMTUuNzYsMTMuMDZMMTYuMjksMTMuNTlDMTYuNSwxMy41MyAxNi43MSwxMy40NSAxNi45LDEzLjM1TDE1LjY5LDEyLjE0QzE1Ljc2LDEyLjMyIDE1LjgsMTIuNSAxNS44LDEyLjdNMTYuMDYsNi44OEwxNi4xMyw2LjkyTDE2LjA4LDYuODhIMTYuMDZNMTcsNS41N0MxNyw1LjggMTYuOTMsNiAxNi44Myw2LjIxTDE5LjYsOUMxOS41OSw4LjY0IDE5LjU1LDguMzIgMTkuNDcsOEwxNyw1LjVWNS41N00xNi43NCw0Ljc3QzE2LjgzLDQuOSAxNi44OSw1LjAzIDE2LjkzLDUuMThMMTkuMzYsNy42MUMxOC45Myw2LjMzIDE3Ljk3LDUuMyAxNi43NCw0Ljc3TTE2LjA3LDEzLjY1TDE1LjY5LDEzLjI3QzE1LjYxLDEzLjQ2IDE1LjUsMTMuNjMgMTUuMzUsMTMuNzhWMTMuNzhDMTUuNiwxMy43NiAxNS44NCwxMy43MSAxNi4wNywxMy42NU0xOC4yMywxMi40MkwxNi42NywxMC44NkMxNi41MywxMSAxNi4zNywxMS4xMyAxNi4yLDExLjI0TDE3Ljc4LDEyLjgyQzE3Ljk0LDEyLjY5IDE4LjA5LDEyLjU2IDE4LjIzLDEyLjQyTTE3LjYyLDEyLjk0TDE2LDExLjM0QzE1LjgyLDExLjQ0IDE1LjYxLDExLjUgMTUuMzksMTEuNTVMMTcuMDksMTMuMjZDMTcuMjcsMTMuMTYgMTcuNDUsMTMuMDUgMTcuNjIsMTIuOTRNMTguNzUsMTEuOEwxNy4xNSwxMC4yQzE3LjA1LDEwLjM5IDE2Ljk0LDEwLjU2IDE2LjgxLDEwLjcxTDE4LjM3LDEyLjI3QzE4LjUsMTIuMTIgMTguNjMsMTEuOTcgMTguNzUsMTEuOE0xOS4xNiwxMS4wOUwxNy4zOSw5LjMyQzE3LjM3LDkuNTYgMTcuMzIsOS43OSAxNy4yMywxMEwxOC44NiwxMS42M0MxOC45NywxMS40NiAxOS4wNywxMS4yOCAxOS4xNiwxMS4wOU0xOS42LDkuMjZMMTYuNzIsNi4zOEMxNi42LDYuNTUgMTYuNDUsNi42OSAxNi4yOCw2Ljc5TDE5LjUsMTBDMTkuNTYsOS43NyAxOS41OSw5LjUgMTkuNiw5LjI2TTE5LjQ2LDEwLjI1TDE3LjA4LDcuODdDMTcuMjcsOC4yMiAxNy4zOSw4LjYyIDE3LjQsOS4wNEwxOS4yNSwxMC44OUMxOS4zMywxMC42OCAxOS40LDEwLjQ3IDE5LjQ2LDEwLjI1TTQuODIsMTIuNThDNC42NiwxMi43MSA0LjUsMTIuODQgNC4zNywxM0w1LjkzLDE0LjU0QzYuMDcsMTQuNCA2LjIzLDE0LjI3IDYuNCwxNC4xNkw0LjgyLDEyLjU4TTUuNSwxMi4xNEM1LjMzLDEyLjI0IDUuMTUsMTIuMzUgNSwxMi40Nkw2LjU4LDE0LjA2QzYuNzgsMTMuOTYgNywxMy44OSA3LjIxLDEzLjg1TDUuNSwxMi4xNE03LjI1LDExLjYyQzcsMTEuNjQgNi43NiwxMS42OSA2LjUzLDExLjc1TDYuOTEsMTIuMTNDNywxMS45NCA3LjExLDExLjc3IDcuMjUsMTEuNjJWMTEuNjJNMy4wOSwxNS4zOEMzLjA0LDE1LjYzIDMsMTUuODggMywxNi4xNEw1Ljg4LDE5QzYsMTguODUgNi4xNSwxOC43MSA2LjMyLDE4LjYxTDMuMDksMTUuMzhNMy43NCwxMy43N0MzLjYzLDEzLjk0IDMuNTMsMTQuMTIgMy40NCwxNC4zMUw1LjIxLDE2LjA4QzUuMjMsMTUuODQgNS4yOCwxNS42MSA1LjM3LDE1LjRMMy43NCwxMy43N00zLjM1LDE0LjVDMy4yNywxNC43MiAzLjIsMTQuOTMgMy4xNCwxNS4xNUw1LjUsMTcuNTNDNS4zMywxNy4xOCA1LjIxLDE2Ljc4IDUuMiwxNi4zNkwzLjM1LDE0LjVNNC4yMywxMy4xM0M0LjEsMTMuMjggMy45NywxMy40MyAzLjg1LDEzLjZMNS40NSwxNS4yQzUuNTUsMTUgNS42NiwxNC44NCA1Ljc5LDE0LjY5TDQuMjMsMTMuMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVuY2luZyA9IFwiTTQuNSAxNy40Mkw1LjU4IDE4LjVMMy4yOCAyMC43OEMzIDIxLjA3IDIuNSAyMS4wNyAyLjIyIDIwLjc4UzEuOTMgMjAgMi4yMiAxOS43Mkw0LjUgMTcuNDJNMTguMjkgNS40MkwxOC4yOSA0TDEyIDEwLjI5TDUuNzEgNEw1LjcxIDUuNDJMMTEuMjkgMTFMNy41IDE0LjgxQzYuMzIgMTMuOTcgNC42OCAxNC4wNyAzLjYzIDE1LjEyTDcuODggMTkuMzdDOC45MyAxOC4zMiA5LjAzIDE2LjY4IDguMiAxNS41TDE4LjI5IDUuNDJNMjEuNzggMTkuNzJMMTkuNSAxNy40MkwxOC40MiAxOC41TDIwLjcyIDIwLjc4QzIxIDIxLjA3IDIxLjUgMjEuMDcgMjEuNzggMjAuNzhTMjIuMDcgMjAgMjEuNzggMTkuNzJNMTYuNSAxNC44MUwxMy40MiAxMS43MUwxMi43MSAxMi40MkwxNS44MSAxNS41QzE0Ljk3IDE2LjY4IDE1LjA3IDE4LjMyIDE2LjEyIDE5LjM3TDIwLjM3IDE1LjEyQzE5LjMyIDE0LjA3IDE3LjY4IDEzLjk3IDE2LjUgMTQuODFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVycmlzV2hlZWwgPSBcIk0xMiwxOUMxMi44NiwxOSAxMy41OSwxOS41NCAxMy44NywyMC4yOUMxNC40MiwyMC4xNyAxNC45NSwyMCAxNS40NiwxOS43N0wxMy43LDE1LjYyQzEzLjE4LDE1Ljg3IDEyLjYxLDE2IDEyLDE2QzExLjM5LDE2IDEwLjgyLDE1Ljg3IDEwLjMsMTUuNjJMOC41NCwxOS43N0M5LjA1LDIwIDkuNTgsMjAuMTcgMTAuMTMsMjAuMjlDMTAuNDEsMTkuNTQgMTEuMTQsMTkgMTIsMTlNMTguMjUsMTcuNzZDMTgsMTcuNDIgMTcuODEsMTcgMTcuODEsMTYuNUMxNy44MSwxNS40MSAxOC43MSwxNC41IDE5LjgxLDE0LjVMMjAuMTIsMTQuNTNDMjAuMzcsMTMuNzMgMjAuNSwxMi44OCAyMC41LDEyQzIwLjUsMTEuMTIgMjAuMzcsMTAuMjcgMjAuMTIsOS41SDE5LjgxQzE4LjcsOS41IDE3LjgxLDguNjEgMTcuODEsNy41QzE3LjgxLDcgMTcuOTcsNi41OSAxOC4yNSw2LjI0QzE3LjEsNSAxNS41OSw0LjA5IDEzLjg3LDMuNzFDMTMuNTksNC40NiAxMi44Niw1IDEyLDVDMTEuMTQsNSAxMC40MSw0LjQ2IDEwLjEzLDMuNzFDOC40MSw0LjA5IDYuOSw1IDUuNzUsNi4yNEM2LjAzLDYuNTkgNi4yLDcuMDMgNi4yLDcuNUM2LjIsOC42MSA1LjMsOS41IDQuMiw5LjVIMy44OEMzLjYzLDEwLjI4IDMuNSwxMS4xMiAzLjUsMTJDMy41LDEyLjg5IDMuNjQsMTMuNzQgMy44OSwxNC41NUw0LjIsMTQuNUM1LjMxLDE0LjUgNi4yLDE1LjQyIDYuMiwxNi41QzYuMiwxNyA2LjA0LDE3LjQzIDUuNzYsMTcuNzdDNi4wOCwxOC4xMiA2LjQ0LDE4LjQ0IDYuODEsMTguNzNMOC43MSwxNC4yN0M4LjI2LDEzLjYyIDgsMTIuODQgOCwxMkE0LDQgMCAwLDEgMTIsOEE0LDQgMCAwLDEgMTYsMTJDMTYsMTIuODQgMTUuNzQsMTMuNjIgMTUuMjksMTQuMjdMMTcuMTksMTguNzNDMTcuNTcsMTguNDQgMTcuOTIsMTguMTEgMTguMjUsMTcuNzZNMTIsMjNDMTEsMjMgMTAuMTYsMjIuMjYgMTAsMjEuMjlDOS4zNywyMS4xNiA4Ljc1LDIwLjk1IDguMTUsMjAuNjlMNy4xNywyM0g1TDYuNDEsMTkuNjhDNS44OCwxOS4zIDUuMzksMTguODYgNC45NiwxOC4zN0M0LjcyLDE4LjQ3IDQuNDcsMTguNSA0LjIsMTguNUEyLDIgMCAwLDEgMi4yLDE2LjVDMi4yLDE1Ljg4IDIuNSwxNS4zMiAyLjk3LDE0Ljk1QzIuNjYsMTQgMi41LDEzLjAzIDIuNSwxMkMyLjUsMTEgMi42NiwxMCAyLjk2LDkuMDhDMi41LDguNzEgMi4yLDguMTUgMi4yLDcuNUMyLjIsNi40MSAzLjA5LDUuNSA0LjIsNS41QzQuNDYsNS41IDQuNzEsNS41NiA0LjkzLDUuNjVDNi4yNSw0LjE4IDgsMy4xMyAxMCwyLjcxQzEwLjE2LDEuNzQgMTEsMSAxMiwxQzEzLDEgMTMuODQsMS43NCAxNCwyLjcxQzE2LDMuMTMgMTcuNzQsNC4xOCAxOS4wNiw1LjY0QzE5LjI5LDUuNTUgMTkuNTQsNS41IDE5LjgxLDUuNUEyLDIgMCAwLDEgMjEuODEsNy41QzIxLjgxLDguMTQgMjEuNSw4LjcxIDIxLjA0LDkuMDdDMjEuMzQsMTAgMjEuNSwxMSAyMS41LDEyQzIxLjUsMTMgMjEuMzQsMTQgMjEuMDQsMTQuOTNDMjEuNSwxNS4zIDIxLjgxLDE1Ljg3IDIxLjgxLDE2LjVDMjEuODEsMTcuNjIgMjAuOTIsMTguNSAxOS44MSwxOC41QzE5LjU0LDE4LjUgMTkuMjksMTguNDYgMTkuMDUsMTguMzZDMTguNjEsMTguODUgMTguMTIsMTkuMjkgMTcuNTksMTkuNjhMMTksMjNIMTYuODNMMTUuODUsMjAuNjlDMTUuMjUsMjAuOTUgMTQuNjMsMjEuMTYgMTQsMjEuMjlDMTMuODQsMjIuMjYgMTMsMjMgMTIsMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVycnkgPSBcIk02LDZIMThWOS45NkwxMiw4TDYsOS45Nk0zLjk0LDE5SDRDNS42LDE5IDcsMTguMTIgOCwxN0M5LDE4LjEyIDEwLjQsMTkgMTIsMTlDMTMuNiwxOSAxNSwxOC4xMiAxNiwxN0MxNywxOC4xMiAxOC40LDE5IDIwLDE5SDIwLjA1TDIxLjk1LDEyLjMxQzIyLjAzLDEyLjA2IDIyLDExLjc4IDIxLjg5LDExLjU0QzIxLjc2LDExLjMgMjEuNTUsMTEuMTIgMjEuMjksMTEuMDRMMjAsMTAuNjJWNkMyMCw0Ljg5IDE5LjEsNCAxOCw0SDE1VjFIOVY0SDZBMiwyIDAgMCwwIDQsNlYxMC42MkwyLjcxLDExLjA0QzIuNDUsMTEuMTIgMi4yNCwxMS4zIDIuMTEsMTEuNTRDMiwxMS43OCAxLjk3LDEyLjA2IDIuMDUsMTIuMzFNMjAsMjFDMTguNjEsMjEgMTcuMjIsMjAuNTMgMTYsMTkuNjdDMTMuNTYsMjEuMzggMTAuNDQsMjEuMzggOCwxOS42N0M2Ljc4LDIwLjUzIDUuMzksMjEgNCwyMUgyVjIzSDRDNS4zNywyMyA2Ljc0LDIyLjY1IDgsMjJDMTAuNSwyMy4zIDEzLjUsMjMuMyAxNiwyMkMxNy4yNiwyMi42NSAxOC42MiwyMyAyMCwyM0gyMlYyMUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlID0gXCJNMTMsOVYzLjVMMTguNSw5TTYsMkM0Ljg5LDIgNCwyLjg5IDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWOEwxNCwySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUFjY291bnQgPSBcIk0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFY0QzQsMi44OSA0Ljg5LDIgNiwyTTE0LDIwVjE5QzE0LDE3LjY3IDExLjMzLDE3IDEwLDE3QzguNjcsMTcgNiwxNy42NyA2LDE5VjIwSDE0TTEwLDEyQTIsMiAwIDAsMCA4LDE0QTIsMiAwIDAsMCAxMCwxNkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDEwLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVBY2NvdW50T3V0bGluZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjkgNCA0VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE5LjExIDIyIDIwIDIxLjExIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xMyAxM0MxMyAxNC4xIDEyLjEgMTUgMTEgMTVTOSAxNC4xIDkgMTMgOS45IDExIDExIDExIDEzIDExLjkgMTMgMTNNMTUgMThWMTlIN1YxOEM3IDE2LjY3IDkuNjcgMTYgMTEgMTZTMTUgMTYuNjcgMTUgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUFsZXJ0ID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk05IDE5SDdWMTdIOU05IDE1SDdWOUg5TTEzIDlWMy41TDE4LjUgOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQWxlcnRPdXRsaW5lID0gXCJNMTAgMThIOFYxNkgxMFYxOE0xMCAxNEg4VjhIMTBWMTRNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQ2FiaW5ldCA9IFwiTTE0LDhIMTBWNkgxNFY4TTIwLDRWMjBDMjAsMjEuMTEgMTkuMTEsMjIgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMTEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMThDMTkuMTEsMiAyMCwyLjkgMjAsNE0xOCwxM0g2VjIwSDE4VjEzTTE4LDRINlYxMUgxOFY0TTE0LDE1SDEwVjE3SDE0VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDYWQgPSBcIk02IDJDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOEMxOS4xIDIyIDIwIDIxLjEgMjAgMjBWOEwxNCAyTTEzIDMuNUwxOC41IDlIMTNNOS44OCA5LjI1SDExLjEyVjEwLjE5QzExLjgxIDEwLjE4IDEyLjM4IDEwLjc1IDEyLjM4IDExLjQ0VjEzLjVMMTIuMjYgMTMuNjNMMTMuMTUgMTUuMTdDMTMuNDcgMTQuNjcgMTMuNjMgMTQuMDkgMTMuNjIgMTMuNUgxNC44OEMxNC44OCAxNC41NCAxNC41IDE1LjU1IDEzLjgzIDE2LjM1TDE1LjUgMTkuMjVWMjAuNUwxNC40MiAxOS44OEwxMi44NyAxNy4xOUMxMi4xNyAxNy42NSAxMS4zNCAxNy44OSAxMC41IDE3Ljg5QzkuNjYgMTcuODkgOC44NCAxNy42NSA4LjEzIDE3LjE5TDYuNTggMTkuODhMNS41IDIwLjVWMTkuMjVMOC43NCAxMy42M0w4LjYyIDEzLjVWMTEuNDRDOC42MiAxMC43NSA5LjE5IDEwLjE4IDkuODggMTAuMTlNMTAuNSAxMS40NEM5LjgxIDExLjQ0IDkuNDYgMTIuMjggOS45NSAxMi43N0MxMC40NCAxMy4yNiAxMS4yOCAxMi45MiAxMS4yOCAxMi4yMkMxMS4yOCAxMS43OSAxMC45MyAxMS40NCAxMC41IDExLjQ0TTkuNjYgMTQuNTRMOC43NiAxNi4xMUM5LjgxIDE2LjgyIDExLjE5IDE2LjgyIDEyLjI0IDE2LjExTDExLjM0IDE0LjU0QzEwLjg3IDE1IDEwLjEzIDE1IDkuNjYgMTQuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNhZEJveCA9IFwiTTUgM0MzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMS4yNSA1LjI1SDEyLjc1VjYuMzhDMTMuNTggNi4zOCAxNC4yNSA3LjA1IDE0LjI1IDcuODhWMTAuMzdMMTQuMTEgMTAuNUwxNS4xOCAxMi4zNkMxNS41NSAxMS43NiAxNS43NSAxMS4wNyAxNS43NSAxMC4zNkgxNy4yNUMxNy4yNiAxMS42MSAxNi44MSAxMi44MiAxNiAxMy43N0wxOCAxNy4yNVYxOC43NUwxNi43IDE4TDE0Ljg0IDE0Ljc4QzEzLjEyIDE1LjkxIDEwLjg5IDE1LjkxIDkuMTYgMTQuNzhMNy4zIDE4TDYgMTguNzVWMTcuMjVMOS44OSAxMC41TDkuNzUgMTAuMzdWNy44OEM5Ljc1IDcuMDUgMTAuNDIgNi4zOCAxMS4yNSA2LjM4TTEyIDcuODhDMTEuMTYgNy44OCAxMC43NCA4LjkgMTEuMzQgOS41QzExLjk0IDEwLjA4IDEyLjk1IDkuNjUgMTIuOTQgOC44MUMxMi45NCA4LjI5IDEyLjUgNy44OCAxMiA3Ljg4TTExIDExLjZMOS45MSAxMy41QzExLjE3IDE0LjM2IDEyLjgzIDE0LjM2IDE0LjA5IDEzLjVMMTMgMTEuNkMxMi40MyAxMi4xMSAxMS41NyAxMi4xMSAxMSAxMS42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDYW5jZWwgPSBcIk0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFY0QzQsMi44OSA0Ljg5LDIgNiwyTTEwLjUsMTFDOCwxMSA2LDEzIDYsMTUuNUM2LDE4IDgsMjAgMTAuNSwyMEMxMywyMCAxNSwxOCAxNSwxNS41QzE1LDEzIDEzLDExIDEwLjUsMTFNMTAuNSwxMi41QTMsMyAwIDAsMSAxMy41LDE1LjVDMTMuNSwxNi4wNiAxMy4zNSwxNi41OCAxMy4wOCwxN0w5LDEyLjkyQzkuNDIsMTIuNjUgOS45NCwxMi41IDEwLjUsMTIuNU03LjUsMTUuNUM3LjUsMTQuOTQgNy42NSwxNC40MiA3LjkyLDE0TDEyLDE4LjA4QzExLjU4LDE4LjM1IDExLjA2LDE4LjUgMTAuNSwxOC41QTMsMyAwIDAsMSA3LjUsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQ2FuY2VsT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTEuNSwxMEMxNCwxMCAxNiwxMiAxNiwxNC41QzE2LDE3IDE0LDE5IDExLjUsMTlDOSwxOSA3LDE3IDcsMTQuNUM3LDEyIDksMTAgMTEuNSwxME0xMS41LDExLjVDMTAuOTQsMTEuNSAxMC40MiwxMS42NSAxMCwxMS45MkwxNC4wOCwxNkMxNC4zNSwxNS41OCAxNC41LDE1LjA2IDE0LjUsMTQuNUEzLDMgMCAwLDAgMTEuNSwxMS41TTguNSwxNC41QTMsMyAwIDAsMCAxMS41LDE3LjVDMTIuMDYsMTcuNSAxMi41OCwxNy4zNSAxMywxNy4wOEw4LjkyLDEzQzguNjUsMTMuNDIgOC41LDEzLjk0IDguNSwxNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDZXJ0aWZpY2F0ZSA9IFwiTTE0IDJIN0EyIDIgMCAwIDAgNSA0VjE4QTIgMiAwIDAgMCA3IDIwSDEwVjIzTDEyIDIyTDE0IDIzVjIwSDE3QTIgMiAwIDAgMCAxOSAxOFY3TTE0IDE1VjE3TDEyIDE2TDEwIDE3VjE1TDggMTRMMTAgMTNWMTFMMTIgMTJMMTQgMTFWMTNMMTYgMTRNMTMgOFYzLjVMMTcuNSA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDZXJ0aWZpY2F0ZU91dGxpbmUgPSBcIk0xNCAxM1YxMUwxMiAxMkwxMCAxMVYxM0w4IDE0TDEwIDE1VjE3TDEyIDE2TDE0IDE3VjE1TDE2IDE0TTE0IDJIN0EyIDIgMCAwIDAgNSA0VjE4QTIgMiAwIDAgMCA3IDIwSDhWMThIN1Y0SDEzVjhIMTdWMThIMTZWMjBIMTdBMiAyIDAgMCAwIDE5IDE4VjdNMTQgMTNWMTFMMTIgMTJMMTAgMTFWMTNMOCAxNEwxMCAxNVYxN0wxMiAxNkwxNCAxN1YxNUwxNiAxNE0xMCAyM0wxMiAyMkwxNCAyM1YxOEgxME0xNCAxM1YxMUwxMiAxMkwxMCAxMVYxM0w4IDE0TDEwIDE1VjE3TDEyIDE2TDE0IDE3VjE1TDE2IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDaGFydCA9IFwiTTEzLDlIMTguNUwxMywzLjVWOU02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNNywyMEg5VjE0SDdWMjBNMTEsMjBIMTNWMTJIMTFWMjBNMTUsMjBIMTdWMTZIMTVWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNoYXJ0T3V0bGluZSA9IFwiTTE0IDJINkM0LjkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNOSAxM1YxOUg3VjEzSDlNMTUgMTVWMTlIMTdWMTVIMTVNMTEgMTFWMTlIMTNWMTFIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNoZWNrID0gXCJNMTMsOUgxOC41TDEzLDMuNVY5TTYsMkgxNEwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWNEM0LDIuODkgNC44OSwyIDYsMk0xMS4yLDE4LjQ2TDE1Ljk1LDEzLjcxTDE0Ljc4LDEyLjNMMTEuMiwxNS44OEw5LjYxLDE0LjNMOC40NSwxNS40NkwxMS4yLDE4LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDaGVja091dGxpbmUgPSBcIk0xNCwyTDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwySDE0TTE4LDIwVjlIMTNWNEg2VjIwSDE4TTExLjIsMTguNDZMOC40NSwxNS40Nkw5LjYxLDE0LjNMMTEuMiwxNS44OEwxNC43OCwxMi4zTDE1Ljk1LDEzLjcxTDExLjIsMTguNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNsb2NrID0gXCJNNCAyQzIuODkgMiAyIDIuODkgMiA0VjIwQTIgMiAwIDAgMCA0IDIySDEyLjQxQTcgNyAwIDAgMCAxNiAyM0E3IDcgMCAwIDAgMjMgMTZBNyA3IDAgMCAwIDE4IDkuM1Y4TDEyIDJINE0xMSAzLjVMMTYuNSA5SDExVjMuNU0xNiAxMUE1IDUgMCAwIDEgMjEgMTZBNSA1IDAgMCAxIDE2IDIxQTUgNSAwIDAgMSAxMSAxNkE1IDUgMCAwIDEgMTYgMTFNMTUgMTJWMTdMMTguNjEgMTkuMTZMMTkuMzYgMTcuOTRMMTYuNSAxNi4yNVYxMkgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQ2xvY2tPdXRsaW5lID0gXCJNNCAyQTIgMiAwIDAgMCAyIDRWMjBBMiAyIDAgMCAwIDQgMjJIMTIuNDFBNyA3IDAgMCAwIDE2IDIzQTcgNyAwIDAgMCAyMyAxNkE3IDcgMCAwIDAgMTggOS4zVjhMMTIgMkg0TTQgNEgxMVY5SDE2QTcgNyAwIDAgMCA5IDE2QTcgNyAwIDAgMCAxMC4yNiAyMEg0VjRNMTYgMTFBNSA1IDAgMCAxIDIxIDE2QTUgNSAwIDAgMSAxNiAyMUE1IDUgMCAwIDEgMTEgMTZBNSA1IDAgMCAxIDE2IDExTTE1IDEyVjE3TDE4LjYxIDE5LjE2TDE5LjM2IDE3Ljk0TDE2LjUgMTYuMjVWMTJIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNsb3VkID0gXCJNMTMsOUgxOC41TDEzLDMuNVY5TTYsMkgxNEwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWNEM0LDIuODkgNC44OSwyIDYsMk0xNS42OCwxNUMxNS4zNCwxMy4zIDEzLjgyLDEyIDEyLDEyQzEwLjU1LDEyIDkuMywxMi44MiA4LjY4LDE0QzcuMTcsMTQuMTggNiwxNS40NSA2LDE3QTMsMyAwIDAsMCA5LDIwSDE1LjVBMi41LDIuNSAwIDAsMCAxOCwxNy41QzE4LDE2LjE4IDE2Ljk3LDE1LjExIDE1LjY4LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDbG91ZE91dGxpbmUgPSBcIk0xNCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNMTcgMTYuOTJDMTcgMTguMDcgMTYuMDcgMTkgMTQuOTIgMTlIOS41QzguMTIgMTkgNyAxNy44OCA3IDE2LjVDNyAxNS4yMSA4IDE0LjE1IDkuMjMgMTRDOS43NSAxMyAxMC43OSAxMi4zMyAxMiAxMi4zM0MxMy41IDEyLjMzIDE0Ljc4IDEzLjQyIDE1LjA3IDE0LjgzQzE2LjE0IDE0LjkzIDE3IDE1LjgyIDE3IDE2LjkyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDb2RlID0gXCJNMTMsOUgxOC41TDEzLDMuNVY5TTYsMkgxNEwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWNEM0LDIuODkgNC44OSwyIDYsMk02LjEyLDE1LjVMOS44NiwxOS4yNEwxMS4yOCwxNy44M0w4Ljk1LDE1LjVMMTEuMjgsMTMuMTdMOS44NiwxMS43Nkw2LjEyLDE1LjVNMTcuMjgsMTUuNUwxMy41NCwxMS43NkwxMi4xMiwxMy4xN0wxNC40NSwxNS41TDEyLjEyLDE3LjgzTDEzLjU0LDE5LjI0TDE3LjI4LDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNvZGVPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTkuNTQgMTUuNjVMMTEuNjMgMTcuNzRMMTAuMzUgMTlMNyAxNS42NUwxMC4zNSAxMi4zTDExLjYzIDEzLjU2TDkuNTQgMTUuNjVNMTcgMTUuNjVMMTMuNjUgMTlMMTIuMzggMTcuNzRMMTQuNDcgMTUuNjVMMTIuMzggMTMuNTZMMTMuNjUgMTIuM0wxNyAxNS42NVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQ29nID0gXCJNNiAyQzQuODkgMiA0IDIuODkgNCA0VjIwQTIgMiAwIDAgMCA2IDIySDEyLjY4QTcgNyAwIDAgMSAxMiAxOUE3IDcgMCAwIDEgMTkgMTJBNyA3IDAgMCAxIDIwIDEyLjA4VjhMMTQgMkg2TTEzIDMuNUwxOC41IDlIMTNWMy41TTE4IDE0QzE3Ljg3IDE0IDE3Ljc2IDE0LjA5IDE3Ljc0IDE0LjIxTDE3LjU1IDE1LjUzQzE3LjI1IDE1LjY2IDE2Ljk2IDE1LjgyIDE2LjcgMTZMMTUuNDYgMTUuNUMxNS4zNSAxNS41IDE1LjIyIDE1LjUgMTUuMTUgMTUuNjNMMTQuMTUgMTcuMzZDMTQuMDkgMTcuNDcgMTQuMTEgMTcuNiAxNC4yMSAxNy42OEwxNS4yNyAxOC41QzE1LjI1IDE4LjY3IDE1LjI0IDE4LjgzIDE1LjI0IDE5QzE1LjI0IDE5LjE3IDE1LjI1IDE5LjMzIDE1LjI3IDE5LjVMMTQuMjEgMjAuMzJDMTQuMTIgMjAuNCAxNC4wOSAyMC41MyAxNC4xNSAyMC42NEwxNS4xNSAyMi4zN0MxNS4yMSAyMi41IDE1LjM0IDIyLjUgMTUuNDYgMjIuNUwxNi43IDIyQzE2Ljk2IDIyLjE4IDE3LjI0IDIyLjM1IDE3LjU1IDIyLjQ3TDE3Ljc0IDIzLjc5QzE3Ljc2IDIzLjkxIDE3Ljg2IDI0IDE4IDI0SDIwQzIwLjExIDI0IDIwLjIyIDIzLjkxIDIwLjI0IDIzLjc5TDIwLjQzIDIyLjQ3QzIwLjczIDIyLjM0IDIxIDIyLjE4IDIxLjI3IDIyTDIyLjUgMjIuNUMyMi42MyAyMi41IDIyLjc2IDIyLjUgMjIuODMgMjIuMzdMMjMuODMgMjAuNjRDMjMuODkgMjAuNTMgMjMuODYgMjAuNCAyMy43NyAyMC4zMkwyMi43IDE5LjVDMjIuNzIgMTkuMzMgMjIuNzQgMTkuMTcgMjIuNzQgMTlDMjIuNzQgMTguODMgMjIuNzMgMTguNjcgMjIuNyAxOC41TDIzLjc2IDE3LjY4QzIzLjg1IDE3LjYgMjMuODggMTcuNDcgMjMuODIgMTcuMzZMMjIuODIgMTUuNjNDMjIuNzYgMTUuNSAyMi42MyAxNS41IDIyLjUgMTUuNUwyMS4yNyAxNkMyMSAxNS44MiAyMC43MyAxNS42NSAyMC40MiAxNS41M0wyMC4yMyAxNC4yMUMyMC4yMiAxNC4wOSAyMC4xMSAxNCAyMCAxNEgxOE0xOSAxNy41QzE5LjgzIDE3LjUgMjAuNSAxOC4xNyAyMC41IDE5QzIwLjUgMTkuODMgMTkuODMgMjAuNSAxOSAyMC41QzE4LjE2IDIwLjUgMTcuNSAxOS44MyAxNy41IDE5QzE3LjUgMTguMTcgMTguMTcgMTcuNSAxOSAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDb2dPdXRsaW5lID0gXCJNNiAyQzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMTJWMjBINlY0SDEzVjlIMThWMTJIMjBWOEwxNCAyTTE4IDE0QzE3Ljg3IDE0IDE3Ljc2IDE0LjA5IDE3Ljc0IDE0LjIxTDE3LjU1IDE1LjUzQzE3LjI1IDE1LjY2IDE2Ljk2IDE1LjgyIDE2LjcgMTZMMTUuNDYgMTUuNUMxNS4zNSAxNS41IDE1LjIyIDE1LjUgMTUuMTUgMTUuNjNMMTQuMTUgMTcuMzZDMTQuMDkgMTcuNDcgMTQuMTEgMTcuNiAxNC4yMSAxNy42OEwxNS4yNyAxOC41QzE1LjI1IDE4LjY3IDE1LjI0IDE4LjgzIDE1LjI0IDE5QzE1LjI0IDE5LjE3IDE1LjI1IDE5LjMzIDE1LjI3IDE5LjVMMTQuMjEgMjAuMzJDMTQuMTIgMjAuNCAxNC4wOSAyMC41MyAxNC4xNSAyMC42NEwxNS4xNSAyMi4zN0MxNS4yMSAyMi41IDE1LjM0IDIyLjUgMTUuNDYgMjIuNUwxNi43IDIyQzE2Ljk2IDIyLjE4IDE3LjI0IDIyLjM1IDE3LjU1IDIyLjQ3TDE3Ljc0IDIzLjc5QzE3Ljc2IDIzLjkxIDE3Ljg2IDI0IDE4IDI0SDIwQzIwLjExIDI0IDIwLjIyIDIzLjkxIDIwLjI0IDIzLjc5TDIwLjQzIDIyLjQ3QzIwLjczIDIyLjM0IDIxIDIyLjE4IDIxLjI3IDIyTDIyLjUgMjIuNUMyMi42MyAyMi41IDIyLjc2IDIyLjUgMjIuODMgMjIuMzdMMjMuODMgMjAuNjRDMjMuODkgMjAuNTMgMjMuODYgMjAuNCAyMy43NyAyMC4zMkwyMi43IDE5LjVDMjIuNzIgMTkuMzMgMjIuNzQgMTkuMTcgMjIuNzQgMTlDMjIuNzQgMTguODMgMjIuNzMgMTguNjcgMjIuNyAxOC41TDIzLjc2IDE3LjY4QzIzLjg1IDE3LjYgMjMuODggMTcuNDcgMjMuODIgMTcuMzZMMjIuODIgMTUuNjNDMjIuNzYgMTUuNSAyMi42MyAxNS41IDIyLjUgMTUuNUwyMS4yNyAxNkMyMSAxNS44MiAyMC43MyAxNS42NSAyMC40MiAxNS41M0wyMC4yMyAxNC4yMUMyMC4yMiAxNC4wOSAyMC4xMSAxNCAyMCAxNE0xOSAxNy41QzE5LjgzIDE3LjUgMjAuNSAxOC4xNyAyMC41IDE5QzIwLjUgMTkuODMgMTkuODMgMjAuNSAxOSAyMC41QzE4LjE2IDIwLjUgMTcuNSAxOS44MyAxNy41IDE5QzE3LjUgMTguMTcgMTguMTcgMTcuNSAxOSAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDb21wYXJlID0gXCJNMTAsMThINlYxNkgxMFYxOE0xMCwxNEg2VjEySDEwVjE0TTEwLDFWMkg2QzQuODksMiA0LDIuODkgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDEwVjIzSDEyVjFIMTBNMjAsOFYyMEMyMCwyMS4xMSAxOS4xMSwyMiAxOCwyMkgxNFYyMEgxOFYxMUgxNFY5SDE4LjVMMTQsNC41VjJMMjAsOE0xNiwxNEgxNFYxMkgxNlYxNE0xNiwxOEgxNFYxNkgxNlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRGVsaW1pdGVkID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xNSAxNkwxMyAyMEgxMEwxMiAxNkg5VjExSDE1VjE2TTEzIDlWMy41TDE4LjUgOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRGVsaW1pdGVkT3V0bGluZSA9IFwiTTE0IDJINkM0LjkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNMTAgMTlMMTIgMTVIOVYxMEgxNVYxNUwxMyAxOUgxMFwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudCA9IFwiTTEzLDlIMTguNUwxMywzLjVWOU02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNMTUsMThWMTZINlYxOEgxNU0xOCwxNFYxMkg2VjE0SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudEVkaXQgPSBcIk02LDJDNC44OSwyIDQsMi44OSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMTBWMjAuMDlMMTIuMDksMThINlYxNkgxNC4wOUwxNi4wOSwxNEg2VjEySDE4LjA5TDIwLDEwLjA5VjhMMTQsMkg2TTEzLDMuNUwxOC41LDlIMTNWMy41TTIwLjE1LDEzQzIwLDEzIDE5Ljg2LDEzLjA1IDE5Ljc1LDEzLjE2TDE4LjczLDE0LjE4TDIwLjgyLDE2LjI2TDIxLjg0LDE1LjI1QzIyLjA1LDE1LjAzIDIyLjA1LDE0LjY3IDIxLjg0LDE0LjQ2TDIwLjU0LDEzLjE2QzIwLjQzLDEzLjA1IDIwLjI5LDEzIDIwLjE1LDEzTTE4LjE0LDE0Ljc3TDEyLDIwLjkyVjIzSDE0LjA4TDIwLjIzLDE2Ljg1TDE4LjE0LDE0Ljc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudEVkaXRPdXRsaW5lID0gXCJNOCwxMkgxNlYxNEg4VjEyTTEwLDIwSDZWNEgxM1Y5SDE4VjEyLjFMMjAsMTAuMVY4TDE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDEwVjIwTTgsMThIMTIuMUwxMywxNy4xVjE2SDhWMThNMjAuMiwxM0MyMC4zLDEzIDIwLjUsMTMuMSAyMC42LDEzLjJMMjEuOSwxNC41QzIyLjEsMTQuNyAyMi4xLDE1LjEgMjEuOSwxNS4zTDIwLjksMTYuM0wxOC44LDE0LjJMMTkuOCwxMy4yQzE5LjksMTMuMSAyMCwxMyAyMC4yLDEzTTIwLjIsMTYuOUwxNC4xLDIzSDEyVjIwLjlMMTguMSwxNC44TDIwLjIsMTYuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRG9jdW1lbnRNdWx0aXBsZSA9IFwiTTQgNFYyMkgyMFYyNEg0QzIuOSAyNCAyIDIzLjEgMiAyMlY0SDRNMTUgN0gyMC41TDE1IDEuNVY3TTggMEgxNkwyMiA2VjE4QzIyIDE5LjExIDIxLjExIDIwIDIwIDIwSDhDNi44OSAyMCA2IDE5LjEgNiAxOFYyQzYgLjg5IDYuODkgMCA4IDBNMTcgMTZWMTRIOFYxNkgxN00yMCAxMlYxMEg4VjEySDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudE11bHRpcGxlT3V0bGluZSA9IFwiTTE2IDBIOEM2LjkgMCA2IC45IDYgMlYxOEM2IDE5LjEgNi45IDIwIDggMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjZMMTYgME0yMCAxOEg4VjJIMTVWN0gyMFYxOE00IDRWMjJIMjBWMjRINEMyLjkgMjQgMiAyMy4xIDIgMjJWNEg0TTEwIDEwVjEySDE4VjEwSDEwTTEwIDE0VjE2SDE1VjE0SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudE91dGxpbmUgPSBcIk02LDJBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWOEwxNCwySDZNNiw0SDEzVjlIMThWMjBINlY0TTgsMTJWMTRIMTZWMTJIOE04LDE2VjE4SDEzVjE2SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZURvd25sb2FkID0gXCJNMTQsMkg2QzQuODksMiA0LDIuODkgNCw0VjIwQzQsMjEuMTEgNC44OSwyMiA2LDIySDE4QzE5LjExLDIyIDIwLDIxLjExIDIwLDIwVjhMMTQsMk0xMiwxOUw4LDE1SDEwLjVWMTJIMTMuNVYxNUgxNkwxMiwxOU0xMyw5VjMuNUwxOC41LDlIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZURvd25sb2FkT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTIsMTlMOCwxNUgxMC41VjEySDEzLjVWMTVIMTZMMTIsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUVkaXQgPSBcIk02IDJDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxMFYyMC4xTDIwIDEwLjFWOEwxNCAySDZNMTMgMy41TDE4LjUgOUgxM1YzLjVNMjAuMSAxM0MyMCAxMyAxOS44IDEzLjEgMTkuNyAxMy4yTDE4LjcgMTQuMkwyMC44IDE2LjNMMjEuOCAxNS4zQzIyIDE1LjEgMjIgMTQuNyAyMS44IDE0LjVMMjAuNSAxMy4yQzIwLjQgMTMuMSAyMC4zIDEzIDIwLjEgMTNNMTguMSAxNC44TDEyIDIwLjlWMjNIMTQuMUwyMC4yIDE2LjlMMTguMSAxNC44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVFZGl0T3V0bGluZSA9IFwiTTEwIDIwSDZWNEgxM1Y5SDE4VjEyLjFMMjAgMTAuMVY4TDE0IDJINkM0LjkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDEwVjIwTTIwLjIgMTNDMjAuMyAxMyAyMC41IDEzLjEgMjAuNiAxMy4yTDIxLjkgMTQuNUMyMi4xIDE0LjcgMjIuMSAxNS4xIDIxLjkgMTUuM0wyMC45IDE2LjNMMTguOCAxNC4yTDE5LjggMTMuMkMxOS45IDEzLjEgMjAgMTMgMjAuMiAxM00yMC4yIDE2LjlMMTQuMSAyM0gxMlYyMC45TDE4LjEgMTQuOEwyMC4yIDE2LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUV4Y2VsID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xNS44LDIwSDE0TDEyLDE2LjZMMTAsMjBIOC4yTDExLjEsMTUuNUw4LjIsMTFIMTBMMTIsMTQuNEwxNCwxMUgxNS44TDEyLjksMTUuNUwxNS44LDIwTTEzLDlWMy41TDE4LjUsOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRXhjZWxCb3ggPSBcIk0xNi4yLDE3SDE0LjJMMTIsMTMuMkw5LjgsMTdINy44TDExLDEyTDcuOCw3SDkuOEwxMiwxMC44TDE0LjIsN0gxNi4yTDEzLDEyTTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVFeGNlbEJveE91dGxpbmUgPSBcIk01IDNDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM0g1TTUgNUgxOVYxOUg1VjVNMTMgMTJMMTYuMiAxN0gxNC4yTDEyIDEzLjJMOS44IDE3SDcuOEwxMSAxMkw3LjggN0g5LjhMMTIgMTAuOEwxNC4yIDdIMTYuMkwxMyAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRXhjZWxPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTEyLjkgMTQuNUwxNS44IDE5SDE0TDEyIDE1LjZMMTAgMTlIOC4yTDExLjEgMTQuNUw4LjIgMTBIMTBMMTIgMTMuNEwxNCAxMEgxNS44TDEyLjkgMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRXhwb3J0ID0gXCJNNiwyQzQuODksMiA0LDIuOSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xMywzLjVMMTguNSw5SDEzTTguOTMsMTIuMjJIMTZWMTkuMjlMMTMuODgsMTcuMTdMMTEuMDUsMjBMOC4yMiwxNy4xN0wxMS4wNSwxNC4zNVwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVFeHBvcnRPdXRsaW5lID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xNiAxMVYxOC4xTDEzLjkgMTZMMTEuMSAxOC44TDguMyAxNkwxMS4xIDEzLjJMOC45IDExSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVFeWUgPSBcIk0xNywxOEMxNy41NiwxOCAxOCwxOC40NCAxOCwxOUMxOCwxOS41NiAxNy41NiwyMCAxNywyMEMxNi40NCwyMCAxNiwxOS41NiAxNiwxOUMxNiwxOC40NCAxNi40NCwxOCAxNywxOE0xNywxNUMxNC4yNywxNSAxMS45NCwxNi42NiAxMSwxOUMxMS45NCwyMS4zNCAxNC4yNywyMyAxNywyM0MxOS43MywyMyAyMi4wNiwyMS4zNCAyMywxOUMyMi4wNiwxNi42NiAxOS43MywxNSAxNywxNU0xNywyMS41QTIuNSwyLjUgMCAwLDEgMTQuNSwxOUEyLjUsMi41IDAgMCwxIDE3LDE2LjVBMi41LDIuNSAwIDAsMSAxOS41LDE5QTIuNSwyLjUgMCAwLDEgMTcsMjEuNU05LjE0LDE5Ljc1TDguODUsMTlMOS4xNCwxOC4yNkMxMC40MywxNS4wNiAxMy41LDEzIDE3LDEzQzE4LjA1LDEzIDE5LjA2LDEzLjIxIDIwLDEzLjU2VjhMMTQsMkg2QzQuODksMiA0LDIuODkgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDEwLjVDOS45NSwyMS4zNCA5LjUsMjAuNTggOS4xNCwxOS43NU0xMywzLjVMMTguNSw5SDEzVjMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRXllT3V0bGluZSA9IFwiTTE3LDE4QzE3LjU2LDE4IDE4LDE4LjQ0IDE4LDE5QzE4LDE5LjU2IDE3LjU2LDIwIDE3LDIwQzE2LjQ0LDIwIDE2LDE5LjU2IDE2LDE5QzE2LDE4LjQ0IDE2LjQ0LDE4IDE3LDE4TTE3LDE1QzE0LjI3LDE1IDExLjk0LDE2LjY2IDExLDE5QzExLjk0LDIxLjM0IDE0LjI3LDIzIDE3LDIzQzE5LjczLDIzIDIyLjA2LDIxLjM0IDIzLDE5QzIyLjA2LDE2LjY2IDE5LjczLDE1IDE3LDE1TTE3LDIxLjVBMi41LDIuNSAwIDAsMSAxNC41LDE5QTIuNSwyLjUgMCAwLDEgMTcsMTYuNUEyLjUsMi41IDAgMCwxIDE5LjUsMTlBMi41LDIuNSAwIDAsMSAxNywyMS41TTkuMjcsMjBINlY0SDEzVjlIMThWMTMuMDdDMTguNywxMy4xNSAxOS4zNiwxMy4zMiAyMCwxMy41NlY4TDE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDEwLjVDMTAsMjEuNDEgOS41OSwyMC43MyA5LjI3LDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVGaW5kID0gXCJNOSwxM0EzLDMgMCAwLDAgMTIsMTZBMywzIDAgMCwwIDE1LDEzQTMsMyAwIDAsMCAxMiwxMEEzLDMgMCAwLDAgOSwxM00yMCwxOS41OVY4TDE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QzE4LjQ1LDIyIDE4Ljg1LDIxLjg1IDE5LjE5LDIxLjZMMTQuNzYsMTcuMTdDMTMuOTYsMTcuNjkgMTMsMTggMTIsMThBNSw1IDAgMCwxIDcsMTNBNSw1IDAgMCwxIDEyLDhBNSw1IDAgMCwxIDE3LDEzQzE3LDE0IDE2LjY5LDE0Ljk2IDE2LjE3LDE1Ljc1TDIwLDE5LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVGaW5kT3V0bGluZSA9IFwiTTE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNNiw0SDEzTDE4LDlWMTcuNThMMTYuMTYsMTUuNzRDMTcuNDQsMTMuOCAxNy4yMywxMS4xNyAxNS41LDkuNDZDMTQuNTUsOC41IDEzLjI4LDggMTIsOEMxMC43Miw4IDkuNDUsOC41IDguNDcsOS40NkM2LjUsMTEuNDEgNi41LDE0LjU3IDguNDcsMTYuNUM5LjQ0LDE3LjUgMTAuNzIsMTcuOTcgMTIsMTcuOTdDMTIuOTYsMTcuOTcgMTMuOTIsMTcuNjkgMTQuNzUsMTcuMTRMMTcuNiwyMEg2VjRNMTQuMTEsMTUuMUMxMy41NSwxNS42NiAxMi44LDE2IDEyLDE2QzExLjIsMTYgMTAuNDUsMTUuNjcgOS44OSwxNS4xQzkuMzMsMTQuNTQgOSwxMy43OSA5LDEzQzksMTIuMTkgOS4zMiwxMS40NCA5Ljg5LDEwLjg4QzEwLjQ1LDEwLjMxIDExLjIsMTAgMTIsMTBDMTIuOCwxMCAxMy41NSwxMC4zMSAxNC4xMSwxMC44OEMxNC42NywxMS40NCAxNSwxMi4xOSAxNSwxM0MxNSwxMy43OSAxNC42OCwxNC41NCAxNC4xMSwxNS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVIaWRkZW4gPSBcIk0xMyw5SDE0VjExSDExVjdIMTNWOU0xOC41LDlMMTYuMzgsNi44OEwxNy42Myw1LjYzTDIwLDhWMTBIMThWMTFIMTVWOUgxOC41TTEzLDMuNVYySDEyVjRIMTNWNkgxMVY0SDlWMkg4VjRINlY1SDRWNEM0LDIuODkgNC44OSwyIDYsMkgxNEwxNi4zNiw0LjM2TDE1LjExLDUuNjFMMTMsMy41TTIwLDIwQTIsMiAwIDAsMSAxOCwyMkgxNlYyMEgxOFYxOUgyMFYyME0xOCwxNUgyMFYxOEgxOFYxNU0xMiwyMlYyMEgxNVYyMkgxMk04LDIyVjIwSDExVjIySDhNNiwyMkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjE4SDZWMjBIN1YyMkg2TTQsMTRINlYxN0g0VjE0TTQsMTBINlYxM0g0VjEwTTE4LDExSDIwVjE0SDE4VjExTTQsNkg2VjlINFY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVJbWFnZSA9IFwiTTEzLDlIMTguNUwxMywzLjVWOU02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNNiwyMEgxNUwxOCwyMFYxMkwxNCwxNkwxMiwxNEw2LDIwTTgsOUEyLDIgMCAwLDAgNiwxMUEyLDIgMCAwLDAgOCwxM0EyLDIgMCAwLDAgMTAsMTFBMiwyIDAgMCwwIDgsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlSW1hZ2VPdXRsaW5lID0gXCJNMTQsMkwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMkgxNE0xOCwyMFY5SDEzVjRINlYyMEgxOE0xNywxM1YxOUg3TDEyLDE0TDE0LDE2TTEwLDEwLjVBMS41LDEuNSAwIDAsMSA4LjUsMTJBMS41LDEuNSAwIDAsMSA3LDEwLjVBMS41LDEuNSAwIDAsMSA4LjUsOUExLjUsMS41IDAgMCwxIDEwLDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUltcG9ydCA9IFwiTTYsMkM0Ljg5LDIgNCwyLjkgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNMTMsMy41TDE4LjUsOUgxM00xMC4wNSwxMS4yMkwxMi44OCwxNC4wNUwxNSwxMS45M1YxOUg3LjkzTDEwLjA1LDE2Ljg4TDcuMjIsMTQuMDVcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlSW1wb3J0T3V0bGluZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjkgNCA0VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE5LjExIDIyIDIwIDIxLjExIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xNSAxMS45M1YxOUg3LjkzTDEwLjA1IDE2Ljg4TDcuMjIgMTQuMDVMMTAuMDUgMTEuMjJMMTIuODggMTQuMDVMMTUgMTEuOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUtleSA9IFwiTTExIDE2QTEgMSAwIDEgMSAxMCAxNUExIDEgMCAwIDEgMTEgMTZNMjAgOFYyMEEyIDIgMCAwIDEgMTggMjJINkEyIDIgMCAwIDEgNCAyMFY0QTIgMiAwIDAgMSA2IDJIMTRNMTcgMTVIMTIuODNBMyAzIDAgMSAwIDEyLjgzIDE3SDE0VjE5SDE2VjE3SDE3TTE4LjUgOUwxMyAzLjVWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlS2V5T3V0bGluZSA9IFwiTTE0IDJINkEyIDIgMCAwIDAgNCA0VjIwQTIgMiAwIDAgMCA2IDIySDE4QTIgMiAwIDAgMCAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThNMTIuODMgMTVBMyAzIDAgMSAwIDEyLjgzIDE3SDE0VjE5SDE2VjE3SDE3VjE1TTEwIDE3QTEgMSAwIDEgMSAxMSAxNkExIDEgMCAwIDEgMTAgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUxpbmsgPSBcIk0xNCAySDZDNC44OSAyIDQgMi44OSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTExIDIwSDEwQzguMzkgMjAgNiAxOC45NCA2IDE2QzYgMTMuMDcgOC4zOSAxMiAxMCAxMkgxMVYxNEgxMEM5LjU0IDE0IDggMTQuMTcgOCAxNkM4IDE3LjkgOS42NyAxOCAxMCAxOEgxMVYyME0xNSAxNVYxN0g5VjE1SDE1TTE0IDIwSDEzVjE4SDE0QzE0LjQ2IDE4IDE2IDE3LjgzIDE2IDE2QzE2IDE0LjEgMTQuMzMgMTQgMTQgMTRIMTNWMTJIMTRDMTUuNjEgMTIgMTggMTMuMDcgMTggMTZDMTggMTguOTQgMTUuNjEgMjAgMTQgMjBNMTMgOVYzLjVMMTguNSA5SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVMaW5rT3V0bGluZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjkgNCA0VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE5LjExIDIyIDIwIDIxLjExIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xMSAxOUgxMC43NUM5LjQ1IDE5IDcgMTguMjIgNyAxNS4yNVM5LjQ1IDExLjUgMTAuNzUgMTEuNUgxMVYxM0gxMC43NUMxMC4zOCAxMyA4LjUgMTMuMTMgOC41IDE1LjI1QzguNSAxNy40NCAxMC41IDE3LjUgMTAuNzUgMTcuNUgxMVYxOU0xNCAxNkgxMFYxNC41SDE0VjE2TTEzIDExLjVIMTMuMjVDMTQuNTUgMTEuNSAxNyAxMi4yOCAxNyAxNS4yNVMxNC41NSAxOSAxMy4yNSAxOUgxM1YxNy41SDEzLjI1QzEzLjYyIDE3LjUgMTUuNSAxNy4zNyAxNS41IDE1LjI1QzE1LjUgMTMuMDYgMTMuNSAxMyAxMy4yNSAxM0gxM1YxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVMb2NrID0gXCJNNiwyQzQuODksMiA0LDIuOSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMkg2TTEzLDMuNUwxOC41LDlIMTNWMy41TTEyLDExQTMsMyAwIDAsMSAxNSwxNFYxNUgxNlYxOUg4VjE1SDlWMTRDOSwxMi4zNiAxMC4zNCwxMSAxMiwxMU0xMiwxM0ExLDEgMCAwLDAgMTEsMTRWMTVIMTNWMTRDMTMsMTMuNDcgMTIuNTUsMTMgMTIsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUxvY2tPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTE1IDE1VjE0QzE1IDEyLjM0IDEzLjY2IDExIDEyIDExUzkgMTIuMzYgOSAxNFYxNUg4VjE5SDE2VjE1SDE1TTEzIDE1SDExVjE0QzExIDEzLjQ1IDExLjQ1IDEzIDEyIDEzUzEzIDEzLjQ3IDEzIDE0VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVNb3ZlID0gXCJNMTQsMTdIMThWMTRMMjMsMTguNUwxOCwyM1YyMEgxNFYxN00xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMTIuMzRDMTkuMzcsMTIuMTIgMTguNywxMiAxOCwxMkE2LDYgMCAwLDAgMTIsMThDMTIsMTkuNTQgMTIuNTgsMjAuOTQgMTMuNTMsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRBMiwyIDAgMCwxIDYsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlTW92ZU91dGxpbmUgPSBcIk0xNCAySDZDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjAuNDEgNC4xMiAyMC44IDQuMzQgMjEuMTJDNC40MSAyMS4yMyA0LjUgMjEuMzMgNC41OSAyMS40MUM0Ljk1IDIxLjc4IDUuNDUgMjIgNiAyMkgxMy41M0MxMyAyMS40MiAxMi42MSAyMC43NSAxMi4zNSAyMEg2VjRIMTNWOUgxOFYxMkMxOC43IDEyIDE5LjM3IDEyLjEyIDIwIDEyLjM0VjhMMTQgMk0xOCAyM0wyMyAxOC41TDIwIDE1LjhMMTggMTRWMTdIMTRWMjBIMThWMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZU11bHRpcGxlID0gXCJNMTUsN0gyMC41TDE1LDEuNVY3TTgsMEgxNkwyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg4QzYuODksMjAgNiwxOS4xIDYsMThWMkEyLDIgMCAwLDEgOCwwTTQsNFYyMkgyMFYyNEg0QTIsMiAwIDAsMSAyLDIyVjRINFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlTXVsdGlwbGVPdXRsaW5lID0gXCJNMTYgMEg4QzYuOSAwIDYgLjkgNiAyVjE4QzYgMTkuMSA2LjkgMjAgOCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWNkwxNiAwTTIwIDE4SDhWMkgxNVY3SDIwVjE4TTQgNFYyMkgyMFYyNEg0QzIuOSAyNCAyIDIzLjEgMiAyMlY0SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZU11c2ljID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xMywxM0gxMVYxOEEyLDIgMCAwLDEgOSwyMEEyLDIgMCAwLDEgNywxOEEyLDIgMCAwLDEgOSwxNkM5LjQsMTYgOS43LDE2LjEgMTAsMTYuM1YxMUgxM1YxM00xMyw5VjMuNUwxOC41LDlIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZU11c2ljT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTMsMTBWMTJIMTFWMTdBMiwyIDAgMCwxIDksMTlBMiwyIDAgMCwxIDcsMTdBMiwyIDAgMCwxIDksMTVDOS40LDE1IDkuNywxNS4xIDEwLDE1LjNWMTBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZU91dGxpbmUgPSBcIk0xNCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWOEwxNCwyTTE4LDIwSDZWNEgxM1Y5SDE4VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVQZGYgPSBcIk0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyTTEwLjEsMTEuNEMxMC4wOCwxMS40NCA5LjgxLDEzLjE2IDgsMTYuMDlDOCwxNi4wOSA0LjUsMTcuOTEgNS4zMywxOS4yN0M2LDIwLjM1IDcuNjUsMTkuMjMgOS4wNywxNi41OUM5LjA3LDE2LjU5IDEwLjg5LDE1Ljk1IDEzLjMxLDE1Ljc3QzEzLjMxLDE1Ljc3IDE3LjE3LDE3LjUgMTcuNywxNS42NkMxOC4yMiwxMy44IDE0LjY0LDE0LjIyIDE0LDE0LjQxQzE0LDE0LjQxIDEyLDEzLjA2IDExLjUsMTEuMkMxMS41LDExLjIgMTIuNjQsNy4yNSAxMC44OSw3LjNDOS4xNCw3LjM1IDkuOCwxMC40MyAxMC4xLDExLjRNMTAuOTEsMTIuNDRDMTAuOTQsMTIuNDUgMTEuMzgsMTMuNjUgMTIuOCwxNC45QzEyLjgsMTQuOSAxMC40NywxNS4zNiA5LjQxLDE1LjhDOS40MSwxNS44IDEwLjQxLDE0LjA3IDEwLjkxLDEyLjQ0TTE0Ljg0LDE1LjE2QzE1LjQyLDE1IDE3LjE3LDE1LjMxIDE3LjEsMTUuNjRDMTcuMDQsMTUuOTcgMTQuODQsMTUuMTYgMTQuODQsMTUuMTZNNy43NywxN0M3LjI0LDE4LjI0IDYuMzMsMTkgNi4xLDE5QzUuODcsMTkgNi44LDE3LjQgNy43NywxN00xMC45MSwxMC4wN0MxMC45MSwxMCAxMC41NSw3Ljg3IDEwLjkxLDcuOTJDMTEuNDUsOCAxMC45MSwxMCAxMC45MSwxMC4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUGRmQm94ID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlNMTAuNTksMTAuMDhDMTAuNTcsMTAuMTMgMTAuMywxMS44NCA4LjUsMTQuNzdDOC41LDE0Ljc3IDUsMTYuNTggNS44MywxNy45NEM2LjUsMTkgOC4xNSwxNy45IDkuNTYsMTUuMjdDOS41NiwxNS4yNyAxMS4zOCwxNC42MyAxMy43OSwxNC40NUMxMy43OSwxNC40NSAxNy42NSwxNi4xOSAxOC4xNywxNC4zNEMxOC42OSwxMi41IDE1LjEyLDEyLjkgMTQuNSwxMy4wOUMxNC41LDEzLjA5IDEyLjQ2LDExLjc1IDEyLDkuODlDMTIsOS44OSAxMy4xMyw1Ljk1IDExLjM4LDZDOS42Myw2LjA1IDEwLjI5LDkuMTIgMTAuNTksMTAuMDhNMTEuNCwxMS4xM0MxMS40MywxMS4xMyAxMS44NywxMi4zMyAxMy4yOSwxMy41OEMxMy4yOSwxMy41OCAxMC45NiwxNC4wNCA5LjksMTQuNUM5LjksMTQuNSAxMC45LDEyLjc1IDExLjQsMTEuMTNNMTUuMzIsMTMuODRDMTUuOSwxMy42OSAxNy42NCwxNCAxNy41OCwxNC4zMkMxNy41LDE0LjY1IDE1LjMyLDEzLjg0IDE1LjMyLDEzLjg0TTguMjYsMTUuN0M3LjczLDE2LjkxIDYuODMsMTcuNjggNi42LDE3LjY3QzYuMzcsMTcuNjYgNy4zLDE2LjA3IDguMjYsMTUuN00xMS40LDguNzZDMTEuMzksOC43MSAxMS4wMyw2LjU3IDExLjQsNi42MUMxMS45NCw2LjY3IDExLjQsOC43MSAxMS40LDguNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVBkZkJveE91dGxpbmUgPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTkgNVYxOUg1VjVIMTlNMTcuOSAxMy41QzE3LjYgMTMgMTYuOSAxMi44IDE1LjcgMTIuOEMxNS4zIDEyLjggMTQuOSAxMi44IDE0LjUgMTIuOUMxNC4yIDEyLjcgMTMuOSAxMi41IDEzLjcgMTIuM0MxMy4xIDExLjggMTIuNSAxMC45IDEyLjIgOS44VjkuN0MxMi41IDguNCAxMi44IDYuOSAxMi4yIDYuMkMxMS45IDYuMSAxMS43IDYgMTEuNSA2SDExLjNDMTAuOSA2IDEwLjYgNi40IDEwLjUgNi43QzEwLjEgOCAxMC40IDguNyAxMC43IDkuOUMxMC41IDEwLjggMTAuMSAxMS43IDkuNyAxMi43QzkuMyAxMy40IDkgMTQgOC43IDE0LjVDOC4zIDE0LjcgOCAxNC44IDcuOCAxNUM2LjcgMTUuNyA2LjEgMTYuNSA2IDE3VjE3LjVMNi41IDE3LjhDNi43IDE4IDYuOCAxOCA3IDE4QzcuOCAxOCA4LjcgMTcuMSA5LjkgMTVIMTBDMTEgMTQuNyAxMi4yIDE0LjUgMTMuOSAxNC4zQzE0LjkgMTQuOCAxNi4xIDE1IDE2LjggMTVDMTcuMiAxNSAxNy41IDE0LjkgMTcuNyAxNC43QzE3LjkgMTQuNSAxOCAxNC4zIDE4IDE0LjFDMTggMTMuOCAxOCAxMy42IDE3LjkgMTMuNU02LjggMTcuM0M2LjggMTYuOSA3LjMgMTYuMyA4IDE1LjdDOC4xIDE1LjYgOC4zIDE1LjUgOC41IDE1LjRDNy44IDE2LjUgNy4yIDE3LjIgNi44IDE3LjNNMTEuMyA2LjdDMTEuMyA2LjcgMTEuMyA2LjYgMTEuNCA2LjZIMTEuNUMxMS43IDYuOCAxMS43IDcuMSAxMS42IDcuN1Y3LjlDMTEuNSA4LjEgMTEuNSA4LjQgMTEuNCA4LjdDMTEuMSA3LjggMTEuMSA3LjEgMTEuMyA2LjdNMTAuMSAxNC4zSDEwQzEwLjEgMTQgMTAuMyAxMy43IDEwLjUgMTMuM0MxMC45IDEyLjUgMTEuMyAxMS43IDExLjUgMTFDMTEuOSAxMS45IDEyLjQgMTIuNiAxMyAxMy4xQzEzLjEgMTMuMiAxMy4zIDEzLjMgMTMuNCAxMy40QzEyLjUgMTMuNSAxMS4zIDEzLjggMTAuMSAxNC4zTTE3LjMgMTQuMkgxNy4xQzE2LjcgMTQuMiAxNiAxNCAxNS4zIDEzLjdDMTUuNCAxMy42IDE1LjUgMTMuNiAxNS41IDEzLjZDMTYuOSAxMy42IDE3LjIgMTMuOCAxNy4zIDEzLjlMMTcuNCAxNEMxNy40IDE0LjIgMTcuNCAxNC4yIDE3LjMgMTQuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUGRmT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTAuOTIsMTIuMzFDMTAuNjgsMTEuNTQgMTAuMTUsOS4wOCAxMS41NSw5LjA0QzEyLjk1LDkgMTIuMDMsMTIuMTYgMTIuMDMsMTIuMTZDMTIuNDIsMTMuNjUgMTQuMDUsMTQuNzIgMTQuMDUsMTQuNzJDMTQuNTUsMTQuNTcgMTcuNCwxNC4yNCAxNywxNS43MkMxNi41NywxNy4yIDEzLjUsMTUuODEgMTMuNSwxNS44MUMxMS41NSwxNS45NSAxMC4wOSwxNi40NyAxMC4wOSwxNi40N0M4Ljk2LDE4LjU4IDcuNjQsMTkuNSA3LjEsMTguNjFDNi40MywxNy41IDkuMjMsMTYuMDcgOS4yMywxNi4wN0MxMC42OCwxMy43MiAxMC45LDEyLjM1IDEwLjkyLDEyLjMxTTExLjU3LDEzLjE1QzExLjE3LDE0LjQ1IDEwLjM3LDE1Ljg0IDEwLjM3LDE1Ljg0QzExLjIyLDE1LjUgMTMuMDgsMTUuMTEgMTMuMDgsMTUuMTFDMTEuOTQsMTQuMTEgMTEuNTksMTMuMTYgMTEuNTcsMTMuMTVNMTQuNzEsMTUuMzJDMTQuNzEsMTUuMzIgMTYuNDYsMTUuOTcgMTYuNSwxNS43MUMxNi41NywxNS40NCAxNS4xNywxNS4yIDE0LjcxLDE1LjMyTTkuMDUsMTYuODFDOC4yOCwxNy4xMSA3LjU0LDE4LjM5IDcuNzIsMTguMzlDNy45LDE4LjQgOC42MywxNy43OSA5LjA1LDE2LjgxTTExLjU3LDExLjI2QzExLjU3LDExLjIxIDEyLDkuNTggMTEuNTcsOS41M0MxMS4yNyw5LjUgMTEuNTYsMTEuMjIgMTEuNTcsMTEuMjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVBlcmNlbnQgPSBcIk0xNCwyTDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwySDE0TTcuMzcsMjBMMTUsMTIuMzVMMTMuNjUsMTFMNiwxOC42NUw3LjM3LDIwTTEzLDlIMTguNUwxMywzLjVWOU03LjUsMTFBMS41LDEuNSAwIDAsMCA2LDEyLjVBMS41LDEuNSAwIDAsMCA3LjUsMTRBMS41LDEuNSAwIDAsMCA5LDEyLjVBMS41LDEuNSAwIDAsMCA3LjUsMTFNMTMuNSwxN0ExLjUsMS41IDAgMCwwIDEyLDE4LjVBMS41LDEuNSAwIDAsMCAxMy41LDIwQTEuNSwxLjUgMCAwLDAgMTUsMTguNUExLjUsMS41IDAgMCwwIDEzLjUsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVBlcmNlbnRPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTEwIDExLjVDMTAgMTIuMzMgOS4zMyAxMyA4LjUgMTNTNyAxMi4zMyA3IDExLjUgNy42NyAxMCA4LjUgMTAgMTAgMTAuNjcgMTAgMTEuNU0xNiAxNy41QzE2IDE4LjMzIDE1LjMzIDE5IDE0LjUgMTlTMTMgMTguMzMgMTMgMTcuNSAxMy42NyAxNiAxNC41IDE2IDE2IDE2LjY3IDE2IDE3LjVNMTYgMTEuMzVMOC4zNyAxOUw3IDE3LjY1TDE0LjY1IDEwTDE2IDExLjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVQaG9uZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjg5IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY4TDE0IDJNMTcgMTkuNDRDMTcgMTkuNzUgMTYuNzUgMjAgMTYuNDQgMjBDMTEuMjMgMjAgNyAxNS43NyA3IDEwLjU2QzcgMTAuMjUgNy4yNSAxMCA3LjU2IDEwSDkuNUM5LjgxIDEwIDEwLjA2IDEwLjI1IDEwLjA2IDEwLjU2QzEwLjA2IDExLjI1IDEwLjE3IDExLjkyIDEwLjM3IDEyLjU0QzEwLjQzIDEyLjczIDEwLjM5IDEyLjk1IDEwLjIzIDEzLjExTDkgMTQuMzNDOS44MSAxNS45IDExLjEgMTcuMTkgMTIuNjcgMThMMTMuOSAxNi43N0MxNC4wNSAxNi42MSAxNC4yNyAxNi41NyAxNC40NiAxNi42M0MxNS4wOCAxNi44MyAxNS43NSAxNi45NSAxNi40NSAxNi45NUMxNi43NSAxNi45NSAxNyAxNy4xOSAxNyAxNy41VjE5LjQ0TTEzIDlWMy41TDE4LjUgOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUGhvbmVPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTkgMTMuMzNDOS44MSAxNC45IDExLjEgMTYuMTkgMTIuNjcgMTdMMTMuODkgMTUuNzdDMTQuMDUgMTUuNjEgMTQuMjcgMTUuNTcgMTQuNDYgMTUuNjNDMTUuMDggMTUuODMgMTUuNzUgMTUuOTUgMTYuNDQgMTUuOTVDMTYuNzUgMTUuOTUgMTcgMTYuMTkgMTcgMTYuNVYxOC40NUMxNyAxOC43NSAxNi43NSAxOSAxNi40NCAxOUMxMS4yMyAxOSA3IDE0Ljc3IDcgOS41NkM3IDkuMjUgNy4yNSA5IDcuNTYgOUg5LjVDOS44MSA5IDEwLjA2IDkuMjUgMTAuMDYgOS41NkMxMC4wNiAxMC4yNSAxMC4xNyAxMC45MiAxMC4zNyAxMS41NEMxMC40MyAxMS43MyAxMC4zOSAxMS45NSAxMC4yMyAxMi4xMUw5IDEzLjMzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVQbHVzID0gXCJNMTMsOUgxOC41TDEzLDMuNVY5TTYsMkgxNEwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWNEM0LDIuODkgNC44OSwyIDYsMk0xMSwxNVYxMkg5VjE1SDZWMTdIOVYyMEgxMVYxN0gxNFYxNUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUGx1c091dGxpbmUgPSBcIk0xMiwxNFYxMUgxMFYxNEg3VjE2SDEwVjE5SDEyVjE2SDE1VjE0TTE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNMTgsMjBINlY0SDEzVjlIMThcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUG93ZXJwb2ludCA9IFwiTTEyLjYsMTIuM0gxMC42VjE1LjVIMTIuN0MxMy4zLDE1LjUgMTMuNiwxNS4zIDEzLjksMTVDMTQuMiwxNC43IDE0LjMsMTQuNCAxNC4zLDEzLjlDMTQuMywxMy40IDE0LjIsMTMuMSAxMy45LDEyLjhDMTMuNiwxMi41IDEzLjIsMTIuMyAxMi42LDEyLjNNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xNS4yLDE2QzE0LjYsMTYuNSAxNC4xLDE2LjcgMTIuOCwxNi43SDEwLjZWMjBIOVYxMUgxMi44QzE0LjEsMTEgMTQuNywxMS4zIDE1LjIsMTEuOEMxNS44LDEyLjQgMTYsMTMgMTYsMTMuOUMxNiwxNC44IDE1LjgsMTUuNSAxNS4yLDE2TTEzLDlWMy41TDE4LjUsOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUG93ZXJwb2ludEJveCA9IFwiTTkuOCwxMy40SDEyLjNDMTMuOCwxMy40IDE0LjQ2LDEzLjEyIDE1LjEsMTIuNThDMTUuNzQsMTIuMDMgMTYsMTEuMjUgMTYsMTAuMjNDMTYsOS4yNiAxNS43NSw4LjUgMTUuMSw3Ljg4QzE0LjQ1LDcuMjkgMTMuODMsNyAxMi4zLDdIOFYxN0g5LjhWMTMuNE0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVDMywzLjg5IDMuOSwzIDUsM0gxOU05LjgsMTJWOC40SDEyLjFDMTIuNzYsOC40IDEzLjI3LDguNjUgMTMuNiw5QzEzLjkzLDkuMzUgMTQuMSw5LjcyIDE0LjEsMTAuMjRDMTQuMSwxMC44IDEzLjkyLDExLjE5IDEzLjYsMTEuNUMxMy4yOCwxMS44MSAxMi45LDEyIDEyLjIyLDEySDkuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUG93ZXJwb2ludEJveE91dGxpbmUgPSBcIk01IDNDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM0g1TTUgNUgxOVYxOUg1VjVNMTUuMSA3Ljg4QzE0LjQ1IDcuMjkgMTMuODMgNyAxMi4zIDdIOFYxN0g5LjhWMTMuNEgxMi4zQzEzLjggMTMuNCAxNC40NiAxMy4xMiAxNS4xIDEyLjU4QzE1Ljc0IDEyLjAzIDE2IDExLjI1IDE2IDEwLjIzQzE2IDkuMjYgMTUuNzUgOC41IDE1LjEgNy44OE0xMy42IDExLjVDMTMuMjggMTEuODEgMTIuOSAxMiAxMi4yMiAxMkg5LjhWOC40SDEyLjFDMTIuNzYgOC40IDEzLjI3IDguNjUgMTMuNiA5QzEzLjkzIDkuMzUgMTQuMSA5LjcyIDE0LjEgMTAuMjRDMTQuMSAxMC44IDEzLjkyIDExLjE5IDEzLjYgMTEuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUG93ZXJwb2ludE91dGxpbmUgPSBcIk0xNCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNMTUuMiAxMC44QzE0LjcgMTAuMyAxNC4xIDEwIDEyLjggMTBIOVYxOUgxMC42VjE1LjdIMTIuOEMxNC4xIDE1LjcgMTQuNiAxNS41IDE1LjIgMTVDMTUuOCAxNC41IDE2IDEzLjggMTYgMTIuOUMxNiAxMiAxNS44IDExLjQgMTUuMiAxMC44TTEzLjkgMTRDMTMuNiAxNC4zIDEzLjMgMTQuNSAxMi43IDE0LjVIMTAuNlYxMS4zSDEyLjZDMTMuMiAxMS4zIDEzLjYgMTEuNSAxMy45IDExLjhDMTQuMiAxMi4xIDE0LjMgMTIuNCAxNC4zIDEyLjlTMTQuMiAxMy43IDEzLjkgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVByZXNlbnRhdGlvbkJveCA9IFwiTTE5LDE2SDVWOEgxOU0xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUXVlc3Rpb24gPSBcIk02LDJDNC44OSwyIDQsMi44OSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMkg2TTEzLDMuNUwxOC41LDlIMTNWMy41TTEyLDExQTMsMyAwIDAsMSAxNSwxNEMxNSwxNS44OCAxMi43NSwxNi4wNiAxMi43NSwxNy43NUgxMS4yNUMxMS4yNSwxNS4zMSAxMy41LDE1LjUgMTMuNSwxNEExLjUsMS41IDAgMCwwIDEyLDEyLjVBMS41LDEuNSAwIDAsMCAxMC41LDE0SDlBMywzIDAgMCwxIDEyLDExTTExLjI1LDE4LjVIMTIuNzVWMjBIMTEuMjVWMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUXVlc3Rpb25PdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTE1IDEzQzE1IDE0Ljg5IDEyLjc1IDE1LjA3IDEyLjc1IDE2Ljc2SDExLjI1QzExLjI1IDE0LjMyIDEzLjUgMTQuNSAxMy41IDEzQzEzLjUgMTIuMTggMTIuODMgMTEuNSAxMiAxMS41UzEwLjUgMTIuMTggMTAuNSAxM0g5QzkgMTEuMzUgMTAuMzQgMTAgMTIgMTBTMTUgMTEuMzUgMTUgMTNNMTIuNzUgMTcuNVYxOUgxMS4yNVYxNy41SDEyLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZWZyZXNoID0gXCJNMTggMTQuNUMxOS4xMSAxNC41IDIwLjExIDE0Ljk1IDIwLjgzIDE1LjY3TDIyIDE0LjVWMTguNUgxOEwxOS43NyAxNi43M0MxOS4zMiAxNi4yOCAxOC42OSAxNiAxOCAxNkMxNi42MiAxNiAxNS41IDE3LjEyIDE1LjUgMTguNUMxNS41IDE5Ljg4IDE2LjYyIDIxIDE4IDIxQzE4LjgyIDIxIDE5LjU0IDIwLjYxIDIwIDIwSDIxLjcxQzIxLjEyIDIxLjQ3IDE5LjY4IDIyLjUgMTggMjIuNUMxNS43OSAyMi41IDE0IDIwLjcxIDE0IDE4LjVDMTQgMTYuMjkgMTUuNzkgMTQuNSAxOCAxNC41TTEzIDlIMTguNUwxMyAzLjVWOU02IDJIMTRMMjAgOFYxMi4xN0MxOS41IDEyLjA2IDE5IDEyIDE4LjUgMTJDMTQuOTEgMTIgMTIgMTQuOTEgMTIgMTguNUMxMiAxOS43OSAxMi4zNyAyMSAxMyAyMkg2QzQuODggMjIgNCAyMS4xIDQgMjBMNCA0QzQgMi44OSA0Ljg5IDIgNiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZWZyZXNoT3V0bGluZSA9IFwiTTE4IDE0LjVDMTkuMTEgMTQuNSAyMC4xMSAxNC45NSAyMC44MyAxNS42N0wyMiAxNC41VjE4LjVIMThMMTkuNzcgMTYuNzNDMTkuMzIgMTYuMjggMTguNjkgMTYgMTggMTZDMTYuNjIgMTYgMTUuNSAxNy4xMiAxNS41IDE4LjVDMTUuNSAxOS44OCAxNi42MiAyMSAxOCAyMUMxOC44MiAyMSAxOS41NCAyMC42MSAyMCAyMEgyMS43MUMyMS4xMiAyMS40NyAxOS42OCAyMi41IDE4IDIyLjVDMTUuNzkgMjIuNSAxNCAyMC43MSAxNCAxOC41QzE0IDE2LjI5IDE1Ljc5IDE0LjUgMTggMTQuNU0xNCAyTDIwIDhWMTIuMTdDMTkuNSAxMi4wNiAxOSAxMiAxOC41IDEyTDE4IDEyVjlIMTNWNEg2VjIwSDEyLjE3QzEyLjM0IDIwLjcyIDEyLjYzIDIxLjM5IDEzIDIySDZDNC45IDIyIDQgMjEuMSA0IDIwVjRDNCAyLjkgNC45IDIgNiAySDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZW1vdmUgPSBcIk02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNMTMsOUgxOC41TDEzLDMuNVY5TTEwLDE0LjU5TDcuODgsMTIuNDZMNi40NiwxMy44OEw4LjU5LDE2TDYuNDYsMTguMTJMNy44OCwxOS41NEwxMCwxNy40MUwxMi4xMiwxOS41NEwxMy41NCwxOC4xMkwxMS40MSwxNkwxMy41NCwxMy44OEwxMi4xMiwxMi40NkwxMCwxNC41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUmVtb3ZlT3V0bGluZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjkgNCA0VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE5LjExIDIyIDIwIDIxLjExIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xMS45NSAxNS40NkwxNC4wOCAxNy41OEwxMi42NiAxOUwxMC41NCAxNi44N0w4LjQyIDE5TDcgMTcuNThMOS4xMyAxNS40Nkw3IDEzLjM0TDguNDIgMTEuOTJMMTAuNTQgMTQuMDVMMTIuNjYgMTEuOTJMMTQuMDggMTMuMzRMMTEuOTUgMTUuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVJlcGxhY2UgPSBcIk0xNCwxMkgxOS41TDE0LDYuNVYxMk04LDVIMTVMMjEsMTFWMjFBMiwyIDAgMCwxIDE5LDIzSDhDNi44OSwyMyA2LDIyLjEgNiwyMVYxOEgxMVYyMEwxNSwxN0wxMSwxNFYxNkg2VjdBMiwyIDAgMCwxIDgsNU0xMy41LDNINFYxNkg2VjE4SDRBMiwyIDAgMCwxIDIsMTZWM0EyLDIgMCAwLDEgNCwxSDExLjVMMTMuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZXBsYWNlT3V0bGluZSA9IFwiTTE0LDNMMTIsMUg0QTIsMiAwIDAsMCAyLDNWMTVBMiwyIDAgMCwwIDQsMTdIMTFWMTlMMTUsMTZMMTEsMTNWMTVINFYzSDE0TTIxLDEwVjIxQTIsMiAwIDAsMSAxOSwyM0g4QTIsMiAwIDAsMSA2LDIxVjE5SDhWMjFIMTlWMTJIMTRWN0g4VjEzSDZWN0EyLDIgMCAwLDEgOCw1SDE2TDIxLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZXN0b3JlID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xMiwxOEM5Ljk1LDE4IDguMTksMTYuNzYgNy40MiwxNUg5LjEzQzkuNzYsMTUuOSAxMC44MSwxNi41IDEyLDE2LjVBMy41LDMuNSAwIDAsMCAxNS41LDEzQTMuNSwzLjUgMCAwLDAgMTIsOS41QzEwLjY1LDkuNSA5LjUsMTAuMjggOC45LDExLjRMMTAuNSwxM0g2LjVWOUw3LjgsMTAuM0M4LjY5LDguOTIgMTAuMjMsOCAxMiw4QTUsNSAwIDAsMSAxNywxM0E1LDUgMCAwLDEgMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVJlc3RvcmVPdXRsaW5lID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNMMTggOVYyME0xNyAxMy4yNEMxNyAxNS44NiAxNC44NyAxOCAxMi4yNCAxOEMxMC4yOSAxOCA4LjYxIDE2LjgyIDcuODggMTUuMTRIOS41QzEwLjExIDE2IDExLjExIDE2LjU3IDEyLjI0IDE2LjU3QzE0LjA4IDE2LjU3IDE1LjU3IDE1LjA3IDE1LjU3IDEzLjI0UzE0LjA4IDkuOSAxMi4yNCA5LjlDMTAuOTUgOS45IDkuODYgMTAuNjUgOS4yOSAxMS43MUwxMC44MSAxMy4yNEg3VjkuNDNMOC4yNCAxMC42N0M5LjA5IDkuMzUgMTAuNTUgOC41IDEyLjI0IDguNUMxNC44NyA4LjQ3IDE3IDEwLjYxIDE3IDEzLjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVTZWFyY2ggPSBcIk0xNCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxM0MxMi41OSwyMS43NSAxMi4yLDIxLjQ0IDExLjg2LDIxLjFDOS4yMiwxOC42NyA5LjA1LDE0LjU2IDExLjUsMTEuOTJDMTMuNjksOS41IDE3LjMzLDkuMTMgMjAsMTFWOEwxNCwyTTEzLDlWMy41TDE4LjUsOUgxM00yMC4zMSwxOC45QzIxLjY0LDE2Ljc5IDIxLDE0IDE4LjkxLDEyLjY4QzE2LjgsMTEuMzUgMTQsMTIgMTIuNjksMTQuMDhDMTEuMzUsMTYuMTkgMTIsMTguOTcgMTQuMDksMjAuM0MxNS41NSwyMS4yMyAxNy40MSwyMS4yMyAxOC44OCwyMC4zMkwyMiwyMy4zOUwyMy4zOSwyMkwyMC4zMSwxOC45TTE2LjUsMTlBMi41LDIuNSAwIDAsMSAxNCwxNi41QTIuNSwyLjUgMCAwLDEgMTYuNSwxNEEyLjUsMi41IDAgMCwxIDE5LDE2LjVBMi41LDIuNSAwIDAsMSAxNi41LDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVTZWFyY2hPdXRsaW5lID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMTNDMTIuNTksMjEuNzUgMTIuMiwyMS40NCAxMS44NiwyMS4xQzExLjUzLDIwLjc3IDExLjI1LDIwLjQgMTEsMjBINlY0SDEzVjlIMThWMTAuMThDMTguNzEsMTAuMzQgMTkuMzksMTAuNjEgMjAsMTFWOEwxNCwyTTIwLjMxLDE4LjlDMjEuNjQsMTYuNzkgMjEsMTQgMTguOTEsMTIuNjhDMTYuOCwxMS4zNSAxNCwxMiAxMi42OSwxNC4wOEMxMS4zNSwxNi4xOSAxMiwxOC45NyAxNC4wOSwyMC4zQzE1LjU1LDIxLjIzIDE3LjQxLDIxLjIzIDE4Ljg4LDIwLjMyTDIyLDIzLjM5TDIzLjM5LDIyTDIwLjMxLDE4LjlNMTYuNSwxOUEyLjUsMi41IDAgMCwxIDE0LDE2LjVBMi41LDIuNSAwIDAsMSAxNi41LDE0QTIuNSwyLjUgMCAwLDEgMTksMTYuNUEyLjUsMi41IDAgMCwxIDE2LjUsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVNlbmQgPSBcIk0xNCwySDZDNC44OSwyIDQsMi44OSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xMi41NCwxOS4zN1YxNy4zN0g4LjU0VjE1LjM4SDEyLjU0VjEzLjM4TDE1LjU0LDE2LjM4TDEyLjU0LDE5LjM3TTEzLDlWMy41TDE4LjUsOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU2VuZE91dGxpbmUgPSBcIk0xNCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNMTIuNTQgMTguNVYxNi41SDguNTRWMTQuNUgxMi41NFYxMi41TDE1LjU0IDE1LjVMMTIuNTQgMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU2V0dGluZ3MgPSBcIk02IDBDNC44OSAwIDQgLjg5IDQgMlYxOEEyIDIgMCAwIDAgNiAyMEgxOEEyIDIgMCAwIDAgMjAgMThWNkwxNCAwSDZNMTMgMS41TDE4LjUgN0gxM1YxLjVNNyAyMlYyNEg5VjIySDdNMTEgMjJWMjRIMTNWMjJIMTFNMTUgMjJWMjRIMTdWMjJIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVNldHRpbmdzT3V0bGluZSA9IFwiTTYgMEEyIDIgMCAwIDAgNCAyVjE4QTIgMiAwIDAgMCA2IDIwSDE4QTIgMiAwIDAgMCAyMCAxOFY2TDE0IDBINk02IDJIMTNWN0gxOFYxOEg2VjJNNyAyMlYyNEg5VjIySDdNMTEgMjJWMjRIMTNWMjJIMTFNMTUgMjJWMjRIMTdWMjJIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVN0YXIgPSBcIk0xNCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xNC41IDE4LjlMMTIgMTcuNUw5LjUgMTlMMTAuMiAxNi4yTDggMTQuM0wxMC45IDE0LjFMMTIgMTEuNEwxMy4xIDE0TDE2IDE0LjJMMTMuOCAxNi4xTDE0LjUgMTguOU0xMyA5VjMuNUwxOC41IDlIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVN0YXJPdXRsaW5lID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME05LjUgMThMMTAuMiAxNS4yTDggMTMuM0wxMC45IDEzLjFMMTIgMTAuNEwxMy4xIDEzTDE2IDEzLjJMMTMuOCAxNS4xTDE0LjUgMTcuOUwxMiAxNi41TDkuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU3dhcCA9IFwiTTE0IDJINkEyIDIgMCAwIDAgNCA0VjIwQTIgMiAwIDAgMCA2IDIySDE4QTIgMiAwIDAgMCAyMCAyMFY4TTE0IDE4VjE2SDEwVjE4TDcgMTVMMTAgMTJWMTRIMTRWMTJMMTcgMTVNMTMgOVYzLjVMMTguNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVTd2FwT3V0bGluZSA9IFwiTTE3IDE1TDE0IDEyVjE0SDEwVjEyTDcgMTVMMTAgMThWMTZIMTRWMThNMTQgMkg2QTIgMiAwIDAgMCA0IDRWMjBBMiAyIDAgMCAwIDYgMjJIMThBMiAyIDAgMCAwIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU3luYyA9IFwiTTExIDE3LjVDMTEgMTMuOSAxMy45IDExIDE3LjUgMTFDMTguNCAxMSAxOS4yIDExLjIgMjAgMTEuNVY4TDE0IDJINkM0LjkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDEyLjhDMTEuNyAyMC44IDExIDE5LjIgMTEgMTcuNU0xMyAzLjVMMTguNSA5SDEzVjMuNU0xNyAxMlYxMy41QzE5LjIgMTMuNSAyMSAxNS4zIDIxIDE3LjVDMjEgMTguMyAyMC44IDE5LjEgMjAuMyAxOS43TDE5LjIgMTguNkMxOS40IDE4LjMgMTkuNSAxNy45IDE5LjUgMTcuNUMxOS41IDE2LjEgMTguNCAxNSAxNyAxNVYxNi41TDE0LjggMTQuM0wxNyAxMk0xNyAyM1YyMS41QzE0LjggMjEuNSAxMyAxOS43IDEzIDE3LjVDMTMgMTYuNyAxMy4yIDE1LjkgMTMuNyAxNS4zTDE0LjggMTYuNEMxNC42IDE2LjcgMTQuNSAxNy4xIDE0LjUgMTcuNUMxNC41IDE4LjkgMTUuNiAyMCAxNyAyMFYxOC41TDE5LjIgMjAuN0wxNyAyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU3luY091dGxpbmUgPSBcIk0xMi44IDIySDZDNC45IDIyIDQgMjEuMSA0IDIwVjRDNCAyLjkgNC45IDIgNiAySDE0TDIwIDhWMTEuNUMxOS40IDExLjIgMTguNyAxMS4xIDE4IDExVjlIMTNWNEg2VjIwSDExLjVDMTEuOCAyMC43IDEyLjMgMjEuNCAxMi44IDIyTTE3IDEyTDE0LjggMTQuMkwxNyAxNi40VjE1QzE4LjQgMTUgMTkuNSAxNi4xIDE5LjUgMTcuNUMxOS41IDE3LjkgMTkuNCAxOC4zIDE5LjIgMTguNkwyMC4zIDE5LjdDMjAuNyAxOS4xIDIxIDE4LjMgMjEgMTcuNUMyMSAxNS4zIDE5LjIgMTMuNSAxNyAxMy41VjEyTTE5LjIgMjAuOEwxNyAxOC41VjIwQzE1LjYgMjAgMTQuNSAxOC45IDE0LjUgMTcuNUMxNC41IDE3LjEgMTQuNiAxNi43IDE0LjggMTYuNEwxMy43IDE1LjNDMTMuMyAxNS45IDEzIDE2LjcgMTMgMTcuNUMxMyAxOS43IDE0LjggMjEuNSAxNyAyMS41VjIzTDE5LjIgMjAuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlVGFibGUgPSBcIk0xNCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWOEwxNCwyTTEwLDE5SDdWMTdIMTBWMTlNMTAsMTZIN1YxNEgxMFYxNk0xMCwxM0g3VjExSDEwVjEzTTE0LDE5SDExVjE3SDE0VjE5TTE0LDE2SDExVjE0SDE0VjE2TTE0LDEzSDExVjExSDE0VjEzTTEzLDlWMy41TDE4LjUsOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlVGFibGVCb3ggPSBcIk0xOSAzSDVDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuODkgMjAuMSAzIDE5IDNNOSAxOEg2VjE2SDlWMThNOSAxNUg2VjEzSDlWMTVNOSAxMkg2VjEwSDlWMTJNMTMgMThIMTBWMTZIMTNWMThNMTMgMTVIMTBWMTNIMTNWMTVNMTMgMTJIMTBWMTBIMTNWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRhYmxlQm94TXVsdGlwbGUgPSBcIk0zIDVWMjFIMTlWMjNIM0MxLjkgMjMgMSAyMi4xIDEgMjFWNUgzTTIxIDFIN0M1Ljg5IDEgNSAxLjg5IDUgM1YxN0M1IDE4LjExIDUuOSAxOSA3IDE5SDIxQzIyLjExIDE5IDIzIDE4LjExIDIzIDE3VjNDMjMgMS44OSAyMi4xIDEgMjEgMU0xMSAxNkg4VjE0SDExVjE2TTExIDEzSDhWMTFIMTFWMTNNMTEgMTBIOFY4SDExVjEwTTE1IDE2SDEyVjE0SDE1VjE2TTE1IDEzSDEyVjExSDE1VjEzTTE1IDEwSDEyVjhIMTVWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRhYmxlQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMyA1VjIxSDE5VjIzSDNDMS45IDIzIDEgMjIuMSAxIDIxVjVIM00yMSAxSDdDNS44OSAxIDUgMS44OSA1IDNWMTdDNSAxOC4xIDUuOSAxOSA3IDE5SDIxQzIyLjExIDE5IDIzIDE4LjExIDIzIDE3VjNDMjMgMS45IDIyLjEgMSAyMSAxTTIxIDE3SDdWM0gyMVYxN00xMSAxNEg4VjE2SDExVjE0TTE1IDE0SDEyVjE2SDE1VjE0TTExIDExSDhWMTNIMTFWMTFNMTUgMTFIMTJWMTNIMTVWMTFNMTEgOEg4VjEwSDExVjhNMTUgOEgxMlYxMEgxNVY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVUYWJsZUJveE91dGxpbmUgPSBcIk0xOSAzSDVDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM00xOSAxOUg1VjVIMTlWMTlNOSAxOEg2VjE2SDlWMThNMTMgMThIMTBWMTZIMTNWMThNOSAxNUg2VjEzSDlWMTVNMTMgMTVIMTBWMTNIMTNWMTVNOSAxMkg2VjEwSDlWMTJNMTMgMTJIMTBWMTBIMTNWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRhYmxlT3V0bGluZSA9IFwiTTE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNMTgsMjBINlY0SDEzVjlIMThWMjBNMTAsMTNIN1YxMUgxMFYxM00xNCwxM0gxMVYxMUgxNFYxM00xMCwxNkg3VjE0SDEwVjE2TTE0LDE2SDExVjE0SDE0VjE2TTEwLDE5SDdWMTdIMTBWMTlNMTQsMTlIMTFWMTdIMTRWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRyZWUgPSBcIk0zLDNIOVY3SDNWM00xNSwxMEgyMVYxNEgxNVYxME0xNSwxN0gyMVYyMUgxNVYxN00xMywxM0g3VjE4SDEzVjIwSDdMNSwyMFY5SDdWMTFIMTNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRyZWVPdXRsaW5lID0gXCJNMTIgMTNIN1YxOEgxMlYyMEg1VjEwSDdWMTFIMTJWMTNNOCA0VjZINFY0SDhNMTAgMkgyVjhIMTBWMk0yMCAxMVYxM0gxNlYxMUgyME0yMiA5SDE0VjE1SDIyVjlNMjAgMThWMjBIMTZWMThIMjBNMjIgMTZIMTRWMjJIMjJWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVVuZG8gPSBcIk0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFY0QzQsMi44OSA0Ljg5LDIgNiwyTTEyLjE2LDE0LjMxQzEwLjYsMTQuMzEgOS4xOSwxNC44OSA4LjExLDE1LjgzTDYsMTMuNzJWMTlIMTEuMjhMOS4xNSwxNi44OEM5Ljk3LDE2LjIgMTEsMTUuNzggMTIuMTYsMTUuNzhDMTQuMjMsMTUuNzggMTYsMTcuMTMgMTYuNjEsMTlMMTgsMTguNTRDMTcuMTksMTYuMDkgMTQuODgsMTQuMzEgMTIuMTYsMTQuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVVuZG9PdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTE3IDE3LjYxTDE1Ljg0IDE4QzE1LjMzIDE2LjQ0IDEzLjg2IDE1LjMxIDEyLjEzIDE1LjMxQzExLjE3IDE1LjMxIDEwLjMxIDE1LjY2IDkuNjMgMTYuMjNMMTEuNCAxOEg3VjEzLjZMOC43NiAxNS4zNkM5LjY2IDE0LjU3IDEwLjgzIDE0LjA5IDEyLjEzIDE0LjA5QzE0LjQgMTQuMDkgMTYuMzMgMTUuNTcgMTcgMTcuNjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVVwbG9hZCA9IFwiTTE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNMTMuNSwxNlYxOUgxMC41VjE2SDhMMTIsMTJMMTYsMTZIMTMuNU0xMyw5VjMuNUwxOC41LDlIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVVwbG9hZE91dGxpbmUgPSBcIk0xNCwyTDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwySDE0TTE4LDIwVjlIMTNWNEg2VjIwSDE4TTEyLDEyTDE2LDE2SDEzLjVWMTlIMTAuNVYxNkg4TDEyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVWaWRlbyA9IFwiTTEzLDlIMTguNUwxMywzLjVWOU02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNMTcsMTlWMTNMMTQsMTUuMlYxM0g3VjE5SDE0VjE2LjhMMTcsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVZpZGVvT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTYsMThMMTMuNSwxNi4zVjE4SDhWMTNIMTMuNVYxNC43TDE2LDEzVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVXb3JkID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xNS4yLDIwSDEzLjhMMTIsMTMuMkwxMC4yLDIwSDguOEw2LjYsMTFIOC4xTDkuNSwxNy44TDExLjMsMTFIMTIuNkwxNC40LDE3LjhMMTUuOCwxMUgxNy4zTDE1LjIsMjBNMTMsOVYzLjVMMTguNSw5SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVXb3JkQm94ID0gXCJNMTUuNSwxN0gxNEwxMiw5LjVMMTAsMTdIOC41TDYuMSw3SDcuOEw5LjM0LDE0LjVMMTEuMyw3SDEyLjdMMTQuNjcsMTQuNUwxNi4yLDdIMTcuOU0xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlV29yZEJveE91dGxpbmUgPSBcIk01IDNDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM0g1TTUgNUgxOVYxOUg1VjVNMTcuOSA3TDE1LjUgMTdIMTRMMTIgOS41TDEwIDE3SDguNUw2LjEgN0g3LjhMOS4zNCAxNC41TDExLjMgN0gxMi43TDE0LjY3IDE0LjVMMTYuMiA3SDE3LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVdvcmRPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTE3LjM1IDEwTDE1LjI1IDE5SDEzLjg1TDEyLjA1IDEyLjIxTDEwLjI1IDE5SDguODVMNi42NSAxMEg4LjE1TDkuNTUgMTYuODFMMTEuMzUgMTBIMTIuNjVMMTQuNDUgMTYuODFMMTUuODUgMTBIMTcuMzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsbSA9IFwiTTMuNSwzSDVWMS44QzUsMS4zNiA1LjM2LDEgNS44LDFIMTAuMkMxMC42NCwxIDExLDEuMzYgMTEsMS44VjNIMTIuNUExLjUsMS41IDAgMCwxIDE0LDQuNVY1SDIyVjIwSDE0VjIwLjVBMS41LDEuNSAwIDAsMSAxMi41LDIySDMuNUExLjUsMS41IDAgMCwxIDIsMjAuNVY0LjVBMS41LDEuNSAwIDAsMSAzLjUsM00xOCw3VjlIMjBWN0gxOE0xNCw3VjlIMTZWN0gxNE0xMCw3VjlIMTJWN0gxME0xNCwxNlYxOEgxNlYxNkgxNE0xOCwxNlYxOEgyMFYxNkgxOE0xMCwxNlYxOEgxMlYxNkgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxtc3RyaXAgPSBcIk0xOCw5SDE2VjdIMThNMTgsMTNIMTZWMTFIMThNMTgsMTdIMTZWMTVIMThNOCw5SDZWN0g4TTgsMTNINlYxMUg4TTgsMTdINlYxNUg4TTE4LDNWNUgxNlYzSDhWNUg2VjNINFYyMUg2VjE5SDhWMjFIMTZWMTlIMThWMjFIMjBWM0gxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxtc3RyaXBCb3ggPSBcIk0xOSAzQzIwLjEgMyAyMSAzLjkgMjEgNVYxOUMyMSAyMC4xIDIwLjEgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xIDMgMTlWNUMzIDMuOSAzLjkgMyA1IDNIMTlNNyAxOFYxNkg1VjE4SDdNNyAxM1YxMUg1VjEzSDdNNyA4VjZINVY4SDdNMTkgMThWMTZIMTdWMThIMTlNMTkgMTNWMTFIMTdWMTNIMTlNMTkgOFY2SDE3VjhIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsbXN0cmlwQm94TXVsdGlwbGUgPSBcIk00LDZIMlYyMEEyLDIgMCAwLDAgNCwyMkgxOFYyMEg0VjZNMjAsMkg4QTIsMiAwIDAsMCA2LDRWMTZBMiwyIDAgMCwwIDgsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRBMiwyIDAgMCwwIDIwLDJNMTAsMTVIOFYxM0gxMFYxNU0xMCwxMUg4VjlIMTBWMTFNMTAsN0g4VjVIMTBWN00yMCwxNUgxOFYxM0gyMFYxNU0yMCwxMUgxOFY5SDIwVjExTTIwLDdIMThWNUgyMFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbG1zdHJpcE9mZiA9IFwiTTEsNC4yN0wyLjI4LDNMMjEsMjEuNzJMMTkuNzMsMjNMMTYsMTkuMjdWMjFIOFYxOUg2VjIxSDRWNy4yN0wxLDQuMjdNMTgsOVY3SDE2VjlIMThNMTgsMTNWMTFIMTZWMTNIMThNMTgsMTVIMTYuODJMNi44Miw1SDhWM0gxNlY1SDE4VjNIMjBWMTguMThMMTgsMTYuMThWMTVNOCwxM1YxMS4yN0w3LjczLDExSDZWMTNIOE04LDE3VjE1SDZWMTdIOE02LDNWNC4xOEw0LjgyLDNINlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXIgPSBcIk0xNCwxMlYxOS44OEMxNC4wNCwyMC4xOCAxMy45NCwyMC41IDEzLjcxLDIwLjcxQzEzLjMyLDIxLjEgMTIuNjksMjEuMSAxMi4zLDIwLjcxTDEwLjI5LDE4LjdDMTAuMDYsMTguNDcgOS45NiwxOC4xNiAxMCwxNy44N1YxMkg5Ljk3TDQuMjEsNC42MkMzLjg3LDQuMTkgMy45NSwzLjU2IDQuMzgsMy4yMkM0LjU3LDMuMDggNC43OCwzIDUsM1YzSDE5VjNDMTkuMjIsMyAxOS40MywzLjA4IDE5LjYyLDMuMjJDMjAuMDUsMy41NiAyMC4xMyw0LjE5IDE5Ljc5LDQuNjJMMTQuMDMsMTJIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyTWVudSA9IFwiTTExIDExTDE2Ljc2IDMuNjJBMSAxIDAgMCAwIDE2LjU5IDIuMjJBMSAxIDAgMCAwIDE2IDJIMkExIDEgMCAwIDAgMS4zOCAyLjIyQTEgMSAwIDAgMCAxLjIxIDMuNjJMNyAxMVYxNi44N0ExIDEgMCAwIDAgNy4yOSAxNy43TDkuMjkgMTkuN0ExIDEgMCAwIDAgMTAuNyAxOS43QTEgMSAwIDAgMCAxMSAxOC44N1YxMU0xMyAxNkwxOCAyMUwyMyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXJNZW51T3V0bGluZSA9IFwiTTEyIDE4Ljg4QTEgMSAwIDAgMSAxMS43MSAxOS43MUExIDEgMCAwIDEgMTAuMyAxOS43MUw2LjMgMTUuNzFBMSAxIDAgMCAxIDYgMTQuODdWOS43NUwxLjIxIDMuNjJBMSAxIDAgMCAxIDEuMzggMi4yMkExIDEgMCAwIDEgMiAySDE2QTEgMSAwIDAgMSAxNi42MiAyLjIyQTEgMSAwIDAgMSAxNi43OSAzLjYyTDEyIDkuNzVWMTguODhNNCA0TDggOS4wNlYxNC41OEwxMCAxNi41OFY5LjA1TDE0IDRNMTMgMTZMMTggMjFMMjMgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyTWludXMgPSBcIk0xMiAxMlYxOS44OEMxMi4wNCAyMC4xOCAxMS45NCAyMC41IDExLjcxIDIwLjcxQzExLjMyIDIxLjEgMTAuNjkgMjEuMSAxMC4zIDIwLjcxTDguMjkgMTguN0M4LjA2IDE4LjQ3IDcuOTYgMTguMTYgOCAxNy44NlYxMkg3Ljk3TDIuMjEgNC42MkMxLjg3IDQuMTkgMS45NSAzLjU2IDIuMzggMy4yMkMyLjU3IDMuMDggMi43OCAzIDMgM1YzSDE3VjNDMTcuMjIgMyAxNy40MyAzLjA4IDE3LjYyIDMuMjJDMTguMDUgMy41NiAxOC4xMyA0LjE5IDE3Ljc5IDQuNjJMMTIuMDMgMTJIMTJNMTUgMTdIMjNWMTlIMTVWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyTWludXNPdXRsaW5lID0gXCJNMTUgMTdIMjNWMTlIMTVWMTdNMTMgMTkuODhDMTMuMDQgMjAuMTggMTIuOTQgMjAuNSAxMi43MiAyMC43MUMxMi4zMiAyMS4xIDExLjY5IDIxLjEgMTEuMyAyMC43MUw3LjI5IDE2LjdDNy4wNiAxNi40NyA2Ljk2IDE2LjE2IDcgMTUuODdWMTAuNzVMMi4yMSA0LjYyQzEuODcgNC4xOSAxLjk1IDMuNTYgMi4zOCAzLjIyQzIuNTcgMy4wOCAyLjc4IDMgMyAzVjNIMTdWM0MxNy4yMiAzIDE3LjQzIDMuMDggMTcuNjIgMy4yMkMxOC4wNSAzLjU2IDE4LjEzIDQuMTkgMTcuNzkgNC42MkwxMyAxMC43NVYxOS44OE01LjA0IDVMOSAxMC4wN1YxNS41OEwxMSAxNy41OFYxMC4wNUwxNC45NiA1SDUuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyT2ZmID0gXCJNMi4zOSAxLjczTDEuMTEgM0w5LjUgMTEuMzdMOS45NyAxMkgxMFYxNy44N0M5Ljk2IDE4LjE2IDEwLjA2IDE4LjQ3IDEwLjI5IDE4LjdMMTIuMyAyMC43MUMxMi42OSAyMS4xIDEzLjMyIDIxLjEgMTMuNzEgMjAuNzFDMTMuOTQgMjAuNSAxNC4wNCAyMC4xOCAxNCAxOS44OFYxNS44OUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwxNCAxMy4zNUw5LjQxIDguNzZMNC4xNSAzLjVMMi4zOSAxLjczTTYuMjEgM0wxNC41NCAxMS4zNEwxOS43OSA0LjYyQzIwLjEzIDQuMTkgMjAuMDUgMy41NiAxOS42MiAzLjIyQzE5LjQzIDMuMDggMTkuMjIgMyAxOSAzSDYuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyT2ZmT3V0bGluZSA9IFwiTTIuMzkgMS43M0wxLjExIDNMOSAxMC44OVYxNS44N0M4Ljk2IDE2LjE2IDkuMDYgMTYuNDcgOS4yOSAxNi43TDEzLjMgMjAuNzFDMTMuNjkgMjEuMSAxNC4zMiAyMS4xIDE0LjcxIDIwLjcxQzE0Ljk0IDIwLjUgMTUuMDQgMjAuMTggMTUgMTkuODhWMTYuODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMTUgMTQuMzVWMTQuMzRMMTMgMTIuMzVMMTEgMTAuMzRMNC4xNSAzLjVMMi4zOSAxLjczTTYuMjEgM0w4LjIgNUgxNi45NkwxMy4xMSA5LjkxTDE1IDExLjhWMTAuNzVMMTkuNzkgNC42MkMyMC4xMyA0LjE5IDIwLjA1IDMuNTYgMTkuNjIgMy4yMkMxOS40MyAzLjA4IDE5LjIyIDMgMTkgM0g2LjIxTTExIDEyLjg5TDEzIDE0Ljg5VjE3LjU4TDExIDE1LjU4VjEyLjg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbHRlck91dGxpbmUgPSBcIk0xNSwxOS44OEMxNS4wNCwyMC4xOCAxNC45NCwyMC41IDE0LjcxLDIwLjcxQzE0LjMyLDIxLjEgMTMuNjksMjEuMSAxMy4zLDIwLjcxTDkuMjksMTYuN0M5LjA2LDE2LjQ3IDguOTYsMTYuMTYgOSwxNS44N1YxMC43NUw0LjIxLDQuNjJDMy44Nyw0LjE5IDMuOTUsMy41NiA0LjM4LDMuMjJDNC41NywzLjA4IDQuNzgsMyA1LDNWM0gxOVYzQzE5LjIyLDMgMTkuNDMsMy4wOCAxOS42MiwzLjIyQzIwLjA1LDMuNTYgMjAuMTMsNC4xOSAxOS43OSw0LjYyTDE1LDEwLjc1VjE5Ljg4TTcuMDQsNUwxMSwxMC4wNlYxNS41OEwxMywxNy41OFYxMC4wNUwxNi45Niw1SDcuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyUGx1cyA9IFwiTTEyIDEyVjE5Ljg4QzEyLjA0IDIwLjE4IDExLjk0IDIwLjUgMTEuNzEgMjAuNzFDMTEuMzIgMjEuMSAxMC42OSAyMS4xIDEwLjMgMjAuNzFMOC4yOSAxOC43QzguMDYgMTguNDcgNy45NiAxOC4xNiA4IDE3Ljg3VjEySDcuOTdMMi4yMSA0LjYyQzEuODcgNC4xOSAxLjk1IDMuNTYgMi4zOCAzLjIyQzIuNTcgMy4wOCAyLjc4IDMgMyAzSDE3QzE3LjIyIDMgMTcuNDMgMy4wOCAxNy42MiAzLjIyQzE4LjA1IDMuNTYgMTguMTMgNC4xOSAxNy43OSA0LjYyTDEyLjAzIDEySDEyTTE1IDE3SDE4VjE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbHRlclBsdXNPdXRsaW5lID0gXCJNMTUgMTdIMThWMTRIMjBWMTdIMjNWMTlIMjBWMjJIMThWMTlIMTVWMTdNMTMgMTkuODhDMTMuMDQgMjAuMTggMTIuOTQgMjAuNSAxMi43MiAyMC43MUMxMi4zMiAyMS4xIDExLjY5IDIxLjEgMTEuMyAyMC43MUw3LjI5IDE2LjdDNy4wNiAxNi40NyA2Ljk2IDE2LjE2IDcgMTUuODdWMTAuNzVMMi4yMSA0LjYyQzEuODcgNC4xOSAxLjk1IDMuNTYgMi4zOCAzLjIyQzIuNTcgMy4wOCAyLjc4IDMgMyAzVjNIMTdWM0MxNy4yMiAzIDE3LjQzIDMuMDggMTcuNjIgMy4yMkMxOC4wNSAzLjU2IDE4LjEzIDQuMTkgMTcuNzkgNC42MkwxMyAxMC43NVYxOS44OE01LjA0IDVMOSAxMC4wN1YxNS41OEwxMSAxNy41OFYxMC4wNUwxNC45NiA1SDUuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyUmVtb3ZlID0gXCJNMTQuNzYsMjAuODNMMTcuNiwxOEwxNC43NiwxNS4xN0wxNi4xNywxMy43NkwxOSwxNi41N0wyMS44MywxMy43NkwyMy4yNCwxNS4xN0wyMC40MywxOEwyMy4yNCwyMC44M0wyMS44MywyMi4yNEwxOSwxOS40TDE2LjE3LDIyLjI0TDE0Ljc2LDIwLjgzTTEyLDEyVjE5Ljg4QzEyLjA0LDIwLjE4IDExLjk0LDIwLjUgMTEuNzEsMjAuNzFDMTEuMzIsMjEuMSAxMC42OSwyMS4xIDEwLjMsMjAuNzFMOC4yOSwxOC43QzguMDYsMTguNDcgNy45NiwxOC4xNiA4LDE3Ljg3VjEySDcuOTdMMi4yMSw0LjYyQzEuODcsNC4xOSAxLjk1LDMuNTYgMi4zOCwzLjIyQzIuNTcsMy4wOCAyLjc4LDMgMywzVjNIMTdWM0MxNy4yMiwzIDE3LjQzLDMuMDggMTcuNjIsMy4yMkMxOC4wNSwzLjU2IDE4LjEzLDQuMTkgMTcuNzksNC42MkwxMi4wMywxMkgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXJSZW1vdmVPdXRsaW5lID0gXCJNMTQuNzMsMjAuODNMMTcuNTgsMThMMTQuNzMsMTUuMTdMMTYuMTUsMTMuNzZMMTksMTYuNTdMMjEuOCwxMy43NkwyMy4yMiwxNS4xN0wyMC40MSwxOEwyMy4yMiwyMC44M0wyMS44LDIyLjI0TDE5LDE5LjRMMTYuMTUsMjIuMjRMMTQuNzMsMjAuODNNMTMsMTkuODhDMTMuMDQsMjAuMTggMTIuOTQsMjAuNSAxMi43MSwyMC43MUMxMi4zMiwyMS4xIDExLjY5LDIxLjEgMTEuMywyMC43MUw3LjI5LDE2LjdDNy4wNiwxNi40NyA2Ljk2LDE2LjE2IDcsMTUuODdWMTAuNzVMMi4yMSw0LjYyQzEuODcsNC4xOSAxLjk1LDMuNTYgMi4zOCwzLjIyQzIuNTcsMy4wOCAyLjc4LDMgMywzVjNIMTdWM0MxNy4yMiwzIDE3LjQzLDMuMDggMTcuNjIsMy4yMkMxOC4wNSwzLjU2IDE4LjEzLDQuMTkgMTcuNzksNC42MkwxMywxMC43NVYxOS44OE01LjA0LDVMOSwxMC4wNlYxNS41OEwxMSwxNy41OFYxMC4wNUwxNC45Niw1SDUuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyVmFyaWFudCA9IFwiTTYsMTNIMThWMTFINk0zLDZWOEgyMVY2TTEwLDE4SDE0VjE2SDEwVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbHRlclZhcmlhbnRNaW51cyA9IFwiTTIxIDhIM1Y2SDIxVjhNMTMuODEgMTZIMTBWMThIMTMuMDlDMTMuMjEgMTcuMjggMTMuNDYgMTYuNjEgMTMuODEgMTZNMTggMTFINlYxM0gxOFYxMU0yMyAxOEgxNVYyMEgyM1YxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXJWYXJpYW50UGx1cyA9IFwiTTIxIDhIM1Y2SDIxVjhNMTMuODEgMTZIMTBWMThIMTMuMDlDMTMuMjEgMTcuMjggMTMuNDYgMTYuNjEgMTMuODEgMTZNMTggMTFINlYxM0gxOFYxMU0xOCAxNVYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFYxNUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXJWYXJpYW50UmVtb3ZlID0gXCJNMjEgOEgzVjZIMjFWOE0xMy44MSAxNkgxMFYxOEgxMy4wOUMxMy4yMSAxNy4yOCAxMy40NiAxNi42MSAxMy44MSAxNk0xOCAxMUg2VjEzSDE4VjExTTIxLjEyIDE1LjQ2TDE5IDE3LjU5TDE2Ljg4IDE1LjQ2TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbmFuY2UgPSBcIk02LDE2LjVMMywxOS40NFYxMUg2TTExLDE0LjY2TDkuNDMsMTMuMzJMOCwxNC42NFY3SDExTTE2LDEzTDEzLDE2VjNIMTZNMTguODEsMTIuODFMMTcsMTFIMjJWMTZMMjAuMjEsMTQuMjFMMTMsMjEuMzZMOS41MywxOC4zNEw1Ljc1LDIySDNMOS40NywxNS42NkwxMywxOC42NFwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbmRSZXBsYWNlID0gXCJNMTEsNkMxMi4zOCw2IDEzLjYzLDYuNTYgMTQuNTQsNy40NkwxMiwxMEgxOFY0TDE1Ljk1LDYuMDVDMTQuNjgsNC43OCAxMi45Myw0IDExLDRDNy40Nyw0IDQuNTcsNi42MSA0LjA4LDEwSDYuMUM2LjU2LDcuNzIgOC41OCw2IDExLDZNMTYuNjQsMTUuMTRDMTcuMywxNC4yNCAxNy43NiwxMy4xNyAxNy45MiwxMkgxNS45QzE1LjQ0LDE0LjI4IDEzLjQyLDE2IDExLDE2QzkuNjIsMTYgOC4zNywxNS40NCA3LjQ2LDE0LjU0TDEwLDEySDRWMThMNi4wNSwxNS45NUM3LjMyLDE3LjIyIDkuMDcsMTggMTEsMThDMTIuNTUsMTggMTQsMTcuNSAxNS4xNCwxNi42NEwyMCwyMS41TDIxLjUsMjBMMTYuNjQsMTUuMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmluZ2VycHJpbnQgPSBcIk0xNy44MSw0LjQ3QzE3LjczLDQuNDcgMTcuNjUsNC40NSAxNy41OCw0LjQxQzE1LjY2LDMuNDIgMTQsMyAxMiwzQzEwLjAzLDMgOC4xNSwzLjQ3IDYuNDQsNC40MUM2LjIsNC41NCA1LjksNC40NSA1Ljc2LDQuMjFDNS42MywzLjk3IDUuNzIsMy42NiA1Ljk2LDMuNTNDNy44MiwyLjUgOS44NiwyIDEyLDJDMTQuMTQsMiAxNiwyLjQ3IDE4LjA0LDMuNUMxOC4yOSwzLjY1IDE4LjM4LDMuOTUgMTguMjUsNC4xOUMxOC4xNiw0LjM3IDE4LDQuNDcgMTcuODEsNC40N00zLjUsOS43MkMzLjQsOS43MiAzLjMsOS42OSAzLjIxLDkuNjNDMyw5LjQ3IDIuOTMsOS4xNiAzLjA5LDguOTNDNC4wOCw3LjUzIDUuMzQsNi40MyA2Ljg0LDUuNjZDMTAsNC4wNCAxNCw0LjAzIDE3LjE1LDUuNjVDMTguNjUsNi40MiAxOS45MSw3LjUgMjAuOSw4LjlDMjEuMDYsOS4xMiAyMSw5LjQ0IDIwLjc4LDkuNkMyMC41NSw5Ljc2IDIwLjI0LDkuNzEgMjAuMDgsOS41QzE5LjE4LDguMjIgMTguMDQsNy4yMyAxNi42OSw2LjU0QzEzLjgyLDUuMDcgMTAuMTUsNS4wNyA3LjI5LDYuNTVDNS45Myw3LjI1IDQuNzksOC4yNSAzLjg5LDkuNUMzLjgxLDkuNjUgMy42Niw5LjcyIDMuNSw5LjcyTTkuNzUsMjEuNzlDOS42MiwyMS43OSA5LjUsMjEuNzQgOS40LDIxLjY0QzguNTMsMjAuNzcgOC4wNiwyMC4yMSA3LjM5LDE5QzYuNywxNy43NyA2LjM0LDE2LjI3IDYuMzQsMTQuNjZDNi4zNCwxMS42OSA4Ljg4LDkuMjcgMTIsOS4yN0MxNS4xMiw5LjI3IDE3LjY2LDExLjY5IDE3LjY2LDE0LjY2QTAuNSwwLjUgMCAwLDEgMTcuMTYsMTUuMTZBMC41LDAuNSAwIDAsMSAxNi42NiwxNC42NkMxNi42NiwxMi4yNCAxNC41NywxMC4yNyAxMiwxMC4yN0M5LjQzLDEwLjI3IDcuMzQsMTIuMjQgNy4zNCwxNC42NkM3LjM0LDE2LjEgNy42NiwxNy40MyA4LjI3LDE4LjVDOC45MSwxOS42NiA5LjM1LDIwLjE1IDEwLjEyLDIwLjkzQzEwLjMxLDIxLjEzIDEwLjMxLDIxLjQ0IDEwLjEyLDIxLjY0QzEwLDIxLjc0IDkuODgsMjEuNzkgOS43NSwyMS43OU0xNi45MiwxOS45NEMxNS43MywxOS45NCAxNC42OCwxOS42NCAxMy44MiwxOS4wNUMxMi4zMywxOC4wNCAxMS40NCwxNi40IDExLjQ0LDE0LjY2QTAuNSwwLjUgMCAwLDEgMTEuOTQsMTQuMTZBMC41LDAuNSAwIDAsMSAxMi40NCwxNC42NkMxMi40NCwxNi4wNyAxMy4xNiwxNy40IDE0LjM4LDE4LjIyQzE1LjA5LDE4LjcgMTUuOTIsMTguOTMgMTYuOTIsMTguOTNDMTcuMTYsMTguOTMgMTcuNTYsMTguOSAxNy45NiwxOC44M0MxOC4yMywxOC43OCAxOC41LDE4Ljk2IDE4LjU0LDE5LjI0QzE4LjU5LDE5LjUgMTguNDEsMTkuNzcgMTguMTMsMTkuODJDMTcuNTYsMTkuOTMgMTcuMDYsMTkuOTQgMTYuOTIsMTkuOTRNMTQuOTEsMjJDMTQuODcsMjIgMTQuODIsMjIgMTQuNzgsMjJDMTMuMTksMjEuNTQgMTIuMTUsMjAuOTUgMTEuMDYsMTkuODhDOS42NiwxOC41IDguODksMTYuNjQgOC44OSwxNC42NkM4Ljg5LDEzLjA0IDEwLjI3LDExLjcyIDExLjk3LDExLjcyQzEzLjY3LDExLjcyIDE1LjA1LDEzLjA0IDE1LjA1LDE0LjY2QzE1LjA1LDE1LjczIDE2LDE2LjYgMTcuMTMsMTYuNkMxOC4yOCwxNi42IDE5LjIxLDE1LjczIDE5LjIxLDE0LjY2QzE5LjIxLDEwLjg5IDE1Ljk2LDcuODMgMTEuOTYsNy44M0M5LjEyLDcuODMgNi41LDkuNDEgNS4zNSwxMS44NkM0Ljk2LDEyLjY3IDQuNzYsMTMuNjIgNC43NiwxNC42NkM0Ljc2LDE1LjQ0IDQuODMsMTYuNjcgNS40MywxOC4yN0M1LjUzLDE4LjUzIDUuNCwxOC44MiA1LjE0LDE4LjkxQzQuODgsMTkgNC41OSwxOC44NyA0LjUsMTguNjJDNCwxNy4zMSAzLjc3LDE2IDMuNzcsMTQuNjZDMy43NywxMy40NiA0LDEyLjM3IDQuNDUsMTEuNDJDNS43OCw4LjYzIDguNzMsNi44MiAxMS45Niw2LjgyQzE2LjUsNi44MiAyMC4yMSwxMC4zMyAyMC4yMSwxNC42NUMyMC4yMSwxNi4yNyAxOC44MywxNy41OSAxNy4xMywxNy41OUMxNS40MywxNy41OSAxNC4wNSwxNi4yNyAxNC4wNSwxNC42NUMxNC4wNSwxMy41OCAxMy4xMiwxMi43MSAxMS45NywxMi43MUMxMC44MiwxMi43MSA5Ljg5LDEzLjU4IDkuODksMTQuNjVDOS44OSwxNi4zNiAxMC41NSwxNy45NiAxMS43NiwxOS4xNkMxMi43MSwyMC4xIDEzLjYyLDIwLjYyIDE1LjAzLDIxQzE1LjMsMjEuMDggMTUuNDUsMjEuMzYgMTUuMzgsMjEuNjJDMTUuMzMsMjEuODUgMTUuMTIsMjIgMTQuOTEsMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmluZ2VycHJpbnRPZmYgPSBcIk0xLjUsNC43N0wyLjc4LDMuNUwyMC41LDIxLjIyTDE5LjIzLDIyLjVMMTYuNjcsMTkuOTRDMTUuNTgsMTkuOSAxNC42MiwxOS42IDEzLjgyLDE5LjA1QzEyLjM0LDE4LjA1IDExLjQ2LDE2LjQzIDExLjQ0LDE0LjcxTDEwLjI3LDEzLjUzQzEwLjAzLDEzLjg1IDkuODksMTQuMjMgOS44OSwxNC42NUM5Ljg5LDE2LjM2IDEwLjU1LDE3Ljk2IDExLjc2LDE5LjE2QzEyLjcxLDIwLjEgMTMuNjIsMjAuNjIgMTUuMDMsMjFDMTUuMywyMS4wOCAxNS40NSwyMS4zNiAxNS4zOCwyMS42MkMxNS4zMywyMS44NSAxNS4xMiwyMiAxNC45MSwyMkgxNC43OEMxMy4xOSwyMS41NCAxMi4xNSwyMC45NSAxMS4wNiwxOS44OEM5LjY2LDE4LjUgOC44OSwxNi42NCA4Ljg5LDE0LjY2QzguODksMTMuOTcgOS4xNCwxMy4zMyA5LjU2LDEyLjgzTDguNSwxMS43N0M3Ljc4LDEyLjU0IDcuMzQsMTMuNTUgNy4zNCwxNC42NkM3LjM0LDE2LjEgNy42NiwxNy40MyA4LjI3LDE4LjVDOC45MSwxOS42NiA5LjM1LDIwLjE1IDEwLjEyLDIwLjkzQzEwLjMxLDIxLjEzIDEwLjMxLDIxLjQ0IDEwLjEyLDIxLjY0QzEwLDIxLjc0IDkuODgsMjEuNzkgOS43NSwyMS43OUM5LjYyLDIxLjc5IDkuNSwyMS43NCA5LjQsMjEuNjRDOC41MywyMC43NyA4LjA2LDIwLjIxIDcuMzksMTlDNi43LDE3Ljc3IDYuMzQsMTYuMjcgNi4zNCwxNC42NkM2LjM0LDEzLjI4IDYuODksMTIgNy43OSwxMS4wNkw2LjcsOS45N0M2LjE1LDEwLjUgNS42OSwxMS4xNSA1LjM1LDExLjg2QzQuOTYsMTIuNjcgNC43NiwxMy42MiA0Ljc2LDE0LjY2QzQuNzYsMTUuNDQgNC44MywxNi42NyA1LjQzLDE4LjI3QzUuNTMsMTguNTMgNS40LDE4LjgyIDUuMTQsMTguOTFDNC44OCwxOSA0LjU5LDE4Ljg3IDQuNSwxOC42MkM0LDE3LjMxIDMuNzcsMTYgMy43NywxNC42NkMzLjc3LDEzLjQ2IDQsMTIuMzcgNC40NSwxMS40MkM0Ljg0LDEwLjYxIDUuMzYsOS44OCA2LDkuMjZMNC45Nyw4LjI0QzQuNTgsOC42MyA0LjIyLDkuMDUgMy44OSw5LjVDMy44MSw5LjY1IDMuNjYsOS43MiAzLjUsOS43MkwzLjIxLDkuNjNDMyw5LjQ3IDIuOTMsOS4xNiAzLjA5LDguOTNDMy40NSw4LjQzIDMuODQsNy45NiA0LjI3LDcuNTNMMS41LDQuNzdNMTcuODEsNC40N0wxNy41OCw0LjQxQzE1LjY2LDMuNDIgMTQsMyAxMiwzQzEwLjAzLDMgOC4xNSwzLjQ3IDYuNDQsNC40MUw2LjI5LDQuNDZMNS43MSwzLjg5QzUuNzMsMy43NCA1LjgyLDMuNjEgNS45NiwzLjUzQzcuODIsMi41IDkuODYsMiAxMiwyQzE0LjE0LDIgMTYsMi40NyAxOC4wNCwzLjVDMTguMjksMy42NSAxOC4zOCwzLjk1IDE4LjI1LDQuMTlDMTguMTYsNC4zNyAxOCw0LjQ3IDE3LjgxLDQuNDdNMTcuMTUsNS42NUMxOC42NSw2LjQyIDE5LjkxLDcuNSAyMC45LDguOUMyMS4wNiw5LjEyIDIxLDkuNDQgMjAuNzgsOS42QzIwLjU1LDkuNzYgMjAuMjQsOS43MSAyMC4wOCw5LjVDMTkuMTgsOC4yMiAxOC4wNCw3LjIzIDE2LjY5LDYuNTRDMTQuMDYsNS4xOSAxMC43Niw1LjA4IDguMDMsNi4yMUw3LjI3LDUuNDVDMTAuMzQsNC4wNCAxNC4xNCw0LjEgMTcuMTUsNS42NU0xMiw5LjI3QzE1LjEyLDkuMjcgMTcuNjYsMTEuNjkgMTcuNjYsMTQuNjZBMC41LDAuNSAwIDAsMSAxNy4xNiwxNS4xNkwxNi45MywxNS4xMUwxNi43MiwxNC44OUwxNi42NiwxNC42NkMxNi42NiwxMi4yNyAxNC42MiwxMC4zMiAxMi4wOSwxMC4yN0wxMS4xNSw5LjMzTDEyLDkuMjdNMTQuMzgsMTguMjJDMTQuNzEsMTguNDUgMTUuMDcsMTguNjIgMTUuNDcsMTguNzNMMTIuNjMsMTUuOUMxMi45MiwxNi44MiAxMy41MywxNy42NSAxNC4zOCwxOC4yMk0xOS4yMSwxNC42NkMxOS4yMSwxMC44OSAxNS45Niw3LjgzIDExLjk2LDcuODNDMTEuMjYsNy44MyAxMC41OCw3LjkzIDkuOTMsOC4xMUw5LjEyLDcuM0MxMCw3IDEwLjk3LDYuODIgMTEuOTYsNi44MkMxNi41LDYuODIgMjAuMjEsMTAuMzMgMjAuMjEsMTQuNjVDMjAuMjEsMTUuNjUgMTkuNjksMTYuNTMgMTguODksMTcuMDZMMTguMTcsMTYuMzRDMTguNzksMTYgMTkuMjEsMTUuMzggMTkuMjEsMTQuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlyZSA9IFwiTTE3LjY2IDExLjJDMTcuNDMgMTAuOSAxNy4xNSAxMC42NCAxNi44OSAxMC4zOEMxNi4yMiA5Ljc4IDE1LjQ2IDkuMzUgMTQuODIgOC43MkMxMy4zMyA3LjI2IDEzIDQuODUgMTMuOTUgM0MxMyAzLjIzIDEyLjE3IDMuNzUgMTEuNDYgNC4zMkM4Ljg3IDYuNCA3Ljg1IDEwLjA3IDkuMDcgMTMuMjJDOS4xMSAxMy4zMiA5LjE1IDEzLjQyIDkuMTUgMTMuNTVDOS4xNSAxMy43NyA5IDEzLjk3IDguOCAxNC4wNUM4LjU3IDE0LjE1IDguMzMgMTQuMDkgOC4xNCAxMy45M0M4LjA4IDEzLjg4IDguMDQgMTMuODMgOCAxMy43NkM2Ljg3IDEyLjMzIDYuNjkgMTAuMjggNy40NSA4LjY0QzUuNzggMTAgNC44NyAxMi4zIDUgMTQuNDdDNS4wNiAxNC45NyA1LjEyIDE1LjQ3IDUuMjkgMTUuOTdDNS40MyAxNi41NyA1LjcgMTcuMTcgNiAxNy43QzcuMDggMTkuNDMgOC45NSAyMC42NyAxMC45NiAyMC45MkMxMy4xIDIxLjE5IDE1LjM5IDIwLjggMTcuMDMgMTkuMzJDMTguODYgMTcuNjYgMTkuNSAxNSAxOC41NiAxMi43MkwxOC40MyAxMi40NkMxOC4yMiAxMiAxNy42NiAxMS4yIDE3LjY2IDExLjJNMTQuNSAxNy41QzE0LjIyIDE3Ljc0IDEzLjc2IDE4IDEzLjQgMTguMUMxMi4yOCAxOC41IDExLjE2IDE3Ljk0IDEwLjUgMTcuMjhDMTEuNjkgMTcgMTIuNCAxNi4xMiAxMi42MSAxNS4yM0MxMi43OCAxNC40MyAxMi40NiAxMy43NyAxMi4zMyAxM0MxMi4yMSAxMi4yNiAxMi4yMyAxMS42MyAxMi41IDEwLjk0QzEyLjY5IDExLjMyIDEyLjg5IDExLjcgMTMuMTMgMTJDMTMuOSAxMyAxNS4xMSAxMy40NCAxNS4zNyAxNC44QzE1LjQxIDE0Ljk0IDE1LjQzIDE1LjA4IDE1LjQzIDE1LjIzQzE1LjQ2IDE2LjA1IDE1LjEgMTYuOTUgMTQuNSAxNy41SDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlyZUFsZXJ0ID0gXCJNMTUuNjYgMTEuMkMxNS40MyAxMC45IDE1LjE1IDEwLjY0IDE0Ljg5IDEwLjM4QzE0LjIyIDkuNzggMTMuNDYgOS4zNSAxMi44MiA4LjcyQzExLjMzIDcuMjYgMTEgNC44NSAxMS45NSAzQzExIDMuMjMgMTAuMTcgMy43NSA5LjQ2IDQuMzJDNi44NyA2LjQgNS44NSAxMC4wNyA3LjA3IDEzLjIyQzcuMTEgMTMuMzIgNy4xNSAxMy40MiA3LjE1IDEzLjU1QzcuMTUgMTMuNzcgNyAxMy45NyA2LjggMTQuMDVDNi41NyAxNC4xNSA2LjMzIDE0LjA5IDYuMTQgMTMuOTNDNi4wOCAxMy44OCA2LjA0IDEzLjgzIDYgMTMuNzZDNC44NyAxMi4zMyA0LjY5IDEwLjI4IDUuNDUgOC42NEMzLjc4IDEwIDIuODcgMTIuMyAzIDE0LjQ3QzMuMDYgMTQuOTcgMy4xMiAxNS40NyAzLjI5IDE1Ljk3QzMuNDMgMTYuNTcgMy43IDE3LjE3IDQgMTcuN0M1LjA4IDE5LjQzIDYuOTUgMjAuNjcgOC45NiAyMC45MkMxMS4xIDIxLjE5IDEzLjM5IDIwLjggMTUuMDMgMTkuMzJDMTYuODYgMTcuNjYgMTcuNSAxNSAxNi41NiAxMi43MkwxNi40MyAxMi40NkMxNi4yMiAxMiAxNS42NiAxMS4yIDE1LjY2IDExLjJNMTIuNSAxNy41QzEyLjIyIDE3Ljc0IDExLjc2IDE4IDExLjQgMTguMUMxMC4yOCAxOC41IDkuMTYgMTcuOTQgOC41IDE3LjI4QzkuNjkgMTcgMTAuNCAxNi4xMiAxMC42MSAxNS4yM0MxMC43OCAxNC40MyAxMC40NiAxMy43NyAxMC4zMyAxM0MxMC4yMSAxMi4yNiAxMC4yMyAxMS42MyAxMC41IDEwLjk0QzEwLjY5IDExLjMyIDEwLjg5IDExLjcgMTEuMTMgMTJDMTEuOSAxMyAxMy4xMSAxMy40NCAxMy4zNyAxNC44QzEzLjQxIDE0Ljk0IDEzLjQzIDE1LjA4IDEzLjQzIDE1LjIzQzEzLjQ2IDE2LjA1IDEzLjEgMTYuOTUgMTIuNSAxNy41SDEyLjVNMjEgMTNIMTlWN0gyMVYxM00yMSAxN0gxOVYxNUgyMVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJlRXh0aW5ndWlzaGVyID0gXCJNMTAuNSw3SDExLjc1TDEyLDVIMTAuMjVMNiw3LjVWOUg0VjYuNUwxMCwzSDEyVjJIMTRWM0gxNkwxNywyLjVWNS41TDE2LDVIMTRMMTQuMjUsN0gxNS41QTEuNSwxLjUgMCAwLDEgMTcsOC41VjIySDlWOC41QTEuNSwxLjUgMCAwLDEgMTAuNSw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmVIeWRyYW50ID0gXCJNNSAxNVYxNEg0VjEySDVWMTFIN1YxNUg1TTE5IDEyVjExSDE3VjE1SDE5VjE0SDIwVjEySDE5TTE4IDZIMTUuODZDMTUuNSA0LjYgMTQuNCAzLjUgMTMgMy4xNFYySDExVjMuMTRDOS42IDMuNSA4LjUgNC42IDguMTQgNkg2VjhIMThWNk0xOCAyMkg2QzYgMjAuOSA2LjkgMjAgOCAyMFY5SDE2VjIwQzE3LjExIDIwIDE4IDIwLjkgMTggMjJNMTAgMTNDMTAgMTQuMTEgMTAuOSAxNSAxMiAxNVMxNCAxNC4xMSAxNCAxMyAxMy4xMSAxMSAxMiAxMSAxMCAxMS45IDEwIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmVIeWRyYW50QWxlcnQgPSBcIk0yMiA3SDIwVjEzSDIyVjdNMjIgMTVIMjBWMTdIMjJWMTVNMyAxNVYxNEgyVjEySDNWMTFINVYxNUgzTTE3IDEyVjExSDE1VjE1SDE3VjE0SDE4VjEySDE3TTE2IDZIMTMuODZDMTMuNSA0LjYgMTIuNCAzLjUgMTEgMy4xNFYySDlWMy4xNEM3LjYgMy41IDYuNSA0LjYgNi4xNCA2SDRWOEgxNlY2TTE2IDIySDRDNCAyMC45IDQuODkgMjAgNiAyMFY5SDE0VjIwQzE1LjExIDIwIDE2IDIwLjkgMTYgMjJNOCAxM0M4IDE0LjExIDguOSAxNSAxMCAxNVMxMiAxNC4xMSAxMiAxMyAxMS4xMSAxMSAxMCAxMSA4IDExLjkgOCAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJlSHlkcmFudE9mZiA9IFwiTTIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMOCA5Ljg5VjIwQzYuOSAyMCA2IDIwLjkgNiAyMkgxOEMxOCAyMC45IDE3LjExIDIwIDE2IDIwVjE3Ljg5TDIwLjg0IDIyLjczTTEwLjIyIDEyLjExTDEyLjg5IDE0Ljc4QzEyLjYyIDE0LjkyIDEyLjMyIDE1IDEyIDE1QzEwLjkgMTUgMTAgMTQuMTEgMTAgMTNDMTAgMTIuNjggMTAuMDggMTIuMzggMTAuMjIgMTIuMTFNMTEuMiA4TDguNDQgNS4yNEM4Ljk0IDQuMjEgOS44NyAzLjQzIDExIDMuMTRWMkgxM1YzLjE0QzE0LjQgMy41IDE1LjUgNC42IDE1Ljg2IDZIMThWOEgxMS4yTTE5IDExVjEySDIwVjE0SDE5VjE1SDE4LjJMMTcgMTMuOFYxMUgxOU01IDE1VjE0SDRWMTJINVYxMUg3VjE1SDVNMTYgMTIuOEwxMi4yIDlIMTZWMTIuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJlT2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w3LjA5IDlDNS42NiAxMC4zNiA0Ljg4IDEyLjQ3IDUgMTQuNDdDNS4wNiAxNC45NyA1LjEyIDE1LjQ3IDUuMjkgMTUuOTdDNS40MyAxNi41NyA1LjcgMTcuMTcgNiAxNy43QzcuMDggMTkuNDMgOC45NSAyMC42NyAxMC45NiAyMC45MkMxMy4xIDIxLjE5IDE1LjM5IDIwLjggMTcuMDMgMTkuMzJDMTcuMSAxOS4yNiAxNy4xNSAxOS4xOCAxNy4yMiAxOS4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk04LjggMTQuMDVDOC41NyAxNC4xNSA4LjMzIDE0LjA5IDguMTQgMTMuOTNDOC4wOCAxMy44OCA4LjA0IDEzLjgzIDggMTMuNzZDNyAxMi40NyA2Ljc0IDEwLjY5IDcuMjYgOS4xNUw4LjU4IDEwLjQ3QzguNTggMTEuNCA4LjczIDEyLjMzIDkuMDcgMTMuMjJDOS4xMSAxMy4zMiA5LjE1IDEzLjQyIDkuMTUgMTMuNTVDOS4xNSAxMy43NyA5IDEzLjk3IDguOCAxNC4wNU0xNC41IDE3LjVDMTQuMjIgMTcuNzQgMTMuNzYgMTggMTMuNCAxOC4xQzEyLjI4IDE4LjUgMTEuMTYgMTcuOTQgMTAuNSAxNy4yOEMxMS42OSAxNyAxMi40IDE2LjEyIDEyLjYxIDE1LjIzQzEyLjY2IDE1IDEyLjY2IDE0Ljc2IDEyLjY0IDE0LjUzTDE1IDE2Ljg4QzE0Ljg1IDE3LjExIDE0LjY5IDE3LjMzIDE0LjUgMTcuNU0xOC45MiAxNS43Mkw5LjY1IDYuNDZDMTAuMTIgNS42NSAxMC43MiA0LjkyIDExLjQ2IDQuMzJDMTIuMTcgMy43NSAxMyAzLjIzIDEzLjk1IDNDMTMgNC44NSAxMy4zMyA3LjI2IDE0LjgyIDguNzJDMTUuNDYgOS4zNSAxNi4yMiA5Ljc4IDE2Ljg5IDEwLjM4QzE3LjE1IDEwLjY0IDE3LjQzIDEwLjkgMTcuNjYgMTEuMkMxNy42NiAxMS4yIDE4LjIyIDEyIDE4LjQzIDEyLjQ2TDE4LjU2IDEyLjcyQzE4Ljk2IDEzLjY5IDE5LjA2IDE0LjcyIDE4LjkyIDE1LjcyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmVUcnVjayA9IFwiTTE3LjA0LDJDMTYuODUsMiAxNi42NiwyLjA0IDE2LjUsMi4xNEw1LjU5LDguNUg5LjU1TDE3LjUsMy44NkMxOCwzLjU4IDE4LjEzLDIuOTcgMTcuODUsMi41QzE3LjY4LDIuMiAxNy4zOCwyIDE3LjA0LDJNMTYsOFYxMEgzQTIsMiAwIDAsMCAxLDEySDJWMTVIMVYxOUgzQTMsMyAwIDAsMCA2LDIyQTMsMyAwIDAsMCA5LDE5SDE1QTMsMyAwIDAsMCAxOCwyMkEzLDMgMCAwLDAgMjEsMTlIMjNWMTIuNUwxOS41LDhIMTZNMTgsOS41SDE5TDIxLjUsMTIuNVYxMy41SDE4VjkuNU00LDEySDdWMTVINFYxMk05LDEySDEyVjE1SDlWMTJNMTQsMTJIMTZWMTVIMTRWMTJNNiwxNy41QTEuNSwxLjUgMCAwLDEgNy41LDE5QTEuNSwxLjUgMCAwLDEgNiwyMC41QTEuNSwxLjUgMCAwLDEgNC41LDE5QTEuNSwxLjUgMCAwLDEgNiwxNy41TTE4LDE3LjVBMS41LDEuNSAwIDAsMSAxOS41LDE5QTEuNSwxLjUgMCAwLDEgMTgsMjAuNUExLjUsMS41IDAgMCwxIDE2LjUsMTlBMS41LDEuNSAwIDAsMSAxOCwxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmViYXNlID0gXCJNMjAsMTguNjlMMTIuNywyMi43NEMxMi4yLDIzIDExLjcsMjMgMTEuMiwyMi43NEw0LDE4LjY5TDE3LjA1LDUuNTRMMTcuNCw1LjQ0QzE3LjcsNS40NCAxNy44Nyw1LjU3IDE3LjksNS44NEwyMCwxOC42OU05LjM1LDUuNzRMNC44LDEzLjI5TDYuNywxLjM0QzYuNzMsMS4wNyA2LjksMC45NCA3LjIsMC45NEM3LjQsMC45NCA3LjUzLDEgNy42LDEuMTlMOS43NSw1LjE0TDkuMzUsNS43NE0xMy44NSw3TDQuMywxNi41OUwxMS41NSw0LjI5QzExLjY1LDQuMDkgMTEuOCw0IDEyLDRDMTIuMiw0IDEyLjMzLDQuMDkgMTIuNCw0LjI5TDEzLjg1LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlyZWZveCA9IFwiTTkuMjcgNy45NEM5LjI3IDcuOTQgOS4yNyA3Ljk0IDkuMjcgNy45NE02Ljg1IDYuNzRDNi44NiA2Ljc0IDYuODYgNi43NCA2Ljg1IDYuNzRNMjEuMjggOC42QzIwLjg1IDcuNTUgMTkuOTYgNi40MiAxOS4yNyA2LjA2QzE5LjgzIDcuMTcgMjAuMTYgOC4yOCAyMC4yOSA5LjFMMjAuMjkgOS4xMkMxOS4xNiA2LjMgMTcuMjQgNS4xNiAxNS42NyAyLjY4QzE1LjU5IDIuNTYgMTUuNSAyLjQzIDE1LjQzIDIuM0MxNS4zOSAyLjIzIDE1LjM2IDIuMTYgMTUuMzIgMi4wOUMxNS4yNiAxLjk2IDE1LjIgMS44MyAxNS4xNyAxLjY5QzE1LjE3IDEuNjggMTUuMTYgMS42NyAxNS4xNSAxLjY3SDE1LjEzTDE1LjEyIDEuNjdMMTUuMTIgMS42N0wxNS4xMiAxLjY3QzEyLjkgMi45NyAxMS45NyA1LjI2IDExLjc0IDYuNzFDMTEuMDUgNi43NSAxMC4zNyA2LjkyIDkuNzUgNy4yMkM5LjYzIDcuMjcgOS41OCA3LjQxIDkuNjIgNy41M0M5LjY3IDcuNjcgOS44MyA3Ljc0IDkuOTYgNy42OEMxMC41IDcuNDIgMTEuMSA3LjI3IDExLjcgNy4yM0wxMS43NSA3LjIzQzExLjgzIDcuMjIgMTEuOTIgNy4yMiAxMiA3LjIyQzEyLjUgNy4yMSAxMi45NyA3LjI4IDEzLjQ0IDcuNDJMMTMuNSA3LjQ0QzEzLjYgNy40NiAxMy42NyA3LjUgMTMuNzUgNy41QzEzLjggNy41NCAxMy44NiA3LjU2IDEzLjkxIDcuNThMMTQuMDUgNy42NEMxNC4xMiA3LjY3IDE0LjE5IDcuNyAxNC4yNSA3LjczQzE0LjI4IDcuNzUgMTQuMzEgNy43NiAxNC4zNCA3Ljc4QzE0LjQxIDcuODIgMTQuNSA3Ljg1IDE0LjU0IDcuODlDMTQuNTggNy45MSAxNC42MiA3Ljk0IDE0LjY2IDcuOTZDMTUuMzkgOC40MSAxNiA5LjAzIDE2LjQxIDkuNzdDMTUuODggOS40IDE0LjkyIDkuMDMgMTQgOS4xOUMxNy42IDExIDE2LjYzIDE3LjE5IDExLjY0IDE2Ljk1QzExLjIgMTYuOTQgMTAuNzYgMTYuODUgMTAuMzQgMTYuN0MxMC4yNCAxNi42NyAxMC4xNCAxNi42MyAxMC4wNSAxNi41OEMxMCAxNi41NiA5LjkzIDE2LjUzIDkuODggMTYuNUM4LjY1IDE1Ljg3IDcuNjQgMTQuNjggNy41IDEzLjIzQzcuNSAxMy4yMyA4IDExLjUgMTAuODMgMTEuNUMxMS4xNCAxMS41IDEyIDEwLjY0IDEyLjAzIDEwLjRDMTIuMDMgMTAuMzEgMTAuMjkgOS42MiA5LjYxIDguOTVDOS4yNCA4LjU5IDkuMDcgOC40MiA4LjkyIDguMjlDOC44NCA4LjIyIDguNzUgOC4xNiA4LjY2IDguMUM4LjQzIDcuMyA4LjQyIDYuNDUgOC42MyA1LjY1QzcuNiA2LjEyIDYuOCA2Ljg2IDYuMjIgNy41SDYuMjJDNS44MiA3IDUuODUgNS4zNSA1Ljg3IDVDNS44NiA1IDUuNTcgNS4xNiA1LjU0IDUuMThDNS4xOSA1LjQzIDQuODYgNS43MSA0LjU2IDZDNC4yMSA2LjM3IDMuOSA2Ljc0IDMuNjIgNy4xNEMzIDguMDUgMi41IDkuMDkgMi4yOCAxMC4xOEMyLjI4IDEwLjE5IDIuMTggMTAuNTkgMi4xMSAxMS4xTDIuMDggMTEuMzNDMi4wNiAxMS41IDIuMDQgMTEuNjUgMiAxMS45MUwyIDExLjk0TDIgMTIuMjdMMiAxMi4zMkMyIDE3Ljg1IDYuNSAyMi4zMyAxMiAyMi4zM0MxNi45NyAyMi4zMyAyMS4wOCAxOC43NCAyMS44OCAxNEMyMS45IDEzLjg5IDIxLjkxIDEzLjc2IDIxLjkzIDEzLjYzQzIyLjEzIDExLjkxIDIxLjkxIDEwLjExIDIxLjI4IDguNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJlcGxhY2UgPSBcIk0yMiwyMkgyVjIwSDIyVjIyTTIyLDZIMlYzSDIyVjZNMjAsN1YxOUgxN1YxMUMxNywxMSAxNC41LDEwIDEyLDEwQzkuNSwxMCA3LDExIDcsMTFWMTlINFY3SDIwTTE0LjUsMTQuNjdIMTQuNDdMMTQuODEsMTUuMjJMMTQuODcsMTUuMzRDMTUuMjksMTYuMzUgMTUsMTcuNSAxNC4yMSwxOC4yNEMxMy41LDE4LjkgMTIuNSwxOS4wNyAxMS41OCwxOC45NUMxMC43MSwxOC44NCA5LjksMTguMjkgOS40NSwxNy41M0M5LjMsMTcuMyA5LjE5LDE3LjAzIDkuMTMsMTYuNzdMOSwxNi4xMUM4Ljk2LDE1LjE1IDkuMzQsMTQuMTQgMTAuMDYsMTMuNTRDOS43MywxNC4yNiA5LjgxLDE1LjE2IDEwLjMsMTUuNzlMMTAuMzYsMTUuODdDMTAuNDQsMTUuOTQgMTAuNTUsMTUuOTcgMTAuNjQsMTUuOTJDMTAuNzMsMTUuODkgMTAuOCwxNS44IDEwLjgsMTUuN0wxMC43NiwxNS41NkMxMC4yMywxNC4xNyAxMC42OCwxMi41NSAxMS43OSwxMS42M0MxMi4xLDExLjM4IDEyLjUsMTEuMTUgMTIuODcsMTEuMDVDMTIuNDYsMTEuODcgMTIuNjEsMTIuOTMgMTMuMjUsMTMuNTdMMTQuMTQsMTQuM0wxNC41LDE0LjY3TTEzLjExLDE3LjQ0VjE3LjQ0QzEzLjM3LDE3LjIgMTMuNTMsMTYuOCAxMy41LDE2LjQ0VjE2LjI1QzEzLjM4LDE1LjY1IDEyLjg1LDE1LjQ2IDEyLjUsMTVMMTIuMjYsMTQuNTVDMTIuMTMsMTQuODUgMTIuMTIsMTUuMTMgMTIuMTcsMTUuNDZDMTIuMjMsMTUuOCAxMi4zNywxNi4wOSAxMi4yOSwxNi40NEMxMi4yLDE2LjgzIDExLjksMTcuMjIgMTEuMzcsMTcuMzVDMTEuNjcsMTcuNjQgMTIuMTUsMTcuODcgMTIuNjQsMTcuNzFMMTMuMTEsMTcuNDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlyZXBsYWNlT2ZmID0gXCJNMjIsMjJIMlYyMEgyMlYyMk0yMiw2SDJWM0gyMlY2TTIwLDdWMTlIMTdWMTFDMTcsMTEgMTQuNSwxMCAxMiwxMEM5LjUsMTAgNywxMSA3LDExVjE5SDRWN0gyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJld29yayA9IFwiTTUuOCwxNi41OUw0LjUsMTUuMjhMMTIuMjYsNy41TDE2LjUsMTEuNzRMOC43MiwxOS41TDcuMjksMTguMDlDNy4wNCwxOC4xNiA2LjgsMTguMjggNi42MywxOC41QzYuNTcsMTguNTcgNi41LDE4LjY1IDYuNSwxOC43NEM2LjQyLDE4Ljg4IDYuMzgsMTkgNi4zMiwxOS4xNUM2LjIxLDE5LjQyIDYuMDksMTkuNjkgNS45MywxOS45M0M1LjgxLDIwLjEgNS42OCwyMC4yNiA1LjUzLDIwLjM5QzUuNDIsMjAuNSA1LjI5LDIwLjU5IDUuMTYsMjAuNjZDNS4wOCwyMC43MSA1LDIwLjc2IDQuOSwyMC43OUM0LjMsMjEuMDQgMy42MywyMSAzLDIxVjE5QzMuMjMsMTkgMy44MywxOSAzLjksMTlDNCwxOSA0LjA4LDE5IDQuMTYsMTguOTRDNC4xOCwxOC45MiA0LjE5LDE4LjkxIDQuMjEsMTguODlDNC4yOCwxOC44MSA0LjM0LDE4LjcgNC4zOSwxOC42QzQuNDcsMTguNDIgNC41MywxOC4yNCA0LjYsMTguMDZMNC42NCwxNy45NkM0Ljc2LDE3LjY5IDQuOSwxNy40NSA1LjA4LDE3LjIzQzUuMTgsMTcuMSA1LjMsMTcgNS40MiwxNi44N0M1LjU0LDE2Ljc3IDUuNjYsMTYuNjcgNS44LDE2LjU5TTIxLDNMMTkuODgsMTEuMTlMMTIuODEsNC4xMkwyMSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmV3b3JrT2ZmID0gXCJNMjAuODQgMjIuNzNMMTMuMTcgMTUuMDZMOC43MiAxOS41TDcuMjkgMTguMDlDNy4wNCAxOC4xNiA2LjggMTguMjggNi42MyAxOC41QzYuNTcgMTguNTcgNi41IDE4LjY1IDYuNSAxOC43NEM2LjQyIDE4Ljg4IDYuMzggMTkgNi4zMiAxOS4xNUM2LjIxIDE5LjQyIDYuMDkgMTkuNjkgNS45MyAxOS45M0M1LjgxIDIwLjEgNS42OCAyMC4yNiA1LjUzIDIwLjM5QzUuNDIgMjAuNSA1LjI5IDIwLjU5IDUuMTYgMjAuNjZDNS4wOCAyMC43MSA1IDIwLjc2IDQuOSAyMC43OUM0LjMgMjEuMDQgMy42MyAyMSAzIDIxVjE5SDMuOUM0IDE5IDQuMDggMTkgNC4xNiAxOC45NEw0LjIxIDE4Ljg5QzQuMjggMTguODEgNC4zNCAxOC43IDQuMzkgMTguNkM0LjQ3IDE4LjQyIDQuNTMgMTguMjQgNC42IDE4LjA2TDQuNjQgMTcuOTZDNC43NiAxNy42OSA0LjkgMTcuNDUgNS4wOCAxNy4yM0M1LjE4IDE3LjEgNS4zIDE3IDUuNDIgMTYuODdDNS41NCAxNi43NyA1LjY2IDE2LjY3IDUuOCAxNi41OUw0LjUgMTUuMjhMOC45NCAxMC44M0wxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTIxIDNMMTIuODEgNC4xMkwxOS44OCAxMS4xOUwyMSAzTTE2LjUgMTEuNzRMMTIuMjYgNy41TDExLjUgOC4yOEwxNS43MiAxMi41TDE2LjUgMTEuNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlzaCA9IFwiTTEyLDIwTDEyLjc2LDE3QzkuNSwxNi43OSA2LjU5LDE1LjQgNS43NSwxMy41OEM1LjY2LDE0LjA2IDUuNTMsMTQuNSA1LjMzLDE0LjgzQzQuNjcsMTYgMy4zMywxNiAyLDE2QzMuMSwxNiAzLjUsMTQuNDMgMy41LDEyLjVDMy41LDEwLjU3IDMuMSw5IDIsOUMzLjMzLDkgNC42Nyw5IDUuMzMsMTAuMTdDNS41MywxMC41IDUuNjYsMTAuOTQgNS43NSwxMS40MkM2LjQsMTAgOC4zMiw4Ljg1IDEwLjY2LDguMzJMOSw1QzExLDUgMTMsNSAxNC4zMyw1LjY3QzE1LjQ2LDYuMjMgMTYuMTEsNy4yNyAxNi42OSw4LjM4QzE5LjYxLDkuMDggMjIsMTAuNjYgMjIsMTIuNUMyMiwxNC4zOCAxOS41LDE2IDE2LjUsMTYuNjZDMTUuNjcsMTcuNzYgMTQuODYsMTguNzggMTQuMTcsMTkuMzNDMTMuMzMsMjAgMTIuNjcsMjAgMTIsMjBNMTcsMTFBMSwxIDAgMCwwIDE2LDEyQTEsMSAwIDAsMCAxNywxM0ExLDEgMCAwLDAgMTgsMTJBMSwxIDAgMCwwIDE3LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpc2hPZmYgPSBcIk0yMC44IDIyLjdMMTUuNyAxNy42QzE1LjEgMTguMyAxNC42IDE4LjkgMTQuMSAxOS4zQzEzLjMgMjAgMTIuNyAyMCAxMiAyMEwxMi44IDE3QzkuNSAxNi44IDYuNiAxNS40IDUuOCAxMy42QzUuNyAxNC4xIDUuNiAxNC41IDUuNCAxNC44QzQuNyAxNiAzLjMgMTYgMiAxNkMzLjEgMTYgMy41IDE0LjQgMy41IDEyLjVTMy4xIDkgMiA5QzMuMyA5IDQuNyA5IDUuMyAxMC4yQzUuNSAxMC41IDUuNiAxMSA1LjcgMTEuNEM2IDEwLjcgNi43IDEwIDcuNiA5LjVMMS4xIDNMMi40IDEuN0wyMi4xIDIxLjRMMjAuOCAyMi43TTkuOCA2LjZMOSA1QzExIDUgMTMgNSAxNC4zIDUuN0MxNS40IDYuMyAxNi4xIDcuMyAxNi43IDguNEMxOS42IDkuMSAyMiAxMC43IDIyIDEyLjVDMjIgMTMuOCAyMC44IDE1IDE5IDE1LjhMOS44IDYuNk0xNiAxMkMxNiAxMi42IDE2LjQgMTMgMTcgMTNTMTggMTIuNiAxOCAxMiAxNy42IDExIDE3IDExIDE2IDExLjQgMTYgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlzaGJvd2wgPSBcIk0xOS4xMSw1SDIxVjNIM1Y1SDQuODlDMy4xMSw2LjggMiw5LjI3IDIsMTJDMiwxNS45NyA0LjMxLDE5LjM5IDcuNjYsMjFIMTYuMzRDMTkuNjksMTkuMzkgMjIsMTUuOTcgMjIsMTJDMjIsOS4yNyAyMC44OSw2LjggMTkuMTEsNU0xMy4yNSwxN0MxMi4wOSwxNyAxMS4wNiwxNi42NCAxMC4zMywxNi4xN0M5LjY3LDE3IDguMzMsMTcgNywxN0M4LjEsMTcgOC41LDE1Ljg4IDguNSwxNC41QzguNSwxMy4xMiA4LjEsMTIgNywxMkM4LjMzLDEyIDkuNjcsMTIgMTAuMzcsMTIuOTFDMTEuMDYsMTIuMzYgMTIuMDksMTIgMTMuMjUsMTJDMTUuMzIsMTIgMTcsMTMuMTIgMTcsMTQuNUMxNywxNS44OCAxNS4zMiwxNyAxMy4yNSwxN00xNiw3QzEzLjU2LDguNzEgMTAuNDQsOC43MSA4LDdDNy4wNiw3LjY2IDYsOC4wOSA0Ljk1LDguMjVDNS4zMSw3LjU4IDUuNzcsNi45NiA2LjMyLDYuNDFMNy43LDVIMTYuM0wxNy42OCw2LjQxQzE4LjIzLDYuOTYgMTguNjksNy41OCAxOS4wNSw4LjI1QzE4LDguMDkgMTYuOTQsNy42NiAxNiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpc2hib3dsT3V0bGluZSA9IFwiTTE5LjExLDVIMjFWM0gzVjVINC44OUMzLjExLDYuOCAyLDkuMjcgMiwxMkMyLDE1Ljk3IDQuMzEsMTkuMzkgNy42NiwyMUgxNi4zNEMxOS42OSwxOS4zOSAyMiwxNS45NyAyMiwxMkMyMiw5LjI3IDIwLjg5LDYuOCAxOS4xMSw1TTYuMzIsNi40MUw3LjcsNUgxNi4zTDE3LjY4LDYuNDFDMTguMjMsNi45NiAxOC42OSw3LjU4IDE5LjA1LDguMjVDMTgsOC4wOSAxNi45NCw3LjY2IDE2LDdDMTMuNTYsOC43MSAxMC40NCw4LjcxIDgsN0M3LjA2LDcuNjYgNiw4LjA5IDQuOTUsOC4yNUM1LjMxLDcuNTggNS43Nyw2Ljk2IDYuMzIsNi40MU0xNS44NSwxOUg4LjE1QzUuNTgsMTcuNTkgNCwxNC45NSA0LDEyQzQsMTEuNDMgNC4wNywxMC44NiA0LjE5LDEwLjMyQzUuNSwxMC4yOSA2LjgsOS45NSA4LDkuMzNDMTAuNSwxMC42MyAxMy41LDEwLjYzIDE2LDkuMzNDMTcuMiw5Ljk1IDE4LjUsMTAuMjkgMTkuODEsMTAuMzJDMTkuOTMsMTAuODYgMjAsMTEuNDMgMjAsMTJDMjAsMTQuOTUgMTguNDIsMTcuNTkgMTUuODUsMTlNMTcsMTQuNUMxNywxNS44OCAxNS4zMiwxNyAxMy4yNSwxN0MxMi4wOSwxNyAxMS4wNiwxNi42NCAxMC4zMywxNi4xNkM5LjY3LDE3IDguMzMsMTcgNywxN0M4LjEsMTcgOC41LDE1Ljg4IDguNSwxNC41QzguNSwxMy4xMiA4LjEsMTIgNywxMkM4LjMzLDEyIDkuNjcsMTIgMTAuMzcsMTIuOTFDMTEuMDYsMTIuMzYgMTIuMDksMTIgMTMuMjUsMTJDMTUuMzIsMTIgMTcsMTMuMTIgMTcsMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaXRUb1BhZ2UgPSBcIk0yMCwySDRDMi44OSwyIDIsMi44OSAyLDRWMjBDMiwyMS4xMSAyLjg5LDIyIDQsMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWNEMyMiwyLjg5IDIxLjExLDIgMjAsMk0xMiw0TDE1LDdIMTNWOUgxMVY3SDlNNywxNUw0LDEyTDcsOVYxMUg5VjEzSDdNMTIsMjBMOSwxN0gxMVYxNUgxM1YxN0gxNU0xNywxNVYxM0gxNVYxMUgxN1Y5TDIwLDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpRml0VG9QYWdlT3V0bGluZSA9IFwiTTIwLDJINEMyLjg5LDIgMiwyLjg5IDIsNFYyMEMyLDIxLjExIDIuODksMjIgNCwyMkgyMEMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFY0QzIyLDIuODkgMjEuMTEsMiAyMCwyTTIwLDIwSDRWNEgyME0xMyw4VjEwSDExVjhIOUwxMiw1TDE1LDhNMTYsMTVWMTNIMTRWMTFIMTZWOUwxOSwxMk0xMCwxM0g4VjE1TDUsMTJMOCw5VjExSDEwTTE1LDE2TDEyLDE5TDksMTZIMTFWMTRIMTNWMTZcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFnID0gXCJNMTQuNCw2TDE0LDRINVYyMUg3VjE0SDEyLjZMMTMsMTZIMjBWNkgxNC40WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdDaGVja2VyZWQgPSBcIk0xNC40LDZIMjBWMTZIMTNMMTIuNiwxNEg3VjIxSDVWNEgxNEwxNC40LDZNMTQsMTRIMTZWMTJIMThWMTBIMTZWOEgxNFYxMEwxMyw4VjZIMTFWOEg5VjZIN1Y4SDlWMTBIN1YxMkg5VjEwSDExVjEySDEzVjEwTDE0LDEyVjE0TTExLDEwVjhIMTNWMTBIMTFNMTQsMTBIMTZWMTJIMTRWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhZ01pbnVzID0gXCJNMTIuNCw1SDE4VjE1SDExTDEwLjYsMTNINVYyMEgzVjNIMTJMMTIuNCw1TTE0LDE3SDIyVjE5SDE0VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdNaW51c091dGxpbmUgPSBcIk0xMi4zNiA2TDEyLjc2IDhIMThWMTRIMTQuNjRMMTQuMjQgMTJIN1Y2SDEyLjM2TTE0IDRINVYyMUg3VjE0SDEyLjZMMTMgMTZIMjBWNkgxNC40TTIzIDE4SDE1VjIwSDIzVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdPdXRsaW5lID0gXCJNMTIuMzYsNkwxMi43Niw4SDE4VjE0SDE0LjY0TDE0LjI0LDEySDdWNkgxMi4zNk0xNCw0SDVWMjFIN1YxNEgxMi42TDEzLDE2SDIwVjZIMTQuNFwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdQbHVzID0gXCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMTIuNCw1SDE4VjEyQzE1Ljc4LDEyIDEzLjg0LDEzLjIxIDEyLjgsMTVIMTFMMTAuNiwxM0g1VjIwSDNWM0gxMkwxMi40LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhZ1BsdXNPdXRsaW5lID0gXCJNMTMgMTZMMTIuNiAxNEg3VjIxSDVWNEgxNEwxNC40IDZIMjBWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWOEgxMi43NkwxMi4zNiA2SDdWMTJIMTQuMjRMMTQuNjQgMTRIMTUuNjlDMTQuOTIgMTQuNSAxNC4yNyAxNS4yIDEzLjgxIDE2SDEzTTE4IDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdSZW1vdmUgPSBcIk0xNC40NiwxNS44OEwxNS44OCwxNC40NkwxOCwxNi41OUwyMC4xMiwxNC40NkwyMS41NCwxNS44OEwxOS40MSwxOEwyMS41NCwyMC4xMkwyMC4xMiwyMS41NEwxOCwxOS40MUwxNS44OCwyMS41NEwxNC40NiwyMC4xMkwxNi41OSwxOEwxNC40NiwxNS44OE0xMi40LDVIMThWMTJDMTUuNzgsMTIgMTMuODQsMTMuMjEgMTIuOCwxNUgxMUwxMC42LDEzSDVWMjBIM1YzSDEyTDEyLjQsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFnUmVtb3ZlT3V0bGluZSA9IFwiTTEzIDE2TDEyLjYgMTRIN1YyMUg1VjRIMTRMMTQuNCA2SDIwVjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjhIMTIuNzZMMTIuMzYgNkg3VjEySDE0LjI0TDE0LjY0IDE0SDE1LjY5QzE0LjkyIDE0LjUgMTQuMjcgMTUuMiAxMy44MSAxNkgxM00yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFnVHJpYW5nbGUgPSBcIk03LDJIOVYyMkg3VjJNMTksOUwxMSwxNC42VjMuNEwxOSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdWYXJpYW50ID0gXCJNNiwzQTEsMSAwIDAsMSA3LDRWNC44OEM4LjA2LDQuNDQgOS41LDQgMTEsNEMxNCw0IDE0LDYgMTYsNkMxOSw2IDIwLDQgMjAsNFYxMkMyMCwxMiAxOSwxNCAxNiwxNEMxMywxNCAxMywxMiAxMSwxMkM4LDEyIDcsMTQgNywxNFYyMUg1VjRBMSwxIDAgMCwxIDYsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFnVmFyaWFudE91dGxpbmUgPSBcIk02LDNBMSwxIDAgMCwxIDcsNFY0Ljg4QzguMDYsNC40NCA5LjUsNCAxMSw0QzE0LDQgMTQsNiAxNiw2QzE5LDYgMjAsNCAyMCw0VjEyQzIwLDEyIDE5LDE0IDE2LDE0QzEzLDE0IDEzLDEyIDExLDEyQzgsMTIgNywxNCA3LDE0VjIxSDVWNEExLDEgMCAwLDEgNiwzTTcsNy4yNVYxMS41QzcsMTEuNSA5LDEwIDExLDEwQzEzLDEwIDE0LDEyIDE2LDEyQzE4LDEyIDE4LDExIDE4LDExVjcuNUMxOCw3LjUgMTcsOCAxNiw4QzE0LDggMTMsNiAxMSw2QzksNiA3LDcuMjUgNyw3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXJlID0gXCJNNywxMUgxVjEzSDdWMTFNOS4xNyw3Ljc2TDcuMDUsNS42NEw1LjY0LDcuMDVMNy43Niw5LjE3TDkuMTcsNy43Nk0xMywxSDExVjdIMTNWMU0xOC4zNiw3LjA1TDE2Ljk1LDUuNjRMMTQuODMsNy43NkwxNi4yNCw5LjE3TDE4LjM2LDcuMDVNMTcsMTFWMTNIMjNWMTFIMTdNMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyQTMsMyAwIDAsMCAxMiw5TTE0LjgzLDE2LjI0TDE2Ljk1LDE4LjM2TDE4LjM2LDE2Ljk1TDE2LjI0LDE0LjgzTDE0LjgzLDE2LjI0TTUuNjQsMTYuOTVMNy4wNSwxOC4zNkw5LjE3LDE2LjI0TDcuNzYsMTQuODNMNS42NCwxNi45NU0xMSwyM0gxM1YxN0gxMVYyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzaCA9IFwiTTcsMlYxM0gxMFYyMkwxNywxMEgxM0wxNywySDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hBbGVydCA9IFwiTTUsMlYxM0g4VjIyTDE1LDEwSDExTDE1LDJNMTcsMTVIMTlWMTdIMTdWMTVNMTcsN0gxOVYxM0gxN1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNoQWxlcnRPdXRsaW5lID0gXCJNNSwySDE1TDExLjUsOUgxNUw4LDIyVjE0SDVWMk03LDRWMTJIMTBWMTQuNjZMMTIsMTFIOC4yNEwxMS43Niw0TTE3LDE1SDE5VjE3SDE3VjE1TTE3LDdIMTlWMTNIMTdWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzaEF1dG8gPSBcIk0xNi44NSw3LjY1TDE4LDRMMTkuMTUsNy42NU0xOSwySDE3TDEzLjgsMTFIMTUuN0wxNi40LDlIMTkuNkwyMC4zLDExSDIyLjJNMywyVjE0SDZWMjNMMTMsMTFIOUwxMywySDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hDaXJjbGUgPSBcIk0xMS41LDIwTDE2LjM2LDEwLjI3SDEzVjRMOCwxMy43M0gxMS41VjIwTTEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMkMyMiwxNC43NSAyMSwxNy4xIDE5LjA1LDE5LjA1QzE3LjEsMjEgMTQuNzUsMjIgMTIsMjJDOS4yNSwyMiA2LjksMjEgNC45NSwxOS4wNUMzLDE3LjEgMiwxNC43NSAyLDEyQzIsOS4yNSAzLDYuOSA0Ljk1LDQuOTVDNi45LDMgOS4yNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hPZmYgPSBcIk0xNywxMEgxM0wxNywySDdWNC4xOEwxNS40NiwxMi42NE0zLjI3LDNMMiw0LjI3TDcsOS4yN1YxM0gxMFYyMkwxMy41OCwxNS44NkwxNy43MywyMEwxOSwxOC43M0wzLjI3LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hPdXRsaW5lID0gXCJNNywySDE3TDEzLjUsOUgxN0wxMCwyMlYxNEg3VjJNOSw0VjEySDEyVjE0LjY2TDE0LDExSDEwLjI0TDEzLjc2LDRIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzaFJlZEV5ZSA9IFwiTTE2LDVDMTUuNDQsNSAxNSw1LjQ0IDE1LDZDMTUsNi41NiAxNS40NCw3IDE2LDdDMTYuNTYsNyAxNyw2LjU2IDE3LDZDMTcsNS40NCAxNi41Niw1IDE2LDVNMTYsMkMxMy4yNywyIDEwLjk0LDMuNjYgMTAsNkMxMC45NCw4LjM0IDEzLjI3LDEwIDE2LDEwQzE4LjczLDEwIDIxLjA2LDguMzQgMjIsNkMyMS4wNiwzLjY2IDE4LjczLDIgMTYsMk0xNiwzLjVBMi41LDIuNSAwIDAsMSAxOC41LDZBMi41LDIuNSAwIDAsMSAxNiw4LjVBMi41LDIuNSAwIDAsMSAxMy41LDZBMi41LDIuNSAwIDAsMSAxNiwzLjVNMywyVjE0SDZWMjNMMTMsMTFIOUwxMC4xMiw4LjVDOS40NCw3Ljc2IDguODgsNi45MyA4LjUsNkM5LjE5LDQuMjkgMTAuNSwyLjg4IDEyLjExLDJIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzaGxpZ2h0ID0gXCJNOSwxMEw2LDVIMThMMTUsMTBIOU0xOCw0SDZWMkgxOFY0TTksMjJWMTFIMTVWMjJIOU0xMiwxM0ExLDEgMCAwLDAgMTEsMTRBMSwxIDAgMCwwIDEyLDE1QTEsMSAwIDAsMCAxMywxNEExLDEgMCAwLDAgMTIsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hsaWdodE9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTUsMTguMjdWMjJIOVYxMi4yN0wyLDUuMjdNMTgsNUwxNSwxMEgxMS44Mkw2LjgyLDVIMThNMTgsNEg2VjJIMThWNE0xNSwxMVYxMy4xOEwxMi44MiwxMUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzayA9IFwiTTYsMjJBMywzIDAgMCwxIDMsMTlDMywxOC40IDMuMTgsMTcuODQgMy41LDE3LjM3TDksNy44MVY2QTEsMSAwIDAsMSA4LDVWNEEyLDIgMCAwLDEgMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY1QTEsMSAwIDAsMSAxNSw2VjcuODFMMjAuNSwxNy4zN0MyMC44MiwxNy44NCAyMSwxOC40IDIxLDE5QTMsMyAwIDAsMSAxOCwyMkg2TTUsMTlBMSwxIDAgMCwwIDYsMjBIMThBMSwxIDAgMCwwIDE5LDE5QzE5LDE4Ljc5IDE4LjkzLDE4LjU5IDE4LjgyLDE4LjQzTDE2LjUzLDE0LjQ3TDE0LDE3TDguOTMsMTEuOTNMNS4xOCwxOC40M0M1LjA3LDE4LjU5IDUsMTguNzkgNSwxOU0xMywxMEExLDEgMCAwLDAgMTIsMTFBMSwxIDAgMCwwIDEzLDEyQTEsMSAwIDAsMCAxNCwxMUExLDEgMCAwLDAgMTMsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tFbXB0eSA9IFwiTTYsMjJBMywzIDAgMCwxIDMsMTlDMywxOC40IDMuMTgsMTcuODQgMy41LDE3LjM3TDksNy44MVY2QTEsMSAwIDAsMSA4LDVWNEEyLDIgMCAwLDEgMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY1QTEsMSAwIDAsMSAxNSw2VjcuODFMMjAuNSwxNy4zN0MyMC44MiwxNy44NCAyMSwxOC40IDIxLDE5QTMsMyAwIDAsMSAxOCwyMkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrRW1wdHlNaW51cyA9IFwiTTIzIDE3VjE5SDE1VjE3SDIzTTYgMjJDNC4zNCAyMiAzIDIwLjY2IDMgMTlDMyAxOC40IDMuMTggMTcuODQgMy41IDE3LjM2TDkgNy44MVY2QzguNDUgNiA4IDUuNTUgOCA1VjRDOCAyLjkgOC45IDIgMTAgMkgxNEMxNS4xMSAyIDE2IDIuOSAxNiA0VjVDMTYgNS41NSAxNS41NSA2IDE1IDZWNy44MUwxNy41IDEyLjE4QzE0LjkyIDEyLjg0IDEzIDE1LjIgMTMgMThDMTMgMTkuNTQgMTMuNTggMjAuOTQgMTQuNTMgMjJINlpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFza0VtcHR5TWludXNPdXRsaW5lID0gXCJNMjMgMTdWMTlIMTVWMTdIMjNNNSAxOUM1IDE5LjU1IDUuNDUgMjAgNiAyMEgxMy4zNEMxMy42MSAyMC43NSAxNCAyMS40MiAxNC41MyAyMkg2QzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNi44NiAxMi4zNSAxNi4yNCAxMi42MyAxNS42OSAxM0wxMyA4LjM1VjRIMTFWOC4zNUw1LjE4IDE4LjQzQzUuMDcgMTguNTkgNSAxOC43OSA1IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrRW1wdHlPZmYgPSBcIk0yMC44IDIyLjdMMTkuNiAyMS41QzE5LjEgMjEuOCAxOC42IDIyIDE4IDIySDZDNC4zIDIyIDMgMjAuNyAzIDE5QzMgMTguNCAzLjIgMTcuOCAzLjUgMTcuNEw3LjkgOS44TDEuMSAzTDIuNCAxLjdMMjIuMSAyMS40TDIwLjggMjIuN00xNSA3LjhWNkMxNS42IDYgMTYgNS42IDE2IDVWNEMxNiAyLjkgMTUuMSAyIDE0IDJIMTBDOC45IDIgOCAyLjkgOCA0VjQuOEwyMC40IDE3LjJMMTUgNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrRW1wdHlPZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNy45IDkuOEwzLjUgMTcuNEMzLjIgMTcuOCAzIDE4LjQgMyAxOUMzIDIwLjcgNC4zIDIyIDYgMjJIMThDMTguNiAyMiAxOS4yIDIxLjggMTkuNiAyMS41TDIwLjggMjIuN0wyMi4xIDIxLjVNMTggMjBINkM1LjQgMjAgNSAxOS42IDUgMTlDNSAxOC44IDUuMSAxOC42IDUuMiAxOC40TDkuNCAxMS4yTDE4IDIwQzE4LjEgMjAgMTggMjAgMTggMjBNMTEgNy44TDggNC44VjRDOCAyLjkgOC45IDIgMTAgMkgxNEMxNS4xIDIgMTYgMi45IDE2IDRWNUMxNiA1LjYgMTUuNiA2IDE1IDZWNy44TDIwLjQgMTcuMkwxNSAxMS44TDEzIDguNFY0SDExVjcuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFza0VtcHR5T3V0bGluZSA9IFwiTTUsMTlBMSwxIDAgMCwwIDYsMjBIMThBMSwxIDAgMCwwIDE5LDE5QzE5LDE4Ljc5IDE4LjkzLDE4LjU5IDE4LjgyLDE4LjQzTDEzLDguMzVWNEgxMVY4LjM1TDUuMTgsMTguNDNDNS4wNywxOC41OSA1LDE4Ljc5IDUsMTlNNiwyMkEzLDMgMCAwLDEgMywxOUMzLDE4LjQgMy4xOCwxNy44NCAzLjUsMTcuMzdMOSw3LjgxVjZBMSwxIDAgMCwxIDgsNVY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjVBMSwxIDAgMCwxIDE1LDZWNy44MUwyMC41LDE3LjM3QzIwLjgyLDE3Ljg0IDIxLDE4LjQgMjEsMTlBMywzIDAgMCwxIDE4LDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tFbXB0eVBsdXMgPSBcIk0xOCAxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNE02IDIyQzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNC45MiAxMi44NCAxMyAxNS4yIDEzIDE4QzEzIDE5LjU0IDEzLjU4IDIwLjk0IDE0LjUzIDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tFbXB0eVBsdXNPdXRsaW5lID0gXCJNMTggMTRIMjBWMTdIMjNWMTlIMjBWMjJIMThWMTlIMTVWMTdIMThWMTRNNSAxOUM1IDE5LjU1IDUuNDUgMjAgNiAyMEgxMy4zNEMxMy42MSAyMC43NSAxNCAyMS40MiAxNC41MyAyMkg2QzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNi44NiAxMi4zNSAxNi4yNCAxMi42MyAxNS42OSAxM0wxMyA4LjM1VjRIMTFWOC4zNUw1LjE4IDE4LjQzQzUuMDcgMTguNTkgNSAxOC43OSA1IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrRW1wdHlSZW1vdmUgPSBcIk0xNS40NiAxNS44OEwxNi44OCAxNC40NkwxOSAxNi41OUwyMS4xMiAxNC40N0wyMi41MyAxNS44OEwyMC40MSAxOEwyMi41NCAyMC4xMkwyMS4xMiAyMS41NEwxOSAxOS40MUwxNi44OCAyMS41M0wxNS40NyAyMC4xMkwxNy41OSAxOEwxNS40NiAxNS44OE02IDIyQzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNC45MiAxMi44NCAxMyAxNS4yIDEzIDE4QzEzIDE5LjU0IDEzLjU4IDIwLjk0IDE0LjUzIDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tFbXB0eVJlbW92ZU91dGxpbmUgPSBcIk0xNS40NiAxNS44OEwxNi44OCAxNC40NkwxOSAxNi41OUwyMS4xMiAxNC40N0wyMi41MyAxNS44OEwyMC40MSAxOEwyMi41NCAyMC4xMkwyMS4xMiAyMS41NEwxOSAxOS40MUwxNi44OCAyMS41M0wxNS40NyAyMC4xMkwxNy41OSAxOEwxNS40NiAxNS44OE01IDE5QzUgMTkuNTUgNS40NSAyMCA2IDIwSDEzLjM0QzEzLjYxIDIwLjc1IDE0IDIxLjQyIDE0LjUzIDIySDZDNC4zNCAyMiAzIDIwLjY2IDMgMTlDMyAxOC40IDMuMTggMTcuODQgMy41IDE3LjM2TDkgNy44MVY2QzguNDUgNiA4IDUuNTUgOCA1VjRDOCAyLjkgOC45IDIgMTAgMkgxNEMxNS4xMSAyIDE2IDIuOSAxNiA0VjVDMTYgNS41NSAxNS41NSA2IDE1IDZWNy44MUwxNy41IDEyLjE4QzE2Ljg2IDEyLjM1IDE2LjI0IDEyLjYzIDE1LjY5IDEzTDEzIDguMzVWNEgxMVY4LjM1TDUuMTggMTguNDNDNS4wNyAxOC41OSA1IDE4Ljc5IDUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tNaW51cyA9IFwiTTIzIDE3VjE5SDE1VjE3SDIzTTYgMjJDNC4zNCAyMiAzIDIwLjY2IDMgMTlDMyAxOC40IDMuMTggMTcuODQgMy41IDE3LjM2TDkgNy44MVY2QzguNDUgNiA4IDUuNTUgOCA1VjRDOCAyLjkgOC45IDIgMTAgMkgxNEMxNS4xMSAyIDE2IDIuOSAxNiA0VjVDMTYgNS41NSAxNS41NSA2IDE1IDZWNy44MUwxNy41IDEyLjE4QzE1LjUgMTIuNyAxMy44NiAxNC4yNiAxMy4yNiAxNi4yNkw4LjkzIDExLjkzTDUuMTggMTguNDNDNS4wNyAxOC41OSA1IDE4Ljc5IDUgMTlDNSAxOS41NSA1LjQ1IDIwIDYgMjBIMTMuMzRDMTMuNjEgMjAuNzUgMTQgMjEuNDIgMTQuNTMgMjJINk0xMyAxMEMxMi40NSAxMCAxMiAxMC40NSAxMiAxMUMxMiAxMS41NSAxMi40NSAxMiAxMyAxMkMxMy41NSAxMiAxNCAxMS41NSAxNCAxMUMxNCAxMC40NSAxMy41NSAxMCAxMyAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFza01pbnVzT3V0bGluZSA9IFwiTTIzIDE3VjE5SDE1VjE3SDIzTTUgMTlDNSAxOS41NSA1LjQ1IDIwIDYgMjBIMTMuMzRDMTMuNjEgMjAuNzUgMTQgMjEuNDIgMTQuNTMgMjJINkM0LjM0IDIyIDMgMjAuNjYgMyAxOUMzIDE4LjQgMy4xOCAxNy44NCAzLjUgMTcuMzZMOSA3LjgxVjZDOC40NSA2IDggNS41NSA4IDVWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjExIDIgMTYgMi45IDE2IDRWNUMxNiA1LjU1IDE1LjU1IDYgMTUgNlY3LjgxTDE3LjUgMTIuMThDMTYuODYgMTIuMzUgMTYuMjQgMTIuNjMgMTUuNjkgMTNMMTMgOC4zNVY0SDExVjguMzVMNS4xOCAxOC40M0M1LjA3IDE4LjU5IDUgMTguNzkgNSAxOU0xMyAxNkwxMy41OCAxNS40MkMxMy4yMSAxNi4yIDEzIDE3LjA4IDEzIDE4SDcuNzNMMTAuMzkgMTMuMzlMMTMgMTZNMTIuNSAxMkMxMi43OCAxMiAxMyAxMi4yMiAxMyAxMi41QzEzIDEyLjc4IDEyLjc4IDEzIDEyLjUgMTNDMTIuMjIgMTMgMTIgMTIuNzggMTIgMTIuNUMxMiAxMi4yMiAxMi4yMiAxMiAxMi41IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrT2ZmID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNy45IDkuOEwzLjUgMTcuNEMzLjIgMTcuOCAzIDE4LjQgMyAxOUMzIDIwLjcgNC4zIDIyIDYgMjJIMThDMTguNiAyMiAxOS4yIDIxLjggMTkuNiAyMS41TDIwLjggMjIuN0wyMi4xIDIxLjVNMTggMjBINkM1LjQgMjAgNSAxOS42IDUgMTlDNSAxOC44IDUuMSAxOC42IDUuMiAxOC40TDkgMTEuOUwxNCAxN0wxNC42IDE2LjRMMTggMjBDMTguMSAyMCAxOCAyMCAxOCAyME04IDQuOFY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMSAyIDE2IDIuOSAxNiA0VjVDMTYgNS42IDE1LjYgNiAxNSA2VjcuOEwyMC40IDE3LjJMOCA0LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tPZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNy45IDkuOEwzLjUgMTcuNEMzLjIgMTcuOCAzIDE4LjQgMyAxOUMzIDIwLjcgNC4zIDIyIDYgMjJIMThDMTguNiAyMiAxOS4yIDIxLjggMTkuNiAyMS41TDIwLjggMjIuN0wyMi4xIDIxLjVNMTggMjBINkM1LjQgMjAgNSAxOS42IDUgMTlDNSAxOC44IDUuMSAxOC42IDUuMiAxOC40TDkuNCAxMS4yTDEzLjYgMTUuNEwxMyAxNkwxMC40IDEzLjRMNy43IDE4SDE2LjFMMTggMjBDMTguMSAyMCAxOCAyMCAxOCAyME0xMSA3LjhMOCA0LjhWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNiAxNS42IDYgMTUgNlY3LjhMMjAuNCAxNy4yTDE1IDExLjhMMTMgOC40VjRIMTFWNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrT3V0bGluZSA9IFwiTTUsMTlBMSwxIDAgMCwwIDYsMjBIMThBMSwxIDAgMCwwIDE5LDE5QzE5LDE4Ljc5IDE4LjkzLDE4LjU5IDE4LjgyLDE4LjQzTDEzLDguMzVWNEgxMVY4LjM1TDUuMTgsMTguNDNDNS4wNywxOC41OSA1LDE4Ljc5IDUsMTlNNiwyMkEzLDMgMCAwLDEgMywxOUMzLDE4LjQgMy4xOCwxNy44NCAzLjUsMTcuMzdMOSw3LjgxVjZBMSwxIDAgMCwxIDgsNVY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjVBMSwxIDAgMCwxIDE1LDZWNy44MUwyMC41LDE3LjM3QzIwLjgyLDE3Ljg0IDIxLDE4LjQgMjEsMTlBMywzIDAgMCwxIDE4LDIySDZNMTMsMTZMMTQuMzQsMTQuNjZMMTYuMjcsMThINy43M0wxMC4zOSwxMy4zOUwxMywxNk0xMi41LDEyQTAuNSwwLjUgMCAwLDEgMTMsMTIuNUEwLjUsMC41IDAgMCwxIDEyLjUsMTNBMC41LDAuNSAwIDAsMSAxMiwxMi41QTAuNSwwLjUgMCAwLDEgMTIuNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFza1BsdXMgPSBcIk0xOCAxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNE02IDIyQzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNS41IDEyLjcgMTMuODYgMTQuMjYgMTMuMjYgMTYuMjZMOC45MyAxMS45M0w1LjE4IDE4LjQzQzUuMDcgMTguNTkgNSAxOC43OSA1IDE5QzUgMTkuNTUgNS40NSAyMCA2IDIwSDEzLjM0QzEzLjYxIDIwLjc1IDE0IDIxLjQyIDE0LjUzIDIySDZNMTMgMTBDMTIuNDUgMTAgMTIgMTAuNDUgMTIgMTFDMTIgMTEuNTUgMTIuNDUgMTIgMTMgMTJDMTMuNTUgMTIgMTQgMTEuNTUgMTQgMTFDMTQgMTAuNDUgMTMuNTUgMTAgMTMgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tQbHVzT3V0bGluZSA9IFwiTTE4IDE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3SDE4VjE0TTUgMTlDNSAxOS41NSA1LjQ1IDIwIDYgMjBIMTMuMzRDMTMuNjEgMjAuNzUgMTQgMjEuNDIgMTQuNTMgMjJINkM0LjM0IDIyIDMgMjAuNjYgMyAxOUMzIDE4LjQgMy4xOCAxNy44NCAzLjUgMTcuMzZMOSA3LjgxVjZDOC40NSA2IDggNS41NSA4IDVWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjExIDIgMTYgMi45IDE2IDRWNUMxNiA1LjU1IDE1LjU1IDYgMTUgNlY3LjgxTDE3LjUgMTIuMThDMTYuODYgMTIuMzUgMTYuMjQgMTIuNjMgMTUuNjkgMTNMMTMgOC4zNVY0SDExVjguMzVMNS4xOCAxOC40M0M1LjA3IDE4LjU5IDUgMTguNzkgNSAxOU0xMyAxNkwxMy41OCAxNS40MkMxMy4yMSAxNi4yIDEzIDE3LjA4IDEzIDE4SDcuNzNMMTAuMzkgMTMuMzlMMTMgMTZNMTIuNSAxMkMxMi43OCAxMiAxMyAxMi4yMiAxMyAxMi41QzEzIDEyLjc4IDEyLjc4IDEzIDEyLjUgMTNDMTIuMjIgMTMgMTIgMTIuNzggMTIgMTIuNUMxMiAxMi4yMiAxMi4yMiAxMiAxMi41IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrUmVtb3ZlID0gXCJNMTUuNDYgMTUuODhMMTYuODggMTQuNDZMMTkgMTYuNTlMMjEuMTIgMTQuNDdMMjIuNTMgMTUuODhMMjAuNDEgMThMMjIuNTQgMjAuMTJMMjEuMTIgMjEuNTRMMTkgMTkuNDFMMTYuODggMjEuNTNMMTUuNDcgMjAuMTJMMTcuNTkgMThMMTUuNDYgMTUuODhNNiAyMkM0LjM0IDIyIDMgMjAuNjYgMyAxOUMzIDE4LjQgMy4xOCAxNy44NCAzLjUgMTcuMzZMOSA3LjgxVjZDOC40NSA2IDggNS41NSA4IDVWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjExIDIgMTYgMi45IDE2IDRWNUMxNiA1LjU1IDE1LjU1IDYgMTUgNlY3LjgxTDE3LjUgMTIuMThDMTUuNSAxMi43IDEzLjg2IDE0LjI2IDEzLjI2IDE2LjI2TDguOTMgMTEuOTNMNS4xOCAxOC40M0M1LjA3IDE4LjU5IDUgMTguNzkgNSAxOUM1IDE5LjU1IDUuNDUgMjAgNiAyMEgxMy4zNEMxMy42MSAyMC43NSAxNCAyMS40MiAxNC41MyAyMkg2TTEzIDEwQzEyLjQ1IDEwIDEyIDEwLjQ1IDEyIDExQzEyIDExLjU1IDEyLjQ1IDEyIDEzIDEyQzEzLjU1IDEyIDE0IDExLjU1IDE0IDExQzE0IDEwLjQ1IDEzLjU1IDEwIDEzIDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrUmVtb3ZlT3V0bGluZSA9IFwiTTE1LjQ2IDE1Ljg4TDE2Ljg4IDE0LjQ2TDE5IDE2LjU5TDIxLjEyIDE0LjQ3TDIyLjUzIDE1Ljg4TDIwLjQxIDE4TDIyLjU0IDIwLjEyTDIxLjEyIDIxLjU0TDE5IDE5LjQxTDE2Ljg4IDIxLjUzTDE1LjQ3IDIwLjEyTDE3LjU5IDE4TDE1LjQ2IDE1Ljg4TTUgMTlDNSAxOS41NSA1LjQ1IDIwIDYgMjBIMTMuMzRDMTMuNjEgMjAuNzUgMTQgMjEuNDIgMTQuNTMgMjJINkM0LjM0IDIyIDMgMjAuNjYgMyAxOUMzIDE4LjQgMy4xOCAxNy44NCAzLjUgMTcuMzZMOSA3LjgxVjZDOC40NSA2IDggNS41NSA4IDVWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjExIDIgMTYgMi45IDE2IDRWNUMxNiA1LjU1IDE1LjU1IDYgMTUgNlY3LjgxTDE3LjUgMTIuMThDMTYuODYgMTIuMzUgMTYuMjQgMTIuNjMgMTUuNjkgMTNMMTMgOC4zNVY0SDExVjguMzVMNS4xOCAxOC40M0M1LjA3IDE4LjU5IDUgMTguNzkgNSAxOU0xMyAxNkwxMy41OCAxNS40MkMxMy4yMSAxNi4yIDEzIDE3LjA4IDEzIDE4SDcuNzNMMTAuMzkgMTMuMzlMMTMgMTZNMTIuNSAxMkMxMi43OCAxMiAxMyAxMi4yMiAxMyAxMi41QzEzIDEyLjc4IDEyLjc4IDEzIDEyLjUgMTNDMTIuMjIgMTMgMTIgMTIuNzggMTIgMTIuNUMxMiAxMi4yMiAxMi4yMiAxMiAxMi41IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrUm91bmRCb3R0b20gPSBcIk0xOSAxNUMxOSAxOC44NyAxNS44NyAyMiAxMiAyMkM4LjEzIDIyIDUgMTguODcgNSAxNUM1IDEyLjIxIDYuNjQgOS44IDkgOC42N1Y1QzkgNC40NSA5LjQ1IDQgMTAgNEgxMC41TDkuNSAySDE0LjVMMTMuNSA0SDE0QzE0LjU1IDQgMTUgNC40NSAxNSA1VjguNjdDMTcuMzYgOS44IDE5IDEyLjIxIDE5IDE1TTExIDZWMTAuMUM4LjcyIDEwLjU2IDcgMTIuNTggNyAxNUw3LjA4IDE1LjkxTDkgMTMuOTNMMTMuMDcgMThMMTYuOTMgMTQuMTRDMTYuNTggMTIuMTIgMTUgMTAuNSAxMyAxMC4xVjZIMTFNMTMuMDcgMTJDMTMuNjIgMTIgMTQuMDcgMTIuNDUgMTQuMDcgMTNDMTQuMDcgMTMuNTUgMTMuNjIgMTQgMTMuMDcgMTRDMTIuNSAxNCAxMi4wNyAxMy41NSAxMi4wNyAxM0MxMi4wNyAxMi40NSAxMi41IDEyIDEzLjA3IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrUm91bmRCb3R0b21FbXB0eSA9IFwiTTE5IDE1QzE5IDE4Ljg3IDE1Ljg3IDIyIDEyIDIyQzguMTMgMjIgNSAxOC44NyA1IDE1QzUgMTIuMjEgNi42NCA5LjggOSA4LjY3VjVDOSA0LjQ1IDkuNDUgNCAxMCA0SDEwLjVMOS41IDJIMTQuNUwxMy41IDRIMTRDMTQuNTUgNCAxNSA0LjQ1IDE1IDVWOC42N0MxNy4zNiA5LjggMTkgMTIuMjEgMTkgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tSb3VuZEJvdHRvbUVtcHR5T3V0bGluZSA9IFwiTTE5IDE1QzE5IDE4Ljg3IDE1Ljg3IDIyIDEyIDIyQzguMTMgMjIgNSAxOC44NyA1IDE1QzUgMTIuMjEgNi42NCA5LjggOSA4LjY3VjVDOSA0LjQ1IDkuNDUgNCAxMCA0SDEwLjVMOS41IDJIMTQuNUwxMy41IDRIMTRDMTQuNTUgNCAxNSA0LjQ1IDE1IDVWOC42N0MxNy4zNiA5LjggMTkgMTIuMjEgMTkgMTVNMTEgNlYxMC4xQzguNzIgMTAuNTYgNyAxMi41OCA3IDE1QzcgMTcuNzYgOS4yNCAyMCAxMiAyMEMxNC43NiAyMCAxNyAxNy43NiAxNyAxNUMxNyAxMi41OCAxNS4yOCAxMC41NiAxMyAxMC4xVjZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tSb3VuZEJvdHRvbU91dGxpbmUgPSBcIk0xNSAxNUMxNSAxNi42NiAxMy42NiAxOCAxMiAxOEMxMC4zNCAxOCA5IDE2LjY2IDkgMTVWMTRIMTFWMTVDMTEgMTUuNTUgMTEuNDUgMTYgMTIgMTZDMTIuNTUgMTYgMTMgMTUuNTUgMTMgMTVWMTRIMTVWMTVNMTkgMTVDMTkgMTguODcgMTUuODcgMjIgMTIgMjJDOC4xMyAyMiA1IDE4Ljg3IDUgMTVDNSAxMi4yMSA2LjY0IDkuOCA5IDguNjdWNUM5IDQuNDUgOS40NSA0IDEwIDRIMTAuNUw5LjUgMkgxNC41TDEzLjUgNEgxNEMxNC41NSA0IDE1IDQuNDUgMTUgNVY4LjY3QzE3LjM2IDkuOCAxOSAxMi4yMSAxOSAxNU0xMSA2VjEwLjFDOC43MiAxMC41NiA3IDEyLjU4IDcgMTVDNyAxNy43NiA5LjI0IDIwIDEyIDIwQzE0Ljc2IDIwIDE3IDE3Ljc2IDE3IDE1QzE3IDEyLjU4IDE1LjI4IDEwLjU2IDEzIDEwLjFWNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGV1ckRlTGlzID0gXCJNMTIgMlM5IDQgOSA3IDExIDEyIDExIDE2SDEwUzEwIDE0IDkgMTJDNyA4IDMgMTAgMyAxM1M1IDE2IDUgMTZDNSAxMyA4LjUgMTMgOC41IDE2SDdWMThIMTAuNUw5IDIwUzEwIDIxIDExIDIwTDEyIDIyTDEzIDIwQzE0IDIxIDE1IDIwIDE1IDIwTDEzLjUgMThIMTdWMTZIMTUuNUMxNS41IDEzIDE5IDEzIDE5IDE2QzE5IDE2IDIxIDE2IDIxIDEzUzE3IDggMTUgMTJDMTQgMTQgMTQgMTYgMTQgMTZIMTNDMTMgMTIgMTUgMTAgMTUgN1MxMiAyIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxpcEhvcml6b250YWwgPSBcIk0xNSAyMUgxN1YxOUgxNU0xOSA5SDIxVjdIMTlNMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUg5VjE5SDVWNUg5VjNINUMzLjkgMyAzIDMuOSAzIDVNMTkgM1Y1SDIxQzIxIDMuOSAyMC4xIDMgMTkgM00xMSAyM0gxM1YxSDExTTE5IDE3SDIxVjE1SDE5TTE1IDVIMTdWM0gxNU0xOSAxM0gyMVYxMUgxOU0xOSAyMUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxpcFRvQmFjayA9IFwiTTE1LDE3SDE3VjE1SDE1TTE1LDVIMTdWM0gxNU01LDdIM1YxOUEyLDIgMCAwLDAgNSwyMUgxN1YxOUg1TTE5LDE3QTIsMiAwIDAsMCAyMSwxNUgxOU0xOSw5SDIxVjdIMTlNMTksMTNIMjFWMTFIMTlNOSwxN1YxNUg3QTIsMiAwIDAsMCA5LDE3TTEzLDNIMTFWNUgxM00xOSwzVjVIMjFDMjEsMy44OSAyMC4xLDMgMTksM00xMywxNUgxMVYxN0gxM005LDNDNy44OSwzIDcsMy44OSA3LDVIOU05LDExSDdWMTNIOU05LDdIN1Y5SDlWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGlwVG9Gcm9udCA9IFwiTTcsMjFIOVYxOUg3TTExLDIxSDEzVjE5SDExTTE5LDE1SDlWNUgxOU0xOSwzSDlDNy44OSwzIDcsMy44OSA3LDVWMTVBMiwyIDAgMCwwIDksMTdIMTRMMTgsMTdIMTlBMiwyIDAgMCwwIDIxLDE1VjVDMjEsMy44OSAyMC4xLDMgMTksM00xNSwyMUgxN1YxOUgxNU0zLDlINVY3SDNNNSwyMVYxOUgzQTIsMiAwIDAsMCA1LDIxTTMsMTdINVYxNUgzTTMsMTNINVYxMUgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsaXBWZXJ0aWNhbCA9IFwiTTMgMTVWMTdINVYxNU0xNSAxOVYyMUgxN1YxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjlINVY1SDE5VjlIMjFWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMjEgMTlIMTlWMjFDMjAuMSAyMSAyMSAyMC4xIDIxIDE5TTEgMTFWMTNIMjNWMTFNNyAxOVYyMUg5VjE5TTE5IDE1VjE3SDIxVjE1TTExIDE5VjIxSDEzVjE5TTMgMTlDMyAyMC4xIDMuOSAyMSA1IDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb29yTGFtcCA9IFwiTTE1LDJMMTcsOUg3TDksMk0xMSwxMEgxM1YyMEgxNlYyMkg4VjIwSDExVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb29yTGFtcER1YWwgPSBcIk0xMS43MyAxMC4wNkwxMC4xNyAxMS4yNEwxMSAxMi4yVjIwSDhWMjJIMTZWMjBIMTNWMTIuM0wxMy44NSAxMS4yNkwxMi4yNyAxMC4wN0wxMS43MyAxMC4wNk05LjA4IDEwLjgyTDMgNi44MUw5LjM5IDJMMTEuNTUgOC45M0w5LjA4IDEwLjgyTTE0LjYxIDJMMjEgNi44MUwxNC45MiAxMC44MkwxMi40NCA4Ljk1TDE0LjYxIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxvb3JMYW1wVmFyaWFudCA9IFwiTTcgMkwxMCA5SDE0TDE3IDJIN00xNS45MiAyMkwxMyAxNVYyMkgxMVYxNUw4LjA4IDIySDUuOTJMMTAuOTIgMTBIMTMuMDhMMTguMDggMjJIMTUuOTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxvb3JQbGFuID0gXCJNMTAsNVYxMEg5VjVINVYxM0g5VjEySDEwVjE3SDlWMTRINVYxOUgxMlYxN0gxM1YxOUgxOVYxN0gyMVYyMUgzVjNIMjFWMTVIMTlWMTBIMTNWMTVIMTJWOUgxOVY1SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3BweSA9IFwiTTUsM0EyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1LjVMMTguNSwzSDE3VjlBMSwxIDAgMCwxIDE2LDEwSDhBMSwxIDAgMCwxIDcsOVYzSDVNMTIsNFY5SDE1VjRIMTJNNywxMkgxN0ExLDEgMCAwLDEgMTgsMTNWMTlINlYxM0ExLDEgMCAwLDEgNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGbG9wcHlWYXJpYW50ID0gXCJNMywzVjIxSDIxVjNIM00xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTIsMTVBMSwxIDAgMCwxIDEzLDE2VjE5QTEsMSAwIDAsMSAxMiwyMEExLDEgMCAwLDEgMTEsMTlWMTZBMSwxIDAgMCwxIDEyLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlciA9IFwiTTMsMTNBOSw5IDAgMCwwIDEyLDIyQzEyLDE3IDcuOTcsMTMgMywxM00xMiw1LjVBMi41LDIuNSAwIDAsMSAxNC41LDhBMi41LDIuNSAwIDAsMSAxMiwxMC41QTIuNSwyLjUgMCAwLDEgOS41LDhBMi41LDIuNSAwIDAsMSAxMiw1LjVNNS42LDEwLjI1QTIuNSwyLjUgMCAwLDAgOC4xLDEyLjc1QzguNjMsMTIuNzUgOS4xMiwxMi41OCA5LjUsMTIuMzFDOS41LDEyLjM3IDkuNSwxMi40MyA5LjUsMTIuNUEyLjUsMi41IDAgMCwwIDEyLDE1QTIuNSwyLjUgMCAwLDAgMTQuNSwxMi41QzE0LjUsMTIuNDMgMTQuNSwxMi4zNyAxNC41LDEyLjMxQzE0Ljg4LDEyLjU4IDE1LjM3LDEyLjc1IDE1LjksMTIuNzVDMTcuMjgsMTIuNzUgMTguNCwxMS42MyAxOC40LDEwLjI1QzE4LjQsOS4yNSAxNy44MSw4LjQgMTYuOTcsOEMxNy44MSw3LjYgMTguNCw2Ljc0IDE4LjQsNS43NUMxOC40LDQuMzcgMTcuMjgsMy4yNSAxNS45LDMuMjVDMTUuMzcsMy4yNSAxNC44OCwzLjQxIDE0LjUsMy42OUMxNC41LDMuNjMgMTQuNSwzLjU2IDE0LjUsMy41QTIuNSwyLjUgMCAwLDAgMTIsMUEyLjUsMi41IDAgMCwwIDkuNSwzLjVDOS41LDMuNTYgOS41LDMuNjMgOS41LDMuNjlDOS4xMiwzLjQxIDguNjMsMy4yNSA4LjEsMy4yNUEyLjUsMi41IDAgMCwwIDUuNiw1Ljc1QzUuNiw2Ljc0IDYuMTksNy42IDcuMDMsOEM2LjE5LDguNCA1LjYsOS4yNSA1LjYsMTAuMjVNMTIsMjJBOSw5IDAgMCwwIDIxLDEzQzE2LDEzIDEyLDE3IDEyLDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlck91dGxpbmUgPSBcIk04LjY2LDEzLjA3QzYuOTIsMTMuMDcgNS41LDExLjY2IDUuNSw5LjkzQzUuNSw5LjIyIDUuNzYsOC41NCA2LjE5LDhDNS43Nyw3LjQ2IDUuNSw2Ljc4IDUuNSw2LjA3QzUuNSw0LjM0IDYuOTMsMi45MyA4LjY2LDIuOTNMOS4wOSwyLjk2QzkuNTYsMS44MSAxMC42OSwxIDEyLDFDMTMuMzEsMSAxNC40NCwxLjgxIDE0LjkxLDIuOTZMMTUuMzQsMi45M0MxNy4wNywyLjkzIDE4LjUsNC4zNCAxOC41LDYuMDdDMTguNSw2Ljc4IDE4LjI0LDcuNDYgMTcuODEsOEMxOC4yMyw4LjU0IDE4LjUsOS4yMiAxOC41LDkuOTNDMTguNSwxMS42NiAxNy4wNywxMy4wNyAxNS4zNCwxMy4wN0wxNC45MSwxMy4wNEMxNC40NCwxNC4xOSAxMy4zMSwxNSAxMiwxNUMxMC42OSwxNSA5LjU2LDE0LjE5IDkuMDksMTMuMDRMOC42NiwxMy4wN00xMiwxM0MxMi42MiwxMyAxMy4xMiwxMi41IDEzLjE0LDExLjlMMTMuMDMsMTAuODFDMTIuNzEsMTAuOTMgMTIuMzYsMTEgMTIsMTFDMTEuNjQsMTEgMTEuMywxMC45MyAxMSwxMC44MUwxMC44NiwxMS45QzEwLjg4LDEyLjUgMTEuMzgsMTMgMTIsMTNNMTUuMzQsMTEuMDdDMTUuOTcsMTEuMDcgMTYuNSwxMC41NiAxNi41LDkuOTJDMTYuNSw5LjUgMTYuMjMsOS4wOCAxNS44Myw4Ljg5TDE0Ljk1LDguNDdDMTQuODMsOS4yMSAxNC40NCw5Ljg1IDEzLjg5LDEwLjNMMTQuNywxMC44N0MxNC44OCwxMSAxNS4xLDExLjA3IDE1LjM0LDExLjA3TTE0LjY5LDUuMTNMMTMuODcsNS42OUMxNC40Myw2LjE0IDE0LjgyLDYuNzggMTQuOTQsNy41TDE1LjgyLDcuMUMxNi4yMyw2LjkgMTYuNSw2LjUgMTYuNSw2LjA3QzE2LjUsNS40NCAxNS45Nyw0LjkzIDE1LjM0LDQuOTNDMTUuMTEsNC45MyAxNC44OSw1IDE0LjY5LDUuMTNNMTIsM0MxMS4zOCwzIDEwLjg4LDMuNSAxMC44Niw0LjFMMTEsNS4xOUMxMS4zLDUuMDcgMTEuNjQsNSAxMiw1QzEyLjM2LDUgMTIuNzEsNS4wNyAxMy4wMyw1LjE5TDEzLjE0LDQuMUMxMy4xMiwzLjUgMTIuNjIsMyAxMiwzTTguNjYsNC45M0M4LjAzLDQuOTMgNy41LDUuNDQgNy41LDYuMDdDNy41LDYuNSA3Ljc3LDYuOSA4LjE3LDcuMUw5LjA1LDcuNUM5LjE3LDYuNzggOS41Niw2LjE0IDEwLjExLDUuNjlMOS4zLDUuMTNDOS4xMiw1IDguOSw0LjkzIDguNjYsNC45M004LjE3LDguOUM3Ljc3LDkuMSA3LjUsOS41IDcuNSw5LjkyQzcuNSwxMC41NSA4LjAzLDExLjA2IDguNjYsMTEuMDZDOC44OSwxMS4wNiA5LjExLDExIDkuMzEsMTAuODZMMTAuMTIsMTAuMzFDOS41Niw5Ljg2IDkuMTcsOS4yMiA5LjA1LDguNUw4LjE3LDguOU0xMiwyMkE5LDkgMCAwLDEgMywxM0E5LDkgMCAwLDEgMTIsMjJBOSw5IDAgMCwxIDIxLDEzQTksOSAwIDAsMSAxMiwyMk0xNC40NCwxOS41NkMxNi4zNCwxOC44NSAxNy44NSwxNy4zNCAxOC41NiwxNS40NEMxNi42NiwxNi4xNCAxNS4xNSwxNy42NiAxNC40NCwxOS41Nk01LjQ0LDE1LjQ0QzYuMTUsMTcuMzQgNy42NiwxOC44NSA5LjU2LDE5LjU2QzguODYsMTcuNjYgNy4zNCwxNi4xNSA1LjQ0LDE1LjQ0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlclBvcHB5ID0gXCJNMTguNSwxMkEzLjUsMy41IDAgMCwwIDIyLDguNUE2LjUsNi41IDAgMCwwIDE1LjUsMkEzLjUsMy41IDAgMCwwIDEyLDUuNUEzLjUsMy41IDAgMCwwIDguNSwyQTYuNSw2LjUgMCAwLDAgMiw4LjVBMy41LDMuNSAwIDAsMCA1LjUsMTJBMy41LDMuNSAwIDAsMCAyLDE1LjVBNi41LDYuNSAwIDAsMCA4LjUsMjJBMy41LDMuNSAwIDAsMCAxMiwxOC41QTMuNSwzLjUgMCAwLDAgMTUuNSwyMkE2LjUsNi41IDAgMCwwIDIyLDE1LjVBMy41LDMuNSAwIDAsMCAxOC41LDEyTTEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4QTQsNCAwIDAsMSAxNiwxMkE0LDQgMCAwLDEgMTIsMTZNMTQuNSwxMkEyLjUsMi41IDAgMCwxIDEyLDE0LjVBMi41LDIuNSAwIDAsMSA5LjUsMTJBMi41LDIuNSAwIDAsMSAxMiw5LjVBMi41LDIuNSAwIDAsMSAxNC41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlclR1bGlwID0gXCJNMywxM0E5LDkgMCAwLDAgMTIsMjJBOSw5IDAgMCwwIDMsMTNNMTIsMjJBOSw5IDAgMCwwIDIxLDEzQTksOSAwIDAsMCAxMiwyMk0xOCwzVjhBNiw2IDAgMCwxIDEyLDE0QTYsNiAwIDAsMSA2LDhWM0M2Ljc0LDMgNy40NywzLjEyIDguMTYsMy4zOUM4LjcxLDMuNjIgOS4yLDMuOTYgOS42MSw0LjM5TDEyLDJMMTQuMzksNC4zOUMxNC44LDMuOTYgMTUuMjksMy42MiAxNS44NCwzLjM5QzE2LjUzLDMuMTIgMTcuMjYsMyAxOCwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlclR1bGlwT3V0bGluZSA9IFwiTTMsMTNBOSw5IDAgMCwwIDEyLDIyQTksOSAwIDAsMCAzLDEzTTUuNDQsMTUuNDRDNy4zNSwxNi4xNSA4Ljg1LDE3LjY1IDkuNTYsMTkuNTZDNy42NSwxOC44NSA2LjE1LDE3LjM1IDUuNDQsMTUuNDRNMTIsMjJBOSw5IDAgMCwwIDIxLDEzQTksOSAwIDAsMCAxMiwyMk0xNC40MiwxOS41N0MxNS4xMSwxNy42NCAxNi42NCwxNi4xMSAxOC41NywxNS40MkMxNy44NiwxNy4zNCAxNi4zNCwxOC44NiAxNC40MiwxOS41N00xMiwxNEE2LDYgMCAwLDAgMTgsOFYzQzE3LjI2LDMgMTYuNTMsMy4xMiAxNS44NCwzLjM5QzE1LjI5LDMuNjIgMTQuOCwzLjk2IDE0LjM5LDQuMzlMMTIsMkw5LjYxLDQuMzlDOS4yLDMuOTYgOC43MSwzLjYyIDguMTYsMy4zOUM3LjQ3LDMuMTIgNi43NCwzIDYsM1Y4QTYsNiAwIDAsMCAxMiwxNE04LDUuNjFMOS41Nyw3LjI2TDEyLDQuODNMMTQuNDMsNy4yNkwxNiw1LjYxVjhBNCw0IDAgMCwxIDEyLDEyQTQsNCAwIDAsMSA4LDhWNS42MVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2N1c0F1dG8gPSBcIk0xOSAxOUgxNVYyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWMTVIMTlNMTkgM0gxNVY1SDE5VjlIMjFWNUMyMSAzLjkgMjAuMSAzIDE5IDNNNSA1SDlWM0g1QzMuOSAzIDMgMy45IDMgNVY5SDVNNSAxNUgzVjE5QzMgMjAuMSAzLjkgMjEgNSAyMUg5VjE5SDVWMTVNOCA3QzYuOSA3IDYgNy45IDYgOVYxN0g4VjEzSDEwVjE3SDEyVjlDMTIgNy45IDExLjEgNyAxMCA3SDhNOCA5SDEwVjExSDhWOU0xMyA3VjE3SDE1VjEzSDE3VjExSDE1VjlIMThWN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2N1c0ZpZWxkID0gXCJNMTkgMTlIMTVWMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjE1SDE5TTE5IDNIMTVWNUgxOVY5SDIxVjVDMjEgMy45IDIwLjEgMyAxOSAzTTUgNUg5VjNINUMzLjkgMyAzIDMuOSAzIDVWOUg1TTUgMTVIM1YxOUMzIDIwLjEgMy45IDIxIDUgMjFIOVYxOUg1VjE1TTcgMTFIOVYxM0g3VjExTTExIDExSDEzVjEzSDExVjExTTE1IDExSDE3VjEzSDE1VjExTTcgN0g5VjlIN1Y3TTExIDdIMTNWOUgxMVY3TTE1IDdIMTdWOUgxNVY3TTcgMTVIOVYxN0g3VjE1TTExIDE1SDEzVjE3SDExVjE1TTE1IDE1SDE3VjE3SDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvY3VzRmllbGRIb3Jpem9udGFsID0gXCJNMTkgMTlIMTVWMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjE1SDE5TTE5IDNIMTVWNUgxOVY5SDIxVjVDMjEgMy45IDIwLjEgMyAxOSAzTTUgNUg5VjNINUMzLjkgMyAzIDMuOSAzIDVWOUg1TTUgMTVIM1YxOUMzIDIwLjEgMy45IDIxIDUgMjFIOVYxOUg1VjE1TTcgMTFIOVYxM0g3VjExTTExIDExSDEzVjEzSDExVjExTTE1IDExSDE3VjEzSDE1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvY3VzRmllbGRWZXJ0aWNhbCA9IFwiTTE5IDE5SDE1VjIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVYxNUgxOU0xOSAzSDE1VjVIMTlWOUgyMVY1QzIxIDMuOSAyMC4xIDMgMTkgM001IDVIOVYzSDVDMy45IDMgMyAzLjkgMyA1VjlINU01IDE1SDNWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDlWMTlINVYxNU0xMSAxMUgxM1YxM0gxMVYxMU0xMSA3SDEzVjlIMTFWN00xMSAxNUgxM1YxN0gxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXIgPSBcIk0xMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhDMjIsNi44OSAyMS4xLDYgMjAsNkgxMkwxMCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckFjY291bnQgPSBcIk0xOSwxN0gxMVYxNkMxMSwxNC42NyAxMy42NywxNCAxNSwxNEMxNi4zMywxNCAxOSwxNC42NyAxOSwxNk0xNSw5QTIsMiAwIDAsMSAxNywxMUEyLDIgMCAwLDEgMTUsMTNBMiwyIDAgMCwxIDEzLDExQzEzLDkuODkgMTMuOSw5IDE1LDlNMjAsNkgxMkwxMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhDMjIsNi44OSAyMS4xLDYgMjAsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJBY2NvdW50T3V0bGluZSA9IFwiTTE1IDE0QzE2LjMzIDE0IDE5IDE0LjY3IDE5IDE2VjE3SDExVjE2QzExIDE0LjY3IDEzLjY3IDE0IDE1IDE0TTE1IDEzQzE2LjExIDEzIDE3IDEyLjExIDE3IDExUzE2LjExIDkgMTUgOUMxMy45IDkgMTMgOS44OSAxMyAxMUMxMyAxMi4xMSAxMy45IDEzIDE1IDEzTTIyIDhWMThDMjIgMTkuMTEgMjEuMTEgMjAgMjAgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEgxMEwxMiA2SDIwQzIxLjExIDYgMjIgNi45IDIyIDhNMjAgOEg0VjE4SDIwVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyQWxlcnQgPSBcIk0xNSwxMkgxN1YxN0gxNVYxMk0xNSwxOEgxN1YyMEgxNVYxOE0yMywxNkE3LDcgMCAwLDEgMTYsMjNDMTMuNjIsMjMgMTEuNSwyMS44MSAxMC4yNSwyMEgzQzEuODksMjAgMSwxOS4xIDEsMThWNkMxLDQuODkgMS44OSw0IDMsNEg5TDExLDZIMTlBMiwyIDAgMCwxIDIxLDhWMTEuMUMyMi4yNCwxMi4zNiAyMywxNC4wOSAyMywxNk0xNiwxMUE1LDUgMCAwLDAgMTEsMTZBNSw1IDAgMCwwIDE2LDIxQTUsNSAwIDAsMCAyMSwxNkE1LDUgMCAwLDAgMTYsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyQWxlcnRPdXRsaW5lID0gXCJNMTUsMTJIMTdWMTdIMTVWMTJNMTUsMThIMTdWMjBIMTVWMThNMTYsOUMxNy4wNyw5IDE4LjA5LDkuMjQgMTksOS42N1Y4SDNWMThIOS4yOUM5LjEsMTcuMzYgOSwxNi42OSA5LDE2QTcsNyAwIDAsMSAxNiw5TTIzLDE2QTcsNyAwIDAsMSAxNiwyM0MxMy42MiwyMyAxMS41LDIxLjgxIDEwLjI1LDIwSDNDMS44OSwyMCAxLDE5LjEgMSwxOFY2QzEsNC44OSAxLjg5LDQgMyw0SDlMMTEsNkgxOUEyLDIgMCAwLDEgMjEsOFYxMS4xQzIyLjI0LDEyLjM2IDIzLDE0LjA5IDIzLDE2TTE2LDExQTUsNSAwIDAsMCAxMSwxNkE1LDUgMCAwLDAgMTYsMjFBNSw1IDAgMCwwIDIxLDE2QTUsNSAwIDAsMCAxNiwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJDbG9jayA9IFwiTTMsNEMxLjg5LDQgMSw0Ljg5IDEsNlYxOEEyLDIgMCAwLDAgMywyMEgxMC4yNkMxMS41NywyMS44OCAxMy43MSwyMyAxNiwyM0E3LDcgMCAwLDAgMjMsMTZDMjMsMTQuMTcgMjIuMjgsMTIuNDIgMjEsMTEuMTFWOEMyMSw2Ljg5IDIwLjEsNiAxOSw2SDExTDksNEgzTTE2LDExQTUsNSAwIDAsMSAyMSwxNkE1LDUgMCAwLDEgMTYsMjFBNSw1IDAgMCwxIDExLDE2QTUsNSAwIDAsMSAxNiwxMU0xNSwxMlYxN0wxOC42MSwxOS4xNkwxOS4zNiwxNy45NEwxNi41LDE2LjI1VjEySDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckNsb2NrT3V0bGluZSA9IFwiTTE1LDEySDE2LjVWMTYuMjVMMTkuMzYsMTcuOTRMMTguNjEsMTkuMTZMMTUsMTdWMTJNMTksOEgzVjE4SDkuMjlDOS4xLDE3LjM3IDksMTYuNyA5LDE2QTcsNyAwIDAsMSAxNiw5QzE3LjA3LDkgMTguMDksOS4yNCAxOSw5LjY3VjhNMywyMEMxLjg5LDIwIDEsMTkuMSAxLDE4VjZBMiwyIDAgMCwxIDMsNEg5TDExLDZIMTlBMiwyIDAgMCwxIDIxLDhWMTEuMUMyMi4yNCwxMi4zNiAyMywxNC4wOSAyMywxNkE3LDcgMCAwLDEgMTYsMjNDMTMuNjIsMjMgMTEuNSwyMS44MSAxMC4yNSwyMEgzTTE2LDExQTUsNSAwIDAsMCAxMSwxNkE1LDUgMCAwLDAgMTYsMjFBNSw1IDAgMCwwIDIxLDE2QTUsNSAwIDAsMCAxNiwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJDb2cgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMi4wOEE3IDcgMCAwIDEgMTIgMTlBNyA3IDAgMCAxIDE5IDEyQTcgNyAwIDAgMSAyMiAxMi42OVY4QzIyIDYuODkgMjEuMSA2IDIwIDZIMTJMMTAgNEg0TTE4IDE0QzE3Ljg3IDE0IDE3Ljc2IDE0LjA5IDE3Ljc0IDE0LjIxTDE3LjU1IDE1LjUzQzE3LjI1IDE1LjY2IDE2Ljk2IDE1LjgyIDE2LjcgMTZMMTUuNDYgMTUuNUMxNS4zNSAxNS41IDE1LjIyIDE1LjUgMTUuMTUgMTUuNjNMMTQuMTUgMTcuMzZDMTQuMDkgMTcuNDcgMTQuMTEgMTcuNiAxNC4yMSAxNy42OEwxNS4yNyAxOC41QzE1LjI1IDE4LjY3IDE1LjI0IDE4LjgzIDE1LjI0IDE5QzE1LjI0IDE5LjE3IDE1LjI1IDE5LjMzIDE1LjI3IDE5LjVMMTQuMjEgMjAuMzJDMTQuMTIgMjAuNCAxNC4wOSAyMC41MyAxNC4xNSAyMC42NEwxNS4xNSAyMi4zN0MxNS4yMSAyMi41IDE1LjM0IDIyLjUgMTUuNDYgMjIuNUwxNi43IDIyQzE2Ljk2IDIyLjE4IDE3LjI0IDIyLjM1IDE3LjU1IDIyLjQ3TDE3Ljc0IDIzLjc5QzE3Ljc2IDIzLjkxIDE3Ljg2IDI0IDE4IDI0SDIwQzIwLjExIDI0IDIwLjIyIDIzLjkxIDIwLjI0IDIzLjc5TDIwLjQzIDIyLjQ3QzIwLjczIDIyLjM0IDIxIDIyLjE4IDIxLjI3IDIyTDIyLjUgMjIuNUMyMi42MyAyMi41IDIyLjc2IDIyLjUgMjIuODMgMjIuMzdMMjMuODMgMjAuNjRDMjMuODkgMjAuNTMgMjMuODYgMjAuNCAyMy43NyAyMC4zMkwyMi43IDE5LjVDMjIuNzIgMTkuMzMgMjIuNzQgMTkuMTcgMjIuNzQgMTlDMjIuNzQgMTguODMgMjIuNzMgMTguNjcgMjIuNyAxOC41TDIzLjc2IDE3LjY4QzIzLjg1IDE3LjYgMjMuODggMTcuNDcgMjMuODIgMTcuMzZMMjIuODIgMTUuNjNDMjIuNzYgMTUuNSAyMi42MyAxNS41IDIyLjUgMTUuNUwyMS4yNyAxNkMyMSAxNS44MiAyMC43MyAxNS42NSAyMC40MiAxNS41M0wyMC4yMyAxNC4yMUMyMC4yMiAxNC4wOSAyMC4xMSAxNCAyMCAxNEgxOE0xOSAxNy41QzE5LjgzIDE3LjUgMjAuNSAxOC4xNyAyMC41IDE5QzIwLjUgMTkuODMgMTkuODMgMjAuNSAxOSAyMC41QzE4LjE2IDIwLjUgMTcuNSAxOS44MyAxNy41IDE5QzE3LjUgMTguMTcgMTguMTcgMTcuNSAxOSAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckNvZ091dGxpbmUgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMlYxOEg0VjhIMjBWMTJIMjJWOEMyMiA2Ljg5IDIxLjEgNiAyMCA2SDEyTDEwIDRNMTggMTRDMTcuODcgMTQgMTcuNzYgMTQuMDkgMTcuNzQgMTQuMjFMMTcuNTUgMTUuNTNDMTcuMjUgMTUuNjYgMTYuOTYgMTUuODIgMTYuNyAxNkwxNS40NiAxNS41QzE1LjM1IDE1LjUgMTUuMjIgMTUuNSAxNS4xNSAxNS42M0wxNC4xNSAxNy4zNkMxNC4wOSAxNy40NyAxNC4xMSAxNy42IDE0LjIxIDE3LjY4TDE1LjI3IDE4LjVDMTUuMjUgMTguNjcgMTUuMjQgMTguODMgMTUuMjQgMTlDMTUuMjQgMTkuMTcgMTUuMjUgMTkuMzMgMTUuMjcgMTkuNUwxNC4yMSAyMC4zMkMxNC4xMiAyMC40IDE0LjA5IDIwLjUzIDE0LjE1IDIwLjY0TDE1LjE1IDIyLjM3QzE1LjIxIDIyLjUgMTUuMzQgMjIuNSAxNS40NiAyMi41TDE2LjcgMjJDMTYuOTYgMjIuMTggMTcuMjQgMjIuMzUgMTcuNTUgMjIuNDdMMTcuNzQgMjMuNzlDMTcuNzYgMjMuOTEgMTcuODYgMjQgMTggMjRIMjBDMjAuMTEgMjQgMjAuMjIgMjMuOTEgMjAuMjQgMjMuNzlMMjAuNDMgMjIuNDdDMjAuNzMgMjIuMzQgMjEgMjIuMTggMjEuMjcgMjJMMjIuNSAyMi41QzIyLjYzIDIyLjUgMjIuNzYgMjIuNSAyMi44MyAyMi4zN0wyMy44MyAyMC42NEMyMy44OSAyMC41MyAyMy44NiAyMC40IDIzLjc3IDIwLjMyTDIyLjcgMTkuNUMyMi43MiAxOS4zMyAyMi43NCAxOS4xNyAyMi43NCAxOUMyMi43NCAxOC44MyAyMi43MyAxOC42NyAyMi43IDE4LjVMMjMuNzYgMTcuNjhDMjMuODUgMTcuNiAyMy44OCAxNy40NyAyMy44MiAxNy4zNkwyMi44MiAxNS42M0MyMi43NiAxNS41IDIyLjYzIDE1LjUgMjIuNSAxNS41TDIxLjI3IDE2QzIxIDE1LjgyIDIwLjczIDE1LjY1IDIwLjQyIDE1LjUzTDIwLjIzIDE0LjIxQzIwLjIyIDE0LjA5IDIwLjExIDE0IDIwIDE0TTE5IDE3LjVDMTkuODMgMTcuNSAyMC41IDE4LjE3IDIwLjUgMTlDMjAuNSAxOS44MyAxOS44MyAyMC41IDE5IDIwLjVDMTguMTYgMjAuNSAxNy41IDE5LjgzIDE3LjUgMTlDMTcuNSAxOC4xNyAxOC4xNyAxNy41IDE5IDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyRG93bmxvYWQgPSBcIk0yMCw2QTIsMiAwIDAsMSAyMiw4VjE4QTIsMiAwIDAsMSAyMCwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDIwTTE5LjI1LDEzSDE2VjlIMTRWMTNIMTAuNzVMMTUsMTcuMjVcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJEb3dubG9hZE91dGxpbmUgPSBcIk0yMCAxOEg0VjhIMjBNMjAgNkgxMkwxMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgyMEEyIDIgMCAwIDAgMjIgMThWOEEyIDIgMCAwIDAgMjAgNk0xNCA5SDE2VjEzSDE5TDE1IDE3TDExIDEzSDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckVkaXQgPSBcIk0zLDRDMS44OSw0IDEsNC44OSAxLDZWMThBMiwyIDAgMCwwIDMsMjBIMTFWMTguMTFMMjEsOC4xMVY4QzIxLDYuODkgMjAuMSw2IDE5LDZIMTFMOSw0SDNNMjEuMDQsMTEuMTNDMjAuOSwxMS4xMyAyMC43NiwxMS4xOSAyMC42NSwxMS4zTDE5LjY1LDEyLjNMMjEuNywxNC4zNUwyMi43LDEzLjM1QzIyLjkyLDEzLjE0IDIyLjkyLDEyLjc5IDIyLjcsMTIuNThMMjEuNDIsMTEuM0MyMS4zMSwxMS4xOSAyMS4xOCwxMS4xMyAyMS4wNCwxMS4xM00xOS4wNywxMi44OEwxMywxOC45NFYyMUgxNS4wNkwyMS4xMiwxNC45M0wxOS4wNywxMi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJFZGl0T3V0bGluZSA9IFwiTTIxLDExLjExQzIwLjkyLDExLjExIDIwLjcyLDExLjIxIDIwLjYyLDExLjMxTDE5LjYyLDEyLjMxTDIxLjcyLDE0LjQyTDIyLjcyLDEzLjQxQzIyLjkyLDEzLjIxIDIyLjkyLDEyLjgxIDIyLjcyLDEyLjYxTDIxLjQyLDExLjMxQzIxLjMyLDExLjIxIDIxLjIyLDExLjExIDIxLDExLjExTTE5LjEyLDEyLjkxTDEzLDE4LjkyVjIxSDE1LjEyTDIxLjIyLDE0LjkyTDE5LjEyLDEyLjkxTTIxLDhWOC4xMUwxOSwxMC4xMVY4SDNWMThIMTFWMjBIM0EyLDIgMCAwLDEgMSwxOFY2QzEsNC45MSAxLjksNCAzLDRIOUwxMSw2SDE5QzIwLjEyLDYgMjEsNi45MSAyMSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckdvb2dsZURyaXZlID0gXCJNMTMuNzUsOUgxNi4xNEwxOSwxNEgxNi4wNUwxMy41LDkuNDZNMTguMywxN0gxMi43NUwxNC4xNSwxNC41SDE5LjI3TDE5LjUzLDE0Ljk2TTExLjUsMTdMMTAuNCwxNC44NkwxMy4yNCw5LjlMMTQuNzQsMTIuNTZMMTIuMjUsMTdNMjAsNkgxMkwxMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhDMjIsNi44OSAyMS4xLDYgMjAsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJIZWFydCA9IFwiTTIwIDZIMTJMMTAgNEg0QzIuODkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMSAyLjg5IDIwIDQgMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjhDMjIgNi45IDIxLjEgNiAyMCA2TTE4LjQyIDEzLjVMMTUgMTdMMTEuNTkgMTMuNUMxMS4yMiAxMy4xMiAxMSAxMi42MiAxMSAxMi4wNUMxMSAxMC45MiAxMS45IDEwIDEzIDEwQzEzLjU0IDEwIDE0LjA1IDEwLjIzIDE0LjQyIDEwLjYxTDE1IDExLjJMMTUuNTkgMTAuNkMxNS45NSAxMC4yMyAxNi40NiAxMCAxNyAxMEMxOC4xIDEwIDE5IDEwLjkyIDE5IDEyLjA1QzE5IDEyLjYxIDE4Ljc4IDEzLjEzIDE4LjQyIDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVySGVhcnRPdXRsaW5lID0gXCJNMjAgMThINFY4SDIwTTIwIDZIMTJMMTAgNEg0QzIuODkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWOEMyMiA2Ljg5IDIxLjEgNiAyMCA2TTEzIDEwQzExLjkgMTAgMTEgMTAuOTIgMTEgMTIuMDVDMTEgMTIuNjIgMTEuMjIgMTMuMTIgMTEuNTkgMTMuNUwxNSAxN0wxOC40MiAxMy41QzE4Ljc4IDEzLjEzIDE5IDEyLjYxIDE5IDEyLjA1QzE5IDEwLjkyIDE4LjEgMTAgMTcgMTBDMTYuNDYgMTAgMTUuOTUgMTAuMjMgMTUuNTkgMTAuNkwxNSAxMS4yTDE0LjQyIDEwLjYxQzE0LjA1IDEwLjIzIDEzLjU0IDEwIDEzIDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckhvbWUgPSBcIk0yMCA2SDEyTDEwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY4QTIgMiAwIDAgMCAyMCA2TTE3IDEzVjE3SDE1VjE0SDEzVjE3SDExVjEzSDlMMTQgOUwxOSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJIb21lT3V0bGluZSA9IFwiTTIwIDZIMTJMMTAgNEg0QTIgMiAwIDAgMCAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjhBMiAyIDAgMCAwIDIwIDZNMjAgMThINFY4SDIwTTEzIDE3VjE0SDE1VjE3SDE3VjEzSDE5TDE0IDlMOSAxM0gxMVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJJbWFnZSA9IFwiTTUsMTdMOS41LDExTDEzLDE1LjVMMTUuNSwxMi41TDE5LDE3TTIwLDZIMTJMMTAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhBMiwyIDAgMCwwIDIwLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVySW5mb3JtYXRpb24gPSBcIk0yMSAxMS4xVjhDMjEgNi45IDIwLjEgNiAxOSA2SDExTDkgNEgzQzEuOSA0IDEgNC45IDEgNlYxOEMxIDE5LjEgMS45IDIwIDMgMjBIMTAuM0MxMS42IDIxLjkgMTMuOCAyMyAxNiAyM0MxOS45IDIzIDIzIDE5LjkgMjMgMTZDMjMgMTQuMiAyMi4zIDEyLjQgMjEgMTEuMU0xNiAyMUMxMy4yIDIxIDExIDE4LjggMTEgMTZTMTMuMiAxMSAxNiAxMSAyMSAxMy4yIDIxIDE2IDE4LjggMjEgMTYgMjFNMTcgMjBIMTVWMTVIMTdWMjBNMTcgMTRIMTVWMTJIMTdWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVySW5mb3JtYXRpb25PdXRsaW5lID0gXCJNMjEgMTEuMVY4QzIxIDYuOSAyMC4xIDYgMTkgNkgxMUw5IDRIM0MxLjkgNCAxIDQuOSAxIDZWMThDMSAxOS4xIDEuOSAyMCAzIDIwSDEwLjJDMTEuNCAyMS44IDEzLjYgMjMgMTYgMjNDMTkuOSAyMyAyMyAxOS45IDIzIDE2QzIzIDE0LjEgMjIuMiAxMi40IDIxIDExLjFNOS4zIDE4SDNWOEgxOVY5LjdDMTguMSA5LjIgMTcuMSA5IDE2IDlDMTIuMSA5IDkgMTIuMSA5IDE2QzkgMTYuNyA5LjEgMTcuNCA5LjMgMThNMTYgMjFDMTMuMiAyMSAxMSAxOC44IDExIDE2UzEzLjIgMTEgMTYgMTEgMjEgMTMuMiAyMSAxNiAxOC44IDIxIDE2IDIxTTE3IDE0SDE1VjEySDE3VjE0TTE3IDIwSDE1VjE1SDE3VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlcktleSA9IFwiTTQsNEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY4QTIsMiAwIDAsMCAyMCw2SDEyTDEwLDRNMTEsMTBDMTIuMzEsMTAgMTMuNDIsMTAuODQgMTMuODMsMTJIMTlWMTRIMThWMTZIMTZWMTRIMTMuODNDMTMuNDIsMTUuMTcgMTIuMzEsMTYgMTEsMTZBMywzIDAgMCwxIDgsMTNBMywzIDAgMCwxIDExLDEwTTExLDEyQTEsMSAwIDAsMCAxMCwxM0MxMCwxMy41NiAxMC40NSwxNCAxMSwxNEExLDEgMCAwLDAgMTIsMTNBMSwxIDAgMCwwIDExLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlcktleU5ldHdvcmsgPSBcIk02LDVDNC44OSw1IDQsNS44OSA0LDdWMTVBMiwyIDAgMCwwIDYsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE4QTIsMiAwIDAsMCAyMCwxNVY5QTIsMiAwIDAsMCAxOCw3SDEyTDEwLDVINk05LDlDMTAuMzEsOSAxMS40Miw5LjgzIDExLjgzLDExSDE3VjEzSDE2VjE1SDE0VjEzSDExLjgzQzExLjQyLDE0LjE3IDEwLjMxLDE1IDksMTVBMywzIDAgMCwxIDYsMTJBMywzIDAgMCwxIDksOU05LDExQTEsMSAwIDAsMCA4LDEyQzgsMTIuNTYgOC40NSwxMyA5LDEzQTEsMSAwIDAsMCAxMCwxMkExLDEgMCAwLDAgOSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJLZXlOZXR3b3JrT3V0bGluZSA9IFwiTTkgOEM3LjM0IDggNiA5LjM0IDYgMTFTNy4zNCAxNCA5IDE0QzEwLjMxIDE0IDExLjQyIDEzLjE3IDExLjgzIDEySDE0VjE0SDE2VjEySDE3VjEwSDExLjgzQzExLjQyIDguODMgMTAuMzEgOCA5IDhNOSAxMkM4LjQ1IDEyIDggMTEuNTUgOCAxMVM4LjQ1IDEwIDkgMTAgMTAgMTAuNDUgMTAgMTEgOS41NSAxMiA5IDEyTTE1IDIwQzE1IDE5LjQ1IDE0LjU1IDE5IDE0IDE5SDEzVjE3SDE5QzIwLjExIDE3IDIxIDE2LjExIDIxIDE1VjdDMjEgNS45IDIwLjExIDUgMTkgNUgxM0wxMSAzSDVDMy45IDMgMyAzLjkgMyA1VjE1QzMgMTYuMTEgMy45IDE3IDUgMTdIMTFWMTlIMTBDOS40NSAxOSA5IDE5LjQ1IDkgMjBIMlYyMkg5QzkgMjIuNTUgOS40NSAyMyAxMCAyM0gxNEMxNC41NSAyMyAxNSAyMi41NSAxNSAyMkgyMlYyMEgxNU01IDE1VjdIMTlWMTVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJLZXlPdXRsaW5lID0gXCJNMjAgMThINFY4SDIwTTIwIDZIMTJMMTAgNEg0QzIuODkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWOEMyMiA2Ljg5IDIxLjEgNiAyMCA2TTEzLjgzIDEyQzEzLjQyIDEwLjg0IDEyLjMxIDEwIDExIDEwQzkuMzQgMTAgOCAxMS4zNCA4IDEzUzkuMzQgMTYgMTEgMTZDMTIuMzEgMTYgMTMuNDIgMTUuMTcgMTMuODMgMTRIMTZWMTZIMThWMTRIMTlWMTJIMTMuODNNMTEgMTRDMTAuNDUgMTQgMTAgMTMuNTYgMTAgMTNDMTAgMTIuNDUgMTAuNDUgMTIgMTEgMTJTMTIgMTIuNDUgMTIgMTMgMTEuNTUgMTQgMTEgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTG9jayA9IFwiTTIwLDZBMiwyIDAgMCwxIDIyLDhWMThBMiwyIDAgMCwxIDIwLDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNC44OSAyLjg5LDQgNCw0SDEwTDEyLDZIMjBNMTksMTdWMTNIMThWMTJBMywzIDAgMCwwIDE1LDlBMywzIDAgMCwwIDEyLDEyVjEzSDExVjE3SDE5TTE1LDExQTEsMSAwIDAsMSAxNiwxMlYxM0gxNFYxMkExLDEgMCAwLDEgMTUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTG9ja09wZW4gPSBcIk0yMCw2QTIsMiAwIDAsMSAyMiw4VjE4QTIsMiAwIDAsMSAyMCwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDIwTTE5LDE3VjEzSDE4TDE2LDEzSDE0VjExQTEsMSAwIDAsMSAxNSwxMEExLDEgMCAwLDEgMTYsMTFIMThBMywzIDAgMCwwIDE1LDhBMywzIDAgMCwwIDEyLDExVjEzSDExVjE3SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck1hcmtlciA9IFwiTTEwIDRMMTIgNkgyMEMyMS4xIDYgMjIgNi44OSAyMiA4VjExLjM0QzIxLjA0IDEwLjUgMTkuODIgMTAgMTguNSAxMEMxNS41IDEwIDEzIDEyLjY1IDEzIDE1LjVDMTMgMTYuOTcgMTMuNjUgMTguNTUgMTQuNSAyMEg0QzIuODkgMjAgMiAxOS4xIDIgMThMMiA2QzIgNC44OSAyLjg5IDQgNCA0SDEwTTE4LjUgMTJDMjAuNCAxMiAyMiAxMy42IDIyIDE1LjVDMjIgMTguMSAxOC41IDIyIDE4LjUgMjJDMTguNSAyMiAxNSAxOC4xIDE1IDE1LjVDMTUgMTMuNiAxNi42IDEyIDE4LjUgMTJNMTguNSAxNi44QzE5LjIgMTYuOCAxOS44IDE2LjIgMTkuNyAxNS42QzE5LjcgMTUgMTkuMSAxNC40IDE4LjUgMTQuNEMxNy45IDE0LjQgMTcuMyAxNC45IDE3LjMgMTUuNkMxNy4zIDE2LjIgMTcuOCAxNi44IDE4LjUgMTYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNYXJrZXJPdXRsaW5lID0gXCJNMTguNSAxMkMyMC40IDEyIDIyIDEzLjYgMjIgMTUuNUMyMiAxOC4xIDE4LjUgMjIgMTguNSAyMkMxOC41IDIyIDE1IDE4LjEgMTUgMTUuNUMxNSAxMy42IDE2LjYgMTIgMTguNSAxMk0xOC41IDE2LjhDMTkuMiAxNi44IDE5LjggMTYuMiAxOS43IDE1LjZDMTkuNyAxNSAxOS4xIDE0LjQgMTguNSAxNC40QzE3LjkgMTQuNCAxNy4zIDE0LjkgMTcuMyAxNS42QzE3LjMgMTYuMiAxNy44IDE2LjggMTguNSAxNi44TTIwIDhINFYxOEgxMy41QzEzLjc5IDE4LjY4IDE0LjEzIDE5LjM1IDE0LjUgMjBINEMyLjg5IDIwIDIgMTkuMSAyIDE4TDIgNkMyIDQuODkgMi44OSA0IDQgNEgxMEwxMiA2SDIwQzIxLjEgNiAyMiA2Ljg5IDIyIDhWMTEuMzRDMjEuNDIgMTAuODQgMjAuNzQgMTAuNDUgMjAgMTAuMjNWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNb3ZlID0gXCJNMTQsMThWMTVIMTBWMTFIMTRWOEwxOSwxM00yMCw2SDEyTDEwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWOEMyMiw2Ljg5IDIxLjEsNiAyMCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck1vdmVPdXRsaW5lID0gXCJNMjAgMThINFY4SDIwVjE4TTEyIDZMMTAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgyMEMyMS4xMSAyMCAyMiAxOS4xMSAyMiAxOFY4QzIyIDYuOSAyMS4xMSA2IDIwIDZIMTJNMTEgMTRWMTJIMTVWOUwxOSAxM0wxNSAxN1YxNEgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNdWx0aXBsZSA9IFwiTTIyLDRIMTRMMTIsMkg2QTIsMiAwIDAsMCA0LDRWMTZBMiwyIDAgMCwwIDYsMThIMjJBMiwyIDAgMCwwIDI0LDE2VjZBMiwyIDAgMCwwIDIyLDRNMiw2SDBWMTFIMFYyMEEyLDIgMCAwLDAgMiwyMkgyMFYyMEgyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTXVsdGlwbGVJbWFnZSA9IFwiTTcsMTVMMTEuNSw5TDE1LDEzLjVMMTcuNSwxMC41TDIxLDE1TTIyLDRIMTRMMTIsMkg2QTIsMiAwIDAsMCA0LDRWMTZBMiwyIDAgMCwwIDYsMThIMjJBMiwyIDAgMCwwIDI0LDE2VjZBMiwyIDAgMCwwIDIyLDRNMiw2SDBWMTFIMFYyMEEyLDIgMCAwLDAgMiwyMkgyMFYyMEgyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTXVsdGlwbGVPdXRsaW5lID0gXCJNMjIsNEEyLDIgMCAwLDEgMjQsNlYxNkEyLDIgMCAwLDEgMjIsMThINkEyLDIgMCAwLDEgNCwxNlY0QTIsMiAwIDAsMSA2LDJIMTJMMTQsNEgyMk0yLDZWMjBIMjBWMjJIMkEyLDIgMCAwLDEgMCwyMFYxMUgwVjZIMk02LDZWMTZIMjJWNkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck11bHRpcGxlUGx1cyA9IFwiTTIgMjBWNkgwVjIwQzAgMjEuMSAuOSAyMiAyIDIySDIwVjIwSDJNMjIgNEgxNEwxMiAySDZDNS42IDIgNS4yIDIuMSA0LjkgMi4zTDQuMyAyLjlDNC4xIDMuMiA0IDMuNiA0IDRWMTZDNCAxNi40IDQuMSAxNi44IDQuMyAxNy4xQzQuNCAxNy4yIDQuNSAxNy4zIDQuNSAxNy40QzUgMTcuOCA1LjUgMTggNiAxOEgyMkMyMy4xIDE4IDI0IDE3LjEgMjQgMTZWNkMyNCA0LjkgMjMuMSA0IDIyIDRNMjIgMTJIMTlWMTVIMTdWMTJIMTRWMTBIMTdWN0gxOVYxMEgyMlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNdWx0aXBsZVBsdXNPdXRsaW5lID0gXCJNMjIgNEMyMy4xIDQgMjQgNC45IDI0IDZWMTZDMjQgMTcuMSAyMy4xIDE4IDIyIDE4SDZDNC45IDE4IDQgMTcuMSA0IDE2VjRDNCAyLjkgNC45IDIgNiAySDEyTDE0IDRIMjJNMiA2VjIwSDIwVjIySDJDLjkgMjIgMCAyMS4xIDAgMjBWNkgyTTYgNlYxNkgyMlY2SDZNMTQgMTBIMTZWOEgxOFYxMEgyMFYxMkgxOFYxNEgxNlYxMkgxNFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNdXNpYyA9IFwiTTEwIDRMMTIgNkgyMEMyMS4xIDYgMjIgNi44OSAyMiA4VjE4QzIyIDE5LjEgMjEuMSAyMCAyMCAyMEg0QzIuODkgMjAgMiAxOS4xIDIgMThMMiA2QzIgNC44OSAyLjg5IDQgNCA0SDEwTTE5IDlIMTUuNVYxMy4wNkwxNSAxM0MxMy45IDEzIDEzIDEzLjkgMTMgMTVDMTMgMTYuMTEgMTMuOSAxNyAxNSAxN0MxNi4xMSAxNyAxNyAxNi4xMSAxNyAxNVYxMUgxOVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck11c2ljT3V0bGluZSA9IFwiTTIwIDE4VjhINFYxOEgyME0yMCA2QzIxLjEgNiAyMiA2Ljg5IDIyIDhWMThDMjIgMTkuMSAyMS4xIDIwIDIwIDIwSDRDMi44OSAyMCAyIDE5LjEgMiAxOEwyIDZDMiA0Ljg5IDIuODkgNCA0IDRIMTBMMTIgNkgyME0xOCA5VjExSDE2VjE1QzE2IDE2LjExIDE1LjExIDE3IDE0IDE3QzEyLjkgMTcgMTIgMTYuMTEgMTIgMTVDMTIgMTMuOSAxMi45IDEzIDE0IDEzQzE0LjE3IDEzIDE0LjM0IDEzIDE0LjUgMTMuMDZWOUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJOZXR3b3JrID0gXCJNMywxNVY1QTIsMiAwIDAsMSA1LDNIMTFMMTMsNUgxOUEyLDIgMCAwLDEgMjEsN1YxNUEyLDIgMCAwLDEgMTksMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDVBMiwyIDAgMCwxIDMsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTmV0d29ya091dGxpbmUgPSBcIk0xNSAyMEMxNSAxOS40NSAxNC41NSAxOSAxNCAxOUgxM1YxN0gxOUMyMC4xMSAxNyAyMSAxNi4xMSAyMSAxNVY3QzIxIDUuOSAyMC4xMSA1IDE5IDVIMTNMMTEgM0g1QzMuOSAzIDMgMy45IDMgNVYxNUMzIDE2LjExIDMuOSAxNyA1IDE3SDExVjE5SDEwQzkuNDUgMTkgOSAxOS40NSA5IDIwSDJWMjJIOUM5IDIyLjU1IDkuNDUgMjMgMTAgMjNIMTRDMTQuNTUgMjMgMTUgMjIuNTUgMTUgMjJIMjJWMjBIMTVNNSAxNVY3SDE5VjE1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyT3BlbiA9IFwiTTE5LDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNC44OSAyLjg5LDQgNCw0SDEwTDEyLDZIMTlBMiwyIDAgMCwxIDIxLDhIMjFMNCw4VjE4TDYuMTQsMTBIMjMuMjFMMjAuOTMsMTguNUMyMC43LDE5LjM3IDE5LjkyLDIwIDE5LDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck9wZW5PdXRsaW5lID0gXCJNNi4xLDEwTDQsMThWOEgyMUEyLDIgMCAwLDAgMTksNkgxMkwxMCw0SDRBMiwyIDAgMCwwIDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgxOUMxOS45LDIwIDIwLjcsMTkuNCAyMC45LDE4LjVMMjMuMiwxMEg2LjFNMTksMThINkw3LjYsMTJIMjAuNkwxOSwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJPdXRsaW5lID0gXCJNMjAsMThINFY4SDIwTTIwLDZIMTJMMTAsNEg0QzIuODksNCAyLDQuODkgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY4QzIyLDYuODkgMjEuMSw2IDIwLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyUGx1cyA9IFwiTTEwLDRMMTIsNkgyMEEyLDIgMCAwLDEgMjIsOFYxOEEyLDIgMCAwLDEgMjAsMjBINEMyLjg5LDIwIDIsMTkuMSAyLDE4VjZDMiw0Ljg5IDIuODksNCA0LDRIMTBNMTUsOVYxMkgxMlYxNEgxNVYxN0gxN1YxNEgyMFYxMkgxN1Y5SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclBsdXNPdXRsaW5lID0gXCJNMTIgMTJIMTRWMTBIMTZWMTJIMThWMTRIMTZWMTZIMTRWMTRIMTJWMTJNMjIgOFYxOEMyMiAxOS4xMSAyMS4xMSAyMCAyMCAyMEg0QzIuODkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuODkgNCA0IDRIMTBMMTIgNkgyMEMyMS4xMSA2IDIyIDYuODkgMjIgOE0yMCA4SDRWMThIMjBWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJQb3VuZCA9IFwiTTE1LjI1LDEzSDE3LjI1TDE2Ljc1LDE1SDE0Ljc1TDE1LjI1LDEzTTIyLDhWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDIwQTIsMiAwIDAsMSAyMiw4TTIwLDEySDE4LjVMMTksMTBIMThMMTcuNSwxMkgxNS41TDE2LDEwSDE1TDE0LjUsMTJIMTNWMTNIMTQuMjVMMTMuNzUsMTVIMTJWMTZIMTMuNUwxMywxOEgxNEwxNC41LDE2SDE2LjVMMTYsMThIMTdMMTcuNSwxNkgxOVYxNUgxNy43NUwxOC4yNSwxM0gyMFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJQb3VuZE91dGxpbmUgPSBcIk0yMCwxOEg0VjhIMjBNMjAsNkgxMkwxMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhDMjIsNi44OSAyMS4xLDYgMjAsNk0xOSwxMlYxMUgxNy41TDE4LDlIMTdMMTYuNSwxMUgxNC41TDE1LDlIMTRMMTMuNSwxMUgxMlYxMkgxMy4yNUwxMi43NSwxNEgxMVYxNUgxMi41TDEyLDE3SDEzTDEzLjUsMTVIMTUuNUwxNSwxN0gxNkwxNi41LDE1SDE4VjE0SDE2Ljc1TDE3LjI1LDEySDE5TTE1Ljc1LDE0SDEzLjc1TDE0LjI1LDEySDE2LjI1TDE1Ljc1LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclJlZnJlc2ggPSBcIk0xOCAxNC41QzE5LjExIDE0LjUgMjAuMTEgMTQuOTUgMjAuODMgMTUuNjdMMjIgMTQuNVYxOC41SDE4TDE5Ljc3IDE2LjczQzE5LjMyIDE2LjI4IDE4LjY5IDE2IDE4IDE2QzE2LjYyIDE2IDE1LjUgMTcuMTIgMTUuNSAxOC41QzE1LjUgMTkuODggMTYuNjIgMjEgMTggMjFDMTguODIgMjEgMTkuNTQgMjAuNjEgMjAgMjBIMjEuNzFDMjEuMTIgMjEuNDcgMTkuNjggMjIuNSAxOCAyMi41QzE1Ljc5IDIyLjUgMTQgMjAuNzEgMTQgMTguNUMxNCAxNi4yOSAxNS43OSAxNC41IDE4IDE0LjVNMTAgNEwxMiA2SDIwQzIxLjEgNiAyMiA2Ljg5IDIyIDhWMTNDMjEgMTIuMzggMTkuNzkgMTIgMTguNSAxMkMxNC45MSAxMiAxMiAxNC45MSAxMiAxOC41QzEyIDE5IDEyLjA2IDE5LjUgMTIuMTcgMjBINEMyLjg5IDIwIDIgMTkuMSAyIDE4TDIgNkMyIDQuODkgMi44OSA0IDQgNEgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJSZWZyZXNoT3V0bGluZSA9IFwiTTE4IDE0LjVDMTkuMTEgMTQuNSAyMC4xMSAxNC45NSAyMC44MyAxNS42N0wyMiAxNC41VjE4LjVIMThMMTkuNzcgMTYuNzNDMTkuMzIgMTYuMjggMTguNjkgMTYgMTggMTZDMTYuNjIgMTYgMTUuNSAxNy4xMiAxNS41IDE4LjVDMTUuNSAxOS44OCAxNi42MiAyMSAxOCAyMUMxOC44MiAyMSAxOS41NCAyMC42MSAyMCAyMEgyMS43MUMyMS4xMiAyMS40NyAxOS42OCAyMi41IDE4IDIyLjVDMTUuNzkgMjIuNSAxNCAyMC43MSAxNCAxOC41QzE0IDE2LjI5IDE1Ljc5IDE0LjUgMTggMTQuNU0yMCA4SDRWMThIMTJMMTIgMTguNUMxMiAxOSAxMi4wNiAxOS41IDEyLjE3IDIwSDRDMi44OSAyMCAyIDE5LjEgMiAxOEwyIDZDMiA0Ljg5IDIuODkgNCA0IDRIMTBMMTIgNkgyMEMyMS4xIDYgMjIgNi44OSAyMiA4VjEzQzIxLjM5IDEyLjYzIDIwLjcyIDEyLjM0IDIwIDEyLjE3VjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyUmVtb3ZlID0gXCJNMTAsNEwxMiw2SDIwQTIsMiAwIDAsMSAyMiw4VjE4QTIsMiAwIDAsMSAyMCwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxME0xMi40NiwxMC44OEwxNC41OSwxM0wxMi40NiwxNS4xMkwxMy44OCwxNi41NEwxNiwxNC40MUwxOC4xMiwxNi41NEwxOS41NCwxNS4xMkwxNy40MSwxM0wxOS41NCwxMC44OEwxOC4xMiw5LjQ2TDE2LDExLjU5TDEzLjg4LDkuNDZMMTIuNDYsMTAuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyUmVtb3ZlT3V0bGluZSA9IFwiTTExLjQ2IDEwLjg4TDEyLjg4IDkuNDZMMTUgMTEuNTlMMTcuMTIgOS40NkwxOC41NCAxMC44OEwxNi40MSAxM0wxOC41NCAxNS4xMkwxNy4xMiAxNi41NEwxNSAxNC40MUwxMi44OCAxNi41NEwxMS40NiAxNS4xMkwxMy41OSAxM0wxMS40NiAxMC44OE0yMiA4VjE4QzIyIDE5LjExIDIxLjExIDIwIDIwIDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRIMTBMMTIgNkgyMEMyMS4xMSA2IDIyIDYuOSAyMiA4TTIwIDhINFYxOEgyMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclNlYXJjaCA9IFwiTTE2LjUsMTJDMTksMTIgMjEsMTQgMjEsMTYuNUMyMSwxNy4zOCAyMC43NSwxOC4yMSAyMC4zMSwxOC45TDIzLjM5LDIyTDIyLDIzLjM5TDE4Ljg4LDIwLjMyQzE4LjE5LDIwLjc1IDE3LjM3LDIxIDE2LjUsMjFDMTQsMjEgMTIsMTkgMTIsMTYuNUMxMiwxNCAxNCwxMiAxNi41LDEyTTE2LjUsMTRBMi41LDIuNSAwIDAsMCAxNCwxNi41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOUEyLjUsMi41IDAgMCwwIDE5LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE0TTksNEwxMSw2SDE5QTIsMiAwIDAsMSAyMSw4VjExLjgxQzE5LjgzLDEwLjY5IDE4LjI1LDEwIDE2LjUsMTBBNi41LDYuNSAwIDAsMCAxMCwxNi41QzEwLDE3Ljc5IDEwLjM3LDE5IDExLDIwSDNDMS44OSwyMCAxLDE5LjEgMSwxOFY2QzEsNC44OSAxLjg5LDQgMyw0SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyU2VhcmNoT3V0bGluZSA9IFwiTTE2LjUsMTJDMTksMTIgMjEsMTQgMjEsMTYuNUMyMSwxNy4zOCAyMC43NSwxOC4yMSAyMC4zMSwxOC45TDIzLjM5LDIyTDIyLDIzLjM5TDE4Ljg4LDIwLjMyQzE4LjE5LDIwLjc1IDE3LjM3LDIxIDE2LjUsMjFDMTQsMjEgMTIsMTkgMTIsMTYuNUMxMiwxNCAxNCwxMiAxNi41LDEyTTE2LjUsMTRBMi41LDIuNSAwIDAsMCAxNCwxNi41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOUEyLjUsMi41IDAgMCwwIDE5LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE0TTE5LDhIM1YxOEgxMC4xN0MxMC4zNCwxOC43MiAxMC42MywxOS4zOSAxMSwyMEgzQzEuODksMjAgMSwxOS4xIDEsMThWNkMxLDQuODkgMS44OSw0IDMsNEg5TDExLDZIMTlBMiwyIDAgMCwxIDIxLDhWMTEuODFDMjAuNDIsMTEuMjYgMTkuNzUsMTAuODEgMTksMTAuNVY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclNldHRpbmdzID0gXCJNNCA0QzIuODkgNCAyIDQuODkgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY4QzIyIDYuODkgMjEuMSA2IDIwIDZIMTJMMTAgNEg0TTcgMjJWMjRIOVYyMkg3TTExIDIyVjI0SDEzVjIySDExTTE1IDIyVjI0SDE3VjIySDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclNldHRpbmdzT3V0bGluZSA9IFwiTTQgNEMyLjg5IDQgMiA0Ljg5IDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgyMEEyIDIgMCAwIDAgMjIgMThWOEMyMiA2Ljg5IDIxLjEgNiAyMCA2SDEyTDEwIDRINE00IDhIMjBWMThINFY4TTcgMjJWMjRIOVYyMkg3TTExIDIyVjI0SDEzVjIySDExTTE1IDIyVjI0SDE3VjIySDE1XCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyU3RhciA9IFwiTTIwLDZIMTJMMTAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhBMiwyIDAgMCwwIDIwLDZNMTcuOTQsMTdMMTUsMTUuMjhMMTIuMDYsMTdMMTIuODQsMTMuNjdMMTAuMjUsMTEuNDNMMTMuNjYsMTEuMTRMMTUsOEwxNi4zNCwxMS4xNEwxOS43NSwxMS40M0wxNy4xNiwxMy42N0wxNy45NCwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTdGFyTXVsdGlwbGUgPSBcIk0yIDZIMFYyMEMwIDIxLjExIC44OTUgMjIgMiAyMkgyMFYyMEgyVjZNMjIgNEgxNEwxMiAySDZDNC44OSAyIDQgMi44OSA0IDRWMTZDNCAxNy4xIDQuODkgMTggNiAxOEgyMkMyMy4xMSAxOCAyNCAxNy4xIDI0IDE2VjZDMjQgNC44OSAyMy4xMSA0IDIyIDRNMTkuOTQgMTVMMTcgMTMuMjdMMTQuMDYgMTVMMTQuODQgMTEuNjZMMTIuMjUgOS40MkwxNS42NiA5LjEzTDE3IDZMMTguMzQgOS4xM0wyMS43NSA5LjQyTDE5LjE2IDExLjY2TDE5Ljk0IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclN0YXJNdWx0aXBsZU91dGxpbmUgPSBcIk0yIDZWMjBIMjBWMjJIMkMuODk1IDIyIDAgMjEuMTEgMCAyMFY2SDJNMTIuNzggMTAuMDVMMTUuODEgOS43OUwxNyA3TDE4LjE5IDkuNzlMMjEuMjIgMTAuMDVMMTguOTIgMTIuMDRMMTkuNjEgMTVMMTcgMTMuNDdMMTQuMzkgMTVMMTUuMDggMTIuMDRMMTIuNzggMTAuMDVNMjQgNlYxNkMyNCAxNy4xMSAyMy4xMSAxOCAyMiAxOEg2QzQuOSAxOCA0IDE3LjExIDQgMTZWNEM0IDIuODkgNC45IDIgNiAySDEyTDE0IDRIMjJDMjMuMTEgNCAyNCA0LjkgMjQgNk0yMiA2SDZWMTZIMjJWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTdGFyT3V0bGluZSA9IFwiTTEwLjc4IDEyLjA1TDEzLjgxIDExLjc5TDE1IDlMMTYuMTkgMTEuNzlMMTkuMjIgMTIuMDVMMTYuOTIgMTQuMDRMMTcuNjEgMTdMMTUgMTUuNDdMMTIuMzkgMTdMMTMuMDggMTQuMDRMMTAuNzggMTIuMDVNMjIgOFYxOEMyMiAxOS4xMSAyMS4xMSAyMCAyMCAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDEwTDEyIDZIMjBDMjEuMTEgNiAyMiA2LjkgMjIgOE0yMCA4SDRWMThIMjBWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTd2FwID0gXCJNMjAgNkgxMkwxMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgyMEEyIDIgMCAwIDAgMjIgMThWOEEyIDIgMCAwIDAgMjAgNk0xNSAxNlYxNEg5VjE2TDYgMTNMOSAxMFYxMkgxNVYxMEwxOCAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTd2FwT3V0bGluZSA9IFwiTTIwIDE4SDRWOEgyME0yMCA2SDEyTDEwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY4QTIgMiAwIDAgMCAyMCA2TTE4IDEzTDE1IDEwVjEySDlWMTBMNiAxM0w5IDE2VjE0SDE1VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclN5bmMgPSBcIk0xMCw0TDEyLDZIMjBBMiwyIDAgMCwxIDIyLDhWMTEuNUMyMS4yMywxMS4xOCAyMC4zOSwxMSAxOS41LDExQTYuNSw2LjUgMCAwLDAgMTMsMTcuNUMxMywxOC4zOSAxMy4xOCwxOS4yMyAxMy41LDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNC44OSAyLjg5LDQgNCw0SDEwTTE5LDEyVjEzLjVBNCw0IDAgMCwxIDIzLDE3LjVDMjMsMTguMzIgMjIuNzUsMTkuMDggMjIuMzMsMTkuNzFMMjEuMjQsMTguNjJDMjEuNDEsMTguMjggMjEuNSwxNy45IDIxLjUsMTcuNUEyLjUsMi41IDAgMCwwIDE5LDE1VjE2LjVMMTYuNzUsMTQuMjVMMTksMTJNMTksMjNWMjEuNUE0LDQgMCAwLDEgMTUsMTcuNUMxNSwxNi42OCAxNS4yNSwxNS45MiAxNS42NywxNS4yOUwxNi43NiwxNi4zOEMxNi41OSwxNi43MiAxNi41LDE3LjEgMTYuNSwxNy41QTIuNSwyLjUgMCAwLDAgMTksMjBWMTguNUwyMS4yNSwyMC43NUwxOSwyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTeW5jT3V0bGluZSA9IFwiTTEwLDRMMTIsNkgyMEEyLDIgMCAwLDEgMjIsOFYxMS41QzIxLjM4LDExLjI0IDIwLjcsMTEuMDcgMjAsMTFWOEg0VjE4SDEzQzEzLjA3LDE4LjcgMTMuMjQsMTkuMzggMTMuNSwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxME0xOSwxMlYxMy41QTQsNCAwIDAsMSAyMywxNy41QzIzLDE4LjMyIDIyLjc1LDE5LjA4IDIyLjMzLDE5LjcxTDIxLjI0LDE4LjYyQzIxLjQxLDE4LjI4IDIxLjUsMTcuOSAyMS41LDE3LjVBMi41LDIuNSAwIDAsMCAxOSwxNVYxNi41TDE2Ljc1LDE0LjI1TDE2LjcyLDE0LjIyQzE2Ljc4LDE0LjE3IDE2Ljg1LDE0LjEzIDE5LDEyTTE5LDIzVjIxLjVBNCw0IDAgMCwxIDE1LDE3LjVDMTUsMTYuNjggMTUuMjUsMTUuOTIgMTUuNjcsMTUuMjlMMTYuNzYsMTYuMzhDMTYuNTksMTYuNzIgMTYuNSwxNy4xIDE2LjUsMTcuNUEyLjUsMi41IDAgMCwwIDE5LDIwVjE4LjVMMjEuMjUsMjAuNzVMMjEuMjgsMjAuNzhDMjEuMjIsMjAuODMgMjEuMTUsMjAuODcgMTksMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyVGFibGUgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjhDMjIgNi44OSAyMS4xIDYgMjAgNkgxMkwxMCA0SDRNMTIgOUgxNVYxMUgxMlY5TTE2IDlIMTlWMTFIMTZWOU0xMiAxMkgxNVYxNEgxMlYxMk0xNiAxMkgxOVYxNEgxNlYxMk0xMiAxNUgxNVYxN0gxMlYxNU0xNiAxNUgxOVYxN0gxNlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJUYWJsZU91dGxpbmUgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjhDMjIgNi44OSAyMS4xIDYgMjAgNkgxMkwxMCA0SDRNNCA4SDIwVjE4SDRWOE0xMiA5VjExSDE1VjlIMTJNMTYgOVYxMUgxOVY5SDE2TTEyIDEyVjE0SDE1VjEySDEyTTE2IDEyVjE0SDE5VjEySDE2TTEyIDE1VjE3SDE1VjE1SDEyTTE2IDE1VjE3SDE5VjE1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclRleHQgPSBcIk0yMCw2SDEyTDEwLDRINEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY4QTIsMiAwIDAsMCAyMCw2TTE1LDE2SDZWMTRIMTVWMTZNMTgsMTJINlYxMEgxOFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJUZXh0T3V0bGluZSA9IFwiTTIwLDE4SDRWOEgyME0yMCw2SDEyTDEwLDRINEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY4QTIsMiAwIDAsMCAyMCw2TTE1LDE2SDZWMTRIMTVWMTZNMTgsMTJINlYxMEgxOFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJVcGxvYWQgPSBcIk0yMCw2QTIsMiAwIDAsMSAyMiw4VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgxMEwxMiw2SDIwTTEwLjc1LDEzSDE0VjE3SDE2VjEzSDE5LjI1TDE1LDguNzVcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJVcGxvYWRPdXRsaW5lID0gXCJNMjAgMThINFY4SDIwTTIwIDZIMTJMMTAgNEg0QTIgMiAwIDAgMCAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjhBMiAyIDAgMCAwIDIwIDZNMTYgMTdIMTRWMTNIMTFMMTUgOUwxOSAxM0gxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJaaXAgPSBcIk0yMCA2SDEyTDEwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDIwQzIxLjEgMjAgMjIgMTkuMSAyMiAxOFY4QzIyIDYuOSAyMS4xIDYgMjAgNk0xOCAxMkgxNlYxNEgxOFYxNkgxNlYxOEgxNFYxNkgxNlYxNEgxNFYxMkgxNlYxMEgxNFY4SDE2VjEwSDE4VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclppcE91dGxpbmUgPSBcIk0yMCA2SDEyTDEwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDIwQzIxLjEgMjAgMjIgMTkuMSAyMiAxOFY4QzIyIDYuOSAyMS4xIDYgMjAgNk0yMCAxOEgxNlYxNkgxNFYxOEg0VjhIMTRWMTBIMTZWOEgyMFYxOE0xNiAxMlYxMEgxOFYxMkgxNk0xNCAxMkgxNlYxNEgxNFYxMk0xOCAxNkgxNlYxNEgxOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb250QXdlc29tZSA9IFwiTTE5Ljc2IDJINC4yNEMzIDIgMiAzIDIgNC4yNFYxOS43NkMyIDIxIDMgMjIgNC4yNCAyMkgxOS43NkMyMSAyMiAyMiAyMSAyMiAxOS43NlY0LjI0QzIyIDMgMjEgMiAxOS43NiAyTTE3LjczIDE0LjY5QzE3LjczIDE0Ljg4IDE3LjU3IDE0Ljk2IDE3LjM4IDE1LjA0QzE2LjY0IDE1LjM2IDE1Ljg0IDE1LjY1IDE1IDE1LjY1QzEzLjc4IDE1LjY1IDEzLjIyIDE0LjkxIDExLjc4IDE0LjkxQzEwLjc0IDE0LjkxIDkuNjUgMTUuMjggOC43NyAxNS42OEM4LjcxIDE1LjcxIDguNjYgMTUuNzEgOC42MSAxNS43M1YxNy43NkM4LjYxIDE3Ljg0IDguNjEgMTcuOTIgOC41OCAxNy45N1YxOC4wM0M4LjQ3IDE4LjQgOC4xMyAxOC42NyA3LjczIDE4LjY3QzcuMjIgMTguNjcgNi44MiAxOC4yNiA2LjgyIDE3Ljc2VjhDNi40NyA3LjczIDYuMjQgNy4zMSA2LjI0IDYuODNDNi4yNCA2IDYuOSA1LjMzIDcuNzMgNS4zM0M4LjU2IDUuMzMgOS4yMyA2IDkuMjMgNi44M0M5LjIzIDcuMzEgOSA3LjczIDguNjQgOFY4LjgzQzguNzIgOC44IDguOCA4Ljc3IDguODggOC43MkM5LjcxIDguMzcgMTAuNyA4LjA4IDExLjYzIDguMDhDMTIuNjQgOC4wOCAxMy40NCA4LjM1IDE0LjM1IDguNjlDMTQuNTQgOC43NyAxNC43MiA4LjggMTQuOTMgOC44QzE1Ljk1IDguOCAxNy4wNyA4LjA4IDE3LjM0IDguMDhDMTcuNTUgOC4wOCAxNy43NCA4LjI0IDE3Ljc0IDguNDNWMTQuNjlIMTcuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZCA9IFwiTTE1LjUsMjFMMTQsOEgxNi4yM0wxNS4xLDMuNDZMMTYuODQsM0wxOC4wOSw4SDIyTDIwLjUsMjFIMTUuNU01LDExSDEwQTMsMyAwIDAsMSAxMywxNEgyQTMsMyAwIDAsMSA1LDExTTEzLDE4QTMsMyAwIDAsMSAxMCwyMUg1QTMsMyAwIDAsMSAyLDE4SDEzTTMsMTVIOEw5LjUsMTYuNUwxMSwxNUgxMkExLDEgMCAwLDEgMTMsMTZBMSwxIDAgMCwxIDEyLDE3SDNBMSwxIDAgMCwxIDIsMTZBMSwxIDAgMCwxIDMsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZEFwcGxlID0gXCJNMjAsMTBDMjIsMTMgMTcsMjIgMTUsMjJDMTMsMjIgMTMsMjEgMTIsMjFDMTEsMjEgMTEsMjIgOSwyMkM3LDIyIDIsMTMgNCwxMEM2LDcgOSw3IDExLDhWNUM1LjM4LDguMDcgNC4xMSwzLjc4IDQuMTEsMy43OEM0LjExLDMuNzggNi43NywwLjE5IDExLDVWM0gxM1Y4QzE1LDcgMTgsNyAyMCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb29kQXBwbGVPdXRsaW5lID0gXCJNMjAsMTBDMTguNTgsNy41NyAxNS41LDYuNjkgMTMsOFYzSDExVjhDOC41LDYuNjkgNS40Miw3LjU3IDQsMTBDMiwxMyA3LDIyIDksMjJDMTEsMjIgMTEsMjEgMTIsMjFDMTMsMjEgMTMsMjIgMTUsMjJDMTcsMjIgMjIsMTMgMjAsMTBNMTguMjUsMTMuMzhDMTcuNjMsMTUuODUgMTYuNDEsMTguMTIgMTQuNywyMEMxNC41LDIwIDE0LjI3LDE5LjkgMTQuMSwxOS43NUMxMi44NywxOC43NiAxMS4xMywxOC43NiA5LjksMTkuNzVDOS43MywxOS45IDkuNSwyMCA5LjMsMjBDNy41OSwxOC4xMyA2LjM2LDE1Ljg1IDUuNzUsMTMuMzlDNS41LDEyLjY2IDUuNDUsMTEuODcgNS42NiwxMS4xMkM2LjI0LDEwLjA5IDcuMzIsOS40MyA4LjUsOS40QzkuMDYsOS40MSA5LjYxLDkuNTQgMTAuMTEsOS43OUwxMSwxMC4yNEgxM0wxMy44OSw5Ljc5QzE0LjM5LDkuNTQgMTQuOTQsOS40MSAxNS41LDkuNEMxNi42OCw5LjQzIDE3Ljc2LDEwLjA4IDE4LjM0LDExLjExQzE4LjU1LDExLjg2IDE4LjUsMTIuNjUgMTguMjUsMTMuMzhNMTEsNUM1LjM4LDguMDcgNC4xMSwzLjc4IDQuMTEsMy43OEM0LjExLDMuNzggNi43NywwLjE5IDExLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZENyb2lzc2FudCA9IFwiTTIyLDE5TDE5LDE3TDIyLDE1VjE5TTE1LDE1TDE5LDlMMjIsMTNMMTgsMTZMMTUsMTVNNSwxN0wyLDE5VjE1TDUsMTdNOSwxNUw2LDE2TDIsMTNMNSw5TDksMTVNMTQsNkwxOCw4TDEzLDE1SDExTDYsOEwxMCw2SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2REcnVtc3RpY2sgPSBcIk0yMC4xNiAxMi43M0MyMi45MyA5Ljk2IDIyLjU3IDUuMjYgMTkuMDkgM0MxNy4wOCAxLjY3IDE0LjM5IDEuNjYgMTIuMzYgMi45N0MxMC42IDQuMSA5LjYzIDUuODYgOS40NiA3LjY4QzkuMzMgOSA4LjgzIDEwLjIzIDcuOTEgMTEuMTVMNy44OCAxMS4xOEM2LjcyIDEyLjM0IDYuNzIgMTQuMTEgNy44MSAxNS4xOUw4LjggMTYuMThDOS44OSAxNy4yNyAxMS42NiAxNy4yNyAxMi43NSAxNi4xOEMxMy43MiAxNS4yMSAxNSAxNC42OCAxNi4zOSAxNC41M0MxNy43NiAxNC4zOCAxOS4xIDEzLjc4IDIwLjE2IDEyLjczTTYuMjYgMTkuODZDNi41MyAyMC40MiA2LjQ0IDIxLjEgNS45NyAyMS41NkM1LjM5IDIyLjE1IDQuNDQgMjIuMTUgMy44NSAyMS41NkMzLjU4IDIxLjI5IDMuNDQgMjAuOTQgMy40MiAyMC41OEMzLjA2IDIwLjU2IDIuNzEgMjAuNDIgMi40NCAyMC4xNUMxLjg1IDE5LjU2IDEuODUgMTguNjEgMi40NCAxOC4wM0MyLjkgMTcuNTcgMy41OSAxNy40NyA0LjE0IDE3Ljc0TDYuNjIgMTUuMzFDNi43NiAxNS41IDYuOTIgMTUuNzIgNy4xIDE1LjlMOC4wOSAxNi44OUM4LjMgMTcuMDkgOC41IDE3LjI2IDguNzYgMTcuNDFMNi4yNiAxOS44NlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb29kRHJ1bXN0aWNrT2ZmID0gXCJNMjAuOCAyMi43TDEzLjYgMTUuNUMxMy4zIDE1LjcgMTMgMTUuOSAxMi43IDE2LjJDMTEuNiAxNy4zIDkuOCAxNy4zIDguNyAxNi4yTDcuNyAxNS4yQzYuNiAxNC4xIDYuNiAxMi4zIDcuOCAxMS4yQzggMTEgOC4yIDEwLjcgOC40IDEwLjRMMS4xIDNMMi40IDEuN0wyMi4xIDIxLjRMMjAuOCAyMi43TTguMSAxNi45TDcuMSAxNS45QzYuOSAxNS43IDYuOCAxNS41IDYuNiAxNS4zTDQuMSAxNy43QzMuNSAxNy40IDIuOSAxNy41IDIuNCAxOEMxLjggMTguNiAxLjggMTkuNSAyLjQgMjAuMUMyLjcgMjAuNCAzIDIwLjUgMy40IDIwLjVDMy40IDIwLjkgMy42IDIxLjIgMy44IDIxLjVDNC40IDIyLjEgNS4zIDIyLjEgNS45IDIxLjVDNi40IDIxIDYuNSAyMC40IDYuMiAxOS44TDguNyAxNy40QzguNSAxNy4zIDguMyAxNy4xIDguMSAxNi45TTIwLjIgMTIuN0MyMyA5LjkgMjIuNiA1LjIgMTkuMSAzQzE3LjEgMS43IDE0LjQgMS43IDEyLjQgM0MxMSAzLjkgMTAuMSA1LjEgOS43IDYuNUwxNy41IDE0LjNDMTguNSAxNCAxOS40IDEzLjUgMjAuMiAxMi43WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2REcnVtc3RpY2tPZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMOC41IDEwLjRDOC4zIDEwLjcgOC4xIDEwLjkgNy45IDExLjJDNi43IDEyLjQgNi43IDE0LjEgNy44IDE1LjJMOC44IDE2LjJDOS4zIDE2LjcgMTAuMSAxNyAxMC44IDE3QzExLjUgMTcgMTIuMiAxNi43IDEyLjggMTYuMkMxMy4xIDE1LjkgMTMuNCAxNS43IDEzLjcgMTUuNUwyMC45IDIyLjdMMjIuMSAyMS41TTExLjMgMTQuOEMxMS4xIDE1IDEwLjkgMTUgMTAuOCAxNVMxMC40IDE1IDEwLjIgMTQuOEw5LjIgMTMuOEM5IDEzLjYgOSAxMy40IDkgMTMuMkM5IDEzIDkuMSAxMi43IDkuMyAxMi41QzkuNSAxMi4zIDkuNyAxMiA5LjkgMTEuOEwxMi4xIDE0QzExLjkgMTQuMyAxMS42IDE0LjUgMTEuMyAxNC44TTExLjQgOC4yTDkuNyA2LjVDMTAuMSA1LjEgMTEgMy45IDEyLjQgM0MxMy40IDIuNCAxNC42IDIgMTUuNyAyQzE2LjkgMiAxOC4xIDIuMyAxOS4xIDNDMjIuNiA1LjMgMjIuOSAxMCAyMC4yIDEyLjdDMTkuNCAxMy41IDE4LjUgMTQgMTcuNSAxNC4zTDE1LjggMTIuNkMxNS45IDEyLjYgMTYgMTIuNSAxNi4yIDEyLjVDMTcuMiAxMi40IDE4LjEgMTIgMTguOCAxMS4zQzE5LjcgMTAuNCAyMC4yIDkuMSAyMCA3LjhDMTkuOSA2LjUgMTkuMiA1LjQgMTggNC42QzE3LjMgNC4yIDE2LjUgNCAxNS43IDRDMTQuOSA0IDE0LjEgNC4yIDEzLjQgNC43QzEyLjIgNS40IDExLjUgNi42IDExLjQgNy45VjguMk04LjggMTcuNEw2LjMgMTkuOEM2LjYgMjAuNCA2LjUgMjEgNiAyMS41QzUuNCAyMi4xIDQuNSAyMi4xIDMuOSAyMS41QzMuNiAyMS4yIDMuNSAyMC45IDMuNSAyMC41QzMuMSAyMC41IDIuOCAyMC4zIDIuNSAyMC4xQzEuOSAxOS41IDEuOSAxOC42IDIuNSAxOEMzIDE3LjUgMy42IDE3LjQgNC4yIDE3LjdMNi43IDE1LjNDNi44IDE1LjUgNyAxNS43IDcuMiAxNS45TDguMiAxNi45QzguMyAxNy4xIDguNSAxNy4zIDguOCAxNy40XCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZERydW1zdGlja091dGxpbmUgPSBcIk0xNS43MSA0QzE2LjU0IDQgMTcuMzMgNC4yMiAxOCA0LjY2QzE5LjE0IDUuNCAxOS44NCA2LjUzIDIwIDcuODRDMjAuMTEgOS4xMyAxOS42NiAxMC40IDE4Ljc1IDExLjMxQzE4LjA1IDEyIDE3LjE2IDEyLjQ0IDE2LjE4IDEyLjU0QzE0LjI3IDEyLjc0IDEyLjU5IDEzLjUgMTEuMzQgMTQuNzdDMTEuMTMgMTQuOTcgMTAuOSAxNSAxMC43NyAxNUMxMC42NSAxNSAxMC40MiAxNC45NyAxMC4yMSAxNC43N0w5LjIyIDEzLjc4QzkuMDQgMTMuNiA5IDEzLjM5IDkgMTMuMjVDOSAxMyA5LjExIDEyLjc4IDkuMzIgMTIuNTdDMTAuNTMgMTEuMzUgMTEuMjcgOS43MyAxMS40NSA3Ljg3QzExLjU4IDYuNTQgMTIuMjkgNS40IDEzLjQ1IDQuNjVDMTQuMTEgNC4yMiAxNC44OSA0IDE1LjcxIDRNMTUuNzEgMkMxNC41NCAyIDEzLjM3IDIuMzIgMTIuMzYgMi45N0MxMC42IDQuMSA5LjYzIDUuODYgOS40NiA3LjY4QzkuMzMgOSA4LjgzIDEwLjIzIDcuOTEgMTEuMTVMNy44OCAxMS4xOEM2LjcyIDEyLjM0IDYuNzIgMTQuMTEgNy44MSAxNS4xOUw4LjggMTYuMThDOS4zNSAxNi43MyAxMC4wNiAxNyAxMC43NyAxN1MxMi4yIDE2LjczIDEyLjc1IDE2LjE4QzEzLjcyIDE1LjIxIDE1IDE0LjY4IDE2LjM5IDE0LjUzQzE3Ljc2IDE0LjM4IDE5LjEgMTMuNzggMjAuMTYgMTIuNzNDMjIuOTMgOS45NiAyMi41NyA1LjI2IDE5LjA5IDNDMTguMDggMi4zMyAxNi45IDIgMTUuNzEgMk02LjI2IDE5Ljg2QzYuNTMgMjAuNDIgNi40NCAyMS4xIDUuOTcgMjEuNTZDNS4zOSAyMi4xNSA0LjQ0IDIyLjE1IDMuODUgMjEuNTZDMy41OCAyMS4yOSAzLjQ0IDIwLjk0IDMuNDIgMjAuNThDMy4wNiAyMC41NiAyLjcxIDIwLjQyIDIuNDQgMjAuMTVDMS44NSAxOS41NiAxLjg1IDE4LjYxIDIuNDQgMTguMDNDMi45IDE3LjU3IDMuNTkgMTcuNDcgNC4xNCAxNy43NEw2LjYyIDE1LjMxQzYuNzYgMTUuNSA2LjkyIDE1LjcyIDcuMSAxNS45TDguMDkgMTYuODlDOC4zIDE3LjA5IDguNSAxNy4yNiA4Ljc2IDE3LjQxTDYuMjYgMTkuODZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZEZvcmtEcmluayA9IFwiTTMsM0ExLDEgMCAwLDAgMiw0VjhMMiw5LjVDMiwxMS4xOSAzLjAzLDEyLjYzIDQuNSwxMy4yMlYxOS41QTEuNSwxLjUgMCAwLDAgNiwyMUExLjUsMS41IDAgMCwwIDcuNSwxOS41VjEzLjIyQzguOTcsMTIuNjMgMTAsMTEuMTkgMTAsOS41VjhMMTAsNEExLDEgMCAwLDAgOSwzQTEsMSAwIDAsMCA4LDRWOEEwLjUsMC41IDAgMCwxIDcuNSw4LjVBMC41LDAuNSAwIDAsMSA3LDhWNEExLDEgMCAwLDAgNiwzQTEsMSAwIDAsMCA1LDRWOEEwLjUsMC41IDAgMCwxIDQuNSw4LjVBMC41LDAuNSAwIDAsMSA0LDhWNEExLDEgMCAwLDAgMywzTTE5Ljg4LDNDMTkuNzUsMyAxOS42MiwzLjA5IDE5LjUsMy4xNkwxNiw1LjI1VjlIMTJWMTFIMTNMMTQsMjFIMjBMMjEsMTFIMjJWOUgxOFY2LjM0TDIwLjUsNC44NEMyMSw0LjU2IDIxLjEzLDQgMjAuODQsMy41QzIwLjYzLDMuMTQgMjAuMjYsMi45NSAxOS44OCwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2RIYWxhbCA9IFwiTTcgNVYxNUM3IDE2LjExIDYuMTEgMTcgNSAxN0g0QzMuNDUgMTcgMyAxNi41NSAzIDE2VjEzSDFWMTZDMSAxNy42NiAyLjM0IDE5IDQgMTlINUM3LjIxIDE5IDkgMTcuMjEgOSAxNVY1TTIzIDEzLjM4TDIxLjc3IDEyLjE1QzIxLjAzIDExLjQxIDIwLjA0IDExIDE5IDExSDE3VjEzSDE5QzE5LjUgMTMgMjAgMTMuMiAyMC4zNSAxMy41NkwyMC43IDEzLjkxTDE5LjUgMTQuNkMxOS4wNCAxNC44NiAxOC41MyAxNSAxOCAxNUgxN0MxNi40NCAxNSAxNiAxNC41NiAxNiAxNFY2SDE0VjkuODFMMTMuMzggOS4xMkMxMi43IDguMzcgMTEuNiA4IDEwLjU5IDhIMTBWMTBIMTAuNTlDMTEuMjMgMTAgMTEuODQgMTAuMjUgMTIuMjkgMTAuNzFMMTQgMTIuNDFWMTRDMTQgMTUuMTIgMTMuMTIgMTYgMTIgMTZIMTBWMThIMTJDMTMuMzcgMTggMTQuNSAxNy4zIDE1LjE3IDE2LjI0QzE1LjYzIDE2LjcxIDE2LjI1IDE3IDE3IDE3SDE4QzE4Ljg4IDE3IDE5Ljc0IDE2Ljc3IDIwLjUgMTYuMzNMMjMgMTQuODlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZEtvc2hlciA9IFwiTTEgN1Y5SDNDMy41NyA5IDQgOS40MyA0IDEwVjE3SDZWMTBDNiA4LjM2IDQuNjQgNyAzIDdIMU03IDdWMTRDNyAxNS42NSA4LjM2IDE3IDEwIDE3SDE0QzE1LjY1IDE3IDE3IDE1LjY1IDE3IDE0VjdIMTVWMTRDMTUgMTQuNTcgMTQuNTcgMTUgMTQgMTVIMTBDOS40MyAxNSA5IDE0LjU3IDkgMTRWMTNIMTBDMTEuNjUgMTMgMTMgMTEuNjUgMTMgMTBWN0gxMVYxMEMxMSAxMC41NyAxMC41NyAxMSAxMCAxMUg5VjdIN00xOCA3VjlIMjBDMjAuNTcgOSAyMSA5LjQzIDIxIDEwVjE0QzIxIDE0LjU3IDIwLjU3IDE1IDIwIDE1SDE4VjE3SDIwQzIxLjY1IDE3IDIzIDE1LjY1IDIzIDE0VjEwQzIzIDguMzYgMjEuNjUgNyAyMCA3SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2RPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIxLDIxLjcyTDE5LjczLDIzTDE3LjczLDIxSDE1LjVMMTUuMjEsMTguNUwxMi45NywxNi4yNEMxMi44NiwxNi42OCAxMi40NywxNyAxMiwxN0gzQTEsMSAwIDAsMSAyLDE2QTEsMSAwIDAsMSAzLDE1SDhMOS41LDE2LjVMMTEsMTVIMTEuNzNMMTAuNzMsMTRIMkEzLDMgMCAwLDEgNSwxMUg3LjczTDIsNS4yN00xNCw4SDE2LjIzTDE1LjEsMy40NkwxNi44NCwzTDE4LjA5LDhIMjJMMjAuNzQsMTguOTJMMTQuNTQsMTIuNzJMMTQsOE0xMywxOEEzLDMgMCAwLDEgMTAsMjFINUEzLDMgMCAwLDEgMiwxOEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb29kU3RlYWsgPSBcIk0xMS45IDJDOCAyIDQuOSA1LjQgNSA5LjNDNS4xIDExLjkgNi42IDE0LjEgOC43IDE1LjJDMTAuMSAxNS45IDExIDE3LjMgMTEgMTguOFYxOUMxMSAyMC43IDEyLjMgMjIgMTQgMjJDMTggMjIgMTkgMTcgMTkgOUMxOSA5IDE5IDIgMTEuOSAyTTE0IDIwQzEzLjQgMjAgMTMgMTkuNiAxMyAxOVYxOC44QzEzIDE2LjYgMTEuNyAxNC41IDkuNyAxMy40QzguMSAxMi42IDcuMSAxMSA3IDkuMkM3IDcuOSA3LjUgNi41IDguNCA1LjVDOS4zIDQuNSAxMC42IDQgMTEuOCA0QzE2LjcgNCAxNyA4LjIgMTcgOUMxNyAxOC45IDE1LjMgMjAgMTQgMjBNMTUuOCA3LjZMOC4zIDEwLjNDOC4xIDEwIDggOS42IDggOS4xQzggOC40IDguMiA3LjggOC41IDcuMUwxMy43IDUuMkMxNC45IDUuOCAxNS41IDYuNyAxNS44IDcuNk0xMi45IDE1LjFMMTUuNyAxNC4xQzE1LjYgMTUuNiAxNS4zIDE2LjcgMTUuMSAxNy40TDEzLjggMTcuOUMxMy44IDE2LjkgMTMuNSAxNiAxMi45IDE1LjFNMTYgOS4yQzE2IDEwLjQgMTYgMTEuNSAxNS45IDEyLjRMMTEuOSAxMy45QzExLjQgMTMuNCAxMC44IDEyLjkgMTAuMSAxMi42QzkuNyAxMi40IDkuMyAxMi4xIDkgMTEuOEwxNiA5LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZFN0ZWFrT2ZmID0gXCJNMi4zOSAxLjczTDEuMTEgM0w1LjI3IDcuMTZDNS4wOCA3LjgzIDUgOC41MyA1IDkuMjZDNS4xIDExLjgzIDYuNTkgMTQuMDUgOC43NCAxNS4xOUMxMC4xIDE1LjkgMTEgMTcuMjUgMTEgMTguNzlWMTlDMTEgMjAuNjYgMTIuMzQgMjIgMTQgMjJDMTUuNjggMjIgMTYuODMgMjEuMTEgMTcuNiAxOS41TDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M00xNCAyMEMxMy40NSAyMCAxMyAxOS41NSAxMyAxOVYxOC43OUMxMyAxNi41NiAxMS43MiAxNC41IDkuNjcgMTMuNDJDOC4wOSAxMi41OCA3LjA3IDEwLjk2IDcgOS4xOEM3IDkuMDkgNyA5IDcgOC45TDguMTYgMTAuMDVDOC4xOSAxMC4xNSA4LjIxIDEwLjI1IDguMjQgMTAuMzVMOC40IDEwLjI5TDkuNjIgMTEuNUw5LjA4IDExLjcxQzkuMzggMTIuMDQgOS43MyAxMi4zMiAxMC4xNCAxMi41M0MxMC44MSAxMi44OSAxMS40IDEzLjM0IDExLjkxIDEzLjg1TDExLjk1IDEzLjg0TDEzLjE3IDE1LjA2TDEyLjk1IDE1LjE0QzEzLjQ2IDE1Ljk2IDEzLjggMTYuODkgMTMuOTMgMTcuODVMMTUuMiAxNy4zOUMxNS4yMiAxNy4zMiAxNS4yNSAxNy4yNCAxNS4yNyAxNy4xNkwxNi4wNyAxNy45NkMxNS40NyAxOS42OCAxNC42OCAyMCAxNCAyME0xNS43OSA3LjZMMTIuMTQgOC45NEw5Ljg4IDYuNjhMMTMuNjkgNS4zQzE0Ljk0IDUuNzcgMTUuNTMgNi43MiAxNS43OSA3LjZNOC41OSA1LjM5TDcuMTcgMy45N0M4LjQxIDIuNzcgMTAuMDcgMiAxMS44OCAySDExLjg4QzE5IDIgMTkgOSAxOSA5QzE5IDExLjQ2IDE4LjkgMTMuNjMgMTguNjYgMTUuNDZMMTYuODQgMTMuNjRDMTYuOTQgMTIuMzYgMTcgMTAuODMgMTcgOUMxNyA4LjE4IDE2LjY5IDQgMTEuODggNEgxMS44OEMxMC42NyA0IDkuNSA0LjUgOC41OSA1LjM5TTE1LjY4IDEyLjVMMTMuMzYgMTAuMTVMMTYgOS4xOUMxNiAxMC40MSAxNS45NyAxMS40NiAxNS45MiAxMi40TDE1LjY4IDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZFR1cmtleSA9IFwiTTUuNDQgNy45Nkw1Ljk2IDcuNDNDNi41NCA2Ljg1IDcuNSA2Ljg1IDguMSA3LjQ3TDguMTIgNy41QzguNjEgOCA5LjI2IDguMjQgOS45NyA4LjMxQzEwLjk0IDguNCAxMS44OCA4LjkyIDEyLjUgOS44NkMxMy4xOCAxMC45NCAxMy4xNyAxMi4zOCAxMi40NiAxMy40NUMxMS4yNiAxNS4zIDguNzUgMTUuNSA3LjI4IDE0QzYuNzIgMTMuNDUgNi40IDEyLjc0IDYuMzIgMTJDNi4yNCAxMS4yNyA1Ljk1IDEwLjU4IDUuNDQgMTAuMDdDNC44NiA5LjUgNC44NiA4LjU0IDUuNDQgNy45Nk05LjY0IDE2QzguNDcgMTYgNy4zOCAxNS41NSA2LjU3IDE0LjcyQzUuODcgMTQgNS40MyAxMy4xIDUuMzIgMTIuMTJDNS4yOSAxMS44MiA1LjIgMTEuNDMgNC45NiAxMS4wN0M0LjM2IDExLjkgNCAxMi45IDQgMTRDNCAxNS42NCA0LjggMTcuMDkgNi4wMyAxOEgxOVYxN0MxOSAxMy40IDE2LjYxIDEwLjM1IDEzLjM0IDkuMzVDMTQuMjMgMTAuNzUgMTQuMjEgMTIuNjIgMTMuMyAxNEMxMi41IDE1LjI1IDExLjEyIDE2IDkuNjQgMTZNMTQuNzggNy41NkgxNi4wNUMxNi45MiA3LjU2IDE3LjY4IDguMTcgMTcuNjggOS4yNlYxMEgxOC45M1Y5QzE4LjkzIDcuNSAxNy42IDYuMzYgMTYuMDUgNi4zNkgxNC43OEMxMy45NSA2LjM2IDEzLjI0IDUuNTQgMTMuMjQgNC43UzEzLjk1IDMuMjQgMTQuNzggMy4yNFYyQzEzLjI0IDIgMTIgMy4yNCAxMiA0Ljc4UzEzLjI0IDcuNTYgMTQuNzggNy41Nk00LjUgNy41NUM0LjU2IDcuNDUgNC42NCA3LjM1IDQuNzMgNy4yNUw1LjI1IDYuNzNDNS4zNCA2LjY0IDUuNDQgNi41NyA1LjU0IDYuNUw0LjEzIDUuMDdDNC4yNyA0LjggNC4yMiA0LjQ1IDQgNC4yMkMzLjcgMy45MyAzLjIyIDMuOTMgMi45MyA0LjIyQzIuNzkgNC4zNiAyLjcyIDQuNTMgMi43MSA0LjcxQzIuNTMgNC43MiAyLjM2IDQuNzkgMi4yMiA0LjkzQzEuOTMgNS4yMiAxLjkzIDUuNyAyLjIyIDZDMi40NSA2LjIyIDIuNzkgNi4yNyAzLjA3IDYuMTNMNC41IDcuNTVNMTguMzkgNC4zOUMxOC45IDMuODggMTkuMjIgMy4xOSAxOS4yMiAyLjQySDE3Ljk3QzE3Ljk3IDMuMjUgMTcuMjcgMy45NSAxNi40NCAzLjk1VjUuMTlDMTguMyA1LjE5IDE5Ljc2IDYuNzEgMTkuNzYgOC41N1YxMUgyMVY4LjU3QzIxIDYuNzIgMTkuOTQgNS4xMyAxOC4zOSA0LjM5TTUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlIM0MzIDIwLjExIDMuOSAyMSA1IDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2RWYXJpYW50ID0gXCJNMjIsMThBNCw0IDAgMCwxIDE4LDIySDE1QTQsNCAwIDAsMSAxMSwxOFYxNkgxNy43OUwyMC41NSwxMS4yM0wyMi4xMSwxMi4xM0wxOS44NywxNkgyMlYxOE05LDIySDJDMiwxOSAyLDE2IDIuMzMsMTIuODNDMi42LDEwLjMgMy4wOCw3LjY2IDMuNiw1SDNWM0g0TDcsM0g4VjVINy40QzcuOTIsNy42NiA4LjQsMTAuMyA4LjY3LDEyLjgzQzksMTYgOSwxOSA5LDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2RWYXJpYW50T2ZmID0gXCJNMi4yOCAzTDEgNC4yN0wzLjMxIDYuNThDMi45MSA4LjcgMi41NSAxMC44IDIuMzMgMTIuODNDMiAxNiAyIDE5IDIgMjJIOUM5IDE5IDkgMTYgOC42NyAxMi44M0M4LjYzIDEyLjUgOC41OCAxMi4xNSA4LjU0IDExLjgxTDEyLjczIDE2SDExVjE4QzExIDIwLjIxIDEyLjc5IDIyIDE1IDIySDE4QzE4LjIzIDIyIDE4LjQ1IDIyIDE4LjY3IDIxLjk0TDE5LjczIDIzTDIxIDIxLjcyTTQuODIgM0w3LjUzIDUuNzFDNy41IDUuNDcgNy40NSA1LjI0IDcuNCA1SDhWM0g3TTIwLjU1IDExLjIzTDE3LjggMTZMMjEuNTkgMTkuNzZDMjEuODYgMTkuMjEgMjIgMTguNjEgMjIgMThWMTZIMTkuODdMMjIuMTEgMTIuMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vdFByaW50ID0gXCJNMTYgMkEyIDIgMCAxIDEgMTQgNEEyIDIgMCAwIDEgMTYgMk0xMi4wNCAzQTEuNSAxLjUgMCAxIDEgMTAuNTQgNC41QTEuNSAxLjUgMCAwIDEgMTIuMDQgM005LjA5IDQuNUExIDEgMCAxIDEgOC4wOSA1LjVBMSAxIDAgMCAxIDkuMDkgNC41TTcuMDQgNkExIDEgMCAxIDEgNi4wNCA3QTEgMSAwIDAgMSA3LjA0IDZNMTQuNTMgMTJBMi41IDIuNSAwIDAgMCAxNyA5LjI0QTIuNiAyLjYgMCAwIDAgMTQuMzkgN0gxMS45MUE2IDYgMCAwIDAgNi4xMiAxMS40QTIgMiAwIDAgMCA2LjIzIDEyLjhBNi44IDYuOCAwIDAgMSA2LjkxIDE1Ljc2QTYuODkgNi44OSAwIDAgMSA2LjIyIDE4LjU1QTEuOTIgMS45MiAwIDAgMCA2LjMgMjAuMzFBMy42MiAzLjYyIDAgMCAwIDEwLjE5IDIxLjkxQTMuNSAzLjUgMCAwIDAgMTIuMzYgMTYuNjNBMi44MiAyLjgyIDAgMCAxIDExLjkxIDE1UzExLjY4IDEyIDE0LjUzIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb3RiYWxsID0gXCJNNy41LDcuNUM5LjE3LDUuODcgMTEuMjksNC42OSAxMy4zNyw0LjE4QzE1LjQ2LDMuNjcgMTcuNSwzLjgzIDE4LjYsNEMxOS43MSw0LjE1IDE5Ljg3LDQuMzEgMjAuMDMsNS40MUMyMC4xOCw2LjUgMjAuMzMsOC41NSAxOS44MiwxMC42M0MxOS4zMSwxMi43MSAxOC4xMywxNC44MyAxNi41LDE2LjVDMTQuODMsMTguMTMgMTIuNzEsMTkuMzEgMTAuNjMsMTkuODJDOC41NSwyMC4zMyA2LjUsMjAuMTggNS40MSwyMC4wM0M0LjMxLDE5Ljg3IDQuMTUsMTkuNzEgNCwxOC42QzMuODMsMTcuNSAzLjY3LDE1LjQ2IDQuMTgsMTMuMzdDNC42OSwxMS4yOSA1Ljg3LDkuMTcgNy41LDcuNU03LjMsMTUuNzlMOC4yMSwxNi43TDkuNDIsMTUuNUwxMC42MywxNi43TDExLjU0LDE1Ljc5TDEwLjM0LDE0LjU4TDEyLDEyLjkxTDEzLjIxLDE0LjEyTDE0LjEyLDEzLjIxTDEyLjkxLDEyTDE0LjU4LDEwLjM0TDE1Ljc5LDExLjU0TDE2LjcsMTAuNjNMMTUuNSw5LjQyTDE2LjcsOC4yMUwxNS43OSw3LjNMMTQuNTgsOC41TDEzLjM3LDcuM0wxMi40Niw4LjIxTDEzLjY2LDkuNDJMMTIsMTEuMDlMMTAuNzksOS44OEw5Ljg4LDEwLjc5TDExLjA5LDEyTDkuNDIsMTMuNjZMOC4yMSwxMi40Nkw3LjMsMTMuMzdMOC41LDE0LjU4TDcuMywxNS43OVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb290YmFsbEF1c3RyYWxpYW4gPSBcIk03LjUsNy41QzkuMTcsNS44NyAxMS4yOSw0LjY5IDEzLjM3LDQuMThDMTgsMyAyMSw2IDE5LjgyLDEwLjYzQzE5LjMxLDEyLjcxIDE4LjEzLDE0LjgzIDE2LjUsMTYuNUMxNC44MywxOC4xMyAxMi43MSwxOS4zMSAxMC42MywxOS44MkM2LDIxIDMsMTggNC4xOCwxMy4zN0M0LjY5LDExLjI5IDUuODcsOS4xNyA3LjUsNy41TTEwLjYyLDExLjI2TDEwLjI2LDExLjYyTDEyLjM4LDEzLjc0TDEyLjc0LDEzLjM4TDEwLjYyLDExLjI2TTExLjYyLDEwLjI2TDExLjI2LDEwLjYyTDEzLjM4LDEyLjc0TDEzLjc0LDEyLjM4TDExLjYyLDEwLjI2TTkuNjIsMTIuMjZMOS4yNiwxMi42MkwxMS4zOCwxNC43NEwxMS43NCwxNC4zOEw5LjYyLDEyLjI2TTEyLjYzLDkuMjhMMTIuMjgsOS42M0wxNC40LDExLjc1TDE0Ljc1LDExLjRMMTIuNjMsOS4yOE04LjYzLDEzLjI4TDguMjgsMTMuNjNMMTAuNCwxNS43NUwxMC43NSwxNS40TDguNjMsMTMuMjhNMTMuNjMsOC4yOEwxMy4yOCw4LjYzTDE1LjQsMTAuNzVMMTUuNzUsMTAuNEwxMy42Myw4LjI4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb3RiYWxsSGVsbWV0ID0gXCJNMTMuNSwxMkExLjUsMS41IDAgMCwwIDEyLDEzLjVBMS41LDEuNSAwIDAsMCAxMy41LDE1QTEuNSwxLjUgMCAwLDAgMTUsMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJNMTMuNSwzQzE4LjE5LDMgMjIsNi41OCAyMiwxMUMyMiwxMi42MiAyMiwxNCAyMS4wOSwxNkMxNywxNiAxNiwyMCAxMi41LDIwQzEwLjMyLDIwIDkuMjcsMTguMjggOS4wNSwxNkg5TDguMjQsMTZMNi45NiwyMC4zQzYuODEsMjAuNzkgNi4zMywyMS4wOCA1Ljg0LDIxSDNBMSwxIDAgMCwxIDIsMjBBMSwxIDAgMCwxIDMsMTlWMTZBMSwxIDAgMCwxIDIsMTVBMSwxIDAgMCwxIDMsMTRINi43NUw3LjIzLDEyLjM5QzYuNzIsMTIuMTQgNi4xMywxMiA1LjUsMTJINS4wN0w1LDExQzUsNi41OCA4LjgxLDMgMTMuNSwzTTUsMTZWMTlINS4yNkw2LjE1LDE2SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ya2xpZnQgPSBcIk02LDRWMTFINEMyLjg5LDExIDIsMTEuODkgMiwxM1YxN0EzLDMgMCAwLDAgNSwyMEEzLDMgMCAwLDAgOCwxN0gxMEEzLDMgMCAwLDAgMTMsMjBBMywzIDAgMCwwIDE2LDE3VjEzTDEyLDRINk0xNyw1VjE5SDIyVjE3LjVIMTguNVY1SDE3TTcuNSw1LjVIMTEuMkwxNC41LDEzSDcuNVY1LjVNNSwxNS41QTEuNSwxLjUgMCAwLDEgNi41LDE3QTEuNSwxLjUgMCAwLDEgNSwxOC41QTEuNSwxLjUgMCAwLDEgMy41LDE3QTEuNSwxLjUgMCAwLDEgNSwxNS41TTEzLDE1LjVBMS41LDEuNSAwIDAsMSAxNC41LDE3QTEuNSwxLjUgMCAwLDEgMTMsMTguNUExLjUsMS41IDAgMCwxIDExLjUsMTdBMS41LDEuNSAwIDAsMSAxMywxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1Ecm9wZG93biA9IFwiTTE3IDVIMjBMMTguNSA3TDE3IDVNMyAySDIxQzIyLjExIDIgMjMgMi45IDIzIDRWOEMyMyA5LjExIDIyLjExIDEwIDIxIDEwSDE2VjIwQzE2IDIxLjExIDE1LjExIDIyIDE0IDIySDNDMS45IDIyIDEgMjEuMTEgMSAyMFY0QzEgMi45IDEuOSAyIDMgMk0zIDRWOEgxNFY0SDNNMjEgOFY0SDE2VjhIMjFNMyAyMEgxNFYxMEgzVjIwTTUgMTJIMTJWMTRINVYxMk01IDE2SDEyVjE4SDVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybVNlbGVjdCA9IFwiTTE1IDVIMThMMTYuNSA3TDE1IDVNNSAySDE5QzIwLjExIDIgMjEgMi45IDIxIDRWMjBDMjEgMjEuMTEgMjAuMTEgMjIgMTkgMjJINUMzLjkgMjIgMyAyMS4xMSAzIDIwVjRDMyAyLjkgMy45IDIgNSAyTTUgNFY4SDE5VjRINU01IDIwSDE5VjEwSDVWMjBNNyAxMkgxN1YxNEg3VjEyTTcgMTZIMTdWMThIN1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtVGV4dGFyZWEgPSBcIk0xMyA5SDRWMjNIMlY3SDEzTTIzIDlWN0gxN1Y1QTEgMSAwIDAgMSAxOCA0SDIwVjJIMTcuNUMxNyAyIDE2IDIuNDUgMTYgM0MxNiAyLjQ1IDE1LjA1IDIgMTQuNSAySDEyVjRIMTRBMSAxIDAgMCAxIDE1IDVWMTlBMSAxIDAgMCAxIDE0IDIwSDEyVjIySDE0LjVDMTUuMDUgMjIgMTYgMjEuNTUgMTYgMjFDMTYgMjEuNTUgMTYuOTUgMjIgMTcuNSAyMkgyMFYyMEgxOEExIDEgMCAwIDEgMTcgMTlWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtVGV4dGJveCA9IFwiTTE3LDdIMjJWMTdIMTdWMTlBMSwxIDAgMCwwIDE4LDIwSDIwVjIySDE3LjVDMTYuOTUsMjIgMTYsMjEuNTUgMTYsMjFDMTYsMjEuNTUgMTUuMDUsMjIgMTQuNSwyMkgxMlYyMEgxNEExLDEgMCAwLDAgMTUsMTlWNUExLDEgMCAwLDAgMTQsNEgxMlYySDE0LjVDMTUuMDUsMiAxNiwyLjQ1IDE2LDNDMTYsMi40NSAxNi45NSwyIDE3LjUsMkgyMFY0SDE4QTEsMSAwIDAsMCAxNyw1VjdNMiw3SDEzVjlINFYxNUgxM1YxN0gyVjdNMjAsMTVWOUgxN1YxNUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtVGV4dGJveExvY2sgPSBcIk0yIDdINlY5SDRWMTVINlYxN0gyVjdNMTAgN0gyMlYxMkMyMS40MiAxMS41NiAyMC43NCAxMS4yNSAyMCAxMS4xVjlIMTBWMTVIMTQuMjVDMTMuNTYgMTUgMTMgMTUuNTYgMTMgMTYuMjVWMTdIMTBWMTlDMTAgMTkuNTUgMTAuNDUgMjAgMTEgMjBIMTNWMjJIMTAuNUM5Ljk1IDIyIDkgMjEuNTUgOSAyMUM5IDIxLjU1IDguMDUgMjIgNy41IDIySDVWMjBIN0M3LjU1IDIwIDggMTkuNTUgOCAxOVY1QzggNC40NSA3LjU1IDQgNyA0SDVWMkg3LjVDOC4wNSAyIDkgMi40NSA5IDNDOSAyLjQ1IDkuOTUgMiAxMC41IDJIMTNWNEgxMUMxMC40NSA0IDEwIDQuNDUgMTAgNVY3TTIxLjggMTdDMjIuNCAxNyAyMyAxNy42IDIzIDE4LjNWMjEuOEMyMyAyMi40IDIyLjQgMjMgMjEuNyAyM0gxNi4yQzE1LjYgMjMgMTUgMjIuNCAxNSAyMS43VjE4LjJDMTUgMTcuNiAxNS42IDE3IDE2LjIgMTdWMTUuNUMxNi4yIDE0LjEgMTcuNiAxMyAxOSAxM0MyMC40IDEzIDIxLjggMTQuMSAyMS44IDE1LjVWMTdNMjAuNSAxN1YxNS41QzIwLjUgMTQuNyAxOS44IDE0LjIgMTkgMTQuMkMxOC4yIDE0LjIgMTcuNSAxNC43IDE3LjUgMTUuNVYxN0gyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1UZXh0Ym94UGFzc3dvcmQgPSBcIk0xNyw3SDIyVjE3SDE3VjE5QTEsMSAwIDAsMCAxOCwyMEgyMFYyMkgxNy41QzE2Ljk1LDIyIDE2LDIxLjU1IDE2LDIxQzE2LDIxLjU1IDE1LjA1LDIyIDE0LjUsMjJIMTJWMjBIMTRBMSwxIDAgMCwwIDE1LDE5VjVBMSwxIDAgMCwwIDE0LDRIMTJWMkgxNC41QzE1LjA1LDIgMTYsMi40NSAxNiwzQzE2LDIuNDUgMTYuOTUsMiAxNy41LDJIMjBWNEgxOEExLDEgMCAwLDAgMTcsNVY3TTIsN0gxM1Y5SDRWMTVIMTNWMTdIMlY3TTIwLDE1VjlIMTdWMTVIMjBNOC41LDEyQTEuNSwxLjUgMCAwLDAgNywxMC41QTEuNSwxLjUgMCAwLDAgNS41LDEyQTEuNSwxLjUgMCAwLDAgNywxMy41QTEuNSwxLjUgMCAwLDAgOC41LDEyTTEzLDEwLjg5QzEyLjM5LDEwLjMzIDExLjQ0LDEwLjM4IDEwLjg4LDExQzEwLjMyLDExLjYgMTAuMzcsMTIuNTUgMTEsMTMuMTFDMTEuNTUsMTMuNjMgMTIuNDMsMTMuNjMgMTMsMTMuMTFWMTAuODlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QWxpZ25Cb3R0b20gPSBcIk0xMyw5TDE1LjUsNi41TDE2LjkyLDcuOTJMMTIsMTIuODRMNy4wOCw3LjkyTDguNSw2LjVMMTEsOVYzSDEzVjlNMywxNUgyMVYxN0gzVjE1TTMsMTlIMTNWMjFIM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRBbGlnbkNlbnRlciA9IFwiTTMsM0gyMVY1SDNWM003LDdIMTdWOUg3VjdNMywxMUgyMVYxM0gzVjExTTcsMTVIMTdWMTdIN1YxNU0zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QWxpZ25KdXN0aWZ5ID0gXCJNMywzSDIxVjVIM1YzTTMsN0gyMVY5SDNWN00zLDExSDIxVjEzSDNWMTFNMywxNUgyMVYxN0gzVjE1TTMsMTlIMjFWMjFIM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRBbGlnbkxlZnQgPSBcIk0zLDNIMjFWNUgzVjNNMyw3SDE1VjlIM1Y3TTMsMTFIMjFWMTNIM1YxMU0zLDE1SDE1VjE3SDNWMTVNMywxOUgyMVYyMUgzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEFsaWduTWlkZGxlID0gXCJNMTMsNkwxNSw0TDE2LjQyLDUuNDJMMTIsOS44NEw3LjU4LDUuNDJMOSw0TDExLDZWMkgxM1Y2TTMsMTFIMjFWMTNIM1YxMU0xMywxOFYyMkgxMVYxOEw5LDIwTDcuNTgsMTguNThMMTIsMTQuMTZMMTYuNDIsMTguNThMMTUsMjBMMTMsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QWxpZ25SaWdodCA9IFwiTTMsM0gyMVY1SDNWM005LDdIMjFWOUg5VjdNMywxMUgyMVYxM0gzVjExTTksMTVIMjFWMTdIOVYxNU0zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QWxpZ25Ub3AgPSBcIk0xMywxNUwxNS41LDE3LjVMMTYuOTIsMTYuMDhMMTIsMTEuMTZMNy4wOCwxNi4wOEw4LjUsMTcuNUwxMSwxNVYyMUgxM1YxNU0zLDNIMjFWNUgzVjNNMyw3SDEzVjlIM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEFubm90YXRpb25NaW51cyA9IFwiTTEwLjUsN0g4LjVMMywyMUg1LjJMNi4zLDE4SDEyLjVMMTMuNiwyMUgxNkwxMC41LDdNNy4xLDE2TDkuNSw5LjdMMTEuOSwxNkg3LjFNMjIsN0gxNFY1SDIyVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QW5ub3RhdGlvblBsdXMgPSBcIk04LjUsN0gxMC41TDE2LDIxSDEzLjZMMTIuNSwxOEg2LjNMNS4yLDIxSDNMOC41LDdNNy4xLDE2SDExLjlMOS41LDkuN0w3LjEsMTZNMjIsNVY3SDE5VjEwSDE3VjdIMTRWNUgxN1YySDE5VjVIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0Qm9sZCA9IFwiTTEzLjUsMTUuNUgxMFYxMi41SDEzLjVBMS41LDEuNSAwIDAsMSAxNSwxNEExLjUsMS41IDAgMCwxIDEzLjUsMTUuNU0xMCw2LjVIMTNBMS41LDEuNSAwIDAsMSAxNC41LDhBMS41LDEuNSAwIDAsMSAxMyw5LjVIMTBNMTUuNiwxMC43OUMxNi41NywxMC4xMSAxNy4yNSw5IDE3LjI1LDhDMTcuMjUsNS43NCAxNS41LDQgMTMuMjUsNEg3VjE4SDE0LjA0QzE2LjE0LDE4IDE3Ljc1LDE2LjMgMTcuNzUsMTQuMjFDMTcuNzUsMTIuNjkgMTYuODksMTEuMzkgMTUuNiwxMC43OVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRDbGVhciA9IFwiTTYsNVY1LjE4TDguODIsOEgxMS4yMkwxMC41LDkuNjhMMTIuNiwxMS43OEwxNC4yMSw4SDIwVjVINk0zLjI3LDVMMiw2LjI3TDguOTcsMTMuMjRMNi41LDE5SDkuNUwxMS4wNywxNS4zNEwxNi43MywyMUwxOCwxOS43M0wzLjU1LDUuMjdMMy4yNyw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbG9yRmlsbCA9IFwiTTE5LDExLjVDMTksMTEuNSAxNywxMy42NyAxNywxNUEyLDIgMCAwLDAgMTksMTdBMiwyIDAgMCwwIDIxLDE1QzIxLDEzLjY3IDE5LDExLjUgMTksMTEuNU01LjIxLDEwTDEwLDUuMjFMMTQuNzksMTBNMTYuNTYsOC45NEw3LjYyLDBMNi4yMSwxLjQxTDguNTksMy43OUwzLjQ0LDguOTRDMi44NSw5LjUgMi44NSwxMC40NyAzLjQ0LDExLjA2TDguOTQsMTYuNTZDOS4yMywxNi44NSA5LjYyLDE3IDEwLDE3QzEwLjM4LDE3IDEwLjc3LDE2Ljg1IDExLjA2LDE2LjU2TDE2LjU2LDExLjA2QzE3LjE1LDEwLjQ3IDE3LjE1LDkuNSAxNi41Niw4Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbG9ySGlnaGxpZ2h0ID0gXCJNNCwxN0w2Ljc1LDE0LjI1TDYuNzIsMTQuMjNDNi4xNCwxMy42NCA2LjE0LDEyLjY5IDYuNzIsMTIuMTFMMTEuNDYsNy4zN0wxNS43LDExLjYxTDEwLjk2LDE2LjM1QzEwLjM5LDE2LjkzIDkuNDYsMTYuOTMgOC44NywxNi4zN0w4LjI0LDE3SDRNMTUuOTEsMi45MUMxNi41LDIuMzMgMTcuNDUsMi4zMyAxOC4wMywyLjkxTDIwLjE2LDUuMDNDMjAuNzQsNS42MiAyMC43NCw2LjU3IDIwLjE2LDcuMTZMMTYuODYsMTAuNDVMMTIuNjIsNi4yMUwxNS45MSwyLjkxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbG9yTWFya2VyQ2FuY2VsID0gXCJNMTYuNSA4QzE0IDggMTIgMTAgMTIgMTIuNVMxNCAxNyAxNi41IDE3IDIxIDE1IDIxIDEyLjUgMTkgOCAxNi41IDhNMTYuNSAxNS41QzE0LjggMTUuNSAxMy41IDE0LjIgMTMuNSAxMi41QzEzLjUgMTEuOSAxMy43IDExLjQgMTMuOSAxMUwxOCAxNS4xQzE3LjYgMTUuMyAxNy4xIDE1LjUgMTYuNSAxNS41TTE5LjEgMTRMMTUgOS45QzE1LjQgOS42IDE1LjkgOS41IDE2LjUgOS41QzE4LjIgOS41IDE5LjUgMTAuOCAxOS41IDEyLjVDMTkuNSAxMy4xIDE5LjMgMTMuNiAxOS4xIDE0TTEyLjEgNy43TDEwLjYgNi4yTDEzLjkgMi45QzE0LjUgMi4zIDE1LjQgMi4zIDE2IDIuOUwxOC4yIDVDMTguNiA1LjQgMTguNyA1LjggMTguNiA2LjNDMTggNi4xIDE3LjMgNiAxNi42IDZDMTQuOCA2IDEzLjMgNi43IDEyLjEgNy43TTEwLjUgMTQuOUw5IDE2LjNDOC40IDE2LjkgNy41IDE2LjkgNi45IDE2LjNMNi4yIDE3SDJMNC44IDE0LjJDNC4yIDEzLjYgNC4yIDEyLjcgNC44IDEyLjFMOS41IDcuNEwxMS4xIDlDMTAuNCAxMCAxMCAxMS4yIDEwIDEyLjVDMTAgMTMuMyAxMC4yIDE0LjEgMTAuNSAxNC45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbG9yVGV4dCA9IFwiTTkuNjIsMTJMMTIsNS42N0wxNC4zNywxMk0xMSwzTDUuNSwxN0g3Ljc1TDguODcsMTRIMTUuMTJMMTYuMjUsMTdIMTguNUwxMywzSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbHVtbnMgPSBcIk0zLDNIMTFWNUgzVjNNMTMsM0gyMVY1SDEzVjNNMyw3SDExVjlIM1Y3TTEzLDdIMjFWOUgxM1Y3TTMsMTFIMTFWMTNIM1YxMU0xMywxMUgyMVYxM0gxM1YxMU0zLDE1SDExVjE3SDNWMTVNMTMsMTVIMjFWMTdIMTNWMTVNMywxOUgxMVYyMUgzVjE5TTEzLDE5SDIxVjIxSDEzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEZsb2F0Q2VudGVyID0gXCJNOSw3SDE1VjEzSDlWN00zLDNIMjFWNUgzVjNNMywxNUgyMVYxN0gzVjE1TTMsMTlIMTdWMjFIM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRGbG9hdExlZnQgPSBcIk0zLDdIOVYxM0gzVjdNMywzSDIxVjVIM1YzTTIxLDdWOUgxMVY3SDIxTTIxLDExVjEzSDExVjExSDIxTTMsMTVIMTdWMTdIM1YxNU0zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0RmxvYXROb25lID0gXCJNMyw3SDlWMTNIM1Y3TTMsM0gyMVY1SDNWM00yMSwxMVYxM0gxMVYxMUgyMU0zLDE1SDE3VjE3SDNWMTVNMywxOUgyMVYyMUgzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEZsb2F0UmlnaHQgPSBcIk0xNSw3SDIxVjEzSDE1VjdNMywzSDIxVjVIM1YzTTEzLDdWOUgzVjdIMTNNOSwxMVYxM0gzVjExSDlNMywxNUgxN1YxN0gzVjE1TTMsMTlIMjFWMjFIM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRGb250ID0gXCJNMTcsOEgyMFYyMEgyMVYyMUgxN1YyMEgxOFYxN0gxNEwxMi41LDIwSDE0VjIxSDEwVjIwSDExTDE3LDhNMTgsOUwxNC41LDE2SDE4VjlNNSwzSDEwQzExLjExLDMgMTIsMy44OSAxMiw1VjE2SDlWMTFINlYxNkgzVjVDMywzLjg5IDMuODksMyA1LDNNNiw1VjlIOVY1SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0Rm9udFNpemVEZWNyZWFzZSA9IFwiTTUuMTIsMTRMNy41LDcuNjdMOS44NywxNE02LjUsNUwxLDE5SDMuMjVMNC4zNywxNkgxMC42MkwxMS43NSwxOUgxNEw4LjUsNUg2LjVNMTgsMTdMMjMsMTEuOTNMMjEuNTksMTAuNUwxOSwxMy4xVjdIMTdWMTMuMUwxNC40MSwxMC41TDEzLDExLjkzTDE4LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEZvbnRTaXplSW5jcmVhc2UgPSBcIk01LjEyLDE0TDcuNSw3LjY3TDkuODcsMTRNNi41LDVMMSwxOUgzLjI1TDQuMzcsMTZIMTAuNjJMMTEuNzUsMTlIMTRMOC41LDVINi41TTE4LDdMMTMsMTIuMDdMMTQuNDEsMTMuNUwxNywxMC45VjE3SDE5VjEwLjlMMjEuNTksMTMuNUwyMywxMi4wN0wxOCw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEhlYWRlcjEgPSBcIk0zLDRINVYxMEg5VjRIMTFWMThIOVYxMkg1VjE4SDNWNE0xNCwxOFYxNkgxNlY2LjMxTDEzLjUsNy43NVY1LjQ0TDE2LDRIMThWMTZIMjBWMThIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SGVhZGVyMiA9IFwiTTMsNEg1VjEwSDlWNEgxMVYxOEg5VjEySDVWMThIM1Y0TTIxLDE4SDE1QTIsMiAwIDAsMSAxMywxNkMxMywxNS40NyAxMy4yLDE1IDEzLjU0LDE0LjY0TDE4LjQxLDkuNDFDMTguNzgsOS4wNSAxOSw4LjU1IDE5LDhBMiwyIDAgMCwwIDE3LDZBMiwyIDAgMCwwIDE1LDhIMTNBNCw0IDAgMCwxIDE3LDRBNCw0IDAgMCwxIDIxLDhDMjEsOS4xIDIwLjU1LDEwLjEgMTkuODMsMTAuODNMMTUsMTZIMjFWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SGVhZGVyMyA9IFwiTTMsNEg1VjEwSDlWNEgxMVYxOEg5VjEySDVWMThIM1Y0TTE1LDRIMTlBMiwyIDAgMCwxIDIxLDZWMTZBMiwyIDAgMCwxIDE5LDE4SDE1QTIsMiAwIDAsMSAxMywxNlYxNUgxNVYxNkgxOVYxMkgxNVYxMEgxOVY2SDE1VjdIMTNWNkEyLDIgMCAwLDEgMTUsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRIZWFkZXI0ID0gXCJNMyw0SDVWMTBIOVY0SDExVjE4SDlWMTJINVYxOEgzVjRNMTgsMThWMTNIMTNWMTFMMTgsNEgyMFYxMUgyMVYxM0gyMFYxOEgxOE0xOCwxMVY3LjQyTDE1LjQ1LDExSDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEhlYWRlcjUgPSBcIk0zLDRINVYxMEg5VjRIMTFWMThIOVYxMkg1VjE4SDNWNE0xNSw0SDIwVjZIMTVWMTBIMTdBNCw0IDAgMCwxIDIxLDE0QTQsNCAwIDAsMSAxNywxOEgxNUEyLDIgMCAwLDEgMTMsMTZWMTVIMTVWMTZIMTdBMiwyIDAgMCwwIDE5LDE0QTIsMiAwIDAsMCAxNywxMkgxNUEyLDIgMCAwLDEgMTMsMTBWNkEyLDIgMCAwLDEgMTUsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRIZWFkZXI2ID0gXCJNMyw0SDVWMTBIOVY0SDExVjE4SDlWMTJINVYxOEgzVjRNMTUsNEgxOUEyLDIgMCAwLDEgMjEsNlY3SDE5VjZIMTVWMTBIMTlBMiwyIDAgMCwxIDIxLDEyVjE2QTIsMiAwIDAsMSAxOSwxOEgxNUEyLDIgMCAwLDEgMTMsMTZWNkEyLDIgMCAwLDEgMTUsNE0xNSwxMlYxNkgxOVYxMkgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRIZWFkZXJEZWNyZWFzZSA9IFwiTTQsNEg2VjEwSDEwVjRIMTJWMThIMTBWMTJINlYxOEg0VjRNMjAuNDIsNy40MUwxNi44MywxMUwyMC40MiwxNC41OUwxOSwxNkwxNCwxMUwxOSw2TDIwLjQyLDcuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SGVhZGVyRXF1YWwgPSBcIk00LDRINlYxMEgxMFY0SDEyVjE4SDEwVjEySDZWMThINFY0TTE0LDEwVjhIMjFWMTBIMTRNMTQsMTJIMjFWMTRIMTRWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SGVhZGVySW5jcmVhc2UgPSBcIk00LDRINlYxMEgxMFY0SDEyVjE4SDEwVjEySDZWMThINFY0TTE0LjU5LDcuNDFMMTguMTcsMTFMMTQuNTksMTQuNTlMMTYsMTZMMjEsMTFMMTYsNkwxNC41OSw3LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEhlYWRlclBvdW5kID0gXCJNMyw0SDVWMTBIOVY0SDExVjE4SDlWMTJINVYxOEgzVjRNMTMsOEgxNS4zMUwxNS42Myw1SDE3LjYzTDE3LjMxLDhIMTkuMzFMMTkuNjMsNUgyMS42M0wyMS4zMSw4SDIzVjEwSDIxLjFMMjAuOSwxMkgyM1YxNEgyMC42OUwyMC4zNywxN0gxOC4zN0wxOC42OSwxNEgxNi42OUwxNi4zNywxN0gxNC4zN0wxNC42OSwxNEgxM1YxMkgxNC45TDE1LjEsMTBIMTNWOE0xNy4xLDEwTDE2LjksMTJIMTguOUwxOS4xLDEwSDE3LjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SG9yaXpvbnRhbEFsaWduQ2VudGVyID0gXCJNMTksMTZWMTNIMjNWMTFIMTlWOEwxNSwxMkwxOSwxNk01LDhWMTFIMVYxM0g1VjE2TDksMTJMNSw4TTExLDIwSDEzVjRIMTFWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SG9yaXpvbnRhbEFsaWduTGVmdCA9IFwiTTExLDE2VjEzSDIxVjExSDExVjhMNywxMkwxMSwxNk0zLDIwSDVWNEgzVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEhvcml6b250YWxBbGlnblJpZ2h0ID0gXCJNMTMsOFYxMUgzVjEzSDEzVjE2TDE3LDEyTDEzLDhNMTksMjBIMjFWNEgxOVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRJbmRlbnREZWNyZWFzZSA9IFwiTTExLDEzSDIxVjExSDExTTExLDlIMjFWN0gxMU0zLDNWNUgyMVYzTTMsMjFIMjFWMTlIM00zLDEyTDcsMTZWOE0xMSwxN0gyMVYxNUgxMVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRJbmRlbnRJbmNyZWFzZSA9IFwiTTExLDEzSDIxVjExSDExTTExLDlIMjFWN0gxMU0zLDNWNUgyMVYzTTExLDE3SDIxVjE1SDExTTMsOFYxNkw3LDEyTTMsMjFIMjFWMTlIM1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRJdGFsaWMgPSBcIk0xMCw0VjdIMTIuMjFMOC43OSwxNUg2VjE4SDE0VjE1SDExLjc5TDE1LjIxLDdIMThWNEgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRMZXR0ZXJDYXNlID0gXCJNMjAuMDYsMThDMjAsMTcuODMgMTkuOTEsMTcuNTQgMTkuODYsMTcuMTFDMTkuMTksMTcuODEgMTguMzgsMTguMTYgMTcuNDUsMTguMTZDMTYuNjIsMTguMTYgMTUuOTMsMTcuOTIgMTUuNCwxNy40NUMxNC44NywxNyAxNC42LDE2LjM5IDE0LjYsMTUuNjZDMTQuNiwxNC43OCAxNC45MywxNC4xIDE1LjYsMTMuNjFDMTYuMjcsMTMuMTIgMTcuMjEsMTIuODggMTguNDMsMTIuODhIMTkuODNWMTIuMjRDMTkuODMsMTEuNzUgMTkuNjgsMTEuMzYgMTkuMzgsMTEuMDdDMTkuMDgsMTAuNzggMTguNjMsMTAuNjQgMTguMDUsMTAuNjRDMTcuNTMsMTAuNjQgMTcuMSwxMC43NiAxNi43NSwxMUMxNi40LDExLjI1IDE2LjIzLDExLjU0IDE2LjIzLDExLjg5SDE0Ljc3QzE0Ljc3LDExLjQ2IDE0LjkyLDExLjA1IDE1LjIyLDEwLjY1QzE1LjUsMTAuMjUgMTUuOTMsOS45NCAxNi40NCw5LjcxQzE2Ljk1LDkuNSAxNy41LDkuMzYgMTguMTMsOS4zNkMxOS4xMSw5LjM2IDE5Ljg3LDkuNiAyMC40MiwxMC4wOUMyMC45NywxMC41OCAyMS4yNiwxMS4yNSAyMS4yOCwxMi4xMVYxNkMyMS4yOCwxNi44IDIxLjM4LDE3LjQyIDIxLjU4LDE3Ljg4VjE4SDIwLjA2TTE3LjY2LDE2Ljg4QzE4LjExLDE2Ljg4IDE4LjU0LDE2Ljc3IDE4Ljk1LDE2LjU2QzE5LjM1LDE2LjM1IDE5LjY1LDE2LjA3IDE5LjgzLDE1LjczVjE0LjE2SDE4LjdDMTYuOTMsMTQuMTYgMTYuMDQsMTQuNjMgMTYuMDQsMTUuNTdDMTYuMDQsMTYgMTYuMTksMTYuMyAxNi41LDE2LjUzQzE2LjgsMTYuNzYgMTcuMTgsMTYuODggMTcuNjYsMTYuODhNNS40NiwxMy43MUg5LjUzTDcuNSw4LjI5TDUuNDYsMTMuNzFNNi42NCw2SDguMzZMMTMuMDcsMThIMTEuMTRMMTAuMTcsMTUuNDNINC44MkwzLjg2LDE4SDEuOTNMNi42NCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExldHRlckNhc2VMb3dlciA9IFwiTTIwLjA2LDE4QzIwLDE3LjgzIDE5LjkxLDE3LjU0IDE5Ljg2LDE3LjExQzE5LjE5LDE3LjgxIDE4LjM4LDE4LjE2IDE3LjQ1LDE4LjE2QzE2LjYyLDE4LjE2IDE1LjkzLDE3LjkyIDE1LjQsMTcuNDVDMTQuODcsMTcgMTQuNiwxNi4zOSAxNC42LDE1LjY2QzE0LjYsMTQuNzggMTQuOTMsMTQuMSAxNS42LDEzLjYxQzE2LjI3LDEzLjEyIDE3LjIxLDEyLjg4IDE4LjQzLDEyLjg4SDE5LjgzVjEyLjI0QzE5LjgzLDExLjc1IDE5LjY4LDExLjM2IDE5LjM4LDExLjA3QzE5LjA4LDEwLjc4IDE4LjYzLDEwLjY0IDE4LjA1LDEwLjY0QzE3LjUzLDEwLjY0IDE3LjEsMTAuNzYgMTYuNzUsMTFDMTYuNCwxMS4yNSAxNi4yMywxMS41NCAxNi4yMywxMS44OUgxNC43N0MxNC43NywxMS40NiAxNC45MiwxMS4wNSAxNS4yMiwxMC42NUMxNS41LDEwLjI1IDE1LjkzLDkuOTQgMTYuNDQsOS43MUMxNi45NSw5LjUgMTcuNSw5LjM2IDE4LjEzLDkuMzZDMTkuMTEsOS4zNiAxOS44Nyw5LjYgMjAuNDIsMTAuMDlDMjAuOTcsMTAuNTggMjEuMjYsMTEuMjUgMjEuMjgsMTIuMTFWMTZDMjEuMjgsMTYuOCAyMS4zOCwxNy40MiAyMS41OCwxNy44OFYxOEgyMC4wNk0xNy42NiwxNi44OEMxOC4xMSwxNi44OCAxOC41NCwxNi43NyAxOC45NSwxNi41NkMxOS4zNSwxNi4zNSAxOS42NSwxNi4wNyAxOS44MywxNS43M1YxNC4xNkgxOC43QzE2LjkzLDE0LjE2IDE2LjA0LDE0LjYzIDE2LjA0LDE1LjU3QzE2LjA0LDE2IDE2LjE5LDE2LjMgMTYuNSwxNi41M0MxNi44LDE2Ljc2IDE3LjE4LDE2Ljg4IDE3LjY2LDE2Ljg4TTUuNDYsMTMuNzFIOS41M0w3LjUsOC4yOUw1LjQ2LDEzLjcxTTYuNjQsNkg4LjM2TDEzLjA3LDE4SDExLjE0TDEwLjE3LDE1LjQzSDQuODJMMy44NiwxOEgxLjkzTDYuNjQsNk0yMiwyMFYyMkgxNC41VjIwSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExldHRlckNhc2VVcHBlciA9IFwiTTIwLjA2LDE4QzIwLDE3LjgzIDE5LjkxLDE3LjU0IDE5Ljg2LDE3LjExQzE5LjE5LDE3LjgxIDE4LjM4LDE4LjE2IDE3LjQ1LDE4LjE2QzE2LjYyLDE4LjE2IDE1LjkzLDE3LjkyIDE1LjQsMTcuNDVDMTQuODcsMTcgMTQuNiwxNi4zOSAxNC42LDE1LjY2QzE0LjYsMTQuNzggMTQuOTMsMTQuMSAxNS42LDEzLjYxQzE2LjI3LDEzLjEyIDE3LjIxLDEyLjg4IDE4LjQzLDEyLjg4SDE5LjgzVjEyLjI0QzE5LjgzLDExLjc1IDE5LjY4LDExLjM2IDE5LjM4LDExLjA3QzE5LjA4LDEwLjc4IDE4LjYzLDEwLjY0IDE4LjA1LDEwLjY0QzE3LjUzLDEwLjY0IDE3LjEsMTAuNzYgMTYuNzUsMTFDMTYuNCwxMS4yNSAxNi4yMywxMS41NCAxNi4yMywxMS44OUgxNC43N0MxNC43NywxMS40NiAxNC45MiwxMS4wNSAxNS4yMiwxMC42NUMxNS41LDEwLjI1IDE1LjkzLDkuOTQgMTYuNDQsOS43MUMxNi45NSw5LjUgMTcuNSw5LjM2IDE4LjEzLDkuMzZDMTkuMTEsOS4zNiAxOS44Nyw5LjYgMjAuNDIsMTAuMDlDMjAuOTcsMTAuNTggMjEuMjYsMTEuMjUgMjEuMjgsMTIuMTFWMTZDMjEuMjgsMTYuOCAyMS4zOCwxNy40MiAyMS41OCwxNy44OFYxOEgyMC4wNk0xNy42NiwxNi44OEMxOC4xMSwxNi44OCAxOC41NCwxNi43NyAxOC45NSwxNi41NkMxOS4zNSwxNi4zNSAxOS42NSwxNi4wNyAxOS44MywxNS43M1YxNC4xNkgxOC43QzE2LjkzLDE0LjE2IDE2LjA0LDE0LjYzIDE2LjA0LDE1LjU3QzE2LjA0LDE2IDE2LjE5LDE2LjMgMTYuNSwxNi41M0MxNi44LDE2Ljc2IDE3LjE4LDE2Ljg4IDE3LjY2LDE2Ljg4TTUuNDYsMTMuNzFIOS41M0w3LjUsOC4yOUw1LjQ2LDEzLjcxTTYuNjQsNkg4LjM2TDEzLjA3LDE4SDExLjE0TDEwLjE3LDE1LjQzSDQuODJMMy44NiwxOEgxLjkzTDYuNjQsNk0yLDIwSDEzVjIySDJWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGV0dGVyRW5kc1dpdGggPSBcIk0xMS4xNCA0TDYuNDMgMTZIOC4zNkw5LjMyIDEzLjQzSDE0LjY3TDE1LjY0IDE2SDE3LjU3TDEyLjg2IDRNMTIgNi4yOUwxNC4wMyAxMS43MUg5Ljk2TTIwIDE0VjE4SDJWMjBIMjJWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGV0dGVyTWF0Y2hlcyA9IFwiTTExLjE0IDRMNi40MyAxNkg4LjM2TDkuMzIgMTMuNDNIMTQuNjdMMTUuNjQgMTZIMTcuNTdMMTIuODYgNE0xMiA2LjI5TDE0LjAzIDExLjcxSDkuOTZNMjAgMTRWMThINFYxNUgyVjIwSDIyVjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExldHRlclN0YXJ0c1dpdGggPSBcIk0xMS4xNCA0TDYuNDMgMTZIOC4zNkw5LjMyIDEzLjQzSDE0LjY3TDE1LjY0IDE2SDE3LjU3TDEyLjg2IDRNMTIgNi4yOUwxNC4wMyAxMS43MUg5Ljk2TTQgMThWMTVIMlYyMEgyMlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRMaW5lU3BhY2luZyA9IFwiTTEwLDEzSDIyVjExSDEwTTEwLDE5SDIyVjE3SDEwTTEwLDdIMjJWNUgxME02LDdIOC41TDUsMy41TDEuNSw3SDRWMTdIMS41TDUsMjAuNUw4LjUsMTdINlY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExpbmVTdHlsZSA9IFwiTTMsMTZIOFYxNEgzVjE2TTkuNSwxNkgxNC41VjE0SDkuNVYxNk0xNiwxNkgyMVYxNEgxNlYxNk0zLDIwSDVWMThIM1YyME03LDIwSDlWMThIN1YyME0xMSwyMEgxM1YxOEgxMVYyME0xNSwyMEgxN1YxOEgxNVYyME0xOSwyMEgyMVYxOEgxOVYyME0zLDEySDExVjEwSDNWMTJNMTMsMTJIMjFWMTBIMTNWMTJNMyw0VjhIMjFWNEgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExpbmVXZWlnaHQgPSBcIk0zLDE3SDIxVjE1SDNWMTdNMywyMEgyMVYxOUgzVjIwTTMsMTNIMjFWMTBIM1YxM00zLDRWOEgyMVY0SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdEJ1bGxldGVkID0gXCJNNyw1SDIxVjdIN1Y1TTcsMTNWMTFIMjFWMTNIN000LDQuNUExLjUsMS41IDAgMCwxIDUuNSw2QTEuNSwxLjUgMCAwLDEgNCw3LjVBMS41LDEuNSAwIDAsMSAyLjUsNkExLjUsMS41IDAgMCwxIDQsNC41TTQsMTAuNUExLjUsMS41IDAgMCwxIDUuNSwxMkExLjUsMS41IDAgMCwxIDQsMTMuNUExLjUsMS41IDAgMCwxIDIuNSwxMkExLjUsMS41IDAgMCwxIDQsMTAuNU03LDE5VjE3SDIxVjE5SDdNNCwxNi41QTEuNSwxLjUgMCAwLDEgNS41LDE4QTEuNSwxLjUgMCAwLDEgNCwxOS41QTEuNSwxLjUgMCAwLDEgMi41LDE4QTEuNSwxLjUgMCAwLDEgNCwxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExpc3RCdWxsZXRlZFNxdWFyZSA9IFwiTTMsNEg3VjhIM1Y0TTksNVY3SDIxVjVIOU0zLDEwSDdWMTRIM1YxME05LDExVjEzSDIxVjExSDlNMywxNkg3VjIwSDNWMTZNOSwxN1YxOUgyMVYxN0g5XCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdEJ1bGxldGVkVHJpYW5nbGUgPSBcIk01LDE1LjVMNy41LDIwSDIuNUw1LDE1LjVNOSwxOUgyMVYxN0g5VjE5TTUsOS41TDcuNSwxNEgyLjVMNSw5LjVNOSwxM0gyMVYxMUg5VjEzTTUsMy41TDcuNSw4SDIuNUw1LDMuNU05LDdIMjFWNUg5VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdEJ1bGxldGVkVHlwZSA9IFwiTTUsOS41TDcuNSwxNEgyLjVMNSw5LjVNMyw0SDdWOEgzVjRNNSwyMEEyLDIgMCAwLDAgNywxOEEyLDIgMCAwLDAgNSwxNkEyLDIgMCAwLDAgMywxOEEyLDIgMCAwLDAgNSwyME05LDVWN0gyMVY1SDlNOSwxOUgyMVYxN0g5VjE5TTksMTNIMjFWMTFIOVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRMaXN0Q2hlY2tib3ggPSBcIk0yMSwxOVYxN0g4VjE5SDIxTTIxLDEzVjExSDhWMTNIMjFNOCw3SDIxVjVIOFY3TTQsNVY3SDZWNUg0TTMsNUExLDEgMCAwLDEgNCw0SDZBMSwxIDAgMCwxIDcsNVY3QTEsMSAwIDAsMSA2LDhINEExLDEgMCAwLDEgMyw3VjVNNCwxMVYxM0g2VjExSDRNMywxMUExLDEgMCAwLDEgNCwxMEg2QTEsMSAwIDAsMSA3LDExVjEzQTEsMSAwIDAsMSA2LDE0SDRBMSwxIDAgMCwxIDMsMTNWMTFNNCwxN1YxOUg2VjE3SDRNMywxN0ExLDEgMCAwLDEgNCwxNkg2QTEsMSAwIDAsMSA3LDE3VjE5QTEsMSAwIDAsMSA2LDIwSDRBMSwxIDAgMCwxIDMsMTlWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdENoZWNrcyA9IFwiTTMsNUg5VjExSDNWNU01LDdWOUg3VjdINU0xMSw3SDIxVjlIMTFWN00xMSwxNUgyMVYxN0gxMVYxNU01LDIwTDEuNSwxNi41TDIuOTEsMTUuMDlMNSwxNy4xN0w5LjU5LDEyLjU5TDExLDE0TDUsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdE51bWJlcmVkID0gXCJNNywxM1YxMUgyMVYxM0g3TTcsMTlWMTdIMjFWMTlIN003LDdWNUgyMVY3SDdNMyw4VjVIMlY0SDRWOEgzTTIsMTdWMTZINVYyMEgyVjE5SDRWMTguNUgzVjE3LjVINFYxN0gyTTQuMjUsMTBBMC43NSwwLjc1IDAgMCwxIDUsMTAuNzVDNSwxMC45NSA0LjkyLDExLjE0IDQuNzksMTEuMjdMMy4xMiwxM0g1VjE0SDJWMTMuMDhMNCwxMUgyVjEwSDQuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdE51bWJlcmVkUnRsID0gXCJNMywxM1YxMUgxN1YxM0gzTTMsMTlWMTdIMTdWMTlIM00zLDdWNUgxN1Y3SDNNMjAsOFY1SDE5VjRIMjFWOEgyME0xOSwxN1YxNkgyMlYyMEgxOVYxOUgyMVYxOC41SDIwVjE3LjVIMjFWMTdIMTlNMjEuMjUsMTBDMjEuNjcsMTAgMjIsMTAuMzQgMjIsMTAuNzVDMjIsMTAuOTUgMjEuOTIsMTEuMTQgMjEuNzksMTEuMjdMMjAuMTIsMTNIMjJWMTRIMTlWMTMuMDhMMjEsMTFIMTlWMTBIMjEuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdFRleHQgPSBcIk0yIDE0SDhWMjBIMk0xNiA4SDEwVjEwSDE2TTIgMTBIOFY0SDJNMTAgNFY2SDIyVjRNMTAgMjBIMTZWMThIMTBNMTAgMTZIMjJWMTRIMTBcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRPdmVybGluZSA9IFwiTTUsNUgxOVYzSDVWNU05LjYyLDE2TDEyLDkuNjdMMTQuMzcsMTZNMTEsN0w1LjUsMjFINy43NUw4Ljg3LDE4SDE1LjEyTDE2LjI1LDIxSDE4LjVMMTMsN0gxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRQYWdlQnJlYWsgPSBcIk0xOCwyMEg2VjE4SDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjE4SDE4VjIwTTE0LDJINkEyLDIgMCAwLDAgNCw0VjEySDZWNEgxNFY4SDE4VjEySDIwVjhMMTQsMk0xMSwxNkg4VjE0SDExVjE2TTE2LDE2SDEzVjE0SDE2VjE2TTMsMTRINlYxNkgzVjE0TTIxLDE2SDE4VjE0SDIxVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFBhaW50ID0gXCJNMTgsNFYzQTEsMSAwIDAsMCAxNywySDVBMSwxIDAgMCwwIDQsM1Y3QTEsMSAwIDAsMCA1LDhIMTdBMSwxIDAgMCwwIDE4LDdWNkgxOVYxMEg5VjIxQTEsMSAwIDAsMCAxMCwyMkgxMkExLDEgMCAwLDAgMTMsMjFWMTJIMjFWNEgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRQYXJhZ3JhcGggPSBcIk0xMyw0QTQsNCAwIDAsMSAxNyw4QTQsNCAwIDAsMSAxMywxMkgxMVYxOEg5VjRIMTNNMTMsMTBBMiwyIDAgMCwwIDE1LDhBMiwyIDAgMCwwIDEzLDZIMTFWMTBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0UGlsY3JvdyA9IFwiTTEwLDExQTQsNCAwIDAsMSA2LDdBNCw0IDAgMCwxIDEwLDNIMThWNUgxNlYyMUgxNFY1SDEyVjIxSDEwVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFF1b3RlQ2xvc2UgPSBcIk0xNCwxN0gxN0wxOSwxM1Y3SDEzVjEzSDE2TTYsMTdIOUwxMSwxM1Y3SDVWMTNIOEw2LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFF1b3RlQ2xvc2VPdXRsaW5lID0gXCJNMTMgNlYxNEgxNC44OEwxMi44OCAxOEgxOC42MkwyMSAxMy4yNFY2TTE1IDhIMTlWMTIuNzZMMTcuMzggMTZIMTYuMTJMMTguMTIgMTJIMTVNMyA2VjE0SDQuODhMMi44OCAxOEg4LjYyTDExIDEzLjI0VjZNNSA4SDlWMTIuNzZMNy4zOCAxNkg2LjEyTDguMTIgMTJINVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRRdW90ZU9wZW4gPSBcIk0xMCw3TDgsMTFIMTFWMTdINVYxMUw3LDdIMTBNMTgsN0wxNiwxMUgxOVYxN0gxM1YxMUwxNSw3SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFF1b3RlT3Blbk91dGxpbmUgPSBcIk0xMSAxOFYxMEg5LjEyTDExLjEyIDZINS4zOEwzIDEwLjc2VjE4TTkgMTZINVYxMS4yNEw2LjYyIDhINy44OEw1Ljg4IDEySDlNMjEgMThWMTBIMTkuMTJMMjEuMTIgNkgxNS4zOEwxMyAxMC43NlYxOE0xOSAxNkgxNVYxMS4yNEwxNi42MiA4SDE3Ljg4TDE1Ljg4IDEySDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFJvdGF0ZTkwID0gXCJNNy4zNCw2LjQxTDAuODYsMTIuOUw3LjM1LDE5LjM4TDEzLjg0LDEyLjlMNy4zNCw2LjQxTTMuNjksMTIuOUw3LjM1LDkuMjRMMTEsMTIuOUw3LjM0LDE2LjU2TDMuNjksMTIuOU0xOS4zNiw2LjY0QzE3LjYxLDQuODggMTUuMyw0IDEzLDRWMC43Nkw4Ljc2LDVMMTMsOS4yNFY2QzE0Ljc5LDYgMTYuNTgsNi42OCAxNy45NSw4LjA1QzIwLjY4LDEwLjc4IDIwLjY4LDE1LjIyIDE3Ljk1LDE3Ljk1QzE2LjU4LDE5LjMyIDE0Ljc5LDIwIDEzLDIwQzEyLjAzLDIwIDExLjA2LDE5Ljc5IDEwLjE2LDE5LjM5TDguNjcsMjAuODhDMTAsMjEuNjIgMTEuNSwyMiAxMywyMkMxNS4zLDIyIDE3LjYxLDIxLjEyIDE5LjM2LDE5LjM2QzIyLjg4LDE1Ljg1IDIyLjg4LDEwLjE1IDE5LjM2LDYuNjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0U2VjdGlvbiA9IFwiTTE1LjY3LDQuNDJDMTQuNywzLjg0IDEzLjU4LDMuNTQgMTIuNDUsMy41NkMxMC44NywzLjU2IDkuNjYsNC4zNCA5LjY2LDUuNTZDOS42Niw2Ljk2IDExLDcuNDcgMTMsOC4xNEMxNS41LDguOTUgMTcuNCw5Ljk3IDE3LjQsMTIuMzhDMTcuMzYsMTMuNjkgMTYuNjksMTQuODkgMTUuNiwxNS42MUMxNi4yNSwxNi4yMiAxNi42MSwxNy4wOCAxNi42LDE3Ljk3QzE2LjYsMjAuNzkgMTQsMjEuOTcgMTEuNSwyMS45N0MxMC4wNCwyMi4wMyA4LjU5LDIxLjY0IDcuMzUsMjAuODdMOCwxOS4zNEM5LjA0LDIwLjA1IDEwLjI3LDIwLjQzIDExLjUzLDIwLjQ0QzEzLjI1LDIwLjQ0IDE0LjUzLDE5LjY2IDE0LjUzLDE4LjI0QzE0LjUzLDE3IDEzLjc1LDE2LjMxIDExLjI1LDE1LjQ1QzguNSwxNC41IDYuNiwxMy41IDYuNiwxMS4yMUM2LjY3LDkuODkgNy40Myw4LjY5IDguNiw4LjA3QzcuOTcsNy41IDcuNjEsNi42NyA3LjYsNS44MUM3LjYsMy40NSA5Ljc3LDIgMTIuNTMsMkMxMy44MiwyIDE1LjA5LDIuMjkgMTYuMjMsMi44OUwxNS42Nyw0LjQyTTExLjM1LDEzLjQyQzEyLjQxLDEzLjc1IDEzLjQ0LDE0LjE4IDE0LjQxLDE0LjcxQzE1LjA2LDE0LjIyIDE1LjQzLDEzLjQ1IDE1LjQxLDEyLjY0QzE1LjQxLDExLjY0IDE0Ljc3LDEwLjc2IDEzLDEwLjE0QzExLjg5LDkuNzcgMTAuNzgsOS4zMSA5LjcyLDguNzdDOC45Nyw5LjIyIDguNSwxMC4wMyA4LjUsMTAuOTFDOC41LDExLjg4IDkuMjMsMTIuNjggMTEuMzUsMTMuNDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0U2l6ZSA9IFwiTTIgNFY3SDdWMTlIMTBWN0gxNVY0SDJNMjEgOUgxMlYxMkgxNVYxOUgxOFYxMkgyMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFN0cmlrZXRocm91Z2ggPSBcIk0zLDE0SDIxVjEySDNNNSw0VjdIMTBWMTBIMTRWN0gxOVY0TTEwLDE5SDE0VjE2SDEwVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFN0cmlrZXRocm91Z2hWYXJpYW50ID0gXCJNMjMsMTJWMTRIMTguNjFDMTkuNjEsMTYuMTQgMTkuNTYsMjIgMTIuMzgsMjJDNC4wNSwyMi4wNSA0LjM3LDE1LjUgNC4zNywxNS41TDguMzQsMTUuNTVDOC4zNywxOC45MiAxMS41LDE4LjkyIDEyLjEyLDE4Ljg4QzEyLjc2LDE4LjgzIDE1LjE1LDE4Ljg0IDE1LjM0LDE2LjVDMTUuNDIsMTUuNDEgMTQuMzIsMTQuNTggMTMuMTIsMTRIMVYxMkgyM00xOS40MSw3Ljg5TDE1LjQzLDcuODZDMTUuNDMsNy44NiAxNS42LDUuMDkgMTIuMTUsNS4wOEM4LjcsNS4wNiA5LDcuMjggOSw3LjU2QzkuMDQsNy44NCA5LjM0LDkuMjIgMTIsOS44OEg1LjcxQzUuNzEsOS44OCAyLjIyLDMuMTUgMTAuNzQsMkMxOS40NSwwLjggMTkuNDMsNy45MSAxOS40MSw3Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFN1YnNjcmlwdCA9IFwiTTE2LDcuNDFMMTEuNDEsMTJMMTYsMTYuNTlMMTQuNTksMThMMTAsMTMuNDFMNS40MSwxOEw0LDE2LjU5TDguNTksMTJMNCw3LjQxTDUuNDEsNkwxMCwxMC41OUwxNC41OSw2TDE2LDcuNDFNMjEuODUsMjEuMDNIMTYuOTdWMjAuMDNMMTcuODYsMTkuMjNDMTguNjIsMTguNTggMTkuMTgsMTguMDQgMTkuNTYsMTcuNkMxOS45MywxNy4xNiAyMC4xMiwxNi43NSAyMC4xMywxNi4zNkMyMC4xNCwxNi4wOCAyMC4wNSwxNS44NSAxOS44NiwxNS42NkMxOS42OCwxNS41IDE5LjM5LDE1LjM4IDE5LDE1LjM4QzE4LjY5LDE1LjM4IDE4LjQyLDE1LjQ0IDE4LjE2LDE1LjU2TDE3LjUsMTUuOTRMMTcuMDUsMTQuNzdDMTcuMzIsMTQuNTYgMTcuNjQsMTQuMzggMTguMDMsMTQuMjRDMTguNDIsMTQuMSAxOC44NSwxNCAxOS4zMiwxNEMyMC4xLDE0LjA0IDIwLjcsMTQuMjUgMjEuMSwxNC42NkMyMS41LDE1LjA3IDIxLjcyLDE1LjU5IDIxLjcyLDE2LjIzQzIxLjcxLDE2Ljc5IDIxLjUzLDE3LjMxIDIxLjE4LDE3Ljc4QzIwLjg0LDE4LjI1IDIwLjQyLDE4LjcgMTkuOTEsMTkuMTRMMTkuMjcsMTkuNjZWMTkuNjhIMjEuODVWMjEuMDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0U3VwZXJzY3JpcHQgPSBcIk0xNiw3LjQxTDExLjQxLDEyTDE2LDE2LjU5TDE0LjU5LDE4TDEwLDEzLjQxTDUuNDEsMThMNCwxNi41OUw4LjU5LDEyTDQsNy40MUw1LjQxLDZMMTAsMTAuNTlMMTQuNTksNkwxNiw3LjQxTTIxLjg1LDlIMTYuOTdWOEwxNy44Niw3LjE4QzE4LjYyLDYuNTQgMTkuMTgsNiAxOS41Niw1LjU1QzE5LjkzLDUuMTEgMjAuMTIsNC43IDIwLjEzLDQuMzJDMjAuMTQsNC4wNCAyMC4wNSwzLjggMTkuODYsMy42MkMxOS42OCwzLjQzIDE5LjM5LDMuMzQgMTksMy4zM0MxOC42OSwzLjM0IDE4LjQyLDMuNCAxOC4xNiwzLjVMMTcuNSwzLjg5TDE3LjA1LDIuNzJDMTcuMzIsMi41IDE3LjY0LDIuMzMgMTguMDMsMi4xOUMxOC40MiwyLjA1IDE4Ljg1LDIgMTkuMzIsMkMyMC4xLDIgMjAuNywyLjIgMjEuMSwyLjYxQzIxLjUsMyAyMS43MiwzLjU0IDIxLjcyLDQuMThDMjEuNzEsNC43NCAyMS41Myw1LjI2IDIxLjE4LDUuNzNDMjAuODQsNi4yMSAyMC40Miw2LjY2IDE5LjkxLDcuMDlMMTkuMjcsNy42MVY3LjYzSDIxLjg1VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0VGV4dCA9IFwiTTE4LjUsNEwxOS42Niw4LjM1TDE4LjcsOC42MUMxOC4yNSw3Ljc0IDE3Ljc5LDYuODcgMTcuMjYsNi40M0MxNi43Myw2IDE2LjExLDYgMTUuNSw2SDEzVjE2LjVDMTMsMTcgMTMsMTcuNSAxMy4zMywxNy43NUMxMy42NywxOCAxNC4zMywxOCAxNSwxOFYxOUg5VjE4QzkuNjcsMTggMTAuMzMsMTggMTAuNjcsMTcuNzVDMTEsMTcuNSAxMSwxNyAxMSwxNi41VjZIOC41QzcuODksNiA3LjI3LDYgNi43NCw2LjQzQzYuMjEsNi44NyA1Ljc1LDcuNzQgNS4zLDguNjFMNC4zNCw4LjM1TDUuNSw0SDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0VGV4dFJvdGF0aW9uQW5nbGVEb3duID0gXCJNMTQuMjUgMjFIMTAuMDNMMTEuNDQgMTkuNTlMMi41OCAxMC43M0w0LjAzIDkuMzNMMTIuODQgMTguMTlMMTQuMjUgMTYuNzhNMTIuNjEgOEwxNS4yMyAxMC42NEwxNy40MyA1Ljc3TTE5LjQxIDQuOTJMMTQuOTUgMTYuMDNMMTMuNSAxNC41OEwxNC4zOSAxMi4zOEwxMC44OCA4LjgxTDguNjggOS43NUw3LjIyIDguMjVMMTguMzMgMy44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0Um90YXRpb25BbmdsZVVwID0gXCJNMjAuNTggOS4zM1YxMy41NUwxOS4xNyAxMi4xNEwxMC4zMSAyMUw4LjkxIDE5LjU5TDE3LjcyIDEwLjczTDE2LjMxIDkuMzNNNy41OSAxMUwxMC4yMiA4LjM5TDUuMzQgNi4xNE00LjUgNC4yMkwxNS42MSA4LjYzTDE0LjE2IDEwLjEzTDExLjk2IDkuMTlMOC4zOSAxMi43NUw5LjMzIDE0LjkxTDcuODMgMTYuNDFMMy40MiA1LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRSb3RhdGlvbkRvd24gPSBcIk02LDE5LjczTDMsMTYuNzNINVY0LjI3SDdWMTYuNzNIOUw2LDE5LjczTTE0LDkuMzhWMTMuMTNMMTkuMDMsMTEuMjVMMTQsOS4zOE0yMSwxMkwxMCwxNi43M1YxNC42N0wxMi4xOSwxMy43M1Y4Ljc3TDEwLDcuODNWNS43N0wyMSwxMC41VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRSb3RhdGlvbkRvd25WZXJ0aWNhbCA9IFwiTTE1LjI1IDRIMTMuNzVMOSAxNUgxMS4xTDEyIDEyLjhIMTdMMTcuOSAxNUgyMEwxNS4yNSA0TTEyLjYzIDExTDE0LjUgNkwxNi4zNyAxMUgxMi42M001IDE3LjVMOCAxNC41SDZWMkg0VjE0LjVIMkw1IDE3LjVNMjIgMjBMMTkgMTdWMTlINi41VjIxSDE5VjIzTDIyIDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRSb3RhdGlvbk5vbmUgPSBcIk0yMC41LDE4TDE3LjUsMjFWMTlINVYxN0gxNy41VjE1TDIwLjUsMThNMTAuMTMsMTBIMTMuODhMMTIsNC45N0wxMC4xMywxME0xMi43NSwzTDE3LjUsMTRIMTUuNDJMMTQuNSwxMS44MUg5LjVMOC41OCwxNEg2LjVMMTEuMjUsM0gxMi43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0Um90YXRpb25VcCA9IFwiTTMgMTJWMTMuNUwxNCAxOC4yNVYxNi4xNUwxMS44IDE1LjI1VjEwLjI1TDE0IDkuMzVWNy4yNUwzIDEyTTEwIDE0LjYyTDUgMTIuNzVMMTAgMTAuODhWMTQuNjJNMTggNC4yNUwxNSA3LjI1SDE3VjE5Ljc1SDE5VjcuMjVIMjFMMTggNC4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0Um90YXRpb25WZXJ0aWNhbCA9IFwiTTE1Ljc1IDVIMTQuMjVMOS41IDE2SDExLjZMMTIuNSAxMy44SDE3LjVMMTguNCAxNkgyMC41TDE1Ljc1IDVNMTMuMTMgMTJMMTUgN0wxNi44NyAxMkgxMy4xM002IDE5Ljc1TDkgMTYuNzVIN1Y0LjI1SDVWMTYuNzVIM0w2IDE5Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRWYXJpYW50ID0gXCJNOS42LDE0TDEyLDcuN0wxNC40LDE0TTExLDVMNS41LDE5SDcuN0w4LjgsMTZIMTVMMTYuMSwxOUgxOC4zTDEzLDVIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0VGV4dFZhcmlhbnRPdXRsaW5lID0gXCJNMTEgM0MxMC4xOCAzIDkuNDQgMy41IDkuMTQgNC4yN0wzLjY0IDE4LjI3QzMuMTIgMTkuNTggNC4wOSAyMSA1LjUgMjFINy43NUM4LjU5IDIxIDkuMzMgMjAuNSA5LjYyIDE5LjdMMTAuMjYgMThIMTMuNzRMMTQuMzggMTkuN0MxNC42NyAyMC41IDE1LjQyIDIxIDE2LjI1IDIxSDE4LjVDMTkuOTEgMjEgMjAuODggMTkuNTggMjAuMzYgMTguMjdMMTQuODYgNC4yN0MxNC41NiAzLjUgMTMuODIgMyAxMyAzTTExIDVIMTNMMTguNSAxOUgxNi4yNUwxNS4xMiAxNkg4Ljg3TDcuNzUgMTlINS41TTEyIDcuNjdMOS42MiAxNEgxNC4zN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0V3JhcHBpbmdDbGlwID0gXCJNNywyMUg1VjNIN1YyMU0xNywzVjExSDlWMTNIMTdWMjFIMTlWM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0V3JhcHBpbmdPdmVyZmxvdyA9IFwiTTcsMjFINVYzSDdWMjFNMTQsM0gxMlY5SDE0VjNNMTQsMTVIMTJWMjFIMTRWMTVNMTksMTJMMTYsOVYxMUg5VjEzSDE2VjE1TDE5LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRXcmFwcGluZ1dyYXAgPSBcIk03LDIxSDVWM0g3VjIxTTE5LDNIMTdWMjFIMTlWM00xMyw4SDlWMTBIMTIuOTdDMTMuMTQsMTAgMTQsMTAuMTYgMTQsMTJDMTQsMTMuODQgMTMuMTQsMTQgMTMsMTRIMTFWMTJMOCwxNUwxMSwxOFYxNkgxM0MxNC4wNCwxNiAxNiwxNS4xNiAxNiwxMkMxNiw4Ljg0IDE0LjA0LDggMTMsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0Ym94ID0gXCJNMjEsN1YzSDE3VjRIN1YzSDNWN0g0VjE3SDNWMjFIN1YyMEgxN1YyMUgyMVYxN0gyMFY3SDIxTTE4LDRIMjBWNkgxOFY0TTQsNEg2VjZINFY0TTYsMjBINFYxOEg2VjIwTTIwLDIwSDE4VjE4SDIwVjIwTTE4LDE3SDE3VjE4SDdWMTdINlY3SDdWNkgxN1Y3SDE4VjE3TTE2LDhWMTBIMTNWMTZIMTFWMTBIOFY4SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRkaXJlY3Rpb25MVG9SID0gXCJNMjEsMThMMTcsMTRWMTdINVYxOUgxN1YyMk05LDEwVjE1SDExVjRIMTNWMTVIMTVWNEgxN1YySDlBNCw0IDAgMCwwIDUsNkE0LDQgMCAwLDAgOSwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0ZGlyZWN0aW9uUlRvTCA9IFwiTTgsMTdWMTRMNCwxOEw4LDIyVjE5SDIwVjE3TTEwLDEwVjE1SDEyVjRIMTRWMTVIMTZWNEgxOFYySDEwQTQsNCAwIDAsMCA2LDZBNCw0IDAgMCwwIDEwLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRpdGxlID0gXCJNNSw0VjdIMTAuNVYxOUgxMy41VjdIMTlWNEg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFVuZGVybGluZSA9IFwiTTUsMjFIMTlWMTlINVYyMU0xMiwxN0E2LDYgMCAwLDAgMTgsMTFWM0gxNS41VjExQTMuNSwzLjUgMCAwLDEgMTIsMTQuNUEzLjUsMy41IDAgMCwxIDguNSwxMVYzSDZWMTFBNiw2IDAgMCwwIDEyLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFZlcnRpY2FsQWxpZ25Cb3R0b20gPSBcIk0xNiwxM0gxM1YzSDExVjEzSDhMMTIsMTdMMTYsMTNNNCwxOVYyMUgyMFYxOUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFZlcnRpY2FsQWxpZ25DZW50ZXIgPSBcIk04LDE5SDExVjIzSDEzVjE5SDE2TDEyLDE1TDgsMTlNMTYsNUgxM1YxSDExVjVIOEwxMiw5TDE2LDVNNCwxMVYxM0gyMFYxMUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFZlcnRpY2FsQWxpZ25Ub3AgPSBcIk04LDExSDExVjIxSDEzVjExSDE2TDEyLDdMOCwxMU00LDNWNUgyMFYzSDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0V3JhcElubGluZSA9IFwiTTgsN0wxMywxN0gzTDgsN00zLDNIMjFWNUgzVjNNMjEsMTVWMTdIMTRWMTVIMjFNMywxOUgyMVYyMUgzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFdyYXBTcXVhcmUgPSBcIk0xMiw3TDE3LDE3SDdMMTIsN00zLDNIMjFWNUgzVjNNMyw3SDZWOUgzVjdNMjEsN1Y5SDE4VjdIMjFNMywxMUg2VjEzSDNWMTFNMjEsMTFWMTNIMThWMTFIMjFNMywxNUg2VjE3SDNWMTVNMjEsMTVWMTdIMThWMTVIMjFNMywxOUgyMVYyMUgzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFdyYXBUaWdodCA9IFwiTTEyLDdMMTcsMTdIN0wxMiw3TTMsM0gyMVY1SDNWM00zLDdIOVY5SDNWN00yMSw3VjlIMTVWN0gyMU0zLDExSDdWMTNIM1YxMU0yMSwxMVYxM0gxN1YxMUgyMU0zLDE1SDZWMTdIM1YxNU0yMSwxNVYxN0gxOFYxNUgyMU0zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0V3JhcFRvcEJvdHRvbSA9IFwiTTEyLDdMMTcsMTdIN0wxMiw3TTMsM0gyMVY1SDNWM00zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ydW0gPSBcIk0xNywxMlYzQTEsMSAwIDAsMCAxNiwySDNBMSwxIDAgMCwwIDIsM1YxN0w2LDEzSDE2QTEsMSAwIDAsMCAxNywxMk0yMSw2SDE5VjE1SDZWMTdBMSwxIDAgMCwwIDcsMThIMThMMjIsMjJWN0ExLDEgMCAwLDAgMjEsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3J1bU91dGxpbmUgPSBcIk0xNSw0VjExSDUuMTdMNCwxMi4xN1Y0SDE1TTE2LDJIM0ExLDEgMCAwLDAgMiwzVjE3TDYsMTNIMTZBMSwxIDAgMCwwIDE3LDEyVjNBMSwxIDAgMCwwIDE2LDJNMjEsNkgxOVYxNUg2VjE3QTEsMSAwIDAsMCA3LDE4SDE4TDIyLDIyVjdBMSwxIDAgMCwwIDIxLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9yd2FyZCA9IFwiTTEyLDhWNEwyMCwxMkwxMiwyMFYxNkg0VjhIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9yd2FyZGJ1cmdlciA9IFwiTTE5LDEzSDNWMTFIMTlMMTUsN0wxNi40LDUuNkwyMi44LDEyTDE2LjQsMTguNEwxNSwxN0wxOSwxM00zLDZIMTNWOEgzVjZNMTMsMTZWMThIM1YxNkgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3VudGFpbiA9IFwiTTcuNSwyQzQuNDcsMiAyLDQuNDYgMiw3LjVWNy41TDIsOEg0VjcuNUEzLjUsMy41IDAgMCwxIDcuNSw0QzksNCAxMC4yNiw0LjkzIDEwLjc2LDYuMjRDMTAuMzcsNi4wOCA5Ljk1LDYgOS41LDZDOC4xMSw2IDYuOSw2LjgyIDYuMzQsOEw4LjA4LDlDOC4yOSw4LjQyIDguODUsOCA5LjUsOEExLjUsMS41IDAgMCwxIDExLDkuNVYxMUgxM1Y5LjVBMS41LDEuNSAwIDAsMSAxNC41LDhDMTUuMTYsOCAxNS43MSw4LjQyIDE1LjkyLDlMMTcuNjYsOEMxNy4xLDYuODIgMTUuOSw2IDE0LjUsNkMxNC4wNSw2IDEzLjYzLDYuMDggMTMuMjQsNi4yNEMxMy43NCw0LjkzIDE1LDQgMTYuNSw0QTMuNSwzLjUgMCAwLDEgMjAsNy41VjhIMjJWNy41SDIyQTUuNSw1LjUgMCAwLDAgMTYuNSwyQzE0LjY0LDIgMTMsMi45MyAxMiw0LjM0QzExLDIuOTMgOS4zNiwyIDcuNSwyTTYsMTJWMTRINy40MkM3LjkyLDE1LjE1IDguODUsMTYuMDcgMTAsMTYuNTdDMTAsMTcuMzggMTAsMTguMTkgMTAsMTlIMkMyLDE5IDIuODIsMjAuMjMgMy40MSwyMS4xMUMzLjc4LDIxLjY3IDQuNCwyMiA1LjA3LDIySDE4LjkzQzE5LjYsMjIgMjAuMjIsMjEuNjcgMjAuNTksMjEuMTFMMjIsMTlIMTRDMTQsMTguMTkgMTQsMTcuMzggMTQsMTYuNTdDMTUuMTUsMTYuMDcgMTYuMDgsMTUuMTUgMTYuNTgsMTRIMThWMTJINlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3VudGFpblBlbiA9IFwiTTYuOTUsMTQuOTNMMTEuMTksOS4yN0wxOS42OCwyLjJDMjAuMDcsMS44MSAyMC43MiwxLjgxIDIxLjA5LDIuMkwyMS44LDIuOTFDMjIuMTksMy4yOCAyMi4xOSwzLjkzIDIxLjgsNC4zMkwxNC43MywxMi44MUw5LjA3LDE3LjA1TDYuOTUsMTQuOTNNOC4zNiwxNy43Nkw2LjI0LDE1LjY0TDMuNDEsMTcuMDVMMiwyMS4yOUw0LjEyLDE5LjE3QzQuMzIsMTkgNC42MywxOSA0LjgzLDE5LjE3QzUsMTkuMzcgNSwxOS42OCA0LjgzLDE5Ljg4TDIuNzEsMjJMNi45NSwyMC41OUw4LjM2LDE3Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvdW50YWluUGVuVGlwID0gXCJNMTUuNTQsMy41TDIwLjUsOC40N0wxOS4wNyw5Ljg4TDE0LjEyLDQuOTNMMTUuNTQsMy41TTMuNSwxOS43OEwxMCwxMy4zMUM5LjksMTMgOS45NywxMi42MSAxMC4yMywxMi4zNUMxMC42MiwxMS45NiAxMS4yNiwxMS45NiAxMS42NSwxMi4zNUMxMi4wNCwxMi43NSAxMi4wNCwxMy4zOCAxMS42NSwxMy43N0MxMS4zOSwxNC4wMyAxMSwxNC4xIDEwLjY5LDE0TDQuMjIsMjAuNUwxNC44MywxNi45NUwxOC4zNiwxMC41OUwxMy40Miw1LjY0TDcuMDUsOS4xN0wzLjUsMTkuNzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJlZWJzZCA9IFwiTTIuNjksMkMzLjU0LDEuOTUgNi4wOCwzLjE2IDYuMTMsMy4xOUM0Ljg0LDQgMy43NCw1LjA5IDIuOTEsNi4zOEMyLjA5LDQuODEgMS4zNCwyLjkxIDIsMi4yNUMyLjE3LDIuMDggMi40LDIgMi42OSwyTTIwLjg0LDIuMTNDMjEuMjUsMi4wOCAyMS41OCwyLjE0IDIxLjc4LDIuMzRDMjIuODUsMy40MiAxOS44OCw4LjE1IDE5LjM4LDguNjZDMTguODcsOS4xNiAxNy41Nyw4LjcgMTYuNSw3LjYzQzE1LjQzLDYuNTUgMTQuOTcsNS4yNiAxNS40Nyw0Ljc1QzE1Ljg4LDQuMzQgMTkuMDksMi4zIDIwLjg0LDIuMTNNMTIsMi41NkMxMy4yOSwyLjU2IDE0LjUzLDIuODIgMTUuNjYsMy4yOEMxNS4xNywzLjYgMTQuODEsMy44NSAxNC42OSwzLjk3QzEzLjcsNC45NiAxNC4xNCw2LjgzIDE1LjcyLDguNDFDMTYuNyw5LjM4IDE3Ljg0LDkuOTcgMTguNzgsOS45N0MxOS40Niw5Ljk3IDE5LjkyLDkuNjggMjAuMTYsOS40NEMyMC4zMyw5LjI3IDIwLjYsOC44OCAyMC45MSw4LjQxQzIxLjQyLDkuNTkgMjEuNjksMTAuODggMjEuNjksMTIuMjVDMjEuNjksMTcuNjEgMTcuMzYsMjEuOTcgMTIsMjEuOTdDNi42NCwyMS45NyAyLjMxLDE3LjYxIDIuMzEsMTIuMjVDMi4zMSw2Ljg5IDYuNjQsMi41NiAxMiwyLjU2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyA9IFwiTTE4LDE1SDZMMiwxOVYzQTEsMSAwIDAsMSAzLDJIMThBMSwxIDAgMCwxIDE5LDNWMTRBMSwxIDAgMCwxIDE4LDE1TTIzLDlWMjNMMTksMTlIOEExLDEgMCAwLDEgNywxOFYxN0gyMVY4SDIyQTEsMSAwIDAsMSAyMyw5TTguMTksNEM3LjMyLDQgNi42Miw0LjIgNi4wOCw0LjU5QzUuNTYsNSA1LjMsNS41NyA1LjMxLDYuMzZMNS4zMiw2LjM5SDcuMjVDNy4yNiw2LjA5IDcuMzUsNS44NiA3LjUzLDUuN0M3LjcxLDUuNTUgNy45Myw1LjQ3IDguMTksNS40N0M4LjUsNS40NyA4Ljc2LDUuNTcgOC45NCw1Ljc1QzkuMTIsNS45NCA5LjIsNi4yIDkuMiw2LjVDOS4yLDYuODIgOS4xMyw3LjA5IDguOTcsNy4zMkM4LjgzLDcuNTUgOC42Miw3Ljc1IDguMzYsNy45MUM3Ljg1LDguMjUgNy41LDguNTUgNy4zMSw4LjgyQzcuMTEsOS4wOCA3LDkuNSA3LDEwSDlDOSw5LjY5IDkuMDQsOS40NCA5LjEzLDkuMjZDOS4yMiw5LjA4IDkuMzksOC45IDkuNjQsOC43NEMxMC4wOSw4LjUgMTAuNDYsOC4yMSAxMC43NSw3LjgxQzExLjA0LDcuNDEgMTEuMTksNyAxMS4xOSw2LjVDMTEuMTksNS43NCAxMC45Miw1LjEzIDEwLjM4LDQuNjhDOS44NSw0LjIzIDkuMTIsNCA4LjE5LDRNNywxMVYxM0g5VjExSDdNMTMsMTNIMTVWMTFIMTNWMTNNMTMsNFYxMEgxNVY0SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZSA9IFwiTTcsMkgxN0EyLDIgMCAwLDEgMTksNFY5SDVWNEEyLDIgMCAwLDEgNywyTTE5LDE5QTIsMiAwIDAsMSAxNywyMVYyMkgxNVYyMUg5VjIySDdWMjFBMiwyIDAgMCwxIDUsMTlWMTBIMTlWMTlNOCw1VjdIMTBWNUg4TTgsMTJWMTVIMTBWMTJIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VBbGVydCA9IFwiTTUgMkgxNUMxNi4xMSAyIDE3IDIuOSAxNyA0VjlIM1Y0QzMgMi45IDMuOSAyIDUgMk0xNyAxOUMxNyAyMC4xMSAxNi4xMSAyMSAxNSAyMVYyMkgxM1YyMUg3VjIySDVWMjFDMy45IDIxIDMgMjAuMTEgMyAxOVYxMEgxN1YxOU02IDVWN0g4VjVINk02IDEyVjE1SDhWMTJINk0xOSAxNUgyMVYxN0gxOVYxNU0xOSA3SDIxVjEzSDE5VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJpZGdlQWxlcnRPdXRsaW5lID0gXCJNNyAyMVYyMkg1VjIxQzMuOSAyMSAzIDIwLjExIDMgMTlWNEMzIDIuOSAzLjkgMiA1IDJIMTVDMTYuMTEgMiAxNyAyLjkgMTcgNFYxOUMxNyAyMC4xMSAxNi4xMSAyMSAxNSAyMVYyMkgxM1YyMUg3TTUgNFY5SDE1VjRINU01IDE5SDE1VjExSDVWMTlNNiAxMkg4VjE1SDZWMTJNNiA2SDhWOEg2VjZNMTkgMTVIMjFWMTdIMTlWMTVNMTkgN0gyMVYxM0gxOVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZUJvdHRvbSA9IFwiTTcsMkEyLDIgMCAwLDAgNSw0VjE5QTIsMiAwIDAsMCA3LDIxVjIySDlWMjFIMTVWMjJIMTdWMjFBMiwyIDAgMCwwIDE5LDE5VjRBMiwyIDAgMCwwIDE3LDJIN004LDZIMTBWOEg4VjZNNywxMUgxN1YxOUg3VjExTTgsMTJWMTVIMTBWMTJIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VJbmR1c3RyaWFsID0gXCJNMTcgMkg3QzUuOSAyIDUgMi45IDUgNFYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTVWMjJIMTdWMjFDMTguMTEgMjEgMTkgMjAuMTEgMTkgMTlWNEMxOSAyLjkgMTguMTEgMiAxNyAyTTEwIDE1SDhWMTBIMTBWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJpZGdlSW5kdXN0cmlhbEFsZXJ0ID0gXCJNMTUgMkg1QzMuOSAyIDMgMi45IDMgNFYxOUMzIDIwLjExIDMuOSAyMSA1IDIxVjIySDdWMjFIMTNWMjJIMTVWMjFDMTYuMTEgMjEgMTcgMjAuMTEgMTcgMTlWNEMxNyAyLjkgMTYuMTEgMiAxNSAyTTggMTVINlYxMEg4VjE1TTIxIDdWMTNIMTlWN0gyMU0xOSAxNUgyMVYxN0gxOVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VJbmR1c3RyaWFsQWxlcnRPdXRsaW5lID0gXCJNOCAxNUg2VjEwSDhWMTVNMTcgNFYxOUMxNyAyMC4xMSAxNi4xMSAyMSAxNSAyMVYyMkgxM1YyMUg3VjIySDVWMjFDMy45IDIxIDMgMjAuMTEgMyAxOVY0QzMgMi45IDMuOSAyIDUgMkgxNUMxNi4xMSAyIDE3IDIuOSAxNyA0TTE1IDRINVYxOUgxNVY0TTE5IDE3SDIxVjE1SDE5VjE3TTE5IDdWMTNIMjFWN0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VJbmR1c3RyaWFsT2ZmID0gXCJNMTkgMTUuOEw1LjcgMi41QzYuMDUgMi4xOSA2LjUgMiA3IDJIMTdDMTguMTEgMiAxOSAyLjkgMTkgNFYxNS44TTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE4LjQ2IDIwLjM1QzE4LjEgMjAuNzUgMTcuNTggMjEgMTcgMjFWMjJIMTVWMjFIOVYyMkg3VjIxQzUuOSAyMSA1IDIwLjExIDUgMTlWNi44OUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTEwIDExLjg5TDguMTEgMTBIOFYxNUgxMFYxMS44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VJbmR1c3RyaWFsT2ZmT3V0bGluZSA9IFwiTTcuMiA0TDUuNyAyLjVDNi4wNSAyLjE5IDYuNSAyIDcgMkgxN0MxOC4xMSAyIDE5IDIuOSAxOSA0VjE1LjhMMTcgMTMuOFY0SDcuMk0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOC40NiAyMC4zNUMxOC4xIDIwLjc1IDE3LjU4IDIxIDE3IDIxVjIySDE1VjIxSDlWMjJIN1YyMUM1LjkgMjEgNSAyMC4xMSA1IDE5VjYuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0xNyAxOC44OUwxMCAxMS44OVYxNUg4VjEwSDguMTFMNyA4Ljg5VjE5SDE3VjE4Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZUluZHVzdHJpYWxPdXRsaW5lID0gXCJNMTcgMkg3QzUuOSAyIDUgMi45IDUgNFYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTVWMjJIMTdWMjFDMTguMTEgMjEgMTkgMjAuMTEgMTkgMTlWNEMxOSAyLjkgMTguMTEgMiAxNyAyTTE3IDE5SDdWNEgxN1YxOU0xMCAxNUg4VjEwSDEwVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZU9mZiA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNSA2Ljg5VjlINy4xMUw4LjExIDEwSDVWMTlDNSAyMC4xMSA1LjkgMjEgNyAyMVYyMkg5VjIxSDE1VjIySDE3VjIxQzE3LjU4IDIxIDE4LjEgMjAuNzUgMTguNDYgMjAuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTAgMTVIOFYxMkgxMFYxNU0xOSAxNS44TDEzLjIgMTBIMTlWMTUuOE04LjIgNUw1LjcgMi41QzYuMDUgMi4xOSA2LjUgMiA3IDJIMTdDMTguMTEgMiAxOSAyLjkgMTkgNFY5SDEyLjJMMTAgNi44VjVIOC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZU9mZk91dGxpbmUgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDUgNi44OVYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTVWMjJIMTdWMjFDMTcuNTggMjEgMTguMSAyMC43NSAxOC40NiAyMC4zNUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xNyAxOUg3VjExSDkuMTFMMTcgMTguODlWMTlNNy4yIDRMNS43IDIuNUM2LjA1IDIuMTkgNi41IDIgNyAySDE3QzE4LjExIDIgMTkgMi45IDE5IDRWMTUuOEwxNyAxMy44VjExSDE0LjJMMTIuMiA5SDE3VjRINy4yTTggMTJIMTBWMTVIOFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VPdXRsaW5lID0gXCJNOSwyMVYyMkg3VjIxQTIsMiAwIDAsMSA1LDE5VjRBMiwyIDAgMCwxIDcsMkgxN0EyLDIgMCAwLDEgMTksNFYxOUEyLDIgMCAwLDEgMTcsMjFWMjJIMTVWMjFIOU03LDRWOUgxN1Y0SDdNNywxOUgxN1YxMUg3VjE5TTgsMTJIMTBWMTVIOFYxMk04LDZIMTBWOEg4VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJpZGdlVG9wID0gXCJNOCw4VjZIMTBWOEg4TTcsMkgxN0EyLDIgMCAwLDEgMTksNFYxOUEyLDIgMCAwLDEgMTcsMjFWMjJIMTVWMjFIOVYyMkg3VjIxQTIsMiAwIDAsMSA1LDE5VjRBMiwyIDAgMCwxIDcsMk03LDRWOUgxN1Y0SDdNOCwxMlYxNUgxMFYxMkg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZVZhcmlhbnQgPSBcIk0xOSA0VjE5QzE5IDIwLjExIDE4LjExIDIxIDE3IDIxVjIySDE1VjIxSDEyLjVWMkgxN0MxOC4xMSAyIDE5IDIuOSAxOSA0TTcgMkgxMS41VjIxSDlWMjJIN1YyMUM1LjkgMjEgNSAyMC4xMSA1IDE5VjRDNSAyLjkgNS45IDIgNyAyTTEwIDEwSDdWMTRIMTBWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJpZGdlVmFyaWFudEFsZXJ0ID0gXCJNMTcgNFYxOUMxNyAyMC4xMSAxNi4xMSAyMSAxNSAyMVYyMkgxM1YyMUgxMC41VjJIMTVDMTYuMTEgMiAxNyAyLjkgMTcgNE01IDJIOS41VjIxSDdWMjJINVYyMUMzLjkgMjEgMyAyMC4xMSAzIDE5VjRDMyAyLjkgMy45IDIgNSAyTTggMTBINVYxNEg4VjEwTTE5IDdWMTNIMjFWN0gxOU0xOSAxN0gyMVYxNUgxOVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VWYXJpYW50QWxlcnRPdXRsaW5lID0gXCJNMTUgMkg1QzMuOSAyIDMgMi45IDMgNFYxOUMzIDIwLjExIDMuOSAyMSA1IDIxVjIySDdWMjFIMTNWMjJIMTVWMjFDMTYuMTEgMjEgMTcgMjAuMTEgMTcgMTlWNEMxNyAyLjkgMTYuMTEgMiAxNSAyTTkgMTlINVYxNEg4VjEwSDVWNEg5VjE5TTE1IDE5SDExVjRIMTVWMTlNMTkgMTVIMjFWMTdIMTlWMTVNMjEgN1YxM0gxOVY3SDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZVZhcmlhbnRPZmYgPSBcIk0yLjM5IDEuNzNMMS4xMSAzTDUgNi44OVYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTEuNVYxMy4zOUwxMi41IDE0LjM5VjIxSDE1VjIySDE3VjIxQzE3LjU4IDIxIDE4LjEgMjAuNzUgMTguNDYgMjAuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTEwIDE0SDdWMTBIOC4xMUwxMCAxMS44OVYxNE0xOSAxNS44TDEyLjUgOS4zVjJIMTdDMTguMTEgMiAxOSAyLjkgMTkgNFYxNS44TTExLjUgOC4zTDUuNyAyLjVDNi4wNSAyLjE5IDYuNSAyIDcgMkgxMS41VjguM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VWYXJpYW50T2ZmT3V0bGluZSA9IFwiTTcuMiA0TDUuNyAyLjVDNi4wNSAyLjE5IDYuNSAyIDcgMkgxN0MxOC4xMSAyIDE5IDIuOSAxOSA0VjE1LjhMMTcgMTMuOFY0SDEzVjkuOEwxMSA3LjhWNEg3LjJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTguNDYgMjAuMzVDMTguMSAyMC43NSAxNy41OCAyMSAxNyAyMVYyMkgxNVYyMUg5VjIySDdWMjFDNS45IDIxIDUgMjAuMTEgNSAxOVY2Ljg5TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZNNyAxMEg4LjExTDcgOC44OVYxME0xMSAxMi44OUwxMCAxMS44OVYxNEg3VjE5SDExVjEyLjg5TTE3IDE4Ljg5TDEzIDE0Ljg5VjE5SDE3VjE4Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZVZhcmlhbnRPdXRsaW5lID0gXCJNMTcgMkg3QzUuOSAyIDUgMi45IDUgNFYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTVWMjJIMTdWMjFDMTguMTEgMjEgMTkgMjAuMTEgMTkgMTlWNEMxOSAyLjkgMTguMTEgMiAxNyAyTTcgMTlWMTRIMTBWMTBIN1Y0SDExVjE5SDdNMTcgMTlIMTNWNEgxN1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGcnVpdENoZXJyaWVzID0gXCJNMTYgMTNIMTUuNUMxNC44IDExLjcgMTQuMyAxMCAxMy44IDguM0wxNC43IDkuMkMxNy40IDExLjMgMTkuOCAxMC45IDE5LjggMTAuOVMyMC41IDcuMSAxNy44IDUuMUMxNS41IDMuMyAxMy40IDMuMyAxMi44IDMuNEMxMi43IDIuOCAxMi43IDIuMyAxMi42IDEuOUwxMS4yIDJDMTEuMiA1LjIgOC41IDExLjEgNy42IDEzQzUuNiAxMy4yIDQgMTQuOSA0IDE3QzQgMTkuMiA1LjggMjEgOCAyMUM5LjEgMjEgMTAgMjAuNiAxMC43IDE5LjlDMTAuMyAxOSAxMCAxOCAxMCAxN1MxMC4zIDE1IDEwLjcgMTQuMUMxMC4zIDEzLjcgOS43IDEzLjQgOS4yIDEzLjJDOS45IDExLjcgMTEuMSA5IDExLjkgNi40QzEyLjMgOC43IDEzLjEgMTEuNCAxNC4xIDEzLjVDMTIuOSAxNC4yIDEyIDE1LjUgMTIgMTdDMTIgMTkuMiAxMy44IDIxIDE2IDIxUzIwIDE5LjIgMjAgMTcgMTguMiAxMyAxNiAxM004IDE1LjVDNy4yIDE1LjUgNi41IDE2LjIgNi41IDE3SDUuNUM1LjUgMTUuNiA2LjYgMTQuNSA4IDE0LjVWMTUuNU0xNiAxNS41QzE1LjIgMTUuNSAxNC41IDE2LjIgMTQuNSAxN0gxMy41QzEzLjUgMTUuNiAxNC42IDE0LjUgMTYgMTQuNVYxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0Q2hlcnJpZXNPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w4LjcgMTAuNkM4LjMgMTEuNiA3LjkgMTIuNSA3LjYgMTNDNS42IDEzLjIgNCAxNC45IDQgMTdDNCAxOS4yIDUuOCAyMSA4IDIxQzkuMSAyMSAxMCAyMC42IDEwLjcgMTkuOUMxMC4zIDE5IDEwIDE4IDEwIDE3UzEwLjMgMTUgMTAuNyAxNC4xQzEwLjMgMTMuNyA5LjcgMTMuNCA5LjIgMTMuMkM5LjQgMTIuOCA5LjYgMTIuMyA5LjkgMTEuN0wxMi44IDE0LjZDMTIuMyAxNS4zIDEyIDE2LjEgMTIgMTdDMTIgMTkuMiAxMy44IDIxIDE2IDIxQzE2LjkgMjEgMTcuNyAyMC43IDE4LjMgMjAuMkwyMC44IDIyLjdMMjIuMSAyMS41TTggMTUuNUM3LjIgMTUuNSA2LjUgMTYuMiA2LjUgMTdINS41QzUuNSAxNS42IDYuNiAxNC41IDggMTQuNVYxNS41TTE0LjUgMTdIMTMuNUMxMy41IDE2LjUgMTMuNiAxNi4xIDEzLjggMTUuN0wxNC42IDE2LjVDMTQuNSAxNi43IDE0LjUgMTYuOCAxNC41IDE3TTIwIDE2LjhMMTYuMiAxM0MxOC4yIDEzLjEgMTkuOSAxNC44IDIwIDE2LjhNMTEuMyA4LjFMMTAuMSA2LjlDMTAuNyA1LjEgMTEuMiAzLjMgMTEuMiAyTDEyLjYgMS45QzEyLjcgMi4zIDEyLjcgMi44IDEyLjggMy40QzEzLjQgMy4zIDE1LjUgMy4zIDE3LjggNS4xQzIwLjUgNy4xIDE5LjggMTAuOSAxOS44IDEwLjlTMTcuNCAxMS4zIDE0LjcgOS4yTDEzLjggOC4zQzE0LjEgOS41IDE0LjUgMTAuNyAxNC45IDExLjdMMTIuNiA5LjRDMTIuMyA4LjQgMTIuMSA3LjQgMTEuOSA2LjRDMTEuNyA3IDExLjUgNy42IDExLjMgOC4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0Q2l0cnVzID0gXCJNOSAxNS45QzYuOSAxNS43IDUuMSAxNC45IDQgMTMuNkMzLjIgMTMuNiAyLjQgMTMuMSAyLjEgMTIuM0MxLjggMTEuNSAyLjEgMTAuNyAyLjggMTAuMkMyLjkgNy4yIDUuNiA0LjEgOS43IDIuN0MxMy44IDEuMyAxOCAyLjEgMjAgNC40QzIwLjggNC40IDIxLjYgNC45IDIxLjkgNS43QzIyLjIgNi41IDIxLjkgNy4zIDIxLjIgNy44QzIxLjIgOC42IDIxIDkuNCAyMC42IDEwLjJDMTkuNCA5LjUgMTggOSAxNi41IDlDMTIuNiA5IDkuMyAxMiA5IDE1LjlNMjIgMTYuNUMyMiAxOS41IDE5LjUgMjIgMTYuNSAyMlMxMSAxOS41IDExIDE2LjUgMTMuNSAxMSAxNi41IDExIDIyIDEzLjUgMjIgMTYuNU0xMy4zIDE4TDE1LjYgMTYuNUwxMy4zIDE1QzEzLjEgMTUuNSAxMyAxNiAxMyAxNi41UzEzLjEgMTcuNSAxMy4zIDE4TTE2IDE3LjRMMTMuOSAxOC44QzE0LjQgMTkuNCAxNS4yIDE5LjggMTYgMjBWMTcuNE0xNiAxMy4xQzE1LjIgMTMuMiAxNC40IDEzLjYgMTMuOSAxNC4zTDE2IDE1LjdWMTMuMU0xNyAxNS42TDE5LjEgMTQuMkMxOC42IDEzLjYgMTcuOCAxMy4yIDE3IDEzVjE1LjZNMTkuMSAxOC44TDE3IDE3LjRWMTkuOUMxNy44IDE5LjggMTguNiAxOS40IDE5LjEgMTguOE0yMCAxNi41QzIwIDE2IDE5LjkgMTUuNSAxOS43IDE1TDE3LjQgMTYuNUwxOS43IDE4QzE5LjkgMTcuNSAyMCAxNyAyMCAxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0Q2l0cnVzT2ZmID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNC40IDYuM0MzLjQgNy41IDIuOSA4LjkgMi44IDEwLjJDMi4xIDEwLjcgMS44IDExLjUgMi4xIDEyLjNDMi40IDEzLjEgMy4yIDEzLjYgNCAxMy42QzUuMSAxNC45IDYuOSAxNS43IDkgMTUuOUM5LjEgMTQuNSA5LjYgMTMuMyAxMC4zIDEyLjJMMTEuOCAxMy43QzExLjMgMTQuNSAxMSAxNS41IDExIDE2LjVDMTEgMTkuNSAxMy41IDIyIDE2LjUgMjJDMTcuNSAyMiAxOC41IDIxLjcgMTkuMyAyMS4yTDIwLjggMjIuN0wyMi4xIDIxLjVNMTMgMTYuNUMxMyAxNiAxMy4xIDE1LjYgMTMuMyAxNS4xTDE1IDE2LjhMMTMuMyAxOEMxMy4xIDE3LjUgMTMgMTcgMTMgMTYuNU0xMy45IDE4LjhMMTUuNyAxNy42TDE2IDE3LjlWMjBDMTUuMiAxOS44IDE0LjQgMTkuNCAxMy45IDE4LjhNMTcgMTkuOVYxOC45TDE3LjggMTkuN0MxNy41IDE5LjggMTcuMyAxOS45IDE3IDE5LjlNMjAgMTYuOFYxNi41QzIwIDE2IDE5LjkgMTUuNSAxOS43IDE1TDE4LjggMTUuNkwxOC4xIDE0LjlMMTkuMSAxNC4yQzE4LjYgMTMuNiAxNy44IDEzLjIgMTcgMTNWMTMuOEwxNC42IDExLjRDMTUuMiAxMS4yIDE1LjkgMTEgMTYuNSAxMUMxOS41IDExIDIyIDEzLjUgMjIgMTYuNUMyMiAxNy4yIDIxLjkgMTcuOCAyMS42IDE4LjRMMjAgMTYuOE0xMyA5LjhMNy4xIDMuOUM3LjkgMy40IDguOCAzIDkuNyAyLjdDMTMuOCAxLjMgMTggMi4xIDIwIDQuNEMyMC44IDQuNCAyMS42IDQuOSAyMS45IDUuN0MyMi4yIDYuNSAyMS45IDcuMyAyMS4yIDcuOEMyMS4yIDguNiAyMSA5LjQgMjAuNiAxMC4yQzE5LjQgOS41IDE4IDkgMTYuNSA5QzE1LjMgOSAxNC4xIDkuMyAxMyA5LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJ1aXRHcmFwZXMgPSBcIk0xNCAxMkMxNCAxMy4xIDEzLjEgMTQgMTIgMTRTMTAgMTMuMSAxMCAxMiAxMC45IDEwIDEyIDEwIDE0IDEwLjkgMTQgMTJNNyAxMEM1LjkgMTAgNSAxMC45IDUgMTJTNS45IDE0IDcgMTQgOSAxMy4xIDkgMTIgOC4xIDEwIDcgMTBNMTcgMTBDMTUuOSAxMCAxNSAxMC45IDE1IDEyUzE1LjkgMTQgMTcgMTQgMTkgMTMuMSAxOSAxMiAxOC4xIDEwIDE3IDEwTTE0LjUgNkMxMy40IDYgMTIuNSA2LjkgMTIuNSA4UzEzLjQgMTAgMTQuNSAxMCAxNi41IDkuMSAxNi41IDggMTUuNiA2IDE0LjUgNk05LjUgNkM4LjQgNiA3LjUgNi45IDcuNSA4UzguNCAxMCA5LjUgMTAgMTEuNSA5LjEgMTEuNSA4IDEwLjYgNiA5LjUgNk0xNC41IDE0QzEzLjQgMTQgMTIuNSAxNC45IDEyLjUgMTZTMTMuNCAxOCAxNC41IDE4IDE2LjUgMTcuMSAxNi41IDE2IDE1LjYgMTQgMTQuNSAxNE05LjUgMTRDOC40IDE0IDcuNSAxNC45IDcuNSAxNlM4LjQgMTggOS41IDE4IDExLjUgMTcuMSAxMS41IDE2IDEwLjYgMTQgOS41IDE0TTEyIDE4QzEwLjkgMTggMTAgMTguOSAxMCAyMFMxMC45IDIyIDEyIDIyIDE0IDIxLjEgMTQgMjAgMTMuMSAxOCAxMiAxOE0xNC40IDIuMkwxMy42IDFDMTEuNCAyIDExLjIgNS42IDExLjIgNkgxMi43QzEyLjggNS4yIDEzLjEgMi43IDE0LjQgMi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0R3JhcGVzT3V0bGluZSA9IFwiTTE5IDEyQzE5IDEwLjYxIDE4LjA1IDkuNDcgMTYuNzggOS4xMkMxNi45MiA4Ljc4IDE3IDguNCAxNyA4QzE3IDYuMzQgMTUuNjYgNSAxNCA1QzEzLjU3IDUgMTMuMTcgNS4xIDEyLjgxIDUuMjZDMTMgNC4xOSAxMy4zOSAyLjU5IDE0LjQgMi4yTDEzLjYgMUMxMS45IDEuNzcgMTEuNCA0LjA5IDExLjI2IDUuMjlDMTAuODcgNS4xMSAxMC40NSA1IDEwIDVDOC4zNCA1IDcgNi4zNCA3IDhDNyA4LjQgNy4wOCA4Ljc3IDcuMjIgOS4xMkM1Ljk0IDkuNDYgNSAxMC42MiA1IDEyQzUgMTMuMzkgNS45NSAxNC41NCA3LjIzIDE0Ljg4QzcuMDkgMTUuMjIgNyAxNS42IDcgMTZDNyAxNy4zOSA3Ljk0IDE4LjU0IDkuMjIgMTguODhDOS4wOCAxOS4yMyA5IDE5LjYxIDkgMjBDOSAyMS42NiAxMC4zNCAyMyAxMiAyM1MxNSAyMS42NiAxNSAyMEMxNSAxOS42MSAxNC45MiAxOS4yMyAxNC43OCAxOC44OEMxNi4wNiAxOC41NCAxNyAxNy4zOSAxNyAxNkMxNyAxNS42IDE2LjkyIDE1LjIzIDE2Ljc3IDE0Ljg4QzE4LjA1IDE0LjU0IDE5IDEzLjM5IDE5IDEyTTE2LjMxIDkuODhWOS45SDE2LjNMMTYuMzEgOS44OE0xNCA2LjVDMTQuODMgNi41IDE1LjUgNy4xNyAxNS41IDhTMTQuODMgOS41IDE0IDkuNSAxMi41IDguODMgMTIuNSA4IDEzLjE3IDYuNSAxNCA2LjVNMTMuNSAxMkMxMy41IDEyLjgzIDEyLjgzIDEzLjUgMTIgMTMuNVMxMC41IDEyLjgzIDEwLjUgMTIgMTEuMTcgMTAuNSAxMiAxMC41IDEzLjUgMTEuMTcgMTMuNSAxMk0xMCA2LjVDMTAuODMgNi41IDExLjUgNy4xNyAxMS41IDhTMTAuODMgOS41IDEwIDkuNSA4LjUgOC44MyA4LjUgOCA5LjE3IDYuNSAxMCA2LjVNNi41IDEyQzYuNSAxMS4xNyA3LjE3IDEwLjUgOCAxMC41UzkuNSAxMS4xNyA5LjUgMTIgOC44MyAxMy41IDggMTMuNSA2LjUgMTIuODMgNi41IDEyTTguNSAxNkM4LjUgMTUuMTcgOS4xNyAxNC41IDEwIDE0LjVTMTEuNSAxNS4xNyAxMS41IDE2IDEwLjgzIDE3LjUgMTAgMTcuNSA4LjUgMTYuODMgOC41IDE2TTEyIDIxLjVDMTEuMTcgMjEuNSAxMC41IDIwLjgzIDEwLjUgMjBTMTEuMTcgMTguNSAxMiAxOC41IDEzLjUgMTkuMTcgMTMuNSAyMCAxMi44MyAyMS41IDEyIDIxLjVNMTQgMTcuNUMxMy4xNyAxNy41IDEyLjUgMTYuODMgMTIuNSAxNlMxMy4xNyAxNC41IDE0IDE0LjUgMTUuNSAxNS4xNyAxNS41IDE2IDE0LjgzIDE3LjUgMTQgMTcuNU0xNiAxMy41QzE1LjE3IDEzLjUgMTQuNSAxMi44MyAxNC41IDEyUzE1LjE3IDEwLjUgMTYgMTAuNSAxNy41IDExLjE3IDE3LjUgMTIgMTYuODMgMTMuNSAxNiAxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0UGluZWFwcGxlID0gXCJNMTQuNCA3LjdDMTYuNCA2LjQgMTkgNyAxOSA3QzE3LjIgNC42IDE1LjEgNC43IDEzLjYgNS4yVjVDMTQuNyAzLjQgMTYuOSAzLjUgMTYuOSAzLjVDMTUuMyAyLjEgMTMuOSAyLjUgMTMgM0MxMi41IDEuOCAxMiAxIDEyIDFDMTEuNiAxLjcgMTEuMyAyLjQgMTEgMy4xQzEwLjEgMi41IDguNiAyLjEgNyAzLjVDNyAzLjUgOS4zIDMuNSAxMC40IDUuMkM4LjkgNC43IDYuOCA0LjYgNSA3QzUgNyA3LjYgNi40IDkuNiA3LjdDNy41IDguOSA2IDExLjcgNiAxNUM2IDE5LjQgOC43IDIzIDEyIDIzUzE4IDE5LjQgMTggMTVDMTggMTEuNyAxNi41IDguOSAxNC40IDcuN00xNS44IDE2LjhDMTUuNyAxNy4yIDE1LjYgMTcuNiAxNS40IDE4TDE0IDE2TDEyLjUgMThMMTQuMSAyMC4xQzEzLjggMjAuMyAxMy42IDIwLjUgMTMuMyAyMC43TDEyIDE5TDEwLjcgMjAuN0MxMC40IDIwLjYgMTAuMSAyMC40IDkuOSAyMC4xTDExLjUgMThMMTAgMTZMOC41IDE3LjlDOC40IDE3LjUgOC4yIDE3LjEgOC4xIDE2LjdMOS41IDE1TDguMiAxMy4yQzguMyAxMi44IDguNCAxMi40IDguNiAxMkwxMCAxNEwxMS41IDEyTDkuOSA5LjlDMTAuMiA5LjcgMTAuNCA5LjUgMTAuNyA5LjNMMTIgMTFMMTMuMyA5LjNDMTMuNiA5LjQgMTMuOSA5LjYgMTQuMSA5LjlMMTIuNSAxMkwxNCAxNEwxNS41IDEyLjFDMTUuNiAxMi41IDE1LjggMTIuOSAxNS45IDEzLjNMMTQuNSAxNUwxNS44IDE2LjhNMTIgMTNMMTMuNSAxNUwxMiAxN0wxMC41IDE1TDEyIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0V2F0ZXJtZWxvbiA9IFwiTTE2LjQgMTYuNEMxOS44IDEzIDE5LjggNy41IDE2LjQgNC4yTDQuMiAxNi40QzcuNSAxOS44IDEzIDE5LjggMTYuNCAxNi40TTE2IDdDMTYuNiA3IDE3IDcuNCAxNyA4QzE3IDguNiAxNi42IDkgMTYgOVMxNSA4LjYgMTUgOEMxNSA3LjQgMTUuNCA3IDE2IDdNMTYgMTFDMTYuNiAxMSAxNyAxMS40IDE3IDEyQzE3IDEyLjYgMTYuNiAxMyAxNiAxM1MxNSAxMi42IDE1IDEyQzE1IDExLjQgMTUuNCAxMSAxNiAxMU0xMiAxMUMxMi42IDExIDEzIDExLjQgMTMgMTJDMTMgMTIuNiAxMi42IDEzIDEyIDEzUzExIDEyLjYgMTEgMTJDMTEgMTEuNCAxMS40IDExIDEyIDExTTEyIDE1QzEyLjYgMTUgMTMgMTUuNCAxMyAxNkMxMyAxNi42IDEyLjYgMTcgMTIgMTdTMTEgMTYuNiAxMSAxNkMxMSAxNS40IDExLjQgMTUgMTIgMTVNOCAxN0M3LjQgMTcgNyAxNi42IDcgMTZDNyAxNS40IDcuNCAxNSA4IDE1UzkgMTUuNCA5IDE2QzkgMTYuNiA4LjYgMTcgOCAxN00xOC42IDE4LjZDMTQgMjMuMiA2LjYgMjMuMiAyIDE4LjZMMy40IDE3LjJDNy4yIDIxIDEzLjMgMjEgMTcuMSAxNy4yQzIwLjkgMTMuNCAyMC45IDcuMyAxNy4xIDMuNUwxOC42IDJDMjMuMSA2LjYgMjMuMSAxNCAxOC42IDE4LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVlbCA9IFwiTTMsMkg2QzYuMjgsMiA2LjUzLDIuMTEgNi43MSwyLjI5TDguNzksNC4zOEw5LjU5LDMuNTlDMTAsMy4yIDEwLjUsMyAxMSwzSDE3QzE3LjUsMyAxOCwzLjIgMTguNDEsMy41OUwxOS40MSw0LjU5QzE5LjgsNSAyMCw1LjUgMjAsNlYxOUEyLDIgMCAwLDEgMTgsMjFIOEEyLDIgMCAwLDEgNiwxOVYxM0w2LDEyVjhDNiw3LjUgNi4yLDcgNi41OSw2LjU5TDcuMzgsNS43OUw1LjU5LDRIM1YyTTExLDVWN0gxN1Y1SDExTTExLjQxLDExTDkuNDEsOUg4VjEwLjQxTDEwLDEyLjQxVjE1LjU5TDgsMTcuNTlWMTlIOS40MUwxMS40MSwxN0gxNC41OUwxNi41OSwxOUgxOFYxNy41OUwxNiwxNS41OVYxMi40MUwxOCwxMC40MVY5SDE2LjU5TDE0LjU5LDExSDExLjQxTTEyLDEzSDE0VjE1SDEyVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZ1bGxzY3JlZW4gPSBcIk01LDVIMTBWN0g3VjEwSDVWNU0xNCw1SDE5VjEwSDE3VjdIMTRWNU0xNywxNEgxOVYxOUgxNFYxN0gxN1YxNE0xMCwxN1YxOUg1VjE0SDdWMTdIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVsbHNjcmVlbkV4aXQgPSBcIk0xNCwxNEgxOVYxNkgxNlYxOUgxNFYxNE01LDE0SDEwVjE5SDhWMTZINVYxNE04LDVIMTBWMTBINVY4SDhWNU0xOSw4VjEwSDE0VjVIMTZWOEgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGdW5jdGlvbiA9IFwiTTE1LjYsNS4yOUMxNC41LDUuMTkgMTMuNTMsNiAxMy40Myw3LjExTDEzLjE4LDEwSDE2VjEySDEzTDEyLjU2LDE3LjA3QzEyLjM3LDE5LjI3IDEwLjQzLDIwLjkgOC4yMywyMC43QzYuOTIsMjAuNTkgNS44MiwxOS44NiA1LjE3LDE4LjgzTDYuNjcsMTcuMzNDNi45MSwxOC4wNyA3LjU3LDE4LjY0IDguNCwxOC43MUM5LjUsMTguODEgMTAuNDcsMTggMTAuNTcsMTYuODlMMTEsMTJIOFYxMEgxMS4xN0wxMS40NCw2LjkzQzExLjYzLDQuNzMgMTMuNTcsMy4xIDE1Ljc3LDMuM0MxNy4wOCwzLjQxIDE4LjE4LDQuMTQgMTguODMsNS4xN0wxNy4zMyw2LjY3QzE3LjA5LDUuOTMgMTYuNDMsNS4zNiAxNS42LDUuMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVuY3Rpb25WYXJpYW50ID0gXCJNMTIuNDIsNS4yOUMxMS4zMiw1LjE5IDEwLjM1LDYgMTAuMjUsNy4xMUwxMCwxMEgxMi44MlYxMkg5LjgyTDkuMzgsMTcuMDdDOS4xOCwxOS4yNyA3LjI0LDIwLjkgNS4wNCwyMC43QzMuNzksMjAuNTkgMi42NiwxOS45IDIsMTguODNMMy41LDE3LjMzQzMuODMsMTguMzggNC45NiwxOC45NyA2LDE4LjYzQzYuNzgsMTguMzkgNy4zMywxNy43IDcuNCwxNi44OUw3LjgyLDEySDQuODJWMTBIOEw4LjI3LDYuOTNDOC40Niw0LjczIDEwLjM5LDMuMSAxMi42LDMuMjhDMTMuODYsMy4zOSAxNSw0LjA5IDE1LjY2LDUuMTdMMTQuMTYsNi42N0MxMy45MSw1LjkgMTMuMjMsNS4zNiAxMi40Miw1LjI5TTIyLDEzLjY1TDIwLjU5LDEyLjI0TDE3Ljc2LDE1LjA3TDE0LjkzLDEyLjI0TDEzLjUsMTMuNjVMMTYuMzUsMTYuNUwxMy41LDE5LjMxTDE0LjkzLDIwLjcyTDE3Ljc2LDE3Ljg5TDIwLjU5LDIwLjcyTDIyLDE5LjMxTDE5LjE3LDE2LjVMMjIsMTMuNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVyaWdhbmFIb3Jpem9udGFsID0gXCJNOC41IDJDNy4xMiAyIDYgMy4xMiA2IDQuNVM3LjEyIDcgOC41IDcgMTEgNS44OCAxMSA0LjUgOS44OCAyIDguNSAyTTE1LjUgMkMxNC4xMiAyIDEzIDMuMTIgMTMgNC41UzE0LjEyIDcgMTUuNSA3IDE4IDUuODggMTggNC41IDE2Ljg4IDIgMTUuNSAyTTExIDhWMTBINVYxMkgxNC45NUMxNC41MyAxMy4xMyAxMy41IDE0LjUgMTIuMTYgMTUuNjdDMTEuMTIgMTQuNzQgMTAuMzUgMTMuODIgOS44MiAxM0g3LjVDOC4wOCAxNC4yNSA5LjEzIDE1LjYyIDEwLjYyIDE2Ljk2TDYuNTUgMjAuMjJMNS43NiAyMC44NEw3IDIyLjQxTDcuOCAyMS43OEwxMi4xNyAxOC4yOEwxNi41NSAyMS43OEwxNy4zMyAyMi40MUwxOC41OCAyMC44NEwxNy44IDIwLjIyTDEzLjczIDE2Ljk3QzE1LjM0IDE1LjUgMTYuNyAxMy44NSAxNy4wNyAxMkgxOVYxMEgxM1Y4SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZ1cmlnYW5hVmVydGljYWwgPSBcIk04IDVWN0gyVjlIMTEuOTVDMTEuNTMgMTAuMTMgMTAuNSAxMS41IDkuMTYgMTIuNjdDOC4xMiAxMS43NCA3LjM1IDEwLjgyIDYuODIgMTBINC41QzUuMDggMTEuMjUgNi4xMyAxMi42MiA3LjYyIDEzLjk2TDMuNTUgMTcuMjJMMi43NiAxNy44NEw0IDE5LjQxTDQuOCAxOC43OEw5LjE3IDE1LjI4TDEzLjU1IDE4Ljc4TDE0LjMzIDE5LjQxTDE1LjU4IDE3Ljg0TDE0LjggMTcuMjJMMTAuNzMgMTMuOTdDMTIuMzQgMTIuNSAxMy43IDEwLjg1IDE0LjA3IDlIMTZWN0gxMFY1SDhNMTkuNSA2QzE4LjEyIDYgMTcgNy4xMiAxNyA4LjVTMTguMTIgMTEgMTkuNSAxMSAyMiA5Ljg4IDIyIDguNSAyMC44OCA2IDE5LjUgNk0xOS40NyAxM0MxOC4wOSAxMyAxNi45NyAxNC4xMiAxNi45NyAxNS41UzE4LjA5IDE4IDE5LjQ3IDE4IDIxLjk3IDE2Ljg4IDIxLjk3IDE1LjUgMjAuODUgMTMgMTkuNDcgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVzZSA9IFwiTTgsN1YxN0gxNVY3SDhNMTEuMTYsMTZWMTIuODdIOS40MUwxMS45MSw4VjExLjE0SDEzLjU5TDExLjE2LDE2TTE2LDJWNkg3VjJBMSwxIDAgMCwxIDgsMUgxNUExLDEgMCAwLDEgMTYsMk0xNiwxOFYyMkExLDEgMCAwLDEgMTUsMjNIOEExLDEgMCAwLDEgNywyMlYxOEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGdXNlQWxlcnQgPSBcIk02IDdWMTdIMTNWN0g2TTkuMTYgMTZWMTIuODdINy40MUw5LjkxIDhWMTEuMTRIMTEuNTlMOS4xNiAxNk0xNCAyVjZINVYyQzUgMS40NSA1LjQ1IDEgNiAxSDEzQzEzLjU1IDEgMTQgMS40NSAxNCAyTTE0IDE4VjIyQzE0IDIyLjU1IDEzLjU1IDIzIDEzIDIzSDZDNS40NSAyMyA1IDIyLjU1IDUgMjJWMThIMTRNMTkgMTNIMTdWN0gxOVYxM00xOSAxN0gxN1YxNUgxOVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGdXNlQmxhZGUgPSBcIk0xMCwyMUg4TDYsMTlWMTZIMTBWMjFNMTgsMTZIMTRWMjFIMTZMMTgsMTlWMTZNMywzVjRBMSwxIDAgMCwwIDQsNVYxNEExLDEgMCAwLDAgNSwxNUgxOUExLDEgMCAwLDAgMjAsMTRWNUgyMEExLDEgMCAwLDAgMjEsNFYzSDNNMTEuODMsMTNWOS43M0gxMEwxMi42MSw0LjY2VjcuOTNIMTQuMzZMMTEuODMsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVzZU9mZiA9IFwiTTE1IDExLjhMMTAuMiA3SDE1VjExLjhNMTYgNlYyQzE2IDEuNDUgMTUuNTUgMSAxNSAxSDhDNy40NSAxIDcgMS40NSA3IDJWMy44TDkuMiA2SDE2TTIuMzkgMS43M0wxLjExIDNMOCA5Ljg5VjE3SDE1LjExTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M003IDIyQzcgMjIuNTUgNy40NSAyMyA4IDIzSDE1QzE1LjU1IDIzIDE2IDIyLjU1IDE2IDIyVjE4SDdWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZCA9IFwiTTE2LjUsOUwxMy41LDEyTDE2LjUsMTVIMjJWOU05LDE2LjVWMjJIMTVWMTYuNUwxMiwxMy41TTcuNSw5SDJWMTVINy41TDEwLjUsMTJNMTUsNy41VjJIOVY3LjVMMTIsMTAuNUwxNSw3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZENpcmNsZSA9IFwiTTUsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSwxNkE0LDQgMCAwLDEgMSwxMkE0LDQgMCAwLDEgNSw4TTEyLDFBNCw0IDAgMCwxIDE2LDVBNCw0IDAgMCwxIDEyLDlBNCw0IDAgMCwxIDgsNUE0LDQgMCAwLDEgMTIsMU0xMiwxNUE0LDQgMCAwLDEgMTYsMTlBNCw0IDAgMCwxIDEyLDIzQTQsNCAwIDAsMSA4LDE5QTQsNCAwIDAsMSAxMiwxNU0xOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZBNCw0IDAgMCwxIDE1LDEyQTQsNCAwIDAsMSAxOSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRDaXJjbGVEb3duID0gXCJNNSw4QTQsNCAwIDAsMSA5LDEyQTQsNCAwIDAsMSA1LDE2QTQsNCAwIDAsMSAxLDEyQTQsNCAwIDAsMSA1LDhNMTIsMUE0LDQgMCAwLDEgMTYsNUE0LDQgMCAwLDEgMTIsOUE0LDQgMCAwLDEgOCw1QTQsNCAwIDAsMSAxMiwxTTEyLDE1QTQsNCAwIDAsMSAxNiwxOUE0LDQgMCAwLDEgMTIsMjNBNCw0IDAgMCwxIDgsMTlBNCw0IDAgMCwxIDEyLDE1TTE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkE0LDQgMCAwLDEgMTUsMTJBNCw0IDAgMCwxIDE5LDhNMTIsM0EyLDIgMCAwLDAgMTAsNUEyLDIgMCAwLDAgMTIsN0EyLDIgMCAwLDAgMTQsNUEyLDIgMCAwLDAgMTIsM001LDEwQTIsMiAwIDAsMCAzLDEyQTIsMiAwIDAsMCA1LDE0QTIsMiAwIDAsMCA3LDEyQTIsMiAwIDAsMCA1LDEwTTE5LDEwQTIsMiAwIDAsMCAxNywxMkEyLDIgMCAwLDAgMTksMTRBMiwyIDAgMCwwIDIxLDEyQTIsMiAwIDAsMCAxOSwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkQ2lyY2xlTGVmdCA9IFwiTTUsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSwxNkE0LDQgMCAwLDEgMSwxMkE0LDQgMCAwLDEgNSw4TTEyLDFBNCw0IDAgMCwxIDE2LDVBNCw0IDAgMCwxIDEyLDlBNCw0IDAgMCwxIDgsNUE0LDQgMCAwLDEgMTIsMU0xMiwxNUE0LDQgMCAwLDEgMTYsMTlBNCw0IDAgMCwxIDEyLDIzQTQsNCAwIDAsMSA4LDE5QTQsNCAwIDAsMSAxMiwxNU0xOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZBNCw0IDAgMCwxIDE1LDEyQTQsNCAwIDAsMSAxOSw4TTE5LDEwQTIsMiAwIDAsMCAxNywxMkEyLDIgMCAwLDAgMTksMTRBMiwyIDAgMCwwIDIxLDEyQTIsMiAwIDAsMCAxOSwxME0xMiwxN0EyLDIgMCAwLDAgMTAsMTlBMiwyIDAgMCwwIDEyLDIxQTIsMiAwIDAsMCAxNCwxOUEyLDIgMCAwLDAgMTIsMTdNMTIsM0EyLDIgMCAwLDAgMTAsNUEyLDIgMCAwLDAgMTIsN0EyLDIgMCAwLDAgMTQsNUEyLDIgMCAwLDAgMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkQ2lyY2xlT3V0bGluZSA9IFwiTTUsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSwxNkE0LDQgMCAwLDEgMSwxMkE0LDQgMCAwLDEgNSw4TTUsMTBBMiwyIDAgMCwwIDMsMTJBMiwyIDAgMCwwIDUsMTRBMiwyIDAgMCwwIDcsMTJBMiwyIDAgMCwwIDUsMTBNMTIsMUE0LDQgMCAwLDEgMTYsNUE0LDQgMCAwLDEgMTIsOUE0LDQgMCAwLDEgOCw1QTQsNCAwIDAsMSAxMiwxTTEyLDNBMiwyIDAgMCwwIDEwLDVBMiwyIDAgMCwwIDEyLDdBMiwyIDAgMCwwIDE0LDVBMiwyIDAgMCwwIDEyLDNNMTIsMTVBNCw0IDAgMCwxIDE2LDE5QTQsNCAwIDAsMSAxMiwyM0E0LDQgMCAwLDEgOCwxOUE0LDQgMCAwLDEgMTIsMTVNMTIsMTdBMiwyIDAgMCwwIDEwLDE5QTIsMiAwIDAsMCAxMiwyMUEyLDIgMCAwLDAgMTQsMTlBMiwyIDAgMCwwIDEyLDE3TTE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkE0LDQgMCAwLDEgMTUsMTJBNCw0IDAgMCwxIDE5LDhNMTksMTBBMiwyIDAgMCwwIDE3LDEyQTIsMiAwIDAsMCAxOSwxNEEyLDIgMCAwLDAgMjEsMTJBMiwyIDAgMCwwIDE5LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRDaXJjbGVSaWdodCA9IFwiTTUsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSwxNkE0LDQgMCAwLDEgMSwxMkE0LDQgMCAwLDEgNSw4TTEyLDFBNCw0IDAgMCwxIDE2LDVBNCw0IDAgMCwxIDEyLDlBNCw0IDAgMCwxIDgsNUE0LDQgMCAwLDEgMTIsMU0xMiwxNUE0LDQgMCAwLDEgMTYsMTlBNCw0IDAgMCwxIDEyLDIzQTQsNCAwIDAsMSA4LDE5QTQsNCAwIDAsMSAxMiwxNU0xOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZBNCw0IDAgMCwxIDE1LDEyQTQsNCAwIDAsMSAxOSw4TTEyLDNBMiwyIDAgMCwwIDEwLDVBMiwyIDAgMCwwIDEyLDdBMiwyIDAgMCwwIDE0LDVBMiwyIDAgMCwwIDEyLDNNNSwxMEEyLDIgMCAwLDAgMywxMkEyLDIgMCAwLDAgNSwxNEEyLDIgMCAwLDAgNywxMkEyLDIgMCAwLDAgNSwxME0xMiwxN0EyLDIgMCAwLDAgMTAsMTlBMiwyIDAgMCwwIDEyLDIxQTIsMiAwIDAsMCAxNCwxOUEyLDIgMCAwLDAgMTIsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZENpcmNsZVVwID0gXCJNNSw4QTQsNCAwIDAsMSA5LDEyQTQsNCAwIDAsMSA1LDE2QTQsNCAwIDAsMSAxLDEyQTQsNCAwIDAsMSA1LDhNMTIsMUE0LDQgMCAwLDEgMTYsNUE0LDQgMCAwLDEgMTIsOUE0LDQgMCAwLDEgOCw1QTQsNCAwIDAsMSAxMiwxTTEyLDE1QTQsNCAwIDAsMSAxNiwxOUE0LDQgMCAwLDEgMTIsMjNBNCw0IDAgMCwxIDgsMTlBNCw0IDAgMCwxIDEyLDE1TTE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkE0LDQgMCAwLDEgMTUsMTJBNCw0IDAgMCwxIDE5LDhNNSwxMEEyLDIgMCAwLDAgMywxMkEyLDIgMCAwLDAgNSwxNEEyLDIgMCAwLDAgNywxMkEyLDIgMCAwLDAgNSwxME0xOSwxMEEyLDIgMCAwLDAgMTcsMTJBMiwyIDAgMCwwIDE5LDE0QTIsMiAwIDAsMCAyMSwxMkEyLDIgMCAwLDAgMTksMTBNMTIsMTdBMiwyIDAgMCwwIDEwLDE5QTIsMiAwIDAsMCAxMiwyMUEyLDIgMCAwLDAgMTQsMTlBMiwyIDAgMCwwIDEyLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWREb3duID0gXCJNOSwyVjcuNUwxMiwxMC41TDE1LDcuNVYySDlNMiw5VjE1SDcuNUwxMC41LDEyTDcuNSw5SDJNMTYuNSw5TDEzLjUsMTJMMTYuNSwxNUgyMlY5SDE2LjVNMTIsMTMuNUw5LDE2LjVWMjJIMTVWMTYuNUwxMiwxMy41TTExLDE4SDEzVjIwSDExVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRMZWZ0ID0gXCJNOSwyVjcuNUwxMiwxMC41TDE1LDcuNVYySDlNMiw5VjE1SDcuNUwxMC41LDEyTDcuNSw5SDJNMTYuNSw5TDEzLjUsMTJMMTYuNSwxNUgyMlY5SDE2LjVNNCwxMUg2VjEzSDRWMTFNMTIsMTMuNUw5LDE2LjVWMjJIMTVWMTYuNUwxMiwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSaWdodCA9IFwiTTksMlY3LjVMMTIsMTAuNUwxNSw3LjVWMkg5TTIsOVYxNUg3LjVMMTAuNSwxMkw3LjUsOUgyTTE2LjUsOUwxMy41LDEyTDE2LjUsMTVIMjJWOUgxNi41TTE4LDExSDIwVjEzSDE4VjExTTEyLDEzLjVMOSwxNi41VjIySDE1VjE2LjVMMTIsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkUm91bmQgPSBcIk00LDhIOFY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjhIMjBBMiwyIDAgMCwxIDIyLDEwVjE0QTIsMiAwIDAsMSAyMCwxNkgxNlYyMEEyLDIgMCAwLDEgMTQsMjJIMTBBMiwyIDAgMCwxIDgsMjBWMTZINEEyLDIgMCAwLDEgMiwxNFYxMEEyLDIgMCAwLDEgNCw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSb3VuZERvd24gPSBcIk00LDhIOFY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjhIMjBBMiwyIDAgMCwxIDIyLDEwVjE0QTIsMiAwIDAsMSAyMCwxNkgxNlYyMEEyLDIgMCAwLDEgMTQsMjJIMTBBMiwyIDAgMCwxIDgsMjBWMTZINEEyLDIgMCAwLDEgMiwxNFYxMEEyLDIgMCAwLDEgNCw4TTEwLDE2VjIwSDE0VjE2SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSb3VuZExlZnQgPSBcIk00LDhIOFY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjhIMjBBMiwyIDAgMCwxIDIyLDEwVjE0QTIsMiAwIDAsMSAyMCwxNkgxNlYyMEEyLDIgMCAwLDEgMTQsMjJIMTBBMiwyIDAgMCwxIDgsMjBWMTZINEEyLDIgMCAwLDEgMiwxNFYxMEEyLDIgMCAwLDEgNCw4TTQsMTBWMTRIOFYxMEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSb3VuZE91dGxpbmUgPSBcIk00LDhIOFY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjhIMjBBMiwyIDAgMCwxIDIyLDEwVjE0QTIsMiAwIDAsMSAyMCwxNkgxNlYyMEEyLDIgMCAwLDEgMTQsMjJIMTBBMiwyIDAgMCwxIDgsMjBWMTZINEEyLDIgMCAwLDEgMiwxNFYxMEEyLDIgMCAwLDEgNCw4TTQsMTBWMTRIMTBWMjBIMTRWMTRIMjBWMTBIMTRWNEgxMFYxMEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSb3VuZFJpZ2h0ID0gXCJNNCw4SDhWNEEyLDIgMCAwLDEgMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY4SDIwQTIsMiAwIDAsMSAyMiwxMFYxNEEyLDIgMCAwLDEgMjAsMTZIMTZWMjBBMiwyIDAgMCwxIDE0LDIySDEwQTIsMiAwIDAsMSA4LDIwVjE2SDRBMiwyIDAgMCwxIDIsMTRWMTBBMiwyIDAgMCwxIDQsOE0xNiwxMFYxNEgyMFYxMEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkUm91bmRVcCA9IFwiTTQsOEg4VjRBMiwyIDAgMCwxIDEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWOEgyMEEyLDIgMCAwLDEgMjIsMTBWMTRBMiwyIDAgMCwxIDIwLDE2SDE2VjIwQTIsMiAwIDAsMSAxNCwyMkgxMEEyLDIgMCAwLDEgOCwyMFYxNkg0QTIsMiAwIDAsMSAyLDE0VjEwQTIsMiAwIDAsMSA0LDhNMTAsNFY4SDE0VjRIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZFNxdWFyZSA9IFwiTTIxLDZIM0EyLDIgMCAwLDAgMSw4VjE2QTIsMiAwIDAsMCAzLDE4SDIxQTIsMiAwIDAsMCAyMywxNlY4QTIsMiAwIDAsMCAyMSw2TTExLDEzSDhWMTZINlYxM0gzVjExSDZWOEg4VjExSDExTTE1LjUsMTVBMS41LDEuNSAwIDAsMSAxNCwxMy41QTEuNSwxLjUgMCAwLDEgMTUuNSwxMkExLjUsMS41IDAgMCwxIDE3LDEzLjVBMS41LDEuNSAwIDAsMSAxNS41LDE1TTE5LjUsMTJBMS41LDEuNSAwIDAsMSAxOCwxMC41QTEuNSwxLjUgMCAwLDEgMTkuNSw5QTEuNSwxLjUgMCAwLDEgMjEsMTAuNUExLjUsMS41IDAgMCwxIDE5LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZFNxdWFyZU91dGxpbmUgPSBcIk0yMSw2SDNBMiwyIDAgMCwwIDEsOFYxNkEyLDIgMCAwLDAgMywxOEgyMUEyLDIgMCAwLDAgMjMsMTZWOEEyLDIgMCAwLDAgMjEsNk0yMSwxNkgzVjhIMjFNNiwxNUg4VjEzSDEwVjExSDhWOUg2VjExSDRWMTNINk0xNC41LDEyQTEuNSwxLjUgMCAwLDEgMTYsMTMuNUExLjUsMS41IDAgMCwxIDE0LjUsMTVBMS41LDEuNSAwIDAsMSAxMywxMy41QTEuNSwxLjUgMCAwLDEgMTQuNSwxMk0xOC41LDlBMS41LDEuNSAwIDAsMSAyMCwxMC41QTEuNSwxLjUgMCAwLDEgMTguNSwxMkExLjUsMS41IDAgMCwxIDE3LDEwLjVBMS41LDEuNSAwIDAsMSAxOC41LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZFVwID0gXCJNOSwyVjcuNUwxMiwxMC41TDE1LDcuNVYySDlNMTEsNEgxM1Y2SDExVjRNMiw5VjE1SDcuNUwxMC41LDEyTDcuNSw5SDJNMTYuNSw5TDEzLjUsMTJMMTYuNSwxNUgyMlY5SDE2LjVNMTIsMTMuNUw5LDE2LjVWMjJIMTVWMTYuNUwxMiwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRWYXJpYW50ID0gXCJNNyw2SDE3QTYsNiAwIDAsMSAyMywxMkE2LDYgMCAwLDEgMTcsMThDMTUuMjIsMTggMTMuNjMsMTcuMjMgMTIuNTMsMTZIMTEuNDdDMTAuMzcsMTcuMjMgOC43OCwxOCA3LDE4QTYsNiAwIDAsMSAxLDEyQTYsNiAwIDAsMSA3LDZNNiw5VjExSDRWMTNINlYxNUg4VjEzSDEwVjExSDhWOUg2TTE1LjUsMTJBMS41LDEuNSAwIDAsMCAxNCwxMy41QTEuNSwxLjUgMCAwLDAgMTUuNSwxNUExLjUsMS41IDAgMCwwIDE3LDEzLjVBMS41LDEuNSAwIDAsMCAxNS41LDEyTTE4LjUsOUExLjUsMS41IDAgMCwwIDE3LDEwLjVBMS41LDEuNSAwIDAsMCAxOC41LDEyQTEuNSwxLjUgMCAwLDAgMjAsMTAuNUExLjUsMS41IDAgMCwwIDE4LjUsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkVmFyaWFudE91dGxpbmUgPSBcIk02LDlIOFYxMUgxMFYxM0g4VjE1SDZWMTNINFYxMUg2VjlNMTguNSw5QTEuNSwxLjUgMCAwLDEgMjAsMTAuNUExLjUsMS41IDAgMCwxIDE4LjUsMTJBMS41LDEuNSAwIDAsMSAxNywxMC41QTEuNSwxLjUgMCAwLDEgMTguNSw5TTE1LjUsMTJBMS41LDEuNSAwIDAsMSAxNywxMy41QTEuNSwxLjUgMCAwLDEgMTUuNSwxNUExLjUsMS41IDAgMCwxIDE0LDEzLjVBMS41LDEuNSAwIDAsMSAxNS41LDEyTTE3LDVBNyw3IDAgMCwxIDI0LDEyQTcsNyAwIDAsMSAxNywxOUMxNS4wNCwxOSAxMy4yNywxOC4yIDEyLDE2LjlDMTAuNzMsMTguMiA4Ljk2LDE5IDcsMTlBNyw3IDAgMCwxIDAsMTJBNyw3IDAgMCwxIDcsNUgxN003LDdBNSw1IDAgMCwwIDIsMTJBNSw1IDAgMCwwIDcsMTdDOC42NCwxNyAxMC4wOSwxNi4yMSAxMSwxNUgxM0MxMy45MSwxNi4yMSAxNS4zNiwxNyAxNywxN0E1LDUgMCAwLDAgMjIsMTJBNSw1IDAgMCwwIDE3LDdIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1tYSA9IFwiTTExLjc2IDE5QzEyLjkyIDE5IDEzLjU4IDE4IDEzLjU4IDE2LjI5QzEzLjU4IDE1LjIgMTMuNSAxMy44OCAxMy4zIDEyLjY3TDE4IDVIMTUuMjhMMTIuNzEgOS44MkwxMi41NSA5LjMzQzExLjgzIDcuMTkgMTAuODIgNSA4LjY4IDVDOCA1IDcuNDUgNS4xOCA3IDUuNTRDNiA2LjM5IDYgOCA2IDguNUg2LjkxQzYuOTcgOC4wNiA3LjIxIDYuODMgOC4yNSA2LjgzQzEwIDYuODMgMTAuOCAxMCAxMS40IDEyLjQyQzEwLjUgMTQuNTggMTAgMTYuMTQgMTAgMTYuOTdDMTAgMTcuOTUgMTAuNTYgMTkgMTEuNzYgMTlcIjtcclxuZXhwb3J0IHZhciBtZGlHYW50cnlDcmFuZSA9IFwiTTIxLDZIMjJWNEgyMVYzSDE4VjRINlYzSDNWNEgyVjZIM1YyMEgyVjIySDdWMjBINlY2SDExVjdIMTEuNVYxMC42MkMxMSwxMC43OSAxMC42OSwxMS4yNSAxMC42OSwxMS43NkMxMC42OSwxMi4yIDEwLjkyLDEyLjYgMTEuMywxMi44MlYxNEgxMS45MkMxMi4yNiwxNCAxMi41NCwxNC4yNyAxMi41NSwxNC42MUMxMi41NSwxNC45NiAxMi4yOCwxNS4yNCAxMS45MywxNS4yNEMxMS43MSwxNS4yNCAxMS41LDE1LjEyIDExLjM5LDE0LjkzQzExLjIyLDE0LjY0IDEwLjg0LDE0LjU0IDEwLjU1LDE0LjcxQzEwLjI2LDE0Ljg3IDEwLjE1LDE1LjI1IDEwLjMyLDE1LjU1QzEwLjY1LDE2LjEyIDExLjI2LDE2LjQ3IDExLjkyLDE2LjQ3QzEyLjk0LDE2LjQ2IDEzLjc2LDE1LjYyIDEzLjc1LDE0LjZDMTMuNzQsMTMuODMgMTMuMjYsMTMuMTQgMTIuNTMsMTIuODhWMTIuODJDMTMuMTIsMTIuNSAxMy4zNCwxMS43OCAxMy4wMywxMS4yQzEyLjkyLDExIDEyLjc0LDEwLjgxIDEyLjUzLDEwLjdWN0gxM1Y2SDE4VjIwSDE3VjIySDIyVjIwSDIxVjZNNSwxNS4yOVYxNi43MUw0LDE3LjcxVjE2LjI5TDUsMTUuMjlNNCwyMFYxOS4yNEw1LDE4LjI0VjE5LjY2TDQuNjYsMjBINE00LDcuMjlMNSw2LjI5VjcuNzFMNCw4LjcxVjcuMjlNNCwxMC4yOUw1LDkuMjlWMTAuNzFMNCwxMS43MVYxMC4yOU00LDEzLjI5TDUsMTIuMjlWMTMuNzFMNCwxNC43MVYxMy4yNEw0LDEzLjI5TTIwLDE1LjI5VjE2LjcxTDE5LDE3LjcxVjE2LjI5TDIwLDE1LjI5TTE5LDIwVjE5LjI0TDIwLDE4LjI0VjE5LjY2TDE5LjY2LDIwSDE5TTE5LDcuMjlMMjAsNi4yOVY3LjcxTDE5LDguNzFWNy4yOU0xOSwxMC4yOUwyMCw5LjI5VjEwLjcxTDE5LDExLjcxVjEwLjI5TTE5LDEzLjI5TDIwLDEyLjI5VjEzLjcxTDE5LDE0LjcxVjEzLjI0TDE5LDEzLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhcmFnZSA9IFwiTTE5LDIwSDE3VjExSDdWMjBINVY5TDEyLDVMMTksOVYyME04LDEySDE2VjE0SDhWMTJNOCwxNUgxNlYxN0g4VjE1TTE2LDE4VjIwSDhWMThIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FyYWdlQWxlcnQgPSBcIk0xNywyMEgxNVYxMUg1VjIwSDNWOUwxMCw1TDE3LDlWMjBNNiwxMkgxNFYxNEg2VjEyTTYsMTVIMTRWMTdINlYxNU0xOSwxNVYxMEgyMVYxNUgxOU0xOSwxOVYxN0gyMVYxOUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXJhZ2VBbGVydFZhcmlhbnQgPSBcIk0yMCA5VjIwSDE4VjExSDJWMjBIMFY5TDEwIDVMMjAgOU0xNyAxMkgzVjE0SDE3VjEyTTE3IDE1SDNWMTdIMTdWMTVNMjIgMTVWMTBIMjRWMTVIMjJNMjIgMTlWMTdIMjRWMTlIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FyYWdlT3BlbiA9IFwiTTE5LDIwSDE3VjExSDdWMjBINVY5TDEyLDVMMTksOVYyME04LDEySDE2VjE0SDhWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FyYWdlT3BlblZhcmlhbnQgPSBcIk0yMiA5VjIwSDIwVjExSDRWMjBIMlY5TDEyIDVMMjIgOU0xOSAxMkg1VjE0SDE5VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhcmFnZVZhcmlhbnQgPSBcIk0yMiA5VjIwSDIwVjExSDRWMjBIMlY5TDEyIDVMMjIgOU0xOSAxMkg1VjE0SDE5VjEyTTE5IDE4SDVWMjBIMTlWMThNMTkgMTVINVYxN0gxOVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXNDeWxpbmRlciA9IFwiTTE2LDlWMTRMMTYsMjBBMiwyIDAgMCwxIDE0LDIySDEwQTIsMiAwIDAsMSA4LDIwVjE0TDgsOUM4LDcuMTQgOS4yNyw1LjU3IDExLDUuMTNWNEg5VjJIMTVWNEgxM1Y1LjEzQzE0LjczLDUuNTcgMTYsNy4xNCAxNiw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhc1N0YXRpb24gPSBcIk0xOCwxMEExLDEgMCAwLDEgMTcsOUExLDEgMCAwLDEgMTgsOEExLDEgMCAwLDEgMTksOUExLDEgMCAwLDEgMTgsMTBNMTIsMTBINlY1SDEyTTE5Ljc3LDcuMjNMMTkuNzgsNy4yMkwxNi4wNiwzLjVMMTUsNC41NkwxNy4xMSw2LjY3QzE2LjE3LDcgMTUuNSw3LjkzIDE1LjUsOUEyLjUsMi41IDAgMCwwIDE4LDExLjVDMTguMzYsMTEuNSAxOC42OSwxMS40MiAxOSwxMS4yOVYxOC41QTEsMSAwIDAsMSAxOCwxOS41QTEsMSAwIDAsMSAxNywxOC41VjE0QzE3LDEyLjg5IDE2LjEsMTIgMTUsMTJIMTRWNUMxNCwzLjg5IDEzLjEsMyAxMiwzSDZDNC44OSwzIDQsMy44OSA0LDVWMjFIMTRWMTMuNUgxNS41VjE4LjVBMi41LDIuNSAwIDAsMCAxOCwyMUEyLjUsMi41IDAgMCwwIDIwLjUsMTguNVY5QzIwLjUsOC4zMSAyMC4yMiw3LjY4IDE5Ljc3LDcuMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FzU3RhdGlvbk9mZiA9IFwiTTEgNC4yN0wyLjI4IDNMMjEgMjEuNzJMMTkuNzMgMjNMMTcuNzEgMjFDMTYuNTYgMjAuODUgMTUuNjUgMTkuOTQgMTUuNSAxOC43OEwxNCAxNy4yN1YyMUg0VjcuMjdMMSA0LjI3TTE4IDEwQzE4LjU1IDEwIDE5IDkuNTUgMTkgOUMxOSA4LjQ1IDE4LjU1IDggMTggOEMxNy40NSA4IDE3IDguNDUgMTcgOUMxNyA5LjU1IDE3LjQ1IDEwIDE4IDEwTTEyIDEwVjVINi44Mkw1LjA2IDMuMjNDNS4zNCAzLjA4IDUuNjYgMyA2IDNIMTJDMTMuMSAzIDE0IDMuODkgMTQgNVYxMkgxNUMxNi4xIDEyIDE3IDEyLjg5IDE3IDE0VjE1LjE4TDExLjgyIDEwSDEyTTYgMTBINi43M0w2IDkuMjdWMTBNMTkuNzcgNy4yM0MyMC4yMiA3LjY4IDIwLjUgOC4zMSAyMC41IDlMMjAuNSAxOC42N0wxOSAxNy4xOFYxMS4yOUMxOC42OSAxMS40MiAxOC4zNiAxMS41IDE4IDExLjVDMTYuNjIgMTEuNSAxNS41IDEwLjM4IDE1LjUgOUMxNS41IDcuOTMgMTYuMTcgNy4wMyAxNy4xMSA2LjY3TDE1IDQuNTZMMTYuMDYgMy41TDE5Ljc4IDcuMjJMMTkuNzcgNy4yM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHYXNTdGF0aW9uT2ZmT3V0bGluZSA9IFwiTTEgNC4yN0wyLjI4IDNMNiA2LjcyTDIxIDIxLjcyTDE5LjczIDIzTDE3LjcyIDIxQzE2LjU2IDIwLjg1IDE1LjY1IDE5Ljk0IDE1LjUgMTguNzhMMTQgMTcuMjdWMjFINFY3LjI3TDEgNC4yN00xOS43NyA3LjIzQzIwLjIyIDcuNjggMjAuNSA4LjMxIDIwLjUgOUwyMC41IDE4LjY3TDE5IDE3LjE4VjExLjI5QzE4LjY5IDExLjQyIDE4LjM2IDExLjUgMTggMTEuNUMxNi42MiAxMS41IDE1LjUgMTAuMzggMTUuNSA5QzE1LjUgNy45MyAxNi4xNyA3LjAzIDE3LjExIDYuNjdMMTUgNC41NkwxNi4wNiAzLjVMMTkuNzggNy4yMkwxOS43NyA3LjIzTTExLjgyIDEwSDEyVjVINi44Mkw1LjA2IDMuMjRDNS4zNCAzLjA5IDUuNjYgMyA2IDNIMTJDMTMuMSAzIDE0IDMuOSAxNCA1VjEySDE1QzE2LjEgMTIgMTcgMTIuOSAxNyAxNFYxNS4xOEwxMS44MiAxME02IDEwSDYuNzNMNiA5LjI3VjEwTTYgMTJWMTlIMTJWMTUuMjdMOC43MyAxMkg2TTE4IDEwQzE4LjU1IDEwIDE5IDkuNTUgMTkgOUMxOSA4LjQ1IDE4LjU1IDggMTggOEMxNy40NSA4IDE3IDguNDUgMTcgOUMxNyA5LjU1IDE3LjQ1IDEwIDE4IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhc1N0YXRpb25PdXRsaW5lID0gXCJNMTkuNzcsNy4yM0wxOS43OCw3LjIyTDE2LjA2LDMuNUwxNSw0LjU2TDE3LjExLDYuNjdDMTYuMTcsNy4wMyAxNS41LDcuOTMgMTUuNSw5QTIuNSwyLjUgMCAwLDAgMTgsMTEuNUMxOC4zNiwxMS41IDE4LjY5LDExLjQyIDE5LDExLjI5VjE4LjVBMSwxIDAgMCwxIDE4LDE5LjVBMSwxIDAgMCwxIDE3LDE4LjVWMTRBMiwyIDAgMCwwIDE1LDEySDE0VjVBMiwyIDAgMCwwIDEyLDNINkEyLDIgMCAwLDAgNCw1VjIxSDE0VjEzLjVIMTUuNVYxOC41QTIuNSwyLjUgMCAwLDAgMTgsMjFBMi41LDIuNSAwIDAsMCAyMC41LDE4LjVWOUMyMC41LDguMzEgMjAuMjIsNy42OCAxOS43Nyw3LjIzTTEyLDEzLjVWMTlINlYxMkgxMlYxMy41TTEyLDEwSDZWNUgxMlYxME0xOCwxMEExLDEgMCAwLDEgMTcsOUExLDEgMCAwLDEgMTgsOEExLDEgMCAwLDEgMTksOUExLDEgMCAwLDEgMTgsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2F0ZSA9IFwiTTksNVYxMEg3VjZINVYxMEgzVjhIMVYyMEgzVjE4SDVWMjBIN1YxOEg5VjIwSDExVjE4SDEzVjIwSDE1VjE4SDE3VjIwSDE5VjE4SDIxVjIwSDIzVjhIMjFWMTBIMTlWNkgxN1YxMEgxNVY1SDEzVjEwSDExVjVIOU0zLDEySDVWMTZIM1YxMk03LDEySDlWMTZIN1YxMk0xMSwxMkgxM1YxNkgxMVYxMk0xNSwxMkgxN1YxNkgxNVYxMk0xOSwxMkgyMVYxNkgxOVYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRlQW5kID0gXCJNMiw0VjIwSDE0QTgsOCAwIDAsMCAyMiwxMkE4LDggMCAwLDAgMTQsNEgyTTQsNkgxNEE2LDYgMCAwLDEgMjAsMTJBNiw2IDAgMCwxIDE0LDE4SDRWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRlQXJyb3dSaWdodCA9IFwiTTE1IDVWMTBIMTNWNkgxMVYxMEg5VjhIN1YyMEg5VjE4SDExVjIwSDEyLjA5QTYgNiAwIDAgMSAxMiAxOUE2IDYgMCAwIDEgMTMgMTUuNjlWMTJIMTVWMTMuODFBNiA2IDAgMCAxIDE3IDEzLjA5VjEySDE5VjEzLjA5QTYgNiAwIDAgMSAyMSAxMy44MVYxMkgyMlYxMEgyMVY1SDE5VjEwSDE3VjVIMTVNOSAxMkgxMVYxNkg5VjEyTTE5IDE2VjE4SDE1VjIwSDE5VjIyTDIyIDE5TDE5IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhdGVOYW5kID0gXCJNMiw0VjIwSDEwQzEzLjQzLDIwIDE2LjUsMTcuODQgMTcuNiwxNC42QzE4LDE0LjggMTguNSwxNSAxOSwxNUEzLDMgMCAwLDAgMjIsMTJBMywzIDAgMCwwIDE5LDlDMTguNSw5IDE4LjAzLDkuMTUgMTcuNiw5LjRDMTYuNSw2LjE2IDEzLjQzLDQgMTAsNEgyTTQsNkgxMEE2LDYgMCAwLDEgMTYsMTJBNiw2IDAgMCwxIDEwLDE4SDRWNk0xOSwxMUMxOS41LDExIDIwLDExLjUgMjAsMTJDMjAsMTIuNSAxOS41LDEzIDE5LDEzQTEsMSAwIDAsMSAxOCwxMkMxOCwxMS41IDE4LjUsMTEgMTksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2F0ZU5vciA9IFwiTTIsNEM1LDEwIDUsMTQgMiwyMEg1QzkuNCwyMCAxMywxNy43IDE2LjYsMTMuN0MxNy4xNSwxNC41IDE4LjA0LDE1IDE5LDE1QTMsMyAwIDAsMCAyMiwxMkEzLDMgMCAwLDAgMTksOUMxOC4wNCw5IDE3LjE1LDkuNSAxNi42LDEwLjNDMTMsNi4zIDkuNCw0IDUsNEgyTTUsNkM4LjgsNiAxMiw4LjEgMTUuMywxMkMxMiwxNS45IDguOCwxOCA1LDE4QzYuNSwxNCA2LjUsMTAgNSw2TTE5LDExQzE5LjUsMTEgMjAsMTEuNSAyMCwxMkMyMCwxMi41IDE5LjUsMTMgMTksMTNBMSwxIDAgMCwxIDE4LDEyQzE4LDExLjUgMTguNSwxMSAxOSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRlTm90ID0gXCJNMiw0VjIwTDE2LjIsMTNDMTYuNjIsMTQuMTkgMTcuNzQsMTUgMTksMTVBMywzIDAgMCwwIDIyLDEyQTMsMyAwIDAsMCAxOSw5QzE3Ljc0LDkgMTYuNjIsOS44MSAxNi4yLDExTDIsNE00LDcuM0wxMy43LDEyTDQsMTYuN1Y3LjNNMTksMTFDMTkuNSwxMSAyMCwxMS41IDIwLDEyQzIwLDEyLjUgMTkuNSwxMyAxOSwxM0ExLDEgMCAwLDEgMTgsMTJDMTgsMTEuNSAxOC41LDExIDE5LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhdGVPcGVuID0gXCJNNyAyMFY2SDVWMTBIM1Y4SDFWMjBIM1YxOEg1VjIwSDdNMyAxNlYxMkg1VjE2SDNNMjEgOFYxMEgxOVY2SDE3VjIwSDE5VjE4SDIxVjIwSDIzVjhIMjFNMjEgMTZIMTlWMTJIMjFWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2F0ZU9yID0gXCJNMiw0QzUsMTAgNSwxNCAyLDIwSDhDMTMsMjAgMTksMTYgMjIsMTJDMTksOCAxMyw0IDgsNEgyTTUsNkg4QzExLjUsNiAxNi4zLDkgMTkuMywxMkMxNi4zLDE1IDExLjUsMTggOCwxOEg1QzYuNCwxMy45IDYuNCwxMC4xIDUsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRlWG5vciA9IFwiTTIsNEM1LDEwIDUsMTQgMiwyMEg0QzcsMTQgNywxMCA0LjEsNEgyTTYsNEM5LDEwIDksMTQgNiwyMEg5QzEyLjIsMjAgMTQuOCwxNi44IDE2LjcsMTRDMTcuMjgsMTQuNjUgMTguMTIsMTUgMTksMTVBMywzIDAgMCwwIDIyLDEyQTMsMyAwIDAsMCAxOSw5QzE4LjEyLDkgMTcuMjgsOS4zNSAxNi43LDEwQzE0LjcsNy4yIDEyLjIsNCA5LDRINk05LDZDMTIsNiAxNCwxMCAxNS41LDEyQzE0LDE0IDEyLDE4IDksMThDMTAuNiwxNCAxMC42LDEwIDksNk0xOSwxMUMxOS41LDExIDIwLDExLjUgMjAsMTJDMjAsMTIuNSAxOS41LDEzIDE5LDEzQTEsMSAwIDAsMSAxOCwxMkMxOCwxMS41IDE4LjUsMTEgMTksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2F0ZVhvciA9IFwiTTIsNEM1LDEwIDUsMTQgMiwyMEg0QzcsMTQgNywxMCA0LjEsNEgyTTYsNEM5LDEwIDksMTQgNiwyMEg5QzE0LDIwIDE4LDE3IDIyLDEyQzE4LDcgMTQsNCA5LDRINk05LDZDMTIuOCw2IDE2LDguMSAxOS4zLDEyQzE1LjksMTUuOSAxMi44LDE4IDksMThDMTAuNSwxNCAxMC41LDEwIDksNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRzYnkgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QzguMjcsNCA1LjE0LDYuNTUgNC4yNSwxMEwxNCwxOS43NUMxNy40NSwxOC44NiAyMCwxNS43MyAyMCwxMkgxNC43NVYxMy41SDE4LjJDMTcuNzEsMTUuNTQgMTYuMjQsMTcuMTkgMTQuMzEsMTcuOTRMNi4wNiw5LjY5QzcsNy4zMSA5LjMsNS42MyAxMiw1LjYzQzE0LjEzLDUuNjMgMTYsNi42NyAxNy4xOCw4LjI4TDE4LjQxLDcuMjJDMTYuOTUsNS4yNiAxNC42Myw0IDEyLDRNNCwxMkE4LDggMCAwLDAgMTIsMjBDMTIuMDQsMjAgMTIuMDksMjAgNCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXVnZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQzIwLDE0LjQgMTksMTYuNSAxNy4zLDE4QzE1LjksMTYuNyAxNCwxNiAxMiwxNkMxMCwxNiA4LjIsMTYuNyA2LjcsMThDNSwxNi41IDQsMTQuNCA0LDEyQTgsOCAwIDAsMSAxMiw0TTE0LDUuODlDMTMuNjIsNS45IDEzLjI2LDYuMTUgMTMuMSw2LjU0TDExLjgxLDkuNzdMMTEuNzEsMTBDMTEsMTAuMTMgMTAuNDEsMTAuNiAxMC4xNCwxMS4yNkM5LjczLDEyLjI5IDEwLjIzLDEzLjQ1IDExLjI2LDEzLjg2QzEyLjI5LDE0LjI3IDEzLjQ1LDEzLjc3IDEzLjg2LDEyLjc0QzE0LjEyLDEyLjA4IDE0LDExLjMyIDEzLjU3LDEwLjc2TDEzLjY3LDEwLjVMMTQuOTYsNy4yOUwxNC45Nyw3LjI2QzE1LjE3LDYuNzUgMTQuOTIsNi4xNyAxNC40MSw1Ljk2QzE0LjI4LDUuOTEgMTQuMTUsNS44OSAxNCw1Ljg5TTEwLDZBMSwxIDAgMCwwIDksN0ExLDEgMCAwLDAgMTAsOEExLDEgMCAwLDAgMTEsN0ExLDEgMCAwLDAgMTAsNk03LDlBMSwxIDAgMCwwIDYsMTBBMSwxIDAgMCwwIDcsMTFBMSwxIDAgMCwwIDgsMTBBMSwxIDAgMCwwIDcsOU0xNyw5QTEsMSAwIDAsMCAxNiwxMEExLDEgMCAwLDAgMTcsMTFBMSwxIDAgMCwwIDE4LDEwQTEsMSAwIDAsMCAxNyw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhdWdlRW1wdHkgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQzQsMTQuNCA1LDE2LjUgNi43LDE4QzguMSwxNi43IDEwLDE2IDEyLDE2QzE0LDE2IDE1LjgsMTYuNyAxNy4zLDE4QzE5LDE2LjUgMjAsMTQuNCAyMCwxMkE4LDggMCAwLDAgMTIsNE0xNCw2QTEsMSAwIDAsMSAxNSw3QTEsMSAwIDAsMSAxNCw4QTEsMSAwIDAsMSAxMyw3QTEsMSAwIDAsMSAxNCw2TTEwLDZBMSwxIDAgMCwxIDExLDdBMSwxIDAgMCwxIDEwLDhBMSwxIDAgMCwxIDksN0ExLDEgMCAwLDEgMTAsNk02LjkxLDguOTRDNy4wNCw4Ljk0IDcuMTYsOC45NyA3LjMsOUwxMC41LDEwLjMyTDEwLjc3LDEwLjQzQzExLjMzLDEwIDEyLjA5LDkuODggMTIuNzUsMTAuMTVDMTMuNzcsMTAuNTYgMTQuMjcsMTEuNzMgMTMuODUsMTIuNzVDMTMuNDQsMTMuNzcgMTIuMjcsMTQuMjcgMTEuMjUsMTMuODVDMTAuNTksMTMuNTkgMTAuMTIsMTMgMTAsMTIuMjhMOS43NywxMi4xOEw2LjU1LDEwLjg4TDYuNTMsMTAuODdDNiwxMC42NiA1Ljc3LDEwLjA4IDUuOTcsOS41NkM2LjEzLDkuMTggNi41LDguOTMgNi45MSw4Ljk0VjguOTRNMTcsOUExLDEgMCAwLDEgMTgsMTBBMSwxIDAgMCwxIDE3LDExQTEsMSAwIDAsMSAxNiwxMEExLDEgMCAwLDEgMTcsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXVnZUZ1bGwgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiw0QTgsOCAwIDAsMSAyMCwxMkMyMCwxNC40IDE5LDE2LjUgMTcuMywxOEMxNS45LDE2LjcgMTQsMTYgMTIsMTZDMTAsMTYgOC4yLDE2LjcgNi43LDE4QzUsMTYuNSA0LDE0LjQgNCwxMkE4LDggMCAwLDEgMTIsNE0xMCw2QTEsMSAwIDAsMCA5LDdBMSwxIDAgMCwwIDEwLDhBMSwxIDAgMCwwIDExLDdBMSwxIDAgMCwwIDEwLDZNMTQsNkExLDEgMCAwLDAgMTMsN0ExLDEgMCAwLDAgMTQsOEExLDEgMCAwLDAgMTUsN0ExLDEgMCAwLDAgMTQsNk0xNy4wOSw4Ljk0QzE2Ljk2LDguOTQgMTYuODQsOC45NyAxNi43LDlMMTMuNSwxMC4zMkwxMy4yMywxMC40M0MxMi42NywxMCAxMS45MSw5Ljg4IDExLjI1LDEwLjE1QzEwLjIzLDEwLjU2IDkuNzMsMTEuNzMgMTAuMTUsMTIuNzVDMTAuNTYsMTMuNzcgMTEuNzMsMTQuMjcgMTIuNzUsMTMuODVDMTMuNDEsMTMuNTkgMTMuODgsMTMgMTQsMTIuMjhMMTQuMjMsMTIuMThMMTcuNDUsMTAuODhMMTcuNDcsMTAuODdDMTgsMTAuNjYgMTguMjMsMTAuMDggMTguMDMsOS41NkMxNy44Nyw5LjE4IDE3LjUsOC45MyAxNy4wOSw4Ljk0TTcsOUExLDEgMCAwLDAgNiwxMEExLDEgMCAwLDAgNywxMUExLDEgMCAwLDAgOCwxMEExLDEgMCAwLDAgNyw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhdWdlTG93ID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkM0LDE0LjQgNSwxNi41IDYuNywxOEM4LjEsMTYuNyAxMCwxNiAxMiwxNkMxNCwxNiAxNS44LDE2LjcgMTcuMywxOEMxOSwxNi41IDIwLDE0LjQgMjAsMTJBOCw4IDAgMCwwIDEyLDRNMTAsNS44OUMxMC4zOCw1LjkgMTAuNzQsNi4xNSAxMC45LDYuNTRMMTIuMTksOS43N0wxMi4yOSwxMEMxMywxMC4xMyAxMy41OSwxMC42IDEzLjg2LDExLjI2QzE0LjI3LDEyLjI5IDEzLjc3LDEzLjQ1IDEyLjc0LDEzLjg2QzExLjcxLDE0LjI3IDEwLjU1LDEzLjc3IDEwLjE0LDEyLjc0QzkuODgsMTIuMDggMTAsMTEuMzIgMTAuNDMsMTAuNzZMMTAuMzMsMTAuNUw5LjA0LDcuMjlMOS4wMyw3LjI2QzguODMsNi43NSA5LjA4LDYuMTcgOS41OSw1Ljk2QzkuNzIsNS45MSA5Ljg1LDUuODkgMTAsNS44OVY1Ljg5TTE0LDZBMSwxIDAgMCwxIDE1LDdBMSwxIDAgMCwxIDE0LDhBMSwxIDAgMCwxIDEzLDdBMSwxIDAgMCwxIDE0LDZNMTcsOUExLDEgMCAwLDEgMTgsMTBBMSwxIDAgMCwxIDE3LDExQTEsMSAwIDAsMSAxNiwxMEExLDEgMCAwLDEgMTcsOU03LDlBMSwxIDAgMCwxIDgsMTBBMSwxIDAgMCwxIDcsMTFBMSwxIDAgMCwxIDYsMTBBMSwxIDAgMCwxIDcsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXZlbCA9IFwiTTIuMywyMC4yOEwxMS45LDEwLjY4TDEwLjUsOS4yNkw5Ljc4LDkuOTdDOS4zOSwxMC4zNiA4Ljc2LDEwLjM2IDguMzcsOS45N0w3LjY2LDkuMjZDNy4yNyw4Ljg3IDcuMjcsOC4yNCA3LjY2LDcuODVMMTMuMzIsMi4xOUMxMy43MSwxLjggMTQuMzQsMS44IDE0LjczLDIuMTlMMTUuNDQsMi45QzE1LjgzLDMuMjkgMTUuODMsMy45MiAxNS40NCw0LjMxTDE0LjczLDVMMTYuMTUsNi40M0MxNi41NCw2LjA0IDE3LjE3LDYuMDQgMTcuNTYsNi40M0MxNy45NSw2LjgyIDE3Ljk1LDcuNDYgMTcuNTYsNy44NUwxOC45Nyw5LjI2TDE5LjY4LDguNTVDMjAuMDcsOC4xNiAyMC43MSw4LjE2IDIxLjEsOC41NUwyMS44LDkuMjZDMjIuMTksOS42NSAyMi4xOSwxMC4yOSAyMS44LDEwLjY4TDE2LjE1LDE2LjMzQzE1Ljc2LDE2LjcyIDE1LjEyLDE2LjcyIDE0LjczLDE2LjMzTDE0LjAzLDE1LjYzQzEzLjYzLDE1LjI0IDEzLjYzLDE0LjYgMTQuMDMsMTQuMjFMMTQuNzMsMTMuNUwxMy4zMiwxMi4wOUwzLjcxLDIxLjdDMy4zMiwyMi4wOSAyLjY5LDIyLjA5IDIuMywyMS43QzEuOTEsMjEuMzEgMS45MSwyMC42NyAyLjMsMjAuMjhNMjAsMTlBMiwyIDAgMCwxIDIyLDIxVjIySDEyVjIxQTIsMiAwIDAsMSAxNCwxOUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlHZW5kZXJGZW1hbGUgPSBcIk0xMiw0QTYsNiAwIDAsMSAxOCwxMEMxOCwxMi45NyAxNS44NCwxNS40NCAxMywxNS45MlYxOEgxNVYyMEgxM1YyMkgxMVYyMEg5VjE4SDExVjE1LjkyQzguMTYsMTUuNDQgNiwxMi45NyA2LDEwQTYsNiAwIDAsMSAxMiw0TTEyLDZBNCw0IDAgMCwwIDgsMTBBNCw0IDAgMCwwIDEyLDE0QTQsNCAwIDAsMCAxNiwxMEE0LDQgMCAwLDAgMTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHZW5kZXJNYWxlID0gXCJNOSw5QzEwLjI5LDkgMTEuNSw5LjQxIDEyLjQ3LDEwLjExTDE3LjU4LDVIMTNWM0gyMVYxMUgxOVY2LjQxTDEzLjg5LDExLjVDMTQuNTksMTIuNSAxNSwxMy43IDE1LDE1QTYsNiAwIDAsMSA5LDIxQTYsNiAwIDAsMSAzLDE1QTYsNiAwIDAsMSA5LDlNOSwxMUE0LDQgMCAwLDAgNSwxNUE0LDQgMCAwLDAgOSwxOUE0LDQgMCAwLDAgMTMsMTVBNCw0IDAgMCwwIDksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VuZGVyTWFsZUZlbWFsZSA9IFwiTTE3LjU4LDRIMTRWMkgyMVY5SDE5VjUuNDFMMTUuMTcsOS4yNEMxNS42OSwxMC4wMyAxNiwxMSAxNiwxMkMxNiwxNC40MiAxNC4yOCwxNi40NCAxMiwxNi45VjE5SDE0VjIxSDEyVjIzSDEwVjIxSDhWMTlIMTBWMTYuOUM3LjcyLDE2LjQ0IDYsMTQuNDIgNiwxMkE1LDUgMCAwLDEgMTEsN0MxMiw3IDEyLjk2LDcuMyAxMy43NSw3LjgzTDE3LjU4LDRNMTEsOUEzLDMgMCAwLDAgOCwxMkEzLDMgMCAwLDAgMTEsMTVBMywzIDAgMCwwIDE0LDEyQTMsMyAwIDAsMCAxMSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlbmRlck1hbGVGZW1hbGVWYXJpYW50ID0gXCJNNyAzQTUgNSAwIDAgMCA5IDdBNSA1IDAgMCAwIDcgMTFBNSA1IDAgMCAwIDExIDE1LjlWMThIOVYyMEgxMVYyMkgxM1YyMEgxNVYxOEgxM1YxNS45QTUgNSAwIDAgMCAxNyAxMUE1IDUgMCAwIDAgMTUgN0E1IDUgMCAwIDAgMTcgM0gxNUEzIDMgMCAwIDEgMTIgNkEzIDMgMCAwIDEgOSAzTTEyIDhBMyAzIDAgMCAxIDE1IDExQTMgMyAwIDAgMSAxMiAxNEEzIDMgMCAwIDEgOSAxMUEzIDMgMCAwIDEgMTIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHZW5kZXJOb25CaW5hcnkgPSBcIk0xMyAzSDExVjUuMjdMOS4wNCA0LjEzTDguMDQgNS44N0wxMCA3TDguMDQgOC4xM0w5LjA0IDkuODdMMTEgOC43M1YxMi4xQzguNzIgMTIuNTYgNyAxNC41OCA3IDE3QzcgMTkuNzYgOS4yNCAyMiAxMiAyMlMxNyAxOS43NiAxNyAxN0MxNyAxNC41OCAxNS4yOCAxMi41NiAxMyAxMi4xVjguNzNMMTQuOTYgOS44N0wxNS45NiA4LjEzTDE0IDdMMTUuOTYgNS44N0wxNC45NiA0LjEzTDEzIDUuMjdWM00xMiAyMEMxMC4zNSAyMCA5IDE4LjY1IDkgMTdTMTAuMzUgMTQgMTIgMTQgMTUgMTUuMzUgMTUgMTcgMTMuNjUgMjAgMTIgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VuZGVyVHJhbnNnZW5kZXIgPSBcIk0xOS41OCwzSDE1VjFIMjNWOUgyMVY0LjQxTDE2LjE3LDkuMjRDMTYuNjksMTAuMDMgMTcsMTEgMTcsMTJDMTcsMTQuNDIgMTUuMjgsMTYuNDQgMTMsMTYuOVYxOUgxNVYyMUgxM1YyM0gxMVYyMUg5VjE5SDExVjE2LjlDOC43MiwxNi40NCA3LDE0LjQyIDcsMTJDNywxMSA3LjMsMTAuMDQgNy44Miw5LjI2TDYuNjQsOC4wN0w1LjI0LDkuNDZMMy44Myw4LjA0TDUuMjMsNi42NUwzLDQuNDJWOEgxVjFIOFYzSDQuNDFMNi42NCw1LjI0TDguMDgsMy44MUw5LjUsNS4yM0w4LjA2LDYuNjZMOS4yMyw3Ljg0QzEwLDcuMzEgMTEsNyAxMiw3QzEzLDcgMTMuOTYsNy4zIDE0Ljc1LDcuODNMMTkuNTgsM00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VudG9vID0gXCJNMTAuMjgsMkM5LjkzLDIgOS41NywyLjAzIDkuMjMsMi4xQzUuNjEsMi43NiAzLjA2LDUuODkgMi44NSw3Ljk2QzIuNzQsOC45NyAzLjI5LDkuNzMgMy41OSwxMC4wNkM0LjQsMTAuOTcgNi4wMywxMS42NiA3LjA3LDEyLjIzQzUuNTYsMTMuNSA0Ljg3LDE0LjE0IDQuMTksMTQuODZDMy4xNywxNS45MyAyLjQ1LDE3LjEgMi40NSwxNy45NUMyLjQ1LDE4LjIyIDIuNCwxOS4wOSAyLjc2LDE5Ljc3QzIuODksMjAuMDMgMy4yNywyMC44OSA0LjQxLDIxLjUzQzUuMTQsMjEuOTQgNi4xNywyMi4wOSA3LjE5LDIxLjk1QzEwLjMzLDIxLjUgMTQuNTQsMTguODMgMTcuNTUsMTYuMzVDMTkuNDYsMTQuNzcgMjAuODYsMTMuMjMgMjEuMjYsMTIuNUMyMS41OSwxMS44NyAyMS42MywxMC43OCAyMS40NCwxMC4wOUMyMC45LDguMTQgMTYuNTMsNC4xNSAxMi45NiwyLjU1QzEyLjE0LDIuMTggMTEuMiwyIDEwLjI4LDJNMTEuMzQsNC45MUMxMS41OSw0LjkxIDExLjgxLDQuOTQgMTIsNUMxMy4xNSw1LjMgMTUuMDgsNi42OCAxNC45MSw3Ljk0QzE0LjY4LDkuNiAxMy4yMywxMC4yNyAxMS41NiwxMC4wM0MxMC41OCw5LjkgOC42Myw4LjggOC43OCw2Ljg5QzguODksNS40IDEwLjMsNC45IDExLjM0LDQuOTFNMTEuMzIsNi42NUMxMS4wNSw2LjY1IDEwLjg0LDYuNzEgMTAuNzQsNi44N0MxMC4yNyw3LjU5IDEwLjUsOC4wOSAxMC45Miw4LjQyQzExLjA3LDguMDQgMTIuNzEsOC40NSAxMi43NSw4Ljc5QzE0LjE3LDcuNzIgMTIuMzYsNi42NiAxMS4zMiw2LjY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmUgPSBcIk00LjU5LDYuODlDNS4yOSw2LjE4IDYsNS41NCA2LjMsNS42N0M2LjgsNS44NyA2LjMsNi43IDYsNy4xOUM1Ljc1LDcuNjEgMy4xNCwxMS4wOCAzLjE0LDEzLjVDMy4xNCwxNC43OCAzLjYyLDE1Ljg0IDQuNSwxNi41QzUuMjMsMTcuMDQgNi4yMiwxNy4yMSA3LjEyLDE2Ljk0QzguMTksMTYuNjMgOS4wNywxNS41NCAxMC4xOCwxNC4xN0MxMS4zOSwxMi42OCAxMywxMC43MyAxNC4yNiwxMC43M0MxNS44OSwxMC43MyAxNS45MSwxMS43NCAxNiwxMi41QzEyLjI0LDEzLjE2IDEwLjY0LDE2LjE5IDEwLjY0LDE3Ljg5QzEwLjY0LDE5LjU5IDEyLjA4LDIxIDEzLjg1LDIxQzE1LjUsMjEgMTguMTQsMTkuNjUgMTguNTQsMTQuODhIMjFWMTIuMzhIMTguNTNDMTguMzgsMTAuNzMgMTcuNDQsOC4xOCAxNC41LDguMThDMTIuMjUsOC4xOCAxMC4zMiwxMC4wOSA5LjU2LDExQzksMTEuNzUgNy41LDEzLjUgNy4yNywxMy43NEM3LDE0LjA0IDYuNTksMTQuNTggNi4xNiwxNC41OEM1LjcxLDE0LjU4IDUuNDQsMTMuNzUgNS44LDEyLjY2QzYuMTUsMTEuNTcgNy4yLDkuOCA3LjY1LDkuMTRDOC40Myw4IDguOTUsNy4yMiA4Ljk1LDUuODZDOC45NSwzLjY5IDcuMzEsMyA2LjQ0LDNDNS4xMiwzIDMuOTcsNCAzLjcyLDQuMjVDMy4zNiw0LjYxIDMuMDYsNC45MSAyLjg0LDUuMThMNC41OSw2Ljg5TTEzLjg4LDE4LjU1QzEzLjU3LDE4LjU1IDEzLjE0LDE4LjI5IDEzLjE0LDE3LjgzQzEzLjE0LDE3LjIzIDEzLjg3LDE1LjYzIDE2LDE1LjA3QzE1LjcxLDE3Ljc2IDE0LjU4LDE4LjU1IDEzLjg4LDE4LjU1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVEb3VibGVUYXAgPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU0xMSw1QTQsNCAwIDAsMSAxNSw5QzE1LDEwLjUgMTQuMiwxMS43NyAxMywxMi40NlYxMS4yNEMxMy42MSwxMC42OSAxNCw5Ljg5IDE0LDlBMywzIDAgMCwwIDExLDZBMywzIDAgMCwwIDgsOUM4LDkuODkgOC4zOSwxMC42OSA5LDExLjI0VjEyLjQ2QzcuOCwxMS43NyA3LDEwLjUgNyw5QTQsNCAwIDAsMSAxMSw1TTExLDNBNiw2IDAgMCwxIDE3LDlDMTcsMTAuNyAxNi4yOSwxMi4yMyAxNS4xNiwxMy4zM0wxNC4xNiwxMi44OEMxNS4yOCwxMS45NiAxNiwxMC41NiAxNiw5QTUsNSAwIDAsMCAxMSw0QTUsNSAwIDAsMCA2LDlDNiwxMS4wNSA3LjIzLDEyLjgxIDksMTMuNThWMTQuNjZDNi42NywxMy44MyA1LDExLjYxIDUsOUE2LDYgMCAwLDEgMTEsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlUGluY2ggPSBcIk0xMyw5QTEsMSAwIDAsMSAxNCw4QTEsMSAwIDAsMSAxNSw5VjEzLjQ3TDE2LjIxLDEzLjZMMjEuMTUsMTUuOEMyMS42NywxNi4wNCAyMiwxNi41NiAyMiwxNy4xNFYyMS41QzIxLjk3LDIyLjMyIDIxLjMyLDIyLjk3IDIwLjUsMjNIMTRDMTMuNjIsMjMgMTMuMjYsMjIuODUgMTMsMjIuNTdMOC4xLDE4LjM3TDguODQsMTcuNkM5LjAzLDE3LjM5IDkuMywxNy4yOCA5LjU4LDE3LjI4SDkuOEwxMywxOVY5TTE0LDVDMTUuNDIsNSAxNi43NCw1Ljc2IDE3LjQ1LDdDMTguNTYsOC45IDE3LjkxLDExLjM1IDE2LDEyLjQ2VjExLjIzQzE2LjY0LDEwLjY3IDE3LDkuODUgMTcsOUEzLDMgMCAwLDAgMTQsNkEzLDMgMCAwLDAgMTEsOUMxMSw5Ljg1IDExLjM2LDEwLjY3IDEyLDExLjIzVjEyLjQ2QzEwLjc3LDExLjc1IDEwLDEwLjQzIDEwLDlBNCw0IDAgMCwxIDE0LDVNNCw5TDcsMTJINVYxNUgzVjEySDFMNCw5TTQsN0wxLDRIM1YxSDVWNEg3TDQsN005LDE0QzkuNzMsMTQgMTAuNDEsMTQuMTkgMTEsMTQuNTRWMTUuNzZDMTAuNDcsMTUuMjkgOS43NywxNSA5LDE1QTMsMyAwIDAsMCA2LDE4QzYsMTkgNi41LDE5Ljg3IDcuMjIsMjAuNDJMOS4zMSwyMkg5QTQsNCAwIDAsMSA1LDE4QTQsNCAwIDAsMSA5LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTcHJlYWQgPSBcIk00LDFMNyw0SDVWN0gzVjRIMUw0LDFNNCwxNUwxLDEySDNWOUg1VjEySDdMNCwxNU0xMyw5QTEsMSAwIDAsMSAxNCw4QTEsMSAwIDAsMSAxNSw5VjEzLjQ3TDE2LjIxLDEzLjZMMjEuMTUsMTUuOEMyMS42NywxNi4wNCAyMiwxNi41NiAyMiwxNy4xNFYyMS41QzIxLjk3LDIyLjMyIDIxLjMyLDIyLjk3IDIwLjUsMjNIMTRDMTMuNjIsMjMgMTMuMjYsMjIuODUgMTMsMjIuNTdMOC4xLDE4LjM3TDguODQsMTcuNkM5LjAzLDE3LjM5IDkuMywxNy4yOCA5LjU4LDE3LjI4SDkuOEwxMywxOVY5TTE0LDVDMTUuNDIsNSAxNi43NCw1Ljc2IDE3LjQ1LDdDMTguNTYsOC45IDE3LjkxLDExLjM1IDE2LDEyLjQ2VjExLjIzQzE2LjY0LDEwLjY3IDE3LDkuODUgMTcsOUEzLDMgMCAwLDAgMTQsNkEzLDMgMCAwLDAgMTEsOUMxMSw5Ljg1IDExLjM2LDEwLjY3IDEyLDExLjIzVjEyLjQ2QzEwLjc3LDExLjc1IDEwLDEwLjQzIDEwLDlBNCw0IDAgMCwxIDE0LDVNOSwxNEM5LjczLDE0IDEwLjQxLDE0LjE5IDExLDE0LjU0VjE1Ljc2QzEwLjQ3LDE1LjI5IDkuNzcsMTUgOSwxNUEzLDMgMCAwLDAgNiwxOEM2LDE5IDYuNSwxOS44NyA3LjIyLDIwLjQyTDkuMzEsMjJIOUE0LDQgMCAwLDEgNSwxOEE0LDQgMCAwLDEgOSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlU3dpcGUgPSBcIk0yMC4xMSwzLjg5TDIyLDJWN0gxN0wxOS4wOCw0LjkyQzE4LjU1LDQuMjMgMTcuNjQsMy42NiAxNi4zNiwzLjE5QzE1LjA4LDIuNzIgMTMuNjMsMi41IDEyLDIuNUMxMC4zOCwyLjUgOC45MiwyLjcyIDcuNjQsMy4xOUM2LjM2LDMuNjYgNS40NSw0LjIzIDQuOTIsNC45Mkw3LDdIMlYyTDMuODksMy44OUM0LjY0LDMgNS43NCwyLjMxIDcuMiwxLjc4QzguNjUsMS4yNSAxMC4yNSwxIDEyLDFDMTMuNzUsMSAxNS4zNSwxLjI1IDE2LjgsMS43OEMxOC4yNiwyLjMxIDE5LjM2LDMgMjAuMTEsMy44OU0xOS43MywxNi4yN1YxNi40NUwxOSwyMS43QzE4LjkyLDIyLjA4IDE4Ljc2LDIyLjM5IDE4LjUsMjIuNjRDMTguMjMsMjIuODkgMTcuOTEsMjMgMTcuNTMsMjNIMTAuNzNDMTAuMzYsMjMgMTAsMjIuODYgOS43LDIyLjU1TDQuNzMsMTcuNjNMNS41MywxNi44M0M1Ljc1LDE2LjYxIDYsMTYuNSA2LjMzLDE2LjVINi41NkwxMCwxNy4yNVY2LjVDMTAsNi4xMSAxMC4xMyw1Ljc2IDEwLjQzLDUuNDZDMTAuNzMsNS4xNiAxMS4wOCw1IDExLjUsNUMxMS44OSw1IDEyLjI0LDUuMTYgMTIuNTQsNS40NkMxMi44NCw1Ljc2IDEzLDYuMTEgMTMsNi41VjEyLjVIMTMuNzhDMTMuODgsMTIuNSAxNC4wNSwxMi41NSAxNC4zLDEyLjYxTDE4Ljg0LDE0Ljg2QzE5LjQ0LDE1LjE0IDE5LjczLDE1LjYxIDE5LjczLDE2LjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZURvd24gPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU0xLDlMNCwxMkw3LDlINVYzSDNWOUgxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZUhvcml6b250YWwgPSBcIk02LDFMMyw0TDYsN1Y1SDlWN0wxMiw0TDksMVYzSDZWMU0xMSw4QTEsMSAwIDAsMCAxMCw5VjE5TDYuOCwxNy4yOEg2LjU4QzYuMywxNy4yOCA2LjAzLDE3LjM5IDUuODQsMTcuNkw1LjEsMTguMzdMMTAsMjIuNTdDMTAuMjYsMjIuODUgMTAuNjIsMjMgMTEsMjNIMTcuNUExLjUsMS41IDAgMCwwIDE5LDIxLjVWMTcuMTRDMTksMTYuNTYgMTguNjgsMTYuMDMgMTguMTUsMTUuNzlMMTMuMjEsMTMuNkwxMiwxMy40N1Y5QTEsMSAwIDAsMCAxMSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZUxlZnQgPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU0zLDRMNiw3VjVIMTJWM0g2VjFMMyw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZVJpZ2h0ID0gXCJNMTAsOUExLDEgMCAwLDEgMTEsOEExLDEgMCAwLDEgMTIsOVYxMy40N0wxMy4yMSwxMy42TDE4LjE1LDE1Ljc5QzE4LjY4LDE2LjAzIDE5LDE2LjU2IDE5LDE3LjE0VjIxLjVDMTguOTcsMjIuMzIgMTguMzIsMjIuOTcgMTcuNSwyM0gxMUMxMC42MiwyMyAxMC4yNiwyMi44NSAxMCwyMi41N0w1LjEsMTguMzdMNS44NCwxNy42QzYuMDMsMTcuMzkgNi4zLDE3LjI4IDYuNTgsMTcuMjhINi44TDEwLDE5VjlNMTIsNEw5LDFWM0gzVjVIOVY3TDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VzdHVyZVN3aXBlVXAgPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU03LDZMNCwzTDEsNkgzVjEySDVWNkg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZVZlcnRpY2FsID0gXCJNNCwzTDEsNkgzVjlIMUw0LDEyTDcsOUg1VjZIN0w0LDNNMTEsOEExLDEgMCAwLDAgMTAsOVYxOUw2LjgsMTcuMjhINi41OEM2LjMsMTcuMjggNi4wMywxNy4zOSA1Ljg0LDE3LjZMNS4xLDE4LjM3TDEwLDIyLjU3QzEwLjI2LDIyLjg1IDEwLjYyLDIzIDExLDIzSDE3LjVBMS41LDEuNSAwIDAsMCAxOSwyMS41VjE3LjE0QzE5LDE2LjU2IDE4LjY4LDE2LjAzIDE4LjE1LDE1Ljc5TDEzLjIxLDEzLjZMMTIsMTMuNDdWOUExLDEgMCAwLDAgMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlVGFwID0gXCJNMTAsOUExLDEgMCAwLDEgMTEsOEExLDEgMCAwLDEgMTIsOVYxMy40N0wxMy4yMSwxMy42TDE4LjE1LDE1Ljc5QzE4LjY4LDE2LjAzIDE5LDE2LjU2IDE5LDE3LjE0VjIxLjVDMTguOTcsMjIuMzIgMTguMzIsMjIuOTcgMTcuNSwyM0gxMUMxMC42MiwyMyAxMC4yNiwyMi44NSAxMCwyMi41N0w1LjEsMTguMzdMNS44NCwxNy42QzYuMDMsMTcuMzkgNi4zLDE3LjI4IDYuNTgsMTcuMjhINi44TDEwLDE5VjlNMTEsNUE0LDQgMCAwLDEgMTUsOUMxNSwxMC41IDE0LjIsMTEuNzcgMTMsMTIuNDZWMTEuMjRDMTMuNjEsMTAuNjkgMTQsOS44OSAxNCw5QTMsMyAwIDAsMCAxMSw2QTMsMyAwIDAsMCA4LDlDOCw5Ljg5IDguMzksMTAuNjkgOSwxMS4yNFYxMi40NkM3LjgsMTEuNzcgNywxMC41IDcsOUE0LDQgMCAwLDEgMTEsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlVGFwQm94ID0gXCJNMjAgMkg0QzIuODkgMiAyIDIuODkgMiA0VjIwQzIgMjEuMTEgMi44OSAyMiA0IDIySDIwQzIxLjExIDIyIDIyIDIxLjExIDIyIDIwVjRDMjIgMi44OSAyMS4xMSAyIDIwIDJNMTEgNEMxMy4yMSA0IDE1IDUuNzkgMTUgOEMxNSA5LjUgMTQuMiAxMC43NyAxMyAxMS40NlYxMC4yNEMxMy42MSA5LjY5IDE0IDguODkgMTQgOEMxNCA2LjM0IDEyLjY2IDUgMTEgNVM4IDYuMzQgOCA4QzggOC44OSA4LjM5IDkuNjkgOSAxMC4yNFYxMS40NkM3LjggMTAuNzcgNyA5LjUgNyA4QzcgNS43OSA4Ljc5IDQgMTEgNE0xOCAxOC41QzE3Ljk3IDE5LjMyIDE3LjMyIDE5Ljk3IDE2LjUgMjBIMTFDMTAuNjIgMjAgMTAuMjYgMTkuODUgMTAgMTkuNTdMNiAxNS4zN0w2Ljc0IDE0LjZDNi45MyAxNC4zOSA3LjIgMTQuMjggNy41IDE0LjI4SDcuN0wxMCAxNlY4QzEwIDcuNDUgMTAuNDUgNyAxMSA3UzEyIDcuNDUgMTIgOFYxMi40N0wxMy4yMSAxMi42TDE3LjE1IDE0Ljc5QzE3LjY4IDE1LjAzIDE4IDE1LjU2IDE4IDE2LjE0VjE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VzdHVyZVRhcEJ1dHRvbiA9IFwiTTEzIDVDMTUuMjEgNSAxNyA2Ljc5IDE3IDlDMTcgMTAuNSAxNi4yIDExLjc3IDE1IDEyLjQ2VjExLjI0QzE1LjYxIDEwLjY5IDE2IDkuODkgMTYgOUMxNiA3LjM0IDE0LjY2IDYgMTMgNlMxMCA3LjM0IDEwIDlDMTAgOS44OSAxMC4zOSAxMC42OSAxMSAxMS4yNFYxMi40NkM5LjggMTEuNzcgOSAxMC41IDkgOUM5IDYuNzkgMTAuNzkgNSAxMyA1TTIwIDIwLjVDMTkuOTcgMjEuMzIgMTkuMzIgMjEuOTcgMTguNSAyMkgxM0MxMi42MiAyMiAxMi4yNiAyMS44NSAxMiAyMS41N0w4IDE3LjM3TDguNzQgMTYuNkM4LjkzIDE2LjM5IDkuMiAxNi4yOCA5LjUgMTYuMjhIOS43TDEyIDE4VjlDMTIgOC40NSAxMi40NSA4IDEzIDhTMTQgOC40NSAxNCA5VjEzLjQ3TDE1LjIxIDEzLjZMMTkuMTUgMTUuNzlDMTkuNjggMTYuMDMgMjAgMTYuNTYgMjAgMTcuMTRWMjAuNU0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjEyQzIgMTMuMTEgMi45IDE0IDQgMTRIOFYxMkw0IDEyTDQgNEgyMEwyMCAxMkgxOFYxNEgyMFYxMy45NkwyMC4wNCAxNEMyMS4xMyAxNCAyMiAxMy4wOSAyMiAxMlY0QzIyIDIuOSAyMS4xMSAyIDIwIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VzdHVyZVRhcEhvbGQgPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU05LDEyLjQ0VjlBMiwyIDAgMCwxIDExLDdBMiwyIDAgMCwxIDEzLDlWMTIuNDRDMTQuMTksMTEuNzUgMTUsMTAuNDcgMTUsOUE0LDQgMCAwLDAgMTEsNUE0LDQgMCAwLDAgNyw5QzcsMTAuNDcgNy44MSwxMS43NSA5LDEyLjQ0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVUd29Eb3VibGVUYXAgPSBcIk0xOSwxNS4xNFYyMS41QzE4Ljk3LDIyLjMyIDE4LjMyLDIyLjk3IDE3LjUsMjNIMTFDMTAuNjIsMjMgMTAuMjYsMjIuODUgMTAsMjIuNTdMNS4xLDE4LjM3TDUuODQsMTcuNkM2LjAzLDE3LjM5IDYuMywxNy4yOCA2LjU4LDE3LjI4SDYuOEwxMCwxOVY5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjdBMSwxIDAgMCwxIDEzLDZBMSwxIDAgMCwxIDE0LDdWMTJMMTguMTUsMTMuODRDMTguNjYsMTQuMDcgMTksMTQuNTggMTksMTUuMTRNMTMsM0E0LDQgMCAwLDEgMTcsN0MxNyw4LjUgMTYuMiw5Ljc3IDE1LDEwLjQ2VjkuMjRDMTUuNjEsOC42OSAxNiw3Ljg5IDE2LDdBMywzIDAgMCwwIDEzLDRDMTEuNjUsNCAxMC41LDQuOSAxMC4xMyw2LjEzQzguOSw2LjUgOCw3LjY1IDgsOUM4LDkuODkgOC4zOSwxMC42OSA5LDExLjI0VjEyLjQ2QzcuOCwxMS43NyA3LDEwLjUgNyw5QzcsNy4zOCA3Ljk3LDYgOS4zNSw1LjM1QzEwLDMuOTcgMTEuMzgsMyAxMywzTTEzLDFBNiw2IDAgMCwxIDE5LDdDMTksOS4wNiAxNy45NiwxMC44OCAxNi4zOCwxMS45NkwxNS4yNiwxMS40NkMxNi44OSwxMC42NCAxOCw4Ljk1IDE4LDdBNSw1IDAgMCwwIDEzLDJDMTEuMTEsMiA5LjQ2LDMuMDUgOC42MSw0LjYxQzcuMDUsNS40NiA2LDcuMTEgNiw5QzYsMTEuMDUgNy4yMywxMi44MSA5LDEzLjU4VjE0LjY2QzYuNjcsMTMuODMgNSwxMS42MSA1LDlDNSw2LjgzIDYuMTUsNC45MyA3Ljg4LDMuODhDOC45MywyLjE1IDEwLjgzLDEgMTMsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlVHdvVGFwID0gXCJNMTksMTUuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOUExLDEgMCAwLDEgMTEsOEExLDEgMCAwLDEgMTIsOVY3QTEsMSAwIDAsMSAxMyw2QTEsMSAwIDAsMSAxNCw3VjEyTDE4LjE1LDEzLjg0QzE4LjY2LDE0LjA3IDE5LDE0LjU4IDE5LDE1LjE0TTE1LDEwLjQ1VjkuMjRMMTUsOS4yM0MxNS4yMyw5LjAzIDE1LjQyLDguNzkgMTUuNTcsOC41NEMxNS44NCw4LjA5IDE2LDcuNTYgMTYsN0EzLDMgMCAwLDAgMTMsNEMxMi4yMSw0IDExLjUsNC4zMSAxMC45NSw0LjgxTDEwLjgxLDQuOTVDMTAuNjgsNS4wOSAxMC41Niw1LjI0IDEwLjQ2LDUuNEMxMC4zNiw1LjU2IDEwLjI3LDUuNzQgMTAuMiw1LjkyQzEwLjE3LDYgMTAuMTUsNi4wNiAxMC4xMyw2LjEzQzguOSw2LjUgOCw3LjY1IDgsOUM4LDkuNyA4LjI0LDEwLjM0IDguNjQsMTAuODVDOC43NCwxMSA4Ljg3LDExLjExIDksMTEuMjNWMTEuMjRMOSwxMi40NlYxMi40NkM3LjgsMTEuNzcgNywxMC41IDcsOUM3LDcuMzggNy45Nyw2IDkuMzUsNS4zNUMxMCwzLjk3IDExLjM4LDMgMTMsM0E0LDQgMCAwLDEgMTcsN0MxNyw4LjUgMTYuMiw5Ljc3IDE1LDEwLjQ2VjEwLjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdob3N0ID0gXCJNMTIsMkE5LDkgMCAwLDAgMywxMVYyMkw2LDE5TDksMjJMMTIsMTlMMTUsMjJMMTgsMTlMMjEsMjJWMTFBOSw5IDAgMCwwIDEyLDJNOSw4QTIsMiAwIDAsMSAxMSwxMEEyLDIgMCAwLDEgOSwxMkEyLDIgMCAwLDEgNywxMEEyLDIgMCAwLDEgOSw4TTE1LDhBMiwyIDAgMCwxIDE3LDEwQTIsMiAwIDAsMSAxNSwxMkEyLDIgMCAwLDEgMTMsMTBBMiwyIDAgMCwxIDE1LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2hvc3RPZmYgPSBcIk0yLDMuMjdMMy4yOCwyTDIyLDIwLjcyTDIwLjczLDIyTDE3Ljg3LDE5LjEzTDE1LDIyTDEyLDE5TDksMjJMNiwxOUwzLDIyVjExQzMsOS4wOSAzLjU5LDcuMzMgNC42LDUuODdMMiwzLjI3TTEyLDJBOSw5IDAgMCwxIDIxLDExVjE3LjE4TDE1LjcsMTEuODhDMTYuNDYsMTEuNTkgMTcsMTAuODYgMTcsMTBBMiwyIDAgMCwwIDE1LDhDMTQuMTQsOCAxMy40MSw4LjU0IDEzLjEzLDkuM0w3LjIsMy4zOEM4LjU5LDIuNSAxMC4yNCwyIDEyLDJNNywxMEEyLDIgMCAwLDAgOSwxMkM5LjUsMTIgOS45MywxMS44MyAxMC4yNywxMS41NEw3LjQ2LDguNzNDNy4xNyw5LjA3IDcsOS41IDcsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2hvc3RPZmZPdXRsaW5lID0gXCJNOC4yOSA1LjA5TDYuODQgMy42NEM4LjMgMi42MSAxMC4wOCAyIDEyIDJDMTYuOTcgMiAyMSA2LjAzIDIxIDExVjE3LjhMMTkgMTUuOFYxMUMxOSA3LjE0IDE1Ljg2IDQgMTIgNEMxMC42MyA0IDkuMzYgNC40IDguMjkgNS4wOU0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxNy41NiAxOS40NUwxNSAyMkwxMiAxOUw5IDIyTDYgMTlMMyAyMlYxMUMzIDkuMjYgMy41IDcuNjMgNC4zNiA2LjI1TDEuMTEgM0wyLjM5IDEuNzNMNi44OSA2LjIzTDguNjkgOC4wM0g4LjY5TDEwLjk3IDEwLjMxVjEwLjMxTDE3LjQxIDE2Ljc2TDE3LjQyIDE2Ljc2TDIxIDIwLjM0VjIwLjM1TDIyLjExIDIxLjQ2TTE2LjE0IDE4LjAzTDkuODkgMTEuNzhDOS42MiAxMS45MiA5LjMyIDEyIDkgMTJDNy45IDEyIDcgMTEuMTEgNyAxMEM3IDkuNjggNy4wOCA5LjM4IDcuMjIgOS4xMUw1LjgyIDcuNzFDNS4zIDguNjkgNSA5LjgxIDUgMTFWMTcuMTdMNiAxNi4xN0w3LjQxIDE3LjU5TDkgMTkuMTdMMTAuNTkgMTcuNTlMMTIgMTYuMTdMMTMuNDEgMTcuNTlMMTUgMTkuMTdMMTYuMTQgMTguMDNNMTUgOEMxMy45NiA4IDEzLjExIDguOCAxMyA5LjgyTDE1LjE4IDEyQzE2LjIgMTEuODkgMTcgMTEuMDQgMTcgMTBDMTcgOC45IDE2LjExIDggMTUgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHaG9zdE91dGxpbmUgPSBcIk0xMiAyQzcuMDMgMiAzIDYuMDMgMyAxMVYyMkw2IDE5TDkgMjJMMTIgMTlMMTUgMjJMMTggMTlMMjEgMjJWMTFDMjEgNi4wMyAxNi45NyAyIDEyIDJNMTkgMTcuMTdMMTggMTYuMTdMMTYuNTkgMTcuNTlMMTUgMTkuMTdMMTMuNDEgMTcuNTlMMTIgMTYuMTdMMTAuNTkgMTcuNTlMOSAxOS4xN0w3LjQxIDE3LjU5TDYgMTYuMTdMNSAxNy4xN1YxMUM1IDcuMTQgOC4xNCA0IDEyIDRTMTkgNy4xNCAxOSAxMVYxNy4xN00xMSAxMEMxMSAxMS4xMSAxMC4xMSAxMiA5IDEyUzcgMTEuMTEgNyAxMCA3LjkgOCA5IDggMTEgOC45IDExIDEwTTE3IDEwQzE3IDExLjExIDE2LjExIDEyIDE1IDEyUzEzIDExLjExIDEzIDEwIDEzLjkgOCAxNSA4IDE3IDguOSAxNyAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlHaWYgPSBcIk0xMSw4SDEzVjE2SDExVjhNNy42Nyw4SDQuMzNDMy41Myw4IDMsOC42NyAzLDkuMzNWMTQuNjdDMywxNS4zMyAzLjUzLDE2IDQuMzMsMTZINy42N0M4LjQ3LDE2IDksMTUuMzMgOSwxNC42N1YxMkg3VjE0SDVWMTBIOVY5LjMzQzksOC42NyA4LjQ3LDggNy42Nyw4TTIxLDEwVjhIMTVWMTZIMTdWMTRIMTkuNVYxMkgxN1YxMEgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlHaWZ0ID0gXCJNOS4wNiwxLjkzQzcuMTcsMS45MiA1LjMzLDMuNzQgNi4xNyw2SDNBMiwyIDAgMCwwIDEsOFYxMEExLDEgMCAwLDAgMiwxMUgxMVY4SDEzVjExSDIyQTEsMSAwIDAsMCAyMywxMFY4QTIsMiAwIDAsMCAyMSw2SDE3LjgzQzE5LDIuNzMgMTQuNiwwLjQyIDEyLjU3LDMuMjRMMTIsNEwxMS40MywzLjIyQzEwLjgsMi4zMyA5LjkzLDEuOTQgOS4wNiwxLjkzTTksNEM5Ljg5LDQgMTAuMzQsNS4wOCA5LjcxLDUuNzFDOS4wOCw2LjM0IDgsNS44OSA4LDVBMSwxIDAgMCwxIDksNE0xNSw0QzE1Ljg5LDQgMTYuMzQsNS4wOCAxNS43MSw1LjcxQzE1LjA4LDYuMzQgMTQsNS44OSAxNCw1QTEsMSAwIDAsMSAxNSw0TTIsMTJWMjBBMiwyIDAgMCwwIDQsMjJIMjBBMiwyIDAgMCwwIDIyLDIwVjEySDEzVjIwSDExVjEySDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2lmdE9mZiA9IFwiTTEuMTEgM0w0LjE0IDYuMDRIM0MxLjkgNi4wNCAxIDYuOTMgMSA4LjA0VjEwLjA0QzEgMTAuNTkgMS40NSAxMS4wNCAyIDExLjA0SDkuMTVMMTAuMTUgMTIuMDRIMlYyMC4wNEMyIDIxLjE0IDIuOSAyMi4wNCA0IDIyLjA0SDIwQzIwLjA1IDIyLjA0IDIwLjA5IDIyLjAzIDIwLjEzIDIyTDIxLjU2IDIzLjQ1TDIyLjgzIDIyLjE4TDIuMzkgMS43M0wxLjExIDNNMTEgMTIuODlMMTMgMTQuODlWMjAuMDRIMTFWMTIuODlNMjIgMTIuMDRWMTguOEwxNS4yNCAxMi4wNEgyMk0yMSA2LjA0SDE3LjgzQzE5IDIuNzcgMTQuNiAuNDU1IDEyLjU3IDMuMjhMMTIgNC4wNEwxMS40MyAzLjI2QzEwLjggMi4zNyA5LjkzIDIgOS4wNiAxLjk3QzguMDYgMS45NiA3LjA4IDIuNSA2LjUgMy4zTDguMDQgNC44NEM4LjEzIDQuMzggOC41IDQuMDQgOSA0LjA0QzkuODkgNC4wNCAxMC4zNCA1LjEyIDkuNzEgNS43NUM5LjU2IDUuODkgOS4zOSA2IDkuMjEgNkwxMS4yNCA4LjA0SDEzVjkuOEwxNC4yNCAxMS4wNEgyMkMyMi41NSAxMS4wNCAyMyAxMC41OSAyMyAxMC4wNFY4LjA0QzIzIDYuOTMgMjIuMTEgNi4wNCAyMSA2LjA0TTE1LjcxIDUuNzVDMTUuMDggNi4zOCAxNCA1LjkzIDE0IDUuMDRDMTQgNC41IDE0LjQ1IDQuMDQgMTUgNC4wNEMxNS44OSA0LjA0IDE2LjM0IDUuMTIgMTUuNzEgNS43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlHaWZ0T2ZmT3V0bGluZSA9IFwiTTIxIDZIMTcuODNDMTcuOTQgNS42OSAxOCA1LjM1IDE4IDVDMTggMy4zNCAxNi42NiAyIDE1IDJDMTQgMiAxMy4xMiAyLjUgMTIuNTcgMy4yNFYzLjIzTDEyIDRMMTEuNDMgMy4yM1YzLjI0QzEwLjg4IDIuNSAxMCAyIDkgMkM3Ljk3IDIgNy4wNiAyLjUgNi41IDMuMzJMOC4wMyA0LjgzQzguMTIgNC4zNiA4LjUgNCA5IDRDOS41NSA0IDEwIDQuNDUgMTAgNUMxMCA1LjUgOS42NCA1Ljg4IDkuMTcgNS45N0wxMyA5LjhWOEgyMVYxMEgxMy4yTDE1LjIgMTJIMjBWMTYuOEwyMiAxOC44VjEyQzIyLjU1IDEyIDIzIDExLjU1IDIzIDExVjhDMjMgNi45IDIyLjExIDYgMjEgNk0xNSA2QzE0LjQ1IDYgMTQgNS41NSAxNCA1UzE0LjQ1IDQgMTUgNCAxNiA0LjQ1IDE2IDUgMTUuNTUgNiAxNSA2TTEuMTEgM0w0LjExIDZIM0MxLjkgNiAxIDYuOSAxIDhWMTFDMSAxMS41NSAxLjQ1IDEyIDIgMTJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgyMEMyMC4wMyAyMiAyMC4wNyAyMiAyMC4xIDIyTDIxLjU2IDIzLjQ1TDIyLjgzIDIyLjE4TDIuMzkgMS43M0wxLjExIDNNMTMgMTQuODlMMTguMTEgMjBIMTNWMTQuODlNMTEgMTIuODlWMjBINFYxMkgxMC4xMUwxMSAxMi44OU04LjExIDEwSDNWOEg2LjExTDguMTEgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2lmdE9wZW4gPSBcIk0yMiAxMC45MkwxOS4yNiA5LjMzQzIxLjkgNy4wOCAxOS4yNSAyLjg4IDE2LjA4IDQuMzFMMTUuMjEgNC42OEwxNS4xIDMuNzJDMTUgMi42NCAxNC40NCAxLjg3IDEzLjcgMS40MkMxMi4wNiAuNDY3IDkuNTYgMS4xMiA5LjE2IDMuNUw2LjQxIDEuOTJDNS40NSAxLjM2IDQuMjMgMS42OSAzLjY4IDIuNjVMMi42OCA0LjM4QzIuNCA0Ljg2IDIuNTcgNS40NyAzLjA1IDUuNzVMMTAuODQgMTAuMjVMMTIuMzQgNy42NUwxNC4wNyA4LjY1TDEyLjU3IDExLjI1TDIwLjM2IDE1Ljc1QzIwLjg0IDE2IDIxLjQ2IDE1Ljg2IDIxLjczIDE1LjM4TDIyLjczIDEzLjY1QzIzLjI4IDEyLjY5IDIyLjk2IDExLjQ3IDIyIDEwLjkyTTEyLjM3IDVDMTEuNSA1LjI1IDEwLjggNC4zMiAxMS4yNCAzLjU1QzExLjUgMy4wNyAxMi4xMyAyLjkxIDEyLjYxIDMuMThDMTMuMzggMy42MyAxMy4yMyA0Ljc5IDEyLjM3IDVNMTcuNTYgOEMxNi43IDguMjUgMTYgNy4zMiAxNi40NCA2LjU1QzE2LjcxIDYuMDcgMTcuMzMgNS45MSAxNy44IDYuMThDMTguNTcgNi42MyAxOC40MiA3Ljc5IDE3LjU2IDhNMjAuODcgMTYuODhDMjEuMjggMTYuODggMjEuNjcgMTYuNzQgMjIgMTYuNVYyMEMyMiAyMS4xMSAyMS4xMSAyMiAyMCAyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTFIMTAuMTVMMTEgMTEuNVYyMEgxM1YxMi42NUwxOS44NyAxNi42MUMyMC4xNyAxNi43OSAyMC41IDE2Ljg4IDIwLjg3IDE2Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdpZnRPcGVuT3V0bGluZSA9IFwiTTIyIDEwLjg3TDE5LjI2IDkuMjhDMTkuNSA5LjA3IDE5LjczIDguOCAxOS45IDguNUMyMC43MyA3LjA3IDIwLjI0IDUuMjMgMTguOCA0LjRDMTcuOTQgMy45IDE2LjkzIDMuOSAxNi4wOCA0LjI2TDE2LjA5IDQuMjVMMTUuMjEgNC42NEwxNS4xIDMuNjhMMTUuMDkgMy42OUMxNSAyLjc4IDE0LjQ3IDEuOSAxMy42MSAxLjRDMTIuMTcgLjU3NSAxMC4zNCAxLjA3IDkuNSAyLjVDOS4zMyAyLjggOS4yMiAzLjEzIDkuMTYgMy40NUw2LjQxIDEuODdDNS40NSAxLjMyIDQuMjMgMS42NCAzLjY4IDIuNkwyLjE4IDUuMkMxLjkgNS42OCAyLjA3IDYuMjkgMi41NSA2LjU2TDQuMjggNy41Nkw4LjUgMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDIwQzIxLjExIDIyIDIyIDIxLjExIDIyIDIwVjE0Ljg3TDIyLjczIDEzLjZDMjMuMjggMTIuNjQgMjIuOTYgMTEuNDIgMjIgMTAuODdNMTYuNDQgNi41QzE2LjcxIDYgMTcuMzMgNS44NiAxNy44IDYuMTNDMTguMjggNi40MSAxOC40NSA3IDE4LjE3IDcuNUMxNy44OSA4IDE3LjI4IDguMTQgMTYuOCA3Ljg3QzE2LjMzIDcuNTkgMTYuMTYgNyAxNi40NCA2LjVNMTQuMDcgOC42TDIxIDEyLjZMMjAgMTQuMzNMMTMuMDcgMTAuMzNMMTQuMDcgOC42TTExIDIwSDRWMTJIMTFWMjBNMTEuMzQgOS4zM0w0LjQxIDUuMzNMNS40MSAzLjZMMTIuMzQgNy42TDExLjM0IDkuMzNNMTEuNjEgNC44N0MxMS4xMyA0LjU5IDEwLjk3IDQgMTEuMjQgMy41QzExLjUgMyAxMi4xMyAyLjg2IDEyLjYxIDMuMTNDMTMuMDkgMy40MSAxMy4yNSA0IDEyLjk3IDQuNUMxMi43IDUgMTIuMDkgNS4xNCAxMS42MSA0Ljg3TTEzIDIwVjEyLjZMMjAgMTYuNjRWMjBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2lmdE91dGxpbmUgPSBcIk0yMiwxMlYyMEEyLDIgMCAwLDEgMjAsMjJINEEyLDIgMCAwLDEgMiwyMFYxMkExLDEgMCAwLDEgMSwxMVY4QTIsMiAwIDAsMSAzLDZINi4xN0M2LjA2LDUuNjkgNiw1LjM1IDYsNUEzLDMgMCAwLDEgOSwyQzEwLDIgMTAuODgsMi41IDExLjQzLDMuMjRWMy4yM0wxMiw0TDEyLjU3LDMuMjNWMy4yNEMxMy4xMiwyLjUgMTQsMiAxNSwyQTMsMyAwIDAsMSAxOCw1QzE4LDUuMzUgMTcuOTQsNS42OSAxNy44Myw2SDIxQTIsMiAwIDAsMSAyMyw4VjExQTEsMSAwIDAsMSAyMiwxMk00LDIwSDExVjEySDRWMjBNMjAsMjBWMTJIMTNWMjBIMjBNOSw0QTEsMSAwIDAsMCA4LDVBMSwxIDAgMCwwIDksNkExLDEgMCAwLDAgMTAsNUExLDEgMCAwLDAgOSw0TTE1LDRBMSwxIDAgMCwwIDE0LDVBMSwxIDAgMCwwIDE1LDZBMSwxIDAgMCwwIDE2LDVBMSwxIDAgMCwwIDE1LDRNMyw4VjEwSDExVjhIM00xMyw4VjEwSDIxVjhIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2l0ID0gXCJNMi42LDEwLjU5TDguMzgsNC44TDEwLjA3LDYuNUM5LjgzLDcuMzUgMTAuMjIsOC4yOCAxMSw4LjczVjE0LjI3QzEwLjQsMTQuNjEgMTAsMTUuMjYgMTAsMTZBMiwyIDAgMCwwIDEyLDE4QTIsMiAwIDAsMCAxNCwxNkMxNCwxNS4yNiAxMy42LDE0LjYxIDEzLDE0LjI3VjkuNDFMMTUuMDcsMTEuNUMxNSwxMS42NSAxNSwxMS44MiAxNSwxMkEyLDIgMCAwLDAgMTcsMTRBMiwyIDAgMCwwIDE5LDEyQTIsMiAwIDAsMCAxNywxMEMxNi44MiwxMCAxNi42NSwxMCAxNi41LDEwLjA3TDEzLjkzLDcuNUMxNC4xOSw2LjU3IDEzLjcxLDUuNTUgMTIuNzgsNS4xNkMxMi4zNSw1IDExLjksNC45NiAxMS41LDUuMDdMOS44LDMuMzhMMTAuNTksMi42QzExLjM3LDEuODEgMTIuNjMsMS44MSAxMy40MSwyLjZMMjEuNCwxMC41OUMyMi4xOSwxMS4zNyAyMi4xOSwxMi42MyAyMS40LDEzLjQxTDEzLjQxLDIxLjRDMTIuNjMsMjIuMTkgMTEuMzcsMjIuMTkgMTAuNTksMjEuNEwyLjYsMTMuNDFDMS44MSwxMi42MyAxLjgxLDExLjM3IDIuNiwxMC41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlHaXRodWIgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJDMiwxNi40MiA0Ljg3LDIwLjE3IDguODQsMjEuNUM5LjM0LDIxLjU4IDkuNSwyMS4yNyA5LjUsMjFDOS41LDIwLjc3IDkuNSwyMC4xNCA5LjUsMTkuMzFDNi43MywxOS45MSA2LjE0LDE3Ljk3IDYuMTQsMTcuOTdDNS42OCwxNi44MSA1LjAzLDE2LjUgNS4wMywxNi41QzQuMTIsMTUuODggNS4xLDE1LjkgNS4xLDE1LjlDNi4xLDE1Ljk3IDYuNjMsMTYuOTMgNi42MywxNi45M0M3LjUsMTguNDUgOC45NywxOCA5LjU0LDE3Ljc2QzkuNjMsMTcuMTEgOS44OSwxNi42NyAxMC4xNywxNi40MkM3Ljk1LDE2LjE3IDUuNjIsMTUuMzEgNS42MiwxMS41QzUuNjIsMTAuMzkgNiw5LjUgNi42NSw4Ljc5QzYuNTUsOC41NCA2LjIsNy41IDYuNzUsNi4xNUM2Ljc1LDYuMTUgNy41OSw1Ljg4IDkuNSw3LjE3QzEwLjI5LDYuOTUgMTEuMTUsNi44NCAxMiw2Ljg0QzEyLjg1LDYuODQgMTMuNzEsNi45NSAxNC41LDcuMTdDMTYuNDEsNS44OCAxNy4yNSw2LjE1IDE3LjI1LDYuMTVDMTcuOCw3LjUgMTcuNDUsOC41NCAxNy4zNSw4Ljc5QzE4LDkuNSAxOC4zOCwxMC4zOSAxOC4zOCwxMS41QzE4LjM4LDE1LjMyIDE2LjA0LDE2LjE2IDEzLjgxLDE2LjQxQzE0LjE3LDE2LjcyIDE0LjUsMTcuMzMgMTQuNSwxOC4yNkMxNC41LDE5LjYgMTQuNSwyMC42OCAxNC41LDIxQzE0LjUsMjEuMjcgMTQuNjYsMjEuNTkgMTUuMTcsMjEuNUMxOS4xNCwyMC4xNiAyMiwxNi40MiAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdpdGxhYiA9IFwiTTIxLjk0IDEzLjExTDIwLjg5IDkuODlDMjAuODkgOS44NiAyMC44OCA5LjgzIDIwLjg3IDkuOEwxOC43NiAzLjMyQzE4LjY1IDMgMTguMzMgMi43NSAxNy45NiAyLjc1QzE3LjYgMi43NSAxNy4yOCAzIDE3LjE3IDMuMzNMMTUuMTcgOS41SDguODRMNi44MyAzLjMzQzYuNzIgMyA2LjQgMi43NSA2LjA0IDIuNzVINi4wNEM1LjY3IDIuNzUgNS4zNSAzIDUuMjQgMy4zM0wzLjEzIDkuODJDMy4xMyA5LjgyIDMuMTMgOS44MyAzLjEzIDkuODNMMi4wNiAxMy4xMUMxLjkgMTMuNjEgMi4wNyAxNC4xNSAyLjUgMTQuNDVMMTEuNzIgMjEuMTZDMTEuODkgMjEuMjggMTIuMTEgMjEuMjggMTIuMjggMjEuMTVMMjEuNSAxNC40NUMyMS45MyAxNC4xNSAyMi4xIDEzLjYxIDIxLjk0IDEzLjExTTguMTUgMTAuNDVMMTAuNzIgMTguMzZMNC41NSAxMC40NU0xMy4yOCAxOC4zN0wxNS43NSAxMC43OEwxNS44NSAxMC40NUgxOS40NkwxMy44NyAxNy42MU0xNy45NyAzLjk0TDE5Ljc4IDkuNUgxNi4xNk0xNC44NiAxMC40NUwxMy4wNyAxNS45NkwxMiAxOS4yNEw5LjE0IDEwLjQ1TTYuMDMgMy45NEw3Ljg0IDkuNUg0LjIzTTMuMDUgMTMuNjlDMi45NiAxMy42MiAyLjkyIDEzLjUgMi45NiAxMy40TDMuNzUgMTAuOTdMOS41NyAxOC40Mk0yMC45NSAxMy42OUwxNC40NCAxOC40MkwxNC40NiAxOC4zOUwyMC4yNSAxMC45N0wyMS4wNCAxMy40QzIxLjA4IDEzLjUgMjEuMDQgMTMuNjIgMjAuOTUgMTMuNjlcIjtcclxuZXhwb3J0IHZhciBtZGlHbGFzc0NvY2t0YWlsID0gXCJNNy41LDdMNS41LDVIMTguNUwxNi41LDdNMTEsMTNWMTlINlYyMUgxOFYxOUgxM1YxM0wyMSw1VjNIM1Y1TDExLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzQ29ja3RhaWxPZmYgPSBcIk0xMy4zMyAxMi42N0w3LjY2IDdMNi4xMyA1LjQ3TDIuMzkgMS43M0wxLjExIDNMMyA0Ljg5VjVMMTEgMTNWMTlINlYyMUgxOFYxOS44OUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwxMy4zMyAxMi42N00xMyAxOVYxNC44OUwxNy4xMSAxOUgxM004LjIgNUw2LjIgM0gyMVY1TDE0LjYgMTEuNEwxMC4yIDdIMTYuNUwxOC41IDVIOC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzRmx1dGUgPSBcIk04LDJIMTZDMTUuNjcsNSAxNS4zMyw4IDE0Ljc1LDkuODNDMTQuMTcsMTEuNjcgMTMuMzMsMTIuMzMgMTIuOTIsMTQuMDhDMTIuNSwxNS44MyAxMi41LDE4LjY3IDEzLjA4LDIwQzEzLjY3LDIxLjMzIDE0LjgzLDIxLjE3IDE1LjQyLDIxLjI1QzE2LDIxLjMzIDE2LDIxLjY3IDE2LDIySDhDOCwyMS42NyA4LDIxLjMzIDguNTgsMjEuMjVDOS4xNywyMS4xNyAxMC4zMywyMS4zMyAxMC45MiwyMEMxMS41LDE4LjY3IDExLjUsMTUuODMgMTEuMDgsMTQuMDhDMTAuNjcsMTIuMzMgOS44MywxMS42NyA5LjI1LDkuODNDOC42Nyw4IDguMzMsNSA4LDJNMTAsNEMxMC4wNyw1LjAzIDEwLjE1LDYuMDcgMTAuMjQsN0gxMy43NkMxMy44NSw2LjA3IDEzLjkzLDUuMDMgMTQsNEgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlHbGFzc011ZyA9IFwiTTEwLDRWN0gxOFY0SDEwTTgsMkgyMEwyMSwyVjNMMjAsNFYyMEwyMSwyMVYyMkgyMEw4LDIySDdWMjFMOCwyMFYxOC42TDQuMiwxNi44M0MzLjUsMTYuNSAzLDE1LjgyIDMsMTVWOEEyLDIgMCAwLDEgNSw2SDhWNEw3LDNWMkg4TTUsMTVMOCwxNi4zOVY4SDVWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2xhc3NNdWdPZmYgPSBcIk0yMCAxOS4zNVYxOS4zNEw2LjY2IDZMNi4wNyA1LjQxTDIuMzkgMS43M0wxLjExIDNMNC4yNiA2LjE1QzMuNSA2LjQ0IDMgNy4xNiAzIDhWMTVDMyAxNS44MiAzLjUgMTYuNSA0LjIgMTYuODNMOCAxOC42VjIwTDcgMjFWMjJIMjAuMTFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMjAgMTkuMzVNOCAxNi4zOUw1IDE1VjhINi4xMUw4IDkuODlWMTYuMzlNOCA0TDcgM1YySDIxVjNMMjAgNFYxNi44TDEwLjIgN0gxOFY0SDEwVjYuOEw4IDQuOFY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzTXVnVmFyaWFudCA9IFwiTTkuNSAzQzcuNTYgMyA1Ljg1IDQuMjQgNS4yMyA2LjA4QzMuMzYgNi40NCAyIDguMDkgMiAxMEMyIDEyLjIxIDMuNzkgMTQgNiAxNFYyMkgxN1YyMEgyMEMyMC41NSAyMCAyMSAxOS41NSAyMSAxOVYxMUMyMSAxMC40NSAyMC41NSAxMCAyMCAxMEgxOFY4QzE4IDUuNzkgMTYuMjEgNCAxNCA0SDEyLjMyQzExLjUgMy4zNSAxMC41MyAzIDkuNSAzTTkuNSA1QzEwLjI5IDUgMTEuMDMgNS4zNyAxMS41IDZIMTRDMTUuMTEgNiAxNiA2LjkgMTYgOEgxMkMxMCA4IDkuMzIgOS4xMyA4LjUgMTAuNjNDNy42OCAxMi4xMyA2IDEyIDYgMTJDNC44OSAxMiA0IDExLjExIDQgMTBDNCA4LjkgNC44OSA4IDYgOEg3VjcuNUM3IDYuMTIgOC4xMiA1IDkuNSA1TTE3IDEySDE5VjE4SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzTXVnVmFyaWFudE9mZiA9IFwiTTguNDQgNS4yNEw3IDMuNzlDNy43MSAzLjI5IDguNTcgMyA5LjUgM0MxMC41MyAzIDExLjUgMy4zNSAxMi4zMiA0SDE0QzE2LjIxIDQgMTggNS43OSAxOCA4VjEwSDIwQzIwLjU1IDEwIDIxIDEwLjQ1IDIxIDExVjE3LjhMMTkgMTUuOFYxMkgxN1YxMy44TDExLjI2IDguMDZDMTEuNSA4IDExLjczIDggMTIgOEgxNkMxNiA2LjkgMTUuMTEgNiAxNCA2SDExLjVDMTEuMDMgNS4zNyAxMC4yOSA1IDkuNSA1QzkuMTIgNSA4Ljc2IDUuMDkgOC40NCA1LjI0TTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE4LjExIDIwSDE3VjIySDZWMTRDMy43OSAxNCAyIDEyLjIxIDIgMTBDMiA4LjM3IDMgNi45NCA0LjQ0IDYuMzNMMS4xMSAzTDIuMzkgMS43M0w3LjE5IDYuNTRMOS42MSA4Ljk2TDE3IDE2LjM0VjE2LjM1TDE4LjY1IDE4SDE4LjY2TDIwLjUgMTkuODRWMTkuODVMMjIuMTEgMjEuNDZNOC41OSAxMC41TDYuMTEgOEg2QzQuODkgOCA0IDguOSA0IDEwQzQgMTEuMTEgNC44OSAxMiA2IDEyQzYgMTIgNy42OCAxMi4xMyA4LjUgMTAuNjNMOC41OSAxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzUGludE91dGxpbmUgPSBcIk00IDJMNiAyMkgxN0wxOSAySDRNNi4yIDRIMTYuOEwxNS4yIDIwSDcuOEw2LjIgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHbGFzc1N0YW5nZSA9IFwiTTgsMkgxNlYyMkg4VjJNMTAsNFY3SDE0VjRIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2xhc3NUdWxpcCA9IFwiTTgsMkgxNkMxNS42NywyLjY3IDE1LjMzLDMuMzMgMTUuNTgsNUMxNS44Myw2LjY3IDE2LjY3LDkuMzMgMTYuMjUsMTAuNzRDMTUuODMsMTIuMTQgMTQuMTcsMTIuMjggMTMuMzMsMTMuODZDMTIuNSwxNS40NCAxMi41LDE4LjQ3IDEzLjA4LDE5LjlDMTMuNjcsMjEuMzMgMTQuODMsMjEuMTcgMTUuNDIsMjEuMjVDMTYsMjEuMzMgMTYsMjEuNjcgMTYsMjJIOEM4LDIxLjY3IDgsMjEuMzMgOC41OCwyMS4yNUM5LjE3LDIxLjE3IDEwLjMzLDIxLjMzIDEwLjkyLDE5LjlDMTEuNSwxOC40NyAxMS41LDE1LjQ0IDEwLjY3LDEzLjg2QzkuODMsMTIuMjggOC4xNywxMi4xNCA3Ljc1LDEwLjc0QzcuMzMsOS4zMyA4LjE3LDYuNjcgOC40Miw1QzguNjcsMy4zMyA4LjMzLDIuNjcgOCwyTTEwLDRDMTAsNS4xOSA5LjgzLDYuMTcgOS42NCw3SDE0LjI3QzE0LjEzLDYuMTcgMTQsNS4xOSAxNCw0SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzV2luZSA9IFwiTTE1LjUsMjEuMjdMMTQuNjYsMjEuMThDMTMuOSwyMS4xMSAxMy4yNSwyMC42IDEzLDE5Ljg3QzEyLjQ3LDE3LjkxIDEyLjQ3LDE1LjgzIDEzLDEzLjg3QzE1LjMyLDEzLjQgMTcsMTEuMzcgMTcsOUMxNyw3IDE1LDIgMTUsMkg5QzksMiA3LDcgNyw5QzcsMTEuMzggOC42NywxMy40MiAxMSwxMy45QzExLjUzLDE1Ljg2IDExLjUzLDE3Ljk0IDExLDE5LjlDMTAuNzYsMjAuNjIgMTAuMTIsMjEuMTMgOS4zNywyMS4yMUw4LjUsMjEuM0M4LjUsMjEuMyA4LDIxLjI4IDgsMjJIMTZDMTYsMjEuMjggMTUuNSwyMS4yNyAxNS41LDIxLjI3TTkuNDQsN0wxMC40NCw0SDEzLjU2TDE0LjU2LDdIOS40NFpcIjtcclxuZXhwb3J0IHZhciBtZGlHbGFzc2VzID0gXCJNMywxMEMyLjc2LDEwIDIuNTUsMTAuMDkgMi40MSwxMC4yNUMyLjI3LDEwLjQgMi4yMSwxMC42MiAyLjI0LDEwLjg2TDIuNzQsMTMuODVDMi44MiwxNC41IDMuNCwxNSA0LDE1SDdDNy42NCwxNSA4LjM2LDE0LjQ0IDguNSwxMy44Mkw5LjU2LDEwLjYzQzkuNiwxMC41IDkuNTcsMTAuMzEgOS41LDEwLjE5QzkuMzksMTAuMDcgOS4yMiwxMCA5LDEwSDNNNywxN0g0QzIuMzgsMTcgMC45NiwxNS43NCAwLjc2LDE0LjE0TDAuMjYsMTEuMTVDMC4xNSwxMC4zIDAuMzksOS41IDAuOTEsOC45MkMxLjQzLDguMzQgMi4xOSw4IDMsOEg5QzkuODMsOCAxMC41OCw4LjM1IDExLjA2LDguOTZDMTEuMTcsOS4xMSAxMS4yNyw5LjI3IDExLjM1LDkuNDVDMTEuNzgsOS4zNiAxMi4yMiw5LjM2IDEyLjY0LDkuNDVDMTIuNzIsOS4yNyAxMi44Miw5LjExIDEyLjk0LDguOTZDMTMuNDEsOC4zNSAxNC4xNiw4IDE1LDhIMjFDMjEuODEsOCAyMi41Nyw4LjM0IDIzLjA5LDguOTJDMjMuNiw5LjUgMjMuODQsMTAuMyAyMy43NCwxMS4xMUwyMy4yMywxNC4xOEMyMy4wNCwxNS43NCAyMS42MSwxNyAyMCwxN0gxN0MxNS40NCwxNyAxMy45MiwxNS44MSAxMy41NCwxNC4zTDEyLjY0LDExLjU5QzEyLjI2LDExLjMxIDExLjczLDExLjMxIDExLjM1LDExLjU5TDEwLjQzLDE0LjM3QzEwLjA3LDE1LjgyIDguNTYsMTcgNywxN00xNSwxMEMxNC43OCwxMCAxNC42MSwxMC4wNyAxNC41LDEwLjE5QzE0LjQyLDEwLjMxIDE0LjQsMTAuNSAxNC40NSwxMC43TDE1LjQ2LDEzLjc1QzE1LjY0LDE0LjQ0IDE2LjM2LDE1IDE3LDE1SDIwQzIwLjU5LDE1IDIxLjE4LDE0LjUgMjEuMjUsMTMuODlMMjEuNzYsMTAuODJDMjEuNzksMTAuNjIgMjEuNzMsMTAuNCAyMS41OSwxMC4yNUMyMS40NSwxMC4wOSAyMS4yNCwxMCAyMSwxMEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHbG9iZUxpZ2h0ID0gXCJNMTMgOC4wOFYySDExVjguMDhDNy42MSA4LjU3IDUgMTEuNDcgNSAxNUM1IDE4Ljg3IDguMTMgMjIgMTIgMjJTMTkgMTguODcgMTkgMTVDMTkgMTEuNDcgMTYuMzkgOC41NyAxMyA4LjA4TTEyIDIwQzkuMjQgMjAgNyAxNy43NiA3IDE1QzcgMTMuODcgNy4zOSAxMi44NCA4LjAzIDEySDE1Ljk3QzE2LjYxIDEyLjg0IDE3IDEzLjg3IDE3IDE1QzE3IDE3Ljc2IDE0Ljc2IDIwIDEyIDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsb2JlTW9kZWwgPSBcIk0xNy4zNiwyLjY0TDE1Ljk1LDQuMDZDMTcuMjYsNS4zNyAxOCw3LjE0IDE4LDlBNyw3IDAgMCwxIDExLDE2QzkuMTUsMTYgNy4zNywxNS4yNiA2LjA2LDEzLjk1TDQuNjQsMTUuMzZDNi4wOCwxNi44IDcuOTcsMTcuNzEgMTAsMTcuOTNWMjBINlYyMkgxNlYyMEgxMlYxNy45NEMxNi41NSwxNy40MyAyMCwxMy41OCAyMCw5QzIwLDYuNjIgMTkuMDUsNC4zMyAxNy4zNiwyLjY0TTExLDMuNUE1LjUsNS41IDAgMCwwIDUuNSw5QTUuNSw1LjUgMCAwLDAgMTEsMTQuNUE1LjUsNS41IDAgMCwwIDE2LjUsOUE1LjUsNS41IDAgMCwwIDExLDMuNU0xMSw1LjVDMTIuOTQsNS41IDE0LjUsNy4wNyAxNC41LDlBMy41LDMuNSAwIDAsMSAxMSwxMi41QTMuNSwzLjUgMCAwLDEgNy41LDlBMy41LDMuNSAwIDAsMSAxMSw1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR21haWwgPSBcIk0yMCwxOEgxOFY5LjI1TDEyLDEzTDYsOS4yNVYxOEg0VjZINS4yTDEyLDEwLjI1TDE4LjgsNkgyME0yMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHbm9tZSA9IFwiTTE4LjQyLDJDMTQuMjYsMiAxMy41LDcuOTMgMTUuODIsNy45M0MxOC4xNiw3LjkzIDIyLjU4LDIgMTguNDIsMk0xMiwyLjczQzExLjkyLDIuNzMgMTEuODUsMi43MyAxMS43OCwyLjc0QzkuNDQsMy4wNCAxMC4yNiw3LjEyIDExLjUsNy4xOUMxMi43Miw3LjI3IDE0LjA0LDIuNzMgMTIsMi43M003LjkzLDQuMzRDNy44MSw0LjM0IDcuNjcsNC4zNyA3LjUzLDQuNDNDNS42NSw1LjIxIDcuMjQsOC40MSA4LjMsOC4yQzkuMjcsOCA5LjM5LDQuMyA3LjkzLDQuMzRNNC45Myw2Ljg1QzQuNzcsNi44NCA0LjU5LDYuOSA0LjQxLDcuMDNDMi45LDguMDcgNC45MSwxMC41OCA1LjgsMTAuMTlDNi41Nyw5Ljg1IDYuMDgsNi44OSA0LjkzLDYuODVNMTMuMjksOC43N0MxMC4xLDguOCA2LjAzLDEwLjQyIDUuMzIsMTMuNTlDNC41MywxNy4xMSA4LjU2LDIyIDEyLjc2LDIyQzE0LjgzLDIyIDE3LjIxLDIwLjEzIDE3LjY2LDE3Ljc3QzE4LDE1Ljk3IDEzLjY1LDE2LjY5IDEzLjgxLDE3Ljg4QzE0LDE5LjMxIDEyLjc2LDIwIDExLjU1LDE5LjFDNy42OSwxNi4xNiAxNy45MywxNC43IDE3LjI1LDEwLjY5QzE3LjAzLDkuMzkgMTUuMzQsOC43NiAxMy4yOSw4Ljc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvS2FydCA9IFwiTTE4LDEwSDE1LjUzTDE0LjM4LDguMjhMMTUuOCw3LjMzTDE0LjcsNS42N0wxMC4yLDguNjdMMTEuMywxMC4zM0wxMi43Myw5LjM4TDEzLjg4LDExLjEyTDEzLDEySDEwLjJMNS44Myw1LjQ1TDQuMTcsNi41NUw1Ljg3LDkuMTFDMy4wNCw5LjY1IDEsMTIuMTIgMSwxNVYxN0gzQTMsMyAwIDAsMCA2LDIwQTMsMyAwIDAsMCA5LDE3SDE1QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdIMjNWMTVBNSw1IDAgMCwwIDE4LDEwTTYsMTguNUExLjUsMS41IDAgMCwxIDQuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTguNU0xOCwxOC41QTEuNSwxLjUgMCAwLDEgMTYuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE1LjVBMS41LDEuNSAwIDAsMSAxOS41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHb0thcnRUcmFjayA9IFwiTTIyLDUuNUEzLjUsMy41IDAgMCwwIDE4LjUsMkEzLjUsMy41IDAgMCwwIDE1LDUuNVY2QTMsMyAwIDAsMSAxMiw5QzEwLDkgOSw2IDYsNkE0LDQgMCAwLDAgMiwxMFYxMUg0VjEwQTIsMiAwIDAsMSA2LDhDNi44Niw4IDcuNDIsOC40NSA4LjMyLDkuMjRDOS4yOCwxMC4yNyAxMC42LDEwLjkgMTIsMTFBNSw1IDAgMCwwIDE3LDZWNS41QTEuNSwxLjUgMCAwLDEgMTguNSw0QTEuNSwxLjUgMCAwLDEgMjAsNS41QzE5Ljg2LDYuMzUgMTkuNTgsNy4xOCAxOS4xNyw3Ljk0QzE4LjUsOS4yIDE4LjExLDEwLjU4IDE4LDEyQzE4LjA5LDEzLjM3IDE4LjUsMTQuNzEgMTkuMjEsMTUuODlDMTkuNiwxNi41NCAxOS44NywxNy4yNSAyMCwxOEEyLDIgMCAwLDEgMTgsMjBBMiwyIDAgMCwxIDE2LDE4QTMuNzUsMy43NSAwIDAsMCAxMi4yNSwxNC4yNUEzLjc1LDMuNzUgMCAwLDAgOC41LDE4VjE4LjVBMS41LDEuNSAwIDAsMSA3LDIwQTMsMyAwIDAsMSA0LDE3VjE1SDZWMTNIMFYxNUgyVjE3QTUsNSAwIDAsMCA3LDIyQTMuNSwzLjUgMCAwLDAgMTAuNSwxOC41VjE4QTEuNzUsMS43NSAwIDAsMSAxMi4yNSwxNi4yNUExLjc1LDEuNzUgMCAwLDEgMTQsMThBNCw0IDAgMCwwIDE4LDIyQTQsNCAwIDAsMCAyMiwxOEMyMiwxNiAyMCwxNCAyMCwxMkMyMCwxMCAyMiw3LjUgMjIsNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvZyA9IFwiTTQsM0gyMEEyLDIgMCAwLDEgMjIsNVYxOUEyLDIgMCAwLDEgMjAsMjFINEEyLDIgMCAwLDEgMiwxOVY1QTIsMiAwIDAsMSA0LDNNMTAuNDYsNS41NEM5Ljk1LDUuNTQgOS41NCw1Ljk1IDkuNTQsNi40NlY5LjU0QTAuOTIsMC45MiAwIDAsMCAxMC40NiwxMC40NkgxMy41NEEwLjkyLDAuOTIgMCAwLDAgMTQuNDYsOS41NFY2LjQ2QzE0LjQ2LDUuOTUgMTQuMDUsNS41NCAxMy41NCw1LjU0SDEwLjQ2TTExLjA4LDYuNzdIMTIuOTJBMC4zMSwwLjMxIDAgMCwxIDEzLjIzLDcuMDhWOC45MkEwLjMxLDAuMzEgMCAwLDEgMTIuOTIsOS4yM0gxMS4wOEEwLjMxLDAuMzEgMCAwLDEgMTAuNzcsOC45MlY3LjA4QTAuMzEsMC4zMSAwIDAsMSAxMS4wOCw2Ljc3TTQuOTIsNS41NEEwLjkyLDAuOTIgMCAwLDAgNCw2LjQ2VjkuNTRDNCwxMC4wNSA0LjQxLDEwLjQ2IDQuOTIsMTAuNDZINy4wOFY5LjIzSDUuNTRDNS4zNyw5LjIzIDUuMjMsOS4wOSA1LjIzLDguOTJWNy4wOEM1LjIzLDYuOTEgNS4zNyw2Ljc3IDUuNTQsNi43N0g3LjM4QTAuMzEsMC4zMSAwIDAsMSA3LjY5LDcuMDhWMTAuNzdBMC4zMSwwLjMxIDAgMCwxIDcuMzgsMTEuMDhINFYxMi4zMUg4QzguNSwxMi4zMSA4LjkyLDExLjg5IDguOTIsMTEuMzhWNi40NkEwLjkyLDAuOTIgMCAwLDAgOCw1LjU0SDQuOTJNMTYsNS41NEMxNS41LDUuNTQgMTUuMDgsNS45NSAxNS4wOCw2LjQ2VjkuNTRDMTUuMDgsMTAuMDUgMTUuNSwxMC40NiAxNiwxMC40NkgxOC4xNVY5LjIzSDE2LjYyQzE2LjQ1LDkuMjMgMTYuMzEsOS4wOSAxNi4zMSw4LjkyVjcuMDhDMTYuMzEsNi45MSAxNi40NSw2Ljc3IDE2LjYyLDYuNzdIMTguNDZDMTguNjMsNi43NyAxOC43Nyw2LjkxIDE4Ljc3LDcuMDhWMTAuNzdDMTguNzcsMTAuOTQgMTguNjMsMTEuMDggMTguNDYsMTEuMDhIMTUuMDhWMTIuMzFIMTkuMDhDMTkuNTksMTIuMzEgMjAsMTEuODkgMjAsMTEuMzhWNi40NkMyMCw1Ljk1IDE5LjU5LDUuNTQgMTkuMDgsNS41NEgxNk05Ljg1LDEzLjU0QzkuMzQsMTMuNTQgOC45MiwxMy45NSA4LjkyLDE0LjQ2VjE3LjU0QzguOTIsMTguMDUgOS4zNCwxOC40NiA5Ljg1LDE4LjQ2SDEyLjkyQzEzLjQzLDE4LjQ2IDEzLjg1LDE4LjA1IDEzLjg1LDE3LjU0VjE0LjQ2QzEzLjg1LDEzLjk1IDEzLjQzLDEzLjU0IDEyLjkyLDEzLjU0SDkuODVNMTAuNDYsMTQuNzdIMTIuMzFDMTIuNSwxNC43NyAxMi42MiwxNC45MSAxMi42MiwxNS4wOFYxNi45MkEwLjMxLDAuMzEgMCAwLDEgMTIuMzEsMTcuMjNIMTAuNDZDMTAuMjksMTcuMjMgMTAuMTUsMTcuMDkgMTAuMTUsMTYuOTJWMTUuMDhBMC4zMSwwLjMxIDAgMCwxIDEwLjQ2LDE0Ljc3TTQuOTIsMTMuNTRDNC40MSwxMy41NCA0LDEzLjk1IDQsMTQuNDZWMTcuNTRDNCwxOC4wNSA0LjQxLDE4LjQ2IDQuOTIsMTguNDZIOC4zMVYxNy4yM0g1LjU0QzUuMzcsMTcuMjMgNS4yMywxNy4wOSA1LjIzLDE2LjkyVjE1LjA4QzUuMjMsMTQuOTEgNS4zNywxNC43NyA1LjU0LDE0Ljc3SDguMzFWMTMuNTRINC45Mk0xNS4zOCwxMy41NEMxNC44NywxMy41NCAxNC40NiwxMy45NSAxNC40NiwxNC40NlYxOC40NkgxNS42OVYxNS4wOEEwLjMxLDAuMzEgMCAwLDEgMTYsMTQuNzdIMTYuNjJWMTguNDZIMTcuODVWMTQuNzdIMTguNzdWMTguNDZIMjBWMTMuNTRIMTUuMzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29sZCA9IFwiTTEgMjJMMi41IDE3SDkuNUwxMSAyMkgxTTEzIDIyTDE0LjUgMTdIMjEuNUwyMyAyMkgxM002IDE1TDcuNSAxMEgxNC41TDE2IDE1SDZNMjMgNi4wNUwxOS4xNCA3LjE0TDE4LjA1IDExTDE2Ljk2IDcuMTRMMTMuMSA2LjA1TDE2Ljk2IDQuOTZMMTguMDUgMS4xTDE5LjE0IDQuOTZMMjMgNi4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHb2xmID0gXCJNMTkuNSwxOEExLjUsMS41IDAgMCwxIDIxLDE5LjVBMS41LDEuNSAwIDAsMSAxOS41LDIxQTEuNSwxLjUgMCAwLDEgMTgsMTkuNUExLjUsMS41IDAgMCwxIDE5LjUsMThNMTcsNS45MkwxMSw5VjE4LjAzQzEzLjg0LDE4LjE5IDE2LDE5IDE2LDIwQzE2LDIxLjEgMTMuMzEsMjIgMTAsMjJDNi42OSwyMiA0LDIxLjEgNCwyMEM0LDE5LjI2IDUuMjEsMTguNjIgNywxOC4yN1YyMEg5VjJMMTcsNS45MlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb2xmQ2FydCA9IFwiTTE5Ljg5IDEyLjM3TDE4LjI1IDVIMTlWM0gzVjdIMVY5SDNWMTIuNTRBNiA2IDAgMCAwIDEgMTdWMTlIM0EzIDMgMCAwIDAgOSAxOUgxNUEzIDMgMCAwIDAgMjEgMTlIMjNWMTdBNSA1IDAgMCAwIDE5Ljg5IDEyLjM3TTYgMjAuNUExLjUgMS41IDAgMSAxIDcuNSAxOUExLjUgMS41IDAgMCAxIDYgMjAuNU0xNS41MyAxMkwxNC4zOCAxMC4yOEwxNS44IDkuMzNMMTQuNyA3LjY3TDEwLjIgMTAuNjdMMTEuMyAxMi4zM0wxMi43MyAxMS4zOEwxMy44OCAxMy4xMkwxMyAxNEgxMC4yTDUgN1Y1SDE2LjJMMTcuNzUgMTJNMTggMjAuNUExLjUgMS41IDAgMSAxIDE5LjUgMTlBMS41IDEuNSAwIDAgMSAxOCAyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvbGZUZWUgPSBcIk03IDE5VjE3SDE3VjE5SDE1QzE0LjUgMTkgMTQgMTkuMiAxMy42IDE5LjZTMTMgMjAuNSAxMyAyMVYyMkgxMVYyMUMxMSAyMC41IDEwLjggMjAgMTAuNCAxOS42UzkuNSAxOSA5IDE5SDdNMTEgNkMxMSA1LjcgMTEuMSA1LjUgMTEuMyA1LjNTMTEuNyA1IDEyIDUgMTIuNSA1LjEgMTIuNyA1LjMgMTMgNS43IDEzIDYgMTIuOSA2LjUgMTIuNyA2LjcgMTIuMyA3IDEyIDcgMTEuNSA2LjkgMTEuMyA2LjcgMTEgNi4zIDExIDZNMTMgOEMxMyA3LjcgMTMuMSA3LjUgMTMuMyA3LjNTMTMuNyA3IDE0IDcgMTQuNSA3LjEgMTQuNyA3LjMgMTUgNy43IDE1IDggMTQuOSA4LjUgMTQuNyA4LjcgMTQuMyA5IDE0IDkgMTMuNSA4LjkgMTMuMyA4LjcgMTMgOC4zIDEzIDhNOSA4QzkgNy43IDkuMSA3LjUgOS4zIDcuM1M5LjcgNyAxMCA3IDEwLjUgNy4xIDEwLjcgNy4zIDExIDcuNyAxMSA4IDEwLjkgOC41IDEwLjcgOC43IDEwLjMgOSAxMCA5IDkuNSA4LjkgOS4zIDguNyA5IDguMyA5IDhNMTYuOSA0LjFDMTUuNSAyLjcgMTMuOSAyLjEgMTIgMi4xUzguNCAyLjggNy4xIDQuMSA1IDcuMSA1IDkgNS43IDEyLjYgNyAxMy45IDEwIDE1LjkgMTEuOSAxNS45IDE1LjUgMTUuMiAxNi44IDEzLjkgMTguOCAxMC45IDE4LjggOSAxOC4zIDUuNCAxNi45IDQuMU0xNS41IDEyLjVDMTQuNSAxMy41IDEzLjMgMTQgMTIgMTRTOS40IDEzLjUgOC41IDEyLjUgNyAxMC40IDcgOSA3LjUgNi40IDguNSA1LjUgMTAuNiA0IDEyIDQgMTQuNiA0LjUgMTUuNSA1LjUgMTcgNy42IDE3IDkgMTYuNSAxMS42IDE1LjUgMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHb25kb2xhID0gXCJNMTgsMTBIMTNWNy41OUwyMi4xMiw2LjA3TDIxLjg4LDQuNTlMMTYuNDEsNS41QzE2LjQ2LDUuMzUgMTYuNSw1LjE4IDE2LjUsNUExLjUsMS41IDAgMCwwIDE1LDMuNUExLjUsMS41IDAgMCwwIDEzLjUsNUMxMy41LDUuMzUgMTMuNjMsNS42OCAxMy44NCw1LjkzTDEzLDYuMDdWNUgxMVY2LjQxTDEwLjQxLDYuNUMxMC40Niw2LjM1IDEwLjUsNi4xOCAxMC41LDZBMS41LDEuNSAwIDAsMCA5LDQuNUExLjUsMS41IDAgMCwwIDcuNSw2QzcuNSw2LjM2IDcuNjMsNi42OCA3LjgzLDYuOTNMMS44OCw3LjkzTDIuMTIsOS40MUwxMSw3LjkzVjEwSDZDNC44OSwxMCA0LDEwLjkgNCwxMlYxOEEyLDIgMCAwLDAgNiwyMEgxOEEyLDIgMCAwLDAgMjAsMThWMTJBMiwyIDAgMCwwIDE4LDEwTTYsMTJIOC4yNVYxNkg2VjEyTTkuNzUsMTZWMTJIMTQuMjVWMTZIOS43NU0xOCwxNkgxNS43NVYxMkgxOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29kcmVhZHMgPSBcIk0xNywxMi43N0MxNS45NiwxNC40MiAxNC4yMiwxNS41IDEyLjI1LDE1LjVDOS4wNywxNS41IDYuNSwxMi43IDYuNSw5LjI1QzYuNSw1LjggOS4wNywzIDEyLjI1LDNDMTQuMjIsMyAxNS45Niw0LjA4IDE3LDUuNzNWM0gxOFYxNS4yNUMxOCwyMC43MSAxNC41NCwyMSAxMS41LDIxQzksMjEgNy41NSwxOS4zMSA3LjEzLDE3SDguMTRDOC41LDE4Ljc1IDkuNTQsMjAgMTEuNSwyMEMxMy43MiwyMCAxNywyMC4wNSAxNywxNS4yNVYxNS4yNUwxNywxMi43N00xMi4yNSw0QzkuNjMsNCA3LjUsNi4zNSA3LjUsOS4yNUM3LjUsMTIuMTUgOS42MywxNC41IDEyLjI1LDE0LjVDMTQuODcsMTQuNSAxNywxMi4xNSAxNyw5LjI1QzE3LDYuMzUgMTQuODcsNCAxMi4yNSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZSA9IFwiTTIxLjM1LDExLjFIMTIuMThWMTMuODNIMTguNjlDMTguMzYsMTcuNjQgMTUuMTksMTkuMjcgMTIuMTksMTkuMjdDOC4zNiwxOS4yNyA1LDE2LjI1IDUsMTJDNSw3LjkgOC4yLDQuNzMgMTIuMiw0LjczQzE1LjI5LDQuNzMgMTcuMSw2LjcgMTcuMSw2LjdMMTksNC43MkMxOSw0LjcyIDE2LjU2LDIgMTIuMSwyQzYuNDIsMiAyLjAzLDYuOCAyLjAzLDEyQzIuMDMsMTcuMDUgNi4xNiwyMiAxMi4yNSwyMkMxNy42LDIyIDIxLjUsMTguMzMgMjEuNSwxMi45MUMyMS41LDExLjc2IDIxLjM1LDExLjEgMjEuMzUsMTEuMVYxMS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUFkcyA9IFwiTTEyLjI1IDEuNDdDMTEuNTUgMS40MiAxMC44MiAxLjU4IDEwLjE3IDEuOTZDOC40MSAyLjk3IDcuODEgNS4yMSA4LjgyIDYuOTZMMTYuMTYgMTkuNjZDMTcuMTcgMjEuNDIgMTkuNDEgMjIgMjEuMTcgMjFDMjIuOTIgMjAgMjMuNSAxNy43NSAyMi41IDE2TDE1LjE4IDMuM0MxNC41NCAyLjIgMTMuNDMgMS41NiAxMi4yNSAxLjQ3TTYuODIgNi43NkwxLjUgMTZBMy42NyAzLjY3IDAgMCAwIDEgMTcuODNBMy42NyAzLjY3IDAgMCAwIDQuNjcgMjEuNUEzLjY3IDMuNjcgMCAwIDAgNy44NCAxOS42NlYxOS42N0wxMSAxNC4xOUM5LjY1IDExLjg5IDguMjcgOS42IDcuMDMgNy4yM0M2Ljk1IDcuMDggNi44OCA2LjkyIDYuODMgNi43NlpMMTYuNCA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUFuYWx5dGljcyA9IFwiTTE1Ljg2IDQuMzlWMTkuMzlDMTUuODYgMjEuMDYgMTcgMjIgMTguMjUgMjJDMTkuMzkgMjIgMjAuNjQgMjEuMjEgMjAuNjQgMTkuMzlWNC41QzIwLjY0IDIuOTYgMTkuNSAyIDE4LjI1IDJTMTUuODYgMy4wNiAxNS44NiA0LjM5TTkuNjEgMTJWMTkuMzlDOS42MSAyMS4wNyAxMC43NyAyMiAxMiAyMkMxMy4xNCAyMiAxNC4zOSAyMS4yMSAxNC4zOSAxOS4zOVYxMi4xMUMxNC4zOSAxMC41NyAxMy4yNSA5LjYxIDEyIDkuNjFTOS42MSAxMC42NyA5LjYxIDEyTTUuNzUgMTcuMjNDNy4wNyAxNy4yMyA4LjE0IDE4LjMgOC4xNCAxOS42MUM4LjE0IDIwLjkzIDcuMDcgMjIgNS43NSAyMlMzLjM2IDIwLjkzIDMuMzYgMTkuNjFDMy4zNiAxOC4zIDQuNDMgMTcuMjMgNS43NSAxNy4yM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVBc3Npc3RhbnQgPSBcIk03LDJBNiw2IDAgMCwwIDEsOEE2LDYgMCAwLDAgNywxNEE2LDYgMCAwLDAgMTMsOEE2LDYgMCAwLDAgNywyTTIxLjUsNkExLjUsMS41IDAgMCwwIDIwLDcuNUExLjUsMS41IDAgMCwwIDIxLjUsOUExLjUsMS41IDAgMCwwIDIzLDcuNUExLjUsMS41IDAgMCwwIDIxLjUsNk0xNyw4QTMsMyAwIDAsMCAxNCwxMUEzLDMgMCAwLDAgMTcsMTRBMywzIDAgMCwwIDIwLDExQTMsMyAwIDAsMCAxNyw4TTE3LDE1QTMuNSwzLjUgMCAwLDAgMTMuNSwxOC41QTMuNSwzLjUgMCAwLDAgMTcsMjJBMy41LDMuNSAwIDAsMCAyMC41LDE4LjVBMy41LDMuNSAwIDAsMCAxNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVDYXJkYm9hcmQgPSBcIk0yMC43NCw2SDMuMkMyLjU1LDYgMiw2LjU3IDIsNy4yN1YxNy43M0MyLDE4LjQzIDIuNTUsMTkgMy4yMywxOUg4QzguNTQsMTkgOSwxOC42OCA5LjE2LDE4LjIxTDEwLjU1LDE0Ljc0QzEwLjc5LDE0LjE2IDExLjM1LDEzLjc1IDEyLDEzLjc1QzEyLjY1LDEzLjc1IDEzLjIxLDE0LjE2IDEzLjQ1LDE0Ljc0TDE0Ljg0LDE4LjIxQzE1LjAzLDE4LjY4IDE1LjQ2LDE5IDE1Ljk1LDE5SDIwLjc0QzIxLjQ1LDE5IDIyLDE4LjQzIDIyLDE3LjczVjcuMjdDMjIsNi41NyAyMS40NSw2IDIwLjc0LDZNNy4yMiwxNC41OEM2LDE0LjU4IDUsMTMuNTUgNSwxMi4yOUM1LDExIDYsMTAgNy4yMiwxMEM4LjQ0LDEwIDkuNDMsMTEgOS40MywxMi4yOUM5LjQzLDEzLjU1IDguNDQsMTQuNTggNy4yMiwxNC41OE0xNi43OCwxNC41OEMxNS41NiwxNC41OCAxNC41NywxMy41NSAxNC41NywxMi4yOUMxNC41NywxMS4wMyAxNS41NiwxMCAxNi43OCwxMEMxOCwxMCAxOSwxMS4wMyAxOSwxMi4yOUMxOSwxMy41NSAxOCwxNC41OCAxNi43OCwxNC41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVDaHJvbWUgPSBcIk0xMiwyMEwxNS40NiwxNEgxNS40NUMxNS43OSwxMy40IDE2LDEyLjczIDE2LDEyQzE2LDEwLjggMTUuNDYsOS43MyAxNC42Miw5SDE5LjQxQzE5Ljc5LDkuOTMgMjAsMTAuOTQgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTQsMTJDNCwxMC41NCA0LjM5LDkuMTggNS4wNyw4TDguNTQsMTRIOC41NUM5LjI0LDE1LjE5IDEwLjUsMTYgMTIsMTZDMTIuNDUsMTYgMTIuODgsMTUuOTEgMTMuMjksMTUuNzdMMTAuODksMTkuOTFDNywxOS4zNyA0LDE2LjA0IDQsMTJNMTUsMTJBMywzIDAgMCwxIDEyLDE1QTMsMyAwIDAsMSA5LDEyQTMsMyAwIDAsMSAxMiw5QTMsMyAwIDAsMSAxNSwxMk0xMiw0QzE0Ljk2LDQgMTcuNTQsNS42MSAxOC45Miw4SDEyQzEwLjA2LDggOC40NSw5LjM4IDguMDgsMTEuMjFMNS43LDcuMDhDNy4xNiw1LjIxIDkuNDQsNCAxMiw0TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUNpcmNsZXMgPSBcIk0xNi42NiwxNUgxN0MxOCwxNSAxOSwxNC44IDE5Ljg3LDE0LjQ2QzE5LjE3LDE4LjczIDE1LjQ3LDIyIDExLDIyQzYsMjIgMiwxNy45NyAyLDEzQzIsOC41MyA1LjI3LDQuODMgOS41NCw0LjEzQzkuMiw1IDksNiA5LDdWNy4zNEM2LjY4LDguMTYgNSwxMC4zOCA1LDEzQTYsNiAwIDAsMCAxMSwxOUMxMy42MiwxOSAxNS44NCwxNy4zMiAxNi42NiwxNU0xNywxMEEzLDMgMCAwLDAgMjAsN0EzLDMgMCAwLDAgMTcsNEEzLDMgMCAwLDAgMTQsN0EzLDMgMCAwLDAgMTcsMTBNMTcsMUE2LDYgMCAwLDEgMjMsN0E2LDYgMCAwLDEgMTcsMTNBNiw2IDAgMCwxIDExLDdDMTEsMy42OCAxMy42OSwxIDE3LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlQ2lyY2xlc0NvbW11bml0aWVzID0gXCJNMTUsMTJDMTMuODksMTIgMTMsMTIuODkgMTMsMTRBMiwyIDAgMCwwIDE1LDE2QTIsMiAwIDAsMCAxNywxNEMxNywxMi44OSAxNi4xLDEyIDE1LDEyTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTQsOUMxNCw3Ljg5IDEzLjEsNyAxMiw3QzEwLjg5LDcgMTAsNy44OSAxMCw5QTIsMiAwIDAsMCAxMiwxMUEyLDIgMCAwLDAgMTQsOU05LDEyQTIsMiAwIDAsMCA3LDE0QTIsMiAwIDAsMCA5LDE2QTIsMiAwIDAsMCAxMSwxNEMxMSwxMi44OSAxMC4xLDEyIDksMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlQ2lyY2xlc0V4dGVuZGVkID0gXCJNMTgsMTlDMTYuODksMTkgMTYsMTguMSAxNiwxN0MxNiwxNS44OSAxNi44OSwxNSAxOCwxNUEyLDIgMCAwLDEgMjAsMTdBMiwyIDAgMCwxIDE4LDE5TTE4LDEzQTQsNCAwIDAsMCAxNCwxN0E0LDQgMCAwLDAgMTgsMjFBNCw0IDAgMCwwIDIyLDE3QTQsNCAwIDAsMCAxOCwxM00xMiwxMS4xQTEuOSwxLjkgMCAwLDAgMTAuMSwxM0ExLjksMS45IDAgMCwwIDEyLDE0LjlBMS45LDEuOSAwIDAsMCAxMy45LDEzQTEuOSwxLjkgMCAwLDAgMTIsMTEuMU02LDE5QzQuODksMTkgNCwxOC4xIDQsMTdDNCwxNS44OSA0Ljg5LDE1IDYsMTVBMiwyIDAgMCwxIDgsMTdBMiwyIDAgMCwxIDYsMTlNNiwxM0E0LDQgMCAwLDAgMiwxN0E0LDQgMCAwLDAgNiwyMUE0LDQgMCAwLDAgMTAsMTdBNCw0IDAgMCwwIDYsMTNNMTIsNEEyLDIgMCAwLDEgMTQsNkEyLDIgMCAwLDEgMTIsOEMxMC44OSw4IDEwLDcuMSAxMCw2QzEwLDQuODkgMTAuODksNCAxMiw0TTEyLDEwQTQsNCAwIDAsMCAxNiw2QTQsNCAwIDAsMCAxMiwyQTQsNCAwIDAsMCA4LDZBNCw0IDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUNpcmNsZXNHcm91cCA9IFwiTTUsMTBBMiwyIDAgMCwwIDMsMTJDMywxMy4xMSAzLjksMTQgNSwxNEM2LjExLDE0IDcsMTMuMTEgNywxMkEyLDIgMCAwLDAgNSwxME01LDE2QTQsNCAwIDAsMSAxLDEyQTQsNCAwIDAsMSA1LDhBNCw0IDAgMCwxIDksMTJBNCw0IDAgMCwxIDUsMTZNMTAuNSwxMUgxNFY4TDE4LDEyTDE0LDE2VjEzSDEwLjVWMTFNNSw2QzQuNTUsNiA0LjExLDYuMDUgMy42OSw2LjE0QzUuNjMsMy4wNSA5LjA4LDEgMTMsMUMxOS4wOCwxIDI0LDUuOTIgMjQsMTJDMjQsMTguMDggMTkuMDgsMjMgMTMsMjNDOS4wOCwyMyA1LjYzLDIwLjk1IDMuNjksMTcuODZDNC4xMSwxNy45NSA0LjU1LDE4IDUsMThDNS44LDE4IDYuNTYsMTcuODQgNy4yNSwxNy41NkM4LjcxLDE5LjA3IDEwLjc0LDIwIDEzLDIwQTgsOCAwIDAsMCAyMSwxMkE4LDggMCAwLDAgMTMsNEMxMC43NCw0IDguNzEsNC45MyA3LjI1LDYuNDRDNi41Niw2LjE2IDUuOCw2IDUsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVDbGFzc3Jvb20gPSBcIk0yMywySDFBMSwxIDAgMCwwIDAsM1YyMUExLDEgMCAwLDAgMSwyMkgyM0ExLDEgMCAwLDAgMjQsMjFWM0ExLDEgMCAwLDAgMjMsMk0yMiwyMEgyMFYxOUgxNVYyMEgyVjRIMjJWMjBNMTAuMjksOS43MUExLjcxLDEuNzEgMCAwLDEgMTIsOEMxMi45NSw4IDEzLjcxLDguNzcgMTMuNzEsOS43MUMxMy43MSwxMC42NiAxMi45NSwxMS40MyAxMiwxMS40M0MxMS4wNSwxMS40MyAxMC4yOSwxMC42NiAxMC4yOSw5LjcxTTUuNzEsMTEuMjlDNS43MSwxMC41OCA2LjI5LDEwIDcsMTBBMS4yOSwxLjI5IDAgMCwxIDguMjksMTEuMjlDOC4yOSwxMiA3LjcxLDEyLjU3IDcsMTIuNTdDNi4yOSwxMi41NyA1LjcxLDEyIDUuNzEsMTEuMjlNMTUuNzEsMTEuMjlBMS4yOSwxLjI5IDAgMCwxIDE3LDEwQTEuMjksMS4yOSAwIDAsMSAxOC4yOSwxMS4yOUMxOC4yOSwxMiAxNy43MSwxMi41NyAxNywxMi41N0MxNi4yOSwxMi41NyAxNS43MSwxMiAxNS43MSwxMS4yOU0yMCwxNS4xNFYxNkgxNkwxNCwxNkgxMEw4LDE2SDRWMTUuMTRDNCwxNC4yIDUuNTUsMTMuNDMgNywxMy40M0M3LjU1LDEzLjQzIDguMTEsMTMuNTQgOC42LDEzLjczQzkuMzUsMTMuMDQgMTAuNywxMi41NyAxMiwxMi41N0MxMy4zLDEyLjU3IDE0LjY1LDEzLjA0IDE1LjQsMTMuNzNDMTUuODksMTMuNTQgMTYuNDUsMTMuNDMgMTcsMTMuNDNDMTguNDUsMTMuNDMgMjAsMTQuMiAyMCwxNS4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVDbG91ZCA9IFwiTTIzIDE0Ljc1QzIzIDE4LjIgMjAuMiAyMSAxNi43NSAyMUg3LjI1QzMuOCAyMSAxIDE4LjIgMSAxNC43NUMxIDEyLjYxIDIuMDggMTAuNzIgMy43MSA5LjZDNC41OCA1LjgyIDcuOTYgMyAxMiAzQzE2LjA0IDMgMTkuNDIgNS44MiAyMC4yOSA5LjZDMjEuOTMgMTAuNzIgMjMgMTIuNjEgMjMgMTQuNzVNMTYuNjMgMTdDMTcuOTQgMTcgMTkgMTUuOTQgMTkgMTQuNjNDMTkgMTMuMzUgMTggMTIuMyAxNi43MiAxMi4yNUwxNi43NSAxMS43NUMxNi43NSA5LjEzIDE0LjYyIDcgMTIgN0MxMC41OCA3IDkuMyA3LjYyIDguNDMgOC42MUM5LjkzIDguOSAxMS4yMyA5LjcyIDEyLjE0IDEwLjg2TDkuNSAxMy41QzkuMDggMTIuNzcgOC4yOSAxMi4yNSA3LjM4IDEyLjI1QzYuMDYgMTIuMjUgNSAxMy4zMSA1IDE0LjYzQzUgMTUuOSA2IDE2LjkzIDcuMjUgMTdWMTdIMTYuNjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlQ29udHJvbGxlciA9IFwiTTcuOTcsMTZMNSwxOUM0LjY3LDE5LjMgNC4yMywxOS41IDMuNzUsMTkuNUExLjc1LDEuNzUgMCAwLDEgMiwxNy43NVYxNy41TDMsMTAuMTJDMy4yMSw3LjgxIDUuMTQsNiA3LjUsNkgxNi41QzE4Ljg2LDYgMjAuNzksNy44MSAyMSwxMC4xMkwyMiwxNy41VjE3Ljc1QTEuNzUsMS43NSAwIDAsMSAyMC4yNSwxOS41QzE5Ljc3LDE5LjUgMTkuMzMsMTkuMyAxOSwxOUwxNi4wMywxNkg3Ljk3TTcsOFYxMEg1VjExSDdWMTNIOFYxMUgxMFYxMEg4VjhIN00xNi41LDhBMC43NSwwLjc1IDAgMCwwIDE1Ljc1LDguNzVBMC43NSwwLjc1IDAgMCwwIDE2LjUsOS41QTAuNzUsMC43NSAwIDAsMCAxNy4yNSw4Ljc1QTAuNzUsMC43NSAwIDAsMCAxNi41LDhNMTQuNzUsOS43NUEwLjc1LDAuNzUgMCAwLDAgMTQsMTAuNUEwLjc1LDAuNzUgMCAwLDAgMTQuNzUsMTEuMjVBMC43NSwwLjc1IDAgMCwwIDE1LjUsMTAuNUEwLjc1LDAuNzUgMCAwLDAgMTQuNzUsOS43NU0xOC4yNSw5Ljc1QTAuNzUsMC43NSAwIDAsMCAxNy41LDEwLjVBMC43NSwwLjc1IDAgMCwwIDE4LjI1LDExLjI1QTAuNzUsMC43NSAwIDAsMCAxOSwxMC41QTAuNzUsMC43NSAwIDAsMCAxOC4yNSw5Ljc1TTE2LjUsMTEuNUEwLjc1LDAuNzUgMCAwLDAgMTUuNzUsMTIuMjVBMC43NSwwLjc1IDAgMCwwIDE2LjUsMTNBMC43NSwwLjc1IDAgMCwwIDE3LjI1LDEyLjI1QTAuNzUsMC43NSAwIDAsMCAxNi41LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlQ29udHJvbGxlck9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTIuNzMsMTZINy45N0w1LDE5QzQuNjcsMTkuMyA0LjIzLDE5LjUgMy43NSwxOS41QTEuNzUsMS43NSAwIDAsMSAyLDE3Ljc1VjE3LjVMMywxMC4xMkMzLjEsOS4wOSAzLjUzLDguMTcgNC4xOSw3LjQ2TDIsNS4yN001LDEwVjExSDdWMTNIOFYxMS4yN0w2LjczLDEwSDVNMTYuNSw2QzE4Ljg2LDYgMjAuNzksNy44MSAyMSwxMC4xMkwyMiwxNy41VjE3Ljc1QzIyLDE4LjQxIDIxLjY0LDE5IDIxLjEsMTkuMjhMNy44Miw2SDE2LjVNMTYuNSw4QTAuNzUsMC43NSAwIDAsMCAxNS43NSw4Ljc1QTAuNzUsMC43NSAwIDAsMCAxNi41LDkuNUEwLjc1LDAuNzUgMCAwLDAgMTcuMjUsOC43NUEwLjc1LDAuNzUgMCAwLDAgMTYuNSw4TTE0Ljc1LDkuNzVBMC43NSwwLjc1IDAgMCwwIDE0LDEwLjVBMC43NSwwLjc1IDAgMCwwIDE0Ljc1LDExLjI1QTAuNzUsMC43NSAwIDAsMCAxNS41LDEwLjVBMC43NSwwLjc1IDAgMCwwIDE0Ljc1LDkuNzVNMTguMjUsOS43NUEwLjc1LDAuNzUgMCAwLDAgMTcuNSwxMC41QTAuNzUsMC43NSAwIDAsMCAxOC4yNSwxMS4yNUEwLjc1LDAuNzUgMCAwLDAgMTksMTAuNUEwLjc1LDAuNzUgMCAwLDAgMTguMjUsOS43NU0xNi41LDExLjVBMC43NSwwLjc1IDAgMCwwIDE1Ljc1LDEyLjI1QTAuNzUsMC43NSAwIDAsMCAxNi41LDEzQTAuNzUsMC43NSAwIDAsMCAxNy4yNSwxMi4yNUEwLjc1LDAuNzUgMCAwLDAgMTYuNSwxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZURvd25hc2F1ciA9IFwiTTEzIDJWM0gxMlY5SDExVjEwSDlWMTFIOFYxMkg3VjEzSDVWMTJINFYxMUgzVjlIMlYxNUgzVjE2SDRWMTdINVYxOEg2VjIySDhWMjFIN1YyMEg4VjE5SDlWMThIMTBWMTlIMTFWMjJIMTNWMjFIMTJWMTdIMTNWMTZIMTRWMTVIMTVWMTJIMTZWMTNIMTdWMTFIMTVWOUgyMFY4SDE3VjdIMjJWM0gyMVYyTTE0IDNIMTVWNEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVEcml2ZSA9IFwiTTcuNzEsMy41TDEuMTUsMTVMNC41OCwyMUwxMS4xMyw5LjVNOS43MywxNUw2LjMsMjFIMTkuNDJMMjIuODUsMTVNMjIuMjgsMTRMMTUuNDIsMkg4LjU4TDguNTcsMkwxNS40MywxNEgyMi4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVFYXJ0aCA9IFwiTTEyLDEyLjE0QzExLjA5LDEwLjc3IDEwLjE0LDkuNzggOS4xNCw5LjE5QzguMTQsOC41OSA3LjI3LDguMzggNi41LDguNTVDNS43Nyw4LjczIDUuMTQsOS4xNCA0LjY0LDkuOEM0LjIsMTAuMzkgNCwxMS4wNiA0LDExLjgxVjEyQzQsMTIuNzggNC4xMSwxMy41OCA0LjM2LDE0LjM5QzQuNDUsMTQuNjQgNC41LDE0LjY0IDQuNTUsMTQuMzlDNC42NywxMy43NyA0Ljk2LDEzLjMxIDUuNDEsMTMuMDNDNS44NywxMi43NSA2LjQ3LDEyLjc2IDcuMjIsMTMuMDVDNy45NywxMy4zNSA4LjcsMTQgOS40MiwxNC45NUMxMC43LDE2LjY3IDEyLjIsMTcuNzIgMTMuOTIsMTguMDlDMTYuMTQsMTguNDEgMTcuODEsMTcuNyAxOC45NCwxNkMxOS4yNSwxNS4zOSAxOS41LDE0Ljg2IDE5LjY0LDE0LjM5QzE5LjczLDE0LjA4IDE5LjY5LDE0LjA1IDE5LjUsMTQuM0MxOS4wMywxNC45MiAxOC40LDE1LjMzIDE3LjYsMTUuNUMxNi44LDE1LjcgMTUuODksMTUuNSAxNC44NiwxNUMxMy44MywxNC40MyAxMi44OCwxMy41IDEyLDEyLjE0TTE2Ljk3LDguMTZDMTUuNDEsNS44MSAxMy43Miw0LjUgMTEuOTEsNC4xN0MxMC40NywzLjk1IDguOTEsNC40NSA3LjIyLDUuNjdDNyw1LjgzIDYuOSw1LjkxIDYuOTEsNS45M0M2LjkzLDUuOTUgNy4wNiw1Ljg5IDcuMzEsNS43N0M5LjgxLDQuNTUgMTIuMjIsNS44MyAxNC41Myw5LjYxQzE1LjAzLDEwLjQ1IDE1LjU1LDExLjExIDE2LjEsMTEuNThDMTYuNjUsMTIuMDUgMTcuMTYsMTIuMzMgMTcuNjUsMTIuNDJDMTguMTMsMTIuNSAxOC41NywxMi41IDE4Ljk2LDEyLjM4QzE5LjM1LDEyLjI1IDE5LjcsMTIuMDUgMjAsMTEuNzdDMjAsMTEuMTcgMTkuOTEsMTAuNSAxOS42OSw5LjhDMTkuMTksOS45MiAxOC43NCw5Ljg4IDE4LjM1LDkuNjhDMTcuOTYsOS41IDE3LjUsOC45NyAxNi45Nyw4LjE2TTEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMkMyMiwxNC43NSAyMSwxNy4xIDE5LjA1LDE5LjA1QzE3LjEsMjEgMTQuNzUsMjIgMTIsMjJDOS4yNSwyMiA2LjksMjEgNC45NSwxOS4wNUMzLDE3LjEgMiwxNC43NSAyLDEyQzIsOS4yNSAzLDYuOSA0Ljk1LDQuOTVDNi45LDMgOS4yNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlRml0ID0gXCJNMTcsNEE1LDUgMCAwLDEgMjIsOUMyMiwxMC4zOCAyMS40NCwxMS42MyAyMC41NCwxMi41NEwxMiwyMS4wN0wzLjQ2LDEyLjU0QzIuNTYsMTEuNjMgMiwxMC4zOCAyLDlBNSw1IDAgMCwxIDcsNEM4LjM4LDQgOS42Myw0LjU2IDEwLjU0LDUuNDZMMTIsNi45M0wxMy40Niw1LjQ2QzE0LjM3LDQuNTYgMTUuNjIsNCAxNyw0TTE1LjU5LDcuNTlMOS4xNywxNEwxMiwxNi44M0wxOC40MSwxMC40MUMxOC43OCwxMC4wNSAxOSw5LjU1IDE5LDlBMiwyIDAgMCwwIDE3LDdDMTYuNDUsNyAxNS45NSw3LjIyIDE1LjU5LDcuNTlNOC40MSw3LjU5QzguMDUsNy4yMiA3LjU1LDcgNyw3QTIsMiAwIDAsMCA1LDlDNSw5LjU1IDUuMjIsMTAuMDUgNS41OSwxMC40MUw3LjA1LDExLjg4TDkuODgsOS4wNUw4LjQxLDcuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlR2xhc3MgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgyMEMyMS4xIDIyIDIyIDIxLjEgMjIgMjBWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTYuNzUgMThIMTUuMjVWOC45TDYuNzIgMThINC42NkwxNS40NSA2LjVDMTUuNjYgNi4yNiAxNiA2LjE5IDE2LjI3IDYuM0MxNi41NiA2LjQyIDE2Ljc1IDYuNjkgMTYuNzUgN1YxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVIYW5nb3V0cyA9IFwiTTE1LDExTDE0LDEzSDEyLjVMMTMuNSwxMUgxMlY4SDE1TTExLDExTDEwLDEzSDguNUw5LjUsMTFIOFY4SDExTTExLjUsMkE4LjUsOC41IDAgMCwwIDMsMTAuNUE4LjUsOC41IDAgMCwwIDExLjUsMTlIMTJWMjIuNUMxNi44NiwyMC4xNSAyMCwxNSAyMCwxMC41QzIwLDUuOCAxNi4xOSwyIDExLjUsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVIb21lID0gXCJNOC4wNiw3Ljc4QzcuNSw3Ljc4IDcuMTcsNy43MyA3LjA4LDcuNjRMNi42NiwxMy43M0M3LjE5LDE0LjA1IDcuODgsMTQuMyA4LjcyLDE0LjVDOS41NiwxNC43MSAxMC43OCwxNC43NyAxMi4zOCwxNC42N0MxMy45NywxNC41OCAxNS42MywxNC4yMyAxNy4zNCwxMy42NEwxNi41NSw0LjIyQzE1LjY3LDUuMDkgMTQuMzgsNS45MSAxMi42Niw2LjY2QzExLjEzLDcuMzEgOS44MSw3LjY5IDguNzIsNy43OEg4LjA2TTcuOTcsNS4zNEM3LjI4LDUuOTQgNyw2LjM0IDcuMTMsNi41NkM3LjIyLDYuNzggNy43LDYuODQgOC41OCw2Ljc1QzkuNjcsNi42NiAxMC45MSw2LjMxIDEyLjI4LDUuNzJDMTMuMjIsNS4zMSAxNC4wMyw0Ljg4IDE0LjcyLDQuNDFDMTUuNDEsMy45NCAxNS44OCwzLjU1IDE2LjEzLDMuMjNDMTYuMzgsMi45MiAxNi40NywyLjcgMTYuNDEsMi41OEMxNi4zNCwyLjQyIDE2LjAzLDIuMzQgMTUuNDcsMi4zNEMxNC4zNCwyLjM0IDEyLjk0LDIuNyAxMS4yNSwzLjQyQzkuODEsNC4wNSA4LjcyLDQuNjkgNy45Nyw1LjM0TTE3LjM0LDIuMkMxNy40MSwyLjMzIDE3LjQ0LDIuNDcgMTcuNDQsMi42M0wxOC42MSwxN0MxOC42MSwxOC43MyAxOCwyMC4wOSAxNi44MywyMS4wN0MxNS42NCwyMi4wNSAxNC4wMywyMi41NSAxMiwyMi41NUMxMCwyMi41NSA4LjQsMjIuMDQgNy4yLDIxQzYsMjAgNS4zOSwxOC42NCA1LjM5LDE2LjkyTDYuMDksNi40N0M2LjA5LDYuMjIgNi4yLDUuOTQgNi40Miw1LjYzQzYuNjQsNS4zMSA2Ljg0LDUuMDYgNy4wMyw0Ljg4TDcuMzYsNC41OUM4LjMzLDMuNzggOS41LDMuMDggMTAuODgsMi41QzExLjgxLDIuMDggMTIuNzMsMS43NyAxMy42MiwxLjU3QzE0LjUsMS4zNyAxNS4zLDEuMyAxNiwxLjM4QzE2LjcxLDEuNDYgMTcuMTYsMS43MyAxNy4zNCwyLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlS2VlcCA9IFwiTTQgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE3LjMzTDE3LjMzIDIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFY0QzIgMi45IDIuOSAyIDQgMk0xNyAxN1YyMC4yNUwyMC4yNSAxN0gxN00xMCAxOUgxNFYxOEgxNVYxM0MxNi4yMSAxMi4wOSAxNyAxMC42NCAxNyA5QzE3IDYuMjQgMTQuNzYgNCAxMiA0UzcgNi4yNCA3IDlDNyAxMC42NCA3Ljc5IDEyLjA5IDkgMTNWMThIMTBWMTlNMTQgMTdIMTBWMTVIMTRWMTdNMTIgNUMxNC4yMSA1IDE2IDYuNzkgMTYgOUMxNiAxMC41IDE1LjIgMTEuNzcgMTQgMTIuNDZWMTRIMTBWMTIuNDZDOC44IDExLjc3IDggMTAuNSA4IDlDOCA2Ljc5IDkuNzkgNSAxMiA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUxlbnMgPSBcIk02LDJIMThBNCw0IDAgMCwxIDIyLDZWMTJIMjBWNkEyLDIgMCAwLDAgMTgsNEg2QTIsMiAwIDAsMCA0LDZWMThBMiwyIDAgMCwwIDYsMjBIMTJWMjJINkE0LDQgMCAwLDEgMiwxOFY2QTQsNCAwIDAsMSA2LDJNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4TTE4LDE2QTIsMiAwIDAsMSAyMCwxOEEyLDIgMCAwLDEgMTgsMjBBMiwyIDAgMCwxIDE2LDE4QTIsMiAwIDAsMSAxOCwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVNYXBzID0gXCJNMTguMjcgNkMxOS4yOCA4LjE3IDE5LjA1IDEwLjczIDE3Ljk0IDEyLjgxQzE3IDE0LjUgMTUuNjUgMTUuOTMgMTQuNSAxNy41QzE0IDE4LjIgMTMuNSAxOC45NSAxMy4xMyAxOS43NkMxMyAyMC4wMyAxMi45MSAyMC4zMSAxMi44MSAyMC41OUMxMi43MSAyMC44NyAxMi42MiAyMS4xNSAxMi41MyAyMS40M0MxMi40NCAyMS42OSAxMi4zMyAyMiAxMiAyMkgxMkMxMS42MSAyMiAxMS41IDIxLjU2IDExLjQyIDIxLjI2QzExLjE4IDIwLjUzIDEwLjk0IDE5LjgzIDEwLjU3IDE5LjE2QzEwLjE1IDE4LjM3IDkuNjIgMTcuNjQgOS4wOCAxNi45M0wxOC4yNyA2TTkuMTIgOC40Mkw1LjgyIDEyLjM0QzYuNDMgMTMuNjMgNy4zNCAxNC43MyA4LjIxIDE1LjgzQzguNDIgMTYuMDggOC42MyAxNi4zNCA4LjgzIDE2LjYxTDEzIDExLjY3TDEyLjk2IDExLjY4QzExLjUgMTIuMTggOS44OCAxMS40NCA5LjMgMTBDOS4yMiA5LjgzIDkuMTYgOS42MyA5LjEyIDkuNDNDOS4wNyA5LjA2IDkuMDYgOC43OSA5LjEyIDguNDNMOS4xMiA4LjQyTTYuNTggNC42Mkw2LjU3IDQuNjNDNC45NSA2LjY4IDQuNjcgOS41MyA1LjY0IDExLjk0TDkuNjMgNy4yTDkuNTggNy4xNUw2LjU4IDQuNjJNMTQuMjIgMi4zNkwxMSA2LjE3TDExLjA0IDYuMTZDMTIuMzggNS43IDEzLjg4IDYuMjggMTQuNTYgNy41QzE0LjcxIDcuNzggMTQuODMgOC4wOCAxNC44NyA4LjM4QzE0LjkzIDguNzYgMTQuOTUgOS4wMyAxNC44OCA5LjRMMTQuODggOS40MUwxOC4wOCA1LjYxQzE3LjI0IDQuMDkgMTUuODcgMi45MyAxNC4yMyAyLjM3TDE0LjIyIDIuMzZNOS44OSA2Ljg5TDEzLjggMi4yNEwxMy43NiAyLjIzQzEzLjE4IDIuMDggMTIuNTkgMiAxMiAyQzEwLjAzIDIgOC4xNyAyLjg1IDYuODUgNC4zMUw2LjgzIDQuMzJMOS44OSA2Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZU15QnVzaW5lc3MgPSBcIk0yMiA4LjVDMjIgOS44NyAyMC44OCAxMSAxOS41IDExUzE3IDkuODcgMTcgOC41QzE3IDkuODcgMTUuODggMTEgMTQuNSAxMUMxMy4xMiAxMSAxMiA5Ljg3IDEyIDguNUMxMiA5Ljg3IDEwLjg4IDExIDkuNSAxMVM3IDkuODcgNyA4LjVDNyA5Ljg3IDUuODggMTEgNC41IDExUzIgOS44NyAyIDguNUwzLjM5IDMuMDhDMy4zOSAzLjA4IDMuNjggMiA0LjcgMkgxOS4zQzIwLjMyIDIgMjAuNjEgMy4wOCAyMC42MSAzLjA4TDIyIDguNU0yMSAxMi4yVjIwQzIxIDIxLjEgMjAuMSAyMiAxOSAyMkg1QzMuOSAyMiAzIDIxLjEgMyAyMFYxMi4yQzMuNDYgMTIuMzkgMy45NyAxMi41IDQuNSAxMi41QzUuNDUgMTIuNSA2LjMyIDEyLjE3IDcgMTEuNjJDNy42OSAxMi4xNyA4LjU2IDEyLjUgOS41IDEyLjVDMTAuNDUgMTIuNSAxMS4zMiAxMi4xNyAxMiAxMS42MkMxMi42OSAxMi4xNyAxMy41NiAxMi41IDE0LjUgMTIuNUMxNS40NSAxMi41IDE2LjMyIDEyLjE3IDE3IDExLjYyQzE3LjY4IDEyLjE3IDE4LjU2IDEyLjUgMTkuNSAxMi41QzIwLjAzIDEyLjUgMjAuNTQgMTIuMzkgMjEgMTIuMk0xOSAxNy4zM0MxOSAxNy4xMyAxOSAxNi45MiAxOC45NSAxNi43TDE4LjkyIDE2LjU0SDE1Ljk1VjE3LjcxSDE3Ljc2QzE3LjcgMTcuOTMgMTcuNjIgMTguMTUgMTcuNDUgMTguMzNDMTcuMTIgMTguNjYgMTYuNjcgMTguODQgMTYuMTkgMTguODRDMTUuNjkgMTguODQgMTUuMiAxOC42MyAxNC44NCAxOC4yOEMxNC4xNSAxNy41NyAxNC4xNSAxNi40MiAxNC44NiAxNS43QzE1LjU1IDE1IDE2LjY5IDE1IDE3LjQxIDE1LjY3TDE3LjU1IDE1LjhMMTguMzkgMTQuOTVMMTguMjMgMTQuODFDMTcuNjcgMTQuMjkgMTYuOTMgMTQgMTYuMTUgMTRIMTYuMTRDMTUuMzMgMTQgMTQuNTcgMTQuMzEgMTQgMTQuODdDMTMuNDEgMTUuNDUgMTMuMDggMTYuMjEgMTMuMDggMTdDMTMuMDggMTcuOCAxMy4zOSAxOC41NCAxMy45NiAxOS4wOUgxMy45NkMxNC41NCAxOS42NiAxNS4zNSAyMCAxNi4xOCAyMEgxNi4yQzE3IDIwIDE3LjcxIDE5LjcxIDE4LjIzIDE5LjJDMTguNyAxOC43MiAxOSAxOCAxOSAxNy4zM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVOZWFyYnkgPSBcIk0yMS4zNiwxMC40NkwxMy41NCwyLjY0QzEyLjY5LDEuNzkgMTEuMzEsMS43OSAxMC40NiwyLjY0TDIuNjQsMTAuNDZDMS43OSwxMS4zMSAxLjc5LDEyLjY5IDIuNjQsMTMuNTRMMTAuNDYsMjEuMzZDMTEuMzEsMjIuMjEgMTIuNjksMjIuMjEgMTMuNTQsMjEuMzZMMjEuMzYsMTMuNTRDMjIuMjEsMTIuNjkgMjIuMjEsMTEuMzEgMjEuMzYsMTAuNDZNMTIsMTlMNSwxMkwxMiw1TDE5LDEyTDEyLDE5TTE2LjUsMTJMMTIsMTYuNUw3LjUsMTJMMTIsNy41TDE2LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlUGhvdG9zID0gXCJNMTAsMTNDMTAuNTUsMTMgMTEsMTMuMTggMTEuNDEsMTMuNTdDMTEuOCwxMy45NiAxMiwxNC40NCAxMiwxNVYyMkMxMiwyMi4xNyAxMS45MSwyMi4yNyAxMS43MiwyMi4yN0MxMS42NiwyMi4yNyAxMS41OCwyMi4yMiAxMS41LDIyLjEzTDcsMTcuNjdWMTNIMTBNMTIuNSwxLjg4TDE3LDYuMzNWMTFIMTRDMTMuNDUsMTEgMTMsMTAuODIgMTIuNTksMTAuNDNDMTIuMiwxMC4wNCAxMiw5LjU2IDEyLDlWMkMxMiwxLjgzIDEyLjA5LDEuNzMgMTIuMjgsMS43M0MxMi4zNCwxLjczIDEyLjQyLDEuNzggMTIuNSwxLjg4TTIyLDEyQzIyLjE3LDEyIDIyLjI3LDEyLjA5IDIyLjI3LDEyLjI4QzIyLjI3LDEyLjM0IDIyLjIyLDEyLjQyIDIyLjEzLDEyLjVMMTcuNjcsMTdIMTNWMTRDMTMsMTMuNDUgMTMuMTgsMTMgMTMuNTcsMTIuNTlDMTMuOTYsMTIuMiAxNC40NCwxMiAxNSwxMkgyMk02LjMzLDdIMTFWMTBDMTEsMTAuNTUgMTAuODIsMTEgMTAuNDMsMTEuNDFDMTAuMDQsMTEuOCA5LjU2LDEyIDksMTJIMkMxLjgzLDEyIDEuNzMsMTEuOTEgMS43MywxMS43MkMxLjczLDExLjY2IDEuNzgsMTEuNTggMS44OCwxMS41TDYuMzMsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVQbGF5ID0gXCJNMywyMC41VjMuNUMzLDIuOTEgMy4zNCwyLjM5IDMuODQsMi4xNUwxMy42OSwxMkwzLjg0LDIxLjg1QzMuMzQsMjEuNiAzLDIxLjA5IDMsMjAuNU0xNi44MSwxNS4xMkw2LjA1LDIxLjM0TDE0LjU0LDEyLjg1TDE2LjgxLDE1LjEyTTIwLjE2LDEwLjgxQzIwLjUsMTEuMDggMjAuNzUsMTEuNSAyMC43NSwxMkMyMC43NSwxMi41IDIwLjUzLDEyLjkgMjAuMTgsMTMuMThMMTcuODksMTQuNUwxNS4zOSwxMkwxNy44OSw5LjVMMjAuMTYsMTAuODFNNi4wNSwyLjY2TDE2LjgxLDguODhMMTQuNTQsMTEuMTVMNi4wNSwyLjY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZVBsdXMgPSBcIk0yMywxMUgyMVY5SDE5VjExSDE3VjEzSDE5VjE1SDIxVjEzSDIzTTgsMTFWMTMuNEgxMkMxMS44LDE0LjQgMTAuOCwxNi40IDgsMTYuNEM1LjYsMTYuNCAzLjcsMTQuNCAzLjcsMTJDMy43LDkuNiA1LjYsNy42IDgsNy42QzkuNCw3LjYgMTAuMyw4LjIgMTAuOCw4LjdMMTIuNyw2LjlDMTEuNSw1LjcgOS45LDUgOCw1QzQuMSw1IDEsOC4xIDEsMTJDMSwxNS45IDQuMSwxOSA4LDE5QzEyLDE5IDE0LjcsMTYuMiAxNC43LDEyLjJDMTQuNywxMS43IDE0LjcsMTEuNCAxNC42LDExSDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlUG9kY2FzdCA9IFwiTTE3LjY4LDcuMjJWOC42MkMxNy42OCw5LjMgMTcuMTMsOS44NiAxNi40Myw5Ljg2QzE1Ljc0LDkuODYgMTUuMTgsOS4zIDE1LjE4LDguNjJWNy4yMkExLjI1LDEuMjUgMCAwLDEgMTYuNDMsNS45N0MxNy4xMyw1Ljk3IDE3LjY4LDYuNTMgMTcuNjgsNy4yMk0xMy4yNSw4LjM2VjE1LjYzQzEzLjI1LDE2LjMyIDEyLjY5LDE2Ljg4IDEyLDE2Ljg4QzExLjMxLDE2Ljg4IDEwLjc1LDE2LjMyIDEwLjc1LDE1LjYzVjguMzZDMTAuNzUsNy42OCAxMS4zMSw3LjExIDEyLDcuMTFDMTIuNjksNy4xMSAxMy4yNSw3LjY4IDEzLjI1LDguMzZNMjIsMTEuM1YxMi43QzIyLDEzLjM4IDIxLjQ0LDEzLjk0IDIwLjc1LDEzLjk0QzIwLjA2LDEzLjk0IDE5LjUsMTMuMzggMTkuNSwxMi43VjExLjNDMTkuNSwxMC42MSAyMC4wNiwxMC4wNiAyMC43NSwxMC4wNkMyMS40NCwxMC4wNiAyMiwxMC42MSAyMiwxMS4zTTQuNSwxMS4zVjEyLjdDNC41LDEzLjM4IDMuOTQsMTMuOTQgMy4yNSwxMy45NEMyLjU1LDEzLjk0IDIsMTMuMzggMiwxMi43VjExLjNDMiwxMC42MSAyLjU1LDEwLjA2IDMuMjUsMTAuMDZDMy45NCwxMC4wNiA0LjUsMTAuNjEgNC41LDExLjNNOC44MiwxNS4zOFYxNi43N0M4LjgyLDE3LjQ1IDguMjYsMTggNy41NywxOEM2Ljg4LDE4IDYuMzIsMTcuNDUgNi4zMiwxNi43N1YxNS4zOEM2LjMyLDE0LjY4IDYuODgsMTQuMTMgNy41NywxNC4xM0ExLjI1LDEuMjUgMCAwLDEgOC44MiwxNS4zOE0xMy4yNSwxOS4zNlYyMC43NUExLjI1LDEuMjUgMCAwLDEgMTIsMjJBMS4yNSwxLjI1IDAgMCwxIDEwLjc1LDIwLjc1VjE5LjM2QTEuMjUsMS4yNSAwIDAsMSAxMiwxOC4xMUExLjI1LDEuMjUgMCAwLDEgMTMuMjUsMTkuMzZNMTMuMjUsMy4yNVY0LjY0QTEuMjUsMS4yNSAwIDAsMSAxMiw1Ljg5QTEuMjUsMS4yNSAwIDAsMSAxMC43NSw0LjY0VjMuMjVDMTAuNzUsMi41NSAxMS4zMSwyIDEyLDJBMS4yNSwxLjI1IDAgMCwxIDEzLjI1LDMuMjVNMTcuNjgsMTIuMzRWMTYuNzdDMTcuNjgsMTcuNDYgMTcuMTMsMTggMTYuNDMsMThDMTUuNzQsMTggMTUuMTgsMTcuNDYgMTUuMTgsMTYuNzdWMTIuMzRDMTUuMTgsMTEuNjQgMTUuNzQsMTEuMDkgMTYuNDMsMTEuMDlDMTcuMTMsMTEuMDkgMTcuNjgsMTEuNjQgMTcuNjgsMTIuMzRNOC44Miw3LjIyVjExLjY1QzguODIsMTIuMzUgOC4yNiwxMi45IDcuNTcsMTIuOUExLjI1LDEuMjUgMCAwLDEgNi4zMiwxMS42NVY3LjIyQTEuMjUsMS4yNSAwIDAsMSA3LjU3LDUuOTdBMS4yNSwxLjI1IDAgMCwxIDguODIsNy4yMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVTcHJlYWRzaGVldCA9IFwiTTE5LDExVjlIMTFWNUg5VjlINVYxMUg5VjE5SDExVjExSDE5TTE5LDNDMTkuNSwzIDIwLDMuMiAyMC4zOSwzLjYxQzIwLjgsNCAyMSw0LjUgMjEsNVYxOUMyMSwxOS41IDIwLjgsMjAgMjAuMzksMjAuMzlDMjAsMjAuOCAxOS41LDIxIDE5LDIxSDVDNC41LDIxIDQsMjAuOCAzLjYxLDIwLjM5QzMuMiwyMCAzLDE5LjUgMywxOVY1QzMsNC41IDMuMiw0IDMuNjEsMy42MUM0LDMuMiA0LjUsMyA1LDNIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlU3RyZWV0VmlldyA9IFwiTTExLjk1LDkuMjdDMTMuOTYsOS4yNyAxNS41OSw3LjY0IDE1LjU5LDUuNjNDMTUuNTksMy42MyAxMy45NiwyIDExLjk1LDJDOS45NCwyIDguMzIsMy42MyA4LjMyLDUuNjNDOC4zMiw3LjY0IDkuOTQsOS4yNyAxMS45NSw5LjI3TTkuMzYsMTIuOTdDOS4zNiwxMi45NyA4LjI3LDE1Ljk0IDcuOTYsMTYuNUM3Ljg1LDE2LjcxIDcuODcsMTYuNzcgNy42LDE2Ljc3QzcuMzMsMTYuNzcgNi45MSwxNi41IDYuOTEsMTYuNUM2LjkxLDE2LjUgNi43MSwxNi4zNyA2Ljc5LDE2LjE0QzcuMDMsMTUuNCA4LjEyLDExLjA4IDguMzUsMTAuMjVDOC42LDkuMzYgOS4yOCw5LjM5IDkuMjgsOS4zOUg5LjkzTDEyLjAzLDEzLjA0TDE0LjE0LDkuMzlIMTQuOTJDMTQuOTIsOS4zOSAxNS4yMyw5LjQzIDE1LjQ2LDkuN0MxNS43LDkuOTcgMTUuNzUsMTAuNDQgMTUuNzUsMTAuNDRMMTcuMTQsMTUuODRDMTcuMTQsMTUuODQgMTcuMjQsMTYuMjIgMTcuMjEsMTYuMzNDMTcuMTcsMTYuNSAxNy4wOCwxNi41IDE3LjA4LDE2LjVDMTcuMDgsMTYuNSAxNi42OSwxNi42MiAxNi40NywxNi42OUMxNi4wNywxNi44MiAxNiwxNi40NCAxNiwxNi40NEwxNC43LDEzLjA0TDE0LjU1LDIySDEyLjZMMTIuMjcsMTYuODlDMTIuMjcsMTYuODkgMTIuMjEsMTYuNzYgMTIuMDMsMTYuNzZDMTEuODYsMTYuNzYgMTEuOCwxNi44OSAxMS44LDE2Ljg5TDExLjQ1LDIySDkuNUw5LjM3LDEyLjk3SDkuMzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlVHJhbnNsYXRlID0gXCJNMjAsNUgxMC44OEwxMCwySDRBMiwyIDAgMCwwIDIsNFYxN0EyLDIgMCAwLDAgNCwxOUgxMUwxMiwyMkgyMEEyLDIgMCAwLDAgMjIsMjBWN0EyLDIgMCAwLDAgMjAsNU03LjE3LDE0LjU5QTQuMDksNC4wOSAwIDAsMSAzLjA4LDEwLjVBNC4wOSw0LjA5IDAgMCwxIDcuMTcsNi40MUM4LjIxLDYuNDEgOS4xNiw2Ljc4IDkuOTEsNy41TDEwLDcuNTRMOC43NSw4LjcyTDguNjksOC42N0M4LjQsOC40IDcuOTEsOC4wOCA3LjE3LDguMDhDNS44Niw4LjA4IDQuNzksOS4xNyA0Ljc5LDEwLjVDNC43OSwxMS44MyA1Ljg2LDEyLjkyIDcuMTcsMTIuOTJDOC41NCwxMi45MiA5LjEzLDEyLjA1IDkuMjksMTEuNDZINy4wOFY5LjkxSDExLjAzTDExLjA0LDEwQzExLjA4LDEwLjE5IDExLjA5LDEwLjM4IDExLjA5LDEwLjU5QzExLjA5LDEyLjk0IDkuNSwxNC41OSA3LjE3LDE0LjU5TTEzLjIsMTIuODhDMTMuNTMsMTMuNSAxMy45NCwxNC4wNiAxNC4zOSwxNC41OEwxMy44NSwxNS4xMUwxMy4yLDEyLjg4TTEzLjk3LDEyLjEySDEzTDEyLjY3LDExLjA4SDE2LjY2QzE2LjY2LDExLjA4IDE2LjMyLDEyLjM5IDE1LjEsMTMuODJDMTQuNTgsMTMuMiAxNC4yMSwxMi41OSAxMy45NywxMi4xMk0yMSwyMEExLDEgMCAwLDEgMjAsMjFIMTNMMTUsMTlMMTQuMTksMTYuMjNMMTUuMTEsMTUuMzFMMTcuNzksMThMMTguNSwxNy4yN0wxNS44MSwxNC41OUMxNi43MSwxMy41NiAxNy40MSwxMi4zNCAxNy43MywxMS4wOEgxOVYxMC4wNEgxNS4zNlY5SDE0LjMyVjEwLjA0SDEyLjM2TDExLjE4LDZIMjBBMSwxIDAgMCwxIDIxLDdWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JhZGllbnQgPSBcIk0xMSw5SDEzVjExSDExVjlNOSwxMUgxMVYxM0g5VjExTTEzLDExSDE1VjEzSDEzVjExTTE1LDlIMTdWMTFIMTVWOU03LDlIOVYxMUg3VjlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNOSwxOEg3VjE2SDlWMThNMTMsMThIMTFWMTZIMTNWMThNMTcsMThIMTVWMTZIMTdWMThNMTksMTFIMTdWMTNIMTlWMTVIMTdWMTNIMTVWMTVIMTNWMTNIMTFWMTVIOVYxM0g3VjE1SDVWMTNIN1YxMUg1VjVIMTlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JhaW4gPSBcIk0xMCwxMkEyLDIgMCAwLDAgOCwxNEEyLDIgMCAwLDAgMTAsMTZBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxMCwxMk02LDhBMiwyIDAgMCwwIDQsMTBBMiwyIDAgMCwwIDYsMTJBMiwyIDAgMCwwIDgsMTBBMiwyIDAgMCwwIDYsOE02LDE2QTIsMiAwIDAsMCA0LDE4QTIsMiAwIDAsMCA2LDIwQTIsMiAwIDAsMCA4LDE4QTIsMiAwIDAsMCA2LDE2TTE4LDhBMiwyIDAgMCwwIDIwLDZBMiwyIDAgMCwwIDE4LDRBMiwyIDAgMCwwIDE2LDZBMiwyIDAgMCwwIDE4LDhNMTQsMTZBMiwyIDAgMCwwIDEyLDE4QTIsMiAwIDAsMCAxNCwyMEEyLDIgMCAwLDAgMTYsMThBMiwyIDAgMCwwIDE0LDE2TTE4LDEyQTIsMiAwIDAsMCAxNiwxNEEyLDIgMCAwLDAgMTgsMTZBMiwyIDAgMCwwIDIwLDE0QTIsMiAwIDAsMCAxOCwxMk0xNCw4QTIsMiAwIDAsMCAxMiwxMEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDE2LDEwQTIsMiAwIDAsMCAxNCw4TTEwLDRBMiwyIDAgMCwwIDgsNkEyLDIgMCAwLDAgMTAsOEEyLDIgMCAwLDAgMTIsNkEyLDIgMCAwLDAgMTAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmFwaCA9IFwiTTE5LjUgMTdDMTkuMzcgMTcgMTkuMjQgMTcgMTkuMTEgMTcuMDRMMTcuNSAxMy43OUMxNy45NSAxMy4zNCAxOC4yNSAxMi43MSAxOC4yNSAxMkMxOC4yNSAxMC42MiAxNy4xMyA5LjUgMTUuNzUgOS41QzE1LjYyIDkuNSAxNS41IDkuNSAxNS4zNiA5LjU0TDEzLjczIDYuMjlDMTQuMjEgNS44NCAxNC41IDUuMjEgMTQuNSA0LjVDMTQuNSAzLjEyIDEzLjM4IDIgMTIgMlM5LjUgMy4xMiA5LjUgNC41QzkuNSA1LjIxIDkuNzkgNS44NCAxMC4yNiA2LjI5TDguNjQgOS41NEM4LjUgOS41IDguMzggOS41IDguMjUgOS41QzYuODcgOS41IDUuNzUgMTAuNjIgNS43NSAxMkM1Ljc1IDEyLjcxIDYuMDUgMTMuMzQgNi41IDEzLjc5TDQuODkgMTcuMDRDNC43NiAxNyA0LjYzIDE3IDQuNSAxN0MzLjEyIDE3IDIgMTguMTIgMiAxOS41QzIgMjAuODggMy4xMiAyMiA0LjUgMjJTNyAyMC44OCA3IDE5LjVDNyAxOC44IDYuNzEgMTguMTYgNi4yNCAxNy43MUw3Ljg2IDE0LjQ2QzggMTQuNSA4LjEyIDE0LjUgOC4yNSAxNC41QzguMzggMTQuNSA4LjUgMTQuNSA4LjY0IDE0LjQ2TDEwLjI3IDE3LjcxQzkuOCAxOC4xNiA5LjUgMTguOCA5LjUgMTkuNUM5LjUgMjAuODggMTAuNjIgMjIgMTIgMjJTMTQuNSAyMC44OCAxNC41IDE5LjVDMTQuNSAxOC4xMiAxMy4zOCAxNyAxMiAxN0MxMS44NyAxNyAxMS43NCAxNyAxMS42MSAxNy4wNEwxMCAxMy43OUMxMC40NiAxMy4zNCAxMC43NSAxMi43MSAxMC43NSAxMlMxMC40NiAxMC42NiAxMCAxMC4yMUwxMS42MSA2Ljk2QzExLjc0IDcgMTEuODcgNyAxMiA3UzEyLjI2IDcgMTIuMzkgNi45NkwxNCAxMC4yMUMxMy41NSAxMC42NiAxMy4yNSAxMS4zIDEzLjI1IDEyQzEzLjI1IDEzLjM4IDE0LjM3IDE0LjUgMTUuNzUgMTQuNUMxNS44OCAxNC41IDE2IDE0LjUgMTYuMTQgMTQuNDZMMTcuNzcgMTcuNzFDMTcuMyAxOC4xNiAxNyAxOC44IDE3IDE5LjVDMTcgMjAuODggMTguMTIgMjIgMTkuNSAyMlMyMiAyMC44OCAyMiAxOS41QzIyIDE4LjEyIDIwLjg4IDE3IDE5LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JhcGhPdXRsaW5lID0gXCJNMTkuNSAxN0MxOS4zNiAxNyAxOS4yNCAxNyAxOS4xMSAxNy4wNEwxNy41IDEzLjhDMTcuOTUgMTMuMzUgMTguMjUgMTIuNzEgMTguMjUgMTJDMTguMjUgMTAuNjIgMTcuMTMgOS41IDE1Ljc1IDkuNUMxNS42MSA5LjUgMTUuNSA5LjUgMTUuMzUgOS41NEwxMy43NCA2LjNDMTQuMjEgNS44NCAxNC41IDUuMjEgMTQuNSA0LjVDMTQuNSAzLjEyIDEzLjM4IDIgMTIgMlM5LjUgMy4xMiA5LjUgNC41QzkuNSA1LjIgOS43OSA1Ljg0IDEwLjI2IDYuMjlMOC42NSA5LjU0QzguNSA5LjUgOC4zOSA5LjUgOC4yNSA5LjVDNi44NyA5LjUgNS43NSAxMC42MiA1Ljc1IDEyQzUuNzUgMTIuNzEgNi4wNCAxMy4zNCA2LjUgMTMuNzlMNC44OSAxNy4wNEM0Ljc2IDE3IDQuNjQgMTcgNC41IDE3QzMuMTIgMTcgMiAxOC4xMiAyIDE5LjVDMiAyMC44OCAzLjEyIDIyIDQuNSAyMlM3IDIwLjg4IDcgMTkuNUM3IDE4LjggNi43MSAxOC4xNiA2LjI0IDE3LjcxTDcuODYgMTQuNDZDOCAxNC41IDguMTIgMTQuNSA4LjI1IDE0LjVDOC4zOCAxNC41IDguNSAxNC41IDguNjMgMTQuNDZMMTAuMjYgMTcuNzFDOS43OSAxOC4xNiA5LjUgMTguOCA5LjUgMTkuNUM5LjUgMjAuODggMTAuNjIgMjIgMTIgMjJTMTQuNSAyMC44OCAxNC41IDE5LjVDMTQuNSAxOC4xMiAxMy4zOCAxNyAxMiAxN0MxMS44NyAxNyAxMS43NCAxNyAxMS42MSAxNy4wNEwxMCAxMy44QzEwLjQ1IDEzLjM1IDEwLjc1IDEyLjcxIDEwLjc1IDEyQzEwLjc1IDExLjMgMTAuNDYgMTAuNjcgMTAgMTAuMjFMMTEuNjEgNi45NkMxMS43NCA3IDExLjg3IDcgMTIgN0MxMi4xMyA3IDEyLjI2IDcgMTIuMzkgNi45NkwxNCAxMC4yMUMxMy41NCAxMC42NiAxMy4yNSAxMS4zIDEzLjI1IDEyQzEzLjI1IDEzLjM4IDE0LjM3IDE0LjUgMTUuNzUgMTQuNUMxNS44OCAxNC41IDE2IDE0LjUgMTYuMTMgMTQuNDZMMTcuNzYgMTcuNzFDMTcuMjkgMTguMTYgMTcgMTguOCAxNyAxOS41QzE3IDIwLjg4IDE4LjEyIDIyIDE5LjUgMjJTMjIgMjAuODggMjIgMTkuNUMyMiAxOC4xMiAyMC44OCAxNyAxOS41IDE3TTQuNSAyMC41QzMuOTUgMjAuNSAzLjUgMjAuMDUgMy41IDE5LjVTMy45NSAxOC41IDQuNSAxOC41IDUuNSAxOC45NSA1LjUgMTkuNSA1LjA1IDIwLjUgNC41IDIwLjVNMTMgMTkuNUMxMyAyMC4wNSAxMi41NSAyMC41IDEyIDIwLjVTMTEgMjAuMDUgMTEgMTkuNSAxMS40NSAxOC41IDEyIDE4LjUgMTMgMTguOTUgMTMgMTkuNU03LjI1IDEyQzcuMjUgMTEuNDUgNy43IDExIDguMjUgMTFTOS4yNSAxMS40NSA5LjI1IDEyIDguOCAxMyA4LjI1IDEzIDcuMjUgMTIuNTUgNy4yNSAxMk0xMSA0LjVDMTEgMy45NSAxMS40NSAzLjUgMTIgMy41UzEzIDMuOTUgMTMgNC41IDEyLjU1IDUuNSAxMiA1LjUgMTEgNS4wNSAxMSA0LjVNMTQuNzUgMTJDMTQuNzUgMTEuNDUgMTUuMiAxMSAxNS43NSAxMVMxNi43NSAxMS40NSAxNi43NSAxMiAxNi4zIDEzIDE1Ljc1IDEzIDE0Ljc1IDEyLjU1IDE0Ljc1IDEyTTE5LjUgMjAuNUMxOC45NSAyMC41IDE4LjUgMjAuMDUgMTguNSAxOS41UzE4Ljk1IDE4LjUgMTkuNSAxOC41IDIwLjUgMTguOTUgMjAuNSAxOS41IDIwLjA1IDIwLjUgMTkuNSAyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdyYXBocWwgPSBcIk0xMiw1LjM3TDExLjU2LDUuMzFMNiwxNC45QzYuMjQsMTUuMTEgNi40LDE1LjM4IDYuNDcsMTUuNjhIMTcuNTNDMTcuNiwxNS4zOCAxNy43NiwxNS4xMSAxOCwxNC45TDEyLjQ0LDUuMzFMMTIsNS4zN002LjYsMTYuNTNMMTAuODgsMTkuMDZDMTEuMTcsMTguNzkgMTEuNTcsMTguNjMgMTIsMTguNjNDMTIuNDMsMTguNjMgMTIuODMsMTguNzkgMTMuMTIsMTkuMDZMMTcuNCwxNi41M0g2LjZNMTIsMjJBMS42OCwxLjY4IDAgMCwxIDEwLjMyLDIwLjMyTDEwLjQxLDE5Ljc2TDYuMTEsMTcuMjFDNS44LDE3LjU3IDUuMzUsMTcuNzkgNC44NCwxNy43OUExLjY4LDEuNjggMCAwLDEgMy4xNiwxNi4xMUMzLjE2LDE1LjMyIDMuNjksMTQuNjYgNC40MiwxNC40N1Y5LjM2QzMuNTksOS4yNSAyLjk1LDguNTQgMi45NSw3LjY4QTEuNjgsMS42OCAwIDAsMSA0LjYzLDZDNS4xOCw2IDUuNjYsNi4yNiA1Ljk3LDYuNjZMMTAuMzgsNC4xM0wxMC4zMiwzLjY4QzEwLjMyLDIuNzUgMTEuMDcsMiAxMiwyQzEyLjkzLDIgMTMuNjgsMi43NSAxMy42OCwzLjY4TDEzLjYyLDQuMTNMMTguMDMsNi42NkMxOC4zNCw2LjI2IDE4LjgyLDYgMTkuMzcsNkExLjY4LDEuNjggMCAwLDEgMjEuMDUsNy42OEMyMS4wNSw4LjU0IDIwLjQxLDkuMjUgMTkuNTgsOS4zNlYxNC40N0MyMC4zMSwxNC42NiAyMC44NCwxNS4zMiAyMC44NCwxNi4xMUExLjY4LDEuNjggMCAwLDEgMTkuMTYsMTcuNzlDMTguNjUsMTcuNzkgMTguMiwxNy41NyAxNy44OSwxNy4yMUwxMy41OSwxOS43NkwxMy42OCwyMC4zMkExLjY4LDEuNjggMCAwLDEgMTIsMjJNMTAuOCw0Ljg2TDYuMyw3LjQ0TDYuMzIsNy42OEM2LjMyLDguMzkgNS44OCw5IDUuMjYsOS4yNUw1LjI5LDE0LjVMMTAuOCw0Ljg2TTEzLjIsNC44NkwxOC43MSwxNC41TDE4Ljc0LDkuMjVDMTguMTIsOSAxNy42OCw4LjM5IDE3LjY4LDcuNjhMMTcuNyw3LjQ0TDEzLjIsNC44NlpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmFzcyA9IFwiTTEyIDIwSDJWMThINy43NUM3IDE1LjE5IDQuODEgMTMgMiAxMi4yNkMyLjY0IDEyLjEgMy4zMSAxMiA0IDEyQzguNDIgMTIgMTIgMTUuNTggMTIgMjBNMjIgMTIuMjZDMjEuMzYgMTIuMSAyMC42OSAxMiAyMCAxMkMxNy4wNyAxMiAxNC41IDEzLjU4IDEzLjEyIDE1LjkzQzEzLjQxIDE2LjU5IDEzLjY1IDE3LjI4IDEzLjc5IDE4QzEzLjkyIDE4LjY1IDE0IDE5LjMyIDE0IDIwSDIyVjE4SDE2LjI0QzE3IDE1LjE5IDE5LjE5IDEzIDIyIDEyLjI2TTE1LjY0IDExQzE2LjQyIDguOTMgMTcuODcgNy4xOCAxOS43MyA2QzE1LjQ0IDYuMTYgMTIgOS42NyAxMiAxNFYxNEMxMi45NSAxMi43NSAxNC4yIDExLjcyIDE1LjY0IDExTTExLjQyIDguODVDMTAuNTggNi42NiA4Ljg4IDQuODkgNi43IDRDOC4xNCA1Ljg2IDkgOC4xOCA5IDEwLjcxQzkgMTAuOTIgOC45NyAxMS4xMiA4Ljk2IDExLjMyQzkuMzkgMTEuNTYgOS43OSAxMS44NCAxMC4xOCAxMi4xNEMxMC4zOSAxMC45NiAxMC44MyA5Ljg1IDExLjQyIDguODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JhdmVTdG9uZSA9IFwiTTEwLDJIMTRDMTcuMzEsMiAxOSw0LjY5IDE5LDhWMTguNjZDMTYuODgsMTcuNjMgMTUuMDcsMTcgMTIsMTdDOC45MywxNyA3LjEyLDE3LjYzIDUsMTguNjZWOEM1LDQuNjkgNi42OSwyIDEwLDJNOCw4VjkuNUgxNlY4SDhNOSwxMlYxMy41SDE1VjEySDlNMywyMlYyMS4zMUM1LjY2LDE5LjYyIDEzLjIzLDE1Ljg0IDIxLDIxLjI1VjIySDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JlYXNlUGVuY2lsID0gXCJNMTguNjIsMS41QzE4LjExLDEuNSAxNy42LDEuNjkgMTcuMjEsMi4wOUwxMC43NSw4LjU1TDE0Ljk1LDEyLjc0TDIxLjQxLDYuMjlDMjIuMiw1LjUgMjIuMiw0LjI0IDIxLjQxLDMuNDZMMjAuMDQsMi4wOUMxOS42NSwxLjY5IDE5LjE0LDEuNSAxOC42MiwxLjVNOS44LDkuNUwzLjIzLDE2LjA3TDMuOTMsMTYuNzdDMy40LDE3LjI0IDIuODksMTcuNzggMi4zOCwxOC4yOUMxLjYsMTkuMDggMS42LDIwLjM0IDIuMzgsMjEuMTJDMy4xNiwyMS45IDQuNDIsMjEuOSA1LjIxLDIxLjEyQzUuNzIsMjAuNjMgNi4yNSwyMC4wOCA2LjczLDE5LjU4TDcuNDMsMjAuMjdMMTQsMTMuN1wiO1xyXG5leHBvcnQgdmFyIG1kaUdyZWF0ZXJUaGFuID0gXCJNNS41LDQuMTRMNC41LDUuODZMMTUsMTJMNC41LDE4LjE0TDUuNSwxOS44NkwxOSwxMkw1LjUsNC4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmVhdGVyVGhhbk9yRXF1YWwgPSBcIk02LjUsMi4yN0wyMCwxMC4xNEw2LjUsMThMNS41LDE2LjI3TDE2LjAzLDEwLjE0TDUuNSw0TDYuNSwyLjI3TTIwLDIwVjIySDVWMjBIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JpZCA9IFwiTTEwLDRWOEgxNFY0SDEwTTE2LDRWOEgyMFY0SDE2TTE2LDEwVjE0SDIwVjEwSDE2TTE2LDE2VjIwSDIwVjE2SDE2TTE0LDIwVjE2SDEwVjIwSDE0TTgsMjBWMTZINFYyMEg4TTgsMTRWMTBINFYxNEg4TTgsOFY0SDRWOEg4TTEwLDE0SDE0VjEwSDEwVjE0TTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYyMEEyLDIgMCAwLDEgMjAsMjJINEMyLjkyLDIyIDIsMjEuMSAyLDIwVjRBMiwyIDAgMCwxIDQsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmlkTGFyZ2UgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMjBBMiwyIDAgMCwxIDIwLDIySDRDMi45MiwyMiAyLDIxLjEgMiwyMFY0QTIsMiAwIDAsMSA0LDJNNCw0VjExSDExVjRINE00LDIwSDExVjEzSDRWMjBNMjAsMjBWMTNIMTNWMjBIMjBNMjAsNEgxM1YxMUgyMFY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdyaWRPZmYgPSBcIk0wLDIuNzdMMS4yOCwxLjVMMjIuNSwyMi43MkwyMS4yMywyNEwxOS4yMywyMkg0QzIuOTIsMjIgMiwyMS4xIDIsMjBWNC43N0wwLDIuNzdNMTAsNFY3LjY4TDgsNS42OFY0SDYuMzJMNC4zMiwySDIwQTIsMiAwIDAsMSAyMiw0VjE5LjdMMjAsMTcuN1YxNkgxOC4zMkwxNi4zMiwxNEgyMFYxMEgxNlYxMy42OEwxNCwxMS42OFYxMEgxMi4zMkwxMC4zMiw4SDE0VjRIMTBNMTYsNFY4SDIwVjRIMTZNMTYsMjBIMTcuMjNMMTYsMTguNzdWMjBNNCw4SDUuMjNMNCw2Ljc3VjhNMTAsMTRIMTEuMjNMMTAsMTIuNzdWMTRNMTQsMjBWMTYuNzdMMTMuMjMsMTZIMTBWMjBIMTRNOCwyMFYxNkg0VjIwSDhNOCwxNFYxMC43N0w3LjIzLDEwSDRWMTRIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmlsbCA9IFwiTTguMDYsMkM3Ljg4LDMuMTcgOC4xNyw0LjE2IDguOTUsNC45N0M5LjQ1LDUuNDcgOS42MSw2LjE0IDkuNDIsN0gxMC40MUMxMC41Myw2LjQ1IDEwLjU1LDYgMTAuNDUsNS41NUMxMC4zNiw1LjEzIDEwLjA1LDQuNjMgOS41LDQuMDNDOS4wNSwzLjQ3IDguODksMi44IDkuMDUsMkg4LjA2TTEwLjU1LDJDMTAuMzYsMy4xNyAxMC42Niw0LjE2IDExLjQ0LDQuOTdDMTEuOTQsNS40NyAxMi4wOSw2LjE0IDExLjkxLDdIMTIuODlDMTMsNi40NSAxMy4wMyw2IDEyLjk0LDUuNTVDMTIuODQsNS4xMyAxMi41Myw0LjYzIDEyLDQuMDNDMTEuNTMsMy40NyAxMS4zOCwyLjggMTEuNTMsMkgxMC41NU0xMy4wOCwyQzEyLjg5LDMuMTcgMTMuMTksNC4xNiAxMy45Nyw0Ljk3QzE0LjQ3LDUuNDcgMTQuNjEsNi4xNCAxNC4zOSw3SDE1LjQyQzE1LjU1LDYuNDUgMTUuNTYsNiAxNS40Nyw1LjU1QzE1LjM4LDUuMTMgMTUuMDYsNC42MyAxNC41Myw0LjAzQzE0LjA2LDMuNDcgMTMuOTEsMi44IDE0LjA2LDJIMTMuMDhNNSw4QzUsOS40MiA1LjM5LDEwLjcgNi4xNCwxMS44NEM2Ljg3LDEyLjk2IDcuOTEsMTMuODUgOS4xNCwxNC4zOUw1LjE2LDIwLjQ0QzUuMDYsMjAuNTYgNSwyMC43NSA1LDIxQzUsMjEuNDEgNS4xNiwyMS42OSA1LjQ0LDIxLjg0QzUuNTYsMjEuOTQgNS43NSwyMiA2LDIyQzYuNDEsMjIgNi42OSwyMS44NCA2Ljg0LDIxLjU2TDcuODMsMTkuOTdIMTQuMkMxNC40MSwyMC41NSAxNC43OSwyMS4wNSAxNS4yOCwyMS40MkMxNS43OCwyMS44IDE2LjM2LDIyIDE3LDIyQzE3LjgzLDIyIDE4LjUzLDIxLjY5IDE5LjEzLDIxLjA5QzE5LjcyLDIwLjUgMjAsMTkuOCAyMCwxOUMyMCwxOC4xNyAxOS43MiwxNy40NyAxOS4xMywxNi44OEMxOC41MywxNi4yOCAxNy44MywxNiAxNywxNkMxNi4zNiwxNiAxNS43OCwxNi4xNyAxNS4yOCwxNi41NUMxNC43OCwxNi45MiAxNC40MiwxNy40MSAxNC4yLDE4SDkuMTRMMTEuMTEsMTQuOTVDMTEuMjcsMTUgMTEuNTYsMTUgMTIsMTVDMTIuNDQsMTUgMTIuNzMsMTUgMTIuODksMTQuOTVMMTMuODgsMTYuNUMxNC4yOSwxNS45NiAxNC44NCwxNS41NCAxNS40NywxNS4yOEwxNC45MSwxNC4zOUMxNi4wMywxMy44OSAxNywxMyAxNy43OSwxMS43N0MxOC41OSwxMC41IDE5LDkuMjcgMTksOEg1TTE3LDE4QzE3LjMsMTggMTcuNTMsMTguMDkgMTcuNzIsMTguMjhDMTcuOTEsMTguNDcgMTgsMTguNzIgMTgsMTlDMTgsMTkuMjcgMTcuOTEsMTkuNSAxNy43MiwxOS43MUMxNy41NCwxOS45MSAxNy4yOCwyMCAxNywyMEMxNi43NCwyMCAxNi41LDE5LjkxIDE2LjI5LDE5LjcxQzE2LjA5LDE5LjUgMTYsMTkuMjYgMTYsMTlDMTYsMTguNyAxNi4wOSwxOC40NyAxNi4yOSwxOC4yOEMxNi41LDE4LjA5IDE2LjczLDE4IDE3LDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdyaWxsT3V0bGluZSA9IFwiTTE3IDIyQTMgMyAwIDEgMCAxNC4xOCAxOEg5LjE0TDExLjEzIDE0Ljk0QTYuMzYgNi4zNiAwIDAgMCAxMi44NyAxNC45NEwxMy44OSAxNi41QzE0LjMxIDE2IDE0Ljg1IDE1LjU2IDE1LjUgMTUuM0wxNC44OSAxNC4zN0E3IDcgMCAwIDAgMTkgOEg1QTcgNyAwIDAgMCA5LjEyIDE0LjM3TDUuMTcgMjAuNDVBMSAxIDAgMCAwIDYuODQgMjEuNTRMNy44NCAyMEgxNC4xOEEzIDMgMCAwIDAgMTcgMjJNMTcgMThBMSAxIDAgMCAxIDE4IDE5QzE4IDE5LjU1IDE3LjU1IDIwIDE3IDIwUzE2IDE5LjU1IDE2IDE5QTEgMSAwIDAgMSAxNyAxOE03LjQyIDEwSDE2LjU4QTUgNSAwIDAgMSA3LjQyIDEwTTkuNDEgN0gxMC40MUMxMC41NiA1Ljg1IDEwLjY0IDUuMzYgOS41IDQuMDRDOS4xIDMuNTQgOC44NCAzLjI3IDkuMDYgMkg4LjA3QTMuMTQgMy4xNCAwIDAgMCA4Ljk2IDQuOTZDOS4xOCA1LjIgOS43NSA1LjYzIDkuNDEgN00xMS44OSA3SDEyLjg5QzEzLjA0IDUuODUgMTMuMTIgNS4zNiAxMiA0LjA0QzExLjU4IDMuNTQgMTEuMzIgMy4yNiAxMS41NCAySDEwLjU1QTMuMTQgMy4xNCAwIDAgMCAxMS40NCA0Ljk2QzExLjY3IDUuMiAxMi4yNCA1LjYzIDExLjg5IDdNMTQuNDEgN0gxNS40MUMxNS41NiA1Ljg1IDE1LjY0IDUuMzYgMTQuNSA0LjA0QzE0LjEgMy41NCAxMy44NCAzLjI3IDE0LjA2IDJIMTMuMDdBMy4xNCAzLjE0IDAgMCAwIDEzLjk2IDQuOTZDMTQuMTggNS4yIDE0Ljc1IDUuNjMgMTQuNDEgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlHcm91cCA9IFwiTTEsMVY1SDJWMTlIMVYyM0g1VjIySDE5VjIzSDIzVjE5SDIyVjVIMjNWMUgxOVYySDVWMU01LDRIMTlWNUgyMFYxOUgxOVYyMEg1VjE5SDRWNUg1TTYsNlYxNEg5VjE4SDE4VjlIMTRWNk04LDhIMTJWMTJIOE0xNCwxMUgxNlYxNkgxMVYxNEgxNFwiO1xyXG5leHBvcnQgdmFyIG1kaUd1aXRhckFjb3VzdGljID0gXCJNMTkuNTksM0gyMlY1SDIwLjQxTDE2LjE3LDkuMjRDMTUuOCw4LjY4IDE1LjMyLDguMiAxNC43Niw3LjgzTDE5LjU5LDNNMTIsOEE0LDQgMCAwLDEgMTYsMTJDMTYsMTMuODIgMTQuNzcsMTUuNDIgMTMsMTUuODdWMTZBNSw1IDAgMCwxIDgsMjFBNSw1IDAgMCwxIDMsMTZBNSw1IDAgMCwxIDgsMTFIOC4xM0M4LjU4LDkuMjQgMTAuMTcsOCAxMiw4TTEyLDEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgMTIsMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxMiwxMC41TTYuOTQsMTQuMjRMNi4yMywxNC45NEw5LjA2LDE3Ljc3TDkuNzcsMTcuMDZMNi45NCwxNC4yNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHdWl0YXJFbGVjdHJpYyA9IFwiTTE5LjU5LDNIMjJWNUgyMC40MUwxNS4xMiwxMC4yOUwxMy43MSw4LjlMMTkuNTksM00xMiw5QzEyLjI2LDkgMTIuNSw5LjEgMTIuNzEsOS4zTDE0LjcxLDExLjNDMTQuODksMTEuNSAxNSwxMS43MyAxNSwxMkwxNC45LDEyLjRMMTAuOSwyMC40QzEwLjcxLDIwLjc1IDEwLjM2LDIwLjkzIDEwLDIwLjkzQzkuNjUsMjAuOTMgOS4yOSwyMC43NSA5LjExLDIwLjRMNy4yNSwxNi43TDMuNTUsMTQuOUMzLjE4LDE0LjcgMywxNC4zNSAzLDE0QzMsMTMuNjUgMy4xOCwxMy4zIDMuNTUsMTMuMUwxMS41NSw5LjFDMTEuNjksOSAxMS44NCw5IDEyLDlNOS4zNSwxMS44Mkw4LjY1LDEyLjVMMTEuNSwxNS4zNUwxMi4xOCwxNC42NUw5LjM1LDExLjgyTTcuOTQsMTMuMjNMNy4yMywxMy45NEwxMC4wNiwxNi43N0wxMC43NywxNi4wNkw3Ljk0LDEzLjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUd1aXRhclBpY2sgPSBcIk0xOSw0LjFDMTguMSwzLjMgMTcsMi44IDE1LjgsMi41QzE1LjUsMi40IDEzLjYsMiAxMi4yLDJDMTIuMiwyIDEyLjEsMiAxMiwyQzEyLDIgMTEuOSwyIDExLjgsMkMxMC40LDIgOC40LDIuNCA4LjEsMi41QzcsMi44IDUuOSwzLjMgNSw0LjFDMyw1LjkgMyw4LjcgNCwxMUM1LDEzLjUgNi4xLDE1LjcgNy42LDE3LjlDOC44LDE5LjYgMTAuMSwyMiAxMiwyMkMxMy45LDIyIDE1LjIsMTkuNiAxNi41LDE3LjlDMTgsMTUuOCAxOS4xLDEzLjUgMjAuMSwxMUMyMSw4LjcgMjEsNS45IDE5LDQuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlHdWl0YXJQaWNrT3V0bGluZSA9IFwiTTE5LDQuMUMxOC4xLDMuMyAxNywyLjggMTUuOCwyLjVDMTUuNSwyLjQgMTMuNiwyIDEyLjIsMkMxMi4yLDIgMTIuMSwyIDEyLDJDMTIsMiAxMS45LDIgMTEuOCwyQzEwLjQsMiA4LjQsMi40IDguMSwyLjVDNywyLjggNS45LDMuMyA1LDQuMUMzLDUuOSAzLDguNyA0LDExQzUsMTMuNSA2LjEsMTUuNyA3LjYsMTcuOUM4LjgsMTkuNiAxMC4xLDIyIDEyLDIyQzEzLjksMjIgMTUuMiwxOS42IDE2LjUsMTcuOUMxOCwxNS44IDE5LjEsMTMuNSAyMC4xLDExQzIxLDguNyAyMSw1LjkgMTksNC4xTTE4LjIsMTAuMkMxNy4xLDEyLjkgMTYuMSwxNC45IDE0LjgsMTYuN0MxNC42LDE2LjkgMTQuNSwxNy4yIDE0LjMsMTcuNEMxMy44LDE4LjIgMTIuNiwyMCAxMiwyMEMxMiwyMCAxMiwyMCAxMiwyMEMxMS4zLDIwIDEwLjIsMTguMyA5LjYsMTcuNEM5LjQsMTcuMiA5LjMsMTYuOSA5LjEsMTYuN0M3LjksMTQuOSA2LjgsMTIuOSA1LjcsMTAuMkM1LjUsOS41IDQuNyw3IDYuMyw1LjVDNi44LDUgNy42LDQuNyA4LjYsNC40QzksNC40IDEwLjcsNCAxMS44LDRDMTEuOCw0IDEyLjEsNCAxMi4xLDRDMTMuMiw0IDE0LjksNC4zIDE1LjMsNC40QzE2LjMsNC43IDE3LjEsNSAxNy42LDUuNUMxOS4zLDcgMTguNSw5LjUgMTguMiwxMC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUd1eUZhd2tlc01hc2sgPSBcIk0yMSwxM0E5LDkgMCAwLDEgMTIsMjJBOSw5IDAgMCwxIDMsMTNMMy4wMyw0LjQzQzUuNjgsMi44OCA4Ljc2LDIgMTIuMDUsMkMxNS4zLDIgMTguMzYsMi44NyAyMSw0LjM4VjEzTTEzLDE5LjkzQzE2LjM5LDE5LjQ0IDE5LDE2LjUgMTksMTNWNS41OUMxNi45LDQuNTcgMTQuNTQsNCAxMi4wNSw0QzkuNSw0IDcuMDgsNC42IDQuOTQsNS42Nkw1LDEzQzUsMTYuNSA3LjYzLDE5LjQ0IDExLDE5LjkzVjE4SDEzVjE5LjkzTTExLDE2SDhMNiwxM0w5LDE0SDEwTDExLDEzSDEzTDE0LDE0SDE1TDE4LDEzTDE2LDE2SDEzTDEyLDE1TDExLDE2TTYsOS4wM0M2LjY0LDguNCA3LjUsOC4wNSA4LjUsOC4wNUM5LjQ1LDguMDUgMTAuMzQsOC40IDExLDkuMDNDMTAuMzQsOS42NSA5LjQ1LDEwIDguNSwxMEM3LjUsMTAgNi42NCw5LjY1IDYsOS4wM00xMyw5LjAzQzEzLjY0LDguNCAxNC41LDguMDUgMTUuNSw4LjA1QzE2LjQ1LDguMDUgMTcuMzQsOC40IDE4LDkuMDNDMTcuMzQsOS42NSAxNi40NSwxMCAxNS41LDEwQzE0LjUsMTAgMTMuNjQsOS42NSAxMyw5LjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhaWwgPSBcIk00LDE2SDdWMjJINFYxNk0xOSwyLjM5QzE4LjkyLDMuODYgMTguNTUsNS4xMyAxNy44Niw2LjIxQzE3LjE3LDcuMjkgMTYuMjIsOCAxNSw4LjM5VjIySDEzVjE2SDExVjIySDlWMTAuMDhDOC43MiwxMC4xNyA4LjUsMTAuMjggOC4zOSwxMC40MUM3LjQ1LDExLjE2IDcsMTIuMTkgNywxMy41VjE0SDVWMTMuNUM1LDExLjUzIDUuNzIsOS45NCA3LjEzLDguNzJDOC41Myw3LjU2IDEwLjE2LDcgMTIsN0MxMy40MSw3IDE0LjU2LDYuNjQgMTUuNDcsNS45NUMxNi41LDUuMTEgMTcsMy45NSAxNywyLjVWMkgxOVYyLjM5TTEyLDJBMiwyIDAgMCwxIDE0LDRBMiwyIDAgMCwxIDEyLDZBMiwyIDAgMCwxIDEwLDRBMiwyIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFpckRyeWVyID0gXCJNMjIgOUE0LjMyIDQuMzIgMCAwIDEgMTkuNzggOC40NUEzLjQgMy40IDAgMCAwIDE4IDhWN0E0LjMyIDQuMzIgMCAwIDEgMjAuMjIgNy41NUEzLjQgMy40IDAgMCAwIDIyIDhNMjIgNkEzLjQgMy40IDAgMCAxIDIwLjIyIDUuNTVBNC4zMiA0LjMyIDAgMCAwIDE4IDVWNkEzLjQgMy40IDAgMCAxIDE5Ljc4IDYuNDVBNC4zMiA0LjMyIDAgMCAwIDIyIDdNMjIgMTBBMy40IDMuNCAwIDAgMSAyMC4yMiA5LjU1QTQuMzIgNC4zMiAwIDAgMCAxOCA5VjEwQTMuNCAzLjQgMCAwIDEgMTkuNzggMTAuNDVBNC4zMiA0LjMyIDAgMCAwIDIyIDExTTEwIDEyLjczQTcwLjM5IDcwLjM5IDAgMCAwIDE3IDExVjRTMTAuNSAyIDcuNSAyQTUuNSA1LjUgMCAwIDAgNi4xMiAxMi44Mkw3IDE5SDhBMyAzIDAgMCAwIDkuNDYgMjEuMzNBMy4xNSAzLjE1IDAgMCAxIDExIDI0SDEyQTQuMTIgNC4xMiAwIDAgMCAxMC4wOSAyMC41NUM5LjM5IDIwIDkgMTkuNjMgOSAxOUgxME03LjUgMTBBMi41IDIuNSAwIDEgMSAxMCA3LjVBMi41IDIuNSAwIDAgMSA3LjUgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFpckRyeWVyT3V0bGluZSA9IFwiTTEwIDEyLjczQTcwLjM5IDcwLjM5IDAgMCAwIDE3IDExVjRTMTAuNSAyIDcuNSAyQTUuNSA1LjUgMCAwIDAgNi4xMiAxMi44Mkw3IDE5SDhBMyAzIDAgMCAwIDkuNDYgMjEuMzNBMy4xNSAzLjE1IDAgMCAxIDExIDI0SDEyQTQuMTIgNC4xMiAwIDAgMCAxMC4wOSAyMC41NUM5LjM5IDIwIDkgMTkuNjMgOSAxOUgxME00IDcuNUEzLjUgMy41IDAgMCAxIDcuNSA0QTM3LjA4IDM3LjA4IDAgMCAxIDE1IDUuNVY5LjVBMzcuMDggMzcuMDggMCAwIDEgNy41IDExQTMuNSAzLjUgMCAwIDEgNCA3LjVNMjIgOUE0LjMyIDQuMzIgMCAwIDEgMTkuNzggOC40NUEzLjQgMy40IDAgMCAwIDE4IDhWN0E0LjMyIDQuMzIgMCAwIDEgMjAuMjIgNy41NUEzLjQgMy40IDAgMCAwIDIyIDhNMjIgNkEzLjQgMy40IDAgMCAxIDIwLjIyIDUuNTVBNC4zMiA0LjMyIDAgMCAwIDE4IDVWNkEzLjQgMy40IDAgMCAxIDE5Ljc4IDYuNDVBNC4zMiA0LjMyIDAgMCAwIDIyIDdNMjIgMTBBMy40IDMuNCAwIDAgMSAyMC4yMiA5LjU1QTQuMzIgNC4zMiAwIDAgMCAxOCA5VjEwQTMuNCAzLjQgMCAwIDEgMTkuNzggMTAuNDVBNC4zMiA0LjMyIDAgMCAwIDIyIDExTTkgNy41QTEuNSAxLjUgMCAxIDEgNy41IDZBMS41IDEuNSAwIDAgMSA5IDcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYWxsb3dlZW4gPSBcIk02LjUsNkM3LjQ3LDYgOC4zNyw2LjUgOS4xMSw3LjM4QzkuNjYsNi43OSAxMC4zMSw2LjM2IDExLDYuMTVWNEEyLDIgMCAwLDEgMTMsMkgxNVY0SDEzVjYuMTVDMTMuNjksNi4zNiAxNC4zNCw2Ljc5IDE0Ljg5LDcuMzhDMTUuNjMsNi41IDE2LjUzLDYgMTcuNSw2QzIwLDYgMjIsOS4zNiAyMiwxMy41QzIyLDE3LjY0IDIwLDIxIDE3LjUsMjFDMTYuNTMsMjEgMTUuNjMsMjAuNSAxNC44OSwxOS42MkMxNC4wOCwyMC41IDEzLjA4LDIxIDEyLDIxQzEwLjkyLDIxIDkuOTIsMjAuNSA5LjExLDE5LjYyQzguMzcsMjAuNSA3LjQ3LDIxIDYuNSwyMUM0LDIxIDIsMTcuNjQgMiwxMy41QzIsOS4zNiA0LDYgNi41LDZNOSwxMEw3Ljc1LDEyLjI1SDEwLjI1TDksMTBNMTUsMTBMMTMuNzUsMTIuMjVIMTYuMjVMMTUsMTBNOCwxN0gxMEwxMSwxNkwxMiwxN0gxNEwxNSwxNkwxNiwxN0wxNy41LDE0TDEzLjkyLDE0LjYyTDEzLDE2TDEyLDE1SDEwTDksMTZMOCwxNUw2LDE0TDgsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFtYnVyZ2VyID0gXCJNMiwxNkgyMlYxOEMyMiwxOS4xMSAyMS4xMSwyMCAyMCwyMEg0QzIuODksMjAgMiwxOS4xMSAyLDE4VjE2TTYsNEgxOEMyMC4yMiw0IDIyLDUuNzggMjIsOFYxMEgyVjhDMiw1Ljc4IDMuNzgsNCA2LDRNNCwxMUgxNUwxNywxM0wxOSwxMUgyMEMyMS4xMSwxMSAyMiwxMS44OSAyMiwxM0MyMiwxNC4xMSAyMS4xMSwxNSAyMCwxNUg0QzIuODksMTUgMiwxNC4xMSAyLDEzQzIsMTEuODkgMi44OSwxMSA0LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbW1lciA9IFwiTTIgMTkuNjNMMTMuNDMgOC4yTDEyLjcyIDcuNUwxNC4xNCA2LjA3TDEyIDMuODlDMTMuMiAyLjcgMTUuMDkgMi43IDE2LjI3IDMuODlMMTkuODcgNy41TDE4LjQ1IDguOTFIMjEuMjlMMjIgOS42MkwxOC40NSAxMy4yMUwxNy43NCAxMi41VjkuNjJMMTYuMjcgMTEuMDRMMTUuNTYgMTAuMzNMNC4xMyAyMS43NkwyIDE5LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbW1lclNjcmV3ZHJpdmVyID0gXCJNMTYuMDYgMTMuMDlMMjEuNjkgMTguNjhMMTguMzcgMjEuOTZMMTIuNzggMTYuMzdWMTUuNDVMMTUuMTQgMTMuMDlIMTYuMDZNMTYuOTcgMTAuNTZMMTYgOS42TDExLjIxIDE0LjRWMTYuMzdMNS41OCAyMkwyLjMgMTguNjhMNy44OSAxMy4wOUg5Ljg2TDEwLjY0IDEyLjMxTDYuOCA4LjQ2SDUuNUwyLjY5IDUuNjJMNS4zMSAzTDguMTEgNS44VjcuMTFMMTIgMTAuOTVMMTQuNjYgOC4yOUwxMy43IDcuMjhMMTUgNS45N0gxMi4zNEwxMS42OSA1LjMyTDE1IDJMMTUuNjYgMi42NlY1LjMyTDE2Ljk3IDRMMjAuMjUgNy4yOEMyMS4zNCA4LjM4IDIxLjM0IDEwLjE3IDIwLjI1IDExLjI2TDE4LjI4IDkuMjVMMTYuOTcgMTAuNTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFtbWVyV3JlbmNoID0gXCJNMTMuNzggMTUuM0wxOS43OCAyMS4zTDIxLjg5IDE5LjE0TDE1Ljg5IDEzLjE0TDEzLjc4IDE1LjNNMTcuNSAxMC4xQzE3LjExIDEwLjEgMTYuNjkgMTAuMDUgMTYuMzYgOS45MUw0Ljk3IDIxLjI1TDIuODYgMTkuMTRMMTAuMjcgMTEuNzRMOC41IDkuOTZMNy43OCAxMC42Nkw2LjMzIDkuMjVWMTIuMTFMNS42MyAxMi44MUwyLjExIDkuMjVMMi44MSA4LjU1SDUuNjJMNC4yMiA3LjE0TDcuNzggMy41OEM4Ljk1IDIuNDEgMTAuODMgMi40MSAxMiAzLjU4TDkuODkgNS43NEwxMS4zIDcuMTRMMTAuNTkgNy44NUwxMi4zOCA5LjYzTDE0LjIgNy43NUMxNC4wNiA3LjQyIDE0IDcgMTQgNi42M0MxNCA0LjY2IDE1LjU2IDMuMTEgMTcuNSAzLjExQzE4LjA5IDMuMTEgMTguNjEgMy4yNSAxOS4wOCAzLjUzTDE2LjQxIDYuMkwxNy45MSA3LjdMMjAuNTggNS4wM0MyMC44NiA1LjUgMjEgNiAyMSA2LjYzQzIxIDguNTUgMTkuNDUgMTAuMSAxNy41IDEwLjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZCA9IFwiTTYuNTgsMTlIMTQuNThWMjJINi41OFYxOU0xOS43NCwxMS42QzE5LjU1LDExLjQgMTkuMjksMTEuMjggMTksMTEuMjhMMTguNzgsMTEuMzFMMTUuNTgsMTNWMTEuODNMMTYuMDksMi45QzE2LjEyLDIuMzUgMTUuNywxLjg3IDE1LjE1LDEuODRDMTQuNiwxLjgxIDE0LjEyLDIuMjMgMTQuMDksMi43OEwxMy44Miw3LjQ3SDEzLjU4TDEyLjU0LDcuNThWMkExLDEgMCAwLDAgMTEuNTQsMUMxMSwxIDEwLjU0LDEuNDUgMTAuNTQsMlY4LjQxTDkuNzIsOC43OEw5LjAzLDMuMzJDOC45NiwyLjc3IDguNDYsMi4zOCA3LjkxLDIuNDVDNy4zNiwyLjUgNi45NywzIDcuMDQsMy41N0w3LjgxLDkuNjNMNy40Myw5LjhDNy4zLDkuODUgNy4xOCw5LjkzIDcuMDcsMTBMNS45Nyw2LjExQzUuODEsNS41NCA1LjI1LDUuMiA0LjcxLDUuMzRDNC4xOCw1LjUgMy44OCw2LjA4IDQuMDQsNi42NUw2LjYxLDE1Ljc3QzYuNjEsMTUuOCA2LjYzLDE1Ljg0IDYuNjQsMTUuODdMNi42NywxNkg2LjY4QzYuOSwxNi41NyA3LjQ3LDE3IDguMDgsMTdIMTQuNThDMTQuOTcsMTcgMTUuMzIsMTYuODQgMTUuNTgsMTYuNTdMMjAuNSwxMi4zN0wxOS43NCwxMS42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRIZWFydCA9IFwiTTIwIDE3UTIwLjg2IDE3IDIxLjQ1IDE3LjZUMjIuMDMgMTlMMTQgMjJMNyAyMFYxMUg4Ljk1TDE2LjIyIDEzLjY5UTE3IDE0IDE3IDE0LjgxIDE3IDE1LjI4IDE2LjY2IDE1LjYzVDE1LjggMTZIMTNMMTEuMjUgMTUuMzNMMTAuOTIgMTYuMjdMMTMgMTdIMjBNMTYgMy4yM1ExNy4wNiAyIDE4LjcgMiAyMC4wNiAyIDIxIDNUMjIgNS4zUTIyIDYuMzMgMjEgNy43NlQxOS4wMyAxMC4xNSAxNiAxM1ExMy45MiAxMS4xMSAxMi45NCAxMC4xNVQxMC45NyA3Ljc2IDEwIDUuM1ExMCAzLjk0IDEwLjk3IDNUMTMuMzEgMlExNC45MSAyIDE2IDMuMjNNLjk4NCAxMUg1VjIySC45ODRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZEhlYXJ0T3V0bGluZSA9IFwiTTE2IDMuMjNDMTYuNzEgMi40MSAxNy42MSAyIDE4LjcgMkMxOS42MSAyIDIwLjM3IDIuMzMgMjEgM0MyMS42MyAzLjY3IDIxLjk2IDQuNDMgMjIgNS4zQzIyIDYgMjEuNjcgNi44MSAyMSA3Ljc2UzE5LjY4IDkuNSAxOS4wMyAxMC4xNUMxOC4zOCAxMC43OSAxNy4zNyAxMS43NCAxNiAxM0MxNC42MSAxMS43NCAxMy41OSAxMC43OSAxMi45NCAxMC4xNVMxMS42MyA4LjcxIDEwLjk3IDcuNzZDMTAuMzEgNi44MSAxMCA2IDEwIDUuM0MxMCA0LjM5IDEwLjMyIDMuNjMgMTAuOTcgM0MxMS42MiAyLjM3IDEyLjQgMi4wNCAxMy4zMSAyQzE0LjM4IDIgMTUuMjcgMi40MSAxNiAzLjIzTTIyIDE5VjIwTDE0IDIyLjVMNyAyMC41NlYyMkgxVjExSDguOTdMMTUuMTMgMTMuM0MxNi4yNSAxMy43MiAxNyAxNC44IDE3IDE2SDE5QzIwLjY2IDE2IDIyIDE3LjM0IDIyIDE5TTUgMjBWMTNIM1YyMEg1TTE5LjkgMTguNTdDMTkuNzQgMTguMjQgMTkuMzkgMTggMTkgMThIMTMuNjVDMTMuMTEgMTggMTIuNTggMTcuOTIgMTIuMDcgMTcuNzVMOS42OSAxNi45NkwxMC4zMiAxNS4wNkwxMi43IDE1Ljg1QzEzIDE1Ljk1IDE1IDE2IDE1IDE2QzE1IDE1LjYzIDE0Ljc3IDE1LjMgMTQuNDMgMTUuMTdMOC42MSAxM0g3VjE4LjVMMTMuOTcgMjAuNDFMMTkuOSAxOC41N1pcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5kTGVmdCA9IFwiTTMsNi41OFYxOC42N0MzLDIwLjUgNC41LDIyIDYuMzMsMjJIMTIuNDJDMTMuMzIsMjIgMTQuMTcsMjEuNjQgMTQuNzksMjFMMjEuMzMsMTQuMzZDMjEuMzMsMTQuMzYgMjAuMjgsMTMuMzMgMjAuMjUsMTMuMzJDMjAuMDcsMTMuMTYgMTkuODQsMTMuMDcgMTkuNTksMTMuMDdDMTkuNDEsMTMuMDcgMTkuMjQsMTMuMTIgMTkuMDksMTMuMjFDMTkuMDYsMTMuMjIgMTUuNSwxNS4yNiAxNS41LDE1LjI2VjUuMzNBMS4yNSwxLjI1IDAgMCwwIDE0LjI1LDQuMDhBMS4yNSwxLjI1IDAgMCwwIDEzLDUuMzNWMTEuMTdIMTIuMTdWMy4yNUExLjI1LDEuMjUgMCAwLDAgMTAuOTIsMkExLjI1LDEuMjUgMCAwLDAgOS42NywzLjI1VjExLjE3SDguODNWNC4wOEExLjI1LDEuMjUgMCAwLDAgNy41OCwyLjgzQTEuMjUsMS4yNSAwIDAsMCA2LjMzLDQuMDhWMTEuMTdINS41VjYuNThBMS4yNSwxLjI1IDAgMCwwIDQuMjUsNS4zM0ExLjI1LDEuMjUgMCAwLDAgMyw2LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRPa2F5ID0gXCJNMTMuMywxOS4yNkwxOC45NiwxMy42MUwyMS4wOCwxNS43M0wxNS40MiwyMS4zOEwxMy4zLDE5LjI2TTE2LjUsMTEuMTNMMTMuNCw4LjA1QzEzLjI3LDcuOTIgMTMuMTMsNy44MyAxMyw3Ljc2TDExLjg4LDMuNDdDMTEuNzQsMi45MyAxMS4yLDIuNjEgMTAuNjYsMi43NUMxMC4xMywyLjg4IDkuODEsMy40MyA5Ljk0LDMuOTZMMTEsOC4wM1Y4LjAzTDguNjcsMy4xOUM4LjQ0LDIuNjkgNy44NCwyLjUgNy4zNCwyLjcxQzYuODQsMi45NSA2LjYzLDMuNTUgNi44Nyw0LjA1TDguNTYsNy41OUw1LjE5LDQuMjVDNC44LDMuODYgNC4xNiwzLjg2IDMuNzcsNC4yNUMzLjM4LDQuNjUgMy4zOSw1LjI4IDMuNzgsNS42N0w3LjUsOS4zN0w2LjgsOS42NEw1LjcyLDEwLjA3TDMuODEsMTEuMzlDMy44MSwxMS4zOSAzLDEyLjQ0IDIuOTMsMTIuODlDMi44NSwxMy4zNCAzLjcyLDE1LjYgMy43MiwxNS42SDMuNzNDMy44OSwxNS45NCA0LjIzLDE2LjE4IDQuNjMsMTYuMThBMSwxIDAgMCwwIDUuNjMsMTUuMThDNS42MywxNS4wOCA1LjYsMTUgNS41NywxNC45MUw1LjU5LDE0LjlMNSwxMy4xN0w2LjIzLDEyLjE5QzYuNywxMi4yMSA3LjcxLDEyLjI5IDguMiwxMi4zMkMxMC45MywxNC43NyA4LjM1LDE1LjczIDguMzUsMTUuNzNMNC44OSwxNi43OUw0LjcyLDE2LjkzQzQuNSwxNy4xMyA0LjQxLDE3LjQgNC40MiwxNy42OEw0LjQ0LDE4Ljc1TDEwLjg3LDE4LjI1QzExLjI1LDE4LjI2IDExLjYxLDE4LjEyIDExLjg5LDE3Ljg1TDE2LjUsMTMuMjVDMTcuMDMsMTIuNzEgMTcuMDUsMTEuNyAxNi41LDExLjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRQZWFjZSA9IFwiTTcsMTlIMTVWMjJIN1YxOU0xNi4xNSwxMlYxMkwxMi45NywxMC4zNEMxMi44MiwxMC4zNCAxMi42OSwxMC40IDEyLjYsMTAuNUwxMi4zLDEwLjgxTDEyLjg5LDEzLjIzTDExLjkxLDEzLjQ3TDEwLjcyLDguNUw5LjI1LDkuMThMMTAuMjksMTMuNDdMOS4zMiwxMy43TDguMzIsOS41OUw3Ljg1LDkuOEM3LjM1LDEwIDcsMTAuNTMgNywxMS4xNFYxNS41QzcsMTYuMyA3LjczLDE3IDguNSwxN0gxNUMxNS4zOSwxNyAxNS43NCwxNi44NCAxNiwxNi41N0wxNi41LDE2LjE2QzE2LjUsMTYuMTYgMTcsMTUuNzggMTcsMTUuMzZWMTMuN0MxNywxMy43IDE3LDEyLjU2IDE2LjE1LDEyTTE2Ljk0LDFDMTYuNCwwLjkxIDE1Ljg3LDEuMjUgMTUuNzYsMS44TDE0LjY5LDcuOTdDMTQuNDcsNy45NCAxNC4zOCw3Ljg2IDE0LjA4LDcuODNMMTMuNjUsNy44OEwxMi40MSwxLjhDMTIuMywxLjI2IDExLjc4LDAuOTEgMTEuMjQsMUMxMC42OSwxLjEzIDEwLjM0LDEuNjYgMTAuNDUsMi4yTDExLjY1LDguMTFWOC4xMUwxMiw5LjY3QzEyLjI4LDkuNDcgMTIuNjEsOS4zNCAxMi45Nyw5LjM0SDEzLjMxTDE2LjMxLDEwLjk1TDE3LjcyLDIuMkMxNy44MywxLjY2IDE3LjUsMS4xMyAxNi45NCwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRQZWFjZVZhcmlhbnQgPSBcIk03LDE5SDE1VjIySDdWMTlNMTYuOTQsMUMxNi40LDAuOTEgMTUuODcsMS4yNSAxNS43NiwxLjhMMTQuNzUsNy41N0MxNC41Myw3LjU0IDE0LjI5LDcuNSAxNCw3LjQ3TDEzLjU3LDcuNUwxMi40MSwxLjhDMTIuMzEsMS4yNiAxMS43OCwwLjkxIDExLjI0LDFDMTAuNywxLjEzIDEwLjM1LDEuNjYgMTAuNDUsMi4yTDExLjY1LDguMTFMNy44NSw5LjhDNy4zNSwxMCA3LDEwLjUzIDcsMTEuMTRWMTUuNUM3LDE2LjMgNy43MywxNyA4LjUsMTdIMTVDMTUuMzksMTcgMTUuNzQsMTYuODQgMTYsMTYuNTdMMTYuNSwxNi4xNkMxNi41LDE2LjE2IDE3LDE1Ljc4IDE3LDE1LjM2VjEzQzE3LDEzIDE3LDExLjg2IDE2LjEzLDExLjNMMTcuNzEsMi4yQzE3LjgzLDEuNjYgMTcuNSwxLjEzIDE2Ljk0LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZFBvaW50aW5nRG93biA9IFwiTTkuOSwyMVYxMUw2LjcsMTIuNjlMNi41LDEyLjcyQzYuMTksMTIuNzIgNS45MywxMi42IDUuNzQsMTIuNEw1LDExLjYzTDkuOSw3LjQzQzEwLjE2LDcuMTYgMTAuNSw3IDEwLjksN0gxNy40QzE4LjE3LDcgMTguOSw3LjcgMTguOSw4LjVWMTIuODZDMTguOSwxMy40NyAxOC41NSwxNCAxOC4wNSwxNC4yTDEzLjExLDE2LjRMMTEuOSwxNi41M1YyMUExLDEgMCAwLDEgMTAuOSwyMkExLDEgMCAwLDEgOS45LDIxTTE4LjksNUgxMC45VjJIMTguOVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRQb2ludGluZ0xlZnQgPSBcIk0zLDlIMTNMMTEuMzEsNS44TDExLjI4LDUuNThDMTEuMjgsNS4yOSAxMS40LDUuMDMgMTEuNiw0Ljg0TDEyLjM3LDQuMUwxNi41Nyw5QzE2Ljg0LDkuMjYgMTcsOS42MSAxNywxMFYxNi41QzE3LDE3LjI3IDE2LjMsMTggMTUuNSwxOEgxMS4xNEMxMC41MywxOCAxMCwxNy42NSA5LjgsMTcuMTVMNy42LDEyLjIxTDcuNDcsMTFIM0ExLDEgMCAwLDEgMiwxMEExLDEgMCAwLDEgMyw5TTE5LDE4VjEwSDIyVjE4SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRQb2ludGluZ1JpZ2h0ID0gXCJNMjEsOUExLDEgMCAwLDEgMjIsMTBBMSwxIDAgMCwxIDIxLDExSDE2LjUzTDE2LjQsMTIuMjFMMTQuMiwxNy4xNUMxNCwxNy42NSAxMy40NywxOCAxMi44NiwxOEg4LjVDNy43LDE4IDcsMTcuMjcgNywxNi41VjEwQzcsOS42MSA3LjE2LDkuMjYgNy40Myw5TDExLjYzLDQuMUwxMi40LDQuODRDMTIuNiw1LjAzIDEyLjcyLDUuMjkgMTIuNzIsNS41OEwxMi42OSw1LjhMMTEsOUgyMU0yLDE4VjEwSDVWMThIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5kUG9pbnRpbmdVcCA9IFwiTTE0LDNWMTNMMTcuMiwxMS4zMUwxNy40MiwxMS4yOEMxNy43MSwxMS4yOCAxNy45NywxMS40IDE4LjE2LDExLjZMMTguOSwxMi4zN0wxNCwxNi41N0MxMy43NCwxNi44NCAxMy4zOSwxNyAxMywxN0g2LjVDNS43MywxNyA1LDE2LjMgNSwxNS41VjExLjE0QzUsMTAuNTMgNS4zNSwxMCA1Ljg1LDkuOEwxMC43OSw3LjZMMTIsNy40N1YzQTEsMSAwIDAsMSAxMywyQTEsMSAwIDAsMSAxNCwzTTUsMTlIMTNWMjJINVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5kUmlnaHQgPSBcIk0yMSw2LjU4VjE4LjY3QTMuMzMsMy4zMyAwIDAsMSAxNy42NywyMkgxMS41OEMxMC42OCwyMiA5LjgzLDIxLjY0IDkuMjEsMjFMMi42NywxNC4zNkMyLjY3LDE0LjM2IDMuNzIsMTMuMzMgMy43NSwxMy4zMkMzLjkzLDEzLjE2IDQuMTYsMTMuMDcgNC40MSwxMy4wN0M0LjU5LDEzLjA3IDQuNzYsMTMuMTIgNC45MSwxMy4yMUM0Ljk0LDEzLjIyIDguNSwxNS4yNiA4LjUsMTUuMjZWNS4zM0ExLjI1LDEuMjUgMCAwLDEgOS43NSw0LjA4QTEuMjUsMS4yNSAwIDAsMSAxMSw1LjMzVjExLjE3SDExLjgzVjMuMjVBMS4yNSwxLjI1IDAgMCwxIDEzLjA4LDJDMTMuNzgsMiAxNC4zMywyLjU2IDE0LjMzLDMuMjVWMTEuMTdIMTUuMTdWNC4wOEMxNS4xNywzLjM5IDE1LjcyLDIuODMgMTYuNDIsMi44M0ExLjI1LDEuMjUgMCAwLDEgMTcuNjcsNC4wOFYxMS4xN0gxOC41VjYuNThBMS4yNSwxLjI1IDAgMCwxIDE5Ljc1LDUuMzNBMS4yNSwxLjI1IDAgMCwxIDIxLDYuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZFNhdyA9IFwiTTkuOCwxN0w1LjksMTEuNkwyMCwyTDIyLDVWOEgxOVYxMUgxNlYxNEgxM1YxN005LjcsMTguN0w5LjIsMjEuNUw3LjYsMjIuN0M2LjcsMjMuMyA1LjUsMjMuMSA0LjgsMjIuMkwxLjMsMTcuM0MwLjcsMTYuNCAwLjksMTUuMiAxLjgsMTQuNUw1LjEsMTIuMkw5LjcsMTguN000LjYsMTVMMywxNi4xTDYuNSwyMUw4LjEsMTkuOEw0LjYsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZFdhc2ggPSBcIk0xNyA1TDE3LjYyIDYuMzdMMTkgN0wxNy42MiA3LjYzTDE3IDlMMTYuMzYgNy42M0wxNSA3TDE2LjM2IDYuMzdMMTcgNU0xMSA2LjEzVjRIMTNDMTMuNTcgNCAxNC4xIDQuMTcgMTQuNTUgNC40NUwxNiAzQzE1LjE1IDIuMzkgMTQuMTMgMiAxMyAySDcuNVY0SDlWNi4xNEM3LjIzIDYuNSA1LjgxIDcuOCA1LjI2IDkuNUg5LjI0TDE1IDExLjY1VjExLjAzQzE1IDguNjEgMTMuMjggNi41OSAxMSA2LjEzTTEgMjJINVYxMUgxVjIyTTIwIDE3SDEzTDEwLjkxIDE2LjI3TDExLjI0IDE1LjMzTDEzIDE2SDE1LjgyQzE2LjQ3IDE2IDE3IDE1LjQ3IDE3IDE0LjgyQzE3IDE0LjMzIDE2LjY5IDEzLjg5IDE2LjIzIDEzLjcxTDguOTcgMTFIN1YyMEwxNCAyMkwyMiAxOUMyMiAxNy45IDIxLjExIDE3IDIwIDE3TTIwIDE0QzIxLjEgMTQgMjIgMTMuMSAyMiAxMlMyMCA4IDIwIDggMTggMTAuOSAxOCAxMiAxOC45IDE0IDIwIDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRXYXNoT3V0bGluZSA9IFwiTTE3IDVMMTcuNjIgNi4zN0wxOSA3TDE3LjYyIDcuNjNMMTcgOUwxNi4zNiA3LjYzTDE1IDdMMTYuMzYgNi4zN0wxNyA1TTIwIDE0QzIxLjEgMTQgMjIgMTMuMSAyMiAxMlMyMCA4IDIwIDggMTggMTAuOSAxOCAxMiAxOC45IDE0IDIwIDE0TTExIDYuMVY0SDEzQzEzLjU3IDQgMTQuMSA0LjE3IDE0LjU1IDQuNDVMMTYgM0MxNS4xNSAyLjM5IDE0LjEzIDIgMTMgMkg3LjVWNEg5VjYuMTFDNy4yMiA2LjUgNS44IDcuNzkgNS4yNSA5LjVINy40MUM3Ljk0IDguNjEgOC44OSA4IDEwIDhDMTEuNjIgOCAxMi45NCA5LjI5IDEzIDEwLjlMMTUgMTEuNjVWMTFDMTUgOC41OCAxMy4yOCA2LjU2IDExIDYuMU0yMiAxOVYyMEwxNCAyMi41TDcgMjAuNTZWMjJIMVYxMUg4Ljk3TDE1LjEzIDEzLjNDMTYuMjUgMTMuNzIgMTcgMTQuOCAxNyAxNkgxOUMyMC42NiAxNiAyMiAxNy4zNCAyMiAxOU01IDIwVjEzSDNWMjBINU0xOS45IDE4LjU3QzE5Ljc0IDE4LjI0IDE5LjM5IDE4IDE5IDE4SDEzLjY1QzEzLjExIDE4IDEyLjU4IDE3LjkyIDEyLjA3IDE3Ljc1TDkuNjkgMTYuOTZMMTAuMzIgMTUuMDZMMTIuNyAxNS44NUMxMyAxNS45NSAxNSAxNiAxNSAxNkMxNSAxNS42MyAxNC43NyAxNS4zIDE0LjQzIDE1LjE3TDguNjEgMTNIN1YxOC41TDEzLjk3IDIwLjQxTDE5LjkgMTguNTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZFdhdGVyID0gXCJNMTcuNDIgMjIuNUg1LjMzQzMuNSAyMi41IDIgMjEgMiAxOS4xN1YxMy4wOEMyIDEyLjE4IDIuMzYgMTEuMzMgMyAxMC43MUw4LjYzIDUuMTdDOC42MyA1LjE3IDkuNjYgNi4yMiA5LjY3IDYuMjVDOS44MyA2LjQzIDkuOTIgNi42NiA5LjkyIDYuOTFDOS45MiA3LjA5IDkuODcgNy4yNiA5Ljc4IDcuNDFDOS43NyA3LjQ0IDggMTAgOCAxMEgxOC42N0MxOS4zNiAxMCAxOS45MiAxMC41NiAxOS45MiAxMS4yNUMxOS45MiAxMS45NCAxOS4zNiAxMi41IDE4LjY3IDEyLjVIMTIuODNWMTMuMzNIMjAuNzVDMjEuNDQgMTMuMzMgMjIgMTMuODkgMjIgMTQuNThDMjIgMTUuMjggMjEuNDQgMTUuODMgMjAuNzUgMTUuODNIMTIuODNWMTYuNjdIMTkuOTJDMjAuNjEgMTYuNjcgMjEuMTcgMTcuMjIgMjEuMTcgMTcuOTJDMjEuMTcgMTguNjEgMjAuNjEgMTkuMTcgMTkuOTIgMTkuMTdIMTIuODNWMjBIMTcuNDJDMTguMTEgMjAgMTguNjcgMjAuNTYgMTguNjcgMjEuMjVDMTguNjcgMjEuOTQgMTguMTEgMjIuNSAxNy40MiAyMi41TTEzLjUgNC44QzEzLjUgNC44IDEyIDYuNDYgMTIgNy41QzEyIDkuNSAxNSA5LjUgMTUgNy41QzE1IDYuNDYgMTMuNSA0LjggMTMuNSA0LjhNMTguNSAxQzE4LjUgMSAxNiAzLjc2IDE2IDUuNUMxNiA4LjgzIDIxIDguODMgMjEgNS41QzIxIDMuNzYgMTguNSAxIDE4LjUgMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5kYmFsbCA9IFwiTTE1LjgzIDEwLjQzQTYuOTMgNi45MyAwIDAgMSAxOC4zOSAxNC44NkE2LjY0IDYuNjQgMCAwIDEgMTcuNSAxOS41TDE1Ljc4IDE4LjVBNSA1IDAgMCAwIDE2LjQ0IDE2QTUuMjIgNS4yMiAwIDAgMCAxNS40NiAxMy4wNkw5LjE4IDIzLjkzTDcuNDQgMjIuOTVMMTAuNDQgMTcuNzVMOC43MSAxNi43Nkw3LjIxIDE5LjM0TDUuNSAxOC4zNkwxMC42MyA5LjQ1QTcgNyAwIDAgMSA4LjggNS40NkE2LjkxIDYuOTEgMCAwIDEgOS42OSAxLjFMMTEuNDMgMi4xM0E0Ljg0IDQuODQgMCAwIDAgMTAuOTEgNS45QTQuNzQgNC43NCAwIDAgMCAxMy4yMSA4LjkzTTE2IDVBMiAyIDAgMSAwIDE4IDdBMiAyIDAgMCAwIDE2IDVNMTMuNSAxQTEuNSAxLjUgMCAxIDAgMTUgMi41QTEuNSAxLjUgMCAwIDAgMTMuNSAxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRjdWZmcyA9IFwiTTIwLjI0IDYuNzZDMTguNCA0LjkxIDE1LjY1IDQuNTMgMTMuNDIgNS41OUwxMi40NiA0LjYzQzEyLjA3IDQuMjQgMTEuNDQgNC4yNCAxMS4wNSA0LjYzTDEwLjk3IDQuNzJDMTAuODMgMy43NSAxMCAzIDkgM0M3LjkgMyA3IDMuOSA3IDVDNyA1LjA5IDcgNS4xOCA3LjAzIDUuMjZDNi40MiA1LjYxIDYgNi4yNSA2IDdDNiA3LjQ2IDYuMTYgNy44NyA2LjQyIDguMjFDNi4xNyA4LjM5IDYgOC42NyA2IDlWMTAuMzVDMy42NyAxMS4xNyAyIDEzLjM5IDIgMTZDMiAxOS4zMSA0LjY5IDIyIDggMjJTMTQgMTkuMzEgMTQgMTZDMTQgMTMuMzkgMTIuMzMgMTEuMTcgMTAgMTAuMzVWOUMxMCA4LjY3IDkuODMgOC4zOSA5LjU4IDguMjFDOS44NCA3Ljg3IDEwIDcuNDYgMTAgN0MxMCA2LjkxIDEwIDYuODIgOS45NyA2Ljc0QzEwLjE1IDYuNjQgMTAuMyA2LjUgMTAuNDMgNi4zOEMxMS4zNiA2Ljg4IDEyIDcuODYgMTIgOVY5LjA4QzEyLjEzIDkuMTUgMTIuMjUgOS4yNSAxMi4zOCA5LjMzQzEyLjU3IDguOTEgMTIuODMgOC41IDEzLjE3IDguMTdDMTQuNzMgNi42MSAxNy4yNyA2LjYxIDE4LjgzIDguMTdDMjAuMzkgOS43MyAyMC4zOSAxMi4yNyAxOC44MyAxMy44M0MxOC4wMyAxNC42MyAxNyAxNSAxNS45MyAxNUMxNiAxNS4zMiAxNiAxNS42NiAxNiAxNkMxNiAxNi4zNCAxNS45NyAxNi42NyAxNS45MyAxN0MxNy41IDE3IDE5LjA1IDE2LjQzIDIwLjI0IDE1LjI0QzIyLjU5IDEyLjkgMjIuNTkgOS4xIDIwLjI0IDYuNzZNOSA0QzkuNTUgNCAxMCA0LjQ1IDEwIDVDMTAgNS4zMyA5LjgzIDUuNjEgOS41OCA1Ljc5QzkuMjIgNS4zMSA4LjY1IDUgOCA1QzggNC40NSA4LjQ1IDQgOSA0TTcuNDIgNi4yMUM3Ljc4IDYuNjkgOC4zNSA3IDkgN0M5IDcuNTUgOC41NSA4IDggOFM3IDcuNTUgNyA3QzcgNi42NyA3LjE3IDYuMzkgNy40MiA2LjIxTTEyIDE2QzEyIDE4LjIxIDEwLjIxIDIwIDggMjBTNCAxOC4yMSA0IDE2QzQgMTMuNzkgNS43OSAxMiA4IDEyUzEyIDEzLjc5IDEyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRzaGFrZSA9IFwiTTExIDZIMTRMMTcuMjkgMi43QTEgMSAwIDAgMSAxOC43MSAyLjdMMjEuMjkgNS4yOUExIDEgMCAwIDEgMjEuMjkgNi43TDE5IDlIMTFWMTFBMSAxIDAgMCAxIDEwIDEyQTEgMSAwIDAgMSA5IDExVjhBMiAyIDAgMCAxIDExIDZNNSAxMVYxNUwyLjcxIDE3LjI5QTEgMSAwIDAgMCAyLjcxIDE4LjdMNS4yOSAyMS4yOUExIDEgMCAwIDAgNi43MSAyMS4yOUwxMSAxN0gxNUExIDEgMCAwIDAgMTYgMTZWMTVIMTdBMSAxIDAgMCAwIDE4IDE0VjEzSDE5QTEgMSAwIDAgMCAyMCAxMlYxMUgxM1YxMkEyIDIgMCAwIDEgMTEgMTRIOUEyIDIgMCAwIDEgNyAxMlY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRzaGFrZU91dGxpbmUgPSBcIk0yMS43MSA4LjcxQzIyLjk2IDcuNDYgMjIuMzkgNiAyMS43MSA1LjI5TDE4LjcxIDIuMjlDMTcuNDUgMS4wNCAxNiAxLjYxIDE1LjI5IDIuMjlMMTMuNTkgNEgxMUM5LjEgNCA4IDUgNy40NCA2LjE1TDMgMTAuNTlWMTQuNTlMMi4yOSAxNS4yOUMxLjA0IDE2LjU1IDEuNjEgMTggMi4yOSAxOC43MUw1LjI5IDIxLjcxQzUuODMgMjIuMjUgNi40MSAyMi40NSA2Ljk2IDIyLjQ1QzcuNjcgMjIuNDUgOC4zMiAyMi4xIDguNzEgMjEuNzFMMTEuNDEgMTlIMTVDMTYuNyAxOSAxNy41NiAxNy45NCAxNy44NyAxNi45QzE5IDE2LjYgMTkuNjIgMTUuNzQgMTkuODcgMTQuOUMyMS40MiAxNC41IDIyIDEzLjAzIDIyIDEyVjlIMjEuNDFMMjEuNzEgOC43MU0yMCAxMkMyMCAxMi40NSAxOS44MSAxMyAxOSAxM0wxOCAxM0wxOCAxNEMxOCAxNC40NSAxNy44MSAxNSAxNyAxNUwxNiAxNUwxNiAxNkMxNiAxNi40NSAxNS44MSAxNyAxNSAxN0gxMC41OUw3LjMxIDIwLjI4QzcgMjAuNTcgNi44MiAyMC40IDYuNzEgMjAuMjlMMy43MiAxNy4zMUMzLjQzIDE3IDMuNiAxNi44MiAzLjcxIDE2LjcxTDUgMTUuNDFWMTEuNDFMNyA5LjQxVjExQzcgMTIuMjEgNy44IDE0IDEwIDE0UzEzIDEyLjIxIDEzIDExSDIwVjEyTTIwLjI5IDcuMjlMMTguNTkgOUgxMVYxMUMxMSAxMS40NSAxMC44MSAxMiAxMCAxMlM5IDExLjQ1IDkgMTFWOEM5IDcuNTQgOS4xNyA2IDExIDZIMTQuNDFMMTYuNjkgMy43MkMxNyAzLjQzIDE3LjE4IDMuNiAxNy4yOSAzLjcxTDIwLjI4IDYuNjlDMjAuNTcgNyAyMC40IDcuMTggMjAuMjkgNy4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5nZXIgPSBcIk0xMiA0QTMuNSAzLjUgMCAwIDAgOC41IDcuNUgxMC41QTEuNSAxLjUgMCAwIDEgMTIgNkExLjUgMS41IDAgMCAxIDEzLjUgNy41QTEuNSAxLjUgMCAwIDEgMTIgOUMxMS40NSA5IDExIDkuNDUgMTEgMTBWMTEuNzVMMi40IDE4LjJBMSAxIDAgMCAwIDMgMjBIMjFBMSAxIDAgMCAwIDIxLjYgMTguMkwxMyAxMS43NVYxMC44NUEzLjUgMy41IDAgMCAwIDE1LjUgNy41QTMuNSAzLjUgMCAwIDAgMTIgNE0xMiAxMy41TDE4IDE4SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFyZEhhdCA9IFwiTTkuODcsMTIuMTVMOSw2LjQ2QzEwLjk1LDUuODQgMTMuMDUsNS44NCAxNSw2LjQ2TDE0LjEzLDEyLjE1QzE0LjA2LDEyLjY0IDEzLjYzLDEzIDEzLjEzLDEzSDEwLjg2QzEwLjM3LDEzIDkuOTQsMTIuNjQgOS44NywxMi4xNU0yMiwxNlYxNkMyMiwxNS4yMSAyMS41MywxNC41IDIwLjgsMTQuMTdDMjAuMzIsMTEuODYgMTguOTYsOS44MyAxNyw4LjVMMTUuMjQsMTMuMzRDMTUuMSwxMy43NCAxNC43MiwxNCAxNC4zLDE0SDkuN0M5LjI4LDE0IDguOSwxMy43NCA4Ljc2LDEzLjM0TDcsOC41QzUuMDQsOS44MyAzLjY4LDExLjg2IDMuMiwxNC4xNkMyLjQ3LDE0LjUgMiwxNS4yIDIsMTZMOC40NSwxNy44NEM4LjgxLDE3Ljk0IDkuMTgsMTggOS41NSwxOEgxNC40M0MxNC44LDE4IDE1LjE3LDE3Ljk0IDE1LjUzLDE3Ljg0TDIyLDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhcmRkaXNrID0gXCJNNiwySDE4QTIsMiAwIDAsMSAyMCw0VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMk0xMiw0QTYsNiAwIDAsMCA2LDEwQzYsMTMuMzEgOC42OSwxNiAxMi4xLDE2TDExLjIyLDEzLjc3QzEwLjk1LDEzLjI5IDExLjExLDEyLjY4IDExLjU5LDEyLjRMMTIuNDUsMTEuOUMxMi45MywxMS42MyAxMy41NCwxMS43OSAxMy44MiwxMi4yN0wxNS43NCwxNC42OUMxNy4xMiwxMy41OSAxOCwxMS45IDE4LDEwQTYsNiAwIDAsMCAxMiw0TTEyLDlBMSwxIDAgMCwxIDEzLDEwQTEsMSAwIDAsMSAxMiwxMUExLDEgMCAwLDEgMTEsMTBBMSwxIDAgMCwxIDEyLDlNNywxOEExLDEgMCAwLDAgNiwxOUExLDEgMCAwLDAgNywyMEExLDEgMCAwLDAgOCwxOUExLDEgMCAwLDAgNywxOE0xMi4wOSwxMy4yN0wxNC41OCwxOS41OEwxNy4xNywxOC4wOEwxMi45NSwxMi43N0wxMi4wOSwxMy4yN1pcIjtcclxuZXhwb3J0IHZhciBtZGlIYXJkZGlza1BsdXMgPSBcIk0xMiA5QTEgMSAwIDEgMCAxMyAxMEExIDEgMCAwIDAgMTIgOU0xMiA5QTEgMSAwIDEgMCAxMyAxMEExIDEgMCAwIDAgMTIgOU0xOCAySDZBMiAyIDAgMCAwIDQgNFYxMy4wOUE1LjQ3IDUuNDcgMCAwIDEgNSAxM0E1LjcxIDUuNzEgMCAwIDEgNyAxMy4zNkE2IDYgMCAxIDEgMTUuNzEgMTQuNjlMMTMuNzkgMTIuMjdBMSAxIDAgMCAwIDEyLjQyIDExLjlMMTEuNTYgMTIuNEExIDEgMCAwIDAgMTEuMTkgMTMuNzdMMTIuMSAxNkE2LjEyIDYuMTIgMCAwIDEgMTAgMTUuNjJBNiA2IDAgMCAxIDEwLjE5IDIySDE4QTIgMiAwIDAgMCAyMCAyMFY0QTIgMiAwIDAgMCAxOCAyTTE0LjU4IDE5LjU4TDEyLjA5IDEzLjI3TDEyLjk1IDEyLjc3TDE3LjE3IDE4LjA4TTEyIDExQTEgMSAwIDEgMCAxMSAxMEExIDEgMCAwIDAgMTIgMTFNOSAyMEg2VjIzSDRWMjBIMVYxOEg0VjE1SDZWMThIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYXJkZGlza1JlbW92ZSA9IFwiTTEyIDlBMSAxIDAgMSAwIDEzIDEwQTEgMSAwIDAgMCAxMiA5TTEyIDlBMSAxIDAgMSAwIDEzIDEwQTEgMSAwIDAgMCAxMiA5TTE4IDJINkEyIDIgMCAwIDAgNCA0VjEzLjA5QTUuNDcgNS40NyAwIDAgMSA1IDEzQTUuNzEgNS43MSAwIDAgMSA3IDEzLjM2QTYgNiAwIDEgMSAxNS43MSAxNC42OUwxMy43OSAxMi4yN0ExIDEgMCAwIDAgMTIuNDIgMTEuOUwxMS41NiAxMi40QTEgMSAwIDAgMCAxMS4xOSAxMy43N0wxMi4xIDE2QTYuMTIgNi4xMiAwIDAgMSAxMCAxNS42MkE2IDYgMCAwIDEgMTAuMTkgMjJIMThBMiAyIDAgMCAwIDIwIDIwVjRBMiAyIDAgMCAwIDE4IDJNMTQuNTggMTkuNThMMTIuMDkgMTMuMjdMMTIuOTUgMTIuNzdMMTcuMTcgMTguMDhNMTIgMTFBMSAxIDAgMSAwIDExIDEwQTEgMSAwIDAgMCAxMiAxMU03LjEyIDIyLjU0TDUgMjAuNDFMMi44OCAyMi41NEwxLjQ2IDIxLjEyTDMuNTkgMTlMMS40NiAxNi44OEwyLjg4IDE1LjQ2TDUgMTcuNTlMNy4xMiAxNS40Nkw4LjU0IDE2Ljg4TDYuNDEgMTlMOC41NCAyMS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIYXRGZWRvcmEgPSBcIk0xOS4xMSwxMS45MkMxOS4xMywxMS43MSAxOS4xNCwxMS41IDE5LjE0LDExLjI5QzE5LjE0LDcuODYgMTcuNzEsNC4xNCAxNi4yOCw0LjE0QzE0Ljg1LDQuMTQgMTMuNDIsNS41NyAxMiw1LjU3QzEwLjU3LDUuNTcgOS4xNCw0LjE0IDcuNzEsNC4xNEM2LjI4LDQuMTQgNC44Niw3Ljc5IDQuODYsMTEuMjlDNC44NiwxMS41IDQuODYsMTEuNzEgNC44OCwxMS45MkM3LjIyLDEyLjQ1IDkuNiwxMi43MiAxMiwxMi43MUMxNC40NSwxMi43MSAxNi44MywxMi40NCAxOS4xMSwxMS45Mk0zLjQ1LDE4LjE4QzksMTkuODUgMTQuOTYsMTkuODYgMjAuNTQsMTguMThDMjAuOTYsMTguMDQgMjEuMzMsMTcuNzcgMjEuNTksMTcuNDFDMjEuODUsMTcuMDUgMjIsMTYuNjEgMjIsMTYuMTdDMjIsMTUuNzIgMjEuODYsMTUuMjkgMjEuNjEsMTQuOTJDMjEuMzUsMTQuNTYgMjEsMTQuMjkgMjAuNTYsMTQuMTRDMTcuODYsMTUgMTUsMTUuNDUgMTIsMTUuNDVDOSwxNS40NSA2LjEzLDE1IDMuNDMsMTQuMTRDMywxNC4yOSAyLjY1LDE0LjU3IDIuMzksMTQuOTNDMi4xNCwxNS4yOSAyLDE1LjcyIDIsMTYuMTdDMiwxNy4xMSAyLjYxLDE3LjkgMy40NSwxOC4xOFYxOC4xOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIYXphcmRMaWdodHMgPSBcIk0xMiwxMkwxNC4zMywxNkg5LjY4TDEyLDEyTTEyLDhMNi4yMSwxOEgxNy44TDEyLDhNMTIsMkwxLDIxSDIzTDEyLDJNMTIsNkwxOS41MywxOUg0LjQ3TDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGRyID0gXCJNMjEsMTEuNVYxMC41QzIxLDkuNyAyMC4zLDkgMTkuNSw5SDE2VjE1SDE3LjVWMTNIMTguNkwxOS41LDE1SDIxTDIwLjEsMTIuOUMyMC42LDEyLjYgMjEsMTIuMSAyMSwxMS41TTE5LjUsMTEuNUgxNy41VjEwLjVIMTkuNVYxMS41TTYuNSwxMUg0LjVWOUgzVjE1SDQuNVYxMi41SDYuNVYxNUg4VjlINi41VjExTTEzLDlIOS41VjE1SDEzQzEzLjgsMTUgMTQuNSwxNC4zIDE0LjUsMTMuNVYxMC41QzE0LjUsOS43IDEzLjgsOSAxMyw5TTEzLDEzLjVIMTFWMTAuNUgxM1YxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhkck9mZiA9IFwiTTE3LjUsMTVWMTNIMTguNkwxOS41LDE1SDIxTDIwLjEsMTIuOUMyMC42LDEyLjcgMjEsMTIuMSAyMSwxMS41VjEwLjVDMjEsOS43IDIwLjMsOSAxOS41LDlIMTZWMTMuOUwxNy4xLDE1SDE3LjVNMTcuNSwxMC41SDE5LjVWMTEuNUgxNy41VjEwLjVNMTMsMTAuNVYxMC45TDE0LjUsMTIuNFYxMC41QzE0LjUsOS43IDEzLjgsOSAxMyw5SDExLjFMMTIuNiwxMC41SDEzTTkuNSw5LjVMMi41LDIuNUwxLjQsMy41TDYuOSw5SDYuNVYxMUg0LjVWOUgzVjE1SDQuNVYxMi41SDYuNVYxNUg4VjEwLjFMOS41LDExLjZWMTVIMTIuOUwyMC41LDIyLjZMMjEuNiwyMS41TDkuNSw5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZCA9IFwiTTEzIDNDOS4yIDMgNi4yIDUuOSA2IDkuN0w0LjEgMTIuMkMzLjkgMTIuNSA0LjEgMTMgNC41IDEzSDZWMTZDNiAxNy4xIDYuOSAxOCA4IDE4SDlWMjFIMTZWMTYuM0MxOC40IDE1LjIgMjAgMTIuOCAyMCAxMEMyMCA2LjEgMTYuOSAzIDEzIDNcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkQWxlcnQgPSBcIk0xMyAzQzkuMiAzIDYuMiA1LjkgNiA5LjdMNC4xIDEyLjJDMy45IDEyLjUgNC4xIDEzIDQuNSAxM0g2VjE2QzYgMTcuMSA2LjkgMTggOCAxOEg5VjIxSDE2VjE2LjNDMTguNCAxNS4yIDIwIDEyLjggMjAgMTBDMjAgNi4xIDE2LjkgMyAxMyAzTTE0IDE1SDEyVjEzSDE0VjE0TTE0IDExSDEyVjVIMTRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZEFsZXJ0T3V0bGluZSA9IFwiTTEzIDNDMTYuOSAzIDIwIDYuMSAyMCAxMEMyMCAxMi44IDE4LjQgMTUuMiAxNiAxNi4zVjIxSDlWMThIOEM2LjkgMTggNiAxNy4xIDYgMTZWMTNINC41QzQuMSAxMyAzLjggMTIuNSA0LjEgMTIuMkw2IDkuN0M2LjIgNS45IDkuMiAzIDEzIDNNMTMgMUM4LjQgMSA0LjYgNC40IDQuMSA4LjlMMi41IDExQzEuOSAxMS44IDEuOSAxMi44IDIuMyAxMy42QzIuNyAxNC4zIDMuMyAxNC44IDQgMTQuOVYxNkM0IDE3LjkgNS4zIDE5LjQgNyAxOS45VjIzSDE4VjE3LjVDMjAuNSAxNS44IDIyIDEzLjEgMjIgMTBDMjIgNSAxOCAxIDEzIDFNMTQgMTVIMTJWMTNIMTRWMTVNMTQgMTFIMTJWNUgxNFwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRDaGVjayA9IFwiTTEzIDNDOS4yMyAzIDYuMTkgNS45NSA2IDkuNjZMNC4wOCAxMi4xOUMzLjg0IDEyLjUgNC4wOCAxMyA0LjUgMTNINlYxNkM2IDE3LjExIDYuODkgMTggOCAxOEg5VjIxSDE2VjE2LjMxQzE4LjM3IDE1LjE5IDIwIDEyLjggMjAgMTBDMjAgNi4xNCAxNi44OCAzIDEzIDNNMTIuNDcgMTNMOSA5LjVMMTAuNCA4LjA5TDEyLjQ3IDEwLjE3TDE2LjYgNkwxOCA3LjQxTDEyLjQ3IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRDaGVja091dGxpbmUgPSBcIk0xMyAzQzE2Ljg4IDMgMjAgNi4xNCAyMCAxMEMyMCAxMi44IDE4LjM3IDE1LjE5IDE2IDE2LjMxVjIxSDlWMThIOEM2Ljg5IDE4IDYgMTcuMTEgNiAxNlYxM0g0LjVDNC4wOCAxMyAzLjg0IDEyLjUgNC4wOCAxMi4xOUw2IDkuNjZDNi4xOSA1Ljk1IDkuMjMgMyAxMyAzTTEzIDFDOC40MiAxIDQuNjEgNC40MyA0LjA2IDguOTFMMi41IDExQzEuOTIgMTEuNzIgMS44MiAxMi43MiAyLjI0IDEzLjU5QzIuNiAxNC4zMSAzLjI0IDE0LjggNCAxNC45NVYxNkM0IDE3Ljg2IDUuMjggMTkuNDMgNyAxOS44N1YyM0gxOFYxNy40N0MyMC41IDE1LjgzIDIyIDEzLjA2IDIyIDEwQzIyIDUuMDQgMTcuOTYgMSAxMyAxTTEyLjQ3IDEzTDkgOS41TDEwLjQgOC4wOUwxMi40NyAxMC4xN0wxNi42IDZMMTggNy40MUwxMi40NyAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkQ29nID0gXCJNMTMgOC41OEMxMy43OCA4LjU4IDE0LjQ0IDkuMTkgMTQuNDQgMTBTMTMuNzggMTEuNDQgMTMgMTEuNDQgMTEuNTggMTAuNzggMTEuNTggMTAgMTIuMTkgOC41OCAxMyA4LjU4TTEzIDNDMTYuODggMyAyMCA2LjE0IDIwIDEwQzIwIDEyLjggMTguMzcgMTUuMTkgMTYgMTYuMzFWMjFIOVYxOEg4QzYuODkgMTggNiAxNy4xMSA2IDE2VjEzSDQuNUM0LjA4IDEzIDMuODQgMTIuNSA0LjA4IDEyLjE5TDYgOS42NkM2LjE5IDUuOTUgOS4yMyAzIDEzIDNNMTYgMTBDMTYgOS44NCAxNiA5Ljc1IDE1Ljk0IDkuNjFMMTYuODMgOC45NUMxNi44OCA4LjkxIDE2LjkyIDguNzcgMTYuODggOC42N0wxNi4wOCA3LjMxQzE2LjAzIDcuMjIgMTUuODkgNy4xNyAxNS44IDcuMjJMMTQuODEgNy42NEMxNC42MyA3LjQ1IDE0LjM5IDcuMzEgMTQuMTYgNy4yMkwxNCA2LjE5QzEzLjk3IDYuMDUgMTMuOTIgNiAxMy43OCA2SDEyLjE5QzEyLjA5IDYgMTIgNi4wNSAxMiA2LjE5TDExLjg2IDcuMjJDMTEuNjMgNy4zMSAxMS4zOSA3LjQ1IDExLjIgNy42NEwxMC4xNyA3LjIyQzEwLjA4IDcuMTcgMTAgNy4yMiA5Ljk0IDcuMzFMOS4xNCA4LjY3QzkuMDkgOC44MSA5LjA5IDguOTEgOS4xOSA4Ljk1TDEwLjAzIDkuNjFDMTAuMDMgOS43NSAxMCA5Ljg5IDEwIDEwQzEwIDEwLjEzIDEwLjAzIDEwLjI3IDEwLjAzIDEwLjQxTDkuMTkgMTEuMDZDOS4wOSAxMS4xMSA5LjA5IDExLjIgOS4xNCAxMS4zTDkuOTQgMTIuN0MxMCAxMi44IDEwLjA4IDEyLjggMTAuMTcgMTIuOEwxMS4xNiAxMi4zN0MxMS4zOSAxMi41NiAxMS41OCAxMi42NiAxMS44NiAxMi43NUwxMiAxMy44M0MxMiAxMy45MiAxMi4wOSAxNCAxMi4xOSAxNEgxMy43OEMxMy45MiAxNCAxMy45NyAxMy45MiAxNCAxMy44M0wxNC4xNiAxMi43NUMxNC4zOSAxMi42NiAxNC42MyAxMi41NiAxNC44MSAxMi4zOEwxNS44IDEyLjhDMTUuODkgMTIuOCAxNi4wMyAxMi44IDE2LjA4IDEyLjdMMTYuODggMTEuM0MxNi45MiAxMS4yIDE2Ljg4IDExLjExIDE2LjgzIDExLjA2TDE2IDEwLjQxVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRDb2dPdXRsaW5lID0gXCJNMTMgM0MxNi44OCAzIDIwIDYuMTQgMjAgMTBDMjAgMTIuOCAxOC4zNyAxNS4xOSAxNiAxNi4zMVYyMUg5VjE4SDhDNi44OSAxOCA2IDE3LjExIDYgMTZWMTNINC41QzQuMDggMTMgMy44NCAxMi41IDQuMDggMTIuMTlMNiA5LjY2QzYuMTkgNS45NSA5LjIzIDMgMTMgM00xMyAxQzguNDIgMSA0LjYxIDQuNDMgNC4wNiA4LjkxTDIuNSAxMUMxLjkyIDExLjcyIDEuODIgMTIuNzIgMi4yNCAxMy41OUMyLjYgMTQuMzEgMy4yNCAxNC44IDQgMTQuOTVWMTZDNCAxNy44NiA1LjI4IDE5LjQzIDcgMTkuODdWMjNIMThWMTcuNDdDMjAuNSAxNS44MyAyMiAxMy4wNiAyMiAxMEMyMiA1LjA0IDE3Ljk2IDEgMTMgMU0xNi4xIDkuNDJWOUMxNi4xIDguODUgMTYuMSA4Ljc2IDE2LjA0IDguNjJMMTYuOTMgNy45NkMxNyA3LjkyIDE3IDcuNzggMTcgNy42OEwxNi4xOCA2LjMyQzE2LjEzIDYuMjMgMTYgNi4xOCAxNS45IDYuMjNMMTQuOTEgNi42NUMxNC43MyA2LjQ2IDE0LjUgNi4zMiAxNC4yNiA2LjIzTDE0LjEgNS4yQzE0LjA3IDUuMDYgMTQgNSAxMy44OCA1SDEyLjI5QzEyLjE5IDUgMTIuMSA1LjA2IDEyLjEgNS4yTDExLjk2IDYuMjNDMTEuNzMgNi4zMiAxMS41IDYuNDYgMTEuMyA2LjY1TDEwLjI3IDYuMjNDMTAuMTggNi4xOCAxMC4xIDYuMjMgMTAuMDQgNi4zMkw5LjI0IDcuNjhDOS4xOSA3LjgyIDkuMTkgNy45MiA5LjI5IDcuOTZMMTAuMTMgOC42MkMxMC4xMyA4Ljc2IDEwLjEgOC45IDEwLjEgOUMxMC4xIDkuMTQgMTAuMTMgOS4yOCAxMC4xMyA5LjQyTDkuMjkgMTAuMDdDOS4xOSAxMC4xMiA5LjE5IDEwLjIxIDkuMjQgMTAuMzFMMTAuMDQgMTEuNzFDMTAuMSAxMS44MSAxMC4xOCAxMS44MSAxMC4yNyAxMS44MUwxMS4yNiAxMS4zOEMxMS41IDExLjU3IDExLjY4IDExLjY3IDExLjk2IDExLjc2TDEyLjEgMTIuODRDMTIuMSAxMi45MyAxMi4xOSAxMyAxMi4yOSAxM0gxMy44OEMxNCAxMyAxNC4wNyAxMi45MyAxNC4xIDEyLjg0TDE0LjI2IDExLjc2QzE0LjUgMTEuNjcgMTQuNzMgMTEuNTcgMTQuOTEgMTEuMzlMMTUuOSAxMS44MUMxNiAxMS44MSAxNi4xMyAxMS44MSAxNi4xOCAxMS43MUwxNyAxMC4zMUMxNyAxMC4yMSAxNyAxMC4xMiAxNi45MyAxMC4wN0wxNi4xIDkuNDJNMTMuMSAxMC40NUMxMi4zMiAxMC40NSAxMS42OCA5Ljc5IDExLjY4IDlTMTIuMjkgNy41OSAxMy4xIDcuNTlDMTMuODggNy41OSAxNC41NCA4LjIgMTQuNTQgOVMxMy44OCAxMC40NSAxMy4xIDEwLjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWREb3RzSG9yaXpvbnRhbCA9IFwiTTEzIDNDOS4yMyAzIDYuMTkgNS45NSA2IDkuNjZMNC4wOCAxMi4xOUMzLjg0IDEyLjUgNC4wOCAxMyA0LjUgMTNINlYxNkM2IDE3LjExIDYuODkgMTggOCAxOEg5VjIxSDE2VjE2LjMxQzE4LjM3IDE1LjE5IDIwIDEyLjggMjAgMTBDMjAgNi4xNCAxNi44OCAzIDEzIDNNMTAgMTFDOS40NSAxMSA5IDEwLjU1IDkgMTBTOS40NSA5IDEwIDkgMTEgOS40NSAxMSAxMCAxMC41NSAxMSAxMCAxMU0xMyAxMUMxMi40NSAxMSAxMiAxMC41NSAxMiAxMFMxMi40NSA5IDEzIDkgMTQgOS40NSAxNCAxMCAxMy41NSAxMSAxMyAxMU0xNiAxMUMxNS40NSAxMSAxNSAxMC41NSAxNSAxMFMxNS40NSA5IDE2IDkgMTcgOS40NSAxNyAxMCAxNi41NSAxMSAxNiAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkRG90c0hvcml6b250YWxPdXRsaW5lID0gXCJNMTMgM0MxNi45IDMgMjAgNi4xIDIwIDEwQzIwIDEyLjggMTguNCAxNS4yIDE2IDE2LjNWMjFIOVYxOEg4QzYuOSAxOCA2IDE3LjEgNiAxNlYxM0g0LjVDNC4xIDEzIDMuOCAxMi41IDQuMSAxMi4yTDYgOS43QzYuMiA1LjkgOS4yIDMgMTMgM00xMyAxQzguNCAxIDQuNiA0LjQgNC4xIDguOUwyLjUgMTFDMS45IDExLjggMS45IDEyLjggMi4zIDEzLjZDMi43IDE0LjMgMy4zIDE0LjggNCAxNC45VjE2QzQgMTcuOSA1LjMgMTkuNCA3IDE5LjlWMjNIMThWMTcuNUMyMC41IDE1LjggMjIgMTMuMSAyMiAxMEMyMiA1IDE4IDEgMTMgMU0xMCAxMEM5LjQgMTAgOSA5LjYgOSA5UzkuNCA4IDEwIDggMTEgOC40IDExIDkgMTAuNiAxMCAxMCAxME0xMyAxMEMxMi40IDEwIDEyIDkuNiAxMiA5UzEyLjQgOCAxMyA4IDE0IDguNCAxNCA5IDEzLjYgMTAgMTMgMTBNMTYgMTBDMTUuNSAxMCAxNSA5LjYgMTUgOVMxNS41IDggMTYgOCAxNyA4LjQgMTcgOSAxNi41IDEwIDE2IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRGbGFzaCA9IFwiTTEzIDNDOS4yIDMgNi4yIDYgNiA5LjdMNC4xIDEyLjJDMy45IDEyLjUgNC4xIDEzIDQuNSAxM0g2VjE2QzYgMTcuMSA2LjkgMTggOCAxOEg5VjIxSDE2VjE2LjNDMTguNCAxNS4yIDIwIDEyLjggMjAgMTBDMjAgNi4xIDE2LjkgMyAxMyAzTTE1IDlMMTEuOSAxNUwxMi41IDExSDEwLjVMMTIuNSA2SDE1TDEzLjUgOUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkRmxhc2hPdXRsaW5lID0gXCJNMTMgM0MxNi45IDMgMjAgNi4xIDIwIDEwQzIwIDEyLjggMTguNCAxNS4yIDE2IDE2LjNWMjFIOVYxOEg4QzYuOSAxOCA2IDE3LjEgNiAxNlYxM0g0LjVDNC4xIDEzIDMuOCAxMi41IDQuMSAxMi4yTDYgOS43QzYuMiA1LjkgOS4yIDMgMTMgM00xMyAxQzguNCAxIDQuNiA0LjQgNC4xIDguOUwyLjUgMTFDMS45IDExLjggMS45IDEyLjggMi4zIDEzLjZDMi43IDE0LjMgMy4zIDE0LjggNCAxNC45VjE2QzQgMTcuOSA1LjMgMTkuNCA3IDE5LjlWMjNIMThWMTcuNUMyMC41IDE1LjggMjIgMTMuMSAyMiAxMEMyMiA1IDE4IDEgMTMgMU0xNSA5TDExLjkgMTVMMTIuNSAxMUgxMC40TDEyLjUgNkgxNUwxMy41IDlIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZEhlYXJ0ID0gXCJNMTMgM0M5LjIzIDMgNi4xOSA1Ljk1IDYgOS42Nkw0LjA4IDEyLjE5QzMuODQgMTIuNSA0LjA4IDEzIDQuNSAxM0g2VjE2QzYgMTcuMTEgNi44OSAxOCA4IDE4SDlWMjFIMTZWMTYuMzFDMTguMzcgMTUuMTkgMjAgMTIuOCAyMCAxMEMyMCA2LjE0IDE2Ljg4IDMgMTMgM00xNyA4LjgzQzE3IDEwLjM3IDE1LjY0IDExLjYgMTMuNTggMTMuNDdMMTMgMTRMMTIuNDIgMTMuNDdDMTAuMzYgMTEuNiA5IDEwLjM3IDkgOC44M0M5IDcuNjMgOS45NiA2LjY0IDExLjE2IDYuNjNIMTEuMkMxMS44OSA2LjYzIDEyLjU1IDYuOTQgMTMgNy40NkMxMy40NSA2Ljk0IDE0LjExIDYuNjMgMTQuOCA2LjYzQzE2IDYuNjIgMTcgNy41OSAxNyA4Ljc5VjguODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZEhlYXJ0T3V0bGluZSA9IFwiTTEzIDNDMTYuODggMyAyMCA2LjE0IDIwIDEwQzIwIDEyLjggMTguMzcgMTUuMTkgMTYgMTYuMzFWMjFIOVYxOEg4QzYuODkgMTggNiAxNy4xMSA2IDE2VjEzSDQuNUM0LjA4IDEzIDMuODQgMTIuNSA0LjA4IDEyLjE5TDYgOS42NkM2LjE5IDUuOTUgOS4yMyAzIDEzIDNNMTMgMUM4LjQxIDEgNC42MSA0LjQyIDQuMDYgOC45TDIuNSAxMUwyLjQ3IDExTDIuNDUgMTEuMDNDMS45IDExLjc5IDEuODMgMTIuNzkgMi4yNiAxMy42MkMyLjYyIDE0LjMxIDMuMjYgMTQuNzkgNCAxNC45NFYxNkM0IDE3Ljg1IDUuMjggMTkuNDIgNyAxOS44N1YyM0gxOFYxNy41QzIwLjUgMTUuODMgMjIgMTMuMDYgMjIgMTBDMjIgNS4wMyAxNy45NiAxIDEzIDFNMTcgOC44M0MxNyAxMC4zNyAxNS42NCAxMS42IDEzLjU4IDEzLjQ3TDEzIDE0TDEyLjQyIDEzLjQ3QzEwLjM2IDExLjYgOSAxMC4zNyA5IDguODNDOSA3LjYzIDkuOTYgNi42NCAxMS4xNiA2LjYzSDExLjJDMTEuODkgNi42MyAxMi41NSA2Ljk0IDEzIDcuNDZDMTMuNDUgNi45NCAxNC4xMSA2LjYzIDE0LjggNi42M0MxNiA2LjYyIDE3IDcuNTkgMTcgOC43OVY4LjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRMaWdodGJ1bGIgPSBcIk0xMyAzQzkuMjMgMyA2LjE5IDUuOTUgNiA5LjY2TDQuMDggMTIuMTlDMy44NCAxMi41IDQuMDggMTMgNC41IDEzSDZWMTZDNiAxNy4xMSA2Ljg5IDE4IDggMThIOVYyMUgxNlYxNi4zMUMxOC4zNyAxNS4xOSAyMCAxMi44IDIwIDEwQzIwIDYuMTQgMTYuODggMyAxMyAzTTE0IDE0SDEyVjEzSDE0VjE0TTE1LjYgOS41QzE1LjM0IDkuOTQgMTQuOTYgMTAuMzIgMTQuNSAxMC41OFYxMkgxMS41VjEwLjU4QzEwLjA3IDkuNzUgOS41NyA3LjkyIDEwLjQgNi41UzEzLjA3IDQuNTYgMTQuNSA1LjM4IDE2LjQzIDguMDUgMTUuNiA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZExpZ2h0YnVsYk91dGxpbmUgPSBcIk0xMyAzQzE2LjkgMyAyMCA2LjEgMjAgMTBDMjAgMTIuOCAxOC40IDE1LjIgMTYgMTYuM1YyMUg5VjE4SDhDNi45IDE4IDYgMTcuMSA2IDE2VjEzSDQuNUM0LjEgMTMgMy44IDEyLjUgNC4xIDEyLjJMNiA5LjdDNi4yIDUuOSA5LjIgMyAxMyAzTTEzIDFDOC40IDEgNC42IDQuNCA0LjEgOC45TDIuNSAxMUMxLjkgMTEuOCAxLjkgMTIuOCAyLjMgMTMuNkMyLjcgMTQuMyAzLjMgMTQuOCA0IDE0LjlWMTZDNCAxNy45IDUuMyAxOS40IDcgMTkuOVYyM0gxOFYxNy41QzIwLjUgMTUuOCAyMiAxMy4xIDIyIDEwQzIyIDUgMTggMSAxMyAxTTE0IDE0SDEyVjEzSDE0VjE0TTE1LjYgOS41QzE1LjMgOS45IDE1IDEwLjMgMTQuNSAxMC42VjEySDExLjVWMTAuNkMxMC4xIDkuOCA5LjYgNy45IDEwLjQgNi41UzEzLjEgNC42IDE0LjUgNS40IDE2LjQgOC4xIDE1LjYgOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRNaW51cyA9IFwiTTEzIDNDOS4yIDMgNi4yIDUuOSA2IDkuN0w0LjEgMTIuMkMzLjkgMTIuNSA0LjEgMTMgNC41IDEzSDZWMTZDNiAxNy4xIDYuOSAxOCA4IDE4SDlWMjFIMTZWMTYuM0MxOC40IDE1LjIgMjAgMTIuOCAyMCAxMEMyMCA2LjEgMTYuOSAzIDEzIDNNMTcgMTBIOVY4SDE3VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRNaW51c091dGxpbmUgPSBcIk0xMyAzQzE2LjkgMyAyMCA2LjEgMjAgMTBDMjAgMTIuOCAxOC40IDE1LjIgMTYgMTYuM1YyMUg5VjE4SDhDNi45IDE4IDYgMTcuMSA2IDE2VjEzSDQuNUM0LjEgMTMgMy44IDEyLjUgNC4xIDEyLjJMNiA5LjdDNi4yIDUuOSA5LjIgMyAxMyAzTTEzIDFDOC40IDEgNC42IDQuNCA0LjEgOC45TDIuNSAxMUMxLjkgMTEuNyAxLjggMTIuNyAyLjIgMTMuNkMyLjYgMTQuMyAzLjIgMTQuOCA0IDE1VjE2QzQgMTcuOSA1LjMgMTkuNCA3IDE5LjlWMjNIMThWMTcuNUMyMC41IDE1LjkgMjIgMTMuMSAyMiAxMEMyMiA1IDE4IDEgMTMgMU0xNyAxMEg5VjhIMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZE91dGxpbmUgPSBcIk0xMyAxQzguNCAxIDQuNiA0LjQgNC4xIDguOUwyLjUgMTFDMiAxMS44IDEuOSAxMi44IDIuMyAxMy42QzIuNyAxNC4zIDMuMyAxNC44IDQgMTQuOVYxNkM0IDE3LjggNS4zIDE5LjQgNyAxOS45VjIzSDE4VjE3LjVDMjAuNSAxNS44IDIyIDEzLjEgMjIgMTBDMjIgNSAxOCAxIDEzIDFNMTYgMTYuM1YyMUg5VjE4SDhDNi45IDE4IDYgMTcuMSA2IDE2VjEzSDQuNUM0LjEgMTMgMy44IDEyLjUgNC4xIDEyLjJMNiA5LjdDNi4yIDYgOS4yIDMgMTMgM0MxNi45IDMgMjAgNi4xIDIwIDEwQzIwIDEyLjggMTguNCAxNS4yIDE2IDE2LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFBsdXMgPSBcIk0xMyAzQzkuMiAzIDYuMiA1LjkgNiA5LjdMNC4xIDEyLjJDMy45IDEyLjUgNC4xIDEzIDQuNSAxM0g2VjE2QzYgMTcuMSA2LjkgMTggOCAxOEg5VjIxSDE2VjE2LjNDMTguNCAxNS4yIDIwIDEyLjggMjAgMTBDMjAgNi4xIDE2LjkgMyAxMyAzTTE3IDEwSDE0VjEzSDEyVjEwSDlWOEgxMlY1SDE0VjhIMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFBsdXNPdXRsaW5lID0gXCJNMTMgM0MxNi45IDMgMjAgNi4xIDIwIDEwQzIwIDEyLjggMTguNCAxNS4yIDE2IDE2LjNWMjFIOVYxOEg4QzYuOSAxOCA2IDE3LjEgNiAxNlYxM0g0LjVDNC4xIDEzIDMuOCAxMi41IDQuMSAxMi4yTDYgOS43QzYuMiA1LjkgOS4yIDMgMTMgM00xMyAxQzguNCAxIDQuNiA0LjQgNC4xIDguOUwyLjUgMTFDMS45IDExLjcgMS44IDEyLjcgMi4yIDEzLjZDMi42IDE0LjMgMy4yIDE0LjggNCAxNVYxNkM0IDE3LjkgNS4zIDE5LjQgNyAxOS45VjIzSDE4VjE3LjVDMjAuNSAxNS45IDIyIDEzLjEgMjIgMTBDMjIgNSAxOCAxIDEzIDFNMTcgMTBIMTRWMTNIMTJWMTBIOVY4SDEyVjVIMTRWOEgxN1YxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkUXVlc3Rpb24gPSBcIk0xMyAzQzkuMjMgMyA2LjE5IDUuOTUgNiA5LjY2TDQuMDggMTIuMTlDMy44NCAxMi41IDQuMDggMTMgNC41IDEzSDZWMTZDNiAxNy4xMSA2Ljg5IDE4IDggMThIOVYyMUgxNlYxNi4zMUMxOC4zNyAxNS4xOSAyMCAxMi44IDIwIDEwQzIwIDYuMTQgMTYuODggMyAxMyAzTTE0IDE0SDEyVjEySDE0VjE0TTE1Ljc1IDguODFDMTUuNDYgOS4yMSAxNS4wOSA5LjUgMTQuNjQgOS43NEMxNC4zOSA5LjkgMTQuMjIgMTAuMDcgMTQuMTMgMTAuMjZDMTQuMDQgMTAuNDQgMTQgMTAuNjkgMTQgMTFIMTJDMTIgMTAuNSAxMi4xMSAxMC4wOCAxMi4zMSA5LjgyQzEyLjUgOS41NSAxMi44NSA5LjI1IDEzLjM2IDguOTFDMTMuNjIgOC43NSAxMy44MyA4LjU1IDEzLjk3IDguMzJDMTQuMTMgOC4wOSAxNC4yIDcuODIgMTQuMiA3LjVDMTQuMiA3LjIgMTQuMTIgNi45NCAxMy45NCA2Ljc1QzEzLjc2IDYuNTcgMTMuNSA2LjQ3IDEzLjE5IDYuNDdDMTIuOTMgNi40NyAxMi43MSA2LjU1IDEyLjUzIDYuN0MxMi4zNSA2Ljg2IDEyLjI2IDcuMDkgMTIuMjUgNy4zOUgxMC4zMkwxMC4zMSA3LjM2QzEwLjMgNi41NyAxMC41NiA2IDExLjA4IDUuNTlDMTEuNjIgNS4yIDEyLjMyIDUgMTMuMTkgNUMxNC4xMiA1IDE0Ljg1IDUuMjMgMTUuMzggNS42OEMxNS45MiA2LjEzIDE2LjE5IDYuNzQgMTYuMTkgNy41QzE2LjE5IDggMTYuMDQgOC40MSAxNS43NSA4LjgxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRRdWVzdGlvbk91dGxpbmUgPSBcIk0xMyAzQzE2Ljg4IDMgMjAgNi4xNCAyMCAxMEMyMCAxMi44IDE4LjM3IDE1LjE5IDE2IDE2LjMxVjIxSDlWMThIOEM2Ljg5IDE4IDYgMTcuMTEgNiAxNlYxM0g0LjVDNC4wOCAxMyAzLjg0IDEyLjUgNC4wOCAxMi4xOUw2IDkuNjZDNi4xOSA1Ljk1IDkuMjMgMyAxMyAzTTEwLjMyIDcuMzlIMTIuMjVDMTIuMjYgNy4wOSAxMi4zNSA2Ljg2IDEyLjUzIDYuN0MxMi43MSA2LjU1IDEyLjkzIDYuNDcgMTMuMTkgNi40N0MxMy41IDYuNDcgMTMuNzYgNi41NyAxMy45NCA2Ljc1QzE0LjEyIDYuOTQgMTQuMiA3LjIgMTQuMiA3LjVDMTQuMiA3LjgyIDE0LjEzIDguMDkgMTMuOTcgOC4zMkMxMy44MyA4LjU1IDEzLjYyIDguNzUgMTMuMzYgOC45MUMxMi44NSA5LjI1IDEyLjUgOS41NSAxMi4zMSA5LjgyQzEyLjExIDEwLjA4IDEyIDEwLjUgMTIgMTFIMTRDMTQgMTAuNjkgMTQuMDQgMTAuNDQgMTQuMTMgMTAuMjZDMTQuMjIgMTAuMDcgMTQuMzkgOS45IDE0LjY0IDkuNzRDMTUuMDkgOS41IDE1LjQ2IDkuMjEgMTUuNzUgOC44MUMxNi4wNCA4LjQxIDE2LjE5IDggMTYuMTkgNy41QzE2LjE5IDYuNzQgMTUuOTIgNi4xMyAxNS4zOCA1LjY4QzE0Ljg1IDUuMjMgMTQuMTIgNSAxMy4xOSA1QzEyLjMyIDUgMTEuNjIgNS4yIDExLjA4IDUuNTlDMTAuNTYgNiAxMC4zIDYuNTcgMTAuMzEgNy4zNkwxMC4zMiA3LjM5TTEyIDE0SDE0VjEySDEyVjE0TTEzIDFDOC40MSAxIDQuNjEgNC40MiA0LjA2IDguOUwyLjUgMTFMMi40NyAxMUwyLjQ1IDExLjAzQzEuOSAxMS43OSAxLjgzIDEyLjc5IDIuMjYgMTMuNjJDMi42MiAxNC4zMSAzLjI2IDE0Ljc5IDQgMTQuOTRWMTZDNCAxNy44NSA1LjI4IDE5LjQyIDcgMTkuODdWMjNIMThWMTcuNUMyMC41IDE1LjgzIDIyIDEzLjA2IDIyIDEwQzIyIDUuMDMgMTcuOTYgMSAxMyAxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRSZW1vdmUgPSBcIk0xMyAzQzkuMiAzIDYuMiA1LjkgNiA5LjdMNC4xIDEyLjJDMy45IDEyLjUgNC4xIDEzIDQuNSAxM0g2VjE2QzYgMTcuMSA2LjkgMTggOCAxOEg5VjIxSDE2VjE2LjNDMTguNCAxNS4yIDIwIDEyLjggMjAgMTBDMjAgNi4xIDE2LjkgMyAxMyAzTTE1LjEgMTIuNUwxMyAxMC40TDEwLjkgMTIuNUw5LjUgMTEuMUwxMS42IDlMOS41IDYuOUwxMC45IDUuNUwxMyA3LjZMMTUuMSA1LjVMMTYuNSA2LjlMMTQuNCA5TDE2LjUgMTEuMUwxNS4xIDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFJlbW92ZU91dGxpbmUgPSBcIk0xMyAzQzE2LjkgMyAyMCA2LjEgMjAgMTBDMjAgMTIuOCAxOC40IDE1LjIgMTYgMTYuM1YyMUg5VjE4SDhDNi45IDE4IDYgMTcuMSA2IDE2VjEzSDQuNUM0LjEgMTMgMy44IDEyLjUgNC4xIDEyLjJMNiA5LjdDNi4yIDUuOSA5LjIgMyAxMyAzTTEzIDFDOC40IDEgNC42IDQuNCA0LjEgOC45TDIuNSAxMUMxLjkgMTEuNyAxLjggMTIuNyAyLjIgMTMuNkMyLjYgMTQuMyAzLjIgMTQuOCA0IDE1VjE2QzQgMTcuOSA1LjMgMTkuNCA3IDE5LjlWMjNIMThWMTcuNUMyMC41IDE1LjkgMjIgMTMuMSAyMiAxMEMyMiA1IDE4IDEgMTMgMU0xNi41IDYuOUwxNC40IDlMMTYuNSAxMS4xTDE1LjEgMTIuNUwxMyAxMC40TDEwLjkgMTIuNUw5LjUgMTEuMUwxMS42IDlMOS41IDYuOUwxMC45IDUuNUwxMyA3LjZMMTUuMSA1LjVMMTYuNSA2LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFNub3dmbGFrZSA9IFwiTTEzIDNDOS4yMyAzIDYuMTkgNS45NSA2IDkuNjZMNC4wOCAxMi4xOUMzLjg0IDEyLjUgNC4wOCAxMyA0LjUgMTNINlYxNkM2IDE3LjExIDYuODkgMTggOCAxOEg5VjIxSDE2VjE2LjMxQzE4LjM3IDE1LjE5IDIwIDEyLjggMjAgMTBDMjAgNi4xNCAxNi44OCAzIDEzIDNNMTcuMDYgOS41N0wxNS4xIDEwLjA5TDE2LjU0IDExLjU0QzE2Ljg5IDExLjg4IDE2Ljg5IDEyLjQ2IDE2LjU0IDEyLjgxQzE2LjE5IDEzLjE2IDE1LjYxIDEzLjE2IDE1LjI3IDEyLjgxTDEzLjgxIDExLjM3TDEzLjMgMTMuMzNDMTMuMTggMTMuODIgMTIuNjggMTQuMSAxMi4yMSAxMy45N0MxMS43MiAxMy44NCAxMS40NCAxMy4zNSAxMS41NyAxMi44N0wxMi4xIDEwLjlMMTAuMTMgMTEuNDNDOS42NSAxMS41NiA5LjE1IDExLjI4IDkuMDMgMTAuNzlDOC45IDEwLjMyIDkuMTggOS44MiA5LjY3IDkuN0wxMS42MyA5LjE5TDEwLjE5IDcuNzNDOS44NCA3LjM5IDkuODQgNi44MiAxMC4xOSA2LjQ2QzEwLjU0IDYuMTEgMTEuMTIgNi4xMSAxMS40NiA2LjQ2TDEyLjkxIDcuOUwxMy40MyA1Ljk0QzEzLjU1IDUuNDYgMTQuMDQgNS4xOCAxNC41IDUuM0MxNSA1LjQzIDE1LjI4IDUuOTIgMTUuMTYgNi40MUwxNC42MyA4LjM3TDE2LjU5IDcuODRDMTcuMDggNy43MiAxNy41NyA4IDE3LjcgOC41QzE3LjgyIDguOTYgMTcuNTQgOS40NSAxNy4wNiA5LjU3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRTbm93Zmxha2VPdXRsaW5lID0gXCJNMTMgM0MxNi44OCAzIDIwIDYuMTQgMjAgMTBDMjAgMTIuOCAxOC4zNyAxNS4xOSAxNiAxNi4zMVYyMUg5VjE4SDhDNi44OSAxOCA2IDE3LjExIDYgMTZWMTNINC41QzQuMDggMTMgMy44NCAxMi41IDQuMDggMTIuMTlMNiA5LjY2QzYuMTkgNS45NSA5LjIzIDMgMTMgM00xMyAxQzguNDEgMSA0LjYxIDQuNDIgNC4wNiA4LjlMMi41IDExTDIuNDcgMTFMMi40NSAxMS4wM0MxLjkgMTEuNzkgMS44MyAxMi43OSAyLjI2IDEzLjYyQzIuNjIgMTQuMzEgMy4yNiAxNC43OSA0IDE0Ljk0VjE2QzQgMTcuODUgNS4yOCAxOS40MiA3IDE5Ljg3VjIzSDE4VjE3LjVDMjAuNSAxNS44MyAyMiAxMy4wNiAyMiAxMEMyMiA1LjAzIDE3Ljk2IDEgMTMgMU0xNy4zMyA5LjNMMTUuMzcgOS44MUwxNi44MSAxMS4yN0MxNy4xNiAxMS42MSAxNy4xNiAxMi4xOSAxNi44MSAxMi41NFMxNS44OCAxMi44OSAxNS41NCAxMi41NEwxNC4wOSAxMS4xTDEzLjU3IDEzLjA2QzEzLjQ1IDEzLjU1IDEyLjk2IDEzLjgyIDEyLjUgMTMuN0MxMiAxMy41NyAxMS43MiAxMy4wOCAxMS44NCAxMi41OUwxMi4zNyAxMC42M0wxMC40MSAxMS4xNkM5LjkyIDExLjI4IDkuNDMgMTEgOS4zIDEwLjVDOS4xOCAxMC4wNSA5LjQ2IDkuNTUgOS45NCA5LjQzTDExLjkgOC45MUwxMC40NiA3LjQ2QzEwLjExIDcuMTIgMTAuMTEgNi41NSAxMC40NiA2LjE5QzEwLjgxIDUuODQgMTEuMzkgNS44NCAxMS43MyA2LjE5TDEzLjE5IDcuNjNMMTMuNyA1LjY3QzEzLjgyIDUuMTggMTQuMzIgNC45IDE0Ljc5IDUuMDNDMTUuMjggNS4xNiAxNS41NiA1LjY1IDE1LjQzIDYuMTNMMTQuOSA4LjFMMTYuODcgNy41N0MxNy4zNSA3LjQ0IDE3Ljg0IDcuNzIgMTcuOTcgOC4yMUMxOC4xIDguNjggMTcuODIgOS4xOCAxNy4zMyA5LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFN5bmMgPSBcIk0xMyAzQzkuMjMgMyA2LjE5IDUuOTUgNiA5LjY2TDQuMDggMTIuMTlDMy44NCAxMi41IDQuMDggMTMgNC41IDEzSDZWMTZDNiAxNy4xMSA2Ljg5IDE4IDggMThIOVYyMUgxNlYxNi4zMUMxOC4zNyAxNS4xOSAyMCAxMi44IDIwIDEwQzIwIDYuMTQgMTYuODggMyAxMyAzTTEzIDE1VjEzLjVDMTAuNzkgMTMuNSA5IDExLjcxIDkgOS41QzkgOC42OCA5LjI1IDcuOTIgOS42NyA3LjI5TDEwLjc2IDguMzhDMTAuNTkgOC43MiAxMC41IDkuMSAxMC41IDkuNUMxMC41IDEwLjg4IDExLjYyIDEyIDEzIDEyVjEwLjVMMTUuMjUgMTIuNzVMMTMgMTVNMTYuMzMgMTEuNzFMMTUuMjQgMTAuNjJDMTUuNDEgMTAuMjggMTUuNSA5LjkgMTUuNSA5LjVDMTUuNSA4LjEyIDE0LjM4IDcgMTMgN1Y4LjVMMTAuNzUgNi4yNUwxMyA0VjUuNUMxNS4yMSA1LjUgMTcgNy4yOSAxNyA5LjVDMTcgMTAuMzIgMTYuNzUgMTEuMDggMTYuMzMgMTEuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFN5bmNPdXRsaW5lID0gXCJNMTMgM0MxNi44OCAzIDIwIDYuMTQgMjAgMTBDMjAgMTIuOCAxOC4zNyAxNS4xOSAxNiAxNi4zMVYyMUg5VjE4SDhDNi44OSAxOCA2IDE3LjExIDYgMTZWMTNINC41QzQuMDggMTMgMy44NCAxMi41IDQuMDggMTIuMTlMNiA5LjY2QzYuMTkgNS45NSA5LjIzIDMgMTMgM00xMyAxQzguNDEgMSA0LjYxIDQuNDIgNC4wNiA4LjlMMi41IDExTDIuNDcgMTFMMi40NSAxMS4wM0MxLjkgMTEuNzkgMS44MyAxMi43OSAyLjI2IDEzLjYyQzIuNjIgMTQuMzEgMy4yNiAxNC43OSA0IDE0Ljk0VjE2QzQgMTcuODUgNS4yOCAxOS40MiA3IDE5Ljg3VjIzSDE4VjE3LjVDMjAuNSAxNS44MyAyMiAxMy4wNiAyMiAxMEMyMiA1LjAzIDE3Ljk2IDEgMTMgMU0xNCAxNVYxMy41QzExLjc5IDEzLjUgMTAgMTEuNzEgMTAgOS41QzEwIDguNjggMTAuMjUgNy45MiAxMC42NyA3LjI5TDExLjc2IDguMzhDMTEuNTkgOC43MiAxMS41IDkuMSAxMS41IDkuNUMxMS41IDEwLjg4IDEyLjYyIDEyIDE0IDEyVjEwLjVMMTYuMjUgMTIuNzVMMTQgMTVNMTcuMzMgMTEuNzFMMTYuMjQgMTAuNjJDMTYuNDEgMTAuMjggMTYuNSA5LjkgMTYuNSA5LjVDMTYuNSA4LjEyIDE1LjM4IDcgMTQgN1Y4LjVMMTEuNzUgNi4yNUwxNCA0VjUuNUMxNi4yMSA1LjUgMTggNy4yOSAxOCA5LjVDMTggMTAuMzIgMTcuNzUgMTEuMDggMTcuMzMgMTEuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZHBob25lcyA9IFwiTTEyLDFDNywxIDMsNSAzLDEwVjE3QTMsMyAwIDAsMCA2LDIwSDlWMTJINVYxMEE3LDcgMCAwLDEgMTIsM0E3LDcgMCAwLDEgMTksMTBWMTJIMTVWMjBIMThBMywzIDAgMCwwIDIxLDE3VjEwQzIxLDUgMTYuOTcsMSAxMiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRwaG9uZXNCbHVldG9vdGggPSBcIk04LDZBNiw2IDAgMCwwIDIsMTJWMTYuOEMyLDE3LjQ2IDIuNTQsMTggMy4yLDE4SDZWMTRINFYxMkE0LDQgMCAwLDEgOCw4QTQsNCAwIDAsMSAxMiwxMlYxNEgxMFYxOEgxMi44QTEuMiwxLjIgMCAwLDAgMTQsMTYuOFYxMkE2LDYgMCAwLDAgOCw2TTE5LDdWMTAuNzlMMTYuNzEsOC41TDE2LDkuMjFMMTguNzksMTJMMTYsMTQuNzlMMTYuNzEsMTUuNUwxOSwxMy4yMVYxN0gxOS41TDIyLjM1LDE0LjE0TDIwLjIxLDEyTDIyLjM1LDkuODVMMTkuNSw3SDE5TTIwLDguOTFMMjAuOTQsOS44NUwyMCwxMC43OVY4LjkxTTIwLDEzLjIxTDIwLjk0LDE0LjE0TDIwLDE1LjA4VjEzLjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRwaG9uZXNCb3ggPSBcIk03LjIsMThDNi41NCwxOCA2LDE3LjQ2IDYsMTYuOFYxMy4yTDYsMTJBNiw2IDAgMCwxIDEyLDZBNiw2IDAgMCwxIDE4LDEyVjEzLjJMMTgsMTYuOEExLjIsMS4yIDAgMCwxIDE2LjgsMThIMTRWMTRIMTZWMTJBNCw0IDAgMCwwIDEyLDhBNCw0IDAgMCwwIDgsMTJWMTRIMTBWMThNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZHBob25lc09mZiA9IFwiTTEyLDFBOSw5IDAgMCwxIDIxLDEwVjE3QzIxLDE3LjYyIDIwLjgxLDE4LjE5IDIwLjUsMTguNjdMMTUsMTMuMThWMTJIMTlWMTBBNyw3IDAgMCwwIDEyLDNDMTAsMyA4LjIzLDMuODIgNi45Niw1LjE0TDUuNTUsMy43MkM3LjE4LDIuMDQgOS40NywxIDEyLDFNMi43OCwzLjVMMjAuNSwyMS4yMkwxOS4yMywyMi41TDE2LjczLDIwSDE1VjE4LjI3TDksMTIuMjdWMjBINkEzLDMgMCAwLDEgMywxN1YxMEMzLDguODkgMy4yLDcuODIgMy41Nyw2Ljg0TDEuNSw0Ljc3TDIuNzgsMy41TTUuMTcsOC40NEM1LjA2LDguOTQgNSw5LjQ2IDUsMTBWMTJIOC43M0w1LjE3LDguNDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZHBob25lc1NldHRpbmdzID0gXCJNMTIsMUE5LDkgMCAwLDEgMjEsMTBWMTdBMywzIDAgMCwxIDE4LDIwSDE1VjEySDE5VjEwQTcsNyAwIDAsMCAxMiwzQTcsNyAwIDAsMCA1LDEwVjEySDlWMjBINkEzLDMgMCAwLDEgMywxN1YxMEE5LDkgMCAwLDEgMTIsMU0xNSwyNFYyMkgxN1YyNEgxNU0xMSwyNFYyMkgxM1YyNEgxMU03LDI0VjIySDlWMjRIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkc2V0ID0gXCJNMTIsMUM3LDEgMyw1IDMsMTBWMTdBMywzIDAgMCwwIDYsMjBIOVYxMkg1VjEwQTcsNyAwIDAsMSAxMiwzQTcsNyAwIDAsMSAxOSwxMFYxMkgxNVYyMEgxOVYyMUgxMlYyM0gxOEEzLDMgMCAwLDAgMjEsMjBWMTBDMjEsNSAxNi45NywxIDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZHNldERvY2sgPSBcIk0yLDE4SDlWNi4xM0M3LjI3LDYuNTcgNiw4LjE0IDYsMTBWMTFIOFYxN0g2QTIsMiAwIDAsMSA0LDE1VjEwQTYsNiAwIDAsMSAxMCw0SDExQTYsNiAwIDAsMSAxNywxMFYxMkgxOFY5SDIwVjEyQTIsMiAwIDAsMSAxOCwxNEgxN1YxNUEyLDIgMCAwLDEgMTUsMTdIMTNWMTFIMTVWMTBDMTUsOC4xNCAxMy43Myw2LjU3IDEyLDYuMTNWMThIMjJWMjBIMlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkc2V0T2ZmID0gXCJNMS41LDQuNzdMMy41Nyw2Ljg0QzMuMiw3LjgyIDMsOC44OSAzLDEwVjIwQTMsMyAwIDAsMCA2LDIzSDEyVjIxSDVWMjBIOVYxMi4yN0wxNSwxOC4yN1YyMEgxNi43M0wxOS4yMywyMi41TDIwLjUsMjEuMjJMMi43OCwzLjVMMS41LDQuNzdNMTIsMUM5LjQ3LDEgNy4xOCwyLjA0IDUuNTUsMy43Mkw2Ljk2LDUuMTRDOC4yMywzLjgyIDEwLDMgMTIsM0E3LDcgMCAwLDEgMTksMTBWMTJIMTVWMTMuMThMMjAuNSwxOC42N0MyMC44MSwxOC4xOSAyMSwxNy42MiAyMSwxN1YxMEE5LDkgMCAwLDAgMTIsMU01LDEyVjEwQzUsOS40NiA1LjA2LDguOTQgNS4xNyw4LjQ0TDguNzMsMTJINVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydCA9IFwiTTEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOS4yNCwzIDEwLjkxLDMuODEgMTIsNS4wOEMxMy4wOSwzLjgxIDE0Ljc2LDMgMTYuNSwzQzE5LjU4LDMgMjIsNS40MSAyMiw4LjVDMjIsMTIuMjcgMTguNiwxNS4zNiAxMy40NSwyMC4wM0wxMiwyMS4zNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEJveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNMTIsMTdMMTIuNzIsMTYuMzRDMTUuMywxNCAxNywxMi40NiAxNywxMC41N0MxNyw5LjAzIDE1Ljc5LDcuODIgMTQuMjUsNy44MkMxMy4zOCw3LjgyIDEyLjU1LDguMjMgMTIsOC44N0MxMS40NSw4LjIzIDEwLjYyLDcuODIgOS43NSw3LjgyQzguMjEsNy44MiA3LDkuMDMgNywxMC41N0M3LDEyLjQ2IDguNywxNCAxMS4yOCwxNi4zNEwxMiwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEJveE91dGxpbmUgPSBcIk0xMiwxN0wxMS4yOCwxNi4zNEM4LjcsMTQgNywxMi40NiA3LDEwLjU3QzcsOS4wMyA4LjIxLDcuODIgOS43NSw3LjgyQzEwLjYyLDcuODIgMTEuNDUsOC4yMyAxMiw4Ljg3QzEyLjU1LDguMjMgMTMuMzgsNy44MiAxNC4yNSw3LjgyQzE1Ljc5LDcuODIgMTcsOS4wMyAxNywxMC41N0MxNywxMi40NiAxNS4zLDE0IDEyLjcyLDE2LjM0TDEyLDE3TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEJyb2tlbiA9IFwiTTEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOC4xNywzIDguODIsMy4xMiA5LjQ0LDMuMzNMMTMsOS4zNUw5LDE0LjM1TDEyLDIxLjM1VjIxLjM1TTE2LjUsM0MxOS41OCwzIDIyLDUuNDEgMjIsOC41QzIyLDEyLjI3IDE4LjYsMTUuMzYgMTMuNDUsMjAuMDNMMTIsMjEuMzVMMTEsMTQuMzVMMTUuNSw5LjM1TDEyLjg1LDQuMjdDMTMuODcsMy40NyAxNS4xNywzIDE2LjUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEJyb2tlbk91dGxpbmUgPSBcIk03LjUsNUM3LjcsNSA3LjksNSA4LjEsNS4xTDEwLjUsOS4yTDYuOCwxMy44QzUuMSwxMS44IDQsMTAuMiA0LDguNUM0LDYuNSA1LjUsNSA3LjUsNU03LjUsM0M0LjQsMyAyLDUuNCAyLDguNUMyLDEyLjMgNS40LDE1LjQgMTAuNiwyMEwxMiwyMS4zTDksMTQuM0wxMyw5LjNMOS40LDMuM0M4LjgsMy4xIDguMiwzIDcuNSwzTTE2LjUsNUMxOC41LDUgMjAsNi41IDIwLDguNUMyMCwxMS4xIDE3LjQsMTMuNyAxMy40LDE3LjNMMTMuMSwxNUwxNy45LDkuN0wxNS42LDUuMkMxNS45LDUgMTYuMiw1IDE2LjUsNU0xNi41LDNDMTUuMiwzIDEzLjksMy41IDEyLjksNC4zTDE1LjUsOS40TDExLDE0LjRMMTIsMjEuNEwxMy40LDIwLjFDMTguNiwxNS40IDIyLDEyLjMgMjIsOC42QzIyLDUuNCAxOS42LDMgMTYuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0Q2lyY2xlID0gXCJNMTIsMkM2LjQ3LDIgMiw2LjUgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTkuNzUsNy44MkMxMC42Miw3LjgyIDExLjQ1LDguMjMgMTIsOC44N0MxMi41NSw4LjIzIDEzLjM4LDcuODIgMTQuMjUsNy44MkMxNS43OSw3LjgyIDE3LDkuMDMgMTcsMTAuNTdDMTcsMTIuNDYgMTUuMywxNCAxMi43MiwxNi4zNEwxMiwxN0wxMS4yOCwxNi4zNEM4LjcsMTQgNywxMi40NiA3LDEwLjU3QzcsOS4wMyA4LjIxLDcuODIgOS43NSw3LjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0Q2lyY2xlT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNE05Ljc1LDcuODJDOC4yMSw3LjgyIDcsOS4wMyA3LDEwLjU3QzcsMTIuNDYgOC43LDE0IDExLjI4LDE2LjM0TDEyLDE3TDEyLjcyLDE2LjM0QzE1LjMsMTQgMTcsMTIuNDYgMTcsMTAuNTdDMTcsOS4wMyAxNS43OSw3LjgyIDE0LjI1LDcuODJDMTMuMzgsNy44MiAxMi41NSw4LjIzIDEyLDguODdDMTEuNDUsOC4yMyAxMC42Miw3LjgyIDkuNzUsNy44MlpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydENvZyA9IFwiTTEyIDE5QzEyIDE5LjcxIDEyLjEyIDIwLjQgMTIuMzIgMjEuMDZMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjggMjEuNTkgMTEgMjAuODQgMTIuMjVDMjAuMjUgMTIuMDkgMTkuNjMgMTIgMTkgMTJDMTUuMTQgMTIgMTIgMTUuMTQgMTIgMTlNMjMuODMgMjAuNjRMMjIuODMgMjIuMzdDMjIuNzYgMjIuNSAyMi42MyAyMi41IDIyLjUgMjIuNUwyMS4yNyAyMkMyMSAyMi4xOCAyMC43MyAyMi4zNCAyMC40MyAyMi40N0wyMC4yNCAyMy43OUMyMC4yMiAyMy45MSAyMC4xMSAyNCAyMCAyNEgxOEMxNy44NiAyNCAxNy43NiAyMy45MSAxNy43NCAyMy43OUwxNy41NSAyMi40N0MxNy4yNCAyMi4zNSAxNi45NiAyMi4xOCAxNi43IDIyTDE1LjQ2IDIyLjVDMTUuMzQgMjIuNSAxNS4yMSAyMi41IDE1LjE1IDIyLjM3TDE0LjE1IDIwLjY0QzE0LjA5IDIwLjUzIDE0LjEyIDIwLjQgMTQuMjEgMjAuMzJMMTUuMjcgMTkuNUMxNS4yNSAxOS4zMyAxNS4yNCAxOS4xNyAxNS4yNCAxOVMxNS4yNSAxOC42NyAxNS4yNyAxOC41TDE0LjIxIDE3LjY4QzE0LjExIDE3LjYgMTQuMDkgMTcuNDcgMTQuMTUgMTcuMzZMMTUuMTUgMTUuNjNDMTUuMjIgMTUuNSAxNS4zNSAxNS41IDE1LjQ2IDE1LjVMMTYuNyAxNkMxNi45NiAxNS44MiAxNy4yNSAxNS42NiAxNy41NSAxNS41M0wxNy43NCAxNC4yMUMxNy43NiAxNC4wOSAxNy44NyAxNCAxOCAxNEgyMEMyMC4xMSAxNCAyMC4yMiAxNC4wOSAyMC4yMyAxNC4yMUwyMC40MiAxNS41M0MyMC43MyAxNS42NSAyMSAxNS44MiAyMS4yNyAxNkwyMi41IDE1LjVDMjIuNjMgMTUuNSAyMi43NiAxNS41IDIyLjgyIDE1LjYzTDIzLjgyIDE3LjM2QzIzLjg4IDE3LjQ3IDIzLjg1IDE3LjYgMjMuNzYgMTcuNjhMMjIuNyAxOC41QzIyLjczIDE4LjY3IDIyLjc0IDE4LjgzIDIyLjc0IDE5UzIyLjcyIDE5LjMzIDIyLjcgMTkuNUwyMy43NyAyMC4zMkMyMy44NiAyMC40IDIzLjg5IDIwLjUzIDIzLjgzIDIwLjY0TTIwLjUgMTlDMjAuNSAxOC4xNyAxOS44MyAxNy41IDE5IDE3LjVTMTcuNSAxOC4xNyAxNy41IDE5IDE4LjE2IDIwLjUgMTkgMjAuNUMxOS44MyAyMC41IDIwLjUgMTkuODMgMjAuNSAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydENvZ091dGxpbmUgPSBcIk0xNi41IDVDMTQuOTYgNSAxMy40NiA2IDEyLjkzIDcuMzZIMTEuMDdDMTAuNTQgNiA5LjA0IDUgNy41IDVDNS41IDUgNCA2LjUgNCA4LjVDNCAxMS4zOSA3LjE0IDE0LjI0IDExLjg5IDE4LjU1TDEyIDE4LjY1TDEyIDE4LjYzQzEyIDE4Ljc1IDEyIDE4Ljg4IDEyIDE5QzEyIDE5LjcxIDEyLjEyIDIwLjQgMTIuMzIgMjEuMDZMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjggMjEuNTkgMTEgMjAuODQgMTIuMjVDMjAuMjUgMTIuMDkgMTkuNjMgMTIgMTkgMTJDMTguODcgMTIgMTguNzQgMTIgMTguNiAxMkMxOS41IDEwLjc5IDIwIDkuNjUgMjAgOC41QzIwIDYuNSAxOC41IDUgMTYuNSA1TTIzLjgzIDIwLjY0TDIyLjgzIDIyLjM3QzIyLjc2IDIyLjUgMjIuNjMgMjIuNSAyMi41IDIyLjVMMjEuMjcgMjJDMjEgMjIuMTggMjAuNzMgMjIuMzQgMjAuNDMgMjIuNDdMMjAuMjQgMjMuNzlDMjAuMjIgMjMuOTEgMjAuMTEgMjQgMjAgMjRIMThDMTcuODYgMjQgMTcuNzYgMjMuOTEgMTcuNzQgMjMuNzlMMTcuNTUgMjIuNDdDMTcuMjQgMjIuMzUgMTYuOTYgMjIuMTggMTYuNyAyMkwxNS40NiAyMi41QzE1LjM0IDIyLjUgMTUuMjEgMjIuNSAxNS4xNSAyMi4zN0wxNC4xNSAyMC42NEMxNC4wOSAyMC41MyAxNC4xMiAyMC40IDE0LjIxIDIwLjMyTDE1LjI3IDE5LjVDMTUuMjUgMTkuMzMgMTUuMjQgMTkuMTcgMTUuMjQgMTlTMTUuMjUgMTguNjcgMTUuMjcgMTguNUwxNC4yMSAxNy42OEMxNC4xMSAxNy42IDE0LjA5IDE3LjQ3IDE0LjE1IDE3LjM2TDE1LjE1IDE1LjYzQzE1LjIyIDE1LjUgMTUuMzUgMTUuNSAxNS40NiAxNS41TDE2LjcgMTZDMTYuOTYgMTUuODIgMTcuMjUgMTUuNjYgMTcuNTUgMTUuNTNMMTcuNzQgMTQuMjFDMTcuNzYgMTQuMDkgMTcuODcgMTQgMTggMTRIMjBDMjAuMTEgMTQgMjAuMjIgMTQuMDkgMjAuMjMgMTQuMjFMMjAuNDIgMTUuNTNDMjAuNzMgMTUuNjUgMjEgMTUuODIgMjEuMjcgMTZMMjIuNSAxNS41QzIyLjYzIDE1LjUgMjIuNzYgMTUuNSAyMi44MiAxNS42M0wyMy44MiAxNy4zNkMyMy44OCAxNy40NyAyMy44NSAxNy42IDIzLjc2IDE3LjY4TDIyLjcgMTguNUMyMi43MyAxOC42NyAyMi43NCAxOC44MyAyMi43NCAxOVMyMi43MiAxOS4zMyAyMi43IDE5LjVMMjMuNzcgMjAuMzJDMjMuODYgMjAuNCAyMy44OSAyMC41MyAyMy44MyAyMC42NE0yMC41IDE5QzIwLjUgMTguMTcgMTkuODMgMTcuNSAxOSAxNy41UzE3LjUgMTguMTcgMTcuNSAxOSAxOC4xNiAyMC41IDE5IDIwLjVDMTkuODMgMjAuNSAyMC41IDE5LjgzIDIwLjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRGbGFzaCA9IFwiTTE2LjUsMi44M0MxNC43NiwyLjgzIDEzLjA5LDMuNjQgMTIsNC45QzEwLjkxLDMuNjQgOS4yNCwyLjgzIDcuNSwyLjgzQzQuNDIsMi44MyAyLDUuMjQgMiw4LjMzQzIsMTIuMSA1LjQsMTUuMTkgMTAuNTUsMTkuODZMMTIsMjEuMTdMMTMuNDUsMTkuODZDMTguNiwxNS4xOSAyMiwxMi4xIDIyLDguMzNDMjIsNS4yNCAxOS41OCwyLjgzIDE2LjUsMi44M00xMiwxNy44M1YxMy44M0g5TDEyLDYuODNWMTAuODNIMTVcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEhhbGYgPSBcIk0xMyw3LjJWMTcuNzRMMTMsMjAuNDRMMTIsMjEuMzVMMTAuNTUsMjAuMDNDNS40LDE1LjM2IDIsMTIuMjcgMiw4LjVDMiw1LjQxIDQuNDIsMyA3LjUsM0MxMCwzIDEzLDUgMTMsNy4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0SGFsZkZ1bGwgPSBcIk0xNi41LDVDMTUsNSAxMy41OCw1LjkxIDEzLDcuMlYxNy43NEMxNy4yNSwxMy44NyAyMCwxMS4yIDIwLDguNUMyMCw2LjUgMTguNSw1IDE2LjUsNU0xNi41LDNDMTkuNTgsMyAyMiw1LjQxIDIyLDguNUMyMiwxMi4yNyAxOC42LDE1LjM2IDEzLjQ1LDIwLjAzTDEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOS4yNCwzIDEwLjkxLDMuODEgMTIsNS4wOEMxMy4wOSwzLjgxIDE0Ljc2LDMgMTYuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0SGFsZk91dGxpbmUgPSBcIk00LDguNUM0LDExLjIgNi43NSwxMy44NyAxMSwxNy43NFY3LjJDMTAuNDIsNS45MSA5LDUgNy41LDVDNS41LDUgNCw2LjUgNCw4LjVNMTMsNy4yVjE3Ljc0TDEzLDIwLjQ0TDEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDMTAsMyAxMyw1IDEzLDcuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydE1pbnVzID0gXCJNMTIgMThDMTIgMTkgMTIuMjUgMTkuOTIgMTIuNjcgMjAuNzRMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjkzIDIxLjUgMTEuMjYgMjAuNjIgMTIuNjFDMTkuODMgMTIuMjMgMTguOTQgMTIgMTggMTJDMTQuNjkgMTIgMTIgMTQuNjkgMTIgMThNMTQgMTdWMTlIMjJWMTdIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRNaW51c091dGxpbmUgPSBcIk0xMi42NyAyMC43NEwxMiAyMS4zNUwxMC41NSAyMC4wM0M1LjQgMTUuMzYgMiAxMi4yNyAyIDguNUMyIDUuNDEgNC40MiAzIDcuNSAzQzkuMjQgMyAxMC45MSAzLjgxIDEyIDUuMDhDMTMuMDkgMy44MSAxNC43NiAzIDE2LjUgM0MxOS41OCAzIDIyIDUuNDEgMjIgOC41QzIyIDkuOTMgMjEuNSAxMS4yNiAyMC42MiAxMi42MUMyMCAxMi4zMSAxOS4zMSAxMi4xMSAxOC41OSAxMi4wNEMxOS41IDEwLjggMjAgOS42NSAyMCA4LjVDMjAgNi41IDE4LjUgNSAxNi41IDVDMTQuOTYgNSAxMy40NiA2IDEyLjkzIDcuMzZIMTEuMDdDMTAuNTQgNiA5LjA0IDUgNy41IDVDNS41IDUgNCA2LjUgNCA4LjVDNCAxMS4zOSA3LjE0IDE0LjI0IDExLjg5IDE4LjU1TDEyIDE4LjY1TDEyLjA0IDE4LjYxQzEyLjEyIDE5LjM3IDEyLjM0IDIwLjA5IDEyLjY3IDIwLjc0TTE0IDE3VjE5SDIyVjE3SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0TXVsdGlwbGUgPSBcIk0xMy41LDIwQzYuOSwxMy45IDMuNSwxMC44IDMuNSw3LjFDMy41LDQgNS45LDEuNiA5LDEuNkMxMC43LDEuNiAxMi40LDIuNCAxMy41LDMuN0MxNC42LDIuNCAxNi4zLDEuNiAxOCwxLjZDMjEuMSwxLjYgMjMuNSw0IDIzLjUsNy4xQzIzLjUsMTAuOSAyMC4xLDE0IDEzLjUsMjBNMTIsMjEuMUM1LjQsMTUuMiAxLjUsMTEuNyAxLjUsN0MxLjUsNi44IDEuNSw2LjYgMS41LDYuNEMwLjksNy4zIDAuNSw4LjQgMC41LDkuNkMwLjUsMTMuNCAzLjksMTYuNSAxMC41LDIyLjRMMTIsMjEuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydE11bHRpcGxlT3V0bGluZSA9IFwiTTEyLDIxLjFMMTAuNSwyMi40QzMuOSwxNi41IDAuNSwxMy40IDAuNSw5LjZDMC41LDguNCAwLjksNy4zIDEuNSw2LjRDMS41LDYuNiAxLjUsNi44IDEuNSw3QzEuNSwxMS43IDUuNCwxNS4yIDEyLDIxLjFNMTMuNiwxN0MxOC4zLDEyLjcgMjEuNSw5LjkgMjEuNiw3QzIxLjYsNSAyMC4xLDMuNSAxOC4xLDMuNUMxNi41LDMuNSAxNSw0LjUgMTQuNSw1LjlIMTIuNkMxMiw0LjUgMTAuNSwzLjUgOSwzLjVDNywzLjUgNS41LDUgNS41LDdDNS41LDkuOSA4LjYsMTIuNyAxMy40LDE3TDEzLjUsMTcuMU0xOCwxLjVDMjEuMSwxLjUgMjMuNSwzLjkgMjMuNSw3QzIzLjUsMTAuNyAyMC4xLDEzLjggMTMuNSwxOS44QzYuOSwxMy45IDMuNSwxMC44IDMuNSw3QzMuNSwzLjkgNS45LDEuNSA5LDEuNUMxMC43LDEuNSAxMi40LDIuMyAxMy41LDMuNkMxNC42LDIuMyAxNi4zLDEuNSAxOCwxLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRPZmYgPSBcIk0xLDQuMjdMMi4yOCwzTDIwLDIwLjcyTDE4LjczLDIyTDE1LjE4LDE4LjQ0TDEzLjQ1LDIwLjAzTDEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNy41NSAyLjIzLDYuNjcgMi42Myw1LjlMMSw0LjI3TTcuNSwzQzkuMjQsMyAxMC45MSwzLjgxIDEyLDUuMDhDMTMuMDksMy44MSAxNC43NiwzIDE2LjUsM0MxOS41OCwzIDIyLDUuNDEgMjIsOC41QzIyLDExLjA3IDIwLjQyLDEzLjMyIDE3Ljc5LDE1Ljk3TDUuMjcsMy40NUM1Ljk1LDMuMTYgNi43LDMgNy41LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRPZmZPdXRsaW5lID0gXCJNMi4zOSAxLjczTDEuMTEgM0wzLjE5IDUuMDhDMi40NSA2IDIgNy4xOSAyIDguNUMyIDEyLjI3IDUuNCAxNS4zNiAxMC41NSAyMC4wM0wxMiAyMS4zNUwxMy40NSAyMC4wM0MxNC4zMiAxOS4yNCAxNS4xNCAxOC41IDE1LjkgMTcuNzlMMjAgMjJMMjEuMjcgMjAuNzNNMTIuMSAxOC41NUwxMiAxOC42NUwxMS44OSAxOC41NUM3LjE0IDE0LjI0IDQgMTEuMzkgNCA4LjVDNCA3Ljc0IDQuMjIgNy4wNiA0LjYxIDYuNUwxNC41IDE2LjM3QzEzLjc0IDE3LjA2IDEyLjk1IDE3Ljc4IDEyLjEgMTguNTVNOC4zIDUuMUw2LjMzIDMuMTNDNi43IDMuMDUgNy4xIDMgNy41IDNDOS4yNCAzIDEwLjkxIDMuODEgMTIgNS4wOEMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzQzE5LjU4IDMgMjIgNS40MSAyMiA4LjVDMjIgMTAuODQgMjAuNjkgMTIuOTIgMTguNDcgMTUuMjdMMTcuMDYgMTMuODZDMTguOTEgMTEuODggMjAgMTAuMiAyMCA4LjVDMjAgNi41IDE4LjUgNSAxNi41IDVDMTUuMSA1IDEzLjc0IDUuODMgMTMuMTEgN0gxMC44OUMxMC4zOCA2LjA2IDkuMzkgNS4zNCA4LjMgNS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0T3V0bGluZSA9IFwiTTEyLjEsMTguNTVMMTIsMTguNjVMMTEuODksMTguNTVDNy4xNCwxNC4yNCA0LDExLjM5IDQsOC41QzQsNi41IDUuNSw1IDcuNSw1QzkuMDQsNSAxMC41NCw2IDExLjA3LDcuMzZIMTIuOTNDMTMuNDYsNiAxNC45Niw1IDE2LjUsNUMxOC41LDUgMjAsNi41IDIwLDguNUMyMCwxMS4zOSAxNi44NiwxNC4yNCAxMi4xLDE4LjU1TTE2LjUsM0MxNC43NiwzIDEzLjA5LDMuODEgMTIsNS4wOEMxMC45MSwzLjgxIDkuMjQsMyA3LjUsM0M0LjQyLDMgMiw1LjQxIDIsOC41QzIsMTIuMjcgNS40LDE1LjM2IDEwLjU1LDIwLjAzTDEyLDIxLjM1TDEzLjQ1LDIwLjAzQzE4LjYsMTUuMzYgMjIsMTIuMjcgMjIsOC41QzIyLDUuNDEgMTkuNTgsMyAxNi41LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRQbHVzID0gXCJNMTIgMThDMTIgMTkgMTIuMjUgMTkuOTIgMTIuNjcgMjAuNzRMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjkzIDIxLjUgMTEuMjYgMjAuNjIgMTIuNjFDMTkuODMgMTIuMjMgMTguOTQgMTIgMTggMTJDMTQuNjkgMTIgMTIgMTQuNjkgMTIgMThNMTkgMTRIMTdWMTdIMTRWMTlIMTdWMjJIMTlWMTlIMjJWMTdIMTlWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRQbHVzT3V0bGluZSA9IFwiTTEyLjY3IDIwLjc0TDEyIDIxLjM1TDEwLjU1IDIwLjAzQzUuNCAxNS4zNiAyIDEyLjI3IDIgOC41QzIgNS40MSA0LjQyIDMgNy41IDNDOS4yNCAzIDEwLjkxIDMuODEgMTIgNS4wOEMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzQzE5LjU4IDMgMjIgNS40MSAyMiA4LjVDMjIgOS45MyAyMS41IDExLjI2IDIwLjYyIDEyLjYxQzIwIDEyLjMxIDE5LjMxIDEyLjExIDE4LjU5IDEyLjA0QzE5LjUgMTAuOCAyMCA5LjY1IDIwIDguNUMyMCA2LjUgMTguNSA1IDE2LjUgNUMxNC45NiA1IDEzLjQ2IDYgMTIuOTMgNy4zNkgxMS4wN0MxMC41NCA2IDkuMDQgNSA3LjUgNUM1LjUgNSA0IDYuNSA0IDguNUM0IDExLjM5IDcuMTQgMTQuMjQgMTEuODkgMTguNTVMMTIgMTguNjVMMTIuMDQgMTguNjFDMTIuMTIgMTkuMzcgMTIuMzQgMjAuMDkgMTIuNjcgMjAuNzRNMTcgMTRWMTdIMTRWMTlIMTdWMjJIMTlWMTlIMjJWMTdIMTlWMTRIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRQdWxzZSA9IFwiTTcuNSw0QTUuNSw1LjUgMCAwLDAgMiw5LjVDMiwxMCAyLjA5LDEwLjUgMi4yMiwxMUg2LjNMNy41Nyw3LjYzQzcuODcsNi44MyA5LjA1LDYuNzUgOS40Myw3LjYzTDExLjUsMTNMMTIuMDksMTEuNThDMTIuMjIsMTEuMjUgMTIuNTcsMTEgMTMsMTFIMjEuNzhDMjEuOTEsMTAuNSAyMiwxMCAyMiw5LjVBNS41LDUuNSAwIDAsMCAxNi41LDRDMTQuNjQsNCAxMyw0LjkzIDEyLDYuMzRDMTEsNC45MyA5LjM2LDQgNy41LDRWNE0zLDEyLjVBMSwxIDAgMCwwIDIsMTMuNUExLDEgMCAwLDAgMywxNC41SDUuNDRMMTEsMjBDMTIsMjAuOSAxMiwyMC45IDEzLDIwTDE4LjU2LDE0LjVIMjFBMSwxIDAgMCwwIDIyLDEzLjVBMSwxIDAgMCwwIDIxLDEyLjVIMTMuNEwxMi40NywxNC44QzEyLjA3LDE1LjgxIDEwLjkyLDE1LjY3IDEwLjU1LDE0LjgzTDguNSw5LjVMNy41NCwxMS44M0M3LjM5LDEyLjIxIDcuMDUsMTIuNSA2LjYsMTIuNUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0UmVtb3ZlID0gXCJNMTIgMThDMTIgMTkgMTIuMjUgMTkuOTIgMTIuNjcgMjAuNzRMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjkzIDIxLjUgMTEuMjYgMjAuNjIgMTIuNjFDMTkuODMgMTIuMjMgMTguOTQgMTIgMTggMTJDMTQuNjkgMTIgMTIgMTQuNjkgMTIgMThNMjEuNTQgMTUuODhMMjAuMTIgMTQuNDdMMTggMTYuNTlMMTUuODggMTQuNDdMMTQuNDcgMTUuODhMMTYuNTkgMThMMTQuNDcgMjAuMTJMMTUuODggMjEuNTRMMTggMTkuNDFMMjAuMTIgMjEuNTRMMjEuNTQgMjAuMTJMMTkuNDEgMThMMjEuNTQgMTUuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRSZW1vdmVPdXRsaW5lID0gXCJNMTIuNjcgMjAuNzRMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjkzIDIxLjUgMTEuMjYgMjAuNjIgMTIuNjFDMjAgMTIuMzEgMTkuMzEgMTIuMTEgMTguNTkgMTIuMDRDMTkuNSAxMC44IDIwIDkuNjUgMjAgOC41QzIwIDYuNSAxOC41IDUgMTYuNSA1QzE0Ljk2IDUgMTMuNDYgNiAxMi45MyA3LjM2SDExLjA3QzEwLjU0IDYgOS4wNCA1IDcuNSA1QzUuNSA1IDQgNi41IDQgOC41QzQgMTEuMzkgNy4xNCAxNC4yNCAxMS44OSAxOC41NUwxMiAxOC42NUwxMi4wNCAxOC42MUMxMi4xMiAxOS4zNyAxMi4zNCAyMC4wOSAxMi42NyAyMC43NE0yMC4xMiAxNC40NkwxOCAxNi41OUwxNS44OCAxNC40N0wxNC40NyAxNS44OEwxNi41OSAxOEwxNC40NyAyMC4xMkwxNS44OCAyMS41NEwxOCAxOS40MUwyMC4xMiAyMS41NEwyMS41NCAyMC4xMkwxOS40MSAxOEwyMS41NCAxNS44OEwyMC4xMiAxNC40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydFNldHRpbmdzID0gXCJNMTUgMjJIMTdWMjRIMTVWMjJNMTEgMjRIMTNWMjJIMTFWMjRNNyAyNEg5VjIySDdWMjRNMTYuNSAzQzE0Ljc2IDMgMTMuMDkgMy44MSAxMiA1LjA4QzEwLjkxIDMuODEgOS4yNCAzIDcuNSAzQzQuNDIgMyAyIDUuNDEgMiA4LjVDMiAxMi4yNyA1LjQgMTUuMzYgMTAuNTUgMjAuMDNMMTIgMjEuMzVMMTMuNDUgMjAuMDNDMTguNiAxNS4zNiAyMiAxMi4yNyAyMiA4LjVDMjIgNS40MSAxOS41OCAzIDE2LjUgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydFNldHRpbmdzT3V0bGluZSA9IFwiTTcgMjJIOVYyNEg3VjIyTTExIDI0SDEzVjIySDExVjI0TTE1IDI0SDE3VjIySDE1VjI0TTIyIDguNUMyMiAxMi4yNyAxOC42IDE1LjM2IDEzLjQ1IDIwLjAzTDEyIDIxLjM1TDEwLjU1IDIwLjAzQzUuNCAxNS4zNiAyIDEyLjI3IDIgOC41QzIgNS40MSA0LjQyIDMgNy41IDNDOS4yNCAzIDEwLjkxIDMuODEgMTIgNS4wOEMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzQzE5LjU4IDMgMjIgNS40MSAyMiA4LjVNMjAgOC41QzIwIDYuNSAxOC41IDUgMTYuNSA1QzE0Ljk2IDUgMTMuNDYgNiAxMi45MyA3LjM2SDExLjA3QzEwLjU0IDYgOS4wNCA1IDcuNSA1QzUuNSA1IDQgNi41IDQgOC41QzQgMTEuMzkgNy4xNCAxNC4yNCAxMS44OSAxOC41NUwxMiAxOC42NUwxMi4xIDE4LjU1QzE2Ljg2IDE0LjI0IDIwIDExLjM5IDIwIDguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWxpY29wdGVyID0gXCJNMywzSDE3VjVIM1YzTTIzLDZWMTAuNUwxNC43NSwxMi4yQzE0LjkxLDEyLjYgMTUsMTMuMDQgMTUsMTMuNUMxNSwxNC45IDE0LjE4LDE2LjEgMTMsMTYuNjZWMTdMMTMsMTlIMTZWMjFINEEzLDMgMCAwLDEgMSwxOFYxN0gzVjE4QTEsMSAwIDAsMCA0LDE5SDVWMTYuNzRDMy4yNSwxNi4xMyAyLDE0LjQ2IDIsMTIuNUMyLDEwIDQsOCA2LjUsOEg5VjZIMTFWOEgyMVY2SDIzTTExLDE5VjE3SDdWMTlIMTFNNy41LDEwQzYuMTIsMTAgNSwxMC45IDUsMTJDNSwxMy4xIDYuMTIsMTQgNy41LDE0QzguODgsMTQgMTAsMTMuMSAxMCwxMkMxMCwxMC45IDguODgsMTAgNy41LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlbHAgPSBcIk0xMCwxOUgxM1YyMkgxMFYxOU0xMiwyQzE3LjM1LDIuMjIgMTkuNjgsNy42MiAxNi41LDExLjY3QzE1LjY3LDEyLjY3IDE0LjMzLDEzLjMzIDEzLjY3LDE0LjE3QzEzLDE1IDEzLDE2IDEzLDE3SDEwQzEwLDE1LjMzIDEwLDEzLjkyIDEwLjY3LDEyLjkyQzExLjMzLDExLjkyIDEyLjY3LDExLjMzIDEzLjUsMTAuNjdDMTUuOTIsOC40MyAxNS4zMiw1LjI2IDEyLDVBMywzIDAgMCwwIDksOEg2QTYsNiAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlbHBCb3ggPSBcIk0xMSwxOEgxM1YxNkgxMVYxOE0xMiw2QTQsNCAwIDAsMCA4LDEwSDEwQTIsMiAwIDAsMSAxMiw4QTIsMiAwIDAsMSAxNCwxMEMxNCwxMiAxMSwxMS43NSAxMSwxNUgxM0MxMywxMi43NSAxNiwxMi41IDE2LDEwQTQsNCAwIDAsMCAxMiw2TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVscENpcmNsZSA9IFwiTTE1LjA3LDExLjI1TDE0LjE3LDEyLjE3QzEzLjQ1LDEyLjg5IDEzLDEzLjUgMTMsMTVIMTFWMTQuNUMxMSwxMy4zOSAxMS40NSwxMi4zOSAxMi4xNywxMS42N0wxMy40MSwxMC40MUMxMy43OCwxMC4wNSAxNCw5LjU1IDE0LDlDMTQsNy44OSAxMy4xLDcgMTIsN0EyLDIgMCAwLDAgMTAsOUg4QTQsNCAwIDAsMSAxMiw1QTQsNCAwIDAsMSAxNiw5QzE2LDkuODggMTUuNjQsMTAuNjcgMTUuMDcsMTEuMjVNMTMsMTlIMTFWMTdIMTNNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVscENpcmNsZU91dGxpbmUgPSBcIk0xMSwxOEgxM1YxNkgxMVYxOE0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTEyLDZBNCw0IDAgMCwwIDgsMTBIMTBBMiwyIDAgMCwxIDEyLDhBMiwyIDAgMCwxIDE0LDEwQzE0LDEyIDExLDExLjc1IDExLDE1SDEzQzEzLDEyLjc1IDE2LDEyLjUgMTYsMTBBNCw0IDAgMCwwIDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVscE5ldHdvcmsgPSBcIk0xNywzQTIsMiAwIDAsMSAxOSw1VjE1QTIsMiAwIDAsMSAxNywxN0gxM1YxOUgxNEExLDEgMCAwLDEgMTUsMjBIMjJWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdIN0M1Ljg5LDE3IDUsMTYuMSA1LDE1VjVBMiwyIDAgMCwxIDcsM0gxN00xMi4xOSw1QzExLjMyLDUgMTAuNjIsNS4yIDEwLjA4LDUuNTlDOS41Niw2IDkuMyw2LjU3IDkuMzEsNy4zNkw5LjMyLDcuMzlIMTEuMjVDMTEuMjYsNy4wOSAxMS4zNSw2Ljg2IDExLjUzLDYuN0MxMS43MSw2LjU1IDExLjkzLDYuNDcgMTIuMTksNi40N0MxMi41LDYuNDcgMTIuNzYsNi41NyAxMi45NCw2Ljc1QzEzLjEyLDYuOTQgMTMuMiw3LjIgMTMuMiw3LjVDMTMuMiw3LjgyIDEzLjEzLDguMDkgMTIuOTcsOC4zMkMxMi44Myw4LjU1IDEyLjYyLDguNzUgMTIuMzYsOC45MUMxMS44NSw5LjI1IDExLjUsOS41NSAxMS4zMSw5LjgyQzExLjExLDEwLjA4IDExLDEwLjUgMTEsMTFIMTNDMTMsMTAuNjkgMTMuMDQsMTAuNDQgMTMuMTMsMTAuMjZDMTMuMjIsMTAuMDcgMTMuMzksOS45IDEzLjY0LDkuNzRDMTQuMDksOS41IDE0LjQ2LDkuMjEgMTQuNzUsOC44MUMxNS4wNCw4LjQxIDE1LjE5LDggMTUuMTksNy41QzE1LjE5LDYuNzQgMTQuOTIsNi4xMyAxNC4zOCw1LjY4QzEzLjg1LDUuMjMgMTMuMTIsNSAxMi4xOSw1TTExLDEyVjE0SDEzVjEySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlbHBOZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdNMTEuOTUsNkMxMS4xNyw2IDEwLjU1LDYuMTggMTAuMDcsNi41QzkuNjEsNi44OSA5LjM4LDcuNCA5LjM5LDguMUw5LjQsOC4xM0gxMS4xMUMxMS4xMiw3Ljg2IDExLjIsNy42NSAxMS4zNiw3LjVDMTEuNSw3LjM4IDExLjcyLDcuMzEgMTEuOTUsNy4zMUMxMi4yMiw3LjMxIDEyLjQ1LDcuNCAxMi42MSw3LjU2QzEyLjc3LDcuNzMgMTIuODUsNy45NiAxMi44NSw4LjIyQzEyLjg1LDguNSAxMi43OCw4Ljc1IDEyLjY0LDguOTVDMTIuNSw5LjE2IDEyLjMzLDkuMzMgMTIuMSw5LjVDMTEuNjUsOS43OCAxMS4zNCwxMC4wNSAxMS4xNywxMC4yOUMxMSwxMC41IDEwLjg5LDEwLjg5IDEwLjg5LDExLjMzSDEyLjY3QzEyLjY3LDExLjA2IDEyLjcsMTAuODQgMTIuNzgsMTAuNjhDMTIuODYsMTAuNSAxMywxMC4zNiAxMy4yNCwxMC4yMUMxMy42NCwxMCAxMy45Nyw5Ljc0IDE0LjIyLDkuMzlDMTQuNSw5LjAzIDE0LjYyLDguNjcgMTQuNjIsOC4yMkMxNC42Miw3LjU1IDE0LjM4LDcgMTMuOSw2LjYxQzEzLjQyLDYuMiAxMi43Nyw2IDExLjk1LDZNMTAuODksMTIuMjJWMTRIMTIuNjdWMTIuMjJIMTAuODlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVscFJob21idXMgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTIgNi45NUMxNC43IDcuMDYgMTUuODcgOS43OCAxNC4yOCAxMS44MUMxMy44NiAxMi4zMSAxMy4xOSAxMi42NCAxMi44NSAxMy4wN0MxMi41IDEzLjUgMTIuNSAxNCAxMi41IDE0LjVIMTFDMTEgMTMuNjUgMTEgMTIuOTQgMTEuMzUgMTIuNDRDMTEuNjggMTEuOTQgMTIuMzUgMTEuNjQgMTIuNzcgMTEuMzFDMTQgMTAuMTggMTMuNjggOC41OSAxMiA4LjQ2QzExLjE4IDguNDYgMTAuNSA5LjEzIDEwLjUgOS45N0g5QzkgOC4zIDEwLjM1IDYuOTUgMTIgNi45NU0xMSAxNS41SDEyLjVWMTdIMTFWMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWxwUmhvbWJ1c091dGxpbmUgPSBcIk0xMSAxNS41SDEyLjVWMTdIMTFWMTUuNU0xMiA2Ljk1QzE0LjcgNy4wNiAxNS44NyA5Ljc4IDE0LjI4IDExLjgxQzEzLjg2IDEyLjMxIDEzLjE5IDEyLjY0IDEyLjg1IDEzLjA3QzEyLjUgMTMuNSAxMi41IDE0IDEyLjUgMTQuNUgxMUMxMSAxMy42NSAxMSAxMi45NCAxMS4zNSAxMi40NEMxMS42OCAxMS45NCAxMi4zNSAxMS42NCAxMi43NyAxMS4zMUMxNCAxMC4xOCAxMy42OCA4LjU5IDEyIDguNDZDMTEuMTggOC40NiAxMC41IDkuMTMgMTAuNSA5Ljk3SDlDOSA4LjMgMTAuMzUgNi45NSAxMiA2Ljk1TTEyIDJDMTEuNSAyIDExIDIuMTkgMTAuNTkgMi41OUwyLjU5IDEwLjU5QzEuOCAxMS4zNyAxLjggMTIuNjMgMi41OSAxMy40MUwxMC41OSAyMS40MUMxMS4zNyAyMi4yIDEyLjYzIDIyLjIgMTMuNDEgMjEuNDFMMjEuNDEgMTMuNDFDMjIuMiAxMi42MyAyMi4yIDExLjM3IDIxLjQxIDEwLjU5TDEzLjQxIDIuNTlDMTMgMi4xOSAxMi41IDIgMTIgMk0xMiA0TDIwIDEyTDEyIDIwTDQgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWRlY2ltYWwgPSBcIk03IDdDNS45IDcgNSA3LjkgNSA5VjE1QzUgMTYuMTEgNS45IDE3IDcgMTdIOUMxMC4xMSAxNyAxMSAxNi4xMSAxMSAxNVY5QzExIDcuOSAxMC4xMSA3IDkgN0g3TTcgOUg5VjE1SDdWOU0xNy42IDE3TDE1LjUgMTQuOUwxMy40IDE3TDEyIDE1LjZMMTQuMSAxMy41TDEyIDExLjRMMTMuNCAxMEwxNS41IDEyLjFMMTcuNiAxMEwxOSAxMS40TDE2LjkgMTMuNUwxOSAxNS42TDE3LjYgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvbiA9IFwiTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhleGFnb25NdWx0aXBsZSA9IFwiTTEwLjI1LDJDMTAuNDQsMiAxMC42MSwyLjExIDEwLjY5LDIuMjZMMTIuOTEsNi4yMkwxMyw2LjVMMTIuOTEsNi43OEwxMC42OSwxMC43NEMxMC42MSwxMC44OSAxMC40NCwxMSAxMC4yNSwxMUg1Ljc1QzUuNTYsMTEgNS4zOSwxMC44OSA1LjMxLDEwLjc0TDMuMDksNi43OEwzLDYuNUwzLjA5LDYuMjJMNS4zMSwyLjI2QzUuMzksMi4xMSA1LjU2LDIgNS43NSwySDEwLjI1TTEwLjI1LDEzQzEwLjQ0LDEzIDEwLjYxLDEzLjExIDEwLjY5LDEzLjI2TDEyLjkxLDE3LjIyTDEzLDE3LjVMMTIuOTEsMTcuNzhMMTAuNjksMjEuNzRDMTAuNjEsMjEuODkgMTAuNDQsMjIgMTAuMjUsMjJINS43NUM1LjU2LDIyIDUuMzksMjEuODkgNS4zMSwyMS43NEwzLjA5LDE3Ljc4TDMsMTcuNUwzLjA5LDE3LjIyTDUuMzEsMTMuMjZDNS4zOSwxMy4xMSA1LjU2LDEzIDUuNzUsMTNIMTAuMjVNMTkuNSw3LjVDMTkuNjksNy41IDE5Ljg2LDcuNjEgMTkuOTQsNy43NkwyMi4xNiwxMS43MkwyMi4yNSwxMkwyMi4xNiwxMi4yOEwxOS45NCwxNi4yNEMxOS44NiwxNi4zOSAxOS42OSwxNi41IDE5LjUsMTYuNUgxNUMxNC44MSwxNi41IDE0LjY0LDE2LjM5IDE0LjU2LDE2LjI0TDEyLjM0LDEyLjI4TDEyLjI1LDEyTDEyLjM0LDExLjcyTDE0LjU2LDcuNzZDMTQuNjQsNy42MSAxNC44MSw3LjUgMTUsNy41SDE5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvbk11bHRpcGxlT3V0bGluZSA9IFwiTTkuMzcgNEwxMC43OCA2LjVMOS4zNyA5SDYuNjNMNS4yMyA2LjVMNi42MyA0SDkuMzdNMTAuMjUgMkg1Ljc1QzUuNTYgMiA1LjM5IDIuMTEgNS4zMSAyLjI2TDMuMDkgNi4yMkwzIDYuNUwzLjA5IDYuNzhMNS4zMSAxMC43NEM1LjM5IDEwLjg5IDUuNTYgMTEgNS43NSAxMUgxMC4yNUMxMC40NCAxMSAxMC42MSAxMC44OSAxMC42OSAxMC43NEwxMi45MSA2Ljc4TDEzIDYuNUwxMi45MSA2LjIyTDEwLjY5IDIuMjZDMTAuNjEgMi4xMSAxMC40NCAyIDEwLjI1IDJNMTguNjIgOS41TDIwIDEyTDE4LjYyIDE0LjVIMTUuODhMMTQuNSAxMkwxNS44OCA5LjVIMTguNjJNMTkuNSA3LjVIMTVDMTQuODEgNy41IDE0LjY0IDcuNjEgMTQuNTYgNy43NkwxMi4zNCAxMS43MkwxMi4yNSAxMkwxMi4zNCAxMi4yOEwxNC41NiAxNi4yNEMxNC42NCAxNi4zOSAxNC44MSAxNi41IDE1IDE2LjVIMTkuNUMxOS42OSAxNi41IDE5Ljg2IDE2LjM5IDE5Ljk0IDE2LjI0TDIyLjE2IDEyLjI4TDIyLjI1IDEyTDIyLjE2IDExLjcyTDE5Ljk0IDcuNzZDMTkuODYgNy42MSAxOS42OSA3LjUgMTkuNSA3LjVNOS4zNyAxNUwxMC43OCAxNy41TDkuMzcgMjBINi42M0w1LjIzIDE3LjVMNi42MyAxNUg5LjM3TTEwLjI1IDEzSDUuNzVDNS41NiAxMyA1LjM5IDEzLjExIDUuMzEgMTMuMjZMMy4wOSAxNy4yMkwzIDE3LjVMMy4wOSAxNy43OEw1LjMxIDIxLjc0QzUuMzkgMjEuODkgNS41NiAyMiA1Ljc1IDIySDEwLjI1QzEwLjQ0IDIyIDEwLjYxIDIxLjg5IDEwLjY5IDIxLjc0TDEyLjkxIDE3Ljc4TDEzIDE3LjVMMTIuOTEgMTcuMjJMMTAuNjkgMTMuMjZDMTAuNjEgMTMuMTEgMTAuNDQgMTMgMTAuMjUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvbk91dGxpbmUgPSBcIk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlMSA9IFwiTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTEyLDQuMTVMNSw4LjA5VjE1LjkxTDEyLDE5Ljg1TDE5LDE1LjkxVjguMDlMMTIsNC4xNU0xMiwxMlY1LjMyTDE3Ljk0LDguNjZMMTIsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlMiA9IFwiTTE4LDE1LjM4TDEyLDEyVjUuMzJMMTgsOC42OVYxNS4zOE0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlMyA9IFwiTTEyLDUuMzJMMTgsOC42OVYxNS4zMUwxMiwxOC42OFY1LjMyTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTEyLDQuMTVMNSw4LjA5VjE1LjkxTDEyLDE5Ljg1TDE5LDE1LjkxVjguMDlMMTIsNC4xNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZXhhZ29uU2xpY2U0ID0gXCJNMTIsNS4zMkwxOCw4LjY5VjE1LjMxTDEyLDE4LjY4TDYuMDYsMTUuMzRMMTIsMTJWNS4zMk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlNSA9IFwiTTEyLDUuMzJMMTgsOC42OVYxNS4zMUwxMiwxOC42OEw2LDE1LjMxVjguNjlMMTIsMTJWNS4zMk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlNiA9IFwiTTEyLDUuMzJMMTgsOC42OVYxNS4zMUwxMiwxOC42OEw2LDE1LjMxVjguNjlMMTIsNS4zMk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdyYW0gPSBcIk0xNC41LDcuNjZMMjAuNjQsNi45N0wxNywxMkwyMC42OCwxNi45N0wxNC41LDE2LjMyTDEyLjAzLDIyTDkuNSwxNi4zNEwzLjM2LDE3LjAzTDcsMTJMMy4zMiw3LjAzTDkuNSw3LjY4TDExLjk3LDJMMTQuNSw3LjY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhleGFncmFtT3V0bGluZSA9IFwiTTEyLDdMMTMuMyw5LjhMMTYuNSw5LjRMMTQuNSwxMkwxNi40LDE0LjVMMTMuMiwxNC4xTDEyLDE3TDEwLjcsMTQuMkw3LjUsMTQuNkw5LjUsMTJMNy42LDkuNUwxMC44LDkuOUwxMiw3TTEyLDJMOS41LDcuN0wzLjMsN0w3LDEyTDMuNCwxN0w5LjYsMTYuM0wxMiwyMkwxNC41LDE2LjNMMjAuNywxNi45TDE3LDEyTDIwLjYsN0wxNC40LDcuN0wxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhpZ2hEZWZpbml0aW9uID0gXCJNNSw3SDdWMTFIOVY3SDExVjE3SDlWMTNIN1YxN0g1VjdNMTMsN0gxNkEzLDMgMCAwLDEgMTksMTBWMTRBMywzIDAgMCwxIDE2LDE3SDEzVjdNMTYsMTVBMSwxIDAgMCwwIDE3LDE0VjEwQTEsMSAwIDAsMCAxNiw5SDE1VjE1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhpZ2hEZWZpbml0aW9uQm94ID0gXCJNMTksM0g1QzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTEsMTVIOS41VjEzSDcuNVYxNUg2VjlINy41VjExLjVIOS41VjlIMTFWMTVNMTMsOUgxN0ExLDEgMCAwLDEgMTgsMTBWMTRBMSwxIDAgMCwxIDE3LDE1SDEzVjlNMTQuNSwxMy41SDE2LjVWMTAuNUgxNC41VjEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGlnaHdheSA9IFwiTTEwLDJMOCw4SDExVjJIMTBNMTMsMlY4SDE2TDE0LDJIMTNNMiw5VjEwSDRWMTFINlYxMEgxOEwxOC4wNiwxMUgyMFYxMEgyMlY5SDJNNywxMUwzLjM0LDIySDExVjExSDdNMTMsMTFWMjJIMjAuNjZMMTcsMTFIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGlraW5nID0gXCJNOS44LDguOUw3LDIzSDkuMUwxMC45LDE1TDEzLDE3VjIzSDE1VjE1LjVMMTIuOSwxMy41TDEzLjUsMTAuNUMxNC42MywxMS44MSAxNi4yOSwxMi43MyAxOC4xNSwxMi45NUwxNiwyM0gxN0wyMCw5TDE5LjA0LDguOEwxOC41OCwxMUMxNi44NiwxMC44NSAxNS40NCw5Ljg5IDE0LjcsOC42TDEzLjcsN0MxMy41LDYuNjUgMTMuMiw2LjM3IDEyLjg0LDYuMkMxMi41LDYgMTIuMDgsNS45NiAxMS42OCw2QzExLjI4LDYuMDkgMTAuOTIsNi4yNyAxMC42Myw2LjU1QzEwLjM0LDYuODMgMTAuMTQsNy4xOSAxMC4wNiw3LjU4TDkuOCw4LjlNNy4wOCw2LjkyTDkuNCw3LjM4TDguNCwxMi40Nkw2LjA4LDEyTDcuMDgsNi45Mk0xMy41LDUuNUEyLDIgMCAwLDAgMTUuNSwzLjVBMiwyIDAgMCwwIDEzLjUsMS41QTIsMiAwIDAsMCAxMS41LDMuNUEyLDIgMCAwLDAgMTMuNSw1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGluZHVpc20gPSBcIk0xNSwyTDEzLjUsMy41TDE1LDVMMTYuNSwzLjVMMTUsMk0xMSwzQzEwLDkgMTcsMTAgMjAsNkwxOCw0LjVDMTcsNiAxMyw4IDExLDNNOSw3QzcsNyA0LjUsOC41IDQuNSw4LjVMNiwxMUM3LDEwIDksOS41IDEwLDEwQzEyLDExIDksMTMgNywxMlYxNS41QzEwLDE0IDEyLDE2IDExLDE3LjVDOCwyMiAzLDE2IDMsMTNDMSwxOSA2LDIyIDksMjJDMTIsMjIgMTQsMjAgMTIuNSwxNUgxNEMxMi41LDE5LjUgMTgsMjQgMjEsMThDMjIsMTYgMjIsOS41IDE3LDkuNUMxMyw5LjUgMTQsMTUgMTAuNSwxMy41QzE0LDEwIDEyLDcgOSw3TTE5LDEyQzIyLDE1IDE1LDIxIDE1LDE1QzE1LDEzIDE3LDEwLjUgMTksMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGlzdG9yeSA9IFwiTTEzLjUsOEgxMlYxM0wxNi4yOCwxNS41NEwxNywxNC4zM0wxMy41LDEyLjI1VjhNMTMsM0E5LDkgMCAwLDAgNCwxMkgxTDQuOTYsMTYuMDNMOSwxMkg2QTcsNyAwIDAsMSAxMyw1QTcsNyAwIDAsMSAyMCwxMkE3LDcgMCAwLDEgMTMsMTlDMTEuMDcsMTkgOS4zMiwxOC4yMSA4LjA2LDE2Ljk0TDYuNjQsMTguMzZDOC4yNywyMCAxMC41LDIxIDEzLDIxQTksOSAwIDAsMCAyMiwxMkE5LDkgMCAwLDAgMTMsM1wiO1xyXG5leHBvcnQgdmFyIG1kaUhvY2tleVB1Y2sgPSBcIk0xMiw1QzYuNSw1IDIsNi41NyAyLDguNUMyLDEwLjQzIDYuNSwxMiAxMiwxMkMxNy41LDEyIDIyLDEwLjQzIDIyLDguNUMyMiw2LjU3IDE3LjUsNSAxMiw1TTIsMTEuNzZWMTYuNUMyLDE4LjQzIDYuNSwyMCAxMiwyMEMxNy41LDIwIDIyLDE4LjQzIDIyLDE2LjVWMTEuNzZDMjEuMzMsMTIuMjIgMjAuNTgsMTIuNTcgMTkuNzMsMTIuODZDMTcuNjIsMTMuNiAxNC45NSwxNCAxMiwxNEM5LjA1LDE0IDYuMzgsMTMuNiA0LjI3LDEyLjg2QzMuNDIsMTIuNTcgMi42NywxMi4yMiAyLDExLjc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvY2tleVN0aWNrcyA9IFwiTTcuNTgsM0w1LjA1LDQuNjFMOS4wNCwxMC44N0wxMC44Miw4LjA4TDcuNTgsM00xNi40MywzTDcuNSwxN0gyVjIxSDguNUwxOC45Niw0LjYxTDE2LjQzLDNNMTQuOTcsMTQuNTlMMTMuMTksMTcuMzhMMTUuNSwyMUgyMlYxN0gxNi41TDE0Ljk3LDE0LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbG9sZW5zID0gXCJNMTIsOEMxMiw4IDIyLDggMjIsMTFDMjIsMTEgMjIuMDksMTQuMzYgMjEuNzUsMTQuMjVDMjEsMTEgMTIsMTEgMTIsMTFDMTIsMTEgMywxMSAyLjI1LDE0LjI1QzEuOTEsMTQuMzYgMiwxMSAyLDExQzIsOCAxMiw4IDEyLDhNMTIsMTJDMjAsMTIgMjAuNzUsMTQuMjUgMjAuNzUsMTQuMjVDMTkuNzUsMTcuMjUgMTksMTggMTUsMThDMTIsMTggMTMsMTYuNSAxMiwxNi41QzExLDE2LjUgMTIsMTggOSwxOEM1LDE4IDQuMjUsMTcuMjUgMy4yNSwxNC4yNUMzLjI1LDE0LjI1IDQsMTIgMTIsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZSA9IFwiTTEwLDIwVjE0SDE0VjIwSDE5VjEySDIyTDEyLDNMMiwxMkg1VjIwSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVBY2NvdW50ID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM00xMiw4Ljc1QTIuMjUsMi4yNSAwIDAsMSAxNC4yNSwxMUEyLjI1LDIuMjUgMCAwLDEgMTIsMTMuMjVBMi4yNSwyLjI1IDAgMCwxIDkuNzUsMTFBMi4yNSwyLjI1IDAgMCwxIDEyLDguNzVNMTIsMTVDMTMuNSwxNSAxNi41LDE1Ljc1IDE2LjUsMTcuMjVWMThINy41VjE3LjI1QzcuNSwxNS43NSAxMC41LDE1IDEyLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVBbGVydCA9IFwiTTEyIDNMMiAxMkg1VjIwSDE5VjEySDIyTDEyIDNNMTMgMThIMTFWMTZIMTNWMThNMTMgMTRIMTFWOEgxM1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lQWxlcnRPdXRsaW5lID0gXCJNMTIgNS43TDE3IDEwLjJWMThIN1YxMC4yTDEyIDUuN00xOSAyMFYxMkgyMkwxMiAzTDIgMTJINVYyME0xMyA4SDExVjEzSDEzVjhNMTMgMTVIMTFWMTdIMTNWMTVcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lQW5hbHl0aWNzID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJNOSwxOEg3VjEySDlNMTMsMThIMTFWMTBIMTNNMTcsMThIMTVWMTRIMTdcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lQXNzaXN0YW50ID0gXCJNMjEuOCwxM0gyMFYyMUgxM1YxNy42N0wxNS43OSwxNC44OEwxNi41LDE1QzE3LjY2LDE1IDE4LjYsMTQuMDYgMTguNiwxMi45QzE4LjYsMTEuNzQgMTcuNjYsMTAuOCAxNi41LDEwLjhBMi4xLDIuMSAwIDAsMCAxNC40LDEyLjlMMTQuNSwxMy42MUwxMywxNS4xM1Y5LjY1QzEzLjY2LDkuMjkgMTQuMSw4LjYgMTQuMSw3LjhBMi4xLDIuMSAwIDAsMCAxMiw1LjdBMi4xLDIuMSAwIDAsMCA5LjksNy44QzkuOSw4LjYgMTAuMzQsOS4yOSAxMSw5LjY1VjE1LjEzTDkuNSwxMy42MUw5LjYsMTIuOUEyLjEsMi4xIDAgMCwwIDcuNSwxMC44QTIuMSwyLjEgMCAwLDAgNS40LDEyLjlBMi4xLDIuMSAwIDAsMCA3LjUsMTVMOC4yMSwxNC44OEwxMSwxNy42N1YyMUg0VjEzSDIuMjVDMS44MywxMyAxLjQyLDEzIDEuNDIsMTIuNzlDMS40MywxMi41NyAxLjg1LDEyLjE1IDIuMjgsMTEuNzJMMTEsM0MxMS4zMywyLjY3IDExLjY3LDIuMzMgMTIsMi4zM0MxMi4zMywyLjMzIDEyLjY3LDIuNjcgMTMsM0wxNyw3VjZIMTlWOUwyMS43OCwxMS43OEMyMi4xOCwxMi4xOCAyMi41OSwxMi41OSAyMi42LDEyLjhDMjIuNiwxMyAyMi4yLDEzIDIxLjgsMTNNNy41LDEyQTAuOSwwLjkgMCAwLDEgOC40LDEyLjlBMC45LDAuOSAwIDAsMSA3LjUsMTMuOEEwLjksMC45IDAgMCwxIDYuNiwxMi45QTAuOSwwLjkgMCAwLDEgNy41LDEyTTE2LjUsMTJDMTcsMTIgMTcuNCwxMi40IDE3LjQsMTIuOUMxNy40LDEzLjQgMTcsMTMuOCAxNi41LDEzLjhBMC45LDAuOSAwIDAsMSAxNS42LDEyLjlBMC45LDAuOSAwIDAsMSAxNi41LDEyTTEyLDYuOUMxMi41LDYuOSAxMi45LDcuMyAxMi45LDcuOEMxMi45LDguMyAxMi41LDguNyAxMiw4LjdDMTEuNSw4LjcgMTEuMSw4LjMgMTEuMSw3LjhDMTEuMSw3LjMgMTEuNSw2LjkgMTIsNi45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVBdXRvbWF0aW9uID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM00xMiw4LjVDMTQuMzQsOC41IDE2LjQ2LDkuNDMgMTgsMTAuOTRMMTYuOCwxMi4xMkMxNS41OCwxMC45MSAxMy44OCwxMC4xNyAxMiwxMC4xN0MxMC4xMiwxMC4xNyA4LjQyLDEwLjkxIDcuMiwxMi4xMkw2LDEwLjk0QzcuNTQsOS40MyA5LjY2LDguNSAxMiw4LjVNMTIsMTEuODNDMTMuNCwxMS44MyAxNC42NywxMi4zOSAxNS42LDEzLjNMMTQuNCwxNC40N0MxMy43OSwxMy44NyAxMi45NCwxMy41IDEyLDEzLjVDMTEuMDYsMTMuNSAxMC4yMSwxMy44NyA5LjYsMTQuNDdMOC40LDEzLjNDOS4zMywxMi4zOSAxMC42LDExLjgzIDEyLDExLjgzTTEyLDE1LjE3QzEyLjk0LDE1LjE3IDEzLjcsMTUuOTEgMTMuNywxNi44M0MxMy43LDE3Ljc1IDEyLjk0LDE4LjUgMTIsMTguNUMxMS4wNiwxOC41IDEwLjMsMTcuNzUgMTAuMywxNi44M0MxMC4zLDE1LjkxIDExLjA2LDE1LjE3IDEyLDE1LjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVDaXJjbGUgPSBcIk0xOS4wNyw0LjkzQzE3LjIyLDMgMTQuNjYsMS45NiAxMiwyQzkuMzQsMS45NiA2Ljc5LDMgNC45NCw0LjkzQzMsNi43OCAxLjk2LDkuMzQgMiwxMkMxLjk2LDE0LjY2IDMsMTcuMjEgNC45MywxOS4wNkM2Ljc4LDIxIDkuMzQsMjIuMDQgMTIsMjJDMTQuNjYsMjIuMDQgMTcuMjEsMjEgMTkuMDYsMTkuMDdDMjEsMTcuMjIgMjIuMDQsMTQuNjYgMjIsMTJDMjIuMDQsOS4zNCAyMSw2Ljc4IDE5LjA3LDQuOTNNMTcsMTJWMThIMTMuNVYxM0gxMC41VjE4SDdWMTJINUwxMiw1TDE5LjUsMTJIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUNpcmNsZU91dGxpbmUgPSBcIk0xMiAyMEM3LjYgMjAgNCAxNi40IDQgMTJTNy42IDQgMTIgNCAyMCA3LjYgMjAgMTIgMTYuNCAyMCAxMiAyME0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNMTEgMTRIMTNWMTdIMTZWMTJIMThMMTIgN0w2IDEySDhWMTdIMTFWMTRcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lQ2l0eSA9IFwiTTAsMjFWMTBMNy41LDVMMTUsMTBWMjFIMTBWMTRINVYyMUgwTTI0LDJWMjFIMTdWOC45M0wxNiw4LjI3VjZIMTRWNi45M0wxMCw0LjI3VjJIMjRNMjEsMTRIMTlWMTZIMjFWMTRNMjEsMTBIMTlWMTJIMjFWMTBNMjEsNkgxOVY4SDIxVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUNpdHlPdXRsaW5lID0gXCJNMTAsMlY0LjI2TDEyLDUuNTlWNEgyMlYxOUgxN1YyMUgyNFYySDEwTTcuNSw1TDAsMTBWMjFIMTVWMTBMNy41LDVNMTQsNlY2LjkzTDE1LjYxLDhIMTZWNkgxNE0xOCw2VjhIMjBWNkgxOE03LjUsNy41TDEzLDExVjE5SDEwVjEzSDVWMTlIMlYxMUw3LjUsNy41TTE4LDEwVjEySDIwVjEwSDE4TTE4LDE0VjE2SDIwVjE0SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVDdXJyZW5jeVVzZCA9IFwiTTEyLDNMMjIsMTJIMTlWMjBINVYxMkgyTDEyLDNNOS4yMiw4LjkzQzguNzUsOS40IDguNSwxMC4wMyA4LjUsMTAuNzVDOC41LDEyLjQzIDEwLjU0LDEzLjA3IDExLjc2LDEzLjQ2QzEzLjI2LDEzLjkzIDEzLjQ3LDE0LjIxIDEzLjUsMTQuMjVDMTMuNSwxNSAxMi4xNSwxNSAxMiwxNVYxNUMxMS4zNywxNSAxMS4wMywxNC44OCAxMC44NiwxNC43OEMxMC42NywxNC42NyAxMC41LDE0LjUgMTAuNSwxNEg4LjVDOC41LDE1LjQzIDkuMjQsMTYuMTYgOS44NSwxNi41QzEwLjE4LDE2LjcgMTAuNTcsMTYuODQgMTEsMTYuOTJWMThIMTNWMTYuOTFDMTQuNTMsMTYuNjEgMTUuNSwxNS42MiAxNS41LDE0LjI1QzE1LjUsMTIuNjcgMTMuODgsMTIuMDMgMTIuMzYsMTEuNTVDMTAuOCwxMS4wNiAxMC41MywxMC43NyAxMC41LDEwLjc1QzEwLjUsMTAuNSAxMC41NywxMC40MSAxMC42NCwxMC4zNEMxMC44NSwxMC4xMyAxMS4zNiwxMCAxMiwxMFYxMEMxMi42OCwxMCAxMy41LDEwLjEzIDEzLjUsMTAuNzVIMTUuNUMxNS41LDkuMzQgMTQuNTYsOC4zNyAxMyw4LjA5VjdIMTFWOC4wOEMxMC4yNiw4LjIxIDkuNjUsOC41IDkuMjIsOC45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRWRpdCA9IFwiTTEyIDNMMiAxMkg1VjIwSDEwVjE0SDE0VjE1LjExTDE5LjQzIDkuNjhMMTIgM00yMS4wNCAxMS4xNEMyMC45IDExLjE0IDIwLjc2IDExLjIgMjAuNjUgMTEuM0wxOS42NSAxMi4zTDIxLjcgMTQuMzVMMjIuNyAxMy4zNUMyMi45MSAxMy4xNCAyMi45MSAxMi43OSAyMi43IDEyLjU4TDIxLjQyIDExLjNDMjEuMzIgMTEuMiAyMS4xOCAxMS4xNCAyMS4wNCAxMS4xNE0xOS4wNiAxMi44OEwxMyAxOC45NFYyMUgxNS4wNkwyMS4xMSAxNC45M0wxOS4wNiAxMi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRWRpdE91dGxpbmUgPSBcIk0xMiAzTDIgMTJINVYyMEgxMVYxNEgxM1YxNi4xMUwxNSAxNC4xMVYxMkg5VjE4SDdWMTAuMTlMMTIgNS42OUwxNyAxMC4xOVYxMi4xMUwxOS40MyA5LjY4TDEyIDNNMjEuMDQgMTEuMTRDMjAuOSAxMS4xNCAyMC43NiAxMS4yIDIwLjY1IDExLjNMMTkuNjUgMTIuM0wyMS43IDE0LjM1TDIyLjcgMTMuMzVDMjIuOTEgMTMuMTQgMjIuOTEgMTIuNzkgMjIuNyAxMi41OEwyMS40MiAxMS4zQzIxLjMyIDExLjIgMjEuMTggMTEuMTQgMjEuMDQgMTEuMTRNMTkuMDYgMTIuODhMMTMgMTguOTRWMjFIMTUuMDZMMjEuMTEgMTQuOTNMMTkuMDYgMTIuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUV4cG9ydE91dGxpbmUgPSBcIk0yNCAxM0wyMCA5VjEySDExVjE0SDIwVjE3TTE4IDE2VjIxSDJWMTJIMEwxMCAyTDE4IDEwSDE1TDEwIDVMNCAxMVYxOUgxNlYxNkgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRmxvb2QgPSBcIk01LDExSDJMMTIsMkwyMiwxMUgxOVYxNS45MkMxNy45NSwxNS43NSAxNi45MywxNS4zMiAxNiwxNC42N0MxNS4zNywxNS4xMSAxNC43LDE1LjQzIDE0LDE1LjY1VjEzSDEwVjE1LjY1QzkuMywxNS40MyA4LjYzLDE1LjExIDgsMTQuNjdDNy4wNywxNS4zMiA2LjA1LDE1Ljc1IDUsMTUuOTJNMjAsMThDMTguNjEsMTggMTcuMjIsMTcuNTMgMTYsMTYuNjdDMTMuNTYsMTguMzggMTAuNDQsMTguMzggOCwxNi42N0M2Ljc4LDE3LjUzIDUuMzksMTggNCwxOEgyVjIySDIyVjE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUZsb29yMCA9IFwiTTExLDEwSDEzVjE2SDExVjEwTTIyLDEySDE5VjIwSDVWMTJIMkwxMiwzTDIyLDEyTTE1LDEwQTIsMiAwIDAsMCAxMyw4SDExQTIsMiAwIDAsMCA5LDEwVjE2QTIsMiAwIDAsMCAxMSwxOEgxM0EyLDIgMCAwLDAgMTUsMTZWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUZsb29yMSA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTAsOEgxNFYxOEgxMlYxMEgxMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVGbG9vcjIgPSBcIk0xMiwzTDIsMTJINVYyMEgxOVYxMkgyMkwxMiwzTTksOEgxM0EyLDIgMCAwLDEgMTUsMTBWMTJBMiwyIDAgMCwxIDEzLDE0SDExVjE2SDE1VjE4SDlWMTRBMiwyIDAgMCwxIDExLDEySDEzVjEwSDlWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRmxvb3IzID0gXCJNMTIsM0wyMiwxMkgxOVYyMEg1VjEySDJMMTIsM00xNSwxMS41VjEwQzE1LDguODkgMTQuMSw4IDEzLDhIOVYxMEgxM1YxMkgxMVYxNEgxM1YxNkg5VjE4SDEzQTIsMiAwIDAsMCAxNSwxNlYxNC41QTEuNSwxLjUgMCAwLDAgMTMuNSwxM0ExLjUsMS41IDAgMCwwIDE1LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUZsb29yQSA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTEsOEgxM0EyLDIgMCAwLDEgMTUsMTBWMThIMTNWMTVIMTFWMThIOVYxMEM5LDguODkgOS45LDggMTEsOE0xMSwxMFYxM0gxM1YxMEgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRmxvb3JCID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM005LDhIMTNBMiwyIDAgMCwxIDE1LDEwVjExLjVBMS41LDEuNSAwIDAsMSAxMy41LDEzQTEuNSwxLjUgMCAwLDEgMTUsMTQuNVYxNkEyLDIgMCAwLDEgMTMsMThIOVY4TTExLDEwVjEySDEzVjEwSDExTTExLDE0VjE2SDEzVjE0SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVGbG9vckcgPSBcIk0xMiwzTDIsMTJINVYyMEgxOVYxMkgyMkwxMiwzTTExLDhIMTVWMTBIMTFWMTZIMTNWMTJIMTVWMTZDMTUsMTcuMTEgMTQuMSwxOCAxMywxOEgxMUEyLDIgMCAwLDEgOSwxNlYxMEM5LDguODkgOS45LDggMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRmxvb3JMID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM005LDhIMTFWMTZIMTVWMThIOVY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVGbG9vck5lZ2F0aXZlMSA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTEsMTVIN1YxM0gxMVYxNU0xNSwxOEgxM1YxMEgxMVY4SDE1VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVHcm91cCA9IFwiTTE3LDE2SDE1VjIySDEyVjE3SDhWMjJINVYxNkgzTDEwLDEwTDE3LDE2TTYsMkwxMCw2SDlWOUg3VjZINVY5SDNWNkgyTDYsMk0xOCwzTDIzLDhIMjJWMTJIMTlWOUgxN1YxMkgxNS4zNEwxNCwxMC44N1Y4SDEzTDE4LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUhlYXJ0ID0gXCJNMiwxMkwxMiwzTDIyLDEySDE5VjIwSDVWMTJIMk0xMiwxOEwxMi43MiwxNy4zNEMxNS4zLDE1IDE3LDEzLjQ2IDE3LDExLjU3QzE3LDEwLjAzIDE1Ljc5LDguODIgMTQuMjUsOC44MkMxMy4zOCw4LjgyIDEyLjU1LDkuMjMgMTIsOS44N0MxMS40NSw5LjIzIDEwLjYyLDguODIgOS43NSw4LjgyQzguMjEsOC44MiA3LDEwLjAzIDcsMTEuNTdDNywxMy40NiA4LjcsMTUgMTEuMjgsMTcuMzRMMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUltcG9ydE91dGxpbmUgPSBcIk0xNSAxM0wxMSA5VjEySDJWMTRIMTFWMTdNMjIgMTJIMjBWMjFINFYxNkg2VjE5SDE4VjExTDEyIDVMNyAxMEg0TDEyIDJMMjIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUxpZ2h0YnVsYiA9IFwiTTEyIDNMMiAxMkg1VjIwSDE5VjEySDIyTTEzIDE4SDExVjE3SDEzTTEzLjUgMTQuNThWMTZIMTAuNVYxNC41OEEzIDMgMCAxIDEgMTMuNSAxNC41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lTGlnaHRidWxiT3V0bGluZSA9IFwiTTEyIDJMMiAxMkg0VjIxSDIwVjEySDIyTTEyIDVMMTggMTFWMTlINlYxMU0xMy41IDE0LjU4VjE2SDEwLjVWMTQuNThDOS4wNyAxMy43NSA4LjU3IDExLjkyIDkuNCAxMC41QzEwLjIzIDkuMDUgMTIuMDcgOC41NiAxMy41IDkuMzhTMTUuNDMgMTIuMDUgMTQuNiAxMy41QzE0LjM0IDEzLjk0IDEzLjk2IDE0LjMyIDEzLjUgMTQuNThNMTMgMTdIMTFWMThIMTNWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUxvY2sgPSBcIk0xMiwzTDIsMTJINVYyMEgxOVYxMkgyMkwxMiwzTTEyLDlBMywzIDAgMCwxIDE1LDEyVjEzSDE2VjE3SDhWMTNIOVYxMkEzLDMgMCAwLDEgMTIsOU0xMiwxMUExLDEgMCAwLDAgMTEsMTJWMTNIMTNWMTJDMTMsMTEuNSAxMi42LDExIDEyLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVMb2NrT3BlbiA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTIsOEEzLDMgMCAwLDEgMTUsMTFIMTNBMSwxIDAgMCwwIDEyLDEwQTEsMSAwIDAsMCAxMSwxMVYxM0gxNlYxN0g4VjEzSDlWMTFBMywzIDAgMCwxIDEyLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZU1hcE1hcmtlciA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTIsNy43QzE0LjEsNy43IDE1LjgsOS40IDE1LjgsMTEuNUMxNS44LDE0LjUgMTIsMTggMTIsMThDMTIsMTggOC4yLDE0LjUgOC4yLDExLjVDOC4yLDkuNCA5LjksNy43IDEyLDcuN00xMiwxMEExLjUsMS41IDAgMCwwIDEwLjUsMTEuNUExLjUsMS41IDAgMCwwIDEyLDEzQTEuNSwxLjUgMCAwLDAgMTMuNSwxMS41QTEuNSwxLjUgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZU1pbnVzID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM00xNiwxM1YxNUg4VjEzSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVNaW51c091dGxpbmUgPSBcIk0xMiAyTDIgMTJINFYyMUgyMFYxMkgyMk0xMiA1TDE4IDExVjE5SDZWMTFNMTYgMTNWMTVIOFYxM0gxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lTW9kZXJuID0gXCJNNiwyMVY4QTIsMiAwIDAsMSA4LDZMMTYsM1Y2QTIsMiAwIDAsMSAxOCw4VjIxSDEyVjE2SDhWMjFINk0xNCwxOUgxNlYxNkgxNFYxOU04LDEzSDEwVjlIOFYxM00xMiwxM0gxNlY5SDEyVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVPdXRsaW5lID0gXCJNMTIgNS42OUwxNyAxMC4xOVYxOEgxNVYxMkg5VjE4SDdWMTAuMTlMMTIgNS42OU0xMiAzTDIgMTJINVYyMEgxMVYxNEgxM1YyMEgxOVYxMkgyMkwxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVQbHVzID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM00xMSwxMEgxM1YxM0gxNlYxNUgxM1YxOEgxMVYxNUg4VjEzSDExVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVQbHVzT3V0bGluZSA9IFwiTTEyIDJMMiAxMkg0VjIxSDIwVjEySDIyTTEyIDVMMTggMTFWMTlINlYxMU0xMSAxMEgxM1YxM0gxNlYxNUgxM1YxOEgxMVYxNUg4VjEzSDExVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVSZW1vdmUgPSBcIk0xMiAzTDIgMTJINVYyMEgxOVYxMkgyMkwxMiAzTTE1LjU0IDE2LjEyTDE0LjEyIDE3LjU0TDEyIDE1LjQxTDkuODggMTcuNTRMOC40NyAxNi4xMkwxMC41OSAxNEw4LjQ3IDExLjg4TDkuODggMTAuNDdMMTIgMTIuNTlMMTQuMTIgMTAuNDdMMTUuNTQgMTEuODhMMTMuNDEgMTRMMTUuNTQgMTYuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZVJlbW92ZU91dGxpbmUgPSBcIk0xMiAyTDIgMTJINFYyMUgyMFYxMkgyMk0xMiA1TDE4IDExVjE5SDZWMTFNMTQuMTIgMTAuNDZMMTUuNTQgMTEuODhMMTMuNDEgMTRMMTUuNTQgMTYuMTJMMTQuMTIgMTcuNTRMMTIgMTUuNDFMOS44OCAxNy41NEw4LjQ3IDE2LjEyTDEwLjU5IDE0TDguNDcgMTEuODhMOS44OCAxMC40N0wxMiAxMi41OUwxNC4xMiAxMC40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lUm9vZiA9IFwiTTE5IDE2SDIyTDEyIDdMMiAxNkg1TDEyIDkuNjlMMTkgMTZNNyA4LjgxVjdINFYxMS41TDcgOC44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lU2VhcmNoID0gXCJNMTkuMzEgMTguOUMxOS43NSAxOC4yMSAyMCAxNy4zOCAyMCAxNi41QzIwIDE0IDE4IDEyIDE1LjUgMTJTMTEgMTQgMTEgMTYuNSAxMyAyMSAxNS41IDIxQzE2LjM3IDIxIDE3LjE5IDIwLjc1IDE3Ljg4IDIwLjMyTDIxIDIzLjM5TDIyLjM5IDIyTDE5LjMxIDE4LjlNMTUuNSAxOUMxNC4xMiAxOSAxMyAxNy44OCAxMyAxNi41UzE0LjEyIDE0IDE1LjUgMTQgMTggMTUuMTIgMTggMTYuNSAxNi44OCAxOSAxNS41IDE5TTUgMjBWMTJIMkwxMiAzTDIyIDEySDIwLjE4QzE5IDEwLjc3IDE3LjM0IDEwIDE1LjUgMTBDMTEuOTIgMTAgOSAxMi45MiA5IDE2LjVDOSAxNy43OSA5LjM4IDE5IDEwLjAzIDIwSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZVNlYXJjaE91dGxpbmUgPSBcIk0xOS4zMSAxOC45QzE5Ljc1IDE4LjIxIDIwIDE3LjM4IDIwIDE2LjVDMjAgMTQgMTggMTIgMTUuNSAxMlMxMSAxNCAxMSAxNi41IDEzIDIxIDE1LjUgMjFDMTYuMzcgMjEgMTcuMTkgMjAuNzUgMTcuODggMjAuMzJMMjEgMjMuMzlMMjIuMzkgMjJMMTkuMzEgMTguOU0xNS41IDE5QzE0LjEyIDE5IDEzIDE3Ljg4IDEzIDE2LjVTMTQuMTIgMTQgMTUuNSAxNCAxOCAxNS4xMiAxOCAxNi41IDE2Ljg4IDE5IDE1LjUgMTlNNSAyMFYxMkgyTDEyIDNMMjIgMTJIMjAuMThDMTkuMzMgMTEuMTEgMTguMjMgMTAuNDcgMTcgMTAuMThMMTIgNS42OUw3IDEwLjE5VjE4SDkuMThDOS4zNSAxOC43MiA5LjY0IDE5LjM5IDEwLjAzIDIwSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZVRoZXJtb21ldGVyID0gXCJNMTIgM0wyIDEySDVWMjBIMTlWMTJIMjJMMTIgM00xMiA4QTEgMSAwIDAgMSAxMyA5VjE0LjI3QTIgMiAwIDAgMSAxNCAxNkEyIDIgMCAwIDEgMTIgMThBMiAyIDAgMCAxIDEwIDE2QTIgMiAwIDAgMSAxMSAxNC4yN1Y5QTEgMSAwIDAgMSAxMiA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVUaGVybW9tZXRlck91dGxpbmUgPSBcIk0xMiAyTDIgMTJINFYyMUgyMFYxMkgyMk0xMiA1TDE4IDExVjE5SDZWMTFNMTIgOEMxMS40NSA4IDExIDguNDUgMTEgOVYxMy4yN0MxMC4zOCAxMy42MyAxMCAxNC4yOSAxMCAxNUMxMCAxNi4xMSAxMC45IDE3IDEyIDE3UzE0IDE2LjExIDE0IDE1QzE0IDE0LjI5IDEzLjYyIDEzLjYzIDEzIDEzLjI3VjlDMTMgOC40NSAxMi41NSA4IDEyIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZVZhcmlhbnQgPSBcIk0xMiwzTDIwLDlWMjFIMTVWMTRIOVYyMUg0VjlMMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lVmFyaWFudE91dGxpbmUgPSBcIk05LDEzSDE1VjE5SDE4VjEwTDEyLDUuNUw2LDEwVjE5SDlWMTNNNCwyMVY5TDEyLDNMMjAsOVYyMUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvb2sgPSBcIk0xOCw2QzE4LDcuODIgMTYuNzYsOS40MSAxNSw5Ljg2VjE3QTUsNSAwIDAsMSAxMCwyMkE1LDUgMCAwLDEgNSwxN1YxMkwxMCwxN0g3QTMsMyAwIDAsMCAxMCwyMEEzLDMgMCAwLDAgMTMsMTdWOS44NkMxMS4yMyw5LjQgMTAsNy44IDEwLDUuOTdDMTAsMy43NiAxMS44LDIgMTQsMkMxNi4yMiwyIDE4LDMuNzkgMTgsNk0xNCw4QTIsMiAwIDAsMCAxNiw2QTIsMiAwIDAsMCAxNCw0QTIsMiAwIDAsMCAxMiw2QTIsMiAwIDAsMCAxNCw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvb2tPZmYgPSBcIk0xMyw5Ljg2VjExLjE4TDE1LDEzLjE4VjkuODZDMTcuMTQsOS4zMSAxOC40Myw3LjEzIDE3Ljg3LDVDMTcuMzIsMi44NSAxNS4xNCwxLjU2IDEzLDIuMTFDMTAuODYsMi42NyA5LjU3LDQuODUgMTAuMTMsN0MxMC41LDguNCAxMS41OSw5LjUgMTMsOS44Nk0xNCw0QTIsMiAwIDAsMSAxNiw2QTIsMiAwIDAsMSAxNCw4QTIsMiAwIDAsMSAxMiw2QTIsMiAwIDAsMSAxNCw0TTE4LjczLDIyTDE0Ljg2LDE4LjEzQzE0LjIxLDIwLjgxIDExLjUsMjIuNDYgOC44MywyMS44MkM2LjYsMjEuMjggNSwxOS4yOSA1LDE3VjEyTDEwLDE3SDdBMywzIDAgMCwwIDEwLDIwQTMsMyAwIDAsMCAxMywxN1YxNi4yN0wyLDUuMjdMMy4yOCw0TDEzLDEzLjcyTDE1LDE1LjcyTDIwLDIwLjcyTDE4LjczLDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvcHMgPSBcIk0yMSwxMkMyMSwxMiAxMi41LDEwIDEyLjUsMkMxMi41LDIgMjEsMiAyMSwxMk0zLDEyQzMsMiAxMS41LDIgMTEuNSwyQzExLjUsMTAgMywxMiAzLDEyTTEyLDYuNUMxMiw2LjUgMTMsOC42NiAxNSwxMC41QzE0Ljc2LDE0LjE2IDEyLDE2IDEyLDE2QzEyLDE2IDkuMjQsMTQuMTYgOSwxMC41QzExLDguNjYgMTIsNi41IDEyLDYuNU0yMC43NSwxMy4yNUMyMC43NSwxMy4yNSAyMCwxNyAxOCwxOUMxOCwxOSAxNS41MywxNy4zNiAxNC4zMywxNC44MUMxNS4wNSwxMy41OCAxNS41LDEyLjEyIDE1Ljc1LDExLjEzQzE3LjEzLDEyLjE4IDE4Ljc1LDEzIDIwLjc1LDEzLjI1TTE1LjUsMTguMjVDMTQuNSwyMC4yNSAxMiwyMS43NSAxMiwyMS43NUMxMiwyMS43NSA5LjUsMjAuMjUgOC41LDE4LjI1QzguNSwxOC4yNSA5LjU5LDE3LjM0IDEwLjM1LDE1LjhDMTAuODIsMTYuMzUgMTEuMzYsMTYuNzkgMTIsMTdDMTIuNjQsMTYuNzkgMTMuMTgsMTYuMzUgMTMuNjUsMTUuOEMxNC40MSwxNy4zNCAxNS41LDE4LjI1IDE1LjUsMTguMjVNMy4yNSwxMy4yNUM1LjI1LDEzIDYuODcsMTIuMTggOC4yNSwxMS4xM0M4LjUsMTIuMTIgOC45NSwxMy41OCA5LjY3LDE0LjgxQzguNDcsMTcuMzYgNiwxOSA2LDE5QzQsMTcgMy4yNSwxMy4yNSAzLjI1LDEzLjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvcml6b250YWxSb3RhdGVDbG9ja3dpc2UgPSBcIk0xMiAxNEw4IDEwTDQgMTRINy4xQzcuNTYgMTguNTYgOS41OCAyMiAxMiAyMlMxNi40NCAxOC41NiAxNi45IDE0SDE0LjkxQzE0LjU3IDE3LjQ1IDEzLjQgMjAgMTIgMjBTOS40MyAxNy40NSA5LjA5IDE0SDEyTTEyIDRDMTMuNCA0IDE0LjU3IDYuNTUgMTQuOTEgMTBIMTYuOUMxNi40NCA1LjQ0IDE0LjQyIDIgMTIgMkM5Ljg0IDIgOCA0Ljc0IDcuMyA4LjU4TDggNy44OEw5LjIxIDkuMDhDOS42NCA2LjExIDEwLjczIDQgMTIgNE0yMiAxM1YxMUgxMUwxMyAxM0gyMk0yIDEzSDNMNSAxMUgyVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvcml6b250YWxSb3RhdGVDb3VudGVyY2xvY2t3aXNlID0gXCJNMTIgMTBIOS4wOUM5LjQzIDYuNTUgMTAuNiA0IDEyIDRTMTQuNTcgNi41NSAxNC45MSAxMEgxNi45QzE2LjQ0IDUuNDQgMTQuNDIgMiAxMiAyUzcuNTYgNS40NCA3LjEgMTBINEw4IDE0TDEyIDEwTTEyIDIwQzEwLjczIDIwIDkuNjQgMTcuODkgOS4yMSAxNC45Mkw4IDE2LjEyTDcuMyAxNS40MkM4IDE5LjI2IDkuODQgMjIgMTIgMjJDMTQuNDIgMjIgMTYuNDQgMTguNTYgMTYuOSAxNEgxNC45MUMxNC41NyAxNy40NSAxMy40IDIwIDEyIDIwTTIyIDExSDEzTDExIDEzSDIyVjExTTIgMTNINUwzIDExSDJWMTNcIjtcclxuZXhwb3J0IHZhciBtZGlIb3JzZSA9IFwiTTIyIDZWOS41TDIwLjUgMTBMMTguOTYgNy41NEMxOC44MyA3LjMzIDE4LjUgNy40MiAxOC41IDcuNjdWMTEuMjVDMTguNSAxMi4yMyAxOC4xMSAxMy4xMSAxNy41IDEzLjc4VjIxSDE1VjE1QzE0LjkyIDE1IDE0Ljg0IDE1IDE0Ljc1IDE1QzE0LjU0IDE1IDE0LjMzIDE0Ljk3IDE0LjEzIDE0Ljk0TDkuNjkgMTQuMkw4LjU3IDE2LjIxTDkuNTMgMjFIN0w2IDE2LjI1QzUuOTcgMTUuOTUgNiAxNS42NSA2LjE2IDE1LjM5TDcuMTggMTMuNThDNi4yIDEzLjAzIDUuNTMgMTIgNS41IDEwLjgxQzUuNDYgMTAuOTYgNS40NCAxMS4xOCA1LjQ3IDExLjVDNS41IDExLjk0IDUuNjEgMTIuNTkgNS41NCAxMy4zMUM1LjUgMTQuMDMgNS4xNyAxNC43NyA0Ljc1IDE1LjI2QzQuMzIgMTUuNzUgMy44NSAxNi4wOSAzLjM1IDE2LjM1TDIuNjUgMTUuNjVDMi44NCAxNS4xOCAzLjAzIDE0Ljc2IDMuMDcgMTQuMzdDMy4xMyAxNCAzLjA2IDEzLjcgMi45NSAxMy40M0wyLjQyIDEyLjNDMi4yMSAxMS43OSAxLjk1IDExLjA1IDIgMTAuMThDMi4wMyA5LjMzIDIuNSA4LjIyIDMuMzkgNy42MUM0LjI5IDcgNS4yNiA2LjkyIDYuMDUgNy4wOEM2LjU1IDcuMTggNy4wNiA3LjQyIDcuNSA3Ljc2QzcuODcgNy41OSA4LjMgNy41IDguNzUgNy41SDE0LjVWN0MxNC41IDQuNzkgMTYuMjkgMyAxOC41IDNIMjJMMjEuMTEgNC4zNEMyMS42NSA0LjcgMjIgNS4zMSAyMiA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvcnNlSHVtYW4gPSBcIk0xMCAzLjVDMTAgMi42NyAxMC42NyAyIDExLjUgMlMxMyAyLjY3IDEzIDMuNSAxMi4zMyA1IDExLjUgNSAxMCA0LjMzIDEwIDMuNU0yMiA4VjExLjVMMjAuOTcgMTEuODVDMjAuOCAxMy4wNiAxOS43NiAxNCAxOC41IDE0SDE4LjQyQzE4LjI4IDE0LjY4IDE3Ljk1IDE1LjI5IDE3LjUgMTUuNzhWMjJIMTVWMTdDMTQuOTIgMTcgMTQuODQgMTcgMTQuNzUgMTdDMTQuNTQgMTcgMTQuMzMgMTYuOTcgMTQuMTMgMTYuOTRMOS42OSAxNi4yTDguNTcgMTguMjFMOS4zMiAyMkg2Ljc4TDYgMTguMjVDNS45NyAxNy45NSA2IDE3LjY1IDYuMTYgMTcuMzlMNy4xOCAxNS41OEM2LjIgMTUuMDMgNS41MyAxNCA1LjUgMTIuODFDNS40NiAxMi45NiA1LjQ0IDEzLjE4IDUuNDcgMTMuNUM1LjUgMTMuOTQgNS42MSAxNC41OSA1LjU0IDE1LjMxQzUuNSAxNi4wMyA1LjE3IDE2Ljc3IDQuNzUgMTcuMjZDNC4zMiAxNy43NSAzLjg1IDE4LjA5IDMuMzUgMTguMzVMMi42NSAxNy42NUMyLjg0IDE3LjE4IDMuMDMgMTYuNzYgMy4wNyAxNi4zN0MzLjEzIDE2IDMuMDYgMTUuNyAyLjk1IDE1LjQzTDIuNDIgMTQuM0MyLjIxIDEzLjc5IDEuOTUgMTMuMDUgMiAxMi4xOEMyLjAzIDExLjMzIDIuNSAxMC4yMiAzLjM5IDkuNjFDNC4yOSA5IDUuMjYgOC45MSA2LjA1IDkuMDhDNi41NSA5LjE4IDcuMDYgOS40MiA3LjUgOS43NkM3Ljg3IDkuNTkgOC4zIDkuNSA4Ljc1IDkuNUg5VjguMTFDOSA3LjExIDkuNjggNi4xOSAxMC42NiA2LjAzQzExLjkyIDUuODIgMTMgNi43OSAxMyA4VjkuNUgxNC41VjlDMTQuNSA2Ljc5IDE2LjI5IDUgMTguNSA1SDIyTDIxLjExIDYuMzRDMjEuNjUgNi43IDIyIDcuMzEgMjIgOE0yMCAxMS4yTDE4Ljk2IDkuNTRDMTguODMgOS4zMyAxOC41IDkuNDIgMTguNSA5LjY3VjEzQzE5LjMzIDEzIDIwIDEyLjMzIDIwIDExLjVWMTEuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIb3JzZVZhcmlhbnQgPSBcIk0yMCA4VjE2TDE3IDE3TDEzLjkxIDExLjVDMTMuNjUgMTEuMDQgMTIuOTIgMTEuMjcgMTMgMTEuODFMMTQgMjFMNCAxN0w1LjE1IDguOTRDNS42NCA1LjUzIDguNTYgMyAxMiAzSDIwTDE4LjQyIDUuMzdDMTkuMzYgNS44OCAyMCA2Ljg2IDIwIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9yc2VzaG9lID0gXCJNMTksNEgyMFYxSDE2VjRDMTYsNCAxOCw4IDE4LDEyQzE4LDE2IDE2LDE5IDEyLDE5QzgsMTkgNiwxNiA2LDEyQzYsOCA4LDQgOCw0VjFINFY0SDVDNSw0IDIsOCAyLDE0QzIsMTkgNywyMyAxMiwyM0MxNywyMyAyMiwxOSAyMiwxNEMyMiw4IDE5LDQgMTksNE00LDEzQzMuNCwxMyAzLDEyLjYgMywxMkMzLDExLjQgMy40LDExIDQsMTFDNC42LDExIDUsMTEuNCA1LDEyQzUsMTIuNiA0LjYsMTMgNCwxM002LDE5QzUuNCwxOSA1LDE4LjYgNSwxOEM1LDE3LjQgNS40LDE3IDYsMTdDNi42LDE3IDcsMTcuNCA3LDE4QzcsMTguNiA2LjYsMTkgNiwxOU0xMiwyMkMxMS40LDIyIDExLDIxLjYgMTEsMjFDMTEsMjAuNCAxMS40LDIwIDEyLDIwQzEyLjYsMjAgMTMsMjAuNCAxMywyMUMxMywyMS42IDEyLjYsMjIgMTIsMjJNMTgsMTlDMTcuNCwxOSAxNywxOC42IDE3LDE4QzE3LDE3LjQgMTcuNCwxNyAxOCwxN0MxOC42LDE3IDE5LDE3LjQgMTksMThDMTksMTguNiAxOC42LDE5IDE4LDE5TTIwLDEzQzE5LjQsMTMgMTksMTIuNiAxOSwxMkMxOSwxMS40IDE5LjQsMTEgMjAsMTFDMjAuNiwxMSAyMSwxMS40IDIxLDEyQzIxLDEyLjYgMjAuNiwxMyAyMCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIb3NwaXRhbCA9IFwiTTE4IDE0SDE0VjE4SDEwVjE0SDZWMTBIMTBWNkgxNFYxMEgxOFwiO1xyXG5leHBvcnQgdmFyIG1kaUhvc3BpdGFsQm94ID0gXCJNMTgsMTRIMTRWMThIMTBWMTRINlYxMEgxMFY2SDE0VjEwSDE4TTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvc3BpdGFsQm94T3V0bGluZSA9IFwiTTE4IDE0SDE0VjE4SDEwVjE0SDZWMTBIMTBWNkgxNFYxMEgxOE0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgyMEMyMS4xIDIyIDIyIDIxLjEgMjIgMjBWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMjAgMjBINFY0SDIwVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvc3BpdGFsQnVpbGRpbmcgPSBcIk0yLDIyVjdBMSwxIDAgMCwxIDMsNkg3VjJIMTdWNkgyMUExLDEgMCAwLDEgMjIsN1YyMkgxNFYxN0gxMFYyMkgyTTksNFYxMEgxMVY4SDEzVjEwSDE1VjRIMTNWNkgxMVY0SDlNNCwyMEg4VjE3SDRWMjBNNCwxNUg4VjEySDRWMTVNMTYsMjBIMjBWMTdIMTZWMjBNMTYsMTVIMjBWMTJIMTZWMTVNMTAsMTVIMTRWMTJIMTBWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9zcGl0YWxNYXJrZXIgPSBcIk0xMiwyQzE1Ljg2LDIgMTksNS4xMyAxOSw5QzE5LDE0LjI1IDEyLDIyIDEyLDIyQzEyLDIyIDUsMTQuMjUgNSw5QTcsNyAwIDAsMSAxMiwyTTksNlYxMkgxMVYxMEgxM1YxMkgxNVY2SDEzVjhIMTFWNkg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvdFR1YiA9IFwiTTcsNEEyLDIgMCAwLDEgOSw2QTIsMiAwIDAsMSA3LDhBMiwyIDAgMCwxIDUsNkEyLDIgMCAwLDEgNyw0TTExLjE1LDEySDIyVjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjEySDVWMTEuMjVDNSwxMCA2LDkgNy4yNSw5SDcuMjhDNy42Miw5IDcuOTUsOS4wOSA4LjI0LDkuMjNDOC41LDkuMzUgOC43NCw5LjUgOC45Myw5LjczTDEwLjMzLDExLjI4QzEwLjU2LDExLjU0IDEwLjg0LDExLjc4IDExLjE1LDEyTTcsMjBWMTRINVYyMEg3TTExLDIwVjE0SDlWMjBIMTFNMTUsMjBWMTRIMTNWMjBIMTVNMTksMjBWMTRIMTdWMjBIMTlNMTguNjUsNS44NkMxOS42OCw2Ljg2IDIwLjE2LDguMjEgMTkuOTUsOS41N0wxOS44OSwxMEgxOEwxOC4wOSw5LjQxQzE4LjI0LDguNjIgMTgsNy44MyAxNy40Miw3LjIxTDE3LjM1LDcuMTVDMTYuMzIsNi4xNCAxNS44NSw0Ljc5IDE2LjA1LDMuNDNMMTYuMTEsM0gxOEwxNy45MSwzLjU5QzE3Ljc2LDQuMzggMTgsNS4xNyAxOC41OCw1Ljc5TDE4LjY1LDUuODZNMTQuNjUsNS44NkMxNS42OCw2Ljg2IDE2LjE2LDguMjEgMTUuOTUsOS41N0wxNS44OSwxMEgxNEwxNC4wOSw5LjQxQzE0LjI0LDguNjIgMTQsNy44MyAxMy40Miw3LjIxTDEzLjM1LDcuMTVDMTIuMzIsNi4xNCAxMS44NSw0Ljc5IDEyLjA1LDMuNDNMMTIuMTEsM0gxNEwxMy45MSwzLjU5QzEzLjc2LDQuMzggMTQsNS4xNyAxNC41OCw1Ljc5TDE0LjY1LDUuODZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG91cnMyNCA9IFwiTTEzIDIuMDVWNC4wN0MxNi45NSA0LjU2IDIwIDcuOTIgMjAgMTJDMjAgMTUuMjEgMTguMDggMTggMTUuMjggMTkuMjhMMTMgMTdWMjJIMThMMTYuNzggMjAuNzhDMTkuOTEgMTkuMDcgMjIgMTUuNzYgMjIgMTJDMjIgNi44MiAxOC4wNSAyLjU1IDEzIDIuMDVNMTEgMkM5LjA1IDIuMiA3LjIgMi45NiA1LjY4IDQuMjFMNy4xIDUuNjNDOC4yMyA0Ljc1IDkuNTggNC4yIDExIDRWMk00LjIgNS42OEMyLjk2IDcuMiAyLjIgOS4wNSAyIDExSDRDNC4xOSA5LjU4IDQuNzUgOC4yMyA1LjYzIDcuMUw0LjIgNS42OE02IDhWMTBIOVYxMUg4QzYuOSAxMSA2IDExLjkgNiAxM1YxNkgxMVYxNEg4VjEzSDlDMTAuMTEgMTMgMTEgMTIuMTEgMTEgMTFWMTBDMTEgOC45IDEwLjExIDggOSA4SDZNMTIgOFYxM0gxNVYxNkgxN1YxM0gxOFYxMUgxN1Y4SDE1VjExSDE0VjhIMTJNMiAxM0MyLjIgMTQuOTUgMi45NyAxNi44IDQuMjIgMTguMzJMNS42NCAxNi45QzQuNzYgMTUuNzcgNC4yIDE0LjQyIDQgMTNIMk03LjExIDE4LjM3TDUuNjggMTkuNzlDNy4yIDIxLjAzIDkuMDUgMjEuOCAxMSAyMlYyMEM5LjU4IDE5LjgxIDguMjQgMTkuMjUgNy4xMSAxOC4zN1pcIjtcclxuZXhwb3J0IHZhciBtZGlIdWJzcG90ID0gXCJNMTcuMSw4LjZWNi4yQzE3LjcsNS45IDE4LjIsNS4zIDE4LjIsNC42VjQuNUMxOC4yLDMuNSAxNy40LDIuNyAxNi40LDIuN0gxNi4zQzE1LjMsMi43IDE0LjUsMy41IDE0LjUsNC41VjQuNkMxNC41LDUuMyAxNC45LDUuOSAxNS42LDYuMlY4LjZDMTQuNyw4LjcgMTMuOCw5LjEgMTMuMSw5LjdMNi41LDQuNkM2LjgsMy41IDYuMSwyLjMgNSwyLjFDMy45LDEuOSAyLjgsMi40IDIuNSwzLjVDMi4yLDQuNiAyLjksNS44IDQsNi4xQzQuNSw2LjIgNS4xLDYuMiA1LjYsNS45TDEyLDEwLjlDMTAuOCwxMi43IDEwLjgsMTUgMTIuMSwxNi44TDEwLjEsMTguOEM5LjksMTguOCA5LjgsMTguNyA5LjYsMTguN0M4LjcsMTguNyA3LjksMTkuNSA3LjksMjAuNEM3LjksMjEuMyA4LjcsMjIgOS42LDIyQzEwLjUsMjIgMTEuMywyMS4yIDExLjMsMjAuM1YyMC4zQzExLjMsMjAuMSAxMS4zLDIwIDExLjIsMTkuOEwxMy4xLDE3LjlDMTUuNCwxOS42IDE4LjcsMTkuMiAyMC40LDE2LjlDMjIuMSwxNC42IDIxLjcsMTEuMyAxOS40LDkuNkMxOC44LDkuMSAxOCw4LjcgMTcuMSw4LjZNMTYuMywxNi40QzE0LjgsMTYuNCAxMy42LDE1LjIgMTMuNiwxMy43QzEzLjYsMTIuMiAxNC44LDExIDE2LjMsMTFDMTcuOCwxMSAxOSwxMi4yIDE5LDEzLjdDMTksMTUuMiAxNy44LDE2LjQgMTYuMywxNi40XCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVsdSA9IFwiTTE5LjUsMTIuOFYyMkgxNC43VjEzLjlDMTQuNywxMy4yIDE0LjEsMTIuNiAxMy40LDEyLjZIMTAuNUM5LjgsMTIuNiA5LjIsMTMuMiA5LjIsMTMuOVYyMkg0LjVWMkg5LjNWOC40QzkuNiw4LjMgOS45LDguMiAxMC4yLDguMkgxNUMxNy41LDguMiAxOS41LDEwLjMgMTkuNSwxMi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuID0gXCJNMjEsOUgxNVYyMkgxM1YxNkgxMVYyMkg5VjlIM1Y3SDIxTTEyLDJBMiwyIDAgMCwxIDE0LDRBMiwyIDAgMCwxIDEyLDZDMTAuODksNiAxMCw1LjEgMTAsNEMxMCwyLjg5IDEwLjg5LDIgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkJhYnlDaGFuZ2luZ1RhYmxlID0gXCJNNi41IDYuMDhDNS43MiA2LjEyIDUgNi42MiA0LjcyIDcuNEwzIDEyLjEzVjIySDdWMTIuODRMOC40MiA4Ljk0TDEwLjcgMTBIMTRWOEgxMS4xNUw3LjI5IDYuMkM3LjAzIDYuMTEgNi43NiA2LjA3IDYuNSA2LjA4TTkgMTdIMjFWMTlIOU0xMCAzLjVBMiAyIDAgMCAxIDggNS41QTIgMiAwIDAgMSA2IDMuNUEyIDIgMCAwIDEgOCAxLjVBMiAyIDAgMCAxIDEwIDMuNU0yMSAxNC41QTEuNSAxLjUgMCAwIDEgMTkuNSAxNkExLjUgMS41IDAgMCAxIDE4IDE0LjVBMS41IDEuNSAwIDAgMSAxOS41IDEzQTEuNSAxLjUgMCAwIDEgMjEgMTQuNU05IDExVjEzSDExVjE0QzExIDE1LjExIDExLjg5IDE2IDEzIDE2SDE1QzE2LjExIDE2IDE3IDE1LjExIDE3IDE0VjExSDE1VjEzSDEzVjEyQTEgMSAwIDAgMCAxMiAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkNhbmUgPSBcIk0xOCAxMi4yNFYyMkgxNy4wNlYxMi4yNEMxNy4wNiAxMi4wOSAxNyAxMiAxNi45MyAxMS44OUMxNi44NCAxMS44IDE2Ljc0IDExLjc2IDE2LjYyIDExLjc2QzE2LjQ3IDExLjc2IDE2LjM2IDExLjggMTYuMjcgMTEuODlDMTYuMTggMTIgMTYuMTQgMTIuMSAxNi4xNCAxMi4yNFYxMy4xNkgxNS4yM1YxMi41QzE0LjUzIDEyLjMzIDEzLjkgMTIuMDQgMTMuMzUgMTEuNjNDMTIuOCAxMS4yMiAxMi4zNCAxMC43NCAxMS45NiAxMC4xOUwxMS42MSAxMS4zOUMxMS41IDExLjgxIDExLjUgMTIuMjQgMTEuNSAxMi42OEwxMS41IDEzTDExLjUgMTMuMzNMMTMuMzUgMTUuOTRWMjJIMTEuNVYxNy4zNEw5LjgyIDE1TDkuNjUgMTguMjVMNi44NiAyMkw1LjM4IDIwLjg3TDcuNzcgMTcuNjRWMTIuNjhDNy43NyAxMi4xNSA3LjgyIDExLjYzIDcuOTEgMTEuMTFMOC4yNSA5LjU0TDYuODYgMTAuMzJWMTMuNjNINVY5LjIzTDEwIDYuNEMxMC4yOSA2LjI2IDEwLjU5IDYuMTggMTAuOTEgNi4xOEMxMS4yMyA2LjE4IDExLjU0IDYuMjcgMTEuODMgNi40NEMxMi4xNSA2LjYyIDEyLjM5IDYuODggMTIuNTcgNy4yM0wxMy4zMSA4LjhDMTMuNiA5LjM4IDE0LjA0IDkuODcgMTQuNjQgMTAuMjZDMTUuMjMgMTAuNjUgMTUuODkgMTAuODUgMTYuNjIgMTAuODVDMTcgMTAuODUgMTcuMzIgMTEgMTcuNiAxMS4yNEMxNy44OCAxMS41IDE4IDExLjgzIDE4IDEyLjI0TTEyIDJDMTMuMTEgMiAxNCAyLjkgMTQgNEMxNCA1LjExIDEzLjExIDYgMTIgNkMxMC45IDYgMTAgNS4xMSAxMCA0QzEwIDIuOSAxMC45IDIgMTIgMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkNhcGFjaXR5RGVjcmVhc2UgPSBcIk0xNiA0QzE2IDIuOSAxNi45IDIgMTggMlMyMCAyLjkgMjAgNCAxOS4xIDYgMTggNiAxNiA1LjEgMTYgNE0yMC43OCA3LjU4QzE5LjkzIDcuMjEgMTkgNyAxOCA3QzE3LjMzIDcgMTYuNjkgNy4xIDE2LjA4IDcuMjhDMTYuNjYgNy44MyAxNyA4LjYgMTcgOS40M1YxMEgyMlY5LjQzQzIyIDguNjIgMjEuNSA3LjkgMjAuNzggNy41OE02IDZDNy4xIDYgOCA1LjEgOCA0UzcuMSAyIDYgMiA0IDIuOSA0IDQgNC45IDYgNiA2TTcuOTIgNy4yOEM3LjMxIDcuMSA2LjY3IDcgNiA3QzUgNyA0LjA3IDcuMjEgMy4yMiA3LjU4QzIuNSA3LjkgMiA4LjYyIDIgOS40M1YxMEg3VjkuNDNDNyA4LjYgNy4zNCA3LjgzIDcuOTIgNy4yOE0xMCA0QzEwIDIuOSAxMC45IDIgMTIgMlMxNCAyLjkgMTQgNCAxMy4xIDYgMTIgNiAxMCA1LjEgMTAgNE0xNiAxMEg4VjkuNDNDOCA4LjYyIDguNSA3LjkgOS4yMiA3LjU4QzEwLjA3IDcuMjEgMTEgNyAxMiA3QzEzIDcgMTMuOTMgNy4yMSAxNC43OCA3LjU4QzE1LjUgNy45IDE2IDguNjIgMTYgOS40M1YxME0xNSAxNkMxNSAxNC45IDE1LjkgMTQgMTcgMTRTMTkgMTQuOSAxOSAxNiAxOC4xIDE4IDE3IDE4IDE1IDE3LjEgMTUgMTZNMjEgMjJIMTNWMjEuNDNDMTMgMjAuNjIgMTMuNSAxOS45IDE0LjIyIDE5LjU4QzE1LjA3IDE5LjIxIDE2IDE5IDE3IDE5QzE4IDE5IDE4LjkzIDE5LjIxIDE5Ljc4IDE5LjU4QzIwLjUgMTkuOSAyMSAyMC42MiAyMSAyMS40M1YyMk01IDE2QzUgMTQuOSA1LjkgMTQgNyAxNFM5IDE0LjkgOSAxNiA4LjEgMTggNyAxOCA1IDE3LjEgNSAxNk0xMSAyMkgzVjIxLjQzQzMgMjAuNjIgMy41IDE5LjkgNC4yMiAxOS41OEM1LjA3IDE5LjIxIDYgMTkgNyAxOUM4IDE5IDguOTMgMTkuMjEgOS43OCAxOS41OEMxMC41IDE5LjkgMTEgMjAuNjIgMTEgMjEuNDNWMjJNMTIuNzUgMTNWMTFIMTEuMjVWMTNIOUwxMiAxNkwxNSAxM0gxMi43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkNhcGFjaXR5SW5jcmVhc2UgPSBcIk0xNiA0QzE2IDIuOSAxNi45IDIgMTggMkMxOS4xIDIgMjAgMi45IDIwIDRDMjAgNS4xIDE5LjEgNiAxOCA2QzE2LjkgNiAxNiA1LjEgMTYgNE0yMC43OCA3LjU4QzE5LjkzIDcuMjEgMTkgNyAxOCA3QzE3LjMzIDcgMTYuNjkgNy4xIDE2LjA4IDcuMjhDMTYuNjYgNy44MyAxNyA4LjYgMTcgOS40M1YxMEgyMlY5LjQzQzIyIDguNjIgMjEuNSA3LjkgMjAuNzggNy41OE02IDZDNy4xIDYgOCA1LjEgOCA0QzggMi45IDcuMSAyIDYgMkM0LjkgMiA0IDIuOSA0IDRDNCA1LjEgNC45IDYgNiA2TTcuOTIgNy4yOEM3LjMxIDcuMSA2LjY3IDcgNiA3QzUgNyA0LjA3IDcuMjEgMy4yMiA3LjU4QzIuNSA3LjkgMiA4LjYyIDIgOS40M1YxMEg3VjkuNDNDNyA4LjYgNy4zNCA3LjgzIDcuOTIgNy4yOE0xMCA0QzEwIDIuOSAxMC45IDIgMTIgMkMxMy4xIDIgMTQgMi45IDE0IDRDMTQgNS4xIDEzLjEgNiAxMiA2QzEwLjkgNiAxMCA1LjEgMTAgNE0xNiAxMEg4VjkuNDNDOCA4LjYyIDguNSA3LjkgOS4yMiA3LjU4QzEwLjA3IDcuMjEgMTEgNyAxMiA3QzEzIDcgMTMuOTMgNy4yMSAxNC43OCA3LjU4QzE1LjUgNy45IDE2IDguNjIgMTYgOS40M00xNSAxNkMxNSAxNC45IDE1LjkgMTQgMTcgMTRDMTguMSAxNCAxOSAxNC45IDE5IDE2QzE5IDE3LjEgMTguMSAxOCAxNyAxOEMxNS45IDE4IDE1IDE3LjEgMTUgMTZNMjEgMjJIMTNWMjEuNDNDMTMgMjAuNjIgMTMuNSAxOS45IDE0LjIyIDE5LjU4QzE1LjA3IDE5LjIxIDE2IDE5IDE3IDE5QzE4IDE5IDE4LjkzIDE5LjIxIDE5Ljc4IDE5LjU4QzIwLjUgMTkuOSAyMSAyMC42MiAyMSAyMS40M001IDE2QzUgMTQuOSA1LjkgMTQgNyAxNEM4LjEgMTQgOSAxNC45IDkgMTZDOSAxNy4xIDguMSAxOCA3IDE4QzUuOSAxOCA1IDE3LjEgNSAxNk0xMSAyMkgzVjIxLjQzQzMgMjAuNjIgMy41IDE5LjkgNC4yMiAxOS41OEM1LjA3IDE5LjIxIDYgMTkgNyAxOUM4IDE5IDguOTMgMTkuMjEgOS43OCAxOS41OEMxMC41IDE5LjkgMTEgMjAuNjIgMTEgMjEuNDNNMTIuNzUgMTRWMTZIMTEuMjVWMTRIOUwxMiAxMUwxNSAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkNoaWxkID0gXCJNMTIsMkEzLDMgMCAwLDEgMTUsNUEzLDMgMCAwLDEgMTIsOEEzLDMgMCAwLDEgOSw1QTMsMyAwIDAsMSAxMiwyTTExLDIySDhWMTZINlY5SDE4VjE2SDE2VjIySDEzVjE4SDExVjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuRWRpdCA9IFwiTTE5LjA3IDE0Ljg4TDIxLjEyIDE2LjkzTDE1LjA2IDIzSDEzVjIwLjk0TDE5LjA3IDE0Ljg4TTIxLjA0IDEzLjEzQzIxLjE4IDEzLjEzIDIxLjMxIDEzLjE5IDIxLjQyIDEzLjNMMjIuNyAxNC41OEMyMi45MiAxNC43OSAyMi45MiAxNS4xNCAyMi43IDE1LjM1TDIxLjcgMTYuMzVMMTkuNjUgMTQuM0wyMC42NSAxMy4zQzIwLjc2IDEzLjE5IDIwLjkgMTMuMTMgMjEuMDQgMTMuMTNNMjEgOUgxNVYxNkwxMyAxOFYxNkgxMVYyMkg5VjlIM1Y3SDIxVjlNMTIgMkMxMy4xIDIgMTQgMi45IDE0IDRDMTQgNS4xIDEzLjEgNiAxMiA2QzEwLjkgNiAxMCA1LjEgMTAgNEMxMCAyLjkgMTAuOSAyIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5GZW1hbGUgPSBcIk0xMiwyQTIsMiAwIDAsMSAxNCw0QTIsMiAwIDAsMSAxMiw2QTIsMiAwIDAsMSAxMCw0QTIsMiAwIDAsMSAxMiwyTTEwLjUsMjJWMTZINy41TDEwLjA5LDguNDFDMTAuMzQsNy41OSAxMS4xLDcgMTIsN0MxMi45LDcgMTMuNjYsNy41OSAxMy45MSw4LjQxTDE2LjUsMTZIMTMuNVYyMkgxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuRmVtYWxlQm95ID0gXCJNNy41LDJBMiwyIDAgMCwxIDkuNSw0QTIsMiAwIDAsMSA3LjUsNkEyLDIgMCAwLDEgNS41LDRBMiwyIDAgMCwxIDcuNSwyTTYsMjJWMTZIM0w1LjYsOC40QzUuOSw3LjYgNi42LDcgNy41LDdDOC40LDcgOS4yLDcuNiA5LjQsOC40TDEyLDE2SDlWMjJINk0xNC41LDEyQTIsMiAwIDAsMSAxNi41LDEwQTIsMiAwIDAsMSAxOC41LDEyQTIsMiAwIDAsMSAxNi41LDE0QTIsMiAwIDAsMSAxNC41LDEyTTEzLjUsMTVIMTkuNVYxOUgxOFYyMkgxNVYxOUgxMy41VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuRmVtYWxlRGFuY2UgPSBcIk0xNyAxN0gxNVYyM0gxM1YxN0gxMC44OEw5LjM0IDE4LjkzTDExLjcxIDIxLjI5TDEwLjI5IDIyLjcxTDcuOTMgMjAuMzRDNy41OCAyMCA3LjM4IDE5LjUzIDcuMzUgMTkuMDRDNy4zMiAxOC41NSA3LjQ3IDE4LjA2IDcuNzggMTcuNjhMOC4zMiAxN0g3TDkgMTNWMTBDOC4zOCAxMC40NyA3Ljg4IDExLjA3IDcuNTMgMTEuNzZDNy4xOCAxMi40NiA3IDEzLjIyIDcgMTRINUM1IDEyLjE0IDUuNzQgMTAuMzYgNy4wNSA5LjA1QzguMzYgNy43NCAxMC4xNCA3IDEyIDdDMTMuMzMgNyAxNC42IDYuNDcgMTUuNTQgNS41NEMxNi40NyA0LjYgMTcgMy4zMyAxNyAySDE5QzE5IDMuMzIgMTguNjIgNC42MiAxNy45MSA1LjczQzE3LjIgNi44NSAxNi4yIDcuNzQgMTUgOC4zMVYxM0wxNyAxN00xNCA0QzE0IDQuNCAxMy44OCA0Ljc4IDEzLjY2IDUuMTFDMTMuNDQgNS40NCAxMy4xMyA1LjcgMTIuNzcgNS44NUMxMi40IDYgMTIgNi4wNCAxMS42MSA1Ljk2QzExLjIyIDUuODggMTAuODcgNS42OSAxMC41OSA1LjQxQzEwLjMxIDUuMTMgMTAuMTIgNC43OCAxMC4wNCA0LjM5QzkuOTYgNCAxMCAzLjYgMTAuMTUgMy4yNEMxMC4zIDIuODcgMTAuNTYgMi41NiAxMC44OSAyLjM0QzExLjIyIDIuMTIgMTEuNiAyIDEyIDJDMTIuNTMgMiAxMy4wNCAyLjIxIDEzLjQxIDIuNTlDMTMuNzkgMi45NiAxNCAzLjQ3IDE0IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5GZW1hbGVGZW1hbGUgPSBcIk03LjUsMkEyLDIgMCAwLDEgOS41LDRBMiwyIDAgMCwxIDcuNSw2QTIsMiAwIDAsMSA1LjUsNEEyLDIgMCAwLDEgNy41LDJNNiwyMlYxNkgzTDUuNiw4LjRDNS45LDcuNiA2LjYsNyA3LjUsN0M4LjQsNyA5LjIsNy42IDkuNCw4LjRMMTIsMTZMMTQuNiw4LjRDMTQuOSw3LjYgMTUuNiw3IDE2LjUsN0MxNy40LDcgMTguMiw3LjYgMTguNCw4LjRMMjEsMTZIMThWMjJIMTVWMTZIMTJMOSwxNlYyMkg2TTE2LjUsMkEyLDIgMCAwLDEgMTguNSw0QTIsMiAwIDAsMSAxNi41LDZBMiwyIDAgMCwxIDE0LjUsNEEyLDIgMCAwLDEgMTYuNSwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuRmVtYWxlR2lybCA9IFwiTTcuNSwyQTIsMiAwIDAsMSA5LjUsNEEyLDIgMCAwLDEgNy41LDZBMiwyIDAgMCwxIDUuNSw0QTIsMiAwIDAsMSA3LjUsMk02LDIyVjE2SDNMNS42LDguNEM1LjksNy42IDYuNiw3IDcuNSw3QzguNCw3IDkuMiw3LjYgOS40LDguNEwxMiwxNkg5VjIySDZNMTQuNSwxMkEyLDIgMCAwLDEgMTYuNSwxMEEyLDIgMCAwLDEgMTguNSwxMkEyLDIgMCAwLDEgMTYuNSwxNEEyLDIgMCAwLDEgMTQuNSwxMk0xNSwxNUgxOEwxOS41LDE5SDE4VjIySDE1VjE5SDEzLjVMMTUsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5HcmVldGluZyA9IFwiTTEuNSw0VjUuNUMxLjUsOS42NSAzLjcxLDEzLjI4IDcsMTUuM1YyMEgyMlYxOEMyMiwxNS4zNCAxNi42NywxNCAxNCwxNEMxNCwxNCAxMy44MywxNCAxMy43NSwxNEM5LDE0IDUsMTAgNSw1LjVWNE0xNCw0QTQsNCAwIDAsMCAxMCw4QTQsNCAwIDAsMCAxNCwxMkE0LDQgMCAwLDAgMTgsOEE0LDQgMCAwLDAgMTQsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkdyZWV0aW5nUHJveGltaXR5ID0gXCJNMTEgMTRIOUM5IDkuMDMgMTMuMDMgNSAxOCA1VjdDMTQuMTMgNyAxMSAxMC4xMyAxMSAxNE0xOCAxMVY5QzE1LjI0IDkgMTMgMTEuMjQgMTMgMTRIMTVDMTUgMTIuMzQgMTYuMzQgMTEgMTggMTFNNyA0QzcgMi44OSA2LjExIDIgNSAyUzMgMi44OSAzIDQgMy44OSA2IDUgNiA3IDUuMTEgNyA0TTExLjQ1IDQuNUg5LjQ1QzkuMjEgNS45MiA4IDcgNi41IDdIMy41QzIuNjcgNyAyIDcuNjcgMiA4LjVWMTFIOFY4Ljc0QzkuODYgOC4xNSAxMS4yNSA2LjUgMTEuNDUgNC41TTE5IDE3QzIwLjExIDE3IDIxIDE2LjExIDIxIDE1UzIwLjExIDEzIDE5IDEzIDE3IDEzLjg5IDE3IDE1IDE3Ljg5IDE3IDE5IDE3TTIwLjUgMThIMTcuNUMxNiAxOCAxNC43OSAxNi45MiAxNC41NSAxNS41SDEyLjU1QzEyLjc1IDE3LjUgMTQuMTQgMTkuMTUgMTYgMTkuNzRWMjJIMjJWMTkuNUMyMiAxOC42NyAyMS4zMyAxOCAyMC41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuSGFuZHNkb3duID0gXCJNMTIsMUMxMC44OSwxIDEwLDEuOSAxMCwzQzEwLDQuMTEgMTAuODksNSAxMiw1QzEzLjExLDUgMTQsNC4xMSAxNCwzQTIsMiAwIDAsMCAxMiwxTTEwLDZDOS43Myw2IDkuNSw2LjExIDkuMzEsNi4yOEg5LjNMNCwxMS41OUw1LjQyLDEzTDksOS40MVYyMkgxMVYxNUgxM1YyMkgxNVY5LjQxTDE4LjU4LDEzTDIwLDExLjU5TDE0LjcsNi4yOEMxNC41LDYuMTEgMTQuMjcsNiAxNCw2XCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5IYW5kc3VwID0gXCJNNSwxQzUsMy43IDYuNTYsNi4xNiA5LDcuMzJWMjJIMTFWMTVIMTNWMjJIMTVWNy4zMUMxNy40NCw2LjE2IDE5LDMuNyAxOSwxSDE3QTUsNSAwIDAsMSAxMiw2QTUsNSAwIDAsMSA3LDFNMTIsMUMxMC44OSwxIDEwLDEuODkgMTAsM0MxMCw0LjExIDEwLjg5LDUgMTIsNUMxMy4xMSw1IDE0LDQuMTEgMTQsM0MxNCwxLjg5IDEzLjExLDEgMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbk1hbGUgPSBcIk0xMiwyQTIsMiAwIDAsMSAxNCw0QTIsMiAwIDAsMSAxMiw2QTIsMiAwIDAsMSAxMCw0QTIsMiAwIDAsMSAxMiwyTTEwLjUsN0gxMy41QTIsMiAwIDAsMSAxNS41LDlWMTQuNUgxNFYyMkgxMFYxNC41SDguNVY5QTIsMiAwIDAsMSAxMC41LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5NYWxlQm95ID0gXCJNNy41LDJBMiwyIDAgMCwxIDkuNSw0QTIsMiAwIDAsMSA3LjUsNkEyLDIgMCAwLDEgNS41LDRBMiwyIDAgMCwxIDcuNSwyTTYsN0g5QTIsMiAwIDAsMSAxMSw5VjE0LjVIOS41VjIySDUuNVYxNC41SDRWOUEyLDIgMCAwLDEgNiw3TTE0LjUsMTJBMiwyIDAgMCwxIDE2LjUsMTBBMiwyIDAgMCwxIDE4LjUsMTJBMiwyIDAgMCwxIDE2LjUsMTRBMiwyIDAgMCwxIDE0LjUsMTJNMTMuNSwxNUgxOS41VjE5SDE4VjIySDE1VjE5SDEzLjVWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5NYWxlQ2hpbGQgPSBcIk03IDJDNS45IDIgNSAyLjkgNSA0UzUuOSA2IDcgNiA5IDUuMTEgOSA0IDguMTEgMiA3IDJNNSA3QzMuODkgNyAzIDcuODkgMyA5VjE1SDVWMjJIMTBWMTEuNkwxMi41MyAxNkgxNC45N0wxNiAxNC42NlYyMkgyMFYxN0gyMVYxNEMyMSAxMi44OSAyMC4xMSAxMiAxOSAxMkgxNi41QzE1LjkgMTIgMTUuMzcgMTIuMjYgMTUgMTIuNjhDMTQuNjcgMTMuMSAxNC4zMiAxMy41NiAxNCAxNEgxMy42OUwxMCA3LjY2QzkuODQgNy4zOCA5LjIyIDcgOC41IDdINU0xOCA4QzE3LjE3IDggMTYuNSA4LjY3IDE2LjUgOS41UzE3LjE3IDExIDE4IDExIDE5LjUgMTAuMzMgMTkuNSA5LjUgMTguODMgOCAxOCA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuTWFsZUZlbWFsZSA9IFwiTTcuNSwyQTIsMiAwIDAsMSA5LjUsNEEyLDIgMCAwLDEgNy41LDZBMiwyIDAgMCwxIDUuNSw0QTIsMiAwIDAsMSA3LjUsMk02LDdIOUEyLDIgMCAwLDEgMTEsOVYxNC41SDkuNVYyMkg1LjVWMTQuNUg0VjlBMiwyIDAgMCwxIDYsN00xNi41LDJBMiwyIDAgMCwxIDE4LjUsNEEyLDIgMCAwLDEgMTYuNSw2QTIsMiAwIDAsMSAxNC41LDRBMiwyIDAgMCwxIDE2LjUsMk0xNSwyMlYxNkgxMkwxNC41OSw4LjQxQzE0Ljg0LDcuNTkgMTUuNiw3IDE2LjUsN0MxNy40LDcgMTguMTYsNy41OSAxOC40MSw4LjQxTDIxLDE2SDE4VjIySDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuTWFsZUdpcmwgPSBcIk03LjUsMkEyLDIgMCAwLDEgOS41LDRBMiwyIDAgMCwxIDcuNSw2QTIsMiAwIDAsMSA1LjUsNEEyLDIgMCAwLDEgNy41LDJNNiw3SDlBMiwyIDAgMCwxIDExLDlWMTQuNUg5LjVWMjJINS41VjE0LjVINFY5QTIsMiAwIDAsMSA2LDdNMTQuNSwxMkEyLDIgMCAwLDEgMTYuNSwxMEEyLDIgMCAwLDEgMTguNSwxMkEyLDIgMCAwLDEgMTYuNSwxNEEyLDIgMCAwLDEgMTQuNSwxMk0xNSwxNUgxOEwxOS41LDE5SDE4VjIySDE1VjE5SDEzLjVMMTUsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5NYWxlSGVpZ2h0ID0gXCJNNywyQzguNzgsMiA5LjY3LDQuMTYgOC40Miw1LjQyQzcuMTYsNi42NyA1LDUuNzggNSw0QTIsMiAwIDAsMSA3LDJNNS41LDdIOC41QTIsMiAwIDAsMSAxMC41LDlWMTQuNUg5VjIySDVWMTQuNUgzLjVWOUEyLDIgMCAwLDEgNS41LDdNMjEsOEgxNVYxMEgyMU0yMSwxMUgxOFYxM0gyMU0yMSwySDE1VjRIMjFNMjEsNUgxOFY3SDIxTTIxLDE0SDE1VjE2SDIxTTIxLDIwSDE1VjIySDIxTTIxLDE3SDE4VjE5SDIxXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5NYWxlSGVpZ2h0VmFyaWFudCA9IFwiTTcsMkM4Ljc4LDIgOS42Nyw0LjE2IDguNDIsNS40MkM3LjE2LDYuNjcgNSw1Ljc4IDUsNEEyLDIgMCAwLDEgNywyTTUuNSw3SDguNUEyLDIgMCAwLDEgMTAuNSw5VjE0LjVIOVYyMkg1VjE0LjVIMy41VjlBMiwyIDAgMCwxIDUuNSw3TTE5LDhIMjFMMTgsNEwxNSw4SDE3VjE2SDE1TDE4LDIwTDIxLDE2SDE5TTIyLDJIMTRWNEgyMk0yMiwyMEgxNFYyMkgyMlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuTWFsZU1hbGUgPSBcIk03LjUsMkEyLDIgMCAwLDEgOS41LDRBMiwyIDAgMCwxIDcuNSw2QTIsMiAwIDAsMSA1LjUsNEEyLDIgMCAwLDEgNy41LDJNNiw3SDlBMiwyIDAgMCwxIDExLDlWMTQuNUg5LjVWMjJINS41VjE0LjVINFY5QTIsMiAwIDAsMSA2LDdNMTYuNSwyQTIsMiAwIDAsMSAxOC41LDRBMiwyIDAgMCwxIDE2LjUsNkEyLDIgMCAwLDEgMTQuNSw0QTIsMiAwIDAsMSAxNi41LDJNMTUsN0gxOEEyLDIgMCAwLDEgMjAsOVYxNC41SDE4LjVWMjJIMTQuNVYxNC41SDEzVjlBMiwyIDAgMCwxIDE1LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5QcmVnbmFudCA9IFwiTTksNEM5LDIuODkgOS44OSwyIDExLDJDMTIuMTEsMiAxMywyLjg5IDEzLDRDMTMsNS4xMSAxMi4xMSw2IDExLDZDOS44OSw2IDksNS4xMSA5LDRNMTYsMTNDMTYsMTEuNjYgMTUuMTcsMTAuNSAxNCwxMEEzLDMgMCAwLDAgMTEsN0EzLDMgMCAwLDAgOCwxMFYxN0gxMFYyMkgxM1YxN0gxNlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hblF1ZXVlID0gXCJNNSA2QzMuOSA2IDMgNi45IDMgOFMzLjkgMTAgNSAxMCA3IDkuMTEgNyA4IDYuMTEgNiA1IDZNMTIgNEMxMC45IDQgMTAgNC44OSAxMCA2UzEwLjkgOCAxMiA4IDE0IDcuMTEgMTQgNiAxMy4xMSA0IDEyIDRNMTkgMkMxNy45IDIgMTcgMi45IDE3IDRTMTcuOSA2IDE5IDYgMjEgNS4xMSAyMSA0IDIwLjExIDIgMTkgMk0zLjUgMTFDMi42NyAxMSAyIDExLjY3IDIgMTIuNVYxN0gzVjIySDdWMTdIOFYxMi41QzggMTEuNjcgNy4zMyAxMSA2LjUgMTFIMy41TTEwLjUgOUM5LjY3IDkgOSA5LjY3IDkgMTAuNVYxNUgxMFYyMEgxNFYxNUgxNVYxMC41QzE1IDkuNjcgMTQuMzMgOSAxMy41IDlIMTAuNU0xNy41IDdDMTYuNjcgNyAxNiA3LjY3IDE2IDguNVYxM0gxN1YxOEgyMVYxM0gyMlY4LjVDMjIgNy42NyAyMS4zMyA3IDIwLjUgN0gxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuU2Nvb3RlciA9IFwiTTE2LjUgMi4yNUMxNy4zMyAyLjI1IDE4IDIuOTIgMTggMy43NUMxOCA0LjU4IDE3LjMzIDUuMjUgMTYuNSA1LjI1QzE1LjY3IDUuMjUgMTUgNC41OCAxNSAzLjc1QzE1IDIuOTIgMTUuNjcgMi4yNSAxNi41IDIuMjVNMjAgMThDMjEuMTEgMTggMjIgMTguOSAyMiAyMEMyMiAyMS4xMSAyMS4xMSAyMiAyMCAyMkMxOS4yNiAyMiAxOC42MSAyMS42IDE4LjI3IDIxSDguNzNDOC4zOSAyMS42IDcuNzQgMjIgNyAyMkM1LjkgMjIgNSAyMS4xMSA1IDIwQzUgMTguOSA1LjkgMTggNyAxOEM3Ljc0IDE4IDguMzkgMTguNCA4LjczIDE5SDEzVjEzLjVMOS43MyAxMS4yM0w2Ljc3IDE0QzYuMzYgMTQuMzcgNS43MyAxNC4zNCA1LjM1IDEzLjk0TDIuMjggMTAuNjVDMS45MSAxMC4yNCAxLjkzIDkuNjEgMi4zMyA5LjIzQzIuNzQgOC44NiAzLjM3IDguODggMy43NCA5LjI4TDYuMTMgMTEuODRMMTMuMjYgNS4yTDEzLjMgNS4xOEMxMy43MiA0LjgyIDE0LjM1IDQuODggMTQuNzEgNS4zTDE2Ljk3IDhIMjBDMjAuNTUgOCAyMSA4LjQ1IDIxIDlDMjEgOS41NSAyMC41NSAxMCAyMCAxMEgxNi41QzE2LjE1IDEwIDE1Ljg1IDkuODIgMTUuNjcgOS41NkwxNC4xNyA3Ljc3TDExLjY0IDEwLjEzTDE0LjU3IDEyLjE4SDE0LjU3QzE0LjgzIDEyLjM2IDE1IDEyLjY2IDE1IDEzVjE5SDE1LjYxQzE2LjA0IDE3LjEzIDE3LjYzIDE1LjcgMTkuNTggMTUuNUwxOC44MSAxMUgyMC4zMUwyMS4zOSAxNy4zNEMyMC45NyAxNy4xMiAyMC41IDE3IDIwIDE3QzE4LjY5IDE3IDE3LjU4IDE3Ljg0IDE3LjE3IDE5SDE4LjI3QzE4LjYxIDE4LjQgMTkuMjYgMTggMjAgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5XaGVlbGNoYWlyID0gXCJNOC41IDRBMiAyIDAgMCAxIDYuNSA2QTIgMiAwIDAgMSA0LjUgNEEyIDIgMCAwIDEgNi41IDJBMiAyIDAgMCAxIDguNSA0TTUgN0MzLjg5IDcgMyA3Ljg5IDMgOVYxNUg1VjIySDguNjFBNyA3IDAgMCAxIDYuNSAxN0E3IDcgMCAwIDEgMTAgMTAuOTVWOUMxMCA3Ljg5IDkuMTEgNyA4IDdNMTMgOFYxNkgxOC41TDIxLjIgMTkuNkwyMi44IDE4LjRMMTkuNSAxNEgxNVY4TTEyIDEyLjIzQTUgNSAwIDAgMCA4LjUgMTdBNSA1IDAgMCAwIDEzLjUgMjJBNSA1IDAgMCAwIDE4LjUgMTdIMTYuNUEzIDMgMCAwIDEgMTMuNSAyMEEzIDMgMCAwIDEgMTAuNSAxN0EzIDMgMCAwIDEgMTIgMTQuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYmxlQnVuZGxlID0gXCJNMTYuOTEsMTguMTJDMTQuMDksMTguMTIgMTguNDMsMi4xMyAxOC40MywyLjEzSDE1LjUzQzE1LjUzLDIuMTMgMTQuMzQsNS44OSAxMy41NSwxMC4wN0gxMS4wNUMxMS4xMSw5LjIxIDExLjE1LDguMzQgMTEuMTMsNy41QzExLDAuNTkgNywxLjg3IDUuMTgsMy40NUMzLjQ3LDQuOTUgMi4wMyw3LjggMiwxMEMyLjI3LDEwIDMuMzUsMTAgMy4zNSwxMEMzLjM1LDEwIDQuMjUsNS44OCA3LjA3LDUuODhDOS44OSw1Ljg4IDUuNTQsMjEuODcgNS41NCwyMS44N0g4LjQ1QzguNDUsMjEuODcgOS45NSwxNy41OSAxMC43LDEyLjgxTDEzLjA5LDEyLjhDMTIuOTUsMTQuMDQgMTIuOTEsMTUuNCAxMi45MywxNi42N0MxMy4wNCwyMy41NiAxNy4wNiwyMi4wOCAxOC44NiwyMC41QzIwLjY3LDE4LjkyIDIyLDE1LjU4IDIyLDE0SDIwLjYxQzIwLjYyLDE0LjEyIDE5LjczLDE4LjEyIDE2LjkxLDE4LjEyVjE4LjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUh2YWMgPSBcIk04LjU4IDE0QzguMyAxMy41NSA4LjExIDEzLjAzIDguMDYgMTIuNUgxNS45NEMxNS44OSAxMy4wMyAxNS43IDEzLjU1IDE1LjQ3IDE0SDguNThNMTIgMTZDMTAuOTcgMTYgMTAuMDggMTUuNjEgOS4zOCAxNUgxNC42M0MxMy45MiAxNS42MSAxMy4wMyAxNiAxMiAxNk0xMiA4QzEzLjAzIDggMTMuOTIgOC4zOSAxNC42MyA5SDkuMzhDMTAuMDggOC4zOSAxMC45NyA4IDEyIDhNOC41OCAxMEgxNS40MkMxNS43IDEwLjQ1IDE1Ljg5IDEwLjk3IDE1Ljk0IDExLjVIOC4wNkM4LjExIDEwLjk3IDguMyAxMC40NSA4LjU4IDEwTTMgM1YyMUgyMVYzSDNNMTIgMThDOC42NyAxOCA2IDE1LjMzIDYgMTJTOC42NyA2IDEyIDYgMTggOC42NyAxOCAxMiAxNS4zMyAxOCAxMiAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIdmFjT2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0wzIDQuODlWMjFIMTkuMTFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMThDOC42NyAxOCA2IDE1LjMzIDYgMTJDNiAxMC44MiA2LjM0IDkuNzMgNi45MiA4LjgxTDguNDMgMTAuMzJDOC4yNCAxMC42OSA4LjEgMTEuMDkgOC4wNiAxMS41SDkuNjFMMTAuNjEgMTIuNUg4LjA2QzguMTEgMTMuMDMgOC4zIDEzLjU1IDguNTggMTRIMTIuMTFMMTMuMTEgMTVIOS4zOEMxMC4wOCAxNS42MSAxMC45NyAxNiAxMiAxNkMxMi42MyAxNiAxMy4xOSAxNS44NCAxMy43IDE1LjU5TDE1LjE5IDE3LjA4QzE0LjI3IDE3LjY2IDEzLjE4IDE4IDEyIDE4TTEyIDhDMTMuMDMgOCAxMy45MiA4LjM5IDE0LjYzIDlIMTIuMkwxMS4yNyA4LjA3QzExLjUgOC4wMyAxMS43NSA4IDEyIDhNOS42NyA2LjQ3TDYuMiAzSDIxVjE3LjhMMTcuNTMgMTQuMzNDMTcuODMgMTMuNjIgMTggMTIuODMgMTggMTJDMTggOC42NyAxNS4zMyA2IDEyIDZDMTEuMTcgNiAxMC4zOCA2LjE3IDkuNjcgNi40N00xNS45NCAxMS41SDE0LjdMMTMuMiAxMEgxNS40MkMxNS43IDEwLjQ1IDE1Ljg5IDEwLjk3IDE1Ljk0IDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHlkcmF1bGljT2lsTGV2ZWwgPSBcIk0xNSAxOEMxMy4zNCAxOCAxMiAxNi42NiAxMiAxNUMxMiAxMyAxNSA5LjYzIDE1IDkuNjNTMTggMTMgMTggMTVDMTggMTYuNjYgMTYuNjYgMTggMTUgMThNMjAgNFYyMEgxMFY0SDhWMjBDOCAyMS4xMSA4Ljg5IDIyIDEwIDIySDIwQzIxLjExIDIyIDIyIDIxLjExIDIyIDIwVjRIMjBNMiAxOUw3IDE0TDIgOVYxOU0xNiA2VjJIMTRWNkgxMVY4SDE5VjZIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHlkcmF1bGljT2lsVGVtcGVyYXR1cmUgPSBcIk05IDE4QzcuMzQgMTggNiAxNi42NiA2IDE1QzYgMTMgOSA5LjYzIDkgOS42M1MxMiAxMyAxMiAxNUMxMiAxNi42NiAxMC42NiAxOCA5IDE4TTE0IDRWMjBINFY0SDJWMjBDMiAyMS4xMSAyLjg5IDIyIDQgMjJIMTRDMTUuMTEgMjIgMTYgMjEuMTEgMTYgMjBWNEgxNE0xMCA2VjJIOFY2SDVWOEgxM1Y2SDEwTTIxIDE3LjVWNS41QzIxIDQuNjcgMjAuMzMgNCAxOS41IDRTMTggNC42NyAxOCA1LjVWMTcuNUMxNy4zNyAxNy45NyAxNyAxOC43MSAxNyAxOS41QzE3IDIwLjg4IDE4LjEyIDIyIDE5LjUgMjJTMjIgMjAuODggMjIgMTkuNUMyMiAxOC43MSAyMS42MyAxOCAyMSAxNy41TTIwIDEzSDE5VjZIMjBWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHlkcm9Qb3dlciA9IFwiTTE3LjEyIDMuNTVBMiAyIDAgMCAwIDE1LjIgNC45NUwxNC40IDcuNUEzIDMgMCAwIDAgMTMuMzMgNy43NEwxMS41IDUuNzdMMTAuMTcgNC4yOUEyIDIgMCAwIDAgMTAuMDUgNy4xMkwxMS44NiA5LjA5QTMgMyAwIDAgMCAxMS42NCA5LjZBMyAzIDAgMCAwIDExLjUzIDEwLjEzTDguOTIgMTAuNzFMNi45NiAxMS4xNUEyIDIgMCAwIDAgOS4zNSAxMi42N0wxMS45NiAxMi4wOEEzIDMgMCAwIDAgMTIuNyAxMi44OUwxMS45IDE1LjQ0TDExLjMgMTcuMzVBMiAyIDAgMCAwIDEzLjggMTYuMDRMMTQuNjEgMTMuNUEzIDMgMCAwIDAgMTUuNjggMTMuMjZMMTcuNSAxNS4yM0wxOC44MyAxNi43QTIgMiAwIDAgMCAxOC45NiAxMy44OEwxNy4xNSAxMS45MUEzIDMgMCAwIDAgMTcuMzYgMTEuNEEzIDMgMCAwIDAgMTcuNSAxMC44NkwyMC4wOSAxMC4yOEwyMi4wNCA5Ljg1QTIgMiAwIDAgMCAxOS42NiA4LjMzTDE3LjA1IDguOTFBMyAzIDAgMCAwIDE2LjMxIDguMTFMMTcuMTEgNS41NUwxNy43MSAzLjY1QTIgMiAwIDAgMCAxNy4xMiAzLjU1TTE0LjU2IDlBMS41IDEuNSAwIDAgMSAxNC45NSA5LjA3QTEuNSAxLjUgMCAwIDEgMTUuOTMgMTAuOTVBMS41IDEuNSAwIDAgMSAxNC4wNSAxMS45M0ExLjUgMS41IDAgMCAxIDEzLjA3IDEwLjA1QTEuNSAxLjUgMCAwIDEgMTQuNTUgOU04IDEzLjY3QzYuNzggMTQuNTMgNS4zOSAxNSA0IDE1SDJWMTdINEM1LjM3IDE3IDYuNzQgMTYuNjUgOCAxNkM4Ljc3IDE2LjQgOS41OCAxNi42NiAxMC40MSAxNi44MUwxMC45NCAxNS4xNEwxMS4wMyAxNC44OEM5Ljk3IDE0LjczIDguOTMgMTQuMzIgOCAxMy42N00yMC40NSAxNUMyMC41IDE1LjcgMjAuMzMgMTYuNDEgMTkuOTEgMTdDMTkuOTMgMTcgMTkuOTcgMTcgMjAgMTdIMjJWMTVIMjAuNDVNOCAxNy42N0M2Ljc4IDE4LjUzIDUuMzkgMTkgNCAxOUgyVjIxSDRDNS4zNyAyMSA2Ljc0IDIwLjY1IDggMjBDMTAuNSAyMS4zIDEzLjUgMjEuMyAxNiAyMEMxNy4yNiAyMC42NSAxOC42MiAyMSAyMCAyMUgyMlYxOUgyMEMxOC42MSAxOSAxNy4yMiAxOC41MyAxNiAxNy42N0MxMy41NiAxOS4zOCAxMC40NCAxOS4zOCA4IDE3LjY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUljZUNyZWFtID0gXCJNMTcuNSA2LjA1QzE3LjI1IDMuMjIgMTQuODkgMSAxMiAxUzYuNzUgMy4yMiA2LjUgNi4wNUM1LjA5IDYuMjggNCA3LjUgNCA5QzQgMTAuNjYgNS4zNCAxMiA3IDEyTDEyIDIyTDE3IDEyQzE4LjY2IDEyIDIwIDEwLjY2IDIwIDlDMjAgNy41IDE4LjkxIDYuMjggMTcuNSA2LjA1TTEyIDE3LjUzTDguODkgMTEuMzFDOC45NSAxMS4yNiA5IDExLjIxIDkuMDggMTEuMTZDOS45MyAxMS42OSAxMC45MyAxMiAxMiAxMlMxNC4wNyAxMS42OSAxNC45MiAxMS4xNkMxNSAxMS4yMSAxNS4wNSAxMS4yNiAxNS4xMSAxMS4zMUwxMiAxNy41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlJY2VDcmVhbU9mZiA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNC45NSA2Ljg0QzQuMzcgNy4zOCA0IDguMTQgNCA5QzQgMTAuNjYgNS4zNCAxMiA3IDEyTDEyIDIyTDE0LjcgMTYuNTlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMTcuNTNMOC44OSAxMS4zMUM4Ljk1IDExLjI2IDkgMTEuMjEgOS4wOCAxMS4xNkM5LjIxIDExLjI0IDkuMzUgMTEuMyA5LjUgMTEuMzdMMTMuMjEgMTUuMUwxMiAxNy41M003LjE1IDMuOTVDOC4wNyAyLjIgOS44OSAxIDEyIDFDMTQuODkgMSAxNy4yNSAzLjIyIDE3LjUgNi4wNUMxOC45MSA2LjI4IDIwIDcuNSAyMCA5QzIwIDEwLjY2IDE4LjY2IDEyIDE3IDEyTDE2LjQgMTMuMkw3LjE1IDMuOTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWNlUG9wID0gXCJNMTguMTUgMTQuOTZMOS45NSAxOC42NUw1Ljg1IDkuNjVDNy4yMSA5LjEzIDguMTIgNy44MiA4LjE1IDYuMzZDOC4xNCA1IDcuMzYgMy43NiA2LjE1IDMuMTVDNi41NCAyLjggNyAyLjUgNy40NSAyLjI1QzkuNzEgMS4yNSAxMi4zNyAyLjIzIDEzLjQ1IDQuNDZNMTMuMTUgMTguMzZMMTQuNzUgMjEuODZMMTcuNDUgMjAuNjVMMTUuODUgMTcuMTVcIjtcclxuZXhwb3J0IHZhciBtZGlJZENhcmQgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjg5IDIwIDQgMjBIMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNEg0TTQgNkgyMFYxMEg0VjZNNCAxMkg4VjE0SDRWMTJNMTAgMTJIMjBWMTRIMTBWMTJNNCAxNkgxNFYxOEg0VjE2TTE2IDE2SDIwVjE4SDE2VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUlkZW50aWZpZXIgPSBcIk0xMCA3VjlIOVYxNUgxMFYxN0g2VjE1SDdWOUg2VjdIMTBNMTYgN0MxNy4xMSA3IDE4IDcuOSAxOCA5VjE1QzE4IDE2LjExIDE3LjExIDE3IDE2IDE3SDEyVjdNMTYgOUgxNFYxNUgxNlY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUlkZW9ncmFtQ2prID0gXCJNMTEgNFY2SDRWMTBINlY4SDE4VjEwSDIwVjZIMTNWNE04IDEwVjEySDEzLjU5TDExLjU5IDE0SDRWMTZIMTFWMThIMTBWMjBIMTNWMTZIMjBWMTRIMTQuMjFMMTYgMTIuMjFWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWRlb2dyYW1DamtWYXJpYW50ID0gXCJNMTEgNFY2SDRWOEgxNS4zNkMxNS4xMyA4Ljg3IDE0LjYzIDkuNzcgMTMuODggMTAuNjlDMTMuMzUgMTEuMzUgMTIuNzEgMTIgMTIgMTIuNjdDMTEuMjkgMTIgMTAuNjUgMTEuMzUgMTAuMTIgMTAuNjlDOS42NSAxMC4xMiA5LjMgOS41NSA5LjAzIDlINi44NUM3LjIxIDEwLjA1IDcuODIgMTEuMDMgOC41NiAxMS45NUM5LjEzIDEyLjY2IDkuNzkgMTMuMzQgMTAuNSAxNEw1LjM2IDE4LjIzTDYuNjQgMTkuNzdMMTIgMTUuMzRMMTcuMzYgMTkuNzdMMTguNjQgMTguMjNMMTMuNSAxNEMxNC4yMSAxMy4zNCAxNC44NyAxMi42NiAxNS40NCAxMS45NUMxNi40MSAxMC43NCAxNy4xNiA5LjQzIDE3LjQgOEgyMFY2SDEzVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWZyYW1lID0gXCJNMjEsMkgzQTIsMiAwIDAsMCAxLDRWMjBBMiwyIDAgMCwwIDMsMjJIMjFBMiwyIDAgMCwwIDIzLDIwVjRBMiwyIDAgMCwwIDIxLDJNMTEsMTcuNUw5LjUsMTlMNSwxNC41TDkuNSwxMEwxMSwxMS41TDgsMTQuNUwxMSwxNy41TTE0LjUsMTlMMTMsMTcuNUwxNiwxNC41TDEzLDExLjVMMTQuNSwxMEwxOSwxNC41TDE0LjUsMTlNMjEsN0gzVjRIMjFWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJZnJhbWVBcnJheSA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDIxQzIyLjEgMjIgMjMgMjEuMSAyMyAyMFY0QzIzIDIuOSAyMi4xIDIgMjEgMk0xMCAxMUg4VjE4SDEwVjIwSDZWOUgxMFYxMU0xOCAyMEgxNFYxOEgxNlYxMUgxNFY5SDE4VjIwTTIxIDdIM1Y0SDIxVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWZyYW1lQXJyYXlPdXRsaW5lID0gXCJNMjEgMkgzQzEuOSAyIDEgMi45IDEgNFYyMEMxIDIxLjEgMS45IDIyIDMgMjJIMjFDMjIuMSAyMiAyMyAyMS4xIDIzIDIwVjRDMjMgMi45IDIyLjEgMiAyMSAyTTIxIDIwSDNWNkgyMVYyME02IDhWMThIMTBWMTZIOFYxMEgxMFY4SDZNMTYgMTZIMTRWMThIMThWOEgxNFYxMEgxNlYxNlwiO1xyXG5leHBvcnQgdmFyIG1kaUlmcmFtZUJyYWNlcyA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDIxQzIyLjEgMjIgMjMgMjEuMSAyMyAyMFY0QzIzIDIuOSAyMi4xIDIgMjEgMk0xMSAxMUg5VjEyLjVDOSAxMy42IDguMSAxNC41IDcgMTQuNUM4LjEgMTQuNSA5IDE1LjQgOSAxNi41VjE4SDExVjIwSDlDNy45IDIwIDcgMTkuMSA3IDE4VjE3LjVDNyAxNi40IDYuMSAxNS41IDUgMTUuNVYxMy41QzYuMSAxMy41IDcgMTIuNiA3IDExLjVWMTFDNyA5LjkgNy45IDkgOSA5SDExVjExTTE5IDE1LjVDMTcuOSAxNS41IDE3IDE2LjQgMTcgMTcuNVYxOEMxNyAxOS4xIDE2LjEgMjAgMTUgMjBIMTNWMThIMTVWMTYuNUMxNSAxNS40IDE1LjkgMTQuNSAxNyAxNC41QzE1LjkgMTQuNSAxNSAxMy42IDE1IDEyLjVWMTFIMTNWOUgxNUMxNi4xIDkgMTcgOS45IDE3IDExVjExLjVDMTcgMTIuNiAxNy45IDEzLjUgMTkgMTMuNVYxNS41TTIxIDdIM1Y0SDIxVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWZyYW1lQnJhY2VzT3V0bGluZSA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDIxQzIyLjEgMjIgMjMgMjEuMSAyMyAyMFY0QzIzIDIuOSAyMi4xIDIgMjEgMk0yMSAyMEgzVjZIMjFWMjBNOSA4QzcuOSA4IDcgOC45IDcgMTBDNyAxMS4xIDYuMSAxMiA1IDEyVjE0QzYuMSAxNCA3IDE0LjkgNyAxNkM3IDE3LjEgNy45IDE4IDkgMThIMTFWMTZIOVYxNUM5IDEzLjkgOC4xIDEzIDcgMTNDOC4xIDEzIDkgMTIuMSA5IDExVjEwSDExVjhNMTUgOEMxNi4xIDggMTcgOC45IDE3IDEwQzE3IDExLjEgMTcuOSAxMiAxOSAxMlYxNEMxNy45IDE0IDE3IDE0LjkgMTcgMTZDMTcgMTcuMSAxNi4xIDE4IDE1IDE4SDEzVjE2SDE1VjE1QzE1IDEzLjkgMTUuOSAxMyAxNyAxM0MxNS45IDEzIDE1IDEyLjEgMTUgMTFWMTBIMTNWOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJZnJhbWVPdXRsaW5lID0gXCJNOS41LDguNUwxMSwxMEw4LDEzTDExLDE2TDkuNSwxNy41TDUsMTNMOS41LDguNU0xNC41LDE3LjVMMTMsMTZMMTYsMTNMMTMsMTBMMTQuNSw4LjVMMTksMTNMMTQuNSwxNy41TTIxLDJIM0EyLDIgMCAwLDAgMSw0VjIwQTIsMiAwIDAsMCAzLDIySDIxQTIsMiAwIDAsMCAyMywyMFY0QTIsMiAwIDAsMCAyMSwyTTIxLDIwSDNWNkgyMVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlJZnJhbWVQYXJlbnRoZXNlcyA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDIxQzIyLjEgMjIgMjMgMjEuMSAyMyAyMFY0QzIzIDIuOSAyMi4xIDIgMjEgMk0xMCAxOS40TDguNCAyMEM2LjkgMTguNiA2IDE2LjYgNiAxNC41UzYuOSAxMC40IDguNCA5TDEwIDkuNkM4LjcgMTAuNyA4IDEyLjYgOCAxNC41UzguNyAxOC4yIDEwIDE5LjRNMTUuNiAyMEwxNCAxOS40QzE1LjMgMTguMiAxNiAxNi40IDE2IDE0LjVTMTUuMyAxMC44IDE0IDkuNkwxNS42IDlDMTcuMSAxMC40IDE4IDEyLjQgMTggMTQuNUMxOCAxNi42IDE3LjEgMTguNiAxNS42IDIwTTIxIDdIM1Y0SDIxVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWZyYW1lUGFyZW50aGVzZXNPdXRsaW5lID0gXCJNMjEgMkgzQzEuOSAyIDEgMi45IDEgNFYyMEMxIDIxLjEgMS45IDIyIDMgMjJIMjFDMjIuMSAyMiAyMyAyMS4xIDIzIDIwVjRDMjMgMi45IDIyLjEgMiAyMSAyTTIxIDIwSDNWNkgyMVYyME0xNS42IDhDMTcuMSA5LjMgMTggMTEuMSAxOCAxM0MxOCAxNC45IDE3LjEgMTYuNyAxNS42IDE4TDE0IDE3LjRDMTUuMyAxNi40IDE2IDE0LjcgMTYgMTNTMTUuMyA5LjYgMTQgOC42TDE1LjYgOE04LjQgOEwxMCA4LjZDOC43IDkuNiA4IDExLjMgOCAxM1M4LjcgMTYuNCAxMCAxNy40TDguNCAxOEM2LjkgMTYuNyA2IDE0LjkgNiAxM1M2LjkgOS4zIDguNCA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUlmcmFtZVZhcmlhYmxlID0gXCJNMjEgMkgzQzEuOSAyIDEgMi45IDEgNFYyMEMxIDIxLjEgMS45IDIyIDMgMjJIMjFDMjIuMSAyMiAyMyAyMS4xIDIzIDIwVjRDMjMgMi45IDIyLjEgMiAyMSAyTTcuNCAyMEM1LjkgMTguNiA1IDE2LjYgNSAxNC41UzUuOSAxMC40IDcuNCA5TDkgOS42QzcuNyAxMC43IDcgMTIuNiA3IDE0LjVTNy43IDE4LjIgOSAxOS40TDcuNCAyME0xMi43IDE4TDExLjkgMTZMMTAuNSAxOEg5TDExLjMgMTQuOUwxMCAxMkgxMS4zTDEyLjEgMTRMMTMuNSAxMkgxNUwxMi44IDE1TDE0LjEgMThIMTIuN00xNi42IDIwTDE1IDE5LjRDMTYuMyAxOC4yIDE3IDE2LjQgMTcgMTQuNVMxNi4zIDEwLjggMTUgOS42TDE2LjYgOUMxOC4xIDEwLjQgMTkgMTIuNCAxOSAxNC41QzE5IDE2LjYgMTguMSAxOC42IDE2LjYgMjBNMjEgN0gzVjRIMjFWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJZnJhbWVWYXJpYWJsZU91dGxpbmUgPSBcIk0yMSAySDNDMS45IDIgMSAyLjkgMSA0VjIwQzEgMjEuMSAxLjkgMjIgMyAyMkgyMUMyMi4xIDIyIDIzIDIxLjEgMjMgMjBWNEMyMyAyLjkgMjIuMSAyIDIxIDJNMjEgMjBIM1Y2SDIxVjIwTTE2LjYgOEMxOC4xIDkuMyAxOSAxMS4xIDE5IDEzQzE5IDE0LjkgMTguMSAxNi43IDE2LjYgMThMMTUgMTcuNEMxNi4zIDE2LjQgMTcgMTQuNyAxNyAxM1MxNi4zIDkuNiAxNSA4LjZMMTYuNiA4TTcuNCA4TDkgOC42QzcuNyA5LjYgNyAxMS4zIDcgMTNTNy43IDE2LjQgOSAxNy40TDcuNCAxOEM1LjkgMTYuNyA1IDE0LjkgNSAxM1M1LjkgOS4zIDcuNCA4TTEyLjEgMTJMMTMuNSAxMEgxNUwxMi44IDEzTDE0LjEgMTZIMTIuOEwxMiAxNEwxMC42IDE2SDlMMTEuMyAxMi45TDEwIDEwSDExLjNMMTIuMSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZSA9IFwiTTguNSwxMy41TDExLDE2LjVMMTQuNSwxMkwxOSwxOEg1TTIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlQWxidW0gPSBcIk02LDE5TDksMTUuMTRMMTEuMTQsMTcuNzJMMTQuMTQsMTMuODZMMTgsMTlINk02LDRIMTFWMTJMOC41LDEwLjVMNiwxMk0xOCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWNEEyLDIgMCAwLDAgMTgsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUFyZWEgPSBcIk0yMCw1QTIsMiAwIDAsMSAyMiw3VjE3QTIsMiAwIDAsMSAyMCwxOUg0QzIuODksMTkgMiwxOC4xIDIsMTdWN0MyLDUuODkgMi44OSw1IDQsNUgyME01LDE2SDE5TDE0LjUsMTBMMTEsMTQuNUw4LjUsMTEuNUw1LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlQXJlYUNsb3NlID0gXCJNMTIsMjNMOCwxOUgxNkwxMiwyM00yMCwzQTIsMiAwIDAsMSAyMiw1VjE1QTIsMiAwIDAsMSAyMCwxN0g0QTIsMiAwIDAsMSAyLDE1VjVBMiwyIDAgMCwxIDQsM0gyME01LDE0SDE5TDE0LjUsOEwxMSwxMi41TDguNSw5LjVMNSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUF1dG9BZGp1c3QgPSBcIk0xOSAxMFYxOUg1VjVIMTRWM0g1QzMuOTIgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOTIgMjEgNSAyMUgxOUMyMC4xMiAyMSAyMSAyMC4xIDIxIDE5VjEwSDE5TTE3IDEwTDE3Ljk0IDcuOTRMMjAgN0wxNy45NCA2LjA2TDE3IDRMMTYuMDYgNi4wNkwxNCA3TDE2LjA2IDcuOTRMMTcgMTBNMTMuMjUgMTAuNzVMMTIgOEwxMC43NSAxMC43NUw4IDEyTDEwLjc1IDEzLjI1TDEyIDE2TDEzLjI1IDEzLjI1TDE2IDEyTDEzLjI1IDEwLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlQnJva2VuID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxMUgxOVYxM0gxOUwxNywxM1YxNUgxNVYxN0gxM1YxOUgxMVYyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5TTIxLDE1VjE5QTIsMiAwIDAsMSAxOSwyMUgxOUwxNSwyMVYxOUgxN1YxN0gxOVYxNUgyMU0xOSw4LjVBMC41LDAuNSAwIDAsMCAxOC41LDhINS41QTAuNSwwLjUgMCAwLDAgNSw4LjVWMTUuNUEwLjUsMC41IDAgMCwwIDUuNSwxNkgxMVYxNUgxM1YxM0gxNVYxMUgxN1Y5SDE5VjguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUJyb2tlblZhcmlhbnQgPSBcIk0yMSw1VjExLjU5TDE4LDguNThMMTQsMTIuNTlMMTAsOC41OUw2LDEyLjU5TDMsOS41OFY1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVNMTgsMTEuNDJMMjEsMTQuNDNWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWMTIuNDJMNiwxNS40MUwxMCwxMS40MUwxNCwxNS40MVwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRWRpdCA9IFwiTTIyLjcgMTQuM0wyMS43IDE1LjNMMTkuNyAxMy4zTDIwLjcgMTIuM0MyMC44IDEyLjIgMjAuOSAxMi4xIDIxLjEgMTIuMUMyMS4yIDEyLjEgMjEuNCAxMi4yIDIxLjUgMTIuM0wyMi44IDEzLjZDMjIuOSAxMy44IDIyLjkgMTQuMSAyMi43IDE0LjNNMTMgMTkuOVYyMkgxNS4xTDIxLjIgMTUuOUwxOS4yIDEzLjlMMTMgMTkuOU0yMSA1QzIxIDMuOSAyMC4xIDMgMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTFWMTkuMUwxMi4xIDE4SDVMOC41IDEzLjVMMTEgMTYuNUwxNC41IDEyTDE2LjEgMTQuMUwyMSA5LjFWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUVkaXRPdXRsaW5lID0gXCJNMjIuNyAxNC4zTDIxLjcgMTUuM0wxOS43IDEzLjNMMjAuNyAxMi4zQzIwLjggMTIuMiAyMC45IDEyLjEgMjEuMSAxMi4xQzIxLjIgMTIuMSAyMS40IDEyLjIgMjEuNSAxMi4zTDIyLjggMTMuNkMyMi45IDEzLjggMjIuOSAxNC4xIDIyLjcgMTQuM00xMyAxOS45VjIySDE1LjFMMjEuMiAxNS45TDE5LjIgMTMuOUwxMyAxOS45TTExLjIxIDE1LjgzTDkuMjUgMTMuNDdMNi41IDE3SDEzLjEyTDE1LjY2IDE0LjU1TDEzLjk2IDEyLjI5TDExLjIxIDE1LjgzTTExIDE5LjlWMTkuMDVMMTEuMDUgMTlINVY1SDE5VjExLjMxTDIxIDkuMzhWNUMyMSAzLjkgMjAuMTEgMyAxOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTFWMTkuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUZpbHRlckJsYWNrV2hpdGUgPSBcIk0xOSwxOUwxMiwxMVYxOUg1TDEyLDExVjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VGaWx0ZXJDZW50ZXJGb2N1cyA9IFwiTTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOU0xOSwxOUgxNVYyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTVIMTlNMTksM0gxNVY1SDE5VjlIMjFWNUEyLDIgMCAwLDAgMTksM001LDVIOVYzSDVBMiwyIDAgMCwwIDMsNVY5SDVNNSwxNUgzVjE5QTIsMiAwIDAsMCA1LDIxSDlWMTlINVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUZpbHRlckNlbnRlckZvY3VzU3Ryb25nID0gXCJNMTIgOEM4LjQ0IDggNi42NSAxMi4zMSA5LjE3IDE0LjgzQzExLjY5IDE3LjM1IDE2IDE1LjU2IDE2IDEyQzE2IDkuNzkgMTQuMjEgOCAxMiA4TTUgMTVIM1YxOUMzIDIwLjEgMy45IDIxIDUgMjFIOVYxOUg1TTUgNUg5VjNINUMzLjkgMyAzIDMuOSAzIDVWOUg1TTE5IDNIMTVWNUgxOVY5SDIxVjVDMjEgMy45IDIwLjEgMyAxOSAzTTE5IDE5SDE1VjIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVYxNUgxOVwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRmlsdGVyQ2VudGVyRm9jdXNTdHJvbmdPdXRsaW5lID0gXCJNMTcgMTJDMTcgNy41NSAxMS42MiA1LjMxIDguNDYgOC40NkM1LjMxIDExLjYxIDcuNTUgMTcgMTIgMTdDMTQuNzYgMTcgMTcgMTQuNzYgMTcgMTJNMTIgMTVDOS4zMyAxNSA4IDExLjc3IDkuODggOS44OEMxMS43NyA4IDE1IDkuMzMgMTUgMTJDMTUgMTMuNjYgMTMuNjYgMTUgMTIgMTVNNSAxNUgzVjE5QzMgMjAuMSAzLjkgMjEgNSAyMUg5VjE5SDVNNSA1SDlWM0g1QzMuOSAzIDMgMy45IDMgNVY5SDVNMTkgM0gxNVY1SDE5VjlIMjFWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTkgMTlIMTVWMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjE1SDE5XCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VGaWx0ZXJDZW50ZXJGb2N1c1dlYWsgPSBcIk01LDE1SDNWMTlBMiwyIDAgMCwwIDUsMjFIOVYxOUg1TTUsNUg5VjNINUEyLDIgMCAwLDAgMyw1VjlINU0xOSwzSDE1VjVIMTlWOUgyMVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDE1VjIxSDE5QTIsMiAwIDAsMCAyMSwxOVYxNUgxOU0xMiw4QTQsNCAwIDAsMCA4LDEyQTQsNCAwIDAsMCAxMiwxNkE0LDQgMCAwLDAgMTYsMTJBNCw0IDAgMCwwIDEyLDhNMTIsMTRBMiwyIDAgMCwxIDEwLDEyQTIsMiAwIDAsMSAxMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRmlsdGVyRHJhbWEgPSBcIk0xOSwxOEg2QTQsNCAwIDAsMSAyLDE0QTQsNCAwIDAsMSA2LDEwQTQsNCAwIDAsMSAxMCwxNEgxMkMxMiwxMS4yNCAxMC4xNCw4LjkyIDcuNiw4LjIyQzguNjEsNi44OCAxMC4yLDYgMTIsNkMxNS4wMyw2IDE3LjUsOC40NyAxNy41LDExLjVWMTJIMTlBMywzIDAgMCwxIDIyLDE1QTMsMyAwIDAsMSAxOSwxOE0xOS4zNSwxMC4wNEMxOC42Nyw2LjU5IDE1LjY0LDQgMTIsNEM5LjExLDQgNi42MSw1LjY0IDUuMzYsOC4wNEMyLjM1LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRmlsdGVyRnJhbWVzID0gXCJNMTgsOEg2VjE4SDE4TTIwLDIwSDRWNkg4LjVMMTIuMDQsMi41TDE1LjUsNkgyME0yMCw0SDE2TDEyLDBMOCw0SDRBMiwyIDAgMCwwIDIsNlYyMEEyLDIgMCAwLDAgNCwyMkgyMEEyLDIgMCAwLDAgMjIsMjBWNkEyLDIgMCAwLDAgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUZpbHRlckhkciA9IFwiTTE0LDZMMTAuMjUsMTFMMTMuMSwxNC44TDExLjUsMTZDOS44MSwxMy43NSA3LDEwIDcsMTBMMSwxOEgyM0wxNCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRmlsdGVyTm9uZSA9IFwiTTIxLDE3SDdWM0gyMU0yMSwxSDdBMiwyIDAgMCwwIDUsM1YxN0EyLDIgMCAwLDAgNywxOUgyMUEyLDIgMCAwLDAgMjMsMTdWM0EyLDIgMCAwLDAgMjEsMU0zLDVIMVYyMUEyLDIgMCAwLDAgMywyM0gxOVYyMUgzVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VGaWx0ZXJUaWx0U2hpZnQgPSBcIk01LjY4LDE5Ljc0QzcuMTYsMjAuOTUgOSwyMS43NSAxMSwyMS45NVYxOS45M0M5LjU0LDE5Ljc1IDguMjEsMTkuMTcgNy4xLDE4LjMxTTEzLDE5LjkzVjIxLjk1QzE1LDIxLjc1IDE2Ljg0LDIwLjk1IDE4LjMyLDE5Ljc0TDE2Ljg5LDE4LjMxQzE1Ljc5LDE5LjE3IDE0LjQ2LDE5Ljc1IDEzLDE5LjkzTTE4LjMxLDE2LjlMMTkuNzQsMTguMzNDMjAuOTUsMTYuODUgMjEuNzUsMTUgMjEuOTUsMTNIMTkuOTNDMTkuNzUsMTQuNDYgMTkuMTcsMTUuNzkgMTguMzEsMTYuOU0xNSwxMkEzLDMgMCAwLDAgMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyTTQuMDcsMTNIMi4wNUMyLjI1LDE1IDMuMDUsMTYuODQgNC4yNiwxOC4zMkw1LjY5LDE2Ljg5QzQuODMsMTUuNzkgNC4yNSwxNC40NiA0LjA3LDEzTTUuNjksNy4xTDQuMjYsNS42OEMzLjA1LDcuMTYgMi4yNSw5IDIuMDUsMTFINC4wN0M0LjI1LDkuNTQgNC44Myw4LjIxIDUuNjksNy4xTTE5LjkzLDExSDIxLjk1QzIxLjc1LDkgMjAuOTUsNy4xNiAxOS43NCw1LjY4TDE4LjMxLDcuMUMxOS4xNyw4LjIxIDE5Ljc1LDkuNTQgMTkuOTMsMTFNMTguMzIsNC4yNkMxNi44NCwzLjA1IDE1LDIuMjUgMTMsMi4wNVY0LjA3QzE0LjQ2LDQuMjUgMTUuNzksNC44MyAxNi45LDUuNjlNMTEsNC4wN1YyLjA1QzksMi4yNSA3LjE2LDMuMDUgNS42OCw0LjI2TDcuMSw1LjY5QzguMjEsNC44MyA5LjU0LDQuMjUgMTEsNC4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUZpbHRlclZpbnRhZ2UgPSBcIk0xMiwxNkE0LDQgMCAwLDEgOCwxMkE0LDQgMCAwLDEgMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2TTE4LjcsMTIuNEMxOC40MiwxMi4yNCAxOC4xMywxMi4xMSAxNy44NCwxMkMxOC4xMywxMS44OSAxOC40MiwxMS43NiAxOC43LDExLjZDMjAuNjIsMTAuNSAyMS42OSw4LjUgMjEuNyw2LjQxQzE5LjkxLDUuMzggMTcuNjMsNS4zIDE1LjcsNi40MUMxNS40Miw2LjU3IDE1LjE2LDYuNzYgMTQuOTIsNi45NUMxNC45Nyw2LjY0IDE1LDYuMzIgMTUsNkMxNSwzLjc4IDEzLjc5LDEuODUgMTIsMC44MUMxMC4yMSwxLjg1IDksMy43OCA5LDZDOSw2LjMyIDkuMDMsNi42NCA5LjA4LDYuOTVDOC44NCw2Ljc1IDguNTgsNi41NiA4LjMsNi40QzYuMzgsNS4yOSA0LjEsNS4zNyAyLjMsNi40QzIuMyw4LjQ3IDMuMzcsMTAuNSA1LjMsMTEuNTlDNS41OCwxMS43NSA1Ljg3LDExLjg4IDYuMTYsMTJDNS44NywxMi4xIDUuNTgsMTIuMjMgNS4zLDEyLjM5QzMuMzgsMTMuNSAyLjMxLDE1LjUgMi4zLDE3LjU4QzQuMDksMTguNjEgNi4zNywxOC42OSA4LjMsMTcuNThDOC41OCwxNy40MiA4Ljg0LDE3LjIzIDkuMDgsMTcuMDRDOS4wMywxNy4zNiA5LDE3LjY4IDksMThDOSwyMC4yMiAxMC4yMSwyMi4xNSAxMiwyMy4xOUMxMy43OSwyMi4xNSAxNSwyMC4yMiAxNSwxOEMxNSwxNy42OCAxNC45NywxNy4zNiAxNC45MiwxNy4wNUMxNS4xNiwxNy4yNSAxNS40MiwxNy40MyAxNS43LDE3LjU5QzE3LjYyLDE4LjcgMTkuOSwxOC42MiAyMS43LDE3LjU5QzIxLjY5LDE1LjUgMjAuNjIsMTMuNSAxOC43LDEyLjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VGcmFtZSA9IFwiTTEwLDE0LjI5TDYuNSwxOUgxNy40NkwxNC43NSwxNS40NkwxMi43OCwxNy44TDEwLDE0LjI5TTUsMjFWN0gxOC45NlYyMUg1TTEyLDIuNEwxNC42MSw1LjAzSDkuMzdMMTIsMi40TTUsNS4wM0M0LjUsNS4wMyA0LDUuMjIgMy42MSw1LjYxQzMuMiw2IDMsNi40NiAzLDdWMjFDMywyMS41IDMuMiwyMiAzLjYxLDIyLjM5QzQsMjIuOCA0LjUsMjMgNSwyM0gxOC45NkMxOS41LDIzIDE5Ljk2LDIyLjggMjAuMzcsMjIuMzlDMjAuNzcsMjIgMjEsMjEuNSAyMSwyMVY3QzIxLDYuNDYgMjAuNzcsNiAyMC4zNyw1LjYxQzE5Ljk2LDUuMjIgMTkuNSw1LjAzIDE4Ljk2LDUuMDNIMTZMMTIsMUw3Ljk2LDUuMDNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZU1pbnVzID0gXCJNNSAzQzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE0LjA5QzE0LjAzIDIwLjY3IDE0IDIwLjM0IDE0IDIwQzE0IDE5LjMyIDE0LjEyIDE4LjY0IDE0LjM1IDE4SDVMOC41IDEzLjVMMTEgMTYuNUwxNC41IDEyTDE2LjczIDE0Ljk3QzE3LjcgMTQuMzQgMTguODQgMTQgMjAgMTRDMjAuMzQgMTQgMjAuNjcgMTQuMDMgMjEgMTQuMDlWNUMyMSAzLjg5IDIwLjEgMyAxOSAzSDVNMTYgMTlWMjFIMjRWMTlIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VNb3ZlID0gXCJNMTUsM0gxOVYwTDI0LDVMMTksMTBWN0gxNVYzTTIxLDExLjk0VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxMi4wNkMxMiwzLjMzIDEyLDMuNjcgMTIsNEE4LDggMCAwLDAgMjAsMTJDMjAuMzMsMTIgMjAuNjcsMTIgMjEsMTEuOTRNMTksMThMMTQuNSwxMkwxMSwxNi41TDguNSwxMy41TDUsMThIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VNdWx0aXBsZSA9IFwiTTIyLDE2VjRBMiwyIDAgMCwwIDIwLDJIOEEyLDIgMCAwLDAgNiw0VjE2QTIsMiAwIDAsMCA4LDE4SDIwQTIsMiAwIDAsMCAyMiwxNk0xMSwxMkwxMy4wMywxNC43MUwxNiwxMUwyMCwxNkg4TTIsNlYyMEEyLDIgMCAwLDAgNCwyMkgxOFYyMEg0VjZcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZU11bHRpcGxlT3V0bGluZSA9IFwiTTIxLDE3SDdWM0gyMU0yMSwxSDdBMiwyIDAgMCwwIDUsM1YxN0EyLDIgMCAwLDAgNywxOUgyMUEyLDIgMCAwLDAgMjMsMTdWM0EyLDIgMCAwLDAgMjEsMU0zLDVIMVYyMUEyLDIgMCAwLDAgMywyM0gxOVYyMUgzTTE1Ljk2LDEwLjI5TDEzLjIxLDEzLjgzTDExLjI1LDExLjQ3TDguNSwxNUgxOS41TDE1Ljk2LDEwLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlT2ZmID0gXCJNMjEgMTcuMkw2LjggM0gxOUMyMC4xIDMgMjEgMy45IDIxIDVWMTcuMk0yMC43IDIyTDE5LjcgMjFINUMzLjkgMjEgMyAyMC4xIDMgMTlWNC4zTDIgMy4zTDMuMyAyTDIyIDIwLjdMMjAuNyAyMk0xNi44IDE4TDEyLjkgMTQuMUwxMSAxNi41TDguNSAxMy41TDUgMThIMTYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZU9mZk91dGxpbmUgPSBcIk0yMiAyMC43TDMuMyAyTDIgMy4zTDMgNC4zVjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOS43TDIwLjcgMjJMMjIgMjAuN001IDE5VjYuM0wxMi42IDEzLjlMMTEuMSAxNS44TDkgMTMuMUw2IDE3SDE1LjdMMTcuNyAxOUg1TTguOCA1TDYuOCAzSDE5QzIwLjEgMyAyMSAzLjkgMjEgNVYxNy4yTDE5IDE1LjJWNUg4LjhcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZU91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTMuOTYsMTIuMjlMMTEuMjEsMTUuODNMOS4yNSwxMy40N0w2LjUsMTdIMTcuNUwxMy45NiwxMi4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZVBsdXMgPSBcIk01LDNBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxNC4wOUMxNC4wMywyMC42NyAxNCwyMC4zNCAxNCwyMEMxNCwxOS4zMiAxNC4xMiwxOC42NCAxNC4zNSwxOEg1TDguNSwxMy41TDExLDE2LjVMMTQuNSwxMkwxNi43MywxNC45N0MxNy43LDE0LjM0IDE4Ljg0LDE0IDIwLDE0QzIwLjM0LDE0IDIwLjY3LDE0LjAzIDIxLDE0LjA5VjVDMjEsMy44OSAyMC4xLDMgMTksM0g1TTE5LDE2VjE5SDE2VjIxSDE5VjI0SDIxVjIxSDI0VjE5SDIxVjE2SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlUmVtb3ZlID0gXCJNNSAzQzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE0LjA5QzE0LjAzIDIwLjY3IDE0IDIwLjM0IDE0IDIwQzE0IDE5LjMyIDE0LjEyIDE4LjY0IDE0LjM1IDE4SDVMOC41IDEzLjVMMTEgMTYuNUwxNC41IDEyTDE2LjczIDE0Ljk3QzE3LjcgMTQuMzQgMTguODQgMTQgMjAgMTRDMjAuMzQgMTQgMjAuNjcgMTQuMDMgMjEgMTQuMDlWNUMyMSAzLjg5IDIwLjEgMyAxOSAzSDVNMTYuNDcgMTcuODhMMTguNTkgMjBMMTYuNDcgMjIuMTJMMTcuODggMjMuNTRMMjAgMjEuNDFMMjIuMTIgMjMuNTRMMjMuNTQgMjIuMTJMMjEuNDEgMjBMMjMuNTQgMTcuODhMMjIuMTIgMTYuNDZMMjAgMTguNTlMMTcuODggMTYuNDdMMTYuNDYgMTcuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VTZWFyY2ggPSBcIk0xNS41LDJDMTgsMiAyMCw0IDIwLDYuNUMyMCw3LjM4IDE5Ljc1LDguMjEgMTkuMzEsOC45TDIyLjM5LDEyTDIxLDEzLjM5TDE3Ljg4LDEwLjMyQzE3LjE5LDEwLjc1IDE2LjM3LDExIDE1LjUsMTFDMTMsMTEgMTEsOSAxMSw2LjVDMTEsNCAxMywyIDE1LjUsMk0xNS41LDRBMi41LDIuNSAwIDAsMCAxMyw2LjVBMi41LDIuNSAwIDAsMCAxNS41LDlBMi41LDIuNSAwIDAsMCAxOCw2LjVBMi41LDIuNSAwIDAsMCAxNS41LDRNNy41LDE0LjVMNCwxOUgxOEwxMy41LDEzTDEwLDE3LjVMNy41LDE0LjVNMjAsMjBBMiwyIDAgMCwxIDE4LDIySDRBMiwyIDAgMCwxIDIsMjBWNkEyLDIgMCAwLDEgNCw0SDkuNUM5LjE4LDQuNzcgOSw1LjYxIDksNi41QTYuNSw2LjUgMCAwLDAgMTUuNSwxM0MxNi4xOCwxMyAxNi44NCwxMi44OSAxNy40NiwxMi43TDIwLDE1LjI0VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlU2VhcmNoT3V0bGluZSA9IFwiTTE1LjUsOUMxNi4yLDkgMTYuNzksOC43NiAxNy4yNyw4LjI3QzE3Ljc2LDcuNzkgMTgsNy4yIDE4LDYuNUMxOCw1LjgzIDE3Ljc2LDUuMjMgMTcuMjcsNC43M0MxNi43OSw0LjIzIDE2LjIsNCAxNS41LDRDMTQuODMsNCAxNC4yMyw0LjIzIDEzLjczLDQuNzNDMTMuMjMsNS4yMyAxMyw1LjgzIDEzLDYuNUMxMyw3LjIgMTMuMjMsNy43OSAxMy43Myw4LjI3QzE0LjIzLDguNzYgMTQuODMsOSAxNS41LDlNMTkuMzEsOC45MUwyMi40MSwxMkwyMSwxMy40MUwxNy44NiwxMC4zMUMxNy4wOCwxMC43OCAxNi4yOCwxMSAxNS40NywxMUMxNC4yMiwxMSAxMy4xNiwxMC41OCAxMi4zLDkuN0MxMS40NSw4LjgzIDExLDcuNzcgMTEsNi41QzExLDUuMjcgMTEuNDUsNC4yIDEyLjMzLDMuMzNDMTMuMiwyLjQ1IDE0LjI3LDIgMTUuNSwyQzE2Ljc3LDIgMTcuODMsMi40NSAxOC43LDMuMzNDMTkuNTgsNC4yIDIwLDUuMjcgMjAsNi41QzIwLDcuMzMgMTkuNzgsOC4xMyAxOS4zMSw4LjkxTTE2LjUsMThINS41TDguMjUsMTQuNUwxMC4yMiwxNi44M0wxMi45NCwxMy4zMUwxNi41LDE4TTE4LDEzTDIwLDE1VjIwQzIwLDIwLjU1IDE5LjgxLDIxIDE5LjQxLDIxLjRDMTksMjEuNzkgMTguNTMsMjIgMTgsMjJINEMzLjQ1LDIyIDMsMjEuNzkgMi42LDIxLjRDMi4yMSwyMSAyLDIwLjU1IDIsMjBWNkMyLDUuNDcgMi4yMSw1IDIuNiw0LjU5QzMsNC4xOSAzLjQ1LDQgNCw0SDkuNUM5LjIsNC42NCA5LjAzLDUuMzEgOSw2SDRWMjBIMThWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VTaXplU2VsZWN0QWN0dWFsID0gXCJNMjEsM0gzQzIsMyAxLDQgMSw1VjE5QTIsMiAwIDAsMCAzLDIxSDIxQzIyLDIxIDIzLDIwIDIzLDE5VjVDMjMsNCAyMiwzIDIxLDNNNSwxN0w4LjUsMTIuNUwxMSwxNS41TDE0LjUsMTFMMTksMTdINVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZVNpemVTZWxlY3RMYXJnZSA9IFwiTTIxLDE1SDIzVjE3SDIxVjE1TTIxLDExSDIzVjEzSDIxVjExTTIzLDE5SDIxVjIxQzIyLDIxIDIzLDIwIDIzLDE5TTEzLDNIMTVWNUgxM1YzTTIxLDdIMjNWOUgyMVY3TTIxLDNWNUgyM0MyMyw0IDIyLDMgMjEsM00xLDdIM1Y5SDFWN00xNywzSDE5VjVIMTdWM00xNywxOUgxOVYyMUgxN1YxOU0zLDNDMiwzIDEsNCAxLDVIM1YzTTksM0gxMVY1SDlWM001LDNIN1Y1SDVWM00xLDExVjE5QTIsMiAwIDAsMCAzLDIxSDE1VjExSDFNMywxOUw1LjUsMTUuNzlMNy4yOSwxNy45NEw5Ljc5LDE0LjcyTDEzLDE5SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VTaXplU2VsZWN0U21hbGwgPSBcIk0yMywxNUgyMVYxN0gyM1YxNU0yMywxMUgyMVYxM0gyM1YxMU0yMywxOUgyMVYyMUMyMiwyMSAyMywyMCAyMywxOU0xNSwzSDEzVjVIMTVWM00yMyw3SDIxVjlIMjNWN00yMSwzVjVIMjNDMjMsNCAyMiwzIDIxLDNNMywyMUgxMVYxNUgxVjE5QTIsMiAwIDAsMCAzLDIxTTMsN0gxVjlIM1Y3TTE1LDE5SDEzVjIxSDE1VjE5TTE5LDNIMTdWNUgxOVYzTTE5LDE5SDE3VjIxSDE5VjE5TTMsM0MyLDMgMSw0IDEsNUgzVjNNMywxMUgxVjEzSDNWMTFNMTEsM0g5VjVIMTFWM003LDNINVY1SDdWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZVRleHQgPSBcIk0yMiAxM0gxNFYxMUgyMlYxM00yMiA3SDE0VjlIMjJWN00xNCAxN0gyMlYxNUgxNFYxN00xMiA5VjE1QzEyIDE2LjEgMTEuMSAxNyAxMCAxN0g0QzIuOSAxNyAyIDE2LjEgMiAxNVY5QzIgNy45IDIuOSA3IDQgN0gxMEMxMS4xIDcgMTIgNy45IDEyIDlNMTAuNSAxNUw4LjMgMTJMNi41IDE0LjNMNS4zIDEyLjhMMy41IDE1SDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1wb3J0ID0gXCJNMTQsMTJMMTAsOFYxMUgyVjEzSDEwVjE2TTIwLDE4VjZDMjAsNC44OSAxOS4xLDQgMTgsNEg2QTIsMiAwIDAsMCA0LDZWOUg2VjZIMThWMThINlYxNUg0VjE4QTIsMiAwIDAsMCA2LDIwSDE4QTIsMiAwIDAsMCAyMCwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveCA9IFwiTTE5LDE1SDE1QTMsMyAwIDAsMSAxMiwxOEEzLDMgMCAwLDEgOSwxNUg1VjVIMTlNMTksM0g1QzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5ib3hBcnJvd0Rvd24gPSBcIk0xNiwxMEgxNFY3SDEwVjEwSDhMMTIsMTRNMTksMTVIMTVBMywzIDAgMCwxIDEyLDE4QTMsMyAwIDAsMSA5LDE1SDVWNUgxOU0xOSwzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveEFycm93RG93bk91dGxpbmUgPSBcIk0xOSAzSDVBMiAyIDAgMCAwIDMgNVYxOUEyIDIgMCAwIDAgNSAyMUgxOUEyIDIgMCAwIDAgMjEgMTlWNUEyIDIgMCAwIDAgMTkgM001IDE5VjE3SDguMTNBNC4xMyA0LjEzIDAgMCAwIDkuNCAxOU0xOSAxOUgxNC42QTQuMTMgNC4xMyAwIDAgMCAxNS44NyAxN0gxOU0xOSAxNUgxNFYxNkEyIDIgMCAwIDEgMTAgMTZWMTVINVY1SDE5TTE2IDEwSDE0VjdIMTBWMTBIOEwxMiAxNFwiO1xyXG5leHBvcnQgdmFyIG1kaUluYm94QXJyb3dVcCA9IFwiTTE0LDE0SDEwVjExSDhMMTIsN0wxNiwxMUgxNFYxNE0xNiwxMU01LDE1VjVIMTlWMTVIMTVBMywzIDAgMCwxIDEyLDE4QTMsMyAwIDAsMSA5LDE1SDVNMTksM0g1QzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveEFycm93VXBPdXRsaW5lID0gXCJNMTkgM0g1QTIgMiAwIDAgMCAzIDVWMTlBMiAyIDAgMCAwIDUgMjFIMTlBMiAyIDAgMCAwIDIxIDE5VjVBMiAyIDAgMCAwIDE5IDNNNSAxOVYxN0g4LjEzQTQuMTMgNC4xMyAwIDAgMCA5LjQgMTlNMTkgMTlIMTQuNkE0LjEzIDQuMTMgMCAwIDAgMTUuODcgMTdIMTlNMTkgMTVIMTRWMTZBMiAyIDAgMCAxIDEwIDE2VjE1SDVWNUgxOU04IDExSDEwVjE0SDE0VjExSDE2TDEyIDdcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveEZ1bGwgPSBcIk0xOSAxNVY1SDVWMTVIOUM5IDE2LjY2IDEwLjM0IDE4IDEyIDE4QzEzLjY2IDE4IDE1IDE2LjY2IDE1IDE1SDE5TTE5IDNDMjAuMSAzIDIxIDMuOSAyMSA1VjE5QzIxIDIwLjEgMjAuMSAyMSAxOSAyMUg1QzMuODkgMjEgMyAyMC4xIDMgMTlMMyA1QzMgMy45IDMuODkgMyA1IDNIMTlNNyAxM1YxMUgxN1YxM0g3TTcgOVY3SDE3VjlIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveEZ1bGxPdXRsaW5lID0gXCJNMTkgM0MyMC4xIDMgMjEgMy45IDIxIDVWMTlDMjEgMjAuMSAyMC4xIDIxIDE5IDIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDE5TTUgMTlIOS40QzguNzkgMTguNDcgOC4zNSAxNy43OCA4LjEzIDE3SDVWMTlNMTkgMTlWMTdIMTUuODdDMTUuNjUgMTcuNzggMTUuMjEgMTguNDcgMTQuNiAxOUgxOU0xOSAxNVY1SDVWMTVIMTBWMTZDMTAgMTguNjcgMTQgMTguNjcgMTQgMTZWMTVIMTlNNyA3SDE3VjlIN1Y3TTE3IDExVjEzSDdWMTFIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5ib3hNdWx0aXBsZSA9IFwiTTE5LDhWNUg1VjhIOUEzLDMgMCAwLDAgMTIsMTFBMywzIDAgMCwwIDE1LDhIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxMkEyLDIgMCAwLDEgMTksMTRINUEyLDIgMCAwLDEgMywxMlY1QTIsMiAwIDAsMSA1LDNIMTlNMywxNUg5QTMsMyAwIDAsMCAxMiwxOEEzLDMgMCAwLDAgMTUsMTVIMjFWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5ib3hNdWx0aXBsZU91dGxpbmUgPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjEyQTIsMiAwIDAsMSAxOSwxNEg1QTIsMiAwIDAsMSAzLDEyVjVBMiwyIDAgMCwxIDUsM0gxOU01LDEwVjEySDkuNEM4LjgsMTEuNDcgOC4zNCwxMC43OCA4LjEzLDEwSDVNMTksMTJWMTBIMTUuODdDMTUuNjYsMTAuNzggMTUuMiwxMS40NyAxNC42LDEySDE5TTE5LDhWNUg1VjhIMTBWOUMxMCwxMC4wNyAxMC45MywxMSAxMiwxMUMxMy4wNywxMSAxNCwxMC4wNyAxNCw5VjhIMTlNMjEsMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWMTVIMTBWMTZDMTAsMTcuMDcgMTAuOTMsMTggMTIsMThDMTMuMDcsMTggMTQsMTcuMDcgMTQsMTZWMTVIMjFWMTlNNSwxN1YxOUg5LjRDOC44LDE4LjQ3IDguMzQsMTcuNzggOC4xMywxN0g1TTE5LDE5VjE3SDE1Ljg3QzE1LjY2LDE3Ljc4IDE1LjIsMTguNDcgMTQuNiwxOUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveE91dGxpbmUgPSBcIk0xOSAzSDVBMiAyIDAgMCAwIDMgNVYxOUEyIDIgMCAwIDAgNSAyMUgxOUEyIDIgMCAwIDAgMjEgMTlWNUEyIDIgMCAwIDAgMTkgM001IDE5VjE3SDguMTNBNC4xMyA0LjEzIDAgMCAwIDkuNCAxOU0xOSAxOUgxNC42QTQuMTMgNC4xMyAwIDAgMCAxNS44NyAxN0gxOU0xOSAxNUgxNFYxNkEyIDIgMCAwIDEgMTAgMTZWMTVINVY1SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUluYm94UmVtb3ZlID0gXCJNMTkgMTVIMTVDMTUgMTYuNyAxMy43IDE4IDEyIDE4UzkgMTYuNyA5IDE1SDVWNUgxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTQuMSA2LjVMMTUuNSA3LjlMMTMuNCAxMEwxNS41IDEyLjFMMTQuMSAxMy41TDEyIDExLjRMOS45IDEzLjVMOC41IDEyLjFMMTAuNiAxMEw4LjUgNy45TDkuOSA2LjVMMTIgOC42TDE0LjEgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUluYm94UmVtb3ZlT3V0bGluZSA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM001IDE5VjE3SDguMUM4LjMgMTcuOCA4LjggMTguNSA5LjQgMTlNMTkgMTlIMTQuNkMxNS4yIDE4LjUgMTUuNyAxNy44IDE1LjkgMTdIMTlNMTkgMTVIMTRWMTZDMTQgMTcuMSAxMy4xIDE4IDEyIDE4UzEwIDE3LjEgMTAgMTZWMTVINVY1SDE5VjE1TTE0LjEgNi41TDE1LjUgNy45TDEzLjQgMTBMMTUuNSAxMi4xTDE0LjEgMTMuNUwxMiAxMS40TDkuOSAxMy41TDguNSAxMi4xTDEwLjYgMTBMOC41IDcuOUw5LjkgNi41TDEyIDguNkwxNC4xIDYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbmNvZ25pdG8gPSBcIk0xNy4wNiAxM0MxNS4yIDEzIDEzLjY0IDE0LjMzIDEzLjI0IDE2LjFDMTIuMjkgMTUuNjkgMTEuNDIgMTUuOCAxMC43NiAxNi4wOUMxMC4zNSAxNC4zMSA4Ljc5IDEzIDYuOTQgMTNDNC43NyAxMyAzIDE0Ljc5IDMgMTdDMyAxOS4yMSA0Ljc3IDIxIDYuOTQgMjFDOSAyMSAxMC42OCAxOS4zOCAxMC44NCAxNy4zMkMxMS4xOCAxNy4wOCAxMi4wNyAxNi42MyAxMy4xNiAxNy4zNEMxMy4zNCAxOS4zOSAxNSAyMSAxNy4wNiAyMUMxOS4yMyAyMSAyMSAxOS4yMSAyMSAxN0MyMSAxNC43OSAxOS4yMyAxMyAxNy4wNiAxM002Ljk0IDE5Ljg2QzUuMzggMTkuODYgNC4xMyAxOC41OCA0LjEzIDE3UzUuMzkgMTQuMTQgNi45NCAxNC4xNEM4LjUgMTQuMTQgOS43NSAxNS40MiA5Ljc1IDE3UzguNSAxOS44NiA2Ljk0IDE5Ljg2TTE3LjA2IDE5Ljg2QzE1LjUgMTkuODYgMTQuMjUgMTguNTggMTQuMjUgMTdTMTUuNSAxNC4xNCAxNy4wNiAxNC4xNEMxOC42MiAxNC4xNCAxOS44OCAxNS40MiAxOS44OCAxN1MxOC42MSAxOS44NiAxNy4wNiAxOS44Nk0yMiAxMC41SDJWMTJIMjJWMTAuNU0xNS41MyAyLjYzQzE1LjMxIDIuMTQgMTQuNzUgMS44OCAxNC4yMiAyLjA1TDEyIDIuNzlMOS43NyAyLjA1TDkuNzIgMi4wNEM5LjE5IDEuODkgOC42MyAyLjE3IDguNDMgMi42OEw2IDlIMThMMTUuNTYgMi42OEwxNS41MyAyLjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUluY29nbml0b0NpcmNsZSA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyIDIgMTcuNSAyIDEyIDYuNSAyIDEyIDJNMTQuOTIgMTIuODFDMTMuODQgMTIuODEgMTIuOTUgMTMuNTYgMTIuNzEgMTQuNTZDMTIuMTcgMTQuMzMgMTEuNjYgMTQuMzkgMTEuMjkgMTQuNTVDMTEuMDUgMTMuNTUgMTAuMTUgMTIuODEgOS4wOCAxMi44MUM3LjgzIDEyLjgxIDYuODIgMTMuODIgNi44MiAxNS4wN0M2LjgyIDE2LjMyIDcuODMgMTcuMzMgOS4wOCAxNy4zM0MxMC4yOCAxNy4zMyAxMS4yNCAxNi40MiAxMS4zMyAxNS4yNUMxMS41MyAxNS4xMiAxMi4wNCAxNC44NiAxMi42NyAxNS4yNkMxMi43NyAxNi40MiAxMy43MyAxNy4zMyAxNC45MiAxNy4zM0MxNi4xNyAxNy4zMyAxNy4xOCAxNi4zMiAxNy4xOCAxNS4wN0MxNy4xOCAxMy44MiAxNi4xNyAxMi44MSAxNC45MiAxMi44MU05LjA4IDEzLjQ1QzEwIDEzLjQ1IDEwLjcgMTQuMTggMTAuNyAxNS4wN0MxMC43IDE1Ljk2IDEwIDE2LjY5IDkuMDggMTYuNjlDOC4xOSAxNi42OSA3LjQ2IDE1Ljk2IDcuNDYgMTUuMDdDNy40NiAxNC4xOCA4LjE5IDEzLjQ1IDkuMDggMTMuNDVNMTQuOTIgMTMuNDVDMTUuODEgMTMuNDUgMTYuNTQgMTQuMTggMTYuNTQgMTUuMDdDMTYuNTQgMTUuOTYgMTUuODEgMTYuNjkgMTQuOTIgMTYuNjlDMTQgMTYuNjkgMTMuMyAxNS45NiAxMy4zIDE1LjA3QzEzLjMgMTQuMTggMTQgMTMuNDUgMTQuOTIgMTMuNDVNMTcuODMgMTEuNUg2LjE3VjEyLjE3SDE3LjgzVjExLjVNMTQuMTUgNi44OUMxNCA2LjU5IDEzLjY3IDYuNDMgMTMuMzUgNi41M0wxMiA3TDEwLjY1IDYuNTNMMTAuNjEgNi41QzEwLjI5IDYuNDMgOS45NSA2LjYxIDkuODQgNi45Mkw4LjM2IDEwLjgzSDE1LjY0TDE0LjE2IDYuOTJMMTQuMTUgNi44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbmNvZ25pdG9DaXJjbGVPZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDQuMDYgNS45NUMyLjc3IDcuNjMgMiA5LjcyIDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNC4yOCAyMiAxNi4zNyAyMS4yMyAxOC4wNSAxOS45NEwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk04Ljk0IDEwLjgzSDguMzZMOC41IDEwLjQxTDguOTQgMTAuODNNNi4xNyAxMS41SDkuNjFMMTAuMjggMTIuMTdINi4xN1YxMS41TTE0LjkyIDE3LjMzQzEzLjczIDE3LjMzIDEyLjc3IDE2LjQyIDEyLjY3IDE1LjI2QzEyLjA0IDE0Ljg2IDExLjUzIDE1LjEyIDExLjMzIDE1LjI1QzExLjI0IDE2LjQyIDEwLjI4IDE3LjMzIDkuMDggMTcuMzNDNy44MyAxNy4zMyA2LjgyIDE2LjMyIDYuODIgMTUuMDdDNi44MiAxMy44MiA3LjgzIDEyLjgxIDkuMDggMTIuODFDMTAuMTUgMTIuODEgMTEuMDUgMTMuNTUgMTEuMjkgMTQuNTVDMTEuNjUgMTQuNCAxMi4xMyAxNC4zNCAxMi42NSAxNC41NEwxMy4zMSAxNS4yQzEzLjM3IDE2IDE0IDE2LjYxIDE0Ljc4IDE2LjY3TDE1LjM4IDE3LjI3QzE1LjIzIDE3LjMgMTUuMDggMTcuMzMgMTQuOTIgMTcuMzNNOS45NCA2Ljc0TDYuNzIgMy41QzguMjUgMi41NiAxMC4wNiAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxMy45NCAyMS40NCAxNS43NSAyMC41IDE3LjI4TDE1LjM3IDEyLjE3SDE3LjgzVjExLjVIMTQuN0wxNC4wMyAxMC44M0gxNS42NEwxNC4xNiA2LjkyTDE0LjE1IDYuODlDMTQgNi41OSAxMy42NyA2LjQzIDEzLjM1IDYuNTNMMTIgN0wxMC42NSA2LjUzTDEwLjYxIDYuNUMxMC4zNiA2LjQ1IDEwLjEgNi41NSA5Ljk0IDYuNzRNMTAuNyAxNS4wN0MxMC43IDE1Ljk2IDEwIDE2LjY5IDkuMDggMTYuNjlDOC4xOSAxNi42OSA3LjQ2IDE1Ljk2IDcuNDYgMTUuMDdTOC4xOSAxMy40NSA5LjA4IDEzLjQ1QzEwIDEzLjQ1IDEwLjcgMTQuMTggMTAuNyAxNS4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbmNvZ25pdG9PZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDYuMzEgOC4yTDYgOUg3LjExTDguNjEgMTAuNUgyVjEySDEwLjExTDEzLjUgMTUuMzdDMTMuMzggMTUuNjEgMTMuMyAxNS44NSAxMy4yNCAxNi4xQzEyLjI5IDE1LjY5IDExLjQxIDE1LjggMTAuNzYgMTYuMDlDMTAuMzUgMTQuMzEgOC43OSAxMyA2Ljk0IDEzQzQuNzcgMTMgMyAxNC43OSAzIDE3QzMgMTkuMjEgNC43NyAyMSA2Ljk0IDIxQzkgMjEgMTAuNjggMTkuMzggMTAuODQgMTcuMzJDMTEuMTggMTcuMDggMTIuMDcgMTYuNjMgMTMuMTYgMTcuMzRDMTMuMzQgMTkuMzkgMTUgMjEgMTcuMDYgMjFDMTcuNjYgMjEgMTguMjIgMjAuODYgMTguNzIgMjAuNjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNi45NCAxOS44NkM1LjM4IDE5Ljg2IDQuMTMgMTguNTggNC4xMyAxN0M0LjEzIDE1LjQyIDUuMzkgMTQuMTQgNi45NCAxNC4xNEM4LjUgMTQuMTQgOS43NSAxNS40MiA5Ljc1IDE3QzkuNzUgMTguNTggOC41IDE5Ljg2IDYuOTQgMTkuODZNMTcuMDYgMTkuODZDMTUuNSAxOS44NiAxNC4yNSAxOC41OCAxNC4yNSAxN0MxNC4yNSAxNi43NCAxNC4yOSAxNi41IDE0LjM2IDE2LjI1TDE3Ljg0IDE5LjczQzE3LjU5IDE5LjgxIDE3LjM0IDE5Ljg2IDE3LjA2IDE5Ljg2TTIyIDEySDE1LjJMMTMuNyAxMC41SDIyVjEyTTE3LjA2IDEzQzE5LjIzIDEzIDIxIDE0Ljc5IDIxIDE3QzIxIDE3LjI1IDIwLjk3IDE3LjUgMjAuOTMgMTcuNzNMMTkuODQgMTYuNjRDMTkuNjggMTUuMzQgMTguNjYgMTQuMzIgMTcuMzggMTQuMTdMMTYuMjkgMTMuMDlDMTYuNTQgMTMuMDMgMTYuOCAxMyAxNy4wNiAxM00xMi4yIDlMNy43MiA0LjVMOC40MyAyLjY4QzguNjMgMi4xNyA5LjE5IDEuODkgOS43MiAyLjA0TDkuNzcgMi4wNUwxMiAyLjc5TDE0LjIyIDIuMDVDMTQuNzUgMS44OCAxNS4zMiAyLjE0IDE1LjU0IDIuNjNMMTUuNTYgMi42OEwxOCA5SDEyLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5maW5pdHkgPSBcIk0xOC42LDYuNjJDMjEuNTgsNi42MiAyNCw5IDI0LDEyQzI0LDE0Ljk2IDIxLjU4LDE3LjM3IDE4LjYsMTcuMzdDMTcuMTUsMTcuMzcgMTUuOCwxNi44MSAxNC43OCwxNS44TDEyLDEzLjM0TDkuMTcsMTUuODVDOC4yLDE2LjgyIDYuODQsMTcuMzggNS40LDE3LjM4QzIuNDIsMTcuMzggMCwxNC45NiAwLDEyQzAsOS4wNCAyLjQyLDYuNjIgNS40LDYuNjJDNi44NCw2LjYyIDguMiw3LjE4IDkuMjIsOC4yTDEyLDEwLjY2TDE0LjgzLDguMTVDMTUuOCw3LjE4IDE3LjE2LDYuNjIgMTguNiw2LjYyTTcuOCwxNC4zOUwxMC41LDEyTDcuODQsOS42NUM3LjE2LDguOTcgNi4zMSw4LjYyIDUuNCw4LjYyQzMuNTMsOC42MiAyLDEwLjEzIDIsMTJDMiwxMy44NyAzLjUzLDE1LjM4IDUuNCwxNS4zOEM2LjMxLDE1LjM4IDcuMTYsMTUuMDMgNy44LDE0LjM5TTE2LjIsOS42MUwxMy41LDEyTDE2LjE2LDE0LjM1QzE2Ljg0LDE1LjAzIDE3LjcsMTUuMzggMTguNiwxNS4zOEMyMC40NywxNS4zOCAyMiwxMy44NyAyMiwxMkMyMiwxMC4xMyAyMC40Nyw4LjYyIDE4LjYsOC42MkMxNy42OSw4LjYyIDE2Ljg0LDguOTcgMTYuMiw5LjYxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUluZm9ybWF0aW9uID0gXCJNMTMsOUgxMVY3SDEzTTEzLDE3SDExVjExSDEzTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUluZm9ybWF0aW9uT3V0bGluZSA9IFwiTTExLDlIMTNWN0gxMU0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTExLDE3SDEzVjExSDExVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUluZm9ybWF0aW9uVmFyaWFudCA9IFwiTTEzLjUsNEExLjUsMS41IDAgMCwwIDEyLDUuNUExLjUsMS41IDAgMCwwIDEzLjUsN0ExLjUsMS41IDAgMCwwIDE1LDUuNUExLjUsMS41IDAgMCwwIDEzLjUsNE0xMy4xNCw4Ljc3QzExLjk1LDguODcgOC43LDExLjQ2IDguNywxMS40NkM4LjUsMTEuNjEgOC41NiwxMS42IDguNzIsMTEuODhDOC44OCwxMi4xNSA4Ljg2LDEyLjE3IDkuMDUsMTIuMDRDOS4yNSwxMS45MSA5LjU4LDExLjcgMTAuMTMsMTEuMzZDMTIuMjUsMTAgMTAuNDcsMTMuMTQgOS41NiwxOC40M0M5LjIsMjEuMDUgMTEuNTYsMTkuNyAxMi4xNywxOS4zQzEyLjc3LDE4LjkxIDE0LjM4LDE3LjggMTQuNTQsMTcuNjlDMTQuNzYsMTcuNTQgMTQuNiwxNy40MiAxNC40MywxNy4xN0MxNC4zMSwxNyAxNC4xOSwxNy4xMiAxNC4xOSwxNy4xMkMxMy41NCwxNy41NSAxMi4zNSwxOC40NSAxMi4xOSwxNy44OEMxMiwxNy4zMSAxMy4yMiwxMy40IDEzLjg5LDEwLjcxQzE0LDEwLjA3IDE0LjMsOC42NyAxMy4xNCw4Ljc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUluc3RhZ3JhbSA9IFwiTTcuOCwySDE2LjJDMTkuNCwyIDIyLDQuNiAyMiw3LjhWMTYuMkE1LjgsNS44IDAgMCwxIDE2LjIsMjJINy44QzQuNiwyMiAyLDE5LjQgMiwxNi4yVjcuOEE1LjgsNS44IDAgMCwxIDcuOCwyTTcuNiw0QTMuNiwzLjYgMCAwLDAgNCw3LjZWMTYuNEM0LDE4LjM5IDUuNjEsMjAgNy42LDIwSDE2LjRBMy42LDMuNiAwIDAsMCAyMCwxNi40VjcuNkMyMCw1LjYxIDE4LjM5LDQgMTYuNCw0SDcuNk0xNy4yNSw1LjVBMS4yNSwxLjI1IDAgMCwxIDE4LjUsNi43NUExLjI1LDEuMjUgMCAwLDEgMTcuMjUsOEExLjI1LDEuMjUgMCAwLDEgMTYsNi43NUExLjI1LDEuMjUgMCAwLDEgMTcuMjUsNS41TTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5zdHJ1bWVudFRyaWFuZ2xlID0gXCJNMTEuNSAySDEwLjVWNi4yQzEwLjQgNi4zIDEwLjMgNi4zIDEwLjIgNi41TDIuMSAyMC43QzEuOCAyMS4zIDIuMiAyMiAyLjkgMjJIMTZWMjBINC44TDExIDkuMkwxNi43IDE5LjJMMTguNCAxOC4yTDExLjggNi40TDExLjUgNi4xVjJNMjEgNkgyMFYxOEwxOS41IDIySDIxLjVMMjEgMThWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlJbnZlcnRDb2xvcnMgPSBcIk0xMiwxOS41OFYxOS41OEMxMC40LDE5LjU4IDguODksMTguOTYgNy43NiwxNy44M0M2LjYyLDE2LjY5IDYsMTUuMTkgNiwxMy41OEM2LDEyIDYuNjIsMTAuNDcgNy43Niw5LjM0TDEyLDUuMU0xNy42Niw3LjkzTDEyLDIuMjdWMi4yN0w2LjM0LDcuOTNDMy4yMiwxMS4wNSAzLjIyLDE2LjEyIDYuMzQsMTkuMjRDNy45LDIwLjggOS45NSwyMS41OCAxMiwyMS41OEMxNC4wNSwyMS41OCAxNi4xLDIwLjggMTcuNjYsMTkuMjRDMjAuNzgsMTYuMTIgMjAuNzgsMTEuMDUgMTcuNjYsNy45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbnZlcnRDb2xvcnNPZmYgPSBcIk0yMC42NSwyMC44N0wxOC4zLDE4LjVMMTIsMTIuMjNMOC40NCw4LjY2TDcsNy4yNUw0LjI3LDQuNUwzLDUuNzdMNS43OCw4LjU1QzMuMjMsMTEuNjkgMy40MiwxNi4zMSA2LjM0LDE5LjI0QzcuOSwyMC44IDkuOTUsMjEuNTggMTIsMjEuNThDMTMuNzksMjEuNTggMTUuNTcsMjEgMTcuMDMsMTkuOEwxOS43MywyMi41TDIxLDIxLjIzTDIwLjY1LDIwLjg3TTEyLDE5LjU5QzEwLjQsMTkuNTkgOC44OSwxOC45NyA3Ljc2LDE3LjgzQzYuNjIsMTYuNjkgNiwxNS4xOSA2LDEzLjU5QzYsMTIuMjcgNi40MywxMSA3LjIxLDEwTDEyLDE0Ljc3VjE5LjU5TTEyLDUuMVY5LjY4TDE5LjI1LDE2Ljk0QzIwLjYyLDE0IDIwLjA5LDEwLjM3IDE3LjY1LDcuOTNMMTIsMi4yN0w4LjMsNS45N0w5LjcxLDcuMzhMMTIsNS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUlvYnJva2VyID0gXCJNMTIgMkMxMS41IDIgMTEgMi4wNCAxMC41IDIuMTFWNC44NUMxMSA0Ljc1IDExLjUgNC43IDEyIDQuN0MxMi41IDQuNyAxMyA0Ljc1IDEzLjUgNC44NVYyLjEyQzEzIDIuMDQgMTIuNSAyIDEyIDJNOS44MiAyLjI1QzUuNCAzLjI1IDIuMTEgNy4yNCAyLjExIDEyQzIuMTEgMTcuNSA2LjUzIDIyIDEyIDIyQzE3LjQ3IDIyIDIxLjg5IDE3LjUgMjEuODkgMTJDMjEuODkgNy4yNCAxOC42IDMuMjUgMTQuMTkgMi4yNVY1LjAzQzE3LjE3IDUuOTYgMTkuMzQgOC43MyAxOS4zNCAxMkMxOS4zNCAxNiAxNi4wNSAxOS4zIDEyIDE5LjNDNy45NiAxOS4zIDQuNjcgMTYgNC42NyAxMkM0LjY3IDguNzMgNi44NCA1Ljk2IDkuODIgNS4wM00xMiA1LjQ1QzExLjUgNS40NSAxMSA1LjUgMTAuNSA1LjYyVjE4LjI3QzExIDE4LjM4IDExLjUgMTguNDQgMTIgMTguNDRDMTIuNSAxOC40NCAxMyAxOC4zOSAxMy41IDE4LjI3VjUuNjJDMTMgNS41IDEyLjUgNS40NSAxMiA1LjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUlwID0gXCJNMTYsMTFIMTRWOUgxNlYxMU0zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNMTAsN0g4VjE3SDEwVjdNMTIsMTdIMTRWMTNIMTZBMiwyIDAgMCwwIDE4LDExVjlBMiwyIDAgMCwwIDE2LDdIMTJWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSXBOZXR3b3JrID0gXCJNMTUsOUgxM1Y3SDE1VjlNMjIsMjBWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdIN0EyLDIgMCAwLDEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdBMiwyIDAgMCwxIDE5LDVWMTVBMiwyIDAgMCwxIDE3LDE3SDEzVjE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMk05LDVIN1YxNUg5VjVNMTEsMTVIMTNWMTFIMTVBMiwyIDAgMCwwIDE3LDlWN0EyLDIgMCAwLDAgMTUsNUgxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJcE5ldHdvcmtPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU03LDE1VjVIMTdWMTVIN00xMCw2SDhWMTRIMTBWNk0xNCw2SDExVjE0SDEzVjEySDE0QTIsMiAwIDAsMCAxNiwxMFY4QTIsMiAwIDAsMCAxNCw2TTE0LDEwSDEzVjhIMTRWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSXBvZCA9IFwiTTcsMkEyLDIgMCAwLDAgNSw0VjIwQTIsMiAwIDAsMCA3LDIySDE3QTIsMiAwIDAsMCAxOSwyMFY0QTIsMiAwIDAsMCAxNywySDdNNyw0SDE3VjEwSDdWNE0xMiwxMkE0LDQgMCAwLDEgMTYsMTZBNCw0IDAgMCwxIDEyLDIwQTQsNCAwIDAsMSA4LDE2QTQsNCAwIDAsMSAxMiwxMk0xMiwxNEEyLDIgMCAwLDAgMTAsMTZBMiwyIDAgMCwwIDEyLDE4QTIsMiAwIDAsMCAxNCwxNkEyLDIgMCAwLDAgMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSXNsYW0gPSBcIk0xMi4zLDJDMTIuMiwyIDEyLjEsMiAxMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJDMTUsMjIgMTYuNywyMSAxOC41LDE5LjVDMTMsMjEgOCwxNyA4LDEyQzgsNyAxMywzIDE4LjUsNC41QzE2Ljg2LDIuODYgMTQuNjIsMS45NiAxMi4zLDJNMTYuOCw2LjJMMTUuMyw5LjdMMTEuNiwxMEwxNC41LDEyLjVMMTMuNiwxNkwxNi44LDE0TDIwLDE2TDE5LDEyLjVMMjIsMTBMMTguMyw5LjdMMTYuOCw2LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSXNsYW5kID0gXCJNMjAgMjBDMTguNjEgMjAgMTcuMjIgMTkuNTMgMTYgMTguNjdDMTMuNTYgMjAuMzggMTAuNDQgMjAuMzggOCAxOC42N0M2Ljc4IDE5LjUzIDUuMzkgMjAgNCAyMEgyVjIySDRDNS4zNyAyMiA2Ljc0IDIxLjY1IDggMjFDMTAuNSAyMi4zIDEzLjUgMjIuMyAxNiAyMUMxNy4yNiAyMS42NSAxOC42MiAyMiAyMCAyMkgyMlYyMEgyME0yMC43OCAxOUgyMEMxOC44MiAxOSAxNy42NCAxOC42IDE2LjU4IDE3Ljg1TDE2IDE3LjQ1TDE1LjQyIDE3Ljg1QzE0LjM5IDE4LjU3IDEzLjIxIDE4Ljk1IDEyIDE4Ljk1QzEwLjc3IDE4Ljk1IDkuNTkgMTguNTcgOC41NiAxNy44NUw4IDE3LjQ1TDcuNDMgMTcuODVDNi4zNiAxOC42IDUuMTggMTkgNCAxOUgzLjIyQzMuNzUgMTcuNTQgNS41OCAxNSAxMiAxNUMxNCAxNSAxNSAxNS4yNCAxNSAxNS4yNEMxNS42OCAxMy44NyAxNi44MyAxMC43NyAxNiA2LjgyTDE3LjA2IDcuNTNDMTcuMzkgOC45NiAxOCAxMS43NSAxNi44IDE1LjY1QzE5LjQzIDE2LjUgMjAuNDIgMTggMjAuNzggMTlNMjIgNy41OUMyMS4yMSA2LjUgMjAgNS43MSAxOC41OCA1LjUzQzE4LjcgNS42NyAxOC44MSA1LjgzIDE4LjkyIDZDMjAuMTIgNy45MSAxOS44NyAxMC4zMiAxOC40NyAxMS45NUMxOS4wNiAxMC41IDE5IDguNzkgMTguMDggNy4zNkMxOCA3LjI4IDE3Ljk2IDcuMiAxNy45IDcuMTFDMTcuNSA2LjUzIDE2Ljk2IDYuMDYgMTYuMzggNS43MkMxNC4zNSA2LjM3IDEyLjg4IDguMjcgMTIuODggMTAuNUMxMi44OCAxMS4wMyAxMi45NiAxMS41MyAxMy4xIDEyQzEyLjUgMTEuMTcgMTIuMTYgMTAuMTcgMTIuMTYgOS4wN0MxMi4xNiA3LjQxIDEyLjk2IDUuOTUgMTQuMiA1LjAzQzEzLjE2IDQuOTUgMTIuMDkgNS4xOCAxMS4xNCA1Ljc4QzEwLjcgNi4wNSAxMC4zMiA2LjM4IDEwIDYuNzZDMTAuMzkgNS44MiAxMS4wNSA1IDEyIDQuNEMxMy4wNCAzLjc0IDE0LjI1IDMuNSAxNS4zOSAzLjY5QzE1LjEgMy4yOSAxNC43NSAyLjkyIDE0LjMzIDIuNkMxMy45MiAyLjI5IDEzLjQ3IDIuMDUgMTMgMS44OEMxNCAxLjkxIDE1LjA0IDIuMjQgMTUuOTEgMi44OUMxNi4zNSAzLjIyIDE2LjcgMy42MiAxNyA0LjA1QzE3LjA2IDQuMDUgMTcuMTIgNC4wNCAxNy4xOSA0LjA0QzE5LjQ1IDQuMDQgMjEuMzcgNS41MyAyMiA3LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUl2QmFnID0gXCJNMTQgMUgxMEM1IDEgNSAzIDUgM1YxNUM1IDE1IDUgMTcgMTAgMTdWMTlIMTFWMjBDMTEgMjEuMjEgMTEuOCAyMyAxNCAyM0gxOFYyMUgxNEMxMy4xOSAyMSAxMyAyMC40NSAxMyAyMFYxOUgxNFYxN0MxOSAxNyAxOSAxNSAxOSAxNVYzQzE5IDMgMTkgMSAxNCAxTTE3IDEySDE0VjExSDE3VjEyTTE3IDVIMTRWNkgxN1Y4SDE0VjlIMTdWMTBIN1YzLjVDNy4zIDMuMzIgOC4xMyAzIDEwIDNIMTRDMTUuODggMyAxNi43IDMuMzIgMTcgMy41VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSmFiYmVyID0gXCJNNS4yMyw1LjcyQzQuNjEsNS41NSA1LDMuMTkgNSwzLjE3QzUsMy4xOSAxMi41OCwtMC43MSAxNi43LDUuNzNDMjAuOCwxMi4xNSAxNS44NiwxNC44NiAxMy45NywxNi4wNkMxMi4wOCwxNy4yNyAxMi43MywxOS43MiAxMi43MywyMC4xM0MxMi43MywyMC41MyAxMi4xNiwyMC45NyAxMiwyMC40MUMxMS44OCwxOS44NCAxMS4yNSwxNi41NSAxMy4zMywxNS4xNkMxNy4xMywxMi42MSAxNy45LDEwLjEgMTYsNi40MkMxNC4yLDMgOC4yOCwzLjQxIDcuMDMsNC4wOEM1Ljc4LDQuNzUgNS44Niw1Ljg5IDUuMjMsNS43Mk05LjMzLDEyLjYzTDkuMTEsMTIuMTZDOS4yMywxMC4yOCA3LjYzLDEwLjM5IDguMDgsMTMuMzNDOC4yMSwxNC4xNiA3LjQ3LDEzLjggNy40NSwxMy43M0M2Ljg5LDExLjQ0IDcuNDIsMTAuMjIgOC41NSwxMC40NUM5LjYyLDEwLjY4IDkuNTMsMTEuODMgOS41MywxMS44M0M5LjU2LDExLjc4IDExLDEwLjE3IDExLjUsMTAuOTJDMTIuNTgsMTIuNSAxMC41MywxNC40NyAxMC40MSwxNC42M0MxMC4yOCwxNC43OCAxMC4xNCwxNS4wNSA5LjkyLDE0Ljg0QzkuNywxNC42NCA5LjcyLDE0LjUgOS44OSwxNC4yN0MxMi43NywxMCA5LjU5LDEyLjIyIDkuMzMsMTIuNjNNNi41LDE1LjMzVjE1LjMxQzYuNSwxNS4zMSA4LDE4LjEzIDEwLjYxLDE3LjA4QzExLDE2LjkyIDExLjE3LDE3LjE0IDExLjIsMTcuMjdDMTEuMjcsMTcuNTMgMTEuMTMsMTcuNjQgMTAuODYsMTcuNzNDNy44NiwxOC43MiA1Ljg5LDE2LjYzIDUuNjMsMTYuMTNDNS4zOSwxNS42OCA1LjUsMTUuMzggNS43NSwxNS4yMkM2LDE1LjA2IDYuNSwxNS4zMyA2LjUsMTUuMzNNNiwxNy41QzYsMTcuNSA3LjY3LDE5LjUgMTAuOCwxOUMxMS4wOSwxOC45NCAxMS4yLDE5LjEzIDExLjI1LDE5LjM4QzExLjMsMTkuNjMgMTEuMjIsMTkuODQgMTAuOTIsMTkuOTRDMTAuNjMsMjAuMDMgNy4wOCwyMC41IDUuMTMsMTcuNzJDNSwxNy41NiA1LjMsMTcuMzYgNS40NywxNy4zNkM1LjY0LDE3LjM2IDYuMDMsMTcuNSA2LDE3LjVNNS45NSwxOS4zOUM3LjUzLDIxLjUgMTAuMzMsMjEuNTUgMTEuMjgsMjAuODhDMTEuNSwyMC43MyAxMS43LDIxLjA1IDExLjU2LDIxLjE5QzkuNjQsMjMuMTYgNS42NywyMSA1LjI3LDIwLjMzQzUuMDksMjAuMDUgNS4xMywxOS42NiA1LjMxLDE5LjQ1QzUuNSwxOS4yNSA1LjkzLDE5LjM4IDUuOTUsMTkuMzlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSmVlcG5leSA9IFwiTTE5LDEzVjdIMjBWNEg0VjdINVYxM0gyQzIsMTMuOTMgMi41LDE0LjcxIDMuNSwxNC45M1YyMEExLDEgMCAwLDAgNC41LDIxSDUuNUExLDEgMCAwLDAgNi41LDIwVjE5SDE3LjVWMjBBMSwxIDAgMCwwIDE4LjUsMjFIMTkuNUExLDEgMCAwLDAgMjAuNSwyMFYxNC45M0MyMS41LDE0LjcgMjIsMTMuOTMgMjIsMTNIMTlNOCwxNUExLjUsMS41IDAgMCwxIDYuNSwxMy41QTEuNSwxLjUgMCAwLDEgOCwxMkExLjUsMS41IDAgMCwxIDkuNSwxMy41QTEuNSwxLjUgMCAwLDEgOCwxNU0xNiwxNUExLjUsMS41IDAgMCwxIDE0LjUsMTMuNUExLjUsMS41IDAgMCwxIDE2LDEyQTEuNSwxLjUgMCAwLDEgMTcuNSwxMy41QTEuNSwxLjUgMCAwLDEgMTYsMTVNMTcuNSwxMC41QzE1LjkyLDEwLjE4IDE0LjAzLDEwIDEyLDEwQzkuOTcsMTAgOCwxMC4xOCA2LjUsMTAuNVY3SDE3LjVWMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlKZWxseWZpc2ggPSBcIk0xOS41LDE0LjVDMTguOTIsMTQuNDMgMTguNDMsMTQuOTIgMTguNSwxNS41QzE4LjUsMTYuMTcgMTcuNSwxNi4xNyAxNy41LDE1LjVWMTMuMkwxOS4yLDEyLjdDMTkuOTIsMTIuMzYgMjAuNDEsMTEuNjggMjAuNSwxMC45QzIwLjUsNS41IDE2LjcsMiAxMiwyQzcuMywyIDMuNSw1LjUgMy41LDEwLjlDMy41NiwxMS43IDQuMDYsMTIuNCA0LjgsMTIuN0w2LjUsMTMuMlYxNS41QTAuNSwwLjUgMCAwLDEgNiwxNkEwLjUsMC41IDAgMCwxIDUuNSwxNS41QzUuNTcsMTQuOTIgNS4wOCwxNC40MyA0LjUsMTQuNUMzLjkyLDE0LjQzIDMuNDMsMTQuOTIgMy41LDE1LjVDMy40NCwxNi45MSA0LjU5LDE4LjA2IDYsMThDNy40MSwxOC4wNiA4LjU2LDE2LjkxIDguNSwxNS41VjEzLjdIOS41VjE5LjRDOS41LDIwLjA3IDguNSwyMC4wNyA4LjUsMTkuNEM4LjU3LDE4LjgyIDguMDgsMTguMzMgNy41LDE4LjRDNi45MiwxOC4zMyA2LjQzLDE4LjgyIDYuNSwxOS40QzYuMzgsMjAuODQgNy41NSwyMi4wNyA5LDIyQzEwLjQxLDIyLjA2IDExLjU2LDIwLjkxIDExLjUsMTkuNVYxNEgxMi41VjE5LjVDMTIuNDQsMjAuOTEgMTMuNTksMjIuMDYgMTUsMjJDMTYuNDEsMjIuMDYgMTcuNTYsMjAuOTEgMTcuNSwxOS41QzE3LjUsMTguMTcgMTUuNSwxOC4xNyAxNS41LDE5LjVDMTUuNSwyMC4xNyAxNC41LDIwLjE3IDE0LjUsMTkuNVYxMy44SDE1LjVWMTUuNkMxNS41LDE2Ljk2IDE2LjYzLDE4LjA2IDE4LDE4QzE5LjQxLDE4LjA2IDIwLjU2LDE2LjkxIDIwLjUsMTUuNUMyMC41NywxNC45MiAyMC4wOCwxNC40MyAxOS41LDE0LjVNMTAuNiw0LjdDOS4wOSw1LjAzIDcuNzksNS45NyA3LDcuM0M2LjgzLDcuNSA2LjUsNy41NyA2LjMsNy40QzYuMDgsNy4yMyA2LjA0LDYuOTIgNi4yLDYuN0M3LjE2LDUuMTkgOC42Nyw0LjEyIDEwLjQsMy43QzEwLjY3LDMuNjggMTAuOTEsMy44NSAxMSw0LjFDMTEuMDYsNC4zNyAxMC44OCw0LjY1IDEwLjYsNC43WlwiO1xyXG5leHBvcnQgdmFyIG1kaUplbGx5ZmlzaE91dGxpbmUgPSBcIk0xMiw0QzE1LjgsNCAxOC41LDYuOCAxOC41LDEwLjhDMTQuMzEsMTIuMzkgOS42OSwxMi4zOSA1LjUsMTAuOEM1LjUsNi44IDguMiw0IDEyLDRNMTIsMkM3LjMsMiAzLjUsNS41IDMuNSwxMC45QzMuNTYsMTEuNyA0LjA2LDEyLjQgNC44LDEyLjdMNi41LDEzLjJWMTUuNUEwLjUsMC41IDAgMCwxIDYsMTZBMC41LDAuNSAwIDAsMSA1LjUsMTUuNUM1LjU3LDE0LjkyIDUuMDgsMTQuNDMgNC41LDE0LjVDMy45MiwxNC40MyAzLjQzLDE0LjkyIDMuNSwxNS41QzMuNDQsMTYuODYgNC41NCwxOCA1LjksMThINkM3LjQxLDE4LjA2IDguNTYsMTYuOTEgOC41LDE1LjVWMTMuN0g5LjVWMTkuNEM5LjUsMjAuMDcgOC41LDIwLjA3IDguNSwxOS40QzguNTcsMTguODIgOC4wOCwxOC4zMyA3LjUsMTguNEM2LjkyLDE4LjMzIDYuNDMsMTguODIgNi41LDE5LjRDNi4zOSwyMC44IDcuNSwyMiA4LjksMjJIOUMxMC40MSwyMi4wNiAxMS41NiwyMC45MSAxMS41LDE5LjVWMTRIMTIuNVYxOS41QzEyLjQ0LDIwLjkxIDEzLjU5LDIyLjA2IDE1LDIySDE1LjFDMTYuNDcsMjIgMTcuNTYsMjAuODYgMTcuNSwxOS41QzE3LjUsMTguMTcgMTUuNSwxOC4xNyAxNS41LDE5LjVDMTUuNSwyMC4xNyAxNC41LDIwLjE3IDE0LjUsMTkuNVYxMy44SDE1LjVWMTUuNkMxNS41LDE2Ljk2IDE2LjYzLDE4LjA2IDE4LDE4SDE4LjFDMTkuNDcsMTggMjAuNTYsMTYuODYgMjAuNSwxNS41QzIwLjUsMTQuMTcgMTguNSwxNC4xNyAxOC41LDE1LjVDMTguNSwxNi4xNyAxNy41LDE2LjE3IDE3LjUsMTUuNVYxMy4yTDE5LjIsMTIuN0MxOS45MiwxMi4zNiAyMC40MSwxMS42OCAyMC41LDEwLjlDMjAuNSw1LjUgMTYuNywyIDEyLDJNMTIsNi4yQzEwLjUzLDYuNiA5LjI0LDcuNTMgOC40LDguOEM4LDkuMzMgNy4yLDguNzMgNy42LDguMkM4LjYsNi43MyAxMC4wOSw1LjY3IDExLjgsNS4yQzEyLjA4LDUuMTQgMTIuMzUsNS4zMiAxMi40LDUuNkMxMi41LDUuOSAxMi4zLDYuMSAxMiw2LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSmlyYSA9IFwiTTExLjUzLDJDMTEuNTMsNC40IDEzLjUsNi4zNSAxNS44OCw2LjM1SDE3LjY2VjguMDVDMTcuNjYsMTAuNDUgMTkuNiwxMi4zOSAyMiwxMi40VjIuODRBMC44NCwwLjg0IDAgMCwwIDIxLjE2LDJIMTEuNTNNNi43Nyw2LjhDNi43OCw5LjE5IDguNzIsMTEuMTMgMTEuMTEsMTEuMTRIMTIuOTFWMTIuODZDMTIuOTIsMTUuMjUgMTQuODYsMTcuMTkgMTcuMjUsMTcuMlY3LjYzQzE3LjI0LDcuMTcgMTYuODgsNi44MSAxNi40Miw2LjhINi43N00yLDExLjZDMiwxNCAzLjk1LDE1Ljk0IDYuMzUsMTUuOTRIOC4xM1YxNy42NkM4LjE0LDIwLjA1IDEwLjA4LDIyIDEyLjQ3LDIyVjEyLjQzQTAuODQsMC44NCAwIDAsMCAxMS42MywxMS41OUwyLDExLjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSnF1ZXJ5ID0gXCJNMjIuODgsMTAuNDFDMjAuNzcsMTIuMTggMTcuNjEsMTEuOSAxNS44NCw5Ljc5QzE0LjA2LDcuNjcgMTQuMzQsNC41IDE2LjQ1LDIuNzVMMTYuOTYsMi4zN0MxNS4yNyw0LjE5IDE1LjE2LDcuMDMgMTYuOCw5QzE4LjQzLDEwLjk0IDIxLjI1LDExLjMyIDIzLjM0LDkuOTdMMjIuODgsMTAuNDFNMjEuMSwxNC41QzE3LjkzLDE3LjE3IDEzLjIsMTYuNzYgMTAuNTQsMTMuNThDNy44NywxMC40MSA4LjI5LDUuNjggMTEuNDYsM0wxMi4zOCwyLjM2QzkuOTYsNS4wOSA5Ljg0LDkuMjYgMTIuMjYsMTIuMTRDMTQuNjgsMTUgMTguOCwxNS42MyAyMS45MSwxMy43MkwyMS4xLDE0LjVNMTkuOTcsMTkuMzhDMTUuNTMsMjMuMTEgOC45LDIyLjUzIDUuMTcsMTguMDhDMS40NSwxMy42NCAyLjAzLDcgNi40NywzLjI5TDcuNTgsMi41QzQuMDcsNi4zIDMuODUsMTIuMjMgNy4yOCwxNi4zMkMxMC43MSwyMC40IDE2LjU5LDIxLjIyIDIwLjk2LDE4LjQzTDE5Ljk3LDE5LjM4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUpzZmlkZGxlID0gXCJNMTcuMzQgMTMuN0MxNy4zNCAxNSAxNi4yMyAxNi4wNCAxNC44NiAxNi4wNEMxMy42NSAxNi4wNCAxMi42NCAxNSAxMS43NSAxNC4wNEwxMS41IDEzLjc5QzExLjUgMTMuNzYgMTEuNDcgMTMuNzMgMTEuNDUgMTMuN0MxMC43NCAxMi45NiA5Ljk2IDEyLjIyIDkuMjEgMTIuMjJDOC4zMiAxMi4yMiA3LjYgMTIuODggNy42IDEzLjY5QzcuNiAxNC41IDguMzIgMTUuMTcgOS4yMSAxNS4xN0M5Ljk3IDE1LjE3IDEwLjM1IDE0Ljc1IDEwLjYzIDE0LjQ1TDEwLjcgMTQuMzdDMTAuODYgMTQuMiAxMS4xNCAxNC4xOSAxMS4zMSAxNC4zNUMxMS41IDE0LjUgMTEuNSAxNC43OSAxMS4zMyAxNC45NkwxMS4yNyAxNS4wM0MxMC45NCAxNS4zOCAxMC4zNSAxNi4wMyA5LjIxIDE2LjAzQzcuODQgMTYuMDMgNi43MyAxNSA2LjczIDEzLjY5QzYuNzMgMTIuNCA3Ljg0IDExLjM1IDkuMjEgMTEuMzVDMTAuNDIgMTEuMzUgMTEuNDMgMTIuNDEgMTIuMzIgMTMuMzVMMTIuNTYgMTMuNkMxMi41OCAxMy42MyAxMi42IDEzLjY2IDEyLjYyIDEzLjY5QzEzLjMzIDE0LjQzIDE0LjExIDE1LjE3IDE0Ljg2IDE1LjE3QzE1Ljc1IDE1LjE3IDE2LjQ3IDE0LjUgMTYuNDcgMTMuNjlDMTYuNDcgMTIuODggMTUuNzUgMTIuMjIgMTQuODYgMTIuMjJDMTQuMTEgMTIuMjIgMTMuNzIgMTIuNjQgMTMuNDQgMTIuOTRMMTMuMzcgMTNDMTMuMjEgMTMuMTkgMTIuOTQgMTMuMiAxMi43NiAxMy4wNEMxMi41OSAxMi44NyAxMi41OCAxMi42IDEyLjc0IDEyLjQyTDEyLjgxIDEyLjM2QzEzLjEzIDEyIDEzLjczIDExLjM2IDE0Ljg2IDExLjM2QzE2LjIzIDExLjM2IDE3LjM0IDEyLjQgMTcuMzQgMTMuN00yMiAxNC44NUMyMiAxNS45NiAyMS41NyAxNyAyMC43OCAxNy43OUMyMCAxOC41NyAxOC45NSAxOSAxNy44NCAxOUg2LjI4QzMuOTYgMTguOTYgMi4wNyAxNy4wNiAyLjA3IDE0Ljc1QzIuMDcgMTMuMzcgMi43NiAxMi4wNyAzLjg5IDExLjI4QzMuODUgMTEuMDkgMy44MyAxMC45IDMuODMgMTAuN0MzLjgzIDkuMDMgNS4yIDcuNjcgNi44OCA3LjY3QzcuMzkgNy42NyA3Ljg4IDcuNzkgOC4zMiA4LjAzQzkuNDEgNi4xNyAxMS40MyA1IDEzLjYgNUMxNi45NyA1IDE5LjcgNy43MiAxOS43IDExLjA3TDE5LjcgMTEuMTRDMjEuMTEgMTEuODQgMjIgMTMuMjcgMjIgMTQuODVNMjEuMTMgMTQuODVDMjEuMTMgMTMuNSAyMC4zMyAxMi4zMiAxOS4wOSAxMS44MUMxOC45MiAxMS43NCAxOC44MSAxMS41NyAxOC44MiAxMS4zOEwxOC44MyAxMS4yOUMxOC44MyAxMS4yMiAxOC44NCAxMS4xNCAxOC44NCAxMS4wN0MxOC44NCA4LjIgMTYuNSA1Ljg3IDEzLjYgNS44N0MxMS42IDUuODcgOS43NCA3LjAzIDguODcgOC44M0M4LjgyIDguOTUgOC43MSA5LjA0IDguNTggOS4wN0M4LjQ2IDkuMSA4LjMyIDkuMDcgOC4yMiA5QzcuODMgOC42OSA3LjM3IDguNTMgNi44OCA4LjUzQzUuNjggOC41MyA0LjcgOS41IDQuNyAxMC43QzQuNyAxMC45MiA0LjczIDExLjE0IDQuOCAxMS4zNEM0Ljg2IDExLjU0IDQuNzggMTEuNzUgNC42MSAxMS44NUMzLjU2IDEyLjQ3IDIuOTQgMTMuNTUgMi45NCAxNC43NUMyLjk0IDE2LjU5IDQuNDQgMTguMSA2LjI5IDE4LjEzSDE3LjgzQzE4LjcyIDE4LjEzIDE5LjU0IDE3Ljc5IDIwLjE2IDE3LjE3QzIwLjc5IDE2LjU1IDIxLjEzIDE1LjczIDIxLjEzIDE0Ljg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUp1ZGFpc20gPSBcIk0xMiwyTDkuMSw3SDMuM0w2LjMsMTJMMy4zLDE3SDkuMUwxMiwyMkwxNC45LDE3SDIwLjdMMTcuNywxMkwyMC43LDdIMTQuOUwxMiwyTTEyLDVMMTMuMiw3SDEwLjhMMTIsNU04LjIsOC41TDcuMSwxMC41TDUuOSw4LjVIOC4yTTEwLDguNUgxNEwxNiwxMkwxNCwxNS41SDEwTDgsMTJMMTAsOC41TTE4LDguNUwxNi44LDEwLjVMMTUuNyw4LjVIMThNNy4xLDEzLjVMOC4yLDE1LjVINkw3LjEsMTMuNU0xNi45LDEzLjVMMTguMSwxNS41SDE1LjhMMTYuOSwxMy41TTEzLjMsMTdMMTIsMTlMMTAuOCwxN0gxMy4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUp1bXBSb3BlID0gXCJNMjEgNC41VjEwLjVDMjEgMTEuMiAyMC41IDExLjkgMTkuOCAxMlYxNy4zQzE5LjggMTguNiAxOSAyMS4xIDE2IDIxLjFIMTQuNUMxNC45IDIwLjcgMTUuMyAyMC4yIDE1LjUgMTkuNkgxNkMxOC4xIDE5LjYgMTguMiAxNy43IDE4LjIgMTcuNFYxMkMxNy41IDExLjkgMTcgMTEuMyAxNyAxMC41VjQuNUMxNyAzLjcgMTcuNyAzIDE4LjUgM0gxOS41QzIwLjMgMyAyMSAzLjcgMjEgNC41TTE0LjggMTguMkMxNC44IDE5LjcgMTMuNiAyMSAxMiAyMUg4QzUgMjEgNC4yIDE4LjUgNC4yIDE3LjJWMTJDMy41IDExLjkgMyAxMS4yIDMgMTAuNVY0LjVDMyAzLjcgMy43IDMgNC41IDNINS41QzYuMyAzIDcgMy43IDcgNC41VjEwLjVDNyAxMS4yIDYuNSAxMS45IDUuOCAxMlYxNy4zQzUuOCAxNy43IDUuOSAxOS41IDggMTkuNUg5LjZDOS40IDE5LjEgOS4zIDE4LjcgOS4zIDE4LjNWOC4zQzkuMyA2LjggMTAuNSA1LjUgMTIuMSA1LjVTMTQuOCA2LjcgMTQuOCA4LjNNMTMuMiA4LjJDMTMuMiA3LjYgMTIuNyA3IDEyIDdTMTAuOCA3LjYgMTAuOCA4LjJWMTguMkMxMC44IDE4LjkgMTEuNCAxOS40IDEyIDE5LjRTMTMuMiAxOC44IDEzLjIgMTguMlY4LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2FiYWRkaSA9IFwiTTExLjIgMTAuNkMxMi4yIDExLjYgMTMuNCAxMi4xIDE0LjggMTIuMUwxNC45IDE0LjJDMTMgMTQuMiAxMS4zIDEzLjUgOS44IDEyLjFMOS4xIDExLjRMNi44IDEzLjhMOSAxNS45VjIxLjlIN1YxNi43TDUuNyAxNS41VjE3LjdMMS41IDIyTC4xIDIwLjZMMy43IDE3TDIuNSAxMy41QzIuMyAxMi45IDIuNiAxMi40IDMuMSAxMkw2LjQgOC43QzYuOCA4LjIgNy4zIDggNy44IDhDOC4zIDggOC42IDguMSA4LjkgOC4zTDExLjIgMTAuNk0yNCAxMS45SDIyVjguNUwyMC4yIDcuOEwyMS4xIDEyLjJMMjIuMSAxNy40TDIzIDIxLjhIMjAuOUwxOS4xIDEzLjhMMTcgMTUuOFYyMS44SDE1VjE0LjNMMTcuMSAxMi4zTDE2LjUgOS4zQzE1LjkgOS45IDE1LjIgMTAuNSAxNC40IDEwLjlDMTMuNSAxMC44IDEyLjYgMTAuNCAxMS45IDkuN0MxMy41IDkuNCAxNC42IDguNiAxNS4zIDcuNEwxNi4zIDUuOEMxNi45IDQuOCAxNy44IDQuNSAxOC45IDVMMjQgNy4yVjExLjlNMTEuNCA0LjRDMTIuNSA0LjQgMTMuNCA1LjMgMTMuNCA2LjRDMTMuNCA3LjUgMTIuNSA4LjQgMTEuNCA4LjRDMTAuMyA4LjQgOS40IDcuNSA5LjQgNi40QzkuNCA1LjMgMTAuMyA0LjQgMTEuNCA0LjRNMTYuNSAuM0MxNy42IC4zIDE4LjUgMS4yIDE4LjUgMi4zQzE4LjUgMy40IDE3LjYgNC4zIDE2LjUgNC4zQzE1LjQgNC4zIDE0LjUgMy40IDE0LjUgMi4zQzE0LjUgMS4yIDE1LjQgLjMgMTYuNSAuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlLYW5nYXJvbyA9IFwiTTE5LjggNi41OUwxOSA3Ljk3VjEwLjA0TDE3LjY5IDExLjYxTDE3LjMxIDEzLjI1TDE2IDE0TDE1LjUgMTMuMTJMMTYuNDQgMTIuNTlMMTYuNyAxMS40NUwxNi43IDExLjQ1TDE2Ljc3IDExLjE1TDE2Ljc3IDExLjE1VjExLjE1TDE3LjQ3IDEwLjMxQzE3LjY1IDEwLjEgMTcuNjIgOS43OCAxNy40MSA5LjYxQzE3LjIgOS40MyAxNi44OCA5LjQ2IDE2LjcgOS42N0wxNS44NSAxMC42OUwxNS41NiAxMS45M0MxNS4zOCAxMS45NiAxNS4yIDEyIDE1IDEyQzE0LjMxIDEyIDEzLjY4IDExLjc2IDEzLjIzIDExLjRDMTMuMTUgMTIuNyAxMi43MyAxMy44MSAxMi4xMyAxNC40M0wxMC41IDE2LjE5TDkuOTYgMTkuNzlMOC4wNyAyMUw3LjUzIDIwLjE3TDkuMDQgMTkuMTlMOS41IDE1LjkyTDkuNSAxNS45MUwxMCAxNC41NEM5LjQ3IDE0LjA4IDkuMDggMTMuMjggOC44OCAxMi4zTDguNzEgMTIuNjFDOC4zNSAxMy4yNSA4IDEzLjkgNy41NiAxNC41NkM3LjExIDE1LjIgNi42NiAxNS45IDUuNzggMTYuNDRDNS4zNCAxNi43MiA0LjcgMTYuODQgNC4xNyAxNi43M0MzLjYxIDE2LjYxIDMuMTQgMTYuMjYgMi44NiAxNS44OUMyLjMxIDE1LjEzIDIuMTUgMTQuMzUgMiAxMy42MkwyLjk3IDEzLjM2QzMuMiAxNCAzLjUgMTQuNjUgMy44OCAxNUM0LjI2IDE1LjMzIDQuNTcgMTUuMjYgNC44NCAxNUM1LjE2IDE0LjczIDUuNDcgMTQuMTUgNS43MyAxMy41NUM2IDEyLjk0IDYuMjIgMTIuMjggNi40NSAxMS42QzYuOTMgMTAuMjQgNy4zOSA4LjgyIDguMiA3LjM2QzguNjIgNi42NCA5LjEzIDUuODkgOS45MiA1LjIyQzEwLjcgNC41NSAxMS43MyA0IDEzIDRTMTUuNyA1LjIyIDE2LjU4IDYuMzRDMTcgNi44OSAxNy44NyA2LjgyIDE4LjIyIDYuMjFMMTkuMTQgNC42M0MxOSA0LjU4IDE4Ljg5IDQuNSAxOC43OSA0LjRDMTguNCA0IDE4LjQgMy4zOCAxOC43OSAzTDE5LjkzIDQuMTNDMTkuOTYgNC4xMyAyMCA0LjExIDIwIDQuMTFDMjAuNDEgNC4xMSAyMC43NSA0LjM1IDIwLjkxIDQuNjlMMjIgN0wyMSA3LjVMMTkuOCA2LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUthcmF0ZSA9IFwiTTE5LDEuMjdDMTguMDQsMC43MiAxNi44MiwxLjA0IDE2LjI3LDJDMTUuNzEsMi45NSAxNi4wNCw0LjE4IDE3LDQuNzNDMTcuOTUsNS4yOCAxOS4xNyw0Ljk2IDE5LjczLDRDMjAuMjgsMy4wNCAxOS45NSwxLjgyIDE5LDEuMjdNMjEuMjcsOS4zNEwxOC43LDEzLjc5TDE2Ljk2LDEyLjc5TDE4LjY5LDkuNzlMMTcuMTQsOC41TDE0LDEzLjkyVjIySDEyVjEzLjM5TDIuNDcsNy44OUwzLjQ3LDYuMTZMMTEuMjcsMTAuNjZMMTMuNjcsNi41TDcuMjgsNC4xN0w4LDIuMjlMMTQuNzMsNC43NEwxNSw0Ljg0QzE1LjM5LDUgMTUuNzYsNS4xNSAxNi4xMiw1LjM1TDE2Ljk2LDUuODRDMTcuMzEsNi4wNCAxNy42NSw2LjI4IDE3Ljk2LDYuNTRMMTguMTksNi43NEwyMS4yNyw5LjM0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtlZyA9IFwiTTUsMjJWMjBINlYxNkg1VjE0SDZWMTFINVY3SDExVjNIMTBWMkgxMUwxMywySDE0VjNIMTNWN0gxOVYxMUgxOFYxNEgxOVYxNkgxOFYyMEgxOVYyMkg1TTE3LDlBMSwxIDAgMCwwIDE2LDhIMTRBMSwxIDAgMCwwIDEzLDlBMSwxIDAgMCwwIDE0LDEwSDE2QTEsMSAwIDAsMCAxNyw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtldHRsZSA9IFwiTTEyLjUsM0M3LjgxLDMgNCw1LjY5IDQsOVY5QzQsMTAuMTkgNC41LDExLjM0IDUuNDQsMTIuMzNDNC41MywxMy41IDQsMTQuOTYgNCwxNi41QzQsMTcuNjQgNCwxOC44MyA0LDIwQzQsMjEuMTEgNC44OSwyMiA2LDIySDE5QzIwLjExLDIyIDIxLDIxLjExIDIxLDIwQzIxLDE4Ljg1IDIxLDE3LjYxIDIxLDE2LjVDMjEsMTUuMjggMjAuNjYsMTQuMDcgMjAsMTNMMjIsMTFMMTksOEwxNi45LDEwLjFDMTUuNTgsOS4zOCAxNC4wNSw5IDEyLjUsOUMxMC42NSw5IDguOTUsOS41MyA3LjU1LDEwLjQxQzcuMTksOS45NyA3LDkuNSA3LDlDNyw3LjIxIDkuNDYsNS43NSAxMi41LDUuNzVWNS43NUMxMy45Myw1Ljc1IDE1LjMsNi4wOCAxNi4zMyw2LjY3TDE4LjM1LDQuNjVDMTYuNzcsMy41OSAxNC42OCwzIDEyLjUsM00xMi41LDExQzEyLjg0LDExIDEzLjE3LDExLjA0IDEzLjUsMTEuMDlDMTAuMzksMTEuNTcgOCwxNC4yNSA4LDE3LjVWMjBINlYxNy41QTYuNSw2LjUgMCAwLDEgMTIuNSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXR0bGVBbGVydCA9IFwiTTkuNSAzQzQuOCAzIDEgNS43IDEgOUMxIDEwLjIgMS41IDExLjMgMi40IDEyLjNDMS41IDEzLjUgMSAxNSAxIDE2LjVWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDE2QzE3LjEgMjIgMTggMjEuMSAxOCAyMFYxNi41QzE4IDE1LjMgMTcuNyAxNC4xIDE3IDEzTDE5IDExTDE2IDhMMTMuOSAxMC4xQzEyLjYgOS40IDExLjEgOSA5LjUgOUM3LjcgOSA1LjkgOS41IDQuNiAxMC40QzQuMiAxMCA0IDkuNSA0IDlDNCA3LjIgNi41IDUuOCA5LjUgNS44QzEwLjkgNS44IDEyLjMgNi4xIDEzLjMgNi43TDE1LjMgNC43QzEzLjggMy42IDExLjcgMyA5LjUgM005LjUgMTFDOS44IDExIDEwLjIgMTEgMTAuNSAxMS4xQzcuNCAxMS42IDUgMTQuMiA1IDE3LjVWMjBIM1YxNy41QzMgMTMuOSA1LjkgMTEgOS41IDExTTIxIDEzVjdIMjNWMTNIMjFNMjEgMTdWMTVIMjNWMTdIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V0dGxlQWxlcnRPdXRsaW5lID0gXCJNOS41IDNDNC44IDMgMSA1LjcgMSA5QzEgMTAuMiAxLjUgMTEuMyAyLjQgMTIuM0MxLjUgMTMuNSAxIDE1IDEgMTYuNVYyMEMxIDIxLjEgMS45IDIyIDMgMjJIMTZDMTcuMSAyMiAxOCAyMS4xIDE4IDIwVjE2LjVDMTggMTUuMyAxNy43IDE0LjEgMTcgMTNMMTkgMTFMMTYgOEwxMy45IDEwLjFDMTEgOC41IDcuNCA4LjYgNC42IDEwLjRDNC4yIDEwIDQgOS41IDQgOUM0IDcuMiA2LjUgNS43IDkuNSA1LjdDMTAuOSA1LjcgMTIuMyA2LjEgMTMuMyA2LjdMMTUuMyA0LjdDMTMuNiAzLjUgMTEuNiAzIDkuNSAzTTkuNSAxMUMxMyAxMSAxNiAxNCAxNiAxNi41VjIwSDNWMTYuNUMzIDE0IDYgMTEgOS41IDExTTEwIDEyLjVDNyAxMi41IDUgMTQgNSAxN1YxOEg3VjE3QzcgMTYgNyAxMy41IDEwIDEyLjVNMjEgMTNWN0gyM1YxM0gyMU0yMSAxN1YxNUgyM1YxN0gyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXR0bGVPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w0LjcgNi42QzQuMyA3LjMgNCA4LjEgNCA5QzQgMTAuMiA0LjUgMTEuMyA1LjQgMTIuM0M0LjUgMTMuNSA0IDE1IDQgMTYuNVYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMTlDMTkuMyAyMiAxOS42IDIxLjkgMTkuOSAyMS44TDIwLjggMjIuN0wyMi4xIDIxLjVNOC4yIDEwLjFMNy42IDEwLjRDNy4yIDEwIDcgOS41IDcgOVY4LjlMOC4yIDEwLjFNOCAxNy41VjIwSDZWMTcuNUM2IDE0LjkgNy41IDEyLjcgOS43IDExLjZMMTAuNSAxMi40QzkgMTMuNiA4IDE1LjQgOCAxNy41TTE2LjkgMTAuMUwxOSA4TDIyIDExTDIwIDEzQzIwLjcgMTQuMSAyMSAxNS4zIDIxIDE2LjVWMTcuOEwxMi4yIDlIMTIuNUMxNCA5IDE1LjYgOS40IDE2LjkgMTAuMU05LjUgNi4zTDcuNCA0LjJDOC44IDMuNSAxMC42IDMgMTIuNSAzQzE0LjcgMyAxNi44IDMuNiAxOC4zIDQuN0wxNi4zIDYuN0MxNS4zIDYuMSAxMy45IDUuOCAxMi41IDUuOEMxMS40IDUuOCAxMC40IDUuOSA5LjUgNi4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtldHRsZU9mZk91dGxpbmUgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w0LjcgNi42QzQuMyA3LjMgNCA4LjEgNCA5QzQgMTAuMiA0LjUgMTEuMyA1LjQgMTIuM0M0LjUgMTMuNSA0IDE1IDQgMTYuNVYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMTlDMTkuMyAyMiAxOS42IDIxLjkgMTkuOSAyMS44TDIwLjggMjIuN0wyMi4xIDIxLjVNOC4yIDEwLjFMNy42IDEwLjRDNy4yIDEwIDcgOS41IDcgOVY4LjlMOC4yIDEwLjFNNiAyMFYxNi41QzYgMTQuNyA3LjYgMTIuNiA5LjcgMTEuNkwxMC45IDEyLjhDOS4xIDEzLjQgOCAxNC44IDggMTdWMThIMTBWMTdDMTAgMTYuMiAxMCAxNC41IDExLjQgMTMuM0wxOC4xIDIwSDZNMTYuOSAxMC4xTDE5IDhMMjIgMTFMMjAgMTNDMjAuNyAxNC4xIDIxIDE1LjMgMjEgMTYuNVYxNy44TDE4LjkgMTUuN0MxOC41IDEzLjkgMTYuOCAxMi4xIDE0LjYgMTEuNEwxMi4yIDlDMTMuOCA4LjkgMTUuNCA5LjMgMTYuOSAxMC4xTTkuNSA2LjNMNy40IDQuMkM4LjggMy41IDEwLjYgMyAxMi41IDNDMTQuNiAzIDE2LjYgMy41IDE4LjMgNC43TDE2LjMgNi43QzE1LjMgNi4xIDEzLjkgNS43IDEyLjUgNS43QzExLjQgNS43IDEwLjMgNS45IDkuNSA2LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V0dGxlT3V0bGluZSA9IFwiTTEyLjUgM0M3LjggMyA0IDUuNyA0IDlDNCAxMC4yIDQuNSAxMS4zIDUuNCAxMi4zQTYuOCA2LjggMCAwIDAgNCAxNi41VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOUEyIDIgMCAwIDAgMjEgMjBWMTYuNUMyMSAxNS4zIDIwLjcgMTQuMSAyMCAxM0wyMiAxMUwxOSA4TDE2LjkgMTAuMUE5LjIgOS4yIDAgMCAwIDcuNiAxMC40QTIgMiAwIDAgMSA3IDlDNyA3LjIgOS41IDUuNyAxMi41IDUuN0MxMy45IDUuNyAxNS4zIDYuMSAxNi4zIDYuN0wxOC4zIDQuN0ExMCAxMCAwIDAgMCAxMi41IDNNMTIuNSAxMUMxNiAxMSAxOSAxNCAxOSAxNi41VjIwSDZWMTYuNUM2IDE0IDkgMTEgMTIuNSAxMU0xMyAxMi41QzEwIDEyLjUgOCAxNCA4IDE3VjE4SDEwVjE3QzEwIDE2IDEwIDEzLjUgMTMgMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXR0bGVQb3VyT3ZlciA9IFwiTTEwIDRDOS40IDQgOSA0LjQgOSA1VjZIMTRWNUMxNCA0LjQgMTMuNiA0IDEzIDRIMTBNMyA3TDQuMSAxNC4xQzQuMiAxNC44IDQuNSAxNS41IDUuMSAxNi4xQzUuNSAxNi42IDYuMiAxNi45IDcgMTdDNyAxNy42IDcuNCAxOCA4IDE4SDE2QzE2LjYgMTggMTcgMTcuNiAxNyAxN0wxNSAxMUgxN0wyMC4zIDE2TDIyIDE1TDE4LjcgMTBMMjAgOS4yTDE5IDcuNUwxNi40IDlIMTVWN0g4VjExTDcuMiAxNkM2LjUgMTUuOSA2LjEgMTUuNyA1LjggMTUuNEM1LjQgMTUgNS4yIDE0LjUgNS4xIDEzLjlMNCA3SDNNNCAxOVYyMUgyMFYxOUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtldHRsZVN0ZWFtID0gXCJNMTkgMTFMMTYgOEwxMy45IDEwLjFDMTIuNTggOS4zOCAxMS4wNSA5IDkuNSA5QzcuNjUgOSA1Ljk1IDkuNTMgNC41NSAxMC40MUM0LjE5IDkuOTcgNCA5LjUgNCA5QzQgNy4yMSA2LjQ2IDUuNzUgOS41IDUuNzVDMTAuOTMgNS43NSAxMi4zIDYuMDggMTMuMzMgNi42N0wxNS4zNSA0LjY1QzEzLjc3IDMuNTkgMTEuNjggMyA5LjUgM0M0LjgxIDMgMSA1LjY5IDEgOUMxIDEwLjE5IDEuNSAxMS4zNCAyLjQ0IDEyLjMzQzEuNTMgMTMuNSAxIDE0Ljk2IDEgMTYuNVYyMEMxIDIxLjExIDEuODkgMjIgMyAyMkgxNkMxNy4xMSAyMiAxOCAyMS4xMSAxOCAyMFYxNi41QzE4IDE1LjI4IDE3LjY2IDE0LjA3IDE3IDEzTDE5IDExTTUgMTcuNVYyMEgzVjE3LjVDMyAxMy45MSA1LjkxIDExIDkuNSAxMUM5Ljg0IDExIDEwLjE3IDExLjA0IDEwLjUgMTEuMDlDNy4zOSAxMS41NyA1IDE0LjI1IDUgMTcuNU0yMyA3LjNDMjMgOC45MyAyMS45MSAxMC42IDIwLjM4IDEwLjk3TDE5LjcxIDEwLjI5TDE5IDkuNkgxOS43NUMyMC43NSA5LjYgMjEuNSA4LjIyIDIxLjUgNy4yQzIxLjUgNi4xOCAyMC42NSA1LjE0IDE5LjY1IDUuMTRWMy42NEMyMS41IDMuNjQgMjMgNS40NSAyMyA3LjNNMTcuNjUgNi43M0MxNy4wMyA2LjEyIDE2LjY1IDUuMjggMTYuNjUgNC4zNUMxNi42NSAyLjUgMTguMTUgMSAyMCAxVjIuNUMxOSAyLjUgMTguMTUgMy4zMyAxOC4xNSA0LjM1QzE4LjE1IDUuMzcgMTkgNi4yIDIwIDYuMlY3LjdDMTkuMTggNy43IDE4LjQyIDcuOTUgMTcuNzkgOC4zOEwxNi43MiA3LjMxQzE3IDcuMDkgMTcuMzIgNi44OSAxNy42NSA2LjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtldHRsZVN0ZWFtT3V0bGluZSA9IFwiTTkuNSAzQzQuOCAzIDEgNS43IDEgOUMxIDEwLjIgMS41IDExLjMgMi40IDEyLjNDMS41IDEzLjUgLjk4NSAxNSAxIDE2LjVWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDE2QzE3LjExIDIyIDE4IDIxLjExIDE4IDIwVjE2LjVDMTggMTUuMyAxNy43IDE0LjEgMTcgMTNMMTkgMTFMMTYgOEwxMy45IDEwLjFDMTAuOTcgOC41IDcuNDIgOC42MyA0LjYgMTAuNEM0LjIyIDEwLjAzIDQgOS41MyA0IDlDNCA3LjIgNi41IDUuNyA5LjUgNS43QzEwLjkgNS43IDEyLjMgNi4xIDEzLjMgNi43TDE1LjMgNC43QzEzLjU5IDMuNTUgMTEuNTYgMi45NiA5LjUgM005LjUgMTFDMTMgMTEgMTYgMTQgMTYgMTYuNVYyMEgzVjE2LjVDMyAxNCA2IDExIDkuNSAxMU0xMCAxMi41QzcgMTIuNSA1IDE0IDUgMTdWMThIN1YxN0M3IDE2IDcgMTMuNSAxMCAxMi41TTIzIDcuM0MyMyA4LjkzIDIxLjkxIDEwLjYgMjAuMzggMTAuOTdMMTkuNzEgMTAuMjlMMTkgOS42SDE5Ljc1QzIwLjc1IDkuNiAyMS41IDguMjIgMjEuNSA3LjJDMjEuNSA2LjE4IDIwLjY1IDUuMTQgMTkuNjUgNS4xNFYzLjY0QzIxLjUgMy42NCAyMyA1LjQ1IDIzIDcuM00xNy42NSA2LjczQzE3LjAzIDYuMTIgMTYuNjUgNS4yOCAxNi42NSA0LjM1QzE2LjY1IDIuNSAxOC4xNSAxIDIwIDFWMi41QzE5IDIuNSAxOC4xNSAzLjMzIDE4LjE1IDQuMzVDMTguMTUgNS4zNyAxOSA2LjIgMjAgNi4yVjcuN0MxOS4xOCA3LjcgMTguNDIgNy45NSAxNy43OSA4LjM4TDE2LjcyIDcuMzFDMTcgNy4wOSAxNy4zMiA2Ljg5IDE3LjY1IDYuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V0dGxlYmVsbCA9IFwiTTE2LjIgMTAuN0wxNi44IDguM0MxNi45IDggMTcuMyA2LjYgMTYuNSA1LjRDMTUuOSA0LjUgMTQuNyA0IDEzIDRIMTFDOS4zIDQgOC4xIDQuNSA3LjUgNS40QzYuNyA2LjYgNy4xIDcuOSA3LjIgOC4zTDcuOCAxMC43QzYuNyAxMS44IDYgMTMuMyA2IDE1QzYgMTcuMSA3LjEgMTguOSA4LjcgMjBIMTUuM0MxNi45IDE4LjkgMTggMTcuMSAxOCAxNUMxOCAxMy4zIDE3LjMgMTEuOCAxNi4yIDEwLjdNOS42IDkuNUw5LjEgNy44VjcuN0M5LjEgNy43IDguOSA3IDkuMiA2LjZDOS40IDYuMiAxMCA2IDExIDZIMTNDMTMuOSA2IDE0LjYgNi4yIDE0LjkgNi41QzE1LjIgNi45IDE1IDcuNiAxNSA3LjZMMTQuNSA5LjVDMTMuNyA5LjIgMTIuOSA5IDEyIDlDMTEuMSA5IDEwLjMgOS4yIDkuNiA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5ID0gXCJNNywxNEEyLDIgMCAwLDEgNSwxMkEyLDIgMCAwLDEgNywxMEEyLDIgMCAwLDEgOSwxMkEyLDIgMCAwLDEgNywxNE0xMi42NSwxMEMxMS44Myw3LjY3IDkuNjEsNiA3LDZBNiw2IDAgMCwwIDEsMTJBNiw2IDAgMCwwIDcsMThDOS42MSwxOCAxMS44MywxNi4zMyAxMi42NSwxNEgxN1YxOEgyMVYxNEgyM1YxMEgxMi42NVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlBcnJvd1JpZ2h0ID0gXCJNMTAuNyA2QzEwLjEgNC4yIDguNCAzIDYuNSAzQzQgMyAyIDUgMiA3LjVTNCAxMiA2LjUgMTJDOC41IDEyIDEwLjEgMTAuOCAxMC43IDlIMTVWMTJIMThWOUgyMlY2SDEwLjdNNi41IDlDNS43IDkgNSA4LjMgNSA3LjVTNS43IDYgNi41IDYgOCA2LjcgOCA3LjUgNy4zIDkgNi41IDlNMTMgMjFWMTlIOFYxN0gxM1YxNUwxNiAxOEwxMyAyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUtleUNoYWluID0gXCJNMTIuNjcgMTMuNjdDMTIuMiAxNC4xMyAxMS42MyAxNC41IDExIDE0LjczVjIzSDhWMjFINVYxOEg4VjE0LjcyQzYuMjYgMTQuMSA1IDEyLjQ2IDUgMTAuNUM1IDggNyA2IDkuNSA2QzkuNTQgNiA5LjU3IDYgOS42IDZDOS4xMyA2Ljk1IDguOTIgOCA5LjAzIDkuMDhDOC40NCA5LjI4IDggOS44NCA4IDEwLjVDOCAxMS4zMyA4LjY3IDEyIDkuNSAxMkM5LjczIDEyIDkuOTUgMTEuOTQgMTAuMTUgMTEuODVDMTAuNzkgMTIuNjkgMTEuNjcgMTMuMzIgMTIuNjcgMTMuNjdNMjAuNzMgMTkuNDRMMTcuOTcgMjAuNkwxNy4xOSAxOC43NkwxNC40MyAxOS45M0wxMy4yNiAxNy4xNkwxNi4wMyAxNkwxNC43NiAxM0MxMi45MSAxMy4wOCAxMS4xMSAxMi4wNSAxMC4zNSAxMC4yNUM5LjM5IDcuOTYgMTAuNDcgNS4zMiAxMi43NiA0LjM1QzEzIDQuMjUgMTMuMjYgNC4xOCAxMy41IDQuMTJDMTIuODQgMi44NyAxMS41IDIgMTAgMkM3Ljc5IDIgNiAzLjc5IDYgNkM2IDYuMDggNiA2LjE2IDYgNi4yNEM1LjcgNi41IDUuNCA2LjgyIDUuMTUgNy4xNUM1LjA2IDYuNzggNSA2LjQgNSA2QzUgMy4yNCA3LjI0IDEgMTAgMVMxNSAzLjI0IDE1IDZDMTUgNy40MiAxNC40IDguNjcgMTMuNDUgOS41N0MxMy44NyAxMCAxNC41IDEwLjEzIDE1LjA4IDkuODhDMTUuODUgOS41NiAxNi4yIDguNjggMTUuODggNy45MkMxNS44NSA3LjgzIDE1LjggNy43NCAxNS43NCA3LjY2QzE1LjkgNy4xMyAxNiA2LjU4IDE2IDZDMTYgNS4zNyAxNS45IDQuNzYgMTUuNzIgNC4xOUMxNyA0LjU1IDE4LjEgNS40NCAxOC42NSA2Ljc2QzE5LjQxIDguNTYgMTguODkgMTAuNTcgMTcuNSAxMS44MUwyMC43MyAxOS40NE0xMyA4LjZDMTMuMzcgOC4xOSAxMy42NSA3LjcxIDEzLjgyIDcuMThDMTMuMjggNy40NSAxMi45NyA4IDEzIDguNlpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlDaGFpblZhcmlhbnQgPSBcIk0xMi42NiAxMy42N0MxMi4zMiAxNCAxMS45MyAxNC4yOSAxMS41IDE0LjVWMjFMOS41IDIzTDcuNSAyMUw5LjUgMTkuMjlMOCAxOEw5LjUgMTYuNzFMNy41IDE1VjE0LjVDNiAxMy43NyA1IDEyLjI2IDUgMTAuNUM1IDggNyA2IDkuNSA2QzkuNTQgNiA5LjU4IDYgOS42MSA2QzkuNTkgNi4wNyA5LjU0IDYuMTIgOS41IDYuMThDOS4yMyA2Ljc5IDkuMDggNy40MyA5LjAzIDguMDhDOC40MyA4LjI4IDggOC44NCA4IDkuNUM4IDEwLjMzIDguNjcgMTEgOS41IDExQzkuNTMgMTEgOS41NyAxMSA5LjYgMTFDMTAuMjQgMTIuMjUgMTEuMzQgMTMuMiAxMi42NiAxMy42N00xNiA2QzE2IDUuMzcgMTUuOSA0Ljc1IDE1LjcyIDQuMThDMTcuMDYgNC41NiAxOC4yMSA1LjU1IDE4LjczIDYuOTZDMTkuMzMgOC42MiAxOC44OSAxMC4zOSAxNy43NSAxMS41OUwyMCAxNy42OEwxOC43OCAyMC4yNUwxNi4yMiAxOS4wNUwxNy41IDE2Ljc2TDE1LjY2IDE2LjA2TDE2LjYzIDE0LjM0TDE0LjE2IDEzLjQxTDE0IDEyLjk1QzEyLjM2IDEyLjc3IDEwLjg4IDExLjcgMTAuMjcgMTAuMDRDOS40MiA3LjcxIDEwLjYzIDUuMTIgMTIuOTYgNC4yN0MxMy4xNCA0LjIxIDEzLjMzIDQuMTcgMTMuNSA0LjEzQzEyLjg0IDIuODcgMTEuNTMgMiAxMCAyQzcuNzkgMiA2IDMuNzkgNiA2QzYgNi4wOSA2IDYuMTcgNi4wMyA2LjI2QzUuNyA2LjUzIDUuNCA2LjgyIDUuMTUgNy4xNUM1LjA2IDYuNzggNSA2LjQgNSA2QzUgMy4yNCA3LjI0IDEgMTAgMVMxNSAzLjI0IDE1IDZDMTUgNy4xNiAxNC42IDguMjEgMTMuOTQgOS4wNkMxNi4wOCA4Ljg4IDE2IDYgMTYgNk0xMi44MSA4LjFDMTIuODcgOC4yNyAxMi45NiA4LjQxIDEzLjA2IDguNTRDMTMuNjIgNy44OCAxMy45NyA3LjA0IDE0IDYuMTFDMTMuODkgNi4xMyAxMy44IDYuMTUgMTMuNyA2LjE4QzEyLjkyIDYuNDcgMTIuNSA3LjMzIDEyLjgxIDguMVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlDaGFuZ2UgPSBcIk02LjUsMkM4LjQ2LDIgMTAuMTMsMy4yNSAxMC43NCw1SDIyVjhIMThWMTFIMTVWOEgxMC43NEMxMC4xMyw5Ljc1IDguNDYsMTEgNi41LDExQzQsMTEgMiw5IDIsNi41QzIsNCA0LDIgNi41LDJNNi41LDVBMS41LDEuNSAwIDAsMCA1LDYuNUExLjUsMS41IDAgMCwwIDYuNSw4QTEuNSwxLjUgMCAwLDAgOCw2LjVBMS41LDEuNSAwIDAsMCA2LjUsNU02LjUsMTNDOC40NiwxMyAxMC4xMywxNC4yNSAxMC43NCwxNkgyMlYxOUgyMFYyMkgxOFYxOUgxNlYyMkgxM1YxOUgxMC43NEMxMC4xMywyMC43NSA4LjQ2LDIyIDYuNSwyMkM0LDIyIDIsMjAgMiwxNy41QzIsMTUgNCwxMyA2LjUsMTNNNi41LDE2QTEuNSwxLjUgMCAwLDAgNSwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE5QTEuNSwxLjUgMCAwLDAgOCwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleUxpbmsgPSBcIk02LjUgM0M0IDMgMiA1IDIgNy41UzQgMTIgNi41IDEyQzguNDYgMTIgMTAuMTMgMTAuNzUgMTAuNzQgOUgxNVYxMkgxOFY5SDIyVjZIMTAuNzRDMTAuMTMgNC4yNSA4LjQ2IDMgNi41IDNNNi41IDZDNy4zMyA2IDggNi42NyA4IDcuNVM3LjMzIDkgNi41IDkgNSA4LjMzIDUgNy41IDUuNjcgNiA2LjUgNk0xMCAxNEM4LjM5IDE0IDYgMTUuMDcgNiAxOEM2IDIwLjk0IDguMzkgMjIgMTAgMjJIMTFWMjBIMTBDOS42NyAyMCA4IDE5LjkgOCAxOEM4IDE2LjE3IDkuNTQgMTYgMTAgMTZIMTFWMTRNMTMgMTRWMTZIMTRDMTQuMzMgMTYgMTYgMTYuMSAxNiAxOEMxNiAxOS44MyAxNC40NiAyMCAxNCAyMEgxM1YyMkgxNEMxNS42MSAyMiAxOCAyMC45NCAxOCAxOEMxOCAxNS4wNyAxNS42MSAxNCAxNCAxNE05IDE3VjE5SDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleU1pbnVzID0gXCJNNi41LDNDOC40NiwzIDEwLjEzLDQuMjUgMTAuNzQsNkgyMlY5SDE4VjEySDE1VjlIMTAuNzRDMTAuMTMsMTAuNzUgOC40NiwxMiA2LjUsMTJDNCwxMiAyLDEwIDIsNy41QzIsNSA0LDMgNi41LDNNNi41LDZBMS41LDEuNSAwIDAsMCA1LDcuNUExLjUsMS41IDAgMCwwIDYuNSw5QTEuNSwxLjUgMCAwLDAgOCw3LjVBMS41LDEuNSAwIDAsMCA2LjUsNk04LDE3SDE2VjE5SDhWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5T3V0bGluZSA9IFwiTTIyLDE5SDE2VjE1SDEzLjMyQzEyLjE4LDE3LjQyIDkuNzIsMTkgNywxOUMzLjE0LDE5IDAsMTUuODYgMCwxMkMwLDguMTQgMy4xNCw1IDcsNUM5LjcyLDUgMTIuMTcsNi41OCAxMy4zMiw5SDI0VjE1SDIyVjE5TTE4LDE3SDIwVjEzSDIyVjExSDExLjk0TDExLjcxLDEwLjMzQzExLDguMzQgOS4xMSw3IDcsN0E1LDUgMCAwLDAgMiwxMkE1LDUgMCAwLDAgNywxN0M5LjExLDE3IDExLDE1LjY2IDExLjcxLDEzLjY3TDExLjk0LDEzSDE4VjE3TTcsMTVBMywzIDAgMCwxIDQsMTJBMywzIDAgMCwxIDcsOUEzLDMgMCAwLDEgMTAsMTJBMywzIDAgMCwxIDcsMTVNNywxMUExLDEgMCAwLDAgNiwxMkExLDEgMCAwLDAgNywxM0ExLDEgMCAwLDAgOCwxMkExLDEgMCAwLDAgNywxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlQbHVzID0gXCJNNi41LDNDOC40NiwzIDEwLjEzLDQuMjUgMTAuNzQsNkgyMlY5SDE4VjEySDE1VjlIMTAuNzRDMTAuMTMsMTAuNzUgOC40NiwxMiA2LjUsMTJDNCwxMiAyLDEwIDIsNy41QzIsNSA0LDMgNi41LDNNNi41LDZBMS41LDEuNSAwIDAsMCA1LDcuNUExLjUsMS41IDAgMCwwIDYuNSw5QTEuNSwxLjUgMCAwLDAgOCw3LjVBMS41LDEuNSAwIDAsMCA2LjUsNk04LDE3SDExVjE0SDEzVjE3SDE2VjE5SDEzVjIySDExVjE5SDhWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5UmVtb3ZlID0gXCJNNi41LDNDOC40NiwzIDEwLjEzLDQuMjUgMTAuNzQsNkgyMlY5SDE4VjEySDE1VjlIMTAuNzRDMTAuMTMsMTAuNzUgOC40NiwxMiA2LjUsMTJDNCwxMiAyLDEwIDIsNy41QzIsNSA0LDMgNi41LDNNNi41LDZBMS41LDEuNSAwIDAsMCA1LDcuNUExLjUsMS41IDAgMCwwIDYuNSw5QTEuNSwxLjUgMCAwLDAgOCw3LjVBMS41LDEuNSAwIDAsMCA2LjUsNk0xNC41OSwxNEwxNiwxNS40MUwxMy40MSwxOEwxNiwyMC41OUwxNC41OSwyMkwxMiwxOS40MUw5LjQxLDIyTDgsMjAuNTlMMTAuNTksMThMOCwxNS40MUw5LjQxLDE0TDEyLDE2LjU5TDE0LjU5LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleVN0YXIgPSBcIk02LjUgM0M0IDMgMiA1IDIgNy41UzQgMTIgNi41IDEyQzguNDYgMTIgMTAuMTMgMTAuNzUgMTAuNzQgOUgxNVYxMkgxOFY5SDIyVjZIMTAuNzRDMTAuMTMgNC4yNSA4LjQ2IDMgNi41IDNNNi41IDZDNy4zMyA2IDggNi42NyA4IDcuNVM3LjMzIDkgNi41IDkgNSA4LjMzIDUgNy41IDUuNjcgNiA2LjUgNk0xMiAxNEwxMC44NyAxNi42NEw4IDE2Ljg5TDEwLjE4IDE4Ljc3TDkuNSAyMS41OEwxMiAyMC4wOUwxNC40NSAyMS41OEwxMy44IDE4Ljc3TDE2IDE2Ljg5TDEzLjExIDE2LjY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleVZhcmlhbnQgPSBcIk0yMiwxOFYyMkgxOFYxOUgxNVYxNkgxMkw5Ljc0LDEzLjc0QzkuMTksMTMuOTEgOC42MSwxNCA4LDE0QTYsNiAwIDAsMSAyLDhBNiw2IDAgMCwxIDgsMkE2LDYgMCAwLDEgMTQsOEMxNCw4LjYxIDEzLjkxLDkuMTkgMTMuNzQsOS43NEwyMiwxOE03LDVBMiwyIDAgMCwwIDUsN0EyLDIgMCAwLDAgNyw5QTIsMiAwIDAsMCA5LDdBMiwyIDAgMCwwIDcsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlXaXJlbGVzcyA9IFwiTTQuOTMgNS45Mkw2LjM0IDcuMzNBOCA4IDAgMCAxIDE3LjY2IDcuMzNMMTkuMDcgNS45MkExMCAxMCAwIDAgMCA0LjkzIDUuOTJNNy43NiA4Ljc1TDkuMTcgMTAuMTZBNCA0IDAgMCAxIDE0LjgzIDEwLjE2TDE2LjI0IDguNzVBNiA2IDAgMCAwIDcuNzYgOC43NU0xMC43NiAxNUE0LjUgNC41IDAgMSAwIDEwLjc2IDE4SDE1VjIxSDE4VjE4SDIyVjE1TTYuNSAxOEExLjUgMS41IDAgMSAxIDggMTYuNUExLjUgMS41IDAgMCAxIDYuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZCA9IFwiTTE5LDEwSDE3VjhIMTlNMTksMTNIMTdWMTFIMTlNMTYsMTBIMTRWOEgxNk0xNiwxM0gxNFYxMUgxNk0xNiwxN0g4VjE1SDE2TTcsMTBINVY4SDdNNywxM0g1VjExSDdNOCwxMUgxMFYxM0g4TTgsOEgxMFYxMEg4TTExLDExSDEzVjEzSDExTTExLDhIMTNWMTBIMTFNMjAsNUg0QzIuODksNSAyLDUuODkgMiw3VjE3QTIsMiAwIDAsMCA0LDE5SDIwQTIsMiAwIDAsMCAyMiwxN1Y3QzIyLDUuODkgMjEuMSw1IDIwLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRCYWNrc3BhY2UgPSBcIk0yMSwxMUg2LjgzTDEwLjQxLDcuNDFMOSw2TDMsMTJMOSwxOEwxMC40MSwxNi41OEw2LjgzLDEzSDIxVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkQ2FwcyA9IFwiTTYsMThIMThWMTZINk0xMiw4LjQxTDE2LjU5LDEzTDE4LDExLjU4TDEyLDUuNThMNiwxMS41OEw3LjQxLDEzTDEyLDguNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRDbG9zZSA9IFwiTTEyLDIzTDE2LDE5SDhNMTksOEgxN1Y2SDE5TTE5LDExSDE3VjlIMTlNMTYsOEgxNFY2SDE2TTE2LDExSDE0VjlIMTZNMTYsMTVIOFYxM0gxNk03LDhINVY2SDdNNywxMUg1VjlIN004LDlIMTBWMTFIOE04LDZIMTBWOEg4TTExLDlIMTNWMTFIMTFNMTEsNkgxM1Y4SDExTTIwLDNINEMyLjg5LDMgMiwzLjg5IDIsNVYxNUEyLDIgMCAwLDAgNCwxN0gyMEEyLDIgMCAwLDAgMjIsMTVWNUMyMiwzLjg5IDIxLjEsMyAyMCwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRXNjID0gXCJNMSA3SDdWOUgzVjExSDdWMTNIM1YxNUg3VjE3SDFWN00xMSA3SDE1VjlIMTFWMTFIMTNDMTQuMTEgMTEgMTUgMTEuOSAxNSAxM1YxNUMxNSAxNi4xMSAxNC4xMSAxNyAxMyAxN0g5VjE1SDEzVjEzSDExQzkuOSAxMyA5IDEyLjExIDkgMTFWOUM5IDcuOSA5LjkgNyAxMSA3TTE5IDdIMjFDMjIuMTEgNyAyMyA3LjkgMjMgOVYxMEgyMVY5SDE5VjE1SDIxVjE0SDIzVjE1QzIzIDE2LjExIDIyLjExIDE3IDIxIDE3SDE5QzE3LjkgMTcgMTcgMTYuMTEgMTcgMTVWOUMxNyA3LjkgMTcuOSA3IDE5IDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRGMSA9IFwiTTYgN0gxMlY5SDhWMTFIMTFWMTNIOFYxN0g2VjdNMTQgN0gxOFYxN0gxNlY5SDE0VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRGMTAgPSBcIk0yIDdIOFY5SDRWMTFIN1YxM0g0VjE3SDJWN00xMCA3SDE0VjE3SDEyVjlIMTBWN00xOCA3SDIwQzIxLjExIDcgMjIgNy45IDIyIDlWMTVDMjIgMTYuMTEgMjEuMTEgMTcgMjAgMTdIMThDMTYuOSAxNyAxNiAxNi4xMSAxNiAxNVY5QzE2IDcuOSAxNi45IDcgMTggN00xOCA5VjE1SDIwVjlIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRGMTEgPSBcIk0zIDdIOVY5SDVWMTFIOFYxM0g1VjE3SDNWN00xMSA3SDE1VjE3SDEzVjlIMTFWN00xNyA3SDIxVjE3SDE5VjlIMTdWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZEYxMiA9IFwiTTIgN0g4VjlINFYxMUg3VjEzSDRWMTdIMlY3TTE2IDdIMjBDMjEuMTEgNyAyMiA3LjkgMjIgOVYxMUMyMiAxMi4xMSAyMS4xMSAxMyAyMCAxM0gxOFYxNUgyMlYxN0gxNlYxM0MxNiAxMS45IDE2LjkgMTEgMTggMTFIMjBWOUgxNlY3TTEwIDdIMTRWMTdIMTJWOUgxMFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjIgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTEzIDdIMTdDMTguMTEgNyAxOSA3LjkgMTkgOVYxMUMxOSAxMi4xMSAxOC4xMSAxMyAxNyAxM0gxNVYxNUgxOVYxN0gxM1YxM0MxMyAxMS45IDEzLjkgMTEgMTUgMTFIMTdWOUgxM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjMgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTE5IDE1QzE5IDE2LjExIDE4LjExIDE3IDE3IDE3SDEzVjE1SDE3VjEzSDE1VjExSDE3VjlIMTNWN0gxN0MxOC4xIDcgMTkgNy44OSAxOSA5VjEwLjVDMTkgMTEuMzMgMTguMzMgMTIgMTcuNSAxMkMxOC4zMyAxMiAxOSAxMi42NyAxOSAxMy41VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjQgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTEzIDdIMTVWMTFIMTdWN0gxOVYxN0gxN1YxM0gxM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjUgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTEzIDdIMTlWOUgxNVYxMUgxN0MxOC4xMSAxMSAxOSAxMS45IDE5IDEzVjE1QzE5IDE2LjExIDE4LjExIDE3IDE3IDE3SDEzVjE1SDE3VjEzSDEzVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRGNiA9IFwiTTUgN0gxMVY5SDdWMTFIMTBWMTNIN1YxN0g1VjdNMTUgN0gxOVY5SDE1VjExSDE3QzE4LjExIDExIDE5IDExLjkgMTkgMTNWMTVDMTkgMTYuMTEgMTguMTEgMTcgMTcgMTdIMTVDMTMuOSAxNyAxMyAxNi4xMSAxMyAxNVY5QzEzIDcuOSAxMy45IDcgMTUgN00xNSAxM1YxNUgxN1YxM0gxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZEY3ID0gXCJNNSA3SDExVjlIN1YxMUgxMFYxM0g3VjE3SDVWN00xNSAxN0gxM0wxNyA5SDEzVjdIMTlWOUwxNSAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZEY4ID0gXCJNNSA3SDExVjlIN1YxMUgxMFYxM0g3VjE3SDVWN00xNSAxM1YxNUgxN1YxM0gxNU0xNSA5VjExSDE3VjlIMTVNMTUgMTdDMTMuOSAxNyAxMyAxNi4xMSAxMyAxNVYxMy41QzEzIDEyLjY3IDEzLjY3IDEyIDE0LjUgMTJDMTMuNjcgMTIgMTMgMTEuMzMgMTMgMTAuNVY5QzEzIDcuOSAxMy45IDcgMTUgN0gxN0MxOC4xIDcgMTkgNy44OSAxOSA5VjEwLjVDMTkgMTEuMzMgMTguMzMgMTIgMTcuNSAxMkMxOC4zMyAxMiAxOSAxMi42NyAxOSAxMy41VjE1QzE5IDE2LjExIDE4LjExIDE3IDE3IDE3SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjkgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTE3IDE3SDEzVjE1SDE3VjEzSDE1QzEzLjkgMTMgMTMgMTIuMTEgMTMgMTFWOUMxMyA3LjkgMTMuOSA3IDE1IDdIMTdDMTguMTEgNyAxOSA3LjkgMTkgOVYxNUMxOSAxNi4xMSAxOC4xMSAxNyAxNyAxN00xNyAxMVY5SDE1VjExSDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMCwyMC43MkwxOC43MywyMkwxNS43MywxOUg0QzIuODksMTkgMiwxOC4xIDIsMTdWN0MyLDYuNSAyLjE4LDYuMDcgMi40Niw1LjczTDEsNC4yN00xOSwxMFY4SDE3VjEwSDE5TTE5LDEzVjExSDE3VjEzSDE5TTE2LDEwVjhIMTRWMTBIMTZNMTYsMTNWMTFIMTRWMTIuMThMMTEuODIsMTBIMTNWOEgxMVY5LjE4TDkuODIsOEw2LjgyLDVIMjBBMiwyIDAgMCwxIDIyLDdWMTdDMjIsMTcuODYgMjEuNDYsMTguNTkgMjAuNywxOC44N0wxNC44MiwxM0gxNk04LDE1VjE3SDEzLjczTDExLjczLDE1SDhNNSwxMEg2LjczTDUsOC4yN1YxME03LDEzVjExSDVWMTNIN004LDEzSDkuNzNMOCwxMS4yN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZE9mZk91dGxpbmUgPSBcIk0xLDQuMjdMMi40Nyw1Ljc0QzIuMTgsNi4wOCAyLDYuNSAyLDdWMTdBMiwyIDAgMCwwIDQsMTlIMTUuNzNMMTguNzMsMjJMMjAsMjAuNzJMMi4yOCwzTDEsNC4yN000LDE3VjcuMjdMNSw4LjI3VjEwSDYuNzNMOCwxMS4yN1YxM0g5LjczTDEwLjczLDE0SDhWMTZIMTIuNzNMMTMuNzMsMTdINE01LDExSDdWMTNINVYxMU0xNywxMUgxOVYxM0gxN1YxMU0xOSwxMEgxN1Y4SDE5VjEwTTE0LDExSDE2VjEzSDE0LjgzTDE0LDEyLjE3VjExTTEzLDEwSDExLjgzTDExLDkuMTdWOEgxM1YxME0yMiw3VjE3QzIyLDE3Ljg2IDIxLjQ1LDE4LjU4IDIwLjcsMTguODdMMTguODMsMTdIMjBWN0g4LjgzTDYuODMsNUgyMEEyLDIgMCAwLDEgMjIsN00xNiwxMEgxNFY4SDE2VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkT3V0bGluZSA9IFwiTTQsNUEyLDIgMCAwLDAgMiw3VjE3QTIsMiAwIDAsMCA0LDE5SDIwQTIsMiAwIDAsMCAyMiwxN1Y3QTIsMiAwIDAsMCAyMCw1SDRNNCw3SDIwVjE3SDRWN001LDhWMTBIN1Y4SDVNOCw4VjEwSDEwVjhIOE0xMSw4VjEwSDEzVjhIMTFNMTQsOFYxMEgxNlY4SDE0TTE3LDhWMTBIMTlWOEgxN001LDExVjEzSDdWMTFINU04LDExVjEzSDEwVjExSDhNMTEsMTFWMTNIMTNWMTFIMTFNMTQsMTFWMTNIMTZWMTFIMTRNMTcsMTFWMTNIMTlWMTFIMTdNOCwxNFYxNkgxNlYxNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkUmV0dXJuID0gXCJNMTksN1YxMUg1LjgzTDkuNDEsNy40MUw4LDZMMiwxMkw4LDE4TDkuNDEsMTYuNThMNS44MywxM0gyMVY3SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkU2V0dGluZ3MgPSBcIk0xOSwxMEgxN1Y4SDE5TTE5LDEzSDE3VjExSDE5TTE2LDEwSDE0VjhIMTZNMTYsMTNIMTRWMTFIMTZNMTYsMTdIOFYxNUgxNk03LDEwSDVWOEg3TTcsMTNINVYxMUg3TTgsMTFIMTBWMTNIOE04LDhIMTBWMTBIOE0xMSwxMUgxM1YxM0gxMU0xMSw4SDEzVjEwSDExTTIwLDVINEEyLDIgMCAwLDAgMiw3VjE3QTIsMiAwIDAsMCA0LDE5SDIwQTIsMiAwIDAsMCAyMiwxN1Y3QTIsMiAwIDAsMCAyMCw1TTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkU2V0dGluZ3NPdXRsaW5lID0gXCJNNywyMkg5VjI0SDdWMjJNMTEsMjJIMTNWMjRIMTFWMjJNMTUsMjJIMTdWMjRIMTVWMjJNNCw1QTIsMiAwIDAsMCAyLDdWMTdBMiwyIDAgMCwwIDQsMTlIMjBBMiwyIDAgMCwwIDIyLDE3VjdBMiwyIDAgMCwwIDIwLDVINE00LDdIMjBWMTdINFY3TTUsOFYxMEg3VjhINU04LDhWMTBIMTBWOEg4TTExLDhWMTBIMTNWOEgxMU0xNCw4VjEwSDE2VjhIMTRNMTcsOFYxMEgxOVY4SDE3TTUsMTFWMTNIN1YxMUg1TTgsMTFWMTNIMTBWMTFIOE0xMSwxMVYxM0gxM1YxMUgxMU0xNCwxMVYxM0gxNlYxMUgxNE0xNywxMVYxM0gxOVYxMUgxN004LDE0VjE2SDE2VjE0SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRTcGFjZSA9IFwiTTMgMTVINVYxOUgxOVYxNUgyMVYxOUMyMSAyMC4xIDIwLjEgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xIDMgMTlWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRUYWIgPSBcIk0yMCwxOEgyMlY2SDIwTTExLjU5LDcuNDFMMTUuMTcsMTFIMVYxM0gxNS4xN0wxMS41OSwxNi41OEwxMywxOEwxOSwxMkwxMyw2TDExLjU5LDcuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRWYXJpYW50ID0gXCJNNiwxNkgxOFYxOEg2VjE2TTYsMTNWMTVIMlYxM0g2TTcsMTVWMTNIMTBWMTVIN00xMSwxNVYxM0gxM1YxNUgxMU0xNCwxNVYxM0gxN1YxNUgxNE0xOCwxNVYxM0gyMlYxNUgxOE0yLDEwSDVWMTJIMlYxME0xOSwxMlYxMEgyMlYxMkgxOU0xOCwxMkgxNlYxMEgxOFYxMk04LDEySDZWMTBIOFYxMk0xMiwxMkg5VjEwSDEyVjEyTTE1LDEySDEzVjEwSDE1VjEyTTIsOVY3SDRWOUgyTTUsOVY3SDdWOUg1TTgsOVY3SDEwVjlIOE0xMSw5VjdIMTNWOUgxMU0xNCw5VjdIMTZWOUgxNE0xNyw5VjdIMjJWOUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlLaGFuZGEgPSBcIk0xNiAyMEMxOS43MiAxOCAyMiAxNS4yNyAyMiAxMkMyMiA5LjM0IDIwLjQ2IDYuOSAxNy44OSA1SDE3LjgyQzE5IDYuMzUgMTkuNjggOC4wOSAxOS42OCAxMEMxOS42OCAxMyAxOCAxNSAxNS41IDE2LjgzQzE1LjUgMTYuODQgMTQuMzggMTcuNTQgMTMgMTguNDFWMTcuMzNMMTUgMTZDMTUgMTYgMTQuOCAxNS40IDE0LjU4IDE0LjQ2QzE2LjYgMTMuNTggMTggMTEuNjkgMTggOS41QzE4IDcuMzQgMTYuNjQgNS40NyAxNC42NSA0LjU3QzE0Ljg0IDMuNjMgMTUgMyAxNSAzTDEyIDFMOSAzQzkgMyA5LjE2IDMuNjMgOS4zNSA0LjU3QzcuMzcgNS40NyA2IDcuMzQgNiA5LjVDNiAxMS42OSA3LjQgMTMuNTggOS40MiAxNC40NkM5LjIgMTUuNCA5IDE2IDkgMTZMMTEgMTcuMzNWMTguNDFDOS42MiAxNy41NCA4LjUgMTYuODQgOC41IDE2LjgzQzYgMTUgNC4zMiAxMyA0LjMyIDEwQzQuMzIgOC4wOSA1IDYuMzUgNi4xOCA1SDYuMTJDMy41NCA2LjkgMiA5LjM0IDIgMTJDMiAxNS4yNyA0LjI5IDE4IDggMjBMOSAxOC41TDEwLjkyIDE5LjczTDcuMzQgMjJMOCAyM0wxMSAyMS4wN1YyM0gxM1YyMS4wN0wxNiAyM0wxNi42NiAyMkwxMy4wOCAxOS43M0wxNSAxOC41TDE2IDIwTTE2Ljc1IDkuNUMxNi43NSAxMS4wOSAxNS43NiAxMi40NiAxNC4zMSAxMy4xOUMxNC4xNCAxMi4yMyAxNCAxMS4xMiAxNCAxMEMxNCA4LjY3IDE0LjIgNy4xNSAxNC40MiA1Ljg2QzE1LjgxIDYuNiAxNi43NSA3Ljk1IDE2Ljc1IDkuNU03LjI1IDkuNUM3LjI1IDcuOTUgOC4xOSA2LjYgOS41OSA1Ljg2QzkuOCA3LjE1IDEwIDguNjcgMTAgMTBDMTAgMTEuMTIgOS44NiAxMi4yMyA5LjY5IDEzLjE5QzguMjQgMTIuNDYgNy4yNSAxMS4wOSA3LjI1IDkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLaWNrc3RhcnRlciA9IFwiTTE5LjMgMTAuMkwxNy41IDEyTDE5LjMgMTMuOEMyMS4xOSAxNS42NyAyMS4xOSAxOC43MiAxOS4zIDIwLjU5QzE3LjQyIDIyLjQ2IDE0LjM1IDIyLjQ2IDEyLjQ3IDIwLjU5TDExLjggMTkuOTNDMTAuOTMgMjEuMTkgOS41IDIyIDcuODMgMjJDNS4xNiAyMiAzIDE5Ljg1IDMgMTcuMlY2LjhDMyA0LjE1IDUuMTYgMiA3LjgzIDJDOS41IDIgMTAuOTMgMi44MiAxMS44IDQuMDdMMTIuNDcgMy40MUMxNC4zNSAxLjU0IDE3LjQyIDEuNTQgMTkuMyAzLjQxQzIxLjE5IDUuMjggMjEuMTkgOC4zMyAxOS4zIDEwLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2xpbmdvbiA9IFwiTTQuNzkgMjEuNUw0LjcxIDIxLjI0QzQuNTMgMjAuNjUgNC40NyAyMC4wOCA0LjUgMTkuNEM0LjYgMTguMTcgNS4xNCAxNy4zMSA1LjgyIDE2LjU5QzUuNjQgMTYgNS41MyAxNS4zOSA1LjUzIDE0Ljc0QzUuNTMgMTMgNi4yNiAxMS40NCA3LjQ1IDEwLjNDOC4zMyA5LjQ2IDkuNDYgOC44NiAxMC43MSA4LjZDMTEuMzcgNi4yMyAxMS44IDMuOCAxMiAxLjVDMTIuMjQgMy41IDEyLjY1IDYuMTIgMTMuMyA4LjU4QzE0LjYgOC44MiAxNS43NiA5LjQzIDE2LjY3IDEwLjNDMTcuODUgMTEuNDQgMTguNTkgMTMgMTguNTkgMTQuNzRDMTguNTkgMTUuMzUgMTguNSAxNS45MyAxOC4zMyAxNi41QzE5LjIxIDE2LjkyIDIwLjIgMTcuMTcgMjEuNSAxNy4yOUwyMS40NCAxNy40NEMyMS4zMiAxNy43NyAyMSAxOCAyMC43MSAxOC4xOEwyMC42OSAxOC4xOUMyMC4xMyAxOC41NyAxOS4xOCAxOSAxNy44NSAxOUMxNy43IDE5IDE3LjU2IDE5IDE3LjQxIDE5QzE3LjIzIDE5IDE3LjA2IDE4Ljk3IDE2LjkgMTguOTVDMTYuODMgMTkgMTYuNzUgMTkuMSAxNi42NyAxOS4xOEMxNS41IDIwLjMxIDEzLjg2IDIxIDEyLjA2IDIxQzEwLjI3IDIxIDguNjQgMjAuMzEgNy40NiAxOS4xOEM3LjQyIDE5LjE0IDcuMzggMTkuMSA3LjM0IDE5LjA2QzYuMzQgMTkuNTkgNS41NCAyMC4zMyA0Ljk0IDIxLjI3TDQuOCAyMS41TTYuNSAxNS45NEM2LjY1IDE1LjgyIDguMiAxNC41IDguNjMgMTMuNzhMOC43MyAxMy42MUM5LjY1IDE1IDEwLjQgMTYuMjggMTEuNDMgMTguMDhMMTEuMjIgMTguMDlDMTAuMDggMTguMTYgOS4wNSAxOC4zNyA4LjE1IDE4LjdDOS4xNyAxOS42MiAxMC41NSAyMC4xOSAxMi4wNiAyMC4xOUMxMy41NCAyMC4xOSAxNC44OCAxOS42NSAxNS44OSAxOC43N0MxNS42NCAxOC43MiAxNS4zOSAxOC42NSAxNS4xNSAxOC41OUMxNC4zOCAxOC40MSAxMy42NSAxOC4yMiAxMi44MSAxOC4xOUwxMi42MiAxOC4xOEwxMi43IDE4QzEzLjEgMTcuMiAxNC44IDE0LjQxIDE1LjIzIDEzLjYzTDE1LjM0IDEzLjgxQzE2IDE0Ljc3IDE2LjczIDE1LjUgMTcuNTggMTYuMDdDMTcuNjkgMTUuNjQgMTcuNzUgMTUuMiAxNy43NSAxNC43NUMxNy43NSAxMy4yNSAxNy4xMSAxMS44OSAxNi4wOSAxMC45QzE1LjQgMTAuMjQgMTQuNTMgOS43NCAxMy41NSA5LjVDMTMuODUgMTAuNSAxNC4yIDExLjUgMTQuNTkgMTIuMzVMMTQuNjIgMTIuNEwxNC41OSAxMi40NkMxNC4yIDEzLjIyIDEzLjc2IDEzLjk1IDEzLjMzIDE0LjY2QzEyLjk0IDE1LjMgMTIuNTQgMTUuOTYgMTIuMTggMTYuNjRMMTIuMDggMTYuODNMMTEuOTYgMTYuNjVDMTEuMzkgMTUuODIgOS43NSAxMy4wNiA5LjQxIDEyLjVDOS44MSAxMS41IDEwLjE1IDEwLjUgMTAuNDUgOS41QzkuNSA5Ljc4IDguNyAxMC4yNiA4LjAzIDEwLjlDNyAxMS44OCA2LjM3IDEzLjI1IDYuMzcgMTQuNzRDNi4zNyAxNS4xNiA2LjQyIDE1LjU2IDYuNSAxNS45NVwiO1xyXG5leHBvcnQgdmFyIG1kaUtuaWZlID0gXCJNMjAuNjIsMkMyMy45Nyw3LjYxIDEyLjQ3LDIwLjE1IDEyLjQ3LDIwLjE1TDkuNiwxNy4yOEw0LjkxLDIyTDIuNzcsMTkuODZMMjAuNjIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlLbmlmZU1pbGl0YXJ5ID0gXCJNMjIsMkwxNy4zOSwzLjc1TDEwLjQ2LDEwLjY4TDE0LDE0LjIyTDIwLjkyLDcuMjlDMjIuNDMsNS43OCAyMiwyIDIyLDJNOC4zMywxMEw2LjkyLDExLjM5TDguMzMsMTIuOEwyLjY4LDE4LjQ2TDYuMjEsMjJMMTEuODcsMTYuMzRMMTMuMjgsMTcuNzZMMTQuNywxNi4zNEw4LjMzLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtvYWxhID0gXCJNMTkgM0MxOC4xIDMgMTUuNSAzIDE0LjMgNi4xQzEzLjkgNiAxMy40IDYgMTMgNkgxMUMxMC42IDYgMTAuMSA2IDkuNyA2LjFDOC41IDMgNS45IDMgNSAzQzQgMyAxIDQgMSA5QzEgMTIuNiAzLjUgMTMuNiA1IDEzLjlWMTVDNSAxOC4zIDcuNyAyMSAxMSAyMUgxM0MxNi4zIDIxIDE5IDE4LjMgMTkgMTVWMTMuOUMyMC41IDEzLjYgMjMgMTIuNiAyMyA5QzIzIDQgMjAgMyAxOSAzTTUgMTJWMTIuNEMyLjkgMTEuOCAzLjMgOS41IDQuMyA4LjdDNCA4LjMgMyA5IDMgOC42QzMgOC4xIDQuOCA3LjQgNS4xIDcuM0M0LjggNi44IDMuNiA3IDMuNiA2LjZDMy42IDYuMyA0LjggNS44IDUuOCA2QzYuMyA2LjEgNi45IDYuMyA3LjQgNi43QzYgOCA1IDkuOCA1IDEyTTguNSAxNUM2LjUgMTUgNi41IDEyIDguNSAxMkMxMC41IDEyIDEwLjUgMTUgOC41IDE1TTEyLjUgMThIMTEuNUMxMC44IDE4IDEwLjMgMTcuMyAxMC42IDE2LjdMMTEuMyAxMy43QzExLjQgMTMuMyAxMS44IDEzLjEgMTIuMSAxM0MxMi40IDEzIDEyLjcgMTMuMiAxMi45IDEzLjdMMTMuNiAxNi43QzEzLjcgMTcuMyAxMy4yIDE4IDEyLjUgMThNMTUuNSAxNUMxMy41IDE1IDEzLjUgMTIgMTUuNSAxMkMxNy41IDEyIDE3LjUgMTUgMTUuNSAxNU0xOS43IDguNkMyMC43IDkuNCAyMS4xIDExLjcgMTkgMTIuM0MxOS4xIDEwLjEgMTguMSA4IDE2LjYgNi43QzE3LjEgNi4zIDE3LjcgNi4xIDE4LjIgNkMxOS4yIDUuOCAyMC40IDYuMiAyMC40IDYuNkMyMC40IDcgMTkuMiA2LjggMTguOSA3LjJDMTkuMiA3LjQgMjEgOC4xIDIxIDguNkMyMSA5IDIwLjEgOC4zIDE5LjcgOC42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtvZGkgPSBcIk0xMi4wMywxQzExLjgyLDEgMTEuNiwxLjExIDExLjQxLDEuMzFDMTAuNTYsMi4xNiA5LjcyLDMgOC44OCwzLjg0QzguNjYsNC4wNiA4LjYsNC4xOCA4LjM4LDQuMzhDOC4wOSw0LjYyIDcuOTYsNC45MSA3Ljk3LDUuMjhDOCw2LjU3IDgsNy44NCA4LDkuMTNDOCwxMC40NiA4LDExLjgyIDgsMTMuMTZDOCwxMy4yNiA4LDEzLjM0IDguMDMsMTMuNDRDOC4xMSwxMy43NSA4LjMxLDEzLjgyIDguNTMsMTMuNTlDOS43MywxMi4zOSAxMC44LDExLjMgMTIsMTAuMDlDMTMuMzYsOC43MyAxNC43Myw3LjM3IDE2LjA5LDZDMTYuNSw1LjYgMTYuNSw1LjE1IDE2LjA5LDQuNzVDMTQuOTQsMy42IDEzLjc3LDIuNDcgMTIuNjMsMS4zMUMxMi40MywxLjExIDEyLjI0LDEgMTIuMDMsMU0xOC42Niw3LjY2QzE4LjQ1LDcuNjYgMTguMjUsNy43NSAxOC4wNiw3Ljk0QzE2LjkxLDkuMSAxNS43NSwxMC4yNCAxNC41OSwxMS40MUMxNC4yLDExLjggMTQuMiwxMi4yMyAxNC41OSwxMi42M0MxNS43NCwxMy43OCAxNi44OCwxNC45NCAxOC4wMywxNi4wOUMxOC40MywxNi41IDE4Ljg1LDE2LjUgMTkuMjUsMTYuMDlDMjAuMzYsMTUgMjEuNSwxMy44NyAyMi41OSwxMi43NUMyMi43NiwxMi41OCAyMi45MywxMi40MiAyMywxMi4xOVYxMS44OEMyMi45MywxMS42NCAyMi43NiwxMS41IDIyLjU5LDExLjMxQzIxLjQ3LDEwLjE5IDIwLjM3LDkuMDYgMTkuMjUsNy45NEMxOS4wNiw3Ljc1IDE4Ljg2LDcuNjYgMTguNjYsNy42Nk00Ljc4LDguMDlDNC42NSw4LjA0IDQuNTgsOC4xNCA0LjUsOC4yMkMzLjM1LDkuMzkgMi4zNCwxMC40MyAxLjE5LDExLjU5QzAuOTMsMTEuODYgMC45MywxMi4yNCAxLjE5LDEyLjVDMS44MSwxMy4xMyAyLjQ0LDEzLjc1IDMuMDYsMTQuMzhDMy42LDE0LjkyIDQsMTUuMzMgNC41NiwxNS44OEM0LjcyLDE2LjAzIDQuODYsMTYgNC45NCwxNS44MUM1LDE1LjcxIDUsMTUuNTggNSwxNS40N0M1LDE0LjI5IDUsMTMuMzcgNSwxMi4xOUM1LDExIDUsOS44MSA1LDguNjNDNSw4LjU1IDUsOC40NSA0Ljk3LDguMzhDNC45NSw4LjI1IDQuOSw4LjE0IDQuNzgsOC4wOU0xMi4wOSwxNC4yNUMxMS44OSwxNC4yNSAxMS42NiwxNC4zNCAxMS40NywxNC41M0MxMC4zMiwxNS42OSA5LjE4LDE2Ljg3IDguMDMsMTguMDNDNy42MywxOC40MyA3LjYzLDE4Ljg1IDguMDMsMTkuMjVDOS4xNCwyMC4zNyAxMC4yNiwyMS40NyAxMS4zOCwyMi41OUMxMS41NCwyMi43NiAxMS43MSwyMi45MyAxMS45NCwyM0gxMi4yMkMxMi40NCwyMi45NCAxMi42MiwyMi43OSAxMi43OCwyMi42M0MxMy45LDIxLjUgMTUuMDMsMjAuMzggMTYuMTYsMTkuMjVDMTYuNTUsMTguODUgMTYuNSwxOC40IDE2LjEzLDE4QzE0Ljk3LDE2Ljg0IDEzLjg0LDE1LjY5IDEyLjY5LDE0LjUzQzEyLjUsMTQuMzQgMTIuMywxNC4yNSAxMi4wOSwxNC4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLdWJlcm5ldGVzID0gXCJNMTMuOTUgMTMuNUgxMy43MkMxMy41NCAxMy42MSAxMy40NiAxMy44MiAxMy41NCAxNEwxNC40IDE2LjExQzE1LjIzIDE1LjU4IDE1Ljg2IDE0Ljc5IDE2LjE5IDEzLjg2TDEzLjk2IDEzLjVIMTMuOTVNMTAuNSAxMy43OUMxMC40NCAxMy42MiAxMC4yOSAxMy41IDEwLjEyIDEzLjVIMTAuMDRMNy44MiAxMy44N0M4LjE1IDE0Ljc5IDguNzggMTUuNTcgOS42MSAxNi4xTDEwLjQ2IDE0LjAzVjE0QzEwLjUgMTMuOTUgMTAuNSAxMy44NiAxMC41IDEzLjc5TTEyLjMzIDE0LjZDMTIuMjMgMTQuNDIgMTIgMTQuMzUgMTEuODIgMTQuNDVDMTEuNzUgMTQuNSAxMS43IDE0LjUzIDExLjY3IDE0LjZIMTEuNjZMMTAuNTcgMTYuNTdDMTEuMzUgMTYuODMgMTIuMTkgMTYuODggMTMgMTYuNjlDMTMuMTQgMTYuNjYgMTMuMjkgMTYuNjIgMTMuNDMgMTYuNTdMMTIuMzQgMTQuNkgxMi4zM00xNS43OCAxMC4wM0wxNC4xIDExLjVMMTQuMTEgMTEuNTNDMTMuOTUgMTEuNjcgMTMuOTMgMTEuOTEgMTQuMDcgMTIuMDZDMTQuMTIgMTIuMTIgMTQuMTggMTIuMTYgMTQuMjUgMTIuMThMMTQuMjYgMTIuMTlMMTYuNDMgMTIuODFDMTYuNSAxMS44NCAxNi4yOSAxMC44NiAxNS43OCAxMC4wM00xMi42NyAxMC4xOUMxMi42OCAxMC40IDEyLjg1IDEwLjU2IDEzLjA2IDEwLjU1QzEzLjE0IDEwLjU1IDEzLjIxIDEwLjUzIDEzLjI3IDEwLjVIMTMuMjhMMTUuMTEgOS4xOUMxNC40MSA4LjUgMTMuNSA4LjA3IDEyLjU0IDcuOTVMMTIuNjcgMTAuMTlNMTAuNzMgMTAuNUMxMC45IDEwLjYxIDExLjEzIDEwLjU4IDExLjI1IDEwLjQxQzExLjMgMTAuMzUgMTEuMzIgMTAuMjggMTEuMzMgMTAuMkgxMS4zNEwxMS40NiA3Ljk1QzExLjMxIDcuOTcgMTEuMTYgOCAxMSA4LjAzQzEwLjIgOC4yMSA5LjQ2IDguNjEgOC44OCA5LjE5TDEwLjcyIDEwLjVIMTAuNzNNOS43NCAxMi4xOUM5Ljk0IDEyLjE0IDEwLjA2IDExLjkzIDEwIDExLjczQzEwIDExLjY1IDkuOTUgMTEuNTkgOS44OSAxMS41NFYxMS41M0w4LjIxIDEwQzcuNjkgMTAuODYgNy40NyAxMS44NCA3LjU4IDEyLjgyTDkuNzQgMTIuMlYxMi4xOU0xMS4zOCAxMi44NUwxMiAxMy4xNUwxMi42MiAxMi44NUwxMi43NyAxMi4xOEwxMi4zNCAxMS42NUgxMS42NUwxMS4yMiAxMi4xOEwxMS4zOCAxMi44NU0yMi4yNyAxNC4xN0wyMC41IDYuNUMyMC40MSA2LjA4IDIwLjEzIDUuNzQgMTkuNzYgNS41NkwxMi41OSAyLjEzQzEyLjIyIDEuOTYgMTEuNzggMS45NiAxMS40IDIuMTNMNC4yNCA1LjU2QzMuODcgNS43NCAzLjU5IDYuMDggMy41IDYuNUwxLjczIDE0LjE3QzEuNjggMTQuMzcgMS42OCAxNC41NyAxLjczIDE0Ljc2QzEuNzQgMTQuODIgMS43NiAxNC44OCAxLjc4IDE0Ljk0QzEuODEgMTUuMDMgMS44NiAxNS4xMyAxLjkxIDE1LjIxQzEuOTQgMTUuMjUgMS45NiAxNS4yOSAyIDE1LjMyTDYuOTUgMjEuNUM2Ljk3IDIxLjUgNyAyMS41NCA3IDIxLjU2QzcuMSAyMS42NSA3LjE5IDIxLjcyIDcuMjggMjEuNzhDNy40IDIxLjg2IDcuNTQgMjEuOTIgNy42OCAyMS45NUM3Ljc5IDIyIDcuOTEgMjIgOCAyMkgxNi4xMkMxNi4xOSAyMiAxNi4yNiAyMS45NyAxNi4zMiAyMS45NUMxNi4zNyAyMS45NCAxNi40MiAyMS45MiAxNi40NiAyMS45MUMxNi41IDIxLjg5IDE2LjUzIDIxLjg4IDE2LjU3IDIxLjg2QzE2LjYyIDIxLjg0IDE2LjY3IDIxLjgxIDE2LjcyIDIxLjc4QzE2Ljg0IDIxLjcgMTYuOTUgMjEuNiAxNy4wNSAyMS41TDE3LjIgMjEuM0wyMiAxNS4zMkMyMi4xIDE1LjIgMjIuMTcgMTUuMDcgMjIuMjIgMTQuOTRDMjIuMjQgMTQuODggMjIuMjYgMTQuODIgMjIuMjcgMTQuNzZDMjIuMzIgMTQuNTcgMjIuMzIgMTQuMzYgMjIuMjcgMTQuMTdNMTQuODQgMTcuMTZDMTQuODYgMTcuMjIgMTQuODggMTcuMjggMTQuOTEgMTcuMzNDMTQuODcgMTcuNDEgMTQuODUgMTcuNSAxNC44OCAxNy41OUMxNSAxNy44MyAxNS4xMSAxOC4wNSAxNS4yNiAxOC4yN0MxNS4zNCAxOC4zOCAxNS40MiAxOC41IDE1LjUgMTguNjFDMTUuNSAxOC42NCAxNS41MyAxOC42OSAxNS41NCAxOC43M0MxNS42NiAxOC45MyAxNS42IDE5LjE5IDE1LjM5IDE5LjMyUzE0LjkyIDE5LjM3IDE0LjggMTkuMTdDMTQuNzkgMTkuMTQgMTQuNzggMTkuMTIgMTQuNzcgMTkuMDlDMTQuNzUgMTkuMDYgMTQuNzMgMTkgMTQuNzEgMTlDMTQuNjYgMTguODUgMTQuNjIgMTguNzIgMTQuNTkgMTguNTlDMTQuNSAxOC4zNCAxNC40MiAxOC4xIDE0LjI5IDE3Ljg3QzE0LjI0IDE3LjggMTQuMTYgMTcuNzUgMTQuMDggMTcuNzNMMTQgMTcuNTdDMTIuNzEgMTguMDUgMTEuMyAxOC4wNSAxMC4wMyAxNy41Nkw5LjkzIDE3Ljc0QzkuODYgMTcuNzUgOS43OSAxNy43OCA5Ljc0IDE3LjgzQzkuNiAxOC4wNyA5LjUgMTguMzIgOS40MSAxOC42QzkuMzggMTguNzMgOS4zNCAxOC44NiA5LjI5IDE5QzkuMjcgMTkgOS4yNSAxOS4wNyA5LjIzIDE5LjFDOS4xNSAxOS4zMiA4LjkxIDE5LjQ0IDguNjggMTkuMzZDOC40NiAxOS4yOCA4LjM0IDE5LjA0IDguNDIgMTguODFDOC40MyAxOC43OCA4LjQ1IDE4Ljc2IDguNDYgMTguNzNDOC41IDE4LjcgOC41IDE4LjY1IDguNSAxOC42MkM4LjU5IDE4LjUgOC42NiAxOC4zOSA4Ljc0IDE4LjI3QzguOSAxOC4wNiA5LjAzIDE3LjgyIDkuMTMgMTcuNThDOS4xNCAxNy41IDkuMTMgMTcuNDEgOS4xIDE3LjMzTDkuMTcgMTcuMTVDOCAxNi40NSA3LjEyIDE1LjM2IDYuNyAxNC4wNkw2LjUgMTQuMDlDNi40NCAxNC4wNCA2LjM1IDE0IDYuMjcgMTRDNiAxNC4wNSA1Ljc2IDE0LjEzIDUuNSAxNC4yMkM1LjM5IDE0LjI4IDUuMjYgMTQuMzMgNS4xMyAxNC4zN0M1LjEgMTQuMzggNS4wNiAxNC4zOSA1IDE0LjRDNC43OCAxNC40NyA0LjU0IDE0LjM1IDQuNDYgMTQuMTNDNC4zOSAxMy45IDQuNSAxMy42NiA0Ljc0IDEzLjU4QzQuNzYgMTMuNTggNC43OSAxMy41NyA0LjgyIDEzLjU3VjEzLjU2SDQuODNMNC45NCAxMy41NEM1LjA4IDEzLjUgNS4yMiAxMy41IDUuMzUgMTMuNUM1LjYxIDEzLjUgNS44NyAxMy40NCA2LjEyIDEzLjM4QzYuMiAxMy4zMyA2LjI2IDEzLjI3IDYuMzEgMTMuMTlMNi41IDEzLjE0QzYuMjkgMTEuNzggNi42IDEwLjQxIDcuMzYgOS4yN0w3LjIyIDkuMTVDNy4yMiA5LjA2IDcuMTkgOC45NyA3LjE0IDguOUM2Ljk0IDguNzMgNi43MyA4LjU4IDYuNSA4LjQ1QzYuMzggOC4zOSA2LjI2IDguMzIgNi4xNCA4LjI0QzYuMTIgOC4yMiA2LjA4IDguMTkgNi4wNiA4LjE3TDYuMDUgOC4xNkM1Ljg1IDggNS44IDcuNzQgNS45NCA3LjUzQzYuMDMgNy40MyA2LjE1IDcuMzggNi4yOSA3LjM4QzYuNCA3LjM5IDYuNSA3LjQzIDYuNTkgNy41TDYuNjggNy41N0M2Ljc4IDcuNjYgNi44NyA3Ljc3IDYuOTYgNy44N0M3LjE0IDguMDYgNy4zMyA4LjI0IDcuNTQgOC4zOUM3LjYyIDguNDMgNy43MSA4LjQ0IDcuOCA4LjQyTDcuOTUgOC41M0M4LjcgNy43MyA5LjY4IDcuMTcgMTAuNzUgNi45M0MxMSA2Ljg3IDExLjI3IDYuODMgMTEuNTMgNi44MUwxMS41NCA2LjYzQzExLjYxIDYuNTcgMTEuNjUgNi41IDExLjY4IDYuNEMxMS42OSA2LjE0IDExLjY3IDUuODggMTEuNjMgNS42M0MxMS42IDUuNSAxMS41OCA1LjM2IDExLjU3IDUuMjJWNS4xQzExLjU1IDQuODYgMTEuNzIgNC42NSAxMS45NiA0LjYyUzEyLjQgNC43NyAxMi40MyA1VjUuMjJDMTIuNDIgNS4zNiAxMi40IDUuNSAxMi4zNyA1LjYzQzEyLjMzIDUuODggMTIuMzEgNi4xNCAxMi4zMiA2LjRDMTIuMzQgNi41IDEyLjM5IDYuNTcgMTIuNDYgNi42MkwxMi40NyA2LjgxQzEzLjgzIDYuOTMgMTUuMDkgNy41NCAxNi4wMyA4LjUzTDE2LjE5IDguNDFDMTYuMjggOC40MyAxNi4zNyA4LjQyIDE2LjQ1IDguMzhDMTYuNjYgOC4yMyAxNi44NiA4LjA1IDE3LjAzIDcuODZDMTcuMTIgNy43NiAxNy4yMSA3LjY2IDE3LjMxIDcuNTZDMTcuMzQgNy41NCAxNy4zOCA3LjUgMTcuNDEgNy41QzE3LjU4IDcuMzIgMTcuODUgNy4zMiAxOCA3LjVDMTguMTkgNy42NiAxOC4xOCA3LjkzIDE4IDguMUMxOCA4LjEyIDE3Ljk3IDguMTQgMTcuOTQgOC4xNkMxNy45MiA4LjE4IDE3Ljg4IDguMjEgMTcuODUgOC4yM0MxNy43NCA4LjMxIDE3LjYyIDguMzggMTcuNSA4LjQ0QzE3LjI3IDguNTcgMTcuMDUgOC43MiAxNi44NiA4Ljg5QzE2LjggOC45NiAxNi43NyA5LjA0IDE2Ljc4IDkuMTNMMTYuNjIgOS4yN0MxNy4zOSAxMC40IDE3LjcgMTEuNzggMTcuNSAxMy4xM0wxNy42OSAxMy4xOEMxNy43MyAxMy4yNiAxNy44IDEzLjMyIDE3Ljg4IDEzLjM2QzE4LjEzIDEzLjQzIDE4LjM5IDEzLjQ3IDE4LjY1IDEzLjVIMTkuMDZDMTkuMDkgMTMuNTMgMTkuMTQgMTMuNTQgMTkuMTggMTMuNTVDMTkuNDIgMTMuNTggMTkuNTggMTMuOCAxOS41NSAxNC4wNEMxOS41IDE0LjI3IDE5LjMxIDE0LjQ0IDE5LjA3IDE0LjQxQzE5LjA0IDE0LjQgMTkgMTQuNCAxOSAxNC4zOVYxNC4zOEMxOC45NCAxNC4zOCAxOC45IDE0LjM3IDE4Ljg2IDE0LjM2QzE4LjczIDE0LjMyIDE4LjYxIDE0LjI3IDE4LjUgMTQuMjFDMTguMjQgMTQuMTEgMTggMTQuMDQgMTcuNzMgMTRDMTcuNjQgMTQgMTcuNTYgMTQgMTcuNSAxNC4wOEMxNy40MyAxNC4wNyAxNy4zNyAxNC4wNiAxNy4zMSAxNC4wNUMxNi45IDE1LjM2IDE2IDE2LjQ2IDE0Ljg0IDE3LjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsID0gXCJNMTcuNjMsNS44NEMxNy4yNyw1LjMzIDE2LjY3LDUgMTYsNUg1QTIsMiAwIDAsMCAzLDdWMTdBMiwyIDAgMCwwIDUsMTlIMTZDMTYuNjcsMTkgMTcuMjcsMTguNjYgMTcuNjMsMTguMTVMMjIsMTJMMTcuNjMsNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYWJlbE11bHRpcGxlID0gXCJNNCAxOUgxM0wxMSAyMUg0QzMuNSAyMSAyLjk3IDIwLjc5IDIuNTkgMjAuNDFDMi4yMSAyMC4wMyAyIDE5LjUgMiAxOVY5SDRWMTlNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUg4QzYuOSA1IDYgNS45IDYgN1YxNUM2IDE2LjEgNi45IDE3IDggMTdIMTZDMTYuNjcgMTcgMTcuMjcgMTYuNjYgMTcuNjMgMTYuMTVMMjIgMTFMMTcuNjMgNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYWJlbE11bHRpcGxlT3V0bGluZSA9IFwiTTQgMThIMTNMMTEgMjBINEMzLjUgMjAgMi45NyAxOS43OSAyLjU5IDE5LjQxQzIuMjEgMTkuMDMgMiAxOC41IDIgMThWOEg0VjE4TTE3LjYzIDQuODRDMTcuMjcgNC4zMyAxNi42NyA0IDE2IDRIOEM2LjkgNCA2IDQuOSA2IDZWMTRDNiAxNS4xIDYuOSAxNiA4IDE2SDE2QzE2LjY3IDE2IDE3LjI3IDE1LjY2IDE3LjYzIDE1LjE1TDIyIDEwTDE3LjYzIDQuODRNMTYgMTRIOFY2SDE2TDE5LjU1IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsT2ZmID0gXCJNMiw0LjI3TDMuMjgsM0wyMCwxOS43MkwxOC43MywyMUwxNi42MywxOC45QzE2LjQzLDE4Ljk2IDE2LjIyLDE5IDE2LDE5SDVBMiwyIDAgMCwxIDMsMTdWN0MzLDYuNSAzLjE3LDYuMDcgMy40Niw1LjczTDIsNC4yN00xNy42Myw1Ljg0TDIyLDEyTDE5LDE2LjJMNy44Myw1SDE2QzE2LjY3LDUgMTcuMjcsNS4zMyAxNy42Myw1Ljg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsT2ZmT3V0bGluZSA9IFwiTTIsNC4yN0wzLjI4LDNMMjAsMTkuNzJMMTguNzMsMjFMMTYuNjMsMTguOUMxNi40MywxOC45NiAxNi4yMiwxOSAxNiwxOUg1QTIsMiAwIDAsMSAzLDE3VjdDMyw2LjUgMy4xNyw2LjA3IDMuNDYsNS43M0wyLDQuMjdNNSwxN0gxNC43M0w1LDcuMjdWMTdNMTkuNTUsMTJMMTYsN0g5LjgyTDcuODMsNUgxNkMxNi42Nyw1IDE3LjI3LDUuMzMgMTcuNjMsNS44NEwyMiwxMkwxOSwxNi4yTDE3LjU5LDE0Ljc2TDE5LjU1LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsT3V0bGluZSA9IFwiTTE2LDE3SDVWN0gxNkwxOS41NSwxMk0xNy42Myw1Ljg0QzE3LjI3LDUuMzMgMTYuNjcsNSAxNiw1SDVBMiwyIDAgMCwwIDMsN1YxN0EyLDIgMCAwLDAgNSwxOUgxNkMxNi42NywxOSAxNy4yNywxOC42NiAxNy42MywxOC4xNUwyMiwxMkwxNy42Myw1Ljg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsUGVyY2VudCA9IFwiTTE3LjYzIDUuODRDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVINUMzLjkgNSAzIDUuOSAzIDdWMTdDMyAxOC4xMSAzLjkgMTkgNSAxOUgxNkMxNi42NyAxOSAxNy4yNyAxOC42NiAxNy42MyAxOC4xNUwyMiAxMkwxNy42MyA1Ljg0TTguNDUgOC4wM0M5LjIzIDguMDMgOS44NyA4LjY3IDkuODcgOS40NVM5LjIzIDEwLjg3IDguNDUgMTAuODcgNy4wMyAxMC4yMyA3LjAzIDkuNDUgNy42NyA4LjAzIDguNDUgOC4wM00xMy41NSAxNS45N0MxMi43NyAxNS45NyAxMi4xMyAxNS4zMyAxMi4xMyAxNC41NVMxMi43NyAxMy4xMyAxMy41NSAxMy4xMyAxNC45NyAxMy43NyAxNC45NyAxNC41NSAxNC4zMyAxNS45NyAxMy41NSAxNS45N004LjIgMTZMNyAxNC44TDEzLjggOEwxNSA5LjJMOC4yIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsUGVyY2VudE91dGxpbmUgPSBcIk0xNiAxN0g1VjdIMTZMMTkuNTUgMTJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUg1QzMuOSA1IDMgNS45IDMgN1YxN0MzIDE4LjExIDMuOSAxOSA1IDE5SDE2QzE2LjY3IDE5IDE3LjI3IDE4LjY2IDE3LjYzIDE4LjE1TDIyIDEyTDE3LjYzIDUuODRNMTMuOCA4TDE1IDkuMkw4LjIgMTZMNyAxNC44TTguNDUgOC4wM0M5LjIzIDguMDMgOS44NyA4LjY3IDkuODcgOS40NVM5LjIzIDEwLjg3IDguNDUgMTAuODcgNy4wMyAxMC4yMyA3LjAzIDkuNDUgNy42NyA4LjAzIDguNDUgOC4wM00xMy41NSAxMy4xM0MxNC4zMyAxMy4xMyAxNC45NyAxMy43NyAxNC45NyAxNC41NUMxNC45NyAxNS4zMyAxNC4zMyAxNS45NyAxMy41NSAxNS45N0MxMi43NyAxNS45NyAxMi4xMyAxNS4zMyAxMi4xMyAxNC41NUMxMi4xMyAxMy43NyAxMi43NyAxMy4xMyAxMy41NSAxMy4xM1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYWJlbFZhcmlhbnQgPSBcIk0zLjUsMTlMOC4zNCwxMkwzLjUsNUgxNC41QzE1LjE3LDUgMTUuNzIsNS4zIDE2LjEzLDUuODZMMjAuNSwxMkwxNi4xMywxOC4xNEMxNS43MiwxOC43IDE1LjE3LDE5IDE0LjUsMTlIMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsVmFyaWFudE91dGxpbmUgPSBcIk02LjUsMTdIMTVMMTguNSwxMkwxNSw3SDYuNUwxMCwxMkw2LjUsMTdNMTUsMTlIM0w3LjUsMTJMMyw1SDE1QzE1LjY5LDUgMTYuMjMsNS4zIDE2LjY0LDUuODZMMjEsMTJMMTYuNjQsMTguMTRDMTYuMjMsMTguNyAxNS42OSwxOSAxNSwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYWRkZXIgPSBcIk0xNCAxVjNIMTBWMUg4VjIySDEwVjIwSDE0VjIySDE2VjFIMTRNMTQgNVY4SDEwVjVIMTRNMTQgMTBWMTNIMTBWMTBIMTRNMTAgMThWMTVIMTRWMThIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFkeWJ1ZyA9IFwiTTEyLDVDMTIuNzQsNSAxMy40Nyw1LjEgMTQuMTUsNS4yOUwxNS43OCwyLjQ2QzE2LjA2LDIgMTYuNjcsMS44MiAxNy4xNSwyLjFDMTcuNjMsMi4zNyAxNy43OSwzIDE3LjUsMy40NkwxNiw2LjA3QzE3LjIyLDYuNzggMTguMjMsNy43OSAxOC45Myw5SDUuMDdDNS43Nyw3Ljc5IDYuNzgsNi43OCA4LDYuMDdMNi41LDMuNDZDNi4yMSwzIDYuMzcsMi4zNyA2Ljg1LDIuMUM3LjMzLDEuODIgNy45NCwyIDguMjIsMi40Nkw5Ljg1LDUuMjlDMTAuNTMsNS4xIDExLjI2LDUgMTIsNU0yMCwxM0MyMCwxNy4xNyAxNi44MiwyMC41OSAxMi43NSwyMC45N1YxMC41SDE5LjZDMTkuODYsMTEuMjkgMjAsMTIuMTMgMjAsMTNNNCwxM0M0LDEyLjEzIDQuMTQsMTEuMjkgNC40LDEwLjVIMTEuMjVWMjAuOTdDNy4xOCwyMC41OSA0LDE3LjE3IDQsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFtYmRhID0gXCJNNiwyMEwxMC4xNiw3LjkxTDkuMzQsNkg4VjRIMTBDMTAuNDIsNCAxMC43OCw0LjI2IDEwLjkzLDQuNjNMMTYuNjYsMThIMThWMjBIMTZDMTUuNTcsMjAgMTUuMjEsMTkuNzMgMTUuMDcsMTkuMzZMMTEuMzMsMTAuNjVMOC4xMiwyMEg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbXAgPSBcIk04LDJIMTZMMjAsMTRINEw4LDJNMTEsMTVIMTNWMjBIMThWMjJINlYyMEgxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW1wcyA9IFwiTTEwIDJMMTIgOUgyTDQgMk02IDEwSDhWMjBIMTFWMjJIM1YyMEg2VjEwTTIwIDhMMjIgMTVIMTJMMTQgOE0xNiAxNkgxOFYyMEgyMVYyMkgxM1YyMEgxNlYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW4gPSBcIk0xMCwyQzguODksMiA4LDIuODkgOCw0VjdDOCw4LjExIDguODksOSAxMCw5SDExVjExSDJWMTNINlYxNUg1QzMuODksMTUgMywxNS44OSAzLDE3VjIwQzMsMjEuMTEgMy44OSwyMiA1LDIySDlDMTAuMTEsMjIgMTEsMjEuMTEgMTEsMjBWMTdDMTEsMTUuODkgMTAuMTEsMTUgOSwxNUg4VjEzSDE2VjE1SDE1QzEzLjg5LDE1IDEzLDE1Ljg5IDEzLDE3VjIwQzEzLDIxLjExIDEzLjg5LDIyIDE1LDIySDE5QzIwLjExLDIyIDIxLDIxLjExIDIxLDIwVjE3QzIxLDE1Ljg5IDIwLjExLDE1IDE5LDE1SDE4VjEzSDIyVjExSDEzVjlIMTRDMTUuMTEsOSAxNiw4LjExIDE2LDdWNEMxNiwyLjg5IDE1LjExLDIgMTQsMkgxME0xMCw0SDE0VjdIMTBWNE01LDE3SDlWMjBINVYxN00xNSwxN0gxOVYyMEgxNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5DaGVjayA9IFwiTTQgMUMyLjg5IDEgMiAxLjg5IDIgM1Y3QzIgOC4xMSAyLjg5IDkgNCA5SDFWMTFIMTNWOUgxMEMxMS4xMSA5IDEyIDguMTEgMTIgN1YzQzEyIDEuODkgMTEuMTEgMSAxMCAxSDRNNCAzSDEwVjdINFYzTTE0IDEzQzEyLjg5IDEzIDEyIDEzLjg5IDEyIDE1VjE5QzEyIDIwLjExIDEyLjg5IDIxIDE0IDIxSDExVjIzSDIzVjIxSDIwQzIxLjExIDIxIDIyIDIwLjExIDIyIDE5VjE1QzIyIDEzLjg5IDIxLjExIDEzIDIwIDEzSDE0TTE0IDE1SDIwVjE5SDE0VjE1TTUuNSAyMC41TDEwLjUgMTUuNUw5IDE0TDUuNSAxNy41TDMuNSAxNS41TDIgMTdMNS41IDIwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuQ29ubmVjdCA9IFwiTTQsMUMyLjg5LDEgMiwxLjg5IDIsM1Y3QzIsOC4xMSAyLjg5LDkgNCw5SDFWMTFIMTNWOUgxMEMxMS4xMSw5IDEyLDguMTEgMTIsN1YzQzEyLDEuODkgMTEuMTEsMSAxMCwxSDRNNCwzSDEwVjdINFYzTTMsMTNWMThMMywyMEgxMFYxOEg1VjEzSDNNMTQsMTNDMTIuODksMTMgMTIsMTMuODkgMTIsMTVWMTlDMTIsMjAuMTEgMTIuODksMjEgMTQsMjFIMTFWMjNIMjNWMjFIMjBDMjEuMTEsMjEgMjIsMjAuMTEgMjIsMTlWMTVDMjIsMTMuODkgMjEuMTEsMTMgMjAsMTNIMTRNMTQsMTVIMjBWMTlIMTRWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuRGlzY29ubmVjdCA9IFwiTTQsMUMyLjg5LDEgMiwxLjg5IDIsM1Y3QzIsOC4xMSAyLjg5LDkgNCw5SDFWMTFIMTNWOUgxMEMxMS4xMSw5IDEyLDguMTEgMTIsN1YzQzEyLDEuODkgMTEuMTEsMSAxMCwxSDRNNCwzSDEwVjdINFYzTTE0LDEzQzEyLjg5LDEzIDEyLDEzLjg5IDEyLDE1VjE5QzEyLDIwLjExIDEyLjg5LDIxIDE0LDIxSDExVjIzSDIzVjIxSDIwQzIxLjExLDIxIDIyLDIwLjExIDIyLDE5VjE1QzIyLDEzLjg5IDIxLjExLDEzIDIwLDEzSDE0TTMuODgsMTMuNDZMMi40NiwxNC44OEw0LjU5LDE3TDIuNDYsMTkuMTJMMy44OCwyMC41NEw2LDE4LjQxTDguMTIsMjAuNTRMOS41NCwxOS4xMkw3LjQxLDE3TDkuNTQsMTQuODhMOC4xMiwxMy40Nkw2LDE1LjU5TDMuODgsMTMuNDZNMTQsMTVIMjBWMTlIMTRWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuUGVuZGluZyA9IFwiTTQsMUMyLjg5LDEgMiwxLjg5IDIsM1Y3QzIsOC4xMSAyLjg5LDkgNCw5SDFWMTFIMTNWOUgxMEMxMS4xMSw5IDEyLDguMTEgMTIsN1YzQzEyLDEuODkgMTEuMTEsMSAxMCwxSDRNNCwzSDEwVjdINFYzTTMsMTJWMTRINVYxMkgzTTE0LDEzQzEyLjg5LDEzIDEyLDEzLjg5IDEyLDE1VjE5QzEyLDIwLjExIDEyLjg5LDIxIDE0LDIxSDExVjIzSDIzVjIxSDIwQzIxLjExLDIxIDIyLDIwLjExIDIyLDE5VjE1QzIyLDEzLjg5IDIxLjExLDEzIDIwLDEzSDE0TTMsMTVWMTdINVYxNUgzTTE0LDE1SDIwVjE5SDE0VjE1TTMsMThWMjBINVYxOEgzTTYsMThWMjBIOFYxOEg2TTksMThWMjBIMTFWMThIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZUMgPSBcIk0xNS40NSwxNS45N0wxNS44NywxOC40MUMxNS42MSwxOC41NSAxNS4xOSwxOC42OCAxNC42MywxOC44QzE0LjA2LDE4LjkzIDEzLjM5LDE5IDEyLjYyLDE5QzEwLjQxLDE4Ljk2IDguNzUsMTguMyA3LjY0LDE3LjA0QzYuNSwxNS43NyA1Ljk2LDE0LjE2IDUuOTYsMTIuMjFDNiw5LjkgNi42OCw4LjEzIDgsNi44OUM5LjI4LDUuNjQgMTAuOTIsNSAxMi45LDVDMTMuNjUsNSAxNC4zLDUuMDcgMTQuODQsNS4xOUMxNS4zOCw1LjMxIDE1Ljc4LDUuNDQgMTYuMDQsNS41OUwxNS40NCw4LjA4TDE0LjQsNy43NEMxNCw3LjY0IDEzLjUzLDcuNTkgMTMsNy41OUMxMS44NSw3LjU4IDEwLjg5LDcuOTUgMTAuMTQsOC42OUM5LjM4LDkuNDIgOSwxMC41NCA4Ljk2LDEyLjAzQzguOTcsMTMuMzkgOS4zMywxNC40NSAxMC4wNCwxNS4yM0MxMC43NSwxNiAxMS43NCwxNi40IDEzLjAzLDE2LjQxTDE0LjM2LDE2LjI5QzE0Ljc5LDE2LjIxIDE1LjE1LDE2LjEgMTUuNDUsMTUuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VDcHAgPSBcIk0xMC41LDE1Ljk3TDEwLjkxLDE4LjQxQzEwLjY1LDE4LjU1IDEwLjIzLDE4LjY4IDkuNjcsMTguOEM5LjEsMTguOTMgOC40MywxOSA3LjY2LDE5QzUuNDUsMTguOTYgMy43OSwxOC4zIDIuNjgsMTcuMDRDMS41NiwxNS43NyAxLDE0LjE2IDEsMTIuMjFDMS4wNSw5LjkgMS43Miw4LjEzIDMsNi44OUM0LjMyLDUuNjQgNS45Niw1IDcuOTQsNUM4LjY5LDUgOS4zNCw1LjA3IDkuODgsNS4xOUMxMC40Miw1LjMxIDEwLjgyLDUuNDQgMTEuMDgsNS41OUwxMC41LDguMDhMOS40NCw3Ljc0QzkuMDQsNy42NCA4LjU4LDcuNTkgOC4wNSw3LjU5QzYuODksNy41OCA1LjkzLDcuOTUgNS4xOCw4LjY5QzQuNDIsOS40MiA0LjAzLDEwLjU0IDQsMTIuMDNDNCwxMy4zOSA0LjM3LDE0LjQ1IDUuMDgsMTUuMjNDNS43OSwxNiA2Ljc5LDE2LjQgOC4wNywxNi40MUw5LjQsMTYuMjlDOS44MywxNi4yMSAxMC4xOSwxNi4xIDEwLjUsMTUuOTdNMTEsMTFIMTNWOUgxNVYxMUgxN1YxM0gxNVYxNUgxM1YxM0gxMVYxMU0xOCwxMUgyMFY5SDIyVjExSDI0VjEzSDIyVjE1SDIwVjEzSDE4VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbmd1YWdlQ3NoYXJwID0gXCJNMTEuNSwxNS45N0wxMS45MSwxOC40MUMxMS42NSwxOC41NSAxMS4yMywxOC42OCAxMC42NywxOC44QzEwLjEsMTguOTMgOS40MywxOSA4LjY2LDE5QzYuNDUsMTguOTYgNC43OSwxOC4zIDMuNjgsMTcuMDRDMi41NiwxNS43NyAyLDE0LjE2IDIsMTIuMjFDMi4wNSw5LjkgMi43Miw4LjEzIDQsNi44OUM1LjMyLDUuNjQgNi45Niw1IDguOTQsNUM5LjY5LDUgMTAuMzQsNS4wNyAxMC44OCw1LjE5QzExLjQyLDUuMzEgMTEuODIsNS40NCAxMi4wOCw1LjU5TDExLjUsOC4wOEwxMC40NCw3Ljc0QzEwLjA0LDcuNjQgOS41OCw3LjU5IDkuMDUsNy41OUM3Ljg5LDcuNTggNi45Myw3Ljk1IDYuMTgsOC42OUM1LjQyLDkuNDIgNS4wMywxMC41NCA1LDEyLjAzQzUsMTMuMzkgNS4zNywxNC40NSA2LjA4LDE1LjIzQzYuNzksMTYgNy43OSwxNi40IDkuMDcsMTYuNDFMMTAuNCwxNi4yOUMxMC44MywxNi4yMSAxMS4xOSwxNi4xIDExLjUsMTUuOTdNMTMuODksMTlMMTQuNSwxNUgxM0wxMy4zNCwxM0gxNC44NEwxNS4xNiwxMUgxMy42NkwxNCw5SDE1LjVMMTYuMTEsNUgxOC4xMUwxNy41LDlIMTguNUwxOS4xMSw1SDIxLjExTDIwLjUsOUgyMkwyMS42NiwxMUgyMC4xNkwxOS44NCwxM0gyMS4zNEwyMSwxNUgxOS41TDE4Ljg5LDE5SDE2Ljg5TDE3LjUsMTVIMTYuNUwxNS44OSwxOUgxMy44OU0xNi44NCwxM0gxNy44NEwxOC4xNiwxMUgxNy4xNkwxNi44NCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZUNzczMgPSBcIk01LDNMNC4zNSw2LjM0SDE3Ljk0TDE3LjUsOC41SDMuOTJMMy4yNiwxMS44M0gxNi44NUwxNi4wOSwxNS42NEwxMC42MSwxNy40NUw1Ljg2LDE1LjY0TDYuMTksMTRIMi44NUwyLjA2LDE4TDkuOTEsMjFMMTguOTYsMThMMjAuMTYsMTEuOTdMMjAuNCwxMC43NkwyMS45NCwzSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VGb3J0cmFuID0gXCJNNSA0VjZINkM2LjU1IDYgNyA2LjQ1IDcgN1YxN0M3IDE3LjU1IDYuNTUgMTggNiAxOEg1VjIwSDE0VjE4SDEyQzExLjQ1IDE4IDExIDE3LjU1IDExIDE3VjEzSDEzQzEzLjU1IDEzIDE0IDEzLjQ1IDE0IDE0VjE2SDE2VjhIMTRWMTBDMTQgMTAuNTUgMTMuNTUgMTEgMTMgMTFIMTFWNkgxNkMxNy4xMSA2IDE4IDcuMzQgMTggOVYxMEgyMFY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbmd1YWdlR28gPSBcIk0yLjY0LDEwLjMzTDIuNjIsMTAuMjdMMi44NCwxMEwyLjk2LDkuOTJINi44TDYuODMsMTBMNi42NSwxMC4yNkw2LjU0LDEwLjMyTDIuNjQsMTAuMzNNMS4wMywxMS4zMUwxLDExLjI2TDEuMjIsMTAuOTdMMS4zNCwxMC45MUg2LjI0TDYuMjksMTFMNi4yMSwxMS4yNEw2LjExLDExLjMxSDEuMDNNMy42MywxMi4zTDMuNTksMTIuMjRMMy43NSwxMS45NkwzLjg1LDExLjlINkw2LjA3LDExLjk3TDYuMDUsMTIuMjJMNS45NywxMi4zSDMuNjNNMTQuNzgsMTAuMTRMMTMsMTAuNjFDMTIuODEsMTAuNjUgMTIuOCwxMC42NiAxMi42NiwxMC41QzEyLjUsMTAuMzIgMTIuMzksMTAuMjEgMTIuMTYsMTAuMUMxMS41LDkuNzYgMTAuODMsOS44NiAxMC4yMiwxMC4yNUM5LjUsMTAuNzMgOS4xMSwxMS40MiA5LjEyLDEyLjNDOS4xMywxMy4xNiA5LjcyLDEzLjg3IDEwLjU3LDE0QzExLjMsMTQuMDkgMTEuOTEsMTMuODMgMTIuNCwxMy4yOEwxMi42OSwxMi44OUgxMC42MkMxMC40LDEyLjg5IDEwLjM1LDEyLjc1IDEwLjQyLDEyLjU3TDEwLjk3LDExLjM5QzExLDExLjMzIDExLjA4LDExLjIyIDExLjI0LDExLjIySDE0LjY4QzE0LjgzLDEwLjcyIDE1LjA5LDEwLjI2IDE1LjQzLDkuODFDMTYuMjEsOC43OCAxNy4xNiw4LjI0IDE4LjQzLDhDMTkuNSw3LjgyIDIwLjU2LDcuOTMgMjEuNSw4LjU3QzIyLjM0LDkuMTUgMjIuODcsOS45MyAyMywxMC45NkMyMy4xOSwxMi40MSAyMi43NiwxMy41OSAyMS43NiwxNC42MUMyMS4wNSwxNS4zMyAyMC4xOCwxNS43OCAxOS4xOSwxNkwxOC4zMywxNi4wOEMxNy4zNSwxNi4wNiAxNi40NiwxNS43OCAxNS43MSwxNS4xM0MxNS4xOSwxNC42OCAxNC44MywxNC4xNCAxNC42NSwxMy41QzE0LjUsMTMuNzQgMTQuMzgsMTMuOTcgMTQuMjEsMTQuMkMxMy40NCwxNS4yMiAxMi40MywxNS44NSAxMS4xNSwxNkMxMC4xLDE2LjE2IDkuMTIsMTUuOTUgOC4yNiwxNS4zMUM3LjQ3LDE0LjcxIDcsMTMuOTEgNi45LDEyLjkyQzYuNzYsMTEuNzUgNy4xLDEwLjcgNy44MSw5Ljc4QzguNTcsOC43OCA5LjU4LDguMTUgMTAuODIsNy45MkMxMS44Miw3Ljc0IDEyLjc5LDcuODYgMTMuNjYsOC40NEMxNC4yMyw4LjgyIDE0LjYzLDkuMzQgMTQuOSw5Ljk2QzE0Ljk0LDEwLjA1IDE0LjksMTAuMTEgMTQuNzgsMTAuMTRNMjAuODksMTEuNzRMMjAuODYsMTEuMzhDMjAuNjcsMTAuMzIgMTkuNjksOS43MiAxOC42Nyw5Ljk1QzE3LjY2LDEwLjE3IDE3LDEwLjggMTYuNzksMTEuODFDMTYuNiwxMi42NSAxNywxMy41IDE3Ljc3LDEzLjg0QzE4LjM2LDE0LjEgMTguOTYsMTQuMDYgMTkuNTMsMTMuNzhDMjAuMzcsMTMuMzUgMjAuODQsMTIuNjYgMjAuODksMTEuNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VIYXNrZWxsID0gXCJNMi4wOCwxOUw2Ljc1LDEyTDIuMDgsNUg1LjU4TDEwLjI1LDEyTDUuNTgsMTlIMi4wOE02Ljc1LDE5TDExLjQyLDEyTDYuNzUsNUgxMC4yNUwxOS41OSwxOUgxNi4wOUwxMy4xNywxNC42M0wxMC4yNSwxOUg2Ljc1TTE4LjAzLDE0LjkyTDE2LjUsMTIuNThIMjEuOTJWMTQuOTJIMTguMDNNMTUuNywxMS40MkwxNC4xNCw5LjA4SDIxLjkyVjExLjQySDE1LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VIdG1sNSA9IFwiTTEyLDE3LjU2TDE2LjA3LDE2LjQzTDE2LjYyLDEwLjMzSDkuMzhMOS4yLDguM0gxNi44TDE3LDYuMzFIN0w3LjU2LDEyLjMySDE0LjQ1TDE0LjIyLDE0LjlMMTIsMTUuNUw5Ljc4LDE0LjlMOS42NCwxMy4yNEg3LjY0TDcuOTMsMTYuNDNMMTIsMTcuNTZNNC4wNywzSDE5LjkzTDE4LjUsMTkuMkwxMiwyMUw1LjUsMTkuMkw0LjA3LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VKYXZhID0gXCJNMTYuNSw2LjA4QzE2LjUsNi4wOCA5LjY2LDcuNzkgMTIuOTQsMTEuNTZDMTMuOTEsMTIuNjcgMTIuNjksMTMuNjcgMTIuNjksMTMuNjdDMTIuNjksMTMuNjcgMTUuMTQsMTIuNDIgMTQsMTAuODJDMTIuOTQsOS4zNSAxMi4xNCw4LjYyIDE2LjUsNi4wOE0xMi4wMyw3LjI4QzE2LjA4LDQuMDggMTQsMiAxNCwyQzE0Ljg0LDUuMyAxMS4wNCw2LjMgOS42Nyw4LjM2QzguNzMsOS43NiAxMC4xMywxMS4yNyAxMiwxM0MxMS4yOSwxMS4zIDguNzgsOS44NCAxMi4wMyw3LjI4TTkuMzcsMTcuNDdDNi4yOSwxOC4zMyAxMS4yNSwyMC4xIDE1LjE2LDE4LjQzQzE0Ljc4LDE4LjI4IDE0LjQxLDE4LjEgMTQuMDYsMTcuODlDMTIuNywxOC4yIDExLjMsMTguMjYgOS45MiwxOC4wN0M4LjYxLDE3LjkxIDkuMzcsMTcuNDcgOS4zNywxNy40N00xNC42OSwxNS43OUMxMi45NCwxNi4xNyAxMS4xMywxNi4yNiA5LjM1LDE2LjA1QzguMDQsMTUuOTIgOC45LDE1LjI4IDguOSwxNS4yOEM1LjUsMTYuNDEgMTAuNzgsMTcuNjggMTUuNSwxNi4zQzE1LjIxLDE2LjE5IDE0LjkzLDE2IDE0LjY5LDE1Ljc5TTE4LjExLDE5LjA5QzE4LjExLDE5LjA5IDE4LjY4LDE5LjU2IDE3LjUsMTkuOTJDMTUuMjIsMjAuNiA4LjA3LDIwLjgxIDYuMDksMTkuOTVDNS4zOCwxOS42NCA2LjcyLDE5LjIxIDcuMTQsMTkuMTJDNy4zNywxOS4wNiA3LjYsMTkuMDQgNy44MywxOS4wNEM3LjA0LDE4LjUgMi43LDIwLjE0IDUuNjQsMjAuNkMxMy42MSwyMS45IDIwLjE4LDIwIDE4LjExLDE5LjA5TTE1LjM3LDE0LjIzQzE1LjY2LDE0LjA0IDE1Ljk3LDEzLjg4IDE2LjI5LDEzLjc0QzE2LjI5LDEzLjc0IDE0Ljc4LDE0IDEzLjI3LDE0LjE0QzExLjY3LDE0LjMgMTAuMDYsMTQuMzIgOC40NiwxNC4yQzYuMTEsMTMuODkgOS43NSwxMyA5Ljc1LDEzQzguNjUsMTMgNy41NywxMy4yNiA2LjU5LDEzLjc1QzQuNTQsMTQuNzUgMTEuNjksMTUuMiAxNS4zNywxNC4yM00xNi4yNywxNi42NUMxNi4yNSwxNi42OSAxNi4yMywxNi43MiAxNi4xOSwxNi43NUMyMS4yLDE1LjQ0IDE5LjM2LDEyLjExIDE2Ljk2LDEyLjk0QzE2LjgzLDEzIDE2LjcyLDEzLjA4IDE2LjY1LDEzLjE5QzE2Ljc5LDEzLjE0IDE2LjkzLDEzLjEgMTcuMDgsMTMuMDdDMTguMjgsMTIuODMgMjAsMTQuNyAxNi4yNywxNi42NU0xNi40LDIxLjI2QzEzLjM5LDIxLjc4IDEwLjMxLDIxLjgyIDcuMjgsMjEuNEM3LjI4LDIxLjQgNy43NCwyMS43OCAxMC4wOSwyMS45M0MxMy42OSwyMi4xNiAxOS4yMiwyMS44IDE5LjM1LDIwLjFDMTkuMzgsMjAuMTEgMTkuMTIsMjAuNzUgMTYuNCwyMS4yNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZUphdmFzY3JpcHQgPSBcIk0zLDNIMjFWMjFIM1YzTTcuNzMsMTguMDRDOC4xMywxOC44OSA4LjkyLDE5LjU5IDEwLjI3LDE5LjU5QzExLjc3LDE5LjU5IDEyLjgsMTguNzkgMTIuOCwxNy4wNFYxMS4yNkgxMS4xVjE3QzExLjEsMTcuODYgMTAuNzUsMTguMDggMTAuMiwxOC4wOEM5LjYyLDE4LjA4IDkuMzgsMTcuNjggOS4xMSwxNy4yMUw3LjczLDE4LjA0TTEzLjcxLDE3Ljg2QzE0LjIxLDE4Ljg0IDE1LjIyLDE5LjU5IDE2LjgsMTkuNTlDMTguNCwxOS41OSAxOS42LDE4Ljc2IDE5LjYsMTcuMjNDMTkuNiwxNS44MiAxOC43OSwxNS4xOSAxNy4zNSwxNC41N0wxNi45MywxNC4zOUMxNi4yLDE0LjA4IDE1Ljg5LDEzLjg3IDE1Ljg5LDEzLjM3QzE1Ljg5LDEyLjk2IDE2LjIsMTIuNjQgMTYuNywxMi42NEMxNy4xOCwxMi42NCAxNy41LDEyLjg1IDE3Ljc5LDEzLjM3TDE5LjEsMTIuNUMxOC41NSwxMS41NCAxNy43NywxMS4xNyAxNi43LDExLjE3QzE1LjE5LDExLjE3IDE0LjIyLDEyLjEzIDE0LjIyLDEzLjRDMTQuMjIsMTQuNzggMTUuMDMsMTUuNDMgMTYuMjUsMTUuOTVMMTYuNjcsMTYuMTNDMTcuNDUsMTYuNDcgMTcuOTEsMTYuNjggMTcuOTEsMTcuMjZDMTcuOTEsMTcuNzQgMTcuNDYsMTguMDkgMTYuNzYsMTguMDlDMTUuOTMsMTguMDkgMTUuNDUsMTcuNjYgMTUuMDksMTcuMDZMMTMuNzEsMTcuODZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VLb3RsaW4gPSBcIk0yIDJIMjJMMTIgMTJMMjIgMjJIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZUx1YSA9IFwiTTEwLjUsNUE4LjUsOC41IDAgMCwwIDIsMTMuNUE4LjUsOC41IDAgMCwwIDEwLjUsMjJBOC41LDguNSAwIDAsMCAxOSwxMy41QTguNSw4LjUgMCAwLDAgMTAuNSw1TTEzLjUsMTNBMi41LDIuNSAwIDAsMSAxMSwxMC41QTIuNSwyLjUgMCAwLDEgMTMuNSw4QTIuNSwyLjUgMCAwLDEgMTYsMTAuNUEyLjUsMi41IDAgMCwxIDEzLjUsMTNNMTkuNSwyQTIuNSwyLjUgMCAwLDAgMTcsNC41QTIuNSwyLjUgMCAwLDAgMTkuNSw3QTIuNSwyLjUgMCAwLDAgMjIsNC41QTIuNSwyLjUgMCAwLDAgMTkuNSwyXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VNYXJrZG93biA9IFwiTTIwLjU2IDE4SDMuNDRDMi42NSAxOCAyIDE3LjM3IDIgMTYuNTlWNy40MUMyIDYuNjMgMi42NSA2IDMuNDQgNkgyMC41NkMyMS4zNSA2IDIyIDYuNjMgMjIgNy40MVYxNi41OUMyMiAxNy4zNyAyMS4zNSAxOCAyMC41NiAxOE02LjgxIDE1LjE5VjExLjUzTDguNzMgMTMuODhMMTAuNjUgMTEuNTNWMTUuMTlIMTIuNThWOC44MUgxMC42NUw4LjczIDExLjE2TDYuODEgOC44MUg0Ljg5VjE1LjE5SDYuODFNMTkuNjkgMTJIMTcuNzdWOC44MUgxNS44NVYxMkgxMy45MkwxNi44MSAxNS4yOEwxOS42OSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZU1hcmtkb3duT3V0bGluZSA9IFwiTTIwLjU2IDE4SDMuNDRDMi42NSAxOCAyIDE3LjM3IDIgMTYuNTlWNy40MUMyIDYuNjMgMi42NSA2IDMuNDQgNkgyMC41NkMyMS4zNSA2IDIyIDYuNjMgMjIgNy40MVYxNi41OUMyMiAxNy4zNyAyMS4zNSAxOCAyMC41NiAxOE0zLjQ0IDYuOTRDMy4xOCA2Ljk0IDIuOTYgNy4xNSAyLjk2IDcuNDFWMTYuNkMyLjk2IDE2Ljg1IDMuMTggMTcuMDYgMy40NCAxNy4wNkgyMC41NkMyMC44MiAxNy4wNiAyMS4wNCAxNi44NSAyMS4wNCAxNi42VjcuNDFDMjEuMDQgNy4xNSAyMC44MiA2Ljk0IDIwLjU2IDYuOTRIMy40NE00Ljg5IDE1LjE5VjguODFINi44MUw4LjczIDExLjE2TDEwLjY1IDguODFIMTIuNThWMTUuMTlIMTAuNjVWMTEuNTNMOC43MyAxMy44OEw2LjgxIDExLjUzVjE1LjE5SDQuODlNMTYuOSAxNS4xOUwxNCAxMi4wOUgxNS45NFY4LjgxSDE3Ljg2VjEyLjA5SDE5Ljc5TDE2LjkgMTUuMTlcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZVBocCA9IFwiTTEyLDE4LjA4QzUuMzcsMTguMDggMCwxNS4zNiAwLDEyQzAsOC42NCA1LjM3LDUuOTIgMTIsNS45MkMxOC42Myw1LjkyIDI0LDguNjQgMjQsMTJDMjQsMTUuMzYgMTguNjMsMTguMDggMTIsMTguMDhNNi44MSwxMC4xM0M3LjM1LDEwLjEzIDcuNzIsMTAuMjMgNy45LDEwLjQ0QzguMDgsMTAuNjQgOC4xMiwxMSA4LjAzLDExLjQ3QzcuOTMsMTIgNy43NCwxMi4zNCA3LjQ1LDEyLjU2QzcuMTcsMTIuNzggNi43NCwxMi44OSA2LjE2LDEyLjg5SDUuMjlMNS44MiwxMC4xM0g2LjgxTTMuMzEsMTUuNjhINC43NUw1LjA5LDEzLjkzSDYuMzJDNi44NiwxMy45MyA3LjMsMTMuODcgNy42NSwxMy43NkM4LDEzLjY0IDguMzIsMTMuNDUgOC42MSwxMy4xOEM4Ljg1LDEyLjk2IDkuMDQsMTIuNzIgOS4xOSwxMi40NUM5LjM0LDEyLjE5IDkuNDUsMTEuODkgOS41LDExLjU3QzkuNjYsMTAuNzkgOS41NSwxMC4xOCA5LjE3LDkuNzVDOC43OCw5LjMxIDguMTgsOS4xIDcuMzUsOS4xSDQuNTlMMy4zMSwxNS42OE0xMC41Niw3LjM1TDkuMjgsMTMuOTNIMTAuN0wxMS40NCwxMC4xNkgxMi41OEMxMi45NCwxMC4xNiAxMy4xOCwxMC4yMiAxMy4yOSwxMC4zNEMxMy40LDEwLjQ2IDEzLjQyLDEwLjY4IDEzLjM2LDExTDEyLjc5LDEzLjkzSDE0LjI0TDE0LjgzLDEwLjg2QzE0Ljk2LDEwLjI0IDE0Ljg2LDkuNzkgMTQuNTYsOS41QzE0LjI2LDkuMjMgMTMuNzEsOS4xIDEyLjkxLDkuMUgxMS42NEwxMiw3LjM1SDEwLjU2TTE4LDEwLjEzQzE4LjU1LDEwLjEzIDE4LjkxLDEwLjIzIDE5LjA5LDEwLjQ0QzE5LjI3LDEwLjY0IDE5LjMxLDExIDE5LjIyLDExLjQ3QzE5LjEyLDEyIDE4LjkzLDEyLjM0IDE4LjY1LDEyLjU2QzE4LjM2LDEyLjc4IDE3LjkzLDEyLjg5IDE3LjM1LDEyLjg5SDE2LjVMMTcsMTAuMTNIMThNMTQuNSwxNS42OEgxNS45NEwxNi4yOCwxMy45M0gxNy41QzE4LjA1LDEzLjkzIDE4LjUsMTMuODcgMTguODUsMTMuNzZDMTkuMiwxMy42NCAxOS41LDEzLjQ1IDE5LjgsMTMuMThDMjAuMDQsMTIuOTYgMjAuMjQsMTIuNzIgMjAuMzgsMTIuNDVDMjAuNTMsMTIuMTkgMjAuNjQsMTEuODkgMjAuNywxMS41N0MyMC44NSwxMC43OSAyMC43NCwxMC4xOCAyMC4zNiw5Ljc1QzIwLDkuMzEgMTkuMzcsOS4xIDE4LjU0LDkuMUgxNS43OUwxNC41LDE1LjY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbmd1YWdlUHl0aG9uID0gXCJNMTkuMTQsNy41QTIuODYsMi44NiAwIDAsMSAyMiwxMC4zNlYxNC4xNEEyLjg2LDIuODYgMCAwLDEgMTkuMTQsMTdIMTJDMTIsMTcuMzkgMTIuMzIsMTcuOTYgMTIuNzEsMTcuOTZIMTdWMTkuNjRBMi44NiwyLjg2IDAgMCwxIDE0LjE0LDIyLjVIOS44NkEyLjg2LDIuODYgMCAwLDEgNywxOS42NFYxNS44OUM3LDE0LjMxIDguMjgsMTMuMDQgOS44NiwxMy4wNEgxNS4xMUMxNi42OSwxMy4wNCAxNy45NiwxMS43NiAxNy45NiwxMC4xOFY3LjVIMTkuMTRNMTQuODYsMTkuMjlDMTQuNDYsMTkuMjkgMTQuMTQsMTkuNTkgMTQuMTQsMjAuMThDMTQuMTQsMjAuNzcgMTQuNDYsMjAuODkgMTQuODYsMjAuODlBMC43MSwwLjcxIDAgMCwwIDE1LjU3LDIwLjE4QzE1LjU3LDE5LjU5IDE1LjI1LDE5LjI5IDE0Ljg2LDE5LjI5TTQuODYsMTcuNUMzLjI4LDE3LjUgMiwxNi4yMiAyLDE0LjY0VjEwLjg2QzIsOS4yOCAzLjI4LDggNC44Niw4SDEyQzEyLDcuNjEgMTEuNjgsNy4wNCAxMS4yOSw3LjA0SDdWNS4zNkM3LDMuNzggOC4yOCwyLjUgOS44NiwyLjVIMTQuMTRDMTUuNzIsMi41IDE3LDMuNzggMTcsNS4zNlY5LjExQzE3LDEwLjY5IDE1LjcyLDExLjk2IDE0LjE0LDExLjk2SDguODlDNy4zMSwxMS45NiA2LjA0LDEzLjI0IDYuMDQsMTQuODJWMTcuNUg0Ljg2TTkuMTQsNS43MUM5LjU0LDUuNzEgOS44Niw1LjQxIDkuODYsNC44MkM5Ljg2LDQuMjMgOS41NCw0LjExIDkuMTQsNC4xMUM4Ljc1LDQuMTEgOC40Myw0LjIzIDguNDMsNC44MkM4LjQzLDUuNDEgOC43NSw1LjcxIDkuMTQsNS43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZVIgPSBcIk0xMiw0LjI5QzYuNSw0LjI5IDIsNy4yOSAyLDExQzIsMTQuMjggNS41NiwxNyAxMC4yNCwxNy41OFYxOS43MUgxMy42NVYxNy41OUMxNC41LDE3LjUgMTUuMjksMTcuMzQgMTYuMDQsMTcuMTFMMTcuNDIsMTkuNzFIMjEuMjhMMTguOTYsMTUuOEMyMC44MywxNC41OCAyMiwxMi44NyAyMiwxMUMyMiw3LjI5IDE3LjUsNC4yOSAxMiw0LjI5VjQuMjlNMTMuNTMsNi45MUMxNy43Myw2LjkxIDIwLjgzLDguMzEgMjAuODMsMTEuNUMyMC44MywxMy4yMSAxOS45MSwxNC40MSAxOC40MSwxNS4xNUMxOC4zMiwxNS4xIDE4LjI0LDE1LjA1IDE4LjE5LDE1QzE3LjgzLDE0Ljg0IDE3LjIzLDE0LjY2IDE3LjIzLDE0LjY2QzE3LjIzLDE0LjY2IDIwLjIxLDE0LjQ0IDIwLjIxLDExLjQ3QzIwLjIxLDguNSAxNy4wOSw4LjQ1IDE3LjA5LDguNDVIMTAuMjRWMTUuNjFDNy42OSwxNC44NyA1LjkzLDEzLjMgNS45MywxMS41QzUuOTMsOC45NiA5LjMzLDYuOTEgMTMuNTMsNi45MU0xMy42OCwxMC44OUgxNS43NUMxNS43NSwxMC44OSAxNi43LDEwLjg0IDE2LjcsMTEuODNDMTYuNywxMi44IDE1Ljc1LDEyLjggMTUuNzUsMTIuOEgxMy42OFYxMC44OU0xMy42NSwxNS4zSDE0LjU3QzE0Ljc1LDE1LjMgMTQuODQsMTUuMzUgMTUsMTUuNUMxNS4xMywxNS42IDE1LjI3LDE1Ljc5IDE1LjM5LDE1Ljk2QzE0Ljg0LDE2LjAzIDE0LjI2LDE2LjA2IDEzLjY1LDE2LjA2VjE1LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VSdWJ5ID0gXCJNMTguOCwyLjA3QzIxLjMyLDIuNSAyMi4wNCw0LjIzIDIyLDYuMDRWNkwyMC44NiwyMC45M0w2LjA4LDIxLjk0SDYuMDlDNC44NiwyMS44OSAyLjEzLDIxLjc3IDIsMTcuOTVMMy4zNywxNS40NUw2LjE0LDIxLjkxTDguNSwxNC4yOUw4LjQ1LDE0LjNMOC40NywxNC4yOEwxNi4xOCwxNi43NEwxNC4xOSw4Ljk2TDIxLjU0LDguNUwxNS43NSwzLjc2TDE4LjgsMi4wNlYyLjA3TTIsMTcuOTFWMTcuOTNMMiwxNy45MVYxNy45MU02LjI4LDYuMjNDOS4yNCwzLjI4IDEzLjA3LDEuNTQgMTQuNTQsMy4wM0MxNiw0LjUgMTQuNDYsOC4xMiAxMS41LDExLjA2QzguNSwxNCA0LjczLDE1Ljg0IDMuMjYsMTQuMzZDMS43OSwxMi44NyAzLjMsOS4xNyA2LjI3LDYuMjNINi4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZVJ1YnlPblJhaWxzID0gXCJNMTkuOCwxNi43QzE5LjgsMTYuNyAyMS42LDE2LjUgMjEuNiwxNC4zQzIxLjYsMTIuMSAxOS41LDExLjggMTkuNSwxMS44SDE1LjdWMTlIMTcuNlYxNy4zTDE5LjMsMTlIMjJMMTkuOCwxNi43TTE5LDE1LjNIMTcuNVYxMy43SDE5QzE5LDEzLjcgMTkuNCwxMy45IDE5LjQsMTQuNUMxOS41LDE1LjEgMTksMTUuMyAxOSwxNS4zTTIxLjMsOC4yVjguNEMxMy4yLDYuMSAxMCwxMy4yIDEwLjYsMTguN0MxMC42LDE4LjcgNC45LDE4LjcgNC4zLDE4LjdDNSwxMy4zIDExLjgsMi42IDIxLjMsOC4yTTIwLjUsNi45QzE5LjgsNi42IDE5LjEsNi4zIDE4LjQsNi4xTDE4LjUsNC44TDIwLjYsNS42TDIwLjUsNi45TTE4LjUsOC43QzE5LjIsOC43IDE5LjksOC44IDIwLjYsOUwyMC41LDEwLjJMMTguNywxMEwxOC41LDguN00xMy45LDUuOEwxMy41LDQuNkwxNS42LDQuNEwxNiw1LjdDMTUuOCw1LjcgMTQuMSw1LjggMTMuOSw1LjhNMTUuMiw5LjVDMTUuNiw5LjMgMTYuMyw5IDE3LjIsOC44TDE3LjYsMTBMMTUuOCwxMC43TDE1LjIsOS41TTExLjgsNi41QzExLjIsNi44IDEwLjYsNy4xIDEwLDcuNUw5LjIsNi4yTDExLDUuMkwxMS44LDYuNU0xNC4zLDEwLjFMMTUuMSwxMS4zTDE0LDEyLjZMMTIuOSwxMS42QzEzLjIsMTEgMTMuNywxMC41IDE0LjMsMTAuMU0xMS42LDE1QzExLjcsMTQuMiAxMS45LDEzLjUgMTIuMiwxMi43TDEzLjQsMTMuN0wxMy4xLDE1LjZMMTEuNiwxNU03LjksOS4zQzcuNCw5LjggNi45LDEwLjQgNi41LDEwLjlMNS4yLDkuOEw2LjcsOC4yTDcuOSw5LjNNNC44LDEzLjdDNC40LDE0LjUgNC4xLDE1LjMgMy44LDE2TDIsMTUuM0wyLjksMTNMNC44LDEzLjdNMTEuNSwxNi4zTDEzLjMsMTYuOUwxMy42LDE4LjlMMTEuNiwxOC40QzExLjYsMTguMiAxMS41LDE3LjUgMTEuNSwxNi4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbmd1YWdlUnVzdCA9IFwiTTIxLjkgMTEuN0wyMSAxMS4yVjExTDIxLjcgMTAuM0MyMS44IDEwLjIgMjEuOCAxMCAyMS43IDkuOUwyMS42IDkuOEwyMC43IDkuNUMyMC43IDkuNCAyMC43IDkuMyAyMC42IDkuM0wyMS4yIDguNUMyMS4zIDguNCAyMS4zIDguMiAyMS4xIDguMUMyMS4xIDguMSAyMSA4LjEgMjEgOEwyMCA3LjhDMjAgNy43IDE5LjkgNy43IDE5LjkgNy42TDIwLjMgNi43VjYuNEMyMC4yIDYuMyAyMC4xIDYuMyAyMCA2LjNIMTlDMTkgNi4zIDE5IDYuMiAxOC45IDYuMkwxOS4xIDUuMkMxOS4xIDUgMTkgNC45IDE4LjkgNC45SDE4LjhMMTcuOCA1LjFDMTcuOCA1IDE3LjcgNSAxNy42IDQuOVYzLjlDMTcuNiAzLjcgMTcuNSAzLjYgMTcuMyAzLjZIMTcuMkwxNi4zIDRIMTYuMkwxNiAzQzE2IDIuOCAxNS44IDIuNyAxNS43IDIuOEgxNS42TDE0LjggMy40QzE0LjcgMy40IDE0LjYgMy40IDE0LjYgMy4zTDE0LjMgMi40QzE0LjIgMi4zIDE0LjEgMi4yIDEzLjkgMi4yQzEzLjkgMi4yIDEzLjggMi4yIDEzLjggMi4zTDEzIDNIMTIuOEwxMi4zIDIuMkMxMi4yIDIgMTIgMiAxMS44IDJMMTEuNyAyLjFMMTEuMiAzSDExTDEwLjMgMi4zQzEwLjIgMi4yIDEwIDIuMiA5LjkgMi4zTDkuOCAyLjRMOS41IDMuM0M5LjQgMy4zIDkuMyAzLjMgOS4zIDMuNEw4LjUgMi44QzguMyAyLjcgOC4xIDIuNyA4IDIuOVYzTDcuOCA0QzcuOCA0IDcuNyA0IDcuNiA0LjFMNi43IDMuN0M2LjYgMy42IDYuNCAzLjcgNi4zIDMuOFY0LjlDNi4zIDUgNi4yIDUgNi4yIDUuMUw1LjIgNC45QzUgNC44IDQuOSA0LjkgNC45IDUuMVY1LjJMNS4xIDYuMkM1IDYuMiA1IDYuMyA0LjkgNi4zSDMuOUMzLjcgNi4zIDMuNiA2LjQgMy42IDYuNlY2LjdMNCA3LjZWNy44TDMgOEMyLjggOCAyLjcgOC4yIDIuNyA4LjNWOC40TDMuMyA5LjJDMy4zIDkuMyAzLjMgOS40IDMuMiA5LjRMMi40IDkuOEMyLjMgOS45IDIuMiAxMCAyLjIgMTAuMkMyLjIgMTAuMiAyLjIgMTAuMyAyLjMgMTAuM0wzIDExVjExLjJMMi4yIDExLjdDMiAxMS44IDIgMTIgMiAxMi4xTDIuMSAxMi4yTDMgMTIuOFYxM0wyLjMgMTMuN0MyLjIgMTMuOCAyLjIgMTQgMi4zIDE0LjFMMi40IDE0LjJMMy4zIDE0LjVDMy4zIDE0LjYgMy4zIDE0LjcgMy40IDE0LjdMMi44IDE1LjVDMi43IDE1LjYgMi43IDE1LjggMi45IDE1LjlDMi45IDE1LjkgMyAxNS45IDMgMTZMNCAxNi4yQzQgMTYuMyA0LjEgMTYuMyA0LjEgMTYuNEwzLjcgMTcuM0MzLjYgMTcuNCAzLjcgMTcuNiAzLjggMTcuN0g0LjlDNSAxNy43IDUgMTcuOCA1LjEgMTcuOEw0LjkgMTguOEM0LjkgMTkgNSAxOS4xIDUuMSAxOS4xSDUuMkw2LjIgMTguOUM2LjIgMTkgNi4zIDE5IDYuNCAxOS4xVjIwLjFDNi40IDIwLjMgNi41IDIwLjQgNi43IDIwLjRINi44TDcuNyAyMEg3LjhMOCAyMUM4IDIxLjIgOC4yIDIxLjMgOC4zIDIxLjJIOC40TDkuMiAyMC42QzkuMyAyMC42IDkuNCAyMC42IDkuNCAyMC43TDkuNyAyMS42QzkuOCAyMS43IDkuOSAyMS44IDEwLjEgMjEuOEMxMC4xIDIxLjggMTAuMiAyMS44IDEwLjIgMjEuN0wxMSAyMUgxMS4yTDExLjcgMjEuOEMxMS44IDIxLjkgMTIgMjIgMTIuMSAyMS45TDEyLjIgMjEuOEwxMi43IDIxSDEyLjlMMTMuNiAyMS43QzEzLjcgMjEuOCAxMy45IDIxLjggMTQgMjEuN0wxNC4xIDIxLjZMMTQuNCAyMC43QzE0LjUgMjAuNyAxNC42IDIwLjcgMTQuNiAyMC42TDE1LjQgMjEuMkMxNS41IDIxLjMgMTUuNyAyMS4zIDE1LjggMjEuMUMxNS44IDIxLjEgMTUuOCAyMSAxNS45IDIxTDE2LjEgMjBDMTYuMiAyMCAxNi4yIDE5LjkgMTYuMyAxOS45TDE3LjIgMjAuM0MxNy4zIDIwLjQgMTcuNSAyMC4zIDE3LjYgMjAuMlYxOS4xTDE3LjggMTguOUwxOC44IDE5LjFDMTkgMTkuMSAxOS4xIDE5IDE5LjEgMTguOVYxOC44TDE4LjkgMTcuOEwxOS4xIDE3LjZIMjAuMUMyMC4zIDE3LjYgMjAuNCAxNy41IDIwLjQgMTcuM1YxNy4yTDIwIDE2LjNDMjAgMTYuMiAyMC4xIDE2LjIgMjAuMSAxNi4xTDIxLjEgMTUuOUMyMS4zIDE1LjkgMjEuNCAxNS43IDIxLjMgMTUuNlYxNS41TDIwLjcgMTQuN0wyMC44IDE0LjVMMjEuNyAxNC4yQzIxLjggMTQuMSAyMS45IDE0IDIxLjkgMTMuOEMyMS45IDEzLjggMjEuOSAxMy43IDIxLjggMTMuN0wyMSAxM1YxMi44TDIxLjggMTIuM0MyMiAxMi4yIDIyIDEyIDIxLjkgMTEuN0MyMS45IDExLjggMjEuOSAxMS44IDIxLjkgMTEuN00xNi4yIDE4LjdDMTUuOSAxOC42IDE1LjcgMTguMyAxNS43IDE4QzE1LjggMTcuNyAxNi4xIDE3LjUgMTYuNCAxNy41QzE2LjcgMTcuNiAxNi45IDE3LjkgMTYuOSAxOC4yQzE2LjkgMTguNiAxNi42IDE4LjggMTYuMiAxOC43TTE2IDE2LjhDMTUuNyAxNi43IDE1LjQgMTYuOSAxNS40IDE3LjJMMTUgMTguNkMxNC4xIDE5IDEzLjEgMTkuMiAxMiAxOS4yQzEwLjkgMTkuMiA5LjkgMTkgOC45IDE4LjVMOC42IDE3LjFDOC41IDE2LjggOC4zIDE2LjYgOCAxNi43TDYuOCAxN0M2LjYgMTYuOCA2LjQgMTYuNSA2LjIgMTYuM0gxMi4yQzEyLjMgMTYuMyAxMi4zIDE2LjMgMTIuMyAxNi4yVjE0LjFDMTIuMyAxNCAxMi4zIDE0IDEyLjIgMTRIMTAuNVYxMi43SDEyLjRDMTIuNiAxMi43IDEzLjMgMTIuNyAxMy42IDEzLjdDMTMuNyAxNCAxMy44IDE1IDE0IDE1LjNDMTQuMSAxNS42IDE0LjYgMTYuMyAxNS4xIDE2LjNIMTguMkMxOCAxNi42IDE3LjggMTYuOCAxNy41IDE3LjFMMTYgMTYuOE03LjcgMTguN0M3LjQgMTguOCA3LjEgMTguNiA3IDE4LjJDNi45IDE3LjkgNy4xIDE3LjYgNy41IDE3LjVTOC4xIDE3LjYgOC4yIDE4QzguMiAxOC4zIDggMTguNiA3LjcgMTguN001LjQgOS41QzUuNSA5LjggNS40IDEwLjIgNS4xIDEwLjNDNC44IDEwLjQgNC40IDEwLjMgNC4zIDEwQzQuMiA5LjcgNC4zIDkuMyA0LjYgOS4yQzUgOS4xIDUuMyA5LjIgNS40IDkuNU00LjcgMTEuMUw2IDEwLjZDNi4zIDEwLjUgNi40IDEwLjIgNi4zIDkuOUw2IDkuM0g3VjE0SDVDNC43IDEzIDQuNiAxMi4xIDQuNyAxMS4xTTEwLjMgMTAuN1Y5LjNIMTIuOEMxMi45IDkuMyAxMy43IDkuNCAxMy43IDEwQzEzLjcgMTAuNSAxMy4xIDEwLjcgMTIuNiAxMC43SDEwLjNNMTkuMyAxMS45VjEyLjRIMTguNUMxOC40IDEyLjQgMTguNCAxMi40IDE4LjQgMTIuNVYxMi44QzE4LjQgMTMuNiAxNy45IDEzLjggMTcuNSAxMy44QzE3LjEgMTMuOCAxNi43IDEzLjYgMTYuNiAxMy40QzE2LjQgMTIuMSAxNiAxMS45IDE1LjQgMTEuNEMxNi4xIDEwLjkgMTYuOSAxMC4yIDE2LjkgOS4zQzE2LjkgOC4zIDE2LjIgNy43IDE1LjggNy40QzE1LjEgNyAxNC40IDYuOSAxNC4yIDYuOUg2LjZDNy43IDUuNyA5LjEgNC45IDEwLjcgNC42TDExLjYgNS42QzExLjggNS44IDEyLjEgNS44IDEyLjQgNS42TDEzLjQgNC42QzE1LjUgNSAxNy4zIDYuMyAxOC40IDguMkwxNy43IDkuOEMxNy42IDEwLjEgMTcuNyAxMC40IDE4IDEwLjVMMTkuMyAxMS4xVjExLjlNMTEuNiAzLjlDMTEuOCAzLjcgMTIuMiAzLjcgMTIuNCAzLjlDMTIuNiA0LjEgMTIuNiA0LjUgMTIuNCA0LjdDMTIuMSA1IDExLjggNSAxMS41IDQuN0MxMS4zIDQuNSAxMS40IDQuMiAxMS42IDMuOU0xOC41IDkuNUMxOC42IDkuMiAxOSA5LjEgMTkuMyA5LjJDMTkuNiA5LjMgMTkuNyA5LjcgMTkuNiAxMEMxOS41IDEwLjMgMTkuMSAxMC40IDE4LjggMTAuM0MxOC41IDEwLjIgMTguNCA5LjggMTguNSA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VTd2lmdCA9IFwiTTE3LjA5LDE5LjcyQzE0LjczLDIxLjA4IDExLjUsMjEuMjIgOC4yMywxOS44MkM1LjU5LDE4LjcgMy40LDE2Ljc0IDIsMTQuNUMyLjY3LDE1LjA1IDMuNDYsMTUuNSA0LjMsMTUuOUM3LjY3LDE3LjQ3IDExLjAzLDE3LjM2IDEzLjQsMTUuOUMxMC4wMywxMy4zMSA3LjE2LDkuOTQgNS4wMyw3LjE5QzQuNTgsNi43NCA0LjI1LDYuMTggMy45MSw1LjY4QzEyLjE5LDExLjczIDExLjgzLDEzLjI3IDYuMzIsNC42N0MxMS4yMSw5LjYxIDE1Ljc1LDEyLjQxIDE1Ljc1LDEyLjQxQzE1LjkxLDEyLjUgMTYsMTIuNTcgMTYuMTEsMTIuNjNDMTYuMjEsMTIuMzggMTYuMywxMi4xMiAxNi4zNywxMS44NUMxNy4xNiw5IDE2LjI2LDUuNzMgMTQuMjksMy4wNEMxOC44NCw1Ljc5IDIxLjU0LDEwLjk1IDIwLjQxLDE1LjI4QzIwLjM4LDE1LjM5IDIwLjM1LDE1LjUgMjAuMzYsMTUuNjdDMjIuNiwxOC41IDIyLDIxLjQ1IDIxLjcxLDIwLjg5QzIwLjUsMTguNSAxOC4yMywxOS4yNCAxNy4wOSwxOS43MlYxOS43MlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZVR5cGVzY3JpcHQgPSBcIk0zLDNIMjFWMjFIM1YzTTEzLjcxLDE3Ljg2QzE0LjIxLDE4Ljg0IDE1LjIyLDE5LjU5IDE2LjgsMTkuNTlDMTguNCwxOS41OSAxOS42LDE4Ljc2IDE5LjYsMTcuMjNDMTkuNiwxNS44MiAxOC43OSwxNS4xOSAxNy4zNSwxNC41N0wxNi45MywxNC4zOUMxNi4yLDE0LjA4IDE1Ljg5LDEzLjg3IDE1Ljg5LDEzLjM3QzE1Ljg5LDEyLjk2IDE2LjIsMTIuNjQgMTYuNywxMi42NEMxNy4xOCwxMi42NCAxNy41LDEyLjg1IDE3Ljc5LDEzLjM3TDE5LjEsMTIuNUMxOC41NSwxMS41NCAxNy43NywxMS4xNyAxNi43LDExLjE3QzE1LjE5LDExLjE3IDE0LjIyLDEyLjEzIDE0LjIyLDEzLjRDMTQuMjIsMTQuNzggMTUuMDMsMTUuNDMgMTYuMjUsMTUuOTVMMTYuNjcsMTYuMTNDMTcuNDUsMTYuNDcgMTcuOTEsMTYuNjggMTcuOTEsMTcuMjZDMTcuOTEsMTcuNzQgMTcuNDYsMTguMDkgMTYuNzYsMTguMDlDMTUuOTMsMTguMDkgMTUuNDUsMTcuNjYgMTUuMDksMTcuMDZMMTMuNzEsMTcuODZNMTMsMTEuMjVIOFYxMi43NUg5LjVWMjBIMTEuMjVWMTIuNzVIMTNWMTEuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VYYW1sID0gXCJNMTYuOTMgNy45TDE5LjMxIDEyTDE2Ljk1IDE2LjA5TDE2LjMzIDE1TDE3LjggMTIuNUMxNy45NyAxMi4xOSAxNy45NyAxMS44MyAxNy44IDExLjU0TDE2LjMyIDlMMTYuOTMgNy45TTE2LjkyIDYuNTdDMTYuODkgNi41NyAxNi44NSA2LjU5IDE2LjgzIDYuNjJMMTUuNTYgOC44N0MxNS41IDguOTQgMTUuNSA5IDE1LjU2IDkuMDlMMTcuMTggMTEuOUMxNy4yMiAxMS45NyAxNy4yMiAxMi4wNSAxNy4xOCAxMi4xMkwxNS41NyAxNC45MUMxNS41MyAxNC45NyAxNS41MyAxNS4wNiAxNS41NyAxNS4xM0wxNi44NSAxNy4zNkMxNi44NyAxNy40IDE2LjkxIDE3LjQyIDE2Ljk0IDE3LjQyQzE3IDE3LjQyIDE3IDE3LjQgMTcuMDQgMTcuMzZMMjAgMTIuMjNDMjAuMDggMTIuMDkgMjAuMDggMTEuOTIgMjAgMTEuNzlMMTcgNi42MkMxNyA2LjU5IDE2Ljk2IDYuNTcgMTYuOTIgNi41N00yMS45MSAxMS42N0wxNy4yMyAzLjU4QzE3LjExIDMuMzggMTYuODkgMy4yNSAxNi42NiAzLjI1SDcuMjhDNy4wNSAzLjI1IDYuODMgMy4zOCA2LjcxIDMuNThMMiAxMS42N0MxLjkxIDExLjg3IDEuOTEgMTIuMTMgMiAxMi4zM0w2LjcxIDIwLjQyQzYuODMgMjAuNjIgNy4wNSAyMC43NSA3LjI4IDIwLjc1SDE2LjY2QzE2Ljg5IDIwLjc1IDE3LjExIDIwLjYyIDE3LjIzIDIwLjQyTDIxLjkxIDEyLjMzQzIyLjAzIDEyLjEzIDIyLjAzIDExLjg4IDIxLjkxIDExLjY3TTcuMyAzLjk1SDE2LjEyTDExLjc2IDExLjY1SDYuOTNMMTAuODcgNC44MkMxMC45MSA0Ljc1IDEwLjg2IDQuNjYgMTAuNzggNC42Nkw4LjIxIDQuNjVDOC4xMyA0LjY1IDguMDYgNC43IDggNC43Nkw0LjA0IDExLjY1SDIuODRMNy4zIDMuOTVNNi4xNyAxMi40Nkw5Ljc0IDE4LjYzTDguNSAxOC42M0w0Ljg3IDEyLjM1TDQuNjcgMTJMNC44NyAxMS42NUw4LjUgNS4zN0w5LjczIDUuMzdMNi4xNyAxMS41M0M2LjE1IDExLjU3IDYuMTMgMTEuNjEgNi4xMSAxMS42NUM2LjAzIDExLjg4IDYuMDMgMTIuMTMgNi4xMiAxMi4zNUM2LjEzIDEyLjM5IDYuMTUgMTIuNDMgNi4xNyAxMi40Nk03LjMgMjAuMDVMMi44NSAxMi4zNUg0LjA1TDguMDMgMTkuMjNDOC4wNyAxOS4zIDguMTQgMTkuMzQgOC4yMiAxOS4zNEwxMC43OSAxOS4zNEMxMC44NyAxOS4zNCAxMC45MiAxOS4yNSAxMC44OCAxOS4xOEw2Ljk0IDEyLjM1SDExLjc3TDE2LjE3IDIwLjA1SDcuM00xNi44IDE5Ljc1TDEyLjM3IDEyTDE2Ljc4IDQuMjFMMjEuMjkgMTJMMTYuOCAxOS43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXB0b3AgPSBcIk00LDZIMjBWMTZINE0yMCwxOEEyLDIgMCAwLDAgMjIsMTZWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMTZBMiwyIDAgMCwwIDQsMThIMFYyMEgyNFYxOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXB0b3BDaHJvbWVib29rID0gXCJNMjAsMTVINFY1SDIwTTE0LDE4SDEwVjE3SDE0TTIyLDE4VjNIMlYxOEgwVjIwSDI0VjE4SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhcHRvcE1hYyA9IFwiTTEyLDE5QTEsMSAwIDAsMSAxMSwxOEExLDEgMCAwLDEgMTIsMTdBMSwxIDAgMCwxIDEzLDE4QTEsMSAwIDAsMSAxMiwxOU00LDVIMjBWMTZINE0yMCwxOEEyLDIgMCAwLDAgMjIsMTZWNUMyMiwzLjg5IDIxLjEsMyAyMCwzSDRDMi44OSwzIDIsMy44OSAyLDVWMTZBMiwyIDAgMCwwIDQsMThIMEEyLDIgMCAwLDAgMiwyMEgyMkEyLDIgMCAwLDAgMjQsMThIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFwdG9wT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMCwyMC43MkwxOC43MywyMkwxNi43MywyMEgwVjE4SDRDMi44OSwxOCAyLDE3LjEgMiwxNlY2QzIsNS43OCAyLjA0LDUuNTcgMi4xLDUuMzdMMSw0LjI3TTQsMTZIMTIuNzNMNCw3LjI3VjE2TTIwLDE2VjZINy44Mkw1LjgyLDRIMjBBMiwyIDAgMCwxIDIyLDZWMTZBMiwyIDAgMCwxIDIwLDE4SDI0VjIwSDIxLjgyTDE3LjgyLDE2SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhcHRvcFdpbmRvd3MgPSBcIk0zLDRIMjFBMSwxIDAgMCwxIDIyLDVWMTZBMSwxIDAgMCwxIDIxLDE3SDIyTDI0LDIwVjIxSDBWMjBMMiwxN0gzQTEsMSAwIDAsMSAyLDE2VjVBMSwxIDAgMCwxIDMsNE00LDZWMTVIMjBWNkg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhcmF2ZWwgPSBcIk0yMS43IDYuNTNDMjEuNzEgNi41NSAyMS43MSA2LjU4IDIxLjcxIDYuNjFWMTAuOUMyMS43MSAxMSAyMS42NSAxMS4xMiAyMS41NiAxMS4xN0wxNy45NSAxMy4yNVYxNy4zNkMxNy45NSAxNy40NyAxNy45IDE3LjU3IDE3LjggMTcuNjNMMTAuMjggMjEuOTZDMTAuMjYgMjEuOTcgMTAuMjQgMjIgMTAuMjIgMjJMMTAuMiAyMkMxMC4xNSAyMiAxMC4wOSAyMiAxMC4wNCAyMkMxMC4wMyAyMiAxMCAyMiAxMCAyMkMxMCAyMiAxMCAyMS45NyA5Ljk2IDIxLjk2TDIuNDQgMTcuNjNDMi4zNSAxNy41OCAyLjI5IDE3LjQ3IDIuMjkgMTcuMzZWNC41QzIuMjkgNC40NSAyLjI5IDQuNDIgMi4zIDQuNEMyLjMgNC4zOSAyLjMxIDQuMzggMi4zMSA0LjM3QzIuMzEgNC4zNSAyLjMyIDQuMzQgMi4zMyA0LjMyQzIuMzMgNC4zMSAyLjM0IDQuMyAyLjM1IDQuMjlDMi4zNiA0LjI4IDIuMzcgNC4yNyAyLjM4IDQuMjZDMi4zOSA0LjI1IDIuNCA0LjI0IDIuNDEgNC4yM0MyLjQyIDQuMjIgMi40MyA0LjIxIDIuNDQgNC4yMUw2LjIgMi4wNEM2LjMgMiA2LjQyIDIgNi41IDIuMDRMMTAuMjggNC4yMUgxMC4yOEMxMC4yOSA0LjIyIDEwLjMgNC4yMiAxMC4zMSA0LjIzQzEwLjMyIDQuMjQgMTAuMzMgNC4yNSAxMC4zNCA0LjI2QzEwLjM1IDQuMjcgMTAuMzYgNC4yOCAxMC4zNyA0LjI5QzEwLjM4IDQuMyAxMC4zOSA0LjMxIDEwLjM5IDQuMzJDMTAuNCA0LjM0IDEwLjQxIDQuMzUgMTAuNDEgNC4zN0MxMC40MSA0LjM4IDEwLjQyIDQuMzkgMTAuNDIgNC40QzEwLjQzIDQuNDMgMTAuNDMgNC40NSAxMC40MyA0LjVWMTIuNUwxMy41NyAxMC43MlY2LjYxQzEzLjU3IDYuNTggMTMuNTcgNi41NSAxMy41OCA2LjUzTDEzLjU5IDYuNUMxMy41OSA2LjUgMTMuNiA2LjQ3IDEzLjYxIDYuNDVDMTMuNjEgNi40NCAxMy42MiA2LjQzIDEzLjYzIDYuNDJDMTMuNjQgNi40MSAxMy42NSA2LjQgMTMuNjYgNi4zOUMxMy42NyA2LjM4IDEzLjY4IDYuMzcgMTMuNjkgNi4zNkMxMy43IDYuMzUgMTMuNzEgNi4zNCAxMy43MiA2LjM0TDE3LjUgNC4xN0MxNy41OCA0LjExIDE3LjcgNC4xMSAxNy44IDQuMTdMMjEuNTYgNi4zNEMyMS41NyA2LjM0IDIxLjU4IDYuMzUgMjEuNTkgNi4zNkwyMS42MiA2LjM5QzIxLjYzIDYuNCAyMS42NCA2LjQxIDIxLjY1IDYuNDJDMjEuNjYgNi40MyAyMS42NiA2LjQ0IDIxLjY3IDYuNDVDMjEuNjggNi40NyAyMS42OCA2LjUgMjEuNjkgNi41QzIxLjcgNi41IDIxLjcgNi41IDIxLjcgNi41M00yMS4wOSAxMC43MlY3LjE1TDE3Ljk1IDguOTVWMTIuNUwyMS4wOSAxMC43Mk0xNy4zMyAxNy4xOFYxMy42TDEwLjQzIDE3LjU0VjIxLjE1TDE3LjMzIDE3LjE4TTIuOTEgNVYxNy4xOEw5LjgxIDIxLjE1VjE3LjU0TDYuMjEgMTUuNUw2LjIgMTUuNUw2LjIgMTUuNUM2LjE5IDE1LjUgNi4xOCAxNS41IDYuMTcgMTUuNDdDNi4xNiAxNS40NyA2LjE1IDE1LjQ2IDYuMTQgMTUuNDVWMTUuNDVDNi4xMyAxNS40NCA2LjEyIDE1LjQzIDYuMTEgMTUuNDJDNi4xIDE1LjQxIDYuMSAxNS40IDYuMDkgMTUuMzlWMTUuMzlDNi4wOCAxNS4zNyA2LjA4IDE1LjM2IDYuMDcgMTUuMzVDNi4wNyAxNS4zMyA2LjA2IDE1LjMyIDYuMDYgMTUuMzFDNi4wNSAxNS4zIDYuMDUgMTUuMjggNi4wNSAxNS4yN0M2LjA1IDE1LjI1IDYuMDUgMTUuMjQgNi4wNSAxNS4yM1Y2LjgyTDIuOTEgNU02LjM2IDIuNjhMMy4yMyA0LjVMNi4zNiA2LjI4TDkuNSA0LjVMNi4zNiAyLjY4TTkuODEgMTIuODhWNUw2LjY3IDYuODJWMTQuNjlMOS44MSAxMi44OE0xNy42NCA0LjhMMTQuNSA2LjYxTDE3LjY0IDguNDFMMjAuNzcgNi42MUwxNy42NCA0LjhNMTcuMzMgOC45NUwxNC4xOSA3LjE1VjEwLjcyTDE3LjMzIDEyLjVWOC45NU0xMC4xMiAxN0wxNyAxMy4wNkwxMy44OCAxMS4yNkw3IDE1LjIzTDEwLjEyIDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhc2VyUG9pbnRlciA9IFwiTTkgMTNMNSAxNkM0IDE2Ljg4IDMuODYgMTguMTIgNCAxOUM0LjEzIDIwIDQuOTEgMjEuMjIgNiAyMS42OEM3LjU3IDIyLjM1IDkuMDkgMjEuOSAxMC4wNCAyMC45MkwxOSAxM0MyMC44NiAxMS42MiAyMCA5IDE4IDlIMTJMMTkuNDYgNC42MUMxOS45IDQuMjkgMjAuMDggMy44MiAyMC4wNiAzLjM3QzIwIDIuNjcgMTkuNDYgMiAxOC42IDJIMTguNTRDMTguMTkgMiAxNy44NiAyLjExIDE3LjU2IDIuMjlMNSA5QzQuMTkgOS40NiAzLjk0IDEwLjI0IDQgMTFDNC4wNSAxMi4wMyA0Ljc0IDEzIDYgMTNNNSAxOC41QzUgMTcuMTIgNi4xMiAxNiA3LjUgMTZTMTAgMTcuMTIgMTAgMTguNSA4Ljg4IDIxIDcuNSAyMSA1IDE5Ljg4IDUgMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXNzbyA9IFwiTTEyIDJDMTcuNSAyIDIyIDUuMTMgMjIgOUMyMiAxMi4yNiAxOC44MSAxNSAxNC41IDE1Ljc4TDE0LjUgMTUuNUMxNC41IDE0LjkxIDE0LjQgMTQuMzQgMTQuMjEgMTMuODFDMTcuNTUgMTMuMjEgMjAgMTEuMjggMjAgOUMyMCA2LjI0IDE2LjQyIDQgMTIgNEM3LjU4IDQgNCA2LjI0IDQgOUM0IDEwLjE5IDQuNjcgMTEuMjkgNS43OSAxMi4xNUM1LjM1IDEyLjY0IDUgMTMuMjEgNC43OCAxMy44NUMzLjA2IDEyLjU5IDIgMTAuODggMiA5QzIgNS4xMyA2LjUgMiAxMiAyTTkuNSAxMkMxMS40MyAxMiAxMyAxMy41NyAxMyAxNS41QzEzIDE3LjQgMTEuNSAxOC45NSA5LjYgMTlDOS4zOSAxOS4zNiA5LjE4IDIwIDkuODMgMjAuNjhDMTEgMjEuODggMTMuMjggMTkuNzIgMTYuMzkgMTkuNzFDMTguNDMgMTkuNyAyMC4wMyAxOS45NyAyMC4wMyAxOS45N0MyMC4wMyAxOS45NyAyMS4wOCAyMC4xIDIwLjk3IDIxLjA0QzIwLjg2IDIxLjk3IDE5LjkxIDIxLjk3IDE5LjkxIDIxLjk3QzE5LjUzIDIxLjkzIDE4LjAzIDIxLjU4IDE2LjIyIDIxLjY4QzE0LjQxIDIxLjc3IDEzLjQ3IDIyLjQxIDEyLjU2IDIyLjY5QzExLjY2IDIyLjk3IDkuOTEgMjMuMzggOC4zIDIyLjA1QzYuOTcgMjAuOTYgNy40NiAxOS4xMSA3LjY3IDE4LjVDNi42NyAxNy44NyA2IDE2Ljc2IDYgMTUuNUM2IDEzLjU3IDcuNTcgMTIgOS41IDEyTTkuNSAxNEM4LjY3IDE0IDggMTQuNjcgOCAxNS41QzggMTYuMzMgOC42NyAxNyA5LjUgMTdDMTAuMzMgMTcgMTEgMTYuMzMgMTEgMTUuNUMxMSAxNC42NyAxMC4zMyAxNCA5LjUgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFzdHBhc3MgPSBcIk0xNCwxMkEyLDIgMCAwLDEgMTYsMTBBMiwyIDAgMCwxIDE4LDEyQTIsMiAwIDAsMSAxNiwxNEEyLDIgMCAwLDEgMTQsMTJNOCwxMkEyLDIgMCAwLDEgMTAsMTBBMiwyIDAgMCwxIDEyLDEyQTIsMiAwIDAsMSAxMCwxNEEyLDIgMCAwLDEgOCwxMk0yLDEyQTIsMiAwIDAsMSA0LDEwQTIsMiAwIDAsMSA2LDEyQTIsMiAwIDAsMSA0LDE0QTIsMiAwIDAsMSAyLDEyTTIyLDVIMjBWMTlIMjJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXRpdHVkZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMlM2LjUgMjIgMTIgMjIgMjIgMTcuNSAyMiAxMiAxNy41IDIgMTIgMk0xMiA0QzE1IDQgMTcuNSA1LjYgMTguOSA4SDUuMUM2LjUgNS42IDkgNCAxMiA0TTEyIDIwQzkgMjAgNi41IDE4LjQgNS4xIDE2SDE4LjlDMTcuNSAxOC40IDE1IDIwIDEyIDIwTTQuMyAxNEM0LjEgMTMuNCA0IDEyLjcgNCAxMlM0LjEgMTAuNiA0LjMgMTBIMTkuOEMyMCAxMC42IDIwLjEgMTEuMyAyMC4xIDEyUzIwIDEzLjQgMTkuOCAxNEg0LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGF1bmNoID0gXCJNMTQsM1Y1SDE3LjU5TDcuNzYsMTQuODNMOS4xNywxNi4yNEwxOSw2LjQxVjEwSDIxVjNNMTksMTlINVY1SDEyVjNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTJIMTlWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGF2YUxhbXAgPSBcIk0xMCwzTDgsMTZIMTZMMTQsM0gxME0xMS41LDUuNzVBMC43NSwwLjc1IDAgMCwxIDEyLjI1LDYuNUEwLjc1LDAuNzUgMCAwLDEgMTEuNSw3LjI1QTAuNzUsMC43NSAwIDAsMSAxMC43NSw2LjVBMC43NSwwLjc1IDAgMCwxIDExLjUsNS43NU0xMi41LDguNUExLDEgMCAwLDEgMTMuNSw5LjVBMSwxIDAgMCwxIDEyLjUsMTAuNUExLDEgMCAwLDEgMTEuNSw5LjVBMSwxIDAgMCwxIDEyLjUsOC41TTExLjUsMTJBMS41LDEuNSAwIDAsMSAxMywxMy41QTEuNSwxLjUgMCAwLDEgMTEuNSwxNUExLjUsMS41IDAgMCwxIDEwLDEzLjVBMS41LDEuNSAwIDAsMSAxMS41LDEyTTgsMTdMMTAsMTlMOCwyMUgxNkwxNCwxOUwxNiwxN0g4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVycyA9IFwiTTEyLDE2TDE5LjM2LDEwLjI3TDIxLDlMMTIsMkwzLDlMNC42MywxMC4yN00xMiwxOC41NEw0LjYyLDEyLjgxTDMsMTQuMDdMMTIsMjEuMDdMMjEsMTQuMDdMMTkuMzcsMTIuOEwxMiwxOC41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXllcnNNaW51cyA9IFwiTTIyLDE3VjE5SDE0VjE3SDIyTTExLDE2TDIsOUwxMSwyTDIwLDlMMTEsMTZNMTEsMTguNTRMMTIsMTcuNzVWMThDMTIsMTguNzEgMTIuMTIsMTkuMzkgMTIuMzUsMjBMMTEsMjEuMDdMMiwxNC4wN0wzLjYyLDEyLjgxTDExLDE4LjU0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVyc09mZiA9IFwiTTMuMjcsMUwyLDIuMjdMNi4yMiw2LjVMMyw5TDQuNjMsMTAuMjdMMTIsMTZMMTQuMSwxNC4zN0wxNS41MywxNS44TDEyLDE4LjU0TDQuNjMsMTIuODFMMywxNC4wN0wxMiwyMS4wN0wxNi45NSwxNy4yMkwyMC43MywyMUwyMiwxOS43M0wzLjI3LDFNMTkuMzYsMTAuMjdMMjEsOUwxMiwyTDkuMDksNC4yN0wxNi45NiwxMi4xNUwxOS4zNiwxMC4yN00xOS44MSwxNUwyMSwxNC4wN0wxOS41NywxMi42NEwxOC4zOCwxMy41NkwxOS44MSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXllcnNPZmZPdXRsaW5lID0gXCJNMTIsNC41M0wxMC44Myw1LjQ0TDkuNDEsNEwxMiwyTDIxLDlMMTcuMjgsMTEuODlMMTUuODUsMTAuNDdMMTcuNzQsOUwxMiw0LjUzTTIxLDE0LjA3TDIwLjEzLDE0Ljc1TDE4LjcsMTMuMzJMMTkuMzcsMTIuOEwyMSwxNC4wN00zLjQxLDAuODZMMjIuMTQsMTkuNTlMMjAuNzMsMjFMMTYuOTUsMTcuMjJMMTIsMjEuMDdMMywxNC4wN0w0LjYyLDEyLjgxTDEyLDE4LjU0TDE1LjUsMTUuNzlMMTQuMSwxNC4zN0wxMiwxNkwzLDlMNi4yMiw2LjVMMiwyLjI3TDMuNDEsMC44Nk0xMiwxMy40N0wxMi42NywxMi45NEw3LjY1LDcuOTJMNi4yNiw5TDEyLDEzLjQ3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVyc091dGxpbmUgPSBcIk0xMiwxOC41NEwxOS4zNywxMi44TDIxLDE0LjA3TDEyLDIxLjA3TDMsMTQuMDdMNC42MiwxMi44MUwxMiwxOC41NE0xMiwxNkwzLDlMMTIsMkwyMSw5TDEyLDE2TTEyLDQuNTNMNi4yNiw5TDEyLDEzLjQ3TDE3Ljc0LDlMMTIsNC41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYXllcnNQbHVzID0gXCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMTEsMTZMMiw5TDExLDJMMjAsOUwxMSwxNk0xMSwxOC41NEwxMiwxNy43NVYxOEMxMiwxOC43MSAxMi4xMiwxOS4zOSAxMi4zNSwyMEwxMSwyMS4wN0wyLDE0LjA3TDMuNjIsMTIuODFMMTEsMTguNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGF5ZXJzUmVtb3ZlID0gXCJNMTQuNDYsMTUuODhMMTUuODgsMTQuNDZMMTgsMTYuNTlMMjAuMTIsMTQuNDZMMjEuNTQsMTUuODhMMTkuNDEsMThMMjEuNTQsMjAuMTJMMjAuMTIsMjEuNTRMMTgsMTkuNDFMMTUuODgsMjEuNTRMMTQuNDYsMjAuMTJMMTYuNTksMThMMTQuNDYsMTUuODhNMTEsMTZMMiw5TDExLDJMMjAsOUwxMSwxNk0xMSwxOC41NEwxMiwxNy43NVYxOEMxMiwxOC43MSAxMi4xMiwxOS4zOSAxMi4zNSwyMEwxMSwyMS4wN0wyLDE0LjA3TDMuNjIsMTIuODFMMTEsMTguNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGF5ZXJzU2VhcmNoID0gXCJNMTkuMzEgMTguOUMxOS43NSAxOC4yMSAyMCAxNy4zOCAyMCAxNi41QzIwIDE0IDE4IDEyIDE1LjUgMTJTMTEgMTQgMTEgMTYuNSAxMyAyMSAxNS41IDIxQzE2LjM3IDIxIDE3LjE5IDIwLjc1IDE3Ljg4IDIwLjMyTDIxIDIzLjM5TDIyLjM5IDIyTDE5LjMxIDE4LjlNMTUuNSAxOUMxNC4xMiAxOSAxMyAxNy44OCAxMyAxNi41UzE0LjEyIDE0IDE1LjUgMTQgMTggMTUuMTIgMTggMTYuNSAxNi44OCAxOSAxNS41IDE5TTkuNTkgMTkuMkwzIDE0LjA3TDQuNjIgMTIuODFMOSAxNi4yMkM5IDE2LjMyIDkgMTYuNDEgOSAxNi41QzkgMTcuNDYgOS4yMiAxOC4zOCA5LjU5IDE5LjJNNC42MyAxMC4yN0wzIDlMMTIgMkwyMSA5TDE5LjM2IDEwLjI3TDE4LjY1IDEwLjgyQzE3LjcyIDEwLjMgMTYuNjQgMTAgMTUuNSAxMEMxMi43OSAxMCAxMC40NiAxMS42OCA5LjUgMTQuMDVMNC42MyAxMC4yN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYXllcnNTZWFyY2hPdXRsaW5lID0gXCJNMTkuMzEgMTguOUMxOS43NSAxOC4yMSAyMCAxNy4zOCAyMCAxNi41QzIwIDE0IDE4IDEyIDE1LjUgMTJTMTEgMTQgMTEgMTYuNSAxMyAyMSAxNS41IDIxQzE2LjM3IDIxIDE3LjE5IDIwLjc1IDE3Ljg4IDIwLjMyTDIxIDIzLjM5TDIyLjM5IDIyTDE5LjMxIDE4LjlNMTUuNSAxOUMxNC4xMiAxOSAxMyAxNy44OCAxMyAxNi41UzE0LjEyIDE0IDE1LjUgMTQgMTggMTUuMTIgMTggMTYuNSAxNi44OCAxOSAxNS41IDE5TTkuNTkgMTkuMkwzIDE0LjA3TDQuNjIgMTIuODFMOSAxNi4yMkM5IDE2LjMyIDkgMTYuNDEgOSAxNi41QzkgMTcuNDYgOS4yMiAxOC4zOCA5LjU5IDE5LjJNOS41IDE0LjA0TDMgOUwxMiAyTDIxIDlMMTguNjYgMTAuODJDMTcuOTYgMTAuNDQgMTcuMTkgMTAuMTggMTYuMzcgMTAuMDdMMTcuNzQgOUwxMiA0LjUzTDYuMjYgOUwxMC41MyAxMi4zMkMxMC4xIDEyLjg0IDkuNzQgMTMuNDIgOS41IDE0LjA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVyc1RyaXBsZSA9IFwiTTEyIDBMMyA3TDQuNjMgOC4yN0wxMiAxNEwxOS4zNiA4LjI3TDIxIDdMMTIgME0xOS4zNyAxMC43M0wxMiAxNi40N0w0LjYyIDEwLjc0TDMgMTJMMTIgMTlMMjEgMTJMMTkuMzcgMTAuNzNNMTkuMzcgMTUuNzNMMTIgMjEuNDdMNC42MiAxNS43NEwzIDE3TDEyIDI0TDIxIDE3TDE5LjM3IDE1LjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVyc1RyaXBsZU91dGxpbmUgPSBcIk0xMiAxNi41NEwxOS4zNyAxMC44TDIxIDEyLjA3TDEyIDE5LjA3TDMgMTIuMDdMNC42MiAxMC44MUwxMiAxNi41NE0xMiAxNEwzIDdMMTIgMEwyMSA3TDEyIDE0TTEyIDIuNTNMNi4yNiA3TDEyIDExLjQ3TDE3Ljc0IDdMMTIgMi41M00xMiAyMS40N0wxOS4zNyAxNS43M0wyMSAxN0wxMiAyNEwzIDE3TDQuNjIgMTUuNzRMMTIgMjEuNDdcIjtcclxuZXhwb3J0IHZhciBtZGlMZWFkUGVuY2lsID0gXCJNMTYuODQsMi43M0MxNi40NSwyLjczIDE2LjA3LDIuODggMTUuNzcsMy4xN0wxMy42NSw1LjI5TDE4Ljk1LDEwLjZMMjEuMDcsOC41QzIxLjY3LDcuODkgMjEuNjcsNi45NCAyMS4wNyw2LjM2TDE3LjksMy4xN0MxNy42LDIuODggMTcuMjIsMi43MyAxNi44NCwyLjczTTEyLjk0LDZMNC44NCwxNC4xMUw3LjQsMTQuMzlMNy41OCwxNi42OEw5Ljg2LDE2Ljg1TDEwLjE1LDE5LjQxTDE4LjI1LDExLjNNNC4yNSwxNS4wNEwyLjUsMjEuNzNMOS4yLDE5Ljk0TDguOTYsMTcuNzhMNi42NSwxNy42MUw2LjQ3LDE1LjI5XCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVhZiA9IFwiTTE3LDhDOCwxMCA1LjksMTYuMTcgMy44MiwyMS4zNEw1LjcxLDIyTDYuNjYsMTkuN0M3LjE0LDE5Ljg3IDcuNjQsMjAgOCwyMEMxOSwyMCAyMiwzIDIyLDNDMjEsNSAxNCw1LjI1IDksNi4yNUM0LDcuMjUgMiwxMS41IDIsMTMuNUMyLDE1LjUgMy43NSwxNy4yNSAzLjc1LDE3LjI1QzcsOCAxNyw4IDE3LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVhZk1hcGxlID0gXCJNMjEuNzksMTNMMTYsMTZMMTcsMThMMTMsMTcuMjVWMjFIMTFWMTcuMjVMNywxOEw4LDE2TDIuMjEsMTNMMy4yMSwxMS4yN0wxLjYxLDhMNS4yMSw3Ljc3TDYuMjEsNkw5LjYzLDkuOUw4LDVIMTBMMTIsMkwxNCw1SDE2TDE0LjM3LDkuOUwxNy43OSw2TDE4Ljc5LDcuNzNMMjIuMzksNy45NkwyMC43OSwxMS4xOUwyMS43OSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlMZWFmTWFwbGVPZmYgPSBcIk0xOC4xMSAxNC45MUw4LjIgNUgxMEwxMiAyTDE0IDVIMTZMMTQuMzcgOS45TDE3Ljc5IDZMMTguNzkgNy43M0wyMi4zOSA3Ljk2TDIwLjc5IDExLjE5TDIxLjc5IDEzTDE4LjExIDE0LjkxTTIuMzkgMS43M0wxLjExIDNMNS40NSA3LjM0TDUuMjEgNy43N0wxLjYxIDhMMy4yMSAxMS4yN0wyLjIxIDEzTDggMTZMNyAxOEwxMSAxNy4yNVYyMUgxM1YxNy4yNUwxNS45MSAxNy44TDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M1pcIjtcclxuZXhwb3J0IHZhciBtZGlMZWFmT2ZmID0gXCJNMjAuODQgMjIuNzNMMTUuMTQgMTcuMDNDMTMuMjYgMTguNzkgMTAuOTIgMjAgOCAyMEM3LjY0IDIwIDcuMTQgMTkuODcgNi42NiAxOS43TDUuNzEgMjJMMy44MiAyMS4zNEM1LjE1IDE4LjAzIDYuNSAxNC4zMiA5LjY2IDExLjU1TDguNzcgMTAuNjZDNi43NiAxMi4wMyA0Ljg2IDE0LjEgMy43NSAxNy4yNUMzLjc1IDE3LjI1IDIgMTUuNSAyIDEzLjVDMiAxMiAzLjEyIDkuMzIgNS43MiA3LjYxTDEuMTEgM0wyLjM5IDEuNzNDMi4zOSAxLjczIDE2LjM5IDE1Ljc0IDE2LjM5IDE1Ljc0TDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTE3IDhDMTUuMzUgOC4zNyAxMy45MyA4Ljg4IDEyLjcgOS41TDE3LjUgMTQuMjlDMjAuODcgOS4zNSAyMiAzIDIyIDNDMjEuMDMgNC45NSAxNC4zNSA1LjI0IDkuMzggNi4xOEwxMi4xNSA4Ljk1QzE0LjgxIDggMTcgOCAxNyA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlYWsgPSBcIk02LDNIM1Y2QTMsMyAwIDAsMCA2LDNNMTQsM0gxMkE5LDkgMCAwLDEgMywxMlYxNEM5LjA4LDE0IDE0LDkuMDcgMTQsM00xMCwzSDhBNSw1IDAgMCwxIDMsOFYxMEE3LDcgMCAwLDAgMTAsM00xMCwyMUgxMkE5LDkgMCAwLDEgMjEsMTJWMTBBMTEsMTEgMCAwLDAgMTAsMjFNMTgsMjFIMjFWMThBMywzIDAgMCwwIDE4LDIxTTE0LDIxSDE2QTUsNSAwIDAsMSAyMSwxNlYxNEE3LDcgMCAwLDAgMTQsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVha09mZiA9IFwiTTEwLDNIOEM4LDMuMzcgNy45NiwzLjcyIDcuODgsNC4wNkw5LjQ3LDUuNjVDOS44MSw0Ljg0IDEwLDMuOTQgMTAsM00zLDQuMjdMNS44NCw3LjExQzUuMDMsNy42NyA0LjA2LDggMyw4VjEwQzQuNjEsMTAgNi4wOSw5LjQ1IDcuMjcsOC41NEw4LjcsOS45N0M3LjE0LDExLjI0IDUuMTYsMTIgMywxMlYxNEM1LjcxLDE0IDguMTksMTMgMTAuMTEsMTEuMzhMMTIuNjEsMTMuODhDMTEsMTUuODEgMTAsMTguMjkgMTAsMjFIMTJDMTIsMTguODQgMTIuNzYsMTYuODYgMTQuMDMsMTUuMzFMMTUuNDYsMTYuNzRDMTQuNTUsMTcuOTEgMTQsMTkuMzkgMTQsMjFIMTZDMTYsMTkuOTQgMTYuMzMsMTguOTcgMTYuODksMTguMTZMMTkuNzMsMjFMMjEsMTkuNzNMNC4yNywzTDMsNC4yN00xNCwzSDEyQzEyLDQuNSAxMS42Myw1LjkxIDExLDcuMTZMMTIuNDQsOC42MkMxMy40Miw3IDE0LDUuMDYgMTQsM00xOS45NCwxNi4xMkMyMC4yOCwxNi4wNCAyMC42MywxNiAyMSwxNlYxNEMyMC4wNiwxNCAxOS4xNiwxNC4xOSAxOC4zNCwxNC41TDE5Ljk0LDE2LjEyTTE1LjM4LDExLjU2TDE2Ljg0LDEzQzE4LjA5LDEyLjM3IDE5LjUsMTIgMjEsMTJWMTBDMTguOTQsMTAgMTcsMTAuNTggMTUuMzgsMTEuNTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVkT2ZmID0gXCJNMTIsNkE0LDQgMCAwLDAgOCwxMFYxNkg2VjE4SDlWMjNIMTFWMThIMTNWMjNIMTVWMThIMThWMTZIMTZWMTBBNCw0IDAgMCwwIDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVkT24gPSBcIk0xMSwwVjRIMTNWMEgxMU0xOC4zLDIuMjlMMTUuMjQsNS4yOUwxNi42NCw2LjcxTDE5LjcsMy43MUwxOC4zLDIuMjlNNS43MSwyLjI5TDQuMjksMy43MUw3LjI5LDYuNzFMOC43MSw1LjI5TDUuNzEsMi4yOU0xMiw2QTQsNCAwIDAsMCA4LDEwVjE2SDZWMThIOVYyM0gxMVYxOEgxM1YyM0gxNVYxOEgxOFYxNkgxNlYxMEE0LDQgMCAwLDAgMTIsNk0yLDlWMTFINlY5SDJNMTgsOVYxMUgyMlY5SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlZE91dGxpbmUgPSBcIk0xMiw2QTQsNCAwIDAsMCA4LDEwVjE2SDZWMThIOVYyM0gxMVYxOEgxM1YyM0gxNVYxOEgxOFYxNkgxNlYxMEE0LDQgMCAwLDAgMTIsNk0xMiw4QTIsMiAwIDAsMSAxNCwxMFYxNUgxMFYxMEEyLDIgMCAwLDEgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlMZWRTdHJpcCA9IFwiTTIuODEsOC40NkwxNC44MywyMC41TDE1LjU0LDE5Ljc4TDE2Ljk1LDIxLjE5TDE4LjM2LDE5Ljc4TDE2Ljk1LDE4LjM2TDE4LjM2LDE2Ljk1TDE5Ljc4LDE4LjM2TDIxLjE5LDE2Ljk1TDE5Ljc4LDE1LjU0TDIwLjUsMTQuODNMOC40NiwyLjgxTDIuODEsOC40Nk01LjY0LDguNDZMOC40Niw1LjY0TDE3LjY2LDE0LjgzTDE0LjgzLDE3LjY2TDUuNjQsOC40Nk03LjA1LDguNDZMOC40Niw5Ljg4TDkuODgsOC40Nkw4LjQ2LDcuMDVMNy4wNSw4LjQ2TTkuMTcsMTAuNTlMMTAuNTksMTJMMTIsMTAuNTlMMTAuNTksOS4xN0w5LjE3LDEwLjU5TTExLjI5LDEyLjcxTDEyLjcxLDE0LjEyTDE0LjEyLDEyLjcxTDEyLjcxLDExLjI5TDExLjI5LDEyLjcxTTEzLjQxLDE0LjgzTDE0LjgzLDE2LjI0TDE2LjI0LDE0LjgzTDE0LjgzLDEzLjQxTDEzLjQxLDE0LjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlZFN0cmlwVmFyaWFudCA9IFwiTTIuOTUgM0wyIDYuOTFMMTkuMzQgMTEuMjVMMjAuMjkgNy4zNEwyLjk1IDNNNi4wOSA2Ljg5TDQuMTYgNi40MUw0LjY0IDQuNDZMNi41NyA0Ljk0TDYuMDkgNi44OU05Ljk0IDcuODZMOCA3LjM4TDguNSA1LjQyTDEwLjQyIDUuOTFMOS45NCA3Ljg2TTEzLjggOC44MkwxMS44NyA4LjM0TDEyLjM1IDYuMzlMMTQuMjcgNi44N0wxMy44IDguODJNMTcuNjUgOS43OUwxNS43MiA5LjMxTDE2LjIgNy4zNUwxOC4xMyA3Ljg0TDE3LjY1IDkuNzlNNC42NiAxMi43NUwzLjcxIDE2LjY2TDIxLjA1IDIxTDIyIDE3LjFMNC42NiAxMi43NU03LjggMTYuNjVMNS44OCAxNi4xNkw2LjM1IDE0LjIxTDguMjggMTQuNjlMNy44IDE2LjY1TTExLjY1IDE3LjYxTDkuNzMgMTcuMTNMMTAuMiAxNS4xOEwxMi4xMyAxNS42NkwxMS42NSAxNy42MU0xNS41IDE4LjU4TDEzLjU4IDE4LjA5TDE0LjA2IDE2LjE0TDE2IDE2LjYyTDE1LjUgMTguNThNMTkuMzYgMTkuNTRMMTcuNDMgMTkuMDZMMTcuOTEgMTcuMTFMMTkuODQgMTcuNTlMMTkuMzYgMTkuNTRNNi4yNSAxMi4xMUwxMSAxMC4yTDE3Ljc1IDExLjg5TDEzIDEzLjhMNi4yNSAxMi4xMVpcIjtcclxuZXhwb3J0IHZhciBtZGlMZWRWYXJpYW50T2ZmID0gXCJNMTIsM0MxMC4wNSwzIDguNDMsNC40IDguMDgsNi4yNUwxNi44MiwxNUgxOFYxM0gxNlY3QTQsNCAwIDAsMCAxMiwzTTMuMjgsNEwyLDUuMjdMOCwxMS4yN1YxM0g2VjE1SDlWMjFIMTFWMTVIMTEuNzNMMTMsMTYuMjdWMjFIMTVWMTguMjdMMTguNzMsMjJMMjAsMjAuNzJMMTUsMTUuNzJMOCw4LjcyTDMuMjgsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlMZWRWYXJpYW50T24gPSBcIk0xMiwzQTQsNCAwIDAsMCA4LDdWMTNINlYxNUg5VjIxSDExVjE1SDEzVjIxSDE1VjE1SDE4VjEzSDE2VjdBNCw0IDAgMCwwIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVkVmFyaWFudE91dGxpbmUgPSBcIk0xMiwzQTQsNCAwIDAsMCA4LDdWMTNINlYxNUg5VjIxSDExVjE1SDEzVjIxSDE1VjE1SDE4VjEzSDE2VjdBNCw0IDAgMCwwIDEyLDNNMTIsNUEyLDIgMCAwLDEgMTQsN1YxMkgxMFY3QTIsMiAwIDAsMSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlZWsgPSBcIk0xMCAyVjUuNTVMMTIgNy41NUwxNCA1LjU1VjJIMTBNNi4zNCA0TDMuODcgNi41TDE1IDE3LjYyVjEyLjY3TDYuMzQgNE0xNy42NiA0TDEzLjA2IDguNjFMMTUuNTQgMTEuMDlMMjAuMTMgNi41TDE3LjY2IDRNOSAxMy43NFYyMEEyIDIgMCAwIDAgMTEgMjJIMTNBMiAyIDAgMCAwIDE1IDIwVjE5Ljc0TDEzIDE3Ljc0VjIwSDExVjE1Ljc0TDkgMTMuNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVzc1RoYW4gPSBcIk0xOC41LDQuMTRMMTkuNSw1Ljg2TDguOTcsMTJMMTkuNSwxOC4xNEwxOC41LDE5Ljg2TDUsMTJMMTguNSw0LjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlc3NUaGFuT3JFcXVhbCA9IFwiTTE4LjUsMi4yN0w1LDEwLjE0TDE4LjUsMThMMTkuNSwxNi4yN0w4Ljk3LDEwLjE0TDE5LjUsNEwxOC41LDIuMjdNNSwyMFYyMkgyMFYyMEg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpYnJhcnkgPSBcIk0xMiw4QTMsMyAwIDAsMCAxNSw1QTMsMyAwIDAsMCAxMiwyQTMsMyAwIDAsMCA5LDVBMywzIDAgMCwwIDEyLDhNMTIsMTEuNTRDOS42NCw5LjM1IDYuNSw4IDMsOFYxOUM2LjUsMTkgOS42NCwyMC4zNSAxMiwyMi41NEMxNC4zNiwyMC4zNSAxNy41LDE5IDIxLDE5VjhDMTcuNSw4IDE0LjM2LDkuMzUgMTIsMTEuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlicmFyeVNoZWx2ZXMgPSBcIk0xOS41LDlWMS41SDE2LjVWOUgxMy41VjEuNUgxMC41VjlINy41VjEuNUg0LjY1VjlIM1YxMC41SDIxVjlIMTkuNU0xOS41LDEzLjVIMTYuNVYyMUgxMy41VjEzLjVIMTAuNVYyMUg3LjVWMTMuNUg0LjY1VjIxSDNWMjIuNUgyMVYyMUgxOS41VjEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGljZW5zZSA9IFwiTTkgMTBBMy4wNCAzLjA0IDAgMCAxIDEyIDdBMy4wNCAzLjA0IDAgMCAxIDE1IDEwQTMuMDQgMy4wNCAwIDAgMSAxMiAxM0EzLjA0IDMuMDQgMCAwIDEgOSAxME0xMiAxOUwxNiAyMFYxNi45MkE3LjU0IDcuNTQgMCAwIDEgMTIgMThBNy41NCA3LjU0IDAgMCAxIDggMTYuOTJWMjBNMTIgNEE1Ljc4IDUuNzggMCAwIDAgNy43NiA1Ljc0QTUuNzggNS43OCAwIDAgMCA2IDEwQTUuNzggNS43OCAwIDAgMCA3Ljc2IDE0LjIzQTUuNzggNS43OCAwIDAgMCAxMiAxNkE1Ljc4IDUuNzggMCAwIDAgMTYuMjQgMTQuMjNBNS43OCA1Ljc4IDAgMCAwIDE4IDEwQTUuNzggNS43OCAwIDAgMCAxNi4yNCA1Ljc0QTUuNzggNS43OCAwIDAgMCAxMiA0TTIwIDEwQTguMDQgOC4wNCAwIDAgMSAxOS40MyAxMi44QTcuODQgNy44NCAwIDAgMSAxOCAxNS4yOFYyM0wxMiAyMUw2IDIzVjE1LjI4QTcuOSA3LjkgMCAwIDEgNCAxMEE3LjY4IDcuNjggMCAwIDEgNi4zMyA0LjM2QTcuNzMgNy43MyAwIDAgMSAxMiAyQTcuNzMgNy43MyAwIDAgMSAxNy42NyA0LjM2QTcuNjggNy42OCAwIDAgMSAyMCAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMaWZlYnVveSA9IFwiTTE5Ljc5LDE1LjQxQzIwLjc0LDEzLjI0IDIwLjc0LDEwLjc1IDE5Ljc5LDguNTlMMTcuMDUsOS44M0MxNy42NSwxMS4yMSAxNy42NSwxMi43OCAxNy4wNiwxNC4xN0wxOS43OSwxNS40MU0xNS40Miw0LjIxQzEzLjI1LDMuMjYgMTAuNzYsMy4yNiA4LjU5LDQuMjFMOS44Myw2Ljk0QzExLjIyLDYuMzUgMTIuNzksNi4zNSAxNC4xOCw2Ljk1TDE1LjQyLDQuMjFNNC4yMSw4LjU4QzMuMjYsMTAuNzYgMy4yNiwxMy4yNCA0LjIxLDE1LjQyTDYuOTUsMTQuMTdDNi4zNSwxMi43OSA2LjM1LDExLjIxIDYuOTUsOS44Mkw0LjIxLDguNThNOC41OSwxOS43OUMxMC43NiwyMC43NCAxMy4yNSwyMC43NCAxNS40MiwxOS43OEwxNC4xOCwxNy4wNUMxMi44LDE3LjY1IDExLjIyLDE3LjY1IDkuODQsMTcuMDZMOC41OSwxOS43OU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw4QTQsNCAwIDAsMCA4LDEyQTQsNCAwIDAsMCAxMiwxNkE0LDQgMCAwLDAgMTYsMTJBNCw0IDAgMCwwIDEyLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRTd2l0Y2ggPSBcIk03LDFBMiwyIDAgMCwwIDUsM1YyMUEyLDIgMCAwLDAgNywyM0gxN0EyLDIgMCAwLDAgMTksMjFWM0EyLDIgMCAwLDAgMTcsMUg3TTcsM0gxN1YyMUg3VjNNOSw2VjE4SDE1VjZIOU0xMCw3SDE0VjExSDEwVjdNMTAsMTNIMTRWMTdIMTBWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiID0gXCJNMTIsMkE3LDcgMCAwLDAgNSw5QzUsMTEuMzggNi4xOSwxMy40NyA4LDE0Ljc0VjE3QTEsMSAwIDAsMCA5LDE4SDE1QTEsMSAwIDAsMCAxNiwxN1YxNC43NEMxNy44MSwxMy40NyAxOSwxMS4zOCAxOSw5QTcsNyAwIDAsMCAxMiwyTTksMjFBMSwxIDAgMCwwIDEwLDIySDE0QTEsMSAwIDAsMCAxNSwyMVYyMEg5VjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkNmbCA9IFwiTTEwLjUgMkMxMS44OCAyIDEzIDMuMTIgMTMgNC41VjE0SDE0VjQuNDdDMTQgMy41NiAxMy42MyAyLjcgMTMgMi4wNUMxMy4xNyAyIDEzLjMzIDIgMTMuNSAyQzE0Ljg4IDIgMTYgMy4xMiAxNiA0LjVWMTRIMTdWMTdDMTcgMTcuNTUgMTYuNTUgMTggMTYgMThIOEM3LjQ1IDE4IDcgMTcuNTUgNyAxN1YxNEg4VjQuNUM4IDMuMTIgOS4xMiAyIDEwLjUgMk0xMC41IDRDMTAuMjIgNCAxMCA0LjIyIDEwIDQuNVYxNEgxMVY0LjVDMTEgNC4yMiAxMC43OCA0IDEwLjUgNE05IDIwSDE1VjIxQzE1IDIxLjU1IDE0LjU1IDIyIDE0IDIySDEwQzkuNDUgMjIgOSAyMS41NSA5IDIxVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkNmbE9mZiA9IFwiTTE0IDQuNDdDMTQgMy41NiAxMy42MyAyLjcgMTMgMi4wNUMxMy4xNyAyIDEzLjMzIDIgMTMuNSAyQzE0Ljg4IDIgMTYgMy4xMiAxNiA0LjVWMTRIMTdWMTUuMThMMTQgMTIuMThWNC41TDE0IDQuNDdNMTAgNC41QzEwIDQuMjIgMTAuMjIgNCAxMC41IDRTMTEgNC4yMiAxMSA0LjVWOS4xOEwxMyAxMS4xOFY0LjVDMTMgMy4xMiAxMS44OCAyIDEwLjUgMlM4IDMuMTIgOCA0LjVWNi4xOEwxMCA4LjE4VjQuNU05IDIxQzkgMjEuNTUgOS40NSAyMiAxMCAyMkgxNEMxNC41NSAyMiAxNSAyMS41NSAxNSAyMVYyMEg5VjIxTTIwIDIwLjcyTDE4LjczIDIyTDE0LjczIDE4SDhDNy40NSAxOCA3IDE3LjU1IDcgMTdWMTRIOFYxMS4yN0wyIDUuMjdMMy4yOCA0TDIwIDIwLjcyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkNmbFNwaXJhbCA9IFwiTTExIDJDMTAuODQgMiAxMC42OSAyLjAzIDEwLjU1IDIuMUw4LjU1IDMuMUM3LjU2IDMuNjYgOCA1IDkgNUM5LjE2IDUgOS4zMiA0Ljk1IDkuNDUgNC45TDExLjQ1IDMuOUMxMi40MyAzLjM2IDEyIDIgMTEgMk0xNSA0QzE0LjgzIDQgMTQuNjkgNC4wMyAxNC41NSA0LjFMOC41NSA3LjFDNy41NiA3LjY4IDggOSA5IDlDOS4xOCA5IDkuMzIgOC45NSA5LjQ1IDguOUwxNS40NSA1LjlDMTYuNDEgNS40MyAxNiA0IDE1IDRNMTUgOEMxNC44NCA4IDE0LjY5IDguMDMgMTQuNTUgOC4xTDguNyAxMS4wM0M4LjIgMTEuMjUgOCAxMS42IDggMTJWMTRIN1YxN0M3IDE3LjU1IDcuNDQgMTggOCAxOEgxNkMxNi41NSAxOCAxNyAxNy41NSAxNyAxN1YxNEgxNlYxM0MxNiAxMi40NCAxNS41NSAxMiAxNSAxMkMxNC40NSAxMiAxNCAxMi40NSAxNCAxM1YxNEgxMFYxMi42MkwxNS40NSA5LjlDMTYuNDIgOS4zNCAxNiA4IDE1IDhNOSAyMFYyMUM5IDIxLjU3IDkuNDYgMjIgMTAgMjJIMTRDMTQuNTYgMjIgMTUgMjEuNTUgMTUgMjFWMjBcIjtcclxuZXhwb3J0IHZhciBtZGlMaWdodGJ1bGJDZmxTcGlyYWxPZmYgPSBcIk0xNS40NSA5LjlMMTMuODggMTAuNjhMMTIuMzggOS4xOEwxNC41NSA4LjFDMTQuNjkgOC4wMyAxNC44NCA4IDE1IDhDMTYgOCAxNi40MiA5LjM0IDE1LjQ1IDkuOU0xMS4yMiA4TDE1LjQ1IDUuOUMxNi40MSA1LjQzIDE2IDQgMTUgNEMxNC44MyA0IDE0LjY5IDQuMDMgMTQuNTUgNC4xTDkuNzIgNi41TDExLjIyIDhNMjAuODQgMjIuNzNMMTYuMDkgMThIOEM3LjQ0IDE4IDcgMTcuNTUgNyAxN1YxNEg4VjEyQzggMTEuNiA4LjIgMTEuMjUgOC43IDExLjAzTDkgMTAuODhMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xMi4xMSAxNEwxMC41IDEyLjM4TDEwIDEyLjYyVjE0SDEyLjExTTkgMjFDOSAyMS41NyA5LjQ2IDIyIDEwIDIySDE0QzE0LjU2IDIyIDE1IDIxLjU1IDE1IDIxVjIwSDlWMjFNOSA1QzkuMTYgNSA5LjMyIDQuOTUgOS40NSA0LjlMMTEuNDUgMy45QzEyLjQzIDMuMzYgMTIgMiAxMSAyQzEwLjg0IDIgMTAuNjkgMi4wMyAxMC41NSAyLjFMOC41NSAzLjFDNy41NiAzLjY2IDggNSA5IDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiR3JvdXAgPSBcIk0xNSAxNFYxNkExIDEgMCAwIDEgMTQgMTdIMTBBMSAxIDAgMCAxIDkgMTZWMTRBNSA1IDAgMSAxIDE1IDE0TTE0IDE4SDEwVjE5QTEgMSAwIDAgMCAxMSAyMEgxM0ExIDEgMCAwIDAgMTQgMTlNNyAxOVYxOEg1VjE5QTEgMSAwIDAgMCA2IDIwSDcuMTdBMi45MyAyLjkzIDAgMCAxIDcgMTlNNSAxMEE2Ljc5IDYuNzkgMCAwIDEgNS42OCA3QTQgNCAwIDAgMCA0IDE0LjQ1VjE2QTEgMSAwIDAgMCA1IDE3SDdWMTQuODhBNi45MiA2LjkyIDAgMCAxIDUgMTBNMTcgMThWMTlBMi45MyAyLjkzIDAgMCAxIDE2LjgzIDIwSDE4QTEgMSAwIDAgMCAxOSAxOVYxOE0xOC4zMiA3QTYuNzkgNi43OSAwIDAgMSAxOSAxMEE2LjkyIDYuOTIgMCAwIDEgMTcgMTQuODhWMTdIMTlBMSAxIDAgMCAwIDIwIDE2VjE0LjQ1QTQgNCAwIDAgMCAxOC4zMiA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkdyb3VwT2ZmID0gXCJNMjAuODQgMjIuNzNMMTguMDkgMjBDMTguMDYgMjAgMTguMDMgMjAgMTggMjBIMTYuODNDMTYuOTQgMTkuNjggMTcgMTkuMzQgMTcgMTlWMTguODlMMTQuNzUgMTYuNjRDMTQuNTcgMTYuODYgMTQuMzEgMTcgMTQgMTdIMTBDOS40NSAxNyA5IDE2LjU1IDkgMTZWMTRDNy40IDEyLjggNi43NCAxMC44NCA3LjEyIDlMNS41IDcuNEM1LjE4IDguMjMgNSA5LjExIDUgMTBDNSAxMS44MyA1LjcyIDEzLjU4IDcgMTQuODhWMTdINUM0LjQ1IDE3IDQgMTYuNTUgNCAxNlYxNC40NUMyLjg2IDEzLjc5IDIuMTIgMTIuNjIgMiAxMS4zMUMxLjg1IDkuMjcgMy4yNSA3LjUgNS4yIDcuMDlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xNSA2QzEzLjIyIDQuNjcgMTAuODYgNC43MiA5LjEzIDUuOTNMMTYuMDggMTIuODhDMTcuNjMgMTAuNjcgMTcuMTcgNy42MyAxNSA2TTE5Ljc5IDE2LjU5QzE5LjkxIDE2LjQyIDIwIDE2LjIyIDIwIDE2VjE0LjQ1QzIxLjkxIDEzLjM0IDIyLjU3IDEwLjkgMjEuNDYgOUMyMC44IDcuODUgMTkuNjMgNy4xMSAxOC4zMiA3QzE4Ljc3IDcuOTQgMTkgOC45NiAxOSAxMEMxOSAxMS41NyAxOC40NyAxMy4wOSAxNy41IDE0LjMxTDE5Ljc5IDE2LjU5TTEwIDE5QzEwIDE5LjU1IDEwLjQ1IDIwIDExIDIwSDEzQzEzLjU1IDIwIDE0IDE5LjU1IDE0IDE5VjE4SDEwVjE5TTcgMThINVYxOUM1IDE5LjU1IDUuNDUgMjAgNiAyMEg3LjE3QzcuMDYgMTkuNjggNyAxOS4zNCA3IDE5VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkdyb3VwT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNS4yIDcuMDlDMy4yNSA3LjUgMS44NSA5LjI3IDIgMTEuMzFDMi4xMiAxMi42MiAyLjg2IDEzLjc5IDQgMTQuNDVWMTZDNCAxNi41NSA0LjQ1IDE3IDUgMTdIN1YxNC44OEM1LjcyIDEzLjU4IDUgMTEuODMgNSAxMEM1IDkuMTEgNS4xOCA4LjIzIDUuNSA3LjRMNy4xMiA5QzYuNzQgMTAuODQgNy40IDEyLjggOSAxNFYxNkM5IDE2LjU1IDkuNDUgMTcgMTAgMTdIMTRDMTQuMzEgMTcgMTQuNTcgMTYuODYgMTQuNzUgMTYuNjRMMTcgMTguODlWMTlDMTcgMTkuMzQgMTYuOTQgMTkuNjggMTYuODMgMjBIMThDMTguMDMgMjAgMTguMDYgMjAgMTguMDkgMjBMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNOS4yMyAxMS4xMkwxMC44NyAxMi43NkMxMC4xMSAxMi40NiA5LjUzIDExLjg2IDkuMjMgMTEuMTJNMTMgMTVIMTFWMTIuODlMMTMgMTQuODlWMTVNMTAuNTcgNy4zN0w5LjEzIDUuOTNDMTAuODYgNC43MiAxMy4yMiA0LjY3IDE1IDZDMTYuMjYgNi45NCAxNyA4LjQzIDE3IDEwQzE3IDExLjA1IDE2LjY3IDEyLjA1IDE2LjA4IDEyLjg4TDE0LjYzIDExLjQzQzE0Ljg2IDExIDE1IDEwLjUgMTUgMTBDMTUgOC4zNCAxMy42NyA3IDEyIDdDMTEuNSA3IDExIDcuMTQgMTAuNTcgNy4zN00xNy41IDE0LjMxQzE4LjQ3IDEzLjA5IDE5IDExLjU3IDE5IDEwQzE5IDguOTYgMTguNzcgNy45NCAxOC4zMiA3QzE5LjYzIDcuMTEgMjAuOCA3Ljg1IDIxLjQ2IDlDMjIuNTcgMTAuOSAyMS45MSAxMy4zNCAyMCAxNC40NVYxNkMyMCAxNi4yMiAxOS45MSAxNi40MiAxOS43OSAxNi41OUwxNy41IDE0LjMxTTEwIDE4SDE0VjE5QzE0IDE5LjU1IDEzLjU1IDIwIDEzIDIwSDExQzEwLjQ1IDIwIDEwIDE5LjU1IDEwIDE5VjE4TTcgMTlDNyAxOS4zNCA3LjA2IDE5LjY4IDcuMTcgMjBINkM1LjQ1IDIwIDUgMTkuNTUgNSAxOVYxOEg3VjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkdyb3VwT3V0bGluZSA9IFwiTTcgMTlBMi45MyAyLjkzIDAgMCAwIDcuMTcgMjBINkExIDEgMCAwIDEgNSAxOVYxOEg3TTEwIDE5QTEgMSAwIDAgMCAxMSAyMEgxM0ExIDEgMCAwIDAgMTQgMTlWMThIMTBNNCAxNkExIDEgMCAwIDAgNSAxN0g3VjE0Ljg4QTYuOTIgNi45MiAwIDAgMSA1IDEwQTYuNzkgNi43OSAwIDAgMSA1LjY4IDdBNCA0IDAgMCAwIDQgMTQuNDVNMTcgMTlBMi45MyAyLjkzIDAgMCAxIDE2LjgzIDIwSDE4QTEgMSAwIDAgMCAxOSAxOVYxOEgxN00xNyAxMEE1IDUgMCAwIDEgMTUgMTRWMTZBMSAxIDAgMCAxIDE0IDE3SDEwQTEgMSAwIDAgMSA5IDE2VjE0QTUgNSAwIDEgMSAxNyAxME0xNSAxMEEzIDMgMCAxIDAgMTEgMTIuODJWMTVIMTNWMTIuODJBMyAzIDAgMCAwIDE1IDEwTTE4LjMyIDdBNi43OSA2Ljc5IDAgMCAxIDE5IDEwQTYuOTIgNi45MiAwIDAgMSAxNyAxNC44OFYxN0gxOUExIDEgMCAwIDAgMjAgMTZWMTQuNDVBNCA0IDAgMCAwIDE4LjMyIDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiTXVsdGlwbGUgPSBcIk0xNyAxNlYxOEMxNyAxOC41NSAxNi41MyAxOSAxNiAxOUgxMkMxMS40MiAxOSAxMSAxOC41NSAxMSAxOFYxNkM4Ljc3IDE0LjM0IDguMzIgMTEuMjEgMTAgOVMxNC43NyA2LjM0IDE3IDggMTkuNjMgMTIuNzkgMTggMTVDMTcuNjkgMTUuMzggMTcuMzUgMTUuNzIgMTcgMTZNMTYgMjBIMTJWMjFDMTIgMjEuNTUgMTIuNDIgMjIgMTMgMjJIMTVDMTUuNTMgMjIgMTYgMjEuNTUgMTYgMjFNNy42NiAxNUg3VjE2QzcgMTYuNTUgNy40MiAxNyA4IDE3SDlWMTYuODhDOC40NCAxNi4zMyA4IDE1LjcgNy42NiAxNU0xMy41OCA1QzEyLjQ2IDIuNDcgOS41IDEuMzMgNyAyLjQ1UzMuMzEgNi41IDQuNDMgOS4wNEM0Ljc3IDkuODEgNS4zIDEwLjUgNiAxMVYxM0M2IDEzLjU1IDYuNDIgMTQgNyAxNEg3LjI4QzcuMDcgMTMuMzUgNi45NyAxMi42OCA3IDEyQzYuOTcgOC4yOSA5Ljg3IDUuMjEgMTMuNTggNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMaWdodGJ1bGJNdWx0aXBsZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE2Ljc0IDE4LjYzQzE2LjU1IDE4Ljg1IDE2LjI5IDE5IDE2IDE5SDEyQzExLjQyIDE5IDExIDE4LjU1IDExIDE4VjE2QzkuMzcgMTQuOCA4LjcxIDEyLjgyIDkuMSAxMUw3LjUgOS4zOUM3LjE3IDEwLjIgNi45NyAxMS4wOCA3IDEyQzYuOTcgMTIuNjggNy4wNyAxMy4zNSA3LjI4IDE0SDdDNi40MiAxNCA2IDEzLjU1IDYgMTNWMTFDNS4zIDEwLjUgNC43NyA5LjgxIDQuNDMgOS4wNEM0IDguMDUgMy45MSA3IDQuMTIgNkwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTEzLjU4IDVDMTIuNDYgMi40NyA5LjUgMS4zMyA3IDIuNDVDNi42OCAyLjU4IDYuMzkgMi43NSA2LjEzIDIuOTNMOS42NyA2LjQ3QzEwLjc2IDUuNjMgMTIuMSA1LjA4IDEzLjU4IDVNMTguMDYgMTQuODZDMTkuNiAxMi42NiAxOS4xNCA5LjYyIDE3IDhDMTUuMiA2LjY3IDEyLjg0IDYuNzIgMTEuMTIgNy45MkwxOC4wNiAxNC44Nk0xMiAyMUMxMiAyMS41NSAxMi40MiAyMiAxMyAyMkgxNUMxNS41MyAyMiAxNiAyMS41NSAxNiAyMVYyMEgxMlYyMU03IDE1VjE2QzcgMTYuNTUgNy40MiAxNyA4IDE3SDlWMTYuODhDOC40MyAxNi4zMyA4IDE1LjcgNy42NiAxNUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYk11bHRpcGxlT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNC4xNCA2LjAzQzMuOTMgNyA0IDguMDUgNC40NSA5LjA0QzQuNzkgOS44MSA1LjMzIDEwLjUgNiAxMVYxM0M2IDEzLjU1IDYuNDUgMTQgNyAxNEg3LjNDNy4xIDEzLjM1IDcgMTIuNjggNyAxMkM3IDExLjA4IDcuMTkgMTAuMjEgNy41IDkuNDFMOS4xMSAxMUM5LjA1IDExLjMzIDkgMTEuNjYgOSAxMkM5IDEzLjU3IDkuNzQgMTUuMDYgMTEgMTZWMThDMTEgMTguNTUgMTEuNDUgMTkgMTIgMTlIMTZDMTYuMzEgMTkgMTYuNTcgMTguODYgMTYuNzUgMTguNjRMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTEuMjMgMTMuMTJMMTIuODcgMTQuNzZDMTIuMSAxNC40NCAxMS41MyAxMy44NSAxMS4yMyAxMy4xMk0xNSAxN0gxM1YxNC44OUwxNSAxNi44OVYxN005LjY5IDYuNUw2LjE0IDIuOTRDNi40MSAyLjc1IDYuNyAyLjU4IDcgMi40NEM5LjUzIDEuMzMgMTIuNSAyLjQ3IDEzLjYgNUMxMi4xMiA1LjA5IDEwLjc3IDUuNjMgOS42OSA2LjVNMTEuMTIgNy45MkMxMS45NCA3LjM1IDEyLjkzIDcgMTQgN0MxNS41NyA3IDE3LjA2IDcuNzQgMTggOUMxOS4zMyAxMC43OCAxOS4yOCAxMy4xNCAxOC4wNyAxNC44N0wxNi42MiAxMy40MkMxNi43IDEzLjI4IDE2Ljc3IDEzLjE0IDE2LjgzIDEzQzE3LjM4IDExLjQzIDE2LjU2IDkuNzIgMTUgOS4xNkMxNC4xNiA4Ljg3IDEzLjI5IDguOTcgMTIuNTcgOS4zN0wxMS4xMiA3LjkyTTcuNjggMTVDOCAxNS43IDguNDYgMTYuMzMgOSAxNi44OFYxN0g4QzcuNDUgMTcgNyAxNi41NSA3IDE2VjE1SDcuNjhNMTIgMjBIMTZWMjFDMTYgMjEuNTUgMTUuNTUgMjIgMTUgMjJIMTNDMTIuNDUgMjIgMTIgMjEuNTUgMTIgMjFWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiTXVsdGlwbGVPdXRsaW5lID0gXCJNMTIgMjFDMTIgMjEuNTUgMTIuNDUgMjIgMTMgMjJIMTVDMTUuNTUgMjIgMTYgMjEuNTUgMTYgMjFWMjBIMTJNMTQgN0MxMS4yNCA3IDkgOS4yNCA5IDEyQzkgMTMuNTcgOS43NCAxNS4wNiAxMSAxNlYxOEMxMSAxOC41NSAxMS40NSAxOSAxMiAxOUgxNkMxNi41NSAxOSAxNyAxOC41NSAxNyAxOFYxNkMxOS4yMSAxNC4zNCAxOS42NiAxMS4yMSAxOCA5QzE3LjA2IDcuNzQgMTUuNTcgNyAxNCA3TTE1IDE0LjgyVjE3SDEzVjE0LjgyQzExLjQ0IDE0LjI3IDEwLjYyIDEyLjU1IDExLjE3IDExQzExLjcyIDkuNDMgMTMuNDQgOC42MSAxNSA5LjE2QzE2LjU2IDkuNzIgMTcuMzggMTEuNDMgMTYuODMgMTNDMTYuNTMgMTMuODUgMTUuODUgMTQuNSAxNSAxNC44Mk03LjY4IDE1SDdWMTZDNyAxNi41NSA3LjQ1IDE3IDggMTdIOVYxNi44OEM4LjQ2IDE2LjMzIDggMTUuNyA3LjY4IDE1TTEzLjYgNUMxMi41IDIuNDcgOS41MyAxLjMzIDcgMi40NVMzLjM0IDYuNSA0LjQ1IDkuMDRDNC43OSA5LjgxIDUuMzMgMTAuNSA2IDExVjEzQzYgMTMuNTUgNi40NSAxNCA3IDE0SDcuM0M3LjEgMTMuMzUgNyAxMi42OCA3IDEyQzcgOC4yOSA5Ljg5IDUuMjEgMTMuNiA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYk9mZiA9IFwiTTEyLDJDOS43NiwyIDcuNzgsMy4wNSA2LjUsNC42OEwxNi4zMSwxNC41QzE3Ljk0LDEzLjIxIDE5LDExLjI0IDE5LDlBNyw3IDAgMCwwIDEyLDJNMy4yOCw0TDIsNS4yN0w1LjA0LDguM0M1LDguNTMgNSw4Ljc2IDUsOUM1LDExLjM4IDYuMTksMTMuNDcgOCwxNC43NFYxN0ExLDEgMCAwLDAgOSwxOEgxNC43M0wxOC43MywyMkwyMCwyMC43MkwzLjI4LDRNOSwyMFYyMUExLDEgMCAwLDAgMTAsMjJIMTRBMSwxIDAgMCwwIDE1LDIxVjIwSDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiT2ZmT3V0bGluZSA9IFwiTTEyLDJDOS43NiwyIDcuNzgsMy4wNSA2LjUsNC42OEw3LjkzLDYuMTFDOC44NCw0Ljg0IDEwLjMyLDQgMTIsNEE1LDUgMCAwLDEgMTcsOUMxNywxMC42OCAxNi4xNiwxMi4xNiAxNC44OSwxMy4wNkwxNi4zMSwxNC41QzE3Ljk0LDEzLjIxIDE5LDExLjI0IDE5LDlBNyw3IDAgMCwwIDEyLDJNMy4yOCw0TDIsNS4yN0w1LjA0LDguM0M1LDguNTMgNSw4Ljc2IDUsOUM1LDExLjM4IDYuMTksMTMuNDcgOCwxNC43NFYxN0ExLDEgMCAwLDAgOSwxOEgxNC43M0wxOC43MywyMkwyMCwyMC43MkwzLjI4LDRNNy4yMywxMC41TDEyLjczLDE2SDEwVjEzLjU4QzguNjgsMTMgNy42NiwxMS44OCA3LjIzLDEwLjVNOSwyMFYyMUExLDEgMCAwLDAgMTAsMjJIMTRBMSwxIDAgMCwwIDE1LDIxVjIwSDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiT24gPSBcIk0xMiw2QTYsNiAwIDAsMSAxOCwxMkMxOCwxNC4yMiAxNi43OSwxNi4xNiAxNSwxNy4yVjE5QTEsMSAwIDAsMSAxNCwyMEgxMEExLDEgMCAwLDEgOSwxOVYxNy4yQzcuMjEsMTYuMTYgNiwxNC4yMiA2LDEyQTYsNiAwIDAsMSAxMiw2TTE0LDIxVjIyQTEsMSAwIDAsMSAxMywyM0gxMUExLDEgMCAwLDEgMTAsMjJWMjFIMTRNMjAsMTFIMjNWMTNIMjBWMTFNMSwxMUg0VjEzSDFWMTFNMTMsMVY0SDExVjFIMTNNNC45MiwzLjVMNy4wNSw1LjY0TDUuNjMsNy4wNUwzLjUsNC45M0w0LjkyLDMuNU0xNi45NSw1LjYzTDE5LjA3LDMuNUwyMC41LDQuOTNMMTguMzcsNy4wNUwxNi45NSw1LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYk9uT3V0bGluZSA9IFwiTTIwLDExSDIzVjEzSDIwVjExTTEsMTFINFYxM0gxVjExTTEzLDFWNEgxMVYxSDEzTTQuOTIsMy41TDcuMDUsNS42NEw1LjYzLDcuMDVMMy41LDQuOTNMNC45MiwzLjVNMTYuOTUsNS42M0wxOS4wNywzLjVMMjAuNSw0LjkzTDE4LjM3LDcuMDVMMTYuOTUsNS42M00xMiw2QTYsNiAwIDAsMSAxOCwxMkMxOCwxNC4yMiAxNi43OSwxNi4xNiAxNSwxNy4yVjE5QTEsMSAwIDAsMSAxNCwyMEgxMEExLDEgMCAwLDEgOSwxOVYxNy4yQzcuMjEsMTYuMTYgNiwxNC4yMiA2LDEyQTYsNiAwIDAsMSAxMiw2TTE0LDIxVjIyQTEsMSAwIDAsMSAxMywyM0gxMUExLDEgMCAwLDEgMTAsMjJWMjFIMTRNMTEsMThIMTNWMTUuODdDMTQuNzMsMTUuNDMgMTYsMTMuODYgMTYsMTJBNCw0IDAgMCwwIDEyLDhBNCw0IDAgMCwwIDgsMTJDOCwxMy44NiA5LjI3LDE1LjQzIDExLDE1Ljg3VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYk91dGxpbmUgPSBcIk0xMiwyQTcsNyAwIDAsMSAxOSw5QzE5LDExLjM4IDE3LjgxLDEzLjQ3IDE2LDE0Ljc0VjE3QTEsMSAwIDAsMSAxNSwxOEg5QTEsMSAwIDAsMSA4LDE3VjE0Ljc0QzYuMTksMTMuNDcgNSwxMS4zOCA1LDlBNyw3IDAgMCwxIDEyLDJNOSwyMVYyMEgxNVYyMUExLDEgMCAwLDEgMTQsMjJIMTBBMSwxIDAgMCwxIDksMjFNMTIsNEE1LDUgMCAwLDAgNyw5QzcsMTEuMDUgOC4yMywxMi44MSAxMCwxMy41OFYxNkgxNFYxMy41OEMxNS43NywxMi44MSAxNywxMS4wNSAxNyw5QTUsNSAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0aG91c2UgPSBcIk04LDEwVjhIOVY0SDhWM0wxMiwxTDE2LDNWNEgxNVY4SDE2VjEwSDE0Ljc0TDguNDQsMTMuNjRMOSwxMEg4TTEzLDhWNEgxMVY4SDEzTTcsMjNMNy4wNCwyMi43NkwxNi4xNSwxNy41TDE2LjY3LDIwLjg4TDEzLDIzSDdNOC4wNSwxNi4xN0wxNS4zMSwxMkwxNS44MywxNS4zN0w3LjQzLDIwLjIyTDguMDUsMTYuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRob3VzZU9uID0gXCJNMSwxMFYyTDEwLDVWN0wxLDEwTTgsMTBWOEgxM1Y0SDhWM0wxMiwxTDE2LDNWNEgxNVY4SDE2VjEwSDE0Ljc0TDguNDQsMTMuNjRMOSwxMEg4TTcsMjNMNy4wNCwyMi43NkwxNi4xNSwxNy41TDE2LjY3LDIwLjg4TDEzLDIzSDdNOC4wNSwxNi4xN0wxNS4zMSwxMkwxNS44MywxNS4zN0w3LjQzLDIwLjIyTDguMDUsMTYuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRuaW5nQm9sdCA9IFwiTTExIDE1SDZMMTMgMVY5SDE4TDExIDIzVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0bmluZ0JvbHRPdXRsaW5lID0gXCJNMTEgOS40N1YxMUgxNC43NkwxMyAxNC41M1YxM0g5LjI0TDExIDkuNDdNMTMgMUw2IDE1SDExVjIzTDE4IDlIMTNWMVpcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5nZXJpZSA9IFwiTTIyIDdIMjBWMkgxOFY0LjM0TDEyIDYuOTFMNiA0LjM0VjJINFY3SDJWOUg0LjA1QzQuMyAxMS4yNSA2LjE5IDEzIDguNSAxM0M5LjkyIDEzIDExLjE4IDEyLjMzIDEyIDExLjNDMTIuODMgMTIuMzMgMTQuMDggMTMgMTUuNSAxM0MxNy44MSAxMyAxOS43IDExLjI1IDE5Ljk1IDlIMjJWN004LjUgMTFDNy4xMiAxMSA2IDkuODggNiA4LjVWNi41TDExIDguNjVDMTAuOSA5Ljk2IDkuODMgMTEgOC41IDExTTE4IDguNUMxOCA5Ljg4IDE2Ljg4IDExIDE1LjUgMTFDMTQuMTcgMTEgMTMuMSA5Ljk2IDEzIDguNjVMMTggNi41VjguNU0yIDE1VjE3SDNDNS45NyAxNyA4LjQzIDE5LjE3IDguOTEgMjJIMTUuMDlDMTUuNTcgMTkuMTcgMTguMDMgMTcgMjEgMTdIMjJWMTVIMk0xMy41OSAyMEgxMC40MUM5Ljk0IDE4Ljg0IDkuMjEgMTcuODIgOC4yOSAxN0gxNS43MUMxNC43OSAxNy44MiAxNC4wNiAxOC44NCAxMy41OSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rID0gXCJNMy45LDEyQzMuOSwxMC4yOSA1LjI5LDguOSA3LDguOUgxMVY3SDdBNSw1IDAgMCwwIDIsMTJBNSw1IDAgMCwwIDcsMTdIMTFWMTUuMUg3QzUuMjksMTUuMSAzLjksMTMuNzEgMy45LDEyTTgsMTNIMTZWMTFIOFYxM00xNyw3SDEzVjguOUgxN0MxOC43MSw4LjkgMjAuMSwxMC4yOSAyMC4xLDEyQzIwLjEsMTMuNzEgMTguNzEsMTUuMSAxNywxNS4xSDEzVjE3SDE3QTUsNSAwIDAsMCAyMiwxMkE1LDUgMCAwLDAgMTcsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rQm94ID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTEsMTZIMTBDOC4zOSwxNiA2LDE0Ljk0IDYsMTJDNiw5LjA3IDguMzksOCAxMCw4SDExVjEwSDEwQzkuNTQsMTAgOCwxMC4xNyA4LDEyQzgsMTMuOSA5LjY3LDE0IDEwLDE0SDExVjE2TTE1LDExVjEzSDlWMTFIMTVNMTQsMTZIMTNWMTRIMTRDMTQuNDYsMTQgMTYsMTMuODMgMTYsMTJDMTYsMTAuMSAxNC4zMywxMCAxNCwxMEgxM1Y4SDE0QzE1LjYxLDggMTgsOS4wNyAxOCwxMkMxOCwxNC45NCAxNS42MSwxNiAxNCwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rQm94T3V0bGluZSA9IFwiTTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWNUgxOVYxOU0xMSwxNkgxMEM4LjM5LDE2IDYsMTQuOTQgNiwxMkM2LDkuMDcgOC4zOSw4IDEwLDhIMTFWMTBIMTBDOS41NCwxMCA4LDEwLjE3IDgsMTJDOCwxMy45IDkuNjcsMTQgMTAsMTRIMTFWMTZNMTQsMTZIMTNWMTRIMTRDMTQuNDYsMTQgMTYsMTMuODMgMTYsMTJDMTYsMTAuMSAxNC4zMywxMCAxNCwxMEgxM1Y4SDE0QzE1LjYxLDggMTgsOS4wNyAxOCwxMkMxOCwxNC45NCAxNS42MSwxNiAxNCwxNk0xNSwxM0g5VjExSDE1VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpbmtCb3hWYXJpYW50ID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTMuOTQsMTQuODFMMTEuNzMsMTdDMTEuMDgsMTcuNjcgMTAuMjIsMTggOS4zNiwxOEM4LjUsMTggNy42NCwxNy42NyA3LDE3QzUuNjcsMTUuNzEgNS42NywxMy41OCA3LDEyLjI2TDguMzUsMTAuOUw4LjM0LDExLjVDOC4zMywxMiA4LjQxLDEyLjUgOC41NywxMi45NEw4LjYyLDEzLjA5TDguMjIsMTMuNUM3LjkxLDEzLjggNy43NCwxNC4yMSA3Ljc0LDE0LjY0QzcuNzQsMTUuMDcgNy45MSwxNS40NyA4LjIyLDE1Ljc4QzguODMsMTYuNCA5Ljg5LDE2LjQgMTAuNSwxNS43OEwxMi43LDEzLjU5QzEzLDEzLjI4IDEzLjE4LDEyLjg3IDEzLjE4LDEyLjQ0QzEzLjE4LDEyIDEzLDExLjYxIDEyLjcsMTEuM0MxMi41MywxMS4xNCAxMi40NCwxMC45MiAxMi40NCwxMC42OEMxMi40NCwxMC40NSAxMi41MywxMC4yMyAxMi43LDEwLjA2QzEzLjAzLDkuNzMgMTMuNjEsOS43NCAxMy45NCwxMC4wNkMxNC41NywxMC43IDE0LjkyLDExLjU0IDE0LjkyLDEyLjQ0QzE0LjkyLDEzLjM0IDE0LjU3LDE0LjE4IDEzLjk0LDE0LjgxTTE3LDExLjc0TDE1LjY2LDEzLjFWMTIuNUMxNS42NywxMiAxNS41OSwxMS41IDE1LjQzLDExLjA2TDE1LjM4LDEwLjkyTDE1Ljc4LDEwLjVDMTYuMDksMTAuMiAxNi4yNiw5Ljc5IDE2LjI2LDkuMzZDMTYuMjYsOC45MyAxNi4wOSw4LjUzIDE1Ljc4LDguMjJDMTUuMTcsNy42IDE0LjEsNy42MSAxMy41LDguMjJMMTEuMywxMC40MkMxMSwxMC43MiAxMC44MiwxMS4xMyAxMC44MiwxMS41NkMxMC44MiwxMiAxMSwxMi4zOSAxMS4zLDEyLjdDMTEuNDcsMTIuODYgMTEuNTYsMTMuMDggMTEuNTYsMTMuMzJDMTEuNTYsMTMuNTYgMTEuNDcsMTMuNzggMTEuMywxMy45NEMxMS4xMywxNC4xMSAxMC45MSwxNC4xOSAxMC42OCwxNC4xOUMxMC40NiwxNC4xOSAxMC4yMywxNC4xMSAxMC4wNiwxMy45NEM4Ljc1LDEyLjYzIDguNzUsMTAuNSAxMC4wNiw5LjE5TDEyLjI3LDdDMTMuNTgsNS42NyAxNS43MSw1LjY4IDE3LDdDMTcuNjUsNy42MiAxOCw4LjQ2IDE4LDkuMzZDMTgsMTAuMjYgMTcuNjUsMTEuMSAxNywxMS43NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rQm94VmFyaWFudE91dGxpbmUgPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xOSwxOUg1VjVIMTlWMTlNMTMuOTQsMTAuMDZDMTQuNTcsMTAuNyAxNC45MiwxMS41NCAxNC45MiwxMi40NEMxNC45MiwxMy4zNCAxNC41NywxNC4xOCAxMy45NCwxNC44MUwxMS43MywxN0MxMS4wOCwxNy42NyAxMC4yMiwxOCA5LjM2LDE4QzguNSwxOCA3LjY0LDE3LjY3IDcsMTdDNS42NywxNS43MSA1LjY3LDEzLjU4IDcsMTIuMjZMOC4zNSwxMC45TDguMzQsMTEuNUM4LjMzLDEyIDguNDEsMTIuNSA4LjU3LDEyLjk0TDguNjIsMTMuMDlMOC4yMiwxMy41QzcuOTEsMTMuOCA3Ljc0LDE0LjIxIDcuNzQsMTQuNjRDNy43NCwxNS4wNyA3LjkxLDE1LjQ3IDguMjIsMTUuNzhDOC44MywxNi40IDkuODksMTYuNCAxMC41LDE1Ljc4TDEyLjcsMTMuNTlDMTMsMTMuMjggMTMuMTgsMTIuODcgMTMuMTgsMTIuNDRDMTMuMTgsMTIgMTMsMTEuNjEgMTIuNywxMS4zQzEyLjUzLDExLjE0IDEyLjQ0LDEwLjkyIDEyLjQ0LDEwLjY4QzEyLjQ0LDEwLjQ1IDEyLjUzLDEwLjIzIDEyLjcsMTAuMDZDMTMuMDMsOS43MyAxMy42MSw5Ljc0IDEzLjk0LDEwLjA2TTE4LDkuMzZDMTgsMTAuMjYgMTcuNjUsMTEuMSAxNywxMS43NEwxNS42NiwxMy4xVjEyLjVDMTUuNjcsMTIgMTUuNTksMTEuNSAxNS40MywxMS4wNkwxNS4zOCwxMC45MkwxNS43OCwxMC41QzE2LjA5LDEwLjIgMTYuMjYsOS43OSAxNi4yNiw5LjM2QzE2LjI2LDguOTMgMTYuMDksOC41MyAxNS43OCw4LjIyQzE1LjE3LDcuNiAxNC4xLDcuNjEgMTMuNSw4LjIyTDExLjMsMTAuNDJDMTEsMTAuNzIgMTAuODIsMTEuMTMgMTAuODIsMTEuNTZDMTAuODIsMTIgMTEsMTIuMzkgMTEuMywxMi43QzExLjQ3LDEyLjg2IDExLjU2LDEzLjA4IDExLjU2LDEzLjMyQzExLjU2LDEzLjU2IDExLjQ3LDEzLjc4IDExLjMsMTMuOTRDMTEuMTMsMTQuMTEgMTAuOTEsMTQuMTkgMTAuNjgsMTQuMTlDMTAuNDYsMTQuMTkgMTAuMjMsMTQuMTEgMTAuMDYsMTMuOTRDOC43NSwxMi42MyA4Ljc1LDEwLjUgMTAuMDYsOS4xOUwxMi4yNyw3QzEzLjU4LDUuNjcgMTUuNzEsNS42OCAxNyw3QzE3LjY1LDcuNjIgMTgsOC40NiAxOCw5LjM2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpbmtMb2NrID0gXCJNMjMgMTZWMTUuNUEyLjUgMi41IDAgMCAwIDE4IDE1LjVWMTZBMSAxIDAgMCAwIDE3IDE3VjIxQTEgMSAwIDAgMCAxOCAyMkgyM0ExIDEgMCAwIDAgMjQgMjFWMTdBMSAxIDAgMCAwIDIzIDE2TTIyIDE2SDE5VjE1LjVBMS41IDEuNSAwIDAgMSAyMiAxNS41TTcgOC45SDExVjdIN0E1IDUgMCAwIDAgNyAxN0gxMVYxNS4xSDdBMy4xIDMuMSAwIDAgMSA3IDguOU04IDExVjEzSDE2VjExTTEzIDE1LjFWMTdIMTVWMTUuMU0xNyA3SDEzVjguOUgxN0EzLjA5IDMuMDkgMCAwIDEgMTkuOTQgMTFBNS4xMiA1LjEyIDAgMCAxIDIwLjUgMTFIMjEuOUE1IDUgMCAwIDAgMTcgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rT2ZmID0gXCJNMTcsN0gxM1Y4LjlIMTdDMTguNzEsOC45IDIwLjEsMTAuMjkgMjAuMSwxMkMyMC4xLDEzLjQzIDE5LjEyLDE0LjYzIDE3Ljc5LDE1TDE5LjI1LDE2LjQ0QzIwLjg4LDE1LjYxIDIyLDEzLjk1IDIyLDEyQTUsNSAwIDAsMCAxNyw3TTE2LDExSDEzLjgxTDE1LjgxLDEzSDE2VjExTTIsNC4yN0w1LjExLDcuMzhDMy4yOSw4LjEyIDIsOS45MSAyLDEyQTUsNSAwIDAsMCA3LDE3SDExVjE1LjFIN0M1LjI5LDE1LjEgMy45LDEzLjcxIDMuOSwxMkMzLjksMTAuNDEgNS4xMSw5LjEgNi42Niw4LjkzTDguNzMsMTFIOFYxM0gxMC43M0wxMywxNS4yN1YxN0gxNC43M0wxOC43NCwyMUwyMCwxOS43NEwzLjI3LDNMMiw0LjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpbmtQbHVzID0gXCJNNyw3SDExVjlIN0EzLDMgMCAwLDAgNCwxMkEzLDMgMCAwLDAgNywxNUgxMVYxN0g3QTUsNSAwIDAsMSAyLDEyQTUsNSAwIDAsMSA3LDdNMTcsN0E1LDUgMCAwLDEgMjIsMTJIMjBBMywzIDAgMCwwIDE3LDlIMTNWN0gxN004LDExSDE2VjEzSDhWMTFNMTcsMTJIMTlWMTVIMjJWMTdIMTlWMjBIMTdWMTdIMTRWMTVIMTdWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua1ZhcmlhbnQgPSBcIk0xMC41OSwxMy40MUMxMSwxMy44IDExLDE0LjQ0IDEwLjU5LDE0LjgzQzEwLjIsMTUuMjIgOS41NiwxNS4yMiA5LjE3LDE0LjgzQzcuMjIsMTIuODggNy4yMiw5LjcxIDkuMTcsNy43NlY3Ljc2TDEyLjcxLDQuMjJDMTQuNjYsMi4yNyAxNy44MywyLjI3IDE5Ljc4LDQuMjJDMjEuNzMsNi4xNyAyMS43Myw5LjM0IDE5Ljc4LDExLjI5TDE4LjI5LDEyLjc4QzE4LjMsMTEuOTYgMTguMTcsMTEuMTQgMTcuODksMTAuMzZMMTguMzYsOS44OEMxOS41NCw4LjcxIDE5LjU0LDYuODEgMTguMzYsNS42NEMxNy4xOSw0LjQ2IDE1LjI5LDQuNDYgMTQuMTIsNS42NEwxMC41OSw5LjE3QzkuNDEsMTAuMzQgOS40MSwxMi4yNCAxMC41OSwxMy40MU0xMy40MSw5LjE3QzEzLjgsOC43OCAxNC40NCw4Ljc4IDE0LjgzLDkuMTdDMTYuNzgsMTEuMTIgMTYuNzgsMTQuMjkgMTQuODMsMTYuMjRWMTYuMjRMMTEuMjksMTkuNzhDOS4zNCwyMS43MyA2LjE3LDIxLjczIDQuMjIsMTkuNzhDMi4yNywxNy44MyAyLjI3LDE0LjY2IDQuMjIsMTIuNzFMNS43MSwxMS4yMkM1LjcsMTIuMDQgNS44MywxMi44NiA2LjExLDEzLjY1TDUuNjQsMTQuMTJDNC40NiwxNS4yOSA0LjQ2LDE3LjE5IDUuNjQsMTguMzZDNi44MSwxOS41NCA4LjcxLDE5LjU0IDkuODgsMTguMzZMMTMuNDEsMTQuODNDMTQuNTksMTMuNjYgMTQuNTksMTEuNzYgMTMuNDEsMTAuNTlDMTMsMTAuMiAxMyw5LjU2IDEzLjQxLDkuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua1ZhcmlhbnRNaW51cyA9IFwiTTEwLjYgMTMuNEExIDEgMCAwIDEgOS4yIDE0LjhBNC44IDQuOCAwIDAgMSA5LjIgNy44TDEyLjcgNC4yQTUuMSA1LjEgMCAwIDEgMTkuOCA0LjJBNS4xIDUuMSAwIDAgMSAxOS44IDExLjNMMTguMyAxMi44QTYuNCA2LjQgMCAwIDAgMTcuOSAxMC40TDE4LjQgOS45QTMuMiAzLjIgMCAwIDAgMTguNCA1LjZBMy4yIDMuMiAwIDAgMCAxNC4xIDUuNkwxMC42IDkuMkEyLjkgMi45IDAgMCAwIDEwLjYgMTMuNE0yMyAxOFYyMEgxNVYxOE0xNi4yIDEzLjdBNC44IDQuOCAwIDAgMCAxNC44IDkuMkExIDEgMCAwIDAgMTMuNCAxMC42QTIuOSAyLjkgMCAwIDEgMTMuNCAxNC44TDkuOSAxOC40QTMuMiAzLjIgMCAwIDEgNS42IDE4LjRBMy4yIDMuMiAwIDAgMSA1LjYgMTQuMUw2LjEgMTMuN0E3LjMgNy4zIDAgMCAxIDUuNyAxMS4yTDQuMiAxMi43QTUuMSA1LjEgMCAwIDAgNC4yIDE5LjhBNS4xIDUuMSAwIDAgMCAxMS4zIDE5LjhMMTMuMSAxOEE2IDYgMCAwIDEgMTYuMiAxMy43WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpbmtWYXJpYW50T2ZmID0gXCJNMiw1LjI3TDMuMjgsNEwyMCwyMC43MkwxOC43MywyMkwxMy45LDE3LjE3TDExLjI5LDE5Ljc4QzkuMzQsMjEuNzMgNi4xNywyMS43MyA0LjIyLDE5Ljc4QzIuMjcsMTcuODMgMi4yNywxNC42NiA0LjIyLDEyLjcxTDUuNzEsMTEuMjJDNS43LDEyLjA0IDUuODMsMTIuODYgNi4xMSwxMy42NUw1LjY0LDE0LjEyQzQuNDYsMTUuMjkgNC40NiwxNy4xOSA1LjY0LDE4LjM2QzYuODEsMTkuNTQgOC43MSwxOS41NCA5Ljg4LDE4LjM2TDEyLjUsMTUuNzZMMTAuODgsMTQuMTVDMTAuODcsMTQuMzkgMTAuNzcsMTQuNjQgMTAuNTksMTQuODNDMTAuMiwxNS4yMiA5LjU2LDE1LjIyIDkuMTcsMTQuODNDOC4xMiwxMy43NyA3LjYzLDEyLjM3IDcuNzIsMTFMMiw1LjI3TTEyLjcxLDQuMjJDMTQuNjYsMi4yNyAxNy44MywyLjI3IDE5Ljc4LDQuMjJDMjEuNzMsNi4xNyAyMS43Myw5LjM0IDE5Ljc4LDExLjI5TDE4LjI5LDEyLjc4QzE4LjMsMTEuOTYgMTguMTcsMTEuMTQgMTcuODksMTAuMzZMMTguMzYsOS44OEMxOS41NCw4LjcxIDE5LjU0LDYuODEgMTguMzYsNS42NEMxNy4xOSw0LjQ2IDE1LjI5LDQuNDYgMTQuMTIsNS42NEwxMC43OSw4Ljk3TDkuMzgsNy41NUwxMi43MSw0LjIyTTEzLjQxLDkuMTdDMTMuOCw4Ljc4IDE0LjQ0LDguNzggMTQuODMsOS4xN0MxNi4yLDEwLjU0IDE2LjYxLDEyLjUgMTYuMDYsMTQuMjNMMTQuMjgsMTIuNDZDMTQuMjMsMTEuNzggMTMuOTQsMTEuMTEgMTMuNDEsMTAuNTlDMTMsMTAuMiAxMyw5LjU2IDEzLjQxLDkuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua1ZhcmlhbnRQbHVzID0gXCJNMTAuNiAxMy40QTEgMSAwIDAgMSA5LjIgMTQuOEE0LjggNC44IDAgMCAxIDkuMiA3LjhMMTIuNyA0LjJBNS4xIDUuMSAwIDAgMSAxOS44IDQuMkE1LjEgNS4xIDAgMCAxIDE5LjggMTEuM0wxOC4zIDEyLjhBNi40IDYuNCAwIDAgMCAxNy45IDEwLjRMMTguNCA5LjlBMy4yIDMuMiAwIDAgMCAxOC40IDUuNkEzLjIgMy4yIDAgMCAwIDE0LjEgNS42TDEwLjYgOS4yQTIuOSAyLjkgMCAwIDAgMTAuNiAxMy40TTIzIDE4VjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1SDIwVjE4TTE2LjIgMTMuN0E0LjggNC44IDAgMCAwIDE0LjggOS4yQTEgMSAwIDAgMCAxMy40IDEwLjZBMi45IDIuOSAwIDAgMSAxMy40IDE0LjhMOS45IDE4LjRBMy4yIDMuMiAwIDAgMSA1LjYgMTguNEEzLjIgMy4yIDAgMCAxIDUuNiAxNC4xTDYuMSAxMy43QTcuMyA3LjMgMCAwIDEgNS43IDExLjJMNC4yIDEyLjdBNS4xIDUuMSAwIDAgMCA0LjIgMTkuOEE1LjEgNS4xIDAgMCAwIDExLjMgMTkuOEwxMy4xIDE4QTYgNiAwIDAgMSAxNi4yIDEzLjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua1ZhcmlhbnRSZW1vdmUgPSBcIk0xMC42IDEzLjRBMSAxIDAgMCAxIDkuMiAxNC44QTQuOCA0LjggMCAwIDEgOS4yIDcuOEwxMi43IDQuMkE1LjEgNS4xIDAgMCAxIDE5LjggNC4yQTUuMSA1LjEgMCAwIDEgMTkuOCAxMS4zTDE4LjMgMTIuOEE2LjQgNi40IDAgMCAwIDE3LjkgMTAuNEwxOC40IDkuOUEzLjIgMy4yIDAgMCAwIDE4LjQgNS42QTMuMiAzLjIgMCAwIDAgMTQuMSA1LjZMMTAuNiA5LjJBMi45IDIuOSAwIDAgMCAxMC42IDEzLjRNMTYuMiAxMy43QTQuOCA0LjggMCAwIDAgMTQuOCA5LjJBMSAxIDAgMCAwIDEzLjQgMTAuNkEyLjkgMi45IDAgMCAxIDEzLjQgMTQuOEw5LjkgMTguNEEzLjIgMy4yIDAgMCAxIDUuNiAxOC40QTMuMiAzLjIgMCAwIDEgNS42IDE0LjFMNi4xIDEzLjdBNy4zIDcuMyAwIDAgMSA1LjcgMTEuMkw0LjIgMTIuN0E1LjEgNS4xIDAgMCAwIDQuMiAxOS44QTUuMSA1LjEgMCAwIDAgMTEuMyAxOS44TDEzLjEgMThBNiA2IDAgMCAxIDE2LjIgMTMuN00yMS4xIDE1LjVMMTkgMTcuNkwxNi45IDE1LjVMMTUuNSAxNi45TDE3LjYgMTlMMTUuNSAyMS4xTDE2LjkgMjIuNUwxOSAyMC40TDIxLjEgMjIuNUwyMi41IDIxLjFMMjAuNCAxOUwyMi41IDE2LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua2VkaW4gPSBcIk0xOSAzQTIgMiAwIDAgMSAyMSA1VjE5QTIgMiAwIDAgMSAxOSAyMUg1QTIgMiAwIDAgMSAzIDE5VjVBMiAyIDAgMCAxIDUgM0gxOU0xOC41IDE4LjVWMTMuMkEzLjI2IDMuMjYgMCAwIDAgMTUuMjQgOS45NEMxNC4zOSA5Ljk0IDEzLjQgMTAuNDYgMTIuOTIgMTEuMjRWMTAuMTNIMTAuMTNWMTguNUgxMi45MlYxMy41N0MxMi45MiAxMi44IDEzLjU0IDEyLjE3IDE0LjMxIDEyLjE3QTEuNCAxLjQgMCAwIDEgMTUuNzEgMTMuNTdWMTguNUgxOC41TTYuODggOC41NkExLjY4IDEuNjggMCAwIDAgOC41NiA2Ljg4QzguNTYgNS45NSA3LjgxIDUuMTkgNi44OCA1LjE5QTEuNjkgMS42OSAwIDAgMCA1LjE5IDYuODhDNS4xOSA3LjgxIDUuOTUgOC41NiA2Ljg4IDguNTZNOC4yNyAxOC41VjEwLjEzSDUuNVYxOC41SDguMjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGludXggPSBcIk0xNC42Miw4LjM1QzE0LjIsOC42MyAxMi44Nyw5LjM5IDEyLjY3LDkuNTRDMTIuMjgsOS44NSAxMS45Miw5LjgzIDExLjUzLDkuNTNDMTEuMzMsOS4zNyAxMCw4LjYxIDkuNTgsOC4zNEM5LjEsOC4wMyA5LjEzLDcuNjQgOS42Niw3LjQyQzExLjMsNi43MyAxMi45NCw2Ljc4IDE0LjU3LDcuNDVDMTUuMDYsNy42NiAxNS4wOCw4LjA1IDE0LjYyLDguMzVNMjEuODQsMTUuNjNDMjAuOTEsMTMuNTQgMTkuNjQsMTEuNjQgMTgsOS45N0MxNy40Nyw5LjQyIDE3LjE0LDguOCAxNi45NCw4LjA5QzE2Ljg0LDcuNzYgMTYuNzcsNy40MiAxNi43LDcuMDhDMTYuNSw2LjIgMTYuNDEsNS4zIDE2LDQuNDdDMTUuMjcsMi44OSAxNCwyLjA3IDEyLjE2LDJDMTAuMzUsMi4wNSA5LDIuODEgOC4yMSw0LjRDOCw0LjgzIDcuODUsNS4yOCA3Ljc1LDUuNzRDNy41OCw2LjUgNy40Myw3LjI5IDcuMjUsOC4wNkM3LjEsOC43MSA2LjgsOS4yNyA2LjI5LDkuNzdDNC42OCwxMS4zNCAzLjM5LDEzLjE0IDIuNDEsMTUuMTJDMi4yNywxNS40MSAyLjEzLDE1LjcgMi4wNCwxNkMxLjg1LDE2LjY2IDIuMzMsMTcuMTIgMy4wMywxNi45NkMzLjQ3LDE2Ljg3IDMuOTEsMTYuNzggNC4zMywxNi42NUM0Ljc0LDE2LjUgNC45LDE2LjYgNSwxN0M1LjY1LDE5LjE1IDcuMDcsMjAuNjYgOS4yNCwyMS41QzEzLjM2LDIzLjA2IDE4LjE3LDIwLjg0IDE5LjIxLDE2LjkyQzE5LjI4LDE2LjY1IDE5LjM4LDE2LjU1IDE5LjY4LDE2LjY1QzIwLjE0LDE2Ljc5IDIwLjYxLDE2Ljg5IDIxLjA4LDE3QzIxLjU3LDE3LjA5IDIxLjkzLDE2Ljg0IDIyLDE2LjM2QzIyLjAzLDE2LjEgMjEuOTQsMTUuODcgMjEuODQsMTUuNjNcIjtcclxuZXhwb3J0IHZhciBtZGlMaW51eE1pbnQgPSBcIk0yLDMuMjNWNi44SDMuNUM0LjU5LDYuOCA0Ljc4LDcuNTMgNC43OCw4LjU1VjE0Ljg2QzQuNzgsMTguMTIgNy42NSwyMC43NyAxMS4xOCwyMC43N0gxOS45QzIxLDIwLjc3IDIyLDIwLjA3IDIyLDE5VjkuMkMyMiw1LjkzIDE5LjEzLDMuMjggMTUuNiwzLjI4SDExLjkzVjMuMjdMMiwzLjIzVjMuMjNNNi42Miw1LjQ2SDguMzdWMTQuNDVDOC4zNywxNS42NSA5LjE5LDE2LjU5IDEwLjE2LDE2LjU5TDE2LjEzLDE2LjYxQzE3LjM4LDE2LjYxIDE4LjM1LDE1Ljc1IDE4LjM1LDE0LjczTDE4LjM0LDkuOTZDMTguMzQsOS42NSAxOC4yNCw5LjQxIDE4LDkuMTlDMTcuNzksOC45NiAxNy41Niw4Ljg2IDE3LjI1LDguODZDMTYuOTQsOC44NiAxNi43MSw4Ljk2IDE2LjUsOS4xOUMxNi4yNyw5LjQxIDE2LjE2LDkuNjUgMTYuMTYsOS45NlYxNC4wNUgxNC4zMVY5Ljk2QzE0LjMxLDkuNjUgMTQuMjEsOS40MSAxNCw5LjE5QzEzLjc3LDguOTYgMTMuNTQsOC44NiAxMy4yMiw4Ljg2QzEyLjkyLDguODYgMTIuNjgsOC45NiAxMi40Niw5LjE5QzEyLjI0LDkuNDEgMTIuMTQsOS42NSAxMi4xNCw5Ljk2VjE0LjA1SDEwLjI5VjkuOTZDMTAuMjksOS4xNSAxMC41OCw4LjQ0IDExLjE1LDcuODZDMTEuNzIsNy4yOSAxMi40Myw3IDEzLjIyLDdDMTQsNyAxNC42OCw3LjI4IDE1LjI0LDcuODJDMTUuNzksNy4yOCAxNi40Nyw3IDE3LjI1LDdDMTguMDUsNyAxOC43Niw3LjI5IDE5LjMyLDcuODZDMTkuODksOC40NCAyMC4xOSw5LjE1IDIwLjE5LDkuOTZMMjAuMiwxNS4wNkMyMC4xMSwxNS45MSAxOS43NSwxNi42NyAxOS4xMywxNy4zMVYxNy4zMUMxOC40LDE4LjA0IDE3LjUsMTguNDIgMTYuNSwxOC40Mkg5LjgzQzksMTguMzQgOC4yOSwxNy45NSA3LjY5LDE3LjM2QzcsMTYuNjUgNi42MiwxNS43OSA2LjYyLDE0Ljc5VjUuNDZINi42MlpcIjtcclxuZXhwb3J0IHZhciBtZGlMaXBzdGljayA9IFwiTTkgMjNDOC40NSAyMyA4IDIyLjU1IDggMjJWMTNDOCAxMi40NSA4LjQ1IDEyIDkgMTJIMTVDMTUuNTUgMTIgMTYgMTIuNDUgMTYgMTNWMjJDMTYgMjIuNTUgMTUuNTUgMjMgMTUgMjNIOU0xMCAxMUM5LjQ1IDExIDkgMTAuNTUgOSAxMFY1LjI1QzkgNS4yNSAxMSAzIDExLjc1IDFDMTIuODMgMS42NyAxMy45MiAyLjMzIDE0LjQ2IDMuODNDMTUgNS4zMyAxNSA3LjY3IDE1IDEwQzE1IDEwLjU1IDE0LjU1IDExIDE0IDExSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpc3RTdGF0dXMgPSBcIk0xNi41IDExTDEzIDcuNUwxNC40IDYuMUwxNi41IDguMkwyMC43IDRMMjIuMSA1LjRMMTYuNSAxMU0xMSA3SDJWOUgxMVY3TTIxIDEzLjRMMTkuNiAxMkwxNyAxNC42TDE0LjQgMTJMMTMgMTMuNEwxNS42IDE2TDEzIDE4LjZMMTQuNCAyMEwxNyAxNy40TDE5LjYgMjBMMjEgMTguNkwxOC40IDE2TDIxIDEzLjRNMTEgMTVIMlYxN0gxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMaXRlY29pbiA9IFwiTTEyLjU1LDE1LjkyTDEzLjE2LDEzLjc4TDE0LjgxLDEzLjE5TDE2LjI1LDcuNjNMMTQuNTYsOC4zMUwxNi4yNSwySDhMNS4zOCwxMS43N0wzLjcyLDEyLjM0TDIuMjIsMTcuOTFMNCwxNy4yN0wyLjY2LDIySDIwLjE2TDIxLjc4LDE1LjkySDEyLjU1TTE5LjM5LDIxSDRMNS40NiwxNS42NUwzLjcyLDE2LjNMNC41OCwxMy4xMUw2LjI0LDEyLjU0TDguNzQsM0gxNUwxMy4xMywxMEwxNC44Myw5LjNMMTQsMTIuNDJMMTIuMzMsMTNMMTEuMjIsMTYuOTFIMjAuNUwxOS4zOSwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2FkaW5nID0gXCJNMTIsNFYyQTEwLDEwIDAgMCwwIDIsMTJINEE4LDggMCAwLDEgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NhdGlvbkVudGVyID0gXCJNMTQgMTJMMTAgOFYxMUgyVjEzSDEwVjE2TTIyIDEyQTEwIDEwIDAgMCAxIDIuNDYgMTVINC41OUE4IDggMCAxIDAgNC41OSA5SDIuNDZBMTAgMTAgMCAwIDEgMjIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9jYXRpb25FeGl0ID0gXCJNMjIgMTJMMTggOFYxMUgxMFYxM0gxOFYxNk0yMCAxOEExMCAxMCAwIDEgMSAyMCA2SDE3LjI3QTggOCAwIDEgMCAxNy4yNyAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrID0gXCJNMTIsMTdBMiwyIDAgMCwwIDE0LDE1QzE0LDEzLjg5IDEzLjEsMTMgMTIsMTNBMiwyIDAgMCwwIDEwLDE1QTIsMiAwIDAsMCAxMiwxN00xOCw4QTIsMiAwIDAsMSAyMCwxMFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFYxMEM0LDguODkgNC45LDggNiw4SDdWNkE1LDUgMCAwLDEgMTIsMUE1LDUgMCAwLDEgMTcsNlY4SDE4TTEyLDNBMywzIDAgMCwwIDksNlY4SDE1VjZBMywzIDAgMCwwIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja0FsZXJ0ID0gXCJNMTAgMTdDMTEuMSAxNyAxMiAxNi4xIDEyIDE1QzEyIDEzLjkgMTEuMSAxMyAxMCAxM0M4LjkgMTMgOCAxMy45IDggMTVTOC45IDE3IDEwIDE3TTE2IDhDMTcuMSA4IDE4IDguOSAxOCAxMFYyMEMxOCAyMS4xIDE3LjEgMjIgMTYgMjJINEMyLjkgMjIgMiAyMS4xIDIgMjBWMTBDMiA4LjkgMi45IDggNCA4SDVWNkM1IDMuMiA3LjIgMSAxMCAxUzE1IDMuMiAxNSA2VjhIMTZNMTAgM0M4LjMgMyA3IDQuMyA3IDZWOEgxM1Y2QzEzIDQuMyAxMS43IDMgMTAgM00yMiAxM0gyMFY3SDIyVjEzTTIyIDE3SDIwVjE1SDIyVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tBbGVydE91dGxpbmUgPSBcIk0xMCAxN0M4LjkgMTcgOCAxNi4xIDggMTVDOCAxMy45IDguOSAxMyAxMCAxM0MxMS4xIDEzIDEyIDEzLjkgMTIgMTVTMTEuMSAxNyAxMCAxN00xNiAyMFYxMEg0VjIwSDE2TTE2IDhDMTcuMSA4IDE4IDguOSAxOCAxMFYyMEMxOCAyMS4xIDE3LjEgMjIgMTYgMjJINEMyLjkgMjIgMiAyMS4xIDIgMjBWMTBDMiA4LjkgMi45IDggNCA4SDVWNkM1IDMuMiA3LjIgMSAxMCAxUzE1IDMuMiAxNSA2VjhIMTZNMTAgM0M4LjMgMyA3IDQuMyA3IDZWOEgxM1Y2QzEzIDQuMyAxMS43IDMgMTAgM00yMiA3SDIwVjEzSDIyVjdNMjIgMTVIMjBWMTdIMjJWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja0NoZWNrID0gXCJNMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlWMTBDMjAgOC45IDE5LjExIDggMTggOEgxN1Y2QzE3IDMuMjQgMTQuNzYgMSAxMiAxUzcgMy4yNCA3IDZWOEg2QzQuOSA4IDQgOC44OSA0IDEwVjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMSAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM005IDZDOSA0LjM0IDEwLjM0IDMgMTIgM1MxNSA0LjM0IDE1IDZWOEg5VjZNMTIgMTdDMTAuOSAxNyAxMCAxNi4xMSAxMCAxNVMxMC45IDEzIDEyIDEzQzEzLjEgMTMgMTQgMTMuODkgMTQgMTVDMTQgMTYuMTEgMTMuMTEgMTcgMTIgMTdNMjIuNSAxNy4yNUwxNy43NSAyMkwxNSAxOUwxNi4xNiAxNy44NEwxNy43NSAxOS40M0wyMS4zNCAxNS44NEwyMi41IDE3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tDaGVja091dGxpbmUgPSBcIk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN0MxMC44OSAxNyAxMCAxNi4xIDEwIDE1QzEwIDEzLjg5IDEwLjg5IDEzIDEyIDEzQzEzLjExIDEzIDE0IDEzLjkgMTQgMTVNMTMuMDkgMjBDMTMuMjEgMjAuNzIgMTMuNDYgMjEuMzkgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMSA0IDIwVjEwQzQgOC44OSA0Ljg5IDggNiA4SDdWNkM3IDMuMjQgOS4yNCAxIDEyIDFTMTcgMy4yNCAxNyA2VjhIMThDMTkuMTEgOCAyMCA4LjkgMjAgMTBWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWMTBINlYyMEgxMy4wOU05IDhIMTVWNkMxNSA0LjM0IDEzLjY2IDMgMTIgM1M5IDQuMzQgOSA2VjhNMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNMMTYuMTYgMTcuODRMMTUgMTlMMTcuNzUgMjJMMjIuNSAxNy4yNUwyMS4zNCAxNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrQ2xvY2sgPSBcIk04LjUsMkM2LDIgNCw0IDQsNi41VjdDMi44OSw3IDIsNy44OSAyLDlWMThDMiwxOS4xMSAyLjg5LDIwIDQsMjBIOC43MkMxMC4xOCwyMS4yOSAxMi4wNiwyMiAxNCwyMkE4LDggMCAwLDAgMjIsMTRBOCw4IDAgMCwwIDE0LDZDMTMuNjYsNiAxMy4zMiw2LjAzIDEzLDYuMDhDMTIuNzYsMy43NyAxMC44MiwyIDguNSwyTTguNSw0QTIuNSwyLjUgMCAwLDEgMTEsNi41VjdINlY2LjVBMi41LDIuNSAwIDAsMSA4LjUsNE0xNCw4QTYsNiAwIDAsMSAyMCwxNEE2LDYgMCAwLDEgMTQsMjBBNiw2IDAgMCwxIDgsMTRBNiw2IDAgMCwxIDE0LDhNMTMsMTBWMTVMMTYuNjQsMTcuMTlMMTcuNDIsMTUuOUwxNC41LDE0LjE1VjEwSDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tNaW51cyA9IFwiTTE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2VjhINkM0LjkgOCA0IDguODkgNCAxMFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNOSA2QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhIOVY2TTEyIDE3QzEwLjkgMTcgMTAgMTYuMTEgMTAgMTVTMTAuOSAxMyAxMiAxM0MxMy4xIDEzIDE0IDEzLjg5IDE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3TTIzIDE4VjIwSDE1VjE4SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tNaW51c091dGxpbmUgPSBcIk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN0MxMC44OSAxNyAxMCAxNi4xIDEwIDE1QzEwIDEzLjg5IDEwLjg5IDEzIDEyIDEzQzEzLjExIDEzIDE0IDEzLjkgMTQgMTVNMTMuMDkgMjBDMTMuMjEgMjAuNzIgMTMuNDYgMjEuMzkgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMSA0IDIwVjEwQzQgOC44OSA0Ljg5IDggNiA4SDdWNkM3IDMuMjQgOS4yNCAxIDEyIDFTMTcgMy4yNCAxNyA2VjhIMThDMTkuMTEgOCAyMCA4LjkgMjAgMTBWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWMTBINlYyMEgxMy4wOU05IDhIMTVWNkMxNSA0LjM0IDEzLjY2IDMgMTIgM1M5IDQuMzQgOSA2VjhNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09mZiA9IFwiTTkgNS44Mkw3LjM2IDQuMTZDOC4wOSAyLjMxIDkuODkgMSAxMiAxQzE0Ljc2IDEgMTcgMy4yNCAxNyA2VjhIMThDMTkuMTEgOCAyMCA4LjkgMjAgMTBWMTYuOEwxMS4yIDhIMTVWNkMxNSA0LjM0IDEzLjY2IDMgMTIgM0MxMC40MSAzIDkuMTEgNC4yNSA5IDUuODJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuNDYgMjEuMzVDMTkuMSAyMS43NSAxOC41OCAyMiAxOCAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjEwQzQgOC44OSA0LjkgOCA2IDhINi4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTEzLjg1IDE1Ljc0TDExLjI2IDEzLjE1QzEwLjUgMTMuNDQgMTAgMTQuMTYgMTAgMTVDMTAgMTYuMTEgMTAuOSAxNyAxMiAxN0MxMi44NCAxNyAxMy41NiAxNi41IDEzLjg1IDE1Ljc0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPZmZPdXRsaW5lID0gXCJNOSA1LjgyTDcuMzYgNC4xNkM4LjA5IDIuMzEgOS44OSAxIDEyIDFDMTQuNzYgMSAxNyAzLjI0IDE3IDZWOEgxOEMxOS4xMSA4IDIwIDguOSAyMCAxMFYxNi44TDE4IDE0LjhWMTBIMTMuMkwxMS4yIDhIMTVWNkMxNSA0LjM0IDEzLjY2IDMgMTIgM0MxMC40MSAzIDkuMTEgNC4yNSA5IDUuODJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuNDYgMjEuMzVDMTkuMSAyMS43NSAxOC41OCAyMiAxOCAyMkg2QzQuODkgMjIgNCAyMS4xIDQgMjBWMTBDNCA4Ljg5IDQuODkgOCA2IDhINi4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTE4IDE5Ljg5TDEzLjg1IDE1Ljc0QzEzLjU2IDE2LjUgMTIuODQgMTcgMTIgMTdDMTAuODkgMTcgMTAgMTYuMSAxMCAxNUMxMCAxNC4xNSAxMC41IDEzLjQ0IDExLjI2IDEzLjE1TDguMTEgMTBINlYyMEgxOFYxOS44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3BlbiA9IFwiTTE4LDhBMiwyIDAgMCwxIDIwLDEwVjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWMTBBMiwyIDAgMCwxIDYsOEgxNVY2QTMsMyAwIDAsMCAxMiwzQTMsMyAwIDAsMCA5LDZIN0E1LDUgMCAwLDEgMTIsMUE1LDUgMCAwLDEgMTcsNlY4SDE4TTEyLDE3QTIsMiAwIDAsMCAxNCwxNUEyLDIgMCAwLDAgMTIsMTNBMiwyIDAgMCwwIDEwLDE1QTIsMiAwIDAsMCAxMiwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3BlbkFsZXJ0ID0gXCJNMTYgOEMxNy4xIDggMTggOC45IDE4IDEwVjIwQzE4IDIxLjEgMTcuMSAyMiAxNiAyMkg0QzIuOSAyMiAyIDIxLjEgMiAyMFYxMEMyIDguOSAyLjkgOCA0IDhIMTNWNkMxMyA0LjMgMTEuNyAzIDEwIDNTNyA0LjMgNyA2SDVDNSAzLjIgNy4yIDEgMTAgMVMxNSAzLjIgMTUgNlY4SDE2TTEwIDE3QzExLjEgMTcgMTIgMTYuMSAxMiAxNVMxMS4xIDEzIDEwIDEzIDggMTMuOSA4IDE1IDguOSAxNyAxMCAxN00yMiAxM0gyMFY3SDIyVjEzTTIyIDE3SDIwVjE1SDIyVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPcGVuQWxlcnRPdXRsaW5lID0gXCJNMTYgMjBWMTBINFYyMEgxNk0xNiA4QzE3LjEgOCAxOCA4LjkgMTggMTBWMjBDMTggMjEuMSAxNy4xIDIyIDE2IDIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjEwQzIgOC45IDIuOSA4IDQgOEgxM1Y2QzEzIDQuMyAxMS43IDMgMTAgM1M3IDQuMyA3IDZINUM1IDMuMiA3LjIgMSAxMCAxUzE1IDMuMiAxNSA2VjhIMTZNMTAgMTdDOC45IDE3IDggMTYuMSA4IDE1UzguOSAxMyAxMCAxMyAxMiAxMy45IDEyIDE1IDExLjEgMTcgMTAgMTdNMjIgN0gyMFYxM0gyMlY3TTIyIDE1SDIwVjE3SDIyVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPcGVuQ2hlY2sgPSBcIk0xOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOVYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4SDE3VjZDMTcgMy4yNCAxNC43NiAxIDEyIDFTNyAzLjI0IDcgNkg5QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhINkM0Ljg5IDggNCA4LjkgNCAxMFYyMEM0IDIxLjEgNC44OSAyMiA2IDIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMSAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM00xMiAxN0MxMC45IDE3IDEwIDE2LjExIDEwIDE1UzEwLjkgMTMgMTIgMTMgMTQgMTMuOSAxNCAxNSAxMy4xMSAxNyAxMiAxN00yMi41IDE3LjI1TDE3Ljc1IDIyTDE1IDE5TDE2LjE2IDE3Ljg0TDE3Ljc1IDE5LjQzTDIxLjM0IDE1Ljg0TDIyLjUgMTcuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5DaGVja091dGxpbmUgPSBcIk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN1MxMCAxNi4xMSAxMCAxNSAxMC45IDEzIDEyIDEzIDE0IDEzLjkgMTQgMTVNNiAyMFYxMEgxOFYxMy4wOUMxOC4zMyAxMy4wNCAxOC42NiAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOVYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4SDE3VjZDMTcgMy4yNCAxNC43NiAxIDEyIDFTNyAzLjI0IDcgNkg5QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhINkM0Ljg5IDggNCA4LjkgNCAxMFYyMEM0IDIxLjEgNC44OSAyMiA2IDIySDEzLjgxQzEzLjQ2IDIxLjM5IDEzLjIyIDIwLjcyIDEzLjA5IDIwSDZNMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNMMTYuMTYgMTcuODRMMTUgMTlMMTcuNzUgMjJMMjIuNSAxNy4yNUwyMS4zNCAxNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3Blbk1pbnVzID0gXCJNMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlWMTBDMjAgOC45IDE5LjExIDggMTggOEgxN1Y2QzE3IDMuMjQgMTQuNzYgMSAxMiAxUzcgMy4yNCA3IDZIOUM5IDQuMzQgMTAuMzQgMyAxMiAzUzE1IDQuMzQgMTUgNlY4SDZDNC44OSA4IDQgOC45IDQgMTBWMjBDNCAyMS4xIDQuODkgMjIgNiAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNMTIgMTdDMTAuOSAxNyAxMCAxNi4xMSAxMCAxNVMxMC45IDEzIDEyIDEzIDE0IDEzLjkgMTQgMTUgMTMuMTEgMTcgMTIgMTdNMjMgMThWMjBIMTVWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5NaW51c091dGxpbmUgPSBcIk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN1MxMCAxNi4xMSAxMCAxNSAxMC45IDEzIDEyIDEzIDE0IDEzLjkgMTQgMTVNNiAyMFYxMEgxOFYxMy4wOUMxOC4zMyAxMy4wNCAxOC42NiAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOVYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4SDE3VjZDMTcgMy4yNCAxNC43NiAxIDEyIDFTNyAzLjI0IDcgNkg5QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhINkM0Ljg5IDggNCA4LjkgNCAxMFYyMEM0IDIxLjEgNC44OSAyMiA2IDIySDEzLjgxQzEzLjQ2IDIxLjM5IDEzLjIyIDIwLjcyIDEzLjA5IDIwSDZNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5PdXRsaW5lID0gXCJNMTgsMjBWMTBINlYyMEgxOE0xOCw4QTIsMiAwIDAsMSAyMCwxMFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjEwQTIsMiAwIDAsMSA2LDhIMTVWNkEzLDMgMCAwLDAgMTIsM0EzLDMgMCAwLDAgOSw2SDdBNSw1IDAgMCwxIDEyLDFBNSw1IDAgMCwxIDE3LDZWOEgxOE0xMiwxN0EyLDIgMCAwLDEgMTAsMTVBMiwyIDAgMCwxIDEyLDEzQTIsMiAwIDAsMSAxNCwxNUEyLDIgMCAwLDEgMTIsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5QbHVzID0gXCJNMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlWMTBDMjAgOC45IDE5LjExIDggMTggOEgxN1Y2QzE3IDMuMjQgMTQuNzYgMSAxMiAxUzcgMy4yNCA3IDZIOUM5IDQuMzQgMTAuMzQgMyAxMiAzUzE1IDQuMzQgMTUgNlY4SDZDNC44OSA4IDQgOC45IDQgMTBWMjBDNCAyMS4xIDQuODkgMjIgNiAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNMTIgMTdDMTAuOSAxNyAxMCAxNi4xMSAxMCAxNVMxMC45IDEzIDEyIDEzIDE0IDEzLjkgMTQgMTUgMTMuMTEgMTcgMTIgMTdNMjMgMThWMjBIMjBWMjNIMThWMjBIMTVWMThIMThWMTVIMjBWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5QbHVzT3V0bGluZSA9IFwiTTE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3UzEwIDE2LjExIDEwIDE1IDEwLjkgMTMgMTIgMTMgMTQgMTMuOSAxNCAxNU02IDIwVjEwSDE4VjEzLjA5QzE4LjMzIDEzLjA0IDE4LjY2IDEzIDE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2SDlDOSA0LjM0IDEwLjM0IDMgMTIgM1MxNSA0LjM0IDE1IDZWOEg2QzQuODkgOCA0IDguOSA0IDEwVjIwQzQgMjEuMSA0Ljg5IDIyIDYgMjJIMTMuODFDMTMuNDYgMjEuMzkgMTMuMjIgMjAuNzIgMTMuMDkgMjBINk0yMCAxOFYxNUgxOFYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3BlblJlbW92ZSA9IFwiTTE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2SDlDOSA0LjM0IDEwLjM0IDMgMTIgM1MxNSA0LjM0IDE1IDZWOEg2QzQuODkgOCA0IDguOSA0IDEwVjIwQzQgMjEuMSA0Ljg5IDIyIDYgMjJIMTMuODFDMTMuMyAyMS4xMiAxMyAyMC4xIDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzTTEyIDE3QzEwLjkgMTcgMTAgMTYuMTEgMTAgMTVTMTAuOSAxMyAxMiAxMyAxNCAxMy45IDE0IDE1IDEzLjExIDE3IDEyIDE3TTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPcGVuUmVtb3ZlT3V0bGluZSA9IFwiTTE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3UzEwIDE2LjExIDEwIDE1IDEwLjkgMTMgMTIgMTMgMTQgMTMuOSAxNCAxNU02IDIwVjEwSDE4VjEzLjA5QzE4LjMzIDEzLjA0IDE4LjY2IDEzIDE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2SDlDOSA0LjM0IDEwLjM0IDMgMTIgM1MxNSA0LjM0IDE1IDZWOEg2QzQuODkgOCA0IDguOSA0IDEwVjIwQzQgMjEuMSA0Ljg5IDIyIDYgMjJIMTMuODFDMTMuNDYgMjEuMzkgMTMuMjIgMjAuNzIgMTMuMDkgMjBINk0yMi41NCAxNi44OEwyMS4xMiAxNS40N0wxOSAxNy41OUwxNi44OCAxNS40N0wxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3BlblZhcmlhbnQgPSBcIk0xOCAxQzE1LjI0IDEgMTMgMy4yNCAxMyA2VjhINEMyLjkgOCAyIDguODkgMiAxMFYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDE2QzE3LjExIDIyIDE4IDIxLjExIDE4IDIwVjEwQzE4IDguOSAxNy4xMSA4IDE2IDhIMTVWNkMxNSA0LjM0IDE2LjM0IDMgMTggM0MxOS42NiAzIDIxIDQuMzQgMjEgNlY4SDIzVjZDMjMgMy4yNCAyMC43NiAxIDE4IDFNMTAgMTNDMTEuMSAxMyAxMiAxMy44OSAxMiAxNUMxMiAxNi4xMSAxMS4xMSAxNyAxMCAxN0M4LjkgMTcgOCAxNi4xMSA4IDE1QzggMTMuOSA4LjkgMTMgMTAgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5WYXJpYW50T3V0bGluZSA9IFwiTTEwIDEzQzExLjEgMTMgMTIgMTMuODkgMTIgMTVDMTIgMTYuMTEgMTEuMTEgMTcgMTAgMTdTOCAxNi4xMSA4IDE1IDguOSAxMyAxMCAxM00xOCAxQzE1LjI0IDEgMTMgMy4yNCAxMyA2VjhINEMyLjkgOCAyIDguOSAyIDEwVjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgxNkMxNy4xIDIyIDE4IDIxLjEgMTggMjBWMTBDMTggOC45IDE3LjEgOCAxNiA4SDE1VjZDMTUgNC4zNCAxNi4zNCAzIDE4IDNTMjEgNC4zNCAyMSA2VjhIMjNWNkMyMyAzLjI0IDIwLjc2IDEgMTggMU0xNiAxMFYyMEg0VjEwSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPdXRsaW5lID0gXCJNMTIsMTdDMTAuODksMTcgMTAsMTYuMSAxMCwxNUMxMCwxMy44OSAxMC44OSwxMyAxMiwxM0EyLDIgMCAwLDEgMTQsMTVBMiwyIDAgMCwxIDEyLDE3TTE4LDIwVjEwSDZWMjBIMThNMTgsOEEyLDIgMCAwLDEgMjAsMTBWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFYxMEM0LDguODkgNC44OSw4IDYsOEg3VjZBNSw1IDAgMCwxIDEyLDFBNSw1IDAgMCwxIDE3LDZWOEgxOE0xMiwzQTMsMyAwIDAsMCA5LDZWOEgxNVY2QTMsMyAwIDAsMCAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tQYXR0ZXJuID0gXCJNNywzQTQsNCAwIDAsMSAxMSw3QzExLDguODYgOS43MywxMC40MyA4LDEwLjg3VjEzLjEzQzguMzcsMTMuMjIgOC43MiwxMy4zNyA5LjA0LDEzLjU2TDEzLjU2LDkuMDRDMTMuMiw4LjQ0IDEzLDcuNzUgMTMsN0E0LDQgMCAwLDEgMTcsM0E0LDQgMCAwLDEgMjEsN0E0LDQgMCAwLDEgMTcsMTFDMTYuMjYsMTEgMTUuNTcsMTAuOCAxNSwxMC40NUwxMC40NSwxNUMxMC44LDE1LjU3IDExLDE2LjI2IDExLDE3QTQsNCAwIDAsMSA3LDIxQTQsNCAwIDAsMSAzLDE3QzMsMTUuMTQgNC4yNywxMy41NyA2LDEzLjEzVjEwLjg3QzQuMjcsMTAuNDMgMyw4Ljg2IDMsN0E0LDQgMCAwLDEgNywzTTE3LDEzQTQsNCAwIDAsMSAyMSwxN0E0LDQgMCAwLDEgMTcsMjFBNCw0IDAgMCwxIDEzLDE3QTQsNCAwIDAsMSAxNywxM00xNywxNUEyLDIgMCAwLDAgMTUsMTdBMiwyIDAgMCwwIDE3LDE5QTIsMiAwIDAsMCAxOSwxN0EyLDIgMCAwLDAgMTcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja1BsdXMgPSBcIk0xOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOVYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4SDE3VjZDMTcgMy4yNCAxNC43NiAxIDEyIDFTNyAzLjI0IDcgNlY4SDZDNC45IDggNCA4Ljg5IDQgMTBWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMTMuODFDMTMuMyAyMS4xMiAxMyAyMC4xIDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzTTkgNkM5IDQuMzQgMTAuMzQgMyAxMiAzUzE1IDQuMzQgMTUgNlY4SDlWNk0xMiAxN0MxMC45IDE3IDEwIDE2LjExIDEwIDE1UzEwLjkgMTMgMTIgMTNDMTMuMSAxMyAxNCAxMy44OSAxNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN00yMyAxOFYyMEgyMFYyM0gxOFYyMEgxNVYxOEgxOFYxNUgyMFYxOEgyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrUGx1c091dGxpbmUgPSBcIk02IDIwVjEwSDE4VjEzLjA5QzE4LjMzIDEzLjA0IDE4LjY2IDEzIDE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2VjhINkM0Ljg5IDggNCA4Ljg5IDQgMTBWMjBDNCAyMS4xIDQuODkgMjIgNiAyMkgxMy44MUMxMy40NiAyMS4zOSAxMy4yMiAyMC43MiAxMy4wOSAyMEg2TTkgNkM5IDQuMzQgMTAuMzQgMyAxMiAzUzE1IDQuMzQgMTUgNlY4SDlWNk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN0MxMC44OSAxNyAxMCAxNi4xIDEwIDE1QzEwIDEzLjg5IDEwLjg5IDEzIDEyIDEzQzEzLjExIDEzIDE0IDEzLjkgMTQgMTVNMjMgMThWMjBIMjBWMjNIMThWMjBIMTVWMThIMThWMTVIMjBWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja1F1ZXN0aW9uID0gXCJNMTIsMUE1LDUgMCAwLDAgNyw2VjhINkEyLDIgMCAwLDAgNCwxMFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWMTBBMiwyIDAgMCwwIDE4LDhIMTdWNkE1LDUgMCAwLDAgMTIsMU0xMiwyLjlDMTMuNzEsMi45IDE1LjEsNC4yOSAxNS4xLDZWOEg4LjlWNkM4LjksNC4yOSAxMC4yOSwyLjkgMTIsMi45TTEyLjE5LDEwLjVDMTMuMTMsMTAuNSAxMy44OCwxMC43MSAxNC40MiwxMS4xMkMxNC45NiwxMS41NCAxNS4yMywxMi4xIDE1LjIzLDEyLjhDMTUuMjMsMTMuMjQgMTUuMDgsMTMuNjMgMTQuNzksMTRDMTQuNSwxNC4zNiAxNC4xMiwxNC42NCAxMy42NiwxNC44NUMxMy40LDE1IDEzLjIzLDE1LjE1IDEzLjE0LDE1LjMyQzEzLjA1LDE1LjUgMTMsMTUuNzIgMTMsMTZIMTFDMTEsMTUuNSAxMS4xLDE1LjE2IDExLjI5LDE0LjkyQzExLjUsMTQuNjggMTEuODQsMTQuNCAxMi4zNiwxNC4wOEMxMi42MiwxMy45NCAxMi44MywxMy43NiAxMywxMy41NEMxMy4xNCwxMy4zMyAxMy4yMiwxMy4wOCAxMy4yMiwxMi44QzEzLjIyLDEyLjUgMTMuMTMsMTIuMjggMTIuOTUsMTIuMTFDMTIuNzcsMTEuOTMgMTIuNSwxMS44NSAxMi4xOSwxMS44NUMxMS45MiwxMS44NSAxMS43LDExLjkyIDExLjUsMTIuMDZDMTEuMzQsMTIuMiAxMS4yNCwxMi40MSAxMS4yNCwxMi42OUg5LjI3QzkuMjIsMTIgOS41LDExLjQgMTAuMDUsMTEuMDRDMTAuNTksMTAuNjggMTEuMywxMC41IDEyLjE5LDEwLjVNMTEsMTdIMTNWMTlIMTFWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja1JlbW92ZSA9IFwiTTE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2VjhINkM0LjkgOCA0IDguODkgNCAxMFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNOSA2QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhIOVY2TTEyIDE3QzEwLjkgMTcgMTAgMTYuMTEgMTAgMTVTMTAuOSAxMyAxMiAxM0MxMy4xIDEzIDE0IDEzLjg5IDE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3TTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tSZW1vdmVPdXRsaW5lID0gXCJNMTQgMTVDMTQgMTYuMTEgMTMuMTEgMTcgMTIgMTdDMTAuODkgMTcgMTAgMTYuMSAxMCAxNUMxMCAxMy44OSAxMC44OSAxMyAxMiAxM0MxMy4xMSAxMyAxNCAxMy45IDE0IDE1TTEzLjA5IDIwQzEzLjIxIDIwLjcyIDEzLjQ2IDIxLjM5IDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjEgNCAyMFYxMEM0IDguODkgNC44OSA4IDYgOEg3VjZDNyAzLjI0IDkuMjQgMSAxMiAxUzE3IDMuMjQgMTcgNlY4SDE4QzE5LjExIDggMjAgOC45IDIwIDEwVjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjEwSDZWMjBIMTMuMDlNOSA4SDE1VjZDMTUgNC4zNCAxMy42NiAzIDEyIDNTOSA0LjM0IDkgNlY4TTIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ3TDE5IDE3LjU5TDE2Ljg4IDE1LjQ3TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tSZXNldCA9IFwiTTEyLjYzLDJDMTguMTYsMiAyMi42NCw2LjUgMjIuNjQsMTJDMjIuNjQsMTcuNSAxOC4xNiwyMiAxMi42MywyMkM5LjEyLDIyIDYuMDUsMjAuMTggNC4yNiwxNy40M0w1Ljg0LDE2LjE4QzcuMjUsMTguNDcgOS43NiwyMCAxMi42NCwyMEE4LDggMCAwLDAgMjAuNjQsMTJBOCw4IDAgMCwwIDEyLjY0LDRDOC41Niw0IDUuMiw3LjA2IDQuNzEsMTFINy40N0wzLjczLDE0LjczTDAsMTFIMi42OUMzLjE5LDUuOTUgNy40NSwyIDEyLjYzLDJNMTUuNTksMTAuMjRDMTYuMDksMTAuMjUgMTYuNSwxMC42NSAxNi41LDExLjE2VjE1Ljc3QzE2LjUsMTYuMjcgMTYuMDksMTYuNjkgMTUuNTgsMTYuNjlIMTAuMDVDOS41NCwxNi42OSA5LjEzLDE2LjI3IDkuMTMsMTUuNzdWMTEuMTZDOS4xMywxMC42NSA5LjU0LDEwLjI1IDEwLjA0LDEwLjI0VjkuMjNDMTAuMDQsNy43IDExLjI5LDYuNDYgMTIuODEsNi40NkMxNC4zNCw2LjQ2IDE1LjU5LDcuNyAxNS41OSw5LjIzVjEwLjI0TTEyLjgxLDcuODZDMTIuMDYsNy44NiAxMS40NCw4LjQ3IDExLjQ0LDkuMjNWMTAuMjRIMTQuMTlWOS4yM0MxNC4xOSw4LjQ3IDEzLjU3LDcuODYgMTIuODEsNy44NlpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrU21hcnQgPSBcIk0xMiwyQTYsNiAwIDAsMCA2LDhWMTZBNiw2IDAgMCwwIDEyLDIyQTYsNiAwIDAsMCAxOCwxNlY4QTYsNiAwIDAsMCAxMiwyTTgsNkgxMFY4SDhWNk0xMSw2SDEzVjhIMTFWNk0xNCw2SDE2VjhIMTRWNk04LDlIMTBWMTFIOFY5TTExLDlIMTNWMTFIMTFWOU0xNCw5SDE2VjExSDE0VjlNOCwxMkgxMFYxNEg4VjEyTTExLDEySDEzVjE0SDExVjEyTTE0LDEySDE2VjE0SDE0VjEyTTEyLDE2QTIsMiAwIDAsMSAxNCwxOEEyLDIgMCAwLDEgMTIsMjBBMiwyIDAgMCwxIDEwLDE4QTIsMiAwIDAsMSAxMiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrZXIgPSBcIk04LDJIMTZBMiwyIDAgMCwxIDE4LDRWMjBBMiwyIDAgMCwxIDE2LDIySDhBMiwyIDAgMCwxIDYsMjBWNEEyLDIgMCAwLDEgOCwyTTgsNFYyMEgxNlY0SDhNMTAsMTNIMTJWMTdIMTBWMTNNMTAsNkgxNFY3LjVIMTBWNk0xMCw5SDE0VjEwLjVIMTBWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrZXJNdWx0aXBsZSA9IFwiTTMsMkgyMUEyLDIgMCAwLDEgMjMsNFYyMEEyLDIgMCAwLDEgMjEsMjJIM0EyLDIgMCAwLDEgMSwyMFY0QTIsMiAwIDAsMSAzLDJNMTMsNFYyMEgyMVY0SDEzTTMsNFYyMEgxMVY0SDNNNSwxM0g3VjE3SDVWMTNNNSw2SDlWNy41SDVWNk01LDlIOVYxMC41SDVWOU0xNSwxM0gxN1YxN0gxNVYxM00xNSw2SDE5VjcuNUgxNVY2TTE1LDlIMTlWMTAuNUgxNVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvZ2luID0gXCJNMTAsMTdWMTRIM1YxMEgxMFY3TDE1LDEyTDEwLDE3TTEwLDJIMTlBMiwyIDAgMCwxIDIxLDRWMjBBMiwyIDAgMCwxIDE5LDIySDEwQTIsMiAwIDAsMSA4LDIwVjE4SDEwVjIwSDE5VjRIMTBWNkg4VjRBMiwyIDAgMCwxIDEwLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9naW5WYXJpYW50ID0gXCJNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjlINVY1SDE5VjE5SDVWMTVIM1YxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzTTEwLjA4LDE1LjU4TDExLjUsMTdMMTYuNSwxMkwxMS41LDdMMTAuMDgsOC40MUwxMi42NywxMUgzVjEzSDEyLjY3TDEwLjA4LDE1LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvZ291dCA9IFwiTTE2LDE3VjE0SDlWMTBIMTZWN0wyMSwxMkwxNiwxN00xNCwyQTIsMiAwIDAsMSAxNiw0VjZIMTRWNEg1VjIwSDE0VjE4SDE2VjIwQTIsMiAwIDAsMSAxNCwyMkg1QTIsMiAwIDAsMSAzLDIwVjRBMiwyIDAgMCwxIDUsMkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2dvdXRWYXJpYW50ID0gXCJNMTQuMDgsMTUuNTlMMTYuNjcsMTNIN1YxMUgxNi42N0wxNC4wOCw4LjQxTDE1LjUsN0wyMC41LDEyTDE1LjUsMTdMMTQuMDgsMTUuNTlNMTksM0EyLDIgMCAwLDEgMjEsNVY5LjY3TDE5LDcuNjdWNUg1VjE5SDE5VjE2LjMzTDIxLDE0LjMzVjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlMb25naXR1ZGUgPSBcIk0xMiAyQTEwIDEwIDAgMSAwIDIyIDEyQTEwLjAzIDEwLjAzIDAgMCAwIDEyIDJNOS40IDE5LjZBOC4wNSA4LjA1IDAgMCAxIDkuNCA0LjRBMTYuNDUgMTYuNDUgMCAwIDAgNy41IDEyQTE2LjQ1IDE2LjQ1IDAgMCAwIDkuNCAxOS42TTEyIDIwQTEzLjgxIDEzLjgxIDAgMCAxIDkuNSAxMkExMy44MSAxMy44MSAwIDAgMSAxMiA0QTEzLjgxIDEzLjgxIDAgMCAxIDE0LjUgMTJBMTMuODEgMTMuODEgMCAwIDEgMTIgMjBNMTQuNiAxOS42QTE2LjE1IDE2LjE1IDAgMCAwIDE0LjYgNC40QTguMDMgOC4wMyAwIDAgMSAyMCAxMkE3LjkgNy45IDAgMCAxIDE0LjYgMTkuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMb29rcyA9IFwiTTEyLDZBMTEsMTEgMCAwLDAgMSwxN0gzQzMsMTIuMDQgNy4wNCw4IDEyLDhDMTYuOTYsOCAyMSwxMi4wNCAyMSwxN0gyM0ExMSwxMSAwIDAsMCAxMiw2TTEyLDEwQzguMTQsMTAgNSwxMy4xNCA1LDE3SDdBNSw1IDAgMCwxIDEyLDEyQTUsNSAwIDAsMSAxNywxN0gxOUMxOSwxMy4xNCAxNS44NiwxMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb3Rpb24gPSBcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0UzE4LjUgNS42NiAxOC41IDYuNUMxOC41IDcuMzMgMTcuODMgOCAxNyA4UzE1LjUgNy4zMyAxNS41IDYuNU0xOS41IDE1QzIwLjg4IDE1IDIyIDEzLjg4IDIyIDEyLjVDMjIgMTAuODMgMTkuNSA4IDE5LjUgOFMxNyAxMC44MyAxNyAxMi41QzE3IDEzLjg4IDE4LjEyIDE1IDE5LjUgMTVNMTYgMTJWMjJINFYxMkM0IDkuMDMgNi4xNiA2LjU3IDkgNi4wOVY0SDdWMkgxM0MxNC4xMyAyIDE1LjE1IDIuMzkgMTYgM0wxNC41NiA0LjQ0QzE0LjEgNC4xNyAxMy41NyA0IDEzIDRIMTFWNi4wOUMxMy44NCA2LjU3IDE2IDkuMDMgMTYgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG90aW9uT3V0bGluZSA9IFwiTTE1LjUgNi41QzE1LjUgNS42NiAxNyA0IDE3IDRTMTguNSA1LjY2IDE4LjUgNi41QzE4LjUgNy4zMyAxNy44MyA4IDE3IDhTMTUuNSA3LjMzIDE1LjUgNi41TTE5LjUgMTVDMjAuODggMTUgMjIgMTMuODggMjIgMTIuNUMyMiAxMC44MyAxOS41IDggMTkuNSA4UzE3IDEwLjgzIDE3IDEyLjVDMTcgMTMuODggMTguMTIgMTUgMTkuNSAxNU0xNiAxMlYyMEMxNiAyMS4xIDE1LjEgMjIgMTQgMjJINkM0LjkgMjIgNCAyMS4xIDQgMjBWMTJDNCA5LjAzIDYuMTYgNi41NyA5IDYuMDlWNEg3VjJIMTNDMTQuMTMgMiAxNS4xNSAyLjM5IDE2IDNMMTQuNTYgNC40NEMxNC4xIDQuMTcgMTMuNTcgNCAxMyA0SDExVjYuMDlDMTMuODQgNi41NyAxNiA5LjAzIDE2IDEyTTE0IDEyQzE0IDkuNzkgMTIuMjEgOCAxMCA4UzYgOS43OSA2IDEyVjIwSDE0VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvdGlvblBsdXMgPSBcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0UzE4LjUgNS42NiAxOC41IDYuNUMxOC41IDcuMzMgMTcuODMgOCAxNyA4UzE1LjUgNy4zMyAxNS41IDYuNU0xOS41IDE1QzIwLjg4IDE1IDIyIDEzLjg4IDIyIDEyLjVDMjIgMTAuODMgMTkuNSA4IDE5LjUgOFMxNyAxMC44MyAxNyAxMi41QzE3IDEzLjg4IDE4LjEyIDE1IDE5LjUgMTVNMTMgMTRIMTFWMTJIOVYxNEg3VjE2SDlWMThIMTFWMTZIMTNWMTRNMTYgMTJWMjJINFYxMkM0IDkuMDMgNi4xNiA2LjU3IDkgNi4wOVY0SDdWMkgxM0MxNC4xMyAyIDE1LjE1IDIuMzkgMTYgM0wxNC41NiA0LjQ0QzE0LjEgNC4xNyAxMy41NyA0IDEzIDRIMTFWNi4wOUMxMy44NCA2LjU3IDE2IDkuMDMgMTYgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG90aW9uUGx1c091dGxpbmUgPSBcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0UzE4LjUgNS42NiAxOC41IDYuNUMxOC41IDcuMzMgMTcuODMgOCAxNyA4UzE1LjUgNy4zMyAxNS41IDYuNU0xOS41IDE1QzIwLjg4IDE1IDIyIDEzLjg4IDIyIDEyLjVDMjIgMTAuODMgMTkuNSA4IDE5LjUgOFMxNyAxMC44MyAxNyAxMi41QzE3IDEzLjg4IDE4LjEyIDE1IDE5LjUgMTVNMTMgMTRIMTFWMTJIOVYxNEg3VjE2SDlWMThIMTFWMTZIMTNWMTRNMTYgMTJWMjBDMTYgMjEuMSAxNS4xIDIyIDE0IDIySDZDNC45IDIyIDQgMjEuMSA0IDIwVjEyQzQgOS4wMyA2LjE2IDYuNTcgOSA2LjA5VjRIN1YySDEzQzE0LjEzIDIgMTUuMTUgMi4zOSAxNiAzTDE0LjU2IDQuNDRDMTQuMSA0LjE3IDEzLjU3IDQgMTMgNEgxMVY2LjA5QzEzLjg0IDYuNTcgMTYgOS4wMyAxNiAxMk0xNCAxMkMxNCA5Ljc5IDEyLjIxIDggMTAgOFM2IDkuNzkgNiAxMlYyMEgxNFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlMb3VwZSA9IFwiTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsMTJDMjAsMTYuNDEgMTYuNDEsMjAgMTIsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIySDIwQTIsMiAwIDAsMCAyMiwyMFYxMkExMCwxMCAwIDAsMCAxMiwyTTEzLDdIMTFWMTFIN1YxM0gxMVYxN0gxM1YxM0gxN1YxMUgxM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUx1bXggPSBcIk0xMi4zNSwxLjc1TDIwLjEzLDkuNTNMMTMuNzcsMTUuODlMMTIuMzUsMTQuNDdMMTcuMyw5LjUzTDEwLjk0LDMuMTZMMTIuMzUsMS43NU0xNS44OSw5LjUzTDE0LjQ3LDEwLjk0TDEwLjIzLDYuN0w1LjI4LDExLjY1TDMuODcsMTAuMjNMMTAuMjMsMy44N0wxNS44OSw5LjUzTTEwLjIzLDguMTFMMTEuNjUsOS41M0w2LjcsMTQuNDdMMTMuMDYsMjAuODRMMTEuNjUsMjIuMjVMMy44NywxNC40N0wxMC4yMyw4LjExTTguMTEsMTQuNDdMOS41MywxMy4wNkwxMy43NywxNy4zTDE4LjcyLDEyLjM1TDIwLjEzLDEzLjc3TDEzLjc3LDIwLjEzTDguMTEsMTQuNDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTHVuZ3MgPSBcIk0xNS40NyAzLjExQzE1IDIuODUgMTQuMzcgMy4wNSAxNC4xMSAzLjU0QzE0LjA0IDMuNjggMTQgMy44NCAxNCA0VjYuNTlMMTMuMjkgNS44OEMxMy4xIDUuNjkgMTMgNS40NCAxMyA1LjE4VjFIMTFWNS4xN0MxMSA1LjQ0IDEwLjkgNS42OSAxMC43MSA1Ljg4TDEwIDYuNTlWNEMxMCAzLjQ0IDkuNTQgMyA5IDNDOC44MyAzIDguNjcgMy4wNCA4LjUzIDMuMTFDNC43MiA1IDIgOS45NyAyIDE1Ljc3QzIgMTcuNjcgMi4zMyAxOS41NSAzIDIxLjMyQzMuMTkgMjEuODUgMy43NiAyMi4xMyA0LjI5IDIxLjk0QzQuMzQgMjEuOTIgNC4zOSAyMS45IDQuNDQgMjEuODdMOS41IDE5LjA3QzkuODEgMTguOSAxMCAxOC41NiAxMCAxOC4xOVY5LjQxTDExLjMgOC4xMkMxMS42OSA3LjczIDEyLjMyIDcuNzMgMTIuNzEgOC4xMkwxNCA5LjQyVjE4LjJDMTQgMTguNTYgMTQuMjEgMTguOSAxNC41IDE5LjA4TDE5LjU4IDIxLjg4QzIwLjA3IDIyLjE0IDIwLjY4IDIxLjk2IDIwLjk0IDIxLjQ2QzIwLjk2IDIxLjQyIDIxIDIxLjM3IDIxIDIxLjMyQzIxLjY3IDE5LjU1IDIyIDE3LjY3IDIyIDE1Ljc3QzIyIDkuOTcgMTkuMjkgNSAxNS40NyAzLjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25ldCA9IFwiTTMsN1YxM0E5LDkgMCAwLDAgMTIsMjJBOSw5IDAgMCwwIDIxLDEzVjdIMTdWMTNBNSw1IDAgMCwxIDEyLDE4QTUsNSAwIDAsMSA3LDEzVjdNMTcsNUgyMVYySDE3TTMsNUg3VjJIM1wiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25ldE9uID0gXCJNMyw3VjEzQTksOSAwIDAsMCAxMiwyMkE5LDkgMCAwLDAgMjEsMTNWN0gxN1YxM0E1LDUgMCAwLDEgMTIsMThBNSw1IDAgMCwxIDcsMTNWN00xNyw1SDIxVjJIMTdNMyw1SDdWMkgzTTEzLDEuNUw5LDlIMTFWMTQuNUwxNSw3SDEzVjEuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYWduaWZ5ID0gXCJNOS41LDNBNi41LDYuNSAwIDAsMSAxNiw5LjVDMTYsMTEuMTEgMTUuNDEsMTIuNTkgMTQuNDQsMTMuNzNMMTQuNzEsMTRIMTUuNUwyMC41LDE5TDE5LDIwLjVMMTQsMTUuNVYxNC43MUwxMy43MywxNC40NEMxMi41OSwxNS40MSAxMS4xMSwxNiA5LjUsMTZBNi41LDYuNSAwIDAsMSAzLDkuNUE2LjUsNi41IDAgMCwxIDkuNSwzTTkuNSw1QzcsNSA1LDcgNSw5LjVDNSwxMiA3LDE0IDkuNSwxNEMxMiwxNCAxNCwxMiAxNCw5LjVDMTQsNyAxMiw1IDkuNSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25pZnlDbG9zZSA9IFwiTTksMkE3LDcgMCAwLDEgMTYsOUMxNiwxMC41IDE1LjUsMTIgMTQuNjEsMTMuMTlMMTUuNDEsMTRIMTZMMjIsMjBMMjAsMjJMMTQsMTZWMTUuNDFMMTMuMTksMTQuNjFDMTIsMTUuNSAxMC41LDE2IDksMTZBNyw3IDAgMCwxIDIsOUE3LDcgMCAwLDEgOSwyTTExLjEyLDUuNDZMOSw3LjU5TDYuODgsNS40Nkw1LjQ2LDYuODhMNy41OSw5TDUuNDYsMTEuMTJMNi44OCwxMi41NEw5LDEwLjQxTDExLjEyLDEyLjU0TDEyLjU0LDExLjEyTDEwLjQxLDlMMTIuNTQsNi44OEwxMS4xMiw1LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25pZnlNaW51cyA9IFwiTTksMkE3LDcgMCAwLDEgMTYsOUMxNiwxMC41NyAxNS41LDEyIDE0LjYxLDEzLjE5TDE1LjQxLDE0SDE2TDIyLDIwTDIwLDIyTDE0LDE2VjE1LjQxTDEzLjE5LDE0LjYxQzEyLDE1LjUgMTAuNTcsMTYgOSwxNkE3LDcgMCAwLDEgMiw5QTcsNyAwIDAsMSA5LDJNNSw4VjEwSDEzVjhINVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYWduaWZ5TWludXNDdXJzb3IgPSBcIk0xMSw0QTcsNyAwIDAsMSAxOCwxMUMxOCwxMi41IDE3LjUsMTQgMTYuNjEsMTUuMTlMMTcuNDIsMTZIMThMMjMsMjFMMjEsMjNMMTYsMThWMTcuNDFMMTUuMTksMTYuNkMxMi4xLDE4LjkyIDcuNzEsMTguMjkgNS4zOSwxNS4yQzMuMDcsMTIuMTEgMy43LDcuNzIgNi43OSw1LjRDOCw0LjUgOS41LDQgMTEsNE03LDEwVjEySDE1VjEwSDdNMSwxVjhMOCwxSDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFnbmlmeU1pbnVzT3V0bGluZSA9IFwiTTE1LjUsMTRIMTQuNzFMMTQuNDMsMTMuNzNDMTUuNDEsMTIuNTkgMTYsMTEuMTEgMTYsOS41QTYuNSw2LjUgMCAwLDAgOS41LDNBNi41LDYuNSAwIDAsMCAzLDkuNUE2LjUsNi41IDAgMCwwIDkuNSwxNkMxMS4xMSwxNiAxMi41OSwxNS40MSAxMy43MywxNC40M0wxNCwxNC43MVYxNS41TDE5LDIwLjVMMjAuNSwxOUwxNS41LDE0TTkuNSwxNEM3LDE0IDUsMTIgNSw5LjVDNSw3IDcsNSA5LjUsNUMxMiw1IDE0LDcgMTQsOS41QzE0LDEyIDEyLDE0IDkuNSwxNE03LDlIMTJWMTBIN1Y5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25pZnlQbHVzID0gXCJNOSwyQTcsNyAwIDAsMSAxNiw5QzE2LDEwLjU3IDE1LjUsMTIgMTQuNjEsMTMuMTlMMTUuNDEsMTRIMTZMMjIsMjBMMjAsMjJMMTQsMTZWMTUuNDFMMTMuMTksMTQuNjFDMTIsMTUuNSAxMC41NywxNiA5LDE2QTcsNyAwIDAsMSAyLDlBNyw3IDAgMCwxIDksMk04LDVWOEg1VjEwSDhWMTNIMTBWMTBIMTNWOEgxMFY1SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFnbmlmeVBsdXNDdXJzb3IgPSBcIk0xMSw0QTcsNyAwIDAsMSAxOCwxMUMxOCwxMi41IDE3LjUsMTQgMTYuNjEsMTUuMTlMMTcuNDIsMTZIMThMMjMsMjFMMjEsMjNMMTYsMThWMTcuNDFMMTUuMTksMTYuNkMxMi4xLDE4LjkyIDcuNzEsMTguMjkgNS4zOSwxNS4yQzMuMDcsMTIuMTEgMy43LDcuNzIgNi43OSw1LjRDOCw0LjUgOS41LDQgMTEsNE0xMCw3VjEwSDdWMTJIMTBWMTVIMTJWMTJIMTVWMTBIMTJWN0gxME0xLDFWOEw4LDFIMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYWduaWZ5UGx1c091dGxpbmUgPSBcIk0xNS41LDE0TDIwLjUsMTlMMTksMjAuNUwxNCwxNS41VjE0LjcxTDEzLjczLDE0LjQzQzEyLjU5LDE1LjQxIDExLjExLDE2IDkuNSwxNkE2LjUsNi41IDAgMCwxIDMsOS41QTYuNSw2LjUgMCAwLDEgOS41LDNBNi41LDYuNSAwIDAsMSAxNiw5LjVDMTYsMTEuMTEgMTUuNDEsMTIuNTkgMTQuNDMsMTMuNzNMMTQuNzEsMTRIMTUuNU05LjUsMTRDMTIsMTQgMTQsMTIgMTQsOS41QzE0LDcgMTIsNSA5LjUsNUM3LDUgNSw3IDUsOS41QzUsMTIgNywxNCA5LjUsMTRNMTIsMTBIMTBWMTJIOVYxMEg3VjlIOVY3SDEwVjlIMTJWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFnbmlmeVJlbW92ZUN1cnNvciA9IFwiTTEgMVY4TDggMUgxTTE4IDE2SDE3LjQyTDE2LjYxIDE1LjE5QzE3LjUgMTQgMTggMTIuNSAxOCAxMUMxOCA3LjEzIDE0Ljg3IDQgMTEgNEM5LjUgNCA4IDQuNSA2Ljc5IDUuNEMzLjcgNy43MiAzLjA3IDEyLjExIDUuMzkgMTUuMkM3LjcxIDE4LjI5IDEyLjEgMTguOTIgMTUuMTkgMTYuNkwxNiAxNy40MVYxOEwyMSAyM0wyMyAyMUwxOCAxNk0xNC42IDEzLjE2TDEzLjE4IDE0LjU4TDExLjA2IDEyLjQ1TDguOTQgMTQuNThMNy41IDEzLjE2TDkuNjUgMTEuMDRMNy41IDguOTJMOC45NCA3LjVMMTEuMDYgOS42M0wxMy4xOCA3LjVMMTQuNiA4LjkyTDEyLjQ3IDExLjA0TDE0LjYgMTMuMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFnbmlmeVJlbW92ZU91dGxpbmUgPSBcIk0xNS41IDE0SDE0LjcxTDE0LjQzIDEzLjczQzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNUMxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2QzExLjExIDE2IDEyLjU5IDE1LjQxIDEzLjczIDE0LjQzTDE0IDE0LjcxVjE1LjVMMTkgMjAuNUwyMC41IDE5TDE1LjUgMTRNOS41IDE0QzcgMTQgNSAxMiA1IDkuNVM3IDUgOS41IDUgMTQgNyAxNCA5LjUgMTIgMTQgOS41IDE0TTEwLjkxIDExLjYyTDkuNSAxMC4yMUw4LjA5IDExLjYyTDcuMzggMTAuOTFMOC43OSA5LjVMNy4zOCA4LjA5TDguMDkgNy4zOEw5LjUgOC43OUwxMC45MSA3LjM4TDExLjYyIDguMDlMMTAuMjEgOS41TDExLjYyIDEwLjkxTDEwLjkxIDExLjYyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25pZnlTY2FuID0gXCJNMTcgMjJWMjBIMjBWMTdIMjJWMjAuNUMyMiAyMC44OSAyMS44NCAyMS4yNCAyMS41NCAyMS41NEMyMS4yNCAyMS44NCAyMC44OSAyMiAyMC41IDIySDE3TTcgMjJIMy41QzMuMTEgMjIgMi43NiAyMS44NCAyLjQ2IDIxLjU0QzIuMTYgMjEuMjQgMiAyMC44OSAyIDIwLjVWMTdINFYyMEg3VjIyTTE3IDJIMjAuNUMyMC44OSAyIDIxLjI0IDIuMTYgMjEuNTQgMi40NkMyMS44NCAyLjc2IDIyIDMuMTEgMjIgMy41VjdIMjBWNEgxN1YyTTcgMlY0SDRWN0gyVjMuNUMyIDMuMTEgMi4xNiAyLjc2IDIuNDYgMi40NkMyLjc2IDIuMTYgMy4xMSAyIDMuNSAySDdNMTAuNSA2QzEzIDYgMTUgOCAxNSAxMC41QzE1IDExLjM4IDE0Ljc1IDEyLjIgMTQuMzEgMTIuOUwxNy41NyAxNi4xNkwxNi4xNiAxNy41N0wxMi45IDE0LjMxQzEyLjIgMTQuNzUgMTEuMzggMTUgMTAuNSAxNUM4IDE1IDYgMTMgNiAxMC41QzYgOCA4IDYgMTAuNSA2TTEwLjUgOEM5LjEyIDggOCA5LjEyIDggMTAuNUM4IDExLjg4IDkuMTIgMTMgMTAuNSAxM0MxMS44OCAxMyAxMyAxMS44OCAxMyAxMC41QzEzIDkuMTIgMTEuODggOCAxMC41IDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbCA9IFwiTTIwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0TTE3LDE3SDdWMTVIMTdNMTcsMTNIN1YxMUgxN00yMCw5SDE3VjZIMjBcIjtcclxuZXhwb3J0IHZhciBtZGlNYWlsYm94ID0gXCJNMTcsNEg3QTUsNSAwIDAsMCAyLDlWMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjlBNSw1IDAgMCwwIDE3LDRNMTAsMThINFY5QTMsMyAwIDAsMSA3LDZBMywzIDAgMCwxIDEwLDlWMThNMTksMTVIMTdWMTNIMTNWMTFIMTlWMTVNOSwxMUg1VjlIOVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYWlsYm94T3BlbiA9IFwiTTgsNEE1LDUgMCAwLDAgMyw5VjE4SDFWMjBIMjFBMiwyIDAgMCwwIDIzLDE4VjlBNSw1IDAgMCwwIDE4LDRIOE04LDZBMywzIDAgMCwxIDExLDlWMThINVY5QTMsMyAwIDAsMSA4LDZNMTQsMTFIMjBWMTVIMThWMTNIMTRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbGJveE9wZW5PdXRsaW5lID0gXCJNMTQsMTFIMjBWMTVIMThWMTNIMTRWMTFNMTgsNEg4QTUsNSAwIDAsMCAzLDlWMThIMVYyMEgyMUEyLDIgMCAwLDAgMjMsMThWOUE1LDUgMCAwLDAgMTgsNE0xMSwxOEg1VjlBMywzIDAgMCwxIDgsNkEzLDMgMCAwLDEgMTEsOVYxOE0yMSwxOEgxM1Y5QzEzLDcuOTIgMTIuNjUsNi44NiAxMiw2SDE4QTMsMyAwIDAsMSAyMSw5VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1haWxib3hPcGVuVXAgPSBcIk04LDRBNSw1IDAgMCwwIDMsOVYxOEgxVjIwSDIxQTIsMiAwIDAsMCAyMywxOFY5QTUsNSAwIDAsMCAxOCw0SDhNOCw2QTMsMyAwIDAsMSAxMSw5VjE4SDVWOUEzLDMgMCAwLDEgOCw2TTEzLDEzVjdIMTdWOUgxNVYxM0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNYWlsYm94T3BlblVwT3V0bGluZSA9IFwiTTE0LDEyLjg1VjYuODVIMThWOC44NUgxNlYxMi44NUgxNE0xOCwzLjg1SDhBNSw1IDAgMCwwIDMsOC44NVYxNy44NUgxVjE5Ljg1SDIxQTIsMiAwIDAsMCAyMywxNy44NVY4Ljg1QTUsNSAwIDAsMCAxOCwzLjg1TTExLDE3Ljg1SDVWOC44NUEzLDMgMCAwLDEgOCw1Ljg1QTMsMyAwIDAsMSAxMSw4Ljg1VjE3Ljg1TTIxLDE3Ljg1SDEzVjguODVDMTMsNy43NiAxMi42NSw2LjcxIDEyLDUuODVIMThBMywzIDAgMCwxIDIxLDguODVWMTcuODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbGJveE91dGxpbmUgPSBcIk0xNyw0SDdBNSw1IDAgMCwwIDIsOVYyMEgyMEEyLDIgMCAwLDAgMjIsMThWOUE1LDUgMCAwLDAgMTcsNE0xMCwxOEg0VjlBMywzIDAgMCwxIDcsNkEzLDMgMCAwLDEgMTAsOVYxOE0yMCwxOEgxMlY5QzEyLDcuOTIgMTEuNjUsNi44NiAxMSw2SDE3QTMsMyAwIDAsMSAyMCw5VjE4TTEzLDExVjEzSDE3VjE1SDE5VjExSDEzTTksMTFINVY5SDlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbGJveFVwID0gXCJNNSw5SDlWMTFINVY5TTIyLDlWMThBMiwyIDAgMCwxIDIwLDIwSDJWOUE1LDUgMCAwLDEgNyw0SDE3QTUsNSAwIDAsMSAyMiw5TTEwLDlBMywzIDAgMCwwIDcsNkEzLDMgMCAwLDAgNCw5VjE4SDEwVjlNMTYsN0gxMlYxM0gxNFY5SDE2VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbGJveFVwT3V0bGluZSA9IFwiTTE3LDRIN0E1LDUgMCAwLDAgMiw5VjIwSDIwQTIsMiAwIDAsMCAyMiwxOFY5QTUsNSAwIDAsMCAxNyw0TTEwLDE4SDRWOUEzLDMgMCAwLDEgNyw2QTMsMyAwIDAsMSAxMCw5VjE4TTIwLDE4SDEyVjlDMTIsNy45MiAxMS42NSw2Ljg2IDExLDZIMTdBMywzIDAgMCwxIDIwLDlWMThNMTMsMTNIMTVWOUgxN1Y3SDEzVjEzTTksMTFINVY5SDlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFuamFybyA9IFwiTTIgMlYyMkg3LjZWNy42SDE0LjhWMkgyTTkuMiA5LjJWMjJIMTQuOFY5LjJIOS4yTTE2LjQgMlYyMkgyMlYySDE2LjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwID0gXCJNMTUsMTlMOSwxNi44OVY1TDE1LDcuMTFNMjAuNSwzQzIwLjQ0LDMgMjAuMzksMyAyMC4zNCwzTDE1LDUuMUw5LDNMMy4zNiw0LjlDMy4xNSw0Ljk3IDMsNS4xNSAzLDUuMzhWMjAuNUEwLjUsMC41IDAgMCwwIDMuNSwyMUMzLjU1LDIxIDMuNjEsMjEgMy42NiwyMC45N0w5LDE4LjlMMTUsMjFMMjAuNjQsMTkuMUMyMC44NSwxOSAyMSwxOC44NSAyMSwxOC42MlYzLjVBMC41LDAuNSAwIDAsMCAyMC41LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwQ2hlY2sgPSBcIk0xOC4yNSwyMkwxNS41LDE5TDE2LjY2LDE3LjgyTDE4LjI1LDE5LjQxTDIxLjg0LDE1LjgyTDIzLDE3LjIzTTIwLjUsM0EwLjUsMC41IDAgMCwxIDIxLDMuNVYxMy4zNkMyMC4zNiwxMy4xMyAxOS42OSwxMyAxOSwxM0MxNy40NiwxMyAxNi4wNiwxMy42IDE1LDE0LjU2VjcuMUw5LDVWMTYuOUwxMy4wNCwxOC4zQzEzLDE4LjU0IDEzLDE4Ljc3IDEzLDE5QzEzLDE5LjQ2IDEzLjA2LDE5LjkyIDEzLjE2LDIwLjM2TDksMTguOUwzLjY2LDIwLjk3QzMuNTksMjEgMy41NSwyMSAzLjUsMjFBMC41LDAuNSAwIDAsMSAzLDIwLjVWNS4zOEMzLDUuMTUgMy4xNiw0Ljk3IDMuMzUsNC45TDksM0wxNSw1LjFMMjAuMzMsM1wiO1xyXG5leHBvcnQgdmFyIG1kaU1hcENoZWNrT3V0bGluZSA9IFwiTTE4LjI1LDIyTDE1LjUsMTlMMTYuNjYsMTcuODJMMTguMjUsMTkuNDFMMjEuODQsMTUuODJMMjMsMTcuMjNMMTguMjUsMjJNMjAuNSwzQTAuNSwwLjUgMCAwLDEgMjEsMy41VjEzLjM0QzIwLjM3LDEzLjEyIDE5LjcsMTMgMTksMTNWNS43TDE2LDYuODZWMTMuOEMxNS4yLDE0LjI3IDE0LjUsMTQuOTEgMTQsMTUuNjhWNi44N0wxMCw1LjQ3VjE3LjEzTDEzLjA1LDE4LjJMMTMsMTlDMTMsMTkuNDYgMTMuMDUsMTkuOTIgMTMuMTUsMjAuMzVMOSwxOC45TDMuNjYsMjAuOTdMMy41LDIxQTAuNSwwLjUgMCAwLDEgMywyMC41VjUuMzhDMyw1LjE1IDMuMTUsNC45NyAzLjM2LDQuOUw5LDNMMTUsNS4xTDIwLjM0LDMuMDNMMjAuNSwzTTUsNi40NlYxOC4zMUw4LDE3LjE1VjUuNDVMNSw2LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcENsb2NrID0gXCJNMTUsMTJIMTYuNVYxNi4yNUwxOS4zNiwxNy45NEwxOC42MSwxOS4xNkwxNSwxN1YxMk0yMywxNkE3LDcgMCAwLDEgMTYsMjNDMTMsMjMgMTAuNCwyMS4wOCA5LjQyLDE4LjRMOCwxNy45TDIuNjYsMTkuOTdMMi41LDIwQTAuNSwwLjUgMCAwLDEgMiwxOS41VjQuMzhDMiw0LjE1IDIuMTUsMy45NyAyLjM2LDMuOUw4LDJMMTQsNC4xTDE5LjM0LDJIMTkuNUEwLjUsMC41IDAgMCwxIDIwLDIuNVYxMC4yNUMyMS44MSwxMS41IDIzLDEzLjYyIDIzLDE2TTksMTZDOSwxMi44MyAxMS4xMSwxMC4xNSAxNCw5LjI5VjYuMTFMOCw0VjE1Ljg5TDksMTYuMjRDOSwxNi4xNiA5LDE2LjA4IDksMTZNMTYsMTFBNSw1IDAgMCwwIDExLDE2QTUsNSAwIDAsMCAxNiwyMUE1LDUgMCAwLDAgMjEsMTZBNSw1IDAgMCwwIDE2LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcENsb2NrT3V0bGluZSA9IFwiTTE1LDEySDE2LjVWMTYuMjVMMTkuMzYsMTcuOTRMMTguNjEsMTkuMTZMMTUsMTdWMTJNMTYsOUMxNi42OSw5IDE3LjM3LDkuMSAxOCw5LjI5VjQuN0wxNSw1Ljg2VjkuMDdDMTUuMzMsOSAxNS42Niw5IDE2LDlNMjMsMTZBNyw3IDAgMCwxIDE2LDIzQzEzLDIzIDEwLjQsMjEuMDggOS40MiwxOC40TDgsMTcuOUwyLjY2LDE5Ljk3TDIuNSwyMEEwLjUsMC41IDAgMCwxIDIsMTkuNVY0LjM4QzIsNC4xNSAyLjE1LDMuOTcgMi4zNiwzLjlMOCwyTDE0LDQuMUwxOS4zNCwyLjAzTDE5LjUsMkEwLjUsMC41IDAgMCwxIDIwLDIuNVYxMC4yNUMyMS44MSwxMS41IDIzLDEzLjYyIDIzLDE2TTksMTZDOSwxMy4yMSAxMC42MywxMC44IDEzLDkuNjdWNS44N0w5LDQuNDdWMTYuMTNIOUM5LDE2LjA5IDksMTYuMDQgOSwxNk0xNiwxMUE1LDUgMCAwLDAgMTEsMTZBNSw1IDAgMCwwIDE2LDIxQTUsNSAwIDAsMCAyMSwxNkE1LDUgMCAwLDAgMTYsMTFNNCw1LjQ2VjE3LjMxTDcsMTYuMTVWNC40NUw0LDUuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTGVnZW5kID0gXCJNOSwzTDMuMzYsNC45QzMuMTUsNC45NyAzLDUuMTUgMyw1LjM4VjIwLjVBMC41LDAuNSAwIDAsMCAzLjUsMjFMMy42NiwyMC45N0w5LDE4LjlMMTUsMjFMMjAuNjQsMTkuMUMyMC44NSwxOS4wMyAyMSwxOC44NSAyMSwxOC42MlYzLjVBMC41LDAuNSAwIDAsMCAyMC41LDNMMjAuMzQsMy4wM0wxNSw1LjFMOSwzTTgsNS40NVYxNy4xNUw1LDE4LjMxVjYuNDZMOCw1LjQ1TTEwLDUuNDdMMTQsNi44N1YxOC41M0wxMCwxNy4xM1Y1LjQ3TTE5LDUuN1YxNy41NEwxNiwxOC41NVY2Ljg2TDE5LDUuN003LjQ2LDYuM0w1LjU3LDYuOTdWOS4xMkw3LjQ2LDguNDVWNi4zTTcuNDYsOS4wNUw1LjU3LDkuNzJWMTEuODdMNy40NiwxMS4yVjkuMDVNNy40NiwxMS44TDUuNTcsMTIuNDdWMTQuNjJMNy40NiwxMy45NVYxMS44TTcuNDYsMTQuNTVMNS41NywxNS4yMlYxNy4zN0w3LjQ2LDE2LjdWMTQuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyID0gXCJNMTIsMTEuNUEyLjUsMi41IDAgMCwxIDkuNSw5QTIuNSwyLjUgMCAwLDEgMTIsNi41QTIuNSwyLjUgMCAwLDEgMTQuNSw5QTIuNSwyLjUgMCAwLDEgMTIsMTEuNU0xMiwyQTcsNyAwIDAsMCA1LDlDNSwxNC4yNSAxMiwyMiAxMiwyMkMxMiwyMiAxOSwxNC4yNSAxOSw5QTcsNyAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlckFsZXJ0ID0gXCJNMTIgMkMxNS45IDIgMTkgNS4xIDE5IDlDMTkgMTQuMiAxMiAyMiAxMiAyMlM1IDE0LjIgNSA5QzUgNS4xIDguMSAyIDEyIDJNMTEgNlYxMkgxM1Y2SDExTTExIDE0VjE2SDEzVjE0SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlckFsZXJ0T3V0bGluZSA9IFwiTTEyLDJBNyw3IDAgMCwxIDE5LDlDMTksMTQuMjUgMTIsMjIgMTIsMjJDMTIsMjIgNSwxNC4yNSA1LDlBNyw3IDAgMCwxIDEyLDJNMTIsNEE1LDUgMCAwLDAgNyw5QzcsMTAgNywxMiAxMiwxOC43MUMxNywxMiAxNywxMCAxNyw5QTUsNSAwIDAsMCAxMiw0TTExLDZIMTNWMTFIMTFWNk0xMSwxM0gxM1YxNUgxMVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJDaGVjayA9IFwiTTEyLDJDMTUuODYsMiAxOSw1LjE0IDE5LDlDMTksMTQuMjUgMTIsMjIgMTIsMjJDMTIsMjIgNSwxNC4yNSA1LDlDNSw1LjE0IDguMTQsMiAxMiwyTTEwLjQ3LDE0TDE3LDcuNDFMMTUuNiw2TDEwLjQ3LDExLjE4TDguNCw5LjA5TDcsMTAuNUwxMC40NywxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJDaGVja091dGxpbmUgPSBcIk0xMiA0QzE0LjggNCAxNyA2LjIgMTcgOUMxNyAxMS45IDE0LjEgMTYuMiAxMiAxOC45QzkuOSAxNi4yIDcgMTEuOSA3IDlDNyA2LjIgOS4yIDQgMTIgNE0xMiAyQzguMSAyIDUgNS4xIDUgOUM1IDE0LjIgMTIgMjIgMTIgMjJTMTkgMTQuMiAxOSA5QzE5IDUuMSAxNS45IDIgMTIgMk0xMS4zIDE0TDE2LjIgOUwxNC44IDcuNkwxMS4zIDExLjJMOS43IDkuNkw4LjMgMTFMMTEuMyAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJDaXJjbGUgPSBcIk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDEyLjVBMS41LDEuNSAwIDAsMSAxMC41LDExQTEuNSwxLjUgMCAwLDEgMTIsOS41QTEuNSwxLjUgMCAwLDEgMTMuNSwxMUExLjUsMS41IDAgMCwxIDEyLDEyLjVNMTIsNy4yQzkuOSw3LjIgOC4yLDguOSA4LjIsMTFDOC4yLDE0IDEyLDE3LjUgMTIsMTcuNUMxMiwxNy41IDE1LjgsMTQgMTUuOCwxMUMxNS44LDguOSAxNC4xLDcuMiAxMiw3LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyRGlzdGFuY2UgPSBcIk02LjUsOC4xMUM1LjYxLDguMTEgNC44OSw3LjM5IDQuODksNi41QTEuNjEsMS42MSAwIDAsMSA2LjUsNC44OUM3LjM5LDQuODkgOC4xMSw1LjYxIDguMTEsNi41VjYuNUExLjYxLDEuNjEgMCAwLDEgNi41LDguMTFNNi41LDJDNCwyIDIsNCAyLDYuNUMyLDkuODcgNi41LDE0Ljg2IDYuNSwxNC44NkM2LjUsMTQuODYgMTEsOS44NyAxMSw2LjVDMTEsNCA5LDIgNi41LDJNMTcuNSw4LjExQTEuNjEsMS42MSAwIDAsMSAxNS44OSw2LjVDMTUuODksNS42MSAxNi42MSw0Ljg5IDE3LjUsNC44OUMxOC4zOSw0Ljg5IDE5LjExLDUuNjEgMTkuMTEsNi41QTEuNjEsMS42MSAwIDAsMSAxNy41LDguMTFNMTcuNSwyQzE1LDIgMTMsNCAxMyw2LjVDMTMsOS44NyAxNy41LDE0Ljg2IDE3LjUsMTQuODZDMTcuNSwxNC44NiAyMiw5Ljg3IDIyLDYuNUMyMiw0IDIwLDIgMTcuNSwyTTE3LjUsMTZDMTYuMjMsMTYgMTUuMSwxNi44IDE0LjY4LDE4SDkuMzJDOC43NywxNi40NCA3LjA1LDE1LjYyIDUuNSwxNi4xN0MzLjkzLDE2LjcyIDMuMTEsMTguNDQgMy42NiwyMEM0LjIyLDIxLjU2IDUuOTMsMjIuMzggNy41LDIxLjgzQzguMzUsMjEuNTMgOSwyMC44NSA5LjMyLDIwSDE0LjY5QzE1LjI0LDIxLjU2IDE2Ljk2LDIyLjM4IDE4LjUsMjEuODNDMjAuMDgsMjEuMjggMjAuOSwxOS41NiAyMC4zNSwxOEMxOS45MiwxNi44IDE4Ljc4LDE2IDE3LjUsMTZWMTZNMTcuNSwyMC41QTEuNSwxLjUgMCAwLDEgMTYsMTlBMS41LDEuNSAwIDAsMSAxNy41LDE3LjVBMS41LDEuNSAwIDAsMSAxOSwxOUExLjUsMS41IDAgMCwxIDE3LjUsMjAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJEb3duID0gXCJNMTIgMkE3IDcgMCAwIDAgNSA5QzUgMTQuMjUgMTIgMjIgMTIgMjJTMTkgMTQuMjUgMTkgOUE3IDcgMCAwIDAgMTIgMk03LjUgMTBIMTBWNUgxNFYxMEgxNi41TDEyIDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyTGVmdCA9IFwiTTE1IDExLjVDMTMuNjIgMTEuNSAxMi41IDEwLjM4IDEyLjUgOVMxMy42MiA2LjUgMTUgNi41IDE3LjUgNy42MiAxNy41IDkgMTYuMzggMTEuNSAxNSAxMS41TTggOUM4IDE0LjI1IDE1IDIyIDE1IDIyUzIyIDE0LjI1IDIyIDlDMjIgNS4xMyAxOC44NyAyIDE1IDJTOCA1LjEzIDggOU02IDdMMSAxMkw2IDE3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyTGVmdE91dGxpbmUgPSBcIk0xNSA2LjVDMTYuMzggNi41IDE3LjUgNy42MiAxNy41IDlTMTYuMzggMTEuNSAxNSAxMS41IDEyLjUgMTAuMzggMTIuNSA5IDEzLjYyIDYuNSAxNSA2LjVNMTUgMkMxOC44NyAyIDIyIDUuMTMgMjIgOUMyMiAxNC4yNSAxNSAyMiAxNSAyMlM4IDE0LjI1IDggOUM4IDUuMTMgMTEuMTMgMiAxNSAyTTEwIDlDMTAgMTAgMTAgMTIgMTUgMTguNzFDMjAgMTIgMjAgMTAgMjAgOUMyMCA2LjI0IDE3Ljc2IDQgMTUgNFMxMCA2LjI0IDEwIDlNNiA3TDEgMTJMNiAxN1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlck1pbnVzID0gXCJNOSwxMS41QTIuNSwyLjUgMCAwLDAgMTEuNSw5QTIuNSwyLjUgMCAwLDAgOSw2LjVBMi41LDIuNSAwIDAsMCA2LjUsOUEyLjUsMi41IDAgMCwwIDksMTEuNU05LDJDMTIuODYsMiAxNiw1LjEzIDE2LDlDMTYsMTQuMjUgOSwyMiA5LDIyQzksMjIgMiwxNC4yNSAyLDlBNyw3IDAgMCwxIDksMk0xNSwxN0gyM1YxOUgxNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJNaW51c091dGxpbmUgPSBcIk0xNSAxN0gyM1YxOUgxNVYxN005IDYuNUMxMC40IDYuNSAxMS41IDcuNiAxMS41IDlTMTAuNCAxMS41IDkgMTEuNSA2LjUgMTAuNCA2LjUgOSA3LjYgNi41IDkgNi41TTkgMkMxMi45IDIgMTYgNS4xIDE2IDlDMTYgMTQuMiA5IDIyIDkgMjJTMiAxNC4yIDIgOUMyIDUuMSA1LjEgMiA5IDJNOSA0QzYuMiA0IDQgNi4yIDQgOUM0IDEwIDQgMTIgOSAxOC43QzE0IDEyIDE0IDEwIDE0IDlDMTQgNi4yIDExLjggNCA5IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyTXVsdGlwbGUgPSBcIk0xNCwxMS41QTIuNSwyLjUgMCAwLDAgMTYuNSw5QTIuNSwyLjUgMCAwLDAgMTQsNi41QTIuNSwyLjUgMCAwLDAgMTEuNSw5QTIuNSwyLjUgMCAwLDAgMTQsMTEuNU0xNCwyQzE3Ljg2LDIgMjEsNS4xMyAyMSw5QzIxLDE0LjI1IDE0LDIyIDE0LDIyQzE0LDIyIDcsMTQuMjUgNyw5QTcsNyAwIDAsMSAxNCwyTTUsOUM1LDEzLjUgMTAuMDgsMTkuNjYgMTEsMjAuODFMMTAsMjJDMTAsMjIgMywxNC4yNSAzLDlDMyw1LjgzIDUuMTEsMy4xNSA4LDIuMjlDNi4xNiwzLjk0IDUsNi4zMyA1LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyTXVsdGlwbGVPdXRsaW5lID0gXCJNMTEuNSA5QzExLjUgNy42MiAxMi42MiA2LjUgMTQgNi41QzE1LjEgNi41IDE2LjAzIDcuMjEgMTYuMzcgOC4xOUMxNi40NSA4LjQ1IDE2LjUgOC43MiAxNi41IDlDMTYuNSAxMC4zOCAxNS4zOCAxMS41IDE0IDExLjVDMTIuOTEgMTEuNSAxMiAxMC44MSAxMS42NCA5Ljg0QzExLjU1IDkuNTggMTEuNSA5LjI5IDExLjUgOU01IDlDNSAxMy41IDEwLjA4IDE5LjY2IDExIDIwLjgxTDEwIDIyQzEwIDIyIDMgMTQuMjUgMyA5QzMgNS44MyA1LjExIDMuMTUgOCAyLjI5QzYuMTYgMy45NCA1IDYuMzMgNSA5TTE0IDJDMTcuODYgMiAyMSA1LjEzIDIxIDlDMjEgMTQuMjUgMTQgMjIgMTQgMjJDMTQgMjIgNyAxNC4yNSA3IDlDNyA1LjEzIDEwLjE0IDIgMTQgMk0xNCA0QzExLjI0IDQgOSA2LjI0IDkgOUM5IDEwIDkgMTIgMTQgMTguNzFDMTkgMTIgMTkgMTAgMTkgOUMxOSA2LjI0IDE2Ljc2IDQgMTQgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJPZmYgPSBcIk0xNi4zNywxNi4xTDExLjc1LDExLjQ3TDExLjY0LDExLjM2TDMuMjcsM0wyLDQuMjdMNS4xOCw3LjQ1QzUuMDYsNy45NSA1LDguNDYgNSw5QzUsMTQuMjUgMTIsMjIgMTIsMjJDMTIsMjIgMTMuNjcsMjAuMTUgMTUuMzcsMTcuNjVMMTguNzMsMjFMMjAsMTkuNzJNMTIsNi41QTIuNSwyLjUgMCAwLDEgMTQuNSw5QzE0LjUsOS43MyAxNC4xNywxMC4zOSAxMy42NywxMC44NUwxNy4zLDE0LjVDMTguMjgsMTIuNjIgMTksMTAuNjggMTksOUE3LDcgMCAwLDAgMTIsMkMxMCwyIDguMjQsMi44MiA2Ljk2LDQuMTRMMTAuMTUsNy4zM0MxMC42MSw2LjgyIDExLjI2LDYuNSAxMiw2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyT2ZmT3V0bGluZSA9IFwiTTIwIDE5LjdMMy4zIDNMMiA0LjNMNS4yIDcuNUM1LjEgOCA1IDguNSA1IDlDNSAxNC4yIDEyIDIyIDEyIDIyUzEzLjcgMjAuMSAxNS40IDE3LjZMMTguOCAyMUwyMCAxOS43TTEyIDE4LjdDNy40IDEyLjUgNyAxMC40IDcgOS4zTDEzLjggMTYuMUMxMy4zIDE2LjkgMTIuNyAxNy43IDEyIDE4LjdNOC40IDUuNkw3IDQuMkM4LjIgMi44IDEwIDIgMTIgMkMxNS45IDIgMTkgNS4xIDE5IDlDMTkgMTAuNyAxOC4zIDEyLjYgMTcuMyAxNC41TDE1LjggMTNDMTcgMTAuNiAxNyA5LjYgMTcgOUMxNyA2LjIgMTQuOCA0IDEyIDRDMTAuNiA0IDkuMyA0LjYgOC40IDUuNk0xMiA2LjVDMTMuNCA2LjUgMTQuNSA3LjYgMTQuNSA5QzE0LjUgOS43IDE0LjIgMTAuNCAxMy43IDEwLjlMMTAuMiA3LjRDMTAuNiA2LjggMTEuMyA2LjUgMTIgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlck91dGxpbmUgPSBcIk0xMiw2LjVBMi41LDIuNSAwIDAsMSAxNC41LDlBMi41LDIuNSAwIDAsMSAxMiwxMS41QTIuNSwyLjUgMCAwLDEgOS41LDlBMi41LDIuNSAwIDAsMSAxMiw2LjVNMTIsMkE3LDcgMCAwLDEgMTksOUMxOSwxNC4yNSAxMiwyMiAxMiwyMkMxMiwyMiA1LDE0LjI1IDUsOUE3LDcgMCAwLDEgMTIsMk0xMiw0QTUsNSAwIDAsMCA3LDlDNywxMCA3LDEyIDEyLDE4LjcxQzE3LDEyIDE3LDEwIDE3LDlBNSw1IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUGF0aCA9IFwiTTE4LDE1QTMsMyAwIDAsMSAyMSwxOEEzLDMgMCAwLDEgMTgsMjFDMTYuNjksMjEgMTUuNTgsMjAuMTcgMTUuMTcsMTlIMTRWMTdIMTUuMTdDMTUuNTgsMTUuODMgMTYuNjksMTUgMTgsMTVNMTgsMTdBMSwxIDAgMCwwIDE3LDE4QTEsMSAwIDAsMCAxOCwxOUExLDEgMCAwLDAgMTksMThBMSwxIDAgMCwwIDE4LDE3TTE4LDhBMS40MywxLjQzIDAgMCwwIDE5LjQzLDYuNTdDMTkuNDMsNS43OCAxOC43OSw1LjE0IDE4LDUuMTRDMTcuMjEsNS4xNCAxNi41Nyw1Ljc4IDE2LjU3LDYuNTdBMS40MywxLjQzIDAgMCwwIDE4LDhNMTgsMi41N0E0LDQgMCAwLDEgMjIsNi41N0MyMiw5LjU2IDE4LDE0IDE4LDE0QzE4LDE0IDE0LDkuNTYgMTQsNi41N0E0LDQgMCAwLDEgMTgsMi41N004LjgzLDE3SDEwVjE5SDguODNDOC40MiwyMC4xNyA3LjMxLDIxIDYsMjFBMywzIDAgMCwxIDMsMThDMywxNi42OSAzLjgzLDE1LjU4IDUsMTUuMTdWMTRIN1YxNS4xN0M3Ljg1LDE1LjQ3IDguNTMsMTYuMTUgOC44MywxN002LDE3QTEsMSAwIDAsMCA1LDE4QTEsMSAwIDAsMCA2LDE5QTEsMSAwIDAsMCA3LDE4QTEsMSAwIDAsMCA2LDE3TTYsM0EzLDMgMCAwLDEgOSw2QzksNy4zMSA4LjE3LDguNDIgNyw4LjgzVjEwSDVWOC44M0MzLjgzLDguNDIgMyw3LjMxIDMsNkEzLDMgMCAwLDEgNiwzTTYsNUExLDEgMCAwLDAgNSw2QTEsMSAwIDAsMCA2LDdBMSwxIDAgMCwwIDcsNkExLDEgMCAwLDAgNiw1TTExLDE5VjE3SDEzVjE5SDExTTcsMTNINVYxMUg3VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclBsdXMgPSBcIk05LDExLjVBMi41LDIuNSAwIDAsMCAxMS41LDlBMi41LDIuNSAwIDAsMCA5LDYuNUEyLjUsMi41IDAgMCwwIDYuNSw5QTIuNSwyLjUgMCAwLDAgOSwxMS41TTksMkMxMi44NiwyIDE2LDUuMTMgMTYsOUMxNiwxNC4yNSA5LDIyIDksMjJDOSwyMiAyLDE0LjI1IDIsOUE3LDcgMCAwLDEgOSwyTTE1LDE3SDE4VjE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclBsdXNPdXRsaW5lID0gXCJNMTUgMTdIMThWMTRIMjBWMTdIMjNWMTlIMjBWMjJIMThWMTlIMTVWMTdNOSA2LjVDMTAuNCA2LjUgMTEuNSA3LjYgMTEuNSA5UzEwLjQgMTEuNSA5IDExLjUgNi41IDEwLjQgNi41IDkgNy42IDYuNSA5IDYuNU05IDJDMTIuOSAyIDE2IDUuMSAxNiA5QzE2IDE0LjIgOSAyMiA5IDIyUzIgMTQuMiAyIDlDMiA1LjEgNS4xIDIgOSAyTTkgNEM2LjIgNCA0IDYuMiA0IDlDNCAxMCA0IDEyIDkgMTguN0MxNCAxMiAxNCAxMCAxNCA5QzE0IDYuMiAxMS44IDQgOSA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclF1ZXN0aW9uID0gXCJNMTIsMkM4LjE0LDIgNSw1LjE0IDUsOUM1LDE0LjI1IDEyLDIyIDEyLDIyQzEyLDIyIDE5LDE0LjI1IDE5LDlDMTksNS4xNCAxNS44NiwyIDEyLDJNMTIuODgsMTUuNzVIMTEuMTNWMTRIMTIuODhNMTIuODgsMTIuODhIMTEuMTNDMTEuMTMsMTAuMDQgMTMuNzUsMTAuMjYgMTMuNzUsOC41QTEuNzUsMS43NSAwIDAsMCAxMiw2Ljc1QTEuNzUsMS43NSAwIDAsMCAxMC4yNSw4LjVIOC41QTMuNSwzLjUgMCAwLDEgMTIsNUEzLjUsMy41IDAgMCwxIDE1LjUsOC41QzE1LjUsMTAuNjkgMTIuODgsMTAuOTEgMTIuODgsMTIuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUXVlc3Rpb25PdXRsaW5lID0gXCJNMTIsMUM3LjU5LDEgNCw0LjU5IDQsOUM0LDE0LjU3IDEwLjk2LDIyLjM0IDExLjI2LDIyLjY3TDEyLDIzLjVMMTIuNzQsMjIuNjdDMTMuMDQsMjIuMzQgMjAsMTQuNTcgMjAsOUMyMCw0LjU5IDE2LjQxLDEgMTIsMU0xMiwyMC40N0M5LjgyLDE3Ljg2IDYsMTIuNTQgNiw5QTYsNiAwIDAsMSAxMiwzQTYsNiAwIDAsMSAxOCw5QzE4LDEyLjgzIDEzLjc1LDE4LjM2IDEyLDIwLjQ3TTExLjEzLDE0SDEyLjg4VjE1Ljc1SDExLjEzTTEyLDVBMy41LDMuNSAwIDAsMCA4LjUsOC41SDEwLjI1QTEuNzUsMS43NSAwIDAsMSAxMiw2Ljc1QTEuNzUsMS43NSAwIDAsMSAxMy43NSw4LjVDMTMuNzUsMTAuMjYgMTEuMTMsMTAuMDQgMTEuMTMsMTIuODhIMTIuODhDMTIuODgsMTAuOTEgMTUuNSwxMC42OSAxNS41LDguNUEzLjUsMy41IDAgMCwwIDEyLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUmFkaXVzID0gXCJNMTIsMkMxNS4zMSwyIDE4LDQuNjYgMTgsNy45NUMxOCwxMi40MSAxMiwxOSAxMiwxOUMxMiwxOSA2LDEyLjQxIDYsNy45NUM2LDQuNjYgOC42OSwyIDEyLDJNMTIsNkEyLDIgMCAwLDAgMTAsOEEyLDIgMCAwLDAgMTIsMTBBMiwyIDAgMCwwIDE0LDhBMiwyIDAgMCwwIDEyLDZNMjAsMTlDMjAsMjEuMjEgMTYuNDIsMjMgMTIsMjNDNy41OCwyMyA0LDIxLjIxIDQsMTlDNCwxNy43MSA1LjIyLDE2LjU2IDcuMTEsMTUuODNMNy43NSwxNi43NEM2LjY3LDE3LjE5IDYsMTcuODEgNiwxOC41QzYsMTkuODggOC42OSwyMSAxMiwyMUMxNS4zMSwyMSAxOCwxOS44OCAxOCwxOC41QzE4LDE3LjgxIDE3LjMzLDE3LjE5IDE2LjI1LDE2Ljc0TDE2Ljg5LDE1LjgzQzE4Ljc4LDE2LjU2IDIwLDE3LjcxIDIwLDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclJhZGl1c091dGxpbmUgPSBcIk0xMiA0QzE0LjIgNCAxNiA1LjggMTYgOEMxNiAxMC4xIDEzLjkgMTMuNSAxMiAxNS45QzEwLjEgMTMuNCA4IDEwLjEgOCA4QzggNS44IDkuOCA0IDEyIDRNMTIgMkM4LjcgMiA2IDQuNyA2IDhDNiAxMi41IDEyIDE5IDEyIDE5UzE4IDEyLjQgMTggOEMxOCA0LjcgMTUuMyAyIDEyIDJNMTIgNkMxMC45IDYgMTAgNi45IDEwIDhTMTAuOSAxMCAxMiAxMCAxNCA5LjEgMTQgOCAxMy4xIDYgMTIgNk0yMCAxOUMyMCAyMS4yIDE2LjQgMjMgMTIgMjNTNCAyMS4yIDQgMTlDNCAxNy43IDUuMiAxNi42IDcuMSAxNS44TDcuNyAxNi43QzYuNyAxNy4yIDYgMTcuOCA2IDE4LjVDNiAxOS45IDguNyAyMSAxMiAyMVMxOCAxOS45IDE4IDE4LjVDMTggMTcuOCAxNy4zIDE3LjIgMTYuMiAxNi43TDE2LjggMTUuOEMxOC44IDE2LjYgMjAgMTcuNyAyMCAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJSZW1vdmUgPSBcIk05LDJDNS4xNCwyIDIsNS4xNCAyLDlDMiwxNC4yNSA5LDIyIDksMjJDOSwyMiAxNiwxNC4yNSAxNiw5QTcsNyAwIDAsMCA5LDJNOSw2LjVBMi41LDIuNSAwIDAsMSAxMS41LDlBMi41LDIuNSAwIDAsMSA5LDExLjVBMi41LDIuNSAwIDAsMSA2LjUsOUEyLjUsMi41IDAgMCwxIDksNi41TTE2LjU4LDE0LjE2TDE1LjE3LDE1LjU4TDE3LjU4LDE4TDE1LjE3LDIwLjQxTDE2LjU4LDIxLjgyTDE5LDE5LjQxTDIxLjQxLDIxLjgyTDIyLjgzLDIwLjQxTDIwLjQxLDE4TDIyLjgzLDE1LjU4TDIxLjQxLDE0LjE2TDE5LDE2LjU4XCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUmVtb3ZlT3V0bGluZSA9IFwiTTE2LjYgMTQuMkwxNS4yIDE1LjZMMTcuNiAxOEwxNS4yIDIwLjRMMTYuNiAyMS44TDE5IDE5LjRMMjEuNCAyMS44TDIyLjggMjAuNEwyMC40IDE4TDIyLjggMTUuNkwyMS40IDE0LjJMMTkgMTYuNk05IDYuNUMxMC40IDYuNSAxMS41IDcuNiAxMS41IDlTMTAuNCAxMS41IDkgMTEuNSA2LjUgMTAuNCA2LjUgOSA3LjYgNi41IDkgNi41TTkgMkMxMi45IDIgMTYgNS4xIDE2IDlDMTYgMTQuMiA5IDIyIDkgMjJTMiAxNC4yIDIgOUMyIDUuMSA1LjEgMiA5IDJNOSA0QzYuMiA0IDQgNi4yIDQgOUM0IDEwIDQgMTIgOSAxOC43QzE0IDEyIDE0IDEwIDE0IDlDMTQgNi4yIDExLjggNCA5IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUmVtb3ZlVmFyaWFudCA9IFwiTTEyLDJDOC4xNCwyIDUsNS4xNCA1LDlDNSwxNC4yNSAxMiwyMiAxMiwyMkMxMiwyMiAxOSwxNC4yNSAxOSw5QzE5LDUuMTQgMTUuODYsMiAxMiwyTTkuNTksNS4xN0wxMiw3LjU4TDE0LjQxLDUuMTdMMTUuODMsNi41OEwxMy40MSw5TDE1LjgzLDExLjQxTDE0LjQxLDEyLjgzTDEyLDEwLjQxTDkuNTksMTIuODNMOC4xNywxMS40MUwxMC41OSw5TDguMTcsNi41OFwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclJpZ2h0ID0gXCJNOSAxMS41QzcuNjIgMTEuNSA2LjUgMTAuMzggNi41IDlTNy42MiA2LjUgOSA2LjUgMTEuNSA3LjYyIDExLjUgOSAxMC4zOCAxMS41IDkgMTEuNU05IDJDNS4xMyAyIDIgNS4xMyAyIDlDMiAxNC4yNSA5IDIyIDkgMjJTMTYgMTQuMjUgMTYgOUMxNiA1LjEzIDEyLjg3IDIgOSAyTTE4IDE3TDIzIDEyTDE4IDdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUmlnaHRPdXRsaW5lID0gXCJNOSA2LjVDMTAuMzggNi41IDExLjUgNy42MiAxMS41IDlTMTAuMzggMTEuNSA5IDExLjUgNi41IDEwLjM4IDYuNSA5IDcuNjIgNi41IDkgNi41TTkgMkMxMi44NyAyIDE2IDUuMTMgMTYgOUMxNiAxNC4yNSA5IDIyIDkgMjJTMiAxNC4yNSAyIDlDMiA1LjEzIDUuMTMgMiA5IDJNOSA0QzYuMjQgNCA0IDYuMjQgNCA5QzQgMTAgNCAxMiA5IDE4LjcxQzE0IDEyIDE0IDEwIDE0IDlDMTQgNi4yNCAxMS43NiA0IDkgNE0xOCAxN0wyMyAxMkwxOCA3VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclN0YXIgPSBcIk0xMiAyQzguMSAyIDUgNS4xIDUgOUM1IDE0LjIgMTIgMjIgMTIgMjJTMTkgMTQuMiAxOSA5QzE5IDUuMSAxNS45IDIgMTIgMk0xNC41IDEzTDEyIDExLjVMOS41IDEzTDEwLjIgMTAuMkw4IDguM0wxMC45IDguMUwxMiA1LjRMMTMuMSA4TDE2IDguM0wxMy44IDEwLjJMMTQuNSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJTdGFyT3V0bGluZSA9IFwiTTEyIDJDMTUuOSAyIDE5IDUuMSAxOSA5QzE5IDE0LjIgMTIgMjIgMTIgMjJTNSAxNC4yIDUgOUM1IDUuMSA4LjEgMiAxMiAyTTEyIDRDOS4yIDQgNyA2LjIgNyA5QzcgMTAgNyAxMiAxMiAxOC43QzE3IDEyIDE3IDEwIDE3IDlDMTcgNi4yIDE0LjggNCAxMiA0TTEyIDExLjVMMTQuNCAxM0wxMy44IDEwLjJMMTYgOC4zTDEzLjEgOC4xTDEyIDUuNEwxMC45IDhMOCA4LjNMMTAuMiAxMC4yTDkuNSAxM0wxMiAxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclVwID0gXCJNMTIgMkE3IDcgMCAwIDAgNSA5QzUgMTQuMjUgMTIgMjIgMTIgMjJTMTkgMTQuMjUgMTkgOUE3IDcgMCAwIDAgMTIgMk0xNi41IDlIMTRWMTRIMTBWOUg3LjVMMTIgNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1pbnVzID0gXCJNMTUgMThWMjBIMjNWMThIMTVNMTMuMTYgMjAuMzZMOSAxOC45TDMuNjYgMjAuOTdDMy42IDIxIDMuNTUgMjEgMy41IDIxQzMuMjIgMjEgMyAyMC43OCAzIDIwLjVWNS4zOEMzIDUuMTUgMy4xNiA0Ljk3IDMuMzYgNC45TDkgM0wxNSA1LjFMMjAuMzQgM0gyMC41QzIwLjc4IDMgMjEgMy4yMiAyMSAzLjVWMTMuMzVDMjAuMzcgMTMuMTMgMTkuNyAxMyAxOSAxM0MxNy40NiAxMyAxNi4wNiAxMy41OCAxNSAxNC41NFY3LjFMOSA1VjE2LjlMMTMuMDQgMTguMzJDMTMgMTguNTQgMTMgMTguNzcgMTMgMTlDMTMgMTkuNDcgMTMuMDYgMTkuOTIgMTMuMTYgMjAuMzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwT3V0bGluZSA9IFwiTTIwLjUsM0wyMC4zNCwzLjAzTDE1LDUuMUw5LDNMMy4zNiw0LjlDMy4xNSw0Ljk3IDMsNS4xNSAzLDUuMzhWMjAuNUEwLjUsMC41IDAgMCwwIDMuNSwyMUwzLjY2LDIwLjk3TDksMTguOUwxNSwyMUwyMC42NCwxOS4xQzIwLjg1LDE5LjAzIDIxLDE4Ljg1IDIxLDE4LjYyVjMuNUEwLjUsMC41IDAgMCwwIDIwLjUsM00xMCw1LjQ3TDE0LDYuODdWMTguNTNMMTAsMTcuMTNWNS40N001LDYuNDZMOCw1LjQ1VjE3LjE1TDUsMTguMzFWNi40Nk0xOSwxNy41NEwxNiwxOC41NVY2Ljg2TDE5LDUuN1YxNy41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBQbHVzID0gXCJNOSwzTDMuMzYsNC45QzMuMTYsNC45NyAzLDUuMTUgMyw1LjM4VjIwLjVBMC41LDAuNSAwIDAsMCAzLjUsMjFDMy41NSwyMSAzLjYsMjEgMy42NiwyMC45N0w5LDE4LjlMMTMuMTYsMjAuMzZDMTMuMDYsMTkuOTIgMTMsMTkuNDYgMTMsMTlDMTMsMTguNzcgMTMsMTguNTQgMTMuMDQsMTguM0w5LDE2LjlWNUwxNSw3LjFWMTQuNTZDMTYuMDcsMTMuNiAxNy40NywxMyAxOSwxM0MxOS43LDEzIDIwLjM3LDEzLjEzIDIxLDEzLjM2VjMuNUEwLjUsMC41IDAgMCwwIDIwLjUsM0gyMC4zNEwxNSw1LjFMOSwzTTE4LDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcFNlYXJjaCA9IFwiTTE1LjUsMTJDMTgsMTIgMjAsMTQgMjAsMTYuNUMyMCwxNy4zOCAxOS43NSwxOC4yMSAxOS4zMSwxOC45TDIyLjM5LDIyTDIxLDIzLjM5TDE3Ljg4LDIwLjMyQzE3LjE5LDIwLjc1IDE2LjM3LDIxIDE1LjUsMjFDMTMsMjEgMTEsMTkgMTEsMTYuNUMxMSwxNCAxMywxMiAxNS41LDEyTTE1LjUsMTRBMi41LDIuNSAwIDAsMCAxMywxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxOUEyLjUsMi41IDAgMCwwIDE4LDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE0TTE0LDYuMTFMOCw0VjE1Ljg5TDksMTYuMjRWMTYuNUM5LDE3LjE0IDkuMDksMTcuNzYgOS4yNiwxOC4zNEw4LDE3LjlMMi42NiwxOS45N0wyLjUsMjBBMC41LDAuNSAwIDAsMSAyLDE5LjVWNC4zOEMyLDQuMTUgMi4xNSwzLjk3IDIuMzYsMy45TDgsMkwxNCw0LjFMMTkuMzQsMkgxOS41QTAuNSwwLjUgMCAwLDEgMjAsMi41VjExLjgxQzE4LjgzLDEwLjY5IDE3LjI1LDEwIDE1LjUsMTBDMTUsMTAgMTQuNSwxMC4wNiAxNCwxMC4xN1Y2LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcFNlYXJjaE91dGxpbmUgPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMiAxOS4zMSwxOC45TDIyLjM5LDIyTDIxLDIzLjM5TDE3Ljg4LDIwLjMyQzE3LjE5LDIwLjc1IDE2LjM3LDIxIDE1LjUsMjFDMTMsMjEgMTEsMTkgMTEsMTYuNUMxMSwxNCAxMywxMiAxNS41LDEyTTE1LjUsMTRBMi41LDIuNSAwIDAsMCAxMywxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxOUEyLjUsMi41IDAgMCwwIDE4LDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE0TTE5LjUsMkEwLjUsMC41IDAgMCwxIDIwLDIuNVYxMS44MUMxOS40MiwxMS4yNiAxOC43NSwxMC44MSAxOCwxMC41VjQuN0wxNSw1Ljg2VjEwQzE0LjMsMTAuMDcgMTMuNjIsMTAuMjQgMTMsMTAuNVY1Ljg3TDksNC40N1YxNi4xM0g5VjE2LjVDOSwxNy4xNCA5LjA5LDE3Ljc2IDkuMjYsMTguMzRMOCwxNy45TDIuNjYsMTkuOTdMMi41LDIwQTAuNSwwLjUgMCAwLDEgMiwxOS41VjQuMzhDMiw0LjE1IDIuMTUsMy45NyAyLjM2LDMuOUw4LDJMMTQsNC4xTDE5LjM0LDIuMDNMMTkuNSwyTTQsNS40NlYxNy4zMUw3LDE2LjE1VjQuNDVMNCw1LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcGJveCA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTE2Ljc1LDE0LjQ1QzE4LjY1LDEyLjU1IDE4LjU4LDkuMzkgMTYuNTksNy40MUMxNC42LDUuNDMgMTEuNDUsNS4zNSA5LjU1LDcuMjVDNi4xMiwxMC42OCA3LjIyLDE2Ljc4IDcuMjIsMTYuNzhDNy4yMiwxNi43OCAxMy4zMywxNy44NyAxNi43NSwxNC40NU0xMy4xNSw3Ljg2TDE0LjEzLDkuODdMMTYuMTQsMTAuODVMMTQuMTMsMTEuODNMMTMuMTUsMTMuODRMMTIuMTcsMTEuODNMMTAuMTYsMTAuODVMMTIuMTcsOS44N0wxMy4xNSw3Ljg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcmdpbiA9IFwiTTIwLDRWOUwxOC41LDcuNUw1LjUsMjAuNUwzLjUsMTguNUwxNi41LDUuNUwxNSw0SDIwTTE3LDIwQTMsMyAwIDAsMSAxNCwxN1YxNUEzLDMgMCAwLDEgMTcsMTJBMywzIDAgMCwxIDIwLDE1VjE3QTMsMyAwIDAsMSAxNywyME0xNywxNEExLDEgMCAwLDAgMTYsMTVWMTdBMSwxIDAgMCwwIDE3LDE4QTEsMSAwIDAsMCAxOCwxN1YxNUExLDEgMCAwLDAgMTcsMTRNNywxMkEzLDMgMCAwLDEgNCw5VjdBMywzIDAgMCwxIDcsNEEzLDMgMCAwLDEgMTAsN1Y5QTMsMyAwIDAsMSA3LDEyTTcsNkExLDEgMCAwLDAgNiw3VjlBMSwxIDAgMCwwIDcsMTBBMSwxIDAgMCwwIDgsOVY3QTEsMSAwIDAsMCA3LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFya2VyID0gXCJNMTguNSwxLjE1QzE3Ljk3LDEuMTUgMTcuNDYsMS4zNCAxNy4wNywxLjczTDExLjI2LDcuNTVMMTYuOTEsMTMuMkwyMi43Myw3LjM5QzIzLjUsNi42MSAyMy41LDUuMzUgMjIuNzMsNC41NkwxOS44OSwxLjczQzE5LjUsMS4zNCAxOSwxLjE1IDE4LjUsMS4xNU0xMC4zLDguNUw0LjM0LDE0LjQ2QzMuNTYsMTUuMjQgMy41NiwxNi41IDQuMzYsMTcuMzFDMy4xNCwxOC41NCAxLjksMTkuNzcgMC42NywyMUg2LjMzTDcuMTksMjAuMTRDNy45NywyMC45IDkuMjIsMjAuODkgMTAsMjAuMTJMMTUuOTUsMTQuMTZcIjtcclxuZXhwb3J0IHZhciBtZGlNYXJrZXJDYW5jZWwgPSBcIk0xNy41LDEzQzIwLDEzIDIyLDE1IDIyLDE3LjVDMjIsMjAgMjAsMjIgMTcuNSwyMkMxNSwyMiAxMywyMCAxMywxNy41QzEzLDE1IDE1LDEzIDE3LjUsMTNNMTcuNSwxNC41QzE2Ljk0LDE0LjUgMTYuNDIsMTQuNjUgMTYsMTQuOTJMMjAuMDgsMTlDMjAuMzUsMTguNTggMjAuNSwxOC4wNiAyMC41LDE3LjVBMywzIDAgMCwwIDE3LjUsMTQuNU0xNC41LDE3LjVBMywzIDAgMCwwIDE3LjUsMjAuNUMxOC4wNiwyMC41IDE4LjU4LDIwLjM1IDE5LDIwLjA4TDE0LjkyLDE2QzE0LjY1LDE2LjQyIDE0LjUsMTYuOTQgMTQuNSwxNy41TTE4LjUsMS4xNUMxOSwxLjE1IDE5LjUsMS4zNCAxOS44OSwxLjczTDIyLjczLDQuNTZDMjMuNSw1LjM1IDIzLjUsNi42MSAyMi43Myw3LjM5TDE4Ljk1LDExLjE2QzE4LjUsMTEuMDYgMTgsMTEgMTcuNSwxMUMxNi42NywxMSAxNS44OCwxMS4xNiAxNS4xNSwxMS40NEwxMS4yNiw3LjU1TDE3LjA3LDEuNzNDMTcuNDYsMS4zNCAxNy45NywxLjE1IDE4LjUsMS4xNU0xMC4zLDguNUwxMy44OSwxMi4xQzEyLjE1LDEzLjI2IDExLDE1LjI1IDExLDE3LjVDMTEsMTggMTEuMDYsMTguNSAxMS4xNiwxOC45NUwxMCwyMC4xMkM5LjIyLDIwLjg5IDcuOTcsMjAuOSA3LjE5LDIwLjE0TDYuMzMsMjFIMC42N0w0LjM2LDE3LjMxQzMuNTYsMTYuNSAzLjU2LDE1LjI0IDQuMzQsMTQuNDZMMTAuMyw4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFya2VyQ2hlY2sgPSBcIk0xMCwxNkw1LDExTDYuNDEsOS41OEwxMCwxMy4xN0wxNy41OSw1LjU4TDE5LDdNMTksMUg1QzMuODksMSAzLDEuODkgMywzVjE1LjkzQzMsMTYuNjIgMy4zNSwxNy4yMyAzLjg4LDE3LjU5TDEyLDIzTDIwLjExLDE3LjU5QzIwLjY0LDE3LjIzIDIxLDE2LjYyIDIxLDE1LjkzVjNDMjEsMS44OSAyMC4xLDEgMTksMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXN0b2RvbiA9IFwiTTIwLjk0LDE0QzIwLjY2LDE1LjQxIDE4LjUsMTYuOTYgMTUuOTcsMTcuMjZDMTQuNjYsMTcuNDEgMTMuMzcsMTcuNTYgMTIsMTcuNUM5Ljc1LDE3LjM5IDgsMTYuOTYgOCwxNi45NlYxNy41OEM4LjMyLDE5LjggMTAuMjIsMTkuOTMgMTIuMDMsMjBDMTMuODUsMjAuMDUgMTUuNDcsMTkuNTQgMTUuNDcsMTkuNTRMMTUuNTUsMjEuMTlDMTUuNTUsMjEuMTkgMTQuMjcsMjEuODcgMTIsMjJDMTAuNzUsMjIuMDcgOS4xOSwyMS45NyA3LjM4LDIxLjVDMy40NiwyMC40NSAyLjc4LDE2LjI2IDIuNjgsMTJMMi42Nyw4LjU3QzIuNjcsNC4yMyA1LjUsMi45NiA1LjUsMi45NkM2Ljk1LDIuMyA5LjQxLDIgMTEuOTcsMkgxMi4wM0MxNC41OSwyIDE3LjA1LDIuMyAxOC41LDIuOTZDMTguNSwyLjk2IDIxLjMzLDQuMjMgMjEuMzMsOC41N0MyMS4zMyw4LjU3IDIxLjM3LDExLjc4IDIwLjk0LDE0TTE4LDguOTFDMTgsNy44MyAxNy43LDcgMTcuMTUsNi4zNUMxNi41OSw1LjcyIDE1Ljg1LDUuMzkgMTQuOTIsNS4zOUMxMy44Niw1LjM5IDEzLjA1LDUuOCAxMi41LDYuNjJMMTIsNy41TDExLjUsNi42MkMxMC45NCw1LjggMTAuMTQsNS4zOSA5LjA3LDUuMzlDOC4xNSw1LjM5IDcuNDEsNS43MiA2Ljg0LDYuMzVDNi4yOSw3IDYsNy44MyA2LDguOTFWMTQuMTdIOC4xVjkuMDZDOC4xLDggOC41NSw3LjQ0IDkuNDYsNy40NEMxMC40Niw3LjQ0IDEwLjk2LDguMDkgMTAuOTYsOS4zN1YxMi4xNkgxMy4wM1Y5LjM3QzEzLjAzLDguMDkgMTMuNTMsNy40NCAxNC41NCw3LjQ0QzE1LjQ0LDcuNDQgMTUuODksOCAxNS44OSw5LjA2VjE0LjE3SDE4VjguOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWF0ZXJpYWxEZXNpZ24gPSBcIk0yMSwxMkMyMSw5Ljk3IDIwLjMzLDguMDkgMTksNi4zOFYxNy42M0MyMC4zMywxNS45NyAyMSwxNC4wOSAyMSwxMk0xNy42MywxOUg2LjM4QzcuMDYsMTkuNTUgNy45NSwyMCA5LjA1LDIwLjQxQzEwLjE0LDIwLjggMTEuMTMsMjEgMTIsMjFDMTIuODgsMjEgMTMuODYsMjAuOCAxNC45NSwyMC40MUMxNi4wNSwyMCAxNi45NCwxOS41NSAxNy42MywxOU0xMSwxN0w3LDlWMTdIMTFNMTcsOUwxMywxN0gxN1Y5TTEyLDE0LjUzTDE1Ljc1LDdIOC4yNUwxMiwxNC41M00xNy42Myw1QzE1Ljk3LDMuNjcgMTQuMDksMyAxMiwzQzkuOTEsMyA4LjAzLDMuNjcgNi4zOCw1SDE3LjYzTTUsMTcuNjNWNi4zOEMzLjY3LDguMDkgMyw5Ljk3IDMsMTJDMywxNC4wOSAzLjY3LDE1Ljk3IDUsMTcuNjNNMjMsMTJDMjMsMTUuMDMgMjEuOTQsMTcuNjMgMTkuNzgsMTkuNzhDMTcuNjMsMjEuOTQgMTUuMDMsMjMgMTIsMjNDOC45NywyMyA2LjM4LDIxLjk0IDQuMjIsMTkuNzhDMi4wNiwxNy42MyAxLDE1LjAzIDEsMTJDMSw4Ljk3IDIuMDYsNi4zOCA0LjIyLDQuMjJDNi4zOCwyLjA2IDguOTcsMSAxMiwxQzE1LjAzLDEgMTcuNjMsMi4wNiAxOS43OCw0LjIyQzIxLjk0LDYuMzggMjMsOC45NyAyMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXRlcmlhbFVpID0gXCJNOCwxNi42MVYxNS4zN0wxNCwxMS45MVY3LjIzTDksMTAuMTJMNCw3LjIzVjEzTDMsMTMuNThMMiwxM1Y1TDMuMDcsNC4zOEw5LDcuODFMMTIuOTMsNS41NEwxNC45Myw0LjM4TDE2LDVWMTMuMDZMMTAuOTIsMTZMMTQuOTcsMTguMzNMMjAsMTUuNDNWMTFMMjEsMTAuNDJMMjIsMTFWMTYuNThMMTQuOTcsMjAuNjRMOCwxNi42MU0yMiw5Ljc1TDIxLDEwLjMzTDIwLDkuNzVWOC41OEwyMSw4TDIyLDguNThWOS43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXRoQ29tcGFzcyA9IFwiTTIwLDE5Ljg4VjIyTDE4LjIsMjAuODNMMTMuNDEsMTEuODNDMTQuMDcsMTEuNjIgMTQuNjcsMTEuMjggMTUuMTksMTAuODNMMjAsMTkuODhNMTUsN0EzLDMgMCAwLDEgMTIsMTBDMTEuODUsMTAgMTEuNzEsMTAgMTEuNTYsMTBMNS44LDIwLjgzTDQsMjJWMTkuODhMOS43OSw5QzguNjksNy43NyA4Ljc5LDUuODcgMTAuMDMsNC43NkMxMC41Nyw0LjI4IDExLjI3LDQgMTIsNFYyQTEsMSAwIDAsMSAxMywzVjQuMThDMTQuMiw0LjYgMTUsNS43MyAxNSw3TTEzLDdBMSwxIDAgMCwwIDEyLDZBMSwxIDAgMCwwIDExLDdBMSwxIDAgMCwwIDEyLDhBMSwxIDAgMCwwIDEzLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWF0aENvcyA9IFwiTTQsN0EyLDIgMCAwLDAgMiw5VjE1QTIsMiAwIDAsMCA0LDE3SDZBMiwyIDAgMCwwIDgsMTVWMTRINlYxNUg0VjlINlYxMEg4VjlBMiwyIDAgMCwwIDYsN0g0TTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5TTE4LDdBMiwyIDAgMCwwIDE2LDlWMTFBMiwyIDAgMCwwIDE4LDEzSDIwVjE1SDE2VjE3SDIwQTIsMiAwIDAsMCAyMiwxNVYxM0EyLDIgMCAwLDAgMjAsMTFIMThWOUgyMlY3SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdGhJbnRlZ3JhbCA9IFwiTTExLjUgMTkuMUMxMS4zIDIwLjIgMTAuOSAyMSAxMC4yIDIxLjVDOS41IDIyIDguNiAyMi4xIDcuNSAyMS45QzcuMSAyMS44IDYuMyAyMS43IDYgMjEuNUw2LjUgMjBDNi44IDIwLjEgNy40IDIwLjMgNy43IDIwLjNDOC44IDIwLjUgOS40IDIwIDkuNiAxOC44TDEyIDUuMkMxMi4yIDQgMTIuNyAzLjIgMTMuNCAyLjZDMTQuMSAyLjEgMTUuMSAxLjkgMTYuMiAyLjFDMTYuNiAyLjIgMTcuNCAyLjMgMTggMi42TDE3LjUgNEMxNy4zIDMuOSAxNi42IDMuOCAxNi4zIDMuN0MxNSAzLjUgMTQuMyA0LjEgMTQgNS42TDExLjUgMTkuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXRoSW50ZWdyYWxCb3ggPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTUuOSA2LjlDMTUuOSA2LjkgMTUuMiA2LjYgMTQuOSA2LjZDMTQuMyA2LjUgMTMuOSA2LjcgMTMuNyA3LjdMMTIgMTYuOEMxMS44IDE3LjYgMTEuNSAxOC4yIDExIDE4LjZDMTAuNiAxOC45IDEwLjIgMTkgOS43IDE5QzguOSAxOSA3LjcgMTguNSA3LjcgMTguNUw4LjIgMTcuMUM4LjIgMTcuMSA5IDE3LjQgOS4yIDE3LjRDOS41IDE3LjUgOS43IDE3LjQgOS45IDE3LjNDMTAuMSAxNy4yIDEwLjIgMTYuOSAxMC4zIDE2LjZMMTEuOSA3LjRDMTIgNi42IDEyLjQgNiAxMi45IDUuNUMxMy41IDUuMSAxNC4yIDUgMTUgNS4xQzE1LjcgNS4yIDE2LjUgNS42IDE2LjUgNS42TDE1LjkgNi45WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdGhMb2cgPSBcIk0xOCA3QzE2LjkgNyAxNiA3LjkgMTYgOVYxNUMxNiAxNi4xIDE2LjkgMTcgMTggMTdIMjBDMjEuMSAxNyAyMiAxNi4xIDIyIDE1VjExSDIwVjE1SDE4VjlIMjJWN0gxOE0yIDdWMTdIOFYxNUg0VjdIMk0xMSA3QzkuOSA3IDkgNy45IDkgOVYxNUM5IDE2LjEgOS45IDE3IDExIDE3SDEzQzE0LjEgMTcgMTUgMTYuMSAxNSAxNVY5QzE1IDcuOSAxNC4xIDcgMTMgN0gxMU0xMSA5SDEzVjE1SDExVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWF0aE5vcm0gPSBcIk0xNCAyMVYzSDE2VjIxSDE0TTggMjFWM0gxMFYyMUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdGhOb3JtQm94ID0gXCJNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy45IDIwLjEgMyAxOSAzTTEwIDE4SDhWNkgxMFYxOE0xNiAxOEgxNFY2SDE2VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdGhTaW4gPSBcIk00LDdBMiwyIDAgMCwwIDIsOVYxMUEyLDIgMCAwLDAgNCwxM0g2VjE1SDJWMTdINkEyLDIgMCAwLDAgOCwxNVYxM0EyLDIgMCAwLDAgNiwxMUg0VjlIOFY3SDRNMTQsN1Y5SDEzVjE1SDE0VjE3SDEwVjE1SDExVjlIMTBWN0gxNE0xNiw3VjE3SDE4VjEyTDIwLDE3SDIyVjdIMjBWMTJMMTgsN0gxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXRoVGFuID0gXCJNMiw3VjlINFYxN0g2VjlIOFY3SDJNMTEsN0EyLDIgMCAwLDAgOSw5VjE3SDExVjEzSDEzVjE3SDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxMUgxMVY5TTE2LDdWMTdIMThWMTJMMjAsMTdIMjJWN0gyMFYxMkwxOCw3SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdHJpeCA9IFwiTTIsMkg2VjRINFYyMEg2VjIySDJWMk0yMCw0SDE4VjJIMjJWMjJIMThWMjBIMjBWNE05LDVIMTBWMTBIMTFWMTFIOFYxMEg5VjZMOCw2LjVWNS41TDksNU0xNSwxM0gxNlYxOEgxN1YxOUgxNFYxOEgxNVYxNEwxNCwxNC41VjEzLjVMMTUsMTNNOSwxM0MxMC4xLDEzIDExLDE0LjM0IDExLDE2QzExLDE3LjY2IDEwLjEsMTkgOSwxOUM3LjksMTkgNywxNy42NiA3LDE2QzcsMTQuMzQgNy45LDEzIDksMTNNOSwxNEM4LjQ1LDE0IDgsMTQuOSA4LDE2QzgsMTcuMSA4LjQ1LDE4IDksMThDOS41NSwxOCAxMCwxNy4xIDEwLDE2QzEwLDE0LjkgOS41NSwxNCA5LDE0TTE1LDVDMTYuMSw1IDE3LDYuMzQgMTcsOEMxNyw5LjY2IDE2LjEsMTEgMTUsMTFDMTMuOSwxMSAxMyw5LjY2IDEzLDhDMTMsNi4zNCAxMy45LDUgMTUsNU0xNSw2QzE0LjQ1LDYgMTQsNi45IDE0LDhDMTQsOS4xIDE0LjQ1LDEwIDE1LDEwQzE1LjU1LDEwIDE2LDkuMSAxNiw4QzE2LDYuOSAxNS41NSw2IDE1LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVkYWwgPSBcIk0yMCwySDRWNEw5LjgxLDguMzZDNi4xNCw5LjU3IDQuMTQsMTMuNTMgNS4zNSwxNy4yQzYuNTYsMjAuODcgMTAuNSwyMi44NyAxNC4xOSwyMS42NkMxNy44NiwyMC40NSAxOS44NiwxNi41IDE4LjY1LDEyLjgyQzE3Ljk1LDEwLjcxIDE2LjMsOS4wNSAxNC4xOSw4LjM2TDIwLDRWMk0xNC45NCwxOS41TDEyLDE3Ljc4TDkuMDYsMTkuNUw5Ljg0LDE2LjE3TDcuMjUsMTMuOTNMMTAuNjYsMTMuNjRMMTIsMTAuNUwxMy4zNCwxMy42NEwxNi43NSwxMy45M0wxNC4xNiwxNi4xN0wxNC45NCwxOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lZGFsT3V0bGluZSA9IFwiTTE0Ljk0IDE5LjVMMTIgMTcuNzdMOS4wNiAxOS41TDkuODQgMTYuMTZMNy4yNSAxMy45MkwxMC42NiAxMy42M0wxMiAxMC41TDEzLjM0IDEzLjYzTDE2Ljc1IDEzLjkyTDE0LjE2IDE2LjE2TTIwIDJINFY0TDguODYgNy42NEE4IDggMCAxIDAgMTUuMTQgNy42NEwyMCA0TTE4IDE1QTYgNiAwIDEgMSAxMC44MiA5LjEyQTUuODYgNS44NiAwIDAgMSAxMy4xOCA5LjEyQTYgNiAwIDAgMSAxOCAxNU0xMi42MyA3SDExLjM3TDcuMzcgNEgxNi43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZWRpY2FsQmFnID0gXCJNMTAsM0w4LDVWN0g1QzMuODUsNyAzLjEyLDggMyw5TDIsMTlDMS44OCwyMCAyLjU0LDIxIDQsMjFIMjBDMjEuNDYsMjEgMjIuMTIsMjAgMjIsMTlMMjEsOUMyMC44OCw4IDIwLjA2LDcgMTksN0gxNlY1TDE0LDNIMTBNMTAsNUgxNFY3SDEwVjVNMTEsMTBIMTNWMTNIMTZWMTVIMTNWMThIMTFWMTVIOFYxM0gxMVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNZWRpdGF0aW9uID0gXCJNMTIgNEMxMy4xMSA0IDE0IDQuODkgMTQgNlMxMy4xMSA4IDEyIDggMTAgNy4xMSAxMCA2IDEwLjkgNCAxMiA0TTIxIDE2VjE0QzE4Ljc2IDE0IDE2Ljg0IDEzLjA0IDE1LjQgMTEuMzJMMTQuMDYgOS43MkMxMy42OCA5LjI2IDEzLjEyIDkgMTIuNTMgOUgxMS41QzEwLjg5IDkgMTAuMzMgOS4yNiA5Ljk1IDkuNzJMOC42MSAxMS4zMkM3LjE2IDEzLjA0IDUuMjQgMTQgMyAxNFYxNkM1Ljc3IDE2IDguMTkgMTQuODMgMTAgMTIuNzVWMTVMNi4xMiAxNi41NUM1LjQ1IDE2LjgyIDUgMTcuNSA1IDE4LjIxQzUgMTkuMiA1LjggMjAgNi43OSAyMEg5VjE5LjVDOSAxOC4xMiAxMC4xMiAxNyAxMS41IDE3SDE0LjVDMTQuNzggMTcgMTUgMTcuMjIgMTUgMTcuNVMxNC43OCAxOCAxNC41IDE4SDExLjVDMTAuNjcgMTggMTAgMTguNjcgMTAgMTkuNVYyMEgxNy4yMUMxOC4yIDIwIDE5IDE5LjIgMTkgMTguMjFDMTkgMTcuNSAxOC41NSAxNi44MiAxNy44OCAxNi41NUwxNCAxNVYxMi43NUMxNS44MSAxNC44MyAxOC4yMyAxNiAyMSAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZW1vcnkgPSBcIk0xNywxN0g3VjdIMTdNMjEsMTFWOUgxOVY3QzE5LDUuODkgMTguMSw1IDE3LDVIMTVWM0gxM1Y1SDExVjNIOVY1SDdDNS44OSw1IDUsNS44OSA1LDdWOUgzVjExSDVWMTNIM1YxNUg1VjE3QTIsMiAwIDAsMCA3LDE5SDlWMjFIMTFWMTlIMTNWMjFIMTVWMTlIMTdBMiwyIDAgMCwwIDE5LDE3VjE1SDIxVjEzSDE5VjExTTEzLDEzSDExVjExSDEzTTE1LDlIOVYxNUgxNVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lbnUgPSBcIk0zLDZIMjFWOEgzVjZNMywxMUgyMVYxM0gzVjExTTMsMTZIMjFWMThIM1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZW51RG93biA9IFwiTTcsMTBMMTIsMTVMMTcsMTBIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNZW51RG93bk91dGxpbmUgPSBcIk0xOCw5VjEwLjVMMTIsMTYuNUw2LDEwLjVWOUgxOE0xMiwxMy42N0wxNC42NywxMUg5LjMzTDEyLDEzLjY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lbnVMZWZ0ID0gXCJNMTQsN0w5LDEyTDE0LDE3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVudUxlZnRPdXRsaW5lID0gXCJNMTUsMThIMTMuNUw3LjUsMTJMMTMuNSw2SDE1VjE4TTEwLjMzLDEyTDEzLDE0LjY3VjkuMzNMMTAuMzMsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVudU9wZW4gPSBcIk0yMSwxNS42MUwxOS41OSwxN0wxNC41OCwxMkwxOS41OSw3TDIxLDguMzlMMTcuNDQsMTJMMjEsMTUuNjFNMyw2SDE2VjhIM1Y2TTMsMTNWMTFIMTNWMTNIM00zLDE4VjE2SDE2VjE4SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVudVJpZ2h0ID0gXCJNMTAsMTdMMTUsMTJMMTAsN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNZW51UmlnaHRPdXRsaW5lID0gXCJNOSw2SDEwLjVMMTYuNSwxMkwxMC41LDE4SDlWNk0xMy42NywxMkwxMSw5LjMzVjE0LjY3TDEzLjY3LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lbnVTd2FwID0gXCJNMTIsNkw3LDExSDE3TDEyLDZNNywxM0wxMiwxOEwxNywxM0g3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lbnVTd2FwT3V0bGluZSA9IFwiTTEyLDMuNUw2LDkuNVYxMUgxOFY5LjVMMTIsMy41TTEyLDYuMzNMMTQuNjcsOUg5LjMzTDEyLDYuMzNNNiwxM1YxNC41TDEyLDIwLjVMMTgsMTQuNVYxM0g2TTkuMzMsMTVIMTQuNjdMMTIsMTcuNjdMOS4zMywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZW51VXAgPSBcIk03LDE1TDEyLDEwTDE3LDE1SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVudVVwT3V0bGluZSA9IFwiTTE4LDE2VjE0LjVMMTIsOC41TDYsMTQuNVYxNkgxOE0xMiwxMS4zM0wxNC42NywxNEg5LjMzTDEyLDExLjMzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lcmdlID0gXCJNOCAxN0wxMiAxM0gxNS4yQzE1LjYgMTQuMiAxNi43IDE1IDE4IDE1QzE5LjcgMTUgMjEgMTMuNyAyMSAxMlMxOS43IDkgMTggOUMxNi43IDkgMTUuNiA5LjggMTUuMiAxMUgxMkw4IDdWM0gzVjhINkwxMC4yIDEyTDYgMTZIM1YyMUg4VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2UgPSBcIk0yMCwySDRBMiwyIDAgMCwwIDIsNFYyMkw2LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QzIyLDIuODkgMjEuMSwyIDIwLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUFsZXJ0ID0gXCJNMTMgMTFIMTFWNUgxM00xMyAxNUgxMVYxM0gxM00yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VBbGVydE91dGxpbmUgPSBcIk0xMywxMEgxMVY2SDEzVjEwTTEzLDEySDExVjE0SDEzVjEyTTIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDZMMiwyMlY0QTIsMiAwIDAsMSA0LDJIMjBBMiwyIDAgMCwxIDIyLDRNMjAsNEg0VjE3LjJMNS4yLDE2SDIwVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUFycm93TGVmdCA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMjJMNiAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTYgMTFIMTEuNUwxMy4zIDEyLjhMMTIgMTRMOCAxMEwxMiA2TDEzLjIgNy4yTDExLjUgOUgxNlYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlQXJyb3dMZWZ0T3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMjJMNiAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMjAgMTZINS4yTDQgMTcuMlY0SDIwVjE2TTE2IDExVjlIMTEuNUwxMy4zIDcuMkwxMiA2TDggMTBMMTIgMTRMMTMuMiAxMi44TDExLjUgMTFIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUFycm93UmlnaHQgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTEyIDE0TDEwLjggMTIuOEwxMi42IDExSDhWOUgxMi41TDEwLjcgNy4yTDEyIDZMMTYgMTBMMTIgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUFycm93UmlnaHRPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZNOCA5VjExSDEyLjVMMTAuNyAxMi44TDEyIDE0TDE2IDEwTDEyIDZMMTAuOCA3LjJMMTIuNSA5SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUJvb2ttYXJrID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0xOSAxM0wxNi41IDExLjVMMTQgMTNWNUgxOVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlQm9va21hcmtPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZNMTggMTRWNkgxM1YxNEwxNS41IDEyLjVMMTggMTRcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlQnVsbGV0ZWQgPSBcIk0yMCwySDRBMiwyIDAgMCwwIDIsNFYyMkw2LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTgsMTRINlYxMkg4VjE0TTgsMTFINlY5SDhWMTFNOCw4SDZWNkg4VjhNMTUsMTRIMTBWMTJIMTVWMTRNMTgsMTFIMTBWOUgxOFYxMU0xOCw4SDEwVjZIMThWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlQnVsbGV0ZWRPZmYgPSBcIk0xLjI3LDEuNzNMMCwzTDIsNVYyMkw2LDE4SDE1TDIwLjczLDIzLjczTDIyLDIyLjQ2TDEuMjcsMS43M004LDE0SDZWMTJIOFYxNE02LDExVjlMOCwxMUg2TTIwLDJINC4wOEwxMCw3LjkyVjZIMThWOEgxMC4wOEwxMS4wOCw5SDE4VjExSDEzLjA4TDIwLjA3LDE4QzIxLjE0LDE3Ljk1IDIyLDE3LjA4IDIyLDE2VjRBMiwyIDAgMCwwIDIwLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUNvZyA9IFwiTTEzLjUsMTBBMS41LDEuNSAwIDAsMSAxMiwxMS41QzExLjE2LDExLjUgMTAuNSwxMC44MyAxMC41LDEwQTEuNSwxLjUgMCAwLDEgMTIsOC41QTEuNSwxLjUgMCAwLDEgMTMuNSwxME0yMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEg2TDIsMjJWNEEyLDIgMCAwLDEgNCwySDIwQTIsMiAwIDAsMSAyMiw0TTE2Ljc3LDExLjMyTDE1LjcsMTAuNUMxNS43MSwxMC4zMyAxNS43MSwxMC4xNiAxNS43LDEwQzE1LjcyLDkuODQgMTUuNzIsOS42NyAxNS43LDkuNUwxNi43Niw4LjY4QzE2Ljg1LDguNiAxNi44OCw4LjQ3IDE2LjgyLDguMzZMMTUuODIsNi42M0MxNS43Niw2LjUgMTUuNjMsNi40NyAxNS41LDYuNUwxNC4yNyw3QzE0LDYuOCAxMy43Myw2LjYzIDEzLjQyLDYuNUwxMy4yMyw1LjE5QzEzLjIxLDUuMDggMTMuMTEsNSAxMyw1SDExQzEwLjg4LDUgMTAuNzcsNS4wOSAxMC43NSw1LjIxTDEwLjU2LDYuNTNDMTAuMjYsNi42NSA5Ljk3LDYuODEgOS43LDdMOC40Niw2LjVDOC4zNCw2LjQ2IDguMjEsNi41IDguMTUsNi42MUw3LjE1LDguMzRDNy4wOSw4LjQ1IDcuMTEsOC41OCA3LjIxLDguNjZMOC4yNyw5LjVDOC4yMyw5LjgyIDguMjMsMTAuMTYgOC4yNywxMC41TDcuMjEsMTEuMzJDNy4xMiwxMS40IDcuMDksMTEuNTMgNy4xNSwxMS42NEw4LjE1LDEzLjM3QzguMjEsMTMuNSA4LjM0LDEzLjUzIDguNDYsMTMuNUw5LjcsMTNDOS45NiwxMy4yIDEwLjI0LDEzLjM3IDEwLjU1LDEzLjVMMTAuNzQsMTQuODFDMTAuNzcsMTQuOTMgMTAuODgsMTUgMTEsMTVIMTNDMTMuMTIsMTUgMTMuMjMsMTQuOTEgMTMuMjUsMTQuNzlMMTMuNDQsMTMuNDdDMTMuNzQsMTMuMzQgMTQsMTMuMTggMTQuMjgsMTNMMTUuNTMsMTMuNUMxNS42NSwxMy41IDE1Ljc4LDEzLjUgMTUuODQsMTMuMzdMMTYuODQsMTEuNjRDMTYuOSwxMS41MyAxNi44NywxMS40IDE2Ljc3LDExLjMyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VDb2dPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZNMTYuOCAxMS4zTDE1LjcgMTAuNVYxMCA5LjVMMTYuOCA4LjdDMTYuOSA4LjYgMTYuOSA4LjUgMTYuOSA4LjRMMTUuOSA2LjdDMTUuOCA2LjYgMTUuNyA2LjUgMTUuNiA2LjZMMTQuMyA3QzE0IDYuOCAxMy44IDYuNiAxMy40IDYuNUwxMy4yIDUuMkMxMy4yIDUuMSAxMy4xIDUgMTMgNUgxMUMxMC45IDUgMTAuOCA1LjEgMTAuOCA1LjJMMTAuNiA2LjVDMTAuMyA2LjcgMTAgNi44IDkuNyA3TDguNSA2LjVDOC40IDYuNSA4LjMgNi41IDguMiA2LjZMNy4yIDguM0M3LjEgOC40IDcuMiA4LjUgNy4zIDguNkw4LjQgOS40VjEwLjRMNy4zIDExLjJDNy4yIDExLjMgNy4yIDExLjQgNy4yIDExLjVMOC4yIDEzLjJDOC4zIDEzLjMgOC40IDEzLjQgOC41IDEzLjNMOS43IDEzQzEwIDEzLjIgMTAuMiAxMy40IDEwLjUgMTMuNUwxMC43IDE0LjhDMTAuNyAxNC45IDEwLjggMTUgMTEgMTVIMTNDMTMuMSAxNSAxMy4yIDE0LjkgMTMuMiAxNC44TDEzLjQgMTMuNUMxMy43IDEzLjQgMTQgMTMuMiAxNC4yIDEzTDE1LjQgMTMuNUMxNS41IDEzLjUgMTUuNiAxMy41IDE1LjcgMTMuNEwxNi43IDExLjdDMTYuOSAxMS41IDE2LjkgMTEuNCAxNi44IDExLjNNMTIgMTEuNUMxMS4yIDExLjUgMTAuNSAxMC44IDEwLjUgMTBTMTEuMiA4LjUgMTIgOC41IDEzLjUgOS4yIDEzLjUgMTAgMTIuOCAxMS41IDEyIDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZURyYXcgPSBcIk0xOCwxNEgxMC41TDEyLjUsMTJIMThNNiwxNFYxMS41TDEyLjg4LDQuNjRDMTMuMDcsNC40NSAxMy4zOSw0LjQ1IDEzLjU5LDQuNjRMMTUuMzUsNi40MUMxNS41NSw2LjYxIDE1LjU1LDYuOTIgMTUuMzUsNy4xMkw4LjQ3LDE0TTIwLDJINEEyLDIgMCAwLDAgMiw0VjIyTDYsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRDMjIsMi44OSAyMS4xLDIgMjAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlRmxhc2ggPSBcIk0yMiA0QzIyIDIuOSAyMS4xIDIgMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDE1VjEwSDIyVjRNMjIuNSAxNkgyMC4zTDIyIDEySDE3VjE4SDE5VjIzTDIyLjUgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUZsYXNoT3V0bGluZSA9IFwiTTQgMTcuMlY0SDIwVjEwSDIyVjRDMjIgMi45IDIxLjEgMiAyMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMTVWMTZINS4yTDQgMTcuMk0yMi41IDE2SDIwLjNMMjIgMTJIMTdWMThIMTlWMjNMMjIuNSAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlSW1hZ2UgPSBcIk01LDE0TDguNSw5LjVMMTEsMTIuNUwxNC41LDhMMTksMTRNMjAsMkg0QTIsMiAwIDAsMCAyLDRWMjJMNiwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEMyMiwyLjg5IDIxLjEsMiAyMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VJbWFnZU91dGxpbmUgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE2SDUuMkw0IDE3LjJWNEgyMFYxNk01IDE0TDguNSA5LjVMMTEgMTIuNUwxNC41IDhMMTkgMTRcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlTG9jayA9IFwiTTIwLjUgMEEyLjUgMi41IDAgMCAwIDE4IDIuNVYzQTEgMSAwIDAgMCAxNyA0VjhBMSAxIDAgMCAwIDE4IDlIMjNBMSAxIDAgMCAwIDI0IDhWNEExIDEgMCAwIDAgMjMgM1YyLjVBMi41IDIuNSAwIDAgMCAyMC41IDBNMjAuNSAxQTEuNSAxLjUgMCAwIDEgMjIgMi41VjNIMTlWMi41QTEuNSAxLjUgMCAwIDEgMjAuNSAxTTQgMkEyIDIgMCAwIDAgMiA0VjIyTDYgMThIMjBBMiAyIDAgMCAwIDIyIDE2VjExSDE3QzE1Ljg5IDExIDE1IDEwLjExIDE1IDlWMkg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VMb2NrT3V0bGluZSA9IFwiTTIzIDNWMi41QzIzIDEuMSAyMS45IDAgMjAuNSAwUzE4IDEuMSAxOCAyLjVWM0MxNy41IDMgMTcgMy41IDE3IDRWOEMxNyA4LjUgMTcuNSA5IDE4IDlIMjNDMjMuNSA5IDI0IDguNSAyNCA4VjRDMjQgMy41IDIzLjUgMyAyMyAzTTIyIDNIMTlWMi41QzE5IDEuNyAxOS43IDEgMjAuNSAxUzIyIDEuNyAyMiAyLjVWM00yMiAxMVYxNkMyMiAxNy4xIDIxLjEgMTggMjAgMThINkwyIDIyVjRDMiAyLjkgMi45IDIgNCAySDE1VjRINFYxNy4yTDUuMiAxNkgyMFYxMUgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlTWludXMgPSBcIk0yMCAyQzIxLjExIDIgMjIgMi45IDIyIDRWMTZDMjIgMTcuMTEgMjEuMTEgMTggMjAgMThINkwyIDIyVjRDMiAyLjg5IDIuOSAyIDQgMkgyME04IDlWMTFIMTZWOUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VNaW51c091dGxpbmUgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE2SDUuMkw0IDE3LjJWNEgyMFYxNk04IDlWMTFIMTZWOUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VPZmYgPSBcIk0yMC45NSAxNy43NUw1LjIgMkgyMEMyMS4xIDIgMjIgMi44OSAyMiA0VjE2QzIyIDE2Ljc2IDIxLjU3IDE3LjQxIDIwLjk1IDE3Ljc1TTIuMzkgMS43M0wxLjExIDNMMiAzLjlDMiAzLjkzIDIgMy45NyAyIDRWMjJMNiAxOEgxNi4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZU9mZk91dGxpbmUgPSBcIk03LjIgNEw1LjIgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE2Ljc2IDIxLjU3IDE3LjQxIDIwLjk1IDE3Ljc1TDE5LjIgMTZIMjBWNEg3LjJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTYuMTEgMThINkwyIDIyVjRDMiAzLjk3IDIgMy45MyAyIDMuOUwxLjExIDNMMi4zOSAxLjczTDYuMSA1LjQ0TDE2LjY1IDE2SDE2LjY2TDE4LjY2IDE4SDE4LjY1TDIyLjExIDIxLjQ2TTE0LjExIDE2TDQgNS44OVYxOEw2IDE2SDE0LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVBsdXMgPSBcIk0yMCwyQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEg2TDIsMjJWNEMyLDIuODkgMi45LDIgNCwySDIwTTExLDZWOUg4VjExSDExVjE0SDEzVjExSDE2VjlIMTNWNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlUGx1c091dGxpbmUgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE2SDUuMkw0IDE3LjJWNEgyMFYxNk0xNiA5VjExSDEzVjE0SDExVjExSDhWOUgxMVY2SDEzVjlIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVByb2Nlc3NpbmcgPSBcIk0xNywxMUgxNVY5SDE3TTEzLDExSDExVjlIMTNNOSwxMUg3VjlIOU0yMCwySDRBMiwyIDAgMCwwIDIsNFYyMkw2LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QzIyLDIuODkgMjEuMSwyIDIwLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVByb2Nlc3NpbmdPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZNMTcgMTFIMTVWOUgxN00xMyAxMUgxMVY5SDEzTTkgMTFIN1Y5SDlcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlUXVlc3Rpb24gPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTEzIDE0SDExVjEySDEzVjE0TTE0LjggOUMxNC41IDkuNCAxNC4xIDkuNiAxMy43IDkuOEMxMy40IDEwIDEzLjMgMTAuMSAxMy4yIDEwLjNDMTMgMTAuNSAxMyAxMC43IDEzIDExSDExQzExIDEwLjUgMTEuMSAxMC4yIDExLjMgOS45QzExLjUgOS43IDExLjkgOS40IDEyLjQgOS4xQzEyLjcgOSAxMi45IDguOCAxMyA4LjZDMTMuMSA4LjQgMTMuMiA4LjEgMTMuMiA3LjlDMTMuMiA3LjYgMTMuMSA3LjQgMTIuOSA3LjJDMTIuNyA3IDEyLjQgNi45IDEyLjEgNi45QzExLjggNi45IDExLjYgNyAxMS40IDcuMUMxMS4yIDcuMiAxMS4xIDcuNCAxMS4xIDcuN0g5LjFDOS4yIDcgOS41IDYuNCAxMCA2QzEwLjUgNS42IDExLjIgNS41IDEyLjEgNS41QzEzIDUuNSAxMy44IDUuNyAxNC4zIDYuMUMxNC44IDYuNSAxNS4xIDcuMSAxNS4xIDcuOEMxNS4yIDguMiAxNS4xIDguNiAxNC44IDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVF1ZXN0aW9uT3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMjJMNiAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMjAgMTZINS4yTDQgMTcuMlY0SDIwVjE2TTEyLjIgNS41QzExLjMgNS41IDEwLjYgNS43IDEwLjEgNkM5LjUgNi40IDkuMiA3IDkuMyA3LjdIMTEuM0MxMS4zIDcuNCAxMS40IDcuMiAxMS42IDcuMUMxMS44IDcgMTIgNi45IDEyLjMgNi45QzEyLjYgNi45IDEyLjkgNyAxMy4xIDcuMkMxMy4zIDcuNCAxMy40IDcuNiAxMy40IDcuOUMxMy40IDguMiAxMy4zIDguNCAxMy4yIDguNkMxMyA4LjggMTIuOCA5IDEyLjYgOS4xQzEyLjEgOS40IDExLjcgOS43IDExLjUgOS45QzExLjEgMTAuMiAxMSAxMC41IDExIDExSDEzQzEzIDEwLjcgMTMuMSAxMC41IDEzLjEgMTAuM0MxMy4yIDEwLjEgMTMuNCAxMCAxMy42IDkuOEMxNC4xIDkuNiAxNC40IDkuMyAxNC43IDguOUMxNSA4LjUgMTUuMSA4LjEgMTUuMSA3LjdDMTUuMSA3IDE0LjggNi40IDE0LjMgNkMxMy45IDUuNyAxMy4xIDUuNSAxMi4yIDUuNU0xMSAxMlYxNEgxM1YxMkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlUmVwbHkgPSBcIk0yMiw0QzIyLDIuODkgMjEuMSwyIDIwLDJINEEyLDIgMCAwLDAgMiw0VjE2QTIsMiAwIDAsMCA0LDE4SDE4TDIyLDIyVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVJlcGx5T3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xIDIuOSAxOCA0IDE4SDE4TDIyIDIyVjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE3LjJMMTguOCAxNkg0VjRIMjBWMTcuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlUmVwbHlUZXh0ID0gXCJNMTgsOEg2VjZIMThWOE0xOCwxMUg2VjlIMThWMTFNMTgsMTRINlYxMkgxOFYxNE0yMiw0QTIsMiAwIDAsMCAyMCwySDRBMiwyIDAgMCwwIDIsNFYxNkEyLDIgMCAwLDAgNCwxOEgxOEwyMiwyMlY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VSZXBseVRleHRPdXRsaW5lID0gXCJNOSAxMUgxOFYxM0g5VjExTTE4IDdINlY5SDE4VjdNMjIgNFYyMkwxOCAxOEg0QzIuOSAxOCAyIDE3LjExIDIgMTZWNEMyIDIuOSAyLjkgMiA0IDJIMjBDMjEuMSAyIDIyIDIuODkgMjIgNE0yMCA0SDRWMTZIMTguODNMMjAgMTcuMTdWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlU2V0dGluZ3MgPSBcIk0yMCwySDRBMiwyIDAgMCwwIDIsNFYyMkw2LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTExLDI0SDEzVjIySDExVjI0TTcsMjRIOVYyMkg3VjI0TTE1LDI0SDE3VjIySDE1VjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VTZXR0aW5nc091dGxpbmUgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE2SDUuMkw0IDE3LjJWNEgyMFYxNk0xMSAyNEgxM1YyMkgxMVYyNE03IDI0SDlWMjJIN1YyNE0xNSAyNEgxN1YyMkgxNVYyNFwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VUZXh0ID0gXCJNMjAsMkg0QTIsMiAwIDAsMCAyLDRWMjJMNiwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEEyLDIgMCAwLDAgMjAsMk02LDlIMThWMTFINk0xNCwxNEg2VjEySDE0TTE4LDhINlY2SDE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVRleHRDbG9jayA9IFwiTTIyIDEyLjQxVjRDMjIgMi45IDIxLjExIDIgMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDkuMjlDMTAuMTUgMjAuODkgMTIuODMgMjMgMTYgMjNDMTkuODYgMjMgMjMgMTkuODcgMjMgMTZDMjMgMTQuNjkgMjIuNjMgMTMuNDYgMjIgMTIuNDFNNiA2SDE4VjhINlY2TTE2IDlDMTQuMSA5IDEyLjM3IDkuNzcgMTEuMTEgMTFINlY5SDE2TTYgMTJIMTAuMjZDOS44NCAxMi42IDkuNSAxMy4yOCA5LjMgMTRINlYxMk0xNiAyMC44NUMxMy4zMiAyMC44NSAxMS4xNSAxOC42OCAxMS4xNSAxNlMxMy4zMiAxMS4xNSAxNiAxMS4xNUMxOC42NyAxMS4xNSAyMC44NSAxMy4zMiAyMC44NSAxNlMxOC42NyAyMC44NSAxNiAyMC44NU0xNi41IDE1LjgyTDE4Ljk0IDE3LjIzTDE4LjE5IDE4LjUzTDE1IDE2LjY5VjEzSDE2LjVWMTUuODJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVRleHRDbG9ja091dGxpbmUgPSBcIk0yMiAxMi40MVY0QzIyIDIuOSAyMS4xMSAyIDIwIDJINEMyLjkgMiAyIDIuODkgMiA0VjIyTDYgMThIOS4yOUMxMC4xNSAyMC44OSAxMi44MyAyMyAxNiAyM0MxOS44NiAyMyAyMyAxOS44NyAyMyAxNkMyMyAxNC42OSAyMi42MyAxMy40NiAyMiAxMi40MU01LjE3IDE2TDQgMTcuMTdWNEgyMFYxMC4yNkMxOC44NiA5LjQ3IDE3LjUgOSAxNiA5QzE0LjEgOSAxMi4zNyA5Ljc3IDExLjExIDExSDZWMTNIOS42OUM5LjI1IDEzLjkxIDkgMTQuOTMgOSAxNkg1LjE3TTE2IDIwLjg1QzEzLjMyIDIwLjg1IDExLjE1IDE4LjY4IDExLjE1IDE2UzEzLjMyIDExLjE1IDE2IDExLjE1QzE4LjY3IDExLjE1IDIwLjg1IDEzLjMyIDIwLjg1IDE2UzE4LjY3IDIwLjg1IDE2IDIwLjg1TTE4IDlINlY3SDE4VjlNMTYuNSAxNS44MkwxOC45NCAxNy4yM0wxOC4xOSAxOC41M0wxNSAxNi42OVYxM0gxNi41VjE1LjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VUZXh0TG9jayA9IFwiTTIwLjUgMEEyLjUgMi41IDAgMCAwIDE4IDIuNVYzQTEgMSAwIDAgMCAxNyA0VjhBMSAxIDAgMCAwIDE4IDlIMjNBMSAxIDAgMCAwIDI0IDhWNEExIDEgMCAwIDAgMjMgM1YyLjVBMi41IDIuNSAwIDAgMCAyMC41IDBNMjAuNSAxQTEuNSAxLjUgMCAwIDEgMjIgMi41VjNIMTlWMi41QTEuNSAxLjUgMCAwIDEgMjAuNSAxTTQgMkEyIDIgMCAwIDAgMiA0VjIyTDYgMThIMjBBMiAyIDAgMCAwIDIyIDE2VjExSDE3QzE1Ljg5IDExIDE1IDEwLjExIDE1IDlWMkg0TTYgNkgxM1Y4SDZWNk02IDlIMTNWMTFINlY5TTYgMTJIMTRWMTRINlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlVGV4dExvY2tPdXRsaW5lID0gXCJNMjMgM1YyLjVDMjMgMS4xMiAyMS44OCAwIDIwLjUgMFMxOCAxLjEyIDE4IDIuNVYzQzE3LjQ1IDMgMTcgMy40NSAxNyA0VjhDMTcgOC41NSAxNy40NSA5IDE4IDlIMjNDMjMuNTUgOSAyNCA4LjU1IDI0IDhWNEMyNCAzLjQ1IDIzLjU1IDMgMjMgM00yMiAzSDE5VjIuNUMxOSAxLjY3IDE5LjY3IDEgMjAuNSAxUzIyIDEuNjcgMjIgMi41VjNNNiAxMUgxNVYxM0g2VjExTTYgN0gxNVY5SDZWN00yMiAxMVYxNkMyMiAxNy4xMSAyMS4xMSAxOCAyMCAxOEg2TDIgMjJWNEMyIDIuODkgMi45IDIgNCAySDE1VjRINFYxNy4xN0w1LjE3IDE2SDIwVjExSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VUZXh0T3V0bGluZSA9IFwiTTIwLDJBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDZMMiwyMlY0QzIsMi44OSAyLjksMiA0LDJIMjBNNCw0VjE3LjE3TDUuMTcsMTZIMjBWNEg0TTYsN0gxOFY5SDZWN002LDExSDE1VjEzSDZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVZpZGVvID0gXCJNMTgsMTRMMTQsMTAuOFYxNEg2VjZIMTRWOS4yTDE4LDZNMjAsMkg0QTIsMiAwIDAsMCAyLDRWMjJMNiwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEMyMiwyLjg5IDIxLjEsMiAyMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1ldGVvciA9IFwiTTIuOCwzTDE5LjY3LDE4LjgyQzE5LjY3LDE4LjgyIDIwLDE5LjI3IDE5LjU4LDE5LjcxQzE5LjE3LDIwLjE1IDE4LjYzLDE5Ljc3IDE4LjYzLDE5Ljc3TDIuOCwzTTcuODEsNC41OUwyMC45MSwxNi42NEMyMC45MSwxNi42NCAyMS4yMywxNy4wOCAyMC44MiwxNy41QzIwLjQsMTcuOTcgMTkuODYsMTcuNTkgMTkuODYsMTcuNTlMNy44MSw0LjU5TTQuMjksOEwxNy4zOSwyMC4wM0MxNy4zOSwyMC4wMyAxNy43MSwyMC40NyAxNy4zLDIwLjkxQzE2Ljg4LDIxLjM2IDE2LjM0LDIxIDE2LjM0LDIxTDQuMjksOE0xMi4wNSw1Ljk2TDIxLjIsMTQuMzdDMjEuMiwxNC4zNyAyMS40MiwxNC42OCAyMS4xMywxNUMyMC44NSwxNS4zIDIwLjQ3LDE1LjAzIDIwLjQ3LDE1LjAzTDEyLjA1LDUuOTZNNS40NSwxMS45MUwxNC42LDIwLjMzQzE0LjYsMjAuMzMgMTQuODIsMjAuNjQgMTQuNTQsMjAuOTVDMTQuMjUsMjEuMjYgMTMuODcsMjEgMTMuODcsMjFMNS40NSwxMS45MU0xNi4zOCw3LjkyTDIwLjU1LDExLjc0QzIwLjU1LDExLjc0IDIwLjY2LDExLjg4IDIwLjUsMTIuMDNDMjAuMzgsMTIuMTcgMjAuMTksMTIuMDUgMjAuMTksMTIuMDVMMTYuMzgsNy45Mk03LjU2LDE2LjFMMTEuNzQsMTkuOTFDMTEuNzQsMTkuOTEgMTEuODUsMjAuMDYgMTEuNywyMC4yQzExLjU2LDIwLjM1IDExLjM3LDIwLjIyIDExLjM3LDIwLjIyTDcuNTYsMTYuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXRyb25vbWUgPSBcIk0xMiwxLjc1TDguNTcsMi42N0w0LjA2LDE5LjUzQzQuMDMsMTkuNjggNCwxOS44NCA0LDIwQzQsMjEuMTEgNC44OSwyMiA2LDIySDE4QzE5LjExLDIyIDIwLDIxLjExIDIwLDIwQzIwLDE5Ljg0IDE5Ljk3LDE5LjY4IDE5Ljk0LDE5LjUzTDE4LjU4LDE0LjQyTDE3LDE2TDE3LjIsMTdIMTMuNDFMMTYuMjUsMTQuMTZMMTQuODQsMTIuNzVMMTAuNTksMTdINi44TDEwLjI5LDRIMTMuNzFMMTUuMTcsOS40M0wxNi44LDcuNzlMMTUuNDMsMi42N0wxMiwxLjc1TTExLjI1LDVWMTQuNzVMMTIuNzUsMTMuMjVWNUgxMS4yNU0xOS43OSw3LjhMMTYuOTYsMTAuNjNMMTYuMjUsOS45MkwxNC44NCwxMS4zNEwxNy42NiwxNC4xNkwxOS4wOCwxMi43NUwxOC4zNywxMi4wNEwyMS4yLDkuMjFMMTkuNzksNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1ldHJvbm9tZVRpY2sgPSBcIk0xMiwxLjc1TDguNTcsMi42N0w0LjA3LDE5LjVDNC4wNiwxOS41IDQsMTkuODQgNCwyMEM0LDIxLjExIDQuODksMjIgNiwyMkgxOEMxOS4xMSwyMiAyMCwyMS4xMSAyMCwyMEMyMCwxOS44NCAxOS45NCwxOS41IDE5LjkzLDE5LjVMMTUuNDMsMi42N0wxMiwxLjc1TTEwLjI5LDRIMTMuNzFMMTcuMiwxN0gxM1YxMkgxMVYxN0g2LjhMMTAuMjksNE0xMSw1VjlIMTBWMTFIMTRWOUgxM1Y1SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvU2QgPSBcIk04LDJBMiwyIDAgMCwwIDYsNFYxMUw0LDEzVjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY0QTIsMiAwIDAsMCAxOCwySDhNOSw0SDExVjhIOVY0TTEyLDRIMTRWOEgxMlY0TTE1LDRIMTdWOEgxNVY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvcGhvbmUgPSBcIk0xMiwyQTMsMyAwIDAsMSAxNSw1VjExQTMsMyAwIDAsMSAxMiwxNEEzLDMgMCAwLDEgOSwxMVY1QTMsMyAwIDAsMSAxMiwyTTE5LDExQzE5LDE0LjUzIDE2LjM5LDE3LjQ0IDEzLDE3LjkzVjIxSDExVjE3LjkzQzcuNjEsMTcuNDQgNSwxNC41MyA1LDExSDdBNSw1IDAgMCwwIDEyLDE2QTUsNSAwIDAsMCAxNywxMUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3Bob25lTWludXMgPSBcIk05LDJBMywzIDAgMCwxIDEyLDVWMTFBMywzIDAgMCwxIDksMTRBMywzIDAgMCwxIDYsMTFWNUEzLDMgMCAwLDEgOSwyTTE2LDExQzE2LDE0LjUgMTMuNDQsMTcuNDMgMTAsMTcuOTNWMjFIOFYxNy45M0M0LjU2LDE3LjQzIDIsMTQuNSAyLDExSDRBNSw1IDAgMCwwIDksMTZBNSw1IDAgMCwwIDE0LDExSDE2TTE1LDVIMjNWN0gxNVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvcGhvbmVPZmYgPSBcIk0xOSwxMUMxOSwxMi4xOSAxOC42NiwxMy4zIDE4LjEsMTQuMjhMMTYuODcsMTMuMDVDMTcuMTQsMTIuNDMgMTcuMywxMS43NCAxNy4zLDExSDE5TTE1LDExLjE2TDksNS4xOFY1QTMsMyAwIDAsMSAxMiwyQTMsMyAwIDAsMSAxNSw1VjExTDE1LDExLjE2TTQuMjcsM0wyMSwxOS43M0wxOS43MywyMUwxNS41NCwxNi44MUMxNC43NywxNy4yNyAxMy45MSwxNy41OCAxMywxNy43MlYyMUgxMVYxNy43MkM3LjcyLDE3LjIzIDUsMTQuNDEgNSwxMUg2LjdDNi43LDE0IDkuMjQsMTYuMSAxMiwxNi4xQzEyLjgxLDE2LjEgMTMuNiwxNS45MSAxNC4zMSwxNS41OEwxMi42NSwxMy45MkwxMiwxNEEzLDMgMCAwLDEgOSwxMVYxMC4yOEwzLDQuMjdMNC4yNywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvcGhvbmVPdXRsaW5lID0gXCJNMTcuMywxMUMxNy4zLDE0IDE0Ljc2LDE2LjEgMTIsMTYuMUM5LjI0LDE2LjEgNi43LDE0IDYuNywxMUg1QzUsMTQuNDEgNy43MiwxNy4yMyAxMSwxNy43MlYyMUgxM1YxNy43MkMxNi4yOCwxNy4yMyAxOSwxNC40MSAxOSwxMU0xMC44LDQuOUMxMC44LDQuMjQgMTEuMzQsMy43IDEyLDMuN0MxMi42NiwzLjcgMTMuMiw0LjI0IDEzLjIsNC45TDEzLjE5LDExLjFDMTMuMTksMTEuNzYgMTIuNjYsMTIuMyAxMiwxMi4zQzExLjM0LDEyLjMgMTAuOCwxMS43NiAxMC44LDExLjFNMTIsMTRBMywzIDAgMCwwIDE1LDExVjVBMywzIDAgMCwwIDEyLDJBMywzIDAgMCwwIDksNVYxMUEzLDMgMCAwLDAgMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9waG9uZVBsdXMgPSBcIk05LDJBMywzIDAgMCwxIDEyLDVWMTFBMywzIDAgMCwxIDksMTRBMywzIDAgMCwxIDYsMTFWNUEzLDMgMCAwLDEgOSwyTTE2LDExQzE2LDE0LjUgMTMuNDQsMTcuNDMgMTAsMTcuOTNWMjFIOFYxNy45M0M0LjU2LDE3LjQzIDIsMTQuNSAyLDExSDRBNSw1IDAgMCwwIDksMTZBNSw1IDAgMCwwIDE0LDExSDE2TTE1LDVIMThWMkgyMFY1SDIzVjdIMjBWMTBIMThWN0gxNVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvcGhvbmVTZXR0aW5ncyA9IFwiTTE5LDEwSDE3LjNDMTcuMywxMyAxNC43NiwxNS4xIDEyLDE1LjFDOS4yNCwxNS4xIDYuNywxMyA2LjcsMTBINUM1LDEzLjQxIDcuNzIsMTYuMjMgMTEsMTYuNzJWMjBIMTNWMTYuNzJDMTYuMjgsMTYuMjMgMTksMTMuNDEgMTksMTBNMTUsMjRIMTdWMjJIMTVNMTEsMjRIMTNWMjJIMTFNMTIsMTNBMywzIDAgMCwwIDE1LDEwVjRBMywzIDAgMCwwIDEyLDFBMywzIDAgMCwwIDksNFYxMEEzLDMgMCAwLDAgMTIsMTNNNywyNEg5VjIySDdWMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9waG9uZVZhcmlhbnQgPSBcIk05LDNBNCw0IDAgMCwxIDEzLDdINUE0LDQgMCAwLDEgOSwzTTExLjg0LDkuODJMMTEsMThIMTBWMTlBMiwyIDAgMCwwIDEyLDIxQTIsMiAwIDAsMCAxNCwxOVYxNEE0LDQgMCAwLDEgMTgsMTBIMjBMMTksMTFMMjAsMTJIMThBMiwyIDAgMCwwIDE2LDE0VjE5QTQsNCAwIDAsMSAxMiwyM0E0LDQgMCAwLDEgOCwxOVYxOEg3TDYuMTYsOS44MkM1LjY3LDkuMzIgNS4zMSw4LjcgNS4xMyw4SDEyLjg3QzEyLjY5LDguNyAxMi4zMyw5LjMyIDExLjg0LDkuODJNOSwxMUExLDEgMCAwLDAgOCwxMkExLDEgMCAwLDAgOSwxM0ExLDEgMCAwLDAgMTAsMTJBMSwxIDAgMCwwIDksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9waG9uZVZhcmlhbnRPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIwLDIwLjcyTDE4LjczLDIyTDE2LDE5LjI2QzE1Ljg2LDIxLjM1IDE0LjEyLDIzIDEyLDIzQTQsNCAwIDAsMSA4LDE5VjE4SDdMNi4xNiw5LjgyQzUuODIsOS40NyA1LjUzLDkuMDYgNS4zMyw4LjZMMiw1LjI3TTksM0E0LDQgMCAwLDEgMTMsN0g4LjgyTDYuMDgsNC4yNkM2LjgxLDMuNSA3Ljg1LDMgOSwzTTExLjg0LDkuODJMMTEuODIsMTBMOS44Miw4SDEyLjg3QzEyLjY5LDguNyAxMi4zMyw5LjMyIDExLjg0LDkuODJNMTEsMThIMTBWMTlBMiwyIDAgMCwwIDEyLDIxQTIsMiAwIDAsMCAxNCwxOVYxNy4yN0wxMS4zNSwxNC42MkwxMSwxOE0xOCwxMEgyMEwxOSwxMUwyMCwxMkgxOEEyLDIgMCAwLDAgMTYsMTRWMTQuMThMMTQuMywxMi41QzE0LjksMTEgMTYuMzMsMTAgMTgsMTBNOCwxMkExLDEgMCAwLDAgOSwxM0M5LjIxLDEzIDkuNCwxMi45NCA5LjU2LDEyLjgzTDguMTcsMTEuNDRDOC4wNiwxMS42IDgsMTEuNzkgOCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3Njb3BlID0gXCJNOS40Niw2LjI4TDExLjA1LDlDOC40Nyw5LjI2IDYuNSwxMS40MSA2LjUsMTRBNSw1IDAgMCwwIDExLjUsMTlDMTMuNTUsMTkgMTUuMzEsMTcuNzcgMTYuMDgsMTZIMTMuNVYxNEgyMS41VjE2SDE5LjI1QzE4Ljg0LDE3LjU3IDE3Ljk3LDE4Ljk2IDE2Ljc5LDIwSDE5LjVWMjJIMy41VjIwSDYuMjFDNC41NSwxOC41MyAzLjUsMTYuMzkgMy41LDE0QzMuNSwxMC4zNyA1Ljk2LDcuMiA5LjQ2LDYuMjhNMTIuNzQsMi4wN0wxMy41LDMuMzdMMTQuMzYsMi44N0wxNy44Niw4LjkzTDE0LjM5LDEwLjkzTDEwLjg5LDQuODdMMTEuNzYsNC4zN0wxMSwzLjA3TDEyLjc0LDIuMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0ID0gXCJNMiwzSDExVjEySDJWM00xMSwyMkgyVjEzSDExVjIyTTIxLDNWMTJIMTJWM0gyMU0yMSwyMkgxMlYxM0gyMVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRBY2Nlc3MgPSBcIk0xNC41IDIuNjNRMTUuODQgMi42MyAxNy4xOCAyLjc3TDE3Ljg1IDIuODZRMTguMyAyLjkzIDE4Ljg0IDMuMDQgMTkuMzcgMy4xNSAxOS45MyAzLjMxIDIwLjUgMy40NyAyMC45NiAzLjY5IDIxLjQyIDMuOTEgMjEuNzEgNC4xOSAyMiA0LjQ3IDIyIDQuODFWMTkuMTlRMjIgMTkuNTMgMjEuNzEgMTkuODEgMjEuNDEgMjAuMDkgMjAuOTYgMjAuMzEgMjAuNSAyMC41MyAxOS45MyAyMC42OSAxOS4zNyAyMC44NSAxOC44MyAyMC45NiAxOC4zIDIxLjA3IDE3Ljg2IDIxLjE0IDE3LjQxIDIxLjIxIDE3LjE3IDIxLjIzIDE1Ljg0IDIxLjM4IDE0LjUgMjEuMzggMTMuMTUgMjEuMzggMTEuODIgMjEuMjMgMTEuNTkgMjEuMjEgMTEuMTUgMjEuMTQgMTAuNyAyMS4wNyAxMC4xNiAyMC45NiA5LjYzIDIwLjg1IDkuMDcgMjAuNjkgOC41IDIwLjUzIDguMDUgMjAuMzEgNy41OSAyMC4wOSA3LjI5IDE5LjgxIDcgMTkuNTMgNyAxOS4xOVYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g3VjQuODFRNyA0LjQ3IDcuMjkgNC4xOSA3LjU5IDMuOTEgOC4wNSAzLjY5IDguNSAzLjQ3IDkuMDcgMy4zMSA5LjYzIDMuMTUgMTAuMTcgMy4wNCAxMC43IDIuOTMgMTEuMTQgMi44NiAxMS41OSAyLjggMTEuODMgMi43NyAxMy4xNSAyLjYzIDE0LjUgMi42M00xNC41IDMuODhRMTMuODcgMy44OCAxMy4wOCAzLjkyIDEyLjMgMy45NiAxMS41IDQuMDcgMTAuNjkgNC4xOCA5LjkzIDQuMzYgOS4xNyA0LjU0IDguNTggNC44MSA5LjE5IDUuMSA5Ljk1IDUuMjggMTAuNyA1LjQ2IDExLjUgNS41NiAxMi4yOSA1LjY2IDEzLjA3IDUuNzEgMTMuODUgNS43NSAxNC41IDUuNzUgMTUuMTYgNS43NSAxNS45MyA1LjcxIDE2LjcxIDUuNjYgMTcuNSA1LjU2IDE4LjMgNS40NiAxOS4wNiA1LjI4IDE5LjgxIDUuMSAyMC40MiA0LjgxIDE5LjgzIDQuNTQgMTkuMDcgNC4zNiAxOC4zMSA0LjE4IDE3LjUgNC4wNyAxNi43IDMuOTYgMTUuOTIgMy45MiAxNS4xNCAzLjg4IDE0LjUgMy44OE01Ljk0IDEzLjc5SDguMDZMOC41NSAxNS4yOEgxMC4yMkw3LjgzIDguNzJINi4yTDMuNzggMTUuMjhINS40NE0yMC43NSAxOVYxNlEyMC4xMSAxNi4zMSAxOS4zMSAxNi41IDE4LjUgMTYuNjggMTcuNjcgMTYuNzkgMTYuODMgMTYuOSAxNiAxNi45NSAxNS4xOSAxNyAxNC41IDE3IDEzLjc5IDE3IDEzLjA4IDE2Ljk2IDEyLjM3IDE2LjkxIDExLjY3IDE2LjgzIDExLjQ0IDE3IDExLjE3IDE3SDguMjVWMTlROC41MyAxOS4yMSA5IDE5LjM4IDkuNSAxOS41NiAxMC4wNyAxOS42OCAxMC42NSAxOS44MSAxMS4yOSAxOS45IDExLjkyIDIwIDEyLjUgMjAuMDMgMTMuMTIgMjAuMDkgMTMuNjQgMjAuMTEgMTQuMTYgMjAuMTMgMTQuNSAyMC4xMyAxNC44NCAyMC4xMiAxNS4zNiAyMC4xIDE1Ljg4IDIwLjA5IDE2LjUgMjAuMDMgMTcuMDggMjAgMTcuNzEgMTkuOSAxOC4zNSAxOS44MSAxOC45MyAxOS42OCAxOS41IDE5LjU2IDIwIDE5LjM4IDIwLjQ3IDE5LjIxIDIwLjc1IDE5TTIwLjc1IDE0LjYzVjExUTIwLjExIDExLjMxIDE5LjMxIDExLjUgMTguNSAxMS42OCAxNy42NyAxMS43OSAxNi44MyAxMS45IDE2IDExLjk1IDE1LjE5IDEyIDE0LjUgMTIgMTMuODggMTIgMTMuMjUgMTEuOTcgMTIuNjMgMTEuOTMgMTIgMTEuODdWMTUuNjJRMTIuNjMgMTUuNjkgMTMuMjUgMTUuNzIgMTMuODggMTUuNzUgMTQuNSAxNS43NSAxNC44NiAxNS43NSAxNS4zOCAxNS43MyAxNS45IDE1LjcxIDE2LjUgMTUuNjYgMTcuMDggMTUuNiAxNy43IDE1LjUgMTguMzMgMTUuNDQgMTguOSAxNS4zMSAxOS41IDE1LjE4IDE5Ljk2IDE1IDIwLjQ1IDE0Ljg1IDIwLjc1IDE0LjYzTTIwLjc1IDkuNjNWNlEyMC4xMSA2LjMxIDE5LjMxIDYuNSAxOC41IDYuNjggMTcuNjcgNi43OSAxNi44MyA2LjkgMTYgNi45NSAxNS4xOSA3IDE0LjUgNyAxMy44MSA3IDEzIDYuOTUgMTIuMTcgNi45IDExLjMzIDYuNzkgMTAuNSA2LjY4IDkuNjkgNi41IDguODkgNi4zMSA4LjI1IDZWN0gxMS4xN1ExMS41IDcgMTEuNzYgNy4yNCAxMiA3LjUgMTIgNy44M1YxMC42MlExMi42MyAxMC42OSAxMy4yNSAxMC43MiAxMy44OCAxMC43NSAxNC41IDEwLjc1IDE0Ljg2IDEwLjc1IDE1LjM4IDEwLjczIDE1LjkgMTAuNzEgMTYuNSAxMC42NiAxNy4wOCAxMC42IDE3LjcgMTAuNSAxOC4zMyAxMC40NCAxOC45IDEwLjMxIDE5LjUgMTAuMTggMTkuOTYgMTAgMjAuNDQgOS44NSAyMC43NSA5LjYzTTYuMzIgMTIuNUw3IDEwLjVMNy42NSAxMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdEF6dXJlID0gXCJNMTMuMDUsNC4yNEw2LjU2LDE4LjA1TDIsMThMNy4wOSw5LjI0TDEzLjA1LDQuMjRNMTMuNzUsNS4zM0wyMiwxOS43Nkg2Ljc0TDE2LjA0LDE4LjFMMTEuMTcsMTIuMzFMMTMuNzUsNS4zM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRBenVyZURldm9wcyA9IFwiTTIyIDE4TDE3IDIyTDkgMTlWMjJMNC44MSAxNi4yNUwxNy43MiAxNy4zVjYuMzRMMjIgNS42NVYxOE00LjgxIDE2LjI1VjguOTZMMTcuNzIgNi4zNEwxMC42IDJWNC44NEwzLjk3IDYuNzZMMiA5LjM4VjE1LjA3TDQuODEgMTYuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0QmluZyA9IFwiTTUsM1YxOUw4LjcyLDIxTDE4LDE1LjgyVjExLjczSDE4TDkuNzcsOC45NUwxMS4zOCwxMi44NEwxMy45NCwxNEw4LjcsMTYuOTJWNC4yN0w1LDNcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnREeW5hbWljczM2NSA9IFwiTTYsMkwxNy4yNSw4LjVMMTMuNSwxMS41TDYsOFYyTTYsOUw5LjUsMTEuMjVMNiwyMkwxOCw5VjE1TDYsMjJWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRFZGdlID0gXCJNMTAuODYgMTUuMzdDMTAuMTcgMTQuNiA5LjcgMTMuNjggOS41NSAxMi42NUM5LjI1IDEzLjExIDkgMTMuNjEgOC44MiAxNC4xNUM3LjkgMTYuOSA5LjUgMjAuMzMgMTIuMjIgMjEuMzNDMTQuNTYgMjIuMTEgMTcuMTkgMjAuNzIgMTguOTIgMTkuMkMxOS4xOCAxOC44NSAyMS4yMyAxNy4wNCAyMC4yMSAxNi44NEMxNy4xOSAxOC4zOSAxMy4xOSAxNy45NSAxMC44NiAxNS4zN00xMS40NiA5LjU2QzEyLjUgOS41NSAxMS41IDkuMTMgMTEuMDcgOC44MUMxMC4wMyA4LjI0IDguODEgNy45NiA3LjYzIDcuOTZDMy43OCA4IC45OTUgMTAuNDEgMi4zIDE0LjRDMy4yNCAxOC4yOCA2LjYxIDIxLjQgMTAuNTkgMjEuOUM4LjU0IDIwLjYxIDcuMyAxOC4xOSA3LjMgMTUuNzhDNy4zOCAxMy4yNSA4Ljk0IDEwLjI4IDExLjQ2IDkuNTZNMi43OCA4LjI0QzUuODIgNiAxMC42NiA2LjE4IDEzLjI4IDlDMTQuMyAxMC4xMSAxNSAxMiAxNC4wNyAxMy4zN0MxMi4zMyAxNS4yNSAxNy4xNSAxNS41IDE4LjE4IDE1LjIyQzIxLjkyIDE0LjUgMjIuOTEgMTAuMTUgMjEuMTMgNy4xNUMxOS40MyAzLjc1IDE1LjY2IDEuOTcgMTEuOTYgMkM3LjkgMS45MyA0LjI1IDQuNSAyLjc4IDguMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0RWRnZUxlZ2FjeSA9IFwiTSAyLjczNjc1LDEwLjgwNzdDIDMuODI5MywtMS4zNjEwOSAyMi41MTU3LC0xLjM2MTA5IDIxLjE5NzEsMTMuNTU3OUwgOC42MTM5MiwxMy41NTc5QyA4LjYxMzkyLDE3Ljg1MjcgMTQuNDE1NywxOS4yMDkgMTkuNTM5NCwxNi4zMDgxTCAxOS41Mzk0LDIwLjUyNzZDIDEzLjI0NzgsMjMuODgwNiA0Ljk5NzIsMjEuNDMxOCA0Ljk5NzIsMTQuMDg1M0MgNC45OTcyLDguNTg0NzYgOS45NzAxOSw2LjgxNDIgOS45NzAxOSw2LjgxNDJDIDkuOTcwMTksNi44MTQyIDguNTc2MjQsOC41ODQ4OSA4LjUzODU3LDEwLjA1NDJMIDE1LjY5NjcsMTAuMDU0MkMgMTUuNjk2NywyLjkzMzc2IDUuOTAxMzcsNS41NzA5NSAyLjczNjc1LDEwLjgwNzcgWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdEV4Y2VsID0gXCJNMjEuMTcgMy4yNVEyMS41IDMuMjUgMjEuNzYgMy41IDIyIDMuNzQgMjIgNC4wOFYxOS45MlEyMiAyMC4yNiAyMS43NiAyMC41IDIxLjUgMjAuNzUgMjEuMTcgMjAuNzVINy44M1E3LjUgMjAuNzUgNy4yNCAyMC41IDcgMjAuMjYgNyAxOS45MlYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g3VjQuMDhRNyAzLjc0IDcuMjQgMy41IDcuNSAzLjI1IDcuODMgMy4yNU03IDEzLjA2TDguMTggMTUuMjhIOS45N0w4IDEyLjA2TDkuOTMgOC44OUg4LjIyTDcuMTMgMTAuOUw3LjA5IDEwLjk2TDcuMDYgMTEuMDNRNi44IDEwLjUgNi41IDkuOTYgNi4yNSA5LjQzIDUuOTcgOC44OUg0LjE2TDYuMDUgMTIuMDhMNCAxNS4yOEg1Ljc4TTEzLjg4IDE5LjVWMTdIOC4yNVYxOS41TTEzLjg4IDE1Ljc1VjEyLjYzSDEyVjE1Ljc1TTEzLjg4IDExLjM4VjguMjVIMTJWMTEuMzhNMTMuODggN1Y0LjVIOC4yNVY3TTIwLjc1IDE5LjVWMTdIMTUuMTNWMTkuNU0yMC43NSAxNS43NVYxMi42M0gxNS4xM1YxNS43NU0yMC43NSAxMS4zOFY4LjI1SDE1LjEzVjExLjM4TTIwLjc1IDdWNC41SDE1LjEzVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlciA9IFwiTTEzLDNMMTQsMy4wNkMxNi44LDEuNzkgMTkuMjMsMS42NCAyMC41LDIuOTJDMjEuNSwzLjkzIDIxLjU4LDUuNjcgMjAuOTIsNy43MkMyMS42MSw5IDIyLDEwLjQ1IDIyLDEyTDIxLjk1LDEzSDkuMDhDOS40NSwxNS4yOCAxMS4wNiwxNyAxMywxN0MxNC4zMSwxNyAxNS40NywxNi4yMSAxNi4yLDE1SDIxLjVDMjAuMjUsMTguNSAxNi45MiwyMSAxMywyMUMxMS43MiwyMSAxMC41LDIwLjczIDkuNDEsMjAuMjVDNi41LDIxLjY4IDMuODksMjEuOSAyLjU3LDIwLjU2QzEsMTguOTYgMS42OCwxNS41NyA0LDEyQzQuOTMsMTAuNTQgNi4xNCw5LjA2IDcuNTcsNy42NUw4LjM4LDYuODhDNy4yMSw3LjU3IDUuNzEsOC42MiA0LjE5LDEwLjE3QzUuMDMsNi4wOCA4LjY2LDMgMTMsM00xMyw3QzExLjIxLDcgOS42OSw4LjQ3IDkuMTgsMTAuNUgxNi44MkMxNi4zMSw4LjQ3IDE0Ljc5LDcgMTMsN00yMC4wNiw0LjA2QzE5LjQsMy4zOSAxOC4yMiwzLjM1IDE2Ljc0LDMuODFDMTguMjIsNC41IDE5LjUsNS41NiAyMC40MSw2Ljg5QzIwLjczLDUuNjUgMjAuNjQsNC42NSAyMC4wNiw0LjA2TTMuODksMjBDNC43MiwyMC44NCA2LjQsMjAuNjkgOC40NCwxOS43NkM2LjU5LDE4LjY3IDUuMTcsMTYuOTQgNC40NywxNC44OEMzLjI3LDE3LjE1IDMsMTkuMDcgMy44OSwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRPZmZpY2UgPSBcIk0xOS45NCA1LjU5VjE4LjM5UTE5Ljk0IDE5LjA2IDE5LjU1IDE5LjU5IDE5LjE2IDIwLjExIDE4LjUgMjAuMjlMMTIuNzcgMjEuOTRRMTIuNjUgMjEuOTcgMTIuNSAyMkgxMi4yOFExMS45NSAyMiAxMS42OCAyMS45MSAxMS40MSAyMS44MiAxMS4xMyAyMS42N0w3LjM4IDE5LjU1UTcuMTcgMTkuNDMgNy4wNSAxOS4yNCA2LjkzIDE5LjA1IDYuOTMgMTguODEgNi45MyAxOC40NSA3LjE5IDE4LjIgNy40NCAxNy45NSA3LjggMTcuOTVIMTIuNjZWNi4xNEw5IDcuNDRROC41NyA3LjYgOC4zIDggOC4wMyA4LjM4IDguMDMgOC44NVYxNS41OFE4LjAzIDE2IDcuODIgMTYuMzQgNy42MiAxNi42OCA3LjI1IDE2Ljg4TDUuNTMgMTcuODJRNS4yOSAxNy45NSA1LjA1IDE3Ljk1IDQuNjQgMTcuOTUgNC4zNSAxNy42NiA0LjA2IDE3LjM3IDQuMDYgMTYuOTVWNy40N1E0LjA2IDYuOTUgNC4zMyA2LjUgNC42MSA2IDUuMDYgNS43NEwxMS4yMiAyLjI0UTExLjQzIDIuMTIgMTEuNjcgMi4wNiAxMS45MSAyIDEyLjE1IDIgMTIuMzIgMiAxMi40NiAyLjAzIDEyLjYgMi4wNSAxMi43NyAyLjFMMTguNSAzLjY5UTE4LjgzIDMuNzggMTkuMDkgMy45NiAxOS4zNSA0LjE0IDE5LjU0IDQuMzkgMTkuNzQgNC42NSAxOS44NCA0Ljk1IDE5Ljk0IDUuMjYgMTkuOTQgNS41OU0xOC42MiAxOC4zOVY1LjU5UTE4LjYyIDUuMzYgMTguNSA1LjE5IDE4LjM1IDUgMTguMTMgNC45NkwxNS4zMSA0LjE4UTE1IDQuMDkgMTQuNjUgNCAxNC4zMiAzLjg5IDE0IDMuODFWMjAuMjFMMTguMTMgMTlRMTguMzUgMTguOTYgMTguNSAxOC43OSAxOC42MiAxOC42MiAxOC42MiAxOC4zOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRPbmVkcml2ZSA9IFwiTTE4LjIxIDEwLjI5UTE5IDEwLjM0IDE5LjcgMTAuNjggMjAuMzkgMTEgMjAuOSAxMS41NyAyMS40MSAxMi4xMiAyMS43MSAxMi44MyAyMiAxMy41NCAyMiAxNC4zNCAyMiAxNS4xOCAyMS42OCAxNS45MiAyMS4zNiAxNi42NiAyMC44IDE3LjIxIDIwLjI1IDE3Ljc2IDE5LjUgMTguMDggMTguNzggMTguNDEgMTcuOTQgMTguNDFIN1E1Ljk3IDE4LjQxIDUuMDYgMTggNC4xNSAxNy42MSAzLjQ3IDE2Ljk0IDIuNzkgMTYuMjYgMi40IDE1LjM1IDIgMTQuNDQgMiAxMy40MSAyIDEyLjU5IDIuMjYgMTEuODMgMi41IDExLjA4IDMgMTAuNDUgMy40NCA5LjgyIDQuMDggOS4zNSA0LjcyIDguODggNS41IDguNjMgNS44NyA4LjUgNi4yMSA4LjUgNi41NiA4LjQzIDYuOTMgOC40MUg2Ljk0UTcuMzcgNy43NSA3Ljk1IDcuMjMgOC41IDYuNzEgOS4yIDYuMzQgOS44NyA2IDEwLjYyIDUuNzggMTEuMzcgNS41OSAxMi4xNiA1LjU5IDEzLjIyIDUuNTkgMTQuMiA1Ljk0IDE1LjE4IDYuMjkgMTYgNi45MSAxNi44IDcuNTMgMTcuMzcgOC4zOSAxNy45NSA5LjI2IDE4LjIxIDEwLjI5TTEyLjE2IDYuODRRMTEuMDUgNi44NCAxMC4wNiA3LjMgOS4wNiA3Ljc1IDguMzYgOC42IDguNzMgOC43IDkuMDcgOC44NSA5LjQgOSA5LjczIDkuMkwxMy43MSAxMS41OEwxNiAxMC42MlExNi4yMSAxMC41MyAxNi40NCAxMC40NSAxNi42NyAxMC4zOCAxNi45MiAxMC4zMyAxNi42OCA5LjU1IDE2LjIxIDguOTEgMTUuNzQgOC4yNyAxNS4xMSA3LjgxIDE0LjUgNy4zNSAxMy43MyA3LjEgMTMgNi44NCAxMi4xNiA2Ljg0TTQgMTUuNjZMMTIuMjcgMTIuMThMOS4wOCAxMC4yNlE4LjU5IDkuOTcgOC4wNiA5LjgxIDcuNSA5LjY2IDYuOTUgOS42NiA2LjE5IDkuNjYgNS41IDkuOTYgNC44NCAxMC4yNiA0LjM0IDEwLjc3IDMuODQgMTEuMjkgMy41NCAxMS45NyAzLjI1IDEyLjY1IDMuMjUgMTMuNDEgMy4yNSAxNCAzLjQ1IDE0LjU5IDMuNjQgMTUuMTkgNCAxNS42Nk0xNy45NCAxNy4xNlExOC40MSAxNy4xNiAxOC44NCAxNyAxOS4yNyAxNi44NiAxOS42NCAxNi41OEwxMy42MSAxM0w1LjAzIDE2LjU5UTUuNDcgMTYuODYgNS45NyAxNyA2LjQ3IDE3LjE2IDcgMTcuMTZNMjAuNDUgMTUuNjFRMjAuNzUgMTUgMjAuNzUgMTQuMzQgMjAuNzUgMTMuNyAyMC41IDEzLjE3IDIwLjI2IDEyLjY1IDE5Ljg1IDEyLjI4IDE5LjQzIDExLjkxIDE4Ljg4IDExLjcxIDE4LjMyIDExLjUgMTcuNyAxMS41IDE3LjM1IDExLjUgMTcgMTEuNiAxNi42NiAxMS42OCAxNi4zMyAxMS44MSAxNiAxMS45MyAxNS42NyAxMi4wOCAxNS4zNSAxMi4yMyAxNS4wNCAxMi4zN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRPbmVub3RlID0gXCJNMjEuMTcgMy4yNVEyMS41IDMuMjUgMjEuNzYgMy41IDIyIDMuNzQgMjIgNC4wOFYxOS45MlEyMiAyMC4yNiAyMS43NiAyMC41IDIxLjUgMjAuNzUgMjEuMTcgMjAuNzVINy44M1E3LjUgMjAuNzUgNy4yNCAyMC41IDcgMjAuMjYgNyAxOS45MlYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g3VjQuMDhRNyAzLjc0IDcuMjQgMy41IDcuNSAzLjI1IDcuODMgMy4yNU01LjggMTEuMTdMOC4xNiAxNS4yN0g5LjY1VjguNzNIOC4yVjEyLjkyTDUuOTMgOC43M0g0LjM1VjE1LjI3SDUuOE0yMC43NSAxOS41VjE3SDE4LjI1VjE5LjVNMjAuNzUgMTUuNzVWMTMuMjVIMTguMjVWMTUuNzVNMjAuNzUgMTJWOS41SDE4LjI1VjEyTTIwLjc1IDguMjVWNC41SDguMjVWN0gxMS4xN1ExMS41IDcgMTEuNzYgNy4yNCAxMiA3LjUgMTIgNy44M1YxNi4xN1ExMiAxNi41IDExLjc2IDE2Ljc2IDExLjUgMTcgMTEuMTcgMTdIOC4yNVYxOS41SDE3VjguMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0T3V0bG9vayA9IFwiTTguNTYgMTIuMDNROC41NiAxMi40MSA4LjUgMTIuNzYgOC4zOSAxMy4xIDguMiAxMy4zOCA4IDEzLjY1IDcuNzEgMTMuODEgNy40MSAxMy45NyA3IDEzLjk3IDYuNTggMTMuOTcgNi4yOSAxMy44IDYgMTMuNjMgNS44MSAxMy4zNSA1LjYyIDEzLjA3IDUuNTQgMTIuNzIgNS40NSAxMi4zNyA1LjQ1IDEyIDUuNDUgMTEuNjQgNS41NCAxMS4yOCA1LjYyIDEwLjkzIDUuODEgMTAuNjUgNiAxMC4zNyA2LjMxIDEwLjIgNi42MSAxMC4wMyA3LjAzIDEwLjAzIDcuNDYgMTAuMDMgNy43NSAxMC4yIDguMDUgMTAuMzggOC4yMyAxMC42NiA4LjQxIDEwLjk1IDguNSAxMS4zIDguNTYgMTEuNjYgOC41NiAxMi4wM00yMiAxMlYxOS44MVEyMiAyMC4yIDIxLjczIDIwLjUgMjEuNDUgMjAuNzUgMjEuMDYgMjAuNzVINy45NFE3LjU1IDIwLjc1IDcuMjcgMjAuNSA3IDIwLjIgNyAxOS44MVYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g4LjI1VjQuMTNROC4yNSAzLjc2IDguNSAzLjUgOC43NiAzLjI1IDkuMTMgMy4yNUgxOS44N1EyMC4yNCAzLjI1IDIwLjUgMy41IDIwLjc1IDMuNzYgMjAuNzUgNC4xM1YxMS4wNEwyMS43OSAxMS42NEgyMS44UTIxLjg4IDExLjcgMjEuOTQgMTEuOCAyMiAxMS44OSAyMiAxMk0xNyA1LjEzVjcuNjNIMTkuNVY1LjEzTTE3IDguODhWMTEuMzhIMTkuNVY4Ljg4TTE3IDEyLjYzVjE0LjE1TDE5LjU0IDEyLjYzTTEyLjYzIDUuMTNWNy42M0gxNS43NVY1LjEzTTEyLjYzIDguODhWMTEuMzhIMTUuNzVWOC44OE0xMi42MyAxMi42M1YxNC4zMkwxNC42NCAxNS41NkwxNS43NSAxNC45VjEyLjYzTTkuNSA1LjEzVjdIMTEuMjdRMTEuMzMgNyAxMS4zOCA3LjA0VjUuMTJNNyAxNS4zMlE3LjczIDE1LjMyIDguMzIgMTUuMDYgOC45IDE0LjggOS4zMSAxNC4zNSA5LjcxIDEzLjkgOS45MSAxMy4yOCAxMC4xMiAxMi42NiAxMC4xMyAxMS45NCAxMC4xMyAxMS4yNSA5LjkyIDEwLjY1IDkuNzIgMTAuMDYgOS4zMiA5LjYyIDguOTMgOS4xOCA4LjM3IDguOTMgNy44IDguNjggNy4wOCA4LjY4IDYuMzEgOC42OCA1LjcxIDguOTMgNS4xMiA5LjE4IDQuNzEgOS42MyA0LjMgMTAuMDkgNC4wOSAxMC43MSAzLjg4IDExLjM0IDMuODggMTIuMDggMy44OCAxMi43OCA0LjA5IDEzLjM4IDQuMzEgMTMuOTcgNC43MSAxNC40IDUuMTEgMTQuODMgNS42OCAxNS4wOCA2LjI2IDE1LjMyIDcgMTUuMzJNOC4yNSAxOS41SDE4LjU3TDEyIDE1LjRWMTYuMTdRMTIgMTYuNSAxMS43NiAxNi43NiAxMS41IDE3IDExLjE3IDE3SDguMjVNMjAuNzUgMTkuMzlWMTMuMzZMMTUuODMgMTYuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0UG93ZXJwb2ludCA9IFwiTTEzLjI1IDMuMjVRMTQuNDYgMy4yNSAxNS41OCAzLjU2IDE2LjcgMy44OCAxNy42NyA0LjQ1IDE4LjY0IDUgMTkuNDQgNS44MSAyMC4yMyA2LjYxIDIwLjggNy41OCAyMS4zOCA4LjU1IDIxLjY5IDkuNjcgMjIgMTAuNzkgMjIgMTIgMjIgMTMuMjEgMjEuNjkgMTQuMzMgMjEuMzggMTUuNDUgMjAuOCAxNi40MiAyMC4yMyAxNy4zOSAxOS40NCAxOC4xOSAxOC42NCAxOSAxNy42NyAxOS41NSAxNi43IDIwLjEzIDE1LjU4IDIwLjQ0IDE0LjQ2IDIwLjc1IDEzLjI1IDIwLjc1IDEyLjE4IDIwLjc1IDExLjE1IDIwLjUgMTAuMTIgMjAuMjQgOS4yIDE5Ljc2IDguMjggMTkuMjcgNy41IDE4LjU4IDYuNjkgMTcuODggNi4wNyAxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI1IDIuNSA3IDIuODMgN0g2LjA3UTYuNjkgNi4xMiA3LjUgNS40MiA4LjI4IDQuNzIgOS4yIDQuMjQgMTAuMTMgMy43NiAxMS4xNSAzLjUgMTIuMTggMy4yNSAxMy4yNSAzLjI1TTEzLjg4IDQuNTNWMTEuMzdIMjAuNzJRMjAuNiAxMCAyMC4wMyA4LjgxIDE5LjQ2IDcuNjIgMTguNTUgNi43IDE3LjY0IDUuNzkgMTYuNDMgNS4yMiAxNS4yMyA0LjY1IDEzLjg4IDQuNTNNOS41IDEwLjg0UTkuNSAxMC4yNyA5LjMgOS44NyA5LjExIDkuNDYgOC43OCA5LjIxIDguNDUgOC45NSA4IDguODQgNy41NSA4LjcyIDcgOC43Mkg0LjM3VjE1LjI3SDUuOTFWMTNINi45NFE3LjQyIDEzIDcuODcgMTIuODQgOC4zMyAxMi43IDguNjkgMTIuNDMgOS4wNSAxMi4xNyA5LjI3IDExLjc2IDkuNSAxMS4zNiA5LjUgMTAuODRNMTMuMjUgMTkuNVExNC4yMyAxOS41IDE1LjE0IDE5LjI2IDE2LjA0IDE5IDE2Ljg1IDE4LjU4IDE3LjY2IDE4LjEzIDE4LjMzIDE3LjUgMTkgMTYuODkgMTkuNSAxNi4xMyAyMCAxNS4zNiAyMC4zMyAxNC40NyAyMC42NCAxMy41OCAyMC43MiAxMi42MkgxMi42NFY0LjUzUTExLjE5IDQuNjUgOS45MSA1LjI5IDguNjMgNS45MyA3LjY3IDdIMTEuMTdRMTEuNSA3IDExLjc2IDcuMjUgMTIgNy41IDEyIDcuODNWMTYuMTdRMTIgMTYuNSAxMS43NiAxNi43NiAxMS41IDE3IDExLjE3IDE3SDcuNjdROC4yIDE3LjYgOC44NCAxOC4wNiA5LjUgMTguNSAxMC4xOSAxOC44NCAxMC45MSAxOS4xNyAxMS42OCAxOS4zMyAxMi40NSAxOS41IDEzLjI1IDE5LjVNNi44NSAxMFE3LjMyIDEwIDcuNjEgMTAuMTkgNy44OSAxMC4zOCA3Ljg5IDEwLjg5IDcuODkgMTEuMTEgNy43OSAxMS4yNSA3LjY5IDExLjM5IDcuNTMgMTEuNSA3LjM3IDExLjU3IDcuMTggMTEuNiA3IDExLjY0IDYuOCAxMS42NEg1LjkxVjEwSDYuODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0U2hhcmVwb2ludCA9IFwiTTIyIDEzLjI1UTIyIDE0LjI5IDIxLjYgMTUuMiAyMS4yMSAxNi4xIDIwLjUzIDE2Ljc4IDE5Ljg1IDE3LjQ2IDE4Ljk0IDE3Ljg2IDE4LjAzIDE4LjI1IDE3IDE4LjI1IDE2LjM2IDE4LjI1IDE1LjczIDE4LjA5IDE1LjY0IDE4LjkyIDE1LjI3IDE5LjYzIDE0Ljg5IDIwLjM1IDE0LjMgMjAuODggMTMuNzIgMjEuNDEgMTIuOTcgMjEuNyAxMi4yMSAyMiAxMS4zOCAyMiAxMC40NyAyMiA5LjY3IDIxLjY1IDguODggMjEuMzEgOC4yOCAyMC43MiA3LjY5IDIwLjEzIDcuMzUgMTkuMzMgNyAxOC41MyA3IDE3LjYzVjE3LjMxUTcuMDMgMTcuMTYgNy4wNSAxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g1Ljc4UTUuOSA1Ljk0IDYuMzkgNSA2Ljg3IDQuMTEgNy42MyAzLjQ0IDguMzggMi43NiA5LjM0IDIuMzggMTAuMyAyIDExLjM4IDIgMTIuNTQgMiAxMy41NiAyLjQ0IDE0LjU5IDIuODkgMTUuMzUgMy42NSAxNi4xMSA0LjQxIDE2LjU2IDUuNDQgMTcgNi40NiAxNyA3LjYzVjcuOTRRMTcgOC4wOSAxNi45NiA4LjI1IDE4IDguMjUgMTguOTEgOC42NCAxOS44MyA5LjAzIDIwLjUgOS43MSAyMS4yMSAxMC4zOCAyMS42IDExLjI5IDIyIDEyLjIxIDIyIDEzLjI1TTExLjM3IDMuMjVRMTAuNTYgMy4yNSA5LjgzIDMuNTQgOS4wOSAzLjgyIDguNSA0LjMyIDcuOTQgNC44MiA3LjU1IDUuNSA3LjE3IDYuMiA3LjA1IDdIMTEuMTdRMTEuNSA3IDExLjc2IDcuMjUgMTIgNy41IDEyIDcuODNWMTEuOTVMMTIuMTggMTEuOTJRMTIuMzUgMTEuMyAxMi42OCAxMC43NCAxMyAxMC4xNyAxMy40NyA5LjcyIDEzLjkyIDkuMjcgMTQuNSA4LjkzIDE1LjA0IDguNiAxNS42NyA4LjQzIDE1Ljc1IDggMTUuNzUgNy42MyAxNS43NSA2LjcyIDE1LjQgNS45MiAxNS4wNiA1LjEzIDE0LjQ2IDQuNTQgMTMuODcgMy45NSAxMy4wOCAzLjYgMTIuMjggMy4yNSAxMS4zNyAzLjI1TTcuMSAxNS4yNVE3LjU1IDE1LjI1IDggMTUuMTYgOC40MiAxNS4wNyA4Ljc2IDE0Ljg1IDkuMSAxNC42NCA5LjMxIDE0LjI5IDkuNSAxMy45MyA5LjUgMTMuNDEgOS41IDEyLjg4IDkuMyAxMi41MyA5LjA4IDEyLjE4IDguNzUgMTEuOTQgOC40MiAxMS43MSA4LjA0IDExLjU2TDcuMzIgMTEuMjdRNyAxMS4xNCA2Ljc3IDExIDYuNTUgMTAuODUgNi41NSAxMC42MiA2LjU1IDEwLjQ2IDYuNjcgMTAuMzUgNi43OSAxMC4yNSA2Ljk1IDEwLjIgNy4xMSAxMC4xMyA3LjI4IDEwLjExIDcuNDYgMTAuMSA3LjU4IDEwLjEgOC4wNyAxMC4xIDguNDYgMTAuMjIgOC44NCAxMC4zNSA5LjI1IDEwLjZWOS4xMlE5IDkuMDUgOC44MSA5IDguNjEgOC45NSA4LjQyIDguOTIgOC4yMiA4Ljg5IDggOC44NyA3LjggOC44NiA3LjU1IDguODYgNy4xMiA4Ljg2IDYuNjcgOC45NSA2LjIyIDkuMDUgNS44NSA5LjI3IDUuNSA5LjUgNS4yNiA5LjgzIDUuMDMgMTAuMTggNS4wMyAxMC42OSA1LjAzIDExLjE5IDUuMjUgMTEuNSA1LjQ3IDExLjg1IDUuOCAxMi4wOSA2LjEzIDEyLjMyIDYuNSAxMi41TDcuMjIgMTIuNzlRNy41NiAxMi45MyA3Ljc4IDEzLjA4IDggMTMuMjQgOCAxMy40NiA4IDEzLjY1IDcuODkgMTMuNzYgNy43OSAxMy44NyA3LjYzIDEzLjkyIDcuNSAxNCA3LjMxIDE0SDdRNi40MSAxNCA1Ljk2IDEzLjgyIDUuNSAxMy42MiA1LjA0IDEzLjNWMTQuODZRNi4wMyAxNS4yNSA3LjEgMTUuMjVNMTEuMzcgMjAuNzVRMTIgMjAuNzUgMTIuNTggMjAuNSAxMy4xNSAyMC4yNiAxMy41OCAxOS44NCAxNCAxOS40MSAxNC4yNSAxOC44NCAxNC41IDE4LjI3IDE0LjUgMTcuNjMgMTQuNSAxNy4wNyAxNC4zMSAxNi41NiAxNC4xMyAxNi4wNSAxMy44IDE1LjY1IDEzLjQ2IDE1LjI0IDEzIDE0Ljk2IDEyLjU1IDE0LjY4IDEyIDE0LjU2VjE2LjE3UTEyIDE2LjUgMTEuNzYgMTYuNzYgMTEuNSAxNyAxMS4xNyAxN0g4LjMxUTguMjUgMTcuMzEgOC4yNSAxNy42MyA4LjI1IDE4LjI3IDguNSAxOC44NCA4Ljc0IDE5LjQxIDkuMTYgMTkuODQgOS41OSAyMC4yNiAxMC4xNiAyMC41IDEwLjczIDIwLjc1IDExLjM3IDIwLjc1TTE3IDE3UTE3Ljc3IDE3IDE4LjQ1IDE2LjcxIDE5LjE0IDE2LjQyIDE5LjY1IDE1LjkgMjAuMTYgMTUuMzkgMjAuNDYgMTQuNzEgMjAuNzUgMTQuMDMgMjAuNzUgMTMuMjUgMjAuNzUgMTIuNSAyMC40NiAxMS44IDIwLjE2IDExLjExIDE5LjY1IDEwLjYgMTkuMTQgMTAuMDkgMTguNDUgOS43OSAxNy43NyA5LjUgMTcgOS41IDE2LjIzIDkuNSAxNS41NSA5LjggMTQuODcgMTAuMSAxNC4zNiAxMC42MSAxMy44NSAxMS4xMiAxMy41NSAxMS44IDEzLjI1IDEyLjUgMTMuMjUgMTMuMjVWMTMuNDZMMTMuMjcgMTMuNjhRMTMuNzMgMTMuOSAxNC4xMiAxNC4yMiAxNC41IDE0LjU0IDE0LjgyIDE0LjkzIDE1LjEyIDE1LjMzIDE1LjM0IDE1Ljc5IDE1LjU1IDE2LjI1IDE1LjY2IDE2Ljc0IDE2LjMyIDE3IDE3IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFRlYW1zID0gXCJNMTkuMTkgOC43N1ExOC43MyA4Ljc3IDE4LjMzIDguNiAxNy45NCA4LjQzIDE3LjY0IDguMTMgMTcuMzQgNy44MyAxNy4xNyA3LjQ0IDE3IDcuMDQgMTcgNi41OCAxNyA2LjEzIDE3LjE3IDUuNzMgMTcuMzQgNS4zMyAxNy42NCA1LjA0IDE3Ljk0IDQuNzQgMTguMzMgNC41NyAxOC43MyA0LjM5IDE5LjE5IDQuNCAxOS42NCA0LjM5IDIwLjA0IDQuNTcgMjAuNDQgNC43NCAyMC43NCA1LjA0IDIxLjAzIDUuMzMgMjEuMjEgNS43MyAyMS4zOCA2LjEzIDIxLjM4IDYuNTggMjEuMzggNy4wNCAyMS4yMSA3LjQ0IDIxLjA0IDcuODMgMjAuNzQgOC4xMyAyMC40NCA4LjQzIDIwLjA0IDguNiAxOS42NCA4Ljc3IDE5LjE5IDguNzdNMTkuMTkgNS42NVExOC44IDUuNjUgMTguNSA1LjkyIDE4LjI1IDYuMTkgMTguMjUgNi41OCAxOC4yNSA2Ljk3IDE4LjUgNy4yNSAxOC44IDcuNSAxOS4xOSA3LjUgMTkuNTggNy41IDE5Ljg1IDcuMjUgMjAuMTMgNyAyMC4xMyA2LjU4IDIwLjEzIDYuMTkgMTkuODUgNS45MiAxOS41OCA1LjY1IDE5LjE5IDUuNjVNMjIgMTAuMzNWMTVRMjIgMTUuNjMgMjEuNzYgMTYuMiAyMS41IDE2Ljc3IDIxLjA5IDE3LjE5IDIwLjY2IDE3LjYyIDIwLjA5IDE3Ljg2IDE5LjUgMTguMTEgMTguODggMTguMTEgMTguNSAxOC4xMSAxOC4xMiAxOCAxNy43MyAxNy45MyAxNy40MSAxNy43NSAxNy4xNyAxOC41NCAxNi43IDE5LjE5IDE2LjIzIDE5Ljg0IDE1LjYgMjAuMyAxNC45NyAyMC43NiAxNC4yMSAyMSAxMy40NSAyMS4yNyAxMi42MyAyMS4yNyAxMS42NyAyMS4yNyAxMC44MiAyMC45NCAxMCAyMC42MSA5LjMyIDIwIDguNjYgMTkuNDMgOC4yMyAxOC42NCA3Ljc5IDE3Ljg0IDcuNjYgMTYuOUgyLjgzUTIuNSAxNi45IDIuMjQgMTYuNjUgMiAxNi40MSAyIDE2LjA3VjcuNzNRMiA3LjM5IDIuMjQgNy4xNCAyLjUgNi45IDIuODMgNi45SDEwUTkuNzEgNi4zIDkuNzEgNS42NSA5LjcxIDUuMDQgOS45NCA0LjUgMTAuMTYgNCAxMC41NiAzLjU4IDEwLjk2IDMuMTkgMTEuNSAyLjk2IDEyIDIuNzMgMTIuNjIgMi43MyAxMy4yMyAyLjczIDEzLjc2IDIuOTYgMTQuMjkgMy4xOSAxNC42OSAzLjU4IDE1LjA5IDQgMTUuMzEgNC41IDE1LjU0IDUuMDQgMTUuNTQgNS42NSAxNS41NCA2LjI1IDE1LjMxIDYuNzkgMTUuMDkgNy4zMiAxNC42OSA3LjcxIDE0LjI5IDguMTEgMTMuNzYgOC4zNCAxMy4yMyA4LjU3IDEyLjYyIDguNTcgMTIuNDcgOC41NyAxMi4zMSA4LjU1IDEyLjE2IDguNTMgMTIgOC41VjkuNEgyMS4wNlEyMS40NSA5LjQgMjEuNzMgOS42NyAyMiA5Ljk0IDIyIDEwLjMzTTEyLjYzIDRRMTIuMjggNCAxMiA0LjExIDExLjY3IDQuMjQgMTEuNDQgNC40NyAxMS4yMiA0LjcgMTEuMDkgNSAxMC45NiA1LjMxIDEwLjk2IDUuNjUgMTAuOTYgNiAxMS4wOSA2LjMgMTEuMjIgNi42IDExLjQ0IDYuODMgMTEuNjcgNy4wNSAxMiA3LjE5IDEyLjI4IDcuMzIgMTIuNjMgNy4zMiAxMi45NyA3LjMyIDEzLjI3IDcuMTkgMTMuNTcgNy4wNSAxMy44IDYuODMgMTQuMDMgNi42IDE0LjE2IDYuMyAxNC4zIDYgMTQuMyA1LjY1IDE0LjMgNS4zMSAxNC4xNiA1IDE0LjAzIDQuNyAxMy44IDQuNDcgMTMuNTcgNC4yNCAxMy4yNyA0LjExIDEyLjk3IDQgMTIuNjMgNE03Ljc4IDEwLjE4SDkuNjZWOC42Mkg0LjM0VjEwLjE4SDYuMjJWMTUuMThINy43OE0xNi4zOCAxNi4yN1YxMC42NUgxMlYxNi4wN1ExMiAxNi40MSAxMS43NiAxNi42NSAxMS41IDE2LjkgMTEuMTcgMTYuOUg4LjkyUTkuMDUgMTcuNTcgOS4zOSAxOC4xNSA5LjczIDE4LjcyIDEwLjIxIDE5LjE0IDEwLjY5IDE5LjU1IDExLjMxIDE5Ljc5IDExLjkyIDIwIDEyLjYzIDIwIDEzLjQgMjAgMTQuMDggMTkuNzMgMTQuNzYgMTkuNDMgMTUuMjggMTguOTIgMTUuNzkgMTguNDEgMTYuMDggMTcuNzMgMTYuMzggMTcuMDUgMTYuMzggMTYuMjdNMjAuNzUgMTVWMTAuNjVIMTcuNjNWMTYuMzZRMTcuODggMTYuNjEgMTguMiAxNi43NCAxOC41IDE2Ljg2IDE4Ljg4IDE2Ljg2IDE5LjI3IDE2Ljg2IDE5LjYxIDE2LjcxIDE5Ljk1IDE2LjU2IDIwLjIgMTYuMzEgMjAuNDYgMTYuMDYgMjAuNiAxNS43MSAyMC43NSAxNS4zNyAyMC43NSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRWaXN1YWxTdHVkaW8gPSBcIk0xNyw4LjVMMTIuMjUsMTIuMzJMMTcsMTZWOC41TTQuNywxOC40TDIsMTYuN1Y3LjdMNSw2LjdMOS4zLDEwLjAzTDE4LDJMMjIsNC41VjIwTDE3LDIyTDkuMzQsMTQuNjZMNC43LDE4LjRNNSwxNEw2Ljg2LDEyLjI4TDUsMTAuNVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRWaXN1YWxTdHVkaW9Db2RlID0gXCJNMTcsMTYuNDdWNy4zOUwxMSwxMS45M00yLjIyLDkuMTlDMS45Miw4Ljg3IDEuOTEsOC4zNyAyLjIsOC4wNEwzLjQsNi45M0MzLjYsNi43NSA0LjA5LDYuNjcgNC40NSw2LjkzTDcuODcsOS41NEwxNS44LDIuMjlDMTYuMTIsMS45NyAxNi42NywxLjg0IDE3LjMsMi4xN0wyMS4zLDQuMDhDMjEuNjYsNC4yOSAyMiw0LjYyIDIyLDUuMjNWMTguNzNDMjIsMTkuMTMgMjEuNzEsMTkuNTYgMjEuNCwxOS43M0wxNywyMS44M0MxNi42OCwyMS45NiAxNi4wOCwyMS44NCAxNS44NywyMS42M0w3Ljg1LDE0LjMzTDQuNDUsMTYuOTNDNC4wNywxNy4xOSAzLjYsMTcuMTIgMy40LDE2LjkzTDIuMiwxNS44M0MxLjg4LDE1LjUgMS45MiwxNC45NiAyLjI1LDE0LjYzTDUuMjUsMTEuOTNcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRXaW5kb3dzID0gXCJNMywxMlY2Ljc1TDksNS40M1YxMS45MUwzLDEyTTIwLDNWMTEuNzVMMTAsMTEuOVY1LjIxTDIwLDNNMywxM0w5LDEzLjA5VjE5LjlMMywxOC43NVYxM00yMCwxMy4yNVYyMkwxMCwyMC4wOVYxMy4xTDIwLDEzLjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFdpbmRvd3NDbGFzc2ljID0gXCJNMi42Nyw1LjNWNS45MUwxLjk2LDYuMjFWNS42TDIuNjcsNS4zTTIuNjcsMTEuMjRWMTEuODZMMS45NiwxMi4xNVYxMS41NkwyLjY3LDExLjI0TTIuNjcsMTcuMjdWMTcuODlMMS45NiwxOC4xOFYxNy41OUwyLjY3LDE3LjI3TTIuNiw3LjI5VjcuODRMMi4wMyw4LjFWNy41NkwyLjYsNy4yOU0yLjYsOS4yOFY5LjgyTDIuMDMsMTAuMDhWOS41NEwyLjYsOS4yOE0yLjYsMTMuMzFWMTMuODRMMi4wMywxNC4xVjEzLjU2TDIuNiwxMy4zMU0yLjYsMTUuMzNWMTUuODdMMi4wMywxNi4xM1YxNS42TDIuNiwxNS4zM000LjUsNS42NFY2LjM2TDMuNSw2LjczVjZMNC41LDUuNjRNNC41LDExLjY2VjEyLjM3TDMuNSwxMi43NFYxMi4wM0w0LjUsMTEuNjZNNC41LDE3LjdWMTguNDFMMy41LDE4LjgxVjE4LjFMNC41LDE3LjdNNC40Myw3LjcyVjguMzhMMy42NCw4LjY4VjhMNC40Myw3LjcyTTQuNDMsOS43M1YxMC4zN0wzLjY1LDEwLjY3VjEwTDQuNDMsOS43M000LjQzLDEzLjc0VjE0LjM4TDMuNjUsMTQuNjlWMTQuMDNMNC40MywxMy43NE00LjQzLDE1Ljc2VjE2LjQxTDMuNjUsMTYuNzJWMTYuMDZMNC40MywxNS43Nk02LjMxLDYuMDlWNi45NEw1LjA1LDcuNDNWNi41OUw2LjMxLDYuMDlNNi4zMSwxMi4xMVYxMi45Nkw1LjA1LDEzLjQ1VjEyLjYxTDYuMzEsMTIuMTFNNi4zMSwxOC4wOFYxOC45M0w1LjA1LDE5LjQzVjE4LjU4TDYuMzEsMTguMDhNNi4yNSw4LjE4VjguOTRMNS4xOSw5LjM0VjguNjFMNi4yNSw4LjE4TTYuMjUsMTAuMThWMTAuOTNMNS4xOSwxMS4zNVYxMC42TDYuMjUsMTAuMThNNi4yNSwxNC4xOVYxNC45NEw1LjE5LDE1LjM3VjE0LjYyTDYuMjUsMTQuMTlNNi4yNSwxNi4xNFYxNi45TDUuMTksMTcuMzJWMTYuNTdMNi4yNSwxNi4xNE04LjI5LDYuMDRWNy4xNkw2LjcyLDcuNzhWNi42N0w4LjI5LDYuMDRNOC4yOSwxMi4wNlYxMy4xOUw2LjcyLDEzLjhWMTIuNjhMOC4yOSwxMi4wNk04LjI5LDE4LjAzVjE5LjE1TDYuNzIsMTkuNzdWMTguNjZMOC4yOSwxOC4wM004LjIsOC4xM1Y5LjE2TDYuODksOS42OVY4LjY2TDguMiw4LjEzTTguMiwxMC4xM1YxMS4xNUw2Ljg5LDExLjY4VjEwLjY1TDguMiwxMC4xM004LjIsMTQuMTVWMTUuMThMNi44OSwxNS43VjE0LjY3TDguMiwxNC4xNU04LjIsMTYuMVYxNy4xMkw2Ljg5LDE3LjY0VjE2LjYzTDguMiwxNi4xTTEwLjM0LDUuODVWNy4zMkw4LjYxLDhWNi41NkwxMC4zNCw1Ljg1TTEwLjM0LDExLjg3VjEzLjMzTDguNjEsMTQuMDNWMTIuNTZMMTAuMzQsMTEuODdNMTAuMzQsMTcuODRWMTkuM0w4LjYxLDIwVjE4LjU0TDEwLjM0LDE3Ljg0TTEwLjI2LDguMDVWOS4yOEw4Ljc4LDkuODdWOC42NEwxMC4yNiw4LjA1TTEwLjI2LDkuOTdWMTEuMkw4Ljc4LDExLjc4VjEwLjU2TDEwLjI2LDkuOTdNMTAuMjYsMTQuMDZWMTUuMzFMOC43OCwxNS44OFYxNC42NUwxMC4yNiwxNC4wNk0xMC4yNiwxNlYxNy4yNUw4Ljc4LDE3Ljg0VjE2LjZMMTAuMjYsMTZNMTIuNDUsNS4xMlY3LjEyTDEwLjU5LDcuODlWNkMxMS4yMyw1LjY1IDExLjg1LDUuMzUgMTIuNDUsNS4xMk0xMi40NSw3LjMzVjkuMDZMMTAuNTksOS44NFY4LjFMMTIuNDUsNy4zM00xMi40NSw5LjI4VjExLjA0TDEwLjU5LDExLjgyVjEwLjA2TDEyLjQ1LDkuMjhNMTIuNDUsMTEuMjVWMTNMMTAuNTksMTMuNzdWMTJMMTIuNDUsMTEuMjVNMTIuNDUsMTMuMjFWMTVMMTAuNTksMTUuNzhWMTRMMTIuNDUsMTMuMjFNMTIuNDUsMTUuMjFWMTYuOTZMMTAuNTksMTcuNzZWMTZMMTIuNDUsMTUuMjFNMTIuNDUsMTcuMTdWMTkuMDRDMTEuNzIsMTkuMzIgMTEuMSwxOS41OSAxMC41OSwxOS44NFYxNy45NkwxMi40NSwxNy4xN00yMi4wNCw1LjE4VjE5LjIzQzIwLjg1LDE4LjQ0IDE5LjM3LDE4LjA1IDE3LjU5LDE4LjA1QzE2LjEyLDE4LjA1IDE0LjQ3LDE4LjM1IDEyLjY1LDE4Ljk2VjE3LjA2QzEzLjYyLDE2LjY5IDE0LjY4LDE2LjQyIDE1Ljg0LDE2LjI2VjExLjY5QzE0Ljg2LDExLjgxIDEzLjgsMTIuMTUgMTIuNjUsMTIuNzFWMTEuNEMxMy42NCwxMC45NCAxNC43MSwxMC42MyAxNS44NCwxMC40NlY2QzE0LjgyLDYuMTggMTMuNzYsNi41MyAxMi42NSw3VjUuMDNDMTQuMjcsNC4zNCAxNS44Niw0IDE3LjQxLDRDMTkuMDksNCAyMC42Myw0LjM5IDIyLjA0LDUuMThNMjAuMTUsNi40MUMxOS4zOSw2IDE4LjUsNS44MiAxNy40Miw1LjgyQzE3LjI5LDUuODIgMTcuMTcsNS44MyAxNy4wNSw1Ljg0VjEwLjM4TDE3LjQ2LDEwLjM3QzE4LjM3LDEwLjM3IDE5LjI3LDEwLjUgMjAuMTUsMTAuOFY2LjQxTTIwLjE1LDEyLjFDMTkuMzQsMTEuNzQgMTguNDMsMTEuNTYgMTcuNDQsMTEuNTZDMTcuMzEsMTEuNTYgMTcuMTgsMTEuNTcgMTcuMDUsMTEuNThWMTYuMTZIMTcuNDZDMTguNDUsMTYuMTYgMTkuMzUsMTYuMjggMjAuMTUsMTYuNTNWMTIuMUgyMC4xNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRXb3JkID0gXCJNMjEuMTcgMy4yNVEyMS41IDMuMjUgMjEuNzYgMy41IDIyIDMuNzQgMjIgNC4wOFYxOS45MlEyMiAyMC4yNiAyMS43NiAyMC41IDIxLjUgMjAuNzUgMjEuMTcgMjAuNzVINy44M1E3LjUgMjAuNzUgNy4yNCAyMC41IDcgMjAuMjYgNyAxOS45MlYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g3VjQuMDhRNyAzLjc0IDcuMjQgMy41IDcuNSAzLjI1IDcuODMgMy4yNU03LjAzIDExLjM0TDguMjMgMTUuMjhIOS42TDEwLjkxIDguNzJIOS41M0w4Ljc1IDEyLjZMNy42NCA4Ljg1SDYuNUw1LjMxIDEyLjYyTDQuNTMgOC43MkgzLjA5TDQuNCAxNS4yOEg1Ljc3TTIwLjc1IDE5LjVWMTdIOC4yNVYxOS41TTIwLjc1IDE1Ljc1VjEyLjYzSDEyVjE1Ljc1TTIwLjc1IDExLjM4VjguMjVIMTJWMTEuMzhNMjAuNzUgN1Y0LjVIOC4yNVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFhib3ggPSBcIk02LjQzLDMuNzJDNi41LDMuNjYgNi41NywzLjYgNi42MiwzLjU2QzguMTgsMi41NSAxMCwyIDEyLDJDMTMuODgsMiAxNS42NCwyLjUgMTcuMTQsMy40MkMxNy4yNSwzLjUgMTcuNTQsMy42OSAxNy43LDMuODhDMTYuMjUsMi4yOCAxMiw1LjcgMTIsNS43QzEwLjUsNC41NyA5LjE3LDMuOCA4LjE2LDMuNUM3LjMxLDMuMjkgNi43MywzLjUgNi40NiwzLjdNMTkuMzQsNS4yMUMxOS4yOSw1LjE2IDE5LjI0LDUuMTEgMTkuMiw1LjA2QzE4Ljg0LDQuNjYgMTguMzgsNC41NiAxOCw0LjU5QzE3LjYxLDQuNzEgMTUuOSw1LjMyIDEzLjgsNy4zMUMxMy44LDcuMzEgMTYuMTcsOS42MSAxNy42MiwxMS45NkMxOS4wNywxNC4zMSAxOS45MywxNi4xNiAxOS40LDE4LjczQzIxLDE2Ljk1IDIyLDE0LjU5IDIyLDEyQzIyLDkuMzggMjEsNyAxOS4zNCw1LjIxTTE1LjczLDEyLjk2QzE1LjA4LDEyLjI0IDE0LjEzLDExLjIxIDEyLjg2LDkuOTVDMTIuNTksOS42OCAxMi4zLDkuNCAxMiw5LjFDMTIsOS4xIDExLjUzLDkuNTYgMTAuOTMsMTAuMTdDMTAuMTYsMTAuOTQgOS4xNywxMS45NSA4LjYxLDEyLjU0QzcuNjMsMTMuNTkgNC44MSwxNi44OSA0LjY1LDE4Ljc0QzQuNjUsMTguNzQgNCwxNy4yOCA1LjQsMTMuODlDNi4zLDExLjY4IDksOC4zNiAxMC4xNSw3LjI4QzEwLjE1LDcuMjggOS4xMiw2LjE0IDcuODIsNS4zNUw3Ljc3LDUuMzJDNy4xNCw0Ljk1IDYuNDYsNC42NiA1LjgsNC42MkM1LjEzLDQuNjcgNC43MSw1LjE2IDQuNzEsNS4xNkMzLjAzLDYuOTUgMiw5LjM1IDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJDMTQuOTMsMjIgMTcuNTcsMjAuNzQgMTkuNCwxOC43M0MxOS40LDE4LjczIDE5LjE5LDE3LjQgMTcuODQsMTUuNUMxNy41MywxNS4wNyAxNi4zNywxMy42OSAxNS43MywxMi45NlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlciA9IFwiTTguNzUsMTUuNzVDNi43NSwxNS43NSA2LDE4IDQsMTlDMiwxOSAwLjUsMTYgNC41LDcuNUg0Ljc1TDUuMTksNi42N0M1LjE5LDYuNjcgOCw1IDkuMzMsNi4yM0gxNC42N0MxNiw1IDE4LjgxLDYuNjcgMTguODEsNi42N0wxOS4yNSw3LjVIMTkuNUMyMy41LDE2IDIyLDE5IDIwLDE5QzE4LDE4IDE3LjI1LDE1Ljc1IDE1LjI1LDE1Ljc1SDguNzVNMTIsN0ExLDEgMCAwLDAgMTEsOEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTMsOEExLDEgMCAwLDAgMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlBbGVydCA9IFwiTTIxLDE5VjdIMTVWMTlIMjFNMjEuNjcsNUMyMi40LDUgMjMsNS42IDIzLDYuMzNWMTkuNjdBMS4zMywxLjMzIDAgMCwxIDIxLjY3LDIxSDE0LjMzQzEzLjYsMjEgMTMsMjAuNCAxMywxOS42N1YxNi43NUg3Ljc1QzUuNzUsMTYuNzUgNSwxOSAzLDIwQzEsMjAgLTAuNSwxNyAzLjUsOC41SDMuNzVMNC4xOSw3LjY3QzQuMTksNy42NyA3LDYgOC4zMyw3LjIzSDEzVjYuMzNBMS4zMywxLjMzIDAgMCwxIDE0LjMzLDVIMTZWM0gyMFY1SDIxLjY3TTExLDhBMSwxIDAgMCwwIDEwLDlBMSwxIDAgMCwwIDExLDEwQTEsMSAwIDAsMCAxMiw5QTEsMSAwIDAsMCAxMSw4TTE3LDlIMTlWMTRIMTdWOU0xNywxNUgxOVYxN0gxN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlDaGFyZ2luZyA9IFwiTTIwLDVIMjEuNjdDMjIuNCw1IDIzLDUuNiAyMyw2LjMzVjE5LjY3QTEuMzMsMS4zMyAwIDAsMSAyMS42NywyMUgxNC4zM0MxMy42LDIxIDEzLDIwLjQgMTMsMTkuNjdWMTYuNzVINy43NUM1Ljc1LDE2Ljc1IDUsMTkgMywyMEMxLDIwIC0wLjUsMTcgMy41LDguNUgzLjc1TDQuMTksNy42N0M0LjE5LDcuNjcgNyw2IDguMzMsNy4yM0gxM1Y2LjMzQTEuMzMsMS4zMyAwIDAsMSAxNC4zMyw1SDE2VjNIMjBWNU0yMSw3SDE1VjE5SDIxVjdNMTUuNSwxNEwxOC41LDcuNVYxMkgyMC41TDE3LjUsMTguNVYxNEgxNS41TTExLDhBMSwxIDAgMCwwIDEwLDlBMSwxIDAgMCwwIDExLDEwQTEsMSAwIDAsMCAxMiw5QTEsMSAwIDAsMCAxMSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFhib3hDb250cm9sbGVyQmF0dGVyeUVtcHR5ID0gXCJNMjEsMTlWN0gxNVYxOUgyMU0yMS42Nyw1QzIyLjQsNSAyMyw1LjYgMjMsNi4zM1YxOS42N0ExLjMzLDEuMzMgMCAwLDEgMjEuNjcsMjFIMTQuMzNDMTMuNiwyMSAxMywyMC40IDEzLDE5LjY3VjE2Ljc1SDcuNzVDNS43NSwxNi43NSA1LDE5IDMsMjBDMSwyMCAtMC41LDE3IDMuNSw4LjVIMy43NUw0LjE5LDcuNjdDNC4xOSw3LjY3IDcsNiA4LjMzLDcuMjNIMTNWNi4zM0ExLjMzLDEuMzMgMCAwLDEgMTQuMzMsNUgxNlYzSDIwVjVIMjEuNjdNMTEsOEExLDEgMCAwLDAgMTAsOUExLDEgMCAwLDAgMTEsMTBBMSwxIDAgMCwwIDEyLDlBMSwxIDAgMCwwIDExLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0WGJveENvbnRyb2xsZXJCYXR0ZXJ5RnVsbCA9IFwiTTIxLjY3LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjMzVjE5LjY3QTEuMzMsMS4zMyAwIDAsMSAyMS42NywyMUgxNC4zM0MxMy42LDIxIDEzLDIwLjQgMTMsMTkuNjdWMTYuNzVINy43NUM1Ljc1LDE2Ljc1IDUsMTkgMywyMEMxLDIwIC0wLjUsMTcgMy41LDguNUgzLjc1TDQuMTksNy42N0M0LjE5LDcuNjcgNyw2IDguMzMsNy4yM0gxM1Y2LjMzQTEuMzMsMS4zMyAwIDAsMSAxNC4zMyw1SDE2VjNIMjBWNUgyMS42N00xMSw4QTEsMSAwIDAsMCAxMCw5QTEsMSAwIDAsMCAxMSwxMEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlMb3cgPSBcIk0yMSwxNlY3SDE1VjE2SDIxTTIxLjY3LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjMzVjE5LjY3QTEuMzMsMS4zMyAwIDAsMSAyMS42NywyMUgxNC4zM0MxMy42LDIxIDEzLDIwLjQgMTMsMTkuNjdWMTYuNzVINy43NUM1Ljc1LDE2Ljc1IDUsMTkgMywyMEMxLDIwIC0wLjUsMTcgMy41LDguNUgzLjc1TDQuMTksNy42N0M0LjE5LDcuNjcgNyw2IDguMzMsNy4yM0gxM1Y2LjMzQTEuMzMsMS4zMyAwIDAsMSAxNC4zMyw1SDE2VjNIMjBWNUgyMS42N00xMSw4QTEsMSAwIDAsMCAxMCw5QTEsMSAwIDAsMCAxMSwxMEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlNZWRpdW0gPSBcIk0yMSwxMlY3SDE1VjEySDIxTTIxLjY3LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjMzVjE5LjY3QTEuMzMsMS4zMyAwIDAsMSAyMS42NywyMUgxNC4zM0MxMy42LDIxIDEzLDIwLjQgMTMsMTkuNjdWMTYuNzVINy43NUM1Ljc1LDE2Ljc1IDUsMTkgMywyMEMxLDIwIC0wLjUsMTcgMy41LDguNUgzLjc1TDQuMTksNy42N0M0LjE5LDcuNjcgNyw2IDguMzMsNy4yM0gxM1Y2LjMzQTEuMzMsMS4zMyAwIDAsMSAxNC4zMyw1SDE2VjNIMjBWNUgyMS42N00xMSw4QTEsMSAwIDAsMCAxMCw5QTEsMSAwIDAsMCAxMSwxMEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlVbmtub3duID0gXCJNMjEuNjcsNUMyMi40LDUgMjMsNS42IDIzLDYuMzNWMTkuNjdBMS4zMywxLjMzIDAgMCwxIDIxLjY3LDIxSDE0LjMzQzEzLjYsMjEgMTMsMjAuNCAxMywxOS42N1YxNi43NUg3Ljc1QzUuNzUsMTYuNzUgNSwxOSAzLDIwQzEsMjAgLTAuNSwxNyAzLjUsOC41SDMuNzVMNC4xOSw3LjY3QzQuMTksNy42NyA3LDYgOC4zMyw3LjIzSDEzVjYuMzNBMS4zMywxLjMzIDAgMCwxIDE0LjMzLDVIMTZWM0gyMFY1SDIxLjY3TTExLDhBMSwxIDAgMCwwIDEwLDlBMSwxIDAgMCwwIDExLDEwQTEsMSAwIDAsMCAxMiw5QTEsMSAwIDAsMCAxMSw4TTE4LjE5LDhDMTcuMzIsOCAxNi42Miw4LjIgMTYuMDgsOC41OUMxNS41Niw5IDE1LjMsOS41NyAxNS4zMSwxMC4zNkwxNS4zMiwxMC4zOUgxNy4yNUMxNy4yNiwxMC4wOSAxNy4zNSw5Ljg2IDE3LjUzLDkuN0MxNy43MSw5LjU1IDE3LjkzLDkuNDcgMTguMTksOS40N0MxOC41LDkuNDcgMTguNzYsOS41NyAxOC45NCw5Ljc1QzE5LjEyLDkuOTQgMTkuMiwxMC4yIDE5LjIsMTAuNUMxOS4yLDEwLjgyIDE5LjEzLDExLjA5IDE4Ljk3LDExLjMyQzE4LjgzLDExLjU1IDE4LjYyLDExLjc1IDE4LjM2LDExLjkxQzE3Ljg1LDEyLjI1IDE3LjUsMTIuNTUgMTcuMzEsMTIuODJDMTcuMTEsMTMuMDggMTcsMTMuNSAxNywxNEgxOUMxOSwxMy42OSAxOS4wNCwxMy40NCAxOS4xMywxMy4yNkMxOS4yMiwxMy4wOCAxOS4zOSwxMi45IDE5LjY0LDEyLjc0QzIwLjA5LDEyLjUgMjAuNDYsMTIuMjEgMjAuNzUsMTEuODFDMjEuMDQsMTEuNDEgMjEuMTksMTEgMjEuMTksMTAuNUMyMS4xOSw5Ljc0IDIwLjkyLDkuMTMgMjAuMzgsOC42OEMxOS44NSw4LjIzIDE5LjEyLDggMTguMTksOE0xNywxNVYxN0gxOVYxNUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlck1lbnUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk02LDdIMThWOUg2VjdNNiwxMUgxOFYxM0g2VjExTTYsMTVIMThWMTdINlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlck9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTIuNSwxNS43NUg4Ljc1QzYuNzUsMTUuNzUgNiwxOCA0LDE5QzIsMTkgMC41LDE2LjA0IDQuNDIsNy42OUwyLDUuMjdNOS4zMyw2LjIzSDE0LjY3QzE2LDUgMTguODEsNi42NyAxOC44MSw2LjY3TDE5LjI1LDcuNUgxOS41QzIzLDE1IDIyLjI4LDE4LjIgMjAuNjksMTguODdMNy42Miw1LjhDOC4yNSw1LjczIDguODcsNS44MSA5LjMzLDYuMjNNMTIsN0ExLDEgMCAwLDAgMTEsOEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTMsOEExLDEgMCAwLDAgMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlclZpZXcgPSBcIk0xMiwyQzYuNDcsMiAyLDYuNSAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNiw3SDE1VjlIOFYxNEg2VjdNOSwxMEgxOFYxN0g5VjEwTTExLDEyVjE1SDE2VjEySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFlhbW1lciA9IFwiTTIyIDEyUTIyIDEyLjQzIDIxLjk3IDEyLjk0IDIxLjk1IDEzLjQ1IDIxLjg5IDEzLjk3IDIxLjg0IDE0LjUgMjEuNzYgMTUgMjEuNjggMTUuNSAyMS41NiAxNS44OSAyMS41IDE2LjA3IDIxLjM4IDE2LjE5IDIxLjI0IDE2LjMgMjEuMDQgMTYuMyAyMC45NSAxNi4zIDIwLjY2IDE2LjIzIDIwLjM3IDE2LjE2IDIwLjAzIDE2LjA3TDE5LjM5IDE1Ljg4UTE5LjA5IDE1Ljc5IDE4Ljk2IDE1Ljc2IDE4Ljc1IDE2LjU0IDE4LjQxIDE3LjM4IDE4LjA4IDE4LjIxIDE3LjY1IDE5IDE3LjIyIDE5LjggMTYuNyAyMC41IDE2LjE4IDIxLjI1IDE1LjYxIDIxLjgyTDE1LjQzIDIxLjk1UTE1LjMzIDIyIDE1LjIxIDIyIDE1IDIyIDE0Ljg0IDIxLjg0TDEwLjEgMTcuMTFIMi44NVEyLjUgMTcuMTEgMi4yNSAxNi44NiAyIDE2LjYxIDIgMTYuMjZWNy43NFEyIDcuMzkgMi4yNSA3LjE0IDIuNSA2Ljg5IDIuODUgNi44OUgxMC4xTDE0LjgzIDIuMTZRMTUgMiAxNS4yMSAyIDE1LjMzIDIgMTUuNDIgMi4wNSAxNS41IDIuMDkgMTUuNTkgMi4xOCAxNS44NSAyLjQ0IDE2LjA4IDIuNzEgMTYuMyAzIDE2LjUgMy4yOCAxOC4yMyA1LjU1IDE4Ljk2IDguMjggMTkuMTQgOC4yMyAxOS40NCA4LjE0IDE5Ljc0IDguMDUgMjAuMDYgNy45NiAyMC4zNyA3Ljg3IDIwLjY1IDcuOCAyMC45MiA3Ljc0IDIxLjA0IDcuNzQgMjEuMjQgNy43NCAyMS4zOCA3Ljg1IDIxLjUgNy45NyAyMS41NiA4LjE1IDIxLjY4IDguNTYgMjEuNzcgOS4wNSAyMS44NSA5LjU1IDIxLjkxIDEwLjA2IDIxLjk2IDEwLjU3IDIyIDExLjA4VjEyTTkuODIgOS4zN1E5LjgyIDkuMDYgOS42MiA4Ljg1IDkuNCA4LjY0IDkuMSA4LjY0IDguOSA4LjY0IDguNzIgOC43NCA4LjU1IDguODUgOC40NSA5LjAzTDcuMTUgMTEuNDdMNS44OSA5LjAzUTUuNzcgOC44IDUuNTcgOC43MiA1LjM3IDguNjQgNS4xMyA4LjY0IDQuODIgOC42NCA0LjYxIDguODUgNC40IDkuMDYgNC40IDkuMzYgNC40IDkuNTcgNC41IDkuNzNMNi4yNSAxMi44N1E2LjI3IDEyLjkxIDYuMjkgMTIuOTcgNi4zIDEzLjAzIDYuMyAxMy4wOFYxNC42M1E2LjMgMTUgNi41NiAxNS4xOSA2LjgxIDE1LjM2IDcuMTUgMTUuMzYgNy4zOSAxNS4zNiA3LjU0IDE1LjI3IDcuNjggMTUuMTggNy43NiAxNS4wMyA3Ljg0IDE0Ljg4IDcuODcgMTQuNjkgNy45IDE0LjUgNy45IDE0LjI4IDcuOSAxNCA3Ljg4IDEzLjc2IDcuODYgMTMuNSA3Ljg2IDEzLjI4IDcuODYgMTMuMTQgNy44NyAxMy4wMyA3Ljg4IDEyLjkzIDcuOTMgMTIuODVMOS43MyA5LjczUTkuODMgOS41NSA5LjgzIDkuMzdNMTUuMTcgMy42M0wxMS44IDdRMTIgNy4xMiAxMi4xIDcuMzEgMTIuMjIgNy41IDEyLjIyIDcuNzRWMTAuMDdMMTcuNzIgOC42MVExNy4zNCA3LjE5IDE2LjcxIDYgMTYuMDggNC43NyAxNS4xNyAzLjYzTTE3LjczIDE1LjQyTDEyLjIyIDEzLjk1VjE2LjI2UTEyLjIyIDE2LjUgMTIuMSAxNi42OSAxMiAxNi44OCAxMS44IDE3TDE1LjE4IDIwLjM3UTE2LjA3IDE5LjI5IDE2LjcyIDE4LjA0IDE3LjM3IDE2Ljc5IDE3LjczIDE1LjQzVjE1LjQyTTIwLjQ3IDE0Ljg0UTIwLjYgMTQuMTQgMjAuNjYgMTMuNDMgMjAuNzIgMTIuNzMgMjAuNzIgMTIgMjAuNzIgMTEuMjkgMjAuNjYgMTAuNTkgMjAuNiA5Ljg5IDIwLjQ3IDkuMTkgMTguNCA5Ljc0IDE2LjM1IDEwLjI5IDE0LjMgMTAuODMgMTIuMjIgMTEuMzkgMTIuMjEgMTEuNTUgMTIuMjEgMTEuN1YxMi4zMkwxMi4yMiAxMi42M1ExNC4zIDEzLjE5IDE2LjM1IDEzLjczIDE4LjQgMTQuMjcgMjAuNDcgMTQuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm93YXZlID0gXCJNNCw1QTIsMiAwIDAsMCAyLDdWMTdBMiwyIDAgMCwwIDQsMTlIMjBBMiwyIDAgMCwwIDIyLDE3VjdBMiwyIDAgMCwwIDIwLDVINE00LDdIMTZWMTdINFY3TTE5LDdBMSwxIDAgMCwxIDIwLDhBMSwxIDAgMCwxIDE5LDlBMSwxIDAgMCwxIDE4LDhBMSwxIDAgMCwxIDE5LDdNMTMsOVYxNUgxNVY5SDEzTTE5LDExQTEsMSAwIDAsMSAyMCwxMkExLDEgMCAwLDEgMTksMTNBMSwxIDAgMCwxIDE4LDEyQTEsMSAwIDAsMSAxOSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3dhdmVPZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDMuMjYgNS4xNUMyLjUgNS40NCAyIDYuMTYgMiA3VjE3QzIgMTguMTEgMi45IDE5IDQgMTlIMTcuMTFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNCAxN1Y3SDUuMTFMMTUuMTEgMTdINE0xNiA3VjEyLjhMMjEuNSAxOC4zMUMyMS44MSAxNy45NSAyMiAxNy41IDIyIDE3VjdDMjIgNS45IDIxLjExIDUgMjAgNUg4LjJMMTAuMiA3SDE2TTE5IDdDMTkuNTUgNyAyMCA3LjQ1IDIwIDhTMTkuNTUgOSAxOSA5IDE4IDguNTUgMTggOCAxOC40NSA3IDE5IDdNMTkgMTFDMTkuNTUgMTEgMjAgMTEuNDUgMjAgMTJTMTkuNTUgMTMgMTkgMTMgMTggMTIuNTUgMTggMTIgMTguNDUgMTEgMTkgMTFNMTMgOS44VjlIMTVWMTEuOEwxMyA5LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWlkZGxld2FyZSA9IFwiTTIzIDEyTDE5IDhWMTFIMTQuODJDMTQuNCA5Ljg0IDEzLjMgOSAxMiA5UzkuNiA5Ljg0IDkuMTggMTFINUwyIDhWMTZMNSAxM0g5LjE4QzkuNiAxNC4xNiAxMC43IDE1IDEyIDE1UzE0LjQgMTQuMTYgMTQuODIgMTNIMTlWMTZMMjMgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWlkZGxld2FyZU91dGxpbmUgPSBcIk0yMyAxMkwxOSA4VjExSDE1Ljg2QzE1LjQxIDkuMjggMTMuODYgOCAxMiA4UzguNTkgOS4yOCA4LjE0IDExSDVMMiA4VjE2TDUgMTNIOC4xNEM4LjU5IDE0LjcyIDEwLjE0IDE2IDEyIDE2UzE1LjQxIDE0LjcyIDE1Ljg2IDEzSDE5VjE2TDIzIDEyTTEyIDE0QzEwLjkgMTQgMTAgMTMuMSAxMCAxMkMxMCAxMC45IDEwLjkgMTAgMTIgMTBTMTQgMTAuOSAxNCAxMkMxNCAxMy4xIDEzLjEgMTQgMTIgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWlkaSA9IFwiTTIwLjE1IDguMjZIMjJWMTUuNzRIMjAuMTVNMTMgOC4yNkgxOC40M0MxOSA4LjI2IDE5LjMgOC43NCAxOS4zIDkuM1YxNC44MUMxOS4zIDE1LjUgMTkgMTUuNzQgMTguMzggMTUuNzRIMTNWMTFIMTQuODdWMTMuOTFIMTcuNVY5Ljk1SDEzTTEwLjMyIDguMjZIMTIuMTRWMTUuNzRIMTAuMzJNMiA4LjI2SDguNTVDOS4xIDguMjYgOS40MSA4Ljc0IDkuNDEgOS4zVjE1Ljc0SDcuNTlWMTAuMTVINi41VjE1Ljc0SDQuODdWMTAuMTVIMy44M1YxNS43NEgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pZGlQb3J0ID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMjAuMTgsMTJDMjAuMTgsOC4xOCAxNy41NSw0Ljk2IDE0LDQuMDdWNkgxMFY0LjA3QzYuNDUsNC45NiAzLjgyLDguMTggMy44MiwxMkE4LjE4LDguMTggMCAwLDAgMTIsMjAuMThBOC4xOCw4LjE4IDAgMCwwIDIwLjE4LDEyTTcsMTAuNjRBMS4zNiwxLjM2IDAgMCwxIDguMzYsMTJBMS4zNiwxLjM2IDAgMCwxIDcsMTMuMzZDNi4yNSwxMy4zNiA1LjY0LDEyLjc1IDUuNjQsMTJDNS42NCwxMS4yNSA2LjI1LDEwLjY0IDcsMTAuNjRNMTcsMTAuNjRBMS4zNiwxLjM2IDAgMCwxIDE4LjM2LDEyQTEuMzYsMS4zNiAwIDAsMSAxNywxMy4zNkExLjM2LDEuMzYgMCAwLDEgMTUuNjQsMTJBMS4zNiwxLjM2IDAgMCwxIDE3LDEwLjY0TTguMzYsMTQuMjdBMS4zNywxLjM3IDAgMCwxIDkuNzMsMTUuNjRDOS43MywxNi4zOSA5LjEyLDE3IDguMzYsMTdBMS4zNiwxLjM2IDAgMCwxIDcsMTUuNjRDNywxNC44OCA3LjYxLDE0LjI3IDguMzYsMTQuMjdNMTUuNjQsMTQuMjdDMTYuMzksMTQuMjcgMTcsMTQuODggMTcsMTUuNjRBMS4zNiwxLjM2IDAgMCwxIDE1LjY0LDE3QzE0Ljg4LDE3IDE0LjI3LDE2LjM5IDE0LjI3LDE1LjY0QTEuMzcsMS4zNyAwIDAsMSAxNS42NCwxNC4yN00xMiwxNS42NEExLjM2LDEuMzYgMCAwLDEgMTMuMzYsMTdBMS4zNiwxLjM2IDAgMCwxIDEyLDE4LjM2QTEuMzYsMS4zNiAwIDAsMSAxMC42NCwxN0ExLjM2LDEuMzYgMCAwLDEgMTIsMTUuNjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWluZSA9IFwiTTIzLDEzVjExSDE5LjkzQzE5Ljc1LDkuNTggMTkuMTksOC4yMyAxOC4zMSw3LjFMMjAuNSw0LjkzTDE5LjA3LDMuNUwxNi45LDUuNjlDMTUuNzcsNC44MSAxNC40Miw0LjI1IDEzLDQuMDdWMUgxMVY0LjA3QzkuNTgsNC4yNSA4LjIzLDQuODEgNy4xLDUuNjlMNC45MywzLjVMMy41LDQuOTNMNS42OSw3LjFDNC44MSw4LjIzIDQuMjUsOS41OCA0LjA3LDExSDFWMTNINC4wN0M0LjI1LDE0LjQyIDQuODEsMTUuNzcgNS42OSwxNi45TDMuNSwxOS4wN0w0LjkzLDIwLjVMNy4xLDE4LjMxQzguMjMsMTkuMTkgOS41OCwxOS43NSAxMSwxOS45M1YyM0gxM1YxOS45M0MxNC40MiwxOS43NSAxNS43NywxOS4xOSAxNi45LDE4LjMxTDE5LjA3LDIwLjVMMjAuNSwxOS4wN0wxOC4zMSwxNi45QzE5LjE5LDE1Ljc3IDE5Ljc1LDE0LjQyIDE5LjkzLDEzSDIzTTEyLDhBNCw0IDAgMCwwIDgsMTJINkE2LDYgMCAwLDEgMTIsNlY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pbmVjcmFmdCA9IFwiTTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYyMEEyLDIgMCAwLDEgMjAsMjJINEEyLDIgMCAwLDEgMiwyMFY0QTIsMiAwIDAsMSA0LDJNNiw2VjEwSDEwVjEySDhWMThIMTBWMTZIMTRWMThIMTZWMTJIMTRWMTBIMThWNkgxNFYxMEgxMFY2SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWluaVNkID0gXCJNNiw0QTIsMiAwIDAsMCA0LDZWMThBMiwyIDAgMCwwIDYsMjBIMThBMiwyIDAgMCwwIDIwLDE4VjEyTDE4LDEwVjZBMiwyIDAgMCwwIDE2LDRINk03LDZIOVYxMEg3VjZNMTAsNkgxMlYxMEgxMFY2TTEzLDZIMTVWMTBIMTNWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW5pZGlzYyA9IFwiTTUsM0MzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzSDVNMTIsNUMxNS4wOSw1IDE3LjgyLDcuMDQgMTguNywxMEgxNkExLDEgMCAwLDAgMTUsMTFWMTNBMSwxIDAgMCwwIDE2LDE0SDE4LjcxQzE3LjgyLDE2Ljk3IDE1LjA5LDE5IDEyLDE5QTcsNyAwIDAsMSA1LDEyQTcsNyAwIDAsMSAxMiw1TTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51cyA9IFwiTTE5LDEzSDVWMTFIMTlWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNCb3ggPSBcIk0xNywxM0g3VjExSDE3TTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pbnVzQm94TXVsdGlwbGUgPSBcIk0xOSAxMUg5VjlIMTlNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjExIDYuOSAxOCA4IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk00IDZIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDE4VjIwSDRWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTE4IDExSDEwVjlIMThNMjAgNFYxNkg4VjRIMjBNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjExIDYuOSAxOCA4IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk00IDZIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDE4VjIwSDRWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c0JveE91dGxpbmUgPSBcIk0xOSwxOVY1SDVWMTlIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QzMsMy44OSAzLjksMyA1LDNIMTlNMTcsMTFWMTNIN1YxMUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c0NpcmNsZSA9IFwiTTE3LDEzSDdWMTFIMTdNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNDaXJjbGVNdWx0aXBsZSA9IFwiTTIgMTJDMiA5LjIxIDMuNjQgNi44IDYgNS42OFYzLjVDMi41IDQuNzYgMCA4LjA5IDAgMTJTMi41IDE5LjI0IDYgMjAuNVYxOC4zMkMzLjY0IDE3LjIgMiAxNC43OSAyIDEyTTE1IDNDMTAuMDQgMyA2IDcuMDQgNiAxMlMxMC4wNCAyMSAxNSAyMSAyNCAxNi45NiAyNCAxMiAxOS45NiAzIDE1IDNNMjAgMTNIMTBWMTFIMjBWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNDaXJjbGVNdWx0aXBsZU91dGxpbmUgPSBcIk0xMSAxMVYxM0gxOVYxMUgxMU0yIDEyQzIgOS4yMSAzLjY0IDYuOCA2IDUuNjhWMy41QzIuNSA0Ljc2IDAgOC4wOSAwIDEyUzIuNSAxOS4yNCA2IDIwLjVWMTguMzJDMy42NCAxNy4yIDIgMTQuNzkgMiAxMk0xNSAzQzEwLjA0IDMgNiA3LjA0IDYgMTJTMTAuMDQgMjEgMTUgMjEgMjQgMTYuOTYgMjQgMTIgMTkuOTYgMyAxNSAzTTE1IDE5QzExLjE0IDE5IDggMTUuODYgOCAxMlMxMS4xNCA1IDE1IDUgMjIgOC4xNCAyMiAxMiAxOC44NiAxOSAxNSAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c0NpcmNsZU9mZiA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDQuMSA2QzIuOCA3LjYgMiA5LjcgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE0LjMgMjIgMTYuNCAyMS4yIDE4IDE5LjlMMjAuOCAyMi43TDIyLjEgMjEuNU03IDEzVjExSDkuMUwxMS4xIDEzSDdNMTQuMiAxMUw2LjcgMy41QzguMyAyLjYgMTAuMSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxMy45IDIxLjQgMTUuNyAyMC41IDE3LjNMMTYuMiAxM0gxN1YxMUgxNC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pbnVzQ2lyY2xlT2ZmT3V0bGluZSA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDQuMSA2QzIuOCA3LjYgMiA5LjcgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE0LjMgMjIgMTYuNCAyMS4yIDE4IDE5LjlMMjAuOCAyMi43TDIyLjEgMjEuNU0xMiAyMEM3LjYgMjAgNCAxNi40IDQgMTJDNCAxMC4zIDQuNiA4LjcgNS41IDcuNEw5LjEgMTFIN1YxM0gxMS4xTDE2LjYgMTguNUMxNS4zIDE5LjQgMTMuNyAyMCAxMiAyME04LjIgNUw2LjcgMy41QzguMyAyLjYgMTAuMSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxMy45IDIxLjQgMTUuNyAyMC41IDE3LjNMMTkgMTUuOEMxOS42IDE0LjcgMjAgMTMuNCAyMCAxMkMyMCA3LjYgMTYuNCA0IDEyIDRDMTAuNiA0IDkuMyA0LjQgOC4yIDVNMTYuMiAxM0wxNC4yIDExSDE3VjEzSDE2LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNDaXJjbGVPdXRsaW5lID0gXCJNMTIsMjBDNy41OSwyMCA0LDE2LjQxIDQsMTJDNCw3LjU5IDcuNTksNCAxMiw0QzE2LjQxLDQgMjAsNy41OSAyMCwxMkMyMCwxNi40MSAxNi40MSwyMCAxMiwyME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk03LDEzSDE3VjExSDdcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c05ldHdvcmsgPSBcIk0xNiwxMVY5SDhWMTFIMTZNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNOZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdNMTUsMTFWOUg5VjExSDE1XCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNUaGljayA9IFwiTTIwIDE0SDRWMTBIMjBWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWlycm9yID0gXCJNMTIgMUMxNi42OSAxIDIwLjUgNS45MyAyMC41IDEyQzIwLjUgMTguMDggMTYuNjkgMjMgMTIgMjNDNy4zMSAyMyAzLjUgMTguMDggMy41IDEyQzMuNSA1LjkzIDcuMzEgMSAxMiAxTTEyIDNDOC40MSAzIDUuNSA3LjAzIDUuNSAxMkM1LjUgMTYuOTcgOC40MSAyMSAxMiAyMUMxNS41OSAyMSAxOC41IDE2Ljk3IDE4LjUgMTJDMTguNSA3LjAzIDE1LjU5IDMgMTIgM004LjI5IDEwLjI4TDExLjUzIDcuMDNMMTIuNTkgOC4wOUw5LjM1IDExLjM0TDguMjkgMTAuMjhNOC43IDE0LjYxTDE0LjM2IDguOTVMMTUuNDIgMTBMOS43NiAxNS42N0w4LjcgMTQuNjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWl4ZWRNYXJ0aWFsQXJ0cyA9IFwiTTE1LDEwVjdIN1YxMEgxNU0xOCw3QzE4LjI4LDcgMTguNSw3LjA5IDE4LjcsNy4yOUMxOC44OSw3LjUgMTksNy43MyAxOSw4VjEwLjc4QzE5LDEwLjk3IDE4Ljk3LDExLjExIDE4Ljk0LDExLjJMMTguMTQsMTUuMTlDMTgsMTUuNzIgMTcuNywxNiAxNy4yLDE2SDYuOEM2LjI3LDE2IDUuOTUsMTUuNzIgNS44NiwxNS4xOUw1LjA2LDExLjJDNS4wMywxMS4xMSA1LDEwLjk3IDUsMTAuNzhWNUM1LDQuNSA1LjIxLDQgNS42LDMuNjFDNiwzLjIgNi40NSwzIDcsM0gxNUMxNS41MywzIDE2LDMuMiAxNi40MSwzLjYxQzE2LjgxLDQgMTcsNC41IDE3LDVWOEMxNyw3LjczIDE3LjExLDcuNSAxNy4zLDcuMjlDMTcuNSw3LjA5IDE3LjcyLDcgMTgsN003LDIwVjE3SDE3VjIwQzE3LDIwLjMgMTYuOTEsMjAuNTMgMTYuNzEsMjAuNzJDMTYuNSwyMC45MSAxNi4yNywyMSAxNiwyMUg4QzcuNzMsMjEgNy41LDIwLjkxIDcuMjksMjAuNzJDNy4wOSwyMC41MyA3LDIwLjMgNywyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaXhlZFJlYWxpdHkgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QTIsMiAwIDAsMSA1LDNNOC4yNSwxNUg5Ljc1TDEwLjc1LDExLjU3VjE1SDEyLjI1VjlIMTBMOSwxMi40M0w4LDlINS43NVYxNUg3LjI1VjExLjU3TDguMjUsMTVNMTMuNSw5VjE1SDE1VjEzSDE2LjE1TDE3LDE1SDE4LjVMMTcuNiwxMi45QzE4LjEsMTIuNjUgMTguNSwxMi4xIDE4LjUsMTEuNVYxMC41QzE4LjUsOS42NSAxNy44NSw5IDE3LDlIMTMuNU0xNSwxMC41SDE3VjExLjVIMTVWMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb2xlY3VsZSA9IFwiTTcuMjcsMTBMOSw3SDE0LjQyTDE1LjU4LDVMMTUuNSw0LjVBMS41LDEuNSAwIDAsMSAxNywzQTEuNSwxLjUgMCAwLDEgMTguNSw0LjVDMTguNSw1LjIxIDE4LDUuODEgMTcuMzMsNS45NkwxNi4zNyw3LjYzTDE3LjczLDEwTDE4LjU5LDguNUwxOC41LDhBMS41LDEuNSAwIDAsMSAyMCw2LjVBMS41LDEuNSAwIDAsMSAyMS41LDhDMjEuNSw4LjcxIDIxLDkuMyAyMC4zNSw5LjQ2TDE4Ljg5LDEyTDIwLjYyLDE1QzIxLjM5LDE1LjA3IDIyLDE1LjcxIDIyLDE2LjVBMS41LDEuNSAwIDAsMSAyMC41LDE4QTEuNSwxLjUgMCAwLDEgMTksMTYuNVYxNi4yNEwxNy43MywxNEwxNi4zNywxNi4zN0wxNy4zMywxOC4wNEMxOCwxOC4xOSAxOC41LDE4Ljc5IDE4LjUsMTkuNUExLjUsMS41IDAgMCwxIDE3LDIxQTEuNSwxLjUgMCAwLDEgMTUuNSwxOS41TDE1LjU4LDE5TDE0LjQyLDE3SDEwLjU4TDkuNDIsMTlMOS41LDE5LjVBMS41LDEuNSAwIDAsMSA4LDIxQTEuNSwxLjUgMCAwLDEgNi41LDE5LjVDNi41LDE4Ljc5IDcsMTguMTkgNy42NywxOC4wNEw4LjYzLDE2LjM3TDQuMzgsOUMzLjYxLDguOTMgMyw4LjI5IDMsNy41QTEuNSwxLjUgMCAwLDEgNC41LDZBMS41LDEuNSAwIDAsMSA2LDcuNUM2LDcuNTkgNiw3LjY4IDYsNy43Nkw3LjI3LDEwTTEwLjE1LDlMOC40MiwxMkwxMC4xNSwxNUgxNC44NUwxNi41OCwxMkwxNC44NSw5SDEwLjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbGVjdWxlQ28gPSBcIk04IDdDNi45IDcgNiA3LjkgNiA5VjE1QzYgMTYuMTEgNi45IDE3IDggMTdIMTFWMTVIOFY5SDExVjdIOE0xNCA3QzEyLjkgNyAxMiA3LjkgMTIgOVYxNUMxMiAxNi4xMSAxMi45IDE3IDE0IDE3SDE2QzE3LjExIDE3IDE4IDE2LjExIDE4IDE1VjlDMTggNy45IDE3LjExIDcgMTYgN0gxNE0xNCA5SDE2VjE1SDE0VjlcIjtcclxuZXhwb3J0IHZhciBtZGlNb2xlY3VsZUNvMiA9IFwiTTUsN0EyLDIgMCAwLDAgMyw5VjE1QTIsMiAwIDAsMCA1LDE3SDhWMTVINVY5SDhWN0g1TTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5TTE2LDEwLjVWMTJIMTlWMTMuNUgxNy41QTEuNSwxLjUgMCAwLDAgMTYsMTVWMThIMjAuNVYxNi41SDE3LjVWMTVIMTlBMS41LDEuNSAwIDAsMCAyMC41LDEzLjVWMTJBMS41LDEuNSAwIDAsMCAxOSwxMC41SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3IgPSBcIk0yMSwxNkgzVjRIMjFNMjEsMkgzQzEuODksMiAxLDIuODkgMSw0VjE2QTIsMiAwIDAsMCAzLDE4SDEwVjIwSDhWMjJIMTZWMjBIMTRWMThIMjFBMiwyIDAgMCwwIDIzLDE2VjRDMjMsMi44OSAyMi4xLDIgMjEsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb25pdG9yQ2VsbHBob25lID0gXCJNMjMsMTFIMThBMSwxIDAgMCwwIDE3LDEyVjIxQTEsMSAwIDAsMCAxOCwyMkgyM0ExLDEgMCAwLDAgMjQsMjFWMTJBMSwxIDAgMCwwIDIzLDExTTIzLDIwSDE4VjEzSDIzVjIwTTIwLDJIMkMwLjg5LDIgMCwyLjg5IDAsNFYxNkEyLDIgMCAwLDAgMiwxOEg5VjIwSDdWMjJIMTVWMjBIMTNWMThIMTVWMTZIMlY0SDIwVjlIMjJWNEMyMiwyLjg5IDIxLjEsMiAyMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3JDZWxscGhvbmVTdGFyID0gXCJNMjMsMTFIMThBMSwxIDAgMCwwIDE3LDEyVjIxQTEsMSAwIDAsMCAxOCwyMkgyM0ExLDEgMCAwLDAgMjQsMjFWMTJBMSwxIDAgMCwwIDIzLDExTTIzLDIwSDE4VjEzSDIzVjIwTTIwLDJIMkMwLjg5LDIgMCwyLjg5IDAsNFYxNkEyLDIgMCAwLDAgMiwxOEg5VjIwSDdWMjJIMTVWMjBIMTNWMThIMTVWMTZIMlY0SDIwVjlIMjJWNEMyMiwyLjg5IDIxLjEsMiAyMCwyTTExLjk3LDlMMTEsNkwxMC4wMyw5SDdMOS40NywxMC43Nkw4LjUzLDEzLjY3TDExLDExLjg3TDEzLjQ3LDEzLjY3TDEyLjUzLDEwLjc2TDE1LDlIMTEuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvckNsZWFuID0gXCJNMjEgMTZIM1Y0SDIxTTIxIDJIM0MxLjg5IDIgMSAyLjg5IDEgNFYxNkMxIDE3LjExIDEuOSAxOCAzIDE4SDEwVjIwSDhWMjJIMTZWMjBIMTRWMThIMjFDMjIuMTEgMTggMjMgMTcuMTEgMjMgMTZWNEMyMyAyLjg5IDIyLjEgMiAyMSAyTTE1IDUuNUwxNC4zOCA2Ljg3TDEzIDcuNUwxNC4zOCA4LjEzTDE1IDkuNUwxNS42MyA4LjEzTDE3IDcuNUwxNS42MyA2Ljg3TDE1IDUuNU0xMC41IDcuNUw5LjQxIDkuOTFMNyAxMUw5LjQxIDEyLjA5TDEwLjUgMTQuNUwxMS42IDEyLjA5TDE0IDExTDExLjYgOS45MUwxMC41IDcuNVwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3JEYXNoYm9hcmQgPSBcIk0yMSwxNlY0SDNWMTZIMjFNMjEsMkEyLDIgMCAwLDEgMjMsNFYxNkEyLDIgMCAwLDEgMjEsMThIMTRWMjBIMTZWMjJIOFYyMEgxMFYxOEgzQzEuODksMTggMSwxNy4xIDEsMTZWNEMxLDIuODkgMS44OSwyIDMsMkgyMU01LDZIMTRWMTFINVY2TTE1LDZIMTlWOEgxNVY2TTE5LDlWMTRIMTVWOUgxOU01LDEySDlWMTRINVYxMk0xMCwxMkgxNFYxNEgxMFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb25pdG9yRWRpdCA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMTZDMSAxNy4xMSAxLjkgMTggMyAxOEgxMFYyMEg4VjIySDE2VjIwSDE0VjE4SDIxQzIyLjExIDE4IDIzIDE3LjExIDIzIDE2VjRDMjMgMi45IDIyLjExIDIgMjEgMk0yMSAxNkgzVjRIMjFWMTZNMTUuODQgOC4yTDE0LjgzIDkuMjFMMTIuNzYgNy4xOEwxMy43NyA2LjE2QzEzLjk3IDUuOTUgMTQuMzEgNS45NCAxNC41NSA2LjE2TDE1Ljg0IDcuNDFDMTYuMDUgNy42MiAxNi4wNiA3Ljk2IDE1Ljg0IDguMk04IDExLjkxTDEyLjE3IDcuNzJMMTQuMjQgOS44TDEwLjA4IDE0SDhWMTEuOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvckV5ZSA9IFwiTTMgNFYxNkgyMVY0SDNNMyAySDIxQzIyLjEgMiAyMyAyLjg5IDIzIDRWMTZDMjMgMTYuNTMgMjIuNzkgMTcuMDQgMjIuNDEgMTcuNDFDMjIuMDQgMTcuNzkgMjEuNTMgMTggMjEgMThIMTRWMjBIMTZWMjJIOFYyMEgxMFYxOEgzQzIuNDcgMTggMS45NiAxNy43OSAxLjU5IDE3LjQxQzEuMjEgMTcuMDQgMSAxNi41MyAxIDE2VjRDMSAyLjg5IDEuODkgMiAzIDJNMTAuODQgOC45M0MxMS4xNSA4LjYzIDExLjU3IDguNDUgMTIgOC40NUMxMi40MyA4LjQ2IDEyLjg1IDguNjMgMTMuMTYgOC45NEMxMy40NiA5LjI0IDEzLjY0IDkuNjYgMTMuNjQgMTAuMDlDMTMuNjQgMTAuNTMgMTMuNDYgMTAuOTQgMTMuMTYgMTEuMjVDMTIuODUgMTEuNTYgMTIuNDMgMTEuNzMgMTIgMTEuNzNDMTEuNTcgMTEuNzMgMTEuMTUgMTEuNTUgMTAuODQgMTEuMjVDMTAuNTQgMTAuOTQgMTAuMzYgMTAuNTMgMTAuMzYgMTAuMDlDMTAuMzYgOS42NiAxMC41NCA5LjI0IDEwLjg0IDguOTNNMTAuMDcgMTJDMTAuNTggMTIuNTMgMTEuMjggMTIuODIgMTIgMTIuODJDMTIuNzIgMTIuODIgMTMuNDIgMTIuNTMgMTMuOTMgMTJDMTQuNDQgMTEuNSAxNC43MyAxMC44MSAxNC43MyAxMC4wOUMxNC43MyA5LjM3IDE0LjQ0IDguNjcgMTMuOTMgOC4xNkMxMy40MiA3LjY1IDEyLjcyIDcuMzYgMTIgNy4zNkMxMS4yOCA3LjM2IDEwLjU4IDcuNjUgMTAuMDcgOC4xNkM5LjU2IDguNjcgOS4yNyA5LjM3IDkuMjcgMTAuMDlDOS4yNyAxMC44MSA5LjU2IDExLjUgMTAuMDcgMTJNNiAxMC4wOUM2Ljk0IDcuNyA5LjI3IDYgMTIgNkMxNC43MyA2IDE3LjA2IDcuNyAxOCAxMC4wOUMxNy4wNiAxMi41IDE0LjczIDE0LjE4IDEyIDE0LjE4QzkuMjcgMTQuMTggNi45NCAxMi41IDYgMTAuMDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvckxvY2sgPSBcIk0yMC41LDEzQTIuNSwyLjUgMCAwLDEgMjMsMTUuNVYxNkExLDEgMCAwLDEgMjQsMTdWMjFBMSwxIDAgMCwxIDIzLDIySDE4QTEsMSAwIDAsMSAxNywyMVYxN0ExLDEgMCAwLDEgMTgsMTZWMTUuNUEyLjUsMi41IDAgMCwxIDIwLjUsMTNNMjAuNSwxNEExLjUsMS41IDAgMCwwIDE5LDE1LjVWMTZIMjJWMTUuNUExLjUsMS41IDAgMCwwIDIwLjUsMTRNMjAsNEgyVjE2SDE1VjE4SDEzVjIwSDE1VjIySDdWMjBIOVYxOEgyQzAuODksMTggMCwxNy4xIDAsMTZWNEMwLDIuODkgMC44OSwyIDIsMkgyMEEyLDIgMCAwLDEgMjIsNFYxMS41M0MyMS40MSwxMS4xOSAyMC43MywxMSAyMCwxMVY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3JNdWx0aXBsZSA9IFwiTTIyLDE3VjdINlYxN0gyMk0yMiw1QTIsMiAwIDAsMSAyNCw3VjE3QzI0LDE4LjExIDIzLjEsMTkgMjIsMTlIMTZWMjFIMThWMjNIMTBWMjFIMTJWMTlINkM0Ljg5LDE5IDQsMTguMTEgNCwxN1Y3QTIsMiAwIDAsMSA2LDVIMjJNMiwzVjE1SDBWM0EyLDIgMCAwLDEgMiwxSDIwVjNIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb25pdG9yT2ZmID0gXCJNMTQsMThWMjBIMTZWMjJIOFYyMEgxMFYxOEgzQTIsMiAwIDAsMSAxLDE2VjRMMCwzTDEuNDEsMS41OEwyMi4xNiwyMi4zNEwyMC43NSwyMy43NUwxNSwxOEgxNE0zLDE2SDEzTDMsNlYxNk0yMSwyQTIsMiAwIDAsMSAyMyw0VjE2QTIsMiAwIDAsMSAyMSwxOEgyMC42NkwxOC42NiwxNkgyMVY0SDYuNjZMNC42NiwySDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3JTY3JlZW5zaG90ID0gXCJNOSw2SDVWMTBIN1Y4SDlNMTksMTBIMTdWMTJIMTVWMTRIMTlNMjEsMTZIM1Y0SDIxTTIxLDJIM0MxLjg5LDIgMSwyLjg5IDEsNFYxNkEyLDIgMCAwLDAgMywxOEgxMFYyMEg4VjIySDE2VjIwSDE0VjE4SDIxQTIsMiAwIDAsMCAyMywxNlY0QzIzLDIuODkgMjIuMSwyIDIxLDJcIjtcclxuZXhwb3J0IHZhciBtZGlNb25pdG9yU2hhcmUgPSBcIk0yMyA0VjE2QzIzIDE3LjExIDIyLjExIDE4IDIxIDE4SDE1VjE2SDIxVjRIM1YxNkg5VjE4SDNDMS45IDE4IDEgMTcuMTEgMSAxNlY0QzEgMi44OSAxLjg5IDIgMyAySDIxQzIyLjEgMiAyMyAyLjg5IDIzIDRNMTMgMTNIMTZMMTIgOUw4IDEzSDExVjIwSDhWMjJIMTZWMjBIMTNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvclNwZWFrZXIgPSBcIk0xMCAyMFYxOEgzQzEuOSAxOCAxIDE3LjEgMSAxNlY0QzEgMi44OSAxLjg5IDIgMyAySDIxQzIyLjEgMiAyMyAyLjg5IDIzIDRWOEgyMVY0SDNWMTZIMTJWMjJIOFYyMEgxME0xOC41IDE1QzE3LjEyIDE1IDE2IDE2LjEyIDE2IDE3LjVTMTcuMTIgMjAgMTguNSAyMCAyMSAxOC44OCAyMSAxNy41IDE5Ljg4IDE1IDE4LjUgMTVNMjMgMTBWMjFDMjMgMjEuNTUgMjIuNTUgMjIgMjIgMjJIMTVDMTQuNDUgMjIgMTQgMjEuNTUgMTQgMjFWMTBDMTQgOS40NSAxNC40NSA5IDE1IDlIMjJDMjIuNTUgOSAyMyA5LjQ1IDIzIDEwTTE3IDExLjVDMTcgMTIuMzMgMTcuNjcgMTMgMTguNSAxM1MyMCAxMi4zMyAyMCAxMS41IDE5LjMzIDEwIDE4LjUgMTAgMTcgMTAuNjcgMTcgMTEuNU0yMiAxNy41QzIyIDE1LjU3IDIwLjQzIDE0IDE4LjUgMTRTMTUgMTUuNTcgMTUgMTcuNSAxNi41NyAyMSAxOC41IDIxIDIyIDE5LjQzIDIyIDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvclNwZWFrZXJPZmYgPSBcIk0yMy4xIDIyLjVMMS40LjcuMSAyTDEuMiAzLjFDMS4xIDMuNCAxIDMuNyAxIDRWMTZDMSAxNy4xIDEuOSAxOCAzIDE4SDEwVjIwSDhWMjJIMTJWMTZIM1Y0LjlMMTQgMTUuOVYyMUMxNCAyMS42IDE0LjUgMjIgMTUgMjJIMjAuMUwyMS44IDIzLjdMMjMuMSAyMi41TTE4LjUgMjFDMTYuNiAyMSAxNSAxOS40IDE1IDE3LjVDMTUgMTcuMyAxNSAxNy4xIDE1LjEgMTYuOUwxNi4xIDE3LjlDMTYuMyAxOC45IDE3LjEgMTkuNyAxOC4xIDE5LjlMMTkuMSAyMC45QzE4LjkgMjEgMTguNyAyMSAxOC41IDIxTTIxIDE3LjVWMTcuOEwxOC4yIDE1SDE4LjVDMTkuOSAxNSAyMSAxNi4xIDIxIDE3LjVNMjMgMTkuOFYxMEMyMyA5LjQgMjIuNSA5IDIyIDlIMTVDMTQuNCA5IDE0IDkuNSAxNCAxMFYxMC44TDE3LjQgMTQuMkMxNy43IDE0LjEgMTguMSAxNCAxOC41IDE0QzIwLjQgMTQgMjIgMTUuNiAyMiAxNy41QzIyIDE3LjkgMjEuOSAxOC4zIDIxLjggMTguNkwyMyAxOS44TTE4LjUgMTNDMTcuNyAxMyAxNyAxMi4zIDE3IDExLjVTMTcuNyAxMCAxOC41IDEwIDIwIDEwLjcgMjAgMTEuNSAxOS4zIDEzIDE4LjUgMTNNNy4yIDRMNS4yIDJIMjFDMjIuMSAyIDIzIDIuOSAyMyA0VjhIMjFWNEg3LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvclN0YXIgPSBcIk0yMSwxNlY0SDNWMTZIMjFNMjEsMkEyLDIgMCAwLDEgMjMsNFYxNkEyLDIgMCAwLDEgMjEsMThIMTRWMjBIMTZWMjJIOFYyMEgxMFYxOEgzQzEuODksMTggMSwxNy4xIDEsMTZWNEMxLDIuODkgMS44OSwyIDMsMkgyMU0xMi45Nyw5SDE2TDEzLjUzLDEwLjc2TDE0LjQ3LDEzLjY3TDEyLDExLjg3TDkuNTMsMTMuNjdMMTAuNDcsMTAuNzZMOCw5SDExLjAzTDEyLDZMMTIuOTcsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb29uRmlyc3RRdWFydGVyID0gXCJNMTIgMlYyMkExMCAxMCAwIDAgMCAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vb25GdWxsID0gXCJNMTIgMkExMCAxMCAwIDEgMSAyIDEyQTEwIDEwIDAgMCAxIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9vbkxhc3RRdWFydGVyID0gXCJNMTIgMkExMCAxMCAwIDAgMCAxMiAyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb29uTmV3ID0gXCJNMTIgMjBBOCA4IDAgMSAxIDIwIDEyQTggOCAwIDAgMSAxMiAyME0xMiAyQTEwIDEwIDAgMSAwIDIyIDEyQTEwIDEwIDAgMCAwIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9vbldhbmluZ0NyZXNjZW50ID0gXCJNMiAxMkExMCAxMCAwIDAgMCAxNSAyMS41NEExMCAxMCAwIDAgMSAxNSAyLjQ2QTEwIDEwIDAgMCAwIDIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9vbldhbmluZ0dpYmJvdXMgPSBcIk0xOCAxMkMxOCA3LjUgMTYuMDggMy4yNiAxMiAyQTEwIDEwIDAgMCAwIDEyIDIyQzE2LjA4IDIwLjc0IDE4IDE2LjUgMTggMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9vbldheGluZ0NyZXNjZW50ID0gXCJNMTIgMkE5LjkxIDkuOTEgMCAwIDAgOSAyLjQ2QTEwIDEwIDAgMCAxIDkgMjEuNTRBMTAgMTAgMCAxIDAgMTIgMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb29uV2F4aW5nR2liYm91cyA9IFwiTTYgMTJDNiA3LjUgNy45MyAzLjI2IDEyIDJBMTAgMTAgMCAwIDEgMTIgMjJDNy45MyAyMC43NCA2IDE2LjUgNiAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3BlZCA9IFwiTTE5IDE1QzE5LjU1IDE1IDIwIDE1LjQ1IDIwIDE2QzIwIDE2LjU1IDE5LjU1IDE3IDE5IDE3UzE4IDE2LjU1IDE4IDE2QzE4IDE1LjQ1IDE4LjQ1IDE1IDE5IDE1TTE5IDEzQzE3LjM0IDEzIDE2IDE0LjM0IDE2IDE2UzE3LjM0IDE5IDE5IDE5IDIyIDE3LjY2IDIyIDE2IDIwLjY2IDEzIDE5IDEzTTEwIDZINVY4SDEwVjZNMTcgNUgxNFY3SDE3VjkuNjVMMTMuNSAxNEgxMFY5SDZDMy43OSA5IDIgMTAuNzkgMiAxM1YxNkg0QzQgMTcuNjYgNS4zNCAxOSA3IDE5UzEwIDE3LjY2IDEwIDE2SDE0LjVMMTkgMTAuMzVWN0MxOSA1LjkgMTguMTEgNSAxNyA1TTcgMTdDNi40NSAxNyA2IDE2LjU1IDYgMTZIOEM4IDE2LjU1IDcuNTUgMTcgNyAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3BlZEVsZWN0cmljID0gXCJNMTkgNUMxOSAzLjkgMTguMSAzIDE3IDNIMTRWNUgxN1Y3LjY1TDEzLjUgMTJIMTBWN0g2QzMuNzkgNyAyIDguNzkgMiAxMVYxNEg0QzQgMTUuNjYgNS4zNCAxNyA3IDE3UzEwIDE1LjY2IDEwIDE0SDE0LjVMMTkgOC4zNVY1TTcgMTVDNi40NSAxNSA2IDE0LjU1IDYgMTRIOEM4IDE0LjU1IDcuNTUgMTUgNyAxNU01IDRIMTBWNkg1VjRNMTkgMTFDMTcuMzQgMTEgMTYgMTIuMzQgMTYgMTRTMTcuMzQgMTcgMTkgMTcgMjIgMTUuNjYgMjIgMTQgMjAuNjYgMTEgMTkgMTFNMTkgMTVDMTguNDUgMTUgMTggMTQuNTUgMTggMTRTMTguNDUgMTMgMTkgMTMgMjAgMTMuNDUgMjAgMTQgMTkuNTUgMTUgMTkgMTVNNyAyMEgxMVYxOEwxNyAyMUgxM1YyM0w3IDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vcGVkRWxlY3RyaWNPdXRsaW5lID0gXCJNMTkgNUMxOSAzLjkgMTguMSAzIDE3IDNIMTRWNUgxN1Y3LjY1TDEzLjUgMTJIMTBWN0g2QzMuNzkgNyAyIDguNzkgMiAxMVYxNEg0QzQgMTUuNjYgNS4zNCAxNyA3IDE3UzEwIDE1LjY2IDEwIDE0SDE0LjVMMTkgOC4zNVY1TTQgMTJWMTFDNCA5LjkgNC45IDkgNiA5SDhWMTJINE03IDE1QzYuNDUgMTUgNiAxNC41NSA2IDE0SDhDOCAxNC41NSA3LjU1IDE1IDcgMTVNNSA0SDEwVjZINVY0TTE5IDExQzE3LjM0IDExIDE2IDEyLjM0IDE2IDE0UzE3LjM0IDE3IDE5IDE3IDIyIDE1LjY2IDIyIDE0IDIwLjY2IDExIDE5IDExTTE5IDE1QzE4LjQ1IDE1IDE4IDE0LjU1IDE4IDE0UzE4LjQ1IDEzIDE5IDEzIDIwIDEzLjQ1IDIwIDE0IDE5LjU1IDE1IDE5IDE1TTcgMjBIMTFWMThMMTcgMjFIMTNWMjNMNyAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3BlZE91dGxpbmUgPSBcIk0xOSA3QzE5IDUuOSAxOC4xMSA1IDE3IDVIMTRWN0gxN1Y5LjY1TDEzLjUgMTRIMTBWOUg2QzMuNzkgOSAyIDEwLjc5IDIgMTNWMTZINEM0IDE3LjY2IDUuMzQgMTkgNyAxOVMxMCAxNy42NiAxMCAxNkgxNC41TDE5IDEwLjM1VjdNNyAxN0M2LjQ1IDE3IDYgMTYuNTUgNiAxNkg4QzggMTYuNTUgNy41NSAxNyA3IDE3TTggMTRINFYxM0M0IDExLjkgNC45IDExIDYgMTFIOFYxNE0xOSAxM0MxNy4zNCAxMyAxNiAxNC4zNCAxNiAxNlMxNy4zNCAxOSAxOSAxOSAyMiAxNy42NiAyMiAxNiAyMC42NiAxMyAxOSAxM00xOSAxN0MxOC40NSAxNyAxOCAxNi41NSAxOCAxNlMxOC40NSAxNSAxOSAxNSAyMCAxNS40NSAyMCAxNiAxOS41NSAxNyAxOSAxN00xMCA4SDVWNkgxMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vcmUgPSBcIk0xOSwxMy41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMkExLjUsMS41IDAgMCwxIDE5LDEwLjVBMS41LDEuNSAwIDAsMSAyMC41LDEyQTEuNSwxLjUgMCAwLDEgMTksMTMuNU0xNCwxMy41QTEuNSwxLjUgMCAwLDEgMTIuNSwxMkExLjUsMS41IDAgMCwxIDE0LDEwLjVBMS41LDEuNSAwIDAsMSAxNS41LDEyQTEuNSwxLjUgMCAwLDEgMTQsMTMuNU05LDEzLjVBMS41LDEuNSAwIDAsMSA3LjUsMTJBMS41LDEuNSAwIDAsMSA5LDEwLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyQTEuNSwxLjUgMCAwLDEgOSwxMy41TTIyLDNIN0M2LjMxLDMgNS43NywzLjM1IDUuNDEsMy44OEwwLDEyTDUuNDEsMjAuMTFDNS43NywyMC42NCA2LjM3LDIxIDcuMDYsMjFIMjJBMiwyIDAgMCwwIDI0LDE5VjVDMjQsMy44OSAyMy4xLDMgMjIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3RoZXJIZWFydCA9IFwiTTEyIDJDMTMuNjYgMiAxNSAzLjM0IDE1IDVTMTMuNjYgOCAxMiA4IDkgNi42NiA5IDUgMTAuMzQgMiAxMiAyTTIwIDE4TDE4IDEyLjU2QzE3LjY1IDExLjU3IDE3LjM0IDEwLjcxIDE2IDEwQzE0LjYzIDkuMyAxMy42MyA5IDEyIDlDMTAuMzkgOSA5LjM5IDkuMyA4IDEwQzYuNjggMTAuNzEgNi4zNyAxMS41NyA2IDEyLjU2TDQgMThDMy43NyAxOS4xMyA2LjM4IDIwLjQ0IDguMTMgMjEuMTlDOS4zNCAyMS43MiAxMC42NCAyMiAxMiAyMkMxMy4zOCAyMiAxNC42NyAyMS43MiAxNS44OSAyMS4xOUMxNy42NCAyMC40NCAyMC4yNSAxOS4xMyAyMCAxOE0xNS40MiAxNy41TDEyIDIxTDguNTggMTcuNUM4LjIyIDE3LjEyIDggMTYuNjEgOCAxNi4wNUM4IDE0LjkyIDguOSAxNCAxMCAxNEMxMC41NSAxNCAxMS4wNiAxNC4yMyAxMS40MiAxNC42MUwxMiAxNS4yTDEyLjU4IDE0LjZDMTIuOTQgMTQuMjMgMTMuNDUgMTQgMTQgMTRDMTUuMTEgMTQgMTYgMTQuOTIgMTYgMTYuMDVDMTYgMTYuNjEgMTUuNzggMTcuMTMgMTUuNDIgMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3RoZXJOdXJzZSA9IFwiTTEyLDJBMywzIDAgMCwxIDE1LDVBMywzIDAgMCwxIDEyLDhBMywzIDAgMCwxIDksNUEzLDMgMCAwLDEgMTIsMk0yMCwxOEwxOCwxMi41NkMxNy42NSwxMS41NyAxNy4zNCwxMC43MSAxNiwxMEMxNC42Miw5LjMgMTMuNjIsOSAxMiw5QzEwLjM3LDkgOS4zOCw5LjMgOCwxMEM2LjY2LDEwLjcxIDYuMzUsMTEuNTcgNiwxMi41Nkw0LDE4QzMuNjgsMTkuMzUgNi4zNiwyMC40NCA4LjExLDIxLjE5VjE5QzguMTEsMTguMDUgOC45NywxNy4zOCAxMC42OSwxNi45N0MxMC44NSwxNi45MyAxMSwxNi45MSAxMS4xMiwxNi44OUMxMC41OCwxNi4wNyAxMC4zNiwxNS4zNCAxMC4zNCwxNS4yOEwxMi4xMSwxNC42OEMxMi4xMiwxNC43IDEyLjYzLDE2LjI3IDEzLjg0LDE3LjA2QzE0LjA1LDE3LjEzIDE0LjI2LDE3LjIxIDE0LjQ2LDE3LjNDMTUuMjMsMTcuNjQgMTUuNjksMTguMDggMTUuODQsMTguNjFDMTQuNSwxOS4xNCAxMy4yMiwxOS40MSAxMiwxOS40MUwxMSwxOS4zMVYyMS45NEwxMiwyMkMxMy4zNywyMiAxNC42NywyMS43MiAxNS44OSwyMS4xOUMxNy42NCwyMC40NCAyMC4yNSwxOS4xMyAyMCwxOE0xNS41LDE3QTEuNSwxLjUgMCAwLDEgMTQsMTUuNUExLjUsMS41IDAgMCwxIDE1LjUsMTRBMS41LDEuNSAwIDAsMSAxNywxNS41QTEuNSwxLjUgMCAwLDEgMTUuNSwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3Rpb24gPSBcIk03IDEzSDNDMi40NSAxMyAyIDEyLjU1IDIgMTJTMi40NSAxMSAzIDExSDdDNy41NSAxMSA4IDExLjQ1IDggMTJTNy41NSAxMyA3IDEzTTYgOEM2IDcuNDUgNS41NSA3IDUgN0g0QzMuNDUgNyAzIDcuNDUgMyA4UzMuNDUgOSA0IDlINUM1LjU1IDkgNiA4LjU1IDYgOE0yMiAxMkMyMiAxNC43NiAxOS43NiAxNyAxNyAxN0g0QzMuNDUgMTcgMyAxNi41NSAzIDE2UzMuNDUgMTUgNCAxNUgxM0MxMi41OCAxNC40MiAxMi4yNSAxMy43NCAxMi4xIDEzSDEwQzkuNDUgMTMgOSAxMi41NSA5IDEyUzkuNDUgMTEgMTAgMTFIMTIuMUMxMi4yNSAxMC4yNiAxMi41OCA5LjU4IDEzIDlIOEM3LjQ1IDkgNyA4LjU1IDcgOFM3LjQ1IDcgOCA3SDE3QzE5Ljc2IDcgMjIgOS4yNCAyMiAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3Rpb25PdXRsaW5lID0gXCJNNyAxM0gzQzIuNDUgMTMgMiAxMi41NSAyIDEyUzIuNDUgMTEgMyAxMUg3QzcuNTUgMTEgOCAxMS40NSA4IDEyUzcuNTUgMTMgNyAxM002IDhDNiA3LjQ1IDUuNTUgNyA1IDdINEMzLjQ1IDcgMyA3LjQ1IDMgOFMzLjQ1IDkgNCA5SDVDNS41NSA5IDYgOC41NSA2IDhNMjIgMTJDMjIgMTQuNzYgMTkuNzYgMTcgMTcgMTdINEMzLjQ1IDE3IDMgMTYuNTUgMyAxNlMzLjQ1IDE1IDQgMTVIMTNDMTIuNTggMTQuNDIgMTIuMjUgMTMuNzQgMTIuMSAxM0gxMEM5LjQ1IDEzIDkgMTIuNTUgOSAxMlM5LjQ1IDExIDEwIDExSDEyLjFDMTIuMjUgMTAuMjYgMTIuNTggOS41OCAxMyA5SDhDNy40NSA5IDcgOC41NSA3IDhTNy40NSA3IDggN0gxN0MxOS43NiA3IDIyIDkuMjQgMjIgMTJNMjAgMTJDMjAgMTAuMzUgMTguNjUgOSAxNyA5UzE0IDEwLjM1IDE0IDEyQzE0IDEzLjY1IDE1LjM1IDE1IDE3IDE1UzIwIDEzLjY1IDIwIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdGlvblBhdXNlID0gXCJNMjIgMTJDMjIgNi40NiAxNy41NCAyIDEyIDJDMTAuODMgMiA5LjcgMi4xOSA4LjYyIDIuNTZMOS4zMiA0LjVDMTAuMTcgNC4xNiAxMS4wNiAzLjk3IDEyIDMuOTdDMTYuNDEgMy45NyAyMC4wMyA3LjU5IDIwLjAzIDEyQzIwLjAzIDE2LjQxIDE2LjQxIDIwLjAzIDEyIDIwLjAzQzcuNTkgMjAuMDMgMy45NyAxNi40MSAzLjk3IDEyQzMuOTcgMTEuMDYgNC4xNiAxMC4xMiA0LjUgOS4yOEwyLjU2IDguNjJDMi4xOSA5LjcgMiAxMC44MyAyIDEyQzIgMTcuNTQgNi40NiAyMiAxMiAyMkMxNy41NCAyMiAyMiAxNy41NCAyMiAxMk01LjQ3IDMuOTdDNi4zMiAzLjk3IDcgNC42OCA3IDUuNDdDNyA2LjMyIDYuMzIgNyA1LjQ3IDdDNC42OCA3IDMuOTcgNi4zMiAzLjk3IDUuNDdDMy45NyA0LjY4IDQuNjggMy45NyA1LjQ3IDMuOTdNMTggMTJDMTggOC42NyAxNS4zMyA2IDEyIDZDOC42NyA2IDYgOC42NyA2IDEyQzYgMTUuMzMgOC42NyAxOCAxMiAxOEMxNS4zMyAxOCAxOCAxNS4zMyAxOCAxMk0xMSA5VjE1SDlWOU0xNSA5VjE1SDEzVjlcIjtcclxuZXhwb3J0IHZhciBtZGlNb3Rpb25QYXVzZU91dGxpbmUgPSBcIk0yMiAxMkMyMiA2LjQ2IDE3LjU0IDIgMTIgMkMxMC44MyAyIDkuNyAyLjE5IDguNjIgMi41Nkw5LjMyIDQuNUMxMC4xNyA0LjE2IDExLjA2IDMuOTcgMTIgMy45N0MxNi40MSAzLjk3IDIwLjAzIDcuNTkgMjAuMDMgMTJDMjAuMDMgMTYuNDEgMTYuNDEgMjAuMDMgMTIgMjAuMDNDNy41OSAyMC4wMyAzLjk3IDE2LjQxIDMuOTcgMTJDMy45NyAxMS4wNiA0LjE2IDEwLjEyIDQuNSA5LjI4TDIuNTYgOC42MkMyLjE5IDkuNyAyIDEwLjgzIDIgMTJDMiAxNy41NCA2LjQ2IDIyIDEyIDIyQzE3LjU0IDIyIDIyIDE3LjU0IDIyIDEyTTUuNDcgN0M0LjY4IDcgMy45NyA2LjMyIDMuOTcgNS40N0MzLjk3IDQuNjggNC42OCAzLjk3IDUuNDcgMy45N0M2LjMyIDMuOTcgNyA0LjY4IDcgNS40N0M3IDYuMzIgNi4zMiA3IDUuNDcgN005IDlIMTFWMTVIOU0xMyA5SDE1VjE1SDEzXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW90aW9uUGxheSA9IFwiTTIyIDEyQzIyIDYuNDYgMTcuNTQgMiAxMiAyQzEwLjgzIDIgOS43IDIuMTkgOC42MiAyLjU2TDkuMzIgNC41QzEwLjE3IDQuMTYgMTEuMDYgMy45NyAxMiAzLjk3QzE2LjQxIDMuOTcgMjAuMDMgNy41OSAyMC4wMyAxMkMyMC4wMyAxNi40MSAxNi40MSAyMC4wMyAxMiAyMC4wM0M3LjU5IDIwLjAzIDMuOTcgMTYuNDEgMy45NyAxMkMzLjk3IDExLjA2IDQuMTYgMTAuMTIgNC41IDkuMjhMMi41NiA4LjYyQzIuMTkgOS43IDIgMTAuODMgMiAxMkMyIDE3LjU0IDYuNDYgMjIgMTIgMjJDMTcuNTQgMjIgMjIgMTcuNTQgMjIgMTJNNS40NyAzLjk3QzYuMzIgMy45NyA3IDQuNjggNyA1LjQ3QzcgNi4zMiA2LjMyIDcgNS40NyA3QzQuNjggNyAzLjk3IDYuMzIgMy45NyA1LjQ3QzMuOTcgNC42OCA0LjY4IDMuOTcgNS40NyAzLjk3TTE4IDEyQzE4IDguNjcgMTUuMzMgNiAxMiA2QzguNjcgNiA2IDguNjcgNiAxMkM2IDE1LjMzIDguNjcgMTggMTIgMThDMTUuMzMgMTggMTggMTUuMzMgMTggMTJNMTUgMTJMMTAgMTVWOVwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdGlvblBsYXlPdXRsaW5lID0gXCJNMTAgMTYuNUwxNiAxMkwxMCA3LjVNMjIgMTJDMjIgNi40NiAxNy41NCAyIDEyIDJDMTAuODMgMiA5LjcgMi4xOSA4LjYyIDIuNTZMOS4zMiA0LjVDMTAuMTcgNC4xNiAxMS4wNiAzLjk3IDEyIDMuOTdDMTYuNDEgMy45NyAyMC4wMyA3LjU5IDIwLjAzIDEyQzIwLjAzIDE2LjQxIDE2LjQxIDIwLjAzIDEyIDIwLjAzQzcuNTkgMjAuMDMgMy45NyAxNi40MSAzLjk3IDEyQzMuOTcgMTEuMDYgNC4xNiAxMC4xMiA0LjUgOS4yOEwyLjU2IDguNjJDMi4xOSA5LjcgMiAxMC44MyAyIDEyQzIgMTcuNTQgNi40NiAyMiAxMiAyMkMxNy41NCAyMiAyMiAxNy41NCAyMiAxMk01LjQ3IDMuOTdDNi4zMiAzLjk3IDcgNC42OCA3IDUuNDdDNyA2LjMyIDYuMzIgNyA1LjQ3IDdDNC42OCA3IDMuOTcgNi4zMiAzLjk3IDUuNDdDMy45NyA0LjY4IDQuNjggMy45NyA1LjQ3IDMuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW90aW9uU2Vuc29yID0gXCJNMTAsMC4yQzksMC4yIDguMiwxIDguMiwyQzguMiwzIDksMy44IDEwLDMuOEMxMSwzLjggMTEuOCwzIDExLjgsMkMxMS44LDEgMTEsMC4yIDEwLDAuMk0xNS42NywxQTcuMzMsNy4zMyAwIDAsMCAyMyw4LjMzVjdBNiw2IDAgMCwxIDE3LDFIMTUuNjdNMTguMzMsMUMxOC4zMywzLjU4IDIwLjQyLDUuNjcgMjMsNS42N1Y0LjMzQzIxLjE2LDQuMzMgMTkuNjcsMi44NCAxOS42NywxSDE4LjMzTTIxLDFBMiwyIDAgMCwwIDIzLDNWMUgyMU03LjkyLDQuMDNDNy43NSw0LjAzIDcuNTgsNC4wNiA3LjQyLDQuMTFMMiw1LjhWMTFIMy44VjcuMzNMNS45MSw2LjY3TDIsMjJIMy44TDYuNjcsMTMuODlMOSwxN1YyMkgxMC44VjE1LjU5TDguMzEsMTEuMDVMOS4wNCw4LjE4TDEwLjEyLDEwSDE1VjguMkgxMS4zOEw5LjM4LDQuODdDOS4wOCw0LjM3IDguNTQsNC4wMyA3LjkyLDQuMDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW90aW9uU2Vuc29yT2ZmID0gXCJNMTEuNCA4LjJIMTVWMTBIMTMuMkwxMS40IDguMk0xOS42NyAxSDE4LjMzQzE4LjMzIDMuNTggMjAuNDIgNS42NyAyMyA1LjY3VjQuMzNDMjEuMTYgNC4zMyAxOS42NyAyLjg0IDE5LjY3IDFNMjEgMUMyMSAyLjExIDIxLjkgMyAyMyAzVjFIMjFNMTcgMUgxNS42N0MxNS42NyA1LjA1IDE4Ljk1IDguMzMgMjMgOC4zM1Y3QzE5LjY5IDcgMTcgNC4zMSAxNyAxTTEwIDMuOEMxMSAzLjggMTEuOCAzIDExLjggMlMxMSAuMiAxMCAuMiA4LjIgMSA4LjIgMiA5IDMuOCAxMCAzLjhNMi4zOSAxLjczTDEuMTEgM0wzLjQ2IDUuMzVMMiA1LjhWMTFIMy44VjcuMzNMNS4wNSA2Ljk0TDUuNjggNy41N0wyIDIySDMuOEw2LjY3IDEzLjg5TDkgMTdWMjJIMTAuOFYxNS41OUw4LjMxIDExLjA1TDguNSAxMC4zN0wyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNNOS4zOCA0Ljg3QzkuMDggNC4zNyA4LjU0IDQuMDMgNy45MiA0LjAzQzcuNzUgNC4wMyA3LjU4IDQuMDYgNy40MiA0LjExTDcuMzQgNC4xNEwxMS4zNSA4LjE1TDkuMzggNC44N1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3RvcmJpa2UgPSBcIk0xNy40MiwxMEwxMy40MSw2SDlWOEgxMi41OUwxNC41OSwxMEg2LjVDNCwxMCAyLDEyIDIsMTQuNUMyLDE3IDQsMTkgNi41LDE5QzguNzIsMTkgMTAuNTYsMTcuMzggMTAuOTIsMTUuMjdMMTMuMDQsMTRDMTMsMTQuMTcgMTMsMTQuMzMgMTMsMTQuNUMxMywxNyAxNSwxOSAxNy41LDE5QzIwLDE5IDIyLDE3IDIyLDE0LjVDMjIsMTIgMjAsMTAgMTcuNSwxME04Ljg0LDE1LjI2QzguNSwxNi4yNyA3LjU4LDE3IDYuNDcsMTdDNS4wOSwxNyAzLjk3LDE1Ljg4IDMuOTcsMTQuNUMzLjk3LDEzLjEyIDUuMDksMTIgNi40NywxMkM3LjU5LDEyIDguNSwxMi43NCA4Ljg0LDEzLjc1SDZWMTUuMjVMOC44NCwxNS4yNk0xNy40NywxN0MxNi4wOSwxNyAxNC45NywxNS44OCAxNC45NywxNC41QzE0Ljk3LDEzLjEyIDE2LjA5LDEyIDE3LjQ3LDEyQTIuNSwyLjUgMCAwLDEgMTkuOTcsMTQuNUEyLjUsMi41IDAgMCwxIDE3LjQ3LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdG9yYmlrZUVsZWN0cmljID0gXCJNMTcuNDIgOEwxMy40MSA0SDlWNkgxMi41OUwxNC41OSA4SDYuNUM0IDggMiAxMCAyIDEyLjVTNCAxNyA2LjUgMTdDOC43MiAxNyAxMC41NiAxNS4zOCAxMC45MiAxMy4yN0wxMy4wNCAxMkMxMyAxMi4xNyAxMyAxMi4zMyAxMyAxMi41QzEzIDE1IDE1IDE3IDE3LjUgMTdTMjIgMTUgMjIgMTIuNSAyMCA4IDE3LjUgOE04Ljg0IDEzLjI2QzguNSAxNC4yNyA3LjU4IDE1IDYuNDcgMTVDNS4wOSAxNSAzLjk3IDEzLjg4IDMuOTcgMTIuNVM1LjA5IDEwIDYuNDcgMTBDNy41OSAxMCA4LjUgMTAuNzQgOC44NCAxMS43NUg2VjEzLjI1TDguODQgMTMuMjZNMTcuNDcgMTVDMTYuMDkgMTUgMTQuOTcgMTMuODggMTQuOTcgMTIuNVMxNi4wOSAxMCAxNy40NyAxMEMxOC44NSAxMCAxOS45NyAxMS4xMiAxOS45NyAxMi41UzE4Ljg1IDE1IDE3LjQ3IDE1TTExIDIwSDdMMTMgMjNWMjFIMTdMMTEgMThWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW91c2UgPSBcIk0xMSwxLjA3QzcuMDUsMS41NiA0LDQuOTIgNCw5SDExTTQsMTVBOCw4IDAgMCwwIDEyLDIzQTgsOCAwIDAsMCAyMCwxNVYxMUg0TTEzLDEuMDdWOUgyMEMyMCw0LjkyIDE2Ljk0LDEuNTYgMTMsMS4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3VzZUJsdWV0b290aCA9IFwiTTIwLDdIMjAuNUwyMy4zNSw5Ljg1TDIxLjIxLDEyTDIzLjM1LDE0LjE0TDIwLjUsMTdIMjBWMTMuMjFMMTcuNzEsMTUuNUwxNywxNC43OUwxOS43OSwxMkwxNyw5LjIxTDE3LjcxLDguNUwyMCwxMC43OVY3TTIxLDguOTFWMTAuNzlMMjEuOTQsOS44NUwyMSw4LjkxTTIxLDEzLjIxVjE1LjA4TDIxLjk0LDE0LjE0TDIxLDEzLjIxTTE1LDlWMTBIOVYyLjA3QzEyLjM5LDIuNTYgMTUsNS40NyAxNSw5TTEsMTBWOUMxLDUuNDcgMy42MSwyLjU2IDcsMi4wN1YxMEgxTTE1LDE1QTcsNyAwIDAsMSA4LDIyQTcsNyAwIDAsMSAxLDE1VjEySDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdXNlTW92ZURvd24gPSBcIk03IDlIMkMyIDYuMDQgNC4xNyAzLjU3IDcgMy4wOVY5TTIwIDdIMThWMTNIMTVMMTkgMTdMMjMgMTNIMjBWN005IDMuMDlWOUgxNEMxNCA2LjA0IDExLjgzIDMuNTcgOSAzLjA5TTIgMTVDMiAxOC4zIDQuNyAyMSA4IDIxUzE0IDE4LjMgMTQgMTVWMTFIMlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3VzZU1vdmVVcCA9IFwiTTcgOUgyQzIgNi4wNCA0LjE3IDMuNTcgNyAzLjA5VjlNMTggMTdIMjBWMTFIMjNMMTkgN0wxNSAxMUgxOFYxN005IDMuMDlWOUgxNEMxNCA2LjA0IDExLjgzIDMuNTcgOSAzLjA5TTIgMTVDMiAxOC4zIDQuNyAyMSA4IDIxUzE0IDE4LjMgMTQgMTVWMTFIMlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3VzZU1vdmVWZXJ0aWNhbCA9IFwiTTIwIDZIMjNMMTkgMkwxNSA2SDE4VjE4SDE1TDE5IDIyTDIzIDE4SDIwVjZNOSAzLjA5QzExLjgzIDMuNTcgMTQgNi4wNCAxNCA5SDlWMy4wOU0xNCAxMVYxNUMxNCAxOC4zIDExLjMgMjEgOCAyMVMyIDE4LjMgMiAxNVYxMUgxNE03IDlIMkMyIDYuMDQgNC4xNyAzLjU3IDcgMy4wOVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdXNlT2ZmID0gXCJNMiw1LjI3TDMuMjgsNEwyMCwyMC43MkwxOC43MywyMkwxNy41LDIwLjc5QzE2LjA4LDIyLjE2IDE0LjE0LDIzIDEyLDIzQTgsOCAwIDAsMSA0LDE1VjExSDcuNzNMNS43Myw5SDRDNCw4LjQ2IDQuMDUsNy45MyA0LjE1LDcuNDJMMiw1LjI3TTExLDEuMDdWOUgxMC44Mkw1Ljc5LDMuOTZDNy4wNSwyLjQgOC45LDEuMzMgMTEsMS4wN00yMCwxMVYxNUMyMCwxNS45NSAxOS44MywxNi44NiAxOS41MywxNy43MUwxMi44MiwxMUgyME0xMywxLjA3QzE2Ljk0LDEuNTYgMjAsNC45MiAyMCw5SDEzVjEuMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW91c2VWYXJpYW50ID0gXCJNMTQsN0gxMFYyLjFDMTIuMjgsMi41NiAxNCw0LjU4IDE0LDdNNCw3QzQsNC41OCA1LjcyLDIuNTYgOCwyLjFWN0g0TTE0LDEyQzE0LDE0LjQyIDEyLjI4LDE2LjQ0IDEwLDE2LjlWMThBMywzIDAgMCwwIDEzLDIxQTMsMyAwIDAsMCAxNiwxOFYxM0E0LDQgMCAwLDEgMjAsOUgyMkwyMSwxMEwyMiwxMUgyMEEyLDIgMCAwLDAgMTgsMTNIMThWMThBNSw1IDAgMCwxIDEzLDIzQTUsNSAwIDAsMSA4LDE4VjE2LjlDNS43MiwxNi40NCA0LDE0LjQyIDQsMTJWOUgxNFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3VzZVZhcmlhbnRPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIwLDIwLjcyTDE4LjczLDIyTDE3LjI5LDIwLjU2QzE2LjQyLDIyIDE0LjgyLDIzIDEzLDIzQTUsNSAwIDAsMSA4LDE4VjE2LjlDNS43MiwxNi40NCA0LDE0LjQyIDQsMTJWOUg1LjczTDIsNS4yN00xNCw3SDEwVjIuMUMxMi4yOCwyLjU2IDE0LDQuNTggMTQsN004LDIuMVY2LjE4TDUuMzgsMy41NUM2LjA3LDIuODMgNywyLjMxIDgsMi4xTTE0LDEyVjEyLjE3TDEwLjgyLDlIMTRWMTJNMTAsMTYuOVYxOEEzLDMgMCAwLDAgMTMsMjFDMTQuMjgsMjEgMTUuMzcsMjAuMiAxNS44LDE5LjA3TDEyLjQsMTUuNjdDMTEuNzQsMTYuMjggMTAuOTIsMTYuNzEgMTAsMTYuOU0xNiwxM0E0LDQgMCAwLDEgMjAsOUgyMkwyMSwxMEwyMiwxMUgyMEEyLDIgMCAwLDAgMTgsMTNWMTYuMThMMTYsMTQuMThWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92ZVJlc2l6ZSA9IFwiTTksMVYySDEwVjVIOVY2SDEyVjVIMTFWMkgxMlYxTTksN0M3Ljg5LDcgNyw3Ljg5IDcsOVYyMUM3LDIyLjExIDcuODksMjMgOSwyM0gyMUMyMi4xMSwyMyAyMywyMi4xMSAyMywyMVY5QzIzLDcuODkgMjIuMTEsNyAyMSw3TTEsOVYxMkgyVjExSDVWMTJINlY5SDVWMTBIMlY5TTksOUgyMVYyMUg5TTE0LDEwVjExSDE1VjE2SDExVjE1SDEwVjE4SDExVjE3SDE1VjE5SDE0VjIwSDE3VjE5SDE2VjE3SDE5VjE4SDIwVjE1SDE5VjE2SDE2VjExSDE3VjEwXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92ZVJlc2l6ZVZhcmlhbnQgPSBcIk0xLjg4LDAuNDZMMC40NiwxLjg4TDUuNTksN0gyVjlIOVYySDdWNS41OU0xMSw3VjlIMjFWMTVIMjNWOUEyLDIgMCAwLDAgMjEsN003LDExVjIxQTIsMiAwIDAsMCA5LDIzSDE1VjIxSDlWMTFNMTUuODgsMTQuNDZMMTQuNDYsMTUuODhMMTkuNiwyMUgxN1YyM0gyM1YxN0gyMVYxOS41OVwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllID0gXCJNMTgsNEwyMCw4SDE3TDE1LDRIMTNMMTUsOEgxMkwxMCw0SDhMMTAsOEg3TDUsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjRIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVDaGVjayA9IFwiTTEzIDE5QzEzIDE5LjM0IDEzLjA0IDE5LjY3IDEzLjA5IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMTMuODFDMjEuMTIgMTMuMyAyMC4xIDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTIxLjM0IDE1Ljg0TDE3Ljc1IDE5LjQzTDE2LjE2IDE3Ljg0TDE1IDE5TDE3Ljc1IDIyTDIyLjUgMTcuMjVMMjEuMzQgMTUuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVDaGVja091dGxpbmUgPSBcIk0xMyAxOUMxMyAxOS4zNCAxMy4wNCAxOS42NyAxMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzLjgxQzIxLjM5IDEzLjQ2IDIwLjcyIDEzLjIyIDIwIDEzLjA5VjEwSDUuNzZMNCA2LjQ3VjE4SDEzLjA5QzEzLjA0IDE4LjMzIDEzIDE4LjY2IDEzIDE5TTIxLjM0IDE1Ljg0TDE3Ljc1IDE5LjQzTDE2LjE2IDE3Ljg0TDE1IDE5TDE3Ljc1IDIyTDIyLjUgMTcuMjVMMjEuMzQgMTUuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVDb2cgPSBcIk0xMiAxOUMxMiAxOS4zNCAxMi4wMyAxOS42NyAxMi4wOCAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEyLjY4QzIxLjA5IDEyLjI1IDIwLjA4IDEyIDE5IDEyQzE1LjEzIDEyIDEyIDE1LjEzIDEyIDE5TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllQ29nT3V0bGluZSA9IFwiTTEyIDE5QzEyIDE5LjM0IDEyLjAzIDE5LjY3IDEyLjA4IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMTIuNjhDMjEuMzggMTIuMzkgMjAuNzEgMTIuMTggMjAgMTIuMDhWMTBINS43Nkw0IDYuNDdWMThIMTIuMDhDMTIuMDMgMTguMzMgMTIgMTguNjYgMTIgMTlNMjMuOCAyMC40QzIzLjkgMjAuNCAyMy45IDIwLjUgMjMuOCAyMC42TDIyLjggMjIuM0MyMi43IDIyLjQgMjIuNiAyMi40IDIyLjUgMjIuNEwyMS4zIDIyQzIxIDIyLjIgMjAuOCAyMi4zIDIwLjUgMjIuNUwyMC4zIDIzLjhDMjAuMyAyMy45IDIwLjIgMjQgMjAuMSAyNEgxOC4xQzE4IDI0IDE3LjkgMjMuOSAxNy44IDIzLjhMMTcuNiAyMi41QzE3LjMgMjIuNCAxNyAyMi4yIDE2LjggMjJMMTUuNiAyMi41QzE1LjUgMjIuNSAxNS40IDIyLjUgMTUuMyAyMi40TDE0LjMgMjAuN0MxNC4yIDIwLjYgMTQuMyAyMC41IDE0LjQgMjAuNEwxNS41IDE5LjZWMTguNkwxNC40IDE3LjhDMTQuMyAxNy43IDE0LjMgMTcuNiAxNC4zIDE3LjVMMTUuMyAxNS44QzE1LjQgMTUuNyAxNS41IDE1LjcgMTUuNiAxNS43TDE2LjggMTYuMkMxNy4xIDE2IDE3LjMgMTUuOSAxNy42IDE1LjdMMTcuOCAxNC40QzE3LjggMTQuMyAxNy45IDE0LjIgMTguMSAxNC4ySDIwLjFDMjAuMiAxNC4yIDIwLjMgMTQuMyAyMC4zIDE0LjRMMjAuNSAxNS43QzIwLjggMTUuOCAyMS4xIDE2IDIxLjQgMTYuMkwyMi42IDE1LjdDMjIuNyAxNS43IDIyLjkgMTUuNyAyMi45IDE1LjhMMjMuOSAxNy41QzI0IDE3LjYgMjMuOSAxNy43IDIzLjggMTcuOEwyMi43IDE4LjZWMTkuNkwyMy44IDIwLjRNMjAuNSAxOUMyMC41IDE4LjIgMTkuOCAxNy41IDE5IDE3LjVTMTcuNSAxOC4yIDE3LjUgMTkgMTguMiAyMC41IDE5IDIwLjUgMjAuNSAxOS44IDIwLjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVFZGl0ID0gXCJNMjEuMDQgMTEuMTNDMjAuOSAxMS4xMyAyMC43NiAxMS4xOSAyMC42NSAxMS4zTDE5LjY1IDEyLjNMMjEuNyAxNC4zNUwyMi43IDEzLjM1QzIyLjkyIDEzLjE0IDIyLjkyIDEyLjc5IDIyLjcgMTIuNThMMjEuNDIgMTEuM0MyMS4zMSAxMS4xOSAyMS4xOCAxMS4xMyAyMS4wNCAxMS4xM00xOS4wNyAxMi44OEwxMyAxOC45NFYyMUgxNS4wNkwyMS4xMiAxNC45M0wxOS4wNyAxMi44OE0xMSAyMEgzQzEuOSAyMCAxIDE5LjExIDEgMThWNkMxIDQuODkgMS45IDQgMyA0SDRMNiA4SDlMNyA0SDlMMTEgOEgxNEwxMiA0SDE0TDE2IDhIMTlMMTcgNEgyMVY4LjEyTDExIDE4LjExVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllRWRpdE91dGxpbmUgPSBcIk0yMSA0VjguMTJMMTkuMTIgMTBINC43NkwzIDYuNDdWMThIMTFWMjBIM0MxLjkgMjAgMSAxOS4xMSAxIDE4VjZDMSA0Ljg5IDEuOSA0IDMgNEg0TDYgOEg5TDcgNEg5TDExIDhIMTRMMTIgNEgxNEwxNiA4SDE5TDE3IDRIMjFNMjEuNDIgMTIuM0wyMi43IDEzLjU4QzIyLjkyIDEzLjc5IDIyLjkyIDE0LjE0IDIyLjcgMTQuMzVMMjEuNyAxNS4zNUwxOS42NSAxMy4zTDIwLjY1IDEyLjNDMjAuNzYgMTIuMTkgMjAuOSAxMi4xMyAyMS4wNCAxMi4xM0MyMS4xOCAxMi4xMyAyMS4zMSAxMi4xOSAyMS40MiAxMi4zTTIxLjEyIDE1LjkzTDE1LjA2IDIySDEzVjE5Ljk0TDE5LjA3IDEzLjg4TDIxLjEyIDE1LjkzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllRmlsdGVyID0gXCJNMTggNEwyMCA3SDE3TDE1IDRIMTNMMTUgN0gxMkwxMCA0SDhMMTAgN0g3TDUgNEg0QzIuOSA0IDIgNC45IDIgNkwyIDE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWNEgxOE0xMS4yNSAxNS4yNUwxMCAxOEw4Ljc1IDE1LjI1TDYgMTRMOC43NSAxMi43NUwxMCAxMEwxMS4yNSAxMi43NUwxNCAxNEwxMS4yNSAxNS4yNU0xNi45NCAxMS45NEwxNiAxNEwxNS4wNiAxMS45NEwxMyAxMUwxNS4wNiAxMC4wNkwxNiA4TDE2Ljk0IDEwLjA2TDE5IDExTDE2Ljk0IDExLjk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllRmlsdGVyT3V0bGluZSA9IFwiTTEwIDExTDkuMDYgMTMuMDZMNyAxNEw5LjA2IDE0Ljk0TDEwIDE3TDEwLjk0IDE0Ljk0TDEzIDE0TDEwLjk0IDEzLjA2TTE4IDRMMjAgOEgxN0wxNSA0SDEzTDE1IDhIMTJMMTAgNEg4TDEwIDhIN0w1IDRINEMyLjkxIDQgMiA0LjkgMiA2TDIgMThDMiAxOS4xIDIuOTEgMjAgNCAyMEgyMEMyMS4xMSAyMCAyMiAxOS4xIDIyIDE4VjRIMThNMjAgMThINFY2LjQ3TDUuNzcgMTBIMTZMMTUuMzcgMTEuMzdMMTQgMTJMMTUuMzcgMTIuNjNMMTYgMTRMMTYuNjMgMTIuNjNMMTggMTJMMTYuNjMgMTEuMzdMMTYgMTBIMjBWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVNaW51cyA9IFwiTTEzIDE5QzEzIDE5LjM0IDEzLjA0IDE5LjY3IDEzLjA5IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMTMuODFDMjEuMTIgMTMuMyAyMC4xIDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllTWludXNPdXRsaW5lID0gXCJNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMlYxMy44MUMyMS4zOSAxMy40NiAyMC43MiAxMy4yMiAyMCAxMy4wOVYxMEg1Ljc2TDQgNi40N1YxOEgxMy4wOUMxMy4wNCAxOC4zMyAxMyAxOC42NiAxMyAxOU0xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9mZiA9IFwiTTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE4LjExIDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNS40MiAyLjI1IDQuOSAyLjY1IDQuNTRMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0yMS44OCAxOC42OEMyMS45NiAxOC40NyAyMiAxOC4yNCAyMiAxOFY0SDE4TDIwIDhIMTdMMTUgNEgxM0wxNSA4SDEyTDEwIDRIOEw4LjggNS42TDIxLjg4IDE4LjY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT2ZmT3V0bGluZSA9IFwiTTIuMzkgMS43M0wxLjExIDNMMi42NSA0LjU0QzIuMjUgNC45IDIgNS40MiAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNNNCAxOFY2LjQ3TDUuNzYgMTBIOC4xMUwxNi4xMSAxOEg0TTguOCA1LjZMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMThDMjIgMTguMjQgMjEuOTYgMTguNDcgMjEuODggMTguNjhMMjAgMTYuOFYxMEgxMy4yTDguOCA1LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPcGVuID0gXCJNMjAuODQgMi4xOEwxNi45MSAyLjk2TDE5LjY1IDYuNUwyMS42MiA2LjFMMjAuODQgMi4xOE0xMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TDEzLjk3IDMuNTRNOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVMOS4wNyA0LjVNNC4xNiA1LjVMMy4xOCA1LjY5QTIgMiAwIDAgMCAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0yIDEwVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMjBDMjEuMTEgMjIgMjIgMjEuMTEgMjIgMjBWMTBIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5DaGVjayA9IFwiTTE5LjY1IDYuNUwxNi45MSAyLjk2TDIwLjg0IDIuMThMMjEuNjIgNi4xTDE5LjY1IDYuNU0xNi43MSA3LjA3TDEzLjk3IDMuNTRMMTIgMy45M0wxNC43NSA3LjQ2TDE2LjcxIDcuMDdNMTkgMTNDMjAuMSAxMyAyMS4xMiAxMy4zIDIyIDEzLjgxVjEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNMTEuODEgOC4wNUw5LjA3IDQuNUw3LjEgNC45MUw5Ljg1IDguNDRMMTEuODEgOC4wNU00LjE2IDUuNUwzLjE4IDUuNjlDMi4xIDUuOTEgMS40IDYuOTYgMS42MSA4LjA0TDIgMTBMNi45IDkuMDNMNC4xNiA1LjVNMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNMMTYuMTYgMTcuODRMMTUgMTlMMTcuNzUgMjJMMjIuNSAxNy4yNUwyMS4zNCAxNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5DaGVja091dGxpbmUgPSBcIk0xNC43NSA3LjQ2TDEyIDMuOTNMMTMuOTcgMy41NEwxNi43MSA3LjA3TDE0Ljc1IDcuNDZNMjEuNjIgNi4xTDIwLjg0IDIuMThMMTYuOTEgMi45NkwxOS42NSA2LjVMMjEuNjIgNi4xTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTQgMjBWMTJIMjBWMTMuMDlDMjAuNzIgMTMuMjEgMjEuMzkgMTMuNDYgMjIgMTMuODFWMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDEzLjgxQzEzLjQ2IDIxLjM5IDEzLjIyIDIwLjcyIDEzLjA5IDIwSDRNMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNMMTYuMTYgMTcuODRMMTUgMTlMMTcuNzUgMjJMMjIuNSAxNy4yNUwyMS4zNCAxNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5Db2cgPSBcIk0xNC43NSA3LjQ2TDEyIDMuOTNMMTMuOTcgMy41NEwxNi43MSA3LjA3TDE0Ljc1IDcuNDZNMjEuNjIgNi4xTDIwLjg0IDIuMThMMTYuOTEgMi45NkwxOS42NSA2LjVMMjEuNjIgNi4xTTE5IDEyQzIwLjA4IDEyIDIxLjA5IDEyLjI1IDIyIDEyLjY4VjEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMi42OEMxMi4yNSAyMS4wOSAxMiAyMC4wOCAxMiAxOUMxMiAxNS4xMyAxNS4xMyAxMiAxOSAxMk0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45MSAxLjQgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0yMy44IDIwLjRDMjMuOSAyMC40IDIzLjkgMjAuNSAyMy44IDIwLjZMMjIuOCAyMi4zQzIyLjcgMjIuNCAyMi42IDIyLjQgMjIuNSAyMi40TDIxLjMgMjJDMjEgMjIuMiAyMC44IDIyLjMgMjAuNSAyMi41TDIwLjMgMjMuOEMyMC4zIDIzLjkgMjAuMiAyNCAyMC4xIDI0SDE4LjFDMTggMjQgMTcuOSAyMy45IDE3LjggMjMuOEwxNy42IDIyLjVDMTcuMyAyMi40IDE3IDIyLjIgMTYuOCAyMkwxNS42IDIyLjVDMTUuNSAyMi41IDE1LjQgMjIuNSAxNS4zIDIyLjRMMTQuMyAyMC43QzE0LjIgMjAuNiAxNC4zIDIwLjUgMTQuNCAyMC40TDE1LjUgMTkuNlYxOC42TDE0LjQgMTcuOEMxNC4zIDE3LjcgMTQuMyAxNy42IDE0LjMgMTcuNUwxNS4zIDE1LjhDMTUuNCAxNS43IDE1LjUgMTUuNyAxNS42IDE1LjdMMTYuOCAxNi4yQzE3LjEgMTYgMTcuMyAxNS45IDE3LjYgMTUuN0wxNy44IDE0LjRDMTcuOCAxNC4zIDE3LjkgMTQuMiAxOC4xIDE0LjJIMjAuMUMyMC4yIDE0LjIgMjAuMyAxNC4zIDIwLjMgMTQuNEwyMC41IDE1LjdDMjAuOCAxNS44IDIxLjEgMTYgMjEuNCAxNi4yTDIyLjYgMTUuN0MyMi43IDE1LjcgMjIuOSAxNS43IDIyLjkgMTUuOEwyMy45IDE3LjVDMjQgMTcuNiAyMy45IDE3LjcgMjMuOCAxNy44TDIyLjcgMTguNlYxOS42TDIzLjggMjAuNE0yMC41IDE5QzIwLjUgMTguMiAxOS44IDE3LjUgMTkgMTcuNVMxNy41IDE4LjIgMTcuNSAxOSAxOC4yIDIwLjUgMTkgMjAuNSAyMC41IDE5LjggMjAuNSAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5Db2dPdXRsaW5lID0gXCJNMTQuNzUgNy40NkwxMiAzLjkzTDEzLjk3IDMuNTRMMTYuNzEgNy4wN0wxNC43NSA3LjQ2TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45IDEuMzkgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU00IDIwVjEySDIwVjEyLjA4QzIwLjcxIDEyLjE4IDIxLjM4IDEyLjM5IDIyIDEyLjY5VjEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMi42OEMxMi4zOSAyMS4zOCAxMi4xOCAyMC43MSAxMi4wOCAyMEg0TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlbkVkaXQgPSBcIk0xOS42NSA2LjVMMTYuOTEgMi45NkwyMC44NCAyLjE4TDIxLjYyIDYuMUwxOS42NSA2LjVNMTYuNzEgNy4wN0wxMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TTIgMTBWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMVYxOS4xM0wyMC4xMyAxMEgyTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkxIDEuNCA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTEzIDE5Ljk2VjIySDE1LjA0TDIxLjE3IDE1Ljg4TDE5LjEzIDEzLjgzTDEzIDE5Ljk2TTIyLjg1IDEzLjQ3TDIxLjUzIDEyLjE1QzIxLjMzIDExLjk1IDIxIDExLjk1IDIwLjgxIDEyLjE1TDE5LjgzIDEzLjEzTDIxLjg3IDE1LjE3TDIyLjg1IDE0LjE5QzIzLjA1IDE0IDIzLjA1IDEzLjY3IDIyLjg1IDEzLjQ3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlbkVkaXRPdXRsaW5lID0gXCJNMTQuNzUgNy40NkwxMiAzLjkzTDEzLjk3IDMuNTRMMTYuNzEgNy4wN0wxNC43NSA3LjQ2TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU00IDEySDE4LjEzTDIwLjEzIDEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMVYyMEg0VjEyTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTEzIDE5Ljk2VjIySDE1LjA0TDIxLjE3IDE1Ljg4TDE5LjEzIDEzLjgzTDEzIDE5Ljk2TTIyLjg1IDEzLjQ3TDIxLjUzIDEyLjE1QzIxLjMzIDExLjk1IDIxIDExLjk1IDIwLjgxIDEyLjE1TDE5LjgzIDEzLjEzTDIxLjg3IDE1LjE3TDIyLjg1IDE0LjE5QzIzLjA1IDE0IDIzLjA1IDEzLjY3IDIyLjg1IDEzLjQ3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3Blbk1pbnVzID0gXCJNMTQuNzUgNy40NkwxMiAzLjkzTDEzLjk3IDMuNTRMMTYuNzEgNy4wN0wxNC43NSA3LjQ2TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45MSAxLjQgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0xOSAxM0MyMC4xIDEzIDIxLjEyIDEzLjMgMjIgMTMuODFWMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMSAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM00xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5NaW51c091dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTBIMjJWMTMuODFDMjEuMzkgMTMuNDYgMjAuNzIgMTMuMjIgMjAgMTMuMDlWMTJINFYyMEgxMy4wOU0yMS42MiA2LjFMMjAuODQgMi4xOEwxNi45MSAyLjk2TDE5LjY1IDYuNUwyMS42MiA2LjFNMTYuNzEgNy4wN0wxMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45IDEuMzkgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3Blbk9mZiA9IFwiTTEzLjIgMTBIMjJWMTguOEwxMy4yIDEwTTIxLjYgNi4xTDIwLjggMi4yTDE2LjkgM0wxOS42IDYuNUwyMS42IDYuMU0xMS44IDhMOS4xIDQuNUw3LjkgNC43TDExLjMgOC4xTDExLjggOE0yLjQgMS43TDEuMSAzTDMuNyA1LjZMMy4yIDUuN0MyLjEgNS45IDEuNCA3IDEuNiA4TDIgMTBMNy4xIDlMOC4xIDEwSDJWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDIwLjFMMjAuOCAyMi43TDIyLjEgMjEuNEwyLjQgMS43TTE2LjcgNy4xTDE0IDMuNUwxMiAzLjlMMTQuOCA3LjRMMTYuNyA3LjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPcGVuT2ZmT3V0bGluZSA9IFwiTTE5LjcgNi41TDE2LjkgM0wyMC44IDIuMkwyMS42IDYuMUwxOS43IDYuNU0yMi4xIDIxLjVMMjAuOCAyMi44TDIwLjEgMjJINEMyLjkgMjIgMiAyMS4xIDIgMjBWMTBIOC4xTDcuMSA5TDIgMTBMMS42IDhDMS40IDcgMi4xIDUuOSAzLjIgNS43TDMuNyA1LjZMMS4xIDNMMi40IDEuN0wyMi4xIDIxLjVNMTguMSAyMEwxMC4xIDEySDRWMjBIMTguMU0yMiAxOC44VjEwSDEzLjJMMTUuMiAxMkgyMFYxNi44TDIyIDE4LjhNMTYuNyA3LjFMMTQgMy41TDEyIDMuOUwxNC44IDcuNEwxNi43IDcuMU0xMS44IDhMOS4xIDQuNUw3LjkgNC43TDExLjMgOC4xTDExLjggOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5PdXRsaW5lID0gXCJNMjAuODQgMi4xOEwxNi45MSAyLjk2TDE5LjY1IDYuNUwyMS42MiA2LjFMMjAuODQgMi4xOE0xMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TDEzLjk3IDMuNTRNOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVMOS4wNyA0LjVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTIwIDEyVjIwSDRWMTJIMjBNMjIgMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDIwQzIxLjExIDIyIDIyIDIxLjExIDIyIDIwVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblBsYXkgPSBcIk0xNC43NSA3LjQ2TDEyIDMuOTNMMTMuOTcgMy41NEwxNi43MSA3LjA3TDE0Ljc1IDcuNDZNMjEuNjIgNi4xTDIwLjg0IDIuMThMMTYuOTEgMi45NkwxOS42NSA2LjVMMjEuNjIgNi4xTTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45MSAxLjQgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTIgMTBWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNDMjAuMSAxMyAyMS4xMiAxMy4zIDIyIDEzLjgxVjEwSDJNMTcgMjJMMjIgMTlMMTcgMTZWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPcGVuUGxheU91dGxpbmUgPSBcIk0yMiAxMFYxMy44MUMyMS4zOSAxMy40NiAyMC43MiAxMy4yMiAyMCAxMy4wOVYxMkg0VjIwSDEzLjA5QzEzLjIxIDIwLjcyIDEzLjQ2IDIxLjM5IDEzLjgxIDIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFYxMEgyMk0xNi43MSA3LjA3TDEzLjk3IDMuNTRMMTIgMy45M0wxNC43NSA3LjQ2TDE2LjcxIDcuMDdNMjEuNjIgNi4xTDIwLjg0IDIuMThMMTYuOTEgMi45NkwxOS42NSA2LjVMMjEuNjIgNi4xTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTE3IDIyTDIyIDE5TDE3IDE2VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblBsdXMgPSBcIk0xOS42NSA2LjVMMTYuOTEgMi45NkwyMC44NCAyLjE4TDIxLjYyIDYuMUwxOS42NSA2LjVNMTYuNzEgNy4wN0wxMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TTE5IDEzQzIwLjEgMTMgMjEuMTIgMTMuMyAyMiAxMy44MVYxMEgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTMuODFDMTMuMyAyMS4xMiAxMyAyMC4xIDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkxIDEuNCA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblBsdXNPdXRsaW5lID0gXCJNMTQuNzUgNy40NkwxMiAzLjkzTDEzLjk3IDMuNTRMMTYuNzEgNy4wN0wxNC43NSA3LjQ2TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU00IDIwVjEySDIwVjEzLjA5QzIwLjcyIDEzLjIxIDIxLjM5IDEzLjQ2IDIyIDEzLjgxVjEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMy44MUMxMy40NiAyMS4zOSAxMy4yMiAyMC43MiAxMy4wOSAyMEg0TTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblJlbW92ZSA9IFwiTTE0Ljc1IDcuNDZMMTIgMy45M0wxMy45NyAzLjU0TDE2LjcxIDcuMDdMMTQuNzUgNy40Nk0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU0xOSAxM0MyMC4xIDEzIDIxLjEyIDEzLjMgMjIgMTMuODFWMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMSAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM000LjE2IDUuNUwzLjE4IDUuNjlDMi4xIDUuOTEgMS40IDYuOTYgMS42MSA4LjA0TDIgMTBMNi45IDkuMDNMNC4xNiA1LjVNMjIuNTQgMTYuODhMMjEuMTIgMTUuNDdMMTkgMTcuNTlMMTYuODggMTUuNDdMMTUuNDcgMTYuODhMMTcuNTkgMTlMMTUuNDcgMjEuMTJMMTYuODggMjIuNTRMMTkgMjAuNDFMMjEuMTIgMjIuNTRMMjIuNTQgMjEuMTJMMjAuNDEgMTlMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPcGVuUmVtb3ZlT3V0bGluZSA9IFwiTTE5LjY1IDYuNUwxNi45MSAyLjk2TDIwLjg0IDIuMThMMjEuNjIgNi4xTDE5LjY1IDYuNU0xNi43MSA3LjA3TDEzLjk3IDMuNTRMMTIgMy45M0wxNC43NSA3LjQ2TDE2LjcxIDcuMDdNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNCAyMFYxMkgyMFYxMy4wOUMyMC43MiAxMy4yMSAyMS4zOSAxMy40NiAyMiAxMy44MVYxMEgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTMuODFDMTMuNDYgMjEuMzkgMTMuMjIgMjAuNzIgMTMuMDkgMjBINE0yMi41NCAxNi44OEwyMS4xMiAxNS40N0wxOSAxNy41OUwxNi44OCAxNS40N0wxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5TZXR0aW5ncyA9IFwiTTE0Ljc1IDUuNDZMMTIgMS45M0wxMy45NyAxLjU0TDE2LjcxIDUuMDdMMTQuNzUgNS40Nk0yMS42MiA0LjFMMjAuODQgLjE4TDE2LjkxIC45NkwxOS42NSA0LjVMMjEuNjIgNC4xTTExLjgxIDYuMDVMOS4wNyAyLjVMNy4xIDIuOTFMOS44NSA2LjQ0TDExLjgxIDYuMDVNMiA4VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWOEgyTTQuMTYgMy41TDMuMTggMy42OUMyLjEgMy45MSAxLjQgNC45NiAxLjYxIDYuMDRMMiA4TDYuOSA3LjAzTDQuMTYgMy41TTExIDI0SDEzVjIySDExVjI0TTcgMjRIOVYyMkg3VjI0TTE1IDI0SDE3VjIySDE1VjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblNldHRpbmdzT3V0bGluZSA9IFwiTTE5LjY1IDQuNUwxNi45MSAuOTZMMjAuODQgLjE4TDIxLjYyIDQuMUwxOS42NSA0LjVNMTYuNzEgNS4wN0wxMy45NyAxLjU0TDEyIDEuOTNMMTQuNzUgNS40NkwxNi43MSA1LjA3TTExLjgxIDYuMDVMOS4wNyAyLjVMNy4xIDIuOTFMOS44NSA2LjQ0TDExLjgxIDYuMDVNNC4xNiAzLjVMMy4xOCAzLjY5QzIuMSAzLjkgMS4zOSA0Ljk2IDEuNjEgNi4wNEwyIDhMNi45IDcuMDNMNC4xNiAzLjVNMjIgOFYxOEMyMiAxOS4xMSAyMS4xMSAyMCAyMCAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWOEgyMk0yMCAxMEg0VjE4SDIwVjEwTTcgMjRIOVYyMkg3VjI0TTE1IDI0SDE3VjIySDE1VjI0TTExIDI0SDEzVjIySDExVjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblN0YXIgPSBcIk0xOS42NSA2LjVMMTYuOTEgMi45NkwyMC44NCAyLjE4TDIxLjYyIDYuMUwxOS42NSA2LjVNMTYuNzEgNy4wN0wxMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TTE5IDEzQzIwLjEgMTMgMjEuMTIgMTMuMyAyMiAxMy44MVYxMEgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTMuODFDMTMuMyAyMS4xMiAxMyAyMC4xIDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzTTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45MSAxLjQgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTIzIDE3Ljg5TDIwLjExIDE3LjY0TDE5IDE1TDE3Ljg3IDE3LjY0TDE1IDE3Ljg5TDE3LjE4IDE5Ljc3TDE2LjUgMjIuNThMMTkgMjEuMDlMMjEuNDUgMjIuNThMMjAuOCAxOS43N0wyMyAxNy44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5TdGFyT3V0bGluZSA9IFwiTTE5LjY1IDYuNUwxNi45MSAyLjk2TDIwLjg0IDIuMThMMjEuNjIgNi4xTDE5LjY1IDYuNU0xNi43MSA3LjA3TDEzLjk3IDMuNTRMMTIgMy45M0wxNC43NSA3LjQ2TDE2LjcxIDcuMDdNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNCAyMFYxMkgyMFYxMy4wOUMyMC43MiAxMy4yMSAyMS4zOSAxMy40NiAyMiAxMy44MVYxMEgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTMuODFDMTMuNDYgMjEuMzkgMTMuMjIgMjAuNzIgMTMuMDkgMjBINE0yMyAxNy44OUwyMC4xMSAxNy42NEwxOSAxNUwxNy44NyAxNy42NEwxNSAxNy44OUwxNy4xOCAxOS43N0wxNi41IDIyLjU4TDE5IDIxLjA5TDIxLjQ1IDIyLjU4TDIwLjggMTkuNzdMMjMgMTcuODlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPdXRsaW5lID0gXCJNNS43NiwxMEgyMFYxOEg0VjYuNDdNMjIsNEgxOEwyMCw4SDE3TDE1LDRIMTNMMTUsOEgxMkwxMCw0SDhMMTAsOEg3TDUsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVQbGF5ID0gXCJNMjIgNFYxMy44MUMyMS4xMiAxMy4zIDIwLjEgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMk0xNyAyMkwyMiAxOUwxNyAxNlYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZVBsYXlPdXRsaW5lID0gXCJNMjIgNFYxMy44MUMyMS4zOSAxMy40NiAyMC43MiAxMy4yMiAyMCAxMy4wOVYxMEg1Ljc2TDQgNi40N1YxOEgxMy4wOUMxMy4wNCAxOC4zMyAxMyAxOC42NiAxMyAxOUMxMyAxOS4zNCAxMy4wNCAxOS42NyAxMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyTTE3IDIyTDIyIDE5TDE3IDE2VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllUGx1cyA9IFwiTTEzIDE5QzEzIDE5LjM0IDEzLjA0IDE5LjY3IDEzLjA5IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMTMuODFDMjEuMTIgMTMuMyAyMC4xIDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllUGx1c091dGxpbmUgPSBcIk0xMyAxOUMxMyAxOS4zNCAxMy4wNCAxOS42NyAxMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzLjgxQzIxLjM5IDEzLjQ2IDIwLjcyIDEzLjIyIDIwIDEzLjA5VjEwSDUuNzZMNCA2LjQ3VjE4SDEzLjA5QzEzLjA0IDE4LjMzIDEzIDE4LjY2IDEzIDE5TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllUmVtb3ZlID0gXCJNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMlYxMy44MUMyMS4xMiAxMy4zIDIwLjEgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjIuNTQgMTYuODhMMjEuMTIgMTUuNDdMMTkgMTcuNTlMMTYuODggMTUuNDdMMTUuNDcgMTYuODhMMTcuNTkgMTlMMTUuNDcgMjEuMTJMMTYuODggMjIuNTRMMTkgMjAuNDFMMjEuMTIgMjIuNTRMMjIuNTQgMjEuMTJMMjAuNDEgMTlMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVSZW1vdmVPdXRsaW5lID0gXCJNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMlYxMy44MUMyMS4zOSAxMy40NiAyMC43MiAxMy4yMiAyMCAxMy4wOVYxMEg1Ljc2TDQgNi40N1YxOEgxMy4wOUMxMy4wNCAxOC4zMyAxMyAxOC42NiAxMyAxOU0yMi41NCAxNi44OEwyMS4xMiAxNS40N0wxOSAxNy41OUwxNi44OCAxNS40N0wxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZVJvbGwgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTIuNSwyLjUgMCAwLDAgOS41LDYuNUEyLjUsMi41IDAgMCwwIDEyLDlBMi41LDIuNSAwIDAsMCAxNC41LDYuNUEyLjUsMi41IDAgMCwwIDEyLDRNNC40LDkuNTNDMy45NywxMC44NCA0LjY5LDEyLjI1IDYsMTIuNjhDNy4zMiwxMy4xIDguNzMsMTIuMzkgOS4xNSwxMS4wN0M5LjU4LDkuNzYgOC44Niw4LjM1IDcuNTUsNy45MkM2LjI0LDcuNSA0LjgyLDguMjEgNC40LDkuNTNNMTkuNjEsOS41QzE5LjE4LDguMjEgMTcuNzcsNy41IDE2LjQ2LDcuOTJDMTUuMTQsOC4zNCAxNC40Miw5Ljc1IDE0Ljg1LDExLjA3QzE1LjI4LDEyLjM4IDE2LjY5LDEzLjEgMTgsMTIuNjdDMTkuMzEsMTIuMjUgMjAuMDMsMTAuODMgMTkuNjEsOS41TTcuMzEsMTguNDZDOC40MiwxOS4yOCAxMCwxOS4wMyAxMC44LDE3LjkxQzExLjYxLDE2Ljc5IDExLjM2LDE1LjIzIDEwLjI0LDE0LjQyQzkuMTMsMTMuNjEgNy41NiwxMy44NiA2Ljc1LDE0Ljk3QzUuOTQsMTYuMDkgNi4xOSwxNy42NSA3LjMxLDE4LjQ2TTE2LjcsMTguNDZDMTcuODIsMTcuNjUgMTguMDcsMTYuMDkgMTcuMjYsMTQuOTdDMTYuNDUsMTMuODUgMTQuODgsMTMuNiAxMy43NywxNC40MkMxMi42NSwxNS4yMyAxMi40LDE2Ljc5IDEzLjIxLDE3LjkxQzE0LDE5LjAzIDE1LjU5LDE5LjI3IDE2LjcsMTguNDZNMTIsMTAuNUExLjUsMS41IDAgMCwwIDEwLjUsMTJBMS41LDEuNSAwIDAsMCAxMiwxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDEyLDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVTZWFyY2ggPSBcIk0xMS4wMyAyMEg0QzIuOSAyMCAyIDE5LjEgMiAxOEwyIDZDMiA0LjkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzLjA1QzIwLjg1IDExLjIyIDE4LjgyIDEwIDE2LjUgMTBDMTIuOTIgMTAgMTAgMTIuOTIgMTAgMTYuNUMxMCAxNy43OSAxMC4zOCAxOSAxMS4wMyAyME0yMy4zOSAyMkwyMiAyMy4zOUwxOC44OCAyMC4zMkMxOC4xOSAyMC43NSAxNy4zNyAyMSAxNi41IDIxQzE0IDIxIDEyIDE5IDEyIDE2LjVTMTQgMTIgMTYuNSAxMiAyMSAxNCAyMSAxNi41QzIxIDE3LjM4IDIwLjc1IDE4LjIxIDIwLjMxIDE4LjlMMjMuMzkgMjJNMTkgMTYuNUMxOSAxNS4xMiAxNy44OCAxNCAxNi41IDE0UzE0IDE1LjEyIDE0IDE2LjUgMTUuMTIgMTkgMTYuNSAxOSAxOSAxNy44OCAxOSAxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllU2VhcmNoT3V0bGluZSA9IFwiTTExIDIwSDRDMi45IDIwIDIgMTkuMSAyIDE4VjZDMiA0LjkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzQzIxLjUgMTIuMiAyMC44IDExLjUgMjAgMTFWMTBINS44TDQgNi41VjE4SDEwLjJDMTAuNCAxOC43IDEwLjYgMTkuNCAxMSAyME0yMC4zIDE4LjlDMjAuNyAxOC4yIDIxIDE3LjQgMjEgMTYuNUMyMSAxNCAxOSAxMiAxNi41IDEyUzEyIDE0IDEyIDE2LjUgMTQgMjEgMTYuNSAyMUMxNy40IDIxIDE4LjIgMjAuOCAxOC45IDIwLjNMMjIgMjMuNEwyMy40IDIyTDIwLjMgMTguOU0xNi41IDE5QzE1LjEgMTkgMTQgMTcuOSAxNCAxNi41UzE1LjEgMTQgMTYuNSAxNCAxOSAxNS4xIDE5IDE2LjUgMTcuOSAxOSAxNi41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllU2V0dGluZ3MgPSBcIk0yMiA0VjE4QzIyIDE5LjExIDIxLjExIDIwIDIwIDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJNNyAyNEg5VjIySDdWMjRNMTEgMjRIMTNWMjJIMTFWMjRNMTUgMjRIMTdWMjJIMTVWMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVTZXR0aW5nc091dGxpbmUgPSBcIk0xOCA0TDIwIDhIMTdMMTUgNEgxM0wxNSA4SDEyTDEwIDRIOEwxMCA4SDdMNSA0SDRDMi45IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDIwQzIxLjExIDIwIDIyIDE5LjExIDIyIDE4VjRIMThNMjAgMThINFY2LjQ3TDUuNzYgMTBIMjBWMThNMTEgMjJIMTNWMjRIMTFWMjJNNyAyMkg5VjI0SDdWMjJNMTUgMjJIMTdWMjRIMTVWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVTdGFyID0gXCJNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMlYxMy44MUMyMS4xMiAxMy4zIDIwLjEgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjMgMTcuODlMMjAuMTEgMTcuNjRMMTkgMTVMMTcuODcgMTcuNjRMMTUgMTcuODlMMTcuMTggMTkuNzdMMTYuNSAyMi41OEwxOSAyMS4wOUwyMS40NSAyMi41OEwyMC44IDE5Ljc3TDIzIDE3Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllU3Rhck91dGxpbmUgPSBcIk0xMyAxOUMxMyAxOS4zNCAxMy4wNCAxOS42NyAxMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzLjgxQzIxLjM5IDEzLjQ2IDIwLjcyIDEzLjIyIDIwIDEzLjA5VjEwSDUuNzZMNCA2LjQ3VjE4SDEzLjA5QzEzLjA0IDE4LjMzIDEzIDE4LjY2IDEzIDE5TTIzIDE3Ljg5TDIwLjExIDE3LjY0TDE5IDE1TDE3Ljg3IDE3LjY0TDE1IDE3Ljg5TDE3LjE4IDE5Ljc3TDE2LjUgMjIuNThMMTkgMjEuMDlMMjEuNDUgMjIuNThMMjAuOCAxOS43N0wyMyAxNy44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3dlciA9IFwiTTE4LjUgMTRDMTcuNTUgMTQgMTYuNjkgMTQuMzggMTYuMDYgMTVIOS4zOUw1Ljc0IDNIMlY1SDQuMjZMNyAxNC4wNUM2Ljg1IDE0LjAzIDYuNjggMTQgNi41IDE0QzQuNTcgMTQgMyAxNS41NyAzIDE3LjVTNC41NyAyMSA2LjUgMjFDNy44OSAyMSA5LjA5IDIwLjE4IDkuNjUgMTlIMTUuMzVDMTUuOTEgMjAuMTggMTcuMTEgMjEgMTguNSAyMUMyMC40MyAyMSAyMiAxOS40MyAyMiAxNy41UzIwLjQzIDE0IDE4LjUgMTRNNi41IDE5QzUuNjcgMTkgNSAxOC4zMyA1IDE3LjVTNS42NyAxNiA2LjUgMTYgOCAxNi42NyA4IDE3LjUgNy4zMyAxOSA2LjUgMTlNMTguNSAxOUMxNy42NyAxOSAxNyAxOC4zMyAxNyAxNy41UzE3LjY3IDE2IDE4LjUgMTYgMjAgMTYuNjcgMjAgMTcuNSAxOS4zMyAxOSAxOC41IDE5TTEwLjEzIDE0TDkuNTMgMTJIMTIuNzZDMTMuNSAxMiAxNC4yMSAxMi40MyAxNC41NSAxMy4xMUwxNSAxNEgxMC4xM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3dlckJhZyA9IFwiTTExLjk1IDE0TDEwLjgyIDEySDE0Ljc2QzE1LjUgMTIgMTYuMjEgMTIuNDMgMTYuNTUgMTMuMTFMMTcgMTRIMTEuOTVNMjMgMThDMjMgMTkuNjYgMjEuNjYgMjEgMjAgMjFDMTguNyAyMSAxNy42IDIwLjE2IDE3LjE4IDE5SDExLjY1QzExLjA5IDIwLjE4IDkuODkgMjEgOC41IDIxUzUuOTEgMjAuMTggNS4zNSAxOUgyQzEuNDUgMTkgMSAxOC41NSAxIDE4VjExQzEgMTAuNjcgMS4xNyAxMC4zNiAxLjQ0IDEwLjE3QzEuNzEgMTAgMi4wNiA5Ljk1IDIuMzcgMTAuMDdMNy40MyAxMi4wOUwzLjQyIDVIMVYzSDQuNThMMTEuMzcgMTVIMjBDMjEuNjYgMTUgMjMgMTYuMzQgMjMgMThNNy4zNCAxNC4yMUwzIDEyLjVWMTdINS4wNUM1LjI0IDE1LjcgNi4xMyAxNC42NCA3LjM0IDE0LjIxTTEwIDE3LjVDMTAgMTYuNjcgOS4zMyAxNiA4LjUgMTZTNyAxNi42NyA3IDE3LjUgNy42NyAxOSA4LjUgMTkgMTAgMTguMzMgMTAgMTcuNU0yMSAxOEMyMSAxNy40NSAyMC41NSAxNyAyMCAxN1MxOSAxNy40NSAxOSAxOCAxOS40NSAxOSAyMCAxOSAyMSAxOC41NSAyMSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdWZmaW4gPSBcIk0xNiw1QzE2LDUgMTUsMiAxMiwyQzksMiA4LDUgOCw1QzYsNSA0LDcgNCw5QzEuMyw5IDEuMywxMyA0LDEzSDIwQzIyLjcsMTMgMjIuNyw5IDIwLDlDMjAsNyAxOCw1IDE2LDVNNSwxNUw3LDIySDlMOCwxNUg1TTEwLDE1TDExLDIySDEzTDE0LDE1SDEwTTE2LDE1TDE1LDIySDE3TDE5LDE1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11bHRpcGxpY2F0aW9uID0gXCJNMTEsM0gxM1YxMC4yN0wxOS4yOSw2LjY0TDIwLjI5LDguMzdMMTQsMTJMMjAuMywxNS42NEwxOS4zLDE3LjM3TDEzLDEzLjcyVjIxSDExVjEzLjczTDQuNjksMTcuMzZMMy42OSwxNS42M0wxMCwxMkwzLjcyLDguMzZMNC43Miw2LjYzTDExLDEwLjI2VjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVsdGlwbGljYXRpb25Cb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0gxOU0xMSwxN0gxM1YxMy43M0wxNS44MywxNS4zNkwxNi44MywxMy42M0wxNCwxMkwxNi44MywxMC4zNkwxNS44Myw4LjYzTDEzLDEwLjI3VjdIMTFWMTAuMjdMOC4xNyw4LjYzTDcuMTcsMTAuMzZMMTAsMTJMNy4xNywxMy42M0w4LjE3LDE1LjM2TDExLDEzLjczVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2hyb29tID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkEyLDIgMCAwLDEgMjAsMTRINEEyLDIgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDhBMiwyIDAgMCwwIDE0LDZBMiwyIDAgMCwwIDEyLDRBMiwyIDAgMCwwIDEwLDZBMiwyIDAgMCwwIDEyLDhNMTcsMTJBMiwyIDAgMCwwIDE5LDEwQTIsMiAwIDAsMCAxNyw4QTIsMiAwIDAsMCAxNSwxMEEyLDIgMCAwLDAgMTcsMTJNNywxMkEyLDIgMCAwLDAgOSwxMEEyLDIgMCAwLDAgNyw4QTIsMiAwIDAsMCA1LDEwQTIsMiAwIDAsMCA3LDEyTTE1LDE1TDE2LjI3LDE5LjQ1TDE2LjM1LDIwQzE2LjM1LDIxLjEgMTUuNDUsMjIgMTQuMzUsMjJIOS42NUEyLDIgMCAwLDEgNy42NSwyMEw3LjczLDE5LjQ1TDksMTVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaHJvb21PZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w0LjEgNkMyLjggNy42IDIgOS43IDIgMTJDMiAxMy4xIDIuOSAxNCA0IDE0SDEyLjFMMTMuMSAxNUg5TDcuNyAxOS41VjIwQzcuNyAyMS4xIDguNiAyMiA5LjcgMjJIMTQuNEMxNS41IDIyIDE2LjQgMjEuMSAxNi40IDIwTDE2LjMgMTkuNUwxNS44IDE3LjdMMjAuOSAyMi44TDIyLjEgMjEuNU03IDEyQzUuOSAxMiA1IDExLjEgNSAxMEM1IDkuMiA1LjUgOC40IDYuMyA4LjFMOC45IDEwLjdDOC42IDExLjUgNy44IDEyIDcgMTJNMTAgNkMxMCA0LjkgMTAuOSA0IDEyIDRTMTQgNC45IDE0IDYgMTMuMSA4IDEyIDhDMTEuNSA4IDExLjEgNy44IDEwLjcgNy41TDE3LjIgMTRIMjBDMjEuMSAxNCAyMiAxMy4xIDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMkMxMC4xIDIgOC4zIDIuNiA2LjcgMy41TDEwLjQgNy4yQzEwLjIgNi45IDEwIDYuNSAxMCA2TTE3IDhDMTguMSA4IDE5IDguOSAxOSAxMFMxOC4xIDEyIDE3IDEyIDE1IDExLjEgMTUgMTAgMTUuOSA4IDE3IDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaHJvb21PZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNC4xIDZDMi44IDcuNiAyIDkuNyAyIDEyQzIgMTMuMSAyLjkgMTQgNCAxNEgxMi4xTDEzLjEgMTVIOUw4IDE4LjVMNy43IDE5LjVDNy40IDIwLjYgOC4xIDIxLjcgOS4xIDIxLjlMOS43IDIySDE0LjRDMTUuNSAyMiAxNi40IDIxLjEgMTYuNCAyMEwxNi4zIDE5LjVMMTYgMTguNUwxNS44IDE3LjZMMjAuOSAyMi43TDIyLjEgMjEuNU00IDEyQzQgMTAuMyA0LjYgOC43IDUuNSA3LjRMNi4yIDguMUM2LjEgOC40IDYgOC43IDYgOUM2IDEwLjEgNi45IDExIDggMTFDOC4zIDExIDguNiAxMC45IDguOSAxMC44TDEwLjEgMTJINE05LjcgMjBMMTAgMTlMMTAuNiAxN0gxMy42TDE0LjIgMTlMMTQuNSAyMEg5LjdNMTYgMTFDMTQuOSAxMSAxNCAxMC4xIDE0IDlTMTQuOSA3IDE2IDcgMTggNy45IDE4IDkgMTcuMSAxMSAxNiAxMU04LjIgNUw2LjcgMy41QzguMyAyLjYgMTAuMSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxMy4xIDIxLjEgMTQgMjAgMTRIMTcuMkwxNS4yIDEySDIwQzIwIDguMyAxNy40IDUuMSAxNCA0LjJDMTMuOSA1LjIgMTMgNiAxMiA2UzEwLjEgNS4yIDEwIDQuMkM5LjQgNC40IDguNyA0LjcgOC4yIDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaHJvb21PdXRsaW5lID0gXCJNNCwxMkgyMEMyMCw4LjI3IDE3LjQ0LDUuMTMgMTQsNC4yNUMxMy44Niw1LjI0IDEzLDYgMTIsNkMxMSw2IDEwLjE0LDUuMjQgMTAsNC4yNUM2LjU2LDUuMTMgNCw4LjI3IDQsMTJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkEyLDIgMCAwLDEgMjAsMTRINEEyLDIgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEzLjUsMTdIMTAuNUw5LjkyLDE5TDkuNjUsMjBIMTQuMzVMMTQuMDgsMTlMMTMuNSwxN00xNSwxNUwxNiwxOC41TDE2LjI3LDE5LjQ1TDE2LjM1LDIwQzE2LjM1LDIxLjEgMTUuNDUsMjIgMTQuMzUsMjJIOS42NUw5LjE3LDIxLjk0QzguMSwyMS42NiA3LjQ1LDIwLjU3IDcuNzMsMTkuNUw4LDE4LjVMOSwxNUgxNU0xNiw3QTIsMiAwIDAsMSAxOCw5QTIsMiAwIDAsMSAxNiwxMUEyLDIgMCAwLDEgMTQsOUEyLDIgMCAwLDEgMTYsN004LDdBMiwyIDAgMCwxIDEwLDlBMiwyIDAgMCwxIDgsMTFBMiwyIDAgMCwxIDYsOUEyLDIgMCAwLDEgOCw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljID0gXCJNMjEsM1YxNS41QTMuNSwzLjUgMCAwLDEgMTcuNSwxOUEzLjUsMy41IDAgMCwxIDE0LDE1LjVBMy41LDMuNSAwIDAsMSAxNy41LDEyQzE4LjA0LDEyIDE4LjU1LDEyLjEyIDE5LDEyLjM0VjYuNDdMOSw4LjZWMTcuNUEzLjUsMy41IDAgMCwxIDUuNSwyMUEzLjUsMy41IDAgMCwxIDIsMTcuNUEzLjUsMy41IDAgMCwxIDUuNSwxNEM2LjA0LDE0IDYuNTUsMTQuMTIgNywxNC4zNFY2TDIxLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNBY2NpZGVudGFsRG91YmxlRmxhdCA9IFwiTTE1LjUgOUMxNC44IDkgMTQuMTEgOS4yOCAxMy41IDkuNjdWNUgxMS41VjkuNjJDMTEuMDQgOS4yNCAxMC4zOSA5IDkuNSA5QzguOCA5IDguMTEgOS4yOCA3LjUgOS42N1Y1SDUuNVYxOUM4LjUgMTcuMzIgMTAuNDMgMTUuNzkgMTEuNSAxNC40MVYxOUMxNi4zNiAxNi4yNiAxOC41IDEzLjkxIDE4LjUgMTJDMTguNSAxMC41OSAxNy43OSA5IDE1LjUgOU03LjUgMTUuMzhWMTIuMjZDOC4xMiAxMS41OSA4Ljk1IDExIDkuNSAxMUMxMC4wOSAxMSAxMC41IDExLjA3IDEwLjUgMTJDMTAuNSAxMi4xNSAxMC40IDEzLjMgNy41IDE1LjM4TTEzLjUgMTUuMzhWMTIuMjZDMTQuMTIgMTEuNTkgMTQuOTUgMTEgMTUuNSAxMUMxNi4wOSAxMSAxNi41IDExLjA3IDE2LjUgMTJDMTYuNSAxMi4xNSAxNi40IDEzLjMgMTMuNSAxNS4zOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0FjY2lkZW50YWxEb3VibGVTaGFycCA9IFwiTTE1LjQxIDEwSDE3VjdIMTRWOC41OUwxMiAxMC41OUwxMCA4LjU5VjdIN1YxMEg4LjU5TDEwLjU5IDEyTDguNTkgMTRIN1YxN0gxMFYxNS40MUwxMiAxMy40MUwxNCAxNS40MVYxN0gxN1YxNEgxNS40MUwxMy40MSAxMkwxNS40MSAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0FjY2lkZW50YWxGbGF0ID0gXCJNOC41IDE5QzEzLjM2IDE2LjI2IDE1LjUgMTMuOTEgMTUuNSAxMkMxNS41IDEwLjU5IDE0Ljc5IDkgMTIuNSA5QzExLjggOSAxMS4xMSA5LjI4IDEwLjUgOS42N1Y1SDguNU0xMC41IDE1LjM4VjEyLjI2QzExLjEyIDExLjU5IDExLjk1IDExIDEyLjUgMTFDMTMuMDkgMTEgMTMuNSAxMS4wNyAxMy41IDEyQzEzLjUgMTIuMTUgMTMuNCAxMy4zIDEwLjUgMTUuMzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNBY2NpZGVudGFsTmF0dXJhbCA9IFwiTTEwIDguNzVWMy41SDhWMTcuNUwxNCAxNS4yNVYyMC41SDE2VjYuNUwxMCA4Ljc1TTE0IDEzLjI1TDEwIDE0Ljc1VjEwLjc1TDE0IDkuMjVWMTMuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNBY2NpZGVudGFsU2hhcnAgPSBcIk0xNyA5LjVWNy41TDE1IDguMVY1LjVIMTNWOC43TDExIDkuM1Y2LjVIOVY5LjlMNyAxMC41VjEyLjVMOSAxMS45VjEzLjlMNyAxNC41VjE2LjVMOSAxNS45VjE4LjVIMTFWMTUuM0wxMyAxNC43VjE3LjVIMTVWMTQuMUwxNyAxMy41VjExLjVMMTUgMTIuMVYxMC4xTDE3IDkuNU0xMyAxMi43TDExIDEzLjNWMTEuM0wxMyAxMC43VjEyLjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNCb3ggPSBcIk0xNiw5SDEzVjE0LjVBMi41LDIuNSAwIDAsMSAxMC41LDE3QTIuNSwyLjUgMCAwLDEgOCwxNC41QTIuNSwyLjUgMCAwLDEgMTAuNSwxMkMxMS4wNywxMiAxMS41OCwxMi4xOSAxMiwxMi41VjdIMTZNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNCb3hNdWx0aXBsZSA9IFwiTTQsNkgyVjIwQTIsMiAwIDAsMCA0LDIySDE4VjIwSDRNMTgsN0gxNVYxMi41QTIuNSwyLjUgMCAwLDEgMTIuNSwxNUEyLjUsMi41IDAgMCwxIDEwLDEyLjVBMi41LDIuNSAwIDAsMSAxMi41LDEwQzEzLjA3LDEwIDEzLjU4LDEwLjE5IDE0LDEwLjVWNUgxOE0yMCwySDhBMiwyIDAgMCwwIDYsNFYxNkEyLDIgMCAwLDAgOCwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEEyLDIgMCAwLDAgMjAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTIwLDJIOEEyLDIgMCAwLDAgNiw0VjE2QTIsMiAwIDAsMCA4LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTIwLDE2SDhWNEgyME0xMi41LDE1QTIuNSwyLjUgMCAwLDAgMTUsMTIuNVY3SDE4VjVIMTRWMTAuNUMxMy41OCwxMC4xOSAxMy4wNywxMCAxMi41LDEwQTIuNSwyLjUgMCAwLDAgMTAsMTIuNUEyLjUsMi41IDAgMCwwIDEyLjUsMTVNNCw2SDJWMjBBMiwyIDAgMCwwIDQsMjJIMThWMjBINFwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljQm94T3V0bGluZSA9IFwiTTE2LDlIMTNWMTQuNUEyLjUsMi41IDAgMCwxIDEwLjUsMTdBMi41LDIuNSAwIDAsMSA4LDE0LjVBMi41LDIuNSAwIDAsMSAxMC41LDEyQzExLjA3LDEyIDExLjU4LDEyLjE5IDEyLDEyLjVWN0gxNlY5TTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5TTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNDaXJjbGUgPSBcIk0xNiw5VjdIMTJWMTIuNUMxMS41OCwxMi4xOSAxMS4wNywxMiAxMC41LDEyQTIuNSwyLjUgMCAwLDAgOCwxNC41QTIuNSwyLjUgMCAwLDAgMTAuNSwxN0EyLjUsMi41IDAgMCwwIDEzLDE0LjVWOUgxNk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0NpcmNsZU91dGxpbmUgPSBcIk0xNiw5SDEzVjE0LjVBMi41LDIuNSAwIDAsMSAxMC41LDE3QTIuNSwyLjUgMCAwLDEgOCwxNC41QTIuNSwyLjUgMCAwLDEgMTAuNSwxMkMxMS4wNywxMiAxMS41OCwxMi4xOSAxMiwxMi41VjdIMTZWOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNDbGVmQWx0byA9IFwiTTUgNEg3VjIwSDVNMTUuNDYgMTNIMTQuODNMMTMuODMgMTJMMTQuODMgMTFIMTUuNDZBMy41IDMuNSAwIDEgMCAxMS45NiA3LjVIMTMuOTZBMS41IDEuNSAwIDEgMSAxNS40NiA5SDE0TDEyIDExSDExVjRIOVYyMEgxMVYxM0gxMkwxNCAxNUgxNS40NkExLjUgMS41IDAgMSAxIDEzLjk2IDE2LjVIMTEuOTZBMy41IDMuNSAwIDEgMCAxNS40NiAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0NsZWZCYXNzID0gXCJNMTguNSA1QTEuNSAxLjUgMCAxIDEgMTcgNi41QTEuNSAxLjUgMCAwIDEgMTguNSA1TTE4LjUgMTFBMS41IDEuNSAwIDEgMSAxNyAxMi41QTEuNSAxLjUgMCAwIDEgMTguNSAxMU0xMCA0QTUgNSAwIDAgMCA1IDlWMTBBMiAyIDAgMSAwIDcuMTggOEEzIDMgMCAwIDEgMTAgNkE0IDQgMCAwIDEgMTQgMTBDMTQgMTMuNTkgMTEuNzcgMTYuMTkgNyAxOC4yTDcuNzYgMjAuMDRDMTMuMzEgMTcuNzIgMTYgMTQuNDMgMTYgMTBBNiA2IDAgMCAwIDEwIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNDbGVmVHJlYmxlID0gXCJNMTMgMTFWNy41TDE1LjIgNS4yOUMxNiA0LjUgMTYuMTUgMy4yNCAxNS41OSAyLjI2QzE1LjE0IDEuNDcgMTQuMzIgMSAxMy40NSAxQzEzLjI0IDEgMTMgMS4wMyAxMi44MSAxLjA5QzExLjczIDEuMzggMTEgMi4zOCAxMSAzLjVWNi43NEw3Ljg2IDkuOTFDNi4yIDExLjYgNS43IDE0LjEzIDYuNjEgMTYuMzRDNy4zOCAxOC4yNCA5LjA2IDE5LjU1IDExIDE5Ljg5VjIwLjVDMTEgMjAuNzYgMTAuNzcgMjEgMTAuNSAyMUg5VjIzSDEwLjVDMTEuODUgMjMgMTMgMjEuODkgMTMgMjAuNVYyMEMxNS4wMyAyMCAxNy4xNiAxOC4wOCAxNy4xNiAxNS4yNUMxNy4xNiAxMi45NSAxNS4yNCAxMSAxMyAxMU0xMyAzLjVDMTMgMy4yNyAxMy4xMSAzLjA5IDEzLjMyIDMuMDNDMTMuNTQgMi45NyAxMy43NyAzLjA2IDEzLjg4IDMuMjZDMTQgMy40NiAxMy45NiAzLjcxIDEzLjggMy44N0wxMyA0LjczVjMuNU0xMSAxMS41QzEwLjAzIDEyLjE0IDkuMyAxMy4yNCA5LjA0IDE0LjI2TDExIDE0Ljc4VjE3LjgzQzkuODcgMTcuNTMgOC45IDE2LjcxIDguNDMgMTUuNTdDNy44NCAxNC4xMSA4LjE2IDEyLjQ1IDkuMjYgMTEuMzNMMTEgOS41VjExLjVNMTMgMThWMTIuOTRDMTQuMTcgMTIuOTQgMTUuMTggMTQuMDQgMTUuMTggMTUuMjVDMTUuMTggMTcgMTMuOTEgMTggMTMgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlID0gXCJNMTIgM1YxMy41NUMxMS40MSAxMy4yMSAxMC43MyAxMyAxMCAxM0M3Ljc5IDEzIDYgMTQuNzkgNiAxN1M3Ljc5IDIxIDEwIDIxIDE0IDE5LjIxIDE0IDE3VjdIMThWM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVCbHVldG9vdGggPSBcIk0yMiA5Ljg1TDE5LjE0IDdIMTguNjRWMTAuNzlMMTYuMzUgOC41TDE1LjY0IDkuMjFMMTguNDMgMTJMMTUuNjQgMTQuNzlMMTYuMzUgMTUuNUwxOC42NCAxMy4yMVYxN0gxOS4xNEwyMiAxNC4xNUwxOS44NSAxMkwyMiA5Ljg1TTE5LjY0IDguOTFMMjAuNTggOS44NUwxOS42NCAxMC43OVY4LjkxTTIwLjU4IDE0LjE1TDE5LjY0IDE1LjA5VjEzLjIxTDIwLjU4IDE0LjE1TTkuNjQgM1YxMy41NUM5LjA1IDEzLjIxIDguMzcgMTMgNy42NCAxM0M1LjQzIDEzIDMuNjQgMTQuNzkgMy42NCAxN1M1LjQzIDIxIDcuNjQgMjEgMTEuNjQgMTkuMjEgMTEuNjQgMTdWN0gxNS42NFYzSDkuNjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlQmx1ZXRvb3RoT2ZmID0gXCJNMjIgOS44NUwxOS4xNCA3SDE4LjY0VjEwLjc5TDE2LjM1IDguNUwxNS42NCA5LjIxTDE4LjQzIDEyTDE1LjY0IDE0Ljc5TDE2LjM1IDE1LjVMMTguNjQgMTMuMjFWMTdIMTkuMTRMMjIgMTQuMTVMMTkuODUgMTJMMjIgOS44NU0xOS42NCA4LjkxTDIwLjU4IDkuODVMMTkuNjQgMTAuNzlWOC45MU0yMC41OCAxNC4xNUwxOS42NCAxNS4wOVYxMy4yMUwyMC41OCAxNC4xNU0xLjk2IDNMLjY4NyA0LjI3TDkuNjkgMTMuMjdWMTMuNTVDOS4xIDEzLjIxIDguNDIgMTMgNy42OSAxM0M1LjUgMTMgMy42OSAxNC43OSAzLjY5IDE3UzUuNSAyMSA3LjY5IDIxIDExLjY5IDE5LjIxIDExLjY5IDE3VjE1LjI3TDE3LjQyIDIxTDE4LjY5IDE5LjczTDEuOTYgM00xMS42OSA3SDE1LjY5VjNIOS42OVY4LjE4TDExLjY5IDEwLjE4VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlRWlnaHRoID0gXCJNMTIgM1YxMy41NUMxMS40MSAxMy4yMSAxMC43MyAxMyAxMCAxM0M3Ljc5IDEzIDYgMTQuNzkgNiAxN1M3Ljc5IDIxIDEwIDIxIDE0IDE5LjIxIDE0IDE3VjdIMThWM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVFaWdodGhEb3R0ZWQgPSBcIk0xMiAzVjEzLjU1QTQgNCAwIDEgMCAxNCAxN1Y3SDE4VjNNMTYuNSAyMEExLjUgMS41IDAgMSAxIDE4IDE4LjVBMS41IDEuNSAwIDAgMSAxNi41IDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZUhhbGYgPSBcIk0xNiAzSDE0VjEzLjU2QTMuOTYgMy45NiAwIDAgMCAxMiAxM0E0IDQgMCAxIDAgMTYgMTdWM00xMiAxOUEyIDIgMCAxIDEgMTQgMTdBMiAyIDAgMCAxIDEyIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZUhhbGZEb3R0ZWQgPSBcIk0xNCAzSDEyVjEzLjU2QTMuOTYgMy45NiAwIDAgMCAxMCAxM0E0IDQgMCAxIDAgMTQgMTdWM00xMCAxOUEyIDIgMCAxIDEgMTIgMTdBMiAyIDAgMCAxIDEwIDE5TTE2LjUgMjBBMS41IDEuNSAwIDEgMSAxOCAxOC41QTEuNSAxLjUgMCAwIDEgMTYuNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVPZmYgPSBcIk00LjI3IDNMMyA0LjI3TDEyIDEzLjI3VjEzLjU1QzExLjQxIDEzLjIxIDEwLjczIDEzIDEwIDEzQzcuNzkgMTMgNiAxNC43OSA2IDE3UzcuNzkgMjEgMTAgMjEgMTQgMTkuMjEgMTQgMTdWMTUuMjdMMTkuNzMgMjFMMjEgMTkuNzNMNC4yNyAzTTE0IDdIMThWM0gxMlY4LjE4TDE0IDEwLjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZU9mZk91dGxpbmUgPSBcIk0xNCA3SDE4VjNIMTJWNy42MUwxNCA5LjYxTTEyIDEwLjQ0TDQuNDEgMi44NkwzIDQuMjdMMTIgMTMuMjdWMTMuNTVBMy45NCAzLjk0IDAgMCAwIDguNjcgMTMuMjNBNCA0IDAgMCAwIDEwLjY1IDIwLjk1QTQuMSA0LjEgMCAwIDAgMTQgMTYuODVWMTUuMjdMMTkuNzMgMjFMMjEuMTQgMTkuNTlNMTAgMTlBMiAyIDAgMSAxIDEyIDE3QTIgMiAwIDAgMSAxMCAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVPdXRsaW5lID0gXCJNMTIgM1YxMy41NUE0IDQgMCAxIDAgMTQgMTdWN0gxOFYzTTEwIDE5QTIgMiAwIDEgMSAxMiAxN0EyIDIgMCAwIDEgMTAgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlUGx1cyA9IFwiTTE3IDlWMTJIMTRWMTRIMTdWMTdIMTlWMTRIMjJWMTJIMTlWOUgxN005IDNWMTMuNTVDOC40MSAxMy4yMSA3LjczIDEzIDcgMTNDNC43OSAxMyAzIDE0Ljc5IDMgMTdTNC43OSAyMSA3IDIxIDExIDE5LjIxIDExIDE3VjdIMTVWM0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZVF1YXJ0ZXIgPSBcIk0xNCAzVjEzLjU2QzEzLjQxIDEzLjIxIDEyLjczIDEzIDEyIDEzQzkuNzkgMTMgOCAxNC43OSA4IDE3UzkuNzkgMjEgMTIgMjEgMTYgMTkuMjEgMTYgMTdWM0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVRdWFydGVyRG90dGVkID0gXCJNMTIgMTNWMTMuNTZBMy45NiAzLjk2IDAgMCAwIDEwIDEzQTQgNCAwIDEgMCAxNCAxN1YzSDEyTTE2LjUgMTdBMS41IDEuNSAwIDEgMSAxNSAxOC41QTEuNSAxLjUgMCAwIDEgMTYuNSAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVTaXh0ZWVudGggPSBcIk0xOCA3VjNIMTJWMTMuNTVDMTEuNDEgMTMuMjEgMTAuNzMgMTMgMTAgMTNDNy43OSAxMyA2IDE0Ljc5IDYgMTdTNy43OSAyMSAxMCAyMSAxNCAxOS4yMSAxNCAxN1YxMUgxOFY4SDE0VjdIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlU2l4dGVlbnRoRG90dGVkID0gXCJNMTggMTguNUExLjUgMS41IDAgMSAxIDE2LjUgMTdBMS41IDEuNSAwIDAgMSAxOCAxOC41TTE4IDdWM0gxMlYxMy41NUE0IDQgMCAxIDAgMTQgMTdWMTFIMThWOEgxNFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZVdob2xlID0gXCJNMTIgMTVBMiAyIDAgMSAxIDEwIDE3QTIgMiAwIDAgMSAxMiAxNU0xMiAxM0E0IDQgMCAxIDAgMTYgMTdBNCA0IDAgMCAwIDEyIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZVdob2xlRG90dGVkID0gXCJNMTAgMTVBMiAyIDAgMSAxIDggMTdBMiAyIDAgMCAxIDEwIDE1TTEwIDEzQTQgNCAwIDEgMCAxNCAxN0E0IDQgMCAwIDAgMTAgMTNNMTYuNSAxN0ExLjUgMS41IDAgMSAxIDE1IDE4LjVBMS41IDEuNSAwIDAgMSAxNi41IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljT2ZmID0gXCJNMiw1LjI3TDMuMjgsNEwyMCwyMC43MkwxOC43MywyMkw5LDEyLjI3VjE3LjVBMy41LDMuNSAwIDAsMSA1LjUsMjFBMy41LDMuNSAwIDAsMSAyLDE3LjVBMy41LDMuNSAwIDAsMSA1LjUsMTRDNi4wNCwxNCA2LjU1LDE0LjEyIDcsMTQuMzRWMTAuMjdMMiw1LjI3TTIxLDNWMTUuNUMyMSwxNi41IDIwLjU3LDE3LjQyIDE5Ljg4LDE4LjA2TDE0Ljk0LDEzLjEyQzE1LjU4LDEyLjQzIDE2LjUsMTIgMTcuNSwxMkMxOC4wNCwxMiAxOC41NSwxMi4xMiAxOSwxMi4zNFY2LjQ3TDEwLjE3LDguMzVMNy42Niw1Ljg0TDIxLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNSZXN0RWlnaHRoID0gXCJNMTQgNkE1LjU2IDUuNTYgMCAwIDEgMTAuOTUgNy44NkExLjUgMS41IDAgMSAwIDkuNSA5SDkuNzRBNi4zMiA2LjMyIDAgMCAwIDEzLjI1IDcuOTNMMTAgMThIMTJMMTYgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY1Jlc3RIYWxmID0gXCJNNiAxNEg4VjEwSDE2VjE0SDE4VjE1SDZWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNSZXN0UXVhcnRlciA9IFwiTTExLjcxIDE2LjgxQzEwLjkxIDE3LjYgMTAuODggMTguODQgMTEuNjQgMTkuNThMMTAuMTkgMjFDOC42NiAxOS41IDguNzIgMTcuMDMgMTAuMzIgMTUuNDZDMTAuODUgMTQuOTQgMTEuNSAxNC42MSAxMi4xNiAxNC40Mkw5IDExLjM0TDEwLjQ1IDkuOTJMMTAuODIgOS41N0MxMS44MiA4LjU5IDExLjg1IDcuMDQgMTAuOSA2LjExTDkuMTYgNC40MkwxMC42MiAzTDE0Ljc4IDcuMDZDMTUuNTQgNy44MSAxNS41IDkuMDUgMTQuNzEgOS44M0wxMi41MyAxMS45NUwxNiAxNS4zM0wxNS42MSAxNS43MkMxNS4xMSAxNi4yMSAxNC4zOCAxNi40NiAxMy43MiAxNi4yOEMxMy4wNCAxNi4xIDEyLjI2IDE2LjI4IDExLjcxIDE2LjgxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljUmVzdFNpeHRlZW50aCA9IFwiTTE1IDNBNS41NiA1LjU2IDAgMCAxIDExLjk1IDQuODZBMS41IDEuNSAwIDEgMCAxMC41IDZIMTAuNzRBNi4zMiA2LjMyIDAgMCAwIDE0LjI1IDQuOTNMMTIuOSA5LjFBNS41NiA1LjU2IDAgMCAxIDkuOTUgMTAuODZBMS41IDEuNSAwIDEgMCA4LjUgMTJIOC43NEE2LjMyIDYuMzIgMCAwIDAgMTIuMjUgMTAuOTNMOSAyMUgxMUwxNyAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljUmVzdFdob2xlID0gXCJNMTggMTBIMTZWMTRIOFYxMEg2VjlIMThWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzdGFjaGUgPSBcIk0yMSAxMkMxOSAxMiAxOCA5IDE1IDlTMTIgMTEgMTIgMTEgMTIgOSA5IDkgNSAxMiAzIDEyQzIgMTIgMSAxMSAxIDExUzIgMTYgNiAxNkMxMSAxNiAxMiAxMyAxMiAxM1MxMyAxNiAxOCAxNkMyMiAxNiAyMyAxMSAyMyAxMVMyMiAxMiAyMSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOYWlsID0gXCJNMTMuNSw1VjE2TDEyLDIyTDEwLjUsMTZWNUgxMy41TTE3LDJIN1Y0SDE3VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmFzID0gXCJNNCw1QzIuODksNSAyLDUuODkgMiw3VjE3QzIsMTguMTEgMi44OSwxOSA0LDE5SDIwQzIxLjExLDE5IDIyLDE4LjExIDIyLDE3VjdDMjIsNS44OSAyMS4xMSw1IDIwLDVINE00LjUsN0ExLDEgMCAwLDEgNS41LDhBMSwxIDAgMCwxIDQuNSw5QTEsMSAwIDAsMSAzLjUsOEExLDEgMCAwLDEgNC41LDdNNyw3SDIwVjE3SDdWN004LDhWMTZIMTFWOEg4TTEyLDhWMTZIMTVWOEgxMk0xNiw4VjE2SDE5VjhIMTZNOSw5SDEwVjEwSDlWOU0xMyw5SDE0VjEwSDEzVjlNMTcsOUgxOFYxMEgxN1Y5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5hdGl2ZXNjcmlwdCA9IFwiTTcuNSwzSDE2LjVDMTksMyAyMSw1IDIxLDcuNVYxNi41QzIxLDE5IDE5LDIxIDE2LjUsMjFINy41QzUsMjEgMywxOSAzLDE2LjVWNy41QzMsNSA1LDMgNy41LDNNNiwxMy41VjE2LjVBMS41LDEuNSAwIDAsMCA3LjUsMThIOVYxMC41TDE1LDE4SDE2LjVBMS41LDEuNSAwIDAsMCAxOCwxNi41VjEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDEyQTEuNSwxLjUgMCAwLDEgMTgsMTAuNVY3LjVBMS41LDEuNSAwIDAsMCAxNi41LDZIMTVWMTMuNUw5LDZINy41QTEuNSwxLjUgMCAwLDAgNiw3LjVWMTAuNUExLjUsMS41IDAgMCwxIDQuNSwxMkExLjUsMS41IDAgMCwxIDYsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOYXR1cmUgPSBcIk0xMywxNi4xMkMxNi40NywxNS43MSAxOS4xNywxMi43NiAxOS4xNyw5LjE3QzE5LjE3LDUuMyAxNi4wNCwyLjE3IDEyLjE3LDIuMTdBNyw3IDAgMCwwIDUuMTcsOS4xN0M1LjE3LDEyLjY0IDcuNjksMTUuNSAxMSwxNi4wNlYyMEg1VjIySDE5VjIwSDEzVjE2LjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5hdHVyZVBlb3BsZSA9IFwiTTQuNSwxMUExLjUsMS41IDAgMCwwIDYsOS41QTEuNSwxLjUgMCAwLDAgNC41LDhBMS41LDEuNSAwIDAsMCAzLDkuNUExLjUsMS41IDAgMCwwIDQuNSwxMU0yMi4xNyw5LjE3QzIyLjE3LDUuMyAxOS4wNCwyLjE3IDE1LjE3LDIuMTdBNyw3IDAgMCwwIDguMTcsOS4xN0M4LjE3LDEyLjY0IDEwLjY5LDE1LjUgMTQsMTYuMDZWMjBINlYxN0g3VjEzQTEsMSAwIDAsMCA2LDEySDNBMSwxIDAgMCwwIDIsMTNWMTdIM1YyMkgxOVYyMEgxNlYxNi4xMkMxOS40NywxNS43MSAyMi4xNywxMi43NiAyMi4xNyw5LjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5hdmlnYXRpb24gPSBcIk0xMiwyTDQuNSwyMC4yOUw1LjIxLDIxTDEyLDE4TDE4Ljc5LDIxTDE5LjUsMjAuMjlMMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOYXZpZ2F0aW9uT3V0bGluZSA9IFwiTTEyIDcuM0wxNi4zIDE3LjdMMTIuOCAxNi4yTDEyIDE1LjhMMTEuMiAxNi4yTDcuNyAxNy43TDEyIDcuM00xMiAyTDQuNSAyMC4zTDUuMiAyMUwxMiAxOEwxOC44IDIxTDE5LjUgMjAuM0wxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5lYXJNZSA9IFwiTTIxLDNMMywxMC41M1YxMS41TDkuODQsMTQuMTZMMTIuNSwyMUgxMy40NkwyMSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5lY2tsYWNlID0gXCJNMjEuNSA1SDE5LjVDMTkuNSA5LjE0IDE2LjE0IDEyLjUgMTIgMTIuNUM3Ljg2IDEyLjUgNC41IDkuMTQgNC41IDVIMi41QzIuNTUgMTAuMTEgNi41OSAxNC4yOSAxMS43IDE0LjVDMTEuMSAxNS40IDEwIDE3LjIgMTAgMThDMTAgMjAuNjcgMTQgMjAuNjcgMTQgMThDMTQgMTcuMiAxMi45IDE1LjQgMTIuMyAxNC41QzE3LjQxIDE0LjI5IDIxLjQ1IDEwLjExIDIxLjUgNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOZWVkbGUgPSBcIk0xMS4xNSwxNS4xOEw5LjczLDEzLjc3TDExLjE1LDEyLjM1TDEyLjU2LDEzLjc3TDEzLjk3LDEyLjM1TDEyLjU2LDEwLjk0TDEzLjk3LDkuNTNMMTUuMzksMTAuOTRMMTYuOCw5LjUzTDEzLjk3LDYuN0w2LjksMTMuNzdMOS43MywxNi42TDExLjE1LDE1LjE4TTMuMDgsMTlMNi4yLDE1Ljg5TDQuMDgsMTMuNzdMMTMuOTcsMy44N0wxNi4xLDZMMTcuNSw0LjU4TDE2LjEsMy4xNkwxNy41LDEuNzVMMjEuNzUsNkwyMC4zNCw3LjRMMTguOTIsNkwxNy41LDcuNEwxOS42Myw5LjUzTDkuNzMsMTkuNDJMNy42MSwxNy4zTDMuMDgsMjEuODRWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0ZmxpeCA9IFwiTTYuNSwySDEwLjVMMTMuNDQsMTAuODNMMTMuNSwySDE3LjVWMjJDMTYuMjUsMjEuNzggMTQuODcsMjEuNjQgMTMuNDEsMjEuNThMMTAuNSwxM0wxMC40MywyMS41OUM5LjAzLDIxLjY1IDcuNywyMS43OSA2LjUsMjJWMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrID0gXCJNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya09mZiA9IFwiTTEsNS4yN0w1LDkuMjdWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMTcuNzNMMTkuNzMsMjRMMjEsMjIuNzJMMi4yOCw0TDEsNS4yN00xNSwyMEExLDEgMCAwLDAgMTQsMTlIMTNWMTcuMjdMMTUuNzMsMjBIMTVNMTcuNjksMTYuODdMNS4xMyw0LjMxQzUuNDEsMy41NSA2LjE0LDMgNywzSDE3QTIsMiAwIDAsMSAxOSw1VjE1QzE5LDE1Ljg2IDE4LjQ1LDE2LjU5IDE3LjY5LDE2Ljg3TTIyLDIwVjIxLjE4TDIwLjgyLDIwSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5ldHdvcmtPZmZPdXRsaW5lID0gXCJNMS4wNCw1LjI3TDUsOS4yM1YxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgxNy43N0wxOS43NywyNEwyMS4wNCwyMi43MkwyLjMyLDRMMS4wNCw1LjI3TTcsMTEuMjNMMTAuNzcsMTVIN1YxMS4yM00xNSwyMEExLDEgMCAwLDAgMTQsMTlIMTNWMTcuMjNMMTUuNzcsMjBIMTVNMjIsMjBWMjEuMTRMMjAuODYsMjBIMjJNNyw2LjE0TDUuMTQsNC4yOEM1LjQzLDMuNTMgNi4xNiwzIDcsM0gxN0EyLDIgMCAwLDEgMTksNVYxNUMxOSwxNS44NSAxOC40NywxNi41NyAxNy43MiwxNi44NkwxNS44NiwxNUgxN1Y1SDdWNi4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoMSA9IFwiTTEsMjFIMjFWMU0xOSw1LjgzVjE5SDExVjEzLjgzXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoMUFsZXJ0ID0gXCJNMjEgMUwxIDIxSDE3VjE5SDExVjEzLjhMMTkgNS44VjlIMjFNMTkgMTFWMTdIMjFWMTFNMTkgMTlWMjFIMjFWMTlcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrU3RyZW5ndGgyID0gXCJNMSwyMUgyMVYxTTE5LDUuODNWMTlIMTNWMTEuODNcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrU3RyZW5ndGgyQWxlcnQgPSBcIk0yMSAxTDEgMjFIMTdWMTlIMTNWMTEuOEwxOSA1LjhWOUgyMU0xOSAxMVYxN0gyMVYxMU0xOSAxOVYyMUgyMVYxOVwiO1xyXG5leHBvcnQgdmFyIG1kaU5ldHdvcmtTdHJlbmd0aDMgPSBcIk0xLDIxSDIxVjFNMTksNS44M1YxOUgxNlY4LjgzXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoM0FsZXJ0ID0gXCJNMjEgMUwxIDIxSDE3VjE5SDE2VjguOEwxOSA1LjhWOUgyMU0xOSAxMVYxN0gyMVYxMU0xOSAxOVYyMUgyMVYxOVwiO1xyXG5leHBvcnQgdmFyIG1kaU5ldHdvcmtTdHJlbmd0aDQgPSBcIk0xLDIxSDIxVjFcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrU3RyZW5ndGg0QWxlcnQgPSBcIk0xOSAxN0gyMVYxMUgxOU0xOSAyMUgyMVYxOUgxOU0xIDIxSDE3VjlIMjFWMVwiO1xyXG5leHBvcnQgdmFyIG1kaU5ldHdvcmtTdHJlbmd0aE9mZiA9IFwiTTIxLDFMMTIuNCw5LjZMMjEsMTguMTlNNC43Nyw0LjVMMy41LDUuNzdMOS44NiwxMi4xM0wxLDIxSDE4LjczTDIwLjczLDIzTDIyLDIxLjczXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoT2ZmT3V0bGluZSA9IFwiTTIxLDFMMTIuNCw5LjZMMTMuODUsMTEuMDVMMTksNS44M1YxNi4xOUwyMSwxOC4xOU00Ljc3LDQuNUwzLjUsNS43N0w5Ljg2LDEyLjEzTDEsMjFIMTguNzNMMjAuNzMsMjNMMjIsMjEuNzNNMTEuMzMsMTMuNkwxNi43MywxOUg2XCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoT3V0bGluZSA9IFwiTTEsMjFIMjFWMU0xOSw1LjgzVjE5SDZcIjtcclxuZXhwb3J0IHZhciBtZGlOZXdCb3ggPSBcIk0yMCw0QzIxLjExLDQgMjIsNC44OSAyMiw2VjE4QzIyLDE5LjExIDIxLjExLDIwIDIwLDIwSDRDMi44OSwyMCAyLDE5LjExIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgyME04LjUsMTVWOUg3LjI1VjEyLjVMNC43NSw5SDMuNVYxNUg0Ljc1VjExLjVMNy4zLDE1SDguNU0xMy41LDEwLjI2VjlIOS41VjE1SDEzLjVWMTMuNzVIMTFWMTIuNjRIMTMuNVYxMS4zOEgxMVYxMC4yNkgxMy41TTIwLjUsMTRWOUgxOS4yNVYxMy41SDE4LjEzVjEwSDE2Ljg4VjEzLjVIMTUuNzVWOUgxNC41VjE0QTEsMSAwIDAsMCAxNS41LDE1SDE5LjVBMSwxIDAgMCwwIDIwLjUsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV3c3BhcGVyID0gXCJNMjAsMTFINFY4SDIwTTIwLDE1SDEzVjEzSDIwTTIwLDE5SDEzVjE3SDIwTTExLDE5SDRWMTNIMTFNMjAuMzMsNC42N0wxOC42NywzTDE3LDQuNjdMMTUuMzMsM0wxMy42Nyw0LjY3TDEyLDNMMTAuMzMsNC42N0w4LjY3LDNMNyw0LjY3TDUuMzMsM0wzLjY3LDQuNjdMMiwzVjE5QTIsMiAwIDAsMCA0LDIxSDIwQTIsMiAwIDAsMCAyMiwxOVYzTDIwLjMzLDQuNjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV3c3BhcGVyTWludXMgPSBcIk0yMiwxN1YxOUgxNFYxN0gyMk0yMCwxMVY4SDRWMTFIMjBNMTMsMTNWMTQuNjhDMTIuMzcsMTUuNjMgMTIsMTYuNzcgMTIsMThDMTIsMTkuMDkgMTIuMjksMjAuMTIgMTIuOCwyMUg0QTIsMiAwIDAsMSAyLDE5VjNMMy42Nyw0LjY3TDUuMzMsM0w3LDQuNjdMOC42NywzTDEwLjMzLDQuNjdMMTIsM0wxMy42Nyw0LjY3TDE1LjMzLDNMMTcsNC42N0wxOC42NywzTDIwLjMzLDQuNjdMMjIsM1YxMy41QzIwLjkzLDEyLjU4IDE5LjUzLDEyIDE4LDEyQzE2Ljc3LDEyIDE1LjYzLDEyLjM3IDE0LjY4LDEzSDEzTTExLDE5VjEzSDRWMTlIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV3c3BhcGVyUGx1cyA9IFwiTTE3LDE0SDE5VjE3SDIyVjE5SDE5VjIySDE3VjE5SDE0VjE3SDE3VjE0TTIwLDExVjhINFYxMUgyME0xMywxM1YxNC42OEMxMi4zNywxNS42MyAxMiwxNi43NyAxMiwxOEMxMiwxOS4wOSAxMi4yOSwyMC4xMiAxMi44LDIxSDRBMiwyIDAgMCwxIDIsMTlWM0wzLjY3LDQuNjdMNS4zMywzTDcsNC42N0w4LjY3LDNMMTAuMzMsNC42N0wxMiwzTDEzLjY3LDQuNjdMMTUuMzMsM0wxNyw0LjY3TDE4LjY3LDNMMjAuMzMsNC42N0wyMiwzVjEzLjVDMjAuOTMsMTIuNTggMTkuNTMsMTIgMTgsMTJDMTYuNzcsMTIgMTUuNjMsMTIuMzcgMTQuNjgsMTNIMTNNMTEsMTlWMTNINFYxOUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOZXdzcGFwZXJWYXJpYW50ID0gXCJNMjAgM0g0QzIuODkgMyAyIDMuODkgMiA1VjE5QzIgMjAuMTEgMi44OSAyMSA0IDIxSDIwQzIxLjExIDIxIDIyIDIwLjExIDIyIDE5VjVDMjIgMy44OSAyMS4xMSAzIDIwIDNNNSA3SDEwVjEzSDVWN00xOSAxN0g1VjE1SDE5VjE3TTE5IDEzSDEyVjExSDE5VjEzTTE5IDlIMTJWN0gxOVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5ld3NwYXBlclZhcmlhbnRNdWx0aXBsZSA9IFwiTTQgN1YxOUgxOVYyMUg0QzIgMjEgMiAxOSAyIDE5VjdINE0yMS4zIDNINy43QzYuNzYgMyA2IDMuNyA2IDQuNTVWMTUuNDVDNiAxNi4zMSA2Ljc2IDE3IDcuNyAxN0gyMS4zQzIyLjI0IDE3IDIzIDE2LjMxIDIzIDE1LjQ1VjQuNTVDMjMgMy43IDIyLjI0IDMgMjEuMyAzTTggNUgxM1YxMUg4VjVNMjEgMTVIOFYxM0gyMVYxNU0yMSAxMUgxNVY5SDIxVjExTTIxIDdIMTVWNUgyMVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5ld3NwYXBlclZhcmlhbnRNdWx0aXBsZU91dGxpbmUgPSBcIk00IDdWMTlIMTlWMjFINEMyIDIxIDIgMTkgMiAxOVY3SDRNMjEgNVYxNUg4VjVIMjFNMjEuMyAzSDcuN0M2Ljc2IDMgNiAzLjcgNiA0LjU1VjE1LjQ1QzYgMTYuMzEgNi43NiAxNyA3LjcgMTdIMjEuM0MyMi4yNCAxNyAyMyAxNi4zMSAyMyAxNS40NVY0LjU1QzIzIDMuNyAyMi4yNCAzIDIxLjMgM005IDZIMTJWMTFIOVY2TTIwIDE0SDlWMTJIMjBWMTRNMjAgOEgxNFY2SDIwVjhNMjAgMTFIMTRWOUgyMFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOZXdzcGFwZXJWYXJpYW50T3V0bGluZSA9IFwiTTIwIDVMMjAgMTlMNCAxOUw0IDVIMjBNMjAgM0g0QzIuODkgMyAyIDMuODkgMiA1VjE5QzIgMjAuMTEgMi44OSAyMSA0IDIxSDIwQzIxLjExIDIxIDIyIDIwLjExIDIyIDE5VjVDMjIgMy44OSAyMS4xMSAzIDIwIDNNMTggMTVINlYxN0gxOFYxNU0xMCA3SDZWMTNIMTBWN00xMiA5SDE4VjdIMTJWOU0xOCAxMUgxMlYxM0gxOFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOZmMgPSBcIk03LjI0IDJDNS42IDIgMy45NiAyIDMuNTUgMi4wNEMyLjY3IDIuMDkgMi4wOCAyLjczIDIuMDQgMy41NkMyIDQuMzcgMiAxOS41OSAyLjA0IDIwLjQxQzIuMDkgMjEuMjMgMi43MSAyMS44NiAzLjU1IDIxLjkxQzQuNDYgMjEuOTYgNy40NCAyMS45NyA4LjI5IDIxLjk3QzYuNzYgMjAuOTEgNi41NSAxOC45MiA2LjQxIDE1LjIzQzYuMzMgMTMuMDQgNi40IDUuMzYgNi40MSA1LjA0TDYuNDUgMi45NEwxNC41IDExVjEzLjVMOC4wOSA3LjExQzguMDggOC4zOCA4LjA2IDEwLjAzIDguMDYgMTEuNTRDOC4wNiAxMyA4LjA4IDE0LjM0IDguMTIgMTUuMDVDOC4zNiAxOS4wNyA4Ljc0IDIwLjk2IDEwLjgzIDIxLjdDMTEuNSAyMS45MyAxMi4wNyAyMiAxMy4wNyAyMkMxMy44OSAyMiAxOS42MyAyMiAyMC40NSAyMS45NkMyMS4zMyAyMS45MSAyMS45MyAyMS4yNyAyMS45NyAyMC40NEMyMiAxOS42MyAyMiA0LjQ1IDIxLjk3IDMuNjJDMjEuOTEgMi44IDIxLjI5IDIuMTggMjAuNDUgMi4xM0MxOS41NCAyLjA4IDE2LjU3IDIuMDMgMTUuNzEgMi4wM0MxNy4yNCAzLjA5IDE3LjQ0IDUuMDggMTcuNTkgOC43OEMxNy42NyAxMC45NyAxNy42IDE4LjY0IDE3LjU5IDE4Ljk3TDE3LjU1IDIxLjA2TDkuNTMgMTNWMTAuNUwxNS45MSAxNi44OUMxNS45MiAxNS42MiAxNS45NCAxMy45NyAxNS45NCAxMi40NkMxNS45NCAxMSAxNS45MiA5LjY2IDE1Ljg4IDguOTZDMTUuNjQgNC45MyAxNS4yNiAzLjA0IDEzLjE3IDIuM0MxMi41MyAyLjA3IDExLjkzIDIgMTAuOTMgMkg3LjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5mY1NlYXJjaFZhcmlhbnQgPSBcIk0xNi41LDEyQzE5LDEyIDIxLDE0IDIxLDE2LjVDMjEsMTcuMzggMjAuNzYsMTguMjEgMjAuMzIsMTguOUwyMy40LDIyTDIyLDIzLjM5TDE4Ljg5LDIwLjMyQzE4LjIsMjAuNzUgMTcuMzgsMjEgMTYuNSwyMUMxNCwyMSAxMiwxOSAxMiwxNi41QzEyLDE0IDE0LDEyIDE2LjUsMTJNMTYuNSwxNEEyLjUsMi41IDAgMCwwIDE0LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE5QzE3Ljg5LDE5IDE5LDE3Ljg4IDE5LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE0TTE4LDZWMTAuMThDMTcuMzMsMTAgMTYuNjYsOS45NyAxNiwxMFY4SDEzVjEwLjI4TDEzLjUzLDEwLjcyQzEyLjM0LDExLjMzIDExLjM1LDEyLjMgMTAuNzIsMTMuNTNDMTAuMjgsMTMuMTcgMTAsMTIuNjIgMTAsMTJDMTAsMTEuMjYgMTAuNDEsMTAuNjIgMTEsMTAuMjhWOEEyLDIgMCAwLDEgMTMsNkgxOE02LDE4VjZIOEwxMCw2VjhIOFYxNkgxMEM5Ljk2LDE2LjY4IDEwLDE3LjM1IDEwLjE3LDE4SDZNMjAsNEg0VjIwSDExQzExLjUzLDIwLjggMTIuMjEsMjEuNSAxMy4wMywyMkg0QzIuODksMjIgMiwyMS4xIDIsMjBWNEEyLDIgMCAwLDEgNCwySDIwQTIsMiAwIDAsMSAyMiw0VjEzLjA0QzIxLjUsMTIuMjQgMjAuODIsMTEuNTQgMjAsMTFWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOZmNUYXAgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNNCw0SDExQTIsMiAwIDAsMSAxMyw2VjlIMTFWNkg0VjExSDZWOUw5LDEyTDYsMTVWMTNINEEyLDIgMCAwLDEgMiwxMVY2QTIsMiAwIDAsMSA0LDRNMjAsMjBIMTNBMiwyIDAgMCwxIDExLDE4VjE1SDEzVjE4SDIwVjEzSDE4VjE1TDE1LDEyTDE4LDlWMTFIMjBBMiwyIDAgMCwxIDIyLDEzVjE4QTIsMiAwIDAsMSAyMCwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlOZmNWYXJpYW50ID0gXCJNMTgsNkgxM0EyLDIgMCAwLDAgMTEsOFYxMC4yOEMxMC40MSwxMC42MiAxMCwxMS4yNiAxMCwxMkEyLDIgMCAwLDAgMTIsMTRDMTMuMTEsMTQgMTQsMTMuMSAxNCwxMkMxNCwxMS4yNiAxMy42LDEwLjYyIDEzLDEwLjI4VjhIMTZWMTZIOFY4SDEwVjZIOEw2LDZWMThIMThNMjAsMjBINFY0SDIwTTIwLDJINEEyLDIgMCAwLDAgMiw0VjIwQTIsMiAwIDAsMCA0LDIySDIwQzIxLjExLDIyIDIyLDIxLjEgMjIsMjBWNEMyMiwyLjg5IDIxLjExLDIgMjAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOZmNWYXJpYW50T2ZmID0gXCJNMS4yNSwyLjA1TDIxLjk1LDIyLjc1TDIwLjcsMjRMMTguNywyMkg0QTIsMiAwIDAsMSAyLDIwVjUuM0wwLDMuM0wxLjI1LDIuMDVNMy44MSwyQzMuODcsMiAzLjk0LDIgNCwySDIwQzIxLjExLDIgMjIsMi44OSAyMiw0VjIwQzIyLDIwLjA2IDIyLDIwLjEzIDIyLDIwLjE5TDIwLDE4LjJWNEg1LjhMMy44MSwyTTYsOS4zTDQsNy4zVjIwSDE2LjdMMTQuNywxOEg2VjkuM00xOCwxNi4yTDE2LDE0LjJWOEgxM1YxMC4yOEMxMy42LDEwLjYyIDE0LDExLjI2IDE0LDEyQzE0LDEyLjA2IDE0LDEyLjEzIDE0LDEyLjE5TDExLDkuMlY4QTIsMiAwIDAsMSAxMyw2SDE4VjE2LjJNOCwxNkgxMi43TDgsMTEuM1YxNk0xMCw4SDkuOEw3LjgsNkgxMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5pbmphID0gXCJNNy43NSwxM0M3Ljc0LDEyLjY1IDcuOSwxMi4zMSA4LjE3LDEyLjA4QzguOTIsMTIuMjQgOS42MiwxMi41NSAxMC4yNSwxM0MxMC4yNSwxMy42OCA5LjY5LDE0LjI0IDksMTQuMjRDOC4zMSwxNC4yNCA3Ljc2LDEzLjY5IDcuNzUsMTNNMTMuNzUsMTNDMTQuMzgsMTIuNTYgMTUuMDgsMTIuMjUgMTUuODMsMTIuMDlDMTYuMSwxMi4zMiAxNi4yNiwxMi42NiAxNi4yNSwxM0MxNi4yNSwxMy43IDE1LjY5LDE0LjI2IDE1LDE0LjI2QzE0LjMxLDE0LjI2IDEzLjc1LDEzLjcgMTMuNzUsMTNWMTNNMTIsOUM5LjIzLDguOTYgNi41LDkuNjUgNC4wNywxMUw0LDEyQzQsMTMuMjMgNC4yOSwxNC40NCA0Ljg0LDE1LjU0QzcuMjEsMTUuMTggOS42LDE1IDEyLDE1QzE0LjQsMTUgMTYuNzksMTUuMTggMTkuMTYsMTUuNTRDMTkuNzEsMTQuNDQgMjAsMTMuMjMgMjAsMTJMMTkuOTMsMTFDMTcuNSw5LjY1IDE0Ljc3LDguOTYgMTIsOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOaW50ZW5kb0dhbWVCb3kgPSBcIk03IDFDNS45IDEgNSAxLjkgNSAzVjIxQzUgMjIuMTEgNS45IDIzIDcgMjNIMTRDMTYuNzYgMjMgMTkgMjAuNzYgMTkgMThWM0MxOSAxLjkgMTguMTEgMSAxNyAxSDdNOCA0SDE2VjExSDhWNE05IDE0SDEwVjE2SDEyVjE3SDEwVjE5SDlWMTdIN1YxNkg5VjE0TTE2IDE1QzE2LjU1IDE1IDE3IDE1LjQ1IDE3IDE2QzE3IDE2LjU1IDE2LjU1IDE3IDE2IDE3QzE1LjQ1IDE3IDE1IDE2LjU1IDE1IDE2QzE1IDE1LjQ1IDE1LjQ1IDE1IDE2IDE1TTE0IDE3QzE0LjU1IDE3IDE1IDE3LjQ1IDE1IDE4QzE1IDE4LjU1IDE0LjU1IDE5IDE0IDE5QzEzLjQ1IDE5IDEzIDE4LjU1IDEzIDE4QzEzIDE3LjQ1IDEzLjQ1IDE3IDE0IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5pbnRlbmRvU3dpdGNoID0gXCJNMTAuMDQsMjAuNEg3LjEyQzYuMTksMjAuNCA1LjMsMjAgNC42NCwxOS4zNkM0LDE4LjcgMy42LDE3LjgxIDMuNiwxNi44OFY3LjEyQzMuNiw2LjE5IDQsNS4zIDQuNjQsNC42NEM1LjMsNCA2LjE5LDMuNjIgNy4xMiwzLjYySDEwLjA0VjIwLjRNNy4xMiwyQTUuMTIsNS4xMiAwIDAsMCAyLDcuMTJWMTYuODhDMiwxOS43MSA0LjI5LDIyIDcuMTIsMjJIMTEuNjVWMkg3LjEyTTUuMTEsOEM1LjExLDkuMDQgNS45NSw5Ljg4IDcsOS44OEM4LjAzLDkuODggOC44Nyw5LjA0IDguODcsOEM4Ljg3LDYuOTYgOC4wMyw2LjEyIDcsNi4xMkM1Ljk1LDYuMTIgNS4xMSw2Ljk2IDUuMTEsOE0xNy42MSwxMUMxOC43MiwxMSAxOS42MiwxMS44OSAxOS42MiwxM0MxOS42MiwxNC4xMiAxOC43MiwxNSAxNy42MSwxNUMxNi41LDE1IDE1LjU4LDE0LjEyIDE1LjU4LDEzQzE1LjU4LDExLjg5IDE2LjUsMTEgMTcuNjEsMTFNMTYuODgsMjJBNS4xMiw1LjEyIDAgMCwwIDIyLDE2Ljg4VjcuMTJDMjIsNC4yOSAxOS43MSwyIDE2Ljg4LDJIMTMuNjVWMjJIMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmludGVuZG9XaWkgPSBcIk0xNy44NCwxNi45NEgxNS45N1YxMC43OUgxNy44NFYxNi45NE0xOCw4LjU4QzE4LDkuMTkgMTcuNSw5LjY5IDE2LjksOS42OUExLjExLDEuMTEgMCAwLDEgMTUuNzksOC41OEMxNS43OSw3Ljk2IDE2LjI5LDcuNDYgMTYuOSw3LjQ2QzE3LjUsNy40NiAxOCw3Ljk2IDE4LDguNThNMjEuODIsMTYuOTRIMTkuOTRWMTAuNzlIMjEuODJWMTYuOTRNMjIsOC41OEMyMiw5LjE5IDIxLjUsOS42OSAyMC44OCw5LjY5QTEuMTEsMS4xMSAwIDAsMSAxOS43Nyw4LjU4QzE5Ljc3LDcuOTYgMjAuMjcsNy40NiAyMC44OCw3LjQ2QzIxLjUsNy40NiAyMiw3Ljk2IDIyLDguNThNMTIuOSw4LjA1SDE0LjlMMTIuNzgsMTUuNUMxMi43OCwxNS41IDEyLjUsMTcuMDQgMTEuMjgsMTcuMDRDMTAuMDcsMTcuMDQgOS43OSwxNS41IDkuNzksMTUuNUw4LjQ1LDEwLjY0TDcuMTEsMTUuNUM3LjExLDE1LjUgNi44MiwxNy4wNCA1LjYxLDE3LjA0QzQuNCwxNy4wNCA0LjEyLDE1LjUgNC4xMiwxNS41TDIsOC4wNUg0TDUuNzIsMTQuNjdMNy4xMSw5LjNDNy40Myw3Ljk1IDguNDUsNy45NyA4LjQ1LDcuOTdDOC40NSw3Ljk3IDkuNDcsNy45NSA5Ljc5LDkuM0wxMS4xNywxNC42N0wxMi45LDguMDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmludGVuZG9XaWl1ID0gXCJNMiwxNS45NkMyLDE4LjE5IDMuNTQsMTkuNSA1Ljc5LDE5LjVIMTguNTdDMjAuNDcsMTkuNSAyMiwxOC4yIDIyLDE2LjMyVjYuOTdDMjIsNS44MyAyMS4xNSw0LjYgMjAuMTEsNC42SDE3LjE1VjEyLjNDMTcuMTUsMTguMTQgNi45NywxOC4wOSA2Ljk3LDEyLjQxVjQuNUg0LjcyQzMuMjYsNC41IDIsNS40MSAyLDYuODVWMTUuOTZNOS4zNCwxMS4yM0M5LjM0LDE1Ljc0IDE0LjY2LDE1LjA5IDE0LjY2LDExLjk0VjQuNUg5LjM0VjExLjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5peCA9IFwiTTkuOSA4LjdMNSAxNy4yTDMuOSAxNS4zTDUuMiAxM0gyLjZMMiAxMkwyLjYgMTFINi4zTDcuNiA4LjdIOS45TTEwLjIgMTUuNUgxOS45TDE4LjggMTcuNEgxNi4yTDE3LjUgMTkuN0wxNi45IDIwLjdIMTUuOEwxNCAxNy40SDExLjNMMTAuMiAxNS41TTE1LjkgMTEuOEwxMSAzLjNIMTMuMkwxNC41IDUuNkwxNS44IDMuM0gxNi45TDE3LjUgNC4zTDE1LjYgNy41TDE3IDkuOEwxNS45IDExLjhNMTMuOCA4LjVINEw1LjEgNi42SDcuN0w2LjQgNC4zTDcgMy4zSDguMUwxMCA2LjVIMTIuN0wxMy44IDguNU0xNC4xIDE1LjNMMTkgNi44TDIwLjEgOC43TDE4LjggMTFIMjEuNEwyMiAxMkwyMS40IDEzSDE3LjdMMTYuNCAxNS4zSDE0LjFNOC4xIDEyLjJMMTMgMjAuNkgxMC44TDkuNSAxOC4zTDguNCAyMC42SDcuMUw2LjUgMTkuNkw4LjQgMTYuNEw3IDE0LjJMOC4xIDEyLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm9kZWpzID0gXCJNMTIsMS44NUMxMS43MywxLjg1IDExLjQ1LDEuOTIgMTEuMjIsMi4wNUwzLjc4LDYuMzVDMy4zLDYuNjMgMyw3LjE1IDMsNy43MVYxNi4yOUMzLDE2Ljg1IDMuMywxNy4zNyAzLjc4LDE3LjY1TDUuNzMsMTguNzdDNi42OCwxOS4yMyA3LDE5LjI0IDcuNDQsMTkuMjRDOC44NCwxOS4yNCA5LjY1LDE4LjM5IDkuNjUsMTYuOTFWOC40NEM5LjY1LDguMzIgOS41NSw4LjIyIDkuNDMsOC4yMkg4LjVDOC4zNyw4LjIyIDguMjcsOC4zMiA4LjI3LDguNDRWMTYuOTFDOC4yNywxNy41NyA3LjU5LDE4LjIyIDYuNSwxNy42N0w0LjQ1LDE2LjVDNC4zOCwxNi40NSA0LjM0LDE2LjM3IDQuMzQsMTYuMjlWNy43MUM0LjM0LDcuNjIgNC4zOCw3LjU0IDQuNDUsNy41TDExLjg5LDMuMjFDMTEuOTUsMy4xNyAxMi4wNSwzLjE3IDEyLjExLDMuMjFMMTkuNTUsNy41QzE5LjYyLDcuNTQgMTkuNjYsNy42MiAxOS42Niw3LjcxVjE2LjI5QzE5LjY2LDE2LjM3IDE5LjYyLDE2LjQ1IDE5LjU1LDE2LjVMMTIuMTEsMjAuNzlDMTIuMDUsMjAuODMgMTEuOTUsMjAuODMgMTEuODgsMjAuNzlMMTAsMTkuNjVDOS45MiwxOS42MiA5Ljg0LDE5LjYxIDkuNzksMTkuNjRDOS4yNiwxOS45NCA5LjE2LDIwIDguNjcsMjAuMTVDOC41NSwyMC4xOSA4LjM2LDIwLjI2IDguNzQsMjAuNDdMMTEuMjIsMjEuOTRDMTEuNDYsMjIuMDggMTEuNzIsMjIuMTUgMTIsMjIuMTVDMTIuMjgsMjIuMTUgMTIuNTQsMjIuMDggMTIuNzgsMjEuOTRMMjAuMjIsMTcuNjVDMjAuNywxNy4zNyAyMSwxNi44NSAyMSwxNi4yOVY3LjcxQzIxLDcuMTUgMjAuNyw2LjYzIDIwLjIyLDYuMzVMMTIuNzgsMi4wNUMxMi41NSwxLjkyIDEyLjI4LDEuODUgMTIsMS44NU0xNCw4QzExLjg4LDggMTAuNjEsOC44OSAxMC42MSwxMC4zOUMxMC42MSwxMiAxMS44NywxMi40NyAxMy45MSwxMi42N0MxNi4zNCwxMi45MSAxNi41MywxMy4yNyAxNi41MywxMy43NUMxNi41MywxNC41OCAxNS44NiwxNC45MyAxNC4zLDE0LjkzQzEyLjMyLDE0LjkzIDExLjksMTQuNDQgMTEuNzUsMTMuNDZDMTEuNzMsMTMuMzYgMTEuNjQsMTMuMjggMTEuNTMsMTMuMjhIMTAuNTdDMTAuNDUsMTMuMjggMTAuMzYsMTMuMzcgMTAuMzYsMTMuNUMxMC4zNiwxNC43NCAxMS4wNCwxNi4yNCAxNC4zLDE2LjI0QzE2LjY1LDE2LjI0IDE4LDE1LjMxIDE4LDEzLjY5QzE4LDEyLjA4IDE2LjkyLDExLjY2IDE0LjYzLDExLjM1QzEyLjMyLDExLjA1IDEyLjA5LDEwLjg5IDEyLjA5LDEwLjM1QzEyLjA5LDkuOSAxMi4yOSw5LjMgMTQsOS4zQzE1LjUsOS4zIDE2LjA5LDkuNjMgMTYuMzIsMTAuNjZDMTYuMzQsMTAuNzYgMTYuNDMsMTAuODMgMTYuNTMsMTAuODNIMTcuNUMxNy41NSwxMC44MyAxNy42MSwxMC44MSAxNy42NSwxMC43NkMxNy42OSwxMC43MiAxNy43MiwxMC42NiAxNy43LDEwLjZDMTcuNTYsOC44MiAxNi4zOCw4IDE0LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm9vZGxlcyA9IFwiTTIyIDNMMTAgNC40MVY2SDIyVjdIMTBWMTJIMjJDMjIgMTMuODEgMjEuNDMgMTUuNDYgMjAuMzIgMTYuOTVTMTcuNzcgMTkuNTMgMTYgMjAuMjVWMjJIOFYyMC4yNUM2LjI0IDE5LjUzIDQuNzkgMTguNDMgMy42OCAxNi45NVMyIDEzLjgxIDIgMTJINVY0TDIyIDJWM002IDQuODhWNkg3VjQuNzhMNiA0Ljg4TTYgN1YxMkg3VjdINk05IDEyVjdIOFYxMkg5TTkgNlY0LjU1TDggNC42NFY2SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90RXF1YWwgPSBcIk0yMSwxMEg5VjhIMjFWMTBNMjEsMTZIOVYxNEgyMVYxNk00LDVINlYxNkg0VjVNNiwxOFYyMEg0VjE4SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90RXF1YWxWYXJpYW50ID0gXCJNMTQuMDgsNC42MUwxNS45Miw1LjRMMTQuOCw4SDE5VjEwSDEzLjk1TDEyLjIzLDE0SDE5VjE2SDExLjM4TDkuOTIsMTkuNEw4LjA4LDE4LjYxTDkuMiwxNkg1VjE0SDEwLjA2TDExLjc3LDEwSDVWOEgxMi42M0wxNC4wOCw0LjYxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGUgPSBcIk0xNCwxMFY0LjVMMTkuNSwxME01LDNDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjlMMTUsM0g1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVNaW51cyA9IFwiTTE1IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjlMMTUgM00xNCAxNUg2VjEzSDE0VjE1TTE0IDEwVjQuNUwxOS41IDEwSDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVNaW51c091dGxpbmUgPSBcIk0xNiAzSDRDMi44OSAzIDIgMy44OSAyIDVWMTlDMiAyMC4xIDIuODkgMjEgNCAyMUgyMEMyMS4xMSAyMSAyMiAyMC4xMSAyMiAxOVY5TDE2IDNNMjAgMTlINFY1SDEzVjEySDIwVjE5TTE1IDEwVjQuNUwyMC41IDEwSDE1TTYgMTNIMTJWMTVINlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlTXVsdGlwbGUgPSBcIk0xNiw5SDIxLjVMMTYsMy41VjlNNywySDE3TDIzLDhWMThBMiwyIDAgMCwxIDIxLDIwSDdDNS44OSwyMCA1LDE5LjEgNSwxOFY0QTIsMiAwIDAsMSA3LDJNMyw2VjIySDIxVjI0SDNBMiwyIDAgMCwxIDEsMjJWNkgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVNdWx0aXBsZU91dGxpbmUgPSBcIk0zLDZWMjJIMjFWMjRIM0EyLDIgMCAwLDEgMSwyMlY2SDNNMTYsOUgyMS41TDE2LDMuNVY5TTcsMkgxN0wyMyw4VjE4QTIsMiAwIDAsMSAyMSwyMEg3QzUuODksMjAgNSwxOS4xIDUsMThWNEEyLDIgMCAwLDEgNywyTTcsNFYxOEgyMVYxMUgxNFY0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZU91dGxpbmUgPSBcIk0xNCwxMEgxOS41TDE0LDQuNVYxME01LDNIMTVMMjEsOVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNNNSw1VjE5SDE5VjEySDEyVjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlUGx1cyA9IFwiTTE0LDEwSDE5LjVMMTQsNC41VjEwTTUsM0gxNUwyMSw5VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM005LDE4SDExVjE1SDE0VjEzSDExVjEwSDlWMTNINlYxNUg5VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVQbHVzT3V0bGluZSA9IFwiTTE1LDEwSDIwLjVMMTUsNC41VjEwTTQsM0gxNkwyMiw5VjE5QTIsMiAwIDAsMSAyMCwyMUg0QzIuODksMjEgMiwyMC4xIDIsMTlWNUMyLDMuODkgMi44OSwzIDQsM000LDVWMTlIMjBWMTJIMTNWNUg0TTgsMTdWMTVINlYxM0g4VjExSDEwVjEzSDEyVjE1SDEwVjE3SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZVJlbW92ZSA9IFwiTTE1IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjlMMTUgM00xMy41NCAxNi4xMkwxMi4xMiAxNy41NEwxMCAxNS40MUw3Ljg4IDE3LjU0TDYuNDcgMTYuMTJMOC41OSAxNEw2LjQ3IDExLjg4TDcuODggMTAuNDdMMTAgMTIuNTlMMTIuMTIgMTAuNDdMMTMuNTQgMTEuODhMMTEuNDEgMTRMMTMuNTQgMTYuMTJNMTQgMTBWNC41TDE5LjUgMTBIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZVJlbW92ZU91dGxpbmUgPSBcIk0xNiAzSDRDMi44OSAzIDIgMy44OSAyIDVWMTlDMiAyMC4xIDIuODkgMjEgNCAyMUgyMEMyMS4xMSAyMSAyMiAyMC4xMSAyMiAxOVY5TDE2IDNNMjAgMTlINFY1SDEzVjEySDIwVjE5TTE1IDEwVjQuNUwyMC41IDEwSDE1TTExLjgzIDEyLjU5TDEwLjQxIDE0TDExLjgzIDE1LjQxTDEwLjQxIDE2LjgzTDkgMTUuNDFMNy41OSAxNi44M0w2LjE3IDE1LjQxTDcuNTkgMTRMNi4xNyAxMi41OUw3LjU5IDExLjE3TDkgMTIuNTlMMTAuNDEgMTEuMTdMMTEuODMgMTIuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZVNlYXJjaCA9IFwiTTE1IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxMC44MkM1LjU1IDguMzcgOS41OSA4LjQgMTIuMSAxMC45QzE0LjYzIDEzLjQ0IDE0LjYzIDE3LjU2IDEyLjEgMjAuMUMxMS43NCAyMC40NSAxMS4zNSAyMC43NCAxMC45NCAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY5TDE1IDNNMTQgMTBWNC41TDE5LjUgMTBIMTRNNy41IDExQzUgMTEgMyAxMyAzIDE1LjVDMyAxNi4zOCAzLjI1IDE3LjIxIDMuNjkgMTcuOUwuNjEgMjFMMiAyMi4zOUw1LjEyIDE5LjMyQzUuODEgMTkuNzUgNi42MyAyMCA3LjUgMjBDMTAgMjAgMTIgMTggMTIgMTUuNVMxMCAxMSA3LjUgMTFNNy41IDE4QzYuMTIgMTggNSAxNi44OCA1IDE1LjVTNi4xMiAxMyA3LjUgMTMgMTAgMTQuMTIgMTAgMTUuNSA4Ljg4IDE4IDcuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlU2VhcmNoT3V0bGluZSA9IFwiTTE1IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxMC44MkMzLjYgMTAuMjQgNC4yOCA5LjggNSA5LjVWNUgxMlYxMC44MkMxMi4wMyAxMC44NSAxMi4wNyAxMC44NyAxMi4xIDEwLjlDMTIuNDQgMTEuMjQgMTIuNzMgMTEuNjEgMTIuOTcgMTJIMTlWMTlIMTIuOTdDMTIuNzMgMTkuMzkgMTIuNDQgMTkuNzYgMTIuMSAyMC4xQzExLjc0IDIwLjQ1IDExLjM1IDIwLjc0IDEwLjk0IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjlMMTUgM00xNCAxMFY0LjVMMTkuNSAxMEgxNE03LjUgMTFDNSAxMSAzIDEzIDMgMTUuNUMzIDE2LjM4IDMuMjUgMTcuMjEgMy42OSAxNy45TC42MSAyMUwyIDIyLjM5TDUuMTIgMTkuMzJDNS44MSAxOS43NSA2LjYzIDIwIDcuNSAyMEMxMCAyMCAxMiAxOCAxMiAxNS41UzEwIDExIDcuNSAxMU03LjUgMThDNi4xMiAxOCA1IDE2Ljg4IDUgMTUuNVM2LjEyIDEzIDcuNSAxMyAxMCAxNC4xMiAxMCAxNS41IDguODggMTggNy41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVUZXh0ID0gXCJNMTQsMTBIMTkuNUwxNCw0LjVWMTBNNSwzSDE1TDIxLDlWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzTTUsMTJWMTRIMTlWMTJINU01LDE2VjE4SDE0VjE2SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZVRleHRPdXRsaW5lID0gXCJNMTUgM0g1QTIgMiAwIDAgMCAzIDVWMTlBMiAyIDAgMCAwIDUgMjFIMTlBMiAyIDAgMCAwIDIxIDE5VjlMMTUgM00xOSAxOUg1VjVIMTRWMTBIMTlNMTcgMTRIN1YxMkgxN00xNCAxN0g3VjE1SDE0XCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZWJvb2sgPSBcIk0zLDdWNUg1VjRDNSwyLjg5IDUuOSwyIDcsMkgxM1Y5TDE1LjUsNy41TDE4LDlWMkgxOUMyMC4wNSwyIDIxLDIuOTUgMjEsNFYyMEMyMSwyMS4wNSAyMC4wNSwyMiAxOSwyMkg3QzUuOTUsMjIgNSwyMS4wNSA1LDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzTTcsMTFINVYxM0g3VjExTTcsN1Y1SDVWN0g3TTcsMTlWMTdINVYxOUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVib29rQ2hlY2sgPSBcIk0xNi43NSAyMi4xNkwxNCAxOS4xNkwxNS4xNiAxOEwxNi43NSAxOS41OUwyMC4zNCAxNkwyMS41IDE3LjQxTDE2Ljc1IDIyLjE2TTMgN1Y1SDVWNEM1IDIuODkgNS45IDIgNyAySDEzVjlMMTUuNSA3LjVMMTggOVYySDE5QzIwLjA1IDIgMjEgMi45NSAyMSA0VjEzLjhDMjAuMTIgMTMuMjkgMTkuMDkgMTMgMTggMTNDMTQuNjkgMTMgMTIgMTUuNjkgMTIgMTlDMTIgMjAuMDkgMTIuMjkgMjEuMTIgMTIuOCAyMkg3QzUuOTUgMjIgNSAyMS4wNSA1IDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzTTUgNVY3SDdWNUg1TTUgMTlIN1YxN0g1VjE5TTUgMTNIN1YxMUg1VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVib29rQ2hlY2tPdXRsaW5lID0gXCJNMTYuNzUgMjIuMTZMMTQgMTkuMTZMMTUuMTYgMThMMTYuNzUgMTkuNTlMMjAuMzQgMTZMMjEuNSAxNy40MUwxNi43NSAyMi4xNk0xNyA0VjEwTDE1IDhMMTMgMTBWNEg5VjIwSDEyLjA4QzEyLjIgMjAuNzIgMTIuNDUgMjEuMzkgMTIuOCAyMkg3QzUuOTUgMjIgNSAyMS4wNSA1IDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzVjVINVY0QzUgMi44OSA1LjkgMiA3IDJIMTlDMjAuMDUgMiAyMSAyLjk1IDIxIDRWMTMuOEMyMC4zOSAxMy40NSAxOS43MiAxMy4yIDE5IDEzLjA4VjRIMTdNNSAxOUg3VjE3SDVWMTlNNSAxM0g3VjExSDVWMTNNNSA3SDdWNUg1VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZWJvb2tFZGl0ID0gXCJNMjEuMDQgMTMuMTNDMjEuMTggMTMuMTMgMjEuMzEgMTMuMTkgMjEuNDIgMTMuM0wyMi43IDE0LjU4QzIyLjkyIDE0Ljc5IDIyLjkyIDE1LjE0IDIyLjcgMTUuMzVMMjEuNyAxNi4zNUwxOS42NSAxNC4zTDIwLjY1IDEzLjNDMjAuNzYgMTMuMTkgMjAuOSAxMy4xMyAyMS4wNCAxMy4xM00xOS4wNyAxNC44OEwyMS4xMiAxNi45M0wxNS4wNiAyM0gxM1YyMC45NEwxOS4wNyAxNC44OE0zIDdWNUg1VjRDNSAyLjg5IDUuOSAyIDcgMkgxM1Y5TDE1LjUgNy41TDE4IDlWMkgxOUMyMC4wNSAyIDIxIDIuOTUgMjEgNFYxMEwxMSAyMFYyMkg3QzUuOTUgMjIgNSAyMS4wNSA1IDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzTTUgN0g3VjVINVY3TTUgMTFWMTNIN1YxMUg1TTUgMTdWMTlIN1YxN0g1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVib29rRWRpdE91dGxpbmUgPSBcIk0xOS4wNyAxNC44OEwyMS4xMiAxNi45M0wxNS4wNiAyM0gxM1YyMC45NEwxOS4wNyAxNC44OE0yMS4wNCAxMy4xM0MyMS4xOCAxMy4xMyAyMS4zMSAxMy4xOSAyMS40MiAxMy4zTDIyLjcgMTQuNThDMjIuOTIgMTQuNzkgMjIuOTIgMTUuMTQgMjIuNyAxNS4zNUwyMS43IDE2LjM1TDE5LjY1IDE0LjNMMjAuNjUgMTMuM0MyMC43NiAxMy4xOSAyMC45IDEzLjEzIDIxLjA0IDEzLjEzTTE3IDRWMTBMMTUgOEwxMyAxMFY0SDlWMjBIMTFWMjJIN0M1Ljk1IDIyIDUgMjEuMDUgNSAyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM1Y1SDVWNEM1IDIuODkgNS45IDIgNyAySDE5QzIwLjA1IDIgMjEgMi45NSAyMSA0VjEwTDE5IDEyVjRIMTdNNSA1VjdIN1Y1SDVNNSAxMVYxM0g3VjExSDVNNSAxN1YxOUg3VjE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZWJvb2tNaW51cyA9IFwiTTMgN1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTNWOUwxNS41IDcuNUwxOCA5VjJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC4xIDEzLjMgMTkuMSAxMyAxOCAxM0MxNC43IDEzIDEyIDE1LjcgMTIgMTlDMTIgMjAuMSAxMi4zIDIxLjEgMTIuOCAyMkg3QzUuOSAyMiA1IDIxIDUgMjBWMTlIM1YxN0g1VjEzSDNWMTFINVY3SDNNNSA1VjdIN1Y1SDVNNSAxOUg3VjE3SDVWMTlNNSAxM0g3VjExSDVWMTNNMTQgMThWMjBIMjJWMThIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZWJvb2tNaW51c091dGxpbmUgPSBcIk0xNyA0VjEwTDE1IDhMMTMgMTBWNEg5VjIwSDEyLjFDMTIuMiAyMC43IDEyLjUgMjEuNCAxMi44IDIySDdDNS45IDIyIDUgMjEgNSAyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC40IDEzLjQgMTkuNyAxMy4yIDE5IDEzLjFWNEgxN001IDE5SDdWMTdINVYxOU01IDEzSDdWMTFINVYxM001IDdIN1Y1SDVWN00xNCAxOFYyMEgyMlYxOEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va011bHRpcGxlID0gXCJNOS4wNSw5SDcuMDZWNkg5LjA1VjQuMDNINy4wNlYzLjAzQzcuMDYsMS45MiA3Ljk1LDEuMDQgOS4wNSwxLjA0SDE1LjAzVjhMMTcuNSw2LjVMMjAsOFYxLjA0SDIxQzIyLjA1LDEuMDQgMjMsMiAyMywzLjAzVjE3QzIzLDE4LjAzIDIyLjA1LDE5IDIxLDE5SDkuMDVDOCwxOSA3LjA2LDE4LjA1IDcuMDYsMTdWMTZIOS4wNVYxNEg3LjA2VjExSDkuMDVWOU0xLDE4SDNWMTVIMVYxM0gzVjEwSDFWOEgzVjVINVY4SDNWMTBINVYxM0gzVjE1SDVWMThIM1YyMEg1VjIxSDIxVjIzSDVBMiwyIDAgMCwxIDMsMjFWMjBIMVYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va091dGxpbmUgPSBcIk0xNyw0VjEwTDE1LDhMMTMsMTBWNEg5VjIwSDE5VjRIMTdNMyw3VjVINVY0QzUsMi44OSA1LjksMiA3LDJIMTlDMjAuMDUsMiAyMSwyLjk1IDIxLDRWMjBDMjEsMjEuMDUgMjAuMDUsMjIgMTksMjJIN0M1Ljk1LDIyIDUsMjEuMDUgNSwyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM001LDVWN0g3VjVINU01LDE5SDdWMTdINVYxOU01LDEzSDdWMTFINVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va1BsdXMgPSBcIk0zIDdWNUg1VjRDNSAyLjkgNS45IDIgNyAySDEzVjlMMTUuNSA3LjVMMTggOVYySDE5QzIwIDIgMjEgMyAyMSA0VjEzLjhDMjAuMSAxMy4zIDE5LjEgMTMgMTggMTNDMTQuNyAxMyAxMiAxNS43IDEyIDE5QzEyIDIwLjEgMTIuMyAyMS4xIDEyLjggMjJIN0M1LjkgMjIgNSAyMSA1IDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzTTUgNVY3SDdWNUg1TTUgMTlIN1YxN0g1VjE5TTUgMTNIN1YxMUg1VjEzTTE3IDE1VjE4SDE0VjIwSDE3VjIzSDE5VjIwSDIyVjE4SDE5VjE1SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVib29rUGx1c091dGxpbmUgPSBcIk0xNyA0VjEwTDE1IDhMMTMgMTBWNEg5VjIwSDEyLjFDMTIuMiAyMC43IDEyLjUgMjEuNCAxMi44IDIySDdDNS45IDIyIDUgMjEgNSAyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC40IDEzLjQgMTkuNyAxMy4yIDE5IDEzLjFWNEgxN001IDE5SDdWMTdINVYxOU01IDEzSDdWMTFINVYxM001IDdIN1Y1SDVWN00xNyAxNVYxOEgxNFYyMEgxN1YyM0gxOVYyMEgyMlYxOEgxOVYxNUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va1JlbW92ZSA9IFwiTTMgN1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTNWOUwxNS41IDcuNUwxOCA5VjJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC4xIDEzLjMgMTkuMSAxMyAxOCAxM0MxNC43IDEzIDEyIDE1LjcgMTIgMTlDMTIgMjAuMSAxMi4zIDIxLjEgMTIuOCAyMkg3QzUuOSAyMiA1IDIxIDUgMjBWMTlIM1YxN0g1VjEzSDNWMTFINVY3SDNNNSA1VjdIN1Y1SDVNNSAxOUg3VjE3SDVWMTlNNSAxM0g3VjExSDVWMTNNMjAuMSAxNS41TDE4IDE3LjZMMTUuOSAxNS41TDE0LjUgMTYuOUwxNi42IDE5TDE0LjUgMjEuMUwxNS45IDIyLjVMMTggMjAuNEwyMC4xIDIyLjVMMjEuNSAyMS4xTDE5LjQgMTlMMjEuNSAxNi45TDIwLjEgMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va1JlbW92ZU91dGxpbmUgPSBcIk0xNyA0VjEwTDE1IDhMMTMgMTBWNEg5VjIwSDEyLjFDMTIuMiAyMC43IDEyLjUgMjEuNCAxMi44IDIySDdDNS45IDIyIDUgMjEgNSAyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC40IDEzLjQgMTkuNyAxMy4yIDE5IDEzLjFWNEgxN001IDE5SDdWMTdINVYxOU01IDEzSDdWMTFINVYxM001IDdIN1Y1SDVWN00yMC4xIDE1LjVMMTggMTcuNkwxNS45IDE1LjVMMTQuNSAxNi45TDE2LjYgMTlMMTQuNSAyMS4xTDE1LjkgMjIuNUwxOCAyMC40TDIwLjEgMjIuNUwyMS41IDIxLjFMMTkuNCAxOUwyMS41IDE2LjlMMjAuMSAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGlmaWNhdGlvbkNsZWFyQWxsID0gXCJNNSwxM0gxOVYxMUg1TTMsMTdIMTdWMTVIM003LDdWOUgyMVY3XCI7XHJcbmV4cG9ydCB2YXIgbWRpTnBtID0gXCJNNCwxMFYxNEg2VjExSDdWMTRIOFYxMEg0TTksMTBWMTVIMTFWMTRIMTNWMTBIOU0xMiwxMVYxM0gxMVYxMUgxMk0xNCwxMFYxNEgxNlYxMUgxN1YxNEgxOFYxMUgxOVYxNEgyMFYxMEgxNE0zLDlIMjFWMTVIMTJWMTZIOFYxNUgzVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVrZSA9IFwiTTE0LjA0LDEySDEwVjExSDUuNUEzLjUsMy41IDAgMCwxIDIsNy41QTMuNSwzLjUgMCAwLDEgNS41LDRDNi41Myw0IDcuNDUsNC40NCA4LjA5LDUuMTVDOC41LDMuMzUgMTAuMDgsMiAxMiwyQzEzLjkyLDIgMTUuNSwzLjM1IDE1LjkxLDUuMTVDMTYuNTUsNC40NCAxNy40Nyw0IDE4LjUsNEEzLjUsMy41IDAgMCwxIDIyLDcuNUEzLjUsMy41IDAgMCwxIDE4LjUsMTFIMTQuMDRWMTJNMTAsMTYuOVYxNS43Nkg1VjEzLjc2SDE5VjE1Ljc2SDE0LjA0VjE2LjkyTDIwLDE5LjA4QzIwLjU4LDE5LjI5IDIxLDE5Ljg0IDIxLDIwLjVBMS41LDEuNSAwIDAsMSAxOS41LDIySDQuNUExLjUsMS41IDAgMCwxIDMsMjAuNUMzLDE5Ljg0IDMuNDIsMTkuMjkgNCwxOS4wOEwxMCwxNi45WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bGwgPSBcIk0xMiwyQzEzLjg1LDIgMTUuNTUsMi43OCAxNi45LDQuMUwxOC42LDEuOTNMMjAuMTgsMy4xNkwxOC4yLDUuNjhDMTkuMzMsNy40MSAyMCw5LjYgMjAsMTJDMjAsMTcuNSAxNi40MiwyMiAxMiwyMkMxMC4xNSwyMiA4LjQ1LDIxLjIyIDcuMSwxOS45TDUuNCwyMi4wN0wzLjgyLDIwLjg0TDUuOCwxOC4zMkM0LjY3LDE2LjU5IDQsMTQuNCA0LDEyQzQsNi41IDcuNTgsMiAxMiwyTTEyLDRDOC42OSw0IDYsNy41OCA2LDEyQzYsMTMuNzMgNi40MSwxNS4zMyA3LjExLDE2LjY0TDE1LjY3LDUuNjdDMTQuNjYsNC42MiAxMy4zOCw0IDEyLDRNMTIsMjBDMTUuMzEsMjAgMTgsMTYuNDIgMTgsMTJDMTgsMTAuMjcgMTcuNTksOC42NyAxNi44OSw3LjM2TDguMzMsMTguMzNDOS4zNCwxOS4zOCAxMC42MiwyMCAxMiwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljID0gXCJNNCwxN1Y5SDJWN0g2VjE3SDRNMjIsMTVDMjIsMTYuMTEgMjEuMSwxNyAyMCwxN0gxNlYxNUgyMFYxM0gxOFYxMUgyMFY5SDE2VjdIMjBBMiwyIDAgMCwxIDIyLDlWMTAuNUExLjUsMS41IDAgMCwxIDIwLjUsMTJBMS41LDEuNSAwIDAsMSAyMiwxMy41VjE1TTE0LDE1VjE3SDhWMTNDOCwxMS44OSA4LjksMTEgMTAsMTFIMTJWOUg4VjdIMTJBMiwyIDAgMCwxIDE0LDlWMTFDMTQsMTIuMTEgMTMuMSwxMyAxMiwxM0gxMFYxNUgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMCA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMwQm94ID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWOUEyLDIgMCAwLDAgMTMsN0gxMU0xMSw5SDEzVjE1SDExVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzBCb3hNdWx0aXBsZSA9IFwiTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMU0xMyw1QTIsMiAwIDAsMCAxMSw3VjEzQTIsMiAwIDAsMCAxMywxNUgxNUEyLDIgMCAwLDAgMTcsMTNWN0EyLDIgMCAwLDAgMTUsNUgxM00xMyw3SDE1VjEzSDEzVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzBCb3hNdWx0aXBsZU91dGxpbmUgPSBcIk0yMSwxN1YzSDdWMTdIMjFNMjEsMUEyLDIgMCAwLDEgMjMsM1YxN0EyLDIgMCAwLDEgMjEsMTlIN0EyLDIgMCAwLDEgNSwxN1YzQTIsMiAwIDAsMSA3LDFIMjFNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTEzLDVIMTVBMiwyIDAgMCwxIDE3LDdWMTNBMiwyIDAgMCwxIDE1LDE1SDEzQTIsMiAwIDAsMSAxMSwxM1Y3QTIsMiAwIDAsMSAxMyw1TTEzLDdWMTNIMTVWN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMEJveE91dGxpbmUgPSBcIk0xOSwxOVY1SDVWMTlIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlNMTEsN0gxM0EyLDIgMCAwLDEgMTUsOVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUEyLDIgMCAwLDEgMTEsN00xMSw5VjE1SDEzVjlIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzBDaXJjbGUgPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTVIMTFWOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMENpcmNsZU91dGxpbmUgPSBcIk0xMSw3SDEzQTIsMiAwIDAsMSAxNSw5VjE1QTIsMiAwIDAsMSAxMywxN0gxMUEyLDIgMCAwLDEgOSwxNVY5QTIsMiAwIDAsMSAxMSw3TTExLDlWMTVIMTNWOUgxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzEgPSBcIk0xMCw3VjlIMTJWMTdIMTRWN0gxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMUJveCA9IFwiTTE0LDE3SDEyVjlIMTBWN0gxNE0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMUJveE11bHRpcGxlID0gXCJNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxTTE0LDE1SDE2VjVIMTJWN0gxNFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMUJveE11bHRpcGxlT3V0bGluZSA9IFwiTTIxLDE3SDdWM0gyMU0yMSwxSDdBMiwyIDAgMCwwIDUsM1YxN0EyLDIgMCAwLDAgNywxOUgyMUEyLDIgMCAwLDAgMjMsMTdWM0EyLDIgMCAwLDAgMjEsMU0xNCwxNUgxNlY1SDEyVjdIMTRNMyw1SDFWMjFBMiwyIDAgMCwwIDMsMjNIMTlWMjFIM1Y1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxQm94T3V0bGluZSA9IFwiTTE5LDE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwxN0gxNFY3SDEwVjlIMTJcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMUNpcmNsZSA9IFwiTTEwLDdWOUgxMlYxN0gxNFY3SDEwTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxQ2lyY2xlT3V0bGluZSA9IFwiTTEwLDdIMTRWMTdIMTJWOUgxMFY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMTAgPSBcIk0xMCA3SDZWOUg4VjE3SDEwVjdNMTYgN0gxNEMxMi45IDcgMTIgNy45IDEyIDlWMTVDMTIgMTYuMTEgMTIuOSAxNyAxNCAxN0gxNkMxNy4xMSAxNyAxOCAxNi4xMSAxOCAxNVY5QzE4IDcuOSAxNy4xMSA3IDE2IDdNMTYgMTVIMTRWOUgxNlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMTBCb3ggPSBcIk0xNCw5SDE2VjE1SDE0VjlNMjEsNVYxOUMyMSwyMC4xMSAyMC4xMSwyMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUMyMC4xMSwzIDIxLDMuOSAyMSw1TTEwLDdINlY5SDhWMTdIMTBWN00xOCw5QTIsMiAwIDAsMCAxNiw3SDE0QTIsMiAwIDAsMCAxMiw5VjE1QzEyLDE2LjExIDEyLjksMTcgMTQsMTdIMTZDMTcuMTEsMTcgMTgsMTYuMTEgMTgsMTVWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMTBCb3hNdWx0aXBsZSA9IFwiTTMgNVYyMUgxOVYyM0gzQzEuOSAyMyAxIDIyLjExIDEgMjFWNUgzTTE2IDEzSDE4VjdIMTZWMTNNMjEgMUg3QzUuOSAxIDUgMS45IDUgM1YxN0M1IDE4LjExIDUuOSAxOSA3IDE5SDIxQzIyLjExIDE5IDIzIDE4LjExIDIzIDE3VjNDMjMgMS45IDIyLjExIDEgMjEgMU0xMiAxNUgxMFY3SDhWNUgxMlYxNU0yMCAxM0MyMCAxNC4xMSAxOS4xMSAxNSAxOCAxNUgxNkMxNC45IDE1IDE0IDE0LjExIDE0IDEzVjdDMTQgNS45IDE0LjkgNSAxNiA1SDE4QzE5LjExIDUgMjAgNS45IDIwIDdWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzEwQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjEgMTdWM0g3VjE3SDIxTTIxIDFDMjIuMTEgMSAyMyAxLjkgMjMgM1YxN0MyMyAxOC4xMSAyMi4xMSAxOSAyMSAxOUg3QzUuOSAxOSA1IDE4LjExIDUgMTdWM0M1IDEuOSA1LjkgMSA3IDFIMjFNMyA1VjIxSDE5VjIzSDNDMS45IDIzIDEgMjIuMTEgMSAyMVY1SDNNMTIgNUg4VjdIMTBWMTVIMTJWNU0xOCA1SDE2QzE0LjkgNSAxNCA1LjkgMTQgN1YxM0MxNCAxNC4xMSAxNC45IDE1IDE2IDE1SDE4QzE5LjExIDE1IDIwIDE0LjExIDIwIDEzVjdDMjAgNS45IDE5LjExIDUgMTggNU0xOCAxM0gxNlY3SDE4VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxMEJveE91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTgsMTdIMTBWN0g2VjlIOE0xNCw3SDE2QzE3LjExLDcgMTgsNy45IDE4LDlWMTVDMTgsMTYuMTEgMTcuMTEsMTcgMTYsMTdIMTRBMiwyIDAgMCwxIDEyLDE1VjlBMiwyIDAgMCwxIDE0LDdNMTQsOVYxNUgxNlY5SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxMENpcmNsZSA9IFwiTTE0IDlIMTZWMTVIMTRWOU0yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJTMiAxNy41IDIgMTIgNi41IDIgMTIgMiAyMiA2LjUgMjIgMTJNMTAgN0g2VjlIOFYxN0gxMFY3TTE4IDlDMTggNy45IDE3LjExIDcgMTYgN0gxNEMxMi45IDcgMTIgNy45IDEyIDlWMTVDMTIgMTYuMTEgMTIuOSAxNyAxNCAxN0gxNkMxNy4xMSAxNyAxOCAxNi4xMSAxOCAxNVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxMENpcmNsZU91dGxpbmUgPSBcIk0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJTMTcuNSAyMiAxMiAyMiAyIDE3LjUgMiAxMiA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyUzcuNTggMjAgMTIgMjAgMjAgMTYuNDIgMjAgMTIgMTYuNDIgNCAxMiA0TTEwIDdINlY5SDhWMTdIMTBWN00xNiA3SDE0QzEyLjkgNyAxMiA3LjkgMTIgOVYxNUMxMiAxNi4xMSAxMi45IDE3IDE0IDE3SDE2QzE3LjExIDE3IDE4IDE2LjExIDE4IDE1VjlDMTggNy45IDE3LjExIDcgMTYgN00xNiAxNUgxNFY5SDE2VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMyID0gXCJNOSw3VjlIMTNWMTFIMTFBMiwyIDAgMCwwIDksMTNWMTdIMTFMMTUsMTdWMTVIMTFWMTNIMTNBMiwyIDAgMCwwIDE1LDExVjlBMiwyIDAgMCwwIDEzLDdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMkJveCA9IFwiTTE1LDExQzE1LDEyLjExIDE0LjEsMTMgMTMsMTNIMTFWMTVIMTVWMTdIOVYxM0M5LDExLjg5IDkuOSwxMSAxMSwxMUgxM1Y5SDlWN0gxM0EyLDIgMCAwLDEgMTUsOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMkJveE11bHRpcGxlID0gXCJNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTE3LDEzSDEzVjExSDE1QTIsMiAwIDAsMCAxNyw5VjdDMTcsNS44OSAxNi4xLDUgMTUsNUgxMVY3SDE1VjlIMTNBMiwyIDAgMCwwIDExLDExVjE1SDE3VjEzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMyQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMTcsMTNIMTNWMTFIMTVBMiwyIDAgMCwwIDE3LDlWN0MxNyw1Ljg5IDE2LjEsNSAxNSw1SDExVjdIMTVWOUgxM0EyLDIgMCAwLDAgMTEsMTFWMTVIMTdNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMkJveE91dGxpbmUgPSBcIk0xNSwxNUgxMVYxM0gxM0EyLDIgMCAwLDAgMTUsMTFWOUMxNSw3Ljg5IDE0LjEsNyAxMyw3SDlWOUgxM1YxMUgxMUEyLDIgMCAwLDAgOSwxM1YxN0gxNU0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzJDaXJjbGUgPSBcIk05LDdWOUgxM1YxMUgxMUEyLDIgMCAwLDAgOSwxM1YxN0gxMUwxNSwxN1YxNUgxMVYxM0gxM0EyLDIgMCAwLDAgMTUsMTFWOUEyLDIgMCAwLDAgMTMsN0g5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMyQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxM0EyLDIgMCAwLDEgMTUsOVYxMUEyLDIgMCAwLDEgMTMsMTNIMTFWMTVIMTVWMTdIMTFMOSwxN1YxM0EyLDIgMCAwLDEgMTEsMTFIMTNWOUg5VjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMzID0gXCJNMTUsMTVWMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxNSwxMC41VjlDMTUsNy44OSAxNC4xLDcgMTMsN0g5VjlIMTNWMTFIMTFWMTNIMTNWMTVIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljM0JveCA9IFwiTTE1LDEwLjVBMS41LDEuNSAwIDAsMSAxMy41LDEyQzE0LjM0LDEyIDE1LDEyLjY3IDE1LDEzLjVWMTVDMTUsMTYuMTEgMTQuMTEsMTcgMTMsMTdIOVYxNUgxM1YxM0gxMVYxMUgxM1Y5SDlWN0gxM0MxNC4xMSw3IDE1LDcuODkgMTUsOU0xOSwzSDVDMy45MSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzNCb3hNdWx0aXBsZSA9IFwiTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00xNywxM1YxMS41QTEuNSwxLjUgMCAwLDAgMTUuNSwxMEExLjUsMS41IDAgMCwwIDE3LDguNVY3QzE3LDUuODkgMTYuMSw1IDE1LDVIMTFWN0gxNVY5SDEzVjExSDE1VjEzSDExVjE1SDE1QTIsMiAwIDAsMCAxNywxM00yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljM0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTE3LDEzVjExLjVBMS41LDEuNSAwIDAsMCAxNS41LDEwQTEuNSwxLjUgMCAwLDAgMTcsOC41VjdDMTcsNS44OSAxNi4xLDUgMTUsNUgxMVY3SDE1VjlIMTNWMTFIMTVWMTNIMTFWMTVIMTVBMiwyIDAgMCwwIDE3LDEzTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMzQm94T3V0bGluZSA9IFwiTTE1LDE1VjEzLjVBMS41LDEuNSAwIDAsMCAxMy41LDEyQTEuNSwxLjUgMCAwLDAgMTUsMTAuNVY5QzE1LDcuODkgMTQuMSw3IDEzLDdIOVY5SDEzVjExSDExVjEzSDEzVjE1SDlWMTdIMTNBMiwyIDAgMCwwIDE1LDE1TTE5LDE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljM0NpcmNsZSA9IFwiTTE1LDE1VjEzLjVBMS41LDEuNSAwIDAsMCAxMy41LDEyQTEuNSwxLjUgMCAwLDAgMTUsMTAuNVY5QzE1LDcuODkgMTQuMSw3IDEzLDdIOVY5SDEzVjExSDExVjEzSDEzVjE1SDlWMTdIMTNBMiwyIDAgMCwwIDE1LDE1TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMzQ2lyY2xlT3V0bGluZSA9IFwiTTE1LDE1QTIsMiAwIDAsMSAxMywxN0g5VjE1SDEzVjEzSDExVjExSDEzVjlIOVY3SDEzQTIsMiAwIDAsMSAxNSw5VjEwLjVBMS41LDEuNSAwIDAsMSAxMy41LDEyQTEuNSwxLjUgMCAwLDEgMTUsMTMuNVYxNU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzQgPSBcIk05LDdWMTNIMTNWMTdIMTVWN0gxM1YxMUgxMVY3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzRCb3ggPSBcIk0xNSwxN0gxM1YxM0g5VjdIMTFWMTFIMTNWN0gxNU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNEJveE11bHRpcGxlID0gXCJNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxTTE1LDE1SDE3VjVIMTVWOUgxM1Y1SDExVjExSDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM0Qm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTE1LDE1SDE3VjVIMTVWOUgxM1Y1SDExVjExSDE1TTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNEJveE91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTMsMTdIMTVWN0gxM1YxMUgxMVY3SDlWMTNIMTNcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNENpcmNsZSA9IFwiTTksN1YxM0gxM1YxN0gxNVY3SDEzVjExSDExVjdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNENpcmNsZU91dGxpbmUgPSBcIk05LDdIMTFWMTFIMTNWN0gxNVYxN0gxM1YxM0g5VjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM1ID0gXCJNOSw3VjEzSDEzVjE1SDlWMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjEzQTIsMiAwIDAsMCAxMywxMUgxMVY5SDE1VjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNUJveCA9IFwiTTE1LDlIMTFWMTFIMTNBMiwyIDAgMCwxIDE1LDEzVjE1QzE1LDE2LjExIDE0LjEsMTcgMTMsMTdIOVYxNUgxM1YxM0g5VjdIMTVNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzVCb3hNdWx0aXBsZSA9IFwiTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMU0xNywxM1YxMUMxNyw5Ljg5IDE2LjEsOSAxNSw5SDEzVjdIMTdWNUgxMVYxMUgxNVYxM0gxMVYxNUgxNUEyLDIgMCAwLDAgMTcsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzVCb3hNdWx0aXBsZU91dGxpbmUgPSBcIk0xNywxM1YxMUMxNyw5Ljg5IDE2LjEsOSAxNSw5SDEzVjdIMTdWNUgxMVYxMUgxNVYxM0gxMVYxNUgxNUEyLDIgMCAwLDAgMTcsMTNNMyw1SDFWMjFBMiwyIDAgMCwwIDMsMjNIMTlWMjFIM00yMSwxN0g3VjNIMjFNMjEsMUg3QTIsMiAwIDAsMCA1LDNWMTdBMiwyIDAgMCwwIDcsMTlIMjFBMiwyIDAgMCwwIDIzLDE3VjNBMiwyIDAgMCwwIDIxLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzVCb3hPdXRsaW5lID0gXCJNMTUsMTVWMTNDMTUsMTEuODkgMTQuMSwxMSAxMywxMUgxMVY5SDE1VjdIOVYxM0gxM1YxNUg5VjE3SDEzQTIsMiAwIDAsMCAxNSwxNU0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzVDaXJjbGUgPSBcIk05LDdWMTNIMTNWMTVIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNBMiwyIDAgMCwwIDEzLDExSDExVjlIMTVWN0g5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM1Q2lyY2xlT3V0bGluZSA9IFwiTTksN0gxNVY5SDExVjExSDEzQTIsMiAwIDAsMSAxNSwxM1YxNUEyLDIgMCAwLDEgMTMsMTdIOVYxNUgxM1YxM0g5VjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM2ID0gXCJNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNBMiwyIDAgMCwwIDEzLDExSDExVjlIMTVWN0gxMU0xMSwxM0gxM1YxNUgxMVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNkJveCA9IFwiTTE1LDlIMTFWMTFIMTNBMiwyIDAgMCwxIDE1LDEzVjE1QzE1LDE2LjExIDE0LjEsMTcgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUM5LDcuODkgOS45LDcgMTEsN0gxNU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMSwxNUgxM1YxM0gxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNkJveE11bHRpcGxlID0gXCJNMTMsMTFIMTVWMTNIMTNWMTFNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxTTEzLDE1SDE1QTIsMiAwIDAsMCAxNywxM1YxMUMxNyw5Ljg5IDE2LjEsOSAxNSw5SDEzVjdIMTdWNUgxM0EyLDIgMCAwLDAgMTEsN1YxM0MxMSwxNC4xMSAxMS45LDE1IDEzLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM2Qm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMTMsMTFIMTVWMTNIMTNNMTMsMTVIMTVBMiwyIDAgMCwwIDE3LDEzVjExQzE3LDkuODkgMTYuMSw5IDE1LDlIMTNWN0gxN1Y1SDEzQTIsMiAwIDAsMCAxMSw3VjEzQzExLDE0LjExIDExLjksMTUgMTMsMTVNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNkJveE91dGxpbmUgPSBcIk0xMSwxM0gxM1YxNUgxMU0xMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNDMTUsMTEuODkgMTQuMSwxMSAxMywxMUgxMVY5SDE1VjdIMTFBMiwyIDAgMCwwIDksOVYxNUM5LDE2LjExIDkuOSwxNyAxMSwxN00xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzZDaXJjbGUgPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxM0EyLDIgMCAwLDAgMTMsMTFIMTFWOUgxNVY3SDExTTExLDEzSDEzVjE1SDExVjEzTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM2Q2lyY2xlT3V0bGluZSA9IFwiTTExLDdIMTVWOUgxMVYxMUgxM0EyLDIgMCAwLDEgMTUsMTNWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMTEsMTNWMTVIMTNWMTNIMTFNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM3ID0gXCJNMTEsMTdMMTUsOVY3SDlWOUgxM0w5LDE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzdCb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xMSwxN0wxNSw5VjdIOVY5SDEzTDksMTdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzdCb3hNdWx0aXBsZSA9IFwiTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00xMywxNUwxNyw3VjVIMTFWN0gxNUwxMSwxNUgxM00yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljN0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTEzLDE1TDE3LDdWNUgxMVY3SDE1TDExLDE1TTIxLDE3SDdWM0gyMU0yMSwxSDdBMiwyIDAgMCwwIDUsM1YxN0EyLDIgMCAwLDAgNywxOUgyMUEyLDIgMCAwLDAgMjMsMTdWM0EyLDIgMCAwLDAgMjEsMU0zLDVIMVYyMUEyLDIgMCAwLDAgMywyM0gxOVYyMUgzVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzdCb3hPdXRsaW5lID0gXCJNMTEsMTdMMTUsOVY3SDlWOUgxM0w5LDE3TTE5LDE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljN0NpcmNsZSA9IFwiTTExLDE3TDE1LDlWN0g5VjlIMTNMOSwxN0gxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljN0NpcmNsZU91dGxpbmUgPSBcIk0xMSwxN0g5TDEzLDlIOVY3SDE1VjlMMTEsMTdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM4ID0gXCJNMTEsMTNIMTNWMTVIMTFNMTEsOUgxM1YxMUgxMU0xMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxNSwxMC41VjlDMTUsNy44OSAxNC4xLDcgMTMsN0gxMUEyLDIgMCAwLDAgOSw5VjEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgOSwxMy41VjE1QzksMTYuMTEgOS45LDE3IDExLDE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzhCb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxNSwxMC41VjlDMTUsNy44OSAxNC4xLDcgMTMsN0gxMUEyLDIgMCAwLDAgOSw5VjEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgOSwxMy41VjE1QzksMTYuMTEgOS45LDE3IDExLDE3TTExLDEzSDEzVjE1SDExVjEzTTExLDlIMTNWMTFIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOEJveE11bHRpcGxlID0gXCJNMTMsMTFIMTVWMTNIMTNWMTFNMTMsN0gxNVY5SDEzVjdNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTEzLDE1SDE1QTIsMiAwIDAsMCAxNywxM1YxMS41QTEuNSwxLjUgMCAwLDAgMTUuNSwxMEExLjUsMS41IDAgMCwwIDE3LDguNVY3QzE3LDUuODkgMTYuMSw1IDE1LDVIMTNBMiwyIDAgMCwwIDExLDdWOC41QTEuNSwxLjUgMCAwLDAgMTIuNSwxMEExLjUsMS41IDAgMCwwIDExLDExLjVWMTNDMTEsMTQuMTEgMTEuOSwxNSAxMywxNU0yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOEJveE11bHRpcGxlT3V0bGluZSA9IFwiTTEzLDExSDE1VjEzSDEzTTEzLDdIMTVWOUgxM00xMywxNUgxNUEyLDIgMCAwLDAgMTcsMTNWMTEuNUExLjUsMS41IDAgMCwwIDE1LjUsMTBBMS41LDEuNSAwIDAsMCAxNyw4LjVWN0MxNyw1Ljg5IDE2LjEsNSAxNSw1SDEzQTIsMiAwIDAsMCAxMSw3VjguNUExLjUsMS41IDAgMCwwIDEyLjUsMTBBMS41LDEuNSAwIDAsMCAxMSwxMS41VjEzQzExLDE0LjExIDExLjksMTUgMTMsMTVNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOEJveE91dGxpbmUgPSBcIk0xMSwxM0gxM1YxNUgxMU0xMSw5SDEzVjExSDExTTExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDE1LDEwLjVWOUMxNSw3Ljg5IDE0LjEsNyAxMyw3SDExQTIsMiAwIDAsMCA5LDlWMTAuNUExLjUsMS41IDAgMCwwIDEwLjUsMTJBMS41LDEuNSAwIDAsMCA5LDEzLjVWMTVDOSwxNi4xMSA5LjksMTcgMTEsMTdNMTksMTlINVY1SDE5TTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM4Q2lyY2xlID0gXCJNMTEsMTNIMTNWMTVIMTFWMTNNMTEsOUgxM1YxMUgxMVY5TTExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDE1LDEwLjVWOUMxNSw3Ljg5IDE0LjEsNyAxMyw3SDExQTIsMiAwIDAsMCA5LDlWMTAuNUExLjUsMS41IDAgMCwwIDEwLjUsMTJBMS41LDEuNSAwIDAsMCA5LDEzLjVWMTVDOSwxNi4xMSA5LjksMTcgMTEsMTdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzhDaXJjbGVPdXRsaW5lID0gXCJNMTEsMTNWMTVIMTNWMTNIMTFNMTEsOVYxMUgxM1Y5SDExTTExLDE3QTIsMiAwIDAsMSA5LDE1VjEzLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyQTEuNSwxLjUgMCAwLDEgOSwxMC41VjlBMiwyIDAgMCwxIDExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTAuNUExLjUsMS41IDAgMCwxIDEzLjUsMTJBMS41LDEuNSAwIDAsMSAxNSwxMy41VjE1QTIsMiAwIDAsMSAxMywxN0gxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzkgPSBcIk0xMywxN0EyLDIgMCAwLDAgMTUsMTVWOUEyLDIgMCAwLDAgMTMsN0gxMUEyLDIgMCAwLDAgOSw5VjExQTIsMiAwIDAsMCAxMSwxM0gxM1YxNUg5VjE3SDEzTTEzLDExSDExVjlIMTNWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzlCb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xMywxMUgxMVY5SDEzVjExTTEzLDdIMTFBMiwyIDAgMCwwIDksOVYxMUM5LDEyLjExIDkuOSwxMyAxMSwxM0gxM1YxNUg5VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QzE1LDcuODkgMTQuMSw3IDEzLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzlCb3hNdWx0aXBsZSA9IFwiTTE1LDlIMTNWN0gxNVY5TTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00xNSw1SDEzQTIsMiAwIDAsMCAxMSw3VjlDMTEsMTAuMTEgMTEuOSwxMSAxMywxMUgxNVYxM0gxMVYxNUgxNUEyLDIgMCAwLDAgMTcsMTNWN0MxNyw1Ljg5IDE2LjEsNSAxNSw1TTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5Qm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMTUsOUgxM1Y3SDE1TTE1LDVIMTNBMiwyIDAgMCwwIDExLDdWOUMxMSwxMC4xMSAxMS45LDExIDEzLDExSDE1VjEzSDExVjE1SDE1QTIsMiAwIDAsMCAxNywxM1Y3QzE3LDUuODkgMTYuMSw1IDE1LDVNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOUJveE91dGxpbmUgPSBcIk0xMywxMUgxMVY5SDEzTTEzLDdIMTFBMiwyIDAgMCwwIDksOVYxMUM5LDEyLjExIDkuOSwxMyAxMSwxM0gxM1YxNUg5VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QzE1LDcuODkgMTQuMSw3IDEzLDdNMTksMTlINVY1SDE5TTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5Q2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTMsMTdBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFBMiwyIDAgMCwwIDksOVYxMUEyLDIgMCAwLDAgMTEsMTNIMTNWMTVIOVYxN0gxM00xMywxMUgxMVY5SDEzVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5Q2lyY2xlT3V0bGluZSA9IFwiTTEzLDE3SDlWMTVIMTNWMTNIMTFBMiwyIDAgMCwxIDksMTFWOUEyLDIgMCAwLDEgMTEsN0gxM0EyLDIgMCAwLDEgMTUsOVYxNUEyLDIgMCAwLDEgMTMsMTdNMTMsMTFWOUgxMVYxMUgxM00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzlQbHVzID0gXCJNMTkgMTFIMTdWOUgxNVYxMUgxM1YxM0gxNVYxNUgxN1YxM0gxOVYxMU0xMCA3SDhDNi45IDcgNiA3LjkgNiA5VjExQzYgMTIuMTEgNi45IDEzIDggMTNIMTBWMTVINlYxN0gxMEMxMS4xMSAxNyAxMiAxNi4xMSAxMiAxNVY5QzEyIDcuODkgMTEuMSA3IDEwIDdNMTAgMTFIOFY5SDEwVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5UGx1c0JveCA9IFwiTTIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1TTE5LDExSDE3VjlIMTVWMTFIMTNWMTNIMTVWMTVIMTdWMTNIMTlWMTFNMTAsN0g4QTIsMiAwIDAsMCA2LDlWMTFDNiwxMi4xMSA2LjksMTMgOCwxM0gxMFYxNUg2VjE3SDEwQTIsMiAwIDAsMCAxMiwxNVY5QzEyLDcuODkgMTEuMSw3IDEwLDdNOCw5SDEwVjExSDhWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOVBsdXNCb3hNdWx0aXBsZSA9IFwiTTExLDlWOEgxMlY5SDExTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00xNSw5VjExSDE3VjEzSDE5VjExSDIxVjlIMTlWN0gxN1Y5SDE1TTE0LDEyVjhDMTQsNi44OSAxMy4xLDYgMTIsNkgxMUEyLDIgMCAwLDAgOSw4VjlDOSwxMC4xMSA5LjksMTEgMTEsMTFIMTJWMTJIOVYxNEgxMkEyLDIgMCAwLDAgMTQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzlQbHVzQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjEsOUgxOVY3SDE3VjlIMTVWMTFIMTdWMTNIMTlWMTFIMjFWMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTExLDlWOEgxMlY5TTE0LDEyVjhDMTQsNi44OSAxMy4xLDYgMTIsNkgxMUEyLDIgMCAwLDAgOSw4VjlDOSwxMC4xMSA5LjksMTEgMTEsMTFIMTJWMTJIOVYxNEgxMkEyLDIgMCAwLDAgMTQsMTJNMyw1SDFWMjFBMiwyIDAgMCwwIDMsMjNIMTlWMjFIM1Y1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5UGx1c0JveE91dGxpbmUgPSBcIk0xOSwxMUgxN1Y5SDE1VjExSDEzVjEzSDE1VjE1SDE3VjEzSDE5VjE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM005LDExVjEwSDEwVjExTTEyLDE0VjEwQzEyLDguODkgMTEuMSw4IDEwLDhIOUEyLDIgMCAwLDAgNywxMFYxMUM3LDEyLjExIDcuOSwxMyA5LDEzSDEwVjE0SDdWMTZIMTBBMiwyIDAgMCwwIDEyLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5UGx1c0NpcmNsZSA9IFwiTTE5LDExSDE3VjlIMTVWMTFIMTNWMTNIMTVWMTVIMTdWMTNIMTlWMTFNMTAsN0g4QTIsMiAwIDAsMCA2LDlWMTFDNiwxMi4xMSA2LjksMTMgOCwxM0gxMFYxNUg2VjE3SDEwQTIsMiAwIDAsMCAxMiwxNVY5QzEyLDcuODkgMTEuMSw3IDEwLDdNOCw5SDEwVjExSDhWOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOVBsdXNDaXJjbGVPdXRsaW5lID0gXCJNMTksMTFWMTNIMTdWMTVIMTVWMTNIMTNWMTFIMTVWOUgxN1YxMUgxOU0xMCw3QTIsMiAwIDAsMSAxMiw5VjE1QzEyLDE2LjExIDExLjEsMTcgMTAsMTdINlYxNUgxMFYxM0g4QTIsMiAwIDAsMSA2LDExVjlDNiw3Ljg5IDYuOSw3IDgsN0gxME04LDlWMTFIMTBWOUg4TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljTmVnYXRpdmUxID0gXCJNMTMgN1Y5SDE1VjE3SDE3VjdIMTNNMTEgMTNINVYxMUgxMVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljUG9zaXRpdmUxID0gXCJNMTMgN1Y5SDE1VjE3SDE3VjdIMTNNMTEgMTNIOVYxNUg3VjEzSDVWMTFIN1Y5SDlWMTFIMTFWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnV0ID0gXCJNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsN0E1LDUgMCAwLDAgNywxMkE1LDUgMCAwLDAgMTIsMTdBNSw1IDAgMCwwIDE3LDEyQTUsNSAwIDAsMCAxMiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51dHJpdGlvbiA9IFwiTTIyLDE4QTQsNCAwIDAsMSAxOCwyMkgxNEE0LDQgMCAwLDEgMTAsMThWMTZIMjJWMThNNCwzSDE0QTIsMiAwIDAsMSAxNiw1VjE0SDhWMTlINEEyLDIgMCAwLDEgMiwxN1Y1QTIsMiAwIDAsMSA0LDNNNCw2VjhINlY2SDRNMTQsOFY2SDhWOEgxNE00LDEwVjEySDZWMTBINE04LDEwVjEySDE0VjEwSDhNNCwxNFYxNkg2VjE0SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnV4dCA9IFwiTTIxLjggMTguMzZMMTYuMDMgOC4wOEMxNS45MyA4IDE1LjYzIDcuNDMgMTUuMDMgNy40M0MxNC43OCA3LjQzIDE0LjQzIDcuNTMgMTQuMDcgOC4wOEwxMy4zMyA5LjI2TDExLjMxIDUuNjVDMTEuMjYgNS41NSAxMC45MSA1IDEwLjMxIDVDMTAuMDYgNSA5LjY2IDUuMSA5LjM2IDUuNjVMMi4xOCAxOC4zMUMyLjEzIDE4LjQxIDEuODMgMTkgMi4xMyAxOS41QzIuMjMgMTkuNzUgMi41MyAyMCAzLjE5IDIwSDIwLjg1QzIwLjk1IDIwIDIxLjYgMjAgMjEuOSAxOS41QzIyIDE5LjI2IDIyLjEgMTguODYgMjEuOCAxOC4zNk04LjEgMTguMzFMNy45NSAxOC44NkgzLjI0TDEwLjM2IDYuMzRMMTIuNjYgMTAuNDdMOC4xIDE4LjMxTTkuMjEgMTguODZMMTMuMzIgMTEuNjZMMTcuNSAxOC44Nkg5LjIxTTE4Ljc0IDE4Ljg2TDE4LjU0IDE4LjMxTDE0IDEwLjQ2TDE1LjAzIDguNzNMMjAuNzUgMTguODZIMTguNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2FyID0gXCJNMjAuMjMsMTUuMjFDMTguNzcsMTMuNzUgMTQuOTcsMTAuMiAxMi43NywxMS4yN0w0LjUsM0wzLDQuNUwxMS4yOCwxMi43OUMxMC4zLDE1IDEzLjg4LDE4LjYyIDE1LjM1LDIwLjA4QzE3LjExLDIxLjg0IDE4LjI2LDIwLjkyIDE5LjYxLDE5LjU3QzIxLjEsMTguMDggMjEuNjEsMTYuNjEgMjAuMjMsMTUuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2NhcmluYSA9IFwiTTIwLDEyQzE2LjgsMTAuNCAxMy40LDkuNyAxMC44LDkuM0w5LjcsNS45QzkuMyw0LjggNy43LDQuOCA3LjMsNS45TDYuMyw5QzMuOSw5LjQgMiwxMS41IDIsMTRDMiwxNi44IDQuMiwxOSA3LDE5QzcsMTkgMTQsMTkgMjAsMTZDMjAsMTYgMjIsMTUgMjIsMTRDMjIsMTMgMjAsMTIgMjAsMTJNNSwxNEM0LjQsMTQgNCwxMy42IDQsMTNDNCwxMi40IDQuNCwxMiA1LDEyQzUuNiwxMiA2LDEyLjQgNiwxM0M2LDEzLjUgNS42LDE0IDUsMTRNNywxN0M2LjQsMTcgNiwxNi42IDYsMTZDNiwxNS40IDYuNCwxNSA3LDE1QzcuNiwxNSA4LDE1LjQgOCwxNkM4LDE2LjUgNy42LDE3IDcsMTdNOSwxNEM4LjQsMTQgOCwxMy42IDgsMTNDOCwxMi40IDguNCwxMiA5LDEyQzkuNiwxMiAxMCwxMi40IDEwLDEzQzEwLDEzLjUgOS42LDE0IDksMTRNMTEsMTdDMTAuNCwxNyAxMCwxNi42IDEwLDE2QzEwLDE1LjQgMTAuNCwxNSAxMSwxNUMxMS42LDE1IDEyLDE1LjQgMTIsMTZDMTIsMTYuNSAxMS42LDE3IDExLDE3TTE2LDE0QzE1LjQsMTQgMTUsMTMuNiAxNSwxM0MxNSwxMi40IDE1LjQsMTIgMTYsMTJDMTYuNiwxMiAxNywxMi40IDE3LDEzQzE3LDEzLjUgMTYuNiwxNCAxNiwxNE0xOSwxNUMxOC40LDE1IDE4LDE0LjYgMTgsMTRDMTgsMTMuNCAxOC40LDEzIDE5LDEzQzE5LjYsMTMgMjAsMTMuNCAyMCwxNEMyMCwxNC41IDE5LjYsMTUgMTksMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2NpID0gXCJNMiAyVjIySDIyVjJNMTkuMTIgMTkuMDNINC44N1Y1SDE5LjEzVjE5LjAzTTE0LjgzIDEwLjcxSDE3LjY5VjE3LjU5SDE0LjgzTTE0LjgzIDYuNDFIMTcuNjlWOS4yN0gxNC44M002LjMgNi40MVYxNy41OUgxMy40VjE0LjcySDkuMTdWOS4yOEgxMy40VjYuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2NyID0gXCJNMiA1VjE5SDE0VjE3SDEyQzEwLjg5IDE3IDEwIDE2LjExIDEwIDE1VjlDMTAgNy44OSAxMC44OSA3IDEyIDdIMTRWNU0xNCA3VjlIMTZWN00xNCA5SDEyVjE1SDE0TTE0IDE1VjE3SDE2VjE1TTUgN0g3QzguMTEgNyA5IDcuODkgOSA5VjE1QzkgMTYuMTEgOC4xMSAxNyA3IDE3SDVDMy44OSAxNyAzIDE2LjExIDMgMTVWOUMzIDcuODkgMy44OSA3IDUgN00xNyA3VjE3SDE5VjEzSDIwVjE0SDIxVjE3SDIzVjE0SDIyVjEySDIzVjhIMjJWN001IDlWMTVIN1Y5TTE5IDlIMjFWMTFIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2N0YWdvbiA9IFwiTTE1LjczLDNIOC4yN0wzLDguMjdWMTUuNzNMOC4yNywyMUgxNS43M0wyMSwxNS43M1Y4LjI3XCI7XHJcbmV4cG9ydCB2YXIgbWRpT2N0YWdvbk91dGxpbmUgPSBcIk04LjI3LDNMMyw4LjI3VjE1LjczTDguMjcsMjFIMTUuNzNDMTcuNSwxOS4yNCAyMSwxNS43MyAyMSwxNS43M1Y4LjI3TDE1LjczLDNNOS4xLDVIMTQuOUwxOSw5LjFWMTQuOUwxNC45LDE5SDkuMUw1LDE0LjlWOS4xXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2N0YWdyYW0gPSBcIk0yLjIsMTYuMDZMMy44OCwxMkwyLjIsNy45NEw2LjI2LDYuMjZMNy45NCwyLjJMMTIsMy44OEwxNi4wNiwyLjJMMTcuNzQsNi4yNkwyMS44LDcuOTRMMjAuMTIsMTJMMjEuOCwxNi4wNkwxNy43NCwxNy43NEwxNi4wNiwyMS44TDEyLDIwLjEyTDcuOTQsMjEuOEw2LjI2LDE3Ljc0TDIuMiwxNi4wNlpcIjtcclxuZXhwb3J0IHZhciBtZGlPY3RhZ3JhbU91dGxpbmUgPSBcIk0yLjIsMTYuMDZMMy44OCwxMkwyLjIsNy45NEw2LjI2LDYuMjZMNy45NCwyLjJMMTIsMy44OEwxNi4wNiwyLjJMMTcuNzQsNi4yNkwyMS44LDcuOTRMMjAuMTIsMTJMMjEuOCwxNi4wNkwxNy43NCwxNy43NEwxNi4wNiwyMS44TDEyLDIwLjEyTDcuOTQsMjEuOEw2LjI2LDE3Ljc0TDIuMiwxNi4wNk00LjgxLDlMNi4wNSwxMkw0LjgxLDE1TDcuNzksMTYuMjFMOSwxOS4xOUwxMiwxNy45NUwxNSwxOS4xOUwxNi4yMSwxNi4yMUwxOS4xOSwxNUwxNy45NSwxMkwxOS4xOSw5TDE2LjIxLDcuNzlMMTUsNC44MUwxMiw2LjA1TDksNC44MUw3Ljc5LDcuNzlMNC44MSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9kbm9rbGFzc25pa2kgPSBcIk0xNy44MywxMi43NEMxNy41NSwxMi4xNyAxNi43NiwxMS42OSAxNS43MSwxMi41QzE0LjI4LDEzLjY0IDEyLDEzLjY0IDEyLDEzLjY0QzEyLDEzLjY0IDkuNzIsMTMuNjQgOC4yOSwxMi41QzcuMjQsMTEuNjkgNi40NSwxMi4xNyA2LjE3LDEyLjc0QzUuNjcsMTMuNzQgNi4yMywxNC4yMyA3LjUsMTUuMDRDOC41OSwxNS43NCAxMC4wOCwxNiAxMS4wNCwxNi4xTDEwLjI0LDE2LjlDOS4xLDE4LjAzIDgsMTkuMTIgNy4yNSwxOS44OEM2LjgsMjAuMzQgNi44LDIxLjA3IDcuMjUsMjEuNUw3LjM5LDIxLjY2QzcuODQsMjIuMTEgOC41OCwyMi4xMSA5LjAzLDIxLjY2TDEyLDE4LjY4QzEzLjE1LDE5LjgxIDE0LjI0LDIwLjkgMTUsMjEuNjZDMTUuNDUsMjIuMTEgMTYuMTgsMjIuMTEgMTYuNjQsMjEuNjZMMTYuNzcsMjEuNUMxNy4yMywyMS4wNyAxNy4yMywyMC4zNCAxNi43NywxOS44OEwxMy43OSwxNi45TDEzLDE2LjA5QzEzLjk1LDE2IDE1LjQyLDE1LjczIDE2LjUsMTUuMDRDMTcuNzcsMTQuMjMgMTguMzMsMTMuNzQgMTcuODMsMTIuNzRNMTIsNC41N0MxMy4zOCw0LjU3IDE0LjUsNS42OSAxNC41LDcuMDZDMTQuNSw4LjQ0IDEzLjM4LDkuNTUgMTIsOS41NUMxMC42Miw5LjU1IDkuNSw4LjQ0IDkuNSw3LjA2QzkuNSw1LjY5IDEwLjYyLDQuNTcgMTIsNC41N00xMiwxMi4xMkMxNC44LDEyLjEyIDE3LjA2LDkuODYgMTcuMDYsNy4wNkMxNy4wNiw0LjI3IDE0LjgsMiAxMiwyQzkuMiwyIDYuOTQsNC4yNyA2Ljk0LDcuMDZDNi45NCw5Ljg2IDkuMiwxMi4xMiAxMiwxMi4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlPZmZlciA9IFwiTTIxIDEzQzIxLjYgMTMgMjIuMSAxMy4yIDIyLjQgMTMuNkMyMi44IDE0IDIzIDE0LjUgMjMgMTVMMTUgMThMOCAxNlY3SDkuOUwxNy4yIDkuN0MxNy43IDkuOSAxOCAxMC4zIDE4IDEwLjhDMTggMTEuMSAxNy45IDExLjQgMTcuNyAxMS42QzE3LjUgMTEuOCAxNy4yIDEyIDE2LjggMTJIMTRMMTIuMyAxMS4zTDEyIDEyLjJMMTQgMTNIMjFNMiA3SDZWMThIMlY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9mZmljZUJ1aWxkaW5nID0gXCJNNSwzVjIxSDExVjE3LjVIMTNWMjFIMTlWM0g1TTcsNUg5VjdIN1Y1TTExLDVIMTNWN0gxMVY1TTE1LDVIMTdWN0gxNVY1TTcsOUg5VjExSDdWOU0xMSw5SDEzVjExSDExVjlNMTUsOUgxN1YxMUgxNVY5TTcsMTNIOVYxNUg3VjEzTTExLDEzSDEzVjE1SDExVjEzTTE1LDEzSDE3VjE1SDE1VjEzTTcsMTdIOVYxOUg3VjE3TTE1LDE3SDE3VjE5SDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9mZmljZUJ1aWxkaW5nTWFya2VyID0gXCJNMTUuMTkgMjFDMTQuMTIgMTkuNDMgMTMgMTcuMzYgMTMgMTUuNUMxMyAxMy42NyAxMy45NiAxMiAxNS40IDExSDE1VjlIMTdWMTAuMjNDMTcuNSAxMC4wOSAxOCAxMCAxOC41IDEwQzE4LjY3IDEwIDE4Ljg0IDEwIDE5IDEwLjAzVjNINVYyMUgxMVYxNy41SDEzVjIxSDE1LjE5TTE1IDVIMTdWN0gxNVY1TTkgMTlIN1YxN0g5VjE5TTkgMTVIN1YxM0g5VjE1TTkgMTFIN1Y5SDlWMTFNOSA3SDdWNUg5VjdNMTEgNUgxM1Y3SDExVjVNMTEgOUgxM1YxMUgxMVY5TTExIDE1VjEzSDEzVjE1SDExTTE4LjUgMTJDMTYuNiAxMiAxNSAxMy42MSAxNSAxNS41QzE1IDE4LjExIDE4LjUgMjIgMTguNSAyMlMyMiAxOC4xMSAyMiAxNS41QzIyIDEzLjYxIDIwLjQgMTIgMTguNSAxMk0xOC41IDE2LjgxQzE3LjggMTYuODEgMTcuMyAxNi4yMSAxNy4zIDE1LjYxQzE3LjMgMTQuOTEgMTcuOSAxNC40MSAxOC41IDE0LjQxUzE5LjcgMTUgMTkuNyAxNS42MUMxOS44IDE2LjIxIDE5LjIgMTYuODEgMTguNSAxNi44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlPZmZpY2VCdWlsZGluZ01hcmtlck91dGxpbmUgPSBcIk0xNSA5SDE3VjExSDE1VjlNMTcgNUgxNVY3SDE3VjVNMTEgMTVIMTNWMTNIMTFWMTVNMTMgNUgxMVY3SDEzVjVNMTEgMTFIMTNWOUgxMVYxMU05IDVIN1Y3SDlWNU05IDlIN1YxMUg5VjlNMTQuNTUgMjFIMTNWMTcuNUgxMVYyMUg1VjNIMTlWMTEuMDNDMTkuNzEgMTEuMDkgMjAuMzkgMTEuMzEgMjEgMTEuNjNWMUgzVjIzSDE1LjkxQzE1LjUgMjIuNDQgMTUgMjEuNzYgMTQuNTUgMjFNNyAxOUg5VjE3SDdWMTlNOSAxM0g3VjE1SDlWMTNNMjIgMTYuNUMyMiAxOS4xIDE4LjUgMjMgMTguNSAyM1MxNSAxOS4xIDE1IDE2LjVDMTUgMTQuNiAxNi42IDEzIDE4LjUgMTNTMjIgMTQuNiAyMiAxNi41TTE5LjcgMTYuNkMxOS43IDE2IDE5LjEgMTUuNCAxOC41IDE1LjRTMTcuMyAxNS45IDE3LjMgMTYuNkMxNy4zIDE3LjIgMTcuOCAxNy44IDE4LjUgMTcuOFMxOS44IDE3LjIgMTkuNyAxNi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9mZmljZUJ1aWxkaW5nT3V0bGluZSA9IFwiTTE5IDNWMjFIMTNWMTcuNUgxMVYyMUg1VjNIMTlNMTUgN0gxN1Y1SDE1VjdNMTEgN0gxM1Y1SDExVjdNNyA3SDlWNUg3VjdNMTUgMTFIMTdWOUgxNVYxMU0xMSAxMUgxM1Y5SDExVjExTTcgMTFIOVY5SDdWMTFNMTUgMTVIMTdWMTNIMTVWMTVNMTEgMTVIMTNWMTNIMTFWMTVNNyAxNUg5VjEzSDdWMTVNMTUgMTlIMTdWMTdIMTVWMTlNNyAxOUg5VjE3SDdWMTlNMjEgMUgzVjIzSDIxVjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2lsID0gXCJNMjIsMTIuNUMyMiwxMi41IDI0LDE0LjY3IDI0LDE2QTIsMiAwIDAsMSAyMiwxOEEyLDIgMCAwLDEgMjAsMTZDMjAsMTQuNjcgMjIsMTIuNSAyMiwxMi41TTYsNkgxMEExLDEgMCAwLDEgMTEsN0ExLDEgMCAwLDEgMTAsOEg5VjEwSDExQzExLjc0LDEwIDEyLjM5LDEwLjQgMTIuNzMsMTFMMTkuMjQsNy4yNEwyMi41LDkuMTNDMjMsOS40IDIzLjE0LDEwIDIyLjg3LDEwLjVDMjIuNTksMTAuOTcgMjIsMTEuMTQgMjEuNSwxMC44NkwxOS40LDkuNjVMMTUuNzUsMTUuOTdDMTUuNDEsMTYuNTggMTQuNzUsMTcgMTQsMTdINUEyLDIgMCAwLDEgMywxNVYxMkEyLDIgMCAwLDEgNSwxMEg3VjhINkExLDEgMCAwLDEgNSw3QTEsMSAwIDAsMSA2LDZNNSwxMlYxNUgxNEwxNi4wNiwxMS40M0wxMi42LDEzLjQzTDExLjY5LDEySDVNMC4zOCw5LjIxTDIuMDksNy41QzIuNSw3LjExIDMuMTEsNy4xMSAzLjUsNy41QzMuODksNy44OSAzLjg5LDguNSAzLjUsOC45MUwxLjc5LDEwLjYyQzEuNCwxMSAwLjc3LDExIDAuMzgsMTAuNjJDMCwxMC4yMyAwLDkuNiAwLjM4LDkuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2lsTGFtcCA9IFwiTTUsMjBIMTZWMjJINU0xMSw1SDEwQTIsMiAwIDAsMCA4LDdIMTNBMiwyIDAgMCwwIDExLDVNMTYsOEgyMkEyLDIgMCAwLDEgMjAsMTBIMTlBNCw0IDAgMCwwIDE1LDE0VjE1QTQsNCAwIDAsMSAxMSwxOUgxMEE0LDQgMCAwLDEgNiwxNUg0QTIsMiAwIDAsMSAyLDEzVjEwQTIsMiAwIDAsMSA0LDhNNiwxMEg0VjEzSDZNMTksNUEyLDIgMCAwLDEgMjEsN0gyMkEyLjksMi45IDAgMCwwIDE5LDRBMiwyIDAgMCwxIDE3LDJIMTZBMi45LDIuOSAwIDAsMCAxOSw1XCI7XHJcbmV4cG9ydCB2YXIgbWRpT2lsTGV2ZWwgPSBcIk04IDE4QzYuNjcgMTggNS43OSAxOC43OSA1LjI5IDE5LjI5UzQuNjcgMjAgNCAyMCAzLjIxIDE5Ljc5IDIuNzEgMTkuMjlDMi4zNSAxOC45MyAxLjc5IDE4LjQyIDEgMTguMTZWMjAuNDFDMS4wOSAyMC41IDEuMTggMjAuNTkgMS4yOSAyMC43MUMxLjc5IDIxLjIxIDIuNjcgMjIgNCAyMlM2LjIxIDIxLjIxIDYuNzEgMjAuNzEgNy4zMyAyMCA4IDIwIDguNzkgMjAuMjEgOS4yOSAyMC43MUM5LjczIDIxLjE0IDEwLjQ0IDIxLjggMTEuNSAyMS45NkMxMS42NiAyMiAxMS44MyAyMiAxMiAyMkMxMy4zMyAyMiAxNC4yMSAyMS4yMSAxNC43MSAyMC43MVMxNS4zMyAyMCAxNiAyMCAxNi43OSAyMC4yMSAxNy4yOSAyMC43MSAxOC42NyAyMiAyMCAyMiAyMi4yMSAyMS4yMSAyMi43MSAyMC43MUMyMi44MiAyMC41OSAyMi45MSAyMC41IDIzIDIwLjQxVjE4LjE2QzIyLjIxIDE4LjQyIDIxLjY1IDE4LjkzIDIxLjI5IDE5LjI5QzIwLjc5IDE5Ljc5IDIwLjY3IDIwIDIwIDIwUzE5LjIxIDE5Ljc5IDE4LjcxIDE5LjI5IDE3LjMzIDE4IDE2IDE4IDEzLjc5IDE4Ljc5IDEzLjI5IDE5LjI5IDEyLjY3IDIwIDEyIDIwQzExLjc4IDIwIDExLjYzIDE5Ljk3IDExLjUgMTkuOTJDMTEuMjIgMTkuODIgMTEuMDUgMTkuNjMgMTAuNzEgMTkuMjlDMTAuMjEgMTguNzkgOS4zMyAxOCA4IDE4TTIyIDEwLjVDMjIgMTAuNSAyNCAxMi42NyAyNCAxNEMyNCAxNS4xIDIzLjEgMTYgMjIgMTZTMjAgMTUuMSAyMCAxNEMyMCAxMi42NyAyMiAxMC41IDIyIDEwLjVNMjIuNSA3LjEzTDE5LjI0IDUuMjRMMTIuNzMgOUMxMi4zOSA4LjQgMTEuNzQgOCAxMSA4SDlWNkgxMEMxMC41NSA2IDExIDUuNTUgMTEgNVMxMC41NSA0IDEwIDRINkM1LjQ1IDQgNSA0LjQ1IDUgNVM1LjQ1IDYgNiA2SDdWOEg1QzMuOSA4IDMgOC45IDMgMTBWMTNDMyAxNC4xIDMuOSAxNSA1IDE1SDE0QzE0Ljc1IDE1IDE1LjQxIDE0LjU4IDE1Ljc1IDEzLjk3TDE5LjQgNy42NUwyMS41IDguODZDMjIgOS4xNCAyMi41OSA4Ljk3IDIyLjg3IDguNUMyMy4xNCA4IDIzIDcuNCAyMi41IDcuMTNNMTQgMTNINVYxMEgxMS42OUwxMi42IDExLjQzTDE2LjA2IDkuNDNMMTQgMTNNMy41IDYuOTJMMS43OSA4LjYyQTEgMSAwIDAgMSAuMzggNy4yMUwyLjA5IDUuNUExIDEgMCAwIDEgMy41IDUuNUMzLjg5IDUuODkgMy44OSA2LjUgMy41IDYuOTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2lsVGVtcGVyYXR1cmUgPSBcIk0xMCA1SDEzVjNIMTBWMkMxMCAxLjQgOS42IDEgOSAxUzggMS40IDggMlYxNS4zQzcuNCAxNS42IDcgMTYuMyA3IDE3QzcgMTguMSA3LjkgMTkgOSAxOVMxMSAxOC4xIDExIDE3QzExIDE2LjMgMTAuNiAxNS42IDEwIDE1LjNWMTNIMTNWMTFIMTBWOUgxM1Y3SDEwVjVNMjIgMTcuNUMyMiAxNy41IDI0IDE5LjcgMjQgMjFDMjQgMjIuMSAyMy4xIDIzIDIyIDIzUzIwIDIyLjEgMjAgMjFDMjAgMTkuNyAyMiAxNy41IDIyIDE3LjVNMjIuOSAxNS41QzIyLjYgMTYgMjIgMTYuMSAyMS41IDE1LjlMMTkuNCAxNC43TDE1LjggMjFDMTUuNSAyMS42IDE0LjggMjIgMTQgMjJINUMzLjkgMjIgMyAyMS4xIDMgMjBWMTdDMyAxNS45IDMuOSAxNSA1IDE1VjIwSDE0TDE2LjEgMTYuNEwxMyAxOC4yVjE1LjhMMTkuMiAxMi4yTDIyLjUgMTQuMUMyMyAxNC40IDIzLjEgMTUgMjIuOSAxNS41TTMuNSAxMy45TDEuOCAxNS42QzEuNCAxNiAuOCAxNiAuNCAxNS42UzAgMTQuNi40IDE0LjJMMi4xIDEyLjVDMi41IDEyLjEgMy4xIDEyLjEgMy41IDEyLjVTMy45IDEzLjUgMy41IDEzLjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT21lZ2EgPSBcIk0xOS4xNSwxOUgxMy4zOVYxNi44N0MxNS41LDE1LjI1IDE2LjU5LDEzLjI0IDE2LjU5LDEwLjg0QzE2LjU5LDkuMzQgMTYuMTYsOC4xNiAxNS4zMiw3LjI5QzE0LjQ3LDYuNDIgMTMuMzcsNiAxMi4wMyw2QzEwLjY4LDYgOS41Nyw2LjQyIDguNzEsNy4zQzcuODQsOC4xNyA3LjQxLDkuMzcgNy40MSwxMC44OEM3LjQxLDEzLjI2IDguNSwxNS4yNiAxMC42MSwxNi44N1YxOUg0Ljg1VjE2Ljg3SDguNDFDNi4wNCwxNS4zMiA0Ljg1LDEzLjIzIDQuODUsMTAuNkM0Ljg1LDguNSA1LjUsNi44NiA2LjgxLDUuNjZDOC4xMiw0LjQ1IDkuODQsMy44NSAxMS45NywzLjg1QzE0LjE1LDMuODUgMTUuODksNC40NSAxNy4xOSw1LjY0QzE4LjUsNi44MyAxOS4xNSw4LjUgMTkuMTUsMTAuNThDMTkuMTUsMTMuMjEgMTcuOTUsMTUuMzEgMTUuNTUsMTYuODdIMTkuMTVWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT25lVXAgPSBcIk0xMCwxOVYxOUM5LjQsMTkgOSwxOC42IDksMThWMTdDOSwxNi41IDkuNCwxNiAxMCwxNlYxNkMxMC41LDE2IDExLDE2LjQgMTEsMTdWMThDMTEsMTguNiAxMC42LDE5IDEwLDE5TTE1LDE4VjE3QzE1LDE2LjUgMTQuNiwxNiAxNCwxNlYxNkMxMy41LDE2IDEzLDE2LjQgMTMsMTdWMThDMTMsMTguNSAxMy40LDE5IDE0LDE5VjE5QzE0LjYsMTkgMTUsMTguNiAxNSwxOE0yMiwxMkMyMiwxNC42IDIwLjQsMTYuOSAxOCwxOC40VjIwQTIsMiAwIDAsMSAxNiwyMkg4QTIsMiAwIDAsMSA2LDIwVjE4LjRDMy42LDE2LjkgMiwxNC42IDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk03LDEwQzcsOC45IDYuNCw3LjkgNS41LDcuNEM0LjUsOC43IDQsMTAuMyA0LDEyQzQsMTIuMyA0LDEyLjcgNC4xLDEzQzUuNywxMi45IDcsMTEuNiA3LDEwTTksOUM5LDEwLjcgMTAuMywxMiAxMiwxMkMxMy43LDEyIDE1LDEwLjcgMTUsOUMxNSw3LjMgMTMuNyw2IDEyLDZDMTAuMyw2IDksNy4zIDksOU0xNiwyMFYxNS41QzE0LjgsMTUuMiAxMy40LDE1IDEyLDE1QzEwLjYsMTUgOS4yLDE1LjIgOCwxNS41VjIwSDE2TTE5LjksMTNDMjAsMTIuNyAyMCwxMi4zIDIwLDEyQzIwLDEwLjMgMTkuNSw4LjcgMTguNSw3LjRDMTcuNiw3LjkgMTcsOC45IDE3LDEwQzE3LDExLjYgMTguMywxMi45IDE5LjksMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT25lcGFzc3dvcmQgPSBcIk0xMiwxQzUuOTIsMSAxLDUuOTIgMSwxMkMxLDE4LjA4IDUuOTIsMjMgMTIsMjNDMTguMDgsMjMgMjMsMTguMDggMjMsMTJDMjMsNS45MiAxOC4wOCwxIDEyLDFNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xMywxMy41QzEzLDE0LjEzIDEzLjQsMTQuNyAxNCwxNC45MVYxOEgxMFYxMS45MUMxMC43OCwxMS42NCAxMS4xOSwxMC44IDEwLjkzLDEwQzEwLjc4LDkuNTggMTAuNDQsOS4yNCAxMCw5LjA5VjZIMTRWMTIuMDlDMTMuNCwxMi4zIDEzLDEyLjg3IDEzLDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3BhY2l0eSA9IFwiTTE3LjY2LDhMMTIsMi4zNUw2LjM0LDhDNC43OCw5LjU2IDQsMTEuNjQgNCwxMy42NEM0LDE1LjY0IDQuNzgsMTcuNzUgNi4zNCwxOS4zMUM3LjksMjAuODcgOS45NSwyMS42NiAxMiwyMS42NkMxNC4wNSwyMS42NiAxNi4xLDIwLjg3IDE3LjY2LDE5LjMxQzE5LjIyLDE3Ljc1IDIwLDE1LjY0IDIwLDEzLjY0QzIwLDExLjY0IDE5LjIyLDkuNTYgMTcuNjYsOE02LDE0QzYsMTIgNi42MiwxMC43MyA3Ljc2LDkuNkwxMiw1LjI3TDE2LjI0LDkuNjVDMTcuMzgsMTAuNzcgMTgsMTIgMTgsMTRINlpcIjtcclxuZXhwb3J0IHZhciBtZGlPcGVuSW5BcHAgPSBcIk0xMiwxMEw4LDE0SDExVjIwSDEzVjE0SDE2TTE5LDRINUMzLjg5LDQgMyw0LjkgMyw2VjE4QTIsMiAwIDAsMCA1LDIwSDlWMThINVY4SDE5VjE4SDE1VjIwSDE5QTIsMiAwIDAsMCAyMSwxOFY2QTIsMiAwIDAsMCAxOSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9wZW5Jbk5ldyA9IFwiTTE0LDNWNUgxNy41OUw3Ljc2LDE0LjgzTDkuMTcsMTYuMjRMMTksNi40MVYxMEgyMVYzTTE5LDE5SDVWNUgxMlYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTJIMTlWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3BlblNvdXJjZUluaXRpYXRpdmUgPSBcIk0xNS40MSwyMkMxNS4zNSwyMiAxNS4yOCwyMiAxNS4yMiwyMkMxNS4xLDIxLjk1IDE1LDIxLjg1IDE0Ljk2LDIxLjczTDEyLjc0LDE1LjkzQzEyLjY1LDE1LjY5IDEyLjc3LDE1LjQyIDEzLDE1LjMyQzEzLjcxLDE1LjA2IDE0LjI4LDE0LjUgMTQuNTgsMTMuODNDMTUuMjIsMTIuNCAxNC41OCwxMC43MyAxMy4xNSwxMC4wOUMxMS43Miw5LjQ1IDEwLjA1LDEwLjA5IDkuNDEsMTEuNUM5LjExLDEyLjIxIDkuMDksMTMgOS4zNiwxMy42OUM5LjY2LDE0LjQzIDEwLjI1LDE1IDExLDE1LjI4QzExLjI0LDE1LjM3IDExLjM3LDE1LjY0IDExLjI4LDE1Ljg5TDksMjEuNjlDOC45NiwyMS44MSA4Ljg3LDIxLjkxIDguNzUsMjEuOTZDOC42MywyMiA4LjUsMjIgOC4zOSwyMS45NkMzLjI0LDE5Ljk3IDAuNjcsMTQuMTggMi42Niw5LjAzQzQuNjUsMy44OCAxMC40NCwxLjMxIDE1LjU5LDMuM0MxOC4wNiw0LjI2IDIwLjA1LDYuMTUgMjEuMTMsOC41N0MyMi4yMiwxMSAyMi4yOSwxMy43NSAyMS4zMywxNi4yMkMyMC4zMiwxOC44OCAxOC4yMywyMSAxNS41OCwyMkMxNS41LDIyIDE1LjQ3LDIyIDE1LjQxLDIyTTEyLDMuNTlDNy4wMywzLjQ2IDIuOSw3LjM5IDIuNzcsMTIuMzZDMi42OCwxNi4wOCA0Ljg4LDE5LjQ3IDguMzIsMjAuOUwxMC4yMSwxNkM4LjM4LDE1IDcuNjksMTIuNzIgOC42OCwxMC44OUM5LjY3LDkuMDYgMTEuOTYsOC4zOCAxMy43OSw5LjM2QzE1LjYyLDEwLjM1IDE2LjMxLDEyLjY0IDE1LjMyLDE0LjQ3QzE0Ljk3LDE1LjEyIDE0LjQ0LDE1LjY1IDEzLjc5LDE2TDE1LjY4LDIwLjkzQzE3Ljg2LDE5Ljk1IDE5LjU3LDE4LjE2IDIwLjQ0LDE1LjkzQzIyLjI4LDExLjMxIDIwLjA0LDYuMDggMTUuNDIsNC4yM0MxNC4zMywzLjggMTMuMTcsMy41OCAxMiwzLjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9wZW5pZCA9IFwiTTE0LDJMMTEsMy41VjE5Ljk0QzcsMTkuNSA0LDE3LjQ2IDQsMTVDNCwxMi43NSA2LjUsMTAuODUgMTAsMTAuMjJWOC4xOUM0Ljg2LDguODggMSwxMS42NiAxLDE1QzEsMTguNTYgNS4zNiwyMS41IDExLDIxLjk0QzExLjAzLDIxLjk0IDExLjA2LDIxLjk0IDExLjA5LDIxLjk0TDE0LDIwLjVWMk0xNSw4LjE5VjEwLjIyQzE2LjE1LDEwLjQzIDE3LjE4LDEwLjc3IDE4LjA2LDExLjIyTDE2LjUsMTJMMjMsMTMuNUwyMi41LDlMMjAuNSwxMEMxOSw5LjEyIDE3LjEyLDguNDcgMTUsOC4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlPcGVyYSA9IFwiTTkuMDQsMTcuMDdDOC4wNCwxNS45IDcuNCwxNC4xNiA3LjM1LDEyLjIxVjExLjc5QzcuNCw5Ljg0IDguMDQsOC4xIDkuMDQsNi45M0M5Ljg2LDUuOTUgMTAuOTMsNS4zNyAxMi4xLDUuMzdDMTQuNzIsNS4zNyAxNi44NCw4LjM0IDE2Ljg0LDEyQzE2Ljg0LDE1LjY2IDE0LjcyLDE4LjYzIDEyLjEsMTguNjNDMTAuOTMsMTguNjMgMTAuMzMsMTguNSA5LjA0LDE3LjA3TTEyLjAzLDNIMTJBOSw5IDAgMCwwIDMsMTJDMywxNi44MyA2LjgsMjAuNzcgMTEuNTcsMjFIMTJDMTQuMywyMSAxNi40LDIwLjEzIDE4LDE4LjcxQzE5Ljg0LDE3LjA2IDIxLDE0LjY3IDIxLDEyQzIxLDkuMzMgMTkuODQsNi45NCAxOCw1LjI5QzE2LjQxLDMuODcgMTQuMzIsMyAxMi4wMywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9yYml0ID0gXCJNOC4xMSwxLjc1QzkuMywxLjI1IDEwLjYyLDEgMTIsMUMxOC4wOCwxIDIzLDUuOTIgMjMsMTJDMjMsMTguMDggMTguMDgsMjMgMTIsMjNDNS45MiwyMyAxLDE4LjA4IDEsMTJDMSwxMC42MiAxLjI1LDkuMyAxLjcyLDguMDhDMi4yNCw4LjYxIDIuODMsOC45NiAzLjQ1LDkuMThDMy4xNiwxMC4wNyAzLDExIDMsMTJBOSw5IDAgMCwwIDEyLDIxQTksOSAwIDAsMCAyMSwxMkE5LDkgMCAwLDAgMTIsM0MxMSwzIDEwLjA3LDMuMTYgOS4xOCwzLjQ1QzguOTYsMi44MyA4LjYxLDIuMjQgOC4xMSwxLjc1TTQuOTMsMi45M0M2LjAzLDIuOTMgNi45MywzLjgyIDYuOTMsNC45M0EyLDIgMCAwLDEgNC45Myw2LjkzQzMuODIsNi45MyAyLjkzLDYuMDMgMi45Myw0LjkzQzIuOTMsMy44MiAzLjgyLDIuOTMgNC45MywyLjkzTTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlPcmJpdFZhcmlhbnQgPSBcIk0xOSA4TDE1IDEySDE4QzE4IDE1LjMxIDE1LjMxIDE4IDEyIDE4QzExIDE4IDEwLjAzIDE3Ljc1IDkuMiAxNy4zTDcuNzQgMTguNzZDOC45NyAxOS41NCAxMC40MyAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkgyM002IDEyQzYgOC42OSA4LjY5IDYgMTIgNkMxMyA2IDEzLjk3IDYuMjUgMTQuOCA2LjdMMTYuMjYgNS4yNEMxNS4wMyA0LjQ2IDEzLjU3IDQgMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJIMUw1IDE2TDkgMTJNMTQgMTJDMTQgMTMuMTEgMTMuMTEgMTQgMTIgMTRTMTAgMTMuMTEgMTAgMTIgMTAuOSAxMCAxMiAxMCAxNCAxMC45IDE0IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9yZGVyQWxwaGFiZXRpY2FsQXNjZW5kaW5nID0gXCJNMTIgNUgyMlY3SDEyTTEyIDE5VjE3SDIyVjE5TTEyIDExSDIyVjEzSDEyTTkgMTNWMTVMNS42NyAxOUg5VjIxSDNWMTlMNi4zMyAxNUgzVjEzTTcgM0g1QzMuOSAzIDMgMy45IDMgNVYxMUg1VjlIN1YxMUg5VjVDOSAzLjkgOC4xMSAzIDcgM003IDdINVY1SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3JkZXJBbHBoYWJldGljYWxEZXNjZW5kaW5nID0gXCJNNyAxM0g1QzMuOSAxMyAzIDEzLjkgMyAxNVYyMUg1VjE5SDdWMjFIOVYxNUM5IDEzLjkgOC4xMSAxMyA3IDEzTTcgMTdINVYxNUg3TTkgM1Y1TDUuNjcgOUg5VjExSDNWOUw2LjMzIDVIM1YzTTEyIDVIMjJWN0gxMk0xMiAxOVYxN0gyMlYxOU0xMiAxMUgyMlYxM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlPcmRlckJvb2xBc2NlbmRpbmcgPSBcIk02IDNDMy43OSAzIDIgNC43OSAyIDdTMy43OSAxMSA2IDExIDEwIDkuMjEgMTAgNyA4LjIxIDMgNiAzTTYgOUM0LjkgOSA0IDguMSA0IDdTNC45IDUgNiA1IDggNS45IDggNyA3LjEgOSA2IDlNNiAxM0MzLjc5IDEzIDIgMTQuNzkgMiAxN1MzLjc5IDIxIDYgMjEgMTAgMTkuMjEgMTAgMTcgOC4yMSAxMyA2IDEzTTEyIDVIMjJWN0gxMlY1TTEyIDE5VjE3SDIyVjE5SDEyTTEyIDExSDIyVjEzSDEyVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9yZGVyQm9vbEFzY2VuZGluZ1ZhcmlhbnQgPSBcIk00IDEzQzIuODkgMTMgMiAxMy44OSAyIDE1VjE5QzIgMjAuMTEgMi44OSAyMSA0IDIxSDhDOS4xMSAyMSAxMCAyMC4xMSAxMCAxOVYxNUMxMCAxMy44OSA5LjExIDEzIDggMTNNOC4yIDE0LjVMOS4yNiAxNS41NUw1LjI3IDE5LjVMMi43NCAxNi45NUwzLjgxIDE1LjlMNS4yOCAxNy4zOU00IDNDMi44OSAzIDIgMy44OSAyIDVWOUMyIDEwLjExIDIuODkgMTEgNCAxMUg4QzkuMTEgMTEgMTAgMTAuMTEgMTAgOVY1QzEwIDMuODkgOS4xMSAzIDggM000IDVIOFY5SDRNMTIgNUgyMlY3SDEyTTEyIDE5VjE3SDIyVjE5TTEyIDExSDIyVjEzSDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9yZGVyQm9vbERlc2NlbmRpbmcgPSBcIk02IDEzQzMuNzkgMTMgMiAxNC43OSAyIDE3UzMuNzkgMjEgNiAyMSAxMCAxOS4yMSAxMCAxNyA4LjIxIDEzIDYgMTNNNiAxOUM0LjkgMTkgNCAxOC4xIDQgMTdTNC45IDE1IDYgMTUgOCAxNS45IDggMTcgNy4xIDE5IDYgMTlNNiAzQzMuNzkgMyAyIDQuNzkgMiA3UzMuNzkgMTEgNiAxMSAxMCA5LjIxIDEwIDcgOC4yMSAzIDYgM00xMiA1SDIyVjdIMTJWNU0xMiAxOVYxN0gyMlYxOUgxMk0xMiAxMUgyMlYxM0gxMlYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlPcmRlckJvb2xEZXNjZW5kaW5nVmFyaWFudCA9IFwiTTQgM0MyLjg5IDMgMiAzLjg5IDIgNVY5QzIgMTAuMTEgMi44OSAxMSA0IDExSDhDOS4xMSAxMSAxMCAxMC4xMSAxMCA5VjVDMTAgMy44OSA5LjExIDMgOCAzTTguMiA0LjVMOS4yNiA1LjU1TDUuMjcgOS41TDIuNzQgNi45NUwzLjgxIDUuOUw1LjI4IDcuMzlNNCAxM0MyLjg5IDEzIDIgMTMuODkgMiAxNVYxOUMyIDIwLjExIDIuODkgMjEgNCAyMUg4QzkuMTEgMjEgMTAgMjAuMTEgMTAgMTlWMTVDMTAgMTMuODkgOS4xMSAxMyA4IDEzTTQgMTVIOFYxOUg0TTEyIDVIMjJWN0gxMk0xMiAxOVYxN0gyMlYxOU0xMiAxMUgyMlYxM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlPcmRlck51bWVyaWNBc2NlbmRpbmcgPSBcIk03IDIxSDNWMTlIN1YxOEg1QzMuOSAxOCAzIDE3LjExIDMgMTZWMTVDMyAxMy45IDMuOSAxMyA1IDEzSDdDOC4xMSAxMyA5IDEzLjkgOSAxNVYxOUM5IDIwLjExIDguMTEgMjEgNyAyMU03IDE1SDVWMTZIN001IDNIN0M4LjExIDMgOSAzLjkgOSA1VjlDOSAxMC4xMSA4LjExIDExIDcgMTFINUMzLjkgMTEgMyAxMC4xMSAzIDlWNUMzIDMuOSAzLjkgMyA1IDNNNSA5SDdWNUg1TTEyIDVIMjJWN0gxMk0xMiAxOVYxN0gyMlYxOU0xMiAxMUgyMlYxM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlPcmRlck51bWVyaWNEZXNjZW5kaW5nID0gXCJNNyAxMUgzVjlIN1Y4SDVDMy45IDggMyA3LjExIDMgNlY1QzMgMy45IDMuOSAzIDUgM0g3QzguMTEgMyA5IDMuOSA5IDVWOUM5IDEwLjExIDguMTEgMTEgNyAxMU03IDVINVY2SDdNNSAxM0g3QzguMTEgMTMgOSAxMy45IDkgMTVWMTlDOSAyMC4xMSA4LjExIDIxIDcgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjE1QzMgMTMuOSAzLjkgMTMgNSAxM001IDE5SDdWMTVINU0xMiA1SDIyVjdIMTJNMTIgMTlWMTdIMjJWMTlNMTIgMTFIMjJWMTNIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3JpZ2luID0gXCJNMTIsMi4xM0MxMiwyLjIzIDExLjk1LDIuMzMgMTEuODksMi40MUMxMS41LDMgMTEuMTYsMy42NCAxMS4wNCw0LjMzTDExLDQuNTZMMTIsNC41QTcuNSw3LjUgMCAwLDEgMTkuNSwxMkMxOS41LDEzLjYyIDE5LDE1LjExIDE4LjEyLDE2LjM0QzE2LjczLDE4LjY4IDE0LjcyLDIwLjY1IDEyLjM0LDIxLjk3QzEyLjI1LDIyIDEyLjEyLDIyIDEyLjA2LDIxLjkzQzEyLDIxLjgzIDEyLDIxLjcgMTIuMDksMjEuNjFDMTIuNDcsMjEuMDkgMTIuNzMsMjAuNSAxMi44NywxOS44NUwxMi45MywxOS40NEwxMiwxOS41QTcuNSw3LjUgMCAwLDEgNC41LDEyQzQuNSwxMC4zOSA1LDguODkgNS44OCw3LjY3QzcuMjYsNS4zMiA5LjI4LDMuMzQgMTEuNjcsMkMxMS43OCwxLjk1IDExLjk0LDIgMTIsMi4xM00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3JuYW1lbnQgPSBcIk0xMiwxQTMsMyAwIDAsMSAxNSw0VjVBMSwxIDAgMCwxIDE2LDZWNy4wN0MxOC4zOSw4LjQ1IDIwLDExLjA0IDIwLDE0QTgsOCAwIDAsMSAxMiwyMkE4LDggMCAwLDEgNCwxNEM0LDExLjA0IDUuNjEsOC40NSA4LDcuMDdWNkExLDEgMCAwLDEgOSw1VjRBMywzIDAgMCwxIDEyLDFNMTIsM0ExLDEgMCAwLDAgMTEsNFY1SDEzVjRBMSwxIDAgMCwwIDEyLDNNMTIsOEMxMC4yMiw4IDguNjMsOC43NyA3LjUzLDEwSDE2LjQ3QzE1LjM3LDguNzcgMTMuNzgsOCAxMiw4TTYuMzQsMTZINy41OUw2LDE0LjQzQzYuMDUsMTUgNi4xNywxNS41IDYuMzQsMTZNMTIuNTksMTZMOC41OSwxMkg2LjQxTDEwLjQxLDE2SDEyLjU5TTE3LjY2LDEySDE2LjQxTDE4LDEzLjU3QzE3Ljk1LDEzIDE3LjgzLDEyLjUgMTcuNjYsMTJNMTEuNDEsMTJMMTUuNDEsMTZIMTcuNTlMMTMuNTksMTJIMTEuNDFNMTIsMjBDMTMuNzgsMjAgMTUuMzcsMTkuMjMgMTYuNDcsMThINy41M0M4LjYzLDE5LjIzIDEwLjIyLDIwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9ybmFtZW50VmFyaWFudCA9IFwiTTEyLDFBMywzIDAgMCwxIDE1LDRWNUExLDEgMCAwLDEgMTYsNlY3LjA3QzE4LjM5LDguNDUgMjAsMTEuMDQgMjAsMTRBOCw4IDAgMCwxIDEyLDIyQTgsOCAwIDAsMSA0LDE0QzQsMTEuMDQgNS42MSw4LjQ1IDgsNy4wN1Y2QTEsMSAwIDAsMSA5LDVWNEEzLDMgMCAwLDEgMTIsMU0xMiwzQTEsMSAwIDAsMCAxMSw0VjVIMTNWNEExLDEgMCAwLDAgMTIsM00xMiw4QzEwLjIyLDggOC42Myw4Ljc3IDcuNTMsMTBIMTYuNDdDMTUuMzcsOC43NyAxMy43OCw4IDEyLDhNMTIsMjBDMTMuNzgsMjAgMTUuMzcsMTkuMjMgMTYuNDcsMThINy41M0M4LjYzLDE5LjIzIDEwLjIyLDIwIDEyLDIwTTEyLDEyQTIsMiAwIDAsMCAxMCwxNEEyLDIgMCAwLDAgMTIsMTZBMiwyIDAgMCwwIDE0LDE0QTIsMiAwIDAsMCAxMiwxMk0xOCwxNEMxOCwxMy4zMSAxNy44OCwxMi42NSAxNy42NywxMkMxNi43MiwxMi4xOSAxNiwxMyAxNiwxNEMxNiwxNSAxNi43MiwxNS44MSAxNy42NywxNS45N0MxNy44OCwxNS4zNSAxOCwxNC42OSAxOCwxNE02LDE0QzYsMTQuNjkgNi4xMiwxNS4zNSA2LjMzLDE1Ljk3QzcuMjgsMTUuODEgOCwxNSA4LDE0QzgsMTMgNy4yOCwxMi4xOSA2LjMzLDEyQzYuMTIsMTIuNjUgNiwxMy4zMSA2LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU91dGRvb3JMYW1wID0gXCJNMTUgMjJIMTNDMTEuOSAyMiAxMSAyMS4xIDExIDIwVjE1SDE3VjIwQzE3IDIxLjEgMTYuMSAyMiAxNSAyMk03IDE0SDIxTDE1IDkuNzFWNkMxNSA0LjM5IDEzLjk0IDIgMTEgMlM3IDQuMzkgNyA2QzcgNi40NSA2LjgxIDcgNiA3SDVWM0gzVjEySDVWOUg2QzguMiA5IDkgNy4yMSA5IDZDOSA1LjY3IDkuMSA0IDExIDRDMTIuODMgNCAxMyA1LjU0IDEzIDZWOS43MUw3IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU92ZXJzY2FuID0gXCJNMTIgNS41TDEwIDhIMTRMMTIgNS41TTE4IDEwVjE0TDIwLjUgMTJMMTggMTBNNiAxMEwzLjUgMTJMNiAxNFYxME0xNCAxNkgxMEwxMiAxOC41TDE0IDE2TTIxIDNIM0MxLjkgMyAxIDMuOSAxIDVWMTlDMSAyMC4xIDEuOSAyMSAzIDIxSDIxQzIyLjEgMjEgMjMgMjAuMSAyMyAxOVY1QzIzIDMuOSAyMi4xIDMgMjEgM00yMSAxOUgzVjVIMjFWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3dsID0gXCJNMTIsMTZDMTIuNTYsMTYuODQgMTMuMzEsMTcuNTMgMTQuMiwxOEwxMiwyMC4yTDkuOCwxOEMxMC42OSwxNy41MyAxMS40NSwxNi44NCAxMiwxNk0xNywxMS4yQTIsMiAwIDAsMCAxNSwxMy4yQTIsMiAwIDAsMCAxNywxNS4yQTIsMiAwIDAsMCAxOSwxMy4yQzE5LDEyLjA5IDE4LjEsMTEuMiAxNywxMS4yTTcsMTEuMkEyLDIgMCAwLDAgNSwxMy4yQTIsMiAwIDAsMCA3LDE1LjJBMiwyIDAgMCwwIDksMTMuMkM5LDEyLjA5IDguMSwxMS4yIDcsMTEuMk0xNyw4LjdBNCw0IDAgMCwxIDIxLDEyLjdBNCw0IDAgMCwxIDE3LDE2LjdBNCw0IDAgMCwxIDEzLDEyLjdBNCw0IDAgMCwxIDE3LDguN003LDguN0E0LDQgMCAwLDEgMTEsMTIuN0E0LDQgMCAwLDEgNywxNi43QTQsNCAwIDAsMSAzLDEyLjdBNCw0IDAgMCwxIDcsOC43TTIuMjQsMUM0LDQuNyAyLjczLDcuNDYgMS41NSwxMC4yQzEuMTksMTEgMSwxMS44MyAxLDEyLjdBNiw2IDAgMCwwIDcsMTguN0M3LjIxLDE4LjY5IDcuNDIsMTguNjggNy42MywxOC42NUwxMC41OSwyMS42MUwxMiwyM0wxMy40MSwyMS42MUwxNi4zNywxOC42NUMxNi41OCwxOC42OCAxNi43OSwxOC42OSAxNywxOC43QTYsNiAwIDAsMCAyMywxMi43QzIzLDExLjgzIDIyLjgxLDExIDIyLjQ1LDEwLjJDMjEuMjcsNy40NiAyMCw0LjcgMjEuNzYsMUMxOS4xMiwzLjA2IDE1LjM2LDQuNjkgMTIsNC43QzguNjQsNC42OSA0Ljg4LDMuMDYgMi4yNCwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhY01hbiA9IFwiTTEyLDEyTDE5LjA3LDE5LjA3QzE1LjE3LDIzIDguODMsMjMgNC45MywxOS4wN0MxLDE1LjE3IDEsOC44NCA0LjkzLDQuOTNDOC44MywxIDE1LjE2LDEgMTkuMDcsNC45M0wxMiwxMk0xOSwxMEEyLDIgMCAwLDAgMTcsMTJBMiwyIDAgMCwwIDE5LDE0QTIsMiAwIDAsMCAyMSwxMkEyLDIgMCAwLDAgMTksMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFja2FnZSA9IFwiTTUuMTIsNUgxOC44N0wxNy45Myw0SDUuOTNMNS4xMiw1TTIwLjU0LDUuMjNDMjAuODMsNS41NyAyMSw2IDIxLDYuNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY2LjVDMyw2IDMuMTcsNS41NyAzLjQ2LDUuMjNMNC44NCwzLjU1QzUuMTIsMy4yMSA1LjUzLDMgNiwzSDE4QzE4LjQ3LDMgMTguODgsMy4yMSAxOS4xNSwzLjU1TDIwLjU0LDUuMjNNNiwxOEgxMlYxNUg2VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhY2thZ2VEb3duID0gXCJNNS4xMiw1TDUuOTMsNEgxNy45M0wxOC44Nyw1TTEyLDE3LjVMNi41LDEySDEwVjEwSDE0VjEySDE3LjVMMTIsMTcuNU0yMC41NCw1LjIzTDE5LjE1LDMuNTVDMTguODgsMy4yMSAxOC40NywzIDE4LDNINkM1LjUzLDMgNS4xMiwzLjIxIDQuODQsMy41NUwzLjQ2LDUuMjNDMy4xNyw1LjU3IDMsNiAzLDYuNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNi41QzIxLDYgMjAuODMsNS41NyAyMC41NCw1LjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhY2thZ2VVcCA9IFwiTTIwLjU0LDUuMjNDMjAuODMsNS41NyAyMSw2IDIxLDYuNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY2LjVDMyw2IDMuMTcsNS41NyAzLjQ2LDUuMjNMNC44NCwzLjU1QzUuMTIsMy4yMSA1LjUzLDMgNiwzSDE4QzE4LjQ3LDMgMTguODgsMy4yMSAxOS4xNSwzLjU1TDIwLjU0LDUuMjNNNS4xMiw1SDE4Ljg3TDE3LjkzLDRINS45M0w1LjEyLDVNMTIsOS41TDYuNSwxNUgxMFYxN0gxNFYxNUgxNy41TDEyLDkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWNrYWdlVmFyaWFudCA9IFwiTTIsMTAuOTZDMS41LDEwLjY4IDEuMzUsMTAuMDcgMS42Myw5LjU5TDMuMTMsN0MzLjI0LDYuOCAzLjQxLDYuNjYgMy42LDYuNThMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjY2LDYuNzIgMjAuODIsNi44OCAyMC45MSw3LjA4TDIyLjM2LDkuNkMyMi42NCwxMC4wOCAyMi40NywxMC42OSAyMiwxMC45NkwyMSwxMS41NFYxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVYxMC45NkMyLjcsMTEuMTMgMi4zMiwxMS4xNCAyLDEwLjk2TTEyLDQuMTVWNC4xNUwxMiwxMC44NVYxMC44NUwxNy45Niw3LjVMMTIsNC4xNU01LDE1LjkxTDExLDE5LjI5VjEyLjU4TDUsOS4yMVYxNS45MU0xOSwxNS45MVYxMi42OUwxNCwxNS41OUMxMy42NywxNS43NyAxMy4zLDE1Ljc2IDEzLDE1LjZWMTkuMjlMMTksMTUuOTFNMTMuODUsMTMuMzZMMjAuMTMsOS43M0wxOS41NSw4LjcyTDEzLjI3LDEyLjM1TDEzLjg1LDEzLjM2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhY2thZ2VWYXJpYW50Q2xvc2VkID0gXCJNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsNC4xNUwxMC4xMSw1LjIyTDE2LDguNjFMMTcuOTYsNy41TDEyLDQuMTVNNi4wNCw3LjVMMTIsMTAuODVMMTMuOTYsOS43NUw4LjA4LDYuMzVMNi4wNCw3LjVNNSwxNS45MUwxMSwxOS4yOVYxMi41OEw1LDkuMjFWMTUuOTFNMTksMTUuOTFWOS4yMUwxMywxMi41OFYxOS4yOUwxOSwxNS45MVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWdlRmlyc3QgPSBcIk0xOC40MSwxNi41OUwxMy44MiwxMkwxOC40MSw3LjQxTDE3LDZMMTEsMTJMMTcsMThMMTguNDEsMTYuNTlNNiw2SDhWMThINlY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VMYXN0ID0gXCJNNS41OSw3LjQxTDEwLjE4LDEyTDUuNTksMTYuNTlMNywxOEwxMywxMkw3LDZMNS41OSw3LjQxTTE2LDZIMThWMThIMTZWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWdlTGF5b3V0Qm9keSA9IFwiTTYsMkgxOEEyLDIgMCAwLDEgMjAsNFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJNNiw4VjE2SDE4VjhINlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWdlTGF5b3V0Rm9vdGVyID0gXCJNNiwySDE4QTIsMiAwIDAsMSAyMCw0VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMk02LDE2VjIwSDE4VjE2SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFnZUxheW91dEhlYWRlciA9IFwiTTYsMkgxOEEyLDIgMCAwLDEgMjAsNFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJNNiw0VjhIMThWNEg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VMYXlvdXRIZWFkZXJGb290ZXIgPSBcIk0xOCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY0QzIwIDIuOSAxOS4xMSAyIDE4IDJNMTggMjBINlYxNkgxOFYyME0xOCA4SDZWNEgxOFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VMYXlvdXRTaWRlYmFyTGVmdCA9IFwiTTYsMkgxOEEyLDIgMCAwLDEgMjAsNFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJNNiw4VjE2SDEwVjhINlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWdlTGF5b3V0U2lkZWJhclJpZ2h0ID0gXCJNNiwySDE4QTIsMiAwIDAsMSAyMCw0VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMk0xNCw4VjE2SDE4VjhIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFnZU5leHQgPSBcIk0yMCwzSDVBMiwyIDAgMCwwIDMsNVYxMUg3VjlMMTEsMTJMNywxNVYxM0gzVjE5QTIsMiAwIDAsMCA1LDIxSDIwQTIsMiAwIDAsMCAyMiwxOVY1QTIsMiAwIDAsMCAyMCwzTTE3LDE3SDEzVjE1SDE3VjE3TTIwLDEzSDEzVjExSDIwVjEzTTIwLDlIMTNWN0gyMFY5TTMsMTNIMFYxMUgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VOZXh0T3V0bGluZSA9IFwiTTIyLDNINUEyLDIgMCAwLDAgMyw1VjlINVY1SDIyVjE5SDVWMTVIM1YxOUEyLDIgMCAwLDAgNSwyMUgyMkEyLDIgMCAwLDAgMjQsMTlWNUEyLDIgMCAwLDAgMjIsM003LDE1VjEzSDBWMTFIN1Y5TDExLDEyTDcsMTVNMjAsMTNIMTNWMTFIMjBWMTNNMjAsOUgxM1Y3SDIwVjlNMTcsMTdIMTNWMTVIMTdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFnZVByZXZpb3VzID0gXCJNNCwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTNIMTdWMTVMMTMsMTJMMTcsOVYxMUgyMVY1QTIsMiAwIDAsMCAxOSwzSDRBMiwyIDAgMCwwIDIsNVYxOUEyLDIgMCAwLDAgNCwyMU00LDE1SDhWMTdINFYxNU00LDExSDExVjEzSDRWMTFNNCw3SDExVjlINFY3TTIxLDExSDI0VjEzSDIxVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VQcmV2aW91c091dGxpbmUgPSBcIk0yLDNIMTlBMiwyIDAgMCwxIDIxLDVWOUgxOVY1SDJWMTlIMTlWMTVIMjFWMTlBMiwyIDAgMCwxIDE5LDIxSDJBMiwyIDAgMCwxIDAsMTlWNUEyLDIgMCAwLDEgMiwzTTE3LDE1VjEzSDI0VjExSDE3VjlMMTMsMTJMMTcsMTVNNCwxM0gxMVYxMUg0VjEzTTQsOUgxMVY3SDRWOU00LDE3SDhWMTVINFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQYWlsID0gXCJNMTEuNSA3LjYzQzExLjk3IDcuMzUgMTIuNTggNy41IDEyLjg2IDhDMTMuMTQgOC40NyAxMi45NyA5LjA5IDEyLjUgOS4zNkw0LjI3IDE0LjExQzMuNzkgMTQuMzkgMy4xOCAxNC4yMyAyLjkgMTMuNzVDMi42MiAxMy4yNyAyLjc5IDEyLjY2IDMuMjcgMTIuMzhMMTEuNSA3LjYzTTcgMjFMNS43OSAxNC45N0wxMy4yMSAxMC42OUMxNCAxMC4yNiAxNC41IDkuNDQgMTQuNSA4LjVDMTQuNSA3LjEyIDEzLjM4IDYgMTIgNkMxMS41MyA2IDExLjA5IDYuMTMgMTAuNzEgNi4zNkw0Ljc2IDkuNzlMNCA2SDNWNEgyMVY2SDIwTDE3IDIxSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFpbE1pbnVzID0gXCJNMTIuNSA5LjM2TDQuMjcgMTQuMTFDMy43OSAxNC4zOSAzLjE4IDE0LjIzIDIuOSAxMy43NUMyLjYyIDEzLjI3IDIuNzkgMTIuNjYgMy4yNyAxMi4zOEwxMS41IDcuNjNDMTEuOTcgNy4zNSAxMi41OCA3LjUgMTIuODYgOEMxMy4xNCA4LjQ3IDEyLjk3IDkuMDkgMTIuNSA5LjM2TTEzIDE5QzEzIDE1LjgyIDE1LjQ3IDEzLjIzIDE4LjYgMTNMMjAgNkgyMVY0SDNWNkg0TDQuNzYgOS43OUwxMC43MSA2LjM2QzExLjA5IDYuMTMgMTEuNTMgNiAxMiA2QzEzLjM4IDYgMTQuNSA3LjEyIDE0LjUgOC41QzE0LjUgOS40NCAxNCAxMC4yNiAxMy4yMSAxMC42OUw1Ljc5IDE0Ljk3TDcgMjFIMTMuMzVDMTMuMTMgMjAuMzcgMTMgMTkuNyAxMyAxOU0xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWlsTWludXNPdXRsaW5lID0gXCJNNCA2SDNWNEgyMVY2SDIwTDE4LjYgMTNDMTcuODMgMTMuMDcgMTcuMTEgMTMuMjYgMTYuNDUgMTMuNThMMTcuOTYgNkg2LjA0TDYuNSA4LjIyTDQuNjUgOS4yN0w0IDZNMTIuODYgOEMxMi41OCA3LjUgMTEuOTcgNy4zNSAxMS41IDcuNjNMMy4yNyAxMi4zOEMyLjc5IDEyLjY2IDIuNjIgMTMuMjcgMi45IDEzLjc1QzMuMTggMTQuMjMgMy43OSAxNC4zOSA0LjI3IDE0LjExTDEyLjUgOS4zNkMxMi45NyA5LjA5IDEzLjE0IDguNDcgMTIuODYgOE0xMyAxOUg4LjY0TDcuNzMgMTQuNDNMNS45IDE1LjVMNyAyMUgxMy4zNUMxMy4xMyAyMC4zNyAxMyAxOS43IDEzIDE5TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhaWxPZmYgPSBcIk0yMC44NCAyMi43M0wxNy4zNSAxOS4yNEwxNyAyMUg3TDUuNzkgMTQuOTdMMTAuNDEgMTIuM0w5LjMxIDExLjJMNC4yNyAxNC4xMUMzLjc5IDE0LjM5IDMuMTggMTQuMjMgMi45IDEzLjc1QzIuNjIgMTMuMjcgMi43OSAxMi42NiAzLjI3IDEyLjM4TDcuODUgOS43NEw2Ljc1IDguNjRMNC43NiA5Ljc5TDQgNkgzVjQuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xMC43MSA2LjM2QzExLjA5IDYuMTMgMTEuNTMgNiAxMiA2QzEzLjM4IDYgMTQuNSA3LjEyIDE0LjUgOC41QzE0LjUgOS4yNyAxNC4xNiA5Ljk0IDEzLjYgMTAuNEwxOC4yIDE1TDIwIDZIMjFWNEg3LjJMMTAgNi43OEwxMC43MSA2LjM2TTExLjUgNy42M0wxMS4wOCA3Ljg4TDEyLjUzIDkuMzNDMTIuOTcgOS4wNSAxMy4xMyA4LjQ2IDEyLjg2IDhDMTIuNTggNy41IDExLjk3IDcuMzUgMTEuNSA3LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhaWxPZmZPdXRsaW5lID0gXCJNMjAuODQgMjIuNzNMMTcuMzUgMTkuMjRMMTcgMjFIN0w1LjkgMTUuNUw3LjczIDE0LjQzTDguNjQgMTlIMTUuMzZMMTUuNjUgMTcuNTRMOS4zMSAxMS4yTDQuMjcgMTQuMTFDMy43OSAxNC4zOSAzLjE4IDE0LjIzIDIuOSAxMy43NUMyLjYyIDEzLjI3IDIuNzkgMTIuNjYgMy4yNyAxMi4zOEw3Ljg1IDkuNzRMNi4zOCA4LjI3TDQuNjUgOS4yN0w0IDZIM1Y0Ljg5TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNNMTcuOTYgNkwxNi41IDEzLjNMMTguMiAxNUwyMCA2SDIxVjRINy4yTDkuMiA2SDE3Ljk2TTExLjUgNy42M0wxMS4wOCA3Ljg4TDEyLjUzIDkuMzNDMTIuOTcgOS4wNSAxMy4xMyA4LjQ2IDEyLjg2IDhDMTIuNTggNy41IDExLjk3IDcuMzUgMTEuNSA3LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhaWxPdXRsaW5lID0gXCJNMTEuNSA3LjYzQzExLjk3IDcuMzUgMTIuNTggNy41IDEyLjg2IDhDMTMuMTQgOC40NyAxMi45NyA5LjA5IDEyLjUgOS4zNkw0LjI3IDE0LjExQzMuNzkgMTQuMzkgMy4xOCAxNC4yMyAyLjkgMTMuNzVTMi43OSAxMi42NiAzLjI3IDEyLjM4TDExLjUgNy42M00zIDRWNkg0TDQuNjUgOS4yN0w2LjUgOC4yMkw2LjA0IDZIMTcuOTZMMTUuMzYgMTlIOC42NEw3LjczIDE0LjQzTDUuOSAxNS41TDcgMjFIMTdMMjAgNkgyMVY0SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFpbFBsdXMgPSBcIk0xMi41IDkuMzZMNC4yNyAxNC4xMUMzLjc5IDE0LjM5IDMuMTggMTQuMjMgMi45IDEzLjc1QzIuNjIgMTMuMjcgMi43OSAxMi42NiAzLjI3IDEyLjM4TDExLjUgNy42M0MxMS45NyA3LjM1IDEyLjU4IDcuNSAxMi44NiA4QzEzLjE0IDguNDcgMTIuOTcgOS4wOSAxMi41IDkuMzZNMTMgMTlDMTMgMTUuODIgMTUuNDcgMTMuMjMgMTguNiAxM0wyMCA2SDIxVjRIM1Y2SDRMNC43NiA5Ljc5TDEwLjcxIDYuMzZDMTEuMDkgNi4xMyAxMS41MyA2IDEyIDZDMTMuMzggNiAxNC41IDcuMTIgMTQuNSA4LjVDMTQuNSA5LjQ0IDE0IDEwLjI2IDEzLjIxIDEwLjY5TDUuNzkgMTQuOTdMNyAyMUgxMy4zNUMxMy4xMyAyMC4zNyAxMyAxOS43IDEzIDE5TTE4IDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhaWxQbHVzT3V0bGluZSA9IFwiTTQgNkgzVjRIMjFWNkgyMEwxOC42IDEzQzE3LjgzIDEzLjA3IDE3LjExIDEzLjI2IDE2LjQ1IDEzLjU4TDE3Ljk2IDZINi4wNEw2LjUgOC4yMkw0LjY1IDkuMjdMNCA2TTEyLjg2IDhDMTIuNTggNy41IDExLjk3IDcuMzUgMTEuNSA3LjYzTDMuMjcgMTIuMzhDMi43OSAxMi42NiAyLjYyIDEzLjI3IDIuOSAxMy43NUMzLjE4IDE0LjIzIDMuNzkgMTQuMzkgNC4yNyAxNC4xMUwxMi41IDkuMzZDMTIuOTcgOS4wOSAxMy4xNCA4LjQ3IDEyLjg2IDhNMTMgMTlIOC42NEw3LjczIDE0LjQzTDUuOSAxNS41TDcgMjFIMTMuMzVDMTMuMTMgMjAuMzcgMTMgMTkuNyAxMyAxOU0xOCAxNVYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFYxNUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWlsUmVtb3ZlID0gXCJNMTIuNSA5LjM2TDQuMjcgMTQuMTFDMy43OSAxNC4zOSAzLjE4IDE0LjIzIDIuOSAxMy43NUMyLjYyIDEzLjI3IDIuNzkgMTIuNjYgMy4yNyAxMi4zOEwxMS41IDcuNjNDMTEuOTcgNy4zNSAxMi41OCA3LjUgMTIuODYgOEMxMy4xNCA4LjQ3IDEyLjk3IDkuMDkgMTIuNSA5LjM2TTEzIDE5QzEzIDE1LjgyIDE1LjQ3IDEzLjIzIDE4LjYgMTNMMjAgNkgyMVY0SDNWNkg0TDQuNzYgOS43OUwxMC43MSA2LjM2QzExLjA5IDYuMTMgMTEuNTMgNiAxMiA2QzEzLjM4IDYgMTQuNSA3LjEyIDE0LjUgOC41QzE0LjUgOS40NCAxNCAxMC4yNiAxMy4yMSAxMC42OUw1Ljc5IDE0Ljk3TDcgMjFIMTMuMzVDMTMuMTMgMjAuMzcgMTMgMTkuNyAxMyAxOU0yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWlsUmVtb3ZlT3V0bGluZSA9IFwiTTQgNkgzVjRIMjFWNkgyMEwxOC42IDEzQzE3LjgzIDEzLjA3IDE3LjExIDEzLjI2IDE2LjQ1IDEzLjU4TDE3Ljk2IDZINi4wNEw2LjUgOC4yMkw0LjY1IDkuMjdMNCA2TTEyLjg2IDhDMTIuNTggNy41IDExLjk3IDcuMzUgMTEuNSA3LjYzTDMuMjcgMTIuMzhDMi43OSAxMi42NiAyLjYyIDEzLjI3IDIuOSAxMy43NUMzLjE4IDE0LjIzIDMuNzkgMTQuMzkgNC4yNyAxNC4xMUwxMi41IDkuMzZDMTIuOTcgOS4wOSAxMy4xNCA4LjQ3IDEyLjg2IDhNMTMgMTlIOC42NEw3LjczIDE0LjQzTDUuOSAxNS41TDcgMjFIMTMuMzVDMTMuMTMgMjAuMzcgMTMgMTkuNyAxMyAxOU0yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NiAxNi44OEwxNy41OCAxOUwxNS40NiAyMS4xMkwxNi44NyAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41MyAyMS4xMkwyMC40MSAxOUwyMi41MyAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWxldHRlID0gXCJNMTcuNSwxMkExLjUsMS41IDAgMCwxIDE2LDEwLjVBMS41LDEuNSAwIDAsMSAxNy41LDlBMS41LDEuNSAwIDAsMSAxOSwxMC41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMk0xNC41LDhBMS41LDEuNSAwIDAsMSAxMyw2LjVBMS41LDEuNSAwIDAsMSAxNC41LDVBMS41LDEuNSAwIDAsMSAxNiw2LjVBMS41LDEuNSAwIDAsMSAxNC41LDhNOS41LDhBMS41LDEuNSAwIDAsMSA4LDYuNUExLjUsMS41IDAgMCwxIDkuNSw1QTEuNSwxLjUgMCAwLDEgMTEsNi41QTEuNSwxLjUgMCAwLDEgOS41LDhNNi41LDEyQTEuNSwxLjUgMCAwLDEgNSwxMC41QTEuNSwxLjUgMCAwLDEgNi41LDlBMS41LDEuNSAwIDAsMSA4LDEwLjVBMS41LDEuNSAwIDAsMSA2LjUsMTJNMTIsM0E5LDkgMCAwLDAgMywxMkE5LDkgMCAwLDAgMTIsMjFBMS41LDEuNSAwIDAsMCAxMy41LDE5LjVDMTMuNSwxOS4xMSAxMy4zNSwxOC43NiAxMy4xMSwxOC41QzEyLjg4LDE4LjIzIDEyLjczLDE3Ljg4IDEyLjczLDE3LjVBMS41LDEuNSAwIDAsMSAxNC4yMywxNkgxNkE1LDUgMCAwLDAgMjEsMTFDMjEsNi41OCAxNi45NywzIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFsZXR0ZUFkdmFuY2VkID0gXCJNMjIsMjJIMTBWMjBIMjJWMjJNMiwyMlYyMEg5VjIySDJNMTgsMThWMTBIMjJWMThIMThNMTgsM0gyMlY5SDE4VjNNMiwxOFYzSDE2VjE4SDJNOSwxNC41NkEzLDMgMCAwLDAgMTIsMTEuNTZDMTIsOS41NiA5LDYuMTkgOSw2LjE5QzksNi4xOSA2LDkuNTYgNiwxMS41NkEzLDMgMCAwLDAgOSwxNC41NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWxldHRlT3V0bGluZSA9IFwiTTEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkMxNy41LDIgMjIsNiAyMiwxMUE2LDYgMCAwLDEgMTYsMTdIMTQuMkMxMy45LDE3IDEzLjcsMTcuMiAxMy43LDE3LjVDMTMuNywxNy42IDEzLjgsMTcuNyAxMy44LDE3LjhDMTQuMiwxOC4zIDE0LjQsMTguOSAxNC40LDE5LjVDMTQuNSwyMC45IDEzLjQsMjIgMTIsMjJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBDMTIuMywyMCAxMi41LDE5LjggMTIuNSwxOS41QzEyLjUsMTkuMyAxMi40LDE5LjIgMTIuNCwxOS4xQzEyLDE4LjYgMTEuOCwxOC4xIDExLjgsMTcuNUMxMS44LDE2LjEgMTIuOSwxNSAxNC4zLDE1SDE2QTQsNCAwIDAsMCAyMCwxMUMyMCw3LjEgMTYuNCw0IDEyLDRNNi41LDEwQzcuMywxMCA4LDEwLjcgOCwxMS41QzgsMTIuMyA3LjMsMTMgNi41LDEzQzUuNywxMyA1LDEyLjMgNSwxMS41QzUsMTAuNyA1LjcsMTAgNi41LDEwTTkuNSw2QzEwLjMsNiAxMSw2LjcgMTEsNy41QzExLDguMyAxMC4zLDkgOS41LDlDOC43LDkgOCw4LjMgOCw3LjVDOCw2LjcgOC43LDYgOS41LDZNMTQuNSw2QzE1LjMsNiAxNiw2LjcgMTYsNy41QzE2LDguMyAxNS4zLDkgMTQuNSw5QzEzLjcsOSAxMyw4LjMgMTMsNy41QzEzLDYuNyAxMy43LDYgMTQuNSw2TTE3LjUsMTBDMTguMywxMCAxOSwxMC43IDE5LDExLjVDMTksMTIuMyAxOC4zLDEzIDE3LjUsMTNDMTYuNywxMyAxNiwxMi4zIDE2LDExLjVDMTYsMTAuNyAxNi43LDEwIDE3LjUsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFsZXR0ZVN3YXRjaCA9IFwiTTIuNTMsMTkuNjVMMy44NywyMC4yMVYxMS4xOEwxLjQ0LDE3LjA0QzEuMDMsMTguMDYgMS41LDE5LjIzIDIuNTMsMTkuNjVNMjIuMDMsMTUuOTVMMTcuMDcsNEMxNi43NiwzLjIzIDE2LjAzLDIuNzcgMTUuMjYsMi43NUMxNSwyLjc1IDE0LjczLDIuNzkgMTQuNDcsMi45TDcuMSw1Ljk1QzYuMzUsNi4yNiA1Ljg5LDcgNS44Nyw3Ljc1QzUuODYsOCA1LjkxLDguMjkgNiw4LjU1TDExLDIwLjVDMTEuMjksMjEuMjggMTIuMDMsMjEuNzQgMTIuODEsMjEuNzVDMTMuMDcsMjEuNzUgMTMuMzMsMjEuNyAxMy41OCwyMS42TDIwLjk0LDE4LjU1QzIxLjk2LDE4LjEzIDIyLjQ1LDE2Ljk2IDIyLjAzLDE1Ljk1TTcuODgsOC43NUExLDEgMCAwLDEgNi44OCw3Ljc1QTEsMSAwIDAsMSA3Ljg4LDYuNzVDOC40Myw2Ljc1IDguODgsNy4yIDguODgsNy43NUM4Ljg4LDguMyA4LjQzLDguNzUgNy44OCw4Ljc1TTUuODgsMTkuNzVBMiwyIDAgMCwwIDcuODgsMjEuNzVIOS4zM0w1Ljg4LDEzLjQxVjE5Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbGV0dGVTd2F0Y2hPdXRsaW5lID0gXCJNMi41IDE5LjZMMy44IDIwLjJWMTEuMkwxLjQgMTdDMSAxOC4xIDEuNSAxOS4yIDIuNSAxOS42TTE1LjIgNC44TDIwLjIgMTYuOEwxMi45IDE5LjhMNy45IDcuOVY3LjhMMTUuMiA0LjhNMTUuMyAyLjhDMTUgMi44IDE0LjggMi44IDE0LjUgMi45TDcuMSA2QzYuNCA2LjMgNS45IDcgNS45IDcuOEM1LjkgOCA1LjkgOC4zIDYgOC42TDExIDIwLjVDMTEuMyAyMS4zIDEyIDIxLjcgMTIuOCAyMS43QzEzLjEgMjEuNyAxMy4zIDIxLjcgMTMuNiAyMS42TDIxIDE4LjVDMjIgMTguMSAyMi41IDE2LjkgMjIuMSAxNS45TDE3LjEgNEMxNi44IDMuMiAxNiAyLjggMTUuMyAyLjhNMTAuNSA5LjlDOS45IDkuOSA5LjUgOS41IDkuNSA4LjlTOS45IDcuOSAxMC41IDcuOUMxMS4xIDcuOSAxMS41IDguNCAxMS41IDguOVMxMS4xIDkuOSAxMC41IDkuOU01LjkgMTkuOEM1LjkgMjAuOSA2LjggMjEuOCA3LjkgMjEuOEg5LjNMNS45IDEzLjVWMTkuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWxtVHJlZSA9IFwiTTEyIDlDMTMuNTkgMTYuNjEgMTAgMjIgMTAgMjJIMTNDMTQuODggMTYuMiAxNCAxMi4wOSAxMy41IDEwTTE1LjY2IDcuMTZDMTUuODMgNy4zNyAxNiA3LjU5IDE2LjEzIDcuODJDMTcuODQgMTAuNTMgMTcuNSAxMy45NSAxNS41IDE2LjI2QzE2LjM0IDE0LjIxIDE2LjIyIDExLjc5IDE0Ljk1IDkuNzdDMTQuODcgOS42NCAxNC43OCA5LjUzIDE0LjcgOS40MUMxNC4xMSA4LjU4IDEzLjM2IDcuOTIgMTIuNTQgNy40M0M5LjY2IDguMzUgNy41OCAxMS4wNCA3LjU4IDE0LjIyQzcuNTggMTQuOTYgNy42OSAxNS42NyA3Ljg5IDE2LjMzQzcuMDUgMTUuMTYgNi41NiAxMy43MyA2LjU2IDEyLjE5QzYuNTYgOS44NCA3LjcgNy43NiA5LjQ1IDYuNDZDOCA2LjM1IDYuNDYgNi42NyA1LjEyIDcuNUM0LjUgNy45MSAzLjk2IDguMzggMy41IDguOTFDNC4wNSA3LjU4IDUgNi4zOSA2LjMgNS41N0M3LjggNC42MyA5LjUgNC4zMiAxMS4xNCA0LjU2QzEwLjczIDQgMTAuMjMgMy40NyA5LjYzIDNDOS4wNSAyLjU4IDguNDIgMi4yNCA3Ljc2IDJDOS4yIDIuMDQgMTAuNjQgMi41IDExLjg3IDMuNDNDMTIuNSAzLjkgMTMgNC40NyAxMy40IDUuMDdDMTMuNSA1LjA3IDEzLjU5IDUuMDYgMTMuNjkgNS4wNkMxNi44OSA1LjA2IDE5LjYgNy4xNyAyMC41IDEwLjA4QzE5LjM4IDguNSAxNy42NSA3LjQzIDE1LjY2IDcuMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuID0gXCJNMTIsMi41TDgsN0gxNkwxMiwyLjVNNyw4TDIuNSwxMkw3LDE2VjhNMTcsOFYxNkwyMS41LDEyTDE3LDhNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwTTgsMTdMMTIsMjEuNUwxNiwxN0g4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbkJvdHRvbUxlZnQgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNNS4zNSwxM0wxMSwxOC42NUw1LDE5TDUuMzUsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuQm90dG9tUmlnaHQgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTMsMTguNjVMMTguNjUsMTNMMTksMTlMMTMsMTguNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuRG93biA9IFwiTTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxME04LDE3TDEyLDIxLjVMMTYsMTdIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYW5Ib3Jpem9udGFsID0gXCJNNyw4TDIuNSwxMkw3LDE2VjhNMTcsOFYxNkwyMS41LDEyTDE3LDhNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbkxlZnQgPSBcIk03LDhMMi41LDEyTDcsMTZWOE0xMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkEyLDIgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuUmlnaHQgPSBcIk0xNyw4VjE2TDIxLjUsMTJMMTcsOE0xMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkEyLDIgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuVG9wTGVmdCA9IFwiTTEyLDEwQTIsMiAwIDAsMSAxNCwxMkEyLDIgMCAwLDEgMTIsMTRBMiwyIDAgMCwxIDEwLDEyQTIsMiAwIDAsMSAxMiwxME0xMSw1LjM1TDUuMzUsMTFMNSw1TDExLDUuMzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuVG9wUmlnaHQgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTguNjUsMTFMMTMsNS4zNUwxOSw1TDE4LjY1LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhblVwID0gXCJNMTIsMi41TDgsN0gxNkwxMiwyLjVNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhblZlcnRpY2FsID0gXCJNMTIsMi41TDgsN0gxNkwxMiwyLjVNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwTTgsMTdMMTIsMjEuNUwxNiwxN0g4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbmRhID0gXCJNMTIsM0MxMy43NCwzIDE1LjM2LDMuNSAxNi43NCw0LjM1QzE3LjM4LDMuNTMgMTguMzgsMyAxOS41LDNBMy41LDMuNSAwIDAsMSAyMyw2LjVDMjMsOCAyMi4wNSw5LjI4IDIwLjcyLDkuNzhDMjAuOSwxMC41IDIxLDExLjIzIDIxLDEyQTksOSAwIDAsMSAxMiwyMUE5LDkgMCAwLDEgMywxMkMzLDExLjIzIDMuMSwxMC41IDMuMjgsOS43OEMxLjk1LDkuMjggMSw4IDEsNi41QTMuNSwzLjUgMCAwLDEgNC41LDNDNS42MiwzIDYuNjIsMy41MyA3LjI2LDQuMzVDOC42NCwzLjUgMTAuMjYsMyAxMiwzTTEyLDVBNyw3IDAgMCwwIDUsMTJBNyw3IDAgMCwwIDEyLDE5QTcsNyAwIDAsMCAxOSwxMkE3LDcgMCAwLDAgMTIsNU0xNi4xOSwxMC4zQzE2LjU1LDExLjYzIDE2LjA4LDEyLjkxIDE1LjE1LDEzLjE2QzE0LjIxLDEzLjQyIDEzLjE3LDEyLjU0IDEyLjgxLDExLjJDMTIuNDUsOS44NyAxMi45Miw4LjU5IDEzLjg1LDguMzRDMTQuNzksOC4wOSAxNS44Myw4Ljk2IDE2LjE5LDEwLjNNNy44MSwxMC4zQzguMTcsOC45NiA5LjIxLDguMDkgMTAuMTUsOC4zNEMxMS4wOCw4LjU5IDExLjU1LDkuODcgMTEuMTksMTEuMkMxMC44MywxMi41NCA5Ljc5LDEzLjQyIDguODUsMTMuMTZDNy45MiwxMi45MSA3LjQ1LDExLjYzIDcuODEsMTAuM00xMiwxNEMxMi42LDE0IDEzLjEzLDE0LjE5IDEzLjUsMTQuNUwxMi41LDE1LjVDMTIuNSwxNS45MiAxMi44NCwxNi4yNSAxMy4yNSwxNi4yNUEwLjc1LDAuNzUgMCAwLDAgMTQsMTUuNUEwLjUsMC41IDAgMCwxIDE0LjUsMTVBMC41LDAuNSAwIDAsMSAxNSwxNS41QTEuNzUsMS43NSAwIDAsMSAxMy4yNSwxNy4yNUMxMi43NiwxNy4yNSAxMi4zMiwxNy4wNSAxMiwxNi43MkMxMS42OCwxNy4wNSAxMS4yNCwxNy4yNSAxMC43NSwxNy4yNUExLjc1LDEuNzUgMCAwLDEgOSwxNS41QTAuNSwwLjUgMCAwLDEgOS41LDE1QTAuNSwwLjUgMCAwLDEgMTAsMTUuNUEwLjc1LDAuNzUgMCAwLDAgMTAuNzUsMTYuMjVBMC43NSwwLjc1IDAgMCwwIDExLjUsMTUuNUwxMC41LDE0LjVDMTAuODcsMTQuMTkgMTEuNCwxNCAxMiwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYW5kb3JhID0gXCJNMTAsMjBBMSwxIDAgMCwxIDksMjFINFYzSDEzLjcxQTYuNzUsNi43NSAwIDAsMSAyMC40Niw5Ljc1QzIwLjQ2LDEzLjUgMTcuNDQsMTYuNSAxMy43MSwxNi41SDEwVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbm9yYW1hID0gXCJNOC41LDEyLjVMMTEsMTUuNUwxNC41LDExTDE5LDE3SDVNMjMsMThWNkEyLDIgMCAwLDAgMjEsNEgzQTIsMiAwIDAsMCAxLDZWMThBMiwyIDAgMCwwIDMsMjBIMjFBMiwyIDAgMCwwIDIzLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbm9yYW1hRmlzaGV5ZSA9IFwiTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsMTJDMjAsMTYuNDEgMTYuNDEsMjAgMTIsMjBNMTIsMkM2LjQ3LDIgMiw2LjQ3IDIsMTJDMiwxNy41MyA2LjQ3LDIyIDEyLDIyQzE3LjUzLDIyIDIyLDE3LjUzIDIyLDEyQzIyLDYuNDcgMTcuNTMsMiAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbm9yYW1hSG9yaXpvbnRhbCA9IFwiTTIxLjQzLDRDMjEuMzMsNCAyMS4yMyw0IDIxLjEyLDQuMDZDMTguMTgsNS4xNiAxNS4wOSw1LjcgMTIsNS43QzguOTEsNS43IDUuODIsNS4xNSAyLjg4LDQuMDZDMi43Nyw0IDIuNjYsNCAyLjU3LDRDMi4yMyw0IDIsNC4yMyAyLDQuNjNWMTkuMzhDMiwxOS43NyAyLjIzLDIwIDIuNTcsMjBDMi42NywyMCAyLjc3LDIwIDIuODgsMTkuOTRDNS44MiwxOC44NCA4LjkxLDE4LjMgMTIsMTguM0MxNS4wOSwxOC4zIDE4LjE4LDE4Ljg1IDIxLjEyLDE5Ljk0QzIxLjIzLDIwIDIxLjMzLDIwIDIxLjQzLDIwQzIxLjc2LDIwIDIyLDE5Ljc3IDIyLDE5LjM3VjQuNjNDMjIsNC4yMyAyMS43Niw0IDIxLjQzLDRNMjAsNi41NFYxNy40NUMxNy40LDE2LjY4IDE0LjcyLDE2LjI5IDEyLDE2LjI5QzkuMjgsMTYuMjkgNi42LDE2LjY4IDQsMTcuNDVWNi41NEM2LjYsNy4zMSA5LjI4LDcuNyAxMiw3LjdDMTQuNzIsNy43MSAxNy40LDcuMzIgMjAsNi41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYW5vcmFtYVZlcnRpY2FsID0gXCJNNi41NCwyMEM3LjMxLDE3LjQgNy43LDE0LjcyIDcuNywxMkM3LjcsOS4yOCA3LjMxLDYuNiA2LjU0LDRIMTcuNDVDMTYuNjgsNi42IDE2LjI5LDkuMjggMTYuMjksMTJDMTYuMjksMTQuNzIgMTYuNjgsMTcuNCAxNy40NSwyME0xOS45NCwyMS4xMkMxOC44NCwxOC4xOCAxOC4zLDE1LjA5IDE4LjMsMTJDMTguMyw4LjkxIDE4Ljg1LDUuODIgMTkuOTQsMi44OEMyMCwyLjc3IDIwLDIuNjYgMjAsMi41N0MyMCwyLjIzIDE5Ljc3LDIgMTkuMzcsMkg0LjYzQzQuMjMsMiA0LDIuMjMgNCwyLjU3QzQsMi42NyA0LDIuNzcgNC4wNiwyLjg4QzUuMTYsNS44MiA1LjcxLDguOTEgNS43MSwxMkM1LjcxLDE1LjA5IDUuMTYsMTguMTggNC4wNywyMS4xMkM0LDIxLjIzIDQsMjEuMzQgNCwyMS40M0M0LDIxLjc2IDQuMjMsMjIgNC42MywyMkgxOS4zOEMxOS43NywyMiAyMCwyMS43NiAyMCwyMS40M0MyMCwyMS4zMyAyMCwyMS4yMyAxOS45NCwyMS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYW5vcmFtYVdpZGVBbmdsZSA9IFwiTTEyLDRDOS4yNyw0IDYuNzgsNC4yNCA0LjA1LDQuNzJMMy4xMiw0Ljg4TDIuODcsNS43OEMyLjI5LDcuODUgMiw5LjkzIDIsMTJDMiwxNC4wNyAyLjI5LDE2LjE1IDIuODcsMTguMjJMMy4xMiwxOS4xMUw0LjA1LDE5LjI3QzYuNzgsMTkuNzYgOS4yNywyMCAxMiwyMEMxNC43MywyMCAxNy4yMiwxOS43NiAxOS45NSwxOS4yOEwyMC44OCwxOS4xMkwyMS4xMywxOC4yM0MyMS43MSwxNi4xNSAyMiwxNC4wNyAyMiwxMkMyMiw5LjkzIDIxLjcxLDcuODUgMjEuMTMsNS43OEwyMC44OCw0Ljg5TDE5Ljk1LDQuNzNDMTcuMjIsNC4yNCAxNC43Myw0IDEyLDRNMTIsNkMxNC40NSw2IDE2LjcxLDYuMiAxOS4yOSw2LjY0QzE5Ljc2LDguNDIgMjAsMTAuMjIgMjAsMTJDMjAsMTMuNzggMTkuNzYsMTUuNTggMTkuMjksMTcuMzZDMTYuNzEsMTcuOCAxNC40NSwxOCAxMiwxOEM5LjU1LDE4IDcuMjksMTcuOCA0LjcxLDE3LjM2QzQuMjQsMTUuNTggNCwxMy43OCA0LDEyQzQsMTAuMjIgNC4yNCw4LjQyIDQuNzEsNi42NEM3LjI5LDYuMiA5LjU1LDYgMTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXBlckN1dFZlcnRpY2FsID0gXCJNMTEuNDMsMy4yM0wxMiw0TDEyLjU3LDMuMjNWMy4yNEMxMy4xMiwyLjUgMTQsMiAxNSwyQTMsMyAwIDAsMSAxOCw1QzE4LDUuMzUgMTcuOTQsNS42OSAxNy44Myw2SDIwQTIsMiAwIDAsMSAyMiw4VjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjhBMiwyIDAgMCwxIDQsNkg2LjE3QzYuMDYsNS42OSA2LDUuMzUgNiw1QTMsMyAwIDAsMSA5LDJDMTAsMiAxMC44OCwyLjUgMTEuNDMsMy4yNFYzLjIzTTQsOFYyMEgxMUExLDEgMCAwLDEgMTIsMTlBMSwxIDAgMCwxIDEzLDIwSDIwVjhIMTVMMTQuOSw4TDE3LDEwLjkyTDE1LjQsMTIuMUwxMi40Miw4SDExLjU4TDguNiwxMi4xTDcsMTAuOTJMOS4xLDhIOUw0LDhNOSw0QTEsMSAwIDAsMCA4LDVBMSwxIDAgMCwwIDksNkExLDEgMCAwLDAgMTAsNUExLDEgMCAwLDAgOSw0TTE1LDRBMSwxIDAgMCwwIDE0LDVBMSwxIDAgMCwwIDE1LDZBMSwxIDAgMCwwIDE2LDVBMSwxIDAgMCwwIDE1LDRNMTIsMTZBMSwxIDAgMCwxIDEzLDE3QTEsMSAwIDAsMSAxMiwxOEExLDEgMCAwLDEgMTEsMTdBMSwxIDAgMCwxIDEyLDE2TTEyLDEzQTEsMSAwIDAsMSAxMywxNEExLDEgMCAwLDEgMTIsMTVBMSwxIDAgMCwxIDExLDE0QTEsMSAwIDAsMSAxMiwxM00xMiwxMEExLDEgMCAwLDEgMTMsMTFBMSwxIDAgMCwxIDEyLDEyQTEsMSAwIDAsMSAxMSwxMUExLDEgMCAwLDEgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFwZXJSb2xsID0gXCJNOSAzQzUuNjkgMyAzLjE0IDUuNjkgMyA5VjIxSDEyVjEzLjQ2QzEzLjEgMTQuNDUgMTQuNSAxNSAxNiAxNUMxOS4zMSAxNSAyMiAxMi4zMSAyMiA5QzIyIDUuNjkgMTkuMzEgMyAxNiAzSDlNMTYgNUMxOC4yMSA1IDIwIDYuNzkgMjAgOUMyMCAxMS4yMSAxOC4yMSAxMyAxNiAxM0MxMy43OSAxMyAxMiAxMS4yMSAxMiA5QzEyIDYuNzkgMTMuNzkgNSAxNiA1TTE2IDcuMjVDMTUuMDMgNy4yNSAxNC4yNSA4LjAzIDE0LjI1IDlDMTQuMjUgOS45NyAxNS4wMyAxMC43NSAxNiAxMC43NUMxNi45NyAxMC43NSAxNy43NSA5Ljk3IDE3Ljc1IDlDMTcuNzUgOC4wMyAxNi45NyA3LjI1IDE2IDcuMjVNNCAxMkg1VjEzSDRWMTJNNiAxMkg3VjEzSDZWMTJNOCAxMkg5VjEzSDhWMTJNMTAgMTJIMTFWMTNIMTBWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFwZXJSb2xsT3V0bGluZSA9IFwiTTkgM0M1LjY5IDMgMy4xNCA1LjY5IDMgOVYyMUgxMlYxMy40NkMxMy4xIDE0LjQ1IDE0LjUgMTUgMTYgMTVDMTkuMzEgMTUgMjIgMTIuMzEgMjIgOUMyMiA1LjY5IDE5LjMxIDMgMTYgM0g5TTkgNUgxMS41NEMxMC41NSA2LjEgMTAgNy41IDEwIDlWMTJIOVYxM0gxMFYxOUg1VjEzSDZWMTJINVY5QzUgNi43OSA2Ljc5IDUgOSA1TTE2IDVDMTguMjEgNSAyMCA2Ljc5IDIwIDlDMjAgMTEuMjEgMTguMjEgMTMgMTYgMTNDMTMuNzkgMTMgMTIgMTEuMjEgMTIgOUMxMiA2Ljc5IDEzLjc5IDUgMTYgNU0xNiA3LjI1QzE1LjAzIDcuMjUgMTQuMjUgOC4wMyAxNC4yNSA5QzE0LjI1IDkuOTcgMTUuMDMgMTAuNzUgMTYgMTAuNzVDMTYuOTcgMTAuNzUgMTcuNzUgOS45NyAxNy43NSA5QzE3Ljc1IDguMDMgMTYuOTcgNy4yNSAxNiA3LjI1TTcgMTJWMTNIOFYxMkg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhcGVyY2xpcCA9IFwiTTE2LjUsNlYxNy41QTQsNCAwIDAsMSAxMi41LDIxLjVBNCw0IDAgMCwxIDguNSwxNy41VjVBMi41LDIuNSAwIDAsMSAxMSwyLjVBMi41LDIuNSAwIDAsMSAxMy41LDVWMTUuNUExLDEgMCAwLDEgMTIuNSwxNi41QTEsMSAwIDAsMSAxMS41LDE1LjVWNkgxMFYxNS41QTIuNSwyLjUgMCAwLDAgMTIuNSwxOEEyLjUsMi41IDAgMCwwIDE1LDE1LjVWNUE0LDQgMCAwLDAgMTEsMUE0LDQgMCAwLDAgNyw1VjE3LjVBNS41LDUuNSAwIDAsMCAxMi41LDIzQTUuNSw1LjUgMCAwLDAgMTgsMTcuNVY2SDE2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFyYWNodXRlID0gXCJNMjEuMiwxMC45NUwxMiwyM0wyLjc4LDEwLjk2TDIuODcsMTAuODhDMy4wOCwxMC42NyAzLjMzLDEwLjUgMy41OCwxMC4zNkwxMC43MywxOS42OUw4LjU4LDEzTDkuMjQsMTEuODFMMTIsMjAuMzhMMTQuNzMsMTEuOEwxNS40LDEzTDEzLjI3LDE5LjY5TDIwLjQxLDEwLjM1QzIwLjY2LDEwLjUgMjAuOSwxMC42NCAyMS4xLDEwLjg1TDIxLjIsMTAuOTVNNSw5QzYuNSw5IDcuODEsOS44NiA4LjUsMTEuMUM5LjE3LDkuODYgMTAuNDcsOSAxMiw5QzEzLjUsOSAxNC44LDkuODUgMTUuNSwxMS4wOUMxNi4xNiw5Ljg0IDE3LjQ3LDkgMTksOUMyMC4wOSw5IDIxLjA5LDkuNDIgMjEuODEsMTAuMTRDMjAuOTQsNS41IDE2Ljg4LDIgMTIsMkM3LjA5LDIgMy4wMyw1LjUgMi4xNiwxMC4xN0MyLjg5LDkuNDUgMy44OSw5IDUsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXJhY2h1dGVPdXRsaW5lID0gXCJNMjEuMiwxMC45NUwxMiwyM0wyLjc4LDEwLjk2TDIuODcsMTAuODhDMy4wOCwxMC42NyAzLjMzLDEwLjUgMy41OCwxMC4zNkwxMC43MywxOS42OUw4LjU4LDEzTDkuMjQsMTEuODFMMTIsMjAuMzhMMTQuNzMsMTEuOEwxNS40LDEzTDEzLjI3LDE5LjY5TDIwLjQxLDEwLjM1QzIwLjY2LDEwLjUgMjAuOSwxMC42NCAyMS4xLDEwLjg1TDIxLjIsMTAuOTVNMTIsNEMxNC41LDQgMTYuNzcsNS4xNyAxOC4yNSw3LjAzQzE3LjI0LDcuMTUgMTYuMjgsNy41NCAxNS40Nyw4LjEzQzE0LjQ3LDcuNDEgMTMuMjYsNyAxMiw3QzEwLjcxLDcgOS41LDcuNDEgOC41LDguMTRDNy42OCw3LjU1IDYuNzIsNy4xNyA1LjcxLDcuMDRDNy4xOSw1LjE3IDkuNDcsNCAxMiw0TTEyLDJDNy4wOSwyIDMuMDMsNS41IDIuMTYsMTAuMTdDMi44OSw5LjQ1IDMuODksOSA1LDlDNi41LDkgNy44MSw5Ljg2IDguNSwxMS4xQzkuMTcsOS44NiAxMC40Nyw5IDEyLDlDMTMuNSw5IDE0LjgsOS44NSAxNS41LDExLjA5QzE2LjE2LDkuODQgMTcuNDcsOSAxOSw5QzIwLjA5LDkgMjEuMDksOS40MiAyMS44MSwxMC4xNEMyMC45NCw1LjUgMTYuODgsMiAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhcmtpbmcgPSBcIk0xMy4yLDExSDEwVjdIMTMuMkEyLDIgMCAwLDEgMTUuMiw5QTIsMiAwIDAsMSAxMy4yLDExTTEzLDNINlYyMUgxMFYxNUgxM0E2LDYgMCAwLDAgMTksOUMxOSw1LjY4IDE2LjMxLDMgMTMsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQYXJ0eVBvcHBlciA9IFwiTTE0LjUzIDEuNDVMMTMuNDUgMi41M0wxNS4wNSA0LjEzQzE1LjI3IDQuMzggMTUuMzggNC42NyAxNS4zOCA1UzE1LjI3IDUuNjQgMTUuMDUgNS44NkwxMS41IDkuNDdMMTIuNSAxMC41NUwxNi4xMyA2Ljk0QzE2LjY2IDYuMzUgMTYuOTIgNS43IDE2LjkyIDVDMTYuOTIgNC4zIDE2LjY2IDMuNjQgMTYuMTMgMy4wNUwxNC41MyAxLjQ1TTEwLjU1IDMuNDdMOS40NyA0LjU1TDEwLjA4IDUuMTFDMTAuMyA1LjMzIDEwLjQxIDUuNjMgMTAuNDEgNlMxMC4zIDYuNjcgMTAuMDggNi44OUw5LjQ3IDcuNDVMMTAuNTUgOC41M0wxMS4xMSA3LjkyQzExLjY0IDcuMzMgMTEuOTEgNi42OSAxMS45MSA2QzExLjkxIDUuMjggMTEuNjQgNC42MyAxMS4xMSA0LjAzTDEwLjU1IDMuNDdNMjEgNS4wNkMyMC4zMSA1LjA2IDE5LjY3IDUuMzMgMTkuMDggNS44NkwxMy40NSAxMS41TDE0LjUzIDEyLjVMMjAuMTEgNi45NEMyMC4zNiA2LjY5IDIwLjY2IDYuNTYgMjEgNi41NlMyMS42NCA2LjY5IDIxLjg5IDYuOTRMMjIuNSA3LjU1TDIzLjUzIDYuNDdMMjIuOTcgNS44NkMyMi4zOCA1LjMzIDIxLjcyIDUuMDYgMjEgNS4wNk03IDhMMiAyMkwxNiAxN0w3IDhNMTkgMTEuMDZDMTguMyAxMS4wNiAxNy42NiAxMS4zMyAxNy4wNiAxMS44NkwxNS40NyAxMy40NUwxNi41NSAxNC41M0wxOC4xNCAxMi45NEMxOC4zOSAxMi42OSAxOC42NyAxMi41NiAxOSAxMi41NkMxOS4zMyAxMi41NiAxOS42MyAxMi42OSAxOS44OCAxMi45NEwyMS41IDE0LjUzTDIyLjU1IDEzLjVMMjAuOTUgMTEuODZDMjAuMzYgMTEuMzMgMTkuNyAxMS4wNiAxOSAxMS4wNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXNzcG9ydCA9IFwiTTYsMkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY0QTIsMiAwIDAsMCAxOCwySDZNMTIsNUE1LDUgMCAwLDEgMTcsMTBBNSw1IDAgMCwxIDEyLDE1QTUsNSAwIDAsMSA3LDEwQTUsNSAwIDAsMSAxMiw1TTEyLDZDMTEuNTksNi42MiAxMS4yNSw3LjI5IDExLjA0LDhIMTIuOTZDMTIuNzUsNy4yOSAxMi40Miw2LjYyIDEyLDZNMTAuNyw2LjIyQzkuNzgsNi41MyA5LDcuMTcgOC41NCw4SDEwQzEwLjE4LDcuMzggMTAuNCw2Ljc4IDEwLjcsNi4yMk0xMy4yOSw2LjIyQzEzLjU5LDYuNzggMTMuODIsNy4zOCAxNCw4SDE1LjQ2QzE1LDcuMTcgMTQuMjEsNi41NCAxMy4yOSw2LjIyTTguMTMsOUM4LjA1LDkuMzIgOCw5LjY1IDgsMTBDOCwxMC4zNSA4LjA1LDEwLjY4IDguMTMsMTFIOS44MkM5Ljc4LDEwLjY3IDkuNzUsMTAuMzQgOS43NSwxMEM5Ljc1LDkuNjYgOS43OCw5LjMzIDkuODIsOUg4LjEzTTEwLjgzLDlDMTAuNzgsOS4zMiAxMC43NSw5LjY2IDEwLjc1LDEwQzEwLjc1LDEwLjM0IDEwLjc4LDEwLjY3IDEwLjgzLDExSDEzLjE3QzEzLjIxLDEwLjY3IDEzLjI1LDEwLjM0IDEzLjI1LDEwQzEzLjI1LDkuNjYgMTMuMjEsOS4zMiAxMy4xNyw5SDEwLjgzTTE0LjE4LDlDMTQuMjIsOS4zMyAxNC4yNSw5LjY2IDE0LjI1LDEwQzE0LjI1LDEwLjM0IDE0LjIyLDEwLjY3IDE0LjE4LDExSDE1Ljg3QzE1Ljk1LDEwLjY4IDE2LDEwLjM1IDE2LDEwQzE2LDkuNjUgMTUuOTUsOS4zMiAxNS44Nyw5SDE0LjE4TTguNTQsMTJDOSwxMi44MyA5Ljc4LDEzLjQ2IDEwLjcsMTMuNzhDMTAuNCwxMy4yMiAxMC4xOCwxMi42MyAxMCwxMkg4LjU0TTExLjA0LDEyQzExLjI1LDEyLjcyIDExLjU5LDEzLjM4IDEyLDE0QzEyLjQyLDEzLjM4IDEyLjc1LDEyLjcyIDEyLjk2LDEySDExLjA0TTE0LDEyQzEzLjgyLDEyLjYzIDEzLjU5LDEzLjIyIDEzLjI5LDEzLjc4QzE0LjIxLDEzLjQ2IDE1LDEyLjgzIDE1LjQ2LDEySDE0TTcsMTdIMTdWMTlIN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQYXNzcG9ydEJpb21ldHJpYyA9IFwiTTQsNEEyLDIgMCAwLDAgMiw2VjExSDguMTNDOC41OSw5LjI0IDEwLjE4LDggMTIsOEMxMy44Miw4IDE1LjQxLDkuMjQgMTUuODcsMTFIMjJWNkEyLDIgMCAwLDAgMjAsNEg0TTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxME0yLDEzVjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFYxM0gxNS44N0MxNS40MSwxNC43NiAxMy44MiwxNiAxMiwxNkMxMC4xOCwxNiA4LjU5LDE0Ljc2IDguMTMsMTNIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXN0YSA9IFwiTTQgMTYuNVY4SDNWN0g0VjZIM1Y1SDRWNEgzVjNIOUM5LjUgMy4wMyA5Ljk1IDMuMjQgMTAuMzQgMy42M1MxMC45NSA0LjUgMTEgNUgyMVY2SDExQzEwLjk1IDYuNTMgMTAuNzMgNyAxMC4zNCA3LjQzUzkuNSA4LjA1IDkgOEg3VjE1LjA1QzcuMDUgMTUuMDUgNy4xMyAxNS4wNCA3LjI0IDE1UzcuNDQgMTUgNy41IDE1QzguMDYgMTUgOC43IDE1LjE0IDkuNDIgMTUuNDJDOS44MyAxNC41IDEwLjUzIDEzLjY4IDExLjUzIDEzUzEzLjUzIDEyIDE0LjUzIDEyQzE2LjA2IDEyIDE3LjM2IDEyLjUzIDE4LjQyIDEzLjU5UzIwIDE1Ljk1IDIwIDE3LjVDMjAgMTcuNTUgMjAgMTcuNjQgMjAgMTcuNzdTMTkuOTcgMTcuOTcgMTkuOTcgMThIMy4xNEMzLjI3IDE3LjUgMy41NSAxNyA0IDE2LjVNNiAxNS4yM1Y4SDVWMTUuN0M1LjUgMTUuNDUgNS44MSAxNS4zIDYgMTUuMjNNOSA3VjZIN1Y3SDlNOSA0SDdWNUg5VjRNNSA0VjVINlY0SDVNNSA2VjdINlY2SDVNMiAxOUgyMkwyMCAyMUg0TDIgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF0aW9IZWF0ZXIgPSBcIk0xNSAyMkg5VjIxSDE1VjIyTTE5IDRMMTUgMkg5TDUgNEgxOU04IDVMOC40IDZIMTUuNkwxNiA1SDhNMTAgMTBIMTFWMTVDMTAuNCAxNSAxMCAxNS40IDEwIDE2VjIwSDE0VjE2QzE0IDE1LjQgMTMuNiAxNSAxMyAxNVYxMEgxNEwxNC40IDlIOS42TDEwIDEwTTkuMiA4SDE0LjhMMTUuMiA3SDguOEw5LjIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXRyZW9uID0gXCJNMTQuODIgMi40MUMxOC43OCAyLjQxIDIyIDUuNjUgMjIgOS42MkMyMiAxMy41OCAxOC43OCAxNi44IDE0LjgyIDE2LjhDMTAuODUgMTYuOCA3LjYxIDEzLjU4IDcuNjEgOS42MkM3LjYxIDUuNjUgMTAuODUgMi40MSAxNC44MiAyLjQxTTIgMjEuNkg1LjVWMi40MUgyVjIxLjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF1c2UgPSBcIk0xNCwxOUgxOFY1SDE0TTYsMTlIMTBWNUg2VjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhdXNlQ2lyY2xlID0gXCJNMTUsMTZIMTNWOEgxNU0xMSwxNkg5VjhIMTFNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF1c2VDaXJjbGVPdXRsaW5lID0gXCJNMTMsMTZWOEgxNVYxNkgxM005LDE2VjhIMTFWMTZIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF1c2VPY3RhZ29uID0gXCJNMTUuNzMsM0wyMSw4LjI3VjE1LjczTDE1LjczLDIxSDguMjdMMywxNS43M1Y4LjI3TDguMjcsM0gxNS43M00xNSwxNlY4SDEzVjE2SDE1TTExLDE2VjhIOVYxNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXVzZU9jdGFnb25PdXRsaW5lID0gXCJNMTUsMTZIMTNWOEgxNVYxNk0xMSwxNkg5VjhIMTFWMTZNMTUuNzMsM0wyMSw4LjI3VjE1LjczTDE1LjczLDIxSDguMjdMMywxNS43M1Y4LjI3TDguMjcsM0gxNS43M00xNC45LDVIOS4xTDUsOS4xVjE0LjlMOS4xLDE5SDE0LjlMMTksMTQuOVY5LjFMMTQuOSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhdyA9IFwiTTguMzUsM0M5LjUzLDIuODMgMTAuNzgsNC4xMiAxMS4xNCw1LjlDMTEuNSw3LjY3IDEwLjg1LDkuMjUgOS42Nyw5LjQzQzguNSw5LjYxIDcuMjQsOC4zMiA2Ljg3LDYuNTRDNi41LDQuNzcgNy4xNywzLjE5IDguMzUsM00xNS41LDNDMTYuNjksMy4xOSAxNy4zNSw0Ljc3IDE3LDYuNTRDMTYuNjIsOC4zMiAxNS4zNyw5LjYxIDE0LjE5LDkuNDNDMTMsOS4yNSAxMi4zNSw3LjY3IDEyLjcyLDUuOUMxMy4wOCw0LjEyIDE0LjMzLDIuODMgMTUuNSwzTTMsNy42QzQuMTQsNy4xMSA1LjY5LDggNi41LDkuNTVDNy4yNiwxMS4xMyA3LDEyLjc5IDUuODcsMTMuMjhDNC43NCwxMy43NyAzLjIsMTIuODkgMi40MSwxMS4zMkMxLjYyLDkuNzUgMS45LDguMDggMyw3LjZNMjEsNy42QzIyLjEsOC4wOCAyMi4zOCw5Ljc1IDIxLjU5LDExLjMyQzIwLjgsMTIuODkgMTkuMjYsMTMuNzcgMTguMTMsMTMuMjhDMTcsMTIuNzkgMTYuNzQsMTEuMTMgMTcuNSw5LjU1QzE4LjMxLDggMTkuODYsNy4xMSAyMSw3LjZNMTkuMzMsMTguMzhDMTkuMzcsMTkuMzIgMTguNjUsMjAuMzYgMTcuNzksMjAuNzVDMTYsMjEuNTcgMTMuODgsMTkuODcgMTEuODksMTkuODdDOS45LDE5Ljg3IDcuNzYsMjEuNjQgNiwyMC43NUM1LDIwLjI2IDQuMzEsMTguOTYgNC40NCwxNy44OEM0LjYyLDE2LjM5IDYuNDEsMTUuNTkgNy40NywxNC41QzguODgsMTMuMDkgOS44OCwxMC40NCAxMS44OSwxMC40NEMxMy44OSwxMC40NCAxNC45NSwxMy4wNSAxNi4zLDE0LjVDMTcuNDEsMTUuNzIgMTkuMjYsMTYuNzUgMTkuMzMsMTguMzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF3T2ZmID0gXCJNMiw0LjI3TDMuMjgsM0wyMS41LDIxLjIyTDIwLjIzLDIyLjVMMTguMjMsMjAuNUMxOC4wOSwyMC42IDE3Ljk0LDIwLjY4IDE3Ljc5LDIwLjc1QzE2LDIxLjU3IDEzLjg4LDE5Ljg3IDExLjg5LDE5Ljg3QzkuOSwxOS44NyA3Ljc2LDIxLjY0IDYsMjAuNzVDNSwyMC4yNiA0LjMxLDE4Ljk2IDQuNDQsMTcuODhDNC42MiwxNi4zOSA2LjQxLDE1LjU5IDcuNDcsMTQuNUM4LjIxLDEzLjc3IDguODQsMTIuNjkgOS41NSwxMS44MkwyLDQuMjdNOC4zNSwzQzkuNTMsMi44MyAxMC43OCw0LjEyIDExLjE0LDUuOUMxMS4zMiw2Ljc1IDExLjI2LDcuNTYgMTEsOC4xOUw3LjAzLDQuMkM3LjI5LDMuNTUgNy43NSwzLjEgOC4zNSwzTTE1LjUsM0MxNi42OSwzLjE5IDE3LjM1LDQuNzcgMTcsNi41NEMxNi42Miw4LjMyIDE1LjM3LDkuNjEgMTQuMTksOS40M0MxMyw5LjI1IDEyLjM1LDcuNjcgMTIuNzIsNS45QzEzLjA4LDQuMTIgMTQuMzMsMi44MyAxNS41LDNNMyw3LjZDNC4xNCw3LjExIDUuNjksOCA2LjUsOS41NUM3LjI2LDExLjEzIDcsMTIuNzkgNS44NywxMy4yOEM0Ljc0LDEzLjc3IDMuMiwxMi44OSAyLjQxLDExLjMyQzEuNjIsOS43NSAxLjksOC4wOCAzLDcuNk0yMSw3LjZDMjIuMSw4LjA4IDIyLjM4LDkuNzUgMjEuNTksMTEuMzJDMjAuOCwxMi44OSAxOS4yNiwxMy43NyAxOC4xMywxMy4yOEMxNywxMi43OSAxNi43NCwxMS4xMyAxNy41LDkuNTVDMTguMzEsOCAxOS44Niw3LjExIDIxLDcuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXdPZmZPdXRsaW5lID0gXCJNMjIuODMgOC4yNUMyMi41NiA3LjUgMjIuMDUgNi45NiAyMS4zOSA2LjY4QzIwLjIyIDYuMTggMTguOCA2LjYgMTcuNyA3LjY2QzE3LjgxIDcuMzcgMTcuOTEgNy4wNiAxOCA2LjczQzE4LjI1IDUuMzggMTggNC4wMyAxNy4zOCAzLjEyQzE2Ljk1IDIuNSAxNi4zMyAyLjExIDE1LjY0IDJDMTQuMSAxLjc4IDEyLjU3IDMuMDggMTEuOTMgNUMxMS4yOCAzLjA1IDkuNzQgMS43NiA4LjE5IDJDNy41IDIuMTIgNi44OCAyLjUzIDYuNDUgMy4xNkM2LjQ0IDMuMTggNi40MyAzLjIgNi40MiAzLjIyTDcuOTEgNC43MUM3Ljk2IDQuNTQgOCA0LjQgOC4xIDQuMjlDOC4yMiA0LjEyIDguMzYgNCA4LjUgNEM5IDMuOTEgOS44OCA0LjY5IDEwLjE2IDYuMUMxMC4yMyA2LjQ0IDEwLjI0IDYuNzUgMTAuMjIgN0wxMS44OCA4LjY4QzExLjg5IDguNjUgMTEuOTEgOC42MiAxMS45MyA4LjU4QzExLjk3IDguNjkgMTIuMDQgOC43OCAxMi4wOSA4Ljg5TDEzLjQzIDEwLjIzQzEzLjYzIDEwLjMyIDEzLjgzIDEwLjM5IDE0LjA0IDEwLjQyQzE0LjE2IDEwLjQ0IDE0LjI5IDEwLjQ1IDE0LjQxIDEwLjQ1QzE1LjEzIDEwLjQ1IDE1LjgzIDEwLjEyIDE2LjQzIDkuNTdDMTYgMTAuNjQgMTUuOTYgMTEuNzMgMTYuMjkgMTIuNjNDMTYuNTYgMTMuMzUgMTcuMDcgMTMuOTEgMTcuNzMgMTQuMkMxOC4wNyAxNC4zNCAxOC40MyAxNC40MSAxOC44IDE0LjQxQzIwLjE4IDE0LjQxIDIxLjY2IDEzLjQgMjIuNSAxMS43N0MyMy4wOCAxMC41OCAyMy4yMSA5LjMgMjIuODMgOC4yNU0xNiA2LjMzQzE1LjcyIDcuNzMgMTQuODMgOC41IDE0LjM0IDguNDRDMTQuMjggOC40MyAxNC4xMiA4LjQxIDEzLjk0IDguMTVDMTMuNjkgNy43OSAxMy41IDcuMDcgMTMuNyA2LjFDMTMuOTcgNC43NiAxNC44IDQgMTUuMjkgNEMxNS4zMSA0IDE1LjM0IDQgMTUuMzYgNEMxNS41IDQgMTUuNjMgNC4xMSAxNS43NSA0LjI3QzE2LjA3IDQuNzMgMTYuMTggNS41NCAxNiA2LjMzTTIwLjcgMTAuODdDMjAuMTIgMTIgMTkuMDggMTIuNiAxOC41MyAxMi4zNkMxOC40NyAxMi4zNCAxOC4yOCAxMi4yNiAxOC4xNiAxMS45M0MxOCAxMS40MyAxOC4wNyAxMC42OCAxOC4zOSAxMEMxOC45IDkuMDQgMTkuNzQgOC40NyAyMC4zMyA4LjQ3QzIwLjQzIDguNDcgMjAuNSA4LjUgMjAuNiA4LjVIMjAuNkMyMC43NSA4LjU4IDIwLjg3IDguNzIgMjAuOTUgOC45NEMyMS4wOSA5LjM0IDIxLjEgMTAuMDYgMjAuNyAxMC44N00xLjExIDNMNC44IDYuNjlDNC4wNiA2LjQxIDMuMjkgNi4zOSAyLjYgNi42OEMxLjk0IDYuOTcgMS40MyA3LjUzIDEuMTcgOC4yN0MuNzkzIDkuMzEgLjkxOSAxMC41OCAxLjUgMTEuNzdDMi4zNCAxMy40IDMuODIgMTQuNDEgNS4yMSAxNC40MUM1LjU3IDE0LjQxIDUuOTMgMTQuMzQgNi4yNyAxNC4yQzYuOTMgMTMuOTEgNy40NCAxMy4zNSA3LjcxIDEyLjYzQzggMTEuNzkgOCAxMC43NyA3LjY0IDkuNzZDNy44MyA5LjkxIDguMDQgMTAuMDMgOC4yNCAxMC4xM0w5LjczIDExLjYyQzguOTQgMTIuNSA4LjI3IDEzLjcgNy40NyAxNC41QzYuNDEgMTUuNTkgNC42MiAxNi4zOSA0LjQ0IDE3Ljg4QzQuMzEgMTguOTYgNSAyMC4yNiA2IDIwLjc1QzYuMzUgMjAuOTMgNi43MiAyMSA3LjEgMjFDOC42MSAyMSAxMC4zIDE5Ljg3IDExLjg5IDE5Ljg3QzEzLjUgMTkuODcgMTUuMTggMjAuOTcgMTYuNzEgMjAuOTdDMTcuMDggMjAuOTcgMTcuNDQgMjAuOTEgMTcuNzkgMjAuNzVDMTggMjAuNjUgMTguMjMgMjAuNSAxOC40MyAyMC4zMkwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTTExLjE1IDEzLjA0TDE3IDE4LjlDMTcgMTguOTEgMTYuOTcgMTguOTIgMTYuOTYgMTguOTNDMTYuOTIgMTguOTUgMTYuODUgMTguOTcgMTYuNzEgMTguOTdDMTYuMjggMTguOTcgMTUuNjMgMTguNzUgMTUgMTguNTRDMTQuMDggMTguMjMgMTMuMDMgMTcuODcgMTEuODkgMTcuODdDMTAuNzUgMTcuODcgOS43IDE4LjI0IDguNzggMTguNTZDOC4xNSAxOC43NyA3LjUgMTkgNy4xIDE5QzYuOTcgMTkgNi45MiAxOSA2Ljg4IDE4Ljk1QzYuNjYgMTguODQgNi40IDE4LjM3IDYuNDMgMTguMTJDNi41IDE3Ljg5IDcuMjMgMTcuMzEgNy41OSAxN0M4LjAzIDE2LjY4IDguNSAxNi4zMyA4Ljg5IDE1LjkxQzkuNDQgMTUuMzYgOS44OSAxNC43MyAxMC4zMyAxNC4xMkMxMC41NSAxMy44IDEwLjg2IDEzLjM4IDExLjE1IDEzLjA0TTUuNiAxMEM1LjkzIDEwLjY4IDYgMTEuNDMgNS44NCAxMS45M0M1LjcxIDEyLjI2IDUuNTMgMTIuMzQgNS40NyAxMi4zNkM0LjkyIDEyLjYgMy44OCAxMiAzLjMgMTAuODdDMi45IDEwLjA2IDIuOTEgOS4zNSAzLjA1IDguOTRDMy4xMyA4LjczIDMuMjUgOC41OCAzLjQgOC41QzMuNSA4LjUgMy41NyA4LjQ2IDMuNjggOC40NkM0LjI2IDguNDYgNS4xIDkuMDMgNS42IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhd091dGxpbmUgPSBcIk0yMi44MyA4LjI1QzIyLjU2IDcuNSAyMi4wNSA2Ljk2IDIxLjQgNi42OEMyMC4yMyA2LjE4IDE4LjgxIDYuNiAxNy43IDcuNjZDMTcuODEgNy4zNyAxNy45MSA3LjA2IDE4IDYuNzNDMTguMjUgNS4zOCAxOC4wMyA0LjAzIDE3LjM4IDMuMTJDMTYuOTUgMi41IDE2LjMzIDIuMTEgMTUuNjQgMkMxNC4xIDEuNzggMTIuNTcgMy4wOCAxMS45MyA1QzExLjI5IDMuMDUgOS43NCAxLjc2IDguMTkgMkM3LjUgMi4xMiA2Ljg4IDIuNTMgNi40NSAzLjE2QzUuODEgNC4wOSA1LjYxIDUuMzkgNS44OSA2Ljc0QzUuOTQgNyA2IDcuMjQgNi4wOSA3LjQ3QzUgNi41NiAzLjcgNi4yIDIuNiA2LjY4QzEuOTQgNi45NyAxLjQ0IDcuNTMgMS4xNyA4LjI3Qy43OTQgOS4zMSAuOTIgMTAuNTggMS41IDExLjc3QzIuMzQgMTMuNCAzLjgyIDE0LjQxIDUuMjEgMTQuNDFDNS41NyAxNC40MSA1LjkzIDE0LjM0IDYuMjcgMTQuMkM2LjkzIDEzLjkxIDcuNDQgMTMuMzUgNy43MSAxMi42M0M4LjAzIDExLjc5IDggMTAuNzcgNy42NCA5Ljc2QzguMTkgMTAuMTkgOC44MSAxMC40NSA5LjQ1IDEwLjQ1QzkuNTcgMTAuNDUgOS43IDEwLjQ0IDkuODIgMTAuNDJDMTAuNSAxMC4zMiAxMS4xMiA5LjkyIDExLjU1IDkuM0MxMS43IDkuMDggMTEuODMgOC44NCAxMS45MyA4LjU4QzEyLjAzIDguODQgMTIuMTUgOS4wOCAxMi4zIDkuMjlDMTIuNzMgOS45MSAxMy4zNSAxMC4zMSAxNC4wNCAxMC40MkMxNC4xNiAxMC40NCAxNC4yOSAxMC40NSAxNC40MSAxMC40NUMxNS4xMyAxMC40NSAxNS44MyAxMC4xMiAxNi40MyA5LjU3QzE2IDEwLjY0IDE1Ljk2IDExLjczIDE2LjI5IDEyLjYzQzE2LjU2IDEzLjM2IDE3LjA3IDEzLjkxIDE3LjczIDE0LjJDMTguMDcgMTQuMzQgMTguNDMgMTQuNDEgMTguOCAxNC40MUMyMC4xOCAxNC40MSAyMS42NiAxMy40IDIyLjUgMTEuNzdDMjMuMDggMTAuNTggMjMuMjEgOS4zIDIyLjgzIDguMjVNNS44NCAxMS45M0M1LjcyIDEyLjI2IDUuNTMgMTIuMzQgNS40NyAxMi4zNkM0LjkyIDEyLjYgMy44OCAxMiAzLjMgMTAuODdDMi45IDEwLjA2IDIuOTEgOS4zNSAzLjA1IDguOTRDMy4xMyA4LjczIDMuMjUgOC41OCAzLjQgOC41QzMuNSA4LjUgMy41OCA4LjQ2IDMuNjggOC40NkM0LjI2IDguNDYgNS4xIDkuMDMgNS42IDEwQzUuOTMgMTAuNjggNi4wMyAxMS40MyA1Ljg0IDExLjkzTTkuOTEgOC4xNkM5Ljc5IDguMzIgOS42NiA4LjQyIDkuNSA4LjQ0QzkgOC41IDguMTQgNy43MyA3Ljg1IDYuMzRDNy42NSA1LjM4IDcuODUgNC42NiA4LjEgNC4yOUM4LjIyIDQuMTIgOC4zNiA0IDguNSA0QzkgMy45MSA5Ljg4IDQuNjkgMTAuMTYgNi4xQzEwLjM2IDcuMDcgMTAuMTYgNy44IDkuOTEgOC4xNk0xNiA2LjMzQzE1LjcyIDcuNzMgMTQuODMgOC41IDE0LjM0IDguNDRDMTQuMjggOC40MyAxNC4xMiA4LjQxIDEzLjk0IDguMTVDMTMuNjkgNy43OSAxMy41IDcuMDcgMTMuNyA2LjFDMTMuOTcgNC43NiAxNC44IDQgMTUuMjkgNEMxNS4zMiA0IDE1LjM0IDQgMTUuMzYgNEMxNS41IDQgMTUuNjMgNC4xMSAxNS43NSA0LjI3QzE2LjA3IDQuNzMgMTYuMTggNS41NCAxNiA2LjMzTTIwLjcgMTAuODdDMjAuMTIgMTIgMTkuMDggMTIuNiAxOC41MyAxMi4zNkMxOC40NyAxMi4zNCAxOC4yOCAxMi4yNiAxOC4xNiAxMS45M0MxOCAxMS40MyAxOC4wNyAxMC42OCAxOC4zOSAxMEMxOC45IDkuMDQgMTkuNzUgOC40NyAyMC4zMyA4LjQ3QzIwLjQzIDguNDcgMjAuNSA4LjUgMjAuNiA4LjVIMjAuNjFDMjAuNzYgOC41OCAyMC44NyA4LjcyIDIwLjk1IDguOTRDMjEuMSA5LjM0IDIxLjExIDEwLjA2IDIwLjcgMTAuODdNMTYuMyAxNC41QzE0Ljk1IDEzLjA1IDEzLjg5IDEwLjQ0IDExLjg5IDEwLjQ0QzkuODggMTAuNDQgOC44OCAxMy4wOSA3LjQ3IDE0LjVDNi40MSAxNS41OSA0LjYyIDE2LjM5IDQuNDQgMTcuODhDNC4zMSAxOC45NiA1IDIwLjI2IDYgMjAuNzVDNi4zNSAyMC45MyA2LjcyIDIxIDcuMSAyMUM4LjYxIDIxIDEwLjMgMTkuODcgMTEuODkgMTkuODdDMTMuNSAxOS44NyAxNS4xOCAyMC45NyAxNi43MSAyMC45N0MxNy4wOCAyMC45NyAxNy40NCAyMC45MSAxNy43OSAyMC43NUMxOC42NSAyMC4zNiAxOS4zNyAxOS4zMiAxOS4zMyAxOC4zOEMxOS4yNiAxNi43NSAxNy40MSAxNS43MiAxNi4zIDE0LjVNMTYuOTYgMTguOTNDMTYuOTIgMTguOTUgMTYuODUgMTguOTcgMTYuNzEgMTguOTdDMTYuMjkgMTguOTcgMTUuNjMgMTguNzUgMTUgMTguNTRDMTQuMDggMTguMjMgMTMuMDMgMTcuODcgMTEuODkgMTcuODdDMTAuNzUgMTcuODcgOS43IDE4LjI0IDguNzggMTguNTZDOC4xNSAxOC43NyA3LjUgMTkgNy4xIDE5QzYuOTcgMTkgNi45MiAxOSA2Ljg4IDE4Ljk1QzYuNjYgMTguODQgNi40IDE4LjM3IDYuNDMgMTguMTJDNi41IDE3Ljg5IDcuMjMgMTcuMzEgNy41OSAxN0M4LjAzIDE2LjY4IDguNSAxNi4zMyA4Ljg5IDE1LjkxQzkuNDQgMTUuMzYgOS44OSAxNC43MyAxMC4zMyAxNC4xMkMxMC43OCAxMy41IDExLjUzIDEyLjQ0IDExLjg5IDEyLjQ0QzEyLjI5IDEyLjQ0IDEzLjA4IDEzLjU2IDEzLjU2IDE0LjIyQzEzLjk1IDE0Ljc4IDE0LjM2IDE1LjM1IDE0LjgyIDE1Ljg1QzE1LjIxIDE2LjI3IDE1LjYyIDE2LjY0IDE2IDE3QzE2LjU0IDE3LjQ1IDE3LjMyIDE4LjE0IDE3LjMzIDE4LjQ0QzE3LjMyIDE4LjU4IDE3LjEyIDE4Ljg2IDE2Ljk2IDE4LjkzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBkZkJveCA9IFwiTTEyLDEwLjVIMTNWMTMuNUgxMlYxMC41TTcsMTEuNUg4VjEwLjVIN1YxMS41TTIwLDZWMThBMiwyIDAgMCwxIDE4LDIwSDZBMiwyIDAgMCwxIDQsMThWNkEyLDIgMCAwLDEgNiw0SDE4QTIsMiAwIDAsMSAyMCw2TTkuNSwxMC41QTEuNSwxLjUgMCAwLDAgOCw5SDUuNVYxNUg3VjEzSDhBMS41LDEuNSAwIDAsMCA5LjUsMTEuNVYxMC41TTE0LjUsMTAuNUExLjUsMS41IDAgMCwwIDEzLDlIMTAuNVYxNUgxM0ExLjUsMS41IDAgMCwwIDE0LjUsMTMuNVYxMC41TTE4LjUsOUgxNS41VjE1SDE3VjEzSDE4LjVWMTEuNUgxN1YxMC41SDE4LjVWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZWFjZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTExLDE0LjQxVjE5LjkzQzkuNTgsMTkuNzUgOC4yMywxOS4xOSA3LjEsMTguMzFMMTEsMTQuNDFNMTMsMTQuNDFMMTYuOSwxOC4zMUMxNS43NywxOS4xOSAxNC40MiwxOS43NSAxMywxOS45M1YxNC40MU00LDEyQzQsNy45NyA3LDQuNTcgMTEsNC4wN1YxMS41OUw1LjY5LDE2LjlDNC41OSwxNS41IDQsMTMuNzggNCwxMk0xOC4zMSwxNi45TDEzLDExLjU5VjQuMDdDMTcsNC41NyAyMCw3Ljk3IDIwLDEyQzIwLDEzLjc4IDE5LjQxLDE1LjUgMTguMzEsMTYuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZWFudXQgPSBcIk0xNiAxMi43N0EyIDIgMCAwIDEgMTUuODYgMTAuMTJBNSA1IDAgMCAwIDEzLjA0IDIuMTJBNS43NCA1Ljc0IDAgMCAwIDEyIDJBNSA1IDAgMCAwIDcgN0E1IDUgMCAwIDAgOC4xMSAxMC4xMkEyIDIgMCAwIDEgOCAxMi43MkE1LjUgNS41IDAgMCAwIDEwLjgxIDIxLjg3QTUuNDIgNS40MiAwIDAgMCAxMiAyMkE1LjUgNS41IDAgMCAwIDE2IDEyLjc3TTEzIDVBMSAxIDAgMSAxIDEyIDZBMSAxIDAgMCAxIDEzIDVNMTEgMThBMSAxIDAgMSAxIDEyIDE3QTEgMSAwIDAgMSAxMSAxOE0xMiAxNUExIDEgMCAxIDEgMTMgMTZBMSAxIDAgMCAxIDEyIDE1TTE0IDE5QTEgMSAwIDEgMSAxNSAxOEExIDEgMCAwIDEgMTQgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVhbnV0T2ZmID0gXCJNMTUuOSAxMC4xMkE1IDUgMCAwIDAgMTMuMDggMi4xMkE1Ljc0IDUuNzQgMCAwIDAgMTIgMkE1IDUgMCAwIDAgNy42OCA0LjVMMTYuMzggMTMuMThBNC4zNSA0LjM1IDAgMCAwIDE2LjA0IDEyLjc3QTIgMiAwIDAgMSAxNS45IDEwLjEyTTEzIDdBMSAxIDAgMSAxIDE0IDZBMSAxIDAgMCAxIDEzIDdNNyA2LjM5TDIuMzkgMS43M0wxLjExIDNMNy44IDkuNjlDNy45IDkuODQgOCAxMCA4LjExIDEwLjEyQTIgMiAwIDAgMSA4IDEyLjcyQTUuNSA1LjUgMCAwIDAgMTAuODEgMjEuODdBNS40MiA1LjQyIDAgMCAwIDEyIDIyQTUuNSA1LjUgMCAwIDAgMTcgMTguODZMMjAuODcgMjIuNzNMMjIuMTQgMjEuNDZNMTEgMThBMSAxIDAgMSAxIDEyIDE3QTEgMSAwIDAgMSAxMSAxOE0xNCAxOUExIDEgMCAxIDEgMTUgMThBMSAxIDAgMCAxIDE0IDE5TTEzIDE2QTEgMSAwIDAgMSAxMiAxNUExIDEgMCAwIDEgMTIuMzUgMTQuMjRMMTMuNzYgMTUuNjVBMSAxIDAgMCAxIDEzIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlYW51dE9mZk91dGxpbmUgPSBcIk0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxNy42OSAxOS41OEMxNy4zNiAyMC4yMSAxNi45MyAyMC43NyAxNi40MSAyMS4yNUMxNC44NiAyMi43MSAxMi42OSAyMy4zMSAxMC42MSAyMi44NUM3LjEgMjIuMSA0Ljg3IDE4LjY0IDUuNjIgMTUuMTNDNS44NyAxMy45NSA2LjQ1IDEyLjg3IDcuMjggMTJDNy42MiAxMS42NCA3LjYyIDExLjA4IDcuMjggMTAuNzJDNi42MyA5LjkxIDYuMjEgOC45NSA2LjA0IDcuOTNMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0xNS4zIDE5LjU2QzE1LjY5IDE5LjEzIDE2IDE4LjYzIDE2LjE5IDE4LjA4TDEzLjc1IDE1LjY0QzEzLjU3IDE1Ljg3IDEzLjI5IDE2IDEzIDE2QzEyLjQ1IDE2IDEyIDE1LjU1IDEyIDE1QzEyIDE0LjcxIDEyLjEzIDE0LjQzIDEyLjM2IDE0LjI1TDkuNTUgMTEuNDRDOS41MyAxMi4xOCA5LjI0IDEyLjg4IDguNzMgMTMuNDFDNy4wMyAxNS4yMiA3LjEzIDE4LjA3IDguOTQgMTkuNzdMOC45NSAxOS43OEMxMC43NiAyMS40NyAxMy42MSAyMS4zNyAxNS4zIDE5LjU2TTE0IDE3QzEyLjcxIDE3IDEyLjcyIDE5IDE0IDE5QzE1LjI4IDE5IDE1LjI5IDE3IDE0IDE3TTYuOSAzLjdMOC40MyA1LjIzQzguNjggNC43MSA5LjA1IDQuMjUgOS41IDMuODlDMTAuMiAzLjMxIDExLjA5IDMgMTIgM0gxMi44OEMxMy40NyAzLjE0IDE0IDMuNDEgMTQuNSAzLjc5QzE2LjIyIDUuMTcgMTYuNSA3LjY5IDE1LjEyIDkuNDFDMTQuNyA5LjkzIDE0LjQ2IDEwLjU4IDE0LjQ1IDExLjI1TDE4LjMyIDE1LjEyQzE4LjA3IDEzLjk3IDE3LjUgMTIuOTIgMTYuNzIgMTIuMDZDMTYuMzcgMTEuNyAxNi4zMyAxMS4xMyAxNi42MiAxMC43MkMxNi42MiAxMC43MiAxOCA5IDE4IDdTMTUuOTcuOTk3IDEyIC45OTcgNi45IDMuNyA2LjkgMy43TTEyIDE3QzEyIDE1LjcxIDEwIDE1LjcyIDEwIDE3QzEwIDE4LjI4IDEyIDE4LjI5IDEyIDE3TTEzIDVDMTEuNzEgNSAxMS43MiA3IDEzIDdDMTQuMjggNyAxNC4yOSA1IDEzIDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVhbnV0T3V0bGluZSA9IFwiTTEyIDIzQzExLjUzIDIzIDExLjA3IDIyLjk1IDEwLjYxIDIyLjg1QzcuMSAyMi4xIDQuODcgMTguNjQgNS42MiAxNS4xM0M1Ljg3IDEzLjk1IDYuNDUgMTIuODcgNy4yOCAxMkM3LjYyIDExLjY0IDcuNjIgMTEuMDggNy4yOCAxMC43MkM1LjIgOC4xNCA1LjYgNC4zNiA4LjE4IDIuMjhTMTQuNTQuNjA3IDE2LjYyIDMuMTlDMTguMzkgNS4zOCAxOC4zOSA4LjUgMTYuNjIgMTAuNzJDMTYuMzMgMTEuMTMgMTYuMzcgMTEuNyAxNi43MiAxMi4wNkMxOS4xNyAxNC42OCAxOS4wNCAxOC44IDE2LjQxIDIxLjI1QzE1LjIyIDIyLjM3IDEzLjY0IDIzIDEyIDIzTTEyIDNDMTEuMDkgMyAxMC4yIDMuMzEgOS41IDMuODlDOC41NSA0LjY1IDggNS43OSA4IDdDOCA3LjkxIDguMzEgOC43OSA4Ljg4IDkuNUM5Ljg0IDEwLjY0IDkuNzcgMTIuMzMgOC43MyAxMy40MUM3LjAzIDE1LjIyIDcuMTMgMTguMDcgOC45NCAxOS43N1MxMy42IDIxLjM4IDE1LjMgMTkuNTZDMTYuOTIgMTcuODMgMTYuOTIgMTUuMTQgMTUuMyAxMy40MUMxNC4yMyAxMi4zMiAxNC4xNSAxMC42IDE1LjEyIDkuNDFDMTYuNSA3LjY5IDE2LjIyIDUuMTcgMTQuNSAzLjc5QzE0IDMuNDEgMTMuNDcgMy4xNCAxMi44OCAzQzEyLjU5IDMgMTIuMjkgMyAxMiAzTTEyIDZDMTIgNi41NSAxMi40NSA3IDEzIDdTMTQgNi41NSAxNCA2IDEzLjU1IDUgMTMgNSAxMiA1LjQ1IDEyIDZNMTQgMTlDMTQuNTUgMTkgMTUgMTguNTUgMTUgMThTMTQuNTUgMTcgMTQgMTcgMTMgMTcuNDUgMTMgMTggMTMuNDUgMTkgMTQgMTlNMTMgMTZDMTMuNTUgMTYgMTQgMTUuNTUgMTQgMTVTMTMuNTUgMTQgMTMgMTQgMTIgMTQuNDUgMTIgMTUgMTIuNDUgMTYgMTMgMTZNMTEgMThDMTEuNTUgMTggMTIgMTcuNTUgMTIgMTdTMTEuNTUgMTYgMTEgMTYgMTAgMTYuNDUgMTAgMTcgMTAuNDUgMTggMTEgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVuID0gXCJNMjAuNzEsNy4wNEMyMC4zNyw3LjM4IDIwLjA0LDcuNzEgMjAuMDMsOC4wNEMyMCw4LjM2IDIwLjM0LDguNjkgMjAuNjYsOUMyMS4xNCw5LjUgMjEuNjEsOS45NSAyMS41OSwxMC40NEMyMS41NywxMC45MyAyMS4wNiwxMS40NCAyMC41NSwxMS45NEwxNi40MiwxNi4wOEwxNSwxNC42NkwxOS4yNSwxMC40MkwxOC4yOSw5LjQ2TDE2Ljg3LDEwLjg3TDEzLjEyLDcuMTJMMTYuOTYsMy4yOUMxNy4zNSwyLjkgMTgsMi45IDE4LjM3LDMuMjlMMjAuNzEsNS42M0MyMS4xLDYgMjEuMSw2LjY1IDIwLjcxLDcuMDRNMywxNy4yNUwxMi41Niw3LjY4TDE2LjMxLDExLjQzTDYuNzUsMjFIM1YxNy4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5Mb2NrID0gXCJNMjEuNyw3QzIxLjQsNy40IDIxLDcuNyAyMSw4QzIxLDguMyAyMS4zLDguNiAyMS42LDlDMjIuMSw5LjUgMjIuNiw5LjkgMjIuNSwxMC40QzIyLjUsMTAuOSAyMiwxMS40IDIxLjUsMTEuOUwxNy40LDE2TDE2LDE0LjdMMjAuMiwxMC41TDE5LjIsOS41TDE3LjgsMTAuOUwxNCw3LjFMMTgsMy4zQzE4LjQsMi45IDE5LDIuOSAxOS40LDMuM0wyMS43LDUuNkMyMi4xLDYgMjIuMSw2LjcgMjEuNyw3TTQsMTcuMkwxMy42LDcuNkwxNy4zLDExLjRMNy44LDIxSDRWMTcuMk04LDVWNC41QzgsMy4xIDYuOSwyIDUuNSwyQzQuMSwyIDMsMy4xIDMsNC41VjVDMi40LDUgMiw1LjQgMiw2VjEwQzIsMTAuNiAyLjQsMTEgMywxMUg4QzguNiwxMSA5LDEwLjYgOSwxMFY2QzksNS40IDguNiw1IDgsNU03LDVINFY0LjVDNCwzLjcgNC43LDMgNS41LDNDNi4zLDMgNywzLjcgNyw0LjVWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5NaW51cyA9IFwiTTIwLjcsN0MyMC40LDcuNCAyMCw3LjcgMjAsOEMyMCw4LjMgMjAuMyw4LjYgMjAuNiw5QzIxLjEsOS41IDIxLjYsOS45IDIxLjUsMTAuNEMyMS41LDEwLjkgMjEsMTEuNCAyMC41LDExLjlMMTYuNCwxNkwxNSwxNC43TDE5LjIsMTAuNUwxOC4yLDkuNUwxNi44LDEwLjlMMTMsNy4xTDE3LDMuM0MxNy40LDIuOSAxOCwyLjkgMTguNCwzLjNMMjAuNyw1LjZDMjEuMSw2IDIxLjEsNi43IDIwLjcsN00zLDE3LjJMMTIuNiw3LjZMMTYuMywxMS40TDYuOCwyMUgzVjE3LjJNMTAsNVY3SDJWNUgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5PZmYgPSBcIk0yLjMsNUwxLDYuM0w3LjUsMTIuOEwzLDE3LjJWMjFINi44TDExLjMsMTYuNUwxNy44LDIzTDE5LjEsMjEuN0wyLjMsNU0xNi45LDEwLjlMMTMuMSw3LjFMMTcsMy4zQzE3LjQsMi45IDE4LDIuOSAxOC40LDMuM0wyMC43LDUuNkMyMS4xLDYgMjEuMSw2LjYgMjAuNyw3QzIwLjQsNy40IDIwLDcuNyAyMCw4QzIwLDguMyAyMC4zLDguNyAyMC42LDlDMjEuMSw5LjUgMjEuNiwxMCAyMS41LDEwLjRDMjEuNSwxMC45IDIxLDExLjQgMjAuNSwxMS45TDE2LjQsMTZMMTUsMTQuN0wxOS4yLDEwLjVMMTguMiw5LjVMMTYuOSwxMC45TTEwLDEwLjJMMTIuNSw3LjdMMTYuMywxMS41TDEzLjgsMTRMMTAsMTAuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5QbHVzID0gXCJNMjAuNyw3QzIwLjQsNy40IDIwLDcuNyAyMCw4QzIwLDguMyAyMC4zLDguNiAyMC42LDlDMjEuMSw5LjUgMjEuNiw5LjkgMjEuNSwxMC40QzIxLjUsMTAuOSAyMSwxMS40IDIwLjUsMTEuOUwxNi40LDE2TDE1LDE0LjdMMTkuMiwxMC41TDE4LjIsOS41TDE2LjgsMTAuOUwxMyw3LjFMMTcsMy4zQzE3LjQsMi45IDE4LDIuOSAxOC40LDMuM0wyMC43LDUuNkMyMS4xLDYgMjEuMSw2LjcgMjAuNyw3TTMsMTcuMkwxMi42LDcuNkwxNi4zLDExLjRMNi44LDIxSDNWMTcuMk03LDJWNUgxMFY3SDdWMTBINVY3SDJWNUg1VjJIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5SZW1vdmUgPSBcIk0yMC43LDdDMjAuNCw3LjQgMjAsNy43IDIwLDhDMjAsOC4zIDIwLjMsOC42IDIwLjYsOUMyMS4xLDkuNSAyMS42LDkuOSAyMS41LDEwLjRDMjEuNSwxMC45IDIxLDExLjQgMjAuNSwxMS45TDE2LjQsMTZMMTUsMTQuN0wxOS4yLDEwLjVMMTguMiw5LjVMMTYuOCwxMC45TDEzLDcuMUwxNywzLjNDMTcuNCwyLjkgMTgsMi45IDE4LjQsMy4zTDIwLjcsNS42QzIxLjEsNiAyMS4xLDYuNyAyMC43LDdNMywxNy4yTDEyLjYsNy42TDE2LjMsMTEuNEw2LjgsMjFIM1YxNy4yTTMuODgsMi40Nkw2LDQuNTlMOC4xMiwyLjQ2TDkuNTQsMy44OEw3LjQxLDZMOS41NCw4LjEyTDguMTIsOS41NEw2LDcuNDFMMy44OCw5LjU0TDIuNDYsOC4xMkw0LjU5LDZMMi40NiwzLjg4TDMuODgsMi40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWwgPSBcIk0yMC43MSw3LjA0QzIxLjEsNi42NSAyMS4xLDYgMjAuNzEsNS42M0wxOC4zNywzLjI5QzE4LDIuOSAxNy4zNSwyLjkgMTYuOTYsMy4yOUwxNS4xMiw1LjEyTDE4Ljg3LDguODdNMywxNy4yNVYyMUg2Ljc1TDE3LjgxLDkuOTNMMTQuMDYsNi4xOEwzLDE3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbEJveCA9IFwiTTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlDMjEsMjAuMTEgMjAuMSwyMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xNi43LDkuMzVDMTYuOTIsOS4xNCAxNi45Miw4Ljc5IDE2LjcsOC41OEwxNS40Miw3LjNDMTUuMjEsNy4wOCAxNC44Niw3LjA4IDE0LjY1LDcuM0wxMy42NSw4LjNMMTUuNywxMC4zNUwxNi43LDkuMzVNNywxNC45NFYxN0g5LjA2TDE1LjEyLDEwLjk0TDEzLjA2LDguODhMNywxNC45NFpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxCb3hNdWx0aXBsZSA9IFwiTTIwLjIyIDJINy43OEM2LjggMiA2IDIuOCA2IDMuNzhWMTYuMjJDNiAxNy4yIDYuOCAxOCA3Ljc4IDE4SDIwLjIyQzIxLjIgMTggMjIgMTcuMjEgMjIgMTYuMjJWMy43OEMyMiAyLjggMjEuMiAyIDIwLjIyIDJNMTEuMDYgMTVIOVYxMi45NEwxNS4wNiA2Ljg4TDE3LjEyIDguOTRMMTEuMDYgMTVNMTguNyA3LjM1TDE3LjcgOC4zNUwxNS42NSA2LjNMMTYuNjUgNS4zQzE2Ljg2IDUuMDggMTcuMjEgNS4wOCAxNy40MiA1LjNMMTguNyA2LjU4QzE4LjkyIDYuNzkgMTguOTIgNy4xNCAxOC43IDcuMzVNNCA2SDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxOFYyMEg0VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVuY2lsQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNNCA2SDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxOFYyMEg0VjZNMTguNyA3LjM1TDE3LjcgOC4zNUwxNS42NSA2LjNMMTYuNjUgNS4zQzE2Ljg2IDUuMDggMTcuMjEgNS4wOCAxNy40MiA1LjNMMTguNyA2LjU4QzE4LjkyIDYuNzkgMTguOTIgNy4xNCAxOC43IDcuMzVNOSAxMi45NEwxNS4wNiA2Ljg4TDE3LjEyIDguOTRMMTEuMDYgMTVIOVYxMi45NE0yMCA0TDIwIDRMMjAgMTZMOCAxNkw4IDRIMjBNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjEgNi45IDE4IDggMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbEJveE91dGxpbmUgPSBcIk0xOSwxOVY1SDVWMTlIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUMyMSwyMC4xMSAyMC4xLDIxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5TTE2LjcsOS4zNUwxNS43LDEwLjM1TDEzLjY1LDguM0wxNC42NSw3LjNDMTQuODYsNy4wOCAxNS4yMSw3LjA4IDE1LjQyLDcuM0wxNi43LDguNThDMTYuOTIsOC43OSAxNi45Miw5LjE0IDE2LjcsOS4zNU03LDE0Ljk0TDEzLjA2LDguODhMMTUuMTIsMTAuOTRMOS4wNiwxN0g3VjE0Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbENpcmNsZSA9IFwiTTEyLDJDNi40NywyIDIsNi40NyAyLDEyQzIsMTcuNTMgNi40NywyMiAxMiwyMkMxNy41MywyMiAyMiwxNy41MyAyMiwxMkMyMiw2LjQ3IDE3LjUzLDIgMTIsMk0xNS4xLDcuMDdDMTUuMjQsNy4wNyAxNS4zOCw3LjEyIDE1LjUsNy4yM0wxNi43Nyw4LjVDMTcsOC43MiAxNyw5LjA3IDE2Ljc3LDkuMjhMMTUuNzcsMTAuMjhMMTMuNzIsOC4yM0wxNC43Miw3LjIzQzE0LjgyLDcuMTIgMTQuOTYsNy4wNyAxNS4xLDcuMDdNMTMuMTMsOC44MUwxNS4xOSwxMC44N0w5LjEzLDE2LjkzSDcuMDdWMTQuODdMMTMuMTMsOC44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxDaXJjbGVPdXRsaW5lID0gXCJNNywxNC45NEwxMy4wNiw4Ljg4TDE1LjEyLDEwLjk0TDkuMDYsMTdIN1YxNC45NE0xMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwTTE2LjcsOS4zNUwxNS43LDEwLjM1TDEzLjY1LDguM0wxNC42NSw3LjNDMTQuODYsNy4wOCAxNS4yMSw3LjA4IDE1LjQyLDcuM0wxNi43LDguNThDMTYuOTIsOC43OSAxNi45Miw5LjE0IDE2LjcsOS4zNU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbExvY2sgPSBcIk01LjUsMkEyLjUsMi41IDAgMCwwIDMsNC41VjVBMSwxIDAgMCwwIDIsNlYxMEExLDEgMCAwLDAgMywxMUg4QTEsMSAwIDAsMCA5LDEwVjZBMSwxIDAgMCwwIDgsNVY0LjVBMi41LDIuNSAwIDAsMCA1LjUsMk01LjUsM0ExLjUsMS41IDAgMCwxIDcsNC41VjVINFY0LjVBMS41LDEuNSAwIDAsMSA1LjUsM00xOS42NiwzQzE5LjQsMyAxOS4xNiwzLjA5IDE4Ljk3LDMuMjhMMTcuMTMsNS4xM0wyMC44OCw4Ljg4TDIyLjcyLDcuMDNDMjMuMTEsNi42NCAyMy4xMSw2IDIyLjcyLDUuNjNMMjAuMzgsMy4yOEMyMC4xOCwzLjA5IDE5LjkxLDMgMTkuNjYsM00xNi4wNiw2LjE5TDUsMTcuMjVWMjFIOC43NUwxOS44MSw5Ljk0TDE2LjA2LDYuMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVuY2lsTG9ja091dGxpbmUgPSBcIk0xNi4xLDlMMTcsOS45TDcuOSwxOUg3VjE4LjFMMTYuMSw5TTE5LjcsM0MxOS41LDMgMTkuMiwzLjEgMTksMy4zTDE3LjIsNS4xTDIwLjksOC45TDIyLjcsN0MyMy4xLDYuNiAyMy4xLDYgMjIuNyw1LjZMMjAuNCwzLjNDMjAuMiwzLjEgMTkuOSwzIDE5LjcsM00xNi4xLDYuMkw1LDE3LjJWMjFIOC44TDE5LjgsOS45TDE2LjEsNi4yTTgsNVY0LjVDOCwzLjEgNi45LDIgNS41LDJDNC4xLDIgMywzLjEgMyw0LjVWNUMyLjQsNSAyLDUuNCAyLDZWMTBDMiwxMC42IDIuNCwxMSAzLDExSDhDOC42LDExIDksMTAuNiA5LDEwVjZDOSw1LjQgOC42LDUgOCw1TTcsNUg0VjQuNUM0LDMuNyA0LjcsMyA1LjUsM0M2LjMsMyA3LDMuNyA3LDQuNVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbE1pbnVzID0gXCJNMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOCwyLjkgMTcuNCwyLjkgMTcsMy4zTDE1LjIsNS4xTDE5LDguOU0zLDE3LjJWMjFINi44TDE3LjgsOS45TDE0LjEsNi4xTDMsMTcuMk0xMCw1VjdIMlY1SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbE1pbnVzT3V0bGluZSA9IFwiTTE0LjEsOUwxNSw5LjlMNS45LDE5SDVWMTguMUwxNC4xLDlNMTcuNywzQzE3LjUsMyAxNy4yLDMuMSAxNywzLjNMMTUuMiw1LjFMMTguOSw4LjlMMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOC4yLDMuMSAxNy45LDMgMTcuNywzTTE0LjEsNi4yTDMsMTcuMlYyMUg2LjhMMTcuOCw5LjlMMTQuMSw2LjJNMTAsNVY3SDJWNUgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxPZmYgPSBcIk0xOC42NiwyQzE4LjQsMiAxOC4xNiwyLjA5IDE3Ljk3LDIuMjhMMTYuMTMsNC4xM0wxOS44OCw3Ljg4TDIxLjcyLDYuMDNDMjIuMTEsNS42NCAyMi4xMSw1IDIxLjcyLDQuNjNMMTkuMzgsMi4yOEMxOS4xOCwyLjA5IDE4LjkxLDIgMTguNjYsMk0zLjI4LDRMMiw1LjI4TDguNSwxMS43NUw0LDE2LjI1VjIwSDcuNzVMMTIuMjUsMTUuNUwxOC43MiwyMkwyMCwyMC43MkwxMy41LDE0LjI1TDkuNzUsMTAuNUwzLjI4LDRNMTUuMDYsNS4xOUwxMS4wMyw5LjIyTDE0Ljc4LDEyLjk3TDE4LjgxLDguOTRMMTUuMDYsNS4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxPZmZPdXRsaW5lID0gXCJNMTAsMTAuMkwxNCw2LjJMMTcuOCwxMEwxMy44LDE0TDEyLjQsMTIuNkwxNSw5LjlMMTQuMSw5TDExLjUsMTEuNkwxMCwxMC4yTTIwLjcsNS42TDE4LjQsMy4zQzE4LjIsMy4xIDE3LjksMyAxNy43LDNDMTcuNSwzIDE3LjIsMy4xIDE3LDMuM0wxNS4yLDUuMUwxOSw4LjlMMjAuNyw3QzIxLjEsNi43IDIxLjEsNiAyMC43LDUuNk0xOSwyMS43TDE3LjcsMjNMMTEuMiwxNi41TDYuOCwyMUgzVjE3LjJMNy41LDEyLjdMMSw2LjNMMi4zLDVMMTksMjEuN005LjgsMTUuMUw4LjksMTQuMkw1LDE4LjFWMTlINS45TDkuOCwxNS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbE91dGxpbmUgPSBcIk0xNC4wNiw5TDE1LDkuOTRMNS45MiwxOUg1VjE4LjA4TDE0LjA2LDlNMTcuNjYsM0MxNy40MSwzIDE3LjE1LDMuMSAxNi45NiwzLjI5TDE1LjEzLDUuMTJMMTguODgsOC44N0wyMC43MSw3LjA0QzIxLjEsNi42NSAyMS4xLDYgMjAuNzEsNS42M0wxOC4zNywzLjI5QzE4LjE3LDMuMDkgMTcuOTIsMyAxNy42NiwzTTE0LjA2LDYuMTlMMywxNy4yNVYyMUg2Ljc1TDE3LjgxLDkuOTRMMTQuMDYsNi4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxQbHVzID0gXCJNMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOCwyLjkgMTcuNCwyLjkgMTcsMy4zTDE1LjIsNS4xTDE5LDguOU0zLDE3LjJWMjFINi44TDE3LjgsOS45TDE0LjEsNi4xTDMsMTcuMk03LDJWNUgxMFY3SDdWMTBINVY3SDJWNUg1VjJIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxQbHVzT3V0bGluZSA9IFwiTTE0LjEsOUwxNSw5LjlMNS45LDE5SDVWMTguMUwxNC4xLDlNMTcuNywzQzE3LjUsMyAxNy4yLDMuMSAxNywzLjNMMTUuMiw1LjFMMTguOSw4LjlMMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOC4yLDMuMSAxNy45LDMgMTcuNywzTTE0LjEsNi4yTDMsMTcuMlYyMUg2LjhMMTcuOCw5LjlMMTQuMSw2LjJNNywyVjVIMTBWN0g3VjEwSDVWN0gyVjVINVYySDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVuY2lsUmVtb3ZlID0gXCJNMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOCwyLjkgMTcuNCwyLjkgMTcsMy4zTDE1LjIsNS4xTDE5LDguOU0zLDE3LjJWMjFINi44TDE3LjgsOS45TDE0LjEsNi4xTDMsMTcuMk0zLjksMi40TDYsNC41TDguMSwyLjRMOS41LDMuOEw3LjQsNS45TDkuNSw4TDguMSw5LjVMNiw3LjRMMy45LDkuNUwyLjUsOC4xTDQuNiw2TDIuNSwzLjhMMy45LDIuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxSZW1vdmVPdXRsaW5lID0gXCJNMTcuNywzQzE3LjUsMyAxNy4yLDMuMSAxNywzLjNMMTUuMiw1LjFMMTguOSw4LjlMMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOC4yLDMuMSAxNy45LDMgMTcuNywzTTE0LjEsNi4yTDMsMTcuMlYyMUg2LjhMMTcuOCw5LjlMMTQuMSw2LjJNNS45LDE5SDVWMTguMUwxNC4xLDlMMTUsOS45TDUuOSwxOU0zLjksMi41TDYsNC42TDguMSwyLjVMOS41LDMuOUw3LjQsNkw5LjUsOC4xTDguMSw5LjVMNiw3LjRMMy45LDkuNUwyLjUsOC4xTDQuNiw2TDIuNSwzLjlMMy45LDIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxSdWxlciA9IFwiTTMgMTcuMjVWMjFINi43NUwxNy44MSA5LjkzTDE0LjA2IDYuMThMMyAxNy4yNU0yMi42MSAxOC4zNkwxOC4zNiAyMi42MUwxMy4xNiAxNy40MUwxNC45MyAxNS42NEwxNS45MyAxNi42NEwxOC40IDE0LjE2TDE5LjgyIDE1LjU4TDE4LjM2IDE3TDE5LjQyIDE4TDIwLjg0IDE2LjZMMjIuNjEgMTguMzZNNi42MSAxMC44M0wxLjM5IDUuNjRMNS42NCAxLjM5TDcuNCAzLjE2TDQuOTMgNS42NEw2IDYuN0w4LjQ2IDQuMjJMOS44OCA1LjY0TDguNDYgNy4wNUw5LjQ2IDguMDVMNi42MSAxMC44M00yMC43MSA3QzIxLjEgNi42MSAyMS4xIDYgMjAuNzEgNS41OUwxOC4zNyAzLjI5QzE4IDIuOSAxNy4zNSAyLjkgMTYuOTYgMy4yOUwxNS4xMiA1LjEyTDE4Ljg3IDguODdMMjAuNzEgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5ndWluID0gXCJNMTksMTZDMTksMTcuNzIgMTguMzcsMTkuMyAxNy4zNCwyMC41QzE3Ljc1LDIwLjg5IDE4LDIxLjQxIDE4LDIySDZDNiwyMS40MSA2LjI1LDIwLjg5IDYuNjYsMjAuNUM1LjYzLDE5LjMgNSwxNy43MiA1LDE2SDNDMywxNC43NSAzLjU3LDEzLjY0IDQuNDYsMTIuOTFMNC40NywxMi44OUM2LDExLjgxIDcsMTAgNyw4VjdBNSw1IDAgMCwxIDEyLDJBNSw1IDAgMCwxIDE3LDdWOEMxNywxMCAxOCwxMS44MSAxOS41MywxMi44OUwxOS41NCwxMi45MUMyMC40MywxMy42NCAyMSwxNC43NSAyMSwxNkgxOU0xNiwxNkE0LDQgMCAwLDAgMTIsMTJBNCw0IDAgMCwwIDgsMTZBNCw0IDAgMCwwIDEyLDIwQTQsNCAwIDAsMCAxNiwxNk0xMCw5TDEyLDEwLjVMMTQsOUwxMiw3LjVMMTAsOU0xMCw1QTEsMSAwIDAsMCA5LDZBMSwxIDAgMCwwIDEwLDdBMSwxIDAgMCwwIDExLDZBMSwxIDAgMCwwIDEwLDVNMTQsNUExLDEgMCAwLDAgMTMsNkExLDEgMCAwLDAgMTQsN0ExLDEgMCAwLDAgMTUsNkExLDEgMCAwLDAgMTQsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW50YWdvbiA9IFwiTTEyLDIuNUwyLDkuOEw1LjgsMjEuNUgxOC4yTDIyLDkuOEwxMiwyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVudGFnb25PdXRsaW5lID0gXCJNMTIsNUwxOS42LDEwLjVMMTYuNywxOS40SDcuM0w0LjQsMTAuNUwxMiw1TTEyLDIuNUwyLDkuOEw1LjgsMjEuNUgxOC4xTDIyLDkuOEwxMiwyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVudGFncmFtID0gXCJNMTYuMTUgMTQuNEwxOC43MSAyMi4yNkwxMiAxNy40TDUuMjggMjIuM0w3Ljg1IDE0LjM3TDEuMTUgOS41SDkuNDRMMTIgMS42MUwxNC41NiA5LjVIMjIuODlMMTYuMTUgMTQuNE0xMy4zIDE2LjQ3TDE1Ljg2IDE4LjMzTDE0Ljg4IDE1LjMyTDEzLjMgMTYuNDdNMTEgOS41SDEzTDEyIDYuNDdMMTEgOS41TTEwLjc0IDE2LjQ3TDkuMTMgMTUuM0w4LjEzIDE4LjM3TDEwLjc0IDE2LjQ3TTE4LjI4IDExSDE1LjA1TDE1LjY3IDEyLjlMMTguMjggMTFNMTAuNTMgMTFMOS42MiAxMy44TDEyIDE1LjU0TDE0LjM5IDEzLjgyTDEzLjQ3IDExSDEwLjUzTTUuNzYgMTFMOC4zNCAxMi44N0w4Ljk1IDExSDUuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVyY2VudCA9IFwiTTE4LjUsMy41TDMuNSwxOC41TDUuNSwyMC41TDIwLjUsNS41TTcsNEEzLDMgMCAwLDAgNCw3QTMsMyAwIDAsMCA3LDEwQTMsMyAwIDAsMCAxMCw3QTMsMyAwIDAsMCA3LDRNMTcsMTRBMywzIDAgMCwwIDE0LDE3QTMsMyAwIDAsMCAxNywyMEEzLDMgMCAwLDAgMjAsMTdBMywzIDAgMCwwIDE3LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlcmNlbnRPdXRsaW5lID0gXCJNMTguNSAzLjVMMjAuNSA1LjVMNS41IDIwLjVMMy41IDE4LjVMMTguNSAzLjVNNyA0QzguNjYgNCAxMCA1LjM0IDEwIDdDMTAgOC42NiA4LjY2IDEwIDcgMTBDNS4zNCAxMCA0IDguNjYgNCA3QzQgNS4zNCA1LjM0IDQgNyA0TTE3IDE0QzE4LjY2IDE0IDIwIDE1LjM0IDIwIDE3QzIwIDE4LjY2IDE4LjY2IDIwIDE3IDIwQzE1LjM0IDIwIDE0IDE4LjY2IDE0IDE3QzE0IDE1LjM0IDE1LjM0IDE0IDE3IDE0TTcgNkM2LjQ1IDYgNiA2LjQ1IDYgN0M2IDcuNTUgNi40NSA4IDcgOEM3LjU1IDggOCA3LjU1IDggN0M4IDYuNDUgNy41NSA2IDcgNk0xNyAxNkMxNi40NSAxNiAxNiAxNi40NSAxNiAxN0MxNiAxNy41NSAxNi40NSAxOCAxNyAxOEMxNy41NSAxOCAxOCAxNy41NSAxOCAxN0MxOCAxNi40NSAxNy41NSAxNiAxNyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQZXJpb2RpY1RhYmxlID0gXCJNMiw0VjZINFY0SDJNMjAsNFY2SDIyVjRIMjBNMiw3VjlINFY3SDJNNSw3VjlIN1Y3SDVNMTQsN1Y5SDE2VjdIMTRNMTcsN1Y5SDE5VjdIMTdNMjAsN1Y5SDIyVjdIMjBNMiwxMFYxMkg0VjEwSDJNNSwxMFYxMkg3VjEwSDVNOCwxMFYxMkgxMFYxMEg4TTExLDEwVjEySDEzVjEwSDExTTE0LDEwVjEySDE2VjEwSDE0TTE3LDEwVjEySDE5VjEwSDE3TTIwLDEwVjEySDIyVjEwSDIwTTIsMTNWMTVINFYxM0gyTTUsMTNWMTVIN1YxM0g1TTgsMTNWMTVIMTBWMTNIOE0xMSwxM1YxNUgxM1YxM0gxMU0xNCwxM1YxNUgxNlYxM0gxNE0xNywxM1YxNUgxOVYxM0gxN00yMCwxM1YxNUgyMlYxM0gyME01LDE3VjE5SDdWMTdINU04LDE3VjE5SDEwVjE3SDhNMTEsMTdWMTlIMTNWMTdIMTFNMTQsMTdWMTlIMTZWMTdIMTRNMTcsMTdWMTlIMTlWMTdIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVyc3BlY3RpdmVMZXNzID0gXCJNMTYuNTYsMTJMMTkuMjMsMjBINC43OEw3LjQ0LDEySDE2LjU2TTcsMUwzLDVMNyw5VjZIMTFWNEg3VjFNMTcsMVY0SDEzVjZIMTdWOUwyMSw1TDE3LDFNMTgsMTBINkwyLDIySDIyTDE4LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlcnNwZWN0aXZlTW9yZSA9IFwiTTE2LjU2LDEyTDE5LjIzLDIwSDQuNzhMNy40NCwxMkgxNi41Nk0xNywxTDEzLDVMMTcsOVY2SDIxVjRIMTdWMU03LDFWNEgzVjZIN1Y5TDExLDVMNywxTTE4LDEwSDZMMiwyMkgyMkwxOCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaGFybWFjeSA9IFwiTTE2LDE0SDEzVjE3SDExVjE0SDhWMTJIMTFWOUgxM1YxMkgxNk0yMSw1SDE4LjM1TDE5LjUsMS44NUwxNy4xNSwxTDE1LjY5LDVIM1Y3TDUsMTNMMywxOVYyMUgyMVYxOUwxOSwxM0wyMSw3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmUgPSBcIk02LjYyLDEwLjc5QzguMDYsMTMuNjIgMTAuMzgsMTUuOTQgMTMuMjEsMTcuMzhMMTUuNDEsMTUuMThDMTUuNjksMTQuOSAxNi4wOCwxNC44MiAxNi40MywxNC45M0MxNy41NSwxNS4zIDE4Ljc1LDE1LjUgMjAsMTUuNUExLDEgMCAwLDEgMjEsMTYuNVYyMEExLDEgMCAwLDEgMjAsMjFBMTcsMTcgMCAwLDEgMyw0QTEsMSAwIDAsMSA0LDNINy41QTEsMSAwIDAsMSA4LjUsNEM4LjUsNS4yNSA4LjcsNi40NSA5LjA3LDcuNTdDOS4xOCw3LjkyIDkuMSw4LjMxIDguODIsOC41OUw2LjYyLDEwLjc5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lQWxlcnQgPSBcIk02LjYyLDEwLjc5QzguMDYsMTMuNjIgMTAuMzgsMTUuOTQgMTMuMjEsMTcuMzhMMTUuNDEsMTUuMThDMTUuNjksMTQuOSAxNi4wOCwxNC44MiAxNi40MywxNC45M0MxNy41NSwxNS4zIDE4Ljc1LDE1LjUgMjAsMTUuNUExLDEgMCAwLDEgMjEsMTYuNVYyMEExLDEgMCAwLDEgMjAsMjFBMTcsMTcgMCAwLDEgMyw0QzMsMy40NCAzLjQ1LDMgNCwzSDcuNUExLDEgMCAwLDEgOC41LDRDOC41LDUuMjQgOC43LDYuNDUgOS4wNyw3LjU3QzkuMTgsNy45MiA5LjEsOC4zMSA4LjgyLDguNThMNi42MiwxMC43OU0xNywxMlYxMEgxOVYxMkgxN00xNyw4VjJIMTlWOEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUFsZXJ0T3V0bGluZSA9IFwiTTIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEwLjQgMTUuOSA4IDEzLjYgNi42IDEwLjhMOC44IDguNkM5LjEgOC4zIDkuMiA3LjkgOSA3LjZDOC43IDYuNSA4LjUgNS4yIDguNSA0QzguNSAzLjUgOCAzIDcuNSAzSDRDMy41IDMgMyAzLjUgMyA0QzMgMTMuNCAxMC42IDIxIDIwIDIxQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxNi41QzIxIDE2IDIwLjUgMTUuNSAyMCAxNS41TTUgNUg2LjVDNi42IDUuOSA2LjggNi44IDcgNy42TDUuOCA4LjhDNS40IDcuNiA1LjEgNi4zIDUgNU0xOSAxOUMxNy43IDE4LjkgMTYuNCAxOC42IDE1LjIgMTguMkwxNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNFYxOU0xNyAxMlYxMEgxOVYxMkgxN00xNyA4VjJIMTlWOEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUJsdWV0b290aCA9IFwiTTIwLDE1LjVDMTguNzUsMTUuNSAxNy41NSwxNS4zIDE2LjQzLDE0LjkzQzE2LjA4LDE0LjgyIDE1LjY5LDE0LjkgMTUuNDEsMTUuMThMMTMuMjEsMTcuMzhDMTAuMzgsMTUuOTQgOC4wNiwxMy42MiA2LjYyLDEwLjc5TDguODIsOC41OUM5LjEsOC4zMSA5LjE4LDcuOTIgOS4wNyw3LjU3QzguNyw2LjQ1IDguNSw1LjI1IDguNSw0QTEsMSAwIDAsMCA3LjUsM0g0QTEsMSAwIDAsMCAzLDRBMTcsMTcgMCAwLDAgMjAsMjFBMSwxIDAgMCwwIDIxLDIwVjE2LjVBMSwxIDAgMCwwIDIwLDE1LjVNMTgsNy4yMUwxOC45NCw4LjE0TDE4LDkuMDhNMTgsMi45MUwxOC45NCwzLjg1TDE4LDQuNzlNMTQuNzEsOS41TDE3LDcuMjFWMTFIMTcuNUwyMC4zNSw4LjE0TDE4LjIxLDZMMjAuMzUsMy44NUwxNy41LDFIMTdWNC43OUwxNC43MSwyLjVMMTQsMy4yMUwxNi43OSw2TDE0LDguNzlMMTQuNzEsOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lQmx1ZXRvb3RoT3V0bGluZSA9IFwiTTIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEwLjQgMTUuOSA4IDEzLjYgNi42IDEwLjhMOC44IDguNkM5LjEgOC4zIDkuMiA3LjkgOSA3LjZDOC43IDYuNSA4LjUgNS4yIDguNSA0QzguNSAzLjUgOCAzIDcuNSAzSDRDMy41IDMgMyAzLjUgMyA0QzMgMTMuNCAxMC42IDIxIDIwIDIxQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxNi41QzIxIDE2IDIwLjUgMTUuNSAyMCAxNS41TTUgNUg2LjVDNi42IDUuOSA2LjggNi44IDcgNy42TDUuOCA4LjhDNS40IDcuNiA1LjEgNi4zIDUgNU0xOSAxOUMxNy43IDE4LjkgMTYuNCAxOC42IDE1LjIgMTguMkwxNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNFYxOU0xOCA3LjIxTDE4Ljk0IDguMTRMMTggOS4wOE0xOCAyLjkxTDE4Ljk0IDMuODVMMTggNC43OU0xNC43MSA5LjVMMTcgNy4yMVYxMUgxNy41TDIwLjM1IDguMTRMMTguMjEgNkwyMC4zNSAzLjg1TDE3LjUgMUgxN1Y0Ljc5TDE0LjcxIDIuNUwxNCAzLjIxTDE2Ljc5IDZMMTQgOC43OUwxNC43MSA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVDYW5jZWwgPSBcIk02LjYyIDEwLjc5QzguMDYgMTMuNjIgMTAuMzggMTUuOTQgMTMuMjEgMTcuMzhMMTUuNDEgMTUuMThDMTUuNjkgMTQuOSAxNi4wOCAxNC44MiAxNi40MyAxNC45M0MxNy41NSAxNS4zIDE4Ljc1IDE1LjUgMjAgMTUuNUMyMC41NSAxNS41IDIxIDE1Ljk1IDIxIDE2LjVWMjBDMjEgMjAuNTUgMjAuNTUgMjEgMjAgMjFDMTAuNjEgMjEgMyAxMy4zOSAzIDRDMyAzLjQ1IDMuNDUgMyA0IDNINy41QzguMDUgMyA4LjUgMy40NSA4LjUgNEM4LjUgNS4yNSA4LjcgNi40NSA5LjA3IDcuNTdDOS4xOCA3LjkyIDkuMSA4LjMxIDguODIgOC41OUw2LjYyIDEwLjc5TTE2LjUgMkMxNCAyIDEyIDQgMTIgNi41UzE0IDExIDE2LjUgMTEgMjEgOSAyMSA2LjUgMTkgMiAxNi41IDJNMTYuNSA5LjVDMTQuODQgOS41IDEzLjUgOC4xNiAxMy41IDYuNUMxMy41IDUuOTQgMTMuNjUgNS40MiAxMy45MiA1TDE4IDkuMDhDMTcuNTggOS4zNSAxNy4wNiA5LjUgMTYuNSA5LjVNMTkuMDggOEwxNSAzLjkyQzE1LjQyIDMuNjUgMTUuOTQgMy41IDE2LjUgMy41QzE4LjE2IDMuNSAxOS41IDQuODQgMTkuNSA2LjVDMTkuNSA3LjA2IDE5LjM1IDcuNTggMTkuMDggOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUNhbmNlbE91dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTYuNSAyQzE0IDIgMTIgNCAxMiA2LjVTMTQgMTEgMTYuNSAxMSAyMSA5IDIxIDYuNSAxOSAyIDE2LjUgMk0xNi41IDkuNUMxNC44NCA5LjUgMTMuNSA4LjE2IDEzLjUgNi41QzEzLjUgNS45NCAxMy42NSA1LjQyIDEzLjkyIDVMMTggOS4wOEMxNy41OCA5LjM1IDE3LjA2IDkuNSAxNi41IDkuNU0xOS4wOCA4TDE1IDMuOTJDMTUuNDIgMy42NSAxNS45NCAzLjUgMTYuNSAzLjVDMTguMTYgMy41IDE5LjUgNC44NCAxOS41IDYuNUMxOS41IDcuMDYgMTkuMzUgNy41OCAxOS4wOCA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lQ2hlY2sgPSBcIk02LjYyIDEwLjc5QTE1LjEgMTUuMSAwIDAgMCAxMy4yMSAxNy4zOEwxNS40MSAxNS4xOEExIDEgMCAwIDEgMTYuNDEgMTQuOTNBMTEuMzYgMTEuMzYgMCAwIDAgMjAgMTUuNUExIDEgMCAwIDEgMjEgMTYuNVYyMEExIDEgMCAwIDEgMjAgMjFBMTcgMTcgMCAwIDEgMyA0QTEgMSAwIDAgMSA0IDNINy41QTEgMSAwIDAgMSA4LjUgNEExMS4zNiAxMS4zNiAwIDAgMCA5LjA3IDcuNTdBMSAxIDAgMCAxIDguODIgOC41N00yMS43MSA0LjcxTDIwLjI5IDMuMjlMMTUgOC41OUwxMi43MSA2LjI5TDExLjI5IDcuNzFMMTUgMTEuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVDaGVja091dGxpbmUgPSBcIk0yMCAxNS41QTExLjM2IDExLjM2IDAgMCAxIDE2LjQzIDE0LjkzQTEgMSAwIDAgMCAxNS40MyAxNS4xOEwxMy4yMyAxNy4zOEExNS4xIDE1LjEgMCAwIDEgNi42NCAxMC43OUw4Ljg0IDguNTlBMSAxIDAgMCAwIDkuMDkgNy41OUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNEExIDEgMCAwIDAgNy41IDNINEExIDEgMCAwIDAgMyA0QTE3IDE3IDAgMCAwIDIwIDIxQTEgMSAwIDAgMCAyMSAyMFYxNi41QTEgMSAwIDAgMCAyMCAxNS41TTUgNUg2LjU0QTEyLjU0IDEyLjU0IDAgMCAwIDcgNy41OUw1Ljc5IDguOEExNSAxNSAwIDAgMSA1IDVNMTkgMTlBMTUgMTUgMCAwIDEgMTUuMiAxOC4yNEwxNi40MSAxN0ExMi4zMSAxMi4zMSAwIDAgMCAxOSAxNy40NU0xNSAxMS40NEwxMS4yOSA3Ljc0TDEyLjcxIDYuMzJMMTUgOC41OUwyMC4yOSAzLjI5TDIxLjcxIDQuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVDbGFzc2ljID0gXCJNMTIsM0M3LjQ2LDMgMy4zNCw0Ljc4IDAuMjksNy42N0MwLjExLDcuODUgMCw4LjEgMCw4LjM4QzAsOC42NiAwLjExLDguOTEgMC4yOSw5LjA5TDIuNzcsMTEuNTdDMi45NSwxMS43NSAzLjIsMTEuODYgMy41LDExLjg2QzMuNzUsMTEuODYgNCwxMS43NSA0LjE4LDExLjU4QzQuOTcsMTAuODQgNS44NywxMC4yMiA2Ljg0LDkuNzNDNy4xNyw5LjU3IDcuNCw5LjIzIDcuNCw4LjgzVjUuNzNDOC44NSw1LjI1IDEwLjM5LDUgMTIsNUMxMy41OSw1IDE1LjE0LDUuMjUgMTYuNTksNS43MlY4LjgyQzE2LjU5LDkuMjEgMTYuODIsOS41NiAxNy4xNSw5LjcyQzE4LjEzLDEwLjIxIDE5LDEwLjg0IDE5LjgyLDExLjU3QzIwLDExLjc1IDIwLjI1LDExLjg1IDIwLjUsMTEuODVDMjAuOCwxMS44NSAyMS4wNSwxMS43NCAyMS4yMywxMS41NkwyMy43MSw5LjA4QzIzLjg5LDguOSAyNCw4LjY1IDI0LDguMzdDMjQsOC4wOSAyMy44OCw3Ljg1IDIzLjcsNy42N0MyMC42NSw0Ljc4IDE2LjUzLDMgMTIsM005LDdWMTBDOSwxMCAzLDE1IDMsMThWMjJIMjFWMThDMjEsMTUgMTUsMTAgMTUsMTBWN0gxM1Y5SDExVjdIOU0xMiwxMkE0LDQgMCAwLDEgMTYsMTZBNCw0IDAgMCwxIDEyLDIwQTQsNCAwIDAsMSA4LDE2QTQsNCAwIDAsMSAxMiwxMk0xMiwxMy41QTIuNSwyLjUgMCAwLDAgOS41LDE2QTIuNSwyLjUgMCAwLDAgMTIsMTguNUEyLjUsMi41IDAgMCwwIDE0LjUsMTZBMi41LDIuNSAwIDAsMCAxMiwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lQ2xhc3NpY09mZiA9IFwiTTEyIDNDMTYuNTMgMyAyMC42NSA0Ljc4IDIzLjcgNy42N0MyMy44OCA3Ljg1IDI0IDguMDkgMjQgOC4zN0MyNCA4LjY1IDIzLjg5IDguOSAyMy43MSA5LjA4TDIxLjIzIDExLjU2QzIxLjA1IDExLjc0IDIwLjggMTEuODUgMjAuNSAxMS44NUMyMC4yNSAxMS44NSAyMCAxMS43NSAxOS44MiAxMS41N0MxOSAxMC44NCAxOC4xMyAxMC4yMSAxNy4xNSA5LjcyQzE2LjgyIDkuNTYgMTYuNTkgOS4yMSAxNi41OSA4LjgyVjUuNzJDMTUuMTQgNS4yNSAxMy41OSA1IDEyIDVDMTAuNDQgNSA4LjkzIDUuMjQgNy41IDUuNjlMNS45NCA0LjExQzcuODIgMy40IDkuODYgMyAxMiAzTTkgN0gxMVY5SDEzVjdIMTVWMTBDMTUgMTAgMjEgMTUgMjEgMThWMTkuMThMOSA3LjE4VjdNMSA0LjI3TDIuMjggM0wyMS41IDIyLjIyTDIwLjIzIDIzLjVMMTguNzMgMjJIM1YxOEMzIDE1Ljg2IDYuMDUgMTIuNzEgNy44IDExLjA3TDYuNTkgOS44NkM1LjcxIDEwLjMzIDQuOSAxMC45IDQuMTggMTEuNThDNCAxMS43NSAzLjc1IDExLjg2IDMuNSAxMS44NkMzLjIgMTEuODYgMi45NSAxMS43NSAyLjc3IDExLjU3TC4yOSA5LjA5Qy4xMSA4LjkxIDAgOC42NiAwIDguMzhDMCA4LjEgLjExIDcuODUgLjI5IDcuNjdDLjk5NiA3IDIuNTggNS44NSAyLjU4IDUuODVMMSA0LjI3TTggMTZDOCAxOC4yMSA5Ljc5IDIwIDEyIDIwQzEzLjI5IDIwIDE0LjQ0IDE5LjM5IDE1LjE3IDE4LjQ0TDE0LjEgMTcuMzZDMTMuNjUgMTguMDUgMTIuODggMTguNSAxMiAxOC41QzEwLjYyIDE4LjUgOS41IDE3LjM4IDkuNSAxNkM5LjUgMTUuMTIgOS45NSAxNC4zNSAxMC42NCAxMy45MUw5LjU2IDEyLjgzQzguNjEgMTMuNTYgOCAxNC43MSA4IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lRGlhbCA9IFwiTTYuNiAxMC44QzggMTMuNiAxMC40IDE1LjkgMTMuMiAxNy40TDE1LjQgMTUuMkMxNS43IDE0LjkgMTYuMSAxNC44IDE2LjQgMTVDMTcuNSAxNS40IDE4LjcgMTUuNiAyMCAxNS42QzIwLjYgMTUuNiAyMSAxNiAyMSAxNi42VjIwQzIxIDIwLjYgMjAuNiAyMSAyMCAyMUMxMC42IDIxIDMgMTMuNCAzIDRDMyAzLjQgMy41IDMgNCAzSDcuNUM4LjEgMyA4LjUgMy40IDguNSA0QzguNSA1LjIgOC43IDYuNCA5LjEgNy42QzkuMiA3LjkgOS4xIDguMyA4LjkgOC42TDYuNiAxMC44TTE0IDNDMTMuNCAzIDEzIDMuNCAxMyA0UzEzLjQgNSAxNCA1IDE1IDQuNiAxNSA0IDE0LjYgMyAxNCAzTTE3IDNDMTYuNCAzIDE2IDMuNCAxNiA0UzE2LjQgNSAxNyA1IDE4IDQuNiAxOCA0IDE3LjYgMyAxNyAzTTIwIDNDMTkuNCAzIDE5IDMuNCAxOSA0UzE5LjQgNSAyMCA1IDIxIDQuNiAyMSA0IDIwLjYgMyAyMCAzTTE0IDZDMTMuNCA2IDEzIDYuNCAxMyA3UzEzLjQgOCAxNCA4IDE1IDcuNiAxNSA3IDE0LjYgNiAxNCA2TTE3IDZDMTYuNCA2IDE2IDYuNCAxNiA3UzE2LjQgOCAxNyA4IDE4IDcuNiAxOCA3IDE3LjYgNiAxNyA2TTIwIDZDMTkuNCA2IDE5IDYuNCAxOSA3UzE5LjQgOCAyMCA4IDIxIDcuNiAyMSA3IDIwLjYgNiAyMCA2TTE0IDlDMTMuNCA5IDEzIDkuNCAxMyAxMFMxMy40IDExIDE0IDExIDE1IDEwLjYgMTUgMTAgMTQuNiA5IDE0IDlNMTcgOUMxNi40IDkgMTYgOS40IDE2IDEwUzE2LjQgMTEgMTcgMTEgMTggMTAuNiAxOCAxMCAxNy42IDkgMTcgOU0yMCA5QzE5LjQgOSAxOSA5LjQgMTkgMTBTMTkuNCAxMSAyMCAxMSAyMSAxMC42IDIxIDEwIDIwLjYgOSAyMCA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lRGlhbE91dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTUgNEMxNSA0LjYgMTQuNiA1IDE0IDVTMTMgNC42IDEzIDQgMTMuNCAzIDE0IDMgMTUgMy40IDE1IDRNMTggNEMxOCA0LjYgMTcuNiA1IDE3IDVTMTYgNC42IDE2IDQgMTYuNCAzIDE3IDMgMTggMy40IDE4IDRNMjEgNEMyMSA0LjYgMjAuNiA1IDIwIDVTMTkgNC42IDE5IDQgMTkuNCAzIDIwIDMgMjEgMy40IDIxIDRNMTUgN0MxNSA3LjYgMTQuNiA4IDE0IDhTMTMgNy42IDEzIDcgMTMuNCA2IDE0IDYgMTUgNi40IDE1IDdNMTggN0MxOCA3LjYgMTcuNiA4IDE3IDhTMTYgNy42IDE2IDcgMTYuNCA2IDE3IDYgMTggNi40IDE4IDdNMjEgN0MyMSA3LjYgMjAuNiA4IDIwIDhTMTkgNy42IDE5IDcgMTkuNCA2IDIwIDYgMjEgNi40IDIxIDdNMTUgMTBDMTUgMTAuNiAxNC42IDExIDE0IDExUzEzIDEwLjYgMTMgMTAgMTMuNCA5IDE0IDkgMTUgOS40IDE1IDEwTTE4IDEwQzE4IDEwLjYgMTcuNiAxMSAxNyAxMVMxNiAxMC42IDE2IDEwIDE2LjQgOSAxNyA5IDE4IDkuNCAxOCAxME0yMSAxMEMyMSAxMC42IDIwLjYgMTEgMjAgMTFTMTkgMTAuNiAxOSAxMCAxOS40IDkgMjAgOSAyMSA5LjQgMjEgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVGb3J3YXJkID0gXCJNMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA2LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU5QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNU0xOCwxMUwyMyw2TDE4LDFWNEgxNFY4SDE4VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lRm9yd2FyZE91dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTggMTFMMjMgNkwxOCAxVjRIMTRWOEgxOFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUhhbmd1cCA9IFwiTTEyLDlDMTAuNCw5IDguODUsOS4yNSA3LjQsOS43MlYxMi44MkM3LjQsMTMuMjIgNy4xNywxMy41NiA2Ljg0LDEzLjcyQzUuODYsMTQuMjEgNC45NywxNC44NCA0LjE3LDE1LjU3QzQsMTUuNzUgMy43NSwxNS44NiAzLjUsMTUuODZDMy4yLDE1Ljg2IDIuOTUsMTUuNzQgMi43NywxNS41NkwwLjI5LDEzLjA4QzAuMTEsMTIuOSAwLDEyLjY1IDAsMTIuMzhDMCwxMi4xIDAuMTEsMTEuODUgMC4yOSwxMS42N0MzLjM0LDguNzcgNy40Niw3IDEyLDdDMTYuNTQsNyAyMC42Niw4Ljc3IDIzLjcxLDExLjY3QzIzLjg5LDExLjg1IDI0LDEyLjEgMjQsMTIuMzhDMjQsMTIuNjUgMjMuODksMTIuOSAyMy43MSwxMy4wOEwyMS4yMywxNS41NkMyMS4wNSwxNS43NCAyMC44LDE1Ljg2IDIwLjUsMTUuODZDMjAuMjUsMTUuODYgMjAsMTUuNzUgMTkuODIsMTUuNTdDMTkuMDMsMTQuODQgMTguMTQsMTQuMjEgMTcuMTYsMTMuNzJDMTYuODMsMTMuNTYgMTYuNiwxMy4yMiAxNi42LDEyLjgyVjkuNzJDMTUuMTUsOS4yNSAxMy42LDkgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUhhbmd1cE91dGxpbmUgPSBcIk0yMy43MSAxMS42N0ExNyAxNyAwIDAgMCAuMjkgMTEuNjdBMSAxIDAgMCAwIDAgMTIuMzhBMSAxIDAgMCAwIC4yOSAxMy4wOEwyLjc3IDE1LjU2QTEgMSAwIDAgMCAzLjUgMTUuODVBMSAxIDAgMCAwIDQuMTggMTUuNTdBMTEuNSAxMS41IDAgMCAxIDYuODQgMTMuNzJBMSAxIDAgMCAwIDcuNCAxMi44MlY5LjcyQTE0LjkxIDE0LjkxIDAgMCAxIDEyIDlBMTQuNSAxNC41IDAgMCAxIDE2LjU5IDkuNzNWMTIuODNBMSAxIDAgMCAwIDE3LjE1IDEzLjczQTExLjI3IDExLjI3IDAgMCAxIDE5LjgyIDE1LjU4QTEgMSAwIDAgMCAyMC41IDE1Ljg2QTEgMSAwIDAgMCAyMS4yMyAxNS41N0wyMy43MSAxMy4wOUExIDEgMCAwIDAgMjMuNzEgMTEuNjdNNS40IDEyLjIyQTEzLjY4IDEzLjY4IDAgMCAwIDMuNTMgMTMuNUwyLjQ2IDEyLjQyQTE1LjU0IDE1LjU0IDAgMCAxIDUuNCAxMC41TTIwLjUgMTMuNUExMy43NSAxMy43NSAwIDAgMCAxOC42IDEyLjIzVjEwLjUzQTE0LjI2IDE0LjI2IDAgMCAxIDIxLjU1IDEyLjQzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lSW5UYWxrID0gXCJNMTUsMTJIMTdBNSw1IDAgMCwwIDEyLDdWOUEzLDMgMCAwLDEgMTUsMTJNMTksMTJIMjFDMjEsNyAxNi45NywzIDEyLDNWNUMxNS44Niw1IDE5LDguMTMgMTksMTJNMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA2LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU5QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUluVGFsa091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTUgMTJIMTdBNSA1IDAgMCAwIDEyIDdWOUEzIDMgMCAwIDEgMTUgMTJNMTkgMTJIMjFDMjEgNyAxNi45NyAzIDEyIDNWNUMxNS44NiA1IDE5IDguMTMgMTkgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVJbmNvbWluZyA9IFwiTTQsM0ExLDEgMCAwLDAgMyw0QTE3LDE3IDAgMCwwIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41QzE4Ljc1LDE1LjUgMTcuNTUsMTUuMyAxNi40MywxNC45M0MxNi4wOCwxNC44MiAxNS42OSwxNC45IDE1LjQxLDE1LjE3TDEzLjIxLDE3LjM3QzEwLjM4LDE1LjkzIDguMDYsMTMuNjIgNi42MiwxMC43OEw4LjgyLDguNTdDOS4xLDguMzEgOS4xOCw3LjkyIDkuMDcsNy41N0M4LjcsNi40NSA4LjUsNS4yNSA4LjUsNEExLDEgMCAwLDAgNy41LDNINE0xOSwxMVY5LjVIMTUuNUwyMSw0TDIwLDNMMTQuNSw4LjVWNUgxM1YxMUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUluY29taW5nT3V0bGluZSA9IFwiTTIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEwLjQgMTUuOSA4IDEzLjYgNi42IDEwLjhMOC44IDguNkM5LjEgOC4zIDkuMiA3LjkgOSA3LjZDOC43IDYuNSA4LjUgNS4yIDguNSA0QzguNSAzLjUgOCAzIDcuNSAzSDRDMy41IDMgMyAzLjUgMyA0QzMgMTMuNCAxMC42IDIxIDIwIDIxQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxNi41QzIxIDE2IDIwLjUgMTUuNSAyMCAxNS41TTUgNUg2LjVDNi42IDUuOSA2LjggNi44IDcgNy42TDUuOCA4LjhDNS40IDcuNiA1LjEgNi4zIDUgNU0xOSAxOUMxNy43IDE4LjkgMTYuNCAxOC42IDE1LjIgMTguMkwxNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNFYxOU0xOSAxMVY5LjVIMTUuNUwyMSA0TDIwIDNMMTQuNSA4LjVWNUgxM1YxMUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUxvY2sgPSBcIk0xOS4yLDRIMTUuOFYzLjVDMTUuOCwyLjU2IDE2LjU2LDEuOCAxNy41LDEuOEMxOC40NCwxLjggMTkuMiwyLjU2IDE5LjIsMy41TTIwLDRWMy41QTIuNSwyLjUgMCAwLDAgMTcuNSwxQTIuNSwyLjUgMCAwLDAgMTUsMy41VjRBMSwxIDAgMCwwIDE0LDVWOUExLDEgMCAwLDAgMTUsMTBIMjBBMSwxIDAgMCwwIDIxLDlWNUExLDEgMCAwLDAgMjAsNE0yMCwxNS41QzE4Ljc1LDE1LjUgMTcuNTUsMTUuMyAxNi40MywxNC45M0MxNi4wOCwxNC44MiAxNS42OSwxNC45IDE1LjQxLDE1LjE4TDEzLjIxLDE3LjM4QzEwLjM4LDE1Ljk0IDguMDYsMTMuNjIgNi42MiwxMC43OUw4LjgyLDguNTlDOS4xLDguMzEgOS4xOCw3LjkyIDkuMDcsNy41N0M4LjcsNi40NSA4LjUsNS4yNSA4LjUsNEExLDEgMCAwLDAgNy41LDNINEExLDEgMCAwLDAgMyw0QTE3LDE3IDAgMCwwIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lTG9ja091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTkuMiA0SDE1LjhWMy41QzE1LjggMi41NiAxNi41NiAxLjggMTcuNSAxLjhDMTguNDQgMS44IDE5LjIgMi41NiAxOS4yIDMuNU0yMCA0VjMuNUEyLjUgMi41IDAgMCAwIDE3LjUgMUEyLjUgMi41IDAgMCAwIDE1IDMuNVY0QTEgMSAwIDAgMCAxNCA1VjlBMSAxIDAgMCAwIDE1IDEwSDIwQTEgMSAwIDAgMCAyMSA5VjVBMSAxIDAgMCAwIDIwIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVMb2cgPSBcIk0yMCwxNS41QTEsMSAwIDAsMSAyMSwxNi41VjIwQTEsMSAwIDAsMSAyMCwyMUExNywxNyAwIDAsMSAzLDRBMSwxIDAgMCwxIDQsM0g3LjVBMSwxIDAgMCwxIDguNSw0QzguNSw1LjI0IDguNyw2LjQ1IDkuMDcsNy41N0M5LjE4LDcuOTIgOS4xLDguMzEgOC44Miw4LjU4TDYuNjIsMTAuNzlDOC4wNiwxMy42MiAxMC4zOCwxNS45NCAxMy4yMSwxNy4zOEwxNS40MSwxNS4xOEMxNS42OSwxNC45IDE2LjA4LDE0LjgyIDE2LjQzLDE0LjkzQzE3LjU1LDE1LjMgMTguNzUsMTUuNSAyMCwxNS41TTEyLDNIMTRWNUgxMk0xNSwzSDIxVjVIMTVNMTIsNkgxNFY4SDEyTTE1LDZIMjFWOEgxNU0xMiw5SDE0VjExSDEyTTE1LDlIMjFWMTFIMTVcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUxvZ091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTIgM0gxNFY1SDEyTTE1IDNIMjFWNUgxNU0xMiA2SDE0VjhIMTJNMTUgNkgyMVY4SDE1TTEyIDlIMTRWMTFIMTJNMTUgOUgyMVYxMUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZU1lc3NhZ2UgPSBcIk0yMCAxNS41QzE4Ljc1IDE1LjUgMTcuNTUgMTUuMyAxNi40MyAxNC45M0MxNi4wOCAxNC44MiAxNS42OSAxNC45IDE1LjQxIDE1LjE3TDEzLjIxIDE3LjM3QzEwLjM4IDE1LjkzIDguMDYgMTMuNjIgNi42MiAxMC43OUw4LjgyIDguNThDOS4xIDguMzEgOS4xOCA3LjkyIDkuMDcgNy41N0M4LjcgNi40NSA4LjUgNS4yNSA4LjUgNEM4LjUgMy40NSA4LjA1IDMgNy41IDNINEMzLjQ1IDMgMyAzLjQ1IDMgNEMzIDEzLjM5IDEwLjYxIDIxIDIwIDIxQzIwLjU1IDIxIDIxIDIwLjU1IDIxIDIwVjE2LjVDMjEgMTUuOTUgMjAuNTUgMTUuNSAyMCAxNS41TTEyIDNWMTNMMTUgMTBIMjFWM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZU1lc3NhZ2VPdXRsaW5lID0gXCJNMjAgMTUuNUMxOC43NSAxNS41IDE3LjU1IDE1LjMgMTYuNDMgMTQuOTNDMTYuMzMgMTQuOSAxNi4yMiAxNC44OCAxNi4xMiAxNC44OEMxNS44NiAxNC44OCAxNS42MSAxNSAxNS40MSAxNS4xN0wxMy4yMSAxNy4zN0MxMC4zOCAxNS45MyA4LjA2IDEzLjYyIDYuNjIgMTAuNzlMOC44MiA4LjU4QzkuMSA4LjMxIDkuMTggNy45MiA5LjA3IDcuNTdDOC43IDYuNDUgOC41IDUuMjUgOC41IDRDOC41IDMuNDUgOC4wNSAzIDcuNSAzSDRDMy40NSAzIDMgMy40NSAzIDRDMyAxMy4zOSAxMC42MSAyMSAyMCAyMUMyMC41NSAyMSAyMSAyMC41NSAyMSAyMFYxNi41QzIxIDE1Ljk1IDIwLjU1IDE1LjUgMjAgMTUuNU01LjAzIDVINi41M0M2LjYgNS44OCA2Ljc1IDYuNzUgNyA3LjU5TDUuNzkgOC44QzUuMzggNy41OSA1LjEyIDYuMzIgNS4wMyA1TTE5IDE4Ljk3QzE3LjY4IDE4Ljg4IDE2LjQgMTguNjIgMTUuMiAxOC4yMUwxNi40IDE3QzE3LjI1IDE3LjI1IDE4LjEyIDE3LjQgMTkgMTcuNDZWMTguOTdNMTIgM1YxM0wxNSAxMEgyMVYzSDEyTTE5IDhIMTRWNUgxOVY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lTWludXMgPSBcIk00LDNBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNUMxOC43NiwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA3LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU4QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjQgOC41LDRBMSwxIDAgMCwwIDcuNSwzTTEzLDZWOEgyMVY2XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVNaW51c091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTMgNlY4SDIxVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVNaXNzZWQgPSBcIk0yMy43MSwxNi42N0MyMC42NiwxMy43NyAxNi41NCwxMiAxMiwxMkM3LjQ2LDEyIDMuMzQsMTMuNzcgMC4yOSwxNi42N0MwLjExLDE2Ljg1IDAsMTcuMSAwLDE3LjM4QzAsMTcuNjUgMC4xMSwxNy45IDAuMjksMTguMDhMMi43NywyMC41NkMyLjk1LDIwLjc0IDMuMiwyMC44NiAzLjUsMjAuODZDMy43NSwyMC44NiA0LDIwLjc1IDQuMTgsMjAuNTdDNC45NywxOS44MyA1Ljg2LDE5LjIxIDYuODQsMTguNzJDNy4xNywxOC41NiA3LjQsMTguMjIgNy40LDE3LjgyVjE0LjcyQzguODUsMTQuMjUgMTAuMzksMTQgMTIsMTRDMTMuNiwxNCAxNS4xNSwxNC4yNSAxNi42LDE0LjcyVjE3LjgyQzE2LjYsMTguMjIgMTYuODMsMTguNTYgMTcuMTYsMTguNzJDMTguMTQsMTkuMjEgMTkuMDMsMTkuODMgMTkuODIsMjAuNTdDMjAsMjAuNzUgMjAuMjUsMjAuODYgMjAuNSwyMC44NkMyMC44LDIwLjg2IDIxLjA1LDIwLjc0IDIxLjIzLDIwLjU2TDIzLjcxLDE4LjA4QzIzLjg5LDE3LjkgMjQsMTcuNjUgMjQsMTcuMzhDMjQsMTcuMSAyMy44OSwxNi44NSAyMy43MSwxNi42N002LjUsNS41TDEyLDExTDE5LDRMMTgsM0wxMiw5TDcuNSw0LjVIMTFWM0g1VjlINi41VjUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZU1pc3NlZE91dGxpbmUgPSBcIk0xOC42IDE1LjV2MS44Yy43LjQgMS4zLjggMS45IDEuM2wxLjEtMS4xYy0uOS0uOS0xLjktMS41LTMtMm0tMTMuMiAwYy0xIC41LTIgMS4xLTIuOSAxLjlsMS4xIDEuMWMuNi0uNSAxLjItLjkgMS45LTEuM3YtMS43TTEyIDEyYzQuNSAwIDguNyAxLjcgMTEuNyA0LjcuMi4yLjMuNC4zLjcgMCAuMy0uMS41LS4zLjdsLTIuNSAyLjVjLS4yLjItLjQuMy0uNy4zLS4yIDAtLjUtLjEtLjctLjMtLjgtLjctMS43LTEuNC0yLjctMS44LS4zLS4yLS42LS41LS42LS45di0zLjFjLTEuNS0uNS0zLS43LTQuNi0uNy0xLjYgMC0zLjEuMi00LjYuN3YzLjFjMCAuNC0uMi43LS42LjktMSAuNS0xLjkgMS4xLTIuNyAxLjgtLjIuMi0uNC4zLS43LjMtLjMgMC0uNS0uMS0uNy0uM0wuMSAxOC4xYzAtLjItLjEtLjUtLjEtLjcgMC0uMy4xLS41LjMtLjdDMy4zIDEzLjggNy41IDEyIDEyIDEyek02LjUgNS41VjlINVYzaDZ2MS41SDcuNUwxMiA5bDYtNiAxIDEtNyA3LTUuNS01LjV6XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVPZmYgPSBcIk0yMC4yMiwyLjVMMi41LDIwLjIyTDMuNzcsMjEuNUw4LjY1LDE2LjYyQzExLjc2LDE5LjQzIDE1LjgxLDIxIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41QzE4Ljc1LDE1LjUgMTcuNTUsMTUuMyAxNi40MywxNC45M0MxNi4wOCwxNC44MiAxNS42OSwxNC45IDE1LjQxLDE1LjE4TDEzLjIxLDE3LjM4QzEyLjA2LDE2LjggMTEsMTYuMDYgMTAuMDYsMTUuMjFMMjEuNSwzLjc3TDIwLjIyLDIuNU00LDNBMSwxIDAgMCwwIDMsNEMzLDcuNTcgNC4xNCwxMS4wNSA2LjI0LDEzLjk0TDcuNjYsMTIuNUM3LjI4LDExLjk3IDYuOTMsMTEuMzkgNi42MiwxMC43OUw4LjgyLDguNTlDOS4xLDguMzEgOS4xOCw3LjkyIDkuMDcsNy41N0M4LjcsNi40NSA4LjUsNS4yNSA4LjUsNEExLDEgMCAwLDAgNy41LDNINFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZU9mZk91dGxpbmUgPSBcIk0xNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNVYxOUMxNy43IDE4LjkgMTYuNCAxOC43IDE1LjIgMTguMkwxNi40IDE3TTIwLjIgMi41TDIuNSAyMC4yTDMuOCAyMS41TDguNyAxNi42QzExLjggMTkuNCAxNS44IDIxIDIwIDIxQzIwLjYgMjEgMjEgMjAuNiAyMSAyMFYxNi41QzIxIDE1LjkgMjAuNiAxNS41IDIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEyLjEgMTYuOCAxMSAxNi4xIDEwLjEgMTUuMkwyMS41IDMuOEwyMC4yIDIuNU02LjUgNUM2LjYgNS45IDYuOCA2LjggNyA3LjZMNS44IDguOEM1LjQgNy42IDUuMSA2LjMgNSA1SDYuNU03LjUgM0g0QzMuNCAzIDMgMy40IDMgNEMzIDcuNiA0LjEgMTEgNi4yIDEzLjlMNy42IDEyLjVDNy4yIDEyIDYuOSAxMS40IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjQgOC41IDUuMiA4LjUgNEM4LjUgMy40IDguMSAzIDcuNSAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lT3V0Z29pbmcgPSBcIk00LDNBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xN0wxMy4yMSwxNy4zN0MxMC4zOCwxNS45MyA4LjA2LDEzLjYyIDYuNjIsMTAuNzhMOC44Miw4LjU3QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRNMTUsM1Y0LjVIMTguNUwxMywxMEwxNCwxMUwxOS41LDUuNVY5SDIxVjNIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVPdXRnb2luZ091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTUgM1Y0LjVIMTguNUwxMyAxMEwxNCAxMUwxOS41IDUuNVY5SDIxVjNIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVPdXRsaW5lID0gXCJNMjAsMTUuNUMxOC44LDE1LjUgMTcuNSwxNS4zIDE2LjQsMTQuOUMxNi4zLDE0LjkgMTYuMiwxNC45IDE2LjEsMTQuOUMxNS44LDE0LjkgMTUuNiwxNSAxNS40LDE1LjJMMTMuMiwxNy40QzEwLjQsMTUuOSA4LDEzLjYgNi42LDEwLjhMOC44LDguNkM5LjEsOC4zIDkuMiw3LjkgOSw3LjZDOC43LDYuNSA4LjUsNS4yIDguNSw0QzguNSwzLjUgOCwzIDcuNSwzSDRDMy41LDMgMywzLjUgMyw0QzMsMTMuNCAxMC42LDIxIDIwLDIxQzIwLjUsMjEgMjEsMjAuNSAyMSwyMFYxNi41QzIxLDE2IDIwLjUsMTUuNSAyMCwxNS41TTUsNUg2LjVDNi42LDUuOSA2LjgsNi44IDcsNy42TDUuOCw4LjhDNS40LDcuNiA1LjEsNi4zIDUsNU0xOSwxOUMxNy43LDE4LjkgMTYuNCwxOC42IDE1LjIsMTguMkwxNi40LDE3QzE3LjIsMTcuMiAxOC4xLDE3LjQgMTksMTcuNFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZVBhdXNlZCA9IFwiTTE5LDEwSDIxVjNIMTlNMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA2LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU5QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNU0xNywzSDE1VjEwSDE3VjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVQYXVzZWRPdXRsaW5lID0gXCJNMjAgMTUuNUMxOC44IDE1LjUgMTcuNSAxNS4zIDE2LjQgMTQuOUgxNi4xQzE1LjggMTQuOSAxNS42IDE1IDE1LjQgMTUuMkwxMy4yIDE3LjRDMTAuNCAxNS45IDggMTMuNiA2LjYgMTAuOEw4LjggOC42QzkuMSA4LjMgOS4yIDcuOSA5IDcuNkM4LjcgNi41IDguNSA1LjIgOC41IDRDOC41IDMuNSA4IDMgNy41IDNINEMzLjUgMyAzIDMuNSAzIDRDMyAxMy40IDEwLjYgMjEgMjAgMjFDMjAuNSAyMSAyMSAyMC41IDIxIDIwVjE2LjVDMjEgMTYgMjAuNSAxNS41IDIwIDE1LjVNNSA1SDYuNUM2LjYgNS45IDYuOCA2LjggNyA3LjZMNS44IDguOEM1LjQgNy42IDUuMSA2LjMgNSA1TTE5IDE5QzE3LjcgMTguOSAxNi40IDE4LjYgMTUuMiAxOC4yTDE2LjQgMTdDMTcuMiAxNy4yIDE4LjEgMTcuNCAxOSAxNy40VjE5TTE5IDEwSDIxVjNIMTlNMTcgM0gxNVYxMEgxN1YzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUGx1cyA9IFwiTTQsM0ExLDEgMCAwLDAgMyw0QTE3LDE3IDAgMCwwIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41QzE4Ljc2LDE1LjUgMTcuNTUsMTUuMyAxNi40MywxNC45M0MxNi4wOCwxNC44MiAxNS42OSwxNC45IDE1LjQxLDE1LjE4TDEzLjIxLDE3LjM4QzEwLjM4LDE1Ljk0IDguMDcsMTMuNjIgNi42MiwxMC43OUw4LjgyLDguNThDOS4xLDguMzEgOS4xOCw3LjkyIDkuMDcsNy41N0M4LjcsNi40NSA4LjUsNS4yNCA4LjUsNEExLDEgMCAwLDAgNy41LDNNMTYsM1Y2SDEzVjhIMTZWMTFIMThWOEgyMVY2SDE4VjNcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZVBsdXNPdXRsaW5lID0gXCJNMjAgMTUuNUMxOC44IDE1LjUgMTcuNSAxNS4zIDE2LjQgMTQuOUgxNi4xQzE1LjggMTQuOSAxNS42IDE1IDE1LjQgMTUuMkwxMy4yIDE3LjRDMTAuNCAxNS45IDggMTMuNiA2LjYgMTAuOEw4LjggOC42QzkuMSA4LjMgOS4yIDcuOSA5IDcuNkM4LjcgNi41IDguNSA1LjIgOC41IDRDOC41IDMuNSA4IDMgNy41IDNINEMzLjUgMyAzIDMuNSAzIDRDMyAxMy40IDEwLjYgMjEgMjAgMjFDMjAuNSAyMSAyMSAyMC41IDIxIDIwVjE2LjVDMjEgMTYgMjAuNSAxNS41IDIwIDE1LjVNNSA1SDYuNUM2LjYgNS45IDYuOCA2LjggNyA3LjZMNS44IDguOEM1LjQgNy42IDUuMSA2LjMgNSA1TTE5IDE5QzE3LjcgMTguOSAxNi40IDE4LjYgMTUuMiAxOC4yTDE2LjQgMTdDMTcuMiAxNy4yIDE4LjEgMTcuNCAxOSAxNy40VjE5TTE2IDNWNkgxM1Y4SDE2VjExSDE4VjhIMjFWNkgxOFYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUmVtb3ZlID0gXCJNNCAzQzMuNCAzIDMgMy40IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC42IDIxIDIxIDIwLjYgMjEgMjBWMTYuNUMyMSAxNS45IDIwLjYgMTUuNSAyMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45QzE2IDE0LjggMTUuNyAxNC45IDE1LjQgMTUuMUwxMy4yIDE3LjNDMTAuNCAxNS45IDguMSAxMy41IDYuNiAxMC43TDguOCA4LjVDOS4xIDguMiA5LjIgNy44IDkgNy41QzguNyA2LjQgOC41IDUuMiA4LjUgNEM4LjUgMy40IDguMSAzIDcuNSAzTTE5LjEgMy41TDE3IDUuNkwxNC45IDMuNUwxMy41IDQuOUwxNS42IDdMMTMuNSA5LjFMMTQuOSAxMC41TDE3IDguNEwxOS4xIDEwLjVMMjAuNSA5LjFMMTguNCA3TDIwLjUgNC45XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVSZW1vdmVPdXRsaW5lID0gXCJNMjAgMTUuNUMxOC44IDE1LjUgMTcuNSAxNS4zIDE2LjQgMTQuOUgxNi4xQzE1LjggMTQuOSAxNS42IDE1IDE1LjQgMTUuMkwxMy4yIDE3LjRDMTAuNCAxNS45IDggMTMuNiA2LjYgMTAuOEw4LjggOC42QzkuMSA4LjMgOS4yIDcuOSA5IDcuNkM4LjcgNi41IDguNSA1LjIgOC41IDRDOC41IDMuNSA4IDMgNy41IDNINEMzLjUgMyAzIDMuNSAzIDRDMyAxMy40IDEwLjYgMjEgMjAgMjFDMjAuNSAyMSAyMSAyMC41IDIxIDIwVjE2LjVDMjEgMTYgMjAuNSAxNS41IDIwIDE1LjVNNSA1SDYuNUM2LjYgNS45IDYuOCA2LjggNyA3LjZMNS44IDguOEM1LjQgNy42IDUuMSA2LjMgNSA1TTE5IDE5QzE3LjcgMTguOSAxNi40IDE4LjYgMTUuMiAxOC4yTDE2LjQgMTdDMTcuMiAxNy4yIDE4LjEgMTcuNCAxOSAxNy40VjE5TTE5LjEgMy41TDE3IDUuNkwxNC45IDMuNUwxMy41IDQuOUwxNS42IDdMMTMuNSA5LjFMMTQuOSAxMC41TDE3IDguNEwxOS4xIDEwLjVMMjAuNSA5LjFMMTguNCA3TDIwLjUgNC45TDE5LjEgMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUmV0dXJuID0gXCJNMjEsNlYxMUgxOS41VjcuNUgxMy44N0wxNi4zLDkuOTNMMTUuMjQsMTFMMTEsNi43NUwxNS4yNCwyLjVMMTYuMywzLjU3TDEzLjg3LDZIMjFNOC44Miw4LjU4QzkuMDgsOC4zMiA5LjE3LDcuOTMgOS4wNiw3LjU4QzguNjksNi40MiA4LjUsNS4yMiA4LjUsNEExLDEgMCAwLDAgNy41LDNINEExLDEgMCAwLDAgMyw0QTE3LDE3IDAgMCwwIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41QzE4Ljc5LDE1LjUgMTcuNTgsMTUuMzEgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOTEgMTUuNDMsMTUuMTdMMTMuMjMsMTcuMzdDMTAuMzksMTUuOTIgOC4wOSwxMy42MiA2LjY0LDEwLjc4TDguODIsOC41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZVJldHVybk91dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMjEgNlYxMUgxOS41VjcuNUgxMy44N0wxNi4zIDkuOTNMMTUuMjQgMTFMMTEgNi43NUwxNS4yNCAyLjVMMTYuMyAzLjU3TDEzLjg3IDZIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVSaW5nID0gXCJNMjMuNzEgMTYuNjdDMjAuNjYgMTMuNzggMTYuNTQgMTIgMTIgMTJTMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzEgMCAuMjguMTEuNTMuMjkuNzFsMi40OCAyLjQ4Yy4xOC4xOC40My4yOS43MS4yOS4yNyAwIC41Mi0uMTEuNy0uMjguNzktLjc0IDEuNjktMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41LjU2LS45di0zLjFjMS40NS0uNDggMy0uNzMgNC42LS43M3MzLjE1LjI1IDQuNi43MnYzLjFjMCAuMzkuMjMuNzQuNTYuOS45OC40OSAxLjg3IDEuMTIgMi42NiAxLjg1LjE4LjE4LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxYS45OS45OSAwIDAgMC0uMjktLjd6TTIxLjE2IDYuMjZsLTEuNDEtMS40MS0zLjU2IDMuNTUgMS40MSAxLjQxczMuNDUtMy41MiAzLjU2LTMuNTV6TTEzIDJoLTJ2NWgyVjJ6TTYuNCA5LjgxTDcuODEgOC40IDQuMjYgNC44NCAyLjg0IDYuMjZjLjExLjAzIDMuNTYgMy41NSAzLjU2IDMuNTV6XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVSaW5nT3V0bGluZSA9IFwiTTIzLjcxIDE2LjY3QzIwLjY2IDEzLjc4IDE2LjU0IDEyIDEyIDEyUzMuMzQgMTMuNzguMjkgMTYuNjdjLS4xOC4xOC0uMjkuNDMtLjI5LjcxIDAgLjI4LjExLjUzLjI5LjcxbDIuNDggMi40OGMuMTguMTguNDMuMjkuNzEuMjkuMjcgMCAuNTItLjExLjctLjI4Ljc5LS43NCAxLjY5LTEuMzYgMi42Ni0xLjg1LjMzLS4xNi41Ni0uNS41Ni0uOXYtMy4xYzEuNDUtLjQ4IDMtLjczIDQuNi0uNzNzMy4xNS4yNSA0LjYuNzJ2My4xYzAgLjM5LjIzLjc0LjU2LjkuOTguNDkgMS44NyAxLjEyIDIuNjYgMS44NS4xOC4xOC40My4yOC43LjI4LjI4IDAgLjUzLS4xMS43MS0uMjlsMi40OC0yLjQ4Yy4xOC0uMTguMjktLjQzLjI5LS43MWEuOTkuOTkgMCAwIDAtLjI5LS43em0tMTguMzEuNTZjLS42Ni4zNy0xLjI5LjgtMS44NyAxLjI3bC0xLjA3LTEuMDdjLjkxLS43NSAxLjktMS4zOSAyLjk1LTEuOXYxLjdINS40em0xNS4wNyAxLjI2Yy0uNTktLjQ4LTEuMjEtLjktMS44Ny0xLjI3di0xLjdjMS4wNC41MSAyLjAzIDEuMTUgMi45NCAxLjlsLTEuMDcgMS4wN3ptLjY5LTEyLjIzbC0xLjQxLTEuNDEtMy41NiAzLjU1IDEuNDEgMS40MXMzLjQ1LTMuNTIgMy41Ni0zLjU1ek0xMSAyaDJ2NWgtMlYyek02LjQgOS44MUw3LjgxIDguNCA0LjI2IDQuODQgMi44NCA2LjI2Yy4xMS4wMyAzLjU2IDMuNTUgMy41NiAzLjU1elwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUm90YXRlTGFuZHNjYXBlID0gXCJNOSwxSDNBMiwyIDAgMCwwIDEsM1YxNkEyLDIgMCAwLDAgMywxOEg5QTIsMiAwIDAsMCAxMSwxNlYzQTIsMiAwIDAsMCA5LDFNOSwxNUgzVjNIOVYxNU0yMSwxM0gxM1YxNUgyMVYyMUg5VjIwSDZWMjFBMiwyIDAgMCwwIDgsMjNIMjFBMiwyIDAgMCwwIDIzLDIxVjE1QTIsMiAwIDAsMCAyMSwxM00yMywxMEwxOSw4TDIwLjkxLDcuMDlDMTkuNzQsNC4zMSAxNywyLjUgMTQsMi41VjFBOSw5IDAgMCwxIDIzLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUm90YXRlUG9ydHJhaXQgPSBcIk05LDFIM0EyLDIgMCAwLDAgMSwzVjE2QTIsMiAwIDAsMCAzLDE4SDRWMTVIM1YzSDlWMTFIMTFWM0EyLDIgMCAwLDAgOSwxTTIzLDIxVjE1QTIsMiAwIDAsMCAyMSwxM0g4QTIsMiAwIDAsMCA2LDE1VjIxQTIsMiAwIDAsMCA4LDIzSDIxQTIsMiAwIDAsMCAyMywyMU05LDIxVjE1SDIxVjIxSDlNMjMsMTBIMjEuNUMyMS41LDcgMTkuNjksNC4yNyAxNi45MiwzLjA5TDE2LDVMMTQsMUE5LDkgMCAwLDEgMjMsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVTZXR0aW5ncyA9IFwiTTE5LDExSDIxVjlIMTlNMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA2LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU5QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNU0xNyw5SDE1VjExSDE3TTEzLDlIMTFWMTFIMTNWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZVNldHRpbmdzT3V0bGluZSA9IFwiTTIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEwLjQgMTUuOSA4IDEzLjYgNi42IDEwLjhMOC44IDguNkM5LjEgOC4zIDkuMiA3LjkgOSA3LjZDOC43IDYuNSA4LjUgNS4yIDguNSA0QzguNSAzLjUgOCAzIDcuNSAzSDRDMy41IDMgMyAzLjUgMyA0QzMgMTMuNCAxMC42IDIxIDIwIDIxQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxNi41QzIxIDE2IDIwLjUgMTUuNSAyMCAxNS41TTUgNUg2LjVDNi42IDUuOSA2LjggNi44IDcgNy42TDUuOCA4LjhDNS40IDcuNiA1LjEgNi4zIDUgNU0xOSAxOUMxNy43IDE4LjkgMTYuNCAxOC42IDE1LjIgMTguMkwxNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNFYxOU0xNyA5SDE1VjExSDE3TTEzIDlIMTFWMTFIMTNWOU0xOSAxMUgyMVY5SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lVm9pcCA9IFwiTTEzLDE3VjE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMlYyMkgxNUExLDEgMCAwLDEgMTQsMjNIMTBBMSwxIDAgMCwxIDksMjJIMlYyMEg5QTEsMSAwIDAsMSAxMCwxOUgxMVYxN0gxM00yMy43LDcuNjdDMjMuODgsNy44NSAyNCw4LjA5IDI0LDguMzdDMjQsOC42NSAyMy44OSw4LjkgMjMuNzEsOS4wOEwyMS4yMywxMS41NkMyMS4wNSwxMS43NCAyMC44LDExLjg1IDIwLjUsMTEuODVDMjAuMjUsMTEuODUgMjAsMTEuNzUgMTkuODIsMTEuNTdDMTksMTAuODQgMTguMTMsMTAuMjEgMTcuMTUsOS43MkMxNi44Miw5LjU2IDE2LjU5LDkuMjEgMTYuNTksOC44MlY1LjcyQzE1LjE0LDUuMjUgMTMuNTksNSAxMiw1QzEwLjQsNSA4Ljg1LDUuMjUgNy40LDUuNzNWOC44M0M3LjQsOS4yMyA3LjE3LDkuNTcgNi44NCw5LjczQzUuODcsMTAuMjIgNC45NywxMC44NCA0LjE4LDExLjU4QzQsMTEuNzUgMy43NSwxMS44NiAzLjUsMTEuODZDMy4yLDExLjg2IDIuOTUsMTEuNzUgMi43NywxMS41N0wwLjI5LDkuMDlDMC4xMSw4LjkxIDAsOC42NiAwLDguMzhDMCw4LjEgMC4xMSw3Ljg1IDAuMjksNy42N0MzLjM0LDQuNzggNy40NiwzIDEyLDNDMTYuNTMsMyAyMC42NSw0Ljc4IDIzLjcsNy42N00xMSwxMFYxNUgxMFYxMEgxMU0xMiwxMEgxNVYxM0gxM1YxNUgxMlYxME0xNCwxMlYxMUgxM1YxMkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaSA9IFwiTTQsNVY3SDZWMTlIOFY3SDE0VjE2QTMsMyAwIDAsMCAxNywxOUEzLDMgMCAwLDAgMjAsMTZIMThBMSwxIDAgMCwxIDE3LDE3QTEsMSAwIDAsMSAxNiwxNlY3SDE4VjVcIjtcclxuZXhwb3J0IHZhciBtZGlQaUJveCA9IFwiTTUsM0MzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTYsN0gxN1Y5SDE1VjE0QTEsMSAwIDAsMCAxNiwxNUExLDEgMCAwLDAgMTcsMTRIMTlBMywzIDAgMCwxIDE2LDE3QTMsMyAwIDAsMSAxMywxNFY5SDEwVjE3SDhWOUg2XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlIb2xlID0gXCJNNS42MiwyQzkuNSwyIDExLjU3LDQuMjkgMTEuNzcsNy45M0MxMi41LDMuNTcgMTUuOTMsNC4wOCAxNS45Myw0LjA4QzE2LjEsNi41NSAxNC4wNyw4LjA1IDExLjc3LDguMTdDMTEuMTIsNi44MSA3LjI1LDMuNDcgNy4yNSwzLjQ3QzcuMjMsMy41IDEwLjk3LDYuNzQgMTAuODMsOC4xNUM4LjMzLDcuODggNS44Miw2IDUuNjIsMk02LjA2LDEzLjExTDkuOTIsOS4yNUMxMS4wOSw4LjA4IDEzLDguMDggMTQuMTYsOS4yNUwxOCwxMy4xMUMxOS4xOSwxNC4yOCAxOS4xOSwxNi4xOCAxOCwxNy4zNUwxNC4xNiwyMS4yMUMxMywyMi4zOCAxMS4wOSwyMi4zOCA5LjkyLDIxLjIxTDYuMDYsMTcuMzVDNC44OSwxNi4xOCA0Ljg5LDE0LjI4IDYuMDYsMTMuMTFNOS4zOSwxOS41OUM5LjM5LDE4LjM2IDEwLjE1LDE2Ljg1IDEyLjA5LDE2Ljg1QzEzLjQsMTYuODUgMTQuODcsMTguMSAxNi4zMSwxNy45NkMxNC44NywxNy45MiAxMy41OSwxNi44NSAxMy41OSwxNS4xOUMxMy41OSwxMy44NiAxNC42OSwxMi45IDE0LjY5LDExLjM0QzE0LjYzLDEyLjMzIDEzLjgyLDEzLjc3IDEyLDEzLjc3QzEwLjU5LDEzLjc3IDkuNTUsMTIuNjMgNy44NywxMi42M0M4LjU4LDEyLjY3IDEwLjUsMTMuMyAxMC41LDE1LjM1QzEwLjUsMTcgOS4zOSwxNy41IDkuMzksMTkuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlhbm8gPSBcIk00LDNIMjBBMiwyIDAgMCwxIDIyLDVWMTlBMiwyIDAgMCwxIDIwLDIxSDRBMiwyIDAgMCwxIDIsMTlWNUEyLDIgMCAwLDEgNCwzTTQsNVYxOUg4VjEzSDYuNzVWNUg0TTksMTlIMTVWMTNIMTMuNzVWNUgxMC4yNVYxM0g5VjE5TTE2LDE5SDIwVjVIMTcuMjVWMTNIMTZWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlja2F4ZSA9IFwiTTE0Ljc5LDEwLjYyTDMuNSwyMS45TDIuMSwyMC41TDEzLjM4LDkuMjFMMTQuNzksMTAuNjJNMTkuMjcsNy43M0wxOS44Niw3LjE0TDE5LjA3LDYuMzVMMTkuNzEsNS43MUwxOC4yOSw0LjI5TDE3LjY1LDQuOTNMMTYuODYsNC4xNEwxNi4yNyw0LjczQzE0LjUzLDMuMzEgMTIuNTcsMi4xNyAxMC40NywxLjM3TDkuNjQsMy4xNkMxMS4zOSw0LjA4IDEzLDUuMTkgMTQuNSw2LjVMMTQsN0wxNywxMEwxNy41LDkuNUMxOC44MSwxMSAxOS45MiwxMi42MSAyMC44NCwxNC4zNkwyMi42MywxMy41M0MyMS44MywxMS40MyAyMC42OSw5LjQ3IDE5LjI3LDcuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGljdHVyZUluUGljdHVyZUJvdHRvbVJpZ2h0ID0gXCJNMTksMTFIMTFWMTdIMTlWMTFNMjMsMTlWNUMyMywzLjg4IDIyLjEsMyAyMSwzSDNBMiwyIDAgMCwwIDEsNVYxOUEyLDIgMCAwLDAgMywyMUgyMUEyLDIgMCAwLDAgMjMsMTlNMjEsMTlIM1Y0Ljk3SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpY3R1cmVJblBpY3R1cmVCb3R0b21SaWdodE91dGxpbmUgPSBcIk0xOSwxMUgxMVYxN0gxOVYxMU0xNywxNUgxM1YxM0gxN1YxNU0yMSwzSDNBMiwyIDAgMCwwIDEsNVYxOUEyLDIgMCAwLDAgMywyMUgyMUEyLDIgMCAwLDAgMjMsMTlWNUMyMywzLjg4IDIyLjEsMyAyMSwzTTIxLDE5SDNWNC45N0gyMVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaWN0dXJlSW5QaWN0dXJlVG9wUmlnaHQgPSBcIk0xOSw3SDExVjEzSDE5VjdNMjEsM0gzQTIsMiAwIDAsMCAxLDVWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjVBMiwyIDAgMCwwIDIxLDNNMjEsMTlIM1Y1SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpY3R1cmVJblBpY3R1cmVUb3BSaWdodE91dGxpbmUgPSBcIk0xOSw3SDExVjEzSDE5VjdNMTcsMTFIMTNWOUgxN1YxMU0yMSwzSDNBMiwyIDAgMCwwIDEsNVYxOUMxLDIwLjExIDEuOSwyMSAzLDIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QzIzLDMuOTEgMjIuMSwzIDIxLDNNMjEsMTlIM1Y1SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpZXIgPSBcIk0yMCwxOEMxOC42LDE4IDE3LjIsMTcuNSAxNiwxNi43QzEzLjYsMTguNCAxMC40LDE4LjQgOCwxNi43QzYuOCwxNy41IDUuNCwxOCA0LDE4SDJWMjBINEM1LjQsMjAgNi43LDE5LjYgOCwxOUMxMC41LDIwLjMgMTMuNSwyMC4zIDE2LDE5QzE3LjMsMTkuNiAxOC42LDIwIDIwLDIwSDIyVjE4SDIwTTIwLDEzSDE5VjE2LjlDMTguMywxNi44IDE3LjYsMTYuNiAxNywxNi4yVjEzSDEyVjE3QzExLjMsMTcgMTAuNywxNi45IDEwLDE2LjdWMTNINVYxNi45QzQuNywxNyA0LjMsMTcgNCwxN0gzVjEzSDJWMTFIM1Y5SDVWMTFIMTBWOUgxMlYxMUgxN1Y5SDE5VjExSDIwVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpZXJDcmFuZSA9IFwiTTIwLDIwQzE4LjYxLDIwIDE3LjIyLDE5LjUzIDE2LDE4LjY3QzEzLjU2LDIwLjM4IDEwLjQ0LDIwLjM4IDgsMTguNjdDNi43OCwxOS41MyA1LjM5LDIwIDQsMjBIMlYyMkg0QzUuMzcsMjIgNi43NCwyMS42NSA4LDIxQzEwLjUsMjIuMyAxMy41LDIyLjMgMTYsMjFDMTcuMjYsMjEuNjUgMTguNjIsMjIgMjAsMjJIMjJWMjBIMjBNMjAsNFYzQTEsMSAwIDAsMCAxOSwySDlWMUg2VjJINVY0SDZWMTNINVYxMUgzVjEzSDJWMTVIM1YxOUg0QzQuMzMsMTkgNC42NywxOC45NyA1LDE4LjkyVjE1SDEwVjE4LjY1QzEwLjY1LDE4Ljg1IDExLjMzLDE4Ljk1IDEyLDE4Ljk1VjE4LjkyTDEyLDE1SDEzVjEzSDEyVjExSDEwVjEzSDlWNEgxN1Y4LjYyQzE2LjUzLDguNzkgMTYuMTksOS4yMyAxNi4xOSw5Ljc2QzE2LjE5LDEwLjIgMTYuNDMsMTAuNiAxNi44LDEwLjgyVjEySDE3LjQyQzE3Ljc2LDEyIDE4LjAzLDEyLjI4IDE4LjAzLDEyLjYyQzE4LjAzLDEyLjk2IDE3Ljc2LDEzLjI0IDE3LjQyLDEzLjI0QzE3LjIsMTMuMjQgMTcsMTMuMTIgMTYuODgsMTIuOTNDMTYuNzEsMTIuNjQgMTYuMzQsMTIuNTQgMTYuMDUsMTIuNzFDMTUuNzUsMTIuODcgMTUuNjUsMTMuMjUgMTUuODIsMTMuNTVDMTYuMTUsMTQuMTEgMTYuNzYsMTQuNDcgMTcuNDIsMTQuNDdDMTguNDMsMTQuNDcgMTkuMjYsMTMuNjQgMTkuMjYsMTIuNjJDMTkuMjYsMTEuODQgMTguNzYsMTEuMTQgMTguMDMsMTAuODhWMTAuODJDMTguNDEsMTAuNiAxOC42NSwxMC4yIDE4LjY1LDkuNzZDMTguNjUsOS4zIDE4LjM4LDguOTEgMTgsOC43VjRIMjBNOCwxMS42Nkw3LDEyLjY2VjExLjI0TDgsMTAuMjRWMTEuNjZNOCw4LjcxTDcsOS43MVY4LjI5TDgsNy4yOVY4LjcxTTcsNi43MVY1LjI5TDgsNC4yOVY1LjcxTDcsNi43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaWcgPSBcIk05LjUsOUExLjUsMS41IDAgMCwwIDgsMTAuNUExLjUsMS41IDAgMCwwIDkuNSwxMkExLjUsMS41IDAgMCwwIDExLDEwLjVBMS41LDEuNSAwIDAsMCA5LjUsOU0xNC41LDlBMS41LDEuNSAwIDAsMCAxMywxMC41QTEuNSwxLjUgMCAwLDAgMTQuNSwxMkExLjUsMS41IDAgMCwwIDE2LDEwLjVBMS41LDEuNSAwIDAsMCAxNC41LDlNMTIsNEwxMi42OCw0LjAzQzEzLjYyLDMuMjQgMTQuODIsMi41OSAxNS43MiwyLjM1QzE3LjU5LDEuODUgMjAuODgsMi4yMyAyMS4zMSwzLjgzQzIxLjYyLDUgMjAuNiw2LjQ1IDE5LjAzLDcuMzhDMjAuMjYsOC45MiAyMSwxMC44NyAyMSwxM0E5LDkgMCAwLDEgMTIsMjJBOSw5IDAgMCwxIDMsMTNDMywxMC44NyAzLjc0LDguOTIgNC45Nyw3LjM4QzMuNCw2LjQ1IDIuMzgsNSAyLjY5LDMuODNDMy4xMiwyLjIzIDYuNDEsMS44NSA4LjI4LDIuMzVDOS4xOCwyLjU5IDEwLjM4LDMuMjQgMTEuMzIsNC4wM0wxMiw0TTEwLDE2QTEsMSAwIDAsMSAxMSwxN0ExLDEgMCAwLDEgMTAsMThBMSwxIDAgMCwxIDksMTdBMSwxIDAgMCwxIDEwLDE2TTE0LDE2QTEsMSAwIDAsMSAxNSwxN0ExLDEgMCAwLDEgMTQsMThBMSwxIDAgMCwxIDEzLDE3QTEsMSAwIDAsMSAxNCwxNk0xMiwxM0M5LjI0LDEzIDcsMTUuMzQgNywxN0M3LDE4LjY2IDkuMjQsMjAgMTIsMjBDMTQuNzYsMjAgMTcsMTguNjYgMTcsMTdDMTcsMTUuMzQgMTQuNzYsMTMgMTIsMTNNNy43Niw0LjI4QzcuMzEsNC4xNiA0LjU5LDQuMzUgNC41OSw0LjM1QzQuNTksNC4zNSA2LjgsNi4xIDcuMjQsNi4yMkM3LjY5LDYuMzQgOS43Nyw2LjQzIDkuOTEsNS45QzEwLjA2LDUuMzYgOC4yLDQuNCA3Ljc2LDQuMjhNMTYuMjQsNC4yOEMxNS44LDQuNCAxMy45NCw1LjM2IDE0LjA5LDUuOUMxNC4yMyw2LjQzIDE2LjMxLDYuMzQgMTYuNzYsNi4yMkMxNy4yLDYuMSAxOS40MSw0LjM1IDE5LjQxLDQuMzVDMTkuNDEsNC4zNSAxNi42OSw0LjE2IDE2LjI0LDQuMjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlnVmFyaWFudCA9IFwiTTIwIDEyQzIwIDguNjkgMTYuNDIgNiAxMiA2QzExLjE1IDYgMTAuMzQgNi4xIDkuNTcgNi4yOEw3IDVWNy4zMkM1LjUgOC4yMiA0LjQ1IDkuNSA0LjEyIDExSDJWMTVINS4wOEM1LjU4IDE1LjY1IDYuMjMgMTYuMjIgNyAxNi42OFYyMEg5VjE3LjU2QzkuOTMgMTcuODQgMTAuOTQgMTggMTIgMThTMTQuMDcgMTcuODQgMTUgMTcuNTZWMjBIMTdWMTYuNjhDMTguMTUgMTYgMTkuMDMgMTUuMDYgMTkuNTQgMTRIMjJWMTJIMjBNNyAxMUM2LjQ1IDExIDYgMTAuNTUgNiAxMFM2LjQ1IDkgNyA5IDggOS40NSA4IDEwIDcuNTUgMTEgNyAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaWdWYXJpYW50T3V0bGluZSA9IFwiTTkgMTJDOC40IDEyIDggMTEuNiA4IDExUzguNCAxMCA5IDEwIDEwIDEwLjQgMTAgMTEgOS42IDEyIDkgMTJNMjIgMTJIMjBDMjAgOC43IDE2LjQgNiAxMiA2QzExLjIgNiAxMC4zIDYuMSA5LjYgNi4zTDcgNVY3LjNDNS41IDguMiA0LjUgOS41IDQuMSAxMUgyVjE1SDUuMUM1LjYgMTUuNiA2LjIgMTYuMiA3IDE2LjdWMjBIOVYxNy42QzkuOSAxNy45IDEwLjkgMTggMTIgMThTMTQuMSAxNy44IDE1IDE3LjZWMjBIMTdWMTYuN0MxOC4xIDE2IDE5IDE1LjEgMTkuNSAxNEgyMlYxMk0xMiAxNkM4LjcgMTYgNiAxNC4yIDYgMTJTOC43IDggMTIgOCAxOCA5LjggMTggMTIgMTUuMyAxNiAxMiAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQaWdneUJhbmsgPSBcIk0xMyAxQzE0LjY2IDEgMTYgMi4zNCAxNiA0UzE0LjY2IDcgMTMgNyAxMCA1LjY2IDEwIDQgMTEuMzQgMSAxMyAxTTIwIDE0QzIwIDExLjY0IDE4LjE3IDkuNiAxNS41IDguNjJDMTUgOS40NSAxNC4wNiAxMCAxMyAxMEMxMS43NiAxMCAxMC42OSA5LjI0IDEwLjI0IDguMTdDMTAgOC4yIDkuNzggOC4yMyA5LjU3IDguMjlMNyA3VjkuMzJDNS41IDEwLjIyIDQuNDUgMTEuNSA0LjEyIDEzSDJWMTdINS4wOEM1LjU4IDE3LjY1IDYuMjMgMTguMjIgNyAxOC42OFYyMkg5VjE5LjU2QzkuOTMgMTkuODQgMTAuOTQgMjAgMTIgMjBTMTQuMDcgMTkuODQgMTUgMTkuNTZWMjJIMTdWMTguNjhDMTguMTUgMTggMTkuMDMgMTcuMDYgMTkuNTQgMTZIMjJWMTRIMjBNNyAxM0M2LjQ1IDEzIDYgMTIuNTUgNiAxMlM2LjQ1IDExIDcgMTEgOCAxMS40NSA4IDEyIDcuNTUgMTMgNyAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQaWdneUJhbmtPdXRsaW5lID0gXCJNMjIgMTRIMjBDMjAgMTEuNiAxOC4yIDkuNiAxNS41IDguNkMxNSA5LjQgMTQuMSAxMCAxMyAxMEMxMS43IDEwIDEwLjcgOS4yIDEwLjIgOC4yQzEwIDguMiA5LjggOC4zIDkuNSA4LjNMNyA3VjkuM0M1LjUgMTAuMiA0LjQgMTEuNSA0LjEgMTNIMlYxN0g1LjFDNS42IDE3LjYgNi4yIDE4LjIgNyAxOC43VjIySDlWMTkuNkM5LjkgMTkuOSAxMC45IDIwIDEyIDIwUzE0LjEgMTkuOCAxNSAxOS42VjIySDE3VjE4LjdDMTguMSAxOCAxOSAxNy4xIDE5LjUgMTZIMjJWMTRNMTIgMThDOC43IDE4IDYgMTYuMiA2IDE0QzYgMTIuNSA3LjQgMTEuMSA5LjQgMTAuNEMxMC4zIDExLjQgMTEuNiAxMiAxMyAxMkMxNC4xIDEyIDE1LjEgMTEuNyAxNiAxMUMxNy4zIDExLjggMTggMTIuOSAxOCAxNEMxOCAxNi4yIDE1LjMgMTggMTIgMThNMTMgM0MxMy42IDMgMTQgMy40IDE0IDRTMTMuNiA1IDEzIDUgMTIgNC42IDEyIDQgMTIuNCAzIDEzIDNNMTMgMUMxMS4zIDEgMTAgMi4zIDEwIDRTMTEuMyA3IDEzIDcgMTYgNS43IDE2IDQgMTQuNyAxIDEzIDFNMTAgMTNDMTAgMTMuNiA5LjYgMTQgOSAxNFM4IDEzLjYgOCAxMyA4LjQgMTIgOSAxMiAxMCAxMi40IDEwIDEzXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlsbCA9IFwiTTQuMjIsMTEuMjlMMTEuMjksNC4yMkMxMy42NCwxLjg4IDE3LjQzLDEuODggMTkuNzgsNC4yMkMyMi4xMiw2LjU2IDIyLjEyLDEwLjM2IDE5Ljc4LDEyLjcxTDEyLjcxLDE5Ljc4QzEwLjM2LDIyLjEyIDYuNTYsMjIuMTIgNC4yMiwxOS43OEMxLjg4LDE3LjQzIDEuODgsMTMuNjQgNC4yMiwxMS4yOU01LjY0LDEyLjcxQzQuNTksMTMuNzUgNC4yNCwxNS4yNCA0LjYsMTYuNTdMMTAuNTksMTAuNTlMMTQuODMsMTQuODNMMTguMzYsMTEuMjlDMTkuOTMsOS43MyAxOS45Myw3LjIgMTguMzYsNS42NEMxNi44LDQuMDcgMTQuMjcsNC4wNyAxMi43MSw1LjY0TDUuNjQsMTIuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlsbGFyID0gXCJNNiw1SDE4QTEsMSAwIDAsMSAxOSw2QTEsMSAwIDAsMSAxOCw3SDZBMSwxIDAgMCwxIDUsNkExLDEgMCAwLDEgNiw1TTIxLDJWNEgzVjJIMjFNMTUsOEgxN1YyMkgxNVY4TTcsOEg5VjIySDdWOE0xMSw4SDEzVjIySDExVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGluID0gXCJNMTYsMTJWNEgxN1YySDdWNEg4VjEyTDYsMTRWMTZIMTEuMlYyMkgxMi44VjE2SDE4VjE0TDE2LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpbk9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTIuOCwxNi4wN1YyMkgxMS4yVjE2SDZWMTRMOCwxMlYxMS4yN0wyLDUuMjdNMTYsMTJMMTgsMTRWMTZIMTcuODJMOCw2LjE4VjRIN1YySDE3VjRIMTZWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGluT2ZmT3V0bGluZSA9IFwiTTgsNi4yVjRIN1YySDE3VjRIMTZWMTJMMTgsMTRWMTZIMTcuOEwxNCwxMi4yVjRIMTBWOC4yTDgsNi4yTTIwLDIwLjdMMTguNywyMkwxMi44LDE2LjFWMjJIMTEuMlYxNkg2VjE0TDgsMTJWMTEuM0wyLDUuM0wzLjMsNEwyMCwyMC43TTguOCwxNEgxMC42TDkuNywxMy4xTDguOCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaW5PdXRsaW5lID0gXCJNMTYsMTJWNEgxN1YySDdWNEg4VjEyTDYsMTRWMTZIMTEuMlYyMkgxMi44VjE2SDE4VjE0TDE2LDEyTTguOCwxNEwxMCwxMi44VjRIMTRWMTIuOEwxNS4yLDE0SDguOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaW5lVHJlZSA9IFwiTTEwLDIxVjE4SDNMOCwxM0g1TDEwLDhIN0wxMiwzTDE3LDhIMTRMMTksMTNIMTZMMjEsMThIMTRWMjFIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGluZVRyZWVCb3ggPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMjBBMiwyIDAgMCwxIDIwLDIySDRBMiwyIDAgMCwxIDIsMjBWNEEyLDIgMCAwLDEgNCwyTTExLDE5SDEzVjE3SDE4TDE0LDEzSDE3TDEzLDlIMTZMMTIsNUw4LDlIMTFMNywxM0gxMEw2LDE3SDExVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpbmVUcmVlRmlyZSA9IFwiTTIyLjE0IDE0Ljg0TDIyLjEyIDE0Ljg1QzIyLjM1IDE1LjEzIDIyLjU1IDE1LjQ0IDIyLjcgMTUuNzdMMjIuNzkgMTUuOTZDMjMuNSAxNy42NSAyMyAxOS42IDIxLjY5IDIwLjgyQzIwLjUgMjEuOTEgMTguODQgMjIuMiAxNy4zIDIyQzE1Ljg0IDIxLjgyIDE0LjUgMjAuOSAxMy43MyAxOS42M0MxMy41IDE5LjI0IDEzLjMgMTguOCAxMy4yIDE4LjM1QzEzLjA3IDE4IDEzLjAzIDE3LjYyIDEzIDE3LjI1QzEyLjkxIDE1LjY1IDEzLjU1IDEzLjk1IDE0Ljc2IDEyLjk1QzE0LjIxIDE0LjE2IDE0LjM0IDE1LjY3IDE1LjE1IDE2LjcyTDE1LjI2IDE2Ljg1QzE1LjQgMTYuOTcgMTUuNTcgMTcgMTUuNzMgMTYuOTRDMTUuODggMTYuODggMTYgMTYuNzMgMTYgMTYuNTdMMTUuOTMgMTYuMzNDMTUuMDUgMTQgMTUuNzkgMTEuMyAxNy42NiA5Ljc3QzE4LjE3IDkuMzUgMTguOCA4Ljk3IDE5LjQ2IDguOEMxOC43OCAxMC4xNiAxOSAxMS45NCAyMC4wOSAxM0MyMC41NSAxMy41IDIxLjExIDEzLjc5IDIxLjU4IDE0LjIzTDIyLjE0IDE0Ljg0TTE5Ljg2IDE5LjVMMTkuODUgMTkuNDdDMjAuMyAxOS4wOCAyMC41NSAxOC40MSAyMC41MyAxNy44MUwyMC41IDE3LjVDMjAuMyAxNi41IDE5LjQzIDE2LjE2IDE4Ljg3IDE1LjQzQzE4LjcgMTUuMjEgMTguNTUgMTQuOTMgMTguNDQgMTQuNjVDMTguMjIgMTUuMTUgMTguMiAxNS42MiAxOC4yOSAxNi4xNkMxOC4zOSAxNi43MyAxOC42MSAxNy4yMiAxOC41IDE3LjgxQzE4LjM0IDE4LjQ2IDE3LjgzIDE5LjExIDE2Ljk0IDE5LjMyQzE3LjQ0IDE5LjgxIDE4LjI1IDIwLjIgMTkuMDYgMTkuOTJDMTkuMzIgMTkuODUgMTkuNjUgMTkuNjYgMTkuODYgMTkuNU05IDIxVjE4SDJMNyAxM0g0TDkgOEg2TDExIDNMMTYgOEgxM0wxNC44MiA5LjgyQzEyLjU1IDExLjA2IDExIDEzLjU5IDExIDE2LjVDMTEgMTguMTkgMTEuNSAxOS43NSAxMi40IDIxSDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGludGVyZXN0ID0gXCJNOS4wNCwyMS41NEMxMCwyMS44MyAxMC45NywyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyQTEwLDEwIDAgMCwwIDIsMTJDMiwxNi4yNSA0LjY3LDE5LjkgOC40NCwyMS4zNEM4LjM1LDIwLjU2IDguMjYsMTkuMjcgOC40NCwxOC4zOEw5LjU5LDEzLjQ0QzkuNTksMTMuNDQgOS4zLDEyLjg2IDkuMywxMS45NEM5LjMsMTAuNTYgMTAuMTYsOS41MyAxMS4xNCw5LjUzQzEyLDkuNTMgMTIuNCwxMC4xNiAxMi40LDEwLjk3QzEyLjQsMTEuODMgMTEuODMsMTMuMDYgMTEuNTQsMTQuMjRDMTEuMzcsMTUuMjIgMTIuMDYsMTYuMDggMTMuMDYsMTYuMDhDMTQuODQsMTYuMDggMTYuMjIsMTQuMTggMTYuMjIsMTEuNUMxNi4yMiw5LjEgMTQuNSw3LjQ2IDEyLjAzLDcuNDZDOS4yMSw3LjQ2IDcuNTUsOS41NiA3LjU1LDExLjc3QzcuNTUsMTIuNjMgNy44MywxMy41IDguMjksMTQuMDdDOC4zOCwxNC4xMyA4LjM4LDE0LjIxIDguMzUsMTQuMzZMOC4wNiwxNS40NUM4LjA2LDE1LjYyIDcuOTUsMTUuNjggNy43OCwxNS41NkM2LjUsMTUgNS43NiwxMy4xOCA1Ljc2LDExLjcxQzUuNzYsOC41NSA4LDUuNjggMTIuMzIsNS42OEMxNS43Niw1LjY4IDE4LjQ0LDguMTUgMTguNDQsMTEuNDNDMTguNDQsMTQuODcgMTYuMzEsMTcuNjMgMTMuMjYsMTcuNjNDMTIuMjksMTcuNjMgMTEuMzQsMTcuMTEgMTEsMTYuNUwxMC4zMywxOC44N0MxMC4xLDE5LjczIDkuNDcsMjAuODggOS4wNCwyMS41N1YyMS41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaW53aGVlbCA9IFwiTTEyLDEyQzEyLDkgMTQuNSw2LjUgMTcuNSw2LjVDMjAuNSw2LjUgMjMsOSAyMywxMkgxMk0xMiwxMkMxMiwxNSA5LjUsMTcuNSA2LjUsMTcuNUMzLjUsMTcuNSAxLDE1IDEsMTJIMTJNMTIsMTJDOSwxMiA2LjUsOS41IDYuNSw2LjVDNi41LDMuNSA5LDEgMTIsMVYxMk0xMiwxMkMxNSwxMiAxNy41LDE0LjUgMTcuNSwxNy41QzE3LjUsMjAuNSAxNSwyMyAxMiwyM1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQaW53aGVlbE91dGxpbmUgPSBcIk0xMiwyM0gxMVYxNi40M0M5LjkzLDE3LjQgOC41LDE4IDcsMThDMy43NSwxOCAxLDE1LjI1IDEsMTJWMTFINy41N0M2LjYsOS45MyA2LDguNSA2LDdDNiwzLjc1IDguNzUsMSAxMiwxSDEzVjcuNTdDMTQuMDcsNi42IDE1LjUsNiAxNyw2QzIwLjI1LDYgMjMsOC43NSAyMywxMlYxM0gxNi40M0MxNy40LDE0LjA3IDE4LDE1LjUgMTgsMTdDMTgsMjAuMjUgMTUuMjUsMjMgMTIsMjNNMTMsMTMuMTNWMjAuODdDMTQuNywyMC40MSAxNiwxOC44MyAxNiwxN0MxNiwxNS4xNyAxNC43LDEzLjU5IDEzLDEzLjEzTTMuMTMsMTNDMy41OSwxNC43IDUuMTcsMTYgNywxNkM4LjgzLDE2IDEwLjQxLDE0LjcgMTAuODcsMTNIMy4xM00xMy4xMywxMUgyMC44N0MyMC40MSw5LjMgMTguODIsOCAxNyw4QzE1LjE4LDggMTMuNTksOS4zIDEzLjEzLDExTTExLDMuMTNDOS4zLDMuNTkgOCw1LjE4IDgsN0M4LDguODIgOS4zLDEwLjQxIDExLDEwLjg3VjMuMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlwZSA9IFwiTTIyLDE0SDIwVjE2SDE0VjEzSDE2VjExSDE0VjZBMiwyIDAgMCwwIDEyLDRINFYySDJWMTBINFY4SDEwVjExSDhWMTNIMTBWMThBMiwyIDAgMCwwIDEyLDIwSDIwVjIySDIyXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlwZURpc2Nvbm5lY3RlZCA9IFwiTTE2LDlWMTFIOFY5SDEwVjhINFYxMEgyVjJINFY0SDEyQTIsMiAwIDAsMSAxNCw2VjlIMTZNMTAsMTVWMThBMiwyIDAgMCwwIDEyLDIwSDIwVjIySDIyVjE0SDIwVjE2SDE0VjE1SDE2VjEzSDhWMTVIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlwZUxlYWsgPSBcIk0yLDVWMTNINFYxMUgxMEwxMiw5TDEwLDdINFY1SDJNMjAsNVY3SDEyTDE0LDlMMTIsMTFIMjBWMTNIMjJWNUgyME0xMiwxM0MxMiwxMyAxMCwxNS4xNyAxMCwxNi41QTIsMiAwIDAsMCAxMiwxOC41QTIsMiAwIDAsMCAxNCwxNi41QzE0LDE1LjE3IDEyLDEzIDEyLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpcGVXcmVuY2ggPSBcIk0xNi4xNyA1LjYzTDE0LjA2IDcuNzhMMTEuOTEgNS42M0wxNi4xNyAxLjQxTDE5LjY5IDQuOTJDMjAuODYgNi4wOSAyMC44NiA4IDE5LjY5IDkuMTlMMTYuMTcgNS42M000LjgzIDEyLjdMNyAxNC44MUwxMC41IDExLjNMOC4zOSA5LjE5TDQuODMgMTIuN00xNS40NyA3Ljc4TDE5IDExLjNMMTcuNTggMTIuN0wxNi44OCAxMkw2LjIzIDIyLjU5TDMuNDIgMTkuNzhMMTEuOTEgMTEuM0w3LjY5IDcuMDNMOS44IDQuOTJMMTQuMDYgOS4xOUwxNS40NyA3Ljc4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpcmF0ZSA9IFwiTTguMiwxMi4xQzcuOSwxMi4zIDcuNywxMi43IDcuOCwxM0M3LjgsMTMuNyA4LjUsMTQuMiA5LjEsMTQuMkM5LjcsMTQuMiAxMC4zLDEzLjcgMTAuMywxM0M5LjcsMTIuNiA5LDEyLjMgOC4yLDEyLjFNMjIsMTFMMjMsN0MyMyw3IDIxLDcgMTgsNUMxNSwzIDE1LDEgMTIsMUM5LDEgOSwzIDYsNUMzLDcgMSw3IDEsN0wyLDExSDIuMUMyLDExLjMgMiwxMS43IDIsMTJDMiwxNS41IDMuOCwxOC42IDYuNSwyMC40TDYsMjEuM0MxMi40LDI1LjQgMTgsMjEuMyAxOCwyMS4zTDE3LjUsMjAuNEMyMC4yLDE4LjYgMjIsMTUuNSAyMiwxMkMyMiwxMS43IDIyLDExLjMgMjIsMTFNMTEuMyw0LjVMOS45LDMuMUwxMC42LDIuNEwxMiwzLjhMMTMuNCwyLjRMMTQuMSwzLjFMMTIuNyw0LjVMMTQuMSw1LjlMMTMuNCw2LjZMMTIsNS4yTDEwLjYsNi42TDkuOSw1LjlMMTEuMyw0LjVNOS4zLDguNUMxMC4zLDguMiAxMS4zLDggMTIsOEMxNC4yLDggMTcuOSw5LjYgMTkuOCwxMC40QzE5LjksMTAuNyAxOS45LDExIDE5LjksMTEuM0w5LjMsOC41TTEzLjYsMTkuMUMxMi45LDE5LjUgMTIuMiwxOS44IDExLjQsMTkuOUMxMC45LDE5LjUgMTAuOSwxOC43IDExLjQsMTguM0MxMS44LDE3LjkgMTIuNywxNy43IDEzLjIsMTguMkMxMy41LDE4LjMgMTMuNiwxOC44IDEzLjYsMTkuMU0yMCwxMy40QzE5LjUsMTUuNSAxOC4yLDE3LjQgMTYuNSwxOC42TDE1LDE2SDlMNy41LDE4LjZDNS40LDE3LjIgNCwxNC44IDQsMTJDNCwxMS41IDQuMSwxMSA0LjIsMTAuNUM0LjcsMTAuMyA1LjMsMTAgNiw5LjdMMTMuMSwxMS42VjE0QzEzLjEsMTQuNSAxMy41LDE1IDE0LjEsMTVIMTYuMUMxNi42LDE1IDE3LjEsMTQuNiAxNy4xLDE0VjEyLjZMMjAsMTMuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaXN0b2wgPSBcIk03LDVIMjNWOUgyMlYxMEgxNkExLDEgMCAwLDAgMTUsMTFWMTJBMiwyIDAgMCwxIDEzLDE0SDkuNjJDOS4yNCwxNCA4Ljg5LDE0LjIyIDguNzIsMTQuNTZMNi4yNywxOS40NUM2LjEsMTkuNzkgNS43NiwyMCA1LjM4LDIwSDJDMiwyMCAtMSwyMCAzLDE0QzMsMTQgNiwxMCAyLDEwVjVIM0wzLjUsNEg2LjVMNyw1TTE0LDEyVjExQTEsMSAwIDAsMCAxMywxMEgxMkMxMiwxMCAxMSwxMSAxMiwxMkEyLDIgMCAwLDEgMTAsMTBBMSwxIDAgMCwwIDksMTFWMTJBMSwxIDAgMCwwIDEwLDEzSDEzQTEsMSAwIDAsMCAxNCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQaXN0b24gPSBcIk0xMywxNi4xOEMxMy41LDE2LjM1IDEzLjksMTYuNjMgMTQuMjMsMTdIMTVWMjFIMTQuMjFDMTMuODksMjEuMzUgMTMuNSwyMS42MyAxMywyMS44QzExLjg1LDIyLjIyIDEwLjU4LDIxLjg3IDkuNzgsMjFIOVYxN0g5Ljc3QzEwLjEsMTYuNjMgMTAuNSwxNi4zNSAxMSwxNi4xOFYxMkgxM1YxNi4xOE0xMiwyMEExLDEgMCAwLDAgMTMsMTlBMSwxIDAgMCwwIDEyLDE4QTEsMSAwIDAsMCAxMSwxOUExLDEgMCAwLDAgMTIsMjBNMTcsNEgxNVY1SDE3VjExSDdWNUg5VjRIN1YySDE3VjRNMTIsOUExLDEgMCAwLDAgMTMsOEExLDEgMCAwLDAgMTIsN0ExLDEgMCAwLDAgMTEsOEExLDEgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaXRjaGZvcmsgPSBcIk0xNS45IC45TDEzLjEgMy43QzEyLjMgNC41IDEyLjMgNS43IDEzLjEgNi41TDE0LjUgOEw5LjIgMTMuNEw3LjggMTJDNyAxMS4yIDUuOCAxMS4yIDUgMTJMMSAxNkwyLjQgMTcuNEw2LjQgMTMuNEw3LjggMTQuOEwzLjggMTguOEw1LjIgMjAuMkw5LjIgMTYuMkwxMC42IDE3LjZMOS45IDE4LjRMNi43IDIxLjZMOCAyM0wxMiAxOUMxMi44IDE4LjIgMTIuOCAxNyAxMiAxNi4yTDEwLjYgMTQuOEwxNS45IDkuNEwxNy4zIDEwLjhDMTguMSAxMS42IDE5LjMgMTEuNiAyMC4xIDEwLjhMMjMgOEwxNS45IC45TTE4LjcgOS40TDE0LjUgNS4yTDE1LjkgMy44TDIwLjEgOEwxOC43IDkuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaXp6YSA9IFwiTTEyLDE1QTIsMiAwIDAsMSAxMCwxM0MxMCwxMS44OSAxMC45LDExIDEyLDExQTIsMiAwIDAsMSAxNCwxM0EyLDIgMCAwLDEgMTIsMTVNNyw3QzcsNS44OSA3Ljg5LDUgOSw1QTIsMiAwIDAsMSAxMSw3QTIsMiAwIDAsMSA5LDlDNy44OSw5IDcsOC4xIDcsN00xMiwyQzguNDMsMiA1LjIzLDMuNTQgMyw2TDEyLDIyTDIxLDZDMTguNzgsMy41NCAxNS41NywyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheSA9IFwiTTgsNS4xNFYxOS4xNEwxOSwxMi4xNEw4LDUuMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUJveCA9IFwiTTE5IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy44OSAyMC4xIDMgMTkgM00xMCAxNlY4TDE1IDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUJveE11bHRpcGxlID0gXCJNNCw2SDJWMjBBMiwyIDAgMCwwIDQsMjJIMThWMjBINFY2TTIwLDJIOEEyLDIgMCAwLDAgNiw0VjE2QTIsMiAwIDAsMCA4LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTEyLDE0LjVWNS41TDE4LDEwTDEyLDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUJveE11bHRpcGxlT3V0bGluZSA9IFwiTTQgNkgyVjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgxOFYyMEg0VjZNMjAgNFYxNkg4VjRIMjBNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjEgNi45IDE4IDggMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTEyIDE0LjVWNS41TDE4IDEwTDEyIDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUJveE91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xMCw4VjE2TDE1LDEyTDEwLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUNpcmNsZSA9IFwiTTEwLDE2LjVWNy41TDE2LDEyTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsYXlDaXJjbGVPdXRsaW5lID0gXCJNMTIsMjBDNy41OSwyMCA0LDE2LjQxIDQsMTJDNCw3LjU5IDcuNTksNCAxMiw0QzE2LjQxLDQgMjAsNy41OSAyMCwxMkMyMCwxNi40MSAxNi40MSwyMCAxMiwyME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMCwxNi41TDE2LDEyTDEwLDcuNVYxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsYXlOZXR3b3JrID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU0xMCwxNFY2TDE1LDEwTDEwLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsYXlOZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdNMTAsMTRWNkwxNSwxMEwxMCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5T3V0bGluZSA9IFwiTTguNSw4LjY0TDEzLjc3LDEyTDguNSwxNS4zNlY4LjY0TTYuNSw1VjE5TDE3LjUsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5UGF1c2UgPSBcIk0zLDVWMTlMMTEsMTJNMTMsMTlIMTZWNUgxM00xOCw1VjE5SDIxVjVcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5UHJvdGVjdGVkQ29udGVudCA9IFwiTTIsNVYxOEgxMVYxNkg0VjdIMTdWMTFIMTlWNUgyTTksOVYxNEwxMi41LDExLjVMOSw5TTIxLjA0LDExLjY3TDE2LjA5LDE2LjYyTDEzLjk2LDE0LjVMMTIuNTUsMTUuOTFMMTYuMDksMTkuNDVMMjIuNDUsMTMuMDlMMjEuMDQsMTEuNjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheVNwZWVkID0gXCJNMTMsMi4wNVY0LjA1QzE3LjM5LDQuNTkgMjAuNSw4LjU4IDE5Ljk2LDEyLjk3QzE5LjUsMTYuNjEgMTYuNjQsMTkuNSAxMywxOS45M1YyMS45M0MxOC41LDIxLjM4IDIyLjUsMTYuNSAyMS45NSwxMUMyMS41LDYuMjUgMTcuNzMsMi41IDEzLDIuMDNWMi4wNU01LjY3LDE5Ljc0QzcuMTgsMjEgOS4wNCwyMS43OSAxMSwyMlYyMEM5LjU4LDE5LjgyIDguMjMsMTkuMjUgNy4xLDE4LjM3TDUuNjcsMTkuNzRNNy4xLDUuNzRDOC4yMiw0Ljg0IDkuNTcsNC4yNiAxMSw0LjA2VjIuMDZDOS4wNSwyLjI1IDcuMTksMyA1LjY3LDQuMjZMNy4xLDUuNzRNNS42OSw3LjFMNC4yNiw1LjY3QzMsNy4xOSAyLjI1LDkuMDQgMi4wNSwxMUg0LjA1QzQuMjQsOS41OCA0LjgsOC4yMyA1LjY5LDcuMU00LjA2LDEzSDIuMDZDMi4yNiwxNC45NiAzLjAzLDE2LjgxIDQuMjcsMTguMzNMNS42OSwxNi45QzQuODEsMTUuNzcgNC4yNCwxNC40MiA0LjA2LDEzTTEwLDE2LjVMMTYsMTJMMTAsNy41VjE2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheWxpc3RDaGVjayA9IFwiTTE0LDEwSDJWMTJIMTRWMTBNMTQsNkgyVjhIMTRWNk0yLDE2SDEwVjE0SDJWMTZNMjEuNSwxMS41TDIzLDEzTDE2LDIwTDExLjUsMTUuNUwxMywxNEwxNiwxN0wyMS41LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheWxpc3RFZGl0ID0gXCJNMiw2VjhIMTRWNkgyTTIsMTBWMTJIMTRWMTBIMk0yMC4wNCwxMC4xM0MxOS45LDEwLjEzIDE5Ljc2LDEwLjE5IDE5LjY1LDEwLjNMMTguNjUsMTEuM0wyMC43LDEzLjM1TDIxLjcsMTIuMzVDMjEuOTIsMTIuMTQgMjEuOTIsMTEuNzkgMjEuNywxMS41OEwyMC40MiwxMC4zQzIwLjMxLDEwLjE5IDIwLjE4LDEwLjEzIDIwLjA0LDEwLjEzTTE4LjA3LDExLjg4TDEyLDE3Ljk0VjIwSDE0LjA2TDIwLjEyLDEzLjkzTDE4LjA3LDExLjg4TTIsMTRWMTZIMTBWMTRIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5bGlzdE1pbnVzID0gXCJNMiwxNkgxMFYxNEgyTTEyLDE0VjE2SDIyVjE0TTE0LDZIMlY4SDE0TTE0LDEwSDJWMTJIMTRWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheWxpc3RNdXNpYyA9IFwiTTE1LDZIM1Y4SDE1VjZNMTUsMTBIM1YxMkgxNVYxME0zLDE2SDExVjE0SDNWMTZNMTcsNlYxNC4xOEMxNi42OSwxNC4wNyAxNi4zNSwxNCAxNiwxNEEzLDMgMCAwLDAgMTMsMTdBMywzIDAgMCwwIDE2LDIwQTMsMyAwIDAsMCAxOSwxN1Y4SDIyVjZIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheWxpc3RNdXNpY091dGxpbmUgPSBcIk0xNSw2VjhIM1Y2SDE1TTE1LDEwVjEySDNWMTBIMTVNMywxNlYxNEgxMVYxNkgzTTE3LDZIMjJWOEgxOVYxN0EzLDMgMCAwLDEgMTYsMjBBMywzIDAgMCwxIDEzLDE3QTMsMyAwIDAsMSAxNiwxNEMxNi4zNSwxNCAxNi42OSwxNC4wNyAxNywxNC4xOFY2TTE2LDE2QTEsMSAwIDAsMCAxNSwxN0ExLDEgMCAwLDAgMTYsMThBMSwxIDAgMCwwIDE3LDE3QTEsMSAwIDAsMCAxNiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5bGlzdFBsYXkgPSBcIk0xOSw5SDJWMTFIMTlWOU0xOSw1SDJWN0gxOVY1TTIsMTVIMTVWMTNIMlYxNU0xNywxM1YxOUwyMiwxNkwxNywxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5bGlzdFBsdXMgPSBcIk0yLDE2SDEwVjE0SDJNMTgsMTRWMTBIMTZWMTRIMTJWMTZIMTZWMjBIMThWMTZIMjJWMTRNMTQsNkgyVjhIMTRNMTQsMTBIMlYxMkgxNFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5bGlzdFJlbW92ZSA9IFwiTTIsNlY4SDE0VjZIMk0yLDEwVjEySDExVjEwSDJNMTQuMTcsMTAuNzZMMTIuNzYsMTIuMTdMMTUuNTksMTVMMTIuNzYsMTcuODNMMTQuMTcsMTkuMjRMMTcsMTYuNDFMMTkuODMsMTkuMjRMMjEuMjQsMTcuODNMMTguNDEsMTVMMjEuMjQsMTIuMTdMMTkuODMsMTAuNzZMMTcsMTMuNTlMMTQuMTcsMTAuNzZNMiwxNFYxNkgxMVYxNEgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsYXlsaXN0U3RhciA9IFwiTTE3LDE5LjA5TDE5LjQ1LDIwLjU4TDE4LjgsMTcuNzdMMjEsMTUuODlMMTguMTEsMTUuNjRMMTcsMTNMMTUuODcsMTUuNjRMMTMsMTUuODlMMTUuMTgsMTcuNzdMMTQuNSwyMC41OEwxNywxOS4wOU00LDE0SDEyVjE2SDRWMTRNNCw2SDE2VjhINFY2TTQsMTBIMTZWMTJINFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGV4ID0gXCJNNCwyQzIuODksMiAyLDIuODkgMiw0VjIwQzIsMjEuMTEgMi44OSwyMiA0LDIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjRDMjIsMi44OSAyMS4xMSwyIDIwLDJINE04LjU2LDZIMTIuMDZMMTUuNSwxMkwxMi4wNiwxOEg4LjU2TDEyLDEyTDguNTYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbHVzID0gXCJNMTksMTNIMTNWMTlIMTFWMTNINVYxMUgxMVY1SDEzVjExSDE5VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsdXNCb3ggPSBcIk0xNywxM0gxM1YxN0gxMVYxM0g3VjExSDExVjdIMTNWMTFIMTdNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0JveE11bHRpcGxlID0gXCJNMTksMTFIMTVWMTVIMTNWMTFIOVY5SDEzVjVIMTVWOUgxOU0yMCwySDhBMiwyIDAgMCwwIDYsNFYxNkEyLDIgMCAwLDAgOCwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEEyLDIgMCAwLDAgMjAsMk00LDZIMlYyMEEyLDIgMCAwLDAgNCwyMkgxOFYyMEg0VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTE4IDExSDE1VjE0SDEzVjExSDEwVjlIMTNWNkgxNVY5SDE4TTIwIDRWMTZIOFY0SDIwTTIwIDJIOEM2LjkgMiA2IDIuOSA2IDRWMTZDNiAxNy4xMSA2LjkgMTggOCAxOEgyMEMyMS4xMSAxOCAyMiAxNy4xMSAyMiAxNlY0QzIyIDIuOSAyMS4xMSAyIDIwIDJNNCA2SDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxOFYyMEg0VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0JveE91dGxpbmUgPSBcIk0xOSwxOVY1SDVWMTlIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QzMsMy44OSAzLjksMyA1LDNIMTlNMTEsN0gxM1YxMUgxN1YxM0gxM1YxN0gxMVYxM0g3VjExSDExVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0NpcmNsZSA9IFwiTTE3LDEzSDEzVjE3SDExVjEzSDdWMTFIMTFWN0gxM1YxMUgxN00xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbHVzQ2lyY2xlTXVsdGlwbGUgPSBcIk0yIDEyQzIgOS4yIDMuNiA2LjggNiA1LjdWMy41QzIuNSA0LjggMCA4LjEgMCAxMlMyLjUgMTkuMiA2IDIwLjVWMTguM0MzLjYgMTcuMiAyIDE0LjggMiAxMk0xNSAzQzEwIDMgNiA3IDYgMTJTMTAgMjEgMTUgMjEgMjQgMTcgMjQgMTIgMjAgMyAxNSAzTTIwIDEzSDE2VjE3SDE0VjEzSDEwVjExSDE0VjdIMTZWMTFIMjBWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0NpcmNsZU11bHRpcGxlT3V0bGluZSA9IFwiTTE2LDhIMTRWMTFIMTFWMTNIMTRWMTZIMTZWMTNIMTlWMTFIMTZNMiwxMkMyLDkuMjEgMy42NCw2LjggNiw1LjY4VjMuNUMyLjUsNC43NiAwLDguMDkgMCwxMkMwLDE1LjkxIDIuNSwxOS4yNCA2LDIwLjVWMTguMzJDMy42NCwxNy4yIDIsMTQuNzkgMiwxMk0xNSwzQzEwLjA0LDMgNiw3LjA0IDYsMTJDNiwxNi45NiAxMC4wNCwyMSAxNSwyMUMxOS45NiwyMSAyNCwxNi45NiAyNCwxMkMyNCw3LjA0IDE5Ljk2LDMgMTUsM00xNSwxOUMxMS4xNCwxOSA4LDE1Ljg2IDgsMTJDOCw4LjE0IDExLjE0LDUgMTUsNUMxOC44Niw1IDIyLDguMTQgMjIsMTJDMjIsMTUuODYgMTguODYsMTkgMTUsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0NpcmNsZU91dGxpbmUgPSBcIk0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEzLDdIMTFWMTFIN1YxM0gxMVYxN0gxM1YxM0gxN1YxMUgxM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsdXNNaW51cyA9IFwiTTExLDRWOUg2VjExSDExVjE2SDEzVjExSDE4VjlIMTNWNEgxMU02LDE4VjIwSDE4VjE4SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c01pbnVzQm94ID0gXCJNNSwzQzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVNMTEsNkgxM1Y5SDE2VjExSDEzVjE0SDExVjExSDhWOUgxMVY2TTgsMTZIMTZWMThIOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbHVzTWludXNWYXJpYW50ID0gXCJNMyA3SDZWNEg4VjdIMTFWOUg4VjEySDZWOUgzVjdNMTMgMTVIMjFWMTdIMTNWMTVNMTYuMDQgM0gxOC4zNUw3Ljk2IDIxSDUuNjVMMTYuMDQgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQbHVzTmV0d29yayA9IFwiTTE2LDExVjlIMTNWNkgxMVY5SDhWMTFIMTFWMTRIMTNWMTFIMTZNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c05ldHdvcmtPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU03LDE1VjVIMTdWMTVIN00xNSwxMUgxM1YxM0gxMVYxMUg5VjlIMTFWN0gxM1Y5SDE1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsdXNPbmUgPSBcIk0xMCw4VjEySDE0VjE0SDEwVjE4SDhWMTRINFYxMkg4VjhIMTBNMTQuNSw2LjA4TDE5LDVWMThIMTdWNy40TDE0LjUsNy45VjYuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c091dGxpbmUgPSBcIk00LDlIOVY0SDE1VjlIMjBWMTVIMTVWMjBIOVYxNUg0VjlNMTEsMTNWMThIMTNWMTNIMThWMTFIMTNWNkgxMVYxMUg2VjEzSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsdXNUaGljayA9IFwiTTIwIDE0SDE0VjIwSDEwVjE0SDRWMTBIMTBWNEgxNFYxMEgyMFYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQb2RjYXN0ID0gXCJNMTcsMTguMjVWMjEuNUg3VjE4LjI1QzcsMTYuODcgOS4yNCwxNS43NSAxMiwxNS43NUMxNC43NiwxNS43NSAxNywxNi44NyAxNywxOC4yNU0xMiw1LjVBNi41LDYuNSAwIDAsMSAxOC41LDEyQzE4LjUsMTMuMjUgMTguMTUsMTQuNDIgMTcuNTQsMTUuNDFMMTYsMTQuMDRDMTYuMzIsMTMuNDMgMTYuNSwxMi43MyAxNi41LDEyQzE2LjUsOS41IDE0LjUsNy41IDEyLDcuNUM5LjUsNy41IDcuNSw5LjUgNy41LDEyQzcuNSwxMi43MyA3LjY4LDEzLjQzIDgsMTQuMDRMNi40NiwxNS40MUM1Ljg1LDE0LjQyIDUuNSwxMy4yNSA1LjUsMTJBNi41LDYuNSAwIDAsMSAxMiw1LjVNMTIsMS41QTEwLjUsMTAuNSAwIDAsMSAyMi41LDEyQzIyLjUsMTQuMjggMjEuNzcsMTYuMzkgMjAuNTQsMTguMTFMMTkuMDQsMTYuNzZDMTkuOTYsMTUuNCAyMC41LDEzLjc2IDIwLjUsMTJBOC41LDguNSAwIDAsMCAxMiwzLjVBOC41LDguNSAwIDAsMCAzLjUsMTJDMy41LDEzLjc2IDQuMDQsMTUuNCA0Ljk2LDE2Ljc2TDMuNDYsMTguMTFDMi4yMywxNi4zOSAxLjUsMTQuMjggMS41LDEyQTEwLjUsMTAuNSAwIDAsMSAxMiwxLjVNMTIsOS41QTIuNSwyLjUgMCAwLDEgMTQuNSwxMkEyLjUsMi41IDAgMCwxIDEyLDE0LjVBMi41LDIuNSAwIDAsMSA5LjUsMTJBMi41LDIuNSAwIDAsMSAxMiw5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9kaXVtID0gXCJNMTIsNy4wOUwxNC40NSw4LjU4TDEzLjgsNS43N0wxNiwzLjg5TDEzLjExLDMuNjRMMTIsMUwxMC44NywzLjY0TDgsMy44OUwxMC4xOCw1Ljc3TDkuNSw4LjU4TDEyLDcuMDlNNCwxMy4wOUw2LjQ1LDE0LjU4TDUuOCwxMS43N0w4LDkuODlMNS4xMSw5LjY0TDQsN0wyLjg3LDkuNjRMMCw5Ljg5TDIuMTgsMTEuNzdMMS41LDE0LjU4TDQsMTMuMDlNMjAsMTAuMDlMMjIuNDUsMTEuNThMMjEuOCw4Ljc3TDI0LDYuODlMMjEuMTEsNi42NEwyMCw0TDE4Ljg3LDYuNjRMMTYsNi44OUwxOC4xOCw4Ljc3TDE3LjUsMTEuNThMMjAsMTAuMDlNMTUsMjNIOVYxMEgxNVYyM003LDIzSDFWMTdIN1YyM00yMywyM0gxN1YxM0gyM1YyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQb2RpdW1Ccm9uemUgPSBcIk00LDEzLjA5TDYuNDUsMTQuNThMNS44LDExLjc3TDgsOS44OUw1LjExLDkuNjRMNCw3TDIuODcsOS42NEwwLDkuODlMMi4xOCwxMS43N0wxLjUsMTQuNThMNCwxMy4wOU03LDIzSDFWMTdIN1YyM005LDEwVjIzSDE1VjEwSDlNMTMsMjFIMTFWMTJIMTNWMjFNMTcsMTNWMjNIMjNWMTNIMTdNMjEsMjFIMTlWMTVIMjFWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9kaXVtR29sZCA9IFwiTTEyLDcuMDlMMTQuNDUsOC41OEwxMy44LDUuNzdMMTYsMy44OUwxMy4xMSwzLjY0TDEyLDFMMTAuODcsMy42NEw4LDMuODlMMTAuMTgsNS43N0w5LjUsOC41OEwxMiw3LjA5TTE1LDIzSDlWMTBIMTVWMjNNMSwxN1YyM0g3VjE3SDFNNSwyMUgzVjE5SDVWMjFNMTcsMTNWMjNIMjNWMTNIMTdNMjEsMjFIMTlWMTVIMjFWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9kaXVtU2lsdmVyID0gXCJNMjAsMTAuMDlMMjIuNDUsMTEuNThMMjEuOCw4Ljc3TDI0LDYuODlMMjEuMTEsNi42NEwyMCw0TDE4Ljg3LDYuNjRMMTYsNi44OUwxOC4xOCw4Ljc3TDE3LjUsMTEuNThMMjAsMTAuMDlNMjMsMjNIMTdWMTNIMjNWMjNNMSwxN1YyM0g3VjE3SDFNNSwyMUgzVjE5SDVWMjFNOSwxMFYyM0gxNVYxMEg5TTEzLDIxSDExVjEySDEzVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvaW50T2ZTYWxlID0gXCJNMjAsNUMxOS40LDUgMTksNS41IDE5LDYuMVYxNkMxOSwxNi42IDE5LjQsMTcgMjAsMTcuMUMyMC42LDE3LjEgMjEsMTYuNiAyMSwxNlY2LjFDMjEsNS41IDIwLjYsNSAyMCw1TTE2LjQsMkg0LjZDMy43LDIgMywyLjcgMywzLjZWMTcuNEMzLDE4LjMgMy43LDE5IDQuNiwxOUg2VjIxQzYsMjEuNiA2LjQsMjIgNywyMkgxM0MxMy42LDIyIDE0LDIxLjYgMTQsMjFWMTlIMTYuNEMxNy4zLDE5IDE4LDE4LjMgMTgsMTcuNFYzLjZDMTgsMi43IDE3LjMsMiAxNi40LDJNNSw4SDhWMTBINVY4TTEyLDExVjEzSDlWMTFIMTJNOSwxMFY4SDEyVjEwSDlNMTIsMTRWMTZIOVYxNEgxMk01LDExSDhWMTNINVYxMU01LDE2VjE0SDhWMTZINU04LDIxSDdWMTlIOFYyMU0xMywyMUgxMFYxOUgxM1YyMU0xNiwxNkgxM1YxNEgxNlYxNk0xNiwxM0gxM1YxMUgxNlYxM00xNiwxMEgxM1Y4SDE2VjEwTTE2LDZINVY0SDE2VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9rZWJhbGwgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QzcuOTIsNCA0LjU1LDcuMDUgNC4wNiwxMUg4LjEzQzguNTcsOS4yNyAxMC4xNCw4IDEyLDhDMTMuODYsOCAxNS40Myw5LjI3IDE1Ljg3LDExSDE5Ljk0QzE5LjQ1LDcuMDUgMTYuMDgsNCAxMiw0TTEyLDIwQzE2LjA4LDIwIDE5LjQ1LDE2Ljk1IDE5Ljk0LDEzSDE1Ljg3QzE1LjQzLDE0LjczIDEzLjg2LDE2IDEyLDE2QzEwLjE0LDE2IDguNTcsMTQuNzMgOC4xMywxM0g0LjA2QzQuNTUsMTYuOTUgNy45MiwyMCAxMiwyME0xMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkEyLDIgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9rZW1vbkdvID0gXCJNMTIsMkE3LDcgMCAwLDEgMTksOUMxOSwxMC40IDE4LjU5LDExLjcxIDE3Ljg4LDEyLjhMMTIsMjIuMjFMNi4xMiwxMi44QzUuNDEsMTEuNzEgNSwxMC40IDUsOUE3LDcgMCAwLDEgMTIsMk0xMiwzLjVDOS4zLDMuNSA3LjA2LDUuNDQgNi41OSw4SDkuMTdDOS41OCw2LjgzIDEwLjY5LDYgMTIsNkMxMy4zMSw2IDE0LjQyLDYuODMgMTQuODMsOEgxNy40MUMxNi45NCw1LjQ0IDE0LjcsMy41IDEyLDMuNU0xMiwxMkMxMC42OSwxMiA5LjU4LDExLjE3IDkuMTcsMTBINi41OUM2LjcyLDEwLjY5IDYuOTcsMTEuMzQgNy4zNCwxMS45MVYxMS45MUw3LjM4LDEyQzguMzYsMTMuNSAxMC4wNiwxNC41IDEyLDE0LjVDMTMuOTQsMTQuNSAxNS42NCwxMy41IDE2LjYyLDEyTDE2LjY2LDExLjkxVjExLjkxQzE3LjAzLDExLjM0IDE3LjI4LDEwLjY5IDE3LjQxLDEwSDE0LjgzQzE0LjQyLDExLjE3IDEzLjMxLDEyIDEyLDEyTTEyLDcuNUExLjUsMS41IDAgMCwwIDEwLjUsOUExLjUsMS41IDAgMCwwIDEyLDEwLjVBMS41LDEuNSAwIDAsMCAxMy41LDlBMS41LDEuNSAwIDAsMCAxMiw3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9rZXJDaGlwID0gXCJNMjMsMTJDMjMsMTguMDggMTguMDgsMjMgMTIsMjNDNS45MiwyMyAxLDE4LjA4IDEsMTJDMSw1LjkyIDUuOTIsMSAxMiwxQzE4LjA4LDEgMjMsNS45MiAyMywxMk0xMyw0LjA2QzE1LjEzLDQuMzMgMTcuMDcsNS40NSAxOC4zNyw3LjE2TDIwLjExLDYuMTZDMTguNDUsMy44MiAxNS44NiwyLjMgMTMsMlY0LjA2TTMuODksNi4xNkw1LjYzLDcuMTZDNi45Myw1LjQ1IDguODcsNC4zMyAxMSw0LjA2VjJDOC4xNCwyLjMgNS41NSwzLjgyIDMuODksNi4xNk0yLjg5LDE2LjFMNC42MiwxNS4xQzMuNzksMTMuMTIgMy43OSwxMC44OCA0LjYyLDguOUwyLjg5LDcuOUMxLjcsMTAuNSAxLjcsMTMuNSAyLjg5LDE2LjFNMTEsMTkuOTRDOC44NywxOS42NyA2LjkzLDE4LjU1IDUuNjMsMTYuODRMMy44OSwxNy44NEM1LjU1LDIwLjE4IDguMTQsMjEuNyAxMSwyMlYxOS45NE0yMC4xMSwxNy44NEwxOC4zNywxNi44NEMxNy4wNywxOC41NSAxNS4xMywxOS42NyAxMywxOS45NFYyMS45NEMxNS44NSwyMS42NSAxOC40NCwyMC4xNiAyMC4xMSwxNy44NE0yMS4xMSwxNi4xQzIyLjMsMTMuNSAyMi4zLDEwLjUgMjEuMTEsNy45TDE5LjM4LDguOUMyMC4yMSwxMC44OCAyMC4yMSwxMy4xMiAxOS4zOCwxNS4xTDIxLjExLDE2LjFNMTUsMTJMMTIsN0w5LDEyTDEyLDE3TDE1LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbGFyb2lkID0gXCJNNiwzSDE4QTIsMiAwIDAsMSAyMCw1VjE5QTIsMiAwIDAsMSAxOCwyMUg2QTIsMiAwIDAsMSA0LDE5VjVBMiwyIDAgMCwxIDYsM002LDVWMTdIMThWNUg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbGljZUJhZGdlID0gXCJNMjIgNEwyMCAyQzE4Ljg1IDIuNjQgMTcuNCAzIDE2IDNDMTQuNiAzIDEzLjE0IDIuNjMgMTIgMkMxMC44NiAyLjYzIDkuNCAzIDggM0M2LjYgMyA1LjE1IDIuNjQgNCAyTDIgNEMyIDQgNCA2IDQgOFMyIDE0IDIgMTZDMiAyMCAxMiAyMiAxMiAyMlMyMiAyMCAyMiAxNkMyMiAxNCAyMCAxMCAyMCA4UzIyIDQgMjIgNE0xNS4wNSAxNi40NUwxMS45NyAxNC41OUw4LjkgMTYuNDVMOS43MiAxMi45NUw3IDEwLjYxTDEwLjU4IDEwLjNMMTEuOTcgN0wxMy4zNyAxMC4yOUwxNi45NSAxMC42TDE0LjIzIDEyLjk0TDE1LjA1IDE2LjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbGljZUJhZGdlT3V0bGluZSA9IFwiTTEyIDQuMjFDMTMuMjQgNC43MiAxNC42NSA1IDE2IDVDMTcuMDUgNSAxOC4xIDQuODQgMTkuMDggNC41NEMxOC41IDUuNSAxOCA2LjcxIDE4IDhDMTggOS4zMiAxOC41NCAxMC45MyAxOS4xIDEyLjYzQzE5LjUgMTMuODMgMjAgMTUuMzMgMjAgMTZDMjAgMTcuMDMgMTYuNDcgMTkgMTIgMTkuOTZDNy41NCAxOSA0IDE3LjAzIDQgMTZDNCAxNS4zMyA0LjUgMTMuODMgNC45IDEyLjYzQzUuNDYgMTAuOTMgNiA5LjMyIDYgOEM2IDYuNzEgNS41IDUuNSA0LjkyIDQuNTRDNS45IDQuODQgNi45NiA1IDggNUM5LjM1IDUgMTAuNzYgNC43MiAxMiA0LjIxTTIwIDJDMTguODUgMi42NCAxNy40IDMgMTYgM0MxNC42IDMgMTMuMTQgMi42MyAxMiAyQzEwLjg2IDIuNjMgOS40IDMgOCAzQzYuNiAzIDUuMTUgMi42NCA0IDJMMiA0QzIgNCA0IDYgNCA4UzIgMTQgMiAxNkMyIDIwIDEyIDIyIDEyIDIyUzIyIDIwIDIyIDE2QzIyIDE0IDIwIDEwIDIwIDhTMjIgNCAyMiA0TDIwIDJNMTUuMDUgMTYuNDVMMTEuOTcgMTQuNTlMOC45IDE2LjQ1TDkuNzIgMTIuOTVMNyAxMC42MUwxMC41OCAxMC4zTDExLjk3IDdMMTMuMzcgMTAuMjlMMTYuOTUgMTAuNkwxNC4yMyAxMi45NEwxNS4wNSAxNi40NVwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbGwgPSBcIk0zLDIyVjhIN1YyMkgzTTEwLDIyVjJIMTRWMjJIMTBNMTcsMjJWMTRIMjFWMjJIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9sbEJveCA9IFwiTTE3LDE3SDE1VjEzSDE3TTEzLDE3SDExVjdIMTNNOSwxN0g3VjEwSDlNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9sbEJveE91dGxpbmUgPSBcIk05IDE3SDdWMTBIOU0xMyAxN0gxMVY3SDEzTTE3IDE3SDE1VjEzSDE3TTE5LjUgMTkuMUg0LjVWNUgxOS41TTE5LjUgM0g0LjVDMy40IDMgMi41IDMuOSAyLjUgNVYxOUMyLjUgMjAuMSAzLjQgMjEgNC41IDIxSDE5LjVDMjAuNiAyMSAyMS41IDIwLjEgMjEuNSAxOVY1QzIxLjUgMy45IDIwLjYgMyAxOS41IDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9sbyA9IFwiTTIyIDkuNUMyMiAxMC44OCAyMC44OCAxMiAxOS41IDEyUzE3IDEwLjg4IDE3IDkuNSAxOC4xMiA3IDE5LjUgNyAyMiA4LjEyIDIyIDkuNU0xMSAxN1YzSDhWMTdIMkw2IDIxSDEzVjE3SDExTTE2IDE3SDE0VjIxSDE2VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbHltZXIgPSBcIk0xOSw0SDE1TDcuMSwxNi42M0w0LjUsMTJMOSw0SDVMMC41LDEyTDUsMjBIOUwxNi44OSw3LjM3TDE5LjUsMTJMMTUsMjBIMTlMMjMuNSwxMkwxOSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvb2wgPSBcIk0yLDE1QzMuNjcsMTQuMjUgNS4zMywxMy41IDcsMTMuMTdWNUEzLDMgMCAwLDEgMTAsMkMxMS4zMSwyIDEyLjQyLDIuODMgMTIuODMsNEgxMEExLDEgMCAwLDAgOSw1VjZIMTRWNUEzLDMgMCAwLDEgMTcsMkMxOC4zMSwyIDE5LjQyLDIuODMgMTkuODMsNEgxN0ExLDEgMCAwLDAgMTYsNVYxNC45NEMxOCwxNC42MiAyMCwxMyAyMiwxM1YxNUMxOS43OCwxNSAxNy41NiwxNyAxNS4zMywxN0MxMy4xMSwxNyAxMC44OSwxNSA4LjY3LDE1QzYuNDQsMTUgNC4yMiwxNiAyLDE3VjE1TTE0LDhIOVYxMEgxNFY4TTE0LDEySDlWMTNDMTAuNjcsMTMuMTYgMTIuMzMsMTQuMzEgMTQsMTQuNzlWMTJNMiwxOUM0LjIyLDE4IDYuNDQsMTcgOC42NywxN0MxMC44OSwxNyAxMy4xMSwxOSAxNS4zMywxOUMxNy41NiwxOSAxOS43OCwxNyAyMiwxN1YxOUMxOS43OCwxOSAxNy41NiwyMSAxNS4zMywyMUMxMy4xMSwyMSAxMC44OSwxOSA4LjY3LDE5QzYuNDQsMTkgNC4yMiwyMCAyLDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvcGNvcm4gPSBcIk03LDIySDQuNzVDNC43NSwyMiA0LDIyIDMuODEsMjAuNjVMMi4wNCwzLjgxTDIsMy41QzIsMi42NyAyLjksMiA0LDJDNS4xLDIgNiwyLjY3IDYsMy41QzYsMi42NyA2LjksMiA4LDJDOS4xLDIgMTAsMi42NyAxMCwzLjVDMTAsMi42NyAxMC45LDIgMTIsMkMxMy4wOSwyIDE0LDIuNjYgMTQsMy41VjMuNUMxNCwyLjY3IDE0LjksMiAxNiwyQzE3LjEsMiAxOCwyLjY3IDE4LDMuNUMxOCwyLjY3IDE4LjksMiAyMCwyQzIxLjEsMiAyMiwyLjY3IDIyLDMuNUwyMS45NiwzLjgxTDIwLjE5LDIwLjY1QzIwLDIyIDE5LjI1LDIyIDE5LjI1LDIySDE3TDE2LjUsMjJIMTMuNzVMMTAuMjUsMjJINy41TDcsMjJNMTcuODUsNC45M0MxNy41NSw0LjM5IDE2Ljg0LDQgMTYsNEMxNS4xOSw0IDE0LjM2LDQuMzYgMTQsNC44N0wxMy43OCwyMEgxNi42NkwxNy44NSw0LjkzTTEwLDQuODdDOS42NCw0LjM2IDguODEsNCA4LDRDNy4xNiw0IDYuNDUsNC4zOSA2LjE1LDQuOTNMNy4zNCwyMEgxMC4yMkwxMCw0Ljg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvc3QgPSBcIk0zIDNWMjFIMjFWM0gzTTE4IDE4SDZWMTdIMThWMThNMTggMTZINlYxNUgxOFYxNk0xOCAxMkg2VjZIMThWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9zdE91dGxpbmUgPSBcIk0xOSA1VjE5SDVWNUgxOU0yMSAzSDNWMjFIMjFWM00xNyAxN0g3VjE2SDE3VjE3TTE3IDE1SDdWMTRIMTdWMTVNMTcgMTJIN1Y3SDE3VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvc3RhZ2VTdGFtcCA9IFwiTTIsMlY1LjVDMy4xLDUuNSA0LDYuNjIgNCw4QzQsOS4zOCAzLjEsMTAuNSAyLDEwLjVWMTMuNUMzLjEsMTMuNSA0LDE0LjYyIDQsMTZDNCwxNy4zOCAzLjEsMTguNSAyLDE4LjVWMjJINS41QzUuNSwyMC45IDYuNjIsMjAgOCwyMEM5LjM4LDIwIDEwLjUsMjAuOSAxMC41LDIySDEzLjVDMTMuNSwyMC45IDE0LjYyLDIwIDE2LDIwQzE3LjM4LDIwIDE4LjUsMjAuOSAxOC41LDIySDIyVjE4LjVDMjAuOSwxOC41IDIwLDE3LjM4IDIwLDE2VjE2QzIwLDE0LjYyIDIwLjksMTMuNSAyMiwxMy41VjEwLjVDMjAuOSwxMC41IDIwLDkuMzggMjAsOFY4QzIwLDYuNjIgMjAuOSw1LjUgMjIsNS41VjJIMTguNUMxOC41LDMuMSAxNy4zOCw0IDE2LDRDMTQuNjIsNCAxMy41LDMuMSAxMy41LDJIMTAuNUMxMC41LDMuMSA5LjM4LDQgOCw0QzYuNjIsNCA1LjUsMy4xIDUuNSwySDJNNiw2SDE4VjE4SDZWNk05LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSwxMUEyLDIgMCAwLDAgMTEsOUEyLDIgMCAwLDAgOSw3TTE3LDEwTDE0LDEzTDEyLDEyTDcsMTdIMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG90ID0gXCJNMTkgMTlDMTkgMjAuMSAxOC4xIDIxIDE3IDIxSDdDNS45IDIxIDUgMjAuMSA1IDE5VjEySDNWMTBIMjFWMTJIMTlWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG90TWl4ID0gXCJNMTQuNiA5TDE4IDMuMUwxOS43IDQuMUwxNi45IDlIMTQuNk0xNCAxMEgzVjEySDVWMTlDNSAyMC4xIDUuOSAyMSA3IDIxSDE3QzE4LjEgMjEgMTkgMjAuMSAxOSAxOVYxMkgyMVYxMEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3RNaXhPdXRsaW5lID0gXCJNMTQuNiA5TDE4IDMuMUwxOS43IDQuMUwxNi45IDlIMTQuNk0xNi4zIDEwSDIxVjEySDE5VjE5QzE5IDIwLjEgMTguMSAyMSAxNyAyMUg3QzUuOSAyMSA1IDIwLjEgNSAxOVYxMkgzVjEwSDE2LjNNMTcgMTJIN1YxOUgxN1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3RPdXRsaW5lID0gXCJNMyAxMFYxMkg1VjE5QzUgMjAuMSA1LjkgMjEgNyAyMUgxN0MxOC4xIDIxIDE5IDIwLjEgMTkgMTlWMTJIMjFWMTBIM003IDEySDE3VjE5SDdWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG90U3RlYW0gPSBcIk0xOSAxOUMxOSAyMC4xMSAxOC4xMSAyMSAxNyAyMUg3QzUuOSAyMSA1IDIwLjExIDUgMTlWMTJIM1YxMEgyMVYxMkgxOU04IDEuNUM2LjE1IDEuNSA0LjY1IDMgNC42NSA0Ljg1QzQuNjUgNi43IDYuMTUgOC4yIDggOC4ySDkuNTNDOS45MiA4LjIgMTAuMjkgOC4zIDEwLjYxIDguNUgxMi42M0MxMi4wNSA3LjQ1IDEwLjg2IDYuNzUgOS41MyA2Ljc1SDhDNyA2Ljc1IDYuMTUgNS43NyA2LjE1IDQuNzVDNi4xNSAzLjczIDcgMyA4IDNNMTIuODUgMkMxMi44NSAzIDEyIDMuODUgMTEgMy44NVY1LjM1QzEyLjkyIDUuMzUgMTQuNSA2LjcgMTQuODkgOC41SDE2LjQyQzE2LjEyIDYuNjcgMTQuOTYgNS4xNSAxMy4zNSA0LjM4QzEzLjk3IDMuNzcgMTQuMzUgMi45MyAxNC4zNSAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvdFN0ZWFtT3V0bGluZSA9IFwiTTggMS41QzYuMTUgMS41IDQuNjUgMyA0LjY1IDQuODVDNC42NSA2LjcgNi4xNSA4LjIgOCA4LjJIOS41M0M5LjkyIDguMiAxMC4yOSA4LjMgMTAuNjEgOC41SDEyLjYzQzEyLjA1IDcuNDUgMTAuODYgNi43NSA5LjUzIDYuNzVIOEM3IDYuNzUgNi4xNSA1Ljc3IDYuMTUgNC43NUM2LjE1IDMuNzMgNyAzIDggM1YxLjVNMTIuODUgMkMxMi44NSAzIDEyIDMuODUgMTEgMy44NVY1LjM1QzEyLjkyIDUuMzUgMTQuNSA2LjcgMTQuODkgOC41SDE2LjQyQzE2LjEyIDYuNjcgMTQuOTYgNS4xNSAxMy4zNSA0LjM4QzEzLjk3IDMuNzcgMTQuMzUgMi45MyAxNC4zNSAySDEyLjg1TTMgMTBWMTJINVYxOUM1IDIwLjExIDUuOSAyMSA3IDIxSDE3QzE4LjExIDIxIDE5IDIwLjExIDE5IDE5VjEySDIxVjEwSDNNNyAxMkgxN1YxOUg3VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvdW5kID0gXCJNNS40MSwyMUw2LjEyLDE3SDIuMTJMMi40NywxNUg2LjQ3TDcuNTMsOUgzLjUzTDMuODgsN0g3Ljg4TDguNTksM0gxMC41OUw5Ljg4LDdIMTUuODhMMTYuNTksM0gxOC41OUwxNy44OCw3SDIxLjg4TDIxLjUzLDlIMTcuNTNMMTYuNDcsMTVIMjAuNDdMMjAuMTIsMTdIMTYuMTJMMTUuNDEsMjFIMTMuNDFMMTQuMTIsMTdIOC4xMkw3LjQxLDIxSDUuNDFNOS41Myw5TDguNDcsMTVIMTQuNDdMMTUuNTMsOUg5LjUzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvdW5kQm94ID0gXCJNMyw1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1TTcsMThIOUw5LjM1LDE2SDEzLjM1TDEzLDE4SDE1TDE1LjM1LDE2SDE3LjM1TDE3LjcxLDE0SDE1LjcxTDE2LjQxLDEwSDE4LjQxTDE4Ljc2LDhIMTYuNzZMMTcuMTIsNkgxNS4xMkwxNC43Niw4SDEwLjc2TDExLjEyLDZIOS4xMkw4Ljc2LDhINi43Nkw2LjQxLDEwSDguNDFMNy43MSwxNEg1LjcxTDUuMzUsMTZINy4zNUw3LDE4TTEwLjQxLDEwSDE0LjQxTDEzLjcxLDE0SDkuNzFMMTAuNDEsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG91bmRCb3hPdXRsaW5lID0gXCJNMTkgMTlINVY1SDE5TTE5IDNINUEyIDIgMCAwIDAgMyA1VjE5QTIgMiAwIDAgMCA1IDIxSDE5QTIgMiAwIDAgMCAyMSAxOVY1QTIgMiAwIDAgMCAxOSAzTTcgOUg5LjMxTDkuNjMgNkgxMS42M0wxMS4zMSA5SDEzLjMxTDEzLjYzIDZIMTUuNjNMMTUuMzEgOUgxN1YxMUgxNS4xTDE0LjkgMTNIMTdWMTVIMTQuNjlMMTQuMzcgMThIMTIuMzdMMTIuNjkgMTVIMTAuNjlMMTAuMzcgMThIOC4zN0w4LjY5IDE1SDdWMTNIOC45TDkuMSAxMUg3VjlNMTEuMSAxMUwxMC45IDEzSDEyLjlMMTMuMSAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlciA9IFwiTTE2LjU2LDUuNDRMMTUuMTEsNi44OUMxNi44NCw3Ljk0IDE4LDkuODMgMTgsMTJBNiw2IDAgMCwxIDEyLDE4QTYsNiAwIDAsMSA2LDEyQzYsOS44MyA3LjE2LDcuOTQgOC44OCw2Ljg4TDcuNDQsNS40NEM1LjM2LDYuODggNCw5LjI4IDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCw5LjI4IDE4LjY0LDYuODggMTYuNTYsNS40NE0xMywzSDExVjEzSDEzXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJDeWNsZSA9IFwiTTEyLDNBOSw5IDAgMCwwIDMsMTJBOSw5IDAgMCwwIDEyLDIxQTksOSAwIDAsMCAyMSwxMkE5LDkgMCAwLDAgMTIsM00xMiwxOUE3LDcgMCAwLDEgNSwxMkE3LDcgMCAwLDEgMTIsNUE3LDcgMCAwLDEgMTksMTJBNyw3IDAgMCwxIDEyLDE5TTEzLDE3SDExVjdIMTNWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJPZmYgPSBcIk0xMiwzQTksOSAwIDAsMCAzLDEyQTksOSAwIDAsMCAxMiwyMUE5LDkgMCAwLDAgMjEsMTJBOSw5IDAgMCwwIDEyLDNNMTIsMTlBNyw3IDAgMCwxIDUsMTJBNyw3IDAgMCwxIDEyLDVBNyw3IDAgMCwxIDE5LDEyQTcsNyAwIDAsMSAxMiwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlck9uID0gXCJNMTEsM0gxM1YyMUgxMVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvd2VyUGx1ZyA9IFwiTTE2LDdWM0gxNFY3SDEwVjNIOFY3SDhDNyw3IDYsOCA2LDlWMTQuNUw5LjUsMThWMjFIMTQuNVYxOEwxOCwxNC41VjlDMTgsOCAxNyw3IDE2LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJQbHVnT2ZmID0gXCJNMjAuODQgMjIuNzNMMTUuMzEgMTcuMkwxNC41IDE4VjIxSDkuNVYxOEw2IDE0LjVWOUM2IDguNyA2LjEgOC40MSA2LjI1IDguMTRMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xOCAxNC41VjlDMTggOCAxNyA3IDE2IDdWM0gxNFY3SDEwLjJMMTcuODUgMTQuNjVMMTggMTQuNU0xMCAzSDhWNC44TDEwIDYuOFYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvd2VyUGx1Z09mZk91dGxpbmUgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDYuMjUgOC4xNEM2LjEgOC40MSA2IDguNyA2IDlWMTQuNUw5LjUgMThWMjFIMTQuNVYxOEwxNS4zMSAxNy4yTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TTEzLjA5IDE2LjU5TDEyLjY3IDE3SDExLjMzTDEwLjkyIDE2LjU5TDggMTMuNjdWOS44OUwxMy44OSAxNS43OEwxMy4wOSAxNi41OU0xMi4yIDlMMTAuMiA3SDE0VjNIMTZWN0MxNyA3IDE4IDggMTggOVYxNC41TDE3Ljg1IDE0LjY1TDE2IDEyLjhWOS4wOUMxNiA5LjA2IDE1Ljk1IDkgMTUuOTIgOUgxMi4yTTEwIDYuOEw4IDQuOFYzSDEwVjYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlclBsdWdPdXRsaW5lID0gXCJNMTYgN1YzSDE0VjdIMTBWM0g4VjdDNyA3IDYgOCA2IDlWMTQuNUw5LjUgMThWMjFIMTQuNVYxOEwxOCAxNC41VjlDMTggOCAxNyA3IDE2IDdNMTYgMTMuNjdMMTMuMDkgMTYuNTlMMTIuNjcgMTdIMTEuMzNMMTAuOTIgMTYuNTlMOCAxMy42N1Y5LjA5QzggOS4wNiA4LjA2IDkgOC4wOSA5SDE1LjkyQzE1Ljk1IDkgMTYgOS4wNiAxNiA5LjA5VjEzLjY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvd2VyU2V0dGluZ3MgPSBcIk0xNSwyNEgxN1YyMkgxNU0xNi41Niw0LjQ0TDE1LjExLDUuODlDMTYuODQsNi45NCAxOCw4LjgzIDE4LDExQTYsNiAwIDAsMSAxMiwxN0E2LDYgMCAwLDEgNiwxMUM2LDguODMgNy4xNiw2Ljk0IDguODgsNS44OEw3LjQ0LDQuNDRDNS4zNiw1Ljg4IDQsOC4yOCA0LDExQTgsOCAwIDAsMCAxMiwxOUE4LDggMCAwLDAgMjAsMTFDMjAsOC4yOCAxOC42NCw1Ljg4IDE2LjU2LDQuNDRNMTMsMkgxMVYxMkgxM00xMSwyNEgxM1YyMkgxMU03LDI0SDlWMjJIN1YyNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlclNsZWVwID0gXCJNMTguNzMsMThDMTUuNCwyMS42OSA5LjcxLDIyIDYsMTguNjRDMi4zMywxNS4zMSAyLjA0LDkuNjIgNS4zNyw1LjkzQzYuOSw0LjI1IDksMy4yIDExLjI3LDNDNy45Niw2LjcgOC4yNywxMi4zOSAxMiwxNS43MUMxMy42MywxNy4xOSAxNS43OCwxOCAxOCwxOEMxOC4yNSwxOCAxOC41LDE4IDE4LjczLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvd2VyU29ja2V0ID0gXCJNMTUsMTVIMTdWMTFIMTVNNywxNUg5VjExSDdNMTEsMTNIMTNWOUgxMU04LjgzLDdIMTUuMkwxOSwxMC44VjE3SDVWMTAuOE04LDVMMywxMFYxOUgyMVYxMEwxNiw1SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRBdSA9IFwiTTQuMjIsMkEyLjIyLDIuMjIgMCAwLDAgMiw0LjIyVjE5Ljc4QzIsMjEgMywyMiA0LjIyLDIySDE5Ljc4QTIuMjIsMi4yMiAwIDAsMCAyMiwxOS43OFY0LjIyQzIyLDMgMjEsMiAxOS43OCwySDQuMjJNMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0TTguMjcsNy41NEw2LjI3LDExTDgsMTJMMTAsOC41NEw4LjI3LDcuNTRNMTUuNzMsNy41NEwxNCw4LjU0TDE2LDEyTDE3LjczLDExTDE1LjczLDcuNTRNMTEsMTRWMThIMTNWMTRIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXREZSA9IFwiTTQuMjIgMkEyLjIyIDIuMjIgMCAwIDAgMiA0LjIyVjE5Ljc4QzIgMjEgMyAyMiA0LjIyIDIySDE5Ljc4QTIuMjIgMi4yMiAwIDAgMCAyMiAxOS43OFY0LjIyQzIyIDMgMjEgMiAxOS43OCAySDQuMjJNMTEgNC4wN1Y2SDEzVjQuMDdBOCA4IDAgMCAxIDIwIDEyQTggOCAwIDAgMSAxMyAxOS45M1YxOEgxMVYxOS45M0E4IDggMCAwIDEgNCAxMkE4IDggMCAwIDEgMTEgNC4wN003LjUgMTAuNUExLjUgMS41IDAgMCAwIDYgMTJDNiAxMi44MyA2LjY2IDEzLjUgNy41IDEzLjVBMS41IDEuNSAwIDAgMCA5IDEyQTEuNSAxLjUgMCAwIDAgNy41IDEwLjVNMTYuNSAxMC41QTEuNSAxLjUgMCAwIDAgMTUgMTJBMS41IDEuNSAwIDAgMCAxNi41IDEzLjVBMS41IDEuNSAwIDAgMCAxOCAxMkExLjUgMS41IDAgMCAwIDE2LjUgMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlclNvY2tldEV1ID0gXCJNNy41LDEwLjVBMS41LDEuNSAwIDAsMSA5LDEyQTEuNSwxLjUgMCAwLDEgNy41LDEzLjVDNi42NiwxMy41IDYsMTIuODMgNiwxMkExLjUsMS41IDAgMCwxIDcuNSwxMC41TTE2LjUsMTAuNUExLjUsMS41IDAgMCwxIDE4LDEyQTEuNSwxLjUgMCAwLDEgMTYuNSwxMy41QTEuNSwxLjUgMCAwLDEgMTUsMTJBMS41LDEuNSAwIDAsMSAxNi41LDEwLjVNNC4yMiwySDE5Ljc4QzIxLDIgMjIsMyAyMiw0LjIyVjE5Ljc4QTIuMjIsMi4yMiAwIDAsMSAxOS43OCwyMkg0LjIyQzMsMjIgMiwyMSAyLDE5Ljc4VjQuMjJBMi4yMiwyLjIyIDAgMCwxIDQuMjIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRGciA9IFwiTTQuMjIgMkEyLjIyIDIuMjIgMCAwIDAgMiA0LjIyVjE5Ljc4QzIgMjEgMyAyMiA0LjIyIDIySDE5Ljc4QTIuMjIgMi4yMiAwIDAgMCAyMiAxOS43OFY0LjIyQzIyIDMgMjEgMiAxOS43OCAySDQuMjJNMTIgNEE4IDggMCAwIDEgMjAgMTJBOCA4IDAgMCAxIDEyIDIwQTggOCAwIDAgMSA0IDEyQTggOCAwIDAgMSAxMiA0TTEyIDZBMS41IDEuNSAwIDAgMCAxMC41IDcuNUExLjUgMS41IDAgMCAwIDEyIDlBMS41IDEuNSAwIDAgMCAxMy41IDcuNUExLjUgMS41IDAgMCAwIDEyIDZNNy41IDEwLjVBMS41IDEuNSAwIDAgMCA2IDEyQzYgMTIuODMgNi42NiAxMy41IDcuNSAxMy41QTEuNSAxLjUgMCAwIDAgOSAxMkExLjUgMS41IDAgMCAwIDcuNSAxMC41TTE2LjUgMTAuNUExLjUgMS41IDAgMCAwIDE1IDEyQTEuNSAxLjUgMCAwIDAgMTYuNSAxMy41QTEuNSAxLjUgMCAwIDAgMTggMTJBMS41IDEuNSAwIDAgMCAxNi41IDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRJdCA9IFwiTTEwLjUgMTYuNUMxMC41IDE1LjY4IDExLjE3IDE1IDEyIDE1QzEyLjgzIDE1IDEzLjUgMTUuNjggMTMuNSAxNi41QzEzLjUgMTcuMzQgMTIuODMgMTggMTIgMThDMTEuMTcgMTggMTAuNSAxNy4zNCAxMC41IDE2LjVNMTAuNSA3LjVDMTAuNSA2LjY3IDExLjE3IDYgMTIgNkMxMi44MyA2IDEzLjUgNi42NyAxMy41IDcuNUMxMy41IDguMzMgMTIuODMgOSAxMiA5QzExLjE3IDkgMTAuNSA4LjMzIDEwLjUgNy41TTQuMjIgMkgxOS43OEMyMSAyIDIyIDMgMjIgNC4yMlYxOS43OEMyMiAyMSAyMSAyMiAxOS43OCAyMkg0LjIyQzMgMjIgMiAyMSAyIDE5Ljc4VjQuMjJDMiAzIDMgMiA0LjIyIDJNMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJDNCAxNi40MiA3LjU4IDIwIDEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyQzIwIDcuNTggMTYuNDIgNCAxMiA0TTEwLjUgMTJDMTAuNSAxMS4xNyAxMS4xNyAxMC41IDEyIDEwLjVDMTIuODMgMTAuNSAxMy41IDExLjE3IDEzLjUgMTJDMTMuNSAxMi44MyAxMi44MyAxMy41IDEyIDEzLjVDMTEuMTcgMTMuNSAxMC41IDEyLjgzIDEwLjUgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRKcCA9IFwiTTEwIDkuNVYxNC41SDhWOS41TTE5Ljc4IDJDMjEgMiAyMiAzIDIyIDQuMjJWMTkuNzhDMjIgMjEgMjEgMjIgMTkuNzggMjJINC4yMkMzIDIyIDIgMjEgMiAxOS43OFY0LjIyQzIgMyAzIDIgNC4yMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNE0xNiA5LjVWMTQuNUgxNFY5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRVayA9IFwiTTQgMkEyIDIgMCAwIDAgMiA0VjIwQTIgMiAwIDAgMCA0IDIySDIwQTIgMiAwIDAgMCAyMiAyMFY0QTIgMiAwIDAgMCAyMCAySDRNNCA0SDIwVjIwSDRWNE0xMSA3VjExSDEzVjdIMTFNNiAxNC43NVYxN0g5LjVWMTQuNzVINk0xNC41IDE0Ljc1VjE3SDE4VjE0Ljc1SDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRVcyA9IFwiTTgsN0gxMFYxMkg4VjdNNC4yMiwySDE5Ljc4QzIxLDIgMjIsMyAyMiw0LjIyVjE5Ljc4QTIuMjIsMi4yMiAwIDAsMSAxOS43OCwyMkg0LjIyQzMsMjIgMiwyMSAyLDE5Ljc4VjQuMjJBMi4yMiwyLjIyIDAgMCwxIDQuMjIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRNMTQsNy41SDE2VjExLjVIMTRWNy41TTEwLjUsMTYuMjVBMS41LDEuNSAwIDAsMSAxMiwxNC43NUExLjUsMS41IDAgMCwxIDEzLjUsMTYuMjVWMTdIMTAuNVYxNi4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlclN0YW5kYnkgPSBcIk0xMywzSDExVjEzSDEzVjNNMTcuODMsNS4xN0wxNi40MSw2LjU5QzE4LjA1LDcuOTEgMTksOS45IDE5LDEyQTcsNyAwIDAsMSAxMiwxOUM4LjE0LDE5IDUsMTUuODggNSwxMkM1LDkuOTEgNS45NSw3LjkxIDcuNTgsNi41OEw2LjE3LDUuMTdDMi4zOCw4LjM5IDEuOTIsMTQuMDcgNS4xNCwxNy44NkM4LjM2LDIxLjY0IDE0LjA0LDIyLjEgMTcuODMsMTguODhDMTkuODUsMTcuMTcgMjEsMTQuNjUgMjEsMTJDMjEsOS4zNyAxOS44NCw2Ljg3IDE3LjgzLDUuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJzaGVsbCA9IFwiTTIxLjgzLDRDMjIuMzIsNCAyMi42Myw0LjQgMjIuNSw0Ljg5TDE5LjM0LDE5LjExQzE5LjIzLDE5LjYgMTguNzUsMjAgMTguMjYsMjBIMi4xN0MxLjY4LDIwIDEuMzcsMTkuNiAxLjUsMTkuMTFMNC42Niw0Ljg5QzQuNzcsNC40IDUuMjUsNCA1Ljc0LDRIMjEuODNNMTUuODMsMTZIMTEuODNDMTEuMzcsMTYgMTEsMTYuMzggMTEsMTYuODRDMTEsMTcuMzEgMTEuMzcsMTcuNjkgMTEuODMsMTcuNjlIMTUuODNDMTYuMywxNy42OSAxNi42OCwxNy4zMSAxNi42OCwxNi44NEMxNi42OCwxNi4zOCAxNi4zLDE2IDE1LjgzLDE2TTUuNzgsMTYuMjhDNS4zOCwxNi41NiA1LjI5LDE3LjExIDUuNTcsMTcuNUM1Ljg1LDE3LjkyIDYuNDEsMTggNi44MSwxNy43M0MxNC4xNiwxMi41NiAxNC4yMSwxMi41IDE0LjI2LDEyLjQ3QzE0LjQ0LDEyLjMxIDE0LjUzLDEyLjA5IDE0LjU0LDExLjg3QzE0LjU1LDExLjY3IDE0LjUsMTEuNSAxNC4zOCwxMS4zMUw5LjQ2LDYuMDNDOS4xMyw1LjY3IDguNTcsNS42NSA4LjIxLDZDNy44NSw2LjMyIDcuODMsNi44OCA4LjE2LDcuMjRMMTIuMzEsMTEuNjhMNS43OCwxNi4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQcmVzY3JpcHRpb24gPSBcIk00LDRWMTBMNCwxNEg2VjEwSDhMMTMuNDEsMTUuNDFMOS44MywxOUwxMS4yNCwyMC40MUwxNC44MywxNi44M0wxOC40MSwyMC40MUwxOS44MiwxOUwxNi4yNCwxNS40MUwxOS44MiwxMS44M0wxOC40MSwxMC40MUwxNC44MywxNEwxMC44MywxMEgxMUEzLDMgMCAwLDAgMTQsN0EzLDMgMCAwLDAgMTEsNEg0TTYsNkgxMUExLDEgMCAwLDEgMTIsN0ExLDEgMCAwLDEgMTEsOEg2VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJlc2VudGF0aW9uID0gXCJNMiwzSDEwQTIsMiAwIDAsMSAxMiwxQTIsMiAwIDAsMSAxNCwzSDIyVjVIMjFWMTZIMTUuMjVMMTcsMjJIMTVMMTMuMjUsMTZIMTAuNzVMOSwyMkg3TDguNzUsMTZIM1Y1SDJWM001LDVWMTRIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByZXNlbnRhdGlvblBsYXkgPSBcIk0yLDNIMTBBMiwyIDAgMCwxIDEyLDFBMiwyIDAgMCwxIDE0LDNIMjJWNUgyMVYxNkgxNS4yNUwxNywyMkgxNUwxMy4yNSwxNkgxMC43NUw5LDIySDdMOC43NSwxNkgzVjVIMlYzTTUsNVYxNEgxOVY1SDVNMTEuODUsMTEuODVDMTEuNzYsMTEuOTQgMTEuNjQsMTIgMTEuNSwxMkEwLjUsMC41IDAgMCwxIDExLDExLjVWNy41QTAuNSwwLjUgMCAwLDEgMTEuNSw3QzExLjY0LDcgMTEuNzYsNy4wNiAxMS44NSw3LjE1TDEzLjI1LDguNTRDMTMuNTcsOC44NiAxMy44OSw5LjE4IDEzLjg5LDkuNUMxMy44OSw5LjgyIDEzLjU3LDEwLjE0IDEzLjI1LDEwLjQ2TDExLjg1LDExLjg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByZXR6ZWwgPSBcIk01LjE1IDE1Ljg0QzMuODEgMTQuMjcgMyAxMi4yMyAzIDEwVjkuOTdDMyA3LjIyIDUuMjUgNSA4IDVDOS42NCA1IDExLjA5IDUuNzkgMTIgN0MxMi45MSA1Ljc5IDE0LjM3IDUgMTYgNUMxOC43NiA1IDIxIDcuMjQgMjEgMTBDMjEgMTIuMjMgMjAuMTkgMTQuMjcgMTguODUgMTUuODRMMjAuMjEgMTcuMkwxOC43OSAxOC42MUwxNy4zOSAxNy4yMUMxNS44OSAxOC4zMyAxNCAxOSAxMiAxOUMxMCAxOSA4LjExIDE4LjMzIDYuNjEgMTcuMjFMNS4yMSAxOC42MUwzLjc5IDE3LjJMNS4xNSAxNS44NE0xNS45NiAxNS43N0wxMiAxMS44Mkw4LjA0IDE1Ljc3QzkuMTcgMTYuNTUgMTAuNTMgMTcgMTIgMTdDMTMuNDcgMTcgMTQuODMgMTYuNTUgMTUuOTYgMTUuNzdNMTEgMTBDMTEgOC4zNCA5LjY1IDcgOCA3QzYuMzQgNyA1IDguMzQgNSAxMEM1IDExLjY4IDUuNTkgMTMuMjEgNi41NyAxNC40MkwxMSAxME0xNy40MyAxNC40MkMxOC40MSAxMy4yMSAxOSAxMS42OCAxOSAxMFYxMEMxOSA4LjMzIDE3LjY1IDcgMTYgN0MxNC4zNSA3IDEzIDguMzQgMTMgMTBMMTcuNDMgMTQuNDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJpbnRlciA9IFwiTTE4LDNINlY3SDE4TTE5LDEyQTEsMSAwIDAsMSAxOCwxMUExLDEgMCAwLDEgMTksMTBBMSwxIDAgMCwxIDIwLDExQTEsMSAwIDAsMSAxOSwxMk0xNiwxOUg4VjE0SDE2TTE5LDhINUEzLDMgMCAwLDAgMiwxMVYxN0g2VjIxSDE4VjE3SDIyVjExQTMsMyAwIDAsMCAxOSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXIzZCA9IFwiTTE5LDZBMSwxIDAgMCwwIDIwLDVBMSwxIDAgMCwwIDE5LDRBMSwxIDAgMCwwIDE4LDVBMSwxIDAgMCwwIDE5LDZNMTksMkEzLDMgMCAwLDEgMjIsNVYxMUgxOFY3SDZWMTFIMlY1QTMsMyAwIDAsMSA1LDJIMTlNMTgsMTguMjVDMTgsMTguNjMgMTcuNzksMTguOTYgMTcuNDcsMTkuMTNMMTIuNTcsMjEuODJDMTIuNCwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44Mkw2LjUzLDE5LjEzQzYuMjEsMTguOTYgNiwxOC42MyA2LDE4LjI1VjEzQzYsMTIuNjIgNi4yMSwxMi4yOSA2LjUzLDEyLjEyTDExLjQzLDkuNjhDMTEuNTksOS41NiAxMS43OSw5LjUgMTIsOS41QzEyLjIxLDkuNSAxMi40LDkuNTYgMTIuNTcsOS42OEwxNy40NywxMi4xMkMxNy43OSwxMi4yOSAxOCwxMi42MiAxOCwxM1YxOC4yNU0xMiwxMS42NUw5LjA0LDEzTDEyLDE0LjZMMTQuOTYsMTNMMTIsMTEuNjVNOCwxNy42NkwxMSwxOS4yOVYxNi4zM0w4LDE0LjcxVjE3LjY2TTE2LDE3LjY2VjE0LjcxTDEzLDE2LjMzVjE5LjI5TDE2LDE3LjY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXIzZE5venpsZSA9IFwiTTcsMkgxN1Y4SDE5VjEzSDE2LjVMMTMsMTdIMTFMNy41LDEzSDVWOEg3VjJNMTAsMjJIMlYyMEgxMEExLDEgMCAwLDAgMTEsMTlWMThIMTNWMTlBMywzIDAgMCwxIDEwLDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXIzZE5venpsZUFsZXJ0ID0gXCJNNyAySDE3VjhIMTlWMTNIMTYuNUwxMyAxN0gxMUw3LjUgMTNINVY4SDdWMk0xMCAyMkgyVjIwSDEwQzEwLjYgMjAgMTEgMTkuNSAxMSAxOVYxOEgxM1YxOUMxMyAyMC43IDExLjcgMjIgMTAgMjJNMjEgMTNWN0gyM1YxM0gyMU0yMSAxN1YxNUgyM1YxN0gyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyM2ROb3p6bGVBbGVydE91dGxpbmUgPSBcIk03IDJIMTdWN0gxOVYxM0gxNi41TDEzIDE3SDExTDcuNSAxM0g1VjdIN1YyTTEwIDIySDJWMjBIMTBDMTAuNiAyMCAxMSAxOS41IDExIDE5VjE4SDEzVjE5QzEzIDIwLjcgMTEuNyAyMiAxMCAyMk03IDlWMTFIOC41TDEyIDE1TDE1LjUgMTFIMTdWOUgxNVY0SDlWOUg3TTIxIDEzVjdIMjNWMTNIMjFNMjEgMTdWMTVIMjNWMTdIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJpbnRlcjNkTm96emxlT3V0bGluZSA9IFwiTTcsMkgxN1Y3SDE5VjEzSDE2LjVMMTMsMTdIMTFMNy41LDEzSDVWN0g3VjJNMTAsMjJIMlYyMEgxMEExLDEgMCAwLDAgMTEsMTlWMThIMTNWMTlBMywzIDAgMCwxIDEwLDIyTTcsOVYxMUg4LjVMMTIsMTVMMTUuNSwxMUgxN1Y5SDE1VjRIOVY5SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJpbnRlckFsZXJ0ID0gXCJNMTYgM0g0VjdIMTZNMTcgMTJDMTYuNCAxMiAxNiAxMS42IDE2IDExUzE2LjQgMTAgMTcgMTAgMTggMTAuNCAxOCAxMSAxNy42IDEyIDE3IDEyTTE0IDE5SDZWMTRIMTRNMTcgOEgzQzEuMyA4IDAgOS4zIDAgMTFWMTdINFYyMUgxNlYxN0gyMFYxMUMyMCA5LjMgMTguNyA4IDE3IDhNMjQgMTNIMjJWN0gyNFYxM00yNCAxN0gyMlYxNUgyNFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyQ2hlY2sgPSBcIk0xOCA3SDZWM0gxOFY3TTYgMjFWMTdIMlYxMUMyIDkuMzQgMy4zNCA4IDUgOEgxOUMyMC42NiA4IDIyIDkuMzQgMjIgMTFWMTMuODFDMjEuMTIgMTMuMyAyMC4xIDEzIDE5IDEzQzE3Ljc3IDEzIDE2LjY0IDEzLjM3IDE1LjY5IDE0SDhWMTlIMTNDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMUg2TTE4IDExQzE4IDExLjU1IDE4LjQ1IDEyIDE5IDEyUzIwIDExLjU1IDIwIDExIDE5LjU1IDEwIDE5IDEwIDE4IDEwLjQ1IDE4IDExTTIzLjUgMTdMMjIgMTUuNUwxOC41IDE5TDE2LjUgMTdMMTUgMTguNUwxOC41IDIyTDIzLjUgMTdcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyRXllID0gXCJNOS44IDIxQzkuNiAyMC42IDkuMyAyMC4yIDkuMiAxOS43TDguOCAxOUg4VjE0SDEzQzE0LjIgMTMuNCAxNS42IDEzIDE3IDEzQzE4LjkgMTMgMjAuNiAxMy42IDIyIDE0LjZWMTFDMjIgOS4zIDIwLjcgOCAxOSA4SDVDMy4zIDggMiA5LjMgMiAxMVYxN0g2VjIxSDkuOE0xOSAxMEMxOS42IDEwIDIwIDEwLjQgMjAgMTFTMTkuNiAxMiAxOSAxMiAxOCAxMS42IDE4IDExIDE4LjQgMTAgMTkgMTBNMTggN0g2VjNIMThWN00xNyAxOEMxNy42IDE4IDE4IDE4LjQgMTggMTlTMTcuNiAyMCAxNyAyMCAxNiAxOS42IDE2IDE5IDE2LjQgMTggMTcgMThNMTcgMTVDMTQuMyAxNSAxMS45IDE2LjcgMTEgMTlDMTEuOSAyMS4zIDE0LjMgMjMgMTcgMjNTMjIuMSAyMS4zIDIzIDE5QzIyLjEgMTYuNyAxOS43IDE1IDE3IDE1TTE3IDIxLjVDMTUuNiAyMS41IDE0LjUgMjAuNCAxNC41IDE5UzE1LjYgMTYuNSAxNyAxNi41IDE5LjUgMTcuNiAxOS41IDE5IDE4LjQgMjEuNSAxNyAyMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXJPZmYgPSBcIk02LDNWNC4xOEw4LjgyLDdIMThWM0g2TTIuMjgsM0wxLDQuMjdMNC43NSw4QzMuMTksOC4xNSAyLDkuNDQgMiwxMVYxN0g2VjIxSDE3LjczTDE5LjczLDIzTDIxLDIxLjcyTDIuMjgsM005LjgyLDhMMTguODIsMTdIMjJWMTFBMywzIDAgMCwwIDE5LDhIOS44Mk0xOSwxMEExLDEgMCAwLDEgMjAsMTFBMSwxIDAgMCwxIDE5LDEyQTEsMSAwIDAsMSAxOCwxMUExLDEgMCAwLDEgMTksMTBNOCwxNEgxMC43M0wxNS43MywxOUg4VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXJQb3MgPSBcIk0xOCAxMEg2QTIgMiAwIDAgMCA0IDEyVjE5SDIwVjEyQTIgMiAwIDAgMCAxOCAxME0xOCAxNEgxNFYxMkgxOE0xNyA5SDdWNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyU2VhcmNoID0gXCJNMjAuMyAxOC45QzIwLjcgMTguMiAyMSAxNy40IDIxIDE2LjVDMjEgMTQgMTkgMTIgMTYuNSAxMlMxMiAxNCAxMiAxNi41IDE0IDIxIDE2LjUgMjFDMTcuNCAyMSAxOC4yIDIwLjggMTguOSAyMC4zTDIyIDIzLjRMMjMuNCAyMkwyMC4zIDE4LjlNMTYuNSAxOUMxNS4xIDE5IDE0IDE3LjkgMTQgMTYuNVMxNS4xIDE0IDE2LjUgMTQgMTkgMTUuMSAxOSAxNi41IDE3LjkgMTkgMTYuNSAxOU0xOCA3SDZWM0gxOFY3TTYgMjFWMTdIMlYxMUMyIDkuMyAzLjMgOCA1IDhIMTlDMjAuNyA4IDIyIDkuMyAyMiAxMVYxM0MyMC44IDExLjIgMTguOCAxMCAxNi41IDEwQzEzLjggMTAgMTEuNSAxMS43IDEwLjUgMTRIOFYxOUgxMC41QzEwLjggMTkuNyAxMS4zIDIwLjQgMTEuOCAyMUg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXJTZXR0aW5ncyA9IFwiTTE4LDJWNkg2VjJIMThNMTksMTFBMSwxIDAgMCwwIDIwLDEwQTEsMSAwIDAsMCAxOSw5QTEsMSAwIDAsMCAxOCwxMEExLDEgMCAwLDAgMTksMTFNMTYsMThWMTNIOFYxOEgxNk0xOSw3QTMsMyAwIDAsMSAyMiwxMFYxNkgxOFYyMEg2VjE2SDJWMTBBMywzIDAgMCwxIDUsN0gxOU0xNSwyNFYyMkgxN1YyNEgxNU0xMSwyNFYyMkgxM1YyNEgxMU03LDI0VjIySDlWMjRIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyV2lyZWxlc3MgPSBcIk00LjkzLDMuOTJMNi4zNCw1LjMzQzkuNDYsMi4yIDE0LjUzLDIuMiAxNy42Niw1LjMzTDE5LjA3LDMuOTJDMTUuMTcsMCA4Ljg0LDAgNC45MywzLjkyTTcuNzYsNi43NUw5LjE3LDguMTZDMTAuNzMsNi42IDEzLjI2LDYuNiAxNC44Myw4LjE2TDE2LjI0LDYuNzVDMTMuOSw0LjQxIDEwLjEsNC40MSA3Ljc2LDYuNzVNMTksMTRBMSwxIDAgMCwxIDE4LDEzQTEsMSAwIDAsMSAxOSwxMkExLDEgMCAwLDEgMjAsMTNBMSwxIDAgMCwxIDE5LDE0TTE2LDIwSDhWMTVIMTZWMjBNMTksMTBINUEzLDMgMCAwLDAgMiwxM1YxOEg2VjIySDE4VjE4SDIyVjEzQTMsMyAwIDAsMCAxOSwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQcmlvcml0eUhpZ2ggPSBcIk0xNCwxOUgyMlYxN0gxNFYxOU0xNCwxMy41SDIyVjExLjVIMTRWMTMuNU0xNCw4SDIyVjZIMTRWOE0yLDEyLjVDMiw4LjkyIDQuOTIsNiA4LjUsNkg5VjRMMTIsN0w5LDEwVjhIOC41QzYsOCA0LDEwIDQsMTIuNUM0LDE1IDYsMTcgOC41LDE3SDEyVjE5SDguNUM0LjkyLDE5IDIsMTYuMDggMiwxMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW9yaXR5TG93ID0gXCJNMTQsNUgyMlY3SDE0VjVNMTQsMTAuNUgyMlYxMi41SDE0VjEwLjVNMTQsMTZIMjJWMThIMTRWMTZNMiwxMS41QzIsMTUuMDggNC45MiwxOCA4LjUsMThIOVYyMEwxMiwxN0w5LDE0VjE2SDguNUM2LDE2IDQsMTQgNCwxMS41QzQsOSA2LDcgOC41LDdIMTJWNUg4LjVDNC45Miw1IDIsNy45MiAyLDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvZmVzc2lvbmFsSGV4YWdvbiA9IFwiTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTUsOVYxNUg2LjI1VjEzSDdBMiwyIDAgMCwwIDksMTFBMiwyIDAgMCwwIDcsOUg1TTYuMjUsMTJWMTBINi43NUExLDEgMCAwLDEgNy43NSwxMUExLDEgMCAwLDEgNi43NSwxMkg2LjI1TTkuNzUsOVYxNUgxMVYxM0gxMS43NUwxMi40MSwxNUgxMy43M0wxMi45NCwxMi42MUMxMy40MywxMi4yNSAxMy43NSwxMS42NiAxMy43NSwxMUEyLDIgMCAwLDAgMTEuNzUsOUg5Ljc1TTExLDEyVjEwSDExLjVBMSwxIDAgMCwxIDEyLjUsMTFBMSwxIDAgMCwxIDExLjUsMTJIMTFNMTcsOUMxNS42Miw5IDE0LjUsMTAuMzQgMTQuNSwxMkMxNC41LDEzLjY2IDE1LjYyLDE1IDE3LDE1QzE4LjM4LDE1IDE5LjUsMTMuNjYgMTkuNSwxMkMxOS41LDEwLjM0IDE4LjM4LDkgMTcsOU0xNywxMC4yNUMxNy43NiwxMC4yNSAxOC4zOCwxMS4wMyAxOC4zOCwxMkMxOC4zOCwxMi45NyAxNy43NiwxMy43NSAxNywxMy43NUMxNi4yNCwxMy43NSAxNS42MywxMi45NyAxNS42MywxMkMxNS42MywxMS4wMyAxNi4yNCwxMC4yNSAxNywxMC4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9ncmVzc0FsZXJ0ID0gXCJNMTMsMlY0QzE3LjM5LDQuNTQgMjAuNSw4LjUzIDE5Ljk2LDEyLjkyQzE5LjUsMTYuNTYgMTYuNjQsMTkuNDMgMTMsMTkuODhWMjEuODhDMTguNSwyMS4yOCAyMi40NSwxNi4zNCAyMS44NSwxMC44NUMyMS4zMyw2LjE5IDE3LjY2LDIuNSAxMywyTTExLDJDOS4wNCwyLjE4IDcuMTksMi45NSA1LjY3LDQuMkw3LjEsNS43NEM4LjIyLDQuODQgOS41Nyw0LjI2IDExLDQuMDZWMi4wNk00LjI2LDUuNjdDMyw3LjE5IDIuMjQsOS4wNCAyLjA1LDExSDQuMDVDNC4yNCw5LjU4IDQuOCw4LjIzIDUuNjksNy4xTDQuMjYsNS42N00yLjA2LDEzQzIuMjYsMTQuOTYgMy4wMywxNi44MSA0LjI3LDE4LjMzTDUuNjksMTYuOUM0LjgxLDE1Ljc3IDQuMjQsMTQuNDIgNC4wNiwxM0gyLjA2TTcuMDYsMTguMzdMNS42NywxOS43NEM3LjE4LDIxIDkuMDQsMjEuNzkgMTEsMjJWMjBDOS41OCwxOS44MiA4LjIzLDE5LjI1IDcuMSwxOC4zN0g3LjA2TTEzLDEzVjdIMTFWMTNIMTNNMTMsMTdWMTVIMTFWMTdIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvZ3Jlc3NDaGVjayA9IFwiTTEzLDIuMDNWMi4wNUwxMyw0LjA1QzE3LjM5LDQuNTkgMjAuNSw4LjU4IDE5Ljk2LDEyLjk3QzE5LjUsMTYuNjEgMTYuNjQsMTkuNSAxMywxOS45M1YyMS45M0MxOC41LDIxLjM4IDIyLjUsMTYuNSAyMS45NSwxMUMyMS41LDYuMjUgMTcuNzMsMi41IDEzLDIuMDNNMTEsMi4wNkM5LjA1LDIuMjUgNy4xOSwzIDUuNjcsNC4yNkw3LjEsNS43NEM4LjIyLDQuODQgOS41Nyw0LjI2IDExLDQuMDZWMi4wNk00LjI2LDUuNjdDMyw3LjE5IDIuMjUsOS4wNCAyLjA1LDExSDQuMDVDNC4yNCw5LjU4IDQuOCw4LjIzIDUuNjksNy4xTDQuMjYsNS42N00xNS41LDguNUwxMC42MiwxMy4zOEw4LjUsMTEuMjZMNy40NCwxMi4zMkwxMC42MiwxNS41TDE2LjU2LDkuNTZMMTUuNSw4LjVNMi4wNiwxM0MyLjI2LDE0Ljk2IDMuMDMsMTYuODEgNC4yNywxOC4zM0w1LjY5LDE2LjlDNC44MSwxNS43NyA0LjI0LDE0LjQyIDQuMDYsMTNIMi4wNk03LjEsMTguMzdMNS42NywxOS43NEM3LjE4LDIxIDkuMDQsMjEuNzkgMTEsMjJWMjBDOS41OCwxOS44MiA4LjIzLDE5LjI1IDcuMSwxOC4zN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9ncmVzc0Nsb2NrID0gXCJNMTMsMi4wM1YyLjA1TDEzLDQuMDVDMTcuMzksNC41OSAyMC41LDguNTggMTkuOTYsMTIuOTdDMTkuNSwxNi42MSAxNi42NCwxOS41IDEzLDE5LjkzVjIxLjkzQzE4LjUsMjEuMzggMjIuNSwxNi41IDIxLjk1LDExQzIxLjUsNi4yNSAxNy43MywyLjUgMTMsMi4wM00xMSwyLjA2QzkuMDUsMi4yNSA3LjE5LDMgNS42Nyw0LjI2TDcuMSw1Ljc0QzguMjIsNC44NCA5LjU3LDQuMjYgMTEsNC4wNlYyLjA2TTQuMjYsNS42N0MzLDcuMTkgMi4yNSw5LjA0IDIuMDUsMTFINC4wNUM0LjI0LDkuNTggNC44LDguMjMgNS42OSw3LjFMNC4yNiw1LjY3TTIuMDYsMTNDMi4yNiwxNC45NiAzLjAzLDE2LjgxIDQuMjcsMTguMzNMNS42OSwxNi45QzQuODEsMTUuNzcgNC4yNCwxNC40MiA0LjA2LDEzSDIuMDZNNy4xLDE4LjM3TDUuNjcsMTkuNzRDNy4xOCwyMSA5LjA0LDIxLjc5IDExLDIyVjIwQzkuNTgsMTkuODIgOC4yMywxOS4yNSA3LjEsMTguMzdNMTIuNSw3VjEyLjI1TDE3LDE0LjkyTDE2LjI1LDE2LjE1TDExLDEzVjdIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9ncmVzc0Nsb3NlID0gXCJNMTMgMi4wM1Y0LjA1QzE3LjM5IDQuNTkgMjAuNSA4LjU4IDE5Ljk2IDEyLjk3QzE5LjUgMTYuNjEgMTYuNjQgMTkuNSAxMyAxOS45M1YyMS45M0MxOC41IDIxLjM4IDIyLjUgMTYuNSAyMS45NSAxMUMyMS41IDYuMjUgMTcuNzMgMi41IDEzIDIuMDNNMTEgMi4wNkM5LjA1IDIuMjUgNy4xOSAzIDUuNjcgNC4yNkw3LjEgNS43NEM4LjIyIDQuODQgOS41NyA0LjI2IDExIDQuMDZWMi4wNk00LjI2IDUuNjdDMyA3LjE5IDIuMjUgOS4wNCAyLjA1IDExSDQuMDVDNC4yNCA5LjU4IDQuOCA4LjIzIDUuNjkgNy4xTDQuMjYgNS42N00yLjA2IDEzQzIuMjYgMTQuOTYgMy4wMyAxNi44MSA0LjI3IDE4LjMzTDUuNjkgMTYuOUM0LjgxIDE1Ljc3IDQuMjQgMTQuNDIgNC4wNiAxM0gyLjA2TTcuMSAxOC4zN0w1LjY3IDE5Ljc0QzcuMTggMjEgOS4wNCAyMS43OSAxMSAyMlYyMEM5LjU4IDE5LjgyIDguMjMgMTkuMjUgNy4xIDE4LjM3TTE0LjU5IDhMMTIgMTAuNTlMOS40MSA4TDggOS40MUwxMC41OSAxMkw4IDE0LjU5TDkuNDEgMTZMMTIgMTMuNDFMMTQuNTkgMTZMMTYgMTQuNTlMMTMuNDEgMTJMMTYgOS40MUwxNC41OSA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByb2dyZXNzRG93bmxvYWQgPSBcIk0xMywyLjAzQzE3LjczLDIuNSAyMS41LDYuMjUgMjEuOTUsMTFDMjIuNSwxNi41IDE4LjUsMjEuMzggMTMsMjEuOTNWMTkuOTNDMTYuNjQsMTkuNSAxOS41LDE2LjYxIDE5Ljk2LDEyLjk3QzIwLjUsOC41OCAxNy4zOSw0LjU5IDEzLDQuMDVWMi4wNUwxMywyLjAzTTExLDIuMDZWNC4wNkM5LjU3LDQuMjYgOC4yMiw0Ljg0IDcuMSw1Ljc0TDUuNjcsNC4yNkM3LjE5LDMgOS4wNSwyLjI1IDExLDIuMDZNNC4yNiw1LjY3TDUuNjksNy4xQzQuOCw4LjIzIDQuMjQsOS41OCA0LjA1LDExSDIuMDVDMi4yNSw5LjA0IDMsNy4xOSA0LjI2LDUuNjdNMi4wNiwxM0g0LjA2QzQuMjQsMTQuNDIgNC44MSwxNS43NyA1LjY5LDE2LjlMNC4yNywxOC4zM0MzLjAzLDE2LjgxIDIuMjYsMTQuOTYgMi4wNiwxM003LjEsMTguMzdDOC4yMywxOS4yNSA5LjU4LDE5LjgyIDExLDIwVjIyQzkuMDQsMjEuNzkgNy4xOCwyMSA1LjY3LDE5Ljc0TDcuMSwxOC4zN00xMiwxNi41TDcuNSwxMkgxMVY4SDEzVjEySDE2LjVMMTIsMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9ncmVzc1F1ZXN0aW9uID0gXCJNMTMgMi4wM1Y0LjA1QzE3LjM5IDQuNTkgMjAuNSA4LjU4IDE5Ljk2IDEyLjk3QzE5LjUgMTYuNjEgMTYuNjQgMTkuNSAxMyAxOS45M1YyMS45M0MxOC41IDIxLjM4IDIyLjUgMTYuNSAyMS45NSAxMUMyMS41IDYuMjUgMTcuNzMgMi41IDEzIDIuMDNNMTEgMi4wNkM5LjA1IDIuMjUgNy4xOSAzIDUuNjcgNC4yNkw3LjEgNS43NEM4LjIyIDQuODQgOS41NyA0LjI2IDExIDQuMDZWMi4wNk00LjI2IDUuNjdDMyA3LjE5IDIuMjUgOS4wNCAyLjA1IDExSDQuMDVDNC4yNCA5LjU4IDQuOCA4LjIzIDUuNjkgNy4xTDQuMjYgNS42N00yLjA2IDEzQzIuMjYgMTQuOTYgMy4wMyAxNi44MSA0LjI3IDE4LjMzTDUuNjkgMTYuOUM0LjgxIDE1Ljc3IDQuMjQgMTQuNDIgNC4wNiAxM0gyLjA2TTcuMSAxOC4zN0w1LjY3IDE5Ljc0QzcuMTggMjEgOS4wNCAyMS43OSAxMSAyMlYyMEM5LjU4IDE5LjgyIDguMjMgMTkuMjUgNy4xIDE4LjM3TTIwIDRINDRNMTMgMThIMTFWMTZIMTNWMThNMTMgMTVIMTFDMTEgMTEuNzUgMTQgMTIgMTQgMTBDMTQgOC45IDEzLjEgOCAxMiA4UzEwIDguOSAxMCAxMEg4QzggNy43OSA5Ljc5IDYgMTIgNlMxNiA3Ljc5IDE2IDEwQzE2IDEyLjUgMTMgMTIuNzUgMTMgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvZ3Jlc3NVcGxvYWQgPSBcIk0xMywyLjAzQzE3LjczLDIuNSAyMS41LDYuMjUgMjEuOTUsMTFDMjIuNSwxNi41IDE4LjUsMjEuMzggMTMsMjEuOTNWMTkuOTNDMTYuNjQsMTkuNSAxOS41LDE2LjYxIDE5Ljk2LDEyLjk3QzIwLjUsOC41OCAxNy4zOSw0LjU5IDEzLDQuMDVWMi4wNUwxMywyLjAzTTExLDIuMDZWNC4wNkM5LjU3LDQuMjYgOC4yMiw0Ljg0IDcuMSw1Ljc0TDUuNjcsNC4yNkM3LjE5LDMgOS4wNSwyLjI1IDExLDIuMDZNNC4yNiw1LjY3TDUuNjksNy4xQzQuOCw4LjIzIDQuMjQsOS41OCA0LjA1LDExSDIuMDVDMi4yNSw5LjA0IDMsNy4xOSA0LjI2LDUuNjdNMi4wNiwxM0g0LjA2QzQuMjQsMTQuNDIgNC44MSwxNS43NyA1LjY5LDE2LjlMNC4yNywxOC4zM0MzLjAzLDE2LjgxIDIuMjYsMTQuOTYgMi4wNiwxM003LjEsMTguMzdDOC4yMywxOS4yNSA5LjU4LDE5LjgyIDExLDIwVjIyQzkuMDQsMjEuNzkgNy4xOCwyMSA1LjY3LDE5Ljc0TDcuMSwxOC4zN00xMiw3LjVMNy41LDEySDExVjE2SDEzVjEySDE2LjVMMTIsNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByb2dyZXNzV3JlbmNoID0gXCJNMTMsMi4wM1YyLjA1TDEzLDQuMDVDMTcuMzksNC41OSAyMC41LDguNTggMTkuOTYsMTIuOTdDMTkuNSwxNi42MSAxNi42NCwxOS41IDEzLDE5LjkzVjIxLjkzQzE4LjUsMjEuMzggMjIuNSwxNi41IDIxLjk1LDExQzIxLjUsNi4yNSAxNy43MywyLjUgMTMsMi4wM00xMSwyLjA2QzkuMDUsMi4yNSA3LjE5LDMgNS42Nyw0LjI2TDcuMSw1Ljc0QzguMjIsNC44NCA5LjU3LDQuMjYgMTEsNC4wNlYyLjA2TTQuMjYsNS42N0MzLDcuMTkgMi4yNSw5LjA0IDIuMDUsMTFINC4wNUM0LjI0LDkuNTggNC44LDguMjMgNS42OSw3LjFMNC4yNiw1LjY3TTIuMDYsMTNDMi4yNiwxNC45NiAzLjAzLDE2LjgxIDQuMjcsMTguMzNMNS42OSwxNi45QzQuODEsMTUuNzcgNC4yNCwxNC40MiA0LjA2LDEzSDIuMDZNNy4xLDE4LjM3TDUuNjcsMTkuNzRDNy4xOCwyMSA5LjA0LDIxLjc5IDExLDIyVjIwQzkuNTgsMTkuODIgOC4yMywxOS4yNSA3LjEsMTguMzdNMTYuODIsMTUuMTlMMTIuNzEsMTEuMDhDMTMuMTIsMTAuMDQgMTIuODksOC44MiAxMi4wMyw3Ljk3QzExLjEzLDcuMDYgOS43OCw2Ljg4IDguNjksNy4zOEwxMC42Myw5LjMyTDkuMjgsMTAuNjhMNy4yOSw4LjczQzYuNzUsOS44MiA3LDExLjE3IDcuODgsMTIuMDhDOC43NCwxMi45NCA5Ljk2LDEzLjE2IDExLDEyLjc2TDE1LjExLDE2Ljg2QzE1LjI5LDE3LjA1IDE1LjU2LDE3LjA1IDE1Ljc0LDE2Ljg2TDE2Ljc4LDE1LjgzQzE3LDE1LjY1IDE3LDE1LjMzIDE2LjgyLDE1LjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByb2plY3RvciA9IFwiTTE2LDZDMTQuODcsNiAxMy43Nyw2LjM1IDEyLjg0LDdINEMyLjg5LDcgMiw3Ljg5IDIsOVYxNUMyLDE2LjExIDIuODksMTcgNCwxN0g1VjE4QTEsMSAwIDAsMCA2LDE5SDhBMSwxIDAgMCwwIDksMThWMTdIMTVWMThBMSwxIDAgMCwwIDE2LDE5SDE4QTEsMSAwIDAsMCAxOSwxOFYxN0gyMEMyMS4xMSwxNyAyMiwxNi4xMSAyMiwxNVY5QzIyLDcuODkgMjEuMTEsNyAyMCw3SDE5LjE1QzE4LjIzLDYuMzUgMTcuMTMsNiAxNiw2TTE2LDcuNUEzLjUsMy41IDAgMCwxIDE5LjUsMTFBMy41LDMuNSAwIDAsMSAxNiwxNC41QTMuNSwzLjUgMCAwLDEgMTIuNSwxMUEzLjUsMy41IDAgMCwxIDE2LDcuNU00LDlIOFYxMEg0VjlNMTYsOUEyLDIgMCAwLDAgMTQsMTFBMiwyIDAgMCwwIDE2LDEzQTIsMiAwIDAsMCAxOCwxMUEyLDIgMCAwLDAgMTYsOU00LDExSDhWMTJINFYxMU00LDEzSDhWMTRINFYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9qZWN0b3JTY3JlZW4gPSBcIk00LDJBMSwxIDAgMCwwIDMsM1Y0QTEsMSAwIDAsMCA0LDVINVYxNEgxMVYxNi41OUw2Ljc5LDIwLjc5TDguMjEsMjIuMjFMMTEsMTkuNDFWMjJIMTNWMTkuNDFMMTUuNzksMjIuMjFMMTcuMjEsMjAuNzlMMTMsMTYuNTlWMTRIMTlWNUgyMEExLDEgMCAwLDAgMjEsNFYzQTEsMSAwIDAsMCAyMCwySDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvamVjdG9yU2NyZWVuT3V0bGluZSA9IFwiTTIwIDJINEMzLjQ1IDIgMyAyLjQ1IDMgM1Y0QzMgNC41NSAzLjQ1IDUgNCA1SDVWMTRIMTFWMTYuNTlMNi43OSAyMC43OUw4LjIxIDIyLjIxTDExIDE5LjQxVjIySDEzVjE5LjQxTDE1Ljc5IDIyLjIxTDE3LjIxIDIwLjc5TDEzIDE2LjU5VjE0SDE5VjVIMjBDMjAuNTUgNSAyMSA0LjU1IDIxIDRWM0MyMSAyLjQ1IDIwLjU1IDIgMjAgMk0xNyAxMkg3VjVIMTdWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvcGFuZVRhbmsgPSBcIk0xNiA2SDE2VjRDMTYgMi45IDE1LjExIDIgMTQgMkgxMEM4LjkgMiA4IDIuOSA4IDRWNkg4QzUuNzkgNiA0IDcuNzkgNCAxMFYxN0M0IDE4Ljg2IDUuMjggMjAuNDEgNyAyMC44NlYyMkgxN1YyMC44NkMxOC43MiAyMC40MiAyMCAxOC44NiAyMCAxN1YxMEMyMCA3Ljc5IDE4LjIxIDYgMTYgNk0xMCA0SDE0VjZIMTBWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9wYW5lVGFua091dGxpbmUgPSBcIk0xNiA2VjRDMTYgMi45IDE1LjExIDIgMTQgMkgxMEM4LjkgMiA4IDIuOSA4IDRWNkM1Ljc5IDYgNCA3Ljc5IDQgMTBWMTdDNCAxOC44NiA1LjI4IDIwLjQxIDcgMjAuODZWMjJIMTdWMjAuODZDMTguNzIgMjAuNDIgMjAgMTguODYgMjAgMTdWMTBDMjAgNy43OSAxOC4yMSA2IDE2IDZNMTAgNEgxNFY2SDEwVjRNMTggMTdDMTggMTguMSAxNy4xIDE5IDE2IDE5SDhDNi45IDE5IDYgMTguMSA2IDE3VjEwQzYgOC45IDYuOSA4IDggOEgxNkMxNy4xIDggMTggOC45IDE4IDEwVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByb3RvY29sID0gXCJNMTggMjBIMTRMMTggNEgyMk0xNiA0SDEyTDggMjBIMTJNMiAxNi41QTIuNSAyLjUgMCAwIDAgNC41IDE5QTIuNSAyLjUgMCAwIDAgNyAxNi41QTIuNSAyLjUgMCAwIDAgNC41IDE0QTIuNSAyLjUgMCAwIDAgMiAxNi41TTIgOS41QTIuNSAyLjUgMCAwIDAgNC41IDEyQTIuNSAyLjUgMCAwIDAgNyA5LjVBMi41IDIuNSAwIDAgMCA0LjUgN0EyLjUgMi41IDAgMCAwIDIgOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1Ymxpc2ggPSBcIk01LDRWNkgxOVY0SDVNNSwxNEg5VjIwSDE1VjE0SDE5TDEyLDdMNSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQdWxzZSA9IFwiTTMsMTNINS43OUwxMC4xLDQuNzlMMTEuMjgsMTMuNzVMMTQuNSw5LjY2TDE3LjgzLDEzSDIxVjE1SDE3TDE0LjY3LDEyLjY3TDkuOTIsMTguNzNMOC45NCwxMS4zMUw3LDE1SDNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHVtcCA9IFwiTTIgMjFWMTVIMy41QzMuMTggMTQuMDYgMyAxMy4wNSAzIDEyQzMgNy4wMyA3LjAzIDMgMTIgM0gyMlY5SDIwLjVDMjAuODIgOS45NCAyMSAxMC45NSAyMSAxMkMyMSAxNi45NyAxNi45NyAyMSAxMiAyMUgyTTUgMTJDNSAxMy4yOCA1LjM0IDE0LjQ3IDUuOTQgMTUuNUw5LjQgMTMuNUM5LjE1IDEzLjA2IDkgMTIuNTUgOSAxMkM5IDExLjM1IDkuMjEgMTAuNzUgOS41NiAxMC4yNkw2LjMgNy45M0M1LjUgOS4wOCA1IDEwLjUgNSAxMk0xMiAxOUMxNC41OSAxOSAxNi44NSAxNy41OSAxOC4wNiAxNS41TDE0LjYgMTMuNUMxNC4wOCAxNC40IDEzLjExIDE1IDEyIDE1TDExLjcxIDE1TDExLjMzIDE4Ljk3TDEyIDE5TTEyIDlDMTMuMjEgOSAxNC4yNiA5LjcyIDE0LjczIDEwLjc2TDE4LjM3IDkuMUMxNy4yNyA2LjY4IDE0LjgzIDUgMTIgNVY5TTEyIDExQzExLjQ1IDExIDExIDExLjQ1IDExIDEyQzExIDEyLjU1IDExLjQ1IDEzIDEyIDEzQzEyLjU1IDEzIDEzIDEyLjU1IDEzIDEyQzEzIDExLjQ1IDEyLjU1IDExIDEyIDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1bXBraW4gPSBcIk02LjUsNkM3LjQ3LDYgOC4zNyw2LjUgOS4xMSw3LjM4QzkuNjYsNi43OSAxMC4zMSw2LjM2IDExLDYuMTVWNEEyLDIgMCAwLDEgMTMsMkgxNVY0SDEzVjYuMTVDMTMuNjksNi4zNiAxNC4zNCw2Ljc5IDE0Ljg5LDcuMzhDMTUuNjMsNi41IDE2LjUzLDYgMTcuNSw2QzIwLDYgMjIsOS4zNiAyMiwxMy41QzIyLDE3LjY0IDIwLDIxIDE3LjUsMjFDMTYuNTMsMjEgMTUuNjMsMjAuNSAxNC44OSwxOS42MkMxNC4wOCwyMC41IDEzLjA4LDIxIDEyLDIxQzEwLjkyLDIxIDkuOTIsMjAuNSA5LjExLDE5LjYyQzguMzcsMjAuNSA3LjQ3LDIxIDYuNSwyMUM0LDIxIDIsMTcuNjQgMiwxMy41QzIsOS4zNiA0LDYgNi41LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHVyc2UgPSBcIk0yMiwxOS4xTDIxLDEwLjVBMS42NSwxLjY1IDAgMCwwIDE5LjMsOUgxNlY1TDE0LDNIMTBMOCw1VjlINC43QTEuNjUsMS42NSAwIDAsMCAzLDEwLjVMMiwxOS4xQTEuNzQsMS43NCAwIDAsMCAzLjcsMjFIMjAuM0ExLjc0LDEuNzQgMCAwLDAgMjIsMTkuMU0xMCw1SDE0VjlIMTBcIjtcclxuZXhwb3J0IHZhciBtZGlQdXJzZU91dGxpbmUgPSBcIk0xOSwxMUwyMCwxOUg0TDUsMTFIMTlNMTQsM0gxMEw4LDVWOUg0LjdBMS42NSwxLjY1IDAgMCwwIDMsMTAuNUwyLDE5LjFBMS43NCwxLjc0IDAgMCwwIDMuNywyMUgyMC4zQTEuNzQsMS43NCAwIDAsMCAyMiwxOS4xTDIxLDEwLjVBMS42NSwxLjY1IDAgMCwwIDE5LjMsOUgxNlY1TDE0LDNNMTAsOVY1SDE0VjlcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGUgPSBcIk0yMC41LDExSDE5VjdDMTksNS44OSAxOC4xLDUgMTcsNUgxM1YzLjVBMi41LDIuNSAwIDAsMCAxMC41LDFBMi41LDIuNSAwIDAsMCA4LDMuNVY1SDRBMiwyIDAgMCwwIDIsN1YxMC44SDMuNUM1LDEwLjggNi4yLDEyIDYuMiwxMy41QzYuMiwxNSA1LDE2LjIgMy41LDE2LjJIMlYyMEEyLDIgMCAwLDAgNCwyMkg3LjhWMjAuNUM3LjgsMTkgOSwxNy44IDEwLjUsMTcuOEMxMiwxNy44IDEzLjIsMTkgMTMuMiwyMC41VjIySDE3QTIsMiAwIDAsMCAxOSwyMFYxNkgyMC41QTIuNSwyLjUgMCAwLDAgMjMsMTMuNUEyLjUsMi41IDAgMCwwIDIwLjUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlQ2hlY2sgPSBcIk0yMy41IDE3TDE4LjUgMjJMMTUgMTguNUwxNi41IDE3TDE4LjUgMTlMMjIgMTUuNUwyMy41IDE3TTIwLjUgMTFDMjEuODggMTEgMjMgMTIuMTIgMjMgMTMuNUMyMyAxMy44MSAyMi45NCAxNC4xMSAyMi44NCAxNC4zOUMyMS44IDEzLjUgMjAuNDYgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlWMTkuNTRDMTIuNjQgMTguNSAxMS42NSAxNy44IDEwLjUgMTcuOEM5IDE3LjggNy44IDE5IDcuOCAyMC41VjIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjE2LjJIMy41QzUgMTYuMiA2LjIgMTUgNi4yIDEzLjVTNSAxMC44IDMuNSAxMC44SDJWN0MyIDUuODkgMi45IDUgNCA1SDhWMy41QzggMi4xMiA5LjEyIC45OTggMTAuNSAuOTk4UzEzIDIuMTIgMTMgMy41VjVIMTdDMTguMSA1IDE5IDUuODkgMTkgN1YxMUgyMC41XCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlQ2hlY2tPdXRsaW5lID0gXCJNMjMuNSAxN0wxOC41IDIyTDE1IDE4LjVMMTYuNSAxN0wxOC41IDE5TDIyIDE1LjVMMjMuNSAxN00yMiAxMy41TDIyIDEzLjhDMjEuMzcgMTMuNDQgMjAuNjcgMTMuMTkgMTkuOTQgMTMuMDdDMTkuNzUgMTIuNDUgMTkuMTggMTIgMTguNSAxMkgxN1Y3SDEyVjUuNUMxMiA0LjY3IDExLjMzIDQgMTAuNSA0QzkuNjcgNCA5IDQuNjcgOSA1LjVWN0g0TDQgOS4xMkM1Ljc2IDkuOCA3IDExLjUgNyAxMy41QzcgMTUuNSA1Ljc1IDE3LjIgNCAxNy44OFYyMEg2LjEyQzYuOCAxOC4yNSA4LjUgMTcgMTAuNSAxN0MxMS40NyAxNyAxMi4zNyAxNy4zIDEzLjEyIDE3LjhMMTMgMTlDMTMgMjAuMDkgMTMuMjkgMjEuMTIgMTMuOCAyMkgxMy4yVjIxLjdDMTMuMiAyMC4yMSAxMiAxOSAxMC41IDE5QzkgMTkgNy44IDIwLjIxIDcuOCAyMS43VjIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjE2LjJIMi4zQzMuNzkgMTYuMiA1IDE1IDUgMTMuNUM1IDEyIDMuNzkgMTAuOCAyLjMgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDcuMDRDNy4yOCAzLjMgOC43NCAyIDEwLjUgMkMxMi4yNiAyIDEzLjcyIDMuMyAxMy45NiA1SDE3QzE4LjEgNSAxOSA1LjkgMTkgN1YxMC4wNEMyMC43IDEwLjI4IDIyIDExLjc0IDIyIDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlRWRpdCA9IFwiTTIxLjA0IDEyLjEzQzIwLjkgMTIuMTMgMjAuNzYgMTIuMTkgMjAuNjUgMTIuM0wxOS42NSAxMy4zTDIxLjcgMTUuMzVMMjIuNyAxNC4zNUMyMi45MiAxNC4xNCAyMi45MiAxMy43OSAyMi43IDEzLjU4TDIxLjQyIDEyLjNDMjEuMzEgMTIuMTkgMjEuMTggMTIuMTMgMjEuMDQgMTIuMTNNMTkuMDcgMTMuODhMMTMgMTkuOTRWMjJIMTUuMDZMMjEuMTIgMTUuOTNMMTkuMDcgMTMuODhNMTkgMTEuMTJMMTEuOTEgMTguMkMxMS41IDE3Ljk1IDExIDE3LjggMTAuNSAxNy44QzkgMTcuOCA3LjggMTkgNy44IDIwLjVWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMy41QzUgMTYuMiA2LjIgMTUgNi4yIDEzLjVTNSAxMC44IDMuNSAxMC44SDJWN0MyIDUuOSAyLjkgNSA0IDVIOFYzLjVDOCAyLjEyIDkuMTIgMSAxMC41IDFTMTMgMi4xMiAxMyAzLjVWNUgxN0MxOC4xIDUgMTkgNS44OSAxOSA3VjExLjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1enpsZUVkaXRPdXRsaW5lID0gXCJNMjEuMDQgMTIuMTNDMjAuOSAxMi4xMyAyMC43NiAxMi4xOSAyMC42NSAxMi4zTDE5LjY1IDEzLjNMMjEuNyAxNS4zNUwyMi43IDE0LjM1QzIyLjkyIDE0LjE0IDIyLjkyIDEzLjc5IDIyLjcgMTMuNThMMjEuNDIgMTIuM0MyMS4zMSAxMi4xOSAyMS4xOCAxMi4xMyAyMS4wNCAxMi4xM00xOS4wNyAxMy44OEwxMyAxOS45NFYyMkgxNS4wNkwyMS4xMiAxNS45M0wxOS4wNyAxMy44OE0xMS4wNSAxOS4wNkMxMC44NyAxOSAxMC42OSAxOSAxMC41IDE5QzkgMTkgNy44IDIwLjIxIDcuOCAyMS43VjIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFYxNi4ySDIuM0MzLjc5IDE2LjIgNSAxNSA1IDEzLjVTMy43OSAxMC44IDIuMyAxMC44SDJWN0MyIDUuOSAyLjkgNSA0IDVINy4wNEM3LjI4IDMuMyA4Ljc0IDIgMTAuNSAyUzEzLjcyIDMuMyAxMy45NiA1SDE3QzE4LjExIDUgMTkgNS45IDE5IDdWMTAuMDRDMTkuMzYgMTAuMDkgMTkuNjkgMTAuMjEgMjAgMTAuMzZDMTkuNzMgMTAuNSAxOS40NiAxMC42NiAxOS4yNCAxMC44OUwxOC4xMiAxMkgxN1Y3SDEyVjUuNUMxMiA0LjY3IDExLjMzIDQgMTAuNSA0UzkgNC42NyA5IDUuNVY3SDRWOS4xMkM1Ljc2IDkuOCA3IDExLjUgNyAxMy41UzUuNzUgMTcuMiA0IDE3Ljg4VjIwSDYuMTJDNi44IDE4LjI1IDguNSAxNyAxMC41IDE3QzExLjI2IDE3IDEyIDE3LjE4IDEyLjYxIDE3LjVMMTEuMDUgMTkuMDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlSGVhcnQgPSBcIk0xOSAyMi4zTDE4LjQgMjEuOEMxNi40IDE5LjkgMTUgMTguNyAxNSAxNy4yQzE1IDE2IDE2IDE1IDE3LjIgMTVDMTcuOSAxNSAxOC42IDE1LjMgMTkgMTUuOEMxOS40IDE1LjMgMjAuMSAxNSAyMC44IDE1QzIyIDE1IDIzIDE1LjkgMjMgMTcuMkMyMyAxOC43IDIxLjYgMTkuOSAxOS42IDIxLjhMMTkgMjIuM00yMC41IDExSDE5VjdDMTkgNS44OSAxOC4xIDUgMTcgNUgxM1YzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0QzIuOSA1IDIgNS45IDIgN1YxMC44SDMuNUM1IDEwLjggNi4yIDEyIDYuMiAxMy41UzUgMTYuMiAzLjUgMTYuMkgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJINy44VjIwLjVDNy44IDE5IDkgMTcuOCAxMC41IDE3LjhDMTEuNDQgMTcuOCAxMi4yNyAxOC4yNyAxMi43NSAxOUgxMy4wOUMxMy4wNCAxOC42NyAxMyAxOC4zNCAxMyAxOEMxMyAxNC42OSAxNS42OSAxMiAxOSAxMkMyMC41NCAxMiAyMS45NCAxMi41OCAyMyAxMy41M0MyMyAxMy41IDIzIDEzLjUgMjMgMTMuNUMyMyAxMi4xMiAyMS44OCAxMSAyMC41IDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1enpsZUhlYXJ0T3V0bGluZSA9IFwiTTEzLjIgMjJWMjEuN0MxMy4yIDIwLjIxIDEyIDE5IDEwLjUgMTlDOSAxOSA3LjggMjAuMjEgNy44IDIxLjdWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMi4zQzMuNzkgMTYuMiA1IDE1IDUgMTMuNVMzLjc5IDEwLjggMi4zIDEwLjhIMlY3QzIgNS45IDIuOSA1IDQgNUg3LjA0QzcuMjggMy4zIDguNzQgMiAxMC41IDJTMTMuNzIgMy4zIDEzLjk2IDVIMTdDMTguMTEgNSAxOSA1LjkgMTkgN1YxMC4wNEMyMC40NSAxMC4yNSAyMS42MSAxMS4zNCAyMS45MSAxMi43NkMyMS4wNSAxMi4yOCAyMC4wNiAxMiAxOSAxMkMxOC44OSAxMiAxOC43OCAxMiAxOC42NyAxMkMxOC42MSAxMiAxOC41NiAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDMgMTcgMTIuMjkgMTcuMjggMTMgMTcuNzRDMTMgMTcuODMgMTMgMTcuOTEgMTMgMThDMTMgMTkuNTQgMTMuNTggMjAuOTQgMTQuNTQgMjJIMTMuMk0xOSAyMi4zTDE5LjYgMjEuOEMyMS42IDE5LjkgMjMgMTguNyAyMyAxNy4yQzIzIDE1LjkgMjIgMTUgMjAuOCAxNUMyMC4xIDE1IDE5LjQgMTUuMyAxOSAxNS44QzE4LjYgMTUuMyAxNy45IDE1IDE3LjIgMTVDMTYgMTUgMTUgMTYgMTUgMTcuMkMxNSAxOC43IDE2LjQgMTkuOSAxOC40IDIxLjhMMTkgMjIuM1wiO1xyXG5leHBvcnQgdmFyIG1kaVB1enpsZU1pbnVzID0gXCJNMTMuMDQgMTkuNjFDMTIuNjcgMTguNTUgMTEuNjggMTcuOCAxMC41IDE3LjhDOSAxNy44IDcuOCAxOSA3LjggMjAuNVYyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTYuMkgzLjVDNSAxNi4yIDYuMiAxNSA2LjIgMTMuNVM1IDEwLjggMy41IDEwLjhIMlY3QzIgNS45IDIuOSA1IDQgNUg4VjMuNUM4IDIuMTIgOS4xMiAxIDEwLjUgMVMxMyAyLjEyIDEzIDMuNVY1SDE3QzE4LjEgNSAxOSA1Ljg5IDE5IDdWMTFIMjAuNUMyMS44OCAxMSAyMyAxMi4xMiAyMyAxMy41QzIzIDEzLjgyIDIyLjk0IDE0LjEyIDIyLjgzIDE0LjM5QzIxLjc5IDEzLjUzIDIwLjQ2IDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5QzEzIDE5LjIgMTMgMTkuNDEgMTMuMDQgMTkuNjFNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlTWludXNPdXRsaW5lID0gXCJNMTMuMiAyMlYyMS43QzEzLjIgMjAuMjEgMTIgMTkgMTAuNSAxOUM5IDE5IDcuOCAyMC4yMSA3LjggMjEuN1YyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTYuMkgyLjNDMy43OSAxNi4yIDUgMTUgNSAxMy41UzMuNzkgMTAuOCAyLjMgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDcuMDRDNy4yOCAzLjMgOC43NCAyIDEwLjUgMlMxMy43MiAzLjMgMTMuOTYgNUgxN0MxOC4xMSA1IDE5IDUuOSAxOSA3VjEwLjA0QzIwLjcgMTAuMjggMjIgMTEuNzQgMjIgMTMuNUMyMiAxMy42IDIyIDEzLjcgMjEuOTcgMTMuNzlDMjEuMzUgMTMuNDQgMjAuNjcgMTMuMiAxOS45MyAxMy4wOEMxOS43NSAxMi40NiAxOS4xOCAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDcgMTcgMTIuMzcgMTcuMyAxMy4xMiAxNy44MUMxMy4wNCAxOC4xOSAxMyAxOC41OSAxMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJIMTMuMk0xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVPdXRsaW5lID0gXCJNMjIsMTMuNUMyMiwxNS4yNiAyMC43LDE2LjcyIDE5LDE2Ljk2VjIwQTIsMiAwIDAsMSAxNywyMkgxMy4yVjIxLjdBMi43LDIuNyAwIDAsMCAxMC41LDE5QzksMTkgNy44LDIwLjIxIDcuOCwyMS43VjIySDRBMiwyIDAgMCwxIDIsMjBWMTYuMkgyLjNDMy43OSwxNi4yIDUsMTUgNSwxMy41QzUsMTIgMy43OSwxMC44IDIuMywxMC44SDJWN0EyLDIgMCAwLDEgNCw1SDcuMDRDNy4yOCwzLjMgOC43NCwyIDEwLjUsMkMxMi4yNiwyIDEzLjcyLDMuMyAxMy45Niw1SDE3QTIsMiAwIDAsMSAxOSw3VjEwLjA0QzIwLjcsMTAuMjggMjIsMTEuNzQgMjIsMTMuNU0xNywxNUgxOC41QTEuNSwxLjUgMCAwLDAgMjAsMTMuNUExLjUsMS41IDAgMCwwIDE4LjUsMTJIMTdWN0gxMlY1LjVBMS41LDEuNSAwIDAsMCAxMC41LDRBMS41LDEuNSAwIDAsMCA5LDUuNVY3SDRWOS4xMkM1Ljc2LDkuOCA3LDExLjUgNywxMy41QzcsMTUuNSA1Ljc1LDE3LjIgNCwxNy44OFYyMEg2LjEyQzYuOCwxOC4yNSA4LjUsMTcgMTAuNSwxN0MxMi41LDE3IDE0LjIsMTguMjUgMTQuODgsMjBIMTdWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlUGx1cyA9IFwiTTEzLjA0IDE5LjYxQzEyLjY3IDE4LjU1IDExLjY4IDE3LjggMTAuNSAxNy44QzkgMTcuOCA3LjggMTkgNy44IDIwLjVWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMy41QzUgMTYuMiA2LjIgMTUgNi4yIDEzLjVTNSAxMC44IDMuNSAxMC44SDJWN0MyIDUuOSAyLjkgNSA0IDVIOFYzLjVDOCAyLjEyIDkuMTIgMSAxMC41IDFTMTMgMi4xMiAxMyAzLjVWNUgxN0MxOC4xIDUgMTkgNS44OSAxOSA3VjExSDIwLjVDMjEuODggMTEgMjMgMTIuMTIgMjMgMTMuNUMyMyAxMy44MiAyMi45NCAxNC4xMiAyMi44MyAxNC4zOUMyMS43OSAxMy41MyAyMC40NiAxMyAxOSAxM0MxNS42OSAxMyAxMyAxNS42OSAxMyAxOUMxMyAxOS4yIDEzIDE5LjQxIDEzLjA0IDE5LjYxTTE4IDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1enpsZVBsdXNPdXRsaW5lID0gXCJNMTMuMiAyMlYyMS43QzEzLjIgMjAuMjEgMTIgMTkgMTAuNSAxOUM5IDE5IDcuOCAyMC4yMSA3LjggMjEuN1YyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTYuMkgyLjNDMy43OSAxNi4yIDUgMTUgNSAxMy41UzMuNzkgMTAuOCAyLjMgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDcuMDRDNy4yOCAzLjMgOC43NCAyIDEwLjUgMlMxMy43MiAzLjMgMTMuOTYgNUgxN0MxOC4xMSA1IDE5IDUuOSAxOSA3VjEwLjA0QzIwLjcgMTAuMjggMjIgMTEuNzQgMjIgMTMuNUMyMiAxMy42IDIyIDEzLjcgMjEuOTcgMTMuNzlDMjEuMzUgMTMuNDQgMjAuNjcgMTMuMiAxOS45MyAxMy4wOEMxOS43NSAxMi40NiAxOS4xOCAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDcgMTcgMTIuMzcgMTcuMyAxMy4xMiAxNy44MUMxMy4wNCAxOC4xOSAxMyAxOC41OSAxMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJIMTMuMk0xOCAxNVYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFYxNUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVSZW1vdmUgPSBcIk0xMy4wNCAxOS42MUMxMi42NyAxOC41NSAxMS42OCAxNy44IDEwLjUgMTcuOEM5IDE3LjggNy44IDE5IDcuOCAyMC41VjIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFYxNi4ySDMuNUM1IDE2LjIgNi4yIDE1IDYuMiAxMy41UzUgMTAuOCAzLjUgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDhWMy41QzggMi4xMiA5LjEyIDEgMTAuNSAxUzEzIDIuMTIgMTMgMy41VjVIMTdDMTguMSA1IDE5IDUuODkgMTkgN1YxMUgyMC41QzIxLjg4IDExIDIzIDEyLjEyIDIzIDEzLjVDMjMgMTMuODIgMjIuOTQgMTQuMTIgMjIuODMgMTQuMzlDMjEuNzkgMTMuNTMgMjAuNDYgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlDMTMgMTkuMiAxMyAxOS40MSAxMy4wNCAxOS42MU0yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVSZW1vdmVPdXRsaW5lID0gXCJNMTMuMiAyMlYyMS43QzEzLjIgMjAuMjEgMTIgMTkgMTAuNSAxOUM5IDE5IDcuOCAyMC4yMSA3LjggMjEuN1YyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTYuMkgyLjNDMy43OSAxNi4yIDUgMTUgNSAxMy41UzMuNzkgMTAuOCAyLjMgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDcuMDRDNy4yOCAzLjMgOC43NCAyIDEwLjUgMlMxMy43MiAzLjMgMTMuOTYgNUgxN0MxOC4xMSA1IDE5IDUuOSAxOSA3VjEwLjA0QzIwLjcgMTAuMjggMjIgMTEuNzQgMjIgMTMuNUMyMiAxMy42IDIyIDEzLjcgMjEuOTcgMTMuNzlDMjEuMzUgMTMuNDQgMjAuNjcgMTMuMiAxOS45MyAxMy4wOEMxOS43NSAxMi40NiAxOS4xOCAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDcgMTcgMTIuMzcgMTcuMyAxMy4xMiAxNy44MUMxMy4wNCAxOC4xOSAxMyAxOC41OSAxMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJIMTMuMk0yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVTdGFyID0gXCJNMTkgMjAuMDlMMjEuNDUgMjEuNThMMjAuOCAxOC43N0wyMyAxNi44OUwyMC4xMSAxNi42NEwxOSAxNEwxNy44NyAxNi42NEwxNSAxNi44OUwxNy4xOCAxOC43N0wxNi41IDIxLjU4TDE5IDIwLjA5TTIzIDEzLjVDMjMgMTMuNSAyMyAxMy41IDIzIDEzLjUzQzIxLjk0IDEyLjU4IDIwLjU0IDEyIDE5IDEyQzE1LjY5IDEyIDEzIDE0LjY5IDEzIDE4QzEzIDE4LjM0IDEzLjA0IDE4LjY3IDEzLjA5IDE5SDEyLjc1QzEyLjI3IDE4LjI3IDExLjQ0IDE3LjggMTAuNSAxNy44QzkgMTcuOCA3LjggMTkgNy44IDIwLjVWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMy41QzUgMTYuMiA2LjIgMTUgNi4yIDEzLjVTNSAxMC44IDMuNSAxMC44SDJWN0MyIDUuOSAyLjkgNSA0IDVIOFYzLjVDOCAyLjEyIDkuMTIgMSAxMC41IDFTMTMgMi4xMiAxMyAzLjVWNUgxN0MxOC4xIDUgMTkgNS44OSAxOSA3VjExSDIwLjVDMjEuODggMTEgMjMgMTIuMTIgMjMgMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVTdGFyT3V0bGluZSA9IFwiTTEzLjIgMjJWMjEuN0MxMy4yIDIwLjIxIDEyIDE5IDEwLjUgMTlDOSAxOSA3LjggMjAuMjEgNy44IDIxLjdWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMi4zQzMuNzkgMTYuMiA1IDE1IDUgMTMuNVMzLjc5IDEwLjggMi4zIDEwLjhIMlY3QzIgNS45IDIuOSA1IDQgNUg3LjA0QzcuMjggMy4zIDguNzQgMiAxMC41IDJTMTMuNzIgMy4zIDEzLjk2IDVIMTdDMTguMTEgNSAxOSA1LjkgMTkgN1YxMC4wNEMyMC40NSAxMC4yNSAyMS42MSAxMS4zNCAyMS45MSAxMi43NkMyMS4wNSAxMi4yOCAyMC4wNiAxMiAxOSAxMkMxOC44OSAxMiAxOC43OCAxMiAxOC42NyAxMkMxOC42MSAxMiAxOC41NiAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDMgMTcgMTIuMjkgMTcuMjggMTMgMTcuNzRDMTMgMTcuODMgMTMgMTcuOTEgMTMgMThDMTMgMTkuNTQgMTMuNTggMjAuOTQgMTQuNTQgMjJIMTMuMk0xOSAyMC4wOUwxNi41IDIxLjU4TDE3LjE4IDE4Ljc3TDE1IDE2Ljg5TDE3Ljg3IDE2LjY0TDE5IDE0TDIwLjExIDE2LjY0TDIzIDE2Ljg5TDIwLjggMTguNzdMMjEuNDUgMjEuNThMMTkgMjAuMDlcIjtcclxuZXhwb3J0IHZhciBtZGlRaSA9IFwiTTEyLjA5LDYuNTZWMTQuNjRDMTIuMDksMTQuNzIgMTIsMTQuNzkgMTEuOTQsMTQuNzlDOS42MiwxNC43OSA3Ljc1LDEyLjkxIDcuNzUsMTAuNkM3Ljc1LDguMjggOS42Miw2LjQgMTEuOTQsNi40QzEyLDYuNCAxMi4wOSw2LjQ3IDEyLjA5LDYuNTZNMTIuMDksMTcuODZWMjAuMjlDMTIuMDYsMjEuNjkgMTMuMTIsMjIuODcgMTQuNSwyM0MxNC42NiwyMyAxNC43OCwyMi44OSAxNC43OSwyMi43M1Y0LjQ3QzE0Ljc4LDQuMyAxNC42OCw0LjE1IDE0LjUsNC4wOUMxMC45MiwyLjY3IDYuODYsNC40NCA1LjQ0LDguMDNDNCwxMS42MyA1Ljc5LDE1LjY5IDkuMzgsMTcuMTFDMTAuMTYsMTcuNDIgMTEsMTcuNTggMTEuODEsMTcuNkMxMS45NSwxNy41OSAxMi4wNywxNy43MSAxMi4wOCwxNy44N00xNi4xOSw1LjVWMTUuNzJDMTYuMTksMTYgMTYuMTksMTYuMiAxNi40NiwxNlYxNkMxOS40MiwxMy41IDE5LjgxLDkuMDkgMTcuMzMsNi4xM0MxNy4wNyw1LjgxIDE2Ljc3LDUuNSAxNi40Niw1LjI2QzE2LjE5LDUuMDUgMTYuMTksNS4yNiAxNi4xOSw1LjUzTTE0Ljc5LDIuNDNDMTQuNzksMS42NiAxNS40MiwxLjAzIDE2LjE5LDEuMDNDMTYuOTYsMS4wMyAxNy41OSwxLjY2IDE3LjU5LDIuNDNDMTcuNTksMy4yIDE2Ljk2LDMuODMgMTYuMTksMy44M1YzLjgzQzE1LjQyLDMuODMgMTQuNzksMy4yIDE0Ljc5LDIuNDNcIjtcclxuZXhwb3J0IHZhciBtZGlRcWNoYXQgPSBcIk0zLjE4LDEzLjU0QzMuNzYsMTIuMTYgNC41NywxMS4xNCA1LjE3LDEwLjkyQzUuMTYsMTAuMTIgNS4zMSw5LjYyIDUuNTYsOS4yMkM1LjU2LDkuMTkgNS41LDguODYgNS43Miw4LjQ1QzUuODcsNC44NSA4LjIxLDIgMTIsMkMxNS43OSwyIDE4LjEzLDQuODUgMTguMjgsOC40NUMxOC41LDguODYgMTguNDQsOS4xOSAxOC40NCw5LjIyQzE4LjY5LDkuNjIgMTguODQsMTAuMTIgMTguODMsMTAuOTJDMTkuNDMsMTEuMTQgMjAuMjQsMTIuMTYgMjAuODIsMTMuNTVDMjEuNTcsMTUuMzEgMjEuNjksMTcgMjEuMDksMTcuM0MyMC42OCwxNy41IDIwLjAzLDE3IDE5LjQyLDE2LjEyQzE5LjE4LDE3LjEgMTguNTgsMTggMTcuNzMsMTguNzFDMTguNjMsMTkuMDQgMTkuMjEsMTkuNTggMTkuMjEsMjAuMTlDMTkuMjEsMjEuMTkgMTcuNjMsMjIgMTUuNjksMjJDMTMuOTMsMjIgMTIuNSwyMS4zNCAxMi4yMSwyMC41SDExLjc5QzExLjUsMjEuMzQgMTAuMDcsMjIgOC4zMSwyMkM2LjM3LDIyIDQuNzksMjEuMTkgNC43OSwyMC4xOUM0Ljc5LDE5LjU4IDUuMzcsMTkuMDQgNi4yNywxOC43MUM1LjQyLDE4IDQuODIsMTcuMSA0LjU4LDE2LjEyQzMuOTcsMTcgMy4zMiwxNy41IDIuOTEsMTcuM0MyLjMxLDE3IDIuNDMsMTUuMzEgMy4xOCwxMy41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlRcmNvZGUgPSBcIk0zLDExSDVWMTNIM1YxMU0xMSw1SDEzVjlIMTFWNU05LDExSDEzVjE1SDExVjEzSDlWMTFNMTUsMTFIMTdWMTNIMTlWMTFIMjFWMTNIMTlWMTVIMjFWMTlIMTlWMjFIMTdWMTlIMTNWMjFIMTFWMTdIMTVWMTVIMTdWMTNIMTVWMTFNMTksMTlWMTVIMTdWMTlIMTlNMTUsM0gyMVY5SDE1VjNNMTcsNVY3SDE5VjVIMTdNMywzSDlWOUgzVjNNNSw1VjdIN1Y1SDVNMywxNUg5VjIxSDNWMTVNNSwxN1YxOUg3VjE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXJjb2RlRWRpdCA9IFwiTTUsNUg3VjdINVY1TTEsMUgxMVYxMUgxVjFNMywzVjlIOVYzSDNNNSwxN0g3VjE5SDVWMTdNMSwxM0gxMVYyM0gxVjEzTTMsMTVWMjFIOVYxNUgzTTEzLDEzSDE3VjE1SDE5VjEzSDIzVjE1SDE5VjE3SDIzVjIzSDE5VjIxSDE1VjIzSDEzVjIxSDE1VjE5SDEzVjEzTTIxLDIxVjE5SDE5VjIxSDIxTTE5LDE3SDE3VjE1SDE1VjE5SDE5VjE3TTIyLjcsMy4zNUwyMS43LDQuMzVMMTkuNjUsMi4zNUwyMC42NSwxLjM1QzIwLjg1LDEuMTQgMjEuMTksMS4xMyAyMS40MiwxLjM1TDIyLjcsMi41OEMyMi45MSwyLjc4IDIyLjkyLDMuMTIgMjIuNywzLjM1TTEzLDguOTRMMTkuMDcsMi44OEwyMS4xMiw0LjkzTDE1LjA2LDExSDEzVjguOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXJjb2RlTWludXMgPSBcIk01IDVIN1Y3SDVWNU0xIDFIMTFWMTFIMVYxTTMgM1Y5SDlWM0gzTTUgMTdIN1YxOUg1VjE3TTEgMTNIMTFWMjNIMVYxM00zIDE1VjIxSDlWMTVIM00xMyAxM0gxN1YxNUgxOVYxM0gyM1YxNUgxOVYxN0gyM1YyM0gxOVYyMUgxNVYyM0gxM1YyMUgxNVYxOUgxM1YxM00yMSAyMVYxOUgxOVYyMUgyMU0xOSAxN0gxN1YxNUgxNVYxOUgxOVYxN00xNCA1VjdIMjJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlRcmNvZGVQbHVzID0gXCJNNSA1SDdWN0g1VjVNMSAxSDExVjExSDFWMU0zIDNWOUg5VjNIM001IDE3SDdWMTlINVYxN00xIDEzSDExVjIzSDFWMTNNMyAxNVYyMUg5VjE1SDNNMTMgMTNIMTdWMTVIMTlWMTNIMjNWMTVIMTlWMTdIMjNWMjNIMTlWMjFIMTVWMjNIMTNWMjFIMTVWMTlIMTNWMTNNMjEgMjFWMTlIMTlWMjFIMjFNMTkgMTdIMTdWMTVIMTVWMTlIMTlWMTdNMTcgMlY1SDE0VjdIMTdWMTBIMTlWN0gyMlY1SDE5VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXJjb2RlUmVtb3ZlID0gXCJNNSA1SDdWN0g1VjVNMSAxSDExVjExSDFWMU0zIDNWOUg5VjNIM001IDE3SDdWMTlINVYxN00xIDEzSDExVjIzSDFWMTNNMyAxNVYyMUg5VjE1SDNNMTMgMTNIMTdWMTVIMTlWMTNIMjNWMTVIMTlWMTdIMjNWMjNIMTlWMjFIMTVWMjNIMTNWMjFIMTVWMTlIMTNWMTNNMjEgMjFWMTlIMTlWMjFIMjFNMTkgMTdIMTdWMTVIMTVWMTlIMTlWMTdNMTUuMTcgMS43NkwxMy43NiAzLjE3TDE2LjU5IDZMMTMuNzYgOC44M0wxNS4xNyAxMC4yNEwxOCA3LjQxTDIwLjgzIDEwLjI0TDIyLjI0IDguODNMMTkuNDEgNkwyMi4yNCAzLjE3TDIwLjgzIDEuNzZMMTggNC41OUwxNS4xNyAxLjc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVFyY29kZVNjYW4gPSBcIk00LDRIMTBWMTBINFY0TTIwLDRWMTBIMTRWNEgyME0xNCwxNUgxNlYxM0gxNFYxMUgxNlYxM0gxOFYxMUgyMFYxM0gxOFYxNUgyMFYxOEgxOFYyMEgxNlYxOEgxM1YyMEgxMVYxNkgxNFYxNU0xNiwxNVYxOEgxOFYxNUgxNk00LDIwVjE0SDEwVjIwSDRNNiw2VjhIOFY2SDZNMTYsNlY4SDE4VjZIMTZNNiwxNlYxOEg4VjE2SDZNNCwxMUg2VjEzSDRWMTFNOSwxMUgxM1YxNUgxMVYxM0g5VjExTTExLDZIMTNWMTBIMTFWNk0yLDJWNkgwVjJBMiwyIDAgMCwxIDIsMEg2VjJIMk0yMiwwQTIsMiAwIDAsMSAyNCwyVjZIMjJWMkgxOFYwSDIyTTIsMThWMjJINlYyNEgyQTIsMiAwIDAsMSAwLDIyVjE4SDJNMjIsMjJWMThIMjRWMjJBMiwyIDAgMCwxIDIyLDI0SDE4VjIySDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVF1YWRjb3B0ZXIgPSBcIk01LjUsMUM4LDEgMTAsMyAxMCw1LjVDMTAsNi4zOCA5Ljc1LDcuMiA5LjMxLDcuOUw5LjQxLDhIMTQuNTlMMTQuNjksNy45QzE0LjI1LDcuMiAxNCw2LjM4IDE0LDUuNUMxNCwzIDE2LDEgMTguNSwxQzIxLDEgMjMsMyAyMyw1LjVDMjMsOCAyMSwxMCAxOC41LDEwQzE3LjYyLDEwIDE2LjgsOS43NSAxNi4xLDkuMzFMMTUsMTAuNDFWMTMuNTlMMTYuMSwxNC42OUMxNi44LDE0LjI1IDE3LjYyLDE0IDE4LjUsMTRDMjEsMTQgMjMsMTYgMjMsMTguNUMyMywyMSAyMSwyMyAxOC41LDIzQzE2LDIzIDE0LDIxIDE0LDE4LjVDMTQsMTcuNjIgMTQuMjUsMTYuOCAxNC42OSwxNi4xTDE0LjU5LDE2SDkuNDFMOS4zMSwxNi4xQzkuNzUsMTYuOCAxMCwxNy42MiAxMCwxOC41QzEwLDIxIDgsMjMgNS41LDIzQzMsMjMgMSwyMSAxLDE4LjVDMSwxNiAzLDE0IDUuNSwxNEM2LjM4LDE0IDcuMiwxNC4yNSA3LjksMTQuNjlMOSwxMy41OVYxMC40MUw3LjksOS4zMUM3LjIsOS43NSA2LjM4LDEwIDUuNSwxMEMzLDEwIDEsOCAxLDUuNUMxLDMgMywxIDUuNSwxTTUuNSwzQTIuNSwyLjUgMCAwLDAgMyw1LjVBMi41LDIuNSAwIDAsMCA1LjUsOEEyLjUsMi41IDAgMCwwIDgsNS41QTIuNSwyLjUgMCAwLDAgNS41LDNNNS41LDE2QTIuNSwyLjUgMCAwLDAgMywxOC41QTIuNSwyLjUgMCAwLDAgNS41LDIxQTIuNSwyLjUgMCAwLDAgOCwxOC41QTIuNSwyLjUgMCAwLDAgNS41LDE2TTE4LjUsM0EyLjUsMi41IDAgMCwwIDE2LDUuNUEyLjUsMi41IDAgMCwwIDE4LjUsOEEyLjUsMi41IDAgMCwwIDIxLDUuNUEyLjUsMi41IDAgMCwwIDE4LjUsM00xOC41LDE2QTIuNSwyLjUgMCAwLDAgMTYsMTguNUEyLjUsMi41IDAgMCwwIDE4LjUsMjFBMi41LDIuNSAwIDAsMCAyMSwxOC41QTIuNSwyLjUgMCAwLDAgMTguNSwxNk0zLjkxLDE3LjI1TDUuMDQsMTcuOTFDNS4xNywxNy44MSA1LjMzLDE3Ljc1IDUuNSwxNy43NUEwLjc1LDAuNzUgMCAwLDEgNi4yNSwxOC41TDYuMjQsMTguNkw3LjM3LDE5LjI1TDcuMDksMTkuNzVMNS45NiwxOS4wOUM1LjgzLDE5LjE5IDUuNjcsMTkuMjUgNS41LDE5LjI1QTAuNzUsMC43NSAwIDAsMSA0Ljc1LDE4LjVMNC43NiwxOC40TDMuNjMsMTcuNzVMMy45MSwxNy4yNU0zLjYzLDYuMjVMNC43Niw1LjZMNC43NSw1LjVBMC43NSwwLjc1IDAgMCwxIDUuNSw0Ljc1QzUuNjcsNC43NSA1LjgzLDQuODEgNS45Niw0LjkxTDcuMDksNC4yNUw3LjM3LDQuNzVMNi4yNCw1LjRMNi4yNSw1LjVBMC43NSwwLjc1IDAgMCwxIDUuNSw2LjI1QzUuMzMsNi4yNSA1LjE3LDYuMTkgNS4wNCw2LjA5TDMuOTEsNi43NUwzLjYzLDYuMjVNMTYuOTEsNC4yNUwxOC4wNCw0LjkxQzE4LjE3LDQuODEgMTguMzMsNC43NSAxOC41LDQuNzVBMC43NSwwLjc1IDAgMCwxIDE5LjI1LDUuNUwxOS4yNCw1LjZMMjAuMzcsNi4yNUwyMC4wOSw2Ljc1TDE4Ljk2LDYuMDlDMTguODMsNi4xOSAxOC42Nyw2LjI1IDE4LjUsNi4yNUEwLjc1LDAuNzUgMCAwLDEgMTcuNzUsNS41TDE3Ljc2LDUuNEwxNi42Myw0Ljc1TDE2LjkxLDQuMjVNMTYuNjMsMTkuMjVMMTcuNzUsMTguNUEwLjc1LDAuNzUgMCAwLDEgMTguNSwxNy43NUMxOC42NywxNy43NSAxOC44MywxNy44MSAxOC45NiwxNy45MUwyMC4wOSwxNy4yNUwyMC4zNywxNy43NUwxOS4yNSwxOC41QTAuNzUsMC43NSAwIDAsMSAxOC41LDE5LjI1QzE4LjMzLDE5LjI1IDE4LjE3LDE5LjE5IDE4LjA0LDE5LjA5TDE2LjkxLDE5Ljc1TDE2LjYzLDE5LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVF1YWxpdHlIaWdoID0gXCJNMTQuNSwxMy41SDE2LjVWMTAuNUgxNC41TTE4LDE0QTEsMSAwIDAsMSAxNywxNUgxNi4yNVYxNi41SDE0Ljc1VjE1SDE0QTEsMSAwIDAsMSAxMywxNFYxMEExLDEgMCAwLDEgMTQsOUgxN0ExLDEgMCAwLDEgMTgsMTBNMTEsMTVIOS41VjEzSDcuNVYxNUg2VjlINy41VjExLjVIOS41VjlIMTFNMTksNEg1QzMuODksNCAzLDQuODkgMyw2VjE4QTIsMiAwIDAsMCA1LDIwSDE5QTIsMiAwIDAsMCAyMSwxOFY2QzIxLDQuODkgMjAuMSw0IDE5LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXVhbGl0eUxvdyA9IFwiTTE0LjUsMTMuNUgxNi41VjEwLjVIMTQuNU0xOCwxNEMxOCwxNC42IDE3LjYsMTUgMTcsMTVIMTYuMjVWMTYuNUgxNC43NVYxNUgxNEMxMy40LDE1IDEzLDE0LjYgMTMsMTRWMTBDMTMsOS40IDEzLjQsOSAxNCw5SDE3QzE3LjYsOSAxOCw5LjQgMTgsMTBNMTksNEg1QTIsMiAwIDAsMCAzLDZWMThBMiwyIDAgMCwwIDUsMjBIMTlBMiwyIDAgMCwwIDIxLDE4VjZBMiwyIDAgMCwwIDE5LDRNMTEsMTMuNVYxNUg2VjlINy41VjEzLjVIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXVhbGl0eU1lZGl1bSA9IFwiTTIxLDZWMThBMiwyIDAgMCwxIDE5LDIwSDVBMiwyIDAgMCwxIDMsMThWNkEyLDIgMCAwLDEgNSw0SDE5QTIsMiAwIDAsMSAyMSw2TTEyLDEwQzEyLDkuNSAxMS41LDkgMTEsOUg2LjVDNiw5IDUuNSw5LjUgNS41LDEwVjE1SDdWMTAuNUg4VjE0SDkuNVYxMC41SDEwLjVWMTVIMTJWMTBNMTQuNSw5QTEsMSAwIDAsMCAxMy41LDEwVjE0QTEsMSAwIDAsMCAxNC41LDE1SDE1LjVWMTYuNUgxNi43NVYxNUgxNy41QTEsMSAwIDAsMCAxOC41LDE0VjEwQTEsMSAwIDAsMCAxNy41LDlIMTQuNU0xNSwxMC41SDE3VjEzLjVIMTVWMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlRdW9yYSA9IFwiTTE5LjcsMTguOEMyMC4yLDE4LjIgMjAuMSwxNy43IDIwLjEsMTcuN0gyMS42QzIxLjYsMTcuNyAyMS42LDE4LjEgMjEuNSwxOC42QzIxLjQsMTkgMjEuMywxOS4zIDIxLjIsMTkuNkMyMSwyMC4zIDIwLDIxLjEgMjAsMjEuMUMxOC45LDIyIDE3LjcsMjEuOSAxNy43LDIxLjlDMTcuNywyMS45IDE2LjMsMjIuMSAxNS4yLDIxLjRDMTQuMSwyMC43IDEzLjIsMTkuMiAxMy4yLDE5LjJDMTMuMiwxOS4yIDguOCwyMC40IDUuNCwxNy41QzIsMTQuNiAyLjIsMTEuMSAyLjIsMTAuOEMyLjIsMTAuMSAyLjYsMi4zIDEwLjgsMkMxNS42LDEuOCAxOC4yLDQuOCAxOS4yLDcuMkMxOS45LDguOSAxOS45LDEwLjIgMTkuOSwxMC40QzE5LjksMTAuNiAxOS45LDExLjUgMTkuNywxMi40QzE5LjYsMTMuMyAxOS4yLDE0LjMgMTguOSwxNC44QzE4LjYsMTUuMyAxOC4yLDE2IDE3LjcsMTYuNUMxNy4yLDE3LjEgMTYuNiwxNy42IDE2LjUsMTcuN0MxNi41LDE3LjcgMTcuNSwxOC45IDE4LjEsMTkuMUMxOC4zLDE5LjEgMTkuMiwxOS40IDE5LjcsMTguOE0xMi43LDE3LjNDMTIuOCwxNy4yIDEyLjQsMTYuNyAxMi4yLDE2LjRDMTIsMTYuMSAxMi4zLDE2LjUgMTEuNSwxNS40QzExLjIsMTQuOSAxMC44LDE0LjcgMTAuMiwxNC42QzEwLDE0LjYgOS43LDE0LjYgOS41LDE0LjZDOSwxNC42IDguNywxNC43IDguNiwxNC43QzguNiwxNC42IDguNCwxNC40IDguMywxNC4yQzguMiwxNCA4LjIsMTMuNyA4LjIsMTMuN0M4LjIsMTMuNSA5LjcsMTIuOCAxMS40LDEyLjhDMTIuOCwxMi44IDEzLjgsMTMuNiAxNC4yLDE0QzE0LjYsMTQuMyAxNC43LDE0LjcgMTUuMSwxNUMxNS4xLDE1IDE1LjIsMTUgMTUuMiwxNS4xQzE1LjYsMTUuNCAxNi4xLDEyLjEgMTYsOS45QzE1LjksNy43IDE1LjgsNi42IDE1LDUuNUMxNC4zLDQuNSAxMi44LDMuNyAxMS40LDMuN0MxMC43LDMuNyA4LjQsMy44IDcuNCw1LjVDNi4yLDcuNSA2LjQsMTEuMSA2LjQsMTEuMUM2LjQsMTEuMSA2LjEsMTQuMyA3LjgsMTZDOS41LDE3LjcgMTEuMiwxNy40IDEyLDE3LjRMMTIuNywxNy4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhYmJpdCA9IFwiTTE4LjA1LDIxTDE1LjMyLDE2LjI2QzE1LjMyLDE0LjUzIDE0LjI1LDEzLjQyIDEyLjk1LDEzLjQyQzEyLjA1LDEzLjQyIDExLjI3LDEzLjkyIDEwLjg3LDE0LjY2QzExLjIsMTQuNDcgMTEuNTksMTQuMzcgMTIsMTQuMzdDMTMuMywxNC4zNyAxNC4zNiwxNS40MyAxNC4zNiwxNi43M0MxNC4zNiwxOC4wNCAxMy4zMSwxOS4xMSAxMiwxOS4xMUgxNS4zVjIxSDYuNzlDNi41NSwyMSA2LjMsMjAuOTEgNi4xMiwyMC43MkM1Ljc1LDIwLjM1IDUuNzUsMTkuNzUgNi4xMiwxOS4zOFYxOS4zOEw2LjYyLDE4Ljg4QzYuMjgsMTguNzMgNiwxOC41IDUuNzIsMTguMjZDNS41LDE4Ljc2IDUsMTkuMTEgNC40MiwxOS4xMUMzLjY0LDE5LjExIDMsMTguNDcgMywxNy42OEMzLDE2LjkgMy42NCwxNi4yNiA0LjQyLDE2LjI2TDQuODksMTYuMzRWMTQuMzdDNC44OSwxMS43NSA3LDkuNjMgOS42Myw5LjYzSDkuNjVDMTEuNzcsOS42NCAxMy40MiwxMC40NyAxMy40Miw5LjE2QzEzLjQyLDguMjMgMTMuNjIsNy44NiAxMy45Niw3LjM0QzEzLjIzLDcgMTIuNCw2Ljc5IDExLjUzLDYuNzlDMTEsNi43OSAxMC41OCw2LjM3IDEwLjU4LDUuODRDMTAuNTgsNS40MSAxMC44Niw1LjA1IDExLjI1LDQuOTNMMTAuNTgsNC44OUMxMC4wNiw0Ljg5IDkuNjMsNC40NyA5LjYzLDMuOTVDOS42MywzLjQyIDEwLjA2LDMgMTAuNTgsM0gxMS41M0MxMy42MywzIDE1LjQ3LDQuMTUgMTYuNDYsNS44NUwxNi43NCw1Ljg0QzE3LjQ1LDUuODQgMTguMTEsNi4wNyAxOC42NSw2LjQ1TDE5LjEsNi44M0MyMS4yNyw4Ljc4IDIxLDEwLjEgMjEsMTAuMTFDMjEsMTEuMzkgMTkuOTQsMTIuNDQgMTguNjUsMTIuNDRMMTguMTYsMTIuMzlWMTIuNDdDMTguMTYsMTMuNTggMTcuNjgsMTQuNTcgMTYuOTMsMTUuMjdMMjAuMjQsMjFIMTguMDVNMTguMTYsNy43NEMxNy42Myw3Ljc0IDE3LjIxLDguMTYgMTcuMjEsOC42OEMxNy4yMSw5LjIxIDE3LjYzLDkuNjMgMTguMTYsOS42M0MxOC42OCw5LjYzIDE5LjExLDkuMjEgMTkuMTEsOC42OEMxOS4xMSw4LjE2IDE4LjY4LDcuNzQgMTguMTYsNy43NFpcIjtcclxuZXhwb3J0IHZhciBtZGlSYWNpbmdIZWxtZXQgPSBcIk0yLjIsMTEuMkMyLDEzLjYgMi43LDE1LjYgNC4yLDE3LjRDNS43LDE5LjIgNy43LDIwIDEwLjEsMjBIMjAuMUMyMC42LDIwIDIxLjEsMTkuOCAyMS41LDE5LjRDMjEuOSwxOSAyMi4xLDE4LjUgMjIuMSwxOFYxNy4yQzIyLjEsMTYuNiAyMiwxNS45IDIxLjksMTVIMTMuN0MxMi43LDE1IDExLjksMTQuNiAxMS4yLDEzLjlDMTAuNSwxMy4yIDEwLjEsMTIuMyAxMC4xLDExLjRDMTAuMSw5LjggMTAuOCw4LjcgMTIuMyw4LjFMMTcuMSw2QzE1LjQsNC44IDEzLjQsNC4xIDExLjEsNEM4LjksMy44IDYuOSw0LjUgNS4xLDUuOUMzLjMsNy4zIDIuNCw5IDIuMiwxMS4yTTEyLjEsMTEuNEMxMi4xLDExLjggMTIuMywxMi4yIDEyLjYsMTIuNUMxMi45LDEyLjggMTMuMywxMyAxMy43LDEzSDIxLjVDMjAuOSwxMC44IDIwLDkgMTguNyw3LjZMMTMuMSw5LjlDMTIuNCwxMC4xIDEyLjEsMTAuNiAxMi4xLDExLjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFjcXVldGJhbGwgPSBcIk0xOC41LDE2QzE5LjksMTYgMjEsMTcuMSAyMSwxOC41QzIxLDE5LjkgMTkuOSwyMSAxOC41LDIxQzE3LjEsMjEgMTYsMTkuOSAxNiwxOC41QzE2LDE3LjEgMTcuMSwxNiAxOC41LDE2TTEwLjUsMUMzLDEgMywzLjcgMyw5LjhDMywxMy4yIDYuNCwxNi45IDksMTguMVYyM0gxMlYxOC4xQzE0LjYsMTYuOSAxOCwxMy4yIDE4LDkuOEMxOCwzLjYgMTgsMSAxMC41LDFNMTUuNCw0LjJDMTUuNyw0LjYgMTUuOCw1LjIgMTUuOSw2SDE1VjMuOEMxNS4yLDMuOSAxNS4zLDQuMSAxNS40LDQuMk0xNiw5LjhDMTYsOS45IDE2LDEwIDE2LDEwSDE1VjdIMTZDMTYsNy44IDE2LDguNyAxNiw5LjhNMTQsMTRIMTFWMTFIMTRWMTRNNywxNFYxMUgxMFYxNEg3TTUsOS44QzUsOC44IDUsNy45IDUsN0g2VjEwSDVDNSw5LjkgNSw5LjggNSw5LjhNNyw3SDEwVjEwSDdWN00xMSwzQzEyLjQsMyAxMy40LDMuMiAxNCwzLjNWNkgxMVYzTTEwLDZIN1YzLjRDNy42LDMuMiA4LjYsMyAxMCwzVjZNMTEsMTBWN0gxNFYxMEgxMU02LDMuOFY2SDUuMUM1LjIsNS4yIDUuMyw0LjYgNS42LDQuMkM1LjcsNC4xIDUuOCw0IDYsMy44TTUuMiwxMUg2VjEyLjdDNS43LDEyLjEgNS40LDExLjYgNS4yLDExTTgsMTVIMTBWMTYuM0w5LjgsMTYuMkM5LjIsMTYgOC42LDE1LjUgOCwxNU0xMS4yLDE2LjNIMTFWMTVIMTNDMTIuNCwxNS41IDExLjgsMTYgMTEuMiwxNi4zTTE1LDEyLjdWMTFIMTUuOEMxNS42LDExLjUgMTUuMywxMi4xIDE1LDEyLjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkYXIgPSBcIk0xOS4wNyw0LjkzTDE3LjY2LDYuMzRDMTkuMSw3Ljc5IDIwLDkuNzkgMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQzQsNy45MiA3LjA1LDQuNTYgMTEsNC4wN1Y2LjA5QzguMTYsNi41NyA2LDkuMDMgNiwxMkE2LDYgMCAwLDAgMTIsMThBNiw2IDAgMCwwIDE4LDEyQzE4LDEwLjM0IDE3LjMzLDguODQgMTYuMjQsNy43NkwxNC44Myw5LjE3QzE1LjU1LDkuOSAxNiwxMC45IDE2LDEyQTQsNCAwIDAsMSAxMiwxNkE0LDQgMCAwLDEgOCwxMkM4LDEwLjE0IDkuMjgsOC41OSAxMSw4LjE0VjEwLjI4QzEwLjQsMTAuNjMgMTAsMTEuMjYgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkMxNCwxMS4yNiAxMy42LDEwLjYyIDEzLDEwLjI4VjJIMTJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw5LjI0IDIwLjg4LDYuNzQgMTkuMDcsNC45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpYXRvciA9IFwiTTcuOTUsM0w2LjUzLDUuMTlMNy45NSw3LjRINy45NEw1Ljk1LDEwLjVMNC4yMiw5LjZMNS42NCw3LjM5TDQuMjIsNS4xOUw2LjIyLDIuMDlMNy45NSwzTTEzLjk1LDIuODlMMTIuNTMsNS4xTDEzLjk1LDcuM0wxMy45NCw3LjMxTDExLjk1LDEwLjRMMTAuMjIsOS41TDExLjY0LDcuM0wxMC4yMiw1LjFMMTIuMjIsMkwxMy45NSwyLjg5TTIwLDIuODlMMTguNTYsNS4xTDIwLDcuM1Y3LjMxTDE4LDEwLjRMMTYuMjUsOS41TDE3LjY3LDcuM0wxNi4yNSw1LjFMMTguMjUsMkwyMCwyLjg5TTIsMjJWMTRBMiwyIDAgMCwxIDQsMTJIMjBBMiwyIDAgMCwxIDIyLDE0VjIySDIwVjIwSDRWMjJIMk02LDE0QTEsMSAwIDAsMCA1LDE1VjE3QTEsMSAwIDAsMCA2LDE4QTEsMSAwIDAsMCA3LDE3VjE1QTEsMSAwIDAsMCA2LDE0TTEwLDE0QTEsMSAwIDAsMCA5LDE1VjE3QTEsMSAwIDAsMCAxMCwxOEExLDEgMCAwLDAgMTEsMTdWMTVBMSwxIDAgMCwwIDEwLDE0TTE0LDE0QTEsMSAwIDAsMCAxMywxNVYxN0ExLDEgMCAwLDAgMTQsMThBMSwxIDAgMCwwIDE1LDE3VjE1QTEsMSAwIDAsMCAxNCwxNE0xOCwxNEExLDEgMCAwLDAgMTcsMTVWMTdBMSwxIDAgMCwwIDE4LDE4QTEsMSAwIDAsMCAxOSwxN1YxNUExLDEgMCAwLDAgMTgsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaWF0b3JEaXNhYmxlZCA9IFwiTTIwLDEySDRBMiwyIDAgMCwwIDIsMTRWMjJINFYyMEgyMFYyMkgyMlYxNEEyLDIgMCAwLDAgMjAsMTJNNywxN0ExLDEgMCAwLDEgNiwxOEExLDEgMCAwLDEgNSwxN1YxNUExLDEgMCAwLDEgNiwxNEExLDEgMCAwLDEgNywxNVYxN00xMSwxN0ExLDEgMCAwLDEgMTAsMThBMSwxIDAgMCwxIDksMTdWMTVBMSwxIDAgMCwxIDEwLDE0QTEsMSAwIDAsMSAxMSwxNVYxN00xNSwxN0ExLDEgMCAwLDEgMTQsMThBMSwxIDAgMCwxIDEzLDE3VjE1QTEsMSAwIDAsMSAxNCwxNEExLDEgMCAwLDEgMTUsMTVWMTdNMTksMTdBMSwxIDAgMCwxIDE4LDE4QTEsMSAwIDAsMSAxNywxN1YxNUExLDEgMCAwLDEgMTgsMTRBMSwxIDAgMCwxIDE5LDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGlhdG9yT2ZmID0gXCJNMy4yOCwyTDIsMy4yN0w0Ljc3LDYuMDRMNS42NCw3LjM5TDQuMjIsOS42TDUuOTUsMTAuNUw3LjIzLDguNUwxMC43MywxMkg0QTIsMiAwIDAsMCAyLDE0VjIySDRWMjBIMTguNzNMMjAsMjEuMjdWMjJIMjJWMjAuNzNMMjIsMjAuNzJWMjAuNzJMMy4yOCwyTTcsMTdBMSwxIDAgMCwxIDYsMThBMSwxIDAgMCwxIDUsMTdWMTVBMSwxIDAgMCwxIDYsMTRBMSwxIDAgMCwxIDcsMTVWMTdNMTEsMTdBMSwxIDAgMCwxIDEwLDE4QTEsMSAwIDAsMSA5LDE3VjE1QTEsMSAwIDAsMSAxMCwxNEExLDEgMCAwLDEgMTEsMTVWMTdNMTUsMTdBMSwxIDAgMCwxIDE0LDE4QTEsMSAwIDAsMSAxMywxN1YxNUMxMywxNC43OSAxMy4wOCwxNC42MSAxMy4xOCwxNC40NUwxNSwxNi4yN1YxN00xNi4yNSw5LjVMMTcuNjcsNy4zTDE2LjI1LDUuMUwxOC4yNSwyTDIwLDIuODlMMTguNTYsNS4xTDIwLDcuM1Y3LjMxTDE4LDEwLjRMMTYuMjUsOS41TTIyLDE0VjE4LjE4TDE5LDE1LjE4VjE1QTEsMSAwIDAsMCAxOCwxNEMxNy45NSwxNCAxNy45LDE0IDE3Ljg1LDE0LjAzTDE1LjgyLDEySDIwQzIxLjExLDEyIDIyLDEyLjkgMjIsMTRNMTEuNjQsNy4zTDEwLjIyLDUuMUwxMi4yMiwyTDEzLjk1LDIuODlMMTIuNTMsNS4xTDEzLjk1LDcuM0wxMy45NCw3LjMxTDEyLjg0LDlMMTEuNDQsNy42MkwxMS42NCw3LjNNNy41LDMuNjlMNi4xLDIuMjhMNi4yMiwyLjA5TDcuOTUsM0w3LjUsMy42OVpcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpbyA9IFwiTTIwLDZBMiwyIDAgMCwxIDIyLDhWMjBBMiwyIDAgMCwxIDIwLDIySDRBMiwyIDAgMCwxIDIsMjBWOEMyLDcuMTUgMi41Myw2LjQyIDMuMjgsNi4xM0wxNS43MSwxTDE2LjQ3LDIuODNMOC44Myw2SDIwTTIwLDhINFYxMkgxNlYxMEgxOFYxMkgyMFY4TTcsMTRBMywzIDAgMCwwIDQsMTdBMywzIDAgMCwwIDcsMjBBMywzIDAgMCwwIDEwLDE3QTMsMyAwIDAsMCA3LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGlvQW0gPSBcIk01LDdBMiwyIDAgMCwwIDMsOVYxN0g1VjEzSDdWMTdIOVY5QTIsMiAwIDAsMCA3LDdINU01LDlIN1YxMUg1VjlNMTMsN0EyLDIgMCAwLDAgMTEsOVYxN0gxM1Y5SDE1VjE2SDE3VjlIMTlWMTdIMjFWOUEyLDIgMCAwLDAgMTksN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpb0ZtID0gXCJNMyw3VjE3SDVWMTNIOFYxMUg1VjlIOVY3SDNNMTMsN0EyLDIgMCAwLDAgMTEsOVYxN0gxM1Y5SDE1VjE2SDE3VjlIMTlWMTdIMjFWOUEyLDIgMCAwLDAgMTksN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpb0hhbmRoZWxkID0gXCJNOSwyQTEsMSAwIDAsMCA4LDNDOCw4LjY3IDgsMTQuMzMgOCwyMEM4LDIxLjExIDguODksMjIgMTAsMjJIMTVDMTYuMTEsMjIgMTcsMjEuMTEgMTcsMjBWOUMxNyw3Ljg5IDE2LjExLDcgMTUsN0gxMFYzQTEsMSAwIDAsMCA5LDJNMTAsOUgxNVYxM0gxMFY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGlvT2ZmID0gXCJNMSA0LjI3TDMgNi4yN0MyLjQgNi42MSAyIDcuMjYgMiA4VjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTguNzNMMjAuNzMgMjRMMjIgMjIuNzJMMi4yOCAzTDEgNC4yN00yMCA2SDguODNMMTYuNDcgMi44M0wxNS43MSAxTDYuNTkgNC43Nkw5LjgyIDhIMjBWMTJIMThWMTBIMTZWMTJIMTMuODJMMjIgMjAuMThWOEMyMiA2LjkgMjEuMTEgNiAyMCA2TTQgOEg0LjczTDguNzMgMTJINFY4TTcgMTRDOC42NiAxNCAxMCAxNS4zNCAxMCAxN0MxMCAxOC42NiA4LjY2IDIwIDcgMjBDNS4zNCAyMCA0IDE4LjY2IDQgMTdDNCAxNS4zNCA1LjM0IDE0IDcgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9Ub3dlciA9IFwiTTEyLDEwQTIsMiAwIDAsMSAxNCwxMkMxNCwxMi41IDEzLjgyLDEyLjk0IDEzLjUzLDEzLjI5TDE2LjcsMjJIMTQuNTdMMTIsMTQuOTNMOS40MywyMkg3LjNMMTAuNDcsMTMuMjlDMTAuMTgsMTIuOTQgMTAsMTIuNSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTIsOEE0LDQgMCAwLDAgOCwxMkM4LDEyLjUgOC4xLDEzIDguMjgsMTMuNDZMNy40LDE1Ljg2QzYuNTMsMTQuODEgNiwxMy40NyA2LDEyQTYsNiAwIDAsMSAxMiw2QTYsNiAwIDAsMSAxOCwxMkMxOCwxMy40NyAxNy40NywxNC44MSAxNi42LDE1Ljg2TDE1LjcyLDEzLjQ2QzE1LjksMTMgMTYsMTIuNSAxNiwxMkE0LDQgMCAwLDAgMTIsOE0xMiw0QTgsOCAwIDAsMCA0LDEyQzQsMTQuMzYgNSwxNi41IDYuNjQsMTcuOTRMNS45MiwxOS45NEMzLjU0LDE4LjExIDIsMTUuMjMgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQzIyLDE1LjIzIDIwLjQ2LDE4LjExIDE4LjA4LDE5Ljk0TDE3LjM2LDE3Ljk0QzE5LDE2LjUgMjAsMTQuMzYgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9hY3RpdmUgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTIsMjJDMTAuMDUsMjIgOC4yMiwyMS40NCA2LjY5LDIwLjQ3TDEwLDE1LjQ3QzEwLjYsMTUuODEgMTEuMjgsMTYgMTIsMTZDMTIuNzIsMTYgMTMuNCwxNS44MSAxNCwxNS40N0wxNy4zMSwyMC40N0MxNS43OCwyMS40NCAxMy45NSwyMiAxMiwyMk0yLDEyQzIsNy44NiA0LjUsNC4zIDguMTEsMi43OEwxMC4zNCw4LjM2QzguOTYsOSA4LDEwLjM4IDgsMTJIMk0xNiwxMkMxNiwxMC4zOCAxNS4wNCw5IDEzLjY2LDguMzZMMTUuODksMi43OEMxOS41LDQuMyAyMiw3Ljg2IDIyLDEySDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGlvYWN0aXZlT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMSwyMS43MkwxOS43MywyM0wxNy4yNSwyMC41QzE1LjcyLDIxLjQ2IDEzLjkyLDIyIDEyLDIyQzEwLjA1LDIyIDguMjIsMjEuNDQgNi42OSwyMC40N0wxMCwxNS40N0MxMC42LDE1LjgxIDExLjI4LDE2IDEyLDE2QzEyLjIzLDE2IDEyLjQ2LDE2IDEyLjY3LDE1Ljk0TDguMDYsMTEuMzNDOCwxMS41NCA4LDExLjc3IDgsMTJIMkMyLDEwLjA4IDIuNTQsOC4yOCAzLjUsNi43NUwxLDQuMjdNMTIsMTBBMiwyIDAgMCwxIDE0LDEyVjEyLjE3TDExLjgzLDEwSDEyTTguMTEsMi43OEwxMC4yMyw4LjQxTDUuOSw0LjA4QzYuNTcsMy41NiA3LjMyLDMuMTIgOC4xMSwyLjc4TTE2LDEyQzE2LDEwLjM4IDE1LjA0LDkgMTMuNjYsOC4zNkwxNS44OSwyLjc4QzE5LjUsNC4zIDIyLDcuODYgMjIsMTJIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9ib3hCbGFuayA9IFwiTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9ib3hNYXJrZWQgPSBcIk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywxMkE1LDUgMCAwLDAgMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpb2xvZ3lCb3ggPSBcIk0xOSAzSDVDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM00xNy4xIDEzSDEzVjE0SDE3QzE3IDE0IDE2Ljk0IDE3IDE1LjUgMTdDMTQuMTUgMTcgMTQuNSAxNS40NyAxMyAxNVYxN0MxMyAxNy41NSAxMi41NSAxOCAxMiAxOFMxMSAxNy41NSAxMSAxN1YxNUM5LjUgMTUuNDcgOS44NSAxNyA4LjUgMTdDNy4wNiAxNyA3IDE0IDcgMTRIMTFWMTNINi45QzYuODUgMTIuNjkgNi44NCAxMi4zNSA2LjggMTJIMTFWMTFINi44MUM2LjgzIDEwLjY3IDYuOTEgMTAuMzMgNyAxMEgxMVY5SDcuMzRDNy41IDguNjUgNy42NSA4LjMxIDcuODMgOEgxMVY3QzExIDYuNDUgMTEuNDUgNiAxMiA2UzEzIDYuNDUgMTMgN1Y4SDE2LjE3QzE2LjM1IDguMzEgMTYuNSA4LjY1IDE2LjY2IDlIMTNWMTBIMTdDMTcuMSAxMC4zMyAxNy4xNyAxMC42NyAxNy4xOSAxMUgxM1YxMkgxNy4yQzE3LjE2IDEyLjM1IDE3LjE1IDEyLjY5IDE3LjEgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9sb2d5Qm94T3V0bGluZSA9IFwiTTE5IDVWMTlINVY1SDE5TTE5IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjExIDMuODkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuODkgMjAuMTEgMyAxOSAzTTEyIDZDMTIuNTUgNiAxMyA2LjQ1IDEzIDdWOEgxNi4xN0MxNi4zNSA4LjMxIDE2LjUgOC42NSAxNi42NiA5SDEzVjEwSDE3QzE3LjEgMTAuMzMgMTcuMTcgMTAuNjcgMTcuMTkgMTFIMTNWMTJIMTcuMkMxNy4xNiAxMi4zNSAxNy4xNSAxMi42OSAxNy4xIDEzSDEzVjE0SDE3QzE3IDE0IDE2Ljk0IDE3IDE1LjUgMTdDMTQuMTUgMTcgMTQuNSAxNS40NyAxMyAxNVYxN0MxMyAxNy41NSAxMi41NSAxOCAxMiAxOFMxMSAxNy41NSAxMSAxN1YxNUM5LjUgMTUuNDcgOS44NSAxNyA4LjUgMTdDNy4wNiAxNyA3IDE0IDcgMTRIMTFWMTNINi45QzYuODUgMTIuNjkgNi44NCAxMi4zNSA2LjggMTJIMTFWMTFINi44MUM2LjgzIDEwLjY3IDYuOTEgMTAuMzMgNyAxMEgxMVY5SDcuMzRDNy41IDguNjUgNy42NSA4LjMxIDcuODMgOEgxMVY3QzExIDYuNDUgMTEuNDUgNiAxMiA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGl1cyA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTE3LDE1VjEzSDEzLjcyQzEzLjM2LDEzLjYyIDEyLjcxLDE0IDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBDMTIuNzEsMTAgMTMuMzYsMTAuMzggMTMuNzIsMTFIMTdWOUwyMCwxMkwxNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpdXNPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xNiwxNVYxM0gxMy43MkMxMy4zNiwxMy42MiAxMi43MSwxNCAxMiwxNEEyLDIgMCAwLDEgMTAsMTJBMiwyIDAgMCwxIDEyLDEwQzEyLjcxLDEwIDEzLjM2LDEwLjM4IDEzLjcyLDExSDE2VjlMMTksMTJMMTYsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFpbHJvYWRMaWdodCA9IFwiTTE3LjY3LDEwLjVDMTYuNCwxMC41IDE1LjI3LDExLjMgMTQuODUsMTIuNUgxMy4xN1Y3Ljc3TDE2LjY2LDkuODZMMTcuNjYsOC4xNEwxNC4xMSw2TDE3LjY4LDMuODZMMTYuNjgsMi4xNEwxMy4xNyw0LjIzVjJIMTEuMTdWNC4yM0w3LjY4LDIuMTRMNi42OCwzLjg2TDEwLjIzLDZMNi42Niw4LjE0TDcuNjYsOS44NkwxMS4xNyw3Ljc3VjEyLjVIOS41QzguMzYsOS4zMiAzLjY2LDEwLjEzIDMuNjYsMTMuNUMzLjY2LDE2Ljg3IDguMzYsMTcuNjggOS41LDE0LjVIMTEuMTdWMjBBMiwyIDAgMCwwIDkuMTcsMjJIMTUuMTdBMiwyIDAgMCwwIDEzLjE3LDIwVjE0LjVIMTQuODVDMTUuNjYsMTYuOCAxOC43MywxNy4yMiAyMC4xMywxNS4yM0MyMS41MywxMy4yNCAyMC4xLDEwLjUgMTcuNjcsMTAuNU02LjY3LDE0LjVDNS43OCwxNC41IDUuMzMsMTMuNDIgNS45NiwxMi43OUM2LjU5LDEyLjE2IDcuNjcsMTIuNjEgNy42NywxMy41QTEsMSAwIDAsMSA2LjY3LDE0LjVNMTcuNjcsMTQuNUMxNi43OCwxNC41IDE2LjMzLDEzLjQyIDE2Ljk2LDEyLjc5QzE3LjU5LDEyLjE2IDE4LjY3LDEyLjYxIDE4LjY3LDEzLjVBMSwxIDAgMCwxIDE3LjY3LDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFrZSA9IFwiTTEwLjUgMTcuMDVMOS40MyAxNkwyMi4wNyAzLjM1TDIwLjY2IDEuOTNMOCAxNC41OEw2Ljk1IDEzLjVDNi4xNyAxMi43MyA0LjkgMTIuNzMgNC4xMiAxMy41TDIgMTUuNjRMMi43MSAxNi4zNEw0LjgzIDE0LjIyTDUuNTQgMTQuOTNMMy40MSAxNy4wNUw0LjEyIDE3Ljc2TDYuMjQgMTUuNjRMNi45NSAxNi4zNEw0LjgzIDE4LjQ2TDUuNTQgMTkuMTdMNy42NiAxNy4wNUw4LjM2IDE3Ljc2TDYuMjQgMTkuODhMNi45NSAyMC41OUw5LjA3IDE4LjQ2TDkuNzggMTkuMTdMNy42NiAyMS4yOUw4LjM2IDIyTDEwLjUgMTkuODhDMTEuMjcgMTkuMSAxMS4yNyAxNy44MyAxMC41IDE3LjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhc3BiZXJyeVBpID0gXCJNMjAsOEgyMlYxMEgyMFY4TTQsNUgyMEEyLDIgMCAwLDEgMjIsN0gxOVY5SDVWMTNIOFYxNkgxOVYxN0gyMkEyLDIgMCAwLDEgMjAsMTlIMTZWMjBIMTRWMTlIMTFWMjBIN1YxOUg0QTIsMiAwIDAsMSAyLDE3VjdBMiwyIDAgMCwxIDQsNU0xOSwxNUg5VjEwSDE5VjExSDIyVjEzSDE5VjE1TTEzLDEyVjE0SDE1VjEySDEzTTUsNlY4SDZWNkg1TTcsNlY4SDhWNkg3TTksNlY4SDEwVjZIOU0xMSw2VjhIMTJWNkgxMU0xMyw2VjhIMTRWNkgxM00xNSw2VjhIMTZWNkgxNU0yMCwxNEgyMlYxNkgyMFYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlSYXlFbmQgPSBcIk0yMCw5QzE4LjY5LDkgMTcuNTgsOS44MyAxNy4xNywxMUgyVjEzSDE3LjE3QzE3LjU4LDE0LjE3IDE4LjY5LDE1IDIwLDE1QTMsMyAwIDAsMCAyMywxMkEzLDMgMCAwLDAgMjAsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSYXlFbmRBcnJvdyA9IFwiTTEsMTJMNSwxNlYxM0gxNy4xN0MxNy41OCwxNC4xNyAxOC42OSwxNSAyMCwxNUEzLDMgMCAwLDAgMjMsMTJBMywzIDAgMCwwIDIwLDlDMTguNjksOSAxNy41OCw5LjgzIDE3LjE3LDExSDVWOEwxLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJheVN0YXJ0ID0gXCJNNCw5QzUuMzEsOSA2LjQyLDkuODMgNi44MywxMUgyMlYxM0g2LjgzQzYuNDIsMTQuMTcgNS4zMSwxNSA0LDE1QTMsMyAwIDAsMSAxLDEyQTMsMyAwIDAsMSA0LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmF5U3RhcnRBcnJvdyA9IFwiTTIzLDEyTDE5LDE2VjEzSDYuODNDNi40MiwxNC4xNyA1LjMxLDE1IDQsMTVBMywzIDAgMCwxIDEsMTJBMywzIDAgMCwxIDQsOUM1LjMxLDkgNi40Miw5LjgzIDYuODMsMTFIMTlWOEwyMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSYXlTdGFydEVuZCA9IFwiTTQsOUM1LjMxLDkgNi40Miw5LjgzIDYuODMsMTFIMTcuMTdDMTcuNTgsOS44MyAxOC42OSw5IDIwLDlBMywzIDAgMCwxIDIzLDEyQTMsMyAwIDAsMSAyMCwxNUMxOC42OSwxNSAxNy41OCwxNC4xNyAxNy4xNywxM0g2LjgzQzYuNDIsMTQuMTcgNS4zMSwxNSA0LDE1QTMsMyAwIDAsMSAxLDEyQTMsMyAwIDAsMSA0LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmF5U3RhcnRWZXJ0ZXhFbmQgPSBcIk0yMCA5QzE4LjY5IDkgMTcuNTggOS44MyAxNy4xNyAxMUgxNC44MkMxNC40IDkuODQgMTMuMyA5IDEyIDlTOS42IDkuODQgOS4xOCAxMUg2LjgzQzYuNDIgOS44MyA1LjMxIDkgNCA5QzIuMzQgOSAxIDEwLjM0IDEgMTJTMi4zNCAxNSA0IDE1QzUuMzEgMTUgNi40MiAxNC4xNyA2LjgzIDEzSDkuMThDOS42IDE0LjE2IDEwLjcgMTUgMTIgMTVTMTQuNCAxNC4xNiAxNC44MiAxM0gxNy4xN0MxNy41OCAxNC4xNyAxOC42OSAxNSAyMCAxNUMyMS42NiAxNSAyMyAxMy42NiAyMyAxMlMyMS42NiA5IDIwIDlcIjtcclxuZXhwb3J0IHZhciBtZGlSYXlWZXJ0ZXggPSBcIk0yLDExSDkuMTdDOS41OCw5LjgzIDEwLjY5LDkgMTIsOUMxMy4zMSw5IDE0LjQyLDkuODMgMTQuODMsMTFIMjJWMTNIMTQuODNDMTQuNDIsMTQuMTcgMTMuMzEsMTUgMTIsMTVDMTAuNjksMTUgOS41OCwxNC4xNyA5LjE3LDEzSDJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVhY3QgPSBcIk0xMiwxMC4xMUMxMy4wMywxMC4xMSAxMy44NywxMC45NSAxMy44NywxMkMxMy44NywxMyAxMy4wMywxMy44NSAxMiwxMy44NUMxMC45NywxMy44NSAxMC4xMywxMyAxMC4xMywxMkMxMC4xMywxMC45NSAxMC45NywxMC4xMSAxMiwxMC4xMU03LjM3LDIwQzgsMjAuMzggOS4zOCwxOS44IDEwLjk3LDE4LjNDMTAuNDUsMTcuNzEgOS45NCwxNy4wNyA5LjQ2LDE2LjRDOC42NCwxNi4zMiA3LjgzLDE2LjIgNy4wNiwxNi4wNEM2LjU1LDE4LjE4IDYuNzQsMTkuNjUgNy4zNywyME04LjA4LDE0LjI2TDcuNzksMTMuNzVDNy42OCwxNC4wNCA3LjU3LDE0LjMzIDcuNSwxNC42MUM3Ljc3LDE0LjY3IDguMDcsMTQuNzIgOC4zOCwxNC43N0M4LjI4LDE0LjYgOC4xOCwxNC40MyA4LjA4LDE0LjI2TTE0LjYyLDEzLjVMMTUuNDMsMTJMMTQuNjIsMTAuNUMxNC4zMiw5Ljk3IDE0LDkuNSAxMy43MSw5LjAzQzEzLjE3LDkgMTIuNiw5IDEyLDlDMTEuNCw5IDEwLjgzLDkgMTAuMjksOS4wM0MxMCw5LjUgOS42OCw5Ljk3IDkuMzgsMTAuNUw4LjU3LDEyTDkuMzgsMTMuNUM5LjY4LDE0LjAzIDEwLDE0LjUgMTAuMjksMTQuOTdDMTAuODMsMTUgMTEuNCwxNSAxMiwxNUMxMi42LDE1IDEzLjE3LDE1IDEzLjcxLDE0Ljk3QzE0LDE0LjUgMTQuMzIsMTQuMDMgMTQuNjIsMTMuNU0xMiw2Ljc4QzExLjgxLDcgMTEuNjEsNy4yMyAxMS40MSw3LjVDMTEuNjEsNy41IDExLjgsNy41IDEyLDcuNUMxMi4yLDcuNSAxMi4zOSw3LjUgMTIuNTksNy41QzEyLjM5LDcuMjMgMTIuMTksNyAxMiw2Ljc4TTEyLDE3LjIyQzEyLjE5LDE3IDEyLjM5LDE2Ljc3IDEyLjU5LDE2LjVDMTIuMzksMTYuNSAxMi4yLDE2LjUgMTIsMTYuNUMxMS44LDE2LjUgMTEuNjEsMTYuNSAxMS40MSwxNi41QzExLjYxLDE2Ljc3IDExLjgxLDE3IDEyLDE3LjIyTTE2LjYyLDRDMTYsMy42MiAxNC42Miw0LjIgMTMuMDMsNS43QzEzLjU1LDYuMjkgMTQuMDYsNi45MyAxNC41NCw3LjZDMTUuMzYsNy42OCAxNi4xNyw3LjggMTYuOTQsNy45NkMxNy40NSw1LjgyIDE3LjI2LDQuMzUgMTYuNjIsNE0xNS45Miw5Ljc0TDE2LjIxLDEwLjI1QzE2LjMyLDkuOTYgMTYuNDMsOS42NyAxNi41LDkuMzlDMTYuMjMsOS4zMyAxNS45Myw5LjI4IDE1LjYyLDkuMjNDMTUuNzIsOS40IDE1LjgyLDkuNTcgMTUuOTIsOS43NE0xNy4zNywyLjY5QzE4Ljg0LDMuNTMgMTksNS43NCAxOC4zOCw4LjMyQzIwLjkyLDkuMDcgMjIuNzUsMTAuMzEgMjIuNzUsMTJDMjIuNzUsMTMuNjkgMjAuOTIsMTQuOTMgMTguMzgsMTUuNjhDMTksMTguMjYgMTguODQsMjAuNDcgMTcuMzcsMjEuMzFDMTUuOTEsMjIuMTUgMTMuOTIsMjEuMTkgMTIsMTkuMzZDMTAuMDgsMjEuMTkgOC4wOSwyMi4xNSA2LjYyLDIxLjMxQzUuMTYsMjAuNDcgNSwxOC4yNiA1LjYyLDE1LjY4QzMuMDgsMTQuOTMgMS4yNSwxMy42OSAxLjI1LDEyQzEuMjUsMTAuMzEgMy4wOCw5LjA3IDUuNjIsOC4zMkM1LDUuNzQgNS4xNiwzLjUzIDYuNjIsMi42OUM4LjA5LDEuODUgMTAuMDgsMi44MSAxMiw0LjY0QzEzLjkyLDIuODEgMTUuOTEsMS44NSAxNy4zNywyLjY5TTE3LjA4LDEyQzE3LjQyLDEyLjc1IDE3LjcyLDEzLjUgMTcuOTcsMTQuMjZDMjAuMDcsMTMuNjMgMjEuMjUsMTIuNzMgMjEuMjUsMTJDMjEuMjUsMTEuMjcgMjAuMDcsMTAuMzcgMTcuOTcsOS43NEMxNy43MiwxMC41IDE3LjQyLDExLjI1IDE3LjA4LDEyTTYuOTIsMTJDNi41OCwxMS4yNSA2LjI4LDEwLjUgNi4wMyw5Ljc0QzMuOTMsMTAuMzcgMi43NSwxMS4yNyAyLjc1LDEyQzIuNzUsMTIuNzMgMy45MywxMy42MyA2LjAzLDE0LjI2QzYuMjgsMTMuNSA2LjU4LDEyLjc1IDYuOTIsMTJNMTUuOTIsMTQuMjZDMTUuODIsMTQuNDMgMTUuNzIsMTQuNiAxNS42MiwxNC43N0MxNS45MywxNC43MiAxNi4yMywxNC42NyAxNi41LDE0LjYxQzE2LjQzLDE0LjMzIDE2LjMyLDE0LjA0IDE2LjIxLDEzLjc1TDE1LjkyLDE0LjI2TTEzLjAzLDE4LjNDMTQuNjIsMTkuOCAxNiwyMC4zOCAxNi42MiwyMEMxNy4yNiwxOS42NSAxNy40NSwxOC4xOCAxNi45NCwxNi4wNEMxNi4xNywxNi4yIDE1LjM2LDE2LjMyIDE0LjU0LDE2LjRDMTQuMDYsMTcuMDcgMTMuNTUsMTcuNzEgMTMuMDMsMTguM004LjA4LDkuNzRDOC4xOCw5LjU3IDguMjgsOS40IDguMzgsOS4yM0M4LjA3LDkuMjggNy43Nyw5LjMzIDcuNSw5LjM5QzcuNTcsOS42NyA3LjY4LDkuOTYgNy43OSwxMC4yNUw4LjA4LDkuNzRNMTAuOTcsNS43QzkuMzgsNC4yIDgsMy42MiA3LjM3LDRDNi43NCw0LjM1IDYuNTUsNS44MiA3LjA2LDcuOTZDNy44Myw3LjggOC42NCw3LjY4IDkuNDYsNy42QzkuOTQsNi45MyAxMC40NSw2LjI5IDEwLjk3LDUuN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSZWFkID0gXCJNMjEuNTksMTEuNTlMMjMsMTNMMTMuNSwyMi41TDguNDIsMTcuNDFMOS44MywxNkwxMy41LDE5LjY4TDIxLjU5LDExLjU5TTQsMTZWM0g2TDksM0E0LDQgMCAwLDEgMTMsN0MxMyw4LjU0IDEyLjEzLDkuODggMTAuODUsMTAuNTVMMTQsMTZIMTJMOS4xMSwxMUg2VjE2SDRNNiw5SDlBMiwyIDAgMCwwIDExLDdBMiwyIDAgMCwwIDksNUg2VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjZWlwdCA9IFwiTTMsMjJMNC41LDIwLjVMNiwyMkw3LjUsMjAuNUw5LDIyTDEwLjUsMjAuNUwxMiwyMkwxMy41LDIwLjVMMTUsMjJMMTYuNSwyMC41TDE4LDIyTDE5LjUsMjAuNUwyMSwyMlYyTDE5LjUsMy41TDE4LDJMMTYuNSwzLjVMMTUsMkwxMy41LDMuNUwxMiwyTDEwLjUsMy41TDksMkw3LjUsMy41TDYsMkw0LjUsMy41TDMsMk0xOCw5SDZWN0gxOE0xOCwxM0g2VjExSDE4TTE4LDE3SDZWMTVIMThWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjb3JkID0gXCJNMTksMTJDMTksMTUuODYgMTUuODYsMTkgMTIsMTlDOC4xNCwxOSA1LDE1Ljg2IDUsMTJDNSw4LjE0IDguMTQsNSAxMiw1QzE1Ljg2LDUgMTksOC4xNCAxOSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWNvcmRDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjb3JkQ2lyY2xlT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNE0xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjb3JkUGxheWVyID0gXCJNNSwxNy41QTAuNSwwLjUgMCAwLDEgNC41LDE4SDMuNUEwLjUsMC41IDAgMCwxIDMsMTcuNVYxN0gyQTEsMSAwIDAsMSAxLDE2VjEzQTEsMSAwIDAsMSAyLDEySDE5VjEwSDdMNiwxMVY5QTEsMSAwIDAsMSA3LDhIMTlWN0gyMVY4QTEsMSAwIDAsMSAyMiw5VjEwSDIxVjEySDIyQTEsMSAwIDAsMSAyMywxM1YxNkExLDEgMCAwLDEgMjIsMTdIMjFWMTcuNUEwLjUsMC41IDAgMCwxIDIwLjUsMThIMTkuNUEwLjUsMC41IDAgMCwxIDE5LDE3LjVWMTdINVYxNy41TTMsMTRWMTVINVYxNEgzTTYsMTRWMTVIOFYxNEg2TTIwLjUsMTMuNUExLDEgMCAwLDAgMTkuNSwxNC41QTEsMSAwIDAsMCAyMC41LDE1LjVBMSwxIDAgMCwwIDIxLjUsMTQuNUExLDEgMCAwLDAgMjAuNSwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlY29yZFJlYyA9IFwiTTEyLjUsNUE3LjUsNy41IDAgMCwwIDUsMTIuNUE3LjUsNy41IDAgMCwwIDEyLjUsMjBBNy41LDcuNSAwIDAsMCAyMCwxMi41QTcuNSw3LjUgMCAwLDAgMTIuNSw1TTcsMTBIOUExLDEgMCAwLDEgMTAsMTFWMTJDMTAsMTIuNSA5LjYyLDEyLjkgOS4xNCwxMi45N0wxMC4zMSwxNUg5LjE1TDgsMTNWMTVIN00xMiwxMEgxNFYxMUgxMlYxMkgxNFYxM0gxMlYxNEgxNFYxNUgxMkExLDEgMCAwLDEgMTEsMTRWMTFBMSwxIDAgMCwxIDEyLDEwTTE2LDEwSDE4VjExSDE2VjE0SDE4VjE1SDE2QTEsMSAwIDAsMSAxNSwxNFYxMUExLDEgMCAwLDEgMTYsMTBNOCwxMVYxMkg5VjExXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjdGFuZ2xlID0gXCJNNCw2VjE5SDIwVjZINFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWN0YW5nbGVPdXRsaW5lID0gXCJNNCw2VjE5SDIwVjZINE0xOCwxN0g2VjhIMThWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjeWNsZSA9IFwiTTIxLjgyLDE1LjQyTDE5LjMyLDE5Ljc1QzE4LjgzLDIwLjYxIDE3LjkyLDIxLjA2IDE3LDIxSDE1VjIzTDEyLjUsMTguNUwxNSwxNFYxNkgxNy44MkwxNS42LDEyLjE1TDE5LjkzLDkuNjVMMjEuNzMsMTIuNzdDMjIuMjUsMTMuNTQgMjIuMzIsMTQuNTcgMjEuODIsMTUuNDJNOS4yMSwzLjA2SDE0LjIxQzE1LjE5LDMuMDYgMTYuMDQsMy42MyAxNi40NSw0LjQ1TDE3LjQ1LDYuMTlMMTkuMTgsNS4xOUwxNi41NCw5LjZMMTEuMzksOS42OUwxMy4xMiw4LjY5TDExLjcxLDYuMjRMOS41LDEwLjA5TDUuMTYsNy41OUw2Ljk2LDQuNDdDNy4zNywzLjY0IDguMjIsMy4wNiA5LjIxLDMuMDZNNS4wNSwxOS43NkwyLjU1LDE1LjQzQzIuMDYsMTQuNTggMi4xMywxMy41NiAyLjY0LDEyLjc5TDMuNjQsMTEuMDZMMS45MSwxMC4wNkw3LjA1LDEwLjE0TDkuNywxNC41Nkw3Ljk3LDEzLjU2TDYuNTYsMTZIMTFWMjFINy40QzYuNDcsMjEuMDcgNS41NSwyMC42MSA1LjA1LDE5Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlY3ljbGVWYXJpYW50ID0gXCJNNy4xNyA3LjkxTDguOSA4LjkxTDEyLjA4IDMuNDJMMTQuMzMgNy4zMUwxMS43MyA4LjgxTDE3LjE5IDEwLjI3TDE4LjY2IDQuODFMMTYuMDYgNi4zMUwxMy44MSAyLjQxQzEzLjI2IDEuNDUgMTIuMDMgMS4xMiAxMS4wOCAxLjY4QzEwLjgxIDEuODMgMTAuNTggMi4wNSAxMC40MSAyLjMxTTEwIDIwVjE4TDMuNjYgMThMNS45IDE0LjFMOC41IDE1LjZMNy4wNCAxMC4xNEwxLjU3IDExLjZMNC4xNyAxMy4xTDEuOTIgMTdDMS4zNyAxNy45NiAxLjcgMTkuMTggMi42NSAxOS43M0MyLjkyIDE5Ljg5IDMuMjIgMTkuOTcgMy41NCAyME0xOS4wNiAxMS41TDE3LjMyIDEyLjVMMjAuNSAxOEgxNlYxNUwxMiAxOUwxNiAyM1YyMEgyMC41QzIxLjYxIDIwIDIyLjUgMTkuMTEgMjIuNSAxOEMyMi41IDE3LjY5IDIyLjQyIDE3LjM4IDIyLjI4IDE3LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlZGRpdCA9IFwiTTE0LjUgMTUuNDFDMTQuNTggMTUuNSAxNC41OCAxNS42OSAxNC41IDE1LjhDMTMuNzcgMTYuNSAxMi40MSAxNi41NiAxMiAxNi41NkMxMS42MSAxNi41NiAxMC4yNSAxNi41IDkuNTQgMTUuOEM5LjQ0IDE1LjY5IDkuNDQgMTUuNSA5LjU0IDE1LjQxQzkuNjUgMTUuMzEgOS44MiAxNS4zMSA5LjkyIDE1LjQxQzEwLjM4IDE1Ljg3IDExLjMzIDE2IDEyIDE2QzEyLjY5IDE2IDEzLjY2IDE1Ljg3IDE0LjEgMTUuNDFDMTQuMjEgMTUuMzEgMTQuMzggMTUuMzEgMTQuNSAxNS40MU0xMC43NSAxMy4wNEMxMC43NSAxMi40NyAxMC4yOCAxMiA5LjcxIDEyQzkuMTQgMTIgOC42NyAxMi40NyA4LjY3IDEzLjA0QzguNjcgMTMuNjEgOS4xNCAxNC4wOSA5LjcxIDE0LjA4QzEwLjI4IDE0LjA4IDEwLjc1IDEzLjYxIDEwLjc1IDEzLjA0TTE0LjI5IDEyQzEzLjcyIDEyIDEzLjI1IDEyLjUgMTMuMjUgMTMuMDVTMTMuNzIgMTQuMDkgMTQuMjkgMTQuMDlDMTQuODYgMTQuMDkgMTUuMzMgMTMuNjEgMTUuMzMgMTMuMDVDMTUuMzMgMTIuNSAxNC44NiAxMiAxNC4yOSAxMk0yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJTMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMlMyMiA2LjUgMjIgMTJNMTguNjcgMTJDMTguNjcgMTEuMTkgMTggMTAuNTQgMTcuMjIgMTAuNTRDMTYuODIgMTAuNTQgMTYuNDYgMTAuNyAxNi4yIDEwLjk1QzE1LjIgMTAuMjMgMTMuODMgOS43NyAxMi4zIDkuNzFMMTIuOTcgNi41OEwxNS4xNCA3LjA1QzE1LjE2IDcuNiAxNS42MiA4LjA0IDE2LjE4IDguMDRDMTYuNzUgOC4wNCAxNy4yMiA3LjU3IDE3LjIyIDdDMTcuMjIgNi40MyAxNi43NSA1Ljk2IDE2LjE4IDUuOTZDMTUuNzcgNS45NiAxNS40MSA2LjIgMTUuMjUgNi41NUwxMi44MiA2LjAzQzEyLjc1IDYgMTIuNjggNi4wMyAxMi42MyA2LjA3QzEyLjU3IDYuMTEgMTIuNTQgNi4xNyAxMi41MyA2LjI0TDExLjc5IDkuNzJDMTAuMjQgOS43NyA4Ljg0IDEwLjIzIDcuODIgMTAuOTZDNy41NiAxMC43MSA3LjIgMTAuNTYgNi44MSAxMC41NkM2IDEwLjU2IDUuMzUgMTEuMjEgNS4zNSAxMkM1LjM1IDEyLjYxIDUuNzEgMTMuMTEgNi4yMSAxMy4zNEM2LjE5IDEzLjUgNi4xOCAxMy42MiA2LjE4IDEzLjc4QzYuMTggMTYgOC43OSAxNy44NSAxMiAxNy44NUMxNS4yMyAxNy44NSAxNy44NSAxNi4wMyAxNy44NSAxMy43OEMxNy44NSAxMy42NCAxNy44NCAxMy41IDE3LjgxIDEzLjM0QzE4LjMxIDEzLjExIDE4LjY3IDEyLjYgMTguNjcgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVkaGF0ID0gXCJNMTUuMzQgMTMuMTZDMTYuNjYgMTMuMTYgMTguNTYgMTIuODkgMTguNTYgMTEuMzJDMTguNTcgMTEuMiAxOC41NiAxMS4wOCAxOC41MyAxMC45NkwxNy43NSA3LjU2QzE3LjU3IDYuODEgMTcuNDEgNi40NyAxNi4wOSA1LjgxQzE1LjA3IDUuMjkgMTIuODUgNC40MyAxMi4xOSA0LjQzQzExLjU4IDQuNDMgMTEuNCA1LjIyIDEwLjY3IDUuMjJDOS45NyA1LjIyIDkuNDUgNC42MyA4Ljc5IDQuNjNDOC4xNiA0LjYzIDcuNzUgNS4wNiA3LjQzIDUuOTRDNy40MyA1Ljk0IDYuNTUgOC40NCA2LjQzIDguOEM2LjQyIDguODcgNi40MSA4LjkzIDYuNDEgOUM2LjQxIDkuOTcgMTAuMjMgMTMuMTUgMTUuMzQgMTMuMTVNMTguNzcgMTEuOTZDMTguOTUgMTIuODIgMTguOTUgMTIuOTEgMTguOTUgMTNDMTguOTUgMTQuNSAxNy4yOSAxNS4zMSAxNS4xMiAxNS4zMUMxMC4yIDE1LjMxIDUuODkgMTIuNDMgNS44OSAxMC41M0M1Ljg5IDEwLjI2IDUuOTUgMTAgNi4wNSA5Ljc2QzQuMjggOS44NCAyIDEwLjE2IDIgMTIuMThDMiAxNS41IDkuODQgMTkuNTcgMTYuMDUgMTkuNTdDMjAuODEgMTkuNTcgMjIgMTcuNDIgMjIgMTUuNzJDMjIgMTQuMzggMjAuODUgMTIuODYgMTguNzcgMTEuOTZcIjtcclxuZXhwb3J0IHZhciBtZGlSZWRvID0gXCJNMTguNCwxMC42QzE2LjU1LDkgMTQuMTUsOCAxMS41LDhDNi44NSw4IDIuOTIsMTEuMDMgMS41NCwxNS4yMkwzLjksMTZDNC45NSwxMi44MSA3Ljk1LDEwLjUgMTEuNSwxMC41QzEzLjQ1LDEwLjUgMTUuMjMsMTEuMjIgMTYuNjIsMTIuMzhMMTMsMTZIMjJWN0wxOC40LDEwLjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVkb1ZhcmlhbnQgPSBcIk0xMC41LDdBNi41LDYuNSAwIDAsMCA0LDEzLjVBNi41LDYuNSAwIDAsMCAxMC41LDIwSDE0VjE4SDEwLjVDOCwxOCA2LDE2IDYsMTMuNUM2LDExIDgsOSAxMC41LDlIMTYuMTdMMTMuMDksMTIuMDlMMTQuNSwxMy41TDIwLDhMMTQuNSwyLjVMMTMuMDgsMy45MUwxNi4xNyw3SDEwLjVNMTgsMThIMTZWMjBIMThWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVmbGVjdEhvcml6b250YWwgPSBcIk0yMiwyMEgxNEExLDEgMCAwLDEgMTMsMTlWNC45N0MxMyw0LjUgMTMuMzEsNC4xMiAxMy43NCw0QzE0LjE5LDMuODggMTQuNjUsNC4wOCAxNC44Nyw0LjQ3TDIyLjg5LDE4LjVDMjMuMDcsMTguODEgMjMuMDcsMTkuMTkgMjIuODksMTkuNUMyMi43MSwxOS44MSAyMi4zOCwyMCAyMiwyME0yLDIwQzEuNjIsMjAgMS4yOSwxOS44MSAxLjExLDE5LjVDMC45MywxOS4xOSAwLjkzLDE4LjgxIDEuMTEsMTguNUw5LjEzLDQuNDdDOS4zNSw0LjA4IDkuODEsMy44OCAxMC4yNiw0QzEwLjY5LDQuMTIgMTEsNC41IDExLDQuOTdWMTlBMSwxIDAgMCwxIDEwLDIwSDJNOSwxOFY4Ljc0TDMuNzEsMThIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWZsZWN0VmVydGljYWwgPSBcIk0xOCwyM0g2QzUuNjEsMjMgNS4yNiwyMi43OSA1LjA5LDIyLjQ1QzQuOTIsMjIuMTEgNC45NiwyMS43IDUuMTksMjEuNEwxMS4yLDEzLjM4QzExLjU4LDEyLjg3IDEyLjQyLDEyLjg3IDEyLjgsMTMuMzhMMTguODEsMjEuNEMxOS4wNCwyMS43IDE5LjA4LDIyLjExIDE4LjkxLDIyLjQ1QzE4Ljc0LDIyLjc5IDE4LjM5LDIzIDE4LDIzTTE4LDFDMTguMzksMSAxOC43NCwxLjIxIDE4LjkxLDEuNTVDMTkuMDgsMS44OSAxOS4wNCwyLjMgMTguODEsMi42TDEyLjgsMTAuNjJDMTIuNDIsMTEuMTMgMTEuNTgsMTEuMTMgMTEuMiwxMC42Mkw1LjE5LDIuNkM0Ljk2LDIuMyA0LjkyLDEuODkgNS4wOSwxLjU1QzUuMjYsMS4yMSA1LjYxLDEgNiwxSDE4TTgsM0wxMiw4LjM1TDE2LDNIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWZyZXNoID0gXCJNMTcuNjUsNi4zNUMxNi4yLDQuOSAxNC4yMSw0IDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQzE1LjczLDIwIDE4Ljg0LDE3LjQ1IDE5LjczLDE0SDE3LjY1QzE2LjgzLDE2LjMzIDE0LjYxLDE4IDEyLDE4QTYsNiAwIDAsMSA2LDEyQTYsNiAwIDAsMSAxMiw2QzEzLjY2LDYgMTUuMTQsNi42OSAxNi4yMiw3Ljc4TDEzLDExSDIwVjRMMTcuNjUsNi4zNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWZyZXNoQ2lyY2xlID0gXCJNMTIgMkExMCAxMCAwIDEgMCAyMiAxMkExMCAxMCAwIDAgMCAxMiAyTTE4IDExSDEzTDE0LjgxIDkuMTlBMy45NCAzLjk0IDAgMCAwIDEyIDhBNCA0IDAgMSAwIDE1Ljg2IDEzSDE3LjkxQTYgNiAwIDEgMSAxMiA2QTUuOTEgNS45MSAwIDAgMSAxNi4yMiA3Ljc4TDE4IDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVnZXggPSBcIk0xNiwxNi45MkMxNS42NywxNi45NyAxNS4zNCwxNyAxNSwxN0MxNC42NiwxNyAxNC4zMywxNi45NyAxNCwxNi45MlYxMy40MUwxMS41LDE1Ljg5QzExLDE1LjUgMTAuNSwxNSAxMC4xMSwxNC41TDEyLjU5LDEySDkuMDhDOS4wMywxMS42NyA5LDExLjM0IDksMTFDOSwxMC42NiA5LjAzLDEwLjMzIDkuMDgsMTBIMTIuNTlMMTAuMTEsNy41QzEwLjMsNy4yNSAxMC41LDcgMTAuNzYsNi43NlY2Ljc2QzExLDYuNSAxMS4yNSw2LjMgMTEuNSw2LjExTDE0LDguNTlWNS4wOEMxNC4zMyw1LjAzIDE0LjY2LDUgMTUsNUMxNS4zNCw1IDE1LjY3LDUuMDMgMTYsNS4wOFY4LjU5TDE4LjUsNi4xMUMxOSw2LjUgMTkuNSw3IDE5Ljg5LDcuNUwxNy40MSwxMEgyMC45MkMyMC45NywxMC4zMyAyMSwxMC42NiAyMSwxMUMyMSwxMS4zNCAyMC45NywxMS42NyAyMC45MiwxMkgxNy40MUwxOS44OSwxNC41QzE5LjcsMTQuNzUgMTkuNSwxNSAxOS4yNCwxNS4yNFYxNS4yNEMxOSwxNS41IDE4Ljc1LDE1LjcgMTguNSwxNS44OUwxNiwxMy40MVYxNi45MkgxNlYxNi45Mk01LDE5QTIsMiAwIDAsMSA3LDE3QTIsMiAwIDAsMSA5LDE5QTIsMiAwIDAsMSA3LDIxQTIsMiAwIDAsMSA1LDE5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVnaXN0ZXJlZFRyYWRlbWFyayA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsMTJDMjAsMTYuNDEgMTYuNDEsMjAgMTIsMjBNMTIuMjUsMTMuMjdIMTAuODFWMTYuNUg5VjcuNzFIMTIuMjZDMTMuMjksNy43MSAxNC4wOSw3Ljk0IDE0LjY2LDguNEMxNS4yMiw4Ljg3IDE1LjUsOS41IDE1LjUsMTAuMzZDMTUuNSwxMC45NiAxNS4zNywxMS40NiAxNS4xMSwxMS44NkMxNC44NSwxMi4yNiAxNC40NiwxMi41OCAxMy45MywxMi44MUwxNS44MywxNi40VjE2LjVIMTMuODlMMTIuMjUsMTMuMjdNMTAuODEsMTEuODFIMTIuMjdDMTIuNzIsMTEuODEgMTMuMDcsMTEuNjkgMTMuMzIsMTEuNDZDMTMuNTcsMTEuMjMgMTMuNjksMTAuOTEgMTMuNjksMTAuNUMxMy42OSwxMC4wOSAxMy41OCw5Ljc3IDEzLjM0LDkuNTNDMTMuMTEsOS4yOSAxMi43NSw5LjE4IDEyLjI2LDkuMThIMTAuODFWMTEuODFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVpdGVyYXRlID0gXCJNMTAuNSA0QTYuNSA2LjUgMCAwIDAgNCAxMEgxTDUgMTRMOSAxMEg2LjAzQTQuNSA0LjUgMCAwIDEgMTAuNSA2QTQuNSA0LjUgMCAwIDEgMTUgMTAuNUE0LjUgNC41IDAgMCAxIDEwLjUgMTVIMlYxN0gxMC41QTYuNSA2LjUgMCAwIDAgMTcgMTAuNUE2LjUgNi41IDAgMCAwIDEwLjUgNE0xOSAxMlYxNUgxNi41QTcuNSA3LjUgMCAwIDEgMTQuMjQgMTdIMTlWMjBMMjMgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25NYW55VG9NYW55ID0gXCJNMjIgMTNWMTlIMjFMMTkgMTdIMTFWOUg1TDMgMTFIMlY1SDNMNSA3SDEzVjE1SDE5TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uTWFueVRvT25lID0gXCJNMjIgMTVWMTdIMTlWMTlIMTdWMTdIMTFWOUg1TDMgMTFIMlY1SDNMNSA3SDEzVjE1SDE3VjEzSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uTWFueVRvT25lT3JNYW55ID0gXCJNMjIgMTNWMTlIMjFMMTkgMTdWMTlIMTdWMTdIMTFWOUg1TDMgMTFIMlY1SDNMNSA3SDEzVjE1SDE3VjEzSDE5VjE1TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uTWFueVRvT25seU9uZSA9IFwiTTIyIDE1VjE3SDIxVjE5SDE5VjE3SDE4VjE5SDE2VjE3SDExVjlINUwzIDExSDJWNUgzTDUgN0gxM1YxNUgxNlYxM0gxOFYxNUgxOVYxM0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvbk1hbnlUb1plcm9Pck1hbnkgPSBcIk0yMSAxM0wxOSAxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdINUwzIDVIMlYxMUgzTDUgOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5TDIxIDE5SDIyVjEzTTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25NYW55VG9aZXJvT3JPbmUgPSBcIk0yMSAxNVYxM0gxOVYxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdINUwzIDVIMlYxMUgzTDUgOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5VjE5SDIxVjE3SDIyVjE1TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25PbmVPck1hbnlUb01hbnkgPSBcIk0yMiAxM1YxOUgyMUwxOSAxN0gxMVY5SDdWMTFINVY5TDMgMTFIMlY1SDNMNSA3VjVIN1Y3SDEzVjE1SDE5TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lT3JNYW55VG9PbmUgPSBcIk0yMiAxNVYxN0gxOVYxOUgxN1YxN0gxMVY5SDdWMTFINVY5TDMgMTFIMlY1SDNMNSA3VjVIN1Y3SDEzVjE1SDE3VjEzSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lT3JNYW55VG9PbmVPck1hbnkgPSBcIk0yMiAxM1YxOUgyMUwxOSAxN1YxOUgxN1YxN0gxMVY5SDdWMTFINVY5TDMgMTFIMlY1SDNMNSA3VjVIN1Y3SDEzVjE1SDE3VjEzSDE5VjE1TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lT3JNYW55VG9Pbmx5T25lID0gXCJNMjIgMTVWMTdIMjFWMTlIMTlWMTdIMThWMTlIMTZWMTdIMTFWOUg3VjExSDVWOUwzIDExSDJWNUgzTDUgN1Y1SDdWN0gxM1YxNUgxNlYxM0gxOFYxNUgxOVYxM0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvbk9uZU9yTWFueVRvWmVyb09yTWFueSA9IFwiTTIxIDEzTDE5IDE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g3VjVINVY3TDMgNUgyVjExSDNMNSA5VjExSDdWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5TDIxIDE5SDIyVjEzTTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25PbmVPck1hbnlUb1plcm9Pck9uZSA9IFwiTTIxIDE1VjEzSDE5VjE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g3VjVINVY3TDMgNUgyVjExSDNMNSA5VjExSDdWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5VjE5SDIxVjE3SDIyVjE1TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25PbmVUb01hbnkgPSBcIk0yMiAxM1YxOUgyMUwxOSAxN0gxMVY5SDdWMTFINVY5SDJWN0g1VjVIN1Y3SDEzVjE1SDE5TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lVG9PbmUgPSBcIk0yMiAxNVYxN0gxOVYxOUgxN1YxN0gxMVY5SDdWMTFINVY5SDJWN0g1VjVIN1Y3SDEzVjE1SDE3VjEzSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lVG9PbmVPck1hbnkgPSBcIk0yMiAxM1YxOUgyMUwxOSAxN1YxOUgxN1YxN0gxMVY5SDdWMTFINVY5SDJWN0g1VjVIN1Y3SDEzVjE1SDE3VjEzSDE5VjE1TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lVG9Pbmx5T25lID0gXCJNMjIgMTVWMTdIMjFWMTlIMTlWMTdIMThWMTlIMTZWMTdIMTFWOUg3VjExSDVWOUgyVjdINVY1SDdWN0gxM1YxNUgxNlYxM0gxOFYxNUgxOVYxM0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvbk9uZVRvWmVyb09yTWFueSA9IFwiTTIxIDEzTDE5IDE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g3VjVINVY3SDJWOUg1VjExSDdWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5TDIxIDE5SDIyVjEzTTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25PbmVUb1plcm9Pck9uZSA9IFwiTTIxIDE1VjEzSDE5VjE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g3VjVINVY3SDJWOUg1VjExSDdWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5VjE5SDIxVjE3SDIyVjE1TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25Pbmx5T25lVG9NYW55ID0gXCJNMjIgMTNWMTlIMjFMMTkgMTdIMTFWOUg4VjExSDZWOUg1VjExSDNWOUgyVjdIM1Y1SDVWN0g2VjVIOFY3SDEzVjE1SDE5TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25seU9uZVRvT25lID0gXCJNMjIgMTVWMTdIMTlWMTlIMTdWMTdIMTFWOUg4VjExSDZWOUg1VjExSDNWOUgyVjdIM1Y1SDVWN0g2VjVIOFY3SDEzVjE1SDE3VjEzSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25seU9uZVRvT25lT3JNYW55ID0gXCJNMjIgMTNWMTlIMjFMMTkgMTdWMTlIMTdWMTdIMTFWOUg4VjExSDZWOUg1VjExSDNWOUgyVjdIM1Y1SDVWN0g2VjVIOFY3SDEzVjE1SDE3VjEzSDE5VjE1TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25seU9uZVRvT25seU9uZSA9IFwiTTIyIDE1VjE3SDIxVjE5SDE5VjE3SDE4VjE5SDE2VjE3SDExVjlIOFYxMUg2VjlINVYxMUgzVjlIMlY3SDNWNUg1VjdINlY1SDhWN0gxM1YxNUgxNlYxM0gxOFYxNUgxOVYxM0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvbk9ubHlPbmVUb1plcm9Pck1hbnkgPSBcIk0yMSAxM0wxOSAxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdIOFY1SDZWN0g1VjVIM1Y3SDJWOUgzVjExSDVWOUg2VjExSDhWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5TDIxIDE5SDIyVjEzTTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25Pbmx5T25lVG9aZXJvT3JPbmUgPSBcIk0yMSAxNVYxM0gxOVYxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdIOFY1SDZWN0g1VjVIM1Y3SDJWOUgzVjExSDVWOUg2VjExSDhWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5VjE5SDIxVjE3SDIyVjE1TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25aZXJvT3JNYW55VG9NYW55ID0gXCJNMjEgMTNMMTkgMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVMMyA1SDJWMTFIM0w1IDlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxOUwyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yTWFueVRvT25lID0gXCJNMTkgMTVWMTNIMTdWMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVMMyA1SDJWMTFIM0w1IDlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxN1YxOUgxOVYxN0gyMlYxNU03LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yTWFueVRvT25lT3JNYW55ID0gXCJNMjEgMTNMMTkgMTVWMTNIMTdWMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVMMyA1SDJWMTFIM0w1IDlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxN1YxOUgxOVYxN0wyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yTWFueVRvT25seU9uZSA9IFwiTTIxIDE1VjEzSDE5VjE1SDE4VjEzSDE2VjE1SDEzVjdIOS43OUEyLjUgMi41IDAgMCAwIDUuMjEgN0g1TDMgNUgyVjExSDNMNSA5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTZWMTlIMThWMTdIMTlWMTlIMjFWMTdIMjJWMTVNNy41IDlBMSAxIDAgMSAxIDguNSA4QTEgMSAwIDAgMSA3LjUgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvblplcm9Pck1hbnlUb1plcm9Pck1hbnkgPSBcIk0yMSAxM0wxOSAxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdIOS43OUEyLjUgMi41IDAgMCAwIDUuMjEgN0g1TDMgNUgyVjExSDNMNSA5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTQuMjFBMi41IDIuNSAwIDAgMCAxOC43OSAxN0gxOUwyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25aZXJvT3JNYW55VG9aZXJvT3JPbmUgPSBcIk0yMSAxNVYxM0gxOVYxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdIOS43OUEyLjUgMi41IDAgMCAwIDUuMjEgN0g1TDMgNUgyVjExSDNMNSA5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTQuMjFBMi41IDIuNSAwIDAgMCAxOC43OSAxN0gxOVYxOUgyMVYxN0gyMlYxNU03LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25aZXJvT3JPbmVUb01hbnkgPSBcIk0yMSAxM0wxOSAxNUgxM1Y3SDkuNzlBMi41IDIuNSAwIDAgMCA1LjIxIDdINVY1SDNWN0gyVjlIM1YxMUg1VjlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxOUwyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yT25lVG9PbmUgPSBcIk0xOSAxNVYxM0gxN1YxNUgxM1Y3SDkuNzlBMi41IDIuNSAwIDAgMCA1LjIxIDdINVY1SDNWN0gyVjlIM1YxMUg1VjlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxN1YxOUgxOVYxN0gyMlYxNU03LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yT25lVG9PbmVPck1hbnkgPSBcIk0yMSAxM0wxOSAxNVYxM0gxN1YxNUgxM1Y3SDkuNzlBMi41IDIuNSAwIDAgMCA1LjIxIDdINVY1SDNWN0gyVjlIM1YxMUg1VjlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxN1YxOUgxOVYxN0wyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yT25lVG9Pbmx5T25lID0gXCJNMjEgMTVWMTNIMTlWMTVIMThWMTNIMTZWMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVWNUgzVjdIMlY5SDNWMTFINVY5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTZWMTlIMThWMTdIMTlWMTlIMjFWMTdIMjJWMTVNNy41IDlBMSAxIDAgMSAxIDguNSA4QTEgMSAwIDAgMSA3LjUgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvblplcm9Pck9uZVRvWmVyb09yTWFueSA9IFwiTTIxIDEzTDE5IDE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVWNUgzVjdIMlY5SDNWMTFINVY5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTQuMjFBMi41IDIuNSAwIDAgMCAxOC43OSAxN0gxOUwyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25aZXJvT3JPbmVUb1plcm9Pck9uZSA9IFwiTTIxIDE1VjEzSDE5VjE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVWNUgzVjdIMlY5SDNWMTFINVY5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTQuMjFBMi41IDIuNSAwIDAgMCAxOC43OSAxN0gxOVYxOUgyMVYxN0gyMlYxNU03LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpdmVTY2FsZSA9IFwiTTIwLDE4SDRWNkgyME0yMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNE0xMiwxMEgxMFYxMkgxMk04LDEwSDZWMTJIOE0xNiwxNEgxNFYxNkgxNk0xNiwxMEgxNFYxMkgxNlYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxvYWQgPSBcIk0yIDEyQzIgMTYuOTcgNi4wMyAyMSAxMSAyMUMxMy4zOSAyMSAxNS42OCAyMC4wNiAxNy40IDE4LjRMMTUuOSAxNi45QzE0LjYzIDE4LjI1IDEyLjg2IDE5IDExIDE5QzQuNzYgMTkgMS42NCAxMS40NiA2LjA1IDcuMDVDMTAuNDYgMi42NCAxOCA1Ljc3IDE4IDEySDE1TDE5IDE2SDE5LjFMMjMgMTJIMjBDMjAgNy4wMyAxNS45NyAzIDExIDNDNi4wMyAzIDIgNy4wMyAyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbG9hZEFsZXJ0ID0gXCJNMiAxMkMyIDE3IDYgMjEgMTEgMjFDMTMuNCAyMSAxNS43IDIwLjEgMTcuNCAxOC40TDE1LjkgMTYuOUMxNC42IDE4LjMgMTIuOSAxOSAxMSAxOUM0LjggMTkgMS42IDExLjUgNi4xIDcuMVMxOCA1LjggMTggMTJIMTVMMTkgMTZIMTkuMUwyMyAxMkgyMEMyMCA3IDE2IDMgMTEgM1MyIDcgMiAxMk0xMCAxNUgxMlYxN0gxMFYxNU0xMCA3SDEyVjEzSDEwVjdcIjtcclxuZXhwb3J0IHZhciBtZGlSZW1pbmRlciA9IFwiTTcuMjUsM0M3LjksMyA4LjUsMy4yMSA5LDMuNTZWM0EyLDIgMCAwLDEgMTEsMUEyLDIgMCAwLDEgMTMsM1YzLjU3QzEzLjUsMy4yMiAxNC4xLDMgMTQuNzUsM0EzLDMgMCAwLDEgMTcuNzUsNkMxNy43NSw3LjU4IDE2LjU0LDguODcgMTUsOUgxM1YxMEgxNC4yNEwxNC43MiwxMC4xM0wxOS4zMSwxMi40MkMyMC4xMywxMi43MyAyMC41MywxMy4zNCAyMC41MywxNC4yNUwyMC41LDE0LjM5VjE0LjUzTDE5LjUsMjEuMjhDMTkuNDQsMjEuNzUgMTkuMjIsMjIuMTYgMTguODQsMjIuNUMxOC40NywyMi44NCAxOC4wNSwyMyAxNy41OCwyM0gxMEM5LjQ1LDIzIDksMjIuODEgOC41OCwyMi40MUwyLDE1Ljg0TDMuMDUsMTQuNzdDMy4zMywxNC41IDMuNjksMTQuMzQgNC4xMywxNC4zNEg0LjQ1TDksMTUuMzNWMTBMOSw5SDdWOUM1LjQ2LDguODYgNC4yNSw3LjU3IDQuMjUsNkEzLDMgMCAwLDEgNy4yNSwzTTksNkExLjc1LDEuNzUgMCAwLDAgNy4yNSw0LjI1QTEuNzUsMS43NSAwIDAsMCA1LjUsNkM1LjUsNi44OCA2LjE1LDcuNjEgNyw3LjczVjcuNzVIOVY2TTE1LDcuNzVWNy43NEMxNS44NSw3LjYyIDE2LjUsNi44OSAxNi41LDZDMTYuNSw1LjA0IDE1LjcyLDQuMjYgMTQuNzUsNC4yNkMxMy43OCw0LjI2IDEzLDUuMDQgMTMsNlY3Ljc1SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbW90ZSA9IFwiTTEyLDBDOC45NiwwIDYuMjEsMS4yMyA0LjIyLDMuMjJMNS42Myw0LjYzQzcuMjYsMyA5LjUsMiAxMiwyQzE0LjUsMiAxNi43NCwzIDE4LjM2LDQuNjRMMTkuNzcsMy4yM0MxNy43OSwxLjIzIDE1LjA0LDAgMTIsME03LjA1LDYuMDVMOC40Niw3LjQ2QzkuMzcsNi41NiAxMC42Miw2IDEyLDZDMTMuMzgsNiAxNC42Myw2LjU2IDE1LjU0LDcuNDZMMTYuOTUsNi4wNUMxNS42OCw0Ljc4IDEzLjkzLDQgMTIsNEMxMC4wNyw0IDguMzIsNC43OCA3LjA1LDYuMDVNMTIsMTVBMiwyIDAgMCwxIDEwLDEzQTIsMiAwIDAsMSAxMiwxMUEyLDIgMCAwLDEgMTQsMTNBMiwyIDAgMCwxIDEyLDE1TTE1LDlIOUExLDEgMCAwLDAgOCwxMFYyMkExLDEgMCAwLDAgOSwyM0gxNUExLDEgMCAwLDAgMTYsMjJWMTBBMSwxIDAgMCwwIDE1LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVtb3RlRGVza3RvcCA9IFwiTTMsMkEyLDIgMCAwLDAgMSw0VjE2QzEsMTcuMTEgMS45LDE4IDMsMThIMTBWMjBIOFYyMkgxNlYyMEgxNFYxOEgyMUEyLDIgMCAwLDAgMjMsMTZWNEEyLDIgMCAwLDAgMjEsMk0zLDRIMjFWMTZIM00xNSw1TDExLjUsOC41TDE1LDEyTDE2LjQsMTAuNkwxNC4zLDguNUwxNi40LDYuNE05LDhMNy42LDkuNEw5LjcsMTEuNUw3LjYsMTMuNkw5LDE1TDEyLjUsMTEuNVwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbW90ZU9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjEsMjEuNzJMMTkuNzMsMjNMMTYsMTkuMjdWMjJBMSwxIDAgMCwxIDE1LDIzSDlDOC40NiwyMyA4LDIyLjU1IDgsMjJWMTEuMjdMMiw1LjI3TTEyLDBDMTUuMDUsMCAxNy44LDEuMjMgMTkuNzcsMy4yM0wxOC4zNiw0LjY0QzE2Ljc1LDMgMTQuNSwyIDEyLDJDOS43MiwyIDcuNjQsMi44NSA2LjA2LDQuMjRMNC42NCwyLjgyQzYuNTksMS4wNyA5LjE3LDAgMTIsME0xMiw0QzEzLjk0LDQgMTUuNjksNC43OCAxNi45NSw2LjA1TDE1LjU1LDcuNDZDMTQuNjQsNi41NiAxMy4zOSw2IDEyLDZDMTAuODMsNiA5Ljc2LDYuNCA4LjksNy4wOEw3LjUsNS42NkM4LjcsNC42MiAxMC4yOCw0IDEyLDRNMTUsOUMxNS41Niw5IDE2LDkuNDUgMTYsMTBWMTQuMThMMTMuNSwxMS42OUwxMy4zMSwxMS41TDEwLjgyLDlIMTVNMTAuMDMsMTMuM0MxMC4xNiwxNC4xNiAxMC44NCwxNC44NSAxMS43MSwxNUwxMC4wMywxMy4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbW90ZVR2ID0gXCJNOSwyQzcuODksMiA3LDIuODkgNyw0VjIwQzcsMjEuMTEgNy44OSwyMiA5LDIySDE1QzE2LjExLDIyIDE3LDIxLjExIDE3LDIwVjRDMTcsMi44OSAxNi4xMSwyIDE1LDJIMTNWNEgxMVYySDlNMTEsNkgxM1Y4SDE1VjEwSDEzVjEySDExVjEwSDlWOEgxMVY2TTksMTRIMTFWMTZIOVYxNE0xMywxNEgxNVYxNkgxM1YxNE05LDE4SDExVjIwSDlWMThNMTMsMThIMTVWMjBIMTNWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVtb3RlVHZPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIwLDIwLjcyTDE4LjczLDIyTDE3LDIwLjI1QzE2Ljg2LDIxLjI0IDE2LDIyIDE1LDIySDlBMiwyIDAgMCwxIDcsMjBWMTAuMjdMMiw1LjI3TTksMkgxMVY0SDEzVjJIMTVBMiwyIDAgMCwxIDE3LDRWMTUuMThMMTMsMTEuMThWMTBIMTVWOEgxM1Y2SDExVjhIOS44Mkw3LDUuMThWNEEyLDIgMCAwLDEgOSwyTTksMjBIMTFWMThIOVYyME0xMywyMEgxNVYxOC4yN0wxNC43MywxOEgxM1YyME05LDE0VjE2SDExVjE0LjI3TDEwLjczLDE0SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVuYW1lQm94ID0gXCJNMTgsMTdIMTAuNUwxMi41LDE1SDE4TTYsMTdWMTQuNUwxMy44OCw2LjY1QzE0LjA3LDYuNDUgMTQuMzksNi40NSAxNC41OSw2LjY1TDE2LjM1LDguNDFDMTYuNTUsOC42MSAxNi41NSw4LjkyIDE2LjM1LDkuMTJMOC40NywxN00xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSZW9yZGVySG9yaXpvbnRhbCA9IFwiTTMsMTVIMjFWMTNIM1YxNU0zLDE5SDIxVjE3SDNWMTlNMywxMUgyMVY5SDNWMTFNMyw1VjdIMjFWNUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlb3JkZXJWZXJ0aWNhbCA9IFwiTTksM1YyMUgxMVYzSDlNNSwzVjIxSDdWM0g1TTEzLDNWMjFIMTVWM0gxM00xOSwzSDE3VjIxSDE5VjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwZWF0ID0gXCJNMTcsMTdIN1YxNEwzLDE4TDcsMjJWMTlIMTlWMTNIMTdNNyw3SDE3VjEwTDIxLDZMMTcsMlY1SDVWMTFIN1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlcGVhdE9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTUuNzMsMTlIN1YyMkwzLDE4TDcsMTRWMTdIMTMuNzNMNywxMC4yN1YxMUg1VjguMjdMMiw1LjI3TTE3LDEzSDE5VjE3LjE4TDE3LDE1LjE4VjEzTTE3LDVWMkwyMSw2TDE3LDEwVjdIOC44Mkw2LjgyLDVIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwZWF0T25jZSA9IFwiTTEzLDE1VjlIMTJMMTAsMTBWMTFIMTEuNVYxNU0xNywxN0g3VjE0TDMsMThMNywyMlYxOUgxOVYxM0gxN003LDdIMTdWMTBMMjEsNkwxNywyVjVINVYxMUg3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwbGF5ID0gXCJNMTIsNVYxTDcsNkwxMiwxMVY3QTYsNiAwIDAsMSAxOCwxM0E2LDYgMCAwLDEgMTIsMTlBNiw2IDAgMCwxIDYsMTNINEE4LDggMCAwLDAgMTIsMjFBOCw4IDAgMCwwIDIwLDEzQTgsOCAwIDAsMCAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlcGx5ID0gXCJNMTAsOVY1TDMsMTJMMTAsMTlWMTQuOUMxNSwxNC45IDE4LjUsMTYuNSAyMSwyMEMyMCwxNSAxNywxMCAxMCw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlcGx5QWxsID0gXCJNMTMsOVY1TDYsMTJMMTMsMTlWMTQuOUMxOCwxNC45IDIxLjUsMTYuNSAyNCwyMEMyMywxNSAyMCwxMCAxMyw5TTcsOFY1TDAsMTJMNywxOVYxNkwzLDEyTDcsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZXBseUFsbE91dGxpbmUgPSBcIk0xMSw5LjhWMTAuN0wxMi43LDEwLjlDMTUuMywxMS4zIDE3LjIsMTIuMyAxOC42LDEzLjZDMTYuOSwxMy4xIDE1LjEsMTIuOCAxMywxMi44SDExVjE0LjFMOC44LDEyTDExLDkuOE0xMyw1TDYsMTJMMTMsMTlWMTQuOUMxOCwxNC45IDIxLjUsMTYuNSAyNCwyMEMyMywxNSAyMCwxMCAxMyw5TTcsOFY1TDAsMTJMNywxOVYxNkwzLDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwbHlDaXJjbGUgPSBcIk0yIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJTMjIgMTcuNSAyMiAxMiAxNy41IDIgMTIgMiAyIDYuNSAyIDEyTTUgMTFMMTAgNlY5QzE1LjA2IDkuNzMgMTcuMjggMTMuMzMgMTggMTdDMTYuMTkgMTQuNDMgMTMuNjEgMTMgMTAgMTNWMTZMNSAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZXBseU91dGxpbmUgPSBcIk04LDkuOFYxMC43TDkuNywxMUMxMi4zLDExLjQgMTQuMiwxMi40IDE1LjYsMTMuN0MxMy45LDEzLjIgMTIuMSwxMi45IDEwLDEyLjlIOFYxNC4yTDUuOCwxMkw4LDkuOE0xMCw1TDMsMTJMMTAsMTlWMTQuOUMxNSwxNC45IDE4LjUsMTYuNSAyMSwyMEMyMCwxNSAxNywxMCAxMCw5XCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwcm9kdWN0aW9uID0gXCJNMTIuNzIsMTMuMTVMMTMuNjIsMTIuMjZDMTMuNiwxMSAxNC4zMSw5LjQ0IDE1LjYyLDguMTRDMTcuNTcsNi4xOCAyMC4xMSw1LjU1IDIxLjI4LDYuNzJDMjIuNDUsNy44OSAyMS44MiwxMC40MyAxOS44NiwxMi4zOEMxOC41NiwxMy42OSAxNywxNC40IDE1Ljc0LDE0LjM4TDE0Ljg1LDE1LjI4QzE0LjUsMTUuNjEgMTQsMTUuNjYgMTMuNiwxNS40MUMxMi43NiwxNS43MSAxMiwxNi4wOCAxMS41NiwxNi44QzExLjAzLDE3LjY4IDExLjAzLDE5LjEgMTAuNDcsMTkuOTVDOS45MSwyMC44MSA4Ljc5LDIxLjEgNy42MSwyMS4xQzYuNDMsMjEuMSA1LDIxIDMuOTUsMTkuNUw2LjQzLDE5LjkyQzcsMjAgOC41LDE5LjM5IDkuMDUsMTguNTRDOS42MSwxNy42OCA5LjYxLDE2LjI3IDEwLjE0LDE1LjM4QzEwLjYxLDE0LjYgMTEuNSwxNC4yMyAxMi40MywxMy45MUMxMi40MiwxMy42NCAxMi41LDEzLjM2IDEyLjcyLDEzLjE1TTcsMkE1LDUgMCAwLDEgMTIsN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMiw3QTUsNSAwIDAsMSA3LDJNNyw0QTMsMyAwIDAsMCA0LDdBMywzIDAgMCwwIDcsMTBBMywzIDAgMCwwIDEwLDdBMywzIDAgMCwwIDcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZXNpc3RvciA9IFwiTTIsMTFIN0wxMC4wNywxNS4zNUwxMy4xMSw0TDE4LDExSDIyVjEzSDE3TDEzLjkzLDguNjVMMTAuODksMjBMNiwxM0gyVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlc2lzdG9yTm9kZXMgPSBcIk0yLDExSDMuNjdDNC4wOCw5LjgzIDUuMTksOSA2LjUsOUEzLDMgMCAwLDEgOS41LDEyQzkuNSwxMi42NSA5LjI5LDEzLjI1IDguOTQsMTMuNzRMMTAuMDcsMTUuMzVMMTMuMTEsNEwxNC42MSw2LjEzTDE2LjcsOS4xMUwxNy41LDlDMTguODEsOSAxOS45Miw5LjgzIDIwLjMzLDExSDIyVjEzSDIwLjMzQzE5LjkyLDE0LjE3IDE4LjgxLDE1IDE3LjUsMTVBMywzIDAgMCwxIDE0LjUsMTJDMTQuNSwxMS4zNSAxNC43MSwxMC43NSAxNS4wNiwxMC4yNkwxMy45Myw4LjY1TDEwLjg5LDIwTDcuMywxNC44OUM3LjA1LDE0Ljk2IDYuNzgsMTUgNi41LDE1QzUuMTksMTUgNC4wOCwxNC4xNyAzLjY3LDEzSDJWMTFNMTcuNSwxMC41QTEuNSwxLjUgMCAwLDAgMTYsMTJBMS41LDEuNSAwIDAsMCAxNy41LDEzLjVBMS41LDEuNSAwIDAsMCAxOSwxMkExLjUsMS41IDAgMCwwIDE3LjUsMTAuNU02LjUsMTAuNUExLjUsMS41IDAgMCwwIDUsMTJBMS41LDEuNSAwIDAsMCA2LjUsMTMuNUExLjUsMS41IDAgMCwwIDgsMTJBMS41LDEuNSAwIDAsMCA2LjUsMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZXNpemUgPSBcIk0xMC41OSwxMkwxNC41OSw4SDExVjZIMThWMTNIMTZWOS40MUwxMiwxMy40MVYxNkgyMFY0SDhWMTJIMTAuNTlNMjIsMlYxOEgxMlYyMkgyVjEySDZWMkgyMk0xMCwxNEg0VjIwSDEwVjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlc2l6ZUJvdHRvbVJpZ2h0ID0gXCJNMjIsMjJIMjBWMjBIMjJWMjJNMjIsMThIMjBWMTZIMjJWMThNMTgsMjJIMTZWMjBIMThWMjJNMTgsMThIMTZWMTZIMThWMThNMTQsMjJIMTJWMjBIMTRWMjJNMjIsMTRIMjBWMTJIMjJWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVzcG9uc2l2ZSA9IFwiTTQsNlYxNkg5VjEyQTIsMiAwIDAsMSAxMSwxMEgxNkEyLDIgMCAwLDEgMTgsMTJWMTZIMjBWNkg0TTAsMjBWMThINEEyLDIgMCAwLDEgMiwxNlY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMTZBMiwyIDAgMCwxIDIwLDE4SDI0VjIwSDE4VjIwQzE4LDIxLjExIDE3LjEsMjIgMTYsMjJIMTFBMiwyIDAgMCwxIDksMjBIOUwwLDIwTTExLjUsMjBBMC41LDAuNSAwIDAsMCAxMSwyMC41QTAuNSwwLjUgMCAwLDAgMTEuNSwyMUEwLjUsMC41IDAgMCwwIDEyLDIwLjVBMC41LDAuNSAwIDAsMCAxMS41LDIwTTE1LjUsMjBBMC41LDAuNSAwIDAsMCAxNSwyMC41QTAuNSwwLjUgMCAwLDAgMTUuNSwyMUEwLjUsMC41IDAgMCwwIDE2LDIwLjVBMC41LDAuNSAwIDAsMCAxNS41LDIwTTEzLDIwVjIxSDE0VjIwSDEzTTExLDEyVjE5SDE2VjEySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlc3RhcnQgPSBcIk0xMiw0QzE0LjEsNCAxNi4xLDQuOCAxNy42LDYuM0MyMC43LDkuNCAyMC43LDE0LjUgMTcuNiwxNy42QzE1LjgsMTkuNSAxMy4zLDIwLjIgMTAuOSwxOS45TDExLjQsMTcuOUMxMy4xLDE4LjEgMTQuOSwxNy41IDE2LjIsMTYuMkMxOC41LDEzLjkgMTguNSwxMC4xIDE2LjIsNy43QzE1LjEsNi42IDEzLjUsNiAxMiw2VjEwLjZMNyw1LjZMMTIsMC42VjRNNi4zLDE3LjZDMy43LDE1IDMuMywxMSA1LjEsNy45TDYuNiw5LjRDNS41LDExLjYgNS45LDE0LjQgNy44LDE2LjJDOC4zLDE2LjcgOC45LDE3LjEgOS42LDE3LjRMOSwxOS40QzgsMTkgNy4xLDE4LjQgNi4zLDE3LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVzdGFydEFsZXJ0ID0gXCJNMTAgNC4wM1YuNjMzTDUgNS42M0wxMCAxMC42M1Y2LjAzQzExLjUgNi4wMyAxMy4xMSA2LjYzIDE0LjIxIDcuNzNDMTYuNSAxMC4xMyAxNi41IDEzLjkzIDE0LjIxIDE2LjIzQzEyLjkxIDE3LjUzIDExLjExIDE4LjEzIDkuNCAxNy45M0w4LjkgMTkuOTNDMTEuMzEgMjAuMjMgMTMuODEgMTkuNTMgMTUuNjEgMTcuNjNDMTguNyAxNC41MyAxOC43IDkuNDMgMTUuNjEgNi4zM0MxNC4xMSA0LjgzIDEyLjExIDQuMDMgMTAgNC4wM000LjMxIDE3LjYzQzUuMTEgMTguNDMgNiAxOS4wMyA3IDE5LjQzTDcuNjEgMTcuNDNDNi45MSAxNy4xMyA2LjMxIDE2LjczIDUuODEgMTYuMjNDMy45MSAxNC40MyAzLjUgMTEuNjMgNC42MSA5LjQzTDMuMTEgNy45M0MxLjMxIDExLjAzIDEuNzEgMTUuMDMgNC4zMSAxNy42M00yMCAxM0gyMlY3SDIwVjEzTTIwIDE3SDIyVjE1SDIwVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlc3RhcnRPZmYgPSBcIk0yMC44LDIyLjdMMTYuNiwxOC41QzE0LjksMTkuNyAxMi45LDIwLjIgMTAuOSwxOS45TDExLjQsMTcuOUMxMi43LDE4IDE0LDE3LjcgMTUuMSwxN0wxLjEsM0wyLjQsMS43TDE2LjUsMTUuOEwxNy45LDE3LjJMMjIuMSwyMS40TDIwLjgsMjIuN00xMiw2QzEzLjUsNiAxNS4xLDYuNiAxNi4yLDcuOEMxOCw5LjYgMTguNCwxMi4yIDE3LjUsMTQuNEwxOSwxNS45QzIwLjcsMTIuOSAyMC4yLDkgMTcuNiw2LjRDMTYuMSw0LjggMTQsNCAxMiw0VjAuN0w3LjksNC43TDEyLDguOFY2TTYuNiw5LjRMNS4xLDcuOUMzLjMsMTEgMy43LDE1IDYuMywxNy43QzcuMSwxOC40IDgsMTkgOSwxOS40TDkuNSwxNy40QzguOSwxNy4xIDguMywxNi43IDcuNywxNi4yQzUuOSwxNC40IDUuNSwxMS42IDYuNiw5LjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVzdG9yZSA9IFwiTTEzLDNBOSw5IDAgMCwwIDQsMTJIMUw0Ljg5LDE1Ljg5TDQuOTYsMTYuMDNMOSwxMkg2QTcsNyAwIDAsMSAxMyw1QTcsNyAwIDAsMSAyMCwxMkE3LDcgMCAwLDEgMTMsMTlDMTEuMDcsMTkgOS4zMiwxOC4yMSA4LjA2LDE2Ljk0TDYuNjQsMTguMzZDOC4yNywyMCAxMC41LDIxIDEzLDIxQTksOSAwIDAsMCAyMiwxMkE5LDkgMCAwLDAgMTMsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSZXN0b3JlQWxlcnQgPSBcIk0xMyAzQzggMyA0IDcgNCAxMkgxTDQuOSAxNS45TDUgMTZMOSAxMkg2QzYgOC4xIDkuMSA1IDEzIDVTMjAgOC4xIDIwIDEyIDE2LjkgMTkgMTMgMTlDMTEuMSAxOSA5LjMgMTguMiA4LjEgMTYuOUw2LjcgMTguM0M4LjMgMjAgMTAuNSAyMSAxMyAyMUMxOCAyMSAyMiAxNyAyMiAxMlMxOCAzIDEzIDNNMTIgMTVIMTRWMTdIMTJWMTVNMTIgN0gxNFYxM0gxMlY3XCI7XHJcbmV4cG9ydCB2YXIgbWRpUmV3aW5kID0gXCJNMTEuNSwxMkwyMCwxOFY2TTExLDE4VjZMMi41LDEyTDExLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJld2luZDEwID0gXCJNMTIuNSwzQzE3LjE1LDMgMjEuMDgsNi4wMyAyMi40NywxMC4yMkwyMC4xLDExQzE5LjA1LDcuODEgMTYuMDQsNS41IDEyLjUsNS41QzEwLjU0LDUuNSA4Ljc3LDYuMjIgNy4zOCw3LjM4TDEwLDEwSDNWM0w1LjYsNS42QzcuNDUsNCA5Ljg1LDMgMTIuNSwzTTEwLDEyVjIySDhWMTRINlYxMkgxME0xOCwxNFYyMEMxOCwyMS4xMSAxNy4xMSwyMiAxNiwyMkgxNEEyLDIgMCAwLDEgMTIsMjBWMTRBMiwyIDAgMCwxIDE0LDEySDE2QzE3LjExLDEyIDE4LDEyLjkgMTgsMTRNMTQsMTRWMjBIMTZWMTRIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmV3aW5kMzAgPSBcIk0xOSwxNFYyMEMxOSwyMS4xMSAxOC4xMSwyMiAxNywyMkgxNUEyLDIgMCAwLDEgMTMsMjBWMTRBMiwyIDAgMCwxIDE1LDEySDE3QzE4LjExLDEyIDE5LDEyLjkgMTksMTRNMTUsMTRWMjBIMTdWMTRIMTVNMTEsMjBDMTEsMjEuMTEgMTAuMSwyMiA5LDIySDVWMjBIOVYxOEg3VjE2SDlWMTRINVYxMkg5QTIsMiAwIDAsMSAxMSwxNFYxNS41QTEuNSwxLjUgMCAwLDEgOS41LDE3QTEuNSwxLjUgMCAwLDEgMTEsMTguNVYyME0xMi41LDNDMTcuMTUsMyAyMS4wOCw2LjAzIDIyLjQ3LDEwLjIyTDIwLjEsMTFDMTkuMDUsNy44MSAxNi4wNCw1LjUgMTIuNSw1LjVDMTAuNTQsNS41IDguNzcsNi4yMiA3LjM4LDcuMzhMMTAsMTBIM1YzTDUuNiw1LjZDNy40NSw0IDkuODUsMyAxMi41LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmV3aW5kNSA9IFwiTTEyLjUgM0MxNy4xNSAzIDIxLjA4IDYuMDMgMjIuNDcgMTAuMjJMMjAuMSAxMUMxOS4wNSA3LjgxIDE2LjA0IDUuNSAxMi41IDUuNUMxMC41NCA1LjUgOC43NyA2LjIyIDcuMzggNy4zOEwxMCAxMEgzVjNMNS42IDUuNkM3LjQ1IDQgOS44NSAzIDEyLjUgM005IDEySDE1VjE0SDExVjE2SDEzQzE0LjExIDE2IDE1IDE2LjkgMTUgMThWMjBDMTUgMjEuMTEgMTQuMTEgMjIgMTMgMjJIOVYyMEgxM1YxOEg5VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJld2luZDYwID0gXCJNMTkgMTRWMjBDMTkgMjEuMSAxOC4xIDIyIDE3IDIySDE1QzEzLjkgMjIgMTMgMjEuMSAxMyAyMFYxNEMxMyAxMi45IDEzLjkgMTIgMTUgMTJIMTdDMTguMSAxMiAxOSAxMi45IDE5IDE0TTE1IDE0VjIwSDE3VjE0SDE1TTEyLjUgM0MxNy4xIDMgMjEuMSA2IDIyLjUgMTAuMkwyMC4xIDExQzE5IDcuOCAxNiA1LjUgMTIuNSA1LjVDMTAuNSA1LjUgOC44IDYuMiA3LjQgNy40TDEwIDEwSDNWM0w1LjYgNS42QzcuNCA0IDkuOSAzIDEyLjUgM003IDEyQzUuOSAxMiA1IDEyLjkgNSAxNFYyMEM1IDIxLjEgNS45IDIyIDcgMjJIOUMxMC4xIDIyIDExIDIxLjEgMTEgMjBWMThDMTEgMTYuOSAxMC4xIDE2IDkgMTZIN1YxNEgxMVYxMkg3TTcgMThIOVYyMEg3VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJld2luZE91dGxpbmUgPSBcIk0xMCw5LjlMNywxMkwxMCwxNC4xVjkuOU0xOSw5LjlMMTYsMTJMMTksMTQuMVY5LjlNMTIsNlYxOEwzLjUsMTJMMTIsNk0yMSw2VjE4TDEyLjUsMTJMMjEsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlSaG9tYnVzID0gXCJNMTIgMkMxMS41IDIgMTEgMi4xOSAxMC41OSAyLjU5TDIuNTkgMTAuNTlDMS44IDExLjM3IDEuOCAxMi42MyAyLjU5IDEzLjQxTDEwLjU5IDIxLjQxQzExLjM3IDIyLjIgMTIuNjMgMjIuMiAxMy40MSAyMS40MUwyMS40MSAxMy40MUMyMi4yIDEyLjYzIDIyLjIgMTEuMzcgMjEuNDEgMTAuNTlMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJob21idXNNZWRpdW0gPSBcIk0xMiA2LjQ2QzExLjcyIDYuNDYgMTEuNDQgNi41NiAxMS4yMiA2Ljc4TDYuNzggMTEuMjJDNi4zNSAxMS42NSA2LjM1IDEyLjM1IDYuNzggMTIuNzhMMTEuMjIgMTcuMjJDMTEuNjUgMTcuNjUgMTIuMzUgMTcuNjUgMTIuNzggMTcuMjJMMTcuMjIgMTIuNzhDMTcuNjUgMTIuMzUgMTcuNjUgMTEuNjUgMTcuMjIgMTEuMjJMMTIuNzggNi43OEMxMi41NiA2LjU2IDEyLjI4IDYuNDYgMTIgNi40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlSaG9tYnVzTWVkaXVtT3V0bGluZSA9IFwiTTEyIDYuNDZDMTEuNzIgNi40NiAxMS40NCA2LjU2IDExLjIyIDYuNzhMNi43OCAxMS4yMkM2LjM1IDExLjY1IDYuMzUgMTIuMzUgNi43OCAxMi43OEwxMS4yMiAxNy4yMkMxMS42NSAxNy42NSAxMi4zNSAxNy42NSAxMi43OCAxNy4yMkwxNy4yMiAxMi43OEMxNy42NSAxMi4zNSAxNy42NSAxMS42NSAxNy4yMiAxMS4yMkwxMi43OCA2Ljc4QzEyLjU2IDYuNTYgMTIuMjggNi40NiAxMiA2LjQ2TTEyIDguODNMMTUuMTcgMTJMMTIgMTUuMTdMOC44MyAxMkwxMiA4LjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJob21idXNPdXRsaW5lID0gXCJNMTIgMkMxMS41IDIgMTEgMi4xOSAxMC41OSAyLjU5TDIuNTkgMTAuNTlDMS44IDExLjM3IDEuOCAxMi42MyAyLjU5IDEzLjQxTDEwLjU5IDIxLjQxQzExLjM3IDIyLjIgMTIuNjMgMjIuMiAxMy40MSAyMS40MUwyMS40MSAxMy40MUMyMi4yIDEyLjYzIDIyLjIgMTEuMzcgMjEuNDEgMTAuNTlMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyTTEyIDRMMjAgMTJMMTIgMjBMNCAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSaG9tYnVzU3BsaXQgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMNy4yOSA1Ljg4TDEyIDEwLjU4TDE2LjcxIDUuODhMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyTTUuODggNy4yOUwyLjU5IDEwLjU5QzEuOCAxMS4zNyAxLjggMTIuNjMgMi41OSAxMy40MUw1Ljg4IDE2LjcxTDEwLjU4IDEyTDUuODggNy4yOU0xOC4xMiA3LjI5TDEzLjQyIDEyTDE4LjEyIDE2LjcxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxOC4xMiA3LjI5TTEyIDEzLjQyTDcuMjkgMTguMTJMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDE2LjcxIDE4LjEyTDEyIDEzLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJob21idXNTcGxpdE91dGxpbmUgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTIgNEwxNS4yOSA3LjI5TDEyIDEwLjU5TDguNzEgNy4yOUwxMiA0TTcuMjkgOC43MUwxMC41OSAxMkw3LjI5IDE1LjI5TDQgMTJMNy4yOSA4LjcxTTE2LjcxIDguNzFMMjAgMTJMMTYuNzEgMTUuMjlMMTMuNDEgMTJMMTYuNzEgOC43MU0xMiAxMy40MUwxNS4yOSAxNi43MUwxMiAyMEw4LjcxIDE2LjcxTDEyIDEzLjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJpYmJvbiA9IFwiTTEzLjQxLDE5LjMxTDE2LjU5LDIyLjVMMTgsMjEuMDdMMTQuODMsMTcuOU0xNS41NCwxMS41M0gxNS41M0wxMiwxNS4wN0w4LjQ3LDExLjUzSDguNDZWMTEuNTNDNy41NiwxMC42MyA3LDkuMzggNyw4QTUsNSAwIDAsMSAxMiwzQTUsNSAwIDAsMSAxNyw4QzE3LDkuMzggMTYuNDQsMTAuNjMgMTUuNTQsMTEuNTNNMTYuOSwxM0MxOC4yLDExLjczIDE5LDkuOTYgMTksOEE3LDcgMCAwLDAgMTIsMUE3LDcgMCAwLDAgNSw4QzUsOS45NiA1LjgxLDExLjczIDcuMSwxM1YxM0wxMC41OSwxNi41TDYsMjEuMDdMNy40MSwyMi41TDE2LjksMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmljZSA9IFwiTTIyLDExSDE5LjdDMTkuNCw5LjkgMTguOSw4LjggMTguMiw4TDIxLjYsMi42TDE5LjksMS41TDE2LjcsNi42QzE2LjMsNi4zIDE2LDYuMSAxNS41LDUuOUwxNi40LDIuM0wxNC41LDEuOEwxMy43LDUuMkMxMy4xLDUuMSAxMi42LDUgMTIsNUM4LjMsNSA1LjIsNy42IDQuMywxMUgyQzIsMTUuMSA0LjUsMTguNiA4LDIwLjJWMjJIMTZWMjAuMkMxOS41LDE4LjYgMjIsMTUuMSAyMiwxMU0xMiw3QzE0LjYsNyAxNi44LDguNyAxNy42LDExSDYuNEM3LjIsOC43IDkuNCw3IDEyLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmlja3NoYXcgPSBcIk0yMCAxNC4wNVYxMi43M0MyMCAxMi4yNiAxOS44NCAxMS44IDE5LjU0IDExLjQ0TDE1LjYgNi43MkMxNS4yMiA2LjI2IDE0LjY2IDYgMTQuMDYgNkg0QzIuOSA2IDIgNi45IDIgOFYxNUMyIDE2LjEgMi45IDE3IDQgMTdINC4wNUM0LjI4IDE4LjE0IDUuMjkgMTkgNi41IDE5UzguNzIgMTguMTQgOC45NSAxN0gxNy4wNUMxNy4yOCAxOC4xNCAxOC4yOSAxOSAxOS41IDE5QzIwLjg4IDE5IDIyIDE3Ljg4IDIyIDE2LjVDMjIgMTUuMjkgMjEuMTQgMTQuMjggMjAgMTQuMDVNMy41IDhDMy41IDcuNzMgMy43MyA3LjUgNCA3LjVIN1YxMkgzLjVWOE02LjUgMTcuNUM1Ljk1IDE3LjUgNS41IDE3LjA1IDUuNSAxNi41UzUuOTUgMTUuNSA2LjUgMTUuNSA3LjUgMTUuOTUgNy41IDE2LjUgNy4wNSAxNy41IDYuNSAxNy41TTEzIDE1LjVIOVYxNEgxMVYxMkg5VjcuNUgxM1YxNS41TTE1IDguMzRMMTguMDUgMTJIMTVWOC4zNE0xOS41IDE3LjVDMTguOTUgMTcuNSAxOC41IDE3LjA1IDE4LjUgMTYuNVMxOC45NSAxNS41IDE5LjUgMTUuNSAyMC41IDE1Ljk1IDIwLjUgMTYuNSAyMC4wNSAxNy41IDE5LjUgMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSaWNrc2hhd0VsZWN0cmljID0gXCJNMjAgMTIuMDVWMTAuNzNDMjAgMTAuMjYgMTkuODQgOS44IDE5LjU0IDkuNDRMMTUuNiA0LjcyQzE1LjIyIDQuMjYgMTQuNjYgNCAxNC4wNiA0SDRDMi45IDQgMiA0LjkgMiA2VjEzQzIgMTQuMSAyLjkgMTUgNCAxNUg0LjA1QzQuMjggMTYuMTQgNS4yOSAxNyA2LjUgMTdTOC43MiAxNi4xNCA4Ljk1IDE1SDE3LjA1QzE3LjI4IDE2LjE0IDE4LjI5IDE3IDE5LjUgMTdDMjAuODggMTcgMjIgMTUuODggMjIgMTQuNUMyMiAxMy4yOSAyMS4xNCAxMi4yOCAyMCAxMi4wNU0zLjUgNkMzLjUgNS43MyAzLjczIDUuNSA0IDUuNUg3VjEwSDMuNVY2TTYuNSAxNS41QzUuOTUgMTUuNSA1LjUgMTUuMDUgNS41IDE0LjVTNS45NSAxMy41IDYuNSAxMy41IDcuNSAxMy45NSA3LjUgMTQuNSA3LjA1IDE1LjUgNi41IDE1LjVNMTMgMTMuNUg5VjEySDExVjEwSDlWNS41SDEzVjEzLjVNMTUgNi4zNEwxOC4wNSAxMEgxNVY2LjM0TTE5LjUgMTUuNUMxOC45NSAxNS41IDE4LjUgMTUuMDUgMTguNSAxNC41UzE4Ljk1IDEzLjUgMTkuNSAxMy41IDIwLjUgMTMuOTUgMjAuNSAxNC41IDIwLjA1IDE1LjUgMTkuNSAxNS41TTExIDIwSDdMMTMgMjNWMjFIMTdMMTEgMThWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmluZyA9IFwiTTEyLDEwTDgsNC40TDkuNiwySDE0LjRMMTYsNC40TDEyLDEwTTE1LjUsNi44TDE0LjMsOC41QzE2LjUsOS40IDE4LDExLjUgMTgsMTRBNiw2IDAgMCwxIDEyLDIwQTYsNiAwIDAsMSA2LDE0QzYsMTEuNSA3LjUsOS40IDkuNyw4LjVMOC41LDYuOEM1LjgsOC4xIDQsMTAuOCA0LDE0QTgsOCAwIDAsMCAxMiwyMkE4LDggMCAwLDAgMjAsMTRDMjAsMTAuOCAxOC4yLDguMSAxNS41LDYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSaXZldCA9IFwiTTExLjQzLDJDMTAuNjEsMiA5Ljk0LDIuNjUgOS45NCwzLjVDOS45NCw0LjY0IDkuOTQsNS44IDkuOTQsNi45Nkg3Ljk1VjcuOTVIMTUuOTFWNi45NkgxMy45MkMxMy45Miw1LjggMTMuOTIsNC42NCAxMy45MiwzLjVDMTMuOTIsMi42NSAxMy4yNSwyIDEyLjQzLDJIMTEuNDNNMTAuOTQsOC45NVYyMS44N0wxMS45MywyMi44N0wxMi45MiwyMS44N1Y4Ljk1SDEwLjk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYWQgPSBcIk0xMSwxNkgxM1YyMEgxMU0xMSwxMEgxM1YxNEgxMU0xMSw0SDEzVjhIMTFNNCwyMkgyMFYySDRWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9hZFZhcmlhbnQgPSBcIk0xOC4xLDQuOEMxOCw0LjMgMTcuNiw0IDE3LjEsNEgxM0wxMy4yLDdIMTAuOEwxMSw0SDYuOEM2LjMsNCA1LjksNC40IDUuOCw0LjhMMy4xLDE4LjhDMywxOS40IDMuNSwyMCA0LjEsMjBIMTBMMTAuMywxNUgxMy43TDE0LDIwSDE5LjhDMjAuNCwyMCAyMC45LDE5LjQgMjAuOCwxOC44TDE4LjEsNC44TTEwLjQsMTNMMTAuNiw5SDEzLjJMMTMuNCwxM0gxMC40WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYmJlciA9IFwiTTEwLjcgMTIuNUMxMC43IDEyLjggOS40IDEzLjIgOC40IDEzLjJTNi4zIDEyLjUgNi4zIDEyLjNDNi4zIDEyIDcgMTEuMSA4LjYgMTFDOS41IDEwLjkgMTAuNSAxMS41IDEwLjcgMTIuNU0xNS40IDExQzE0LjQgMTAuOSAxMy41IDExLjUgMTMuMyAxMi41QzEzLjMgMTIuOCAxNC41IDEzLjIgMTUuNiAxMy4yQzE2LjcgMTMuMiAxNy43IDEyLjUgMTcuNyAxMi4zUzE3IDExLjEgMTUuNCAxMU0yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJTMiAxNy41IDIgMTIgNi41IDIgMTIgMiAyMiA2LjUgMjIgMTJNMjAgMTEuMkMyMCA5LjIgMTkuMyA4LjUgMTYuNyA4LjVDMTQuMSA4LjUgMTMuMyA5LjYgMTIgOS42UzEwIDguNSA3LjMgOC41IDQgOS4xIDQgMTEuMkM0IDE0LjYgNS41IDE2LjUgNy42IDE2LjVDOS4yIDE2LjUgMTAuNCAxNC41IDEyIDE0LjVTMTQuNyAxNi41IDE2LjQgMTYuNUMxOC41IDE2LjUgMjAgMTQuNiAyMCAxMS4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90ID0gXCJNMTIsMkEyLDIgMCAwLDEgMTQsNEMxNCw0Ljc0IDEzLjYsNS4zOSAxMyw1LjczVjdIMTRBNyw3IDAgMCwxIDIxLDE0SDIyQTEsMSAwIDAsMSAyMywxNVYxOEExLDEgMCAwLDEgMjIsMTlIMjFWMjBBMiwyIDAgMCwxIDE5LDIySDVBMiwyIDAgMCwxIDMsMjBWMTlIMkExLDEgMCAwLDEgMSwxOFYxNUExLDEgMCAwLDEgMiwxNEgzQTcsNyAwIDAsMSAxMCw3SDExVjUuNzNDMTAuNCw1LjM5IDEwLDQuNzQgMTAsNEEyLDIgMCAwLDEgMTIsMk03LjUsMTNBMi41LDIuNSAwIDAsMCA1LDE1LjVBMi41LDIuNSAwIDAsMCA3LjUsMThBMi41LDIuNSAwIDAsMCAxMCwxNS41QTIuNSwyLjUgMCAwLDAgNy41LDEzTTE2LjUsMTNBMi41LDIuNSAwIDAsMCAxNCwxNS41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOEEyLjUsMi41IDAgMCwwIDE5LDE1LjVBMi41LDIuNSAwIDAsMCAxNi41LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90QW5ncnkgPSBcIk0yMiAxNEgyMUMyMSAxMC4xMyAxNy44NyA3IDE0IDdIMTNWNS43M0MxMy42IDUuMzkgMTQgNC43NCAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJTMTAgMi45IDEwIDRDMTAgNC43NCAxMC40IDUuMzkgMTEgNS43M1Y3SDEwQzYuMTMgNyAzIDEwLjEzIDMgMTRIMkMxLjQ1IDE0IDEgMTQuNDUgMSAxNVYxOEMxIDE4LjU1IDEuNDUgMTkgMiAxOUgzVjIwQzMgMjEuMTEgMy45IDIyIDUgMjJIMTlDMjAuMTEgMjIgMjEgMjEuMTEgMjEgMjBWMTlIMjJDMjIuNTUgMTkgMjMgMTguNTUgMjMgMThWMTVDMjMgMTQuNDUgMjIuNTUgMTQgMjIgMTRNNy41IDE4QzYuMTIgMTggNSAxNi44OCA1IDE1LjVDNSAxNC42OCA1LjQgMTMuOTYgNiAxMy41TDkuODMgMTYuMzhDOS41IDE3LjMyIDguNTcgMTggNy41IDE4TTE2LjUgMThDMTUuNDMgMTggMTQuNSAxNy4zMiAxNC4xNyAxNi4zOEwxOCAxMy41QzE4LjYgMTMuOTYgMTkgMTQuNjggMTkgMTUuNUMxOSAxNi44OCAxNy44OCAxOCAxNi41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90QW5ncnlPdXRsaW5lID0gXCJNMjIgMTRIMjFDMjEgMTAuMTMgMTcuODcgNyAxNCA3SDEzVjUuNzNDMTMuNiA1LjM5IDE0IDQuNzQgMTQgNEMxNCAyLjkgMTMuMTEgMiAxMiAyUzEwIDIuOSAxMCA0QzEwIDQuNzQgMTAuNCA1LjM5IDExIDUuNzNWN0gxMEM2LjEzIDcgMyAxMC4xMyAzIDE0SDJDMS40NSAxNCAxIDE0LjQ1IDEgMTVWMThDMSAxOC41NSAxLjQ1IDE5IDIgMTlIM1YyMEMzIDIxLjExIDMuOSAyMiA1IDIySDE5QzIwLjExIDIyIDIxIDIxLjExIDIxIDIwVjE5SDIyQzIyLjU1IDE5IDIzIDE4LjU1IDIzIDE4VjE1QzIzIDE0LjQ1IDIyLjU1IDE0IDIyIDE0TTIxIDE3SDE5VjIwSDVWMTdIM1YxNkg1VjE0QzUgMTEuMjQgNy4yNCA5IDEwIDlIMTRDMTYuNzYgOSAxOSAxMS4yNCAxOSAxNFYxNkgyMVYxN00xNy41IDE1LjVDMTcuNSAxNi42MSAxNi42MSAxNy41IDE1LjUgMTcuNUMxNC41MyAxNy41IDEzLjczIDE2LjgxIDEzLjU0IDE1LjlMMTYuNSAxMy43OEMxNy4xIDE0LjEzIDE3LjUgMTQuNzYgMTcuNSAxNS41TTcuNSAxMy43OEwxMC40NiAxNS45QzEwLjI4IDE2LjgxIDkuNDcgMTcuNSA4LjUgMTcuNUM3LjQgMTcuNSA2LjUgMTYuNjEgNi41IDE1LjVDNi41IDE0Ljc2IDYuOSAxNC4xMyA3LjUgMTMuNzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RDb25mdXNlZCA9IFwiTTIwIDRIMThWM0gyMC41QzIwLjc4IDMgMjEgMy4yMiAyMSAzLjVWNS41QzIxIDUuNzggMjAuNzggNiAyMC41IDZIMjBWN0gxOVY1SDIwVjRNMTkgOUgyMFY4SDE5VjlNMTcgM0gxNlY3SDE3VjNNMjMgMTVWMThDMjMgMTguNTUgMjIuNTUgMTkgMjIgMTlIMjFWMjBDMjEgMjEuMTEgMjAuMTEgMjIgMTkgMjJINUMzLjkgMjIgMyAyMS4xMSAzIDIwVjE5SDJDMS40NSAxOSAxIDE4LjU1IDEgMThWMTVDMSAxNC40NSAxLjQ1IDE0IDIgMTRIM0MzIDEwLjEzIDYuMTMgNyAxMCA3SDExVjUuNzNDMTAuNCA1LjM5IDEwIDQuNzQgMTAgNEMxMCAyLjkgMTAuOSAyIDEyIDJTMTQgMi45IDE0IDRDMTQgNC43NCAxMy42IDUuMzkgMTMgNS43M1Y3SDE0QzE0LjM0IDcgMTQuNjcgNy4wMyAxNSA3LjA4VjEwSDE5Ljc0QzIwLjUzIDExLjEzIDIxIDEyLjUgMjEgMTRIMjJDMjIuNTUgMTQgMjMgMTQuNDUgMjMgMTVNMTAgMTUuNUMxMCAxNC4xMiA4Ljg4IDEzIDcuNSAxM1M1IDE0LjEyIDUgMTUuNSA2LjEyIDE4IDcuNSAxOCAxMCAxNi44OCAxMCAxNS41TTE5IDE1LjVDMTkgMTQuMTIgMTcuODggMTMgMTYuNSAxM1MxNCAxNC4xMiAxNCAxNS41IDE1LjEyIDE4IDE2LjUgMTggMTkgMTYuODggMTkgMTUuNU0xNyA4SDE2VjlIMTdWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdENvbmZ1c2VkT3V0bGluZSA9IFwiTTE5IDhIMjBWOUgxOVY4TTIwIDVIMTlWN0gyMFY2SDIwLjVDMjAuNzggNiAyMSA1Ljc4IDIxIDUuNVYzLjVDMjEgMy4yMiAyMC43OCAzIDIwLjUgM0gxOFY0SDIwVjVNMTcgM0gxNlY3SDE3VjNNMTMuNSAxNS41QzEzLjUgMTYuNjEgMTQuNCAxNy41IDE1LjUgMTcuNVMxNy41IDE2LjYxIDE3LjUgMTUuNSAxNi42MSAxMy41IDE1LjUgMTMuNSAxMy41IDE0LjQgMTMuNSAxNS41TTE3IDhIMTZWOUgxN1Y4TTIyIDE0SDIxQzIxIDEyLjUgMjAuNTMgMTEuMTMgMTkuNzQgMTBIMTYuOTdDMTguMTkgMTAuOTEgMTkgMTIuMzYgMTkgMTRWMTZIMjFWMTdIMTlWMjBINVYxN0gzVjE2SDVWMTRDNSAxMS4yNCA3LjI0IDkgMTAgOUgxNEMxNC4zNCA5IDE0LjY4IDkuMDQgMTUgOS4xVjcuMDhDMTQuNjcgNy4wMyAxNC4zNCA3IDE0IDdIMTNWNS43M0MxMy42IDUuMzkgMTQgNC43NCAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJTMTAgMi45IDEwIDRDMTAgNC43NCAxMC40IDUuMzkgMTEgNS43M1Y3SDEwQzYuMTMgNyAzIDEwLjEzIDMgMTRIMkMxLjQ1IDE0IDEgMTQuNDUgMSAxNVYxOEMxIDE4LjU1IDEuNDUgMTkgMiAxOUgzVjIwQzMgMjEuMTEgMy45IDIyIDUgMjJIMTlDMjAuMTEgMjIgMjEgMjEuMTEgMjEgMjBWMTlIMjJDMjIuNTUgMTkgMjMgMTguNTUgMjMgMThWMTVDMjMgMTQuNDUgMjIuNTUgMTQgMjIgMTRNOC41IDEzLjVDNy40IDEzLjUgNi41IDE0LjQgNi41IDE1LjVTNy40IDE3LjUgOC41IDE3LjUgMTAuNSAxNi42MSAxMC41IDE1LjUgOS42MSAxMy41IDguNSAxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90RGVhZCA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE05Ljg2IDE2LjY4TDguNjggMTcuODZMNy41IDE2LjY4TDYuMzIgMTcuODZMNS4xNCAxNi42OEw2LjMyIDE1LjVMNS4xNCAxNC4zMkw2LjMyIDEzLjE0TDcuNSAxNC4zMkw4LjY4IDEzLjE0TDkuODYgMTQuMzJMOC42OCAxNS41TDkuODYgMTYuNjhNMTguODYgMTYuNjhMMTcuNjggMTcuODZMMTYuNSAxNi42OEwxNS4zMiAxNy44NkwxNC4xNCAxNi42OEwxNS4zMiAxNS41TDE0LjE0IDE0LjMyTDE1LjMyIDEzLjE0TDE2LjUgMTQuMzJMMTcuNjggMTMuMTRMMTguODYgMTQuMzJMMTcuNjggMTUuNUwxOC44NiAxNi42OFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdERlYWRPdXRsaW5lID0gXCJNMTAuNjIgMTQuNDRMOS41NiAxNS41TDEwLjYyIDE2LjU2TDkuNTYgMTcuNjJMOC41IDE2LjU2TDcuNDQgMTcuNjJMNi4zOCAxNi41Nkw3LjQ0IDE1LjVMNi4zOCAxNC40NEw3LjQ0IDEzLjM4TDguNSAxNC40NEw5LjU2IDEzLjM4TDEwLjYyIDE0LjQ0TTE2LjU2IDEzLjM4TDE1LjUgMTQuNDRMMTQuNDQgMTMuMzhMMTMuMzggMTQuNDRMMTQuNDQgMTUuNUwxMy4zOCAxNi41NkwxNC40NCAxNy42MkwxNS41IDE2LjU2TDE2LjU2IDE3LjYyTDE3LjYyIDE2LjU2TDE2LjU2IDE1LjVMMTcuNjIgMTQuNDRMMTYuNTYgMTMuMzhNMjMgMTVWMThDMjMgMTguNTUgMjIuNTUgMTkgMjIgMTlIMjFWMjBDMjEgMjEuMTEgMjAuMTEgMjIgMTkgMjJINUMzLjkgMjIgMyAyMS4xMSAzIDIwVjE5SDJDMS40NSAxOSAxIDE4LjU1IDEgMThWMTVDMSAxNC40NSAxLjQ1IDE0IDIgMTRIM0MzIDEwLjEzIDYuMTMgNyAxMCA3SDExVjUuNzNDMTAuNCA1LjM5IDEwIDQuNzQgMTAgNEMxMCAyLjkgMTAuOSAyIDEyIDJTMTQgMi45IDE0IDRDMTQgNC43NCAxMy42IDUuMzkgMTMgNS43M1Y3SDE0QzE3Ljg3IDcgMjEgMTAuMTMgMjEgMTRIMjJDMjIuNTUgMTQgMjMgMTQuNDUgMjMgMTVNMjEgMTZIMTlWMTRDMTkgMTEuMjQgMTYuNzYgOSAxNCA5SDEwQzcuMjQgOSA1IDExLjI0IDUgMTRWMTZIM1YxN0g1VjIwSDE5VjE3SDIxVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90RXhjaXRlZCA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE04LjY4IDE3LjA0TDcuNSAxNS44Nkw2LjMyIDE3LjA0TDUuMTQgMTUuODZMNy41IDEzLjVMOS44NiAxNS44Nkw4LjY4IDE3LjA0TTE3LjY4IDE3LjA0TDE2LjUgMTUuODZMMTUuMzIgMTcuMDRMMTQuMTQgMTUuODZMMTYuNSAxMy41TDE4Ljg2IDE1Ljg2TDE3LjY4IDE3LjA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90RXhjaXRlZE91dGxpbmUgPSBcIk0yMiAxNEgyMUMyMSAxMC4xMyAxNy44NyA3IDE0IDdIMTNWNS43M0MxMy42IDUuMzkgMTQgNC43NCAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJTMTAgMi45IDEwIDRDMTAgNC43NCAxMC40IDUuMzkgMTEgNS43M1Y3SDEwQzYuMTMgNyAzIDEwLjEzIDMgMTRIMkMxLjQ1IDE0IDEgMTQuNDUgMSAxNVYxOEMxIDE4LjU1IDEuNDUgMTkgMiAxOUgzVjIwQzMgMjEuMTEgMy45IDIyIDUgMjJIMTlDMjAuMTEgMjIgMjEgMjEuMTEgMjEgMjBWMTlIMjJDMjIuNTUgMTkgMjMgMTguNTUgMjMgMThWMTVDMjMgMTQuNDUgMjIuNTUgMTQgMjIgMTRNMjEgMTdIMTlWMjBINVYxN0gzVjE2SDVWMTRDNSAxMS4yNCA3LjI0IDkgMTAgOUgxNEMxNi43NiA5IDE5IDExLjI0IDE5IDE0VjE2SDIxVjE3TTguNSAxMy41TDEwLjg2IDE1Ljg2TDkuNjggMTcuMDRMOC41IDE1Ljg2TDcuMzIgMTcuMDRMNi4xNCAxNS44Nkw4LjUgMTMuNU0xNS41IDEzLjVMMTcuODYgMTUuODZMMTYuNjggMTcuMDRMMTUuNSAxNS44NkwxNC4zMiAxNy4wNEwxMy4xNCAxNS44NkwxNS41IDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RIYXBweSA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE05Ljc5IDE2LjVDOS40IDE1LjYyIDguNTMgMTUgNy41IDE1UzUuNiAxNS42MiA1LjIxIDE2LjVDNS4wOCAxNi4xOSA1IDE1Ljg2IDUgMTUuNUM1IDE0LjEyIDYuMTIgMTMgNy41IDEzUzEwIDE0LjEyIDEwIDE1LjVDMTAgMTUuODYgOS45MiAxNi4xOSA5Ljc5IDE2LjVNMTguNzkgMTYuNUMxOC40IDE1LjYyIDE3LjUgMTUgMTYuNSAxNVMxNC42IDE1LjYyIDE0LjIxIDE2LjVDMTQuMDggMTYuMTkgMTQgMTUuODYgMTQgMTUuNUMxNCAxNC4xMiAxNS4xMiAxMyAxNi41IDEzUzE5IDE0LjEyIDE5IDE1LjVDMTkgMTUuODYgMTguOTIgMTYuMTkgMTguNzkgMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdEhhcHB5T3V0bGluZSA9IFwiTTEwLjUgMTUuNUMxMC41IDE1Ljg3IDEwLjQgMTYuMiAxMC4yMiAxNi41QzkuODggMTUuOTEgOS4yNCAxNS41IDguNSAxNS41UzcuMTIgMTUuOTEgNi43OCAxNi41QzYuNjEgMTYuMiA2LjUgMTUuODcgNi41IDE1LjVDNi41IDE0LjQgNy40IDEzLjUgOC41IDEzLjVTMTAuNSAxNC40IDEwLjUgMTUuNU0yMyAxNVYxOEMyMyAxOC41NSAyMi41NSAxOSAyMiAxOUgyMVYyMEMyMSAyMS4xMSAyMC4xMSAyMiAxOSAyMkg1QzMuOSAyMiAzIDIxLjExIDMgMjBWMTlIMkMxLjQ1IDE5IDEgMTguNTUgMSAxOFYxNUMxIDE0LjQ1IDEuNDUgMTQgMiAxNEgzQzMgMTAuMTMgNi4xMyA3IDEwIDdIMTFWNS43M0MxMC40IDUuMzkgMTAgNC43NCAxMCA0QzEwIDIuOSAxMC45IDIgMTIgMlMxNCAyLjkgMTQgNEMxNCA0Ljc0IDEzLjYgNS4zOSAxMyA1LjczVjdIMTRDMTcuODcgNyAyMSAxMC4xMyAyMSAxNEgyMkMyMi41NSAxNCAyMyAxNC40NSAyMyAxNU0yMSAxNkgxOVYxNEMxOSAxMS4yNCAxNi43NiA5IDE0IDlIMTBDNy4yNCA5IDUgMTEuMjQgNSAxNFYxNkgzVjE3SDVWMjBIMTlWMTdIMjFWMTZNMTUuNSAxMy41QzE0LjQgMTMuNSAxMy41IDE0LjQgMTMuNSAxNS41QzEzLjUgMTUuODcgMTMuNjEgMTYuMiAxMy43OCAxNi41QzE0LjEyIDE1LjkxIDE0Ljc2IDE1LjUgMTUuNSAxNS41UzE2Ljg4IDE1LjkxIDE3LjIyIDE2LjVDMTcuNCAxNi4yIDE3LjUgMTUuODcgMTcuNSAxNS41QzE3LjUgMTQuNCAxNi42MSAxMy41IDE1LjUgMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdEluZHVzdHJpYWwgPSBcIk0xOC40MSw0TDE2LDYuNDFWNi41OUwxOC40MSw5SDIyVjExSDE3LjU5TDE2LDkuNDFWMTJIMTVBMiwyIDAgMCwxIDEzLDEwVjcuNUg5Ljg2QzkuNzcsNy44NyA5LjYyLDguMjIgOS40Miw4LjU1TDE1LjE4LDE5SDIwQTIsMiAwIDAsMSAyMiwyMVYyMkgyVjIxQTIsMiAwIDAsMSA0LDE5SDEwLjYxTDUuOTIsMTAuNUM0LjEyLDEwLjQ3IDIuNTYsOS4yNCAyLjExLDcuNUMxLjU2LDUuMzYgMi44NSwzLjE4IDUsMi42M0M3LjEzLDIuMDggOS4zMSwzLjM2IDkuODYsNS41SDEzVjNBMiwyIDAgMCwxIDE1LDFIMTZWMy41OUwxNy41OSwySDIyVjRIMTguNDFNNiw0LjVBMiwyIDAgMCwwIDQsNi41QTIsMiAwIDAsMCA2LDguNUEyLDIgMCAwLDAgOCw2LjVBMiwyIDAgMCwwIDYsNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90TG92ZSA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE05LjcgMTUuNDVMOC45NyAxNi4xOEw3LjUgMTcuNjVMNS4zIDE1LjQ1QzQuOSAxNS4wNSA0LjkgMTQuMzkgNS4zIDE0QzUuNzEgMTMuNTggNi4zNiAxMy41OCA2Ljc3IDE0TDcuNSAxNC43Mkw4LjIzIDE0QzguNjQgMTMuNTggOS4yOSAxMy41OCA5LjcgMTRDMTAuMSAxNC4zOSAxMC4xIDE1LjA1IDkuNyAxNS40NU0xOC43IDE1LjQ1TDE3Ljk3IDE2LjE4TDE2LjUgMTcuNjVMMTQuMyAxNS40NUMxMy45IDE1LjA1IDEzLjkgMTQuMzkgMTQuMyAxNEMxNC43MSAxMy41OCAxNS4zNiAxMy41OCAxNS43NyAxNEwxNi41IDE0LjcyTDE3LjIzIDE0QzE3LjY0IDEzLjU4IDE4LjI5IDEzLjU4IDE4LjcgMTRDMTkuMSAxNC4zOSAxOS4xIDE1LjA1IDE4LjcgMTUuNDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RMb3ZlT3V0bGluZSA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE0yMSAxN0gxOVYyMEg1VjE3SDNWMTZINVYxNEM1IDExLjI0IDcuMjQgOSAxMCA5SDE0QzE2Ljc2IDkgMTkgMTEuMjQgMTkgMTRWMTZIMjFWMTdNMTAuNyAxNEMxMS4xIDE0LjM5IDExLjEgMTUuMDUgMTAuNyAxNS40NUw5Ljk3IDE2LjE4TDguNSAxNy42NUw2LjMgMTUuNDVDNS45IDE1LjA1IDUuOSAxNC4zOSA2LjMgMTRDNi43MSAxMy41OCA3LjM2IDEzLjU4IDcuNzcgMTRMOC41IDE0LjcyTDkuMjMgMTRDOS42NCAxMy41OCAxMC4yOSAxMy41OCAxMC43IDE0TTE3LjcgMTRDMTguMSAxNC4zOSAxOC4xIDE1LjA1IDE3LjcgMTUuNDVMMTYuOTcgMTYuMThMMTUuNSAxNy42NUwxMy4zIDE1LjQ1QzEyLjkgMTUuMDUgMTIuOSAxNC4zOSAxMy4zIDE0QzEzLjcxIDEzLjU4IDE0LjM2IDEzLjU4IDE0Ljc3IDE0TDE1LjUgMTQuNzJMMTYuMjMgMTRDMTYuNjQgMTMuNTggMTcuMjkgMTMuNTggMTcuNyAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdE1vd2VyID0gXCJNMSAxNFY1SDEzQzE4LjUgNSAyMyA5LjUgMjMgMTVWMTdIMjAuODNDMjAuNDIgMTguMTcgMTkuMzEgMTkgMTggMTlDMTYuNjkgMTkgMTUuNTggMTguMTcgMTUuMTcgMTdIMTBDOS4wOSAxOC4yMSA3LjY0IDE5IDYgMTlDMy4yNCAxOSAxIDE2Ljc2IDEgMTRNNiAxMUM0LjM0IDExIDMgMTIuMzQgMyAxNEMzIDE1LjY2IDQuMzQgMTcgNiAxN0M3LjY2IDE3IDkgMTUuNjYgOSAxNEM5IDEyLjM0IDcuNjYgMTEgNiAxMU0xNSAxMFYxMkgyMC4yNUMxOS45MiAxMS4yNyAxOS41IDEwLjYgMTkgMTBIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RNb3dlck91dGxpbmUgPSBcIk0xIDE0QzEgMTYuNzYgMy4yNCAxOSA2IDE5QzcuNjQgMTkgOS4wOSAxOC4yMSAxMCAxN0gxNS4xN0MxNS41OCAxOC4xNyAxNi43IDE5IDE4IDE5QzE5LjMxIDE5IDIwLjQyIDE4LjE3IDIwLjgzIDE3SDIzVjE1QzIzIDkuNSAxOC41IDUgMTMgNUgxVjE0TTIxIDE1SDEwLjlDMTAuOTcgMTQuNjggMTEgMTQuMzQgMTEgMTRDMTEgMTEuMjQgOC43NiA5IDYgOUM0Ljg3IDkgMy44NCA5LjM3IDMgMTBWN0gxMi41QzE1LjEgNyAxNy40MiA4LjE2IDE5IDEwSDE1VjEySDIwLjI1QzIwLjY3IDEyLjkyIDIwLjkyIDEzLjk0IDIxIDE1TTYgMTFDNy42NiAxMSA5IDEyLjM0IDkgMTRDOSAxNS42NiA3LjY2IDE3IDYgMTdDNC4zNCAxNyAzIDE1LjY2IDMgMTRDMyAxMi4zNCA0LjM0IDExIDYgMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RPZmYgPSBcIk0yMyAxNVYxOEMyMyAxOC41IDIyLjY0IDE4Ljg4IDIyLjE3IDE4Ljk3TDE4Ljk3IDE1Ljc3QzE5IDE1LjY4IDE5IDE1LjU5IDE5IDE1LjVDMTkgMTQuMTIgMTcuODggMTMgMTYuNSAxM0MxNi40MSAxMyAxNi4zMiAxMyAxNi4yMyAxMy4wM0wxMC4yIDdIMTFWNS43M0MxMC40IDUuMzkgMTAgNC43NCAxMCA0QzEwIDIuOSAxMC45IDIgMTIgMlMxNCAyLjkgMTQgNEMxNCA0Ljc0IDEzLjYgNS4zOSAxMyA1LjczVjdIMTRDMTcuODcgNyAyMSAxMC4xMyAyMSAxNEgyMkMyMi41NSAxNCAyMyAxNC40NSAyMyAxNU0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOS44OSAyMS43OEMxOS42MiAyMS45MiAxOS4zMiAyMiAxOSAyMkg1QzMuOSAyMiAzIDIxLjExIDMgMjBWMTlIMkMxLjQ1IDE5IDEgMTguNTUgMSAxOFYxNUMxIDE0LjQ1IDEuNDUgMTQgMiAxNEgzQzMgMTEuNTMgNC4yOSA5LjM2IDYuMjIgOC4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTEwIDE1LjVDMTAgMTQuMTIgOC44OCAxMyA3LjUgMTNTNSAxNC4xMiA1IDE1LjUgNi4xMiAxOCA3LjUgMTggMTAgMTYuODggMTAgMTUuNU0xNi4wNyAxNy45NkwxNC4wNCAxNS45M0MxNC4yMyAxNi45NyAxNS4wNCAxNy43NyAxNi4wNyAxNy45NlpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdE9mZk91dGxpbmUgPSBcIk0yMyAxNVYxOEMyMyAxOC41IDIyLjY0IDE4Ljg4IDIyLjE3IDE4Ljk3TDIwLjIgMTdIMjFWMTZIMTkuMkwxOSAxNS44VjE0QzE5IDExLjI0IDE2Ljc2IDkgMTQgOUgxMi4yTDEwLjIgN0gxMVY1LjczQzEwLjQgNS4zOSAxMCA0Ljc0IDEwIDRDMTAgMi45IDEwLjkgMiAxMiAyUzE0IDIuOSAxNCA0QzE0IDQuNzQgMTMuNiA1LjM5IDEzIDUuNzNWN0gxNEMxNy44NyA3IDIxIDEwLjEzIDIxIDE0SDIyQzIyLjU1IDE0IDIzIDE0LjQ1IDIzIDE1TTguNSAxMy41QzcuNCAxMy41IDYuNSAxNC40IDYuNSAxNS41UzcuNCAxNy41IDguNSAxNy41IDEwLjUgMTYuNjEgMTAuNSAxNS41IDkuNjEgMTMuNSA4LjUgMTMuNU0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOS44OSAyMS43OEMxOS42MiAyMS45MiAxOS4zMiAyMiAxOSAyMkg1QzMuOSAyMiAzIDIxLjExIDMgMjBWMTlIMkMxLjQ1IDE5IDEgMTguNTUgMSAxOFYxNUMxIDE0LjQ1IDEuNDUgMTQgMiAxNEgzQzMgMTEuNTMgNC4yOSA5LjM2IDYuMjIgOC4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTE4LjExIDIwTDE1LjYgMTcuNUMxNS41NyAxNy41IDE1LjUzIDE3LjUgMTUuNSAxNy41QzE0LjQgMTcuNSAxMy41IDE2LjYxIDEzLjUgMTUuNUMxMy41IDE1LjQ3IDEzLjUgMTUuNDMgMTMuNSAxNS40TDcuNyA5LjU5QzYuMSAxMC40MiA1IDEyLjA4IDUgMTRWMTZIM1YxN0g1VjIwSDE4LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90T3V0bGluZSA9IFwiTTE3LjUgMTUuNUMxNy41IDE2LjYxIDE2LjYxIDE3LjUgMTUuNSAxNy41UzEzLjUgMTYuNjEgMTMuNSAxNS41IDE0LjQgMTMuNSAxNS41IDEzLjUgMTcuNSAxNC40IDE3LjUgMTUuNU04LjUgMTMuNUM3LjQgMTMuNSA2LjUgMTQuNCA2LjUgMTUuNVM3LjQgMTcuNSA4LjUgMTcuNSAxMC41IDE2LjYxIDEwLjUgMTUuNSA5LjYxIDEzLjUgOC41IDEzLjVNMjMgMTVWMThDMjMgMTguNTUgMjIuNTUgMTkgMjIgMTlIMjFWMjBDMjEgMjEuMTEgMjAuMTEgMjIgMTkgMjJINUMzLjkgMjIgMyAyMS4xMSAzIDIwVjE5SDJDMS40NSAxOSAxIDE4LjU1IDEgMThWMTVDMSAxNC40NSAxLjQ1IDE0IDIgMTRIM0MzIDEwLjEzIDYuMTMgNyAxMCA3SDExVjUuNzNDMTAuNCA1LjM5IDEwIDQuNzQgMTAgNEMxMCAyLjkgMTAuOSAyIDEyIDJTMTQgMi45IDE0IDRDMTQgNC43NCAxMy42IDUuMzkgMTMgNS43M1Y3SDE0QzE3Ljg3IDcgMjEgMTAuMTMgMjEgMTRIMjJDMjIuNTUgMTQgMjMgMTQuNDUgMjMgMTVNMjEgMTZIMTlWMTRDMTkgMTEuMjQgMTYuNzYgOSAxNCA5SDEwQzcuMjQgOSA1IDExLjI0IDUgMTRWMTZIM1YxN0g1VjIwSDE5VjE3SDIxVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90VmFjdXVtID0gXCJNMTIsMkMxNC42NSwyIDE3LjE5LDMuMDYgMTkuMDcsNC45M0wxNy42NSw2LjM1QzE2LjE1LDQuODUgMTQuMTIsNCAxMiw0QzkuODgsNCA3Ljg0LDQuODQgNi4zNSw2LjM1TDQuOTMsNC45M0M2LjgxLDMuMDYgOS4zNSwyIDEyLDJNMy42Niw2LjVMNS4xMSw3Ljk0QzQuMzksOS4xNyA0LDEwLjU3IDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCwxMC41NyAxOS42MSw5LjE3IDE4Ljg4LDcuOTRMMjAuMzQsNi41QzIxLjQyLDguMTIgMjIsMTAuMDQgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkMyLDEwLjA0IDIuNTgsOC4xMiAzLjY2LDYuNU0xMiw2QTYsNiAwIDAsMSAxOCwxMkMxOCwxMy41OSAxNy4zNywxNS4xMiAxNi4yNCwxNi4yNEwxNC44MywxNC44M0MxNC4wOCwxNS41OCAxMy4wNiwxNiAxMiwxNkMxMC45NCwxNiA5LjkyLDE1LjU4IDkuMTcsMTQuODNMNy43NiwxNi4yNEM2LjYzLDE1LjEyIDYsMTMuNTkgNiwxMkE2LDYgMCAwLDEgMTIsNk0xMiw4QTEsMSAwIDAsMCAxMSw5QTEsMSAwIDAsMCAxMiwxMEExLDEgMCAwLDAgMTMsOUExLDEgMCAwLDAgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdFZhY3V1bVZhcmlhbnQgPSBcIk01LDNBMiwyIDAgMCwwIDMsNVY3SDVWNUgxOVY3SDIxVjVBMiwyIDAgMCwwIDE5LDNINU04LDdWOUgxNlY3SDhNMyw5VjEyQTksOSAwIDAsMCAxMiwyMUE5LDkgMCAwLDAgMjEsMTJWOUgxOVYxMkE3LDcgMCAwLDEgMTIsMTlBNyw3IDAgMCwxIDUsMTJWOUgzTTEyLDEyQTIuNSwyLjUgMCAwLDAgOS41LDE0LjVBMi41LDIuNSAwIDAsMCAxMiwxN0EyLjUsMi41IDAgMCwwIDE0LjUsMTQuNUEyLjUsMi41IDAgMCwwIDEyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvY2tldCA9IFwiTTIwIDIyTDE2LjE0IDIwLjQ1QzE2Ljg0IDE4LjkyIDE3LjM0IDE3LjM0IDE3LjY1IDE1LjczTDIwIDIyTTcuODYgMjAuNDVMNCAyMkw2LjM1IDE1LjczQzYuNjYgMTcuMzQgNy4xNiAxOC45MiA3Ljg2IDIwLjQ1TTEyIDJDMTIgMiAxNyA0IDE3IDEyQzE3IDE1LjEgMTYuMjUgMTcuNzUgMTUuMzMgMTkuODNDMTUgMjAuNTUgMTQuMjkgMjEgMTMuNSAyMUgxMC41QzkuNzEgMjEgOSAyMC41NSA4LjY3IDE5LjgzQzcuNzYgMTcuNzUgNyAxNS4xIDcgMTJDNyA0IDEyIDIgMTIgMk0xMiAxMkMxMy4xIDEyIDE0IDExLjEgMTQgMTBDMTQgOC45IDEzLjEgOCAxMiA4QzEwLjkgOCAxMCA4LjkgMTAgMTBDMTAgMTEuMSAxMC45IDEyIDEyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvY2tldExhdW5jaCA9IFwiTTEzLjEzIDIyLjE5TDExLjUgMTguMzZDMTMuMDcgMTcuNzggMTQuNTQgMTcgMTUuOSAxNi4wOUwxMy4xMyAyMi4xOU01LjY0IDEyLjVMMS44MSAxMC44N0w3LjkxIDguMUM3IDkuNDYgNi4yMiAxMC45MyA1LjY0IDEyLjVNMjEuNjEgMi4zOUMyMS42MSAyLjM5IDE2LjY2IC4yNjkgMTEgNS45M0M4LjgxIDguMTIgNy41IDEwLjUzIDYuNjUgMTIuNjRDNi4zNyAxMy4zOSA2LjU2IDE0LjIxIDcuMTEgMTQuNzdMOS4yNCAxNi44OUM5Ljc5IDE3LjQ1IDEwLjYxIDE3LjYzIDExLjM2IDE3LjM1QzEzLjUgMTYuNTMgMTUuODggMTUuMTkgMTguMDcgMTNDMjMuNzMgNy4zNCAyMS42MSAyLjM5IDIxLjYxIDIuMzlNMTQuNTQgOS40NkMxMy43NiA4LjY4IDEzLjc2IDcuNDEgMTQuNTQgNi42M1MxNi41OSA1Ljg1IDE3LjM3IDYuNjNDMTguMTQgNy40MSAxOC4xNSA4LjY4IDE3LjM3IDkuNDZDMTYuNTkgMTAuMjQgMTUuMzIgMTAuMjQgMTQuNTQgOS40Nk04Ljg4IDE2LjUzTDcuNDcgMTUuMTJMOC44OCAxNi41M002LjI0IDIyTDkuODggMTguMzZDOS41NCAxOC4yNyA5LjIxIDE4LjEyIDguOTEgMTcuOTFMNC44MyAyMkg2LjI0TTIgMjJIMy40MUw4LjE4IDE3LjI0TDYuNzYgMTUuODNMMiAyMC41OVYyMk0yIDE5LjE3TDYuMDkgMTUuMDlDNS44OCAxNC43OSA1LjczIDE0LjQ3IDUuNjQgMTQuMTJMMiAxNy43NlYxOS4xN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSb2NrZXRMYXVuY2hPdXRsaW5lID0gXCJNMTMuMTMgMjIuMTlMMTEuNSAxOC4zNkMxMy4wNyAxNy43OCAxNC41NCAxNyAxNS45IDE2LjA5TDEzLjEzIDIyLjE5TTUuNjQgMTIuNUwxLjgxIDEwLjg3TDcuOTEgOC4xQzcgOS40NiA2LjIyIDEwLjkzIDUuNjQgMTIuNU0xOS4yMiA0QzE5LjUgNCAxOS43NSA0IDE5Ljk2IDQuMDVDMjAuMTMgNS40NCAxOS45NCA4LjMgMTYuNjYgMTEuNThDMTQuOTYgMTMuMjkgMTIuOTMgMTQuNiAxMC42NSAxNS40N0w4LjUgMTMuMzdDOS40MiAxMS4wNiAxMC43MyA5LjAzIDEyLjQyIDcuMzRDMTUuMTggNC41OCAxNy42NCA0IDE5LjIyIDRNMTkuMjIgMkMxNy4yNCAyIDE0LjI0IDIuNjkgMTEgNS45M0M4LjgxIDguMTIgNy41IDEwLjUzIDYuNjUgMTIuNjRDNi4zNyAxMy4zOSA2LjU2IDE0LjIxIDcuMTEgMTQuNzdMOS4yNCAxNi44OUM5LjYyIDE3LjI3IDEwLjEzIDE3LjUgMTAuNjYgMTcuNUMxMC44OSAxNy41IDExLjEzIDE3LjQ0IDExLjM2IDE3LjM1QzEzLjUgMTYuNTMgMTUuODggMTUuMTkgMTguMDcgMTNDMjMuNzMgNy4zNCAyMS42MSAyLjM5IDIxLjYxIDIuMzlTMjAuNyAyIDE5LjIyIDJNMTQuNTQgOS40NkMxMy43NiA4LjY4IDEzLjc2IDcuNDEgMTQuNTQgNi42M1MxNi41OSA1Ljg1IDE3LjM3IDYuNjNDMTguMTQgNy40MSAxOC4xNSA4LjY4IDE3LjM3IDkuNDZDMTYuNTkgMTAuMjQgMTUuMzIgMTAuMjQgMTQuNTQgOS40Nk04Ljg4IDE2LjUzTDcuNDcgMTUuMTJMOC44OCAxNi41M002LjI0IDIyTDkuODggMTguMzZDOS41NCAxOC4yNyA5LjIxIDE4LjEyIDguOTEgMTcuOTFMNC44MyAyMkg2LjI0TTIgMjJIMy40MUw4LjE4IDE3LjI0TDYuNzYgMTUuODNMMiAyMC41OVYyMk0yIDE5LjE3TDYuMDkgMTUuMDlDNS44OCAxNC43OSA1LjczIDE0LjQ3IDUuNjQgMTQuMTJMMiAxNy43NlYxOS4xN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSb2NrZXRPdXRsaW5lID0gXCJNMTIgMkMxMiAyIDcgNCA3IDEyQzcgMTUuMSA3Ljc2IDE3Ljc1IDguNjcgMTkuODNDOSAyMC41NSA5LjcxIDIxIDEwLjUgMjFIMTMuNUMxNC4yOSAyMSAxNSAyMC41NSAxNS4zMyAxOS44M0MxNi4yNSAxNy43NSAxNyAxNS4xIDE3IDEyQzE3IDQgMTIgMiAxMiAyTTEzLjUgMTlIMTAuNUM5LjUgMTYuNzYgOSAxNC40MSA5IDEyQzkgNy4zNiAxMC45IDUuMiAxMiA0LjMzQzEzLjEgNS4yIDE1IDcuMzYgMTUgMTJDMTUgMTQuNDEgMTQuNSAxNi43NiAxMy41IDE5TTIwIDIyTDE2LjE0IDIwLjQ1QzE2Ljg0IDE4LjkyIDE3LjM0IDE3LjM0IDE3LjY1IDE1LjczTTcuODYgMjAuNDVMNCAyMkw2LjM1IDE1LjczQzYuNjYgMTcuMzQgNy4xNiAxOC45MiA3Ljg2IDIwLjQ1TTEyIDEyQzEwLjkgMTIgMTAgMTEuMSAxMCAxMEMxMCA4LjkgMTAuOSA4IDEyIDhDMTMuMSA4IDE0IDguOSAxNCAxMEMxNCAxMS4xIDEzLjEgMTIgMTIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9kZW50ID0gXCJNMjEuMzMgMTcuMzlDMjIuNzMgMTguNjYgMjEuOCAyMSAxOS45MiAyMUgxMS4wNkM4LjI1IDIxIDYgMTguNzUgNiAxNS45NFYxNS44OUMzLjcgMTUuNDIgMiAxMy40MSAyIDExQzIgOC4yNSA0LjIyIDYgNyA2SDkuNUM5LjggNiAxMCA1Ljc3IDEwIDUuNVM5LjggNSA5LjUgNUg3VjNIOS41QzEwLjg4IDMgMTIgNC4xMyAxMiA1LjVDMTIgNi44OSAxMC44OCA4IDkuNSA4SDdDNS4zNCA4IDQgOS4zMyA0IDExQzQgMTIuMzcgNC45MiAxMy41IDYuMTQgMTMuODdDNi43IDExLjY3IDguNjcgMTAgMTEuMDYgMTBDMTEuODYgMTAgMTIuNjYgMTAuMjIgMTMuMzYgMTAuNTVDMTEuOTUgMTEuMzQgMTEgMTIuOCAxMSAxNC41QzExIDE1Ljc1IDExLjUgMTYuODcgMTIuMzMgMTcuNjdMMTMuMDMgMTYuOTdDMTIuMzggMTYuMzYgMTIgMTUuNDcgMTIgMTQuNUMxMiAxMS45MSAxNC4zNCAxMSAxNS41IDExQzE3LjU4IDExIDE5LjQ1IDEyLjg5IDE4Ljk0IDE1LjIzTDIxLjMzIDE3LjM5TTE4IDE5QzE4LjU2IDE5IDE5IDE4LjU2IDE5IDE4UzE4LjU2IDE3IDE4IDE3IDE3IDE3LjQ0IDE3IDE4IDE3LjQ0IDE5IDE4IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbGxlclNrYXRlID0gXCJNMTksMTVDMTksMTUgMTksMTYgMTcsMTZDMTUsMTYgNCwxNiA0LDE2VjNIMTFMMTEuMjEsNC41SDkuMjRWNkgxMS40M0wxMS42NCw3LjVIOS4yNFY5SDExLjg2TDEyLDEwSDE0QzE0LDEwIDE5LDEwIDE5LDE1TTYuNSwxN0EyLjUsMi41IDAgMCwwIDQsMTkuNUEyLjUsMi41IDAgMCwwIDYuNSwyMkEyLjUsMi41IDAgMCwwIDksMTkuNUEyLjUsMi41IDAgMCwwIDYuNSwxN00xNi41LDE3QTIuNSwyLjUgMCAwLDAgMTQsMTkuNUEyLjUsMi41IDAgMCwwIDE2LjUsMjJBMi41LDIuNSAwIDAsMCAxOSwxOS41QTIuNSwyLjUgMCAwLDAgMTYuNSwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSb2xsZXJTa2F0ZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE4LjczIDIwLjYyQzE4LjMyIDIxLjQzIDE3LjUgMjIgMTYuNSAyMkMxNS4xMiAyMiAxNCAyMC44OCAxNCAxOS41QzE0IDE4LjUgMTQuNTcgMTcuNjggMTUuMzggMTcuMjdMMTQuMTEgMTZINFY1Ljg5TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNNMTkgMTVDMTkgMTAgMTQgMTAgMTQgMTBIMTMuMkwxOC43MiAxNS41QzE5IDE1LjI3IDE5IDE1IDE5IDE1TTExLjY0IDcuNUwxMS40MyA2SDkuMjRWNC41SDExLjIxTDExIDNINi4yTDEwLjcgNy41SDExLjY0TTYuNSAxN0M1LjEyIDE3IDQgMTguMTIgNCAxOS41UzUuMTIgMjIgNi41IDIyIDkgMjAuODggOSAxOS41IDcuODggMTcgNi41IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbGxlcmJsYWRlID0gXCJNMTksMTVDMTksMTUgMTksMTYgMTcsMTZDMTUsMTYgNCwxNiA0LDE2VjNIMTFMMTEuMjEsNC41SDkuMjRWNkgxMS40M0wxMS42NCw3LjVIOS4yNFY5SDExLjg2TDEyLDEwSDE0QzE0LDEwIDE5LDEwIDE5LDE1TTUuNSwxN0EyLjUsMi41IDAgMCwwIDMsMTkuNUEyLjUsMi41IDAgMCwwIDUuNSwyMkEyLjUsMi41IDAgMCwwIDgsMTkuNUEyLjUsMi41IDAgMCwwIDUuNSwxN00xNy41LDE3QTIuNSwyLjUgMCAwLDAgMTUsMTkuNUEyLjUsMi41IDAgMCwwIDE3LjUsMjJBMi41LDIuNSAwIDAsMCAyMCwxOS41QTIuNSwyLjUgMCAwLDAgMTcuNSwxN00xMS41LDE3QTIuNSwyLjUgMCAwLDAgOSwxOS41QTIuNSwyLjUgMCAwLDAgMTEuNSwyMkEyLjUsMi41IDAgMCwwIDE0LDE5LjVBMi41LDIuNSAwIDAsMCAxMS41LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbGxlcmJsYWRlT2ZmID0gXCJNMjAuODQgMjIuNzNMMTkuMzIgMjEuMjFDMTguODYgMjEuNjkgMTguMjIgMjIgMTcuNSAyMkMxNi4xMiAyMiAxNSAyMC44OCAxNSAxOS41QzE1IDE4Ljc4IDE1LjMxIDE4LjE0IDE1Ljc5IDE3LjY4TDE0LjExIDE2SDRWNS44OUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTExLjY0IDcuNUwxMS40MyA2SDkuMjRWNC41SDExLjIxTDExIDNINi4yTDEwLjcgNy41SDExLjY0TTE5IDE1QzE5IDEwIDE0IDEwIDE0IDEwSDEzLjJMMTguNzIgMTUuNUMxOSAxNS4yNyAxOSAxNSAxOSAxNU0xMS41IDE3QzEwLjEyIDE3IDkgMTguMTIgOSAxOS41UzEwLjEyIDIyIDExLjUgMjIgMTQgMjAuODggMTQgMTkuNSAxMi44OCAxNyAxMS41IDE3TTUuNSAxN0M0LjEyIDE3IDMgMTguMTIgMyAxOS41UzQuMTIgMjIgNS41IDIyIDggMjAuODggOCAxOS41IDYuODggMTcgNS41IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbGx1cGpzID0gXCJNMTkuNDYsOC42NEMxOS40NiwxMS4xMSAxOC4xMSwxMy4yNiAxNi4xMiwxNC40QzE2LDE0LjUgMTUuOTMsMTQuNjYgMTYsMTQuODFMMTkuNDEsMjEuNTVDMTkuNSwyMS43NiAxOS4zNiwyMiAxOS4xMywyMkg2LjFMNi4xNywyMS45NkM2LjY2LDIxLjY4IDEwLjA2LDE0Ljk3IDEzLjM4LDExLjc5QzE2LjcsOC42MSAxNy4xMiw5LjY3IDE1LjI5LDYuMjFDMTUuMjksNi4yMSAxNi43LDguOTYgMTUuNSw5LjE3QzE0LjU2LDkuMzQgMTIuNCw3LjI1IDEzLjIsNS4zN0MxNCwzLjUzIDE3LjE1LDMuODggMTguNiw1LjM4QzE5LjE1LDYuMzQgMTkuNDYsNy40NSAxOS40Niw4LjY0TTcuMTYsMTMuMTNDNS44NCwxNS41NiA1LDE3LjMzIDQuNTQsMTguNTdWMi4zMUM0LjU0LDIuMTQgNC42OCwyIDQuODUsMkgxMi45MkMxNS4yNiwyLjA0IDE3LjMxLDMuMjggMTguNDYsNS4xNUMxNy42Miw0LjEgMTYuMywzLjUgMTUsMy41QzEyLjUzLDMuNSAxMS45MSw0LjQgNy4xNiwxMy4xM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSb21hbk51bWVyYWwxID0gXCJNMTQgN1Y5SDEzVjE1SDE0VjE3SDEwVjE1SDExVjlIMTBWN0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb21hbk51bWVyYWwxMCA9IFwiTTkgN0wxMSAxMkw5IDE3SDExTDEyIDE0LjVMMTMgMTdIMTVMMTMgMTJMMTUgN0gxM0wxMiA5LjVMMTEgN0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbWFuTnVtZXJhbDIgPSBcIk0xMSA3VjlIMTBWMTVIMTFWMTdIN1YxNUg4VjlIN1Y3SDExTTE3IDdWOUgxNlYxNUgxN1YxN0gxM1YxNUgxNFY5SDEzVjdIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsMyA9IFwiTTkgN1Y5SDhWMTVIOVYxN0g1VjE1SDZWOUg1VjdIOU0xNCA3VjlIMTNWMTVIMTRWMTdIMTBWMTVIMTFWOUgxMFY3SDE0TTE5IDdWOUgxOFYxNUgxOVYxN0gxNVYxNUgxNlY5SDE1VjdIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsNCA9IFwiTTEyIDdMMTQgMTdIMTZMMTggN0gxNkwxNSAxMkwxNCA3SDEyTTExIDdWOUgxMFYxNUgxMVYxN0g3VjE1SDhWOUg3VjdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsNSA9IFwiTTkgN0wxMSAxN0gxM0wxNSA3SDEzTDEyIDEyTDExIDdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb21hbk51bWVyYWw2ID0gXCJNNiA3TDggMTdIMTBMMTIgN0gxMEw5IDEyTDggN0g2TTE3IDdWOUgxNlYxNUgxN1YxN0gxM1YxNUgxNFY5SDEzVjdIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsNyA9IFwiTTQgN0w2IDE3SDhMMTAgN0g4TDcgMTJMNiA3SDRNMTUgN1Y5SDE0VjE1SDE1VjE3SDExVjE1SDEyVjlIMTFWN0gxNU0yMCA3VjlIMTlWMTVIMjBWMTdIMTZWMTVIMTdWOUgxNlY3SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbWFuTnVtZXJhbDggPSBcIk0xIDdMMyAxN0g1TDcgN0g1TDQgMTJMMyA3SDFNMTIgN1Y5SDExVjE1SDEyVjE3SDhWMTVIOVY5SDhWN0gxMk0xNyA3VjlIMTZWMTVIMTdWMTdIMTNWMTVIMTRWOUgxM1Y3SDE3TTIyIDdWOUgyMVYxNUgyMlYxN0gxOFYxNUgxOVY5SDE4VjdIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsOSA9IFwiTTExIDdWOUgxMFYxNUgxMVYxN0g3VjE1SDhWOUg3VjdIMTFNMTIgN0wxNCAxMkwxMiAxN0gxNEwxNSAxNC41TDE2IDE3SDE4TDE2IDEyTDE4IDdIMTZMMTUgOS41TDE0IDdIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9vbVNlcnZpY2UgPSBcIk0xMiw1QTIsMiAwIDAsMSAxNCw3QzE0LDcuMjQgMTMuOTYsNy40NyAxMy44OCw3LjY5QzE3Ljk1LDguNSAyMSwxMS45MSAyMSwxNkgzQzMsMTEuOTEgNi4wNSw4LjUgMTAuMTIsNy42OUMxMC4wNCw3LjQ3IDEwLDcuMjQgMTAsN0EyLDIgMCAwLDEgMTIsNU0yMiwxOUgyVjE3SDIyVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvb21TZXJ2aWNlT3V0bGluZSA9IFwiTTEyLDVBMiwyIDAgMCwxIDE0LDdDMTQsNy4yNCAxMy45Niw3LjQ3IDEzLjg4LDcuNjlDMTcuOTUsOC41IDIxLDExLjkxIDIxLDE2SDNDMywxMS45MSA2LjA1LDguNSAxMC4xMiw3LjY5QzEwLjA0LDcuNDcgMTAsNy4yNCAxMCw3QTIsMiAwIDAsMSAxMiw1TTIyLDE5SDJWMTdIMjJWMTlNMTIsOS41QzguODksOS41IDYuMjUsMTEuMzkgNS4zNCwxNEgxOC42NkMxNy43NSwxMS4zOSAxNS4xMSw5LjUgMTIsOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdGF0ZTNkID0gXCJNNy40NywyMS41QzQuMiwxOS45NCAxLjg2LDE2Ljc2IDEuNSwxM0gwQzAuNSwxOS4xNiA1LjY2LDI0IDExLjk1LDI0TDEyLjYxLDIzLjk3TDguOCwyMC4xNkw3LjQ3LDIxLjVNOC4zNiwxNC45NkM4LjE3LDE0Ljk2IDgsMTQuOTMgNy44NCwxNC44OEM3LjY4LDE0LjgyIDcuNTUsMTQuNzUgNy40NCwxNC42NEM3LjMzLDE0LjU0IDcuMjQsMTQuNDIgNy4xOCwxNC4yN0M3LjEyLDE0LjEzIDcuMDksMTMuOTcgNy4wOSwxMy44SDUuNzlDNS43OSwxNC4xNiA1Ljg2LDE0LjUgNiwxNC43NUM2LjE0LDE1IDYuMzMsMTUuMjUgNi41NiwxNS40NEM2LjgsMTUuNjIgNy4wNywxNS43NiA3LjM4LDE1Ljg1QzcuNjgsMTUuOTUgOCwxNiA4LjM0LDE2QzguNzEsMTYgOS4wNiwxNS45NSA5LjM3LDE1Ljg1QzkuNjksMTUuNzUgOS45NywxNS42IDEwLjIsMTUuNDFDMTAuNDMsMTUuMjIgMTAuNjIsMTUgMTAuNzUsMTQuNjlDMTAuODgsMTQuNCAxMC45NSwxNC4wOCAxMC45NSwxMy43MkMxMC45NSwxMy41MyAxMC45MywxMy4zNCAxMC44OCwxMy4xNkMxMC44MywxMyAxMC43NiwxMi44MSAxMC42NSwxMi42NUMxMC41NSwxMi41IDEwLjQxLDEyLjM1IDEwLjI1LDEyLjIyQzEwLjA4LDEyLjA5IDkuODgsMTIgOS42NCwxMS45MUM5Ljg0LDExLjgyIDEwLDExLjcxIDEwLjE2LDExLjU4QzEwLjMxLDExLjQ1IDEwLjQzLDExLjMxIDEwLjUzLDExLjE2QzEwLjYzLDExIDEwLjcsMTAuODYgMTAuNzUsMTAuN0MxMC44LDEwLjU0IDEwLjgyLDEwLjM4IDEwLjgyLDEwLjIyQzEwLjgyLDkuODYgMTAuNzYsOS41NCAxMC42NCw5LjI2QzEwLjUsOSAxMC4zNSw4Ljc1IDEwLjEzLDguNTdDOS45Myw4LjM4IDkuNjYsOC4yNCA5LjM2LDguMTRDOS4wNSw4LjA1IDguNzEsOCA4LjM0LDhDOCw4IDcuNjUsOC4wNSA3LjM0LDguMTZDNy4wNCw4LjI3IDYuNzcsOC40MiA2LjU1LDguNjFDNi4zNCw4LjggNi4xNyw5IDYuMDQsOS4yOEM1LjkyLDkuNTQgNS44Niw5LjgyIDUuODYsMTAuMTNINy4xNkM3LjE2LDkuOTYgNy4xOSw5LjgxIDcuMjUsOS42OEM3LjMxLDkuNTUgNy4zOSw5LjQzIDcuNSw5LjM0QzcuNjEsOS4yNSA3LjczLDkuMTcgNy44OCw5LjEyQzguMDMsOS4wNyA4LjE4LDkuMDQgOC4zNiw5LjA0QzguNzYsOS4wNCA5LjA2LDkuMTQgOS4yNSw5LjM1QzkuNDQsOS41NSA5LjU0LDkuODQgOS41NCwxMC4yMUM5LjU0LDEwLjM5IDkuNSwxMC41NSA5LjQ2LDEwLjdDOS40MSwxMC44NSA5LjMyLDEwLjk3IDkuMjEsMTEuMDdDOS4xLDExLjE3IDguOTYsMTEuMjUgOC44LDExLjMxQzguNjQsMTEuMzcgOC40NCwxMS40IDguMjIsMTEuNEg3LjQ1VjEyLjQzSDguMjJDOC40NCwxMi40MyA4LjY0LDEyLjQ1IDguODIsMTIuNUM5LDEyLjU1IDkuMTUsMTIuNjMgOS4yNywxMi43M0M5LjM5LDEyLjg0IDkuNSwxMi45NyA5LjU2LDEzLjEzQzkuNjMsMTMuMjkgOS42NiwxMy41IDkuNjYsMTMuN0M5LjY2LDE0LjExIDkuNTQsMTQuNDIgOS4zMSwxNC42M0M5LjA4LDE0Ljg2IDguNzYsMTQuOTYgOC4zNiwxNC45Nk0xNi45MSw5LjA0QzE2LjU5LDguNzEgMTYuMjEsOC40NSAxNS43Nyw4LjI3QzE1LjM0LDguMDkgMTQuODUsOCAxNC4zMSw4SDExLjk1VjE2SDE0LjI1QzE0LjgsMTYgMTUuMzEsMTUuOTEgMTUuNzYsMTUuNzNDMTYuMjEsMTUuNTUgMTYuNiwxNS4zIDE2LjkyLDE0Ljk3QzE3LjI0LDE0LjY0IDE3LjUsMTQuMjQgMTcuNjYsMTMuNzhDMTcuODMsMTMuMzEgMTcuOTIsMTIuNzkgMTcuOTIsMTIuMjFWMTEuODFDMTcuOTIsMTEuMjMgMTcuODMsMTAuNzEgMTcuNjYsMTAuMjRDMTcuNSw5Ljc3IDE3LjIzLDkuMzcgMTYuOTEsOS4wNE0xNi41LDEyLjJDMTYuNSwxMi42MiAxNi40NywxMyAxNi4zOCwxMy4zM0MxNi4yOCwxMy42NiAxNi4xNCwxMy45NSAxNS45NSwxNC4xOEMxNS43NiwxNC40MSAxNS41LDE0LjU5IDE1LjI0LDE0LjcxQzE0Ljk1LDE0LjgzIDE0LjYyLDE0Ljg5IDE0LjI1LDE0Ljg5SDEzLjM0VjkuMTJIMTQuMzFDMTUuMDMsOS4xMiAxNS41OCw5LjM1IDE1Ljk1LDkuODFDMTYuMzMsMTAuMjcgMTYuNSwxMC45MyAxNi41LDExLjhNMTEuOTUsMEwxMS4yOSwwLjAzTDE1LjEsMy44NEwxNi40MywyLjVDMTkuNyw0LjA2IDIyLjA0LDcuMjMgMjIuMzksMTFIMjMuODlDMjMuMzksNC44NCAxOC4yNCwwIDExLjk1LDBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm90YXRlM2RWYXJpYW50ID0gXCJNMTIsNUMxNi45Nyw1IDIxLDcuNjkgMjEsMTFDMjEsMTIuNjggMTkuOTYsMTQuMiAxOC4yOSwxNS4yOUMxOS4zNiwxNC40MiAyMCwxMy4zMiAyMCwxMi4xM0MyMCw5LjI5IDE2LjQyLDcgMTIsN1YxMEw4LDZMMTIsMlY1TTEyLDE5QzcuMDMsMTkgMywxNi4zMSAzLDEzQzMsMTEuMzIgNC4wNCw5LjggNS43MSw4LjcxQzQuNjQsOS41OCA0LDEwLjY4IDQsMTEuODhDNCwxNC43MSA3LjU4LDE3IDEyLDE3VjE0TDE2LDE4TDEyLDIyVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdGF0ZUxlZnQgPSBcIk0xMyw0LjA3VjFMOC40NSw1LjU1TDEzLDEwVjYuMDlDMTUuODQsNi41NyAxOCw5LjAzIDE4LDEyQzE4LDE0Ljk3IDE1Ljg0LDE3LjQzIDEzLDE3LjkxVjE5LjkzQzE2Ljk1LDE5LjQ0IDIwLDE2LjA4IDIwLDEyQzIwLDcuOTIgMTYuOTUsNC41NiAxMyw0LjA3TTcuMSwxOC4zMkM4LjI2LDE5LjIyIDkuNjEsMTkuNzYgMTEsMTkuOTNWMTcuOUMxMC4xMywxNy43NSA5LjI5LDE3LjQxIDguNTQsMTYuODdMNy4xLDE4LjMyTTYuMDksMTNINC4wN0M0LjI0LDE0LjM5IDQuNzksMTUuNzMgNS42OSwxNi44OUw3LjEsMTUuNDdDNi41OCwxNC43MiA2LjIzLDEzLjg4IDYuMDksMTNNNy4xMSw4LjUzTDUuNyw3LjExQzQuOCw4LjI3IDQuMjQsOS42MSA0LjA3LDExSDYuMDlDNi4yMywxMC4xMyA2LjU4LDkuMjggNy4xMSw4LjUzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdGF0ZUxlZnRWYXJpYW50ID0gXCJNNCwySDdBMiwyIDAgMCwxIDksNFYyMEEyLDIgMCAwLDEgNywyMkg0QTIsMiAwIDAsMSAyLDIwVjRBMiwyIDAgMCwxIDQsMk0yMCwxNUEyLDIgMCAwLDEgMjIsMTdWMjBBMiwyIDAgMCwxIDIwLDIySDExVjE1SDIwTTE0LDRBOCw4IDAgMCwxIDIyLDEyTDIxLjk0LDEzSDE5LjkyTDIwLDEyQTYsNiAwIDAsMCAxNCw2VjlMMTAsNUwxNCwxVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm90YXRlT3JiaXQgPSBcIk04LDE0LjI1TDQuNzUsMTFIN0M3LjI1LDUuMzkgOS4zOSwxIDEyLDFDMTQsMSAxNS43NywzLjY0IDE2LjU1LDcuNDVDMjAuMzYsOC4yMyAyMywxMCAyMywxMkMyMywxMy44MyAyMC44MywxNS40MyAxNy42LDE2LjNMMTcuODksMTQuMjdDMTkuOCwxMy43MiAyMSwxMi45MSAyMSwxMkMyMSwxMC45NCAxOS4zNSwxMCAxNi44Nyw5LjVDMTYuOTUsMTAuMjkgMTcsMTEuMTMgMTcsMTJDMTcsMTguMDggMTQuNzYsMjMgMTIsMjNDMTAuMTcsMjMgOC41NywyMC44MyA3LjcsMTcuNkw5LjczLDE3Ljg5QzEwLjI4LDE5LjggMTEuMDksMjEgMTIsMjFDMTMuNjYsMjEgMTUsMTYuOTcgMTUsMTJDMTUsMTEgMTQuOTUsMTAuMDUgMTQuODUsOS4xNUMxMy45NSw5LjA1IDEzLDkgMTIsOUwxMC4xNCw5LjA2TDEwLjQzLDcuMDVMMTIsN0MxMi44Nyw3IDEzLjcxLDcuMDUgMTQuNSw3LjEzQzE0LDQuNjUgMTMuMDYsMyAxMiwzQzEwLjQ2LDMgOS4xOCw2LjUgOSwxMUgxMS4yNUw4LDE0LjI1TTE0LjI1LDE2TDExLDE5LjI1VjE3QzUuMzksMTYuNzUgMSwxNC42MSAxLDEyQzEsMTAuMTcgMy4xNyw4LjU3IDYuNCw3LjdMNi4xMSw5LjczQzQuMiwxMC4yOCAzLDExLjA5IDMsMTJDMywxMy41NCA2LjUsMTQuODIgMTEsMTVWMTIuNzVMMTQuMjUsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm90YXRlUmlnaHQgPSBcIk0xNi44OSwxNS41TDE4LjMxLDE2Ljg5QzE5LjIxLDE1LjczIDE5Ljc2LDE0LjM5IDE5LjkzLDEzSDE3LjkxQzE3Ljc3LDEzLjg3IDE3LjQzLDE0LjcyIDE2Ljg5LDE1LjVNMTMsMTcuOVYxOS45MkMxNC4zOSwxOS43NSAxNS43NCwxOS4yMSAxNi45LDE4LjMxTDE1LjQ2LDE2Ljg3QzE0LjcxLDE3LjQxIDEzLjg3LDE3Ljc2IDEzLDE3LjlNMTkuOTMsMTFDMTkuNzYsOS42MSAxOS4yMSw4LjI3IDE4LjMxLDcuMTFMMTYuODksOC41M0MxNy40Myw5LjI4IDE3Ljc3LDEwLjEzIDE3LjkxLDExTTE1LjU1LDUuNTVMMTEsMVY0LjA3QzcuMDYsNC41NiA0LDcuOTIgNCwxMkM0LDE2LjA4IDcuMDUsMTkuNDQgMTEsMTkuOTNWMTcuOTFDOC4xNiwxNy40MyA2LDE0Ljk3IDYsMTJDNiw5LjAzIDguMTYsNi41NyAxMSw2LjA5VjEwTDE1LjU1LDUuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm90YXRlUmlnaHRWYXJpYW50ID0gXCJNMTAsNFYxTDE0LDVMMTAsOVY2QTYsNiAwIDAsMCA0LDEyTDQuMDgsMTNIMi4wNkwyLDEyQTgsOCAwIDAsMSAxMCw0TTE3LDJIMjBBMiwyIDAgMCwxIDIyLDRWMjBBMiwyIDAgMCwxIDIwLDIySDE3QTIsMiAwIDAsMSAxNSwyMFY0QTIsMiAwIDAsMSAxNywyTTQsMTVIMTNWMjJINEEyLDIgMCAwLDEgMiwyMFYxN0EyLDIgMCAwLDEgNCwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3VuZGVkQ29ybmVyID0gXCJNMTksMTlIMjFWMjFIMTlWMTlNMTksMTdIMjFWMTVIMTlWMTdNMywxM0g1VjExSDNWMTNNMywxN0g1VjE1SDNWMTdNMyw5SDVWN0gzVjlNMyw1SDVWM0gzVjVNNyw1SDlWM0g3VjVNMTUsMjFIMTdWMTlIMTVWMjFNMTEsMjFIMTNWMTlIMTFWMjFNMTUsMjFIMTdWMTlIMTVWMjFNNywyMUg5VjE5SDdWMjFNMywyMUg1VjE5SDNWMjFNMjEsOEE1LDUgMCAwLDAgMTYsM0gxMVY1SDE2QTMsMyAwIDAsMSAxOSw4VjEzSDIxVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm91dGVyID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMk0xMiAyMEM3LjU4IDIwIDQgMTYuNDIgNCAxMkM0IDcuNTggNy41OCA0IDEyIDRDMTYuNDIgNCAyMCA3LjU4IDIwIDEyQzIwIDE2LjQyIDE2LjQyIDIwIDEyIDIwTTEzIDEzVjE2SDE1TDEyIDE5TDkgMTZIMTFWMTNNNSAxM0g4VjE1TDExIDEyTDggOVYxMUg1TTExIDExVjhIOUwxMiA1TDE1IDhIMTNWMTFNMTkgMTFIMTZWOUwxMyAxMkwxNiAxNVYxM0gxOVwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdXRlck5ldHdvcmsgPSBcIk01IDlDMy45IDkgMyA5LjkgMyAxMVYxNUMzIDE2LjExIDMuOSAxNyA1IDE3SDExVjE5SDEwQzkuNDUgMTkgOSAxOS40NSA5IDIwSDJWMjJIOUM5IDIyLjU1IDkuNDUgMjMgMTAgMjNIMTRDMTQuNTUgMjMgMTUgMjIuNTUgMTUgMjJIMjJWMjBIMTVDMTUgMTkuNDUgMTQuNTUgMTkgMTQgMTlIMTNWMTdIMTlDMjAuMTEgMTcgMjEgMTYuMTEgMjEgMTVWMTFDMjEgOS45IDIwLjExIDkgMTkgOUg1TTYgMTJIOFYxNEg2VjEyTTkuNSAxMkgxMS41VjE0SDkuNVYxMk0xMyAxMkgxNVYxNEgxM1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3V0ZXJXaXJlbGVzcyA9IFwiTTIwLjIsNS45TDIxLDUuMUMxOS42LDMuNyAxNy44LDMgMTYsM0MxNC4yLDMgMTIuNCwzLjcgMTEsNS4xTDExLjgsNS45QzEzLDQuOCAxNC41LDQuMiAxNiw0LjJDMTcuNSw0LjIgMTksNC44IDIwLjIsNS45TTE5LjMsNi43QzE4LjQsNS44IDE3LjIsNS4zIDE2LDUuM0MxNC44LDUuMyAxMy42LDUuOCAxMi43LDYuN0wxMy41LDcuNUMxNC4yLDYuOCAxNS4xLDYuNSAxNiw2LjVDMTYuOSw2LjUgMTcuOCw2LjggMTguNSw3LjVMMTkuMyw2LjdNMTksMTNIMTdWOUgxNVYxM0g1QTIsMiAwIDAsMCAzLDE1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVYxNUEyLDIgMCAwLDAgMTksMTNNOCwxOEg2VjE2SDhWMThNMTEuNSwxOEg5LjVWMTZIMTEuNVYxOE0xNSwxOEgxM1YxNkgxNVYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3V0ZXJXaXJlbGVzc09mZiA9IFwiTTExLjggNS45TDExIDUuMUMxMi40IDMuNyAxNC4yIDMgMTYgM1MxOS42IDMuNyAyMSA1LjFMMjAuMiA1LjlDMTkgNC44IDE3LjUgNC4yIDE2IDQuMlMxMyA0LjggMTEuOCA1LjlNMjEgMTVDMjEgMTMuOSAyMC4xIDEzIDE5IDEzSDE3VjlIMTVWMTEuOEwyMSAxNy44VjE1TTE4LjUgNy41TDE5LjMgNi43QzE4LjQgNS44IDE3LjIgNS4zIDE2IDUuM1MxMy42IDUuOCAxMi43IDYuN0wxMy41IDcuNUMxNC4yIDYuOCAxNS4xIDYuNSAxNiA2LjVDMTYuOSA2LjUgMTcuOCA2LjggMTguNSA3LjVNMjIuMSAyMS41TDIwLjggMjIuOEwxOS4xIDIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjE1QzMgMTMuOSAzLjkgMTMgNSAxM0gxMS4xTDEuMSAzTDIuNCAxLjdMMjIuMSAyMS41TTggMTZINlYxOEg4VjE2TTExLjUgMTZIOS41VjE4SDExLjVWMTZNMTUgMTYuOUwxNC4xIDE2SDEzVjE4SDE1VjE2LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm91dGVyV2lyZWxlc3NTZXR0aW5ncyA9IFwiTTIwLjIsNC45QzE5LDMuOCAxNy41LDMuMiAxNiwzLjJDMTQuNSwzLjIgMTMsMy44IDExLjgsNC45TDExLDQuMUMxMi40LDIuNyAxNC4yLDIgMTYsMkMxNy44LDIgMTkuNiwyLjcgMjEsNC4xTDIwLjIsNC45TTE5LjMsNS43TDE4LjUsNi41QzE3LjgsNS44IDE2LjksNS41IDE2LDUuNUMxNS4xLDUuNSAxNC4yLDUuOCAxMy41LDYuNUwxMi43LDUuN0MxMy42LDQuOCAxNC44LDQuMyAxNiw0LjNDMTcuMiw0LjMgMTguNCw0LjggMTkuMyw1LjdNMTksMTJBMiwyIDAgMCwxIDIxLDE0VjE4QTIsMiAwIDAsMSAxOSwyMEg1QTIsMiAwIDAsMSAzLDE4VjE0QTIsMiAwIDAsMSA1LDEySDE1VjhIMTdWMTJIMTlNOCwxN1YxNUg2VjE3SDhNMTEuNSwxN1YxNUg5LjVWMTdIMTEuNU0xNSwxN1YxNUgxM1YxN0gxNU03LDIySDlWMjRIN1YyMk0xMSwyMkgxM1YyNEgxMVYyMk0xNSwyMkgxN1YyNEgxNVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3V0ZXMgPSBcIk0xMSwxMEg1TDMsOEw1LDZIMTFWM0wxMiwyTDEzLDNWNEgxOUwyMSw2TDE5LDhIMTNWMTBIMTlMMjEsMTJMMTksMTRIMTNWMjBBMiwyIDAgMCwxIDE1LDIySDlBMiwyIDAgMCwxIDExLDIwVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdXRlc0Nsb2NrID0gXCJNMTYuNSAxM0gxNVYxNi42OUwxOC4xOSAxOC41M0wxOC45NCAxNy4yM0wxNi41IDE1LjgyVjEzTTE2IDlDMTQuMDQgOSAxMi4yNyA5LjgyIDExIDExLjEyVjdIMTdMMTkgNUwxNyAzSDExVjJMMTAgMUw5IDJWNkgzTDEgOEwzIDEwSDlWMjBDNy45IDIwIDcgMjAuOSA3IDIySDEyLjQxQzEzLjQ2IDIyLjYzIDE0LjY5IDIzIDE2IDIzQzE5Ljg3IDIzIDIzIDE5Ljg3IDIzIDE2UzE5Ljg3IDkgMTYgOU0xNiAyMC44NUMxMy4zMiAyMC44NSAxMS4xNSAxOC42OCAxMS4xNSAxNlMxMy4zMiAxMS4xNSAxNiAxMS4xNSAyMC44NSAxMy4zMiAyMC44NSAxNiAxOC42OCAyMC44NSAxNiAyMC44NVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3dpbmcgPSBcIk04LjUsMTQuNUw0LDE5TDUuNSwyMC41TDksMTdIMTFMOC41LDE0LjVNMTUsMUEyLDIgMCAwLDAgMTMsM0EyLDIgMCAwLDAgMTUsNUEyLDIgMCAwLDAgMTcsM0EyLDIgMCAwLDAgMTUsMU0yMSwyMUwxOCwyNEwxNSwyMVYxOS41TDcuOTEsMTIuNDFDNy42LDEyLjQ2IDcuMywxMi41IDcsMTIuNVYxMC4zMkM4LjY2LDEwLjM1IDEwLjYxLDkuNDUgMTEuNjcsOC4yOEwxMy4wNyw2LjczQzEzLjI2LDYuNSAxMy41LDYuMzUgMTMuNzYsNi4yM0MxNC4wNSw2LjA5IDE0LjM4LDYgMTQuNzIsNkgxNC43NUMxNiw2IDE3LDcgMTcsOC4yNlYxNEMxNywxNC44NSAxNi42NSwxNS42MiAxNi4wOCwxNi4xN0wxMi41LDEyLjU5VjEwLjMyQzExLjg3LDEwLjg0IDExLjA3LDExLjM0IDEwLjIxLDExLjcxTDE2LjUsMThIMThMMjEsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUnNzID0gXCJNNi4xOCwxNS42NEEyLjE4LDIuMTggMCAwLDEgOC4zNiwxNy44MkM4LjM2LDE5IDcuMzgsMjAgNi4xOCwyMEM1LDIwIDQsMTkgNCwxNy44MkEyLjE4LDIuMTggMCAwLDEgNi4xOCwxNS42NE00LDQuNDRBMTUuNTYsMTUuNTYgMCAwLDEgMTkuNTYsMjBIMTYuNzNBMTIuNzMsMTIuNzMgMCAwLDAgNCw3LjI3VjQuNDRNNCwxMC4xQTkuOSw5LjkgMCAwLDEgMTMuOSwyMEgxMS4wN0E3LjA3LDcuMDcgMCAwLDAgNCwxMi45M1YxMC4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJzc0JveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNy41LDE1QTEuNSwxLjUgMCAwLDAgNiwxNi41QTEuNSwxLjUgMCAwLDAgNy41LDE4QTEuNSwxLjUgMCAwLDAgOSwxNi41QTEuNSwxLjUgMCAwLDAgNy41LDE1TTYsMTBWMTJBNiw2IDAgMCwxIDEyLDE4SDE0QTgsOCAwIDAsMCA2LDEwTTYsNlY4QTEwLDEwIDAgMCwxIDE2LDE4SDE4QTEyLDEyIDAgMCwwIDYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlSc3NPZmYgPSBcIk0yLjUsMy43N0wzLjc4LDIuNUwyMS41LDIwLjIyTDIwLjIzLDIxLjVMMTguNzMsMjBIMTYuNzNDMTYuNzMsMTkuMjUgMTYuNjcsMTguNSAxNi41NCwxNy44MUw2LjE5LDcuNDZDNS41LDcuMzMgNC43NSw3LjI3IDQsNy4yN1Y1LjI3TDIuNSwzLjc3TTYuMTgsMTUuNjRBMi4xOCwyLjE4IDAgMCwxIDguMzYsMTcuODJDOC4zNiwxOSA3LjM4LDIwIDYuMTgsMjBDNSwyMCA0LDE5IDQsMTcuODJBMi4xOCwyLjE4IDAgMCwxIDYuMTgsMTUuNjRNNCwxMC4xQTkuOSw5LjkgMCAwLDEgMTMuOSwyMEgxMS4wN0E3LjA3LDcuMDcgMCAwLDAgNCwxMi45M1YxMC4xTTkuMTMsNS4zMUMxMy41OSw2Ljg3IDE3LjEzLDEwLjQxIDE4LjY5LDE0Ljg3TDkuMTMsNS4zMVpcIjtcclxuZXhwb3J0IHZhciBtZGlSdWcgPSBcIk0xMiAxNEMxMC45IDE0IDEwIDEzLjExIDEwIDEyUzEwLjkgMTAgMTIgMTAgMTQgMTAuOSAxNCAxMiAxMy4xMSAxNCAxMiAxNE0yMyAxOUgxVjE3SDRWMTVIMVYxM0g0VjExSDFWOUg0VjdIMVY1SDIzVjdIMjBWOUgyM1YxMUgyMFYxM0gyM1YxNUgyMFYxN0gyM1YxOU0xMiAxNS45MkMxMi42MiAxNi42MiAxMy42NiAxNi44MSAxNC41IDE2LjMzQzE1LjM0IDE1Ljg1IDE1LjY5IDE0Ljg0IDE1LjQgMTMuOTZDMTYuMzEgMTMuNzggMTcgMTIuOTcgMTcgMTJTMTYuMzEgMTAuMjIgMTUuNCAxMC4wNEMxNS42OSA5LjE2IDE1LjM0IDguMTUgMTQuNSA3LjY3QzEzLjY2IDcuMTkgMTIuNjIgNy4zOCAxMiA4LjA4QzExLjM4IDcuMzggMTAuMzQgNy4xOSA5LjUgNy42N0M4LjY2IDguMTUgOC4zMSA5LjE2IDguNjEgMTAuMDRDNy42OSAxMC4yMiA3IDExLjAzIDcgMTJTNy42OSAxMy43OCA4LjYxIDEzLjk2QzguMzEgMTQuODQgOC42NiAxNS44NSA5LjUgMTYuMzNDMTAuMzQgMTYuODIgMTEuMzggMTYuNjIgMTIgMTUuOTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUnVnYnkgPSBcIk0xNi4yMiwxNi4yMkMxOC4yNSwxNC4xOSAxOS4zMywxMS41IDE5LjQ1LDguMkMxOC4zNiwxMC42MSAxNi44MSwxMi44MSAxNC44MSwxNC44MUMxMi44MSwxNi44MSAxMC42MSwxOC4zNiA4LjIsMTkuNDVDMTEuNSwxOS4zNiAxNC4xNiwxOC4yOCAxNi4yMiwxNi4yMk03Ljc4LDcuNzhDNS43NSw5LjgxIDQuNjcsMTIuNSA0LjU1LDE1LjhDNSwxNC44IDUuNywxMy42NSA2LjYxLDEyLjM1QzcuNSwxMS4wNSA4LjM4LDEwIDkuMTksOS4xOUMxMS4xOSw3LjE5IDEzLjM5LDUuNjQgMTUuOCw0LjU1QzEyLjUsNC42NCA5Ljg0LDUuNzIgNy43OCw3Ljc4TTIwLjUsMy41QzIxLDQuMDUgMjEuMzQsNS4xMSAyMS40Nyw2LjdDMjEuNTksOC4zIDIxLjM1LDEwLjE2IDIwLjc0LDEyLjNDMjAuMTMsMTQuNDUgMTkuMTEsMTYuMjMgMTcuNjcsMTcuNjdDMTYuMzYsMTkgMTQuOCwxOS45NSAxMywyMC41NUMxMS4yMSwyMS4xNiA5LjQ0LDIxLjQ3IDcuNjksMjEuNDdDNS41NiwyMS40NyA0LjE3LDIxLjE0IDMuNSwyMC41QzMsMTkuOTUgMi42NiwxOC44OSAyLjUzLDE3LjNDMi40MSwxNS43IDIuNjUsMTMuODQgMy4yNiwxMS43QzMuODcsOS41NSA0Ljg5LDcuNzcgNi4zMyw2LjMzQzcuNjQsNSA5LjIsNC4wNSAxMSwzLjQ1QzEyLjc5LDIuODQgMTQuNTYsMi41MyAxNi4zMSwyLjUzQzE4LjQ0LDIuNTMgMTkuODMsMi44NiAyMC41LDMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSdWxlciA9IFwiTTEuMzksMTguMzZMMy4xNiwxNi42TDQuNTgsMThMNS42NCwxNi45NUw0LjIyLDE1LjU0TDUuNjQsMTQuMTJMOC4xMSwxNi42TDkuMTcsMTUuNTRMNi43LDEzLjA2TDguMTEsMTEuNjVMOS41MywxMy4wNkwxMC41OSwxMkw5LjE3LDEwLjU5TDEwLjU5LDkuMTdMMTMuMDYsMTEuNjVMMTQuMTIsMTAuNTlMMTEuNjUsOC4xMUwxMy4wNiw2LjdMMTQuNDcsOC4xMUwxNS41NCw3LjA1TDE0LjEyLDUuNjRMMTUuNTQsNC4yMkwxOCw2LjdMMTkuMDcsNS42NEwxNi42LDMuMTZMMTguMzYsMS4zOUwyMi42MSw1LjY0TDUuNjQsMjIuNjFMMS4zOSwxOC4zNlpcIjtcclxuZXhwb3J0IHZhciBtZGlSdWxlclNxdWFyZSA9IFwiTTMsNVYyMUg5VjE5LjVIN1YxOEg5VjE2LjVINVYxNUg5VjEzLjVIN1YxMkg5VjEwLjVINVY5SDlWNUgxMC41VjlIMTJWN0gxMy41VjlIMTVWNUgxNi41VjlIMThWN0gxOS41VjlIMjFWM0g1QTIsMiAwIDAsMCAzLDVNNiw3QTEsMSAwIDAsMSA1LDZBMSwxIDAgMCwxIDYsNUExLDEgMCAwLDEgNyw2QTEsMSAwIDAsMSA2LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUnVsZXJTcXVhcmVDb21wYXNzID0gXCJNMjAgMTkuODhWMjJMMTguMiAyMC44M0wxMy40MSAxMS44M0E0Ljk0IDQuOTQgMCAwIDAgMTUuMTkgMTAuODNNMTUgN0EzIDMgMCAwIDEgMTIgMTBBMy4yNyAzLjI3IDAgMCAxIDExLjU2IDEwTDUuOCAyMC44M0w0IDIyVjE5Ljg4TDkuNzkgOUEzIDMgMCAwIDEgMTIgNFYyQTEgMSAwIDAgMSAxMyAzVjQuMThBMyAzIDAgMCAxIDE1IDdNMTMgN0ExIDEgMCAxIDAgMTIgOEExIDEgMCAwIDAgMTMgN000LjIyIDEwTDYgMTEuOEw0LjU2IDE0LjU2TDIuMSAxMi4xTTEyIDE3Ljc2TDEwLjUgMTYuMjVMOSAxOUwxMiAyMkwxNSAxOUwxMy41MyAxNi4yM00xOS43OCAxMEwxOCAxMS44TDE5LjUgMTQuNTZMMjEuOSAxMi4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJ1biA9IFwiTTEzLjUsNS41QzE0LjU5LDUuNSAxNS41LDQuNTggMTUuNSwzLjVDMTUuNSwyLjM4IDE0LjU5LDEuNSAxMy41LDEuNUMxMi4zOSwxLjUgMTEuNSwyLjM4IDExLjUsMy41QzExLjUsNC41OCAxMi4zOSw1LjUgMTMuNSw1LjVNOS44OSwxOS4zOEwxMC44OSwxNUwxMywxN1YyM0gxNVYxNS41TDEyLjg5LDEzLjVMMTMuNSwxMC41QzE0Ljc5LDEyIDE2Ljc5LDEzIDE5LDEzVjExQzE3LjA5LDExIDE1LjUsMTAgMTQuNjksOC41OEwxMy42OSw3QzEzLjI5LDYuMzggMTIuNjksNiAxMiw2QzExLjY5LDYgMTEuNSw2LjA4IDExLjE5LDYuMDhMNiw4LjI4VjEzSDhWOS41OEw5Ljc5LDguODhMOC4xOSwxN0wzLjI5LDE2TDIuODksMThMOS44OSwxOS4zOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSdW5GYXN0ID0gXCJNMTYuNSw1LjVBMiwyIDAgMCwwIDE4LjUsMy41QTIsMiAwIDAsMCAxNi41LDEuNUEyLDIgMCAwLDAgMTQuNSwzLjVBMiwyIDAgMCwwIDE2LjUsNS41TTEyLjksMTkuNEwxMy45LDE1TDE2LDE3VjIzSDE4VjE1LjVMMTUuOSwxMy41TDE2LjUsMTAuNUMxNy44OSwxMi4wOSAxOS44OSwxMyAyMiwxM1YxMUMyMC4yNCwxMS4wMyAxOC42LDEwLjExIDE3LjcsOC42TDE2LjcsN0MxNi4zNCw2LjQgMTUuNyw2IDE1LDZDMTQuNyw2IDE0LjUsNi4xIDE0LjIsNi4xTDksOC4zVjEzSDExVjkuNkwxMi44LDguOUwxMS4yLDE3TDYuMywxNkw1LjksMThMMTIuOSwxOS40TTQsOUExLDEgMCAwLDEgMyw4QTEsMSAwIDAsMSA0LDdIN1Y5SDRNNSw1QTEsMSAwIDAsMSA0LDRBMSwxIDAgMCwxIDUsM0gxMFY1SDVNMywxM0ExLDEgMCAwLDEgMiwxMkExLDEgMCAwLDEgMywxMUg3VjEzSDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUnZUcnVjayA9IFwiTTIwIDhIMjJWNkwyMCA0SDNBMiAyIDAgMCAwIDEgNlYxNUEyIDIgMCAwIDAgMyAxN0g0QTMgMyAwIDAgMCA3IDIwQTMgMyAwIDAgMCAxMCAxN0gxNUEzIDMgMCAwIDAgMjEgMTdIMjNWMTJNNyAxOC41QTEuNSAxLjUgMCAwIDEgNyAxNS41QTEuNSAxLjUgMCAwIDEgNyAxOC41TTkgMTJIM1Y5SDlNMTQgMTVIMTFWOUgxNE0xOCAxOC41QTEuNSAxLjUgMCAxIDEgMTkuNSAxN0ExLjU0IDEuNTQgMCAwIDEgMTggMTguNU0xNyAxMlY5LjVIMTkuNUwyMS41IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhY2sgPSBcIk0xNiw5QzIwLDExIDIxLDE4IDIxLDE4QzIxLDE4IDIyLDIyIDE2LDIyQzEwLDIyIDgsMjIgOCwyMkMyLDIyIDMsMTggMywxOEMzLDE4IDQsMTEgOCw5TTE0LDRMMTIsMkwxMCw0TDYsMkw4LDdIMTZMMTgsMkwxNCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhY2tQZXJjZW50ID0gXCJNOCw3TDYsMkwxMCw0TDEyLDJMMTQsNEwxOCwyTDE2LDdIOE0xNiwyMkMxMCwyMiA4LDIyIDgsMjJDMiwyMiAzLDE4IDMsMThDMywxOCA0LDExIDgsOUgxNkMyMCwxMSAyMSwxOCAyMSwxOEMyMSwxOCAyMiwyMiAxNiwyMk03LjUsMTIuNUExLjUsMS41IDAgMCwwIDksMTRBMS41LDEuNSAwIDAsMCAxMC41LDEyLjVBMS41LDEuNSAwIDAsMCA5LDExQTEuNSwxLjUgMCAwLDAgNy41LDEyLjVNMTYuNSwxOC41QTEuNSwxLjUgMCAwLDAgMTUsMTdBMS41LDEuNSAwIDAsMCAxMy41LDE4LjVBMS41LDEuNSAwIDAsMCAxNSwyMEExLjUsMS41IDAgMCwwIDE2LjUsMTguNU0xNi41LDEyLjM1TDE1LjE1LDExTDcuNSwxOC42NUw4Ljg3LDIwTDE2LjUsMTIuMzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2FmZSA9IFwiTTQsNEEyLDIgMCAwLDAgMiw2VjE3QTIsMiAwIDAsMCA0LDE5VjIwSDZWMTlIMTdWMjBIMTlWMTlBMiwyIDAgMCwwIDIxLDE3VjE2SDIyVjE0SDIxVjlIMjJWN0gyMVY2QTIsMiAwIDAsMCAxOSw0SDRNNCw2SDE5VjE3SDRWNk0xMy41LDcuNUE0LDQgMCAwLDAgOS41LDExLjVBNCw0IDAgMCwwIDEzLjUsMTUuNUE0LDQgMCAwLDAgMTcuNSwxMS41QTQsNCAwIDAsMCAxMy41LDcuNU01LDlWMTRIN1Y5SDVNMTMuNSw5LjVBMiwyIDAgMCwxIDE1LjUsMTEuNUEyLDIgMCAwLDEgMTMuNSwxMy41QTIsMiAwIDAsMSAxMS41LDExLjVBMiwyIDAgMCwxIDEzLjUsOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhZmVTcXVhcmUgPSBcIk0yMCAyQzIxLjEgMiAyMiAyLjkgMjIgNFYyMEMyMiAyMS4xIDIxLjEgMjIgMjAgMjJIMTlWMjNIMTVWMjJIOVYyM0g1VjIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjRDMiAyLjkgMi45IDIgNCAySDIwTTE3IDEyQzE3IDExIDE2LjcgMTAgMTYuMiA5LjJMMTcuNyA3LjdMMTYuMyA2LjNMMTQuOCA3LjhDMTQgNy4zIDEzIDcgMTIgN0MxMSA3IDEwIDcuMyA5LjIgNy44TDcuOCA2LjNMNi4zIDcuOEw3LjggOS4zQzcuMyAxMCA3IDExIDcgMTJDNyAxMyA3LjMgMTQgNy44IDE0LjhMNi4zIDE2LjNMNy44IDE3LjdMOS4zIDE2LjJDMTAgMTYuNyAxMSAxNyAxMiAxN0MxMyAxNyAxNCAxNi43IDE0LjggMTYuMkwxNi4zIDE3LjdMMTcuNyAxNi4zTDE2LjIgMTQuOEMxNi43IDE0IDE3IDEzIDE3IDEyTTEyIDlDMTMuNyA5IDE1IDEwLjMgMTUgMTJDMTUgMTMuNyAxMy43IDE1IDEyIDE1QzEwLjMgMTUgOSAxMy43IDkgMTJDOSAxMC4zIDEwLjMgOSAxMiA5TTEyIDE0QzEzLjEgMTQgMTQgMTMuMSAxNCAxMkMxNCAxMC45IDEzLjEgMTAgMTIgMTBDMTAuOSAxMCAxMCAxMC45IDEwIDEyQzEwIDEzLjEgMTAuOSAxNCAxMiAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTYWZlU3F1YXJlT3V0bGluZSA9IFwiTTEwIDEyQzEwIDEwLjkgMTAuOSAxMCAxMiAxMEMxMy4xIDEwIDE0IDEwLjkgMTQgMTJDMTQgMTMuMSAxMy4xIDE0IDEyIDE0QzEwLjkgMTQgMTAgMTMuMSAxMCAxMk03LjggMTcuN0w2LjMgMTYuM0w3LjggMTQuOEM3LjMgMTQgNyAxMyA3IDEyQzcgMTEgNy4zIDEwIDcuOCA5LjNMNi4zIDcuOEw3LjggNi4zTDkuMiA3LjhDMTAgNy4zIDExIDcgMTIgN0MxMyA3IDE0IDcuMyAxNC44IDcuOEwxNi4zIDYuM0wxNy43IDcuN0wxNi4yIDkuMkMxNi43IDEwIDE3IDExIDE3IDEyQzE3IDEzIDE2LjcgMTQgMTYuMiAxNC44TDE3LjcgMTYuM0wxNi4zIDE3LjdMMTQuOCAxNi4yQzE0IDE2LjcgMTMgMTcgMTIgMTdDMTEgMTcgMTAgMTYuNyA5LjMgMTYuMkw3LjggMTcuN00xMiA5QzEwLjMgOSA5IDEwLjMgOSAxMkM5IDEzLjcgMTAuMyAxNSAxMiAxNUMxMy43IDE1IDE1IDEzLjcgMTUgMTJDMTUgMTAuMyAxMy43IDkgMTIgOU0yMCAyQzIxLjEgMiAyMiAyLjkgMjIgNFYyMEMyMiAyMS4xIDIxLjEgMjIgMjAgMjJIMTlWMjNIMTVWMjJIOVYyM0g1VjIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjRDMiAyLjkgMi45IDIgNCAySDIwTTIwIDIwVjRINFYyMEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTYWZldHlHb2dnbGVzID0gXCJNMTgsOUMxOS4xMSw5IDIwLDkuODkgMjAsMTFWMTRDMjAsMTUuMTEgMTkuMTEsMTYgMTgsMTZIMTUuNzdMMTQuNTMsMTQuNzdDMTMuNzgsMTQgMTIuNzcsMTMuNiAxMS43LDEzLjZDMTAuNjMsMTMuNiA5LjYzLDE0IDguODcsMTQuNzdMNy42NCwxNkg2QzQuODksMTYgNCwxNS4xMSA0LDE0VjExQzQsOS44OSA0Ljg5LDkgNiw5SDE4TTE4LDdINkE0LDQgMCAwLDAgMiwxMUgyTDEsMTFWMTRIMlYxNEE0LDQgMCAwLDAgNiwxOEg4LjVDOC41NCwxNy45NCA4LjU5LDE3Ljg4IDEwLjI5LDE2LjE4QzEwLjY4LDE1Ljc5IDExLjE5LDE1LjYgMTEuNywxNS42QzEyLjIyLDE1LjYgMTIuNzMsMTUuNzkgMTMuMTIsMTYuMThMMTQuOTEsMThIMThBNCw0IDAgMCwwIDIyLDE0SDIyTDIzLDE0VjExSDIyVjExQTQsNCAwIDAsMCAxOCw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhaWxCb2F0ID0gXCJNMTQsM0w1LDE0SDE0TTMsMTZMNiwyMUgxOEwyMSwxNlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhbGUgPSBcIk0xOC42NSwyLjg1TDE5LjI2LDYuNzFMMjIuNzcsOC41TDIxLDEyTDIyLjc4LDE1LjVMMTkuMjQsMTcuMjlMMTguNjMsMjEuMTVMMTQuNzQsMjAuNTRMMTEuOTcsMjMuM0w5LjE5LDIwLjVMNS4zMywyMS4xNEw0LjcxLDE3LjI1TDEuMjIsMTUuNDdMMywxMS45N0wxLjIzLDguNUw0Ljc0LDYuNjlMNS4zNSwyLjg2TDkuMjIsMy41TDEyLDAuNjlMMTQuNzcsMy40NkwxOC42NSwyLjg1TTkuNSw3QTEuNSwxLjUgMCAwLDAgOCw4LjVBMS41LDEuNSAwIDAsMCA5LjUsMTBBMS41LDEuNSAwIDAsMCAxMSw4LjVBMS41LDEuNSAwIDAsMCA5LjUsN00xNC41LDE0QTEuNSwxLjUgMCAwLDAgMTMsMTUuNUExLjUsMS41IDAgMCwwIDE0LjUsMTdBMS41LDEuNSAwIDAsMCAxNiwxNS41QTEuNSwxLjUgMCAwLDAgMTQuNSwxNE04LjQxLDE3TDE3LDguNDFMMTUuNTksN0w3LDE1LjU5TDguNDEsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2FsZXNmb3JjZSA9IFwiTTE4LjM4LDYuMzdDMTcuNjgsNi4zNyAxNy4wNyw2LjU4IDE2LjQ3LDYuNzhDMTUuNzcsNS41NyAxNC40Niw0Ljc3IDEzLjA1LDQuNzdDMTEuOTUsNC43NyAxMC45NSw1LjI3IDEwLjI0LDUuOTdDOS40NCw0Ljk3IDguMjMsNC4yNiA2LjgzLDQuMjZDNC41LDQuMjYgMi41LDYuMTcgMi41LDguNUMyLjUsOS4wOSAyLjcxLDkuNjkgMi45MSwxMC4yOUMxLjgsMTAuOSAxLDEyLjEgMSwxMy41QzEsMTUuNSAyLjYxLDE3LjIyIDQuNjIsMTcuMjJDNC45MiwxNy4yMiA1LjIyLDE3LjIyIDUuNDIsMTcuMTJDNS44MiwxOC42MyA3LjMzLDE5Ljc0IDkuMTQsMTkuNzRDMTAuODQsMTkuNzQgMTIuMjUsMTguNzMgMTIuNzUsMTcuMzJDMTMuMjYsMTcuNTMgMTMuNzYsMTcuNzMgMTQuMjYsMTcuNzNDMTUuNTcsMTcuNzMgMTYuNzcsMTcgMTcuMzcsMTUuOTJDMTcuNjgsMTYgMTgsMTYgMTguMjgsMTZDMjAuODksMTYgMjMsMTMuOTEgMjMsMTEuMkMyMy4xLDguNSAyMSw2LjM3IDE4LjM4LDYuMzdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2FzcyA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEwLDE1LjMzQzEwLjE2LDE1Ljg3IDEwLjE0LDE2LjM3IDEwLDE2LjgzQzEwLDE2Ljg4IDkuOTYsMTYuOTMgOS45NCwxN0M5LjkyLDE3IDkuOSwxNy4wNyA5Ljg3LDE3LjEyQzkuNzYsMTcuMzYgOS42LDE3LjU5IDkuNDEsMTcuNzlDOC44MywxOC40MyA4LDE4LjY3IDcuNjcsMTguNDdDNy4yOSwxOC4yNSA3LjUsMTcuMzUgOC4xNiwxNi42NEM4Ljg4LDE1Ljg4IDkuOTIsMTUuMzggOS45MiwxNS4zOFYxNS4zOEwxMCwxNS4zM00xOC4yNyw2LjI4QzE3LjgyLDQuNSAxNC44NywzLjkyIDEyLjA5LDQuOTFDMTAuNDMsNS41IDguNjMsNi40MiA3LjM0LDcuNjNDNS44MSw5LjA3IDUuNTYsMTAuMzIgNS42NiwxMC44NEM2LDEyLjY4IDguNTQsMTMuODkgOS41OCwxNC43OFYxNC43OUM5LjI4LDE0Ljk0IDcuMDQsMTYuMDcgNi41LDE3LjIzQzUuOTYsMTguNDUgNi42LDE5LjMzIDcsMTkuNDVDOC4zNCwxOS44MSA5LjY5LDE5LjE2IDEwLjQxLDE4LjA3QzExLjExLDE3LjAzIDExLjA2LDE1LjY4IDEwLjc1LDE1QzExLjE3LDE0LjkgMTEuNjYsMTQuODUgMTIuMjgsMTQuOTJDMTQuMDQsMTUuMTMgMTQuMzgsMTYuMjIgMTQuMzEsMTYuNjhDMTQuMjUsMTcuMTQgMTMuODgsMTcuMzkgMTMuNzYsMTcuNDdDMTMuNjQsMTcuNTQgMTMuNiwxNy41NyAxMy42MSwxNy42M0MxMy42MiwxNy43MSAxMy42OCwxNy43MSAxMy43OCwxNy42OUMxMy45MywxNy42NiAxNC43MSwxNy4zMiAxNC43NCwxNi40N0MxNC43OCwxNS4zOSAxMy43NSwxNC4xOSAxMS45MywxNC4yMkMxMS4xOCwxNC4yNCAxMC43MSwxNC4zMSAxMC4zNywxNC40NEwxMC4yOSwxNC4zNUM5LjE2LDEzLjE1IDcuMDgsMTIuMyA3LjE3LDEwLjY4QzcuMiwxMC4wOSA3LjQsOC41NSAxMS4xNyw2LjY3QzE0LjI1LDUuMTMgMTYuNzIsNS41NSAxNy4xNSw2LjVDMTcuNzYsNy44MyAxNS44MywxMC4zMiAxMi42MywxMC42OEMxMS40MSwxMC44MiAxMC43NiwxMC4zNCAxMC42LDEwLjE3QzEwLjQzLDEwIDEwLjQxLDkuOTcgMTAuMzUsMTBDMTAuMjQsMTAuMDcgMTAuMzEsMTAuMjMgMTAuMzUsMTAuMzNDMTAuNDQsMTAuNTggMTAuODQsMTEgMTEuNSwxMS4yNEMxMi4wOSwxMS40MyAxMy41MywxMS41NCAxNS4yNiwxMC44N0MxNy4yLDEwLjEyIDE4LjcyLDguMDMgMTguMjcsNi4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTYXRlbGxpdGUgPSBcIk01LDE4TDguNSwxMy41TDExLDE2LjVMMTQuNSwxMkwxOSwxOE01LDEyVjEwQTUsNSAwIDAsMCAxMCw1SDEyQTcsNyAwIDAsMSA1LDEyTTUsNUg4QTMsMyAwIDAsMSA1LDhNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTYXRlbGxpdGVVcGxpbmsgPSBcIk0xMS44NiwyTDExLjM0LDMuOTNDMTUuNzUsNC43OCAxOS4yLDguMjMgMjAuMDUsMTIuNjVMMjIsMTIuMTNDMjAuOTUsNy4wMyAxNi45NiwzLjA0IDExLjg2LDJNMTAuODIsNS44NkwxMC4zLDcuODFDMTMuMzQsOC4yNyAxNS43MiwxMC42NSAxNi4xOCwxMy42OEwxOC4xMiwxMy4xNkMxNy40Niw5LjQ0IDE0LjU1LDYuNSAxMC44Miw1Ljg2TTMuNzIsOS42OUMzLjI1LDEwLjczIDMsMTEuODYgMywxM0MzLDE0Ljk1IDMuNzEsMTYuODIgNSwxOC4yOFYyMkg4VjIwLjQxQzguOTUsMjAuOCA5Ljk3LDIxIDExLDIxQzEyLjE0LDIxIDEzLjI3LDIwLjc1IDE0LjMsMjAuMjhMMy43Miw5LjY5TTkuNzksOS43Nkw5LjI2LDExLjcyQTMsMyAwIDAsMSAxMi4yNiwxNC43MkwxNC4yMywxNC4yQzE0LDExLjg2IDEyLjEzLDEwIDkuNzksOS43NlpcIjtcclxuZXhwb3J0IHZhciBtZGlTYXRlbGxpdGVWYXJpYW50ID0gXCJNMTEuNjIsMUwxNy4yOCw2LjY3TDE1LjE2LDguNzlMMTMuMDQsNi42N0wxMS42Miw4LjA5TDEzLjk1LDEwLjQxTDEyLjc5LDExLjU4TDEzLjI0LDEyLjA0QzE0LjE3LDExLjYxIDE1LjMxLDExLjc3IDE2LjA3LDEyLjU0TDEyLjU0LDE2LjA3QzExLjc3LDE1LjMxIDExLjYxLDE0LjE3IDEyLjA0LDEzLjI0TDExLjU4LDEyLjc5TDEwLjQxLDEzLjk1TDguMDksMTEuNjJMNi42NywxMy4wNEw4Ljc5LDE1LjE2TDYuNjcsMTcuMjhMMSwxMS42MkwzLjE0LDkuNUw1LjI2LDExLjYyTDYuNjcsMTAuMjFMMy44NCw3LjM4QzMuMDYsNi42IDMuMDYsNS4zMyAzLjg0LDQuNTVMNC41NSwzLjg0QzUuMzMsMy4wNiA2LjYsMy4wNiA3LjM4LDMuODRMMTAuMjEsNi42N0wxMS42Miw1LjI2TDkuNSwzLjE0TDExLjYyLDFNMTgsMTRBNCw0IDAgMCwxIDE0LDE4VjE2QTIsMiAwIDAsMCAxNiwxNEgxOE0yMiwxNEE4LDggMCAwLDEgMTQsMjJWMjBBNiw2IDAgMCwwIDIwLDE0SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhdXNhZ2UgPSBcIk0zLjUsM0g5LjVMNy45Niw1LjMyQzkuMTYsNS44NyAxMCw3LjA5IDEwLDguNUE1LjUsNS41IDAgMCwwIDE1LjUsMTRDMTYuOTEsMTQgMTguMTMsMTQuODQgMTguNjgsMTYuMDRMMjEsMTQuNVYyMC41TDE4LjY4LDE4Ljk2QzE4LjEzLDIwLjE2IDE2LjkxLDIxIDE1LjUsMjFBMTIuNSwxMi41IDAgMCwxIDMsOC41QzMsNy4wOSAzLjg0LDUuODcgNS4wNCw1LjMyTDMuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhd0JsYWRlID0gXCJNMjAsMTVDMjAsMTUgMTguNiwxNi4zIDIxLjEsMTdMMTguMywxOS44SDE1LjVDMTUuNSwxOS44IDEzLjYsMTkuNyAxNSwyMkgxMUw5LDIwQzksMjAgNy43LDE4LjYgNywyMS4xTDQuMiwxOC4zVjE1LjVDNC4yLDE1LjUgNC4zLDEzLjYgMiwxNVYxMUw0LDlDNCw5IDUuNCw3LjcgMi44LDcuMUw1LjYsNC4ySDguNUM4LjUsNC4yIDEwLjQsNC4zIDksMkgxM0wxNSw0QzE1LDQgMTYuMyw1LjQgMTcsMi44TDE5LjgsNS42VjguNUMxOS44LDguNSAxOS43LDEwLjQgMjIsOVYxM0wyMCwxNU0xNCwxMkEyLDIgMCAwLDAgMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2F3dG9vdGhXYXZlID0gXCJNMTEgMjJWNi44M0wyIDE2VjEzLjE3TDEzIDJWMTcuMTdMMjIgOFYxMC44M0wxMSAyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTYXhvcGhvbmUgPSBcIk00LDJBMSwxIDAgMCwwIDMsM0ExLDEgMCAwLDAgNCw0QTMsMyAwIDAsMSA3LDdWOC42Nkw3LDE1LjVDNywxOS4xIDkuOSwyMiAxMy41LDIyQzE3LjEsMjIgMjAsMTkuMSAyMCwxNS41VjEzQTEsMSAwIDAsMCAyMSwxMkExLDEgMCAwLDAgMjAsMTFIMTRBMSwxIDAgMCwwIDEzLDEyQTEsMSAwIDAsMCAxNCwxM1YxNUExLDEgMCAwLDEgMTMsMTZBMSwxIDAgMCwxIDEyLDE1VjExQTEsMSAwIDAsMCAxMywxMEExLDEgMCAwLDAgMTIsOVY4QTEsMSAwIDAsMCAxMyw3QTEsMSAwIDAsMCAxMiw2VjUuNUEzLjUsMy41IDAgMCwwIDguNSwySDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NhbGUgPSBcIk04LjQ2LDE1LjA2TDcuMDUsMTYuNDdMNS42OCwxNS4xQzQuODIsMTYuMjEgNC4yNCwxNy41NCA0LjA2LDE5SDZWMjFIMlYyMEMyLDE1LjE2IDUuNDQsMTEuMTMgMTAsMTAuMlY4LjJMMiw1VjNIMjJWNUwxNCw4LjJWMTAuMkMxOC41NiwxMS4xMyAyMiwxNS4xNiAyMiwyMFYyMUgxOFYxOUgxOS45NEMxOS43NiwxNy41NCAxOS4xOCwxNi4yMSAxOC4zMiwxNS4xTDE2Ljk1LDE2LjQ3TDE1LjU0LDE1LjA2TDE2LjkxLDEzLjY4QzE1LjgsMTIuODIgMTQuNDYsMTIuMjQgMTMsMTIuMDZWMTRIMTFWMTIuMDZDOS41NCwxMi4yNCA4LjIsMTIuODIgNy4wOSwxMy42OEw4LjQ2LDE1LjA2TTEyLDE4QTIsMiAwIDAsMSAxNCwyMEEyLDIgMCAwLDEgMTIsMjJDMTEuNjgsMjIgMTEuMzgsMjEuOTMgMTEuMTIsMjEuNzlMNy4yNywyMEwxMS4xMiwxOC4yMUMxMS4zOCwxOC4wNyAxMS42OCwxOCAxMiwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY2FsZUJhbGFuY2UgPSBcIk0xMiwzQzEwLjczLDMgOS42LDMuOCA5LjE4LDVIM1Y3SDQuOTVMMiwxNEMxLjUzLDE2IDMsMTcgNS41LDE3QzgsMTcgOS41NiwxNiA5LDE0TDYuMDUsN0g5LjE3QzkuNSw3Ljg1IDEwLjE1LDguNSAxMSw4LjgzVjIwSDJWMjJIMjJWMjBIMTNWOC44MkMxMy44NSw4LjUgMTQuNSw3Ljg1IDE0LjgyLDdIMTcuOTVMMTUsMTRDMTQuNTMsMTYgMTYsMTcgMTguNSwxN0MyMSwxNyAyMi41NiwxNiAyMiwxNEwxOS4wNSw3SDIxVjVIMTQuODNDMTQuNCwzLjggMTMuMjcsMyAxMiwzTTEyLDVBMSwxIDAgMCwxIDEzLDZBMSwxIDAgMCwxIDEyLDdBMSwxIDAgMCwxIDExLDZBMSwxIDAgMCwxIDEyLDVNNS41LDEwLjI1TDcsMTRINEw1LjUsMTAuMjVNMTguNSwxMC4yNUwyMCwxNEgxN0wxOC41LDEwLjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjYWxlQmF0aHJvb20gPSBcIk01LDJIMTlBMiwyIDAgMCwxIDIxLDRWMjBBMiwyIDAgMCwxIDE5LDIySDVBMiwyIDAgMCwxIDMsMjBWNEEyLDIgMCAwLDEgNSwyTTEyLDRBNCw0IDAgMCwwIDgsOEgxMS4yNkwxMC44NSw1LjIzTDEyLjksOEgxNkE0LDQgMCAwLDAgMTIsNE01LDEwVjIwSDE5VjEwSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NhbGVPZmYgPSBcIk0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOS4xMSAyMUgxOFYxOS44OUwxMi4xMSAxNEgxMVYxMi44OUwxMC4zMSAxMi4yQTcuOTIgNy45MiAwIDAgMCA3LjA5IDEzLjY4TDguNDYgMTUuMDZMNy4wNSAxNi40N0w1LjY4IDE1LjFBNy45NCA3Ljk0IDAgMCAwIDQuMDYgMTlINlYyMUgyVjIwQTEwIDEwIDAgMCAxIDguNjggMTAuNTdMMy44NSA1Ljc0TDIgNVYzLjg5TDEuMTEgM0wyLjM5IDEuNzNNMjEuOTEgMTguNzFBMTAgMTAgMCAwIDAgMTQgMTAuMlY4LjJMMjIgNVYzSDYuMk0xMiAxOEExLjg0IDEuODQgMCAwIDAgMTEuMTIgMTguMjFMNy4yNyAyMEwxMS4xMiAyMS43OUExLjg0IDEuODQgMCAwIDAgMTIgMjJBMiAyIDAgMCAwIDEyIDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjYW5IZWxwZXIgPSBcIk0wIDJBMiAyIDAgMCAxIDIgMEg2VjJIMlY2SDBWMk0yNCAyMkEyIDIgMCAwIDEgMjIgMjRIMThWMjJIMjJWMThIMjRWMjJNMiAyNEEyIDIgMCAwIDEgMCAyMlYxOEgyVjIySDZWMjRIMk0yMiAwQTIgMiAwIDAgMSAyNCAyVjZIMjJWMkgxOFYwSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjYW5uZXIgPSBcIk00LjIsMTAuN0wxOS44LDVMMjAuNSw2LjlMNi40LDEySDE5QTIsMiAwIDAsMSAyMSwxNFYxOEEyLDIgMCAwLDEgMTksMjBINUEyLDIgMCAwLDEgMywxOFYxMi41QzMsMTEuNyAzLjUsMTAuOSA0LjIsMTAuN00xNywxN0gxOVYxNUgxN1YxN001LDE3SDE1VjE1SDVWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2Nhbm5lck9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTYuNzMsMjBINUEyLDIgMCAwLDEgMywxOFYxMi41QzMsMTEuNyAzLjUsMTAuOSA0LjIsMTAuN0w2LjU3LDkuODRMMiw1LjI3TTYuNCwxMkg4LjczTDguMTEsMTEuMzhMNi40LDEyTTUsMTVWMTdIMTMuNzNMMTEuNzMsMTVINU0xOS44LDVMMjAuNSw2LjlMMTEuODUsMTAuMDNMMTAuMyw4LjQ3TDE5LjgsNU0xOSwxMkEyLDIgMCAwLDEgMjEsMTRWMThDMjEsMTguMzQgMjAuOTEsMTguNjYgMjAuNzYsMTguOTRMMTksMTcuMThWMTVIMTYuODJMMTMuODIsMTJIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NhdHRlclBsb3QgPSBcIk03LDExQTMsMyAwIDAsMSAxMCwxNEEzLDMgMCAwLDEgNywxN0EzLDMgMCAwLDEgNCwxNEEzLDMgMCAwLDEgNywxMU0xMSwzQTMsMyAwIDAsMSAxNCw2QTMsMyAwIDAsMSAxMSw5QTMsMyAwIDAsMSA4LDZBMywzIDAgMCwxIDExLDNNMTYuNiwxNC42QzE4LjI1LDE0LjYgMTkuNiwxNS45NCAxOS42LDE3LjZBMywzIDAgMCwxIDE2LjYsMjAuNkMxNC45NCwyMC42IDEzLjYsMTkuMjUgMTMuNiwxNy42QTMsMyAwIDAsMSAxNi42LDE0LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NhdHRlclBsb3RPdXRsaW5lID0gXCJNNywxOEE0LDQgMCAwLDEgMywxNEE0LDQgMCAwLDEgNywxMEE0LDQgMCAwLDEgMTEsMTRBNCw0IDAgMCwxIDcsMThNNywxMkEyLDIgMCAwLDAgNSwxNEEyLDIgMCAwLDAgNywxNkEyLDIgMCAwLDAgOSwxNEEyLDIgMCAwLDAgNywxMk0xMSwxMEE0LDQgMCAwLDEgNyw2QTQsNCAwIDAsMSAxMSwyQTQsNCAwIDAsMSAxNSw2QTQsNCAwIDAsMSAxMSwxME0xMSw0QTIsMiAwIDAsMCA5LDZBMiwyIDAgMCwwIDExLDhBMiwyIDAgMCwwIDEzLDZBMiwyIDAgMCwwIDExLDRNMTYuNiwyMS42QzE0LjM5LDIxLjYgMTIuNiwxOS44MSAxMi42LDE3LjZBNCw0IDAgMCwxIDE2LjYsMTMuNkMxOC44MSwxMy42IDIwLjYsMTUuMzkgMjAuNiwxNy42QTQsNCAwIDAsMSAxNi42LDIxLjZNMTYuNiwxNS42QTIsMiAwIDAsMCAxNC42LDE3LjZDMTQuNiwxOC43IDE1LjUsMTkuNiAxNi42LDE5LjZBMiwyIDAgMCwwIDE4LjYsMTcuNkMxOC42LDE2LjUgMTcuNywxNS42IDE2LjYsMTUuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTY2hvb2wgPSBcIk0xMiwzTDEsOUwxMiwxNUwyMSwxMC4wOVYxN0gyM1Y5TTUsMTMuMThWMTcuMThMMTIsMjFMMTksMTcuMThWMTMuMThMMTIsMTdMNSwxMy4xOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY2hvb2xPdXRsaW5lID0gXCJNMTIgM0wxIDlMNSAxMS4xOFYxNy4xOEwxMiAyMUwxOSAxNy4xOFYxMS4xOEwyMSAxMC4wOVYxN0gyM1Y5TDEyIDNNMTguODIgOUwxMiAxMi43Mkw1LjE4IDlMMTIgNS4yOEwxOC44MiA5TTE3IDE2TDEyIDE4LjcyTDcgMTZWMTIuMjdMMTIgMTVMMTcgMTIuMjdWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2Npc3NvcnNDdXR0aW5nID0gXCJNMTEsMjFIN1YxOUgxMVYyMU0xNS41LDE5SDE3VjIxSDEzVjE5SDEzLjJMMTEuOCwxMi45TDkuMywxMy41QzkuMiwxNCA5LDE0LjQgOC44LDE0LjhDNy45LDE2LjMgNiwxNi43IDQuNSwxNS44QzMsMTQuOSAyLjYsMTMgMy41LDExLjVDNC40LDEwIDYuMyw5LjYgNy44LDEwLjVDOC4yLDEwLjcgOC41LDExLjEgOC43LDExLjRMMTEuMiwxMC44TDEwLjYsOC4zQzEwLjIsOC4yIDkuOCw4IDkuNCw3LjhDOCw2LjkgNy41LDUgOC40LDMuNUM5LjMsMiAxMS4yLDEuNiAxMi43LDIuNUMxNC4yLDMuNCAxNC42LDUuMyAxMy43LDYuOEMxMy41LDcuMiAxMy4xLDcuNSAxMi44LDcuN0wxNS41LDE5TTcsMTEuOEM2LjMsMTEuMyA1LjMsMTEuNiA0LjgsMTIuM0M0LjMsMTMgNC42LDE0IDUuMywxNC40QzYsMTQuOSA3LDE0LjcgNy41LDEzLjlDNy45LDEzLjIgNy43LDEyLjIgNywxMS44TTEyLjQsNkMxMi45LDUuMyAxMi42LDQuMyAxMS45LDMuOEMxMS4yLDMuMyAxMC4yLDMuNiA5LjcsNC4zQzkuMyw1IDkuNSw2IDEwLjMsNi41QzExLDYuOSAxMiw2LjcgMTIuNCw2TTEyLjgsMTEuM0MxMi42LDExLjIgMTIuNCwxMS4yIDEyLjMsMTEuNEMxMi4yLDExLjYgMTIuMiwxMS44IDEyLjQsMTEuOUMxMi42LDEyIDEyLjgsMTIgMTIuOSwxMS44QzEzLjEsMTEuNiAxMywxMS40IDEyLjgsMTEuM00yMSw4LjVMMTQuNSwxMEwxNSwxMi4yTDIyLjUsMTAuNEwyMyw5LjdMMjEsOC41TTIzLDE5SDE5VjIxSDIzVjE5TTUsMTlIMVYyMUg1VjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjb290ZXIgPSBcIk03LjgyIDE5SDE1VjE4QzE1IDE1Ljc5IDE2Ljc5IDE0IDE5IDE0SDE5Ljc0TDE3Ljg0IDUuNTZDMTcuNjMgNC42NSAxNi44MiA0IDE1Ljg5IDRIMTJWNkgxNS44OUwxNy4yOSAxMi4yNUgxNy4yOEMxNS4xMiAxMi45IDEzLjQ3IDE0LjczIDEzLjA5IDE3SDcuODJDNy4zNCAxNS42NiA1Ljk2IDE0Ljc2IDQuNCAxNS4wNkMzLjIyIDE1LjI5IDIuMjcgMTYuMjYgMi4wNSAxNy40NEMxLjcgMTkuMzQgMy4xNiAyMSA1IDIxQzYuMyAyMSA3LjQgMjAuMTYgNy44MiAxOU01IDE5QzQuNDUgMTkgNCAxOC41NSA0IDE4UzQuNDUgMTcgNSAxNyA2IDE3LjQ1IDYgMTggNS41NSAxOSA1IDE5TTE5IDE1QzE3LjM0IDE1IDE2IDE2LjM0IDE2IDE4UzE3LjM0IDIxIDE5IDIxIDIyIDE5LjY2IDIyIDE4IDIwLjY2IDE1IDE5IDE1TTE5IDE5QzE4LjQ1IDE5IDE4IDE4LjU1IDE4IDE4UzE4LjQ1IDE3IDE5IDE3IDIwIDE3LjQ1IDIwIDE4IDE5LjU1IDE5IDE5IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjb290ZXJFbGVjdHJpYyA9IFwiTTcuODIgMTZIMTVWMTVDMTUgMTIuNzkgMTYuNzkgMTEgMTkgMTFIMTkuNzRMMTcuODQgMi41NkMxNy42MyAxLjY1IDE2LjgyIDEgMTUuODkgMUgxMlYzSDE1Ljg5TDE3LjI5IDkuMjVIMTcuMjhDMTUuMTIgOS45IDEzLjQ3IDExLjczIDEzLjA5IDE0SDcuODJDNy4zNCAxMi42NiA1Ljk2IDExLjc2IDQuNCAxMi4wNkMzLjIyIDEyLjI5IDIuMjcgMTMuMjYgMi4wNSAxNC40NEMxLjcgMTYuMzQgMy4xNiAxOCA1IDE4QzYuMyAxOCA3LjQgMTcuMTYgNy44MiAxNk01IDE2QzQuNDUgMTYgNCAxNS41NSA0IDE1UzQuNDUgMTQgNSAxNCA2IDE0LjQ1IDYgMTUgNS41NSAxNiA1IDE2TTE5IDEyQzE3LjM0IDEyIDE2IDEzLjM0IDE2IDE1UzE3LjM0IDE4IDE5IDE4IDIyIDE2LjY2IDIyIDE1IDIwLjY2IDEyIDE5IDEyTTE5IDE2QzE4LjQ1IDE2IDE4IDE1LjU1IDE4IDE1UzE4LjQ1IDE0IDE5IDE0IDIwIDE0LjQ1IDIwIDE1IDE5LjU1IDE2IDE5IDE2TTExIDIwSDdMMTMgMjNWMjFIMTdMMTEgMThWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NvcmVib2FyZCA9IFwiTTYgOUg4VjE1SDZWOU0xNiA5SDE4VjE1SDE2VjlNMjEgM0MyMi4xIDMgMjMgMy45IDIzIDVWMTlDMjMgMjAuMSAyMi4xIDIxIDIxIDIxSDNDMS45IDIxIDEgMjAuMSAxIDE5VjVDMSAzLjkgMS45IDMgMyAzSDIxTTUgN0M0LjQgNyA0IDcuNCA0IDhWMTZDNCAxNi42IDQuNCAxNyA1IDE3SDlDOS42IDE3IDEwIDE2LjYgMTAgMTZWOEMxMCA3LjQgOS42IDcgOSA3SDVNMTUgN0MxNC40IDcgMTQgNy40IDE0IDhWMTZDMTQgMTYuNiAxNC40IDE3IDE1IDE3SDE5QzE5LjYgMTcgMjAgMTYuNiAyMCAxNlY4QzIwIDcuNCAxOS42IDcgMTkgN0gxNU0xMiAxMUMxMi42IDExIDEzIDEwLjYgMTMgMTBDMTMgOS40IDEyLjYgOSAxMiA5QzExLjQgOSAxMSA5LjQgMTEgMTBDMTEgMTAuNiAxMS40IDExIDEyIDExTTEyIDE1QzEyLjYgMTUgMTMgMTQuNiAxMyAxNEMxMyAxMy40IDEyLjYgMTMgMTIgMTNDMTEuNCAxMyAxMSAxMy40IDExIDE0QzExIDE0LjYgMTEuNCAxNSAxMiAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTY29yZWJvYXJkT3V0bGluZSA9IFwiTTIxIDNIM0MxLjkgMyAxIDMuOSAxIDVWMTlDMSAyMC4xIDEuOSAyMSAzIDIxSDIxQzIyLjEgMjEgMjMgMjAuMSAyMyAxOVY1QzIzIDMuOSAyMi4xIDMgMjEgM00yMSAxOUgzVjVIMjFNNSA3SDlDOS42IDcgMTAgNy40IDEwIDhWMTZDMTAgMTYuNiA5LjYgMTcgOSAxN0g1QzQuNCAxNyA0IDE2LjYgNCAxNlY4QzQgNy40IDQuNCA3IDUgN002IDlWMTVIOFY5TTE1IDdIMTlDMTkuNiA3IDIwIDcuNCAyMCA4VjE2QzIwIDE2LjYgMTkuNiAxNyAxOSAxN0gxNUMxNC40IDE3IDE0IDE2LjYgMTQgMTZWOEMxNCA3LjQgMTQuNCA3IDE1IDdNMTYgOVYxNUgxOFY5TTEyIDExQzEyLjYgMTEgMTMgMTAuNiAxMyAxMEMxMyA5LjQgMTIuNiA5IDEyIDlDMTEuNCA5IDExIDkuNCAxMSAxMEMxMSAxMC42IDExLjQgMTEgMTIgMTFNMTIgMTVDMTIuNiAxNSAxMyAxNC42IDEzIDE0QzEzIDEzLjQgMTIuNiAxMyAxMiAxM0MxMS40IDEzIDExIDEzLjQgMTEgMTRDMTEgMTQuNiAxMS40IDE1IDEyIDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmVlblJvdGF0aW9uID0gXCJNNy41LDIxLjVDNC4yNSwxOS45NCAxLjkxLDE2Ljc2IDEuNTUsMTNIMC4wNUMwLjU2LDE5LjE2IDUuNzEsMjQgMTIsMjRMMTIuNjYsMjMuOTdMOC44NSwyMC4xNk0xNC44MywyMS4xOUwyLjgxLDkuMTdMOS4xNywyLjgxTDIxLjE5LDE0LjgzTTEwLjIzLDEuNzVDOS42NCwxLjE2IDguNjksMS4xNiA4LjExLDEuNzVMMS43NSw4LjExQzEuMTYsOC43IDEuMTYsOS42NSAxLjc1LDEwLjIzTDEzLjc3LDIyLjI1QzE0LjM2LDIyLjg0IDE1LjMxLDIyLjg0IDE1Ljg5LDIyLjI1TDIyLjI1LDE1Ljg5QzIyLjg0LDE1LjMgMjIuODQsMTQuMzUgMjIuMjUsMTMuNzdMMTAuMjMsMS43NU0xNi41LDIuNUMxOS43NSw0LjA3IDIyLjA5LDcuMjQgMjIuNDUsMTFIMjMuOTVDMjMuNDQsNC44NCAxOC4yOSwwIDEyLDBMMTEuMzQsMC4wM0wxNS4xNSwzLjg0TDE2LjUsMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmVlblJvdGF0aW9uTG9jayA9IFwiTTE2LjgsMi41QzE2LjgsMS41NiAxNy41NiwwLjggMTguNSwwLjhDMTkuNDQsMC44IDIwLjIsMS41NiAyMC4yLDIuNVYzSDE2LjhWMi41TTE2LDlIMjFBMSwxIDAgMCwwIDIyLDhWNEExLDEgMCAwLDAgMjEsM1YyLjVBMi41LDIuNSAwIDAsMCAxOC41LDBBMi41LDIuNSAwIDAsMCAxNiwyLjVWM0ExLDEgMCAwLDAgMTUsNFY4QTEsMSAwIDAsMCAxNiw5TTguNDcsMjAuNUM1LjIsMTguOTQgMi44NiwxNS43NiAyLjUsMTJIMUMxLjUsMTguMTYgNi42NiwyMyAxMi45NSwyM0wxMy42MSwyMi45N0w5LjgsMTkuMTVMOC40NywyMC41TTIzLjI1LDEyLjc3TDIwLjY4LDEwLjJMMTkuMjcsMTEuNjFMMjEuNSwxMy44M0wxNS44MywxOS41TDQuNSw4LjE3TDEwLjE3LDIuNUwxMi4yNyw0LjYxTDEzLjY4LDMuMkwxMS4yMywwLjc1QzEwLjY0LDAuMTYgOS42OSwwLjE2IDkuMTEsMC43NUwyLjc1LDcuMTFDMi4xNiw3LjcgMi4xNiw4LjY1IDIuNzUsOS4yM0wxNC43NywyMS4yNUMxNS4zNiwyMS44NCAxNi4zMSwyMS44NCAxNi44OSwyMS4yNUwyMy4yNSwxNC44OUMyMy44NCwxNC4zIDIzLjg0LDEzLjM1IDIzLjI1LDEyLjc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmV3RmxhdFRvcCA9IFwiTTEzLjUsMTdWMTlMMTIsMjJMMTAuNSwxOUwxMy41LDE3TTE0LjUsNi4zTDEzLjUsN1Y2SDEwLjVWOUw5LjUsOS43VjEwLjdMMTQuNSw3LjRWNi4zTTE0LjUsMTAuM0wxMy41LDExVjlMMTAuNSwxMVYxM0w5LjUsMTMuN1YxNC43TDE0LjUsMTEuNFYxMC4zTTE0LjUsMTQuM0wxMy41LDE1VjEzTDEwLjUsMTVWMTdMOS41LDE3LjdWMTguN0wxNC41LDE1LjRWMTQuM004LDJDOCwyIDcsMiA3LDNMMTAsNUgxNEwxNywzQzE3LDMgMTcsMiAxNiwyQzE1LDIgOCwyIDgsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3Jld0xhZyA9IFwiTTEwLDE5LjNMMTQsMTYuNlYyMEwxMiwyMkwxMCwyMFYxOS4zTTE0LDEyLjdMMTAsMTUuNFYxNy40TDksMThWMTlMMTUsMTUuMVYxNEwxNCwxNC43VjEyLjdNNywyVjVIMTdWMkg3TTksNlY5TDEwLDkuN1YxMy40TDksMTRWMTVMMTUsMTEuMVYxMEwxNCwxMC43QzE0LDEwLjcgMTQsMTAuMyAxNCw5LjdMMTUsOVY2SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyZXdNYWNoaW5lRmxhdFRvcCA9IFwiTTE0LjUsNy4zTDEzLjUsOFY3SDEwLjVWMTBMOS41LDEwLjdWMTEuN0wxNC41LDguNFY3LjNNMTQuNSwxMS4zTDEzLjUsMTJWMTBMMTAuNSwxMlYxNEw5LjUsMTQuN1YxNS43TDE0LjUsMTIuNFYxMS4zTTE0LjUsMTUuM0wxMy41LDE2VjE0TDEwLjUsMTZWMThMOS41LDE4LjdWMTkuN0wxNC41LDE2LjRWMTUuM004LDNDOCwzIDcsMyA3LDRMMTAsNkgxNEwxNyw0QzE3LDQgMTcsMyAxNiwzQzE1LDMgOCwzIDgsM00xMy41LDE4VjIxSDEwLjVWMjBMMTMuNSwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3Jld01hY2hpbmVSb3VuZFRvcCA9IFwiTTE0LjUsNy4zTDEzLjUsOFY3SDEwLjVWMTBMOS41LDEwLjdWMTEuN0wxNC41LDguNFY3LjNNMTQuNSwxMS4zTDEzLjUsMTJWMTBMMTAuNSwxMlYxNEw5LjUsMTQuN1YxNS43TDE0LjUsMTIuNFYxMS4zTTE0LjUsMTUuM0wxMy41LDE2VjE0TDEwLjUsMTZWMThMOS41LDE4LjdWMTkuN0wxNC41LDE2LjRWMTUuM003LDZIMTdDMTcsNiAxNiwzIDEyLDNDOCwzIDcsNiA3LDZNMTMuNSwxOFYyMUgxMC41VjIwTDEzLjUsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyZXdSb3VuZFRvcCA9IFwiTTEzLjUsMTdWMTlMMTIsMjJMMTAuNSwxOUwxMy41LDE3TTE0LjUsNi4zTDEzLjUsN1Y2SDEwLjVWOUw5LjUsOS43VjEwLjdMMTQuNSw3LjRWNi4zTTE0LjUsMTAuM0wxMy41LDExVjlMMTAuNSwxMVYxM0w5LjUsMTMuN1YxNC43TDE0LjUsMTEuNFYxMC4zTTE0LjUsMTQuM0wxMy41LDE1VjEzTDEwLjUsMTVWMTdMOS41LDE3LjdWMTguN0wxNC41LDE1LjRWMTQuM003LDVIMTdDMTcsNSAxNiwyIDEyLDJDOCwyIDcsNSA3LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyZXdkcml2ZXIgPSBcIk0xOCwxLjgzQzE3LjUsMS44MyAxNywyIDE2LjU5LDIuNDFDMTMuNzIsNS4yOCA4LDExIDgsMTFMOS41LDEyLjVMNiwxNkg0TDIsMjBMNCwyMkw4LDIwVjE4TDExLjUsMTQuNUwxMywxNkMxMywxNiAxOC43MiwxMC4yOCAyMS41OSw3LjQxQzIyLjIxLDYuNSAyMi4zNyw1LjM3IDIxLjU5LDQuNTlMMTkuNDEsMi40MUMxOSwyIDE4LjUsMS44MyAxOCwxLjgzTTE4LDRMMjAsNkwxMywxM0wxMSwxMUwxOCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmlwdCA9IFwiTTE3LjgsMjBDMTcuNCwyMS4yIDE2LjMsMjIgMTUsMjJINUMzLjMsMjIgMiwyMC43IDIsMTlWMThINUwxNC4yLDE4QzE0LjYsMTkuMiAxNS43LDIwIDE3LDIwSDE3LjhNMTksMkg4QzYuMywyIDUsMy4zIDUsNVYxNkgxNlYxN0MxNiwxNy42IDE2LjQsMTggMTcsMThIMThWNUMxOCw0LjQgMTguNCw0IDE5LDRDMTkuNiw0IDIwLDQuNCAyMCw1VjZIMjJWNUMyMiwzLjMgMjAuNywyIDE5LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyaXB0T3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNiwxOVY0SDhBMSwxIDAgMCwwIDcsNVYxNkg1VjVBMywzIDAgMCwxIDgsMkgxOUEzLDMgMCAwLDEgMjIsNVY2SDIwVjVBMSwxIDAgMCwwIDE5LDRBMSwxIDAgMCwwIDE4LDVWOUwxOCwxOUEzLDMgMCAwLDEgMTUsMjJINUEzLDMgMCAwLDEgMiwxOVYxOEgxM0EyLDIgMCAwLDAgMTUsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyaXB0VGV4dCA9IFwiTTE3LjgsMjBDMTcuNCwyMS4yIDE2LjMsMjIgMTUsMjJINUMzLjMsMjIgMiwyMC43IDIsMTlWMThINUwxNC4yLDE4QzE0LjYsMTkuMiAxNS43LDIwIDE3LDIwSDE3LjhNMTksMkMyMC43LDIgMjIsMy4zIDIyLDVWNkgyMFY1QzIwLDQuNCAxOS42LDQgMTksNEMxOC40LDQgMTgsNC40IDE4LDVWMThIMTdDMTYuNCwxOCAxNiwxNy42IDE2LDE3VjE2SDVWNUM1LDMuMyA2LjMsMiA4LDJIMTlNOCw2VjhIMTVWNkg4TTgsMTBWMTJIMTRWMTBIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3JpcHRUZXh0S2V5ID0gXCJNMTkgMkg4QzYuMyAyIDUgMy4zIDUgNVYxNkgxM0MxMy44IDE1LjQgMTQuOSAxNSAxNiAxNUMxNi43IDE1IDE3LjQgMTUuMiAxOCAxNS40VjVDMTggNC40IDE4LjQgNCAxOSA0UzIwIDQuNCAyMCA1VjZIMjJWNUMyMiAzLjMgMjAuNyAyIDE5IDJNMTQgMTJIOFYxMEgxNFYxMk0xNSA4SDhWNkgxNVY4TTExLjQgMjJINUMzLjMgMjIgMiAyMC43IDIgMTlWMThIMTEuNEMxMS4xIDE4LjYgMTEgMTkuMyAxMSAyMFMxMS4xIDIxLjQgMTEuNCAyMk0xOC44IDE5QzE4LjQgMTcuOCAxNy4zIDE3IDE2IDE3QzE0LjMgMTcgMTMgMTguMyAxMyAyMFMxNC4zIDIzIDE2IDIzQzE3LjMgMjMgMTguNCAyMi4yIDE4LjggMjFIMjBWMjNIMjJWMjFIMjNWMTlIMTguOE0xNiAyMS4zQzE1LjMgMjEuMyAxNC43IDIwLjcgMTQuNyAyMFMxNS4zIDE4LjcgMTYgMTguN0MxNi43IDE4LjcgMTcuMyAxOS4zIDE3LjMgMjBTMTYuNyAyMS4zIDE2IDIxLjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyaXB0VGV4dEtleU91dGxpbmUgPSBcIk0xMS40IDIySDVDMy4zIDIyIDIgMjAuNyAyIDE5VjE4SDExLjRDMTEuMSAxOC42IDExIDE5LjMgMTEgMjBTMTEuMiAyMS40IDExLjQgMjJNMTkgMkg4QzYuMyAyIDUgMy4zIDUgNVYxNkg3VjVDNyA0LjQgNy40IDQgOCA0SDE2VjE1QzE2LjcgMTUgMTcuNCAxNS4yIDE4IDE1LjRWNUMxOCA0LjQgMTguNCA0IDE5IDRTMjAgNC40IDIwIDVWNkgyMlY1QzIyIDMuMyAyMC43IDIgMTkgMk05IDhIMTRWNkg5VjhNOSAxNkgxM0MxMy4zIDE1LjggMTMuNiAxNS42IDE0IDE1LjRWMTRIOVYxNk05IDEySDE0VjEwSDlWMTJNMjMgMTlWMjFIMjJWMjNIMjBWMjFIMTguOEMxOC40IDIyLjIgMTcuMyAyMyAxNiAyM0MxNC4zIDIzIDEzIDIxLjcgMTMgMjBTMTQuMyAxNyAxNiAxN0MxNy4zIDE3IDE4LjQgMTcuOCAxOC44IDE5SDIzTTE3LjMgMjBDMTcuMyAxOS4zIDE2LjcgMTguNyAxNiAxOC43UzE0LjcgMTkuMyAxNC43IDIwIDE1LjMgMjEuMyAxNiAyMS4zIDE3LjMgMjAuNyAxNy4zIDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmlwdFRleHRPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE2LDE5VjRIOEExLDEgMCAwLDAgNyw1VjE2SDVWNUEzLDMgMCAwLDEgOCwySDE5QTMsMyAwIDAsMSAyMiw1VjZIMjBWNUExLDEgMCAwLDAgMTksNEExLDEgMCAwLDAgMTgsNVY5TDE4LDE5QTMsMyAwIDAsMSAxNSwyMkg1QTMsMyAwIDAsMSAyLDE5VjE4SDEzQTIsMiAwIDAsMCAxNSwyME05LDZIMTRWOEg5VjZNOSwxMEgxNFYxMkg5VjEwTTksMTRIMTRWMTZIOVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3JpcHRUZXh0UGxheSA9IFwiTTEzLjggMjJINUMzLjMgMjIgMiAyMC43IDIgMTlWMThIMTMuMUMxMyAxOC4zIDEzIDE4LjcgMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEgMTMuOCAyMk0xMy44IDE2SDVWNUM1IDMuMyA2LjMgMiA4IDJIMTlDMjAuNyAyIDIyIDMuMyAyMiA1VjZIMjBWNUMyMCA0LjQgMTkuNiA0IDE5IDRTMTggNC40IDE4IDVWMTMuMUMxNi4yIDEzLjQgMTQuNyAxNC41IDEzLjggMTZNOCA4SDE1VjZIOFY4TTggMTJIMTRWMTBIOFYxMk0xNyAxNlYyMkwyMiAxOUwxNyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3JpcHRUZXh0UGxheU91dGxpbmUgPSBcIk05IDE0SDE0VjE1LjdDMTMuOSAxNS44IDEzLjkgMTUuOSAxMy44IDE2SDlWMTRNOSAxMkgxNFYxMEg5VjEyTTkgOEgxNFY2SDlWOE03IDVDNyA0LjQgNy40IDQgOCA0SDE2VjEzLjhDMTYuNiAxMy40IDE3LjMgMTMuMiAxOCAxMy4xVjVDMTggNC40IDE4LjQgNCAxOSA0UzIwIDQuNCAyMCA1VjZIMjJWNUMyMiAzLjMgMjAuNyAyIDE5IDJIOEM2LjMgMiA1IDMuMyA1IDVWMTZIN1Y1TTEzIDE5VjE4LjQgMThIMlYxOUMyIDIwLjcgMy4zIDIyIDUgMjJIMTMuOEMxMy4zIDIxLjEgMTMgMjAuMSAxMyAxOU0xNyAxNlYyMkwyMiAxOUwxNyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZCA9IFwiTTE4LDhIMTZWNEgxOE0xNSw4SDEzVjRIMTVNMTIsOEgxMFY0SDEyTTE4LDJIMTBMNCw4VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY0QTIsMiAwIDAsMCAxOCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYWwgPSBcIk0yMC4zOSwxOS4zN0wxNi4zOCwxOEwxNSwyMkwxMS45MiwxNkw5LDIyTDcuNjIsMThMMy42MSwxOS4zN0w2LjUzLDEzLjM3QzUuNTcsMTIuMTcgNSwxMC42NSA1LDlBNyw3IDAgMCwxIDEyLDJBNyw3IDAgMCwxIDE5LDlDMTksMTAuNjUgMTguNDMsMTIuMTcgMTcuNDcsMTMuMzdMMjAuMzksMTkuMzdNNyw5TDkuNjksMTAuMzRMOS41LDEzLjM0TDEyLDExLjY4TDE0LjUsMTMuMzNMMTQuMzMsMTAuMzRMMTcsOUwxNC4zMiw3LjY1TDE0LjUsNC42N0wxMiw2LjMxTDkuNSw0LjY1TDkuNjcsNy42Nkw3LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhbFZhcmlhbnQgPSBcIk0xNy43MSA2LjE1QzE3LjQ2IDUuMzggMTYuNzkgNS4yMSAxNi40NSA0Ljc3QzE2LjE0IDQuMzEgMTYuMTggMy42MiAxNS41MyAzLjE1UzE0LjIzIDIuOTIgMTMuNyAyLjc3IDEyLjgxIDIgMTIgMiAxMC44MiAyLjU4IDEwLjMgMi43NyA5LjEzIDIuNjcgOC40NyAzLjE1IDcuODYgNC4zMSA3LjU1IDQuNzdDNy4yMSA1LjIxIDYuNTUgNS4zOCA2LjI5IDYuMTVTNi41IDcuNDUgNi41IDggNiA5LjA4IDYuMjkgOS44NSA3LjIxIDEwLjc5IDcuNTUgMTEuMjNDNy44NiAxMS42OSA3LjgyIDEyLjM4IDguNDcgMTIuODVTOS43NyAxMy4wOCAxMC4zIDEzLjIzIDExLjE5IDE0IDEyIDE0IDEzLjE4IDEzLjQyIDEzLjcgMTMuMjMgMTQuODcgMTMuMzMgMTUuNTMgMTIuODUgMTYuMTQgMTEuNjkgMTYuNDUgMTEuMjNDMTYuNzkgMTAuNzkgMTcuNDUgMTAuNjIgMTcuNzEgOS44NVMxNy41IDguNTUgMTcuNSA4IDE4IDYuOTIgMTcuNzEgNi4xNU0xMiAxMkE0IDQgMCAxIDEgMTYgOEE0IDQgMCAwIDEgMTIgMTJNMTQgOEEyIDIgMCAxIDEgMTIgNkEyIDIgMCAwIDEgMTQgOE0xMy43MSAxNS41NkwxMy4wOCAxOS4xNkwxMi4zNSAyMy4yOUw5Ljc0IDIwLjhMNi40NCAyMi4yNUw3Ljc3IDE0Ljc1QTQgNCAwIDAgMCA5LjY2IDE1LjE3QTQuMTUgNC4xNSAwIDAgMCAxMSAxNS44NUEzLjMyIDMuMzIgMCAwIDAgMTIgMTZBMy41IDMuNSAwIDAgMCAxMy43MSAxNS41Nk0xNy45MiAxOC43OEwxNS4zNCAxNy44NkwxNS44NSAxNC45MkEzLjIgMy4yIDAgMCAwIDE2LjcgMTQuNDdMMTYuODIgMTQuMzdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhcmNoV2ViID0gXCJNMTUuNSwxNEwyMC41LDE5TDE5LDIwLjVMMTQsMTUuNVYxNC43MUwxMy43MywxNC40M0MxMi41OSwxNS40MSAxMS4xMSwxNiA5LjUsMTZBNi41LDYuNSAwIDAsMSAzLDkuNUE2LjUsNi41IDAgMCwxIDkuNSwzQTYuNSw2LjUgMCAwLDEgMTYsOS41QzE2LDExLjExIDE1LjQxLDEyLjU5IDE0LjQzLDEzLjczTDE0LjcxLDE0SDE1LjVNOS41LDQuNUw4Ljk1LDQuNTNDOC43MSw1LjA1IDguMzQsNS45MyA4LjA3LDdIMTAuOTNDMTAuNjYsNS45MyAxMC4yOSw1LjA1IDEwLjA1LDQuNTNDOS44Nyw0LjUgOS42OSw0LjUgOS41LDQuNU0xMy44Myw3QzEzLjI0LDUuOTcgMTIuMjksNS4xNyAxMS4xNSw0Ljc4QzExLjM5LDUuMzEgMTEuNyw2LjA4IDExLjkzLDdIMTMuODNNNS4xNyw3SDcuMDdDNy4zLDYuMDggNy42MSw1LjMxIDcuODUsNC43OEM2LjcxLDUuMTcgNS43Niw1Ljk3IDUuMTcsN000LjUsOS41QzQuNSwxMCA0LjU4LDEwLjUzIDQuNzMsMTFINi44N0w2Ljc1LDkuNUw2Ljg3LDhINC43M0M0LjU4LDguNDcgNC41LDkgNC41LDkuNU0xNC4yNywxMUMxNC40MiwxMC41MyAxNC41LDEwIDE0LjUsOS41QzE0LjUsOSAxNC40Miw4LjQ3IDE0LjI3LDhIMTIuMTNDMTIuMjEsOC41IDEyLjI1LDkgMTIuMjUsOS41QzEyLjI1LDEwIDEyLjIxLDEwLjUgMTIuMTMsMTFIMTQuMjdNNy44Nyw4TDcuNzUsOS41TDcuODcsMTFIMTEuMTNDMTEuMjEsMTAuNSAxMS4yNSwxMCAxMS4yNSw5LjVDMTEuMjUsOSAxMS4yMSw4LjUgMTEuMTMsOEg3Ljg3TTkuNSwxNC41QzkuNjgsMTQuNSA5Ljg2LDE0LjUgMTAuMDMsMTQuNDdDMTAuMjgsMTMuOTUgMTAuNjYsMTMuMDcgMTAuOTMsMTJIOC4wN0M4LjM0LDEzLjA3IDguNzIsMTMuOTUgOC45NywxNC40N0w5LjUsMTQuNU0xMy44MywxMkgxMS45M0MxMS43LDEyLjkyIDExLjM5LDEzLjY5IDExLjE1LDE0LjIyQzEyLjI5LDEzLjgzIDEzLjI0LDEzLjAzIDEzLjgzLDEyTTUuMTcsMTJDNS43NiwxMy4wMyA2LjcxLDEzLjgzIDcuODUsMTQuMjJDNy42MSwxMy42OSA3LjMsMTIuOTIgNy4wNywxMkg1LjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYXQgPSBcIk00LDE4VjIxSDdWMThIMTdWMjFIMjBWMTVINFYxOE0xOSwxMEgyMlYxM0gxOVYxME0yLDEwSDVWMTNIMlYxME0xNywxM0g3VjVBMiwyIDAgMCwxIDksM0gxNUEyLDIgMCAwLDEgMTcsNVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZWF0RmxhdCA9IFwiTTIyLDExVjEzSDlWN0gxOEE0LDQgMCAwLDEgMjIsMTFNMiwxNFYxNkg4VjE4SDE2VjE2SDIyVjE0TTcuMTQsMTIuMUM4LjMsMTAuOTEgOC4yOCw5IDcuMSw3Ljg2QzUuOTEsNi43IDQsNi43MiAyLjg2LDcuOUMxLjcsOS4wOSAxLjcyLDExIDIuOSwxMi4xNEM0LjA5LDEzLjMgNiwxMy4yOCA3LjE0LDEyLjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdEZsYXRBbmdsZWQgPSBcIk0yMi4yNSwxNC4yOUwyMS41NiwxNi4xOEw5LjIsMTEuNzFMMTEuMjgsNi4wNUwxOS44NCw5LjE0QzIxLjk0LDkuOSAyMywxMi4yIDIyLjI1LDE0LjI5TTEuNSwxMi4xNEw4LDE0LjVWMTlIMTZWMTcuMzdMMjAuNSwxOUwyMS4yMSwxNy4xMUwyLjE5LDEwLjI1TTcuMywxMC4yQzguNzksOS41IDkuNDIsNy42OSA4LjcxLDYuMkM4LDQuNzEgNi4yLDQuMDggNC43LDQuOEMzLjIxLDUuNSAyLjU4LDcuMyAzLjMsOC44QzQsMTAuMjkgNS44LDEwLjkyIDcuMywxMC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYXRJbmRpdmlkdWFsU3VpdGUgPSBcIk03LDEzQTMsMyAwIDAsMCAxMCwxMEEzLDMgMCAwLDAgNyw3QTMsMyAwIDAsMCA0LDEwQTMsMyAwIDAsMCA3LDEzTTE5LDdIMTFWMTRIM1Y3SDFWMTdIMjNWMTFBNCw0IDAgMCwwIDE5LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdExlZ3Jvb21FeHRyYSA9IFwiTTQsMTJWM0gyVjEyQTUsNSAwIDAsMCA3LDE3SDEzVjE1SDdBMywzIDAgMCwxIDQsMTJNMjIuODMsMTcuMjRDMjIuNDUsMTYuNSAyMS41NCwxNi4yNyAyMC44LDE2LjYxTDE5LjcxLDE3LjExTDE2LjMsMTAuMTNDMTUuOTYsOS40NSAxNS4yNyw5IDE0LjUsOUgxMVYzSDVWMTFBMywzIDAgMCwwIDgsMTRIMTVMMTguNDEsMjFMMjIuMTMsMTkuM0MyMi45LDE4Ljk0IDIzLjIzLDE4IDIyLjgzLDE3LjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYXRMZWdyb29tTm9ybWFsID0gXCJNNSwxMlYzSDNWMTJBNSw1IDAgMCwwIDgsMTdIMTRWMTVIOEEzLDMgMCAwLDEgNSwxMk0yMC41LDE4SDE5VjExQTIsMiAwIDAsMCAxNyw5SDEyVjNINlYxMUEzLDMgMCAwLDAgOSwxNEgxNlYyMUgyMC41QTEuNSwxLjUgMCAwLDAgMjIsMTkuNUExLjUsMS41IDAgMCwwIDIwLjUsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdExlZ3Jvb21SZWR1Y2VkID0gXCJNMTkuOTcsMTkuMkMyMC4xNSwyMC4xNiAxOS40MiwyMSAxOC41LDIxSDE0VjE4TDE1LDE0SDlBMywzIDAgMCwxIDYsMTFWM0gxMlY5SDE3QTIsMiAwIDAsMSAxOSwxMUwxNywxOEgxOC40NEMxOS4xNywxOCAxOS44MywxOC41IDE5Ljk3LDE5LjJNNSwxMlYzSDNWMTJBNSw1IDAgMCwwIDgsMTdIMTJWMTVIOEEzLDMgMCAwLDEgNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWF0T3V0bGluZSA9IFwiTTE1LDVWMTJIOVY1SDE1TTE1LDNIOUEyLDIgMCAwLDAgNyw1VjE0SDE3VjVBMiwyIDAgMCwwIDE1LDNNMjIsMTBIMTlWMTNIMjJWMTBNNSwxMEgyVjEzSDVWMTBNMjAsMTVINFYyMUg2VjE3SDE4VjIxSDIwVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYXRQYXNzZW5nZXIgPSBcIk05IDE5SDE1VjIxSDlDNi4yNCAyMSA0IDE4Ljc2IDQgMTZWN0g2VjE2QzYgMTcuNjYgNy4zNCAxOSA5IDE5TTEwLjQyIDUuNDFDMTEuMiA0LjYzIDExLjIgMy4zNiAxMC40MiAyLjU4QzkuNjQgMS44IDguMzcgMS44IDcuNTkgMi41OEM2LjgxIDMuMzYgNi44MSA0LjYzIDcuNTkgNS40MUM4LjM3IDYuMiA5LjYzIDYuMiAxMC40MiA1LjQxTTExLjUgOUMxMS41IDcuOSAxMC42IDcgOS41IDdIOUM3LjkgNyA3IDcuOSA3IDlWMTVDNyAxNi42NiA4LjM0IDE4IDEwIDE4SDE1LjA3TDE4LjU3IDIxLjVMMjAgMjAuMDdMMTQuOTMgMTVIMTEuNUwxMS41IDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdFJlY2xpbmVFeHRyYSA9IFwiTTUuMzUsNS42NEM0LjQ1LDUgNC4yMywzLjc2IDQuODYsMi44NUM1LjUsMS45NSA2Ljc0LDEuNzMgNy42NSwyLjM2QzguNTUsMyA4Ljc3LDQuMjQgOC4xNCw1LjE1QzcuNSw2LjA1IDYuMjYsNi4yNyA1LjM1LDUuNjRNMTYsMTlIOC45M0M3LjQ1LDE5IDYuMTksMTcuOTIgNS45NywxNi40Nkw0LDdIMkw0LDE2Ljc2QzQuMzcsMTkuMiA2LjQ3LDIxIDguOTQsMjFIMTZNMTYuMjMsMTVIMTEuMzVMMTAuMzIsMTAuOUMxMS45LDExLjc5IDEzLjYsMTIuNDQgMTUuNDcsMTIuMTJWMTBDMTMuODQsMTAuMyAxMi4wMyw5LjcyIDEwLjc4LDguNzRMOS4xNCw3LjQ3QzguOTEsNy4yOSA4LjY1LDcuMTcgOC4zOCw3LjA5QzguMDYsNyA3LjcyLDYuOTcgNy4zOSw3LjAzSDcuMzdDNi4xNCw3LjI1IDUuMzIsOC40MiA1LjUzLDkuNjRMNi44OCwxNS41NkM3LjE2LDE3IDguMzksMTggOS44MywxOEgxNi42OEwyMC41LDIxTDIyLDE5LjVcIjtcclxuZXhwb3J0IHZhciBtZGlTZWF0UmVjbGluZU5vcm1hbCA9IFwiTTcuNTksNS40MUM2LjgxLDQuNjMgNi44MSwzLjM2IDcuNTksMi41OEM4LjM3LDEuOCA5LjY0LDEuOCAxMC40MiwyLjU4QzExLjIsMy4zNiAxMS4yLDQuNjMgMTAuNDIsNS40MUM5LjYzLDYuMiA4LjM3LDYuMiA3LjU5LDUuNDFNNiwxNlY3SDRWMTZBNSw1IDAgMCwwIDksMjFIMTVWMTlIOUEzLDMgMCAwLDEgNiwxNk0yMCwyMC4wN0wxNC45MywxNUgxMS41VjExLjMyQzEyLjksMTIuNDcgMTUuMSwxMy41IDE3LDEzLjVWMTEuMzJDMTUuMzQsMTEuMzQgMTMuMzksMTAuNDUgMTIuMzMsOS4yOEwxMC45Myw3LjczQzEwLjc0LDcuNSAxMC41LDcuMzUgMTAuMjQsNy4yM0M5Ljk1LDcuMDkgOS42Miw3IDkuMjgsN0g5LjI1QzgsNyA3LDggNyw5LjI1VjE1QTMsMyAwIDAsMCAxMCwxOEgxNS4wN0wxOC41NywyMS41XCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdGJlbHQgPSBcIk0xMiwyQzEzLjExLDIgMTQsMi45IDE0LDRDMTQsNS4xMSAxMy4xMSw2IDEyLDZBMiwyIDAgMCwxIDEwLDRBMiwyIDAgMCwxIDEyLDJNMTIuMzksMTQuNzlDMTQuMDMsMTQuNzkgMTUuNDYsMTQuODkgMTYuNjQsMTUuMDRDMTYuNywxMi4zMiAxNi40Niw5LjkyIDE2LDlDMTUuODcsOC43MyAxNS42OSw4LjUgMTUuNSw4LjNMNy40MywxNS4yMkM4Ljc5LDE1IDEwLjUsMTQuNzkgMTIuMzksMTQuNzlNNy40NiwxN0M3LjU5LDE4Ljc0IDcuODUsMjAuNSA4LjI3LDIySDEwLjM0QzEwLjA1LDIxLjEyIDkuODQsMjAuMDkgOS42OCwxOUM5LjY4LDE5IDEyLDE4LjU2IDE0LjMyLDE5QzE0LjE2LDIwLjA5IDEzLjk1LDIxLjEyIDEzLjY2LDIySDE1LjczQzE2LjE3LDIwLjQ1IDE2LjQzLDE4LjYxIDE2LjU2LDE2Ljc5QzE1LjQxLDE2LjY1IDE0LDE2LjU0IDEyLjM5LDE2LjU0QzEwLjQ2LDE2LjU0IDguNzgsMTYuNzUgNy40NiwxN00xMiw3QzEyLDcgOSw3IDgsOUM3LjY2LDkuNjggNy40NCwxMS4xNSA3LjM3LDEyLjk2TDEzLjkyLDcuMzRDMTIuOTMsNyAxMiw3IDEyLDdNMTguNTcsNS42N0wxNy40Myw0LjM0TDEzLjkyLDcuMzVDMTQuNDcsNy41NCAxNS4wNSw3Ljg0IDE1LjUsOC4zTDE4LjU3LDUuNjdNMjAuNjcsMTUuODNDMjAuNTgsMTUuOCAxOS4xNCwxNS4zMyAxNi42NCwxNS4wNEMxNi42MywxNS42MSAxNi42LDE2LjIgMTYuNTYsMTYuNzlDMTguODEsMTcuMDcgMjAuMSwxNy41IDIwLjEyLDE3LjVMMjAuNjcsMTUuODNNNy4zNywxMi45NkwzLjQzLDE2LjM0TDQuMzIsMTcuODJDNC4zNCwxNy44MSA1LjUsMTcuMzYgNy40NiwxN0M3LjM1LDE1LjU5IDcuMzIsMTQuMiA3LjM3LDEyLjk2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlY3VyaXR5ID0gXCJNMTIsMTJIMTlDMTguNDcsMTYuMTEgMTUuNzIsMTkuNzggMTIsMjAuOTJWMTJINVY2LjNMMTIsMy4xOU0xMiwxTDMsNVYxMUMzLDE2LjU1IDYuODQsMjEuNzMgMTIsMjNDMTcuMTYsMjEuNzMgMjEsMTYuNTUgMjEsMTFWNUwxMiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlY3VyaXR5TmV0d29yayA9IFwiTTEzLDE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMlYyMkgxNUExLDEgMCAwLDEgMTQsMjNIMTBBMSwxIDAgMCwxIDksMjJIMlYyMEg5QTEsMSAwIDAsMSAxMCwxOUgxMVYxNy4zNEM4LjA3LDE2LjEzIDYsMTMgNiw5LjY3VjUuNjdMMTIsM0wxOCw1LjY3VjkuNjdDMTgsMTMgMTUuOTMsMTYuMTMgMTMsMTcuMzRWMTlNMTIsNUw4LDYuNjlWMTBIMTJWNU0xMiwxMFYxNkMxMy45MSwxNS41MyAxNiwxMy4wNiAxNiwxMVYxMEgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWVkID0gXCJNMjAuNywzLjNDMjAuNywzLjMgMTkuMywzIDE3LjIsM0MxMS43LDMgMS42LDUuMSAzLjIsMjAuOEM0LjMsMjAuOSA1LjQsMjEgNi40LDIxQzI0LjMsMjEgMjAuNywzLjMgMjAuNywzLjNNNywxN0M3LDE3IDcsNyAxNyw3QzE3LDcgMTEsOSA3LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlZWRPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w1LjkgNy44QzMuOCAxMC41IDIuNiAxNC42IDMuMiAyMC44QzQuMyAyMC45IDUuNCAyMSA2LjQgMjFDMTAuOSAyMSAxNC4xIDE5LjkgMTYuMyAxOC4yTDIwLjkgMjIuOEwyMi4xIDIxLjVNNyAxN0M3IDE3IDcgMTMuNyA4LjkgMTAuOEwxMC4yIDEyLjFDOS4xIDEzLjQgOCAxNSA3IDE3TTExLjYgOC40TDguNSA1LjNDMTEuMyAzLjQgMTQuNyAzIDE3LjIgM0MxOS4zIDMgMjAuNyAzLjMgMjAuNyAzLjNTMjIuMSAxMC4zIDE4LjcgMTUuNUwxMi44IDkuNkMxNS4xIDcuNiAxNyA3IDE3IDdDMTQuNyA3IDEyLjkgNy41IDExLjYgOC40WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlZWRPZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNS45IDcuOEMzLjggMTAuNSAyLjYgMTQuNiAzLjIgMjAuOEM0LjMgMjAuOSA1LjQgMjEgNi40IDIxQzEwLjkgMjEgMTQuMSAxOS45IDE2LjMgMTguMkwyMC45IDIyLjhMMjIuMSAyMS41TTYuNCAxOUg1LjFDNC45IDE0LjggNS42IDExLjUgNy4zIDkuMkw4LjkgMTAuOEM3IDEzLjcgNyAxNyA3IDE3QzggMTUgOS4xIDEzLjQgMTAuMiAxMi4xTDE0LjggMTYuN0MxMi44IDE4LjIgMTAgMTkgNi40IDE5TTEwIDYuOEw4LjUgNS4zQzExLjMgMy40IDE0LjcgMyAxNy4yIDNDMTkuMyAzIDIwLjcgMy4zIDIwLjcgMy4zUzIyLjEgMTAuMyAxOC43IDE1LjVMMTcuMiAxNEMxOS4xIDEwLjkgMTkgNy4xIDE4LjkgNS4xQzE4LjQgNSAxNy44IDUgMTcuMiA1QzE1LjEgNSAxMi4zIDUuMyAxMCA2LjhNMTIuOCA5LjZMMTEuNiA4LjRDMTIuOSA3LjUgMTQuNyA3IDE3IDdDMTcgNyAxNS4xIDcuNiAxMi44IDkuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWVkT3V0bGluZSA9IFwiTTE3LjIsNVY1QzE3LjgsNSAxOC40LDUgMTguOSw1LjFDMTkuMSw3LjQgMTkuMSwxMiAxNi40LDE1LjJDMTQuNCwxNy43IDExLDE5IDYuNCwxOUM2LDE5IDUuNSwxOSA1LjEsMTlDNC45LDE0LjQgNS44LDEwLjggNy45LDguNUMxMC40LDUuNiAxNC40LDUgMTcuMiw1TTE3LjIsM0MxMS43LDMgMS42LDUuMSAzLjIsMjAuOEM0LjMsMjAuOSA1LjQsMjEgNi40LDIxQzI0LjMsMjEgMjAuNywzLjMgMjAuNywzLjNDMjAuNywzLjMgMTkuMywzIDE3LjIsM00xNyw3QzcsNyA3LDE3IDcsMTdDMTEsOSAxNyw3IDE3LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2Vlc2F3ID0gXCJNMjEuNjggMTMuMjZMMjIuMDQgMTUuMjNMMi4zNSAxOC43N0wyIDE2LjhMNC45NSAxNi4yN0w0LjYgMTQuM0M0LjUgMTMuNzYgNC44NiAxMy4yNCA1LjQxIDEzLjE0QzUuOTUgMTMuMDQgNi40NyAxMy40IDYuNTcgMTMuOTVMNi45MiAxNS45MUwxNi43NiAxNC4xNUwxNi40MSAxMi4xOEMxNi4zMSAxMS42MyAxNi42NyAxMS4xMSAxNy4yMiAxMUMxNy43NiAxMC45MiAxOC4yOCAxMS4yOCAxOC4zOCAxMS44MkwxOC43MyAxMy43OUwyMS42OCAxMy4yNk0xMC4wNiAxOC40TDggMjJIMTZMMTMuNTggMTcuNzdMMTAuMDYgMTguNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWdtZW50ID0gXCJNMjEsOEgzVjZIMjFNOSwxM0gyMVYxMUg5TTksMThIMjFWMTZIOVwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdCA9IFwiTTQsM0g1VjVIM1Y0QTEsMSAwIDAsMSA0LDNNMjAsM0ExLDEgMCAwLDEgMjEsNFY1SDE5VjNIMjBNMTUsNVYzSDE3VjVIMTVNMTEsNVYzSDEzVjVIMTFNNyw1VjNIOVY1SDdNMjEsMjBBMSwxIDAgMCwxIDIwLDIxSDE5VjE5SDIxVjIwTTE1LDIxVjE5SDE3VjIxSDE1TTExLDIxVjE5SDEzVjIxSDExTTcsMjFWMTlIOVYyMUg3TTQsMjFBMSwxIDAgMCwxIDMsMjBWMTlINVYyMUg0TTMsMTVINVYxN0gzVjE1TTIxLDE1VjE3SDE5VjE1SDIxTTMsMTFINVYxM0gzVjExTTIxLDExVjEzSDE5VjExSDIxTTMsN0g1VjlIM1Y3TTIxLDdWOUgxOVY3SDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdEFsbCA9IFwiTTksOUgxNVYxNUg5TTcsMTdIMTdWN0g3TTE1LDVIMTdWM0gxNU0xNSwyMUgxN1YxOUgxNU0xOSwxN0gyMVYxNUgxOU0xOSw5SDIxVjdIMTlNMTksMjFBMiwyIDAgMCwwIDIxLDE5SDE5TTE5LDEzSDIxVjExSDE5TTExLDIxSDEzVjE5SDExTTksM0g3VjVIOU0zLDE3SDVWMTVIM001LDIxVjE5SDNBMiwyIDAgMCwwIDUsMjFNMTksM1Y1SDIxQTIsMiAwIDAsMCAxOSwzTTEzLDNIMTFWNUgxM00zLDlINVY3SDNNNywyMUg5VjE5SDdNMywxM0g1VjExSDNNMyw1SDVWM0EyLDIgMCAwLDAgMyw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdENvbG9yID0gXCJNMy44OCwzQzMuMzgsMy4wNiAzLDMuNSAzLDRWNEwzLDVINEw1LDVWNEw1LDNINEwzLjg4LDNNNywzVjVIOVYzSDdNMTEsM1Y1SDEzVjNIMTFNMTUsM1Y1SDE3VjNIMTVNMTksM1Y0TDE5LDVIMjBMMjEsNVY0TDIxLDMuODhDMjAuOTQsMy4zOCAyMC41LDMgMjAsM0gxOU0zLDdWOUg1VjdIM00xOSw3VjlIMjFWN0gxOU0zLDExVjEzSDVWMTFIM00xOS4zMSwxMkMxOS4xOCwxMiAxOS4wNSwxMi4wNSAxOC45NSwxMi4xNEwxNy4zOSwxMy43MUwxNi40MywxMi43NUwxNS43MiwxMy40NkwxNi40MywxNC4xN0wxMS45NywxOC42M1YyMUgxNC4zNUwxOC44LDE2LjU0TDE5LjUsMTcuMjVMMjAuMjIsMTYuNTRMMTkuMjYsMTUuNThMMjAuODIsMTQuMDNDMjEsMTMuODMgMjEsMTMuNSAyMC44MiwxMy4zMUwxOS42NSwxMi4xNEMxOS41NiwxMi4wNSAxOS40NCwxMiAxOS4zMSwxMk0zLDE1VjE3SDVWMTVIM00xNywxNUwxNy45NywxNS45N0wxMy45MywyMEwxMi45NywxOS4wNEwxNywxNU0zLDE5VjIwTDMsMjAuMTJDMy4wNiwyMC42MiAzLjUsMjEgNCwyMVYyMUg1VjIwTDUsMTlINEwzLDE5TTcsMTlWMjFIOVYxOUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdENvbXBhcmUgPSBcIk0xMywyM0gxMVYxSDEzVjIzTTksMTlINVY1SDlWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QzMsMjAuMTEgMy45LDIxIDUsMjFIOVYxOU0xOSw3VjlIMjFWN0gxOU0xOSw1SDIxQzIxLDMuODkgMjAuMSwzIDE5LDNWNU0yMSwxNUgxOVYxN0gyMVYxNU0xOSwxMVYxM0gyMVYxMUgxOU0xNywzSDE1VjVIMTdWM00xOSwyMUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOUgxOVYyMU0xNywxOUgxNVYyMUgxN1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWxlY3REcmFnID0gXCJNMTMsMTdIMTdWMTNIMTlWMTdIMjNWMTlIMTlWMjNIMTdWMTlIMTNWMTdNMTEsMTdWMTlIOVYxN0gxMU03LDE3VjE5SDVWMTdIN00xOSw5VjExSDE3VjlIMTlNMTksNVY3SDE3VjVIMTlNMTUsNVY3SDEzVjVIMTVNMTEsNVY3SDlWNUgxMU03LDVWN0g1VjVIN003LDEzVjE1SDVWMTNIN003LDlWMTFINVY5SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0R3JvdXAgPSBcIk01IDNBMiAyIDAgMCAwIDMgNUg1TTcgM1Y1SDlWM00xMSAzVjVIMTNWM00xNSAzVjVIMTdWM00xOSAzVjVIMjFBMiAyIDAgMCAwIDE5IDNNMyA3VjlINVY3TTcgN1YxMUgxMVY3TTEzIDdWMTFIMTdWN00xOSA3VjlIMjFWN00zIDExVjEzSDVWMTFNMTkgMTFWMTNIMjFWMTFNNyAxM1YxN0gxMVYxM00xMyAxM1YxN0gxN1YxM00zIDE1VjE3SDVWMTVNMTkgMTVWMTdIMjFWMTVNMyAxOUEyIDIgMCAwIDAgNSAyMVYxOU03IDE5VjIxSDlWMTlNMTEgMTlWMjFIMTNWMTlNMTUgMTlWMjFIMTdWMTlNMTkgMTlWMjFBMiAyIDAgMCAwIDIxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdEludmVyc2UgPSBcIk01LDNIN1Y1SDlWM0gxMVY1SDEzVjNIMTVWNUgxN1YzSDE5VjVIMjFWN0gxOVY5SDIxVjExSDE5VjEzSDIxVjE1SDE5VjE3SDIxVjE5SDE5VjIxSDE3VjE5SDE1VjIxSDEzVjE5SDExVjIxSDlWMTlIN1YyMUg1VjE5SDNWMTdINVYxNUgzVjEzSDVWMTFIM1Y5SDVWN0gzVjVINVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdE1hcmtlciA9IFwiTTQgM0g1VjVIM1Y0QzMgMy40NSAzLjQ1IDMgNCAzTTIwIDNDMjAuNTUgMyAyMSAzLjQ1IDIxIDRWNUgxOVYzSDIwTTE1IDVWM0gxN1Y1SDE1TTExIDVWM0gxM1Y1SDExTTcgNVYzSDlWNUg3TTExIDIxVjE5SDEzVjIxSDExTTcgMjFWMTlIOVYyMUg3TTQgMjFDMy40NSAyMSAzIDIwLjU1IDMgMjBWMTlINVYyMUg0TTMgMTVINVYxN0gzVjE1TTMgMTFINVYxM0gzVjExTTMgN0g1VjlIM1Y3TTIxIDdWOUgxOVY3SDIxTTE5LjUgMTNDMjEuNCAxMyAyMyAxNC42IDIzIDE2LjVDMjMgMTkuMSAxOS41IDIzIDE5LjUgMjNDMTkuNSAyMyAxNiAxOS4xIDE2IDE2LjVDMTYgMTQuNiAxNy42IDEzIDE5LjUgMTNNMTkuNSAxNy44QzIwLjIgMTcuOCAyMC44IDE3LjIgMjAuNyAxNi42QzIwLjcgMTYgMjAuMSAxNS40IDE5LjUgMTUuNEMxOC45IDE1LjQgMTguMyAxNS45IDE4LjMgMTYuNkMxOC4zIDE3LjIgMTguOCAxNy44IDE5LjUgMTcuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWxlY3RNdWx0aXBsZSA9IFwiTTE4IDEySDIwVjE0SDE4VjEyTTE0IDE2SDE2VjE4SDE0VjE2TTIwIDE3QzIwIDE3LjU1IDE5LjU1IDE4IDE5IDE4SDE4VjE2SDIwVjE3TTcgNEg4VjZINlY1QzYgNC40NSA2LjQ1IDQgNyA0TTE5IDRDMTkuNTUgNCAyMCA0LjQ1IDIwIDVWNkgxOFY0SDE5TTE0IDZWNEgxNlY2SDE0TTEwIDZWNEgxMlY2SDEwTTEwIDE4VjE2SDEyVjE4SDEwTTcgMThDNi40NSAxOCA2IDE3LjU1IDYgMTdWMTZIOFYxOEg3TTYgMTJIOFYxNEg2VjEyTTYgOEg4VjEwSDZWOE0yMCA4VjEwSDE4VjhIMjBNMyA4SDRWMjBIMTZWMjFDMTYgMjEuNTQgMTUuNTcgMjIgMTUuMDMgMjJIMTVMMyAyMkMyLjQ1IDIyIDIgMjEuNTUgMiAyMVY5QzIgOC40NSAyLjQ1IDggMyA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdE11bHRpcGxlTWFya2VyID0gXCJNNyA0SDhWNkg2VjVDNiA0LjQ1IDYuNDUgNCA3IDRNMTkgNEMxOS41NSA0IDIwIDQuNDUgMjAgNVY2SDE4VjRIMTlNMTQgNlY0SDE2VjZIMTRNMTAgNlY0SDEyVjZIMTBNMTAgMThWMTZIMTJWMThIMTBNNyAxOEM2LjQ1IDE4IDYgMTcuNTUgNiAxN1YxNkg4VjE4SDdNNiAxMkg4VjE0SDZWMTJNNiA4SDhWMTBINlY4TTIwIDhWMTBIMThWOEgyME0zIDhINFYyMEgxNC41OEwxNi4wMyAyMkwzIDIyQzIuNDUgMjIgMiAyMS41NSAyIDIxVjlDMiA4LjQ1IDIuNDUgOCAzIDhNMTguNSAxMkMyMC40IDEyIDIyIDEzLjYgMjIgMTUuNUMyMiAxOC4xIDE4LjUgMjIgMTguNSAyMkMxOC41IDIyIDE1IDE4LjEgMTUgMTUuNUMxNSAxMy42IDE2LjYgMTIgMTguNSAxMk0xOC41IDE2LjhDMTkuMiAxNi44IDE5LjggMTYuMiAxOS43IDE1LjZDMTkuNyAxNSAxOS4xIDE0LjQgMTguNSAxNC40QzE3LjkgMTQuNCAxNy4zIDE0LjkgMTcuMyAxNS42QzE3LjMgMTYuMiAxNy44IDE2LjggMTguNSAxNi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdE9mZiA9IFwiTTEsNC4yN0wyLjI4LDNMMjEsMjEuNzJMMTkuNzMsMjNMMTcsMjAuMjdWMjFIMTVWMTlIMTUuNzNMNSw4LjI3VjlIM1Y3SDMuNzNMMSw0LjI3TTIwLDNBMSwxIDAgMCwxIDIxLDRWNUgxOVYzSDIwTTE1LDVWM0gxN1Y1SDE1TTExLDVWM0gxM1Y1SDExTTcsNVYzSDlWNUg3TTExLDIxVjE5SDEzVjIxSDExTTcsMjFWMTlIOVYyMUg3TTQsMjFBMSwxIDAgMCwxIDMsMjBWMTlINVYyMUg0TTMsMTVINVYxN0gzVjE1TTIxLDE1VjE3SDE5VjE1SDIxTTMsMTFINVYxM0gzVjExTTIxLDExVjEzSDE5VjExSDIxTTIxLDdWOUgxOVY3SDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdFBsYWNlID0gXCJNNCAzSDVWNUgzVjRDMyAzLjUgMy41IDMgNCAzTTIwIDNDMjAuNSAzIDIxIDMuNSAyMSA0VjVIMTlWM0gyME0xNSA1VjNIMTdWNUgxNU0xMSA1VjNIMTNWNUgxMU03IDVWM0g5VjVIN00yMSAxMkMyMSAxMi41IDIwLjUgMTMgMjAgMTNIMTlWMTFIMjFWMTJNMTUgMTNWMTFIMTdWMTNIMTVNMTEgMTNWMTFIMTNWMTNIMTFNNyAxM1YxMUg5VjEzSDdNNCAxM0MzLjUgMTMgMyAxMi41IDMgMTJWMTFINVYxM0g0TTMgN0g1VjlIM1Y3TTIxIDdWOUgxOVY3SDIxTTcgMTZMMTIgMjFMMTcgMTZIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZWxlY3RTZWFyY2ggPSBcIk0xOS4zMSAxOC45QzE5Ljc1IDE4LjIxIDIwIDE3LjM4IDIwIDE2LjVDMjAgMTQgMTggMTIgMTUuNSAxMlMxMSAxNCAxMSAxNi41IDEzIDIxIDE1LjUgMjFDMTYuMzcgMjEgMTcuMTkgMjAuNzUgMTcuODggMjAuMzJMMjEgMjMuMzlMMjIuMzkgMjJMMTkuMzEgMTguOU0xNS41IDE5QzE0LjEyIDE5IDEzIDE3Ljg4IDEzIDE2LjVTMTQuMTIgMTQgMTUuNSAxNCAxOCAxNS4xMiAxOCAxNi41IDE2Ljg4IDE5IDE1LjUgMTlNMjEgOUgxOVY3SDIxVjlNMjEgNUgxOVYzSDIwQzIwLjU1IDMgMjEgMy40NSAyMSA0VjVNMTkgMTEuMDNWMTFIMjFWMTNIMjAuOTdDMjAuNDYgMTIuMjEgMTkuNzkgMTEuNTQgMTkgMTEuMDNNMTcgNUgxNVYzSDE3VjVNMTMgNUgxMVYzSDEzVjVNMyA3SDVWOUgzVjdNNyAxOUg5VjIxSDdWMTlNMyAxMUg1VjEzSDNWMTFNNCAzSDVWNUgzVjRDMyAzLjQ1IDMuNDUgMyA0IDNNOSA1SDdWM0g5VjVNMyAxOUg1VjIxSDRDMy40NSAyMSAzIDIwLjU1IDMgMjBWMTlNMyAxNUg1VjE3SDNWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0aW9uID0gXCJNMiw0QzIsMi44OSAyLjksMiA0LDJIN1Y0SDRWN0gyVjRNMjIsNFY3SDIwVjRIMTdWMkgyMEEyLDIgMCAwLDEgMjIsNE0yMCwyMFYxN0gyMlYyMEMyMiwyMS4xMSAyMS4xLDIyIDIwLDIySDE3VjIwSDIwTTIsMjBWMTdINFYyMEg3VjIySDRBMiwyIDAgMCwxIDIsMjBNMTAsMkgxNFY0SDEwVjJNMTAsMjBIMTRWMjJIMTBWMjBNMjAsMTBIMjJWMTRIMjBWMTBNMiwxMEg0VjE0SDJWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0aW9uRHJhZyA9IFwiTTE0LDE3SDE3VjE0SDE5VjE3SDIyVjE5SDE5VjIySDE3VjE5SDE0VjE3TTEyLDE3VjE5SDlWMTdIMTJNNywxN1YxOUgzVjE1SDVWMTdIN00zLDEzVjEwSDVWMTNIM00zLDhWNEg3VjZINVY4SDNNOSw0SDEyVjZIOVY0TTE1LDRIMTlWOEgxN1Y2SDE1VjRNMTksMTBWMTJIMTdWMTBIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0aW9uRWxsaXBzZSA9IFwiTTYuMzUsMjAuMjVMNy41NiwxOC42NkM4LjQyLDE5LjIzIDkuMzksMTkuNjQgMTAuNDMsMTkuODVMMTAuMTYsMjEuODNDOC43NywyMS41NyA3LjUsMjEgNi4zNSwyMC4yNU0xNi40MywxOC42NkwxNy42NCwyMC4yNkMxNi41LDIxLjAzIDE1LjIzLDIxLjU3IDEzLjg0LDIxLjgzTDEzLjU3LDE5Ljg1QzE0LjYxLDE5LjY0IDE1LjU3LDE5LjIzIDE2LjQzLDE4LjY2TTE5Ljg0LDEzLjU5TDIxLjgzLDEzLjg2QzIxLjU3LDE1LjI1IDIxLDE2LjU0IDIwLjI0LDE3LjY2TDE4LjY1LDE2LjQ1QzE5LjIyLDE1LjYgMTkuNjMsMTQuNjMgMTkuODQsMTMuNTlNMi4xNywxMy44NEw0LjE1LDEzLjU3QzQuMzYsMTQuNjEgNC43NywxNS41OCA1LjM0LDE2LjQ0TDMuNzUsMTcuNjVDMywxNi41IDIuNDMsMTUuMjMgMi4xNywxMy44NE0xOC42Niw3LjU2TDIwLjI1LDYuMzVDMjEuMDMsNy41IDIxLjU4LDguNzggMjEuODMsMTAuMThMMTkuODUsMTAuNDVDMTkuNjQsOS40IDE5LjIzLDguNDIgMTguNjYsNy41Nk0xMy41Nyw0LjE1TDEzLjg0LDIuMTdDMTUuMjMsMi40MyAxNi41LDMgMTcuNjUsMy43NUwxNi40NCw1LjM0QzE1LjU4LDQuNzcgMTQuNjEsNC4zNiAxMy41Nyw0LjE1TTcuNTYsNS4zNEw2LjM1LDMuNzVDNy41LDMgOC43NywyLjQzIDEwLjE2LDIuMTdMMTAuNDMsNC4xNUM5LjM5LDQuMzYgOC40Miw0Ljc3IDcuNTYsNS4zNE00LjE1LDEwLjQzTDIuMTcsMTAuMTZDMi40Myw4Ljc3IDMsNy41IDMuNzUsNi4zNUw1LjM0LDcuNTZDNC43Nyw4LjQyIDQuMzYsOS4zOSA0LjE1LDEwLjQzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdGlvbkVsbGlwc2VBcnJvd0luc2lkZSA9IFwiTTExLjIgNEM5Ljk0IDQuMTIgOC43MiA0LjUzIDcuNjQgNS4yTDYuNjQgMy40N0M3Ljk1IDIuNjQgOS40NSAyLjEzIDExIDJNMTcuNTMgNi4yNUMxNi42MiA1LjM5IDE1LjUzIDQuNzMgMTQuMzQgNC4zM0wxNSAyLjM5QzE2LjUgMi44NCAxNy44OSAzLjY2IDE5IDQuNzhNNS4zNCA3LjQxQzQuNjQgOC40NCA0LjE5IDkuNiA0IDEwLjgzTDIgMTAuNTVDMi4yIDkgMi43OSA3LjUgMy43IDYuMjNNMjIgMTJWMTIuNjZMMjAgMTIuNVYxMkMyMCAxMC45MiAxOS44MSA5Ljg2IDE5LjM5IDguODZMMjEuMjIgOC4wNkMyMS43NSA5LjMxIDIyIDEwLjY1IDIyIDEyTTYgMTcuM0w0LjUgMTguNjFDMy40NyAxNy40MyAyLjcyIDE2LjA0IDIuMyAxNC41M0w0LjE3IDE0QzQuNTMgMTUuMjIgNS4xNiAxNi4zNSA2IDE3LjNNMTIuMTQgMjJIMTJDMTAuNSAyMiA5IDIxLjY4IDcuNjQgMjEuMDdMOC41MyAxOS4yNEM5LjYyIDE5Ljc1IDEwLjggMjAgMTIgMjBIMTIuMTlNMTcgMjFIMTVWMTVIMjFWMTdIMTguNDJMMjEuMTQgMTkuNzZMMTkuNzMgMjEuMTdMMTcgMTguNVwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdGlvbk1hcmtlciA9IFwiTTIgNEMyIDIuODkgMi45IDIgNCAySDdWNEg0VjdIMlY0TTIyIDRWN0gyMFY0SDE3VjJIMjBDMjEuMSAyIDIyIDIuODkgMjIgNE0yIDIwVjE3SDRWMjBIN1YyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBNMTAgMkgxNFY0SDEwVjJNMTAgMjBIMTRWMjJIMTBWMjBNMiAxMEg0VjE0SDJWMTBNMTguNSAxM0MyMC40IDEzIDIyIDE0LjYgMjIgMTYuNUMyMiAxOS4xIDE4LjUgMjMgMTguNSAyM0MxOC41IDIzIDE1IDE5LjEgMTUgMTYuNUMxNSAxNC42IDE2LjYgMTMgMTguNSAxM00xOC41IDE3LjhDMTkuMiAxNy44IDE5LjggMTcuMiAxOS43IDE2LjZDMTkuNyAxNiAxOS4xIDE1LjQgMTguNSAxNS40QzE3LjkgMTUuNCAxNy4zIDE1LjkgMTcuMyAxNi42QzE3LjMgMTcuMiAxNy44IDE3LjggMTguNSAxNy44TTIwIDEwSDIyVjEyLjM0QzIxLjQyIDExLjg0IDIwLjc0IDExLjQ1IDIwIDExLjIzVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdGlvbk11bHRpcGxlID0gXCJNMTEgNlY0SDE1VjZIMTFNNiA5SDhWMTNINlY5TTYgNkM2IDQuODkgNi45IDQgOCA0SDlWNkg4VjdINlY2TTggMThDNi44OSAxOCA2IDE3LjEgNiAxNlYxNUg4VjE2SDlWMThIOE0xOCA0QzE5LjExIDQgMjAgNC45IDIwIDZWN0gxOFY2SDE3VjRIMThNMTUgMTZWMThIMTFWMTZIMTVNMjAgMTNIMThWOUgyMFYxM00yMCAxNkMyMCAxNy4xMSAxOS4xIDE4IDE4IDE4SDE3VjE2SDE4VjE1SDIwVjE2TTMgOEg0VjIwSDE2VjIxQzE2IDIxLjU0IDE1LjU3IDIyIDE1LjAzIDIySDE1TDMgMjJDMi40NSAyMiAyIDIxLjU1IDIgMjFWOUMyIDguNDUgMi40NSA4IDMgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWxlY3Rpb25NdWx0aXBsZU1hcmtlciA9IFwiTTcgNEg5VjZIOFY3SDZWNUM2IDQuNDUgNi40NSA0IDcgNE0xOSA0QzE5LjU1IDQgMjAgNC40NSAyMCA1VjdIMThWNkgxN1Y0SDE5TTExIDZWNEgxNVY2SDExTTcgMThDNi40NSAxOCA2IDE3LjU1IDYgMTdWMTVIOFYxNkg5VjE4SDdNNiA5SDhWMTNINlY5TTMgOEg0VjIwSDE0LjU4TDE2LjAzIDIyTDMgMjJDMi40NSAyMiAyIDIxLjU1IDIgMjFWOUMyIDguNDUgMi40NSA4IDMgOE0xOC41IDEyQzIwLjQgMTIgMjIgMTMuNiAyMiAxNS41QzIyIDE4LjEgMTguNSAyMiAxOC41IDIyQzE4LjUgMjIgMTUgMTguMSAxNSAxNS41QzE1IDEzLjYgMTYuNiAxMiAxOC41IDEyTTE4LjUgMTYuOEMxOS4yIDE2LjggMTkuOCAxNi4yIDE5LjcgMTUuNkMxOS43IDE1IDE5LjEgMTQuNCAxOC41IDE0LjRDMTcuOSAxNC40IDE3LjMgMTQuOSAxNy4zIDE1LjZDMTcuMyAxNi4yIDE3LjggMTYuOCAxOC41IDE2LjhNMTEgMThWMTZIMTNDMTMuMDkgMTYuNjYgMTMuMjcgMTcuMzMgMTMuNSAxOEgxMU0yMCA5VjEwLjIzQzE5LjUgMTAuMDggMTkgMTAgMTguNSAxMEwxOCAxMC4wM1Y5SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdGlvbk9mZiA9IFwiTTAuNSwzLjc3TDEuNzgsMi41TDIxLjUsMjIuMjJMMjAuMjMsMjMuNUwxOC43MywyMkgxN1YyMC4yN0wzLjczLDdIMlY1LjI3TDAuNSwzLjc3TTQsMkg3VjRINS44MkwzLjgzLDJINE0yMiw0VjdIMjBWNEgxN1YySDIwQTIsMiAwIDAsMSAyMiw0TTIwLDE3SDIyVjIwTDIyLDIwLjE3TDIwLDE4LjE4VjE3TTIsMjBWMTdINFYyMEg3VjIySDRBMiwyIDAgMCwxIDIsMjBNMTAsMkgxNFY0SDEwVjJNMTAsMjBIMTRWMjJIMTBWMjBNMjAsMTBIMjJWMTRIMjBWMTBNMiwxMEg0VjE0SDJWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0aW9uU2VhcmNoID0gXCJNMTkuMjcgMTguOUMxOS43IDE4LjIxIDE5Ljk1IDE3LjM4IDE5Ljk1IDE2LjVDMTkuOTUgMTQgMTcuOTUgMTIgMTUuNDYgMTJTMTAuOTYgMTQgMTAuOTYgMTYuNSAxMi45NiAyMSAxNS40NiAyMUMxNi4zMyAyMSAxNy4xNSAyMC43NSAxNy44NCAyMC4zMkwyMC45NiAyMy4zOUwyMi4zNSAyMkwxOS4yNyAxOC45TTE1LjQ2IDE5QzE0LjA3IDE5IDEyLjk2IDE3Ljg4IDEyLjk2IDE2LjVTMTQuMDcgMTQgMTUuNDYgMTQgMTcuOTUgMTUuMTIgMTcuOTUgMTYuNSAxNi44NCAxOSAxNS40NiAxOU0yMiAxNEgyMS40NUMyMS4xMiAxMy4xOSAyMC42MiAxMi40NyAyMCAxMS44NlYxMEgyMlYxNE0yMCA0SDE3VjJIMjBDMjEuMTEgMiAyMiAyLjkgMjIgNFY3SDIwVjRNMTQgNEgxMFYySDE0VjRNNCAySDdWNEg0VjdIMlY0QzIgMi44OSAyLjkgMiA0IDJNMTIgMjJIMTBWMjBDMTAuNSAyMC44MiAxMS4yIDIxLjUgMTIgMjJNNCAyMEg3VjIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFYxN0g0VjIwTTQgMTRIMlYxMEg0VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbWFudGljV2ViID0gXCJNMTIuOSA0LjIyQzE4LjczIDYuODQgMjAgMiAyMCAyUzE4Ljg5IDguMDcgMTMuNzkgMTAuNTVDMTIuNzUgMTEuMDYgMTIuMSAxMS4zMyAxMi4xIDExLjMzTDMuNzMgNy4yNUwxMi4xIDMuODJDMTIuMSAzLjgyIDExLjkgMy43NiAxMi45IDQuMjJNMTEuMTIgMjJMMy4zMyAxNy43OFY5LjA3TDExLjEyIDEzLjA0VjIyTTEyLjg4IDIyTDIwLjY4IDE3Ljc4VjkuMDdMMTIuODggMTMuMDRWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZCA9IFwiTTIsMjFMMjMsMTJMMiwzVjEwTDE3LDEyTDIsMTRWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZENoZWNrID0gXCJNMiAzVjEwTDE3IDEyTDIgMTRWMjFMMjMgMTJNMjIgMTUuNUwxOC41IDE5TDE2LjUgMTdMMTUgMTguNUwxOC41IDIyTDIzLjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZENoZWNrT3V0bGluZSA9IFwiTTIgM1YxMEwxNyAxMkwyIDE0VjIxTDIzIDEyTTQgNi4wM0wxMS41MyA5LjI1TDQgOC4yNU0xMS41MyAxNC43NUw0IDE3Ljk3VjE1Ljc1TTIyIDE1LjVMMTguNSAxOUwxNi41IDE3TDE1IDE4LjVMMTguNSAyMkwyMy41IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbmRDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk04LDcuNzFWMTEuMDVMMTUuMTQsMTJMOCwxMi45NVYxNi4yOUwxOCwxMkw4LDcuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZENpcmNsZU91dGxpbmUgPSBcIk04LDcuNzFMMTgsMTJMOCwxNi4yOVYxMi45NUwxNS4xNCwxMkw4LDExLjA1VjcuNzFNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbmRDbG9jayA9IFwiTTIgM1YxMEwxMSAxMkwyIDE0VjIxTDkuMjcgMTcuODlBNyA3IDAgMCAwIDE2IDIzQTcgNyAwIDAgMCAyMyAxNkE3IDcgMCAwIDAgMTYgOUwyIDNNMTYgMTFBNSA1IDAgMCAxIDIxIDE2QTUgNSAwIDAgMSAxNiAyMUE1IDUgMCAwIDEgMTEgMTZBNSA1IDAgMCAxIDE2IDExTTE1IDEyLjVWMTYuNUwxOCAxOC41TDE4Ljc1IDE3LjI1TDE2LjUgMTUuNzVWMTIuNUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTZW5kQ2xvY2tPdXRsaW5lID0gXCJNMiAzVjEwTDExIDEyTDIgMTRWMjFMOS4yNyAxNy44OUE3IDcgMCAwIDAgMTYgMjNBNyA3IDAgMCAwIDIzIDE2QTcgNyAwIDAgMCAxNiA5TDIgM000IDYuMDNMMTIuNzggOS44QTcgNyAwIDAgMCAxMi4xIDEwLjJMNCA4LjRWNi4wM00xNiAxMUE1IDUgMCAwIDEgMjEgMTZBNSA1IDAgMCAxIDE2IDIxQTUgNSAwIDAgMSAxMSAxNkE1IDUgMCAwIDEgMTYgMTFNMTUgMTIuNVYxNi41TDE4IDE4LjVMMTguNzUgMTcuMjVMMTYuNSAxNS43NVYxMi41SDE1TTkuMTggMTQuNDVBNyA3IDAgMCAwIDkgMTUuODJMNCAxNy45N1YxNS42TDkuMTggMTQuNDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZExvY2sgPSBcIk0yMywxOFYxNy41QTIuNSwyLjUgMCAwLDAgMjAuNSwxNUEyLjUsMi41IDAgMCwwIDE4LDE3LjVWMThBMSwxIDAgMCwwIDE3LDE5VjIzQTEsMSAwIDAsMCAxOCwyNEgyM0ExLDEgMCAwLDAgMjQsMjNWMTlBMSwxIDAgMCwwIDIzLDE4TTIyLDE4SDE5VjE3LjVBMS41LDEuNSAwIDAsMSAyMC41LDE2QTEuNSwxLjUgMCAwLDEgMjIsMTcuNVYxOE0yMywxMkwyLDIxVjE0TDE3LDEyTDIsMTBWM0wyMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZW5kTG9ja091dGxpbmUgPSBcIk0yMyAxOFYxNy41QzIzIDE2LjEyIDIxLjg4IDE1IDIwLjUgMTVTMTggMTYuMTIgMTggMTcuNVYxOEMxNy40NSAxOCAxNyAxOC40NSAxNyAxOVYyM0MxNyAyMy41NSAxNy40NSAyNCAxOCAyNEgyM0MyMy41NSAyNCAyNCAyMy41NSAyNCAyM1YxOUMyNCAxOC40NSAyMy41NSAxOCAyMyAxOE0yMiAxOEgxOVYxNy41QzE5IDE2LjY3IDE5LjY3IDE2IDIwLjUgMTZTMjIgMTYuNjcgMjIgMTcuNVYxOE00IDYuMDNMMTEuNSA5LjI1TDQgOC4yNUw0IDYuMDNNMTEuNSAxNC43NUw0IDE3Ljk3VjE1Ljc1TDExLjUgMTQuNzVNMiAzTDIgMTBMMTcgMTJMMiAxNEwyIDIxTDIzIDEyTDIgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZW5kT3V0bGluZSA9IFwiTTQgNi4wM0wxMS41IDkuMjVMNCA4LjI1TDQgNi4wM00xMS41IDE0Ljc1TDQgMTcuOTdWMTUuNzVMMTEuNSAxNC43NU0yIDNMMiAxMEwxNyAxMkwyIDE0TDIgMjFMMjMgMTJMMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcmlhbFBvcnQgPSBcIk03LDNIMTdWNUgxOVY4SDE2VjE0SDhWOEg1VjVIN1YzTTE3LDlIMTlWMTRIMTdWOU0xMSwxNUgxM1YyMkgxMVYxNU01LDlIN1YxNEg1VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VydmVyID0gXCJNNCwxSDIwQTEsMSAwIDAsMSAyMSwyVjZBMSwxIDAgMCwxIDIwLDdINEExLDEgMCAwLDEgMyw2VjJBMSwxIDAgMCwxIDQsMU00LDlIMjBBMSwxIDAgMCwxIDIxLDEwVjE0QTEsMSAwIDAsMSAyMCwxNUg0QTEsMSAwIDAsMSAzLDE0VjEwQTEsMSAwIDAsMSA0LDlNNCwxN0gyMEExLDEgMCAwLDEgMjEsMThWMjJBMSwxIDAgMCwxIDIwLDIzSDRBMSwxIDAgMCwxIDMsMjJWMThBMSwxIDAgMCwxIDQsMTdNOSw1SDEwVjNIOVY1TTksMTNIMTBWMTFIOVYxM005LDIxSDEwVjE5SDlWMjFNNSwzVjVIN1YzSDVNNSwxMVYxM0g3VjExSDVNNSwxOVYyMUg3VjE5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VydmVyTWludXMgPSBcIk00LDRIMjBBMSwxIDAgMCwxIDIxLDVWOUExLDEgMCAwLDEgMjAsMTBINEExLDEgMCAwLDEgMyw5VjVBMSwxIDAgMCwxIDQsNE05LDhIMTBWNkg5VjhNNSw2VjhIN1Y2SDVNOCwxNkgxNlYxOEg4VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcnZlck5ldHdvcmsgPSBcIk0xMywxOUgxNEExLDEgMCAwLDEgMTUsMjBIMjJWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdINEExLDEgMCAwLDEgMywxNlYxMkExLDEgMCAwLDEgNCwxMUgyMEExLDEgMCAwLDEgMjEsMTJWMTZBMSwxIDAgMCwxIDIwLDE3SDEzVjE5TTQsM0gyMEExLDEgMCAwLDEgMjEsNFY4QTEsMSAwIDAsMSAyMCw5SDRBMSwxIDAgMCwxIDMsOFY0QTEsMSAwIDAsMSA0LDNNOSw3SDEwVjVIOVY3TTksMTVIMTBWMTNIOVYxNU01LDVWN0g3VjVINU01LDEzVjE1SDdWMTNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlTZXJ2ZXJOZXR3b3JrT2ZmID0gXCJNMTMsMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDE1LjczTDEzLDE3LjI3VjE5TTIyLDIwVjIxLjE4TDIwLjgyLDIwSDIyTTIxLDIyLjcyTDE5LjczLDI0TDE3LjczLDIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDRBMSwxIDAgMCwxIDMsMTZWMTJBMSwxIDAgMCwxIDQsMTFINi43M0w0LjczLDlINEExLDEgMCAwLDEgMyw4VjcuMjdMMSw1LjI3TDIuMjgsNEwyMSwyMi43Mk00LDNIMjBBMSwxIDAgMCwxIDIxLDRWOEExLDEgMCAwLDEgMjAsOUg5LjgyTDcsNi4xOFY1SDUuODJMMy44NCwzQzMuODksMyAzLjk0LDMgNCwzTTIwLDExQTEsMSAwIDAsMSAyMSwxMlYxNkExLDEgMCAwLDEgMjAsMTdIMTcuODJMMTEuODIsMTFIMjBNOSw3SDEwVjVIOVY3TTksMTVIMTBWMTQuMjdMOSwxMy4yN1YxNU01LDEzVjE1SDdWMTNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlTZXJ2ZXJPZmYgPSBcIk00LDFIMjBBMSwxIDAgMCwxIDIxLDJWNkExLDEgMCAwLDEgMjAsN0g4LjgyTDYuODIsNUg3VjNINVYzLjE4TDMuMjEsMS4zOUMzLjM5LDEuMTUgMy42OCwxIDQsMU0yMiwyMi43MkwyMC43MywyNEwxOS43MywyM0g0QTEsMSAwIDAsMSAzLDIyVjE4QTEsMSAwIDAsMSA0LDE3SDEzLjczTDExLjczLDE1SDRBMSwxIDAgMCwxIDMsMTRWMTBBMSwxIDAgMCwxIDQsOUg1LjczTDMuNjgsNi45NUMzLjM4LDYuODUgMy4xNSw2LjYyIDMuMDUsNi4zMkwxLDQuMjdMMi4yOCwzTDIyLDIyLjcyTTIwLDlBMSwxIDAgMCwxIDIxLDEwVjE0QTEsMSAwIDAsMSAyMCwxNUgxNi44MkwxMC44Miw5SDIwTTIwLDE3QTEsMSAwIDAsMSAyMSwxOFYxOS4xOEwxOC44MiwxN0gyME05LDVIMTBWM0g5VjVNOSwxM0g5LjczTDksMTIuMjdWMTNNOSwyMUgxMFYxOUg5VjIxTTUsMTFWMTNIN1YxMUg1TTUsMTlWMjFIN1YxOUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcnZlclBsdXMgPSBcIk00LDRIMjBBMSwxIDAgMCwxIDIxLDVWOUExLDEgMCAwLDEgMjAsMTBINEExLDEgMCAwLDEgMyw5VjVBMSwxIDAgMCwxIDQsNE05LDhIMTBWNkg5VjhNNSw2VjhIN1Y2SDVNOCwxNkgxMVYxM0gxM1YxNkgxNlYxOEgxM1YyMUgxMVYxOEg4VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcnZlclJlbW92ZSA9IFwiTTQsNEgyMEExLDEgMCAwLDEgMjEsNVY5QTEsMSAwIDAsMSAyMCwxMEg0QTEsMSAwIDAsMSAzLDlWNUExLDEgMCAwLDEgNCw0TTksOEgxMFY2SDlWOE01LDZWOEg3VjZINU0xMC41OSwxN0w4LDE0LjQxTDkuNDEsMTNMMTIsMTUuNTlMMTQuNTksMTNMMTYsMTQuNDFMMTMuNDEsMTdMMTYsMTkuNTlMMTQuNTksMjFMMTIsMTguNDFMOS40MSwyMUw4LDE5LjU5TDEwLjU5LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcnZlclNlY3VyaXR5ID0gXCJNMywxSDE5QTEsMSAwIDAsMSAyMCwyVjZBMSwxIDAgMCwxIDE5LDdIM0ExLDEgMCAwLDEgMiw2VjJBMSwxIDAgMCwxIDMsMU0zLDlIMTlBMSwxIDAgMCwxIDIwLDEwVjEwLjY3TDE3LjUsOS41NkwxMSwxMi40NFYxNUgzQTEsMSAwIDAsMSAyLDE0VjEwQTEsMSAwIDAsMSAzLDlNMywxN0gxMUMxMS4wNiwxOS4yNSAxMiwyMS40IDEzLjQ2LDIzSDNBMSwxIDAgMCwxIDIsMjJWMThBMSwxIDAgMCwxIDMsMTdNOCw1SDlWM0g4VjVNOCwxM0g5VjExSDhWMTNNOCwyMUg5VjE5SDhWMjFNNCwzVjVINlYzSDRNNCwxMVYxM0g2VjExSDRNNCwxOVYyMUg2VjE5SDRNMTcuNSwxMkwyMiwxNFYxN0MyMiwxOS43OCAyMC4wOCwyMi4zNyAxNy41LDIzQzE0LjkyLDIyLjM3IDEzLDE5Ljc4IDEzLDE3VjE0TDE3LjUsMTJNMTcuNSwxMy45NEwxNSwxNS4wNlYxNy43MkMxNSwxOS4yNiAxNi4wNywyMC43IDE3LjUsMjEuMDZWMTMuOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0QWxsID0gXCJNOSw1QzEwLjA0LDUgMTEuMDYsNS4yNCAxMiw1LjY4QzEyLjk0LDUuMjQgMTMuOTYsNSAxNSw1QTcsNyAwIDAsMSAyMiwxMkE3LDcgMCAwLDEgMTUsMTlDMTMuOTYsMTkgMTIuOTQsMTguNzYgMTIsMTguMzJDMTEuMDYsMTguNzYgMTAuMDQsMTkgOSwxOUE3LDcgMCAwLDEgMiwxMkE3LDcgMCAwLDEgOSw1TTguNSwxMkM4LjUsMTMuODcgOS4yOSwxNS41NiAxMC41NiwxNi43NUwxMS41NiwxNi4yOUMxMC4zMSwxNS4yOSA5LjUsMTMuNzQgOS41LDEyQzkuNSwxMC4yNiAxMC4zMSw4LjcxIDExLjU2LDcuNzFMMTAuNTYsNy4yNUM5LjI5LDguNDQgOC41LDEwLjEzIDguNSwxMk0xNS41LDEyQzE1LjUsMTAuMTMgMTQuNzEsOC40NCAxMy40NCw3LjI1TDEyLjQ0LDcuNzFDMTMuNjksOC43MSAxNC41LDEwLjI2IDE0LjUsMTJDMTQuNSwxMy43NCAxMy42OSwxNS4yOSAxMi40NCwxNi4yOUwxMy40NCwxNi43NUMxNC43MSwxNS41NiAxNS41LDEzLjg3IDE1LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0Q2VudGVyID0gXCJNOSw1QTcsNyAwIDAsMCAyLDEyQTcsNyAwIDAsMCA5LDE5QzEwLjA0LDE5IDExLjA2LDE4Ljc2IDEyLDE4LjMyQzEyLjk0LDE4Ljc2IDEzLjk2LDE5IDE1LDE5QTcsNyAwIDAsMCAyMiwxMkE3LDcgMCAwLDAgMTUsNUMxMy45Niw1IDEyLjk0LDUuMjQgMTIsNS42OEMxMS4wNiw1LjI0IDEwLjA0LDUgOSw1TTksN0M5LjM0LDcgOS42Nyw3LjAzIDEwLDcuMUM4LjcyLDguNDEgOCwxMC4xNyA4LDEyQzgsMTMuODMgOC43MiwxNS41OSAxMCwxNi44OUM5LjY3LDE2Ljk2IDkuMzQsMTcgOSwxN0E1LDUgMCAwLDEgNCwxMkE1LDUgMCAwLDEgOSw3TTE1LDdBNSw1IDAgMCwxIDIwLDEyQTUsNSAwIDAsMSAxNSwxN0MxNC42NiwxNyAxNC4zMywxNi45NyAxNCwxNi45QzE1LjI4LDE1LjU5IDE2LDEzLjgzIDE2LDEyQzE2LDEwLjE3IDE1LjI4LDguNDEgMTQsNy4xMUMxNC4zMyw3LjA0IDE0LjY2LDcgMTUsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZXRDZW50ZXJSaWdodCA9IFwiTTE1LDE5QzEzLjk2LDE5IDEyLjk0LDE4Ljc2IDEyLDE4LjMyQzExLjA2LDE4Ljc2IDEwLjA0LDE5IDksMTlBNyw3IDAgMCwxIDIsMTJBNyw3IDAgMCwxIDksNUMxMC4wNCw1IDExLjA2LDUuMjQgMTIsNS42OEMxMi45NCw1LjI0IDEzLjk2LDUgMTUsNUE3LDcgMCAwLDEgMjIsMTJBNyw3IDAgMCwxIDE1LDE5TTksMTdMMTAsMTYuODlDOC43MiwxNS41OSA4LDEzLjgzIDgsMTJDOCwxMC4xNyA4LjcyLDguNDEgMTAsNy4xTDksN0E1LDUgMCAwLDAgNCwxMkE1LDUgMCAwLDAgOSwxN00xNS41LDEyQzE1LjUsMTAuMTMgMTQuNzEsOC40NCAxMy40NCw3LjI1TDEyLjQ0LDcuNzFDMTMuNjksOC43MSAxNC41LDEwLjI2IDE0LjUsMTJDMTQuNSwxMy43NCAxMy42OSwxNS4yOSAxMi40NCwxNi4yOUwxMy40NCwxNi43NUMxNC43MSwxNS41NiAxNS41LDEzLjg3IDE1LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0TGVmdCA9IFwiTTksNUE3LDcgMCAwLDAgMiwxMkE3LDcgMCAwLDAgOSwxOUMxMC4wNCwxOSAxMS4wNiwxOC43NiAxMiwxOC4zMkMxMi45NCwxOC43NiAxMy45NiwxOSAxNSwxOUE3LDcgMCAwLDAgMjIsMTJBNyw3IDAgMCwwIDE1LDVDMTMuOTYsNSAxMi45NCw1LjI0IDEyLDUuNjhDMTEuMDYsNS4yNCAxMC4wNCw1IDksNU0xNSw3QTUsNSAwIDAsMSAyMCwxMkE1LDUgMCAwLDEgMTUsMTdDMTQuNjYsMTcgMTQuMzMsMTYuOTcgMTQsMTYuOUMxNS4yOCwxNS41OSAxNiwxMy44MyAxNiwxMkMxNiwxMC4xNyAxNS4yOCw4LjQxIDE0LDcuMTFDMTQuMzMsNy4wNCAxNC42Niw3IDE1LDdNMTIsOEMxMy4yNiw4Ljk1IDE0LDEwLjQzIDE0LDEyQzE0LDEzLjU3IDEzLjI2LDE1LjA1IDEyLDE2QzEwLjc0LDE1LjA1IDEwLDEzLjU3IDEwLDEyQzEwLDEwLjQzIDEwLjc0LDguOTUgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTZXRMZWZ0Q2VudGVyID0gXCJNOSw1QzEwLjA0LDUgMTEuMDYsNS4yNCAxMiw1LjY4QzEyLjk0LDUuMjQgMTMuOTYsNSAxNSw1QTcsNyAwIDAsMSAyMiwxMkE3LDcgMCAwLDEgMTUsMTlDMTMuOTYsMTkgMTIuOTQsMTguNzYgMTIsMTguMzJDMTEuMDYsMTguNzYgMTAuMDQsMTkgOSwxOUE3LDcgMCAwLDEgMiwxMkE3LDcgMCAwLDEgOSw1TTE1LDdMMTQsNy4xMUMxNS4yOCw4LjQxIDE2LDEwLjE3IDE2LDEyQzE2LDEzLjgzIDE1LjI4LDE1LjU5IDE0LDE2LjlMMTUsMTdBNSw1IDAgMCwwIDIwLDEyQTUsNSAwIDAsMCAxNSw3TTguNSwxMkM4LjUsMTMuODcgOS4yOSwxNS41NiAxMC41NiwxNi43NUwxMS41NiwxNi4yOUMxMC4zMSwxNS4yOSA5LjUsMTMuNzQgOS41LDEyQzkuNSwxMC4yNiAxMC4zMSw4LjcxIDExLjU2LDcuNzFMMTAuNTYsNy4yNUM5LjI5LDguNDQgOC41LDEwLjEzIDguNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZXRMZWZ0UmlnaHQgPSBcIk05LDVDMTAuMDQsNSAxMS4wNiw1LjI0IDEyLDUuNjhDMTIuOTQsNS4yNCAxMy45Niw1IDE1LDVBNyw3IDAgMCwxIDIyLDEyQTcsNyAwIDAsMSAxNSwxOUMxMy45NiwxOSAxMi45NCwxOC43NiAxMiwxOC4zMkMxMS4wNiwxOC43NiAxMC4wNCwxOSA5LDE5QTcsNyAwIDAsMSAyLDEyQTcsNyAwIDAsMSA5LDVNOSwxMkM5LDE0LjIyIDEwLjIxLDE2LjE2IDEyLDE3LjJDMTMuNzksMTYuMTYgMTUsMTQuMjIgMTUsMTJDMTUsOS43OCAxMy43OSw3Ljg0IDEyLDYuOEMxMC4yMSw3Ljg0IDksOS43OCA5LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNldE1lcmdlID0gXCJNMiA3VjlIN1Y3SDJNMTIgOVYxMUg5VjEzSDEyVjE1TDE1IDEyTDEyIDlNMTcgOVYxNUgyMlY5SDE3TTIgMTFWMTNIN1YxMUgyTTIgMTVWMTdIN1YxNUgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNldE5vbmUgPSBcIk05LDVBNyw3IDAgMCwwIDIsMTJBNyw3IDAgMCwwIDksMTlDMTAuMDQsMTkgMTEuMDYsMTguNzYgMTIsMTguMzJDMTIuOTQsMTguNzYgMTMuOTYsMTkgMTUsMTlBNyw3IDAgMCwwIDIyLDEyQTcsNyAwIDAsMCAxNSw1QzEzLjk2LDUgMTIuOTQsNS4yNCAxMiw1LjY4QzExLjA2LDUuMjQgMTAuMDQsNSA5LDVNOSw3QzkuMzQsNyA5LjY3LDcuMDMgMTAsNy4xQzguNzIsOC40MSA4LDEwLjE3IDgsMTJDOCwxMy44MyA4LjcyLDE1LjU5IDEwLDE2Ljg5QzkuNjcsMTYuOTYgOS4zNCwxNyA5LDE3QTUsNSAwIDAsMSA0LDEyQTUsNSAwIDAsMSA5LDdNMTUsN0E1LDUgMCAwLDEgMjAsMTJBNSw1IDAgMCwxIDE1LDE3QzE0LjY2LDE3IDE0LjMzLDE2Ljk3IDE0LDE2LjlDMTUuMjgsMTUuNTkgMTYsMTMuODMgMTYsMTJDMTYsMTAuMTcgMTUuMjgsOC40MSAxNCw3LjExQzE0LjMzLDcuMDQgMTQuNjYsNyAxNSw3TTEyLDhDMTMuMjYsOC45NSAxNCwxMC40MyAxNCwxMkMxNCwxMy41NyAxMy4yNiwxNS4wNSAxMiwxNkMxMC43NCwxNS4wNSAxMCwxMy41NyAxMCwxMkMxMCwxMC40MyAxMC43NCw4Ljk1IDEyLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0UmlnaHQgPSBcIk0xNSwxOUMxMy45NiwxOSAxMi45NCwxOC43NiAxMiwxOC4zMkMxMS4wNiwxOC43NiAxMC4wNCwxOSA5LDE5QTcsNyAwIDAsMSAyLDEyQTcsNyAwIDAsMSA5LDVDMTAuMDQsNSAxMS4wNiw1LjI0IDEyLDUuNjhDMTIuOTQsNS4yNCAxMy45Niw1IDE1LDVBNyw3IDAgMCwxIDIyLDEyQTcsNyAwIDAsMSAxNSwxOU05LDE3TDEwLDE2Ljg5QzguNzIsMTUuNTkgOCwxMy44MyA4LDEyQzgsMTAuMTcgOC43Miw4LjQxIDEwLDcuMUw5LDdBNSw1IDAgMCwwIDQsMTJBNSw1IDAgMCwwIDksMTdNMTIsMTZDMTMuMjYsMTUuMDUgMTQsMTMuNTcgMTQsMTJDMTQsMTAuNDMgMTMuMjYsOC45NSAxMiw4QzEwLjc0LDguOTUgMTAsMTAuNDMgMTAsMTJDMTAsMTMuNTcgMTAuNzQsMTUuMDUgMTIsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0U3BsaXQgPSBcIk0xNyA3VjlIMjJWN0gxN00yIDlWMTVIN1Y5SDJNMTIgOVYxMUg5VjEzSDEyVjE1TDE1IDEyTDEyIDlNMTcgMTFWMTNIMjJWMTFIMTdNMTcgMTVWMTdIMjJWMTVIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0U3F1YXJlID0gXCJNMTcuNyAxNy43TDE2LjYgMTguOEwxNS45IDE4TDE3IDE3TDE1IDE1TDE0IDE2LjFMMTMuMyAxNS40TDE0LjQgMTQuM0wxMi41IDEyLjRMMTEuNCAxMy41TDEwLjcgMTIuOEwxMS44IDExLjdMOS44IDkuOEw4LjcgMTAuOUw4IDEwLjJMOSA5TDcuMSA3LjFMNiA4LjFMNS4zIDcuNEw2LjQgNi4zTDQgNFYyMEgyMEwxNy43IDE3LjdNNyAxN1YxMS4yTDEyLjggMTdIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZXRUb3BCb3ggPSBcIk01LDE1LjVBMC41LDAuNSAwIDAsMSA0LjUsMTZIMy41QTAuNSwwLjUgMCAwLDEgMywxNS41VjE1SDJBMSwxIDAgMCwxIDEsMTRWMTFBMSwxIDAgMCwxIDIsMTBIMjJBMSwxIDAgMCwxIDIzLDExVjE0QTEsMSAwIDAsMSAyMiwxNUgyMVYxNS41QTAuNSwwLjUgMCAwLDEgMjAuNSwxNkgxOS41QTAuNSwwLjUgMCAwLDEgMTksMTUuNVYxNUg1VjE1LjVNMywxMlYxM0g1VjEySDNNNiwxMlYxM0g4VjEySDZNMjAuNSwxMS41QTEsMSAwIDAsMCAxOS41LDEyLjVBMSwxIDAgMCwwIDIwLjUsMTMuNUExLDEgMCAwLDAgMjEuNSwxMi41QTEsMSAwIDAsMCAyMC41LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0dGluZ3NIZWxwZXIgPSBcIk03LDIySDlWMjRIN1YyMk0xMSwyMkgxM1YyNEgxMVYyMk0xNSwyMkgxN1YyNEgxNVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFrZXIgPSBcIk03IDE2QzcgMTYuNTUgNi41NSAxNyA2IDE3UzUgMTYuNTUgNSAxNkM1IDE1LjQ1IDUuNDUgMTUgNiAxNVM3IDE1LjQ1IDcgMTZNOSAxNkM4LjQ1IDE2IDggMTYuNDUgOCAxN1M4LjQ1IDE4IDkgMTggMTAgMTcuNTUgMTAgMTcgOS41NSAxNiA5IDE2TTQgMThDMy40NSAxOCAzIDE4LjQ1IDMgMTlTMy40NSAyMCA0IDIwIDUgMTkuNTUgNSAxOSA0LjU1IDE4IDQgMThNNyAxOUM2LjQ1IDE5IDYgMTkuNDUgNiAyMFM2LjQ1IDIxIDcgMjEgOCAyMC41NSA4IDIwIDcuNTUgMTkgNyAxOU0xNS4zMyAyLjcyTDkuOCA5LjY1TDEzLjM0IDEzLjE5TDIwLjI4IDcuNjdDMjEuMTggNi45MSAyMS4yNSA1LjU0IDIwLjQxIDQuN0wxOC4zIDIuNTlDMTcuNDYgMS43NSAxNi4wOSAxLjgyIDE1LjMzIDIuNzJNOC4zOSAxMi41TDEwLjUgMTQuNkMxMC45IDE1IDExLjU0IDE1IDExLjkzIDE0LjZMMTIuNjMgMTMuOUw5LjEgMTAuMzZMOC4zOSAxMS4wN0M4IDExLjQ2IDggMTIuMDkgOC4zOSAxMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYWtlck91dGxpbmUgPSBcIk0xNi44OCA0TDE2Ljg4IDRMMTkuMDMgNi4xTDEzLjUgMTAuNUwxMi41IDkuNUwxNi44NyA0TDE2Ljg4IDRNMTYuODggMkMxNi4zIDIgMTUuNzMgMi4yNCAxNS4zMyAyLjcyTDkuOCA5LjY1TDEzLjM0IDEzLjE5TDIwLjI4IDcuNjdDMjEuMTggNi45MSAyMS4yNSA1LjU0IDIwLjQxIDQuN0wxOC4zIDIuNTlDMTcuOSAyLjE5IDE3LjM5IDIgMTYuODggMk05LjEgMTAuMzZMOC4zOSAxMS4wN0M4IDExLjQ2IDggMTIuMDkgOC4zOSAxMi41TDEwLjUgMTQuNkMxMC43MSAxNC44IDEwLjk2IDE0Ljg5IDExLjIyIDE0Ljg5UzExLjczIDE0LjggMTEuOTMgMTQuNkwxMi42MyAxMy45TDkuMSAxMC4zNk02IDE1QzUuNDUgMTUgNSAxNS40NSA1IDE2QzUgMTYuNTUgNS40NSAxNyA2IDE3QzYuNTUgMTcgNyAxNi41NSA3IDE2QzcgMTUuNDUgNi41NSAxNSA2IDE1TTkgMTZDOC40NSAxNiA4IDE2LjQ1IDggMTdTOC40NSAxOCA5IDE4QzkuNTUgMTggMTAgMTcuNTUgMTAgMTdTOS41NSAxNiA5IDE2TTQgMThDMy40NSAxOCAzIDE4LjQ1IDMgMTlTMy40NSAyMCA0IDIwQzQuNTUgMjAgNSAxOS41NSA1IDE5UzQuNTUgMTggNCAxOE03IDE5QzYuNDUgMTkgNiAxOS40NSA2IDIwUzYuNDUgMjEgNyAyMUM3LjU1IDIxIDggMjAuNTUgOCAyMFM3LjU1IDE5IDcgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcGUgPSBcIk0xMSwxMy41VjIxLjVIM1YxMy41SDExTTEyLDJMMTcuNSwxMUg2LjVMMTIsMk0xNy41LDEzQzIwLDEzIDIyLDE1IDIyLDE3LjVDMjIsMjAgMjAsMjIgMTcuNSwyMkMxNSwyMiAxMywyMCAxMywxNy41QzEzLDE1IDE1LDEzIDE3LjUsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcGVDaXJjbGVQbHVzID0gXCJNMTEsMTlBNiw2IDAgMCwwIDE3LDEzSDE5QTgsOCAwIDAsMSAxMSwyMUE4LDggMCAwLDEgMywxM0E4LDggMCAwLDEgMTEsNVY3QTYsNiAwIDAsMCA1LDEzQTYsNiAwIDAsMCAxMSwxOU0xOSw1SDIyVjdIMTlWMTBIMTdWN0gxNFY1SDE3VjJIMTlWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFwZU91dGxpbmUgPSBcIk0xMSwxMy41VjIxLjVIM1YxMy41SDExTTksMTUuNUg1VjE5LjVIOVYxNS41TTEyLDJMMTcuNSwxMUg2LjVMMTIsMk0xMiw1Ljg2TDEwLjA4LDlIMTMuOTJMMTIsNS44Nk0xNy41LDEzQzIwLDEzIDIyLDE1IDIyLDE3LjVDMjIsMjAgMjAsMjIgMTcuNSwyMkMxNSwyMiAxMywyMCAxMywxNy41QzEzLDE1IDE1LDEzIDE3LjUsMTNNMTcuNSwxNUEyLjUsMi41IDAgMCwwIDE1LDE3LjVBMi41LDIuNSAwIDAsMCAxNy41LDIwQTIuNSwyLjUgMCAwLDAgMjAsMTcuNUEyLjUsMi41IDAgMCwwIDE3LjUsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcGVPdmFsUGx1cyA9IFwiTTE5IDVIMjJWN0gxOVYxMEgxN1Y3SDE0VjVIMTdWMkgxOVY1TTExIDRMMTIgNC4wOVY2LjE0QzExLjY4IDYuMDUgMTEuMzQgNiAxMSA2QzguMjQgNiA2IDkuMTMgNiAxM0M2IDE2Ljg3IDguMjQgMjAgMTEgMjBDMTMuNzYgMjAgMTYgMTYuODcgMTYgMTNMMTUuOTUgMTJIMTcuOTZMMTggMTNDMTggMTcuOTcgMTQuODcgMjIgMTEgMjJDNy4xMyAyMiA0IDE3Ljk3IDQgMTNDNCA4LjAzIDcuMTMgNCAxMSA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXBlUGx1cyA9IFwiTTIsMkgxMVYxMUgyVjJNMTcuNSwyQzIwLDIgMjIsNCAyMiw2LjVDMjIsOSAyMCwxMSAxNy41LDExQzE1LDExIDEzLDkgMTMsNi41QzEzLDQgMTUsMiAxNy41LDJNNi41LDE0TDExLDIySDJMNi41LDE0TTE5LDE3SDIyVjE5SDE5VjIySDE3VjE5SDE0VjE3SDE3VjE0SDE5VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXBlUG9seWdvblBsdXMgPSBcIk0xNywxNS43VjEzSDE5VjE3TDEwLDIxTDMsMTRMNyw1SDExVjdIOC4zTDUuNCwxMy42TDEwLjQsMTguNkwxNywxNS43TTIyLDVWN0gxOVYxMEgxN1Y3SDE0VjVIMTdWMkgxOVY1SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXBlUmVjdGFuZ2xlUGx1cyA9IFwiTTE5LDZIMjJWOEgxOVYxMUgxN1Y4SDE0VjZIMTdWM0gxOVY2TTE3LDE3VjE0SDE5VjE5SDNWNkgxMVY4SDVWMTdIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcGVTcXVhcmVQbHVzID0gXCJNMTksNUgyMlY3SDE5VjEwSDE3VjdIMTRWNUgxN1YySDE5VjVNMTcsMTlWMTNIMTlWMjFIM1Y1SDExVjdINVYxOUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFwZVNxdWFyZVJvdW5kZWRQbHVzID0gXCJNMTcgMkgxOVY1SDIyVjdIMTlWMTBIMTdWN0gxNFY1SDE3VjJNNyA1SDExVjdIN0M1LjkgNyA1IDcuOSA1IDlWMTdDNSAxOC4xMSA1LjkgMTkgNyAxOUgxNUMxNi4xMSAxOSAxNyAxOC4xMSAxNyAxN1YxM0gxOVYxN0MxOSAxOS4yMSAxNy4yMSAyMSAxNSAyMUg3QzQuNzkgMjEgMyAxOS4yMSAzIDE3VjlDMyA2Ljc5IDQuNzkgNSA3IDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcmUgPSBcIk0yMSwxMkwxNCw1VjlDNywxMCA0LDE1IDMsMjBDNS41LDE2LjUgOSwxNC45IDE0LDE0LjlWMTlMMjEsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcmVBbGwgPSBcIk0xMSA5VjVMMTggMTJMMTEgMTlWMTQuOUM2IDE0LjkgMi41IDE2LjUgMCAyMEMxIDE1IDQgMTAgMTEgOU0xNyA4VjVMMjQgMTJMMTcgMTlWMTZMMjEgMTJMMTcgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFyZUFsbE91dGxpbmUgPSBcIk0xMyA5LjhWMTAuN0wxMS4zIDEwLjlDOC43IDExLjMgNi44IDEyLjMgNS40IDEzLjZDNy4xIDEzLjEgOC45IDEyLjggMTEgMTIuOEgxM1YxNC4xTDE1LjIgMTJMMTMgOS44TTExIDVMMTggMTJMMTEgMTlWMTQuOUM2IDE0LjkgMi41IDE2LjUgMCAyMEMxIDE1IDQgMTAgMTEgOU0xNyA4VjVMMjQgMTJMMTcgMTlWMTZMMjEgMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFyZUNpcmNsZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMlM2LjUgMjIgMTIgMjIgMjIgMTcuNSAyMiAxMiAxNy41IDIgMTIgMk0xNCAxNlYxM0MxMC4zOSAxMyA3LjgxIDE0LjQzIDYgMTdDNi43MiAxMy4zMyA4Ljk0IDkuNzMgMTQgOVY2TDE5IDExTDE0IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXJlT2ZmID0gXCJNMjAuOCAyMi43TDE1LjYgMTcuNUwxNCAxOVYxNS45TDEzLjEgMTQuOUM4LjYgMTUuMiA1LjQgMTYuOCAzIDIwLjFDMy41OCAxNi4zMSA1LjcyIDEyLjk0IDguOSAxMC44TDEuMSAzTDIuNCAxLjdMMjIuMSAyMS41TTE4LjEgMTQuOUwyMSAxMkwxNCA1VjlMMTIuNSA5LjNcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFyZU9mZk91dGxpbmUgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w4LjkgMTAuOEM1LjQgMTIuOSAzLjcgMTYuNCAzIDIwQzUuMyAxNi43IDguNiAxNS4xIDEzIDE0LjlMMTQgMTUuOVYxOUwxNS42IDE3LjRMMjAuOCAyMi43TTguMyAxMy44QzguOTQgMTMuMjIgOS42NSAxMi43MSAxMC40IDEyLjNMMTEuMyAxMy4xTTE0LjIgMTFMMTIuNSA5LjNMMTQgOVY1TDIxIDEyTDE4LjEgMTQuOUwxNi43IDEzLjVMMTguMiAxMkwxNiA5LjhWMTAuN1wiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXJlT3V0bGluZSA9IFwiTTE0LDVWOUM3LDEwIDQsMTUgMywyMEM1LjUsMTYuNSA5LDE0LjkgMTQsMTQuOVYxOUwyMSwxMkwxNCw1TTE2LDkuODNMMTguMTcsMTJMMTYsMTQuMTdWMTIuOUgxNEMxMS45MywxMi45IDEwLjA3LDEzLjI4IDguMzQsMTMuODVDOS43NCwxMi40NiAxMS41NCwxMS4zNyAxNC4yOCwxMUwxNiwxMC43M1Y5LjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXJlVmFyaWFudCA9IFwiTTE4LDE2LjA4QzE3LjI0LDE2LjA4IDE2LjU2LDE2LjM4IDE2LjA0LDE2Ljg1TDguOTEsMTIuN0M4Ljk2LDEyLjQ3IDksMTIuMjQgOSwxMkM5LDExLjc2IDguOTYsMTEuNTMgOC45MSwxMS4zTDE1Ljk2LDcuMTlDMTYuNSw3LjY5IDE3LjIxLDggMTgsOEEzLDMgMCAwLDAgMjEsNUEzLDMgMCAwLDAgMTgsMkEzLDMgMCAwLDAgMTUsNUMxNSw1LjI0IDE1LjA0LDUuNDcgMTUuMDksNS43TDguMDQsOS44MUM3LjUsOS4zMSA2Ljc5LDkgNiw5QTMsMyAwIDAsMCAzLDEyQTMsMyAwIDAsMCA2LDE1QzYuNzksMTUgNy41LDE0LjY5IDguMDQsMTQuMTlMMTUuMTYsMTguMzRDMTUuMTEsMTguNTUgMTUuMDgsMTguNzcgMTUuMDgsMTlDMTUuMDgsMjAuNjEgMTYuMzksMjEuOTEgMTgsMjEuOTFDMTkuNjEsMjEuOTEgMjAuOTIsMjAuNjEgMjAuOTIsMTlBMi45MiwyLjkyIDAgMCwwIDE4LDE2LjA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXJlVmFyaWFudE91dGxpbmUgPSBcIk0xOCAxNi4wOEMxNy4yNCAxNi4wOCAxNi41NiAxNi4zOCAxNi4wNCAxNi44NUw4LjkxIDEyLjdDOC45NiAxMi40NyA5IDEyLjI0IDkgMTJTOC45NiAxMS41MyA4LjkxIDExLjNMMTUuOTYgNy4xOUMxNi41IDcuNjkgMTcuMjEgOCAxOCA4QzE5LjY2IDggMjEgNi42NiAyMSA1UzE5LjY2IDIgMTggMiAxNSAzLjM0IDE1IDVDMTUgNS4yNCAxNS4wNCA1LjQ3IDE1LjA5IDUuN0w4LjA0IDkuODFDNy41IDkuMzEgNi43OSA5IDYgOUM0LjM0IDkgMyAxMC4zNCAzIDEyUzQuMzQgMTUgNiAxNUM2Ljc5IDE1IDcuNSAxNC42OSA4LjA0IDE0LjE5TDE1LjE2IDE4LjM0QzE1LjExIDE4LjU1IDE1LjA4IDE4Ljc3IDE1LjA4IDE5QzE1LjA4IDIwLjYxIDE2LjM5IDIxLjkxIDE4IDIxLjkxUzIwLjkyIDIwLjYxIDIwLjkyIDE5QzIwLjkyIDE3LjM5IDE5LjYxIDE2LjA4IDE4IDE2LjA4TTE4IDRDMTguNTUgNCAxOSA0LjQ1IDE5IDVTMTguNTUgNiAxOCA2IDE3IDUuNTUgMTcgNSAxNy40NSA0IDE4IDRNNiAxM0M1LjQ1IDEzIDUgMTIuNTUgNSAxMlM1LjQ1IDExIDYgMTEgNyAxMS40NSA3IDEyIDYuNTUgMTMgNiAxM00xOCAyMEMxNy40NSAyMCAxNyAxOS41NSAxNyAxOVMxNy40NSAxOCAxOCAxOCAxOSAxOC40NSAxOSAxOSAxOC41NSAyMCAxOCAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFya0ZpbiA9IFwiTTIyIDE2VjE4SDIwQzE4LjYgMTggMTcuMiAxNy42IDE2IDE3QzEzLjUgMTguMyAxMC41IDE4LjMgOCAxN0M2LjggMTcuNiA1LjQgMTggNCAxOEgyVjE2SDRDNS40IDE2IDYuOCAxNS41IDggMTQuN0MxMC40IDE2LjQgMTMuNiAxNi40IDE2IDE0LjdDMTcuMiAxNS41IDE4LjYgMTYgMjAgMTZIMjJNNS4yOCAxMy43OUM1LjgyIDEzLjYzIDYuMzcgMTMuMzggNi44OSAxMy4wNEw4LjAzIDEyLjI3TDkuMTYgMTMuMDdDMTAgMTMuNjYgMTEgMTQgMTIgMTRDMTMgMTQgMTQgMTMuNjYgMTQuODQgMTMuMDdMMTUuOTcgMTIuMjdMMTcuMTEgMTMuMDRDMTcuOTMgMTMuNTkgMTguODMgMTMuOSAxOS42NyAxMy45N0MxOC4yNCA3LjQgMTIuMzcgMiA2IDJDNS42NSAyIDUuMzMgMi4xOCA1LjE1IDIuNDdDNC45NyAyLjc3IDQuOTUgMy4xNCA1LjExIDMuNDVDNy4yOCA3Ljc5IDYuNjEgMTEuMjkgNS4yOCAxMy43OU0xNiAxOC43QzEzLjYgMjAuNCAxMC40IDIwLjQgOCAxOC43QzYuOCAxOS41IDUuNCAyMCA0IDIwSDJWMjJINEM1LjQgMjIgNi44IDIxLjYgOCAyMUMxMC41IDIyLjMgMTMuNSAyMi4zIDE2IDIxQzE3LjIgMjEuNiAxOC42IDIyIDIwIDIySDIyVjIwSDIwQzE4LjYgMjAgMTcuMiAxOS41IDE2IDE4LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcmtGaW5PdXRsaW5lID0gXCJNMjIgMTZWMThIMjBDMTguNiAxOCAxNy4yIDE3LjYgMTYgMTdDMTMuNSAxOC4zIDEwLjUgMTguMyA4IDE3QzYuOCAxNy42IDUuNCAxOCA0IDE4SDJWMTZINEM1LjQgMTYgNi44IDE1LjUgOCAxNC43QzEwLjQgMTYuNCAxMy42IDE2LjQgMTYgMTQuN0MxNy4yIDE1LjUgMTguNiAxNiAyMCAxNkgyMk01LjI4IDEzLjc5QzUuODIgMTMuNjMgNi4zNyAxMy4zOCA2Ljg5IDEzLjA0TDggMTIuMjhDOC42OSAxMCA4Ljc4IDcuMjcgNy41OSA0LjE0QzExLjk1IDQuODkgMTUuODkgOC42NSAxNy4zNyAxMy4xOUMxOC4xMiAxMy42NCAxOC45MSAxMy45MSAxOS42NiAxMy45N0MxOC4yNCA3LjQgMTIuMzcgMiA2IDJDNS42NSAyIDUuMzMgMi4xOCA1LjE1IDIuNDdDNC45NyAyLjc3IDQuOTUgMy4xNCA1LjExIDMuNDVDNy4yOCA3Ljc5IDYuNjEgMTEuMjkgNS4yOCAxMy43OU0xNiAxOC43QzEzLjYgMjAuNCAxMC40IDIwLjQgOCAxOC43QzYuOCAxOS41IDUuNCAyMCA0IDIwSDJWMjJINEM1LjQgMjIgNi44IDIxLjYgOCAyMUMxMC41IDIyLjMgMTMuNSAyMi4zIDE2IDIxQzE3LjIgMjEuNiAxOC42IDIyIDIwIDIySDIyVjIwSDIwQzE4LjYgMjAgMTcuMiAxOS41IDE2IDE4LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hlZXAgPSBcIk0yMCw4LjVBMi41LDIuNSAwIDAsMSAxNy41LDExQzE2LjQyLDExIDE1LjUsMTAuMzEgMTUuMTYsOS4zNkMxNC43Miw5Ljc1IDE0LjE0LDEwIDEzLjUsMTBDMTIuOTQsMTAgMTIuNDIsOS44MSAxMiw5LjVDMTEuNTgsOS44MSAxMS4wNywxMCAxMC41LDEwQzkuODYsMTAgOS4yOCw5Ljc1IDguODQsOS4zNkM4LjUsMTAuMzEgNy41OCwxMSA2LjUsMTFBMi41LDIuNSAwIDAsMSA0LDguNUM0LDcuMjYgNC45MSw2LjIzIDYuMSw2LjA0QzYuMDQsNS44NyA2LDUuNjkgNiw1LjVBMS41LDEuNSAwIDAsMSA3LjUsNEM3LjcsNCA3Ljg5LDQuMDQgOC4wNiw0LjExQzguMjMsMy40NyA4LjgxLDMgOS41LDNDOS43NSwzIDEwLDMuMDcgMTAuMTgsMy4xN0MxMC41LDIuNSAxMS4xOSwyIDEyLDJDMTIuODEsMiAxMy41LDIuNSAxMy44MiwzLjE3QzE0LDMuMDcgMTQuMjUsMyAxNC41LDNDMTUuMTksMyAxNS43NywzLjQ3IDE1Ljk0LDQuMTFDMTYuMTEsNC4wNCAxNi4zLDQgMTYuNSw0QTEuNSwxLjUgMCAwLDEgMTgsNS41QzE4LDUuNjkgMTcuOTYsNS44NyAxNy45LDYuMDRDMTkuMDksNi4yMyAyMCw3LjI2IDIwLDguNU0xMCwxMkExLDEgMCAwLDAgOSwxM0ExLDEgMCAwLDAgMTAsMTRBMSwxIDAgMCwwIDExLDEzQTEsMSAwIDAsMCAxMCwxMk0xNCwxMkExLDEgMCAwLDAgMTMsMTNBMSwxIDAgMCwwIDE0LDE0QTEsMSAwIDAsMCAxNSwxM0ExLDEgMCAwLDAgMTQsMTJNMjAuMjMsMTAuNjZDMTkuNTksMTEuNDcgMTguNjEsMTIgMTcuNSwxMkMxNy4wNSwxMiAxNi42MiwxMS45IDE2LjIxLDExLjczQzE2LjIsMTQuMjggMTUuODMsMTcuMzYgMTQuNDUsMTguOTVDMTMuOTMsMTkuNTQgMTMuMywxOS44NiAxMi41LDE5Ljk2VjE4SDExLjVWMTkuOTZDMTAuNywxOS44NiAxMC4wNywxOS41NSA5LjU1LDE4Ljk1QzguMTYsMTcuMzUgNy43OSwxNC4yOSA3Ljc4LDExLjc0QzcuMzgsMTEuOSA2Ljk1LDEyIDYuNSwxMkM1LjM5LDEyIDQuNDEsMTEuNDcgMy43NywxMC42NkMyLjg4LDExLjU1IDIsMTIgMiwxMkMyLDEyIDMsMTQgNSwxNEM1LjM2LDE0IDUuNjQsMTMuOTYgNS44OCwxMy45MUM2LjIyLDE3LjczIDcuNTgsMjIgMTIsMjJDMTYuNDIsMjIgMTcuNzgsMTcuNzMgMTguMTIsMTMuOTFDMTguMzYsMTMuOTYgMTguNjQsMTQgMTksMTRDMjEsMTQgMjIsMTIgMjIsMTJDMjIsMTIgMjEuMTIsMTEuNTUgMjAuMjMsMTAuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkID0gXCJNMTIsMUwzLDVWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzE3LjE2LDIxLjc0IDIxLDE2LjU1IDIxLDExVjVMMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRBY2NvdW50ID0gXCJNMTIsMUwzLDVWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzE3LjE2LDIxLjc0IDIxLDE2LjU1IDIxLDExVjVMMTIsMU0xMiw1QTMsMyAwIDAsMSAxNSw4QTMsMyAwIDAsMSAxMiwxMUEzLDMgMCAwLDEgOSw4QTMsMyAwIDAsMSAxMiw1TTE3LjEzLDE3QzE1LjkyLDE4Ljg1IDE0LjExLDIwLjI0IDEyLDIwLjkyQzkuODksMjAuMjQgOC4wOCwxOC44NSA2Ljg3LDE3QzYuNTMsMTYuNSA2LjI0LDE2IDYsMTUuNDdDNiwxMy44MiA4LjcxLDEyLjQ3IDEyLDEyLjQ3QzE1LjI5LDEyLjQ3IDE4LDEzLjc5IDE4LDE1LjQ3QzE3Ljc2LDE2IDE3LjQ3LDE2LjUgMTcuMTMsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkQWNjb3VudE91dGxpbmUgPSBcIk0xMiwxTDMsNVYxMUMzLDE2LjU1IDYuODQsMjEuNzQgMTIsMjNDMTcuMTYsMjEuNzQgMjEsMTYuNTUgMjEsMTFWNUwxMiwxTTEyLDMuMThMMTksNi4zVjExLjIyQzE5LDEyLjkyIDE4LjUsMTQuNjUgMTcuNjUsMTYuMTdDMTYsMTQuOTQgMTMuMjYsMTQuNSAxMiwxNC41QzEwLjc0LDE0LjUgOCwxNC45NCA2LjM1LDE2LjE3QzUuNSwxNC42NSA1LDEyLjkyIDUsMTEuMjJWNi4zTDEyLDMuMThNMTIsNkEzLjUsMy41IDAgMCwwIDguNSw5LjVBMy41LDMuNSAwIDAsMCAxMiwxM0EzLjUsMy41IDAgMCwwIDE1LjUsOS41QTMuNSwzLjUgMCAwLDAgMTIsNk0xMiw4QTEuNSwxLjUgMCAwLDEgMTMuNSw5LjVBMS41LDEuNSAwIDAsMSAxMiwxMUExLjUsMS41IDAgMCwxIDEwLjUsOS41QTEuNSwxLjUgMCAwLDEgMTIsOE0xMiwxNi41QzEzLjU3LDE2LjUgMTUuNjQsMTcuMTEgMTYuNTMsMTcuODRDMTUuMjksMTkuMzggMTMuNywyMC41NSAxMiwyMUMxMC4zLDIwLjU1IDguNzEsMTkuMzggNy40NywxNy44NEM4LjM3LDE3LjExIDEwLjQzLDE2LjUgMTIsMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRBY2NvdW50VmFyaWFudCA9IFwiTTE3IDExQzE3LjMgMTEgMTcuNyAxMSAxOCAxMS4xVjYuM0wxMC41IDNMMyA2LjNWMTEuMkMzIDE1LjcgNi4yIDIwIDEwLjUgMjFDMTEuMSAyMC45IDExLjYgMjAuNyAxMi4xIDIwLjVDMTEuNCAxOS41IDExIDE4LjMgMTEgMTdDMTEgMTMuNyAxMy43IDExIDE3IDExTTE3IDEzQzE0LjggMTMgMTMgMTQuOCAxMyAxN1MxNC44IDIxIDE3IDIxIDIxIDE5LjIgMjEgMTcgMTkuMiAxMyAxNyAxM00xNyAxNC40QzE3LjYgMTQuNCAxOC4xIDE0LjkgMTguMSAxNS41QzE4LjEgMTYuMSAxNy42IDE2LjYgMTcgMTYuNlMxNS45IDE2LjEgMTUuOSAxNS41IDE2LjQgMTQuNCAxNyAxNC40TTE3IDE5LjhDMTYuMSAxOS44IDE1LjMgMTkuMyAxNC44IDE4LjZDMTQuOSAxNy45IDE2LjMgMTcuNSAxNyAxNy41UzE5LjIgMTcuOSAxOS4yIDE4LjZDMTguNyAxOS4zIDE3LjkgMTkuOCAxNyAxOS44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZEFjY291bnRWYXJpYW50T3V0bGluZSA9IFwiTTE3IDE0LjRDMTcuNiAxNC40IDE4LjEgMTQuOSAxOC4xIDE1LjVTMTcuNiAxNi42IDE3IDE2LjYgMTUuOSAxNi4xIDE1LjkgMTUuNSAxNi40IDE0LjQgMTcgMTQuNE0xNyAxNy41QzE2LjMgMTcuNSAxNC44IDE3LjkgMTQuOCAxOC42QzE1LjMgMTkuMyAxNi4xIDE5LjggMTcgMTkuOFMxOC43IDE5LjMgMTkuMiAxOC42QzE5LjIgMTcuOSAxNy43IDE3LjUgMTcgMTcuNU0xOCAxMS4xVjYuM0wxMC41IDNMMyA2LjNWMTEuMkMzIDE1LjcgNi4yIDIwIDEwLjUgMjFDMTEuMSAyMC45IDExLjYgMjAuNyAxMi4xIDIwLjVDMTMuMiAyMiAxNSAyMyAxNyAyM0MyMC4zIDIzIDIzIDIwLjMgMjMgMTdDMjMgMTQgMjAuOCAxMS42IDE4IDExLjFNMTEgMTdDMTEgMTcuNiAxMS4xIDE4LjEgMTEuMiAxOC42QzExIDE4LjcgMTAuNyAxOC44IDEwLjUgMTguOUM3LjMgMTcuOSA1IDE0LjcgNSAxMS4yVjcuNkwxMC41IDUuMkwxNiA3LjZWMTEuMUMxMy4yIDExLjYgMTEgMTQgMTEgMTdNMTcgMjFDMTQuOCAyMSAxMyAxOS4yIDEzIDE3UzE0LjggMTMgMTcgMTMgMjEgMTQuOCAyMSAxNyAxOS4yIDIxIDE3IDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZEFpcnBsYW5lID0gXCJNMTIsMUwzLDVWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzE3LjE2LDIxLjc0IDIxLDE2LjU1IDIxLDExVjVMMTIsMU0xMiw1LjY4QzEyLjUsNS42OCAxMi45NSw2LjExIDEyLjk1LDYuNjNWMTAuMTFMMTgsMTMuMjZWMTQuNTNMMTIuOTUsMTIuOTVWMTYuNDJMMTQuMjEsMTcuMzdWMTguMzJMMTIsMTcuNjhMOS43OSwxOC4zMlYxNy4zN0wxMS4wNSwxNi40MlYxMi45NUw2LDE0LjUzVjEzLjI2TDExLjA1LDEwLjExVjYuNjNDMTEuMDUsNi4xMSAxMS41LDUuNjggMTIsNS42OFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRBaXJwbGFuZU91dGxpbmUgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOEw1LDYuM1YxMS4yMkM1LDE1LjU0IDguMjUsMjAgMTIsMjFNMTIsNS42OEMxMi41LDUuNjggMTIuOTUsNi4xMSAxMi45NSw2LjYzVjEwLjExTDE4LDEzLjI2VjE0LjUzTDEyLjk1LDEyLjk1VjE2LjQyTDE0LjIxLDE3LjM3VjE4LjMyTDEyLDE3LjY4TDkuNzksMTguMzJWMTcuMzdMMTEuMDUsMTYuNDJWMTIuOTVMNiwxNC41M1YxMy4yNkwxMS4wNSwxMC4xMVY2LjYzQzExLjA1LDYuMTEgMTEuNSw1LjY4IDEyLDUuNjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkQWxlcnQgPSBcIk0xMiwxTDMsNVYxMUMzLDE2LjU1IDYuODQsMjEuNzQgMTIsMjNDMTcuMTYsMjEuNzQgMjEsMTYuNTUgMjEsMTFWNU0xMSw3SDEzVjEzSDExTTExLDE1SDEzVjE3SDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkQWxlcnRPdXRsaW5lID0gXCJNMjEsMTFDMjEsMTYuNTUgMTcuMTYsMjEuNzQgMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxTDIxLDVWMTFNMTIsMjFDMTUuNzUsMjAgMTksMTUuNTQgMTksMTEuMjJWNi4zTDEyLDMuMThMNSw2LjNWMTEuMjJDNSwxNS41NCA4LjI1LDIwIDEyLDIxTTExLDdIMTNWMTNIMTFWN00xMSwxNUgxM1YxN0gxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRCdWcgPSBcIk0xMSAxM0gxM1YxNEgxMVYxM00yMSA1VjExQzIxIDE2LjUgMTcuMiAyMS43IDEyIDIzQzYuOCAyMS43IDMgMTYuNSAzIDExVjVMMTIgMUwyMSA1TTE3IDEwSDE0LjhDMTQuNiA5LjQgMTQuMiA4LjkgMTMuNyA4LjVMMTQuOSA3LjNMMTQuMiA2LjZMMTIuOCA4SDEyQzExLjggOCAxMS41IDggMTEuMyA4LjFMOS45IDYuNkw5LjEgNy40TDEwLjMgOC42QzkuOCA4LjkgOS40IDkuNCA5LjIgMTBIN1YxMUg5VjEySDdWMTNIOVYxNEg3VjE1SDkuMkM5LjYgMTYuMiAxMC43IDE3IDEyIDE3UzE0LjQgMTYuMiAxNC44IDE1SDE3VjE0SDE1VjEzSDE3VjEySDE1VjExSDE3VjEwTTExIDEySDEzVjExSDExVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZEJ1Z091dGxpbmUgPSBcIk05LjkgNi42TDkuMSA3LjRMMTAuMyA4LjZDOS44IDguOSA5LjQgOS40IDkuMiAxMEg3VjExSDlWMTJIN1YxM0g5VjE0SDdWMTVIOS4yQzkuNiAxNi4yIDEwLjcgMTcgMTIgMTdTMTQuNCAxNi4yIDE0LjggMTVIMTdWMTRIMTVWMTNIMTdWMTJIMTVWMTFIMTdWMTBIMTQuOEMxNC42IDkuNCAxNC4yIDguOSAxMy43IDguNUwxNC45IDcuM0wxNC4yIDYuNkwxMi44IDhIMTJDMTEuOCA4IDExLjUgOCAxMS4zIDguMUw5LjkgNi42TTExIDExSDEzVjEySDExVjExTTExIDEzSDEzVjE0SDExVjEzTTIxIDExQzIxIDE2LjUgMTcuMiAyMS43IDEyIDIzQzYuOCAyMS43IDMgMTYuNSAzIDExVjVMMTIgMUwyMSA1VjExTTEyIDIxQzE1LjggMjAgMTkgMTUuNSAxOSAxMS4yVjYuM0wxMiAzLjJMNSA2LjNWMTEuMkM1IDE1LjUgOC4yIDIwIDEyIDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZENhciA9IFwiTTE0LjQyIDcuNUwxNiAxMUg4TDkuNDIgNy41SDE0LjQyTTkgMTJDOC40NSAxMiA4IDEyLjQ1IDggMTNTOC40NSAxNCA5IDE0IDEwIDEzLjU1IDEwIDEzIDkuNTUgMTIgOSAxMk0xNSAxMkMxNC40NSAxMiAxNCAxMi40NSAxNCAxM1MxNC40NSAxNCAxNSAxNCAxNiAxMy41NSAxNiAxMyAxNS41NSAxMiAxNSAxMk0yMSA1VjExQzIxIDE2LjU1IDE3LjE2IDIxLjc0IDEyIDIzQzYuODQgMjEuNzQgMyAxNi41NSAzIDExVjVMMTIgMUwyMSA1TTE4IDEyTDE1Ljg0IDdDMTUuNjQgNi40MiAxNS4wOCA2IDE0LjQyIDZIOS40MkM4Ljc2IDYgOC4yIDYuNDIgOCA3TDYgMTJWMTZDNiAxNi41NSA2LjQ1IDE3IDcgMTdIOEM4LjU1IDE3IDkgMTYuNTUgOSAxNlYxNUgxNVYxNkMxNSAxNi41NSAxNS40NSAxNyAxNiAxN0gxN0MxNy41NSAxNyAxOCAxNi41NSAxOCAxNlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRDaGVjayA9IFwiTTEwLDE3TDYsMTNMNy40MSwxMS41OUwxMCwxNC4xN0wxNi41OSw3LjU4TDE4LDlNMTIsMUwzLDVWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzE3LjE2LDIxLjc0IDIxLDE2LjU1IDIxLDExVjVMMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRDaGVja091dGxpbmUgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOEw1LDYuM1YxMS4yMkM1LDE1LjU0IDguMjUsMjAgMTIsMjFNMTAsMTdMNiwxM0w3LjQxLDExLjU5TDEwLDE0LjE3TDE2LjU5LDcuNThMMTgsOVwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZENyb3NzID0gXCJNMTIsMUwzLDVWMTFDMywxNi41IDYuOCwyMS43IDEyLDIzQzE3LjIsMjEuNyAyMSwxNi41IDIxLDExVjVMMTIsMU0xNiwxMEgxM1YxOEgxMVYxMEg4VjhIMTFWNUgxM1Y4SDE2VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZENyb3NzT3V0bGluZSA9IFwiTTIxLDExQzIxLDE2LjUgMTcuMiwyMS43IDEyLDIzQzYuOCwyMS43IDMsMTYuNSAzLDExVjVMMTIsMUwyMSw1VjExTTEyLDIxQzE1LjgsMjAgMTksMTUuNSAxOSwxMS4yVjYuM0wxMiwzLjJMNSw2LjNWMTEuMkM1LDE1LjUgOC4zLDIwIDEyLDIxTTE2LDlIMTNWNkgxMVY5SDhWMTFIMTFWMTlIMTNWMTFIMTZWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRFZGl0ID0gXCJNMjEuNyAxNC40TDIwLjcgMTUuNEwxOC42IDEzLjNMMTkuNiAxMi4zQzE5LjggMTIuMSAyMC4yIDEyLjEgMjAuNCAxMi4zTDIxLjcgMTMuNkMyMS45IDEzLjggMjEuOSAxNC4xIDIxLjcgMTQuNE0xMiAxOS45TDE4LjEgMTMuOEwyMC4yIDE1LjlMMTQuMSAyMkgxMlYxOS45TTEwIDE5LjFMMjEgOC4xVjVMMTIgMUwzIDVWMTFDMyAxNS44IDUuOSAyMC4zIDEwIDIyLjNWMTkuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRFZGl0T3V0bGluZSA9IFwiTTIxLjcgMTMuNkwyMC40IDEyLjNDMjAuMyAxMi4yIDIwLjIgMTIuMSAyMCAxMi4xQzE5LjkgMTIuMSAxOS43IDEyLjIgMTkuNiAxMi4zTDE4LjYgMTMuM0wyMC42IDE1LjNMMjEuNiAxNC4zQzIxLjkgMTQuMSAyMS45IDEzLjggMjEuNyAxMy42TTEyIDE5LjlWMjJIMTQuMUwyMC4yIDE1LjlMMTguMiAxMy44TDEyIDE5LjlNMTAgMjIuM0M1LjkgMjAuMyAzIDE1LjggMyAxMVY1TDEyIDFMMjEgNVY4LjFMMTkgMTAuMVY2LjNMMTIgMy4yTDUgNi4zVjExLjJDNSAxNC43IDcuMiAxOC4zIDEwIDIwLjFWMjIuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRIYWxmID0gXCJNMTIgMUwzIDVWMTFDMyAxNi41IDYuOCAyMS43IDEyIDIzVjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkSGFsZkZ1bGwgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOFYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRIb21lID0gXCJNMTEsMTNIMTNWMTZIMTZWMTFIMThMMTIsNkw2LDExSDhWMTZIMTFWMTNNMTIsMUwyMSw1VjExQzIxLDE2LjU1IDE3LjE2LDIxLjc0IDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRIb21lT3V0bGluZSA9IFwiTTIxLDExQzIxLDE2LjU1IDE3LjE2LDIxLjc0IDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMUwyMSw1VjExTTEyLDIxQzE1Ljc1LDIwIDE5LDE1LjU0IDE5LDExLjIyVjYuM0wxMiwzLjE4TDUsNi4zVjExLjIyQzUsMTUuNTQgOC4yNSwyMCAxMiwyMU0xMSwxNEgxM1YxN0gxNlYxMkgxOEwxMiw3TDYsMTJIOFYxN0gxMVYxNFwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZEtleSA9IFwiTTEyLDhBMSwxIDAgMCwxIDEzLDlBMSwxIDAgMCwxIDEyLDEwQTEsMSAwIDAsMSAxMSw5QTEsMSAwIDAsMSAxMiw4TTIxLDExQzIxLDE2LjU1IDE3LjE2LDIxLjc0IDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMUwyMSw1VjExTTEyLDZBMywzIDAgMCwwIDksOUM5LDEwLjMxIDkuODMsMTEuNDIgMTEsMTEuODNWMThIMTNWMTZIMTVWMTRIMTNWMTEuODNDMTQuMTcsMTEuNDIgMTUsMTAuMzEgMTUsOUEzLDMgMCAwLDAgMTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRLZXlPdXRsaW5lID0gXCJNMjEsMTFDMjEsMTYuNTUgMTcuMTYsMjEuNzQgMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxTDIxLDVWMTFNMTIsMjFDMTUuNzUsMjAgMTksMTUuNTQgMTksMTEuMjJWNi4zTDEyLDMuMThMNSw2LjNWMTEuMjJDNSwxNS41NCA4LjI1LDIwIDEyLDIxTTEyLDZBMywzIDAgMCwxIDE1LDlDMTUsMTAuMzEgMTQuMTcsMTEuNDIgMTMsMTEuODNWMTRIMTVWMTZIMTNWMThIMTFWMTEuODNDOS44MywxMS40MiA5LDEwLjMxIDksOUEzLDMgMCAwLDEgMTIsNk0xMiw4QTEsMSAwIDAsMCAxMSw5QTEsMSAwIDAsMCAxMiwxMEExLDEgMCAwLDAgMTMsOUExLDEgMCAwLDAgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRMaW5rVmFyaWFudCA9IFwiTTEyLDFMMyw1VjExQzMsMTYuNTUgNi44NCwyMS43NCAxMiwyM0MxNy4xNiwyMS43NCAyMSwxNi41NSAyMSwxMVY1TDEyLDFNMTQuMjgsMTQuMDhMMTIuMjYsMTYuMUMxMS42NiwxNi43IDEwLjg3LDE3IDEwLjA4LDE3QzkuMjksMTcgOC41LDE2LjcgNy45LDE2LjFDNi43LDE0LjkgNi43LDEyLjk1IDcuOSwxMS43NEw5LjE1LDEwLjVMOS4xNCwxMS4wNkM5LjE0LDExLjUgOS4yMSwxMS45NSA5LjM2LDEyLjM3TDkuNDEsMTIuNUw5LjA0LDEyLjg3QzguNzYsMTMuMTUgOC42LDEzLjUzIDguNiwxMy45MkM4LjYsMTQuMzIgOC43NiwxNC42OSA5LjA0LDE0Ljk3QzkuNiwxNS41MyAxMC41NywxNS41MyAxMS4xMywxNC45N0wxMy4xNCwxMi45NkMxMy40MywxMi42NyAxMy41OCwxMi4zIDEzLjU4LDExLjkxQzEzLjU4LDExLjUgMTMuNDMsMTEuMTQgMTMuMTUsMTAuODZDMTMsMTAuNzEgMTIuOSwxMC41IDEyLjksMTAuMjlDMTIuOSwxMC4wOCAxMyw5Ljg4IDEzLjE1LDkuNzNDMTMuNDUsOS40MiAxNCw5LjQzIDE0LjI4LDkuNzNDMTQuODYsMTAuMzEgMTUuMTgsMTEuMDggMTUuMTgsMTEuOUMxNS4xOCwxMi43MyAxNC44NiwxMy41IDE0LjI4LDE0LjA4TTE3LjEsMTEuMjZMMTUuODUsMTIuNUwxNS44NiwxMS45NEMxNS44NiwxMS41IDE1Ljc5LDExLjA2IDE1LjY0LDEwLjY0TDE1LjYsMTAuNUwxNS45NiwxMC4xM0MxNi4yNSw5Ljg1IDE2LjQsOS41IDE2LjQsOS4wOEMxNi40LDguNjkgMTYuMjUsOC4zMiAxNS45Nyw4LjA0QzE1LjQsNy40NyAxNC40Myw3LjQ3IDEzLjg3LDguMDRMMTEuODYsMTAuMDVDMTEuNTgsMTAuMzMgMTEuNDIsMTAuNyAxMS40MiwxMS4xQzExLjQyLDExLjUgMTEuNTcsMTEuODYgMTEuODYsMTIuMTRDMTIsMTIuMjkgMTIuMSwxMi41IDEyLjEsMTIuNzFDMTIuMSwxMi45MyAxMiwxMy4xMyAxMS44NSwxMy4yOEMxMS43LDEzLjQ0IDExLjUsMTMuNSAxMS4yOSwxMy41QzExLjA5LDEzLjUgMTAuODgsMTMuNDMgMTAuNzIsMTMuMjhDOS41LDEyLjA4IDkuNSwxMC4xMiAxMC43Miw4LjkyTDEyLjc0LDYuOUMxMy45NSw1LjcgMTUuOSw1LjcgMTcuMSw2LjlDMTcuNjgsNy41IDE4LDguMjYgMTgsOS4wOEMxOCw5LjkgMTcuNjgsMTAuNjggMTcuMSwxMS4yNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRMaW5rVmFyaWFudE91dGxpbmUgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOEw1LDYuM1YxMS4yMkM1LDE1LjU0IDguMjUsMjAgMTIsMjFNMTQuMjgsOS43M0MxNC44NiwxMC4zMSAxNS4xOCwxMS4wOCAxNS4xOCwxMS45QzE1LjE4LDEyLjczIDE0Ljg2LDEzLjUgMTQuMjgsMTQuMDhMMTIuMjYsMTYuMUMxMS42NiwxNi43IDEwLjg3LDE3IDEwLjA4LDE3QzkuMjksMTcgOC41LDE2LjcgNy45LDE2LjFDNi43LDE0LjkgNi43LDEyLjk1IDcuOSwxMS43NEw5LjE1LDEwLjVMOS4xNCwxMS4wNkM5LjE0LDExLjUgOS4yMSwxMS45NSA5LjM2LDEyLjM2TDkuNCwxMi41TDkuMDQsMTIuODdDOC43NSwxMy4xNSA4LjYsMTMuNSA4LjYsMTMuOTJDOC42LDE0LjMxIDguNzUsMTQuNjggOS4wMywxNC45NkM5LjYsMTUuNTMgMTAuNTcsMTUuNTMgMTEuMTMsMTQuOTdMMTMuMTQsMTIuOTVDMTMuNDMsMTIuNjcgMTMuNTgsMTIuMyAxMy41OCwxMS45MUMxMy41OCwxMS41IDEzLjQzLDExLjE0IDEzLjE0LDEwLjg2QzEzLDEwLjcxIDEyLjksMTAuNSAxMi45LDEwLjI5QzEyLjksMTAuMDggMTMsOS44NyAxMy4xNCw5LjcyQzEzLjQ1LDkuNDIgMTQsOS40MiAxNC4yOCw5LjczTTE4LDkuMDhDMTgsOS45IDE3LjY4LDEwLjY4IDE3LjEsMTEuMjZMMTUuODUsMTIuNUwxNS44NiwxMS45NEMxNS44NiwxMS41IDE1Ljc5LDExLjA2IDE1LjY0LDEwLjY0TDE1LjU5LDEwLjVMMTUuOTYsMTAuMTNDMTYuMjUsOS44NSAxNi40LDkuNSAxNi40LDkuMDhDMTYuNCw4LjY5IDE2LjI1LDguMzIgMTUuOTYsOC4wNEMxNS40LDcuNDcgMTQuNDMsNy40NyAxMy44Nyw4LjAzTDExLjg2LDEwLjA1QzExLjU3LDEwLjMzIDExLjQyLDEwLjcgMTEuNDIsMTEuMUMxMS40MiwxMS41IDExLjU3LDExLjg2IDExLjg1LDEyLjE0QzEyLDEyLjI5IDEyLjEsMTIuNSAxMi4xLDEyLjcxQzEyLjEsMTIuOTMgMTIsMTMuMTMgMTEuODUsMTMuMjhDMTEuNywxMy40MyAxMS41LDEzLjUgMTEuMjksMTMuNUMxMS4wOSwxMy41IDEwLjg4LDEzLjQzIDEwLjcyLDEzLjI4QzkuNSwxMi4wNyA5LjUsMTAuMTIgMTAuNzIsOC45MkwxMi43NCw2LjlDMTMuOTUsNS43IDE1LjksNS43IDE3LjEsNi45QzE3LjY4LDcuNSAxOCw4LjI2IDE4LDkuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkTG9jayA9IFwiTTEyLDFMMyw1VjExQzMsMTYuNTUgNi44NCwyMS43NCAxMiwyM0MxNy4xNiwyMS43NCAyMSwxNi41NSAyMSwxMVY1TDEyLDFNMTIsN0MxMy40LDcgMTQuOCw4LjEgMTQuOCw5LjVWMTFDMTUuNCwxMSAxNiwxMS42IDE2LDEyLjNWMTUuOEMxNiwxNi40IDE1LjQsMTcgMTQuNywxN0g5LjJDOC42LDE3IDgsMTYuNCA4LDE1LjdWMTIuMkM4LDExLjYgOC42LDExIDkuMiwxMVY5LjVDOS4yLDguMSAxMC42LDcgMTIsN00xMiw4LjJDMTEuMiw4LjIgMTAuNSw4LjcgMTAuNSw5LjVWMTFIMTMuNVY5LjVDMTMuNSw4LjcgMTIuOCw4LjIgMTIsOC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZExvY2tPdXRsaW5lID0gXCJNMjEsMTFDMjEsMTYuNTUgMTcuMTYsMjEuNzQgMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxTDIxLDVWMTFNMTIsMjFDMTUuNzUsMjAgMTksMTUuNTQgMTksMTEuMjJWNi4zTDEyLDMuMThMNSw2LjNWMTEuMjJDNSwxNS41NCA4LjI1LDIwIDEyLDIxTTE0LjgsMTFWOS41QzE0LjgsOC4xIDEzLjQsNyAxMiw3QzEwLjYsNyA5LjIsOC4xIDkuMiw5LjVWMTFDOC42LDExIDgsMTEuNiA4LDEyLjJWMTUuN0M4LDE2LjQgOC42LDE3IDkuMiwxN0gxNC43QzE1LjQsMTcgMTYsMTYuNCAxNiwxNS44VjEyLjNDMTYsMTEuNiAxNS40LDExIDE0LjgsMTFNMTMuNSwxMUgxMC41VjkuNUMxMC41LDguNyAxMS4yLDguMiAxMiw4LjJDMTIuOCw4LjIgMTMuNSw4LjcgMTMuNSw5LjVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMC41LDIxLjIyTDE5LjIzLDIyLjVMMTcsMjAuMjVDMTUuNTcsMjEuNTcgMTMuODcsMjIuNTQgMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNi4yN0wxLDQuMjdNMTIsMUwyMSw1VjExQzIxLDEzLjI4IDIwLjM1LDE1LjUgMTkuMjMsMTcuNDFMNS42NSwzLjgyTDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkT2ZmT3V0bGluZSA9IFwiTTEsNC4yN0wzLDYuMjdWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzEzLjg3LDIyLjU0IDE1LjU3LDIxLjU2IDE2Ljk3LDIwLjI0TDE5LjIzLDIyLjVMMjAuNSwyMS4yMkwyLjI4LDNMMSw0LjI3TTEyLDIxQzguMjUsMjAgNSwxNS41NCA1LDExLjIyVjguMjdMMTUuNTksMTguODZDMTQuNTMsMTkuODkgMTMuMywyMC42NSAxMiwyMU0yMSw1VjExQzIxLDEzLjI4IDIwLjM1LDE1LjUgMTkuMjMsMTcuNEwxNy43NywxNS45NUMxOC41NCwxNC41IDE5LDEyLjg0IDE5LDExLjIyVjYuM0wxMiwzLjE4TDcuMTYsNS4zNEw1LjY1LDMuODJMMTIsMUwyMSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZE91dGxpbmUgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOEw1LDYuM1YxMS4yMkM1LDE1LjU0IDguMjUsMjAgMTIsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkUGx1cyA9IFwiTTE5LDIwVjIyLjk3SDE3VjIwSDE0VjE4SDE3VjE1SDE5VjE4SDIyVjIwSDE5TTEyLDFMMjEsNVYxMUMyMSwxMS45IDIwLjksMTIuNzggMjAuNzEsMTMuNjVDMTkuOSwxMy4yMyAxOSwxMyAxOCwxM0E2LDYgMCAwLDAgMTIsMTlDMTIsMjAuMzYgMTIuNDUsMjEuNjIgMTMuMjIsMjIuNjJMMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFBsdXNPdXRsaW5lID0gXCJNMTksMjBWMjIuOTdIMTdWMjBIMTRWMThIMTdWMTVIMTlWMThIMjJWMjBIMTlNMjEsMTFDMjEsMTEuOSAyMC45LDEyLjc4IDIwLjcxLDEzLjY1QzIwLjEzLDEzLjM1IDE5LjUsMTMuMTUgMTguODEsMTMuMDVDMTguOTMsMTIuNDUgMTksMTEuODMgMTksMTEuMjJWNi4zTDEyLDMuMThMNSw2LjNWMTEuMjJDNSwxNS41NCA4LjI1LDIwIDEyLDIxTDEyLjMxLDIwLjkxQzEyLjUsMjEuNTMgMTIuODMsMjIuMTEgMTMuMjIsMjIuNjJMMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxTDIxLDVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkUmVmcmVzaCA9IFwiTTE4IDEyQzE5IDEyIDIwIDEyLjIgMjAuOSAxMi43QzIxIDEyLjEgMjEgMTEuNiAyMSAxMVY1TDEyIDFMMyA1VjExQzMgMTYuNSA2LjggMjEuNyAxMiAyM0MxMi40IDIyLjkgMTIuNyAyMi44IDEzIDIyLjdDMTIgMjEuNSAxMS41IDIwIDExLjUgMTguNUMxMS41IDE0LjkgMTQuNCAxMiAxOCAxMk0xOCAxNC41QzE5LjEgMTQuNSAyMC4xIDE0LjkgMjAuOCAxNS43TDIyIDE0LjVWMTguNUgxOEwxOS44IDE2LjdDMTkuMyAxNi4zIDE4LjcgMTYgMTggMTZDMTYuNiAxNiAxNS41IDE3LjEgMTUuNSAxOC41UzE2LjYgMjEgMTggMjFDMTguOCAyMSAxOS41IDIwLjYgMjAgMjBIMjEuN0MyMS4xIDIxLjUgMTkuNyAyMi41IDE4IDIyLjVDMTUuOCAyMi41IDE0IDIwLjcgMTQgMTguNVMxNS44IDE0LjUgMTggMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRSZWZyZXNoT3V0bGluZSA9IFwiTTEyIDIxQzguMiAyMCA1IDE1LjUgNSAxMS4yVjYuM0wxMiAzLjJMMTkgNi4zVjEyLjFDMTkuNyAxMi4yIDIwLjMgMTIuNCAyMC45IDEyLjdDMjEgMTIuMSAyMSAxMS42IDIxIDExVjVMMTIgMUwzIDVWMTFDMyAxNi41IDYuOCAyMS43IDEyIDIzQzEyLjQgMjIuOSAxMi43IDIyLjggMTMgMjIuN0MxMi42IDIyLjIgMTIuMiAyMS42IDEyIDIxTTE4IDE0LjVDMTkuMSAxNC41IDIwLjEgMTQuOSAyMC44IDE1LjdMMjIgMTQuNVYxOC41SDE4TDE5LjggMTYuN0MxOS4zIDE2LjMgMTguNyAxNiAxOCAxNkMxNi42IDE2IDE1LjUgMTcuMSAxNS41IDE4LjVTMTYuNiAyMSAxOCAyMUMxOC44IDIxIDE5LjUgMjAuNiAyMCAyMEgyMS43QzIxLjEgMjEuNSAxOS43IDIyLjUgMTggMjIuNUMxNS44IDIyLjUgMTQgMjAuNyAxNCAxOC41UzE1LjggMTQuNSAxOCAxNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFJlbW92ZSA9IFwiTTE5LjQzLDE5TDIxLjUsMjEuMTFMMjAuMTIsMjIuNUwxOC4wMywyMC40MUwxNS45MSwyMi41M0wxNC41LDIxLjExTDE2LjYxLDE5TDE0LjUsMTYuODZMMTUuODgsMTUuNDdMMTgsMTcuNTlMMjAuMTIsMTUuNDdMMjEuNTUsMTYuOUwxOS40MywxOU0xMiwxTDIxLDVWMTFDMjEsMTEuOSAyMC45LDEyLjc4IDIwLjcxLDEzLjY1QzE5LjksMTMuMjMgMTksMTMgMTgsMTNBNiw2IDAgMCwwIDEyLDE5QzEyLDIwLjM2IDEyLjQ1LDIxLjYyIDEzLjIyLDIyLjYyTDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRSZW1vdmVPdXRsaW5lID0gXCJNMTkuNDMsMTlMMjEuNSwyMS4xMUwyMC4xMiwyMi41TDE4LjAzLDIwLjQxTDE1LjkxLDIyLjUzTDE0LjUsMjEuMTFMMTYuNjEsMTlMMTQuNSwxNi44NkwxNS44OCwxNS40N0wxOCwxNy41OUwyMC4xMiwxNS40N0wyMS41NSwxNi45TDE5LjQzLDE5TTIxLDExQzIxLDExLjkgMjAuOSwxMi43OCAyMC43MSwxMy42NUMyMC4xMywxMy4zNSAxOS41LDEzLjE1IDE4LjgxLDEzLjA1QzE4LjkzLDEyLjQ1IDE5LDExLjgzIDE5LDExLjIyVjYuM0wxMiwzLjE4TDUsNi4zVjExLjIyQzUsMTUuNTQgOC4yNSwyMCAxMiwyMUwxMi4zMSwyMC45MUMxMi41LDIxLjUzIDEyLjgzLDIyLjExIDEzLjIyLDIyLjYyTDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMUwyMSw1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFNlYXJjaCA9IFwiTTEyLDlBMywzIDAgMCwxIDE1LDEyQTMsMyAwIDAsMSAxMiwxNUEzLDMgMCAwLDEgOSwxMkEzLDMgMCAwLDEgMTIsOU0xNy44NiwxOS4zMUMxNi4yMywyMS4yMiAxNC4yOCwyMi40NSAxMiwyM0M5LjQ0LDIyLjM5IDcuMywyMC45MyA1LjU4LDE4LjYzQzMuODYsMTYuMzQgMywxMy44IDMsMTFWNUwxMiwxTDIxLDVWMTFDMjEsMTMuMzkgMjAuMzYsMTUuNjEgMTkuMDgsMTcuNjdMMTYuMTcsMTQuNzZDMTYuNjksMTMuOTcgMTcsMTMgMTcsMTJBNSw1IDAgMCwwIDEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QzEzLDE3IDEzLjk3LDE2LjY5IDE0Ljc2LDE2LjE3TDE3Ljg2LDE5LjMxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFN0YXIgPSBcIk0xMiAxTDMgNVYxMUMzIDE2LjU1IDYuODQgMjEuNzQgMTIgMjNDMTcuMTYgMjEuNzQgMjEgMTYuNTUgMjEgMTFWNUwxMiAxTTE1LjA4IDE2TDEyIDE0LjE1TDguOTMgMTZMOS43NCAxMi41TDcuMDMgMTAuMTZMMTAuNjEgOS44NUwxMiA2LjU1TDEzLjM5IDkuODRMMTYuOTcgMTAuMTVMMTQuMjYgMTIuNUwxNS4wOCAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRTdGFyT3V0bGluZSA9IFwiTTIxIDExQzIxIDE2LjU1IDE3LjE2IDIxLjc0IDEyIDIzQzYuODQgMjEuNzQgMyAxNi41NSAzIDExVjVMMTIgMUwyMSA1VjExTTEyIDIxQzE1Ljc1IDIwIDE5IDE1LjU0IDE5IDExLjIyVjYuM0wxMiAzLjE4TDUgNi4zVjExLjIyQzUgMTUuNTQgOC4yNSAyMCAxMiAyMU0xNS4wNSAxNkwxMS45NyAxNC4xNUw4LjkgMTZMOS43MSAxMi41TDcgMTAuMTZMMTAuNTggOS44NUwxMS45NyA2LjU1TDEzLjM3IDkuODRMMTYuOTUgMTAuMTVMMTQuMjMgMTIuNUwxNS4wNSAxNlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFN1biA9IFwiTTEyIDFMMyA1VjExQzMgMTYuNTUgNi44NCAyMS43NCAxMiAyM0MxNy4xNiAyMS43NCAyMSAxNi41NSAyMSAxMVY1TDEyIDFNMTIgOC44OUMxMy42IDguODkgMTQuODkgMTAuMTggMTQuODkgMTEuNzhTMTMuNiAxNC42NyAxMiAxNC42NyA5LjExIDEzLjM3IDkuMTEgMTEuNzggMTAuNDEgOC44OSAxMiA4Ljg5TTEyIDZMMTMuMzggOEMxMi45NiA3LjgyIDEyLjUgNy43MyAxMiA3LjczUzExLjA1IDcuODIgMTAuNjIgOEwxMiA2TTcgOC44OUw5LjQgOC42OUM5LjA2IDkgOC43NCA5LjM0IDguNSA5Ljc2QzguMjUgMTAuMTggOC4xIDEwLjYyIDggMTEuMDhMNyA4Ljg5TTcgMTQuNjdMOC4wMyAxMi41QzguMTEgMTIuOTMgOC4yNyAxMy4zOCA4LjUgMTMuOEM4Ljc1IDE0LjIzIDkuMDYgMTQuNTkgOS40IDE0Ljg4TDcgMTQuNjdNMTcgOC44OUwxNiAxMS4wOEMxNS45IDEwLjYyIDE1Ljc0IDEwLjE4IDE1LjUgOS43NkMxNS4yNiA5LjM0IDE0Ljk1IDkgMTQuNiA4LjY4TDE3IDguODlNMTcgMTQuNjdMMTQuNiAxNC44N0MxNC45NCAxNC41OCAxNS4yNSAxNC4yMiAxNS41IDEzLjhDMTUuNzQgMTMuMzggMTUuODkgMTIuOTMgMTUuOTcgMTIuNUwxNyAxNC42N00xMiAxNy41NUwxMC42MSAxNS41N0MxMS4wNCAxNS43MiAxMS41IDE1LjgyIDEyIDE1LjgyQzEyLjUgMTUuODIgMTIuOTUgMTUuNzIgMTMuMzcgMTUuNTdMMTIgMTcuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkU3VuT3V0bGluZSA9IFwiTTIxIDExQzIxIDE2LjU1IDE3LjE2IDIxLjc0IDEyIDIzQzYuODQgMjEuNzQgMyAxNi41NSAzIDExVjVMMTIgMUwyMSA1VjExTTEyIDIxQzE1Ljc1IDIwIDE5IDE1LjU0IDE5IDExLjIyVjYuM0wxMiAzLjE4TDUgNi4zVjExLjIyQzUgMTUuNTQgOC4yNSAyMCAxMiAyMU0xMiA4Ljg5QzEzLjYgOC44OSAxNC44OSAxMC4xOCAxNC44OSAxMS43OFMxMy42IDE0LjY3IDEyIDE0LjY3IDkuMTEgMTMuMzcgOS4xMSAxMS43OCAxMC40MSA4Ljg5IDEyIDguODlNMTIgNkwxMy4zOCA4QzEyLjk2IDcuODIgMTIuNSA3LjczIDEyIDcuNzNTMTEuMDUgNy44MiAxMC42MiA4TDEyIDZNNyA4Ljg5TDkuNCA4LjY5QzkuMDYgOSA4Ljc0IDkuMzQgOC41IDkuNzZDOC4yNSAxMC4xOCA4LjEgMTAuNjIgOCAxMS4wOEw3IDguODlNNyAxNC42N0w4LjAzIDEyLjVDOC4xMSAxMi45MyA4LjI3IDEzLjM4IDguNSAxMy44QzguNzUgMTQuMjMgOS4wNiAxNC41OSA5LjQgMTQuODhMNyAxNC42N00xNyA4Ljg5TDE2IDExLjA4QzE1LjkgMTAuNjIgMTUuNzQgMTAuMTggMTUuNSA5Ljc2QzE1LjI2IDkuMzQgMTQuOTUgOSAxNC42IDguNjhMMTcgOC44OU0xNyAxNC42N0wxNC42IDE0Ljg3QzE0Ljk0IDE0LjU4IDE1LjI1IDE0LjIyIDE1LjUgMTMuOEMxNS43NCAxMy4zOCAxNS44OSAxMi45MyAxNS45NyAxMi41TDE3IDE0LjY3TTEyIDE3LjU1TDEwLjYxIDE1LjU3QzExLjA0IDE1LjcyIDExLjUgMTUuODIgMTIgMTUuODJDMTIuNSAxNS44MiAxMi45NSAxNS43MiAxMy4zNyAxNS41N0wxMiAxNy41NVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRTeW5jID0gXCJNMTggMTJBNi40MSA2LjQxIDAgMCAxIDIwLjg3IDEyLjY3QTExLjYzIDExLjYzIDAgMCAwIDIxIDExVjVMMTIgMUwzIDVWMTFDMyAxNi41NSA2Ljg0IDIxLjc0IDEyIDIzQzEyLjM1IDIyLjkxIDEyLjcgMjIuOCAxMyAyMi42OEE2LjQyIDYuNDIgMCAwIDEgMTEuNSAxOC41QTYuNSA2LjUgMCAwIDEgMTggMTJNMTggMTQuNVYxM0wxNS43NSAxNS4yNUwxOCAxNy41VjE2QTIuNSAyLjUgMCAwIDEgMjAuMjQgMTkuNjJMMjEuMzMgMjAuNzFBNCA0IDAgMCAwIDE4IDE0LjVNMTggMjFBMi41IDIuNSAwIDAgMSAxNS43NiAxNy4zOEwxNC42NyAxNi4yOUE0IDQgMCAwIDAgMTggMjIuNVYyNEwyMC4yNSAyMS43NUwxOCAxOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFN5bmNPdXRsaW5lID0gXCJNMTIgMjFDOC4yNSAyMCA1IDE1LjU0IDUgMTEuMjJWNi4zTDEyIDMuMThMMTkgNi4zVjEyLjA3QTYuNDUgNi40NSAwIDAgMSAyMC45MSAxMi42N0ExMS42MyAxMS42MyAwIDAgMCAyMSAxMVY1TDEyIDFMMyA1VjExQzMgMTYuNTUgNi44NCAyMS43NCAxMiAyM0MxMi4zNSAyMi45MSAxMi43IDIyLjggMTMgMjIuNjhBNi4zIDYuMyAwIDAgMSAxMiAyMU0xOCAxNC41VjEzTDE1Ljc1IDE1LjI1TDE4IDE3LjVWMTZBMi41IDIuNSAwIDAgMSAyMC4yNCAxOS42MkwyMS4zMyAyMC43MUE0IDQgMCAwIDAgMTggMTQuNU0xOCAyMUEyLjUgMi41IDAgMCAxIDE1Ljc2IDE3LjM4TDE0LjY3IDE2LjI5QTQgNCAwIDAgMCAxOCAyMi41VjI0TDIwLjI1IDIxLjc1TDE4IDE5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpcFdoZWVsID0gXCJNMiwxMUw0LjA1LDExLjFDNC4zLDguODMgNS41LDYuODUgNy4yNSw1LjU2TDYuMTMsMy44NEM1Ljg2LDMuMzYgNiwyLjc1IDYuNSwyLjQ3QzcsMi4yIDcuNTksMi4zNiA3Ljg3LDIuODRMOC44LDQuNjZDOS43OCw0LjI0IDEwLjg2LDQgMTIsNEMxMy4xNCw0IDE0LjIyLDQuMjQgMTUuMiw0LjY2TDE2LjEzLDIuODRDMTYuNDEsMi4zNiAxNywyLjIgMTcuNSwyLjQ3QzE4LDIuNzUgMTguMTQsMy4zNiAxNy44NywzLjg0TDE2Ljc1LDUuNTZDMTguNSw2Ljg1IDE5LjcsOC44MyAxOS45NSwxMS4xTDIyLDExQTEsMSAwIDAsMSAyMywxMkExLDEgMCAwLDEgMjIsMTNMMTkuOTUsMTIuOUMxOS43LDE1LjE3IDE4LjUsMTcuMTUgMTYuNzUsMTguNDRMMTcuODcsMjAuMTZDMTguMTQsMjAuNjQgMTgsMjEuMjUgMTcuNSwyMS41M0MxNywyMS44IDE2LjQxLDIxLjY0IDE2LjEzLDIxLjE2TDE1LjIsMTkuMzRDMTQuMjIsMTkuNzYgMTMuMTQsMjAgMTIsMjBDMTAuODYsMjAgOS43OCwxOS43NiA4LjgsMTkuMzRMNy44NywyMS4xNkM3LjU5LDIxLjY0IDcsMjEuOCA2LjUsMjEuNTNDNiwyMS4yNSA1Ljg2LDIwLjY0IDYuMTMsMjAuMTZMNy4yNSwxOC40NEM1LjUsMTcuMTUgNC4zLDE1LjE3IDQuMDUsMTIuOUwyLDEzQTEsMSAwIDAsMSAxLDEyQTEsMSAwIDAsMSAyLDExTTkuMDcsMTEuMzVDOS4yLDEwLjc0IDkuNTMsMTAuMiAxMCw5Ljc5TDguMzQsNy4yNUM3LjExLDguMTkgNi4yNyw5LjYgNi4wNSwxMS4yTDkuMDcsMTEuMzVNMTIsOUMxMi4zMiw5IDEyLjYyLDkuMDUgMTIuOSw5LjE0TDE0LjI4LDYuNDVDMTMuNTgsNi4xNiAxMi44MSw2IDEyLDZDMTEuMTksNiAxMC40Miw2LjE2IDkuNzIsNi40NUwxMS4xLDkuMTRDMTEuMzgsOS4wNSAxMS42OCw5IDEyLDlNMTQuOTMsMTEuMzVMMTcuOTUsMTEuMkMxNy43Myw5LjYgMTYuODksOC4xOSAxNS42Niw3LjI1TDE0LDkuNzlDMTQuNDcsMTAuMiAxNC44LDEwLjc0IDE0LjkzLDExLjM1TTE0LjkzLDEyLjY1QzE0LjgsMTMuMjYgMTQuNDcsMTMuOCAxNCwxNC4yMUwxNS42NiwxNi43NUMxNi44OSwxNS44MSAxNy43MywxNC40IDE3Ljk1LDEyLjhMMTQuOTMsMTIuNjVNMTIsMTVDMTEuNjgsMTUgMTEuMzgsMTQuOTUgMTEuMDksMTQuODZMOS43MiwxNy41NUMxMC40MiwxNy44NCAxMS4xOSwxOCAxMiwxOEMxMi44MSwxOCAxMy41OCwxNy44NCAxNC4yOCwxNy41NUwxMi45MSwxNC44NkMxMi42MiwxNC45NSAxMi4zMiwxNSAxMiwxNU05LjA3LDEyLjY1TDYuMDUsMTIuOEM2LjI3LDE0LjQgNy4xMSwxNS44MSA4LjM0LDE2Ljc1TDEwLDE0LjIxQzkuNTMsMTMuOCA5LjIsMTMuMjYgOS4wNywxMi42NVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaG9lQmFsbGV0ID0gXCJNMTIuNzggMTEuOTdDMTIuMjcgOC41NCAxMC44NiAyIDcuNTMgMlMyLjggOC41NCAyLjI4IDExLjk3QzIuMDcgMTMuNDIgMiAxNC44OSAyLjE2IDE2LjM1QzIuNSAxOS4zOSAzLjU1IDIwLjg0IDQuMjcgMjEuNUM0LjY0IDIxLjgzIDUuMTEgMjIgNS42IDIySDkuNDdDOS45NiAyMiAxMC40MyAyMS44MyAxMC44IDIxLjVDMTEuNSAyMC44NCAxMi41NSAxOS4zOSAxMi45MSAxNi4zNUMxMy4wOCAxNC44OSAxMyAxMy40MiAxMi43OCAxMS45N003LjUzIDRDNy44OSAzLjg3IDguNTkgNC43MyA5LjI3IDYuMzFMNC41OCAxMC4zM0M1LjQxIDYuMjYgNi45NCAzLjc5IDcuNTMgNE05Ljc1IDEzSDUuMzFDNS4xIDEzIDQuOTIgMTIuOTIgNC43NiAxMi44MUwxMCA4LjMzQzEwLjI5IDkuMzUgMTAuNTYgMTAuNSAxMC43NSAxMS44M0MxMC44NCAxMi40NCAxMC4zNyAxMyA5Ljc1IDEzTTIxLjc4IDExLjk3QzIxLjI3IDguNTQgMTkuODYgMiAxNi41MyAyQzE1LjA0IDIgMTMuOTQgMy4zMiAxMy4xMyA1LjA4QzEzLjUgNi4wNCAxMy44NCA3LjE0IDE0LjEzIDguMzdMMTkuMzEgMTIuODFDMTkuMTUgMTIuOTIgMTguOTcgMTMgMTguNzUgMTNIMTQuOTJDMTUuMDQgMTQuMjcgMTUuMDMgMTUuNDUgMTQuODkgMTYuNTlDMTQuNjIgMTguODcgMTQgMjAuNDUgMTMuMzIgMjEuNTNDMTMuNjggMjEuODQgMTQuMTMgMjIgMTQuNiAyMkgxOC40N0MxOC45NiAyMiAxOS40MyAyMS44MyAxOS44IDIxLjVDMjAuNSAyMC44NCAyMS41NSAxOS4zOSAyMS45MSAxNi4zNUMyMi4wOCAxNC44OSAyMiAxMy40MiAyMS43OCAxMS45N00xNC44IDYuMzFDMTUuNSA0LjczIDE2LjE4IDMuODcgMTYuNTMgNEMxNy4xMyAzLjc5IDE4LjY1IDYuMjYgMTkuNSAxMC4zM0wxNC44IDYuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvZUNsZWF0ID0gXCJNMjEgOEMyMC43NiA4IDIwLjUzIDggMjAuMyA4TDIwLjI1IDcuOTdDMTguMTQgNy44NCAxNi4zOCA3LjE3IDE1LjUzIDYuMjNMMTQgN0MxMy45NSA3LjEgMTMuODkgNy4xOSAxMy44NCA3LjI4QzE0LjU1IDcuODkgMTUgOC42NSAxNSA5LjVDMTUgOS44MyAxNC45MSAxMC4xNCAxNC43OSAxMC40NUwxMi45MiA4LjU4QzEyLjcgOC44MyAxMi40NyA5LjA3IDEyLjIyIDkuMjlMMTQuMjUgMTEuMzJDMTQuMDQgMTEuNTcgMTMuOCAxMS43OSAxMy41IDEyTDExLjQzIDkuOTFDMTEuMTQgMTAuMTEgMTAuODUgMTAuMjggMTAuNTUgMTAuNDVMMTIuNTggMTIuNUMxMi4yNSAxMi42MyAxMS44OSAxMi43NCAxMS41IDEyLjgyTDkuNTkgMTAuOTFDOS4yNSAxMS4wNSA4LjkxIDExLjE4IDguNTYgMTEuMjlMMTAuMjYgMTNDMTAuMTcgMTMgMTAuMDkgMTMgMTAgMTNDOC41IDEzIDcuMiAxMi41NCA2LjI4IDExLjgyQzUuNDYgMTEuOTUgNC42OCAxMiA0IDEyQzIgMTIgMiAxNSAyIDE1VjE1QzIgMTYuMTEgMi44OSAxNyA0IDE3SDRWMThDNCAxOC41NSA0LjQ1IDE5IDUgMTlTNiAxOC41NSA2IDE4VjE3SDdWMThDNyAxOC41NSA3LjQ1IDE5IDggMTlTOSAxOC41NSA5IDE4VjE3SDEwVjE4QzEwIDE4LjU1IDEwLjQ1IDE5IDExIDE5UzEyIDE4LjU1IDEyIDE4VjE3SDE1VjE4QzE1IDE4LjU1IDE1LjQ1IDE5IDE2IDE5UzE3IDE4LjU1IDE3IDE4VjE3SDE4VjE4QzE4IDE4LjU1IDE4LjQ1IDE5IDE5IDE5UzIwIDE4LjU1IDIwIDE4VjE3SDIxQzIxIDE3IDIyIDE3IDIyIDEyLjVDMjIgOSAyMSA4IDIxIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvZUZvcm1hbCA9IFwiTTIxLjUsOVY4SDIwLjVMMTkuNSw5SDE1TDE0LDhIMTNMNywxMkg0QTIsMiAwIDAsMCAyLDE0VjE2SDEwTDEzLDE1SDE1VjE2SDIxLjVWMTRDMjEuNSwxNCAyMiwxMyAyMiwxMS41QzIyLDEwIDIxLjUsOSAyMS41LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvZUhlZWwgPSBcIk0zLDE4SDExLjdMMTcsMTRIMThWMThIMjBWMTRDMjAsMTQgMjEsMTIgMjEsMTBDMjEsOCAyMC41LDYgMjAuNSw2SDE4LjVMMTgsN0wxMCwxNEg4TDMsMTZWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvZVByaW50ID0gXCJNMTAuNzQsMTEuNzJDMTEuMjEsMTIuOTUgMTEuMTYsMTQuMjMgOS43NSwxNC43NEM2Ljg1LDE1LjgxIDYuMiwxMyA2LjE2LDEyLjg2TDEwLjc0LDExLjcyTTUuNzEsMTAuOTFMMTAuMDMsOS44NEM5Ljg0LDguNzkgMTAuMTMsNy43NCAxMC4xMyw2LjVDMTAuMTMsNC44MiA4LjgsMS41MyA2LjY4LDIuMDZDNC4yNiwyLjY2IDMuOTEsNS4zNSA0LDYuNjVDNC4xMiw3Ljk1IDUuNjQsMTAuNzMgNS43MSwxMC45MU0xNy44NSwxOS44NUMxNy44MiwyMCAxNy4xNiwyMi44IDE0LjI2LDIxLjc0QzEyLjg2LDIxLjIyIDEyLjgsMTkuOTQgMTMuMjcsMTguNzFMMTcuODUsMTkuODVNMjAsMTMuNjVDMjAuMSwxMi4zNSAxOS43Niw5LjY1IDE3LjMzLDkuMDVDMTUuMjIsOC41IDEzLjg5LDExLjgxIDEzLjg5LDEzLjVDMTMuODksMTQuNzMgMTQuMTcsMTUuNzggMTQsMTYuODNMMTguMywxNy45QzE4LjM4LDE3LjcyIDE5Ljg5LDE0Ljk0IDIwLDEzLjY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNob2VTbmVha2VyID0gXCJNMiAxNUMyIDE1IDIgMTIgNCAxMkM0LjY4IDEyIDUuNDYgMTEuOTUgNi4yOCAxMS44MkM3LjIgMTIuNTQgOC41IDEzIDEwIDEzSDEwLjI1TDguNTYgMTEuMjlDOC45MSAxMS4xOCA5LjI1IDExLjA1IDkuNTkgMTAuOTFMMTEuNSAxMi44MkMxMS44OSAxMi43NCAxMi4yNSAxMi42MyAxMi41OCAxMi41TDEwLjU1IDEwLjQ1QzEwLjg1IDEwLjI4IDExLjE0IDEwLjExIDExLjQzIDkuOTFMMTMuNSAxMkMxMy44IDExLjc5IDE0LjA0IDExLjU2IDE0LjI1IDExLjMyTDEyLjIyIDkuMjlDMTIuNDYgOS4wNyAxMi43IDguODMgMTIuOTIgOC41OEwxNC43OSAxMC40NUMxNC45MSAxMC4xNCAxNSA5LjgzIDE1IDkuNUMxNSA4LjY1IDE0LjU1IDcuODkgMTMuODQgNy4yOEMxMy44OSA3LjE5IDEzLjk1IDcuMSAxNCA3TDE1LjUzIDYuMjNDMTYuMzggNy4xNyAxOC4xNCA3Ljg0IDIwLjI1IDcuOTdMMjAuMyA4SDIxQzIxIDggMjIgOSAyMiAxMi41QzIyIDEzLjA3IDIyIDEzLjU3IDIxLjk2IDE0SDE5QzE3LjkgMTQgMTYuNTggMTQuMjYgMTUuMyAxNC41QzE0LjEyIDE0Ljc2IDEyLjkgMTUgMTIgMTVIMk0yMSAxN0MyMSAxNyAyMS41OCAxNyAyMS44NiAxNUgxOUMxNyAxNSAxNCAxNiAxMiAxNkgyLjI4QzIuNjIgMTYuNiAzLjI2IDE3IDQgMTdIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvcHBpbmcgPSBcIk0xMiwxM0E1LDUgMCAwLDEgNyw4SDlBMywzIDAgMCwwIDEyLDExQTMsMyAwIDAsMCAxNSw4SDE3QTUsNSAwIDAsMSAxMiwxM00xMiwzQTMsMyAwIDAsMSAxNSw2SDlBMywzIDAgMCwxIDEyLDNNMTksNkgxN0E1LDUgMCAwLDAgMTIsMUE1LDUgMCAwLDAgNyw2SDVDMy44OSw2IDMsNi44OSAzLDhWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjhDMjEsNi44OSAyMC4xLDYgMTksNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaG9wcGluZ011c2ljID0gXCJNMTIsM0EzLDMgMCAwLDAgOSw2SDE1QTMsMyAwIDAsMCAxMiwzTTE5LDZBMiwyIDAgMCwxIDIxLDhWMjBBMiwyIDAgMCwxIDE5LDIySDVDMy44OSwyMiAzLDIxLjEgMywyMFY4QzMsNi44OSAzLjg5LDYgNSw2SDdBNSw1IDAgMCwxIDEyLDFBNSw1IDAgMCwxIDE3LDZIMTlNOSwxOUwxNi41LDE0TDksMTBWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvcHBpbmdPdXRsaW5lID0gXCJNMTkgNkgxN0MxNyAzLjIgMTQuOCAxIDEyIDFTNyAzLjIgNyA2SDVDMy45IDYgMyA2LjkgMyA4VjIwQzMgMjEuMSAzLjkgMjIgNSAyMkgxOUMyMC4xIDIyIDIxIDIxLjEgMjEgMjBWOEMyMSA2LjkgMjAuMSA2IDE5IDZNMTIgM0MxMy43IDMgMTUgNC4zIDE1IDZIOUM5IDQuMyAxMC4zIDMgMTIgM00xOSAyMEg1VjhIMTlWMjBNMTIgMTJDMTAuMyAxMiA5IDEwLjcgOSA5SDdDNyAxMS44IDkuMiAxNCAxMiAxNFMxNyAxMS44IDE3IDlIMTVDMTUgMTAuNyAxMy43IDEyIDEyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNob3BwaW5nU2VhcmNoID0gXCJNMTkgNkgxN0E1IDUgMCAwIDAgNyA2SDVBMiAyIDAgMCAwIDMgOFYyMEEyIDIgMCAwIDAgNSAyMkgxMi4wNUE2LjUgNi41IDAgMCAxIDkgMTYuNUE2LjQgNi40IDAgMCAxIDEwLjI1IDEyLjY4QTUgNSAwIDAgMSA3IDhIOUEzIDMgMCAwIDAgMTIgMTFIMTIuMDZBNi4yMiA2LjIyIDAgMCAxIDE0LjA2IDEwLjE2QTMgMyAwIDAgMCAxNSA4SDE3QTQuODggNC44OCAwIDAgMSAxNi41NCAxMC4wOUE2LjUgNi41IDAgMCAxIDIxIDEzLjA5VjhBMiAyIDAgMCAwIDE5IDZNOSA2QTMgMyAwIDAgMSAxNSA2TTE5LjMxIDE4LjlBNC41IDQuNSAwIDEgMCAxNy44OCAyMC4zMkwyMSAyMy4zOUwyMi4zOSAyMk0xNS41IDE5QTIuNSAyLjUgMCAxIDEgMTggMTYuNUEyLjUgMi41IDAgMCAxIDE1LjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvcmUgPSBcIk0yMCAxMkgyMlYxNEgyMEMxOC42IDE0IDE3LjMgMTMuNiAxNiAxM0MxMy41IDE0LjMgMTAuNSAxNC4zIDggMTNDNi43IDEzLjYgNS40IDE0IDQgMTRIMlYxMkg0QzUuNCAxMiA2LjggMTEuNSA4IDEwLjdDMTAuNCAxMi40IDEzLjYgMTIuNCAxNiAxMC43QzE3LjIgMTEuNSAxOC42IDEyIDIwIDEyTTIwIDZIMjJWOEgyMEMxOC42IDggMTcuMyA3LjcgMTYgN0MxMy41IDguMyAxMC41IDguMyA4IDdDNi43IDcuNyA1LjQgOCA0IDhIMlY2SDRDNS40IDYgNi44IDUuNSA4IDQuN0MxMC40IDYuNCAxMy42IDYuNCAxNiA0LjdDMTcuMiA1LjUgMTguNiA2IDIwIDZNMjIgMjBIMlYxOEgyMlwiO1xyXG5leHBvcnQgdmFyIG1kaVNob3ZlbCA9IFwiTTE1LjEsMS44MUwxMi4yNyw0LjY0QzExLjUsNS40MiAxMS41LDYuNjkgMTIuMjcsNy40N0wxMy42OCw4Ljg4TDkuMTMsMTMuNDNMNi4zMSwxMC42TDQuODksMTJDLTAuMDYsMTcgMy41LDIwLjUgMy41LDIwLjVDMy41LDIwLjUgNywyNCAxMiwxOS4wOUwxMy40MSwxNy42OEwxMC42MSwxNC44OEwxNS4xNSwxMC4zNEwxNi41NCwxMS43M0MxNy4zMiwxMi41IDE4LjU5LDEyLjUgMTkuMzcsMTEuNzNMMjIuMiw4LjlMMTUuMSwxLjgxTTE3LjkzLDEwLjI4TDE2LjU1LDguOUwxNS4xMSw3LjQ2TDEzLjcxLDYuMDZMMTUuMTIsNC42NUwxOS4zNSw4Ljg4TDE3LjkzLDEwLjI4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNob3ZlbE9mZiA9IFwiTTE1LjEsMS44MUwxMi4yNyw0LjY1QzExLjUsNS40MyAxMS41LDYuNjkgMTIuMjcsNy40N0wxMy42OCw4Ljg5TDEzLDkuNjJMMTQuNDQsMTEuMDZMMTUuMTcsMTAuMzNMMTYuNTYsMTEuNzJDMTcuMzQsMTIuNSAxOC42MSwxMi41IDE5LjM5LDExLjcyTDIyLjIyLDguODhMMTUuMSwxLjgxTTE3LjkzLDEwLjI4TDEzLjcsNi4wNkwxNS4xMSw0LjY1TDE5LjM0LDguODhMMTcuOTMsMTAuMjhNMjAuNywyMC4yNEwxOS4yOSwyMS42NUwxMS41LDEzLjg4TDEwLjUsMTQuODhMMTMuMzMsMTcuNjlMMTIsMTkuMDlDNywyNCAzLjUsMjAuNSAzLjUsMjAuNUMzLjUsMjAuNSAtMC4wNiwxNyA0Ljg5LDEyTDYuMzEsMTAuNkw5LjEzLDEzLjQzTDEwLjEzLDEyLjQzTDIuMzUsNC42OEwzLjc3LDMuMjZMMjAuNywyMC4yNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaG93ZXIgPSBcIk0yMSwxNFYxNUMyMSwxNi45MSAxOS45MywxOC41NyAxOC4zNSwxOS40MUwxOSwyMkgxN0wxNi41LDIwQzE2LjMzLDIwIDE2LjE3LDIwIDE2LDIwSDhDNy44MywyMCA3LjY3LDIwIDcuNSwyMEw3LDIySDVMNS42NSwxOS40MUM0LjA3LDE4LjU3IDMsMTYuOTEgMywxNVYxNEgyVjEySDIwVjVBMSwxIDAgMCwwIDE5LDRDMTguNSw0IDE4LjEyLDQuMzQgMTgsNC43OUMxOC42Myw1LjMzIDE5LDYuMTMgMTksN0gxM0EzLDMgMCAwLDEgMTYsNEMxNi4wNiw0IDE2LjExLDQgMTYuMTcsNEMxNi41OCwyLjg0IDE3LjY5LDIgMTksMkEzLDMgMCAwLDEgMjIsNVYxNEgyMVYxNE0xOSwxNEg1VjE1QTMsMyAwIDAsMCA4LDE4SDE2QTMsMyAwIDAsMCAxOSwxNVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaG93ZXJIZWFkID0gXCJNMjAsMjBBMSwxIDAgMCwxIDIxLDIxQTEsMSAwIDAsMSAyMCwyMkExLDEgMCAwLDEgMTksMjFBMSwxIDAgMCwxIDIwLDIwTTE2LDIwQTEsMSAwIDAsMSAxNywyMUExLDEgMCAwLDEgMTYsMjJBMSwxIDAgMCwxIDE1LDIxQTEsMSAwIDAsMSAxNiwyME0xMiwyMEExLDEgMCAwLDEgMTMsMjFBMSwxIDAgMCwxIDEyLDIyQTEsMSAwIDAsMSAxMSwyMUExLDEgMCAwLDEgMTIsMjBNOCwyMEExLDEgMCAwLDEgOSwyMUExLDEgMCAwLDEgOCwyMkExLDEgMCAwLDEgNywyMUExLDEgMCAwLDEgOCwyME00LDIwQTEsMSAwIDAsMSA1LDIxQTEsMSAwIDAsMSA0LDIyQTEsMSAwIDAsMSAzLDIxQTEsMSAwIDAsMSA0LDIwTTYsMTdBMSwxIDAgMCwxIDcsMThBMSwxIDAgMCwxIDYsMTlINkExLDEgMCAwLDEgNSwxOEExLDEgMCAwLDEgNiwxN0g2TTEwLDE3QTEsMSAwIDAsMSAxMSwxOEExLDEgMCAwLDEgMTAsMTlBMSwxIDAgMCwxIDksMThBMSwxIDAgMCwxIDEwLDE3TTE0LDE3QTEsMSAwIDAsMSAxNSwxOEExLDEgMCAwLDEgMTQsMTlBMSwxIDAgMCwxIDEzLDE4QTEsMSAwIDAsMSAxNCwxN00xOCwxN0ExLDEgMCAwLDEgMTksMThBMSwxIDAgMCwxIDE4LDE5QTEsMSAwIDAsMSAxNywxOEExLDEgMCAwLDEgMTgsMTdNOCwxNEExLDEgMCAwLDEgOSwxNUExLDEgMCAwLDEgOCwxNkExLDEgMCAwLDEgNywxNUExLDEgMCAwLDEgOCwxNE0xMiwxNEExLDEgMCAwLDEgMTMsMTVBMSwxIDAgMCwxIDEyLDE2QTEsMSAwIDAsMSAxMSwxNUExLDEgMCAwLDEgMTIsMTRNMTYsMTRBMSwxIDAgMCwxIDE3LDE1QTEsMSAwIDAsMSAxNiwxNkExLDEgMCAwLDEgMTUsMTVBMSwxIDAgMCwxIDE2LDE0TTE5LDEySDVWMTBIMTlWMTJNMTcuOTIsOUg2LjA4QzYuNSw2LjUgOC41LDQuNSAxMSw0LjA4VjJIMTNWNC4wOEMxNS41LDQuNSAxNy41LDYuNSAxNy45Miw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNocmVkZGVyID0gXCJNNiwzVjdIOFY1SDE2VjdIMThWM0g2TTUsOEEzLDMgMCAwLDAgMiwxMVYxN0g1VjE0SDE5VjE3SDIyVjExQTMsMyAwIDAsMCAxOSw4SDVNMTgsMTBBMSwxIDAgMCwxIDE5LDExQTEsMSAwIDAsMSAxOCwxMkExLDEgMCAwLDEgMTcsMTFBMSwxIDAgMCwxIDE4LDEwTTcsMTZWMjFIOVYxNkg3TTExLDE2VjIwSDEzVjE2SDExTTE1LDE2VjIxSDE3VjE2SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNodWZmbGUgPSBcIk0xNC44MywxMy40MUwxMy40MiwxNC44MkwxNi41NSwxNy45NUwxNC41LDIwSDIwVjE0LjVMMTcuOTYsMTYuNTRMMTQuODMsMTMuNDFNMTQuNSw0TDE2LjU0LDYuMDRMNCwxOC41OUw1LjQxLDIwTDE3Ljk2LDcuNDZMMjAsOS41VjRNMTAuNTksOS4xN0w1LjQxLDRMNCw1LjQxTDkuMTcsMTAuNThMMTAuNTksOS4xN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaHVmZmxlRGlzYWJsZWQgPSBcIk0xNiw0LjVWN0g1VjlIMTZWMTEuNUwxOS41LDhNMTYsMTIuNVYxNUg1VjE3SDE2VjE5LjVMMTkuNSwxNlwiO1xyXG5leHBvcnQgdmFyIG1kaVNodWZmbGVWYXJpYW50ID0gXCJNMTcsM0wyMi4yNSw3LjVMMTcsMTJMMjIuMjUsMTYuNUwxNywyMVYxOEgxNC4yNkwxMS40NCwxNS4xOEwxMy41NiwxMy4wNkwxNS41LDE1SDE3VjEyTDE3LDlIMTUuNUw2LjUsMThIMlYxNUg1LjI2TDE0LjI2LDZIMTdWM00yLDZINi41TDkuMzIsOC44Mkw3LjIsMTAuOTRMNS4yNiw5SDJWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaHVyaWtlbiA9IFwiTTE0LjUgOS41TDEyIDJMOS41IDkuNUwyIDEyTDkuNSAxNC41TDEyIDIyTDE0LjUgMTQuNUwyMiAxMkwxNC41IDkuNU0xMiAxMy43QzExLjEgMTMuNyAxMC4zIDEzIDEwLjMgMTJDMTAuMyAxMS4xIDExIDEwLjMgMTIgMTAuM0MxMi45IDEwLjMgMTMuNyAxMSAxMy43IDEyQzEzLjcgMTIuOSAxMi45IDEzLjcgMTIgMTMuN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWdtYSA9IFwiTTE4LDZIOC44M0wxNC44MywxMkw4LjgzLDE4SDE4VjIwSDZWMThMMTIsMTJMNiw2VjRIMThWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWdtYUxvd2VyID0gXCJNMTksMTJDMTksMTYuNDIgMTUuNjQsMjAgMTEuNSwyMEM3LjM2LDIwIDQsMTYuNDIgNCwxMkM0LDcuNTggNy4zNiw0IDExLjUsNEgyMFY2SDE2LjQ2QzE4LDcuNDcgMTksOS42MSAxOSwxMk0xMS41LDZDOC40Niw2IDYsOC42OSA2LDEyQzYsMTUuMzEgOC40NiwxOCAxMS41LDE4QzE0LjU0LDE4IDE3LDE1LjMxIDE3LDEyQzE3LDguNjkgMTQuNTQsNiAxMS41LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbkNhdXRpb24gPSBcIk0yLDNIMjJWMTNIMThWMjFIMTZWMTNIOFYyMUg2VjEzSDJWM00xOC45NywxMUwyMCw5Ljk3VjcuMTVMMTYuMTUsMTFIMTguOTdNMTMuMzIsMTFMMTkuMzIsNUgxNi41TDEwLjUsMTFIMTMuMzJNNy42NiwxMUwxMy42Niw1SDEwLjgzTDQuODMsMTFINy42Nk01LjE4LDVMNCw2LjE4VjlMOCw1SDUuMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbkRpcmVjdGlvbiA9IFwiTTExLDEySDMuNUw2LDkuNUwzLjUsN0gxMVYzTDEyLDJMMTMsM1Y3SDE4TDIwLjUsOS41TDE4LDEySDEzVjIwQTIsMiAwIDAsMSAxNSwyMkg5QTIsMiAwIDAsMSAxMSwyMFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduRGlyZWN0aW9uTWludXMgPSBcIk0yMC41IDkuNUwxOCAxMkgxM1YyMkg5QTIgMiAwIDAgMSAxMSAyMFYxMkgzLjVMNiA5LjVMMy41IDdIMTFWM0wxMiAyTDEzIDNWN0gxOE0yMyAxOEgxNVYyMEgyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduRGlyZWN0aW9uUGx1cyA9IFwiTTEzIDIwSDEzLjA5QTUuNSA1LjUgMCAwIDAgMTMuODEgMjJIOUEyIDIgMCAwIDEgMTEgMjBWMTJIMy41TDYgOS41TDMuNSA3SDExVjNMMTIgMkwxMyAzVjdIMThMMjAuNSA5LjVMMTggMTJIMTNNMTggMTVWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbkRpcmVjdGlvblJlbW92ZSA9IFwiTTEzIDIwSDEzLjA5QTUuNSA1LjUgMCAwIDAgMTMuODEgMjJIOUEyIDIgMCAwIDEgMTEgMjBWMTJIMy41TDYgOS41TDMuNSA3SDExVjNMMTIgMkwxMyAzVjdIMThMMjAuNSA5LjVMMTggMTJIMTNNMjEuMTIgMTUuNDZMMTkgMTcuNTlMMTYuODggMTUuNDZMMTUuNDYgMTYuODhMMTcuNTkgMTlMMTUuNDYgMjEuMTJMMTYuODggMjIuNTRMMTkgMjAuNDFMMjEuMTIgMjIuNTRMMjIuNTQgMjEuMTJMMjAuNDEgMTlMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnblBvbGUgPSBcIk0xMSAzTDEyIDJMMTMgM1YyMEMxNC4xMSAyMCAxNSAyMC45IDE1IDIySDlDOSAyMC45IDkuOSAyMCAxMSAyMFYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25SZWFsRXN0YXRlID0gXCJNMTggOEg4QzYuOSA4IDYgOC45IDYgMTBWMTZDNiAxNy4xMSA2LjkgMTggOCAxOEgxOEMxOS4xMSAxOCAyMCAxNy4xMSAyMCAxNlYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4TTE0IDE2SDhWMTRIMTRWMTZNMTggMTJIOFYxMEgxOFYxMk0yMiA2SDRWMjJIMlYySDRWNEgyMlY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25UZXh0ID0gXCJNMTEsM0wxMiwyTDEzLDNWNUgyMEExLDEgMCAwLDEgMjEsNlYxNkExLDEgMCAwLDEgMjAsMTdIMTNWMjBBMiwyIDAgMCwxIDE1LDIySDlBMiwyIDAgMCwxIDExLDIwVjE3SDRBMSwxIDAgMCwxIDMsMTZWNkExLDEgMCAwLDEgNCw1SDExVjNNNiw4VjEwSDE4VjhINk02LDEyVjE0SDEzVjEySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmFsID0gXCJNMywyMUg2VjE4SDNNOCwyMUgxMVYxNEg4TTEzLDIxSDE2VjlIMTNNMTgsMjFIMjFWM0gxOFYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWwyZyA9IFwiTTExLDE5LjVIMlYxMy41QTMsMyAwIDAsMSA1LDEwLjVIOFY3LjVIMlY0LjVIOEEzLDMgMCAwLDEgMTEsNy41VjEwLjVBMywzIDAgMCwxIDgsMTMuNUg1VjE2LjVIMTFNMjIsMTAuNUgxNy41VjEzLjVIMTlWMTYuNUgxNlY3LjVIMjJWNC41SDE2QTMsMyAwIDAsMCAxMyw3LjVWMTYuNUEzLDMgMCAwLDAgMTYsMTkuNUgxOUEzLDMgMCAwLDAgMjIsMTYuNVwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbDNnID0gXCJNMTEsMTYuNVYxNC4yNUMxMSwxMyAxMCwxMiA4Ljc1LDEyQzEwLDEyIDExLDExIDExLDkuNzVWNy41QTMsMyAwIDAsMCA4LDQuNUgyVjcuNUg4VjEwLjVINVYxMy41SDhWMTYuNUgyVjE5LjVIOEEzLDMgMCAwLDAgMTEsMTYuNU0yMiwxNi41VjEwLjVIMTcuNVYxMy41SDE5VjE2LjVIMTZWNy41SDIyVjQuNUgxNkEzLDMgMCAwLDAgMTMsNy41VjE2LjVBMywzIDAgMCwwIDE2LDE5LjVIMTlBMywzIDAgMCwwIDIyLDE2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmFsNGcgPSBcIk0yMiwxNi41VjEwLjVIMTcuNVYxMy41SDE5VjE2LjVIMTZWNy41SDIyVjQuNUgxNkEzLDMgMCAwLDAgMTMsNy41VjE2LjVBMywzIDAgMCwwIDE2LDE5LjVIMTlBMywzIDAgMCwwIDIyLDE2LjVNOCwxOS41SDExVjQuNUg4VjEwLjVINVY0LjVIMlYxMy41SDhWMTkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWw1ZyA9IFwiTTIyLDE2LjVWMTAuNUgxNy41VjEzLjVIMTlWMTYuNUgxNlY3LjVIMjJWNC41SDE2QTMsMyAwIDAsMCAxMyw3LjVWMTYuNUEzLDMgMCAwLDAgMTYsMTkuNUgxOUEzLDMgMCAwLDAgMjIsMTYuNU0xMCw0LjVIM1YxMkwzLDEzLjVIN1YxNi41SDNWMTkuNUg4LjVBMS41LDEuNSAwIDAsMCAxMCwxOFYxMkExLjUsMS41IDAgMCwwIDguNSwxMC41SDZWNy41SDEwVjQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWxDZWxsdWxhcjEgPSBcIk0xOS41LDUuNVYxOC41SDE3LjVWNS41SDE5LjVNMTIuNSwxMC41VjE4LjVIMTAuNVYxMC41SDEyLjVNMjEsNEgxNlYyMEgyMVY0TTE0LDlIOVYyMEgxNFY5TTcsMTRIMlYyMEg3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbENlbGx1bGFyMiA9IFwiTTE5LjUsNS41VjE4LjVIMTcuNVY1LjVIMTkuNU0yMSw0SDE2VjIwSDIxVjRNMTQsOUg5VjIwSDE0VjlNNywxNEgyVjIwSDdWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmFsQ2VsbHVsYXIzID0gXCJNMjEsNEgxNlYyMEgyMVY0TTE0LDlIOVYyMEgxNFY5TTcsMTRIMlYyMEg3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbENlbGx1bGFyT3V0bGluZSA9IFwiTTE5LjUsNS41VjE4LjVIMTcuNVY1LjVIMTkuNU0xMi41LDEwLjVWMTguNUgxMC41VjEwLjVIMTIuNU01LjUsMTUuNVYxOC41SDMuNVYxNS41SDUuNU0yMSw0SDE2VjIwSDIxVjRNMTQsOUg5VjIwSDE0VjlNNywxNEgyVjIwSDdWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmFsRGlzdGFuY2VWYXJpYW50ID0gXCJNNCw2VjRBMTIsMTIgMCAwLDEgMTYsMTZIMTRBMTAsMTAgMCAwLDAgNCw2TTQsMTBWOEE4LDggMCAwLDEgMTIsMTZIMTBBNiw2IDAgMCwwIDQsMTBNNCwxMkE0LDQgMCAwLDEgOCwxNkg0VjEyTTMsMThIMTlWMTZMMjIsMTlMMTksMjJWMjBIM1YxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWxIc3BhID0gXCJNMTAuNSwxMC41SDEzLjVWNC41SDE2LjVWMTkuNUgxMy41VjEzLjVIMTAuNVYxOS41SDcuNVY0LjVIMTAuNVYxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbEhzcGFQbHVzID0gXCJNMTksOFYxMUgyMlYxNEgxOVYxN0gxNlYxNEgxM1YxMUgxNlY4SDE5TTUsMTAuNUg4VjQuNUgxMVYxOS41SDhWMTMuNUg1VjE5LjVIMlY0LjVINVYxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbE9mZiA9IFwiTTE4LDNWMTYuMThMMjEsMTkuMThWM0gxOE00LjI4LDVMMyw2LjI3TDEwLjczLDE0SDhWMjFIMTFWMTQuMjdMMTMsMTYuMjdWMjFIMTZWMTkuMjdMMTkuNzMsMjNMMjEsMjEuNzJMNC4yOCw1TTEzLDlWMTEuMThMMTYsMTQuMThWOUgxM00zLDE4VjIxSDZWMThIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWxWYXJpYW50ID0gXCJNNCw2VjRINC4xQzEyLjksNCAyMCwxMS4xIDIwLDE5LjlWMjBIMThWMTkuOUMxOCwxMi4yIDExLjgsNiA0LDZNNCwxMFY4QTEyLDEyIDAgMCwxIDE2LDIwSDE0QTEwLDEwIDAgMCwwIDQsMTBNNCwxNFYxMkE4LDggMCAwLDEgMTIsMjBIMTBBNiw2IDAgMCwwIDQsMTRNNCwxNkE0LDQgMCAwLDEgOCwyMEg0VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hdHVyZSA9IFwiTTIyLDIySDJWMjBIMjJWMjJNMi4yNiwxNi44M0w1LjA5LDE0TDIuMjYsMTEuMTdMMy42Nyw5Ljc2TDYuNSwxMi41OUw5LjMzLDkuNzZMMTAuNzQsMTEuMTdMNy45MSwxNEwxMC43NCwxNi44M0w5LjMzLDE4LjI0TDYuNSwxNS40MUwzLjY3LDE4LjI0TDIuMjYsMTYuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmF0dXJlRnJlZWhhbmQgPSBcIk0yMiwyMkgyVjIwSDIyVjIyTTYuMiwxNy4zTDUuNSwxOEw0LjEsMTYuNkwyLjcsMThMMiwxNy4zTDMuNCwxNS45TDIsMTQuNUwyLjcsMTMuOEw0LjEsMTUuMkw1LjUsMTMuOEw2LjIsMTQuNUw0LjgsMTUuOUw2LjIsMTcuM00xNi4yMiwxNC40M0MxNi4yMiwxMy44NSAxNS41LDEzLjIgMTQuMDYsMTIuNDZDMTIuMjMsMTEuNTQgMTEsMTAuNzkgMTAuMzYsMTAuMjRDOS43MSw5LjY4IDkuMzksOS4wNiA5LjM5LDguMzdDOS4zOSw2LjU5IDEwLjMsNS4xMiAxMi4xMiwzLjk1QzEzLjk0LDIuNzggMTUuNDMsMi4xOSAxNi41NywyLjE5QzE3LjMxLDIuMTkgMTcuODUsMi4zMiAxOC4xOCwyLjU4QzE4LjUsMi44MyAxOC42OCwzLjI3IDE4LjY4LDMuOUMxOC42OCw0LjE4IDE4LjU2LDQuNDIgMTguMzEsNC42M0MxOC4wNyw0LjgzIDE3Ljg3LDQuOTMgMTcuNzQsNC45M0MxNy42Myw0LjkzIDE3LjQzLDQuODMgMTcuMTMsNC42NEwxNi41NSw0LjM4QzE2LjA4LDQuMzggMTUuMTQsNC43MSAxMy43MSw1LjM4QzEyLjI5LDYuMDQgMTEuNTgsNi43OSAxMS41OCw3LjYzQzExLjU4LDguMTQgMTEuODIsOC42IDEyLjMyLDlDMTIuODIsOS40MiAxMy43MSw5LjkzIDE1LDEwLjUzQzE2LjAzLDExIDE2Ljg2LDExLjUgMTcuNSwxMi4wN0MxOC4xLDEyLjYxIDE4LjQxLDEzLjI1IDE4LjQxLDE0QzE4LjQxLDE1LjM0IDE3LjQ3LDE2LjQxIDE1LjU4LDE3LjE3QzEzLjcsMTcuOTQgMTEuOSwxOC4zMiAxMC4xOSwxOC4zMkM4Ljc1LDE4LjMyIDgsMTcuODMgOCwxNi44NkM4LDE2LjUgOC4xOSwxNi4yNyA4LjUsMTYuMTFDOC44MywxNS45NSA5LjE2LDE1Ljg3IDkuNSwxNS44N0wxMC4yNSwxNkwxMC45NywxNi4xM0MxMS45NSwxNi4xMyAxMywxNS45NyAxNC4xMywxNS42NEMxNS4yNiwxNS4zMiAxNS45NiwxNC45MSAxNi4yMiwxNC40M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYXR1cmVJbWFnZSA9IFwiTTIyLDIySDJWMjBIMjJWMjJNNi4yLDE3LjNMNC44LDE1LjlMNi4yLDE0LjVMNS41LDEzLjhMNC4xLDE1LjJMMi43LDEzLjhMMiwxNC41TDMuNCwxNS45TDIsMTcuM0wyLjcsMThMNC4xLDE2LjZMNS41LDE4TDYuMiwxNy4zTTIwLDVIMTBBMiwyIDAgMCwwIDgsN1YxNkEyLDIgMCAwLDAgMTAsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjdBMiwyIDAgMCwwIDIwLDVNMTAsMTZMMTIuNiwxMi43TDE0LjQsMTQuOUwxNi44LDExLjZMMjAsMTZIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmF0dXJlVGV4dCA9IFwiTTIyLDIySDJWMjBIMjJWMjJNNi4yLDE3LjNMNC44LDE1LjlMNi4yLDE0LjVMNS41LDEzLjhMNC4xLDE1LjJMMi43LDEzLjhMMiwxNC41TDMuNCwxNS45TDIsMTcuM0wyLjcsMThMNC4xLDE2LjZMNS41LDE4TDYuMiwxNy4zTTIwLjUsM0wyMS43LDcuNEwyMC43LDcuN0MyMC4yLDYuOCAxOS44LDYgMTkuMyw1LjVDMTguNyw1IDE4LjEsNSAxNy41LDVIMTVWMTUuNUMxNSwxNiAxNSwxNi41IDE1LjMsMTYuN0MxNS42LDE2LjkgMTYuMywxNi45IDE3LDE2LjlWMTcuOUgxMVYxNi45QzExLjcsMTYuOSAxMi4zLDE2LjkgMTIuNywxNi43QzEzLDE2LjUgMTMsMTYgMTMsMTUuNVY1SDEwLjVDOS45LDUgOS4zLDUgOC43LDUuNEM4LjIsNS44IDcuNyw2LjcgNy4zLDcuNkw2LjMsNy4zTDcuNSwzSDIwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lsbyA9IFwiTTguNSwyQzExLjg1LDIgMTQuNiw0LjUzIDE0Ljk2LDcuNzhMMjIsMTJWMTRMMjAsMTIuOFYyMkgxOFYxMS42TDE1LDkuOFYyMkgxM1Y5SDRWMjJIMlY4LjVBNi41LDYuNSAwIDAsMSA4LjUsMk04LjUsNEM2LjU0LDQgNC44Nyw1LjI1IDQuMjYsN0gxMi43NEMxMi4xMyw1LjI1IDEwLjQ2LDQgOC41LDRNNiwxMUgxMVYxM0g2VjExTTYsMTVIMTFWMTdINlYxNU02LDE5SDExVjIxSDZWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lsdmVyd2FyZSA9IFwiTTguMSwxMy4zNEwzLjkxLDkuMTZDMi4zNSw3LjU5IDIuMzUsNS4wNiAzLjkxLDMuNUwxMC45MywxMC41TDguMSwxMy4zNE0xNC44OCwxMS41M0wxMy40MSwxM0wyMC4yOSwxOS44OEwxOC44OCwyMS4yOUwxMiwxNC40MUw1LjEyLDIxLjI5TDMuNzEsMTkuODhMMTMuNDcsMTAuMTJDMTIuNzYsOC41OSAxMy4yNiw2LjQ0IDE0Ljg1LDQuODVDMTYuNzYsMi45MyAxOS41LDIuNTcgMjAuOTYsNC4wM0MyMi40Myw1LjUgMjIuMDcsOC4yNCAyMC4xNSwxMC4xNUMxOC41NiwxMS43NCAxNi40MSwxMi4yNCAxNC44OCwxMS41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWx2ZXJ3YXJlQ2xlYW4gPSBcIk0xNSAwTDE0LjM4IDEuMzdMMTMgMkwxNC4zOCAyLjYzTDE1IDRMMTUuNjMgMi42M0wxNyAyTDE1LjYzIDEuMzdMMTUgME0xMC41IDJMOS40MSA0LjQxTDcgNS41TDkuNDEgNi41OUwxMC41IDlMMTEuNiA2LjU5TDE0IDUuNUwxMS42IDQuNDFMMTAuNSAyTTE4Ljg5IDUuMTRDMTcuNTYgNS4wNiAxNi4wNCA1LjY1IDE0Ljg0IDYuODRDMTMuMjUgOC40MyAxMi43NSAxMC41OCAxMy40NiAxMi4xMUwzLjcgMjEuODdMNS4xMSAyMy4yOEwxMiAxNi40MUwxOC44OCAyMy4yOUwyMC4yOSAyMS44OEwxMy40MSAxNUwxNC44OCAxMy41M0MxNi40MSAxNC4yNCAxOC41NiAxMy43NCAyMC4xNSAxMi4xNUMyMi4wNiAxMC4yNCAyMi40MyA3LjUgMjAuOTYgNi4wM0MyMC40MSA1LjUgMTkuNjggNS4xOSAxOC44OSA1LjE0TTMuOTEgNS41QzIuMzUgNy4wNiAyLjM1IDkuNTkgMy45MSAxMS4xNkw4LjEgMTUuMzRMMTAuOTMgMTIuNUwzLjkxIDUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWx2ZXJ3YXJlRm9yayA9IFwiTTUuMTIsMjEuMjlMMy43MSwxOS44OEwxMy4zNiwxMC4yMkwxMy4xNiwxMEMxMi4zOCw5LjIzIDEyLjM4LDcuOTcgMTMuMTYsNy4xOUwxNy41LDIuODJMMTguNDMsMy43NEwxNS4xOSw3TDE2LjE1LDcuOTRMMTkuMzksNC42OUwyMC4zMSw1LjYxTDE3LjA2LDguODVMMTgsOS44MUwyMS4yNiw2LjU2TDIyLjE4LDcuNUwxNy44MSwxMS44NEMxNy4wMywxMi42MiAxNS43NywxMi42MiAxNSwxMS44NEwxNC43OCwxMS42NEw1LjEyLDIxLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbHZlcndhcmVGb3JrS25pZmUgPSBcIk0xMSw5SDlWMkg3VjlINVYySDNWOUMzLDExLjEyIDQuNjYsMTIuODQgNi43NSwxMi45N1YyMkg5LjI1VjEyLjk3QzExLjM0LDEyLjg0IDEzLDExLjEyIDEzLDlWMkgxMVY5TTE2LDZWMTRIMTguNVYyMkgyMVYyQzE4LjI0LDIgMTYsNC4yNCAxNiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbHZlcndhcmVTcG9vbiA9IFwiTTE0Ljg4LDExLjUzTDUuMTIsMjEuMjlMMy43MSwxOS44OEwxMy40NywxMC4xMkMxMi43Niw4LjU5IDEzLjI2LDYuNDQgMTQuODUsNC44NUMxNi43NiwyLjkzIDE5LjUsMi41NyAyMC45Niw0LjAzQzIyLjQzLDUuNSAyMi4wNyw4LjI0IDIwLjE1LDEwLjE1QzE4LjU2LDExLjc0IDE2LjQxLDEyLjI0IDE0Ljg4LDExLjUzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbHZlcndhcmVWYXJpYW50ID0gXCJNOC4xLDEzLjM0TDMuOTEsOS4xNkMyLjM1LDcuNTkgMi4zNSw1LjA2IDMuOTEsMy41TDEwLjkzLDEwLjVMOC4xLDEzLjM0TTEzLjQxLDEzTDIwLjI5LDE5Ljg4TDE4Ljg4LDIxLjI5TDEyLDE0LjQxTDUuMTIsMjEuMjlMMy43MSwxOS44OEwxMy4zNiwxMC4yMkwxMy4xNiwxMEMxMi4zOCw5LjIzIDEyLjM4LDcuOTcgMTMuMTYsNy4xOUwxNy41LDIuODJMMTguNDMsMy43NEwxNS4xOSw3TDE2LjE1LDcuOTRMMTkuMzksNC42OUwyMC4zMSw1LjYxTDE3LjA2LDguODVMMTgsOS44MUwyMS4yNiw2LjU2TDIyLjE4LDcuNUwxNy44MSwxMS44NEMxNy4wMywxMi42MiAxNS43NywxMi42MiAxNSwxMS44NEwxNC43OCwxMS42NEwxMy40MSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaW0gPSBcIk0yMCw0QTIsMiAwIDAsMCAxOCwySDEwTDQsOFYyMEEyLDIgMCAwLDAgNiwyMkgxOEMxOS4xMSwyMiAyMCwyMS4xIDIwLDIwVjRNOSwxOUg3VjE3SDlWMTlNMTcsMTlIMTVWMTdIMTdWMTlNOSwxNUg3VjExSDlWMTVNMTMsMTlIMTFWMTVIMTNWMTlNMTMsMTNIMTFWMTFIMTNWMTNNMTcsMTVIMTVWMTFIMTdWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2ltQWxlcnQgPSBcIk0xMyAxM0gxMVY3SDEzTTEzIDE3SDExVjE1SDEzTTE4IDJIMTBMNCA4VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOEMxOS4xIDIyIDIwIDIxLjEgMjAgMjBWNEMyMCAyLjkgMTkuMSAyIDE4IDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2ltQWxlcnRPdXRsaW5lID0gXCJNMTMgMTNIMTFWN0gxM00xMyAxN0gxMVYxNUgxM00xOCA0VjIwSDZWOC44TDEwLjggNEgxOE0xOCAySDEwTDQgOFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjRDMjAgMi45IDE5LjEgMiAxOCAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbU9mZiA9IFwiTTIwLjg0IDIyLjczTDE5LjQ2IDIxLjM1QzE5LjEgMjEuNzUgMTguNTggMjIgMTggMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY4TDUuMDYgNi45NUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTIwIDRDMjAgMi45IDE5LjExIDIgMTggMkgxMEw3LjYgNC40TDIwIDE2LjhWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaW1PZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w1LjA2IDYuOTVMNCA4VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE4LjU4IDIyIDE5LjEgMjEuNzUgMTkuNDYgMjEuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTggMjBINlY4LjgzTDYuNDcgOC4zNkwxOCAxOS44OVYyME0xMC44MyA0SDE4VjE0LjhMMjAgMTYuOFY0QzIwIDIuOSAxOS4xMSAyIDE4IDJIMTBMNy42IDQuNEw5IDUuODFMMTAuODMgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaW1PdXRsaW5lID0gXCJNMTggNFYyMEg2VjguOEwxMC44IDRIMThNMTggMkgxMEw0IDhWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFY0QzIwIDIuOSAxOS4xIDIgMTggMk05LjUgMTlINy41VjE3SDkuNVYxOU0xNi41IDE5SDE0LjVWMTdIMTYuNVYxOU05LjUgMTVINy41VjExSDkuNVYxNU0xMyAxOUgxMVYxNUgxM1YxOU0xMyAxM0gxMVYxMUgxM1YxM00xNi41IDE1SDE0LjVWMTFIMTYuNVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaW1wbGVJY29ucyA9IFwiTTE4LjI1IDE3QzE4LjI1IDE3Ljg4IDE4LjA3IDE4Ljc0IDE3LjcxIDE5LjUzSDE2LjMxQzE3LjcxIDE3LjE1IDE2LjkxIDE0LjA5IDE0LjUzIDEyLjY5QzEzLjc2IDEyLjI0IDEyLjg5IDEyIDEyIDEyQzkuMjQgMTIgNyA5Ljc2IDcgN0M3IDQuMjQgOS4yNCAyIDEyIDJDMTQuNzYgMiAxNyA0LjI0IDE3IDdIMTUuNzVDMTUuNzUgNC45MyAxNC4wNyAzLjI1IDEyIDMuMjVDOS45MyAzLjI1IDguMjUgNC45MyA4LjI1IDdDOC4yNSA5LjA3IDkuOTMgMTAuNzUgMTIgMTAuNzVDMTUuNDUgMTAuNzUgMTguMjUgMTMuNTYgMTguMjUgMTdNNi4yOSAxOS41M0M1LjkzIDE4Ljc0IDUuNzUgMTcuODcgNS43NSAxN0g3QzcgMTcuOTMgNy4yNSAxOC43OSA3LjY5IDE5LjUzSDYuMjlNMTguMjUgMjAuNzVWMjJINS43NVYyMC43NUg5LjVWMTUuNzVIOC4yNVYxNC41SDE1Ljc1VjE1Ljc1SDE0LjVWMjAuNzVIMTguMjVNMTMuMjUgMTUuNzVIMTAuNzVWMjAuNzVIMTMuMjVWMTUuNzVNMTQuNDQgNy4wN0MxNC40IDguNCAxMy4zMyA5LjQ3IDEyIDkuNUMxMC42MiA5LjQ2IDkuNTMgOC4zMiA5LjU3IDYuOTRDOS42IDUuNjEgMTAuNjcgNC41MyAxMiA0LjVDMTMuMzggNC41NCAxNC40NyA1LjY4IDE0LjQ0IDcuMDdNMTMuMjUgN0MxMy4yNSA2LjMxIDEyLjY5IDUuNzUgMTIgNS43NUMxMS4zMSA1Ljc1IDEwLjc1IDYuMzEgMTAuNzUgN0MxMC43NSA3LjY5IDExLjMxIDguMjUgMTIgOC4yNUMxMi42OSA4LjI1IDEzLjI1IDcuNjkgMTMuMjUgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaW5hV2VpYm8gPSBcIk05LjgyLDEzLjg3QzEwLjg5LDEzLjg3IDExLjc3LDE0Ljc0IDExLjc3LDE1LjgyQTEuOTUsMS45NSAwIDAsMSA5LjgyLDE3Ljc3QzguNzQsMTcuNzcgNy44NywxNi44OSA3Ljg3LDE1LjgyQzcuODcsMTQuNzQgOC43NCwxMy44NyA5LjgyLDEzLjg3TTE0LjUsMy4zNEwxNS4xOCwzLjMxQzE4Ljk0LDMuMzEgMjIsNi4zNyAyMiwxMC4xM0wyMS45NSwxMC45NUwyMC43NiwxMC41OEwyMC43OCwxMC4xM0MyMC43OCw3LjA0IDE4LjI3LDQuNTMgMTUuMTgsNC41M0wxNC44Myw0LjU0TDE0LjUsMy4zNE0xNS4zMiw2LjIzQzE3LjM4LDYuMyAxOS4wNSw4IDE5LjA4LDEwLjA2TDE3Ljg0LDkuNjhDMTcuNjUsOC41NiAxNi43OCw3LjY4IDE1LjY3LDcuNUwxNS4zMiw2LjIzTTIsMTUuNDFDMS45NywxNC44IDIuMDcsMTIuNjQgNC45NSw5Ljk3QzguMzUsNi44MSA5LjgyLDcuMDUgOS44Miw3LjA1QzkuODIsNy4wNSAxMyw2Ljc1IDExLjA2LDEwLjQ2SDExLjEzQzExLjYsOS45NiAxMi42Miw5LjIxIDE0LjY5LDlDMTYuNzcsOC43OSAxNi43NywxMC41IDE2LjUsMTEuN0MxOC4zOCwxMi42NCAxOS41NiwxNC4wMyAxOS41NiwxNS41OEMxOS41NiwxOC40IDE1LjYzLDIwLjY5IDEwLjc4LDIwLjY5SDEwLjY1TDEwLjUsMjAuNjlDNywyMC42OSA0LDE5LjQyIDIuNzEsMTcuNTlDMi4yNSwxNi45NyAyLDE2LjI5IDIsMTUuNThWMTUuNDFNOS44MiwxMS45MkM2LjU5LDExLjkyIDMuOTcsMTMuNjcgMy45NywxNS44MkMzLjk3LDE3Ljk3IDYuNTksMTkuNzIgOS44MiwxOS43MkMxMy4wNSwxOS43MiAxNS42NywxNy45NyAxNS42NywxNS44MkMxNS42NywxMy42NyAxMy4wNSwxMS45MiA5LjgyLDExLjkyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbmVXYXZlID0gXCJNMTYuNSwyMUMxMy41LDIxIDEyLjMxLDE2Ljc2IDExLjA1LDEyLjI4QzEwLjE0LDkuMDQgOSw1IDcuNSw1QzQuMTEsNSA0LDExLjkzIDQsMTJIMkMyLDExLjYzIDIuMDYsMyA3LjUsM0MxMC41LDMgMTEuNzEsNy4yNSAxMi45NywxMS43NEMxMy44MywxNC44IDE1LDE5IDE2LjUsMTlDMTkuOTQsMTkgMjAuMDMsMTIuMDcgMjAuMDMsMTJIMjIuMDNDMjIuMDMsMTIuMzcgMjEuOTcsMjEgMTYuNSwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaXRlbWFwID0gXCJNOSwyVjhIMTFWMTFINUMzLjg5LDExIDMsMTEuODkgMywxM1YxNkgxVjIySDdWMTZINVYxM0gxMVYxNkg5VjIySDE1VjE2SDEzVjEzSDE5VjE2SDE3VjIySDIzVjE2SDIxVjEzQzIxLDExLjg5IDIwLjExLDExIDE5LDExSDEzVjhIMTVWMkg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpemVMID0gXCJNOSA3VjE3SDE1VjE1SDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaXplTSA9IFwiTTkgN0M3LjkgNyA3IDcuOSA3IDlWMTdIOVY5SDExVjE2SDEzVjlIMTVWMTdIMTdWOUMxNyA3LjkgMTYuMTEgNyAxNSA3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2l6ZVMgPSBcIk0xMSA3QzkuOSA3IDkgNy45IDkgOVYxMUM5IDEyLjExIDkuOSAxMyAxMSAxM0gxM1YxNUg5VjE3SDEzQzE0LjExIDE3IDE1IDE2LjExIDE1IDE1VjEzQzE1IDExLjkgMTQuMTEgMTEgMTMgMTFIMTFWOUgxNVY3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpemVYbCA9IFwiTTYgN0g4TDkgOS41TDEwIDdIMTJMMTAgMTJMMTIgMTdIMTBMOSAxNC41TDggMTdINkw4IDEyTDYgN00xMyA3SDE1VjE1SDE5VjE3SDEzVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2l6ZVhzID0gXCJNNiA3SDhMOSA5LjVMMTAgN0gxMkwxMCAxMkwxMiAxN0gxMEw5IDE0LjVMOCAxN0g2TDggMTJMNiA3TTE1IDdIMTlWOUgxNVYxMUgxN0MxOC4xMSAxMSAxOSAxMS45IDE5IDEzVjE1QzE5IDE2LjExIDE4LjExIDE3IDE3IDE3SDEzVjE1SDE3VjEzSDE1QzEzLjkgMTMgMTMgMTIuMTEgMTMgMTFWOUMxMyA3LjkgMTMuOSA3IDE1IDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2l6ZVh4bCA9IFwiTTkgN0gxMUwxMiA5LjVMMTMgN0gxNUwxMyAxMkwxNSAxN0gxM0wxMiAxNC41TDExIDE3SDlMMTEgMTJMOSA3TTE2IDdIMThWMTVIMjJWMTdIMTZWN00yIDdINEw1IDkuNUw2IDdIOEw2IDEyTDggMTdINkw1IDE0LjVMNCAxN0gyTDQgMTJMMiA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpemVYeHMgPSBcIk05IDdIMTFMMTIgOS41TDEzIDdIMTVMMTMgMTJMMTUgMTdIMTNMMTIgMTQuNUwxMSAxN0g5TDExIDEyTDkgN00xOCA3SDIyVjlIMThWMTFIMjBDMjEuMTEgMTEgMjIgMTEuOSAyMiAxM1YxNUMyMiAxNi4xMSAyMS4xMSAxNyAyMCAxN0gxNlYxNUgyMFYxM0gxOEMxNi45IDEzIDE2IDEyLjExIDE2IDExVjlDMTYgNy45IDE2LjkgNyAxOCA3TTIgN0g0TDUgOS41TDYgN0g4TDYgMTJMOCAxN0g2TDUgMTQuNUw0IDE3SDJMNCAxMkwyIDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2l6ZVh4eGwgPSBcIk05IDdIMTFMMTIgOS41TDEzIDdIMTVMMTMgMTJMMTUgMTdIMTNMMTIgMTQuNUwxMSAxN0g5TDExIDEyTDkgN00xNiA3SDE4VjE1SDIyVjE3SDE2VjdNOCAxNUM4IDE2LjExIDcuMTEgMTcgNiAxN0gyVjE1SDZWMTNINFYxMUg2VjlIMlY3SDZDNy4xIDcgOCA3Ljg5IDggOVYxMC41QzggMTEuMzMgNy4zMyAxMiA2LjUgMTJDNy4zMyAxMiA4IDEyLjY3IDggMTMuNVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTa2F0ZSA9IFwiTTIxLjEsMTYuNUMyMC4zNiwxNi4xNyAxOS41LDE2LjUgMTkuMTksMTcuMjZDMTkuMDYsMTcuNTggMTguOCwxNy44NyAxOC41LDE4SDNWMjFIMTcuOTdDMTkuNjgsMjEgMjEuMjIsMjAgMjEuODgsMTguNDFDMjIuMiwxNy42NyAyMS44NiwxNi44MSAyMS4xLDE2LjVNMTksMTVDMTksMTUgMTksMTYgMTcsMTZDMTUsMTYgNCwxNiA0LDE2VjNIMTFMMTEuMjEsNC41SDkuMjRWNkgxMS40M0wxMS42NCw3LjVIOS4yNFY5SDExLjg2TDEyLDEwSDE0QzE0LDEwIDE5LDEwIDE5LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrYXRlYm9hcmQgPSBcIk05IDE0LjVDOSAxNS4zMyA4LjMzIDE2IDcuNSAxNlM2IDE1LjMzIDYgMTQuNSA2LjY3IDEzIDcuNSAxMyA5IDEzLjY3IDkgMTQuNU0xNi41IDEzQzE1LjY3IDEzIDE1IDEzLjY3IDE1IDE0LjVTMTUuNjcgMTYgMTYuNSAxNkMxNy4zMyAxNiAxOCAxNS4zMyAxOCAxNC41UzE3LjMzIDEzIDE2LjUgMTNNMjEuNTkgOS4xOUMyMS4xNCA4Ljg3IDIwLjUgOC45NyAyMC4xOSA5LjQxTDIwLjA2IDkuNTlDMTkuODggOS44NSAxOS41NyAxMCAxOS4yNiAxMEw0Ljc0IDEwQzQuNDMgMTAgNC4xMyA5Ljg1IDMuOTQgOS41OUwzLjgxIDkuNDFDMy41IDguOTcgMi44NiA4Ljg3IDIuNDEgOS4xOUMxLjk2IDkuNSAxLjg3IDEwLjE1IDIuMTkgMTAuNTlMMi4zMiAxMC43N0MyLjg4IDExLjU0IDMuNzkgMTIgNC43NCAxMkgxOS4yNkMyMC4yMSAxMiAyMS4xMiAxMS41NCAyMS42OCAxMC43N0wyMS44MSAxMC41OUMyMi4xMyAxMC4xNSAyMi4wNCA5LjUgMjEuNTkgOS4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTa2V3TGVzcyA9IFwiTTE3LjUsMTFMMTUuNDEsMjBIMTAuNUwxMi41OSwxMUgxNy41TTIwLDlIMTFMOCwyMkgxN0wyMCw5TTQsNkw4LDJWNUgxNlY3SDhWMTBMNCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrZXdNb3JlID0gXCJNMTIuNSwxMUwxMC40MSwyMEg1LjVMNy41OSwxMUgxMi41TTE1LDlINkwzLDIySDEyTDE1LDlNMjEsNkwxNywyVjVIOVY3SDE3VjEwTDIxLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2tpID0gXCJNMTUuMyAxOC4zTDE3IDEyLjlMMTguNCAxMy4zTDE2LjcgMTguN0wxNS4zIDE4LjNNMTcuMyA1LjJDMTguMiA1LjIgMTkgNC40IDE5IDMuNVMxOC4zIDEuOCAxNy4zIDEuOEMxNi40IDEuOCAxNS42IDIuNiAxNS42IDMuNVMxNi40IDUuMiAxNy4zIDUuMk0yMS4zIDE5LjhDMjAuNyAyMC4xIDIwLjEgMjAuNCAxOS40IDIwLjVDMTguNyAyMC42IDE4IDIwLjYgMTcuMyAyMC40TDExIDE4LjVMMTMuNCAxMS43TDEwLjkgOC43TDEzLjggNy4xQzEzLjggNy4xIDE0LjkgMTAgMTUgMTAuM1MxNS4zIDEwLjggMTUuNiAxMC45TDE5LjcgMTIuMUwyMC4yIDEwLjNMMTkuMyA5LjlMMTkuOSA3LjhMMTguNSA3LjRMMTggOS40TDE2LjggOC45TDE1LjQgNUMxNSA0LjIgMTQgMy44IDEzLjEgNC4yTDguNSA2LjdDNy42IDcuMiA3LjMgOC4zIDcuOCA5LjFDNy45IDkuMyAxMC44IDEyLjMgMTAuOCAxMi4zTDkuMSAxOEwyLjMgMTZMMiAxNy4zTDE2LjkgMjEuN0MxOC42IDIyLjIgMjAuNCAyMiAyMiAyMS4xTDIxLjMgMTkuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lDcm9zc0NvdW50cnkgPSBcIk0xNSAxLjJDMTYgMS4yIDE2LjggMiAxNi44IDNTMTYgNC44IDE1IDQuOCAxMy4yIDQgMTMuMiAzIDE0IDEuMiAxNSAxLjJNMTEgMjNWMjEuN0g5LjNMMTEuNyAxNC45TDE0IDE4VjIxLjdIMTNWMjNIMjBWMjEuN0gxNS44VjE2LjVMMTMuMyAxMkwxNCA5LjJMMTUuMSAxMUgyMFY5LjFIMTYuNEwxNC40IDUuOEMxNC4xIDUuMyAxMy41IDUgMTIuOSA1QzEyLjcgNSAxMi42IDUuMSAxMi40IDUuMUw3IDYuOFYxMkg4LjhWOC4zTDExIDcuN0w3LjQgMjEuN0g0VjIzXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2tpV2F0ZXIgPSBcIk00LjIgMy41QzQuMiAyLjcgNC45IDEuOSA1LjggMS45QzYuNyAxLjkgNy40IDIuNiA3LjQgMy41UzYuNiA1IDUuOCA1IDQuMiA0LjMgNC4yIDMuNU0yMiAzLjlMMjEuNSAzTDEzLjUgNy4xTDE0IDhMMjIgMy45TTIwLjggMjAuM0wyMS43IDIxLjJDMjEuMSAyMS44IDIwLjUgMjIuMiAxOS44IDIyLjVTMTguMyAyMyAxNy41IDIzSDJWMjEuN0g0LjdMNi44IDE4LjJMNC41IDE1TDMuNyA3LjJDMy43IDYuMyA0LjUgNS41IDUuNCA1LjVDNS43IDUuNSA2IDUuNiA2LjIgNS43TDkuNyA4LjNMMTIgNy41TDEyLjggOS4xTDkuMyAxMC42QzkuMiAxMC41IDcuNyA5LjQgNi42IDguNUw3IDEyTDEyLjMgMTYuNUwxNCAyMS43SDE3LjVDMTguMSAyMS43IDE4LjcgMjEuNiAxOS4zIDIxLjNDMTkuOSAyMS4xIDIwLjQgMjAuNyAyMC44IDIwLjNNNyAyMS43SDEyTDEwLjQgMTcuOEw4LjEgMTUuOUw5LjMgMTguNEw3IDIxLjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2tpcEJhY2t3YXJkID0gXCJNMjAsNVYxOUwxMywxMk02LDVWMTlINFY1TTEzLDVWMTlMNiwxMlwiO1xyXG5leHBvcnQgdmFyIG1kaVNraXBCYWNrd2FyZE91dGxpbmUgPSBcIk0xOCwxNC4xN0wxNS44MywxMkwxOCw5LjgzVjE0LjE3TTIwLDE5VjVMMTMsMTJNNCwxOUg2VjVINE0xMSwxNC4xN0w4LjgzLDEyTDExLDkuODNWMTQuMTdNMTMsMTlWNUw2LDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2tpcEZvcndhcmQgPSBcIk00LDVWMTlMMTEsMTJNMTgsNVYxOUgyMFY1TTExLDVWMTlMMTgsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwRm9yd2FyZE91dGxpbmUgPSBcIk02LDkuODNMOC4xNywxMkw2LDE0LjE3VjkuODNNNCw1VjE5TDExLDEyTTIwLDVIMThWMTlIMjBNMTMsOS44M0wxNS4xNywxMkwxMywxNC4xN1Y5LjgzTTExLDVWMTlMMTgsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwTmV4dCA9IFwiTTE2LDE4SDE4VjZIMTZNNiwxOEwxNC41LDEyTDYsNlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwTmV4dENpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTgsOEwxMywxMkw4LDE2TTE0LDhIMTZWMTZIMTRcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwTmV4dENpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiw0QzE2LjQxLDQgMjAsNy41OSAyMCwxMkMyMCwxNi40MSAxNi40MSwyMCAxMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRNOCw4VjE2TDEzLDEyTTE0LDhWMTZIMTZWOFwiO1xyXG5leHBvcnQgdmFyIG1kaVNraXBOZXh0T3V0bGluZSA9IFwiTTYsMThMMTQuNSwxMkw2LDZNOCw5Ljg2TDExLjAzLDEyTDgsMTQuMTRNMTYsNkgxOFYxOEgxNlwiO1xyXG5leHBvcnQgdmFyIG1kaVNraXBQcmV2aW91cyA9IFwiTTYsMThWNkg4VjE4SDZNOS41LDEyTDE4LDZWMThMOS41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNraXBQcmV2aW91c0NpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTgsOEgxMFYxNkg4TTE2LDhWMTZMMTEsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwUHJldmlvdXNDaXJjbGVPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEM3LjU5LDQgNCw3LjU5IDQsMTJDNCwxNi40MSA3LjU5LDIwIDEyLDIwQzE2LjQxLDIwIDIwLDE2LjQxIDIwLDEyQzIwLDcuNTkgMTYuNDEsNCAxMiw0TTE2LDhWMTZMMTEsMTJNMTAsOFYxNkg4VjhcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwUHJldmlvdXNPdXRsaW5lID0gXCJNNiw2SDhWMThINk05LjUsMTJMMTgsMThWNk0xNiwxNC4xNEwxMi45NywxMkwxNiw5Ljg2VjE0LjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrdWxsID0gXCJNMTIsMkE5LDkgMCAwLDAgMywxMUMzLDE0LjAzIDQuNTMsMTYuODIgNywxOC40N1YyMkg5VjE5SDExVjIySDEzVjE5SDE1VjIySDE3VjE4LjQ2QzE5LjQ3LDE2LjgxIDIxLDE0IDIxLDExQTksOSAwIDAsMCAxMiwyTTgsMTFBMiwyIDAgMCwxIDEwLDEzQTIsMiAwIDAsMSA4LDE1QTIsMiAwIDAsMSA2LDEzQTIsMiAwIDAsMSA4LDExTTE2LDExQTIsMiAwIDAsMSAxOCwxM0EyLDIgMCAwLDEgMTYsMTVBMiwyIDAgMCwxIDE0LDEzQTIsMiAwIDAsMSAxNiwxMU0xMiwxNEwxMy41LDE3SDEwLjVMMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2t1bGxDcm9zc2JvbmVzID0gXCJNMTUuOCwxOC41TDIxLjgsMjAuMUwyMS40LDIyTDEyLDE5LjVMMi42LDIyTDIuMSwyMC4xTDguMSwxOC41TDIsMTYuOUwyLjUsMTVMMTEuOSwxNy41TDIxLjMsMTVMMjEuOCwxNi45TDE1LjgsMTguNU0xOCw4QzE4LDkuOCAxNy4yLDExLjMgMTYsMTIuNFYxNUgxNFYxMy43TDE0LDEzSDEzVjE1SDExVjEzSDEwVjEzLjdMMTAsMTVIOFYxMi40QzYuOCwxMS4zIDYsOS44IDYsOEE2LDYgMCAwLDEgMTIsMkE2LDYgMCAwLDEgMTgsOE0xMSw3LjVDMTEsNi43IDEwLjMsNiA5LjUsNkM4LjcsNiA4LDYuNyA4LDcuNUM4LDguMyA4LjcsOSA5LjUsOUMxMC4zLDkgMTEsOC4zIDExLDcuNU0xMywxMUwxMiw5TDExLDExSDEzTTE2LDcuNUMxNiw2LjcgMTUuMyw2IDE0LjUsNkMxMy43LDYgMTMsNi43IDEzLDcuNUMxMyw4LjMgMTMuNyw5IDE0LjUsOUMxNS4zLDkgMTYsOC4zIDE2LDcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTa3VsbENyb3NzYm9uZXNPdXRsaW5lID0gXCJNMTUuOCwxOC41TDIxLjgsMjAuMUwyMS40LDIyTDEyLDE5LjVMMi42LDIyTDIuMSwyMC4xTDguMSwxOC41TDIsMTYuOUwyLjUsMTVMMTEuOSwxNy41TDIxLjMsMTVMMjEuOCwxNi45TDE1LjgsMTguNU05LjUsNkM4LjcsNiA4LDYuNyA4LDcuNUM4LDguMyA4LjcsOSA5LjUsOUMxMC4zLDkgMTEsOC4zIDExLDcuNUMxMSw2LjcgMTAuMyw2IDkuNSw2TTE0LjUsNkMxMy43LDYgMTMsNi43IDEzLDcuNUMxMyw4LjMgMTMuNyw5IDE0LjUsOUMxNS4zLDkgMTYsOC4zIDE2LDcuNUMxNiw2LjcgMTUuMyw2IDE0LjUsNk0xMywxMUwxMiw5TDExLDExSDEzTTEyLDFDOC4xLDEgNSw0LjEgNSw4QzUsOS45IDUuOCwxMS42IDcsMTIuOVYxNkgxN1YxMi45QzE4LjIsMTEuNiAxOSw5LjkgMTksOEMxOSw0LjEgMTUuOSwxIDEyLDFNMTUsMTJWMTRIMTRWMTJIMTNWMTRIMTFWMTJIMTBWMTRIOVYxMkg5QzcuOCwxMS4xIDcsOS43IDcsOEM3LDUuMiA5LjIsMyAxMiwzQzE0LjgsMyAxNyw1LjIgMTcsOEMxNyw5LjYgMTYuMiwxMS4xIDE1LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrdWxsT3V0bGluZSA9IFwiTTgsMTVBMiwyIDAgMCwxIDYsMTNBMiwyIDAgMCwxIDgsMTFBMiwyIDAgMCwxIDEwLDEzQTIsMiAwIDAsMSA4LDE1TTEwLjUsMTdMMTIsMTRMMTMuNSwxN0gxMC41TTE2LDE1QTIsMiAwIDAsMSAxNCwxM0EyLDIgMCAwLDEgMTYsMTFBMiwyIDAgMCwxIDE4LDEzQTIsMiAwIDAsMSAxNiwxNU0yMiwxMUExMCwxMCAwIDAsMCAxMiwxQTEwLDEwIDAgMCwwIDIsMTFDMiwxMy44IDMuMiwxNi4zIDUsMTguMVYyMkgxOVYxOC4xQzIwLjgsMTYuMyAyMiwxMy44IDIyLDExTTE3LDIwSDE1VjE4SDEzVjIwSDExVjE4SDlWMjBIN1YxNy4yQzUuMiwxNS43IDQsMTMuNSA0LDExQTgsOCAwIDAsMSAxMiwzQTgsOCAwIDAsMSAyMCwxMUMyMCwxMy41IDE4LjgsMTUuOCAxNywxNy4yVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrdWxsU2NhbiA9IFwiTTIgMEMuOSAwIDAgLjkgMCAyVjZIMlYySDZWMEgyTTE4IDBWMkgyMlY2SDI0VjJDMjQgLjkgMjMuMSAwIDIyIDBIMThNMTIgM0M3LjYgMyA0IDYuNiA0IDExQzQgMTMuNSA1LjIgMTUuOCA3IDE3LjJWMjFIOVYxOEgxMVYyMUgxM1YxOEgxNVYyMUgxN1YxNy4yQzE4LjggMTUuNyAyMCAxMy41IDIwIDExQzIwIDYuNiAxNi40IDMgMTIgM004IDE0QzYuOSAxNCA2IDEzLjEgNiAxMlM2LjkgMTAgOCAxMCAxMCAxMC45IDEwIDEyIDkuMSAxNCA4IDE0TTEwLjUgMTZMMTIgMTNMMTMuNSAxNkgxMC41TTE2IDE0QzE0LjkgMTQgMTQgMTMuMSAxNCAxMlMxNC45IDEwIDE2IDEwIDE4IDEwLjkgMTggMTIgMTcuMSAxNCAxNiAxNE0wIDE4VjIyQzAgMjMuMSAuOSAyNCAyIDI0SDZWMjJIMlYxOEgwTTIyIDE4VjIySDE4VjI0SDIyQzIzLjEgMjQgMjQgMjMuMSAyNCAyMlYxOEgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTa3VsbFNjYW5PdXRsaW5lID0gXCJNMiAwQy45IDAgMCAuOSAwIDJWNkgyVjJINlYwSDJNMTggMFYySDIyVjZIMjRWMkMyNCAuOSAyMy4xIDAgMjIgMEgxOE05LjUgMTNDOC43IDEzIDggMTIuMyA4IDExLjVTOC43IDEwIDkuNSAxMCAxMSAxMC43IDExIDExLjUgMTAuMyAxMyA5LjUgMTNNMTEgMTVMMTIgMTNMMTMgMTVIMTFNMTQuNSAxM0MxMy43IDEzIDEzIDEyLjMgMTMgMTEuNVMxMy43IDEwIDE0LjUgMTAgMTYgMTAuNyAxNiAxMS41IDE1LjMgMTMgMTQuNSAxM00wIDE4VjIyQzAgMjMuMSAuOSAyNCAyIDI0SDZWMjJIMlYxOEgwTTIyIDE4VjIySDE4VjI0SDIyQzIzLjEgMjQgMjQgMjMuMSAyNCAyMlYxOEgyMk0xMiAzQzcuNiAzIDQgNi42IDQgMTFDNCAxMyA0LjggMTQuOSA2IDE2LjNWMjFIMThWMTYuM0MxOS4yIDE0LjkgMjAgMTMuMSAyMCAxMUMyMCA2LjYgMTYuNCAzIDEyIDNNMTYgMTUuNFYxOUgxNFYxN0gxM1YxOUgxMVYxN0gxMFYxOUg4VjE1LjRDNi44IDE0LjMgNiAxMi43IDYgMTFDNiA3LjcgOC43IDUgMTIgNVMxOCA3LjcgMTggMTFDMTggMTIuOCAxNy4yIDE0LjMgMTYgMTUuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTa3lwZSA9IFwiTTE4LDZDMjAuMDcsOC4wNCAyMC44NSwxMC44OSAyMC4zNiwxMy41NUMyMC43NywxNC4yNyAyMSwxNS4xMSAyMSwxNkE1LDUgMCAwLDEgMTYsMjFDMTUuMTEsMjEgMTQuMjcsMjAuNzcgMTMuNTUsMjAuMzZDMTAuODksMjAuODUgOC4wNCwyMC4wNyA2LDE4QzMuOTMsMTUuOTYgMy4xNSwxMy4xMSAzLjY0LDEwLjQ1QzMuMjMsOS43MyAzLDguODkgMyw4QTUsNSAwIDAsMSA4LDNDOC44OSwzIDkuNzMsMy4yMyAxMC40NSwzLjY0QzEzLjExLDMuMTUgMTUuOTYsMy45MyAxOCw2TTEyLjA0LDE3LjE2QzE0LjkxLDE3LjE2IDE2LjM0LDE1Ljc4IDE2LjM0LDEzLjkyQzE2LjM0LDEyLjczIDE1Ljc4LDExLjQ2IDEzLjYxLDEwLjk3TDExLjYyLDEwLjUzQzEwLjg2LDEwLjM2IDEwLDEwLjEzIDEwLDkuNDJDMTAsOC43IDEwLjYsOC4yIDExLjcsOC4yQzEzLjkzLDguMiAxMy43Miw5LjczIDE0LjgzLDkuNzNDMTUuNDEsOS43MyAxNS45MSw5LjM5IDE1LjkxLDguOEMxNS45MSw3LjQzIDEzLjcyLDYuNCAxMS44Niw2LjRDOS44NSw2LjQgNy43LDcuMjYgNy43LDkuNTRDNy43LDEwLjY0IDguMDksMTEuODEgMTAuMjUsMTIuMzVMMTIuOTQsMTMuMDNDMTMuNzUsMTMuMjMgMTMuOTUsMTMuNjggMTMuOTUsMTQuMUMxMy45NSwxNC43OCAxMy4yNywxNS40NSAxMi4wNCwxNS40NUM5LjYzLDE1LjQ1IDkuOTYsMTMuNiA4LjY3LDEzLjZDOC4wOSwxMy42IDcuNjcsMTQgNy42NywxNC41N0M3LjY3LDE1LjY4IDksMTcuMTYgMTIuMDQsMTcuMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2t5cGVCdXNpbmVzcyA9IFwiTTEyLjAzLDE2LjUzQzkuMzcsMTYuNTMgOC4xOCwxNS4yMiA4LjE4LDE0LjI0QzguMTgsMTMuNzQgOC41NSwxMy4zOCA5LjA2LDEzLjM4QzEwLjIsMTMuMzggOS45MSwxNSAxMi4wMywxNUMxMy4xMiwxNSAxMy43MywxNC40MyAxMy43MywxMy44MkMxMy43MywxMy40NiAxMy41NSwxMy4wNiAxMi44MywxMi44OEwxMC40NiwxMi4yOUM4LjU1LDExLjgxIDguMiwxMC43OCA4LjIsOS44MUM4LjIsNy43OSAxMC4xLDcuMDMgMTEuODgsNy4wM0MxMy41LDcuMDMgMTUuNDYsNy45NCAxNS40Niw5LjE1QzE1LjQ2LDkuNjcgMTUsOS45NyAxNC41LDkuOTdDMTMuNSw5Ljk3IDEzLjcsOC42MiAxMS43NCw4LjYyQzEwLjc3LDguNjIgMTAuMjMsOS4wNiAxMC4yMyw5LjY5QzEwLjIzLDEwLjMyIDExLDEwLjUgMTEuNjYsMTAuNjhMMTMuNDIsMTEuMDdDMTUuMzQsMTEuNSAxNS44MywxMi42MiAxNS44MywxMy42N0MxNS44MywxNS4zMSAxNC41NywxNi41MyAxMi4wMywxNi41M00xOCw2QzIwLjA3LDguMDQgMjAuODUsMTAuODkgMjAuMzYsMTMuNTVDMjAuNzcsMTQuMjcgMjEsMTUuMTEgMjEsMTZBNSw1IDAgMCwxIDE2LDIxQzE1LjExLDIxIDE0LjI3LDIwLjc3IDEzLjU1LDIwLjM2QzEwLjg5LDIwLjg1IDguMDQsMjAuMDcgNiwxOEMzLjkzLDE1Ljk2IDMuMTUsMTMuMTEgMy42NCwxMC40NUMzLjIzLDkuNzMgMyw4Ljg5IDMsOEE1LDUgMCAwLDEgOCwzQzguODksMyA5LjczLDMuMjMgMTAuNDUsMy42NEMxMy4xMSwzLjE1IDE1Ljk2LDMuOTMgMTgsNk04LDVBMywzIDAgMCwwIDUsOEM1LDguNzkgNS4zLDkuNSA1LjgsMTAuMDRDNS4xLDEyLjI4IDUuNjMsMTQuODIgNy40LDE2LjZDOS4xOCwxOC4zNyAxMS43MiwxOC45IDEzLjk2LDE4LjJDMTQuNSwxOC43IDE1LjIxLDE5IDE2LDE5QTMsMyAwIDAsMCAxOSwxNkMxOSwxNS4yMSAxOC43LDE0LjUgMTguMiwxMy45NkMxOC45LDExLjcyIDE4LjM3LDkuMTggMTYuNiw3LjRDMTQuODIsNS42MyAxMi4yOCw1LjEgMTAuMDQsNS44QzkuNSw1LjMgOC43OSw1IDgsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbGFjayA9IFwiTTYsMTVBMiwyIDAgMCwxIDQsMTdBMiwyIDAgMCwxIDIsMTVBMiwyIDAgMCwxIDQsMTNINlYxNU03LDE1QTIsMiAwIDAsMSA5LDEzQTIsMiAwIDAsMSAxMSwxNVYyMEEyLDIgMCAwLDEgOSwyMkEyLDIgMCAwLDEgNywyMFYxNU05LDdBMiwyIDAgMCwxIDcsNUEyLDIgMCAwLDEgOSwzQTIsMiAwIDAsMSAxMSw1VjdIOU05LDhBMiwyIDAgMCwxIDExLDEwQTIsMiAwIDAsMSA5LDEySDRBMiwyIDAgMCwxIDIsMTBBMiwyIDAgMCwxIDQsOEg5TTE3LDEwQTIsMiAwIDAsMSAxOSw4QTIsMiAwIDAsMSAyMSwxMEEyLDIgMCAwLDEgMTksMTJIMTdWMTBNMTYsMTBBMiwyIDAgMCwxIDE0LDEyQTIsMiAwIDAsMSAxMiwxMFY1QTIsMiAwIDAsMSAxNCwzQTIsMiAwIDAsMSAxNiw1VjEwTTE0LDE4QTIsMiAwIDAsMSAxNiwyMEEyLDIgMCAwLDEgMTQsMjJBMiwyIDAgMCwxIDEyLDIwVjE4SDE0TTE0LDE3QTIsMiAwIDAsMSAxMiwxNUEyLDIgMCAwLDEgMTQsMTNIMTlBMiwyIDAgMCwxIDIxLDE1QTIsMiAwIDAsMSAxOSwxN0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTbGFzaEZvcndhcmQgPSBcIk03IDIxTDE0LjkgM0gxN0w5LjEgMjFIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTbGFzaEZvcndhcmRCb3ggPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNOS4zIDE5SDdMMTQuNyA1SDE3TDkuMyAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbGVlcCA9IFwiTTIzLDEySDE3VjEwTDIwLjM5LDZIMTdWNEgyM1Y2TDE5LjYyLDEwSDIzVjEyTTE1LDE2SDlWMTRMMTIuMzksMTBIOVY4SDE1VjEwTDExLjYyLDE0SDE1VjE2TTcsMjBIMVYxOEw0LjM5LDE0SDFWMTJIN1YxNEwzLjYyLDE4SDdWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2xlZXBPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIwLDIwLjcyTDE4LjczLDIyTDEyLjczLDE2SDlWMTRMOS43OSwxMy4wNkwyLDUuMjdNMjMsMTJIMTdWMTBMMjAuMzksNkgxN1Y0SDIzVjZMMTkuNjIsMTBIMjNWMTJNOS44Miw4SDE1VjEwTDEzLjU0LDExLjcyTDkuODIsOE03LDIwSDFWMThMNC4zOSwxNEgxVjEySDdWMTRMMy42MiwxOEg3VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNsaWRlID0gXCJNMTQuODMgMTUuNDVDMTQuNDcgMTQuOSAxNC4xOCAxNC4zOSAxMy45MSAxMy45MkMxMi43NCAxMS45MSAxMS43OSAxMC41NSA5IDEwLjEzVjUuNUM5IDMuNTcgNy40MyAyIDUuNSAyUzIgMy41NyAyIDUuNVYyMkg0VjIwSDdWMjJIOVYxMi4xNkMxMC43NiAxMi41IDExLjI5IDEzLjM5IDEyLjE3IDE0LjkyQzEyLjQ2IDE1LjQzIDEyLjc4IDE1Ljk3IDEzLjE3IDE2LjU2QzE1LjQxIDE5LjkyIDE3LjY3IDIyIDIyIDIyVjIwQzE4LjUzIDIwIDE2LjggMTguNCAxNC44MyAxNS40NU01LjUgNEM2LjMzIDQgNyA0LjY3IDcgNS41VjEwSDRWNS41QzQgNC42NyA0LjY3IDQgNS41IDRNNCAxOFYxNkg3VjE4SDRNNyAxNEg0VjEySDdWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2xvcGVEb3duaGlsbCA9IFwiTTIyLDE5VjIySDJWMTNMMjIsMTlNMTkuMDksNy41TDE4LjI1LDEwLjI2TDguMTMsNy4yNkM4LjA2LDUuNjYgNi43LDQuNDIgNS4xLDQuNUMzLjUsNC41NyAyLjI2LDUuOTMgMi4zNCw3LjUzQzIuNDEsOS4xMyAzLjc3LDEwLjM2IDUuMzcsMTAuMjlDNi4yNCwxMC4yNSA3LjA1LDkuODIgNy41Nyw5LjExTDE3LjY5LDEyLjExTDE2Ljg1LDE0Ljg5TDIxLjY3LDEyLjI5TDE5LjA5LDcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbG9wZVVwaGlsbCA9IFwiTTIyLDEzVjIySDJWMTlMMjIsMTNNMjEuNjgsNy4wNkwxNi44Niw0LjQ2TDE3LjcsNy4yNEw3LjU4LDEwLjI0QzYuNjMsOC45NSA0LjgyLDguNjcgMy41Myw5LjYyQzIuMjQsMTAuNTcgMS45NiwxMi4zOCAyLjkxLDEzLjY3QzMuODUsMTQuOTcgNS42NywxNS4yNCA2Ljk2LDE0LjI5QzcuNjcsMTMuNzggOC4xLDEyLjk3IDguMTQsMTIuMDlMMTguMjYsOS4wOUwxOS4xLDExLjg3TDIxLjY4LDcuMDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2xvdE1hY2hpbmUgPSBcIk01IDEyTDcgOFY3SDRWOEg2TDQgMTJNOSAxMkwxMSA4VjdIOFY4SDEwTDggMTJNMTMgMTJMMTUgOFY3SDEyVjhIMTRMMTIgMTJNMjEgMkMxOS45IDIgMTkgMi45IDE5IDRDMTkgNC43IDE5LjQgNS40IDIwIDUuN1YxN0gxN1YxNUMxNy42IDE1IDE4IDE0LjYgMTggMTRWNUMxOCA0LjQgMTcuNiA0IDE3IDRIMTMuMkMxMi40IDIuOCAxMSAyIDkuNSAyUzYuNiAyLjggNS44IDRIMkMxLjQgNCAxIDQuNCAxIDVWMTRDMSAxNC42IDEuNCAxNSAyIDE1VjIySDE3VjE5SDIwQzIxLjEgMTkgMjIgMTguMSAyMiAxN1Y1LjdDMjIuNiA1LjQgMjMgNC43IDIzIDRDMjMgMi45IDIyLjEgMiAyMSAyTTEzIDE5SDZWMTdIMTNWMTlNMTYgMTNIM1Y2SDE2VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNsb3RNYWNoaW5lT3V0bGluZSA9IFwiTTUgMTJMNyA4VjdINFY4SDZMNCAxMk05IDEyTDExIDhWN0g4VjhIMTBMOCAxMk0xMyAxMkwxNSA4VjdIMTJWOEgxNEwxMiAxMk0yMSAyQzE5LjkgMiAxOSAyLjkgMTkgNEMxOSA0LjcgMTkuNCA1LjQgMjAgNS43VjE3SDE3VjE1QzE3LjYgMTUgMTggMTQuNiAxOCAxNFY1QzE4IDQuNCAxNy42IDQgMTcgNEgxMy4yQzEyLjQgMi44IDExIDIgOS41IDJTNi42IDIuOCA1LjggNEgyQzEuNCA0IDEgNC40IDEgNVYxNEMxIDE0LjYgMS40IDE1IDIgMTVWMjJIMTdWMTlIMjBDMjEuMSAxOSAyMiAxOC4xIDIyIDE3VjUuN0MyMi42IDUuNCAyMyA0LjcgMjMgNEMyMyAyLjkgMjIuMSAyIDIxIDJNMyA2SDE2VjEzSDNWNk0xNSAyMEg0VjE1SDE1VjIwTTEzIDE5SDZWMTdIMTNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU21hcnRDYXJkID0gXCJNMiAzSDIyQTIuMDcgMi4wNyAwIDAgMSAyNCA1VjE5QTIuMDcgMi4wNyAwIDAgMSAyMiAyMUgyQTIuMDcgMi4wNyAwIDAgMSAwIDE5VjVBMi4wNyAyLjA3IDAgMCAxIDIgM004IDEzLjkxQzYgMTMuOTEgMiAxNSAyIDE3VjE4SDE0VjE3QzE0IDE1IDEwIDEzLjkxIDggMTMuOTFNOCA2QTMgMyAwIDEgMCAxMSA5QTMgMyAwIDAgMCA4IDZNMTcgMTBWMTNIMjFWMTBIMTdcIjtcclxuZXhwb3J0IHZhciBtZGlTbWFydENhcmRPdXRsaW5lID0gXCJNMjIgM0gyQTIuMDcgMi4wNyAwIDAgMCAwIDVWMTlBMi4wNyAyLjA3IDAgMCAwIDIgMjFIMjJBMi4wNyAyLjA3IDAgMCAwIDI0IDE5VjVBMi4wNyAyLjA3IDAgMCAwIDIyIDNNMjIgMTlIMlY1SDIyTTE0IDE3VjE1Ljc1QzE0IDE0LjA5IDEwLjY2IDEzLjI1IDkgMTMuMjVTNCAxNC4wOSA0IDE1Ljc1VjE3SDE0TTkgN0EyLjUgMi41IDAgMSAwIDExLjUgOS41QTIuNSAyLjUgMCAwIDAgOSA3TTE1IDEwVjEzSDE5VjEwSDE1XCI7XHJcbmV4cG9ydCB2YXIgbWRpU21hcnRDYXJkUmVhZGVyID0gXCJNMjEgNEEyLjA3IDIuMDcgMCAwIDAgMTkgMkg1QTIuMDcgMi4wNyAwIDAgMCAzIDRWMThIMjFNOC4yNSAxNkg3VjZIOC4yNUM5LjkxIDYgMTAuNzUgOS4zNCAxMC43NSAxMVM5LjkxIDE2IDguMjUgMTZNMTQuNSAxMy41QTIuNSAyLjUgMCAxIDEgMTcgMTFBMi41IDIuNSAwIDAgMSAxNC41IDEzLjVNMjMgMjFWMjJIMVYyMUEyIDIgMCAwIDEgMyAxOUgyMUEyIDIgMCAwIDEgMjMgMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU21hcnRDYXJkUmVhZGVyT3V0bGluZSA9IFwiTTE0LjUgOC41QTIuNSAyLjUgMCAxIDAgMTcgMTFBMi41IDIuNSAwIDAgMCAxNC41IDguNU04LjI1IDZIN1YxNkg4LjI1QzkuOTEgMTYgMTAuNzUgMTIuNjYgMTAuNzUgMTFTOS45MSA2IDguMjUgNk0xOSAySDVBMi4wNyAyLjA3IDAgMCAwIDMgNFYxOEg1VjRIMTlWMThIMjFWNEEyLjA3IDIuMDcgMCAwIDAgMTkgMk0yMyAyMkgxVjIxQTIgMiAwIDAgMSAzIDE5SDIxQTIgMiAwIDAgMSAyMyAyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbW9nID0gXCJNMTIsMkMxMC4wOCwyIDguNSwzLjM1IDguMDksNS4xNUM3LjQ1LDQuNDQgNi41Myw0IDUuNSw0QTMuNSwzLjUgMCAwLDAgMiw3LjVIMkEzLjUsMy41IDAgMCwwIDUuNSwxMUg2LjY4VjEySDEwLjcyVjExSDEzLjI4VjEySDE3LjMyVjExSDE4LjVBMy41LDMuNSAwIDAsMCAyMiw3LjVIMjJBMy41LDMuNSAwIDAsMCAxOC41LDRIMTguNUMxNy40Nyw0IDE2LjU1LDQuNDQgMTUuOTEsNS4xNUMxNS41LDMuMzUgMTMuOTIsMiAxMiwyTTcuMiwxNEw2LjQsMjJIMTFMMTAuMiwxNEg3LjJNMTMuOCwxNEwxMywyMkgxNy42TDE2LjgsMTRIMTMuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTbW9rZURldGVjdG9yID0gXCJNMTIsMThBNiw2IDAgMCwwIDE4LDEyQzE4LDguNjggMTUuMzEsNiAxMiw2QzguNjgsNiA2LDguNjggNiwxMkE2LDYgMCAwLDAgMTIsMThNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlNOCwxMkE0LDQgMCAwLDEgMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNtb2tpbmcgPSBcIk0yLDE2SDE3VjE5SDJWMTZNMjAuNSwxNkgyMlYxOUgyMC41VjE2TTE4LDE2SDE5LjVWMTlIMThWMTZNMTguODUsNy43M0MxOS40Nyw3LjEyIDE5Ljg1LDYuMjggMTkuODUsNS4zNUMxOS44NSwzLjUgMTguMzUsMiAxNi41LDJWMy41QzE3LjUsMy41IDE4LjM1LDQuMzMgMTguMzUsNS4zNUMxOC4zNSw2LjM3IDE3LjUsNy4yIDE2LjUsNy4yVjguN0MxOC43NCw4LjcgMjAuNSwxMC41MyAyMC41LDEyLjc3VjE1SDIyVjEyLjc2QzIyLDEwLjU0IDIwLjcyLDguNjIgMTguODUsNy43M00xNi4wMywxMC4ySDE0LjVDMTMuNSwxMC4yIDEyLjY1LDkuMjIgMTIuNjUsOC4yQzEyLjY1LDcuMTggMTMuNSw2LjQ1IDE0LjUsNi40NVY0Ljk1QzEyLjY1LDQuOTUgMTEuMTUsNi40NSAxMS4xNSw4LjNBMy4zNSwzLjM1IDAgMCwwIDE0LjUsMTEuNjVIMTYuMDNDMTcuMDgsMTEuNjUgMTgsMTIuMzkgMTgsMTMuN1YxNUgxOS41VjEzLjM2QzE5LjUsMTEuNTUgMTcuOSwxMC4yIDE2LjAzLDEwLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU21va2luZ09mZiA9IFwiTTIsNkw5LDEzSDJWMTZIMTJMMTksMjNMMjAuMjUsMjEuNzVMMy4yNSw0Ljc1TDIsNk0yMC41LDEzSDIyVjE2SDIwLjVWMTNNMTgsMTNIMTkuNVYxNkgxOFYxM00xOC44NSw0Ljg4QzE5LjQ3LDQuMjcgMTkuODUsMy40MyAxOS44NSwyLjVIMTguMzVDMTguMzUsMy41IDE3LjUsNC4zNSAxNi41LDQuMzVWNS44NUMxOC43NCw1Ljg1IDIwLjUsNy42OCAyMC41LDkuOTJWMTJIMjJWOS45MkMyMiw3LjY5IDIwLjcyLDUuNzcgMTguODUsNC44OE0xNC41LDguN0gxNi4wM0MxNy4wOCw4LjcgMTgsOS40NCAxOCwxMC43NVYxMkgxOS41VjEwLjQxQzE5LjUsOC42MSAxNy45LDcuMjUgMTYuMDMsNy4yNUgxNC41QzEzLjUsNy4yNSAxMi42NSw2LjI3IDEyLjY1LDUuMjVDMTIuNjUsNC4yMyAxMy41LDMuNSAxNC41LDMuNVYyQTMuMzUsMy4zNSAwIDAsMCAxMS4xNSw1LjM1QTMuMzUsMy4zNSAwIDAsMCAxNC41LDguN00xNywxNS45M1YxM0gxNC4wN0wxNywxNS45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTbW9raW5nUGlwZSA9IFwiTTE2IDEzQzE0Ljg5IDEzIDE0IDEzLjg5IDE0IDE1VjE4SDEzQzEyIDE4IDExIDE3LjkyIDEwLjMgMTcuMjNMNi41MyAxMy40N0M1LjYgMTIuNTMgNC4zMyAxMiAzIDEySDJWMTRIM0MzLjggMTQgNC41NiAxNC4zMiA1LjEyIDE0Ljg4TDguODkgMTguNjVDMTEuNzIgMjEuNSAxMyAyMiAxNiAyMkgxOEMyMC4yMSAyMiAyMiAyMC4yMSAyMiAxOFYxNUMyMiAxMy44OSAyMS4xMSAxMyAyMCAxM0gxNk0xNCA3LjJIMTIuNUMxMS40NSA3LjEyIDEwLjY1IDYuMjUgMTAuNjUgNS4yQzEwLjY3IDQuMjIgMTEuNSAzLjQzIDEyLjQ2IDMuNDVMMTIuNSAzLjQ1VjJDMTAuNjUgMiA5LjE1IDMuNSA5LjE1IDUuMzVTMTAuNjUgOC43IDEyLjUgOC43SDE0QzE1LjA3IDguNjYgMTUuOTYgOS41IDE2IDEwLjU2QzE2IDEwLjYxIDE2IDEwLjY1IDE2IDEwLjdWMTJIMTcuNVYxMC4zNkMxNy40MiA4LjUzIDE1Ljg4IDcuMTIgMTQuMDUgNy4yTDE0IDcuMk0yMCA5Ljc2VjEySDE4LjVWOS43N0wxOC41IDkuN0MxOC41IDcuNSAxNi43MSA1LjcgMTQuNSA1LjdWNC4ySDE0LjVDMTUuNSA0LjIgMTYuMzUgMy4zNyAxNi4zNSAyLjM1QzE2LjM1IDIuMjMgMTYuMzQgMi4xMSAxNi4zMiAySDE3Ljc5QzE3Ljg5IDMgMTcuNTggNCAxNi44MiA0LjczSDE2Ljg1QzE4Ljc4IDUuNjYgMjAgNy42MiAyMCA5Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNtb2tpbmdQaXBlT2ZmID0gXCJNMjAuODQgMjIuNzNMMTkuNzEgMjEuNkMxOS4xOSAyMS44NSAxOC42MiAyMiAxOCAyMkgxNkMxMyAyMiAxMS43MiAyMS41IDguODkgMTguNjVMNS4xMiAxNC44OEM0LjU2IDE0LjMyIDMuOCAxNCAzIDE0SDJWMTJIM0M0LjMzIDEyIDUuNiAxMi41MyA2LjUzIDEzLjQ3TDEwLjMgMTcuMjNDMTEgMTcuOTIgMTIgMTggMTMgMThIMTRWMTUuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00yMS45MyAxOC43M0MyMS45NyAxOC41IDIyIDE4LjI1IDIyIDE4VjE1QzIyIDEzLjg5IDIxLjExIDEzIDIwIDEzSDE2LjJMMjEuOTMgMTguNzNNMTguNSA5LjdMMTguNSA5Ljc3VjEySDIwVjkuNzZDMjAgNy42MiAxOC43OCA1LjY2IDE2Ljg1IDQuNzNIMTYuODJDMTcuNTggNCAxNy45IDMgMTcuOCAySDE2LjMyQzE2LjM0IDIuMTEgMTYuMzUgMi4yMyAxNi4zNSAyLjM1QzE2LjM1IDMuMzcgMTUuNSA0LjIgMTQuNSA0LjJIMTQuNVY1LjdDMTYuNzEgNS43IDE4LjUgNy41IDE4LjUgOS43TTExLjgzIDguNjNDMTIuMDUgOC42OCAxMi4yNyA4LjcgMTIuNSA4LjdIMTRDMTUuMDcgOC42NiAxNS45NiA5LjUgMTYgMTAuNTZDMTYgMTAuNjEgMTYgMTAuNjUgMTYgMTAuN1YxMkgxNy41VjEwLjM2QzE3LjQyIDguNTMgMTUuODggNy4xMiAxNC4wNSA3LjJMMTQgNy4ySDEyLjVDMTEuNDUgNy4xMiAxMC42NSA2LjI1IDEwLjY1IDUuMkMxMC42NyA0LjIyIDExLjUgMy40MyAxMi40NiAzLjQ1TDEyLjUgMy40NVYyQzEwLjY1IDIgOS4xNSAzLjUgOS4xNSA1LjM1QzkuMTUgNS41OCA5LjE3IDUuOCA5LjIyIDZMMTEuODMgOC42M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTbmFpbCA9IFwiTTIwLjMxIDguMDNMMjEuMjQgNC45NUMyMS42NyA0Ljg1IDIyIDQuNDcgMjIgNEMyMiAzLjQ1IDIxLjU1IDMgMjEgM1MyMCAzLjQ1IDIwIDRDMjAgNC4yNiAyMC4xMSA0LjUgMjAuMjcgNC42OEwxOS41IDcuMjZMMTguNzMgNC42OEMxOC44OSA0LjUgMTkgNC4yNiAxOSA0QzE5IDMuNDUgMTguNTUgMyAxOCAzUzE3IDMuNDUgMTcgNEMxNyA0LjQ3IDE3LjMzIDQuODUgMTcuNzYgNC45NUwxOC42OSA4LjAzQzE3LjczIDguMTggMTcgOSAxNyAxMFYxMi4yNUMxNS42NSA5LjE2IDEyLjYzIDcgOS4xMSA3QzUuMTkgNyAyIDEwLjI2IDIgMTQuMjZDMiAxNi4xIDIuODIgMTcuNzUgNC4xIDE4Ljg1TDIuODggMTlDMi4zOCAxOS4wNiAyIDE5LjUgMiAyMEMyIDIwLjU1IDIuNDUgMjEgMyAyMUwxOS4xMiAyMUMyMC4xNiAyMSAyMSAyMC4xNiAyMSAxOS4xMlYxMS43MkMyMS42IDExLjM4IDIyIDEwLjc0IDIyIDEwQzIyIDkgMjEuMjcgOC4xOCAyMC4zMSA4LjAzTTE1LjYgMTcuNDFMMTIuMDcgMTcuODZDMTIuNSAxNy4xIDEyLjggMTYuMjEgMTIuOCAxNS4yNkMxMi44IDEyLjk0IDEwLjk1IDExLjA2IDguNjcgMTEuMDZDOC4xNCAxMS4wNiA3LjYyIDExLjE4IDcuMTQgMTEuNDFDNi42NSAxMS42NiA2LjQ0IDEyLjI2IDYuNjkgMTIuNzVDNi45MyAxMy4yNSA3LjUzIDEzLjQ1IDguMDMgMTMuMjFDOC4yMyAxMy4xMSA4LjQ1IDEzLjA2IDguNjcgMTMuMDZDOS44NSAxMy4wNiAxMC44IDE0LjA0IDEwLjggMTUuMjZDMTAuOCAxNi45MiA5LjUgMTguMjcgNy44OSAxOC4yN0M1Ljc1IDE4LjI3IDQgMTYuNDcgNCAxNC4yNkM0IDExLjM2IDYuMjkgOSA5LjExIDlDMTIuNzcgOSAxNS43NSAxMi4wNiAxNS43NSAxNS44MkMxNS43NSAxNi4zNiAxNS42OSAxNi44OSAxNS42IDE3LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNuYWtlID0gXCJNMTkuNSAxN0gxOEMxOS4xIDE3IDIwIDE2LjEgMjAgMTVTMTkuMSAxMyAxOCAxM1Y5QzE4IDggMTggNyAxNi45MiA2LjE0QzE2Ljk3IDUuOTMgMTcgNS43MiAxNyA1LjVDMTcgMy41NyAxNSAyIDEyLjUgMkMxMC4yNCAyIDguMzggMy4zMSA4LjA3IDVINkwzLjcxIDIuNzlMMyAzLjVMNSA1LjVMMyA3LjVMMy43MSA4LjIxTDYgNkg4LjA3QzguMzggNy42OSAxMC4yNCA5IDEyLjUgOUMxMyA5IDEzLjUgOC45MiAxMy45MyA4LjhDMTMuOTcgOC44NyAxNCA4Ljk0IDE0IDlWMTNIOEM2LjkgMTMgNiAxMy45IDYgMTVTNi45IDE3IDggMTdINi41QzUuMTIgMTcgNCAxOC4xMiA0IDE5LjVDNCAxOS42NyA0IDE5Ljg0IDQuMDUgMjBINEMyLjkgMjAgMiAyMC45IDIgMjJIMTkuNUMyMC44OCAyMiAyMiAyMC44OCAyMiAxOS41UzIwLjg4IDE3IDE5LjUgMTdNMTIgNUMxMS40NSA1IDExIDQuNTUgMTEgNFMxMS40NSAzIDEyIDMgMTMgMy40NSAxMyA0IDEyLjU1IDUgMTIgNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbmFwY2hhdCA9IFwiTTIxLjkzIDE2LjU2QzIxLjc5IDE2LjE4IDIxLjUgMTYgMjEuMjIgMTUuODFDMjEuMTcgMTUuNzggMjEuMTEgMTUuNzUgMjEuMDcgMTUuNzNDMjEgMTUuNjggMjAuODkgMTUuNjQgMjAuOCAxNS41OUMxOS44NiAxNS4wOSAxOS4xMiAxNC40NiAxOC42MSAxMy43MkMxOC40NyAxMy41IDE4LjM1IDEzLjI5IDE4LjI0IDEzLjA2QzE4LjIgMTIuOTMgMTguMiAxMi44NiAxOC4yMyAxMi44QzE4LjI2IDEyLjc1IDE4LjMgMTIuNyAxOC4zNSAxMi42N0MxOC41IDEyLjU2IDE4LjY4IDEyLjQ2IDE4Ljc5IDEyLjM4QzE5IDEyLjI1IDE5LjE1IDEyLjE1IDE5LjI1IDEyLjA4QzE5LjY0IDExLjgxIDE5LjkxIDExLjUgMjAuMDggMTEuMkMyMC4zMiAxMC43NSAyMC4zNSAxMC4yMiAyMC4xNiA5Ljc1QzE5LjkxIDkuMDggMTkuMjcgOC42NiAxOC41IDguNjZDMTguMzQgOC42NiAxOC4xOCA4LjY4IDE4IDguNzFDMTggOC43MiAxNy45NCA4LjczIDE3LjkgOC43NEMxNy45IDguMjggMTcuODkgNy44IDE3Ljg1IDcuMzJDMTcuNzEgNS42NCAxNy4xMiA0Ljc2IDE2LjUgNC4wNkMxNi4xMSAzLjYyIDE1LjY1IDMuMjQgMTUuMTQgMi45NUMxNC4yMSAyLjQyIDEzLjE1IDIuMTUgMTIgMi4xNVM5LjggMi40MiA4Ljg3IDIuOTVDOC4zNSAzLjI0IDcuODkgMy42MiA3LjUgNC4wNkM2Ljg4IDQuNzYgNi4zIDUuNjQgNi4xNSA3LjMyQzYuMTEgNy44IDYuMSA4LjI4IDYuMTEgOC43NEM2LjA2IDguNzMgNiA4LjcyIDYgOC43MUM1LjgyIDguNjggNS42NiA4LjY2IDUuNSA4LjY2QzQuNzMgOC42NiA0LjA5IDkuMDggMy44NCA5Ljc1QzMuNjUgMTAuMjIgMy42OCAxMC43NSAzLjkyIDExLjJDNC4wOSAxMS41IDQuMzYgMTEuODEgNC43NSAxMi4wOEM0Ljg1IDEyLjE1IDUgMTIuMjUgNS4yMSAxMi4zOUw1LjYzIDEyLjY2QzUuNjkgMTIuNyA1LjczIDEyLjc1IDUuNzcgMTIuOEM1LjggMTIuODcgNS44IDEyLjk0IDUuNzUgMTMuMDdDNS42NSAxMy4zIDUuNTMgMTMuNSA1LjM5IDEzLjcyQzQuODkgMTQuNDUgNC4xOCAxNS4wNyAzLjI3IDE1LjU2QzIuNzggMTUuODIgMi4yOCAxNiAyLjA3IDE2LjU2QzEuOTEgMTcgMiAxNy41IDIuNDIgMTcuOTFDMi41NyAxOC4wNiAyLjc0IDE4LjE5IDIuOTMgMTguMjlDMy4zMyAxOC41IDMuNzUgMTguNjggNC4xOCAxOC43OUM0LjI3IDE4LjgyIDQuMzYgMTguODUgNC40MyAxOC45MUM0LjU4IDE5LjAzIDQuNTYgMTkuMjMgNC43NiAxOS41QzQuODYgMTkuNjYgNSAxOS43OSA1LjEzIDE5Ljg5QzUuNTQgMjAuMTggNiAyMC4xOSA2LjUgMjAuMjFDNi45NCAyMC4yMyA3LjQ0IDIwLjI1IDggMjAuNDRDOC4yNiAyMC41IDguNSAyMC42NyA4Ljc5IDIwLjg1QzkuNSAyMS4yNyAxMC40MiAyMS44NSAxMiAyMS44NUMxMy41NyAyMS44NSAxNC41IDIxLjI3IDE1LjIyIDIwLjg0QzE1LjUgMjAuNjcgMTUuNzUgMjAuNSAxNiAyMC40NEMxNi41NSAyMC4yNSAxNy4wNiAyMC4yMyAxNy41IDIwLjIxQzE4IDIwLjIgMTguNDYgMjAuMTggMTguODcgMTkuODlDMTkuMDQgMTkuNzcgMTkuMTggMTkuNjEgMTkuMjkgMTkuNDNDMTkuNDMgMTkuMTkgMTkuNDMgMTkgMTkuNTYgMTguOTFDMTkuNjMgMTguODYgMTkuNzEgMTguODIgMTkuOCAxOC44QzIwLjI0IDE4LjY4IDIwLjY2IDE4LjUgMjEuMDYgMTguMjlDMjEuMjcgMTguMTggMjEuNDUgMTguMDQgMjEuNiAxNy44N0wyMS42MSAxNy44N0MyMiAxNy40NiAyMi4wOCAxNyAyMS45MyAxNi41Nk0yMC41MyAxNy4zMUMxOS42NyAxNy43OCAxOS4xIDE3LjczIDE4LjY2IDE4QzE4LjUgMTguMTIgMTguNDUgMTguMjggMTguNDIgMTguNDRDMTguNDEgMTguNSAxOC40IDE4LjU4IDE4LjM5IDE4LjY0QzE4LjM3IDE4Ljc4IDE4LjM0IDE4LjkgMTguMjQgMTguOTdDMTcuOSAxOS4yIDE2LjkxIDE4Ljk1IDE1LjYzIDE5LjM3QzE0LjU3IDE5LjcyIDEzLjkgMjAuNzMgMTIgMjAuNzNDMTAuMSAyMC43MyA5LjQ1IDE5LjczIDguMzcgMTkuMzdDNy4xIDE4Ljk1IDYuMSAxOS4yIDUuNzcgMTguOTdDNS41IDE4Ljc4IDUuNzIgMTguMjYgNS4zNCAxOEM0LjkgMTcuNzMgNC4zMyAxNy43OCAzLjUgMTcuMzFDMy4xOSAxNy4xNSAzLjE0IDE3IDMuMTggMTYuOTNDMy4yMiAxNi44NCAzLjM0IDE2Ljc3IDMuNDIgMTYuNzNDNS4wNyAxNS45NCA2IDE0LjkxIDYuNDcgMTQuMUM2LjkxIDEzLjM4IDcgMTIuODMgNy4wMyAxMi43NUM3LjA2IDEyLjU0IDcuMDkgMTIuMzggNi44NiAxMi4xN0M2LjY0IDExLjk2IDUuNjYgMTEuMzYgNS4zOSAxMS4xN0M0LjkzIDEwLjg1IDQuNzQgMTAuNTQgNC44OCAxMC4xNUw0Ljg4IDEwLjE1VjEwLjE1QzUgOS44OCA1LjIzIDkuNzggNS41IDkuNzhDNS41OCA5Ljc4IDUuNjYgOS43OSA1Ljc0IDkuODFDNi4yNCA5LjkxIDYuNzIgMTAuMTYgNyAxMC4yM0M3LjAzIDEwLjI0IDcuMDYgMTAuMjQgNy4xIDEwLjI0QzcuMTkgMTAuMjQgNy4yNCAxMC4yMSA3LjI3IDEwLjE1QzcuMjggMTAuMTEgNy4yOSAxMC4wNiA3LjI5IDEwQzcuMjUgOS40NiA3LjE4IDguNDEgNy4yNiA3LjQyQzcuMyA3IDcuMzcgNi42NCA3LjQ2IDYuMzNDNy42NiA1LjY1IDggNS4yIDguMzQgNC43OUM4LjU5IDQuNSA5Ljc1IDMuMjcgMTIgMy4yN0MxMy44NSAzLjI3IDE0Ljk2IDQuMTEgMTUuNDQgNC41NkMxNS41NCA0LjY2IDE1LjYyIDQuNzQgMTUuNjYgNC43OUMxNi4wNCA1LjIzIDE2LjM4IDUuNzEgMTYuNTggNi40N0MxNi42NSA2Ljc0IDE2LjcxIDcuMDYgMTYuNzQgNy40MkMxNi44MiA4LjQgMTYuNzUgOS40NiAxNi43MSAxMEMxNi43MSAxMC4wNCAxNi43MSAxMC4wOCAxNi43MiAxMC4xMUMxNi43MyAxMC4yIDE2Ljc5IDEwLjI0IDE2LjkgMTAuMjRDMTYuOTQgMTAuMjQgMTYuOTcgMTAuMjQgMTcgMTAuMjNDMTcuMjggMTAuMTYgMTcuNzYgOS45MSAxOC4yNiA5LjhDMTguMzQgOS43OSAxOC40MiA5Ljc4IDE4LjUgOS43OEMxOC43NSA5Ljc4IDE5IDkuODcgMTkuMSAxMC4xTDE5LjExIDEwLjE0TDE5LjEyIDEwLjE0TDE5LjEyIDEwLjE1QzE5LjI3IDEwLjUzIDE5LjA3IDEwLjg1IDE4LjYyIDExLjE2QzE4LjM1IDExLjM1IDE3LjM2IDExLjk2IDE3LjE0IDEyLjE2QzE2LjkxIDEyLjM4IDE2Ljk0IDEyLjU0IDE2Ljk3IDEyLjc1QzE3IDEyLjg1IDE3LjE4IDEzLjggMTguMDggMTQuODZDMTguNjMgMTUuNSAxOS40MiAxNi4xNyAyMC41OCAxNi43M0MyMC42NSAxNi43NiAyMC43NCAxNi44MSAyMC43OSAxNi44N0MyMC44MiAxNi45MiAyMC44NCAxNi45NiAyMC44MyAxN0MyMC44MiAxNy4xIDIwLjczIDE3LjIgMjAuNTMgMTcuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU25vd2JvYXJkID0gXCJNMTUuNCA1LjRDMTUuNCA0LjMgMTYuMyAzLjQgMTcuNCAzLjRDMTguNSAzLjQgMTkuNCA0LjMgMTkuNCA1LjRDMTkuNCA2LjUgMTguNSA3LjQgMTcuNCA3LjRDMTYuMyA3LjQgMTUuNCA2LjUgMTUuNCA1LjRNMjIgMTkuMkMyMS40IDE5LjggMjAuOCAyMC4yIDIwLjEgMjAuNUMxOS40IDIwLjggMTguNiAyMSAxNy44IDIxSDYuMkM1LjQgMjEgNC42IDIwLjggMy45IDIwLjVDMy4yIDIwLjIgMi42IDE5LjggMiAxOS4yTDIuOSAxOC4zQzMuMyAxOC43IDMuOCAxOS4xIDQuNCAxOS4zQzQuOSAxOS42IDUuNCAxOS43IDUuOSAxOS43TDkuNyAxNkw4LjUgMTIuNUM4LjMgMTEuOSA4LjYgMTEuNCA5LjEgMTFMMTEgOUg2VjdIMTRDMTQuNSA3IDE0LjcgNy4xIDE1IDcuM0wxNy4zIDkuNUMxOC4zIDEwLjUgMTkuNSAxMSAyMC45IDExTDIxIDEzLjFDMTkuMSAxMy4xIDE3LjQgMTIuNCAxNS45IDExTDE1LjIgMTAuM0wxMi45IDEyLjdMMTUgMTVWMTkuN0gxNy44QzE4LjQgMTkuNyAxOSAxOS42IDE5LjYgMTkuM0MyMC4yIDE5LjEgMjAuNyAxOC43IDIxLjEgMTguM0wyMiAxOS4yTTguOCAxOS43SDEzVjE1LjhMMTEuNyAxNC42VjE2LjhMOC44IDE5LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU25vd2ZsYWtlID0gXCJNMjAuNzksMTMuOTVMMTguNDYsMTQuNTdMMTYuNDYsMTMuNDRWMTAuNTZMMTguNDYsOS40M0wyMC43OSwxMC4wNUwyMS4zMSw4LjEyTDE5LjU0LDcuNjVMMjAsNS44OEwxOC4wNyw1LjM2TDE3LjQ1LDcuNjlMMTUuNDUsOC44MkwxMyw3LjM4VjUuMTJMMTQuNzEsMy40MUwxMy4yOSwyTDEyLDMuMjlMMTAuNzEsMkw5LjI5LDMuNDFMMTEsNS4xMlY3LjM4TDguNSw4LjgyTDYuNSw3LjY5TDUuOTIsNS4zNkw0LDUuODhMNC40Nyw3LjY1TDIuNyw4LjEyTDMuMjIsMTAuMDVMNS41NSw5LjQzTDcuNTUsMTAuNTZWMTMuNDVMNS41NSwxNC41OEwzLjIyLDEzLjk2TDIuNywxNS44OUw0LjQ3LDE2LjM2TDQsMTguMTJMNS45MywxOC42NEw2LjU1LDE2LjMxTDguNTUsMTUuMThMMTEsMTYuNjJWMTguODhMOS4yOSwyMC41OUwxMC43MSwyMkwxMiwyMC43MUwxMy4yOSwyMkwxNC43LDIwLjU5TDEzLDE4Ljg4VjE2LjYyTDE1LjUsMTUuMTdMMTcuNSwxNi4zTDE4LjEyLDE4LjYzTDIwLDE4LjEyTDE5LjUzLDE2LjM1TDIxLjMsMTUuODhMMjAuNzksMTMuOTVNOS41LDEwLjU2TDEyLDkuMTFMMTQuNSwxMC41NlYxMy40NEwxMiwxNC44OUw5LjUsMTMuNDRWMTAuNTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU25vd2ZsYWtlQWxlcnQgPSBcIk0xNi40Niw5LjQxTDEzLDcuMzhWNS4xMkwxNC43MSwzLjQxTDEzLjI5LDJMMTIsMy4yOUwxMC43MSwyTDkuMjksMy40MUwxMSw1LjEyVjcuMzhMOC41LDguODJMNi41LDcuNjlMNS45Miw1LjM2TDQsNS44OEw0LjQ3LDcuNjVMMi43LDguMTJMMy4yMiwxMC4wNUw1LjU1LDkuNDNMNy41NSwxMC41NlYxMy40NUw1LjU1LDE0LjU4TDMuMjIsMTMuOTZMMi43LDE1Ljg5TDQuNDcsMTYuMzZMNCwxOC4xMkw1LjkzLDE4LjY0TDYuNTUsMTYuMzFMOC41NSwxNS4xOEwxMSwxNi42MlYxOC44OEw5LjI5LDIwLjU5TDEwLjcxLDIyTDEyLDIwLjcxTDEzLjI5LDIyTDE0LjcsMjAuNTlMMTMsMTguODhWMTYuNjJMMTYuNDYsMTQuNjFNOS41LDEwLjU2TDEyLDkuMTFMMTQuNSwxMC41NlYxMy40NEwxMiwxNC44OUw5LjUsMTMuNDRNMTksMTNWN0gyMVYxM0gxOU0xOSwxN1YxNUgyMVYxN0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbm93Zmxha2VNZWx0ID0gXCJNOCAxNy44NUM4IDE5LjA0IDcuMTEgMjAgNiAyMFM0IDE5LjA0IDQgMTcuODVDNCAxNi40MiA2IDE0IDYgMTRTOCAxNi40MiA4IDE3Ljg1TTE2LjQ2IDEyVjEwLjU2TDE4LjQ2IDkuNDNMMjAuNzkgMTAuMDVMMjEuMzEgOC4xMkwxOS41NCA3LjY1TDIwIDUuODhMMTguMDcgNS4zNkwxNy40NSA3LjY5TDE1LjQ1IDguODJMMTMgNy4zOFY1LjEyTDE0LjcxIDMuNDFMMTMuMjkgMkwxMiAzLjI5TDEwLjcxIDJMOS4yOSAzLjQxTDExIDUuMTJWNy4zOEw4LjUgOC44Mkw2LjUgNy42OUw1LjkyIDUuMzZMNCA1Ljg4TDQuNDcgNy42NUwyLjcgOC4xMkwzLjIyIDEwLjA1TDUuNTUgOS40M0w3LjU1IDEwLjU2VjEySDJWMTNIMjJWMTJIMTYuNDZNOS41IDEyVjEwLjU2TDEyIDkuMTFMMTQuNSAxMC41NlYxMkg5LjVNMjAgMTcuODVDMjAgMTkuMDQgMTkuMTEgMjAgMTggMjBTMTYgMTkuMDQgMTYgMTcuODVDMTYgMTYuNDIgMTggMTQgMTggMTRTMjAgMTYuNDIgMjAgMTcuODVNMTQgMjAuODVDMTQgMjIuMDQgMTMuMTEgMjMgMTIgMjNTMTAgMjIuMDQgMTAgMjAuODVDMTAgMTkuNDIgMTIgMTcgMTIgMTdTMTQgMTkuNDIgMTQgMjAuODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU25vd2ZsYWtlT2ZmID0gXCJNMTEgNS4xMkw5LjI5IDMuNDFMMTAuNzEgMkwxMiAzLjI5TDEzLjI5IDJMMTQuNzEgMy40MUwxMyA1LjEyVjcuMzhMMTUuNDUgOC44MkwxNy40NSA3LjY5TDE4LjA3IDUuMzZMMjAgNS44OEwxOS41NCA3LjY1TDIxLjMxIDguMTJMMjAuNzkgMTAuMDVMMTguNDYgOS40M0wxNi40NiAxMC41NlYxMy4yNkwxNC41IDExLjNWMTAuNTZMMTIuNzQgOS41NEwxMC43MyA3LjUzTDExIDcuMzhWNS4xMk0xOC40NiAxNC41N0wxNi44NyAxMy42N0wxOS41NSAxNi4zNUwyMS4zIDE1Ljg4TDIwLjc5IDEzLjk1TDE4LjQ2IDE0LjU3TTEzIDE2LjYyVjE4Ljg4TDE0LjcgMjAuNTlMMTMuMjkgMjJMMTIgMjAuNzFMMTAuNzEgMjJMOS4yOSAyMC41OUwxMSAxOC44OFYxNi42Mkw4LjU1IDE1LjE4TDYuNTUgMTYuMzFMNS45MyAxOC42NEw0IDE4LjEyTDQuNDcgMTYuMzZMMi43IDE1Ljg5TDMuMjIgMTMuOTZMNS41NSAxNC41OEw3LjU1IDEzLjQ1VjEwLjU2TDUuNTUgOS40M0wzLjIyIDEwLjA1TDIuNyA4LjEyTDQuNDcgNy42NUw0IDUuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M0wxNC4xIDE2TDEzIDE2LjYyTTEyIDE0Ljg5TDEyLjYzIDE0LjVMOS41IDExLjM5VjEzLjQ0TDEyIDE0Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNub3dmbGFrZVZhcmlhbnQgPSBcIk0xNC4yNSwxMkwxNi4yNywxMUgyM0wyMiw5SDE4LjAzTDIwLjQyLDUuODNMMTkuNDMsMy44M0wxNS4zNyw5LjJMMTMuMzUsMTAuMjFMMTMuNzUsOEwxNy44MywyLjYyTDE1LjY0LDIuMjJMMTIsN0w4LjQsMi4yTDYuMiwyLjZMMTAuMjYsOEwxMC42NiwxMC4yMUw4LjgyLDkuMjlMOC42Niw5LjIxTDQuNiwzLjhMMy42LDUuOEw2LDlIMkwxLDExSDcuNzdMOS43NSwxMkw3LjczLDEzSDFMMiwxNUg1Ljk3TDMuNTgsMTguMTdMNC41NywyMC4xN0w4LjYzLDE0LjhMMTAuNjUsMTMuNzlMMTAuMjUsMTZMNi4xNywyMS4zOEw4LjM2LDIxLjc5TDEyLDE3TDE1LjYsMjEuOEwxNy44LDIxLjRMMTMuNzQsMTZMMTMuMzQsMTMuNzlMMTUuMzQsMTQuNzlMMTkuNCwyMC4yTDIwLjQsMTguMkwxOCwxNUgyMkwyMywxM0gxNi4yM1wiO1xyXG5leHBvcnQgdmFyIG1kaVNub3dtYW4gPSBcIk0xNywxN0E1LDUgMCAwLDEgMTIsMjJBNSw1IDAgMCwxIDcsMTdDNywxNS41IDcuNjUsMTQuMTcgOC42OSwxMy4yNUM4LjI2LDEyLjYxIDgsMTEuODMgOCwxMUM4LDEwLjg2IDgsMTAuNzMgOCwxMC41OUw1LjA0LDguODdMNC44Myw4LjcxTDIuMjksOS4zOUwyLjAzLDguNDNMNC4yNCw3Ljg0TDIuMjYsNi42OUwyLjc2LDUuODJMNC43NCw2Ljk3TDQuMTUsNC43NUw1LjExLDQuNUw1LjgsNy4wNEw2LjA0LDcuMTRMOC43Myw4LjY5QzkuMTEsOC4xNSA5LjYyLDcuNzEgMTAuMjIsNy40MkM5LjUsNi44NyA5LDYgOSw1QTMsMyAwIDAsMSAxMiwyQTMsMyAwIDAsMSAxNSw1QzE1LDYgMTQuNSw2Ljg3IDEzLjc4LDcuNDJDMTQuMzgsNy43MSAxNC44OSw4LjE1IDE1LjI3LDguNjlMMTcuOTYsNy4xNEwxOC4yLDcuMDRMMTguODksNC41TDE5Ljg1LDQuNzVMMTkuMjYsNi45N0wyMS4yNCw1LjgyTDIxLjc0LDYuNjlMMTkuNzYsNy44NEwyMS45Nyw4LjQzTDIxLjcxLDkuMzlMMTkuMTcsOC43MUwxOC45Niw4Ljg3TDE2LDEwLjU5VjExQzE2LDExLjgzIDE1Ljc0LDEyLjYxIDE1LjMxLDEzLjI1QzE2LjM1LDE0LjE3IDE3LDE1LjUgMTcsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29jY2VyID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsM0MxMy43NiwzIDE1LjQsMy41MyAxNi43OCw0LjQxTDE2LjUsNUgxM0wxMiw1TDEwLjI4LDQuMTZMMTAuNjMsMy4xM0MxMS4wOCwzLjA1IDExLjUzLDMgMTIsM005LjUzLDMuMzhMOS4xOSw0LjQxTDYuNjMsNS42OUw1LjM4LDUuOTRDNi41LDQuNzMgNy45MiwzLjg0IDkuNTMsMy4zOE0xMyw2SDE2TDE4LjY5LDkuNTlMMTcuNDQsMTIuMTZMMTQuODEsMTIuNzhMMTEuNTMsOC45NEwxMyw2TTYuMTYsNi42Nkw3LDEwTDUuNzgsMTMuMDZMMy4yMiwxMy45NEMzLjA4LDEzLjMxIDMsMTIuNjcgMywxMkMzLDEwLjEgMy41OSw4LjM2IDQuNTksNi45MUw2LjE2LDYuNjZNMjAuNTYsOS4yMkMyMC44NSwxMC4wOSAyMSwxMS4wMyAyMSwxMkMyMSwxMy40NCAyMC42MywxNC43OSAyMC4wMywxNkgxOUwxOC4xNiwxMi42NkwxOS42Niw5LjY2TDIwLjU2LDkuMjJNOCwxMEgxMUwxMy44MSwxMy4yOEwxMiwxNkw4Ljg0LDE2Ljc4TDYuNTMsMTMuNjlMOCwxME0xMiwxN0wxNSwxOUwxNC4xMywyMC43MkMxMy40NCwyMC44OCAxMi43MywyMSAxMiwyMUMxMC4yNSwyMSA4LjYzLDIwLjUgNy4yNSwxOS42M0w4LjQxLDE3LjkxTDEyLDE3TTE5LDE3SDE5LjVDMTguNSwxOC41IDE3LDE5LjY3IDE1LjMxLDIwLjM0TDE2LDE5TDE5LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvY2NlckZpZWxkID0gXCJNNCw0QzIuODksNCAyLDQuODkgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY2QzIyLDQuODkgMjEuMSw0IDIwLDRINE00LDZIMTFWOC4xM0M5LjI0LDguNTkgOCwxMC4xOCA4LDEyQzgsMTMuODIgOS4yNCwxNS40MSAxMSwxNS44N1YxOEg0VjE2SDdWOEg0VjZNMTMsNkgyMFY4SDE3VjE2SDIwVjE4SDEzVjE1Ljg3QzE0Ljc2LDE1LjQxIDE2LDEzLjgyIDE2LDEyQzE2LDEwLjE4IDE0Ljc2LDguNTkgMTMsOC4xM1Y2TTQsMTBINVYxNEg0VjEwTTE5LDEwSDIwVjE0SDE5VjEwTTEzLDEwLjI3QzEzLjYyLDEwLjYzIDE0LDExLjI5IDE0LDEyQzE0LDEyLjcxIDEzLjYyLDEzLjM3IDEzLDEzLjczVjEwLjI3TTExLDEwLjI3VjEzLjczQzEwLjM4LDEzLjM3IDEwLDEyLjcxIDEwLDEyQzEwLDExLjI5IDEwLjM4LDEwLjYzIDExLDEwLjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvY2lhbERpc3RhbmNlMk1ldGVycyA9IFwiTTYgNkM3LjEgNiA4IDUuMSA4IDRTNy4xIDIgNiAyIDQgMi45IDQgNCA0LjkgNiA2IDZNMTAgOS40M0MxMCA4LjYyIDkuNSA3LjkgOC43OCA3LjU4QzcuOTMgNy4yMSA3IDcgNiA3UzQuMDcgNy4yMSAzLjIyIDcuNThDMi41IDcuOSAyIDguNjIgMiA5LjQzVjEwSDEwVjkuNDNNMTggNkMxOS4xIDYgMjAgNS4xIDIwIDRTMTkuMSAyIDE4IDIgMTYgMi45IDE2IDQgMTYuOSA2IDE4IDZNMjIgOS40M0MyMiA4LjYyIDIxLjUgNy45IDIwLjc4IDcuNThDMTkuOTMgNy4yMSAxOSA3IDE4IDdTMTYuMDcgNy4yMSAxNS4yMiA3LjU4QzE0LjUgNy45IDE0IDguNjIgMTQgOS40M1YxMEgyMlY5LjQzTTE5IDE3VjE1TDUgMTVWMTdMMiAxNEw1IDExVjEzTDE5IDEzVjExTDIyIDE0TDE5IDE3TTkgMjAuNVYyMUgxMVYyMkg4VjIwLjVDOCAxOS45NSA4LjQ1IDE5LjUgOSAxOS41SDEwVjE5SDhWMThIMTBDMTAuNTUgMTggMTEgMTguNDUgMTEgMTlWMTkuNUMxMSAyMC4wNSAxMC41NSAyMC41IDEwIDIwLjVIOU0xNiAxOVYyMkgxNVYxOUgxNC41VjIxSDEzLjVWMTlIMTNWMjJIMTJWMTlDMTIgMTguNDUgMTIuNDUgMTggMTMgMThIMTVDMTUuNTUgMTggMTYgMTguNDUgMTYgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29jaWFsRGlzdGFuY2U2RmVldCA9IFwiTTYgNkM3LjEgNiA4IDUuMSA4IDRTNy4xIDIgNiAyIDQgMi45IDQgNCA0LjkgNiA2IDZNMTAgOS40M0MxMCA4LjYyIDkuNSA3LjkgOC43OCA3LjU4QzcuOTMgNy4yMSA3IDcgNiA3UzQuMDcgNy4yMSAzLjIyIDcuNThDMi41IDcuOSAyIDguNjIgMiA5LjQzVjEwSDEwVjkuNDNNMTggNkMxOS4xIDYgMjAgNS4xIDIwIDRTMTkuMSAyIDE4IDIgMTYgMi45IDE2IDQgMTYuOSA2IDE4IDZNMjIgOS40M0MyMiA4LjYyIDIxLjUgNy45IDIwLjc4IDcuNThDMTkuOTMgNy4yMSAxOSA3IDE4IDdTMTYuMDcgNy4yMSAxNS4yMiA3LjU4QzE0LjUgNy45IDE0IDguNjIgMTQgOS40M1YxMEgyMlY5LjQzTTE5IDE3VjE1SDVWMTdMMiAxNEw1IDExVjEzSDE5VjExTDIyIDE0TDE5IDE3TTEwIDE5VjE4SDcuNUM3LjIyIDE4IDcgMTguMjIgNyAxOC41VjIxLjVDNyAyMS43OCA3LjIyIDIyIDcuNSAyMkg5LjVDOS43OCAyMiAxMCAyMS43OCAxMCAyMS41VjIwQzEwIDE5LjcyIDkuNzggMTkuNSA5LjUgMTkuNUg4VjE5SDEwTTkgMjAuNVYyMUg4VjIwLjVIOU0xNy41IDE5SDE2LjVWMjJIMTUuNVYxOUgxNC41VjE4SDE3LjVWMTlNMTIuNSAxOVYxOS41SDEzLjVWMjAuNUgxMi41VjIySDExLjVWMThIMTRWMTlIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2ZhID0gXCJNMTIuNSA3QzEyLjUgNS44OSAxMy4zOSA1IDE0LjUgNUgxOEMxOS4xIDUgMjAgNS45IDIwIDdWOS4xNkMxOC44NCA5LjU3IDE4IDEwLjY3IDE4IDExLjk3VjE0SDEyLjVWN002IDExLjk2VjE0SDExLjVWN0MxMS41IDUuODkgMTAuNjEgNSA5LjUgNUg2QzQuOSA1IDQgNS45IDQgN1Y5LjE1QzUuMTYgOS41NiA2IDEwLjY3IDYgMTEuOTZNMjAuNjYgMTAuMDNDMTkuNjggMTAuMTkgMTkgMTEuMTIgMTkgMTIuMTJWMTVINVYxMkM1IDEwLjkgNC4xMSAxMCAzIDEwUzEgMTAuOSAxIDEyVjE3QzEgMTguMSAxLjkgMTkgMyAxOVYyMUg1VjE5SDE5VjIxSDIxVjE5QzIyLjEgMTkgMjMgMTguMSAyMyAxN1YxMkMyMyAxMC43OSAyMS45MSA5LjgyIDIwLjY2IDEwLjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvZmFPdXRsaW5lID0gXCJNMjEgOVY3QzIxIDUuMzUgMTkuNjUgNCAxOCA0SDE0QzEzLjIzIDQgMTIuNTMgNC4zIDEyIDQuNzhDMTEuNDcgNC4zIDEwLjc3IDQgMTAgNEg2QzQuMzUgNCAzIDUuMzUgMyA3VjlDMS4zNSA5IDAgMTAuMzUgMCAxMlYxN0MwIDE4LjY1IDEuMzUgMjAgMyAyMFYyMkg1VjIwSDE5VjIySDIxVjIwQzIyLjY1IDIwIDI0IDE4LjY1IDI0IDE3VjEyQzI0IDEwLjM1IDIyLjY1IDkgMjEgOU0xNCA2SDE4QzE4LjU1IDYgMTkgNi40NSAxOSA3VjkuNzhDMTguMzkgMTAuMzMgMTggMTEuMTIgMTggMTJWMTRIMTNWN0MxMyA2LjQ1IDEzLjQ1IDYgMTQgNk01IDdDNSA2LjQ1IDUuNDUgNiA2IDZIMTBDMTAuNTUgNiAxMSA2LjQ1IDExIDdWMTRINlYxMkM2IDExLjEyIDUuNjEgMTAuMzMgNSA5Ljc4VjdNMjIgMTdDMjIgMTcuNTUgMjEuNTUgMTggMjEgMThIM0MyLjQ1IDE4IDIgMTcuNTUgMiAxN1YxMkMyIDExLjQ1IDIuNDUgMTEgMyAxMVM0IDExLjQ1IDQgMTJWMTZIMjBWMTJDMjAgMTEuNDUgMjAuNDUgMTEgMjEgMTFTMjIgMTEuNDUgMjIgMTJWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29mYVNpbmdsZSA9IFwiTTUgOS4xNVY3QzUgNS45IDUuOSA1IDcgNUgxN0MxOC4xIDUgMTkgNS45IDE5IDdWOS4xNkMxNy44NCA5LjU3IDE3IDEwLjY3IDE3IDExLjk3VjE0SDdWMTEuOTZDNyAxMC42NyA2LjE2IDkuNTYgNSA5LjE1TTIwIDEwQzE4LjkgMTAgMTggMTAuOSAxOCAxMlYxNUg2VjEyQzYgMTAuOSA1LjExIDEwIDQgMTBTMiAxMC45IDIgMTJWMTdDMiAxOC4xIDIuOSAxOSA0IDE5VjIxSDZWMTlIMThWMjFIMjBWMTlDMjEuMSAxOSAyMiAxOC4xIDIyIDE3VjEyQzIyIDEwLjkgMjEuMSAxMCAyMCAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2ZhU2luZ2xlT3V0bGluZSA9IFwiTTE5IDlWN0MxOSA1LjM1IDE3LjY1IDQgMTYgNEg4QzYuMzUgNCA1IDUuMzUgNSA3VjlDMy4zNSA5IDIgMTAuMzUgMiAxMlYxN0MyIDE4LjY1IDMuMzUgMjAgNSAyMFYyMkg3VjIwSDE3VjIySDE5VjIwQzIwLjY1IDIwIDIyIDE4LjY1IDIyIDE3VjEyQzIyIDEwLjM1IDIwLjY1IDkgMTkgOU03IDdDNyA2LjQ1IDcuNDUgNiA4IDZIMTZDMTYuNTUgNiAxNyA2LjQ1IDE3IDdWOS43OEMxNi4zOSAxMC4zMyAxNiAxMS4xMiAxNiAxMlYxNEg4VjEyQzggMTEuMTIgNy42MSAxMC4zMyA3IDkuNzhWN00yMCAxN0MyMCAxNy41NSAxOS41NSAxOCAxOSAxOEg1QzQuNDUgMTggNCAxNy41NSA0IDE3VjEyQzQgMTEuNDUgNC40NSAxMSA1IDExUzYgMTEuNDUgNiAxMlYxNkgxOFYxMkMxOCAxMS40NSAxOC40NSAxMSAxOSAxMVMyMCAxMS40NSAyMCAxMlYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb2xhclBhbmVsID0gXCJNNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE0QTIsMiAwIDAsMSAyMCwxNkgxNVYyMEgxOFYyMkgxM1YxNkgxMVYyMkg2VjIwSDlWMTZINEEyLDIgMCAwLDEgMiwxNFY0QTIsMiAwIDAsMSA0LDJNNCw0VjhIMTFWNEg0TTQsMTRIMTFWMTBINFYxNE0yMCwxNFYxMEgxM1YxNEgyME0yMCw0SDEzVjhIMjBWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2xhclBhbmVsTGFyZ2UgPSBcIk0zLDZINlYzSDNWNk04LDNWNkgxMVYzSDhNMTMsM1Y2SDE2VjNIMTNNMTgsM1Y2SDIxVjNIMThNMjEsOEgxOFYxMUgyMVY4TTIxLDEzSDE4VjE2SDIxVjEzTTE2LDE2VjEzSDEzVjE2SDE2TTExLDE2VjEzSDhWMTZIMTFNNiwxNlYxM0gzVjE2SDZNMywxMUg2VjhIM1YxMU0xMyw4VjExSDE2VjhIMTNNOCw4VjExSDExVjhIOE0zLDFIMjFBMiwyIDAgMCwxIDIzLDNWMTZBMiwyIDAgMCwxIDIxLDE4SDE1VjIxSDE4VjIzSDEzVjE4SDExVjIzSDZWMjFIOVYxOEgzQTIsMiAwIDAsMSAxLDE2VjNBMiwyIDAgMCwxIDMsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2xhclBvd2VyID0gXCJNMTEuNDUsMlY1LjU1TDE1LDMuNzdMMTEuNDUsMk0xMC40NSw4TDgsMTAuNDZMMTEuNzUsMTEuNzFMMTAuNDUsOE0yLDExLjQ1TDMuNzcsMTVMNS41NSwxMS40NUgyTTEwLDJIMlYxMEMyLjU3LDEwLjE3IDMuMTcsMTAuMjUgMy43NywxMC4yNUM3LjM1LDEwLjI2IDEwLjI2LDcuMzUgMTAuMjcsMy43NUMxMC4yNiwzLjE2IDEwLjE3LDIuNTcgMTAsMk0xNywyMlYxNkgxNEwxOSw3VjEzSDIyTDE3LDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvbGRlcmluZ0lyb24gPSBcIk00Ljg2IDQuMDNMMi4wMyA2Ljg2TDUuMjEgMTAuMDRWMTIuODdMNi42MyAxNC4yOEwxMi4yOCA4LjYzTDEwLjg3IDcuMjFIOC4wNEw0Ljg2IDQuMDNNMTcgNlY3LjVDMTggNy41IDE4Ljg1IDguMzMgMTguODUgOS4zNUMxOC44NSAxMC4zNyAxOCAxMS4yIDE3IDExLjJWMTIuN0MxOS4yNCAxMi43IDIxIDE0LjUzIDIxIDE2Ljc3VjIxSDIyLjVWMTYuNzZDMjIuNSAxNC41NCAyMS4yMiAxMi42MiAxOS4zNSAxMS43M0MxOS45NyAxMS4xMiAyMC4zNSAxMC4yOCAyMC4zNSA5LjM1QzIwLjM1IDcuNSAxOC44NSA2IDE3IDZNMTEuOTMgMTEuMUw5LjEgMTMuOTNMMTQuMDUgMTguODhMMTQuNzYgMTguMTdMMTYuODggMjAuMjlMMTkgMjFMMTguMjkgMTguODhMMTYuMTcgMTYuNzZMMTYuODggMTYuMDVMMTEuOTMgMTEuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2xpZCA9IFwiTTAsMEgyNFYyNEgwXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ueVBsYXlzdGF0aW9uID0gXCJNOS41LDQuMjdDMTAuODgsNC41MyAxMi45LDUuMTQgMTQsNS41QzE2Ljc1LDYuNDUgMTcuNjksNy42MyAxNy42OSwxMC4yOUMxNy42OSwxMi44OSAxNi4wOSwxMy44NyAxNC4wNSwxMi44OVY4LjA1QzE0LjA1LDcuNSAxMy45NSw2Ljk3IDEzLjQxLDYuODJDMTMsNi42OSAxMi43Niw3LjA3IDEyLjc2LDcuNjNWMTkuNzNMOS41LDE4LjY5VjQuMjdNMTMuMzcsMTcuNjJMMTguNjIsMTUuNzVDMTkuMjIsMTUuNTQgMTkuMzEsMTUuMjQgMTguODMsMTUuMDhDMTguMzQsMTQuOTIgMTcuNDcsMTQuOTcgMTYuODcsMTUuMThMMTMuMzcsMTYuNDFWMTQuNDVMMTMuNTgsMTQuMzhDMTMuNTgsMTQuMzggMTQuNTksMTQgMTYsMTMuODdDMTcuNDMsMTMuNzEgMTkuMTcsMTMuODkgMjAuNTMsMTQuNEMyMi4wNywxNC44OSAyMi4yNSwxNS42MSAyMS44NiwxNi4xQzIxLjQ2LDE2LjYgMjAuNSwxNi45NSAyMC41LDE2Ljk1TDEzLjM3LDE5LjVWMTcuNjJNMy41LDE3LjQyQzEuOTMsMTcgMS42NiwxNi4wNSAyLjM4LDE1LjVDMy4wNSwxNSA0LjE4LDE0LjY1IDQuMTgsMTQuNjVMOC44NiwxM1YxNC44OEw1LjUsMTYuMDlDNC45LDE2LjMgNC44MSwxNi42IDUuMjksMTYuNzZDNS43NywxNi45MiA2LjY1LDE2Ljg4IDcuMjQsMTYuNjZMOC44NiwxNi4wOFYxNy43N0w4LjU0LDE3LjgzQzYuOTIsMTguMDkgNS4yLDE4IDMuNSwxNy40MlpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0ID0gXCJNMTggMjFMMTQgMTdIMTdWN0gxNEwxOCAzTDIyIDdIMTlWMTdIMjJNMiAxOVYxN0gxMlYxOU0yIDEzVjExSDlWMTNNMiA3VjVINlY3SDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydEFscGhhYmV0aWNhbEFzY2VuZGluZyA9IFwiTTE5IDE3SDIyTDE4IDIxTDE0IDE3SDE3VjNIMTlNMTEgMTNWMTVMNy42NyAxOUgxMVYyMUg1VjE5TDguMzMgMTVINVYxM005IDNIN0M1LjkgMyA1IDMuOSA1IDVWMTFIN1Y5SDlWMTFIMTFWNUMxMSAzLjkgMTAuMTEgMyA5IDNNOSA3SDdWNUg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRBbHBoYWJldGljYWxBc2NlbmRpbmdWYXJpYW50ID0gXCJNOS4yNSA1TDEyLjUgMS43NUwxNS43NSA1SDkuMjVNOC44OSAxNC4zSDZMNS4yOCAxN0gyLjkxTDYgN0g5TDEyLjEzIDE3SDkuNjdMOC44OSAxNC4zTTYuMzMgMTIuNjhIOC41Nkw3LjkzIDEwLjU2TDcuNjcgOS41OUw3LjQyIDguNjNINy4zOUw3LjE3IDkuNkw2LjkzIDEwLjU4TDYuMzMgMTIuNjhNMTMuMDUgMTdWMTUuNzRMMTcuOCA4Ljk3VjguOTFIMTMuNVY3SDIwLjczVjguMzRMMTYuMDkgMTVWMTUuMDhIMjAuOFYxN0gxMy4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0QWxwaGFiZXRpY2FsRGVzY2VuZGluZyA9IFwiTTE5IDdIMjJMMTggM0wxNCA3SDE3VjIxSDE5TTExIDEzVjE1TDcuNjcgMTlIMTFWMjFINVYxOUw4LjMzIDE1SDVWMTNNOSAzSDdDNS45IDMgNSAzLjkgNSA1VjExSDdWOUg5VjExSDExVjVDMTEgMy45IDEwLjExIDMgOSAzTTkgN0g3VjVIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0QWxwaGFiZXRpY2FsRGVzY2VuZGluZ1ZhcmlhbnQgPSBcIk0xNS43NSAxOUwxMi41IDIyLjI1TDkuMjUgMTlIMTUuNzVNOC44OSAxNC4zSDZMNS4yOCAxN0gyLjkxTDYgN0g5TDEyLjEzIDE3SDkuNjdMOC44OSAxNC4zTTYuMzMgMTIuNjhIOC41Nkw3LjkzIDEwLjU2TDcuNjcgOS41OUw3LjQyIDguNjNINy4zOUw3LjE3IDkuNkw2LjkzIDEwLjU4TDYuMzMgMTIuNjhNMTMuMDUgMTdWMTUuNzRMMTcuOCA4Ljk3VjguOTFIMTMuNVY3SDIwLjczVjguMzRMMTYuMDkgMTVWMTUuMDhIMjAuOFYxN0gxMy4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0QWxwaGFiZXRpY2FsVmFyaWFudCA9IFwiTTkuMjUsNUwxMi41LDEuNzVMMTUuNzUsNUg5LjI1TTE1Ljc1LDE5TDEyLjUsMjIuMjVMOS4yNSwxOUgxNS43NU04Ljg5LDE0LjNINkw1LjI4LDE3SDIuOTFMNiw3SDlMMTIuMTMsMTdIOS42N0w4Ljg5LDE0LjNNNi4zMywxMi42OEg4LjU2TDcuOTMsMTAuNTZMNy42Nyw5LjU5TDcuNDIsOC42M0g3LjM5TDcuMTcsOS42TDYuOTMsMTAuNThMNi4zMywxMi42OE0xMy4wNSwxN1YxNS43NEwxNy44LDguOTdWOC45MUgxMy41VjdIMjAuNzNWOC4zNEwxNi4wOSwxNVYxNS4wOEgyMC44VjE3SDEzLjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRBc2NlbmRpbmcgPSBcIk0xOSAxN0gyMkwxOCAyMUwxNCAxN0gxN1YzSDE5TTIgMTdIMTJWMTlIMk02IDVWN0gyVjVNMiAxMUg5VjEzSDJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydEJvb2xBc2NlbmRpbmcgPSBcIk0xOSAxN0gyMkwxOCAyMUwxNCAxN0gxN1YzSDE5VjE3TTcgM0M0Ljc5IDMgMyA0Ljc5IDMgN1M0Ljc5IDExIDcgMTEgMTEgOS4yMSAxMSA3IDkuMjEgMyA3IDNNNyA5QzUuOSA5IDUgOC4xIDUgN1M1LjkgNSA3IDUgOSA1LjkgOSA3IDguMSA5IDcgOU03IDEzQzQuNzkgMTMgMyAxNC43OSAzIDE3UzQuNzkgMjEgNyAyMSAxMSAxOS4yMSAxMSAxNyA5LjIxIDEzIDcgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydEJvb2xBc2NlbmRpbmdWYXJpYW50ID0gXCJNMTkgMTdIMjJMMTggMjFMMTQgMTdIMTdWM0gxOVYxN005IDEzSDVDMy44OSAxMyAzIDEzLjg5IDMgMTVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIOUMxMC4xMSAyMSAxMSAyMC4xMSAxMSAxOVYxNUMxMSAxMy44OSAxMC4xMSAxMyA5IDEzTTYuMjcgMTkuNUwzLjc0IDE2Ljk1TDQuODEgMTUuOUw2LjI4IDE3LjM5TDkuMiAxNC41TDEwLjI2IDE1LjU1TDYuMjcgMTkuNU05IDNINUMzLjg5IDMgMyAzLjg5IDMgNVY5QzMgMTAuMTEgMy44OSAxMSA1IDExSDlDMTAuMTEgMTEgMTEgMTAuMTEgMTEgOVY1QzExIDMuODkgMTAuMTEgMyA5IDNNOSA5SDVWNUg5VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydEJvb2xEZXNjZW5kaW5nID0gXCJNMTkgN0gyMkwxOCAzTDE0IDdIMTdWMjFIMTlNNSA3QzUgOC4xIDUuOSA5IDcgOUM4LjEgOSA5IDguMSA5IDdDOSA1LjkgOC4xIDUgNyA1QzUuOSA1IDUgNS45IDUgN003IDNDOS4yMSAzIDExIDQuNzkgMTEgN0MxMSA5LjIxIDkuMjEgMTEgNyAxMUM0Ljc5IDExIDMgOS4yMSAzIDdDMyA0Ljc5IDQuNzkgMyA3IDNNNyAxM0M0Ljc5IDEzIDMgMTQuNzkgMyAxN0MzIDE5LjIxIDQuNzkgMjEgNyAyMUM5LjIxIDIxIDExIDE5LjIxIDExIDE3QzExIDE0Ljc5IDkuMjEgMTMgNyAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0Qm9vbERlc2NlbmRpbmdWYXJpYW50ID0gXCJNMTkgN0gyMkwxOCAzTDE0IDdIMTdWMjFIMTlNNSAxM0MzLjg5IDEzIDMgMTMuODkgMyAxNVYxOUMzIDIwLjExIDMuODkgMjEgNSAyMUg5QzEwLjExIDIxIDExIDIwLjExIDExIDE5VjE1QzExIDEzLjg5IDEwLjExIDEzIDkgMTNNOS4yIDE0LjVMMTAuMjYgMTUuNTVMNi4yNyAxOS41TDMuNzQgMTYuOTVMNC44MSAxNS45TDYuMjggMTcuMzlNNSAzQzMuODkgMyAzIDMuODkgMyA1VjlDMyAxMC4xMSAzLjg5IDExIDUgMTFIOUMxMC4xMSAxMSAxMSAxMC4xMSAxMSA5VjVDMTEgMy44OSAxMC4xMSAzIDkgM001IDVIOVY5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydENhbGVuZGFyQXNjZW5kaW5nID0gXCJNMjEgMTdIMjRMMjAgMjFMMTYgMTdIMTlWM0gyMVYxN004IDE2SDExVjEzSDhWMTZNMTMgNUgxMlYzSDEwVjVINlYzSDRWNUgzQzEuODkgNSAxIDUuODkgMSA3VjE4QzEgMTkuMTEgMS44OSAyMCAzIDIwSDEzQzE0LjExIDIwIDE1IDE5LjExIDE1IDE4VjdDMTUgNS44OSAxNC4xMSA1IDEzIDVNMyAxOEwzIDExSDEzTDEzIDE4TDMgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydENhbGVuZGFyRGVzY2VuZGluZyA9IFwiTTE5IDdIMTZMMjAgM0wyNCA3SDIxVjIxSDE5VjdNOCAxNkgxMVYxM0g4VjE2TTEzIDVIMTJWM0gxMFY1SDZWM0g0VjVIM0MxLjg5IDUgMSA1Ljg5IDEgN1YxOEMxIDE5LjExIDEuODkgMjAgMyAyMEgxM0MxNC4xMSAyMCAxNSAxOS4xMSAxNSAxOFY3QzE1IDUuODkgMTQuMTEgNSAxMyA1TTMgMThMMyAxMUgxM0wxMyAxOEwzIDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRDbG9ja0FzY2VuZGluZyA9IFwiTTIwIDE3SDIzTDE5IDIxTDE1IDE3SDE4VjNIMjBWMTdNOCA1QzQuMTQgNSAxIDguMTMgMSAxMkMxIDE1Ljg3IDQuMTMgMTkgOCAxOUMxMS44NiAxOSAxNSAxNS44NyAxNSAxMkMxNSA4LjEzIDExLjg3IDUgOCA1TTEwLjE5IDE0LjUzTDcgMTIuNjlWOUg4LjVWMTEuODJMMTAuOTQgMTMuMjNMMTAuMTkgMTQuNTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydENsb2NrQXNjZW5kaW5nT3V0bGluZSA9IFwiTTIwIDE3SDIzTDE5IDIxTDE1IDE3SDE4VjNIMjBWMTdNOCA1QzQuMTQgNSAxIDguMTMgMSAxMkMxIDE1Ljg3IDQuMTMgMTkgOCAxOUMxMS44NiAxOSAxNSAxNS44NyAxNSAxMkMxNSA4LjEzIDExLjg3IDUgOCA1TTggNy4xNUMxMC42NyA3LjE1IDEyLjg1IDkuMzIgMTIuODUgMTJDMTIuODUgMTQuNjggMTAuNjggMTYuODUgOCAxNi44NUM1LjMyIDE2Ljg1IDMuMTUgMTQuNjggMy4xNSAxMkMzLjE1IDkuMzIgNS4zMiA3LjE1IDggNy4xNU03IDlWMTIuNjlMMTAuMTkgMTQuNTNMMTAuOTQgMTMuMjNMOC41IDExLjgyVjlcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0Q2xvY2tEZXNjZW5kaW5nID0gXCJNMTggN0gxNUwxOSAzTDIzIDdIMjBWMjFIMThWN004IDVDNC4xNCA1IDEgOC4xMyAxIDEyQzEgMTUuODcgNC4xMyAxOSA4IDE5QzExLjg2IDE5IDE1IDE1Ljg3IDE1IDEyQzE1IDguMTMgMTEuODcgNSA4IDVNMTAuMTkgMTQuNTNMNyAxMi42OVY5SDguNVYxMS44MkwxMC45NCAxMy4yM0wxMC4xOSAxNC41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0Q2xvY2tEZXNjZW5kaW5nT3V0bGluZSA9IFwiTTE4IDdIMTVMMTkgM0wyMyA3SDIwVjIxSDE4VjdNOCA1QzQuMTQgNSAxIDguMTMgMSAxMkMxIDE1Ljg3IDQuMTMgMTkgOCAxOUMxMS44NiAxOSAxNSAxNS44NyAxNSAxMkMxNSA4LjEzIDExLjg3IDUgOCA1TTggNy4xNUMxMC42NyA3LjE1IDEyLjg1IDkuMzIgMTIuODUgMTJDMTIuODUgMTQuNjggMTAuNjggMTYuODUgOCAxNi44NUM1LjMyIDE2Ljg1IDMuMTUgMTQuNjggMy4xNSAxMkMzLjE1IDkuMzIgNS4zMiA3LjE1IDggNy4xNU03IDlWMTIuNjlMMTAuMTkgMTQuNTNMMTAuOTQgMTMuMjNMOC41IDExLjgyVjlcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0RGVzY2VuZGluZyA9IFwiTTE5IDdIMjJMMTggM0wxNCA3SDE3VjIxSDE5TTIgMTdIMTJWMTlIMk02IDVWN0gyVjVNMiAxMUg5VjEzSDJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydE51bWVyaWNBc2NlbmRpbmcgPSBcIk0xOSAxN0gyMkwxOCAyMUwxNCAxN0gxN1YzSDE5VjE3TTkgMTNIN0M1LjkgMTMgNSAxMy45IDUgMTVWMTZDNSAxNy4xMSA1LjkgMTggNyAxOEg5VjE5SDVWMjFIOUMxMC4xMSAyMSAxMSAyMC4xMSAxMSAxOVYxNUMxMSAxMy45IDEwLjExIDEzIDkgMTNNOSAxNkg3VjE1SDlWMTZNOSAzSDdDNS45IDMgNSAzLjkgNSA1VjlDNSAxMC4xMSA1LjkgMTEgNyAxMUg5QzEwLjExIDExIDExIDEwLjExIDExIDlWNUMxMSAzLjkgMTAuMTEgMyA5IDNNOSA5SDdWNUg5VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydE51bWVyaWNBc2NlbmRpbmdWYXJpYW50ID0gXCJNNy43OCA3QzkuMDggNy4wNCAxMCA3LjUzIDEwLjU3IDguNDZDMTEuMTMgOS40IDExLjQxIDEwLjU2IDExLjM5IDExLjk1QzExLjQgMTMuNSAxMS4wOSAxNC43MyAxMC41IDE1LjYyQzkuODggMTYuNSA4Ljk1IDE2Ljk3IDcuNzEgMTdDNi40NSAxNi45NiA1LjU0IDE2LjUgNC45NiAxNS41NkM0LjM4IDE0LjYzIDQuMDkgMTMuNDUgNC4wOSAxMlM0LjM5IDkuMzYgNSA4LjQ0QzUuNTkgNy41IDYuNSA3LjA0IDcuNzggN003Ljc1IDguNjNDNy4zMSA4LjYzIDYuOTYgOC45IDYuNyA5LjQ2QzYuNDQgMTAgNi4zMiAxMC44NyA2LjMyIDEyQzYuMzEgMTMuMTUgNi40NCAxNCA2LjY5IDE0LjU0QzYuOTUgMTUuMSA3LjMxIDE1LjM3IDcuNzcgMTUuMzdDOC42OSAxNS4zNyA5LjE2IDE0LjI0IDkuMTcgMTJDOS4xNyA5Ljc3IDguNyA4LjY1IDcuNzUgOC42M00xMy4zMyAxN1YxNS4yMkwxMy43NiAxNS4yNEwxNC4zIDE1LjIyTDE1LjM0IDE1LjAzQzE1LjY4IDE0LjkyIDE2IDE0Ljc4IDE2LjI2IDE0LjU4QzE2LjU5IDE0LjM1IDE2Ljg2IDE0LjA4IDE3LjA3IDEzLjc2QzE3LjI5IDEzLjQ1IDE3LjQ0IDEzLjEyIDE3LjUzIDEyLjc4TDE3LjUgMTIuNzdDMTcuMDUgMTMuMTkgMTYuMzggMTMuNCAxNS40NyAxMy40MUMxNC42MiAxMy40IDEzLjkxIDEzLjE1IDEzLjM0IDEyLjY1UzEyLjUgMTEuNDMgMTIuNDYgMTAuNUMxMi40NyA5LjUgMTIuODEgOC42OSAxMy40NyA4LjAzQzE0LjE0IDcuMzcgMTUgNy4wMyAxNi4xMiA3QzE3LjM3IDcuMDQgMTguMjkgNy40NSAxOC44OCA4LjI0QzE5LjQ3IDkgMTkuNzYgMTAgMTkuNzYgMTEuMTlDMTkuNzUgMTIuMTUgMTkuNjEgMTMgMTkuMzIgMTMuNzZDMTkuMDMgMTQuNSAxOC42NCAxNS4xMyAxOC4xMiAxNS42NEMxNy42NiAxNi4wNiAxNy4xMSAxNi4zOCAxNi40NyAxNi42MUMxNS44MyAxNi44MyAxNS4xMiAxNi45NiAxNC4zNCAxN0gxMy4zM00xNi4wNiA4LjYzQzE1LjY1IDguNjQgMTUuMzIgOC44IDE1LjA2IDkuMTFDMTQuODEgOS40MiAxNC42OCA5Ljg0IDE0LjY4IDEwLjM2QzE0LjY4IDEwLjggMTQuOCAxMS4xNiAxNS4wMyAxMS40NkMxNS4yNyAxMS43NyAxNS42MyAxMS45MiAxNi4xMSAxMS45M0MxNi40MyAxMS45MyAxNi43IDExLjg2IDE2LjkyIDExLjc0QzE3LjE0IDExLjYxIDE3LjMgMTEuNDYgMTcuNDEgMTEuMjhDMTcuNSAxMS4xNyAxNy41MyAxMC45NyAxNy41MyAxMC43MUMxNy41NCAxMC4xNiAxNy40MyA5LjY5IDE3LjIgOS4yOEMxNi45NyA4Ljg3IDE2LjU5IDguNjUgMTYuMDYgOC42M005LjI1IDVMMTIuNSAxLjc1TDE1Ljc1IDVIOS4yNVwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnROdW1lcmljRGVzY2VuZGluZyA9IFwiTTE5IDdIMjJMMTggM0wxNCA3SDE3VjIxSDE5TTkgMjFINVYxOUg5VjE4SDdDNS45IDE4IDUgMTcuMTEgNSAxNlYxNUM1IDEzLjkgNS45IDEzIDcgMTNIOUMxMC4xMSAxMyAxMSAxMy45IDExIDE1VjE5QzExIDIwLjExIDEwLjExIDIxIDkgMjFNOSAxNUg3VjE2SDlNNyAzSDlDMTAuMTEgMyAxMSAzLjkgMTEgNVY5QzExIDEwLjExIDEwLjExIDExIDkgMTFIN0M1LjkgMTEgNSAxMC4xMSA1IDlWNUM1IDMuOSA1LjkgMyA3IDNNNyA5SDlWNUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnROdW1lcmljRGVzY2VuZGluZ1ZhcmlhbnQgPSBcIk03Ljc4IDdDOS4wOCA3LjA0IDEwIDcuNTMgMTAuNTcgOC40NkMxMS4xMyA5LjQgMTEuNDEgMTAuNTYgMTEuMzkgMTEuOTVDMTEuNCAxMy41IDExLjA5IDE0LjczIDEwLjUgMTUuNjJDOS44OCAxNi41IDguOTUgMTYuOTcgNy43MSAxN0M2LjQ1IDE2Ljk2IDUuNTQgMTYuNSA0Ljk2IDE1LjU2QzQuMzggMTQuNjMgNC4wOSAxMy40NSA0LjA5IDEyUzQuMzkgOS4zNiA1IDguNDRDNS41OSA3LjUgNi41IDcuMDQgNy43OCA3TTcuNzUgOC42M0M3LjMxIDguNjMgNi45NiA4LjkgNi43IDkuNDZDNi40NCAxMCA2LjMyIDEwLjg3IDYuMzIgMTJDNi4zMSAxMy4xNSA2LjQ0IDE0IDYuNjkgMTQuNTRDNi45NSAxNS4xIDcuMzEgMTUuMzcgNy43NyAxNS4zN0M4LjY5IDE1LjM3IDkuMTYgMTQuMjQgOS4xNyAxMkM5LjE3IDkuNzcgOC43IDguNjUgNy43NSA4LjYzTTEzLjMzIDE3VjE1LjIyTDEzLjc2IDE1LjI0TDE0LjMgMTUuMjJMMTUuMzQgMTUuMDNDMTUuNjggMTQuOTIgMTYgMTQuNzggMTYuMjYgMTQuNThDMTYuNTkgMTQuMzUgMTYuODYgMTQuMDggMTcuMDcgMTMuNzZDMTcuMjkgMTMuNDUgMTcuNDQgMTMuMTIgMTcuNTMgMTIuNzhMMTcuNSAxMi43N0MxNy4wNSAxMy4xOSAxNi4zOCAxMy40IDE1LjQ3IDEzLjQxQzE0LjYyIDEzLjQgMTMuOTEgMTMuMTUgMTMuMzQgMTIuNjVTMTIuNSAxMS40MyAxMi40NiAxMC41QzEyLjQ3IDkuNSAxMi44MSA4LjY5IDEzLjQ3IDguMDNDMTQuMTQgNy4zNyAxNSA3LjAzIDE2LjEyIDdDMTcuMzcgNy4wNCAxOC4yOSA3LjQ1IDE4Ljg4IDguMjRDMTkuNDcgOSAxOS43NiAxMCAxOS43NiAxMS4xOUMxOS43NSAxMi4xNSAxOS42MSAxMyAxOS4zMiAxMy43NkMxOS4wMyAxNC41IDE4LjY0IDE1LjEzIDE4LjEyIDE1LjY0QzE3LjY2IDE2LjA2IDE3LjExIDE2LjM4IDE2LjQ3IDE2LjYxQzE1LjgzIDE2LjgzIDE1LjEyIDE2Ljk2IDE0LjM0IDE3SDEzLjMzTTE2LjA2IDguNjNDMTUuNjUgOC42NCAxNS4zMiA4LjggMTUuMDYgOS4xMUMxNC44MSA5LjQyIDE0LjY4IDkuODQgMTQuNjggMTAuMzZDMTQuNjggMTAuOCAxNC44IDExLjE2IDE1LjAzIDExLjQ2QzE1LjI3IDExLjc3IDE1LjYzIDExLjkyIDE2LjExIDExLjkzQzE2LjQzIDExLjkzIDE2LjcgMTEuODYgMTYuOTIgMTEuNzRDMTcuMTQgMTEuNjEgMTcuMyAxMS40NiAxNy40MSAxMS4yOEMxNy41IDExLjE3IDE3LjUzIDEwLjk3IDE3LjUzIDEwLjcxQzE3LjU0IDEwLjE2IDE3LjQzIDkuNjkgMTcuMiA5LjI4QzE2Ljk3IDguODcgMTYuNTkgOC42NSAxNi4wNiA4LjYzTTE1Ljc1IDE5TDEyLjUgMjIuMjVMOS4yNSAxOUgxNS43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0TnVtZXJpY1ZhcmlhbnQgPSBcIk03Ljc4LDdDOS4wOCw3LjA0IDEwLDcuNTMgMTAuNTcsOC40NkMxMS4xMyw5LjQgMTEuNDEsMTAuNTYgMTEuMzksMTEuOTVDMTEuNCwxMy41IDExLjA5LDE0LjczIDEwLjUsMTUuNjJDOS44OCwxNi41IDguOTUsMTYuOTcgNy43MSwxN0M2LjQ1LDE2Ljk2IDUuNTQsMTYuNSA0Ljk2LDE1LjU2QzQuMzgsMTQuNjMgNC4wOSwxMy40NSA0LjA5LDEyQzQuMDksMTAuNTUgNC4zOSw5LjM2IDUsOC40NEM1LjU5LDcuNSA2LjUsNy4wNCA3Ljc4LDdNNy43NSw4LjYzQzcuMzEsOC42MyA2Ljk2LDguOSA2LjcsOS40NkM2LjQ0LDEwIDYuMzIsMTAuODcgNi4zMiwxMkM2LjMxLDEzLjE1IDYuNDQsMTQgNi42OSwxNC41NEM2Ljk1LDE1LjEgNy4zMSwxNS4zNyA3Ljc3LDE1LjM3QzguNjksMTUuMzcgOS4xNiwxNC4yNCA5LjE3LDEyQzkuMTcsOS43NyA4LjcsOC42NSA3Ljc1LDguNjNNMTMuMzMsMTdWMTUuMjJMMTMuNzYsMTUuMjRMMTQuMywxNS4yMkwxNS4zNCwxNS4wM0MxNS42OCwxNC45MiAxNiwxNC43OCAxNi4yNiwxNC41OEMxNi41OSwxNC4zNSAxNi44NiwxNC4wOCAxNy4wNywxMy43NkMxNy4yOSwxMy40NSAxNy40NCwxMy4xMiAxNy41MywxMi43OEwxNy41LDEyLjc3QzE3LjA1LDEzLjE5IDE2LjM4LDEzLjQgMTUuNDcsMTMuNDFDMTQuNjIsMTMuNCAxMy45MSwxMy4xNSAxMy4zNCwxMi42NUMxMi43NywxMi4xNSAxMi41LDExLjQzIDEyLjQ2LDEwLjVDMTIuNDcsOS41IDEyLjgxLDguNjkgMTMuNDcsOC4wM0MxNC4xNCw3LjM3IDE1LDcuMDMgMTYuMTIsN0MxNy4zNyw3LjA0IDE4LjI5LDcuNDUgMTguODgsOC4yNEMxOS40Nyw5IDE5Ljc2LDEwIDE5Ljc2LDExLjE5QzE5Ljc1LDEyLjE1IDE5LjYxLDEzIDE5LjMyLDEzLjc2QzE5LjAzLDE0LjUgMTguNjQsMTUuMTMgMTguMTIsMTUuNjRDMTcuNjYsMTYuMDYgMTcuMTEsMTYuMzggMTYuNDcsMTYuNjFDMTUuODMsMTYuODMgMTUuMTIsMTYuOTYgMTQuMzQsMTdIMTMuMzNNMTYuMDYsOC42M0MxNS42NSw4LjY0IDE1LjMyLDguOCAxNS4wNiw5LjExQzE0LjgxLDkuNDIgMTQuNjgsOS44NCAxNC42OCwxMC4zNkMxNC42OCwxMC44IDE0LjgsMTEuMTYgMTUuMDMsMTEuNDZDMTUuMjcsMTEuNzcgMTUuNjMsMTEuOTIgMTYuMTEsMTEuOTNDMTYuNDMsMTEuOTMgMTYuNywxMS44NiAxNi45MiwxMS43NEMxNy4xNCwxMS42MSAxNy4zLDExLjQ2IDE3LjQxLDExLjI4QzE3LjUsMTEuMTcgMTcuNTMsMTAuOTcgMTcuNTMsMTAuNzFDMTcuNTQsMTAuMTYgMTcuNDMsOS42OSAxNy4yLDkuMjhDMTYuOTcsOC44NyAxNi41OSw4LjY1IDE2LjA2LDguNjNNOS4yNSw1TDEyLjUsMS43NUwxNS43NSw1SDkuMjVNMTUuNzUsMTlMMTIuNSwyMi4yNUw5LjI1LDE5SDE1Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRSZXZlcnNlVmFyaWFudCA9IFwiTTMgMTFIMTVWMTNIM00zIDE4VjE2SDIxVjE4TTMgNkg5VjhIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0VmFyaWFudCA9IFwiTTMsMTNIMTVWMTFIM00zLDZWOEgyMVY2TTMsMThIOVYxNkgzVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRWYXJpYW50TG9jayA9IFwiTTMsMTNWMTFIMTVWMTNIM00zLDZIMjFWOEgzVjZNMywxOFYxNkg5VjE4SDNNMjIsMjJIMTRWMThIMTVWMTdBMywzIDAgMCwxIDE4LDE0QTMsMyAwIDAsMSAyMSwxN1YxOEgyMlYyMk0xOCwxNkExLDEgMCAwLDAgMTcsMTdWMThIMTlWMTdBMSwxIDAgMCwwIDE4LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRWYXJpYW50TG9ja09wZW4gPSBcIk0zLDEzVjExSDE1VjEzSDNNMyw2SDIxVjhIM1Y2TTMsMThWMTZIOVYxOEgzTTIyLDIySDE0VjE4SDE1VjE2QTMsMyAwIDAsMSAxOCwxM0EzLDMgMCAwLDEgMjEsMTZIMTlBMSwxIDAgMCwwIDE4LDE1QTEsMSAwIDAsMCAxNywxNlYxOEgyMlYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0VmFyaWFudFJlbW92ZSA9IFwiTTMgMTNIMTVWMTFIM00zIDZWOEgyMVY2TTMgMThIOVYxNkgzVjE4TTIyLjU0IDE2Ljg4TDIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ2TDIyLjU0IDE2Ljg4XCI7XHJcbmV4cG9ydCB2YXIgbWRpU291bmRjbG91ZCA9IFwiTTExLjU2LDguODdWMTdIMjAuMzJWMTdDMjIuMTcsMTYuODcgMjMsMTUuNzMgMjMsMTQuMzNDMjMsMTIuODUgMjEuODgsMTEuNjYgMjAuMzgsMTEuNjZDMjAsMTEuNjYgMTkuNjgsMTEuNzQgMTkuMzUsMTEuODhDMTkuMTEsOS41NCAxNy4xMiw3LjcxIDE0LjY3LDcuNzFDMTMuNSw3LjcxIDEyLjM5LDguMTUgMTEuNTYsOC44N00xMC42OCw5Ljg5QzEwLjM4LDkuNzEgMTAuMDYsOS41NyA5LjcxLDkuNVYxN0gxMS4xVjkuMzRDMTAuOTUsOS41IDEwLjgxLDkuNyAxMC42OCw5Ljg5TTguMzMsOS4zNVYxN0g5LjI1VjkuMzhDOS4wNiw5LjM1IDguODcsOS4zNCA4LjY3LDkuMzRDOC41NSw5LjM0IDguNDQsOS4zNCA4LjMzLDkuMzVNNi41LDEwVjE3SDcuNDFWOS41NEM3LjA4LDkuNjUgNi43Nyw5LjgxIDYuNSwxME00LjgzLDEyLjVDNC43NywxMi41IDQuNzEsMTIuNDQgNC42NCwxMi40MVYxN0g1LjU2VjEwLjg2QzUuMTksMTEuMzQgNC45NCwxMS45MSA0LjgzLDEyLjVNMi43OSwxMi4yMlYxNi45MUMzLDE2Ljk3IDMuMjQsMTcgMy41LDE3SDMuNzJWMTIuMTRDMy42NCwxMi4xMyAzLjU2LDEyLjEyIDMuNSwxMi4xMkMzLjI0LDEyLjEyIDMsMTIuMTYgMi43OSwxMi4yMk0xLDE0LjU2QzEsMTUuMzEgMS4zNCwxNS45NyAxLjg3LDE2LjQyVjEyLjcxQzEuMzQsMTMuMTUgMSwxMy44MiAxLDE0LjU2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZUJyYW5jaCA9IFwiTTEzLDE0QzkuNjQsMTQgOC41NCwxNS4zNSA4LjE4LDE2LjI0QzkuMjUsMTYuNyAxMCwxNy43NiAxMCwxOUEzLDMgMCAwLDEgNywyMkEzLDMgMCAwLDEgNCwxOUM0LDE3LjY5IDQuODMsMTYuNTggNiwxNi4xN1Y3LjgzQzQuODMsNy40MiA0LDYuMzEgNCw1QTMsMyAwIDAsMSA3LDJBMywzIDAgMCwxIDEwLDVDMTAsNi4zMSA5LjE3LDcuNDIgOCw3LjgzVjEzLjEyQzguODgsMTIuNDcgMTAuMTYsMTIgMTIsMTJDMTQuNjcsMTIgMTUuNTYsMTAuNjYgMTUuODUsOS43N0MxNC43Nyw5LjMyIDE0LDguMjUgMTQsN0EzLDMgMCAwLDEgMTcsNEEzLDMgMCAwLDEgMjAsN0MyMCw4LjM0IDE5LjEyLDkuNSAxNy45MSw5Ljg2QzE3LjY1LDExLjI5IDE2LjY4LDE0IDEzLDE0TTcsMThBMSwxIDAgMCwwIDYsMTlBMSwxIDAgMCwwIDcsMjBBMSwxIDAgMCwwIDgsMTlBMSwxIDAgMCwwIDcsMThNNyw0QTEsMSAwIDAsMCA2LDVBMSwxIDAgMCwwIDcsNkExLDEgMCAwLDAgOCw1QTEsMSAwIDAsMCA3LDRNMTcsNkExLDEgMCAwLDAgMTYsN0ExLDEgMCAwLDAgMTcsOEExLDEgMCAwLDAgMTgsN0ExLDEgMCAwLDAgMTcsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VCcmFuY2hDaGVjayA9IFwiTTEzIDE0QzkuNjQgMTQgOC41NCAxNS4zNSA4LjE4IDE2LjI0QzkuMjUgMTYuNyAxMCAxNy43NiAxMCAxOUMxMCAyMC42NiA4LjY2IDIyIDcgMjJTNCAyMC42NiA0IDE5QzQgMTcuNjkgNC44MyAxNi41OCA2IDE2LjE3VjcuODNDNC44MyA3LjQyIDQgNi4zMSA0IDVDNCAzLjM0IDUuMzQgMiA3IDJTMTAgMy4zNCAxMCA1QzEwIDYuMzEgOS4xNyA3LjQyIDggNy44M1YxMy4xMkM4Ljg4IDEyLjQ3IDEwLjE2IDEyIDEyIDEyQzE0LjY3IDEyIDE1LjU2IDEwLjY2IDE1Ljg1IDkuNzdDMTQuNzcgOS4zMiAxNCA4LjI1IDE0IDdDMTQgNS4zNCAxNS4zNCA0IDE3IDRTMjAgNS4zNCAyMCA3QzIwIDguMzQgMTkuMTIgOS41IDE3LjkxIDkuODZDMTcuNjUgMTEuMjkgMTYuNjggMTQgMTMgMTRNNyAxOEM2LjQ1IDE4IDYgMTguNDUgNiAxOVM2LjQ1IDIwIDcgMjAgOCAxOS41NSA4IDE5IDcuNTUgMTggNyAxOE03IDRDNi40NSA0IDYgNC40NSA2IDVTNi40NSA2IDcgNiA4IDUuNTUgOCA1IDcuNTUgNCA3IDRNMTcgNkMxNi40NSA2IDE2IDYuNDUgMTYgN1MxNi40NSA4IDE3IDggMTggNy41NSAxOCA3IDE3LjU1IDYgMTcgNk0xNi43NSAyMS4xNkwxNCAxOC4xNkwxNS4xNiAxN0wxNi43NSAxOC41OUwyMC4zNCAxNUwyMS41IDE2LjQxTDE2Ljc1IDIxLjE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlQnJhbmNoTWludXMgPSBcIk0xMyAxNEM5LjY0IDE0IDguNTQgMTUuMzUgOC4xOCAxNi4yNEM5LjI1IDE2LjcgMTAgMTcuNzYgMTAgMTlDMTAgMjAuNjYgOC42NiAyMiA3IDIyUzQgMjAuNjYgNCAxOUM0IDE3LjY5IDQuODMgMTYuNTggNiAxNi4xN1Y3LjgzQzQuODMgNy40MiA0IDYuMzEgNCA1QzQgMy4zNCA1LjM0IDIgNyAyUzEwIDMuMzQgMTAgNUMxMCA2LjMxIDkuMTcgNy40MiA4IDcuODNWMTMuMTJDOC44OCAxMi40NyAxMC4xNiAxMiAxMiAxMkMxNC42NyAxMiAxNS41NiAxMC42NiAxNS44NSA5Ljc3QzE0Ljc3IDkuMzIgMTQgOC4yNSAxNCA3QzE0IDUuMzQgMTUuMzQgNCAxNyA0UzIwIDUuMzQgMjAgN0MyMCA4LjM0IDE5LjEyIDkuNSAxNy45MSA5Ljg2QzE3LjY1IDExLjI5IDE2LjY4IDE0IDEzIDE0TTcgMThDNi40NSAxOCA2IDE4LjQ1IDYgMTlTNi40NSAyMCA3IDIwIDggMTkuNTUgOCAxOSA3LjU1IDE4IDcgMThNNyA0QzYuNDUgNCA2IDQuNDUgNiA1UzYuNDUgNiA3IDYgOCA1LjU1IDggNSA3LjU1IDQgNyA0TTE3IDZDMTYuNDUgNiAxNiA2LjQ1IDE2IDdTMTYuNDUgOCAxNyA4IDE4IDcuNTUgMTggNyAxNy41NSA2IDE3IDZNMTQgMTdWMTlIMjJWMTdIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlQnJhbmNoUGx1cyA9IFwiTTEzIDE0QzkuNjQgMTQgOC41NCAxNS4zNSA4LjE4IDE2LjI0QzkuMjUgMTYuNyAxMCAxNy43NiAxMCAxOUMxMCAyMC42NiA4LjY2IDIyIDcgMjJTNCAyMC42NiA0IDE5QzQgMTcuNjkgNC44MyAxNi41OCA2IDE2LjE3VjcuODNDNC44MyA3LjQyIDQgNi4zMSA0IDVDNCAzLjM0IDUuMzQgMiA3IDJTMTAgMy4zNCAxMCA1QzEwIDYuMzEgOS4xNyA3LjQyIDggNy44M1YxMy4xMkM4Ljg4IDEyLjQ3IDEwLjE2IDEyIDEyIDEyQzE0LjY3IDEyIDE1LjU2IDEwLjY2IDE1Ljg1IDkuNzdDMTQuNzcgOS4zMiAxNCA4LjI1IDE0IDdDMTQgNS4zNCAxNS4zNCA0IDE3IDRTMjAgNS4zNCAyMCA3QzIwIDguMzQgMTkuMTIgOS41IDE3LjkxIDkuODZDMTcuNjUgMTEuMjkgMTYuNjggMTQgMTMgMTRNNyAxOEM2LjQ1IDE4IDYgMTguNDUgNiAxOVM2LjQ1IDIwIDcgMjAgOCAxOS41NSA4IDE5IDcuNTUgMTggNyAxOE03IDRDNi40NSA0IDYgNC40NSA2IDVTNi40NSA2IDcgNiA4IDUuNTUgOCA1IDcuNTUgNCA3IDRNMTcgNkMxNi40NSA2IDE2IDYuNDUgMTYgN1MxNi40NSA4IDE3IDggMTggNy41NSAxOCA3IDE3LjU1IDYgMTcgNk0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VCcmFuY2hSZWZyZXNoID0gXCJNMTMgMTRDOS42NCAxNCA4LjU0IDE1LjM1IDguMTggMTYuMjRDOS4yNSAxNi43IDEwIDE3Ljc2IDEwIDE5QzEwIDIwLjY2IDguNjYgMjIgNyAyMlM0IDIwLjY2IDQgMTlDNCAxNy42OSA0LjgzIDE2LjU4IDYgMTYuMTdWNy44M0M0LjgzIDcuNDIgNCA2LjMxIDQgNUM0IDMuMzQgNS4zNCAyIDcgMlMxMCAzLjM0IDEwIDVDMTAgNi4zMSA5LjE3IDcuNDIgOCA3LjgzVjEzLjEyQzguODggMTIuNDcgMTAuMTYgMTIgMTIgMTJDMTQuNjcgMTIgMTUuNTYgMTAuNjYgMTUuODUgOS43N0MxNC43NyA5LjMyIDE0IDguMjUgMTQgN0MxNCA1LjM0IDE1LjM0IDQgMTcgNFMyMCA1LjM0IDIwIDdDMjAgOC4zNCAxOS4xMiA5LjUgMTcuOTEgOS44NkMxNy42NSAxMS4yOSAxNi42OCAxNCAxMyAxNE03IDE4QzYuNDUgMTggNiAxOC40NSA2IDE5UzYuNDUgMjAgNyAyMCA4IDE5LjU1IDggMTkgNy41NSAxOCA3IDE4TTcgNEM2LjQ1IDQgNiA0LjQ1IDYgNVM2LjQ1IDYgNyA2IDggNS41NSA4IDUgNy41NSA0IDcgNE0xNyA2QzE2LjQ1IDYgMTYgNi40NSAxNiA3UzE2LjQ1IDggMTcgOCAxOCA3LjU1IDE4IDcgMTcuNTUgNiAxNyA2TTE4IDE0QzE5LjEgMTQgMjAuMSAxNC40IDIwLjggMTUuMkwyMiAxNFYxOEgxOEwxOS44IDE2LjJDMTkuMyAxNS44IDE4LjcgMTUuNSAxOCAxNS41QzE2LjYgMTUuNSAxNS41IDE2LjYgMTUuNSAxOFMxNi42IDIwLjUgMTggMjAuNUMxOC44IDIwLjUgMTkuNSAyMC4xIDIwIDE5LjVIMjEuN0MyMS4xIDIxIDE5LjcgMjIgMTggMjJDMTUuOCAyMiAxNCAyMC4yIDE0IDE4UzE1LjggMTQgMTggMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlQnJhbmNoUmVtb3ZlID0gXCJNMTMgMTRDOS42NCAxNCA4LjU0IDE1LjM1IDguMTggMTYuMjRDOS4yNSAxNi43IDEwIDE3Ljc2IDEwIDE5QzEwIDIwLjY2IDguNjYgMjIgNyAyMlM0IDIwLjY2IDQgMTlDNCAxNy42OSA0LjgzIDE2LjU4IDYgMTYuMTdWNy44M0M0LjgzIDcuNDIgNCA2LjMxIDQgNUM0IDMuMzQgNS4zNCAyIDcgMlMxMCAzLjM0IDEwIDVDMTAgNi4zMSA5LjE3IDcuNDIgOCA3LjgzVjEzLjEyQzguODggMTIuNDcgMTAuMTYgMTIgMTIgMTJDMTQuNjcgMTIgMTUuNTYgMTAuNjYgMTUuODUgOS43N0MxNC43NyA5LjMyIDE0IDguMjUgMTQgN0MxNCA1LjM0IDE1LjM0IDQgMTcgNFMyMCA1LjM0IDIwIDdDMjAgOC4zNCAxOS4xMiA5LjUgMTcuOTEgOS44NkMxNy42NSAxMS4yOSAxNi42OCAxNCAxMyAxNE03IDE4QzYuNDUgMTggNiAxOC40NSA2IDE5UzYuNDUgMjAgNyAyMCA4IDE5LjU1IDggMTkgNy41NSAxOCA3IDE4TTcgNEM2LjQ1IDQgNiA0LjQ1IDYgNVM2LjQ1IDYgNyA2IDggNS41NSA4IDUgNy41NSA0IDcgNE0xNyA2QzE2LjQ1IDYgMTYgNi40NSAxNiA3UzE2LjQ1IDggMTcgOCAxOCA3LjU1IDE4IDcgMTcuNTUgNiAxNyA2TTIwLjEyIDE0LjQ2TDE4IDE2LjU5TDE1Ljg4IDE0LjQ3TDE0LjQ3IDE1Ljg4TDE2LjU5IDE4TDE0LjQ3IDIwLjEyTDE1Ljg4IDIxLjU0TDE4IDE5LjQxTDIwLjEyIDIxLjU0TDIxLjU0IDIwLjEyTDE5LjQxIDE4TDIxLjU0IDE1Ljg4TDIwLjEyIDE0LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZUJyYW5jaFN5bmMgPSBcIk0xMyAxNEM5LjY0IDE0IDguNTQgMTUuMzUgOC4xOCAxNi4yNEM5LjI1IDE2LjcgMTAgMTcuNzYgMTAgMTlDMTAgMjAuNjYgOC42NiAyMiA3IDIyUzQgMjAuNjYgNCAxOUM0IDE3LjY5IDQuODMgMTYuNTggNiAxNi4xN1Y3LjgzQzQuODMgNy40MiA0IDYuMzEgNCA1QzQgMy4zNCA1LjM0IDIgNyAyUzEwIDMuMzQgMTAgNUMxMCA2LjMxIDkuMTcgNy40MiA4IDcuODNWMTMuMTJDOC44OCAxMi40NyAxMC4xNiAxMiAxMiAxMkMxNC42NyAxMiAxNS41NiAxMC42NiAxNS44NSA5Ljc3QzE0Ljc3IDkuMzIgMTQgOC4yNSAxNCA3QzE0IDUuMzQgMTUuMzQgNCAxNyA0UzIwIDUuMzQgMjAgN0MyMCA4LjM0IDE5LjEyIDkuNSAxNy45MSA5Ljg2QzE3LjY1IDExLjI5IDE2LjY4IDE0IDEzIDE0TTcgMThDNi40NSAxOCA2IDE4LjQ1IDYgMTlTNi40NSAyMCA3IDIwIDggMTkuNTUgOCAxOSA3LjU1IDE4IDcgMThNNyA0QzYuNDUgNCA2IDQuNDUgNiA1UzYuNDUgNiA3IDYgOCA1LjU1IDggNSA3LjU1IDQgNyA0TTE3IDZDMTYuNDUgNiAxNiA2LjQ1IDE2IDdTMTYuNDUgOCAxNyA4IDE4IDcuNTUgMTggNyAxNy41NSA2IDE3IDZNMTggMTNWMTQuNUMyMC4yMSAxNC41IDIyIDE2LjI5IDIyIDE4LjVDMjIgMTkuMzIgMjEuNzUgMjAuMDggMjEuMzMgMjAuNzFMMjAuMjQgMTkuNjJDMjAuNDEgMTkuMjggMjAuNSAxOC45IDIwLjUgMTguNUMyMC41IDE3LjEyIDE5LjM4IDE2IDE4IDE2VjE3LjVMMTUuNzUgMTUuMjVMMTUuNzIgMTUuMjJDMTUuNzggMTUuMTcgMTUuODUgMTUuMTMgMTggMTNNMTggMjRWMjIuNUMxNS43OSAyMi41IDE0IDIwLjcxIDE0IDE4LjVDMTQgMTcuNjggMTQuMjUgMTYuOTIgMTQuNjcgMTYuMjlMMTUuNzYgMTcuMzhDMTUuNTkgMTcuNzIgMTUuNSAxOC4xIDE1LjUgMTguNUMxNS41IDE5Ljg4IDE2LjYyIDIxIDE4IDIxVjE5LjVMMjAuMjUgMjEuNzVMMjAuMjggMjEuNzhDMjAuMjIgMjEuODMgMjAuMTUgMjEuODcgMTggMjRcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VDb21taXQgPSBcIk0xNywxMkMxNywxNC40MiAxNS4yOCwxNi40NCAxMywxNi45VjIxSDExVjE2LjlDOC43MiwxNi40NCA3LDE0LjQyIDcsMTJDNyw5LjU4IDguNzIsNy41NiAxMSw3LjFWM0gxM1Y3LjFDMTUuMjgsNy41NiAxNyw5LjU4IDE3LDEyTTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VDb21taXRFbmQgPSBcIk0xNywxMkE1LDUgMCAwLDEgMTIsMTdBNSw1IDAgMCwxIDcsMTJDNyw5LjU4IDguNzIsNy41NiAxMSw3LjFWM0gxM1Y3LjFDMTUuMjgsNy41NiAxNyw5LjU4IDE3LDEyTTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VDb21taXRFbmRMb2NhbCA9IFwiTTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlNMTEsNVYzSDEzVjVIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlQ29tbWl0TG9jYWwgPSBcIk0xMiw3QTUsNSAwIDAsMSAxNywxMkE1LDUgMCAwLDEgMTIsMTdBNSw1IDAgMCwxIDcsMTJBNSw1IDAgMCwxIDEyLDdNMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyQTMsMyAwIDAsMCAxMiw5TTExLDVWM0gxM1Y1SDExTTExLDIxVjE5SDEzVjIxSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZUNvbW1pdE5leHRMb2NhbCA9IFwiTTE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkM3LDkuNTggOC43Miw3LjU2IDExLDcuMVYzSDEzVjcuMUMxNS4yOCw3LjU2IDE3LDkuNTggMTcsMTJNMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyQTMsMyAwIDAsMCAxMiw5TTExLDIxVjE5SDEzVjIxSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZUNvbW1pdFN0YXJ0ID0gXCJNMTIsN0E1LDUgMCAwLDEgMTcsMTJDMTcsMTQuNDIgMTUuMjgsMTYuNDQgMTMsMTYuOVYyMUgxMVYxNi45QzguNzIsMTYuNDQgNywxNC40MiA3LDEyQTUsNSAwIDAsMSAxMiw3TTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VDb21taXRTdGFydE5leHRMb2NhbCA9IFwiTTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlNMTEsMjFWMTlIMTNWMjFIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlRm9yayA9IFwiTTYsMkEzLDMgMCAwLDEgOSw1QzksNi4yOCA4LjE5LDcuMzggNy4wNiw3LjgxQzcuMTUsOC4yNyA3LjM5LDguODMgOCw5LjYzQzksMTAuOTIgMTEsMTIuODMgMTIsMTQuMTdDMTMsMTIuODMgMTUsMTAuOTIgMTYsOS42M0MxNi42MSw4LjgzIDE2Ljg1LDguMjcgMTYuOTQsNy44MUMxNS44MSw3LjM4IDE1LDYuMjggMTUsNUEzLDMgMCAwLDEgMTgsMkEzLDMgMCAwLDEgMjEsNUMyMSw2LjMyIDIwLjE0LDcuNDUgMTguOTUsNy44NUMxOC44Nyw4LjM3IDE4LjY0LDkgMTgsOS44M0MxNywxMS4xNyAxNSwxMy4wOCAxNCwxNC4zOEMxMy4zOSwxNS4xNyAxMy4xNSwxNS43MyAxMy4wNiwxNi4xOUMxNC4xOSwxNi42MiAxNSwxNy43MiAxNSwxOUEzLDMgMCAwLDEgMTIsMjJBMywzIDAgMCwxIDksMTlDOSwxNy43MiA5LjgxLDE2LjYyIDEwLjk0LDE2LjE5QzEwLjg1LDE1LjczIDEwLjYxLDE1LjE3IDEwLDE0LjM4QzksMTMuMDggNywxMS4xNyA2LDkuODNDNS4zNiw5IDUuMTMsOC4zNyA1LjA1LDcuODVDMy44Niw3LjQ1IDMsNi4zMiAzLDVBMywzIDAgMCwxIDYsMk02LDRBMSwxIDAgMCwwIDUsNUExLDEgMCAwLDAgNiw2QTEsMSAwIDAsMCA3LDVBMSwxIDAgMCwwIDYsNE0xOCw0QTEsMSAwIDAsMCAxNyw1QTEsMSAwIDAsMCAxOCw2QTEsMSAwIDAsMCAxOSw1QTEsMSAwIDAsMCAxOCw0TTEyLDE4QTEsMSAwIDAsMCAxMSwxOUExLDEgMCAwLDAgMTIsMjBBMSwxIDAgMCwwIDEzLDE5QTEsMSAwIDAsMCAxMiwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VNZXJnZSA9IFwiTTcsM0EzLDMgMCAwLDEgMTAsNkMxMCw3LjI5IDkuMTksOC4zOSA4LjA0LDguODFDOC41OCwxMy44MSAxMy4wOCwxNC43NyAxNS4xOSwxNC45NkMxNS42MSwxMy44MSAxNi43MSwxMyAxOCwxM0EzLDMgMCAwLDEgMjEsMTZBMywzIDAgMCwxIDE4LDE5QzE2LjY5LDE5IDE1LjU3LDE4LjE2IDE1LjE2LDE3QzEwLjkxLDE2LjggOS40NCwxNS4xOSA4LDEzLjM5VjE1LjE3QzkuMTcsMTUuNTggMTAsMTYuNjkgMTAsMThBMywzIDAgMCwxIDcsMjFBMywzIDAgMCwxIDQsMThDNCwxNi42OSA0LjgzLDE1LjU4IDYsMTUuMTdWOC44M0M0LjgzLDguNDIgNCw3LjMxIDQsNkEzLDMgMCAwLDEgNywzTTcsNUExLDEgMCAwLDAgNiw2QTEsMSAwIDAsMCA3LDdBMSwxIDAgMCwwIDgsNkExLDEgMCAwLDAgNyw1TTcsMTdBMSwxIDAgMCwwIDYsMThBMSwxIDAgMCwwIDcsMTlBMSwxIDAgMCwwIDgsMThBMSwxIDAgMCwwIDcsMTdNMTgsMTVBMSwxIDAgMCwwIDE3LDE2QTEsMSAwIDAsMCAxOCwxN0ExLDEgMCAwLDAgMTksMTZBMSwxIDAgMCwwIDE4LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZVB1bGwgPSBcIk02LDNBMywzIDAgMCwxIDksNkM5LDcuMzEgOC4xNyw4LjQyIDcsOC44M1YxNS4xN0M4LjE3LDE1LjU4IDksMTYuNjkgOSwxOEEzLDMgMCAwLDEgNiwyMUEzLDMgMCAwLDEgMywxOEMzLDE2LjY5IDMuODMsMTUuNTggNSwxNS4xN1Y4LjgzQzMuODMsOC40MiAzLDcuMzEgMyw2QTMsMyAwIDAsMSA2LDNNNiw1QTEsMSAwIDAsMCA1LDZBMSwxIDAgMCwwIDYsN0ExLDEgMCAwLDAgNyw2QTEsMSAwIDAsMCA2LDVNNiwxN0ExLDEgMCAwLDAgNSwxOEExLDEgMCAwLDAgNiwxOUExLDEgMCAwLDAgNywxOEExLDEgMCAwLDAgNiwxN00yMSwxOEEzLDMgMCAwLDEgMTgsMjFBMywzIDAgMCwxIDE1LDE4QzE1LDE2LjY5IDE1LjgzLDE1LjU4IDE3LDE1LjE3VjdIMTVWMTAuMjVMMTAuNzUsNkwxNSwxLjc1VjVIMTdBMiwyIDAgMCwxIDE5LDdWMTUuMTdDMjAuMTcsMTUuNTggMjEsMTYuNjkgMjEsMThNMTgsMTdBMSwxIDAgMCwwIDE3LDE4QTEsMSAwIDAsMCAxOCwxOUExLDEgMCAwLDAgMTksMThBMSwxIDAgMCwwIDE4LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZVJlcG9zaXRvcnkgPSBcIk02LDJIMThBMiwyIDAgMCwxIDIwLDRWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyTTEyLjc1LDEzLjVDMTUuNSwxMy41IDE2LjI0LDExLjQ3IDE2LjQzLDEwLjRDMTcuMzQsMTAuMTEgMTgsOS4yNiAxOCw4LjI1QzE4LDcgMTcsNiAxNS43NSw2QzE0LjUsNiAxMy41LDcgMTMuNSw4LjI1QzEzLjUsOS4xOSAxNC4wNywxMCAxNC44OSwxMC4zM0MxNC42NywxMSAxNCwxMiAxMiwxMkMxMC42MiwxMiA5LjY2LDEyLjM1IDksMTIuODRWOC44N0M5Ljg3LDguNTYgMTAuNSw3LjczIDEwLjUsNi43NUMxMC41LDUuNSA5LjUsNC41IDguMjUsNC41QzcsNC41IDYsNS41IDYsNi43NUM2LDcuNzMgNi42Myw4LjU2IDcuNSw4Ljg3VjE1LjEzQzYuNjMsMTUuNDQgNiwxNi4yNyA2LDE3LjI1QzYsMTguNSA3LDE5LjUgOC4yNSwxOS41QzkuNSwxOS41IDEwLjUsMTguNSAxMC41LDE3LjI1QzEwLjUsMTYuMzIgOS45NCwxNS41IDkuMTMsMTUuMThDOS40MSwxNC41IDEwLjIzLDEzLjUgMTIuNzUsMTMuNU04LjI1LDE2LjVBMC43NSwwLjc1IDAgMCwxIDksMTcuMjVBMC43NSwwLjc1IDAgMCwxIDguMjUsMThBMC43NSwwLjc1IDAgMCwxIDcuNSwxNy4yNUEwLjc1LDAuNzUgMCAwLDEgOC4yNSwxNi41TTguMjUsNkEwLjc1LDAuNzUgMCAwLDEgOSw2Ljc1QTAuNzUsMC43NSAwIDAsMSA4LjI1LDcuNUEwLjc1LDAuNzUgMCAwLDEgNy41LDYuNzVBMC43NSwwLjc1IDAgMCwxIDguMjUsNk0xNS43NSw3LjVBMC43NSwwLjc1IDAgMCwxIDE2LjUsOC4yNUEwLjc1LDAuNzUgMCAwLDEgMTUuNzUsOUEwLjc1LDAuNzUgMCAwLDEgMTUsOC4yNUEwLjc1LDAuNzUgMCAwLDEgMTUuNzUsNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZVJlcG9zaXRvcnlNdWx0aXBsZSA9IFwiTTgsMEgyMEEyLDIgMCAwLDEgMjIsMlYxOEEyLDIgMCAwLDEgMjAsMjBIOEEyLDIgMCAwLDEgNiwxOFYyQTIsMiAwIDAsMSA4LDBNMTQuNzUsMTEuNUMxNy41LDExLjUgMTguMjQsOS40NyAxOC40Myw4LjRDMTkuMzQsOC4xMSAyMCw3LjI2IDIwLDYuMjVDMjAsNSAxOSw0IDE3Ljc1LDRDMTYuNSw0IDE1LjUsNSAxNS41LDYuMjVDMTUuNSw3LjE5IDE2LjA3LDggMTYuODksOC4zM0MxNi42Nyw5IDE2LDEwIDE0LDEwQzEyLjYyLDEwIDExLjY2LDEwLjM1IDExLDEwLjg0VjYuODdDMTEuODcsNi41NiAxMi41LDUuNzMgMTIuNSw0Ljc1QzEyLjUsMy41IDExLjUsMi41IDEwLjI1LDIuNUM5LDIuNSA4LDMuNSA4LDQuNzVDOCw1LjczIDguNjMsNi41NiA5LjUsNi44N1YxMy4xM0M4LjYzLDEzLjQ0IDgsMTQuMjcgOCwxNS4yNUM4LDE2LjUgOSwxNy41IDEwLjI1LDE3LjVDMTEuNSwxNy41IDEyLjUsMTYuNSAxMi41LDE1LjI1QzEyLjUsMTQuMzIgMTEuOTQsMTMuNSAxMS4xMywxMy4xOEMxMS40MSwxMi41IDEyLjIzLDExLjUgMTQuNzUsMTEuNU0xMC4yNSwxNC41QTAuNzUsMC43NSAwIDAsMSAxMSwxNS4yNUEwLjc1LDAuNzUgMCAwLDEgMTAuMjUsMTZBMC43NSwwLjc1IDAgMCwxIDkuNSwxNS4yNUEwLjc1LDAuNzUgMCAwLDEgMTAuMjUsMTQuNU0xMC4yNSw0QTAuNzUsMC43NSAwIDAsMSAxMSw0Ljc1QTAuNzUsMC43NSAwIDAsMSAxMC4yNSw1LjVBMC43NSwwLjc1IDAgMCwxIDkuNSw0Ljc1QTAuNzUsMC43NSAwIDAsMSAxMC4yNSw0TTE3Ljc1LDUuNUEwLjc1LDAuNzUgMCAwLDEgMTguNSw2LjI1QTAuNzUsMC43NSAwIDAsMSAxNy43NSw3QTAuNzUsMC43NSAwIDAsMSAxNyw2LjI1QTAuNzUsMC43NSAwIDAsMSAxNy43NSw1LjVNMTYsMjJWMjRINEEyLDIgMCAwLDEgMiwyMlY2SDRWMjJIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU295U2F1Y2UgPSBcIk0xMy45LDcuNUMxMy45LDYuOCAxNC4xLDYuMyAxNC4yLDZIMTQuOEwxNS43LDMuNUgxNi41VjJINy41VjMuNUg4LjNMOS4yLDZIOS44QzEwLDYuMyAxMC4xLDYuOCAxMC4xLDcuNUMxMC4xLDguOCA2LDEzLjcgNiwxNy42VjE5LjZDNiwyMSA4LjcsMjEuOSAxMiwyMS45QzE1LjMsMjEuOSAxOCwyMSAxOCwxOS42VjE3LjZDMTgsMTMuNyAxMy45LDguOCAxMy45LDcuNU0xMiwxNUEyLDIgMCAwLDEgMTAsMTNBMiwyIDAgMCwxIDEyLDExQTIsMiAwIDAsMSAxNCwxM0EyLDIgMCAwLDEgMTIsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU295U2F1Y2VPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w4LjYgMTAuNUM3LjUgMTIuNiA2IDE1LjMgNiAxNy42VjE5LjZDNiAyMSA4LjcgMjEuOSAxMiAyMS45QzE1LjEgMjEuOSAxNy43IDIxLjEgMTggMTkuOUwyMC45IDIyLjhMMjIuMSAyMS41TTEyIDE1QzEwLjkgMTUgMTAgMTQuMSAxMCAxM0MxMCAxMi43IDEwLjEgMTIuNCAxMC4yIDEyLjFMMTIuOSAxNC44QzEyLjYgMTQuOSAxMi4zIDE1IDEyIDE1TTguMyAzLjVINy41VjJIMTYuNVYzLjVIMTUuN0wxNC44IDZIMTQuMkMxNC4xIDYuMyAxMy45IDYuOCAxMy45IDcuNUMxMy45IDguNCAxNS45IDExIDE3LjEgMTMuOUwxMC4xIDYuOUMxMCA2LjUgOS45IDYuMiA5LjggNkg5LjJMOC4zIDMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGEgPSBcIk0xNS41LDkuNjNDMTUuMzEsNi44NCAxNC4xOCw0LjEyIDEyLjA2LDJDOS45Miw0LjE0IDguNzQsNi44NiA4LjUsOS42M0M5Ljc5LDEwLjMxIDEwLjk3LDExLjE5IDEyLDEyLjI2QzEzLjAzLDExLjIgMTQuMjEsMTAuMzIgMTUuNSw5LjYzTTEyLDE1LjQ1QzkuODUsMTIuMTcgNi4xOCwxMCAyLDEwQzIsMjAgMTEuMzIsMjEuODkgMTIsMjJDMTIuNjgsMjEuODggMjIsMjAgMjIsMTBDMTcuODIsMTAgMTQuMTUsMTIuMTcgMTIsMTUuNDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BhT3V0bGluZSA9IFwiTTE1LjUsOS42M0MxNC4yMSwxMC4zMiAxMy4wMywxMS4yIDEyLDEyLjI2QzEwLjk3LDExLjE5IDkuNzksMTAuMzEgOC41LDkuNjNDOC43NCw2Ljg2IDkuOTIsNC4xNCAxMi4wNiwyQzE0LjE4LDQuMTIgMTUuMzEsNi44NCAxNS41LDkuNjNNMTIsMTUuNDVDMTQuMTUsMTIuMTcgMTcuODIsMTAgMjIsMTBDMjIsMjAgMTIuNjgsMjEuODggMTIsMjJDMTEuMzIsMjEuODkgMiwyMCAyLDEwQzYuMTgsMTAgOS44NSwxMi4xNyAxMiwxNS40NU0xMi4wNSw1LjE5QzExLjM5LDYuMjMgMTAuOTMsNy4zOCAxMC42OCw4LjU4TDEyLDkuNTVMMTMuMzUsOC41N0MxMy4xMiw3LjM3IDEyLjY4LDYuMjIgMTIuMDUsNS4xOU0xMiwxOS45N0MxMiwxOS45NyAxOCwxOSAxOS43NCwxMi4yNUMxNCwxNCAxMiwxOS4xIDEyLDE5LjFDMTIsMTkuMSA5LDEzIDQuMjYsMTIuMjZDNiwxOSAxMiwxOS45NyAxMiwxOS45N1pcIjtcclxuZXhwb3J0IHZhciBtZGlTcGFjZUludmFkZXJzID0gXCJNNyw2SDVWNEg3VjZNMTcsNkgxOVY0SDE3VjZNMjMsMTJWMThIMjFWMTRIMTlWMThIMTdWMTZIN1YxOEg1VjE0SDNWMThIMVYxMkgzVjEwSDVWOEg3VjZIOVY4SDE1VjZIMTdWOEgxOVYxMEgyMVYxMkgyM00xNSwxMFYxMkgxN1YxMEgxNU03LDEySDlWMTBIN1YxMk0xMSwxOEg3VjIwSDExVjE4TTE3LDE4SDEzVjIwSDE3VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwYWNlU3RhdGlvbiA9IFwiTTE1LjUgMTlWMjFIMTMuNzNDMTMuMzkgMjEuNiAxMi43NCAyMiAxMiAyMkMxMS4yNiAyMiAxMC42MSAyMS42IDEwLjI3IDIxSDguNVYxOUgxMC4yN0MxMC40NCAxOC43IDEwLjcgMTguNDQgMTEgMTguMjdWMTdIMTBDOS40NSAxNyA5IDE2LjU1IDkgMTZWMTNINlYxN0M2IDE3LjU1IDUuNTUgMTggNSAxOEgzQzIuNDUgMTggMiAxNy41NSAyIDE3VjhDMiA3LjQ1IDIuNDUgNyAzIDdINUM1LjU1IDcgNiA3LjQ1IDYgOFYxMUg5VjhDOSA3LjQ1IDkuNDUgNyAxMCA3SDExVjZIMTBDOS40NSA2IDkgNS41NSA5IDVWNEM5IDMuNDUgOS40NSAzIDEwIDNIMTRDMTQuNTUgMyAxNSAzLjQ1IDE1IDRWNUMxNSA1LjU1IDE0LjU1IDYgMTQgNkgxM1Y3SDE0QzE0LjU1IDcgMTUgNy40NSAxNSA4VjExSDE4VjhDMTggNy40NSAxOC40NSA3IDE5IDdIMjFDMjEuNTUgNyAyMiA3LjQ1IDIyIDhWMTdDMjIgMTcuNTUgMjEuNTUgMTggMjEgMThIMTlDMTguNDUgMTggMTggMTcuNTUgMTggMTdWMTNIMTVWMTZDMTUgMTYuNTUgMTQuNTUgMTcgMTQgMTdIMTNWMTguMjdDMTMuMyAxOC40NCAxMy41NiAxOC43IDEzLjczIDE5SDE1LjVNMyAxNlYxN0g1VjE2SDNNMyAxNFYxNUg1VjE0SDNNMyAxMlYxM0g1VjEySDNNMyAxMFYxMUg1VjEwSDNNMyA4VjlINVY4SDNNMTkgMTZWMTdIMjFWMTZIMTlNMTkgMTRWMTVIMjFWMTRIMTlNMTkgMTJWMTNIMjFWMTJIMTlNMTkgMTBWMTFIMjFWMTBIMTlNMTkgOFY5SDIxVjhIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BhZGUgPSBcIk0xNS43MSwxLjIyTDEyLjg4LDQuMDVDMTIuMSw0LjgzIDEyLjEsNi4wOSAxMi44OCw2Ljg3TDE0LjMsOC4yOUwxMC4wNiwxMi41M0w3LjU4LDEwLjA2TDEuMjIsMTYuNDJMNy41OCwyMi43OEwxMy45NCwxNi40MkwxMS40NywxMy45NEwxNS43MSw5LjdMMTcuMTMsMTEuMTJDMTcuOTEsMTEuOSAxOS4xNywxMS45IDE5Ljk1LDExLjEyTDIyLjc4LDguMjlMMTUuNzEsMS4yMk0xNS43MSw0LjA1TDE5Ljk1LDguMjlMMTguNTQsOS43TDE0LjMsNS40NkwxNS43MSw0LjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwYXJrbGVzID0gXCJNMTAuNiA5LjZMOSAxNUw3LjQgOS42TDIgOEw3LjQgNi40TDkgMUwxMC42IDYuNEwxNiA4TDEwLjYgOS42TTE3IDE0LjJMMjEgMTJMMTguOCAxNkwyMSAyMEwxNyAxNy44TDEzIDIwTDE1LjIgMTZMMTMgMTJMMTcgMTQuMk0xMCAxNkw4LjMgMTlMMTAgMjJMNyAyMC4zTDQgMjJMNS43IDE5TDQgMTZMNyAxNy43TDEwIDE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BlYWtlciA9IFwiTTEyLDEyQTMsMyAwIDAsMCA5LDE1QTMsMyAwIDAsMCAxMiwxOEEzLDMgMCAwLDAgMTUsMTVBMywzIDAgMCwwIDEyLDEyTTEyLDIwQTUsNSAwIDAsMSA3LDE1QTUsNSAwIDAsMSAxMiwxMEE1LDUgMCAwLDEgMTcsMTVBNSw1IDAgMCwxIDEyLDIwTTEyLDRBMiwyIDAgMCwxIDE0LDZBMiwyIDAgMCwxIDEyLDhDMTAuODksOCAxMCw3LjEgMTAsNkMxMCw0Ljg5IDEwLjg5LDQgMTIsNE0xNywySDdDNS44OSwyIDUsMi44OSA1LDRWMjBBMiwyIDAgMCwwIDcsMjJIMTdBMiwyIDAgMCwwIDE5LDIwVjRDMTksMi44OSAxOC4xLDIgMTcsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGVha2VyQmx1ZXRvb3RoID0gXCJNNCwzQTIsMiAwIDAsMCAyLDVWMTlBMiwyIDAgMCwwIDQsMjFIMTJBMiwyIDAgMCwwIDE0LDE5VjVBMiwyIDAgMCwwIDEyLDNINE04LDVBMiwyIDAgMCwxIDEwLDdBMiwyIDAgMCwxIDgsOUEyLDIgMCAwLDEgNiw3QTIsMiAwIDAsMSA4LDVNMTksN1YxMC43OUwxNi43MSw4LjVMMTYsOS4yMUwxOC43OSwxMkwxNiwxNC43OUwxNi43MSwxNS41TDE5LDEzLjIxVjE3SDE5LjVMMjIuMzUsMTQuMTRMMjAuMjEsMTJMMjIuMzUsOS44NUwxOS41LDdIMTlNMjAsOC45MUwyMC45NCw5Ljg1TDIwLDEwLjc5VjguOTFNOCwxMUE0LDQgMCAwLDEgMTIsMTVBNCw0IDAgMCwxIDgsMTlBNCw0IDAgMCwxIDQsMTVBNCw0IDAgMCwxIDgsMTFNOCwxM0EyLDIgMCAwLDAgNiwxNUEyLDIgMCAwLDAgOCwxN0EyLDIgMCAwLDAgMTAsMTVBMiwyIDAgMCwwIDgsMTNNMjAsMTMuMjFMMjAuOTQsMTQuMTRMMjAsMTUuMDhWMTMuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BlYWtlck11bHRpcGxlID0gXCJNMTQsMTBBMywzIDAgMCwwIDExLDEzQTMsMyAwIDAsMCAxNCwxNkEzLDMgMCAwLDAgMTcsMTNBMywzIDAgMCwwIDE0LDEwTTE0LDE4QTUsNSAwIDAsMSA5LDEzQTUsNSAwIDAsMSAxNCw4QTUsNSAwIDAsMSAxOSwxM0E1LDUgMCAwLDEgMTQsMThNMTQsMkEyLDIgMCAwLDEgMTYsNEEyLDIgMCAwLDEgMTQsNkEyLDIgMCAwLDEgMTIsNEEyLDIgMCAwLDEgMTQsMk0xOSwwSDlBMiwyIDAgMCwwIDcsMlYxOEEyLDIgMCAwLDAgOSwyMEgxOUEyLDIgMCAwLDAgMjEsMThWMkEyLDIgMCAwLDAgMTksME01LDIySDE3VjI0SDVBMiwyIDAgMCwxIDMsMjJWNEg1XCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BlYWtlck9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjEsMjEuNzJMMTkuNzMsMjNMMTguMjcsMjEuNTRDMTcuOTMsMjEuODMgMTcuNSwyMiAxNywyMkg3QzUuODksMjIgNSwyMS4xIDUsMjBWOC4yN0wyLDUuMjdNMTIsMThBMywzIDAgMCwxIDksMTVDOSwxNC4yNCA5LjI4LDEzLjU0IDkuNzUsMTNMOC4zMywxMS42QzcuNSwxMi41IDcsMTMuNjkgNywxNUE1LDUgMCAwLDAgMTIsMjBDMTMuMzEsMjAgMTQuNSwxOS41IDE1LjQsMTguNjdMMTQsMTcuMjVDMTMuNDUsMTcuNzIgMTIuNzYsMTggMTIsMThNMTcsMTVBNSw1IDAgMCwwIDEyLDEwSDExLjgyTDUuMTIsMy4zQzUuNDEsMi41NCA2LjE0LDIgNywySDE3QTIsMiAwIDAsMSAxOSw0VjE3LjE4TDE3LDE1LjE3VjE1TTEyLDRDMTAuODksNCAxMCw0Ljg5IDEwLDZBMiwyIDAgMCwwIDEyLDhBMiwyIDAgMCwwIDE0LDZDMTQsNC44OSAxMy4xLDQgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGVha2VyV2lyZWxlc3MgPSBcIk0yMC4wNywxOS4wN0wxOC42NiwxNy42NkMyMC4xMSwxNi4yMiAyMSwxNC4yMSAyMSwxMkMyMSw5Ljc4IDIwLjExLDcuNzggMTguNjYsNi4zNEwyMC4wNyw0LjkzQzIxLjg4LDYuNzQgMjMsOS4yNCAyMywxMkMyMywxNC43NiAyMS44OCwxNy4yNiAyMC4wNywxOS4wN00xNy4yNCwxNi4yNEwxNS44MywxNC44M0MxNi41NSwxNC4xMSAxNywxMy4xMSAxNywxMkMxNywxMC44OSAxNi41NSw5Ljg5IDE1LjgzLDkuMTdMMTcuMjQsNy43NkMxOC4zMyw4Ljg1IDE5LDEwLjM1IDE5LDEyQzE5LDEzLjY1IDE4LjMzLDE1LjE1IDE3LjI0LDE2LjI0TTQsM0gxMkEyLDIgMCAwLDEgMTQsNVYxOUEyLDIgMCAwLDEgMTIsMjFINEEyLDIgMCAwLDEgMiwxOVY1QTIsMiAwIDAsMSA0LDNNOCw1QTIsMiAwIDAsMCA2LDdBMiwyIDAgMCwwIDgsOUEyLDIgMCAwLDAgMTAsN0EyLDIgMCAwLDAgOCw1TTgsMTFBNCw0IDAgMCwwIDQsMTVBNCw0IDAgMCwwIDgsMTlBNCw0IDAgMCwwIDEyLDE1QTQsNCAwIDAsMCA4LDExTTgsMTNBMiwyIDAgMCwxIDEwLDE1QTIsMiAwIDAsMSA4LDE3QTIsMiAwIDAsMSA2LDE1QTIsMiAwIDAsMSA4LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwZWVkb21ldGVyID0gXCJNMTIsMTZBMywzIDAgMCwxIDksMTNDOSwxMS44OCA5LjYxLDEwLjkgMTAuNSwxMC4zOUwyMC4yMSw0Ljc3TDE0LjY4LDE0LjM1QzE0LjE4LDE1LjMzIDEzLjE3LDE2IDEyLDE2TTEyLDNDMTMuODEsMyAxNS41LDMuNSAxNi45Nyw0LjMyTDE0Ljg3LDUuNTNDMTQsNS4xOSAxMyw1IDEyLDVBOCw4IDAgMCwwIDQsMTNDNCwxNS4yMSA0Ljg5LDE3LjIxIDYuMzQsMTguNjVINi4zNUM2Ljc0LDE5LjA0IDYuNzQsMTkuNjcgNi4zNSwyMC4wNkM1Ljk2LDIwLjQ1IDUuMzIsMjAuNDUgNC45MywyMC4wN1YyMC4wN0MzLjEyLDE4LjI2IDIsMTUuNzYgMiwxM0ExMCwxMCAwIDAsMSAxMiwzTTIyLDEzQzIyLDE1Ljc2IDIwLjg4LDE4LjI2IDE5LjA3LDIwLjA3VjIwLjA3QzE4LjY4LDIwLjQ1IDE4LjA1LDIwLjQ1IDE3LjY2LDIwLjA2QzE3LjI3LDE5LjY3IDE3LjI3LDE5LjA0IDE3LjY2LDE4LjY1VjE4LjY1QzE5LjExLDE3LjIgMjAsMTUuMjEgMjAsMTNDMjAsMTIgMTkuODEsMTEgMTkuNDYsMTAuMUwyMC42Nyw4QzIxLjUsOS41IDIyLDExLjE4IDIyLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwZWVkb21ldGVyTWVkaXVtID0gXCJNMTIgMS4zOEw5LjE0IDEyLjA2QzguOCAxMy4xIDkuMDQgMTQuMjkgOS44NiAxNS4xMkMxMS4wNCAxNi4yOSAxMi45NCAxNi4yOSAxNC4xMSAxNS4xMkMxNC45IDE0LjMzIDE1LjE2IDEzLjIgMTQuODkgMTIuMjFNMTQuNiAzLjM1TDE1LjIyIDUuNjhDMTguMDQgNi45MiAyMCA5LjczIDIwIDEzQzIwIDE1LjIxIDE5LjExIDE3LjIxIDE3LjY2IDE4LjY1SDE3LjY1QzE3LjI2IDE5LjA0IDE3LjI2IDE5LjY3IDE3LjY1IDIwLjA2QzE4LjA0IDIwLjQ1IDE4LjY4IDIwLjQ1IDE5LjA3IDIwLjA3QzIwLjg4IDE4LjI2IDIyIDE1Ljc2IDIyIDEzQzIyIDguMzggMTguODYgNC41IDE0LjYgMy4zNU05LjQgMy4zNkM1LjE1IDQuNSAyIDguNCAyIDEzQzIgMTUuNzYgMy4xMiAxOC4yNiA0LjkzIDIwLjA3QzUuMzIgMjAuNDUgNS45NSAyMC40NSA2LjM0IDIwLjA2QzYuNzMgMTkuNjcgNi43MyAxOS4wNCA2LjM0IDE4LjY1QzQuODkgMTcuMiA0IDE1LjIxIDQgMTNDNCA5LjY1IDUuOTQgNi44NiA4Ljc5IDUuNjVcIjtcclxuZXhwb3J0IHZhciBtZGlTcGVlZG9tZXRlclNsb3cgPSBcIk0xMiAxNkMxMy42NiAxNiAxNSAxNC42NiAxNSAxM0MxNSAxMS44OCAxNC4zOSAxMC45IDEzLjUgMTAuMzlMMy43OSA0Ljc3TDkuMzIgMTQuMzVDOS44MiAxNS4zMyAxMC44MyAxNiAxMiAxNk0xMiAzQzEwLjE5IDMgOC41IDMuNSA3LjAzIDQuMzJMOS4xMyA1LjUzQzEwIDUuMTkgMTEgNSAxMiA1QzE2LjQyIDUgMjAgOC41OCAyMCAxM0MyMCAxNS4yMSAxOS4xMSAxNy4yMSAxNy42NiAxOC42NUgxNy42NUMxNy4yNiAxOS4wNCAxNy4yNiAxOS42NyAxNy42NSAyMC4wNkMxOC4wNCAyMC40NSAxOC42OCAyMC40NSAxOS4wNyAyMC4wN0MyMC44OCAxOC4yNiAyMiAxNS43NiAyMiAxM0MyMiA3LjUgMTcuNSAzIDEyIDNNMiAxM0MyIDE1Ljc2IDMuMTIgMTguMjYgNC45MyAyMC4wN0M1LjMyIDIwLjQ1IDUuOTUgMjAuNDUgNi4zNCAyMC4wNkM2LjczIDE5LjY3IDYuNzMgMTkuMDQgNi4zNCAxOC42NUM0Ljg5IDE3LjIgNCAxNS4yMSA0IDEzQzQgMTIgNC4xOSAxMSA0LjU0IDEwLjFMMy4zMyA4QzIuNSA5LjUgMiAxMS4xOCAyIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwZWxsY2hlY2sgPSBcIk0yMS41OSwxMS41OUwxMy41LDE5LjY4TDkuODMsMTZMOC40MiwxNy40MUwxMy41LDIyLjVMMjMsMTNNNi40MywxMUw4LjUsNS41TDEwLjU3LDExTTEyLjQ1LDE2SDE0LjU0TDkuNDMsM0g3LjU3TDIuNDYsMTZINC41NUw1LjY3LDEzSDExLjMxTDEyLjQ1LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwaWRlciA9IFwiTTIxLjI5IDE2LjcxTDIyLjcxIDE1LjI5TDE5LjUgMTIuMTFMMTYuNSAxMS4yNkwxOC40MSAxMUwyMi42IDcuOEwyMS40IDYuMkwxNy41OSA5LjA1TDE0LjkxIDkuNUwxOC4xMSA2LjMxTDE3IDEuNzZMMTUgMi4yNEwxNS44NiA1LjY5TDE0Ljc2IDYuODNBMyAzIDAgMCAwIDkuMjQgNi44M0w4LjExIDUuNjlMOSAyLjI0TDcgMS43Nkw1Ljg5IDYuMzFMOS4wOSA5LjVMNi40IDkuMDVMMi42IDYuMkwxLjQgNy44TDUuNiAxMUw3LjQ2IDExLjMxTDQuNDYgMTIuMTZMMS4yOSAxNS4yOUwyLjcxIDE2LjcxTDUuNSAxMy44OUw3Ljg3IDEzLjIyTDQgMTYuNTRWMjJINlYxNy40Nkw3LjU2IDE2LjEyQTQuNSA0LjUgMCAwIDAgMTYuNDQgMTYuMTJMMTggMTcuNDZWMjJIMjBWMTYuNTRMMTYuMTMgMTMuMjJMMTguNSAxMy44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGlkZXJUaHJlYWQgPSBcIk0xMyAyVjcuMDhBNS40NyA1LjQ3IDAgMCAwIDEyIDdBNS40NyA1LjQ3IDAgMCAwIDExIDcuMDhWMk0xNi45IDE1QTUgNSAwIDAgMSAxNi43MyAxNS41NUwyMCAxNy40MlYyMkgxOFYxOC41OEwxNS43NCAxNy4yOUE0Ljk0IDQuOTQgMCAwIDEgOC4yNiAxNy4yOUw2IDE4LjU4VjIySDRWMTcuNDJMNy4yNyAxNS41NUE1IDUgMCAwIDEgNy4xIDE1SDUuM0wyLjU1IDE2LjgzTDEuNDUgMTUuMTdMNC43IDEzSDcuMUE1IDUgMCAwIDEgNy4zNyAxMi4xMkw1LjgxIDExLjEyTDIuMjQgMTJMMS43NiAxMEw2LjE5IDguOTJMOC41IDEwLjQ1QTUgNSAwIDAgMSAxNS41IDEwLjQ1TDE3Ljc3IDguOTJMMjIuMjQgMTBMMjEuNzYgMTJMMTguMTkgMTEuMTFMMTYuNjMgMTIuMTFBNSA1IDAgMCAxIDE2LjkgMTNIMTkuM0wyMi41NSAxNS4xNkwyMS40NSAxNi44MkwxOC43IDE1TTExIDE0QTEgMSAwIDEgMCAxMCAxNUExIDEgMCAwIDAgMTEgMTRNMTUgMTRBMSAxIDAgMSAwIDE0IDE1QTEgMSAwIDAgMCAxNSAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGlkZXJXZWIgPSBcIk0xMy42MiwxMy4yOEwxNS4yNiwxNS41NEMxNS4yOSwxNSAxNS4zOCwxNC40NyAxNS41NiwxMy45M0MxNS43NCwxMy4zNyAxNiwxMi44NiAxNi4zLDEyLjQxTDEzLjYyLDEzLjI4TTE3Ljc3LDE5QzE3Ljc1LDE3LjY4IDE3Ljk1LDE2LjI3IDE4LjQxLDE0Ljg1QzE4Ljg4LDEzLjQyIDE5LjU2LDEyLjE0IDIwLjM2LDExLjA5TDE4LjMyLDExLjc1QzE3LjU0LDEyLjI2IDE2Ljg3LDEzLjE0IDE2LjUsMTQuMjNDMTYuMTcsMTUuMjkgMTYuMTgsMTYuMzYgMTYuNSwxNy4yMkwxNy43NywxOU0xOS4yNSwyMUMxOC43NSwyMS40NiAxOC4yMSwyMS44NiAxNy42MywyMi4yTDE3LjMxLDIxLjc2QzE1LjksMjEgMTQuMDQsMjAuNSAxMiwyMC41QzkuOTYsMjAuNSA4LjEsMjEgNi42OSwyMS43Nkw2LjM3LDIyLjJDNS43OSwyMS44NiA1LjI1LDIxLjQ2IDQuNzUsMjFMNSwyMC42OUM1LjMzLDE5LjA4IDUuMjIsMTcuMTIgNC41OCwxNS4xNEMzLjk0LDEzLjE5IDIuOSwxMS41NiAxLjcxLDEwLjQ2TDEuMjcsMTAuMzJDMS40Miw5LjY2IDEuNjMsOSAxLjg5LDguNDFMMi4yOSw4LjU0QzMuOTIsOC4zNyA1Ljc0LDcuNjUgNy40Myw2LjQzQzkuMDksNS4yMiAxMC4zMiwzLjczIDExLDIuMjZWMS43OUwxMiwxLjc1TDEzLDEuNzlWMi4yMUMxMy42NywzLjcxIDE0LjkxLDUuMjMgMTYuNiw2LjQ1QzE4LjI2LDcuNjYgMjAuMDYsOC4zNyAyMS42Nyw4LjU2TDIyLjExLDguNDFDMjIuMzcsOSAyMi41OCw5LjY2IDIyLjczLDEwLjMyTDIyLjIzLDEwLjVDMjEuMDQsMTEuNTggMjAsMTMuMjEgMTkuMzcsMTUuMTZDMTguNzQsMTcuMDkgMTguNjIsMTkgMTguOTIsMjAuNTdMMTkuMjUsMjFNMTEsMTEuMzdWOC41QzEwLjY2LDguOTIgMTAuMjYsOS4zMiA5Ljc4LDkuNjdDOS4yOSwxMCA4Ljc3LDEwLjI5IDguMjUsMTAuNUwxMSwxMS4zN00xMSw0LjIyQzEwLjI1LDUuMzEgOS4yNCw2LjM1IDgsNy4yNEM2Ljc4LDguMTQgNS40Niw4Ljc4IDQuMTgsOS4xNkw2LjE1LDkuOEM3LjExLDkuODggOC4yMiw5LjU2IDkuMTksOC44NkMxMC4xMyw4LjE4IDEwLjc2LDcuMjcgMTEsNi4zNlY0LjIyTTEzLDExLjM3TDE1Ljc0LDEwLjVDMTUuMjMsMTAuMyAxNC43MiwxMC4wMyAxNC4yNSw5LjY5QzEzLjc2LDkuMzMgMTMuMzQsOC45MiAxMyw4LjVWMTEuMzdNMTkuOCw5LjE2QzE4LjUzLDguNzggMTcuMjMsOC4xNSAxNiw3LjI2QzE0Ljc3LDYuMzYgMTMuNzYsNS4zMSAxMyw0LjJWNi4yN0MxMy4yMiw3LjIxIDEzLjg2LDguMTcgMTQuODQsOC44OEMxNS43Nyw5LjU2IDE2LjgzLDkuODcgMTcuNzcsOS44MkwxOS44LDkuMTZNMTAuMzgsMTMuMjhMNy42NCwxMi4zOUM3Ljk1LDEyLjg0IDguMiwxMy4zNSA4LjM4LDEzLjkxQzguNTcsMTQuNSA4LjY2LDE1LjA2IDguNjgsMTUuNjJMMTAuMzgsMTMuMjhNMy41OCwxMS4wN0M0LjM4LDEyLjEyIDUuMDYsMTMuNCA1LjUzLDE0LjgzQzYsMTYuMjkgNi4yLDE3Ljc0IDYuMTcsMTkuMDhMNy4zOCwxNy40MUM3Ljc2LDE2LjUgNy44LDE1LjM2IDcuNDMsMTQuMjJDNy4wNywxMy4xMiA2LjQsMTIuMjQgNS42MSwxMS43M0wzLjU4LDExLjA3TTEyLDE0LjQ1TDEwLjM1LDE2LjcyQzEwLjg3LDE2LjU4IDExLjQyLDE2LjUgMTIsMTYuNUMxMi41OCwxNi41IDEzLjEzLDE2LjU4IDEzLjY1LDE2LjcyTDEyLDE0LjQ1TTcuODQsMjAuMThDOS4wOCwxOS43NSAxMC41LDE5LjUgMTIsMTkuNUMxMy41LDE5LjUgMTQuOTIsMTkuNzUgMTYuMTYsMjAuMThMMTQuODgsMTguNDJDMTQuMTYsMTcuODUgMTMuMTMsMTcuNSAxMiwxNy41QzEwLjg3LDE3LjUgOS44NCwxNy44NSA5LjEyLDE4LjQyTDcuODQsMjAuMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Bpcml0TGV2ZWwgPSBcIk0yMiA4SDJWMTZIMjJWOE0xOCAxNFYxMEgyMFYxNEgxOE0xMSAxMkgxM0MxNC4xIDEyIDE1IDExLjExIDE1IDEwSDE3VjE0SDdWMTBIOUM5IDExLjExIDkuOSAxMiAxMSAxMk00IDE0VjEwSDZWMTRINFpcIjtcclxuZXhwb3J0IHZhciBtZGlTcG9vblN1Z2FyID0gXCJNNiAxM0gzVjEwSDZWMTNNMTAgMTBIN1YxM0gxMFYxME04IDZINVY5SDhWNk0xOCAxMkMxNC4yNSAxMiAxMi4yOCAxMy4yNSAxMSAxNEgyQzIgMTYuMjEgMy43OSAxOCA2IDE4SDdDOCAxOCA4LjkyIDE3LjYzIDkuNjIgMTdDMTEuMDYgMTUuNzggMTIuNjggMTQuNzQgMTQuNTUgMTQuMzZDMTUuNjEgMTQuMTUgMTYuNzggMTQgMTggMTRIMjJWMTJIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BvdGlmeSA9IFwiTTE3LjksMTAuOUMxNC43LDkgOS4zNSw4LjggNi4zLDkuNzVDNS44LDkuOSA1LjMsOS42IDUuMTUsOS4xNUM1LDguNjUgNS4zLDguMTUgNS43NSw4QzkuMyw2Ljk1IDE1LjE1LDcuMTUgMTguODUsOS4zNUMxOS4zLDkuNiAxOS40NSwxMC4yIDE5LjIsMTAuNjVDMTguOTUsMTEgMTguMzUsMTEuMTUgMTcuOSwxMC45TTE3LjgsMTMuN0MxNy41NSwxNC4wNSAxNy4xLDE0LjIgMTYuNzUsMTMuOTVDMTQuMDUsMTIuMyA5Ljk1LDExLjggNi44LDEyLjhDNi40LDEyLjkgNS45NSwxMi43IDUuODUsMTIuM0M1Ljc1LDExLjkgNS45NSwxMS40NSA2LjM1LDExLjM1QzEwLDEwLjI1IDE0LjUsMTAuOCAxNy42LDEyLjdDMTcuOSwxMi44NSAxOC4wNSwxMy4zNSAxNy44LDEzLjdNMTYuNiwxNi40NUMxNi40LDE2Ljc1IDE2LjA1LDE2Ljg1IDE1Ljc1LDE2LjY1QzEzLjQsMTUuMiAxMC40NSwxNC45IDYuOTUsMTUuN0M2LjYsMTUuOCA2LjMsMTUuNTUgNi4yLDE1LjI1QzYuMSwxNC45IDYuMzUsMTQuNiA2LjY1LDE0LjVDMTAuNDUsMTMuNjUgMTMuNzUsMTQgMTYuMzUsMTUuNkMxNi43LDE1Ljc1IDE2Ljc1LDE2LjE1IDE2LjYsMTYuNDVNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BvdGxpZ2h0ID0gXCJNMiw2TDcuMDksOC41NUM2LjQsOS41IDYsMTAuNzEgNiwxMkM2LDEzLjI5IDYuNCwxNC41IDcuMDksMTUuNDVMMiwxOFY2TTYsM0gxOEwxNS40NSw3LjA5QzE0LjUsNi40IDEzLjI5LDYgMTIsNkMxMC43MSw2IDkuNSw2LjQgOC41NSw3LjA5TDYsM00yMiw2VjE4TDE2LjkxLDE1LjQ1QzE3LjYsMTQuNSAxOCwxMy4yOSAxOCwxMkMxOCwxMC43MSAxNy42LDkuNSAxNi45MSw4LjU1TDIyLDZNMTgsMjFINkw4LjU1LDE2LjkxQzkuNSwxNy42IDEwLjcxLDE4IDEyLDE4QzEzLjI5LDE4IDE0LjUsMTcuNiAxNS40NSwxNi45MUwxOCwyMU0xMiw4QTQsNCAwIDAsMSAxNiwxMkE0LDQgMCAwLDEgMTIsMTZBNCw0IDAgMCwxIDgsMTJBNCw0IDAgMCwxIDEyLDhNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwb3RsaWdodEJlYW0gPSBcIk05LDE2LjVMOS45MSwxNS41OUwxNS4xMywyMC44TDE0LjIxLDIxLjcxTDksMTYuNU0xNS41LDEwTDE2LjQxLDkuMDlMMjEuNjMsMTQuM0wyMC43MSwxNS4yMUwxNS41LDEwTTYuNzIsMi43MkwxMC4xNSw2LjE1TDYuMTUsMTAuMTVMMi43Miw2LjcyQzEuOTQsNS45NCAxLjk0LDQuNjcgMi43MiwzLjg5TDMuODksMi43MkM0LjY3LDEuOTQgNS45NCwxLjk0IDYuNzIsMi43Mk0xNC41Nyw3LjVMMTUuMjgsOC4yMUw4LjIxLDE1LjI4TDcuNSwxNC41N0w2LjY0LDExLjA3TDExLjA3LDYuNjRMMTQuNTcsNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwcmF5ID0gXCJNMTAsNEgxMlY2SDEwVjRNNywzSDlWNUg3VjNNNyw2SDlWOEg3VjZNNiw4VjEwSDRWOEg2TTYsNVY3SDRWNUg2TTYsMlY0SDRWMkg2TTEzLDIyQTIsMiAwIDAsMSAxMSwyMFYxMEEyLDIgMCAwLDEgMTMsOFY3SDE0VjRIMTdWN0gxOFY4QTIsMiAwIDAsMSAyMCwxMFYyMEEyLDIgMCAwLDEgMTgsMjJIMTNNMTMsMTBWMjBIMThWMTBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3ByYXlCb3R0bGUgPSBcIk0xMiw3SDE1QzE1LjY2LDcuNjQgMTYsOC4zMSAxNiw5VjIySDhWMTVDOCwxNC43MiA4LjExLDE0LjM5IDguMywxNEwxMiw3TTE2LDRMMTUsNkgxMlY1TDEwLDdIOUwxMCw1VjRIOVYySDE0LjVBMS41LDEuNSAwIDAsMSAxNiwzLjVWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTcHJpbmtsZXIgPSBcIk0xMSA3SDEzVjlIMTFWN001IDIySDlWMTBINVYyMk0xNCAxMUgxNlY5SDE0VjExTTE3IDEwSDE5VjhIMTdWMTBNMTcgNVY3SDE5VjVIMTdNMTQgOEgxNlY2SDE0VjhNMTcgMTNIMTlWMTFIMTdWMTNNNSA3SDUuMzNMNiA5SDhMOC42NyA3SDlWNkg1VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3ByaW5rbGVyVmFyaWFudCA9IFwiTTEwIDEwSDE0VjIySDEwVjEwTTcgOUg5VjdIN1Y5TTQgOEg2VjZINFY4TTQgMTFINlY5SDRWMTFNMSAxM0gzVjExSDFWMTNNMSA3SDNWNUgxVjdNMSAxMEgzVjhIMVYxME0xOCAxMUgyMFY5SDE4VjExTTIxIDEwSDIzVjhIMjFWMTBNMjEgNVY3SDIzVjVIMjFNMjEgMTNIMjNWMTFIMjFWMTNNMTUgOUgxN1Y3SDE1VjlNMTggOEgyMFY2SDE4VjhNMTAgN0gxMC4zM0wxMSA5SDEzTDEzLjY3IDdIMTRWNkgxMFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwcm91dCA9IFwiTTIsMjJWMjBDMiwyMCA3LDE4IDEyLDE4QzE3LDE4IDIyLDIwIDIyLDIwVjIySDJNMTEuMyw5LjFDMTAuMSw1LjIgNCw2LjEgNCw2LjFDNCw2LjEgNC4yLDEzLjkgOS45LDEyLjdDOS41LDkuOCA4LDkgOCw5QzEwLjgsOSAxMSwxMi40IDExLDEyLjRWMTdDMTEuMywxNyAxMS43LDE3IDEyLDE3QzEyLjMsMTcgMTIuNywxNyAxMywxN1YxMi44QzEzLDEyLjggMTMsOC45IDE2LDcuOUMxNiw3LjkgMTQsMTAuOSAxNCwxMi45QzIxLDEzLjYgMjEsNCAyMSw0QzIxLDQgMTIuMSwzIDExLjMsOS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwcm91dE91dGxpbmUgPSBcIk0yMyw0LjFWMi4zTDIxLjIsMi4xQzIxLjEsMi4xIDIwLjUsMiAxOS41LDJDMTUuNCwyIDEyLjQsMy4yIDEwLjcsNS4zQzkuNCw0LjUgNy42LDQgNS41LDRDNC41LDQgMy44LDQuMSAzLjgsNC4xTDEuOSw0LjRMMiw2LjFDMi4xLDkuMSAzLjYsMTQuOCA4LjgsMTQuOEM4LjksMTQuOCA4LjksMTQuOCA5LDE0LjhWMTguMkM1LjIsMTguNyAyLDIwIDIsMjBWMjJIMjJWMjBDMjIsMjAgMTguOCwxOC43IDE1LDE4LjJWMTVDMjEuMywxNC45IDIzLDcuOCAyMyw0LjFNMTIsMThDMTEuNywxOCAxMS4zLDE4IDExLDE4VjEyLjRDMTEsMTIuNCAxMC44LDkgOCw5QzgsOSA5LjUsOS44IDkuOSwxMi43QzkuNSwxMi44IDkuMSwxMi44IDguOCwxMi44QzQuMiwxMi44IDQsNi4xIDQsNi4xQzQsNi4xIDQuNiw2IDUuNSw2QzcuNCw2IDEwLjUsNi40IDExLjQsOS4xQzExLjksNC42IDE3LDQgMTkuNSw0QzIwLjQsNCAyMSw0LjEgMjEsNC4xQzIxLDQuMSAyMSwxMy4xIDE0LjcsMTMuMUMxNC41LDEzLjEgMTQuMiwxMy4xIDE0LDEzLjFDMTQsMTEuMSAxNiw4LjEgMTYsOC4xQzEzLDkuMSAxMywxMyAxMywxM1YxOEMxMi43LDE4IDEyLjMsMTggMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlID0gXCJNMywzVjIxSDIxVjNcIjtcclxuZXhwb3J0IHZhciBtZGlTcXVhcmVDaXJjbGUgPSBcIk0yMCA0VjIwSDRWNEgyME0yMiAySDJWMjJIMjJWMk0xMiA2QzguNjkgNiA2IDguNjkgNiAxMlM4LjY5IDE4IDEyIDE4IDE4IDE1LjMxIDE4IDEyIDE1LjMxIDYgMTIgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTcXVhcmVFZGl0T3V0bGluZSA9IFwiTTUsM0MzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTJIMTlWMTlINVY1SDEyVjNINU0xNy43OCw0QzE3LjYxLDQgMTcuNDMsNC4wNyAxNy4zLDQuMkwxNi4wOCw1LjQxTDE4LjU4LDcuOTFMMTkuOCw2LjdDMjAuMDYsNi40NCAyMC4wNiw2IDE5LjgsNS43NUwxOC4yNSw0LjJDMTguMTIsNC4wNyAxNy45NSw0IDE3Ljc4LDRNMTUuMzcsNi4xMkw4LDEzLjVWMTZIMTAuNUwxNy44Nyw4LjYyTDE1LjM3LDYuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlTWVkaXVtID0gXCJNMTYsOEg4VjE2SDE2VjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlTWVkaXVtT3V0bGluZSA9IFwiTTE0LDEwVjE0SDEwVjEwSDE0TTE2LDhIOFYxNkgxNlY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE5LjExIDIxSDNWNC44OUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTIxIDNINi4yTDIxIDE3LjhWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTcXVhcmVPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0wzIDQuODlWMjFIMTkuMTFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNSAxOVY2Ljg5TDE3LjExIDE5SDVNOC4yIDVMNi4yIDNIMjFWMTcuOEwxOSAxNS44VjVIOC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZU91dGxpbmUgPSBcIk0zLDNIMjFWMjFIM1YzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlUm9vdCA9IFwiTTExLjc2LDE2LjgzTDE0LjU5LDE0TDExLjc2LDExLjE3TDEzLjE3LDkuNzZMMTYsMTIuNTlMMTguODMsOS43NkwyMC4yNCwxMS4xN0wxNy40MSwxNEwyMC4yNCwxNi44M0wxOC44MywxOC4yNEwxNiwxNS40MUwxMy4xNywxOC4yNEwxMS43NiwxNi44M00yLDExSDVWMTFINUw3LjI5LDE2LjRMMTAsNkgyMlY4SDExLjU1TDguNjgsMTlINi4yMkwzLjY4LDEzSDJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlUm9vdEJveCA9IFwiTTUsM0MzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM0g1TTExLjI0LDZIMTlWOEgxMi43NkwxMCwxOEg4TDYuMjUsMTJINVYxMEg3Ljc1TDksMTQuMjhMMTEuMjQsNlY2TTE0LDEwLjU5TDE1Ljc5LDEyLjM4TDE3LjU5LDEwLjU5TDE5LDEyTDE3LjIxLDEzLjc5TDE5LDE1LjU5TDE3LjU5LDE3TDE1Ljc5LDE1LjIxTDE0LDE3TDEyLjU5LDE1LjU5TDE0LjM4LDEzLjc5TDEyLjU5LDEyTDE0LDEwLjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZVJvdW5kZWQgPSBcIk04IDNIMTZDMTguNzYgMyAyMSA1LjI0IDIxIDhWMTZDMjEgMTguNzYgMTguNzYgMjEgMTYgMjFIOEM1LjI0IDIxIDMgMTguNzYgMyAxNlY4QzMgNS4yNCA1LjI0IDMgOCAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZVJvdW5kZWRPdXRsaW5lID0gXCJNOCAzSDE2QzE4Ljc2IDMgMjEgNS4yNCAyMSA4VjE2QzIxIDE4Ljc2IDE4Ljc2IDIxIDE2IDIxSDhDNS4yNCAyMSAzIDE4Ljc2IDMgMTZWOEMzIDUuMjQgNS4yNCAzIDggM004IDVDNi4zNCA1IDUgNi4zNCA1IDhWMTZDNSAxNy42NiA2LjM0IDE5IDggMTlIMTZDMTcuNjYgMTkgMTkgMTcuNjYgMTkgMTZWOEMxOSA2LjM0IDE3LjY2IDUgMTYgNUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZVNtYWxsID0gXCJNMTAsMTRWMTBIMTRWMTRIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlV2F2ZSA9IFwiTTIgMlYxMkg0VjRIMTFWMjJIMjJWMTJIMjBWMjBIMTNWMkgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWVlZ2VlID0gXCJNMjIsMlY1SDJWMkgyMk0yLDhIN0w5LDEwSDEwVjIwQTIsMiAwIDAsMCAxMiwyMkEyLDIgMCAwLDAgMTQsMjBWMTBIMTVMMTcsOEgyMlY2SDJWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTc2ggPSBcIk00LjUsOUMzLjksOSAzLjUsOS41IDMuNSwxMFYxMS43NUMzLjUsMTIuMjUgMy45LDEyLjc1IDQuNSwxMi43NUg3VjEzLjVIMy41VjE1SDcuNUM4LjEsMTUgOC41LDE0LjUgOC41LDE0VjEyLjI1QzguNSwxMS43NSA4LjEsMTEuMjUgNy41LDExLjI1SDVWMTAuNUg4LjVWOUg0LjVNMTAuNSw5QzkuOSw5IDkuNSw5LjUgOS41LDEwVjExLjc1QzkuNSwxMi4yNSA5LjksMTIuNzUgMTAuNSwxMi43NUgxM1YxMy41SDkuNVYxNUgxMy41QzE0LjEsMTUgMTQuNSwxNC41IDE0LjUsMTRWMTIuMjVDMTQuNSwxMS43NSAxNC4xLDExLjI1IDEzLjUsMTEuMjVIMTFWMTAuNUgxNC41VjlIMTAuNU0xNS41LDlWMTVIMTdWMTIuNUgxOVYxNUgyMC41VjlIMTlWMTFIMTdWOUgxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YWNrRXhjaGFuZ2UgPSBcIk0zLjkgMTAuNzJIMjBWMTQuMDNIMy45VjEwLjcyTTMuOSA2LjQ0SDIwVjkuNzVIMy45VjYuNDRNMTcuNSAySDYuNUM1LjA2IDIgMy45IDMuMTggMy45IDQuNjVWNS41SDIwVjQuNjVDMjAgMy4xOCAxOC44OCAyIDE3LjUgMk0zLjkgMTVWMTUuODRDMy45IDE3LjMxIDUuMDYgMTguNSA2LjUgMTguNUgxMy4zN1YyMkwxNi43NyAxOC41SDE3LjVDMTguOTQgMTguNSAyMC4xMSAxNy4zMSAyMC4xMSAxNS44NFYxNUgzLjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhY2tPdmVyZmxvdyA9IFwiTTE3LjM2LDIwLjJWMTQuODJIMTkuMTVWMjJIM1YxNC44Mkg0LjhWMjAuMkgxNy4zNk02Ljc3LDE0LjMyTDcuMTQsMTIuNTZMMTUuOTMsMTQuNDFMMTUuNTYsMTYuMTdMNi43NywxNC4zMk03LjkzLDEwLjExTDguNjksOC41TDE2LjgzLDEyLjI4TDE2LjA3LDEzLjlMNy45MywxMC4xMU0xMC4xOSw2LjEyTDExLjM0LDQuNzRMMTguMjQsMTAuNUwxNy4wOSwxMS44N0wxMC4xOSw2LjEyTTE0LjY0LDEuODdMMjAsOS4wOEwxOC41NiwxMC4xNUwxMy4yLDIuOTRMMTQuNjQsMS44N002LjU5LDE4LjQxVjE2LjYxSDE1LjU3VjE4LjQxSDYuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhY2twYXRoID0gXCJNNC45MSA4QzQuMDQgOCAzLjMyIDguMiAyLjc2IDguNjFDMi4xOSA5IDEuOTEgOS41MyAxLjkxIDEwLjE5QzEuOTEgMTAuODUgMi4xNSAxMS4zNyAyLjYyIDExLjcyQzMuMSAxMi4wNyAzLjgyIDEyLjQxIDQuOCAxMi43MkM1LjI3IDEyLjg4IDUuNiAxMy4wNCA1Ljc4IDEzLjE5QzUuOTYgMTMuMzQgNi4wNSAxMy41NSA2LjA1IDEzLjgzQzYuMDUgMTQuMDcgNS45NiAxNC4yNiA1Ljc4IDE0LjQxQzUuNiAxNC41NiA1LjMyIDE0LjYzIDQuOTQgMTQuNjNDNC40NSAxNC42MyA0LjA5IDE0LjU0IDMuODUgMTQuMzVDMy42IDE0LjE2IDMuNSAxMy44NCAzLjUgMTMuMzlIMS43MkwxLjcxIDEzLjQyQzEuNyAxNC4yNSAyIDE0Ljg5IDIuNjYgMTUuMzNDMy4zIDE1Ljc4IDQuMDYgMTYgNC45NCAxNkM1LjgyIDE2IDYuNSAxNS44IDcuMDYgMTUuNDJDNy41OSAxNS4wMyA3Ljg2IDE0LjUgNy44NiAxMy44MUM3Ljg2IDEzLjE0IDcuNjMgMTIuNjEgNy4xOSAxMi4yM0M2Ljc0IDExLjg0IDYuMDggMTEuNSA1LjIgMTEuMjZDNC42MiAxMS4wNSA0LjIzIDEwLjg4IDQgMTAuNzRDMy44MSAxMC42IDMuNzEgMTAuNDIgMy43MSAxMC4yQzMuNzEgOS45NiAzLjgxIDkuNzYgNCA5LjZDNC4yMiA5LjQ0IDQuNSA5LjM2IDQuODcgOS4zNkM1LjI0IDkuMzYgNS41MyA5LjQ2IDUuNzQgOS42NUM1Ljk2IDkuODQgNi4wNyAxMC4xMiA2LjA2IDEwLjQxSDcuOEw3LjgyIDEwLjM3QzcuODQgOS42OCA3LjU3IDkuMTEgNyA4LjY2QzYuNDcgOC4yMiA1Ljc3IDggNC45MSA4TTkgOC4wNVYxNS45M0gxMC44NFYxMy4yM0gxMS45NkMxMi44OSAxMy4yMyAxMy42MyAxMyAxNC4xOCAxMi41QzE0LjczIDEyLjA1IDE1IDExLjQyIDE1IDEwLjY0QzE1IDkuODcgMTQuNzMgOS4yNSAxNC4xOCA4Ljc3QzEzLjYzIDguMjkgMTIuODkgOC4wNSAxMS45NiA4LjA1SDlNMTcuMjQgOC4wNUwxNC41IDE1LjkzSDE2LjIyTDE5IDguMDVNMjAuNSA4LjA1TDE3Ljc5IDE1LjkzSDE5LjVMMjIuMjkgOC4wNU0xMC44NCA5LjQ2SDExLjk2QzEyLjM1IDkuNDYgMTIuNjYgOS41NyAxMi44NiA5LjhDMTMuMDcgMTAgMTMuMTcgMTAuMzEgMTMuMTcgMTAuNjVDMTMuMTcgMTEgMTMuMDcgMTEuMjggMTIuODYgMTEuNUMxMi42NiAxMS43MSAxMi4zNSAxMS44MiAxMS45NiAxMS44MkgxMC44NFwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YWRpdW0gPSBcIk0yMiAxMy41VjE3LjVDMjIgMTkuMiAxNy41IDIwLjUgMTIgMjAuNUMxMC42IDIwLjUgOS4yIDIwLjQgOCAyMC4yVjE3LjVMNCAxNi41VjE5LjNDMi43IDE4LjggMiAxOC4yIDIgMTcuNVYxMS41QzIgMTAuNSA0IDkuNSA2IDkuNUMxMiA5LjUgMTQgMTUgMTkgMTVDMjEgMTUgMjIgMTMuNSAyMiAxMy41TTUgOEw5IDlWNkw1IDVWOE0xOCA2LjVMMjIgNy41VjQuNUwxOCAzLjVWNi41TTIyLjMgMTAuOEMyMi4zIDkuOCAyMS41IDggMTguNyA4UzEzLjQgMTAuNyAxMy4zIDEwLjlDMTUuMSAxMi4yIDE2LjUgMTMuNSAxOSAxMy41QzIyLjMgMTMuNSAyMi4zIDEwLjggMjIuMyAxMC44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YWRpdW1WYXJpYW50ID0gXCJNNSwzSDdMMTAsNUw3LDdWOC4zM0M4LjQ3LDguMTIgMTAuMTgsOCAxMiw4QzEzLjgyLDggMTUuNTMsOC4xMiAxNyw4LjMzVjNIMTlMMjIsNUwxOSw3VjguNzFDMjAuODUsOS4xNyAyMiw5LjggMjIsMTAuNUMyMiwxMS44OCAxNy41LDEzIDEyLDEzQzYuNSwxMyAyLDExLjg4IDIsMTAuNUMyLDkuOCAzLjE1LDkuMTcgNSw4LjcxVjNNMTIsOS41QzguNjksOS41IDcsOS42NyA3LDEwLjVDNywxMS4zMyA4LjY5LDExLjUgMTIsMTEuNUMxNS4zMSwxMS41IDE3LDExLjMzIDE3LDEwLjVDMTcsOS42NyAxNS4zMSw5LjUgMTIsOS41TTEyLDE0Ljc1QzE1LjgxLDE0Ljc1IDE5LjIsMTQuMDggMjEuNCwxMy4wNUwyMCwyMUgxNVYxOUEyLDIgMCAwLDAgMTMsMTdIMTFBMiwyIDAgMCwwIDksMTlWMjFINEwyLjYsMTMuMDVDNC44LDE0LjA4IDguMTksMTQuNzUgMTIsMTQuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhaXJzID0gXCJNMTUsNVY5SDExVjEzSDdWMTdIM1YyMEgxMFYxNkgxNFYxMkgxOFY4SDIyVjVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhaXJzQm94ID0gXCJNNSAzQzMuODkgMyAzIDMuODkgMyA1VjE5QzMgMjAuMTEgMy44OSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjVDMjEgMy44OSAyMC4xMSAzIDE5IDNINU0xNCA3SDE5VjlIMTZWMTJIMTNWMTVIMTBWMThINVYxNkg4VjEzSDExVjEwSDE0VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhaXJzRG93biA9IFwiTTE1IDZIMjJWOUgxOFYxM0gxNFYxN0gxMFYyMUgzVjE4SDdWMTRIMTFWMTBIMTVWNk00LjgzIDguMzRMMTAuMzQgMi44M0wxMi4xNyA0LjY2TDYuNjYgMTAuMTdMOC41IDEySDNWNi41TDQuODMgOC4zNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFpcnNVcCA9IFwiTTE1IDZIMjJWOUgxOFYxM0gxNFYxN0gxMFYyMUgzVjE4SDdWMTRIMTFWMTBIMTVWNk0xMC4xNyA2LjY2TDQuNjYgMTIuMTdMMi44MyAxMC4zNEw4LjM0IDQuODNMNi41IDNIMTJWOC41TDEwLjE3IDYuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhbXBlciA9IFwiTTEyLDNBMywzIDAgMCwwIDksNkM5LDkgMTQsMTMgNiwxM0EyLDIgMCAwLDAgNCwxNVYxN0gyMFYxNUEyLDIgMCAwLDAgMTgsMTNDMTAsMTMgMTUsOSAxNSw2QzE1LDQgMTMuNjYsMyAxMiwzTTYsMTlWMjFIMThWMTlINlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFuZGFyZERlZmluaXRpb24gPSBcIk0xMyw3SDE2QTMsMyAwIDAsMSAxOSwxMFYxNEEzLDMgMCAwLDEgMTYsMTdIMTNWN00xNiwxNUExLDEgMCAwLDAgMTcsMTRWMTBBMSwxIDAgMCwwIDE2LDlIMTVWMTVIMTZNNyw3SDExVjlIN1YxMUg5QTIsMiAwIDAsMSAxMSwxM1YxNUEyLDIgMCAwLDEgOSwxN0g1VjE1SDlWMTNIN0EyLDIgMCAwLDEgNSwxMVY5QTIsMiAwIDAsMSA3LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhciA9IFwiTTEyLDE3LjI3TDE4LjE4LDIxTDE2LjU0LDEzLjk3TDIyLDkuMjRMMTQuODEsOC42MkwxMiwyTDkuMTksOC42MkwyLDkuMjRMNy40NSwxMy45N0w1LjgyLDIxTDEyLDE3LjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJCb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QzIxLDIwLjExIDIwLjEsMjEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlNMTUuNTgsMTdMMTQuNjMsMTIuOTJMMTcuNzksMTAuMTlMMTMuNjIsOS44M0wxMiw2TDEwLjM4LDkuODRMNi4yMSwxMC4yTDkuMzcsMTIuOTNMOC40MiwxN0wxMiwxNC44NEwxNS41OCwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQm94TXVsdGlwbGUgPSBcIk00IDZWMjBIMThWMjJIM0MyLjQgMjIgMiAyMS42IDIgMjFWNkg0TTggMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDhDNi45IDE4IDYgMTcuMTEgNiAxNlY0QzYgMi45IDYuOSAyIDggMk0xNi4zIDEzLjNMMTUuOSAxMC43TDE3LjggOC44TDE1LjIgOC40TDE0IDZMMTIuOCA4LjRMMTAuMiA4LjhMMTIuMSAxMC42TDExLjYgMTMuMkwxNCAxMkwxNi4zIDEzLjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckJveE11bHRpcGxlT3V0bGluZSA9IFwiTTQgNlYyMEgxOFYyMkgzQzIuNCAyMiAyIDIxLjYgMiAyMVY2SDRNMTIuMSAxMC42TDEwLjIgOC44TDEyLjggOC40TDE0IDZMMTUuMiA4LjRMMTcuOCA4LjhMMTUuOSAxMC43TDE2LjMgMTMuM0wxNCAxMkwxMS42IDEzLjJMMTIuMSAxMC42TTggMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDhDNi45IDE4IDYgMTcuMTEgNiAxNlY0QzYgMi45IDYuOSAyIDggMk04IDRWMTZIMjBWNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJCb3hPdXRsaW5lID0gXCJNMTUuNTgsMTdMMTIsMTQuODRMOC40MiwxN0w5LjM3LDEyLjkzTDYuMjEsMTAuMkwxMC4zOCw5Ljg0TDEyLDZMMTMuNjIsOS44M0wxNy43OSwxMC4xOUwxNC42MywxMi45MkwxNS41OCwxN00xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QzIxLDIwLjExIDIwLjEsMjEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQ2hlY2sgPSBcIk01LjggMjFMNy40IDE0TDIgOS4yTDkuMiA4LjZMMTIgMkwxNC44IDguNkwyMiA5LjJMMTguOCAxMkgxOEMxNC45IDEyIDEyLjQgMTQuMyAxMiAxNy4zTDUuOCAyMU0xNy44IDIxLjJMMjIuNiAxNi40TDIxLjMgMTVMMTcuNyAxOC42TDE2LjIgMTdMMTUgMTguMkwxNy44IDIxLjJcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQ2hlY2tPdXRsaW5lID0gXCJNNS44IDIxTDcuNCAxNEwyIDkuMkw5LjIgOC42TDEyIDJMMTQuOCA4LjZMMjIgOS4yTDE4LjggMTJIMThDMTcuMyAxMiAxNi42IDEyLjEgMTUuOSAxMi40TDE4LjEgMTAuNUwxMy43IDEwLjFMMTIgNi4xTDEwLjMgMTAuMUw1LjkgMTAuNUw5LjIgMTMuNEw4LjIgMTcuN0wxMiAxNS40TDEyLjUgMTUuN0MxMi4zIDE2LjIgMTIuMSAxNi44IDEyLjEgMTcuM0w1LjggMjFNMTcuOCAyMS4yTDE1IDE4LjJMMTYuMiAxN0wxNy44IDE4LjZMMjEuNCAxNUwyMi42IDE2LjRMMTcuOCAyMS4yXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckNpcmNsZSA9IFwiTTE2LjIzLDE4TDEyLDE1LjQ1TDcuNzcsMThMOC44OSwxMy4xOUw1LjE2LDkuOTZMMTAuMDgsOS41NEwxMiw1TDEzLjkyLDkuNTNMMTguODQsOS45NUwxNS4xMSwxMy4xOEwxNi4yMywxOE0xMiwyQzYuNDcsMiAyLDYuNSAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckNpcmNsZU91dGxpbmUgPSBcIk04LjU4LDE3LjI1TDkuNSwxMy4zNkw2LjUsMTAuNzhMMTAuNDUsMTAuNDFMMTIsNi44TDEzLjU1LDEwLjQ1TDE3LjUsMTAuNzhMMTQuNSwxMy4zNkwxNS40MiwxNy4yNUwxMiwxNS4xOUw4LjU4LDE3LjI1TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQ29nID0gXCJNMTguOCAxMkMxNS41OSAxMi4xIDEyLjkxIDE0LjM3IDEyLjE5IDE3LjM5TDEyIDE3LjI3TDUuODIgMjFMNy40NSAxMy45N0wyIDkuMjRMOS4xOSA4LjYyTDEyIDJMMTQuODEgOC42MkwyMiA5LjI0TDE4LjggMTJNMjMuODMgMjAuNjRMMjIuODMgMjIuMzdDMjIuNzYgMjIuNSAyMi42MyAyMi41IDIyLjUgMjIuNUwyMS4yNyAyMkMyMSAyMi4xOCAyMC43MyAyMi4zNCAyMC40MyAyMi40N0wyMC4yNCAyMy43OUMyMC4yMiAyMy45MSAyMC4xMSAyNCAyMCAyNEgxOEMxNy44NiAyNCAxNy43NiAyMy45MSAxNy43NCAyMy43OUwxNy41NSAyMi40N0MxNy4yNCAyMi4zNSAxNi45NiAyMi4xOCAxNi43IDIyTDE1LjQ2IDIyLjVDMTUuMzQgMjIuNSAxNS4yMSAyMi41IDE1LjE1IDIyLjM3TDE0LjE1IDIwLjY0QzE0LjA5IDIwLjUzIDE0LjEyIDIwLjQgMTQuMjEgMjAuMzJMMTUuMjcgMTkuNUMxNS4yNSAxOS4zMyAxNS4yNCAxOS4xNyAxNS4yNCAxOVMxNS4yNSAxOC42NyAxNS4yNyAxOC41TDE0LjIxIDE3LjY4QzE0LjExIDE3LjYgMTQuMDkgMTcuNDcgMTQuMTUgMTcuMzZMMTUuMTUgMTUuNjNDMTUuMjIgMTUuNSAxNS4zNSAxNS41IDE1LjQ2IDE1LjVMMTYuNyAxNkMxNi45NiAxNS44MiAxNy4yNSAxNS42NiAxNy41NSAxNS41M0wxNy43NCAxNC4yMUMxNy43NiAxNC4wOSAxNy44NyAxNCAxOCAxNEgyMEMyMC4xMSAxNCAyMC4yMiAxNC4wOSAyMC4yMyAxNC4yMUwyMC40MiAxNS41M0MyMC43MyAxNS42NSAyMSAxNS44MiAyMS4yNyAxNkwyMi41IDE1LjVDMjIuNjMgMTUuNSAyMi43NiAxNS41IDIyLjgyIDE1LjYzTDIzLjgyIDE3LjM2QzIzLjg4IDE3LjQ3IDIzLjg1IDE3LjYgMjMuNzYgMTcuNjhMMjIuNyAxOC41QzIyLjczIDE4LjY3IDIyLjc0IDE4LjgzIDIyLjc0IDE5UzIyLjcyIDE5LjMzIDIyLjcgMTkuNUwyMy43NyAyMC4zMkMyMy44NiAyMC40IDIzLjg5IDIwLjUzIDIzLjgzIDIwLjY0TTIwLjUgMTlDMjAuNSAxOC4xNyAxOS44MyAxNy41IDE5IDE3LjVTMTcuNSAxOC4xNyAxNy41IDE5IDE4LjE2IDIwLjUgMTkgMjAuNUMxOS44MyAyMC41IDIwLjUgMTkuODMgMjAuNSAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQ29nT3V0bGluZSA9IFwiTTEwLjI5IDEwLjEzTDUuOTEgMTAuNUw5LjIzIDEzLjM4TDguMjQgMTcuNjZMMTIgMTUuMzlMMTIuNzYgMTUuODVDMTIuNSAxNi4zMyAxMi4zMiAxNi44NSAxMi4xOSAxNy4zOUwxMiAxNy4yN0w1LjgyIDIxTDcuNDUgMTMuOTdMMiA5LjI0TDkuMTkgOC42M0wxMiAyTDE0LjgxIDguNjNMMjIgOS4yNEwxOC44IDEyQzE3LjI5IDEyLjA1IDE1LjkxIDEyLjU3IDE0Ljc4IDEzLjQzTDE0Ljc3IDEzLjM4TDE4LjA5IDEwLjVMMTMuNzEgMTAuMTNMMTIgNi4wOUwxMC4yOSAxMC4xM00yMy44MyAyMC42NEwyMi44MyAyMi4zN0MyMi43NiAyMi41IDIyLjYzIDIyLjUgMjIuNSAyMi41TDIxLjI3IDIyQzIxIDIyLjE4IDIwLjczIDIyLjM0IDIwLjQzIDIyLjQ3TDIwLjI0IDIzLjc5QzIwLjIyIDIzLjkxIDIwLjExIDI0IDIwIDI0SDE4QzE3Ljg2IDI0IDE3Ljc2IDIzLjkxIDE3Ljc0IDIzLjc5TDE3LjU1IDIyLjQ3QzE3LjI0IDIyLjM1IDE2Ljk2IDIyLjE4IDE2LjcgMjJMMTUuNDYgMjIuNUMxNS4zNCAyMi41IDE1LjIxIDIyLjUgMTUuMTUgMjIuMzdMMTQuMTUgMjAuNjRDMTQuMDkgMjAuNTMgMTQuMTIgMjAuNCAxNC4yMSAyMC4zMkwxNS4yNyAxOS41QzE1LjI1IDE5LjMzIDE1LjI0IDE5LjE3IDE1LjI0IDE5UzE1LjI1IDE4LjY3IDE1LjI3IDE4LjVMMTQuMjEgMTcuNjhDMTQuMTEgMTcuNiAxNC4wOSAxNy40NyAxNC4xNSAxNy4zNkwxNS4xNSAxNS42M0MxNS4yMiAxNS41IDE1LjM1IDE1LjUgMTUuNDYgMTUuNUwxNi43IDE2QzE2Ljk2IDE1LjgyIDE3LjI1IDE1LjY2IDE3LjU1IDE1LjUzTDE3Ljc0IDE0LjIxQzE3Ljc2IDE0LjA5IDE3Ljg3IDE0IDE4IDE0SDIwQzIwLjExIDE0IDIwLjIyIDE0LjA5IDIwLjIzIDE0LjIxTDIwLjQyIDE1LjUzQzIwLjczIDE1LjY1IDIxIDE1LjgyIDIxLjI3IDE2TDIyLjUgMTUuNUMyMi42MyAxNS41IDIyLjc2IDE1LjUgMjIuODIgMTUuNjNMMjMuODIgMTcuMzZDMjMuODggMTcuNDcgMjMuODUgMTcuNiAyMy43NiAxNy42OEwyMi43IDE4LjVDMjIuNzMgMTguNjcgMjIuNzQgMTguODMgMjIuNzQgMTlTMjIuNzIgMTkuMzMgMjIuNyAxOS41TDIzLjc3IDIwLjMyQzIzLjg2IDIwLjQgMjMuODkgMjAuNTMgMjMuODMgMjAuNjRNMjAuNSAxOUMyMC41IDE4LjE3IDE5LjgzIDE3LjUgMTkgMTcuNVMxNy41IDE4LjE3IDE3LjUgMTkgMTguMTYgMjAuNSAxOSAyMC41QzE5LjgzIDIwLjUgMjAuNSAxOS44MyAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJGYWNlID0gXCJNMTIsMi41TDguNDIsOC4wNkwyLDkuNzRMNi4yLDE0Ljg4TDUuODIsMjEuNUwxMiwxOS4wOUwxOC4xOCwyMS41TDE3LjgsMTQuODhMMjIsOS43NEwxNS41OCw4LjA2TDEyLDIuNU05LjM4LDEwLjVDMTAsMTAuNSAxMC41LDExIDEwLjUsMTEuNjNBMS4xMiwxLjEyIDAgMCwxIDkuMzgsMTIuNzVDOC43NSwxMi43NSA4LjI1LDEyLjI1IDguMjUsMTEuNjNDOC4yNSwxMSA4Ljc1LDEwLjUgOS4zOCwxMC41TTE0LjYzLDEwLjVDMTUuMjUsMTAuNSAxNS43NSwxMSAxNS43NSwxMS42M0ExLjEyLDEuMTIgMCAwLDEgMTQuNjMsMTIuNzVDMTQsMTIuNzUgMTMuNSwxMi4yNSAxMy41LDExLjYzQzEzLjUsMTEgMTQsMTAuNSAxNC42MywxMC41TTksMTVIMTVDMTQuNSwxNi4yMSAxMy4zMSwxNyAxMiwxN0MxMC42OSwxNyA5LjUsMTYuMjEgOSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyRm91clBvaW50cyA9IFwiTTEyLDFMOSw5TDEsMTJMOSwxNUwxMiwyM0wxNSwxNUwyMywxMkwxNSw5TDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckZvdXJQb2ludHNPdXRsaW5lID0gXCJNMTIsNi43TDEzLjQ1LDEwLjU1TDE3LjMsMTJMMTMuNDUsMTMuNDVMMTIsMTcuM0wxMC41NSwxMy40NUw2LjcsMTJMMTAuNTUsMTAuNTVMMTIsNi43TTEyLDFMOSw5TDEsMTJMOSwxNUwxMiwyM0wxNSwxNUwyMywxMkwxNSw5TDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckhhbGYgPSBcIk0xMiAyTDkuMTkgOC42MkwyIDkuMjRMNy40NSAxMy45N0w1LjgyIDIxTDEyIDE3LjI3VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckhhbGZGdWxsID0gXCJNMTIsMTUuNFY2LjFMMTMuNzEsMTAuMTNMMTguMDksMTAuNUwxNC43NywxMy4zOUwxNS43NiwxNy42N00yMiw5LjI0TDE0LjgxLDguNjNMMTIsMkw5LjE5LDguNjNMMiw5LjI0TDcuNDUsMTMuOTdMNS44MiwyMUwxMiwxNy4yN0wxOC4xOCwyMUwxNi41NCwxMy45N0wyMiw5LjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJNaW51cyA9IFwiTTUuOCAyMUw3LjQgMTRMMiA5LjJMOS4yIDguNkwxMiAyTDE0LjggOC42TDIyIDkuMkwxOC44IDEySDE4QzE0LjkgMTIgMTIuNCAxNC4zIDEyIDE3LjNMNS44IDIxTTE0IDE3VjE5SDIyVjE3SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJNaW51c091dGxpbmUgPSBcIk01LjggMjFMNy40IDE0TDIgOS4yTDkuMiA4LjZMMTIgMkwxNC44IDguNkwyMiA5LjJMMTguOCAxMkgxOEMxNy4zIDEyIDE2LjYgMTIuMSAxNS45IDEyLjRMMTguMSAxMC41TDEzLjcgMTAuMUwxMiA2LjFMMTAuMyAxMC4xTDUuOSAxMC41TDkuMiAxMy40TDguMiAxNy43TDEyIDE1LjRMMTIuNSAxNS43QzEyLjMgMTYuMiAxMi4xIDE2LjggMTIuMSAxNy4zTDUuOCAyMU0xNCAxN1YxOUgyMlYxN0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyT2ZmID0gXCJNMjAuOCAyMi43TDE3LjkgMTkuOEwxOC4yIDIxTDEyIDE3LjNMNS44IDIxTDcuNCAxNEwyIDkuMkw2LjkgOC44TDEuMSAzTDIuNCAxLjdMMjIuMSAyMS40TDIwLjggMjIuN00yMiA5LjJMMTQuOCA4LjZMMTIgMkwxMCA2LjhMMTYuOSAxMy43TDIyIDkuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyT2ZmT3V0bGluZSA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDYuOSA4LjhMMiA5LjJMNy41IDE0TDUuOSAyMUwxMi4xIDE3LjNMMTguMyAyMUwxOCAxOS44TDIwLjkgMjIuN0wyMi4xIDIxLjVNMTUuOCAxNy43TDEyIDE1LjRMOC4yIDE3LjdMOS4yIDEzLjRMNS45IDEwLjVMOC40IDEwLjNMMTUuOCAxNy43TTExLjIgOEwxMCA2LjhMMTIgMkwxNC44IDguNkwyMiA5LjJMMTYuOSAxMy42TDE1LjggMTIuNUwxOC4yIDEwLjVMMTMuOCAxMC4xTDEyLjEgNi4xTDExLjIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyT3V0bGluZSA9IFwiTTEyLDE1LjM5TDguMjQsMTcuNjZMOS4yMywxMy4zOEw1LjkxLDEwLjVMMTAuMjksMTAuMTNMMTIsNi4wOUwxMy43MSwxMC4xM0wxOC4wOSwxMC41TDE0Ljc3LDEzLjM4TDE1Ljc2LDE3LjY2TTIyLDkuMjRMMTQuODEsOC42M0wxMiwyTDkuMTksOC42M0wyLDkuMjRMNy40NSwxMy45N0w1LjgyLDIxTDEyLDE3LjI3TDE4LjE4LDIxTDE2LjU0LDEzLjk3TDIyLDkuMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhclBsdXMgPSBcIk01LjggMjFMNy40IDE0TDIgOS4yTDkuMiA4LjZMMTIgMkwxNC44IDguNkwyMiA5LjJMMTguOCAxMkgxOEMxNC45IDEyIDEyLjQgMTQuMyAxMiAxNy4zTDUuOCAyMU0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyUGx1c091dGxpbmUgPSBcIk01LjggMjFMNy40IDE0TDIgOS4yTDkuMiA4LjZMMTIgMkwxNC44IDguNkwyMiA5LjJMMTguOCAxMkgxOEMxNy4zIDEyIDE2LjYgMTIuMSAxNS45IDEyLjRMMTguMSAxMC41TDEzLjcgMTAuMUwxMiA2LjFMMTAuMyAxMC4xTDUuOSAxMC41TDkuMiAxMy40TDguMiAxNy43TDEyIDE1LjRMMTIuNSAxNS43QzEyLjMgMTYuMiAxMi4xIDE2LjggMTIuMSAxNy4zTDUuOCAyMU0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyUmVtb3ZlID0gXCJNNS44IDIxTDcuNCAxNEwyIDkuMkw5LjIgOC42TDEyIDJMMTQuOCA4LjZMMjIgOS4yTDE4LjggMTJIMThDMTQuOSAxMiAxMi40IDE0LjMgMTIgMTcuM0w1LjggMjFNMjAuMSAxNC41TDE4IDE2LjZMMTUuOSAxNC41TDE0LjUgMTUuOUwxNi42IDE4TDE0LjUgMjAuMUwxNS45IDIxLjVMMTggMTkuNEwyMC4xIDIxLjVMMjEuNSAyMC4xTDE5LjQgMThMMjEuNSAxNS45TDIwLjEgMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyUmVtb3ZlT3V0bGluZSA9IFwiTTUuOCAyMUw3LjQgMTRMMiA5LjJMOS4yIDguNkwxMiAyTDE0LjggOC42TDIyIDkuMkwxOC44IDEySDE4QzE3LjMgMTIgMTYuNiAxMi4xIDE1LjkgMTIuNEwxOC4xIDEwLjVMMTMuNyAxMC4xTDEyIDYuMUwxMC4zIDEwLjFMNS45IDEwLjVMOS4yIDEzLjRMOC4yIDE3LjdMMTIgMTUuNEwxMi41IDE1LjdDMTIuMyAxNi4yIDEyLjEgMTYuOCAxMi4xIDE3LjNMNS44IDIxTTIwLjEgMTQuNUwxOCAxNi42TDE1LjkgMTQuNUwxNC41IDE1LjlMMTYuNiAxOEwxNC41IDIwLjFMMTUuOSAyMS41TDE4IDE5LjRMMjAuMSAyMS41TDIxLjUgMjAuMUwxOS40IDE4TDIxLjUgMTUuOUwyMC4xIDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhclNldHRpbmdzID0gXCJNNyAyMkg5VjI0SDdWMjJNMTEgMjRIMTNWMjJIMTFWMjRNMTUgMjRIMTdWMjJIMTVWMjRNMjIgOS4yNEwxNC44MSA4LjYyTDEyIDJMOS4xOSA4LjYyTDIgOS4yNEw3LjQ1IDEzLjk3TDUuODIgMjFMMTIgMTcuMjdMMTguMTggMjFMMTYuNTQgMTMuOTdMMjIgOS4yNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyU2V0dGluZ3NPdXRsaW5lID0gXCJNMTEgMjJIMTNWMjRIMTFWMjJNNyAyNEg5VjIySDdWMjRNMTUgMjRIMTdWMjJIMTVWMjRNMTYuNTQgMTMuOTdMMTguMTggMjFMMTIgMTcuMjdMNS44MiAyMUw3LjQ1IDEzLjk3TDIgOS4yNEw5LjE5IDguNjNMMTIgMkwxNC44MSA4LjYzTDIyIDkuMjRMMTYuNTQgMTMuOTdNMTUuNzYgMTcuNjZMMTQuNzcgMTMuMzhMMTguMDkgMTAuNUwxMy43MSAxMC4xM0wxMiA2LjA5TDEwLjI5IDEwLjEzTDUuOTEgMTAuNUw5LjIzIDEzLjM4TDguMjQgMTcuNjZMMTIgMTUuMzlMMTUuNzYgMTcuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhclNob290aW5nID0gXCJNMTguMDkgMTEuNzdMMTkuNTYgMTguMUwxNCAxNC43NEw4LjQ0IDE4LjFMOS45IDExLjc3TDUgNy41TDExLjQ3IDYuOTZMMTQgMUwxNi41MyA2Ljk2TDIzIDcuNUwxOC4wOSAxMS43N00yIDEyLjQzQzIuMTkgMTIuNDMgMi4zOCAxMi4zNyAyLjU1IDEyLjI2TDUuNzUgMTAuMTVMNC4xOCA4Ljc5TDEuNDUgMTAuNTlDLjk4OSAxMC44OSAuODYxIDExLjUgMS4xNiAxMkMxLjM2IDEyLjI3IDEuNjggMTIuNDMgMiAxMi40M00xLjE2IDIxLjU1QzEuMzYgMjEuODQgMS42OCAyMiAyIDIyQzIuMTkgMjIgMi4zOCAyMS45NSAyLjU1IDIxLjg0TDYuNjYgMTkuMTNMNyAxNy43Nkw3LjMxIDE2LjMxTDEuNDUgMjAuMTZDLjk4OSAyMC40NyAuODYxIDIxLjA5IDEuMTYgMjEuNTVNMS40NSAxNS4zOEMuOTg5IDE1LjY4IC44NjEgMTYuMyAxLjE2IDE2Ljc2QzEuMzYgMTcuMDYgMS42OCAxNy4yMSAyIDE3LjIxQzIuMTkgMTcuMjEgMi4zOCAxNy4xNiAyLjU1IDE3LjA1TDcuOTcgMTMuNUw4LjI0IDEyLjMxTDcuMzIgMTEuNUwxLjQ1IDE1LjM4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJTaG9vdGluZ091dGxpbmUgPSBcIk0yMyA3LjVMMTYuNTMgNi45NkwxNCAxTDExLjQ3IDYuOTZMNSA3LjVMOS45IDExLjc3TDguNDQgMTguMUwxNCAxNC43NEwxOS41NiAxOC4xTDE4LjA5IDExLjc3TDIzIDcuNU0xNi4xNCAxMi4yM0wxNi41NCAxMy45NEwxNS4wMyAxMy4wM0wxNCAxMi40MUwxMi45NyAxMy4wM0wxMS40NiAxMy45NEwxMS44NSAxMi4yM0wxMi4xMyAxMS4wNUwxMS4yMiAxMC4yNkw5Ljg4IDkuMUwxMS42NCA4Ljk1TDEyLjg0IDguODVMMTMuMzEgNy43NEwxNCA2LjEyTDE0LjY5IDcuNzRMMTUuMTYgOC44NUwxNi4zNiA4Ljk1TDE4LjExIDkuMUwxNi43OCAxMC4yNkwxNS44NiAxMS4wNUwxNi4xNCAxMi4yM00xLjE2IDEyQy44NjEgMTEuNSAuOTg5IDEwLjg5IDEuNDUgMTAuNTlMNC4xOCA4Ljc5TDUuNzUgMTAuMTVMMi41NSAxMi4yNkMyLjM4IDEyLjM3IDIuMTkgMTIuNDMgMiAxMi40M0MxLjY4IDEyLjQzIDEuMzYgMTIuMjcgMS4xNiAxMk0xLjQ1IDIwLjE2TDcuMzEgMTYuMzFMNyAxNy43Nkw2LjY2IDE5LjEzTDIuNTUgMjEuODRDMi4zOCAyMS45NSAyLjE5IDIyIDIgMjJDMS42OCAyMiAxLjM2IDIxLjg0IDEuMTYgMjEuNTVDLjg2MSAyMS4wOSAuOTg5IDIwLjQ3IDEuNDUgMjAuMTZNNy4zMiAxMS41TDguMjQgMTIuMzFMNy45NyAxMy41TDIuNTUgMTcuMDVDMi4zOCAxNy4xNiAyLjE5IDE3LjIxIDIgMTcuMjFDMS42OCAxNy4yMSAxLjM2IDE3LjA2IDEuMTYgMTYuNzZDLjg2MSAxNi4zIC45ODkgMTUuNjggMS40NSAxNS4zOEw3LjMyIDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhclRocmVlUG9pbnRzID0gXCJNMTIsMi42TDksMTIuNEwyLDE5LjlMMTIsMTcuNkwyMiwyMEwxNSwxMi41TDEyLDIuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyVGhyZWVQb2ludHNPdXRsaW5lID0gXCJNMTIsOS41TDEzLjIsMTMuNUwxNiwxNi41TDEyLDE1LjZMNy45LDE2LjVMMTAuNywxMy41TDEyLDkuNU0xMiwyLjZMOSwxMi40TDIsMTkuOUwxMiwxNy42TDIyLDIwTDE1LDEyLjVMMTIsMi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXRlTWFjaGluZSA9IFwiTTYuMjcgMTcuMDVDNi43MiAxNy41OCA3IDE4LjI1IDcgMTlDNyAyMC42NiA1LjY2IDIyIDQgMjJTMSAyMC42NiAxIDE5IDIuMzQgMTYgNCAxNkM0LjE4IDE2IDQuMzYgMTYgNC41MyAxNi4wNUw3LjYgMTAuNjlMNS44NiA5LjdMOS45NSA4LjU4TDExLjA3IDEyLjY3TDkuMzMgMTEuNjhMNi4yNyAxNy4wNU0yMCAxNkMxOC43IDE2IDE3LjYgMTYuODQgMTcuMTggMThIMTFWMTZMOCAxOUwxMSAyMlYyMEgxNy4xOEMxNy42IDIxLjE2IDE4LjcgMjIgMjAgMjJDMjEuNjYgMjIgMjMgMjAuNjYgMjMgMTlTMjEuNjYgMTYgMjAgMTZNMTIgOEMxMi4xOCA4IDEyLjM2IDggMTIuNTMgNy45NUwxNS42IDEzLjMxTDEzLjg2IDE0LjNMMTcuOTUgMTUuNDJMMTkuMDcgMTEuMzNMMTcuMzMgMTIuMzJMMTQuMjcgNi45NUMxNC43MiA2LjQyIDE1IDUuNzUgMTUgNUMxNSAzLjM0IDEzLjY2IDIgMTIgMlM5IDMuMzQgOSA1IDEwLjM0IDggMTIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVhbSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJDNy40LDIyIDMuNTUsMTguOTIgMi4zNiwxNC43M0w2LjE5LDE2LjMxQzYuNDUsMTcuNiA3LjYsMTguNTggOC45NywxOC41OEMxMC41MywxOC41OCAxMS44LDE3LjMxIDExLjgsMTUuNzVWMTUuNjJMMTUuMiwxMy4xOUgxNS4yOEMxNy4zNiwxMy4xOSAxOS4wNSwxMS41IDE5LjA1LDkuNDJDMTkuMDUsNy4zNCAxNy4zNiw1LjY1IDE1LjI4LDUuNjVDMTMuMiw1LjY1IDExLjUsNy4zNCAxMS41LDkuNDJWOS40N0w5LjEzLDEyLjkzTDguOTcsMTIuOTJDOC4zOCwxMi45MiA3LjgzLDEzLjEgNy4zOCwxMy40MUwyLDExLjJDMi40Myw2LjA1IDYuNzMsMiAxMiwyTTguMjgsMTcuMTdDOS4wOCwxNy41IDEwLDE3LjEzIDEwLjMzLDE2LjMzQzEwLjY2LDE1LjUzIDEwLjI4LDE0LjYyIDkuNSwxNC4yOUw4LjIyLDEzLjc2QzguNzEsMTMuNTggOS4yNiwxMy41NyA5Ljc4LDEzLjc5QzEwLjMxLDE0IDEwLjcyLDE0LjQxIDEwLjkzLDE0Ljk0QzExLjE1LDE1LjQ2IDExLjE1LDE2LjA0IDEwLjkzLDE2LjU2QzEwLjUsMTcuNjQgOS4yMywxOC4xNiA4LjE1LDE3LjcxQzcuNjUsMTcuNSA3LjI3LDE3LjEyIDcuMDYsMTYuNjdMOC4yOCwxNy4xN00xNy44LDkuNDJDMTcuOCwxMC44MSAxNi42NywxMS45NCAxNS4yOCwxMS45NEMxMy45LDExLjk0IDEyLjc3LDEwLjgxIDEyLjc3LDkuNDJBMi41LDIuNSAwIDAsMSAxNS4yOCw2LjkxQzE2LjY3LDYuOTEgMTcuOCw4LjA0IDE3LjgsOS40Mk0xMy40LDkuNDJDMTMuNCwxMC40NiAxNC4yNCwxMS4zMSAxNS4yOSwxMS4zMUMxNi4zMywxMS4zMSAxNy4xNywxMC40NiAxNy4xNyw5LjQyQzE3LjE3LDguMzggMTYuMzMsNy41MyAxNS4yOSw3LjUzQzE0LjI0LDcuNTMgMTMuNCw4LjM4IDEzLjQsOS40MlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVlcmluZyA9IFwiTTEzLDE5LjkyQzE0LjgsMTkuNyAxNi4zNSwxOC45NSAxNy42NSwxNy42NUMxOC45NSwxNi4zNSAxOS43LDE0LjggMTkuOTIsMTNIMTYuOTJDMTYuNywxNCAxNi4yNCwxNC44NCAxNS41NCwxNS41NEMxNC44NCwxNi4yNCAxNCwxNi43IDEzLDE2LjkyVjE5LjkyTTEwLDhIMTRMMTcsMTFIMTkuOTJDMTkuNjcsOS4wNSAxOC43OSw3LjM4IDE3LjI3LDZDMTUuNzYsNC42NiAxNCw0IDEyLDRDMTAsNCA4LjI0LDQuNjYgNi43Myw2QzUuMjEsNy4zOCA0LjMzLDkuMDUgNC4wOCwxMUg3TDEwLDhNMTEsMTkuOTJWMTYuOTJDMTAsMTYuNyA5LjE2LDE2LjI0IDguNDYsMTUuNTRDNy43NiwxNC44NCA3LjMsMTQgNy4wOCwxM0g0LjA4QzQuMywxNC43NyA1LjA1LDE2LjMgNi4zNSwxNy42QzcuNjUsMTguOSA5LjIsMTkuNjcgMTEsMTkuOTJNMTIsMkMxNC43NSwyIDE3LjEsMyAxOS4wNSw0Ljk1QzIxLDYuOSAyMiw5LjI1IDIyLDEyQzIyLDE0Ljc1IDIxLDE3LjEgMTkuMDUsMTkuMDVDMTcuMSwyMSAxNC43NSwyMiAxMiwyMkM5LjI1LDIyIDYuOSwyMSA0Ljk1LDE5LjA1QzMsMTcuMSAyLDE0Ljc1IDIsMTJDMiw5LjI1IDMsNi45IDQuOTUsNC45NUM2LjksMyA5LjI1LDIgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVlcmluZ09mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTcuMjUsMjAuNUMxNS43LDIxLjUgMTMuOTUsMjIgMTIsMjJDOS4yNSwyMiA2LjksMjEgNC45NSwxOS4wNUMzLDE3LjEgMiwxNC43NSAyLDEyQzIsMTAuMDUgMi41LDguMyAzLjUsNi43NUwyLDUuMjdNMTMsMTkuOTJDMTQsMTkuOCAxNC45MywxOS41IDE1Ljc4LDE5LjA1TDEzLjUsMTYuNzhDMTMuMzQsMTYuODQgMTMuMTYsMTYuODggMTMsMTYuOTJWMTkuOTJNNC4wOCwxMUg3TDcuMzcsMTAuNjNMNC45Niw4LjIzQzQuNSw5LjA4IDQuMjEsMTAgNC4wOCwxMU0xOS45MiwxM0gxNi45MkMxNi44LDEzLjU0IDE2LjYsMTQuMDUgMTYuMzMsMTQuNUw5LjkxLDguMDlMMTAsOEgxNEwxNywxMUgxOS45MkMxOS42Nyw5LjA1IDE4Ljc5LDcuMzggMTcuMjcsNkMxNS43Niw0LjY2IDE0LDQgMTIsNEMxMC4yNiw0IDguNzEsNC41IDcuMzQsNS41TDUuOTEsNC4wOUM3LjY2LDIuNzEgOS42OSwyIDEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMkMyMiwxNC4zMSAyMS4yOSwxNi4zNCAxOS45MSwxOC4wOUwxOC41LDE2LjY3QzE5LjI4LDE1LjU5IDE5Ljc2LDE0LjM2IDE5LjkyLDEzTTExLDE5LjkyVjE2LjkyQzEwLDE2LjcgOS4xNiwxNi4yNCA4LjQ2LDE1LjU0QzcuNzYsMTQuODQgNy4zLDE0IDcuMDgsMTNINC4wOEM0LjMsMTQuNzcgNS4wNSwxNi4zIDYuMzUsMTcuNkM3LjY1LDE4LjkgOS4yLDE5LjY3IDExLDE5LjkyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0ZXBCYWNrd2FyZCA9IFwiTTE5LDVWMTlIMTZWNU0xNCw1VjE5TDMsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVwQmFja3dhcmQyID0gXCJNMTcsNUgxNFYxOUgxN1Y1TTEyLDVMMSwxMkwxMiwxOVY1TTIyLDVIMTlWMTlIMjJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVwRm9yd2FyZCA9IFwiTTUsNVYxOUg4VjVNMTAsNVYxOUwyMSwxMlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0ZXBGb3J3YXJkMiA9IFwiTTcsNUgxMFYxOUg3VjVNMTIsNUwyMywxMkwxMiwxOVY1TTIsNUg1VjE5SDJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGV0aG9zY29wZSA9IFwiTTE5LDhDMTkuNTYsOCAyMCw4LjQzIDIwLDlBMSwxIDAgMCwxIDE5LDEwQzE4LjQzLDEwIDE4LDkuNTUgMTgsOUMxOCw4LjQzIDE4LjQzLDggMTksOE0yLDJWMTFDMiwxMy45NiA0LjE5LDE2LjUgNy4xNCwxNi45MUM3Ljc2LDE5LjkyIDEwLjQyLDIyIDEzLjUsMjJBNi41LDYuNSAwIDAsMCAyMCwxNS41VjExLjgxQzIxLjE2LDExLjM5IDIyLDEwLjI5IDIyLDlBMywzIDAgMCwwIDE5LDZBMywzIDAgMCwwIDE2LDlDMTYsMTAuMjkgMTYuODQsMTEuNCAxOCwxMS44MVYxNS40MUMxOCwxNy45MSAxNiwxOS45MSAxMy41LDE5LjkxQzExLjUsMTkuOTEgOS44MiwxOC43IDkuMjIsMTYuOUMxMiwxNi4zIDE0LDEzLjggMTQsMTFWMkgxMFY1SDEyVjExQTQsNCAwIDAsMSA4LDE1QTQsNCAwIDAsMSA0LDExVjVINlYySDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlciA9IFwiTTE4LjUgMkg1LjVDMy42IDIgMiAzLjYgMiA1LjVWMTguNUMyIDIwLjQgMy42IDIyIDUuNSAyMkgxNkwyMiAxNlY1LjVDMjIgMy42IDIwLjQgMiAxOC41IDJNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyQWxlcnQgPSBcIk0xOC41IDJINS41QzMuNiAyIDIgMy42IDIgNS41VjE4LjVDMiAyMC40IDMuNiAyMiA1LjUgMjJIMTZMMjIgMTZWNS41QzIyIDMuNiAyMC40IDIgMTguNSAyTTEzIDE3SDExVjE1SDEzVjE2TTEzIDEzSDExVjdIMTNWMTJNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyQWxlcnRPdXRsaW5lID0gXCJNMTEgMTVIMTNWMTdIMTFWMTVNMTEgMTNIMTNWN0gxMVYxM00yMiA1LjVWMTZMMTYgMjJINS41QzMuNiAyMiAyIDIwLjQgMiAxOC41VjUuNUMyIDMuNiAzLjYgMiA1LjUgMkgxOC41QzIwLjQgMiAyMiAzLjYgMjIgNS41TTIwIDUuOEMyMCA0LjggMTkuMiA0IDE4LjIgNEg1LjhDNC44IDQgNCA0LjggNCA1LjhWMTguM0M0IDE5LjMgNC44IDIwLjEgNS44IDIwLjFIMTVWMTguNkMxNSAxNi43IDE2LjYgMTUuMSAxOC41IDE1LjFIMjBWNS44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0aWNrZXJDaGVjayA9IFwiTTE4LjUgMkg1LjVDMy42IDIgMiAzLjYgMiA1LjVWMTguNUMyIDIwLjQgMy42IDIyIDUuNSAyMkgxNkwyMiAxNlY1LjVDMjIgMy42IDIwLjQgMiAxOC41IDJNNyAxMi41TDguMyAxMS4xTDEwLjQgMTMuMkwxNS42IDhMMTcgOS40TDEwLjUgMTZMNyAxMi41TTE1IDIwVjE4LjVDMTUgMTYuNiAxNi42IDE1IDE4LjUgMTVIMjBMMTUgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlckNoZWNrT3V0bGluZSA9IFwiTTE4LjUgMkg1LjVDMy42IDIgMiAzLjYgMiA1LjVWMTguNUMyIDIwLjQgMy42IDIyIDUuNSAyMkgxNkwyMiAxNlY1LjVDMjIgMy42IDIwLjQgMiAxOC41IDJNMjAgMTVIMTguNUMxNi42IDE1IDE1IDE2LjYgMTUgMTguNVYyMEg1LjhDNC44IDIwIDQgMTkuMiA0IDE4LjJWNS44QzQgNC44IDQuOCA0IDUuOCA0SDE4LjNDMTkuMyA0IDIwLjEgNC44IDIwLjEgNS44VjE1TTE1LjIgOC4yTDE2LjcgOS43TDEwLjcgMTUuN0w3LjIgMTIuMkw4LjcgMTAuN0wxMC43IDEyLjdMMTUuMiA4LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlckNpcmNsZU91dGxpbmUgPSBcIk0xMi4xMiwxOC40NkwxOC4zLDEyLjI4QzE2Ljk0LDEyLjU5IDE1LjMxLDEzLjIgMTQuMDcsMTQuNDZDMTMuMDQsMTUuNSAxMi4zOSwxNi44MyAxMi4xMiwxOC40Nk0yMC43NSwxMEgyMS4wNUMyMS40NCwxMCAyMS43OSwxMC4yNyAyMS45MywxMC42NEMyMi4wNywxMSAyMiwxMS40MyAyMS43LDExLjcxTDExLjcsMjEuNzFDMTEuNSwyMS45IDExLjI2LDIyIDExLDIyTDEwLjY0LDIxLjkzQzEwLjI3LDIxLjc5IDEwLDIxLjQ0IDEwLDIxLjA1QzkuODQsMTcuNjYgMTAuNzMsMTQuOTYgMTIuNjYsMTMuMDNDMTUuNSwxMC4yIDE5LjYyLDEwIDIwLjc1LDEwTTEyLDJDMTYuNSwyIDIwLjM0LDUgMjEuNTgsOS4xMUwyMCw5SDE5LjQyQzE4LjI0LDYuMDcgMTUuMzYsNCAxMiw0QTgsOCAwIDAsMCA0LDEyQzQsMTUuMzYgNi4wNywxOC4yNCA5LDE5LjQyQzguOTcsMjAuMTMgOSwyMC44NSA5LjExLDIxLjU3QzUsMjAuMzMgMiwxNi41IDIsMTJDMiw2LjQ3IDYuNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlckVtb2ppID0gXCJNNS41LDJDMy41NiwyIDIsMy41NiAyLDUuNVYxOC41QzIsMjAuNDQgMy41NiwyMiA1LjUsMjJIMTZMMjIsMTZWNS41QzIyLDMuNTYgMjAuNDQsMiAxOC41LDJINS41TTUuNzUsNEgxOC4yNUExLjc1LDEuNzUgMCAwLDEgMjAsNS43NVYxNUgxOC41QzE2LjU2LDE1IDE1LDE2LjU2IDE1LDE4LjVWMjBINS43NUExLjc1LDEuNzUgMCAwLDEgNCwxOC4yNVY1Ljc1QTEuNzUsMS43NSAwIDAsMSA1Ljc1LDRNMTQuNDQsNi43N0MxNC4yOCw2Ljc3IDE0LjEyLDYuNzkgMTMuOTcsNi44M0MxMy4wMyw3LjA5IDEyLjUsOC4wNSAxMi43NCw5QzEyLjc5LDkuMTUgMTIuODYsOS4zIDEyLjk1LDkuNDRMMTYuMTgsOC41NkMxNi4xOCw4LjM5IDE2LjE2LDguMjIgMTYuMTIsOC4wNUMxNS45MSw3LjMgMTUuMjIsNi43NyAxNC40NCw2Ljc3TTguMTcsOC41QzgsOC41IDcuODUsOC41IDcuNyw4LjU1QzYuNzcsOC44MSA2LjIyLDkuNzcgNi40NywxMC43QzYuNSwxMC44NiA2LjU5LDExIDYuNjgsMTEuMTZMOS45MSwxMC4yOEM5LjkxLDEwLjExIDkuODksOS45NCA5Ljg1LDkuNzhDOS42NCw5IDguOTUsOC41IDguMTcsOC41TTE2LjcyLDExLjI2TDcuNTksMTMuNzdDOC45MSwxNS4zIDExLDE1Ljk0IDEyLjk1LDE1LjQxQzE0LjksMTQuODcgMTYuMzYsMTMuMjUgMTYuNzIsMTEuMjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlck1pbnVzID0gXCJNMTguNSAySDUuNUMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMk04IDExSDE2VjEzSDhWMTFNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyTWludXNPdXRsaW5lID0gXCJNOCAxMUgxNlYxM0g4VjExTTIyIDUuNVYxNkwxNiAyMkg1LjVDMy42IDIyIDIgMjAuNCAyIDE4LjVWNS41QzIgMy42IDMuNiAyIDUuNSAySDE4LjVDMjAuNCAyIDIyIDMuNiAyMiA1LjVNMjAgNS44QzIwIDQuOCAxOS4yIDQgMTguMiA0SDUuOEM0LjggNCA0IDQuOCA0IDUuOFYxOC4zQzQgMTkuMyA0LjggMjAuMSA1LjggMjAuMUgxNVYxOC42QzE1IDE2LjcgMTYuNiAxNS4xIDE4LjUgMTUuMUgyMFY1LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlck91dGxpbmUgPSBcIk01LjUgMkMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMkg1LjVNNS44IDRIMTguM0MxOS4zIDQgMjAuMSA0LjggMjAuMSA1LjhWMTVIMTguNkMxNi43IDE1IDE1LjEgMTYuNiAxNS4xIDE4LjVWMjBINS44QzQuOCAyMCA0IDE5LjIgNCAxOC4yVjUuOEM0IDQuOCA0LjggNCA1LjggNFwiO1xyXG5leHBvcnQgdmFyIG1kaVN0aWNrZXJQbHVzID0gXCJNMTguNSAySDUuNUMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMk0xMyAxNkgxMVYxM0g4VjExSDExVjhIMTNWMTFIMTZWMTNIMTNWMTZNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyUGx1c091dGxpbmUgPSBcIk0xMyAxMUgxNlYxM0gxM1YxNkgxMVYxM0g4VjExSDExVjhIMTNWMTFNMjIgNS41VjE2TDE2IDIySDUuNUMzLjYgMjIgMiAyMC40IDIgMTguNVY1LjVDMiAzLjYgMy42IDIgNS41IDJIMTguNUMyMC40IDIgMjIgMy42IDIyIDUuNU0yMCA1LjhDMjAgNC44IDE5LjIgNCAxOC4yIDRINS44QzQuOCA0IDQgNC44IDQgNS44VjE4LjNDNCAxOS4zIDQuOCAyMC4xIDUuOCAyMC4xSDE1VjE4LjZDMTUgMTYuNyAxNi42IDE1LjEgMTguNSAxNS4xSDIwVjUuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyUmVtb3ZlID0gXCJNMTguNSAySDUuNUMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMk0xMiAxMy40TDkuOSAxNS41TDguNSAxNC4xTDEwLjYgMTJMOC41IDkuOUw5LjkgOC41TDEyIDEwLjZMMTQuMSA4LjVMMTUuNSA5LjlMMTMuNCAxMkwxNS41IDE0LjFMMTQuMSAxNS41TDEyIDEzLjRNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyUmVtb3ZlT3V0bGluZSA9IFwiTTE2IDkuNEwxMy40IDEyTDE2IDE0LjZMMTQuNiAxNkwxMiAxMy40TDkuNCAxNkw4IDE0LjZMMTAuNiAxMkw4IDkuNEw5LjQgOEwxMiAxMC42TDE0LjYgOEwxNiA5LjRNMjIgNS41VjE2TDE2IDIySDUuNUMzLjYgMjIgMiAyMC40IDIgMTguNVY1LjVDMiAzLjYgMy42IDIgNS41IDJIMTguNUMyMC40IDIgMjIgMy42IDIyIDUuNU0yMCA1LjhDMjAgNC44IDE5LjIgNCAxOC4yIDRINS44QzQuOCA0IDQgNC44IDQgNS44VjE4LjNDNCAxOS4zIDQuOCAyMC4xIDUuOCAyMC4xSDE1VjE4LjZDMTUgMTYuNyAxNi42IDE1LjEgMTguNSAxNS4xSDIwVjUuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9ja2luZyA9IFwiTTE3LDJBMiwyIDAgMCwxIDE5LDRWN0EyLDIgMCAwLDEgMTcsOVYxN0MxNywxNy44NSAxNi41LDE4LjU3IDE1Ljc0LDE4Ljg2TDkuNSwyMS43N0M4LjUsMjIuMjQgNy4yOSwyMS44MSA2LjgzLDIwLjgxTDYsMTlDNS41LDE4IDUuOTUsMTYuOCA2Ljk1LDE2LjM0TDEwLDE0LjkxVjlBMiwyIDAgMCwxIDgsN1Y0QTIsMiAwIDAsMSAxMCwySDE3TTEwLDRWN0gxN1Y0SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0b21hY2ggPSBcIk00IDE4QzQuNjcgMTkuODUgNi4wNyAyMiAxMiAyMkMxNC4zNiAyMiAxNy4wNyAyMS45MyAxOSAyMEMyMCAxOSAyMiAxNyAyMiAxMVMyMCA0IDE4IDRDMTYuNjIgNCAxNSA0IDE0IDZWNi4wM0ExLjgyIDEuODIgMCAwIDEgMTIuMTMgNi45NUMxMSA2LjgxIDExIDYuMzcgMTEgNlYySDlWNkEyLjkyIDIuOTIgMCAwIDAgMTIgOUMxMyA5IDEzIDEwLjc4IDEzIDEyQzEzIDEzLjg5IDEyLjUgMTUuMjYgMTEgMTZDOC42OSAxNy4xNSA2LjM5IDE3IDUuNjEgMTUuNDdBMS41IDEuNSAwIDAgMCAzLjE0IDE0Ljg3QTMuNjcgMy42NyAwIDAgMCAyIDE4VjIySDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RvcCA9IFwiTTE4LDE4SDZWNkgxOFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9wQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNOSw5SDE1VjE1SDlcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9wQ2lyY2xlT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNE05LDlWMTVIMTVWOVwiO1xyXG5leHBvcnQgdmFyIG1kaVN0b3JlID0gXCJNMTIsMThINlYxNEgxMk0yMSwxNFYxMkwyMCw3SDRMMywxMlYxNEg0VjIwSDE0VjE0SDE4VjIwSDIwVjE0TTIwLDRINFY2SDIwVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RvcmUyNEhvdXIgPSBcIk0xNiwxMkgxNVYxMEgxM1Y3SDE0VjlIMTVWN0gxNk0xMSwxMEg5VjExSDExVjEySDhWOUgxMFY4SDhWN0gxMU0xOSw3VjRINVY3SDJWMjBIMTBWMTZIMTRWMjBIMjJWN0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9yZU1pbnVzID0gXCJNNCA0VjZIMjBWNE00IDdMMyAxMlYxNEg0VjIwSDEzQzEyLjk1IDE5LjY2IDEyLjkyIDE5LjMxIDEyLjkyIDE4Ljk1QzEyLjkyIDE3LjczIDEzLjMgMTYuNTMgMTQgMTUuNTNWMTRIMTUuNTRDMTYuNTQgMTMuMzMgMTcuNzEgMTIuOTYgMTguOTEgMTIuOTZDMTkuNjIgMTIuOTYgMjAuMzMgMTMuMDkgMjEgMTMuMzRWMTJMMjAgN002IDE0SDEyVjE4SDZNMTUgMThWMjBIMjNWMThcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9yZU91dGxpbmUgPSBcIk0xOC4zNiA5TDE4Ljk2IDEySDUuMDRMNS42NCA5SDE4LjM2TTIwIDRINFY2SDIwVjRNMjAgN0g0TDMgMTJWMTRINFYyMEgxNFYxNEgxOFYyMEgyMFYxNEgyMVYxMkwyMCA3TTYgMThWMTRIMTJWMThINlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9yZVBsdXMgPSBcIk00IDRWNkgyMFY0TTQgN0wzIDEyVjE0SDRWMjBIMTNDMTIuOTUgMTkuNjYgMTIuOTIgMTkuMzEgMTIuOTIgMTguOTVDMTIuOTIgMTcuNzMgMTMuMyAxNi41MyAxNCAxNS41M1YxNEgxNS41NEMxNi41NCAxMy4zMyAxNy43MSAxMi45NiAxOC45MSAxMi45NkMxOS42MiAxMi45NiAyMC4zMyAxMy4wOSAyMSAxMy4zNFYxMkwyMCA3TTYgMTRIMTJWMThINk0xOCAxNVYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFYxNVwiO1xyXG5leHBvcnQgdmFyIG1kaVN0b3JlUmVtb3ZlID0gXCJNNCA0SDIwVjZINFY0TTE1LjQ2IDE2Ljg4TDE2Ljg4IDE1LjQ2TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ2IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TTQgN0gyMEwyMSAxMlYxMy4zNEMyMC4zMyAxMy4wOSAxOS42MiAxMi45NiAxOC45MSAxMi45NkMxNy43MSAxMi45NiAxNi41NCAxMy4zMyAxNS41NCAxNEgxNFYxNS41M0MxMy4zIDE2LjUzIDEyLjkyIDE3LjczIDEyLjkyIDE4Ljk1TDEzIDIwSDRWMTRIM1YxMkw0IDdNNiAxNFYxOEgxMlYxNEg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0b3JlZnJvbnQgPSBcIk01LjA2IDNDNC42MyAzIDQuMjIgMy4xNCAzLjg0IDMuNDJDMy40NiAzLjcgMy4yNCA0LjA2IDMuMTQgNC41TDIuMTEgOC45MUMxLjg2IDEwIDIuMDYgMTAuOTIgMi42OSAxMS43M0MyLjgxIDExLjg1IDIuOTMgMTEuOTcgMy4wNCAxMi4wN0MzLjYzIDEyLjY0IDQuMjggMTMgNS4yMiAxM0M2LjE2IDEzIDYuOTEgMTIuNTkgNy40NyAxMi4wNUM4LjEgMTIuNjcgOC44NiAxMyA5LjggMTNDMTAuNjQgMTMgMTEuNDQgMTIuNjMgMTIgMTIuMDdDMTIuNjggMTIuNyAxMy40NSAxMyAxNC4zIDEzQzE1LjE3IDEzIDE1LjkxIDEyLjY3IDE2LjU0IDEyLjA1QzE3LjExIDEyLjYyIDE3Ljg2IDEzIDE4LjgxIDEzQzE5Ljc2IDEzIDIwLjQzIDEyLjY1IDIxIDEyLjA2QzIxLjA5IDExLjk3IDIxLjE4IDExLjg3IDIxLjI4IDExLjc3QzIxLjk0IDEwLjk1IDIyLjE0IDEwIDIxLjg5IDguOTFMMjAuODYgNC41QzIwLjczIDQuMDYgMjAuNSAzLjcgMjAuMTMgMy40MkMxOS43NyAzLjE0IDE5LjM4IDMgMTguOTQgM00xOC44OSA0Ljk3TDE5Ljk3IDkuMzhDMjAuMDYgOS44MSAxOS45NyAxMC4yIDE5LjY5IDEwLjU1QzE5LjQ0IDEwLjg2IDE5LjEzIDExIDE4Ljc1IDExQzE4LjQ0IDExIDE4LjE3IDEwLjkgMTcuOTUgMTAuNjZDMTcuNzMgMTAuNDMgMTcuNjEgMTAuMTYgMTcuNTggOS44NEwxNi45NyA1TTUuMDYgNUg3LjAzTDYuNDIgOS44NEM2LjMgMTAuNjMgNS45MSAxMSA1LjI1IDExQzQuODQgMTEgNC41MyAxMC44NiA0LjMxIDEwLjU1QzQuMDMgMTAuMiAzLjk0IDkuODEgNC4wMyA5LjM4TTkuMDUgNUgxMVY5LjdDMTEgMTAuMDUgMTAuODkgMTAuMzUgMTAuNjQgMTAuNjJDMTAuMzkgMTAuODggMTAuMDggMTEgOS43IDExQzkuMzYgMTEgOS4wNyAxMC44OCA4Ljg0IDEwLjU5QzguNjEgMTAuMyA4LjUgMTAgOC41IDkuNjZWOS41TTEzIDVIMTQuOTVMMTUuNSA5LjVDMTUuNTggOS45MiAxNS41IDEwLjI3IDE1LjIxIDEwLjU3QzE0Ljk1IDEwLjg3IDE0LjYxIDExIDE0LjIgMTFDMTMuODkgMTEgMTMuNjEgMTAuODggMTMuMzYgMTAuNjJDMTMuMTEgMTAuMzUgMTMgMTAuMDUgMTMgOS43TTMgMTQuMDNWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFDOS42NyAyMSAxNC4zMyAyMSAxOSAyMUMyMC4xIDIxIDIxIDIwLjExIDIxIDE5VjE0LjA1QzIwLjQ1IDE0LjYzIDE5Ljc1IDE0Ljk2IDE5IDE1QzE4IDE1LjAzIDE3LjI1IDE0Ljc0IDE2LjU0IDE0LjA1QzE1Ljk0IDE0LjY1IDE1LjE0IDE1IDE0LjMgMTVDMTMuNCAxNSAxMi42IDE0LjY0IDEyIDE0LjA3QzExLjQzIDE0LjY0IDEwLjY1IDE1IDkuNzggMTVDOC44NyAxNSA4LjA3IDE0LjY1IDcuNDcgMTQuMDVDNi44OSAxNC42NCA2LjEgMTUgNS4yMyAxNUM0LjMzIDE1IDMuNjYgMTQuNjUgMyAxNC4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9yZWZyb250T3V0bGluZSA9IFwiTTUuMDYgM0M0LjYzIDMgNC4yMiAzLjE0IDMuODQgMy40MlMzLjI0IDQuMDYgMy4xNCA0LjVMMi4xMSA4LjkxQzEuODYgMTAgMi4wNiAxMC45NSAyLjcyIDExLjc3TDMgMTIuMDVWMTlDMyAxOS41IDMuMiAyMCAzLjYxIDIwLjM5UzQuNSAyMSA1IDIxSDE5QzE5LjUgMjEgMjAgMjAuOCAyMC4zOSAyMC4zOVMyMSAxOS41IDIxIDE5VjEyLjA1TDIxLjI4IDExLjc3QzIxLjk0IDEwLjk1IDIyLjE0IDEwIDIxLjg5IDguOTFMMjAuODYgNC41QzIwLjczIDQuMDYgMjAuNSAzLjcgMjAuMTMgMy40MkMxOS43NyAzLjE0IDE5LjM4IDMgMTguOTQgM0g1LjA2TTE4Ljg5IDQuOTdMMTkuOTcgOS4zOEMyMC4wNiA5LjgxIDE5Ljk3IDEwLjIgMTkuNjkgMTAuNTVDMTkuNDQgMTAuODYgMTkuMTMgMTEgMTguNzUgMTFDMTguNDQgMTEgMTguMTcgMTAuOSAxNy45NSAxMC42NkMxNy43MyAxMC40MyAxNy42MSAxMC4xNiAxNy41OCA5Ljg0TDE2Ljk3IDVMMTguODkgNC45N001LjA2IDVINy4wM0w2LjQyIDkuODRDNi4zIDEwLjYzIDUuOTEgMTEgNS4yNSAxMUM0Ljg0IDExIDQuNTMgMTAuODYgNC4zMSAxMC41NUM0LjAzIDEwLjIgMy45NCA5LjgxIDQuMDMgOS4zOEw1LjA2IDVNOS4wNSA1SDExVjkuN0MxMSAxMC4wNSAxMC44OSAxMC4zNSAxMC42NCAxMC42MkMxMC4zOSAxMC44OCAxMC4wOCAxMSA5LjcgMTFDOS4zNiAxMSA5LjA3IDEwLjg4IDguODQgMTAuNTlTOC41IDEwIDguNSA5LjY2VjkuNUw5LjA1IDVNMTMgNUgxNC45NUwxNS41IDkuNUMxNS41OCA5LjkyIDE1LjUgMTAuMjcgMTUuMjEgMTAuNTdDMTQuOTUgMTAuODcgMTQuNjEgMTEgMTQuMiAxMUMxMy44OSAxMSAxMy42MSAxMC44OCAxMy4zNiAxMC42MkMxMy4xMSAxMC4zNSAxMyAxMC4wNSAxMyA5LjdWNU03LjQ1IDEyLjA1QzguMDggMTIuNjcgOC44NiAxMyA5LjggMTNDMTAuNjQgMTMgMTEuMzggMTIuNjcgMTIgMTIuMDVDMTIuNjkgMTIuNjcgMTMuNDUgMTMgMTQuMyAxM0MxNS4xNyAxMyAxNS45MiAxMi42NyAxNi41NSAxMi4wNUMxNy4xMSAxMi42NyAxNy44NiAxMyAxOC44IDEzSDE5LjAzVjE5SDVWMTNINS4yNUM2LjE2IDEzIDYuODkgMTIuNjcgNy40NSAxMi4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG92ZSA9IFwiTTYsMTRIOEwxMSwxN0g5TDYsMTRNNCw0SDVWM0ExLDEgMCAwLDEgNiwySDEwQTEsMSAwIDAsMSAxMSwzVjRIMTNWM0ExLDEgMCAwLDEgMTQsMkgxOEExLDEgMCAwLDEgMTksM1Y0SDIwQTIsMiAwIDAsMSAyMiw2VjE5QTIsMiAwIDAsMSAyMCwyMVYyMkgxN1YyMUg3VjIySDRWMjFBMiwyIDAgMCwxIDIsMTlWNkEyLDIgMCAwLDEgNCw0TTE4LDdBMSwxIDAgMCwxIDE5LDhBMSwxIDAgMCwxIDE4LDlBMSwxIDAgMCwxIDE3LDhBMSwxIDAgMCwxIDE4LDdNMTQsN0ExLDEgMCAwLDEgMTUsOEExLDEgMCAwLDEgMTQsOUExLDEgMCAwLDEgMTMsOEExLDEgMCAwLDEgMTQsN00yMCw2SDRWMTBIMjBWNk00LDE5SDIwVjEySDRWMTlNNiw3QTEsMSAwIDAsMSA3LDhBMSwxIDAgMCwxIDYsOUExLDEgMCAwLDEgNSw4QTEsMSAwIDAsMSA2LDdNMTMsMTRIMTVMMTgsMTdIMTZMMTMsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RyYXRlZ3kgPSBcIk02LjkxIDUuNUw5LjIxIDcuNzlMNy43OSA5LjIxTDUuNSA2LjkxTDMuMjEgOS4yMUwxLjc5IDcuNzlMNC4wOSA1LjVMMS43OSAzLjIxTDMuMjEgMS43OUw1LjUgNC4wOUw3Ljc5IDEuNzlMOS4yMSAzLjIxTTIyLjIxIDE2LjIxTDIwLjc5IDE0Ljc5TDE4LjUgMTcuMDlMMTYuMjEgMTQuNzlMMTQuNzkgMTYuMjFMMTcuMDkgMTguNUwxNC43OSAyMC43OUwxNi4yMSAyMi4yMUwxOC41IDE5LjkxTDIwLjc5IDIyLjIxTDIyLjIxIDIwLjc5TDE5LjkxIDE4LjVNMjAuNCA2LjgzTDE3LjE4IDExTDE1LjYgOS43M0wxNi43NyA4LjIzQTkuMDggOS4wOCAwIDAgMCAxMC4xMSAxMy44NUE0LjUgNC41IDAgMSAxIDcuNSAxM0E0IDQgMCAwIDEgOC4yOCAxMy4wOEExMS4yNyAxMS4yNyAwIDAgMSAxNi40MyA2LjI2TDE1IDUuMThMMTYuMjcgMy42TTEwIDE3LjVBMi41IDIuNSAwIDEgMCA3LjUgMjBBMi41IDIuNSAwIDAgMCAxMCAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0cmV0Y2hUb1BhZ2UgPSBcIk0yMCwySDRDMi44OSwyIDIsMi44OSAyLDRWMjBDMiwyMS4xMSAyLjg5LDIyIDQsMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWNEMyMiwyLjg5IDIxLjExLDIgMjAsMk05LDE5SDVWMTVMNi4yOSwxNi4yOUw3LjgzLDE0Ljc1TDkuMjUsMTYuMTdMNy43MSwxNy43MU03LjgzLDkuMjVMNi4yOSw3LjcxTDUsOVY1SDlMNy43MSw2LjI5TDkuMjUsNy44M00xOSwxOUgxNUwxNi4yOSwxNy43MUwxNC43NSwxNi4xN0wxNi4xNywxNC43NUwxNy43MSwxNi4yOUwxOSwxNU0xOSw5TDE3LjcxLDcuNzFMMTYuMTcsOS4yNUwxNC43NSw3LjgzTDE2LjI5LDYuMjlMMTUsNUgxOVwiO1xyXG5leHBvcnQgdmFyIG1kaVN0cmV0Y2hUb1BhZ2VPdXRsaW5lID0gXCJNMjAsMkg0QzIuODksMiAyLDIuODkgMiw0VjIwQzIsMjEuMTEgMi44OSwyMiA0LDIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjRDMjIsMi44OSAyMS4xMSwyIDIwLDJNMjAsMjBINFY0SDIwTTguODMsMTAuMjVMNy4yOSw4LjcxTDYsMTBWNkgxMEw4LjcxLDcuMjlMMTAuMjUsOC44M00xMy43NSw4LjgzTDE1LjI5LDcuMjlMMTQsNkgxOFYxMEwxNi43MSw4LjcxTDE1LjE3LDEwLjI1TTE1LjE3LDEzLjc1TDE2LjcxLDE1LjI5TDE4LDE0VjE4SDE0TDE1LjI5LDE2LjcxTDEzLjc1LDE1LjE3TTEwLjI1LDE1LjE3TDguNzEsMTYuNzFMMTAsMThINlYxNEw3LjI5LDE1LjI5TDguODMsMTMuNzVcIjtcclxuZXhwb3J0IHZhciBtZGlTdHJpbmdMaWdodHMgPSBcIk0yMi41NiAxMS4zOUMyMi4zNiAxMC41OSAyMS44MiA5Ljg1IDIxLjA1IDkuNDRMMjAuNjMgNy43NEMyMS4xMSA3LjU4IDIxLjU3IDcuNDEgMjIgNy4yM1Y1QzIwIDYuMDcgMTYuNTMgNy4wMyAxMiA3LjAzUzQgNi4wNyAyIDVWNy4yM0MyLjQzIDcuNDEgMi44OSA3LjU4IDMuMzcgNy43NEwyLjk1IDkuNDRDMi4xOCA5Ljg1IDEuNjQgMTAuNTkgMS40NCAxMS4zOUMuOTA1IDEzLjU3IC4zODUgMTcuMzEgMi45MiAxNy45M0M0IDE4LjIgNiAxNy44OSA3LjI3IDEyLjgyQzcuNDYgMTIgNy4zMyAxMS4xMiA2Ljg0IDEwLjM5TDcuMjYgOC42N0M4LjE0IDguODEgOS4wNSA4LjkgMTAgOC45NlYxMC43NEM5LjM1IDExLjMzIDkgMTIuMTcgOSAxM0M5IDE1LjI0IDkuMzkgMTkgMTIgMTlDMTMuMTIgMTkgMTUgMTguMjIgMTUgMTNDMTUgMTIuMTcgMTQuNjUgMTEuMzMgMTQgMTAuNzRWOC45NkMxNC45NSA4LjkgMTUuODYgOC44MSAxNi43NCA4LjY3TDE3LjE2IDEwLjM5QzE2LjY3IDExLjEyIDE2LjU0IDEyIDE2LjczIDEyLjgyQzE4IDE3Ljg5IDIwIDE4LjIgMjEuMDggMTcuOTNDMjMuNjEgMTcuMzEgMjMuMDkgMTMuNTcgMjIuNTYgMTEuMzlNNS44MSAxMi40N0M1LjgxIDEyLjQ3IDQuNzQgMTYuODQgMy4yOCAxNi41QzEuODIgMTYuMTIgMi45IDExLjc1IDIuOSAxMS43NVMzLjI2IDEwLjI5IDQuNzEgMTAuNjUgNS44MSAxMi40NyA1LjgxIDEyLjQ3TTEyIDE3LjVDMTAuNSAxNy41IDEwLjUgMTMgMTAuNSAxM1MxMC41IDExLjUgMTIgMTEuNSAxMy41IDEzIDEzLjUgMTMgMTMuNSAxNy41IDEyIDE3LjVNMjAuNzIgMTYuNUMxOS4yNyAxNi44NCAxOC4xOSAxMi40NyAxOC4xOSAxMi40N1MxNy44MyAxMSAxOS4yOSAxMC42NSAyMS4xIDExLjc1IDIxLjEgMTEuNzUgMjIuMTggMTYuMTIgMjAuNzIgMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdHJpbmdMaWdodHNPZmYgPSBcIk0xNCAxMC43NFY4Ljk2QzE0Ljk1IDguOSAxNS44NiA4LjgxIDE2Ljc0IDguNjdMMTcuMTYgMTAuMzlDMTYuNjcgMTEuMTIgMTYuNTQgMTIgMTYuNzMgMTIuODJDMTYuODIgMTMuMTcgMTYuOTEgMTMuNSAxNyAxMy44TDIxLjEyIDE3LjkyQzIzLjYxIDE3LjI2IDIzLjA5IDEzLjU1IDIyLjU2IDExLjM5QzIyLjM2IDEwLjU5IDIxLjgyIDkuODUgMjEuMDUgOS40NEwyMC42MyA3Ljc0QzIxLjExIDcuNTggMjEuNTcgNy40MSAyMiA3LjIzVjVDMjAgNi4wNyAxNi41MyA3LjAzIDEyIDcuMDNDMTEuMzcgNy4wMyAxMC43NiA3IDEwLjE3IDYuOTdNMjAuNzIgMTYuNUMxOS4yNyAxNi44NCAxOC4xOSAxMi40NyAxOC4xOSAxMi40N1MxNy44MyAxMSAxOS4yOSAxMC42NSAyMS4xIDExLjc1IDIxLjEgMTEuNzUgMjIuMTggMTYuMTIgMjAuNzIgMTYuNU0xNC45NSAxNC4yOUwxMy41IDEyLjgzVjEyLjgzTDEyLjE4IDExLjVIMTIuMThMMTAgOS4zNFY5LjM0TDkuNTggOC45M0g5LjU5TDcuMzIgNi42Nkg3LjMyTDIuMzkgMS43M0wxLjExIDNMMy45MSA1LjhDMy4xOSA1LjU1IDIuNTMgNS4yOCAyIDVWNy4yM0MyLjQzIDcuNDEgMi44OSA3LjU4IDMuMzcgNy43NEwyLjk1IDkuNDRDMi4xOCA5Ljg1IDEuNjQgMTAuNTkgMS40NCAxMS4zOUMuOTA1IDEzLjU3IC4zODUgMTcuMzEgMi45MiAxNy45M0M0IDE4LjIgNiAxNy44OSA3LjI3IDEyLjgyQzcuNDYgMTIgNy4zMyAxMS4xMiA2Ljg0IDEwLjM5TDcuMTcgOS4wNkw5LjUgMTEuMzhDOS4xOCAxMS44NyA5IDEyLjQ0IDkgMTNDOSAxNS4yNCA5LjM5IDE5IDEyIDE5QzEyLjggMTkgMTMuOTcgMTguNTkgMTQuNTkgMTYuNUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwxNC45NSAxNC4zTDE0Ljk1IDE0LjI5TTUuODEgMTIuNDdDNS44MSAxMi40NyA0Ljc0IDE2Ljg0IDMuMjggMTYuNUMxLjgyIDE2LjEyIDIuOSAxMS43NSAyLjkgMTEuNzVTMy4yNiAxMC4yOSA0LjcxIDEwLjY1IDUuODEgMTIuNDcgNS44MSAxMi40N00xMiAxNy41QzEwLjUgMTcuNSAxMC41IDEzIDEwLjUgMTNTMTAuNSAxMi43NyAxMC42IDEyLjVMMTMuMzIgMTUuMjFDMTMuMTMgMTYuMzUgMTIuNzYgMTcuNSAxMiAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YmRpcmVjdG9yeUFycm93TGVmdCA9IFwiTTExLDlMMTIuNDIsMTAuNDJMOC44MywxNEgxOFY0SDIwVjE2SDguODNMMTIuNDIsMTkuNThMMTEsMjFMNSwxNUwxMSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YmRpcmVjdG9yeUFycm93UmlnaHQgPSBcIk0xOSwxNUwxMywyMUwxMS41OCwxOS41OEwxNS4xNywxNkg0VjRINlYxNEgxNS4xN0wxMS41OCwxMC40MkwxMyw5TDE5LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1Ym1hcmluZSA9IFwiTTggMy42N0M2Ljc4IDQuNTMgNS4zOSA0LjkzIDQgNUgyVjdINEM1LjM3IDcgNi43NCA2LjY1IDggNkMxMC41IDcuMyAxMy41IDcuMyAxNiA2QzE3LjI2IDYuNjUgMTguNjIgNi45NCAyMCA3SDIyVjVIMjBDMTguNjEgNSAxNy4yMiA0LjUzIDE2IDMuNjdDMTMuNTYgNS4zOCAxMC40NCA1LjM4IDggMy42N00xNiA4LjY3TDE1IDEwVjEySDE0TDEyIDE0SDlMNiAxNkw1IDE0SDRWMTZMMiAxN0w0IDE4VjIwSDUuMTRMNiAxOEw5IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFYxNkEyIDIgMCAwIDAgMjAgMTRIMThMMTcgMTNWMTJIMTZWMTBIMTdWOC42N1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdWJ0aXRsZXMgPSBcIk0yMCw0SDRBMiwyIDAgMCwwIDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkEyLDIgMCAwLDAgMjAsNE00LDEySDhWMTRINFYxMk0xNCwxOEg0VjE2SDE0VjE4TTIwLDE4SDE2VjE2SDIwVjE4TTIwLDE0SDEwVjEySDIwVjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YnRpdGxlc091dGxpbmUgPSBcIk0yMCw0QTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgyME0yMCwxOFY2SDRWMThIMjBNNiwxMEg4VjEySDZWMTBNNiwxNEgxNFYxNkg2VjE0TTE2LDE0SDE4VjE2SDE2VjE0TTEwLDEwSDE4VjEySDEwVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YndheSA9IFwiTTguNSwxNUExLDEgMCAwLDEgOS41LDE2QTEsMSAwIDAsMSA4LjUsMTdBMSwxIDAgMCwxIDcuNSwxNkExLDEgMCAwLDEgOC41LDE1TTcsOUgxN1YxNEg3VjlNMTUuNSwxNUExLDEgMCAwLDEgMTYuNSwxNkExLDEgMCAwLDEgMTUuNSwxN0ExLDEgMCAwLDEgMTQuNSwxNkExLDEgMCAwLDEgMTUuNSwxNU0xOCwxNS44OFY5QzE4LDYuMzggMTUuMzIsNiAxMiw2QzksNiA2LDYuMzcgNiw5VjE1Ljg4QTIuNjIsMi42MiAwIDAsMCA4LjYyLDE4LjVMNy41LDE5LjYyVjIwSDkuMTdMMTAuNjcsMTguNUgxMy41TDE1LDIwSDE2LjVWMTkuNjJMMTUuMzcsMTguNUMxNi44MiwxOC41IDE4LDE3LjMzIDE4LDE1Ljg4TTE3LjgsMi44QzIwLjQ3LDMuODQgMjIsNi4wNSAyMiw4Ljg2VjIySDJWOC44NkMyLDYuMDUgMy41MywzLjg0IDYuMiwyLjhDOCwyLjA5IDEwLjE0LDIgMTIsMkMxMy44NiwyIDE2LDIuMDkgMTcuOCwyLjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vid2F5QWxlcnRWYXJpYW50ID0gXCJNMTYgMTFWNkgxMVYxMUgxNk0xNC41IDE3QzE1LjMgMTcgMTYgMTYuMyAxNiAxNS41QzE2IDE0LjcgMTUuMyAxNCAxNC41IDE0UzEzIDE0LjcgMTMgMTUuNUMxMyAxNi4zIDEzLjcgMTcgMTQuNSAxN005IDExVjZINFYxMUg5TTUuNSAxN0M2LjMgMTcgNyAxNi4zIDcgMTUuNUM3IDE0LjcgNi4zIDE0IDUuNSAxNFM0IDE0LjcgNCAxNS41QzQgMTYuMyA0LjcgMTcgNS41IDE3TTEwIDJDMTQuNCAyIDE4IDIuNSAxOCA2VjE1LjVDMTggMTcuNCAxNi40IDE5IDE0LjUgMTlMMTYgMjAuNVYyMUg0VjIwLjVMNS41IDE5QzMuNiAxOSAyIDE3LjQgMiAxNS41VjZDMiAyLjUgNS42IDIgMTAgMk0yMCAxM1Y3SDIyVjEzSDIwTTIwIDE3VjE1SDIyVjE3SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YndheVZhcmlhbnQgPSBcIk0xOCwxMUgxM1Y2SDE4TTE2LjUsMTdBMS41LDEuNSAwIDAsMSAxNSwxNS41QTEuNSwxLjUgMCAwLDEgMTYuNSwxNEExLjUsMS41IDAgMCwxIDE4LDE1LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3TTExLDExSDZWNkgxMU03LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE1LjVBMS41LDEuNSAwIDAsMSA3LjUsMTRBMS41LDEuNSAwIDAsMSA5LDE1LjVBMS41LDEuNSAwIDAsMSA3LjUsMTdNMTIsMkM3LjU4LDIgNCwyLjUgNCw2VjE1LjVBMy41LDMuNSAwIDAsMCA3LjUsMTlMNiwyMC41VjIxSDE4VjIwLjVMMTYuNSwxOUEzLjUsMy41IDAgMCwwIDIwLDE1LjVWNkMyMCwyLjUgMTYuNDIsMiAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1bW1pdCA9IFwiTTE1LDNIMTdMMjIsNUwxNyw3VjEwLjE3TDIyLDIxSDJMOCwxM0wxMS41LDE3LjdMMTUsMTAuMTdWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdW5nbGFzc2VzID0gXCJNNywxN0g0QzIuMzgsMTcgMC45NiwxNS43NCAwLjc2LDE0LjE0TDAuMjYsMTEuMTVDMC4xNSwxMC4zIDAuMzksOS41IDAuOTEsOC45MkMxLjQzLDguMzQgMi4xOSw4IDMsOEg5QzkuODMsOCAxMC41OCw4LjM1IDExLjA2LDguOTZDMTEuMTcsOS4xMSAxMS4yNyw5LjI3IDExLjM1LDkuNDVDMTEuNzgsOS4zNiAxMi4yMiw5LjM2IDEyLjY0LDkuNDVDMTIuNzIsOS4yNyAxMi44Miw5LjExIDEyLjk0LDguOTZDMTMuNDEsOC4zNSAxNC4xNiw4IDE1LDhIMjFDMjEuODEsOCAyMi41Nyw4LjM0IDIzLjA5LDguOTJDMjMuNiw5LjUgMjMuODQsMTAuMyAyMy43NCwxMS4xMUwyMy4yMywxNC4xOEMyMy4wNCwxNS43NCAyMS42MSwxNyAyMCwxN0gxN0MxNS40NCwxNyAxMy45MiwxNS44MSAxMy41NCwxNC4zTDEyLjY0LDExLjU5QzEyLjI2LDExLjMxIDExLjczLDExLjMxIDExLjM1LDExLjU5TDEwLjQzLDE0LjM3QzEwLjA3LDE1LjgyIDguNTYsMTcgNywxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdXJyb3VuZFNvdW5kID0gXCJNMjAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZBMiwyIDAgMCwwIDIwLDRNNy43NiwxNi4yNEw2LjM1LDE3LjY1QzQuNzgsMTYuMSA0LDE0LjA1IDQsMTJDNCw5Ljk1IDQuNzgsNy45IDYuMzQsNi4zNEw3Ljc1LDcuNzVDNi41OSw4LjkzIDYsMTAuNDYgNiwxMkM2LDEzLjU0IDYuNTksMTUuMDcgNy43NiwxNi4yNE0xMiwxNkE0LDQgMCAwLDEgOCwxMkE0LDQgMCAwLDEgMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2TTE3LjY2LDE3LjY2TDE2LjI1LDE2LjI1QzE3LjQxLDE1LjA3IDE4LDEzLjU0IDE4LDEyQzE4LDEwLjQ2IDE3LjQxLDguOTMgMTYuMjQsNy43NkwxNy42NSw2LjM1QzE5LjIyLDcuOSAyMCw5Ljk1IDIwLDEyQzIwLDE0LjA1IDE5LjIyLDE2LjEgMTcuNjYsMTcuNjZNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1cnJvdW5kU291bmQyMCA9IFwiTTE3LDdIMTlBMiwyIDAgMCwxIDIxLDlWMTVBMiwyIDAgMCwxIDE5LDE3SDE3QTIsMiAwIDAsMSAxNSwxNVY5QTIsMiAwIDAsMSAxNyw3TTE3LDlWMTVIMTlWOUgxN005LDE3SDNWMTVMNyw5SDNWN0g3QTIsMiAwIDAsMSA5LDlDOSw5LjQyIDguODcsOS44MSA4LjY1LDEwLjEzTDUuNDEsMTVIOVYxN00xMiwxN0ExLDEgMCAwLDEgMTEsMTZBMSwxIDAgMCwxIDEyLDE1QTEsMSAwIDAsMSAxMywxNkExLDEgMCAwLDEgMTIsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vycm91bmRTb3VuZDIxID0gXCJNNCA3VjlIOFYxMUg2QTIgMiAwIDAgMCA0IDEzVjE3SDEwVjE1SDZWMTNIOEEyIDIgMCAwIDAgMTAgMTFWOUEyIDIgMCAwIDAgOCA3SDRNMTYgN1Y5SDE4VjE3SDIwVjdIMTZNMTIgMTVWMTdIMTRWMTVIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vycm91bmRTb3VuZDMxID0gXCJNMTMsMTdBMSwxIDAgMCwxIDEyLDE2QTEsMSAwIDAsMSAxMywxNUExLDEgMCAwLDEgMTQsMTZBMSwxIDAgMCwxIDEzLDE3TTE5LDdWMTVIMjBWMTdIMTZWMTVIMTdWOUgxNkwxNyw3SDE5TTQsN0g4QTIsMiAwIDAsMSAxMCw5VjE1QTIsMiAwIDAsMSA4LDE3SDRWMTVIOFYxM0g1VjExSDhWOUg0VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vycm91bmRTb3VuZDUxID0gXCJNMTMsMTdBMSwxIDAgMCwxIDEyLDE2QTEsMSAwIDAsMSAxMywxNUExLDEgMCAwLDEgMTQsMTZBMSwxIDAgMCwxIDEzLDE3TTE5LDdWMTVIMjBWMTdIMTZWMTVIMTdWOUgxNkwxNyw3SDE5TTYsMTNBMiwyIDAgMCwxIDQsMTFWN0gxMFY5SDZWMTFIOEEyLDIgMCAwLDEgMTAsMTNWMTVBMiwyIDAgMCwxIDgsMTdINFYxNUg4VjEzSDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vycm91bmRTb3VuZDUxMiA9IFwiTTIgOFYxM0g1VjE0SDJWMTZINUM2LjExIDE2IDcgMTUuMTEgNyAxNFYxM0M3IDExLjkgNi4xMSAxMSA1IDExSDRWMTBIN1Y4SDJNMTAgOFYxMEgxMVYxNkgxM1Y4SDEwTTE3IDhWMTBIMjBWMTFIMTlDMTcuOSAxMSAxNyAxMS45IDE3IDEzVjE2SDIyVjE0SDE5VjEzSDIwQzIxLjExIDEzIDIyIDEyLjExIDIyIDExVjEwQzIyIDguOSAyMS4xMSA4IDIwIDhIMTdNOCAxNFYxNkgxMFYxNEg4TTE0IDE0VjE2SDE2VjE0SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1cnJvdW5kU291bmQ3MSA9IFwiTTEyLDE3QTEsMSAwIDAsMSAxMSwxNkExLDEgMCAwLDEgMTIsMTVBMSwxIDAgMCwxIDEzLDE2QTEsMSAwIDAsMSAxMiwxN00xOCw3VjE1SDE5VjE3SDE1VjE1SDE2VjlIMTVMMTYsN0gxOE0xMSw3TDgsMTdINkw4LjQsOUg1VjdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3ZnID0gXCJNNS4xMywxMC43MUg4Ljg3TDYuMjIsOC4wNkM1LjIxLDguMDYgNC4zOSw3LjI0IDQuMzksNi4yMkExLjgzLDEuODMgMCAwLDEgNi4yMiw0LjM5QzcuMjQsNC4zOSA4LjA2LDUuMjEgOC4wNiw2LjIyTDEwLjcxLDguODdWNS4xM0MxMCw0LjQxIDEwLDMuMjUgMTAuNzEsMi41NEMxMS40MiwxLjgyIDEyLjU4LDEuODIgMTMuMjksMi41NEMxNCwzLjI1IDE0LDQuNDEgMTMuMjksNS4xM1Y4Ljg3TDE1Ljk1LDYuMjJDMTUuOTUsNS4yMSAxNi43Niw0LjM5IDE3Ljc4LDQuMzlDMTguNzksNC4zOSAxOS42MSw1LjIxIDE5LjYxLDYuMjJDMTkuNjEsNy4yNCAxOC43OSw4LjA2IDE3Ljc4LDguMDZMMTUuMTMsMTAuNzFIMTguODdDMTkuNTksMTAgMjAuNzUsMTAgMjEuNDYsMTAuNzFDMjIuMTgsMTEuNDIgMjIuMTgsMTIuNTggMjEuNDYsMTMuMjlDMjAuNzUsMTQgMTkuNTksMTQgMTguODcsMTMuMjlIMTUuMTNMMTcuNzgsMTUuOTVDMTguNzksMTUuOTUgMTkuNjEsMTYuNzYgMTkuNjEsMTcuNzhBMS44MywxLjgzIDAgMCwxIDE3Ljc4LDE5LjYxQzE2Ljc2LDE5LjYxIDE1Ljk1LDE4Ljc5IDE1Ljk1LDE3Ljc4TDEzLjI5LDE1LjEzVjE4Ljg3QzE0LDE5LjU5IDE0LDIwLjc1IDEzLjI5LDIxLjQ2QzEyLjU4LDIyLjE4IDExLjQyLDIyLjE4IDEwLjcxLDIxLjQ2QzEwLDIwLjc1IDEwLDE5LjU5IDEwLjcxLDE4Ljg3VjE1LjEzTDguMDYsMTcuNzhDOC4wNiwxOC43OSA3LjI0LDE5LjYxIDYuMjIsMTkuNjFDNS4yMSwxOS42MSA0LjM5LDE4Ljc5IDQuMzksMTcuNzhDNC4zOSwxNi43NiA1LjIxLDE1Ljk1IDYuMjIsMTUuOTVMOC44NywxMy4yOUg1LjEzQzQuNDEsMTQgMy4yNSwxNCAyLjU0LDEzLjI5QzEuODIsMTIuNTggMS44MiwxMS40MiAyLjU0LDEwLjcxQzMuMjUsMTAgNC40MSwxMCA1LjEzLDEwLjcxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN3YXBIb3Jpem9udGFsID0gXCJNMjEsOUwxNyw1VjhIMTBWMTBIMTdWMTNNNywxMUwzLDE1TDcsMTlWMTZIMTRWMTRIN1YxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwSG9yaXpvbnRhbEJvbGQgPSBcIk04LDEwVjEzSDE0VjE4SDhWMjFMMiwxNS41TDgsMTBNMjIsOC41TDE2LDNWNkgxMFYxMUgxNlYxNEwyMiw4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3dhcEhvcml6b250YWxDaXJjbGUgPSBcIk0yMiAxMkMyMiA2LjUgMTcuNSAyIDEyIDJTMiA2LjUgMiAxMiA2LjUgMjIgMTIgMjIgMjIgMTcuNSAyMiAxMk0xNSA2LjVMMTguNSAxMEwxNSAxMy41VjExSDExVjlIMTVWNi41TTkgMTcuNUw1LjUgMTRMOSAxMC41VjEzSDEzVjE1SDlWMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwSG9yaXpvbnRhbENpcmNsZU91dGxpbmUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNMTIgMjBDNy41OSAyMCA0IDE2LjQxIDQgMTJTNy41OSA0IDEyIDQgMjAgNy41OSAyMCAxMiAxNi40MSAyMCAxMiAyME0xNSA2LjVWOUgxMVYxMUgxNVYxMy41TDE4LjUgMTBMMTUgNi41TTkgMTAuNUw1LjUgMTRMOSAxNy41VjE1SDEzVjEzSDlWMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwSG9yaXpvbnRhbFZhcmlhbnQgPSBcIk00LDZMOCwxMFY3SDE2QTIsMiAwIDAsMSAxOCw5QTIsMiAwIDAsMSAxNiwxMUg4QTQsNCAwIDAsMCA0LDE1QTQsNCAwIDAsMCA4LDE5SDE2VjIyTDIwLDE4TDE2LDE0VjE3SDhBMiwyIDAgMCwxIDYsMTVBMiwyIDAgMCwxIDgsMTNIMTZBNCw0IDAgMCwwIDIwLDlBNCw0IDAgMCwwIDE2LDVIOFYyTDQsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwVmVydGljYWwgPSBcIk05LDNMNSw3SDhWMTRIMTBWN0gxM00xNiwxN1YxMEgxNFYxN0gxMUwxNSwyMUwxOSwxN0gxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwVmVydGljYWxCb2xkID0gXCJNMTQsOEgxMVYxNEg2VjhIM0w4LjUsMkwxNCw4TTE1LjUsMjJMMjEsMTZIMThWMTBIMTNWMTZIMTBMMTUuNSwyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwVmVydGljYWxDaXJjbGUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNNi41IDlMMTAgNS41TDEzLjUgOUgxMVYxM0g5VjlINi41TTE3LjUgMTVMMTQgMTguNUwxMC41IDE1SDEzVjExSDE1VjE1SDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3dhcFZlcnRpY2FsQ2lyY2xlT3V0bGluZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMlM2LjUgMjIgMTIgMjIgMjIgMTcuNSAyMiAxMiAxNy41IDIgMTIgMk0xMiAyMEM3LjU5IDIwIDQgMTYuNDEgNCAxMlM3LjU5IDQgMTIgNCAyMCA3LjU5IDIwIDEyIDE2LjQxIDIwIDEyIDIwTTYuNSA5TDEwIDUuNUwxMy41IDlIMTFWMTNIOVY5SDYuNU0xNy41IDE1TDE0IDE4LjVMMTAuNSAxNUgxM1YxMUgxNVYxNUgxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN3YXBWZXJ0aWNhbFZhcmlhbnQgPSBcIk0xOCw0TDE0LDhIMTdWMTZBMiwyIDAgMCwxIDE1LDE4QTIsMiAwIDAsMSAxMywxNlY4QTQsNCAwIDAsMCA5LDRBNCw0IDAgMCwwIDUsOFYxNkgyTDYsMjBMMTAsMTZIN1Y4QTIsMiAwIDAsMSA5LDZBMiwyIDAgMCwxIDExLDhWMTZBNCw0IDAgMCwwIDE1LDIwQTQsNCAwIDAsMCAxOSwxNlY4SDIyTDE4LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3dpbSA9IFwiTTIsMThDNC4yMiwxNyA2LjQ0LDE2IDguNjcsMTZDMTAuODksMTYgMTMuMTEsMTggMTUuMzMsMThDMTcuNTYsMTggMTkuNzgsMTYgMjIsMTZWMTlDMTkuNzgsMTkgMTcuNTYsMjEgMTUuMzMsMjFDMTMuMTEsMjEgMTAuODksMTkgOC42NywxOUM2LjQ0LDE5IDQuMjIsMjAgMiwyMVYxOE04LjY3LDEzQzcuODksMTMgNy4xMiwxMy4xMiA2LjM1LDEzLjMyTDExLjI3LDkuODhMMTAuMjMsOC42NEMxMC4wOSw4LjQ3IDEwLDguMjQgMTAsOEMxMCw3LjY2IDEwLjE3LDcuMzUgMTAuNDQsNy4xN0wxNi4xNiwzLjE3TDE3LjMxLDQuOEwxMi40Nyw4LjE5TDE3LjcsMTQuNDJDMTYuOTEsMTQuNzUgMTYuMTIsMTUgMTUuMzMsMTVDMTMuMTEsMTUgMTAuODksMTMgOC42NywxM00xOCw3QTIsMiAwIDAsMSAyMCw5QTIsMiAwIDAsMSAxOCwxMUEyLDIgMCAwLDEgMTYsOUEyLDIgMCAwLDEgMTgsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTd2l0Y2ggPSBcIk0xMywxOEgxNEExLDEgMCAwLDEgMTUsMTlIMjJWMjFIMTVBMSwxIDAgMCwxIDE0LDIySDEwQTEsMSAwIDAsMSA5LDIxSDJWMTlIOUExLDEgMCAwLDEgMTAsMThIMTFWMTZIOEExLDEgMCAwLDEgNywxNVYzQTEsMSAwIDAsMSA4LDJIMTZBMSwxIDAgMCwxIDE3LDNWMTVBMSwxIDAgMCwxIDE2LDE2SDEzVjE4TTEzLDZIMTRWNEgxM1Y2TTksNFY2SDExVjRIOU05LDhWMTBIMTFWOEg5TTksMTJWMTRIMTFWMTJIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTd29yZCA9IFwiTTYuOTIsNUg1TDE0LDE0TDE1LDEzLjA2TTE5Ljk2LDE5LjEyTDE5LjEyLDE5Ljk2QzE4LjczLDIwLjM1IDE4LjEsMjAuMzUgMTcuNzEsMTkuOTZMMTQuNTksMTYuODRMMTEuOTEsMTkuNUwxMC41LDE4LjA5TDExLjkyLDE2LjY3TDMsNy43NVYzSDcuNzVMMTYuNjcsMTEuOTJMMTguMDksMTAuNUwxOS41LDExLjkxTDE2LjgzLDE0LjU4TDE5Ljk1LDE3LjdDMjAuMzUsMTguMSAyMC4zNSwxOC43MyAxOS45NiwxOS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTd29yZENyb3NzID0gXCJNNi4yLDIuNDRMMTguMSwxNC4zNEwyMC4yMiwxMi4yMkwyMS42MywxMy42M0wxOS4xNiwxNi4xTDIyLjM0LDE5LjI4QzIyLjczLDE5LjY3IDIyLjczLDIwLjMgMjIuMzQsMjAuNjlMMjEuNjMsMjEuNEMyMS4yNCwyMS43OSAyMC42MSwyMS43OSAyMC4yMiwyMS40TDE3LDE4LjIzTDE0LjU2LDIwLjdMMTMuMTUsMTkuMjlMMTUuMjcsMTcuMTdMMy4zNyw1LjI3VjIuNDRINi4yTTE1Ljg5LDEwTDIwLjYzLDUuMjZWMi40NEgxNy44TDEzLjA2LDcuMThMMTUuODksMTBNMTAuOTQsMTVMOC4xMSwxMi4xM0w1LjksMTQuMzRMMy43OCwxMi4yMkwyLjM3LDEzLjYzTDQuODQsMTYuMUwxLjY2LDE5LjI5QzEuMjcsMTkuNjggMS4yNywyMC4zMSAxLjY2LDIwLjdMMi4zNywyMS40MUMyLjc2LDIxLjggMy4zOSwyMS44IDMuNzgsMjEuNDFMNywxOC4yM0w5LjQ0LDIwLjdMMTAuODUsMTkuMjlMOC43MywxNy4xN0wxMC45NCwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTeWxsYWJhcnlIYW5ndWwgPSBcIk04IDRWNkg0VjhINi4zOUM1LjU1IDguNzQgNSA5LjggNSAxMUM1IDEzLjIgNi44IDE1IDkgMTVDMTEuMiAxNSAxMyAxMy4yIDEzIDExQzEzIDkuOCAxMi40NSA4Ljc0IDExLjYxIDhIMTRWNkgxMFY0TTE1IDRWMTZIMTdWMTFIMjBWOUgxN1Y0TTkgOUMxMC4xMiA5IDExIDkuODggMTEgMTFDMTEgMTIuMTIgMTAuMTIgMTMgOSAxM0M3Ljg4IDEzIDcgMTIuMTIgNyAxMUM3IDkuODggNy44OCA5IDkgOU03IDE2VjIwSDE3VjE4SDlWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3lsbGFiYXJ5SGlyYWdhbmEgPSBcIk05IDRWNkg2VjhIOVYxMEM2LjI1IDEwIDQgMTIuMjcgNCAxNS4wM0M0IDE3LjggNi4yNiAyMC4wNiA5LjAzIDIwLjA2QzkuODkgMjAuMDYgMTAuNzIgMTkuNzcgMTEuNCAxOS4yNkMxMS42MyAxOS41NCAxMS44OCAxOS44MiAxMi4xNSAyMC4wOUwxMy41NiAxOC42N0MxMy4zIDE4LjQyIDEzLjA3IDE4LjE1IDEyLjg2IDE3Ljg5TDEzLjg2IDE2Ljg5QzE0LjkzIDE1LjgyIDE1Ljc4IDE0LjIzIDE2LjQyIDEyLjU5QzE3LjMxIDEzLjExIDE4IDEzLjkgMTggMTVDMTggMTYuMzIgMTcuNDcgMTcuNiAxNi41NCAxOC41NEwxNy45NSAxOS45NUMxOS4yNiAxOC42NCAyMCAxNi44NiAyMCAxNUMyMCAxMy4wNCAxOC44MiAxMS4zNiAxNy4xNSAxMC41NUwxNy41IDkuMjlMMTUuNTUgOC43OEwxNS4yMSAxMC4wNUMxNS4xMyAxMC4wNSAxNS4wNiAxMCAxNC45NyAxMEgxMVY4SDE2VjZIMTFWNE0xMSAxMkgxNC41QzEzLjk0IDEzLjM3IDEzLjE5IDE0LjcyIDEyLjQ0IDE1LjQ3TDExLjc5IDE2LjEzQzExLjI1IDE0LjkzIDExIDEzLjU5IDExIDEyTTkgMTJDOSAxNC4wNyA5LjQxIDE1Ljk0IDEwLjMgMTcuNTlDOS45NCAxNy44OSA5LjUgMTguMDYgOS4wMyAxOC4wNkM3LjMzIDE4LjA2IDYgMTYuNzMgNiAxNS4wM0M2IDEzLjM0IDcuMzIgMTIgOSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTeWxsYWJhcnlLYXRha2FuYSA9IFwiTTQgNFY2SDE4VjYuMDlMMTQuMjkgOS43OUwxNS43MSAxMS4yMUwyMCA2LjkxVjRNMTEgOVYxM0MxMSAxNS43OCAxMC4yNSAxNi44OSA4LjM2IDE4LjQ2TDkuNjQgMjBDMTEuNzUgMTguMjQgMTMgMTYuMjIgMTMgMTNWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTeWxsYWJhcnlLYXRha2FuYUhhbGZ3aWR0aCA9IFwiTTggNFY2SDE0TDEzIDEwLjgxTDE1IDExLjJMMTYgNi4xVjRNMTAgOVYxMkMxMCAxNC44NiA5LjM0IDE3LjI5IDguMDggMTguNjFMOS41IDIwQzExLjM1IDE4LjA4IDEyIDE1LjE1IDEyIDEyVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3ltYm9sID0gXCJNMiA3VjE0SDRWN0gyTTYgN1Y5SDEwVjExSDhWMTRIMTBWMTNDMTEuMTEgMTMgMTIgMTIuMTEgMTIgMTFWOUMxMiA3Ljg5IDExLjExIDcgMTAgN0g2TTE1LjggN0wxNS42IDlIMTRWMTFIMTUuNEwxNS4yIDEzSDE0VjE1SDE1TDE0LjggMTdIMTYuOEwxNyAxNUgxOC40TDE4LjIgMTdIMjAuMkwyMC40IDE1SDIyVjEzSDIwLjZMMjAuOCAxMUgyMlY5SDIxTDIxLjIgN0gxOS4yTDE5IDlIMTcuNkwxNy44IDdIMTUuOE0xNy40IDExSDE4LjhMMTguNiAxM0gxNy4yTDE3LjQgMTFNMiAxNVYxN0g0VjE1SDJNOCAxNVYxN0gxMFYxNUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN5bWZvbnkgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNi4zNyw1LjdWNS43QzE3LjM5LDUuNjcgMTguMTUsNi4xMyAxOC4yMSw2Ljg0QzE4LjIyLDcuMTUgMTguMDQsNy43NSAxNy40Miw3Ljc3QzE2Ljk1LDcuNzkgMTYuNjMsNy41IDE2LjYyLDcuMDlDMTYuNjEsNi45MyAxNi44OCw2LjQyIDE2Ljg4LDYuMzNDMTYuODcsNi4wNiAxNi40Nyw2LjA1IDE2LjM2LDYuMDZDMTQuODYsNi4xMSAxNC40Niw4LjEzIDE0LjE0LDkuNzhMMTQsMTAuNjVDMTQuODQsMTAuNzggMTUuNDYsMTAuNjIgMTUuOCwxMC40QzE2LjI4LDEwLjA5IDE1LjY2LDkuNzcgMTUuNzQsOS40MUMxNS44Miw5LjA0IDE2LjE1LDguODcgMTYuNDEsOC44NkMxNi43OCw4Ljg1IDE3LjA0LDkuMjMgMTcuMDMsOS42MkMxNywxMC4yNiAxNi4xNywxMS4xNCAxNC41LDExLjFDMTQuMjgsMTEuMSAxNC4wOSwxMS4wOCAxMy45MSwxMS4wNkMxMy4zLDE0LjE2IDEyLjkyLDE2IDExLjU2LDE3LjU4QzEwLjM5LDE4Ljk3IDkuMiwxOS4xOCA4LjY3LDE5LjJDNy42NywxOS4yNCA3LDE4LjcxIDcsMThDNi45NywxNy4zMiA3LjU3LDE2Ljk0IDcuOTcsMTYuOTNDOC41LDE2LjkxIDguODcsMTcuMyA4Ljg4LDE3Ljc0QzguOSwxOC4xMSA4LjcsMTguMjMgOC41NywxOC4zQzguNSwxOC4zNyA4LjM1LDE4LjQ1IDguMzYsMTguNkM4LjM2LDE4LjY3IDguNDMsMTguODIgOC42NSwxOC44MUM5LjA3LDE4LjggOS4zNCwxOC41OSA5LjU0LDE4LjQ1QzEwLjUsMTcuNjUgMTAuODgsMTYuMjQgMTEuMzcsMTMuNjhDMTEuNjMsMTIuMjMgMTEuODIsMTEuMyAxMi4xLDEwLjM4QzExLjQyLDkuODcgMTEsOS4yMyAxMC4wOSw5QzkuNDYsOC44MSA5LjA4LDguOTYgOC44MSw5LjNDOC41LDkuNzEgOC42LDEwLjIzIDguOSwxMC41NEMxMC4wNSwxMS44MiAxMC4zOSwxMi4zOCAxMC4yNiwxMy4xNEMxMC4wNiwxNC4zNSA4LjYyLDE1LjI3IDYuOTIsMTQuNzVDNS40NywxNC4zIDUuMiwxMy4yOCA1LjM3LDEyLjcxQzUuNTMsMTIuMjIgNS45MiwxMi4xMiA2LjMxLDEyLjI0QzYuNzMsMTIuMzcgNi44OSwxMi44NyA2Ljc3LDEzLjI2QzYuNzUsMTMuMyA2LjU1LDEzLjY3IDYuNSwxMy43OUM2LjQxLDE0LjEgNi44MywxNC4zMSA3LjEyLDE0LjRDNy43NywxNC42IDguNCwxNC4yNiA4LjU1LDEzLjczQzguNywxMy4yNSA4LjQsMTIuOTEgOC4yNywxMi43OEM3LjM4LDExLjggNi43NiwxMC45MyA3LjA2LDkuOTVDNy4xOCw5LjU4IDcuNDIsOS4xOCA3Ljc4LDguOTFDOC41Myw4LjM2IDkuMzUsOC4yNiAxMC4xMiw4LjVDMTEuMTMsOC43NyAxMS42MSw5LjQ0IDEyLjI0LDkuOTVDMTIuNTksOC45MyAxMy4wOCw3LjkyIDEzLjgxLDcuMDdDMTQuNDcsNi4zIDE1LjM1LDUuNzQgMTYuMzcsNS43WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN5bmMgPSBcIk0xMiwxOEE2LDYgMCAwLDEgNiwxMkM2LDExIDYuMjUsMTAuMDMgNi43LDkuMkw1LjI0LDcuNzRDNC40Niw4Ljk3IDQsMTAuNDMgNCwxMkE4LDggMCAwLDAgMTIsMjBWMjNMMTYsMTlMMTIsMTVNMTIsNFYxTDgsNUwxMiw5VjZBNiw2IDAgMCwxIDE4LDEyQzE4LDEzIDE3Ljc1LDEzLjk3IDE3LjMsMTQuOEwxOC43NiwxNi4yNkMxOS41NCwxNS4wMyAyMCwxMy41NyAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTeW5jQWxlcnQgPSBcIk0xMSwxM0gxM1Y3SDExTTIxLDRIMTVWMTBMMTcuMjQsNy43NkMxOC4zMiw4Ljg1IDE5LDEwLjM0IDE5LDEyQzE5LDE0LjYxIDE3LjMzLDE2LjgzIDE1LDE3LjY1VjE5Ljc0QzE4LjQ1LDE4Ljg1IDIxLDE1LjczIDIxLDEyQzIxLDkuNzkgMjAuMDksNy44IDE4LjY0LDYuMzZNMTEsMTdIMTNWMTVIMTFNMywxMkMzLDE0LjIxIDMuOTEsMTYuMiA1LjM2LDE3LjY0TDMsMjBIOVYxNEw2Ljc2LDE2LjI0QzUuNjgsMTUuMTUgNSwxMy42NiA1LDEyQzUsOS4zOSA2LjY3LDcuMTcgOSw2LjM1VjQuMjZDNS41NSw1LjE1IDMsOC4yNyAzLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN5bmNDaXJjbGUgPSBcIk0yIDEyQTEwIDEwIDAgMSAwIDEyIDJBMTAgMTAgMCAwIDAgMiAxMk0xNS42IDEzLjcyQTQgNCAwIDAgMCAxNiAxMkE0IDQgMCAwIDAgMTIgOFYxMEw4Ljg4IDdMMTIgNFY2QTYgNiAwIDAgMSAxOCAxMkE1LjkgNS45IDAgMCAxIDE3LjA3IDE1LjE5TTYgMTJBNS45IDUuOSAwIDAgMSA2LjkzIDguODFMOC40IDEwLjI4QTQgNCAwIDAgMCA4IDEyQTQgNCAwIDAgMCAxMiAxNlYxNEwxNSAxN0wxMiAyMFYxOEE2IDYgMCAwIDEgNiAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTeW5jT2ZmID0gXCJNMjAsNEgxNFYxMEwxNi4yNCw3Ljc2QzE3LjMyLDguODUgMTgsMTAuMzQgMTgsMTJDMTgsMTMgMTcuNzUsMTMuOTQgMTcuMzIsMTQuNzdMMTguNzgsMTYuMjNDMTkuNTUsMTUgMjAsMTMuNTYgMjAsMTJDMjAsOS43OSAxOS4wOSw3LjggMTcuNjQsNi4zNkwyMCw0TTIuODYsNS40MUw1LjIyLDcuNzdDNC40NSw5IDQsMTAuNDQgNCwxMkM0LDE0LjIxIDQuOTEsMTYuMiA2LjM2LDE3LjY0TDQsMjBIMTBWMTRMNy43NiwxNi4yNEM2LjY4LDE1LjE1IDYsMTMuNjYgNiwxMkM2LDExIDYuMjUsMTAuMDYgNi42OCw5LjIzTDE0Ljc2LDE3LjMxQzE0LjUsMTcuNDQgMTQuMjYsMTcuNTYgMTQsMTcuNjVWMTkuNzRDMTQuNzksMTkuNTMgMTUuNTQsMTkuMiAxNi4yMiwxOC43OEwxOC41OCwyMS4xNEwxOS44NSwxOS44N0w0LjE0LDQuMTRMMi44Niw1LjQxTTEwLDYuMzVWNC4yNkM5LjIsNC40NyA4LjQ1LDQuOCA3Ljc3LDUuMjJMOS4yMyw2LjY4QzkuNSw2LjU2IDkuNzMsNi40NCAxMCw2LjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYiA9IFwiTTIxLDNIM0EyLDIgMCAwLDAgMSw1VjE5QTIsMiAwIDAsMCAzLDIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QTIsMiAwIDAsMCAyMSwzTTIxLDE5SDNWNUgxM1Y5SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYk1pbnVzID0gXCJNMywzQTIsMiAwIDAsMCAxLDVWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjVBMiwyIDAgMCwwIDIxLDNIM00zLDVIMTNWOUgyMVYxOUgzVjVNNywxM1YxNUgxNVYxM0g3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYlBsdXMgPSBcIk0zLDNBMiwyIDAgMCwwIDEsNVYxOUEyLDIgMCAwLDAgMywyMUgyMUEyLDIgMCAwLDAgMjMsMTlWNUEyLDIgMCAwLDAgMjEsM0gzTTMsNUgxM1Y5SDIxVjE5SDNWNU0xMCwxMFYxM0g3VjE1SDEwVjE4SDEyVjE1SDE1VjEzSDEyVjEwSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYlJlbW92ZSA9IFwiTTcuNDYsMTEuODhMOC44OCwxMC40NkwxMSwxMi41OUwxMy4xMiwxMC40NkwxNC41NCwxMS44OEwxMi40MSwxNEwxNC41NCwxNi4xMkwxMy4xMiwxNy41NEwxMSwxNS40MUw4Ljg4LDE3LjU0TDcuNDYsMTYuMTJMOS41OSwxNEw3LjQ2LDExLjg4TTMsM0gyMUEyLDIgMCAwLDEgMjMsNVYxOUEyLDIgMCAwLDEgMjEsMjFIM0EyLDIgMCAwLDEgMSwxOVY1QTIsMiAwIDAsMSAzLDNNMyw1VjE5SDIxVjlIMTNWNUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYlVuc2VsZWN0ZWQgPSBcIk0xLDlIM1Y3SDFWOU0xLDEzSDNWMTFIMVYxM00xLDVIM1YzQTIsMiAwIDAsMCAxLDVNOSwyMUgxMVYxOUg5VjIxTTEsMTdIM1YxNUgxVjE3TTMsMjFWMTlIMUEyLDIgMCAwLDAgMywyMU0yMSwzSDEzVjlIMjNWNUEyLDIgMCAwLDAgMjEsM00yMSwxN0gyM1YxNUgyMVYxN005LDVIMTFWM0g5VjVNNSwyMUg3VjE5SDVWMjFNNSw1SDdWM0g1VjVNMjEsMjFBMiwyIDAgMCwwIDIzLDE5SDIxVjIxTTIxLDEzSDIzVjExSDIxVjEzTTEzLDIxSDE1VjE5SDEzVjIxTTE3LDIxSDE5VjE5SDE3VjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlID0gXCJNNSw0SDE5QTIsMiAwIDAsMSAyMSw2VjE4QTIsMiAwIDAsMSAxOSwyMEg1QTIsMiAwIDAsMSAzLDE4VjZBMiwyIDAgMCwxIDUsNE01LDhWMTJIMTFWOEg1TTEzLDhWMTJIMTlWOEgxM001LDE0VjE4SDExVjE0SDVNMTMsMTRWMThIMTlWMTRIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVBY2NvdW50ID0gXCJNNCAzSDE4QzE5LjExIDMgMjAgMy45IDIwIDVWMTIuMDhDMTguNDUgMTEuODIgMTYuOTIgMTIuMTggMTUuNjggMTNIMTJWMTdIMTMuMDhDMTIuOTcgMTcuNjggMTIuOTcgMTguMzUgMTMuMDggMTlINEMyLjkgMTkgMiAxOC4xMSAyIDE3VjVDMiAzLjkgMi45IDMgNCAzTTQgN1YxMUgxMFY3SDRNMTIgN1YxMUgxOFY3SDEyTTQgMTNWMTdIMTBWMTNINE0yMyAyMlYyMUMyMyAxOS42NyAyMC4zMyAxOSAxOSAxOVMxNSAxOS42NyAxNSAyMVYyMkgyM00xOSAxNEMxNy45IDE0IDE3IDE0LjkgMTcgMTZTMTcuOSAxOCAxOSAxOCAyMSAxNy4xMSAyMSAxNiAyMC4xMSAxNCAxOSAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUFsZXJ0ID0gXCJNMyA0SDE3QzE4LjExIDQgMTkgNC44OSAxOSA2VjE4QzE5IDE5LjExIDE4LjExIDIwIDE3IDIwSDNDMS45IDIwIDEgMTkuMTEgMSAxOFY2QzEgNC44OSAxLjkgNCAzIDRNMyA4VjEySDlWOEgzTTExIDhWMTJIMTdWOEgxMU0zIDE0VjE4SDlWMTRIM00xMSAxNFYxOEgxN1YxNEgxMU0yMyA3SDIxVjEzSDIzVjdNMjMgMTVIMjFWMTdIMjNWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVBcnJvd0Rvd24gPSBcIk00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4wOEMxOC40NSAxMS44MiAxNi45MiAxMi4xOCAxNS42OCAxM0gxMlYxN0gxMy4wOEMxMi45NyAxNy42OCAxMi45NyAxOC4zNSAxMy4wOCAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0TTE1Ljk0IDE4LjVIMTcuOTRWMTQuNUgxOS45NFYxOC41SDIxLjk0TDE4Ljk0IDIxLjVMMTUuOTQgMTguNVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQXJyb3dMZWZ0ID0gXCJNNCAzSDE4QzE5LjExIDMgMjAgMy45IDIwIDVWMTIuMDhDMTguNDUgMTEuODIgMTYuOTIgMTIuMTggMTUuNjggMTNIMTJWMTdIMTMuMDhDMTIuOTcgMTcuNjggMTIuOTcgMTguMzUgMTMuMDggMTlINEMyLjkgMTkgMiAxOC4xMSAyIDE3VjVDMiAzLjkgMi45IDMgNCAzTTQgN1YxMUgxMFY3SDRNMTIgN1YxMUgxOFY3SDEyTTQgMTNWMTdIMTBWMTNINE0xOC40NCAxNVYxN0gyMi40NFYxOUgxOC40NFYyMUwxNS40NCAxOEwxOC40NCAxNVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQXJyb3dSaWdodCA9IFwiTTQgM0gxOEMxOS4xMSAzIDIwIDMuOSAyMCA1VjEyLjA4QzE4LjQ1IDExLjgyIDE2LjkyIDEyLjE4IDE1LjY4IDEzSDEyVjE3SDEzLjA4QzEyLjk3IDE3LjY4IDEyLjk3IDE4LjM1IDEzLjA4IDE5SDRDMi45IDE5IDIgMTguMTEgMiAxN1Y1QzIgMy45IDIuOSAzIDQgM000IDdWMTFIMTBWN0g0TTEyIDdWMTFIMThWN0gxMk00IDEzVjE3SDEwVjEzSDRNMTkuNDQgMjFWMTlIMTUuNDRWMTdIMTkuNDRWMTVMMjIuNDQgMThMMTkuNDQgMjFcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUFycm93VXAgPSBcIk00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4wOEMxOC40NSAxMS44MiAxNi45MiAxMi4xOCAxNS42OCAxM0gxMlYxN0gxMy4wOEMxMi45NyAxNy42OCAxMi45NyAxOC4zNSAxMy4wOCAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0TTIxLjk0IDE3LjVIMTkuOTRWMjEuNUgxNy45NFYxNy41SDE1Ljk0TDE4Ljk0IDE0LjVMMjEuOTQgMTcuNVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQm9yZGVyID0gXCJNMjEsMTlBMSwxIDAgMCwxIDIwLDIwSDE5VjE4SDIxVjE5TTE1LDIwVjE4SDE3VjIwSDE1TTExLDIwVjE4SDEzVjIwSDExTTcsMjBWMThIOVYyMEg3TTQsMjBBMSwxIDAgMCwxIDMsMTlWMThINVYyMEg0TTE5LDRINUEyLDIgMCAwLDAgMyw2VjhINUwxMSw4SDEzTDE5LDhIMjFWNkMyMSw0Ljg5IDIwLjExLDQgMTksNE01LDE0SDNWMTZINVYxNE01LDEwSDNWMTJINVYxME0yMSwxMEgxOVYxMkgyMVYxME0yMSwxNEgxOVYxNkgyMVYxNE0xMSwxNlYxNEgxM1YxNkgxMU0xMSwxMlYxMEgxM1YxMkgxMVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQ2FuY2VsID0gXCJNMyAzSDE3QzE4LjExIDMgMTkgMy45IDE5IDVWMTIuMDhDMTcuNDUgMTEuODIgMTUuOTIgMTIuMTggMTQuNjggMTNIMTFWMTdIMTIuMDhDMTEuOTcgMTcuNjggMTEuOTcgMTguMzUgMTIuMDggMTlIM0MxLjkgMTkgMSAxOC4xMSAxIDE3VjVDMSAzLjkgMS45IDMgMyAzTTMgN1YxMUg5VjdIM00xMSA3VjExSDE3VjdIMTFNMyAxM1YxN0g5VjEzSDNNMTguNSAxNEMxNiAxNCAxNCAxNiAxNCAxOC41UzE2IDIzIDE4LjUgMjMgMjMgMjEgMjMgMTguNSAyMSAxNCAxOC41IDE0TTE4LjUgMjEuNUMxNi44NCAyMS41IDE1LjUgMjAuMTYgMTUuNSAxOC41QzE1LjUgMTcuOTQgMTUuNjUgMTcuNDIgMTUuOTIgMTdMMjAgMjEuMDhDMTkuNTggMjEuMzUgMTkuMDYgMjEuNSAxOC41IDIxLjVNMjEuMDggMjBMMTcgMTUuOTJDMTcuNDIgMTUuNjUgMTcuOTQgMTUuNSAxOC41IDE1LjVDMjAuMTYgMTUuNSAyMS41IDE2Ljg0IDIxLjUgMTguNUMyMS41IDE5LjA2IDIxLjM1IDE5LjU4IDIxLjA4IDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQ2hhaXIgPSBcIk0xMiAyMkg2QTIgMiAwIDAgMSA4IDIwVjhIMlY1SDE2VjhIMTBWMjBBMiAyIDAgMCAxIDEyIDIyTTIyIDJWMjJIMjBWMTVIMTVWMjJIMTNWMTRBMiAyIDAgMCAxIDE1IDEySDIwVjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDaGVjayA9IFwiTTQgM0gxOEMxOS4xMSAzIDIwIDMuOSAyMCA1VjEyLjA4QzE4LjQ1IDExLjgyIDE2LjkyIDEyLjE4IDE1LjY4IDEzSDEyVjE3SDEzLjA4QzEyLjk3IDE3LjY4IDEyLjk3IDE4LjM1IDEzLjA4IDE5SDRDMi45IDE5IDIgMTguMTEgMiAxN1Y1QzIgMy45IDIuOSAzIDQgM000IDdWMTFIMTBWN0g0TTEyIDdWMTFIMThWN0gxMk00IDEzVjE3SDEwVjEzSDRNMTcuNzUgMjFMMTUgMThMMTYuMTYgMTYuODRMMTcuNzUgMTguNDNMMjEuMzQgMTQuODRMMjIuNSAxNi4yNUwxNy43NSAyMVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQ2xvY2sgPSBcIk0xNi41IDE1LjgyTDE4Ljk0IDE3LjIzTDE4LjE5IDE4LjUzTDE1IDE2LjY5VjEzSDE2LjVWMTUuODJNMjAgMTAuMjZWNUMyMCAzLjkgMTkuMTEgMyAxOCAzSDRDMi45IDMgMiAzLjkgMiA1VjE3QzIgMTguMTEgMi45IDE5IDQgMTlIOS42OEMxMC44MSAyMS4zNiAxMy4yMSAyMyAxNiAyM0MxOS44NyAyMyAyMyAxOS44NyAyMyAxNkMyMyAxMy42MiAyMS44MSAxMS41MyAyMCAxMC4yNk0xOCA3VjkuMjlDMTcuMzcgOS4xMSAxNi43IDkgMTYgOUMxNC41IDkgMTMuMTMgOS40NyAxMiAxMC4yNlY3SDE4TTQgN0gxMFYxMUg0VjdNNCAxN1YxM0g5LjY4QzkuMjUgMTMuOTEgOSAxNC45MyA5IDE2QzkgMTYuMzQgOS4wMyAxNi42NyA5LjA4IDE3SDRNMTYgMjFDMTMuMjQgMjEgMTEgMTguNzYgMTEgMTZTMTMuMjQgMTEgMTYgMTEgMjEgMTMuMjQgMjEgMTYgMTguNzYgMjEgMTYgMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2cgPSBcIk0zIDNIMTdDMTguMTEgMyAxOSAzLjkgMTkgNVYxMi4wOEMxNy40NSAxMS44MiAxNS45MiAxMi4xOCAxNC42OCAxM0gxMVYxN0gxMi4wOEMxMS45NyAxNy42OCAxMS45NyAxOC4zNSAxMi4wOCAxOUgzQzEuOSAxOSAxIDE4LjExIDEgMTdWNUMxIDMuOSAxLjkgMyAzIDNNMyA3VjExSDlWN0gzTTExIDdWMTFIMTdWN0gxMU0zIDEzVjE3SDlWMTNIM00yMi43OCAxOS4zMkwyMS43MSAxOC41QzIxLjczIDE4LjMzIDIxLjc1IDE4LjE3IDIxLjc1IDE4UzIxLjc0IDE3LjY3IDIxLjcxIDE3LjVMMjIuNzcgMTYuNjhDMjIuODYgMTYuNiAyMi44OSAxNi40NyAyMi44MyAxNi4zNkwyMS44MyAxNC42M0MyMS43NyAxNC41IDIxLjY0IDE0LjUgMjEuNSAxNC41TDIwLjI4IDE1QzIwIDE0LjgyIDE5Ljc0IDE0LjY1IDE5LjQzIDE0LjUzTDE5LjI0IDEzLjIxQzE5LjIzIDEzLjA5IDE5LjEyIDEzIDE5IDEzSDE3QzE2Ljg4IDEzIDE2Ljc3IDEzLjA5IDE2Ljc1IDEzLjIxTDE2LjU2IDE0LjUzQzE2LjI2IDE0LjY2IDE1Ljk3IDE0LjgyIDE1LjcxIDE1TDE0LjQ3IDE0LjVDMTQuMzYgMTQuNSAxNC4yMyAxNC41IDE0LjE2IDE0LjYzTDEzLjE2IDE2LjM2QzEzLjEgMTYuNDcgMTMuMTIgMTYuNiAxMy4yMiAxNi42OEwxNC4yOCAxNy41QzE0LjI2IDE3LjY3IDE0LjI1IDE3LjgzIDE0LjI1IDE4UzE0LjI2IDE4LjMzIDE0LjI4IDE4LjVMMTMuMjIgMTkuMzJDMTMuMTMgMTkuNCAxMy4xIDE5LjUzIDEzLjE2IDE5LjY0TDE0LjE2IDIxLjM3QzE0LjIyIDIxLjUgMTQuMzUgMjEuNSAxNC40NyAyMS41TDE1LjcxIDIxQzE1Ljk3IDIxLjE4IDE2LjI1IDIxLjM1IDE2LjU2IDIxLjQ3TDE2Ljc1IDIyLjc5QzE2Ljc3IDIyLjkxIDE2Ljg3IDIzIDE3IDIzSDE5QzE5LjEyIDIzIDE5LjIzIDIyLjkxIDE5LjI1IDIyLjc5TDE5LjQ0IDIxLjQ3QzE5Ljc0IDIxLjM0IDIwIDIxLjE4IDIwLjI4IDIxTDIxLjUgMjEuNUMyMS42NCAyMS41IDIxLjc3IDIxLjUgMjEuODQgMjEuMzdMMjIuODQgMTkuNjRDMjIuOSAxOS41MyAyMi44NyAxOS40IDIyLjc4IDE5LjMyTTE4IDE5LjVDMTcuMTcgMTkuNSAxNi41IDE4LjgzIDE2LjUgMThTMTcuMTggMTYuNSAxOCAxNi41IDE5LjUgMTcuMTcgMTkuNSAxOCAxOC44NCAxOS41IDE4IDE5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2x1bW4gPSBcIk04LDJIMTZBMiwyIDAgMCwxIDE4LDRWMjBBMiwyIDAgMCwxIDE2LDIySDhBMiwyIDAgMCwxIDYsMjBWNEEyLDIgMCAwLDEgOCwyTTgsMTBWMTRIMTZWMTBIOE04LDE2VjIwSDE2VjE2SDhNOCw0VjhIMTZWNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQ29sdW1uUGx1c0FmdGVyID0gXCJNMTEsMkEyLDIgMCAwLDEgMTMsNFYyMEEyLDIgMCAwLDEgMTEsMjJIMlYySDExTTQsMTBWMTRIMTFWMTBINE00LDE2VjIwSDExVjE2SDRNNCw0VjhIMTFWNEg0TTE1LDExSDE4VjhIMjBWMTFIMjNWMTNIMjBWMTZIMThWMTNIMTVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2x1bW5QbHVzQmVmb3JlID0gXCJNMTMsMkEyLDIgMCAwLDAgMTEsNFYyMEEyLDIgMCAwLDAgMTMsMjJIMjJWMkgxM00yMCwxMFYxNEgxM1YxMEgyME0yMCwxNlYyMEgxM1YxNkgyME0yMCw0VjhIMTNWNEgyME05LDExSDZWOEg0VjExSDFWMTNINFYxNkg2VjEzSDlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2x1bW5SZW1vdmUgPSBcIk00LDJIMTFBMiwyIDAgMCwxIDEzLDRWMjBBMiwyIDAgMCwxIDExLDIySDRBMiwyIDAgMCwxIDIsMjBWNEEyLDIgMCAwLDEgNCwyTTQsMTBWMTRIMTFWMTBINE00LDE2VjIwSDExVjE2SDRNNCw0VjhIMTFWNEg0TTE3LjU5LDEyTDE1LDkuNDFMMTYuNDEsOEwxOSwxMC41OUwyMS41OSw4TDIzLDkuNDFMMjAuNDEsMTJMMjMsMTQuNTlMMjEuNTksMTZMMTksMTMuNDFMMTYuNDEsMTZMMTUsMTQuNTlMMTcuNTksMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2x1bW5XaWR0aCA9IFwiTTUsOEgxOUEyLDIgMCAwLDEgMjEsMTBWMjBBMiwyIDAgMCwxIDE5LDIySDVBMiwyIDAgMCwxIDMsMjBWMTBBMiwyIDAgMCwxIDUsOE01LDEyVjE1SDExVjEySDVNMTMsMTJWMTVIMTlWMTJIMTNNNSwxN1YyMEgxMVYxN0g1TTEzLDE3VjIwSDE5VjE3SDEzTTExLDJIMjFWNkgxOVY0SDEzVjZIMTFWMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUVkaXQgPSBcIk0yMS43LDEzLjM1TDIwLjcsMTQuMzVMMTguNjUsMTIuM0wxOS42NSwxMS4zQzE5Ljg2LDExLjA4IDIwLjIxLDExLjA4IDIwLjQyLDExLjNMMjEuNywxMi41OEMyMS45MiwxMi43OSAyMS45MiwxMy4xNCAyMS43LDEzLjM1TTEyLDE4Ljk0TDE4LjA3LDEyLjg4TDIwLjEyLDE0LjkzTDE0LjA2LDIxSDEyVjE4Ljk0TTQsMkgxOEEyLDIgMCAwLDEgMjAsNFY4LjE3TDE2LjE3LDEySDEyVjE2LjE3TDEwLjE3LDE4SDRBMiwyIDAgMCwxIDIsMTZWNEEyLDIgMCAwLDEgNCwyTTQsNlYxMEgxMFY2SDRNMTIsNlYxMEgxOFY2SDEyTTQsMTJWMTZIMTBWMTJINFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUV5ZSA9IFwiTTE3IDE2Ljg4QzE3LjU2IDE2Ljg4IDE4IDE3LjMyIDE4IDE3Ljg4UzE3LjU2IDE4Ljg4IDE3IDE4Ljg4IDE2IDE4LjQzIDE2IDE3Ljg4IDE2LjQ0IDE2Ljg4IDE3IDE2Ljg4TTE3IDEzLjg4QzE5LjczIDEzLjg4IDIyLjA2IDE1LjU0IDIzIDE3Ljg4QzIyLjA2IDIwLjIyIDE5LjczIDIxLjg4IDE3IDIxLjg4UzExLjk0IDIwLjIyIDExIDE3Ljg4QzExLjk0IDE1LjU0IDE0LjI3IDEzLjg4IDE3IDEzLjg4TTE3IDE1LjM4QzE1LjYyIDE1LjM4IDE0LjUgMTYuNSAxNC41IDE3Ljg4UzE1LjYyIDIwLjM4IDE3IDIwLjM4IDE5LjUgMTkuMjYgMTkuNSAxNy44OCAxOC4zOCAxNS4zOCAxNyAxNS4zOE0xOCAzSDRDMi45IDMgMiAzLjkgMiA1VjE3QzIgMTguMSAyLjkgMTkgNCAxOUg5LjQyQzkuMjYgMTguNjggOS4xMiAxOC4zNCA5IDE4QzkuMTIgMTcuNjYgOS4yNiAxNy4zMiA5LjQyIDE3SDRWMTNIMTBWMTUuOTdDMTAuNTUgMTUuMTEgMTEuMjMgMTQuMzcgMTIgMTMuNzZWMTNIMTMuMTVDMTQuMzEgMTIuMzYgMTUuNjIgMTIgMTcgMTJDMTguMDYgMTIgMTkuMDcgMTIuMjEgMjAgMTIuNTlWNUMyMCAzLjkgMTkuMSAzIDE4IDNNMTAgMTFINFY3SDEwVjExTTE4IDExSDEyVjdIMThWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVFeWVPZmYgPSBcIk0xMiA4LjhMNi4yIDNIMThDMTkuMSAzIDIwIDMuOSAyMCA1VjEyLjU5QzE5LjA3IDEyLjIxIDE4LjA2IDEyIDE3IDEyQzE2LjQ1IDEyIDE1LjkxIDEyLjA3IDE1LjM4IDEyLjE4TDE0LjIgMTFIMThWN0gxMlY4LjhNMTcuMDkgMTMuODlMMjIuMzEgMTkuMTFDMjIuNTggMTguNzMgMjIuODIgMTguMzIgMjMgMTcuODhDMjIuMDcgMTUuNTcgMTkuNzggMTMuOTIgMTcuMDkgMTMuODlNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuNSAyMS4zN0MxOC43MSAyMS42OSAxNy44OCAyMS44OCAxNyAyMS44OEMxNC4yNyAyMS44OCAxMS45NCAyMC4yMiAxMSAxNy44OEMxMS40NSAxNi43NiAxMi4yMyAxNS44IDEzLjIxIDE1LjFMMTEuOTMgMTMuODJDMTEuMTkgMTQuNDIgMTAuNTMgMTUuMTQgMTAgMTUuOTdWMTNINFYxN0g5LjQyQzkuMjYgMTcuMzIgOS4xMiAxNy42NiA5IDE4QzkuMTIgMTguMzQgOS4yNiAxOC42OCA5LjQyIDE5SDRDMi45IDE5IDIgMTguMSAyIDE3VjVDMiA0LjY4IDIuMDggNC4zOCAyLjIyIDQuMTFMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk05LjExIDExTDUuMTEgN0g0VjExSDkuMTFNMTguMTggMjAuMDdMMTQuODEgMTYuN0MxNC42MSAxNy4wNSAxNC41IDE3LjQ1IDE0LjUgMTcuODhDMTQuNSAxOS4yNiAxNS42MiAyMC4zOCAxNyAyMC4zOEMxNy40MyAyMC4zOCAxNy44MyAyMC4yNyAxOC4xOCAyMC4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUZ1cm5pdHVyZSA9IFwiTTIgN0gyMlYxMEgyMEwyMSAxOUgxOC41TDE3Ljk0IDE0SDYuMDZMNS41IDE5SDNMNCAxMEgyVjdNMTcuNSAxMEg2LjVMNi4yOSAxMkgxNy43MUwxNy41IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlSGVhZGVyc0V5ZSA9IFwiTTEgNlYxOUEyIDIgMCAwIDAgMyAyMUg5VjExSDIxVjZBMiAyIDAgMCAwIDE5IDRIM0EyIDIgMCAwIDAgMSA2TTMgNkg3VjlIM003IDE5SDNWMTZIN003IDE0SDNWMTFIN005IDlWNkgxM1Y5TTE5IDlIMTVWNkgxOU0xNyAxNkExIDEgMCAxIDEgMTYgMTdBMSAxIDAgMCAxIDE3IDE2TTE3IDEzQTYuNDUgNi40NSAwIDAgMSAyMyAxN0E2LjUgNi41IDAgMCAxIDExIDE3QTYuNDUgNi40NSAwIDAgMSAxNyAxM00xNyAxNC41QTIuNSAyLjUgMCAxIDAgMTkuNSAxN0EyLjUgMi41IDAgMCAwIDE3IDE0LjVcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUhlYWRlcnNFeWVPZmYgPSBcIk0yLjM4IDEuNzNMMS4xMSAzTDIuMjYgNC4xNUEyIDIgMCAwIDAgMSA2VjE5QTIgMiAwIDAgMCAzIDIxSDlWMTFIOS4xMUwxMi43MiAxNC42MUE2LjIxIDYuMjEgMCAwIDAgMTEgMTdBNi40NSA2LjQ1IDAgMCAwIDE3IDIxQTYuNTUgNi41NSAwIDAgMCAxOC44NCAyMC43M0wyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyMC41OCAxOS45M003IDE5SDNWMTZIN003IDE0SDNWMTFIN003IDlIM1Y2SDQuMTFMNyA4Ljg5TTE3IDE5LjVBMi41IDIuNSAwIDAgMSAxNC41NiAxNi40NUwxNy41NiAxOS40NUEyLjUgMi41IDAgMCAxIDE3IDE5LjVNMTYuMjQgMTNMMTcuODUgMTQuNjFBMi41IDIuNSAwIDAgMSAxOS4zNSAxNi4xMUwyMS45NCAxOC43QTYuNDQgNi40NCAwIDAgMCAyMyAxN0E2LjQ1IDYuNDUgMCAwIDAgMTcgMTNIMTYuMjRNMTMgNlY5SDEyLjJMMTQuMiAxMUgyMVY2QTIgMiAwIDAgMCAxOSA0SDcuMkw5LjIgNk0xNSA2SDE5VjlIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVIZWFydCA9IFwiTTQgM0gxOEMxOS4xMSAzIDIwIDMuOSAyMCA1VjEyLjA4QzE4LjQ1IDExLjgyIDE2LjkyIDEyLjE4IDE1LjY4IDEzSDEyVjE3SDEzLjA4QzEyLjk3IDE3LjY4IDEyLjk3IDE4LjM1IDEzLjA4IDE5SDRDMi45IDE5IDIgMTguMTEgMiAxN1Y1QzIgMy45IDIuOSAzIDQgM000IDdWMTFIMTBWN0g0TTEyIDdWMTFIMThWN0gxMk00IDEzVjE3SDEwVjEzSDRNMTkgMjIuM0wxOC40IDIxLjhDMTYuNCAxOS45IDE1IDE4LjcgMTUgMTcuMkMxNSAxNiAxNiAxNSAxNy4yIDE1QzE3LjkgMTUgMTguNiAxNS4zIDE5IDE1LjhDMTkuNCAxNS4zIDIwLjEgMTUgMjAuOCAxNUMyMiAxNSAyMyAxNS45IDIzIDE3LjJDMjMgMTguNyAyMS42IDE5LjkgMTkuNiAyMS44TDE5IDIyLjNcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUtleSA9IFwiTTE2LjgzIDE3QzE2LjQyIDE1LjgzIDE1LjMxIDE1IDE0IDE1QzEyLjM0IDE1IDExIDE2LjM0IDExIDE4UzEyLjM0IDIxIDE0IDIxQzE1LjMxIDIxIDE2LjQyIDIwLjE3IDE2LjgzIDE5SDE5VjIxSDIxVjE5SDIyVjE3SDE2LjgzTTE0IDE5QzEzLjQ1IDE5IDEzIDE4LjU1IDEzIDE4UzEzLjQ1IDE3IDE0IDE3IDE1IDE3LjQ1IDE1IDE4IDE0LjU1IDE5IDE0IDE5TTkgMThINFYxNEgxMFYxNS4wM0MxMC45MSAxMy44MSAxMi4zNiAxMyAxNCAxM0MxNS4xIDEzIDE2LjE0IDEzLjM3IDE3IDE0SDE4VjE1TDE4IDE1SDIwVjZDMjAgNC44OSAxOS4xMSA0IDE4IDRINEMyLjkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIOS40MkM5LjE1IDE5LjM5IDkgMTguNzEgOSAxOE0xMiA4SDE4VjEySDEyVjhNNCA4SDEwVjEySDRWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUxhcmdlID0gXCJNNCwzSDIwQTIsMiAwIDAsMSAyMiw1VjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjVBMiwyIDAgMCwxIDQsM000LDdWMTBIOFY3SDRNMTAsN1YxMEgxNFY3SDEwTTIwLDEwVjdIMTZWMTBIMjBNNCwxMlYxNUg4VjEySDRNNCwyMEg4VjE3SDRWMjBNMTAsMTJWMTVIMTRWMTJIMTBNMTAsMjBIMTRWMTdIMTBWMjBNMjAsMjBWMTdIMTZWMjBIMjBNMjAsMTJIMTZWMTVIMjBWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVMYXJnZVBsdXMgPSBcIk0xMi4zNSAyMEgxMFYxN0gxMi4wOUMxMi4yMSAxNi4yOCAxMi40NiAxNS42MSAxMi44MSAxNUgxMFYxMkgxNFYxMy41NEMxNC41OCAxMyAxNS4yNSAxMi42MSAxNiAxMi4zNVYxMkgyMFYxMi4zNUMyMC43NSAxMi42MSAyMS40MiAxMyAyMiAxMy41NFY1QzIyIDMuOSAyMS4xIDMgMjAgM0g0QzIuOSAzIDIgMy45IDIgNVYyMEMyIDIxLjEgMi45IDIyIDQgMjJIMTMuNTRDMTMgMjEuNDIgMTIuNjEgMjAuNzUgMTIuMzUgMjBNMTYgN0gyMFYxMEgxNlY3TTEwIDdIMTRWMTBIMTBWN004IDIwSDRWMTdIOFYyME04IDE1SDRWMTJIOFYxNU04IDEwSDRWN0g4VjEwTTE3IDE0SDE5VjE3SDIyVjE5SDE5VjIySDE3VjE5SDE0VjE3SDE3VjE0XCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVMYXJnZVJlbW92ZSA9IFwiTTEyLjM1IDIwSDEwVjE3SDEyLjA5QzEyLjIxIDE2LjI4IDEyLjQ2IDE1LjYxIDEyLjgxIDE1SDEwVjEySDE0VjEzLjU0QzE0LjU4IDEzIDE1LjI1IDEyLjYxIDE2IDEyLjM1VjEySDIwVjEyLjM1QzIwLjc1IDEyLjYxIDIxLjQyIDEzIDIyIDEzLjU0VjVDMjIgMy45IDIxLjEgMyAyMCAzSDRDMi45IDMgMiAzLjkgMiA1VjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgxMy41NEMxMyAyMS40MiAxMi42MSAyMC43NSAxMi4zNSAyME0xNiA3SDIwVjEwSDE2VjdNMTAgN0gxNFYxMEgxMFY3TTggMjBINFYxN0g4VjIwTTggMTVINFYxMkg4VjE1TTggMTBINFY3SDhWMTBNMTQuNDYgMTUuODhMMTUuODggMTQuNDZMMTggMTYuNTlMMjAuMTIgMTQuNDZMMjEuNTQgMTUuODhMMTkuNDEgMThMMjEuNTQgMjAuMTJMMjAuMTIgMjEuNTRMMTggMTkuNDFMMTUuODggMjEuNTRMMTQuNDYgMjAuMTJMMTYuNTkgMThMMTQuNDYgMTUuODhcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUxvY2sgPSBcIk0yMSAxNlYxNS41QzIxIDE0LjEyIDE5Ljg4IDEzIDE4LjUgMTNTMTYgMTQuMTIgMTYgMTUuNVYxNkMxNS40NSAxNiAxNSAxNi40NSAxNSAxN1YyMUMxNSAyMS41NSAxNS40NSAyMiAxNiAyMkgyMUMyMS41NSAyMiAyMiAyMS41NSAyMiAyMVYxN0MyMiAxNi40NSAyMS41NSAxNiAyMSAxNk0yMCAxNkgxN1YxNS41QzE3IDE0LjY3IDE3LjY3IDE0IDE4LjUgMTRTMjAgMTQuNjcgMjAgMTUuNVYxNk0xMyAxOEgxMlYxNEgxNC4yNkMxNC41NCAxMy4yMSAxNS4wNCAxMi41IDE1LjY5IDEySDEyVjhIMThWMTEuMDVDMTguMTcgMTEuMDMgMTguMzMgMTEgMTguNSAxMUMxOS4wMyAxMSAxOS41MyAxMS4xIDIwIDExLjI2VjZDMjAgNC44OSAxOS4xMSA0IDE4IDRINEMyLjkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMTNWMThNMTAgMThINFYxNEgxMFYxOE0xMCAxMkg0VjhIMTBWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVNZXJnZUNlbGxzID0gXCJNNSwxMEgzVjRIMTFWNkg1VjEwTTE5LDE4SDEzVjIwSDIxVjE0SDE5VjE4TTUsMThWMTRIM1YyMEgxMVYxOEg1TTIxLDRIMTNWNkgxOVYxMEgyMVY0TTgsMTNWMTVMMTEsMTJMOCw5VjExSDNWMTNIOE0xNiwxMVY5TDEzLDEyTDE2LDE1VjEzSDIxVjExSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlTWludXMgPSBcIk0xNSAxOVYxN0gyM1YxOUgxNU00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4wOEMxOC40NSAxMS44MiAxNi45MiAxMi4xOCAxNS42OCAxM0gxMlYxN0gxMy4wOEMxMi45NyAxNy42OCAxMi45NyAxOC4zNSAxMy4wOCAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlTXVsdGlwbGUgPSBcIk03IDJIMjFDMjIuMTEgMiAyMyAyLjkgMjMgNFYxNkMyMyAxNy4xMSAyMi4xMSAxOCAyMSAxOEg3QzUuOSAxOCA1IDE3LjExIDUgMTZWNEM1IDIuOSA1LjkgMiA3IDJNNyA2VjEwSDEzVjZIN00xNSA2VjEwSDIxVjZIMTVNNyAxMlYxNkgxM1YxMkg3TTE1IDEyVjE2SDIxVjEySDE1TTMgMjBWNkgxVjIwQzEgMjEuMTEgMS44OSAyMiAzIDIySDE5VjIwSDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVOZXR3b3JrID0gXCJNMTUgMjBDMTUgMTkuNDUgMTQuNTUgMTkgMTQgMTlIMTNWMTdIMTlDMjAuMTEgMTcgMjEgMTYuMTEgMjEgMTVWM0MyMSAxLjkgMjAuMTEgMSAxOSAxSDVDMy45IDEgMyAxLjkgMyAzVjE1QzMgMTYuMTEgMy45IDE3IDUgMTdIMTFWMTlIMTBDOS40NSAxOSA5IDE5LjQ1IDkgMjBIMlYyMkg5QzkgMjIuNTUgOS40NSAyMyAxMCAyM0gxNEMxNC41NSAyMyAxNSAyMi41NSAxNSAyMkgyMlYyMEgxNU0xMyA1SDE5VjlIMTNWNU0xMyAxMUgxOVYxNUgxM1YxMU01IDVIMTFWOUg1VjVNNSAxNVYxMUgxMVYxNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlT2ZDb250ZW50cyA9IFwiTTMsOUgxN1Y3SDNWOU0zLDEzSDE3VjExSDNWMTNNMywxN0gxN1YxNUgzVjE3TTE5LDE3SDIxVjE1SDE5VjE3TTE5LDdWOUgyMVY3SDE5TTE5LDEzSDIxVjExSDE5VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlT2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0wzLjIyIDUuMTFDMy4wOCA1LjM4IDMgNS42OCAzIDZWMThDMyAxOS4xMSAzLjkgMjAgNSAyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xMC4xMSAxMkg1VjhINi4xMUwxMC4xMSAxMk0xMSAxOEg1VjE0SDExVjE4TTEzIDE4VjE0Ljg5TDE2LjExIDE4SDEzTTEzIDkuOEw3LjIgNEgxOUMyMC4xMSA0IDIxIDQuODkgMjEgNlYxNy44TDE5IDE1LjhWMTRIMTcuMkwxNS4yIDEySDE5VjhIMTNWOS44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlUGljbmljID0gXCJNNCA2SDIwVjlIMThMMTguMjIgMTFIMjNWMTNIMTguNDRMMTkgMThIMTYuNUwxNS45NCAxM0g4LjA2TDcuNSAxOEg1TDUuNTYgMTNIMVYxMUg1Ljc4TDYgOUg0TTE1LjUgOUg4LjVMOC4yOSAxMUgxNS43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZVBsdXMgPSBcIk0xOCwxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNE00LDNIMThBMiwyIDAgMCwxIDIwLDVWMTIuMDhDMTguNDUsMTEuODIgMTYuOTIsMTIuMTggMTUuNjgsMTNIMTJWMTdIMTMuMDhDMTIuOTcsMTcuNjggMTIuOTcsMTguMzUgMTMuMDgsMTlINEEyLDIgMCAwLDEgMiwxN1Y1QTIsMiAwIDAsMSA0LDNNNCw3VjExSDEwVjdINE0xMiw3VjExSDE4VjdIMTJNNCwxM1YxN0gxMFYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlUmVmcmVzaCA9IFwiTTE4IDE0LjVDMTkuMTEgMTQuNSAyMC4xMSAxNC45NSAyMC44MyAxNS42N0wyMiAxNC41VjE4LjVIMThMMTkuNzcgMTYuNzNDMTkuMzIgMTYuMjggMTguNjkgMTYgMTggMTZDMTYuNjIgMTYgMTUuNSAxNy4xMiAxNS41IDE4LjVDMTUuNSAxOS44OCAxNi42MiAyMSAxOCAyMUMxOC44MiAyMSAxOS41NSAyMC42MSAyMCAyMEgyMS43MUMyMS4xMiAyMS40NyAxOS42OCAyMi41IDE4IDIyLjVDMTUuNzkgMjIuNSAxNCAyMC43MSAxNCAxOC41QzE0IDE2LjI5IDE1Ljc5IDE0LjUgMTggMTQuNU00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4xN0MxOS41IDEyLjA2IDE5IDEyIDE4LjUgMTJDMTcuMjMgMTIgMTYuMDQgMTIuMzcgMTUuMDQgMTNIMTJWMTdIMTIuMThDMTIuMDYgMTcuNSAxMiAxOCAxMiAxOC41TDEyIDE5SDRDMi45IDE5IDIgMTguMTEgMiAxN1Y1QzIgMy45IDIuOSAzIDQgM000IDdWMTFIMTBWN0g0TTEyIDdWMTFIMThWN0gxMk00IDEzVjE3SDEwVjEzSDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVSZW1vdmUgPSBcIk0xNS40NiwxNS44OEwxNi44OCwxNC40NkwxOSwxNi41OUwyMS4xMiwxNC40NkwyMi41NCwxNS44OEwyMC40MSwxOEwyMi41NCwyMC4xMkwyMS4xMiwyMS41NEwxOSwxOS40MUwxNi44OCwyMS41NEwxNS40NiwyMC4xMkwxNy41OSwxOEwxNS40NiwxNS44OE00LDNIMThBMiwyIDAgMCwxIDIwLDVWMTIuMDhDMTguNDUsMTEuODIgMTYuOTIsMTIuMTggMTUuNjgsMTNIMTJWMTdIMTMuMDhDMTIuOTcsMTcuNjggMTIuOTcsMTguMzUgMTMuMDgsMTlINEEyLDIgMCAwLDEgMiwxN1Y1QTIsMiAwIDAsMSA0LDNNNCw3VjExSDEwVjdINE0xMiw3VjExSDE4VjdIMTJNNCwxM1YxN0gxMFYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlUm93ID0gXCJNMjIsMTRBMiwyIDAgMCwxIDIwLDE2SDRBMiwyIDAgMCwxIDIsMTRWMTBBMiwyIDAgMCwxIDQsOEgyMEEyLDIgMCAwLDEgMjIsMTBWMTRNNCwxNEg4VjEwSDRWMTRNMTAsMTRIMTRWMTBIMTBWMTRNMTYsMTRIMjBWMTBIMTZWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVSb3dIZWlnaHQgPSBcIk0zLDVIMTVBMiwyIDAgMCwxIDE3LDdWMTdBMiwyIDAgMCwxIDE1LDE5SDNBMiwyIDAgMCwxIDEsMTdWN0EyLDIgMCAwLDEgMyw1TTMsOVYxMkg4VjlIM00xMCw5VjEySDE1VjlIMTBNMywxNFYxN0g4VjE0SDNNMTAsMTRWMTdIMTVWMTRIMTBNMjMsMTRWN0gxOVY5SDIxVjEySDE5VjE0SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlUm93UGx1c0FmdGVyID0gXCJNMjIsMTBBMiwyIDAgMCwxIDIwLDEySDRBMiwyIDAgMCwxIDIsMTBWM0g0VjVIOFYzSDEwVjVIMTRWM0gxNlY1SDIwVjNIMjJWMTBNNCwxMEg4VjdINFYxME0xMCwxMEgxNFY3SDEwVjEwTTIwLDEwVjdIMTZWMTBIMjBNMTEsMTRIMTNWMTdIMTZWMTlIMTNWMjJIMTFWMTlIOFYxN0gxMVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZVJvd1BsdXNCZWZvcmUgPSBcIk0yMiwxNEEyLDIgMCAwLDAgMjAsMTJINEEyLDIgMCAwLDAgMiwxNFYyMUg0VjE5SDhWMjFIMTBWMTlIMTRWMjFIMTZWMTlIMjBWMjFIMjJWMTRNNCwxNEg4VjE3SDRWMTRNMTAsMTRIMTRWMTdIMTBWMTRNMjAsMTRWMTdIMTZWMTRIMjBNMTEsMTBIMTNWN0gxNlY1SDEzVjJIMTFWNUg4VjdIMTFWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVSb3dSZW1vdmUgPSBcIk05LjQxLDEzTDEyLDE1LjU5TDE0LjU5LDEzTDE2LDE0LjQxTDEzLjQxLDE3TDE2LDE5LjU5TDE0LjU5LDIxTDEyLDE4LjQxTDkuNDEsMjFMOCwxOS41OUwxMC41OSwxN0w4LDE0LjQxTDkuNDEsMTNNMjIsOUEyLDIgMCAwLDEgMjAsMTFINEEyLDIgMCAwLDEgMiw5VjZBMiwyIDAgMCwxIDQsNEgyMEEyLDIgMCAwLDEgMjIsNlY5TTQsOUg4VjZINFY5TTEwLDlIMTRWNkgxMFY5TTE2LDlIMjBWNkgxNlY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlU2VhcmNoID0gXCJNMTkuMywxNy44OUMyMC42MiwxNS43OSAyMCwxMyAxNy44OSwxMS42OEMxNS43OSwxMC4zNiAxMywxMSAxMS42OCwxMy4wOUMxMC4zNiwxNS4yIDExLDE4IDEzLjA5LDE5LjNDMTQuNTYsMjAuMjIgMTYuNDIsMjAuMjIgMTcuODksMTkuM0wyMSwyMi4zOUwyMi4zOSwyMUwxOS4zLDE3Ljg5TTE3LjMsMTcuMjdDMTYuMzIsMTguMjUgMTQuNzQsMTguMjQgMTMuNzYsMTcuMjdDMTIuNzksMTYuMjkgMTIuNzksMTQuNzEgMTMuNzcsMTMuNzNDMTQuNzQsMTIuNzYgMTYuMzIsMTIuNzYgMTcuMywxMy43M0MxOC4yNiwxNC43MiAxOC4yNSwxNi4zIDE3LjI3LDE3LjI3SDE3LjNNMTksNEg1QTIsMiAwIDAsMCAzLDZWMThBMiwyIDAgMCwwIDUsMjBIMTAuODFDMTAuMjUsMTkuNDIgOS44LDE4Ljc0IDkuNSwxOEg1VjE0SDkuMThDOS4zNCwxMy4yOSA5LjYxLDEyLjYxIDEwLDEySDVWOEgxMVYxMC44MUMxMS41OCwxMC4yNSAxMi4yNiw5LjggMTMsOS41VjhIMTlWMTBDMTkuNCwxMC4yNSAxOS43NywxMC41NSAyMC4xLDEwLjg4QzIwLjQ0LDExLjIyIDIwLjc0LDExLjU5IDIxLDEyVjZBMiwyIDAgMCwwIDE5LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVTZXR0aW5ncyA9IFwiTTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyTTUsNEgxOUEyLDIgMCAwLDEgMjEsNlYxOEEyLDIgMCAwLDEgMTksMjBINUEyLDIgMCAwLDEgMywxOFY2QTIsMiAwIDAsMSA1LDRNNSw4VjEySDExVjhINU0xMyw4VjEySDE5VjhIMTNNNSwxNFYxOEgxMVYxNEg1TTEzLDE0VjE4SDE5VjE0SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlU3BsaXRDZWxsID0gXCJNMTkgMTRIMjFWMjBIM1YxNEg1VjE4SDE5VjE0TTMgNFYxMEg1VjZIMTlWMTBIMjFWNEgzTTExIDExVjEzSDhWMTVMNSAxMkw4IDlWMTFIMTFNMTYgMTFWOUwxOSAxMkwxNiAxNVYxM0gxM1YxMUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZVN0YXIgPSBcIk00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4wOEMxOC40NSAxMS44MiAxNi45MiAxMi4xOCAxNS42OCAxM0gxMlYxN0gxMy4wOEMxMi45NyAxNy42OCAxMi45NyAxOC4zNSAxMy4wOCAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0TTE2LjUgMjEuNkwxNy4yIDE4LjhMMTUgMTYuOUwxNy45IDE2LjdMMTkgMTRMMjAuMSAxNi42TDIzIDE2LjhMMjAuOCAxOC43TDIxLjUgMjEuNUwxOSAyMC4xTDE2LjUgMjEuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZVN5bmMgPSBcIk0xOSAxMlYxMy41QzIxLjIxIDEzLjUgMjMgMTUuMjkgMjMgMTcuNUMyMyAxOC4zMiAyMi43NiAxOS4wOCAyMi4zMyAxOS43MUwyMS4yNCAxOC42MkMyMS40MSAxOC4yOCAyMS41IDE3LjkgMjEuNSAxNy41QzIxLjUgMTYuMTIgMjAuMzggMTUgMTkgMTVWMTYuNUwxNi43NSAxNC4yNUwxOSAxMk0xOSAyM1YyMS41QzE2Ljc5IDIxLjUgMTUgMTkuNzEgMTUgMTcuNUMxNSAxNi42OCAxNS4yNSAxNS45MiAxNS42NyAxNS4yOUwxNi43NiAxNi4zOEMxNi41OSAxNi43MiAxNi41IDE3LjEgMTYuNSAxNy41QzE2LjUgMTguODggMTcuNjIgMjAgMTkgMjBWMTguNUwyMS4yNSAyMC43NUwxOSAyM000IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMUwxOS41IDExQzE3LjY2IDExIDE2IDExLjc3IDE0LjgxIDEzSDEyVjE3SDEzTDEzIDE3LjVDMTMgMTggMTMuMDYgMTguNSAxMy4xNyAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlVGVubmlzID0gXCJNMTguNSwxNEMxOS45LDE0IDIxLDE1LjEgMjEsMTYuNUMyMSwxNy45IDE5LjksMTkgMTguNSwxOUMxNy4xLDE5IDE2LDE3LjkgMTYsMTYuNUMxNiwxNS4xIDE3LjEsMTQgMTguNSwxNE03LDE1QzcsMTUgOCwxNiA4LDE3VjIwLjVDOCwyMS4zIDguNywyMiA5LjUsMjJDMTAuMywyMiAxMSwyMS4zIDExLDIwLjVWMTdDMTEsMTYgMTIsMTUgMTIsMTVIN004LDE0SDExQzExLDE0IDE2LDE0IDE2LDlDMTYsNCAxMiwyIDkuNSwyQzcsMiAzLDQgMyw5QzMsMTQgOCwxNCA4LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxldCA9IFwiTTE5LDE4SDVWNkgxOU0yMSw0SDNDMS44OSw0IDEsNC44OSAxLDZWMThBMiwyIDAgMCwwIDMsMjBIMjFBMiwyIDAgMCwwIDIzLDE4VjZDMjMsNC44OSAyMi4xLDQgMjEsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZXRBbmRyb2lkID0gXCJNMTkuMjUsMTlINC43NVYzSDE5LjI1TTE0LDIySDEwVjIxSDE0TTE4LDBINkEzLDMgMCAwLDAgMywzVjIxQTMsMyAwIDAsMCA2LDI0SDE4QTMsMyAwIDAsMCAyMSwyMVYzQTMsMyAwIDAsMCAxOCwwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxldENlbGxwaG9uZSA9IFwiTTMsNEgyMEEyLDIgMCAwLDEgMjIsNlY4SDE4VjZINVYxOEgxNFYyMEgzQTIsMiAwIDAsMSAxLDE4VjZBMiwyIDAgMCwxIDMsNE0xNywxMEgyM0ExLDEgMCAwLDEgMjQsMTFWMjFBMSwxIDAgMCwxIDIzLDIySDE3QTEsMSAwIDAsMSAxNiwyMVYxMUExLDEgMCAwLDEgMTcsMTBNMTgsMTJWMTlIMjJWMTJIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGV0RGFzaGJvYXJkID0gXCJNMTksMThINVY2SDE5TTIxLDRIM0MxLjg5LDQgMSw0Ljg5IDEsNlYxOEEyLDIgMCAwLDAgMywyMEgyMUEyLDIgMCAwLDAgMjMsMThWNkMyMyw0Ljg5IDIyLjEsNCAyMSw0TTcsOEgxM1YxM0g3VjhNMTQsOEgxN1YxMEgxNFY4TTE3LDExVjE2SDE0VjExSDE3TTcsMTRIMTNWMTZIN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZXRJcGFkID0gXCJNMTksMTlINFYzSDE5TTExLjUsMjNBMS41LDEuNSAwIDAsMSAxMCwyMS41QTEuNSwxLjUgMCAwLDEgMTEuNSwyMEExLjUsMS41IDAgMCwxIDEzLDIxLjVBMS41LDEuNSAwIDAsMSAxMS41LDIzTTE4LjUsMEg0LjVBMi41LDIuNSAwIDAsMCAyLDIuNVYyMS41QTIuNSwyLjUgMCAwLDAgNC41LDI0SDE4LjVBMi41LDIuNSAwIDAsMCAyMSwyMS41VjIuNUEyLjUsMi41IDAgMCwwIDE4LjUsMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWNvID0gXCJNMTksMThINUE0LDQgMCAwLDEgMSwxNEE4LDggMCAwLDEgOSw2QzEwLjA2LDYgMTEuMDcsNi4yMSAxMiw2LjU4QzEyLjkzLDYuMjEgMTMuOTQsNiAxNSw2QTgsOCAwIDAsMSAyMywxNEE0LDQgMCAwLDEgMTksMThNMywxNEEyLDIgMCAwLDAgNSwxNkEyLDIgMCAwLDAgNywxNEM3LDExLjYzIDguMDMsOS41IDkuNjcsOC4wNEw5LDhBNiw2IDAgMCwwIDMsMTRNMTksMTZBMiwyIDAgMCwwIDIxLDE0QTYsNiAwIDAsMCAxNSw4QTYsNiAwIDAsMCA5LDE0QzksMTQuNzMgOC44MSwxNS40MSA4LjQ2LDE2SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZyA9IFwiTTUuNSw3QTEuNSwxLjUgMCAwLDEgNCw1LjVBMS41LDEuNSAwIDAsMSA1LjUsNEExLjUsMS41IDAgMCwxIDcsNS41QTEuNSwxLjUgMCAwLDEgNS41LDdNMjEuNDEsMTEuNThMMTIuNDEsMi41OEMxMi4wNSwyLjIyIDExLjU1LDIgMTEsMkg0QzIuODksMiAyLDIuODkgMiw0VjExQzIsMTEuNTUgMi4yMiwxMi4wNSAyLjU5LDEyLjQxTDExLjU4LDIxLjQxQzExLjk1LDIxLjc3IDEyLjQ1LDIyIDEzLDIyQzEzLjU1LDIyIDE0LjA1LDIxLjc3IDE0LjQxLDIxLjQxTDIxLjQxLDE0LjQxQzIxLjc4LDE0LjA1IDIyLDEzLjU1IDIyLDEzQzIyLDEyLjQ0IDIxLjc3LDExLjk0IDIxLjQxLDExLjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0Fycm93RG93biA9IFwiTTIxLjQxIDExLjU4TDEyLjQxIDIuNThDMTIuMDQgMi4yMSAxMS41MyAyIDExIDJINEMyLjkgMiAyIDIuOSAyIDRWMTFDMiAxMS41MyAyLjIxIDEyLjA0IDIuNTkgMTIuNDFMMyAxMi44MUMzLjkgMTIuMjcgNC45NCAxMiA2IDEyQzkuMzEgMTIgMTIgMTQuNjkgMTIgMThDMTIgMTkuMDYgMTEuNzIgMjAuMDkgMTEuMTggMjFMMTEuNTggMjEuNEMxMS45NSAyMS43OCAxMi40NyAyMiAxMyAyMlMxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM1MyMS43OSAxMS45NiAyMS40MSAxMS41OE01LjUgN0M0LjY3IDcgNCA2LjMzIDQgNS41UzQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjUgNi4zMyA3IDUuNSA3TTcgMTlWMTVINVYxOUgzTDYgMjJMOSAxOUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0Fycm93RG93bk91dGxpbmUgPSBcIk02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MkwzIDEyLjgyQzMuNjQgMTIuNDQgNC4zNSAxMi4xOSA1LjA4IDEyLjA4TDQgMTFWNEgxMUwyMCAxM0wxMyAyMEwxMS45MiAxOC45MkMxMS44MiAxOS42NiAxMS41NiAyMC4zNiAxMS4xOCAyMUwxMS41OSAyMS40MUMxMS45NiAyMS43OSAxMi40NyAyMiAxMyAyMkMxMy41MyAyMiAxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM0MyMiAxMi40NyAyMS43OSAxMS45NiAyMS40MSAxMS41OE02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTggMThWMTRINlYxOEg0TDcgMjFMMTAgMThIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdBcnJvd0xlZnQgPSBcIk0yMS40MSAxMS41OEwxMi40MSAyLjU4QzEyLjA0IDIuMjEgMTEuNTMgMiAxMSAySDRDMi45IDIgMiAyLjkgMiA0VjExQzIgMTEuNTMgMi4yMSAxMi4wNCAyLjU5IDEyLjQxTDMgMTIuODFDMy45IDEyLjI3IDQuOTQgMTIgNiAxMkM5LjMxIDEyIDEyIDE0LjY5IDEyIDE4QzEyIDE5LjA2IDExLjcyIDIwLjA5IDExLjE4IDIxTDExLjU4IDIxLjRDMTEuOTUgMjEuNzggMTIuNDcgMjIgMTMgMjJTMTQuMDQgMjEuNzkgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFDMjEuNzkgMTQuMDQgMjIgMTMuNTMgMjIgMTNTMjEuNzkgMTEuOTYgMjEuNDEgMTEuNThNNS41IDdDNC42NyA3IDQgNi4zMyA0IDUuNVM0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41IDYuMzMgNyA1LjUgN001IDE5SDlWMTdINVYxNUwyIDE4TDUgMjFWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnQXJyb3dMZWZ0T3V0bGluZSA9IFwiTTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNNi41IDVDNS42NyA1IDUgNS42NyA1IDYuNVM1LjY3IDggNi41IDggOCA3LjMzIDggNi41IDcuMzMgNSA2LjUgNU0yMS40MSAxMS41OEwxMi40MSAyLjU4QzEyLjA0IDIuMjEgMTEuNTMgMiAxMSAySDRDMi45IDIgMiAyLjkgMiA0VjExQzIgMTEuNTMgMi4yMSAxMi4wNCAyLjU5IDEyLjQyTDMgMTIuODJDMy42NCAxMi40NCA0LjM1IDEyLjE5IDUuMDggMTIuMDhMNCAxMVY0SDExTDIwIDEzTDEzIDIwTDExLjkyIDE4LjkyQzExLjgyIDE5LjY2IDExLjU2IDIwLjM2IDExLjE4IDIxTDExLjU5IDIxLjQxQzExLjk2IDIxLjc5IDEyLjQ3IDIyIDEzIDIyQzEzLjUzIDIyIDE0LjA0IDIxLjc5IDE0LjQxIDIxLjQxTDIxLjQxIDE0LjQxQzIxLjc5IDE0LjA0IDIyIDEzLjUzIDIyIDEzQzIyIDEyLjQ3IDIxLjc5IDExLjk2IDIxLjQxIDExLjU4TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNNSAxOUg5VjE3SDVWMTVMMiAxOEw1IDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0Fycm93UmlnaHQgPSBcIk0yMS40MSAxMS41OEwxMi40MSAyLjU4QzEyLjA0IDIuMjEgMTEuNTMgMiAxMSAySDRDMi45IDIgMiAyLjkgMiA0VjExQzIgMTEuNTMgMi4yMSAxMi4wNCAyLjU5IDEyLjQxTDMgMTIuODFDMy45IDEyLjI3IDQuOTQgMTIgNiAxMkM5LjMxIDEyIDEyIDE0LjY5IDEyIDE4QzEyIDE5LjA2IDExLjcyIDIwLjA5IDExLjE4IDIxTDExLjU4IDIxLjRDMTEuOTUgMjEuNzggMTIuNDcgMjIgMTMgMjJTMTQuMDQgMjEuNzkgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFDMjEuNzkgMTQuMDQgMjIgMTMuNTMgMjIgMTNTMjEuNzkgMTEuOTYgMjEuNDEgMTEuNThNNS41IDdDNC42NyA3IDQgNi4zMyA0IDUuNVM0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41IDYuMzMgNyA1LjUgN002IDE3SDJWMTlINlYyMUw5IDE4TDYgMTVWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnQXJyb3dSaWdodE91dGxpbmUgPSBcIk02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MkwzIDEyLjgyQzMuNjQgMTIuNDQgNC4zNSAxMi4xOSA1LjA4IDEyLjA4TDQgMTFWNEgxMUwyMCAxM0wxMyAyMEwxMS45MiAxOC45MkMxMS44MiAxOS42NiAxMS41NiAyMC4zNiAxMS4xOCAyMUwxMS41OSAyMS40MUMxMS45NiAyMS43OSAxMi40NyAyMiAxMyAyMkMxMy41MyAyMiAxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM0MyMiAxMi40NyAyMS43OSAxMS45NiAyMS40MSAxMS41OE02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYgMTdIMlYxOUg2VjIxTDkgMThMNiAxNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdBcnJvd1VwID0gXCJNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MUwzIDEyLjgxQzMuOSAxMi4yNyA0Ljk0IDEyIDYgMTJDOS4zMSAxMiAxMiAxNC42OSAxMiAxOEMxMiAxOS4wNiAxMS43MiAyMC4wOSAxMS4xOCAyMUwxMS41OCAyMS40QzExLjk1IDIxLjc4IDEyLjQ3IDIyIDEzIDIyUzE0LjA0IDIxLjc5IDE0LjQxIDIxLjQxTDIxLjQxIDE0LjQxQzIxLjc5IDE0LjA0IDIyIDEzLjUzIDIyIDEzUzIxLjc5IDExLjk2IDIxLjQxIDExLjU4TTUuNSA3QzQuNjcgNyA0IDYuMzMgNCA1LjVTNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNSA2LjMzIDcgNS41IDdNNSAxN1YyMUg3VjE3SDlMNiAxNEwzIDE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnQXJyb3dVcE91dGxpbmUgPSBcIk02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MkwzIDEyLjgyQzMuNjQgMTIuNDQgNC4zNSAxMi4xOSA1LjA4IDEyLjA4TDQgMTFWNEgxMUwyMCAxM0wxMyAyMEwxMS45MiAxOC45MkMxMS44MiAxOS42NiAxMS41NiAyMC4zNiAxMS4xOCAyMUwxMS41OSAyMS40MUMxMS45NiAyMS43OSAxMi40NyAyMiAxMyAyMkMxMy41MyAyMiAxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM0MyMiAxMi40NyAyMS43OSAxMS45NiAyMS40MSAxMS41OE02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYgMTdWMjFIOFYxN0gxMEw3IDE0TDQgMTdINlpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdGYWNlcyA9IFwiTTE1LDE4QzExLjY4LDE4IDksMTUuMzEgOSwxMkM5LDguNjggMTEuNjgsNiAxNSw2QTYsNiAwIDAsMSAyMSwxMkE2LDYgMCAwLDEgMTUsMThNNCwxM0ExLDEgMCAwLDEgMywxMkExLDEgMCAwLDEgNCwxMUExLDEgMCAwLDEgNSwxMkExLDEgMCAwLDEgNCwxM00yMiwzSDcuNjNDNi45NywzIDYuMzgsMy4zMiA2LDMuODFMMCwxMkw2LDIwLjE4QzYuMzgsMjAuNjggNi45NywyMSA3LjYzLDIxSDIyQTIsMiAwIDAsMCAyNCwxOVY1QzI0LDMuODkgMjMuMSwzIDIyLDNNMTMsMTFBMSwxIDAgMCwwIDE0LDEwQTEsMSAwIDAsMCAxMyw5QTEsMSAwIDAsMCAxMiwxMEExLDEgMCAwLDAgMTMsMTFNMTUsMTZDMTYuODYsMTYgMTguMzUsMTQuNzIgMTguOCwxM0gxMS4yQzExLjY1LDE0LjcyIDEzLjE0LDE2IDE1LDE2TTE3LDExQTEsMSAwIDAsMCAxOCwxMEExLDEgMCAwLDAgMTcsOUExLDEgMCAwLDAgMTYsMTBBMSwxIDAgMCwwIDE3LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0hlYXJ0ID0gXCJNMjEuNDEsMTEuNThMMTIuNDEsMi41OEMxMi4wNSwyLjIyIDExLjU1LDIgMTEsMkg0QTIsMiAwIDAsMCAyLDRWMTFDMiwxMS41NSAyLjIyLDEyLjA1IDIuNTksMTIuNDJMMTEuNTksMjEuNDJDMTEuOTUsMjEuNzggMTIuNDUsMjIgMTMsMjJDMTMuNTUsMjIgMTQuMDUsMjEuNzggMTQuNDEsMjEuNDFMMjEuNDEsMTQuNDFDMjEuNzgsMTQuMDUgMjIsMTMuNTUgMjIsMTNDMjIsMTIuNDUgMjEuNzcsMTEuOTQgMjEuNDEsMTEuNThNNS41LDdBMS41LDEuNSAwIDAsMSA0LDUuNUExLjUsMS41IDAgMCwxIDUuNSw0QTEuNSwxLjUgMCAwLDEgNyw1LjVBMS41LDEuNSAwIDAsMSA1LjUsN00xNy4yNywxNS4yN0wxMywxOS41NEw4LjczLDE1LjI3QzguMjgsMTQuODEgOCwxNC4xOSA4LDEzLjVBMi41LDIuNSAwIDAsMSAxMC41LDExQzExLjE5LDExIDExLjgyLDExLjI4IDEyLjI3LDExLjc0TDEzLDEyLjQ2TDEzLjczLDExLjczQzE0LjE4LDExLjI4IDE0LjgxLDExIDE1LjUsMTFBMi41LDIuNSAwIDAsMSAxOCwxMy41QzE4LDE0LjE5IDE3LjcyLDE0LjgyIDE3LjI3LDE1LjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0hlYXJ0T3V0bGluZSA9IFwiTTQsMkEyLDIgMCAwLDAgMiw0VjExQzIsMTEuNTUgMi4yMiwxMi4wNSAyLjU5LDEyLjQyTDExLjU5LDIxLjQyQzExLjk1LDIxLjc4IDEyLjQ1LDIyIDEzLDIyQzEzLjU1LDIyIDE0LjA1LDIxLjc4IDE0LjQxLDIxLjQxTDIxLjQxLDE0LjQxQzIxLjc4LDE0LjA1IDIyLDEzLjU1IDIyLDEzQzIyLDEyLjQ1IDIxLjc3LDExLjk0IDIxLjQxLDExLjU4TDEyLjQxLDIuNThDMTIuMDUsMi4yMiAxMS41NSwyIDExLDJINFYyTTExLDRMMjAsMTNMMTMsMjBMNCwxMVY0SDExVjRIMTFNNi41LDVBMS41LDEuNSAwIDAsMCA1LDYuNUExLjUsMS41IDAgMCwwIDYuNSw4QTEuNSwxLjUgMCAwLDAgOCw2LjVBMS41LDEuNSAwIDAsMCA2LjUsNU0xMC45NSwxMC41QzkuODIsMTAuNSA4LjksMTEuNDIgOC45LDEyLjU1QzguOSwxMy4xMiA5LjEzLDEzLjYyIDkuNSwxNEwxMywxNy41TDE2LjUsMTRDMTYuODcsMTMuNjMgMTcuMSwxMy4xMSAxNy4xLDEyLjU1QTIuMDUsMi4wNSAwIDAsMCAxNS4wNSwxMC41QzE0LjUsMTAuNSAxMy45NywxMC43MyAxMy42LDExLjFMMTMsMTEuN0wxMi40LDExLjExQzEyLjAzLDEwLjczIDExLjUsMTAuNSAxMC45NSwxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ01pbnVzID0gXCJNMjEuNDEsMTEuNThMMTIuNDEsMi41OEMxMi4wNCwyLjIxIDExLjUzLDIgMTEsMkg0QTIsMiAwIDAsMCAyLDRWMTFDMiwxMS41MyAyLjIxLDEyLjA0IDIuNTksMTIuNDFMMywxMi44MUMzLjksMTIuMjcgNC45NCwxMiA2LDEyQTYsNiAwIDAsMSAxMiwxOEMxMiwxOS4wNiAxMS43MiwyMC4wOSAxMS4xOCwyMUwxMS41OCwyMS40QzExLjk1LDIxLjc4IDEyLjQ3LDIyIDEzLDIyQzEzLjUzLDIyIDE0LjA0LDIxLjc5IDE0LjQxLDIxLjQxTDIxLjQxLDE0LjQxQzIxLjc5LDE0LjA0IDIyLDEzLjUzIDIyLDEzQzIyLDEyLjQ3IDIxLjc5LDExLjk2IDIxLjQxLDExLjU4TTUuNSw3QTEuNSwxLjUgMCAwLDEgNCw1LjVBMS41LDEuNSAwIDAsMSA1LjUsNEExLjUsMS41IDAgMCwxIDcsNS41QTEuNSwxLjUgMCAwLDEgNS41LDdNMTAsMTlIMlYxN0gxMFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdNaW51c091dGxpbmUgPSBcIk02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MkwzIDEyLjgyQzMuNjQgMTIuNDQgNC4zNSAxMi4xOSA1LjA4IDEyLjA4TDQgMTFWNEgxMUwyMCAxM0wxMyAyMEwxMS45MiAxOC45MkMxMS44MiAxOS42NiAxMS41NiAyMC4zNiAxMS4xOCAyMUwxMS41OSAyMS40MUMxMS45NiAyMS43OSAxMi40NyAyMiAxMyAyMkMxMy41MyAyMiAxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM0MyMiAxMi40NyAyMS43OSAxMS45NiAyMS40MSAxMS41OE02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTEwIDE5SDJWMTdIMTBWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnTXVsdGlwbGUgPSBcIk01LjUsOUExLjUsMS41IDAgMCwwIDcsNy41QTEuNSwxLjUgMCAwLDAgNS41LDZBMS41LDEuNSAwIDAsMCA0LDcuNUExLjUsMS41IDAgMCwwIDUuNSw5TTE3LjQxLDExLjU4QzE3Ljc3LDExLjk0IDE4LDEyLjQ0IDE4LDEzQzE4LDEzLjU1IDE3Ljc4LDE0LjA1IDE3LjQxLDE0LjQxTDEyLjQxLDE5LjQxQzEyLjA1LDE5Ljc3IDExLjU1LDIwIDExLDIwQzEwLjQ1LDIwIDkuOTUsMTkuNzggOS41OCwxOS40MUwyLjU5LDEyLjQyQzIuMjIsMTIuMDUgMiwxMS41NSAyLDExVjZDMiw0Ljg5IDIuODksNCA0LDRIOUM5LjU1LDQgMTAuMDUsNC4yMiAxMC40MSw0LjU4TDE3LjQxLDExLjU4TTEzLjU0LDUuNzFMMTQuNTQsNC43MUwyMS40MSwxMS41OEMyMS43OCwxMS45NCAyMiwxMi40NSAyMiwxM0MyMiwxMy41NSAyMS43OCwxNC4wNSAyMS40MiwxNC40MUwxNi4wNCwxOS43OUwxNS4wNCwxOC43OUwyMC43NSwxM0wxMy41NCw1LjcxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ011bHRpcGxlT3V0bGluZSA9IFwiTTYuNSAxMEM3LjMgMTAgOCA5LjMgOCA4LjVTNy4zIDcgNi41IDcgNSA3LjcgNSA4LjUgNS43IDEwIDYuNSAxME05IDZMMTYgMTNMMTEgMThMNCAxMVY2SDlNOSA0SDRDMi45IDQgMiA0LjkgMiA2VjExQzIgMTEuNiAyLjIgMTIuMSAyLjYgMTIuNEw5LjYgMTkuNEM5LjkgMTkuOCAxMC40IDIwIDExIDIwUzEyLjEgMTkuOCAxMi40IDE5LjRMMTcuNCAxNC40QzE3LjggMTQgMTggMTMuNSAxOCAxM0MxOCAxMi40IDE3LjggMTEuOSAxNy40IDExLjZMMTAuNCA0LjZDMTAuMSA0LjIgOS42IDQgOSA0TTEzLjUgNS43TDE0LjUgNC43TDIxLjQgMTEuNkMyMS44IDEyIDIyIDEyLjUgMjIgMTNTMjEuOCAxNC4xIDIxLjQgMTQuNEwxNiAxOS44TDE1IDE4LjhMMjAuNyAxM0wxMy41IDUuN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdPZmYgPSBcIk0xOC4zMyA4LjVMMjIuOTIgMy45MkwyMS41IDIuNUwyLjUgMjEuNUwzLjkyIDIyLjkyTDguNSAxOC4zM0wxMS41OCAyMS40MUEyIDIgMCAwIDAgMTMgMjJBMiAyIDAgMCAwIDE0LjQxIDIxLjQxTDIxLjQxIDE0LjQxQTIgMiAwIDAgMCAyMiAxM0EyIDIgMCAwIDAgMjEuNDEgMTEuNThNNS42MSAxNS40M0wxNS40NyA1LjY1TDEyLjQxIDIuNThBMiAyIDAgMCAwIDExIDJINEEyIDIgMCAwIDAgMiA0VjExQTIgMiAwIDAgMCAyLjU5IDEyLjQxTTUuNSA0QTEuNSAxLjUgMCAxIDEgNCA1LjVBMS41IDEuNSAwIDAgMSA1LjUgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdPZmZPdXRsaW5lID0gXCJNNi41IDVBMS41IDEuNSAwIDEgMCA4IDYuNUExLjUgMS41IDAgMCAwIDYuNSA1TTYuNSA1QTEuNSAxLjUgMCAxIDAgOCA2LjVBMS41IDEuNSAwIDAgMCA2LjUgNU0xOC4zMyA4LjVMMjIuOTIgMy45MkwyMS41IDIuNUwyLjUgMjEuNUwzLjkyIDIyLjkyTDguNSAxOC4zM0wxMS41OSAyMS40MkEyIDIgMCAwIDAgMTMgMjJBMiAyIDAgMCAwIDE0LjQxIDIxLjQxTDIxLjQxIDE0LjQxQTIgMiAwIDAgMCAyMiAxM0EyIDIgMCAwIDAgMjEuNDEgMTEuNThNMTMgMjBMOS45MiAxNi45MkwxNi45MiA5LjkyTDIwIDEzTTUuNjEgMTUuNDNMNyAxNEw0IDExVjRIMTFMMTQuMDYgNy4wNkwxNS40NyA1LjY2TDEyLjQxIDIuNThBMiAyIDAgMCAwIDExIDJINEEyIDIgMCAwIDAgMiA0VjExQTIgMiAwIDAgMCAyLjU5IDEyLjQyTTUgNi41QTEuNSAxLjUgMCAxIDAgNi41IDVBMS41IDEuNSAwIDAgMCA1IDYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdPdXRsaW5lID0gXCJNMjEuNDEgMTEuNThMMTIuNDEgMi41OEEyIDIgMCAwIDAgMTEgMkg0QTIgMiAwIDAgMCAyIDRWMTFBMiAyIDAgMCAwIDIuNTkgMTIuNDJMMTEuNTkgMjEuNDJBMiAyIDAgMCAwIDEzIDIyQTIgMiAwIDAgMCAxNC40MSAyMS40MUwyMS40MSAxNC40MUEyIDIgMCAwIDAgMjIgMTNBMiAyIDAgMCAwIDIxLjQxIDExLjU4TTEzIDIwTDQgMTFWNEgxMUwyMCAxM002LjUgNUExLjUgMS41IDAgMSAxIDUgNi41QTEuNSAxLjUgMCAwIDEgNi41IDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnUGx1cyA9IFwiTTIxLjQxLDExLjU4TDEyLjQxLDIuNThDMTIuMDQsMi4yMSAxMS41MywyIDExLDJINEEyLDIgMCAwLDAgMiw0VjExQzIsMTEuNTMgMi4yMSwxMi4wNCAyLjU5LDEyLjQxTDMsMTIuODFDMy45LDEyLjI3IDQuOTQsMTIgNiwxMkE2LDYgMCAwLDEgMTIsMThDMTIsMTkuMDYgMTEuNzIsMjAuMDkgMTEuMTgsMjFMMTEuNTgsMjEuNEMxMS45NSwyMS43OCAxMi40NywyMiAxMywyMkMxMy41MywyMiAxNC4wNCwyMS43OSAxNC40MSwyMS40MUwyMS40MSwxNC40MUMyMS43OSwxNC4wNCAyMiwxMy41MyAyMiwxM0MyMiwxMi40NyAyMS43OSwxMS45NiAyMS40MSwxMS41OE01LjUsN0ExLjUsMS41IDAgMCwxIDQsNS41QTEuNSwxLjUgMCAwLDEgNS41LDRBMS41LDEuNSAwIDAsMSA3LDUuNUExLjUsMS41IDAgMCwxIDUuNSw3TTEwLDE5SDdWMjJINVYxOUgyVjE3SDVWMTRIN1YxN0gxMFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdQbHVzT3V0bGluZSA9IFwiTTYuNSA1QTEuNSAxLjUgMCAxIDAgOCA2LjVBMS41IDEuNSAwIDAgMCA2LjUgNU02LjUgNUExLjUgMS41IDAgMSAwIDggNi41QTEuNSAxLjUgMCAwIDAgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEEyIDIgMCAwIDAgMTEgMkg0QTIgMiAwIDAgMCAyIDRWMTFBMiAyIDAgMCAwIDIuNTkgMTIuNDJMMyAxMi44MkE1LjYyIDUuNjIgMCAwIDEgNS4wOCAxMi4wOEw0IDExVjRIMTFMMjAgMTNMMTMgMjBMMTEuOTIgMTguOTJBNS41NyA1LjU3IDAgMCAxIDExLjE4IDIxTDExLjU5IDIxLjQxQTIgMiAwIDAgMCAxMyAyMkEyIDIgMCAwIDAgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFBMiAyIDAgMCAwIDIyIDEzQTIgMiAwIDAgMCAyMS40MSAxMS41OE02LjUgNUExLjUgMS41IDAgMSAwIDggNi41QTEuNSAxLjUgMCAwIDAgNi41IDVNMTAgMTlIN1YyMkg1VjE5SDJWMTdINVYxNEg3VjE3SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ1JlbW92ZSA9IFwiTTIxLjQxLDExLjU4TDEyLjQxLDIuNThDMTIuMDQsMi4yMSAxMS41MywyIDExLDJINEEyLDIgMCAwLDAgMiw0VjExQzIsMTEuNTMgMi4yMSwxMi4wNCAyLjU5LDEyLjQxTDMsMTIuODFDMy45LDEyLjI3IDQuOTQsMTIgNiwxMkE2LDYgMCAwLDEgMTIsMThDMTIsMTkuMDYgMTEuNzIsMjAuMDkgMTEuMTgsMjFMMTEuNTgsMjEuNEMxMS45NSwyMS43OCAxMi40NywyMiAxMywyMkMxMy41MywyMiAxNC4wNCwyMS43OSAxNC40MSwyMS40MUwyMS40MSwxNC40MUMyMS43OSwxNC4wNCAyMiwxMy41MyAyMiwxM0MyMiwxMi40NyAyMS43OSwxMS45NiAyMS40MSwxMS41OE01LjUsN0ExLjUsMS41IDAgMCwxIDQsNS41QTEuNSwxLjUgMCAwLDEgNS41LDRBMS41LDEuNSAwIDAsMSA3LDUuNUExLjUsMS41IDAgMCwxIDUuNSw3TTguMTIsMjEuNTRMNiwxOS40MUwzLjg4LDIxLjU0TDIuNDYsMjAuMTJMNC41OSwxOEwyLjQ2LDE1Ljg4TDMuODcsMTQuNDdMNiwxNi41OUw4LjEyLDE0LjQ3TDkuNTMsMTUuODhMNy40MSwxOEw5LjUzLDIwLjEyTDguMTIsMjEuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnUmVtb3ZlT3V0bGluZSA9IFwiTTYuNSA1QTEuNSAxLjUgMCAxIDAgOCA2LjVBMS41IDEuNSAwIDAgMCA2LjUgNU02LjUgNUExLjUgMS41IDAgMSAwIDggNi41QTEuNSAxLjUgMCAwIDAgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEEyIDIgMCAwIDAgMTEgMkg0QTIgMiAwIDAgMCAyIDRWMTFBMiAyIDAgMCAwIDIuNTkgMTIuNDJMMyAxMi44MkE1LjYyIDUuNjIgMCAwIDEgNS4wOCAxMi4wOEw0IDExVjRIMTFMMjAgMTNMMTMgMjBMMTEuOTIgMTguOTJBNS41NyA1LjU3IDAgMCAxIDExLjE4IDIxTDExLjU5IDIxLjQxQTIgMiAwIDAgMCAxMyAyMkEyIDIgMCAwIDAgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFBMiAyIDAgMCAwIDIyIDEzQTIgMiAwIDAgMCAyMS40MSAxMS41OE02LjUgNUExLjUgMS41IDAgMSAwIDggNi41QTEuNSAxLjUgMCAwIDAgNi41IDVNOC4xMiAyMS41NEw2IDE5LjQxTDMuODggMjEuNTRMMi40NiAyMC4xMkw0LjU5IDE4TDIuNDYgMTUuODhMMy44OCAxNC40Nkw2IDE2LjU5TDguMTIgMTQuNDZMOS41NCAxNS44OEw3LjQxIDE4TDkuNTQgMjAuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnVGV4dCA9IFwiTTIxLjQxIDExLjU4TDEyLjQxIDIuNThBMiAyIDAgMCAwIDExIDJINEEyIDIgMCAwIDAgMiA0VjExQTIgMiAwIDAgMCAyLjU5IDEyLjQxTDExLjU5IDIxLjQxQTIgMiAwIDAgMCAxMyAyMkEyIDIgMCAwIDAgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFBMiAyIDAgMCAwIDIyIDEzQTIgMiAwIDAgMCAyMS40MSAxMS41OE02LjUgOEExLjUgMS41IDAgMSAxIDggNi41QTEuNSAxLjUgMCAwIDEgNi41IDhNMTEuNTkgMTUuNDFMNy41OSAxMS40MUw5IDEwTDEzIDE0TTE1LjU5IDE0LjQxTDEwLjA5IDguOTFMMTEuNSA3LjVMMTcgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnVGV4dE91dGxpbmUgPSBcIk0yMS40IDExLjZMMTIuNCAyLjZDMTIgMi4yIDExLjUgMiAxMSAySDRDMi45IDIgMiAyLjkgMiA0VjExQzIgMTEuNSAyLjIgMTIgMi42IDEyLjRMMTEuNiAyMS40QzEyIDIxLjggMTIuNSAyMiAxMyAyMkMxMy41IDIyIDE0IDIxLjggMTQuNCAyMS40TDIxLjQgMTQuNEMyMS44IDE0IDIyIDEzLjUgMjIgMTNDMjIgMTIuNSAyMS44IDEyIDIxLjQgMTEuNk0xMyAyMEw0IDExVjRIMTFMMjAgMTNNNi41IDVDNy4zIDUgOCA1LjcgOCA2LjVTNy4zIDggNi41IDggNSA3LjMgNSA2LjUgNS43IDUgNi41IDVNMTAuMSA4LjlMMTEuNSA3LjVMMTcgMTNMMTUuNiAxNC40TDEwLjEgOC45TTcuNiAxMS40TDkgMTBMMTMgMTRMMTEuNiAxNS40TDcuNiAxMS40WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhaWx3aW5kID0gXCJNMTIgNkM5LjMzIDYgNy42NyA3LjMzIDcgMTBDOCA4LjY3IDkuMTcgOC4xNyAxMC41IDguNUMxMS4yNiA4LjY5IDExLjgxIDkuMjQgMTIuNDEgOS44NUMxMy4zOSAxMC44NSAxNC41IDEyIDE3IDEyQzE5LjY3IDEyIDIxLjMzIDEwLjY3IDIyIDhDMjEgOS4zMyAxOS44MyA5LjgzIDE4LjUgOS41QzE3Ljc0IDkuMzEgMTcuMiA4Ljc2IDE2LjU5IDguMTVDMTUuNjEgNy4xNSAxNC41IDYgMTIgNk03IDEyQzQuMzMgMTIgMi42NyAxMy4zMyAyIDE2QzMgMTQuNjcgNC4xNyAxNC4xNyA1LjUgMTQuNUM2LjI2IDE0LjY5IDYuOCAxNS4yNCA3LjQxIDE1Ljg1QzguMzkgMTYuODUgOS41IDE4IDEyIDE4QzE0LjY3IDE4IDE2LjMzIDE2LjY3IDE3IDE0QzE2IDE1LjMzIDE0LjgzIDE1LjgzIDEzLjUgMTUuNUMxMi43NCAxNS4zMSAxMi4yIDE0Ljc2IDExLjU5IDE0LjE1QzEwLjYxIDEzLjE1IDkuNSAxMiA3IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhbmsgPSBcIk0yMCwxMkg0VjExSDZMNyw2SDEyTDEzLDExSDIwVjEyTTEzLjIyLDdMMTMuNjIsOUgyMlY3SDEzLjIyTTIyLDE2QTMsMyAwIDAsMSAxOSwxOUg1QTMsMyAwIDAsMSAyLDE2QTMsMyAwIDAsMSA1LDEzSDE5QTMsMyAwIDAsMSAyMiwxNk02LDE2QTEsMSAwIDAsMCA1LDE1QTEsMSAwIDAsMCA0LDE2QTEsMSAwIDAsMCA1LDE3QTEsMSAwIDAsMCA2LDE2TTEzLDE2QTEsMSAwIDAsMCAxMiwxNUExLDEgMCAwLDAgMTEsMTZBMSwxIDAgMCwwIDEyLDE3QTEsMSAwIDAsMCAxMywxNk0yMCwxNkExLDEgMCAwLDAgMTksMTVBMSwxIDAgMCwwIDE4LDE2QTEsMSAwIDAsMCAxOSwxN0ExLDEgMCAwLDAgMjAsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFua2VyVHJ1Y2sgPSBcIk0yMCA4SDE1VjE0SDJWMTdIM0MzIDE4LjcgNC4zIDIwIDYgMjBTOSAxOC43IDkgMTdIMTVDMTUgMTguNyAxNi4zIDIwIDE4IDIwUzIxIDE4LjcgMjEgMTdIMjNWMTJMMjAgOE02IDE4LjVDNS4yIDE4LjUgNC41IDE3LjggNC41IDE3UzUuMiAxNS41IDYgMTUuNSA3LjUgMTYuMiA3LjUgMTcgNi44IDE4LjUgNiAxOC41TTE4IDE4LjVDMTcuMiAxOC41IDE2LjUgMTcuOCAxNi41IDE3UzE3LjIgMTUuNSAxOCAxNS41IDE5LjUgMTYuMiAxOS41IDE3IDE4LjggMTguNSAxOCAxOC41TTE3IDEyVjkuNUgxOS41TDIxLjUgMTJIMTdNMTQgOS41QzE0IDExLjQgMTIuNCAxMyAxMC41IDEzSDQuNUMyLjYgMTMgMSAxMS40IDEgOS41UzIuNiA2IDQuNSA2SDVWNUg0VjRIOFY1SDdWNkgxMC41QzEyLjQgNiAxNCA3LjYgMTQgOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhcGVEcml2ZSA9IFwiTTEyIDEwQzEzLjExIDEwIDE0IDEwLjkgMTQgMTJDMTQgMTMuMTEgMTMuMTEgMTQgMTIgMTRDMTAuOSAxNCAxMCAxMy4xMSAxMCAxMkMxMCAxMC45IDEwLjkgMTAgMTIgMTBNNSAzSDE5QzIwLjExIDMgMjEgMy45IDIxIDVWMTdIMTYuOUMxOC4yIDE1LjczIDE5IDEzLjk2IDE5IDEyQzE5IDguMTMgMTUuODcgNSAxMiA1QzguMTMgNSA1IDguMTMgNSAxMkM1IDE1Ljg3IDguMTMgMTkgMTIgMTlIMjFDMjEgMjAuMTEgMjAuMTEgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhcGVNZWFzdXJlID0gXCJNOSw1QTcsNyAwIDAsMSAxNiwxMkgxN1YxNUgxNlYxOUg5QTcsNyAwIDAsMSAyLDEyQTcsNyAwIDAsMSA5LDVNOSw4QTQsNCAwIDAsMCA1LDEyQTQsNCAwIDAsMCA5LDE2QTQsNCAwIDAsMCAxMywxMkE0LDQgMCAwLDAgOSw4TTE3LDE3SDIyVjE5TDIyLDIxSDIwVjE5SDE3VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhcmdldCA9IFwiTTExLDJWNC4wN0M3LjM4LDQuNTMgNC41Myw3LjM4IDQuMDcsMTFIMlYxM0g0LjA3QzQuNTMsMTYuNjIgNy4zOCwxOS40NyAxMSwxOS45M1YyMkgxM1YxOS45M0MxNi42MiwxOS40NyAxOS40NywxNi42MiAxOS45MywxM0gyMlYxMUgxOS45M0MxOS40Nyw3LjM4IDE2LjYyLDQuNTMgMTMsNC4wN1YyTTExLDYuMDhWOEgxM1Y2LjA5QzE1LjUsNi41IDE3LjUsOC41IDE3LjkyLDExSDE2VjEzSDE3LjkxQzE3LjUsMTUuNSAxNS41LDE3LjUgMTMsMTcuOTJWMTZIMTFWMTcuOTFDOC41LDE3LjUgNi41LDE1LjUgNi4wOCwxM0g4VjExSDYuMDlDNi41LDguNSA4LjUsNi41IDExLDYuMDhNMTIsMTFBMSwxIDAgMCwwIDExLDEyQTEsMSAwIDAsMCAxMiwxM0ExLDEgMCAwLDAgMTMsMTJBMSwxIDAgMCwwIDEyLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhcmdldEFjY291bnQgPSBcIk0yMC45NSwxMUgyMi41VjEzSDIwLjk1QzIwLjUsMTcuMTcgMTcuMTcsMjAuNSAxMywyMC45NVYyMi41SDExVjIwLjk1QzYuODMsMjAuNSAzLjUsMTcuMTcgMy4wNSwxM0gxLjVWMTFIMy4wNUMzLjUsNi44MyA2LjgzLDMuNSAxMSwzLjA1VjEuNUgxM1YzLjA1QzE3LjE3LDMuNSAyMC41LDYuODMgMjAuOTUsMTFNNS4wNywxMUg2LjVWMTNINS4wN0M1LjUsMTYuMDcgNy45MywxOC41IDExLDE4LjkzVjE3LjVIMTNWMTguOTNDMTYuMDcsMTguNSAxOC41LDE2LjA3IDE4LjkzLDEzSDE3LjVWMTFIMTguOTNDMTguNSw3LjkzIDE2LjA3LDUuNSAxMyw1LjA3VjYuNUgxMVY1LjA3QzcuOTMsNS41IDUuNSw3LjkzIDUuMDcsMTFNMTYsMTZIOFYxNUM4LDEzLjY3IDEwLjY3LDEzIDEyLDEzQzEzLjMzLDEzIDE2LDEzLjY3IDE2LDE1VjE2TTEyLDhBMiwyIDAgMCwxIDE0LDEwQTIsMiAwIDAsMSAxMiwxMkEyLDIgMCAwLDEgMTAsMTBBMiwyIDAgMCwxIDEyLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFyZ2V0VmFyaWFudCA9IFwiTTIyLjA4LDExLjA0SDIwLjA4VjRIMTMuMDVWMkgxMS4wNFY0SDRWMTEuMDRIMlYxMy4wNUg0VjIwLjA4SDExLjA0VjIyLjA4SDEzLjA1VjIwLjA4SDIwLjA4VjEzLjA1SDIyLjA4VjExLjA0TTE4LjA3LDE4LjA3SDEzLjA1VjE2LjA2SDExLjA0VjE4LjA3SDZWMTMuMDVIOC4wM1YxMS4wNEg2VjZIMTEuMDRWOC4wM0gxMy4wNVY2SDE4LjA3VjExLjA0SDE2LjA2VjEzLjA1SDE4LjA3VjE4LjA3TTEzLjA1LDEyLjA1QTEsMSAwIDAsMSAxMi4wNSwxMy4wNUMxMS41LDEzLjA1IDExLjA0LDEyLjYgMTEuMDQsMTIuMDVDMTEuMDQsMTEuNSAxMS41LDExLjA0IDEyLjA1LDExLjA0QzEyLjYsMTEuMDQgMTMuMDUsMTEuNSAxMy4wNSwxMi4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYXhpID0gXCJNNSwxMUw2LjUsNi41SDE3LjVMMTksMTFNMTcuNSwxNkExLjUsMS41IDAgMCwxIDE2LDE0LjVBMS41LDEuNSAwIDAsMSAxNy41LDEzQTEuNSwxLjUgMCAwLDEgMTksMTQuNUExLjUsMS41IDAgMCwxIDE3LjUsMTZNNi41LDE2QTEuNSwxLjUgMCAwLDEgNSwxNC41QTEuNSwxLjUgMCAwLDEgNi41LDEzQTEuNSwxLjUgMCAwLDEgOCwxNC41QTEuNSwxLjUgMCAwLDEgNi41LDE2TTE4LjkyLDZDMTguNzIsNS40MiAxOC4xNiw1IDE3LjUsNUgxNVYzSDlWNUg2LjVDNS44NCw1IDUuMjgsNS40MiA1LjA4LDZMMywxMlYyMEExLDEgMCAwLDAgNCwyMUg1QTEsMSAwIDAsMCA2LDIwVjE5SDE4VjIwQTEsMSAwIDAsMCAxOSwyMUgyMEExLDEgMCAwLDAgMjEsMjBWMTJMMTguOTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUZWEgPSBcIk00LDE5SDIwVjIxSDRWMTlNMjAsOFY1SDE4VjhIMjBNMjAsM0MyMC42LDMgMjEsMy4yIDIxLjQsMy42QzIxLjgsNCAyMiw0LjUgMjIsNVY4QzIyLDguNiAyMS44LDkgMjEuNCw5LjRDMjEsOS44IDIwLjYsMTAgMjAsMTBIMThWMTNDMTgsMTQuMSAxNy42LDE1IDE2LjgsMTUuOEMxNiwxNi42IDE1LjEsMTcgMTQsMTdIOEM2LjksMTcgNiwxNi42IDUuMiwxNS44QzQuNCwxNSA0LDE0LjEgNCwxM1YzSDlWNS40TDcuMiw2LjhDNy4xLDYuOSA3LDcuMSA3LDcuMlYxMS41QzcsMTEuOCA3LjIsMTIgNy41LDEySDExLjVDMTEuOCwxMiAxMiwxMS44IDEyLDExLjVWNy4yQzEyLDcgMTEuOSw2LjkgMTEuOCw2LjhMMTAsNS40VjNIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVhT3V0bGluZSA9IFwiTTQsMTlIMjBWMjFINFYxOU0yMS40LDMuNkMyMSwzLjIgMjAuNiwzIDIwLDNINFYxM0M0LDE0LjEgNC40LDE1IDUuMiwxNS44QzYsMTYuNiA2LjksMTcgOCwxN0gxNEMxNS4xLDE3IDE2LDE2LjYgMTYuOCwxNS44QzE3LjYsMTUgMTgsMTQuMSAxOCwxM1YxMEgyMEMyMC42LDEwIDIxLDkuOCAyMS40LDkuNEMyMS44LDkgMjIsOC42IDIyLDhWNUMyMiw0LjUgMjEuOCw0IDIxLjQsMy42TTE2LDVWOEwxNiwxMFYxM0MxNiwxMy42IDE1LjgsMTQgMTUuNCwxNC40QzE1LDE0LjggMTQuNiwxNSAxNCwxNUg4QzcuNCwxNSA3LDE0LjggNi42LDE0LjRDNi4yLDE0IDYsMTMuNSA2LDEzVjVIMTBWNi40TDguMiw3LjhDOCw3LjkgOCw4LjEgOCw4LjJWMTIuNUM4LDEyLjggOC4yLDEzIDguNSwxM0gxMi41QzEyLjgsMTMgMTMsMTIuOCAxMywxMi41VjguMkMxMyw4IDEyLjksNy45IDEyLjgsNy44TDExLDYuNFY1SDE2TTIwLDhIMThWNUgyMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlYWNoID0gXCJNMjAsMTdBMiwyIDAgMCwwIDIyLDE1VjRBMiwyIDAgMCwwIDIwLDJIOS40NkM5LjgxLDIuNjEgMTAsMy4zIDEwLDRIMjBWMTVIMTFWMTdNMTUsN1Y5SDlWMjJIN1YxNkg1VjIySDNWMTRIMS41VjlBMiwyIDAgMCwxIDMuNSw3SDE1TTgsNEEyLDIgMCAwLDEgNiw2QTIsMiAwIDAsMSA0LDRBMiwyIDAgMCwxIDYsMkEyLDIgMCAwLDEgOCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlYW12aWV3ZXIgPSBcIk0xMC4wNCA5LjJMOS4zIDExSDE0Ljc1TDE0IDkuMkwxOS41NSAxMkwxNCAxNC44TDE0Ljc1IDEzSDkuM0wxMC4wNCAxNC44TDQuNSAxMkwxMC4wNCA5LjJNMjAuODMgMjJIMy4xN0MyLjUzIDIyIDIgMjEuNSAyIDIwLjgzVjMuMTdDMiAyLjUzIDIuNTMgMiAzLjE3IDJIMjAuODNDMjEuNSAyIDIyIDIuNTMgMjIgMy4xN1YyMC44M0MyMiAyMS40NyAyMS41IDIyIDIwLjgzIDIyTTExLjkzIDMuNzZDNy40MSAzLjgyIDMuNzggNy41IDMuNzYgMTJDMy43MiAxNi41IDcuMzUgMjAuMiAxMS44NiAyMC4yNEgxMkMxNi41MyAyMC4xOCAyMC4xOCAxNi41MyAyMC4yNCAxMkMyMC4zMSA3LjUgMTYuNzQgMy44MyAxMi4yNiAzLjc2QzEyLjE1IDMuNzUgMTIuMDQgMy43NiAxMS45MyAzLjc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGVncmFtID0gXCJNOS43OCwxOC42NUwxMC4wNiwxNC40MkwxNy43NCw3LjVDMTguMDgsNy4xOSAxNy42Nyw3LjA0IDE3LjIyLDcuMzFMNy43NCwxMy4zTDMuNjQsMTJDMi43NiwxMS43NSAyLjc1LDExLjE0IDMuODQsMTAuN0wxOS44MSw0LjU0QzIwLjU0LDQuMjEgMjEuMjQsNC43MiAyMC45Niw1Ljg0TDE4LjI0LDE4LjY1QzE4LjA1LDE5LjU2IDE3LjUsMTkuNzggMTYuNzQsMTkuMzZMMTIuNiwxNi4zTDEwLjYxLDE4LjIzQzEwLjM4LDE4LjQ2IDEwLjE5LDE4LjY1IDkuNzgsMTguNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXNjb3BlID0gXCJNMjEuOSw4LjlMMjAuMiw5LjlMMTYuMiwzTDE3LjksMkwyMS45LDguOU05LjgsNy45TDEyLjgsMTMuMUwxOC45LDkuNkwxNS45LDQuNEw5LjgsNy45TTExLjQsMTIuN0w5LjQsOS4yTDUuMSwxMS43TDcuMSwxNS4yTDExLjQsMTIuN00yLjEsMTQuNkwzLjEsMTYuM0w1LjcsMTQuOEw0LjcsMTMuMUwyLjEsMTQuNk0xMi4xLDE0TDExLjgsMTMuNkw3LjUsMTYuMUw3LjgsMTYuNUM4LDE2LjggOC4zLDE3LjEgOC42LDE3LjNMNywyMkg5TDEwLjQsMTcuN0gxMC41TDEyLDIySDE0TDEyLjEsMTYuNEMxMi42LDE1LjcgMTIuNiwxNC44IDEyLjEsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvbiA9IFwiTTIxLDE3SDNWNUgyMU0yMSwzSDNBMiwyIDAgMCwwIDEsNVYxN0EyLDIgMCAwLDAgMywxOUg4VjIxSDE2VjE5SDIxQTIsMiAwIDAsMCAyMywxN1Y1QTIsMiAwIDAsMCAyMSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25BbWJpZW50TGlnaHQgPSBcIk0zIDExSDBWOUgzVjExTTMgMTRIMFYxNkgzVjE0TTUgNS4xMkwyLjg4IDNMMS40NiA0LjQxTDMuNTkgNi41NEw1IDUuMTJNMTAgNVYySDhWNUgxME0yNCA5SDIxVjExSDI0VjlNMTYgNVYySDE0VjVIMTZNMjAuNDEgNi41NEwyMi41NCA0LjQyTDIxLjEyIDNMMTkgNS4xMkwyMC40MSA2LjU0TTI0IDE0SDIxVjE2SDI0VjE0TTE5IDlWMTZDMTkgMTcuMSAxOC4xIDE4IDE3IDE4SDE1VjIwSDlWMThIN0M1LjkgMTggNSAxNy4xIDUgMTZWOUM1IDcuOSA1LjkgNyA3IDdIMTdDMTguMSA3IDE5IDcuOSAxOSA5TTE3IDlIN1YxNkgxN1Y5TTE5IDE5Ljg4TDIxLjEyIDIyTDIyLjU0IDIwLjU5TDIwLjQxIDE4LjQ3TDE5IDE5Ljg4TTMuNTkgMTguNDZMMS40NyAyMC41OUwyLjg4IDIyTDUgMTkuODhMMy41OSAxOC40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlUZWxldmlzaW9uQm94ID0gXCJNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM00xNiwxNkwxOSw4SDE2LjVMMTUsMTIuNUwxMy41LDhINVYxMEg4VjE2SDEwVjEwSDExLjc3TDE0LDE2SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25DbGFzc2ljID0gXCJNOC4xNiwzTDYuNzUsNC40MUw5LjM0LDdINEMyLjg5LDcgMiw3Ljg5IDIsOVYxOUMyLDIwLjExIDIuODksMjEgNCwyMUgyMEMyMS4xMSwyMSAyMiwyMC4xMSAyMiwxOVY5QzIyLDcuODkgMjEuMTEsNyAyMCw3SDE0LjY2TDE3LjI1LDQuNDFMMTUuODQsM0wxMiw2Ljg0TDguMTYsM000LDlIMTdWMTlINFY5TTE5LjUsOUExLDEgMCAwLDEgMjAuNSwxMEExLDEgMCAwLDEgMTkuNSwxMUExLDEgMCAwLDEgMTguNSwxMEExLDEgMCAwLDEgMTkuNSw5TTE5LjUsMTJBMSwxIDAgMCwxIDIwLjUsMTNBMSwxIDAgMCwxIDE5LjUsMTRBMSwxIDAgMCwxIDE4LjUsMTNBMSwxIDAgMCwxIDE5LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvbkNsYXNzaWNPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIxLDIxLjcyTDE5LjczLDIzTDE3LjczLDIxSDRDMi44OSwyMSAyLDIwLjExIDIsMTlWOUMyLDggMi43Niw3LjE0IDMuNzUsN0wyLDUuMjdNOC4xNiwzTDEyLDYuODRMMTUuODQsM0wxNy4yNSw0LjQxTDE0LjY2LDdIMjBDMjEuMTEsNyAyMiw3Ljg5IDIyLDlWMTlDMjIsMTkuMzQgMjEuOTIsMTkuNjYgMjEuNzcsMTkuOTRMMTcsMTUuMThWOUgxMC44Mkw4LjgyLDdIOS4zNEw2Ljc1LDQuNDFMOC4xNiwzTTQsOVYxOUgxNS43M0w1LjczLDlINE0xOS41LDlBMSwxIDAgMCwwIDE4LjUsMTBBMSwxIDAgMCwwIDE5LjUsMTFBMSwxIDAgMCwwIDIwLjUsMTBBMSwxIDAgMCwwIDE5LjUsOU0xOS41LDEyQTEsMSAwIDAsMCAxOC41LDEzQTEsMSAwIDAsMCAxOS41LDE0QTEsMSAwIDAsMCAyMC41LDEzQTEsMSAwIDAsMCAxOS41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25DbGVhbiA9IFwiTTIxIDE3SDNWNUgyMU0yMSAzSDNDMS45IDMgMSAzLjkgMSA1VjE3QzEgMTguMTEgMS45IDE5IDMgMTlIOFYyMUgxNlYxOUgyMUMyMi4xMSAxOSAyMyAxOC4xMSAyMyAxN1Y1QzIzIDMuOSAyMi4xMSAzIDIxIDNNMTUgNi41TDE0LjM4IDcuODdMMTMgOC41TDE0LjM4IDkuMTNMMTUgMTAuNUwxNS42MyA5LjEzTDE3IDguNUwxNS42MyA3Ljg3TDE1IDYuNU0xMC41IDguNUw5LjQxIDEwLjkxTDcgMTJMOS40MSAxMy4wOUwxMC41IDE1LjVMMTEuNiAxMy4wOUwxNCAxMkwxMS42IDEwLjkxTDEwLjUgOC41XCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvbkd1aWRlID0gXCJNMjEsMTdWNUgzVjE3SDIxTTIxLDNBMiwyIDAgMCwxIDIzLDVWMTdBMiwyIDAgMCwxIDIxLDE5SDE2VjIxSDhWMTlIM0EyLDIgMCAwLDEgMSwxN1Y1QTIsMiAwIDAsMSAzLDNIMjFNNSw3SDExVjExSDVWN001LDEzSDExVjE1SDVWMTNNMTMsN0gxOVY5SDEzVjdNMTMsMTFIMTlWMTVIMTNWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvbk9mZiA9IFwiTTAuNSwyLjc3TDEuNzgsMS41TDIxLDIwLjcyTDE5LjczLDIyTDE2LjczLDE5SDE2VjIxSDhWMTlIM0EyLDIgMCAwLDEgMSwxN1Y1QzEsNC41IDEuMTcsNC4wNyAxLjQ2LDMuNzNMMC41LDIuNzdNMjEsMTdWNUg3LjgyTDUuODIsM0gyMUEyLDIgMCAwLDEgMjMsNVYxN0MyMywxNy44NSAyMi40NSwxOC41OSAyMS43LDE4Ljg3TDE5LjgyLDE3SDIxTTMsMTdIMTQuNzNMMyw1LjI3VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25QYXVzZSA9IFwiTTMgM0MxLjg5IDMgMSAzLjg5IDEgNVYxN0MxIDE4LjEgMS45IDE5IDMgMTlIOFYyMUgxNlYxOUgyMUMyMi4xIDE5IDIzIDE4LjEgMjMgMTdWNUMyMyAzLjg5IDIyLjEgMyAyMSAzTTMgNUgyMVYxN0gzTTkgOFYxNEgxMVY4TTEzIDhWMTRIMTVWOFwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25QbGF5ID0gXCJNMjEsM0gzQzEuODksMyAxLDMuODkgMSw1VjE3QTIsMiAwIDAsMCAzLDE5SDhWMjFIMTZWMTlIMjFBMiwyIDAgMCwwIDIzLDE3VjVDMjMsMy44OSAyMi4xLDMgMjEsM00yMSwxN0gzVjVIMjFNMTYsMTFMOSwxNVY3XCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvblN0b3AgPSBcIk0zIDNIMjFDMjIuMSAzIDIzIDMuODkgMjMgNVYxN0MyMyAxOC4xIDIyLjEgMTkgMjEgMTlIMTZWMjFIOFYxOUgzQzEuOSAxOSAxIDE4LjEgMSAxN1Y1QzEgMy44OSAxLjg5IDMgMyAzTTMgNVYxN0gyMVY1SDNNOSA4SDE1VjE0SDlWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUZW1wZXJhdHVyZUNlbHNpdXMgPSBcIk0xNi41LDVDMTguMDUsNSAxOS41LDUuNDcgMjAuNjksNi4yOEwxOS41Myw5LjE3QzE4LjczLDguNDQgMTcuNjcsOCAxNi41LDhDMTQsOCAxMiwxMCAxMiwxMi41QzEyLDE1IDE0LDE3IDE2LjUsMTdDMTcuNTMsMTcgMTguNDcsMTYuNjYgMTkuMjMsMTYuMDhMMjAuMzcsMTguOTNDMTkuMjQsMTkuNjEgMTcuOTIsMjAgMTYuNSwyMEE3LjUsNy41IDAgMCwxIDksMTIuNUE3LjUsNy41IDAgMCwxIDE2LjUsNU02LDNBMywzIDAgMCwxIDksNkEzLDMgMCAwLDEgNiw5QTMsMyAwIDAsMSAzLDZBMywzIDAgMCwxIDYsM002LDVBMSwxIDAgMCwwIDUsNkExLDEgMCAwLDAgNiw3QTEsMSAwIDAsMCA3LDZBMSwxIDAgMCwwIDYsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZW1wZXJhdHVyZUZhaHJlbmhlaXQgPSBcIk0xMSwyMFY1SDIwVjhIMTRWMTFIMTlWMTRIMTRWMjBIMTFNNiwzQTMsMyAwIDAsMSA5LDZBMywzIDAgMCwxIDYsOUEzLDMgMCAwLDEgMyw2QTMsMyAwIDAsMSA2LDNNNiw1QTEsMSAwIDAsMCA1LDZBMSwxIDAgMCwwIDYsN0ExLDEgMCAwLDAgNyw2QTEsMSAwIDAsMCA2LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVtcGVyYXR1cmVLZWx2aW4gPSBcIk03LDVIMTBWMTFMMTUsNUgxOUwxMy44OCwxMC43OEwxOSwyMEgxNS4zOEwxMS43NiwxMy4xN0wxMCwxNS4xNVYyMEg3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVubmlzID0gXCJNMTgsMTVBNCw0IDAgMCwxIDIyLDE5QTQsNCAwIDAsMSAxOCwyM0E0LDQgMCAwLDEgMTQsMTlBNCw0IDAgMCwxIDE4LDE1TTE4LDE3QTIsMiAwIDAsMCAxNiwxOUEyLDIgMCAwLDAgMTgsMjFBMiwyIDAgMCwwIDIwLDE5QTIsMiAwIDAsMCAxOCwxN002LjA1LDE0LjU0QzYuMDUsMTQuNTQgNy40NiwxMy4xMiA3LjQ3LDEwLjNDNy4xMSw4LjExIDcuOTcsNS41NCA5Ljk0LDMuNThDMTIuODcsMC42NSAxNy4xNCwwLjE3IDE5LjUsMi41QzIxLjgzLDQuODYgMjEuMzUsOS4xMyAxOC40MiwxMi4wNkMxNi40NiwxNC4wMyAxMy44OSwxNC44OSAxMS43LDE0LjUzQzguODgsMTQuNTQgNy40NiwxNS45NSA3LjQ2LDE1Ljk1TDMuMjIsMjAuMTlMMS44MSwxOC43OEw2LjA1LDE0LjU0TTE4LjA3LDMuOTNDMTYuNSwyLjM3IDEzLjUsMi44NCAxMS4zNSw1QzkuMjEsNy4xNCA4LjczLDEwLjE1IDEwLjI5LDExLjcxQzExLjg2LDEzLjI3IDE0Ljg2LDEyLjc5IDE3LDEwLjY1QzE5LjE2LDguNSAxOS42Myw1LjUgMTguMDcsMy45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlUZW5uaXNCYWxsID0gXCJNMTIsMkMxNC41LDIgMTYuNzUsMi45IDE4LjUsNC40QzE2LjM2LDYuMjMgMTUsOC45NiAxNSwxMkMxNSwxNS4wNCAxNi4zNiwxNy43NyAxOC41LDE5LjZDMTYuNzUsMjEuMSAxNC41LDIyIDEyLDIyQzkuNSwyMiA3LjI1LDIxLjEgNS41LDE5LjZDNy42NCwxNy43NyA5LDE1LjA0IDksMTJDOSw4Ljk2IDcuNjQsNi4yMyA1LjUsNC40QzcuMjUsMi45IDkuNSwyIDEyLDJNMjIsMTJDMjIsMTQuMzIgMjEuMjEsMTYuNDUgMTkuODgsMTguMTVDMTguMTIsMTYuNjggMTcsMTQuNDcgMTcsMTJDMTcsOS41MyAxOC4xMiw3LjMyIDE5Ljg4LDUuODVDMjEuMjEsNy41NSAyMiw5LjY4IDIyLDEyTTIsMTJDMiw5LjY4IDIuNzksNy41NSA0LjEyLDUuODVDNS44OCw3LjMyIDcsOS41MyA3LDEyQzcsMTQuNDcgNS44OCwxNi42OCA0LjEyLDE4LjE1QzIuNzksMTYuNDUgMiwxNC4zMiAyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbnQgPSBcIk00LDZDNCw3LjE5IDQuMzksOC4yNyA1LDlBMywzIDAgMCwxIDIsNkEzLDMgMCAwLDEgNSwzQzQuMzksMy43MyA0LDQuODEgNCw2TTIsMjFWMTlINC43NkwxMiw0Ljc4TDE5LjI0LDE5SDIyVjIxSDJNMTIsOS4xOUw3LDE5SDE3TDEyLDkuMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVycmFmb3JtID0gXCJNMjEgNS40VjExLjhMMTUuNCAxNVY4LjdMMjEgNS40TTE0LjggOC43VjE1TDkuMiAxMS44VjUuNEwxNC44IDguN00xNC44IDE1LjdWMjIuMUw5LjIgMTguOVYxMi41TDE0LjggMTUuN004LjYgNS4xVjExLjVMMyA4LjNWMS45TDguNiA1LjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVycmFpbiA9IFwiTTE0LDZMMTAuMjUsMTFMMTMuMSwxNC44TDExLjUsMTZDOS44MSwxMy43NSA3LDEwIDcsMTBMMSwxOEgyM0wxNCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlc3RUdWJlID0gXCJNNywyVjRIOFYxOEE0LDQgMCAwLDAgMTIsMjJBNCw0IDAgMCwwIDE2LDE4VjRIMTdWMkg3TTExLDE2QzEwLjQsMTYgMTAsMTUuNiAxMCwxNUMxMCwxNC40IDEwLjQsMTQgMTEsMTRDMTEuNiwxNCAxMiwxNC40IDEyLDE1QzEyLDE1LjYgMTEuNiwxNiAxMSwxNk0xMywxMkMxMi40LDEyIDEyLDExLjYgMTIsMTFDMTIsMTAuNCAxMi40LDEwIDEzLDEwQzEzLjYsMTAgMTQsMTAuNCAxNCwxMUMxNCwxMS42IDEzLjYsMTIgMTMsMTJNMTQsN0gxMFY0SDE0VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVzdFR1YmVFbXB0eSA9IFwiTTcsMkgxN1Y0SDE2VjE4QTQsNCAwIDAsMSAxMiwyMkE0LDQgMCAwLDEgOCwxOFY0SDdWMk0xNCw0SDEwVjE4QTIsMiAwIDAsMCAxMiwyMEEyLDIgMCAwLDAgMTQsMThWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXN0VHViZU9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTUuODQsMTkuMTFDMTUuMzYsMjAuNzcgMTMuODIsMjIgMTIsMjJBNCw0IDAgMCwxIDgsMThWMTEuMjdMMiw1LjI3TTcsMkgxN1Y0SDE2VjE0LjE4TDEzLjYzLDExLjgxQzEzLjg2LDExLjYzIDE0LDExLjM1IDE0LDExQzE0LDEwLjQgMTMuNiwxMCAxMywxMEMxMi42NSwxMCAxMi4zNywxMC4xNCAxMi4xOSwxMC4zN0w4LDYuMThWNEg3VjJNMTEsMTZDMTEuNSwxNiAxMS44OCwxNS43MSAxMiwxNS4yNEwxMC43NiwxNEMxMC4yOSwxNC4xMiAxMCwxNC41IDEwLDE1QzEwLDE1LjYgMTAuNCwxNiAxMSwxNk0xNCw3VjRIMTBWN0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0ID0gXCJNMjEsNlY4SDNWNkgyMU0zLDE4SDEyVjE2SDNWMThNMywxM0gyMVYxMUgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRBY2NvdW50ID0gXCJNMjEgNVY3SDNWNUgyMU0zIDE3SDEyVjE1SDNWMTdNMyAxMkgyMVYxMEgzVjEyTTE4IDE0QzE5LjExIDE0IDIwIDE0LjkgMjAgMTZTMTkuMTEgMTggMTggMTggMTYgMTcuMTEgMTYgMTYgMTYuOSAxNCAxOCAxNE0xNCAyMlYyMUMxNCAxOS45IDE1Ljc5IDE5IDE4IDE5UzIyIDE5LjkgMjIgMjFWMjJIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveCA9IFwiTTE0LDE3SDdWMTVIMTRNMTcsMTNIN1YxMUgxN00xNyw5SDdWN0gxN00xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94Q2hlY2sgPSBcIk0xNywyMUwxNC4yNSwxOEwxNS40MSwxNi44NEwxNywxOC40M0wyMC41OSwxNC44NEwyMS43NSwxNi4yNU0xMi44LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjEyLjhDMjAuMTIsMTIuMjkgMTkuMDksMTIgMTgsMTJMMTcsMTIuMDhWMTFIN1YxM0gxNC42OUMxMy4wNywxNC4wNyAxMiwxNS45MSAxMiwxOEMxMiwxOS4wOSAxMi4yOSwyMC4xMiAxMi44LDIxTTEyLDE1SDdWMTdIMTJNMTcsN0g3VjlIMTdcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94Q2hlY2tPdXRsaW5lID0gXCJNMTcsMjFMMTQuMjUsMThMMTUuNDEsMTYuODRMMTcsMTguNDNMMjAuNTksMTQuODRMMjEuNzUsMTYuMjVNMTIuOCwyMUg1QzMuODksMjEgMywyMC4xMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlDMjAuMTEsMyAyMSwzLjg5IDIxLDVWMTIuOEMyMC4zOSwxMi40NSAxOS43MiwxMi4yIDE5LDEyLjA4VjVINVYxOUgxMi4wOEMxMi4yLDE5LjcyIDEyLjQ1LDIwLjM5IDEyLjgsMjFNMTIsMTdIN1YxNUgxMk0xNC42OCwxM0g3VjExSDE3VjEyLjA4QzE2LjE1LDEyLjIyIDE1LjM3LDEyLjU0IDE0LjY4LDEzTTE3LDlIN1Y3SDE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveE1pbnVzID0gXCJNMjIsMTdWMTlIMTRWMTdIMjJNMTIsMTdWMTVIN1YxN0gxMk0xNywxMUg3VjEzSDE0LjY5QzEzLjA3LDE0LjA3IDEyLDE1LjkxIDEyLDE4QzEyLDE5LjA5IDEyLjI5LDIwLjEyIDEyLjgsMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTIuOEMyMC4xMiwxMi4yOSAxOS4wOSwxMiAxOCwxMkwxNywxMi4wOFYxMU0xNyw5VjdIN1Y5SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRCb3hNaW51c091dGxpbmUgPSBcIk0yMiwxN1YxOUgxNFYxN0gyMk01LDNIMTlDMjAuMTEsMyAyMSwzLjg5IDIxLDVWMTIuOEMyMC4zOSwxMi40NSAxOS43MiwxMi4yIDE5LDEyLjA4VjVINVYxOUgxMi4wOEMxMi4yLDE5LjcyIDEyLjQ1LDIwLjM5IDEyLjgsMjFINUMzLjg5LDIxIDMsMjAuMTEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzTTcsN0gxN1Y5SDdWN003LDExSDE3VjEyLjA4QzE2LjE1LDEyLjIyIDE1LjM3LDEyLjU0IDE0LjY4LDEzSDdWMTFNNywxNUgxMlYxN0g3VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRCb3hNdWx0aXBsZSA9IFwiTTE2LDE1SDlWMTNIMTZNMTksMTFIOVY5SDE5TTE5LDdIOVY1SDE5TTIxLDFIN0M1Ljg5LDEgNSwxLjg5IDUsM1YxN0M1LDE4LjExIDUuOSwxOSA3LDE5SDIxQzIyLjExLDE5IDIzLDE4LjExIDIzLDE3VjNDMjMsMS44OSAyMi4xLDEgMjEsMU0zLDVWMjFIMTlWMjNIM0EyLDIgMCAwLDEgMSwyMVY1SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveE11bHRpcGxlT3V0bGluZSA9IFwiTTE2LDE1SDlWMTNIMTZWMTVNMTksMTFIOVY5SDE5VjExTTE5LDdIOVY1SDE5VjdNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdDMjMsMTguMTEgMjIuMTEsMTkgMjEsMTlIN0EyLDIgMCAwLDEgNSwxN1YzQzUsMS44OSA1Ljg5LDEgNywxSDIxTTcsM1YxN0gyMVYzSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveE91dGxpbmUgPSBcIk01LDNDMy44OSwzIDMsMy44OSAzLDVWMTlDMywyMC4xMSAzLjg5LDIxIDUsMjFIMTlDMjAuMTEsMjEgMjEsMjAuMTEgMjEsMTlWNUMyMSwzLjg5IDIwLjExLDMgMTksM0g1TTUsNUgxOVYxOUg1VjVNNyw3VjlIMTdWN0g3TTcsMTFWMTNIMTdWMTFIN003LDE1VjE3SDE0VjE1SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveFBsdXMgPSBcIk0xNywxNEgxOVYxN0gyMlYxOUgxOVYyMkgxN1YxOUgxNFYxN0gxN1YxNE0xMiwxN1YxNUg3VjE3SDEyTTE3LDExSDdWMTNIMTQuNjlDMTMuMDcsMTQuMDcgMTIsMTUuOTEgMTIsMThDMTIsMTkuMDkgMTIuMjksMjAuMTIgMTIuOCwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxMi44QzIwLjEyLDEyLjI5IDE5LjA5LDEyIDE4LDEyTDE3LDEyLjA4VjExTTE3LDlWN0g3VjlIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveFBsdXNPdXRsaW5lID0gXCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNNSwzSDE5QzIwLjExLDMgMjEsMy44OSAyMSw1VjEyLjhDMjAuMzksMTIuNDUgMTkuNzIsMTIuMiAxOSwxMi4wOFY1SDVWMTlIMTIuMDhDMTIuMiwxOS43MiAxMi40NSwyMC4zOSAxMi44LDIxSDVDMy44OSwyMSAzLDIwLjExIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM003LDdIMTdWOUg3VjdNNywxMUgxN1YxMi4wOEMxNi4xNSwxMi4yMiAxNS4zNywxMi41NCAxNC42OCwxM0g3VjExTTcsMTVIMTJWMTdIN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94UmVtb3ZlID0gXCJNMTQuNDYsMTUuODhMMTUuODgsMTQuNDZMMTgsMTYuNTlMMjAuMTIsMTQuNDZMMjEuNTQsMTUuODhMMTkuNDEsMThMMjEuNTQsMjAuMTJMMjAuMTIsMjEuNTRMMTgsMTkuNDFMMTUuODgsMjEuNTRMMTQuNDYsMjAuMTJMMTYuNTksMThMMTQuNDYsMTUuODhNMTIsMTdWMTVIN1YxN0gxMk0xNywxMUg3VjEzSDE0LjY5QzEzLjA3LDE0LjA3IDEyLDE1LjkxIDEyLDE4QzEyLDE5LjA5IDEyLjI5LDIwLjEyIDEyLjgsMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTIuOEMyMC4xMiwxMi4yOSAxOS4wOSwxMiAxOCwxMkwxNywxMi4wOFYxMU0xNyw5VjdIN1Y5SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRCb3hSZW1vdmVPdXRsaW5lID0gXCJNMTQuNDYsMTUuODhMMTUuODgsMTQuNDZMMTgsMTYuNTlMMjAuMTIsMTQuNDZMMjEuNTQsMTUuODhMMTkuNDEsMThMMjEuNTQsMjAuMTJMMjAuMTIsMjEuNTRMMTgsMTkuNDFMMTUuODgsMjEuNTRMMTQuNDYsMjAuMTJMMTYuNTksMThMMTQuNDYsMTUuODhNNSwzSDE5QzIwLjExLDMgMjEsMy44OSAyMSw1VjEyLjhDMjAuMzksMTIuNDUgMTkuNzIsMTIuMiAxOSwxMi4wOFY1SDVWMTlIMTIuMDhDMTIuMiwxOS43MiAxMi40NSwyMC4zOSAxMi44LDIxSDVDMy44OSwyMSAzLDIwLjExIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM003LDdIMTdWOUg3VjdNNywxMUgxN1YxMi4wOEMxNi4xNSwxMi4yMiAxNS4zNywxMi41NCAxNC42OCwxM0g3VjExTTcsMTVIMTJWMTdIN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94U2VhcmNoID0gXCJNMTUuNSwxMkMxOCwxMiAyMCwxNCAyMCwxNi41QzIwLDE3LjM4IDE5Ljc1LDE4LjIxIDE5LjMxLDE4LjlMMjIuMzksMjJMMjEsMjMuMzlMMTcuODgsMjAuMzJDMTcuMTksMjAuNzUgMTYuMzcsMjEgMTUuNSwyMUMxMywyMSAxMSwxOSAxMSwxNi41QzExLDE0IDEzLDEyIDE1LjUsMTJNMTUuNSwxNEEyLjUsMi41IDAgMCwwIDEzLDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE5QTIuNSwyLjUgMCAwLDAgMTgsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTRNNywxNVYxN0g5QzkuMTQsMTguNTUgOS44LDE5Ljk0IDEwLjgxLDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjEzLjAzQzE5Ljg1LDExLjIxIDE3LjgyLDEwIDE1LjUsMTBDMTQuMjMsMTAgMTMuMDQsMTAuMzcgMTIuMDQsMTFIN1YxM0gxMEM5LjY0LDEzLjYgOS4zNCwxNC4yOCA5LjE3LDE1SDdNMTcsOVY3SDdWOUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94U2VhcmNoT3V0bGluZSA9IFwiTTE1LjUsMTJDMTgsMTIgMjAsMTQgMjAsMTYuNUMyMCwxNy4zOCAxOS43NSwxOC4yMSAxOS4zMSwxOC45TDIyLjM5LDIyTDIxLDIzLjM5TDE3Ljg4LDIwLjMyQzE3LjE5LDIwLjc1IDE2LjM3LDIxIDE1LjUsMjFDMTMsMjEgMTEsMTkgMTEsMTYuNUMxMSwxNCAxMywxMiAxNS41LDEyTTE1LjUsMTRBMi41LDIuNSAwIDAsMCAxMywxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxOUEyLjUsMi41IDAgMCwwIDE4LDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE0TTUsM0gxOUMyMC4xMSwzIDIxLDMuODkgMjEsNVYxMy4wM0MyMC41LDEyLjIzIDE5LjgxLDExLjU0IDE5LDExVjVINVYxOUg5LjVDOS44MSwxOS43NSAxMC4yNiwyMC40MiAxMC44MSwyMUg1QzMuODksMjEgMywyMC4xMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNNNyw3SDE3VjlIN1Y3TTcsMTFIMTIuMDNDMTEuMjMsMTEuNSAxMC41NCwxMi4xOSAxMCwxM0g3VjExTTcsMTVIOS4xN0M5LjA2LDE1LjUgOSwxNiA5LDE2LjVWMTdIN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0UmVjb2duaXRpb24gPSBcIk0yIDRDMiAyLjkgMi45IDIgNCAySDhWNEg0VjhIMlY0TTIyIDIwQzIyIDIxLjExIDIxLjExIDIyIDIwIDIySDE2VjIwSDIwVjE2SDIyVjIwTTQgMjJDMi45IDIyIDIgMjEuMTEgMiAyMFYxNkg0VjIwSDhWMjJINE0yMCAyQzIxLjExIDIgMjIgMi45IDIyIDRWOEgyMFY0SDE2VjJIMjBNOSA3VjlIMTFWMTdIMTNWOUgxNVY3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dFNlYXJjaCA9IFwiTTE5LjMxIDE4LjlMMjIuMzkgMjJMMjEgMjMuMzlMMTcuODggMjAuMzJDMTcuMTkgMjAuNzUgMTYuMzcgMjEgMTUuNSAyMUMxMyAyMSAxMSAxOSAxMSAxNi41QzExIDE0IDEzIDEyIDE1LjUgMTJDMTggMTIgMjAgMTQgMjAgMTYuNUMyMCAxNy4zOCAxOS43NSAxOC4yMSAxOS4zMSAxOC45TTE1LjUgMTlDMTYuODggMTkgMTggMTcuODggMTggMTYuNUMxOCAxNS4xMiAxNi44OCAxNCAxNS41IDE0QzE0LjEyIDE0IDEzIDE1LjEyIDEzIDE2LjVDMTMgMTcuODggMTQuMTIgMTkgMTUuNSAxOU0yMSA0VjZIM1Y0SDIxTTMgMTZWMTRIOVYxNkgzTTMgMTFWOUgyMVYxMUgxOC45N0MxNy45NiAxMC4zNyAxNi43NyAxMCAxNS41IDEwQzE0LjIzIDEwIDEzLjA0IDEwLjM3IDEyLjAzIDExSDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dFNoYWRvdyA9IFwiTTMsM0gxNlY2SDExVjE4SDhWNkgzVjNNMTIsN0gxNFY5SDEyVjdNMTUsN0gxN1Y5SDE1VjdNMTgsN0gyMFY5SDE4VjdNMTIsMTBIMTRWMTJIMTJWMTBNMTIsMTNIMTRWMTVIMTJWMTNNMTIsMTZIMTRWMThIMTJWMTZNMTIsMTlIMTRWMjFIMTJWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dFNob3J0ID0gXCJNNCw5SDIwVjExSDRWOU00LDEzSDE0VjE1SDRWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dFN1YmplY3QgPSBcIk00LDVIMjBWN0g0VjVNNCw5SDIwVjExSDRWOU00LDEzSDIwVjE1SDRWMTNNNCwxN0gxNFYxOUg0VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRUb1NwZWVjaCA9IFwiTTgsN0EyLDIgMCAwLDEgMTAsOVYxNEEyLDIgMCAwLDEgOCwxNkEyLDIgMCAwLDEgNiwxNFY5QTIsMiAwIDAsMSA4LDdNMTQsMTRDMTQsMTYuOTcgMTEuODQsMTkuNDQgOSwxOS45MlYyMkg3VjE5LjkyQzQuMTYsMTkuNDQgMiwxNi45NyAyLDE0SDRBNCw0IDAgMCwwIDgsMThBNCw0IDAgMCwwIDEyLDE0SDE0TTIxLjQxLDkuNDFMMTcuMTcsMTMuNjZMMTguMTgsMTBIMTRBMiwyIDAgMCwxIDEyLDhWNEEyLDIgMCAwLDEgMTQsMkgyMEEyLDIgMCAwLDEgMjIsNFY4QzIyLDguNTUgMjEuNzgsOS4wNSAyMS40MSw5LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRUb1NwZWVjaE9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTMuMzgsMTYuNjVDMTIuNTUsMTguMzUgMTAuOTMsMTkuNTkgOSwxOS45MlYyMkg3VjE5LjkyQzQuMTYsMTkuNDQgMiwxNi45NyAyLDE0SDRBNCw0IDAgMCwwIDgsMThDOS44MiwxOCAxMS4zNiwxNi43OCAxMS44NCwxNS4xMUwxMCwxMy4yN1YxNEEyLDIgMCAwLDEgOCwxNkEyLDIgMCAwLDEgNiwxNFY5LjI3TDIsNS4yN00yMS40MSw5LjQxTDE3LjE3LDEzLjY2TDE4LjE4LDEwSDE0QTIsMiAwIDAsMSAxMiw4VjRBMiwyIDAgMCwxIDE0LDJIMjBBMiwyIDAgMCwxIDIyLDRWOEMyMiw4LjU1IDIxLjc4LDkuMDUgMjEuNDEsOS40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0dXJlID0gXCJNOS4yOSwyMUgxMi4xMkwyMSwxMi4xMlY5LjI5TTE5LDIxQzE5LjU1LDIxIDIwLjA1LDIwLjc4IDIwLjQxLDIwLjQxQzIwLjc4LDIwLjA1IDIxLDE5LjU1IDIxLDE5VjE3TDE3LDIxTTUsM0EyLDIgMCAwLDAgMyw1VjdMNywzTTExLjg4LDNMMywxMS44OFYxNC43MUwxNC43MSwzTTE5LjUsMy4wOEwzLjA4LDE5LjVDMy4xNywxOS44NSAzLjM1LDIwLjE2IDMuNTksMjAuNDFDMy44NCwyMC42NSA0LjE1LDIwLjgzIDQuNSwyMC45MkwyMC45Myw0LjVDMjAuNzQsMy44IDIwLjIsMy4yNiAxOS41LDMuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dHVyZUJveCA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgyMEMyMS4xMSAyMiAyMiAyMS4xMSAyMiAyMFY0QzIyIDIuOSAyMS4xMSAyIDIwIDJNNCA2TDYgNEgxMC45TDQgMTAuOVY2TTQgMTMuN0wxMy43IDRIMTguNkw0IDE4LjZWMTMuN00yMCAxOEwxOCAyMEgxMy4xTDIwIDEzLjFWMThNMjAgMTAuM0wxMC4zIDIwSDUuNEwyMCA1LjRWMTAuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVhdGVyID0gXCJNNCwxNUg2QTIsMiAwIDAsMSA4LDE3VjE5SDlWMTdBMiwyIDAgMCwxIDExLDE1SDEzQTIsMiAwIDAsMSAxNSwxN1YxOUgxNlYxN0EyLDIgMCAwLDEgMTgsMTVIMjBBMiwyIDAgMCwxIDIyLDE3VjE5SDIzVjIySDFWMTlIMlYxN0EyLDIgMCAwLDEgNCwxNU0xMSw3TDE1LDEwTDExLDEzVjdNNCwySDIwQTIsMiAwIDAsMSAyMiw0VjEzLjU0QzIxLjQxLDEzLjE5IDIwLjczLDEzIDIwLDEzVjRINFYxM0MzLjI3LDEzIDIuNTksMTMuMTkgMiwxMy41NFY0QTIsMiAwIDAsMSA0LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlbWVMaWdodERhcmsgPSBcIk03LjUsMkM1LjcxLDMuMTUgNC41LDUuMTggNC41LDcuNUM0LjUsOS44MiA1LjcxLDExLjg1IDcuNTMsMTNDNC40NiwxMyAyLDEwLjU0IDIsNy41QTUuNSw1LjUgMCAwLDEgNy41LDJNMTkuMDcsMy41TDIwLjUsNC45M0w0LjkzLDIwLjVMMy41LDE5LjA3TDE5LjA3LDMuNU0xMi44OSw1LjkzTDExLjQxLDVMOS45Nyw2TDEwLjM5LDQuM0w5LDMuMjRMMTAuNzUsMy4xMkwxMS4zMywxLjQ3TDEyLDMuMUwxMy43MywzLjEzTDEyLjM4LDQuMjZMMTIuODksNS45M005LjU5LDkuNTRMOC40Myw4LjgxTDcuMzEsOS41OUw3LjY1LDguMjdMNi41Niw3LjQ0TDcuOTIsNy4zNUw4LjM3LDYuMDZMOC44OCw3LjMzTDEwLjI0LDcuMzZMOS4xOSw4LjIzTDkuNTksOS41NE0xOSwxMy41QTUuNSw1LjUgMCAwLDEgMTMuNSwxOUMxMi4yOCwxOSAxMS4xNSwxOC42IDEwLjI0LDE3LjkzTDE3LjkzLDEwLjI0QzE4LjYsMTEuMTUgMTksMTIuMjggMTksMTMuNU0xNC42LDIwLjA4TDE3LjM3LDE4LjkzTDE3LjEzLDIyLjI4TDE0LjYsMjAuMDhNMTguOTMsMTcuMzhMMjAuMDgsMTQuNjFMMjIuMjgsMTcuMTVMMTguOTMsMTcuMzhNMjAuMDgsMTIuNDJMMTguOTQsOS42NEwyMi4yOCw5Ljg4TDIwLjA4LDEyLjQyTTkuNjMsMTguOTNMMTIuNCwyMC4wOEw5Ljg3LDIyLjI3TDkuNjMsMTguOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vbWV0ZXIgPSBcIk0xNSAxM1Y1QTMgMyAwIDAgMCA5IDVWMTNBNSA1IDAgMSAwIDE1IDEzTTEyIDRBMSAxIDAgMCAxIDEzIDVWOEgxMVY1QTEgMSAwIDAgMSAxMiA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRoZXJtb21ldGVyQWxlcnQgPSBcIk0xNyAxM1Y3SDE5VjEzSDE3TTE3IDE3VjE1SDE5VjE3SDE3TTEzIDEzVjVDMTMgMy4zIDExLjcgMiAxMCAyUzcgMy4zIDcgNVYxM0M0LjggMTQuNyA0LjMgMTcuOCA2IDIwUzEwLjggMjIuNyAxMyAyMSAxNS43IDE2LjIgMTQgMTRDMTMuNyAxMy42IDEzLjQgMTMuMyAxMyAxM00xMCA0QzEwLjYgNCAxMSA0LjQgMTEgNVY4SDlWNUM5IDQuNCA5LjQgNCAxMCA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRoZXJtb21ldGVyQ2hldnJvbkRvd24gPSBcIk0xNy40MSAxMi4xN0wxNC4yNCA5TDEyLjgzIDEwLjQxTDE3LjQxIDE1TDIyIDEwLjQxTDIwLjU4IDlNMTAgMTNWNUMxMCAzLjM0IDguNjYgMiA3IDJTNCAzLjM0IDQgNVYxM0MxLjc5IDE0LjY2IDEuMzQgMTcuNzkgMyAyMFM3Ljc5IDIyLjY2IDEwIDIxIDEyLjY2IDE2LjIxIDExIDE0QzEwLjcyIDEzLjYyIDEwLjM4IDEzLjI4IDEwIDEzTTcgNEM3LjU1IDQgOCA0LjQ1IDggNVY4SDZWNUM2IDQuNDUgNi40NSA0IDcgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlckNoZXZyb25VcCA9IFwiTTE3LjQxIDExLjgzTDIwLjU4IDE1TDIyIDEzLjU5TDE3LjQxIDlMMTIuODIgMTMuNTlMMTQuMjQgMTVMMTcuNDEgMTEuODNNMTAgMTNWNUMxMCAzLjM0IDguNjYgMiA3IDJTNCAzLjM0IDQgNVYxM0MxLjc5IDE0LjY2IDEuMzQgMTcuNzkgMyAyMFM3Ljc5IDIyLjY2IDEwIDIxIDEyLjY2IDE2LjIxIDExIDE0QzEwLjcyIDEzLjYyIDEwLjM4IDEzLjI4IDEwIDEzTTcgNEM3LjU1IDQgOCA0LjQ1IDggNVY4SDZWNUM2IDQuNDUgNi40NSA0IDcgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlckhpZ2ggPSBcIk0xNSAxM1Y1QTMgMyAwIDAgMCA5IDVWMTNBNSA1IDAgMSAwIDE1IDEzTTEyIDRBMSAxIDAgMCAxIDEzIDVIMTFBMSAxIDAgMCAxIDEyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vbWV0ZXJMaW5lcyA9IFwiTTE3IDNIMjFWNUgxN1YzTTE3IDdIMjFWOUgxN1Y3TTE3IDExSDIxVjEzSDE3Ljc1TDE3IDEyLjFWMTFNMjEgMTVWMTdIMTlDMTkgMTYuMzEgMTguOSAxNS42MyAxOC43MSAxNUgyMU03IDNWNUgzVjNIN003IDdWOUgzVjdIN003IDExVjEyLjFMNi4yNSAxM0gzVjExSDdNMyAxNUg1LjI5QzUuMSAxNS42MyA1IDE2LjMxIDUgMTdIM1YxNU0xNSAxM1Y1QzE1IDMuMzQgMTMuNjYgMiAxMiAyUzkgMy4zNCA5IDVWMTNDNi43OSAxNC42NiA2LjM0IDE3Ljc5IDggMjBTMTIuNzkgMjIuNjYgMTUgMjEgMTcuNjYgMTYuMjEgMTYgMTRDMTUuNzIgMTMuNjIgMTUuMzggMTMuMjggMTUgMTNNMTIgNEMxMi41NSA0IDEzIDQuNDUgMTMgNVY4SDExVjVDMTEgNC40NSAxMS40NSA0IDEyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vbWV0ZXJMb3cgPSBcIk0xNSAxM1Y1QTMgMyAwIDAgMCA5IDVWMTNBNSA1IDAgMSAwIDE1IDEzTTEyIDRBMSAxIDAgMCAxIDEzIDVWMTJIMTFWNUExIDEgMCAwIDEgMTIgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlck1pbnVzID0gXCJNMjIgMTFIMTRWMTNIMjJWMTFNMTEgMTNWNUMxMSAzLjM0IDkuNjYgMiA4IDJTNSAzLjM0IDUgNVYxM0MyLjc5IDE0LjY2IDIuMzQgMTcuNzkgNCAyMFM4Ljc5IDIyLjY2IDExIDIxIDEzLjY2IDE2LjIxIDEyIDE0QzExLjcyIDEzLjYyIDExLjM4IDEzLjI4IDExIDEzTTggNEM4LjU1IDQgOSA0LjQ1IDkgNVY4SDdWNUM3IDQuNDUgNy40NSA0IDggNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlck9mZiA9IFwiTTExIDcuOEw5IDUuOFY1QzkgMy4zNCAxMC4zNCAyIDEyIDJTMTUgMy4zNCAxNSA1VjExLjhMMTEuMiA4SDEzVjVDMTMgNC40NSAxMi41NSA0IDEyIDRTMTEgNC40NSAxMSA1VjcuOE0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDkgMTAuODlWMTNDNi43OSAxNC42NiA2LjM0IDE3Ljc5IDggMjBDOS42NiAyMi4yMSAxMi43OSAyMi42NiAxNSAyMUMxNS44NCAyMC4zNyAxNi40IDE5LjUgMTYuNzEgMTguNkwyMC44NCAyMi43M0wyMi4xMSAyMS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlclBsdXMgPSBcIk0xOSAxMVY4SDE3VjExSDE0VjEzSDE3VjE2SDE5VjEzSDIyVjExTTExIDEzVjVDMTEgMy4zNCA5LjY2IDIgOCAyUzUgMy4zNCA1IDVWMTNDMi43OSAxNC42NiAyLjM0IDE3Ljc5IDQgMjBTOC43OSAyMi42NiAxMSAyMSAxMy42NiAxNi4yMSAxMiAxNEMxMS43MiAxMy42MiAxMS4zOCAxMy4yOCAxMSAxM004IDRDOC41NSA0IDkgNC40NSA5IDVWOEg3VjVDNyA0LjQ1IDcuNDUgNCA4IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vc3RhdCA9IFwiTTE2Ljk1LDE2Ljk1TDE0LjgzLDE0LjgzQzE1LjU1LDE0LjEgMTYsMTMuMSAxNiwxMkMxNiwxMS4yNiAxNS43OSwxMC41NyAxNS40MywxMEwxNy42LDcuODFDMTguNSw5IDE5LDEwLjQzIDE5LDEyQzE5LDEzLjkzIDE4LjIyLDE1LjY4IDE2Ljk1LDE2Ljk1TTEyLDVDMTMuNTcsNSAxNSw1LjUgMTYuMTksNi40TDE0LDguNTZDMTMuNDMsOC4yMSAxMi43NCw4IDEyLDhBNCw0IDAgMCwwIDgsMTJDOCwxMy4xIDguNDUsMTQuMSA5LjE3LDE0LjgzTDcuMDUsMTYuOTVDNS43OCwxNS42OCA1LDEzLjkzIDUsMTJBNyw3IDAgMCwxIDEyLDVNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vc3RhdEJveCA9IFwiTTUsM0EyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNINU0xMiw1QzEzLjU3LDUgMTUsNS41IDE2LjE5LDYuNEwxNCw4LjU2QzEzLjQzLDguMjEgMTIuNzQsOCAxMiw4QTQsNCAwIDAsMCA4LDEyQzgsMTMuMSA4LjQ1LDE0LjEgOS4xNywxNC44M0w3LjA1LDE2Ljk1QzUuNzgsMTUuNjggNSwxMy45MyA1LDEyQTcsNyAwIDAsMSAxMiw1TTE3LjYsNy44MUMxOC41LDkgMTksMTAuNDMgMTksMTJDMTksMTMuOTMgMTguMjIsMTUuNjggMTYuOTUsMTYuOTVMMTQuODMsMTQuODNDMTUuNTUsMTQuMSAxNiwxMy4xIDE2LDEyQzE2LDExLjI2IDE1Ljc5LDEwLjU3IDE1LjQzLDEwTDE3LjYsNy44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaG91Z2h0QnViYmxlID0gXCJNMy41LDE5QTEuNSwxLjUgMCAwLDEgNSwyMC41QTEuNSwxLjUgMCAwLDEgMy41LDIyQTEuNSwxLjUgMCAwLDEgMiwyMC41QTEuNSwxLjUgMCAwLDEgMy41LDE5TTguNSwxNkEyLjUsMi41IDAgMCwxIDExLDE4LjVBMi41LDIuNSAwIDAsMSA4LjUsMjFBMi41LDIuNSAwIDAsMSA2LDE4LjVBMi41LDIuNSAwIDAsMSA4LjUsMTZNMTQuNSwxNUMxMy4zMSwxNSAxMi4yMywxNC41IDExLjUsMTMuNjVDMTAuNzcsMTQuNSA5LjY5LDE1IDguNSwxNUM2LjU0LDE1IDQuOTEsMTMuNTkgNC41NywxMS43NEMzLjA3LDExLjE2IDIsOS43IDIsOEE0LDQgMCAwLDEgNiw0QzYuMjYsNCA2LjUsNC4wMyA2Ljc3LDQuMDdDNy41LDMuNDEgOC40NSwzIDkuNSwzQzEwLjY5LDMgMTEuNzcsMy41IDEyLjUsNC4zNUMxMy4yMywzLjUgMTQuMzEsMyAxNS41LDNDMTcuNDYsMyAxOS4wOSw0LjQxIDE5LjQzLDYuMjZDMjAuOTMsNi44NCAyMiw4LjMgMjIsMTBBNCw0IDAgMCwxIDE4LDE0TDE3LjIzLDEzLjkzQzE2LjUsMTQuNTkgMTUuNTUsMTUgMTQuNSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaG91Z2h0QnViYmxlT3V0bGluZSA9IFwiTTMuNSwxOUExLjUsMS41IDAgMCwxIDUsMjAuNUExLjUsMS41IDAgMCwxIDMuNSwyMkExLjUsMS41IDAgMCwxIDIsMjAuNUExLjUsMS41IDAgMCwxIDMuNSwxOU04LjUsMTZBMi41LDIuNSAwIDAsMSAxMSwxOC41QTIuNSwyLjUgMCAwLDEgOC41LDIxQTIuNSwyLjUgMCAwLDEgNiwxOC41QTIuNSwyLjUgMCAwLDEgOC41LDE2TTE0LjUsMTVDMTMuMzEsMTUgMTIuMjMsMTQuNSAxMS41LDEzLjY1QzEwLjc3LDE0LjUgOS42OSwxNSA4LjUsMTVDNi41NCwxNSA0LjkxLDEzLjU5IDQuNTcsMTEuNzRDMy4wNywxMS4xNiAyLDkuNyAyLDhBNCw0IDAgMCwxIDYsNEw2Ljc3LDQuMDdDNy41LDMuNDEgOC40NSwzIDkuNSwzQzEwLjY5LDMgMTEuNzcsMy41IDEyLjUsNC4zNUMxMy4yMywzLjUgMTQuMzEsMyAxNS41LDNDMTcuNDYsMyAxOS4wOSw0LjQxIDE5LjQzLDYuMjZDMjAuOTMsNi44NCAyMiw4LjMgMjIsMTBBNCw0IDAgMCwxIDE4LDE0TDE3LjIzLDEzLjkzQzE2LjUsMTQuNTkgMTUuNTUsMTUgMTQuNSwxNU02LDZBMiwyIDAgMCwwIDQsOEEyLDIgMCAwLDAgNiwxMEM2LjMzLDEwIDYuNjQsOS45MiA2LjkyLDkuNzhDNi42NiwxMC4xMiA2LjUsMTAuNTQgNi41LDExQTIsMiAwIDAsMCA4LjUsMTNDOS4xLDEzIDkuNjQsMTIuNzMgMTAsMTIuMzFWMTIuMzFMMTEuNDcsMTAuNjNMMTMsMTIuMzRWMTIuMzRDMTMuMzgsMTIuNzQgMTMuOTEsMTMgMTQuNSwxM0MxNS41LDEzIDE2LjMzLDEyLjI2IDE2LjUsMTEuM0MxNi44NCwxMS43MyAxNy4zOSwxMiAxOCwxMkEyLDIgMCAwLDAgMjAsMTBBMiwyIDAgMCwwIDE4LDhDMTcuNjcsOCAxNy4zNiw4LjA4IDE3LjA4LDguMjJDMTcuMzQsNy44OCAxNy41LDcuNDYgMTcuNSw3QTIsMiAwIDAsMCAxNS41LDVDMTQuOTEsNSAxNC4zOCw1LjI2IDE0LDUuNjZMMTIuNDcsNy4zN0wxMSw1LjY5VjUuNjlDMTAuNjQsNS4yNyAxMC4xLDUgOS41LDVDOC41LDUgNy42Nyw1Ljc0IDcuNSw2LjdDNy4xNiw2LjI3IDYuNjEsNiA2LDZNOC41LDE3LjVBMSwxIDAgMCwwIDcuNSwxOC41QTEsMSAwIDAsMCA4LjUsMTkuNUExLDEgMCAwLDAgOS41LDE4LjVBMSwxIDAgMCwwIDguNSwxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRodW1iRG93biA9IFwiTTE5LDE1SDIzVjNIMTlNMTUsM0g2QzUuMTcsMyA0LjQ2LDMuNSA0LjE2LDQuMjJMMS4xNCwxMS4yN0MxLjA1LDExLjUgMSwxMS43NCAxLDEyVjE0QTIsMiAwIDAsMCAzLDE2SDkuMzFMOC4zNiwyMC41N0M4LjM0LDIwLjY3IDguMzMsMjAuNzcgOC4zMywyMC44OEM4LjMzLDIxLjMgOC41LDIxLjY3IDguNzcsMjEuOTRMOS44MywyM0wxNi40MSwxNi40MUMxNi43OCwxNi4wNSAxNywxNS41NSAxNywxNVY1QzE3LDMuODkgMTYuMSwzIDE1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGh1bWJEb3duT3V0bGluZSA9IFwiTTE5LDE1VjNIMjNWMTVIMTlNMTUsM0EyLDIgMCAwLDEgMTcsNVYxNUMxNywxNS41NSAxNi43OCwxNi4wNSAxNi40MSwxNi40MUw5LjgzLDIzTDguNzcsMjEuOTRDOC41LDIxLjY3IDguMzMsMjEuMyA4LjMzLDIwLjg4TDguMzYsMjAuNTdMOS4zMSwxNkgzQzEuODksMTYgMSwxNS4xIDEsMTRWMTJDMSwxMS43NCAxLjA1LDExLjUgMS4xNCwxMS4yN0w0LjE2LDQuMjJDNC40NiwzLjUgNS4xNywzIDYsM0gxNU0xNSw1SDUuOTdMMywxMlYxNEgxMS43OEwxMC42NSwxOS4zMkwxNSwxNC45N1Y1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRodW1iVXAgPSBcIk0yMywxMEMyMyw4Ljg5IDIyLjEsOCAyMSw4SDE0LjY4TDE1LjY0LDMuNDNDMTUuNjYsMy4zMyAxNS42NywzLjIyIDE1LjY3LDMuMTFDMTUuNjcsMi43IDE1LjUsMi4zMiAxNS4yMywyLjA1TDE0LjE3LDFMNy41OSw3LjU4QzcuMjIsNy45NSA3LDguNDUgNyw5VjE5QTIsMiAwIDAsMCA5LDIxSDE4QzE4LjgzLDIxIDE5LjU0LDIwLjUgMTkuODQsMTkuNzhMMjIuODYsMTIuNzNDMjIuOTUsMTIuNSAyMywxMi4yNiAyMywxMlYxME0xLDIxSDVWOUgxVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRodW1iVXBPdXRsaW5lID0gXCJNNSw5VjIxSDFWOUg1TTksMjFBMiwyIDAgMCwxIDcsMTlWOUM3LDguNDUgNy4yMiw3Ljk1IDcuNTksNy41OUwxNC4xNywxTDE1LjIzLDIuMDZDMTUuNSwyLjMzIDE1LjY3LDIuNyAxNS42NywzLjExTDE1LjY0LDMuNDNMMTQuNjksOEgyMUMyMi4xMSw4IDIzLDguOSAyMywxMFYxMkMyMywxMi4yNiAyMi45NSwxMi41IDIyLjg2LDEyLjczTDE5Ljg0LDE5Ljc4QzE5LjU0LDIwLjUgMTguODMsMjEgMTgsMjFIOU05LDE5SDE4LjAzTDIxLDEyVjEwSDEyLjIxTDEzLjM0LDQuNjhMOSw5LjAzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRodW1ic1VwRG93biA9IFwiTTIyLjUsMTBIMTUuNzVDMTUuMTMsMTAgMTQuNiwxMC4zOCAxNC4zNywxMC45MUwxMi4xMSwxNi4yQzEyLjA0LDE2LjM3IDEyLDE2LjU2IDEyLDE2Ljc1VjE4QTEsMSAwIDAsMCAxMywxOUgxOC4xOEwxNy41LDIyLjE4VjIyLjQyQzE3LjUsMjIuNzMgMTcuNjMsMjMgMTcuODMsMjMuMjJMMTguNjIsMjRMMjMuNTYsMTkuMDZDMjMuODMsMTguNzkgMjQsMTguNDEgMjQsMThWMTEuNUExLjUsMS41IDAgMCwwIDIyLjUsMTBNMTIsNkExLDEgMCAwLDAgMTEsNUg1LjgyTDYuNSwxLjgyVjEuNTlDNi41LDEuMjggNi4zNywxIDYuMTcsMC43OUw1LjM4LDBMMC40NCw0Ljk0QzAuMTcsNS4yMSAwLDUuNTkgMCw2VjEyLjVBMS41LDEuNSAwIDAsMCAxLjUsMTRIOC4yNUM4Ljg3LDE0IDkuNCwxMy42MiA5LjYzLDEzLjA5TDExLjg5LDcuOEMxMS45Niw3LjYzIDEyLDcuNDQgMTIsNy4yNVY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpY2tldCA9IFwiTTE1LjU4LDE2LjhMMTIsMTQuNUw4LjQyLDE2LjhMOS41LDEyLjY4TDYuMjEsMTBMMTAuNDYsOS43NEwxMiw1LjhMMTMuNTQsOS43NEwxNy43OSwxMEwxNC41LDEyLjY4TTIwLDEyQzIwLDEwLjg5IDIwLjksMTAgMjIsMTBWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0SDRBMiwyIDAgMCwwIDIsNlYxMEMzLjExLDEwIDQsMTAuOSA0LDEyQTIsMiAwIDAsMSAyLDE0VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFYxNEEyLDIgMCAwLDEgMjAsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGlja2V0QWNjb3VudCA9IFwiTTIwLDEyQTIsMiAwIDAsMCAyMiwxNFYxOEEyLDIgMCAwLDEgMjAsMjBINEEyLDIgMCAwLDEgMiwxOFYxNEMzLjExLDE0IDQsMTMuMSA0LDEyQTIsMiAwIDAsMCAyLDEwVjZDMiw0Ljg5IDIuOSw0IDQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxMEEyLDIgMCAwLDAgMjAsMTJNMTYuNSwxNi4yNUMxNi41LDE0Ljc1IDEzLjUsMTQgMTIsMTRDMTAuNSwxNCA3LjUsMTQuNzUgNy41LDE2LjI1VjE3SDE2LjVWMTYuMjVNMTIsMTIuMjVBMi4yNSwyLjI1IDAgMCwwIDE0LjI1LDEwQTIuMjUsMi4yNSAwIDAsMCAxMiw3Ljc1QTIuMjUsMi4yNSAwIDAsMCA5Ljc1LDEwQTIuMjUsMi4yNSAwIDAsMCAxMiwxMi4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaWNrZXRDb25maXJtYXRpb24gPSBcIk0xMyw4LjVIMTFWNi41SDEzVjguNU0xMywxM0gxMVYxMUgxM1YxM00xMywxNy41SDExVjE1LjVIMTNWMTcuNU0yMiwxMFY2QzIyLDQuODkgMjEuMSw0IDIwLDRINEEyLDIgMCAwLDAgMiw2VjEwQzMuMTEsMTAgNCwxMC45IDQsMTJBMiwyIDAgMCwxIDIsMTRWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjE0QTIsMiAwIDAsMSAyMCwxMkEyLDIgMCAwLDEgMjIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGlja2V0Q29uZmlybWF0aW9uT3V0bGluZSA9IFwiTTIyIDEwVjZDMjIgNC44OSAyMS4xIDQgMjAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMTBDMy4xMSAxMCA0IDEwLjkgNCAxMlMzLjExIDE0IDIgMTRWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDIwQzIxLjEgMjAgMjIgMTkuMSAyMiAxOFYxNEMyMC45IDE0IDIwIDEzLjEgMjAgMTJTMjAuOSAxMCAyMiAxME0yMCA4LjU0QzE4LjgxIDkuMjMgMTggMTAuNTMgMTggMTJTMTguODEgMTQuNzcgMjAgMTUuNDZWMThINFYxNS40NkM1LjE5IDE0Ljc3IDYgMTMuNDcgNiAxMkM2IDEwLjUgNS4yIDkuMjMgNCA4LjU0TDQgNkgyMFY4LjU0TTExIDE1SDEzVjE3SDExTTExIDExSDEzVjEzSDExTTExIDdIMTNWOUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaWNrZXRPdXRsaW5lID0gXCJNNCw0QTIsMiAwIDAsMCAyLDZWMTBBMiwyIDAgMCwxIDQsMTJBMiwyIDAgMCwxIDIsMTRWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjE0QTIsMiAwIDAsMSAyMCwxMkEyLDIgMCAwLDEgMjIsMTBWNkEyLDIgMCAwLDAgMjAsNEg0TTQsNkgyMFY4LjU0QzE4Ljc2LDkuMjUgMTgsMTAuNTcgMTgsMTJDMTgsMTMuNDMgMTguNzYsMTQuNzUgMjAsMTUuNDZWMThINFYxNS40NkM1LjI0LDE0Ljc1IDYsMTMuNDMgNiwxMkM2LDEwLjU3IDUuMjQsOS4yNSA0LDguNTRWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUaWNrZXRQZXJjZW50ID0gXCJNNCw0QTIsMiAwIDAsMCAyLDZWMTBDMy4xMSwxMCA0LDEwLjkgNCwxMkEyLDIgMCAwLDEgMiwxNFYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWMTRBMiwyIDAgMCwxIDIwLDEyQzIwLDEwLjg5IDIwLjksMTAgMjIsMTBWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0SDRNMTUuNSw3TDE3LDguNUw4LjUsMTdMNywxNS41TDE1LjUsN004LjgxLDcuMDRDOS43OSw3LjA0IDEwLjU4LDcuODMgMTAuNTgsOC44MUExLjc3LDEuNzcgMCAwLDEgOC44MSwxMC41OEM3LjgzLDEwLjU4IDcuMDQsOS43OSA3LjA0LDguODFBMS43NywxLjc3IDAgMCwxIDguODEsNy4wNE0xNS4xOSwxMy40MkMxNi4xNywxMy40MiAxNi45NiwxNC4yMSAxNi45NiwxNS4xOUExLjc3LDEuNzcgMCAwLDEgMTUuMTksMTYuOTZDMTQuMjEsMTYuOTYgMTMuNDIsMTYuMTcgMTMuNDIsMTUuMTlBMS43NywxLjc3IDAgMCwxIDE1LjE5LDEzLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpY2tldFBlcmNlbnRPdXRsaW5lID0gXCJNMTQuOCA4TDE2IDkuMkw5LjIgMTZMOCAxNC44TDE0LjggOE00IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMTBDMjAuOSAxMCAyMCAxMC45IDIwIDEyQzIwIDEzLjExIDIwLjkgMTQgMjIgMTRWMThDMjIgMTkuMTEgMjEuMTEgMjAgMjAgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjE0QzMuMTEgMTQgNCAxMy4xMSA0IDEyQzQgMTAuOSAzLjExIDEwIDIgMTBWNkMyIDQuODkgMi45IDQgNCA0TTQgNlY4LjU0QzUuMjQgOS4yNiA2IDEwLjU3IDYgMTJDNiAxMy40MyA1LjI0IDE0Ljc1IDQgMTUuNDZWMThIMjBWMTUuNDZDMTguNzYgMTQuNzUgMTggMTMuNDMgMTggMTJDMTggMTAuNTcgMTguNzYgOS4yNiAyMCA4LjU0VjZINE05LjUgOEMxMC4zMyA4IDExIDguNjcgMTEgOS41QzExIDEwLjMzIDEwLjMzIDExIDkuNSAxMUM4LjY3IDExIDggMTAuMzMgOCA5LjVDOCA4LjY3IDguNjcgOCA5LjUgOE0xNC41IDEzQzE1LjMzIDEzIDE2IDEzLjY3IDE2IDE0LjVDMTYgMTUuMzMgMTUuMzMgMTYgMTQuNSAxNkMxMy42NyAxNiAxMyAxNS4zMyAxMyAxNC41QzEzIDEzLjY3IDEzLjY3IDEzIDE0LjUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGllID0gXCJNNiwyTDEwLDZMNywxN0wxMiwyMkwxNywxN0wxNCw2TDE4LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGlsZGUgPSBcIk0yLDE1QzIsMTUgMiw5IDgsOUMxMiw5IDEyLjUsMTIuNSAxNS41LDEyLjVDMTkuNSwxMi41IDE5LjUsOSAxOS41LDlIMjJDMjIsOSAyMiwxNSAxNiwxNUMxMiwxNSAxMC41LDExLjUgOC41LDExLjVDNC41LDExLjUgNC41LDE1IDQuNSwxNUgyXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxhcHNlID0gXCJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNi4yNCw3Ljc2QzE1LjA3LDYuNTggMTMuNTMsNiAxMiw2VjEyTDcuNzYsMTYuMjRDMTAuMSwxOC41OCAxMy45LDE4LjU4IDE2LjI0LDE2LjI0QzE4LjU5LDEzLjkgMTguNTksMTAuMSAxNi4yNCw3Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lbGluZUFsZXJ0ID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0xNSA3VjEzSDE3VjdIMTVNMTUgMTVWMTdIMTdWMTVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVBbGVydE91dGxpbmUgPSBcIk00IDJWOEgyVjJINE0yIDIyVjE2SDRWMjJIMk01IDEyQzUgMTMuMTEgNC4xMSAxNCAzIDE0QzEuOSAxNCAxIDEzLjExIDEgMTJDMSAxMC45IDEuOSAxMCAzIDEwQzQuMTEgMTAgNSAxMC45IDUgMTJNMjQgNlYxOEMyNCAxOS4xMSAyMy4xMSAyMCAyMiAyMEgxMEM4LjkgMjAgOCAxOS4xMSA4IDE4VjE0TDYgMTJMOCAxMFY2QzggNC44OSA4LjkgNCAxMCA0SDIyQzIzLjExIDQgMjQgNC44OSAyNCA2TTEwIDZWMThIMjJWNkgxME0xNSA3SDE3VjEzSDE1VjdNMTUgMTVIMTdWMTdIMTVWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVDaGVjayA9IFwiTTQgOEgyVjJINFY4TTIgMjJINFYxNkgyVjIyTTMgMTBDMS45IDEwIDEgMTAuOSAxIDEyQzEgMTMuMTEgMS45IDE0IDMgMTRDNC4xMSAxNCA1IDEzLjExIDUgMTJDNSAxMC45IDQuMTEgMTAgMyAxME0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMTkuNzUgMTAuMzNMMTguNTkgOC45MkwxNSAxMi41TDEzLjQxIDEwLjkyTDEyLjI1IDEyLjA4TDE1IDE1LjA4TDE5Ljc1IDEwLjMzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lQ2hlY2tPdXRsaW5lID0gXCJNMjIgNEgxMEM4LjkgNCA4IDQuODkgOCA2VjEwTDYgMTJMOCAxNFYxOEM4IDE5LjExIDguOSAyMCAxMCAyMEgyMkMyMy4xMSAyMCAyNCAxOS4xMSAyNCAxOFY2QzI0IDQuODkgMjMuMTEgNCAyMiA0TTIyIDE4SDEwVjZIMjJWMThNNCA4SDJWMkg0VjhNMiAxNkg0VjIySDJWMTZNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTE1IDE1LjA4TDEyLjI1IDEyLjA4TDEzLjQxIDEwLjkyTDE1IDEyLjVMMTguNTkgOC45MkwxOS43NSAxMC4zM0wxNSAxNS4wOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lbGluZUNsb2NrID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTE2IDRDMjAuNDIgNCAyNCA3LjU4IDI0IDEyQzI0IDE2LjQyIDIwLjQyIDIwIDE2IDIwQzEyLjQgMjAgOS4zNiAxNy42MiA4LjM1IDE0LjM1TDYgMTJMOC4zNSA5LjY1QzkuMzYgNi4zOCAxMi40IDQgMTYgNE0xNSAxM0wxOS41MyAxNS43OUwyMC4zMyAxNC41TDE2LjUgMTIuMlY3SDE1VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lQ2xvY2tPdXRsaW5lID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTE2IDRDMjAuNDIgNCAyNCA3LjU4IDI0IDEyQzI0IDE2LjQyIDIwLjQyIDIwIDE2IDIwQzEyLjQgMjAgOS4zNiAxNy42MiA4LjM1IDE0LjM1TDYgMTJMOC4zNSA5LjY1QzkuMzYgNi4zOCAxMi40IDQgMTYgNE0xNiA2QzEyLjY5IDYgMTAgOC42OSAxMCAxMkMxMCAxNS4zMSAxMi42OSAxOCAxNiAxOEMxOS4zMSAxOCAyMiAxNS4zMSAyMiAxMkMyMiA4LjY5IDE5LjMxIDYgMTYgNk0xNSAxM1Y4SDE2LjVWMTIuMkwxOS41IDE0TDE4LjY4IDE1LjI2TDE1IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lSGVscCA9IFwiTTQgMlY4SDJWMkg0TTIgMjJWMTZINFYyMkgyTTUgMTJDNSAxMy4xMSA0LjExIDE0IDMgMTRDMS45IDE0IDEgMTMuMTEgMSAxMkMxIDEwLjkgMS45IDEwIDMgMTBDNC4xMSAxMCA1IDEwLjkgNSAxMk0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMTYuNSAxNS41SDE1VjE3SDE2LjVWMTUuNU0xNC41IDEwLjVWMTBDMTQuNSA5LjE3IDE1LjE3IDguNSAxNiA4LjVDMTYuODMgOC41IDE3LjUgOS4xOCAxNy41IDEwQzE3LjUgMTAuNDcgMTcuMjcgMTAuOSAxNi44OCAxMS4xNkwxNi41OSAxMS4zNUMxNS42IDEyIDE1IDEzLjExIDE1IDE0LjNWMTQuNUgxNi41VjE0LjNDMTYuNSAxMy42MiAxNi44NCAxMyAxNy40MSAxMi42TDE3LjcxIDEyLjQxQzE4LjUgMTEuODggMTkgMTAuOTcgMTkgMTBDMTkgOC4zNCAxNy42NiA3IDE2IDdDMTQuMzQgNyAxMyA4LjM0IDEzIDEwVjEwLjVIMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lbGluZUhlbHBPdXRsaW5lID0gXCJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTQgMlY4SDJWMkg0TTIgMjJWMTZINFYyMkgyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0yMiA2SDEwVjEwLjgzTDguODMgMTJMMTAgMTMuMTdWMThIMjJWNk0xNi41IDE1LjVWMTdIMTVWMTUuNUgxNi41TTE0LjUgMTAuNUgxM1YxMEMxMyA4LjM0IDE0LjM0IDcgMTYgN0MxNy42NiA3IDE5IDguMzQgMTkgMTBDMTkgMTAuOTcgMTguNSAxMS44OCAxNy43MSAxMi40MUwxNy40MSAxMi42QzE2Ljg0IDEzIDE2LjUgMTMuNjIgMTYuNSAxNC4zVjE0LjVIMTVWMTQuM0MxNSAxMy4xMSAxNS42IDEyIDE2LjU5IDExLjM1TDE2Ljg4IDExLjE2QzE3LjI3IDEwLjkgMTcuNSAxMC40NyAxNy41IDEwQzE3LjUgOS4xOCAxNi44MyA4LjUgMTYgOC41QzE1LjE3IDguNSAxNC41IDkuMTcgMTQuNSAxMFYxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lTWludXMgPSBcIk00IDhIMlYySDRWOE0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMjAgMTFIMTJWMTNIMjBWMTFNMiAyMkg0VjE2SDJWMjJNMyAxMEMxLjkgMTAgMSAxMC45IDEgMTJDMSAxMy4xMSAxLjkgMTQgMyAxNEM0LjExIDE0IDUgMTMuMTEgNSAxMkM1IDEwLjkgNC4xMSAxMCAzIDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lTWludXNPdXRsaW5lID0gXCJNMiAxNkg0VjIySDJWMTZNNCAySDJWOEg0VjJNMjAgMTFIMTJWMTNIMjBWMTFNMyAxMEMxLjkgMTAgMSAxMC45IDEgMTJDMSAxMy4xMSAxLjkgMTQgMyAxNEM0LjExIDE0IDUgMTMuMTEgNSAxMkM1IDEwLjkgNC4xMSAxMCAzIDEwTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0yMiA2SDEwVjE4SDIyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVPdXRsaW5lID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0xMCA2VjE4SDIyVjZIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVQbHVzID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0yMCAxMUgxN1Y4SDE1VjExSDEyVjEzSDE1VjE2SDE3VjEzSDIwVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lUGx1c091dGxpbmUgPSBcIk00IDJWOEgyVjJINE0yIDIyVjE2SDRWMjJIMk01IDEyQzUgMTMuMTEgNC4xMSAxNCAzIDE0QzEuOSAxNCAxIDEzLjExIDEgMTJDMSAxMC45IDEuOSAxMCAzIDEwQzQuMTEgMTAgNSAxMC45IDUgMTJNMjAgMTFWMTNIMTdWMTZIMTVWMTNIMTJWMTFIMTVWOEgxN1YxMUgyME0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMTAgNlYxOEgyMlY2SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lUmVtb3ZlID0gXCJNNCA4SDJWMkg0VjhNMiAyMkg0VjE2SDJWMjJNMyAxMEMxLjkgMTAgMSAxMC45IDEgMTJDMSAxMy4xMSAxLjkgMTQgMyAxNEM0LjExIDE0IDUgMTMuMTEgNSAxMkM1IDEwLjkgNC4xMSAxMCAzIDEwTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0xNy40MSAxMkwxOS41MyA5Ljg4TDE4LjEyIDguNDdMMTYgMTAuNTlMMTMuODggOC40N0wxMi40NyA5Ljg4TDE0LjU5IDEyTDEyLjQ3IDE0LjEyTDEzLjg4IDE1LjUzTDE2IDEzLjQxTDE4LjEyIDE1LjUzTDE5LjUzIDE0LjEyTDE3LjQxIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lUmVtb3ZlT3V0bGluZSA9IFwiTTQgOEgyVjJINFY4TTIgMjJINFYxNkgyVjIyTTMgMTBDMS45IDEwIDEgMTAuOSAxIDEyQzEgMTMuMTEgMS45IDE0IDMgMTRDNC4xMSAxNCA1IDEzLjExIDUgMTJDNSAxMC45IDQuMTEgMTAgMyAxME0xMy44OCAxNS41NEwxNiAxMy40MUwxOC4xMiAxNS41M0wxOS41MyAxNC4xMkwxNy40MSAxMkwxOS41MyA5Ljg4TDE4LjEyIDguNDdMMTYgMTAuNTlMMTMuODggOC40N0wxMi40NyA5Ljg4TDE0LjU5IDEyTDEyLjQ3IDE0LjEyTDEzLjg4IDE1LjU0TTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0yMiA2SDEwVjE4SDIyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVUZXh0ID0gXCJNNCAyVjhIMlYySDRNMiAyMkg0VjE2SDJWMjJNNSAxMkM1IDEwLjkgNC4xMSAxMCAzIDEwQzEuOSAxMCAxIDEwLjkgMSAxMkMxIDEzLjExIDEuOSAxNCAzIDE0QzQuMTEgMTQgNSAxMy4xMSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0xOSAxM0gxMVYxNUgxOVYxM00yMSA5SDExVjExSDIxVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVUZXh0T3V0bGluZSA9IFwiTTUgMTJDNSAxMy4xMSA0LjExIDE0IDMgMTRDMS45IDE0IDEgMTMuMTEgMSAxMkMxIDEwLjkgMS45IDEwIDMgMTBDNC4xMSAxMCA1IDEwLjkgNSAxMk00IDJWOEgyVjJINE0yIDIyVjE2SDRWMjJIMk0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMjIgNkgxMFYxMC44M0w4LjgzIDEyTDEwIDEzLjE3VjE4SDIyVjZNMTIgOUgyMFYxMUgxMlY5TTEyIDEzSDE4VjE1SDEyVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVyID0gXCJNMTkuMDMgNy4zOUwyMC40NSA1Ljk3QzIwIDUuNDYgMTkuNTUgNSAxOS4wNCA0LjU2TDE3LjYyIDZDMTYuMDcgNC43NCAxNC4xMiA0IDEyIDRDNy4wMyA0IDMgOC4wMyAzIDEzUzcuMDMgMjIgMTIgMjJDMTcgMjIgMjEgMTcuOTcgMjEgMTNDMjEgMTAuODggMjAuMjYgOC45MyAxOS4wMyA3LjM5TTEzIDE0SDExVjdIMTNWMTRNMTUgMUg5VjNIMTVWMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lcjEwID0gXCJNMTIuOSwxMy4yMkMxMi45LDEzLjgyIDEyLjg2LDE0LjMzIDEyLjc4LDE0Ljc1QzEyLjcsMTUuMTcgMTIuNTgsMTUuNSAxMi40MiwxNS43N0MxMi4yNiwxNi4wMyAxMi4wNiwxNi4yMiAxMS44MywxNi4zNEMxMS42LDE2LjQ2IDExLjMyLDE2LjUgMTEsMTYuNUMxMC43MSwxNi41IDEwLjQzLDE2LjQ2IDEwLjE5LDE2LjM0QzkuOTUsMTYuMjIgOS43NSwxNi4wMyA5LjU5LDE1Ljc3QzkuNDMsMTUuNSA5LjMsMTUuMTcgOS4yMSwxNC43NUM5LjEyLDE0LjMzIDkuMDgsMTMuODIgOS4wOCwxMy4yMlYxMC43MkM5LjA4LDEwLjEyIDkuMTIsOS42MSA5LjIxLDkuMkM5LjMsOC43OSA5LjQyLDguNDYgOS41OSw4LjJDOS43NSw3Ljk1IDkuOTUsNy43NyAxMC4xOSw3LjY1QzEwLjQzLDcuNTQgMTAuNyw3LjUgMTEsNy41QzExLjMxLDcuNSAxMS41OCw3LjU0IDExLjgxLDcuNjVDMTIuMDUsNy43NiAxMi4yNSw3Ljk0IDEyLjQxLDguMkMxMi41Nyw4LjQ1IDEyLjcsOC43OCAxMi43OCw5LjE5QzEyLjg2LDkuNiAxMi45MSwxMC4xMSAxMi45MSwxMC43MVYxMy4yMk0xMy44Miw3LjA1QzEzLjUsNi42NSAxMy4wNyw2LjM1IDEyLjU5LDYuMTdDMTIuMTIsNiAxMS41OCw1LjkgMTEsNS45QzEwLjQyLDUuOSA5Ljg5LDYgOS40MSw2LjE3QzguOTMsNi4zNSA4LjUsNi42NCA4LjE4LDcuMDVDNy44NCw3LjQ2IDcuNTgsOCA3LjM5LDguNjRDNy4yMSw5LjI5IDcuMTEsMTAuMDkgNy4xMSwxMS4wM1YxMi45NUM3LjExLDEzLjg5IDcuMiwxNC42OSA3LjM5LDE1LjM0QzcuNTgsMTYgNy44NCwxNi41MyA4LjE5LDE2Ljk0QzguNTMsMTcuMzUgOC45NCwxNy42NSA5LjQyLDE3LjgzQzkuOSwxOCAxMC40MywxOC4xMSAxMSwxOC4xMUMxMS42LDE4LjExIDEyLjEzLDE4IDEyLjYsMTcuODNDMTMuMDgsMTcuNjUgMTMuNSwxNy4zNSAxMy44MiwxNi45NEMxNC4xNiwxNi41MyAxNC40MiwxNiAxNC42LDE1LjM0QzE0Ljc4LDE0LjY5IDE0Ljg4LDEzLjg5IDE0Ljg4LDEyLjk1VjExLjAzQzE0Ljg4LDEwLjA5IDE0Ljc5LDkuMjkgMTQuNiw4LjY0QzE0LjQyLDggMTQuMTYsNy40NSAxMy44Miw3LjA1TTIzLjc4LDE0LjM3QzIzLjY0LDE0LjA5IDIzLjQzLDEzLjg0IDIzLjE1LDEzLjYzQzIyLjg3LDEzLjQyIDIyLjU0LDEzLjI0IDIyLjE0LDEzLjFDMjEuNzQsMTIuOTYgMjEuMjksMTIuODMgMjAuNzksMTIuNzJDMjAuNDQsMTIuNjUgMjAuMTUsMTIuNTcgMTkuOTIsMTIuNUMxOS42OSwxMi40MSAxOS41LDEyLjMzIDE5LjM3LDEyLjI0QzE5LjIzLDEyLjE1IDE5LjE0LDEyLjA1IDE5LjA5LDExLjk0QzE5LjA0LDExLjgzIDE5LDExLjcgMTksMTEuNTVDMTksMTEuNDEgMTkuMDQsMTEuMjcgMTkuMSwxMS4xNEMxOS4xNiwxMSAxOS4yNSwxMC44OSAxOS4zNywxMC44QzE5LjUsMTAuNyAxOS42NCwxMC42MiAxOS44MiwxMC41NkMyMCwxMC41IDIwLjIyLDEwLjQ3IDIwLjQ2LDEwLjQ3QzIwLjcxLDEwLjQ3IDIwLjkzLDEwLjUgMjEuMTIsMTAuNThDMjEuMzEsMTAuNjUgMjEuNDcsMTAuNzUgMjEuNiwxMC44N0MyMS43MywxMSAyMS44MiwxMS4xMyAyMS44OSwxMS4yOUMyMS45NSwxMS40NSAyMiwxMS42MSAyMiwxMS43OEgyMy45NEMyMy45NCwxMS4zOSAyMy44NiwxMS4wMyAyMy43LDEwLjY5QzIzLjU0LDEwLjM1IDIzLjMxLDEwLjA2IDIzLDkuODFDMjIuNzEsOS41NiAyMi4zNSw5LjM3IDIxLjkyLDkuMjJDMjEuNSw5LjA3IDIxLDkgMjAuNDYsOUMxOS45NSw5IDE5LjUsOS4wNyAxOS4wNyw5LjIxQzE4LjY2LDkuMzUgMTguMyw5LjU0IDE4LDkuNzhDMTcuNzIsMTAgMTcuNSwxMC4zIDE3LjM0LDEwLjYyQzE3LjE4LDEwLjk0IDE3LjExLDExLjI3IDE3LjExLDExLjYzQzE3LjExLDEyIDE3LjE5LDEyLjMyIDE3LjM0LDEyLjU5QzE3LjUsMTIuODcgMTcuNywxMy4xMSAxOCwxMy4zMkMxOC4yNSwxMy41MyAxOC41OCwxMy43IDE4Ljk2LDEzLjg1QzE5LjM0LDE0IDE5Ljc3LDE0LjExIDIwLjIzLDE0LjIxQzIwLjYyLDE0LjI5IDIwLjk0LDE0LjM4IDIxLjE4LDE0LjQ3QzIxLjQyLDE0LjU2IDIxLjYxLDE0LjY2IDIxLjc1LDE0Ljc2QzIxLjg4LDE0Ljg2IDIxLjk3LDE1IDIyLDE1LjFDMjIuMDcsMTUuMjIgMjIuMDksMTUuMzUgMjIuMDksMTUuNUMyMi4wOSwxNS44MSAyMS45NiwxNi4wNiAyMS42OSwxNi4yNkMyMS40MiwxNi40NiAyMS4wMywxNi41NSAyMC41LDE2LjU1QzIwLjMsMTYuNTUgMjAuMDksMTYuNTMgMTkuODgsMTYuNDdDMTkuNjcsMTYuNDIgMTkuNSwxNi4zNCAxOS4zMiwxNi4yM0MxOS4xNSwxNi4xMiAxOSwxNS45NyAxOC45MSwxNS43OUMxOC44LDE1LjYxIDE4Ljc0LDE1LjM4IDE4LjczLDE1LjEySDE2Ljg0QzE2Ljg0LDE1LjUgMTYuOTIsMTUuODMgMTcuMDgsMTYuMTdDMTcuMjQsMTYuNSAxNy40NywxNi44MiAxNy43OCwxNy4xQzE4LjA5LDE3LjM3IDE4LjQ3LDE3LjU5IDE4LjkzLDE3Ljc2QzE5LjM5LDE3LjkzIDE5LjkxLDE4IDIwLjUsMThDMjEuMDQsMTggMjEuNSwxNy45NSAyMS45NSwxNy44MkMyMi4zOCwxNy42OSAyMi43NSwxNy41IDIzLjA2LDE3LjI4QzIzLjM3LDE3LjA1IDIzLjYsMTYuNzcgMjMuNzcsMTYuNDVDMjMuOTQsMTYuMTMgMjQsMTUuNzggMjQsMTUuMzlDMjQsMTUgMjMuOTMsMTQuNjUgMjMuNzgsMTQuMzdNMCw3LjcyVjkuNEwzLDguNFYxOEg1VjZINC43NUwwLDcuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZXIzID0gXCJNMjAuODcsMTQuMzdDMjAuNzMsMTQuMDkgMjAuNSwxMy44NCAyMC4yNCwxMy42M0MxOS45NiwxMy40MiAxOS42MywxMy4yNCAxOS4yMywxMy4xQzE4LjgzLDEyLjk2IDE4LjM4LDEyLjgzIDE3Ljg4LDEyLjcyQzE3LjUzLDEyLjY1IDE3LjI0LDEyLjU3IDE3LDEyLjVDMTYuNzgsMTIuNDEgMTYuNiwxMi4zMyAxNi40NiwxMi4yNEMxNi4zMiwxMi4xNSAxNi4yMywxMi4wNSAxNi4xOCwxMS45NEMxNi4xMywxMS44MyAxNi4xLDExLjcgMTYuMSwxMS41NUMxNi4xLDExLjQgMTYuMTMsMTEuMjcgMTYuMTksMTEuMTRDMTYuMjUsMTEgMTYuMzQsMTAuODkgMTYuNDYsMTAuOEMxNi41OCwxMC43IDE2LjczLDEwLjYyIDE2LjkxLDEwLjU2QzE3LjA5LDEwLjUgMTcuMzEsMTAuNDcgMTcuNTUsMTAuNDdDMTcuOCwxMC40NyAxOCwxMC41IDE4LjIxLDEwLjU4QzE4LjQsMTAuNjUgMTguNTYsMTAuNzUgMTguNjksMTAuODdDMTguODIsMTEgMTguOTEsMTEuMTMgMTksMTEuMjlDMTkuMDQsMTEuNDUgMTkuMDgsMTEuNjEgMTkuMDgsMTEuNzhIMjEuMDNDMjEuMDMsMTEuMzkgMjAuOTUsMTEuMDMgMjAuNzksMTAuNjlDMjAuNjMsMTAuMzUgMjAuNCwxMC4wNiAyMC4xLDkuODFDMTkuOCw5LjU2IDE5LjQ0LDkuMzcgMTksOS4yMkMxOC41OCw5LjA3IDE4LjA5LDkgMTcuNTUsOUMxNy4wNCw5IDE2LjU3LDkuMDcgMTYuMTYsOS4yMUMxNS43NSw5LjM1IDE1LjM5LDkuNTQgMTUuMSw5Ljc4QzE0LjgxLDEwIDE0LjU5LDEwLjMgMTQuNDMsMTAuNjJDMTQuMjcsMTAuOTQgMTQuMiwxMS4yNyAxNC4yLDExLjYzQzE0LjIsMTIgMTQuMjgsMTIuMzEgMTQuNDMsMTIuNTlDMTQuNTgsMTIuODcgMTQuOCwxMy4xMSAxNS4wNywxMy4zMkMxNS4zNCwxMy41MyAxNS42NywxMy43IDE2LjA1LDEzLjg1QzE2LjQzLDE0IDE2Ljg2LDE0LjExIDE3LjMyLDE0LjIxQzE3LjcxLDE0LjI5IDE4LjAzLDE0LjM4IDE4LjI3LDE0LjQ3QzE4LjUsMTQuNTYgMTguNywxNC42NiAxOC44NCwxNC43NkMxOC45NywxNC44NiAxOS4wNiwxNSAxOS4xMSwxNS4xQzE5LjE2LDE1LjIyIDE5LjE4LDE1LjM1IDE5LjE4LDE1LjVDMTkuMTgsMTUuODEgMTkuMDUsMTYuMDYgMTguNzgsMTYuMjZDMTguNSwxNi40NiAxOC4xMiwxNi41NSAxNy42MSwxNi41NUMxNy4zOSwxNi41NSAxNy4xOCwxNi41MyAxNi45NywxNi40N0MxNi43NiwxNi40MiAxNi41NywxNi4zNCAxNi40MSwxNi4yM0MxNi4yNCwxNi4xMiAxNi4xMSwxNS45NyAxNiwxNS43OUMxNS44OSwxNS42MSAxNS44MywxNS4zOCAxNS44MiwxNS4xMkgxMy45M0MxMy45MywxNS41IDE0LDE1LjgzIDE0LjE3LDE2LjE3QzE0LjMzLDE2LjUgMTQuNTYsMTYuODIgMTQuODcsMTcuMUMxNS4xOCwxNy4zNyAxNS41NiwxNy41OSAxNiwxNy43NkMxNi41LDE3LjkzIDE3LDE4IDE3LjYsMThDMTguMTMsMTggMTguNjEsMTcuOTUgMTkuMDQsMTcuODJDMTkuNDcsMTcuNjkgMTkuODQsMTcuNSAyMC4xNSwxNy4yOEMyMC40NiwxNy4wNSAyMC42OSwxNi43NyAyMC44NiwxNi40NUMyMS4wMywxNi4xMyAyMS4xMSwxNS43OCAyMS4xMSwxNS4zOUMyMS4wOSwxNSAyMSwxNC42NSAyMC44NywxNC4zN00xMS42MSwxMi45N0MxMS40NSwxMi43MyAxMS4yNSwxMi41IDExLDEyLjMyQzEwLjc0LDEyLjEzIDEwLjQzLDExLjk3IDEwLjA2LDExLjg0QzEwLjM2LDExLjcgMTAuNjMsMTEuNTQgMTAuODYsMTEuMzRDMTEuMDksMTEuMTQgMTEuMjgsMTAuOTMgMTEuNDMsMTAuN0MxMS41OCwxMC40NyAxMS43LDEwLjI0IDExLjc3LDEwQzExLjg1LDkuNzUgMTEuODgsOS41IDExLjg4LDkuMjZDMTEuODgsOC43MSAxMS43OSw4LjIyIDExLjYsNy44QzExLjQyLDcuMzggMTEuMTYsNy4wMyAxMC44Miw2Ljc0QzEwLjUsNi40NiAxMC4wOSw2LjI0IDkuNjIsNi4xQzkuMTcsNS45NyA4LjY1LDUuOSA4LjA5LDUuOUM3LjU0LDUuOSA3LjAzLDYgNi41Nyw2LjE0QzYuMSw2LjMxIDUuNyw2LjU0IDUuMzcsNi44M0M1LjA0LDcuMTIgNC43Nyw3LjQ2IDQuNTksNy44NkM0LjM5LDguMjUgNC4zLDguNjkgNC4zLDkuMTVINi4yOEM2LjI4LDguODkgNi4zMyw4LjY2IDYuNDIsOC40NkM2LjUsOC4yNiA2LjY0LDguMDggNi44LDcuOTRDNi45Nyw3LjggNy4xNiw3LjY5IDcuMzgsNy42MUM3LjYsNy41MyA3Ljg0LDcuNSA4LjExLDcuNUM4LjcyLDcuNSA5LjE3LDcuNjUgOS40Nyw3Ljk2QzkuNzcsOC4yNyA5LjkxLDguNzEgOS45MSw5LjI4QzkuOTEsOS41NSA5Ljg3LDkuOCA5Ljc5LDEwQzkuNzEsMTAuMjQgOS41OCwxMC40MyA5LjQxLDEwLjU5QzkuMjQsMTAuNzUgOS4wMywxMC44NyA4Ljc4LDEwLjk2QzguNTMsMTEuMDUgOC4yMywxMS4wOSA3Ljg5LDExLjA5SDYuNzJWMTIuNjZINy45QzguMjQsMTIuNjYgOC41NCwxMi43IDguODEsMTIuNzdDOS4wOCwxMi44NSA5LjMxLDEyLjk2IDkuNSwxMy4xMkM5LjY5LDEzLjI4IDkuODQsMTMuNSA5Ljk0LDEzLjczQzEwLjA0LDEzLjk3IDEwLjEsMTQuMjcgMTAuMSwxNC42QzEwLjEsMTUuMjIgOS45MiwxNS42OSA5LjU3LDE2QzkuMjIsMTYuMzUgOC43MywxNi41IDguMTIsMTYuNUM3LjgzLDE2LjUgNy41NiwxNi40NyA3LjMyLDE2LjM4QzcuMDgsMTYuMyA2Ljg4LDE2LjE4IDYuNzEsMTZDNi41NCwxNS44NiA2LjQxLDE1LjY4IDYuMzIsMTUuNDZDNi4yMywxNS4yNCA2LjE4LDE1IDYuMTgsMTQuNzRINC4xOUM0LjE5LDE1LjI5IDQuMywxNS43NyA0LjUsMTYuMTlDNC43MiwxNi42MSA1LDE2Ljk2IDUuMzcsMTcuMjRDNS43MywxNy41IDYuMTQsMTcuNzMgNi42MSwxNy44N0M3LjA4LDE4IDcuNTcsMTguMDggOC4wOSwxOC4wOEM4LjY2LDE4LjA4IDkuMTgsMTggOS42NywxNy44NUMxMC4xNiwxNy43IDEwLjU4LDE3LjQ3IDEwLjkzLDE3LjE3QzExLjI5LDE2Ljg3IDExLjU3LDE2LjUgMTEuNzcsMTYuMDdDMTEuOTcsMTUuNjQgMTIuMDcsMTUuMTQgMTIuMDcsMTQuNTlDMTIuMDcsMTQuMyAxMi4wMywxNCAxMS45NiwxMy43M0MxMS44OCwxMy41IDExLjc3LDEzLjIyIDExLjYxLDEyLjk3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVyT2ZmID0gXCJNMyA0TDEuNzUgNS4yN0w0LjUgOC4wM0MzLjU1IDkuNDUgMyAxMS4xNiAzIDEzQzMgMTcuOTcgNy4wMyAyMiAxMiAyMkMxMy44NCAyMiAxNS41NSAyMS40NSAxNyAyMC41TDE5LjUgMjNMMjAuNzUgMjEuNzNMMTMuMDQgMTRMMyA0TTE1IDFIOVYzSDE1TTIxIDEzQzIxIDE0LjgzIDIwLjQ1IDE2LjUzIDE5LjUgMTcuOTRMMTMgMTEuNDVWN0gxMVY5LjQ1TDcuMDUgNS41QzguNDcgNC41NSAxMC4xNyA0IDEyIDRDMTQuMTIgNCAxNi4wNyA0Ljc0IDE3LjYyIDUuOTdMMTkuMDQgNC41NUwyMC40NSA1Ljk3TDE5LjAzIDcuMzlDMjAuMjYgOC45MyAyMSAxMC44OCAyMSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lck9mZk91dGxpbmUgPSBcIk0xMiwyMEE3LDcgMCAwLDEgNSwxM0M1LDExLjcyIDUuMzUsMTAuNSA1Ljk1LDkuNUwxNS41LDE5LjA0QzE0LjUsMTkuNjUgMTMuMjgsMjAgMTIsMjBNMyw0TDEuNzUsNS4yN0w0LjUsOC4wM0MzLjU1LDkuNDUgMywxMS4xNiAzLDEzQTksOSAwIDAsMCAxMiwyMkMxMy44NCwyMiAxNS41NSwyMS40NSAxNywyMC41TDE5LjUsMjNMMjAuNzUsMjEuNzNMMTMuMDQsMTRMMyw0TTExLDkuNDRMMTMsMTEuNDRWOEgxMU0xNSwxSDlWM0gxNU0xOS4wNCw0LjU1TDE3LjYyLDUuOTdDMTYuMDcsNC43NCAxNC4xMiw0IDEyLDRDMTAuMTcsNCA4LjQ3LDQuNTUgNy4wNSw1LjVMOC41LDYuOTRDOS41Myw2LjM1IDEwLjczLDYgMTIsNkE3LDcgMCAwLDEgMTksMTNDMTksMTQuMjcgMTguNjUsMTUuNDcgMTguMDYsMTYuNUwxOS41LDE3Ljk0QzIwLjQ1LDE2LjUzIDIxLDE0LjgzIDIxLDEzQzIxLDEwLjg4IDIwLjI2LDguOTMgMTkuMDMsNy4zOUwyMC40NSw1Ljk3TDE5LjA0LDQuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZXJPdXRsaW5lID0gXCJNMTIsMjBBNyw3IDAgMCwxIDUsMTNBNyw3IDAgMCwxIDEyLDZBNyw3IDAgMCwxIDE5LDEzQTcsNyAwIDAsMSAxMiwyME0xOS4wMyw3LjM5TDIwLjQ1LDUuOTdDMjAsNS40NiAxOS41NSw1IDE5LjA0LDQuNTZMMTcuNjIsNkMxNi4wNyw0Ljc0IDE0LjEyLDQgMTIsNEE5LDkgMCAwLDAgMywxM0E5LDkgMCAwLDAgMTIsMjJDMTcsMjIgMjEsMTcuOTcgMjEsMTNDMjEsMTAuODggMjAuMjYsOC45MyAxOS4wMyw3LjM5TTExLDE0SDEzVjhIMTFNMTUsMUg5VjNIMTVWMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lclNhbmQgPSBcIk02LDJIMThWOEgxOFY4TDE0LDEyTDE4LDE2VjE2SDE4VjIySDZWMTZINlYxNkwxMCwxMkw2LDhWOEg2VjJNMTYsMTYuNUwxMiwxMi41TDgsMTYuNVYyMEgxNlYxNi41TTEyLDExLjVMMTYsNy41VjRIOFY3LjVMMTIsMTEuNU0xMCw2SDE0VjYuNzVMMTIsOC43NUwxMCw2Ljc1VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZXJTYW5kRW1wdHkgPSBcIk02LDJWOEg2VjhMMTAsMTJMNiwxNlYxNkg2VjIySDE4VjE2SDE4VjE2TDE0LDEyTDE4LDhWOEgxOFYySDZNMTYsMTYuNVYyMEg4VjE2LjVMMTIsMTIuNUwxNiwxNi41TTEyLDExLjVMOCw3LjVWNEgxNlY3LjVMMTIsMTEuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lclNhbmRGdWxsID0gXCJNNiwyVjhINlY4TDEwLDEyTDYsMTZWMTZINlYyMkgxOFYxNkgxOFYxNkwxNCwxMkwxOCw4VjhIMThWMkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWV0YWJsZSA9IFwiTTE0LDEySDE1LjVWMTQuODJMMTcuOTQsMTYuMjNMMTcuMTksMTcuNTNMMTQsMTUuNjlWMTJNNCwySDE4QTIsMiAwIDAsMSAyMCw0VjEwLjFDMjEuMjQsMTEuMzYgMjIsMTMuMDkgMjIsMTVBNyw3IDAgMCwxIDE1LDIyQzEzLjA5LDIyIDExLjM2LDIxLjI0IDEwLjEsMjBINEEyLDIgMCAwLDEgMiwxOFY0QTIsMiAwIDAsMSA0LDJNNCwxNVYxOEg4LjY3QzguMjQsMTcuMDkgOCwxNi4wNyA4LDE1SDRNNCw4SDEwVjVINFY4TTE4LDhWNUgxMlY4SDE4TTQsMTNIOC4yOUM4LjYzLDExLjg1IDkuMjYsMTAuODIgMTAuMSwxMEg0VjEzTTE1LDEwLjE1QTQuODUsNC44NSAwIDAsMCAxMC4xNSwxNUMxMC4xNSwxNy42OCAxMi4zMiwxOS44NSAxNSwxOS44NUE0Ljg1LDQuODUgMCAwLDAgMTkuODUsMTVDMTkuODUsMTIuMzIgMTcuNjgsMTAuMTUgMTUsMTAuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9hc3RlciA9IFwiTTIxIDExQTIgMiAwIDAgMCAxOSA5SDVBMiAyIDAgMCAwIDMgMTFIMlYxM0gzVjIwSDIxVjEzSDIyVjExTTE3IDE1QTIgMiAwIDEgMSAxOSAxM0EyIDIgMCAwIDEgMTcgMTVNMTggOEg2QzYuMzMgNS43NSA4Ljg4IDQgMTIgNFMxNy42MyA1Ljc1IDE4IDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9hc3Rlck9mZiA9IFwiTTIwLjggMjIuN0wxOC4xIDIwSDNWMTNIMlYxMUgzQzMgOS45IDMuOSA5IDUgOUg3LjFMMS4xIDNMMi40IDEuN0wyMi4xIDIxLjRMMjAuOCAyMi43TTE1LjMgMTIuMUMxNS42IDExLjUgMTYuMyAxMSAxNyAxMUMxOC4xIDExIDE5IDExLjkgMTkgMTNDMTkgMTMuOCAxOC42IDE0LjQgMTcuOSAxNC43TDIxIDE3LjhWMTNIMjJWMTFIMjFDMjEgOS45IDIwLjEgOSAxOSA5SDEyLjJMMTUuMyAxMi4xTTE4IDhDMTcuNiA1LjggMTUuMSA0IDEyIDRDMTAuNiA0IDkuMiA0LjQgOC4yIDVMMTEuMiA4SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvYXN0ZXJPdmVuID0gXCJNNCw1QTIsMiAwIDAsMCAyLDdWMTdBMiwyIDAgMCwwIDQsMTlIMjBBMiwyIDAgMCwwIDIyLDE3VjdBMiwyIDAgMCwwIDIwLDVINE00LDdIMTZWMTdINFY3TTE5LDdBMSwxIDAgMCwxIDIwLDhBMSwxIDAgMCwxIDE5LDlBMSwxIDAgMCwxIDE4LDhBMSwxIDAgMCwxIDE5LDdNNiw5VjExSDE0VjlINk0xOSwxMUExLDEgMCAwLDEgMjAsMTJBMSwxIDAgMCwxIDE5LDEzQTEsMSAwIDAsMSAxOCwxMkExLDEgMCAwLDEgMTksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9nZ2xlU3dpdGNoID0gXCJNMTcsN0g3QTUsNSAwIDAsMCAyLDEyQTUsNSAwIDAsMCA3LDE3SDE3QTUsNSAwIDAsMCAyMiwxMkE1LDUgMCAwLDAgMTcsN00xNywxNUEzLDMgMCAwLDEgMTQsMTJBMywzIDAgMCwxIDE3LDlBMywzIDAgMCwxIDIwLDEyQTMsMyAwIDAsMSAxNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb2dnbGVTd2l0Y2hPZmYgPSBcIk0xNyw3SDdBNSw1IDAgMCwwIDIsMTJBNSw1IDAgMCwwIDcsMTdIMTdBNSw1IDAgMCwwIDIyLDEyQTUsNSAwIDAsMCAxNyw3TTcsMTVBMywzIDAgMCwxIDQsMTJBMywzIDAgMCwxIDcsOUEzLDMgMCAwLDEgMTAsMTJBMywzIDAgMCwxIDcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9nZ2xlU3dpdGNoT2ZmT3V0bGluZSA9IFwiTTcsMTBBMiwyIDAgMCwxIDksMTJBMiwyIDAgMCwxIDcsMTRBMiwyIDAgMCwxIDUsMTJBMiwyIDAgMCwxIDcsMTBNMTcsN0E1LDUgMCAwLDEgMjIsMTJBNSw1IDAgMCwxIDE3LDE3SDdBNSw1IDAgMCwxIDIsMTJBNSw1IDAgMCwxIDcsN0gxN003LDlBMywzIDAgMCwwIDQsMTJBMywzIDAgMCwwIDcsMTVIMTdBMywzIDAgMCwwIDIwLDEyQTMsMyAwIDAsMCAxNyw5SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9nZ2xlU3dpdGNoT3V0bGluZSA9IFwiTTE3LDEwQTIsMiAwIDAsMSAxOSwxMkEyLDIgMCAwLDEgMTcsMTRBMiwyIDAgMCwxIDE1LDEyQTIsMiAwIDAsMSAxNywxME0xNyw3QTUsNSAwIDAsMSAyMiwxMkE1LDUgMCAwLDEgMTcsMTdIN0E1LDUgMCAwLDEgMiwxMkE1LDUgMCAwLDEgNyw3SDE3TTcsOUEzLDMgMCAwLDAgNCwxMkEzLDMgMCAwLDAgNywxNUgxN0EzLDMgMCAwLDAgMjAsMTJBMywzIDAgMCwwIDE3LDlIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUb2lsZXQgPSBcIk05LDIySDE3VjE5LjVDMTkuNDEsMTcuODcgMjEsMTUuMTIgMjEsMTJWNEEyLDIgMCAwLDAgMTksMkgxNUMxMy44OSwyIDEzLDIuOSAxMyw0VjEySDNDMywxNS4wOSA1LDE4IDksMTkuNVYyMk01LjI5LDE0SDE4LjcxQzE4LjE0LDE1LjkxIDE2Ljc3LDE3LjUgMTUsMTguMzNWMjBIMTFWMTguMzNDOSwxOCA1Ljg2LDE1LjkxIDUuMjksMTRNMTUsNEgxOVYxMkgxNVY0TTE2LDVWOEgxOFY1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2xib3ggPSBcIk05LDVWNkgxNVY1SDlNMjIsMThDMjIsMTguNTMgMjEuNzksMTkgMjEuNCwxOS40MUMyMSwxOS44MSAyMC41NSwyMCAyMCwyMEg0QzMuNDUsMjAgMywxOS44MSAyLjYsMTkuNDFDMi4yMSwxOSAyLDE4LjUzIDIsMThWMTRIN1YxNUg5VjE0SDE1VjE1SDE3VjE0SDIyVjE4TTQuNSw3LjIyQzQuODQsNi40MSA1LjQ1LDYgNi4zMyw2SDdWNUM3LDQuNDUgNy4xOCw0IDcuNTcsMy41OUM3Ljk2LDMuMiA4LjQ0LDMgOSwzSDE1QzE1LjU2LDMgMTYuMDQsMy4yIDE2LjQzLDMuNTlDMTYuODIsNCAxNyw0LjQ1IDE3LDVWNkgxNy42N0MxOC41NSw2IDE5LjE2LDYuNDEgMTkuNSw3LjIyTDIxLjU4LDEySDE3VjExSDE1VjEySDlWMTFIN1YxMkgyLjQyTDQuNSw3LjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2xib3hPdXRsaW5lID0gXCJNMjAsMThWMTRIMTdWMTVIMTVWMTRIOVYxNUg3VjE0SDRWMThIMjBNNi4zMyw4TDQuNTksMTJIN1YxMUg5VjEySDE1VjExSDE3VjEySDE5LjQxTDE3LjY3LDhINi4zM005LDVWNkgxNVY1SDlNMjEuODQsMTIuNjFDMjEuOTQsMTIuODMgMjIsMTMuMDkgMjIsMTMuNDFWMThDMjIsMTguNTMgMjEuNzksMTkgMjEuNCwxOS40MUMyMSwxOS44MSAyMC41NSwyMCAyMCwyMEg0QzMuNDUsMjAgMywxOS44MSAyLjYsMTkuNDFDMi4yMSwxOSAyLDE4LjUzIDIsMThWMTMuNDFDMiwxMy4wOSAyLjA2LDEyLjgzIDIuMTYsMTIuNjFMNC41LDcuMjJDNC44NCw2LjQxIDUuNDUsNiA2LjMzLDZIN1Y1QzcsNC40NSA3LjE4LDQgNy41NywzLjU5QzcuOTYsMy4yIDguNDQsMyA5LDNIMTVDMTUuNTYsMyAxNi4wNCwzLjIgMTYuNDMsMy41OUMxNi44Miw0IDE3LDQuNDUgMTcsNVY2SDE3LjY3QzE4LjU1LDYgMTkuMTYsNi40MSAxOS41LDcuMjJMMjEuODQsMTIuNjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHMgPSBcIk0yMS43MSAyMC4yOUwyMC4yOSAyMS43MUExIDEgMCAwIDEgMTguODggMjEuNzFMNyA5Ljg1QTMuODEgMy44MSAwIDAgMSA2IDEwQTQgNCAwIDAgMSAyLjIyIDQuN0w0Ljc2IDcuMjRMNS4yOSA2LjcxTDYuNzEgNS4yOUw3LjI0IDQuNzZMNC43IDIuMjJBNCA0IDAgMCAxIDEwIDZBMy44MSAzLjgxIDAgMCAxIDkuODUgN0wyMS43MSAxOC44OEExIDEgMCAwIDEgMjEuNzEgMjAuMjlNMi4yOSAxOC44OEExIDEgMCAwIDAgMi4yOSAyMC4yOUwzLjcxIDIxLjcxQTEgMSAwIDAgMCA1LjEyIDIxLjcxTDEwLjU5IDE2LjI1TDcuNzYgMTMuNDJNMjAgMkwxNiA0VjZMMTMuODMgOC4xN0wxNS44MyAxMC4xN0wxOCA4SDIwTDIyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcCA9IFwiTTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTZMMTIsMjJMOCwxOEg0QTIsMiAwIDAsMSAyLDE2VjRBMiwyIDAgMCwxIDQsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwQWNjb3VudCA9IFwiTTIwLDJINEEyLDIgMCAwLDAgMiw0VjE2QTIsMiAwIDAsMCA0LDE4SDhMMTIsMjJMMTYsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRBMiwyIDAgMCwwIDIwLDJNMTIsNC4zQzEzLjUsNC4zIDE0LjcsNS41IDE0LjcsN0MxNC43LDguNSAxMy41LDkuNyAxMiw5LjdDMTAuNSw5LjcgOS4zLDguNSA5LjMsN0M5LjMsNS41IDEwLjUsNC4zIDEyLDQuM00xOCwxNUg2VjE0LjFDNiwxMi4xIDEwLDExIDEyLDExQzE0LDExIDE4LDEyLjEgMTgsMTQuMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwQ2hlY2sgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjE2QzIgMTcuMTEgMi45IDE4IDQgMThIOEwxMiAyMkwxNiAxOEgyMEMyMS4xMSAxOCAyMiAxNy4xMSAyMiAxNlY0QzIyIDIuOSAyMS4xMSAyIDIwIDJNMTAuNDYgMTRMNi45NiAxMC41TDguMzcgOS4wOEwxMC40NiAxMS4xN0wxNS42NCA2TDE3LjA1IDcuNDFMMTAuNDYgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcENoZWNrT3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4TDEyIDIyTDE2IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0yMCAxNkgxNS4xN0wxMiAxOS4xN0w4LjgzIDE2SDRWNEgyMFYxNk0xMC43NSAxMy43MUw3LjI1IDEwLjIxTDguNjYgOC43OUwxMC43NSAxMC44OEwxNS4zNCA2LjNMMTYuNzUgNy43MUwxMC43NSAxMy43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwRWRpdCA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4TDEyIDIyTDE2IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk05LjA4IDE1SDdWMTIuOTFMMTMuMTcgNi43MkwxNS4yNCA4LjhMOS4wOCAxNU0xNi44NCA3LjJMMTUuODMgOC4yMUwxMy43NiA2LjE4TDE0Ljc3IDUuMTZDMTQuOTcgNC45NSAxNS4zMSA0Ljk0IDE1LjU1IDUuMTZMMTYuODQgNi40MUMxNy4wNSA2LjYyIDE3LjA2IDYuOTYgMTYuODQgNy4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBFZGl0T3V0bGluZSA9IFwiTTQgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDE2TDEyIDIyTDggMThINEMyLjkgMTggMiAxNy4xMSAyIDE2VjRDMiAyLjkgMi45IDIgNCAyTTQgNFYxNkg4LjgzTDEyIDE5LjE3TDE1LjE3IDE2SDIwVjRINE0xNS44NCA4LjJMMTQuODMgOS4yMUwxMi43NiA3LjE4TDEzLjc3IDYuMTZDMTMuOTcgNS45NSAxNC4zMSA1Ljk0IDE0LjU1IDYuMTZMMTUuODQgNy40MUMxNi4wNSA3LjYyIDE2LjA2IDcuOTYgMTUuODQgOC4yTTggMTEuOTFMMTIuMTcgNy43MkwxNC4yNCA5LjhMMTAuMDggMTRIOFYxMS45MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwSW1hZ2UgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDE2TDEyLDIyTDgsMThINEEyLDIgMCAwLDEgMiwxNlY0QTIsMiAwIDAsMSA0LDJNMTksMTVWN0wxNSwxMUwxMyw5TDcsMTVIMTlNNyw1QTIsMiAwIDAsMCA1LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSw3QTIsMiAwIDAsMCA3LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcEltYWdlT3V0bGluZSA9IFwiTTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTZMMTIsMjJMOCwxOEg0QTIsMiAwIDAsMSAyLDE2VjRBMiwyIDAgMCwxIDQsMk00LDRWMTZIOC44M0wxMiwxOS4xN0wxNS4xNywxNkgyMFY0SDRNNy41LDZBMS41LDEuNSAwIDAsMSA5LDcuNUExLjUsMS41IDAgMCwxIDcuNSw5QTEuNSwxLjUgMCAwLDEgNiw3LjVBMS41LDEuNSAwIDAsMSA3LjUsNk02LDE0TDExLDlMMTMsMTFMMTgsNlYxNEg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBNaW51cyA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4TDEyIDIyTDE2IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0xNiAxMUg4VjlIMTZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcE1pbnVzT3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4TDEyIDIyTDE2IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0yMCAxNkgxNS4xN0wxMiAxOS4xN0w4LjgzIDE2SDRWNEgyMFYxNk0xNiAxMUg4VjlIMTZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcE91dGxpbmUgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDE2TDEyLDIyTDgsMThINEEyLDIgMCAwLDEgMiwxNlY0QTIsMiAwIDAsMSA0LDJNNCw0VjE2SDguODNMMTIsMTkuMTdMMTUuMTcsMTZIMjBWNEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBQbHVzID0gXCJNNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEgxNkwxMiwyMkw4LDE4SDRBMiwyIDAgMCwxIDIsMTZWNEEyLDIgMCAwLDEgNCwyTTExLDZWOUg4VjExSDExVjE0SDEzVjExSDE2VjlIMTNWNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwUGx1c091dGxpbmUgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDE2TDEyLDIyTDgsMThINEEyLDIgMCAwLDEgMiwxNlY0QTIsMiAwIDAsMSA0LDJNNCw0VjE2SDguODNMMTIsMTkuMTdMMTUuMTcsMTZIMjBWNEg0TTExLDZIMTNWOUgxNlYxMUgxM1YxNEgxMVYxMUg4VjlIMTFWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwUmVtb3ZlID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjExIDIuOSAxOCA0IDE4SDhMMTIgMjJMMTYgMThIMjBDMjEuMTEgMTggMjIgMTcuMTEgMjIgMTZWNEMyMiAyLjkgMjEuMTEgMiAyMCAyTTE1LjU0IDEyLjEyTDE0LjEyIDEzLjU0TDEyIDExLjQxTDkuODggMTMuNTRMOC40NyAxMi4xMkwxMC41OSAxMEw4LjQ2IDcuODhMOS44OCA2LjQ3TDEyIDguNTlMMTQuMTIgNi40N0wxNS41NCA3Ljg4TDEzLjQxIDEwTDE1LjU0IDEyLjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBSZW1vdmVPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjExIDIuOSAxOCA0IDE4SDhMMTIgMjJMMTYgMThIMjBDMjEuMTEgMTggMjIgMTcuMTEgMjIgMTZWNEMyMiAyLjkgMjEuMTEgMiAyMCAyTTIwIDE2SDE1LjE3TDEyIDE5LjE3TDguODMgMTZINFY0SDIwVjE2TTguNDYgMTIuMTJMMTAuNTkgMTBMOC40NiA3Ljg4TDkuODggNi40N0wxMiA4LjU5TDE0LjEyIDYuNDdMMTUuNTQgNy44OEwxMy40MSAxMEwxNS41NCAxMi4xMkwxNC4xMiAxMy41NEwxMiAxMS40MUw5Ljg4IDEzLjU0TDguNDYgMTIuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcFRleHQgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDE2TDEyLDIyTDgsMThINEEyLDIgMCAwLDEgMiwxNlY0QTIsMiAwIDAsMSA0LDJNNSw1VjdIMTlWNUg1TTUsOVYxMUgxNVY5SDVNNSwxM1YxNUgxN1YxM0g1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBUZXh0T3V0bGluZSA9IFwiTTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTZMMTIsMjJMOCwxOEg0QTIsMiAwIDAsMSAyLDE2VjRBMiwyIDAgMCwxIDQsMk00LDRWMTZIOC44M0wxMiwxOS4xN0wxNS4xNywxNkgyMFY0SDRNNiw3SDE4VjlINlY3TTYsMTFIMTZWMTNINlYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb290aCA9IFwiTTcsMkM0LDIgMiw1IDIsOEMyLDEwLjExIDMsMTMgNCwxNEM1LDE1IDYsMjIgOCwyMkMxMi41NCwyMiAxMCwxNSAxMiwxNUMxNCwxNSAxMS40NiwyMiAxNiwyMkMxOCwyMiAxOSwxNSAyMCwxNEMyMSwxMyAyMiwxMC4xMSAyMiw4QzIyLDUgMjAsMiAxNywyQzE0LDIgMTQsMyAxMiwzQzEwLDMgMTAsMiA3LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vdGhPdXRsaW5lID0gXCJNNywyQzQsMiAyLDUgMiw4QzIsMTAuMTEgMywxMyA0LDE0QzUsMTUgNiwyMiA4LDIyQzEyLjU0LDIyIDEwLDE1IDEyLDE1QzE0LDE1IDExLjQ2LDIyIDE2LDIyQzE4LDIyIDE5LDE1IDIwLDE0QzIxLDEzIDIyLDEwLjExIDIyLDhDMjIsNSAyMCwyIDE3LDJDMTQsMiAxNCwzIDEyLDNDMTAsMyAxMCwyIDcsMk03LDRDOSw0IDEwLDUgMTIsNUMxNCw1IDE1LDQgMTcsNEMxOC42Nyw0IDIwLDYgMjAsOEMyMCw5Ljc1IDE5LjE0LDEyLjExIDE4LjE5LDEzLjA2QzE3LjMzLDEzLjkyIDE2LjA2LDE5Ljk0IDE1LjUsMTkuOTRDMTUuMjksMTkuOTQgMTUsMTguODggMTUsMTcuNTlDMTUsMTUuNTUgMTQuNDMsMTMgMTIsMTNDOS41NywxMyA5LDE1LjU1IDksMTcuNTlDOSwxOC44OCA4LjcxLDE5Ljk0IDguNSwxOS45NEM3Ljk0LDE5Ljk0IDYuNjcsMTMuOTIgNS44MSwxMy4wNkM0Ljg2LDEyLjExIDQsOS43NSA0LDhDNCw2IDUuMzMsNCA3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vdGhicnVzaCA9IFwiTTEyLjkxIDYuNDNMMTUuMDMgOC41NUwxNi4wOSA3LjVMMTUuMDMgNi40M0wxNy44NiAzLjZMMTguOTIgNC42NkwyMCAzLjZMMTcuODYgMS41TTMgMjAuNTdMNC40MyAyMkwxNC41IDExLjlMMTYuNjMgMTEuMTlMMjEuNCA2LjQzQzIyLjE4IDUuNjUgMjIuMTggNC4zOCAyMS40IDMuNkwxNS41NSA5LjQ0TDEzLjQzIDEwLjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb3RoYnJ1c2hFbGVjdHJpYyA9IFwiTTEyIDEuNVYxNEMxMC4zNCAxNCA5IDE1LjM0IDkgMTdWMjJIMTdWMTdDMTcgMTUuMzQgMTUuNjYgMTQgMTQgMTRWMy41QzE0IDIuNCAxMy4xMSAxLjUgMTIgMS41TTcuNSAyVjlIMTFWNy41SDlWMy41SDExVjJINy41TTEzIDE3LjVDMTMuODMgMTcuNSAxNC41IDE4LjE3IDE0LjUgMTlDMTQuNSAxOS44MyAxMy44MyAyMC41IDEzIDIwLjVDMTIuMTcgMjAuNSAxMS41IDE5LjgzIDExLjUgMTlDMTEuNSAxOC4xNyAxMi4xNyAxNy41IDEzIDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vdGhicnVzaFBhc3RlID0gXCJNMTcuODYgMS41TDEyLjkxIDYuNDNMMTUuMDMgOC41NUwxNi4wOSA3LjVMMTUuMDMgNi40M0wxNy44NiAzLjZMMTguOTIgNC42NkwyMCAzLjZNMjEuNCAzLjZMMTUuNTYgOS40NEwxMy40MyAxMC4xNUwzIDIwLjU3TDQuNDMgMjJMMTAuMDggMTYuMzNMMTQuMzMgMjAuNTdMMTguNTcgMTYuMzNMMTQuMzMgMTIuMDlMMTQuNSAxMS45TDE2LjYzIDExLjE5TDIxLjQgNi40M0MyMi4xOCA1LjY1IDIyLjE4IDQuMzggMjEuNCAzLjZNNi41NSA0LjMxTDIuMzEgOC41NUw3LjI2IDEzLjVMMTEuNSA5LjI2TTE4LjIyIDE4LjFMMTYuMDkgMjAuMjJMMTcuNSAyMS42M0wxOS42MyAxOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvcmNoID0gXCJNOC42IDkuNkM5IDEwLjIgOS41IDEwLjcgMTAuMiAxMUgxNC4yQzE0LjUgMTAuOSAxNC43IDEwLjcgMTQuOSAxMC41QzE1LjkgOS41IDE2LjMgOCAxNS44IDYuN0wxNS43IDYuNUMxNS42IDYuMiAxNS40IDYgMTUuMiA1LjhDMTUuMSA1LjYgMTQuOSA1LjUgMTQuOCA1LjNDMTQuNCA1IDE0IDQuNyAxMy42IDQuM0MxMi43IDMuNCAxMi42IDIgMTMuMSAxQzEyLjYgMS4xIDEyLjEgMS40IDExLjcgMS44QzEwLjIgMyA5LjYgNS4xIDEwLjMgN1Y3LjJDMTAuMyA3LjMgMTAuMiA3LjQgMTAuMSA3LjVDMTAgNy42IDkuOCA3LjUgOS43IDcuNEw5LjYgNy4zQzkgNi41IDguOSA1LjMgOS4zIDQuM0M4LjQgNS4xIDcuOSA2LjQgOCA3LjdDOCA4IDguMSA4LjMgOC4yIDguNkM4LjIgOC45IDguNCA5LjMgOC42IDkuNk0xMi4zIDguMUMxMi40IDcuNiAxMi4yIDcuMiAxMi4xIDYuOEMxMiA2LjQgMTIgNiAxMi4yIDUuNkwxMi41IDYuMkMxMi45IDYuOCAxMy42IDcgMTMuOCA3LjhWOC4xQzEzLjggOC42IDEzLjYgOS4xIDEzLjMgOS40QzEzLjEgOS41IDEyLjkgOS43IDEyLjcgOS43QzEyLjEgOS45IDExLjQgOS42IDExIDkuMkMxMS44IDkuMiAxMi4yIDguNiAxMi4zIDguMU0xNSAxMlYxNEgxNEwxMyAyMkgxMUwxMCAxNEg5VjEySDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvcnRvaXNlID0gXCJNMTkuMzEsNS42QzE4LjA5LDUuNTYgMTYuODgsNi41IDE2LjUsOEMxNiwxMCAxNiwxMCAxNSwxMUMxMywxMyAxMCwxNCA0LDE1QzMsMTUuMTYgMi41LDE1LjUgMiwxNkM0LDE2IDYsMTYgNC41LDE3LjVMMywxOUg2TDgsMTdDMTAsMTggMTEuMzMsMTggMTMuMzMsMTdMMTQsMTlIMTdMMTYsMTZDMTYsMTYgMTcsMTIgMTgsMTFDMTksMTAgMTksMTEgMjAsMTFDMjEsMTEgMjIsMTAgMjIsOC41QzIyLDggMjIsNyAyMC41LDZDMjAuMTUsNS43NiAxOS43NCw1LjYyIDE5LjMxLDUuNk05LDZBNiw2IDAgMCwwIDMsMTJDMywxMi42IDMuMTMsMTMuMDggMy4yMywxMy42QzkuMTUsMTIuNjIgMTIuMjksMTEuNTkgMTMuOTMsOS45NEwxNC40Myw5LjQ0QzEzLjQ0LDcuMzQgMTEuMzIsNiA5LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9zbGluayA9IFwiTTIwIDEwVjdMMTcgNEg3TDQgN1YxMEMyLjkgMTAgMiAxMC45IDIgMTJTMi45IDE0IDQgMTRWMThDNCAxOS4xIDQuOSAyMCA2IDIwSDE4QzE5LjEgMjAgMjAgMTkuMSAyMCAxOFYxNEMyMS4xMSAxNCAyMiAxMy4xMSAyMiAxMlMyMS4xMSAxMCAyMCAxME0xMiAxNkM5Ljc5IDE2IDggMTQuMjEgOCAxMlM5Ljc5IDggMTIgOCAxNiA5Ljc5IDE2IDEyIDE0LjIxIDE2IDEyIDE2TTE0IDEyQzE0IDEzLjExIDEzLjExIDE0IDEyIDE0UzEwIDEzLjExIDEwIDEyIDEwLjkgMTAgMTIgMTAgMTQgMTAuOSAxNCAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3VybmFtZW50ID0gXCJNMiwyVjRIN1Y4SDJWMTBIN0M4LjExLDEwIDksOS4xMSA5LDhWN0gxNFYxN0g5VjE2QzksMTQuODkgOC4xMSwxNCA3LDE0SDJWMTZIN1YyMEgyVjIySDdDOC4xMSwyMiA5LDIxLjExIDksMjBWMTlIMTRDMTUuMTEsMTkgMTYsMTguMTEgMTYsMTdWMTNIMjJWMTFIMTZWN0MxNiw1Ljg5IDE1LjExLDUgMTQsNUg5VjRDOSwyLjg5IDguMTEsMiA3LDJIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3dUcnVjayA9IFwiTTE1LDEwSDIwLjM5TDE3LjA2LDZIMTVWMTBNMTcuNSwxOC41QzE3Ljg5LDE4LjUgMTguMjQsMTguMzcgMTguNTQsMTguMDdDMTguODQsMTcuNzcgMTksMTcuNDIgMTksMTdDMTksMTYuNjEgMTguODQsMTYuMjYgMTguNTQsMTUuOTZDMTguMjQsMTUuNjYgMTcuODksMTUuNSAxNy41LDE1LjVDMTcuMDgsMTUuNSAxNi43MywxNS42NiAxNi40MywxNS45NkMxNi4xMywxNi4yNiAxNiwxNi42MSAxNiwxN0MxNiwxNy40MiAxNi4xMywxNy43NyAxNi40MywxOC4wN0MxNi43MywxOC4zNyAxNy4wOCwxOC41IDE3LjUsMTguNU02LDE4LjVDNi40NCwxOC41IDYuOCwxOC4zNyA3LjA4LDE4LjA3QzcuMzYsMTcuNzcgNy41LDE3LjQyIDcuNSwxN0M3LjUsMTYuNjEgNy4zNiwxNi4yNiA3LjA4LDE1Ljk2QzYuOCwxNS42NiA2LjQ0LDE1LjUgNiwxNS41QzUuNTYsMTUuNSA1LjIsMTUuNjYgNC45MiwxNS45NkM0LjY0LDE2LjI2IDQuNSwxNi42MSA0LjUsMTdDNC41LDE3LjQyIDQuNjQsMTcuNzcgNC45MiwxOC4wN0M1LjIsMTguMzcgNS41NiwxOC41IDYsMTguNU0xOCw0TDIzLDEwVjE3SDIwLjVDMjAuNSwxNy44MyAyMC4xOSwxOC41MyAxOS41OSwxOS4xM0MxOSwxOS43MiAxOC4zLDIwIDE3LjUsMjBDMTYuNjcsMjAgMTUuOTcsMTkuNzIgMTUuMzgsMTkuMTNDMTQuNzgsMTguNTMgMTQuNSwxNy44MyAxNC41LDE3SDlDOSwxNy44MyA4LjcsMTguNTMgOC4xMSwxOS4xM0M3LjUsMTkuNzIgNi44MSwyMCA2LDIwQzUuMTksMjAgNC41LDE5LjcyIDMuODksMTkuMTNDMy4zLDE4LjUzIDMsMTcuODMgMywxN0gxVjEzSDkuMTlMMyw4LjExVjExSDFWNUgyTDEzLDExLjA2VjRIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG93ZXJCZWFjaCA9IFwiTTE3LDRWOEgxOFYxMEgxNy42NEwyMSwyM0gxOC45M0wxOC4zNywyMC44M0wxMiwxNy4xNUw1LjYzLDIwLjgzTDUuMDcsMjNIM0w2LjM2LDEwSDZWOEg3VjRINlYzTDE4LDFWNEgxN003LjI4LDE0LjQzTDYuMzMsMTguMTJMMTAsMTZMNy4yOCwxNC40M00xNS41NywxMEg4LjQzTDcuOCwxMi40MkwxMiwxNC44NUwxNi4yLDEyLjQyTDE1LjU3LDEwTTE3LjY3LDE4LjEyTDE2LjcyLDE0LjQzTDE0LDE2TDE3LjY3LDE4LjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvd2VyRmlyZSA9IFwiTTE3LDRWOEgxOFYxMEgxNy42NEwyMSwyM0gxOC45M0wxOC4zNywyMC44M0wxMiwxNy4xNUw1LjYzLDIwLjgzTDUuMDcsMjNIM0w2LjM2LDEwSDZWOEg3VjRINlYzTDEyLDFMMTgsM1Y0SDE3TTcuMjgsMTQuNDNMNi4zMywxOC4xMkwxMCwxNkw3LjI4LDE0LjQzTTE1LjU3LDEwSDguNDNMNy44LDEyLjQyTDEyLDE0Ljg1TDE2LjIsMTIuNDJMMTUuNTcsMTBNMTcuNjcsMTguMTJMMTYuNzIsMTQuNDNMMTQsMTZMMTcuNjcsMTguMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2sgPSBcIk0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgyMVY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRveUJyaWNrTWFya2VyID0gXCJNMTkgNlY1QTIgMiAwIDAgMCAxNyAzSDE1QTIgMiAwIDAgMCAxMyA1VjZIMTFWNUEyIDIgMCAwIDAgOSAzSDdBMiAyIDAgMCAwIDUgNVY2SDNWMjBIMTQuNTRBOS41NSA5LjU1IDAgMCAxIDEzIDE1LjVBNS41OCA1LjU4IDAgMCAxIDE4LjUgMTBBNS4zIDUuMyAwIDAgMSAyMSAxMC42M1Y2TTE4LjUgMTJBMy41NCAzLjU0IDAgMCAwIDE1IDE1LjVDMTUgMTguMSAxOC41IDIyIDE4LjUgMjJTMjIgMTguMSAyMiAxNS41QTMuNTQgMy41NCAwIDAgMCAxOC41IDEyTTE4LjUgMTYuOEExLjIgMS4yIDAgMSAxIDE4LjUgMTQuNEExLjI5IDEuMjkgMCAwIDEgMTkuNyAxNS42QTEuMTUgMS4xNSAwIDAgMSAxOC41IDE2LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tNYXJrZXJPdXRsaW5lID0gXCJNMTguNSAxMkEzLjU0IDMuNTQgMCAwIDAgMTUgMTUuNUMxNSAxOC4xIDE4LjUgMjIgMTguNSAyMlMyMiAxOC4xIDIyIDE1LjVBMy41NCAzLjU0IDAgMCAwIDE4LjUgMTJNMTguNSAxNi44QTEuMiAxLjIgMCAxIDEgMTguNSAxNC40QTEuMjkgMS4yOSAwIDAgMSAxOS43IDE1LjZBMS4xNSAxLjE1IDAgMCAxIDE4LjUgMTYuOE0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgxNC41NEExNS41NSAxNS41NSAwIDAgMSAxMy41NCAxOEg1VjhIMTlWMTBBNS4xMSA1LjExIDAgMCAxIDIxIDEwLjZWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3lCcmlja01pbnVzID0gXCJNMjMgMjBIMTVWMThIMjNWMjBNMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNDMTkuNyAxMyAyMC4zNyAxMy4xMyAyMSAxMy4zNVY2SDE5VjVDMTkgMy45IDE4LjExIDMgMTcgM0gxNUMxMy45IDMgMTMgMy45IDEzIDVWNkgxMVY1QzExIDMuOSAxMC4xMSAzIDkgM0g3QzUuOSAzIDUgMy45IDUgNVY2SDNWMjBIMTMuMDlDMTMuMDQgMTkuNjcgMTMgMTkuMzQgMTMgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tNaW51c091dGxpbmUgPSBcIk0xMy4wOSAyMEgzVjZINVY1QzUgMy45IDUuOSAzIDcgM0g5QzEwLjExIDMgMTEgMy45IDExIDVWNkgxM1Y1QzEzIDMuOSAxMy45IDMgMTUgM0gxN0MxOC4xMSAzIDE5IDMuOSAxOSA1VjZIMjFWMTMuMzVDMjAuMzcgMTMuMTMgMTkuNyAxMyAxOSAxM1Y4SDVWMThIMTMuMDlDMTMuMDQgMTguMzMgMTMgMTguNjYgMTMgMTlTMTMuMDQgMTkuNjcgMTMuMDkgMjBNMjMgMThIMTVWMjBIMjNWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tPdXRsaW5lID0gXCJNMTkgNlY1QTIgMiAwIDAgMCAxNyAzSDE1QTIgMiAwIDAgMCAxMyA1VjZIMTFWNUEyIDIgMCAwIDAgOSAzSDdBMiAyIDAgMCAwIDUgNVY2SDNWMjBIMjFWNk0xOSAxOEg1VjhIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tQbHVzID0gXCJNMTkgNlY1QTIgMiAwIDAgMCAxNyAzSDE1QTIgMiAwIDAgMCAxMyA1VjZIMTFWNUEyIDIgMCAwIDAgOSAzSDdBMiAyIDAgMCAwIDUgNVY2SDNWMjBIMTMuMDlBNS40NyA1LjQ3IDAgMCAxIDEzIDE5QTYgNiAwIDAgMSAyMSAxMy4zNFY2TTIwIDE1VjE4SDIzVjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRveUJyaWNrUGx1c091dGxpbmUgPSBcIk0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgxNFYxOEg1VjhIMTlWMTNIMjFWNk0yMSAxNVYxOEgyNFYyMEgyMVYyM0gxOVYyMEgxNlYxOEgxOVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3lCcmlja1JlbW92ZSA9IFwiTTE5IDZWNUEyIDIgMCAwIDAgMTcgM0gxNUEyIDIgMCAwIDAgMTMgNVY2SDExVjVBMiAyIDAgMCAwIDkgM0g3QTIgMiAwIDAgMCA1IDVWNkgzVjIwSDEzLjA5QTUuNDcgNS40NyAwIDAgMSAxMyAxOUE2IDYgMCAwIDEgMjEgMTMuMzRWNk0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NiAyMS4xMkwxNy41OSAxOUwxNS40NiAxNi44OEwxNi44OCAxNS40NkwxOSAxNy41OUwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3lCcmlja1JlbW92ZU91dGxpbmUgPSBcIk0xOSA2VjVDMTkgMy45IDE4LjEgMyAxNyAzSDE1QzEzLjkgMyAxMyAzLjkgMTMgNVY2SDExVjVDMTEgMy45IDEwLjEgMyA5IDNIN0M1LjkgMyA1IDMuOSA1IDVWNkgzVjIwSDE0VjE4SDVWOEgxOVYxM0gyMVY2TTE3Ljg4IDE1LjQ2TDIwIDE3LjU5TDIyLjEyIDE1LjQ3TDIzLjU0IDE2Ljg4TDIxLjQxIDE5TDIzLjU0IDIxLjEyTDIyLjEyIDIyLjU0TDIwIDIwLjQxTDE3Ljg4IDIyLjU0TDE2LjQ2IDIxLjEyTDE4LjU5IDE5TDE2LjQ3IDE2Ljg4XCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tTZWFyY2ggPSBcIk0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgxMS44MUE2LjUgNi41IDAgMCAxIDIxIDEwLjgxVjZNMjAuMzEgMTcuOUE0LjUgNC41IDAgMSAwIDE4Ljg4IDE5LjMyTDIyIDIyLjM5TDIzLjM5IDIxTTE2LjUgMThBMi41IDIuNSAwIDEgMSAxOSAxNS41QTIuNSAyLjUgMCAwIDEgMTYuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3lCcmlja1NlYXJjaE91dGxpbmUgPSBcIk0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgxMS44MUE2LjU5IDYuNTkgMCAwIDEgMTAuNSAxOEg1VjhIMTlWOS41QTYuNTkgNi41OSAwIDAgMSAyMSAxMC44MVY2TTIwLjMxIDE3LjlBNC41IDQuNSAwIDEgMCAxOC44OCAxOS4zMkwyMiAyMi4zOUwyMy4zOSAyMU0xNi41IDE4QTIuNSAyLjUgMCAxIDEgMTkgMTUuNUEyLjUgMi41IDAgMCAxIDE2LjUgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhY2tMaWdodCA9IFwiTTYsMVYzSDlWNi40TDQuMTEsNC4zOEwxLjQzLDEwLjg0TDYuOTcsMTMuMTRMMTEuOTQsMTYuODJMMTMuNzksMTcuNTlMMTcuNjIsOC4zNUwxNS43Nyw3LjU4TDExLDYuODdWM0gxNFYxSDZNMjEuODEsNi4yOUwxOS41LDcuMjVMMjAuMjYsOS4xTDIyLjU3LDguMTRMMjEuODEsNi4yOU0xOS43OCwxMy41N0wxOSwxNS40MkwyMS43OSwxNi41N0wyMi41NSwxNC43MkwxOS43OCwxMy41N00xNi4xOSwxOC45M0wxNC4zNCwxOS42OUwxNS4zLDIyTDE3LjE1LDIxLjIzTDE2LjE5LDE4LjkzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYWNrcGFkID0gXCJNNCwzSDIwQTIsMiAwIDAsMSAyMiw1VjE5QTIsMiAwIDAsMSAyMCwyMUg0QTIsMiAwIDAsMSAyLDE5VjVBMiwyIDAgMCwxIDQsM000LDVWMTNIMjBWNUg0TTQsMTlIMTFWMTVINFYxOU0yMCwxOVYxNUgxM1YxOUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFja3BhZExvY2sgPSBcIk0zLDFDMS44OSwxIDEsMS44OSAxLDNWMTdDMSwxOC4xMSAxLjg5LDE5IDMsMTlIMTRWMTdIMTJWMTNIMTYuNjhDMTcuNSwxMi4zNSAxOC40NywxMiAxOS41LDEyQzIwLDEyIDIwLjUsMTIuMDkgMjEsMTIuMjZWM0MyMSwxLjg5IDIwLjExLDEgMTksMUgzTTMsM0gxOVYxMUgzVjNNMywxM0gxMFYxN0gzVjEzTTE5LjUsMTRBMi41LDIuNSAwIDAsMCAxNywxNi41VjE3QTEsMSAwIDAsMCAxNiwxOFYyMkExLDEgMCAwLDAgMTcsMjNIMjJBMSwxIDAgMCwwIDIzLDIyVjE4QTEsMSAwIDAsMCAyMiwxN1YxNi41QTIuNSwyLjUgMCAwLDAgMTkuNSwxNE0xOS41LDE1QTEuNSwxLjUgMCAwLDEgMjEsMTYuNVYxN0gxOFYxNi41QTEuNSwxLjUgMCAwLDEgMTkuNSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFjdG9yID0gXCJNNSw0VjExLjI2QzMuMiwxMS45IDIsMTMuNiAyLDE1LjVDMiwxOCA0LDIwIDYuNSwyMEM4Ljc5LDIwIDEwLjcxLDE4LjI4IDEwLjk3LDE2SDE1LjE3QzE1LjA2LDE2LjMyIDE1LDE2LjY2IDE1LDE3QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdDMjEsMTYuNjYgMjAuOTQsMTYuMzIgMjAuODIsMTZIMjJWMTNDMjIsMTEuODkgMjEuMTEsMTEgMjAsMTFIMTUuMDRMMTMuNjUsNEg1TTcsNkgxMkwxMywxMVYxNEgxMC43NEMxMC4xNiwxMi4zOCA4LjcxLDExLjIzIDcsMTEuMDNWNk02LjUsMTMuMjVBMi4yNSwyLjI1IDAgMCwxIDguNzUsMTUuNUEyLjI1LDIuMjUgMCAwLDEgNi41LDE3Ljc1QTIuMjUsMi4yNSAwIDAsMSA0LjI1LDE1LjVBMi4yNSwyLjI1IDAgMCwxIDYuNSwxMy4yNU0xOCwxNS41QTEuNSwxLjUgMCAwLDEgMTkuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE4LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFjdG9yVmFyaWFudCA9IFwiTTEzLjMgMi43OUw5LjggNi4yOUwxMC41IDdMMTEuOSA1LjYxTDEzIDYuNzFWOUMxMyAxMC4xMSAxMi4xMSAxMSAxMSAxMUgxMC40NkE2IDYgMCAwIDEgMTIgMTVBNiA2IDAgMCAxIDExLjkxIDE2SDE1LjAzQTQuNSA0LjUgMCAwIDEgMTkuNSAxMkE0LjUgNC41IDAgMCAxIDIyIDEyLjc2VjhDMjIgNi44OSAyMS4xMSA2IDIwIDZIMTMuNzFMMTIuNjEgNC45TDE0IDMuNUwxMy4zIDIuNzlNNCA3QzMuNDUgNyAzIDcuNDUgMyA4QzMgOC41NSAzLjQ1IDkgNCA5SDlDOSA3LjkgOC4xMSA3IDcgN0g0TTYgMTBBNSA1IDAgMCAwIDQuNDQgMTAuMjVMNC44IDExLjE4TDQuMzMgMTEuMzZMNCAxMC40M0E1IDUgMCAwIDAgMS41NCAxMi43NEwyLjQ1IDEzLjE1TDIuMjQgMTMuNkwxLjM0IDEzLjJBNSA1IDAgMCAwIDEgMTVBNSA1IDAgMCAwIDEuMjUgMTYuNTZMMi4xOCAxNi4yTDIuMzYgMTYuNjdMMS40MyAxN0E1IDUgMCAwIDAgMy43NCAxOS40Nkw0LjE0IDE4LjU1TDQuNiAxOC43Nkw0LjIgMTkuNjZBNSA1IDAgMCAwIDYgMjBBNSA1IDAgMCAwIDcuNTYgMTkuNzVMNy4yIDE4LjgyTDcuNjcgMTguNjRMOCAxOS41N0E1IDUgMCAwIDAgMTAuNDYgMTcuMjZMOS41NSAxNi44Nkw5Ljc2IDE2LjRMMTAuNjYgMTYuOEE1IDUgMCAwIDAgMTEgMTVBNSA1IDAgMCAwIDEwLjc1IDEzLjQ0TDkuODIgMTMuOEw5LjY0IDEzLjMzTDEwLjU3IDEzQTUgNSAwIDAgMCA4LjI2IDEwLjU0TDcuODYgMTEuNDVMNy40IDExLjI0TDcuOCAxMC4zNEE1IDUgMCAwIDAgNiAxME02IDEyQTMgMyAwIDAgMSA5IDE1QTMgMyAwIDAgMSA2IDE4QTMgMyAwIDAgMSAzIDE1QTMgMyAwIDAgMSA2IDEyTTE5LjUgMTNBMy41IDMuNSAwIDAgMCAxNiAxNi41QTMuNSAzLjUgMCAwIDAgMTkuNSAyMEEzLjUgMy41IDAgMCAwIDIzIDE2LjVBMy41IDMuNSAwIDAgMCAxOS41IDEzTTE5LjUgMTVBMS41IDEuNSAwIDAgMSAyMSAxNi41QTEuNSAxLjUgMCAwIDEgMTkuNSAxOEExLjUgMS41IDAgMCAxIDE4IDE2LjVBMS41IDEuNSAwIDAgMSAxOS41IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYWRlbWFyayA9IFwiTTkuOCw4LjQ0SDYuODdWMTZINC44OVY4LjQ0SDJWN0g5LjhWOC40NE0xMy41LDdMMTUuOTYsMTMuNUwxOC40MSw3SDIxVjE2SDE5VjEzLjVMMTkuMjIsOS4yNEwxNi42MywxNkgxNS4yOEwxMi43LDkuMjVMMTIuOSwxMy41VjE2SDEwLjkzVjdIMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFmZmljQ29uZSA9IFwiTTE3IDE1TDE4IDE5SDIxVjIySDNWMTlINkw3IDE1SDE3TTE1IDhMMTYgMTJIOEw5IDhIMTVNMTMgMUwxNCA1SDEwTDExIDFIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhZmZpY0xpZ2h0ID0gXCJNMTIsOUEyLDIgMCAwLDEgMTAsN0MxMCw1Ljg5IDEwLjksNSAxMiw1QzEzLjExLDUgMTQsNS44OSAxNCw3QTIsMiAwIDAsMSAxMiw5TTEyLDE0QTIsMiAwIDAsMSAxMCwxMkMxMCwxMC44OSAxMC45LDEwIDEyLDEwQzEzLjExLDEwIDE0LDEwLjg5IDE0LDEyQTIsMiAwIDAsMSAxMiwxNE0xMiwxOUEyLDIgMCAwLDEgMTAsMTdDMTAsMTUuODkgMTAuOSwxNSAxMiwxNUMxMy4xMSwxNSAxNCwxNS44OSAxNCwxN0EyLDIgMCAwLDEgMTIsMTlNMjAsMTBIMTdWOC44NkMxOC43Miw4LjQxIDIwLDYuODYgMjAsNUgxN1Y0QTEsMSAwIDAsMCAxNiwzSDhBMSwxIDAgMCwwIDcsNFY1SDRDNCw2Ljg2IDUuMjgsOC40MSA3LDguODZWMTBINEM0LDExLjg2IDUuMjgsMTMuNDEgNywxMy44NlYxNUg0QzQsMTYuODYgNS4yOCwxOC40MSA3LDE4Ljg2VjIwQTEsMSAwIDAsMCA4LDIxSDE2QTEsMSAwIDAsMCAxNywyMFYxOC44NkMxOC43MiwxOC40MSAyMCwxNi44NiAyMCwxNUgxN1YxMy44NkMxOC43MiwxMy40MSAyMCwxMS44NiAyMCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFpbiA9IFwiTTEyLDJDOCwyIDQsMi41IDQsNlYxNS41QTMuNSwzLjUgMCAwLDAgNy41LDE5TDYsMjAuNVYyMUg4LjIzTDEwLjIzLDE5SDE0TDE2LDIxSDE4VjIwLjVMMTYuNSwxOUEzLjUsMy41IDAgMCwwIDIwLDE1LjVWNkMyMCwyLjUgMTYuNDIsMiAxMiwyTTcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxNEExLjUsMS41IDAgMCwxIDksMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN00xMSwxMEg2VjZIMTFWMTBNMTMsMTBWNkgxOFYxMEgxM00xNi41LDE3QTEuNSwxLjUgMCAwLDEgMTUsMTUuNUExLjUsMS41IDAgMCwxIDE2LjUsMTRBMS41LDEuNSAwIDAsMSAxOCwxNS41QTEuNSwxLjUgMCAwLDEgMTYuNSwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFpbkNhciA9IFwiTTEyLDRINUEzLDMgMCAwLDAgMiw3VjE1QTMsMyAwIDAsMCA1LDE4TDQsMTlWMjBINUw3LDE3Ljk3TDksMThWMTNINFY2SDEzVjhIMTVWN0EzLDMgMCAwLDAgMTIsNE01LDE0QTEsMSAwIDAsMSA2LDE1QTEsMSAwIDAsMSA1LDE2QTEsMSAwIDAsMSA0LDE1QTEsMSAwIDAsMSA1LDE0TTIwLjU3LDkuNjZDMjAuNDMsOS4yNiAyMC4wNSw5IDE5LjYsOUgxMi40MUMxMS45NSw5IDExLjU4LDkuMjYgMTEuNDMsOS42NkwxMCwxMy43N1YxOS4yOEMxMCwxOS42NiAxMC4zMiwyMCAxMC43LDIwSDExLjMyQzExLjcsMjAgMTIsMTkuNjIgMTIsMTkuMjRWMThIMjBWMTkuMjRDMjAsMTkuNjIgMjAuMzEsMjAgMjAuNjksMjBIMjEuM0MyMS42OCwyMCAyMiwxOS42NiAyMiwxOS4yOFYxNy45MUwyMiwxMy43N0wyMC41Nyw5LjY2TTEyLjQxLDEwSDE5LjZMMjAuNjMsMTNIMTEuMzhMMTIuNDEsMTBNMTIsMTZBMSwxIDAgMCwxIDExLDE1QTEsMSAwIDAsMSAxMiwxNEExLDEgMCAwLDEgMTMsMTVBMSwxIDAgMCwxIDEyLDE2TTIwLDE2QTEsMSAwIDAsMSAxOSwxNUExLDEgMCAwLDEgMjAsMTRBMSwxIDAgMCwxIDIxLDE1QTEsMSAwIDAsMSAyMCwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFpbkNhclBhc3NlbmdlciA9IFwiTTIxIDdIM0MxLjkgNyAxIDcuOSAxIDlWMTdIMkMyIDE4LjExIDIuOSAxOSA0IDE5UzYgMTguMTEgNiAxN0gxOEMxOCAxOC4xMSAxOC45IDE5IDIwIDE5UzIyIDE4LjExIDIyIDE3SDIzVjlDMjMgNy45IDIyLjExIDcgMjEgN003IDEySDNWOUg3VjEyTTE1IDEySDlWOUgxNVYxMk0yMSAxMkgxN1Y5SDIxVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYWluQ2FyUGFzc2VuZ2VyRG9vciA9IFwiTTIxIDdIM0MxLjkgNyAxIDcuOSAxIDlWMTdIMkMyIDE4LjExIDIuOSAxOSA0IDE5UzYgMTguMTEgNiAxN0gxOEMxOCAxOC4xMSAxOC45IDE5IDIwIDE5UzIyIDE4LjExIDIyIDE3SDIzVjlDMjMgNy45IDIyLjExIDcgMjEgN003IDEySDNWOUg3VjEyTTExIDE2SDlWOUgxMVYxNk0xNSAxNkgxM1Y5SDE1VjE2TTIxIDEySDE3VjlIMjFWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhaW5DYXJQYXNzZW5nZXJEb29yT3BlbiA9IFwiTTIxIDdIM0MxLjkgNyAxIDcuOSAxIDlWMTdIMkMyIDE4LjExIDIuOSAxOSA0IDE5UzYgMTguMTEgNiAxN0gxOEMxOCAxOC4xMSAxOC45IDE5IDIwIDE5UzIyIDE4LjExIDIyIDE3SDIzVjlDMjMgNy45IDIyLjExIDcgMjEgN004IDEySDNWOUg4VjEyTTE0IDE2SDEwVjlIMTRWMTZNMjEgMTJIMTZWOUgyMVYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFpbkNhclBhc3NlbmdlclZhcmlhbnQgPSBcIk0yMSA3SDNDMS45IDcgMSA3LjkgMSA5VjE3SDJDMiAxOC4xMSAyLjkgMTkgNCAxOVM2IDE4LjExIDYgMTdIMThDMTggMTguMTEgMTguOSAxOSAyMCAxOVMyMiAxOC4xMSAyMiAxN0gyM1Y5QzIzIDcuOSAyMi4xMSA3IDIxIDdNMTEgMTJIM1Y5SDExVjEyTTIxIDEySDEzVjlIMjFWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhaW5WYXJpYW50ID0gXCJNMTgsMTBINlY1SDE4TTEyLDE3QzEwLjg5LDE3IDEwLDE2LjEgMTAsMTVDMTAsMTMuODkgMTAuODksMTMgMTIsMTNBMiwyIDAgMCwxIDE0LDE1QTIsMiAwIDAsMSAxMiwxN000LDE1LjVBMy41LDMuNSAwIDAsMCA3LjUsMTlMNiwyMC41VjIxSDE4VjIwLjVMMTYuNSwxOUEzLjUsMy41IDAgMCwwIDIwLDE1LjVWNUMyMCwxLjUgMTYuNDIsMSAxMiwxQzcuNTgsMSA0LDEuNSA0LDVWMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFtID0gXCJNMTksMTYuOTRWOC41QzE5LDUuNzEgMTYuMzksNS4xIDEzLDVMMTMuNzUsMy41SDE3VjJIN1YzLjVIMTEuNzVMMTEsNUM3Ljg2LDUuMTEgNSw1LjczIDUsOC41VjE2Ljk0QzUsMTguMzkgNi4xOSwxOS42IDcuNTksMTkuOTFMNiwyMS41VjIySDguMjNMMTAuMjMsMjBIMTRMMTYsMjJIMThWMjEuNUwxNi41LDIwSDE2LjQyQzE4LjExLDIwIDE5LDE4LjYzIDE5LDE2Ljk0TTEyLDE4LjVBMS41LDEuNSAwIDAsMSAxMC41LDE3QTEuNSwxLjUgMCAwLDEgMTIsMTUuNUExLjUsMS41IDAgMCwxIDEzLjUsMTdBMS41LDEuNSAwIDAsMSAxMiwxOC41TTE3LDE0SDdWOUgxN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFtU2lkZSA9IFwiTTkgMUw1IDRMNy41IDZINUM1IDYgMiA2IDIgOVYxOUg3QzcgMTkgNyAxNyA5IDE3SDIyVjE0SDE4VjhIMjJWNkgxMC41TDEzIDRMOSAxTTQgOEg5VjE0SDRWOE0xMSA4SDE2VjE0SDExVjhNNCAxNkg1VjE4SDRWMTZNOSAxOVYxOS41QzkgMjAuODggMTAuMTIgMjIgMTEuNSAyMkMxMi41IDIyIDEzLjM5IDIxLjQxIDEzLjc5IDIwLjVIMTUuMjFDMTUuNjEgMjEuNDEgMTYuNSAyMiAxNy41IDIyQzE4Ljg4IDIyIDIwIDIwLjg4IDIwIDE5LjVWMTlIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2NyaWJlID0gXCJNMjAsNUEyLDIgMCAwLDEgMjIsN1YxN0EyLDIgMCAwLDEgMjAsMTlINEMyLjg5LDE5IDIsMTguMSAyLDE3VjdDMiw1Ljg5IDIuODksNSA0LDVIMjBNMTgsMTdWMTVIMTIuNUwxMC41LDE3SDE4TTYsMTdIOC41TDE1LjM1LDEwLjEyQzE1LjU1LDkuOTMgMTUuNTUsOS42MSAxNS4zNSw5LjQxTDEzLjU5LDcuNjVDMTMuMzksNy40NSAxMy4wNyw3LjQ1IDEyLjg4LDcuNjVMNiwxNC41M1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2NyaWJlQ2xvc2UgPSBcIk0xMiwyM0w4LDE5SDE2TDEyLDIzTTIwLDNBMiwyIDAgMCwxIDIyLDVWMTVBMiwyIDAgMCwxIDIwLDE3SDRBMiwyIDAgMCwxIDIsMTVWNUEyLDIgMCAwLDEgNCwzSDIwTTE4LDE1VjEzSDEyLjVMMTAuNSwxNUgxOE02LDE1SDguNUwxNS4zNSw4LjEyQzE1LjU1LDcuOTMgMTUuNTUsNy42MSAxNS4zNSw3LjQyTDEzLjU5LDUuNjVDMTMuMzksNS40NSAxMy4wNyw1LjQ1IDEyLjg4LDUuNjVMNiwxMi41M1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2ZlciA9IFwiTTggNEEyIDIgMCAwIDAgNiA2VjEwSDhWNkgxNlY5SDEzLjVMMTcgMTIuNUwyMC41IDlIMThWNkEyIDIgMCAwIDAgMTYgNEg4TTMgMTJWMTRIMTFWMTJIM00zIDE1VjE3SDExVjE1SDNNMTMgMTVWMTdIMjFWMTVIMTNNMyAxOFYyMEgxMVYxOEgzTTEzIDE4VjIwSDIxVjE4SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYW5zZmVyRG93biA9IFwiTTE2LDNWNUg4VjNIMTZNMTYsN1Y5SDhWN0gxNk0xNiwxMVYxM0g4VjExSDE2TTUsMTVIMTlMMTIsMjJMNSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2ZlckxlZnQgPSBcIk0yMSwxNkgxOVY4SDIxVjE2TTE3LDE2SDE1VjhIMTdWMTZNMTMsMTZIMTFWOEgxM1YxNk05LDVWMTlMMiwxMkw5LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNmZXJSaWdodCA9IFwiTTMsOEg1VjE2SDNWOE03LDhIOVYxNkg3VjhNMTEsOEgxM1YxNkgxMVY4TTE1LDE5LjI1VjQuNzVMMjIuMjUsMTJMMTUsMTkuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNmZXJVcCA9IFwiTTgsMjFWMTlIMTZWMjFIOE04LDE3VjE1SDE2VjE3SDhNOCwxM1YxMUgxNlYxM0g4TTE5LDlINUwxMiwyTDE5LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNpdENvbm5lY3Rpb24gPSBcIk0xNSwxMkMxNSwxMC43IDE0LjE2LDkuNiAxMyw5LjE4VjYuODJDMTQuMTYsNi40IDE1LDUuMyAxNSw0QTMsMyAwIDAsMCAxMiwxQTMsMyAwIDAsMCA5LDRDOSw1LjMgOS44NCw2LjQgMTEsNi44MlY5LjE5QzkuODQsOS42IDksMTAuNyA5LDEyQzksMTMuMyA5Ljg0LDE0LjQgMTEsMTQuODJWMTcuMThDOS44NCwxNy42IDksMTguNyA5LDIwQTMsMyAwIDAsMCAxMiwyM0EzLDMgMCAwLDAgMTUsMjBDMTUsMTguNyAxNC4xNiwxNy42IDEzLDE3LjE4VjE0LjgyQzE0LjE2LDE0LjQgMTUsMTMuMyAxNSwxMk0xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTEyLDIxQTEsMSAwIDAsMSAxMSwyMEExLDEgMCAwLDEgMTIsMTlBMSwxIDAgMCwxIDEzLDIwQTEsMSAwIDAsMSAxMiwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0Q29ubmVjdGlvbkhvcml6b250YWwgPSBcIk0xMiA5QzEwLjcgOSA5LjYgOS44IDkuMiAxMUg2LjhDNi40IDkuOCA1LjMgOSA0IDlDMi4zIDkgMSAxMC4zIDEgMTJTMi4zIDE1IDQgMTVDNS4zIDE1IDYuNCAxNC4yIDYuOCAxM0g5LjJDOS42IDE0LjIgMTAuNyAxNSAxMiAxNVMxNC40IDE0LjIgMTQuOCAxM0gxNy4yQzE3LjYgMTQuMiAxOC43IDE1IDIwIDE1QzIxLjcgMTUgMjMgMTMuNyAyMyAxMlMyMS43IDkgMjAgOUMxOC43IDkgMTcuNiA5LjggMTcuMiAxMUgxNC44QzE0LjQgOS44IDEzLjMgOSAxMiA5TTMgMTJDMyAxMS40IDMuNCAxMSA0IDExUzUgMTEuNCA1IDEyIDQuNiAxMyA0IDEzIDMgMTIuNiAzIDEyTTIxIDEyQzIxIDEyLjYgMjAuNiAxMyAyMCAxM1MxOSAxMi42IDE5IDEyIDE5LjQgMTEgMjAgMTEgMjEgMTEuNCAyMSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0Q29ubmVjdGlvblZhcmlhbnQgPSBcIk0xOCwxMUgxNC44MkMxNC40LDkuODQgMTMuMyw5IDEyLDlDMTAuNyw5IDkuNiw5Ljg0IDkuMTgsMTFINkM1LjY3LDExIDQsMTAuOSA0LDlWOEM0LDYuMTcgNS41NCw2IDYsNkgxNi4xOEMxNi42LDcuMTYgMTcuNyw4IDE5LDhBMywzIDAgMCwwIDIyLDVBMywzIDAgMCwwIDE5LDJDMTcuNywyIDE2LjYsMi44NCAxNi4xOCw0SDZDNC4zOSw0IDIsNS4wNiAyLDhWOUMyLDExLjk0IDQuMzksMTMgNiwxM0g5LjE4QzkuNiwxNC4xNiAxMC43LDE1IDEyLDE1QzEzLjMsMTUgMTQuNCwxNC4xNiAxNC44MiwxM0gxOEMxOC4zMywxMyAyMCwxMy4xIDIwLDE1VjE2QzIwLDE3LjgzIDE4LjQ2LDE4IDE4LDE4SDcuODJDNy40LDE2Ljg0IDYuMywxNiA1LDE2QTMsMyAwIDAsMCAyLDE5QTMsMyAwIDAsMCA1LDIyQzYuMywyMiA3LjQsMjEuMTYgNy44MiwyMEgxOEMxOS42MSwyMCAyMiwxOC45MyAyMiwxNlYxNUMyMiwxMi4wNyAxOS42MSwxMSAxOCwxMU0xOSw0QTEsMSAwIDAsMSAyMCw1QTEsMSAwIDAsMSAxOSw2QTEsMSAwIDAsMSAxOCw1QTEsMSAwIDAsMSAxOSw0TTUsMjBBMSwxIDAgMCwxIDQsMTlBMSwxIDAgMCwxIDUsMThBMSwxIDAgMCwxIDYsMTlBMSwxIDAgMCwxIDUsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNpdERldG91ciA9IFwiTTE5IDNBMyAzIDAgMCAwIDE2LjYxIDQuMjFBMTEuNSAxMS41IDAgMCAwIDEzLjc1IDRMMTMuODggNkE5LjQ3IDkuNDcgMCAwIDEgMTYgNi4xM0EzIDMgMCAxIDAgMTkgM00xOSA3QTEgMSAwIDEgMSAyMCA2QTEgMSAwIDAgMSAxOSA3TTguODYgNy44Nkw3LjY3IDYuMjVBMTEuNSAxMS41IDAgMCAxIDExLjYgNC4zN0wxMi4xIDYuMzFBOS41IDkuNSAwIDAgMCA4Ljg2IDcuODZNMjEgMThBMyAzIDAgMSAxIDE1LjY5IDE2LjExQTkuNDcgOS40NyAwIDAgMCA4LjU5IDEzLjQ2QzguMzcgMTMuNDcgOC4xNiAxMy41IDcuOTQgMTMuNTRBMyAzIDAgMSAxIDQuMzkgMTAuMDZBMTEuNTQgMTEuNTQgMCAwIDEgNi4wNCA3LjdMNy41IDkuMDZBOS4zNCA5LjM0IDAgMCAwIDYuNSAxMC40MUEzLjA0IDMuMDQgMCAwIDEgNy42MiAxMS41NkM3LjkxIDExLjUgOC4xOSAxMS41IDguNSAxMS40NkExMS40NyAxMS40NyAwIDAgMSAxNy40NiAxNS4wNUEyLjk2IDIuOTYgMCAwIDEgMTggMTVBMyAzIDAgMCAxIDIxIDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYW5zaXRTa2lwID0gXCJNMjEgMTJDMjEgOCAxOC41IDQuNyAxNSAzLjVDMTQuNyAyLjEgMTMuNSAxIDEyIDFDMTAuMyAxIDkgMi4zIDkgNFMxMC4zIDcgMTIgN0MxMy4xIDcgMTQuMSA2LjQgMTQuNiA1LjVDMTcuMiA2LjUgMTkgOSAxOSAxMkMxOSAxNC45IDE3LjIgMTcuNSAxNC42IDE4LjVDMTQuMSAxNy42IDEzLjEgMTcgMTIgMTdDMTAuMyAxNyA5IDE4LjMgOSAyMFMxMC4zIDIzIDEyIDIzQzEzLjUgMjMgMTQuNyAyMS45IDE1IDIwLjVDMTguNSAxOS4zIDIxIDE1LjkgMjEgMTJNMTIgNUMxMS40IDUgMTEgNC42IDExIDRTMTEuNCAzIDEyIDMgMTMgMy40IDEzIDQgMTIuNiA1IDEyIDVNMTIgMjFDMTEuNCAyMSAxMSAyMC42IDExIDIwUzExLjQgMTkgMTIgMTkgMTMgMTkuNCAxMyAyMCAxMi42IDIxIDEyIDIxTTEyIDlDMTMuNyA5IDE1IDEwLjMgMTUgMTJTMTMuNyAxNSAxMiAxNSA5IDEzLjcgOSAxMiAxMC4zIDkgMTIgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0VHJhbnNmZXIgPSBcIk0xNi41LDE1LjVIMjJWMTdIMTYuNVYxOC43NUwxNCwxNi4yNUwxNi41LDEzLjc1VjE1LjVNMTkuNSwxOS43NVYxOEwyMiwyMC41TDE5LjUsMjNWMjEuMjVIMTRWMTkuNzVIMTkuNU05LjUsNS41QTIsMiAwIDAsMSA3LjUsMy41QTIsMiAwIDAsMSA5LjUsMS41QTIsMiAwIDAsMSAxMS41LDMuNUEyLDIgMCAwLDEgOS41LDUuNU01Ljc1LDguOUw0LDkuNjVWMTNIMlY4LjNMNy4yNSw2LjE1QzcuNSw2LjA1IDcuNzUsNiA4LDZDOC43LDYgOS4zNSw2LjM1IDkuNyw2Ljk1TDEwLjY1LDguNTVDMTEuNTUsMTAgMTMuMTUsMTEgMTUsMTFWMTNDMTIuOCwxMyAxMC44NSwxMiA5LjU1LDEwLjRMOC45NSwxMy40TDExLDE1LjQ1VjIzSDlWMTdMNi44NSwxNUw1LjEsMjNIM0w1Ljc1LDguOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0aW9uID0gXCJNMTUsMkE3LDcgMCAwLDEgMjIsOUMyMiwxMS43MSAyMC40NiwxNC4wNSAxOC4yMiwxNS4yMkMxNy41NSwxNi41IDE2LjUsMTcuNTUgMTUuMjIsMTguMjJDMTQuMDUsMjAuNDYgMTEuNzEsMjIgOSwyMkE3LDcgMCAwLDEgMiwxNUMyLDEyLjI5IDMuNTQsOS45NSA1Ljc4LDguNzhDNi40NSw3LjUgNy41LDYuNDUgOC43OCw1Ljc4QzkuOTUsMy41NCAxMi4yOSwyIDE1LDJNMTIsMTlBNyw3IDAgMCwxIDUsMTJDNC4zNywxMi44NCA0LDEzLjg3IDQsMTVBNSw1IDAgMCwwIDksMjBDMTAuMTMsMjAgMTEuMTYsMTkuNjMgMTIsMTlNMTUsMTZBNyw3IDAgMCwxIDgsOUg4QzcuMzcsOS44NCA3LDEwLjg3IDcsMTJBNSw1IDAgMCwwIDEyLDE3QzEzLjEzLDE3IDE0LjE2LDE2LjYzIDE1LDE2VjE2TTE1LDRDMTMuODcsNCAxMi44NCw0LjM3IDEyLDVWNUE3LDcgMCAwLDEgMTksMTJIMTlDMTkuNjMsMTEuMTYgMjAsMTAuMTMgMjAsOUE1LDUgMCAwLDAgMTUsNE0xMCw5QTUsNSAwIDAsMCAxNSwxNEMxNS42LDE0IDE2LjE3LDEzLjkgMTYuNywxMy43QzE2LjksMTMuMTcgMTcsMTIuNiAxNywxMkE1LDUgMCAwLDAgMTIsN0MxMS40LDcgMTAuODMsNy4xIDEwLjMsNy4zQzEwLjEsNy44MyAxMCw4LjQgMTAsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0aW9uTWFza2VkID0gXCJNMTUsMkMxNi45NCwyIDE4LjU5LDIuNyAxOS45NSw0LjA1QzIxLjMsNS40MSAyMiw3LjA2IDIyLDlDMjIsMTAuNTYgMjEuNSwxMS45NiAyMC41OCwxMy4yQzE5LjY0LDE0LjQzIDE4LjQ0LDE1LjI3IDE2Ljk3LDE1LjdMMTcsMTUuMzhWMTVDMTcsMTIuODEgMTYuMjMsMTAuOTMgMTQuNjUsOS4zNUMxMy4wNyw3Ljc3IDExLjE5LDcgOSw3SDguNjNMOC4zLDcuMDNDOC43Myw1LjU2IDkuNTcsNC4zNiAxMC44LDMuNDJDMTIuMDQsMi41IDEzLjQ0LDIgMTUsMk05LDhBNyw3IDAgMCwxIDE2LDE1QTcsNyAwIDAsMSA5LDIyQTcsNyAwIDAsMSAyLDE1QTcsNyAwIDAsMSA5LDhNOSwxMEE1LDUgMCAwLDAgNCwxNUE1LDUgMCAwLDAgOSwyMEE1LDUgMCAwLDAgMTQsMTVBNSw1IDAgMCwwIDksMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNsYXRlID0gXCJNMTIuODcsMTUuMDdMMTAuMzMsMTIuNTZMMTAuMzYsMTIuNTNDMTIuMSwxMC41OSAxMy4zNCw4LjM2IDE0LjA3LDZIMTdWNEgxMFYySDhWNEgxVjZIMTIuMTdDMTEuNSw3LjkyIDEwLjQ0LDkuNzUgOSwxMS4zNUM4LjA3LDEwLjMyIDcuMyw5LjE5IDYuNjksOEg0LjY5QzUuNDIsOS42MyA2LjQyLDExLjE3IDcuNjcsMTIuNTZMMi41OCwxNy41OEw0LDE5TDksMTRMMTIuMTEsMTcuMTFMMTIuODcsMTUuMDdNMTguNSwxMEgxNi41TDEyLDIySDE0TDE1LjEyLDE5SDE5Ljg3TDIxLDIySDIzTDE4LjUsMTBNMTUuODgsMTdMMTcuNSwxMi42N0wxOS4xMiwxN0gxNS44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2xhdGVPZmYgPSBcIk0xMi4xNyw1LjgxQzExLjg3LDYuNjkgMTEuNDcsNy41NSAxMSw4LjM5TDEyLjM1LDkuNzRDMTMuMTEsOC41IDEzLjcxLDcuMTggMTQuMTMsNS44MUgxNy4xNlYzLjc1SDkuOTRWMS42OUg3Ljg3VjMuNzVINi4zN0w4LjQzLDUuODFIMTIuMTdNMTUuNTMsMTIuOTFMMTcuMDMsMTQuNDFMMTcuNjcsMTIuNjlMMTkuMDgsMTYuNDdMMjIuMzksMTkuNzdMMTguNyw5Ljk0SDE2LjY0TDE1LjUzLDEyLjkxTTEuMzEsMS4zMUwwLDIuNjJMMS4xMywzLjc1SDAuNjVWNS44MUgzLjE5TDUuMjYsNy44OEg0LjQ2QzUuMjEsOS41NiA2LjI0LDExLjE1IDcuNTMsMTIuNThMMi4yOCwxNy43NkwzLjc1LDE5LjIyTDguOTEsMTQuMDdMMTIuMTEsMTcuMjdMMTIuOCwxNS40M0wxNC4xLDE2LjcyTDEyLDIyLjMxSDE0LjA2TDE1LjIyLDE5LjIySDE2LjZMMjEuMzgsMjRMMjIuNjksMjIuNjlMMS4zMSwxLjMxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYW5zbWlzc2lvblRvd2VyID0gXCJNOC4yOCw1LjQ1TDYuNSw0LjU1TDcuNzYsMkgxNi4yM0wxNy41LDQuNTVMMTUuNzIsNS40NEwxNSw0SDlMOC4yOCw1LjQ1TTE4LjYyLDhIMTQuMDlMMTMuMyw1SDEwLjdMOS45MSw4SDUuMzhMNC4xLDEwLjU1TDUuODksMTEuNDRMNi42MiwxMEgxNy4zOEwxOC4xLDExLjQ1TDE5Ljg5LDEwLjU2TDE4LjYyLDhNMTcuNzcsMjJIMTUuN0wxNS40NiwyMS4xTDEyLDE1LjlMOC41MywyMS4xTDguMywyMkg2LjIzTDkuMTIsMTFIMTEuMTlMMTAuODMsMTIuMzVMMTIsMTQuMUwxMy4xNiwxMi4zNUwxMi44MSwxMUgxNC44OEwxNy43NywyMk0xMS40LDE1TDEwLjUsMTMuNjVMOS4zMiwxOC4xM0wxMS40LDE1TTE0LjY4LDE4LjEyTDEzLjUsMTMuNjRMMTIuNiwxNUwxNC42OCwxOC4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFzaENhbiA9IFwiTTksM1Y0SDRWNkg1VjE5QTIsMiAwIDAsMCA3LDIxSDE3QTIsMiAwIDAsMCAxOSwxOVY2SDIwVjRIMTVWM0g5TTksOEgxMVYxN0g5VjhNMTMsOEgxNVYxN0gxM1Y4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYXNoQ2FuT3V0bGluZSA9IFwiTTksM1Y0SDRWNkg1VjE5QTIsMiAwIDAsMCA3LDIxSDE3QTIsMiAwIDAsMCAxOSwxOVY2SDIwVjRIMTVWM0g5TTcsNkgxN1YxOUg3VjZNOSw4VjE3SDExVjhIOU0xMyw4VjE3SDE1VjhIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJheSA9IFwiTTIgMTJINFYxN0gyMFYxMkgyMlYxN0EyIDIgMCAwIDEgMjAgMTlINEEyIDIgMCAwIDEgMiAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUcmF5QWxlcnQgPSBcIk0yIDEySDRWMTdIMjBWMTJIMjJWMTdBMiAyIDAgMCAxIDIwIDE5SDRBMiAyIDAgMCAxIDIgMTdNMTMgMTJIMTFWMTRIMTNNMTMgNEgxMVYxMEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlUcmF5RnVsbCA9IFwiTTE4IDVINlY3SDE4TTYgOUgxOFYxMUg2TTIgMTJINFYxN0gyMFYxMkgyMlYxN0EyIDIgMCAwIDEgMjAgMTlINEEyIDIgMCAwIDEgMiAxN00xOCAxM0g2VjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYXlNaW51cyA9IFwiTTE2IDEwSDhWOEgxNk0yIDE3QTIgMiAwIDAgMCA0IDE5SDIwQTIgMiAwIDAgMCAyMiAxN1YxMkgyMFYxN0g0VjEySDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJheVBsdXMgPSBcIk0yIDEySDRWMTdIMjBWMTJIMjJWMTdBMiAyIDAgMCAxIDIwIDE5SDRBMiAyIDAgMCAxIDIgMTdNMTEgNUgxM1Y4SDE2VjEwSDEzVjEzSDExVjEwSDhWOEgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmF5UmVtb3ZlID0gXCJNMiAxN0EyIDIgMCAwIDAgNCAxOUgyMEEyIDIgMCAwIDAgMjIgMTdWMTJIMjBWMTdINFYxMkgyTTE0LjEyIDUuNDZMMTUuNTQgNi44OEwxMy40MSA5TDE1LjU0IDExLjEyTDE0LjEyIDEyLjU0TDEyIDEwLjQxTDkuODggMTIuNTRMOC40NiAxMS4xMkwxMC41OSA5TDguNDYgNi44OEw5Ljg4IDUuNDZMMTIgNy41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmVhc3VyZUNoZXN0ID0gXCJNNSw0SDE5QTMsMyAwIDAsMSAyMiw3VjExSDE1VjEwSDlWMTFIMlY3QTMsMyAwIDAsMSA1LDRNMTEsMTFIMTNWMTNIMTFWMTFNMiwxMkg5VjEzTDExLDE1SDEzTDE1LDEzVjEySDIyVjIwSDJWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJlZSA9IFwiTTExLDIxVjE2Ljc0QzEwLjUzLDE2LjkxIDEwLjAzLDE3IDkuNSwxN0M3LDE3IDUsMTUgNSwxMi41QzUsMTEuMjMgNS41LDEwLjA5IDYuMzYsOS4yN0M2LjEzLDguNzMgNiw4LjEzIDYsNy41QzYsNSA4LDMgMTAuNSwzQzEyLjA2LDMgMTMuNDQsMy44IDE0LjI1LDVDMTQuMzMsNSAxNC40MSw1IDE0LjUsNUE1LjUsNS41IDAgMCwxIDIwLDEwLjVBNS41LDUuNSAwIDAsMSAxNC41LDE2QzE0LDE2IDEzLjUsMTUuOTMgMTMsMTUuNzlWMjFIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJlZU91dGxpbmUgPSBcIk0xMC41LDNDOCwzIDYsNSA2LDcuNUM2LDguMTEgNi4xMyw4LjcxIDYuMzcsOS4yN0M1LjUsMTAuMTIgNSwxMS4yOCA1LDEyLjVDNSwxNSA3LDE3IDkuNSwxN0MxMCwxNyAxMC41LDE2Ljg5IDExLDE2LjcyVjIxSDEzVjE1Ljc3QzEzLjUsMTUuOTEgMTQsMTYgMTQuNSwxNkE1LjUsNS41IDAgMCwwIDIwLDEwLjVBNS41LDUuNSAwIDAsMCAxNC41LDVDMTQuNDEsNSAxNC4zMyw1IDE0LjI0LDVDMTMuNDEsMy43NiAxMiwzIDEwLjUsM00xMC41LDVDMTEuODIsNSAxMi45MSw2LjAzIDEzLDcuMzVDMTMuNDYsNy4xMiAxNCw3IDE0LjUsN0EzLjUsMy41IDAgMCwxIDE4LDEwLjVBMy41LDMuNSAwIDAsMSAxNC41LDE0QzEzLjU0LDE0IDEyLjYzLDEzLjYxIDExLjk2LDEyLjkxQzExLjc2LDE0LjEyIDEwLjcyLDE1IDkuNSwxNUEyLjUsMi41IDAgMCwxIDcsMTIuNUM3LDExLjEyIDcuOCwxMC41NCA5LDkuNzlDOC4yLDguNzYgOCw4LjE2IDgsNy41QTIuNSwyLjUgMCAwLDEgMTAuNSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyZWxsbyA9IFwiTTE5LjUsMkg0LjVBMi41LDIuNSAwIDAsMCAyLDQuNVYxOS41QTIuNSwyLjUgMCAwLDAgNC41LDIySDE5LjVBMi41LDIuNSAwIDAsMCAyMiwxOS41VjQuNUEyLjUsMi41IDAgMCwwIDE5LjUsMk0xMC43LDE3LjJBMS4yLDEuMiAwIDAsMSA5LjUsMTguNEg1LjhDNS4xNCwxOC40IDQuNiwxNy44NiA0LjYsMTcuMlY1LjhBMS4yLDEuMiAwIDAsMSA1LjgsNC42SDkuNUMxMC4xNiw0LjYgMTAuNyw1LjE0IDEwLjcsNS44VjE3LjJNMTkuNCwxMi4yQzE5LjQsMTIuODYgMTguODYsMTMuNCAxOC4yLDEzLjRIMTQuNUMxMy44NCwxMy40IDEzLjMsMTIuODYgMTMuMywxMi4yVjUuOEMxMy4zLDUuMTQgMTMuODQsNC42IDE0LjUsNC42SDE4LjJDMTguODYsNC42IDE5LjQsNS4xNCAxOS40LDUuOFYxMi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyZW5kaW5nRG93biA9IFwiTTE2LDE4TDE4LjI5LDE1LjcxTDEzLjQxLDEwLjgzTDkuNDEsMTQuODNMMiw3LjQxTDMuNDEsNkw5LjQxLDEyTDEzLjQxLDhMMTkuNzEsMTQuMjlMMjIsMTJWMThIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJlbmRpbmdOZXV0cmFsID0gXCJNMjIsMTJMMTgsOFYxMUgzVjEzSDE4VjE2TDIyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyZW5kaW5nVXAgPSBcIk0xNiw2TDE4LjI5LDguMjlMMTMuNDEsMTMuMTdMOS40MSw5LjE3TDIsMTYuNTlMMy40MSwxOEw5LjQxLDEyTDEzLjQxLDE2TDE5LjcxLDkuNzFMMjIsMTJWNkgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmlhbmdsZSA9IFwiTTEsMjFIMjNMMTIsMlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyaWFuZ2xlT3V0bGluZSA9IFwiTTEyLDJMMSwyMUgyM00xMiw2TDE5LjUzLDE5SDQuNDdcIjtcclxuZXhwb3J0IHZhciBtZGlUcmlhbmdsZVdhdmUgPSBcIk0yMiAxMkwxNyAyMkw3LjEgNi4wNEw0LjI0IDEySDJMNyAyTDE2LjkgMTcuOTZMMTkuNzYgMTJIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJpZm9yY2UgPSBcIk0xLjUsMjFMMTIsMy41TDIyLjUsMjFIMS41TTEyLDIxTDE3LDEySDdMMTIsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJvcGh5ID0gXCJNMTggMkMxNy4xIDIgMTYgMyAxNiA0SDhDOCAzIDYuOSAyIDYgMkgyVjExQzIgMTIgMyAxMyA0IDEzSDYuMkM2LjYgMTUgNy45IDE2LjcgMTEgMTdWMTkuMDhDOCAxOS41NCA4IDIyIDggMjJIMTZDMTYgMjIgMTYgMTkuNTQgMTMgMTkuMDhWMTdDMTYuMSAxNi43IDE3LjQgMTUgMTcuOCAxM0gyMEMyMSAxMyAyMiAxMiAyMiAxMVYySDE4TTYgMTFINFY0SDZWMTFNMjAgMTFIMThWNEgyMFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcm9waHlBd2FyZCA9IFwiTTE1LjIgMTAuN0wxNi42IDE2TDEyIDEyLjJMNy40IDE2TDguOCAxMC44TDQuNiA3LjNMMTAgN0wxMiAyTDE0IDdMMTkuNCA3LjNMMTUuMiAxMC43TTE0IDE5SDEzVjE2TDEyIDE1TDExIDE2VjE5SDEwQzguOSAxOSA4IDE5LjkgOCAyMVYyMkgxNlYyMUMxNiAxOS45IDE1LjExIDE5IDE0IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyb3BoeUJyb2tlbiA9IFwiTTYuMiAxM0M2LjYgMTQuOCA3LjYgMTYuMyAxMCAxNi44VjE5LjM0QzggMjAuMTIgOCAyMiA4IDIySDEzLjJMMTAuMiAxNUwxNC4yIDEwTDEwLjcgNEg4QzggMyA2LjkgMiA2IDJIMlYxMUMyIDEyIDMgMTMgNCAxM0g2LjJNNiAxMUg0VjRINlYxMU0xNy44IDEzSDIwQzIxIDEzIDIyIDEyIDIyIDExVjJIMThDMTcuMSAyIDE2IDMgMTYgNEgxMy45TDE2LjcgMTBMMTIuMiAxNUwxMy4yIDIySDE2QzE2IDIyIDE2IDIwLjEyIDE0IDE5LjM0TDE0IDE2Ljg1QzE2LjM5IDE2LjM1IDE3LjUgMTQuNyAxNy44IDEzTTIwIDExSDE4VjRIMjBWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJvcGh5T3V0bGluZSA9IFwiTTE4IDJDMTcuMSAyIDE2IDMgMTYgNEg4QzggMyA2LjkgMiA2IDJIMlYxMUMyIDEyIDMgMTMgNCAxM0g2LjJDNi42IDE1IDcuOSAxNi43IDExIDE3VjE5LjA4QzggMTkuNTQgOCAyMiA4IDIySDE2QzE2IDIyIDE2IDE5LjU0IDEzIDE5LjA4VjE3QzE2LjEgMTYuNyAxNy40IDE1IDE3LjggMTNIMjBDMjEgMTMgMjIgMTIgMjIgMTFWMkgxOE02IDExSDRWNEg2VjExTTE2IDExLjVDMTYgMTMuNDMgMTUuNDIgMTUgMTIgMTVDOC41OSAxNSA4IDEzLjQzIDggMTEuNVY2SDE2VjExLjVNMjAgMTFIMThWNEgyMFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcm9waHlWYXJpYW50ID0gXCJNMTcgNFYySDdWNEgyVjExQzIgMTIuMSAyLjkgMTMgNCAxM0g3LjFDNy41IDE0Ljk2IDkuMDQgMTYuNSAxMSAxNi45VjE5LjA4QzggMTkuNTQgOCAyMiA4IDIySDE2QzE2IDIyIDE2IDE5LjU0IDEzIDE5LjA4VjE2LjlDMTQuOTYgMTYuNSAxNi41IDE0Ljk2IDE2LjkgMTNIMjBDMjEuMSAxMyAyMiAxMi4xIDIyIDExVjRIMTdNNCAxMVY2SDdWMTFMNCAxMU0yMCAxMUwxNyAxMVY2SDIwTDIwIDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyb3BoeVZhcmlhbnRPdXRsaW5lID0gXCJNMTcgNFYySDdWNEgyVjExQzIgMTIuMSAyLjkgMTMgNCAxM0g3LjFDNy41IDE0Ljk2IDkuMDQgMTYuNSAxMSAxNi45VjE5LjA4QzggMTkuNTQgOCAyMiA4IDIySDE2QzE2IDIyIDE2IDE5LjU0IDEzIDE5LjA4VjE2LjlDMTQuOTYgMTYuNSAxNi41IDE0Ljk2IDE2LjkgMTNIMjBDMjEuMSAxMyAyMiAxMi4xIDIyIDExVjRIMTdNNCAxMVY2SDdWMTFMNCAxMU0xNSAxMkMxNSAxMy42NSAxMy42NSAxNSAxMiAxNVM5IDEzLjY1IDkgMTJWNEgxNVYxMk0yMCAxMUwxNyAxMVY2SDIwTDIwIDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRydWNrID0gXCJNMTgsMTguNUExLjUsMS41IDAgMCwxIDE2LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxNS41QTEuNSwxLjUgMCAwLDEgMTkuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE4LjVNMTkuNSw5LjVMMjEuNDYsMTJIMTdWOS41TTYsMTguNUExLjUsMS41IDAgMCwxIDQuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTguNU0yMCw4SDE3VjRIM0MxLjg5LDQgMSw0Ljg5IDEsNlYxN0gzQTMsMyAwIDAsMCA2LDIwQTMsMyAwIDAsMCA5LDE3SDE1QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdIMjNWMTJMMjAsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcnVja0NoZWNrID0gXCJNMyw0SDE3VjhIMjBMMjMsMTJWMTdIMjFBMywzIDAgMCwxIDE4LDIwQTMsMyAwIDAsMSAxNSwxN0g5QTMsMyAwIDAsMSA2LDIwQTMsMyAwIDAsMSAzLDE3SDFWNkMxLDQuODkgMS45LDQgMyw0TTE3LDkuNVYxMkgyMS40N0wxOS41LDkuNUgxN002LDE1LjVBMS41LDEuNSAwIDAsMCA0LjUsMTdBMS41LDEuNSAwIDAsMCA2LDE4LjVBMS41LDEuNSAwIDAsMCA3LjUsMTdBMS41LDEuNSAwIDAsMCA2LDE1LjVNMTgsMTUuNUExLjUsMS41IDAgMCwwIDE2LjUsMTdBMS41LDEuNSAwIDAsMCAxOCwxOC41QTEuNSwxLjUgMCAwLDAgMTkuNSwxN0ExLjUsMS41IDAgMCwwIDE4LDE1LjVNOCwxNEwxNCw4TDEyLjU5LDYuNThMOCwxMS4xN0w1LjkxLDkuMDhMNC41LDEwLjVMOCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcnVja0NoZWNrT3V0bGluZSA9IFwiTTE4IDE4LjVDMTguODMgMTguNSAxOS41IDE3LjgzIDE5LjUgMTdDMTkuNSAxNi4xNyAxOC44MyAxNS41IDE4IDE1LjVDMTcuMTcgMTUuNSAxNi41IDE2LjE3IDE2LjUgMTdDMTYuNSAxNy44MyAxNy4xNyAxOC41IDE4IDE4LjVNMTkuNSA5LjVIMTdWMTJIMjEuNDZMMTkuNSA5LjVNNiAxOC41QzYuODMgMTguNSA3LjUgMTcuODMgNy41IDE3QzcuNSAxNi4xNyA2LjgzIDE1LjUgNiAxNS41QzUuMTcgMTUuNSA0LjUgMTYuMTcgNC41IDE3QzQuNSAxNy44MyA1LjE3IDE4LjUgNiAxOC41TTIwIDhMMjMgMTJWMTdIMjFDMjEgMTguNjYgMTkuNjYgMjAgMTggMjBDMTYuMzQgMjAgMTUgMTguNjYgMTUgMTdIOUM5IDE4LjY2IDcuNjYgMjAgNiAyMEM0LjM0IDIwIDMgMTguNjYgMyAxN0gxVjZDMSA0Ljg5IDEuODkgNCAzIDRIMTdWOEgyME0zIDZWMTVIMy43NkM0LjMxIDE0LjM5IDUuMTEgMTQgNiAxNEM2Ljg5IDE0IDcuNjkgMTQuMzkgOC4yNCAxNUgxNVY2SDNNNSAxMC41TDYuNSA5TDggMTAuNUwxMS41IDdMMTMgOC41TDggMTMuNUw1IDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJ1Y2tEZWxpdmVyeSA9IFwiTTMsNEEyLDIgMCAwLDAgMSw2VjE3SDNBMywzIDAgMCwwIDYsMjBBMywzIDAgMCwwIDksMTdIMTVBMywzIDAgMCwwIDE4LDIwQTMsMyAwIDAsMCAyMSwxN0gyM1YxMkwyMCw4SDE3VjRNMTAsNkwxNCwxMEwxMCwxNFYxMUg0VjlIMTBNMTcsOS41SDE5LjVMMjEuNDcsMTJIMTdNNiwxNS41QTEuNSwxLjUgMCAwLDEgNy41LDE3QTEuNSwxLjUgMCAwLDEgNiwxOC41QTEuNSwxLjUgMCAwLDEgNC41LDE3QTEuNSwxLjUgMCAwLDEgNiwxNS41TTE4LDE1LjVBMS41LDEuNSAwIDAsMSAxOS41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTguNUExLjUsMS41IDAgMCwxIDE2LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRydWNrRGVsaXZlcnlPdXRsaW5lID0gXCJNMTggMTguNUMxOC44MyAxOC41IDE5LjUgMTcuODMgMTkuNSAxN0MxOS41IDE2LjE3IDE4LjgzIDE1LjUgMTggMTUuNUMxNy4xNyAxNS41IDE2LjUgMTYuMTcgMTYuNSAxN0MxNi41IDE3LjgzIDE3LjE3IDE4LjUgMTggMTguNU0xOS41IDkuNUgxN1YxMkgyMS40NkwxOS41IDkuNU02IDE4LjVDNi44MyAxOC41IDcuNSAxNy44MyA3LjUgMTdDNy41IDE2LjE3IDYuODMgMTUuNSA2IDE1LjVDNS4xNyAxNS41IDQuNSAxNi4xNyA0LjUgMTdDNC41IDE3LjgzIDUuMTcgMTguNSA2IDE4LjVNMjAgOEwyMyAxMlYxN0gyMUMyMSAxOC42NiAxOS42NiAyMCAxOCAyMEMxNi4zNCAyMCAxNSAxOC42NiAxNSAxN0g5QzkgMTguNjYgNy42NiAyMCA2IDIwQzQuMzQgMjAgMyAxOC42NiAzIDE3SDFWNkMxIDQuODkgMS44OSA0IDMgNEgxN1Y4SDIwTTMgNlYxNUgzLjc2QzQuMzEgMTQuMzkgNS4xMSAxNCA2IDE0QzYuODkgMTQgNy42OSAxNC4zOSA4LjI0IDE1SDE1VjZIM00xMCA3TDEzLjUgMTAuNUwxMCAxNFYxMS41SDVWOS41SDEwVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJ1Y2tGYXN0ID0gXCJNMywxMy41TDIuMjUsMTJINy41TDYuOSwxMC41SDJMMS4yNSw5SDkuMDVMOC40NSw3LjVIMS4xMUwwLjI1LDZINEEyLDIgMCAwLDEgNiw0SDE4VjhIMjFMMjQsMTJWMTdIMjJBMywzIDAgMCwxIDE5LDIwQTMsMyAwIDAsMSAxNiwxN0gxMkEzLDMgMCAwLDEgOSwyMEEzLDMgMCAwLDEgNiwxN0g0VjEzLjVIM00xOSwxOC41QTEuNSwxLjUgMCAwLDAgMjAuNSwxN0ExLjUsMS41IDAgMCwwIDE5LDE1LjVBMS41LDEuNSAwIDAsMCAxNy41LDE3QTEuNSwxLjUgMCAwLDAgMTksMTguNU0yMC41LDkuNUgxOFYxMkgyMi40NkwyMC41LDkuNU05LDE4LjVBMS41LDEuNSAwIDAsMCAxMC41LDE3QTEuNSwxLjUgMCAwLDAgOSwxNS41QTEuNSwxLjUgMCAwLDAgNy41LDE3QTEuNSwxLjUgMCAwLDAgOSwxOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRydWNrRmFzdE91dGxpbmUgPSBcIk0uNzUgNy41SDEwLjVMMTEuMjUgOUgxLjVMLjc1IDcuNU0xLjc1IDEwLjVIMTEuNUwxMi4yNSAxMkgyLjVMMS43NSAxMC41TTE4IDE4LjVDMTguODMgMTguNSAxOS41IDE3LjgzIDE5LjUgMTdDMTkuNSAxNi4xNyAxOC44MyAxNS41IDE4IDE1LjVDMTcuMTcgMTUuNSAxNi41IDE2LjE3IDE2LjUgMTdDMTYuNSAxNy44MyAxNy4xNyAxOC41IDE4IDE4LjVNMTkuNSA5LjVIMTdWMTJIMjEuNDZMMTkuNSA5LjVNOCAxOC41QzguODMgMTguNSA5LjUgMTcuODMgOS41IDE3QzkuNSAxNi4xNyA4LjgzIDE1LjUgOCAxNS41QzcuMTcgMTUuNSA2LjUgMTYuMTcgNi41IDE3QzYuNSAxNy44MyA3LjE3IDE4LjUgOCAxOC41TTIwIDhMMjMgMTJWMTdIMjFDMjEgMTguNjYgMTkuNjYgMjAgMTggMjBDMTYuMzQgMjAgMTUgMTguNjYgMTUgMTdIMTFDMTEgMTguNjYgOS42NSAyMCA4IDIwQzYuMzQgMjAgNSAxOC42NiA1IDE3SDNWMTMuNSAxMy41SDVWMTVINS43NkM2LjMxIDE0LjM5IDcuMTEgMTQgOCAxNEM4Ljg5IDE0IDkuNjkgMTQuMzkgMTAuMjQgMTVIMTVWNkgzVjZDMyA0Ljg5IDMuODkgNCA1IDRIMTdWOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcnVja091dGxpbmUgPSBcIk0xOCAxOC41QzE4LjgzIDE4LjUgMTkuNSAxNy44MyAxOS41IDE3QzE5LjUgMTYuMTcgMTguODMgMTUuNSAxOCAxNS41QzE3LjE3IDE1LjUgMTYuNSAxNi4xNyAxNi41IDE3QzE2LjUgMTcuODMgMTcuMTcgMTguNSAxOCAxOC41TTE5LjUgOS41SDE3VjEySDIxLjQ2TDE5LjUgOS41TTYgMTguNUM2LjgzIDE4LjUgNy41IDE3LjgzIDcuNSAxN0M3LjUgMTYuMTcgNi44MyAxNS41IDYgMTUuNUM1LjE3IDE1LjUgNC41IDE2LjE3IDQuNSAxN0M0LjUgMTcuODMgNS4xNyAxOC41IDYgMTguNU0yMCA4TDIzIDEyVjE3SDIxQzIxIDE4LjY2IDE5LjY2IDIwIDE4IDIwQzE2LjM0IDIwIDE1IDE4LjY2IDE1IDE3SDlDOSAxOC42NiA3LjY2IDIwIDYgMjBDNC4zNCAyMCAzIDE4LjY2IDMgMTdIMVY2QzEgNC44OSAxLjg5IDQgMyA0SDE3VjhIMjBNMyA2VjE1SDMuNzZDNC4zMSAxNC4zOSA1LjExIDE0IDYgMTRDNi44OSAxNCA3LjY5IDE0LjM5IDguMjQgMTVIMTVWNkgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRydWNrVHJhaWxlciA9IFwiTTIyLDE1VjE3SDEwQTMsMyAwIDAsMSA3LDIwQTMsMyAwIDAsMSA0LDE3SDJWNkEyLDIgMCAwLDEgNCw0SDE3QTIsMiAwIDAsMSAxOSw2VjE1SDIyTTcsMTZBMSwxIDAgMCwwIDYsMTdBMSwxIDAgMCwwIDcsMThBMSwxIDAgMCwwIDgsMTdBMSwxIDAgMCwwIDcsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJ1bXBldCA9IFwiTTIyIDZDMjEgMTEgMTUgMTEgMTUgMTFINEMzIDExIDIgMTAgMiAxMEgxVjE0SDJDMiAxNCAzIDEzIDQgMTNINC4zQzQuMSAxMy4zIDQgMTMuNiA0IDE0VjE2QzQgMTcuMSA0LjkgMTggNiAxOEg3VjE5SDlWMThIMTBWMTlIMTJWMThIMTNWMTlIMTVWMThIMTZDMTcuMSAxOCAxOCAxNy4xIDE4IDE2VjE0QzE4IDEzLjkgMTggMTMuNyAxNy45IDEzLjZDMTkuNiAxNC4yIDIxLjQgMTUuNCAyMiAxOEgyM1Y2SDIyTTYgMTYuNUM1LjcgMTYuNSA1LjUgMTYuMyA1LjUgMTZWMTRDNS41IDEzLjcgNS43IDEzLjUgNiAxMy41SDdWMTYuNUg2TTkgMTYuNVYxMy41SDEwVjE2LjVIOU0xMiAxNi41VjEzLjVIMTNWMTYuNUgxMk0xNi41IDE2QzE2LjUgMTYuMyAxNi4zIDE2LjUgMTYgMTYuNUgxNVYxMy41SDE2QzE2LjMgMTMuNSAxNi41IDEzLjcgMTYuNSAxNFYxNk05IDEwSDdWOUg5VjEwTTEyIDEwSDEwVjlIMTJWMTBNMTUgMTBIMTNWOUgxNVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUc2hpcnRDcmV3ID0gXCJNMTYsMjFIOEExLDEgMCAwLDEgNywyMFYxMi4wN0w1LjcsMTMuMDdDNS4zMSwxMy40NiA0LjY4LDEzLjQ2IDQuMjksMTMuMDdMMS40NiwxMC4yOUMxLjA3LDkuOSAxLjA3LDkuMjcgMS40Niw4Ljg4TDcuMzQsM0g5QzksNC4xIDEwLjM0LDUgMTIsNUMxMy42Niw1IDE1LDQuMSAxNSwzSDE2LjY2TDIyLjU0LDguODhDMjIuOTMsOS4yNyAyMi45Myw5LjkgMjIuNTQsMTAuMjlMMTkuNzEsMTMuMTJDMTkuMzIsMTMuNSAxOC42OSwxMy41IDE4LjMsMTMuMTJMMTcsMTIuMTJWMjBBMSwxIDAgMCwxIDE2LDIxXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHNoaXJ0Q3Jld091dGxpbmUgPSBcIk0xNiwyMUg4QTEsMSAwIDAsMSA3LDIwVjEyLjA3TDUuNywxMy4xMkM1LjMxLDEzLjUgNC42OCwxMy41IDQuMjksMTMuMTJMMS40NiwxMC4yOUMxLjA3LDkuOSAxLjA3LDkuMjcgMS40Niw4Ljg4TDcuMzQsM0g5QzksNC4xIDEwLjM0LDUgMTIsNUMxMy42Niw1IDE1LDQuMSAxNSwzSDE2LjY2TDIyLjU0LDguODhDMjIuOTMsOS4yNyAyMi45Myw5LjkgMjIuNTQsMTAuMjlMMTkuNzEsMTMuMTJDMTkuMzIsMTMuNSAxOC42OSwxMy41IDE4LjMsMTMuMTJMMTcsMTIuMDdWMjBBMSwxIDAgMCwxIDE2LDIxTTIwLjQyLDkuNThMMTYuMTEsNS4yOEMxNS44LDUuNjMgMTUuNDMsNS45NCAxNSw2LjJDMTQuMTYsNi43IDEzLjEzLDcgMTIsN0MxMC4zLDcgOC43OSw2LjMyIDcuODksNS4yOEwzLjU4LDkuNThMNSwxMUw4LDlIOVYxOUgxNVY5SDE2TDE5LDExTDIwLjQyLDkuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHNoaXJ0ViA9IFwiTTE2LDIxSDhBMSwxIDAgMCwxIDcsMjBWMTIuMDdMNS43LDEzLjA3QzUuMzEsMTMuNDYgNC42OCwxMy40NiA0LjI5LDEzLjA3TDEuNDYsMTAuMjlDMS4wNyw5LjkgMS4wNyw5LjI3IDEuNDYsOC44OEw3LjM0LDNIOUM5LjI5LDQuOCAxMC40LDYuMzcgMTIsNy4yNUMxMy42LDYuMzcgMTQuNzEsNC44IDE1LDNIMTYuNjZMMjIuNTQsOC44OEMyMi45Myw5LjI3IDIyLjkzLDkuOSAyMi41NCwxMC4yOUwxOS43MSwxMy4xMkMxOS4zMiwxMy41IDE4LjY5LDEzLjUgMTguMywxMy4xMkwxNywxMi4xMlYyMEExLDEgMCAwLDEgMTYsMjFcIjtcclxuZXhwb3J0IHZhciBtZGlUc2hpcnRWT3V0bGluZSA9IFwiTTE2LDIxSDhBMSwxIDAgMCwxIDcsMjBWMTIuMDdMNS43LDEzLjEyQzUuMzEsMTMuNSA0LjY4LDEzLjUgNC4yOSwxMy4xMkwxLjQ2LDEwLjI5QzEuMDcsOS45IDEuMDcsOS4yNyAxLjQ2LDguODhMNy4zNCwzSDlDOSw0LjEgMTAsNiAxMiw3LjI1QzE0LDYgMTUsNC4xIDE1LDNIMTYuNjZMMjIuNTQsOC44OEMyMi45Myw5LjI3IDIyLjkzLDkuOSAyMi41NCwxMC4yOUwxOS43MSwxMy4xMkMxOS4zMiwxMy41IDE4LjY5LDEzLjUgMTguMywxMy4xMkwxNywxMi4wN1YyMEExLDEgMCAwLDEgMTYsMjFNMjAuNDIsOS41OEwxNi4xMSw1LjI4QzE1LDcgMTQsOC4yNSAxMiw5LjI1QzEwLDguMjUgOSw3IDcuODksNS4yOEwzLjU4LDkuNThMNSwxMUw4LDlIOVYxOUgxNVY5SDE2TDE5LDExTDIwLjQyLDkuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVtYmxlRHJ5ZXIgPSBcIk02LDJIMThBMiwyIDAgMCwxIDIwLDRWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyTTcsNEExLDEgMCAwLDAgNiw1QTEsMSAwIDAsMCA3LDZBMSwxIDAgMCwwIDgsNUExLDEgMCAwLDAgNyw0TTEwLDRBMSwxIDAgMCwwIDksNUExLDEgMCAwLDAgMTAsNkExLDEgMCAwLDAgMTEsNUExLDEgMCAwLDAgMTAsNE0xMiw4QTYsNiAwIDAsMCA2LDE0QTYsNiAwIDAsMCAxMiwyMEE2LDYgMCAwLDAgMTgsMTRBNiw2IDAgMCwwIDEyLDhNOC4xMSwxMC41SDEwQzkuNzYsMTEuODggMTAsMTIuNjcgMTAuNTgsMTMuMjlDMTEuNjgsMTQuMzYgMTIuMTYsMTUuNzEgMTEuODksMTcuNUgxMEMxMC4yNCwxNi4xMiAxMCwxNS4zMyA5LjQyLDE0LjcxQzguMzIsMTMuNjQgNy44NSwxMi4yOSA4LjExLDEwLjVNMTIuMTEsMTAuNUgxNEMxMy43NiwxMS44OCAxNCwxMi42NyAxNC41OCwxMy4yOUMxNS42OCwxNC4zNiAxNi4xNiwxNS43MSAxNS44OSwxNy41SDE0QzE0LjI0LDE2LjEyIDE0LDE1LjMzIDEzLjQyLDE0LjcxQzEyLjMyLDEzLjY0IDExLjg1LDEyLjI5IDEyLjExLDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVtYmxlRHJ5ZXJBbGVydCA9IFwiTTQgMkgxNkMxNy4xMSAyIDE4IDIuOSAxOCA0VjIwQzE4IDIxLjExIDE3LjExIDIyIDE2IDIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFY0QzIgMi45IDIuOSAyIDQgMk01IDRDNC40NSA0IDQgNC40NSA0IDVTNC40NSA2IDUgNiA2IDUuNTUgNiA1IDUuNTUgNCA1IDRNOCA0QzcuNDUgNCA3IDQuNDUgNyA1UzcuNDUgNiA4IDYgOSA1LjU1IDkgNSA4LjU1IDQgOCA0TTEwIDhDNi42OSA4IDQgMTAuNjkgNCAxNFM2LjY5IDIwIDEwIDIwIDE2IDE3LjMxIDE2IDE0IDEzLjMxIDggMTAgOE02LjExIDEwLjVIOEM3Ljc2IDExLjg4IDggMTIuNjcgOC41OCAxMy4yOUM5LjY4IDE0LjM2IDEwLjE2IDE1LjcxIDkuODkgMTcuNUg4QzguMjQgMTYuMTIgOCAxNS4zMyA3LjQyIDE0LjcxQzYuMzIgMTMuNjQgNS44NSAxMi4yOSA2LjExIDEwLjVNMTAuMTEgMTAuNUgxMkMxMS43NiAxMS44OCAxMiAxMi42NyAxMi41OCAxMy4yOUMxMy42OCAxNC4zNiAxNC4xNiAxNS43MSAxMy44OSAxNy41SDEyQzEyLjI0IDE2LjEyIDEyIDE1LjMzIDExLjQyIDE0LjcxQzEwLjMyIDEzLjY0IDkuODUgMTIuMjkgMTAuMTEgMTAuNU0yMCAxNUgyMlYxN0gyMFYxNU0yMCA3SDIyVjEzSDIwVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVtYmxlRHJ5ZXJPZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDQgNS44OVYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOC41OCAyMiAxOS4xIDIxLjc1IDE5LjQ2IDIxLjM1TDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TTEyIDIwQzguNjkgMjAgNiAxNy4zMSA2IDE0QzYgMTIuMzIgNi43IDEwLjggNy44MiA5LjcxTDguNjEgMTAuNUg4LjExQzcuODUgMTIuMjkgOC4zMiAxMy42NCA5LjQyIDE0LjcxQzEwIDE1LjMzIDEwLjI0IDE2LjEyIDEwIDE3LjVIMTEuODlDMTIuMTYgMTUuNzEgMTEuNjggMTQuMzYgMTAuNTggMTMuMjlDMTAuMjIgMTIuOTEgMTAgMTIuNDQgOS45NSAxMS44NEwxNC4wMyAxNS45MkMxNC4xMSAxNi4zNSAxNC4xMSAxNi44NiAxNCAxNy41SDE1LjYxTDE2LjI5IDE4LjE4QzE1LjIgMTkuMyAxMy42OSAyMCAxMiAyME0xMS4yNSA4LjA1QzExLjUgOCAxMS43NSA4IDEyIDhDMTUuMzEgOCAxOCAxMC42OSAxOCAxNEMxOCAxNC4yNSAxOCAxNC41IDE3Ljk1IDE0Ljc1TDIwIDE2LjhWNEMyMCAyLjkgMTkuMTEgMiAxOCAySDZDNS43NiAyIDUuNTQgMi4wNSA1LjMzIDIuMTNMMTEuMjUgOC4wNU0xMCA0QzEwLjU1IDQgMTEgNC40NSAxMSA1UzEwLjU1IDYgMTAgNiA5IDUuNTUgOSA1IDkuNDUgNCAxMCA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVR1bmUgPSBcIk0zLDE3VjE5SDlWMTdIM00zLDVWN0gxM1Y1SDNNMTMsMjFWMTlIMjFWMTdIMTNWMTVIMTFWMjFIMTNNNyw5VjExSDNWMTNIN1YxNUg5VjlIN00yMSwxM1YxMUgxMVYxM0gyMU0xNSw5SDE3VjdIMjFWNUgxN1YzSDE1VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVuZVZhcmlhbnQgPSBcIk04IDEzQzYuMTQgMTMgNC41OSAxNC4yOCA0LjE0IDE2SDJWMThINC4xNEM0LjU5IDE5LjcyIDYuMTQgMjEgOCAyMVMxMS40MSAxOS43MiAxMS44NiAxOEgyMlYxNkgxMS44NkMxMS40MSAxNC4yOCA5Ljg2IDEzIDggMTNNOCAxOUM2LjkgMTkgNiAxOC4xIDYgMTdDNiAxNS45IDYuOSAxNSA4IDE1UzEwIDE1LjkgMTAgMTdDMTAgMTguMSA5LjEgMTkgOCAxOU0xOS44NiA2QzE5LjQxIDQuMjggMTcuODYgMyAxNiAzUzEyLjU5IDQuMjggMTIuMTQgNkgyVjhIMTIuMTRDMTIuNTkgOS43MiAxNC4xNCAxMSAxNiAxMVMxOS40MSA5LjcyIDE5Ljg2IDhIMjJWNkgxOS44Nk0xNiA5QzE0LjkgOSAxNCA4LjEgMTQgN0MxNCA1LjkgMTQuOSA1IDE2IDVTMTggNS45IDE4IDdDMTggOC4xIDE3LjEgOSAxNiA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVR1bmVWZXJ0aWNhbCA9IFwiTTcgM0g1VjlIN1YzTTE5IDNIMTdWMTNIMTlWM00zIDEzSDVWMjFIN1YxM0g5VjExSDNWMTNNMTUgN0gxM1YzSDExVjdIOVY5SDE1VjdNMTEgMjFIMTNWMTFIMTFWMjFNMTUgMTVWMTdIMTdWMjFIMTlWMTdIMjFWMTVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVuZVZlcnRpY2FsVmFyaWFudCA9IFwiTTggMTIuMTRWMkg2VjEyLjE0QzQuMjggMTIuNTkgMyAxNC4xNCAzIDE2UzQuMjggMTkuNDEgNiAxOS44NlYyMkg4VjE5Ljg2QzkuNzIgMTkuNDEgMTEgMTcuODYgMTEgMTZTOS43MiAxMi41OSA4IDEyLjE0TTcgMTRDOC4xIDE0IDkgMTQuOSA5IDE2UzguMSAxOCA3IDE4QzUuOSAxOCA1IDE3LjEgNSAxNlM1LjkgMTQgNyAxNE0xOCAySDE2VjQuMTRDMTQuMjggNC41OSAxMyA2LjE0IDEzIDhTMTQuMjggMTEuNDEgMTYgMTEuODZWMjJIMThWMTEuODZDMTkuNzIgMTEuNDEgMjEgOS44NiAyMSA4UzE5LjcyIDQuNTkgMTggNC4xNFYyTTE3IDZDMTguMSA2IDE5IDYuOSAxOSA4UzE4LjEgMTAgMTcgMTBDMTUuOSAxMCAxNSA5LjEgMTUgOFMxNS45IDYgMTcgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUdXJrZXkgPSBcIk0xMC41IDE5LjQ0QzkuNzUgMTkuOCA4LjkgMjAgOCAyMEM0LjY5IDIwIDIgMTcuMzEgMiAxNFY5QzIgNS42OSA0LjY5IDMgOCAzTDEwLjUgNy41OEM4LjEgOC44MSA2LjUgMTEgNi41IDEzLjVDNi41IDE2IDguMTEgMTguMiAxMC41IDE5LjQ0TTE2IDE4Ljk0VjIwSDE3QzE3LjU1IDIwIDE4IDIwLjQ1IDE4IDIxUzE3LjU1IDIyIDE3IDIySDE0QzEzLjQ1IDIyIDEzIDIxLjU1IDEzIDIxUzEzLjQ1IDIwIDE0IDIwVjE4Ljk0QzEwLjYxIDE4LjU2IDggMTYuMjcgOCAxMy41QzggMTAuNDYgMTEuMTMgOCAxNSA4QzE1LjE5IDggMTUuMzcgOCAxNS41NiA4QzE0Ljg0IDYuNjMgMTQgNS4yMyAxNCA0QzE0IDIuOSAxNC45IDIgMTYgMkMxOC4yMSAyIDIwIDMuNzkgMjAgNkgxOEMxOCA2IDIyIDkgMjIgMTMuNUMyMiAxNi4yNyAxOS4zOSAxOC41NiAxNiAxOC45NE0xNiA0QzE2IDQuNTUgMTYuNDUgNSAxNyA1UzE4IDQuNTUgMTggNCAxNy41NSAzIDE3IDMgMTYgMy40NSAxNiA0TTE3IDEyQzE3IDEwLjkgMTYuMTEgMTAgMTUgMTBDMTIuNzkgMTAgMTEgMTEuNzkgMTEgMTRIMTVDMTYuMTEgMTQgMTcgMTMuMTEgMTcgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVybnN0aWxlID0gXCJNMjIsMjJIMTZWMTFMMTAsNVYySDIyVjIyTTkuMTcsNi4xN0M4LjQyLDYuOTIgOCw3Ljk0IDgsOUgyVjExSDguNTVDOC45LDExLjYgOS40LDEyLjEgMTAsMTIuNDVWMTlIMTJWMTNDMTMuMDYsMTMgMTQuMDgsMTIuNTggMTQuODMsMTEuODNMOS4xNyw2LjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVR1cm5zdGlsZU91dGxpbmUgPSBcIk0xMy40MSwxMC40MUMxMy4wNCwxMC43OSAxMi41MywxMSAxMiwxMUEyLDIgMCAwLDEgMTAsOUMxMCw4LjQ3IDEwLjIxLDcuOTYgMTAuNTksNy41OUw5LjE3LDYuMTdDOC40Miw2LjkyIDgsNy45NCA4LDlIMlYxMUg4LjU1QzguOSwxMS42IDkuNCwxMi4xIDEwLDEyLjQ1VjE5SDEyVjEzQzEzLjA2LDEzIDE0LjA4LDEyLjU4IDE0LjgzLDExLjgzTDEzLjQxLDEwLjQxTTEwLDJWNUwxNiwxMVYyMkgyMlYySDEwTTIwLDIwSDE4VjEwLjE3TDEyLDQuMTdWNEgyMFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUdXJ0bGUgPSBcIk04LjQ3LDUuOTVDOC45NSw1LjY3IDkuNDcsNS40NCAxMCw1LjI4VjRDMTAsMi45IDEwLjg3LDIgMTEuOTcsMS45N0MxMy4xMywyIDE0LDIuOSAxNCw0VjUuMjhDMTQuNTMsNS40NSAxNS4wNSw1LjY3IDE1LjUzLDUuOTVMMTMuOTMsOC4wN0gxMC4wN0w4LjQ3LDUuOTVNMTksMTJDMTksMTIuNSAxOC45NSwxMi45NSAxOC44NiwxMy40TDE2LjMzLDEyLjYyTDE1LjE0LDguOTZMMTYuNzQsNi44NUMxNy4xNyw3LjI1IDE3LjU1LDcuNyAxNy44OCw4LjJDMTguNjcsOC4xMyAxOS40Myw4LjI1IDIwLjExLDguNTlDMjEuMTQsOS4xMiAyMS44NCwxMC4xMyAyMiwxMS4yOEwxOSwxMS42NEMxOSwxMS43NiAxOSwxMS44OCAxOSwxMk01LDEyQzUsMTEuODggNSwxMS43NiA1LDExLjY1TDIsMTEuMjhDMi4xNiwxMC4xMyAyLjg2LDkuMTIgMy44OSw4LjU5QzQuNTcsOC4yNSA1LjM0LDguMTMgNi4wOCw4LjI2QzYuNDEsNy43NSA2Ljc5LDcuMjggNy4yNCw2Ljg3TDguODYsOC45NUw3LjY3LDEyLjYyTDUuMTQsMTMuNEM1LjA1LDEyLjk1IDUsMTIuNSA1LDEyTTEwLjI0LDkuNTdIMTMuNzZMMTQuODUsMTIuOTNMMTIsMTVMOS4xNSwxMi45M0wxMC4yNCw5LjU3TTguMTMsMTQuMDVMMTEuMjUsMTYuMzFWMTguOTZDMTAuNjgsMTguOSAxMC4xMywxOC43NyA5LjYyLDE4LjU4TDguMzksMjEuMzRDNy4zMywyMC44NyA2LjU3LDE5LjkgNi4zNywxOC43NkM2LjIzLDE4IDYuMzUsMTcuMjQgNi42OSwxNi41NkM2LjI0LDE2LjA0IDUuODcsMTUuNDYgNS41OSwxNC44Mkw4LjEzLDE0LjA1TTE1Ljg3LDE0LjA1TDE4LjQxLDE0LjgyQzE4LjEzLDE1LjQ2IDE3Ljc2LDE2LjA0IDE3LjMxLDE2LjU2QzE3LjY1LDE3LjI0IDE3Ljc3LDE4IDE3LjY0LDE4Ljc2QzE3LjQzLDE5LjkgMTYuNjcsMjAuODcgMTUuNjEsMjEuMzRMMTQuMzksMTguNThDMTMuODYsMTguNzcgMTMuMzMsMTguOTQgMTIuNzUsMTlWMTYuMzFMMTUuODcsMTQuMDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHdpdGNoID0gXCJNMTEuNjQgNS45M0gxMy4wN1YxMC4yMUgxMS42NE0xNS41NyA1LjkzSDE3VjEwLjIxSDE1LjU3TTcgMkwzLjQzIDUuNTdWMTguNDNINy43MVYyMkwxMS4yOSAxOC40M0gxNC4xNEwyMC41NyAxMlYyTTE5LjE0IDExLjI5TDE2LjI5IDE0LjE0SDEzLjQzTDEwLjkzIDE2LjY0VjE0LjE0SDcuNzFWMy40M0gxOS4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUd2l0dGVyID0gXCJNMjIuNDYsNkMyMS42OSw2LjM1IDIwLjg2LDYuNTggMjAsNi42OUMyMC44OCw2LjE2IDIxLjU2LDUuMzIgMjEuODgsNC4zMUMyMS4wNSw0LjgxIDIwLjEzLDUuMTYgMTkuMTYsNS4zNkMxOC4zNyw0LjUgMTcuMjYsNCAxNiw0QzEzLjY1LDQgMTEuNzMsNS45MiAxMS43Myw4LjI5QzExLjczLDguNjMgMTEuNzcsOC45NiAxMS44NCw5LjI3QzguMjgsOS4wOSA1LjExLDcuMzggMyw0Ljc5QzIuNjMsNS40MiAyLjQyLDYuMTYgMi40Miw2Ljk0QzIuNDIsOC40MyAzLjE3LDkuNzUgNC4zMywxMC41QzMuNjIsMTAuNSAyLjk2LDEwLjMgMi4zOCwxMEMyLjM4LDEwIDIuMzgsMTAgMi4zOCwxMC4wM0MyLjM4LDEyLjExIDMuODYsMTMuODUgNS44MiwxNC4yNEM1LjQ2LDE0LjM0IDUuMDgsMTQuMzkgNC42OSwxNC4zOUM0LjQyLDE0LjM5IDQuMTUsMTQuMzYgMy44OSwxNC4zMUM0LjQzLDE2IDYsMTcuMjYgNy44OSwxNy4yOUM2LjQzLDE4LjQ1IDQuNTgsMTkuMTMgMi41NiwxOS4xM0MyLjIyLDE5LjEzIDEuODgsMTkuMTEgMS41NCwxOS4wN0MzLjQ0LDIwLjI5IDUuNywyMSA4LjEyLDIxQzE2LDIxIDIwLjMzLDE0LjQ2IDIwLjMzLDguNzlDMjAuMzMsOC42IDIwLjMzLDguNDIgMjAuMzIsOC4yM0MyMS4xNiw3LjYzIDIxLjg4LDYuODcgMjIuNDYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUd2l0dGVyUmV0d2VldCA9IFwiTTYsNS43NUwxMC4yNSwxMEg3VjE2SDEzLjVMMTUuNSwxOEg3QTIsMiAwIDAsMSA1LDE2VjEwSDEuNzVMNiw1Ljc1TTE4LDE4LjI1TDEzLjc1LDE0SDE3VjhIMTAuNUw4LjUsNkgxN0EyLDIgMCAwLDEgMTksOFYxNEgyMi4yNUwxOCwxOC4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUd29GYWN0b3JBdXRoZW50aWNhdGlvbiA9IFwiTTIsN1Y5SDZWMTFINEEyLDIgMCAwLDAgMiwxM1YxN0g4VjE1SDRWMTNINkEyLDIgMCAwLDAgOCwxMVY5QzgsNy44OSA3LjEsNyA2LDdIMk05LDdWMTdIMTFWMTNIMTRWMTFIMTFWOUgxNVY3SDlNMTgsN0EyLDIgMCAwLDAgMTYsOVYxN0gxOFYxNEgyMFYxN0gyMlY5QTIsMiAwIDAsMCAyMCw3SDE4TTE4LDlIMjBWMTJIMThWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUeXBld3JpdGVyID0gXCJNMjAgMTNIMTZDMTYgMTQuMSAxNS4xIDE1IDE0IDE1SDEwQzguOSAxNSA4IDE0LjEgOCAxM0g0TDIgMThWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDIwQzIxLjEgMjIgMjIgMjEuMSAyMiAyMFYxOE02IDIwQzUuMTEgMjAgNC42NiAxOC45MiA1LjI5IDE4LjI5QzUuOTIgMTcuNjYgNyAxOC4xMSA3IDE5QzcgMTkuNTUgNi41NSAyMCA2IDIwTTEwIDIwQzkuMTEgMjAgOC42NiAxOC45MiA5LjI5IDE4LjI5QzkuOTIgMTcuNjYgMTEgMTguMTEgMTEgMTlDMTEgMTkuNTUgMTAuNTUgMjAgMTAgMjBNMTQgMjBDMTMuMTEgMjAgMTIuNjYgMTguOTIgMTMuMjkgMTguMjlDMTMuOTIgMTcuNjYgMTUgMTguMTEgMTUgMTlDMTUgMTkuNTUgMTQuNTUgMjAgMTQgMjBNMTggMjBDMTcuMTEgMjAgMTYuNjYgMTguOTIgMTcuMjkgMTguMjlDMTcuOTIgMTcuNjYgMTkgMTguMTEgMTkgMTlDMTkgMTkuNTUgMTguNTUgMjAgMTggMjBNMTggMTBWM0g2VjEwSDNWMTJIMjFWMTBNOCA1SDE2VjZIOE04IDdIMTRWOEg4XCI7XHJcbmV4cG9ydCB2YXIgbWRpVWJpc29mdCA9IFwiTTExLjQxLDJDNS4yMSwyIDIuNTMsNy41MyAyLjUzLDcuNTNMMy4zMiw4LjA5QzMuMzIsOC4wOSAyLjMzLDEwIDIuMzUsMTIuNEMyLjM1LDE3LjM0IDYuMjksMjIgMTIuMDcsMjJDMTcuMzMsMjIgMjEuNjcsMTcuNzEgMjEuNjcsMTIuNDFDMjEuNjcsNS41IDE2LjMxLDIgMTEuNDEsMk0xMS40NywzLjY5QzE2LjMxLDMuNjkgMjAuMDcsNy42IDIwLjA3LDEyLjE0QzIwLjA3LDE2Ljk1IDE2LjQ1LDIwLjMgMTIuMjMsMjAuM0M5LjEzLDIwLjMgNi4zMywxNy45NCA2LjMzLDE0LjdDNi4zMywxMi44MiA3LjMyLDExLjUgOC40NCwxMC44Mkw4LjYsMTFDOC4zLDExLjI0IDcuNDMsMTIuNjQgNy40MywxNEM3LjQzLDE2LjU2IDkuNDMsMTguMzMgMTEuOTUsMTguMzNDMTUuMTYsMTguMzMgMTcuMywxNS41OSAxNy4zLDEyLjQxQzE3LjMsOC43MSAxNC4wMyw1LjU3IDEwLjEsNS41N0M3LjkzLDUuNTcgNi4wOSw2LjUgNS4wMyw3LjMzTDQuODYsNy4xOEM2LjI1LDUuMDQgOC42NSwzLjY5IDExLjQ3LDMuNjlNMTAsNy4yM0MxMi41Myw3LjIzIDE0Ljk3LDguODkgMTUuNTksMTEuMjVMMTUuMzYsMTEuMzNDMTQuMjcsOS44OCAxMi40Nyw4LjY4IDEwLjM1LDguNjhDNi40NCw4LjY4IDQuMzksMTIuMjMgNC42OSwxNS4xOUw0LjQ2LDE1LjI4QzQuNDYsMTUuMjggNC4wMywxNC4zMyA0LjAzLDEzLjJDNC4wMyw5LjkzIDYuNzEsNy4yMyAxMCw3LjIzTTExLjY4LDExLjMzQzEyLjg2LDExLjMzIDEzLjgxLDEyLjMgMTMuODEsMTMuNDRDMTMuODEsMTQuMzggMTMuMjEsMTQuOTQgMTMuMjEsMTQuOTRMMTMuOTIsMTUuNDVDMTMuOTIsMTUuNDUgMTMuMjEsMTYuNTcgMTEuNzYsMTYuNTdDMTAuMzcsMTYuNTcgOS4xMywxNS40NCA5LjEzLDEzLjkzQzkuMTMsMTIuMzggMTAuNDcsMTEuMzMgMTEuNjgsMTEuMzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVWJ1bnR1ID0gXCJNMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyTTE0LjM0LDcuNzRDMTQuOTIsOC4wNyAxNS42NSw3Ljg3IDE2LDcuM0MxNi4zMSw2LjczIDE2LjEyLDYgMTUuNTQsNS42NkMxNC45Nyw1LjMzIDE0LjIzLDUuNSAxMy45LDYuMUMxMy41Nyw2LjY3IDEzLjc3LDcuNDEgMTQuMzQsNy43NE0xMS44OCwxNS41QzExLjM1LDE1LjUgMTAuODUsMTUuMzkgMTAuNDEsMTUuMThMOS41NywxNi42OEMxMC4yNywxNyAxMS4wNSwxNy4yMiAxMS44OCwxNy4yMkMxMi4zNywxNy4yMiAxMi44MywxNy4xNSAxMy4yOCwxNy4wM0MxMy4zNiwxNi41NCAxMy42NCwxNi4xIDE0LjEsMTUuODRDMTQuNTYsMTUuNTcgMTUuMDgsMTUuNTUgMTUuNTQsMTUuNzJDMTYuNDMsMTQuODUgMTcsMTMuNjYgMTcuMDksMTIuMzNMMTUuMzgsMTIuMzFDMTUuMjIsMTQuMSAxMy43MiwxNS41IDExLjg4LDE1LjVNMTEuODgsOC41QzEzLjcyLDguNSAxNS4yMiw5Ljg5IDE1LjM4LDExLjY5TDE3LjA5LDExLjY2QzE3LDEwLjM0IDE2LjQzLDkuMTUgMTUuNTQsOC4yOEMxNS4wOCw4LjQ1IDE0LjU1LDguNDIgMTQuMSw4LjE2QzEzLjY0LDcuOSAxMy4zNiw3LjQ1IDEzLjI4LDYuOTdDMTIuODMsNi44NSAxMi4zNyw2Ljc4IDExLjg4LDYuNzhDMTEuMDUsNi43OCAxMC4yNyw2Ljk3IDkuNTcsNy4zMkwxMC40MSw4LjgyQzEwLjg1LDguNjEgMTEuMzUsOC41IDExLjg4LDguNU04LjM3LDEyQzguMzcsMTAuODEgOC45Niw5Ljc2IDkuODYsOS4xM0w5LDcuNjVDNy45NCw4LjM2IDcuMTUsOS40MyA2LjgzLDEwLjY5QzcuMjEsMTEgNy40NSwxMS40NyA3LjQ1LDEyQzcuNDUsMTIuNTMgNy4yMSwxMyA2LjgzLDEzLjMxQzcuMTUsMTQuNTYgNy45NCwxNS42NCA5LDE2LjM0TDkuODYsMTQuODdDOC45NiwxNC4yNCA4LjM3LDEzLjE5IDguMzcsMTJNMTQuMzQsMTYuMjZDMTMuNzcsMTYuNTkgMTMuNTcsMTcuMzIgMTMuOSwxNy45QzE0LjIzLDE4LjQ3IDE0Ljk3LDE4LjY3IDE1LjU0LDE4LjM0QzE2LjEyLDE4IDE2LjMxLDE3LjI3IDE2LDE2LjdDMTUuNjUsMTYuMTIgMTQuOTIsMTUuOTMgMTQuMzQsMTYuMjZNNS43NiwxMC44QzUuMSwxMC44IDQuNTYsMTEuMzQgNC41NiwxMkM0LjU2LDEyLjY2IDUuMSwxMy4yIDUuNzYsMTMuMkM2LjQzLDEzLjIgNi45NiwxMi42NiA2Ljk2LDEyQzYuOTYsMTEuMzQgNi40MywxMC44IDUuNzYsMTAuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlVZm8gPSBcIk0xNS45NCAxMC4yOEMxNS42NiA3Ljg3IDE0IDYgMTIgNlM4LjM0IDcuODcgOC4wNiAxMC4yOEM0LjUgMTAuODIgMiAxMi4wNiAyIDEzLjVDMiAxNS40MyA2LjUgMTcgMTIgMTdTMjIgMTUuNDMgMjIgMTMuNUMyMiAxMi4wNiAxOS41IDEwLjgyIDE1Ljk0IDEwLjI4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVmb091dGxpbmUgPSBcIk0xNyAxMC41NEMxNi43OCA3LjQ0IDE0LjYzIDUgMTIgNVM3LjIyIDcuNDQgNyAxMC41NEM0IDExLjIzIDIgMTIuNSAyIDE0QzIgMTYuMjEgNi41IDE4IDEyIDE4UzIyIDE2LjIxIDIyIDE0QzIyIDEyLjUgMjAgMTEuMjMgMTcgMTAuNTRNMTQuOTMgMTEuODRDMTMuMDMgMTIuMDUgMTAuOTcgMTIuMDUgOS4wNyAxMS44NEM5LjAzIDExLjU2IDkgMTEuMjggOSAxMUM5IDguOCAxMC4zNSA3IDEyIDdTMTUgOC44IDE1IDExQzE1IDExLjI4IDE1IDExLjU2IDE0LjkzIDExLjg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVsdHJhSGlnaERlZmluaXRpb24gPSBcIk05LDdIMTFWMTFIMTNWN0gxNVYxN0gxM1YxM0gxMVYxN0g5VjdNMTcsN0gyMEEzLDMgMCAwLDEgMjMsMTBWMTRBMywzIDAgMCwxIDIwLDE3SDE3VjdNMjAsMTVBMSwxIDAgMCwwIDIxLDE0VjEwQTEsMSAwIDAsMCAyMCw5SDE5VjE1SDIwTTcsMTRBMywzIDAgMCwxIDQsMTdBMywzIDAgMCwxIDEsMTRWN0gzVjE0QTEsMSAwIDAsMCA0LDE1QTEsMSAwIDAsMCA1LDE0VjdIN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlVbWJyYWNvID0gXCJNOC42LDguNkw3LjE3LDguMzhDNi41LDExLjY3IDYuNDYsMTQuMjQgNy42MSwxNS41QzguNiwxNi42MSAxMS44OSwxNi42MSAxMS44OSwxNi42MUMxMS44OSwxNi42MSAxNS4yOSwxNi42MSAxNi4yOCwxNS41QzE3LjQzLDE0LjI0IDE3LjM4LDExLjY3IDE2LjcyLDguMzhMMTUuMjksOC42QzE1LjI5LDguNiAxNi41NCwxMy44OCAxNC42OSwxNC42OUMxMy44MSwxNS4wNyAxMS44OSwxNS4wNyAxMS44OSwxNS4wN0MxMS44OSwxNS4wNyAxMC4wOCwxNS4wNyA5LjIsMTQuNjlDNy4zNSwxMy44OCA4LjYsOC42IDguNiw4LjZNMTIsM0E5LDkgMCAwLDEgMjEsMTJBOSw5IDAgMCwxIDEyLDIxQTksOSAwIDAsMSAzLDEyQTksOSAwIDAsMSAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVVtYnJlbGxhID0gXCJNMTIsMkE5LDkgMCAwLDEgMjEsMTFIMTNWMTlBMywzIDAgMCwxIDEwLDIyQTMsMyAwIDAsMSA3LDE5VjE4SDlWMTlBMSwxIDAgMCwwIDEwLDIwQTEsMSAwIDAsMCAxMSwxOVYxMUgzQTksOSAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVVtYnJlbGxhQ2xvc2VkID0gXCJNMTIgMkMxMS42IDIgMTEuMyAyLjIgMTEuMSAyLjZMNi41IDE1SDExVjE5QzExIDE5LjYgMTAuNiAyMCAxMCAyMEM5LjQgMjAgOSAxOS42IDkgMTlWMThIN1YxOUM3IDIwLjcgOC4zIDIyIDEwIDIyUzEzIDIwLjcgMTMgMTlWMTVIMTcuNUwxMi45IDIuNkMxMi43IDIuMiAxMi40IDIgMTIgMlpcIjtcclxuZXhwb3J0IHZhciBtZGlVbWJyZWxsYUNsb3NlZE91dGxpbmUgPSBcIk0xMiAyQzEyLjQgMiAxMi44IDIuMiAxMi45IDIuNkwxNy41IDE1SDEzVjE5QzEzIDIwLjcgMTEuNyAyMiAxMCAyMlM3IDIwLjcgNyAxOVYxOEg5VjE5QzkgMTkuNiA5LjQgMjAgMTAgMjBDMTAuNiAyMCAxMSAxOS42IDExIDE5VjE1SDYuNUwxMS4xIDIuNkMxMS4yIDIuMiAxMS42IDIgMTIgMk0xMiA1LjlMOS40IDEzSDE0LjdMMTIgNS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVtYnJlbGxhQ2xvc2VkVmFyaWFudCA9IFwiTTE1IDdMMTMgNlYzLjVDMTMgMy4yIDEzLjIgMyAxMy41IDNTMTQgMy4yIDE0IDMuNVY0SDE2VjMuNUMxNiAyLjEgMTQuOSAxIDEzLjUgMVMxMSAyLjEgMTEgMy41VjZMOSA3TDYgNkwxMS4xIDIxLjNDMTEuNCAyMi4yIDEyLjcgMjIuMiAxMyAyMS4zQzE0LjYgMTYuMiAxOCA2IDE4IDZMMTUgN00xMSAxNUw5IDguOUw5LjcgOS4xTDExIDguMVYxNU0xMyA4LjFMMTQuMyA5LjFMMTUgOC45TDEzIDE1VjguMVpcIjtcclxuZXhwb3J0IHZhciBtZGlVbWJyZWxsYU91dGxpbmUgPSBcIk0xMiw0QzguOSw0IDYuMTgsNi4wMyA1LjMsOUgxOC43QzE3LjgyLDYuMDQgMTUuMDksNCAxMiw0TTEyLDJBOSw5IDAgMCwxIDIxLDExSDEzVjE5QTMsMyAwIDAsMSAxMCwyMkEzLDMgMCAwLDEgNywxOVYxOEg5VjE5QTEsMSAwIDAsMCAxMCwyMEExLDEgMCAwLDAgMTEsMTlWMTFIM0E5LDkgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlVbmRvID0gXCJNMTIuNSw4QzkuODUsOCA3LjQ1LDkgNS42LDEwLjZMMiw3VjE2SDExTDcuMzgsMTIuMzhDOC43NywxMS4yMiAxMC41NCwxMC41IDEyLjUsMTAuNUMxNi4wNCwxMC41IDE5LjA1LDEyLjgxIDIwLjEsMTZMMjIuNDcsMTUuMjJDMjEuMDgsMTEuMDMgMTcuMTUsOCAxMi41LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5kb1ZhcmlhbnQgPSBcIk0xMy41LDdBNi41LDYuNSAwIDAsMSAyMCwxMy41QTYuNSw2LjUgMCAwLDEgMTMuNSwyMEgxMFYxOEgxMy41QzE2LDE4IDE4LDE2IDE4LDEzLjVDMTgsMTEgMTYsOSAxMy41LDlINy44M0wxMC45MSwxMi4wOUw5LjUsMTMuNUw0LDhMOS41LDIuNUwxMC45MiwzLjkxTDcuODMsN0gxMy41TTYsMThIOFYyMEg2VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVuZm9sZExlc3NIb3Jpem9udGFsID0gXCJNMTYuNTksNS40MUwxNS4xNyw0TDEyLDcuMTdMOC44Myw0TDcuNDEsNS40MUwxMiwxME03LjQxLDE4LjU5TDguODMsMjBMMTIsMTYuODNMMTUuMTcsMjBMMTYuNTgsMTguNTlMMTIsMTRMNy40MSwxOC41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlVbmZvbGRMZXNzVmVydGljYWwgPSBcIk01LjQxLDcuNDFMMTAsMTJMNS40MSwxNi41OUw0LDE1LjE3TDcuMTcsMTJMNCw4LjgzTDUuNDEsNy40MU0xOC41OSwxNi41OUwxNCwxMkwxOC41OSw3LjQyTDIwLDguODNMMTYuODMsMTJMMjAsMTUuMTdMMTguNTksMTYuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5mb2xkTW9yZUhvcml6b250YWwgPSBcIk0xMiwxOC4xN0w4LjgzLDE1TDcuNDIsMTYuNDFMMTIsMjFMMTYuNTksMTYuNDFMMTUuMTcsMTVNMTIsNS44M0wxNS4xNyw5TDE2LjU4LDcuNTlMMTIsM0w3LjQxLDcuNTlMOC44Myw5TDEyLDUuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5mb2xkTW9yZVZlcnRpY2FsID0gXCJNMTguMTcsMTJMMTUsOC44M0wxNi40MSw3LjQxTDIxLDEyTDE2LjQxLDE2LjU4TDE1LDE1LjE3TDE4LjE3LDEyTTUuODMsMTJMOSwxNS4xN0w3LjU5LDE2LjU5TDMsMTJMNy41OSw3LjQyTDksOC44M0w1LjgzLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVVuZ3JvdXAgPSBcIk0yLDJINlYzSDEzVjJIMTdWNkgxNlY5SDE4VjhIMjJWMTJIMjFWMThIMjJWMjJIMThWMjFIMTJWMjJIOFYxOEg5VjE2SDZWMTdIMlYxM0gzVjZIMlYyTTE4LDEyVjExSDE2VjEzSDE3VjE3SDEzVjE2SDExVjE4SDEyVjE5SDE4VjE4SDE5VjEySDE4TTEzLDZWNUg2VjZINVYxM0g2VjE0SDlWMTJIOFY4SDEyVjlIMTRWNkgxM00xMiwxMkgxMVYxNEgxM1YxM0gxNFYxMUgxMlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlVbmljb2RlID0gXCJNMjIgNkExLjQ2IDEuNDYgMCAwIDEgMjAuNTQgNy40NEExLjQ2IDEuNDYgMCAwIDEgMTkuMDkgNkExLjQ2IDEuNDYgMCAwIDEgMjAuNTQgNC41QTEuNDYgMS40NiAwIDAgMSAyMiA2TTIxLjU2IDguODZIMTkuNTNDMTkuNCA4Ljg1IDE5LjM0IDguOTEgMTkuMzQgOVYxMi41OUMxOS4zNCAxMy4wOCAxOS4zNCAxMy41IDE5LjM1IDEzLjg2TDE5LjM3IDE0Ljc2QzE5LjM4IDE1IDE5LjM5IDE1LjIxIDE5LjM5IDE1LjM5QzE5LjQgMTUuNTYgMTkuNCAxNS43MiAxOS40IDE1Ljg2SDE5LjM4QzE5LjI2IDE1LjYgMTkuMDcgMTUuMjIgMTguODIgMTQuNzRDMTguNTggMTQuMjcgMTguMjkgMTMuNzIgMTcuOTcgMTMuMTFDMTcuNjQgMTIuNSAxNy4yOSAxMS44NCAxNi45MiAxMS4xNUMxNi41NSAxMC40NyAxNi4xOCA5Ljc4IDE1LjgxIDkuMTFDMTUuNDUgOC40MyAxNS4wOSA3Ljc4IDE0Ljc1IDcuMTZDMTQuNCA2LjU0IDE0LjEgNiAxMy44NSA1LjU0QzEzLjgyIDUuNSAxMy43OSA1LjQ0IDEzLjc3IDUuNDJDMTMuNzQgNS40IDEzLjY4IDUuMzkgMTMuNiA1LjM5SDEwLjYyQzEwLjUgNS4zOSAxMC40NyA1LjQ0IDEwLjQ3IDUuNTRIMTAuNUMxMC40NyA1LjU2IDEwLjQ3IDUuNTcgMTAuNDcgNS41OFYxMy44NEMxMC40NyAxNC41IDEwLjQgMTUgMTAuMjUgMTUuNDVDMTAuMSAxNS44OCA5LjkgMTYuMjMgOS42NCAxNi41QzkuMzggMTYuNzUgOS4wNyAxNi45MyA4LjcyIDE3LjA1QzguMzYgMTcuMTYgOCAxNy4yMiA3LjU2IDE3LjIyQzYuNTQgMTcuMjIgNS43OSAxNi45MSA1LjMgMTYuMzFDNC44IDE1LjcgNC41NiAxNC44OSA0LjU2IDEzLjg4VjUuNTZDNC41NiA1LjQ1IDQuNSA1LjM5IDQuMzkgNS4zOUgyLjE3QzIuMDYgNS4zOSAyIDUuNDUgMiA1LjU4VjE0LjA3QzIgMTUgMi4xMyAxNS43OCAyLjM4IDE2LjQ2QzIuNjMgMTcuMTMgMyAxNy42OSAzLjUgMTguMTRDMy45NiAxOC41OCA0LjUzIDE4LjkyIDUuMjEgMTkuMTRDNS44OSAxOS4zNiA2LjY0IDE5LjUgNy40NyAxOS41QzguMjQgMTkuNSA4Ljk3IDE5LjM4IDkuNjUgMTkuMTdDMTAuMzQgMTguOTcgMTAuOTMgMTguNjQgMTEuNDIgMTguMkMxMS45MSAxNy43NSAxMi4zIDE3LjE4IDEyLjU5IDE2LjVDMTIuODggMTUuNzkgMTMuMDMgMTQuOTUgMTMuMDMgMTMuOTZWOC42MkMxMy4xNCA4Ljg2IDEzLjI4IDkuMTUgMTMuNDQgOS40N0MxMy43MyAxMC4wNSAxNC4wNSAxMC42OCAxNC40MiAxMS4zOEMxNC43OSAxMi4wOCAxNS4xNyAxMi44IDE1LjU4IDEzLjU2QzE2IDE0LjMyIDE2LjM5IDE1LjA2IDE2Ljc3IDE1Ljc2QzE3LjE2IDE2LjQ2IDE3LjUgMTcuMTEgMTcuODMgMTcuN0MxOC4xNSAxOC4yOSAxOC40IDE4Ljc2IDE4LjU4IDE5LjEyQzE4LjYzIDE5LjIyIDE4LjczIDE5LjI3IDE4Ljg1IDE5LjI3SDIxLjU0QzIxLjY4IDE5LjI3IDIxLjc1IDE5LjIgMjEuNzUgMTkuMDhWOS4wNUMyMS43NSA4LjkyIDIxLjY4IDguODUgMjEuNTYgOC44NVpcIjtcclxuZXhwb3J0IHZhciBtZGlVbmljb3JuID0gXCJNMjIgNUwyMS4xMSA2LjM0QzIxLjY1IDYuNyAyMiA3LjMxIDIyIDhWMTEuNUwyMC41IDEyTDE4Ljk2IDkuNTRDMTguODMgOS4zMyAxOC41IDkuNDIgMTguNSA5LjY3VjEzLjI1QzE4LjUgMTQuMjMgMTguMTEgMTUuMTEgMTcuNSAxNS43OFYyMkgxNVYxN0MxNC45MiAxNyAxNC44NCAxNyAxNC43NSAxN0MxNC41NCAxNyAxNC4zMyAxNi45NyAxNC4xMyAxNi45NEw5LjQ1IDE2LjE2TDguNTcgMTguMTJMOS41NCAyMkg2Ljk2TDYuMDQgMTguM0M1Ljk3IDE4LjAzIDYgMTcuNzQgNi4xMSAxNy41TDcgMTUuNUM2LjEyIDE0LjkyIDUuNTMgMTMuOTQgNS41IDEyLjgxQzUuNDYgMTIuOTYgNS40NCAxMy4xOCA1LjQ3IDEzLjVDNS41IDEzLjk0IDUuNjEgMTQuNTkgNS41NCAxNS4zMUM1LjUgMTYuMDMgNS4xOCAxNi43NyA0Ljc2IDE3LjI2QzQuMzIgMTcuNzUgMy44NSAxOC4wOSAzLjM1IDE4LjM1TDIuNjUgMTcuNjVDMi44NCAxNy4xOCAzLjAzIDE2Ljc2IDMuMDcgMTYuMzdDMy4xMyAxNiAzLjA2IDE1LjcgMi45NSAxNS40M0wyLjQyIDE0LjNDMi4yMSAxMy43OSAxLjk1IDEzLjA1IDIgMTIuMThDMi4wMyAxMS4zMyAyLjUgMTAuMjIgMy4zOSA5LjYxQzQuMjkgOSA1LjI2IDguOTEgNi4wNSA5LjA4QzYuNTUgOS4xOCA3LjA2IDkuNDIgNy41IDkuNzZDNy44NyA5LjU5IDguMyA5LjUgOC43NSA5LjVIMTQuNVY5QzE0LjUgNi43OSAxNi4yOSA1IDE4LjUgNUwyMiAyTDIxIDVIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5pY29yblZhcmlhbnQgPSBcIk0yMCAxMlYxOUwxNyAyMEwxNCAxNS4zM0MxMy43MSAxNC44OSAxMyAxNS4xNCAxMy4wOCAxNS42N0wxNCAyM0w0IDE4TDQuOTYgMTIuNzVDNS41NiA5LjQyIDguNDYgNyAxMS44NCA3SDEzTDE5IDFMMTcgN0gyMEwxOC40MiA5LjM3QzE5LjM2IDkuODggMjAgMTAuODYgMjAgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5pY3ljbGUgPSBcIk0xMyA5LjA5VjVIMTRDMTQuNTUgNSAxNSA0LjU1IDE1IDRTMTQuNTUgMyAxNCAzSDEwQzkuNDUgMyA5IDMuNDUgOSA0UzkuNDUgNSAxMCA1SDExVjkuMDlDOC4xNiA5LjU3IDYgMTIuMDMgNiAxNUM2IDE4LjMxIDguNjkgMjEgMTIgMjFTMTggMTguMzEgMTggMTVDMTggMTIuMDMgMTUuODQgOS41NyAxMyA5LjA5TTEyIDE5QzkuNzkgMTkgOCAxNy4yMSA4IDE1QzggMTMuMTQgOS4yOCAxMS41OSAxMSAxMS4xNFYxNkgxM1YxMS4xNEMxNC43MiAxMS41OSAxNiAxMy4xNCAxNiAxNUMxNiAxNy4yMSAxNC4yMSAxOSAxMiAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlVbml0eSA9IFwiTTEwLjExLDE3SDcuNUwyLjU5LDEyTDcuNSw3SDEwLjExTDExLjQyLDQuNzRMMTguMjEsM0wyMC4wOCw5Ljc0TDE4Ljc3LDEyTDIwLjA4LDE0LjI2TDE4LjIxLDIxTDExLjQyLDE5LjI2TDEwLjExLDE3TTEwLjI1LDE2Ljc1TDE1LjM4LDE4LjEzTDEyLjQyLDEzSDYuNUwxMC4yNSwxNi43NU0xNy4xMiwxNy4xM0wxOC41LDEyTDE3LjEyLDYuODdMMTQuMTUsMTJMMTcuMTIsMTcuMTNNMTAuMjUsNy4yNUw2LjUsMTFIMTIuNDJMMTUuMzgsNS44N0wxMC4yNSw3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVucmVhbCA9IFwiTTIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMkExMCwxMCAwIDAsMCAyLDEyTTUuMjQsMTguNzZDMy40MywxNi45NSAyLjQ0LDE0LjU1IDIuNDQsMTJDMi40NCw5LjQ1IDMuNDMsNy4wNSA1LjI0LDUuMjRDNy4wNSwzLjQzIDkuNDUsMi40NCAxMiwyLjQ0QzE0LjU1LDIuNDQgMTYuOTUsMy40MyAxOC43Niw1LjI0QzIwLjU3LDcuMDUgMjEuNTYsOS40NSAyMS41NiwxMkMyMS41NiwxNC41NSAyMC41NywxNi45NSAxOC43NiwxOC43NkMxNi45NSwyMC41NyAxNC41NSwyMS41NiAxMiwyMS41NkM5LjQ1LDIxLjU2IDcuMDUsMjAuNTcgNS4yNCwxOC43Nk02LjM1LDkuNUM0LjM0LDExLjc5IDQuNzMsMTMuNjggNC43MywxMy42OEM0LjczLDEzLjY4IDUuMjgsMTIuMzggNi42MSwxMUM3LjI1LDEwLjM3IDcuNzIsMTAuMTUgOC4wNCwxMC4xNUM4LjQsMTAuMTUgOC41NywxMC40MSA4LjU3LDEwLjY1VjE1LjI5QzguNTcsMTUuNzUgOC4yNywxNS44NSA4LDE1Ljg0QzcuNzcsMTUuODQgNy41NSwxNS43NiA3LjU1LDE1Ljc2QzguOTIsMTcuNzMgMTIuMTksMTggMTIuMTksMThMMTMuNjMsMTYuNUgxMy42N0wxNSwxNy42M0MxNy4zOSwxNi4yMSAxOC41NSwxMy41OCAxOC41NSwxMy41OEMxNy41LDE0LjcgMTYuNzksMTQuOTcgMTYuMzksMTQuOTZDMTYuMDMsMTQuOTYgMTUuODgsMTQuNzUgMTUuODgsMTQuNzVDMTUuODcsMTQuNjUgMTUuODIsOC45IDE1Ljg5LDguOUMxNi4zMSw4LjEzIDE3LjYzLDYuNTYgMTcuNjMsNi41NkMxNS4xNiw3LjA1IDEzLjgxLDguNjYgMTMuODEsOC42NkMxMy40MSw4LjM1IDEyLjU5LDguNCAxMi41OSw4LjRDMTIuOTcsOC42MSAxMy4zNSw5LjIxIDEzLjM1LDkuNzJWMTQuNjVDMTMuMzUsMTQuNjUgMTIuNSwxNS4zOCAxMS44OCwxNS4zOEMxMS41LDE1LjM4IDExLjI3LDE1LjE3IDExLjE0LDE1QzExLjA1LDE0Ljg4IDExLDE0Ljc5IDExLDE0Ljc5VjguNjlDMTAuOTMsOC43NSAxMC44Miw4LjggMTAuNzEsOC44QzEwLjU3LDguNzkgMTAuNDMsOC43MyAxMC4zNCw4LjUzQzEwLjI2LDguMzggMTAuMjIsOC4xNSAxMC4yMiw3LjgzQzEwLjIyLDYuNyAxMS41LDUuOTYgMTEuNSw1Ljk2QzkuODcsNi4zOSA4LjM2LDcuMjIgNi4zNSw5LjVcIjtcclxuZXhwb3J0IHZhciBtZGlVbnRhcHBkID0gXCJNMTQuNDEsNEMxNC40MSw0IDE0Ljk0LDQuMzkgMTQuOTcsNC43MUMxNC45Nyw0LjgxIDE0LjczLDQuODUgMTQuNjgsNC45M0MxNC42Miw1IDE0LjcsNS4xNSAxNC42NSw1LjIxQzE0LjU5LDUuMjYgMTQuNSw1LjI2IDE0LjQxLDUuNDFDMTQuMzMsNS41NiAxMi4wNywxMC4wOSAxMS43MywxMC42M0MxMS41OSwxMS4wMyAxMS40NywxMi40NiAxMS4zNywxMi42NkMxMS4yNiwxMi44NSA2LjM0LDE5Ljg0IDYuMTYsMjAuMDVDNS42NywyMC42MyA0LjMxLDIwLjMgMy4yOCwxOS41NkMyLjMsMTguODYgMS43NCwxNy43IDIuMTEsMTcuMTZDMi4yNywxNi45MyA3LjE1LDkuOTIgNy4yOSw5Ljc1QzcuNDQsOS41OCA4Ljc1LDkgOS4wNyw4LjcxQzkuNDcsOC4yMiAxMi45Niw0LjU0IDEzLjA3LDQuNDJDMTMuMTgsNC4zIDEzLjE1LDQuMiAxMy4xOCw0LjEzQzEzLjIyLDQuMDYgMTMuMzgsNC4wOCAxMy40Myw0QzEzLjUsMy45MyAxMy4zOSwzLjcxIDEzLjUsMy42OEMxMy41OSwzLjY0IDEzLjk2LDMuNjcgMTQuNDEsNE0xMC44NSw0LjQ0TDExLjc0LDUuMzdMMTAuMjYsNi45NEw5LjQ2LDUuMzdDOS4zOCw1LjIyIDkuMjgsNS4yMiA5LjIyLDUuMTdDOS4xNyw1LjExIDkuMjQsNC45NyA5LjE5LDQuODlDOS4xMyw0LjgxIDguOSw0LjgzIDguOSw0LjczQzguOSw0LjYyIDkuMDUsNC4yOCA5LjUsMy45NkM5LjUsMy45NiAxMC4wNiwzLjYgMTAuMzcsMy42OEMxMC40NywzLjcxIDEwLjQzLDMuOTUgMTAuNSw0QzEwLjU0LDQuMSAxMC43LDQuMDggMTAuNzMsNC4xNUMxMC43Nyw0LjIxIDEwLjczLDQuMzIgMTAuODUsNC40NE0yMS45MiwxNy4xNUMyMi4yOSwxNy44MSAyMS41MywxOSAyMC41LDE5LjdDMTkuNSwyMC4zOSAxOC4yMSwyMC41NCAxNy44MywyMEMxNy42NiwxOS43OCAxMi42NywxMi44MiAxMi41NiwxMi42MkMxMi40NSwxMi40MyAxMi4zMiwxMSAxMi4xOCwxMC41OUwxMi4xNSwxMC41NUMxMi40NSwxMCAxMy4wNyw4Ljc3IDEzLjczLDcuNDdDMTQuMyw4LjA2IDE0Ljc1LDguNTYgMTQuODgsOC43MkMxNS4yMSw5IDE2LjUzLDkuNTggMTYuNjgsOS43NUMxNi44Miw5LjkyIDIxLjc4LDE2LjkxIDIxLjkyLDE3LjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVwZGF0ZSA9IFwiTTIxLDEwLjEySDE0LjIyTDE2Ljk2LDcuM0MxNC4yMyw0LjYgOS44MSw0LjUgNy4wOCw3LjJDNC4zNSw5LjkxIDQuMzUsMTQuMjggNy4wOCwxN0M5LjgxLDE5LjcgMTQuMjMsMTkuNyAxNi45NiwxN0MxOC4zMiwxNS42NSAxOSwxNC4wOCAxOSwxMi4xSDIxQzIxLDE0LjA4IDIwLjEyLDE2LjY1IDE4LjM2LDE4LjM5QzE0Ljg1LDIxLjg3IDkuMTUsMjEuODcgNS42NCwxOC4zOUMyLjE0LDE0LjkyIDIuMTEsOS4yOCA1LjYyLDUuODFDOS4xMywyLjM0IDE0Ljc2LDIuMzQgMTguMjcsNS44MUwyMSwzVjEwLjEyTTEyLjUsOFYxMi4yNUwxNiwxNC4zM0wxNS4yOCwxNS41NEwxMSwxM1Y4SDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkID0gXCJNOSwxNlYxMEg1TDEyLDNMMTksMTBIMTVWMTZIOU01LDIwVjE4SDE5VjIwSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkTG9jayA9IFwiTTIyIDIySDE3QzE2LjUgMjIgMTYgMjEuNSAxNiAyMVYxN0MxNiAxNi41IDE2LjUgMTYgMTcgMTZWMTQuNUMxNyAxMy4xIDE4LjEgMTIgMTkuNSAxMkMyMC45IDEyIDIyIDEzLjEgMjIgMTQuNVYxNkMyMi41IDE2IDIzIDE2LjUgMjMgMTdWMjFDMjMgMjEuNSAyMi41IDIyIDIyIDIyTTE0IDIwSDVWMThIMTRWMjBNMjEgMTZWMTQuNUMyMSAxMy43IDIwLjMgMTMgMTkuNSAxM0MxOC43IDEzIDE4IDEzLjcgMTggMTQuNVYxNkgyMU0xNSAxNkg5VjEwSDVMMTIgM0wxOSAxMEgxNVYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlVcGxvYWRMb2NrT3V0bGluZSA9IFwiTTIyIDIySDE3QzE2LjUgMjIgMTYgMjEuNSAxNiAyMVYxN0MxNiAxNi41IDE2LjUgMTYgMTcgMTZWMTQuNUMxNyAxMy4xIDE4LjEgMTIgMTkuNSAxMkMyMC45IDEyIDIyIDEzLjEgMjIgMTQuNVYxNkMyMi41IDE2IDIzIDE2LjUgMjMgMTdWMjFDMjMgMjEuNSAyMi41IDIyIDIyIDIyTTUgMThIMTRWMjBINVYxOE0yMSAxNlYxNC41QzIxIDEzLjcgMjAuMyAxMyAxOS41IDEzQzE4LjcgMTMgMTggMTMuNyAxOCAxNC41VjE2SDIxTTkgMTZWMTBINUwxMiAzTDE5IDEwSDE1VjE2SDlNOS44MyA4SDExVjE0SDEzVjhIMTQuMTdMMTIgNS44M0w5LjgzIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkTXVsdGlwbGUgPSBcIk05LDE0VjhINUwxMiwxTDE5LDhIMTVWMTRIOU01LDE4VjE2SDE5VjE4SDVNMTksMjBINVYyMkgxOVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlVcGxvYWROZXR3b3JrID0gXCJNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdNMTIsNS41TDcuNSwxMEgxMVYxNEgxM1YxMEgxNi41TDEyLDUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlVcGxvYWROZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdNMTIsNkw4LDEwSDExVjE0SDEzVjEwSDE2TDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkT2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w2LjU2IDguNDVMNSAxMEg4LjExTDkgMTAuODlWMTZIMTQuMTFMMTYuMTEgMThINVYyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xNSAxMEgxOUwxMiAzTDkuMSA1LjlMMTUgMTEuOFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlVcGxvYWRPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w2LjU2IDguNDVMNSAxMEg4LjExTDkgMTAuODlWMTZIMTQuMTFMMTYuMTEgMThINVYyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xMSAxNFYxMi44OUwxMi4xMSAxNEgxMU0xMiA1LjhMMTQuMiA4SDEzVjkuOEwxNSAxMS44VjEwSDE5TDEyIDNMOS4xIDUuOUwxMC41IDcuM0wxMiA1LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkT3V0bGluZSA9IFwiTTksMTBWMTZIMTVWMTBIMTlMMTIsM0w1LDEwSDlNMTIsNS44TDE0LjIsOEgxM1YxNEgxMVY4SDkuOEwxMiw1LjhNMTksMThINVYyMEgxOVYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlVc2IgPSBcIk0xNSw3VjExSDE2VjEzSDEzVjVIMTVMMTIsMUw5LDVIMTFWMTNIOFYxMC45M0M4LjcsMTAuNTYgOS4yLDkuODUgOS4yLDlDOS4yLDcuNzggOC4yMSw2LjggNyw2LjhDNS43OCw2LjggNC44LDcuNzggNC44LDlDNC44LDkuODUgNS4zLDEwLjU2IDYsMTAuOTNWMTNBMiwyIDAgMCwwIDgsMTVIMTFWMTguMDVDMTAuMjksMTguNDEgOS44LDE5LjE1IDkuOCwyMEEyLjIsMi4yIDAgMCwwIDEyLDIyLjJBMi4yLDIuMiAwIDAsMCAxNC4yLDIwQzE0LjIsMTkuMTUgMTMuNzEsMTguNDEgMTMsMTguMDVWMTVIMTZBMiwyIDAgMCwwIDE4LDEzVjExSDE5VjdIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXNiRmxhc2hEcml2ZSA9IFwiTTggMTVDOC41NSAxNSA5IDE1LjQ1IDkgMTZDOSAxNi41NSA4LjU1IDE3IDggMTdDNy40NSAxNyA3IDE2LjU1IDcgMTZDNyAxNS40NSA3LjQ1IDE1IDggMTVNMTUuMDcgNC42OUwxNi41IDYuMUwxNS4wNyA3LjVMMTMuNjYgNi4xTDE1LjA3IDQuNjlNMTcuOSA3LjVMMTkuMzEgOC45M0wxNy45IDEwLjM0TDE2LjUgOC45M0wxNy45IDcuNU04IDEzQzYuMzQgMTMgNSAxNC4zNCA1IDE2QzUgMTcuNjYgNi4zNCAxOSA4IDE5QzkuNjYgMTkgMTEgMTcuNjYgMTEgMTZDMTEgMTQuMzQgOS42NiAxMyA4IDEzTTkuNzcgNC4zM0wxMC41IDUuMDhMMTQuMjkgMS4yOUMxNC40NyAxLjExIDE0LjcyIDEgMTUgMUMxNS4yOCAxIDE1LjUzIDEuMTEgMTUuNzEgMS4yOUwyMi43OCA4LjM2TDIyLjc4IDguMzdDMjIuOTIgOC41NCAyMyA4Ljc2IDIzIDlDMjMgOS4zIDIyLjg3IDkuNTcgMjIuNjYgOS43NkwyMi42NiA5Ljc2TDE4LjkzIDEzLjVMMTkuNjcgMTQuMjNMMTIuOTUgMjAuOTVDMTEuNjggMjIuMjIgOS45MyAyMyA4IDIzQzQuMTMgMjMgMSAxOS44NyAxIDE2QzEgMTQuMDcgMS43OCAxMi4zMiAzLjA1IDExLjA1TDkuNzcgNC4zM00yMC41OSA5TDE1IDMuNDFMMTEuOTMgNi41TDE3LjUgMTIuMDhMMjAuNTkgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlVc2JGbGFzaERyaXZlT3V0bGluZSA9IFwiTTggMTNDOS42NiAxMyAxMSAxNC4zNCAxMSAxNkMxMSAxNy42NiA5LjY2IDE5IDggMTlDNi4zNCAxOSA1IDE3LjY2IDUgMTZDNSAxNC4zNCA2LjM0IDEzIDggMTNNOCAxNUM3LjQ1IDE1IDcgMTUuNDUgNyAxNkM3IDE2LjU1IDcuNDUgMTcgOCAxN0M4LjU1IDE3IDkgMTYuNTUgOSAxNkM5IDE1LjQ1IDguNTUgMTUgOCAxNU05Ljc3IDQuMzNMMTAuNSA1LjA4TDE0LjI5IDEuMjlDMTQuNDcgMS4xMSAxNC43MiAxIDE1IDFDMTUuMjggMSAxNS41MyAxLjExIDE1LjcxIDEuMjlMMjIuNzggOC4zNkwyMi43OCA4LjM3QzIyLjkyIDguNTQgMjMgOC43NiAyMyA5QzIzIDkuMyAyMi44NyA5LjU3IDIyLjY2IDkuNzZMMjIuNjYgOS43NkwxOC45MyAxMy41TDE5LjY3IDE0LjIzTDEyLjk1IDIwLjk1QzExLjY4IDIyLjIyIDkuOTMgMjMgOCAyM0M0LjEzIDIzIDEgMTkuODcgMSAxNkMxIDE0LjA3IDEuNzggMTIuMzIgMy4wNSAxMS4wNUw5Ljc3IDQuMzNNMTEuNTQgMTkuNTRMMTYuODQgMTQuMjNMOS43NyA3LjE2TDQuNDYgMTIuNDZDMy41NiAxMy4zNyAzIDE0LjYyIDMgMTZDMyAxOC43NiA1LjI0IDIxIDggMjFDOS4zOCAyMSAxMC42MyAyMC40NCAxMS41NCAxOS41NE0xNS4wNyA0LjY5TDE2LjUgNi4xTDE1LjA3IDcuNUwxMy42NiA2LjFMMTUuMDcgNC42OU0xNy45IDcuNUwxOS4zMSA4LjkzTDE3LjkgMTAuMzRMMTYuNSA4LjkzTDE3LjkgNy41TTIwLjU5IDlMMTUgMy40MUwxMS45MyA2LjVMMTcuNSAxMi4wOEwyMC41OSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVzYlBvcnQgPSBcIk04IDJDNi45IDIgNiAyLjkgNiA0VjEySDVWMTZMOSAyMFYyMkgxNVYyMEwxOSAxNlYxMkgxOFY0QzE4IDIuOSAxNy4xMSAyIDE2IDJNOCA0SDE2VjEySDhNOSA3VjlIMTFWN00xMyA3VjlIMTVWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWYWx2ZSA9IFwiTTQgMjJIMlYySDRNMjIgMkgyMFYyMkgyMk0xNy4yNCA1LjM0TDEzLjI0IDkuMzRBMyAzIDAgMCAwIDkuMjQgMTMuMzRMNS4yNCAxNy4zNEw2LjY2IDE4Ljc2TDEwLjY2IDE0Ljc2QTMgMyAwIDAgMCAxNC42NiAxMC43NkwxOC42NiA2Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZhbHZlQ2xvc2VkID0gXCJNMjIgMlYyMkgyMFYxM0gxNC44MkEzIDMgMCAwIDEgOS4xOCAxM0g0VjIySDJWMkg0VjExSDkuMThBMyAzIDAgMCAxIDE0LjgyIDExSDIwVjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmFsdmVPcGVuID0gXCJNNCAyMkgyVjJINE0yMiAySDIwVjIySDIyTTExIDRWOS4xOEEzIDMgMCAwIDAgMTEgMTQuODJWMjBIMTNWMTQuODJBMyAzIDAgMCAwIDEzIDkuMThWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlWYW5QYXNzZW5nZXIgPSBcIk0zLDdDMS44OSw3IDEsNy44OSAxLDlWMTdIM0EzLDMgMCAwLDAgNiwyMEEzLDMgMCAwLDAgOSwxN0gxNUEzLDMgMCAwLDAgMTgsMjBBMywzIDAgMCwwIDIxLDE3SDIzVjEzQzIzLDExLjg5IDIyLjExLDExIDIxLDExTDE4LDdIM00zLDguNUg3VjExSDNWOC41TTksOC41SDEzVjExSDlWOC41TTE1LDguNUgxNy41TDE5LjQ2LDExSDE1VjguNU02LDE1LjVBMS41LDEuNSAwIDAsMSA3LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE4LjVBMS41LDEuNSAwIDAsMSA0LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE1LjVNMTgsMTUuNUExLjUsMS41IDAgMCwxIDE5LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxOC41QTEuNSwxLjUgMCAwLDEgMTYuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmFuVXRpbGl0eSA9IFwiTTMsN0MxLjg5LDcgMSw3Ljg5IDEsOVYxN0gzQTMsMyAwIDAsMCA2LDIwQTMsMyAwIDAsMCA5LDE3SDE1QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdIMjNWMTNDMjMsMTEuODkgMjIuMTEsMTEgMjEsMTFMMTgsN0gzTTE1LDguNUgxNy41TDE5LjQ2LDExSDE1VjguNU02LDE1LjVBMS41LDEuNSAwIDAsMSA3LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE4LjVBMS41LDEuNSAwIDAsMSA0LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE1LjVNMTgsMTUuNUExLjUsMS41IDAgMCwxIDE5LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxOC41QTEuNSwxLjUgMCAwLDEgMTYuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmFuaXNoID0gXCJNMTYsMTNWMTFIMjFWMTNIMTZNMTQuODMsNy43NkwxNy42Niw0LjkzTDE5LjA3LDYuMzRMMTYuMjQsOS4xN0wxNC44Myw3Ljc2TTExLDE2SDEzVjIxSDExVjE2TTExLDNIMTNWOEgxMVYzTTQuOTMsMTcuNjZMNy43NiwxNC44M0w5LjE3LDE2LjI0TDYuMzQsMTkuMDdMNC45MywxNy42Nk00LjkzLDYuMzRMNi4zNCw0LjkzTDkuMTcsNy43Nkw3Ljc2LDkuMTdMNC45Myw2LjM0TTgsMTNIM1YxMUg4VjEzTTE5LjA3LDE3LjY2TDE3LjY2LDE5LjA3TDE0LjgzLDE2LjI0TDE2LjI0LDE0LjgzTDE5LjA3LDE3LjY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZhbmlzaFF1YXJ0ZXIgPSBcIk0xMSAzSDEzVjhIMTFWM000LjkgNi4zTDYuMyA0LjlMOS4xIDcuN0w3LjggOS4yTDQuOSA2LjNNOCAxM0gzVjExSDhWMTNcIjtcclxuZXhwb3J0IHZhciBtZGlWYW5pdHlMaWdodCA9IFwiTTIyIDIwSDE2QzE2IDE4LjM0IDE3LjM0IDEzIDE5IDEzUzIyIDE4LjM0IDIyIDIwTTEyIDEzQzEwLjM0IDEzIDkgMTguMzQgOSAyMEgxNUMxNSAxOC4zNCAxMy42NiAxMyAxMiAxM001IDEzQzMuMzQgMTMgMiAxOC4zNCAyIDIwSDhDOCAxOC4zNCA2LjY2IDEzIDUgMTNNMTQuODIgNkMxNC4yNiA0LjQ0IDEyLjUzIDMuNjQgMTEgNC4yQzEwLjE0IDQuNSA5LjUgNS4xNyA5LjE4IDZIMlY4SDRWMTJINlY4SDkuMThDOS41IDguODUgMTAuMTUgOS41IDExIDkuODJWMTJIMTNWOS44MkMxMy44NSA5LjUgMTQuNSA4Ljg1IDE0LjgyIDhIMThWMTJIMjBWOEgyMlY2SDE0LjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZhcmlhYmxlID0gXCJNMjAuNDEsM0MyMS44LDUuNzEgMjIuMzUsOC44NCAyMiwxMkMyMS44LDE1LjE2IDIwLjcsMTguMjkgMTguODMsMjFMMTcuMywyMEMxOC45MSwxNy41NyAxOS44NSwxNC44IDIwLDEyQzIwLjM0LDkuMiAxOS44OSw2LjQzIDE4LjcsNEwyMC40MSwzTTUuMTcsM0w2LjcsNEM1LjA5LDYuNDMgNC4xNSw5LjIgNCwxMkMzLjY2LDE0LjggNC4xMiwxNy41NyA1LjMsMjBMMy42MSwyMUMyLjIxLDE4LjI5IDEuNjUsMTUuMTcgMiwxMkMyLjIsOC44NCAzLjMsNS43MSA1LjE3LDNNMTIuMDgsMTAuNjhMMTQuNCw3LjQ1SDE2LjkzTDEzLjE1LDEyLjQ1TDE1LjM1LDE3LjM3SDEzLjA5TDExLjcxLDE0TDkuMjgsMTcuMzNINi43NkwxMC42NiwxMi4yMUw4LjUzLDcuNDVIMTAuOEwxMi4wOCwxMC42OFpcIjtcclxuZXhwb3J0IHZhciBtZGlWYXJpYWJsZUJveCA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM003LjQgMThDNS45IDE2LjUgNSAxNC4zIDUgMTJTNS45IDcuNSA3LjQgNkw5IDYuN0M3LjcgNy45IDcgOS45IDcgMTJTNy43IDE2LjEgOSAxNy4zTDcuNCAxOE0xMi43IDE1TDExLjkgMTNMMTAuNSAxNUg5TDExLjMgMTEuOUwxMCA5SDExLjNMMTIuMSAxMUwxMy41IDlIMTVMMTIuOCAxMkwxNC4xIDE1SDEyLjdNMTYuNiAxOEwxNSAxNy4zQzE2LjMgMTYgMTcgMTQuMSAxNyAxMlMxNi4zIDcuOSAxNSA2LjdMMTYuNiA2QzE4LjEgNy41IDE5IDkuNyAxOSAxMlMxOC4xIDE2LjUgMTYuNiAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JBcnJhbmdlQWJvdmUgPSBcIk0zLDFDMS44OSwxIDEsMS44OSAxLDNWMTRDMSwxNS4xMSAxLjg5LDE2IDMsMTZDNi42NywxNiAxMC4zMywxNiAxNCwxNkMxNS4xMSwxNiAxNiwxNS4xMSAxNiwxNEMxNiwxMC4zMyAxNiw2LjY3IDE2LDNDMTYsMS44OSAxNS4xMSwxIDE0LDFIM00zLDNIMTRWMTRIM1YzTTE4LDdWOUgyMFYyMEg5VjE4SDdWMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWOUMyMiw3Ljg5IDIxLjExLDcgMjAsN0gxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JBcnJhbmdlQmVsb3cgPSBcIk0yMCwyMkMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFY5QzIyLDcuODkgMjEuMTEsNyAyMCw3QzE2LjMzLDcgMTIuNjcsNyA5LDdDNy44OSw3IDcsNy44OSA3LDlDNywxMi42NyA3LDE2LjMzIDcsMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMjBNMjAsMjBIOVY5SDIwVjIwTTUsMTZWMTRIM1YzSDE0VjVIMTZWM0MxNiwxLjg5IDE1LjExLDEgMTQsMUgzQzEuODksMSAxLDEuODkgMSwzVjE0QzEsMTUuMTEgMS44OSwxNiAzLDE2SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yQmV6aWVyID0gXCJNNy41LDRBMS41LDEuNSAwIDAsMCA2LDUuNUExLjUsMS41IDAgMCwwIDcuNSw3QzguMTMsNyA4LjcsNi42IDguOTEsNkgxM0MxMy42Nyw1LjMzIDE0LjMzLDUgMTUsNUg4LjkxQzguNyw0LjQgOC4xMyw0IDcuNSw0TTE5LDVDOCw1IDE0LDE3IDUsMTdWMTlDMTYsMTkgMTAsNyAxOSw3VjVNMTYuNSwxN0MxNS44NywxNyAxNS4zLDE3LjQgMTUuMDksMThIMTFDMTAuMzMsMTguNjcgOS42NywxOSA5LDE5SDE1LjA5QzE1LjMsMTkuNiAxNS44NywyMCAxNi41LDIwQTEuNSwxLjUgMCAwLDAgMTgsMTguNUExLjUsMS41IDAgMCwwIDE2LjUsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yQ2lyY2xlID0gXCJNOSwyVjQuMDZDNi43Miw0LjkyIDQuOTIsNi43MiA0LjA1LDlIMlYxNUg0LjA2QzQuOTIsMTcuMjggNi43MiwxOS4wOSA5LDE5Ljk1VjIySDE1VjE5Ljk0QzE3LjI4LDE5LjA4IDE5LjA5LDE3LjI4IDE5Ljk1LDE1SDIyVjlIMTkuOTRDMTkuMDgsNi43MiAxNy4yOCw0LjkyIDE1LDQuMDVWMk0xMSw0SDEzVjZIMTFNOSw2LjI1VjhIMTVWNi4yNUMxNi4xOCw2Ljg2IDE3LjE0LDcuODIgMTcuNzUsOUgxNlYxNUgxNy43NUMxNy4xNCwxNi4xOCAxNi4xOCwxNy4xNCAxNSwxNy43NVYxNkg5VjE3Ljc1QzcuODIsMTcuMTQgNi44NiwxNi4xOCA2LjI1LDE1SDhWOUg2LjI1QzYuODYsNy44MiA3LjgyLDYuODYgOSw2LjI1TTQsMTFINlYxM0g0TTE4LDExSDIwVjEzSDE4TTExLDE4SDEzVjIwSDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yQ2lyY2xlVmFyaWFudCA9IFwiTTIyLDlIMTkuOTdDMTguNyw1LjQxIDE1LjMxLDMgMTEuNSwzQTksOSAwIDAsMCAyLjUsMTJDMi41LDE3IDYuNTMsMjEgMTEuNSwyMUMxNS4zMSwyMSAxOC43LDE4LjYgMjAsMTVIMjJNMjAsMTFWMTNIMThWMTFNMTcuODIsMTVDMTYuNjYsMTcuNDQgMTQuMiwxOSAxMS41LDE5QzcuNjQsMTkgNC41LDE1Ljg3IDQuNSwxMkM0LjUsOC4xNCA3LjY0LDUgMTEuNSw1QzE0LjIsNSAxNi42Niw2LjU3IDE3LjgxLDlIMTZWMTVcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JDb21iaW5lID0gXCJNMywxQzEuODksMSAxLDEuODkgMSwzVjE0QzEsMTUuMTEgMS44OSwxNiAzLDE2QzQuMzMsMTYgNywxNiA3LDE2QzcsMTYgNywxOC42NyA3LDIwQzcsMjEuMTEgNy44OSwyMiA5LDIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjlDMjIsNy44OSAyMS4xMSw3IDIwLDdDMTguNjcsNyAxNiw3IDE2LDdDMTYsNyAxNiw0LjMzIDE2LDNDMTYsMS44OSAxNS4xMSwxIDE0LDFIM00zLDNIMTRDMTQsNC4zMyAxNCw3IDE0LDdIOUM3Ljg5LDcgNyw3Ljg5IDcsOVYxNEM3LDE0IDQuMzMsMTQgMywxNFYzTTksOUgxNFYxNEg5VjlNMTYsOUMxNiw5IDE4LjY3LDkgMjAsOVYyMEg5QzksMTguNjcgOSwxNiA5LDE2SDE0QzE1LjExLDE2IDE2LDE1LjExIDE2LDE0VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yQ3VydmUgPSBcIk0xOC41LDJBMS41LDEuNSAwIDAsMSAyMCwzLjVBMS41LDEuNSAwIDAsMSAxOC41LDVDMTguMjcsNSAxOC4wNSw0Ljk1IDE3Ljg1LDQuODVMMTQuMTYsOC41NUwxNC41LDlDMTYuNjksNy43NCAxOS4yNiw3IDIyLDdMMjMsNy4wM1Y5LjA0TDIyLDlDMTkuNDIsOSAxNyw5Ljc1IDE1LDExLjA0QTMuOTYsMy45NiAwIDAsMSAxMS4wNCwxNUM5Ljc1LDE3IDksMTkuNDIgOSwyMkw5LjA0LDIzSDcuMDNMNywyMkM3LDE5LjI2IDcuNzQsMTYuNjkgOSwxNC41TDguNTUsMTQuMTZMNC44NSwxNy44NUM0Ljk1LDE4LjA1IDUsMTguMjcgNSwxOC41QTEuNSwxLjUgMCAwLDEgMy41LDIwQTEuNSwxLjUgMCAwLDEgMiwxOC41QTEuNSwxLjUgMCAwLDEgMy41LDE3QzMuNzMsMTcgMy45NSwxNy4wNSA0LjE1LDE3LjE1TDcuODQsMTMuNDVDNy4zMSwxMi43OCA3LDExLjkyIDcsMTFBNCw0IDAgMCwxIDExLDdDMTEuOTIsNyAxMi43OCw3LjMxIDEzLjQ1LDcuODRMMTcuMTUsNC4xNUMxNy4wNSwzLjk1IDE3LDMuNzMgMTcsMy41QTEuNSwxLjUgMCAwLDEgMTguNSwyTTExLDlBMiwyIDAgMCwwIDksMTFBMiwyIDAgMCwwIDExLDEzQTIsMiAwIDAsMCAxMywxMUEyLDIgMCAwLDAgMTEsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JEaWZmZXJlbmNlID0gXCJNMywxQzEuODksMSAxLDEuODkgMSwzVjE0QzEsMTUuMTEgMS44OSwxNiAzLDE2SDVWMTRIM1YzSDE0VjVIMTZWM0MxNiwxLjg5IDE1LjExLDEgMTQsMUgzTTksN0M3Ljg5LDcgNyw3Ljg5IDcsOVYxMUg5VjlIMTFWN0g5TTEzLDdWOUgxNFYxMEgxNlY3SDEzTTE4LDdWOUgyMFYyMEg5VjE4SDdWMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWOUMyMiw3Ljg5IDIxLjExLDcgMjAsN0gxOE0xNCwxMlYxNEgxMlYxNkgxNEMxNS4xMSwxNiAxNiwxNS4xMSAxNiwxNFYxMkgxNE03LDEzVjE2SDEwVjE0SDlWMTNIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JEaWZmZXJlbmNlQWIgPSBcIk0zLDFDMS44OSwxIDEsMS44OSAxLDNWNUgzVjNINVYxSDNNNywxVjNIMTBWMUg3TTEyLDFWM0gxNFY1SDE2VjNDMTYsMS44OSAxNS4xMSwxIDE0LDFIMTJNMSw3VjEwSDNWN0gxTTE0LDdDMTQsNyAxNCwxMS42NyAxNCwxNEMxMS42NywxNCA3LDE0IDcsMTRDNywxNCA3LDE4IDcsMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWOUMyMiw3Ljg5IDIxLjExLDcgMjAsN0MxOCw3IDE0LDcgMTQsN00xNiw5SDIwVjIwSDlWMTZIMTRDMTUuMTEsMTYgMTYsMTUuMTEgMTYsMTRWOU0xLDEyVjE0QzEsMTUuMTEgMS44OSwxNiAzLDE2SDVWMTRIM1YxMkgxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckRpZmZlcmVuY2VCYSA9IFwiTTIwLDIyQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjE4SDIwVjIwSDE4VjIySDIwTTE2LDIyVjIwSDEzVjIySDE2TTExLDIyVjIwSDlWMThIN1YyMEM3LDIxLjExIDcuODksMjIgOSwyMkgxMU0yMiwxNlYxM0gyMFYxNkgyMk05LDE2QzksMTYgOSwxMS4zMyA5LDlDMTEuMzMsOSAxNiw5IDE2LDlDMTYsOSAxNiw1IDE2LDNDMTYsMS44OSAxNS4xMSwxIDE0LDFIM0MxLjg5LDEgMSwxLjg5IDEsM1YxNEMxLDE1LjExIDEuODksMTYgMywxNkM1LDE2IDksMTYgOSwxNk03LDE0SDNWM0gxNFY3SDlDNy44OSw3IDcsNy44OSA3LDlWMTRNMjIsMTFWOUMyMiw3Ljg5IDIxLjExLDcgMjAsN0gxOFY5SDIwVjExSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckVsbGlwc2UgPSBcIk0yMyw5VjE1SDIwLjM1QzE5LjM4LDE3LjEyIDE3LjQzLDE4Ljc4IDE1LDE5LjU0VjIySDlWMTkuNTRDNS41LDE4LjQ1IDMsMTUuNSAzLDEyQzMsNy41OCA3LjAzLDQgMTIsNEMxNS43OCw0IDE5LDYuMDcgMjAuMzUsOUgyM00xNywxNVY5SDE4LjA2QzE2Ljg1LDcuMjEgMTQuNTksNiAxMiw2QzguMTMsNiA1LDguNjkgNSwxMkM1LDE0LjM5IDYuNjQsMTYuNDYgOSwxNy40MlYxNkgxNVYxNy40MkMxNi4yOSwxNi45IDE3LjM1LDE2LjA1IDE4LjA2LDE1SDE3TTE5LDEzSDIxVjExSDE5VjEzTTExLDIwSDEzVjE4SDExVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckludGVyc2VjdGlvbiA9IFwiTTMuMTQsMUEyLjE0LDIuMTQgMCAwLDAgMSwzLjE0VjVIM1YzSDVWMUgzLjE0TTcsMVYzSDEwVjFIN00xMiwxVjNIMTRWNUgxNlYzLjE0QzE2LDEuOTYgMTUuMDQsMSAxMy44NiwxSDEyTTEsN1YxMEgzVjdIMU05LDdDNy44OSw3IDcsNy44OSA3LDlDNywxMS4zMyA3LDE2IDcsMTZDNywxNiAxMS41NywxNiAxMy44NiwxNkEyLjE0LDIuMTQgMCAwLDAgMTYsMTMuODZDMTYsMTEuNTcgMTYsNyAxNiw3QzE2LDcgMTEuMzMsNyA5LDdNMTgsN1Y5SDIwVjExSDIyVjlDMjIsNy44OSAyMS4xMSw3IDIwLDdIMThNOSw5SDE0VjE0SDlWOU0xLDEyVjEzLjg2QzEsMTUuMDQgMS45NiwxNiAzLjE0LDE2SDVWMTRIM1YxMkgxTTIwLDEzVjE2SDIyVjEzSDIwTTcsMThWMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMTFWMjBIOVYxOEg3TTIwLDE4VjIwSDE4VjIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjE4SDIwTTEzLDIwVjIySDE2VjIwSDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckxpbmUgPSBcIk0xNSwzVjcuNTlMNy41OSwxNUgzVjIxSDlWMTYuNDJMMTYuNDIsOUgyMVYzTTE3LDVIMTlWN0gxN001LDE3SDdWMTlINVwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckxpbmsgPSBcIk0zIDFDMS44OSAxIDEgMS44OSAxIDNWMTRDMSAxNS4xMSAxLjg5IDE2IDMgMTZIMTRDMTUuMTEgMTYgMTYgMTUuMTEgMTYgMTRWMTFIMTRWMTRIM1YzSDE0VjVIMTZWM0MxNiAxLjg5IDE1LjExIDEgMTQgMU05IDdDNy44OSA3IDcgNy44OSA3IDlWMTJIOVY5SDIwVjIwSDlWMThIN1YyMEM3IDIxLjExIDcuODkgMjIgOSAyMkgyMEMyMS4xMSAyMiAyMiAyMS4xMSAyMiAyMFY5QzIyIDcuODkgMjEuMTEgNyAyMCA3SDlcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JQb2ludCA9IFwiTTEyLDIwTDcsMjJMMTIsMTFMMTcsMjJMMTIsMjBNOCwySDE2VjVIMjJWN0gxNlYxMEg4VjdIMlY1SDhWMk0xMCw0VjhIMTRWNEgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JQb2x5Z29uID0gXCJNMiwyVjhINC4yOEw1LjU3LDE2SDRWMjJIMTBWMjAuMDZMMTUsMjAuMDVWMjJIMjFWMTZIMTkuMTdMMjAsOUgyMlYzSDE2VjYuNTNMMTQuOCw4SDkuNTlMOCw1LjgyVjJNNCw0SDZWNkg0TTE4LDVIMjBWN0gxOE02LjMxLDhINy4xMUw5LDEwLjU5VjE0SDE1VjEwLjkxTDE2LjU3LDlIMThMMTcuMTYsMTZIMTVWMTguMDZIMTBWMTZINy42TTExLDEwSDEzVjEySDExTTYsMThIOFYyMEg2TTE3LDE4SDE5VjIwSDE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yUG9seWxpbmUgPSBcIk0yIDNWOUg0Ljk1TDYuOTUgMTVINlYyMUgxMlYxNi40MUwxNy40MSAxMUgyMlY1SDE2VjkuNTdMMTAuNTkgMTVIOS4wNkw3LjA2IDlIOFYzTTQgNUg2VjdINE0xOCA3SDIwVjlIMThNOCAxN0gxMFYxOUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvclBvbHlsaW5lRWRpdCA9IFwiTTIgM1Y5SDQuOTVMNi45NSAxNUg2VjIxSDEyVjE2LjQxTDE3LjQxIDExSDIyVjVIMTZWOS41N0wxMC41OSAxNUg5LjA2TDcuMDYgOUg4VjNIMk00IDVINlY3SDRWNU0xOCA3SDIwVjlIMThWN00yMS4xNSAxM0MyMSAxMyAyMC44NyAxMy4wNSAyMC43NiAxMy4xNkwxOS43NSAxNC4xOEwyMS44MiAxNi4yNUwyMi44NCAxNS4yNEMyMy4wNSAxNS4wMyAyMy4wNSAxNC42NyAyMi44NCAxNC40NkwyMS41NCAxMy4xNkMyMS40MyAxMy4wNSAyMS4yOSAxMyAyMS4xNSAxM00xOS4xNSAxNC43NkwxMyAyMC45MVYyM0gxNS4wOUwyMS4yMyAxNi44NEwxOS4xNSAxNC43Nk04IDE3SDEwVjE5SDhWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yUG9seWxpbmVNaW51cyA9IFwiTTIgM1Y5SDQuOTVMNi45NSAxNUg2VjIxSDEyVjE2LjQxTDE3LjQxIDExSDIyVjVIMTZWOS41N0wxMC41OSAxNUg5LjA2TDcuMDYgOUg4VjNIMk00IDVINlY3SDRWNU0xOCA3SDIwVjlIMThWN004IDE3SDEwVjE5SDhWMTdNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yUG9seWxpbmVQbHVzID0gXCJNMiAzVjlINC45NUw2Ljk1IDE1SDZWMjFIMTJWMTYuNDFMMTcuNDEgMTFIMjJWNUgxNlY5LjU3TDEwLjU5IDE1SDkuMDZMNy4wNiA5SDhWM0gyTTQgNUg2VjdINFY1TTE4IDdIMjBWOUgxOFY3TTE4IDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4TTggMTdIMTBWMTlIOFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JQb2x5bGluZVJlbW92ZSA9IFwiTTIxLjEgMTUuNUwxOSAxNy42TDE2LjkgMTUuNUwxNS41IDE2LjlMMTcuNiAxOUwxNS41IDIxLjFMMTYuOSAyMi41TDE5IDIwLjRMMjEuMSAyMi41TDIyLjUgMjEuMUwyMC40IDE5TDIyLjUgMTYuOUwyMS4xIDE1LjVNMTYgNVY5LjZMMTAuNiAxNUg5LjFMNy4xIDlIOFYzSDJWOUg1TDcgMTVINlYyMUgxMlYxNi40TDE3LjQgMTFIMjJWNUgxNk02IDdINFY1SDZWN00xMCAxOUg4VjE3SDEwVjE5TTIwIDlIMThWN0gyMFY5XCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yUmFkaXVzID0gXCJNMiw0SDRWMkgxMFY0QTEwLDEwIDAgMCwxIDIwLDE0SDIyVjIwSDIwVjIySDE4VjIwSDE2VjE0SDE4QTgsOCAwIDAsMCAxMCw2VjhINFY2SDJWNE0xOCwxNlYxOEgyMFYxNkgxOE02LDRWNkg4VjRINlpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JSZWN0YW5nbGUgPSBcIk0yLDRIOFY2SDE2VjRIMjJWMTBIMjBWMTRIMjJWMjBIMTZWMThIOFYyMEgyVjE0SDRWMTBIMlY0TTE2LDEwVjhIOFYxMEg2VjE0SDhWMTZIMTZWMTRIMThWMTBIMTZNNCw2VjhINlY2SDRNMTgsNlY4SDIwVjZIMThNNCwxNlYxOEg2VjE2SDRNMTgsMTZWMThIMjBWMTZIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yU2VsZWN0aW9uID0gXCJNMywxSDVWM0gzVjVIMVYzQTIsMiAwIDAsMSAzLDFNMTQsMUEyLDIgMCAwLDEgMTYsM1Y1SDE0VjNIMTJWMUgxNE0yMCw3QTIsMiAwIDAsMSAyMiw5VjExSDIwVjlIMThWN0gyME0yMiwyMEEyLDIgMCAwLDEgMjAsMjJIMThWMjBIMjBWMThIMjJWMjBNMjAsMTNIMjJWMTZIMjBWMTNNMTMsOVY3SDE2VjEwSDE0VjlIMTNNMTMsMjJWMjBIMTZWMjJIMTNNOSwyMkEyLDIgMCAwLDEgNywyMFYxOEg5VjIwSDExVjIySDlNNywxNlYxM0g5VjE0SDEwVjE2SDdNNywzVjFIMTBWM0g3TTMsMTZBMiwyIDAgMCwxIDEsMTRWMTJIM1YxNEg1VjE2SDNNMSw3SDNWMTBIMVY3TTksN0gxMVY5SDlWMTFIN1Y5QTIsMiAwIDAsMSA5LDdNMTYsMTRBMiwyIDAgMCwxIDE0LDE2SDEyVjE0SDE0VjEySDE2VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvclNxdWFyZSA9IFwiTTIsMkg4VjRIMTZWMkgyMlY4SDIwVjE2SDIyVjIySDE2VjIwSDhWMjJIMlYxNkg0VjhIMlYyTTE2LDhWNkg4VjhINlYxNkg4VjE4SDE2VjE2SDE4VjhIMTZNNCw0VjZINlY0SDRNMTgsNFY2SDIwVjRIMThNNCwxOFYyMEg2VjE4SDRNMTgsMThWMjBIMjBWMThIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yVHJpYW5nbGUgPSBcIk05LDNWOUg5LjczTDUuNzksMTZIMlYyMkg4VjIwSDE2VjIySDIyVjE2SDE4LjIxTDE0LjI3LDlIMTVWM00xMSw1SDEzVjdIMTFNMTIsOS4wNEwxNiwxNi4xNVYxOEg4VjE2LjE1TTQsMThINlYyMEg0TTE4LDE4SDIwVjIwSDE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yVW5pb24gPSBcIk0zLDFDMS44OSwxIDEsMS44OSAxLDNWMTRDMSwxNS4xMSAxLjg5LDE2IDMsMTZIN1YyMEM3LDIxLjExIDcuODksMjIgOSwyMkgyMEMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFY5QzIyLDcuODkgMjEuMTEsNyAyMCw3SDE2VjNDMTYsMS44OSAxNS4xMSwxIDE0LDFIM00zLDNIMTRWOUgyMFYyMEg5VjE0SDNWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaHMgPSBcIk00LDZBMiwyIDAgMCwwIDIsOFYxNkEyLDIgMCAwLDAgNCwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWOEEyLDIgMCAwLDAgMjAsNkg0TTQuNTQsMTBIN1YxNEg0LjU0QzQuMTksMTMuMzkgNCwxMi43IDQsMTJDNCwxMS4zIDQuMTksMTAuNjEgNC41NCwxME05LDEwSDE1VjE0SDlWMTBNMTcsMTBIMTkuNDZDMTkuODEsMTAuNjEgMjAsMTEuMyAyMCwxMkMyMCwxMi43IDE5LjgxLDEzLjM5IDE5LjQ2LDE0SDE3VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpYnJhdGUgPSBcIk0xNiwxOUg4VjVIMTZNMTYuNSwzSDcuNUExLjUsMS41IDAgMCwwIDYsNC41VjE5LjVBMS41LDEuNSAwIDAsMCA3LjUsMjFIMTYuNUExLjUsMS41IDAgMCwwIDE4LDE5LjVWNC41QTEuNSwxLjUgMCAwLDAgMTYuNSwzTTE5LDE3SDIxVjdIMTlNMjIsOVYxNUgyNFY5TTMsMTdINVY3SDNNMCwxNUgyVjlIMFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWJyYXRlT2ZmID0gXCJNOC4yLDVMNi41NSwzLjM1QzYuODEsMy4xMiA3LjE1LDMgNy41LDNIMTYuNUExLjUsMS41IDAgMCwxIDE4LDQuNVYxNC44TDE2LDEyLjhWNUg4LjJNMCwxNUgyVjlIMFYxNU0yMSwxN1Y3SDE5VjE1LjhMMjAuMiwxN0gyMU0zLDE3SDVWN0gzVjE3TTE4LDE3LjM1TDIyLjExLDIxLjQ2TDIwLjg0LDIyLjczTDE4LDE5Ljg1QzE3LjgzLDIwLjU0IDE3LjIxLDIxIDE2LjUsMjFINy41QTEuNSwxLjUgMCAwLDEgNiwxOS41VjcuODlMMS4xMSwzTDIuMzksMS43M0w2LjA5LDUuNDRMOCw3LjM0TDE2LDE1LjM0TDE4LDE3LjM0VjE3LjM1TTE2LDE3Ljg5TDgsOS44OVYxOUgxNlYxNy44OU0yMiw5VjE1SDI0VjlIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW8gPSBcIk0xNywxMC41VjdBMSwxIDAgMCwwIDE2LDZINEExLDEgMCAwLDAgMyw3VjE3QTEsMSAwIDAsMCA0LDE4SDE2QTEsMSAwIDAsMCAxNywxN1YxMy41TDIxLDE3LjVWNi41TDE3LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW8zZCA9IFwiTTUsN0g5QTIsMiAwIDAsMSAxMSw5VjE1QTIsMiAwIDAsMSA5LDE3SDVWMTVIOVYxM0g2VjExSDlWOUg1VjdNMTMsN0gxNkEzLDMgMCAwLDEgMTksMTBWMTRBMywzIDAgMCwxIDE2LDE3SDEzVjdNMTYsMTVBMSwxIDAgMCwwIDE3LDE0VjEwQTEsMSAwIDAsMCAxNiw5SDE1VjE1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvM2RPZmYgPSBcIk0yLjYxIDJMMjEuMzUgMjAuNzRMMTkuOTQgMjIuMTVMMTQuOCAxN0gxM1YxNS4yTDExIDEzLjIzVjE1LjIxQzEwLjkzIDE1LjY4IDEwLjc0IDE2LjA4IDEwLjQxIDE2LjQxQzEwLjA4IDE2LjczIDkuNjggMTYuOTMgOS4yMSAxN0g1VjE1SDlWMTNINlYxMUg4LjhMNi43OSA5SDVWNy4yM0wxLjIgMy40MUwyLjYxIDJNMTYgN0gxNi4yMkMxNyA3LjA3IDE3LjYzIDcuMzYgMTguMTQgNy44OEMxOC42NSA4LjM5IDE4LjkzIDkgMTkgOS43NlYxNC4yNEMxOC45NSAxNC42MyAxOC44NyAxNSAxOC43MiAxNS4zTDE3IDEzLjZWOS44NUMxNi45NSA5LjYzIDE2Ljg0IDkuNDQgMTYuNjkgOS4yOEMxNi41MyA5LjEzIDE2LjM0IDkuMDMgMTYuMTIgOUgxNVYxMS41OUwxMyA5LjU3VjdIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW8zZFZhcmlhbnQgPSBcIk0xNCwxMFYxNEEwLjUsMC41IDAgMCwxIDEzLjUsMTQuNUgxMi41VjkuNUgxMy41QTAuNSwwLjUgMCAwLDEgMTQsMTBNMjEsNi41VjE3LjVMMTcsMTMuNVYxN0ExLDEgMCAwLDEgMTYsMThINEExLDEgMCAwLDEgMywxN1Y3QTEsMSAwIDAsMSA0LDZIMTZBMSwxIDAgMCwxIDE3LDdWMTAuNU05LjUsOS41QTEuNSwxLjUgMCAwLDAgOCw4SDQuNVY5LjVIOFYxMS4yNUg1LjVWMTIuNzVIOFYxNC41SDQuNVYxNkg4QTEuNSwxLjUgMCAwLDAgOS41LDE0LjVNMTUuNSw5LjVBMS41LDEuNSAwIDAsMCAxNCw4SDExVjE2SDE0QTEuNSwxLjUgMCAwLDAgMTUuNSwxNC41XCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW80a0JveCA9IFwiTTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDEzLjVIMTFWMTVIOS41VjEzLjVINi41VjlIOFYxMkg5LjVWOUgxMVYxMkgxMlYxMy41TTE4LDE1SDE2LjJMMTQuNCwxMi44VjE1SDEzVjlIMTQuNVYxMS4yTDE2LjIsOUgxOEwxNS44LDEyTDE4LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvQWNjb3VudCA9IFwiTTE3LDEwLjVMMjEsNi41VjE3LjVMMTcsMTMuNVYxN0ExLDEgMCAwLDEgMTYsMThINEExLDEgMCAwLDEgMywxN1Y3QTEsMSAwIDAsMSA0LDZIMTZBMSwxIDAgMCwxIDE3LDdWMTAuNU0xNCwxNlYxNUMxNCwxMy42NyAxMS4zMywxMyAxMCwxM0M4LjY3LDEzIDYsMTMuNjcgNiwxNVYxNkgxNE0xMCw4QTIsMiAwIDAsMCA4LDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTBBMiwyIDAgMCwwIDEwLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9Cb3ggPSBcIk0xOCwxNkwxNCwxMi44VjE2SDZWOEgxNFYxMS4yTDE4LDhNMjAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb0JveE9mZiA9IFwiTTYsOEg2LjczTDE0LDE1LjI3VjE2SDZNMi4yNywxTDEsMi4yN0wzLDQuMjhDMi40MSw0LjYyIDIsNS4yNiAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMTguNzNMMjAuNzMsMjJMMjIsMjAuNzNNMjAsNEg3LjgyTDExLjgyLDhIMTRWMTAuMThMMTQuNTcsMTAuNzVMMTgsOFYxNC4xOEwyMiwxOC4xN0MyMiwxOC4xMSAyMiwxOC4wNiAyMiwxOFY2QTIsMiAwIDAsMCAyMCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvQ2hlY2sgPSBcIk0xNyAxMC41VjdDMTcgNi40NSAxNi41NSA2IDE2IDZINEMzLjQ1IDYgMyA2LjQ1IDMgN1YxN0MzIDE3LjU1IDMuNDUgMTggNCAxOEgxNkMxNi41NSAxOCAxNyAxNy41NSAxNyAxN1YxMy41TDIxIDE3LjVWNi41TDE3IDEwLjVNOC45MyAxNUw2IDExLjhMNy4yNCAxMC41Nkw4LjkzIDEyLjI2TDEyLjc2IDguNDNMMTQgOS45M0w4LjkzIDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvQ2hlY2tPdXRsaW5lID0gXCJNMTUgOFYxNkg1VjhIMTVNMTYgNkg0QzMuNDUgNiAzIDYuNDUgMyA3VjE3QzMgMTcuNTUgMy40NSAxOCA0IDE4SDE2QzE2LjU1IDE4IDE3IDE3LjU1IDE3IDE3VjEzLjVMMjEgMTcuNVY2LjVMMTcgMTAuNVY3QzE3IDYuNDUgMTYuNTUgNiAxNiA2TTYuMzUgMTIuMDhMNy41IDEwLjk1TDkgMTIuNUwxMi41IDlMMTMuNjUgMTAuMzdMOSAxNUw2LjM1IDEyLjA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvSGlnaERlZmluaXRpb24gPSBcIk0xNCAxMFYxNEMxNCAxNC4zIDEzLjggMTQuNSAxMy41IDE0LjVIMTIuNVY5LjVIMTMuNUMxMy44IDkuNSAxNCA5LjcgMTQgMTBNMTcgMTAuNVY3QzE3IDYuNCAxNi42IDYgMTYgNkg0QzMuNCA2IDMgNi40IDMgN1YxN0MzIDE3LjYgMy40IDE4IDQgMThIMTZDMTYuNiAxOCAxNyAxNy42IDE3IDE3VjEzLjVMMjEgMTcuNVY2LjVMMTcgMTAuNU05LjUgMTZIOFYxMi44SDZWMTZINC41VjhINlYxMS4ySDhWOEg5LjVWMTZNMTUuNSAxNC41QzE1LjUgMTUuMyAxNC44IDE2IDE0IDE2SDExVjhIMTRDMTQuOCA4IDE1LjUgOC43IDE1LjUgOS41VjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9JbWFnZSA9IFwiTTE3LDEwLjVMMjEsNi41VjE3LjVMMTcsMTMuNVYxN0ExLDEgMCAwLDEgMTYsMThINEExLDEgMCAwLDEgMywxN1Y3QTEsMSAwIDAsMSA0LDZIMTZBMSwxIDAgMCwxIDE3LDdWMTAuNU0xMC45MSw5LjU1TDkuMiwxMS44MkwxMC41LDEzLjU1TDkuNzcsMTQuMDlMNy43MywxMS4zNkw1LDE1SDE1TDEwLjkxLDkuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9JbnB1dEFudGVubmEgPSBcIk0xMiw1QTcsNyAwIDAsMCA1LDEySDdBNSw1IDAgMCwxIDEyLDdBNSw1IDAgMCwxIDE3LDEySDE5QTcsNyAwIDAsMCAxMiw1TTEzLDE0LjI5QzEzLjg4LDEzLjkgMTQuNSwxMy4wMyAxNC41LDEyQTIuNSwyLjUgMCAwLDAgMTIsOS41QTIuNSwyLjUgMCAwLDAgOS41LDEyQzkuNSwxMyAxMC4xMiwxMy45IDExLDE0LjI5VjE3LjU5TDcuNTksMjFMOSwyMi40MUwxMiwxOS40MUwxNSwyMi40MUwxNi40MSwyMUwxMywxNy41OVYxNC4yOU0xMiwxQTExLDExIDAgMCwwIDEsMTJIM0E5LDkgMCAwLDEgMTIsM0E5LDkgMCAwLDEgMjEsMTJIMjNBMTEsMTEgMCAwLDAgMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb0lucHV0Q29tcG9uZW50ID0gXCJNNSwyQTEsMSAwIDAsMCA0LDFBMSwxIDAgMCwwIDMsMlY2SDFWMTJIN1Y2SDVWMk05LDE2QzksMTcuMyA5Ljg0LDE4LjQgMTEsMTguODJWMjNIMTNWMTguODJDMTQuMTYsMTguNDEgMTUsMTcuMzEgMTUsMTZWMTRIOVYxNk0xLDE2QzEsMTcuMyAxLjg0LDE4LjQgMywxOC44MlYyM0g1VjE4LjgyQzYuMTYsMTguNCA3LDE3LjMgNywxNlYxNEgxVjE2TTIxLDZWMkExLDEgMCAwLDAgMjAsMUExLDEgMCAwLDAgMTksMlY2SDE3VjEySDIzVjZIMjFNMTMsMkExLDEgMCAwLDAgMTIsMUExLDEgMCAwLDAgMTEsMlY2SDlWMTJIMTVWNkgxM1YyTTE3LDE2QzE3LDE3LjMgMTcuODQsMTguNCAxOSwxOC44MlYyM0gyMVYxOC44MkMyMi4xNiwxOC40MSAyMywxNy4zMSAyMywxNlYxNEgxN1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb0lucHV0SGRtaSA9IFwiTTE4LDdWNEEyLDIgMCAwLDAgMTYsMkg4QTIsMiAwIDAsMCA2LDRWN0g1VjEzTDgsMTlWMjJIMTZWMTlMMTksMTNWN0gxOE04LDRIMTZWN0gxNFY1SDEzVjdIMTFWNUgxMFY3SDhWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb0lucHV0U2NhcnQgPSBcIk0yMC42IDIuMkwxNy4zIDIuNEwxMy44IDQuNEwxMy4zIDMuNUwyIDEwVjE3SDNWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE1QzE2LjEgMjEgMTcgMjAuMSAxNyAxOVYxN0gxOFYxMEgxN0wxNi44IDkuNkwyMC4zIDcuNkwyMi4xIDQuOEwyMC42IDIuMk0xNSAxN1YxOUg1VjE3SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvSW5wdXRTdmlkZW8gPSBcIk04LDExLjVBMS41LDEuNSAwIDAsMCA2LjUsMTBBMS41LDEuNSAwIDAsMCA1LDExLjVBMS41LDEuNSAwIDAsMCA2LjUsMTNBMS41LDEuNSAwIDAsMCA4LDExLjVNMTUsNi41QTEuNSwxLjUgMCAwLDAgMTMuNSw1SDEwLjVBMS41LDEuNSAwIDAsMCA5LDYuNUExLjUsMS41IDAgMCwwIDEwLjUsOEgxMy41QTEuNSwxLjUgMCAwLDAgMTUsNi41TTguNSwxNUExLjUsMS41IDAgMCwwIDcsMTYuNUExLjUsMS41IDAgMCwwIDguNSwxOEExLjUsMS41IDAgMCwwIDEwLDE2LjVBMS41LDEuNSAwIDAsMCA4LjUsMTVNMTIsMUExMSwxMSAwIDAsMCAxLDEyQTExLDExIDAgMCwwIDEyLDIzQTExLDExIDAgMCwwIDIzLDEyQTExLDExIDAgMCwwIDEyLDFNMTIsMjFDNy4wNCwyMSAzLDE2Ljk2IDMsMTJDMyw3LjA0IDcuMDQsMyAxMiwzQzE2Ljk2LDMgMjEsNy4wNCAyMSwxMkMyMSwxNi45NiAxNi45NiwyMSAxMiwyMU0xNy41LDEwQTEuNSwxLjUgMCAwLDAgMTYsMTEuNUExLjUsMS41IDAgMCwwIDE3LjUsMTNBMS41LDEuNSAwIDAsMCAxOSwxMS41QTEuNSwxLjUgMCAwLDAgMTcuNSwxME0xNS41LDE1QTEuNSwxLjUgMCAwLDAgMTQsMTYuNUExLjUsMS41IDAgMCwwIDE1LjUsMThBMS41LDEuNSAwIDAsMCAxNywxNi41QTEuNSwxLjUgMCAwLDAgMTUuNSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb01pbnVzID0gXCJNMTcsMTAuNVY3QTEsMSAwIDAsMCAxNiw2SDRBMSwxIDAgMCwwIDMsN1YxN0ExLDEgMCAwLDAgNCwxOEgxNkExLDEgMCAwLDAgMTcsMTdWMTMuNUwyMSwxNy41VjYuNUwxNywxMC41TTE0LDEzSDZWMTFIMTRWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9NaW51c091dGxpbmUgPSBcIk0xNSA4VjE2SDVWOEgxNU0xNiA2SDRDMy40NSA2IDMgNi40NSAzIDdWMTdDMyAxNy41NSAzLjQ1IDE4IDQgMThIMTZDMTYuNTUgMTggMTcgMTcuNTUgMTcgMTdWMTMuNUwyMSAxNy41VjYuNUwxNyAxMC41VjdDMTcgNi40NSAxNi41NSA2IDE2IDZNMTMgMTNIN1YxMUgxM1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb09mZiA9IFwiTTMuMjcsMkwyLDMuMjdMNC43Myw2SDRBMSwxIDAgMCwwIDMsN1YxN0ExLDEgMCAwLDAgNCwxOEgxNkMxNi4yLDE4IDE2LjM5LDE3LjkyIDE2LjU0LDE3LjgyTDE5LjczLDIxTDIxLDE5LjczTTIxLDYuNUwxNywxMC41VjdBMSwxIDAgMCwwIDE2LDZIOS44MkwyMSwxNy4xOFY2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9PZmZPdXRsaW5lID0gXCJNMy40MSwxLjg2TDIsMy4yN0w0LjczLDZINEExLDEgMCAwLDAgMyw3VjE3QTEsMSAwIDAsMCA0LDE4SDE2QzE2LjIxLDE4IDE2LjM5LDE3LjkyIDE2LjU1LDE3LjgyTDE5LjczLDIxTDIxLjE0LDE5LjU5TDEyLjI4LDEwLjczTDMuNDEsMS44Nk01LDE2VjhINi43M0wxNC43MywxNkg1TTE1LDhWMTAuNjFMMjEsMTYuNjFWNi41TDE3LDEwLjVWN0ExLDEgMCAwLDAgMTYsNkgxMC4zOUwxMi4zOSw4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvT3V0bGluZSA9IFwiTTE1LDhWMTZINVY4SDE1TTE2LDZINEExLDEgMCAwLDAgMyw3VjE3QTEsMSAwIDAsMCA0LDE4SDE2QTEsMSAwIDAsMCAxNywxN1YxMy41TDIxLDE3LjVWNi41TDE3LDEwLjVWN0ExLDEgMCAwLDAgMTYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb1BsdXMgPSBcIk0xNywxMC41VjdBMSwxIDAgMCwwIDE2LDZINEExLDEgMCAwLDAgMyw3VjE3QTEsMSAwIDAsMCA0LDE4SDE2QTEsMSAwIDAsMCAxNywxN1YxMy41TDIxLDE3LjVWNi41TDE3LDEwLjVNMTQsMTNIMTFWMTZIOVYxM0g2VjExSDlWOEgxMVYxMUgxNFYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb1BsdXNPdXRsaW5lID0gXCJNMTUgOFYxNkg1VjhIMTVNMTYgNkg0QzMuNDUgNiAzIDYuNDUgMyA3VjE3QzMgMTcuNTUgMy40NSAxOCA0IDE4SDE2QzE2LjU1IDE4IDE3IDE3LjU1IDE3IDE3VjEzLjVMMjEgMTcuNVY2LjVMMTcgMTAuNVY3QzE3IDYuNDUgMTYuNTUgNiAxNiA2TTEzIDEzSDExVjE1SDlWMTNIN1YxMUg5VjlIMTFWMTFIMTNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9TdGFiaWxpemF0aW9uID0gXCJNNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNE00LDZWMThIMjBWNkg0TTcuMjQsNi41OEwxOC44Myw5LjY5TDE2Ljc2LDE3LjQyTDUuMTcsMTQuMzFMNy4yNCw2LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvU3dpdGNoID0gXCJNMTMsMTUuNVYxM0g3VjE1LjVMMy41LDEyTDcsOC41VjExSDEzVjguNUwxNi41LDEyTTE4LDkuNVY2QTEsMSAwIDAsMCAxNyw1SDNBMSwxIDAgMCwwIDIsNlYxOEExLDEgMCAwLDAgMywxOUgxN0ExLDEgMCAwLDAgMTgsMThWMTQuNUwyMiwxOC41VjUuNUwxOCw5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9Td2l0Y2hPdXRsaW5lID0gXCJNOCAxM0gxMlYxNUwxNSAxMkwxMiA5VjExSDhWOUw1IDEyTDggMTVWMTNNMTggOS41VjZDMTggNS40IDE3LjUgNSAxNyA1SDNDMi41IDUgMiA1LjQgMiA2VjE4QzIgMTguNSAyLjUgMTkgMyAxOUgxN0MxNy41IDE5IDE4IDE4LjUgMTggMThWMTQuNUwyMiAxOC41VjUuNUwxOCA5LjVNMTYgMTdINFY3SDE2VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvVmludGFnZSA9IFwiTTE4LDE0LjVWMTFBMSwxIDAgMCwwIDE3LDEwSDE2QzE4LjI0LDguMzkgMTguNzYsNS4yNyAxNy4xNSwzQzE1LjU0LDAuNzggMTIuNDIsMC4yNiAxMC4xNywxLjg3QzkuNSwyLjM1IDguOTYsMyA4LjYsMy43M0M2LjI1LDIuMjggMy4xNywzIDEuNzIsNS4zN0MwLjI4LDcuNzIgMSwxMC44IDMuMzYsMTIuMjVDMy41NywxMi4zNyAzLjc4LDEyLjUgNCwxMi41OFYyMUExLDEgMCAwLDAgNSwyMkgxN0ExLDEgMCAwLDAgMTgsMjFWMTcuNUwyMiwyMS41VjEwLjVMMTgsMTQuNU0xMyw0QTIsMiAwIDAsMSAxNSw2QTIsMiAwIDAsMSAxMyw4QTIsMiAwIDAsMSAxMSw2QTIsMiAwIDAsMSAxMyw0TTYsNkEyLDIgMCAwLDEgOCw4QTIsMiAwIDAsMSA2LDEwQTIsMiAwIDAsMSA0LDhBMiwyIDAgMCwxIDYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb1dpcmVsZXNzID0gXCJNMTcsMTQuNVYxMUExLDEgMCAwLDAgMTYsMTBINEExLDEgMCAwLDAgMywxMVYyMUExLDEgMCAwLDAgNCwyMkgxNkExLDEgMCAwLDAgMTcsMjFWMTcuNUwyMSwyMS41VjEwLjVNMywzLjg2TDQuNCw1LjI0QzcuNSwyLjE5IDEyLjUsMi4xOSAxNS42LDUuMjRMMTcsMy44NkMxMy4xNCwwLjA1IDYuODcsMC4wNSAzLDMuODZNNS44LDYuNjJMNy4yLDhDOC43NSw2LjUgMTEuMjUsNi41IDEyLjgsOEwxNC4yLDYuNjJDMTEuODgsNC4zNCA4LjEyLDQuMzQgNS44LDYuNjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9XaXJlbGVzc091dGxpbmUgPSBcIk0xNSwxMlYyMEg1VjEySDE1TTE2LDEwSDRBMSwxIDAgMCwwIDMsMTFWMjFBMSwxIDAgMCwwIDQsMjJIMTZBMSwxIDAgMCwwIDE3LDIxVjE3LjVMMjEsMjEuNVYxMC41TDE3LDE0LjVWMTFBMSwxIDAgMCwwIDE2LDEwTTMsMy44Nkw0LjQsNS4yNEM3LjUsMi4xOSAxMi41LDIuMTkgMTUuNiw1LjI0TDE3LDMuODZDMTMuMTQsMC4wNSA2Ljg3LDAuMDUgMywzLjg2TTUuOCw2LjYzTDcuMiw4QzguNzUsNi41IDExLjI1LDYuNSAxMi44LDhMMTQuMiw2LjYzQzExLjg4LDQuMzQgOC4xMiw0LjM0IDUuOCw2LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdBZ2VuZGEgPSBcIk0yMSAzSDNDMi40IDMgMiAzLjQgMiA0VjEwQzIgMTAuNiAyLjQgMTEgMyAxMUgyMUMyMS42IDExIDIyIDEwLjYgMjIgMTBWNEMyMiAzLjQgMjEuNiAzIDIxIDNNMjEgMTNIM0MyLjQgMTMgMiAxMy40IDIgMTRWMjBDMiAyMC42IDIuNCAyMSAzIDIxSDIxQzIxLjYgMjEgMjIgMjAuNiAyMiAyMFYxNEMyMiAxMy40IDIxLjYgMTMgMjEgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0FnZW5kYU91dGxpbmUgPSBcIk0yMSAxM0gzQTEgMSAwIDAgMCAyIDE0VjIwQTEgMSAwIDAgMCAzIDIxSDIxQTEgMSAwIDAgMCAyMiAyMFYxNEExIDEgMCAwIDAgMjEgMTNNMjAgMTlINFYxNUgyME0yMSAzSDNBMSAxIDAgMCAwIDIgNFYxMEExIDEgMCAwIDAgMyAxMUgyMUExIDEgMCAwIDAgMjIgMTBWNEExIDEgMCAwIDAgMjEgM00yMCA5SDRWNUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3QXJyYXkgPSBcIk04LDE4SDE3VjVIOE0xOCw1VjE4SDIxVjVNNCwxOEg3VjVINFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3QXJyYXlPdXRsaW5lID0gXCJNMTUgN1YxNkgxMFY3SDE1TTIxIDVIMThWMThIMjFWNU0xNyA1SDhWMThIMTdWNU03IDVINFYxOEg3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0Nhcm91c2VsID0gXCJNMTgsNlYxN0gyMlY2TTIsMTdINlY2SDJNNywxOUgxN1Y0SDdWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0Nhcm91c2VsT3V0bGluZSA9IFwiTTIgNkg2VjE3SDJWNk03IDE5SDE3VjRIN1YxOU05IDZIMTVWMTdIOVY2TTE4IDZIMjJWMTdIMThWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3Q29sdW1uID0gXCJNMTYsNVYxOEgyMVY1TTQsMThIOVY1SDRNMTAsMThIMTVWNUgxMFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3Q29sdW1uT3V0bGluZSA9IFwiTTQgNVYxOEgyMVY1SDRNMTQgN1YxNkgxMVY3SDE0TTYgN0g5VjE2SDZWN00xOSAxNkgxNlY3SDE5VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdDb21meSA9IFwiTTMsOUg3VjVIM1Y5TTMsMTRIN1YxMEgzVjE0TTgsMTRIMTJWMTBIOFYxNE0xMywxNEgxN1YxMEgxM1YxNE04LDlIMTJWNUg4VjlNMTMsNVY5SDE3VjVIMTNNMTgsMTRIMjJWMTBIMThWMTRNMywxOUg3VjE1SDNWMTlNOCwxOUgxMlYxNUg4VjE5TTEzLDE5SDE3VjE1SDEzVjE5TTE4LDE5SDIyVjE1SDE4VjE5TTE4LDVWOUgyMlY1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdDb21meU91dGxpbmUgPSBcIk0zIDVWMTlIMjJWNUgzTTIwIDlIMTcuNzVWN0gyMFY5TTkuMjUgMTFIMTEuNVYxM0g5LjI1VjExTTcuMjUgMTNINVYxMUg3LjI1VjEzTTExLjUgOUg5LjI1VjdIMTEuNVY5TTEzLjUgN0gxNS43NVY5SDEzLjVWN00xMS41IDE1VjE3SDkuMjVWMTVIMTEuNU0xMy41IDE1SDE1Ljc1VjE3SDEzLjVWMTVNMTMuNSAxM1YxMUgxNS43NVYxM0gxMy41TTE3Ljc1IDExSDIwVjEzSDE3Ljc1VjExTTcuMjUgN1Y5SDVWN0g3LjI1TTUgMTVINy4yNVYxN0g1VjE1TTE3Ljc1IDE3VjE1SDIwVjE3SDE3Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdDb21wYWN0ID0gXCJNMywxOUg5VjEySDNWMTlNMTAsMTlIMjJWMTJIMTBWMTlNMyw1VjExSDIyVjVIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3Q29tcGFjdE91dGxpbmUgPSBcIk0zLDVWMTlIMjJWNUgzTTUsN0gyMFYxMUg1VjdNNSwxN1YxM0g5VjE3SDVNMTEsMTdWMTNIMjBWMTdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0Rhc2hib2FyZCA9IFwiTTEzLDNWOUgyMVYzTTEzLDIxSDIxVjExSDEzTTMsMjFIMTFWMTVIM00zLDEzSDExVjNIM1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3RGFzaGJvYXJkT3V0bGluZSA9IFwiTTE5LDVWN0gxNVY1SDE5TTksNVYxMUg1VjVIOU0xOSwxM1YxOUgxNVYxM0gxOU05LDE3VjE5SDVWMTdIOU0yMSwzSDEzVjlIMjFWM00xMSwzSDNWMTNIMTFWM00yMSwxMUgxM1YyMUgyMVYxMU0xMSwxNUgzVjIxSDExVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdEYXNoYm9hcmRWYXJpYW50ID0gXCJNMiw1VjE5SDhWNUgyTTksNVYxMEgxNVY1SDlNMTYsNVYxNEgyMlY1SDE2TTksMTFWMTlIMTVWMTFIOU0xNiwxNVYxOUgyMlYxNUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3RGFzaGJvYXJkVmFyaWFudE91dGxpbmUgPSBcIk0yIDVWMTlIMjJWNUgyTTIwIDEySDE2VjdIMjBWMTJNMTQgMTBIMTBWN0gxNFYxME0xMCAxMkgxNFYxN0gxMFYxMk00IDdIOFYxN0g0VjdNMTYgMTdWMTRIMjBWMTdIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0RheSA9IFwiTTIsM1Y2SDIxVjNNMjAsOEgzQTEsMSAwIDAsMCAyLDlWMTVBMSwxIDAgMCwwIDMsMTZIMjBBMSwxIDAgMCwwIDIxLDE1VjlBMSwxIDAgMCwwIDIwLDhNMiwyMUgyMVYxOEgyVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdEYXlPdXRsaW5lID0gXCJNMjEgMThIMlYyMEgyMVYxOE0xOSAxMFYxNEg0VjEwSDE5TTIwIDhIM0MyLjQ1IDggMiA4LjQ1IDIgOVYxNUMyIDE1LjU1IDIuNDUgMTYgMyAxNkgyMEMyMC41NSAxNiAyMSAxNS41NSAyMSAxNVY5QzIxIDguNDUgMjAuNTUgOCAyMCA4TTIxIDRIMlY2SDIxVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0dyaWQgPSBcIk0zLDExSDExVjNIM00zLDIxSDExVjEzSDNNMTMsMjFIMjFWMTNIMTNNMTMsM1YxMUgyMVYzXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0dyaWRPdXRsaW5lID0gXCJNMyAxMUgxMVYzSDNNNSA1SDlWOUg1TTEzIDIxSDIxVjEzSDEzTTE1IDE1SDE5VjE5SDE1TTMgMjFIMTFWMTNIM001IDE1SDlWMTlINU0xMyAzVjExSDIxVjNNMTkgOUgxNVY1SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdHcmlkUGx1cyA9IFwiTTEzIDNWMTFIMjFWM0gxM00zIDIxSDExVjEzSDNWMjFNMyAzVjExSDExVjNIM00xMyAxNkgxNlYxM0gxOFYxNkgyMVYxOEgxOFYyMUgxNlYxOEgxM1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3R3JpZFBsdXNPdXRsaW5lID0gXCJNMyAyMUgxMVYxM0gzTTUgMTVIOVYxOUg1TTMgMTFIMTFWM0gzTTUgNUg5VjlINU0xMyAzVjExSDIxVjNNMTkgOUgxNVY1SDE5TTE4IDE2SDIxVjE4SDE4VjIxSDE2VjE4SDEzVjE2SDE2VjEzSDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdIZWFkbGluZSA9IFwiTTQsNVY3SDIxVjVNNCwxMUgyMVY5SDRNNCwxOUgyMVYxN0g0TTQsMTVIMjFWMTNINFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3TGlzdCA9IFwiTTksNVY5SDIxVjVNOSwxOUgyMVYxNUg5TTksMTRIMjFWMTBIOU00LDlIOFY1SDRNNCwxOUg4VjE1SDRNNCwxNEg4VjEwSDRWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0xpc3RPdXRsaW5lID0gXCJNMyA1VjE5SDIwVjVIM003IDdWOUg1VjdIN001IDEzVjExSDdWMTNINU01IDE1SDdWMTdINVYxNU0xOCAxN0g5VjE1SDE4VjE3TTE4IDEzSDlWMTFIMThWMTNNMTggOUg5VjdIMThWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3TW9kdWxlID0gXCJNMTYsNVYxMUgyMVY1TTEwLDExSDE1VjVIMTBNMTYsMThIMjFWMTJIMTZNMTAsMThIMTVWMTJIMTBNNCwxOEg5VjEySDRNNCwxMUg5VjVINFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3TW9kdWxlT3V0bGluZSA9IFwiTTQgNVYxOEgyMVY1SDRNMTQgN1YxMC41SDExVjdIMTRNNiA3SDlWMTAuNUg2VjdNNiAxNlYxMi41SDlWMTZINk0xMSAxNlYxMi41SDE0VjE2SDExTTE5IDE2SDE2VjEyLjVIMTlWMTZNMTYgMTAuNVY3SDE5VjEwLjVIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1BhcmFsbGVsID0gXCJNMTkgM1YyMUgxNVYzSDE5TTE0IDNWMjFIMTBWM0gxNE05IDNWMjFINVYzSDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1BhcmFsbGVsT3V0bGluZSA9IFwiTTE5IDNINVYyMUgxOVYzTTE3IDE5SDE1VjVIMTdWMTlNMTMgMTlIMTFWNUgxM1YxOU03IDVIOVYxOUg3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1F1aWx0ID0gXCJNMTAsNVYxMUgyMVY1TTE2LDE4SDIxVjEySDE2TTQsMThIOVY1SDRNMTAsMThIMTVWMTJIMTBWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1F1aWx0T3V0bGluZSA9IFwiTTQgNVYxOEgyMVY1SDRNNiAxNlY3SDlWMTZINk0xMSAxNlYxMi41SDE0VjE2SDExTTE5IDE2SDE2VjEyLjVIMTlWMTZNMTEgMTAuNVY3SDE5VjEwLjVIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1NlcXVlbnRpYWwgPSBcIk0zIDVIMjFWOUgzVjVNMyAxMEgyMVYxNEgzVjEwTTMgMTVIMjFWMTlIM1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3U2VxdWVudGlhbE91dGxpbmUgPSBcIk0zIDVWMTlIMjFWNUgzTTE5IDdWOUg1VjdIMTlNMTkgMTFWMTNINVYxMUgxOU01IDE3VjE1SDE5VjE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1NwbGl0SG9yaXpvbnRhbCA9IFwiTTMsNUgyMVY3SDNWNU0zLDExVjlIMjFWMTFIM00zLDE5VjEzSDIxVjE5SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1NwbGl0VmVydGljYWwgPSBcIk0xMyw1SDIxVjE5SDEzVjVNMyw1SDExVjdIM1Y1TTMsMTFWOUgxMVYxMUgzTTMsMTlWMTdIMTFWMTlIM00zLDE1VjEzSDExVjE1SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1N0cmVhbSA9IFwiTTQsNVYxMUgyMVY1TTQsMThIMjFWMTJINFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3U3RyZWFtT3V0bGluZSA9IFwiTTQgNlYxOEgyMVY2SDRNMTkgMTZINlYxM0gxOVYxNk02IDExVjhIMTlWMTFINlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3V2VlayA9IFwiTTEzLDVIMTBBMSwxIDAgMCwwIDksNlYxOEExLDEgMCAwLDAgMTAsMTlIMTNBMSwxIDAgMCwwIDE0LDE4VjZBMSwxIDAgMCwwIDEzLDVNMjAsNUgxN0ExLDEgMCAwLDAgMTYsNlYxOEExLDEgMCAwLDAgMTcsMTlIMjBBMSwxIDAgMCwwIDIxLDE4VjZBMSwxIDAgMCwwIDIwLDVNNiw1SDNBMSwxIDAgMCwwIDIsNlYxOEExLDEgMCAwLDAgMywxOUg2QTEsMSAwIDAsMCA3LDE4VjZBMSwxIDAgMCwwIDYsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3V2Vla091dGxpbmUgPSBcIk0yMSA0SDNDMi40NSA0IDIgNC40NSAyIDVWMTlDMiAxOS41NSAyLjQ1IDIwIDMgMjBIMjFDMjEuNTUgMjAgMjIgMTkuNTUgMjIgMTlWNUMyMiA0LjQ1IDIxLjU1IDQgMjEgNE04IDE4SDRWNkg4VjE4TTE0IDE4SDEwVjZIMTRWMThNMjAgMThIMTZWNkgyMFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaW1lbyA9IFwiTTIyLDcuNDJDMjEuOTEsOS4zNyAyMC41NSwxMi4wNCAxNy45MiwxNS40NEMxNS4yLDE5IDEyLjksMjAuNzUgMTEsMjAuNzVDOS44NSwyMC43NSA4Ljg2LDE5LjY3IDguMDUsMTcuNUM3LjUsMTUuNTQgNywxMy41NiA2LjQ0LDExLjU4QzUuODQsOS40MiA1LjIsOC4zNCA0LjUsOC4zNEM0LjM2LDguMzQgMy44NCw4LjY2IDIuOTQsOS4yOUwyLDguMDdDMyw3LjIgMy45Niw2LjMzIDQuOTIsNS40NkM2LjI0LDQuMzIgNy4yMywzLjcyIDcuODgsMy42NkM5LjQ0LDMuNSAxMC40LDQuNTggMTAuNzYsNi44NkMxMS4xNSw5LjMzIDExLjQyLDEwLjg2IDExLjU3LDExLjQ2QzEyLDEzLjUgMTIuNSwxNC41IDEzLjA1LDE0LjVDMTMuNDcsMTQuNSAxNC4xLDEzLjg2IDE0Ljk0LDEyLjUzQzE1Ljc4LDExLjIxIDE2LjIzLDEwLjIgMTYuMjksOS41QzE2LjQxLDguMzYgMTUuOTYsNy43OSAxNC45NCw3Ljc5QzE0LjQ2LDcuNzkgMTMuOTcsNy45IDEzLjQ2LDguMTJDMTQuNDQsNC44OSAxNi4zMiwzLjMyIDE5LjA5LDMuNDFDMjEuMTUsMy40NyAyMi4xMiw0LjgxIDIyLDcuNDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlvbGluID0gXCJNMTEsMkExLDEgMCAwLDAgMTAsM1Y1TDEwLDlBMC41LDAuNSAwIDAsMCAxMC41LDkuNUgxMkEwLjUsMC41IDAgMCwxIDEyLjUsMTBBMC41LDAuNSAwIDAsMSAxMiwxMC41SDEwLjVDOS43MywxMC41IDksOS43NyA5LDlWNS4xNkM3LjI3LDUuNiA2LDcuMTMgNiw5VjEwLjVBMi41LDIuNSAwIDAsMSA4LjUsMTNBMi41LDIuNSAwIDAsMSA2LDE1LjVWMTdDNiwxOS43NyA4LjIzLDIyIDExLDIySDEzQzE1Ljc3LDIyIDE4LDE5Ljc3IDE4LDE3VjE1LjVBMi41LDIuNSAwIDAsMSAxNS41LDEzQTIuNSwyLjUgMCAwLDEgMTgsMTAuNVY5QzE4LDYuNzggMTYuMjIsNSAxNCw1VjNBMSwxIDAgMCwwIDEzLDJIMTFNMTAuNzUsMTYuNUgxMy4yNUwxMi43NSwyMEgxMS4yNUwxMC43NSwxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpcnR1YWxSZWFsaXR5ID0gXCJNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNINU02LDlINy41TDguNSwxMi40M0w5LjUsOUgxMUw5LjI1LDE1SDcuNzVMNiw5TTEzLDlIMTYuNUMxNy4zNSw5IDE4LDkuNjUgMTgsMTAuNVYxMS41QzE4LDEyLjEgMTcuNiwxMi42NSAxNy4xLDEyLjlMMTgsMTVIMTYuNUwxNS42NSwxM0gxNC41VjE1SDEzVjlNMTQuNSwxMC41VjExLjVIMTYuNVYxMC41SDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlydXMgPSBcIk0xOS44MiAxNEMyMC4xMyAxNC40NSAyMC42NiAxNC43NSAyMS4yNSAxNC43NUMyMi4yMiAxNC43NSAyMyAxMy45NyAyMyAxM1MyMi4yMiAxMS4yNSAyMS4yNSAxMS4yNUMyMC42NiAxMS4yNSAyMC4xMyAxMS41NSAxOS44MiAxMkgxOUMxOSAxMC40MyAxOC41IDkgMTcuNiA3LjgxTDE4Ljk0IDYuNDdDMTkuNSA2LjU3IDIwLjA3IDYuNDEgMjAuNSA2QzIxLjE3IDUuMzEgMjEuMTcgNC4yIDIwLjUgMy41QzE5LjgxIDIuODMgMTguNyAyLjgzIDE4IDMuNUMxNy41OSAzLjkzIDE3LjQzIDQuNSAxNy41MyA1LjA2TDE2LjE5IDYuNEMxNS4yNyA1LjcxIDE0LjE5IDUuMjUgMTMgNS4wOFYzLjY4QzEzLjQ1IDMuMzcgMTMuNzUgMi44NCAxMy43NSAyLjI1QzEzLjc1IDEuMjggMTIuOTcgLjUgMTIgLjVTMTAuMjUgMS4yOCAxMC4yNSAyLjI1QzEwLjI1IDIuODQgMTAuNTUgMy4zNyAxMSAzLjY4VjUuMDhDMTAuMSA1LjIxIDkuMjYgNS41IDguNSA1Ljk0TDcuMzkgNC4zNUM3LjU4IDMuODMgNy41MyAzLjIzIDcuMTkgMi43NUM2LjYzIDEuOTYgNS41NCAxLjc2IDQuNzUgMi4zMkMzLjk2IDIuODcgMy43NiAzLjk2IDQuMzIgNC43NUM0LjY2IDUuMjQgNS4yIDUuNSA1Ljc1IDUuNUw2LjkzIDcuMThDNi41IDcuNjEgNi4xNiA4LjA5IDUuODcgOC42MkM1LjI1IDguMzggNC41IDguNSA0IDlDMy4zMyA5LjcgMy4zMyAxMC44IDQgMTEuNUM0LjI5IDExLjc3IDQuNjQgMTEuOTMgNSAxMkw1IDEyQzUgMTIuNTQgNS4wNyAxMy4wNiA1LjE4IDEzLjU2TDMuODcgMTMuOTFDMy40NSAxMy41NiAyLjg3IDEzLjQxIDIuMjkgMTMuNTZDMS4zNiAxMy44MSAuODA4IDE0Ljc3IDEuMDYgMTUuNzFDMS4zMSAxNi42NCAyLjI4IDE3LjE5IDMuMjEgMTYuOTRDMy43OCAxNi43OCA0LjIxIDE2LjM2IDQuMzkgMTUuODRMNS45IDE1LjQzQzYuMzUgMTYuMjIgNi45NSAxNi45MiA3LjY1IDE3LjVMNi41NSAxOS41QzYgMTkuNTggNS41IDE5Ljg5IDUuMjEgMjAuNDJDNC43NSAyMS4yNyA1LjA3IDIyLjMzIDUuOTIgMjIuNzlDNi43NyAyMy4yNSA3LjgzIDIyLjkzIDguMjkgMjIuMDhDOC41NyAyMS41NiA4LjU2IDIwLjk2IDguMzEgMjAuNDdMOS4zOCAxOC41QzEwLjE5IDE4LjgyIDExLjA3IDE5IDEyIDE5QzEyLjA2IDE5IDEyLjEyIDE5IDEyLjE4IDE5QzEyLjA1IDE5LjI2IDEyIDE5LjU2IDEyIDE5Ljg4QzEyLjA4IDIwLjg1IDEyLjkyIDIxLjU3IDEzLjg4IDIxLjVTMTUuNTcgMjAuNTggMTUuNSAxOS42MkMxNS40NiAxOS4xMiAxNS4yMSAxOC42OCAxNC44NSAxOC4zOUMxNS4zMiAxOC4xOCAxNS43NyAxNy45MSAxNi4xOSAxNy42TDE4LjUzIDE5Ljk0QzE4LjQzIDIwLjUgMTguNTkgMjEuMDcgMTkgMjEuNUMxOS43IDIyLjE3IDIwLjggMjIuMTcgMjEuNSAyMS41UzIyLjE3IDE5LjcgMjEuNSAxOUMyMS4wNyAxOC41OSAyMC41IDE4LjQzIDE5Ljk0IDE4LjUzTDE3LjYgMTYuMTlDMTguMDkgMTUuNTQgMTguNDcgMTQuOCAxOC43MSAxNEgxOS44Mk0xMC41IDEyQzkuNjcgMTIgOSAxMS4zMyA5IDEwLjVTOS42NyA5IDEwLjUgOSAxMiA5LjY3IDEyIDEwLjUgMTEuMzMgMTIgMTAuNSAxMk0xNCAxNUMxMy40NSAxNSAxMyAxNC41NSAxMyAxNEMxMyAxMy40NSAxMy40NSAxMyAxNCAxM1MxNSAxMy40NSAxNSAxNEMxNSAxNC41NSAxNC41NSAxNSAxNCAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaXJ1c091dGxpbmUgPSBcIk0xMiAuNUMxMS4wMyAuNSAxMC4yNSAxLjI4IDEwLjI1IDIuMjVDMTAuMjUgMi44NCAxMC41NSAzLjM3IDExIDMuNjhWNS4wOEMxMC4xIDUuMjEgOS4yNiA1LjUgOC41IDUuOTRMNy4zOSA0LjM1QzcuNTggMy44MyA3LjUzIDMuMjMgNy4xOSAyLjc1QzYuODQgMi4yNiA2LjMgMiA1Ljc1IDJDNS40IDIgNS4wNSAyLjEgNC43NSAyLjMyQzMuOTYgMi44NyAzLjc2IDMuOTYgNC4zMiA0Ljc1QzQuNjYgNS4yNCA1LjIgNS41IDUuNzUgNS41TDYuOTMgNy4xOEM2LjUgNy42MSA2LjE2IDguMDkgNS44NyA4LjYyQzUuNjcgOC41NCA1LjQ2IDguNSA1LjI1IDguNUM0LjggOC41IDQuMzUgOC42NyA0IDlDMy4zMyA5LjcgMy4zMyAxMC44IDQgMTEuNUM0LjI5IDExLjc3IDQuNjQgMTEuOTIgNSAxMkw1IDEyQzUgMTIuNTQgNS4wNyAxMy4wNiA1LjE4IDEzLjU2TDMuODcgMTMuOTFDMy41NiAxMy42NSAzLjE2IDEzLjUgMi43NSAxMy41QzIuNiAxMy41IDIuNDQgMTMuNSAyLjI5IDEzLjU2QzEuMzYgMTMuODEgLjgwOSAxNC43NyAxLjA2IDE1LjcxQzEuMjcgMTYuNSAyIDE3IDIuNzUgMTdDMi45IDE3IDMuMDUgMTcgMy4yMSAxNi45NEMzLjc4IDE2Ljc4IDQuMjEgMTYuMzYgNC4zOSAxNS44NEw1LjkgMTUuNDNDNi4zNSAxNi4yMiA2Ljk1IDE2LjkyIDcuNjUgMTcuNUw2LjU1IDE5LjVDNiAxOS41OCA1LjUgMTkuODkgNS4yMSAyMC40MkM0Ljc1IDIxLjI3IDUuMDcgMjIuMzMgNS45MiAyMi43OUM2LjE4IDIyLjkzIDYuNDcgMjMgNi43NSAyM0M3LjM3IDIzIDcuOTcgMjIuNjcgOC4yOSAyMi4wOEM4LjU3IDIxLjU2IDguNTYgMjAuOTYgOC4zMSAyMC40N0w5LjM4IDE4LjVDMTAuMTkgMTguODIgMTEuMDcgMTkgMTIgMTlDMTIuMDYgMTkgMTIuMTIgMTkgMTIuMTggMTlDMTIuMDUgMTkuMjYgMTIgMTkuNTYgMTIgMTkuODhDMTIuMDggMjAuOCAxMi44NCAyMS41IDEzLjc1IDIxLjVDMTMuNzkgMjEuNSAxMy44NCAyMS41IDEzLjg4IDIxLjVDMTQuODUgMjEuNDIgMTUuNTcgMjAuNTggMTUuNSAxOS42MkMxNS40NiAxOS4xMiAxNS4yMSAxOC42OCAxNC44NSAxOC4zOUMxNS4zMiAxOC4xOCAxNS43NyAxNy45MSAxNi4xOSAxNy42TDE4LjUzIDE5Ljk0QzE4LjQzIDIwLjUgMTguNTkgMjEuMDcgMTkgMjEuNUMxOS4zNSAyMS44MyAxOS44IDIyIDIwLjI1IDIyUzIxLjE1IDIxLjgzIDIxLjUgMjEuNUMyMi4xNyAyMC44IDIyLjE3IDE5LjcgMjEuNSAxOUMyMS4xNSAxOC42NyAyMC43IDE4LjUgMjAuMjUgMTguNUMyMC4xNSAxOC41IDIwLjA1IDE4LjUgMTkuOTQgMTguNTNMMTcuNiAxNi4xOUMxOC4wOSAxNS41NCAxOC40NyAxNC44IDE4LjcxIDE0SDE5LjgyQzIwLjEzIDE0LjQ1IDIwLjY2IDE0Ljc1IDIxLjI1IDE0Ljc1QzIyLjIyIDE0Ljc1IDIzIDEzLjk3IDIzIDEzUzIyLjIyIDExLjI1IDIxLjI1IDExLjI1QzIwLjY2IDExLjI1IDIwLjEzIDExLjU1IDE5LjgyIDEySDE5QzE5IDEwLjQzIDE4LjUgOSAxNy42IDcuODFMMTguOTQgNi40N0MxOS4wNSA2LjUgMTkuMTUgNi41IDE5LjI1IDYuNUMxOS43IDYuNSAyMC4xNSA2LjMzIDIwLjUgNkMyMS4xNyA1LjMxIDIxLjE3IDQuMiAyMC41IDMuNUMyMC4xNSAzLjE3IDE5LjcgMyAxOS4yNSAzUzE4LjM1IDMuMTcgMTggMy41QzE3LjU5IDMuOTMgMTcuNDMgNC41IDE3LjUzIDUuMDZMMTYuMTkgNi40QzE1LjI3IDUuNzEgMTQuMTkgNS4yNSAxMyA1LjA4VjMuNjhDMTMuNDUgMy4zNyAxMy43NSAyLjg0IDEzLjc1IDIuMjVDMTMuNzUgMS4yOCAxMi45NyAuNSAxMiAuNU0xMiAxN0M5LjI0IDE3IDcgMTQuNzYgNyAxMlM5LjI0IDcgMTIgNyAxNyA5LjI0IDE3IDEyIDE0Ljc2IDE3IDEyIDE3TTEwLjUgOUM5LjY3IDkgOSA5LjY3IDkgMTAuNVM5LjY3IDEyIDEwLjUgMTIgMTIgMTEuMzMgMTIgMTAuNSAxMS4zMyA5IDEwLjUgOU0xNCAxM0MxMy40NSAxMyAxMyAxMy40NSAxMyAxNEMxMyAxNC41NSAxMy40NSAxNSAxNCAxNUMxNC41NSAxNSAxNSAxNC41NSAxNSAxNEMxNSAxMy40NSAxNC41NSAxMyAxNCAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWayA9IFwiTTE1LjA3IDJIOC45M0MzLjMzIDIgMiAzLjMzIDIgOC45M1YxNS4wN0MyIDIwLjY3IDMuMzMgMjIgOC45MyAyMkgxNS4wN0MyMC42NyAyMiAyMiAyMC42NyAyMiAxNS4wN1Y4LjkzQzIyIDMuMzMgMjAuNjcgMiAxNS4wNyAyTTE4LjE1IDE2LjI3SDE2LjY5QzE2LjE0IDE2LjI3IDE1Ljk3IDE1LjgyIDE1IDE0LjgzQzE0LjEyIDE0IDEzLjc0IDEzLjg4IDEzLjUzIDEzLjg4QzEzLjI0IDEzLjg4IDEzLjE1IDEzLjk2IDEzLjE1IDE0LjM4VjE1LjY5QzEzLjE1IDE2LjA0IDEzLjA0IDE2LjI2IDEyLjExIDE2LjI2QzEwLjU3IDE2LjI2IDguODYgMTUuMzIgNy42NiAxMy41OUM1Ljg1IDExLjA1IDUuMzYgOS4xMyA1LjM2IDguNzVDNS4zNiA4LjU0IDUuNDMgOC4zNCA1Ljg1IDguMzRINy4zMkM3LjY5IDguMzQgNy44MyA4LjUgNy45NyA4LjlDOC42OSAxMSA5Ljg5IDEyLjggMTAuMzggMTIuOEMxMC41NyAxMi44IDEwLjY1IDEyLjcxIDEwLjY1IDEyLjI1VjEwLjFDMTAuNiA5LjEyIDEwLjA3IDkuMDMgMTAuMDcgOC42OEMxMC4wNyA4LjUgMTAuMjEgOC4zNCAxMC40NCA4LjM0SDEyLjczQzEzLjA0IDguMzQgMTMuMTUgOC41IDEzLjE1IDguODhWMTEuNzdDMTMuMTUgMTIuMDggMTMuMjggMTIuMTkgMTMuMzggMTIuMTlDMTMuNTYgMTIuMTkgMTMuNzIgMTIuMDggMTQuMDUgMTEuNzRDMTUuMSAxMC41NyAxNS44NSA4Ljc2IDE1Ljg1IDguNzZDMTUuOTUgOC41NSAxNi4xMSA4LjM1IDE2LjUgOC4zNUgxNy45M0MxOC4zNyA4LjM1IDE4LjQ3IDguNTggMTguMzcgOC44OUMxOC4xOSA5Ljc0IDE2LjQxIDEyLjI1IDE2LjQzIDEyLjI1QzE2LjI3IDEyLjUgMTYuMjEgMTIuNjEgMTYuNDMgMTIuOUMxNi41OCAxMy4xMSAxNy4wOSAxMy41NSAxNy40MyAxMy45NEMxOC4wNSAxNC42NSAxOC41MyAxNS4yNCAxOC42NiAxNS42NUMxOC43NyAxNi4wNiAxOC41NyAxNi4yNyAxOC4xNSAxNi4yN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWbGMgPSBcIk0xMiwxQzExLjU4LDEgMTEuMTksMS4yMyAxMSwxLjc1TDkuODgsNC44OEMxMC4zNiw1LjQgMTEuMjgsNS41IDEyLDUuNUMxMi43Miw1LjUgMTMuNjQsNS40IDE0LjEzLDQuODhMMTMsMS43NUMxMi44MiwxLjI1IDEyLjQyLDEgMTIsMU04LjQ0LDguOTFMNywxMi45MUM4LjA3LDE0LjI3IDEwLjI2LDE0LjUgMTIsMTQuNUMxMy43NCwxNC41IDE1LjkzLDE0LjI3IDE3LDEyLjkxTDE1LjU2LDguOTFDMTQuNzYsOS44MyAxMy4yNCwxMCAxMiwxMEMxMC43NiwxMCA5LjI0LDkuODMgOC40NCw4LjkxTTUuNDQsMTVDNC42MiwxNSAzLjc2LDE1LjY1IDMuNTMsMTYuNDRMMi4wNiwyMS41NkMxLjg0LDIyLjM1IDIuMywyMyAzLjEzLDIzSDIwLjg4QzIxLjcsMjMgMjIuMTYsMjIuMzUgMjEuOTQsMjEuNTZMMjAuNDcsMTYuNDRDMjAuMjQsMTUuNjUgMTkuMzgsMTUgMTguNTYsMTVIMTcuNzVMMTguMDksMTUuOTdDMTguMjEsMTYuMjkgMTguMjksMTYuNjkgMTguMDksMTYuOTdDMTYuODQsMTguNyAxNC4xNCwxOSAxMiwxOUM5Ljg2LDE5IDcuMTYsMTguNyA1LjkxLDE2Ljk3QzUuNzEsMTYuNjkgNS43OSwxNi4yOSA1LjkxLDE1Ljk3TDYuMjUsMTVINS40NFpcIjtcclxuZXhwb3J0IHZhciBtZGlWb2ljZU9mZiA9IFwiTTIsMy4yN0wzLjI4LDJMMjIsMjAuNzJMMjAuNzMsMjJMMTYuNzMsMThDMTYuOSwxOC4zMSAxNywxOC42NCAxNywxOVYyMUgxVjE5QzEsMTYuMzQgNi4zMywxNSA5LDE1QzEwLjc3LDE1IDEzLjcyLDE1LjU5IDE1LjUsMTYuNzdMMTEuMTIsMTIuMzlDMTAuNSwxMi43OCA5Ljc4LDEzIDksMTNBNCw0IDAgMCwxIDUsOUM1LDguMjIgNS4yMiw3LjUgNS42MSw2Ljg4TDIsMy4yN005LDVBNCw0IDAgMCwxIDEzLDlWOS4xN0w4LjgzLDVIOU0xNi43Niw1LjM2QzE4Ljc4LDcuNTYgMTguNzgsMTAuNjEgMTYuNzYsMTIuNjNMMTUuMDgsMTAuOTRDMTUuOTIsOS43NiAxNS45Miw4LjIzIDE1LjA4LDcuMDVMMTYuNzYsNS4zNk0yMC4wNywyQzI0LDYuMDUgMjMuOTcsMTIuMTEgMjAuMDcsMTZMMTguNDQsMTQuMzdDMjEuMjEsMTEuMTkgMjEuMjEsNi42NSAxOC40NCwzLjYzTDIwLjA3LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9pY2VtYWlsID0gXCJNMTguNSwxNUEzLjUsMy41IDAgMCwxIDE1LDExLjVBMy41LDMuNSAwIDAsMSAxOC41LDhBMy41LDMuNSAwIDAsMSAyMiwxMS41QTMuNSwzLjUgMCAwLDEgMTguNSwxNU01LjUsMTVBMy41LDMuNSAwIDAsMSAyLDExLjVBMy41LDMuNSAwIDAsMSA1LjUsOEEzLjUsMy41IDAgMCwxIDksMTEuNUEzLjUsMy41IDAgMCwxIDUuNSwxNU0xOC41LDZBNS41LDUuNSAwIDAsMCAxMywxMS41QzEzLDEyLjgzIDEzLjQ3LDE0LjA1IDE0LjI2LDE1SDkuNzRDMTAuNTMsMTQuMDUgMTEsMTIuODMgMTEsMTEuNUE1LjUsNS41IDAgMCwwIDUuNSw2QTUuNSw1LjUgMCAwLDAgMCwxMS41QTUuNSw1LjUgMCAwLDAgNS41LDE3SDE4LjVBNS41LDUuNSAwIDAsMCAyNCwxMS41QTUuNSw1LjUgMCAwLDAgMTguNSw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbGxleWJhbGwgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMy42LDIwLjM1QzE1Ljk2LDE4LjA0IDE3LjY5LDE1LjA4IDE4LjUsMTEuNzZDMTcuODQsMTEuNjIgMTcuMTgsMTEuNTQgMTYuNSwxMS41QzE1LjU2LDE1LjExIDEzLjQxLDE4LjIyIDEwLjUsMjAuMzdDMTEsMjAuNDUgMTEuNSwyMC41IDEyLDIwLjVDMTIuNTUsMjAuNSAxMy4wOCwyMC40NSAxMy42LDIwLjM1TTkuMjMsMjAuMDRDMTIuMjMsMTguMDcgMTQuNSwxNS4wNSAxNS40NiwxMS41QzE0LjcxLDExLjU1IDEzLjk3LDExLjY1IDEzLjI3LDExLjgxQzEyLjE4LDE0Ljg5IDkuOTcsMTcuNDQgNy4xMywxOC45N0M3Ljc3LDE5LjQyIDguNSwxOS43OCA5LjIzLDIwLjA0TTIwLjUsMTIuMzdDMjAuMTYsMTIuMjMgMTkuODEsMTIuMTEgMTkuNDYsMTJDMTguNzYsMTQuOSAxNy4zOSwxNy41MyAxNS41NCwxOS43M0MxOC4zNiwxOC40NCAyMC4zNSwxNS42NCAyMC41LDEyLjM3TTMuNTYsMTEuMDRDMy41LDExLjM1IDMuNSwxMS42OCAzLjUsMTJDMy41LDE0LjUgNC41NywxNi43MyA2LjI3LDE4LjI4QzYuODYsMTggNy40MSwxNy42NiA3Ljk0LDE3LjI5QzYuMDgsMTUuNTQgNC41OCwxMy40MSAzLjU2LDExLjA0TTUuMzMsNi43NEM0LjczLDcuNSA0LjI2LDguMzUgMy45NSw5LjI4QzQuOTIsMTIuMTMgNi41OCwxNC42NiA4Ljc0LDE2LjY3QzkuMjUsMTYuMjQgOS43MiwxNS43NyAxMC4xNSwxNS4yNkM3Ljc0LDEzLjAzIDYsMTAuMDggNS4zMyw2Ljc0TTguMDQsNC41QzcuMzYsNC44NSA2LjczLDUuMyA2LjE4LDUuODJDNi43MSw5LjIxIDguMzcsMTIuMjMgMTAuNzcsMTQuNDdDMTEuMTcsMTMuOTEgMTEuNSwxMy4zMiAxMS44MiwxMi43QzkuNjgsMTAuNTYgOC4yOCw3LjY5IDguMDQsNC41TTE5Ljk2LDkuMDNDMTguNyw4LjY4IDE3LjM3LDguNSAxNiw4LjVDMTQuMSw4LjUgMTIuMjgsOC44NSAxMC42MSw5LjVDMTAuOTYsMTAuMSAxMS4zNSwxMC42NyAxMS44LDExLjJDMTMuMTIsMTAuNzUgMTQuNTMsMTAuNSAxNiwxMC41QzE3LjU3LDEwLjUgMTkuMDgsMTAuNzggMjAuNDcsMTEuMjlDMjAuNCwxMC41IDIwLjIzLDkuNzQgMTkuOTYsOS4wM00xNy41NCw1LjU3QzE3LjAzLDUuNSAxNi41LDUuNSAxNiw1LjVDMTMuNjksNS41IDExLjQ3LDUuOTQgOS40NCw2LjczQzkuNjIsNy4zOCA5Ljg2LDggMTAuMTQsOC42MUMxMS45Niw3Ljg5IDEzLjkzLDcuNSAxNiw3LjVDMTcuMTgsNy41IDE4LjMyLDcuNjMgMTkuNDIsNy44N0MxOC45Myw3IDE4LjI5LDYuMjEgMTcuNTQsNS41N00xNiw0LjVDMTQuNzksMy44NyAxMy40NCwzLjUgMTIsMy41QzEwLjk1LDMuNSA5Ljk0LDMuNyA5LDQuMDVDOS4wNCw0LjYzIDkuMTEsNS4yIDkuMjEsNS43NUMxMS4zMSw0Ljk1IDEzLjYsNC41IDE2LDQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWb2x1bWVIaWdoID0gXCJNMTQsMy4yM1Y1LjI5QzE2Ljg5LDYuMTUgMTksOC44MyAxOSwxMkMxOSwxNS4xNyAxNi44OSwxNy44NCAxNCwxOC43VjIwLjc3QzE4LDE5Ljg2IDIxLDE2LjI4IDIxLDEyQzIxLDcuNzIgMTgsNC4xNCAxNCwzLjIzTTE2LjUsMTJDMTYuNSwxMC4yMyAxNS41LDguNzEgMTQsNy45N1YxNkMxNS41LDE1LjI5IDE2LjUsMTMuNzYgMTYuNSwxMk0zLDlWMTVIN0wxMiwyMFY0TDcsOUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbHVtZUxvdyA9IFwiTTcsOVYxNUgxMUwxNiwyMFY0TDExLDlIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWb2x1bWVNZWRpdW0gPSBcIk01LDlWMTVIOUwxNCwyMFY0TDksOU0xOC41LDEyQzE4LjUsMTAuMjMgMTcuNSw4LjcxIDE2LDcuOTdWMTZDMTcuNSwxNS4yOSAxOC41LDEzLjc2IDE4LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9sdW1lTWludXMgPSBcIk0zLDlIN0wxMiw0VjIwTDcsMTVIM1Y5TTE0LDExSDIyVjEzSDE0VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbHVtZU11dGUgPSBcIk0zLDlIN0wxMiw0VjIwTDcsMTVIM1Y5TTE2LjU5LDEyTDE0LDkuNDFMMTUuNDEsOEwxOCwxMC41OUwyMC41OSw4TDIyLDkuNDFMMTkuNDEsMTJMMjIsMTQuNTlMMjAuNTksMTZMMTgsMTMuNDFMMTUuNDEsMTZMMTQsMTQuNTlMMTYuNTksMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9sdW1lT2ZmID0gXCJNMTIsNEw5LjkxLDYuMDlMMTIsOC4xOE00LjI3LDNMMyw0LjI3TDcuNzMsOUgzVjE1SDdMMTIsMjBWMTMuMjdMMTYuMjUsMTcuNTNDMTUuNTgsMTguMDQgMTQuODMsMTguNDYgMTQsMTguN1YyMC43N0MxNS4zOCwyMC40NSAxNi42MywxOS44MiAxNy42OCwxOC45NkwxOS43MywyMUwyMSwxOS43M0wxMiwxMC43M00xOSwxMkMxOSwxMi45NCAxOC44LDEzLjgyIDE4LjQ2LDE0LjY0TDE5Ljk3LDE2LjE1QzIwLjYyLDE0LjkxIDIxLDEzLjUgMjEsMTJDMjEsNy43MiAxOCw0LjE0IDE0LDMuMjNWNS4yOUMxNi44OSw2LjE1IDE5LDguODMgMTksMTJNMTYuNSwxMkMxNi41LDEwLjIzIDE1LjUsOC43MSAxNCw3Ljk3VjEwLjE4TDE2LjQ1LDEyLjYzQzE2LjUsMTIuNDMgMTYuNSwxMi4yMSAxNi41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbHVtZVBsdXMgPSBcIk0zLDlIN0wxMiw0VjIwTDcsMTVIM1Y5TTE0LDExSDE3VjhIMTlWMTFIMjJWMTNIMTlWMTZIMTdWMTNIMTRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9sdW1lU291cmNlID0gXCJNMyA5VjE1SDdMMTIgMjBWNEw3IDlIM00xNiAxNUgxNFY5SDE2VjE1TTIwIDE5SDE4VjVIMjBWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9sdW1lVmFyaWFudE9mZiA9IFwiTTUuNjQsMy42NEwyMS4zNiwxOS4zNkwxOS45NSwyMC43OEwxNiwxNi44M1YyMEwxMSwxNUg3VjlIOC4xN0w0LjIyLDUuMDVMNS42NCwzLjY0TTE2LDRWMTEuMTdMMTIuNDEsNy41OEwxNiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbHVtZVZpYnJhdGUgPSBcIk00IDlWMTVIOEwxMyAyMFY0TDggOUg0TTE2LjU1IDIuNDdMMTUuNSAzLjUzTDE3LjkzIDZMMTUgOUwxNy45MyAxMkwxNSAxNUwxNy45MyAxOEwxNS41IDIwLjQ3TDE2LjU1IDIxLjUzTDIwIDE4TDE3LjA3IDE1TDIwIDEyTDE3LjA3IDlMMjAgNkwxNi41NSAyLjQ3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvdGUgPSBcIk0xOCwxM0gxNy4zMkwxNS4zMiwxNUgxNy4yM0wxOSwxN0g1TDYuNzgsMTVIOC44M0w2LjgzLDEzSDZMMywxNlYyMEEyLDIgMCAwLDAgNSwyMkgxOUEyLDIgMCAwLDAgMjEsMjBWMTZMMTgsMTNNMTcsNy45NUwxMi4wNSwxMi45TDguNSw5LjM2TDEzLjQ2LDQuNDFMMTcsNy45NU0xMi43NiwyLjI5TDYuMzksOC42NkM2LDkuMDUgNiw5LjY4IDYuMzksMTAuMDdMMTEuMzQsMTVDMTEuNzMsMTUuNDEgMTIuMzYsMTUuNDEgMTIuNzUsMTVMMTkuMTEsOC42NkMxOS41LDguMjcgMTkuNSw3LjY0IDE5LjExLDcuMjVMMTQuMTYsMi4zQzEzLjc4LDEuOSAxMy4xNSwxLjkgMTIuNzYsMi4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlWb3RlT3V0bGluZSA9IFwiTTE4LDEzTDIxLDE2VjIwQzIxLDIxLjExIDIwLjEsMjIgMTksMjJINUMzLjg5LDIyIDMsMjEuMSAzLDIwVjE2TDYsMTNINi44M0w4LjgzLDE1SDYuNzhMNSwxN0gxOUwxNy4yMywxNUgxNS4zMkwxNy4zMiwxM0gxOE0xOSwyMFYxOUg1VjIwSDE5TTExLjM0LDE1TDYuMzksMTAuMDdDNiw5LjY4IDYsOS4wNSA2LjM5LDguNjZMMTIuNzYsMi4yOUMxMy4xNSwxLjkgMTMuNzgsMS45IDE0LjE2LDIuM0wxOS4xMSw3LjI1QzE5LjUsNy42NCAxOS41LDguMjcgMTkuMTEsOC42NkwxMi43NSwxNUMxMi4zNiwxNS40MSAxMS43MywxNS40MSAxMS4zNCwxNU0xMy40Niw0LjQxTDguNSw5LjM2TDEyLjA1LDEyLjlMMTcsNy45NUwxMy40Niw0LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZwbiA9IFwiTTksNUgxNUwxMiw4TDksNU0xMC41LDE0LjY2QzEwLjIsMTUgMTAsMTUuNSAxMCwxNkEyLDIgMCAwLDAgMTIsMThBMiwyIDAgMCwwIDE0LDE2QzE0LDE1LjQ1IDEzLjc4LDE0Ljk1IDEzLjQxLDE0LjU5TDE0LjgzLDEzLjE3QzE1LjU1LDEzLjkgMTYsMTQuOSAxNiwxNkE0LDQgMCAwLDEgMTIsMjBBNCw0IDAgMCwxIDgsMTZDOCwxNC45MyA4LjQyLDEzLjk2IDkuMSwxMy4yNUw5LjA5LDEzLjI0TDE2LjE3LDYuMTdWNi4xN0MxNi44OSw1LjQ1IDE3Ljg5LDUgMTksNUE0LDQgMCAwLDEgMjMsOUE0LDQgMCAwLDEgMTksMTNDMTcuOSwxMyAxNi45LDEyLjU1IDE2LjE3LDExLjgzTDE3LjU5LDEwLjQxQzE3Ljk1LDEwLjc4IDE4LjQ1LDExIDE5LDExQTIsMiAwIDAsMCAyMSw5QTIsMiAwIDAsMCAxOSw3QzE4LjQ1LDcgMTcuOTUsNy4yMiAxNy41OSw3LjU5TDEwLjUsMTQuNjZNNi40MSw3LjU5QzYuMDUsNy4yMiA1LjU1LDcgNSw3QTIsMiAwIDAsMCAzLDlBMiwyIDAgMCwwIDUsMTFDNS41NSwxMSA2LjA1LDEwLjc4IDYuNDEsMTAuNDFMNy44MywxMS44M0M3LjEsMTIuNTUgNi4xLDEzIDUsMTNBNCw0IDAgMCwxIDEsOUE0LDQgMCAwLDEgNSw1QzYuMTEsNSA3LjExLDUuNDUgNy44Myw2LjE3VjYuMTdMMTAuNTksOC45M0w5LjE3LDEwLjM1TDYuNDEsNy41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlWdWVqcyA9IFwiTTIsM0g1LjVMMTIsMTVMMTguNSwzSDIyTDEyLDIxTDIsM002LjUsM0g5LjVMMTIsNy41OEwxNC41LDNIMTcuNUwxMiwxMy4wOEw2LjUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWdWV0aWZ5ID0gXCJNMTIsMTEuNjRMNy45MiwySDE2LjA4TDEyLDExLjY0TTEyLDIxLjk1TDMuMjcsNC45MUg3Ljg0TDEyLDE0LjQ3TDE2LjE2LDQuOTFIMjAuNzNMMTIsMjEuOTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2FsayA9IFwiTTE0LjEyLDEwSDE5VjguMkgxNS4zOEwxMy4zOCw0Ljg3QzEzLjA4LDQuMzcgMTIuNTQsNC4wMyAxMS45Miw0LjAzQzExLjc0LDQuMDMgMTEuNTgsNC4wNiAxMS40Miw0LjExTDYsNS44VjExSDcuOFY3LjMzTDkuOTEsNi42N0w2LDIySDcuOEwxMC42NywxMy44OUwxMywxN1YyMkgxNC44VjE1LjU5TDEyLjMxLDExLjA1TDEzLjA0LDguMThNMTQsMy44QzE1LDMuOCAxNS44LDMgMTUuOCwyQzE1LjgsMSAxNSwwLjIgMTQsMC4yQzEzLDAuMiAxMi4yLDEgMTIuMiwyQzEyLjIsMyAxMywzLjggMTQsMy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhbGwgPSBcIk0zLDE2SDEyVjIxSDNWMTZNMiwxMEg4VjE1SDJWMTBNOSwxMEgxNVYxNUg5VjEwTTE2LDEwSDIyVjE1SDE2VjEwTTEzLDE2SDIxVjIxSDEzVjE2TTMsNEgxMVY5SDNWNE0xMiw0SDIxVjlIMTJWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsU2NvbmNlID0gXCJNMTEsNEw3LDEzSDE5TDE1LDRIMTFNNCwxNFYyMkg2VjE5SDE0VjE0SDEyVjE3SDZWMTRINFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsU2NvbmNlRmxhdCA9IFwiTTUsNVYxMUgxOVY1SDVNNS4yNywxMy4zMkwzLjUsMTUuMDlMNC45MSwxNi41TDYuNjgsMTQuNzNMNS4yNywxMy4zMk0xOC43MywxMy4zMkwxNy4zMiwxNC43M0wxOS4wOSwxNi41TDIwLjUsMTUuMDlMMTguNzMsMTMuMzJNMTEsMTZWMTlIMTNWMTZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2FsbFNjb25jZUZsYXRWYXJpYW50ID0gXCJNMTkgMTlWMTNINVYxOUgxOU0xOC43MyAxMC42OEwyMC41IDguOTFMMTkuMDkgNy41TDE3LjMyIDkuMjdMMTguNzMgMTAuNjhNNS4yNyAxMC42OEw2LjY4IDkuMjdMNC45MSA3LjVMMy41IDguOTFMNS4yNyAxMC42OE0xMyA4VjVIMTFWOEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsU2NvbmNlUm91bmQgPSBcIk0xMyAxOVYxNkgxMVYxOUgxM00xOS4wOSAxNi41TDIwLjUgMTUuMDlMMTguNzMgMTMuMzJMMTcuMzIgMTQuNzNMMTkuMDkgMTYuNU00LjkxIDE2LjVMNi42OCAxNC43M0w1LjI3IDEzLjMyTDMuNSAxNS4wOUw0LjkxIDE2LjVNMjAgMTJDMjAgOS4xNCAxOC41IDYuNSAxNiA1LjA3UzEwLjUgMy42NCA4IDUuMDcgNCA5LjE0IDQgMTJIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2FsbFNjb25jZVJvdW5kVmFyaWFudCA9IFwiTTExIDVWOEgxM1Y1SDExTTQuOTEgNy41TDMuNSA4LjkxTDUuMjcgMTAuNjhMNi42OCA5LjI3TDQuOTEgNy41TTE5LjA5IDcuNUwxNy4zMiA5LjI3TDE4LjczIDEwLjY4TDIwLjUgOC45MUwxOS4wOSA3LjVNNCAxMkM0IDE0Ljg2IDUuNSAxNy41IDggMTguOTNTMTMuNSAyMC4zNiAxNiAxOC45MyAyMCAxNC44NiAyMCAxMkg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhbGxldCA9IFwiTTIxLDE4VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjZIMTJDMTAuODksNiAxMCw2LjkgMTAsOFYxNkEyLDIgMCAwLDAgMTIsMThNMTIsMTZIMjJWOEgxMk0xNiwxMy41QTEuNSwxLjUgMCAwLDEgMTQuNSwxMkExLjUsMS41IDAgMCwxIDE2LDEwLjVBMS41LDEuNSAwIDAsMSAxNy41LDEyQTEuNSwxLjUgMCAwLDEgMTYsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRHaWZ0Y2FyZCA9IFwiTTIwLDE0SDRWOEg5LjA4TDcsMTAuODNMOC42MiwxMkwxMSw4Ljc2TDEyLDcuNEwxMyw4Ljc2TDE1LjM4LDEyTDE3LDEwLjgzTDE0LjkyLDhIMjBNMjAsMTlINFYxN0gyME05LDRBMSwxIDAgMCwxIDEwLDVBMSwxIDAgMCwxIDksNkExLDEgMCAwLDEgOCw1QTEsMSAwIDAsMSA5LDRNMTUsNEExLDEgMCAwLDEgMTYsNUExLDEgMCAwLDEgMTUsNkExLDEgMCAwLDEgMTQsNUExLDEgMCAwLDEgMTUsNE0yMCw2SDE3LjgyQzE3LjkzLDUuNjkgMTgsNS4zNSAxOCw1QTMsMyAwIDAsMCAxNSwyQzEzLjk1LDIgMTMuMDQsMi41NCAxMi41LDMuMzVMMTIsNEwxMS41LDMuMzRDMTAuOTYsMi41NCAxMC4wNSwyIDksMkEzLDMgMCAwLDAgNiw1QzYsNS4zNSA2LjA3LDUuNjkgNi4xOCw2SDRDMi44OSw2IDIsNi44OSAyLDhWMTlDMiwyMC4xMSAyLjg5LDIxIDQsMjFIMjBDMjEuMTEsMjEgMjIsMjAuMTEgMjIsMTlWOEMyMiw2Ljg5IDIxLjExLDYgMjAsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRNZW1iZXJzaGlwID0gXCJNMjAsMTBINFY0SDIwTTIwLDE1SDRWMTNIMjBNMjAsMkg0QzIuODksMiAyLDIuODkgMiw0VjE1QzIsMTYuMTEgMi44OSwxNyA0LDE3SDhWMjJMMTIsMjBMMTYsMjJWMTdIMjBDMjEuMTEsMTcgMjIsMTYuMTEgMjIsMTVWNEMyMiwyLjg5IDIxLjExLDIgMjAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRPdXRsaW5lID0gXCJNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjE2LjcyQzIxLjU5LDE2LjM3IDIyLDE1Ljc0IDIyLDE1VjlDMjIsOC4yNiAyMS41OSw3LjYzIDIxLDcuMjhWNUEyLDIgMCAwLDAgMTksM0g1TTUsNUgxOVY3SDEzQTIsMiAwIDAsMCAxMSw5VjE1QTIsMiAwIDAsMCAxMywxN0gxOVYxOUg1VjVNMTMsOUgyMFYxNUgxM1Y5TTE2LDEwLjVBMS41LDEuNSAwIDAsMCAxNC41LDEyQTEuNSwxLjUgMCAwLDAgMTYsMTMuNUExLjUsMS41IDAgMCwwIDE3LjUsMTJBMS41LDEuNSAwIDAsMCAxNiwxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhbGxldFBsdXMgPSBcIk0zIDBWM0gwVjVIM1Y4SDVWNUg4VjNINVYwSDNNOSAzVjZINlY5SDNWMTlDMyAyMC4xIDMuODkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVYxOEgxMkMxMC45IDE4IDEwIDE3LjExIDEwIDE2VjhDMTAgNi45IDEwLjg5IDYgMTIgNkgyMVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIOU0xMiA4VjE2SDIyVjhIMTJNMTYgMTAuNUMxNi44MyAxMC41IDE3LjUgMTEuMTcgMTcuNSAxMkMxNy41IDEyLjgzIDE2LjgzIDEzLjUgMTYgMTMuNUMxNS4xNyAxMy41IDE0LjUgMTIuODMgMTQuNSAxMkMxNC41IDExLjE3IDE1LjE3IDEwLjUgMTYgMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRQbHVzT3V0bGluZSA9IFwiTTMgMFYzSDBWNUgzVjhINVY1SDhWM0g1VjBIM00xMCAzVjVIMTlWN0gxM0MxMS45IDcgMTEgNy45IDExIDlWMTVDMTEgMTYuMSAxMS45IDE3IDEzIDE3SDE5VjE5SDVWMTBIM1YxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVYxNi43MkMyMS41OSAxNi4zNyAyMiAxNS43NCAyMiAxNVY5QzIyIDguMjYgMjEuNTkgNy42MyAyMSA3LjI4VjVDMjEgMy45IDIwLjEgMyAxOSAzSDEwTTEzIDlIMjBWMTVIMTNWOU0xNiAxMC41QTEuNSAxLjUgMCAwIDAgMTQuNSAxMkExLjUgMS41IDAgMCAwIDE2IDEzLjVBMS41IDEuNSAwIDAgMCAxNy41IDEyQTEuNSAxLjUgMCAwIDAgMTYgMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRUcmF2ZWwgPSBcIk0yMCwxNEg0VjhIN1YxMEg5VjhIMTVWMTBIMTdWOEgyME0yMCwxOUg0VjE3SDIwTTksNEgxNVY2SDlNMjAsNkgxN1Y0QzE3LDIuODkgMTYuMTEsMiAxNSwySDlDNy44OSwyIDcsMi44OSA3LDRWNkg0QzIuODksNiAyLDYuODkgMiw4VjE5QzIsMjAuMTEgMi44OSwyMSA0LDIxSDIwQzIxLjExLDIxIDIyLDIwLjExIDIyLDE5VjhDMjIsNi44OSAyMS4xMSw2IDIwLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2FsbHBhcGVyID0gXCJNNCw0SDExVjJINEEyLDIgMCAwLDAgMiw0VjExSDRWNE0xMCwxM0w2LDE4SDE4TDE1LDE0TDEyLjk3LDE2LjcxTDEwLDEzTTE3LDguNUExLjUsMS41IDAgMCwwIDE1LjUsN0ExLjUsMS41IDAgMCwwIDE0LDguNUExLjUsMS41IDAgMCwwIDE1LjUsMTBBMS41LDEuNSAwIDAsMCAxNyw4LjVNMjAsMkgxM1Y0SDIwVjExSDIyVjRBMiwyIDAgMCwwIDIwLDJNMjAsMjBIMTNWMjJIMjBBMiwyIDAgMCwwIDIyLDIwVjEzSDIwVjIwTTQsMTNIMlYyMEEyLDIgMCAwLDAgNCwyMkgxMVYyMEg0VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhbiA9IFwiTTEyLDJBOCw4IDAgMCwwIDQsMTBDNCwxNC4wMyA3LDE3LjQyIDExLDE3LjkzVjE5SDEwQTEsMSAwIDAsMCA5LDIwSDJWMjJIOUExLDEgMCAwLDAgMTAsMjNIMTRBMSwxIDAgMCwwIDE1LDIySDIyVjIwSDE1QTEsMSAwIDAsMCAxNCwxOUgxM1YxNy45M0MxNywxNy40MyAyMCwxNC4wMyAyMCwxMEE4LDggMCAwLDAgMTIsMk0xMiw0QzEyLDQgMTIuNzQsNS4yOCAxMy4yNiw3SDEwLjc0QzExLjI2LDUuMjggMTIsNCAxMiw0TTkuNzcsNC40M0M5LjUsNC45MyA5LjA5LDUuODQgOC43NCw3SDYuODFDNy41LDUuODQgOC41LDQuOTMgOS43Nyw0LjQzTTE0LjIzLDQuNDRDMTUuNSw0Ljk0IDE2LjUsNS44NCAxNy4xOSw3SDE1LjI2QzE0LjkxLDUuODQgMTQuNSw0LjkzIDE0LjIzLDQuNDRNNi4wOSw5SDguMzJDOC4yOCw5LjMzIDguMjUsOS42NiA4LjI1LDEwQzguMjUsMTAuMzQgOC4yOCwxMC42NyA4LjMyLDExSDYuMDlDNi4wMywxMC42NyA2LDEwLjM0IDYsMTBDNiw5LjY2IDYuMDMsOS4zMyA2LjA5LDlNMTAuMzIsOUgxMy42OEMxMy43Miw5LjMzIDEzLjc1LDkuNjYgMTMuNzUsMTBDMTMuNzUsMTAuMzQgMTMuNzIsMTAuNjcgMTMuNjgsMTFIMTAuMzJDMTAuMjgsMTAuNjcgMTAuMjUsMTAuMzQgMTAuMjUsMTBDMTAuMjUsOS42NiAxMC4yOCw5LjMzIDEwLjMyLDlNMTUuNjgsOUgxNy45MUMxNy45Nyw5LjMzIDE4LDkuNjYgMTgsMTBDMTgsMTAuMzQgMTcuOTcsMTAuNjcgMTcuOTEsMTFIMTUuNjhDMTUuNzIsMTAuNjcgMTUuNzUsMTAuMzQgMTUuNzUsMTBDMTUuNzUsOS42NiAxNS43Miw5LjMzIDE1LjY4LDlNNi44MSwxM0g4Ljc0QzkuMDksMTQuMTYgOS41LDE1LjA3IDkuNzcsMTUuNTZDOC41LDE1LjA2IDcuNSwxNC4xNiA2LjgxLDEzTTEwLjc0LDEzSDEzLjI2QzEyLjc0LDE0LjcyIDEyLDE2IDEyLDE2QzEyLDE2IDExLjI2LDE0LjcyIDEwLjc0LDEzTTE1LjI2LDEzSDE3LjE5QzE2LjUsMTQuMTYgMTUuNSwxNS4wNyAxNC4yMywxNS41N0MxNC41LDE1LjA3IDE0LjkxLDE0LjE2IDE1LjI2LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhcmRyb2JlID0gXCJNNCA0VjE5QzQgMjAuMSA0LjkgMjEgNiAyMVYyMkg4VjIxSDExLjVWMkg2QzQuOSAyIDQgMi45IDQgNE04IDEwSDEwVjEzSDhWMTBNMTggMkgxMi41VjIxSDE2VjIySDE4VjIxQzE5LjEgMjEgMjAgMjAuMSAyMCAxOVY0QzIwIDIuOSAxOS4xIDIgMTggMk0xNiAxM0gxNFYxMEgxNlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXJkcm9iZU91dGxpbmUgPSBcIk02IDJDNC44OSAyIDQgMi45IDQgNFYxOUM0IDIwLjExIDQuODkgMjEgNiAyMVYyMkg4VjIxSDE2VjIySDE4VjIxQzE5LjExIDIxIDIwIDIwLjExIDIwIDE5VjRDMjAgMi45IDE5LjExIDIgMTggMkg2TTYgNEgxMVYxOUg2VjRNMTMgNEgxOFYxOUgxM1Y0TTggMTBWMTNIMTBWMTBIOE0xNCAxMFYxM0gxNlYxMEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXJlaG91c2UgPSBcIk02IDE5SDhWMjFINlYxOU0xMiAzTDIgOFYyMUg0VjEzSDIwVjIxSDIyVjhMMTIgM004IDExSDRWOUg4VjExTTE0IDExSDEwVjlIMTRWMTFNMjAgMTFIMTZWOUgyMFYxMU02IDE1SDhWMTdINlYxNU0xMCAxNUgxMlYxN0gxMFYxNU0xMCAxOUgxMlYyMUgxMFYxOU0xNCAxOUgxNlYyMUgxNFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXNoaW5nTWFjaGluZSA9IFwiTTE0LjgzLDExLjE3QzE2LjM5LDEyLjczIDE2LjM5LDE1LjI3IDE0LjgzLDE2LjgzQzEzLjI3LDE4LjM5IDEwLjczLDE4LjM5IDkuMTcsMTYuODNMMTQuODMsMTEuMTdNNiwySDE4QTIsMiAwIDAsMSAyMCw0VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMk03LDRBMSwxIDAgMCwwIDYsNUExLDEgMCAwLDAgNyw2QTEsMSAwIDAsMCA4LDVBMSwxIDAgMCwwIDcsNE0xMCw0QTEsMSAwIDAsMCA5LDVBMSwxIDAgMCwwIDEwLDZBMSwxIDAgMCwwIDExLDVBMSwxIDAgMCwwIDEwLDRNMTIsOEE2LDYgMCAwLDAgNiwxNEE2LDYgMCAwLDAgMTIsMjBBNiw2IDAgMCwwIDE4LDE0QTYsNiAwIDAsMCAxMiw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhc2hpbmdNYWNoaW5lQWxlcnQgPSBcIk0xMi44MyAxMS4xN0MxNC4zOSAxMi43MyAxNC4zOSAxNS4yNyAxMi44MyAxNi44M1M4LjczIDE4LjM5IDcuMTcgMTYuODNMMTIuODMgMTEuMTdNNCAySDE2QzE3LjExIDIgMTggMi45IDE4IDRWMjBDMTggMjEuMTEgMTcuMTEgMjIgMTYgMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjRDMiAyLjkgMi45IDIgNCAyTTUgNEM0LjQ1IDQgNCA0LjQ1IDQgNVM0LjQ1IDYgNSA2IDYgNS41NSA2IDUgNS41NSA0IDUgNE04IDRDNy40NSA0IDcgNC40NSA3IDVTNy40NSA2IDggNiA5IDUuNTUgOSA1IDguNTUgNCA4IDRNMTAgOEM2LjY5IDggNCAxMC42OSA0IDE0UzYuNjkgMjAgMTAgMjAgMTYgMTcuMzEgMTYgMTQgMTMuMzEgOCAxMCA4TTIwIDE1SDIyVjE3SDIwVjE1TTIwIDdIMjJWMTNIMjBWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXNoaW5nTWFjaGluZU9mZiA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNCA1Ljg5VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE4LjU4IDIyIDE5LjEgMjEuNzUgMTkuNDYgMjEuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMjBDOC42OSAyMCA2IDE3LjMxIDYgMTRDNiAxMi4zMiA2LjcgMTAuOCA3LjgyIDkuNzFMMTIuMDYgMTMuOTVMOS4xNyAxNi44M0MxMC43MyAxOC4zOSAxMy4yNyAxOC4zOSAxNC44MyAxNi44M0MxNC44NSAxNi44MSAxNC44NiAxNi43OSAxNC44OCAxNi43N0wxNi4yOSAxOC4xOEMxNS4yIDE5LjMgMTMuNjkgMjAgMTIgMjBNMTEuMjUgOC4wNUMxMS41IDggMTEuNzUgOCAxMiA4QzE1LjMxIDggMTggMTAuNjkgMTggMTRDMTggMTQuMjUgMTggMTQuNSAxNy45NSAxNC43NUwyMCAxNi44VjRDMjAgMi45IDE5LjExIDIgMTggMkg2QzUuNzYgMiA1LjU0IDIuMDUgNS4zMyAyLjEzTDExLjI1IDguMDVNMTAgNEMxMC41NSA0IDExIDQuNDUgMTEgNVMxMC41NSA2IDEwIDYgOSA1LjU1IDkgNSA5LjQ1IDQgMTAgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRjaCA9IFwiTTYsMTJBNiw2IDAgMCwxIDEyLDZBNiw2IDAgMCwxIDE4LDEyQTYsNiAwIDAsMSAxMiwxOEE2LDYgMCAwLDEgNiwxMk0yMCwxMkMyMCw5LjQ1IDE4LjgxLDcuMTkgMTYuOTUsNS43M0wxNiwwSDhMNy4wNSw1LjczQzUuMTksNy4xOSA0LDkuNDUgNCwxMkM0LDE0LjU0IDUuMTksMTYuODEgNy4wNSwxOC4yN0w4LDI0SDE2TDE2Ljk1LDE4LjI3QzE4LjgxLDE2LjgxIDIwLDE0LjU0IDIwLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGNoRXhwb3J0ID0gXCJNMTQsMTFIMTlMMTYuNSw4LjVMMTcuOTIsNy4wOEwyMi44NCwxMkwxNy45MiwxNi45MkwxNi41LDE1LjVMMTksMTNIMTRWMTFNMTIsMThBNiw2IDAgMCwxIDYsMTJBNiw2IDAgMCwxIDEyLDZDMTMuNCw2IDE0LjY5LDYuNSAxNS43MSw3LjI5TDE3LjEzLDUuODdMMTYuOTUsNS43M0wxNiwwSDhMNy4wNSw1LjczQzUuMTksNy4xOSA0LDkuNDYgNCwxMkM0LDE0LjU1IDUuMTksMTYuODEgNy4wNSwxOC4yN0w4LDI0SDE2TDE2Ljk1LDE4LjI3TDE3LjEzLDE4LjEzTDE1LjcxLDE2LjcxQzE0LjY5LDE3LjUgMTMuNCwxOCAxMiwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRjaEV4cG9ydFZhcmlhbnQgPSBcIk0xNCwxMUgxOUwxNi41LDguNUwxNy45Miw3LjA4TDIyLjg0LDEyTDE3LjkyLDE2LjkyTDE2LjUsMTUuNUwxOSwxM0gxNFYxMU04LDBIMTZMMTYuODMsNUgxN0MxNy4yOCw1IDE3LjU0LDUuMDYgMTcuNzgsNS4xNkwxNS45NCw3SDdWMTdIMTUuOTRMMTcuNzgsMTguODRDMTcuNTQsMTguOTQgMTcuMjgsMTkgMTcsMTlIMTYuODNMMTYsMjRIOEw3LjE3LDE5SDdBMiwyIDAgMCwxIDUsMTdWN0M1LDUuODkgNS45LDUgNyw1SDcuMTdMOCwwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGNoSW1wb3J0ID0gXCJNMiwxMUg3TDQuNSw4LjVMNS45Miw3LjA4TDEwLjg0LDEyTDUuOTIsMTYuOTJMNC41LDE1LjVMNywxM0gyVjExTTEyLDE4QTYsNiAwIDAsMCAxOCwxMkE2LDYgMCAwLDAgMTIsNkMxMC42LDYgOS4zMSw2LjUgOC4yOSw3LjI5TDYuODcsNS44N0w3LjA1LDUuNzNMOCwwSDE2TDE2Ljk1LDUuNzNDMTguODEsNy4xOSAyMCw5LjQ1IDIwLDEyQzIwLDE0LjU0IDE4LjgxLDE2LjgxIDE2Ljk1LDE4LjI3TDE2LDI0SDhMNy4wNSwxOC4yN0w2Ljg3LDE4LjEzTDguMjksMTYuNzFDOS4zMSwxNy41IDEwLjYsMTggMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0Y2hJbXBvcnRWYXJpYW50ID0gXCJNMSwxMUg2TDMuNSw4LjVMNC45Miw3LjA4TDkuODQsMTJMNC45MiwxNi45MkwzLjUsMTUuNUw2LDEzSDFWMTFNOCwwSDE2TDE2LjgzLDVIMTdBMiwyIDAgMCwxIDE5LDdWMTdDMTksMTguMTEgMTguMSwxOSAxNywxOUgxNi44M0wxNiwyNEg4TDcuMTcsMTlIN0M2LjQ2LDE5IDYsMTguNzkgNS42MiwxOC40NEw3LjA2LDE3SDE3VjdINy4wNkw1LjYyLDUuNTZDNiw1LjIxIDYuNDYsNSA3LDVINy4xN0w4LDBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0Y2hWYXJpYW50ID0gXCJNOCwwTDcuMTcsNUg3QTIsMiAwIDAsMCA1LDdWMTdDNSwxOC4xMSA1LjksMTkgNywxOUg3LjE3TDgsMjRIMTZMMTYuODMsMTlIMTdBMiwyIDAgMCwwIDE5LDE3VjdDMTksNS44OSAxOC4xLDUgMTcsNUgxNi44M0wxNiwwSDhNNyw3SDE3VjE3SDdWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRjaFZpYnJhdGUgPSBcIk0zLDE3VjdINVYxN0gzTTE5LDE3VjdIMjFWMTdIMTlNMjIsOUgyNFYxNUgyMlY5TTAsMTVWOUgyVjE1SDBNMTcuOTYsMTEuOTdDMTcuOTYsMTMuODcgMTcuMDcsMTUuNTcgMTUuNjgsMTYuNjdMMTQuOTcsMjAuOTVIOUw4LjI3LDE2LjY3QzYuODgsMTUuNTcgNiwxMy44NyA2LDExLjk3QzYsMTAuMDcgNi44OCw4LjM3IDguMjcsNy4yOEw5LDNIMTQuOTdMMTUuNjgsNy4yOEMxNy4wNyw4LjM3IDE3Ljk2LDEwLjA3IDE3Ljk2LDExLjk3TTcuNSwxMS45N0M3LjUsMTQuNDUgOS41LDE2LjQ2IDExLjk3LDE2LjQ2QTQuNSw0LjUgMCAwLDAgMTYuNDYsMTEuOTdDMTYuNDYsOS41IDE0LjQ1LDcuNSAxMS45Nyw3LjVBNC40Nyw0LjQ3IDAgMCwwIDcuNSwxMS45N1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRjaFZpYnJhdGVPZmYgPSBcIk0wLDlIMlYxNUgwVjlNMTIsNy41QzE0LjQ3LDcuNSAxNi40Nyw5LjUzIDE2LjQ2LDEyQzE2LjQ1LDEyLjM4IDE2LjQsMTIuNzYgMTYuMywxMy4xM0wxNy41LDE0LjMxQzE3LjgxLDEzLjU4IDE4LDEyLjggMTgsMTJDMTgsMTAuMTcgMTcuMTYsOC40NCAxNS43Miw3LjMxTDE1LDNIOUw4LjU5LDUuMzlMMTAuODYsNy42NkMxMS4yMyw3LjU1IDExLjYxLDcuNSAxMiw3LjVNMjEsMTdWN0gxOVYxNS44TDIwLjIsMTdIMjFNMTYuNSwxNS44NkwyMi4xMSwyMS40NkwyMC44NCwyMi43M0wxNS41NSwxNy40NEwxNSwyMUg5TDguMjcsMTYuNzJDNS44NSwxNC44MiA1LjI3LDExLjQgNi45MSw4LjhMMS4xMSwzTDIuMzksMS43M0w4LjA5LDcuNDRMOS4xNyw4LjVMMTUuNDQsMTQuNzlMMTYuNSwxNS44Nk0xNC4wNSwxNS45NEw4LjA1LDkuOTRDNy43LDEwLjU3IDcuNSwxMS4yOCA3LjUsMTJDNy41LDE0LjQ3IDkuNTMsMTYuNDcgMTIsMTYuNDZDMTIuNzIsMTYuNDYgMTMuNDIsMTYuMjggMTQuMDUsMTUuOTRNMjIsOVYxNUgyNFY5SDIyTTMsMTdINVY3SDNWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXIgPSBcIk0xMiwyMEE2LDYgMCAwLDEgNiwxNEM2LDEwIDEyLDMuMjUgMTIsMy4yNUMxMiwzLjI1IDE4LDEwIDE4LDE0QTYsNiAwIDAsMSAxMiwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckFsZXJ0ID0gXCJNMTAgMy4yNUMxMCAzLjI1IDE2IDEwIDE2IDE0QzE2IDE3LjMxIDEzLjMxIDIwIDEwIDIwUzQgMTcuMzEgNCAxNEM0IDEwIDEwIDMuMjUgMTAgMy4yNU0yMCA3VjEzSDE4VjdIMjBNMTggMTdIMjBWMTVIMThWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJBbGVydE91dGxpbmUgPSBcIk0xMCAzLjI1QzEwIDMuMjUgNCAxMCA0IDE0QzQgMTcuMzEgNi42OSAyMCAxMCAyMFMxNiAxNy4zMSAxNiAxNEMxNiAxMCAxMCAzLjI1IDEwIDMuMjVNMTAgMThDNy43OSAxOCA2IDE2LjIxIDYgMTRDNiAxMi4yMyA4IDguOTYgMTAgNi4zOUMxMiA4Ljk1IDE0IDEyLjIzIDE0IDE0QzE0IDE2LjIxIDEyLjIxIDE4IDEwIDE4TTIwIDdWMTNIMThWN0gyME0xOCAxN0gyMFYxNUgxOFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckJvaWxlciA9IFwiTTggMkM2Ljg5IDIgNiAyLjg5IDYgNFYxNkM2IDE3LjExIDYuODkgMTggOCAxOEg5VjIwSDZWMjJIOUMxMC4xMSAyMiAxMSAyMS4xMSAxMSAyMFYxOEgxM1YyMEMxMyAyMS4xMSAxMy44OSAyMiAxNSAyMkgxOFYyMEgxNVYxOEgxNkMxNy4xMSAxOCAxOCAxNy4xMSAxOCAxNlY0QzE4IDIuODkgMTcuMTEgMiAxNiAySDhNMTIgNC45N0EyIDIgMCAwIDEgMTQgNi45N0EyIDIgMCAwIDEgMTIgOC45N0EyIDIgMCAwIDEgMTAgNi45N0EyIDIgMCAwIDEgMTIgNC45N00xMCAxNC41SDE0VjE2SDEwVjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJCb2lsZXJBbGVydCA9IFwiTTYgMkM0Ljg5IDIgNCAyLjg5IDQgNFYxNkM0IDE3LjExIDQuODkgMTggNiAxOEg3VjIwSDRWMjJIN0M4LjExIDIyIDkgMjEuMTEgOSAyMFYxOEgxMVYyMEMxMSAyMS4xMSAxMS44OSAyMiAxMyAyMkgxNlYyMEgxM1YxOEgxNEMxNS4xMSAxOCAxNiAxNy4xMSAxNiAxNlY0QzE2IDIuODkgMTUuMTEgMiAxNCAySDZNMTAgNC45N0MxMS4xMSA0Ljk3IDEyIDUuODcgMTIgNi45N1MxMS4xMSA4Ljk3IDEwIDguOTdDOC45IDguOTcgOCA4LjA3IDggNi45N0M4IDUuODcgOC45IDQuOTcgMTAgNC45N004IDE0LjVIMTJWMTZIOFYxNC41TTE4IDE1SDIwVjE3SDE4VjE1TTE4IDdIMjBWMTNIMThWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckJvaWxlck9mZiA9IFwiTTEwIDYuODJMNi4yNSAzLjA1QzYuNTkgMi40MiA3LjI0IDIgOCAySDE2QzE3LjExIDIgMTggMi44OSAxOCA0VjE0LjhMMTIuMTYgOC45NkMxMy4xOSA4Ljg3IDE0IDggMTQgNi45N0MxNCA1Ljg3IDEzLjExIDQuOTcgMTIgNC45N0MxMC45NSA0Ljk3IDEwLjEgNS43OCAxMCA2LjgyTTE1IDE4VjIwSDE4VjIySDE1QzEzLjg5IDIyIDEzIDIxLjExIDEzIDIwVjE4SDExVjIwQzExIDIxLjExIDEwLjExIDIyIDkgMjJINlYyMEg5VjE4SDhDNi44OSAxOCA2IDE3LjExIDYgMTZWNy44OUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE2LjEgMThDMTYuMDYgMTggMTYuMDMgMTggMTYgMThIMTVNMTQgMTZWMTUuODlMMTIuNjEgMTQuNUgxMFYxNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckNoZWNrID0gXCJNMjEuNzUgMTYuMjVMMTcgMjFMMTQuMjUgMThMMTUuNDEgMTYuODRMMTcgMTguNDNMMjAuNTkgMTQuODRMMjEuNzUgMTYuMjVNMTcuNjIgMTJDMTYuMzEgOC4xIDEyIDMuMjUgMTIgMy4yNVM2IDEwIDYgMTRDNiAxNy4zMSA4LjY5IDIwIDEyIDIwSDEyLjM0QzEyLjEyIDE5LjM2IDEyIDE4LjcgMTIgMThDMTIgMTQuODIgMTQuNSAxMi4yMiAxNy42MiAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckNoZWNrT3V0bGluZSA9IFwiTTIxLjc1IDE2LjI1TDE3IDIxTDE0LjI1IDE4TDE1LjQxIDE2Ljg0TDE3IDE4LjQzTDIwLjU5IDE0Ljg0TDIxLjc1IDE2LjI1TTggMTRDOCAxMi4yMyAxMCA4Ljk2IDEyIDYuMzlDMTMuNSA4LjMzIDE1IDEwLjY3IDE1LjY3IDEyLjQ3QzE2LjI3IDEyLjIxIDE2LjkzIDEyLjA2IDE3LjYyIDEyQzE2LjMxIDguMSAxMiAzLjI1IDEyIDMuMjVTNiAxMCA2IDE0QzYgMTcuMzEgOC42OSAyMCAxMiAyMEMxMi4xMiAyMCAxMi4yMyAyMCAxMi4zNCAyMEMxMi4xMiAxOS4zNiAxMiAxOC43IDEyIDE4QzkuNzkgMTggOCAxNi4yMSA4IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyTWludXMgPSBcIk0yMiAxN1YxOUgxNFYxN0gyMk0xNy42MiAxMkMxNi4zMSA4LjEgMTIgMy4yNSAxMiAzLjI1UzYgMTAgNiAxNEM2IDE3LjMxIDguNjkgMjAgMTIgMjBDMTIuMTIgMjAgMTIuMjMgMjAgMTIuMzQgMjBDMTIuMTIgMTkuMzYgMTIgMTguNyAxMiAxOEMxMiAxNC44MiAxNC41IDEyLjIyIDE3LjYyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyTWludXNPdXRsaW5lID0gXCJNMjIgMTdWMTlIMTRWMTdIMjJNOCAxNEM4IDEyLjIzIDEwIDguOTYgMTIgNi4zOUMxMy41IDguMzMgMTUgMTAuNjcgMTUuNjcgMTIuNDdDMTYuMjcgMTIuMjEgMTYuOTMgMTIuMDYgMTcuNjIgMTJDMTYuMzEgOC4xIDEyIDMuMjUgMTIgMy4yNVM2IDEwIDYgMTRDNiAxNy4zMSA4LjY5IDIwIDEyIDIwQzEyLjEyIDIwIDEyLjIzIDIwIDEyLjM0IDIwQzEyLjEyIDE5LjM2IDEyIDE4LjcgMTIgMThDOS43OSAxOCA4IDE2LjIxIDggMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJPZmYgPSBcIk0yMC44NCAyMi43M0wxNi4yOSAxOC4xOEMxNS4yIDE5LjMgMTMuNjkgMjAgMTIgMjBDOC42OSAyMCA2IDE3LjMxIDYgMTRDNiAxMi42NyA2LjY3IDExLjAzIDcuNTUgOS40NEwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTE4IDE0QzE4IDEwIDEyIDMuMjUgMTIgMy4yNVMxMC44NCA0LjU1IDkuNTUgNi4zNUwxNy45NSAxNC43NUMxOCAxNC41IDE4IDE0LjI1IDE4IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNy42NSA5LjU0QzYuNzQgMTEuMDMgNiAxMi42NSA2IDE0LjIzQzYgMTcuNTQgOC42OSAyMC4yMyAxMiAyMC4yM0MxMy43NCAyMC4yMyAxNS4zIDE5LjUgMTYuNCAxOC4yOUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xMiAxOC4yM0M5Ljc4IDE4LjIzIDggMTYuNDUgOCAxNC4yM0M4IDEzLjUgOC41IDEyLjI3IDkuMTQgMTEuMDNMMTUgMTYuODhDMTQuMjYgMTcuNzEgMTMuMiAxOC4yMyAxMiAxOC4yM00xMS4xNCA3Ljk0TDkuNzEgNi41QzEwLjU3IDUuMzggMTEuMjUgNC42MSAxMS4yNSA0LjYxTDEyIDMuNzdMMTIuNzUgNC42MUMxMi43NSA0LjYxIDE0LjAzIDYuMDYgMTUuMzIgNy45NFMxOCAxMi4wNyAxOCAxNC4yM0MxOCAxNC40MSAxOCAxNC41OSAxNy45NyAxNC43N0wxNS40NiAxMi4yNkMxNSAxMS4yMyAxNC4zNyAxMC4wNyAxMy42OCA5LjA3QzEyLjg0IDcuODUgMTIuNDQgNy40MiAxMiA2LjlDMTEuNzMgNy4yMSAxMS41IDcuNSAxMS4xNCA3Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyT3V0bGluZSA9IFwiTTEyLDMuNzdMMTEuMjUsNC42MUMxMS4yNSw0LjYxIDkuOTcsNi4wNiA4LjY4LDcuOTRDNy4zOSw5LjgyIDYsMTIuMDcgNiwxNC4yM0E2LDYgMCAwLDAgMTIsMjAuMjNBNiw2IDAgMCwwIDE4LDE0LjIzQzE4LDEyLjA3IDE2LjYxLDkuODIgMTUuMzIsNy45NEMxNC4wMyw2LjA2IDEyLjc1LDQuNjEgMTIuNzUsNC42MUwxMiwzLjc3TTEyLDYuOUMxMi40NCw3LjQyIDEyLjg0LDcuODUgMTMuNjgsOS4wN0MxNC44OSwxMC44MyAxNiwxMy4wNyAxNiwxNC4yM0MxNiwxNi40NSAxNC4yMiwxOC4yMyAxMiwxOC4yM0M5Ljc4LDE4LjIzIDgsMTYuNDUgOCwxNC4yM0M4LDEzLjA3IDkuMTEsMTAuODMgMTAuMzIsOS4wN0MxMS4xNiw3Ljg1IDExLjU2LDcuNDIgMTIsNi45WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyUGVyY2VudCA9IFwiTTEyLDMuMjVDMTIsMy4yNSA2LDEwIDYsMTRDNiwxNy4zMiA4LjY5LDIwIDEyLDIwQTYsNiAwIDAsMCAxOCwxNEMxOCwxMCAxMiwzLjI1IDEyLDMuMjVNMTQuNDcsOS45N0wxNS41MywxMS4wM0w5LjUzLDE3LjAzTDguNDcsMTUuOTdNOS43NSwxMEExLjI1LDEuMjUgMCAwLDEgMTEsMTEuMjVBMS4yNSwxLjI1IDAgMCwxIDkuNzUsMTIuNUExLjI1LDEuMjUgMCAwLDEgOC41LDExLjI1QTEuMjUsMS4yNSAwIDAsMSA5Ljc1LDEwTTE0LjI1LDE0LjVBMS4yNSwxLjI1IDAgMCwxIDE1LjUsMTUuNzVBMS4yNSwxLjI1IDAgMCwxIDE0LjI1LDE3QTEuMjUsMS4yNSAwIDAsMSAxMywxNS43NUExLjI1LDEuMjUgMCAwLDEgMTQuMjUsMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlclBlcmNlbnRBbGVydCA9IFwiTTIwIDdWMTNIMThWN0gyME0xOCAxN0gyMFYxNUgxOFYxN00xMCAzLjI1QzEwIDMuMjUgNCAxMCA0IDE0QzQgMTcuMzIgNi42OSAyMCAxMCAyMFMxNiAxNy4zMSAxNiAxNEMxNiAxMCAxMCAzLjI1IDEwIDMuMjVNNy43NSAxMEM4LjQ0IDEwIDkgMTAuNTYgOSAxMS4yNVM4LjQ0IDEyLjUgNy43NSAxMi41IDYuNSAxMS45NCA2LjUgMTEuMjUgNy4wNiAxMCA3Ljc1IDEwTTEyLjI1IDE3QzExLjU2IDE3IDExIDE2LjQ0IDExIDE1Ljc1UzExLjU2IDE0LjUgMTIuMjUgMTQuNSAxMy41IDE1LjA2IDEzLjUgMTUuNzUgMTIuOTQgMTcgMTIuMjUgMTdNNy41MyAxNy4wM0w2LjQ3IDE1Ljk3TDEyLjQ3IDkuOTdMMTMuNTMgMTEuMDNMNy41MyAxNy4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlclBsdXMgPSBcIk0xMiAxOEMxMiAxOC43IDEyLjEyIDE5LjM2IDEyLjM0IDIwQzEyLjIzIDIwIDEyLjEyIDIwIDEyIDIwQzguNjkgMjAgNiAxNy4zMSA2IDE0QzYgMTAgMTIgMy4yNSAxMiAzLjI1UzE2LjMxIDguMSAxNy42MiAxMkMxNC41IDEyLjIyIDEyIDE0LjgyIDEyIDE4TTE5IDE3VjE0SDE3VjE3SDE0VjE5SDE3VjIySDE5VjE5SDIyVjE3SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyUGx1c091dGxpbmUgPSBcIk0xMiAxOEMxMiAxOC43IDEyLjEyIDE5LjM2IDEyLjM0IDIwQzEyLjIzIDIwIDEyLjEyIDIwIDEyIDIwQzguNjkgMjAgNiAxNy4zMSA2IDE0QzYgMTAgMTIgMy4yNSAxMiAzLjI1UzE2LjMxIDguMSAxNy42MiAxMkMxNi45MyAxMi4wNiAxNi4yOCAxMi4yMiAxNS42NyAxMi40N0MxNSAxMC42OCAxMy41IDguMzMgMTIgNi4zOUMxMCA4Ljk2IDggMTIuMjMgOCAxNEM4IDE2LjIxIDkuNzkgMTggMTIgMThNMTkgMTdWMTRIMTdWMTdIMTRWMTlIMTdWMjJIMTlWMTlIMjJWMTdIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJQb2xvID0gXCJNMjAgMTZIMjJWMThIMjBDMTguNiAxOCAxNy4yIDE3LjYgMTYgMTdDMTMuNSAxOC4zIDEwLjUgMTguMyA4IDE3QzYuOCAxNy42IDUuNCAxOCA0IDE4SDJWMTZINEM1LjQgMTYgNi44IDE1LjUgOCAxNC43QzEwLjQgMTYuNCAxMy42IDE2LjQgMTYgMTQuN0MxNy4yIDE1LjUgMTguNiAxNiAyMCAxNk0xMyAxMC42QzEzLjYgMTAuMyAxNC4zIDEwIDE1IDkuOVYxMC4yQzE1LjMgMTEuMiAxNS4zIDEyLjEgMTUuMiAxMy4xQzE0LjMgMTMuNiAxMy4yIDEzLjkgMTIuMiAxMy45QzEyLjcgMTIuOSAxMyAxMS43IDEzIDEwLjZNMTIuOSAzLjZDMTEuNSA0IDEwLjMgNC43IDkuMyA1LjdDOC45IDQuNyA4LjcgMy43IDguNyAyLjdDMTAuOSAxLjcgMTMuNCAxLjggMTUuNiAyLjlDMTUuOSAzIDE2LjIgMy4xIDE2LjQgMy4zQzE1LjIgMy4yIDE0IDMuMyAxMi45IDMuNk02LjggMTMuM0M2LjIgMTMuNiA1LjYgMTMuOCA1IDEzLjlDNC4zIDEyLjYgNCAxMS4yIDQgOS44QzQuNSAxMC44IDUuMiAxMS44IDYgMTIuNkM2LjMgMTIuOCA2LjUgMTMuMSA2LjggMTMuM00xOSAxMy45QzE4LjQgMTMuOCAxNy44IDEzLjYgMTcuMyAxMy40QzE3LjUgMTIuMiAxNy40IDExIDE3LjEgOS44QzE4LjIgOS45IDE5LjIgMTAuMiAyMC4xIDEwLjhDMjAgMTEuOCAxOS43IDEyLjcgMTkuMiAxMy42TDE5IDEzLjlNNy40IDExLjJDNi4yIDEwLjEgNS41IDguNSA1LjIgNi45TDUuMSA2QzUuNiA1LjIgNi4xIDQuNiA2LjggNEM2LjkgNS40IDcuNCA2LjcgOC4yIDcuOEM4LjkgOC45IDkuOSA5LjkgMTEgMTAuNUMxMSAxMS4zIDEwLjggMTIuMSAxMC41IDEyLjlDOS4zIDEyLjYgOC4zIDEyIDcuNCAxMS4yTTEzLjUgNS41QzE1IDUuMSAxNi43IDUuMiAxOC4yIDUuN0wxOSA2LjFDMTkuNCA2LjggMTkuNiA3LjYgMTkuOCA4LjRDMTcuMyA3LjMgMTQuNCA3LjUgMTIgOC44QzExLjMgOC41IDEwLjggOCAxMC4zIDcuNEwxMC40IDcuM0MxMS4zIDYuNSAxMi4zIDUuOCAxMy41IDUuNU0xNiAxOC43QzE3LjIgMTkuNSAxOC42IDIwIDIwIDIwSDIyVjIySDIwQzE4LjYgMjIgMTcuMiAyMS42IDE2IDIxQzEzLjUgMjIuMyAxMC41IDIyLjMgOCAyMUM2LjggMjEuNiA1LjQgMjIgNCAyMkgyVjIwSDRDNS40IDIwIDYuOCAxOS41IDggMTguN0MxMC40IDIwLjQgMTMuNiAyMC40IDE2IDE4LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJQdW1wID0gXCJNMTksMTQuNUMxOSwxNC41IDIxLDE2LjY3IDIxLDE4QTIsMiAwIDAsMSAxOSwyMEEyLDIgMCAwLDEgMTcsMThDMTcsMTYuNjcgMTksMTQuNSAxOSwxNC41TTUsMThWOUEyLDIgMCAwLDEgMyw3QTIsMiAwIDAsMSA1LDVWNEEyLDIgMCAwLDEgNywySDlBMiwyIDAgMCwxIDExLDRWNUgxOUEyLDIgMCAwLDEgMjEsN1Y5TDIxLDExQTEsMSAwIDAsMSAyMiwxMkExLDEgMCAwLDEgMjEsMTNIMTdBMSwxIDAgMCwxIDE2LDEyQTEsMSAwIDAsMSAxNywxMVY5SDExVjE4SDEyQTIsMiAwIDAsMSAxNCwyMFYyMkgyVjIwQTIsMiAwIDAsMSA0LDE4SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJQdW1wT2ZmID0gXCJNNS43IDIuNUEyIDIgMCAwIDEgNyAySDlBMiAyIDAgMCAxIDExIDRWNUgxOUEyIDIgMCAwIDEgMjEgN1YxMUExIDEgMCAwIDEgMjEgMTNIMTdBMSAxIDAgMCAxIDE3IDExVjlIMTIuMk0yMC44NCAyMi43M0wyMi4xMSAyMS40NkwxMSAxMC4zNEwyLjM5IDEuNzNMMS4xMSAzTDMuNjUgNS41NEEyIDIgMCAwIDAgNSA5VjE4SDRBMiAyIDAgMCAwIDIgMjBWMjJIMTRWMjBBMiAyIDAgMCAwIDEyIDE4SDExVjEyLjg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyUmVtb3ZlID0gXCJNMTIgMThDMTIgMTguNyAxMi4xMiAxOS4zNiAxMi4zNCAyMEMxMi4yMyAyMCAxMi4xMiAyMCAxMiAyMEM4LjY5IDIwIDYgMTcuMzEgNiAxNEM2IDEwIDEyIDMuMjUgMTIgMy4yNVMxNi4zMSA4LjEgMTcuNjIgMTJDMTQuNSAxMi4yMiAxMiAxNC44MiAxMiAxOE0yMS41NCAxNS44OEwyMC4xMyAxNC40N0wxOCAxNi41OUwxNS44OCAxNC40N0wxNC40NyAxNS44OEwxNi41OSAxOEwxNC40NyAyMC4xMkwxNS44OCAyMS41M0wxOCAxOS40MUwyMC4xMiAyMS41M0wyMS41MyAyMC4xMkwxOS40MSAxOEwyMS41NCAxNS44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlclJlbW92ZU91dGxpbmUgPSBcIk0xMiAxOEMxMiAxOC43IDEyLjEyIDE5LjM2IDEyLjM0IDIwQzEyLjIzIDIwIDEyLjEyIDIwIDEyIDIwQzguNjkgMjAgNiAxNy4zMSA2IDE0QzYgMTAgMTIgMy4yNSAxMiAzLjI1UzE2LjMxIDguMSAxNy42MiAxMkMxNi45MyAxMi4wNiAxNi4yOCAxMi4yMiAxNS42NyAxMi40N0MxNSAxMC42OCAxMy41IDguMzMgMTIgNi4zOUMxMCA4Ljk2IDggMTIuMjMgOCAxNEM4IDE2LjIxIDkuNzkgMTggMTIgMThNMjEuNTQgMTUuODhMMjAuMTMgMTQuNDdMMTggMTYuNTlMMTUuODggMTQuNDdMMTQuNDcgMTUuODhMMTYuNTkgMThMMTQuNDcgMjAuMTJMMTUuODggMjEuNTNMMTggMTkuNDFMMjAuMTIgMjEuNTNMMjEuNTMgMjAuMTJMMTkuNDEgMThMMjEuNTQgMTUuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJXZWxsID0gXCJNMjIgMTZIMlYxOEg0VjIySDIwVjE4SDIyVjE2TTEwLjQ0IDE1QzEwLjE5IDE1IDEwIDE0LjgxIDkuOTUgMTQuNTZMOS41NyAxMS41NkM5LjU3IDExLjU0IDkuNTcgMTEuNSA5LjU3IDExLjVDOS41NyAxMS4yMiA5Ljc5IDExIDEwLjA3IDExSDEzLjkzQzEzLjk1IDExIDEzLjk3IDExIDE0IDExQzE0LjI3IDExLjA0IDE0LjQ2IDExLjI5IDE0LjQzIDExLjU2TDE0LjA1IDE0LjU2QzE0IDE0LjgxIDEzLjgxIDE1IDEzLjU2IDE1SDEwLjQ0TTE5IDJMMjEuNTYgNi42OEMyMS42IDYuNzggMjEuNjEgNi44OSAyMS42MSA3QzIxLjYxIDcuNTYgMjEuMTYgOCAyMC42MSA4SDE5VjE1SDE3VjhIMTNWMTBIMTFWOEg3VjE1SDVWOEgzLjYyQzMuNDYgOCAzLjMxIDcuOTYgMy4xNiA3Ljg5QzIuNjcgNy42NCAyLjQ3IDcuMDQgMi43MiA2LjU1TDUgMkgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlcldlbGxPdXRsaW5lID0gXCJNMy42MiA4SDVWMTVIN1Y4SDExVjEwSDEzVjhIMTdWMTVIMTlWOEgyMC42MUMyMS4xNiA4IDIxLjYxIDcuNTYgMjEuNjEgN0MyMS42MSA2Ljg5IDIxLjYgNi43OCAyMS41NiA2LjY4TDE5IDJINUwyLjcyIDYuNTVDMi40NyA3LjA0IDIuNjcgNy42NCAzLjE2IDcuODlDMy4zMSA3Ljk2IDMuNDYgOCAzLjYyIDhNNi4yNCA0SDE3Ljc2TDE4Ljc2IDZINS4yNEw2LjI0IDRNMiAxNlYxOEg0VjIySDIwVjE4SDIyVjE2SDJNMTggMjBINlYxOEgxOFYyME0xMy45MyAxMUMxNC4yMSAxMSAxNC40MyAxMS4yMiAxNC40MyAxMS41QzE0LjQzIDExLjUgMTQuNDMgMTEuNTQgMTQuNDMgMTEuNTZMMTQuMDUgMTQuNTZDMTQgMTQuODEgMTMuODEgMTUgMTMuNTYgMTVIMTAuNDRDMTAuMTkgMTUgMTAgMTQuODEgOS45NSAxNC41Nkw5LjU3IDExLjU2QzkuNTQgMTEuMjkgOS43MyAxMS4wNCAxMCAxMUMxMC4wMyAxMSAxMC4wNSAxMSAxMC4wNyAxMUgxMy45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlcmluZ0NhbiA9IFwiTTE4LjUgNy40N0MxNy43NiA4LjIgMTcuNTcgOS4yNSAxNy45MiAxMC4xNUwxNSAxMy4wN1YxMUMxNSAxMC40NSAxNC41NSAxMCAxNCAxMEgxMi45N0MxMyA5LjgzIDEzIDkuNjcgMTMgOS41QzEzIDYuNDYgMTAuNTQgNCA3LjUgNFMyIDYuNDYgMiA5LjVDMiAxMS4yMSAyLjc4IDEyLjczIDQgMTMuNzRWMjBDNCAyMC41NSA0LjQ1IDIxIDUgMjFIMTRDMTQuNTUgMjEgMTUgMjAuNTUgMTUgMjBWMTUuODlMMTkuMzMgMTEuNTZDMjAuMjMgMTEuOTEgMjEuMjggMTEuNzMgMjIgMTFMMTguNSA3LjQ3TTQuMDUgMTBDNC4wMyA5LjgzIDQgOS42NyA0IDkuNUM0IDcuNTcgNS41NyA2IDcuNSA2UzExIDcuNTcgMTEgOS41QzExIDkuNjcgMTAuOTcgOS44MyAxMC45NSAxMEg0LjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyaW5nQ2FuT3V0bGluZSA9IFwiTTE4LjUgNy40N0MxNy43NiA4LjIgMTcuNTcgOS4yNSAxNy45MiAxMC4xNUwxNSAxMy4wN1YxMUMxNSAxMC40NSAxNC41NSAxMCAxNCAxMEgxMi45N0MxMyA5LjgzIDEzIDkuNjcgMTMgOS41QzEzIDYuNDYgMTAuNTQgNCA3LjUgNFMyIDYuNDYgMiA5LjVDMiAxMS4yMSAyLjc4IDEyLjczIDQgMTMuNzRWMjBDNCAyMC41NSA0LjQ1IDIxIDUgMjFIMTRDMTQuNTUgMjEgMTUgMjAuNTUgMTUgMjBWMTUuODlMMTkuMzMgMTEuNTZDMjAuMjMgMTEuOTEgMjEuMjggMTEuNzMgMjIgMTFMMTguNSA3LjQ3TTQuMDUgMTBDNC4wMyA5LjgzIDQgOS42NyA0IDkuNUM0IDcuNTcgNS41NyA2IDcuNSA2UzExIDcuNTcgMTEgOS41QzExIDkuNjcgMTAuOTcgOS44MyAxMC45NSAxME0xMyAxOUg2VjEySDEzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVybWFyayA9IFwiTTIxLDNIM0EyLDIgMCAwLDAgMSw1VjE5QTIsMiAwIDAsMCAzLDIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QTIsMiAwIDAsMCAyMSwzTTIxLDE5SDEyVjEzSDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdmUgPSBcIk0yMCwxMkMxOC42MSwxMiAxNy4yMiwxMS41MyAxNiwxMC42N0MxMy41NiwxMi4zOCAxMC40NCwxMi4zOCA4LDEwLjY3QzYuNzgsMTEuNTMgNS4zOSwxMiA0LDEySDJWMTRINEM1LjM3LDE0IDYuNzQsMTMuNjUgOCwxM0MxMC41LDE0LjMgMTMuNSwxNC4zIDE2LDEzQzE3LjI2LDEzLjY1IDE4LjYyLDE0IDIwLDE0SDIyVjEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F2ZWZvcm0gPSBcIk0yMiAxMkwyMCAxM0wxOSAxNEwxOCAxM0wxNyAxNkwxNiAxM0wxNSAyMUwxNCAxM0wxMyAxNUwxMiAxM0wxMSAxN0wxMCAxM0w5IDIyTDggMTNMNyAxOUw2IDEzTDUgMTRMNCAxM0wyIDEyTDQgMTFMNSAxMEw2IDExTDcgNUw4IDExTDkgMkwxMCAxMUwxMSA3TDEyIDExTDEzIDlMMTQgMTFMMTUgM0wxNiAxMUwxNyA4TDE4IDExTDE5IDEwTDIwIDExTDIyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdmVzID0gXCJNMjAsMTJIMjJWMTRIMjBDMTguNjIsMTQgMTcuMjYsMTMuNjUgMTYsMTNDMTMuNSwxNC4zIDEwLjUsMTQuMyA4LDEzQzYuNzQsMTMuNjUgNS4zNywxNCA0LDE0SDJWMTJINEM1LjM5LDEyIDYuNzgsMTEuNTMgOCwxMC42N0MxMC40NCwxMi4zOCAxMy41NiwxMi4zOCAxNiwxMC42N0MxNy4yMiwxMS41MyAxOC42MSwxMiAyMCwxMk0yMCw2SDIyVjhIMjBDMTguNjIsOCAxNy4yNiw3LjY1IDE2LDdDMTMuNSw4LjMgMTAuNSw4LjMgOCw3QzYuNzQsNy42NSA1LjM3LDggNCw4SDJWNkg0QzUuMzksNiA2Ljc4LDUuNTMgOCw0LjY3QzEwLjQ0LDYuMzggMTMuNTYsNi4zOCAxNiw0LjY3QzE3LjIyLDUuNTMgMTguNjEsNiAyMCw2TTIwLDE4SDIyVjIwSDIwQzE4LjYyLDIwIDE3LjI2LDE5LjY1IDE2LDE5QzEzLjUsMjAuMyAxMC41LDIwLjMgOCwxOUM2Ljc0LDE5LjY1IDUuMzcsMjAgNCwyMEgyVjE4SDRDNS4zOSwxOCA2Ljc4LDE3LjUzIDgsMTYuNjdDMTAuNDQsMTguMzggMTMuNTYsMTguMzggMTYsMTYuNjdDMTcuMjIsMTcuNTMgMTguNjEsMTggMjAsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F6ZSA9IFwiTTIwLjU0LDYuNjNDMjEuMjMsNy41NyAyMS42OSw4LjY3IDIxLjg5LDkuODJDMjIuMSwxMS4wNyAyMiwxMi4zNCAyMS41OCwxMy41NEMyMS4xOCwxNC43MSAyMC41LDE1Ljc2IDE5LjU4LDE2LjZDMTguOTEsMTcuMjQgMTguMTUsMTcuNzcgMTcuMzIsMTguMThDMTcuNzMsMTkuMjUgMTcuMTksMjAuNDUgMTYuMTIsMjAuODZDMTUuODgsMjAuOTUgMTUuNjMsMjEgMTUuMzgsMjFDMTQuMjcsMjEgMTMuMzUsMjAuMTEgMTMuMzEsMTlDMTMuMDUsMTkgMTAuNzMsMTkgMTAuMjQsMTlDMTAuMTMsMjAuMTQgOS4xMSwyMSA3Ljk3LDIwLjg3QzYuOTEsMjAuNzcgNi4xMSwxOS44OSA2LjA5LDE4LjgzQzYuMSwxOC42NCA2LjEzLDE4LjQ0IDYuMTksMTguMjZDNC42LDE3LjczIDMuMjEsMTYuNzQgMi4xOSwxNS40MUMxLjg2LDE0Ljk3IDEuOTYsMTQuMzQgMi40MiwxNEMyLjYsMTMuODYgMi44MiwxMy43OCAzLjA1LDEzLjc4QzMuNzcsMTMuNzggNC4wNSwxMy41MyA0LjIyLDEzLjE1QzQuNDYsMTIuNDMgNC42LDExLjY4IDQuNjEsMTAuOTJDNC42NCwxMC4zOSA0LjcsOS44NyA0Ljc4LDkuMzVDNS4xMyw3LjYyIDYuMSw2LjA3IDcuNSw1QzkuMTYsMy43IDExLjE5LDMgMTMuMjksM0MxNC43MiwzIDE2LjEzLDMuMzUgMTcuNCw0QzE4LjY0LDQuNjIgMTkuNzEsNS41IDIwLjU0LDYuNjNNMTYuNzIsMTcuMzFDMTguNSwxNi41IDE5LjksMTUuMDQgMjAuNTksMTMuMjFDMjIuMjEsOC4yNyAxOCw0LjA1IDEzLjI5LDQuMDVDMTIuOTQsNC4wNSAxMi41OCw0LjA3IDEyLjIzLDQuMTJDOS4zNiw0LjUgNi40LDYuNSA1LjgxLDkuNUM1LjQzLDExLjUgNiwxNC43OSAzLjA1LDE0Ljc5QzQsMTYgNS4zMiwxNi45MyA2LjgxLDE3LjM3QzcuNjYsMTYuNjEgOC45NywxNi42OSA5Ljc0LDE3LjU1QzkuODUsMTcuNjcgOS45NCwxNy44IDEwLDE3Ljk0QzEwLjU5LDE3Ljk0IDEzLjIsMTcuOTQgMTMuNTUsMTcuOTRDMTQuMDcsMTYuOTIgMTUuMzMsMTYuNSAxNi4zNSwxNy4wNEMxNi41LDE3LjEyIDE2LjYsMTcuMjEgMTYuNzIsMTcuMzFNMTAuOTcsMTAuMzFDMTAuMzksMTAuMzQgOS44OCw5LjkgOS44NSw5LjMxQzkuODIsOC43MyAxMC4yNyw4LjIzIDEwLjg1LDguMTlDMTEuNDMsOC4xNiAxMS45NCw4LjYxIDExLjk3LDkuMjVDMTIsOS44IDExLjU2LDEwLjI3IDExLDEwLjI5TDEwLjk3LDEwLjMxTTE1LjY2LDEwLjMxQzE1LjA4LDEwLjM0IDE0LjU3LDkuOSAxNC41NCw5LjMxQzE0LjUsOC43MyAxNC45Niw4LjIzIDE1LjU0LDguMTlDMTYuMTIsOC4xNiAxNi42Myw4LjYxIDE2LjY2LDkuMjVDMTYuNjgsOS44IDE2LjI1LDEwLjI3IDE1LjY2LDEwLjI5VjEwLjMxTTkuNzEsMTIuMDdDOS42NSwxMS43OSA5Ljg0LDExLjUgMTAuMTIsMTEuNDVDMTAuNCwxMS40IDEwLjY4LDExLjU4IDEwLjc0LDExLjg2VjExLjg2QzExLjA5LDEyLjk3IDEyLjE2LDEzLjY5IDEzLjMyLDEzLjZDMTQuNDYsMTMuNjYgMTUuNSwxMi45NiAxNS44OSwxMS44OEMxNi4wMywxMS42MiAxNi4zNSwxMS41IDE2LjYsMTEuNjVDMTYuNzgsMTEuNzUgMTYuODksMTEuOTIgMTYuODksMTIuMTJDMTYuNywxMi44MyAxNi4yNiwxMy40NSAxNS42NiwxMy44OEMxNC45NywxNC4zNiAxNC4xNiwxNC42MyAxMy4zMiwxNC42NEgxMy4yMUMxMS41OCwxNC43MSAxMC4xMSwxMy42NCA5LjY4LDEyLjA2TDkuNzEsMTIuMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlckNsb3VkeSA9IFwiTTYsMTlBNSw1IDAgMCwxIDEsMTRBNSw1IDAgMCwxIDYsOUM3LDYuNjUgOS4zLDUgMTIsNUMxNS40Myw1IDE4LjI0LDcuNjYgMTguNSwxMS4wM0wxOSwxMUE0LDQgMCAwLDEgMjMsMTVBNCw0IDAgMCwxIDE5LDE5SDZNMTksMTNIMTdWMTJBNSw1IDAgMCwwIDEyLDdDOS41LDcgNy40NSw4LjgyIDcuMDYsMTEuMTlDNi43MywxMS4wNyA2LjM3LDExIDYsMTFBMywzIDAgMCwwIDMsMTRBMywzIDAgMCwwIDYsMTdIMTlBMiwyIDAgMCwwIDIxLDE1QTIsMiAwIDAsMCAxOSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyQ2xvdWR5QWxlcnQgPSBcIk02LDE5QTUsNSAwIDAsMSAxLDE0QTUsNSAwIDAsMSA2LDlDNyw2LjY1IDkuMyw1IDEyLDVDMTUuNDMsNSAxOC4yNCw3LjY2IDE4LjUsMTEuMDNMMTksMTFBNCw0IDAgMCwxIDIzLDE1QTQsNCAwIDAsMSAxOSwxOUg2TTE5LDEzSDE3VjEyQTUsNSAwIDAsMCAxMiw3QzkuNSw3IDcuNDUsOC44MiA3LjA2LDExLjE5QzYuNzMsMTEuMDcgNi4zNywxMSA2LDExQTMsMyAwIDAsMCAzLDE0QTMsMyAwIDAsMCA2LDE3SDE5QTIsMiAwIDAsMCAyMSwxNUEyLDIgMCAwLDAgMTksMTNNMTMsMTJIMTFWOEgxM1YxMk0xMywxNkgxMVYxNEgxM1wiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJDbG91ZHlBcnJvd1JpZ2h0ID0gXCJNNiw3TDYuNjksNy4wNkM3LjMyLDQuNzIgOS40NiwzIDEyLDNBNS41LDUuNSAwIDAsMSAxNy41LDguNUwxNy40Miw5LjQ1QzE3Ljg4LDkuMTYgMTguNDIsOSAxOSw5QTMsMyAwIDAsMSAyMiwxMkEzLDMgMCAwLDEgMTksMTVINkE0LDQgMCAwLDEgMiwxMUE0LDQgMCAwLDEgNiw3TTYsOUEyLDIgMCAwLDAgNCwxMUEyLDIgMCAwLDAgNiwxM0gxOUExLDEgMCAwLDAgMjAsMTJBMSwxIDAgMCwwIDE5LDExSDE1LjVWOC41QTMuNSwzLjUgMCAwLDAgMTIsNUEzLjUsMy41IDAgMCwwIDguNSw4LjVWOUg2TTIyLDE5TDE5LDIyVjIwSDJWMThIMTlWMTZMMjIsMTlcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyRm9nID0gXCJNMywxNUgxM0ExLDEgMCAwLDEgMTQsMTZBMSwxIDAgMCwxIDEzLDE3SDNBMSwxIDAgMCwxIDIsMTZBMSwxIDAgMCwxIDMsMTVNMTYsMTVIMjFBMSwxIDAgMCwxIDIyLDE2QTEsMSAwIDAsMSAyMSwxN0gxNkExLDEgMCAwLDEgMTUsMTZBMSwxIDAgMCwxIDE2LDE1TTEsMTJBNSw1IDAgMCwxIDYsN0M3LDQuNjUgOS4zLDMgMTIsM0MxNS40MywzIDE4LjI0LDUuNjYgMTguNSw5LjAzTDE5LDlDMjEuMTksOSAyMi45NywxMC43NiAyMywxM0gyMUEyLDIgMCAwLDAgMTksMTFIMTdWMTBBNSw1IDAgMCwwIDEyLDVDOS41LDUgNy40NSw2LjgyIDcuMDYsOS4xOUM2LjczLDkuMDcgNi4zNyw5IDYsOUEzLDMgMCAwLDAgMywxMkMzLDEyLjM1IDMuMDYsMTIuNjkgMy4xNywxM0gxLjFMMSwxMk0zLDE5SDVBMSwxIDAgMCwxIDYsMjBBMSwxIDAgMCwxIDUsMjFIM0ExLDEgMCAwLDEgMiwyMEExLDEgMCAwLDEgMywxOU04LDE5SDIxQTEsMSAwIDAsMSAyMiwyMEExLDEgMCAwLDEgMjEsMjFIOEExLDEgMCAwLDEgNywyMEExLDEgMCAwLDEgOCwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVySGFpbCA9IFwiTTYsMTRBMSwxIDAgMCwxIDcsMTVBMSwxIDAgMCwxIDYsMTZBNSw1IDAgMCwxIDEsMTFBNSw1IDAgMCwxIDYsNkM3LDMuNjUgOS4zLDIgMTIsMkMxNS40MywyIDE4LjI0LDQuNjYgMTguNSw4LjAzTDE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkgxOEExLDEgMCAwLDEgMTcsMTVBMSwxIDAgMCwxIDE4LDE0SDE5QTIsMiAwIDAsMCAyMSwxMkEyLDIgMCAwLDAgMTksMTBIMTdWOUE1LDUgMCAwLDAgMTIsNEM5LjUsNCA3LjQ1LDUuODIgNy4wNiw4LjE5QzYuNzMsOC4wNyA2LjM3LDggNiw4QTMsMyAwIDAsMCAzLDExQTMsMyAwIDAsMCA2LDE0TTEwLDE4QTIsMiAwIDAsMSAxMiwyMEEyLDIgMCAwLDEgMTAsMjJBMiwyIDAgMCwxIDgsMjBBMiwyIDAgMCwxIDEwLDE4TTE0LjUsMTZBMS41LDEuNSAwIDAsMSAxNiwxNy41QTEuNSwxLjUgMCAwLDEgMTQuNSwxOUExLjUsMS41IDAgMCwxIDEzLDE3LjVBMS41LDEuNSAwIDAsMSAxNC41LDE2TTEwLjUsMTJBMS41LDEuNSAwIDAsMSAxMiwxMy41QTEuNSwxLjUgMCAwLDEgMTAuNSwxNUExLjUsMS41IDAgMCwxIDksMTMuNUExLjUsMS41IDAgMCwxIDEwLjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlckhhenkgPSBcIk0xMiwyTDE0LjM5LDUuNDJDMTMuNjUsNS4xNSAxMi44NCw1IDEyLDVDMTEuMTYsNSAxMC4zNSw1LjE1IDkuNjEsNS40MkwxMiwyTTMuMzQsN0w3LjUsNi42NUM2LjksNy4xNiA2LjM2LDcuNzggNS45NCw4LjVDNS41LDkuMjQgNS4yNSwxMCA1LjExLDEwLjc5TDMuMzQsN00yMC42NSw3TDE4Ljg4LDEwLjc5QzE4Ljc0LDEwIDE4LjQ3LDkuMjMgMTguMDUsOC41QzE3LjYzLDcuNzggMTcuMSw3LjE1IDE2LjUsNi42NE0xNCwxNUExLDEgMCAwLDAgMTMsMTRIM0ExLDEgMCAwLDAgMiwxNUExLDEgMCAwLDAgMywxNkgxM0ExLDEgMCAwLDAgMTQsMTVNMjIsMTVBMSwxIDAgMCwwIDIxLDE0SDE3QTEsMSAwIDAsMCAxNiwxNUExLDEgMCAwLDAgMTcsMTZIMjFBMSwxIDAgMCwwIDIyLDE1TTEwLDE5QTEsMSAwIDAsMCAxMSwyMEgyMEExLDEgMCAwLDAgMjEsMTlBMSwxIDAgMCwwIDIwLDE4SDExQTEsMSAwIDAsMCAxMCwxOU0zLDE5QTEsMSAwIDAsMCA0LDIwSDdBMSwxIDAgMCwwIDgsMTlBMSwxIDAgMCwwIDcsMThINEExLDEgMCAwLDAgMywxOU0xMiw5QTMsMyAwIDAsMSAxNSwxMkgxN0E1LDUgMCAwLDAgMTIsN0E1LDUgMCAwLDAgNywxMkg5QTMsMyAwIDAsMSAxMiw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJIdXJyaWNhbmUgPSBcIk0xNSw2Ljc5QzE2Ljg2LDcuODYgMTgsOS44NSAxOCwxMkMxOCwyMiA2LDIyIDYsMjJDNy4yNSwyMS4wNiA4LjM4LDE5Ljk1IDkuMzQsMTguNzFDOS4zOCwxOC42NiA5LjQxLDE4LjYxIDkuNDQsMTguNTVDOS42OSwxOC4wNiA5LjUsMTcuNDYgOSwxNy4yMUM3LjE0LDE2LjE0IDYsMTQuMTUgNiwxMkM2LDIgMTgsMiAxOCwyQzE2Ljc1LDIuOTQgMTUuNjIsNC4wNSAxNC42Niw1LjI5QzE0LjYyLDUuMzQgMTQuNTksNS4zOSAxNC41Niw1LjQ1QzE0LjMxLDUuOTQgMTQuNSw2LjU0IDE1LDYuNzlNMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJMaWdodG5pbmcgPSBcIk02LDE2QTUsNSAwIDAsMSAxLDExQTUsNSAwIDAsMSA2LDZDNywzLjY1IDkuMywyIDEyLDJDMTUuNDMsMiAxOC4yNCw0LjY2IDE4LjUsOC4wM0wxOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZIMThBMSwxIDAgMCwxIDE3LDE1QTEsMSAwIDAsMSAxOCwxNEgxOUEyLDIgMCAwLDAgMjEsMTJBMiwyIDAgMCwwIDE5LDEwSDE3VjlBNSw1IDAgMCwwIDEyLDRDOS41LDQgNy40NSw1LjgyIDcuMDYsOC4xOUM2LjczLDguMDcgNi4zNyw4IDYsOEEzLDMgMCAwLDAgMywxMUEzLDMgMCAwLDAgNiwxNEg3QTEsMSAwIDAsMSA4LDE1QTEsMSAwIDAsMSA3LDE2SDZNMTIsMTFIMTVMMTMsMTVIMTVMMTEuMjUsMjJMMTIsMTdIOS41TDEyLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJMaWdodG5pbmdSYWlueSA9IFwiTTQuNSwxMy41OUM1LDEzLjg3IDUuMTQsMTQuNSA0Ljg3LDE0Ljk2QzQuNTksMTUuNDQgNCwxNS42IDMuNSwxNS4zM1YxNS4zM0MyLDE0LjQ3IDEsMTIuODUgMSwxMUE1LDUgMCAwLDEgNiw2QzcsMy42NSA5LjMsMiAxMiwyQzE1LjQzLDIgMTguMjQsNC42NiAxOC41LDguMDNMMTksOEE0LDQgMCAwLDEgMjMsMTJBNCw0IDAgMCwxIDE5LDE2QTEsMSAwIDAsMSAxOCwxNUExLDEgMCAwLDEgMTksMTRBMiwyIDAgMCwwIDIxLDEyQTIsMiAwIDAsMCAxOSwxMEgxN1Y5QTUsNSAwIDAsMCAxMiw0QzkuNSw0IDcuNDUsNS44MiA3LjA2LDguMTlDNi43Myw4LjA3IDYuMzcsOCA2LDhBMywzIDAgMCwwIDMsMTFDMywxMi4xMSAzLjYsMTMuMDggNC41LDEzLjZWMTMuNTlNOS41LDExSDEyLjVMMTAuNSwxNUgxMi41TDguNzUsMjJMOS41LDE3SDdMOS41LDExTTE3LjUsMTguNjdDMTcuNSwxOS45NiAxNi41LDIxIDE1LjI1LDIxQzE0LDIxIDEzLDE5Ljk2IDEzLDE4LjY3QzEzLDE3LjEyIDE1LjI1LDE0LjUgMTUuMjUsMTQuNUMxNS4yNSwxNC41IDE3LjUsMTcuMTIgMTcuNSwxOC42N1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyTmlnaHQgPSBcIk0xNy43NSw0LjA5TDE1LjIyLDYuMDNMMTYuMTMsOS4wOUwxMy41LDcuMjhMMTAuODcsOS4wOUwxMS43OCw2LjAzTDkuMjUsNC4wOUwxMi40NCw0TDEzLjUsMUwxNC41Niw0TDE3Ljc1LDQuMDlNMjEuMjUsMTFMMTkuNjEsMTIuMjVMMjAuMiwxNC4yM0wxOC41LDEzLjA2TDE2LjgsMTQuMjNMMTcuMzksMTIuMjVMMTUuNzUsMTFMMTcuODEsMTAuOTVMMTguNSw5TDE5LjE5LDEwLjk1TDIxLjI1LDExTTE4Ljk3LDE1Ljk1QzE5LjgsMTUuODcgMjAuNjksMTcuMDUgMjAuMTYsMTcuOEMxOS44NCwxOC4yNSAxOS41LDE4LjY3IDE5LjA4LDE5LjA3QzE1LjE3LDIzIDguODQsMjMgNC45NCwxOS4wN0MxLjAzLDE1LjE3IDEuMDMsOC44MyA0Ljk0LDQuOTNDNS4zNCw0LjUzIDUuNzYsNC4xNyA2LjIxLDMuODVDNi45NiwzLjMyIDguMTQsNC4yMSA4LjA2LDUuMDRDNy43OSw3LjkgOC43NSwxMC44NyAxMC45NSwxMy4wNkMxMy4xNCwxNS4yNiAxNi4xLDE2LjIyIDE4Ljk3LDE1Ljk1TTE3LjMzLDE3Ljk3QzE0LjUsMTcuODEgMTEuNywxNi42NCA5LjUzLDE0LjVDNy4zNiwxMi4zMSA2LjIsOS41IDYuMDQsNi42OEMzLjIzLDkuODIgMy4zNCwxNC42NCA2LjM1LDE3LjY2QzkuMzcsMjAuNjcgMTQuMTksMjAuNzggMTcuMzMsMTcuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlck5pZ2h0UGFydGx5Q2xvdWR5ID0gXCJNMjIsMTAuMjhDMjEuNzQsMTAuMyAyMS41LDEwLjMxIDIxLjI2LDEwLjMxQzE5LjMyLDEwLjMxIDE3LjM5LDkuNTcgMTUuOTEsOC4wOUMxNC4yNSw2LjQ0IDEzLjUsNC4xOSAxMy43MiwyQzEzLjc3LDEuNTMgMTMuMjIsMSAxMi43MSwxQzEyLjU3LDEgMTIuNDQsMS4wNCAxMi4zMiwxLjEyQzEyLDEuMzYgMTEuNjYsMS42NCAxMS4zNiwxLjk0QzkuMDUsNC4yNCA4LjU1LDcuNjYgOS44NCwxMC40NkM4LjMxLDExLjExIDcuMTMsMTIuNDMgNi42OSwxNC4wNkw2LDE0QTQsNCAwIDAsMCAyLDE4QTQsNCAwIDAsMCA2LDIySDE5QTMsMyAwIDAsMCAyMiwxOUEzLDMgMCAwLDAgMTksMTZDMTguNDIsMTYgMTcuODgsMTYuMTYgMTcuNDIsMTYuNDVMMTcuNSwxNS41QzE3LjUsMTUuMjggMTcuNSwxNS4wNSAxNy40NiwxNC44M0MxOS4xNCwxNC42NyAyMC43NywxMy45NCAyMi4wNiwxMi42NEMyMi4zOCwxMi4zNCAyMi42NCwxMiAyMi44OCwxMS42OEMyMy4yNywxMS4xMyAyMi42NSwxMC4yOCAyMi4wNCwxMC4yOE0xOSwxOEExLDEgMCAwLDEgMjAsMTlBMSwxIDAgMCwxIDE5LDIwSDZBMiwyIDAgMCwxIDQsMThBMiwyIDAgMCwxIDYsMTZIOC41VjE1LjVDOC41LDEzLjk0IDkuNTMsMTIuNjQgMTAuOTQsMTIuMThDMTEuMSwxMi4xMyAxMS4yNiwxMi4wOSAxMS40MywxMi4wNkMxMS42MSwxMi4wMyAxMS44LDEyIDEyLDEyQzEyLjIzLDEyIDEyLjQ1LDEyLjAzIDEyLjY2LDEyLjA3QzEyLjczLDEyLjA4IDEyLjgsMTIuMSAxMi44NywxMi4xM0MxMywxMi4xNiAxMy4xNSwxMi4yIDEzLjI4LDEyLjI1QzEzLjM2LDEyLjI4IDEzLjQ0LDEyLjMyIDEzLjUsMTIuMzZDMTMuNjMsMTIuNDEgMTMuNzQsMTIuNDcgMTMuODQsMTIuNTRDMTMuOTIsMTIuNTkgMTQsMTIuNjQgMTQuMDcsMTIuN0MxNC4xNywxMi43NyAxNC4yNSwxMi44NCAxNC4zNCwxMi45MkMxNC40MSwxMyAxNC41LDEzLjA1IDE0LjU1LDEzLjEyQzE0LjYzLDEzLjIgMTQuNjksMTMuMjkgMTQuNzYsMTMuMzdDMTQuODIsMTMuNDUgMTQuODksMTMuNTMgMTQuOTQsMTMuNjJDMTUsMTMuNzEgMTUuMDQsMTMuOCAxNS4wOSwxMy45QzE1LjE0LDE0IDE1LjIsMTQuMDggMTUuMjQsMTQuMThDMTUuNDEsMTQuNTkgMTUuNSwxNS4wMyAxNS41LDE1LjVWMThNMTYuODMsMTIuODZDMTUuOSwxMS4xNiAxNC4wOCwxMCAxMiwxMEgxMS44N0MxMS40MSw5LjE5IDExLjE0LDguMjYgMTEuMTQsNy4yOUMxMS4xNCw2LjMxIDExLjM5LDUuMzcgMTEuODYsNC41NUMxMi4yMSw2LjQxIDEzLjEyLDguMTQgMTQuNSw5LjVDMTUuODYsMTAuODggMTcuNTgsMTEuNzkgMTkuNDUsMTIuMTRDMTguNjYsMTIuNiAxNy43NiwxMi44NCAxNi44MywxMi44NlpcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyUGFydGx5Q2xvdWR5ID0gXCJNMTIuNzQsNS40N0MxNS4xLDYuNSAxNi4zNSw5LjAzIDE1LjkyLDExLjQ2QzE3LjE5LDEyLjU2IDE4LDE0LjE5IDE4LDE2VjE2LjE3QzE4LjMxLDE2LjA2IDE4LjY1LDE2IDE5LDE2QTMsMyAwIDAsMSAyMiwxOUEzLDMgMCAwLDEgMTksMjJINkE0LDQgMCAwLDEgMiwxOEE0LDQgMCAwLDEgNiwxNEg2LjI3QzUsMTIuNDUgNC42LDEwLjI0IDUuNSw4LjI2QzYuNzIsNS41IDkuOTcsNC4yNCAxMi43NCw1LjQ3TTExLjkzLDcuM0MxMC4xNiw2LjUgOC4wOSw3LjMxIDcuMzEsOS4wN0M2Ljg1LDEwLjA5IDYuOTMsMTEuMjIgNy40MSwxMi4xM0M4LjUsMTAuODMgMTAuMTYsMTAgMTIsMTBDMTIuNywxMCAxMy4zOCwxMC4xMiAxNCwxMC4zNEMxMy45NCw5LjA2IDEzLjE4LDcuODYgMTEuOTMsNy4zTTEzLjU1LDMuNjRDMTMsMy40IDEyLjQ1LDMuMjMgMTEuODgsMy4xMkwxNC4zNywxLjgyTDE1LjI3LDQuNzFDMTQuNzYsNC4yOSAxNC4xOSwzLjkzIDEzLjU1LDMuNjRNNi4wOSw0LjQ0QzUuNiw0Ljc5IDUuMTcsNS4xOSA0LjgsNS42M0w0LjkxLDIuODJMNy44NywzLjVDNy4yNSwzLjcxIDYuNjUsNC4wMyA2LjA5LDQuNDRNMTgsOS43MUMxNy45MSw5LjEyIDE3Ljc4LDguNTUgMTcuNTksOEwxOS45Nyw5LjVMMTcuOTIsMTEuNzNDMTguMDMsMTEuMDggMTguMDUsMTAuNCAxOCw5LjcxTTMuMDQsMTEuM0MzLjExLDExLjkgMy4yNCwxMi40NyAzLjQzLDEzTDEuMDYsMTEuNUwzLjEsOS4yOEMzLDkuOTMgMi45NywxMC42MSAzLjA0LDExLjNNMTksMThIMTZWMTZBNCw0IDAgMCwwIDEyLDEyQTQsNCAwIDAsMCA4LDE2SDZBMiwyIDAgMCwwIDQsMThBMiwyIDAgMCwwIDYsMjBIMTlBMSwxIDAgMCwwIDIwLDE5QTEsMSAwIDAsMCAxOSwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyUGFydGx5TGlnaHRuaW5nID0gXCJNMTksMTVDMTguNjUsMTUgMTguMzEsMTUuMDYgMTgsMTUuMTdWMTVDMTgsMTMuMTkgMTcuMTksMTEuNTYgMTUuOTIsMTAuNDZDMTYuMzUsOC4wMyAxNS4xLDUuNSAxMi43NSw0LjQ3QzkuOTcsMy4yNCA2LjcyLDQuNSA1LjUsNy4yNUM0LjYsOS4yNCA1LDExLjQ1IDYuMjcsMTNINkE0LDQgMCAwLDAgMiwxN0E0LDQgMCAwLDAgNiwyMUg3QzcsMjEgOCwyMSA4LDIwQzgsMTkgNywxOSA3LDE5SDZBMiwyIDAgMCwxIDQsMTdBMiwyIDAgMCwxIDYsMTVIOEE0LDQgMCAwLDEgMTIsMTFBNCw0IDAgMCwxIDE2LDE1VjE3SDE5QTEsMSAwIDAsMSAyMCwxOEExLDEgMCAwLDEgMTksMTlIMTdDMTcsMTkgMTYsMTkgMTYsMjBDMTYsMjEgMTcsMjEgMTcsMjFIMTlBMywzIDAgMCwwIDIyLDE4QTMsMyAwIDAsMCAxOSwxNU0xMiw5QzEwLjE2LDkgOC41LDkuODMgNy40MSwxMS4xM0M2LjkzLDEwLjIyIDYuODUsOS4wOSA3LjMxLDguMDdDOC4wOSw2LjMxIDEwLjE2LDUuNSAxMS45Myw2LjNDMTMuMTgsNi44NiAxMy45NCw4LjA2IDE0LDkuMzRDMTMuMzgsOS4xMiAxMi43LDkgMTIsOU0xMy41NSwyLjYzQzEzLDIuNCAxMi40NSwyLjIzIDExLjg4LDIuMTJMMTQuMzcsMC44MkwxNS4yNywzLjcxQzE0Ljc2LDMuMjkgMTQuMTksMi45MyAxMy41NSwyLjYzTTYuMDksMy40NEM1LjYsMy43OSA1LjE3LDQuMTkgNC44LDQuNjNMNC45MSwxLjgyTDcuODcsMi41QzcuMjUsMi43MSA2LjY1LDMuMDMgNi4wOSwzLjQ0TTE4LDguNzFDMTcuOTEsOC4xMiAxNy43OCw3LjU1IDE3LjU5LDdMMTkuOTcsOC41TDE3LjkyLDEwLjczQzE4LjAzLDEwLjA4IDE4LjA1LDkuNCAxOCw4LjcxTTMuMDQsMTAuM0MzLjExLDEwLjkgMy4yNSwxMS40NyAzLjQzLDEyTDEuMDYsMTAuNUwzLjEsOC4yOEMzLDguOTMgMi45Nyw5LjYxIDMuMDQsMTAuM00xMS44LDE1SDE0LjI1TDEyLjYxLDE4LjI3SDE0LjI1TDExLjE4LDI0TDExLjgsMTkuOTFIOS43NVwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJQYXJ0bHlSYWlueSA9IFwiTTEyLjc1LDQuNDdDMTUuMSw1LjUgMTYuMzUsOC4wMyAxNS45MiwxMC40NkMxNy4xOSwxMS41NiAxOCwxMy4xOSAxOCwxNVYxNS4xN0MxOC4zMSwxNS4wNiAxOC42NSwxNSAxOSwxNUEzLDMgMCAwLDEgMjIsMThBMywzIDAgMCwxIDE5LDIxSDE3QzE3LDIxIDE2LDIxIDE2LDIwQzE2LDE5IDE3LDE5IDE3LDE5SDE5QTEsMSAwIDAsMCAyMCwxOEExLDEgMCAwLDAgMTksMTdIMTZWMTVBNCw0IDAgMCwwIDEyLDExQTQsNCAwIDAsMCA4LDE1SDZBMiwyIDAgMCwwIDQsMTdBMiwyIDAgMCwwIDYsMTlIN0M3LDE5IDgsMTkgOCwyMEM4LDIxIDcsMjEgNywyMUg2QTQsNCAwIDAsMSAyLDE3QTQsNCAwIDAsMSA2LDEzSDYuMjdDNSwxMS40NSA0LjYsOS4yNCA1LjUsNy4yNUM2LjcyLDQuNSA5Ljk3LDMuMjQgMTIuNzUsNC40N00xMS45Myw2LjNDMTAuMTYsNS41IDguMDksNi4zMSA3LjMxLDguMDdDNi44NSw5LjA5IDYuOTMsMTAuMjIgNy40MSwxMS4xM0M4LjUsOS44MyAxMC4xNiw5IDEyLDlDMTIuNyw5IDEzLjM4LDkuMTIgMTQsOS4zNEMxMy45NCw4LjA2IDEzLjE4LDYuODYgMTEuOTMsNi4zTTEzLjU1LDIuNjNDMTMsMi40IDEyLjQ1LDIuMjMgMTEuODgsMi4xMkwxNC4zNywwLjgyTDE1LjI3LDMuNzFDMTQuNzYsMy4yOSAxNC4xOSwyLjkzIDEzLjU1LDIuNjNNNi4wOSwzLjQ0QzUuNiwzLjc5IDUuMTcsNC4xOSA0LjgsNC42M0w0LjkxLDEuODJMNy44NywyLjVDNy4yNSwyLjcxIDYuNjUsMy4wMyA2LjA5LDMuNDRNMTgsOC43MUMxNy45MSw4LjEyIDE3Ljc4LDcuNTUgMTcuNTksN0wxOS45Nyw4LjVMMTcuOTIsMTAuNzNDMTguMDMsMTAuMDggMTguMDUsOS40IDE4LDguNzFNMy4wNCwxMC4zQzMuMTEsMTAuOSAzLjI1LDExLjQ3IDMuNDMsMTJMMS4wNiwxMC41TDMuMSw4LjI4QzMsOC45MyAyLjk3LDkuNjEgMy4wNCwxMC4zTTEyLDE4LjkxQzEyLjU5LDE5LjgyIDEzLDIwLjYzIDEzLDIxQTEsMSAwIDAsMSAxMiwyMkExLDEgMCAwLDEgMTEsMjFDMTEsMjAuNjMgMTEuNDEsMTkuODIgMTIsMTguOTFNMTIsMTUuNjJDMTIsMTUuNjIgOSwxOSA5LDIxQTMsMyAwIDAsMCAxMiwyNEEzLDMgMCAwLDAgMTUsMjFDMTUsMTkgMTIsMTUuNjIgMTIsMTUuNjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclBhcnRseVNub3d5ID0gXCJNNiwxOS4wM0EyLDIgMCAwLDEgNCwxNy4wM0M0LDE1LjkyIDQuOSwxNS4wMyA2LDE1LjAzSDhDOCwxMi44MSA5Ljc5LDExLjAzIDEyLDExLjAzQTQsNCAwIDAsMSAxNiwxNS4wM1YxNy4wM0gxOUExLDEgMCAwLDEgMjAsMTguMDNDMjAsMTguNTcgMTkuNTUsMTkuMDMgMTksMTkuMDNIMTdDMTcsMTkuMDMgMTYsMTkuMDMgMTYsMjAuMDNDMTYsMjEuMDMgMTcsMjEuMDMgMTcsMjEuMDNIMTlBMywzIDAgMCwwIDIyLDE4LjAzQzIyLDE2LjM3IDIwLjY2LDE1LjAzIDE5LDE1LjAzQzE4LjY1LDE1LjAzIDE4LjMxLDE1LjA4IDE4LDE1LjE5VjE1LjAzQzE4LDEzLjIxIDE3LjE5LDExLjU4IDE1LjkyLDEwLjVDMTYuMzUsOC4wNSAxNS4xLDUuNTMgMTIuNzUsNC41QzkuOTcsMy4yNyA2LjcyLDQuNTMgNS41LDcuMjhDNC42LDkuMjcgNSwxMS40NyA2LjI3LDEzLjAzSDZDMy43OSwxMy4wMyAyLDE0LjgxIDIsMTcuMDNBNCw0IDAgMCwwIDYsMjEuMDNDNiwyMS4wMyA3LDIxLjAzIDcsMjAuMDNDNywxOS4wMyA2LDE5LjAzIDYsMTkuMDNNMTIsOS4wM0MxMC4xNiw5LjAzIDguNSw5Ljg1IDcuNDEsMTEuMTZDNi45MywxMC4yNSA2Ljg1LDkuMTEgNy4zMSw4LjA5QzguMDksNi4zMyAxMC4xNiw1LjUzIDExLjkzLDYuMzJDMTMuMTgsNi44OSAxMy45NCw4LjA4IDE0LDkuMzdDMTMuMzgsOS4xNSAxMi43LDkuMDMgMTIsOS4wM00xMy41NSwyLjY2QzEzLDIuNDIgMTIuNDUsMi4yNiAxMS44OCwyLjE1TDE0LjM3LDAuODRMMTUuMjcsMy43M0MxNC43NiwzLjMxIDE0LjE5LDIuOTUgMTMuNTUsMi42Nk02LjA5LDMuNDZDNS42LDMuODEgNS4xNyw0LjIxIDQuOCw0LjY2TDQuOTEsMS44NEw3Ljg3LDIuNTNDNy4yNSwyLjczIDYuNjUsMy4wNSA2LjA5LDMuNDZNMTgsOC43M0MxNy45MSw4LjE1IDE3Ljc4LDcuNTcgMTcuNTksNy4wM0wxOS45Nyw4LjUzTDE3LjkyLDEwLjc2QzE4LjAzLDEwLjEgMTguMDUsOS40MiAxOCw4LjczTTMuMDQsMTAuMzJDMy4xMSwxMC45MiAzLjI1LDExLjUgMy40MywxMi4wM0wxLjA2LDEwLjUzTDMuMSw4LjNDMyw4Ljk1IDIuOTcsOS42NCAzLjA0LDEwLjMyTTguMDMsMjEuNDVDOC4xMywyMS44NCA4LjUzLDIyLjA2IDguOTEsMjEuOTZMMTAuNSwyMS41NEwxMC4wNiwyMy4xMUM5Ljk2LDIzLjUgMTAuMTksMjMuOSAxMC41NywyNEMxMC45NSwyNC4xIDExLjM1LDIzLjg3IDExLjQ1LDIzLjVMMTEuODcsMjEuOTFMMTMuMDMsMjMuMDdDMTMuMywyMy4zNSAxMy43NywyMy4zNSAxNC4wNSwyMy4wN0MxNC4zMywyMi43OSAxNC4zMywyMi4zMiAxNC4wNSwyMi4wNUwxMi44OSwyMC44OEwxNC40NywyMC40N0MxNC44NSwyMC4zNyAxNS4wOCwxOS45NyAxNSwxOS41OUMxNC44OCwxOS4yMSAxNC41LDE5IDE0LjA5LDE5LjA4TDEyLjUsMTkuNUwxMi45NCwxNy45M0MxMy4wNCwxNy41NCAxMi44MiwxNy4xNSAxMi40MywxNy4wNUMxMi4wNSwxNi45NSAxMS42NiwxNy4xNyAxMS41NSwxNy41NkwxMS4xNCwxOS4xNEwxMCwxNy45N0M5LjcsMTcuNjkgOS4yMywxNy42OSA4Ljk1LDE3Ljk3QzguNjgsMTguMjcgOC42OCwxOC43MiA4Ljk1LDE5TDEwLjExLDIwLjE2TDguNTQsMjAuNTdDOC4xNSwyMC42OCA3LjkzLDIxLjA3IDguMDMsMjEuNDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclBhcnRseVNub3d5UmFpbnkgPSBcIk0xMy41NSwyLjY2QzEzLDIuNDIgMTIuNDUsMi4yNiAxMS44OCwyLjE1TDE0LjM3LDAuODRMMTUuMjcsMy43M0MxNC43NiwzLjMxIDE0LjE5LDIuOTUgMTMuNTUsMi42Nk02LjA5LDMuNDZDNS42LDMuODEgNS4xNyw0LjIxIDQuOCw0LjY2TDQuOTEsMS44NEw3Ljg3LDIuNTNDNy4yNSwyLjczIDYuNjUsMy4wNSA2LjA5LDMuNDZNMTgsOC43M0MxNy45MSw4LjE1IDE3Ljc4LDcuNTcgMTcuNTksNy4wM0wxOS45Nyw4LjUzTDE3LjkyLDEwLjc2QzE4LjAzLDEwLjEgMTguMDUsOS40MiAxOCw4LjczTTMuMDQsMTAuMzJDMy4xMSwxMC45MiAzLjI1LDExLjUgMy40MywxMi4wM0wxLjA2LDEwLjUzTDMuMSw4LjNDMyw4Ljk1IDIuOTcsOS42NCAzLjA0LDEwLjMyTTE2LjY4LDIyLjIxQzE2LjY4LDIzLjIgMTUuOTEsMjQgMTQuOTUsMjRDMTQsMjQgMTMuMjMsMjMuMiAxMy4yMywyMi4yMUMxMy4yMywyMS4wMyAxNC45NSwxOS4wMyAxNC45NSwxOS4wM0MxNC45NSwxOS4wMyAxNi42OCwyMS4wMyAxNi42OCwyMi4yMU02LjAzLDIxLjQ1QzUuOTMsMjEuMDcgNi4xNSwyMC42OCA2LjU0LDIwLjU4TDguMTMsMjAuMTVMNi45NiwxOUM2LjY4LDE4LjcyIDYuNjgsMTguMjcgNi45NiwxOEM3LjIzLDE3LjcgNy43LDE3LjcgOCwxOEw5LjE0LDE5LjE0TDkuNTUsMTcuNTZDOS42NSwxNy4xNyAxMC4wNSwxNi45NCAxMC40MywxNy4wNUMxMC44MiwxNy4xNSAxMS4wNSwxNy41NSAxMC45MywxNy45M0wxMC41LDE5LjVMMTIuMSwxOS4xQzEyLjUsMTkgMTIuODgsMTkuMjEgMTMsMTkuNkMxMy4wOCwxOS45NyAxMi44NiwyMC4zNyAxMi40NywyMC40N0wxMC44OSwyMC44OUwxMi4wNSwyMi4wNUMxMi4zMywyMi4zMiAxMi4zMywyMi43OSAxMi4wNSwyMy4wN0MxMS43NywyMy4zNSAxMS4zMSwyMy4zNSAxMS4wMywyMy4wN0w5Ljg3LDIxLjlMOS40NSwyMy41QzkuMzUsMjMuODggOC45NSwyNC4xIDguNTcsMjRDOC4xOCwyMy45IDcuOTcsMjMuNSA4LjA2LDIzLjEyTDguNSwyMS41NUw2LjkxLDIxLjk2QzYuNSwyMi4wNiA2LjEzLDIxLjg0IDYuMDMsMjEuNDVNMTksMTUuMDNDMTguNjUsMTUuMDMgMTguMzEsMTUuMDggMTgsMTUuMTlWMTUuMDNDMTgsMTMuMjEgMTcuMTksMTEuNTggMTUuOTIsMTAuNUMxNi4zNSw4LjA1IDE1LjEsNS41MyAxMi43NSw0LjVDOS45NywzLjI3IDYuNzIsNC41MyA1LjUsNy4yOEM0LjYsOS4yNyA1LDExLjQ3IDYuMjcsMTMuMDNINkMzLjc5LDEzLjAzIDIsMTQuODEgMiwxNy4wM0MyLDE4LjE3IDIuNSwxOS4yIDMuMjcsMTkuOTNWMTkuOTNDMy4yNywxOS45MyAzLjk3LDIwLjY0IDQuNjgsMTkuOTNDNS4zOSwxOS4yMiA0LjY4LDE4LjUgNC42OCwxOC41QzQuMjcsMTguMTUgNCwxNy42MiA0LDE3LjAzQzQsMTUuOTIgNC45LDE1LjAzIDYsMTUuMDNIOEM4LDEyLjgxIDkuNzksMTEuMDMgMTIsMTEuMDNBNCw0IDAgMCwxIDE2LDE1LjAzVjE3LjAzSDE5QTEsMSAwIDAsMSAyMCwxOC4wM0MyMCwxOC41NyAxOS41NSwxOS4wMyAxOSwxOS4wM0gxOEMxOCwxOS4wMyAxNywxOS4wMyAxNywyMC4wM0MxNywyMS4wMyAxOCwyMS4wMyAxOCwyMS4wM0gxOUEzLDMgMCAwLDAgMjIsMTguMDNDMjIsMTYuMzcgMjAuNjYsMTUuMDMgMTksMTUuMDNNMTIsOS4wM0MxMC4xNiw5LjAzIDguNSw5Ljg1IDcuNDEsMTEuMTZDNi45MywxMC4yNSA2Ljg1LDkuMTEgNy4zMSw4LjA5QzguMDksNi4zMyAxMC4xNiw1LjUzIDExLjkzLDYuMzJDMTMuMTgsNi44OSAxMy45NCw4LjA4IDE0LDkuMzdDMTMuMzgsOS4xNSAxMi43LDkuMDMgMTIsOS4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyUG91cmluZyA9IFwiTTksMTJDOS41MywxMi4xNCA5Ljg1LDEyLjY5IDkuNzEsMTMuMjJMOC40MSwxOC4wNUM4LjI3LDE4LjU5IDcuNzIsMTguOSA3LjE5LDE4Ljc2QzYuNjUsMTguNjIgNi4zNCwxOC4wNyA2LjUsMTcuNTRMNy43OCwxMi43MUM3LjkyLDEyLjE3IDguNDcsMTEuODYgOSwxMk0xMywxMkMxMy41MywxMi4xNCAxMy44NSwxMi42OSAxMy43MSwxMy4yMkwxMS42NCwyMC45NUMxMS41LDIxLjUgMTAuOTUsMjEuOCAxMC40MSwyMS42NkM5Ljg4LDIxLjUgOS41NiwyMC45NyA5LjcsMjAuNDNMMTEuNzgsMTIuNzFDMTEuOTIsMTIuMTcgMTIuNDcsMTEuODYgMTMsMTJNMTcsMTJDMTcuNTMsMTIuMTQgMTcuODUsMTIuNjkgMTcuNzEsMTMuMjJMMTYuNDEsMTguMDVDMTYuMjcsMTguNTkgMTUuNzIsMTguOSAxNS4xOSwxOC43NkMxNC42NSwxOC42MiAxNC4zNCwxOC4wNyAxNC41LDE3LjU0TDE1Ljc4LDEyLjcxQzE1LjkyLDEyLjE3IDE2LjQ3LDExLjg2IDE3LDEyTTE3LDEwVjlBNSw1IDAgMCwwIDEyLDRDOS41LDQgNy40NSw1LjgyIDcuMDYsOC4xOUM2LjczLDguMDcgNi4zNyw4IDYsOEEzLDMgMCAwLDAgMywxMUMzLDEyLjExIDMuNiwxMy4wOCA0LjUsMTMuNlYxMy41OUM1LDEzLjg3IDUuMTQsMTQuNSA0Ljg3LDE0Ljk2QzQuNTksMTUuNDMgNCwxNS42IDMuNSwxNS4zMlYxNS4zM0MyLDE0LjQ3IDEsMTIuODUgMSwxMUE1LDUgMCAwLDEgNiw2QzcsMy42NSA5LjMsMiAxMiwyQzE1LjQzLDIgMTguMjQsNC42NiAxOC41LDguMDNMMTksOEE0LDQgMCAwLDEgMjMsMTJDMjMsMTMuNSAyMi4yLDE0Ljc3IDIxLDE1LjQ2VjE1LjQ2QzIwLjUsMTUuNzMgMTkuOTEsMTUuNTcgMTkuNjMsMTUuMDlDMTkuMzYsMTQuNjEgMTkuNSwxNCAyMCwxMy43MlYxMy43M0MyMC42LDEzLjM5IDIxLDEyLjc0IDIxLDEyQTIsMiAwIDAsMCAxOSwxMEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyUmFpbnkgPSBcIk02LDE0LjAzQTEsMSAwIDAsMSA3LDE1LjAzQzcsMTUuNTggNi41NSwxNi4wMyA2LDE2LjAzQzMuMjQsMTYuMDMgMSwxMy43OSAxLDExLjAzQzEsOC4yNyAzLjI0LDYuMDMgNiw2LjAzQzcsMy42OCA5LjMsMi4wMyAxMiwyLjAzQzE1LjQzLDIuMDMgMTguMjQsNC42OSAxOC41LDguMDZMMTksOC4wM0E0LDQgMCAwLDEgMjMsMTIuMDNDMjMsMTQuMjMgMjEuMjEsMTYuMDMgMTksMTYuMDNIMThDMTcuNDUsMTYuMDMgMTcsMTUuNTggMTcsMTUuMDNDMTcsMTQuNDcgMTcuNDUsMTQuMDMgMTgsMTQuMDNIMTlBMiwyIDAgMCwwIDIxLDEyLjAzQTIsMiAwIDAsMCAxOSwxMC4wM0gxN1Y5LjAzQzE3LDYuMjcgMTQuNzYsNC4wMyAxMiw0LjAzQzkuNSw0LjAzIDcuNDUsNS44NCA3LjA2LDguMjFDNi43Myw4LjA5IDYuMzcsOC4wMyA2LDguMDNBMywzIDAgMCwwIDMsMTEuMDNBMywzIDAgMCwwIDYsMTQuMDNNMTIsMTQuMTVDMTIuMTgsMTQuMzkgMTIuMzcsMTQuNjYgMTIuNTYsMTQuOTRDMTMsMTUuNTYgMTQsMTcuMDMgMTQsMThDMTQsMTkuMTEgMTMuMSwyMCAxMiwyMEEyLDIgMCAwLDEgMTAsMThDMTAsMTcuMDMgMTEsMTUuNTYgMTEuNDQsMTQuOTRDMTEuNjMsMTQuNjYgMTEuODIsMTQuNCAxMiwxNC4xNU0xMiwxMS4wM0wxMS41LDExLjU5QzExLjUsMTEuNTkgMTAuNjUsMTIuNTUgOS43OSwxMy44MUM4LjkzLDE1LjA2IDgsMTYuNTYgOCwxOEE0LDQgMCAwLDAgMTIsMjJBNCw0IDAgMCwwIDE2LDE4QzE2LDE2LjU2IDE1LjA3LDE1LjA2IDE0LjIxLDEzLjgxQzEzLjM1LDEyLjU1IDEyLjUsMTEuNTkgMTIuNSwxMS41OVwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJTbm93eSA9IFwiTTYsMTRBMSwxIDAgMCwxIDcsMTVBMSwxIDAgMCwxIDYsMTZBNSw1IDAgMCwxIDEsMTFBNSw1IDAgMCwxIDYsNkM3LDMuNjUgOS4zLDIgMTIsMkMxNS40MywyIDE4LjI0LDQuNjYgMTguNSw4LjAzTDE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkgxOEExLDEgMCAwLDEgMTcsMTVBMSwxIDAgMCwxIDE4LDE0SDE5QTIsMiAwIDAsMCAyMSwxMkEyLDIgMCAwLDAgMTksMTBIMTdWOUE1LDUgMCAwLDAgMTIsNEM5LjUsNCA3LjQ1LDUuODIgNy4wNiw4LjE5QzYuNzMsOC4wNyA2LjM3LDggNiw4QTMsMyAwIDAsMCAzLDExQTMsMyAwIDAsMCA2LDE0TTcuODgsMTguMDdMMTAuMDcsMTcuNUw4LjQ2LDE1Ljg4QzguMDcsMTUuNSA4LjA3LDE0Ljg2IDguNDYsMTQuNDZDOC44NSwxNC4wNyA5LjUsMTQuMDcgOS44OCwxNC40NkwxMS41LDE2LjA3TDEyLjA3LDEzLjg4QzEyLjIxLDEzLjM0IDEyLjc2LDEzLjAzIDEzLjI5LDEzLjE3QzEzLjgzLDEzLjMxIDE0LjE0LDEzLjg2IDE0LDE0LjRMMTMuNDEsMTYuNTlMMTUuNiwxNkMxNi4xNCwxNS44NiAxNi42OSwxNi4xNyAxNi44MywxNi43MUMxNi45NywxNy4yNCAxNi42NiwxNy43OSAxNi4xMiwxNy45M0wxMy45MywxOC41TDE1LjU0LDIwLjEyQzE1LjkzLDIwLjUgMTUuOTMsMjEuMTUgMTUuNTQsMjEuNTRDMTUuMTUsMjEuOTMgMTQuNSwyMS45MyAxNC4xMiwyMS41NEwxMi41LDE5LjkzTDExLjkzLDIyLjEyQzExLjc5LDIyLjY2IDExLjI0LDIyLjk3IDEwLjcxLDIyLjgzQzEwLjE3LDIyLjY5IDkuODYsMjIuMTQgMTAsMjEuNkwxMC41OSwxOS40MUw4LjQsMjBDNy44NiwyMC4xNCA3LjMxLDE5LjgzIDcuMTcsMTkuMjlDNy4wMywxOC43NiA3LjM0LDE4LjIxIDcuODgsMTguMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclNub3d5SGVhdnkgPSBcIk00LDE2LjM2QzMuODYsMTUuODIgNC4xOCwxNS4yNSA0LjczLDE1LjExTDcsMTQuNUw1LjMzLDEyLjg2QzQuOTMsMTIuNDYgNC45MywxMS44MSA1LjMzLDExLjRDNS43MywxMSA2LjQsMTEgNi43OSwxMS40TDguNDUsMTMuMDVMOS4wNCwxMC44QzkuMTgsMTAuMjQgOS43NSw5LjkyIDEwLjI5LDEwLjA3QzEwLjg1LDEwLjIxIDExLjE3LDEwLjc4IDExLDExLjMzTDEwLjQyLDEzLjU4TDEyLjY3LDEzQzEzLjIyLDEyLjgzIDEzLjc5LDEzLjE1IDEzLjkzLDEzLjcxQzE0LjA4LDE0LjI1IDEzLjc2LDE0LjgyIDEzLjIsMTQuOTZMMTAuOTUsMTUuNTVMMTIuNiwxNy4yMUMxMywxNy42IDEzLDE4LjI3IDEyLjYsMTguNjdDMTIuMiwxOS4wNyAxMS41NCwxOS4wNyAxMS4xNSwxOC42N0w5LjUsMTdMOC44OSwxOS4yN0M4Ljc1LDE5LjgzIDguMTgsMjAuMTQgNy42NCwyMEM3LjA4LDE5Ljg2IDYuNzcsMTkuMjkgNi45MSwxOC43NEw3LjUsMTYuNUw1LjI2LDE3LjA5QzQuNzEsMTcuMjMgNC4xNCwxNi45MiA0LDE2LjM2TTEsMTBBNSw1IDAgMCwxIDYsNUM3LDIuNjUgOS4zLDEgMTIsMUMxNS40MywxIDE4LjI0LDMuNjYgMTguNSw3LjAzTDE5LDdBNCw0IDAgMCwxIDIzLDExQTQsNCAwIDAsMSAxOSwxNUExLDEgMCAwLDEgMTgsMTRBMSwxIDAgMCwxIDE5LDEzQTIsMiAwIDAsMCAyMSwxMUEyLDIgMCAwLDAgMTksOUgxN1Y4QTUsNSAwIDAsMCAxMiwzQzkuNSwzIDcuNDUsNC44MiA3LjA2LDcuMTlDNi43Myw3LjA3IDYuMzcsNyA2LDdBMywzIDAgMCwwIDMsMTBDMywxMC44NSAzLjM1LDExLjYxIDMuOTEsMTIuMTZDNC4yNywxMi41NSA0LjI2LDEzLjE2IDMuODgsMTMuNTRDMy41LDEzLjkzIDIuODUsMTMuOTMgMi40NywxMy41NEMxLjU2LDEyLjYzIDEsMTEuMzggMSwxME0xNC4wMywyMC40M0MxNC4xMywyMC44MiAxNC41LDIxLjA0IDE0LjkxLDIwLjk0TDE2LjUsMjAuNUwxNi4wNiwyMi4wOUMxNS45NiwyMi41IDE2LjE4LDIyLjg3IDE2LjU3LDIyLjk3QzE2Ljk1LDIzLjA4IDE3LjM1LDIyLjg1IDE3LjQ1LDIyLjQ2TDE3Ljg2LDIwLjg5TDE5LjAzLDIyLjA1QzE5LjMsMjIuMzMgMTkuNzcsMjIuMzMgMjAuMDUsMjIuMDVDMjAuMzMsMjEuNzcgMjAuMzMsMjEuMyAyMC4wNSwyMS4wM0wxOC44OSwxOS44NkwyMC40NiwxOS40NUMyMC44NSwxOS4zNSAyMS4wOCwxOC45NSAyMC45NywxOC41N0MyMC44NywxOC4xOCAyMC41LDE3Ljk2IDIwLjA5LDE4LjA2TDE4LjUsMTguNUwxOC45NCwxNi45MUMxOS4wNCwxNi41IDE4LjgyLDE2LjEzIDE4LjQzLDE2LjAzQzE4LjA1LDE1LjkyIDE3LjY1LDE2LjE1IDE3LjU1LDE2LjU0TDE3LjE0LDE4LjExTDE1Ljk3LDE2Ljk1QzE1LjcsMTYuNjcgMTUuMjMsMTYuNjcgMTQuOTUsMTYuOTVDMTQuNjcsMTcuMjQgMTQuNjcsMTcuNyAxNC45NSwxNy45N0wxNi4xMSwxOS4xNEwxNC41NCwxOS41NUMxNC4xNSwxOS42NSAxMy45MiwyMC4wNSAxNC4wMywyMC40M1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyU25vd3lSYWlueSA9IFwiTTE4LjUsMTguNjdDMTguNSwxOS45NiAxNy41LDIxIDE2LjI1LDIxQzE1LDIxIDE0LDE5Ljk2IDE0LDE4LjY3QzE0LDE3LjEyIDE2LjI1LDE0LjUgMTYuMjUsMTQuNUMxNi4yNSwxNC41IDE4LjUsMTcuMTIgMTguNSwxOC42N000LDE3LjM2QzMuODYsMTYuODIgNC4xOCwxNi4yNSA0LjczLDE2LjExTDcsMTUuNUw1LjMzLDEzLjg2QzQuOTMsMTMuNDYgNC45MywxMi44MSA1LjMzLDEyLjRDNS43MywxMiA2LjQsMTIgNi43OSwxMi40TDguNDUsMTQuMDVMOS4wNCwxMS44QzkuMTgsMTEuMjQgOS43NSwxMC45MiAxMC4yOSwxMS4wN0MxMC44NSwxMS4yMSAxMS4xNywxMS43OCAxMSwxMi4zM0wxMC40MiwxNC41OEwxMi42NywxNEMxMy4yMiwxMy44MyAxMy43OSwxNC4xNSAxMy45MywxNC43MUMxNC4wOCwxNS4yNSAxMy43NiwxNS44MiAxMy4yLDE1Ljk2TDEwLjk1LDE2LjU1TDEyLjYsMTguMjFDMTMsMTguNiAxMywxOS4yNyAxMi42LDE5LjY3QzEyLjIsMjAuMDcgMTEuNTQsMjAuMDcgMTEuMTUsMTkuNjdMOS41LDE4TDguODksMjAuMjdDOC43NSwyMC44MyA4LjE4LDIxLjE0IDcuNjQsMjFDNy4wOCwyMC44NiA2Ljc3LDIwLjI5IDYuOTEsMTkuNzRMNy41LDE3LjVMNS4yNiwxOC4wOUM0LjcxLDE4LjIzIDQuMTQsMTcuOTIgNCwxNy4zNk0xLDExQTUsNSAwIDAsMSA2LDZDNywzLjY1IDkuMywyIDEyLDJDMTUuNDMsMiAxOC4yNCw0LjY2IDE4LjUsOC4wM0wxOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZBMSwxIDAgMCwxIDE4LDE1QTEsMSAwIDAsMSAxOSwxNEEyLDIgMCAwLDAgMjEsMTJBMiwyIDAgMCwwIDE5LDEwSDE3VjlBNSw1IDAgMCwwIDEyLDRDOS41LDQgNy40NSw1LjgyIDcuMDYsOC4xOUM2LjczLDguMDcgNi4zNyw4IDYsOEEzLDMgMCAwLDAgMywxMUMzLDExLjg1IDMuMzUsMTIuNjEgMy45MSwxMy4xNkM0LjI3LDEzLjU1IDQuMjYsMTQuMTYgMy44OCwxNC41NEMzLjUsMTQuOTMgMi44NSwxNC45MyAyLjQ3LDE0LjU0QzEuNTYsMTMuNjMgMSwxMi4zOCAxLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJTdW5ueSA9IFwiTTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlNMTIsMkwxNC4zOSw1LjQyQzEzLjY1LDUuMTUgMTIuODQsNSAxMiw1QzExLjE2LDUgMTAuMzUsNS4xNSA5LjYxLDUuNDJMMTIsMk0zLjM0LDdMNy41LDYuNjVDNi45LDcuMTYgNi4zNiw3Ljc4IDUuOTQsOC41QzUuNSw5LjI0IDUuMjUsMTAgNS4xMSwxMC43OUwzLjM0LDdNMy4zNiwxN0w1LjEyLDEzLjIzQzUuMjYsMTQgNS41MywxNC43OCA1Ljk1LDE1LjVDNi4zNywxNi4yNCA2LjkxLDE2Ljg2IDcuNSwxNy4zN0wzLjM2LDE3TTIwLjY1LDdMMTguODgsMTAuNzlDMTguNzQsMTAgMTguNDcsOS4yMyAxOC4wNSw4LjVDMTcuNjMsNy43OCAxNy4xLDcuMTUgMTYuNSw2LjY0TDIwLjY1LDdNMjAuNjQsMTdMMTYuNSwxNy4zNkMxNy4wOSwxNi44NSAxNy42MiwxNi4yMiAxOC4wNCwxNS41QzE4LjQ2LDE0Ljc3IDE4LjczLDE0IDE4Ljg3LDEzLjIxTDIwLjY0LDE3TTEyLDIyTDkuNTksMTguNTZDMTAuMzMsMTguODMgMTEuMTQsMTkgMTIsMTlDMTIuODIsMTkgMTMuNjMsMTguODMgMTQuMzcsMTguNTZMMTIsMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclN1bm55QWxlcnQgPSBcIk0xMiw3QTUsNSAwIDAsMCA3LDEyQTUsNSAwIDAsMCAxMiwxN0E1LDUgMCAwLDAgMTcsMTJBNSw1IDAgMCwwIDEyLDdNMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlBMywzIDAgMCwxIDE1LDEyQTMsMyAwIDAsMSAxMiwxNU0xMiwyTDE0LjM5LDUuNDJDMTMuNjUsNS4xNSAxMi44NCw1IDEyLDVDMTEuMTYsNSAxMC4zNSw1LjE1IDkuNjEsNS40MkwxMiwyTTMuMzQsN0w3LjUsNi42NUM2LjksNy4xNiA2LjM2LDcuNzggNS45NCw4LjVDNS41LDkuMjQgNS4yNSwxMCA1LjExLDEwLjc5TDMuMzQsN00zLjM2LDE3TDUuMTIsMTMuMjNDNS4yNiwxNCA1LjUzLDE0Ljc4IDUuOTUsMTUuNUM2LjM3LDE2LjI0IDYuOTEsMTYuODYgNy41LDE3LjM3TDMuMzYsMTdNMTIsMjJMOS41OSwxOC41NkMxMC4zMywxOC44MyAxMS4xNCwxOSAxMiwxOUMxMi44MiwxOSAxMy42MywxOC44MyAxNC4zNywxOC41Nk0xOSwxM1Y3SDIxVjEzSDE5TTE5LDE3VjE1SDIxVjE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclN1bm55T2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w0Ljk3IDYuODZMMy4zNCA3TDUuMTEgMTAuNzlDNS4yNSAxMCA1LjUgOS4yNCA1Ljk0IDguNUM2IDguMzYgNi4xMyA4LjI0IDYuMjIgOC4xMUw3LjY2IDkuNTVDNy4yNSAxMC4yNyA3IDExLjExIDcgMTJDNyAxNC43NiA5LjI0IDE3IDEyIDE3QzEyLjkgMTcgMTMuNzMgMTYuNzUgMTQuNDUgMTYuMzRMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMTVDMTAuMzQgMTUgOSAxMy42NiA5IDEyQzkgMTEuNjcgOS4wNyAxMS4zNiA5LjE3IDExLjA2TDEyLjk0IDE0LjgzQzEyLjY0IDE0LjkzIDEyLjMzIDE1IDEyIDE1TTE4LjA1IDguNUMxNy42MyA3Ljc4IDE3LjEgNy4xNSAxNi41IDYuNjRMMjAuNjUgN0wxOC44OCAxMC43OUMxOC43NCAxMCAxOC40NyA5LjIzIDE4LjA1IDguNU0xMiA3QzE0Ljc2IDcgMTcgOS4yNCAxNyAxMkMxNyAxMi41NCAxNi44OSAxMy4wNSAxNi43NCAxMy41NEwxNSAxMS43OEMxNC44NyAxMC4zIDEzLjcgOS4xMyAxMi4yMiA5TDEwLjQ3IDcuMjdDMTAuOTUgNy4xMSAxMS40NiA3IDEyIDdNMTIgNUMxMS4xNiA1IDEwLjM1IDUuMTUgOS42MSA1LjQyTDEyIDJMMTQuMzkgNS40MkMxMy42NSA1LjE1IDEyLjg0IDUgMTIgNU0xOC44NyAxMy4yMUwyMC42NCAxN0wyMC4yNCAxNy4wNEwxOC4yNSAxNS4wNUMxOC41NCAxNC40NSAxOC43NiAxMy44NCAxOC44NyAxMy4yMU0xMiAxOUMxMi44MiAxOSAxMy42MyAxOC44MyAxNC4zNyAxOC41NkwxMiAyMkw5LjU5IDE4LjU2QzEwLjMzIDE4LjgzIDExLjE0IDE5IDEyIDE5TTUuOTUgMTUuNUM2LjM3IDE2LjI0IDYuOTEgMTYuODYgNy41IDE3LjM3TDMuMzYgMTdMNS4xMiAxMy4yM0M1LjI2IDE0IDUuNTMgMTQuNzggNS45NSAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJTdW5zZXQgPSBcIk0zLDEySDdBNSw1IDAgMCwxIDEyLDdBNSw1IDAgMCwxIDE3LDEySDIxQTEsMSAwIDAsMSAyMiwxM0ExLDEgMCAwLDEgMjEsMTRIM0ExLDEgMCAwLDEgMiwxM0ExLDEgMCAwLDEgMywxMk01LDE2SDE5QTEsMSAwIDAsMSAyMCwxN0ExLDEgMCAwLDEgMTksMThINUExLDEgMCAwLDEgNCwxN0ExLDEgMCAwLDEgNSwxNk0xNywyMEExLDEgMCAwLDEgMTgsMjFBMSwxIDAgMCwxIDE3LDIySDdBMSwxIDAgMCwxIDYsMjFBMSwxIDAgMCwxIDcsMjBIMTdNMTUsMTJBMywzIDAgMCwwIDEyLDlBMywzIDAgMCwwIDksMTJIMTVNMTIsMkwxNC4zOSw1LjQyQzEzLjY1LDUuMTUgMTIuODQsNSAxMiw1QzExLjE2LDUgMTAuMzUsNS4xNSA5LjYxLDUuNDJMMTIsMk0zLjM0LDdMNy41LDYuNjVDNi45LDcuMTYgNi4zNiw3Ljc4IDUuOTQsOC41QzUuNSw5LjI0IDUuMjUsMTAgNS4xMSwxMC43OUwzLjM0LDdNMjAuNjUsN0wxOC44OCwxMC43OUMxOC43NCwxMCAxOC40Nyw5LjIzIDE4LjA1LDguNUMxNy42Myw3Ljc4IDE3LjEsNy4xNSAxNi41LDYuNjRMMjAuNjUsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyU3Vuc2V0RG93biA9IFwiTTMsMTJIN0E1LDUgMCAwLDEgMTIsN0E1LDUgMCAwLDEgMTcsMTJIMjFBMSwxIDAgMCwxIDIyLDEzQTEsMSAwIDAsMSAyMSwxNEgzQTEsMSAwIDAsMSAyLDEzQTEsMSAwIDAsMSAzLDEyTTE1LDEyQTMsMyAwIDAsMCAxMiw5QTMsMyAwIDAsMCA5LDEySDE1TTEyLDJMMTQuMzksNS40MkMxMy42NSw1LjE1IDEyLjg0LDUgMTIsNUMxMS4xNiw1IDEwLjM1LDUuMTUgOS42MSw1LjQyTDEyLDJNMy4zNCw3TDcuNSw2LjY1QzYuOSw3LjE2IDYuMzYsNy43OCA1Ljk0LDguNUM1LjUsOS4yNCA1LjI1LDEwIDUuMTEsMTAuNzlMMy4zNCw3TTIwLjY1LDdMMTguODgsMTAuNzlDMTguNzQsMTAgMTguNDcsOS4yMyAxOC4wNSw4LjVDMTcuNjMsNy43OCAxNy4xLDcuMTUgMTYuNSw2LjY0TDIwLjY1LDdNMTIuNzEsMjAuNzFMMTUuODIsMTcuNkMxNi4yMSwxNy4yMSAxNi4yMSwxNi41NyAxNS44MiwxNi4xOEMxNS40MywxNS43OSAxNC44LDE1Ljc5IDE0LjQxLDE2LjE4TDEyLDE4LjU5TDkuNTksMTYuMThDOS4yLDE1Ljc5IDguNTcsMTUuNzkgOC4xOCwxNi4xOEM3Ljc5LDE2LjU3IDcuNzksMTcuMjEgOC4xOCwxNy42TDExLjI5LDIwLjcxQzExLjUsMjAuOSAxMS43NCwyMSAxMiwyMUMxMi4yNiwyMSAxMi41LDIwLjkgMTIuNzEsMjAuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclN1bnNldFVwID0gXCJNMywxMkg3QTUsNSAwIDAsMSAxMiw3QTUsNSAwIDAsMSAxNywxMkgyMUExLDEgMCAwLDEgMjIsMTNBMSwxIDAgMCwxIDIxLDE0SDNBMSwxIDAgMCwxIDIsMTNBMSwxIDAgMCwxIDMsMTJNMTUsMTJBMywzIDAgMCwwIDEyLDlBMywzIDAgMCwwIDksMTJIMTVNMTIsMkwxNC4zOSw1LjQyQzEzLjY1LDUuMTUgMTIuODQsNSAxMiw1QzExLjE2LDUgMTAuMzUsNS4xNSA5LjYxLDUuNDJMMTIsMk0zLjM0LDdMNy41LDYuNjVDNi45LDcuMTYgNi4zNiw3Ljc4IDUuOTQsOC41QzUuNSw5LjI0IDUuMjUsMTAgNS4xMSwxMC43OUwzLjM0LDdNMjAuNjUsN0wxOC44OCwxMC43OUMxOC43NCwxMCAxOC40Nyw5LjIzIDE4LjA1LDguNUMxNy42Myw3Ljc4IDE3LjEsNy4xNSAxNi41LDYuNjRMMjAuNjUsN00xMi43MSwxNi4zTDE1LjgyLDE5LjQxQzE2LjIxLDE5LjggMTYuMjEsMjAuNDMgMTUuODIsMjAuODJDMTUuNDMsMjEuMjEgMTQuOCwyMS4yMSAxNC40MSwyMC44MkwxMiwxOC40MUw5LjU5LDIwLjgyQzkuMiwyMS4yMSA4LjU3LDIxLjIxIDguMTgsMjAuODJDNy43OSwyMC40MyA3Ljc5LDE5LjggOC4xOCwxOS40MUwxMS4yOSwxNi4zQzExLjUsMTYuMSAxMS43NCwxNiAxMiwxNkMxMi4yNiwxNiAxMi41LDE2LjEgMTIuNzEsMTYuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyVG9ybmFkbyA9IFwiTTIxLDVIM0ExLDEgMCAwLDEgMiw0QTEsMSAwIDAsMSAzLDNIMjFBMSwxIDAgMCwxIDIyLDRBMSwxIDAgMCwxIDIxLDVNMjAsOEExLDEgMCAwLDAgMTksN0g1QTEsMSAwIDAsMCA0LDhBMSwxIDAgMCwwIDUsOUgxOUExLDEgMCAwLDAgMjAsOE0yMSwxMkExLDEgMCAwLDAgMjAsMTFIMTBBMSwxIDAgMCwwIDksMTJBMSwxIDAgMCwwIDEwLDEzSDIwQTEsMSAwIDAsMCAyMSwxMk0xNiwxNkExLDEgMCAwLDAgMTUsMTVIOUExLDEgMCAwLDAgOCwxNkExLDEgMCAwLDAgOSwxN0gxNUExLDEgMCAwLDAgMTYsMTZNMTMsMjBBMSwxIDAgMCwwIDEyLDE5SDEwQTEsMSAwIDAsMCA5LDIwQTEsMSAwIDAsMCAxMCwyMUgxMkExLDEgMCAwLDAgMTMsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlcldpbmR5ID0gXCJNNCwxMEExLDEgMCAwLDEgMyw5QTEsMSAwIDAsMSA0LDhIMTJBMiwyIDAgMCwwIDE0LDZBMiwyIDAgMCwwIDEyLDRDMTEuNDUsNCAxMC45NSw0LjIyIDEwLjU5LDQuNTlDMTAuMiw1IDkuNTYsNSA5LjE3LDQuNTlDOC43OCw0LjIgOC43OCwzLjU2IDkuMTcsMy4xN0M5LjksMi40NSAxMC45LDIgMTIsMkE0LDQgMCAwLDEgMTYsNkE0LDQgMCAwLDEgMTIsMTBINE0xOSwxMkExLDEgMCAwLDAgMjAsMTFBMSwxIDAgMCwwIDE5LDEwQzE4LjcyLDEwIDE4LjQ3LDEwLjExIDE4LjI5LDEwLjI5QzE3LjksMTAuNjggMTcuMjcsMTAuNjggMTYuODgsMTAuMjlDMTYuNSw5LjkgMTYuNSw5LjI3IDE2Ljg4LDguODhDMTcuNDIsOC4zNCAxOC4xNyw4IDE5LDhBMywzIDAgMCwxIDIyLDExQTMsMyAwIDAsMSAxOSwxNEg1QTEsMSAwIDAsMSA0LDEzQTEsMSAwIDAsMSA1LDEySDE5TTE4LDE4SDRBMSwxIDAgMCwxIDMsMTdBMSwxIDAgMCwxIDQsMTZIMThBMywzIDAgMCwxIDIxLDE5QTMsMyAwIDAsMSAxOCwyMkMxNy4xNywyMiAxNi40MiwyMS42NiAxNS44OCwyMS4xMkMxNS41LDIwLjczIDE1LjUsMjAuMSAxNS44OCwxOS43MUMxNi4yNywxOS4zMiAxNi45LDE5LjMyIDE3LjI5LDE5LjcxQzE3LjQ3LDE5Ljg5IDE3LjcyLDIwIDE4LDIwQTEsMSAwIDAsMCAxOSwxOUExLDEgMCAwLDAgMTgsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlcldpbmR5VmFyaWFudCA9IFwiTTYsNkw2LjY5LDYuMDZDNy4zMiwzLjcyIDkuNDYsMiAxMiwyQTUuNSw1LjUgMCAwLDEgMTcuNSw3LjVMMTcuNDIsOC40NUMxNy44OCw4LjE2IDE4LjQyLDggMTksOEEzLDMgMCAwLDEgMjIsMTFBMywzIDAgMCwxIDE5LDE0SDZBNCw0IDAgMCwxIDIsMTBBNCw0IDAgMCwxIDYsNk02LDhBMiwyIDAgMCwwIDQsMTBBMiwyIDAgMCwwIDYsMTJIMTlBMSwxIDAgMCwwIDIwLDExQTEsMSAwIDAsMCAxOSwxMEgxNS41VjcuNUEzLjUsMy41IDAgMCwwIDEyLDRBMy41LDMuNSAwIDAsMCA4LjUsNy41VjhINk0xOCwxOEg0QTEsMSAwIDAsMSAzLDE3QTEsMSAwIDAsMSA0LDE2SDE4QTMsMyAwIDAsMSAyMSwxOUEzLDMgMCAwLDEgMTgsMjJDMTcuMTcsMjIgMTYuNDIsMjEuNjYgMTUuODgsMjEuMTJDMTUuNSwyMC43MyAxNS41LDIwLjEgMTUuODgsMTkuNzFDMTYuMjcsMTkuMzIgMTYuOSwxOS4zMiAxNy4yOSwxOS43MUMxNy40NywxOS44OSAxNy43MiwyMCAxOCwyMEExLDEgMCAwLDAgMTksMTlBMSwxIDAgMCwwIDE4LDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYiA9IFwiTTE2LjM2LDE0QzE2LjQ0LDEzLjM0IDE2LjUsMTIuNjggMTYuNSwxMkMxNi41LDExLjMyIDE2LjQ0LDEwLjY2IDE2LjM2LDEwSDE5Ljc0QzE5LjksMTAuNjQgMjAsMTEuMzEgMjAsMTJDMjAsMTIuNjkgMTkuOSwxMy4zNiAxOS43NCwxNE0xNC41OSwxOS41NkMxNS4xOSwxOC40NSAxNS42NSwxNy4yNSAxNS45NywxNkgxOC45MkMxNy45NiwxNy42NSAxNi40MywxOC45MyAxNC41OSwxOS41Nk0xNC4zNCwxNEg5LjY2QzkuNTYsMTMuMzQgOS41LDEyLjY4IDkuNSwxMkM5LjUsMTEuMzIgOS41NiwxMC42NSA5LjY2LDEwSDE0LjM0QzE0LjQzLDEwLjY1IDE0LjUsMTEuMzIgMTQuNSwxMkMxNC41LDEyLjY4IDE0LjQzLDEzLjM0IDE0LjM0LDE0TTEyLDE5Ljk2QzExLjE3LDE4Ljc2IDEwLjUsMTcuNDMgMTAuMDksMTZIMTMuOTFDMTMuNSwxNy40MyAxMi44MywxOC43NiAxMiwxOS45Nk04LDhINS4wOEM2LjAzLDYuMzQgNy41Nyw1LjA2IDkuNCw0LjQ0QzguOCw1LjU1IDguMzUsNi43NSA4LDhNNS4wOCwxNkg4QzguMzUsMTcuMjUgOC44LDE4LjQ1IDkuNCwxOS41NkM3LjU3LDE4LjkzIDYuMDMsMTcuNjUgNS4wOCwxNk00LjI2LDE0QzQuMSwxMy4zNiA0LDEyLjY5IDQsMTJDNCwxMS4zMSA0LjEsMTAuNjQgNC4yNiwxMEg3LjY0QzcuNTYsMTAuNjYgNy41LDExLjMyIDcuNSwxMkM3LjUsMTIuNjggNy41NiwxMy4zNCA3LjY0LDE0TTEyLDQuMDNDMTIuODMsNS4yMyAxMy41LDYuNTcgMTMuOTEsOEgxMC4wOUMxMC41LDYuNTcgMTEuMTcsNS4yMyAxMiw0LjAzTTE4LjkyLDhIMTUuOTdDMTUuNjUsNi43NSAxNS4xOSw1LjU1IDE0LjU5LDQuNDRDMTYuNDMsNS4wNyAxNy45Niw2LjM0IDE4LjkyLDhNMTIsMkM2LjQ3LDIgMiw2LjUgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYkJveCA9IFwiTTguOTUgMTMuNEg2LjU4QTUuNSA1LjUgMCAwIDEgNi41OCAxMC42SDguOTVBMTEuNTYgMTEuNTYgMCAwIDAgOC44NSAxMkExMS41NiAxMS41NiAwIDAgMCA4Ljk1IDEzLjRNNy4xNiA5LjJIOS4yQTEyLjA2IDEyLjA2IDAgMCAxIDEwLjE4IDYuNzFBNS41NSA1LjU1IDAgMCAwIDcuMTYgOS4yTTE2Ljg0IDkuMkE1LjU5IDUuNTkgMCAwIDAgMTMuODEgNi43MUExMC45NSAxMC45NSAwIDAgMSAxNC43OCA5LjJNMTIgMTcuNTdBOS41IDkuNSAwIDAgMCAxMy4zNCAxNC44SDEwLjY2QTkuNSA5LjUgMCAwIDAgMTIgMTcuNTdNMTIgNi40MkE5LjUzIDkuNTMgMCAwIDAgMTAuNjYgOS4ySDEzLjM0QTkuNTMgOS41MyAwIDAgMCAxMiA2LjQyTTcuMTYgMTQuOEE1LjYxIDUuNjEgMCAwIDAgMTAuMTggMTcuMjlBMTIuMDYgMTIuMDYgMCAwIDEgOS4yIDE0LjhNMjEgNVYxOUEyIDIgMCAwIDEgMTkgMjFINUEyIDIgMCAwIDEgMyAxOVY1QTIgMiAwIDAgMSA1IDNIMTlBMiAyIDAgMCAxIDIxIDVNMTkgMTJBNyA3IDAgMSAwIDEyIDE5QTcgNyAwIDAgMCAxOSAxMk0xNS4xNSAxMkExMS41NiAxMS41NiAwIDAgMSAxNS4wNSAxMy40SDE3LjQyQTUuNSA1LjUgMCAwIDAgMTcuNDIgMTAuNkgxNS4wNUExMS41NiAxMS41NiAwIDAgMSAxNS4xNSAxMk0xMy44MSAxNy4yOUE1LjYyIDUuNjIgMCAwIDAgMTYuODQgMTQuOEgxNC43OEExMC45NSAxMC45NSAwIDAgMSAxMy44MSAxNy4yOU0xMC4zNiAxMC42QTguODEgOC44MSAwIDAgMCAxMC4zNiAxMy40SDEzLjY0QTEwLjMgMTAuMyAwIDAgMCAxMy43NSAxMkExMC4yMSAxMC4yMSAwIDAgMCAxMy42NCAxMC42WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYkNsb2NrID0gXCJNMTUgMTIuNVYxNi41TDE4IDE4LjVMMTguNzUgMTcuMjVMMTYuNSAxNS43NVYxMi41SDE1TTIyIDEyLjM5QzIyIDEyLjI2IDIyIDEyLjEzIDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMkM2LjQ3IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzEyLjEzIDIyIDEyLjI0IDIyIDEyLjM3IDIxLjk3QzEzLjQzIDIyLjYyIDE0LjY3IDIzIDE2IDIzQzE5Ljg2IDIzIDIzIDE5Ljg2IDIzIDE2QzIzIDE0LjY4IDIyLjYyIDEzLjQ0IDIyIDEyLjM5TTE5Ljc2IDEwLjExQzE5LjcgMTAuMDcgMTkuNjUgMTAuMDQgMTkuNTkgMTBIMTkuNzRDMTkuNzUgMTAuMDMgMTkuNzUgMTAuMDcgMTkuNzYgMTAuMTFNMTguOTIgOEgxNS45N0MxNS42NSA2Ljc1IDE1LjE5IDUuNTUgMTQuNTkgNC40NEMxNi40MyA1LjA3IDE3Ljk2IDYuMzQgMTguOTIgOE0xMiA0LjAzQzEyLjgzIDUuMjMgMTMuNSA2LjU3IDEzLjkxIDhIMTAuMDlDMTAuNSA2LjU3IDExLjE3IDUuMjMgMTIgNC4wM005LjY2IDEwSDEyLjQxQzExLjE2IDEwLjc1IDEwLjE1IDExLjg4IDkuNTcgMTMuMjRDOS41MyAxMi44MyA5LjUgMTIuNDIgOS41IDEyQzkuNSAxMS4zMiA5LjU2IDEwLjY1IDkuNjYgMTBNOS40IDQuNDRDOC44IDUuNTUgOC4zNSA2Ljc1IDggOEg1LjA4QzYuMDMgNi4zNCA3LjU3IDUuMDYgOS40IDQuNDRNNC4yNiAxNEM0LjEgMTMuMzYgNCAxMi42OSA0IDEyUzQuMSAxMC42NCA0LjI2IDEwSDcuNjRDNy41NiAxMC42NiA3LjUgMTEuMzIgNy41IDEyUzcuNTYgMTMuMzQgNy42NCAxNEg0LjI2TTUuMDggMTZIOEM4LjM1IDE3LjI1IDguOCAxOC40NSA5LjQgMTkuNTZDNy41NyAxOC45MyA2LjAzIDE3LjY1IDUuMDggMTZNMTYgMjFDMTMuMjQgMjEgMTEgMTguNzYgMTEgMTZTMTMuMjQgMTEgMTYgMTEgMjEgMTMuMjQgMjEgMTYgMTguNzYgMjEgMTYgMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2ViY2FtID0gXCJNMTIsMkE3LDcgMCAwLDEgMTksOUE3LDcgMCAwLDEgMTIsMTZBNyw3IDAgMCwxIDUsOUE3LDcgMCAwLDEgMTIsMk0xMiw0QTUsNSAwIDAsMCA3LDlBNSw1IDAgMCwwIDEyLDE0QTUsNSAwIDAsMCAxNyw5QTUsNSAwIDAsMCAxMiw0TTEyLDZBMywzIDAgMCwxIDE1LDlBMywzIDAgMCwxIDEyLDEyQTMsMyAwIDAsMSA5LDlBMywzIDAgMCwxIDEyLDZNNiwyMkEyLDIgMCAwLDEgNCwyMEM0LDE5LjYyIDQuMSwxOS4yNyA0LjI5LDE4Ljk3TDYuMTEsMTUuODFDNy42OSwxNy4xNyA5Ljc1LDE4IDEyLDE4QzE0LjI1LDE4IDE2LjMxLDE3LjE3IDE3Ljg5LDE1LjgxTDE5LjcxLDE4Ljk3QzE5LjksMTkuMjcgMjAsMTkuNjIgMjAsMjBBMiwyIDAgMCwxIDE4LDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2ViY2FtT2ZmID0gXCJNMTIgNkMxMy42NiA2IDE1IDcuMzQgMTUgOUMxNSA5Ljc4IDE0LjcgMTAuNSAxNC4yMSAxMUwxMCA2Ljc5QzEwLjUgNi4zIDExLjIyIDYgMTIgNk0xMiA0QzE0Ljc2IDQgMTcgNi4yNCAxNyA5QzE3IDEwLjMzIDE2LjQ3IDExLjUzIDE1LjYyIDEyLjQyTDE3LjA0IDEzLjg0QzE4LjI1IDEyLjU5IDE5IDEwLjg4IDE5IDlDMTkgNS4xMyAxNS44NyAyIDEyIDJDMTAuMTIgMiA4LjQxIDIuNzUgNy4xNiAzLjk2TDguNTggNS4zOEM5LjQ3IDQuNTMgMTAuNjcgNCAxMiA0TTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE5LjQ2IDIxLjM1QzE5LjEgMjEuNzUgMTguNTggMjIgMTggMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMEM0IDE5LjYyIDQuMSAxOS4yNyA0LjI5IDE4Ljk3TDYuMTEgMTUuODFDNy42OSAxNy4xNyA5Ljc1IDE4IDEyIDE4QzEzLjIxIDE4IDE0LjM3IDE3Ljc1IDE1LjQzIDE3LjMyTDEzLjg1IDE1Ljc0QzEzLjI2IDE1LjkxIDEyLjY0IDE2IDEyIDE2QzguMTMgMTYgNSAxMi44NyA1IDlDNSA4LjM2IDUuMDkgNy43NCA1LjI2IDcuMTVMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0xMi4xIDE0TDcgOC45QzcgOC45MyA3IDguOTcgNyA5QzcgMTEuNzYgOS4yNCAxNCAxMiAxNEMxMi4wMyAxNCAxMi4wNyAxNCAxMi4xIDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYmhvb2sgPSBcIk0xMC40NiwxOUM5LDIxLjA3IDYuMTUsMjEuNTkgNC4wOSwyMC4xNUMyLjA0LDE4LjcxIDEuNTYsMTUuODQgMywxMy43NUMzLjg3LDEyLjUgNS4yMSwxMS44MyA2LjU4LDExLjc3TDYuNjMsMTMuMkM1LjcyLDEzLjI3IDQuODQsMTMuNzQgNC4yNywxNC41NkMzLjI3LDE2IDMuNTgsMTcuOTQgNC45NSwxOC45MUM2LjMzLDE5Ljg3IDguMjYsMTkuNSA5LjI2LDE4LjA3QzkuNTcsMTcuNjIgOS43NSwxNy4xMyA5LjgyLDE2LjYzVjE1LjYyTDE1LjQsMTUuNThMMTUuNDcsMTUuNDdDMTYsMTQuNTUgMTcuMTUsMTQuMjMgMTguMDUsMTQuNzVDMTguOTUsMTUuMjcgMTkuMjYsMTYuNDMgMTguNzMsMTcuMzVDMTguMiwxOC4yNiAxNy4wNCwxOC41OCAxNi4xNCwxOC4wNkMxNS43MywxNy44MyAxNS40NCwxNy40NiAxNS4zMSwxNy4wNEwxMS4yNCwxNy4wNkMxMS4xMywxNy43MyAxMC44NywxOC4zOCAxMC40NiwxOU0xNy43NCwxMS44NkMyMC4yNywxMi4xNyAyMi4wNywxNC40NCAyMS43NiwxNi45M0MyMS40NSwxOS40MyAxOS4xNSwyMS4yIDE2LjYyLDIwLjg5QzE1LjEzLDIwLjcxIDEzLjksMTkuODYgMTMuMTksMTguNjhMMTQuNDMsMTcuOTZDMTQuOTIsMTguNzMgMTUuNzUsMTkuMjggMTYuNzUsMTkuNDFDMTguNSwxOS42MiAyMC4wNSwxOC40MyAyMC4yNiwxNi43NkMyMC40NywxNS4wOSAxOS4yMywxMy41NiAxNy41LDEzLjM1QzE2Ljk2LDEzLjI5IDE2LjQ0LDEzLjM2IDE1Ljk3LDEzLjUzTDE1LjEyLDEzLjk3TDEyLjU0LDkuMkgxMi4zMkMxMS4yNiw5LjE2IDEwLjQ0LDguMjkgMTAuNDcsNy4yNUMxMC41LDYuMjEgMTEuNCw1LjQgMTIuNDUsNS40NEMxMy41LDUuNSAxNC4zMyw2LjM1IDE0LjMsNy4zOUMxNC4yOCw3LjgzIDE0LjExLDguMjMgMTMuODQsOC41NEwxNS43NCwxMi4wNUMxNi4zNiwxMS44NSAxNy4wNCwxMS43OCAxNy43NCwxMS44Nk04LjI1LDkuMTRDNy4yNSw2Ljc5IDguMzEsNC4xIDEwLjYyLDMuMTJDMTIuOTQsMi4xNCAxNS42MiwzLjI1IDE2LjYyLDUuNkMxNy4yMSw2Ljk3IDE3LjA5LDguNDcgMTYuNDIsOS42N0wxNS4xOCw4Ljk1QzE1LjYsOC4xNCAxNS42Nyw3LjE1IDE1LjI3LDYuMjJDMTQuNTksNC42MiAxMi43OCwzLjg1IDExLjIzLDQuNUM5LjY3LDUuMTYgOC45Nyw3IDkuNjUsOC42QzkuOTMsOS4yNiAxMC40LDkuNzcgMTAuOTcsMTAuMTFMMTEuMzYsMTAuMzJMOC4yOSwxNS4zMUM4LjMyLDE1LjM2IDguMzYsMTUuNDIgOC4zOSwxNS41QzguODgsMTYuNDEgOC41NCwxNy41NiA3LjYyLDE4LjA1QzYuNzEsMTguNTQgNS41NiwxOC4xOCA1LjA2LDE3LjI0QzQuNTcsMTYuMzEgNC45MSwxNS4xNiA1LjgzLDE0LjY3QzYuMjIsMTQuNDYgNi42NSwxNC40MSA3LjA2LDE0LjVMOS4zNywxMC43M0M4LjksMTAuMyA4LjUsOS43NiA4LjI1LDkuMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VicGFjayA9IFwiTTIwLjQ1IDE3LjM5TDEyLjM2IDIxLjk3VjE4LjRMMTcuNCAxNS42M0wyMC40NSAxNy4zOU0yMSAxNi44OVY3LjMxTDE4LjA0IDlWMTUuMThMMjEgMTYuODlNMy41NSAxNy4zOUwxMS42NCAyMS45NlYxOC40TDYuNiAxNS42M0wzLjU1IDE3LjM5TTMgMTYuODlWNy4zMUw1Ljk2IDlWMTUuMThMMyAxNi44OU0zLjM1IDYuNjlMMTEuNjQgMlY1LjQ1TDYuMzMgOC4zN0w2LjI4IDguMzlMMy4zNSA2LjY5TTIwLjY1IDYuNjlMMTIuMzYgMlY1LjQ1TDE3LjY3IDguMzhMMTcuNzEgOC40TDIwLjY1IDYuNjlNMTEuNjQgMTcuNTlMNi42NyAxNC44NVY5LjQ0TDExLjY0IDEyLjMxVjE3LjU5TTEyLjM2IDE3LjU5TDE3LjMzIDE0Ljg2VjkuNDRMMTIuMzYgMTIuMzFWMTcuNTlNNyA4LjgxTDEyIDYuMDZMMTcgOC44MUwxMiAxMS42OUw3IDguODFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VicnRjID0gXCJNMTIgMkMxNC40NCAyIDE2LjUgMy43NSAxNi45MSA2LjA3TDE3Ljc1IDZDMjAuNSA2IDIyLjc1IDguMjQgMjIuNzUgMTFDMjIuNzUgMTIuODkgMjEuNyAxNC41MyAyMC4xNiAxNS4zOEMyMC41NCAxNi4wOSAyMC43NSAxNi44OSAyMC43NSAxNy43NUMyMC43NSAyMC41IDE4LjUgMjIuNzUgMTUuNzUgMjIuNzVDMTQuMjYgMjIuNzUgMTIuOTIgMjIuMSAxMiAyMS4wNkMxMS4wOCAyMi4xIDkuNzQgMjIuNzUgOC4yNSAyMi43NUM1LjUgMjIuNzUgMy4yNSAyMC41IDMuMjUgMTcuNzVDMy4yNSAxNi44OSAzLjQ3IDE2LjA5IDMuODQgMTUuMzhDMi4zIDE0LjUzIDEuMjUgMTIuODkgMS4yNSAxMUMxLjI1IDguMjQgMy41IDYgNi4yNSA2TDcuMDkgNi4wN0M3LjUgMy43NSA5LjU2IDIgMTIgMk02Ljc1IDIwLjI1TDEzLjY2IDE3SDE3QzE3LjU1IDE3IDE4IDE2LjU1IDE4IDE2VjlDMTggOC40NSAxNy41NSA4IDE3IDhIN0M2LjQ1IDggNiA4LjQ1IDYgOVYxNkM2IDE2LjU1IDYuNDUgMTcgNyAxN0g3Ljc3TDYuNzUgMjAuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VjaGF0ID0gXCJNOS41LDRDNS4zNiw0IDIsNi42OSAyLDEwQzIsMTEuODkgMy4wOCwxMy41NiA0Ljc4LDE0LjY2TDQsMTdMNi41LDE1LjVDNy4zOSwxNS44MSA4LjM3LDE2IDkuNDEsMTZDOS4xNSwxNS4zNyA5LDE0LjcgOSwxNEM5LDEwLjY5IDEyLjEzLDggMTYsOEMxNi4xOSw4IDE2LjM4LDggMTYuNTYsOC4wM0MxNS41NCw1LjY5IDEyLjc4LDQgOS41LDRNNi41LDYuNUExLDEgMCAwLDEgNy41LDcuNUExLDEgMCAwLDEgNi41LDguNUExLDEgMCAwLDEgNS41LDcuNUExLDEgMCAwLDEgNi41LDYuNU0xMS41LDYuNUExLDEgMCAwLDEgMTIuNSw3LjVBMSwxIDAgMCwxIDExLjUsOC41QTEsMSAwIDAsMSAxMC41LDcuNUExLDEgMCAwLDEgMTEuNSw2LjVNMTYsOUMxMi42OSw5IDEwLDExLjI0IDEwLDE0QzEwLDE2Ljc2IDEyLjY5LDE5IDE2LDE5QzE2LjY3LDE5IDE3LjMxLDE4LjkyIDE3LjkxLDE4Ljc1TDIwLDIwTDE5LjM4LDE4LjEzQzIwLjk1LDE3LjIyIDIyLDE1LjcxIDIyLDE0QzIyLDExLjI0IDE5LjMxLDkgMTYsOU0xNCwxMS41QTEsMSAwIDAsMSAxNSwxMi41QTEsMSAwIDAsMSAxNCwxMy41QTEsMSAwIDAsMSAxMywxMi41QTEsMSAwIDAsMSAxNCwxMS41TTE4LDExLjVBMSwxIDAgMCwxIDE5LDEyLjVBMSwxIDAgMCwxIDE4LDEzLjVBMSwxIDAgMCwxIDE3LDEyLjVBMSwxIDAgMCwxIDE4LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VpZ2h0ID0gXCJNMTIsM0E0LDQgMCAwLDEgMTYsN0MxNiw3LjczIDE1LjgxLDguNDEgMTUuNDYsOUgxOEMxOC45NSw5IDE5Ljc1LDkuNjcgMTkuOTUsMTAuNTZDMjEuOTYsMTguNTcgMjIsMTguNzggMjIsMTlBMiwyIDAgMCwxIDIwLDIxSDRBMiwyIDAgMCwxIDIsMTlDMiwxOC43OCAyLjA0LDE4LjU3IDQuMDUsMTAuNTZDNC4yNSw5LjY3IDUuMDUsOSA2LDlIOC41NEM4LjE5LDguNDEgOCw3LjczIDgsN0E0LDQgMCAwLDEgMTIsM00xMiw1QTIsMiAwIDAsMCAxMCw3QTIsMiAwIDAsMCAxMiw5QTIsMiAwIDAsMCAxNCw3QTIsMiAwIDAsMCAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlaWdodEdyYW0gPSBcIk0xOS45NSwxMC41NkMxOS43NSw5LjY3IDE4Ljk1LDkgMTgsOUgxNS40NkMxNS44MSw4LjQxIDE2LDcuNzMgMTYsN0E0LDQgMCAwLDAgMTIsM0E0LDQgMCAwLDAgOCw3QzgsNy43MyA4LjE5LDguNDEgOC41NCw5SDZDNS4wNSw5IDQuMjUsOS42NyA0LjA1LDEwLjU2QzIuMDQsMTguNTcgMiwxOC43OCAyLDE5QTIsMiAwIDAsMCA0LDIxSDIwQTIsMiAwIDAsMCAyMiwxOUMyMiwxOC43OCAyMS45NiwxOC41NyAxOS45NSwxMC41Nk0xMiw1QTIsMiAwIDAsMSAxNCw3QTIsMiAwIDAsMSAxMiw5QTIsMiAwIDAsMSAxMCw3QTIsMiAwIDAsMSAxMiw1TTE1LDEzSDExVjE3SDEzVjE0SDE1VjE5SDExQzkuODksMTkgOSwxOC4xMSA5LDE3VjEzQzksMTEuODkgOS44OSwxMSAxMSwxMUgxNVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWlnaHRLaWxvZ3JhbSA9IFwiTTEyLDNBNCw0IDAgMCwxIDE2LDdDMTYsNy43MyAxNS44MSw4LjQxIDE1LjQ2LDlIMThDMTguOTUsOSAxOS43NSw5LjY3IDE5Ljk1LDEwLjU2QzIxLjk2LDE4LjU3IDIyLDE4Ljc4IDIyLDE5QTIsMiAwIDAsMSAyMCwyMUg0QTIsMiAwIDAsMSAyLDE5QzIsMTguNzggMi4wNCwxOC41NyA0LjA1LDEwLjU2QzQuMjUsOS42NyA1LjA1LDkgNiw5SDguNTRDOC4xOSw4LjQxIDgsNy43MyA4LDdBNCw0IDAgMCwxIDEyLDNNMTIsNUEyLDIgMCAwLDAgMTAsN0EyLDIgMCAwLDAgMTIsOUEyLDIgMCAwLDAgMTQsN0EyLDIgMCAwLDAgMTIsNU02LDExVjE5SDhWMTYuNUw5LDE3LjVWMTlIMTFWMTdMOSwxNUwxMSwxM1YxMUg5VjEyLjVMOCwxMy41VjExSDZNMTUsMTFDMTMuODksMTEgMTMsMTEuODkgMTMsMTNWMTdDMTMsMTguMTEgMTMuODksMTkgMTUsMTlIMThWMTRIMTZWMTdIMTVWMTNIMThWMTFIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VpZ2h0TGlmdGVyID0gXCJNMTIgNUMxMC44OSA1IDEwIDUuODkgMTAgN1MxMC44OSA5IDEyIDkgMTQgOC4xMSAxNCA3IDEzLjExIDUgMTIgNU0yMiAxVjZIMjBWNEg0VjZIMlYxSDRWM0gyMFYxSDIyTTE1IDExLjI2VjIzSDEzVjE4SDExVjIzSDlWMTEuMjZDNi45MyAxMC4xNyA1LjUgOCA1LjUgNS41TDUuNSA1SDcuNUw3LjUgNS41QzcuNSA4IDkuNSAxMCAxMiAxMFMxNi41IDggMTYuNSA1LjVMMTYuNSA1SDE4LjVMMTguNSA1LjVDMTguNSA4IDE3LjA3IDEwLjE3IDE1IDExLjI2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlaWdodFBvdW5kID0gXCJNMTIsM0E0LDQgMCAwLDEgMTYsN0MxNiw3LjczIDE1LjgxLDguNDEgMTUuNDYsOUgxOEMxOC45NSw5IDE5Ljc1LDkuNjcgMTkuOTUsMTAuNTZDMjEuOTYsMTguNTcgMjIsMTguNzggMjIsMTlBMiwyIDAgMCwxIDIwLDIxSDRBMiwyIDAgMCwxIDIsMTlDMiwxOC43OCAyLjA0LDE4LjU3IDQuMDUsMTAuNTZDNC4yNSw5LjY3IDUuMDUsOSA2LDlIOC41NEM4LjE5LDguNDEgOCw3LjczIDgsN0E0LDQgMCAwLDEgMTIsM00xMiw1QTIsMiAwIDAsMCAxMCw3QTIsMiAwIDAsMCAxMiw5QTIsMiAwIDAsMCAxNCw3QTIsMiAwIDAsMCAxMiw1TTYsMTFWMTlIMTFWMTdIOFYxMUg2TTEzLDExVjE5SDE2QzE3LjExLDE5IDE4LDE4LjExIDE4LDE3VjE2LjVDMTgsMTUuOTMgMTcuNzUsMTUuMzggMTcuMzIsMTVDMTcuNzUsMTQuNjIgMTgsMTQuMDcgMTgsMTMuNVYxM0MxOCwxMS44OSAxNy4xMSwxMSAxNiwxMUgxM00xNSwxM0gxNlYxNEgxNVYxM00xNSwxNkgxNlYxN0gxNVYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlXaGF0c2FwcCA9IFwiTTEyLjA0IDJDNi41OCAyIDIuMTMgNi40NSAyLjEzIDExLjkxQzIuMTMgMTMuNjYgMi41OSAxNS4zNiAzLjQ1IDE2Ljg2TDIuMDUgMjJMNy4zIDIwLjYyQzguNzUgMjEuNDEgMTAuMzggMjEuODMgMTIuMDQgMjEuODNDMTcuNSAyMS44MyAyMS45NSAxNy4zOCAyMS45NSAxMS45MkMyMS45NSA5LjI3IDIwLjkyIDYuNzggMTkuMDUgNC45MUMxNy4xOCAzLjAzIDE0LjY5IDIgMTIuMDQgMk0xMi4wNSAzLjY3QzE0LjI1IDMuNjcgMTYuMzEgNC41MyAxNy44NyA2LjA5QzE5LjQyIDcuNjUgMjAuMjggOS43MiAyMC4yOCAxMS45MkMyMC4yOCAxNi40NiAxNi41OCAyMC4xNSAxMi4wNCAyMC4xNUMxMC41NiAyMC4xNSA5LjExIDE5Ljc2IDcuODUgMTlMNy41NSAxOC44M0w0LjQzIDE5LjY1TDUuMjYgMTYuNjFMNS4wNiAxNi4yOUM0LjI0IDE1IDMuOCAxMy40NyAzLjggMTEuOTFDMy44MSA3LjM3IDcuNSAzLjY3IDEyLjA1IDMuNjdNOC41MyA3LjMzQzguMzcgNy4zMyA4LjEgNy4zOSA3Ljg3IDcuNjRDNy42NSA3Ljg5IDcgOC41IDcgOS43MUM3IDEwLjkzIDcuODkgMTIuMSA4IDEyLjI3QzguMTQgMTIuNDQgOS43NiAxNC45NCAxMi4yNSAxNkMxMi44NCAxNi4yNyAxMy4zIDE2LjQyIDEzLjY2IDE2LjUzQzE0LjI1IDE2LjcyIDE0Ljc5IDE2LjY5IDE1LjIyIDE2LjYzQzE1LjcgMTYuNTYgMTYuNjggMTYuMDMgMTYuODkgMTUuNDVDMTcuMSAxNC44NyAxNy4xIDE0LjM4IDE3LjA0IDE0LjI3QzE2Ljk3IDE0LjE3IDE2LjgxIDE0LjExIDE2LjU2IDE0QzE2LjMxIDEzLjg2IDE1LjA5IDEzLjI2IDE0Ljg3IDEzLjE4QzE0LjY0IDEzLjEgMTQuNSAxMy4wNiAxNC4zMSAxMy4zQzE0LjE1IDEzLjU1IDEzLjY3IDE0LjExIDEzLjUzIDE0LjI3QzEzLjM4IDE0LjQ0IDEzLjI0IDE0LjQ2IDEzIDE0LjM0QzEyLjc0IDE0LjIxIDExLjk0IDEzLjk1IDExIDEzLjExQzEwLjI2IDEyLjQ1IDkuNzcgMTEuNjQgOS42MiAxMS4zOUM5LjUgMTEuMTUgOS42MSAxMSA5LjczIDEwLjg5QzkuODQgMTAuNzggMTAgMTAuNiAxMC4xIDEwLjQ1QzEwLjIzIDEwLjMxIDEwLjI3IDEwLjIgMTAuMzUgMTAuMDRDMTAuNDMgOS44NyAxMC4zOSA5LjczIDEwLjMzIDkuNjFDMTAuMjcgOS41IDkuNzcgOC4yNiA5LjU2IDcuNzdDOS4zNiA3LjI5IDkuMTYgNy4zNSA5IDcuMzRDOC44NiA3LjM0IDguNyA3LjMzIDguNTMgNy4zM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXaGVlbEJhcnJvdyA9IFwiTTE4IDE1LjVDMTguODMgMTUuNSAxOS41IDE2LjE3IDE5LjUgMTdTMTguODMgMTguNSAxOCAxOC41IDE2LjUgMTcuODMgMTYuNSAxNyAxNy4xNyAxNS41IDE4IDE1LjVNMTggMTRDMTYuMzQgMTQgMTUgMTUuMzQgMTUgMTdTMTYuMzQgMjAgMTggMjBDMTkuNjYgMjAgMjEgMTguNjYgMjEgMTdTMTkuNjYgMTQgMTggMTRNNyA4TDUgNUgyVjdINS4xM0w4IDExLjNWMjBIMTBMMTIuNTcgMTVIMTQuNTVDMTUuMjUgMTMuODEgMTYuNSAxMyAxOCAxM0MxOC44OCAxMyAxOS42OSAxMy4yOSAyMC4zNSAxMy43OEwyMiA4SDdNOS4zOSAxOUg5VjEyLjhMOS44NyAxNC4xMUMxMC4yMyAxNC42NCAxMC44MiAxNC45NiAxMS40NSAxNUw5LjM5IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdoZWVsY2hhaXJBY2Nlc3NpYmlsaXR5ID0gXCJNMTguNCwxMS4yTDE0LjMsMTEuNEwxNi42LDguOEMxNi44LDguNSAxNi45LDggMTYuOCw3LjVDMTYuNyw3LjIgMTYuNiw2LjkgMTYuMyw2LjdMMTAuOSwzLjVDMTAuNSwzLjIgOS45LDMuMyA5LjUsMy42TDYuOCw2LjFDNi4zLDYuNiA2LjIsNy4zIDYuNyw3LjhDNy4xLDguMyA3LjksOC4zIDguNCw3LjlMMTAuNCw2LjFMMTIuMyw3LjJMOC4xLDExLjVDOCwxMS42IDgsMTEuNyA3LjksMTEuN0M3LjQsMTEuOSA2LjksMTIuMSA2LjUsMTIuNEw4LDEzLjlDOC41LDEzLjcgOSwxMy41IDkuNSwxMy41QzExLjQsMTMuNSAxMywxNS4xIDEzLDE3QzEzLDE3LjYgMTIuOSwxOC4xIDEyLjYsMTguNUwxNC4xLDIwQzE0LjcsMTkuMSAxNSwxOC4xIDE1LDE3QzE1LDE1LjggMTQuNiwxNC42IDEzLjksMTMuN0wxNy4yLDEzLjRMMTcsMTguMkMxNi45LDE4LjkgMTcuNCwxOS40IDE4LjEsMTkuNUgxOC4yQzE4LjgsMTkuNSAxOS4zLDE5IDE5LjQsMTguNEwxOS42LDEyLjVDMTkuNiwxMi4yIDE5LjUsMTEuOCAxOS4zLDExLjZDMTksMTEuMyAxOC43LDExLjIgMTguNCwxMS4yTTE4LDUuNUEyLDIgMCAwLDAgMjAsMy41QTIsMiAwIDAsMCAxOCwxLjVBMiwyIDAgMCwwIDE2LDMuNUEyLDIgMCAwLDAgMTgsNS41TTEyLjUsMjEuNkMxMS42LDIyLjIgMTAuNiwyMi41IDkuNSwyMi41QzYuNSwyMi41IDQsMjAgNCwxN0M0LDE1LjkgNC4zLDE0LjkgNC45LDE0TDYuNCwxNS41QzYuMiwxNiA2LDE2LjUgNiwxN0M2LDE4LjkgNy42LDIwLjUgOS41LDIwLjVDMTAuMSwyMC41IDEwLjYsMjAuNCAxMSwyMC4xTDEyLjUsMjEuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlXaGlzdGxlID0gXCJNOC41LDlBNi41LDYuNSAwIDAsMCAyLDE1LjVBNi41LDYuNSAwIDAsMCA4LjUsMjJBNi41LDYuNSAwIDAsMCAxNSwxNS41VjEzLjkxTDIyLDEyVjlIMTFWMTFIOVY5SDguNU0xMSwyVjdIOVYySDExTTYuMzUsNy4yOEM1LjY4LDcuNDQgNS4wNCw3LjY4IDQuNDMsOEwyLjE0LDQuODhMMy43NiwzLjdMNi4zNSw3LjI4TTE3Ljg2LDQuODhMMTYuMzIsN0gxMy44NUwxNi4yNCwzLjdMMTcuODYsNC44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlXaGlzdGxlT3V0bGluZSA9IFwiTTMuNzYgMy43TDIuMTQgNC44OEw0LjQzIDhBOC4yMyA4LjIzIDAgMCAxIDYuMzUgNy4yOE0xMSA5VjExSDE4VjExLjI5TDEzIDEyLjcxVjE1LjVBNC41IDQuNSAwIDEgMSA4LjUgMTFIOVY5SDguNUE2LjUgNi41IDAgMSAwIDE1IDE1LjVWMTMuOTFMMjIgMTJWOU0xNi4yNCAzLjdMMTMuODUgN0gxNi4zMkwxNy44NiA0Ljg4TTkgMlY3SDExVjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2hpdGVCYWxhbmNlQXV0byA9IFwiTTEwLjMsMTZMOS42LDE0SDYuNEw1LjcsMTZIMy44TDcsN0g5TDEyLjIsMTZNMjIsN0wyMC44LDEzLjI5TDE5LjMsN0gxNy43TDE2LjIxLDEzLjI5TDE1LDdIMTQuMjRDMTIuNzcsNS4xNyAxMC41LDQgOCw0QTgsOCAwIDAsMCAwLDEyQTgsOCAwIDAsMCA4LDIwQzExLjEzLDIwIDEzLjg0LDE4LjE5IDE1LjE1LDE1LjU3TDE1LjI1LDE2SDE3TDE4LjUsOS45TDIwLDE2SDIxLjc1TDIzLjgsN002Ljg1LDEyLjY1SDkuMTVMOCw5TDYuODUsMTIuNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2hpdGVCYWxhbmNlSW5jYW5kZXNjZW50ID0gXCJNMTcuMjQsMTguMTVMMTkuMDQsMTkuOTVMMjAuNDUsMTguNTNMMTguNjYsMTYuNzRNMjAsMTIuNUgyM1YxMC41SDIwTTE1LDYuMzFWMS41SDlWNi4zMUM3LjIxLDcuMzUgNiw5LjI4IDYsMTEuNUE2LDYgMCAwLDAgMTIsMTcuNUE2LDYgMCAwLDAgMTgsMTEuNUMxOCw5LjI4IDE2Ljc5LDcuMzUgMTUsNi4zMU00LDEwLjVIMVYxMi41SDRNMTEsMjIuNDVDMTEuMzIsMjIuNDUgMTMsMjIuNDUgMTMsMjIuNDVWMTkuNUgxMU0zLjU1LDE4LjUzTDQuOTYsMTkuOTVMNi43NiwxOC4xNUw1LjM0LDE2Ljc0TDMuNTUsMTguNTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2hpdGVCYWxhbmNlSXJpZGVzY2VudCA9IFwiTTQuOTYsMTkuOTVMNi43NiwxOC4xNUw1LjM0LDE2Ljc0TDMuNTUsMTguNTNNMy41NSw0LjQ2TDUuMzQsNi4yNkw2Ljc2LDQuODRMNC45NiwzLjA1TTIwLjQ1LDE4LjUzTDE4LjY2LDE2Ljc0TDE3LjI0LDE4LjE1TDE5LjA0LDE5Ljk1TTEzLDIyLjQ1VjE5LjVIMTFWMjIuNDVDMTEuMzIsMjIuNDUgMTMsMjIuNDUgMTMsMjIuNDVNMTkuMDQsMy4wNUwxNy4yNCw0Ljg0TDE4LjY2LDYuMjZMMjAuNDUsNC40Nk0xMSwzLjVIMTNWMC41NUgxMU01LDE0LjVIMTlWOC41SDVWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaGl0ZUJhbGFuY2VTdW5ueSA9IFwiTTMuNTUsMTguNTRMNC45NiwxOS45NUw2Ljc2LDE4LjE2TDUuMzQsMTYuNzRNMTEsMjIuNDVDMTEuMzIsMjIuNDUgMTMsMjIuNDUgMTMsMjIuNDVWMTkuNUgxMU0xMiw1LjVBNiw2IDAgMCwwIDYsMTEuNUE2LDYgMCAwLDAgMTIsMTcuNUE2LDYgMCAwLDAgMTgsMTEuNUMxOCw4LjE4IDE1LjMxLDUuNSAxMiw1LjVNMjAsMTIuNUgyM1YxMC41SDIwTTE3LjI0LDE4LjE2TDE5LjA0LDE5Ljk1TDIwLjQ1LDE4LjU0TDE4LjY2LDE2Ljc0TTIwLjQ1LDQuNDZMMTkuMDQsMy4wNUwxNy4yNCw0Ljg0TDE4LjY2LDYuMjZNMTMsMC41NUgxMVYzLjVIMTNNNCwxMC41SDFWMTIuNUg0TTYuNzYsNC44NEw0Ljk2LDMuMDVMMy41NSw0LjQ2TDUuMzQsNi4yNkw2Ljc2LDQuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lkZ2V0cyA9IFwiTTMsM0gxMVY3LjM0TDE2LjY2LDEuNjlMMjIuMzEsNy4zNEwxNi42NiwxM0gyMVYyMUgxM1YxM0gxNi42NkwxMSw3LjM0VjExSDNWM00zLDEzSDExVjIxSDNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lkZ2V0c091dGxpbmUgPSBcIk0xNi43IDQuNUwxOS41IDcuM0wxNi43IDEwLjFMMTMuOSA3LjNMMTYuNyA0LjVNOSA1VjlINVY1SDlNMTkgMTVWMTlIMTVWMTVIMTlNMTYuNyAxLjdMMTEgNy4zTDE2LjcgMTNIMTNWMjFIMjFWMTNIMTYuN0wyMi4zIDcuM0wxNi43IDEuN00xMSAzSDNWMTFIMTFWM005IDE1VjE5SDVWMTVIOU0xMSAxM0gzVjIxSDExVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmkgPSBcIk0xMiwyMUwxNS42LDE2LjJDMTQuNiwxNS40NSAxMy4zNSwxNSAxMiwxNUMxMC42NSwxNSA5LjQsMTUuNDUgOC40LDE2LjJMMTIsMjFNMTIsM0M3Ljk1LDMgNC4yMSw0LjM0IDEuMiw2LjZMMyw5QzUuNSw3LjEyIDguNjIsNiAxMiw2QzE1LjM4LDYgMTguNSw3LjEyIDIxLDlMMjIuOCw2LjZDMTkuNzksNC4zNCAxNi4wNSwzIDEyLDNNMTIsOUM5LjMsOSA2LjgxLDkuODkgNC44LDExLjRMNi42LDEzLjhDOC4xLDEyLjY3IDkuOTcsMTIgMTIsMTJDMTQuMDMsMTIgMTUuOSwxMi42NyAxNy40LDEzLjhMMTkuMiwxMS40QzE3LjE5LDkuODkgMTQuNyw5IDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUFsZXJ0ID0gXCJNMjAuMjQgNUgxOFY3LjI1QzE2LjE2IDYuNDUgMTQuMTMgNiAxMiA2QzguNjIgNiA1LjUgNy4xMiAzIDlMMS4yIDYuNkM0LjIxIDQuMzQgNy45NSAzIDEyIDNDMTQuOTcgMyAxNy43NyAzLjczIDIwLjI0IDVNOC40IDE2LjJMMTIgMjFMMTUuNiAxNi4yQzE0LjYgMTUuNDUgMTMuMzUgMTUgMTIgMTVTOS40IDE1LjQ1IDguNCAxNi4yTTQuOCAxMS40TDYuNiAxMy44QzguMSAxMi42NyA5Ljk3IDEyIDEyIDEyUzE1LjkgMTIuNjcgMTcuNCAxMy44TDE4IDEzVjEwLjYyQzE2LjIzIDkuNTkgMTQuMTkgOSAxMiA5QzkuMyA5IDYuODEgOS44OSA0LjggMTEuNE0yMCAxN0gyMlYxNUgyMFYxN00yMCA3VjEzSDIyVjdIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUFycm93RG93biA9IFwiTTEyIDZDOC42MiA2IDUuNSA3LjEyIDMgOUwxLjIgNi42QzQuMjEgNC4zNCA3Ljk1IDMgMTIgM1MxOS43OSA0LjM0IDIyLjggNi42TDIxIDlDMTguNSA3LjEyIDE1LjM4IDYgMTIgNk0xMiAxNUMxMC42NSAxNSA5LjQgMTUuNDUgOC40IDE2LjJMMTIgMjFMMTMuMDQgMTkuNjFDMTMgMTkuNDEgMTMgMTkuMjEgMTMgMTlDMTMgMTcuNjYgMTMuNDQgMTYuNDMgMTQuMTkgMTUuNDNDMTMuNSAxNS4xNiAxMi43NyAxNSAxMiAxNU0xNi44NCAxMy40MUMxNy4xOCAxMy4yNyAxNy41NSAxMy4xNyAxNy45MiAxMy4xTDE5LjIgMTEuNEMxNy4xOSA5Ljg5IDE0LjcgOSAxMiA5UzYuODEgOS44OSA0LjggMTEuNEw2LjYgMTMuOEM4LjEgMTIuNjcgOS45NyAxMiAxMiAxMkMxMy43OCAxMiAxNS40NCAxMi41IDE2Ljg0IDEzLjQxTTIwIDE2SDE4VjIwSDE2TDE5IDIzTDIyIDIwSDIwVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlBcnJvd0xlZnQgPSBcIk0xMiAxMkM5Ljk3IDEyIDguMSAxMi42NyA2LjYgMTMuOEw0LjggMTEuNEM2LjgxIDkuODkgOS4zIDkgMTIgOVMxNy4xOSA5Ljg5IDE5LjIgMTEuNEwxNy45MiAxMy4xQzE3LjU1IDEzLjE3IDE3LjE4IDEzLjI3IDE2Ljg0IDEzLjQxQzE1LjQ0IDEyLjUgMTMuNzggMTIgMTIgMTJNMjEgOUwyMi44IDYuNkMxOS43OSA0LjM0IDE2LjA1IDMgMTIgM1M0LjIxIDQuMzQgMS4yIDYuNkwzIDlDNS41IDcuMTIgOC42MiA2IDEyIDZTMTguNSA3LjEyIDIxIDlNMTIgMTVDMTAuNjUgMTUgOS40IDE1LjQ1IDguNCAxNi4yTDEyIDIxTDEzLjA0IDE5LjYxQzEzIDE5LjQxIDEzIDE5LjIxIDEzIDE5QzEzIDE3LjY2IDEzLjQ0IDE2LjQzIDE0LjE5IDE1LjQzQzEzLjUgMTUuMTYgMTIuNzcgMTUgMTIgMTVNMTggMTZMMTUgMTlMMTggMjJWMjBIMjJWMThIMThWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUFycm93TGVmdFJpZ2h0ID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE4IDE4LjVMMTUgMjFMMTggMjMuNVYyMkgyMlYyMEgxOFYxOC41TTIzIDE3TDIwIDE0LjVWMTZIMTZWMThIMjBWMTkuNUwyMyAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpQXJyb3dSaWdodCA9IFwiTTEyIDZDOC42MiA2IDUuNSA3LjEyIDMgOUwxLjIgNi42QzQuMjEgNC4zNCA3Ljk1IDMgMTIgM1MxOS43OSA0LjM0IDIyLjggNi42TDIxIDlDMTguNSA3LjEyIDE1LjM4IDYgMTIgNk0xNi44NCAxMy40MUMxNy4xOCAxMy4yNyAxNy41NSAxMy4xNyAxNy45MiAxMy4xTDE5LjIgMTEuNEMxNy4xOSA5Ljg5IDE0LjcgOSAxMiA5UzYuODEgOS44OSA0LjggMTEuNEw2LjYgMTMuOEM4LjEgMTIuNjcgOS45NyAxMiAxMiAxMkMxMy43OCAxMiAxNS40NCAxMi41IDE2Ljg0IDEzLjQxTTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTIzIDE5TDIwIDE2VjE4SDE2VjIwSDIwVjIyTDIzIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlBcnJvd1VwID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE2IDE4SDE4VjIySDIwVjE4SDIyTDE5IDE1TDE2IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlBcnJvd1VwRG93biA9IFwiTTEyIDEyQzkuOTcgMTIgOC4xIDEyLjY3IDYuNiAxMy44TDQuOCAxMS40QzYuODEgOS44OSA5LjMgOSAxMiA5UzE3LjE5IDkuODkgMTkuMiAxMS40TDE3LjkyIDEzLjFDMTcuNTUgMTMuMTcgMTcuMTggMTMuMjcgMTYuODQgMTMuNDFDMTUuNDQgMTIuNSAxMy43OCAxMiAxMiAxMk0yMSA5TDIyLjggNi42QzE5Ljc5IDQuMzQgMTYuMDUgMyAxMiAzUzQuMjEgNC4zNCAxLjIgNi42TDMgOUM1LjUgNy4xMiA4LjYyIDYgMTIgNlMxOC41IDcuMTIgMjEgOU0xMiAxNUMxMC42NSAxNSA5LjQgMTUuNDUgOC40IDE2LjJMMTIgMjFMMTMuMDQgMTkuNjFDMTMgMTkuNDEgMTMgMTkuMjEgMTMgMTlDMTMgMTcuNjYgMTMuNDQgMTYuNDMgMTQuMTkgMTUuNDNDMTMuNSAxNS4xNiAxMi43NyAxNSAxMiAxNU0xNyAxNUwxNC41IDE4SDE2VjIySDE4VjE4SDE5LjVMMTcgMTVNMjIgMjBWMTZIMjBWMjBIMTguNUwyMSAyM0wyMy41IDIwSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlDYW5jZWwgPSBcIk0xMiA2QzguNjIgNiA1LjUgNy4xMiAzIDlMMS4yIDYuNkM0LjIxIDQuMzQgNy45NSAzIDEyIDNTMTkuNzkgNC4zNCAyMi44IDYuNkwyMSA5QzE4LjUgNy4xMiAxNS4zOCA2IDEyIDZNMTUuNTMgMTIuNzJDMTYuNDIgMTIuMjYgMTcuNDMgMTIgMTguNSAxMkMxOC41OCAxMiAxOC42NiAxMiAxOC43NCAxMkwxOS4yIDExLjRDMTcuMTkgOS44OSAxNC43IDkgMTIgOVM2LjgxIDkuODkgNC44IDExLjRMNi42IDEzLjhDOC4xIDEyLjY3IDkuOTcgMTIgMTIgMTJDMTMuMjYgMTIgMTQuNDUgMTIuMjYgMTUuNTMgMTIuNzJNMTIgMTVDMTAuNjUgMTUgOS40IDE1LjQ1IDguNCAxNi4yTDEyIDIxTDEyLjM0IDIwLjU0QzEyLjEzIDE5LjkgMTIgMTkuMjIgMTIgMTguNUMxMiAxNy4yNCAxMi4zNiAxNi4wOCAxMyAxNS4wOEMxMi42NiAxNS4wMyAxMi4zMyAxNSAxMiAxNU0yMyAxOC41QzIzIDIxIDIxIDIzIDE4LjUgMjNTMTQgMjEgMTQgMTguNSAxNiAxNCAxOC41IDE0IDIzIDE2IDIzIDE4LjVNMjAgMjEuMDhMMTUuOTIgMTdDMTUuNjUgMTcuNDIgMTUuNSAxNy45NCAxNS41IDE4LjVDMTUuNSAyMC4xNiAxNi44NCAyMS41IDE4LjUgMjEuNUMxOS4wNiAyMS41IDE5LjU4IDIxLjM1IDIwIDIxLjA4TTIxLjUgMTguNUMyMS41IDE2Ljg0IDIwLjE2IDE1LjUgMTguNSAxNS41QzE3Ljk0IDE1LjUgMTcuNDIgMTUuNjUgMTcgMTUuOTJMMjEuMDggMjBDMjEuMzUgMTkuNTggMjEuNSAxOS4wNiAyMS41IDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUNoZWNrID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE3Ljc1IDE5LjQzTDE2LjE2IDE3Ljg0TDE1IDE5TDE3Ljc1IDIyTDIyLjUgMTcuMjVMMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUNvZyA9IFwiTTEyIDEyQzkuOTcgMTIgOC4xIDEyLjY3IDYuNiAxMy44TDQuOCAxMS40QzYuODEgOS44OSA5LjMgOSAxMiA5UzE3LjE5IDkuODkgMTkuMiAxMS40TDE4Ljc0IDEyQzE3LjY2IDEyLjA1IDE2LjYzIDEyLjMzIDE1LjczIDEyLjgxQzE0LjYgMTIuMjkgMTMuMzMgMTIgMTIgMTJNMjEgOUwyMi44IDYuNkMxOS43OSA0LjM0IDE2LjA1IDMgMTIgM1M0LjIxIDQuMzQgMS4yIDYuNkwzIDlDNS41IDcuMTIgOC42MiA2IDEyIDZTMTguNSA3LjEyIDIxIDlNMTIgMTVDMTAuNjUgMTUgOS40IDE1LjQ1IDguNCAxNi4yTDEyIDIxTDEyLjIyIDIwLjcxQzEyLjA4IDIwLjE2IDEyIDE5LjU5IDEyIDE5QzEyIDE3LjU3IDEyLjQzIDE2LjI0IDEzLjE3IDE1LjEzQzEyLjc5IDE1LjA1IDEyLjQgMTUgMTIgMTVNMjMuOCAyMC40QzIzLjkgMjAuNCAyMy45IDIwLjUgMjMuOCAyMC42TDIyLjggMjIuM0MyMi43IDIyLjQgMjIuNiAyMi40IDIyLjUgMjIuNEwyMS4zIDIyQzIxIDIyLjIgMjAuOCAyMi4zIDIwLjUgMjIuNUwyMC4zIDIzLjhDMjAuMyAyMy45IDIwLjIgMjQgMjAuMSAyNEgxOC4xQzE4IDI0IDE3LjkgMjMuOSAxNy44IDIzLjhMMTcuNiAyMi41QzE3LjMgMjIuNCAxNyAyMi4yIDE2LjggMjJMMTUuNiAyMi41QzE1LjUgMjIuNSAxNS40IDIyLjUgMTUuMyAyMi40TDE0LjMgMjAuN0MxNC4yIDIwLjYgMTQuMyAyMC41IDE0LjQgMjAuNEwxNS41IDE5LjZWMTguNkwxNC40IDE3LjhDMTQuMyAxNy43IDE0LjMgMTcuNiAxNC4zIDE3LjVMMTUuMyAxNS44QzE1LjQgMTUuNyAxNS41IDE1LjcgMTUuNiAxNS43TDE2LjggMTYuMkMxNy4xIDE2IDE3LjMgMTUuOSAxNy42IDE1LjdMMTcuOCAxNC40QzE3LjggMTQuMyAxNy45IDE0LjIgMTguMSAxNC4ySDIwLjFDMjAuMiAxNC4yIDIwLjMgMTQuMyAyMC4zIDE0LjRMMjAuNSAxNS43QzIwLjggMTUuOCAyMS4xIDE2IDIxLjQgMTYuMkwyMi42IDE1LjdDMjIuNyAxNS43IDIyLjkgMTUuNyAyMi45IDE1LjhMMjMuOSAxNy41QzI0IDE3LjYgMjMuOSAxNy43IDIzLjggMTcuOEwyMi43IDE4LjZWMTkuNkwyMy44IDIwLjRNMjAuNSAxOUMyMC41IDE4LjIgMTkuOCAxNy41IDE5IDE3LjVTMTcuNSAxOC4yIDE3LjUgMTkgMTguMiAyMC41IDE5IDIwLjUgMjAuNSAxOS44IDIwLjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUxvY2sgPSBcIk0xMiA2QzguNjIgNiA1LjUgNy4xMiAzIDlMMS4yIDYuNkM0LjIxIDQuMzQgNy45NSAzIDEyIDNTMTkuNzkgNC4zNCAyMi44IDYuNkwyMSA5QzE4LjUgNy4xMiAxNS4zOCA2IDEyIDZNMTcuNCAxMC4yOUMxNS43NyA5LjQ3IDEzLjk0IDkgMTIgOUM5LjMgOSA2LjgxIDkuODkgNC44IDExLjRMNi42IDEzLjhDOC4xIDEyLjY3IDkuOTcgMTIgMTIgMTJDMTIuOTcgMTIgMTMuOSAxMi4xNiAxNC43OCAxMi40NEMxNS4zNCAxMS40NSAxNi4yNyAxMC42OCAxNy40IDEwLjI5TTguNCAxNi4yTDEyIDIxTDEzIDE5LjY3VjE3LjJDMTMgMTYuNSAxMy4yNyAxNS44MSAxMy43IDE1LjI2QzEzLjE2IDE1LjEgMTIuNTkgMTUgMTIgMTVDMTAuNjUgMTUgOS40IDE1LjQ1IDguNCAxNi4yTTIzIDE3LjNWMjAuOEMyMyAyMS40IDIyLjQgMjIgMjEuNyAyMkgxNi4yQzE1LjYgMjIgMTUgMjEuNCAxNSAyMC43VjE3LjJDMTUgMTYuNiAxNS42IDE2IDE2LjIgMTZWMTQuNUMxNi4yIDEzLjEgMTcuNiAxMiAxOSAxMlMyMS44IDEzLjEgMjEuOCAxNC41VjE2QzIyLjQgMTYgMjMgMTYuNiAyMyAxNy4zTTIwLjUgMTQuNUMyMC41IDEzLjcgMTkuOCAxMy4yIDE5IDEzLjJTMTcuNSAxMy43IDE3LjUgMTQuNVYxNkgyMC41VjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUxvY2tPcGVuID0gXCJNMTIgNkM4LjYyIDYgNS41IDcuMTIgMyA5TDEuMiA2LjZDNC4yMSA0LjM0IDcuOTUgMyAxMiAzUzE5Ljc5IDQuMzQgMjIuOCA2LjZMMjEgOUMxOC41IDcuMTIgMTUuMzggNiAxMiA2TTE2LjMxIDkuODFDMTQuOTcgOS4yOSAxMy41IDkgMTIgOUM5LjMgOSA2LjgxIDkuODkgNC44IDExLjRMNi42IDEzLjhDOC4xIDEyLjY3IDkuOTcgMTIgMTIgMTJDMTIuODMgMTIgMTMuNjMgMTIuMTIgMTQuMzkgMTIuMzNDMTQuNyAxMS4zIDE1LjM4IDEwLjQxIDE2LjMxIDkuODFNOC40IDE2LjJMMTIgMjFMMTMgMTkuNjdWMTcuMkMxMyAxNi41IDEzLjI3IDE1LjgxIDEzLjcgMTUuMjZDMTMuMTYgMTUuMSAxMi41OSAxNSAxMiAxNUMxMC42NSAxNSA5LjQgMTUuNDUgOC40IDE2LjJNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaU1hcmtlciA9IFwiTTEyIDZDOC42MiA2IDUuNSA3LjEyIDMgOUwxLjIgNi42QzQuMjEgNC4zNCA3Ljk1IDMgMTIgM1MxOS43OSA0LjM0IDIyLjggNi42TDIxIDlDMTguNSA3LjEyIDE1LjM4IDYgMTIgNk0xMyAxNS4wOUMxMi42OSAxNS4wMyAxMi4zNSAxNSAxMiAxNUMxMC42NSAxNSA5LjQgMTUuNDUgOC40IDE2LjJMMTIgMjFMMTMuOCAxOC42QzEzLjMzIDE3LjU4IDEzIDE2LjUgMTMgMTUuNUMxMyAxNS4zNiAxMyAxNS4yMyAxMyAxNS4wOU0xMiA5QzkuMyA5IDYuODEgOS44OSA0LjggMTEuNEw2LjYgMTMuOEM4LjEgMTIuNjcgOS45NyAxMiAxMiAxMkMxMi43MyAxMiAxMy40MyAxMi4wOSAxNC4xIDEyLjI1QzE0Ljg2IDExLjI1IDE1LjkzIDEwLjUgMTcuMTcgMTAuMThDMTUuNiA5LjQzIDEzLjg1IDkgMTIgOU0yMiAxNS41QzIyIDE4LjEgMTguNSAyMiAxOC41IDIyUzE1IDE4LjEgMTUgMTUuNUMxNSAxMy42IDE2LjYgMTIgMTguNSAxMlMyMiAxMy42IDIyIDE1LjVNMTkuNyAxNS42QzE5LjcgMTUgMTkuMSAxNC40IDE4LjUgMTQuNFMxNy4zIDE0LjkgMTcuMyAxNS42QzE3LjMgMTYuMiAxNy44IDE2LjggMTguNSAxNi44UzE5LjggMTYuMiAxOS43IDE1LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaU1pbnVzID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlPZmYgPSBcIk0yLjI4LDNMMSw0LjI3TDIuNDcsNS43NEMyLjA0LDYgMS42MSw2LjI5IDEuMiw2LjZMMyw5QzMuNTMsOC42IDQuMDgsOC4yNSA0LjY2LDcuOTNMNi44OSwxMC4xNkM2LjE1LDEwLjUgNS40NCwxMC45MSA0LjgsMTEuNEw2LjYsMTMuOEM3LjM4LDEzLjIyIDguMjYsMTIuNzcgOS4yLDEyLjQ3TDExLjc1LDE1QzEwLjUsMTUuMDcgOS4zNCwxNS41IDguNCwxNi4yTDEyLDIxTDE0LjQ2LDE3LjczTDE3Ljc0LDIxTDE5LDE5LjcyTTEyLDNDOS44NSwzIDcuOCwzLjM4IDUuOSw0LjA3TDguMjksNi40N0M5LjUsNi4xNiAxMC43Miw2IDEyLDZDMTUuMzgsNiAxOC41LDcuMTEgMjEsOUwyMi44LDYuNkMxOS43OSw0LjM0IDE2LjA2LDMgMTIsM00xMiw5QzExLjYyLDkgMTEuMjUsOSAxMC44OCw5LjA1TDE0LjA3LDEyLjI1QzE1LjI5LDEyLjUzIDE2LjQzLDEzLjA3IDE3LjQsMTMuOEwxOS4yLDExLjRDMTcuMiw5Ljg5IDE0LjcsOSAxMiw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlQbHVzID0gXCJNMTIgNkM4LjYyIDYgNS41IDcuMTIgMyA5TDEuMiA2LjZDNC4yMSA0LjM0IDcuOTUgMyAxMiAzUzE5Ljc5IDQuMzQgMjIuOCA2LjZMMjEgOUMxOC41IDcuMTIgMTUuMzggNiAxMiA2TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE2Ljg0IDEzLjQxQzE3LjE4IDEzLjI3IDE3LjU1IDEzLjE3IDE3LjkyIDEzLjFMMTkuMiAxMS40QzE3LjE5IDkuODkgMTQuNyA5IDEyIDlTNi44MSA5Ljg5IDQuOCAxMS40TDYuNiAxMy44QzguMSAxMi42NyA5Ljk3IDEyIDEyIDEyQzEzLjc4IDEyIDE1LjQ0IDEyLjUgMTYuODQgMTMuNDFNMjAgMThWMTVIMThWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVJlZnJlc2ggPSBcIk0xMiAxMkM5Ljk3IDEyIDguMSAxMi42NyA2LjYgMTMuOEw0LjggMTEuNEM2LjgxIDkuODkgOS4zIDkgMTIgOVMxNy4xOSA5Ljg5IDE5LjIgMTEuNEwxOC43NCAxMkMxOC42NiAxMiAxOC41OCAxMiAxOC41IDEyQzE3LjQzIDEyIDE2LjQyIDEyLjI2IDE1LjUzIDEyLjcyQzE0LjQ1IDEyLjI2IDEzLjI2IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMi4zNCAyMC41NEMxMi4xMyAxOS45IDEyIDE5LjIyIDEyIDE4LjVDMTIgMTcuMjQgMTIuMzYgMTYuMDggMTMgMTUuMDhDMTIuNjYgMTUuMDMgMTIuMzMgMTUgMTIgMTVNMTggMTQuNUMxNS43OSAxNC41IDE0IDE2LjI5IDE0IDE4LjVTMTUuNzkgMjIuNSAxOCAyMi41QzE5LjY4IDIyLjUgMjEuMTIgMjEuNDcgMjEuNzEgMjBIMjBDMTkuNTQgMjAuNjEgMTguODIgMjEgMTggMjFDMTYuNjIgMjEgMTUuNSAxOS44OCAxNS41IDE4LjVTMTYuNjIgMTYgMTggMTZDMTguNjkgMTYgMTkuMzIgMTYuMjggMTkuNzcgMTYuNzNMMTggMTguNUgyMlYxNC41TDIwLjgzIDE1LjY3QzIwLjExIDE0Ljk1IDE5LjExIDE0LjUgMTggMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpUmVtb3ZlID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTIxLjEyIDE1LjQ2TDE5IDE3LjU5TDE2Ljg4IDE1LjQ3TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTZXR0aW5ncyA9IFwiTTEyIDIwTDguNCAxNS4yQzkuNCAxNC40NSAxMC42NSAxNCAxMiAxNFMxNC42IDE0LjQ1IDE1LjYgMTUuMkwxMiAyME00LjggMTAuNEw2LjYgMTIuOEM4LjEgMTEuNjcgOS45NyAxMSAxMiAxMVMxNS45IDExLjY3IDE3LjQgMTIuOEwxOS4yIDEwLjRDMTcuMTkgOC44OSAxNC43IDggMTIgOFM2LjgxIDguODkgNC44IDEwLjRNMTIgMkM3Ljk1IDIgNC4yMSAzLjM0IDEuMiA1LjZMMyA4QzUuNSA2LjEyIDguNjIgNSAxMiA1UzE4LjUgNi4xMiAyMSA4TDIyLjggNS42QzE5Ljc5IDMuMzQgMTYuMDUgMiAxMiAyTTcgMjRIOVYyMkg3VjI0TTE1IDI0SDE3VjIySDE1VjI0TTExIDI0SDEzVjIySDExVjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdGFyID0gXCJNMTIsNkM4LjYsNiA1LjUsNy4xIDMsOUwxLjIsNi42QzQuMiw0LjMgOCwzIDEyLDNDMTYsMyAxOS44LDQuMyAyMi44LDYuNkwyMSw5QzE4LjUsNy4xIDE1LjQsNiAxMiw2TTEzLDE5QzEzLDE3LjcgMTMuNCwxNi40IDE0LjIsMTUuNEMxMy41LDE1LjIgMTIuOCwxNSAxMiwxNUMxMC43LDE1IDkuNCwxNS41IDguNCwxNi4yTDEyLDIxTDEzLDE5LjZDMTMsMTkuNCAxMywxOS4yIDEzLDE5TTE2LjgsMTMuNEMxNy4xLDEzLjMgMTcuNSwxMy4yIDE3LjksMTMuMUwxOS4yLDExLjRDMTcuMiw5LjkgMTQuNyw5IDEyLDlDOS4zLDkgNi44LDkuOSA0LjgsMTEuNEw2LjYsMTMuOEM4LjEsMTIuNyAxMCwxMiAxMiwxMkMxMy44LDEyIDE1LjQsMTIuNSAxNi44LDEzLjRNMTYuNSwyMi42TDE3LjIsMTkuOEwxNSwxNy45TDE3LjksMTcuN0wxOSwxNUwyMC4xLDE3LjZMMjMsMTcuOEwyMC44LDE5LjdMMjEuNSwyMi41TDE5LDIxLjFMMTYuNSwyMi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aDEgPSBcIk0xMiwzQzcuNzksMyAzLjcsNC40MSAwLjM4LDdDNC40MSwxMi4wNiA3Ljg5LDE2LjM3IDEyLDIxLjVDMTYuMDgsMTYuNDIgMjAuMjQsMTEuMjQgMjMuNjUsN0MyMC4zMiw0LjQxIDE2LjIyLDMgMTIsM00xMiw1QzE1LjA3LDUgMTguMDksNS44NiAyMC43MSw3LjQ1TDE1LjYxLDEzLjgxQzE0LjUsMTMuMjggMTMuMjUsMTMgMTIsMTNDMTAuNzUsMTMgOS41LDEzLjI4IDguMzksMTMuOEwzLjI3LDcuNDRDNS45MSw1Ljg1IDguOTMsNSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aDFBbGVydCA9IFwiTTEyIDNDNy44IDMgMy43IDQuNCAuNCA3QzQuNCAxMi4xIDcuOSAxNi40IDEyIDIxLjVDMTQuNCAxOC41IDE2LjcgMTUuNyAxOSAxMi44VjkuNkwxNS42IDEzLjhDMTQuNSAxMy4zIDEzLjIgMTMgMTIgMTNTOS41IDEzLjMgOC40IDEzLjhMMy4zIDcuNEM1LjkgNS44IDguOSA1IDEyIDVTMTguMSA1LjkgMjAuNyA3LjRMMjAuMyA4SDIyLjlDMjMuMSA3LjcgMjMuNSA3LjMgMjMuNyA3QzIwLjMgNC40IDE2LjIgMyAxMiAzTTIxIDEwVjE2SDIzVjEwTTIxIDE4VjIwSDIzVjE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMUxvY2sgPSBcIk0xMiAxM0MxMi44IDEzIDEzLjYxIDEzLjEzIDE0LjM4IDEzLjM2QzE0LjI4IDEzLjczIDE0LjIgMTQuMTEgMTQuMiAxNC41VjE0Ljc0QzEzLjUgMTUuMzQgMTMgMTYuMjQgMTMgMTcuMlYyMC4yNEwxMiAyMS41QzcuODggMTYuMzcgNC4zOSAxMi4wNiAuMzY1IDdDMy42OSA0LjQxIDcuNzggMyAxMiAzQzE2LjIgMyAyMC4zMSA0LjQxIDIzLjY0IDdMMjAuOTEgMTAuMzlDMjAuMzIgMTAuMTQgMTkuNjggMTAgMTkgMTBDMTguODcgMTAgMTguNzUgMTAuMDMgMTguNjIgMTAuMDRMMjAuNyA3LjQ1QzE4LjA4IDUuODYgMTUuMDYgNSAxMiA1UzUuOSA1Ljg1IDMuMjYgNy40NEw4LjM4IDEzLjhDOS41IDEzLjI4IDEwLjc0IDEzIDEyIDEzTTIzIDE3LjNWMjAuOEMyMyAyMS40IDIyLjQgMjIgMjEuNyAyMkgxNi4yQzE1LjYgMjIgMTUgMjEuNCAxNSAyMC43VjE3LjJDMTUgMTYuNiAxNS42IDE2IDE2LjIgMTZWMTQuNUMxNi4yIDEzLjEgMTcuNiAxMiAxOSAxMlMyMS44IDEzLjEgMjEuOCAxNC41VjE2QzIyLjQgMTYgMjMgMTYuNiAyMyAxNy4zTTIwLjUgMTQuNUMyMC41IDEzLjcgMTkuOCAxMy4yIDE5IDEzLjJTMTcuNSAxMy43IDE3LjUgMTQuNVYxNkgyMC41VjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMUxvY2tPcGVuID0gXCJNMTIgMTNDMTIuNzQgMTMgMTMuNSAxMy4xMiAxNC4yMiAxMy4zMUMxNC4yMiAxMy4zOCAxNC4yIDEzLjQ0IDE0LjIgMTMuNVYxNC43NEMxMy41IDE1LjM0IDEzIDE2LjI0IDEzIDE3LjJWMjAuMjRMMTIgMjEuNUM3Ljg4IDE2LjM3IDQuMzkgMTIuMDYgLjM2NSA3QzMuNjkgNC40MSA3Ljc4IDMgMTIgM0MxNi4yIDMgMjAuMzEgNC40MSAyMy42NCA3TDIxLjUgOS42OUMyMC44NiA5LjMzIDIwLjE2IDkuMTEgMTkuNDIgOS4wNEwyMC43IDcuNDVDMTguMDggNS44NiAxNS4wNiA1IDEyIDVTNS45IDUuODUgMy4yNiA3LjQ0TDguMzggMTMuOEM5LjUgMTMuMjggMTAuNzQgMTMgMTIgMTNNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMiA9IFwiTTEyLDNDNy43OSwzIDMuNyw0LjQxIDAuMzgsN0M0LjQxLDEyLjA2IDcuODksMTYuMzcgMTIsMjEuNUMxNi4wOCwxNi40MiAyMC4yNCwxMS4yNCAyMy42NSw3QzIwLjMyLDQuNDEgMTYuMjIsMyAxMiwzTTEyLDVDMTUuMDcsNSAxOC4wOSw1Ljg2IDIwLjcxLDcuNDVMMTcuNSwxMS40M0MxNi4yNiwxMC43NCAxNC4zNywxMCAxMiwxMEM5LjYyLDEwIDcuNzQsMTAuNzUgNi41LDExLjQzTDMuMjcsNy40NEM1LjkxLDUuODUgOC45Myw1IDEyLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMkFsZXJ0ID0gXCJNMTIgM0M3LjggMyAzLjcgNC40IC40IDdDNC40IDEyLjEgNy45IDE2LjQgMTIgMjEuNUMxNC40IDE4LjUgMTYuNyAxNS43IDE5IDEyLjhWOS42TDE3LjUgMTEuNEMxNi4zIDEwLjcgMTQuNCAxMCAxMiAxMEM5LjYgMTAgNy43IDEwLjggNi41IDExLjRMMy4zIDcuNEM1LjkgNS44IDguOSA1IDEyIDVTMTguMSA1LjkgMjAuNyA3LjRMMjAuMyA4SDIyLjlDMjMuMSA3LjcgMjMuNSA3LjMgMjMuNyA3QzIwLjMgNC40IDE2LjIgMyAxMiAzTTIxIDEwVjE2SDIzVjEwTTIxIDE4VjIwSDIzVjE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMkxvY2sgPSBcIk0xNC4yIDE0LjVWMTQuNzRDMTMuNSAxNS4zNCAxMyAxNi4yNCAxMyAxNy4yVjIwLjI0TDEyIDIxLjVDNy44OCAxNi4zNyA0LjM5IDEyLjA2IC4zNjUgN0MzLjY5IDQuNDEgNy43OCAzIDEyIDNDMTYuMiAzIDIwLjMxIDQuNDEgMjMuNjQgN0wyMC45MSAxMC4zOUMyMC4zMiAxMC4xNCAxOS42OCAxMCAxOSAxMEMxOC44NyAxMCAxOC43NCAxMC4wMyAxOC42MSAxMC4wNEwyMC43IDcuNDVDMTguMDggNS44NiAxNS4wNiA1IDEyIDVTNS45IDUuODUgMy4yNiA3LjQ0TDYuNSAxMS40M0M3LjczIDEwLjc1IDkuNjEgMTAgMTIgMTBDMTMuNjggMTAgMTUuMTIgMTAuMzggMTYuMjYgMTAuODRDMTUuMDMgMTEuNjcgMTQuMiAxMyAxNC4yIDE0LjVNMjMgMTcuM1YyMC44QzIzIDIxLjQgMjIuNCAyMiAyMS43IDIySDE2LjJDMTUuNiAyMiAxNSAyMS40IDE1IDIwLjdWMTcuMkMxNSAxNi42IDE1LjYgMTYgMTYuMiAxNlYxNC41QzE2LjIgMTMuMSAxNy42IDEyIDE5IDEyUzIxLjggMTMuMSAyMS44IDE0LjVWMTZDMjIuNCAxNiAyMyAxNi42IDIzIDE3LjNNMjAuNSAxNC41QzIwLjUgMTMuNyAxOS44IDEzLjIgMTkgMTMuMlMxNy41IDEzLjcgMTcuNSAxNC41VjE2SDIwLjVWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGgyTG9ja09wZW4gPSBcIk0xNS40NCAxMC41NUMxNC42OCAxMS4zNSAxNC4yIDEyLjM4IDE0LjIgMTMuNVYxNC43NEMxMy41IDE1LjM0IDEzIDE2LjI0IDEzIDE3LjJWMjAuMjRMMTIgMjEuNUM3Ljg4IDE2LjM3IDQuMzkgMTIuMDYgLjM2NSA3QzMuNjkgNC40MSA3Ljc4IDMgMTIgM0MxNi4yIDMgMjAuMzEgNC40MSAyMy42NCA3TDIxLjUgOS42OUMyMC44NiA5LjMzIDIwLjE2IDkuMSAxOS40MSA5LjA0TDIwLjcgNy40NUMxOC4wOCA1Ljg2IDE1LjA2IDUgMTIgNVM1LjkgNS44NSAzLjI2IDcuNDRMNi41IDExLjQzQzcuNzMgMTAuNzUgOS42MSAxMCAxMiAxMEMxMy4yOSAxMCAxNC40NSAxMC4yMyAxNS40NCAxMC41NU0yMS44IDE2SDE3LjVWMTMuNUMxNy41IDEyLjcgMTguMiAxMi4yIDE5IDEyLjJTMjAuNSAxMi43IDIwLjUgMTMuNVYxNEgyMS44VjEzLjVDMjEuOCAxMi4xIDIwLjQgMTEgMTkgMTFTMTYuMiAxMi4xIDE2LjIgMTMuNVYxNkMxNS42IDE2IDE1IDE2LjYgMTUgMTcuMlYyMC43QzE1IDIxLjQgMTUuNiAyMiAxNi4yIDIySDIxLjdDMjIuNCAyMiAyMyAyMS40IDIzIDIwLjhWMTcuM0MyMyAxNi42IDIyLjQgMTYgMjEuOCAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGgzID0gXCJNMTIsM0M3Ljc5LDMgMy43LDQuNDEgMC4zOCw3QzQuNDEsMTIuMDYgNy44OSwxNi4zNyAxMiwyMS41QzE2LjA4LDE2LjQyIDIwLjI0LDExLjI0IDIzLjY1LDdDMjAuMzIsNC40MSAxNi4yMiwzIDEyLDNNMTIsNUMxNS4wNyw1IDE4LjA5LDUuODYgMjAuNzEsNy40NUwxOC43Nyw5Ljg4QzE3LjI2LDkgMTQuODgsOCAxMiw4QzksOCA2LjY4LDkgNS4yMSw5Ljg0TDMuMjcsNy40NEM1LjkxLDUuODUgOC45Myw1IDEyLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoM0FsZXJ0ID0gXCJNMTIgM0M3LjggMyAzLjcgNC40IC40IDdDNC40IDEyLjEgNy45IDE2LjQgMTIgMjEuNUMxNC40IDE4LjUgMTYuNyAxNS43IDE5IDEyLjhWOS42TDE4LjggOS45QzE3LjMgOSAxNC45IDggMTIgOEM5IDggNi43IDkgNS4yIDkuOEwzLjMgNy40QzUuOSA1LjggOC45IDUgMTIgNVMxOC4xIDUuOSAyMC43IDcuNEwyMC4zIDhIMjIuOUMyMy4xIDcuNyAyMy41IDcuMyAyMy43IDdDMjAuMyA0LjQgMTYuMiAzIDEyIDNNMjEgMTBWMTZIMjNWMTBNMjEgMThWMjBIMjNWMThcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGgzTG9jayA9IFwiTTE5IDEwQzE5LjY4IDEwIDIwLjMyIDEwLjE0IDIwLjkxIDEwLjM5TDIzLjY0IDdDMjAuMzEgNC40MSAxNi4yIDMgMTIgM0M3Ljc4IDMgMy42OSA0LjQxIC4zNjUgN0M0LjM5IDEyLjA2IDcuODggMTYuMzcgMTIgMjEuNUwxMyAyMC4yNFYxNy4yQzEzIDE2LjI0IDEzLjUgMTUuMzQgMTQuMiAxNC43NFYxNC41QzE0LjIgMTIuMDYgMTYuNCAxMCAxOSAxME0xMiA4QzkgOCA2LjY3IDkgNS4yIDkuODRMMy4yNiA3LjQ0QzUuOSA1Ljg1IDguOTEgNSAxMiA1UzE4LjA4IDUuODYgMjAuNyA3LjQ1TDE4Ljc2IDkuODhDMTcuMjUgOSAxNC44NyA4IDEyIDhNMjEuOCAxNlYxNC41QzIxLjggMTMuMSAyMC40IDEyIDE5IDEyUzE2LjIgMTMuMSAxNi4yIDE0LjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZNMjAuNSAxNkgxNy41VjE0LjVDMTcuNSAxMy43IDE4LjIgMTMuMiAxOSAxMy4yUzIwLjUgMTMuNyAyMC41IDE0LjVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoM0xvY2tPcGVuID0gXCJNMTQuMiAxMy41VjE0Ljc0QzEzLjUgMTUuMzQgMTMgMTYuMjQgMTMgMTcuMlYyMC4yNEwxMiAyMS41QzcuODggMTYuMzcgNC4zOSAxMi4wNiAuMzY1IDdDMy42OSA0LjQxIDcuNzggMyAxMiAzQzE2LjIgMyAyMC4zMSA0LjQxIDIzLjY0IDdMMjEuNSA5LjY5QzIwLjg2IDkuMzMgMjAuMTcgOS4xMSAxOS40MiA5LjA0TDIwLjcgNy40NUMxOC4wOCA1Ljg2IDE1LjA2IDUgMTIgNVM1LjkgNS44NSAzLjI2IDcuNDRMNS4yIDkuODRDNi42NyA5IDkgOCAxMiA4QzE0LjE4IDggMTYuMDggOC41OCAxNy41MyA5LjI1QzE1LjYzIDkuODUgMTQuMiAxMS41NCAxNC4yIDEzLjVNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoNCA9IFwiTTEyLDNDNy43OSwzIDMuNyw0LjQxIDAuMzgsN0M0LjQxLDEyLjA2IDcuODksMTYuMzcgMTIsMjEuNUMxNi4wOCwxNi40MiAyMC4yNCwxMS4yNCAyMy42NSw3QzIwLjMyLDQuNDEgMTYuMjIsMyAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aDRBbGVydCA9IFwiTTEyIDNDNy44IDMgMy43IDQuNCAuNCA3QzQuNCAxMi4xIDcuOSAxNi40IDEyIDIxLjVDMTQuNCAxOC41IDE2LjcgMTUuNyAxOSAxMi44VjhIMjIuOEMyMyA3LjcgMjMuNCA3LjMgMjMuNiA3QzIwLjMgNC40IDE2LjIgMyAxMiAzTTIxIDEwVjE2SDIzVjEwTTIxIDE4VjIwSDIzVjE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoNExvY2sgPSBcIk0xNC4yIDE0LjVWMTQuNzRDMTMuNSAxNS4zNCAxMyAxNi4yNCAxMyAxNy4yVjIwLjI0TDEyIDIxLjVDNy44OCAxNi4zNyA0LjM5IDEyLjA2IC4zNjUgN0MzLjY5IDQuNDEgNy43OCAzIDEyIDNDMTYuMiAzIDIwLjMxIDQuNDEgMjMuNjQgN0wyMC45MSAxMC4zOUMyMC4zMiAxMC4xNCAxOS42OCAxMCAxOSAxMEMxNi40IDEwIDE0LjIgMTIuMDYgMTQuMiAxNC41TTIzIDE3LjNWMjAuOEMyMyAyMS40IDIyLjQgMjIgMjEuNyAyMkgxNi4yQzE1LjYgMjIgMTUgMjEuNCAxNSAyMC43VjE3LjJDMTUgMTYuNiAxNS42IDE2IDE2LjIgMTZWMTQuNUMxNi4yIDEzLjEgMTcuNiAxMiAxOSAxMlMyMS44IDEzLjEgMjEuOCAxNC41VjE2QzIyLjQgMTYgMjMgMTYuNiAyMyAxNy4zTTIwLjUgMTQuNUMyMC41IDEzLjcgMTkuOCAxMy4yIDE5IDEzLjJTMTcuNSAxMy43IDE3LjUgMTQuNVYxNkgyMC41VjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoNExvY2tPcGVuID0gXCJNMTQuMiAxMy41VjE0Ljc0QzEzLjUgMTUuMzQgMTMgMTYuMjQgMTMgMTcuMlYyMC4yNEwxMiAyMS41QzcuODggMTYuMzcgNC4zOSAxMi4wNiAuMzY1IDdDMy42OSA0LjQxIDcuNzggMyAxMiAzQzE2LjIgMyAyMC4zMSA0LjQxIDIzLjY0IDdMMjEuNSA5LjY5QzIwLjc1IDkuMjYgMTkuOSA5IDE5IDlDMTYuNCA5IDE0LjIgMTEuMDYgMTQuMiAxMy41TTIxLjggMTZIMTcuNVYxMy41QzE3LjUgMTIuNyAxOC4yIDEyLjIgMTkgMTIuMlMyMC41IDEyLjcgMjAuNSAxMy41VjE0SDIxLjhWMTMuNUMyMS44IDEyLjEgMjAuNCAxMSAxOSAxMVMxNi4yIDEyLjEgMTYuMiAxMy41VjE2QzE1LjYgMTYgMTUgMTYuNiAxNSAxNy4yVjIwLjdDMTUgMjEuNCAxNS42IDIyIDE2LjIgMjJIMjEuN0MyMi40IDIyIDIzIDIxLjQgMjMgMjAuOFYxNy4zQzIzIDE2LjYgMjIuNCAxNiAyMS44IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aEFsZXJ0T3V0bGluZSA9IFwiTTEyIDNDNy44IDMgMy43IDQuNCAuNCA3QzQuMyAxMS44IDguMiAxNi43IDEyIDIxLjVDMTQuMyAxOC42IDE2LjcgMTUuNyAxOSAxMi44VjkuNkwxMiAxOC4zTDMuMyA3LjRDNS45IDUuOCA4LjkgNSAxMiA1QzE1LjEgNSAxOC4xIDUuOSAyMC43IDcuNEwyMC4zIDhIMjIuOUMyMy4yIDcuNyAyMy40IDcuMyAyMy43IDdDMjAuMyA0LjQgMTYuMiAzIDEyIDNNMjEgMTBWMTZIMjNWMTBNMjEgMThWMjBIMjNWMThcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGhMb2NrT3Blbk91dGxpbmUgPSBcIk0yMy42NSA3SDIzLjY0QzIyLjkyIDcuOSAyMi4yIDguNzkgMjEuNSA5LjY5QzIwLjg3IDkuMzMgMjAuMTcgOS4xMSAxOS40MyA5LjA0TDIwLjcxIDcuNDVDMTguMDkgNS44NiAxNS4wNyA1IDEyIDVDOC45MSA1IDUuOSA1Ljg1IDMuMjcgNy40NEwxMiAxOC4zTDEzIDE3QzEzIDE3LjA4IDEzIDE3LjE0IDEzIDE3LjJWMjAuMjVMMTIgMjEuNUM4LjEzIDE2LjY2IDQuMjQgMTEuODMgLjM1NSA3SC4zNzVDMy43IDQuNDEgNy43OSAzIDEyIDNDMTYuMjIgMyAyMC4zMiA0LjQxIDIzLjY1IDdNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoTG9ja091dGxpbmUgPSBcIk0yMy42NSA3SDIzLjY0TDIwLjkxIDEwLjM5QzIwLjMyIDEwLjE0IDE5LjY4IDEwIDE5IDEwQzE4Ljg3IDEwIDE4Ljc1IDEwLjAzIDE4LjYzIDEwLjA0TDIwLjcxIDcuNDVDMTguMDkgNS44NiAxNS4wNyA1IDEyIDVDOC45MSA1IDUuOSA1Ljg1IDMuMjcgNy40NEwxMiAxOC4zTDEzIDE3QzEzIDE3LjA4IDEzIDE3LjE0IDEzIDE3LjJWMjAuMjVMMTIgMjEuNUM4LjEzIDE2LjY2IDQuMjQgMTEuODMgLjM1NSA3SC4zNzVDMy43IDQuNDEgNy43OSAzIDEyIDNDMTYuMjIgMyAyMC4zMiA0LjQxIDIzLjY1IDdNMjMgMTcuM1YyMC44QzIzIDIxLjQgMjIuNCAyMiAyMS43IDIySDE2LjJDMTUuNiAyMiAxNSAyMS40IDE1IDIwLjdWMTcuMkMxNSAxNi42IDE1LjYgMTYgMTYuMiAxNlYxNC41QzE2LjIgMTMuMSAxNy42IDEyIDE5IDEyUzIxLjggMTMuMSAyMS44IDE0LjVWMTZDMjIuNCAxNiAyMyAxNi42IDIzIDE3LjNNMjAuNSAxNC41QzIwLjUgMTMuNyAxOS44IDEzLjIgMTkgMTMuMlMxNy41IDEzLjcgMTcuNSAxNC41VjE2SDIwLjVWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGhPZmYgPSBcIk0zLjI3LDEuNDRMMiwyLjcyTDQuMDUsNC43N0MyLjc1LDUuMzcgMS41LDYuMTEgMC4zOCw3QzQuNDEsMTIuMDYgMTIsMjEuNSAxMiwyMS41TDE1LjkxLDE2LjYzTDE5LjIzLDE5Ljk1TDIwLjUsMTguNjhNMTIsM0MxMC42LDMgOS4yMSwzLjE3IDcuODYsMy41TDE4LjE4LDEzLjgxQzIwLDExLjUgMjIuMDUsOSAyMy42NSw3QzIwLjMyLDQuNDEgMTYuMjIsMyAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aE9mZk91dGxpbmUgPSBcIk0zLjI3LDEuNDRMMiwyLjcyTDQuMDUsNC43N0MyLjc1LDUuMzcgMS41LDYuMTEgMC4zOCw3QzQuMiwxMS44IDguMTQsMTYuNjcgMTIsMjEuNUwxNS45MSwxNi42M0wxOS4yMywxOS45NUwyMC41LDE4LjY4QzE0Ljg3LDEzLjA0IDMuMjcsMS40NCAzLjI3LDEuNDRNMTIsM0MxMC42LDMgOS4yMSwzLjE3IDcuODYsMy41TDkuNTYsNS4xOUMxMC4zNyw1LjA3IDExLjE4LDUgMTIsNUMxNS4wNyw1IDE4LjA5LDUuODYgMjAuNzEsNy40NUwxNi43NiwxMi4zOEwxOC4xOCwxMy44QzIwLjA4LDExLjQzIDIyLDkgMjMuNjUsN0MyMC4zMiw0LjQxIDE2LjIyLDMgMTIsM001LjU3LDYuMjlMMTQuNSwxNS4yMUwxMiwxOC4zTDMuMjcsNy40NEM0LDcgNC43OCw2LjYxIDUuNTcsNi4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGhPdXRsaW5lID0gXCJNMTIsM0M3Ljc5LDMgMy43LDQuNDEgMC4zOCw3SDAuMzZDNC4yNCwxMS44MyA4LjEzLDE2LjY2IDEyLDIxLjVDMTUuODksMTYuNjYgMTkuNzcsMTEuODMgMjMuNjQsN0gyMy42NUMyMC4zMiw0LjQxIDE2LjIyLDMgMTIsM00xMiw1QzE1LjA3LDUgMTguMDksNS44NiAyMC43MSw3LjQ1TDEyLDE4LjNMMy4yNyw3LjQ0QzUuOSw1Ljg1IDguOTIsNSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTeW5jID0gXCJNMTIgNkM4LjYyIDYgNS41IDcuMTIgMyA5TDEuMiA2LjZDNC4yMSA0LjM0IDcuOTUgMyAxMiAzUzE5Ljc5IDQuMzQgMjIuOCA2LjZMMjEgOUMxOC41IDcuMTIgMTUuMzggNiAxMiA2TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4yNiAxOS4zMkMxMy4xIDE4Ljc0IDEzIDE4LjEzIDEzIDE3LjVDMTMgMTYuNjkgMTMuMTYgMTUuOTEgMTMuNDMgMTUuMTlDMTIuOTcgMTUuMDggMTIuNSAxNSAxMiAxNU0xNS4yMyAxMi42MUMxNi4xOSAxMS43NyAxNy4zOCAxMS4yMiAxOC43IDExLjA1QzE2Ljc4IDkuNzYgMTQuNSA5IDEyIDlDOS4zIDkgNi44MSA5Ljg5IDQuOCAxMS40TDYuNiAxMy44QzguMSAxMi42NyA5Ljk3IDEyIDEyIDEyQzEzLjE0IDEyIDE0LjIzIDEyLjIyIDE1LjIzIDEyLjYxTTE5IDIwQzE3LjYyIDIwIDE2LjUgMTguODggMTYuNSAxNy41QzE2LjUgMTcuMSAxNi41OSAxNi43MiAxNi43NiAxNi4zOEwxNS42NyAxNS4yOUMxNS4yNSAxNS45MiAxNSAxNi42OCAxNSAxNy41QzE1IDE5LjcxIDE2Ljc5IDIxLjUgMTkgMjEuNVYyM0wyMS4yNSAyMC43NUwxOSAxOC41VjIwTTE5IDEzLjVWMTJMMTYuNzUgMTQuMjVMMTkgMTYuNVYxNUMyMC4zOCAxNSAyMS41IDE2LjEyIDIxLjUgMTcuNUMyMS41IDE3LjkgMjEuNDEgMTguMjggMjEuMjQgMTguNjJMMjIuMzMgMTkuNzFDMjIuNzUgMTkuMDggMjMgMTguMzIgMjMgMTcuNUMyMyAxNS4yOSAyMS4yMSAxMy41IDE5IDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lraXBlZGlhID0gXCJNMTQuOTcsMTguOTVMMTIuNDEsMTIuOTJDMTEuMzksMTQuOTEgMTAuMjcsMTcgOS4zMSwxOC45NUM5LjMsMTguOTYgOC44NCwxOC45NSA4Ljg0LDE4Ljk1QzcuMzcsMTUuNSA1Ljg1LDEyLjEgNC4zNyw4LjY4QzQuMDMsNy44NCAyLjgzLDYuNSAyLDYuNUMyLDYuNCAyLDYuMTggMiw2LjA1SDcuMDZWNi41QzYuNDYsNi41IDUuNDQsNi45IDUuNyw3LjU1QzYuNDIsOS4wOSA4Ljk0LDE1LjA2IDkuNjMsMTYuNThDMTAuMSwxNS42NCAxMS40MywxMy4xNiAxMiwxMi4xMUMxMS41NSwxMS4yMyAxMC4xMyw3LjkzIDkuNzEsNy4xMUM5LjM5LDYuNTcgOC41OCw2LjUgNy45Niw2LjVDNy45Niw2LjM1IDcuOTcsNi4yNSA3Ljk2LDYuMDZMMTIuNDIsNi4wN1Y2LjQ3QzExLjgxLDYuNSAxMS4yNCw2LjcxIDExLjUsNy4yOUMxMi4xLDguNTMgMTIuNDUsOS40MiAxMywxMC41N0MxMy4xNywxMC4yMyAxNC4wNyw4LjM4IDE0LjUsNy40MUMxNC43Niw2Ljc2IDE0LjM3LDYuNSAxMy4yOSw2LjVDMTMuMyw2LjM4IDEzLjMsNi4xNyAxMy4zLDYuMDdDMTQuNjksNi4wNiAxNi43OCw2LjA2IDE3LjE1LDYuMDVWNi40N0MxNi40NCw2LjUgMTUuNzEsNi44OCAxNS4zMyw3LjQ2TDEzLjUsMTEuM0MxMy42OCwxMS44MSAxNS40NiwxNS43NiAxNS42NSwxNi4yTDE5LjUsNy4zN0MxOS4yLDYuNjUgMTguMzQsNi41IDE4LDYuNUMxOCw2LjM3IDE4LDYuMiAxOCw2LjA1TDIyLDYuMDhWNi4xTDIyLDYuNUMyMS4xMiw2LjUgMjAuNTcsNyAyMC4yNSw3Ljc1QzE5LjQ1LDkuNTQgMTcsMTUuMjQgMTUuNCwxOC45NUMxNS40LDE4Ljk1IDE0Ljk3LDE4Ljk1IDE0Ljk3LDE4Ljk1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRUdXJiaW5lID0gXCJNMTMuMzMsMTEuNjdMMTYuMjEsMTQuNThDMTcuNjIsMTMuMTYgMTYuMjEsMTEuNzUgMTYuMjEsMTEuNzVMMTQuNzIsMTAuMjRDMTQuOSw5Ljg2IDE1LDkuNDQgMTUsOUMxNSw3Ljk1IDE0LjQ2LDcuMDMgMTMuNjQsNi41TDE1LDIuMTFDMTMuMDksMS41MyAxMi41LDMuNDQgMTIuNSwzLjQ0TDExLjY5LDYuMDNDMTAuNDYsNi4xNiA5LjQ2LDcgOS4xMyw4LjE4TDQuNjcsOS42M0M1LjMxLDExLjUzIDcuMiwxMC45IDcuMiwxMC45TDkuMjcsMTAuMjNDOS42MSwxMC45NyAxMC4yMywxMS41NCAxMSwxMS44MlYxOUMxMSwxOSA5LDE5IDksMjFDOSwyMS41IDksMjEuODEgOSwyMkgxNVYyMUMxNSwyMSAxNSwxOSAxMywxOVYxMS44MkMxMy4xMiwxMS43OCAxMy4yMywxMS43MiAxMy4zMywxMS42N00xMC41LDlBMS41LDEuNSAwIDAsMSAxMiw3LjVBMS41LDEuNSAwIDAsMSAxMy41LDlBMS41LDEuNSAwIDAsMSAxMiwxMC41QTEuNSwxLjUgMCAwLDEgMTAuNSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd0Nsb3NlID0gXCJNMTMuNDYsMTJMMTksMTcuNTRWMTlIMTcuNTRMMTIsMTMuNDZMNi40NiwxOUg1VjE3LjU0TDEwLjU0LDEyTDUsNi40NlY1SDYuNDZMMTIsMTAuNTRMMTcuNTQsNUgxOVY2LjQ2TDEzLjQ2LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd0Nsb3NlZCA9IFwiTTYsMTFIMTBWOUgxNFYxMUgxOFY0SDZWMTFNMTgsMTNINlYyMEgxOFYxM002LDJIMThBMiwyIDAgMCwxIDIwLDRWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd0Nsb3NlZFZhcmlhbnQgPSBcIk0yMSAyMFYySDNWMjBIMVYyM0gyM1YyME0xOSA0VjExSDEzVjRNNSA0SDExVjExSDVNNSAyMFYxM0gxMVYyME0xMyAyMFYxM0gxOVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kb3dNYXhpbWl6ZSA9IFwiTTQsNEgyMFYyMEg0VjRNNiw4VjE4SDE4VjhINlpcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kb3dNaW5pbWl6ZSA9IFwiTTIwLDE0SDRWMTBIMjBcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kb3dPcGVuID0gXCJNNiw4SDEwVjZIMTRWOEgxOFY0SDZWOE0xOCwxMEg2VjE1SDE4VjEwTTYsMjBIMThWMTdINlYyME02LDJIMThBMiwyIDAgMCwxIDIwLDRWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd09wZW5WYXJpYW50ID0gXCJNMjEgMjBWMkgzVjIwSDFWMjNIMjNWMjBNMTkgNFYxMUgxN1Y0TTUgNEg3VjExSDVNNSAyMFYxM0g3VjIwTTkgMjBWNEgxNVYyME0xNyAyMFYxM0gxOVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kb3dSZXN0b3JlID0gXCJNNCw4SDhWNEgyMFYxNkgxNlYyMEg0VjhNMTYsOFYxNEgxOFY2SDEwVjhIMTZNNiwxMlYxOEgxNFYxMkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd1NodXR0ZXIgPSBcIk0zIDRIMjFWOEgxOVYyMEgxN1Y4SDdWMjBINVY4SDNWNE04IDlIMTZWMTFIOFY5TTggMTJIMTZWMTRIOFYxMk04IDE1SDE2VjE3SDhWMTVNOCAxOEgxNlYyMEg4VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd1NodXR0ZXJBbGVydCA9IFwiTTIgNEgyMFY4SDE4VjIwSDE2VjhINlYyMEg0VjhIMlY0TTcgOUgxNVYxMUg3VjlNNyAxMkgxNVYxNEg3VjEyTTIwIDE5VjE3SDIyVjE5SDIwTTIwIDE1VjEwSDIyVjE1SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd1NodXR0ZXJPcGVuID0gXCJNMyA0SDIxVjhIMTlWMjBIMTdWOEg3VjIwSDVWOEgzVjRNOCA5SDE2VjExSDhWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kc29jayA9IFwiTTcgNVYxM0wyMiAxMVY3TDcgNU0xMCA2LjkxTDEzIDcuMzFWMTAuNjlMMTAgMTEuMDlWNi45MU0xNiA3LjcxTDE5IDguMTFWOS44OUwxNiAxMC4yOVY3LjcxTTUgMTBWMTFINlYxMkg1VjIxSDNWNEMzIDMuNDUgMy40NSAzIDQgM1M1IDMuNDUgNSA0VjZINlY3SDVWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lwZXIgPSBcIk0xMiw0QzUsNCAyLDkgMiw5TDksMTZDOSwxNiA5LjUsMTUuMSAxMC40LDE0LjVMMTAuNywxNi41QzEwLjMsMTYuOCAxMCwxNy40IDEwLDE4QTIsMiAwIDAsMCAxMiwyMEEyLDIgMCAwLDAgMTQsMThDMTQsMTcuMSAxMy41LDE2LjQgMTIuNywxNi4xTDEyLjMsMTRDMTQuMSwxNC4yIDE1LDE2IDE1LDE2TDIyLDlDMjIsOSAxOSw0IDEyLDRNMTUuMSwxMy4xQzE0LjMsMTIuNSAxMy4zLDEyIDEyLDEyTDExLDYuMUMxMS4zLDYgMTEuNyw2IDEyLDZDMTUuNyw2IDE4LjEsNy43IDE5LjMsOC45TDE1LjEsMTMuMU04LjksMTMuMUw0LjcsOC45QzUuNSw4IDcsNyA5LDYuNEwxMCwxMi40QzkuNiwxMi42IDkuMiwxMi44IDguOSwxMy4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpcGVyV2FzaCA9IFwiTTEzLDZDMTMsNS43IDEzLjEsNC42IDEzLjgsMy44TDEyLDIuNEwxMC4yLDMuOUMxMC45LDQuNiAxMSw1LjcgMTEsNkM0LjcsNi40IDIsMTEgMiwxMUw5LDE4QzksMTggOS43LDE2LjcgMTEsMTYuMlYxOC4zQzEwLjQsMTguNiAxMCwxOS4zIDEwLDIwQTIsMiAwIDAsMCAxMiwyMkEyLDIgMCAwLDAgMTQsMjBDMTQsMTkuMyAxMy42LDE4LjYgMTMsMTguM1YxNi4yQzE0LjMsMTYuNyAxNSwxOCAxNSwxOEwyMiwxMUMyMiwxMSAxOS4zLDYuNSAxMyw2TTExLDE0LjFDMTAuMiwxNC4zIDkuNSwxNC42IDguOSwxNS4xTDQuNywxMC45QzUuOCw5LjggNy44LDguMyAxMSw4LjFWMTQuMU0xNS4xLDE1LjFDMTQuNSwxNC43IDEzLjgsMTQuMyAxMywxNC4xVjguMUMxNi4yLDguNCAxOC4yLDkuOCAxOS4zLDEwLjlMMTUuMSwxNS4xTTE4LDEuM0wxNy4zLDMuMkMxNi42LDIuOSAxNS41LDIuOSAxNC43LDMuMkwxNCwxLjNDMTUuMiwwLjkgMTYuOCwwLjkgMTgsMS4zTTIxLDZIMTlDMTksNiAxOSw0LjcgMTguMiwzLjlMMTkuNywyLjZDMjEsNCAyMSw1LjkgMjEsNk00LjIsMi42TDUuNywzLjlDNSw0LjcgNSw2IDUsNkgzQzMsNS45IDMsNCA0LjIsMi42TTEwLDEuM0w5LjMsMy4yQzguNiwyLjkgNy41LDIuOSA2LjcsMy4yTDYsMS4zQzcuMiwwLjkgOC44LDAuOSAxMCwxLjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2l6YXJkSGF0ID0gXCJNMjEgMjJIM1YyMEgyMVYyMk0xOSAxOUg1TDExLjEgMi42QzExLjMgMi4yIDExLjYgMiAxMiAyTDE4IDVIMTMuOUwxOSAxOU0xMCA3LjVMMTEuMDQgNy45N0wxMS41IDlMMTEuOTcgNy45N0wxMyA3LjVMMTEuOTcgNy4wM0wxMS41IDZMMTEuMDQgNy4wM0wxMCA3LjVNMTMgMTVMMTAuOTQgMTQuMDdMMTAgMTJMOS4wNyAxNC4wN0w3IDE1TDkuMDcgMTUuOTNMMTAgMThMMTAuOTQgMTUuOTNMMTMgMTVNMTMuOTcgMTEuOTdMMTUgMTEuNUwxMy45NyAxMS4wM0wxMy41IDEwTDEzLjA0IDExLjAzTDEyIDExLjVMMTMuMDQgMTEuOTdMMTMuNSAxM0wxMy45NyAxMS45N00xNS45NyAxNS45N0wxNyAxNS41TDE1Ljk3IDE1LjAzTDE1LjUgMTRMMTUuMDQgMTUuMDNMMTQgMTUuNUwxNS4wNCAxNS45N0wxNS41IDE3TDE1Ljk3IDE1Ljk3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdvcmRwcmVzcyA9IFwiTTMuNDIsMTJDMy40MiwxMC43NiAzLjY5LDkuNTggNC4xNiw4LjVMOC4yNiwxOS43MkM1LjM5LDE4LjMzIDMuNDIsMTUuNCAzLjQyLDEyTTE3Ljc5LDExLjU3QzE3Ljc5LDEyLjMgMTcuNSwxMy4xNSAxNy4xNCwxNC4zNEwxNi4yOCwxNy4yTDEzLjE4LDhMMTQuMTYsNy45QzE0LjYzLDcuODQgMTQuNTcsNy4xNiAxNC4xMSw3LjE5QzE0LjExLDcuMTkgMTIuNzIsNy4zIDExLjgyLDcuM0w5LjU2LDcuMTlDOS4xLDcuMTYgOS4wNSw3Ljg3IDkuNSw3LjlMMTAuNDEsOEwxMS43NSwxMS42NEw5Ljg3LDE3LjI3TDYuNzQsOEw3LjczLDcuOUM4LjE5LDcuODQgOC4xMyw3LjE2IDcuNjcsNy4xOUM3LjY3LDcuMTkgNi4yOCw3LjMgNS4zOCw3LjNMNC44Myw3LjI5QzYuMzcsNC45NiA5LDMuNDIgMTIsMy40MkMxNC4yMywzLjQyIDE2LjI3LDQuMjggMTcuNzksNS42N0gxNy42OEMxNi44NCw1LjY3IDE2LjI0LDYuNCAxNi4yNCw3LjE5QzE2LjI0LDcuOSAxNi42NSw4LjUgMTcuMDgsOS4yQzE3LjQxLDkuNzcgMTcuNzksMTAuNSAxNy43OSwxMS41N00xMi4xNSwxMi43NUwxNC43OSwxOS45N0wxNC44NSwyMC4wOUMxMy45NiwyMC40MSAxMywyMC41OCAxMiwyMC41OEMxMS4xNiwyMC41OCAxMC4zNSwyMC40NiA5LjU4LDIwLjIzTDEyLjE1LDEyLjc1TTE5LjUzLDcuODhDMjAuMiw5LjExIDIwLjU4LDEwLjUgMjAuNTgsMTJDMjAuNTgsMTUuMTYgMTguODYsMTcuOTMgMTYuMzEsMTkuNDFMMTguOTMsMTEuODRDMTkuNDIsMTAuNjIgMTkuNTksOS42NCAxOS41OSw4Ljc3TDE5LjUzLDcuODhNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsMjEuNTRDMTcuMjYsMjEuNTQgMjEuNTQsMTcuMjYgMjEuNTQsMTJDMjEuNTQsNi43NCAxNy4yNiwyLjQ2IDEyLDIuNDZDNi43NCwyLjQ2IDIuNDYsNi43NCAyLjQ2LDEyQzIuNDYsMTcuMjYgNi43NCwyMS41NCAxMiwyMS41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlXcmFwID0gXCJNMjEsNUgzVjdIMjFWNU0zLDE5SDEwVjE3SDNWMTlNMywxM0gxOEMxOSwxMyAyMCwxMy40MyAyMCwxNUMyMCwxNi41NyAxOSwxNyAxOCwxN0gxNlYxNUwxMiwxOEwxNiwyMVYxOUgxOEMyMC45NSwxOSAyMiwxNy43MyAyMiwxNUMyMiwxMi4yOCAyMSwxMSAxOCwxMUgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdyYXBEaXNhYmxlZCA9IFwiTTE2LDdIM1Y1SDE2VjdNMywxOUgxNlYxN0gzVjE5TTIyLDEyTDE4LDlWMTFIM1YxM0gxOFYxNUwyMiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlXcmVuY2ggPSBcIk0yMi43LDE5TDEzLjYsOS45QzE0LjUsNy42IDE0LDQuOSAxMi4xLDNDMTAuMSwxIDcuMSwwLjYgNC43LDEuN0w5LDZMNiw5TDEuNiw0LjdDMC40LDcuMSAwLjksMTAuMSAyLjksMTIuMUM0LjgsMTQgNy41LDE0LjUgOS44LDEzLjZMMTguOSwyMi43QzE5LjMsMjMuMSAxOS45LDIzLjEgMjAuMywyMi43TDIyLjYsMjAuNEMyMy4xLDIwIDIzLjEsMTkuMyAyMi43LDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdyZW5jaE91dGxpbmUgPSBcIk0yMi42MSwxOUwxMy41Myw5LjkxQzE0LjQ2LDcuNTcgMTQsNC44MSAxMi4wOSwyLjkxQzkuNzksMC42MSA2LjIxLDAuNCAzLjY2LDIuMjZMNy41LDYuMTFMNi4wOCw3LjVMMi4yNSwzLjY5QzAuMzksNi4yMyAwLjYsOS44MiAyLjksMTIuMTFDNC43NiwxMy45NyA3LjQ3LDE0LjQ2IDkuNzksMTMuNTlMMTguOSwyMi43QzE5LjI5LDIzLjA5IDE5LjkyLDIzLjA5IDIwLjMxLDIyLjdMMjIuNjEsMjAuNEMyMywyMCAyMywxOS4zOSAyMi42MSwxOU0xOS42MSwyMC41OUwxMC4xNSwxMS4xM0M5LjU0LDExLjU4IDguODYsMTEuODUgOC4xNSwxMS45NUM2Ljc5LDEyLjE1IDUuMzYsMTEuNzQgNC4zMiwxMC43QzMuMzcsOS43NiAyLjkzLDguNSAzLDcuMjZMNi4wOSwxMC4zNUwxMC4zMyw2LjExTDcuMjQsM0M4LjUsMi45NSA5LjczLDMuMzkgMTAuNjgsNC4zM0MxMS43Niw1LjQxIDEyLjE3LDYuOSAxMS45Miw4LjI5QzExLjgsOSAxMS41LDkuNjYgMTEuMDQsMTAuMjVMMjAuNSwxOS43TDE5LjYxLDIwLjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVhhbWFyaW4gPSBcIk0yMi43NSwxMS4wN0MyMi45MSwxMS4zNSAyMywxMS42NyAyMywxMkMyMywxMi4zMyAyMi45MSwxMi42NSAyMi43NSwxMi45M0wxOC4wOCwyMUMxNy43MiwyMS42MiAxNy4wNiwyMiAxNi4zNSwyMkg3LjY1QzYuOTQsMjIgNi4yOCwyMS42MiA1LjkyLDIxTDEuMjUsMTIuOTNDMS4wOSwxMi42NSAxLDEyLjMzIDEsMTJDMSwxMS42NyAxLjA5LDExLjM1IDEuMjUsMTEuMDdMNS45MiwzQzYuMjgsMi4zOCA2Ljk0LDIgNy42NSwySDE2LjM1QzE3LjA2LDIgMTcuNzIsMi4zOCAxOC4wOCwzTDIyLjc1LDExLjA3TTEyLDEyVjExLjlMOS40Miw3LjFMOS4yNSw3SDcuNjZMNy41LDcuMVY3LjNMMTAsMTJMNy41LDE2LjdWMTYuOUw3LjY2LDE3SDkuMjVMOS40MiwxNi45TDEyLDEyLjFWMTJMMTIuMDMsMTIuMUwxNC41OCwxNi45TDE0Ljc1LDE3SDE2LjM0TDE2LjUsMTYuOVYxNi43TDE0LDEyTDE2LjUsNy4zVjcuMUwxNi4zNCw3SDE0Ljc1TDE0LjU4LDcuMUwxMi4wMywxMS45TDEyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVhhbWFyaW5PdXRsaW5lID0gXCJNMTIsMTJMMTIuMDMsMTEuOUwxNC41OCw3LjFMMTQuNzUsN0gxNi4zNEwxNi41LDcuMVY3LjNMMTQsMTJMMTYuNSwxNi43VjE2LjlMMTYuMzQsMTdIMTQuNzVMMTQuNTgsMTYuOUwxMi4wMywxMi4xTDEyLDEyVjEyLjFMOS40MiwxNi45TDkuMjUsMTdINy42Nkw3LjUsMTYuOVYxNi43TDEwLDEyTDcuNSw3LjNWNy4xTDcuNjYsN0g5LjI1TDkuNDIsNy4xTDEyLDExLjlWMTJNMjIuNzUsMTEuMDdDMjIuOTEsMTEuMzUgMjMsMTEuNjcgMjMsMTJDMjMsMTIuMzMgMjIuOTEsMTIuNjUgMjIuNzUsMTIuOTNMMTguMDgsMjFDMTcuNzIsMjEuNjIgMTcuMDYsMjIgMTYuMzUsMjJINy42NUM2Ljk0LDIyIDYuMjgsMjEuNjIgNS45MiwyMUwxLjI1LDEyLjkzQzEuMDksMTIuNjUgMSwxMi4zMyAxLDEyQzEsMTEuNjcgMS4wOSwxMS4zNSAxLjI1LDExLjA3TDUuOTIsM0M2LjI4LDIuMzggNi45NCwyIDcuNjUsMkgxNi4zNUMxNy4wNiwyIDE3LjcyLDIuMzggMTguMDgsM0wyMi43NSwxMS4wN00yMC44LDExLjI1TDE2Ljk3LDQuOEMxNi42OCw0LjMgMTYuMTQsNCAxNS41Niw0SDguNDRDNy44Niw0IDcuMzIsNC4zIDcuMDMsNC44TDMuMiwxMS4yNUMzLjA3LDExLjUgMywxMS43NCAzLDEyQzMsMTIuMjYgMy4wNywxMi41IDMuMiwxMi43NUw3LjAzLDE5LjJDNy4zMiwxOS43IDcuODYsMjAgOC40NCwyMEgxNS41NkMxNi4xNCwyMCAxNi42OCwxOS43IDE2Ljk3LDE5LjJMMjAuOCwxMi43NUMyMC45MywxMi41IDIxLDEyLjI2IDIxLDEyQzIxLDExLjc0IDIwLjkzLDExLjUgMjAuOCwxMS4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlYaW5nID0gXCJNNC44LDNDMy44LDMgMywzLjggMyw0LjhWMTkuMkMzLDIwLjIgMy44LDIxIDQuOCwyMUgxOS4yQzIwLjIsMjEgMjEsMjAuMiAyMSwxOS4yVjQuOEMyMSwzLjggMjAuMiwzIDE5LjIsM00xNi4wNyw1SDE4LjExQzE4LjIzLDUgMTguMzMsNS4wNCAxOC4zNyw1LjEzQzE4LjQzLDUuMjIgMTguNDMsNS4zMyAxOC4zNyw1LjQ0TDEzLjksMTMuMzZMMTYuNzUsMTguNTZDMTYuODEsMTguNjcgMTYuODEsMTguNzggMTYuNzUsMTguODdDMTYuNywxOC45NSAxNi42MSwxOSAxNi41LDE5SDE0LjQ3QzE0LjE2LDE5IDE0LDE4Ljc5IDEzLjkxLDE4LjYxTDExLjA0LDEzLjM1QzExLjE4LDEzLjEgMTUuNTMsNS4zOSAxNS41Myw1LjM5QzE1LjY0LDUuMTkgMTUuNzcsNSAxNi4wNyw1TTcuMDksNy43Nkg5LjFDOS40MSw3Ljc2IDkuNTcsNy45NiA5LjY3LDguMTVMMTEuMDYsMTAuNTdDMTAuOTcsMTAuNzEgOC44OCwxNC40MiA4Ljg4LDE0LjQyQzguNzcsMTQuNjEgOC42MywxNC44MSA4LjMyLDE0LjgxSDYuM0M2LjE4LDE0LjgxIDYuMDksMTQuNzYgNi4wNCwxNC42N0M2LDE0LjU5IDYsMTQuNDcgNi4wNCwxNC4zNkw4LjE4LDEwLjU3TDYuODIsOC4yQzYuNzcsOC4wOSA2Ljc1LDggNi44MSw3Ljg5QzYuODYsNy44MSA2Ljk2LDcuNzYgNy4wOSw3Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVhtbCA9IFwiTTEyLjg5LDNMMTQuODUsMy40TDExLjExLDIxTDkuMTUsMjAuNkwxMi44OSwzTTE5LjU5LDEyTDE2LDguNDFWNS41OEwyMi40MiwxMkwxNiwxOC40MVYxNS41OEwxOS41OSwxMk0xLjU4LDEyTDgsNS41OFY4LjQxTDQuNDEsMTJMOCwxNS41OFYxOC40MUwxLjU4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVhtcHAgPSBcIk0xMiwxNS40QzkuNzUsMTMuMDkgOCw5LjU0IDgsNkMyLDQgOCw2IDIsNEMyLDkuNjUgNi4zMywxNC4xMSAxMC41NSwxNi42NkM5LjM4LDE3LjUgOC4xNSwxOCA3LDE4QzcsMTkgNywxOCA3LDE5QzguMiwxOSAxMC4wMywxOC40NiAxMiwxNy40NkMxMy45NywxOC40NiAxNS44LDE5IDE3LDE5QzE3LDE4IDE3LDE5IDE3LDE4QzE1Ljg1LDE4IDE0LjYyLDE3LjUgMTMuNDUsMTYuNjZDMTcuNjYsMTQuMTEgMjIsOS42NSAyMiw0QzE2LDYgMjIsNCAxNiw2QzE2LDkuNTQgMTQuMjUsMTMuMDkgMTIsMTUuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlZQ29tYmluYXRvciA9IFwiTTIsMkgyMlYyMkgyVjJNMTEuMjUsMTcuNUgxMi43NVYxMy4wNkwxNiw3SDE0LjVMMTIsMTEuNjZMOS41LDdIOEwxMS4yNSwxMy4wNlYxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVlhaG9vID0gXCJNMTAuNSA3LjU5TDguMTYgMTMuMkw1Ljg1IDcuNTlIMkw2LjI5IDE3LjIzTDQuNzUgMjAuN0g4LjVMMTQuMjQgNy41OUgxMC41TTE1IDEyLjczQzEzLjYzIDEyLjczIDEyLjU5IDEzLjc3IDEyLjU5IDE1QzEyLjU5IDE2LjE3IDEzLjU5IDE3LjE2IDE0LjkzIDE3LjE2QzE2LjMyIDE3LjE2IDE3LjM2IDE2LjEzIDE3LjM2IDE0LjlDMTcuMzYgMTMuNjkgMTYuMzYgMTIuNzMgMTUgMTIuNzNNMTcuNzIgMy4zTDEzLjg5IDExLjg5SDE4LjE3TDIyIDMuM0gxNy43MlpcIjtcclxuZXhwb3J0IHZhciBtZGlZZWFzdCA9IFwiTTE4LDE0QTQsNCAwIDAsMSAyMiwxOEE0LDQgMCAwLDEgMTgsMjJBNCw0IDAgMCwxIDE0LDE4TDE0LjA5LDE3LjE1QzE0LjA1LDE2LjQ1IDEzLjkyLDE1Ljg0IDEzLjU1LDE1LjVDMTMuMzUsMTUuMyAxMy4wNywxNS4xOSAxMi43NSwxNS4xM0MxMS43OSwxNS42OCAxMC42OCwxNiA5LjUsMTZBNi41LDYuNSAwIDAsMSAzLDkuNUE2LjUsNi41IDAgMCwxIDkuNSwzQTYuNSw2LjUgMCAwLDEgMTYsOS41QzE2LDEwLjY4IDE1LjY4LDExLjc5IDE1LjEzLDEyLjc1QzE1LjE5LDEzLjA3IDE1LjMsMTMuMzUgMTUuNSwxMy41NUMxNS44NCwxMy45MiAxNi40NSwxNC4wNSAxNy4xNSwxNC4wOUwxOCwxNE03LjUsMTBBMS41LDEuNSAwIDAsMSA5LDExLjVBMS41LDEuNSAwIDAsMSA3LjUsMTNBMS41LDEuNSAwIDAsMSA2LDExLjVBMS41LDEuNSAwIDAsMSA3LjUsMTBNOS41LDVDNyw1IDUsNyA1LDkuNUM1LDEyIDcsMTQgOS41LDE0QzEyLDE0IDE0LDEyIDE0LDkuNUMxNCw3IDEyLDUgOS41LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWWluWWFuZyA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTQsNCAwIDAsMSA4LDE2QTQsNCAwIDAsMSAxMiwxMkE0LDQgMCAwLDAgMTYsOEE0LDQgMCAwLDAgMTIsNE0xMiw2LjVBMS41LDEuNSAwIDAsMSAxMy41LDhBMS41LDEuNSAwIDAsMSAxMiw5LjVBMS41LDEuNSAwIDAsMSAxMC41LDhBMS41LDEuNSAwIDAsMSAxMiw2LjVNMTIsMTQuNUExLjUsMS41IDAgMCwwIDEwLjUsMTZBMS41LDEuNSAwIDAsMCAxMiwxNy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxNkExLjUsMS41IDAgMCwwIDEyLDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWW9nYSA9IFwiTTEzIDJDMTEuOSAyIDExIDIuOSAxMSA0QzExIDUuMTEgMTEuOSA2IDEzIDZDMTQuMTEgNiAxNSA1LjExIDE1IDRDMTUgMi45IDE0LjExIDIgMTMgMk00IDdWOUgxMFYxNUw0LjkzIDIwLjA3TDYuMzQgMjEuNUwxMy4wNiAxNC43N0wxNyAxNy4xM1YyMUgxOVYxNi41N0MxOSAxNi4yMSAxOC44MiAxNS44OSAxOC41IDE1LjcxTDE1IDEzLjZWOUgyMVY3SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWW91dHViZSA9IFwiTTEwLDE1TDE1LjE5LDEyTDEwLDlWMTVNMjEuNTYsNy4xN0MyMS42OSw3LjY0IDIxLjc4LDguMjcgMjEuODQsOS4wN0MyMS45MSw5Ljg3IDIxLjk0LDEwLjU2IDIxLjk0LDExLjE2TDIyLDEyQzIyLDE0LjE5IDIxLjg0LDE1LjggMjEuNTYsMTYuODNDMjEuMzEsMTcuNzMgMjAuNzMsMTguMzEgMTkuODMsMTguNTZDMTkuMzYsMTguNjkgMTguNSwxOC43OCAxNy4xOCwxOC44NEMxNS44OCwxOC45MSAxNC42OSwxOC45NCAxMy41OSwxOC45NEwxMiwxOUM3LjgxLDE5IDUuMiwxOC44NCA0LjE3LDE4LjU2QzMuMjcsMTguMzEgMi42OSwxNy43MyAyLjQ0LDE2LjgzQzIuMzEsMTYuMzYgMi4yMiwxNS43MyAyLjE2LDE0LjkzQzIuMDksMTQuMTMgMi4wNiwxMy40NCAyLjA2LDEyLjg0TDIsMTJDMiw5LjgxIDIuMTYsOC4yIDIuNDQsNy4xN0MyLjY5LDYuMjcgMy4yNyw1LjY5IDQuMTcsNS40NEM0LjY0LDUuMzEgNS41LDUuMjIgNi44Miw1LjE2QzguMTIsNS4wOSA5LjMxLDUuMDYgMTAuNDEsNS4wNkwxMiw1QzE2LjE5LDUgMTguOCw1LjE2IDE5LjgzLDUuNDRDMjAuNzMsNS42OSAyMS4zMSw2LjI3IDIxLjU2LDcuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWW91dHViZUdhbWluZyA9IFwiTTIyIDEzVjhMMTcgNUwxMiA4TDcgNUwyIDhWMTNMMTIgMTlMMjIgMTNNOSAxMUg3VjEzSDZWMTFINFYxMEg2VjhIN1YxMEg5VjExTTE1IDEzQzE0LjQ1IDEzIDE0IDEyLjU1IDE0IDEyUzE0LjQ1IDExIDE1IDExIDE2IDExLjQ1IDE2IDEyIDE1LjU1IDEzIDE1IDEzTTE4IDExQzE3LjQ1IDExIDE3IDEwLjU1IDE3IDEwUzE3LjQ1IDkgMTggOSAxOSA5LjQ1IDE5IDEwIDE4LjU1IDExIDE4IDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVlvdXR1YmVTdHVkaW8gPSBcIk0xMCwxNUwxNSwxMkwxMCw5VjE1TTE5LjQ1LDEzTDIxLjU2LDE0LjYzQzIxLjc4LDE0Ljc4IDIxLjgxLDE1IDIxLjY2LDE1LjI4TDE5LjY0LDE4Ljc1QzE5LjUsMTguOTcgMTkuMzEsMTkuMDMgMTkuMDMsMTguOTRMMTYuNTUsMTcuOTVDMTUuODksMTguNDIgMTUuMzMsMTguNzUgMTQuODYsMTguOTRMMTQuNSwyMS41NkMxNC40MiwyMS44NCAxNC4yNywyMiAxNCwyMkgxMEM5LjczLDIyIDkuNTgsMjEuODQgOS41LDIxLjU2TDkuMTQsMTguOTRDOC41NSwxOC42OSA4LDE4LjM2IDcuNDUsMTcuOTVMNC45NywxOC45NEM0LjY5LDE5LjAzIDQuNSwxOC45NyA0LjM2LDE4Ljc1TDIuMzQsMTUuMjhDMi4xOSwxNSAyLjIyLDE0Ljc4IDIuNDQsMTQuNjNMNC41NSwxM0M0LjUsMTIuNzcgNC41LDEyLjQ0IDQuNSwxMkM0LjUsMTEuNTYgNC41LDExLjIzIDQuNTUsMTFMMi40NCw5LjM4QzIuMjIsOS4yMiAyLjE5LDkgMi4zNCw4LjcyTDQuMzYsNS4yNUM0LjUsNS4wMyA0LjY5LDQuOTcgNC45Nyw1LjA2TDcuNDUsNi4wNUM4LjExLDUuNTggOC42Nyw1LjI1IDkuMTQsNS4wNkw5LjUsMi40NEM5LjU4LDIuMTYgOS43MywyIDEwLDJIMTRDMTQuMjcsMiAxNC40MiwyLjE2IDE0LjUsMi40NEwxNC44Niw1LjA2QzE1LjQ1LDUuMzEgMTYsNS42NCAxNi41NSw2LjA1TDE5LjAzLDUuMDZDMTkuMzEsNC45NyAxOS41LDUuMDMgMTkuNjQsNS4yNUwyMS42Niw4LjcyQzIxLjgxLDkgMjEuNzgsOS4yMiAyMS41Niw5LjM4TDE5LjQ1LDExQzE5LjUsMTEuMjMgMTkuNSwxMS41NiAxOS41LDEyQzE5LjUsMTIuNDQgMTkuNSwxMi43NyAxOS40NSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlZb3V0dWJlU3Vic2NyaXB0aW9uID0gXCJNMjAsOEg0VjZIMjBWOE0xOCwySDZWNEgxOFYyTTIyLDEyVjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjEyQTIsMiAwIDAsMSA0LDEwSDIwQTIsMiAwIDAsMSAyMiwxMk0xNiwxNkwxMCwxMi43M1YxOS4yNkwxNiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlZb3V0dWJlVHYgPSBcIk0yLjUsNC41SDIxLjVDMjIuMzQsNC41IDIzLDUuMTUgMjMsNlYxNy41QzIzLDE4LjM1IDIyLjM0LDE5IDIxLjUsMTlIMi41QzEuNjUsMTkgMSwxOC4zNSAxLDE3LjVWNkMxLDUuMTUgMS42NSw0LjUgMi41LDQuNU05LjcxLDguNVYxNUwxNS40MiwxMS43TDkuNzEsOC41TTE3LjI1LDIxSDYuNjVDNi4zNSwyMSA2LjE1LDIwLjggNi4xNSwyMC41QzYuMTUsMjAuMiA2LjM1LDIwIDYuNjUsMjBIMTcuMzVDMTcuNjUsMjAgMTcuODUsMjAuMiAxNy44NSwyMC41QzE3Ljg1LDIwLjggMTcuNTUsMjEgMTcuMjUsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWXVydCA9IFwiTTIyIDE0Ljg3VjIySDE0VjE2SDEwVjIySDJWMTQuODdDMiAxNC4zMyAyLjI5IDEzLjgzIDIuNzYgMTMuNTdMOC42NiAxMC4yQzguODggMTAuMDcgOS4xNCAxMCA5LjQgMTBIMTIuNVY5SDE0VjEwSDE0LjU5QzE0Ljg1IDEwIDE1LjExIDEwLjA3IDE1LjMzIDEwLjJMMjEuMjMgMTMuNTdDMjEuNzEgMTMuODQgMjIgMTQuMzMgMjIgMTQuODdNNy44NiA2LjI1SDkuNEMxMC43MyA2LjI1IDExLjkyIDYuOTUgMTIuNSA4SDE0QzEzLjYgNi4yIDEyIDQuODUgMTAuMSA0Ljg1VjMuMzVDMTEuMSAzLjM1IDExLjk1IDIuNSAxMS45NSAxLjVWMUg3Ljg2VjIuNUM2Ljg2IDIuNSA2IDMuMjMgNiA0LjI1UzYuODYgNi4yNSA3Ljg2IDYuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWldhdmUgPSBcIk0xNi4zLDEwLjU4QzEzLjE0LDEwLjU4IDEwLjYsMTMuMTMgMTAuNiwxNi4yOEMxMC42LDE5LjQzIDEzLjE1LDIyIDE2LjMsMjJDMTkuNDUsMjIgMjIsMTkuNDMgMjIsMTYuMjhDMjIsMTMuMTMgMTkuNDUsMTAuNTggMTYuMywxMC41OE0xOCwxOS4wOEgxMy4xOUwxNS44MSwxNUgxMy4zMUwxNC40LDEzLjIzSDE5LjE4TDE2LjYzLDE3LjI4SDE5LjE4TDE4LDE5LjA4TTE2LjMsMy45M1YyQzguNDEsMiAyLDguNDIgMiwxNi4zMUgzLjkyQzMuOTQsOS40NiA5LjUsMy45MyAxNi4zLDMuOTNNMTYuMyw3Ljc0VjUuODJDMTAuNSw1LjgyIDUuODEsMTAuNTMgNS44MSwxNi4zMUg3LjczQzcuNzUsMTEuNTggMTEuNTksNy43NCAxNi4zLDcuNzRcIjtcclxuZXhwb3J0IHZhciBtZGlaZW5kID0gXCJNMTEuMjgsOS44MUMxMS4yOCw5LjgxIDExLjI4LDcgMTQuMDksN0gyMi41QzIyLjUsNyAyMi41LDkuODEgMTkuNzEsOS44MUgxMS4yOE0xMS4yOCwxMy40MUMxMS4yOCwxMy40MSAxMS4yOCwxMC42IDE0LjA5LDEwLjZIMTguMzFDMTguMzEsMTAuNiAxOC4zMSwxMy40MSAxNS41LDEzLjQxSDExLjI4TTExLjI4LDE3QzExLjI4LDE3IDExLjI4LDE0LjE5IDE0LjA5LDE0LjE5SDE1LjVDMTUuNSwxNC4xOSAxNS41LDE3IDEyLjY4LDE3SDExLjI4TTEwLjQ2LDE0LjhWMTdIMS41OEw3LjMsOS4yMUgyLjRWN0gxMS42Nkw1Ljk2LDE0LjhIMTAuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWmlnYmVlID0gXCJNNC4wNiw2LjE1QzMuOTcsNi4xNyAzLjg4LDYuMjIgMy44LDYuMjhDMi42Niw3LjkgMiw5Ljg3IDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJDMTUsMjIgMTcuNjgsMjAuNjggMTkuNSwxOC42TDE3LDE4Ljg1QzE0LjI1LDE5LjE1IDExLjQ1LDE5LjE5IDguNjYsMTguOTZDNy45NSwxOC45NCA3LjI0LDE4Ljc2IDYuNTksMTguNDVDNS43MywxOC4wNiA1LjE1LDE3LjIzIDUuMDcsMTYuMjlDNS4wNiwxNi4xMyA1LjEyLDE2IDUuMjMsMTUuODdMNy40MiwxMy42TDE1LjAzLDUuN1Y1LjZIMTAuODRDOC41Nyw1LjY0IDYuMzEsNS44MiA0LjA2LDYuMTVNMjAuMTcsMTcuNUMyMC4yNiwxNy40NyAyMC4zNSwxNy40NCAyMC40MywxNy4zOUMyMS40MiwxNS44MyAyMiwxNCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyQzkuMjIsMiA2LjcsMy4xMyA0Ljg5LDQuOTdINS4xN0M4LjI4LDQuNTcgMTEuNDMsNC40NyAxNC41Niw0LjY1QzE1LjUsNC42NCAxNi40NSw0LjgyIDE3LjMzLDUuMTdDMTguMjUsNS41MyAxOC44OSw2LjM4IDE5LDcuMzdDMTksNy41MyAxOC45Myw3LjcgMTguODIsNy44Mkw5LjcxLDE3LjE5TDksMTcuOTVWMTguMDZIMTMuMTRDMTUuNSwxOCAxNy44NCwxNy44MSAyMC4xNywxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVppcEJveCA9IFwiTTE0LDE3SDEyVjE1SDEwVjEzSDEyVjE1SDE0TTE0LDlIMTJWMTFIMTRWMTNIMTJWMTFIMTBWOUgxMlY3SDEwVjVIMTJWN0gxNE0xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlaaXBCb3hPdXRsaW5lID0gXCJNMTIgMTdWMTVIMTRWMTdIMTJNMTQgMTNWMTFIMTJWMTNIMTRNMTQgOVY3SDEyVjlIMTRNMTAgMTFIMTJWOUgxMFYxMU0xMCAxNUgxMlYxM0gxMFYxNU0yMSA1VjE5QzIxIDIwLjEgMjAuMSAyMSAxOSAyMUg1QzMuOSAyMSAzIDIwLjEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM0gxOUMyMC4xIDMgMjEgMy45IDIxIDVNMTkgNUgxMlY3SDEwVjVINVYxOUgxOVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVppcERpc2sgPSBcIk03LDNMMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1TDE3LDNWNUExLDEgMCAwLDEgMTYsNkgxMEExLDEgMCAwLDEgOSw1VjNIN004LDEwSDE2QTEsMSAwIDAsMSAxNywxMVYxOUg3VjExQTEsMSAwIDAsMSA4LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0FxdWFyaXVzID0gXCJNMTUsMTIuNDFMMTIsOS40MUw5LDEyLjQxTDYsOS40MUwzLjcxLDExLjcxTDIuMjksMTAuMjlMNiw2LjU5TDksOS41OUwxMiw2LjU5TDE1LDkuNTlMMTgsNi41OUwyMS43MSwxMC4yOUwyMC4yOSwxMS43MUwxOCw5LjQxTDE1LDEyLjQxTTE4LDE1LjQxTDIwLjI5LDE3LjcxTDIxLjcxLDE2LjI5TDE4LDEyLjU5TDE1LDE1LjU5TDEyLDEyLjU5TDksMTUuNTlMNiwxMi41OUwyLjI5LDE2LjI5TDMuNzEsMTcuNzFMNiwxNS40MUw5LDE4LjQxTDEyLDE1LjQxTDE1LDE4LjQxTDE4LDE1LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0FyaWVzID0gXCJNMTYsMkMxNC45NSwyIDEzLjkxLDIuMjcgMTMsMi44MUMxMi42NCwzIDEyLjMsMy4yNiAxMiwzLjU0QzExLjcsMy4yNiAxMS4zNiwzIDExLDIuODFDMTAuMDksMi4yNyA5LjA1LDIgOCwyQTYsNiAwIDAsMCAyLDhBNiw2IDAgMCwwIDgsMTRWMTJBNCw0IDAgMCwxIDQsOEE0LDQgMCAwLDEgOCw0QzksNCAxMCw0LjM5IDEwLjc1LDUuMUMxMC44NCw1LjE4IDEwLjkyLDUuMjcgMTEsNS4zNlYyMkgxM1Y1LjM2QzEzLjA4LDUuMjcgMTMuMTYsNS4xOCAxMy4yNSw1LjFDMTQuODUsMy41OCAxNy4zOCwzLjY0IDE4LjkxLDUuMjVDMjAuNDMsNi44NSAyMC4zNiw5LjM4IDE4Ljc2LDEwLjlDMTgsMTEuNjEgMTcuMDMsMTIgMTYsMTJWMTRBNiw2IDAgMCwwIDIyLDhBNiw2IDAgMCwwIDE2LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWm9kaWFjQ2FuY2VyID0gXCJNMTIsNEM2LjUsNCAyLDcuNTggMiwxMkMyLDE0LjEyIDMuNjUsMTUuODcgNS43NiwxNkg2QTQsNCAwIDAsMCAxMCwxMkE0LDQgMCAwLDAgNiw4SDUuNzZDNy40NCw2LjQxIDkuNjksNS41NSAxMiw1LjZDMTMuNzcsNS41OCAxNS41LDYuMDcgMTcsN0wxOC4yNSw1Ljc1QzE2LjM4LDQuNTggMTQuMjEsMy45NyAxMiw0TTYsMTBBMiwyIDAgMCwxIDgsMTJDOCwxMy4xMSA3LjA4LDE0IDYsMTRDNC45NiwxNCA0LjEsMTMuMjIgNCwxMi4yQzQsMTIuMDcgNCwxMS45MyA0LDExLjhDNC4xLDEwLjc3IDQuOTcsMTAgNiwxME0xOC4yNCw4SDE4QTQsNCAwIDAsMCAxNCwxMkE0LDQgMCAwLDAgMTgsMTZIMTguMjRDMTYuNTYsMTcuNTkgMTQuMzEsMTguNDUgMTIsMTguNEMxMC4yMywxOC40MiA4LjUsMTcuOTMgNywxN0w1Ljc2LDE4LjI0QzcuNjMsMTkuNDEgOS43OSwyMCAxMiwyMEMxNy41LDIwIDIyLDE2LjQyIDIyLDEyQzIyLDkuODggMjAuMzUsOC4xMyAxOC4yNCw4TTE4LDE0QTIsMiAwIDAsMSAxNiwxMkMxNiwxMC44OSAxNi45MiwxMCAxOCwxMEMxOS4wNCwxMCAxOS45LDEwLjc4IDIwLDExLjhDMjAsMTEuOTMgMjAsMTIuMDcgMjAsMTIuMkMxOS45LDEzLjIzIDE5LjAzLDE0IDE4LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0NhcHJpY29ybiA9IFwiTTE1LDEzQzE0LjMsMTMgMTMuNjEsMTMuMTkgMTMsMTMuNTVWNkEzLDMgMCAwLDAgMTAsM0M5LjI1LDMgOC41NSwzLjI5IDgsMy43OEM3LjQ1LDMuMjggNi43NCwzIDYsM1Y1QTEsMSAwIDAsMSA3LDZWMTZIOVY2QTEsMSAwIDAsMSAxMCw1QTEsMSAwIDAsMSAxMSw2VjE3QTIsMiAwIDAsMSA5LDE5VjIxQzEwLjE1LDIxIDExLjI1LDIwLjUgMTIsMTkuNjJDMTMuNDUsMjEuMjkgMTUuOTcsMjEuNDcgMTcuNjQsMjBDMTkuMzEsMTguNTggMTkuNSwxNi4wNSAxOC4wNCwxNC4zOEMxNy4yOCwxMy41IDE2LjE3LDEzIDE1LDEzTTE1LDE5QTIsMiAwIDAsMSAxMywxN0EyLDIgMCAwLDEgMTUsMTVBMiwyIDAgMCwxIDE3LDE3QTIsMiAwIDAsMSAxNSwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlab2RpYWNHZW1pbmkgPSBcIk0xOCw1LjNDMTkuMzUsNC45NyAyMC42Niw0LjU0IDIxLjk0LDRMMjEuMTgsMi4xNEMxOC4yNywzLjM2IDE1LjE1LDQgMTIsNEM4Ljg1LDQgNS43MywzLjM4IDIuODIsMi4xN0wyLjA2LDRDMy4zNCw0LjU0IDQuNjUsNC45NyA2LDUuM1YxOC43QzQuNjUsMTkuMDMgMy4zNCwxOS40NiAyLjA2LDIwTDIuODIsMjEuODZDOC43LDE5LjQyIDE1LjMsMTkuNDIgMjEuMTgsMjEuODZMMjEuOTQsMjBDMjAuNjYsMTkuNDYgMTkuMzUsMTkuMDMgMTgsMTguN1Y1LjNNOCwxOC4zVjUuNjlDOS4zMiw1Ljg5IDEwLjY2LDYgMTIsNkMxMy4zNCw2IDE0LjY4LDUuODkgMTYsNS42OVYxOC4zMUMxMy4zNSwxNy45IDEwLjY1LDE3LjkgOCwxOC4zMVYxOC4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0xlbyA9IFwiTTIwLDE3QTMsMyAwIDAsMSAxNywyMEMxNS4zOCwxOS45MiAxNC4wOCwxOC42MiAxNCwxN0MxNC4xNiwxNS4zOSAxNC41LDEzLjggMTUsMTIuMjZDMTUuNTQsMTAuNTUgMTUuODcsOC43OSAxNiw3QzE1LjkzLDQuMjcgMTMuNzMsMi4wNyAxMSwyQzguMjcsMi4wNyA2LjA3LDQuMjcgNiw3QzYuMTUsOC41MyA2LjUsMTAuMDMgNywxMS41TDcuMjEsMTIuMkM1LjEsMTEuNTMgMi44NiwxMi43IDIuMTksMTQuOEMxLjUsMTYuOTEgMi42OCwxOS4xNiA0Ljc5LDE5LjgzQzYuOSwyMC41IDkuMTQsMTkuMzMgOS44MSwxNy4yMkM5Ljk0LDE2LjgzIDEwLDE2LjQxIDEwLDE2QzkuODQsMTQuMjcgOS41LDEyLjU2IDguOTEsMTAuOTJDOC40Nyw5LjY1IDguMTYsOC4zNCA4LDdDOC4wOCw1LjM4IDkuMzgsNC4wOCAxMSw0QzEyLjYyLDQuMDggMTMuOTIsNS4zOCAxNCw3QzEzLjg0LDguNjEgMTMuNSwxMC4yIDEzLDExLjc0QzEyLjQ2LDEzLjQ1IDEyLjEzLDE1LjIxIDEyLDE3QzEyLjA3LDE5LjczIDE0LjI3LDIxLjkzIDE3LDIyQTUsNSAwIDAsMCAyMiwxN0gyME02LDE4QTIsMiAwIDAsMSA0LDE2QTIsMiAwIDAsMSA2LDE0QTIsMiAwIDAsMSA4LDE2QTIsMiAwIDAsMSA2LDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0xpYnJhID0gXCJNMjAsMTZWMThIMTNWMTUuOTFDMTYsMTUuMzYgMTcuOTYsMTIuNSAxNy40MSw5LjVDMTYuODYsNi41IDE0LDQuNTQgMTEsNS4wOUM4LDUuNjUgNi4wNCw4LjUgNi41OSwxMS41QzcsMTMuNzQgOC43NiwxNS41IDExLDE1LjkxVjE4SDRWMTZINi45MkM1LjM3LDE0LjU5IDQuNSwxMi41OSA0LjUsMTAuNUE3LjUsNy41IDAgMCwxIDEyLDNBNy41LDcuNSAwIDAsMSAxOS41LDEwLjVDMTkuNSwxMi41OSAxOC42MywxNC41OSAxNy4wOCwxNkgyME0yMCwxOUg0VjIxSDIwVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY1Bpc2NlcyA9IFwiTTIwLDExSDE4QzE4LjExLDguMTkgMTguNzMsNS40MiAxOS44MSwyLjgyTDE4LDIuMDZDMTYuODEsNC45IDE2LjEzLDcuOTIgMTYsMTFIOEM3Ljg3LDcuOTIgNy4xOSw0LjkgNiwyLjA2TDQuMTQsMi44MkM1LjI0LDUuNDEgNS44Nyw4LjE4IDYsMTFINFYxM0g2QzUuODksMTUuODEgNS4yNywxOC41OCA0LjE5LDIxLjE4TDYsMjEuOTRDNy4xOSwxOS4xIDcuODcsMTYuMDggOCwxM0gxNkMxNi4xMywxNi4wOCAxNi44MSwxOS4xIDE4LDIxLjk0TDE5Ljg2LDIxLjE4QzE4Ljc2LDE4LjU5IDE4LjEzLDE1LjgyIDE4LDEzSDIwVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY1NhZ2l0dGFyaXVzID0gXCJNMjIsMlYxMkgyMFY1LjQxTDEwLjQxLDE1TDEyLjcxLDE3LjI5TDExLjI5LDE4LjcxTDksMTYuNDFMMy43MSwyMS43MUwyLjI5LDIwLjI5TDcuNTksMTVMNS4yOSwxMi43MUw2LjcxLDExLjI5TDksMTMuNTlMMTguNTksNEgxMlYySDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY1Njb3JwaW8gPSBcIk0xNy43MSwxNS4yOUwxNi4yOSwxNi43MUwxNy41OSwxOEgxNkEyLDIgMCAwLDEgMTQsMTZWNkEzLDMgMCAwLDAgMTEsM0MxMC4yNSwzIDkuNTUsMy4yOSA5LDMuNzhDNy44NiwyLjc2IDYuMTQsMi43NiA1LDMuNzhDNC40NSwzLjI4IDMuNzQsMyAzLDNWNUExLDEgMCAwLDEgNCw2VjE2SDZWNkExLDEgMCAwLDEgNyw1QTEsMSAwIDAsMSA4LDZWMTZIMTBWNkExLDEgMCAwLDEgMTEsNUExLDEgMCAwLDEgMTIsNlYxNkE0LDQgMCAwLDAgMTYsMjBIMTcuNTlMMTYuMjksMjEuMjlMMTcuNzEsMjIuNzFMMjEuNDEsMTlMMTcuNzEsMTUuMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWm9kaWFjVGF1cnVzID0gXCJNMTUuNTksOUMxNy43LDcuNzQgMTksNS40NiAxOSwzSDE3QTUsNSAwIDAsMSAxMiw4QTUsNSAwIDAsMSA3LDNINUM1LDUuNDYgNi4zLDcuNzQgOC40MSw5QzUuMDksMTEgNCwxNS4yOCA2LDE4LjZDNy45NywyMS45MiAxMi4yNywyMyAxNS41OSwyMUMxOC45MSwxOS4wNCAyMCwxNC43NCAxOCwxMS40MkMxNy40MiwxMC40MyAxNi41OCw5LjU5IDE1LjU5LDlNMTIsMjBBNSw1IDAgMCwxIDcsMTVBNSw1IDAgMCwxIDEyLDEwQTUsNSAwIDAsMSAxNywxNUE1LDUgMCAwLDEgMTIsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWm9kaWFjVmlyZ28gPSBcIk0xOC41LDE5LjEzQzIwLDE3Ljc3IDIwLDE1LjE4IDIwLDE0QTQsNCAwIDAsMCAxNiwxMEMxNS4zLDEwIDE0LjYsMTAuMiAxNCwxMC41NlY2QTMsMyAwIDAsMCAxMSwzQzEwLjI1LDMgOS41NSwzLjI5IDksMy43OEM3Ljg2LDIuNzYgNi4xNCwyLjc2IDUsMy43OEM0LjQ1LDMuMjggMy43NCwzIDMsM1Y1QTEsMSAwIDAsMSA0LDZWMTZINlY2QTEsMSAwIDAsMSA3LDVBMSwxIDAgMCwxIDgsNlYxNkgxMFY2QTEsMSAwIDAsMSAxMSw1QTEsMSAwIDAsMSAxMiw2VjE0QzEyLDE1LjE4IDEyLDE3Ljc3IDEzLjUsMTkuMTNDMTIuNzIsMTkuNTQgMTEuODgsMTkuODQgMTEsMjBWMjJDMTIuMjksMjIgMTQuODQsMjAuNzQgMTYsMjAuMTNDMTcuMTYsMjAuNzQgMTkuNzEsMjIgMjEsMjJWMjBDMjAuMTIsMTkuODQgMTkuMjgsMTkuNTQgMTguNSwxOS4xM00xNiwxMkEyLDIgMCAwLDEgMTgsMTRDMTgsMTYuOTIgMTcuNDYsMTggMTYsMThDMTQuNTQsMTggMTQsMTYuOTIgMTQsMTRBMiwyIDAgMCwxIDE2LDEyWlwiO1xyXG4iLG51bGwsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgZXhwb3J0IGxldCBpY29uO1xuICAgIGV4cG9ydCBsZXQgb25DbGljaztcbiAgICBleHBvcnQgbGV0IGRpc2FibGVkID0gZmFsc2U7XG4gICAgZXhwb3J0IGxldCB0aXRsZTtcbjwvc2NyaXB0PlxuXG5cbjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwianVnZ2wtYnV0dG9uXCIgb246Y2xpY2s9e29uQ2xpY2t9IGFyaWEtbGFiZWw9e3RpdGxlfSB7ZGlzYWJsZWR9PlxuICAgIDxzdmcgc3R5bGU9IFwid2lkdGg6MTdweDtoZWlnaHQ6MTdweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoIGQ9e2ljb259IC8+XG4gICAgPC9zdmc+XG48L2J1dHRvbj4iLG51bGwsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgaW1wb3J0IFRvb2xiYXJCdXR0b24gZnJvbSBcIi4vVG9vbGJhckJ1dHRvbi5zdmVsdGVcIjtcbiAgICBpbXBvcnQge2ljb25zfSBmcm9tIFwiLi4vaWNvbnNcIjtcbiAgICBpbXBvcnQge1dvcmtzcGFjZX0gZnJvbSBcIm9ic2lkaWFuXCI7XG4gICAgaW1wb3J0IHtKdWdnbEhlbHBWaWV3fSBmcm9tIFwiLi4vaGVscC12aWV3XCI7XG4gICAgZXhwb3J0IGxldCB3b3Jrc3BhY2U6IFdvcmtzcGFjZTtcbiAgICBsZXQgb3BlbkhlbHAgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgbGV0IGxlYWYgPSB3b3Jrc3BhY2UuZ2V0TGVhZih0cnVlKTtcbiAgICAgICAgbGV0IHZpZXcgPSBuZXcgSnVnZ2xIZWxwVmlldyhsZWFmKTtcbiAgICAgICAgbGVhZi5vcGVuKHZpZXcpO1xuICAgIH1cbjwvc2NyaXB0PlxuXG48VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19oZWxwfSB0aXRsZT1cIkhlbHBcIiBvbkNsaWNrPXtvcGVuSGVscH0gLz4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAgIGltcG9ydCB7aWNvbnN9IGZyb20gXCIuLi9pY29uc1wiO1xuICAgIGltcG9ydCB7Q29yZX0gZnJvbSBcImN5dG9zY2FwZVwiO1xuICAgIGltcG9ydCBUb29sYmFyQnV0dG9uIGZyb20gXCIuL1Rvb2xiYXJCdXR0b24uc3ZlbHRlXCI7XG4gICAgaW1wb3J0IHtkZWJvdW5jZSwgV29ya3NwYWNlfSBmcm9tIFwib2JzaWRpYW5cIjtcbiAgICBpbXBvcnQgSGVscEJ1dHRvbiBmcm9tIFwiLi9IZWxwQnV0dG9uLnN2ZWx0ZVwiO1xuXG4gICAgZXhwb3J0IGxldCB2aXo6IENvcmU7XG4gICAgZXhwb3J0IGxldCBmaWx0ZXJWYWx1ZTogc3RyaW5nO1xuICAgIGV4cG9ydCBsZXQgZmRnZENsaWNrO1xuICAgIGV4cG9ydCBsZXQgY29uY2VudHJpY0NsaWNrO1xuICAgIGV4cG9ydCBsZXQgZ3JpZENsaWNrO1xuICAgIGV4cG9ydCBsZXQgaGllcmFyY2h5Q2xpY2s7XG4gICAgZXhwb3J0IGxldCBleHBhbmRDbGljaztcbiAgICBleHBvcnQgbGV0IGNvbGxhcHNlQ2xpY2s7XG4gICAgZXhwb3J0IGxldCBoaWRlQ2xpY2s7XG4gICAgZXhwb3J0IGxldCBzZWxlY3RBbGxDbGljaztcbiAgICBleHBvcnQgbGV0IHNlbGVjdEludmVydENsaWNrO1xuICAgIGV4cG9ydCBsZXQgc2VsZWN0TmVpZ2hib3JDbGljaztcbiAgICBleHBvcnQgbGV0IGxvY2tDbGljaztcbiAgICBleHBvcnQgbGV0IHVubG9ja0NsaWNrO1xuICAgIGV4cG9ydCBsZXQgZml0Q2xpY2s7XG4gICAgZXhwb3J0IGxldCBsb2NhbE1vZGVDbGljaztcbiAgICBleHBvcnQgbGV0IGZpbHRlcklucHV0O1xuICAgIGV4cG9ydCBsZXQgc2F2ZUNsaWNrO1xuICAgIGV4cG9ydCBsZXQgd29ya3NwYWNlOiBXb3Jrc3BhY2U7XG5cbiAgICBmaWx0ZXJJbnB1dCA9IGRlYm91bmNlKGZpbHRlcklucHV0LCA1MDAsIHRydWUpO1xuXG4gICAgbGV0IGRpc2FibGVPbk5vbmVTZWxlY3RlZCA9IGZhbHNlO1xuICAgIGxldCBkaXNhYmxlT25BbGxQaW5uZWQgPSBmYWxzZTtcbiAgICBsZXQgZGlzYWJsZU9uTm9uZVBpbm5lZCA9IHRydWU7XG5cbiAgICBleHBvcnQgY29uc3Qgb25TZWxlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBzZWxlY3RlZCA9IHZpei5ub2RlcyhcIjpzZWxlY3RlZFwiKTtcbiAgICAgICAgZGlzYWJsZU9uTm9uZVNlbGVjdGVkID0gc2VsZWN0ZWQubGVuZ3RoID09PSAwO1xuICAgICAgICAvLyBUT0RPOiBIYXJkY29kZWQgY2xhc3NcbiAgICAgICAgbGV0IHBpbm5lZCA9IHZpei5ub2RlcyhcIi5waW5uZWRcIik7XG4gICAgICAgIGxldCBhbnlVbnBpbm5lZCA9IHNlbGVjdGVkLmRpZmZlcmVuY2UocGlubmVkKS5sZW5ndGggPiAwXG4gICAgICAgIGxldCBhbnlQaW5uZWQgPSBzZWxlY3RlZC5pbnRlcnNlY3Rpb24ocGlubmVkKTtcbiAgICAgICAgZGlzYWJsZU9uQWxsUGlubmVkID0gIWFueVVucGlubmVkIHx8IGRpc2FibGVPbk5vbmVTZWxlY3RlZDtcbiAgICAgICAgZGlzYWJsZU9uTm9uZVBpbm5lZCA9ICFhbnlQaW5uZWQgfHwgZGlzYWJsZU9uTm9uZVNlbGVjdGVkO1xuICAgIH1cblxuPC9zY3JpcHQ+XG5cblxuPCEtLTxkaXYgY2xhc3M9XCJjeS10b29sYmFyXCI+LS0+XG48ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfZmRnZH0gb25DbGljaz17ZmRnZENsaWNrfSB0aXRsZT1cIkZvcmNlIGRpcmVjdGVkIGxheW91dFwiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19jb25jZW50cmljfSBvbkNsaWNrPXtjb25jZW50cmljQ2xpY2t9IHRpdGxlPVwiQ2lyY2xlIGxheW91dFwiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19ncmlkfSBvbkNsaWNrPXtncmlkQ2xpY2t9IHRpdGxlPVwiR3JpZCBsYXlvdXRcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfaGllcmFyY2h5fSBvbkNsaWNrPXtoaWVyYXJjaHlDbGlja30gdGl0bGU9XCJIaWVyYXJjaGljYWwgbGF5b3V0XCIvPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfZml0fSBvbkNsaWNrPXtmaXRDbGlja30gdGl0bGU9XCJGaXQgdmlld1wiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19sb2NhbH0gb25DbGljaz17bG9jYWxNb2RlQ2xpY2t9IHRpdGxlPVwiTG9jYWwgbW9kZVwiLz5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImN5LXRvb2xiYXItc2VjdGlvblwiPlxuICAgIDxIZWxwQnV0dG9uIHt3b3Jrc3BhY2V9IC8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfc2F2ZX0gb25DbGljaz17c2F2ZUNsaWNrfSB0aXRsZT1cIk1hbmFnZSB3b3Jrc3BhY2UgZ3JhcGhzXCIgLz5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImN5LXRvb2xiYXItc2VjdGlvblwiPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX2V4cGFuZH0gb25DbGljaz17ZXhwYW5kQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ7ZGlzYWJsZU9uTm9uZVNlbGVjdGVkfVwiIHRpdGxlPVwiRXhwYW5kIHNlbGVjdGVkIG5vZGVzIChFKVwiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19jb2xsYXBzZX0gb25DbGljaz17Y29sbGFwc2VDbGlja31cbiAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD1cIntkaXNhYmxlT25Ob25lU2VsZWN0ZWR9XCIgdGl0bGU9XCJDb2xsYXBzZSBleHBhbmRlZCBub2RlcyAoQylcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfaGlkZX0gb25DbGljaz17aGlkZUNsaWNrfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPVwie2Rpc2FibGVPbk5vbmVTZWxlY3RlZH1cIiB0aXRsZT1cIkhpZGUgc2VsZWN0ZWQgbm9kZXMgKEgpXCIvPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfc2VsZWN0X2FsbH0gb25DbGljaz17c2VsZWN0QWxsQ2xpY2t9IHRpdGxlPVwiU2VsZWN0IGFsbCBub2RlcyAoQSlcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfc2VsZWN0X2ludmVyc2V9IG9uQ2xpY2s9e3NlbGVjdEludmVydENsaWNrfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPVwie2Rpc2FibGVPbk5vbmVTZWxlY3RlZH1cIiB0aXRsZT1cIkludmVydCBzZWxlY3Rpb24gKEkpXCIvPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX3NlbGVjdF9uZWlnaGJvcnN9IG9uQ2xpY2s9e3NlbGVjdE5laWdoYm9yQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ7ZGlzYWJsZU9uTm9uZVNlbGVjdGVkfVwiIHRpdGxlPVwiU2VsZWN0IG5laWdoYm9ycyAoTilcIi8+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJjeS10b29sYmFyLXNlY3Rpb25cIj5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19sb2NrfSBvbkNsaWNrPXtsb2NrQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ7ZGlzYWJsZU9uQWxsUGlubmVkfVwiIHRpdGxlPVwiTG9jayBzZWxlY3RlZCBub2RlcyBpbiBwbGFjZSAoUClcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfdW5sb2NrfSBvbkNsaWNrPXt1bmxvY2tDbGlja31cbiAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD1cIntkaXNhYmxlT25Ob25lUGlubmVkfVwiIHRpdGxlPVwiVW5sb2NrIHNlbGVjdGVkIG5vZGVzIGluIHBsYWNlIChVKVwiLz5cbjwvZGl2PlxuPCEtLTwvZGl2Pi0tPlxuPGJyIC8+PGxhYmVsIGZvcj1cImFnLWZpbHRlclwiPkZpbHRlcjogPC9sYWJlbD48aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImFnLWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFnLWZpbHRlclwiIG9uOmlucHV0PXtmaWx0ZXJJbnB1dH0gdmFsdWU9e2ZpbHRlclZhbHVlfT4iLG51bGwsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgZXhwb3J0IGxldCBuYW1lO1xuICAgIGV4cG9ydCBsZXQgb25DbGljaztcbiAgICBleHBvcnQgbGV0IG9uRGVsZXRlO1xuPC9zY3JpcHQ+XG48ZGl2IGNsYXNzPVwibGlzdC1pdGVtXCI+XG4gICAgPGRpdiBjbGFzcz1cImxpc3QtaXRlbS1wYXJ0IG1vZC1leHRlbmRlZFwiPlxuICAgICAgICB7bmFtZX1cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibGlzdC1pdGVtLXBhcnRcIiBvbjpjbGljaz17b25DbGljayhuYW1lKX0+TG9hZDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0tcGFydCBjbGlja2FibGUtaWNvblwiIGFyaWEtbGFiZWw9XCJEZWxldGUgZ3JhcGhcIiBvbjpjbGljaz17b25EZWxldGUobmFtZSl9PlxuICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIGNsYXNzPVwiY3Jvc3NcIj5cbiAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTE1LjQsMTIuNmwtMi45LDIuOUw0Ny4xLDUwTDEyLjYsODQuNmwyLjksMi45TDUwLDUyLjlsMzQuNiwzNC42bDIuOS0yLjlMNTIuOSw1MGwzNC42LTM0LjZsLTIuOS0yLjlMNTAsNDcuMUwxNS40LDEyLjZ6IFwiPlxuXG4gICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuPC9kaXY+IiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgICBpbXBvcnQgU2F2ZVdvcmtzcGFjZUl0ZW0gZnJvbSBcIi4vU2F2ZVdvcmtzcGFjZUl0ZW0uc3ZlbHRlXCI7XG4gICAgZXhwb3J0IGxldCBvbkxvYWQ7XG4gICAgZXhwb3J0IGxldCBvblNhdmU7XG4gICAgZXhwb3J0IGxldCBvbkRlbGV0ZTtcbiAgICBleHBvcnQgbGV0IHNhdmVkR3JhcGhzOiBzdHJpbmdbXTtcbiAgICBsZXQgc2F2ZU5hbWUgPSAnJztcbiAgICBsZXQgX29uU2F2ZSA9IGFzeW5jIChzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgYXdhaXQgb25TYXZlKHMpO1xuICAgICAgICAvLyBFbnN1cmVzIHN2ZWx0ZSByZWFjdHMuXG4gICAgICAgIHNhdmVkR3JhcGhzID0gc2F2ZWRHcmFwaHM7XG4gICAgfVxuICAgIGxldCBfb25EZWxldGUgPSBhc3luYyhzOiBzdHJpbmcpID0+ICB7XG4gICAgICAgIGF3YWl0IG9uRGVsZXRlKHMpO1xuICAgICAgICBzYXZlZEdyYXBocyA9IHNhdmVkR3JhcGhzO1xuICAgIH1cbiAgICBsZXQgZmlsdGVySW5wdXQgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpPT4ge1xuICAgICAgICBpZihldmVudC5rZXkgPT09ICcvJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG48L3NjcmlwdD5cbjxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgPGlucHV0IGNsYXNzPVwibGlzdC1pdGVtLXBhcnQgbW9kLWV4dGVuZGVkXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNhdmUgY3VycmVudCBncmFwaCBhcy4uLlwiIGJpbmQ6dmFsdWU9e3NhdmVOYW1lfVxuICAgIG9uOmtleWRvd249e2ZpbHRlcklucHV0fSAvPlxuICAgIDxidXR0b24gY2xhc3M9XCJsaXN0LWl0ZW0tcGFydFwiIG9uOmNsaWNrPXtfb25TYXZlKHNhdmVOYW1lKX0+U2F2ZTwvYnV0dG9uPlxuPC9kaXY+XG48aHI+XG48ZGl2PlxuICAgIHsjZWFjaCBzYXZlZEdyYXBocyBhcyBncmFwaE5hbWV9XG4gICAgICAgIDxTYXZlV29ya3NwYWNlSXRlbSBuYW1lPXtncmFwaE5hbWV9IG9uQ2xpY2s9e29uTG9hZH0gb25EZWxldGU9e19vbkRlbGV0ZX0+XG4gICAgICAgIDwvU2F2ZVdvcmtzcGFjZUl0ZW0+XG4gICAgey9lYWNofVxuPC9kaXY+IixudWxsLG51bGwsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgaW1wb3J0IHtpY29uc30gZnJvbSBcIi4uL2ljb25zXCI7XG4gICAgLy8gaW1wb3J0IHtDb3JlfSBmcm9tIFwiY3l0b3NjYXBlXCI7XG4gICAgaW1wb3J0IFRvb2xiYXJCdXR0b24gZnJvbSBcIi4vVG9vbGJhckJ1dHRvbi5zdmVsdGVcIjtcbiAgICBpbXBvcnQgSGVscEJ1dHRvbiBmcm9tIFwiLi9IZWxwQnV0dG9uLnN2ZWx0ZVwiO1xuICAgIGltcG9ydCB7ZGVib3VuY2UsIFdvcmtzcGFjZX0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbiAgICBleHBvcnQgbGV0IGZkZ2RDbGljaztcbiAgICBleHBvcnQgbGV0IGNvbmNlbnRyaWNDbGljaztcbiAgICBleHBvcnQgbGV0IGdyaWRDbGljaztcbiAgICBleHBvcnQgbGV0IGhpZXJhcmNoeUNsaWNrO1xuICAgIGV4cG9ydCBsZXQgZml0Q2xpY2s7XG4gICAgZXhwb3J0IGxldCB3b3Jrc3BhY2VNb2RlQ2xpY2s7XG4gICAgZXhwb3J0IGxldCBmaWx0ZXJJbnB1dDtcbiAgICBleHBvcnQgbGV0IGZpbHRlclZhbHVlO1xuICAgIGV4cG9ydCBsZXQgd29ya3NwYWNlOiBXb3Jrc3BhY2U7XG4gICAgZmlsdGVySW5wdXQgPSBkZWJvdW5jZShmaWx0ZXJJbnB1dCwgNTAwLCB0cnVlKTtcblxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJjeS10b29sYmFyLXNlY3Rpb25cIj5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19mZGdkfSBvbkNsaWNrPXtmZGdkQ2xpY2t9IHRpdGxlPVwiRm9yY2UgZGlyZWN0ZWQgbGF5b3V0XCIvPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX2NvbmNlbnRyaWN9IG9uQ2xpY2s9e2NvbmNlbnRyaWNDbGlja30gdGl0bGU9XCJDaXJjbGUgbGF5b3V0XCIvPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX2dyaWR9IG9uQ2xpY2s9e2dyaWRDbGlja30gdGl0bGU9XCJHcmlkIGxheW91dFwiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19oaWVyYXJjaHl9IG9uQ2xpY2s9e2hpZXJhcmNoeUNsaWNrfSB0aXRsZT1cIkhpZXJhcmNoaWNhbCBsYXlvdXRcIi8+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJjeS10b29sYmFyLXNlY3Rpb25cIj5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19maXR9IG9uQ2xpY2s9e2ZpdENsaWNrfSB0aXRsZT1cIkZpdCB2aWV3XCIvPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX3dvcmtzcGFjZX0gb25DbGljaz17d29ya3NwYWNlTW9kZUNsaWNrfSB0aXRsZT1cIldvcmtzcGFjZSBtb2RlXCIvPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XG4gICAgPEhlbHBCdXR0b24ge3dvcmtzcGFjZX0vPlxuPC9kaXY+XG48YnIgLz48bGFiZWwgZm9yPVwiYWctZmlsdGVyXCI+RmlsdGVyOiA8L2xhYmVsPjxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiYWctZmlsdGVyXCIgbmFtZT1cImFnLWZpbHRlclwiIG9uOmlucHV0PXtmaWx0ZXJJbnB1dH0gdmFsdWU9e2ZpbHRlclZhbHVlfT4iLG51bGwsIi8qIVxuICogc2VhcmNoLXF1ZXJ5LXBhcnNlci5qc1xuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxOVxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuZXhwb3J0cy5wYXJzZSA9IGZ1bmN0aW9uIChzdHJpbmcsIG9wdGlvbnMpIHtcblxuICAvLyBTZXQgYSBkZWZhdWx0IG9wdGlvbnMgb2JqZWN0IHdoZW4gbm9uZSBpcyBwcm92aWRlZFxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge29mZnNldHM6IHRydWV9O1xuICB9IGVsc2Uge1xuICAgIC8vIElmIG9wdGlvbnMgb2Zmc2V0cyB3YXMndCBwYXNzZWQsIHNldCBpdCB0byB0cnVlXG4gICAgb3B0aW9ucy5vZmZzZXRzID0gKHR5cGVvZiBvcHRpb25zLm9mZnNldHMgPT09ICd1bmRlZmluZWQnID8gdHJ1ZSA6IG9wdGlvbnMub2Zmc2V0cylcbiAgfVxuXG4gIGlmICghc3RyaW5nKSB7XG4gICAgc3RyaW5nID0gJyc7XG4gIH1cblxuICAvLyBXaGVuIGEgc2ltcGxlIHN0cmluZywgcmV0dXJuIGl0XG4gIGlmICgtMSA9PT0gc3RyaW5nLmluZGV4T2YoJzonKSAmJiAhb3B0aW9ucy50b2tlbml6ZSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgLy8gV2hlbiBubyBrZXl3b3JkcyBvciByYW5nZXMgc2V0LCB0cmVhdCBhcyBhIHNpbXBsZSBzdHJpbmdcbiAgZWxzZSBpZiAoIW9wdGlvbnMua2V5d29yZHMgJiYgIW9wdGlvbnMucmFuZ2VzICYmICFvcHRpb25zLnRva2VuaXplKXtcbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG4gIC8vIE90aGVyd2lzZSBwYXJzZSB0aGUgYWR2YW5jZWQgcXVlcnkgc3ludGF4XG4gIGVsc2Uge1xuICAgIC8vIE91ciBvYmplY3QgdG8gc3RvcmUgdGhlIHF1ZXJ5IG9iamVjdFxuICAgIHZhciBxdWVyeSA9IHt0ZXh0OiBbXX07XG4gICAgLy8gV2hlbiBvZmZzZXRzIGlzIHRydWUsIGNyZWF0ZSB0aGVpciBhcnJheVxuICAgIGlmIChvcHRpb25zLm9mZnNldHMpIHtcbiAgICAgIHF1ZXJ5Lm9mZnNldHMgPSBbXTtcbiAgICB9XG4gICAgdmFyIGV4Y2x1c2lvbiA9IHt9O1xuICAgIHZhciB0ZXJtcyA9IFtdO1xuICAgIC8vIEdldCBhIGxpc3Qgb2Ygc2VhcmNoIHRlcm1zIHJlc3BlY3Rpbmcgc2luZ2xlIGFuZCBkb3VibGUgcXVvdGVzXG4gICAgdmFyIHJlZ2V4ID0gLyhcXFMrOicoPzpbXidcXFxcXXxcXFxcLikqJyl8KFxcUys6XCIoPzpbXlwiXFxcXF18XFxcXC4pKlwiKXwoLT9cIig/OlteXCJcXFxcXXxcXFxcLikqXCIpfCgtPycoPzpbXidcXFxcXXxcXFxcLikqJyl8XFxTK3xcXFMrOlxcUysvZztcbiAgICB2YXIgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMoc3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIHZhciB0ZXJtID0gbWF0Y2hbMF07XG4gICAgICB2YXIgc2VwSW5kZXggPSB0ZXJtLmluZGV4T2YoJzonKTtcbiAgICAgIGlmIChzZXBJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gdGVybS5zcGxpdCgnOicpLFxuICAgICAgICAgICAga2V5ID0gdGVybS5zbGljZSgwLCBzZXBJbmRleCksXG4gICAgICAgICAgICB2YWwgPSB0ZXJtLnNsaWNlKHNlcEluZGV4ICsgMSk7XG4gICAgICAgIC8vIFN0cmlwIHN1cnJvdW5kaW5nIHF1b3Rlc1xuICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvXlxcXCJ8XFxcIiR8XlxcJ3xcXCckL2csICcnKTtcbiAgICAgICAgLy8gU3RyaXAgYmFja3NsYXNoZXMgcmVzcGVjdGluZyBlc2NhcGVzXG4gICAgICAgIHZhbCA9ICh2YWwgKyAnJykucmVwbGFjZSgvXFxcXCguPykvZywgZnVuY3Rpb24gKHMsIG4xKSB7XG4gICAgICAgICAgc3dpdGNoIChuMSkge1xuICAgICAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICAgICAgcmV0dXJuICdcXFxcJztcbiAgICAgICAgICBjYXNlICcwJzpcbiAgICAgICAgICAgIHJldHVybiAnXFx1MDAwMCc7XG4gICAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIG4xO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRlcm1zLnB1c2goe1xuICAgICAgICAgIGtleXdvcmQ6IGtleSxcbiAgICAgICAgICB2YWx1ZTogdmFsLFxuICAgICAgICAgIG9mZnNldFN0YXJ0OiBtYXRjaC5pbmRleCxcbiAgICAgICAgICBvZmZzZXRFbmQ6IG1hdGNoLmluZGV4ICsgdGVybS5sZW5ndGhcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgaXNFeGNsdWRlZFRlcm0gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRlcm1bMF0gPT09ICctJykge1xuICAgICAgICAgIGlzRXhjbHVkZWRUZXJtID0gdHJ1ZTtcbiAgICAgICAgICB0ZXJtID0gdGVybS5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0cmlwIHN1cnJvdW5kaW5nIHF1b3Rlc1xuICAgICAgICB0ZXJtID0gdGVybS5yZXBsYWNlKC9eXFxcInxcXFwiJHxeXFwnfFxcJyQvZywgJycpO1xuICAgICAgICAvLyBTdHJpcCBiYWNrc2xhc2hlcyByZXNwZWN0aW5nIGVzY2FwZXNcbiAgICAgICAgdGVybSA9ICh0ZXJtICsgJycpLnJlcGxhY2UoL1xcXFwoLj8pL2csIGZ1bmN0aW9uIChzLCBuMSkge1xuICAgICAgICAgIHN3aXRjaCAobjEpIHtcbiAgICAgICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgICAgIHJldHVybiAnXFxcXCc7XG4gICAgICAgICAgY2FzZSAnMCc6XG4gICAgICAgICAgICByZXR1cm4gJ1xcdTAwMDAnO1xuICAgICAgICAgIGNhc2UgJyc6XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBuMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpc0V4Y2x1ZGVkVGVybSkge1xuICAgICAgICAgIGlmIChleGNsdXNpb25bJ3RleHQnXSkge1xuICAgICAgICAgICAgaWYgKGV4Y2x1c2lvblsndGV4dCddIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgICAgZXhjbHVzaW9uWyd0ZXh0J10ucHVzaCh0ZXJtKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGV4Y2x1c2lvblsndGV4dCddID0gW2V4Y2x1c2lvblsndGV4dCddXTtcbiAgICAgICAgICAgICAgZXhjbHVzaW9uWyd0ZXh0J10ucHVzaCh0ZXJtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmlyc3QgdGltZSBzZWVpbmcgYW4gZXhjbHVkZWQgdGV4dCB0ZXJtXG4gICAgICAgICAgICBleGNsdXNpb25bJ3RleHQnXSA9IHRlcm07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRlcm1zLnB1c2goe1xuICAgICAgICAgICAgdGV4dDogdGVybSxcbiAgICAgICAgICAgIG9mZnNldFN0YXJ0OiBtYXRjaC5pbmRleCxcbiAgICAgICAgICAgIG9mZnNldEVuZDogbWF0Y2guaW5kZXggKyB0ZXJtLmxlbmd0aFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFJldmVyc2UgdG8gZW5zdXJlIHByb3BlciBvcmRlciB3aGVuIHBvcCgpJ2luZy5cbiAgICB0ZXJtcy5yZXZlcnNlKCk7XG4gICAgLy8gRm9yIGVhY2ggc2VhcmNoIHRlcm1cbiAgICB2YXIgdGVybTtcbiAgICB3aGlsZSAodGVybSA9IHRlcm1zLnBvcCgpKSB7XG4gICAgICAvLyBXaGVuIGp1c3QgYSBzaW1wbGUgdGVybVxuICAgICAgaWYgKHRlcm0udGV4dCkge1xuICAgICAgICAvLyBXZSBhZGQgaXQgYXMgcHVyZSB0ZXh0XG4gICAgICAgIHF1ZXJ5LnRleHQucHVzaCh0ZXJtLnRleHQpO1xuICAgICAgICAvLyBXaGVuIG9mZnNldHMgaXMgdHJ1ZSwgcHVzaCBhIG5ldyBvZmZzZXRcbiAgICAgICAgaWYgKG9wdGlvbnMub2Zmc2V0cykge1xuICAgICAgICAgIHF1ZXJ5Lm9mZnNldHMucHVzaCh0ZXJtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gV2UgZ290IGFuIGFkdmFuY2VkIHNlYXJjaCBzeW50YXhcbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIga2V5ID0gdGVybS5rZXl3b3JkO1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUga2V5IGlzIGEgcmVnaXN0ZXJlZCBrZXl3b3JkXG4gICAgICAgIG9wdGlvbnMua2V5d29yZHMgPSBvcHRpb25zLmtleXdvcmRzIHx8IFtdO1xuICAgICAgICB2YXIgaXNLZXl3b3JkID0gZmFsc2U7XG4gICAgICAgIHZhciBpc0V4Y2x1c2lvbiA9IGZhbHNlO1xuICAgICAgICBpZiAoIS9eLS8udGVzdChrZXkpKSB7XG4gICAgICAgICAgICBpc0tleXdvcmQgPSAhKC0xID09PSBvcHRpb25zLmtleXdvcmRzLmluZGV4T2Yoa2V5KSk7XG4gICAgICAgIH0gZWxzZSAgaWYgKGtleVswXSA9PT0gJy0nKSB7XG4gICAgICAgICAgICB2YXIgX2tleSA9IGtleS5zbGljZSgxKTtcbiAgICAgICAgICAgIGlzS2V5d29yZCA9ICEoLTEgPT09IG9wdGlvbnMua2V5d29yZHMuaW5kZXhPZihfa2V5KSlcbiAgICAgICAgICAgIGlmIChpc0tleXdvcmQpIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBfa2V5O1xuICAgICAgICAgICAgICAgIGlzRXhjbHVzaW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBrZXkgaXMgYSByZWdpc3RlcmVkIHJhbmdlXG4gICAgICAgIG9wdGlvbnMucmFuZ2VzID0gb3B0aW9ucy5yYW5nZXMgfHwgW107XG4gICAgICAgIHZhciBpc1JhbmdlID0gISgtMSA9PT0gb3B0aW9ucy5yYW5nZXMuaW5kZXhPZihrZXkpKTtcbiAgICAgICAgLy8gV2hlbiB0aGUga2V5IG1hdGNoZXMgYSBrZXl3b3JkXG4gICAgICAgIGlmIChpc0tleXdvcmQpIHtcbiAgICAgICAgICAvLyBXaGVuIG9mZnNldHMgaXMgdHJ1ZSwgcHVzaCBhIG5ldyBvZmZzZXRcbiAgICAgICAgICBpZiAob3B0aW9ucy5vZmZzZXRzKSB7XG4gICAgICAgICAgICBxdWVyeS5vZmZzZXRzLnB1c2goe1xuICAgICAgICAgICAgICBrZXl3b3JkOiBrZXksXG4gICAgICAgICAgICAgIHZhbHVlOiB0ZXJtLnZhbHVlLFxuICAgICAgICAgICAgICBvZmZzZXRTdGFydDogaXNFeGNsdXNpb24gPyB0ZXJtLm9mZnNldFN0YXJ0ICsgMSA6IHRlcm0ub2Zmc2V0U3RhcnQsXG4gICAgICAgICAgICAgIG9mZnNldEVuZDogdGVybS5vZmZzZXRFbmRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB2YWx1ZSA9IHRlcm0udmFsdWU7XG4gICAgICAgICAgLy8gV2hlbiB2YWx1ZSBpcyBhIHRoaW5nXG4gICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gR2V0IGFuIGFycmF5IG9mIHZhbHVlcyB3aGVuIHNldmVyYWwgYXJlIHRoZXJlXG4gICAgICAgICAgICB2YXIgdmFsdWVzID0gdmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgICAgIGlmIChpc0V4Y2x1c2lvbikge1xuICAgICAgICAgICAgICBpZiAoZXhjbHVzaW9uW2tleV0pIHtcbiAgICAgICAgICAgICAgICAvLyAuLi5tYW55IHRpbWVzLi4uXG4gICAgICAgICAgICAgICAgaWYgKGV4Y2x1c2lvbltrZXldIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgIC8vIC4uLmFuZCBnb3Qgc2V2ZXJhbCB2YWx1ZXMgdGhpcyB0aW1lLi4uXG4gICAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIGNvbmNhdGVuYXRlIGJvdGggYXJyYXlzLlxuICAgICAgICAgICAgICAgICAgICBleGNsdXNpb25ba2V5XSA9IGV4Y2x1c2lvbltrZXldLmNvbmNhdCh2YWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIC4uLiBhcHBlbmQgdGhlIGN1cnJlbnQgc2luZ2xlIHZhbHVlLlxuICAgICAgICAgICAgICAgICAgICBleGNsdXNpb25ba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV2Ugc2F3IHRoYXQga2V5d29yZCBvbmx5IG9uY2UgYmVmb3JlXG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBQdXQgYm90aCB0aGUgY3VycmVudCB2YWx1ZSBhbmQgdGhlIG5ld1xuICAgICAgICAgICAgICAgICAgLy8gdmFsdWUgaW4gYW4gYXJyYXlcbiAgICAgICAgICAgICAgICAgIGV4Y2x1c2lvbltrZXldID0gW2V4Y2x1c2lvbltrZXldXTtcbiAgICAgICAgICAgICAgICAgIGV4Y2x1c2lvbltrZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyBGaXJzdCB0aW1lIHdlIHNlZSB0aGF0IGtleXdvcmRcbiAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gLi4uYW5kIGdvdCBzZXZlcmFsIHZhbHVlcyB0aGlzIHRpbWUuLi5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgIC8vIC4uLmFkZCBhbGwgdmFsdWVzIHNlZW4uXG4gICAgICAgICAgICAgICAgICBleGNsdXNpb25ba2V5XSA9IHZhbHVlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gR290IG9ubHkgYSBzaW5nbGUgdmFsdWUgdGhpcyB0aW1lXG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBSZWNvcmQgaXRzIHZhbHVlIGFzIGEgc3RyaW5nXG4gICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5hbHdheXNBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAuLi5idXQgd2UgYWx3YXlzIHJldHVybiBhbiBhcnJheSBpZiBvcHRpb24gYWx3YXlzQXJyYXkgaXMgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBleGNsdXNpb25ba2V5XSA9IFt2YWx1ZV07XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZWNvcmQgaXRzIHZhbHVlIGFzIGEgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1c2lvbltrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgc2VlbiB0aGF0IGtleXdvcmQuLi5cbiAgICAgICAgICAgICAgaWYgKHF1ZXJ5W2tleV0pIHtcbiAgICAgICAgICAgICAgICAvLyAuLi5tYW55IHRpbWVzLi4uXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5W2tleV0gaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgLy8gLi4uYW5kIGdvdCBzZXZlcmFsIHZhbHVlcyB0aGlzIHRpbWUuLi5cbiAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAuLi4gY29uY2F0ZW5hdGUgYm90aCBhcnJheXMuXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5W2tleV0gPSBxdWVyeVtrZXldLmNvbmNhdCh2YWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIC4uLiBhcHBlbmQgdGhlIGN1cnJlbnQgc2luZ2xlIHZhbHVlLlxuICAgICAgICAgICAgICAgICAgICBxdWVyeVtrZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBXZSBzYXcgdGhhdCBrZXl3b3JkIG9ubHkgb25jZSBiZWZvcmVcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIFB1dCBib3RoIHRoZSBjdXJyZW50IHZhbHVlIGFuZCB0aGUgbmV3XG4gICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBpbiBhbiBhcnJheVxuICAgICAgICAgICAgICAgICAgcXVlcnlba2V5XSA9IFtxdWVyeVtrZXldXTtcbiAgICAgICAgICAgICAgICAgIHF1ZXJ5W2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIEZpcnN0IHRpbWUgd2Ugc2VlIHRoYXQga2V5d29yZFxuICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyAuLi5hbmQgZ290IHNldmVyYWwgdmFsdWVzIHRoaXMgdGltZS4uLlxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgLy8gLi4uYWRkIGFsbCB2YWx1ZXMgc2Vlbi5cbiAgICAgICAgICAgICAgICAgIHF1ZXJ5W2tleV0gPSB2YWx1ZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEdvdCBvbmx5IGEgc2luZ2xlIHZhbHVlIHRoaXMgdGltZVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWx3YXlzQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uYnV0IHdlIGFsd2F5cyByZXR1cm4gYW4gYXJyYXkgaWYgb3B0aW9uIGFsd2F5c0FycmF5IGlzIHRydWVcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlba2V5XSA9IFt2YWx1ZV07XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZWNvcmQgaXRzIHZhbHVlIGFzIGEgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIGtleSBhbGxvd3MgYSByYW5nZVxuICAgICAgICBlbHNlIGlmIChpc1JhbmdlKSB7XG4gICAgICAgICAgLy8gV2hlbiBvZmZzZXRzIGlzIHRydWUsIHB1c2ggYSBuZXcgb2Zmc2V0XG4gICAgICAgICAgaWYgKG9wdGlvbnMub2Zmc2V0cykge1xuICAgICAgICAgICAgcXVlcnkub2Zmc2V0cy5wdXNoKHRlcm0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB2YWx1ZSA9IHRlcm0udmFsdWU7XG4gICAgICAgICAgLy8gUmFuZ2UgYXJlIHNlcGFyYXRlZCB3aXRoIGEgZGFzaFxuICAgICAgICAgIHZhciByYW5nZVZhbHVlcyA9IHZhbHVlLnNwbGl0KCctJyk7XG4gICAgICAgICAgLy8gV2hlbiBib3RoIGVuZCBvZiB0aGUgcmFuZ2UgYXJlIHNwZWNpZmllZFxuICAgICAgICAgIC8vIGtleXdvcmQ6WFhYWC1ZWVlZXG4gICAgICAgICAgcXVlcnlba2V5XSA9IHt9O1xuICAgICAgICAgIGlmICgyID09PSByYW5nZVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHF1ZXJ5W2tleV0uZnJvbSA9IHJhbmdlVmFsdWVzWzBdO1xuICAgICAgICAgICAgcXVlcnlba2V5XS50byA9IHJhbmdlVmFsdWVzWzFdO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBXaGVuIHBhaXJzIG9mIHJhbmdlcyBhcmUgc3BlY2lmaWVkXG4gICAgICAgICAgLy8ga2V5d29yZDpYWFhYLVlZWVksQUFBQS1CQkJCXG4gICAgICAgICAgZWxzZSBpZiAoIXJhbmdlVmFsdWVzLmxlbmd0aCAlIDIpIHtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gV2hlbiBvbmx5IGdldHRpbmcgYSBzaW5nbGUgdmFsdWUsXG4gICAgICAgICAgLy8gb3IgYW4gb2RkIG51bWJlciBvZiB2YWx1ZXNcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHF1ZXJ5W2tleV0uZnJvbSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAvLyBXZSBhZGQgaXQgYXMgcHVyZSB0ZXh0XG4gICAgICAgICAgdmFyIHRleHQgPSB0ZXJtLmtleXdvcmQgKyAnOicgKyB0ZXJtLnZhbHVlO1xuICAgICAgICAgIHF1ZXJ5LnRleHQucHVzaCh0ZXh0KTtcblxuICAgICAgICAgIC8vIFdoZW4gb2Zmc2V0cyBpcyB0cnVlLCBwdXNoIGEgbmV3IG9mZnNldFxuICAgICAgICAgIGlmIChvcHRpb25zLm9mZnNldHMpIHtcbiAgICAgICAgICAgIHF1ZXJ5Lm9mZnNldHMucHVzaCh7XG4gICAgICAgICAgICAgIHRleHQ6IHRleHQsXG4gICAgICAgICAgICAgIG9mZnNldFN0YXJ0OiB0ZXJtLm9mZnNldFN0YXJ0LFxuICAgICAgICAgICAgICBvZmZzZXRFbmQ6IHRlcm0ub2Zmc2V0RW5kXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb25jYXRlbmF0ZSBhbGwgdGV4dCB0ZXJtcyBpZiBhbnlcbiAgICBpZiAocXVlcnkudGV4dC5sZW5ndGgpIHtcbiAgICAgIGlmICghb3B0aW9ucy50b2tlbml6ZSkge1xuICAgICAgICBxdWVyeS50ZXh0ID0gcXVlcnkudGV4dC5qb2luKCcgJykudHJpbSgpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBKdXN0IHJlbW92ZSB0aGUgYXR0cmlidXRlIHRleHQgd2hlbiBpdCdzIGVtcHR5XG4gICAgZWxzZSB7XG4gICAgICBkZWxldGUgcXVlcnkudGV4dDtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gZm9yZ2VkIHF1ZXJ5IG9iamVjdFxuICAgIHF1ZXJ5LmV4Y2x1ZGUgPSBleGNsdXNpb247XG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbn07XG5cbmV4cG9ydHMuc3RyaW5naWZ5ID0gZnVuY3Rpb24gKHF1ZXJ5T2JqZWN0LCBvcHRpb25zLCBwcmVmaXgpIHtcblxuICAvLyBTZXQgYSBkZWZhdWx0IG9wdGlvbnMgb2JqZWN0IHdoZW4gbm9uZSBpcyBwcm92aWRlZFxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge29mZnNldHM6IHRydWV9O1xuICB9XG5cbiAgLy8gSWYgdGhlIHF1ZXJ5IG9iamVjdCBpcyBmYWxzeSB3ZSBjYW4ganVzdCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nXG4gIGlmICghcXVlcnlPYmplY3QpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvLyBJZiB0aGUgcXVlcnkgb2JqZWN0IGlzIGFscmVhZHkgYSBzdHJpbmcsIHdlIGNhbiByZXR1cm4gaXQgaW1tZWRpYXRlbHlcbiAgaWYgKHR5cGVvZiBxdWVyeU9iamVjdCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcXVlcnlPYmplY3Q7XG4gIH1cblxuICAvLyBJZiB0aGUgcXVlcnkgb2JqZWN0IGlzIGFuIGFycmF5LCB3ZSBjYW4gcmV0dXJuIGl0IGNvbmNhdGVuYXRlZCB3aXRoIGEgc3BhY2VcbiAgaWYgKEFycmF5LmlzQXJyYXkocXVlcnlPYmplY3QpKSB7XG4gICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LmpvaW4oJyAnKTtcbiAgfVxuXG4gIC8vIElmIHRoZSBxdWVyeSBvYmplY3QgZG9lcyBub3QgaGF2ZSBhbnkga2V5cywgd2UgY2FuIHJldHVybiBhbiBlbXB0eSBzdHJpbmdcbiAgaWYgKCFPYmplY3Qua2V5cyhxdWVyeU9iamVjdCkubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8gSWYgdGhlIHF1ZXJ5IG9iamVjdCBjb250YWlucyBvbmx5IHRleHQgd2hpY2ggaXMgYSBzdHJpbmcsIHdlIGNhbiByZXR1cm4gaXQgaW1tZWRpYXRlbHlcbiAgaWYgKE9iamVjdC5rZXlzKHF1ZXJ5T2JqZWN0KS5sZW5ndGggPT09IDMgJiYgISFxdWVyeU9iamVjdC50ZXh0ICYmICEhcXVlcnlPYmplY3Qub2Zmc2V0cyAmJiAhIXF1ZXJ5T2JqZWN0LmV4Y2x1ZGUgJiYgdHlwZW9mIHF1ZXJ5T2JqZWN0LnRleHQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LnRleHQ7XG4gIH1cblxuICAvLyBXZSB3aWxsIHVzZSBhIHByZWZpeCBmb3IgdGhlIGV4Y2x1ZGUgc3ludGF4IGxhdGVyIG9uZVxuICBpZiAoIXByZWZpeCkge1xuICAgIHByZWZpeCA9ICcnXG4gIH1cblxuICAvLyBIZWxwZXJzXG4gIHZhciBhZGRRdW90ZXMgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5pbmRleE9mKCcgJykgPiAtIDEgPyBKU09OLnN0cmluZ2lmeShzdHJpbmcpIDogc3RyaW5nO1xuICB9O1xuICB2YXIgYWRkUHJlZml4ID0gZnVuY3Rpb24gKHN0cmluZykge1xuICAgIHJldHVybiBwcmVmaXggKyBzdHJpbmc7XG4gIH07XG5cbiAgLy8gS2VlcCB0cmFjayBvZiBhbGwgc2luZ2xlIHBhcnRzIGluIHRoaXMgYXJyYXlcbiAgdmFyIHBhcnRzID0gW107XG5cbiAgLy8gVGV4dFxuICBpZiAocXVlcnlPYmplY3QudGV4dCkge1xuICAgIHZhciB2YWx1ZSA9IFtdO1xuICAgIGlmICh0eXBlb2YgcXVlcnlPYmplY3QudGV4dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlLnB1c2gocXVlcnlPYmplY3QudGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlLnB1c2guYXBwbHkodmFsdWUsIHF1ZXJ5T2JqZWN0LnRleHQpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJ0cy5wdXNoKHZhbHVlLm1hcChhZGRRdW90ZXMpLm1hcChhZGRQcmVmaXgpLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gS2V5d29yZHNcbiAgaWYgKG9wdGlvbnMua2V5d29yZHMpIHtcbiAgICBvcHRpb25zLmtleXdvcmRzLmZvckVhY2goZnVuY3Rpb24gKGtleXdvcmQpIHtcbiAgICAgIGlmICghcXVlcnlPYmplY3Rba2V5d29yZF0pIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZSA9IFtdO1xuICAgICAgaWYgKHR5cGVvZiBxdWVyeU9iamVjdFtrZXl3b3JkXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFsdWUucHVzaChxdWVyeU9iamVjdFtrZXl3b3JkXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZS5wdXNoLmFwcGx5KHZhbHVlLCBxdWVyeU9iamVjdFtrZXl3b3JkXSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWRkUHJlZml4KGtleXdvcmQgKyAnOicgKyB2YWx1ZS5tYXAoYWRkUXVvdGVzKS5qb2luKCcsJykpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJhbmdlc1xuICBpZiAob3B0aW9ucy5yYW5nZXMpIHtcbiAgICBvcHRpb25zLnJhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uIChyYW5nZSkge1xuICAgICAgaWYgKCFxdWVyeU9iamVjdFtyYW5nZV0pIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZSA9IHF1ZXJ5T2JqZWN0W3JhbmdlXS5mcm9tO1xuICAgICAgdmFyIHRvID0gcXVlcnlPYmplY3RbcmFuZ2VdLnRvO1xuICAgICAgaWYgKHRvKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUgKyAnLScgKyB0bztcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWRkUHJlZml4KHJhbmdlICsgJzonICsgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIEV4Y2x1ZGVcbiAgaWYgKHF1ZXJ5T2JqZWN0LmV4Y2x1ZGUpIHtcbiAgICBpZiAoT2JqZWN0LmtleXMocXVlcnlPYmplY3QuZXhjbHVkZSkubGVuZ3RoID4gMCkge1xuICAgICAgcGFydHMucHVzaChleHBvcnRzLnN0cmluZ2lmeShxdWVyeU9iamVjdC5leGNsdWRlLCBvcHRpb25zLCAnLScpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignICcpO1xuXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9zZWFyY2gtcXVlcnktcGFyc2VyJyk7XG4iLG51bGwsbnVsbCxudWxsLCI7KGZ1bmN0aW9uKCl7ICd1c2Ugc3RyaWN0JztcblxuICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgICBjb250YWluZXI6IGZhbHNlIC8vIGNhbiBiZSBhIEhUTUwgb3IgalF1ZXJ5IGVsZW1lbnQgb3IgalF1ZXJ5IHNlbGVjdG9yXG4gICAgLCB2aWV3TGl2ZUZyYW1lcmF0ZTogMCAvLyBzZXQgZmFsc2UgdG8gdXBkYXRlIGdyYXBoIHBhbiBvbmx5IG9uIGRyYWcgZW5kOyBzZXQgMCB0byBkbyBpdCBpbnN0YW50bHk7IHNldCBhIG51bWJlciAoZnJhbWVzIHBlciBzZWNvbmQpIHRvIHVwZGF0ZSBub3QgbW9yZSB0aGFuIE4gdGltZXMgcGVyIHNlY29uZFxuICAgICwgZGJsQ2xpY2tEZWxheTogMjAwIC8vIG1pbGxpc2Vjb25kc1xuICAgICwgcmVtb3ZlQ3VzdG9tQ29udGFpbmVyOiB0cnVlIC8vIGRlc3Ryb3kgdGhlIGNvbnRhaW5lciBzcGVjaWZpZWQgYnkgdXNlciBvbiBwbHVnaW4gZGVzdHJveVxuICAgICwgcmVyZW5kZXJEZWxheTogNTAwIC8vIG1zIHRvIHRocm90dGxlIHJlcmVuZGVyIHVwZGF0ZXMgdG8gdGhlIHBhbnpvb20gZm9yIHBlcmZvcm1hbmNlXG4gIH07XG5cbiAgdmFyIGRlYm91bmNlID0gKGZ1bmN0aW9uKCl7XG4gICAgLyoqXG4gICAgICogbG9kYXNoIDMuMS4xIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICAgICAqIEJ1aWxkOiBgbG9kYXNoIG1vZGVybiBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAgICAgKiBDb3B5cmlnaHQgMjAxMi0yMDE1IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICAgICAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gICAgICogQ29weXJpZ2h0IDIwMDktMjAxNSBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICAgICAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gICAgICovXG4gICAgLyoqIFVzZWQgYXMgdGhlIGBUeXBlRXJyb3JgIG1lc3NhZ2UgZm9yIFwiRnVuY3Rpb25zXCIgbWV0aG9kcy4gKi9cbiAgICB2YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4gICAgLyogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbiAgICB2YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgICAgIG5hdGl2ZU5vdyA9IERhdGUubm93O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgVW5peCBlcG9jaFxuICAgICAqICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IERhdGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICAgICAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAgICAgKiB9LCBfLm5vdygpKTtcbiAgICAgKiAvLyA9PiBsb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBmdW5jdGlvbiB0byBiZSBpbnZva2VkXG4gICAgICovXG4gICAgdmFyIG5vdyA9IG5hdGl2ZU5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gICAgICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gICAgICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICAgICAqIGRlbGF5ZWQgaW52b2NhdGlvbnMuIFByb3ZpZGUgYW4gb3B0aW9ucyBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBgZnVuY2BcbiAgICAgKiBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGUgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gICAgICogU3Vic2VxdWVudCBjYWxscyB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0XG4gICAgICogYGZ1bmNgIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzIGludm9rZWRcbiAgICAgKiBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIGlzXG4gICAgICogaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgICAqXG4gICAgICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHA6Ly9kcnVwYWxtb3Rpb24uY29tL2FydGljbGUvZGVib3VuY2UtYW5kLXRocm90dGxlLXZpc3VhbC1leHBsYW5hdGlvbilcbiAgICAgKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV0gU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZ1xuICAgICAqICBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhXYWl0XSBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlXG4gICAgICogIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nXG4gICAgICogIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBhdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4XG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAgICAgKlxuICAgICAqIC8vIGludm9rZSBgc2VuZE1haWxgIHdoZW4gdGhlIGNsaWNrIGV2ZW50IGlzIGZpcmVkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHNcbiAgICAgKiBqUXVlcnkoJyNwb3N0Ym94Jykub24oJ2NsaWNrJywgXy5kZWJvdW5jZShzZW5kTWFpbCwgMzAwLCB7XG4gICAgICogICAnbGVhZGluZyc6IHRydWUsXG4gICAgICogICAndHJhaWxpbmcnOiBmYWxzZVxuICAgICAqIH0pKTtcbiAgICAgKlxuICAgICAqIC8vIGVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHNcbiAgICAgKiB2YXIgc291cmNlID0gbmV3IEV2ZW50U291cmNlKCcvc3RyZWFtJyk7XG4gICAgICogalF1ZXJ5KHNvdXJjZSkub24oJ21lc3NhZ2UnLCBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHtcbiAgICAgKiAgICdtYXhXYWl0JzogMTAwMFxuICAgICAqIH0pKTtcbiAgICAgKlxuICAgICAqIC8vIGNhbmNlbCBhIGRlYm91bmNlZCBjYWxsXG4gICAgICogdmFyIHRvZG9DaGFuZ2VzID0gXy5kZWJvdW5jZShiYXRjaExvZywgMTAwMCk7XG4gICAgICogT2JqZWN0Lm9ic2VydmUobW9kZWxzLnRvZG8sIHRvZG9DaGFuZ2VzKTtcbiAgICAgKlxuICAgICAqIE9iamVjdC5vYnNlcnZlKG1vZGVscywgZnVuY3Rpb24oY2hhbmdlcykge1xuICAgICAqICAgaWYgKF8uZmluZChjaGFuZ2VzLCB7ICd1c2VyJzogJ3RvZG8nLCAndHlwZSc6ICdkZWxldGUnfSkpIHtcbiAgICAgKiAgICAgdG9kb0NoYW5nZXMuY2FuY2VsKCk7XG4gICAgICogICB9XG4gICAgICogfSwgWydkZWxldGUnXSk7XG4gICAgICpcbiAgICAgKiAvLyAuLi5hdCBzb21lIHBvaW50IGBtb2RlbHMudG9kb2AgaXMgY2hhbmdlZFxuICAgICAqIG1vZGVscy50b2RvLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICpcbiAgICAgKiAvLyAuLi5iZWZvcmUgMSBzZWNvbmQgaGFzIHBhc3NlZCBgbW9kZWxzLnRvZG9gIGlzIGRlbGV0ZWRcbiAgICAgKiAvLyB3aGljaCBjYW5jZWxzIHRoZSBkZWJvdW5jZWQgYHRvZG9DaGFuZ2VzYCBjYWxsXG4gICAgICogZGVsZXRlIG1vZGVscy50b2RvO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBhcmdzLFxuICAgICAgICAgIG1heFRpbWVvdXRJZCxcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgc3RhbXAsXG4gICAgICAgICAgdGhpc0FyZyxcbiAgICAgICAgICB0aW1lb3V0SWQsXG4gICAgICAgICAgdHJhaWxpbmdDYWxsLFxuICAgICAgICAgIGxhc3RDYWxsZWQgPSAwLFxuICAgICAgICAgIG1heFdhaXQgPSBmYWxzZSxcbiAgICAgICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHdhaXQgPSB3YWl0IDwgMCA/IDAgOiAoK3dhaXQgfHwgMCk7XG4gICAgICBpZiAob3B0aW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgICB2YXIgbGVhZGluZyA9IHRydWU7XG4gICAgICAgIHRyYWlsaW5nID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAhIW9wdGlvbnMubGVhZGluZztcbiAgICAgICAgbWF4V2FpdCA9ICdtYXhXYWl0JyBpbiBvcHRpb25zICYmIG5hdGl2ZU1heCgrb3B0aW9ucy5tYXhXYWl0IHx8IDAsIHdhaXQpO1xuICAgICAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICAgIGlmICh0aW1lb3V0SWQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF4VGltZW91dElkKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KG1heFRpbWVvdXRJZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdENhbGxlZCA9IDA7XG4gICAgICAgIG1heFRpbWVvdXRJZCA9IHRpbWVvdXRJZCA9IHRyYWlsaW5nQ2FsbCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gY29tcGxldGUoaXNDYWxsZWQsIGlkKSB7XG4gICAgICAgIGlmIChpZCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dChpZCk7XG4gICAgICAgIH1cbiAgICAgICAgbWF4VGltZW91dElkID0gdGltZW91dElkID0gdHJhaWxpbmdDYWxsID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoaXNDYWxsZWQpIHtcbiAgICAgICAgICBsYXN0Q2FsbGVkID0gbm93KCk7XG4gICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgICBpZiAoIXRpbWVvdXRJZCAmJiAhbWF4VGltZW91dElkKSB7XG4gICAgICAgICAgICBhcmdzID0gdGhpc0FyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZGVsYXllZCgpIHtcbiAgICAgICAgdmFyIHJlbWFpbmluZyA9IHdhaXQgLSAobm93KCkgLSBzdGFtcCk7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPD0gMCB8fCByZW1haW5pbmcgPiB3YWl0KSB7XG4gICAgICAgICAgY29tcGxldGUodHJhaWxpbmdDYWxsLCBtYXhUaW1lb3V0SWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZGVsYXllZCwgcmVtYWluaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBtYXhEZWxheWVkKCkge1xuICAgICAgICBjb21wbGV0ZSh0cmFpbGluZywgdGltZW91dElkKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZGVib3VuY2VkKCkge1xuICAgICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBzdGFtcCA9IG5vdygpO1xuICAgICAgICB0aGlzQXJnID0gdGhpcztcbiAgICAgICAgdHJhaWxpbmdDYWxsID0gdHJhaWxpbmcgJiYgKHRpbWVvdXRJZCB8fCAhbGVhZGluZyk7XG5cbiAgICAgICAgaWYgKG1heFdhaXQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgdmFyIGxlYWRpbmdDYWxsID0gbGVhZGluZyAmJiAhdGltZW91dElkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghbWF4VGltZW91dElkICYmICFsZWFkaW5nKSB7XG4gICAgICAgICAgICBsYXN0Q2FsbGVkID0gc3RhbXA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciByZW1haW5pbmcgPSBtYXhXYWl0IC0gKHN0YW1wIC0gbGFzdENhbGxlZCksXG4gICAgICAgICAgICAgIGlzQ2FsbGVkID0gcmVtYWluaW5nIDw9IDAgfHwgcmVtYWluaW5nID4gbWF4V2FpdDtcblxuICAgICAgICAgIGlmIChpc0NhbGxlZCkge1xuICAgICAgICAgICAgaWYgKG1heFRpbWVvdXRJZCkge1xuICAgICAgICAgICAgICBtYXhUaW1lb3V0SWQgPSBjbGVhclRpbWVvdXQobWF4VGltZW91dElkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKCFtYXhUaW1lb3V0SWQpIHtcbiAgICAgICAgICAgIG1heFRpbWVvdXRJZCA9IHNldFRpbWVvdXQobWF4RGVsYXllZCwgcmVtYWluaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ2FsbGVkICYmIHRpbWVvdXRJZCkge1xuICAgICAgICAgIHRpbWVvdXRJZCA9IGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF0aW1lb3V0SWQgJiYgd2FpdCAhPT0gbWF4V2FpdCkge1xuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZGVsYXllZCwgd2FpdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlYWRpbmdDYWxsKSB7XG4gICAgICAgICAgaXNDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ2FsbGVkICYmICF0aW1lb3V0SWQgJiYgIW1heFRpbWVvdXRJZCkge1xuICAgICAgICAgIGFyZ3MgPSB0aGlzQXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBkZWJvdW5jZWQuY2FuY2VsID0gY2FuY2VsO1xuICAgICAgcmV0dXJuIGRlYm91bmNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGUgW2xhbmd1YWdlIHR5cGVdKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDgpIG9mIGBPYmplY3RgLlxuICAgICAqIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdCh7fSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QoMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAgICAgLy8gQXZvaWQgYSBWOCBKSVQgYnVnIGluIENocm9tZSAxOS0yMC5cbiAgICAgIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWJvdW5jZTtcblxuICB9KSgpO1xuXG4gIC8vIHBvcnRlZCBsb2Rhc2ggdGhyb3R0bGUgZnVuY3Rpb25cbiAgdmFyIHRocm90dGxlID0gZnVuY3Rpb24oIGZ1bmMsIHdhaXQsIG9wdGlvbnMgKXtcbiAgICB2YXIgbGVhZGluZyA9IHRydWUsXG4gICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgIGlmKCBvcHRpb25zID09PSBmYWxzZSApe1xuICAgICAgbGVhZGluZyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiggdHlwZW9mIG9wdGlvbnMgPT09IHR5cGVvZiB7fSApe1xuICAgICAgbGVhZGluZyA9ICdsZWFkaW5nJyBpbiBvcHRpb25zID8gb3B0aW9ucy5sZWFkaW5nIDogbGVhZGluZztcbiAgICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICAgIH1cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBvcHRpb25zLmxlYWRpbmcgPSBsZWFkaW5nO1xuICAgIG9wdGlvbnMubWF4V2FpdCA9IHdhaXQ7XG4gICAgb3B0aW9ucy50cmFpbGluZyA9IHRyYWlsaW5nO1xuXG4gICAgcmV0dXJuIGRlYm91bmNlKCBmdW5jLCB3YWl0LCBvcHRpb25zICk7XG4gIH07XG5cbiAgdmFyIE5hdmlnYXRvciA9IGZ1bmN0aW9uICggZWxlbWVudCwgb3B0aW9ucyApIHtcbiAgICB0aGlzLl9pbml0KGVsZW1lbnQsIG9wdGlvbnMpXG4gIH07XG5cbiAgdmFyIGV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIGZvcih2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvcih2YXIga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgICBpZihhcmd1bWVudHNbaV0uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIGFyZ3VtZW50c1swXVtrZXldID0gYXJndW1lbnRzW2ldW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgfTtcblxuICB2YXIgd2lkID0gZnVuY3Rpb24oZWxlbSkge1xuICAgIHJldHVybiBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICB9O1xuXG4gIHZhciBoZWkgPSBmdW5jdGlvbihlbGVtKSB7XG4gICAgcmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICB9O1xuXG4gIE5hdmlnYXRvci5wcm90b3R5cGUgPSB7XG5cbiAgICBjb25zdHJ1Y3RvcjogTmF2aWdhdG9yXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICBNYWluIGZ1bmN0aW9uc1xuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICwgYmI6IGZ1bmN0aW9uKCl7XG4gICAgdmFyIGJiID0gdGhpcy5jeS5lbGVtZW50cygpLmJvdW5kaW5nQm94KClcblxuICAgIGlmKCBiYi53ID09PSAwIHx8IGJiLmggPT09IDAgKXtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHgxOiAwLFxuICAgICAgICB4MjogSW5maW5pdHksXG4gICAgICAgIHkxOiAwLFxuICAgICAgICB5MjogSW5maW5pdHksXG4gICAgICAgIHc6IEluZmluaXR5LFxuICAgICAgICBoOiBJbmZpbml0eVxuICAgICAgfSAvLyA9PiBoaWRlIGludGVyYWN0aXZlIG92ZXJsYXlcbiAgICB9XG5cbiAgICByZXR1cm4gYmJcbiAgfVxuXG4gICwgX2FkZEN5TGlzdGVuZXI6IGZ1bmN0aW9uKGV2ZW50cywgaGFuZGxlcil7XG4gICAgdGhpcy5fY3lMaXN0ZW5lcnMucHVzaCh7XG4gICAgICBldmVudHM6IGV2ZW50cyxcbiAgICAgIGhhbmRsZXI6IGhhbmRsZXJcbiAgICB9KVxuXG4gICAgdGhpcy5jeS5vbihldmVudHMsIGhhbmRsZXIpXG4gIH1cblxuICAsIF9yZW1vdmVDeUxpc3RlbmVyczogZnVuY3Rpb24oKXtcbiAgICB2YXIgY3kgPSB0aGlzLmN5XG5cbiAgICB0aGlzLl9jeUxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKGwpe1xuICAgICAgY3kub2ZmKGwuZXZlbnRzLCBsLmhhbmRsZXIpXG4gICAgfSlcblxuICAgIGN5Lm9mZlJlbmRlcih0aGlzLl9vblJlbmRlckhhbmRsZXIpXG4gIH1cblxuICAsIF9pbml0OiBmdW5jdGlvbiAoIGN5LCBvcHRpb25zICkge1xuICAgICAgdGhpcy5fY3lMaXN0ZW5lcnMgPSBbXVxuXG4gICAgICB0aGlzLiRlbGVtZW50ID0gY3kuY29udGFpbmVyKClcbiAgICAgIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIG9wdGlvbnMpXG5cbiAgICAgIHRoaXMuY3kgPSBjeVxuXG4gICAgICAvLyBDYWNoZSBib3VuZGluZyBib3hcbiAgICAgIHRoaXMuYm91bmRpbmdCb3ggPSB0aGlzLmJiKClcblxuICAgICAgLy8gQ2FjaGUgc2l6ZXNcbiAgICAgIHRoaXMud2lkdGggPSB3aWQodGhpcy4kZWxlbWVudCk7XG4gICAgICB0aGlzLmhlaWdodCA9IGhlaSh0aGlzLiRlbGVtZW50KVxuXG4gICAgICAvLyBJbml0IGNvbXBvbmVudHNcbiAgICAgIHRoaXMuX2luaXRQYW5lbCgpXG4gICAgICB0aGlzLl9pbml0VGh1bWJuYWlsKClcbiAgICAgIHRoaXMuX2luaXRWaWV3KClcbiAgICAgIHRoaXMuX2luaXRPdmVybGF5KClcbiAgICB9XG5cbiAgLCBkZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLl9yZW1vdmVFdmVudHNIYW5kbGluZygpO1xuXG4gICAgICAvLyBJZiBjb250YWluZXIgaXMgbm90IGNyZWF0ZWQgYnkgbmF2aWdhdG9yIGFuZCBpdHMgcmVtb3ZhbCBpcyBwcm9oaWJpdGVkXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRhaW5lciAmJiAhdGhpcy5vcHRpb25zLnJlbW92ZUN1c3RvbUNvbnRhaW5lcikge1xuICAgICAgICB0aGlzLiRwYW5lbC5pbm5lckhUTUwgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJHBhbmVsLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy4kcGFuZWwpO1xuICAgICAgfVxuICAgIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIE5hdmlnYXRvciBlbGVtZW50cyBmdW5jdGlvbnNcbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIC8qXG4gICAgICogVXNlZCBpbm5lciBhdHRyaWJ1dGVzXG4gICAgICpcbiAgICAgKiB3IHtudW1iZXJ9IHdpZHRoXG4gICAgICogaCB7bnVtYmVyfSBoZWlnaHRcbiAgICAgKi9cbiAgLCBfaW5pdFBhbmVsOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uc1xuICAgICAgaWYob3B0aW9ucy5jb250YWluZXIgJiYgdHlwZW9mIG9wdGlvbnMuY29udGFpbmVyID09PSAnc3RyaW5nJyAmJiBvcHRpb25zLmNvbnRhaW5lci5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIHRvIG5vdCBicmVhayB1c2VycyB3aGljaCBnaXZlcyBhIGpxdWVyeSBzdHJpbmcgc2VsZWN0b3JcbiAgICAgICAgaWYgKG9wdGlvbnMuY29udGFpbmVyLmluZGV4T2YoJyMnKSAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLiRwYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9wdGlvbnMuY29udGFpbmVyLnJlcGxhY2UoJyMnLCAnJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuJHBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShvcHRpb25zLmNvbnRhaW5lci5yZXBsYWNlKCcuJywgJycpKVswXTtcbiAgICAgICAgfSBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJHBhbmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMuJHBhbmVsLmNsYXNzTmFtZSA9ICdjeXRvc2NhcGUtbmF2aWdhdG9yJztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLiRwYW5lbCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9zZXR1cFBhbmVsKClcbiAgICAgIHRoaXMuX2FkZEN5TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplLmJpbmQodGhpcykpXG4gICAgfVxuXG4gICwgX3NldHVwUGFuZWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIENhY2hlIHNpemVzXG4gICAgICB0aGlzLnBhbmVsV2lkdGggPSB3aWQodGhpcy4kcGFuZWwpO1xuICAgICAgdGhpcy5wYW5lbEhlaWdodCA9IGhlaSh0aGlzLiRwYW5lbCk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBVc2VkIGlubmVyIGF0dHJpYnV0ZXNcbiAgICAgKlxuICAgICAqIHpvb20ge251bWJlcn1cbiAgICAgKiBwYW4ge29iamVjdH0gLSB7eDogMCwgeTogMH1cbiAgICAgKi9cbiAgLCBfaW5pdFRodW1ibmFpbDogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQ3JlYXRlIHRodW1ibmFpbFxuICAgICAgdGhpcy4kdGh1bWJuYWlsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG5cbiAgICAgIC8vIEFkZCB0aHVtYm5haWwgY2FudmFzIHRvIHRoZSBET01cbiAgICAgIHRoaXMuJHBhbmVsLmFwcGVuZENoaWxkKHRoaXMuJHRodW1ibmFpbCk7XG5cbiAgICAgIC8vIFNldHVwIHRodW1ibmFpbFxuICAgICAgdGhpcy5fc2V0dXBUaHVtYm5haWxTaXplcygpXG4gICAgICB0aGlzLl9zZXR1cFRodW1ibmFpbCgpXG4gICAgfVxuXG4gICwgX3NldHVwVGh1bWJuYWlsOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLl91cGRhdGVUaHVtYm5haWxJbWFnZSgpXG4gICAgfVxuXG4gICwgX3NldHVwVGh1bWJuYWlsU2l6ZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFVwZGF0ZSBib3VuZGluZyBib3ggY2FjaGVcbiAgICAgIHRoaXMuYm91bmRpbmdCb3ggPSB0aGlzLmJiKClcblxuICAgICAgdGhpcy50aHVtYm5haWxab29tID0gTWF0aC5taW4odGhpcy5wYW5lbEhlaWdodCAvIHRoaXMuYm91bmRpbmdCb3guaCwgdGhpcy5wYW5lbFdpZHRoIC8gdGhpcy5ib3VuZGluZ0JveC53KVxuXG4gICAgICAvLyBVc2VkIG9uIHRodW1ibmFpbCBnZW5lcmF0aW9uXG4gICAgICB0aGlzLnRodW1ibmFpbFBhbiA9IHtcbiAgICAgICAgeDogKHRoaXMucGFuZWxXaWR0aCAtIHRoaXMudGh1bWJuYWlsWm9vbSAqICh0aGlzLmJvdW5kaW5nQm94LngxICsgdGhpcy5ib3VuZGluZ0JveC54MikpLzJcbiAgICAgICwgeTogKHRoaXMucGFuZWxIZWlnaHQgLSB0aGlzLnRodW1ibmFpbFpvb20gKiAodGhpcy5ib3VuZGluZ0JveC55MSArIHRoaXMuYm91bmRpbmdCb3gueTIpKS8yXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgYm91bmRpbmcgYm94IGhhcyBjaGFuZ2VkIHRoZW4gdXBkYXRlIHNpemVzXG4gICAgLy8gT3RoZXJ3aXNlIGp1c3QgdXBkYXRlIHRoZSB0aHVtYm5haWxcbiAgLCBfY2hlY2tUaHVtYm5haWxTaXplc0FuZFVwZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQ2FjaGUgcHJldmlvdXMgdmFsdWVzXG4gICAgICB2YXIgX3pvb20gPSB0aGlzLnRodW1ibmFpbFpvb21cbiAgICAgICAgLCBfcGFuX3ggPSB0aGlzLnRodW1ibmFpbFBhbi54XG4gICAgICAgICwgX3Bhbl95ID0gdGhpcy50aHVtYm5haWxQYW4ueVxuXG4gICAgICB0aGlzLl9zZXR1cFRodW1ibmFpbFNpemVzKClcblxuICAgICAgaWYgKF96b29tICE9IHRoaXMudGh1bWJuYWlsWm9vbSB8fCBfcGFuX3ggIT0gdGhpcy50aHVtYm5haWxQYW4ueCB8fCBfcGFuX3kgIT0gdGhpcy50aHVtYm5haWxQYW4ueSkge1xuICAgICAgICB0aGlzLl9zZXR1cFRodW1ibmFpbCgpXG4gICAgICAgIHRoaXMuX3NldHVwVmlldygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl91cGRhdGVUaHVtYm5haWxJbWFnZSgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBVc2VkIGlubmVyIGF0dHJpYnV0ZXNcbiAgICAgKlxuICAgICAqIHcge251bWJlcn0gd2lkdGhcbiAgICAgKiBoIHtudW1iZXJ9IGhlaWdodFxuICAgICAqIHgge251bWJlcn1cbiAgICAgKiB5IHtudW1iZXJ9XG4gICAgICogYm9yZGVyV2lkdGgge251bWJlcn1cbiAgICAgKiBsb2NrZWQge2Jvb2xlYW59XG4gICAgICovXG4gICwgX2luaXRWaWV3OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLiR2aWV3ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0aGlzLiR2aWV3LmNsYXNzTmFtZSA9ICdjeXRvc2NhcGUtbmF2aWdhdG9yVmlldyc7XG4gICAgICB0aGlzLiRwYW5lbC5hcHBlbmRDaGlsZCh0aGlzLiR2aWV3KVxuICAgICAgLy8gQ29tcHV0ZSBib3JkZXJzXG4gICAgICB0aGlzLnZpZXdCb3JkZXJUb3AgPSBwYXJzZUludCh0aGlzLiR2aWV3LnN0eWxlWydib3JkZXItdG9wLXdpZHRoJ10sIDEwKSB8fCAwO1xuICAgICAgdGhpcy52aWV3Qm9yZGVyUmlnaHQgPSBwYXJzZUludCh0aGlzLiR2aWV3LnN0eWxlWydib3JkZXItcmlnaHQtd2lkdGgnXSwgMTApIHx8IDA7XG4gICAgICB0aGlzLnZpZXdCb3JkZXJCb3R0b20gPSBwYXJzZUludCh0aGlzLiR2aWV3LnN0eWxlWydib3JkZXItYm90dG9tLXdpZHRoJ10sIDEwKSB8fCAwO1xuICAgICAgdGhpcy52aWV3Qm9yZGVyTGVmdCA9IHBhcnNlSW50KHRoaXMuJHZpZXcuc3R5bGVbJ2JvcmRlci1sZWZ0LXdpZHRoJ10sIDEwKSB8fCAwO1xuICAgICAgXG4gICAgICAvLyBBYnN0cmFjdCBib3JkZXJzXG4gICAgICB0aGlzLnZpZXdCb3JkZXJIb3Jpem9udGFsID0gdGhpcy52aWV3Qm9yZGVyTGVmdCArIHRoaXMudmlld0JvcmRlclJpZ2h0XG4gICAgICB0aGlzLnZpZXdCb3JkZXJWZXJ0aWNhbCA9IHRoaXMudmlld0JvcmRlclRvcCArIHRoaXMudmlld0JvcmRlckJvdHRvbVxuXG4gICAgICB0aGlzLl9zZXR1cFZpZXcoKVxuXG4gICAgICAvLyBIb29rIGdyYXBoIHpvb20gYW5kIHBhblxuICAgICAgdGhpcy5fYWRkQ3lMaXN0ZW5lcignem9vbSBwYW4nLCB0aGlzLl9zZXR1cFZpZXcuYmluZCh0aGlzKSlcbiAgICB9XG5cbiAgLCBfc2V0dXBWaWV3OiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodGhpcy52aWV3TG9ja2VkKVxuICAgICAgICByZXR1cm5cblxuICAgICAgdmFyIGN5Wm9vbSA9IHRoaXMuY3kuem9vbSgpXG4gICAgICAgICwgY3lQYW4gPSB0aGlzLmN5LnBhbigpXG5cbiAgICAgIC8vIEhvcml6b250YWwgY29tcHV0YXRpb25cbiAgICAgIHRoaXMudmlld1cgPSB0aGlzLndpZHRoIC8gY3lab29tICogdGhpcy50aHVtYm5haWxab29tXG4gICAgICB0aGlzLnZpZXdYID0gLWN5UGFuLnggKiB0aGlzLnZpZXdXIC8gdGhpcy53aWR0aCArIHRoaXMudGh1bWJuYWlsUGFuLnggLSB0aGlzLnZpZXdCb3JkZXJMZWZ0XG5cbiAgICAgIC8vIFZlcnRpY2FsIGNvbXB1dGF0aW9uXG4gICAgICB0aGlzLnZpZXdIID0gdGhpcy5oZWlnaHQgLyBjeVpvb20gKiB0aGlzLnRodW1ibmFpbFpvb21cbiAgICAgIHRoaXMudmlld1kgPSAtY3lQYW4ueSAqIHRoaXMudmlld0ggLyB0aGlzLmhlaWdodCArIHRoaXMudGh1bWJuYWlsUGFuLnkgLSB0aGlzLnZpZXdCb3JkZXJUb3BcblxuICAgICAgLy8gQ1NTIHZpZXdcbiAgICAgIHRoaXMuJHZpZXcuc3R5bGVbJ3dpZHRoJ10gPSB0aGlzLnZpZXdXICsgJ3B4JztcbiAgICAgIHRoaXMuJHZpZXcuc3R5bGVbJ2hlaWdodCddID0gdGhpcy52aWV3SCArICdweCc7XG4gICAgICB0aGlzLiR2aWV3LnN0eWxlWydwb3NpdGlvbiddID0gJ2Fic29sdXRlJztcbiAgICAgIHRoaXMuJHZpZXcuc3R5bGVbJ2xlZnQnXSA9IHRoaXMudmlld1ggKyAncHgnO1xuICAgICAgdGhpcy4kdmlldy5zdHlsZVsndG9wJ10gPSB0aGlzLnZpZXdZICsgJ3B4JztcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIFVzZWQgaW5uZXIgYXR0cmlidXRlc1xuICAgICAqXG4gICAgICogdGltZW91dCB7bnVtYmVyfSB1c2VkIHRvIGtlZXAgc3RhYmxlIGZyYW1lIHJhdGVcbiAgICAgKiBsYXN0TW92ZVN0YXJ0VGltZSB7bnVtYmVyfVxuICAgICAqIGluTW92ZW1lbnQge2Jvb2xlYW59XG4gICAgICogaG9va1BvaW50IHtvYmplY3R9IHt4OiAwLCB5OiAwfVxuICAgICAqL1xuICAsIF9pbml0T3ZlcmxheTogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVXNlZCB0byBjYXB0dXJlIG1vdXNlIGV2ZW50c1xuICAgICAgdGhpcy4kb3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGhpcy4kb3ZlcmxheS5jbGFzc05hbWUgPSAnY3l0b3NjYXBlLW5hdmlnYXRvck92ZXJsYXknO1xuXG4gICAgICAvLyBBZGQgb3ZlcmxheSB0byB0aGUgRE9NXG4gICAgICB0aGlzLiRwYW5lbC5hcHBlbmRDaGlsZCh0aGlzLiRvdmVybGF5KVxuXG4gICAgICAvLyBJbml0IHNvbWUgYXR0cmlidXRlc1xuICAgICAgdGhpcy5vdmVybGF5SG9va1BvaW50WCA9IDA7XG4gICAgICB0aGlzLm92ZXJsYXlIb29rUG9pbnRZID0gMDtcblxuICAgICAgLy8gTGlzdGVuIGZvciBldmVudHNcbiAgICAgIHRoaXMuX2luaXRFdmVudHNIYW5kbGluZygpXG4gICAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgRXZlbnQgaGFuZGxpbmcgZnVuY3Rpb25zXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLCByZXNpemU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIENhY2hlIHNpemVzXG4gICAgICB0aGlzLndpZHRoID0gd2lkKHRoaXMuJGVsZW1lbnQpO1xuICAgICAgdGhpcy5oZWlnaHQgPSBoZWkodGhpcy4kZWxlbWVudCk7XG4gICAgICB0aGlzLl90aHVtYm5haWxTZXR1cCA9IGZhbHNlXG4gICAgICB0aGlzLl9zZXR1cFBhbmVsKClcbiAgICAgIHRoaXMuX2NoZWNrVGh1bWJuYWlsU2l6ZXNBbmRVcGRhdGUoKVxuICAgICAgdGhpcy5fc2V0dXBWaWV3KClcbiAgICB9XG5cbiAgLCBfaW5pdEV2ZW50c0hhbmRsaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICAgICAgLCBldmVudHNMb2NhbCA9IFtcbiAgICAgICAgLy8gTW91c2UgZXZlbnRzXG4gICAgICAgICAgJ21vdXNlZG93bidcbiAgICAgICAgLCAnbW91c2V3aGVlbCdcbiAgICAgICAgLCAnRE9NTW91c2VTY3JvbGwnIC8vIE1vemlsbGEgc3BlY2lmaWMgZXZlbnRcbiAgICAgICAgLy8gVG91Y2ggZXZlbnRzXG4gICAgICAgICwgJ3RvdWNoc3RhcnQnXG4gICAgICAgIF1cbiAgICAgICAgLCBldmVudHNHbG9iYWwgPSBbXG4gICAgICAgICAgJ21vdXNldXAnXG4gICAgICAgICwgJ21vdXNlb3V0J1xuICAgICAgICAsICdtb3VzZW1vdmUnXG4gICAgICAgIC8vIFRvdWNoIGV2ZW50c1xuICAgICAgICAsICd0b3VjaG1vdmUnXG4gICAgICAgICwgJ3RvdWNoZW5kJ1xuICAgICAgICBdXG5cbiAgICAgIC8vIGhhbmRsZSBldmVudHMgYW5kIHN0b3AgdGhlaXIgcHJvcGFnYXRpb25cbiAgICAgIHZhciBvdmVybGF5TGlzdGVuZXIgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgLy8gVG91Y2ggZXZlbnRzXG4gICAgICAgIGlmIChldi50eXBlID09ICd0b3VjaHN0YXJ0Jykge1xuICAgICAgICAgIC8vIFdpbGwgY291bnQgYXMgbWlkZGxlIG9mIFZpZXdcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXYsICdvZmZzZXRYJywge1xuICAgICAgICAgICAgdmFsdWU6IHRoYXQudmlld1ggKyB0aGF0LnZpZXdXIC8gMixcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV2LCAnb2Zmc2V0WScsIHtcbiAgICAgICAgICAgIHZhbHVlOiB0aGF0LnZpZXdZICsgdGhhdC52aWV3SCAvIDIsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm9ybWFsaXplIG9mZnNldCBmb3IgYnJvd3NlcnMgd2hpY2ggZG8gbm90IHByb3ZpZGUgdGhhdCB2YWx1ZVxuICAgICAgICBpZiAoZXYub2Zmc2V0WCA9PT0gdW5kZWZpbmVkIHx8IGV2Lm9mZnNldFkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhciByZWN0ID0gZXYudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIHZhciB0YXJnZXRPZmZzZXQgPSB7IFxuICAgICAgICAgICAgdG9wOiByZWN0LnRvcCArIHdpbmRvdy5zY3JvbGxZLCBcbiAgICAgICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYLCBcbiAgICAgICAgICB9O1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFgnLCB7XG4gICAgICAgICAgICB2YWx1ZTogZXYucGFnZVggLSB0YXJnZXRPZmZzZXQubGVmdCxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV2LCAnb2Zmc2V0WScsIHtcbiAgICAgICAgICAgIHZhbHVlOiBldi5wYWdlWSAtIHRhcmdldE9mZnNldC50b3AsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2LnR5cGUgPT0gJ21vdXNlZG93bicgfHwgZXYudHlwZSA9PSAndG91Y2hzdGFydCcpIHtcbiAgICAgICAgICB0aGF0Ll9ldmVudE1vdmVTdGFydChldilcbiAgICAgICAgfSBlbHNlIGlmIChldi50eXBlID09ICdtb3VzZXdoZWVsJyB8fCBldi50eXBlID09ICdET01Nb3VzZVNjcm9sbCcpIHtcbiAgICAgICAgICB0aGF0Ll9ldmVudFpvb20oZXYpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmV2ZW50IGRlZmF1bHQgYW5kIHByb3BhZ2F0aW9uXG4gICAgICAgIC8vIERvbid0IHVzZSBwZXZlbnRQcm9wYWdhdGlvbiBhcyBpdCBicmVha3MgbW91c2UgZXZlbnRzXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH07XG5cbiAgICAgIC8vIEhvb2sgZ2xvYmFsIGV2ZW50c1xuICAgICAgdmFyIGdsb2JhbExpc3RlbmVyID0gZnVuY3Rpb24gKGV2KSB7XG5cbiAgICAgICAgLy8gRG8gbm90IG1ha2UgYW55IGNvbXB1dGF0aW9ucyBpZiBpdCBpcyBoYXMgbm8gZWZmZWN0IG9uIE5hdmlnYXRvclxuICAgICAgICBpZiAoIXRoYXQub3ZlcmxheUluTW92ZW1lbnQpXG4gICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIC8vIFRvdWNoIGV2ZW50c1xuICAgICAgICBpZiAoZXYudHlwZSA9PSAndG91Y2hlbmQnKSB7XG4gICAgICAgICAgLy8gV2lsbCBjb3VudCBhcyBtaWRkbGUgb2YgVmlld1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFgnLCB7XG4gICAgICAgICAgICB2YWx1ZTogdGhhdC52aWV3WCArIHRoYXQudmlld1cgLyAyLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXYsICdvZmZzZXRZJywge1xuICAgICAgICAgICAgdmFsdWU6IHRoYXQudmlld1kgKyB0aGF0LnZpZXdIIC8gMixcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXYudHlwZSA9PSAndG91Y2htb3ZlJykge1xuICAgICAgICAgIC8vIEhhY2sgLSB3ZSB0YWtlIGluIGFjY291bnQgb25seSBmaXJzdCB0b3VjaFxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ3BhZ2VYJywge1xuICAgICAgICAgICAgdmFsdWU6IGV2Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWCxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV2LCAncGFnZVknLCB7XG4gICAgICAgICAgICB2YWx1ZTogZXYub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VZLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vcm1hbGl6ZSBvZmZzZXQgZm9yIGJyb3dzZXJzIHdoaWNoIGRvIG5vdCBwcm92aWRlIHRoYXQgdmFsdWVcbiAgICAgICAgaWYgKGV2Lm9mZnNldFggPT09IHVuZGVmaW5lZCB8fCBldi5vZmZzZXRZID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YXIgcmVjdCA9IGV2LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICB2YXIgdGFyZ2V0T2Zmc2V0ID0geyBcbiAgICAgICAgICAgIHRvcDogcmVjdC50b3AgKyB3aW5kb3cuc2Nyb2xsWSwgXG4gICAgICAgICAgICBsZWZ0OiByZWN0LmxlZnQgKyB3aW5kb3cuc2Nyb2xsWCwgXG4gICAgICAgICAgfTtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXYsICdvZmZzZXRYJywge1xuICAgICAgICAgICAgdmFsdWU6IGV2LnBhZ2VYIC0gdGFyZ2V0T2Zmc2V0LmxlZnQsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFknLCB7XG4gICAgICAgICAgICB2YWx1ZTogZXYucGFnZVkgLSB0YXJnZXRPZmZzZXQudG9wLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRyYW5zbGF0ZSBnbG9iYWwgZXZlbnRzIGludG8gbG9jYWwgY29vcmRpbmF0ZXNcbiAgICAgICAgaWYgKGV2LnRhcmdldCAhPT0gdGhhdC4kb3ZlcmxheSkge1xuICAgICAgICAgIHZhciByZWN0ID0gZXYudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIHZhciByZWN0MiA9IHRoYXQuJG92ZXJsYXkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgdmFyIHRhcmdldE9mZnNldCA9IHsgXG4gICAgICAgICAgICB0b3A6IHJlY3QudG9wICsgd2luZG93LnNjcm9sbFksIFxuICAgICAgICAgICAgbGVmdDogcmVjdC5sZWZ0ICsgd2luZG93LnNjcm9sbFgsIFxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIG92ZXJsYXlPZmZzZXQgPSB7IFxuICAgICAgICAgICAgdG9wOiByZWN0Mi50b3AgKyB3aW5kb3cuc2Nyb2xsWSwgXG4gICAgICAgICAgICBsZWZ0OiByZWN0Mi5sZWZ0ICsgd2luZG93LnNjcm9sbFgsIFxuICAgICAgICAgIH07XG4gICAgICAgICAgXG4gICAgICAgICAgaWYodGFyZ2V0T2Zmc2V0ICYmIG92ZXJsYXlPZmZzZXQpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFgnLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiBldi5vZmZzZXRYIC0gb3ZlcmxheU9mZnNldC5sZWZ0ICsgdGFyZ2V0T2Zmc2V0LmxlZnQsXG4gICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFknLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiBldi5vZmZzZXRZIC0gb3ZlcmxheU9mZnNldC50b3AgKyB0YXJnZXRPZmZzZXQudG9wLFxuICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXYudHlwZSA9PSAnbW91c2Vtb3ZlJyB8fCBldi50eXBlID09ICd0b3VjaG1vdmUnKSB7XG4gICAgICAgICAgdGhhdC5fZXZlbnRNb3ZlKGV2KVxuICAgICAgICB9IGVsc2UgaWYgKGV2LnR5cGUgPT0gJ21vdXNldXAnIHx8IGV2LnR5cGUgPT0gJ3RvdWNoZW5kJykge1xuICAgICAgICAgIHRoYXQuX2V2ZW50TW92ZUVuZChldilcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByZXZlbnQgZGVmYXVsdCBhbmQgcHJvcGFnYXRpb25cbiAgICAgICAgLy8gRG9uJ3QgdXNlIHBldmVudFByb3BhZ2F0aW9uIGFzIGl0IGJyZWFrcyBtb3VzZSBldmVudHNcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudHNMb2NhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLiRvdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRzTG9jYWxbaV0sIG92ZXJsYXlMaXN0ZW5lciwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50c0dsb2JhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihldmVudHNHbG9iYWxbaV0sIGdsb2JhbExpc3RlbmVyLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3JlbW92ZUV2ZW50c0hhbmRsaW5nID0gZnVuY3Rpb24oKXtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50c0xvY2FsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy4kb3ZlcmxheS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50c0xvY2FsW2ldLCBvdmVybGF5TGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudHNHbG9iYWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudHNHbG9iYWxbaV0sIGdsb2JhbExpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAsIF9ldmVudE1vdmVTdGFydDogZnVuY3Rpb24gKGV2KSB7XG4gICAgICB2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKClcblxuICAgICAgLy8gQ2hlY2sgaWYgaXQgd2FzIGRvdWJsZSBjbGlja1xuICAgICAgaWYgKHRoaXMub3ZlcmxheUxhc3RNb3ZlU3RhcnRUaW1lXG4gICAgICAgICYmIHRoaXMub3ZlcmxheUxhc3RNb3ZlU3RhcnRUaW1lICsgdGhpcy5vcHRpb25zLmRibENsaWNrRGVsYXkgPiBub3cpIHtcbiAgICAgICAgLy8gUmVzZXQgbGFzdE1vdmVTdGFydFRpbWVcbiAgICAgICAgdGhpcy5vdmVybGF5TGFzdE1vdmVTdGFydFRpbWUgPSAwXG4gICAgICAgIC8vIEVuYWJsZSBWaWV3IGluIG9yZGVyIHRvIG1vdmUgaXQgdG8gdGhlIGNlbnRlclxuICAgICAgICB0aGlzLm92ZXJsYXlJbk1vdmVtZW50ID0gdHJ1ZVxuXG4gICAgICAgIC8vIFNldCBob29rIHBvaW50IGFzIFZpZXcgY2VudGVyXG4gICAgICAgIHRoaXMub3ZlcmxheUhvb2tQb2ludFggPSB0aGlzLnZpZXdXIC8gMlxuICAgICAgICB0aGlzLm92ZXJsYXlIb29rUG9pbnRZID0gdGhpcy52aWV3SCAvIDJcblxuICAgICAgICAvLyBNb3ZlIFZpZXcgdG8gc3RhcnQgcG9pbnRcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy52aWV3TGl2ZUZyYW1lcmF0ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICB0aGlzLl9ldmVudE1vdmUoe1xuICAgICAgICAgICAgb2Zmc2V0WDogdGhpcy5wYW5lbFdpZHRoIC8gMlxuICAgICAgICAgICwgb2Zmc2V0WTogdGhpcy5wYW5lbEhlaWdodCAvIDJcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2V2ZW50TW92ZUVuZCh7XG4gICAgICAgICAgICBvZmZzZXRYOiB0aGlzLnBhbmVsV2lkdGggLyAyXG4gICAgICAgICAgLCBvZmZzZXRZOiB0aGlzLnBhbmVsSGVpZ2h0IC8gMlxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBWaWV3IHNob3VsZCBiZSBpbmFjdGl2ZSBhcyB3ZSBkb24ndCB3YW50IHRvIG1vdmUgaXQgcmlnaHQgYWZ0ZXIgZG91YmxlIGNsaWNrXG4gICAgICAgIHRoaXMub3ZlcmxheUluTW92ZW1lbnQgPSBmYWxzZVxuICAgICAgfVxuICAgICAgLy8gVGhpcyBpcyBhIHNpbmdsZSBjbGlja1xuICAgICAgLy8gVGFrZSBjYXJlIGFzIHNpbmdsZSBjbGljayBoYXBwZW5zIGJlZm9yZSBkb3VibGUgY2xpY2sgMiB0aW1lc1xuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMub3ZlcmxheUxhc3RNb3ZlU3RhcnRUaW1lID0gbm93XG4gICAgICAgIHRoaXMub3ZlcmxheUluTW92ZW1lbnQgPSB0cnVlXG4gICAgICAgIC8vIExvY2sgdmlldyBtb3ZpbmcgY2F1c2VkIGJ5IGN5IGV2ZW50c1xuICAgICAgICB0aGlzLnZpZXdMb2NrZWQgPSB0cnVlXG5cbiAgICAgICAgLy8gaWYgZXZlbnQgc3RhcnRlZCBpbiBWaWV3XG4gICAgICAgIGlmIChldi5vZmZzZXRYID49IHRoaXMudmlld1ggJiYgZXYub2Zmc2V0WCA8PSB0aGlzLnZpZXdYICsgdGhpcy52aWV3V1xuICAgICAgICAgICYmIGV2Lm9mZnNldFkgPj0gdGhpcy52aWV3WSAmJiBldi5vZmZzZXRZIDw9IHRoaXMudmlld1kgKyB0aGlzLnZpZXdIXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub3ZlcmxheUhvb2tQb2ludFggPSBldi5vZmZzZXRYIC0gdGhpcy52aWV3WFxuICAgICAgICAgIHRoaXMub3ZlcmxheUhvb2tQb2ludFkgPSBldi5vZmZzZXRZIC0gdGhpcy52aWV3WVxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIGV2ZW50IHN0YXJ0ZWQgaW4gVGh1bWJuYWlsIChvdXRzaWRlIG9mIFZpZXcpXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIC8vIFNldCBob29rIHBvaW50IGFzIFZpZXcgY2VudGVyXG4gICAgICAgICAgdGhpcy5vdmVybGF5SG9va1BvaW50WCA9IHRoaXMudmlld1cgLyAyXG4gICAgICAgICAgdGhpcy5vdmVybGF5SG9va1BvaW50WSA9IHRoaXMudmlld0ggLyAyXG5cbiAgICAgICAgICAvLyBNb3ZlIFZpZXcgdG8gc3RhcnQgcG9pbnRcbiAgICAgICAgICB0aGlzLl9ldmVudE1vdmUoZXYpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgLCBfZXZlbnRNb3ZlOiBmdW5jdGlvbiAoZXYpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpc1xuXG4gICAgICB0aGlzLl9jaGVja01vdXNlUG9zaXRpb24oZXYpXG5cbiAgICAgIC8vIGJyZWFrIGlmIGl0IGlzIHVzZWxlc3MgZXZlbnRcbiAgICAgIGlmICghdGhpcy5vdmVybGF5SW5Nb3ZlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBjYWNoZVxuICAgICAgdGhpcy52aWV3WCA9IGV2Lm9mZnNldFggLSB0aGlzLm92ZXJsYXlIb29rUG9pbnRYXG4gICAgICB0aGlzLnZpZXdZID0gZXYub2Zmc2V0WSAtIHRoaXMub3ZlcmxheUhvb2tQb2ludFlcblxuICAgICAgLy8gVXBkYXRlIHZpZXcgcG9zaXRpb25cbiAgICAgIHRoaXMuJHZpZXcuc3R5bGVbJ2xlZnQnXSA9IHRoaXMudmlld1ggKyAncHgnO1xuICAgICAgdGhpcy4kdmlldy5zdHlsZVsndG9wJ10gPSB0aGlzLnZpZXdZICsgJ3B4JztcblxuICAgICAgLy8gTW92ZSBDeVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy52aWV3TGl2ZUZyYW1lcmF0ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgLy8gdHJpZ2dlciBpbnN0YW50bHlcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy52aWV3TGl2ZUZyYW1lcmF0ZSA9PSAwKSB7XG4gICAgICAgICAgdGhpcy5fbW92ZUN5KClcbiAgICAgICAgfVxuICAgICAgICAvLyB0cmlnZ2VyIGxlc3Mgb2Z0ZW4gdGhhbiBmcmFtZSByYXRlXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLm92ZXJsYXlUaW1lb3V0KSB7XG4gICAgICAgICAgLy8gU2V0IGEgdGltZW91dCBmb3IgZ3JhcGggbW92ZW1lbnRcbiAgICAgICAgICB0aGlzLm92ZXJsYXlUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGF0Ll9tb3ZlQ3koKVxuICAgICAgICAgICAgdGhhdC5vdmVybGF5VGltZW91dCA9IGZhbHNlXG4gICAgICAgICAgfSwgMTAwMCAvIHRoaXMub3B0aW9ucy52aWV3TGl2ZUZyYW1lcmF0ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAsIF9jaGVja01vdXNlUG9zaXRpb246IGZ1bmN0aW9uIChldikge1xuICAgICAgLy8gSWYgbW91c2UgaW4gb3ZlciBWaWV3XG4gICAgICBpZihldi5vZmZzZXRYID4gdGhpcy52aWV3WCAmJiBldi5vZmZzZXRYIDwgdGhpcy52aWV3WCArIHRoaXMudmlld0JvcmRlckhvcml6b250YWwgKyB0aGlzLnZpZXdXXG4gICAgICAgICYmIGV2Lm9mZnNldFkgPiB0aGlzLnZpZXdZICYmIGV2Lm9mZnNldFkgPCB0aGlzLnZpZXdZICsgdGhpcy52aWV3Qm9yZGVyVmVydGljYWwgKyB0aGlzLnZpZXdIKSB7XG4gICAgICAgIHRoaXMuJHBhbmVsLmNsYXNzTGlzdC5hZGQoJ21vdXNlb3Zlci12aWV3JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJHBhbmVsLmNsYXNzTGlzdC5yZW1vdmUoJ21vdXNlb3Zlci12aWV3JylcbiAgICAgIH1cbiAgICB9XG5cbiAgLCBfZXZlbnRNb3ZlRW5kOiBmdW5jdGlvbiAoZXYpIHtcbiAgICAgIC8vIFVubG9jayB2aWV3IGNoYW5naW5nIGNhdXNlZCBieSBncmFwaCBldmVudHNcbiAgICAgIHRoaXMudmlld0xvY2tlZCA9IGZhbHNlXG5cbiAgICAgIC8vIFJlbW92ZSBjbGFzcyB3aGVuIG1vdXNlIGlzIG5vdCBvdmVyIE5hdmlnYXRvclxuICAgICAgdGhpcy4kcGFuZWwuY2xhc3NMaXN0LnJlbW92ZSgnbW91c2VvdmVyLXZpZXcnKVxuXG4gICAgICBpZiAoIXRoaXMub3ZlcmxheUluTW92ZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBUcmlnZ2VyIG9uZSBsYXN0IG1vdmVcbiAgICAgIHRoaXMuX2V2ZW50TW92ZShldilcblxuICAgICAgLy8gSWYgbW9kZSBpcyBub3QgbGl2ZSB0aGVuIG1vdmUgZ3JhcGggb24gZHJhZyBlbmRcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmlld0xpdmVGcmFtZXJhdGUgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuX21vdmVDeSgpXG4gICAgICB9XG5cbiAgICAgIC8vIFN0b3AgbW92ZW1lbnQgcGVybWlzc2lvblxuICAgICAgdGhpcy5vdmVybGF5SW5Nb3ZlbWVudCA9IGZhbHNlXG4gICAgfVxuXG4gICwgX2V2ZW50Wm9vbTogZnVuY3Rpb24gKGV2KSB7XG4gICAgICB2YXIgZXYyID0gZXh0ZW5kKHt9LCBldi5vcmlnaW5hbEV2ZW50KTtcbiAgICAgIHZhciBkZWx0YSA9IGV2LndoZWVsRGVsdGFZIC8gMTAwMCB8fCBldi53aGVlbERlbHRhIC8gMTAwMCB8fCBldi5kZXRhaWwgLyAtMzIgfHwgZXYyLndoZWVsRGVsdGFZIC8gMTAwMCB8fCBldjIud2hlZWxEZWx0YSAvIDEwMDAgfHwgZXYyLmRldGFpbCAvIC0zMjtcbiAgICAgIHZhciB6b29tUmF0ZSA9IE1hdGgucG93KDEwLCBkZWx0YSlcbiAgICAgICAgLCBtb3VzZVBvc2l0aW9uID0ge1xuICAgICAgICAgICAgbGVmdDogZXYub2Zmc2V0WFxuICAgICAgICAgICwgdG9wOiBldi5vZmZzZXRZXG4gICAgICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jeS56b29taW5nRW5hYmxlZCgpKSB7XG4gICAgICAgIHRoaXMuX3pvb21DeSh6b29tUmF0ZSwgbW91c2VQb3NpdGlvbilcbiAgICAgIH1cbiAgICB9XG5cbiAgLCBfdXBkYXRlVGh1bWJuYWlsSW1hZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgICBpZiggdGhpcy5fdGh1bWJuYWlsVXBkYXRpbmcgKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90aHVtYm5haWxVcGRhdGluZyA9IHRydWU7XG5cbiAgICB2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGF0Ll9jaGVja1RodW1ibmFpbFNpemVzQW5kVXBkYXRlKCk7XG4gICAgICB0aGF0Ll9zZXR1cFZpZXcoKTtcblxuICAgICAgdmFyICRpbWcgPSB0aGF0LiR0aHVtYm5haWw7XG4gICAgICB2YXIgaW1nID0gJGltZztcblxuICAgICAgdmFyIHcgPSB0aGF0LnBhbmVsV2lkdGg7XG4gICAgICB2YXIgaCA9IHRoYXQucGFuZWxIZWlnaHQ7XG4gICAgICB2YXIgYmIgPSB0aGF0LmJvdW5kaW5nQm94O1xuICAgICAgdmFyIHpvb20gPSBNYXRoLm1pbiggdy9iYi53LCBoL2JiLmggKTtcblxuICAgICAgdmFyIHBuZyA9IHRoYXQuY3kucG5nKHtcbiAgICAgICAgZnVsbDogdHJ1ZSxcbiAgICAgICAgc2NhbGU6IHpvb20sXG4gICAgICAgIG1heEhlaWdodDogaCxcbiAgICAgICAgbWF4V2lkdGg6IHdcbiAgICAgIH0pO1xuICAgICAgaWYoIHBuZy5pbmRleE9mKCdpbWFnZS9wbmcnKSA8IDAgKXtcbiAgICAgICAgaW1nLnJlbW92ZUF0dHJpYnV0ZSggJ3NyYycgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoICdzcmMnLCBwbmcgKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRyYW5zbGF0ZSA9IHtcbiAgICAgICAgeDogKHcgLSB6b29tKiggYmIudyApKS8yLFxuICAgICAgICB5OiAoaCAtIHpvb20qKCBiYi5oICkpLzJcbiAgICAgIH07XG5cbiAgICAgICRpbWcuc3R5bGVbJ3Bvc2l0aW9uJ10gPSAnYWJzb2x1dGUnO1xuICAgICAgJGltZy5zdHlsZVsnbGVmdCddID0gdHJhbnNsYXRlLnggKyAncHgnO1xuICAgICAgJGltZy5zdHlsZVsndG9wJ10gPSB0cmFuc2xhdGUueSArICdweCc7XG5cbiAgICB9XG5cbiAgICB0aGlzLl9vblJlbmRlckhhbmRsZXIgPSB0aHJvdHRsZShyZW5kZXIsIHRoYXQub3B0aW9ucy5yZXJlbmRlckRlbGF5KVxuXG4gICAgdGhpcy5jeS5vblJlbmRlciggdGhpcy5fb25SZW5kZXJIYW5kbGVyIClcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgTmF2aWdhdG9yIHZpZXcgbW92aW5nXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLCBfbW92ZUN5OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmN5LnBhbih7XG4gICAgICAgIHg6IC0odGhpcy52aWV3WCArIHRoaXMudmlld0JvcmRlckxlZnQgLSB0aGlzLnRodW1ibmFpbFBhbi54KSAqIHRoaXMud2lkdGggLyB0aGlzLnZpZXdXXG4gICAgICAsIHk6IC0odGhpcy52aWV3WSArIHRoaXMudmlld0JvcmRlckxlZnQgLSB0aGlzLnRodW1ibmFpbFBhbi55KSAqIHRoaXMuaGVpZ2h0IC8gdGhpcy52aWV3SFxuICAgICAgfSlcbiAgICB9XG5cbiAgLyoqXG4gICAqIFpvb21zIGdyYXBoLlxuICAgKlxuICAgKiBAdGhpcyB7Y3l0b3NjYXBlTmF2aWdhdG9yfVxuICAgKiBAcGFyYW0ge251bWJlcn0gem9vbVJhdGUgVGhlIHpvb20gcmF0ZSB2YWx1ZS4gMSBpcyAxMDAlLlxuICAgKi9cbiAgLCBfem9vbUN5OiBmdW5jdGlvbiAoem9vbVJhdGUsIHpvb21DZW50ZXJSYXcpIHtcbiAgICAgIHZhciB6b29tQ2VudGVyXG4gICAgICAgICwgaXNab29tQ2VudGVySW5WaWV3ID0gZmFsc2VcblxuICAgICAgem9vbUNlbnRlciA9IHtcbiAgICAgICAgeDogdGhpcy53aWR0aCAvIDJcbiAgICAgICwgeTogdGhpcy5oZWlnaHQgLyAyXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmN5Lnpvb20oe1xuICAgICAgICBsZXZlbDogdGhpcy5jeS56b29tKCkgKiB6b29tUmF0ZVxuICAgICAgLCByZW5kZXJlZFBvc2l0aW9uOiB6b29tQ2VudGVyXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcbiAgdmFyIHJlZ2lzdGVyID0gZnVuY3Rpb24oIGN5dG9zY2FwZSApe1xuXG4gICAgaWYgKCFjeXRvc2NhcGUpeyByZXR1cm47IH0gLy8gY2FuJ3QgcmVnaXN0ZXIgaWYgY3l0b3NjYXBlIHVuc3BlY2lmaWVkXG5cbiAgICBjeXRvc2NhcGUoICdjb3JlJywgJ25hdmlnYXRvcicsIGZ1bmN0aW9uKCBvcHRpb25zICl7XG4gICAgICB2YXIgY3kgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gbmV3IE5hdmlnYXRvciggY3ksIG9wdGlvbnMgKTtcbiAgICB9ICk7XG5cbiAgfTtcblxuICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsgLy8gZXhwb3NlIGFzIGEgY29tbW9uanMgbW9kdWxlXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiggY3l0b3NjYXBlICl7XG4gICAgICByZWdpc3RlciggY3l0b3NjYXBlICk7XG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lICE9PSAndW5kZWZpbmVkJyAmJiBkZWZpbmUuYW1kKSB7IC8vIGV4cG9zZSBhcyBhbiBhbWQvcmVxdWlyZWpzIG1vZHVsZVxuICAgIGRlZmluZSgnY3l0b3NjYXBlLW5hdmlnYXRvcicsIGZ1bmN0aW9uKCl7XG4gICAgICByZXR1cm4gcmVnaXN0ZXI7XG4gICAgfSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGN5dG9zY2FwZSAhPT0gJ3VuZGVmaW5lZCcpIHsgLy8gZXhwb3NlIHRvIGdsb2JhbCBjeXRvc2NhcGUgKGkuZS4gd2luZG93LmN5dG9zY2FwZSlcbiAgICByZWdpc3RlcihjeXRvc2NhcGUpO1xuICB9XG5cbn0pKCk7XG4iLCJleHBvcnQgdmFyIHRvcCA9ICd0b3AnO1xuZXhwb3J0IHZhciBib3R0b20gPSAnYm90dG9tJztcbmV4cG9ydCB2YXIgcmlnaHQgPSAncmlnaHQnO1xuZXhwb3J0IHZhciBsZWZ0ID0gJ2xlZnQnO1xuZXhwb3J0IHZhciBhdXRvID0gJ2F1dG8nO1xuZXhwb3J0IHZhciBiYXNlUGxhY2VtZW50cyA9IFt0b3AsIGJvdHRvbSwgcmlnaHQsIGxlZnRdO1xuZXhwb3J0IHZhciBzdGFydCA9ICdzdGFydCc7XG5leHBvcnQgdmFyIGVuZCA9ICdlbmQnO1xuZXhwb3J0IHZhciBjbGlwcGluZ1BhcmVudHMgPSAnY2xpcHBpbmdQYXJlbnRzJztcbmV4cG9ydCB2YXIgdmlld3BvcnQgPSAndmlld3BvcnQnO1xuZXhwb3J0IHZhciBwb3BwZXIgPSAncG9wcGVyJztcbmV4cG9ydCB2YXIgcmVmZXJlbmNlID0gJ3JlZmVyZW5jZSc7XG5leHBvcnQgdmFyIHZhcmlhdGlvblBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovYmFzZVBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTtcbmV4cG9ydCB2YXIgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9bXS5jb25jYXQoYmFzZVBsYWNlbWVudHMsIFthdXRvXSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50LCBwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pOyAvLyBtb2RpZmllcnMgdGhhdCBuZWVkIHRvIHJlYWQgdGhlIERPTVxuXG5leHBvcnQgdmFyIGJlZm9yZVJlYWQgPSAnYmVmb3JlUmVhZCc7XG5leHBvcnQgdmFyIHJlYWQgPSAncmVhZCc7XG5leHBvcnQgdmFyIGFmdGVyUmVhZCA9ICdhZnRlclJlYWQnOyAvLyBwdXJlLWxvZ2ljIG1vZGlmaWVyc1xuXG5leHBvcnQgdmFyIGJlZm9yZU1haW4gPSAnYmVmb3JlTWFpbic7XG5leHBvcnQgdmFyIG1haW4gPSAnbWFpbic7XG5leHBvcnQgdmFyIGFmdGVyTWFpbiA9ICdhZnRlck1haW4nOyAvLyBtb2RpZmllciB3aXRoIHRoZSBwdXJwb3NlIHRvIHdyaXRlIHRvIHRoZSBET00gKG9yIHdyaXRlIGludG8gYSBmcmFtZXdvcmsgc3RhdGUpXG5cbmV4cG9ydCB2YXIgYmVmb3JlV3JpdGUgPSAnYmVmb3JlV3JpdGUnO1xuZXhwb3J0IHZhciB3cml0ZSA9ICd3cml0ZSc7XG5leHBvcnQgdmFyIGFmdGVyV3JpdGUgPSAnYWZ0ZXJXcml0ZSc7XG5leHBvcnQgdmFyIG1vZGlmaWVyUGhhc2VzID0gW2JlZm9yZVJlYWQsIHJlYWQsIGFmdGVyUmVhZCwgYmVmb3JlTWFpbiwgbWFpbiwgYWZ0ZXJNYWluLCBiZWZvcmVXcml0ZSwgd3JpdGUsIGFmdGVyV3JpdGVdOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBUaGlzIG1vZGlmaWVyIHRha2VzIHRoZSBzdHlsZXMgcHJlcGFyZWQgYnkgdGhlIGBjb21wdXRlU3R5bGVzYCBtb2RpZmllclxuLy8gYW5kIGFwcGxpZXMgdGhlbSB0byB0aGUgSFRNTEVsZW1lbnRzIHN1Y2ggYXMgcG9wcGVyIGFuZCBhcnJvd1xuXG5mdW5jdGlvbiBhcHBseVN0eWxlcyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGU7XG4gIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIHN0eWxlID0gc3RhdGUuc3R5bGVzW25hbWVdIHx8IHt9O1xuICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdOyAvLyBhcnJvdyBpcyBvcHRpb25hbCArIHZpcnR1YWwgZWxlbWVudHNcblxuICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIEZsb3cgZG9lc24ndCBzdXBwb3J0IHRvIGV4dGVuZCB0aGlzIHByb3BlcnR5LCBidXQgaXQncyB0aGUgbW9zdFxuICAgIC8vIGVmZmVjdGl2ZSB3YXkgdG8gYXBwbHkgc3R5bGVzIHRvIGFuIEhUTUxFbGVtZW50XG4gICAgLy8gJEZsb3dGaXhNZVtjYW5ub3Qtd3JpdGVdXG5cblxuICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgc3R5bGUpO1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXNbbmFtZV07XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSA9PT0gdHJ1ZSA/ICcnIDogdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlO1xuICB2YXIgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICBwb3BwZXI6IHtcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCcsXG4gICAgICBtYXJnaW46ICcwJ1xuICAgIH0sXG4gICAgYXJyb3c6IHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgfSxcbiAgICByZWZlcmVuY2U6IHt9XG4gIH07XG4gIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMucG9wcGVyLnN0eWxlLCBpbml0aWFsU3R5bGVzLnBvcHBlcik7XG4gIHN0YXRlLnN0eWxlcyA9IGluaXRpYWxTdHlsZXM7XG5cbiAgaWYgKHN0YXRlLmVsZW1lbnRzLmFycm93KSB7XG4gICAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5hcnJvdy5zdHlsZSwgaW5pdGlhbFN0eWxlcy5hcnJvdyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdO1xuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBzdGF0ZS5hdHRyaWJ1dGVzW25hbWVdIHx8IHt9O1xuICAgICAgdmFyIHN0eWxlUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKHN0YXRlLnN0eWxlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IHN0YXRlLnN0eWxlc1tuYW1lXSA6IGluaXRpYWxTdHlsZXNbbmFtZV0pOyAvLyBTZXQgYWxsIHZhbHVlcyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gdW5zZXQgdGhlbVxuXG4gICAgICB2YXIgc3R5bGUgPSBzdHlsZVByb3BlcnRpZXMucmVkdWNlKGZ1bmN0aW9uIChzdHlsZSwgcHJvcGVydHkpIHtcbiAgICAgICAgc3R5bGVbcHJvcGVydHldID0gJyc7XG4gICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgIH0sIHt9KTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcHBseVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogYXBwbHlTdHlsZXMsXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ11cbn07IiwiaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufSIsImV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciByb3VuZCA9IE1hdGgucm91bmQ7IiwiaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaXNIVE1MRWxlbWVudChlbGVtZW50KSAmJiBpbmNsdWRlU2NhbGUpIHtcbiAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgdmFyIG9mZnNldFdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDsgLy8gRG8gbm90IGF0dGVtcHQgdG8gZGl2aWRlIGJ5IDAsIG90aGVyd2lzZSB3ZSBnZXQgYEluZmluaXR5YCBhcyBzY2FsZVxuICAgIC8vIEZhbGxiYWNrIHRvIDEgaW4gY2FzZSBib3RoIHZhbHVlcyBhcmUgYDBgXG5cbiAgICBpZiAob2Zmc2V0V2lkdGggPiAwKSB7XG4gICAgICBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIG9mZnNldFdpZHRoIHx8IDE7XG4gICAgfVxuXG4gICAgaWYgKG9mZnNldEhlaWdodCA+IDApIHtcbiAgICAgIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIG9mZnNldEhlaWdodCB8fCAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggLyBzY2FsZVgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAvIHNjYWxlWSxcbiAgICB0b3A6IHJlY3QudG9wIC8gc2NhbGVZLFxuICAgIHJpZ2h0OiByZWN0LnJpZ2h0IC8gc2NhbGVYLFxuICAgIGJvdHRvbTogcmVjdC5ib3R0b20gLyBzY2FsZVksXG4gICAgbGVmdDogcmVjdC5sZWZ0IC8gc2NhbGVYLFxuICAgIHg6IHJlY3QubGVmdCAvIHNjYWxlWCxcbiAgICB5OiByZWN0LnRvcCAvIHNjYWxlWVxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIHZhciByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlICYmIGNoaWxkLmdldFJvb3ROb2RlKCk7IC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcblxuICBpZiAocGFyZW50LmNvbnRhaW5zKGNoaWxkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGVsc2UgaWYgKHJvb3ROb2RlICYmIGlzU2hhZG93Um9vdChyb290Tm9kZSkpIHtcbiAgICAgIHZhciBuZXh0ID0gY2hpbGQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG5leHQgJiYgcGFyZW50LmlzU2FtZU5vZGUobmV4dCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLi4uXG5cblxuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICAgIH0gd2hpbGUgKG5leHQpO1xuICAgIH0gLy8gR2l2ZSB1cCwgdGhlIHJlc3VsdCBpcyBmYWxzZVxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufSIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpID49IDA7XG59IiwiaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICByZXR1cm4gKChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgZWxlbWVudC5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQ7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IHsgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSB7XG4gIGlmIChnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gKC8vIHRoaXMgaXMgYSBxdWlja2VyIChidXQgbGVzcyB0eXBlIHNhZmUpIHdheSB0byBzYXZlIHF1aXRlIHNvbWUgYnl0ZXMgZnJvbSB0aGUgYnVuZGxlXG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXVxuICAgIC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgIGVsZW1lbnQuYXNzaWduZWRTbG90IHx8IC8vIHN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlXG4gICAgZWxlbWVudC5wYXJlbnROb2RlIHx8ICggLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWRcbiAgICBpc1NoYWRvd1Jvb3QoZWxlbWVudCkgPyBlbGVtZW50Lmhvc3QgOiBudWxsKSB8fCAvLyBTaGFkb3dSb290IGRldGVjdGVkXG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IEhUTUxFbGVtZW50IGlzIGEgTm9kZVxuICAgIGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSAvLyBmYWxsYmFja1xuXG4gICk7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBpc1RhYmxlRWxlbWVudCBmcm9tIFwiLi9pc1RhYmxlRWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvODM3XG4gIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50Lm9mZnNldFBhcmVudDtcbn0gLy8gYC5vZmZzZXRQYXJlbnRgIHJlcG9ydHMgYG51bGxgIGZvciBmaXhlZCBlbGVtZW50cywgd2hpbGUgYWJzb2x1dGUgZWxlbWVudHNcbi8vIHJldHVybiB0aGUgY29udGFpbmluZyBibG9ja1xuXG5cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIHZhciBpc0ZpcmVmb3ggPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlyZWZveCcpICE9PSAtMTtcbiAgdmFyIGlzSUUgPSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQnKSAhPT0gLTE7XG5cbiAgaWYgKGlzSUUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEluIElFIDksIDEwIGFuZCAxMSBmaXhlZCBlbGVtZW50cyBjb250YWluaW5nIGJsb2NrIGlzIGFsd2F5cyBlc3RhYmxpc2hlZCBieSB0aGUgdmlld3BvcnRcbiAgICB2YXIgZWxlbWVudENzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cbiAgICBpZiAoZWxlbWVudENzcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcblxuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgWydodG1sJywgJ2JvZHknXS5pbmRleE9mKGdldE5vZGVOYW1lKGN1cnJlbnROb2RlKSkgPCAwKSB7XG4gICAgdmFyIGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpOyAvLyBUaGlzIGlzIG5vbi1leGhhdXN0aXZlIGJ1dCBjb3ZlcnMgdGhlIG1vc3QgY29tbW9uIENTUyBwcm9wZXJ0aWVzIHRoYXRcbiAgICAvLyBjcmVhdGUgYSBjb250YWluaW5nIGJsb2NrLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG5cbiAgICBpZiAoY3NzLnRyYW5zZm9ybSAhPT0gJ25vbmUnIHx8IGNzcy5wZXJzcGVjdGl2ZSAhPT0gJ25vbmUnIHx8IGNzcy5jb250YWluID09PSAncGFpbnQnIHx8IFsndHJhbnNmb3JtJywgJ3BlcnNwZWN0aXZlJ10uaW5kZXhPZihjc3Mud2lsbENoYW5nZSkgIT09IC0xIHx8IGlzRmlyZWZveCAmJiBjc3Mud2lsbENoYW5nZSA9PT0gJ2ZpbHRlcicgfHwgaXNGaXJlZm94ICYmIGNzcy5maWx0ZXIgJiYgY3NzLmZpbHRlciAhPT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn0gLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KTtcblxuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50KTtcbiAgfVxuXG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdodG1sJyB8fCBnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnYm9keScgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luZG93O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YocGxhY2VtZW50KSA+PSAwID8gJ3gnIDogJ3knO1xufSIsImltcG9ydCB7IG1heCBhcyBtYXRoTWF4LCBtaW4gYXMgbWF0aE1pbiB9IGZyb20gXCIuL21hdGguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KSB7XG4gIHJldHVybiBtYXRoTWF4KG1pbiwgbWF0aE1pbih2YWx1ZSwgbWF4KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluTWF4Q2xhbXAobWluLCB2YWx1ZSwgbWF4KSB7XG4gIHZhciB2ID0gd2l0aGluKG1pbiwgdmFsdWUsIG1heCk7XG4gIHJldHVybiB2ID4gbWF4ID8gbWF4IDogdjtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwiaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlUGFkZGluZ09iamVjdChwYWRkaW5nT2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBnZXRGcmVzaFNpZGVPYmplY3QoKSwgcGFkZGluZ09iamVjdCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXhwYW5kVG9IYXNoTWFwKHZhbHVlLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoaGFzaE1hcCwga2V5KSB7XG4gICAgaGFzaE1hcFtrZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIGhhc2hNYXA7XG4gIH0sIHt9KTtcbn0iLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4uL2RvbS11dGlscy9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4gfSBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuLi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4uL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qc1wiO1xuaW1wb3J0IHsgbGVmdCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB0b3AsIGJvdHRvbSB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB0b1BhZGRpbmdPYmplY3QgPSBmdW5jdGlvbiB0b1BhZGRpbmdPYmplY3QocGFkZGluZywgc3RhdGUpIHtcbiAgcGFkZGluZyA9IHR5cGVvZiBwYWRkaW5nID09PSAnZnVuY3Rpb24nID8gcGFkZGluZyhPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHBhZGRpbmc7XG4gIHJldHVybiBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xufTtcblxuZnVuY3Rpb24gYXJyb3coX3JlZikge1xuICB2YXIgX3N0YXRlJG1vZGlmaWVyc0RhdGEkO1xuXG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93O1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBheGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgaXNWZXJ0aWNhbCA9IFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwO1xuICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICBpZiAoIWFycm93RWxlbWVudCB8fCAhcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gdG9QYWRkaW5nT2JqZWN0KG9wdGlvbnMucGFkZGluZywgc3RhdGUpO1xuICB2YXIgYXJyb3dSZWN0ID0gZ2V0TGF5b3V0UmVjdChhcnJvd0VsZW1lbnQpO1xuICB2YXIgbWluUHJvcCA9IGF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gIHZhciBtYXhQcm9wID0gYXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gIHZhciBlbmREaWZmID0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2xlbl0gKyBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucG9wcGVyW2xlbl07XG4gIHZhciBzdGFydERpZmYgPSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQoYXJyb3dFbGVtZW50KTtcbiAgdmFyIGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudEhlaWdodCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggfHwgMCA6IDA7XG4gIHZhciBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjsgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBwb3BwZXIgaWYgdGhlIGNlbnRlciBwb2ludCBpc1xuICAvLyBvdXRzaWRlIG9mIHRoZSBwb3BwZXIgYm91bmRzXG5cbiAgdmFyIG1pbiA9IHBhZGRpbmdPYmplY3RbbWluUHJvcF07XG4gIHZhciBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dSZWN0W2xlbl0gLSBwYWRkaW5nT2JqZWN0W21heFByb3BdO1xuICB2YXIgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd1JlY3RbbGVuXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgdmFyIG9mZnNldCA9IHdpdGhpbihtaW4sIGNlbnRlciwgbWF4KTsgLy8gUHJldmVudHMgYnJlYWtpbmcgc3ludGF4IGhpZ2hsaWdodGluZy4uLlxuXG4gIHZhciBheGlzUHJvcCA9IGF4aXM7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSAoX3N0YXRlJG1vZGlmaWVyc0RhdGEkID0ge30sIF9zdGF0ZSRtb2RpZmllcnNEYXRhJFtheGlzUHJvcF0gPSBvZmZzZXQsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJC5jZW50ZXJPZmZzZXQgPSBvZmZzZXQgLSBjZW50ZXIsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJCk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGFycm93RWxlbWVudCA9IF9vcHRpb25zJGVsZW1lbnQgPT09IHZvaWQgMCA/ICdbZGF0YS1wb3BwZXItYXJyb3ddJyA6IF9vcHRpb25zJGVsZW1lbnQ7XG5cbiAgaWYgKGFycm93RWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIENTUyBzZWxlY3RvclxuXG5cbiAgaWYgKHR5cGVvZiBhcnJvd0VsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoYXJyb3dFbGVtZW50KTtcblxuICAgIGlmICghYXJyb3dFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGlmICghaXNIVE1MRWxlbWVudChhcnJvd0VsZW1lbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgZWxlbWVudCBtdXN0IGJlIGFuIEhUTUxFbGVtZW50IChub3QgYW4gU1ZHRWxlbWVudCkuJywgJ1RvIHVzZSBhbiBTVkcgYXJyb3csIHdyYXAgaXQgaW4gYW4gSFRNTEVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgYXMnLCAndGhlIGFycm93LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb250YWlucyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIsIGFycm93RWxlbWVudCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgbW9kaWZpZXJcXCdzIGBlbGVtZW50YCBtdXN0IGJlIGEgY2hpbGQgb2YgdGhlIHBvcHBlcicsICdlbGVtZW50LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGUuZWxlbWVudHMuYXJyb3cgPSBhcnJvd0VsZW1lbnQ7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcnJvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBhcnJvdyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn0iLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIGVuZCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHVuc2V0U2lkZXMgPSB7XG4gIHRvcDogJ2F1dG8nLFxuICByaWdodDogJ2F1dG8nLFxuICBib3R0b206ICdhdXRvJyxcbiAgbGVmdDogJ2F1dG8nXG59OyAvLyBSb3VuZCB0aGUgb2Zmc2V0cyB0byB0aGUgbmVhcmVzdCBzdWl0YWJsZSBzdWJwaXhlbCBiYXNlZCBvbiB0aGUgRFBSLlxuLy8gWm9vbWluZyBjYW4gY2hhbmdlIHRoZSBEUFIsIGJ1dCBpdCBzZWVtcyB0byByZXBvcnQgYSB2YWx1ZSB0aGF0IHdpbGxcbi8vIGNsZWFubHkgZGl2aWRlIHRoZSB2YWx1ZXMgaW50byB0aGUgYXBwcm9wcmlhdGUgc3VicGl4ZWxzLlxuXG5mdW5jdGlvbiByb3VuZE9mZnNldHNCeURQUihfcmVmKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIHdpbiA9IHdpbmRvdztcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmNC54O1xuICB5ID0gX3JlZjQueTtcblxuICBpZiAoZ3B1QWNjZWxlcmF0aW9uKSB7XG4gICAgdmFyIF9PYmplY3QkYXNzaWduO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduID0ge30sIF9PYmplY3QkYXNzaWduW3NpZGVZXSA9IGhhc1kgPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ25bc2lkZVhdID0gaGFzWCA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbi50cmFuc2Zvcm0gPSAod2luLmRldmljZVBpeGVsUmF0aW8gfHwgMSkgPD0gMSA/IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIgOiBcInRyYW5zbGF0ZTNkKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgsIDApXCIsIF9PYmplY3QkYXNzaWduKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24yID0ge30sIF9PYmplY3QkYXNzaWduMltzaWRlWV0gPSBoYXNZID8geSArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjJbc2lkZVhdID0gaGFzWCA/IHggKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yLnRyYW5zZm9ybSA9ICcnLCBfT2JqZWN0JGFzc2lnbjIpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVN0eWxlcyhfcmVmNSkge1xuICB2YXIgc3RhdGUgPSBfcmVmNS5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmNS5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID0gb3B0aW9ucy5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRncHVBY2NlbGVyYXQsXG4gICAgICBfb3B0aW9ucyRhZGFwdGl2ZSA9IG9wdGlvbnMuYWRhcHRpdmUsXG4gICAgICBhZGFwdGl2ZSA9IF9vcHRpb25zJGFkYXB0aXZlID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWRhcHRpdmUsXG4gICAgICBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPSBvcHRpb25zLnJvdW5kT2Zmc2V0cyxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJvdW5kT2Zmc2V0cztcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgdmFyIHRyYW5zaXRpb25Qcm9wZXJ0eSA9IGdldENvbXB1dGVkU3R5bGUoc3RhdGUuZWxlbWVudHMucG9wcGVyKS50cmFuc2l0aW9uUHJvcGVydHkgfHwgJyc7XG5cbiAgICBpZiAoYWRhcHRpdmUgJiYgWyd0cmFuc2Zvcm0nLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10uc29tZShmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgIHJldHVybiB0cmFuc2l0aW9uUHJvcGVydHkuaW5kZXhPZihwcm9wZXJ0eSkgPj0gMDtcbiAgICB9KSkge1xuICAgICAgY29uc29sZS53YXJuKFsnUG9wcGVyOiBEZXRlY3RlZCBDU1MgdHJhbnNpdGlvbnMgb24gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcnLCAnQ1NTIHByb3BlcnRpZXM6IFwidHJhbnNmb3JtXCIsIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJsZWZ0XCIuJywgJ1xcblxcbicsICdEaXNhYmxlIHRoZSBcImNvbXB1dGVTdHlsZXNcIiBtb2RpZmllclxcJ3MgYGFkYXB0aXZlYCBvcHRpb24gdG8gYWxsb3cnLCAnZm9yIHNtb290aCB0cmFuc2l0aW9ucywgb3IgcmVtb3ZlIHRoZXNlIHByb3BlcnRpZXMgZnJvbSB0aGUgQ1NTJywgJ3RyYW5zaXRpb24gZGVjbGFyYXRpb24gb24gdGhlIHBvcHBlciBlbGVtZW50IGlmIG9ubHkgdHJhbnNpdGlvbmluZycsICdvcGFjaXR5IG9yIGJhY2tncm91bmQtY29sb3IgZm9yIGV4YW1wbGUuJywgJ1xcblxcbicsICdXZSByZWNvbW1lbmQgdXNpbmcgdGhlIHBvcHBlciBlbGVtZW50IGFzIGEgd3JhcHBlciBhcm91bmQgYW4gaW5uZXInLCAnZWxlbWVudCB0aGF0IGNhbiBoYXZlIGFueSBDU1MgcHJvcGVydHkgdHJhbnNpdGlvbmVkIGZvciBhbmltYXRpb25zLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IHtcbiAgICBwbGFjZW1lbnQ6IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KSxcbiAgICB2YXJpYXRpb246IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHBvcHBlcjogc3RhdGUuZWxlbWVudHMucG9wcGVyLFxuICAgIHBvcHBlclJlY3Q6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBncHVBY2NlbGVyYXRpb246IGdwdUFjY2VsZXJhdGlvbixcbiAgICBpc0ZpeGVkOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnXG4gIH07XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5wb3BwZXIsIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLFxuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBhZGFwdGl2ZTogYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLmFycm93ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLmFycm93LCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3csXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGFkYXB0aXZlOiBmYWxzZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcGxhY2VtZW50Jzogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnY29tcHV0ZVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYmVmb3JlV3JpdGUnLFxuICBmbjogY29tcHV0ZVN0eWxlcyxcbiAgZGF0YToge31cbn07IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciBwYXNzaXZlID0ge1xuICBwYXNzaXZlOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgaW5zdGFuY2UgPSBfcmVmLmluc3RhbmNlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJHNjcm9sbCA9IG9wdGlvbnMuc2Nyb2xsLFxuICAgICAgc2Nyb2xsID0gX29wdGlvbnMkc2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkc2Nyb2xsLFxuICAgICAgX29wdGlvbnMkcmVzaXplID0gb3B0aW9ucy5yZXNpemUsXG4gICAgICByZXNpemUgPSBfb3B0aW9ucyRyZXNpemUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyZXNpemU7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coc3RhdGUuZWxlbWVudHMucG9wcGVyKTtcbiAgdmFyIHNjcm9sbFBhcmVudHMgPSBbXS5jb25jYXQoc3RhdGUuc2Nyb2xsUGFyZW50cy5yZWZlcmVuY2UsIHN0YXRlLnNjcm9sbFBhcmVudHMucG9wcGVyKTtcblxuICBpZiAoc2Nyb2xsKSB7XG4gICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgIHNjcm9sbFBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHJlc2l6ZSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgICBzY3JvbGxQYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyZXNpemUpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH1cbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2V2ZW50TGlzdGVuZXJzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICd3cml0ZScsXG4gIGZuOiBmdW5jdGlvbiBmbigpIHt9LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgZGF0YToge31cbn07IiwidmFyIGhhc2ggPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwidmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGwobm9kZSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KG5vZGUpO1xuICB2YXIgc2Nyb2xsTGVmdCA9IHdpbi5wYWdlWE9mZnNldDtcbiAgdmFyIHNjcm9sbFRvcCA9IHdpbi5wYWdlWU9mZnNldDtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBzY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogc2Nyb2xsVG9wXG4gIH07XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSB7XG4gIC8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbiAgLy8gaW5jb3JyZWN0IGZvciBSVEwuXG4gIC8vIFBvcHBlciAxIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UgYW5kIG5ldmVyIGhhZCBhIGJ1ZyByZXBvcnQgc28gbGV0J3MgYXNzdW1lXG4gIC8vIGl0J3Mgbm90IGFuIGlzc3VlLiBJIGRvbid0IHRoaW5rIGFueW9uZSBldmVyIHNwZWNpZmllcyB3aWR0aCBvbiA8aHRtbD5cbiAgLy8gYW55d2F5LlxuICAvLyBCcm93c2VycyB3aGVyZSB0aGUgbGVmdCBzY3JvbGxiYXIgZG9lc24ndCBjYXVzZSBhbiBpc3N1ZSByZXBvcnQgYDBgIGZvclxuICAvLyB0aGlzIChlLmcuIEVkZ2UgMjAxOSwgSUUxMSwgU2FmYXJpKVxuICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGdldFdpbmRvd1Njcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgdmFyIHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICB2YXIgeCA9IDA7XG4gIHZhciB5ID0gMDsgLy8gTkI6IFRoaXMgaXNuJ3Qgc3VwcG9ydGVkIG9uIGlPUyA8PSAxMi4gSWYgdGhlIGtleWJvYXJkIGlzIG9wZW4sIHRoZSBwb3BwZXJcbiAgLy8gY2FuIGJlIG9ic2N1cmVkIHVuZGVybmVhdGggaXQuXG4gIC8vIEFsc28sIGBodG1sLmNsaWVudEhlaWdodGAgYWRkcyB0aGUgYm90dG9tIGJhciBoZWlnaHQgaW4gU2FmYXJpIGlPUywgZXZlblxuICAvLyBpZiBpdCBpc24ndCBvcGVuLCBzbyBpZiB0aGlzIGlzbid0IGF2YWlsYWJsZSwgdGhlIHBvcHBlciB3aWxsIGJlIGRldGVjdGVkXG4gIC8vIHRvIG92ZXJmbG93IHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbiB0b28gZWFybHkuXG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7IC8vIFVzZXMgTGF5b3V0IFZpZXdwb3J0IChsaWtlIENocm9tZTsgU2FmYXJpIGRvZXMgbm90IGN1cnJlbnRseSlcbiAgICAvLyBJbiBDaHJvbWUsIGl0IHJldHVybnMgYSB2YWx1ZSB2ZXJ5IGNsb3NlIHRvIDAgKCsvLSkgYnV0IGNvbnRhaW5zIHJvdW5kaW5nXG4gICAgLy8gZXJyb3JzIGR1ZSB0byBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIHByZWNpc2lvbi5cbiAgICAvLyBTYWZhcmkgcmV0dXJucyBhIG51bWJlciA8PSAwLCB1c3VhbGx5IDwgLTEgd2hlbiBwaW5jaC16b29tZWRcbiAgICAvLyBGZWF0dXJlIGRldGVjdGlvbiBmYWlscyBpbiBtb2JpbGUgZW11bGF0aW9uIG1vZGUgaW4gQ2hyb21lLlxuICAgIC8vIE1hdGguYWJzKHdpbi5pbm5lcldpZHRoIC8gdmlzdWFsVmlld3BvcnQuc2NhbGUgLSB2aXN1YWxWaWV3cG9ydC53aWR0aCkgPFxuICAgIC8vIDAuMDAxXG4gICAgLy8gRmFsbGJhY2sgaGVyZTogXCJOb3QgU2FmYXJpXCIgdXNlckFnZW50XG5cbiAgICBpZiAoIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgeyBtYXggfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB3aW5TY3JvbGwgPSBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCk7XG4gIHZhciBib2R5ID0gKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5O1xuICB2YXIgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuc2Nyb2xsV2lkdGggOiAwLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApO1xuICB2YXIgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keSA/IGJvZHkuc2Nyb2xsSGVpZ2h0IDogMCwgYm9keSA/IGJvZHkuY2xpZW50SGVpZ2h0IDogMCk7XG4gIHZhciB4ID0gLXdpblNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgdmFyIHkgPSAtd2luU2Nyb2xsLnNjcm9sbFRvcDtcblxuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5IHx8IGh0bWwpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApIC0gd2lkdGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZWN0LCB7XG4gICAgbGVmdDogcmVjdC54LFxuICAgIHRvcDogcmVjdC55LFxuICAgIHJpZ2h0OiByZWN0LnggKyByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogcmVjdC55ICsgcmVjdC5oZWlnaHRcbiAgfSk7XG59IiwiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgcmV0dXJuIGNsaXBwaW5nUGFyZW50ID09PSB2aWV3cG9ydCA/IHJlY3RUb0NsaWVudFJlY3QoZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQpKSA6IGlzRWxlbWVudChjbGlwcGluZ1BhcmVudCkgPyBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ1BhcmVudCkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnkpIHtcbiAgdmFyIG1haW5DbGlwcGluZ1BhcmVudHMgPSBib3VuZGFyeSA9PT0gJ2NsaXBwaW5nUGFyZW50cycgPyBnZXRDbGlwcGluZ1BhcmVudHMoZWxlbWVudCkgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICB2YXIgY2xpcHBpbmdQYXJlbnRzID0gW10uY29uY2F0KG1haW5DbGlwcGluZ1BhcmVudHMsIFtyb290Qm91bmRhcnldKTtcbiAgdmFyIGZpcnN0Q2xpcHBpbmdQYXJlbnQgPSBjbGlwcGluZ1BhcmVudHNbMF07XG4gIHZhciBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ1BhcmVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2NSZWN0LCBjbGlwcGluZ1BhcmVudCkge1xuICAgIHZhciByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdQYXJlbnQpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zJGJvdW5kYXJ5ID09PSB2b2lkIDAgPyBjbGlwcGluZ1BhcmVudHMgOiBfb3B0aW9ucyRib3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9PT0gdm9pZCAwID8gdmlld3BvcnQgOiBfb3B0aW9ucyRyb290Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRlbGVtZW50Q29udGUgPSBfb3B0aW9ucy5lbGVtZW50Q29udGV4dCxcbiAgICAgIGVsZW1lbnRDb250ZXh0ID0gX29wdGlvbnMkZWxlbWVudENvbnRlID09PSB2b2lkIDAgPyBwb3BwZXIgOiBfb3B0aW9ucyRlbGVtZW50Q29udGUsXG4gICAgICBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9IF9vcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zJHBhZGRpbmcgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRwYWRkaW5nO1xuICB2YXIgcGFkZGluZ09iamVjdCA9IG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG4gIHZhciBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHJlZmVyZW5jZSA6IHBvcHBlcjtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICB2YXIgY2xpcHBpbmdDbGllbnRSZWN0ID0gZ2V0Q2xpcHBpbmdSZWN0KGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IGdldERvY3VtZW50RWxlbWVudChzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJpbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgdmFyaWF0aW9uUGxhY2VtZW50cywgYmFzZVBsYWNlbWVudHMsIHBsYWNlbWVudHMgYXMgYWxsUGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPSBfb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPT09IHZvaWQgMCA/IGFsbFBsYWNlbWVudHMgOiBfb3B0aW9ucyRhbGxvd2VkQXV0b1A7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KTtcbiAgdmFyIHBsYWNlbWVudHMgPSB2YXJpYXRpb24gPyBmbGlwVmFyaWF0aW9ucyA/IHZhcmlhdGlvblBsYWNlbWVudHMgOiB2YXJpYXRpb25QbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSB2YXJpYXRpb247XG4gIH0pIDogYmFzZVBsYWNlbWVudHM7XG4gIHZhciBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWxsb3dlZEF1dG9QbGFjZW1lbnRzLmluZGV4T2YocGxhY2VtZW50KSA+PSAwO1xuICB9KTtcblxuICBpZiAoYWxsb3dlZFBsYWNlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogVGhlIGBhbGxvd2VkQXV0b1BsYWNlbWVudHNgIG9wdGlvbiBkaWQgbm90IGFsbG93IGFueScsICdwbGFjZW1lbnRzLiBFbnN1cmUgdGhlIGBwbGFjZW1lbnRgIG9wdGlvbiBtYXRjaGVzIHRoZSB2YXJpYXRpb24nLCAnb2YgdGhlIGFsbG93ZWQgcGxhY2VtZW50cy4nLCAnRm9yIGV4YW1wbGUsIFwiYXV0b1wiIGNhbm5vdCBiZSB1c2VkIHRvIGFsbG93IFwiYm90dG9tLXN0YXJ0XCIuJywgJ1VzZSBcImF1dG8tc3RhcnRcIiBpbnN0ZWFkLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdOiBGbG93IHNlZW1zIHRvIGhhdmUgcHJvYmxlbXMgd2l0aCB0d28gYXJyYXkgdW5pb25zLi4uXG5cblxuICB2YXIgb3ZlcmZsb3dzID0gYWxsb3dlZFBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSlbZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpXTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvdmVyZmxvd3MpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dzW2FdIC0gb3ZlcmZsb3dzW2JdO1xuICB9KTtcbn0iLCJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZU9mZnNldHMuanNcIjtcblxuZnVuY3Rpb24gcG9wcGVyT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICAvLyBPZmZzZXRzIGFyZSB0aGUgYWN0dWFsIHBvc2l0aW9uIHRoZSBwb3BwZXIgbmVlZHMgdG8gaGF2ZSB0byBiZVxuICAvLyBwcm9wZXJseSBwb3NpdGlvbmVkIG5lYXIgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRoaXMgaXMgdGhlIG1vc3QgYmFzaWMgcGxhY2VtZW50LCBhbmQgd2lsbCBiZSBhZGp1c3RlZCBieVxuICAvLyB0aGUgbW9kaWZpZXJzIGluIHRoZSBuZXh0IHN0ZXBcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHN0YXRlLnJlY3RzLnJlZmVyZW5jZSxcbiAgICBlbGVtZW50OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufSIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudFNjcm9sbChlbGVtZW50KSB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0SFRNTEVsZW1lbnRTY3JvbGwgZnJvbSBcIi4vZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVTY3JvbGwobm9kZSkge1xuICBpZiAobm9kZSA9PT0gZ2V0V2luZG93KG5vZGUpIHx8ICFpc0hUTUxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRTY3JvbGwobm9kZSk7XG4gIH1cbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChzdHIpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChhcmdzKS5yZWR1Y2UoZnVuY3Rpb24gKHAsIGMpIHtcbiAgICByZXR1cm4gcC5yZXBsYWNlKC8lcy8sIGMpO1xuICB9LCBzdHIpO1xufSIsImltcG9ydCBmb3JtYXQgZnJvbSBcIi4vZm9ybWF0LmpzXCI7XG5pbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfTU9ESUZJRVJfRVJST1IgPSAnUG9wcGVyOiBtb2RpZmllciBcIiVzXCIgcHJvdmlkZWQgYW4gaW52YWxpZCAlcyBwcm9wZXJ0eSwgZXhwZWN0ZWQgJXMgYnV0IGdvdCAlcyc7XG52YXIgTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHJlcXVpcmVzIFwiJXNcIiwgYnV0IFwiJXNcIiBtb2RpZmllciBpcyBub3QgYXZhaWxhYmxlJztcbnZhciBWQUxJRF9QUk9QRVJUSUVTID0gWyduYW1lJywgJ2VuYWJsZWQnLCAncGhhc2UnLCAnZm4nLCAnZWZmZWN0JywgJ3JlcXVpcmVzJywgJ29wdGlvbnMnXTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBbXS5jb25jYXQoT2JqZWN0LmtleXMobW9kaWZpZXIpLCBWQUxJRF9QUk9QRVJUSUVTKSAvLyBJRTExLWNvbXBhdGlibGUgcmVwbGFjZW1lbnQgZm9yIGBuZXcgU2V0KGl0ZXJhYmxlKWBcbiAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIHNlbGYpIHtcbiAgICAgIHJldHVybiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDtcbiAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIubmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIFN0cmluZyhtb2RpZmllci5uYW1lKSwgJ1wibmFtZVwiJywgJ1wic3RyaW5nXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5uYW1lKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZW5hYmxlZCc6XG4gICAgICAgICAgaWYgKHR5cGVvZiBtb2RpZmllci5lbmFibGVkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImVuYWJsZWRcIicsICdcImJvb2xlYW5cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmVuYWJsZWQpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdwaGFzZSc6XG4gICAgICAgICAgaWYgKG1vZGlmaWVyUGhhc2VzLmluZGV4T2YobW9kaWZpZXIucGhhc2UpIDwgMCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicGhhc2VcIicsIFwiZWl0aGVyIFwiICsgbW9kaWZpZXJQaGFzZXMuam9pbignLCAnKSwgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIucGhhc2UpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdmbic6XG4gICAgICAgICAgaWYgKHR5cGVvZiBtb2RpZmllci5mbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wiZm5cIicsICdcImZ1bmN0aW9uXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5mbikgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VmZmVjdCc6XG4gICAgICAgICAgaWYgKG1vZGlmaWVyLmVmZmVjdCAhPSBudWxsICYmIHR5cGVvZiBtb2RpZmllci5lZmZlY3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImVmZmVjdFwiJywgJ1wiZnVuY3Rpb25cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmZuKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmVxdWlyZXMnOlxuICAgICAgICAgIGlmIChtb2RpZmllci5yZXF1aXJlcyAhPSBudWxsICYmICFBcnJheS5pc0FycmF5KG1vZGlmaWVyLnJlcXVpcmVzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlcykgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzSWZFeGlzdHMnOlxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNJZkV4aXN0c1wiJywgJ1wiYXJyYXlcIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdvcHRpb25zJzpcbiAgICAgICAgY2FzZSAnZGF0YSc6XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUG9wcGVySlM6IGFuIGludmFsaWQgcHJvcGVydHkgaGFzIGJlZW4gcHJvdmlkZWQgdG8gdGhlIFxcXCJcIiArIG1vZGlmaWVyLm5hbWUgKyBcIlxcXCIgbW9kaWZpZXIsIHZhbGlkIHByb3BlcnRpZXMgYXJlIFwiICsgVkFMSURfUFJPUEVSVElFUy5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlxcXCJcIiArIHMgKyBcIlxcXCJcIjtcbiAgICAgICAgICB9KS5qb2luKCcsICcpICsgXCI7IGJ1dCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgd2FzIHByb3ZpZGVkLlwiKTtcbiAgICAgIH1cblxuICAgICAgbW9kaWZpZXIucmVxdWlyZXMgJiYgbW9kaWZpZXIucmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAocmVxdWlyZW1lbnQpIHtcbiAgICAgICAgaWYgKG1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChtb2QpIHtcbiAgICAgICAgICByZXR1cm4gbW9kLm5hbWUgPT09IHJlcXVpcmVtZW50O1xuICAgICAgICB9KSA9PSBudWxsKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksIHJlcXVpcmVtZW50LCByZXF1aXJlbWVudCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5pcXVlQnkoYXJyLCBmbikge1xuICB2YXIgaWRlbnRpZmllcnMgPSBuZXcgU2V0KCk7XG4gIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBmbihpdGVtKTtcblxuICAgIGlmICghaWRlbnRpZmllcnMuaGFzKGlkZW50aWZpZXIpKSB7XG4gICAgICBpZGVudGlmaWVycy5hZGQoaWRlbnRpZmllcik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsImltcG9ydCBnZXRDb21wb3NpdGVSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IG9yZGVyTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcIi4vdXRpbHMvZGVib3VuY2UuanNcIjtcbmltcG9ydCB2YWxpZGF0ZU1vZGlmaWVycyBmcm9tIFwiLi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qc1wiO1xuaW1wb3J0IHVuaXF1ZUJ5IGZyb20gXCIuL3V0aWxzL3VuaXF1ZUJ5LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgbWVyZ2VCeU5hbWUgZnJvbSBcIi4vdXRpbHMvbWVyZ2VCeU5hbWUuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfRUxFTUVOVF9FUlJPUiA9ICdQb3BwZXI6IEludmFsaWQgcmVmZXJlbmNlIG9yIHBvcHBlciBhcmd1bWVudCBwcm92aWRlZC4gVGhleSBtdXN0IGJlIGVpdGhlciBhIERPTSBlbGVtZW50IG9yIHZpcnR1YWwgZWxlbWVudC4nO1xudmFyIElORklOSVRFX0xPT1BfRVJST1IgPSAnUG9wcGVyOiBBbiBpbmZpbml0ZSBsb29wIGluIHRoZSBtb2RpZmllcnMgY3ljbGUgaGFzIGJlZW4gZGV0ZWN0ZWQhIFRoZSBjeWNsZSBoYXMgYmVlbiBpbnRlcnJ1cHRlZCB0byBwcmV2ZW50IGEgYnJvd3NlciBjcmFzaC4nO1xudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbW9kaWZpZXJzOiBbXSxcbiAgc3RyYXRlZ3k6ICdhYnNvbHV0ZSdcbn07XG5cbmZ1bmN0aW9uIGFyZVZhbGlkRWxlbWVudHMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gIWFyZ3Muc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiAhKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3BwZXJHZW5lcmF0b3IoZ2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoZ2VuZXJhdG9yT3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgZ2VuZXJhdG9yT3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9nZW5lcmF0b3JPcHRpb25zID0gZ2VuZXJhdG9yT3B0aW9ucyxcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRNb2RpZmllcnMsXG4gICAgICBkZWZhdWx0TW9kaWZpZXJzID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmID09PSB2b2lkIDAgPyBbXSA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZixcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIGRlZmF1bHRPcHRpb25zID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9PT0gdm9pZCAwID8gREVGQVVMVF9PUFRJT05TIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmMjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZVBvcHBlcihyZWZlcmVuY2UsIHBvcHBlciwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucztcbiAgICB9XG5cbiAgICB2YXIgc3RhdGUgPSB7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgb3JkZXJlZE1vZGlmaWVyczogW10sXG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIGRlZmF1bHRPcHRpb25zKSxcbiAgICAgIG1vZGlmaWVyc0RhdGE6IHt9LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlOiByZWZlcmVuY2UsXG4gICAgICAgIHBvcHBlcjogcG9wcGVyXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBzdHlsZXM6IHt9XG4gICAgfTtcbiAgICB2YXIgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIHZhciBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHZhciBpbnN0YW5jZSA9IHtcbiAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgIHNldE9wdGlvbnM6IGZ1bmN0aW9uIHNldE9wdGlvbnMoc2V0T3B0aW9uc0FjdGlvbikge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzZXRPcHRpb25zQWN0aW9uID09PSAnZnVuY3Rpb24nID8gc2V0T3B0aW9uc0FjdGlvbihzdGF0ZS5vcHRpb25zKSA6IHNldE9wdGlvbnNBY3Rpb247XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgc3RhdGUub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBzdGF0ZS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgc3RhdGUuc2Nyb2xsUGFyZW50cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGlzRWxlbWVudChyZWZlcmVuY2UpID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlKSA6IHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkgOiBbXSxcbiAgICAgICAgICBwb3BwZXI6IGxpc3RTY3JvbGxQYXJlbnRzKHBvcHBlcilcbiAgICAgICAgfTsgLy8gT3JkZXJzIHRoZSBtb2RpZmllcnMgYmFzZWQgb24gdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCBgcGhhc2VgXG4gICAgICAgIC8vIHByb3BlcnRpZXNcblxuICAgICAgICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyTW9kaWZpZXJzKG1lcmdlQnlOYW1lKFtdLmNvbmNhdChkZWZhdWx0TW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycykpKTsgLy8gU3RyaXAgb3V0IGRpc2FibGVkIG1vZGlmaWVyc1xuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobSkge1xuICAgICAgICAgIHJldHVybiBtLmVuYWJsZWQ7XG4gICAgICAgIH0pOyAvLyBWYWxpZGF0ZSB0aGUgcHJvdmlkZWQgbW9kaWZpZXJzIHNvIHRoYXQgdGhlIGNvbnN1bWVyIHdpbGwgZ2V0IHdhcm5lZFxuICAgICAgICAvLyBpZiBvbmUgb2YgdGhlIG1vZGlmaWVycyBpcyBpbnZhbGlkIGZvciBhbnkgcmVhc29uXG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgIHZhciBtb2RpZmllcnMgPSB1bmlxdWVCeShbXS5jb25jYXQob3JkZXJlZE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpLCBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpO1xuXG4gICAgICAgICAgaWYgKGdldEJhc2VQbGFjZW1lbnQoc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQpID09PSBhdXRvKSB7XG4gICAgICAgICAgICB2YXIgZmxpcE1vZGlmaWVyID0gc3RhdGUub3JkZXJlZE1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYyLm5hbWU7XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lID09PSAnZmxpcCc7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFmbGlwTW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhdXRvXCIgcGxhY2VtZW50cyByZXF1aXJlIHRoZSBcImZsaXBcIiBtb2RpZmllciBiZScsICdwcmVzZW50IGFuZCBlbmFibGVkIHRvIHdvcmsuJ10uam9pbignICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBvcHBlciksXG4gICAgICAgICAgICAgIG1hcmdpblRvcCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblRvcCxcbiAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5SaWdodCxcbiAgICAgICAgICAgICAgbWFyZ2luQm90dG9tID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgICBtYXJnaW5MZWZ0ID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luTGVmdDsgLy8gV2Ugbm8gbG9uZ2VyIHRha2UgaW50byBhY2NvdW50IGBtYXJnaW5zYCBvbiB0aGUgcG9wcGVyLCBhbmQgaXQgY2FuXG4gICAgICAgICAgLy8gY2F1c2UgYnVncyB3aXRoIHBvc2l0aW9uaW5nLCBzbyB3ZSdsbCB3YXJuIHRoZSBjb25zdW1lclxuXG5cbiAgICAgICAgICBpZiAoW21hcmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdF0uc29tZShmdW5jdGlvbiAobWFyZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChtYXJnaW4pO1xuICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oWydQb3BwZXI6IENTUyBcIm1hcmdpblwiIHN0eWxlcyBjYW5ub3QgYmUgdXNlZCB0byBhcHBseSBwYWRkaW5nJywgJ2JldHdlZW4gdGhlIHBvcHBlciBhbmQgaXRzIHJlZmVyZW5jZSBlbGVtZW50IG9yIGJvdW5kYXJ5LicsICdUbyByZXBsaWNhdGUgbWFyZ2luLCB1c2UgdGhlIGBvZmZzZXRgIG1vZGlmaWVyLCBhcyB3ZWxsIGFzJywgJ3RoZSBgcGFkZGluZ2Agb3B0aW9uIGluIHRoZSBgcHJldmVudE92ZXJmbG93YCBhbmQgYGZsaXBgJywgJ21vZGlmaWVycy4nXS5qb2luKCcgJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bk1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICByZXR1cm4gaW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICB9LFxuICAgICAgLy8gU3luYyB1cGRhdGUg4oCTIGl0IHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGVkLCBldmVuIGlmIG5vdCBuZWNlc3NhcnkuIFRoaXNcbiAgICAgIC8vIGlzIHVzZWZ1bCBmb3IgbG93IGZyZXF1ZW5jeSB1cGRhdGVzIHdoZXJlIHN5bmMgYmVoYXZpb3Igc2ltcGxpZmllcyB0aGVcbiAgICAgIC8vIGxvZ2ljLlxuICAgICAgLy8gRm9yIGhpZ2ggZnJlcXVlbmN5IHVwZGF0ZXMgKGUuZy4gYHJlc2l6ZWAgYW5kIGBzY3JvbGxgIGV2ZW50cyksIGFsd2F5c1xuICAgICAgLy8gcHJlZmVyIHRoZSBhc3luYyBQb3BwZXIjdXBkYXRlIG1ldGhvZFxuICAgICAgZm9yY2VVcGRhdGU6IGZ1bmN0aW9uIGZvcmNlVXBkYXRlKCkge1xuICAgICAgICBpZiAoaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX3N0YXRlJGVsZW1lbnRzID0gc3RhdGUuZWxlbWVudHMsXG4gICAgICAgICAgICByZWZlcmVuY2UgPSBfc3RhdGUkZWxlbWVudHMucmVmZXJlbmNlLFxuICAgICAgICAgICAgcG9wcGVyID0gX3N0YXRlJGVsZW1lbnRzLnBvcHBlcjsgLy8gRG9uJ3QgcHJvY2VlZCBpZiBgcmVmZXJlbmNlYCBvciBgcG9wcGVyYCBhcmUgbm90IHZhbGlkIGVsZW1lbnRzXG4gICAgICAgIC8vIGFueW1vcmVcblxuICAgICAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBTdG9yZSB0aGUgcmVmZXJlbmNlIGFuZCBwb3BwZXIgcmVjdHMgdG8gYmUgcmVhZCBieSBtb2RpZmllcnNcblxuXG4gICAgICAgIHN0YXRlLnJlY3RzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogZ2V0Q29tcG9zaXRlUmVjdChyZWZlcmVuY2UsIGdldE9mZnNldFBhcmVudChwb3BwZXIpLCBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnKSxcbiAgICAgICAgICBwb3BwZXI6IGdldExheW91dFJlY3QocG9wcGVyKVxuICAgICAgICB9OyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXNldCB0aGUgY3VycmVudCB1cGRhdGUgY3ljbGUuIFRoZVxuICAgICAgICAvLyBtb3N0IGNvbW1vbiB1c2UgY2FzZSBmb3IgdGhpcyBpcyB0aGUgYGZsaXBgIG1vZGlmaWVyIGNoYW5naW5nIHRoZVxuICAgICAgICAvLyBwbGFjZW1lbnQsIHdoaWNoIHRoZW4gbmVlZHMgdG8gcmUtcnVuIGFsbCB0aGUgbW9kaWZpZXJzLCBiZWNhdXNlIHRoZVxuICAgICAgICAvLyBsb2dpYyB3YXMgcHJldmlvdXNseSByYW4gZm9yIHRoZSBwcmV2aW91cyBwbGFjZW1lbnQgYW5kIGlzIHRoZXJlZm9yZVxuICAgICAgICAvLyBzdGFsZS9pbmNvcnJlY3RcblxuICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5wbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDsgLy8gT24gZWFjaCB1cGRhdGUgY3ljbGUsIHRoZSBgbW9kaWZpZXJzRGF0YWAgcHJvcGVydHkgZm9yIGVhY2ggbW9kaWZpZXJcbiAgICAgICAgLy8gaXMgZmlsbGVkIHdpdGggdGhlIGluaXRpYWwgZGF0YSBzcGVjaWZpZWQgYnkgdGhlIG1vZGlmaWVyLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIGl0IGRvZXNuJ3QgcGVyc2lzdCBhbmQgaXMgZnJlc2ggb24gZWFjaCB1cGRhdGUuXG4gICAgICAgIC8vIFRvIGVuc3VyZSBwZXJzaXN0ZW50IGRhdGEsIHVzZSBgJHtuYW1lfSNwZXJzaXN0ZW50YFxuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGUubW9kaWZpZXJzRGF0YVttb2RpZmllci5uYW1lXSA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVyLmRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fZGVidWdfbG9vcHNfXyA9IDA7XG5cbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgX19kZWJ1Z19sb29wc19fICs9IDE7XG5cbiAgICAgICAgICAgIGlmIChfX2RlYnVnX2xvb3BzX18gPiAxMDApIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTkZJTklURV9MT09QX0VSUk9SKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN0YXRlLnJlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfc3RhdGUkb3JkZXJlZE1vZGlmaWUgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzW2luZGV4XSxcbiAgICAgICAgICAgICAgZm4gPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUuZm4sXG4gICAgICAgICAgICAgIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUub3B0aW9ucyxcbiAgICAgICAgICAgICAgX29wdGlvbnMgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID09PSB2b2lkIDAgPyB7fSA6IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIsXG4gICAgICAgICAgICAgIG5hbWUgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUubmFtZTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHN0YXRlID0gZm4oe1xuICAgICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IF9vcHRpb25zLFxuICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pIHx8IHN0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIEFzeW5jIGFuZCBvcHRpbWlzdGljYWxseSBvcHRpbWl6ZWQgdXBkYXRlIOKAkyBpdCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpZlxuICAgICAgLy8gbm90IG5lY2Vzc2FyeSAoZGVib3VuY2VkIHRvIHJ1biBhdCBtb3N0IG9uY2UtcGVyLXRpY2spXG4gICAgICB1cGRhdGU6IGRlYm91bmNlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICByZXNvbHZlKHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoSU5WQUxJRF9FTEVNRU5UX0VSUk9SKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnNldE9wdGlvbnMob3B0aW9ucykudGhlbihmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIGlmICghaXNEZXN0cm95ZWQgJiYgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKSB7XG4gICAgICAgIG9wdGlvbnMub25GaXJzdFVwZGF0ZShzdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgYmVmb3JlIHRoZSBmaXJzdFxuICAgIC8vIHVwZGF0ZSBjeWNsZSBydW5zLiBUaGV5IHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHVwZGF0ZVxuICAgIC8vIGN5Y2xlLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgbW9kaWZpZXIgYWRkcyBzb21lIHBlcnNpc3RlbnQgZGF0YSB0aGF0XG4gICAgLy8gb3RoZXIgbW9kaWZpZXJzIG5lZWQgdG8gdXNlLCBidXQgdGhlIG1vZGlmaWVyIGlzIHJ1biBhZnRlciB0aGUgZGVwZW5kZW50XG4gICAgLy8gb25lLlxuXG4gICAgZnVuY3Rpb24gcnVuTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgICB2YXIgbmFtZSA9IF9yZWYzLm5hbWUsXG4gICAgICAgICAgICBfcmVmMyRvcHRpb25zID0gX3JlZjMub3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnMgPSBfcmVmMyRvcHRpb25zID09PSB2b2lkIDAgPyB7fSA6IF9yZWYzJG9wdGlvbnMsXG4gICAgICAgICAgICBlZmZlY3QgPSBfcmVmMy5lZmZlY3Q7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlZmZlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB2YXIgY2xlYW51cEZuID0gZWZmZWN0KHtcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB2YXIgbm9vcEZuID0gZnVuY3Rpb24gbm9vcEZuKCkge307XG5cbiAgICAgICAgICBlZmZlY3RDbGVhbnVwRm5zLnB1c2goY2xlYW51cEZuIHx8IG5vb3BGbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgICAgfSk7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuZXhwb3J0IHZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKCk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgZGV0ZWN0T3ZlcmZsb3cgfTsiLCJpbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IsIGRldGVjdE92ZXJmbG93IH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSBcIi4vbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5pbXBvcnQgcG9wcGVyT2Zmc2V0cyBmcm9tIFwiLi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanNcIjtcbmltcG9ydCBhcHBseVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanNcIjtcbnZhciBkZWZhdWx0TW9kaWZpZXJzID0gW2V2ZW50TGlzdGVuZXJzLCBwb3BwZXJPZmZzZXRzLCBjb21wdXRlU3R5bGVzLCBhcHBseVN0eWxlc107XG52YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcih7XG4gIGRlZmF1bHRNb2RpZmllcnM6IGRlZmF1bHRNb2RpZmllcnNcbn0pOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGNyZWF0ZVBvcHBlciwgcG9wcGVyR2VuZXJhdG9yLCBkZWZhdWx0TW9kaWZpZXJzLCBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3cgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjtcbmltcG9ydCBldmVudExpc3RlbmVycyBmcm9tIFwiLi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanNcIjtcbmltcG9ydCBwb3BwZXJPZmZzZXRzIGZyb20gXCIuL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzXCI7XG5pbXBvcnQgY29tcHV0ZVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qc1wiO1xuaW1wb3J0IGFwcGx5U3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9hcHBseVN0eWxlcy5qc1wiO1xuaW1wb3J0IG9mZnNldCBmcm9tIFwiLi9tb2RpZmllcnMvb2Zmc2V0LmpzXCI7XG5pbXBvcnQgZmxpcCBmcm9tIFwiLi9tb2RpZmllcnMvZmxpcC5qc1wiO1xuaW1wb3J0IHByZXZlbnRPdmVyZmxvdyBmcm9tIFwiLi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgYXJyb3cgZnJvbSBcIi4vbW9kaWZpZXJzL2Fycm93LmpzXCI7XG5pbXBvcnQgaGlkZSBmcm9tIFwiLi9tb2RpZmllcnMvaGlkZS5qc1wiO1xudmFyIGRlZmF1bHRNb2RpZmllcnMgPSBbZXZlbnRMaXN0ZW5lcnMsIHBvcHBlck9mZnNldHMsIGNvbXB1dGVTdHlsZXMsIGFwcGx5U3R5bGVzLCBvZmZzZXQsIGZsaXAsIHByZXZlbnRPdmVyZmxvdywgYXJyb3csIGhpZGVdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiQHBvcHBlcmpzL2NvcmVcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiQHBvcHBlcmpzL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlUG9wcGVyXCJdID0gZmFjdG9yeShyZXF1aXJlKFwiQHBvcHBlcmpzL2NvcmVcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImN5dG9zY2FwZVBvcHBlclwiXSA9IGZhY3Rvcnkocm9vdFtcIlBvcHBlclwiXSk7XG59KSh0aGlzLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzhfXykge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDcpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vLyBTaW1wbGUsIGludGVybmFsIE9iamVjdC5hc3NpZ24oKSBwb2x5ZmlsbCBmb3Igb3B0aW9ucyBvYmplY3RzIGV0Yy5cblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuYXNzaWduICE9IG51bGwgPyBPYmplY3QuYXNzaWduLmJpbmQoT2JqZWN0KSA6IGZ1bmN0aW9uICh0Z3QpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHNyY3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgc3Jjc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBzcmNzLmZvckVhY2goZnVuY3Rpb24gKHNyYykge1xuICAgIGlmIChzcmMgIT09IG51bGwgJiYgc3JjICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIE9iamVjdC5rZXlzKHNyYykuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICByZXR1cm4gdGd0W2tdID0gc3JjW2tdO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdGd0O1xufTtcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSksXG4gICAgZ2V0Qm91bmRpbmdCb3ggPSBfcmVxdWlyZS5nZXRCb3VuZGluZ0JveDtcblxuLy8gQ3JlYXRlIGEgcG9wcGVyIHZpcnR1YWwgZWxlbWVudCAoYWthIHBvcHBlciB2MSByZWZlcmVuY2Ugb2JqZWN0KVxuLy8gaHR0cHM6Ly9wb3BwZXIuanMub3JnL2RvY3MvdjIvdmlydHVhbC1lbGVtZW50cy9cblxuXG5mdW5jdGlvbiBnZXRSZWYodGFyZ2V0LCBvcHRzKSB7XG5cbiAgLy9EZWZpbmUgcG9wcGVyIHJlZmVyZW5jZSBvYmplY3QgYW5kIGN5IHJlZmVyZW5jZSAgb2JqZWN0XG4gIHZhciByZWZPYmplY3QgPSB7XG4gICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0OiBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICByZXR1cm4gZ2V0Qm91bmRpbmdCb3godGFyZ2V0LCBvcHRzKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHJlZk9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGdldFJlZjogZ2V0UmVmIH07XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxudmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKSxcbiAgICBnZXRSZWYgPSBfcmVxdWlyZS5nZXRSZWY7XG5cbnZhciBfcmVxdWlyZTIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpLFxuICAgIGdldENvbnRlbnQgPSBfcmVxdWlyZTIuZ2V0Q29udGVudDtcblxudmFyIHBvcHBlckRlZmF1bHRzID0ge307XG5cbnZhciBfcmVxdWlyZTMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpLFxuICAgIGNyZWF0ZVBvcHBlciA9IF9yZXF1aXJlMy5jcmVhdGVQb3BwZXI7XG5cbi8vIENyZWF0ZSBhIG5ldyBwb3BwZXIgb2JqZWN0IGZvciBhIGNvcmUgb3IgZWxlbWVudCB0YXJnZXRcblxuXG5mdW5jdGlvbiBnZXRQb3BwZXIodGFyZ2V0LCBvcHRzKSB7XG4gIHZhciByZWZPYmplY3QgPSBnZXRSZWYodGFyZ2V0LCBvcHRzKTtcbiAgdmFyIGNvbnRlbnQgPSBnZXRDb250ZW50KHRhcmdldCwgb3B0cy5jb250ZW50KTtcbiAgdmFyIHBvcHBlck9wdHMgPSBhc3NpZ24oe30sIHBvcHBlckRlZmF1bHRzLCBvcHRzLnBvcHBlcik7XG5cbiAgcmV0dXJuIGNyZWF0ZVBvcHBlcihyZWZPYmplY3QsIGNvbnRlbnQsIHBvcHBlck9wdHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgZ2V0UG9wcGVyOiBnZXRQb3BwZXIgfTtcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG52YXIgX3JlcXVpcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpLFxuICAgIGdldFBvcHBlciA9IF9yZXF1aXJlLmdldFBvcHBlcjtcblxudmFyIF9yZXF1aXJlMiA9IF9fd2VicGFja19yZXF1aXJlX18oMSksXG4gICAgZ2V0UmVmID0gX3JlcXVpcmUyLmdldFJlZjtcblxuZnVuY3Rpb24gcG9wcGVyKG9wdHMpIHtcbiAgY2hlY2tGb3JXYXJuaW5nKHRoaXMpO1xuXG4gIHJldHVybiBnZXRQb3BwZXIodGhpc1swXSwgY3JlYXRlT3B0aW9uc09iamVjdCh0aGlzWzBdLCBvcHRzKSk7XG59XG5cbmZ1bmN0aW9uIHBvcHBlclJlZihvcHRzKSB7XG4gIGNoZWNrRm9yV2FybmluZyh0aGlzKTtcblxuICByZXR1cm4gZ2V0UmVmKHRoaXNbMF0sIGNyZWF0ZU9wdGlvbnNPYmplY3QodGhpc1swXSwgb3B0cykpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zT2JqZWN0KHRhcmdldCwgb3B0cykge1xuICB2YXIgcmVuZGVyZWREaW1lbnNpb25zID0gZnVuY3Rpb24gcmVuZGVyZWREaW1lbnNpb25zKGVsKSB7XG4gICAgcmV0dXJuIGVsLmlzTm9kZSgpID8geyB3OiBlbC5yZW5kZXJlZFdpZHRoKCksIGg6IGVsLnJlbmRlcmVkSGVpZ2h0KCkgfSA6IHsgdzogMywgaDogMyB9O1xuICB9O1xuICB2YXIgcmVuZGVyZWRQb3NpdGlvbiA9IGZ1bmN0aW9uIHJlbmRlcmVkUG9zaXRpb24oZWwpIHtcbiAgICByZXR1cm4gZWwuaXNOb2RlKCkgPyBnZXRSZW5kZXJlZENlbnRlcihlbCwgcmVuZGVyZWREaW1lbnNpb25zKSA6IGdldFJlbmRlcmVkTWlkcG9pbnQoZWwpO1xuICB9O1xuICB2YXIgcG9wcGVyID0ge307XG4gIHZhciBjeSA9IHRhcmdldC5jeSgpO1xuXG4gIHZhciBkZWZhdWx0cyA9IHsgcmVuZGVyZWREaW1lbnNpb25zOiByZW5kZXJlZERpbWVuc2lvbnMsIHJlbmRlcmVkUG9zaXRpb246IHJlbmRlcmVkUG9zaXRpb24sIHBvcHBlcjogcG9wcGVyLCBjeTogY3kgfTtcblxuICByZXR1cm4gYXNzaWduKHt9LCBkZWZhdWx0cywgb3B0cyk7XG59XG5cbi8vR2V0IHRoZSByZW5kZXJlZCBjZW50ZXJcbmZ1bmN0aW9uIGdldFJlbmRlcmVkQ2VudGVyKHRhcmdldCwgcmVuZGVyZWREaW1lbnNpb25zKSB7XG4gIHZhciBwb3MgPSB0YXJnZXQucmVuZGVyZWRQb3NpdGlvbigpO1xuICB2YXIgZGltZW5zaW9ucyA9IHJlbmRlcmVkRGltZW5zaW9ucyh0YXJnZXQpO1xuICB2YXIgb2Zmc2V0WCA9IGRpbWVuc2lvbnMudyAvIDI7XG4gIHZhciBvZmZzZXRZID0gZGltZW5zaW9ucy5oIC8gMjtcblxuICByZXR1cm4ge1xuICAgIHg6IHBvcy54IC0gb2Zmc2V0WCxcbiAgICB5OiBwb3MueSAtIG9mZnNldFlcbiAgfTtcbn1cblxuLy9HZXQgdGhlIHJlbmRlcmVkIHBvc2l0aW9uIG9mIHRoZSBtaWRwb2ludFxuZnVuY3Rpb24gZ2V0UmVuZGVyZWRNaWRwb2ludCh0YXJnZXQpIHtcbiAgdmFyIHAgPSB0YXJnZXQubWlkcG9pbnQoKTtcbiAgdmFyIHBhbiA9IHRhcmdldC5jeSgpLnBhbigpO1xuICB2YXIgem9vbSA9IHRhcmdldC5jeSgpLnpvb20oKTtcblxuICByZXR1cm4ge1xuICAgIHg6IHAueCAqIHpvb20gKyBwYW4ueCxcbiAgICB5OiBwLnkgKiB6b29tICsgcGFuLnlcbiAgfTtcbn1cblxuLy9XYXJuIHVzZXIgYWJvdXQgbWlzdXNlIG9mIHRoZSBwbHVnaW5cbmZ1bmN0aW9uIGNoZWNrRm9yV2FybmluZyhlbGVtZW50cykge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5cbiAgLy9Qb3BwZXIuanMgU2hvdWxkIG9ubHkgYmUgdXNlZCBvbiAxIGVsZW1lbnRcbiAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICBjb25zb2xlLndhcm4oXCJQb3BwZXIuanMgRXh0ZW5zaW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgb24gb25lIGVsZW1lbnQuXCIpO1xuICAgIGNvbnNvbGUud2FybihcIklnbm9yaW5nIGFsbCBzdWJzZXF1ZW50IGVsZW1lbnRzXCIpO1xuICB9XG5cbiAgLyogZXNsaW50LWVuYWJsZSAqL1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgcG9wcGVyOiBwb3BwZXIsIHBvcHBlclJlZjogcG9wcGVyUmVmIH07XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxudmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKSxcbiAgICBnZXRQb3BwZXIgPSBfcmVxdWlyZS5nZXRQb3BwZXI7XG5cbnZhciBfcmVxdWlyZTIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLFxuICAgIGdldFJlZiA9IF9yZXF1aXJlMi5nZXRSZWY7XG5cbmZ1bmN0aW9uIHBvcHBlcihvcHRzKSB7XG4gIHJldHVybiBnZXRQb3BwZXIodGhpcywgY3JlYXRlT3B0aW9uc09iamVjdCh0aGlzLCBvcHRzKSk7XG59XG5cbmZ1bmN0aW9uIHBvcHBlclJlZihvcHRzKSB7XG4gIHJldHVybiBnZXRSZWYodGhpcywgY3JlYXRlT3B0aW9uc09iamVjdCh0aGlzLCBvcHRzKSk7XG59XG5cbi8vQ3JlYXRlIGEgb3B0aW9ucyBvYmplY3Qgd2l0aCByZXF1aXJlZCBkZWZhdWx0IHZhbHVlc1xuZnVuY3Rpb24gY3JlYXRlT3B0aW9uc09iamVjdCh0YXJnZXQsIG9wdHMpIHtcbiAgdmFyIGRlZmF1bHRzID0ge1xuICAgIGJvdW5kaW5nQm94OiB7XG4gICAgICB0b3A6IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICBib3R0b206IDAsXG4gICAgICB3OiAzLFxuICAgICAgaDogM1xuICAgIH0sXG4gICAgcmVuZGVyZWREaW1lbnNpb25zOiBmdW5jdGlvbiByZW5kZXJlZERpbWVuc2lvbnMoKSB7XG4gICAgICByZXR1cm4geyB3OiAzLCBoOiAzIH07XG4gICAgfSxcbiAgICByZW5kZXJlZFBvc2l0aW9uOiBmdW5jdGlvbiByZW5kZXJlZFBvc2l0aW9uKCkge1xuICAgICAgcmV0dXJuIHsgeDogMCwgeTogMCB9O1xuICAgIH0sXG4gICAgcG9wcGVyOiB7fSxcbiAgICBjeTogdGFyZ2V0XG4gIH07XG5cbiAgcmV0dXJuIGFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgcG9wcGVyOiBwb3BwZXIsIHBvcHBlclJlZjogcG9wcGVyUmVmIH07XG5cbi8qKiovIH0pLFxuLyogNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0JveCh0YXJnZXQsIG9wdHMpIHtcbiAgdmFyIHJlbmRlcmVkUG9zaXRpb24gPSBvcHRzLnJlbmRlcmVkUG9zaXRpb24sXG4gICAgICBjeSA9IG9wdHMuY3ksXG4gICAgICByZW5kZXJlZERpbWVuc2lvbnMgPSBvcHRzLnJlbmRlcmVkRGltZW5zaW9ucztcblxuICB2YXIgb2Zmc2V0ID0gY3kuY29udGFpbmVyKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBkaW1zID0gcmVuZGVyZWREaW1lbnNpb25zKHRhcmdldCk7XG4gIHZhciBwb3MgPSByZW5kZXJlZFBvc2l0aW9uKHRhcmdldCk7XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IHBvcy55ICsgb2Zmc2V0LnRvcCxcbiAgICBsZWZ0OiBwb3MueCArIG9mZnNldC5sZWZ0LFxuICAgIHJpZ2h0OiBwb3MueCArIGRpbXMudyArIG9mZnNldC5sZWZ0LFxuICAgIGJvdHRvbTogcG9zLnkgKyBkaW1zLmggKyBvZmZzZXQudG9wLFxuICAgIHdpZHRoOiBkaW1zLncsXG4gICAgaGVpZ2h0OiBkaW1zLmhcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGdldEJvdW5kaW5nQm94OiBnZXRCb3VuZGluZ0JveCB9O1xuXG4vKioqLyB9KSxcbi8qIDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gZ2V0Q29udGVudCh0YXJnZXQsIGNvbnRlbnQpIHtcbiAgdmFyIGNvbnRlbnRPYmplY3QgPSBudWxsO1xuXG4gIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgLy9FeGVjdXRlIGZ1bmN0aW9uIGlmIHVzZXIgb3B0ZWQgZm9yIGEgZHlhbmFtaWMgdGFyZ2V0XG4gICAgY29udGVudE9iamVjdCA9IGNvbnRlbnQodGFyZ2V0KTtcbiAgfSBlbHNlIGlmIChjb250ZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAvL1RhcmdldCBvcHRpb24gaXMgYW4gSFRNTCBlbGVtZW50XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuIG5vdCBjcmVhdGUgcG9wcGVyIGZyb20gJ3RhcmdldCcgd2l0aCB1bmtub3duIHR5cGVcIik7XG4gIH1cblxuICAvLyBDaGVjayB2YWxpZGl0eSBvZiBwYXJzZWQgdGFyZ2V0XG4gIGlmIChjb250ZW50T2JqZWN0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gJ3RhcmdldCcgc3BlY2lmaWVkIHRvIGNyZWF0ZSBwb3BwZXJcIik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvbnRlbnRPYmplY3Q7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGdldENvbnRlbnQ6IGdldENvbnRlbnQgfTtcblxuLyoqKi8gfSksXG4vKiA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qIGdsb2JhbCBjeXRvc2NhcGUgKi9cblxudmFyIGNvcmVJbXBsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbnZhciBjb2xsZWN0aW9uSW1wbCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cbi8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcbnZhciByZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyKGN5dG9zY2FwZSkge1xuICBpZiAoIWN5dG9zY2FwZSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBjYW4ndCByZWdpc3RlciBpZiBjeXRvc2NhcGUgdW5zcGVjaWZpZWRcblxuICAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xuICBjeXRvc2NhcGUoJ2NvcmUnLCAncG9wcGVyJywgY29yZUltcGwucG9wcGVyKTsgLy9DeXRvc2NhcGUgQ29yZVxuICBjeXRvc2NhcGUoJ2NvbGxlY3Rpb24nLCAncG9wcGVyJywgY29sbGVjdGlvbkltcGwucG9wcGVyKTsgLy9DeXRvc2NhcGUgQ29sbGVjdGlvbnNcbiAgY3l0b3NjYXBlKCdjb3JlJywgJ3BvcHBlclJlZicsIGNvcmVJbXBsLnBvcHBlclJlZik7IC8vQ3l0b3NjYXBlIENvcmUgZm9yIFJlZmVyZW5jZXNcbiAgY3l0b3NjYXBlKCdjb2xsZWN0aW9uJywgJ3BvcHBlclJlZicsIGNvbGxlY3Rpb25JbXBsLnBvcHBlclJlZik7IC8vQ3l0b3NjYXBlIENvbGxlY3Rpb25zIGZvciBSZWZlcmVuY2VzXG59O1xuXG5pZiAodHlwZW9mIGN5dG9zY2FwZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gZXhwb3NlIHRvIGdsb2JhbCBjeXRvc2NhcGUgKGkuZS4gd2luZG93LmN5dG9zY2FwZSlcbiAgcmVnaXN0ZXIoY3l0b3NjYXBlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZWdpc3RlcjtcblxuLyoqKi8gfSksXG4vKiA4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV84X187XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBQb3dlckVkZ2UgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gUG93ZXJFZGdlKHNvdXJjZSwgdGFyZ2V0LCB0eXBlKSB7XHJcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XHJcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIH1cclxuICAgIHJldHVybiBQb3dlckVkZ2U7XHJcbn0oKSk7XHJcbmV4cG9ydHMuUG93ZXJFZGdlID0gUG93ZXJFZGdlO1xyXG52YXIgQ29uZmlndXJhdGlvbiA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBDb25maWd1cmF0aW9uKG4sIGVkZ2VzLCBsaW5rQWNjZXNzb3IsIHJvb3RHcm91cCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5saW5rQWNjZXNzb3IgPSBsaW5rQWNjZXNzb3I7XHJcbiAgICAgICAgdGhpcy5tb2R1bGVzID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgIHRoaXMucm9vdHMgPSBbXTtcclxuICAgICAgICBpZiAocm9vdEdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdE1vZHVsZXNGcm9tR3JvdXAocm9vdEdyb3VwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucm9vdHMucHVzaChuZXcgTW9kdWxlU2V0KCkpO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSlcclxuICAgICAgICAgICAgICAgIHRoaXMucm9vdHNbMF0uYWRkKHRoaXMubW9kdWxlc1tpXSA9IG5ldyBNb2R1bGUoaSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLlIgPSBlZGdlcy5sZW5ndGg7XHJcbiAgICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICB2YXIgcyA9IF90aGlzLm1vZHVsZXNbbGlua0FjY2Vzc29yLmdldFNvdXJjZUluZGV4KGUpXSwgdCA9IF90aGlzLm1vZHVsZXNbbGlua0FjY2Vzc29yLmdldFRhcmdldEluZGV4KGUpXSwgdHlwZSA9IGxpbmtBY2Nlc3Nvci5nZXRUeXBlKGUpO1xyXG4gICAgICAgICAgICBzLm91dGdvaW5nLmFkZCh0eXBlLCB0KTtcclxuICAgICAgICAgICAgdC5pbmNvbWluZy5hZGQodHlwZSwgcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBDb25maWd1cmF0aW9uLnByb3RvdHlwZS5pbml0TW9kdWxlc0Zyb21Hcm91cCA9IGZ1bmN0aW9uIChncm91cCkge1xyXG4gICAgICAgIHZhciBtb2R1bGVTZXQgPSBuZXcgTW9kdWxlU2V0KCk7XHJcbiAgICAgICAgdGhpcy5yb290cy5wdXNoKG1vZHVsZVNldCk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cC5sZWF2ZXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgdmFyIG5vZGUgPSBncm91cC5sZWF2ZXNbaV07XHJcbiAgICAgICAgICAgIHZhciBtb2R1bGUgPSBuZXcgTW9kdWxlKG5vZGUuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLm1vZHVsZXNbbm9kZS5pZF0gPSBtb2R1bGU7XHJcbiAgICAgICAgICAgIG1vZHVsZVNldC5hZGQobW9kdWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGdyb3VwLmdyb3Vwcykge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGdyb3VwLmdyb3Vwcy5sZW5ndGg7ICsraikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gZ3JvdXAuZ3JvdXBzW2pdO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRlZmluaXRpb24gPSB7fTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gY2hpbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgIT09IFwibGVhdmVzXCIgJiYgcHJvcCAhPT0gXCJncm91cHNcIiAmJiBjaGlsZC5oYXNPd25Qcm9wZXJ0eShwcm9wKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbltwcm9wXSA9IGNoaWxkW3Byb3BdO1xyXG4gICAgICAgICAgICAgICAgbW9kdWxlU2V0LmFkZChuZXcgTW9kdWxlKC0xIC0gaiwgbmV3IExpbmtTZXRzKCksIG5ldyBMaW5rU2V0cygpLCB0aGlzLmluaXRNb2R1bGVzRnJvbUdyb3VwKGNoaWxkKSwgZGVmaW5pdGlvbikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtb2R1bGVTZXQ7XHJcbiAgICB9O1xyXG4gICAgQ29uZmlndXJhdGlvbi5wcm90b3R5cGUubWVyZ2UgPSBmdW5jdGlvbiAoYSwgYiwgaykge1xyXG4gICAgICAgIGlmIChrID09PSB2b2lkIDApIHsgayA9IDA7IH1cclxuICAgICAgICB2YXIgaW5JbnQgPSBhLmluY29taW5nLmludGVyc2VjdGlvbihiLmluY29taW5nKSwgb3V0SW50ID0gYS5vdXRnb2luZy5pbnRlcnNlY3Rpb24oYi5vdXRnb2luZyk7XHJcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gbmV3IE1vZHVsZVNldCgpO1xyXG4gICAgICAgIGNoaWxkcmVuLmFkZChhKTtcclxuICAgICAgICBjaGlsZHJlbi5hZGQoYik7XHJcbiAgICAgICAgdmFyIG0gPSBuZXcgTW9kdWxlKHRoaXMubW9kdWxlcy5sZW5ndGgsIG91dEludCwgaW5JbnQsIGNoaWxkcmVuKTtcclxuICAgICAgICB0aGlzLm1vZHVsZXMucHVzaChtKTtcclxuICAgICAgICB2YXIgdXBkYXRlID0gZnVuY3Rpb24gKHMsIGksIG8pIHtcclxuICAgICAgICAgICAgcy5mb3JBbGwoZnVuY3Rpb24gKG1zLCBsaW5rdHlwZSkge1xyXG4gICAgICAgICAgICAgICAgbXMuZm9yQWxsKGZ1bmN0aW9uIChuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5scyA9IG5baV07XHJcbiAgICAgICAgICAgICAgICAgICAgbmxzLmFkZChsaW5rdHlwZSwgbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbmxzLnJlbW92ZShsaW5rdHlwZSwgYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbmxzLnJlbW92ZShsaW5rdHlwZSwgYik7XHJcbiAgICAgICAgICAgICAgICAgICAgYVtvXS5yZW1vdmUobGlua3R5cGUsIG4pO1xyXG4gICAgICAgICAgICAgICAgICAgIGJbb10ucmVtb3ZlKGxpbmt0eXBlLCBuKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHVwZGF0ZShvdXRJbnQsIFwiaW5jb21pbmdcIiwgXCJvdXRnb2luZ1wiKTtcclxuICAgICAgICB1cGRhdGUoaW5JbnQsIFwib3V0Z29pbmdcIiwgXCJpbmNvbWluZ1wiKTtcclxuICAgICAgICB0aGlzLlIgLT0gaW5JbnQuY291bnQoKSArIG91dEludC5jb3VudCgpO1xyXG4gICAgICAgIHRoaXMucm9vdHNba10ucmVtb3ZlKGEpO1xyXG4gICAgICAgIHRoaXMucm9vdHNba10ucmVtb3ZlKGIpO1xyXG4gICAgICAgIHRoaXMucm9vdHNba10uYWRkKG0pO1xyXG4gICAgICAgIHJldHVybiBtO1xyXG4gICAgfTtcclxuICAgIENvbmZpZ3VyYXRpb24ucHJvdG90eXBlLnJvb3RNZXJnZXMgPSBmdW5jdGlvbiAoaykge1xyXG4gICAgICAgIGlmIChrID09PSB2b2lkIDApIHsgayA9IDA7IH1cclxuICAgICAgICB2YXIgcnMgPSB0aGlzLnJvb3RzW2tdLm1vZHVsZXMoKTtcclxuICAgICAgICB2YXIgbiA9IHJzLmxlbmd0aDtcclxuICAgICAgICB2YXIgbWVyZ2VzID0gbmV3IEFycmF5KG4gKiAobiAtIDEpKTtcclxuICAgICAgICB2YXIgY3RyID0gMDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgaV8gPSBuIC0gMTsgaSA8IGlfOyArK2kpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyBqIDwgbjsgKytqKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYSA9IHJzW2ldLCBiID0gcnNbal07XHJcbiAgICAgICAgICAgICAgICBtZXJnZXNbY3RyXSA9IHsgaWQ6IGN0ciwgbkVkZ2VzOiB0aGlzLm5FZGdlcyhhLCBiKSwgYTogYSwgYjogYiB9O1xyXG4gICAgICAgICAgICAgICAgY3RyKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1lcmdlcztcclxuICAgIH07XHJcbiAgICBDb25maWd1cmF0aW9uLnByb3RvdHlwZS5ncmVlZHlNZXJnZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucm9vdHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucm9vdHNbaV0ubW9kdWxlcygpLmxlbmd0aCA8IDIpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgdmFyIG1zID0gdGhpcy5yb290TWVyZ2VzKGkpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEubkVkZ2VzID09IGIubkVkZ2VzID8gYS5pZCAtIGIuaWQgOiBhLm5FZGdlcyAtIGIubkVkZ2VzOyB9KTtcclxuICAgICAgICAgICAgdmFyIG0gPSBtc1swXTtcclxuICAgICAgICAgICAgaWYgKG0ubkVkZ2VzID49IHRoaXMuUilcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB0aGlzLm1lcmdlKG0uYSwgbS5iLCBpKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIENvbmZpZ3VyYXRpb24ucHJvdG90eXBlLm5FZGdlcyA9IGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICAgICAgdmFyIGluSW50ID0gYS5pbmNvbWluZy5pbnRlcnNlY3Rpb24oYi5pbmNvbWluZyksIG91dEludCA9IGEub3V0Z29pbmcuaW50ZXJzZWN0aW9uKGIub3V0Z29pbmcpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLlIgLSBpbkludC5jb3VudCgpIC0gb3V0SW50LmNvdW50KCk7XHJcbiAgICB9O1xyXG4gICAgQ29uZmlndXJhdGlvbi5wcm90b3R5cGUuZ2V0R3JvdXBIaWVyYXJjaHkgPSBmdW5jdGlvbiAocmV0YXJnZXRlZEVkZ2VzKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2YXIgZ3JvdXBzID0gW107XHJcbiAgICAgICAgdmFyIHJvb3QgPSB7fTtcclxuICAgICAgICB0b0dyb3Vwcyh0aGlzLnJvb3RzWzBdLCByb290LCBncm91cHMpO1xyXG4gICAgICAgIHZhciBlcyA9IHRoaXMuYWxsRWRnZXMoKTtcclxuICAgICAgICBlcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIHZhciBhID0gX3RoaXMubW9kdWxlc1tlLnNvdXJjZV07XHJcbiAgICAgICAgICAgIHZhciBiID0gX3RoaXMubW9kdWxlc1tlLnRhcmdldF07XHJcbiAgICAgICAgICAgIHJldGFyZ2V0ZWRFZGdlcy5wdXNoKG5ldyBQb3dlckVkZ2UodHlwZW9mIGEuZ2lkID09PSBcInVuZGVmaW5lZFwiID8gZS5zb3VyY2UgOiBncm91cHNbYS5naWRdLCB0eXBlb2YgYi5naWQgPT09IFwidW5kZWZpbmVkXCIgPyBlLnRhcmdldCA6IGdyb3Vwc1tiLmdpZF0sIGUudHlwZSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBncm91cHM7XHJcbiAgICB9O1xyXG4gICAgQ29uZmlndXJhdGlvbi5wcm90b3R5cGUuYWxsRWRnZXMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGVzID0gW107XHJcbiAgICAgICAgQ29uZmlndXJhdGlvbi5nZXRFZGdlcyh0aGlzLnJvb3RzWzBdLCBlcyk7XHJcbiAgICAgICAgcmV0dXJuIGVzO1xyXG4gICAgfTtcclxuICAgIENvbmZpZ3VyYXRpb24uZ2V0RWRnZXMgPSBmdW5jdGlvbiAobW9kdWxlcywgZXMpIHtcclxuICAgICAgICBtb2R1bGVzLmZvckFsbChmdW5jdGlvbiAobSkge1xyXG4gICAgICAgICAgICBtLmdldEVkZ2VzKGVzKTtcclxuICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5nZXRFZGdlcyhtLmNoaWxkcmVuLCBlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb247XHJcbn0oKSk7XHJcbmV4cG9ydHMuQ29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb247XHJcbmZ1bmN0aW9uIHRvR3JvdXBzKG1vZHVsZXMsIGdyb3VwLCBncm91cHMpIHtcclxuICAgIG1vZHVsZXMuZm9yQWxsKGZ1bmN0aW9uIChtKSB7XHJcbiAgICAgICAgaWYgKG0uaXNMZWFmKCkpIHtcclxuICAgICAgICAgICAgaWYgKCFncm91cC5sZWF2ZXMpXHJcbiAgICAgICAgICAgICAgICBncm91cC5sZWF2ZXMgPSBbXTtcclxuICAgICAgICAgICAgZ3JvdXAubGVhdmVzLnB1c2gobS5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgZyA9IGdyb3VwO1xyXG4gICAgICAgICAgICBtLmdpZCA9IGdyb3Vwcy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGlmICghbS5pc0lzbGFuZCgpIHx8IG0uaXNQcmVkZWZpbmVkKCkpIHtcclxuICAgICAgICAgICAgICAgIGcgPSB7IGlkOiBtLmdpZCB9O1xyXG4gICAgICAgICAgICAgICAgaWYgKG0uaXNQcmVkZWZpbmVkKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBtLmRlZmluaXRpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdbcHJvcF0gPSBtLmRlZmluaXRpb25bcHJvcF07XHJcbiAgICAgICAgICAgICAgICBpZiAoIWdyb3VwLmdyb3VwcylcclxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncm91cHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGdyb3VwLmdyb3Vwcy5wdXNoKG0uZ2lkKTtcclxuICAgICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKGcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRvR3JvdXBzKG0uY2hpbGRyZW4sIGcsIGdyb3Vwcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxudmFyIE1vZHVsZSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBNb2R1bGUoaWQsIG91dGdvaW5nLCBpbmNvbWluZywgY2hpbGRyZW4sIGRlZmluaXRpb24pIHtcclxuICAgICAgICBpZiAob3V0Z29pbmcgPT09IHZvaWQgMCkgeyBvdXRnb2luZyA9IG5ldyBMaW5rU2V0cygpOyB9XHJcbiAgICAgICAgaWYgKGluY29taW5nID09PSB2b2lkIDApIHsgaW5jb21pbmcgPSBuZXcgTGlua1NldHMoKTsgfVxyXG4gICAgICAgIGlmIChjaGlsZHJlbiA9PT0gdm9pZCAwKSB7IGNoaWxkcmVuID0gbmV3IE1vZHVsZVNldCgpOyB9XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMub3V0Z29pbmcgPSBvdXRnb2luZztcclxuICAgICAgICB0aGlzLmluY29taW5nID0gaW5jb21pbmc7XHJcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247XHJcbiAgICB9XHJcbiAgICBNb2R1bGUucHJvdG90eXBlLmdldEVkZ2VzID0gZnVuY3Rpb24gKGVzKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB0aGlzLm91dGdvaW5nLmZvckFsbChmdW5jdGlvbiAobXMsIGVkZ2V0eXBlKSB7XHJcbiAgICAgICAgICAgIG1zLmZvckFsbChmdW5jdGlvbiAodGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBlcy5wdXNoKG5ldyBQb3dlckVkZ2UoX3RoaXMuaWQsIHRhcmdldC5pZCwgZWRnZXR5cGUpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgTW9kdWxlLnByb3RvdHlwZS5pc0xlYWYgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uY291bnQoKSA9PT0gMDtcclxuICAgIH07XHJcbiAgICBNb2R1bGUucHJvdG90eXBlLmlzSXNsYW5kID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm91dGdvaW5nLmNvdW50KCkgPT09IDAgJiYgdGhpcy5pbmNvbWluZy5jb3VudCgpID09PSAwO1xyXG4gICAgfTtcclxuICAgIE1vZHVsZS5wcm90b3R5cGUuaXNQcmVkZWZpbmVkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5kZWZpbml0aW9uICE9PSBcInVuZGVmaW5lZFwiO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBNb2R1bGU7XHJcbn0oKSk7XHJcbmV4cG9ydHMuTW9kdWxlID0gTW9kdWxlO1xyXG5mdW5jdGlvbiBpbnRlcnNlY3Rpb24obSwgbikge1xyXG4gICAgdmFyIGkgPSB7fTtcclxuICAgIGZvciAodmFyIHYgaW4gbSlcclxuICAgICAgICBpZiAodiBpbiBuKVxyXG4gICAgICAgICAgICBpW3ZdID0gbVt2XTtcclxuICAgIHJldHVybiBpO1xyXG59XHJcbnZhciBNb2R1bGVTZXQgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTW9kdWxlU2V0KCkge1xyXG4gICAgICAgIHRoaXMudGFibGUgPSB7fTtcclxuICAgIH1cclxuICAgIE1vZHVsZVNldC5wcm90b3R5cGUuY291bnQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMudGFibGUpLmxlbmd0aDtcclxuICAgIH07XHJcbiAgICBNb2R1bGVTZXQucHJvdG90eXBlLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChvdGhlcikge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTW9kdWxlU2V0KCk7XHJcbiAgICAgICAgcmVzdWx0LnRhYmxlID0gaW50ZXJzZWN0aW9uKHRoaXMudGFibGUsIG90aGVyLnRhYmxlKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICAgIE1vZHVsZVNldC5wcm90b3R5cGUuaW50ZXJzZWN0aW9uQ291bnQgPSBmdW5jdGlvbiAob3RoZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnNlY3Rpb24ob3RoZXIpLmNvdW50KCk7XHJcbiAgICB9O1xyXG4gICAgTW9kdWxlU2V0LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgICAgIHJldHVybiBpZCBpbiB0aGlzLnRhYmxlO1xyXG4gICAgfTtcclxuICAgIE1vZHVsZVNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG0pIHtcclxuICAgICAgICB0aGlzLnRhYmxlW20uaWRdID0gbTtcclxuICAgIH07XHJcbiAgICBNb2R1bGVTZXQucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChtKSB7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMudGFibGVbbS5pZF07XHJcbiAgICB9O1xyXG4gICAgTW9kdWxlU2V0LnByb3RvdHlwZS5mb3JBbGwgPSBmdW5jdGlvbiAoZikge1xyXG4gICAgICAgIGZvciAodmFyIG1pZCBpbiB0aGlzLnRhYmxlKSB7XHJcbiAgICAgICAgICAgIGYodGhpcy50YWJsZVttaWRdKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTW9kdWxlU2V0LnByb3RvdHlwZS5tb2R1bGVzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB2cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZm9yQWxsKGZ1bmN0aW9uIChtKSB7XHJcbiAgICAgICAgICAgIGlmICghbS5pc1ByZWRlZmluZWQoKSlcclxuICAgICAgICAgICAgICAgIHZzLnB1c2gobSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHZzO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBNb2R1bGVTZXQ7XHJcbn0oKSk7XHJcbmV4cG9ydHMuTW9kdWxlU2V0ID0gTW9kdWxlU2V0O1xyXG52YXIgTGlua1NldHMgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTGlua1NldHMoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRzID0ge307XHJcbiAgICAgICAgdGhpcy5uID0gMDtcclxuICAgIH1cclxuICAgIExpbmtTZXRzLnByb3RvdHlwZS5jb3VudCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uO1xyXG4gICAgfTtcclxuICAgIExpbmtTZXRzLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZvckFsbE1vZHVsZXMoZnVuY3Rpb24gKG0pIHtcclxuICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYgbS5pZCA9PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgTGlua1NldHMucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChsaW5rdHlwZSwgbSkge1xyXG4gICAgICAgIHZhciBzID0gbGlua3R5cGUgaW4gdGhpcy5zZXRzID8gdGhpcy5zZXRzW2xpbmt0eXBlXSA6IHRoaXMuc2V0c1tsaW5rdHlwZV0gPSBuZXcgTW9kdWxlU2V0KCk7XHJcbiAgICAgICAgcy5hZGQobSk7XHJcbiAgICAgICAgKyt0aGlzLm47XHJcbiAgICB9O1xyXG4gICAgTGlua1NldHMucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChsaW5rdHlwZSwgbSkge1xyXG4gICAgICAgIHZhciBtcyA9IHRoaXMuc2V0c1tsaW5rdHlwZV07XHJcbiAgICAgICAgbXMucmVtb3ZlKG0pO1xyXG4gICAgICAgIGlmIChtcy5jb3VudCgpID09PSAwKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnNldHNbbGlua3R5cGVdO1xyXG4gICAgICAgIH1cclxuICAgICAgICAtLXRoaXMubjtcclxuICAgIH07XHJcbiAgICBMaW5rU2V0cy5wcm90b3R5cGUuZm9yQWxsID0gZnVuY3Rpb24gKGYpIHtcclxuICAgICAgICBmb3IgKHZhciBsaW5rdHlwZSBpbiB0aGlzLnNldHMpIHtcclxuICAgICAgICAgICAgZih0aGlzLnNldHNbbGlua3R5cGVdLCBOdW1iZXIobGlua3R5cGUpKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGlua1NldHMucHJvdG90eXBlLmZvckFsbE1vZHVsZXMgPSBmdW5jdGlvbiAoZikge1xyXG4gICAgICAgIHRoaXMuZm9yQWxsKGZ1bmN0aW9uIChtcywgbHQpIHsgcmV0dXJuIG1zLmZvckFsbChmKTsgfSk7XHJcbiAgICB9O1xyXG4gICAgTGlua1NldHMucHJvdG90eXBlLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChvdGhlcikge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTGlua1NldHMoKTtcclxuICAgICAgICB0aGlzLmZvckFsbChmdW5jdGlvbiAobXMsIGx0KSB7XHJcbiAgICAgICAgICAgIGlmIChsdCBpbiBvdGhlci5zZXRzKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaSA9IG1zLmludGVyc2VjdGlvbihvdGhlci5zZXRzW2x0XSksIG4gPSBpLmNvdW50KCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobiA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0c1tsdF0gPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uICs9IG47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBMaW5rU2V0cztcclxufSgpKTtcclxuZXhwb3J0cy5MaW5rU2V0cyA9IExpbmtTZXRzO1xyXG5mdW5jdGlvbiBpbnRlcnNlY3Rpb25Db3VudChtLCBuKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoaW50ZXJzZWN0aW9uKG0sIG4pKS5sZW5ndGg7XHJcbn1cclxuZnVuY3Rpb24gZ2V0R3JvdXBzKG5vZGVzLCBsaW5rcywgbGEsIHJvb3RHcm91cCkge1xyXG4gICAgdmFyIG4gPSBub2Rlcy5sZW5ndGgsIGMgPSBuZXcgQ29uZmlndXJhdGlvbihuLCBsaW5rcywgbGEsIHJvb3RHcm91cCk7XHJcbiAgICB3aGlsZSAoYy5ncmVlZHlNZXJnZSgpKVxyXG4gICAgICAgIDtcclxuICAgIHZhciBwb3dlckVkZ2VzID0gW107XHJcbiAgICB2YXIgZyA9IGMuZ2V0R3JvdXBIaWVyYXJjaHkocG93ZXJFZGdlcyk7XHJcbiAgICBwb3dlckVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uIChlbmQpIHtcclxuICAgICAgICAgICAgdmFyIGcgPSBlW2VuZF07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZyA9PSBcIm51bWJlclwiKVxyXG4gICAgICAgICAgICAgICAgZVtlbmRdID0gbm9kZXNbZ107XHJcbiAgICAgICAgfTtcclxuICAgICAgICBmKFwic291cmNlXCIpO1xyXG4gICAgICAgIGYoXCJ0YXJnZXRcIik7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7IGdyb3VwczogZywgcG93ZXJFZGdlczogcG93ZXJFZGdlcyB9O1xyXG59XHJcbmV4cG9ydHMuZ2V0R3JvdXBzID0gZ2V0R3JvdXBzO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljRzkzWlhKbmNtRndhQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDFkbFlrTnZiR0V2YzNKakwzQnZkMlZ5WjNKaGNHZ3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGUFNUdEpRVU5KTEcxQ1FVTlhMRTFCUVZjc1JVRkRXQ3hOUVVGWExFVkJRMWdzU1VGQldUdFJRVVphTEZkQlFVMHNSMEZCVGl4TlFVRk5MRU5CUVVzN1VVRkRXQ3hYUVVGTkxFZEJRVTRzVFVGQlRTeERRVUZMTzFGQlExZ3NVMEZCU1N4SFFVRktMRWxCUVVrc1EwRkJVVHRKUVVGSkxFTkJRVU03U1VGRGFFTXNaMEpCUVVNN1FVRkJSQ3hEUVVGRExFRkJURVFzU1VGTFF6dEJRVXhaTERoQ1FVRlRPMEZCVDNSQ08wbEJVMGtzZFVKQlFWa3NRMEZCVXl4RlFVRkZMRXRCUVdFc1JVRkJWU3haUVVGdlF5eEZRVUZGTEZOQlFXbENPMUZCUVhKSExHbENRV3RDUXp0UlFXeENOa01zYVVKQlFWa3NSMEZCV2l4WlFVRlpMRU5CUVhkQ08xRkJRemxGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVJc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEYUVJc1NVRkJTU3hUUVVGVExFVkJRVVU3V1VGRFdDeEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdVMEZEZUVNN1lVRkJUVHRaUVVOSUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1UwRkJVeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU5xUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJRenRuUWtGRGRFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRekZFTzFGQlEwUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlEzUkNMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETzFsQlExZ3NTVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRMmhFTEVOQlFVTXNSMEZCUnl4TFFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRhRVFzU1VGQlNTeEhRVUZITEZsQlFWa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGJrTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNoQ0xFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0xUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOUUxFTkJRVU03U1VGRlR5dzBRMEZCYjBJc1IwRkJOVUlzVlVGQk5rSXNTMEZCU3p0UlFVTTVRaXhKUVVGSkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEZOQlFWTXNSVUZCUlN4RFFVRkRPMUZCUTJoRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRek5DTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU14UXl4SlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpOQ0xFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU5xUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNN1dVRkRMMElzVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRUUVVONlFqdFJRVU5FTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTFCUVUwc1JVRkJSVHRaUVVOa0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGRE1VTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkZOVUlzU1VGQlNTeFZRVUZWTEVkQlFVY3NSVUZCUlN4RFFVRkRPMmRDUVVOd1FpeExRVUZMTEVsQlFVa3NTVUZCU1N4SlFVRkpMRXRCUVVzN2IwSkJRMnhDTEVsQlFVa3NTVUZCU1N4TFFVRkxMRkZCUVZFc1NVRkJTU3hKUVVGSkxFdEJRVXNzVVVGQlVTeEpRVUZKTEV0QlFVc3NRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRE8zZENRVU53UlN4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVWMlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRkZCUVZFc1JVRkJSU3hGUVVGRkxFbEJRVWtzVVVGQlVTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGFrZzdVMEZEU2p0UlFVTkVMRTlCUVU4c1UwRkJVeXhEUVVGRE8wbEJRM0JDTEVOQlFVTTdTVUZIUml3MlFrRkJTeXhIUVVGTUxGVkJRVTBzUTBGQlV5eEZRVUZGTEVOQlFWTXNSVUZCUlN4RFFVRmhPMUZCUVdJc2EwSkJRVUVzUlVGQlFTeExRVUZoTzFGQlEzSkRMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGRE0wTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRSUVVOcVJDeEpRVUZKTEZGQlFWRXNSMEZCUnl4SlFVRkpMRk5CUVZNc1JVRkJSU3hEUVVGRE8xRkJReTlDTEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGFFSXNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5vUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzUzBGQlN5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUTJwRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NUVUZCVFN4SFFVRkhMRlZCUVVNc1EwRkJWeXhGUVVGRkxFTkJRVk1zUlVGQlJTeERRVUZUTzFsQlF6TkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlF5eEZRVUZGTEVWQlFVVXNVVUZCVVR0blFrRkRiRUlzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRkJMRU5CUVVNN2IwSkJRMUFzU1VGQlNTeEhRVUZITEVkQlFXRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU42UWl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRja0lzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzaENMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOaUxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTXhRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZWtNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRFVDeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTlFMRU5CUVVNc1EwRkJRenRSUVVOR0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNWVUZCVlN4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRM1pETEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzFGQlEzUkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dFJRVU42UXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONFFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjRRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU55UWl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRlR5eHJRMEZCVlN4SFFVRnNRaXhWUVVGdFFpeERRVUZoTzFGQlFXSXNhMEpCUVVFc1JVRkJRU3hMUVVGaE8xRkJUVFZDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1VVRkRha01zU1VGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOc1FpeEpRVUZKTEUxQlFVMHNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1F5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRXaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM0pETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8yZENRVU14UWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZWtJc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEycEZMRWRCUVVjc1JVRkJSU3hEUVVGRE8yRkJRMVE3VTBGRFNqdFJRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeHRRMEZCVnl4SFFVRllPMUZCUTBrc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUlhoRExFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXp0blFrRkJSU3hUUVVGVE8xbEJSMnBFTEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlN5eFBRVUZCTEVOQlFVTXNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFYaEVMRU5CUVhkRUxFTkJRVU1zUTBGQlF6dFpRVU55Unl4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEWkN4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUVVVc1UwRkJVenRaUVVOcVF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVONFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0VFFVTm1PMGxCUTB3c1EwRkJRenRKUVVWUExEaENRVUZOTEVkQlFXUXNWVUZCWlN4RFFVRlRMRVZCUVVVc1EwRkJVenRSUVVNdlFpeEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUXpORExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEYWtRc1QwRkJUeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TFFVRkxMRVZCUVVVc1IwRkJSeXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdTVUZEYmtRc1EwRkJRenRKUVVWRUxIbERRVUZwUWl4SFFVRnFRaXhWUVVGclFpeGxRVUUwUWp0UlFVRTVReXhwUWtGbFF6dFJRV1JITEVsQlFVa3NUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOb1FpeEpRVUZKTEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRaQ3hSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZEVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMUZCUTNwQ0xFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTFJc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGREwwSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRMMElzWlVGQlpTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRk5CUVZNc1EwRkRPVUlzVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZEZGtRc1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGRGRrUXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkRWQ3hEUVVGRExFTkJRVU03VVVGRFVDeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGUkN4blEwRkJVU3hIUVVGU08xRkJRMGtzU1VGQlNTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTFvc1lVRkJZU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlF6RkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZOTEhOQ1FVRlJMRWRCUVdZc1ZVRkJaMElzVDBGQmEwSXNSVUZCUlN4RlFVRmxPMUZCUXk5RExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTFvc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0WlFVTm1MR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVNelF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTlFMRU5CUVVNN1NVRkRUQ3h2UWtGQlF6dEJRVUZFTEVOQlFVTXNRVUY0U2tRc1NVRjNTa003UVVGNFNsa3NjME5CUVdFN1FVRXdTakZDTEZOQlFWTXNVVUZCVVN4RFFVRkRMRTlCUVd0Q0xFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMDdTVUZETDBNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZCTEVOQlFVTTdVVUZEV2l4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJUdFpRVU5hTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUVHRuUWtGQlJTeExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenRaUVVOeVF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVMEZETTBJN1lVRkJUVHRaUVVOSUxFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXp0WlFVTmtMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0WlFVTjBRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhaUVVGWkxFVkJRVVVzUlVGQlJUdG5Ra0ZEYmtNc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRuUWtGRGJFSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1dVRkJXU3hGUVVGRk8yOUNRVVZvUWl4TFFVRkxMRWxCUVVrc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eFZRVUZWTzNkQ1FVTjZRaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEY2tNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTzI5Q1FVRkZMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzUlVGQlJTeERRVUZETzJkQ1FVTnlReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzcENMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYkVJN1dVRkRSQ3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03VTBGRGJrTTdTVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOUUxFTkJRVU03UVVGRlJEdEpRVWRKTEdkQ1FVTlhMRVZCUVZVc1JVRkRWaXhSUVVGdFF5eEZRVU51UXl4UlFVRnRReXhGUVVOdVF5eFJRVUZ4UXl4RlFVTnlReXhWUVVGblFqdFJRVWhvUWl4NVFrRkJRU3hGUVVGQkxHVkJRWGxDTEZGQlFWRXNSVUZCUlR0UlFVTnVReXg1UWtGQlFTeEZRVUZCTEdWQlFYbENMRkZCUVZFc1JVRkJSVHRSUVVOdVF5eDVRa0ZCUVN4RlFVRkJMR1ZCUVRCQ0xGTkJRVk1zUlVGQlJUdFJRVWh5UXl4UFFVRkZMRWRCUVVZc1JVRkJSU3hEUVVGUk8xRkJRMVlzWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCTWtJN1VVRkRia01zWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCTWtJN1VVRkRia01zWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCTmtJN1VVRkRja01zWlVGQlZTeEhRVUZXTEZWQlFWVXNRMEZCVFR0SlFVRkpMRU5CUVVNN1NVRkZhRU1zZVVKQlFWRXNSMEZCVWl4VlFVRlRMRVZCUVdVN1VVRkJlRUlzYVVKQlRVTTdVVUZNUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZETEVWQlFVVXNSVUZCUlN4UlFVRlJPMWxCUXpsQ0xFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCUVN4TlFVRk5PMmRDUVVOYUxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4VFFVRlRMRU5CUVVNc1MwRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRVQ3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5RTEVOQlFVTTdTVUZGUkN4MVFrRkJUU3hIUVVGT08xRkJRMGtzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU4yUXl4RFFVRkRPMGxCUlVRc2VVSkJRVkVzUjBGQlVqdFJRVU5KTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdTVUZEZEVVc1EwRkJRenRKUVVWRUxEWkNRVUZaTEVkQlFWbzdVVUZEU1N4UFFVRlBMRTlCUVU4c1NVRkJTU3hEUVVGRExGVkJRVlVzUzBGQlN5eFhRVUZYTEVOQlFVTTdTVUZEYkVRc1EwRkJRenRKUVVOTUxHRkJRVU03UVVGQlJDeERRVUZETEVGQk4wSkVMRWxCTmtKRE8wRkJOMEpaTEhkQ1FVRk5PMEZCSzBKdVFpeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRk5MRVZCUVVVc1EwRkJUVHRKUVVOb1F5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRXQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTTdVVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8xbEJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU42UXl4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOaUxFTkJRVU03UVVGRlJEdEpRVUZCTzFGQlEwa3NWVUZCU3l4SFFVRlJMRVZCUVVVc1EwRkJRenRKUVd0RGNFSXNRMEZCUXp0SlFXcERSeXg1UWtGQlN5eEhRVUZNTzFGQlEwa3NUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRNVU1zUTBGQlF6dEpRVU5FTEdkRFFVRlpMRWRCUVZvc1ZVRkJZU3hMUVVGblFqdFJRVU42UWl4SlFVRkpMRTFCUVUwc1IwRkJSeXhKUVVGSkxGTkJRVk1zUlVGQlJTeERRVUZETzFGQlF6ZENMRTFCUVUwc1EwRkJReXhMUVVGTExFZEJRVWNzV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzSkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZEUkN4eFEwRkJhVUlzUjBGQmFrSXNWVUZCYTBJc1MwRkJaMEk3VVVGRE9VSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMGxCUXpWRExFTkJRVU03U1VGRFJDdzBRa0ZCVVN4SFFVRlNMRlZCUVZNc1JVRkJWVHRSUVVObUxFOUJRVThzUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNN1NVRkROVUlzUTBGQlF6dEpRVU5FTEhWQ1FVRkhMRWRCUVVnc1ZVRkJTU3hEUVVGVE8xRkJRMVFzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEzcENMRU5CUVVNN1NVRkRSQ3d3UWtGQlRTeEhRVUZPTEZWQlFVOHNRMEZCVXp0UlFVTmFMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkROVUlzUTBGQlF6dEpRVU5FTERCQ1FVRk5MRWRCUVU0c1ZVRkJUeXhEUVVGelFqdFJRVU42UWl4TFFVRkxMRWxCUVVrc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZEZUVJc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVOMFFqdEpRVU5NTEVOQlFVTTdTVUZEUkN3eVFrRkJUeXhIUVVGUU8xRkJRMGtzU1VGQlNTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTFvc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZCTEVOQlFVTTdXVUZEVkN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExGbEJRVmtzUlVGQlJUdG5Ra0ZEYWtJc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnVRaXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5JTEU5QlFVOHNSVUZCUlN4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVOTUxHZENRVUZETzBGQlFVUXNRMEZCUXl4QlFXNURSQ3hKUVcxRFF6dEJRVzVEV1N3NFFrRkJVenRCUVhGRGRFSTdTVUZCUVR0UlFVTkpMRk5CUVVrc1IwRkJVU3hGUVVGRkxFTkJRVU03VVVGRFppeE5RVUZETEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCWjBSc1FpeERRVUZETzBsQkwwTkhMSGRDUVVGTExFZEJRVXc3VVVGRFNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVU5FTERKQ1FVRlJMRWRCUVZJc1ZVRkJVeXhGUVVGVk8xRkJRMllzU1VGQlNTeE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTJoQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVU3WjBKQlEzWkNMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU03WVVGRGFrSTdVVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOSUxFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyeENMRU5CUVVNN1NVRkRSQ3h6UWtGQlJ5eEhRVUZJTEZWQlFVa3NVVUZCWjBJc1JVRkJSU3hEUVVGVE8xRkJRek5DTEVsQlFVa3NRMEZCUXl4SFFVRmpMRkZCUVZFc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVsQlFVa3NVMEZCVXl4RlFVRkZMRU5CUVVNN1VVRkRka2NzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOVUxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRkRSQ3g1UWtGQlRTeEhRVUZPTEZWQlFVOHNVVUZCWjBJc1JVRkJSU3hEUVVGVE8xRkJRemxDTEVsQlFVa3NSVUZCUlN4SFFVRmpMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEZUVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTmlMRWxCUVVrc1JVRkJSU3hEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNSVUZCUlR0WlFVTnNRaXhQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1UwRkRPVUk3VVVGRFJDeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRZaXhEUVVGRE8wbEJRMFFzZVVKQlFVMHNSMEZCVGl4VlFVRlBMRU5CUVRSRE8xRkJReTlETEV0QlFVc3NTVUZCU1N4UlFVRlJMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJUdFpRVU0xUWl4RFFVRkRMRU5CUVZrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNSVUZCUlN4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU4yUkR0SlFVTk1MRU5CUVVNN1NVRkRSQ3huUTBGQllTeEhRVUZpTEZWQlFXTXNRMEZCYzBJN1VVRkRhRU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFbEJRVXNzVDBGQlFTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGYUxFTkJRVmtzUTBGQlF5eERRVUZETzBsQlF6RkRMRU5CUVVNN1NVRkRSQ3dyUWtGQldTeEhRVUZhTEZWQlFXRXNTMEZCWlR0UlFVTjRRaXhKUVVGSkxFMUJRVTBzUjBGQllTeEpRVUZKTEZGQlFWRXNSVUZCUlN4RFFVRkRPMUZCUTNSRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSVHRaUVVObUxFbEJRVWtzUlVGQlJTeEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRVZCUVVVN1owSkJRMnhDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhaUVVGWkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVOdVF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8yZENRVU5zUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3YjBKQlExQXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdiMEpCUTNCQ0xFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmxDUVVOcVFqdGhRVU5LTzFGQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5zUWl4RFFVRkRPMGxCUTB3c1pVRkJRenRCUVVGRUxFTkJRVU1zUVVGc1JFUXNTVUZyUkVNN1FVRnNSRmtzTkVKQlFWRTdRVUZ2UkhKQ0xGTkJRVk1zYVVKQlFXbENMRU5CUVVNc1EwRkJUU3hGUVVGRkxFTkJRVTA3U1VGRGNrTXNUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVUU3UVVGRGFrUXNRMEZCUXp0QlFVVkVMRk5CUVdkQ0xGTkJRVk1zUTBGQlR5eExRVUZaTEVWQlFVVXNTMEZCWVN4RlFVRkZMRVZCUVRCQ0xFVkJRVVVzVTBGQmFVSTdTVUZEZEVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNSVUZEYUVJc1EwRkJReXhIUVVGSExFbEJRVWtzWVVGQllTeERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzBsQlEyNUVMRTlCUVU4c1EwRkJReXhEUVVGRExGZEJRVmNzUlVGQlJUdFJRVUZETEVOQlFVTTdTVUZEZUVJc1NVRkJTU3hWUVVGVkxFZEJRV2RDTEVWQlFVVXNRMEZCUXp0SlFVTnFReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdTVUZEZUVNc1ZVRkJWU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTTdVVUZETVVJc1NVRkJTU3hEUVVGRExFZEJRVWNzVlVGQlF5eEhRVUZITzFsQlExSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEyWXNTVUZCU1N4UFFVRlBMRU5CUVVNc1NVRkJTU3hSUVVGUk8yZENRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYUVRc1EwRkJReXhEUVVGRE8xRkJRMFlzUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUTFvc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlEyaENMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMGdzVDBGQlR5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUlVGQlJTeERRVUZETzBGQlEycEVMRU5CUVVNN1FVRm1SQ3c0UWtGbFF5SjkiLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5mdW5jdGlvbiB1bmlvbkNvdW50KGEsIGIpIHtcclxuICAgIHZhciB1ID0ge307XHJcbiAgICBmb3IgKHZhciBpIGluIGEpXHJcbiAgICAgICAgdVtpXSA9IHt9O1xyXG4gICAgZm9yICh2YXIgaSBpbiBiKVxyXG4gICAgICAgIHVbaV0gPSB7fTtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh1KS5sZW5ndGg7XHJcbn1cclxuZnVuY3Rpb24gaW50ZXJzZWN0aW9uQ291bnQoYSwgYikge1xyXG4gICAgdmFyIG4gPSAwO1xyXG4gICAgZm9yICh2YXIgaSBpbiBhKVxyXG4gICAgICAgIGlmICh0eXBlb2YgYltpXSAhPT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgICsrbjtcclxuICAgIHJldHVybiBuO1xyXG59XHJcbmZ1bmN0aW9uIGdldE5laWdoYm91cnMobGlua3MsIGxhKSB7XHJcbiAgICB2YXIgbmVpZ2hib3VycyA9IHt9O1xyXG4gICAgdmFyIGFkZE5laWdoYm91cnMgPSBmdW5jdGlvbiAodSwgdikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgbmVpZ2hib3Vyc1t1XSA9PT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgIG5laWdoYm91cnNbdV0gPSB7fTtcclxuICAgICAgICBuZWlnaGJvdXJzW3VdW3ZdID0ge307XHJcbiAgICB9O1xyXG4gICAgbGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHZhciB1ID0gbGEuZ2V0U291cmNlSW5kZXgoZSksIHYgPSBsYS5nZXRUYXJnZXRJbmRleChlKTtcclxuICAgICAgICBhZGROZWlnaGJvdXJzKHUsIHYpO1xyXG4gICAgICAgIGFkZE5laWdoYm91cnModiwgdSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZWlnaGJvdXJzO1xyXG59XHJcbmZ1bmN0aW9uIGNvbXB1dGVMaW5rTGVuZ3RocyhsaW5rcywgdywgZiwgbGEpIHtcclxuICAgIHZhciBuZWlnaGJvdXJzID0gZ2V0TmVpZ2hib3VycyhsaW5rcywgbGEpO1xyXG4gICAgbGlua3MuZm9yRWFjaChmdW5jdGlvbiAobCkge1xyXG4gICAgICAgIHZhciBhID0gbmVpZ2hib3Vyc1tsYS5nZXRTb3VyY2VJbmRleChsKV07XHJcbiAgICAgICAgdmFyIGIgPSBuZWlnaGJvdXJzW2xhLmdldFRhcmdldEluZGV4KGwpXTtcclxuICAgICAgICBsYS5zZXRMZW5ndGgobCwgMSArIHcgKiBmKGEsIGIpKTtcclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZMaW5rTGVuZ3RocyhsaW5rcywgbGEsIHcpIHtcclxuICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IDE7IH1cclxuICAgIGNvbXB1dGVMaW5rTGVuZ3RocyhsaW5rcywgdywgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIE1hdGguc3FydCh1bmlvbkNvdW50KGEsIGIpIC0gaW50ZXJzZWN0aW9uQ291bnQoYSwgYikpOyB9LCBsYSk7XHJcbn1cclxuZXhwb3J0cy5zeW1tZXRyaWNEaWZmTGlua0xlbmd0aHMgPSBzeW1tZXRyaWNEaWZmTGlua0xlbmd0aHM7XHJcbmZ1bmN0aW9uIGphY2NhcmRMaW5rTGVuZ3RocyhsaW5rcywgbGEsIHcpIHtcclxuICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IDE7IH1cclxuICAgIGNvbXB1dGVMaW5rTGVuZ3RocyhsaW5rcywgdywgZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5taW4oT2JqZWN0LmtleXMoYSkubGVuZ3RoLCBPYmplY3Qua2V5cyhiKS5sZW5ndGgpIDwgMS4xID8gMCA6IGludGVyc2VjdGlvbkNvdW50KGEsIGIpIC8gdW5pb25Db3VudChhLCBiKTtcclxuICAgIH0sIGxhKTtcclxufVxyXG5leHBvcnRzLmphY2NhcmRMaW5rTGVuZ3RocyA9IGphY2NhcmRMaW5rTGVuZ3RocztcclxuZnVuY3Rpb24gZ2VuZXJhdGVEaXJlY3RlZEVkZ2VDb25zdHJhaW50cyhuLCBsaW5rcywgYXhpcywgbGEpIHtcclxuICAgIHZhciBjb21wb25lbnRzID0gc3Ryb25nbHlDb25uZWN0ZWRDb21wb25lbnRzKG4sIGxpbmtzLCBsYSk7XHJcbiAgICB2YXIgbm9kZXMgPSB7fTtcclxuICAgIGNvbXBvbmVudHMuZm9yRWFjaChmdW5jdGlvbiAoYywgaSkge1xyXG4gICAgICAgIHJldHVybiBjLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5vZGVzW3ZdID0gaTsgfSk7XHJcbiAgICB9KTtcclxuICAgIHZhciBjb25zdHJhaW50cyA9IFtdO1xyXG4gICAgbGlua3MuZm9yRWFjaChmdW5jdGlvbiAobCkge1xyXG4gICAgICAgIHZhciB1aSA9IGxhLmdldFNvdXJjZUluZGV4KGwpLCB2aSA9IGxhLmdldFRhcmdldEluZGV4KGwpLCB1ID0gbm9kZXNbdWldLCB2ID0gbm9kZXNbdmldO1xyXG4gICAgICAgIGlmICh1ICE9PSB2KSB7XHJcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgYXhpczogYXhpcyxcclxuICAgICAgICAgICAgICAgIGxlZnQ6IHVpLFxyXG4gICAgICAgICAgICAgICAgcmlnaHQ6IHZpLFxyXG4gICAgICAgICAgICAgICAgZ2FwOiBsYS5nZXRNaW5TZXBhcmF0aW9uKGwpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbnN0cmFpbnRzO1xyXG59XHJcbmV4cG9ydHMuZ2VuZXJhdGVEaXJlY3RlZEVkZ2VDb25zdHJhaW50cyA9IGdlbmVyYXRlRGlyZWN0ZWRFZGdlQ29uc3RyYWludHM7XHJcbmZ1bmN0aW9uIHN0cm9uZ2x5Q29ubmVjdGVkQ29tcG9uZW50cyhudW1WZXJ0aWNlcywgZWRnZXMsIGxhKSB7XHJcbiAgICB2YXIgbm9kZXMgPSBbXTtcclxuICAgIHZhciBpbmRleCA9IDA7XHJcbiAgICB2YXIgc3RhY2sgPSBbXTtcclxuICAgIHZhciBjb21wb25lbnRzID0gW107XHJcbiAgICBmdW5jdGlvbiBzdHJvbmdDb25uZWN0KHYpIHtcclxuICAgICAgICB2LmluZGV4ID0gdi5sb3dsaW5rID0gaW5kZXgrKztcclxuICAgICAgICBzdGFjay5wdXNoKHYpO1xyXG4gICAgICAgIHYub25TdGFjayA9IHRydWU7XHJcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IHYub3V0OyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICB2YXIgdyA9IF9hW19pXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3LmluZGV4ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgc3Ryb25nQ29ubmVjdCh3KTtcclxuICAgICAgICAgICAgICAgIHYubG93bGluayA9IE1hdGgubWluKHYubG93bGluaywgdy5sb3dsaW5rKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh3Lm9uU3RhY2spIHtcclxuICAgICAgICAgICAgICAgIHYubG93bGluayA9IE1hdGgubWluKHYubG93bGluaywgdy5pbmRleCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHYubG93bGluayA9PT0gdi5pbmRleCkge1xyXG4gICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gW107XHJcbiAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHcgPSBzdGFjay5wb3AoKTtcclxuICAgICAgICAgICAgICAgIHcub25TdGFjayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50LnB1c2godyk7XHJcbiAgICAgICAgICAgICAgICBpZiAodyA9PT0gdilcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb21wb25lbnRzLnB1c2goY29tcG9uZW50Lm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdi5pZDsgfSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtVmVydGljZXM7IGkrKykge1xyXG4gICAgICAgIG5vZGVzLnB1c2goeyBpZDogaSwgb3V0OiBbXSB9KTtcclxuICAgIH1cclxuICAgIGZvciAodmFyIF9pID0gMCwgZWRnZXNfMSA9IGVkZ2VzOyBfaSA8IGVkZ2VzXzEubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgdmFyIGUgPSBlZGdlc18xW19pXTtcclxuICAgICAgICB2YXIgdl8xID0gbm9kZXNbbGEuZ2V0U291cmNlSW5kZXgoZSldLCB3ID0gbm9kZXNbbGEuZ2V0VGFyZ2V0SW5kZXgoZSldO1xyXG4gICAgICAgIHZfMS5vdXQucHVzaCh3KTtcclxuICAgIH1cclxuICAgIGZvciAodmFyIF9hID0gMCwgbm9kZXNfMSA9IG5vZGVzOyBfYSA8IG5vZGVzXzEubGVuZ3RoOyBfYSsrKSB7XHJcbiAgICAgICAgdmFyIHYgPSBub2Rlc18xW19hXTtcclxuICAgICAgICBpZiAodHlwZW9mIHYuaW5kZXggPT09ICd1bmRlZmluZWQnKVxyXG4gICAgICAgICAgICBzdHJvbmdDb25uZWN0KHYpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XHJcbn1cclxuZXhwb3J0cy5zdHJvbmdseUNvbm5lY3RlZENvbXBvbmVudHMgPSBzdHJvbmdseUNvbm5lY3RlZENvbXBvbmVudHM7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHbHVhMnhsYm1kMGFITXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTlYWldKRGIyeGhMM055WXk5c2FXNXJiR1Z1WjNSb2N5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVZWSkxGTkJRVk1zVlVGQlZTeERRVUZETEVOQlFVMHNSVUZCUlN4RFFVRk5PMGxCUXpsQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTllMRXRCUVVzc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dFJRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRE0wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8xRkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVNelFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETzBGQlEycERMRU5CUVVNN1FVRkhSQ3hUUVVGVExHbENRVUZwUWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJReTlETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOV0xFdEJRVXNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXp0UlFVRkZMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NWMEZCVnp0WlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJRM1JFTEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZCUTJJc1EwRkJRenRCUVVWRUxGTkJRVk1zWVVGQllTeERRVUZQTEV0QlFXRXNSVUZCUlN4RlFVRnpRanRKUVVNNVJDeEpRVUZKTEZWQlFWVXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRjRUlzU1VGQlNTeGhRVUZoTEVkQlFVY3NWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRSUVVOeVFpeEpRVUZKTEU5QlFVOHNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExGZEJRVmM3V1VGRGNFTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU4yUWl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUXpGQ0xFTkJRVU1zUTBGQlF6dEpRVU5HTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJRU3hEUVVGRE8xRkJRMWdzU1VGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUkN4aFFVRmhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkNMR0ZCUVdFc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVJc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRFNDeFBRVUZQTEZWQlFWVXNRMEZCUXp0QlFVTjBRaXhEUVVGRE8wRkJSMFFzVTBGQlV5eHJRa0ZCYTBJc1EwRkJUeXhMUVVGaExFVkJRVVVzUTBGQlV5eEZRVUZGTEVOQlFUWkNMRVZCUVVVc1JVRkJORUk3U1VGRGJrZ3NTVUZCU1N4VlFVRlZMRWRCUVVjc1lVRkJZU3hEUVVGRExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXp0UlFVTllMRWxCUVVrc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eEZRVUZGTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGVrTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFVkJRVVVzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlF5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55UXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOUUxFTkJRVU03UVVGTFJDeFRRVUZuUWl4M1FrRkJkMElzUTBGQlR5eExRVUZoTEVWQlFVVXNSVUZCTkVJc1JVRkJSU3hEUVVGaE8wbEJRV0lzYTBKQlFVRXNSVUZCUVN4TFFVRmhPMGxCUTNKSExHdENRVUZyUWl4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVVVzVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkxMRTlCUVVFc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZ5UkN4RFFVRnhSQ3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzUkhMRU5CUVVNN1FVRkdSQ3cwUkVGRlF6dEJRVXRFTEZOQlFXZENMR3RDUVVGclFpeERRVUZQTEV0QlFXRXNSVUZCUlN4RlFVRTBRaXhGUVVGRkxFTkJRV0U3U1VGQllpeHJRa0ZCUVN4RlFVRkJMRXRCUVdFN1NVRkRMMFlzYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlJTeFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMUZCUXpsQ0xFOUJRVUVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZCTjBjc1EwRkJOa2NzUlVGRE0wY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJTa1FzWjBSQlNVTTdRVUZ2UWtRc1UwRkJaMElzSzBKQlFTdENMRU5CUVU4c1EwRkJVeXhGUVVGRkxFdEJRV0VzUlVGQlJTeEpRVUZaTEVWQlEzaEdMRVZCUVhsQ08wbEJSWHBDTEVsQlFVa3NWVUZCVlN4SFFVRkhMREpDUVVFeVFpeERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRE0wUXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJRMllzVlVGQlZTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRE8xRkJRMjVDTEU5QlFVRXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVm9zUTBGQldTeERRVUZETzBsQlFUVkNMRU5CUVRSQ0xFTkJReTlDTEVOQlFVTTdTVUZEUml4SlFVRkpMRmRCUVZjc1IwRkJWU3hGUVVGRkxFTkJRVU03U1VGRE5VSXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU03VVVGRFdDeEpRVUZKTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU53UkN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGFrTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRMVFzVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXp0blFrRkRZaXhKUVVGSkxFVkJRVVVzU1VGQlNUdG5Ra0ZEVml4SlFVRkpMRVZCUVVVc1JVRkJSVHRuUWtGRFVpeExRVUZMTEVWQlFVVXNSVUZCUlR0blFrRkRWQ3hIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU01UWl4RFFVRkRMRU5CUVVNN1UwRkRUanRKUVVOTUxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEwZ3NUMEZCVHl4WFFVRlhMRU5CUVVNN1FVRkRka0lzUTBGQlF6dEJRWFJDUkN3d1JVRnpRa003UVVGUlJDeFRRVUZuUWl3eVFrRkJNa0lzUTBGQlR5eFhRVUZ0UWl4RlFVRkZMRXRCUVdFc1JVRkJSU3hGUVVGelFqdEpRVU40Unl4SlFVRkpMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRFppeEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRaQ3hKUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdTVUZEWml4SlFVRkpMRlZCUVZVc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGNFSXNVMEZCVXl4aFFVRmhMRU5CUVVNc1EwRkJRenRSUVVWd1FpeERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhQUVVGUExFZEJRVWNzUzBGQlN5eEZRVUZGTEVOQlFVTTdVVUZET1VJc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTmtMRU5CUVVNc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlIycENMRXRCUVdNc1ZVRkJTeXhGUVVGTUxFdEJRVUVzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCVEN4alFVRkxMRVZCUVV3c1NVRkJTeXhGUVVGRk8xbEJRV2hDTEVsQlFVa3NRMEZCUXl4VFFVRkJPMWxCUTA0c1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eExRVUZMTEV0QlFVc3NWMEZCVnl4RlFVRkZPMmRDUVVWb1F5eGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMnBDTEVOQlFVTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dGhRVU01UXp0cFFrRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVWQlFVVTdaMEpCUld4Q0xFTkJRVU1zUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRoUVVNMVF6dFRRVU5LTzFGQlIwUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1QwRkJUeXhMUVVGTExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZGZGtJc1NVRkJTU3hUUVVGVExFZEJRVWNzUlVGQlJTeERRVUZETzFsQlEyNUNMRTlCUVU4c1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJUdG5Ra0ZEYWtJc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0blFrRkRhRUlzUTBGQlF5eERRVUZETEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNN1owSkJSV3hDTEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEyeENMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU03YjBKQlFVVXNUVUZCVFR0aFFVTjBRanRaUVVWRUxGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVvc1EwRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU0zUXp0SlFVTk1MRU5CUVVNN1NVRkRSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1YwRkJWeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFGQlEyeERMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETzB0QlEyaERPMGxCUTBRc1MwRkJZeXhWUVVGTExFVkJRVXdzWlVGQlN5eEZRVUZNTEcxQ1FVRkxMRVZCUVV3c1NVRkJTeXhGUVVGRk8xRkJRV2hDTEVsQlFVa3NRMEZCUXl4alFVRkJPMUZCUTA0c1NVRkJTU3hIUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGREwwSXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRjRU1zUjBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGFrSTdTVUZEUkN4TFFVRmpMRlZCUVVzc1JVRkJUQ3hsUVVGTExFVkJRVXdzYlVKQlFVc3NSVUZCVEN4SlFVRkxPMUZCUVdRc1NVRkJTU3hEUVVGRExHTkJRVUU3VVVGQlZ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRXRCUVVzc1MwRkJTeXhYUVVGWE8xbEJRVVVzWVVGQllTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUVVFN1NVRkRNVVVzVDBGQlR5eFZRVUZWTEVOQlFVTTdRVUZEZEVJc1EwRkJRenRCUVdoRVJDeHJSVUZuUkVNaWZRPT0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgTG9ja3MgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTG9ja3MoKSB7XHJcbiAgICAgICAgdGhpcy5sb2NrcyA9IHt9O1xyXG4gICAgfVxyXG4gICAgTG9ja3MucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChpZCwgeCkge1xyXG4gICAgICAgIHRoaXMubG9ja3NbaWRdID0geDtcclxuICAgIH07XHJcbiAgICBMb2Nrcy5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5sb2NrcyA9IHt9O1xyXG4gICAgfTtcclxuICAgIExvY2tzLnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGZvciAodmFyIGwgaW4gdGhpcy5sb2NrcylcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuICAgIExvY2tzLnByb3RvdHlwZS5hcHBseSA9IGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgZm9yICh2YXIgbCBpbiB0aGlzLmxvY2tzKSB7XHJcbiAgICAgICAgICAgIGYoTnVtYmVyKGwpLCB0aGlzLmxvY2tzW2xdKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIExvY2tzO1xyXG59KCkpO1xyXG5leHBvcnRzLkxvY2tzID0gTG9ja3M7XHJcbnZhciBEZXNjZW50ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIERlc2NlbnQoeCwgRCwgRykge1xyXG4gICAgICAgIGlmIChHID09PSB2b2lkIDApIHsgRyA9IG51bGw7IH1cclxuICAgICAgICB0aGlzLkQgPSBEO1xyXG4gICAgICAgIHRoaXMuRyA9IEc7XHJcbiAgICAgICAgdGhpcy50aHJlc2hvbGQgPSAwLjAwMDE7XHJcbiAgICAgICAgdGhpcy5udW1HcmlkU25hcE5vZGVzID0gMDtcclxuICAgICAgICB0aGlzLnNuYXBHcmlkU2l6ZSA9IDEwMDtcclxuICAgICAgICB0aGlzLnNuYXBTdHJlbmd0aCA9IDEwMDA7XHJcbiAgICAgICAgdGhpcy5zY2FsZVNuYXBCeU1heEggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJhbmRvbSA9IG5ldyBQc2V1ZG9SYW5kb20oKTtcclxuICAgICAgICB0aGlzLnByb2plY3QgPSBudWxsO1xyXG4gICAgICAgIHRoaXMueCA9IHg7XHJcbiAgICAgICAgdGhpcy5rID0geC5sZW5ndGg7XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzLm4gPSB4WzBdLmxlbmd0aDtcclxuICAgICAgICB0aGlzLkggPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB0aGlzLmcgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB0aGlzLkhkID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5hID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5iID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5jID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5kID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5lID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5pYSA9IG5ldyBBcnJheSh0aGlzLmspO1xyXG4gICAgICAgIHRoaXMuaWIgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB0aGlzLnh0bXAgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB0aGlzLmxvY2tzID0gbmV3IExvY2tzKCk7XHJcbiAgICAgICAgdGhpcy5taW5EID0gTnVtYmVyLk1BWF9WQUxVRTtcclxuICAgICAgICB2YXIgaSA9IG4sIGo7XHJcbiAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICBqID0gbjtcclxuICAgICAgICAgICAgd2hpbGUgKC0taiA+IGkpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkID0gRFtpXVtqXTtcclxuICAgICAgICAgICAgICAgIGlmIChkID4gMCAmJiBkIDwgdGhpcy5taW5EKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5taW5EID0gZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5taW5EID09PSBOdW1iZXIuTUFYX1ZBTFVFKVxyXG4gICAgICAgICAgICB0aGlzLm1pbkQgPSAxO1xyXG4gICAgICAgIGkgPSB0aGlzLms7XHJcbiAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICB0aGlzLmdbaV0gPSBuZXcgQXJyYXkobik7XHJcbiAgICAgICAgICAgIHRoaXMuSFtpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgaiA9IG47XHJcbiAgICAgICAgICAgIHdoaWxlIChqLS0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuSFtpXVtqXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLkhkW2ldID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgICAgICB0aGlzLmFbaV0gPSBuZXcgQXJyYXkobik7XHJcbiAgICAgICAgICAgIHRoaXMuYltpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgdGhpcy5jW2ldID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgICAgICB0aGlzLmRbaV0gPSBuZXcgQXJyYXkobik7XHJcbiAgICAgICAgICAgIHRoaXMuZVtpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgdGhpcy5pYVtpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgdGhpcy5pYltpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgdGhpcy54dG1wW2ldID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIERlc2NlbnQuY3JlYXRlU3F1YXJlTWF0cml4ID0gZnVuY3Rpb24gKG4sIGYpIHtcclxuICAgICAgICB2YXIgTSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICBNW2ldID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG47ICsraikge1xyXG4gICAgICAgICAgICAgICAgTVtpXVtqXSA9IGYoaSwgaik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIE07XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUub2Zmc2V0RGlyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHUgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB2YXIgbCA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLms7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgeCA9IHVbaV0gPSB0aGlzLnJhbmRvbS5nZXROZXh0QmV0d2VlbigwLjAxLCAxKSAtIDAuNTtcclxuICAgICAgICAgICAgbCArPSB4ICogeDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbCA9IE1hdGguc3FydChsKTtcclxuICAgICAgICByZXR1cm4gdS5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggKj0gX3RoaXMubWluRCAvIGw7IH0pO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQucHJvdG90eXBlLmNvbXB1dGVEZXJpdmF0aXZlcyA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2YXIgbiA9IHRoaXMubjtcclxuICAgICAgICBpZiAobiA8IDEpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB2YXIgaTtcclxuICAgICAgICB2YXIgZCA9IG5ldyBBcnJheSh0aGlzLmspO1xyXG4gICAgICAgIHZhciBkMiA9IG5ldyBBcnJheSh0aGlzLmspO1xyXG4gICAgICAgIHZhciBIdXUgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB2YXIgbWF4SCA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgdSA9IDA7IHUgPCBuOyArK3UpIHtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuazsgKytpKVxyXG4gICAgICAgICAgICAgICAgSHV1W2ldID0gdGhpcy5nW2ldW3VdID0gMDtcclxuICAgICAgICAgICAgZm9yICh2YXIgdiA9IDA7IHYgPCBuOyArK3YpIHtcclxuICAgICAgICAgICAgICAgIGlmICh1ID09PSB2KVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1heERpc3BsYWNlcyA9IG47XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAobWF4RGlzcGxhY2VzLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc2QyID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5rOyArK2kpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGR4ID0gZFtpXSA9IHhbaV1bdV0gLSB4W2ldW3ZdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZDIgKz0gZDJbaV0gPSBkeCAqIGR4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2QyID4gMWUtOSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJkID0gdGhpcy5vZmZzZXREaXIoKTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5rOyArK2kpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhbaV1bdl0gKz0gcmRbaV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgbCA9IE1hdGguc3FydChzZDIpO1xyXG4gICAgICAgICAgICAgICAgdmFyIEQgPSB0aGlzLkRbdV1bdl07XHJcbiAgICAgICAgICAgICAgICB2YXIgd2VpZ2h0ID0gdGhpcy5HICE9IG51bGwgPyB0aGlzLkdbdV1bdl0gOiAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdlaWdodCA+IDEgJiYgbCA+IEQgfHwgIWlzRmluaXRlKEQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuazsgKytpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkhbaV1bdV1bdl0gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHdlaWdodCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB3ZWlnaHQgPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIEQyID0gRCAqIEQ7XHJcbiAgICAgICAgICAgICAgICB2YXIgZ3MgPSAyICogd2VpZ2h0ICogKGwgLSBEKSAvIChEMiAqIGwpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGwzID0gbCAqIGwgKiBsO1xyXG4gICAgICAgICAgICAgICAgdmFyIGhzID0gMiAqIC13ZWlnaHQgLyAoRDIgKiBsMyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKGdzKSlcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhncyk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5rOyArK2kpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdbaV1bdV0gKz0gZFtpXSAqIGdzO1xyXG4gICAgICAgICAgICAgICAgICAgIEh1dVtpXSAtPSB0aGlzLkhbaV1bdV1bdl0gPSBocyAqIChsMyArIEQgKiAoZDJbaV0gLSBzZDIpICsgbCAqIHNkMik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuazsgKytpKVxyXG4gICAgICAgICAgICAgICAgbWF4SCA9IE1hdGgubWF4KG1heEgsIHRoaXMuSFtpXVt1XVt1XSA9IEh1dVtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciByID0gdGhpcy5zbmFwR3JpZFNpemUgLyAyO1xyXG4gICAgICAgIHZhciBnID0gdGhpcy5zbmFwR3JpZFNpemU7XHJcbiAgICAgICAgdmFyIHcgPSB0aGlzLnNuYXBTdHJlbmd0aDtcclxuICAgICAgICB2YXIgayA9IHcgLyAociAqIHIpO1xyXG4gICAgICAgIHZhciBudW1Ob2RlcyA9IHRoaXMubnVtR3JpZFNuYXBOb2RlcztcclxuICAgICAgICBmb3IgKHZhciB1ID0gMDsgdSA8IG51bU5vZGVzOyArK3UpIHtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuazsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgeGl1ID0gdGhpcy54W2ldW3VdO1xyXG4gICAgICAgICAgICAgICAgdmFyIG0gPSB4aXUgLyBnO1xyXG4gICAgICAgICAgICAgICAgdmFyIGYgPSBtICUgMTtcclxuICAgICAgICAgICAgICAgIHZhciBxID0gbSAtIGY7XHJcbiAgICAgICAgICAgICAgICB2YXIgYSA9IE1hdGguYWJzKGYpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGR4ID0gKGEgPD0gMC41KSA/IHhpdSAtIHEgKiBnIDpcclxuICAgICAgICAgICAgICAgICAgICAoeGl1ID4gMCkgPyB4aXUgLSAocSArIDEpICogZyA6IHhpdSAtIChxIC0gMSkgKiBnO1xyXG4gICAgICAgICAgICAgICAgaWYgKC1yIDwgZHggJiYgZHggPD0gcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNjYWxlU25hcEJ5TWF4SCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdbaV1bdV0gKz0gbWF4SCAqIGsgKiBkeDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5IW2ldW3VdW3VdICs9IG1heEggKiBrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nW2ldW3VdICs9IGsgKiBkeDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5IW2ldW3VdW3VdICs9IGs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5sb2Nrcy5pc0VtcHR5KCkpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2Nrcy5hcHBseShmdW5jdGlvbiAodSwgcCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IF90aGlzLms7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLkhbaV1bdV1bdV0gKz0gbWF4SDtcclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5nW2ldW3VdIC09IG1heEggKiAocFtpXSAtIHhbaV1bdV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5kb3RQcm9kID0gZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICB2YXIgeCA9IDAsIGkgPSBhLmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKVxyXG4gICAgICAgICAgICB4ICs9IGFbaV0gKiBiW2ldO1xyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQucmlnaHRNdWx0aXBseSA9IGZ1bmN0aW9uIChtLCB2LCByKSB7XHJcbiAgICAgICAgdmFyIGkgPSBtLmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKVxyXG4gICAgICAgICAgICByW2ldID0gRGVzY2VudC5kb3RQcm9kKG1baV0sIHYpO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQucHJvdG90eXBlLmNvbXB1dGVTdGVwU2l6ZSA9IGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgdmFyIG51bWVyYXRvciA9IDAsIGRlbm9taW5hdG9yID0gMDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuazsgKytpKSB7XHJcbiAgICAgICAgICAgIG51bWVyYXRvciArPSBEZXNjZW50LmRvdFByb2QodGhpcy5nW2ldLCBkW2ldKTtcclxuICAgICAgICAgICAgRGVzY2VudC5yaWdodE11bHRpcGx5KHRoaXMuSFtpXSwgZFtpXSwgdGhpcy5IZFtpXSk7XHJcbiAgICAgICAgICAgIGRlbm9taW5hdG9yICs9IERlc2NlbnQuZG90UHJvZChkW2ldLCB0aGlzLkhkW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRlbm9taW5hdG9yID09PSAwIHx8ICFpc0Zpbml0ZShkZW5vbWluYXRvcikpXHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIHJldHVybiAxICogbnVtZXJhdG9yIC8gZGVub21pbmF0b3I7XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUucmVkdWNlU3RyZXNzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZURlcml2YXRpdmVzKHRoaXMueCk7XHJcbiAgICAgICAgdmFyIGFscGhhID0gdGhpcy5jb21wdXRlU3RlcFNpemUodGhpcy5nKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuazsgKytpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFrZURlc2NlbnRTdGVwKHRoaXMueFtpXSwgdGhpcy5nW2ldLCBhbHBoYSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVTdHJlc3MoKTtcclxuICAgIH07XHJcbiAgICBEZXNjZW50LmNvcHkgPSBmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgICAgIHZhciBtID0gYS5sZW5ndGgsIG4gPSBiWzBdLmxlbmd0aDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG07ICsraSkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG47ICsraikge1xyXG4gICAgICAgICAgICAgICAgYltpXVtqXSA9IGFbaV1bal07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUuc3RlcEFuZFByb2plY3QgPSBmdW5jdGlvbiAoeDAsIHIsIGQsIHN0ZXBTaXplKSB7XHJcbiAgICAgICAgRGVzY2VudC5jb3B5KHgwLCByKTtcclxuICAgICAgICB0aGlzLnRha2VEZXNjZW50U3RlcChyWzBdLCBkWzBdLCBzdGVwU2l6ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvamVjdClcclxuICAgICAgICAgICAgdGhpcy5wcm9qZWN0WzBdKHgwWzBdLCB4MFsxXSwgclswXSk7XHJcbiAgICAgICAgdGhpcy50YWtlRGVzY2VudFN0ZXAoclsxXSwgZFsxXSwgc3RlcFNpemUpO1xyXG4gICAgICAgIGlmICh0aGlzLnByb2plY3QpXHJcbiAgICAgICAgICAgIHRoaXMucHJvamVjdFsxXShyWzBdLCB4MFsxXSwgclsxXSk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPCB0aGlzLms7IGkrKylcclxuICAgICAgICAgICAgdGhpcy50YWtlRGVzY2VudFN0ZXAocltpXSwgZFtpXSwgc3RlcFNpemUpO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQubUFwcGx5ID0gZnVuY3Rpb24gKG0sIG4sIGYpIHtcclxuICAgICAgICB2YXIgaSA9IG07XHJcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcclxuICAgICAgICAgICAgdmFyIGogPSBuO1xyXG4gICAgICAgICAgICB3aGlsZSAoai0tID4gMClcclxuICAgICAgICAgICAgICAgIGYoaSwgaik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIERlc2NlbnQucHJvdG90eXBlLm1hdHJpeEFwcGx5ID0gZnVuY3Rpb24gKGYpIHtcclxuICAgICAgICBEZXNjZW50Lm1BcHBseSh0aGlzLmssIHRoaXMubiwgZik7XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUuY29tcHV0ZU5leHRQb3NpdGlvbiA9IGZ1bmN0aW9uICh4MCwgcikge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5jb21wdXRlRGVyaXZhdGl2ZXMoeDApO1xyXG4gICAgICAgIHZhciBhbHBoYSA9IHRoaXMuY29tcHV0ZVN0ZXBTaXplKHRoaXMuZyk7XHJcbiAgICAgICAgdGhpcy5zdGVwQW5kUHJvamVjdCh4MCwgciwgdGhpcy5nLCBhbHBoYSk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvamVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLm1hdHJpeEFwcGx5KGZ1bmN0aW9uIChpLCBqKSB7IHJldHVybiBfdGhpcy5lW2ldW2pdID0geDBbaV1bal0gLSByW2ldW2pdOyB9KTtcclxuICAgICAgICAgICAgdmFyIGJldGEgPSB0aGlzLmNvbXB1dGVTdGVwU2l6ZSh0aGlzLmUpO1xyXG4gICAgICAgICAgICBiZXRhID0gTWF0aC5tYXgoMC4yLCBNYXRoLm1pbihiZXRhLCAxKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RlcEFuZFByb2plY3QoeDAsIHIsIHRoaXMuZSwgYmV0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIERlc2NlbnQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChpdGVyYXRpb25zKSB7XHJcbiAgICAgICAgdmFyIHN0cmVzcyA9IE51bWJlci5NQVhfVkFMVUUsIGNvbnZlcmdlZCA9IGZhbHNlO1xyXG4gICAgICAgIHdoaWxlICghY29udmVyZ2VkICYmIGl0ZXJhdGlvbnMtLSA+IDApIHtcclxuICAgICAgICAgICAgdmFyIHMgPSB0aGlzLnJ1bmdlS3V0dGEoKTtcclxuICAgICAgICAgICAgY29udmVyZ2VkID0gTWF0aC5hYnMoc3RyZXNzIC8gcyAtIDEpIDwgdGhpcy50aHJlc2hvbGQ7XHJcbiAgICAgICAgICAgIHN0cmVzcyA9IHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdHJlc3M7XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUucnVuZ2VLdXR0YSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZU5leHRQb3NpdGlvbih0aGlzLngsIHRoaXMuYSk7XHJcbiAgICAgICAgRGVzY2VudC5taWQodGhpcy54LCB0aGlzLmEsIHRoaXMuaWEpO1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZU5leHRQb3NpdGlvbih0aGlzLmlhLCB0aGlzLmIpO1xyXG4gICAgICAgIERlc2NlbnQubWlkKHRoaXMueCwgdGhpcy5iLCB0aGlzLmliKTtcclxuICAgICAgICB0aGlzLmNvbXB1dGVOZXh0UG9zaXRpb24odGhpcy5pYiwgdGhpcy5jKTtcclxuICAgICAgICB0aGlzLmNvbXB1dGVOZXh0UG9zaXRpb24odGhpcy5jLCB0aGlzLmQpO1xyXG4gICAgICAgIHZhciBkaXNwID0gMDtcclxuICAgICAgICB0aGlzLm1hdHJpeEFwcGx5KGZ1bmN0aW9uIChpLCBqKSB7XHJcbiAgICAgICAgICAgIHZhciB4ID0gKF90aGlzLmFbaV1bal0gKyAyLjAgKiBfdGhpcy5iW2ldW2pdICsgMi4wICogX3RoaXMuY1tpXVtqXSArIF90aGlzLmRbaV1bal0pIC8gNi4wLCBkID0gX3RoaXMueFtpXVtqXSAtIHg7XHJcbiAgICAgICAgICAgIGRpc3AgKz0gZCAqIGQ7XHJcbiAgICAgICAgICAgIF90aGlzLnhbaV1bal0gPSB4O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBkaXNwO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQubWlkID0gZnVuY3Rpb24gKGEsIGIsIG0pIHtcclxuICAgICAgICBEZXNjZW50Lm1BcHBseShhLmxlbmd0aCwgYVswXS5sZW5ndGgsIGZ1bmN0aW9uIChpLCBqKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtW2ldW2pdID0gYVtpXVtqXSArIChiW2ldW2pdIC0gYVtpXVtqXSkgLyAyLjA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUudGFrZURlc2NlbnRTdGVwID0gZnVuY3Rpb24gKHgsIGQsIHN0ZXBTaXplKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm47ICsraSkge1xyXG4gICAgICAgICAgICB4W2ldID0geFtpXSAtIHN0ZXBTaXplICogZFtpXTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUuY29tcHV0ZVN0cmVzcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgc3RyZXNzID0gMDtcclxuICAgICAgICBmb3IgKHZhciB1ID0gMCwgbk1pbnVzMSA9IHRoaXMubiAtIDE7IHUgPCBuTWludXMxOyArK3UpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgdiA9IHUgKyAxLCBuID0gdGhpcy5uOyB2IDwgbjsgKyt2KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbCA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuazsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGR4ID0gdGhpcy54W2ldW3VdIC0gdGhpcy54W2ldW3ZdO1xyXG4gICAgICAgICAgICAgICAgICAgIGwgKz0gZHggKiBkeDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGwgPSBNYXRoLnNxcnQobCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuRFt1XVt2XTtcclxuICAgICAgICAgICAgICAgIGlmICghaXNGaW5pdGUoZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmwgPSBkIC0gbDtcclxuICAgICAgICAgICAgICAgIHZhciBkMiA9IGQgKiBkO1xyXG4gICAgICAgICAgICAgICAgc3RyZXNzICs9IHJsICogcmwgLyBkMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyZXNzO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQuemVyb0Rpc3RhbmNlID0gMWUtMTA7XHJcbiAgICByZXR1cm4gRGVzY2VudDtcclxufSgpKTtcclxuZXhwb3J0cy5EZXNjZW50ID0gRGVzY2VudDtcclxudmFyIFBzZXVkb1JhbmRvbSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQc2V1ZG9SYW5kb20oc2VlZCkge1xyXG4gICAgICAgIGlmIChzZWVkID09PSB2b2lkIDApIHsgc2VlZCA9IDE7IH1cclxuICAgICAgICB0aGlzLnNlZWQgPSBzZWVkO1xyXG4gICAgICAgIHRoaXMuYSA9IDIxNDAxMztcclxuICAgICAgICB0aGlzLmMgPSAyNTMxMDExO1xyXG4gICAgICAgIHRoaXMubSA9IDIxNDc0ODM2NDg7XHJcbiAgICAgICAgdGhpcy5yYW5nZSA9IDMyNzY3O1xyXG4gICAgfVxyXG4gICAgUHNldWRvUmFuZG9tLnByb3RvdHlwZS5nZXROZXh0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuc2VlZCA9ICh0aGlzLnNlZWQgKiB0aGlzLmEgKyB0aGlzLmMpICUgdGhpcy5tO1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWVkID4+IDE2KSAvIHRoaXMucmFuZ2U7XHJcbiAgICB9O1xyXG4gICAgUHNldWRvUmFuZG9tLnByb3RvdHlwZS5nZXROZXh0QmV0d2VlbiA9IGZ1bmN0aW9uIChtaW4sIG1heCkge1xyXG4gICAgICAgIHJldHVybiBtaW4gKyB0aGlzLmdldE5leHQoKSAqIChtYXggLSBtaW4pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBQc2V1ZG9SYW5kb207XHJcbn0oKSk7XHJcbmV4cG9ydHMuUHNldWRvUmFuZG9tID0gUHNldWRvUmFuZG9tO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR1Z6WTJWdWRDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMWRsWWtOdmJHRXZjM0pqTDJSbGMyTmxiblF1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkpTVHRKUVVGQk8xRkJRMGtzVlVGQlN5eEhRVUUyUWl4RlFVRkZMRU5CUVVNN1NVRnZRM3BETEVOQlFVTTdTVUUzUWtjc2JVSkJRVWNzUjBGQlNDeFZRVUZKTEVWQlFWVXNSVUZCUlN4RFFVRlhPMUZCU1haQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRM1pDTEVOQlFVTTdTVUZKUkN4eFFrRkJTeXhIUVVGTU8xRkJRMGtzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRjRUlzUTBGQlF6dEpRVXRFTEhWQ1FVRlBMRWRCUVZBN1VVRkRTU3hMUVVGTExFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxPMWxCUVVVc1QwRkJUeXhMUVVGTExFTkJRVU03VVVGRGRrTXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRhRUlzUTBGQlF6dEpRVXRFTEhGQ1FVRkxMRWRCUVV3c1ZVRkJUU3hEUVVGdlF6dFJRVU4wUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZEZEVJc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZETDBJN1NVRkRUQ3hEUVVGRE8wbEJRMHdzV1VGQlF6dEJRVUZFTEVOQlFVTXNRVUZ5UTBRc1NVRnhRME03UVVGeVExa3NjMEpCUVVzN1FVRnBSR3hDTzBsQk5rUkpMR2xDUVVGWkxFTkJRV0VzUlVGQlV5eERRVUZoTEVWQlFWTXNRMEZCYlVJN1VVRkJia0lzYTBKQlFVRXNSVUZCUVN4UlFVRnRRanRSUVVGNlF5eE5RVUZETEVkQlFVUXNRMEZCUXl4RFFVRlpPMUZCUVZNc1RVRkJReXhIUVVGRUxFTkJRVU1zUTBGQmEwSTdVVUUxUkhCRkxHTkJRVk1zUjBGQlZ5eE5RVUZOTEVOQlFVTTdVVUV5UXpOQ0xIRkNRVUZuUWl4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVNM1FpeHBRa0ZCV1N4SFFVRlhMRWRCUVVjc1EwRkJRenRSUVVNelFpeHBRa0ZCV1N4SFFVRlhMRWxCUVVrc1EwRkJRenRSUVVNMVFpeHZRa0ZCWlN4SFFVRlpMRXRCUVVzc1EwRkJRenRSUVVWb1F5eFhRVUZOTEVkQlFVY3NTVUZCU1N4WlFVRlpMRVZCUVVVc1EwRkJRenRSUVVVM1FpeFpRVUZQTEVkQlFUQkVMRWxCUVVrc1EwRkJRenRSUVZkNlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOWUxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkROMElzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE0wSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkROVUlzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE0wSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNMElzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE0wSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkROVUlzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE9VSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFdEJRVXNzUlVGQlJTeERRVUZETzFGQlEzcENMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXp0UlFVTTNRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTJJc1QwRkJUeXhEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5TTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRUaXhQUVVGUExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlR0blFrRkRXaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEyaENMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSVHR2UWtGRGVFSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU03YVVKQlEycENPMkZCUTBvN1UwRkRTanRSUVVORUxFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NTMEZCU3l4TlFVRk5MRU5CUVVNc1UwRkJVenRaUVVGRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTFnc1QwRkJUeXhEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5TTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRla0lzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEwNHNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRFVpeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJReTlDTzFsQlEwUXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNeFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNwQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZWtJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42UWl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM3BDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRla0lzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTXhRaXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGREwwSTdTVUZEVEN4RFFVRkRPMGxCUldFc01FSkJRV3RDTEVkQlFXaERMRlZCUVdsRExFTkJRVk1zUlVGQlJTeERRVUZ0UXp0UlFVTXpSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOeVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNoQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU53UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8yZENRVU40UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU55UWp0VFFVTktPMUZCUTBRc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRFlpeERRVUZETzBsQlJVOHNNa0pCUVZNc1IwRkJha0k3VVVGQlFTeHBRa0ZUUXp0UlFWSkhMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRWaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTTNRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dFpRVU42UkN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFRRVU5rTzFGQlEwUXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtJc1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkhMRTlCUVVFc1EwRkJReXhKUVVGSkxFdEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVRnNRaXhEUVVGclFpeERRVUZETEVOQlFVTTdTVUZEZWtNc1EwRkJRenRKUVVkTkxHOURRVUZyUWl4SFFVRjZRaXhWUVVFd1FpeERRVUZoTzFGQlFYWkRMR2xDUVdkSFF6dFJRUzlHUnl4SlFVRkpMRU5CUVVNc1IwRkJWeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzWkNMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU03V1VGQlJTeFBRVUZQTzFGQlEyeENMRWxCUVVrc1EwRkJVeXhEUVVGRE8xRkJUV1FzU1VGQlNTeERRVUZETEVkQlFXRXNTVUZCU1N4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkRMRWxCUVVrc1JVRkJSU3hIUVVGaExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOeVF5eEpRVUZKTEVkQlFVY3NSMEZCWVN4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZEVNc1NVRkJTU3hKUVVGSkxFZEJRVmNzUTBGQlF5eERRVUZETzFGQlEzSkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVmNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRGFFTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJRenRuUWtGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGRrUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGRGVFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenR2UWtGQlJTeFRRVUZUTzJkQ1FVZDBRaXhKUVVGSkxGbEJRVmtzUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUTNKQ0xFOUJRVThzV1VGQldTeEZRVUZGTEVWQlFVVTdiMEpCUTI1Q0xFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRXaXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdkMEpCUTNwQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPM2RDUVVOc1F5eEhRVUZITEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdjVUpCUXpGQ08yOUNRVU5FTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrN2QwSkJRVVVzVFVGQlRUdHZRa0ZEZEVJc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMjlDUVVNeFFpeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRPM2RDUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdhVUpCUTJwRU8yZENRVU5FTEVsQlFVa3NRMEZCUXl4SFFVRlhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUXk5Q0xFbEJRVWtzUTBGQlF5eEhRVUZYTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpkQ0xFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJReTlETEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8yOUNRVU55UXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRE8zZENRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yOUNRVU5xUkN4VFFVRlRPMmxDUVVOYU8yZENRVU5FTEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHR2UWtGRFdpeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMmxDUVVOa08yZENRVU5FTEVsQlFVa3NSVUZCUlN4SFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzWkNMRWxCUVVrc1JVRkJSU3hIUVVGWExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMnBFTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTnVRaXhKUVVGSkxFVkJRVVVzUjBGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdaMEpCUTNwRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNSVUZCUlN4RFFVRkRPMjlDUVVOaUxFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1owSkJRM0JDTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHR2UWtGRGVrSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzI5Q1FVTXhRaXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dHBRa0ZEZGtVN1lVRkRTanRaUVVORUxFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdaMEpCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRhRVk3VVVGRlJDeEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0xUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETzFGQlF6RkNMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZETVVJc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0JDTEVsQlFVa3NVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXp0UlFVVnlReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZYTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1VVRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzWkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdG5Ra0ZEZWtJc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRhRUlzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFpDeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU5rTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTNCQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU12UWl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRGRFUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlR0dlFrRkRjRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNaVUZCWlN4RlFVRkZPM2RDUVVOMFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8zZENRVU01UWl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdjVUpCUXk5Q08zbENRVUZOTzNkQ1FVTklMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dDNRa0ZEZGtJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdjVUpCUTNoQ08ybENRVU5LTzJGQlEwbzdVMEZEU2p0UlFVTkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4RlFVRkZPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEyeENMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTMEZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdHZRa0ZEZWtJc1MwRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTTdiMEpCUTNoQ0xFdEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU16UXp0WlFVTk1MRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMDQ3U1VGVFRDeERRVUZETzBsQlJXTXNaVUZCVHl4SFFVRjBRaXhWUVVGMVFpeERRVUZYTEVWQlFVVXNRMEZCVnp0UlFVTXpReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGVFSXNUMEZCVHl4RFFVRkRMRVZCUVVVN1dVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0zUWl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGSFl5eHhRa0ZCWVN4SFFVRTFRaXhWUVVFMlFpeERRVUZoTEVWQlFVVXNRMEZCVnl4RlFVRkZMRU5CUVZjN1VVRkRhRVVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOcVFpeFBRVUZQTEVOQlFVTXNSVUZCUlR0WlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTm9SQ3hEUVVGRE8wbEJTMDBzYVVOQlFXVXNSMEZCZEVJc1ZVRkJkVUlzUTBGQllUdFJRVU5vUXl4SlFVRkpMRk5CUVZNc1IwRkJSeXhEUVVGRExFVkJRVVVzVjBGQlZ5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnVReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTTNRaXhUUVVGVExFbEJRVWtzVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRemxETEU5QlFVOHNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMjVFTEZkQlFWY3NTVUZCU1N4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEY0VRN1VVRkRSQ3hKUVVGSkxGZEJRVmNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1YwRkJWeXhEUVVGRE8xbEJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZETVVRc1QwRkJUeXhEUVVGRExFZEJRVWNzVTBGQlV5eEhRVUZITEZkQlFWY3NRMEZCUXp0SlFVTjJReXhEUVVGRE8wbEJSVTBzT0VKQlFWa3NSMEZCYmtJN1VVRkRTU3hKUVVGSkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyaERMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM3BETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRemRDTEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMU5CUTNKRU8xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RlFVRkZMRU5CUVVNN1NVRkRhRU1zUTBGQlF6dEpRVVZqTEZsQlFVa3NSMEZCYmtJc1ZVRkJiMElzUTBGQllTeEZRVUZGTEVOQlFXRTdVVUZETlVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTnNReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzaENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3WjBKQlEzaENMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEY2tJN1UwRkRTanRKUVVOTUxFTkJRVU03U1VGUlR5eG5RMEZCWXl4SFFVRjBRaXhWUVVGMVFpeEZRVUZqTEVWQlFVVXNRMEZCWVN4RlFVRkZMRU5CUVdFc1JVRkJSU3hSUVVGblFqdFJRVU5xUml4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTndRaXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkRNME1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHp0WlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4wUkN4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETTBNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR6dFpRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVkeVJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRNMElzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRE8wbEJWVzVFTEVOQlFVTTdTVUZGWXl4alFVRk5MRWRCUVhKQ0xGVkJRWE5DTEVOQlFWTXNSVUZCUlN4RFFVRlRMRVZCUVVVc1EwRkJaME03VVVGRGVFVXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVN1dVRkRka0lzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETzJkQ1FVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEZEVNN1NVRkRUQ3hEUVVGRE8wbEJRMDhzTmtKQlFWY3NSMEZCYmtJc1ZVRkJiMElzUTBGQlowTTdVVUZEYUVRc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZEVNc1EwRkJRenRKUVVWUExIRkRRVUZ0UWl4SFFVRXpRaXhWUVVFMFFpeEZRVUZqTEVWQlFVVXNRMEZCWVR0UlFVRjZSQ3hwUWtGbFF6dFJRV1JITEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTTFRaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU42UXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVTB4UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVU3V1VGRFpDeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlN5eFBRVUZCTEV0QlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQmFrTXNRMEZCYVVNc1EwRkJReXhEUVVGRE8xbEJRemxFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNoRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM2hETEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRelZETzBsQlEwd3NRMEZCUXp0SlFVVk5MSEZDUVVGSExFZEJRVllzVlVGQlZ5eFZRVUZyUWp0UlFVTjZRaXhKUVVGSkxFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RlFVRkZMRk5CUVZNc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRGFrUXNUMEZCVHl4RFFVRkRMRk5CUVZNc1NVRkJTU3hWUVVGVkxFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVTdXVUZEYmtNc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMWxCUXpGQ0xGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJRenRaUVVOMFJDeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJRN1VVRkRSQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5zUWl4RFFVRkRPMGxCUlUwc05FSkJRVlVzUjBGQmFrSTdVVUZCUVN4cFFrRmxRenRSUVdSSExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGNrTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6RkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTnlReXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNVU1zU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM3BETEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOaUxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRaUVVOc1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFdEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEV0QlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkRha1lzUTBGQlF5eEhRVUZITEV0QlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNwQ0xFbEJRVWtzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJRc1MwRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGNrSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCUldNc1YwRkJSeXhIUVVGc1FpeFZRVUZ0UWl4RFFVRmhMRVZCUVVVc1EwRkJZU3hGUVVGRkxFTkJRV0U3VVVGRE1VUXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTjJReXhQUVVGQkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSenRSUVVFM1F5eERRVUUyUXl4RFFVRkRMRU5CUVVNN1NVRkRka1FzUTBGQlF6dEpRVVZOTEdsRFFVRmxMRWRCUVhSQ0xGVkJRWFZDTEVOQlFWY3NSVUZCUlN4RFFVRlhMRVZCUVVVc1VVRkJaMEk3VVVGRE4wUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRE4wSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4UlFVRlJMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEycERPMGxCUTB3c1EwRkJRenRKUVVWTkxDdENRVUZoTEVkQlFYQkNPMUZCUTBrc1NVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEyWXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFBRVUZQTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRjRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdaMEpCUTNoRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRWaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0dlFrRkROMElzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOeVF5eERRVUZETEVsQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJRenRwUWtGRGFFSTdaMEpCUTBRc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMnBDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRM0pDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVUZGTEZOQlFWTTdaMEpCUXpOQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRMllzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFppeE5RVUZOTEVsQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU03WVVGRE1VSTdVMEZEU2p0UlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZ5VjJNc2IwSkJRVmtzUjBGQlZ5eExRVUZMTEVOQlFVTTdTVUZ6VjJoRUxHTkJRVU03UTBGQlFTeEJRV2haUkN4SlFXZFpRenRCUVdoWldTd3dRa0ZCVHp0QlFXMVpjRUk3U1VGTlNTeHpRa0ZCYlVJc1NVRkJaMEk3VVVGQmFFSXNjVUpCUVVFc1JVRkJRU3hSUVVGblFqdFJRVUZvUWl4VFFVRkpMRWRCUVVvc1NVRkJTU3hEUVVGWk8xRkJURE5DTEUxQlFVTXNSMEZCVnl4TlFVRk5MRU5CUVVNN1VVRkRia0lzVFVGQlF5eEhRVUZYTEU5QlFVOHNRMEZCUXp0UlFVTndRaXhOUVVGRExFZEJRVmNzVlVGQlZTeERRVUZETzFGQlEzWkNMRlZCUVVzc1IwRkJWeXhMUVVGTExFTkJRVU03U1VGRlV5eERRVUZETzBsQlIzaERMRGhDUVVGUExFZEJRVkE3VVVGRFNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTI1RUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdTVUZETVVNc1EwRkJRenRKUVVkRUxIRkRRVUZqTEVkQlFXUXNWVUZCWlN4SFFVRlhMRVZCUVVVc1IwRkJWenRSUVVOdVF5eFBRVUZQTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRPVU1zUTBGQlF6dEpRVU5NTEcxQ1FVRkRPMEZCUVVRc1EwRkJReXhCUVd4Q1JDeEpRV3RDUXp0QlFXeENXU3h2UTBGQldTSjkiLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgUG9zaXRpb25TdGF0cyA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQb3NpdGlvblN0YXRzKHNjYWxlKSB7XHJcbiAgICAgICAgdGhpcy5zY2FsZSA9IHNjYWxlO1xyXG4gICAgICAgIHRoaXMuQUIgPSAwO1xyXG4gICAgICAgIHRoaXMuQUQgPSAwO1xyXG4gICAgICAgIHRoaXMuQTIgPSAwO1xyXG4gICAgfVxyXG4gICAgUG9zaXRpb25TdGF0cy5wcm90b3R5cGUuYWRkVmFyaWFibGUgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBhaSA9IHRoaXMuc2NhbGUgLyB2LnNjYWxlO1xyXG4gICAgICAgIHZhciBiaSA9IHYub2Zmc2V0IC8gdi5zY2FsZTtcclxuICAgICAgICB2YXIgd2kgPSB2LndlaWdodDtcclxuICAgICAgICB0aGlzLkFCICs9IHdpICogYWkgKiBiaTtcclxuICAgICAgICB0aGlzLkFEICs9IHdpICogYWkgKiB2LmRlc2lyZWRQb3NpdGlvbjtcclxuICAgICAgICB0aGlzLkEyICs9IHdpICogYWkgKiBhaTtcclxuICAgIH07XHJcbiAgICBQb3NpdGlvblN0YXRzLnByb3RvdHlwZS5nZXRQb3NuID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5BRCAtIHRoaXMuQUIpIC8gdGhpcy5BMjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUG9zaXRpb25TdGF0cztcclxufSgpKTtcclxuZXhwb3J0cy5Qb3NpdGlvblN0YXRzID0gUG9zaXRpb25TdGF0cztcclxudmFyIENvbnN0cmFpbnQgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQ29uc3RyYWludChsZWZ0LCByaWdodCwgZ2FwLCBlcXVhbGl0eSkge1xyXG4gICAgICAgIGlmIChlcXVhbGl0eSA9PT0gdm9pZCAwKSB7IGVxdWFsaXR5ID0gZmFsc2U7IH1cclxuICAgICAgICB0aGlzLmxlZnQgPSBsZWZ0O1xyXG4gICAgICAgIHRoaXMucmlnaHQgPSByaWdodDtcclxuICAgICAgICB0aGlzLmdhcCA9IGdhcDtcclxuICAgICAgICB0aGlzLmVxdWFsaXR5ID0gZXF1YWxpdHk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnVuc2F0aXNmaWFibGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxlZnQgPSBsZWZ0O1xyXG4gICAgICAgIHRoaXMucmlnaHQgPSByaWdodDtcclxuICAgICAgICB0aGlzLmdhcCA9IGdhcDtcclxuICAgICAgICB0aGlzLmVxdWFsaXR5ID0gZXF1YWxpdHk7XHJcbiAgICB9XHJcbiAgICBDb25zdHJhaW50LnByb3RvdHlwZS5zbGFjayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51bnNhdGlzZmlhYmxlID8gTnVtYmVyLk1BWF9WQUxVRVxyXG4gICAgICAgICAgICA6IHRoaXMucmlnaHQuc2NhbGUgKiB0aGlzLnJpZ2h0LnBvc2l0aW9uKCkgLSB0aGlzLmdhcFxyXG4gICAgICAgICAgICAgICAgLSB0aGlzLmxlZnQuc2NhbGUgKiB0aGlzLmxlZnQucG9zaXRpb24oKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gQ29uc3RyYWludDtcclxufSgpKTtcclxuZXhwb3J0cy5Db25zdHJhaW50ID0gQ29uc3RyYWludDtcclxudmFyIFZhcmlhYmxlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFZhcmlhYmxlKGRlc2lyZWRQb3NpdGlvbiwgd2VpZ2h0LCBzY2FsZSkge1xyXG4gICAgICAgIGlmICh3ZWlnaHQgPT09IHZvaWQgMCkgeyB3ZWlnaHQgPSAxOyB9XHJcbiAgICAgICAgaWYgKHNjYWxlID09PSB2b2lkIDApIHsgc2NhbGUgPSAxOyB9XHJcbiAgICAgICAgdGhpcy5kZXNpcmVkUG9zaXRpb24gPSBkZXNpcmVkUG9zaXRpb247XHJcbiAgICAgICAgdGhpcy53ZWlnaHQgPSB3ZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5zY2FsZSA9IHNjYWxlO1xyXG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcclxuICAgIH1cclxuICAgIFZhcmlhYmxlLnByb3RvdHlwZS5kZmR2ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiAyLjAgKiB0aGlzLndlaWdodCAqICh0aGlzLnBvc2l0aW9uKCkgLSB0aGlzLmRlc2lyZWRQb3NpdGlvbik7XHJcbiAgICB9O1xyXG4gICAgVmFyaWFibGUucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5ibG9jay5wcy5zY2FsZSAqIHRoaXMuYmxvY2sucG9zbiArIHRoaXMub2Zmc2V0KSAvIHRoaXMuc2NhbGU7XHJcbiAgICB9O1xyXG4gICAgVmFyaWFibGUucHJvdG90eXBlLnZpc2l0TmVpZ2hib3VycyA9IGZ1bmN0aW9uIChwcmV2LCBmKSB7XHJcbiAgICAgICAgdmFyIGZmID0gZnVuY3Rpb24gKGMsIG5leHQpIHsgcmV0dXJuIGMuYWN0aXZlICYmIHByZXYgIT09IG5leHQgJiYgZihjLCBuZXh0KTsgfTtcclxuICAgICAgICB0aGlzLmNPdXQuZm9yRWFjaChmdW5jdGlvbiAoYykgeyByZXR1cm4gZmYoYywgYy5yaWdodCk7IH0pO1xyXG4gICAgICAgIHRoaXMuY0luLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGZmKGMsIGMubGVmdCk7IH0pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBWYXJpYWJsZTtcclxufSgpKTtcclxuZXhwb3J0cy5WYXJpYWJsZSA9IFZhcmlhYmxlO1xyXG52YXIgQmxvY2sgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQmxvY2sodikge1xyXG4gICAgICAgIHRoaXMudmFycyA9IFtdO1xyXG4gICAgICAgIHYub2Zmc2V0ID0gMDtcclxuICAgICAgICB0aGlzLnBzID0gbmV3IFBvc2l0aW9uU3RhdHModi5zY2FsZSk7XHJcbiAgICAgICAgdGhpcy5hZGRWYXJpYWJsZSh2KTtcclxuICAgIH1cclxuICAgIEJsb2NrLnByb3RvdHlwZS5hZGRWYXJpYWJsZSA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgdi5ibG9jayA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy52YXJzLnB1c2godik7XHJcbiAgICAgICAgdGhpcy5wcy5hZGRWYXJpYWJsZSh2KTtcclxuICAgICAgICB0aGlzLnBvc24gPSB0aGlzLnBzLmdldFBvc24oKTtcclxuICAgIH07XHJcbiAgICBCbG9jay5wcm90b3R5cGUudXBkYXRlV2VpZ2h0ZWRQb3NpdGlvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLnBzLkFCID0gdGhpcy5wcy5BRCA9IHRoaXMucHMuQTIgPSAwO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gdGhpcy52YXJzLmxlbmd0aDsgaSA8IG47ICsraSlcclxuICAgICAgICAgICAgdGhpcy5wcy5hZGRWYXJpYWJsZSh0aGlzLnZhcnNbaV0pO1xyXG4gICAgICAgIHRoaXMucG9zbiA9IHRoaXMucHMuZ2V0UG9zbigpO1xyXG4gICAgfTtcclxuICAgIEJsb2NrLnByb3RvdHlwZS5jb21wdXRlX2xtID0gZnVuY3Rpb24gKHYsIHUsIHBvc3RBY3Rpb24pIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHZhciBkZmR2ID0gdi5kZmR2KCk7XHJcbiAgICAgICAgdi52aXNpdE5laWdoYm91cnModSwgZnVuY3Rpb24gKGMsIG5leHQpIHtcclxuICAgICAgICAgICAgdmFyIF9kZmR2ID0gX3RoaXMuY29tcHV0ZV9sbShuZXh0LCB2LCBwb3N0QWN0aW9uKTtcclxuICAgICAgICAgICAgaWYgKG5leHQgPT09IGMucmlnaHQpIHtcclxuICAgICAgICAgICAgICAgIGRmZHYgKz0gX2RmZHYgKiBjLmxlZnQuc2NhbGU7XHJcbiAgICAgICAgICAgICAgICBjLmxtID0gX2RmZHY7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkZmR2ICs9IF9kZmR2ICogYy5yaWdodC5zY2FsZTtcclxuICAgICAgICAgICAgICAgIGMubG0gPSAtX2RmZHY7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcG9zdEFjdGlvbihjKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZGZkdiAvIHYuc2NhbGU7XHJcbiAgICB9O1xyXG4gICAgQmxvY2sucHJvdG90eXBlLnBvcHVsYXRlU3BsaXRCbG9jayA9IGZ1bmN0aW9uICh2LCBwcmV2KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2LnZpc2l0TmVpZ2hib3VycyhwcmV2LCBmdW5jdGlvbiAoYywgbmV4dCkge1xyXG4gICAgICAgICAgICBuZXh0Lm9mZnNldCA9IHYub2Zmc2V0ICsgKG5leHQgPT09IGMucmlnaHQgPyBjLmdhcCA6IC1jLmdhcCk7XHJcbiAgICAgICAgICAgIF90aGlzLmFkZFZhcmlhYmxlKG5leHQpO1xyXG4gICAgICAgICAgICBfdGhpcy5wb3B1bGF0ZVNwbGl0QmxvY2sobmV4dCwgdik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgQmxvY2sucHJvdG90eXBlLnRyYXZlcnNlID0gZnVuY3Rpb24gKHZpc2l0LCBhY2MsIHYsIHByZXYpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmICh2ID09PSB2b2lkIDApIHsgdiA9IHRoaXMudmFyc1swXTsgfVxyXG4gICAgICAgIGlmIChwcmV2ID09PSB2b2lkIDApIHsgcHJldiA9IG51bGw7IH1cclxuICAgICAgICB2LnZpc2l0TmVpZ2hib3VycyhwcmV2LCBmdW5jdGlvbiAoYywgbmV4dCkge1xyXG4gICAgICAgICAgICBhY2MucHVzaCh2aXNpdChjKSk7XHJcbiAgICAgICAgICAgIF90aGlzLnRyYXZlcnNlKHZpc2l0LCBhY2MsIG5leHQsIHYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIEJsb2NrLnByb3RvdHlwZS5maW5kTWluTE0gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIG0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZV9sbSh0aGlzLnZhcnNbMF0sIG51bGwsIGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgICAgIGlmICghYy5lcXVhbGl0eSAmJiAobSA9PT0gbnVsbCB8fCBjLmxtIDwgbS5sbSkpXHJcbiAgICAgICAgICAgICAgICBtID0gYztcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbTtcclxuICAgIH07XHJcbiAgICBCbG9jay5wcm90b3R5cGUuZmluZE1pbkxNQmV0d2VlbiA9IGZ1bmN0aW9uIChsdiwgcnYpIHtcclxuICAgICAgICB0aGlzLmNvbXB1dGVfbG0obHYsIG51bGwsIGZ1bmN0aW9uICgpIHsgfSk7XHJcbiAgICAgICAgdmFyIG0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZmluZFBhdGgobHYsIG51bGwsIHJ2LCBmdW5jdGlvbiAoYywgbmV4dCkge1xyXG4gICAgICAgICAgICBpZiAoIWMuZXF1YWxpdHkgJiYgYy5yaWdodCA9PT0gbmV4dCAmJiAobSA9PT0gbnVsbCB8fCBjLmxtIDwgbS5sbSkpXHJcbiAgICAgICAgICAgICAgICBtID0gYztcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbTtcclxuICAgIH07XHJcbiAgICBCbG9jay5wcm90b3R5cGUuZmluZFBhdGggPSBmdW5jdGlvbiAodiwgcHJldiwgdG8sIHZpc2l0KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2YXIgZW5kRm91bmQgPSBmYWxzZTtcclxuICAgICAgICB2LnZpc2l0TmVpZ2hib3VycyhwcmV2LCBmdW5jdGlvbiAoYywgbmV4dCkge1xyXG4gICAgICAgICAgICBpZiAoIWVuZEZvdW5kICYmIChuZXh0ID09PSB0byB8fCBfdGhpcy5maW5kUGF0aChuZXh0LCB2LCB0bywgdmlzaXQpKSkge1xyXG4gICAgICAgICAgICAgICAgZW5kRm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdmlzaXQoYywgbmV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZW5kRm91bmQ7XHJcbiAgICB9O1xyXG4gICAgQmxvY2sucHJvdG90eXBlLmlzQWN0aXZlRGlyZWN0ZWRQYXRoQmV0d2VlbiA9IGZ1bmN0aW9uICh1LCB2KSB7XHJcbiAgICAgICAgaWYgKHUgPT09IHYpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHZhciBpID0gdS5jT3V0Lmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgICAgIHZhciBjID0gdS5jT3V0W2ldO1xyXG4gICAgICAgICAgICBpZiAoYy5hY3RpdmUgJiYgdGhpcy5pc0FjdGl2ZURpcmVjdGVkUGF0aEJldHdlZW4oYy5yaWdodCwgdikpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIEJsb2NrLnNwbGl0ID0gZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICBjLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBbQmxvY2suY3JlYXRlU3BsaXRCbG9jayhjLmxlZnQpLCBCbG9jay5jcmVhdGVTcGxpdEJsb2NrKGMucmlnaHQpXTtcclxuICAgIH07XHJcbiAgICBCbG9jay5jcmVhdGVTcGxpdEJsb2NrID0gZnVuY3Rpb24gKHN0YXJ0VmFyKSB7XHJcbiAgICAgICAgdmFyIGIgPSBuZXcgQmxvY2soc3RhcnRWYXIpO1xyXG4gICAgICAgIGIucG9wdWxhdGVTcGxpdEJsb2NrKHN0YXJ0VmFyLCBudWxsKTtcclxuICAgICAgICByZXR1cm4gYjtcclxuICAgIH07XHJcbiAgICBCbG9jay5wcm90b3R5cGUuc3BsaXRCZXR3ZWVuID0gZnVuY3Rpb24gKHZsLCB2cikge1xyXG4gICAgICAgIHZhciBjID0gdGhpcy5maW5kTWluTE1CZXR3ZWVuKHZsLCB2cik7XHJcbiAgICAgICAgaWYgKGMgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIGJzID0gQmxvY2suc3BsaXQoYyk7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGNvbnN0cmFpbnQ6IGMsIGxiOiBic1swXSwgcmI6IGJzWzFdIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICAgIEJsb2NrLnByb3RvdHlwZS5tZXJnZUFjcm9zcyA9IGZ1bmN0aW9uIChiLCBjLCBkaXN0KSB7XHJcbiAgICAgICAgYy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gYi52YXJzLmxlbmd0aDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgdiA9IGIudmFyc1tpXTtcclxuICAgICAgICAgICAgdi5vZmZzZXQgKz0gZGlzdDtcclxuICAgICAgICAgICAgdGhpcy5hZGRWYXJpYWJsZSh2KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3NuID0gdGhpcy5wcy5nZXRQb3NuKCk7XHJcbiAgICB9O1xyXG4gICAgQmxvY2sucHJvdG90eXBlLmNvc3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHN1bSA9IDAsIGkgPSB0aGlzLnZhcnMubGVuZ3RoO1xyXG4gICAgICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICAgICAgdmFyIHYgPSB0aGlzLnZhcnNbaV0sIGQgPSB2LnBvc2l0aW9uKCkgLSB2LmRlc2lyZWRQb3NpdGlvbjtcclxuICAgICAgICAgICAgc3VtICs9IGQgKiBkICogdi53ZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdW07XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEJsb2NrO1xyXG59KCkpO1xyXG5leHBvcnRzLkJsb2NrID0gQmxvY2s7XHJcbnZhciBCbG9ja3MgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQmxvY2tzKHZzKSB7XHJcbiAgICAgICAgdGhpcy52cyA9IHZzO1xyXG4gICAgICAgIHZhciBuID0gdnMubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMubGlzdCA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICB3aGlsZSAobi0tKSB7XHJcbiAgICAgICAgICAgIHZhciBiID0gbmV3IEJsb2NrKHZzW25dKTtcclxuICAgICAgICAgICAgdGhpcy5saXN0W25dID0gYjtcclxuICAgICAgICAgICAgYi5ibG9ja0luZCA9IG47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQmxvY2tzLnByb3RvdHlwZS5jb3N0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzdW0gPSAwLCBpID0gdGhpcy5saXN0Lmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKVxyXG4gICAgICAgICAgICBzdW0gKz0gdGhpcy5saXN0W2ldLmNvc3QoKTtcclxuICAgICAgICByZXR1cm4gc3VtO1xyXG4gICAgfTtcclxuICAgIEJsb2Nrcy5wcm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24gKGIpIHtcclxuICAgICAgICBiLmJsb2NrSW5kID0gdGhpcy5saXN0Lmxlbmd0aDtcclxuICAgICAgICB0aGlzLmxpc3QucHVzaChiKTtcclxuICAgIH07XHJcbiAgICBCbG9ja3MucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChiKSB7XHJcbiAgICAgICAgdmFyIGxhc3QgPSB0aGlzLmxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgICB2YXIgc3dhcEJsb2NrID0gdGhpcy5saXN0W2xhc3RdO1xyXG4gICAgICAgIHRoaXMubGlzdC5sZW5ndGggPSBsYXN0O1xyXG4gICAgICAgIGlmIChiICE9PSBzd2FwQmxvY2spIHtcclxuICAgICAgICAgICAgdGhpcy5saXN0W2IuYmxvY2tJbmRdID0gc3dhcEJsb2NrO1xyXG4gICAgICAgICAgICBzd2FwQmxvY2suYmxvY2tJbmQgPSBiLmJsb2NrSW5kO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBCbG9ja3MucHJvdG90eXBlLm1lcmdlID0gZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICB2YXIgbCA9IGMubGVmdC5ibG9jaywgciA9IGMucmlnaHQuYmxvY2s7XHJcbiAgICAgICAgdmFyIGRpc3QgPSBjLnJpZ2h0Lm9mZnNldCAtIGMubGVmdC5vZmZzZXQgLSBjLmdhcDtcclxuICAgICAgICBpZiAobC52YXJzLmxlbmd0aCA8IHIudmFycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgci5tZXJnZUFjcm9zcyhsLCBjLCBkaXN0KTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmUobCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsLm1lcmdlQWNyb3NzKHIsIGMsIC1kaXN0KTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmUocik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIEJsb2Nrcy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgdGhpcy5saXN0LmZvckVhY2goZik7XHJcbiAgICB9O1xyXG4gICAgQmxvY2tzLnByb3RvdHlwZS51cGRhdGVCbG9ja1Bvc2l0aW9ucyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaChmdW5jdGlvbiAoYikgeyByZXR1cm4gYi51cGRhdGVXZWlnaHRlZFBvc2l0aW9uKCk7IH0pO1xyXG4gICAgfTtcclxuICAgIEJsb2Nrcy5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiAoaW5hY3RpdmUpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQmxvY2tQb3NpdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaChmdW5jdGlvbiAoYikge1xyXG4gICAgICAgICAgICB2YXIgdiA9IGIuZmluZE1pbkxNKCk7XHJcbiAgICAgICAgICAgIGlmICh2ICE9PSBudWxsICYmIHYubG0gPCBTb2x2ZXIuTEFHUkFOR0lBTl9UT0xFUkFOQ0UpIHtcclxuICAgICAgICAgICAgICAgIGIgPSB2LmxlZnQuYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBCbG9jay5zcGxpdCh2KS5mb3JFYWNoKGZ1bmN0aW9uIChuYikgeyByZXR1cm4gX3RoaXMuaW5zZXJ0KG5iKTsgfSk7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5yZW1vdmUoYik7XHJcbiAgICAgICAgICAgICAgICBpbmFjdGl2ZS5wdXNoKHYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEJsb2NrcztcclxufSgpKTtcclxuZXhwb3J0cy5CbG9ja3MgPSBCbG9ja3M7XHJcbnZhciBTb2x2ZXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gU29sdmVyKHZzLCBjcykge1xyXG4gICAgICAgIHRoaXMudnMgPSB2cztcclxuICAgICAgICB0aGlzLmNzID0gY3M7XHJcbiAgICAgICAgdGhpcy52cyA9IHZzO1xyXG4gICAgICAgIHZzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgdi5jSW4gPSBbXSwgdi5jT3V0ID0gW107XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jcyA9IGNzO1xyXG4gICAgICAgIGNzLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICAgICAgYy5sZWZ0LmNPdXQucHVzaChjKTtcclxuICAgICAgICAgICAgYy5yaWdodC5jSW4ucHVzaChjKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmluYWN0aXZlID0gY3MubWFwKGZ1bmN0aW9uIChjKSB7IGMuYWN0aXZlID0gZmFsc2U7IHJldHVybiBjOyB9KTtcclxuICAgICAgICB0aGlzLmJzID0gbnVsbDtcclxuICAgIH1cclxuICAgIFNvbHZlci5wcm90b3R5cGUuY29zdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5icy5jb3N0KCk7XHJcbiAgICB9O1xyXG4gICAgU29sdmVyLnByb3RvdHlwZS5zZXRTdGFydGluZ1Bvc2l0aW9ucyA9IGZ1bmN0aW9uIChwcykge1xyXG4gICAgICAgIHRoaXMuaW5hY3RpdmUgPSB0aGlzLmNzLm1hcChmdW5jdGlvbiAoYykgeyBjLmFjdGl2ZSA9IGZhbHNlOyByZXR1cm4gYzsgfSk7XHJcbiAgICAgICAgdGhpcy5icyA9IG5ldyBCbG9ja3ModGhpcy52cyk7XHJcbiAgICAgICAgdGhpcy5icy5mb3JFYWNoKGZ1bmN0aW9uIChiLCBpKSB7IHJldHVybiBiLnBvc24gPSBwc1tpXTsgfSk7XHJcbiAgICB9O1xyXG4gICAgU29sdmVyLnByb3RvdHlwZS5zZXREZXNpcmVkUG9zaXRpb25zID0gZnVuY3Rpb24gKHBzKSB7XHJcbiAgICAgICAgdGhpcy52cy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBpKSB7IHJldHVybiB2LmRlc2lyZWRQb3NpdGlvbiA9IHBzW2ldOyB9KTtcclxuICAgIH07XHJcbiAgICBTb2x2ZXIucHJvdG90eXBlLm1vc3RWaW9sYXRlZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgbWluU2xhY2sgPSBOdW1iZXIuTUFYX1ZBTFVFLCB2ID0gbnVsbCwgbCA9IHRoaXMuaW5hY3RpdmUsIG4gPSBsLmxlbmd0aCwgZGVsZXRlUG9pbnQgPSBuO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgICAgIHZhciBjID0gbFtpXTtcclxuICAgICAgICAgICAgaWYgKGMudW5zYXRpc2ZpYWJsZSlcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB2YXIgc2xhY2sgPSBjLnNsYWNrKCk7XHJcbiAgICAgICAgICAgIGlmIChjLmVxdWFsaXR5IHx8IHNsYWNrIDwgbWluU2xhY2spIHtcclxuICAgICAgICAgICAgICAgIG1pblNsYWNrID0gc2xhY2s7XHJcbiAgICAgICAgICAgICAgICB2ID0gYztcclxuICAgICAgICAgICAgICAgIGRlbGV0ZVBvaW50ID0gaTtcclxuICAgICAgICAgICAgICAgIGlmIChjLmVxdWFsaXR5KVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkZWxldGVQb2ludCAhPT0gbiAmJlxyXG4gICAgICAgICAgICAobWluU2xhY2sgPCBTb2x2ZXIuWkVST19VUFBFUkJPVU5EICYmICF2LmFjdGl2ZSB8fCB2LmVxdWFsaXR5KSkge1xyXG4gICAgICAgICAgICBsW2RlbGV0ZVBvaW50XSA9IGxbbiAtIDFdO1xyXG4gICAgICAgICAgICBsLmxlbmd0aCA9IG4gLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdjtcclxuICAgIH07XHJcbiAgICBTb2x2ZXIucHJvdG90eXBlLnNhdGlzZnkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYnMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmJzID0gbmV3IEJsb2Nrcyh0aGlzLnZzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5icy5zcGxpdCh0aGlzLmluYWN0aXZlKTtcclxuICAgICAgICB2YXIgdiA9IG51bGw7XHJcbiAgICAgICAgd2hpbGUgKCh2ID0gdGhpcy5tb3N0VmlvbGF0ZWQoKSkgJiYgKHYuZXF1YWxpdHkgfHwgdi5zbGFjaygpIDwgU29sdmVyLlpFUk9fVVBQRVJCT1VORCAmJiAhdi5hY3RpdmUpKSB7XHJcbiAgICAgICAgICAgIHZhciBsYiA9IHYubGVmdC5ibG9jaywgcmIgPSB2LnJpZ2h0LmJsb2NrO1xyXG4gICAgICAgICAgICBpZiAobGIgIT09IHJiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJzLm1lcmdlKHYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxiLmlzQWN0aXZlRGlyZWN0ZWRQYXRoQmV0d2Vlbih2LnJpZ2h0LCB2LmxlZnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdi51bnNhdGlzZmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBzcGxpdCA9IGxiLnNwbGl0QmV0d2Vlbih2LmxlZnQsIHYucmlnaHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNwbGl0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icy5pbnNlcnQoc3BsaXQubGIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnMuaW5zZXJ0KHNwbGl0LnJiKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJzLnJlbW92ZShsYik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmFjdGl2ZS5wdXNoKHNwbGl0LmNvbnN0cmFpbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdi51bnNhdGlzZmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh2LnNsYWNrKCkgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5hY3RpdmUucHVzaCh2KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnMubWVyZ2Uodik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgU29sdmVyLnByb3RvdHlwZS5zb2x2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLnNhdGlzZnkoKTtcclxuICAgICAgICB2YXIgbGFzdGNvc3QgPSBOdW1iZXIuTUFYX1ZBTFVFLCBjb3N0ID0gdGhpcy5icy5jb3N0KCk7XHJcbiAgICAgICAgd2hpbGUgKE1hdGguYWJzKGxhc3Rjb3N0IC0gY29zdCkgPiAwLjAwMDEpIHtcclxuICAgICAgICAgICAgdGhpcy5zYXRpc2Z5KCk7XHJcbiAgICAgICAgICAgIGxhc3Rjb3N0ID0gY29zdDtcclxuICAgICAgICAgICAgY29zdCA9IHRoaXMuYnMuY29zdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29zdDtcclxuICAgIH07XHJcbiAgICBTb2x2ZXIuTEFHUkFOR0lBTl9UT0xFUkFOQ0UgPSAtMWUtNDtcclxuICAgIFNvbHZlci5aRVJPX1VQUEVSQk9VTkQgPSAtMWUtMTA7XHJcbiAgICByZXR1cm4gU29sdmVyO1xyXG59KCkpO1xyXG5leHBvcnRzLlNvbHZlciA9IFNvbHZlcjtcclxuZnVuY3Rpb24gcmVtb3ZlT3ZlcmxhcEluT25lRGltZW5zaW9uKHNwYW5zLCBsb3dlckJvdW5kLCB1cHBlckJvdW5kKSB7XHJcbiAgICB2YXIgdnMgPSBzcGFucy5tYXAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIG5ldyBWYXJpYWJsZShzLmRlc2lyZWRDZW50ZXIpOyB9KTtcclxuICAgIHZhciBjcyA9IFtdO1xyXG4gICAgdmFyIG4gPSBzcGFucy5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHtcclxuICAgICAgICB2YXIgbGVmdCA9IHNwYW5zW2ldLCByaWdodCA9IHNwYW5zW2kgKyAxXTtcclxuICAgICAgICBjcy5wdXNoKG5ldyBDb25zdHJhaW50KHZzW2ldLCB2c1tpICsgMV0sIChsZWZ0LnNpemUgKyByaWdodC5zaXplKSAvIDIpKTtcclxuICAgIH1cclxuICAgIHZhciBsZWZ0TW9zdCA9IHZzWzBdLCByaWdodE1vc3QgPSB2c1tuIC0gMV0sIGxlZnRNb3N0U2l6ZSA9IHNwYW5zWzBdLnNpemUgLyAyLCByaWdodE1vc3RTaXplID0gc3BhbnNbbiAtIDFdLnNpemUgLyAyO1xyXG4gICAgdmFyIHZMb3dlciA9IG51bGwsIHZVcHBlciA9IG51bGw7XHJcbiAgICBpZiAobG93ZXJCb3VuZCkge1xyXG4gICAgICAgIHZMb3dlciA9IG5ldyBWYXJpYWJsZShsb3dlckJvdW5kLCBsZWZ0TW9zdC53ZWlnaHQgKiAxMDAwKTtcclxuICAgICAgICB2cy5wdXNoKHZMb3dlcik7XHJcbiAgICAgICAgY3MucHVzaChuZXcgQ29uc3RyYWludCh2TG93ZXIsIGxlZnRNb3N0LCBsZWZ0TW9zdFNpemUpKTtcclxuICAgIH1cclxuICAgIGlmICh1cHBlckJvdW5kKSB7XHJcbiAgICAgICAgdlVwcGVyID0gbmV3IFZhcmlhYmxlKHVwcGVyQm91bmQsIHJpZ2h0TW9zdC53ZWlnaHQgKiAxMDAwKTtcclxuICAgICAgICB2cy5wdXNoKHZVcHBlcik7XHJcbiAgICAgICAgY3MucHVzaChuZXcgQ29uc3RyYWludChyaWdodE1vc3QsIHZVcHBlciwgcmlnaHRNb3N0U2l6ZSkpO1xyXG4gICAgfVxyXG4gICAgdmFyIHNvbHZlciA9IG5ldyBTb2x2ZXIodnMsIGNzKTtcclxuICAgIHNvbHZlci5zb2x2ZSgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXdDZW50ZXJzOiB2cy5zbGljZSgwLCBzcGFucy5sZW5ndGgpLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdi5wb3NpdGlvbigpOyB9KSxcclxuICAgICAgICBsb3dlckJvdW5kOiB2TG93ZXIgPyB2TG93ZXIucG9zaXRpb24oKSA6IGxlZnRNb3N0LnBvc2l0aW9uKCkgLSBsZWZ0TW9zdFNpemUsXHJcbiAgICAgICAgdXBwZXJCb3VuZDogdlVwcGVyID8gdlVwcGVyLnBvc2l0aW9uKCkgOiByaWdodE1vc3QucG9zaXRpb24oKSArIHJpZ2h0TW9zdFNpemVcclxuICAgIH07XHJcbn1cclxuZXhwb3J0cy5yZW1vdmVPdmVybGFwSW5PbmVEaW1lbnNpb24gPSByZW1vdmVPdmVybGFwSW5PbmVEaW1lbnNpb247XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRuQnpZeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDFkbFlrTnZiR0V2YzNKakwzWndjMk11ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJTVHRKUVV0SkxIVkNRVUZ0UWl4TFFVRmhPMUZCUVdJc1ZVRkJTeXhIUVVGTUxFdEJRVXNzUTBGQlVUdFJRVXBvUXl4UFFVRkZMRWRCUVZjc1EwRkJReXhEUVVGRE8xRkJRMllzVDBGQlJTeEhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTm1MRTlCUVVVc1IwRkJWeXhEUVVGRExFTkJRVU03U1VGRmIwSXNRMEZCUXp0SlFVVndReXh0UTBGQlZ5eEhRVUZZTEZWQlFWa3NRMEZCVnp0UlFVTnVRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU03VVVGRE9VSXNTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUXpWQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRiRUlzU1VGQlNTeERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU40UWl4SlFVRkpMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMR1ZCUVdVc1EwRkJRenRSUVVOMlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzBsQlF6VkNMRU5CUVVNN1NVRkZSQ3dyUWtGQlR5eEhRVUZRTzFGQlEwa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRGVrTXNRMEZCUXp0SlFVTk1MRzlDUVVGRE8wRkJRVVFzUTBGQlF5eEJRVzVDUkN4SlFXMUNRenRCUVc1Q1dTeHpRMEZCWVR0QlFYRkNNVUk3U1VGTFNTeHZRa0ZCYlVJc1NVRkJZeXhGUVVGVExFdEJRV1VzUlVGQlV5eEhRVUZYTEVWQlFWTXNVVUZCZVVJN1VVRkJla0lzZVVKQlFVRXNSVUZCUVN4blFrRkJlVUk3VVVGQk5VWXNVMEZCU1N4SFFVRktMRWxCUVVrc1EwRkJWVHRSUVVGVExGVkJRVXNzUjBGQlRDeExRVUZMTEVOQlFWVTdVVUZCVXl4UlFVRkhMRWRCUVVnc1IwRkJSeXhEUVVGUk8xRkJRVk1zWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCYVVJN1VVRklMMGNzVjBGQlRTeEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVTjRRaXhyUWtGQllTeEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVY3pRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTnFRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVTnVRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXp0UlFVTm1MRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzVVVGQlVTeERRVUZETzBsQlF6ZENMRU5CUVVNN1NVRkZSQ3d3UWtGQlN5eEhRVUZNTzFGQlEwa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNVMEZCVXp0WlFVTjRReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSenRyUWtGRGJrUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRKUVVOcVJDeERRVUZETzBsQlEwd3NhVUpCUVVNN1FVRkJSQ3hEUVVGRExFRkJha0pFTEVsQmFVSkRPMEZCYWtKWkxHZERRVUZWTzBGQmJVSjJRanRKUVUxSkxHdENRVUZ0UWl4bFFVRjFRaXhGUVVGVExFMUJRV3RDTEVWQlFWTXNTMEZCYVVJN1VVRkJOVU1zZFVKQlFVRXNSVUZCUVN4VlFVRnJRanRSUVVGVExITkNRVUZCTEVWQlFVRXNVMEZCYVVJN1VVRkJOVVVzYjBKQlFXVXNSMEZCWml4bFFVRmxMRU5CUVZFN1VVRkJVeXhYUVVGTkxFZEJRVTRzVFVGQlRTeERRVUZaTzFGQlFWTXNWVUZCU3l4SFFVRk1MRXRCUVVzc1EwRkJXVHRSUVV3dlJpeFhRVUZOTEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCU3l0RkxFTkJRVU03U1VGRmJrY3NkVUpCUVVrc1IwRkJTanRSUVVOSkxFOUJRVThzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8wbEJRM2hGTEVOQlFVTTdTVUZGUkN3eVFrRkJVU3hIUVVGU08xRkJRMGtzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenRKUVVNNVJTeERRVUZETzBsQlIwUXNhME5CUVdVc1IwRkJaaXhWUVVGblFpeEpRVUZqTEVWQlFVVXNRMEZCTUVNN1VVRkRkRVVzU1VGQlNTeEZRVUZGTEVkQlFVY3NWVUZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hKUVVGTExFOUJRVUVzUTBGQlF5eERRVUZETEUxQlFVMHNTVUZCU1N4SlFVRkpMRXRCUVVzc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRVZCUVhaRExFTkJRWFZETEVOQlFVTTdVVUZET1VRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJaQ3hEUVVGakxFTkJRVU1zUTBGQlF6dFJRVU4wUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRmlMRU5CUVdFc1EwRkJReXhEUVVGRE8wbEJRM2hETEVOQlFVTTdTVUZEVEN4bFFVRkRPMEZCUVVRc1EwRkJReXhCUVhSQ1JDeEpRWE5DUXp0QlFYUkNXU3cwUWtGQlVUdEJRWGRDY2tJN1NVRk5TU3hsUVVGWkxFTkJRVmM3VVVGTWRrSXNVMEZCU1N4SFFVRmxMRVZCUVVVc1EwRkJRenRSUVUxc1FpeERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOaUxFbEJRVWtzUTBGQlF5eEZRVUZGTEVkQlFVY3NTVUZCU1N4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzSkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVJc1EwRkJRenRKUVVWUExESkNRVUZYTEVkQlFXNUNMRlZCUVc5Q0xFTkJRVmM3VVVGRE0wSXNRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRFppeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjJRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03U1VGRGJFTXNRMEZCUXp0SlFVZEVMSE5EUVVGelFpeEhRVUYwUWp0UlFVTkpMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVONlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdXVUZETlVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzUkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOc1F5eERRVUZETzBsQlJVOHNNRUpCUVZVc1IwRkJiRUlzVlVGQmJVSXNRMEZCVnl4RlFVRkZMRU5CUVZjc1JVRkJSU3hWUVVGcFF6dFJRVUU1UlN4cFFrRmpRenRSUVdKSExFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRSUVVOd1FpeERRVUZETEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hWUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTzFsQlEzcENMRWxCUVVrc1MwRkJTeXhIUVVGSExFdEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF6dFpRVU5xUkN4SlFVRkpMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTzJkQ1FVTnNRaXhKUVVGSkxFbEJRVWtzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8yZENRVU0zUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF6dGhRVU5vUWp0cFFrRkJUVHRuUWtGRFNDeEpRVUZKTEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETzJkQ1FVTTVRaXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRPMkZCUTJwQ08xbEJRMFFzVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJ4Q0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwZ3NUMEZCVHl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dEpRVU14UWl4RFFVRkRPMGxCUlU4c2EwTkJRV3RDTEVkQlFURkNMRlZCUVRKQ0xFTkJRVmNzUlVGQlJTeEpRVUZqTzFGQlFYUkVMR2xDUVUxRE8xRkJURWNzUTBGQlF5eERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1ZVRkJReXhEUVVGRExFVkJRVVVzU1VGQlNUdFpRVU0xUWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkROMFFzUzBGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVOMlFpeExRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNKRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlExQXNRMEZCUXp0SlFVZEVMSGRDUVVGUkxFZEJRVklzVlVGQlV5eExRVUUyUWl4RlFVRkZMRWRCUVZVc1JVRkJSU3hEUVVFd1FpeEZRVUZGTEVsQlFXMUNPMUZCUVc1SExHbENRVXRETzFGQlRHMUVMR3RDUVVGQkxFVkJRVUVzU1VGQll5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVGRkxIRkNRVUZCTEVWQlFVRXNWMEZCYlVJN1VVRkRMMFlzUTBGQlF5eERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1ZVRkJReXhEUVVGRExFVkJRVVVzU1VGQlNUdFpRVU0xUWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTI1Q0xFdEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWRCUVVjc1JVRkJSU3hKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZGtNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRFVDeERRVUZETzBsQlMwUXNlVUpCUVZNc1IwRkJWRHRSUVVOSkxFbEJRVWtzUTBGQlF5eEhRVUZsTEVsQlFVa3NRMEZCUXp0UlFVTjZRaXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeEZRVUZGTEZWQlFVRXNRMEZCUXp0WlFVTnFReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNTVUZCU1N4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8yZENRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRNVVFzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRlR5eG5RMEZCWjBJc1IwRkJlRUlzVlVGQmVVSXNSVUZCV1N4RlFVRkZMRVZCUVZrN1VVRkRMME1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1NVRkJTU3hGUVVGRkxHTkJRVThzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY0VNc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEySXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlN4VlFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSk8xbEJRMmhETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hKUVVGSkxFTkJRVU1zUTBGQlF5eExRVUZMTEV0QlFVc3NTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNNVJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRMklzUTBGQlF6dEpRVVZQTEhkQ1FVRlJMRWRCUVdoQ0xGVkJRV2xDTEVOQlFWY3NSVUZCUlN4SlFVRmpMRVZCUVVVc1JVRkJXU3hGUVVGRkxFdEJRVEpETzFGQlFYWkhMR2xDUVZWRE8xRkJWRWNzU1VGQlNTeFJRVUZSTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTNKQ0xFTkJRVU1zUTBGQlF5eGxRVUZsTEVOQlFVTXNTVUZCU1N4RlFVRkZMRlZCUVVNc1EwRkJReXhGUVVGRkxFbEJRVWs3V1VGRE5VSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1NVRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eEZRVUZGTEVsQlFVa3NTMEZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVOdVJUdG5Ra0ZEU1N4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRE8yZENRVU5vUWl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzJGQlEyeENPMUZCUTB3c1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFNDeFBRVUZQTEZGQlFWRXNRMEZCUXp0SlFVTndRaXhEUVVGRE8wbEJTVVFzTWtOQlFUSkNMRWRCUVROQ0xGVkJRVFJDTEVOQlFWY3NSVUZCUlN4RFFVRlhPMUZCUTJoRUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJRenRSUVVONlFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU4wUWl4UFFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRMUFzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5zUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETERKQ1FVRXlRaXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RFFVRkRPMmRDUVVONFJDeFBRVUZQTEVsQlFVa3NRMEZCUXp0VFFVTnVRanRSUVVORUxFOUJRVThzUzBGQlN5eERRVUZETzBsQlEycENMRU5CUVVNN1NVRkhUU3hYUVVGTExFZEJRVm9zVlVGQllTeERRVUZoTzFGQlMzUkNMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEycENMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNM1JTeERRVUZETzBsQlJXTXNjMEpCUVdkQ0xFZEJRUzlDTEZWQlFXZERMRkZCUVd0Q08xRkJRemxETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFGQlF6VkNMRU5CUVVNc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGNrTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRZaXhEUVVGRE8wbEJSMFFzTkVKQlFWa3NSMEZCV2l4VlFVRmhMRVZCUVZrc1JVRkJSU3hGUVVGWk8xRkJTMjVETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGRFTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTU3hGUVVGRk8xbEJRMW9zU1VGQlNTeEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU40UWl4UFFVRlBMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRUUVVOc1JEdFJRVVZFTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGRlJDd3lRa0ZCVnl4SFFVRllMRlZCUVZrc1EwRkJVU3hGUVVGRkxFTkJRV0VzUlVGQlJTeEpRVUZaTzFGQlF6ZERMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEyaENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRek5ETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYkVJc1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTTdXVUZEYWtJc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTjJRanRSUVVORUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEpRVU5zUXl4RFFVRkRPMGxCUlVRc2IwSkJRVWtzUjBGQlNqdFJRVU5KTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRiRU1zVDBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTlNMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUTJoQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExHVkJRV1VzUTBGQlF6dFpRVU42UXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMU5CUXpOQ08xRkJRMFFzVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWml4RFFVRkRPMGxCVTB3c1dVRkJRenRCUVVGRUxFTkJRVU1zUVVGc1MwUXNTVUZyUzBNN1FVRnNTMWtzYzBKQlFVczdRVUZ2UzJ4Q08wbEJSMGtzWjBKQlFXMUNMRVZCUVdNN1VVRkJaQ3hQUVVGRkxFZEJRVVlzUlVGQlJTeERRVUZaTzFGQlF6ZENMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYkVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlFpeFBRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTFJc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYWtJc1EwRkJReXhEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVMEZEYkVJN1NVRkRUQ3hEUVVGRE8wbEJSVVFzY1VKQlFVa3NSMEZCU2p0UlFVTkpMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGJFTXNUMEZCVHl4RFFVRkRMRVZCUVVVN1dVRkJSU3hIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dFJRVU4yUXl4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVObUxFTkJRVU03U1VGRlJDeDFRa0ZCVFN4SFFVRk9MRlZCUVU4c1EwRkJVVHRSUVVsWUxFTkJRVU1zUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRE9VSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZMZEVJc1EwRkJRenRKUVVWRUxIVkNRVUZOTEVkQlFVNHNWVUZCVHl4RFFVRlJPMUZCUzFnc1NVRkJTU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMmhETEVsQlFVa3NVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEYUVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNoQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEZOQlFWTXNSVUZCUlR0WlFVTnFRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU03V1VGRGJFTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETzFOQlNXNURPMGxCUTB3c1EwRkJRenRKUVVsRUxITkNRVUZMTEVkQlFVd3NWVUZCVFN4RFFVRmhPMUZCUTJZc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCU1hoRExFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU03VVVGRGJFUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSVHRaUVVNdlFpeERRVUZETEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdXVUZETVVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTnNRanRoUVVGTk8xbEJRMGdzUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZETTBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTnNRanRKUVV0TUxFTkJRVU03U1VGRlJDeDNRa0ZCVHl4SFFVRlFMRlZCUVZFc1EwRkJaME03VVVGRGNFTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZWtJc1EwRkJRenRKUVVkRUxIRkRRVUZ2UWl4SFFVRndRanRSUVVOSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUTBGQlF5eERRVUZETEhOQ1FVRnpRaXhGUVVGRkxFVkJRVEZDTEVOQlFUQkNMRU5CUVVNc1EwRkJRenRKUVVOMFJDeERRVUZETzBsQlIwUXNjMEpCUVVzc1IwRkJUQ3hWUVVGTkxGRkJRWE5DTzFGQlFUVkNMR2xDUVdWRE8xRkJaRWNzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhGUVVGRkxFTkJRVU03VVVGRE5VSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETzFsQlEyWXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzFsQlEzUkNMRWxCUVVrc1EwRkJReXhMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRTFCUVUwc1EwRkJReXh2UWtGQmIwSXNSVUZCUlR0blFrRkRiRVFzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8yZENRVU5xUWl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRVZCUVVVc1NVRkJSU3hQUVVGQkxFdEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVdZc1EwRkJaU3hEUVVGRExFTkJRVU03WjBKQlF6VkRMRXRCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTJZc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVdHdRanRSUVVOTUxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlExQXNRMEZCUXp0SlFXOUNUQ3hoUVVGRE8wRkJRVVFzUTBGQlF5eEJRV3hJUkN4SlFXdElRenRCUVd4SVdTeDNRa0ZCVFR0QlFXOUlia0k3U1VGUFNTeG5Ra0ZCYlVJc1JVRkJZeXhGUVVGVExFVkJRV2RDTzFGQlFYWkRMRTlCUVVVc1IwRkJSaXhGUVVGRkxFTkJRVms3VVVGQlV5eFBRVUZGTEVkQlFVWXNSVUZCUlN4RFFVRmpPMUZCUTNSRUxFbEJRVWtzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJJc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTTdXVUZEVWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVrMVFpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEySXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU03V1VGRFVpeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY0VJc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJTWGhDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTBnc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGTExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTFSQ3hKUVVGSkxFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJSVVFzY1VKQlFVa3NSMEZCU2p0UlFVTkpMRTlCUVU4c1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJTVVFzY1VOQlFXOUNMRWRCUVhCQ0xGVkJRWEZDTEVWQlFWazdVVUZETjBJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlN5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRha1VzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVVUZET1VJc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRV1FzUTBGQll5eERRVUZETEVOQlFVTTdTVUZET1VNc1EwRkJRenRKUVVWRUxHOURRVUZ0UWl4SFFVRnVRaXhWUVVGdlFpeEZRVUZaTzFGQlF6VkNMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTeXhQUVVGQkxFTkJRVU1zUTBGQlF5eGxRVUZsTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGNlFpeERRVUY1UWl4RFFVRkRMRU5CUVVNN1NVRkRla1FzUTBGQlF6dEpRVEpDVHl3MlFrRkJXU3hIUVVGd1FqdFJRVU5KTEVsQlFVa3NVVUZCVVN4SFFVRkhMRTFCUVUwc1EwRkJReXhUUVVGVExFVkJRek5DTEVOQlFVTXNSMEZCWlN4SlFVRkpMRVZCUTNCQ0xFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVTnFRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZEV2l4WFFVRlhMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM0JDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRlRUlzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMklzU1VGQlNTeERRVUZETEVOQlFVTXNZVUZCWVR0blFrRkJSU3hUUVVGVE8xbEJRemxDTEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU4wUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhSUVVGUkxFbEJRVWtzUzBGQlN5eEhRVUZITEZGQlFWRXNSVUZCUlR0blFrRkRhRU1zVVVGQlVTeEhRVUZITEV0QlFVc3NRMEZCUXp0blFrRkRha0lzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRUaXhYUVVGWExFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTm9RaXhKUVVGSkxFTkJRVU1zUTBGQlF5eFJRVUZSTzI5Q1FVRkZMRTFCUVUwN1lVRkRla0k3VTBGRFNqdFJRVU5FTEVsQlFVa3NWMEZCVnl4TFFVRkxMRU5CUVVNN1dVRkRha0lzUTBGQlF5eFJRVUZSTEVkQlFVY3NUVUZCVFN4RFFVRkRMR1ZCUVdVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVOc1JUdFpRVU5KTEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpGQ0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVOd1FqdFJRVU5FTEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTJJc1EwRkJRenRKUVVsRUxIZENRVUZQTEVkQlFWQTdVVUZEU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhGUVVGRkxFbEJRVWtzU1VGQlNTeEZRVUZGTzFsQlEycENMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xTkJRMnBETzFGQlNVUXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUXpkQ0xFbEJRVWtzUTBGQlF5eEhRVUZsTEVsQlFVa3NRMEZCUXp0UlFVTjZRaXhQUVVGUExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNTVUZCU1N4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFZEJRVWNzVFVGQlRTeERRVUZETEdWQlFXVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdFpRVU5xUnl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTTdXVUZOTVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTzJkQ1FVTllMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTNCQ08ybENRVUZOTzJkQ1FVTklMRWxCUVVrc1JVRkJSU3hEUVVGRExESkNRVUV5UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZPMjlDUVVWcVJDeERRVUZETEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJRenR2UWtGRGRrSXNVMEZCVXp0cFFrRkRXanRuUWtGRlJDeEpRVUZKTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8yZENRVU0zUXl4SlFVRkpMRXRCUVVzc1MwRkJTeXhKUVVGSkxFVkJRVVU3YjBKQlEyaENMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenR2UWtGRGVrSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMjlDUVVONlFpeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dHZRa0ZEYmtJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8ybENRVU40UXp0eFFrRkJUVHR2UWtGSlNDeERRVUZETEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJRenR2UWtGRGRrSXNVMEZCVXp0cFFrRkRXanRuUWtGRFJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFVkJRVVU3YjBKQlMyaENMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVONlFqdHhRa0ZCVFR0dlFrRkpTQ3hKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRwUWtGRGNFSTdZVUZEU2p0VFFVMUtPMGxCU1V3c1EwRkJRenRKUVVkRUxITkNRVUZMTEVkQlFVdzdVVUZEU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03VVVGRFppeEpRVUZKTEZGQlFWRXNSMEZCUnl4TlFVRk5MRU5CUVVNc1UwRkJVeXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8xRkJRM1pFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NUVUZCVFN4RlFVRkZPMWxCUTNaRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0WlFVTm1MRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRGFFSXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdVMEZEZWtJN1VVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCY0V0TkxESkNRVUZ2UWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRemRDTEhOQ1FVRmxMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU03U1VGdlMzQkRMR0ZCUVVNN1EwRkJRU3hCUVhwTFJDeEpRWGxMUXp0QlFYcExXU3gzUWtGQlRUdEJRV2xNYmtJc1UwRkJaMElzTWtKQlFUSkNMRU5CUVVNc1MwRkJaMFFzUlVGQlJTeFZRVUZ0UWl4RlFVRkZMRlZCUVcxQ08wbEJSMnhKTEVsQlFVMHNSVUZCUlN4SFFVRmxMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4SlFVRkpMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zWVVGQllTeERRVUZETEVWQlFUZENMRU5CUVRaQ0xFTkJRVU1zUTBGQlF6dEpRVU55UlN4SlFVRk5MRVZCUVVVc1IwRkJhVUlzUlVGQlJTeERRVUZETzBsQlF6VkNMRWxCUVUwc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZETlVJc1NVRkJUU3hKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpWRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4VlFVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUXpORk8wbEJRMFFzU1VGQlRTeFJRVUZSTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVOc1FpeFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGRGNrSXNXVUZCV1N4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVTm9ReXhoUVVGaExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlF6RkRMRWxCUVVrc1RVRkJUU3hIUVVGaExFbEJRVWtzUlVGQlJTeE5RVUZOTEVkQlFXRXNTVUZCU1N4RFFVRkRPMGxCUTNKRUxFbEJRVWtzVlVGQlZTeEZRVUZGTzFGQlExb3NUVUZCVFN4SFFVRkhMRWxCUVVrc1VVRkJVU3hEUVVGRExGVkJRVlVzUlVGQlJTeFJRVUZSTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRekZFTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRGFFSXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRE0wUTdTVUZEUkN4SlFVRkpMRlZCUVZVc1JVRkJSVHRSUVVOYUxFMUJRVTBzUjBGQlJ5eEpRVUZKTEZGQlFWRXNRMEZCUXl4VlFVRlZMRVZCUVVVc1UwRkJVeXhEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTXpSQ3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUTJoQ0xFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4VlFVRlZMRU5CUVVNc1UwRkJVeXhGUVVGRkxFMUJRVTBzUlVGQlJTeGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUXpkRU8wbEJRMFFzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEyaERMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dEpRVU5tTEU5QlFVODdVVUZEU0N4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCU1N4UFFVRkJMRU5CUVVNc1EwRkJReXhSUVVGUkxFVkJRVVVzUlVGQldpeERRVUZaTEVOQlFVTTdVVUZETlVRc1ZVRkJWU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1dVRkJXVHRSUVVNelJTeFZRVUZWTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhSUVVGUkxFVkJRVVVzUjBGQlJ5eGhRVUZoTzB0QlEyaEdMRU5CUVVNN1FVRkRUaXhEUVVGRE8wRkJhRU5FTEd0RlFXZERReUo5IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcclxuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbiAgICB9O1xyXG59KSgpO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBUcmVlQmFzZSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBUcmVlQmFzZSgpIHtcclxuICAgICAgICB0aGlzLmZpbmRJdGVyID0gZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgdmFyIHJlcyA9IHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgICAgIHZhciBpdGVyID0gdGhpcy5pdGVyYXRvcigpO1xyXG4gICAgICAgICAgICB3aGlsZSAocmVzICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYyA9IHRoaXMuX2NvbXBhcmF0b3IoZGF0YSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVyLl9jdXJzb3IgPSByZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVyLl9hbmNlc3RvcnMucHVzaChyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5nZXRfY2hpbGQoYyA+IDApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBUcmVlQmFzZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5fcm9vdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zaXplID0gMDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBUcmVlQmFzZS5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgd2hpbGUgKHJlcyAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgYyA9IHRoaXMuX2NvbXBhcmF0b3IoZGF0YSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICBpZiAoYyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5kYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzID0gcmVzLmdldF9jaGlsZChjID4gMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gICAgO1xyXG4gICAgVHJlZUJhc2UucHJvdG90eXBlLmxvd2VyQm91bmQgPSBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9ib3VuZChkYXRhLCB0aGlzLl9jb21wYXJhdG9yKTtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBUcmVlQmFzZS5wcm90b3R5cGUudXBwZXJCb3VuZCA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgdmFyIGNtcCA9IHRoaXMuX2NvbXBhcmF0b3I7XHJcbiAgICAgICAgZnVuY3Rpb24gcmV2ZXJzZV9jbXAoYSwgYikge1xyXG4gICAgICAgICAgICByZXR1cm4gY21wKGIsIGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fYm91bmQoZGF0YSwgcmV2ZXJzZV9jbXApO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIFRyZWVCYXNlLnByb3RvdHlwZS5taW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgaWYgKHJlcyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKHJlcy5sZWZ0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJlcyA9IHJlcy5sZWZ0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzLmRhdGE7XHJcbiAgICB9O1xyXG4gICAgO1xyXG4gICAgVHJlZUJhc2UucHJvdG90eXBlLm1heCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgcmVzID0gdGhpcy5fcm9vdDtcclxuICAgICAgICBpZiAocmVzID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB3aGlsZSAocmVzLnJpZ2h0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJlcyA9IHJlcy5yaWdodDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcy5kYXRhO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIFRyZWVCYXNlLnByb3RvdHlwZS5pdGVyYXRvciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMpO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIFRyZWVCYXNlLnByb3RvdHlwZS5lYWNoID0gZnVuY3Rpb24gKGNiKSB7XHJcbiAgICAgICAgdmFyIGl0ID0gdGhpcy5pdGVyYXRvcigpLCBkYXRhO1xyXG4gICAgICAgIHdoaWxlICgoZGF0YSA9IGl0Lm5leHQoKSkgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgY2IoZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIDtcclxuICAgIFRyZWVCYXNlLnByb3RvdHlwZS5yZWFjaCA9IGZ1bmN0aW9uIChjYikge1xyXG4gICAgICAgIHZhciBpdCA9IHRoaXMuaXRlcmF0b3IoKSwgZGF0YTtcclxuICAgICAgICB3aGlsZSAoKGRhdGEgPSBpdC5wcmV2KCkpICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNiKGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBUcmVlQmFzZS5wcm90b3R5cGUuX2JvdW5kID0gZnVuY3Rpb24gKGRhdGEsIGNtcCkge1xyXG4gICAgICAgIHZhciBjdXIgPSB0aGlzLl9yb290O1xyXG4gICAgICAgIHZhciBpdGVyID0gdGhpcy5pdGVyYXRvcigpO1xyXG4gICAgICAgIHdoaWxlIChjdXIgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIGMgPSB0aGlzLl9jb21wYXJhdG9yKGRhdGEsIGN1ci5kYXRhKTtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGl0ZXIuX2N1cnNvciA9IGN1cjtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGl0ZXIuX2FuY2VzdG9ycy5wdXNoKGN1cik7XHJcbiAgICAgICAgICAgIGN1ciA9IGN1ci5nZXRfY2hpbGQoYyA+IDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKHZhciBpID0gaXRlci5fYW5jZXN0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgICAgICAgIGN1ciA9IGl0ZXIuX2FuY2VzdG9yc1tpXTtcclxuICAgICAgICAgICAgaWYgKGNtcChkYXRhLCBjdXIuZGF0YSkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVyLl9jdXJzb3IgPSBjdXI7XHJcbiAgICAgICAgICAgICAgICBpdGVyLl9hbmNlc3RvcnMubGVuZ3RoID0gaTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGl0ZXIuX2FuY2VzdG9ycy5sZW5ndGggPSAwO1xyXG4gICAgICAgIHJldHVybiBpdGVyO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIHJldHVybiBUcmVlQmFzZTtcclxufSgpKTtcclxuZXhwb3J0cy5UcmVlQmFzZSA9IFRyZWVCYXNlO1xyXG52YXIgSXRlcmF0b3IgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gSXRlcmF0b3IodHJlZSkge1xyXG4gICAgICAgIHRoaXMuX3RyZWUgPSB0cmVlO1xyXG4gICAgICAgIHRoaXMuX2FuY2VzdG9ycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2N1cnNvciA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBJdGVyYXRvci5wcm90b3R5cGUuZGF0YSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY3Vyc29yICE9PSBudWxsID8gdGhpcy5fY3Vyc29yLmRhdGEgOiBudWxsO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIEl0ZXJhdG9yLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jdXJzb3IgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIHJvb3QgPSB0aGlzLl90cmVlLl9yb290O1xyXG4gICAgICAgICAgICBpZiAocm9vdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWluTm9kZShyb290KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnNvci5yaWdodCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNhdmU7XHJcbiAgICAgICAgICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2F2ZSA9IHRoaXMuX2N1cnNvcjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fYW5jZXN0b3JzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJzb3IgPSB0aGlzLl9hbmNlc3RvcnMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJzb3IgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IHdoaWxlICh0aGlzLl9jdXJzb3IucmlnaHQgPT09IHNhdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYW5jZXN0b3JzLnB1c2godGhpcy5fY3Vyc29yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21pbk5vZGUodGhpcy5fY3Vyc29yLnJpZ2h0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fY3Vyc29yICE9PSBudWxsID8gdGhpcy5fY3Vyc29yLmRhdGEgOiBudWxsO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIEl0ZXJhdG9yLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jdXJzb3IgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIHJvb3QgPSB0aGlzLl90cmVlLl9yb290O1xyXG4gICAgICAgICAgICBpZiAocm9vdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWF4Tm9kZShyb290KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnNvci5sZWZ0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2F2ZTtcclxuICAgICAgICAgICAgICAgIGRvIHtcclxuICAgICAgICAgICAgICAgICAgICBzYXZlID0gdGhpcy5fY3Vyc29yO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hbmNlc3RvcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnNvciA9IHRoaXMuX2FuY2VzdG9ycy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnNvciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKHRoaXMuX2N1cnNvci5sZWZ0ID09PSBzYXZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FuY2VzdG9ycy5wdXNoKHRoaXMuX2N1cnNvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXhOb2RlKHRoaXMuX2N1cnNvci5sZWZ0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fY3Vyc29yICE9PSBudWxsID8gdGhpcy5fY3Vyc29yLmRhdGEgOiBudWxsO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIEl0ZXJhdG9yLnByb3RvdHlwZS5fbWluTm9kZSA9IGZ1bmN0aW9uIChzdGFydCkge1xyXG4gICAgICAgIHdoaWxlIChzdGFydC5sZWZ0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FuY2VzdG9ycy5wdXNoKHN0YXJ0KTtcclxuICAgICAgICAgICAgc3RhcnQgPSBzdGFydC5sZWZ0O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jdXJzb3IgPSBzdGFydDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBJdGVyYXRvci5wcm90b3R5cGUuX21heE5vZGUgPSBmdW5jdGlvbiAoc3RhcnQpIHtcclxuICAgICAgICB3aGlsZSAoc3RhcnQucmlnaHQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fYW5jZXN0b3JzLnB1c2goc3RhcnQpO1xyXG4gICAgICAgICAgICBzdGFydCA9IHN0YXJ0LnJpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jdXJzb3IgPSBzdGFydDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICByZXR1cm4gSXRlcmF0b3I7XHJcbn0oKSk7XHJcbmV4cG9ydHMuSXRlcmF0b3IgPSBJdGVyYXRvcjtcclxudmFyIE5vZGUgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTm9kZShkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmxlZnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmlnaHQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIE5vZGUucHJvdG90eXBlLmdldF9jaGlsZCA9IGZ1bmN0aW9uIChkaXIpIHtcclxuICAgICAgICByZXR1cm4gZGlyID8gdGhpcy5yaWdodCA6IHRoaXMubGVmdDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBOb2RlLnByb3RvdHlwZS5zZXRfY2hpbGQgPSBmdW5jdGlvbiAoZGlyLCB2YWwpIHtcclxuICAgICAgICBpZiAoZGlyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmlnaHQgPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxlZnQgPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIDtcclxuICAgIHJldHVybiBOb2RlO1xyXG59KCkpO1xyXG52YXIgUkJUcmVlID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcclxuICAgIF9fZXh0ZW5kcyhSQlRyZWUsIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBSQlRyZWUoY29tcGFyYXRvcikge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XHJcbiAgICAgICAgX3RoaXMuX3Jvb3QgPSBudWxsO1xyXG4gICAgICAgIF90aGlzLl9jb21wYXJhdG9yID0gY29tcGFyYXRvcjtcclxuICAgICAgICBfdGhpcy5zaXplID0gMDtcclxuICAgICAgICByZXR1cm4gX3RoaXM7XHJcbiAgICB9XHJcbiAgICBSQlRyZWUucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgdmFyIHJldCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLl9yb290ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QgPSBuZXcgTm9kZShkYXRhKTtcclxuICAgICAgICAgICAgcmV0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zaXplKys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgaGVhZCA9IG5ldyBOb2RlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgIHZhciBkaXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIGxhc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIGdwID0gbnVsbDtcclxuICAgICAgICAgICAgdmFyIGdncCA9IGhlYWQ7XHJcbiAgICAgICAgICAgIHZhciBwID0gbnVsbDtcclxuICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9yb290O1xyXG4gICAgICAgICAgICBnZ3AucmlnaHQgPSB0aGlzLl9yb290O1xyXG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBub2RlID0gbmV3IE5vZGUoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcC5zZXRfY2hpbGQoZGlyLCBub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l6ZSsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoUkJUcmVlLmlzX3JlZChub2RlLmxlZnQpICYmIFJCVHJlZS5pc19yZWQobm9kZS5yaWdodCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBub2RlLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5sZWZ0LnJlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmlnaHQucmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoUkJUcmVlLmlzX3JlZChub2RlKSAmJiBSQlRyZWUuaXNfcmVkKHApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpcjIgPSBnZ3AucmlnaHQgPT09IGdwO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlID09PSBwLmdldF9jaGlsZChsYXN0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZ3Auc2V0X2NoaWxkKGRpcjIsIFJCVHJlZS5zaW5nbGVfcm90YXRlKGdwLCAhbGFzdCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2dwLnNldF9jaGlsZChkaXIyLCBSQlRyZWUuZG91YmxlX3JvdGF0ZShncCwgIWxhc3QpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgY21wID0gdGhpcy5fY29tcGFyYXRvcihub2RlLmRhdGEsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNtcCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGFzdCA9IGRpcjtcclxuICAgICAgICAgICAgICAgIGRpciA9IGNtcCA8IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3AgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBnZ3AgPSBncDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGdwID0gcDtcclxuICAgICAgICAgICAgICAgIHAgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUuZ2V0X2NoaWxkKGRpcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fcm9vdCA9IGhlYWQucmlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3Jvb3QucmVkID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBSQlRyZWUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Jvb3QgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgaGVhZCA9IG5ldyBOb2RlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdmFyIG5vZGUgPSBoZWFkO1xyXG4gICAgICAgIG5vZGUucmlnaHQgPSB0aGlzLl9yb290O1xyXG4gICAgICAgIHZhciBwID0gbnVsbDtcclxuICAgICAgICB2YXIgZ3AgPSBudWxsO1xyXG4gICAgICAgIHZhciBmb3VuZCA9IG51bGw7XHJcbiAgICAgICAgdmFyIGRpciA9IHRydWU7XHJcbiAgICAgICAgd2hpbGUgKG5vZGUuZ2V0X2NoaWxkKGRpcikgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIGxhc3QgPSBkaXI7XHJcbiAgICAgICAgICAgIGdwID0gcDtcclxuICAgICAgICAgICAgcCA9IG5vZGU7XHJcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLmdldF9jaGlsZChkaXIpO1xyXG4gICAgICAgICAgICB2YXIgY21wID0gdGhpcy5fY29tcGFyYXRvcihkYXRhLCBub2RlLmRhdGEpO1xyXG4gICAgICAgICAgICBkaXIgPSBjbXAgPiAwO1xyXG4gICAgICAgICAgICBpZiAoY21wID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3VuZCA9IG5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFSQlRyZWUuaXNfcmVkKG5vZGUpICYmICFSQlRyZWUuaXNfcmVkKG5vZGUuZ2V0X2NoaWxkKGRpcikpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoUkJUcmVlLmlzX3JlZChub2RlLmdldF9jaGlsZCghZGlyKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc3IgPSBSQlRyZWUuc2luZ2xlX3JvdGF0ZShub2RlLCBkaXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHAuc2V0X2NoaWxkKGxhc3QsIHNyKTtcclxuICAgICAgICAgICAgICAgICAgICBwID0gc3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghUkJUcmVlLmlzX3JlZChub2RlLmdldF9jaGlsZCghZGlyKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc2libGluZyA9IHAuZ2V0X2NoaWxkKCFsYXN0KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZyAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVJCVHJlZS5pc19yZWQoc2libGluZy5nZXRfY2hpbGQoIWxhc3QpKSAmJiAhUkJUcmVlLmlzX3JlZChzaWJsaW5nLmdldF9jaGlsZChsYXN0KSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAucmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWJsaW5nLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGlyMiA9IGdwLnJpZ2h0ID09PSBwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJCVHJlZS5pc19yZWQoc2libGluZy5nZXRfY2hpbGQobGFzdCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Auc2V0X2NoaWxkKGRpcjIsIFJCVHJlZS5kb3VibGVfcm90YXRlKHAsIGxhc3QpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFJCVHJlZS5pc19yZWQoc2libGluZy5nZXRfY2hpbGQoIWxhc3QpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwLnNldF9jaGlsZChkaXIyLCBSQlRyZWUuc2luZ2xlX3JvdGF0ZShwLCBsYXN0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3BjID0gZ3AuZ2V0X2NoaWxkKGRpcjIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGMubGVmdC5yZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwYy5yaWdodC5yZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZm91bmQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgZm91bmQuZGF0YSA9IG5vZGUuZGF0YTtcclxuICAgICAgICAgICAgcC5zZXRfY2hpbGQocC5yaWdodCA9PT0gbm9kZSwgbm9kZS5nZXRfY2hpbGQobm9kZS5sZWZ0ID09PSBudWxsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2l6ZS0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9yb290ID0gaGVhZC5yaWdodDtcclxuICAgICAgICBpZiAodGhpcy5fcm9vdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9yb290LnJlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZm91bmQgIT09IG51bGw7XHJcbiAgICB9O1xyXG4gICAgO1xyXG4gICAgUkJUcmVlLmlzX3JlZCA9IGZ1bmN0aW9uIChub2RlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGUgIT09IG51bGwgJiYgbm9kZS5yZWQ7XHJcbiAgICB9O1xyXG4gICAgUkJUcmVlLnNpbmdsZV9yb3RhdGUgPSBmdW5jdGlvbiAocm9vdCwgZGlyKSB7XHJcbiAgICAgICAgdmFyIHNhdmUgPSByb290LmdldF9jaGlsZCghZGlyKTtcclxuICAgICAgICByb290LnNldF9jaGlsZCghZGlyLCBzYXZlLmdldF9jaGlsZChkaXIpKTtcclxuICAgICAgICBzYXZlLnNldF9jaGlsZChkaXIsIHJvb3QpO1xyXG4gICAgICAgIHJvb3QucmVkID0gdHJ1ZTtcclxuICAgICAgICBzYXZlLnJlZCA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBzYXZlO1xyXG4gICAgfTtcclxuICAgIFJCVHJlZS5kb3VibGVfcm90YXRlID0gZnVuY3Rpb24gKHJvb3QsIGRpcikge1xyXG4gICAgICAgIHJvb3Quc2V0X2NoaWxkKCFkaXIsIFJCVHJlZS5zaW5nbGVfcm90YXRlKHJvb3QuZ2V0X2NoaWxkKCFkaXIpLCAhZGlyKSk7XHJcbiAgICAgICAgcmV0dXJuIFJCVHJlZS5zaW5nbGVfcm90YXRlKHJvb3QsIGRpcik7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFJCVHJlZTtcclxufShUcmVlQmFzZSkpO1xyXG5leHBvcnRzLlJCVHJlZSA9IFJCVHJlZTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21KMGNtVmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2VjJWaVEyOXNZUzl6Y21NdmNtSjBjbVZsTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdPenRCUVhWQ1NUdEpRVUZCTzFGQk5FSkpMR0ZCUVZFc1IwRkJSeXhWUVVGVkxFbEJRVWs3V1VGRGNrSXNTVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dFpRVU55UWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdXVUZGTTBJc1QwRkJUeXhIUVVGSExFdEJRVXNzU1VGQlNTeEZRVUZGTzJkQ1FVTnFRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUTNwRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlR0dlFrRkRWQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVkQlFVY3NRMEZCUXp0dlFrRkRia0lzVDBGQlR5eEpRVUZKTEVOQlFVTTdhVUpCUTJZN2NVSkJRMGs3YjBKQlEwUXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdiMEpCUXpGQ0xFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dHBRa0ZET1VJN1lVRkRTanRaUVVWRUxFOUJRVThzU1VGQlNTeERRVUZETzFGQlEyaENMRU5CUVVNc1EwRkJRenRKUVN0R1RpeERRVUZETzBsQmRrbEhMSGRDUVVGTExFZEJRVXc3VVVGRFNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOc1FpeERRVUZETzBsQlFVRXNRMEZCUXp0SlFVZEdMSFZDUVVGSkxFZEJRVW9zVlVGQlN5eEpRVUZKTzFGQlEwd3NTVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dFJRVVZ5UWl4UFFVRlBMRWRCUVVjc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGFrSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRM3BETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSVHRuUWtGRFZDeFBRVUZQTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNN1lVRkRia0k3YVVKQlEwazdaMEpCUTBRc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRemxDTzFOQlEwbzdVVUZGUkN4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlFVRXNRMEZCUXp0SlFYVkNSaXcyUWtGQlZTeEhRVUZXTEZWQlFWY3NTVUZCU1R0UlFVTllMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8wbEJReTlETEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUjBZc05rSkJRVlVzUjBGQlZpeFZRVUZYTEVsQlFVazdVVUZEV0N4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlJUTkNMRk5CUVZNc1YwRkJWeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEzSkNMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnlRaXhEUVVGRE8xRkJSVVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dEpRVU14UXl4RFFVRkRPMGxCUVVFc1EwRkJRenRKUVVkR0xITkNRVUZITEVkQlFVZzdVVUZEU1N4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzFGQlEzSkNMRWxCUVVrc1IwRkJSeXhMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU5rTEU5QlFVOHNTVUZCU1N4RFFVRkRPMU5CUTJZN1VVRkZSQ3hQUVVGUExFZEJRVWNzUTBGQlF5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUTNSQ0xFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRPMU5CUTJ4Q08xRkJSVVFzVDBGQlR5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTNCQ0xFTkJRVU03U1VGQlFTeERRVUZETzBsQlIwWXNjMEpCUVVjc1IwRkJTRHRSUVVOSkxFbEJRVWtzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNN1VVRkRja0lzU1VGQlNTeEhRVUZITEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUTJRc1QwRkJUeXhKUVVGSkxFTkJRVU03VTBGRFpqdFJRVVZFTEU5QlFVOHNSMEZCUnl4RFFVRkRMRXRCUVVzc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGRrSXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU03VTBGRGJrSTdVVUZGUkN4UFFVRlBMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRGNFSXNRMEZCUXp0SlFVRkJMRU5CUVVNN1NVRkpSaXd5UWtGQlVTeEhRVUZTTzFGQlEwa3NUMEZCVHl4SlFVRkpMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU01UWl4RFFVRkRPMGxCUVVFc1EwRkJRenRKUVVkR0xIVkNRVUZKTEVkQlFVb3NWVUZCU3l4RlFVRkZPMUZCUTBnc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJRenRSUVVNdlFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eExRVUZMTEVsQlFVa3NSVUZCUlR0WlFVTm9ReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVMEZEV2p0SlFVTk1MRU5CUVVNN1NVRkJRU3hEUVVGRE8wbEJSMFlzZDBKQlFVc3NSMEZCVEN4VlFVRk5MRVZCUVVVN1VVRkRTaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZCUVVVc1NVRkJTU3hEUVVGRE8xRkJReTlDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUTJoRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTmFPMGxCUTB3c1EwRkJRenRKUVVGQkxFTkJRVU03U1VGSFJpeDVRa0ZCVFN4SFFVRk9MRlZCUVU4c1NVRkJTU3hGUVVGRkxFZEJRVWM3VVVGRFdpeEpRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dFJRVVV6UWl4UFFVRlBMRWRCUVVjc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGFrSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRM3BETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSVHRuUWtGRFZDeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWRCUVVjc1EwRkJRenRuUWtGRGJrSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1lVRkRaanRaUVVORUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRekZDTEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTTVRanRSUVVWRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRGJFUXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZWtJc1NVRkJTU3hIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3WjBKQlEzcENMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUjBGQlJ5eERRVUZETzJkQ1FVTnVRaXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRek5DTEU5QlFVOHNTVUZCU1N4RFFVRkRPMkZCUTJZN1UwRkRTanRSUVVWRUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNelFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVU5PTEdWQlFVTTdRVUZCUkN4RFFVRkRMRUZCTlVsRUxFbEJORWxETzBGQk5VbFpMRFJDUVVGUk8wRkJOa2x5UWp0SlFVbEpMR3RDUVVGWkxFbEJRVWs3VVVGRFdpeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJRenRKUVVONFFpeERRVUZETzBsQlJVUXNkVUpCUVVrc1IwRkJTanRSUVVOSkxFOUJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNTMEZCU3l4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRE5VUXNRMEZCUXp0SlFVRkJMRU5CUVVNN1NVRkpSaXgxUWtGQlNTeEhRVUZLTzFGQlEwa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU4yUWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXp0WlFVTTFRaXhKUVVGSkxFbEJRVWtzUzBGQlN5eEpRVUZKTEVWQlFVVTdaMEpCUTJZc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0aFFVTjJRanRUUVVOS08yRkJRMGs3V1VGRFJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhMUVVGTExFbEJRVWtzUlVGQlJUdG5Ra0ZITjBJc1NVRkJTU3hKUVVGSkxFTkJRVU03WjBKQlExUXNSMEZCUnp0dlFrRkRReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0dlFrRkRjRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTFCUVUwc1JVRkJSVHQzUWtGRGVFSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPM0ZDUVVONFF6dDVRa0ZEU1R0M1FrRkRSQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXp0M1FrRkRjRUlzVFVGQlRUdHhRa0ZEVkR0cFFrRkRTaXhSUVVGUkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrc1JVRkJSVHRoUVVONlF6dHBRa0ZEU1R0blFrRkZSQ3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03WjBKQlEyNURMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRoUVVOeVF6dFRRVU5LTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1QwRkJUeXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0SlFVTTFSQ3hEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVWxHTEhWQ1FVRkpMRWRCUVVvN1VVRkRTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUTNaQ0xFbEJRVWtzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRE8xbEJRelZDTEVsQlFVa3NTVUZCU1N4TFFVRkxMRWxCUVVrc1JVRkJSVHRuUWtGRFppeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yRkJRM1pDTzFOQlEwbzdZVUZEU1R0WlFVTkVMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RlFVRkZPMmRDUVVNMVFpeEpRVUZKTEVsQlFVa3NRMEZCUXp0blFrRkRWQ3hIUVVGSE8yOUNRVU5ETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRE8yOUNRVU53UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTzNkQ1FVTjRRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03Y1VKQlEzaERPM2xDUVVOSk8zZENRVU5FTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRE8zZENRVU53UWl4TlFVRk5PM0ZDUVVOVU8ybENRVU5LTEZGQlFWRXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFdEJRVXNzU1VGQlNTeEZRVUZGTzJGQlEzaERPMmxDUVVOSk8yZENRVU5FTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0blFrRkRia01zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJGQlEzQkRPMU5CUTBvN1VVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFBRVUZQTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRelZFTEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUlVZc01rSkJRVkVzUjBGQlVpeFZRVUZUTEV0QlFVczdVVUZEVml4UFFVRlBMRXRCUVVzc1EwRkJReXhKUVVGSkxFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlEzaENMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMWxCUXpWQ0xFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRPMU5CUTNSQ08xRkJRMFFzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNN1NVRkRla0lzUTBGQlF6dEpRVUZCTEVOQlFVTTdTVUZGUml3eVFrRkJVU3hIUVVGU0xGVkJRVk1zUzBGQlN6dFJRVU5XTEU5QlFVOHNTMEZCU3l4RFFVRkRMRXRCUVVzc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGVrSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdXVUZETlVJc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTTdVMEZEZGtJN1VVRkRSQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXp0SlFVTjZRaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVU5PTEdWQlFVTTdRVUZCUkN4RFFVRkRMRUZCT1VaRUxFbEJPRVpETzBGQk9VWlpMRFJDUVVGUk8wRkJaMGR5UWp0SlFVdEpMR05CUVZrc1NVRkJTVHRSUVVOYUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJ4Q0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRPMGxCUTNCQ0xFTkJRVU03U1VGRlJDeDNRa0ZCVXl4SFFVRlVMRlZCUVZVc1IwRkJSenRSUVVOVUxFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTNoRExFTkJRVU03U1VGQlFTeERRVUZETzBsQlJVWXNkMEpCUVZNc1IwRkJWQ3hWUVVGVkxFZEJRVWNzUlVGQlJTeEhRVUZITzFGQlEyUXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkRUQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXp0VFFVTndRanRoUVVOSk8xbEJRMFFzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1UwRkRia0k3U1VGRFRDeERRVUZETzBsQlFVRXNRMEZCUXp0SlFVTk9MRmRCUVVNN1FVRkJSQ3hEUVVGRExFRkJlRUpFTEVsQmQwSkRPMEZCUlVRN1NVRkJLMElzTUVKQlFWRTdTVUZMYmtNc1owSkJRVmtzVlVGQmEwTTdVVUZCT1VNc1dVRkRTU3hwUWtGQlR5eFRRVWxXTzFGQlNFY3NTMEZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRGJFSXNTMEZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhWUVVGVkxFTkJRVU03VVVGRE9VSXNTMEZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU03TzBsQlEyeENMRU5CUVVNN1NVRkhSQ3gxUWtGQlRTeEhRVUZPTEZWQlFVOHNTVUZCU1R0UlFVTlFMRWxCUVVrc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVVZvUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlJYSkNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVUlzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXp0WlFVTllMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dFRRVU5tTzJGQlEwazdXVUZEUkN4SlFVRkpMRWxCUVVrc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0WlFVVXZRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEYUVJc1NVRkJTU3hKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETzFsQlIycENMRWxCUVVrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF6dFpRVU5rTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJRenRaUVVObUxFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXp0WlFVTmlMRWxCUVVrc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdXVUZEZEVJc1IwRkJSeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRPMWxCUjNaQ0xFOUJRVThzU1VGQlNTeEZRVUZGTzJkQ1FVTlVMRWxCUVVrc1NVRkJTU3hMUVVGTExFbEJRVWtzUlVGQlJUdHZRa0ZGWml4SlFVRkpMRWRCUVVjc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdiMEpCUTNSQ0xFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8yOUNRVU4yUWl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRE8yOUNRVU5ZTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRwUWtGRFpqdHhRa0ZEU1N4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMjlDUVVVMVJDeEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJRenR2UWtGRGFFSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETzI5Q1FVTjBRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNN2FVSkJRekZDTzJkQ1FVZEVMRWxCUVVrc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTzI5Q1FVTjZReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNTMEZCU3l4TFFVRkxMRVZCUVVVc1EwRkJRenR2UWtGRk5VSXNTVUZCU1N4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0M1FrRkROVUlzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8zRkNRVU40UkR0NVFrRkRTVHQzUWtGRFJDeEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03Y1VKQlEzaEVPMmxDUVVOS08yZENRVVZFTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGSE5VTXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhGUVVGRk8yOUNRVU5ZTEUxQlFVMDdhVUpCUTFRN1owSkJSVVFzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXp0blFrRkRXQ3hIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkhaQ3hKUVVGSkxFVkJRVVVzUzBGQlN5eEpRVUZKTEVWQlFVVTdiMEpCUTJJc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF6dHBRa0ZEV2p0blFrRkRSQ3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTlFMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU03WjBKQlExUXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdZVUZET1VJN1dVRkhSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNN1UwRkRNMEk3VVVGSFJDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRmRrSXNUMEZCVHl4SFFVRkhMRU5CUVVNN1NVRkRaaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVWRHTEhWQ1FVRk5MRWRCUVU0c1ZVRkJUeXhKUVVGSk8xRkJRMUFzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrc1JVRkJSVHRaUVVOeVFpeFBRVUZQTEV0QlFVc3NRMEZCUXp0VFFVTm9RanRSUVVWRUxFbEJRVWtzU1VGQlNTeEhRVUZITEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJReTlDTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOb1FpeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU03VVVGRGVFSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRMklzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJRc1NVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEycENMRWxCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVZtTEU5QlFVOHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eEpRVUZKTEVWQlFVVTdXVUZEYWtNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETzFsQlIyWXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOUUxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdXVUZEVkN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVVXpRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZGTlVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZIWkN4SlFVRkpMRWRCUVVjc1MwRkJTeXhEUVVGRExFVkJRVVU3WjBKQlExZ3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRoUVVOb1FqdFpRVWRFTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVN1owSkJRemRFTEVsQlFVa3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSVHR2UWtGRGNrTXNTVUZCU1N4RlFVRkZMRWRCUVVjc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN2IwSkJRM3BETEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzI5Q1FVTjBRaXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzJsQ1FVTldPM0ZDUVVOSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZPMjlDUVVNelF5eEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdiMEpCUTJwRExFbEJRVWtzVDBGQlR5eExRVUZMTEVsQlFVa3NSVUZCUlR0M1FrRkRiRUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJUczBRa0ZGY2tZc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTTdORUpCUTJRc1QwRkJUeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdORUpCUTI1Q0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRPM2xDUVVOdVFqczJRa0ZEU1RzMFFrRkRSQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4TFFVRkxMRU5CUVVNc1EwRkJRenMwUWtGRk1VSXNTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSVHRuUTBGRGVFTXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzVFVGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6czJRa0ZEY2tRN2FVTkJRMGtzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZPMmREUVVNNVF5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE96WkNRVU55UkRzMFFrRkhSQ3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE96UkNRVU0zUWl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6czBRa0ZEWml4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6czBRa0ZEYUVJc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRPelJDUVVOeVFpeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU03ZVVKQlEzcENPM0ZDUVVOS08ybENRVU5LTzJGQlEwbzdVMEZEU2p0UlFVZEVMRWxCUVVrc1MwRkJTeXhMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU5vUWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEZGtJc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5zUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03VTBGRFpqdFJRVWRFTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU40UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlEzSkNMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXp0VFFVTXhRanRSUVVWRUxFOUJRVThzUzBGQlN5eExRVUZMTEVsQlFVa3NRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVVZMTEdGQlFVMHNSMEZCWWl4VlFVRmpMRWxCUVVrN1VVRkRaQ3hQUVVGUExFbEJRVWtzUzBGQlN5eEpRVUZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJRenRKUVVOeVF5eERRVUZETzBsQlJVMHNiMEpCUVdFc1IwRkJjRUlzVlVGQmNVSXNTVUZCU1N4RlFVRkZMRWRCUVVjN1VVRkRNVUlzU1VGQlNTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlJXaERMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6RkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlRGQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJoQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUldwQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRkZUU3h2UWtGQllTeEhRVUZ3UWl4VlFVRnhRaXhKUVVGSkxFVkJRVVVzUjBGQlJ6dFJRVU14UWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEUxQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUlN4UFFVRlBMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpORExFTkJRVU03U1VGRFRDeGhRVUZETzBGQlFVUXNRMEZCUXl4QlFYSk5SQ3hEUVVFclFpeFJRVUZSTEVkQmNVMTBRenRCUVhKTldTeDNRa0ZCVFNKOSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgdnBzY18xID0gcmVxdWlyZShcIi4vdnBzY1wiKTtcclxudmFyIHJidHJlZV8xID0gcmVxdWlyZShcIi4vcmJ0cmVlXCIpO1xyXG5mdW5jdGlvbiBjb21wdXRlR3JvdXBCb3VuZHMoZykge1xyXG4gICAgZy5ib3VuZHMgPSB0eXBlb2YgZy5sZWF2ZXMgIT09IFwidW5kZWZpbmVkXCIgP1xyXG4gICAgICAgIGcubGVhdmVzLnJlZHVjZShmdW5jdGlvbiAociwgYykgeyByZXR1cm4gYy5ib3VuZHMudW5pb24ocik7IH0sIFJlY3RhbmdsZS5lbXB0eSgpKSA6XHJcbiAgICAgICAgUmVjdGFuZ2xlLmVtcHR5KCk7XHJcbiAgICBpZiAodHlwZW9mIGcuZ3JvdXBzICE9PSBcInVuZGVmaW5lZFwiKVxyXG4gICAgICAgIGcuYm91bmRzID0gZy5ncm91cHMucmVkdWNlKGZ1bmN0aW9uIChyLCBjKSB7IHJldHVybiBjb21wdXRlR3JvdXBCb3VuZHMoYykudW5pb24ocik7IH0sIGcuYm91bmRzKTtcclxuICAgIGcuYm91bmRzID0gZy5ib3VuZHMuaW5mbGF0ZShnLnBhZGRpbmcpO1xyXG4gICAgcmV0dXJuIGcuYm91bmRzO1xyXG59XHJcbmV4cG9ydHMuY29tcHV0ZUdyb3VwQm91bmRzID0gY29tcHV0ZUdyb3VwQm91bmRzO1xyXG52YXIgUmVjdGFuZ2xlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFJlY3RhbmdsZSh4LCBYLCB5LCBZKSB7XHJcbiAgICAgICAgdGhpcy54ID0geDtcclxuICAgICAgICB0aGlzLlggPSBYO1xyXG4gICAgICAgIHRoaXMueSA9IHk7XHJcbiAgICAgICAgdGhpcy5ZID0gWTtcclxuICAgIH1cclxuICAgIFJlY3RhbmdsZS5lbXB0eSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBSZWN0YW5nbGUoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKTsgfTtcclxuICAgIFJlY3RhbmdsZS5wcm90b3R5cGUuY3ggPSBmdW5jdGlvbiAoKSB7IHJldHVybiAodGhpcy54ICsgdGhpcy5YKSAvIDI7IH07XHJcbiAgICBSZWN0YW5nbGUucHJvdG90eXBlLmN5ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRoaXMueSArIHRoaXMuWSkgLyAyOyB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5vdmVybGFwWCA9IGZ1bmN0aW9uIChyKSB7XHJcbiAgICAgICAgdmFyIHV4ID0gdGhpcy5jeCgpLCB2eCA9IHIuY3goKTtcclxuICAgICAgICBpZiAodXggPD0gdnggJiYgci54IDwgdGhpcy5YKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5YIC0gci54O1xyXG4gICAgICAgIGlmICh2eCA8PSB1eCAmJiB0aGlzLnggPCByLlgpXHJcbiAgICAgICAgICAgIHJldHVybiByLlggLSB0aGlzLng7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5vdmVybGFwWSA9IGZ1bmN0aW9uIChyKSB7XHJcbiAgICAgICAgdmFyIHV5ID0gdGhpcy5jeSgpLCB2eSA9IHIuY3koKTtcclxuICAgICAgICBpZiAodXkgPD0gdnkgJiYgci55IDwgdGhpcy5ZKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ZIC0gci55O1xyXG4gICAgICAgIGlmICh2eSA8PSB1eSAmJiB0aGlzLnkgPCByLlkpXHJcbiAgICAgICAgICAgIHJldHVybiByLlkgLSB0aGlzLnk7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5zZXRYQ2VudHJlID0gZnVuY3Rpb24gKGN4KSB7XHJcbiAgICAgICAgdmFyIGR4ID0gY3ggLSB0aGlzLmN4KCk7XHJcbiAgICAgICAgdGhpcy54ICs9IGR4O1xyXG4gICAgICAgIHRoaXMuWCArPSBkeDtcclxuICAgIH07XHJcbiAgICBSZWN0YW5nbGUucHJvdG90eXBlLnNldFlDZW50cmUgPSBmdW5jdGlvbiAoY3kpIHtcclxuICAgICAgICB2YXIgZHkgPSBjeSAtIHRoaXMuY3koKTtcclxuICAgICAgICB0aGlzLnkgKz0gZHk7XHJcbiAgICAgICAgdGhpcy5ZICs9IGR5O1xyXG4gICAgfTtcclxuICAgIFJlY3RhbmdsZS5wcm90b3R5cGUud2lkdGggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuWCAtIHRoaXMueDtcclxuICAgIH07XHJcbiAgICBSZWN0YW5nbGUucHJvdG90eXBlLmhlaWdodCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ZIC0gdGhpcy55O1xyXG4gICAgfTtcclxuICAgIFJlY3RhbmdsZS5wcm90b3R5cGUudW5pb24gPSBmdW5jdGlvbiAocikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUmVjdGFuZ2xlKE1hdGgubWluKHRoaXMueCwgci54KSwgTWF0aC5tYXgodGhpcy5YLCByLlgpLCBNYXRoLm1pbih0aGlzLnksIHIueSksIE1hdGgubWF4KHRoaXMuWSwgci5ZKSk7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5saW5lSW50ZXJzZWN0aW9ucyA9IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5Mikge1xyXG4gICAgICAgIHZhciBzaWRlcyA9IFtbdGhpcy54LCB0aGlzLnksIHRoaXMuWCwgdGhpcy55XSxcclxuICAgICAgICAgICAgW3RoaXMuWCwgdGhpcy55LCB0aGlzLlgsIHRoaXMuWV0sXHJcbiAgICAgICAgICAgIFt0aGlzLlgsIHRoaXMuWSwgdGhpcy54LCB0aGlzLlldLFxyXG4gICAgICAgICAgICBbdGhpcy54LCB0aGlzLlksIHRoaXMueCwgdGhpcy55XV07XHJcbiAgICAgICAgdmFyIGludGVyc2VjdGlvbnMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgciA9IFJlY3RhbmdsZS5saW5lSW50ZXJzZWN0aW9uKHgxLCB5MSwgeDIsIHkyLCBzaWRlc1tpXVswXSwgc2lkZXNbaV1bMV0sIHNpZGVzW2ldWzJdLCBzaWRlc1tpXVszXSk7XHJcbiAgICAgICAgICAgIGlmIChyICE9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgaW50ZXJzZWN0aW9ucy5wdXNoKHsgeDogci54LCB5OiByLnkgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbnRlcnNlY3Rpb25zO1xyXG4gICAgfTtcclxuICAgIFJlY3RhbmdsZS5wcm90b3R5cGUucmF5SW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHgyLCB5Mikge1xyXG4gICAgICAgIHZhciBpbnRzID0gdGhpcy5saW5lSW50ZXJzZWN0aW9ucyh0aGlzLmN4KCksIHRoaXMuY3koKSwgeDIsIHkyKTtcclxuICAgICAgICByZXR1cm4gaW50cy5sZW5ndGggPiAwID8gaW50c1swXSA6IG51bGw7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS52ZXJ0aWNlcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7IHg6IHRoaXMueCwgeTogdGhpcy55IH0sXHJcbiAgICAgICAgICAgIHsgeDogdGhpcy5YLCB5OiB0aGlzLnkgfSxcclxuICAgICAgICAgICAgeyB4OiB0aGlzLlgsIHk6IHRoaXMuWSB9LFxyXG4gICAgICAgICAgICB7IHg6IHRoaXMueCwgeTogdGhpcy5ZIH1cclxuICAgICAgICBdO1xyXG4gICAgfTtcclxuICAgIFJlY3RhbmdsZS5saW5lSW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCkge1xyXG4gICAgICAgIHZhciBkeDEyID0geDIgLSB4MSwgZHgzNCA9IHg0IC0geDMsIGR5MTIgPSB5MiAtIHkxLCBkeTM0ID0geTQgLSB5MywgZGVub21pbmF0b3IgPSBkeTM0ICogZHgxMiAtIGR4MzQgKiBkeTEyO1xyXG4gICAgICAgIGlmIChkZW5vbWluYXRvciA9PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB2YXIgZHgzMSA9IHgxIC0geDMsIGR5MzEgPSB5MSAtIHkzLCBudW1hID0gZHgzNCAqIGR5MzEgLSBkeTM0ICogZHgzMSwgYSA9IG51bWEgLyBkZW5vbWluYXRvciwgbnVtYiA9IGR4MTIgKiBkeTMxIC0gZHkxMiAqIGR4MzEsIGIgPSBudW1iIC8gZGVub21pbmF0b3I7XHJcbiAgICAgICAgaWYgKGEgPj0gMCAmJiBhIDw9IDEgJiYgYiA+PSAwICYmIGIgPD0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgeDogeDEgKyBhICogZHgxMixcclxuICAgICAgICAgICAgICAgIHk6IHkxICsgYSAqIGR5MTJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5pbmZsYXRlID0gZnVuY3Rpb24gKHBhZCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUmVjdGFuZ2xlKHRoaXMueCAtIHBhZCwgdGhpcy5YICsgcGFkLCB0aGlzLnkgLSBwYWQsIHRoaXMuWSArIHBhZCk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFJlY3RhbmdsZTtcclxufSgpKTtcclxuZXhwb3J0cy5SZWN0YW5nbGUgPSBSZWN0YW5nbGU7XHJcbmZ1bmN0aW9uIG1ha2VFZGdlQmV0d2Vlbihzb3VyY2UsIHRhcmdldCwgYWgpIHtcclxuICAgIHZhciBzaSA9IHNvdXJjZS5yYXlJbnRlcnNlY3Rpb24odGFyZ2V0LmN4KCksIHRhcmdldC5jeSgpKSB8fCB7IHg6IHNvdXJjZS5jeCgpLCB5OiBzb3VyY2UuY3koKSB9LCB0aSA9IHRhcmdldC5yYXlJbnRlcnNlY3Rpb24oc291cmNlLmN4KCksIHNvdXJjZS5jeSgpKSB8fCB7IHg6IHRhcmdldC5jeCgpLCB5OiB0YXJnZXQuY3koKSB9LCBkeCA9IHRpLnggLSBzaS54LCBkeSA9IHRpLnkgLSBzaS55LCBsID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KSwgYWwgPSBsIC0gYWg7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHNvdXJjZUludGVyc2VjdGlvbjogc2ksXHJcbiAgICAgICAgdGFyZ2V0SW50ZXJzZWN0aW9uOiB0aSxcclxuICAgICAgICBhcnJvd1N0YXJ0OiB7IHg6IHNpLnggKyBhbCAqIGR4IC8gbCwgeTogc2kueSArIGFsICogZHkgLyBsIH1cclxuICAgIH07XHJcbn1cclxuZXhwb3J0cy5tYWtlRWRnZUJldHdlZW4gPSBtYWtlRWRnZUJldHdlZW47XHJcbmZ1bmN0aW9uIG1ha2VFZGdlVG8ocywgdGFyZ2V0LCBhaCkge1xyXG4gICAgdmFyIHRpID0gdGFyZ2V0LnJheUludGVyc2VjdGlvbihzLngsIHMueSk7XHJcbiAgICBpZiAoIXRpKVxyXG4gICAgICAgIHRpID0geyB4OiB0YXJnZXQuY3goKSwgeTogdGFyZ2V0LmN5KCkgfTtcclxuICAgIHZhciBkeCA9IHRpLnggLSBzLngsIGR5ID0gdGkueSAtIHMueSwgbCA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XHJcbiAgICByZXR1cm4geyB4OiB0aS54IC0gYWggKiBkeCAvIGwsIHk6IHRpLnkgLSBhaCAqIGR5IC8gbCB9O1xyXG59XHJcbmV4cG9ydHMubWFrZUVkZ2VUbyA9IG1ha2VFZGdlVG87XHJcbnZhciBOb2RlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIE5vZGUodiwgciwgcG9zKSB7XHJcbiAgICAgICAgdGhpcy52ID0gdjtcclxuICAgICAgICB0aGlzLnIgPSByO1xyXG4gICAgICAgIHRoaXMucG9zID0gcG9zO1xyXG4gICAgICAgIHRoaXMucHJldiA9IG1ha2VSQlRyZWUoKTtcclxuICAgICAgICB0aGlzLm5leHQgPSBtYWtlUkJUcmVlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTm9kZTtcclxufSgpKTtcclxudmFyIEV2ZW50ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEV2ZW50KGlzT3BlbiwgdiwgcG9zKSB7XHJcbiAgICAgICAgdGhpcy5pc09wZW4gPSBpc09wZW47XHJcbiAgICAgICAgdGhpcy52ID0gdjtcclxuICAgICAgICB0aGlzLnBvcyA9IHBvcztcclxuICAgIH1cclxuICAgIHJldHVybiBFdmVudDtcclxufSgpKTtcclxuZnVuY3Rpb24gY29tcGFyZUV2ZW50cyhhLCBiKSB7XHJcbiAgICBpZiAoYS5wb3MgPiBiLnBvcykge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gICAgaWYgKGEucG9zIDwgYi5wb3MpIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcbiAgICBpZiAoYS5pc09wZW4pIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcbiAgICBpZiAoYi5pc09wZW4pIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG59XHJcbmZ1bmN0aW9uIG1ha2VSQlRyZWUoKSB7XHJcbiAgICByZXR1cm4gbmV3IHJidHJlZV8xLlJCVHJlZShmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5wb3MgLSBiLnBvczsgfSk7XHJcbn1cclxudmFyIHhSZWN0ID0ge1xyXG4gICAgZ2V0Q2VudHJlOiBmdW5jdGlvbiAocikgeyByZXR1cm4gci5jeCgpOyB9LFxyXG4gICAgZ2V0T3BlbjogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIueTsgfSxcclxuICAgIGdldENsb3NlOiBmdW5jdGlvbiAocikgeyByZXR1cm4gci5ZOyB9LFxyXG4gICAgZ2V0U2l6ZTogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIud2lkdGgoKTsgfSxcclxuICAgIG1ha2VSZWN0OiBmdW5jdGlvbiAob3BlbiwgY2xvc2UsIGNlbnRlciwgc2l6ZSkgeyByZXR1cm4gbmV3IFJlY3RhbmdsZShjZW50ZXIgLSBzaXplIC8gMiwgY2VudGVyICsgc2l6ZSAvIDIsIG9wZW4sIGNsb3NlKTsgfSxcclxuICAgIGZpbmROZWlnaGJvdXJzOiBmaW5kWE5laWdoYm91cnNcclxufTtcclxudmFyIHlSZWN0ID0ge1xyXG4gICAgZ2V0Q2VudHJlOiBmdW5jdGlvbiAocikgeyByZXR1cm4gci5jeSgpOyB9LFxyXG4gICAgZ2V0T3BlbjogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIueDsgfSxcclxuICAgIGdldENsb3NlOiBmdW5jdGlvbiAocikgeyByZXR1cm4gci5YOyB9LFxyXG4gICAgZ2V0U2l6ZTogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIuaGVpZ2h0KCk7IH0sXHJcbiAgICBtYWtlUmVjdDogZnVuY3Rpb24gKG9wZW4sIGNsb3NlLCBjZW50ZXIsIHNpemUpIHsgcmV0dXJuIG5ldyBSZWN0YW5nbGUob3BlbiwgY2xvc2UsIGNlbnRlciAtIHNpemUgLyAyLCBjZW50ZXIgKyBzaXplIC8gMik7IH0sXHJcbiAgICBmaW5kTmVpZ2hib3VyczogZmluZFlOZWlnaGJvdXJzXHJcbn07XHJcbmZ1bmN0aW9uIGdlbmVyYXRlR3JvdXBDb25zdHJhaW50cyhyb290LCBmLCBtaW5TZXAsIGlzQ29udGFpbmVkKSB7XHJcbiAgICBpZiAoaXNDb250YWluZWQgPT09IHZvaWQgMCkgeyBpc0NvbnRhaW5lZCA9IGZhbHNlOyB9XHJcbiAgICB2YXIgcGFkZGluZyA9IHJvb3QucGFkZGluZywgZ24gPSB0eXBlb2Ygcm9vdC5ncm91cHMgIT09ICd1bmRlZmluZWQnID8gcm9vdC5ncm91cHMubGVuZ3RoIDogMCwgbG4gPSB0eXBlb2Ygcm9vdC5sZWF2ZXMgIT09ICd1bmRlZmluZWQnID8gcm9vdC5sZWF2ZXMubGVuZ3RoIDogMCwgY2hpbGRDb25zdHJhaW50cyA9ICFnbiA/IFtdXHJcbiAgICAgICAgOiByb290Lmdyb3Vwcy5yZWR1Y2UoZnVuY3Rpb24gKGNjcywgZykgeyByZXR1cm4gY2NzLmNvbmNhdChnZW5lcmF0ZUdyb3VwQ29uc3RyYWludHMoZywgZiwgbWluU2VwLCB0cnVlKSk7IH0sIFtdKSwgbiA9IChpc0NvbnRhaW5lZCA/IDIgOiAwKSArIGxuICsgZ24sIHZzID0gbmV3IEFycmF5KG4pLCBycyA9IG5ldyBBcnJheShuKSwgaSA9IDAsIGFkZCA9IGZ1bmN0aW9uIChyLCB2KSB7IHJzW2ldID0gcjsgdnNbaSsrXSA9IHY7IH07XHJcbiAgICBpZiAoaXNDb250YWluZWQpIHtcclxuICAgICAgICB2YXIgYiA9IHJvb3QuYm91bmRzLCBjID0gZi5nZXRDZW50cmUoYiksIHMgPSBmLmdldFNpemUoYikgLyAyLCBvcGVuID0gZi5nZXRPcGVuKGIpLCBjbG9zZSA9IGYuZ2V0Q2xvc2UoYiksIG1pbiA9IGMgLSBzICsgcGFkZGluZyAvIDIsIG1heCA9IGMgKyBzIC0gcGFkZGluZyAvIDI7XHJcbiAgICAgICAgcm9vdC5taW5WYXIuZGVzaXJlZFBvc2l0aW9uID0gbWluO1xyXG4gICAgICAgIGFkZChmLm1ha2VSZWN0KG9wZW4sIGNsb3NlLCBtaW4sIHBhZGRpbmcpLCByb290Lm1pblZhcik7XHJcbiAgICAgICAgcm9vdC5tYXhWYXIuZGVzaXJlZFBvc2l0aW9uID0gbWF4O1xyXG4gICAgICAgIGFkZChmLm1ha2VSZWN0KG9wZW4sIGNsb3NlLCBtYXgsIHBhZGRpbmcpLCByb290Lm1heFZhcik7XHJcbiAgICB9XHJcbiAgICBpZiAobG4pXHJcbiAgICAgICAgcm9vdC5sZWF2ZXMuZm9yRWFjaChmdW5jdGlvbiAobCkgeyByZXR1cm4gYWRkKGwuYm91bmRzLCBsLnZhcmlhYmxlKTsgfSk7XHJcbiAgICBpZiAoZ24pXHJcbiAgICAgICAgcm9vdC5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICB2YXIgYiA9IGcuYm91bmRzO1xyXG4gICAgICAgICAgICBhZGQoZi5tYWtlUmVjdChmLmdldE9wZW4oYiksIGYuZ2V0Q2xvc2UoYiksIGYuZ2V0Q2VudHJlKGIpLCBmLmdldFNpemUoYikpLCBnLm1pblZhcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB2YXIgY3MgPSBnZW5lcmF0ZUNvbnN0cmFpbnRzKHJzLCB2cywgZiwgbWluU2VwKTtcclxuICAgIGlmIChnbikge1xyXG4gICAgICAgIHZzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgdi5jT3V0ID0gW10sIHYuY0luID0gW107IH0pO1xyXG4gICAgICAgIGNzLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgYy5sZWZ0LmNPdXQucHVzaChjKSwgYy5yaWdodC5jSW4ucHVzaChjKTsgfSk7XHJcbiAgICAgICAgcm9vdC5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICB2YXIgZ2FwQWRqdXN0bWVudCA9IChnLnBhZGRpbmcgLSBmLmdldFNpemUoZy5ib3VuZHMpKSAvIDI7XHJcbiAgICAgICAgICAgIGcubWluVmFyLmNJbi5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLmdhcCArPSBnYXBBZGp1c3RtZW50OyB9KTtcclxuICAgICAgICAgICAgZy5taW5WYXIuY091dC5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IGMubGVmdCA9IGcubWF4VmFyOyBjLmdhcCArPSBnYXBBZGp1c3RtZW50OyB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBjaGlsZENvbnN0cmFpbnRzLmNvbmNhdChjcyk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuZXJhdGVDb25zdHJhaW50cyhycywgdmFycywgcmVjdCwgbWluU2VwKSB7XHJcbiAgICB2YXIgaSwgbiA9IHJzLmxlbmd0aDtcclxuICAgIHZhciBOID0gMiAqIG47XHJcbiAgICBjb25zb2xlLmFzc2VydCh2YXJzLmxlbmd0aCA+PSBuKTtcclxuICAgIHZhciBldmVudHMgPSBuZXcgQXJyYXkoTik7XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgdmFyIHIgPSByc1tpXTtcclxuICAgICAgICB2YXIgdiA9IG5ldyBOb2RlKHZhcnNbaV0sIHIsIHJlY3QuZ2V0Q2VudHJlKHIpKTtcclxuICAgICAgICBldmVudHNbaV0gPSBuZXcgRXZlbnQodHJ1ZSwgdiwgcmVjdC5nZXRPcGVuKHIpKTtcclxuICAgICAgICBldmVudHNbaSArIG5dID0gbmV3IEV2ZW50KGZhbHNlLCB2LCByZWN0LmdldENsb3NlKHIpKTtcclxuICAgIH1cclxuICAgIGV2ZW50cy5zb3J0KGNvbXBhcmVFdmVudHMpO1xyXG4gICAgdmFyIGNzID0gbmV3IEFycmF5KCk7XHJcbiAgICB2YXIgc2NhbmxpbmUgPSBtYWtlUkJUcmVlKCk7XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgTjsgKytpKSB7XHJcbiAgICAgICAgdmFyIGUgPSBldmVudHNbaV07XHJcbiAgICAgICAgdmFyIHYgPSBlLnY7XHJcbiAgICAgICAgaWYgKGUuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgIHNjYW5saW5lLmluc2VydCh2KTtcclxuICAgICAgICAgICAgcmVjdC5maW5kTmVpZ2hib3Vycyh2LCBzY2FubGluZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzY2FubGluZS5yZW1vdmUodik7XHJcbiAgICAgICAgICAgIHZhciBtYWtlQ29uc3RyYWludCA9IGZ1bmN0aW9uIChsLCByKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2VwID0gKHJlY3QuZ2V0U2l6ZShsLnIpICsgcmVjdC5nZXRTaXplKHIucikpIC8gMiArIG1pblNlcDtcclxuICAgICAgICAgICAgICAgIGNzLnB1c2gobmV3IHZwc2NfMS5Db25zdHJhaW50KGwudiwgci52LCBzZXApKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdmFyIHZpc2l0TmVpZ2hib3VycyA9IGZ1bmN0aW9uIChmb3J3YXJkLCByZXZlcnNlLCBta2Nvbikge1xyXG4gICAgICAgICAgICAgICAgdmFyIHUsIGl0ID0gdltmb3J3YXJkXS5pdGVyYXRvcigpO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKCh1ID0gaXRbZm9yd2FyZF0oKSkgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBta2Nvbih1LCB2KTtcclxuICAgICAgICAgICAgICAgICAgICB1W3JldmVyc2VdLnJlbW92ZSh2KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdmlzaXROZWlnaGJvdXJzKFwicHJldlwiLCBcIm5leHRcIiwgZnVuY3Rpb24gKHUsIHYpIHsgcmV0dXJuIG1ha2VDb25zdHJhaW50KHUsIHYpOyB9KTtcclxuICAgICAgICAgICAgdmlzaXROZWlnaGJvdXJzKFwibmV4dFwiLCBcInByZXZcIiwgZnVuY3Rpb24gKHUsIHYpIHsgcmV0dXJuIG1ha2VDb25zdHJhaW50KHYsIHUpOyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmFzc2VydChzY2FubGluZS5zaXplID09PSAwKTtcclxuICAgIHJldHVybiBjcztcclxufVxyXG5mdW5jdGlvbiBmaW5kWE5laWdoYm91cnModiwgc2NhbmxpbmUpIHtcclxuICAgIHZhciBmID0gZnVuY3Rpb24gKGZvcndhcmQsIHJldmVyc2UpIHtcclxuICAgICAgICB2YXIgaXQgPSBzY2FubGluZS5maW5kSXRlcih2KTtcclxuICAgICAgICB2YXIgdTtcclxuICAgICAgICB3aGlsZSAoKHUgPSBpdFtmb3J3YXJkXSgpKSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgdW92ZXJ2WCA9IHUuci5vdmVybGFwWCh2LnIpO1xyXG4gICAgICAgICAgICBpZiAodW92ZXJ2WCA8PSAwIHx8IHVvdmVydlggPD0gdS5yLm92ZXJsYXBZKHYucikpIHtcclxuICAgICAgICAgICAgICAgIHZbZm9yd2FyZF0uaW5zZXJ0KHUpO1xyXG4gICAgICAgICAgICAgICAgdVtyZXZlcnNlXS5pbnNlcnQodik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHVvdmVydlggPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgZihcIm5leHRcIiwgXCJwcmV2XCIpO1xyXG4gICAgZihcInByZXZcIiwgXCJuZXh0XCIpO1xyXG59XHJcbmZ1bmN0aW9uIGZpbmRZTmVpZ2hib3Vycyh2LCBzY2FubGluZSkge1xyXG4gICAgdmFyIGYgPSBmdW5jdGlvbiAoZm9yd2FyZCwgcmV2ZXJzZSkge1xyXG4gICAgICAgIHZhciB1ID0gc2NhbmxpbmUuZmluZEl0ZXIodilbZm9yd2FyZF0oKTtcclxuICAgICAgICBpZiAodSAhPT0gbnVsbCAmJiB1LnIub3ZlcmxhcFgodi5yKSA+IDApIHtcclxuICAgICAgICAgICAgdltmb3J3YXJkXS5pbnNlcnQodSk7XHJcbiAgICAgICAgICAgIHVbcmV2ZXJzZV0uaW5zZXJ0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmKFwibmV4dFwiLCBcInByZXZcIik7XHJcbiAgICBmKFwicHJldlwiLCBcIm5leHRcIik7XHJcbn1cclxuZnVuY3Rpb24gZ2VuZXJhdGVYQ29uc3RyYWludHMocnMsIHZhcnMpIHtcclxuICAgIHJldHVybiBnZW5lcmF0ZUNvbnN0cmFpbnRzKHJzLCB2YXJzLCB4UmVjdCwgMWUtNik7XHJcbn1cclxuZXhwb3J0cy5nZW5lcmF0ZVhDb25zdHJhaW50cyA9IGdlbmVyYXRlWENvbnN0cmFpbnRzO1xyXG5mdW5jdGlvbiBnZW5lcmF0ZVlDb25zdHJhaW50cyhycywgdmFycykge1xyXG4gICAgcmV0dXJuIGdlbmVyYXRlQ29uc3RyYWludHMocnMsIHZhcnMsIHlSZWN0LCAxZS02KTtcclxufVxyXG5leHBvcnRzLmdlbmVyYXRlWUNvbnN0cmFpbnRzID0gZ2VuZXJhdGVZQ29uc3RyYWludHM7XHJcbmZ1bmN0aW9uIGdlbmVyYXRlWEdyb3VwQ29uc3RyYWludHMocm9vdCkge1xyXG4gICAgcmV0dXJuIGdlbmVyYXRlR3JvdXBDb25zdHJhaW50cyhyb290LCB4UmVjdCwgMWUtNik7XHJcbn1cclxuZXhwb3J0cy5nZW5lcmF0ZVhHcm91cENvbnN0cmFpbnRzID0gZ2VuZXJhdGVYR3JvdXBDb25zdHJhaW50cztcclxuZnVuY3Rpb24gZ2VuZXJhdGVZR3JvdXBDb25zdHJhaW50cyhyb290KSB7XHJcbiAgICByZXR1cm4gZ2VuZXJhdGVHcm91cENvbnN0cmFpbnRzKHJvb3QsIHlSZWN0LCAxZS02KTtcclxufVxyXG5leHBvcnRzLmdlbmVyYXRlWUdyb3VwQ29uc3RyYWludHMgPSBnZW5lcmF0ZVlHcm91cENvbnN0cmFpbnRzO1xyXG5mdW5jdGlvbiByZW1vdmVPdmVybGFwcyhycykge1xyXG4gICAgdmFyIHZzID0gcnMubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiBuZXcgdnBzY18xLlZhcmlhYmxlKHIuY3goKSk7IH0pO1xyXG4gICAgdmFyIGNzID0gZ2VuZXJhdGVYQ29uc3RyYWludHMocnMsIHZzKTtcclxuICAgIHZhciBzb2x2ZXIgPSBuZXcgdnBzY18xLlNvbHZlcih2cywgY3MpO1xyXG4gICAgc29sdmVyLnNvbHZlKCk7XHJcbiAgICB2cy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBpKSB7IHJldHVybiByc1tpXS5zZXRYQ2VudHJlKHYucG9zaXRpb24oKSk7IH0pO1xyXG4gICAgdnMgPSBycy5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIG5ldyB2cHNjXzEuVmFyaWFibGUoci5jeSgpKTsgfSk7XHJcbiAgICBjcyA9IGdlbmVyYXRlWUNvbnN0cmFpbnRzKHJzLCB2cyk7XHJcbiAgICBzb2x2ZXIgPSBuZXcgdnBzY18xLlNvbHZlcih2cywgY3MpO1xyXG4gICAgc29sdmVyLnNvbHZlKCk7XHJcbiAgICB2cy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBpKSB7IHJldHVybiByc1tpXS5zZXRZQ2VudHJlKHYucG9zaXRpb24oKSk7IH0pO1xyXG59XHJcbmV4cG9ydHMucmVtb3ZlT3ZlcmxhcHMgPSByZW1vdmVPdmVybGFwcztcclxudmFyIEluZGV4ZWRWYXJpYWJsZSA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoSW5kZXhlZFZhcmlhYmxlLCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gSW5kZXhlZFZhcmlhYmxlKGluZGV4LCB3KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgMCwgdykgfHwgdGhpcztcclxuICAgICAgICBfdGhpcy5pbmRleCA9IGluZGV4O1xyXG4gICAgICAgIHJldHVybiBfdGhpcztcclxuICAgIH1cclxuICAgIHJldHVybiBJbmRleGVkVmFyaWFibGU7XHJcbn0odnBzY18xLlZhcmlhYmxlKSk7XHJcbmV4cG9ydHMuSW5kZXhlZFZhcmlhYmxlID0gSW5kZXhlZFZhcmlhYmxlO1xyXG52YXIgUHJvamVjdGlvbiA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQcm9qZWN0aW9uKG5vZGVzLCBncm91cHMsIHJvb3RHcm91cCwgY29uc3RyYWludHMsIGF2b2lkT3ZlcmxhcHMpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmIChyb290R3JvdXAgPT09IHZvaWQgMCkgeyByb290R3JvdXAgPSBudWxsOyB9XHJcbiAgICAgICAgaWYgKGNvbnN0cmFpbnRzID09PSB2b2lkIDApIHsgY29uc3RyYWludHMgPSBudWxsOyB9XHJcbiAgICAgICAgaWYgKGF2b2lkT3ZlcmxhcHMgPT09IHZvaWQgMCkgeyBhdm9pZE92ZXJsYXBzID0gZmFsc2U7IH1cclxuICAgICAgICB0aGlzLm5vZGVzID0gbm9kZXM7XHJcbiAgICAgICAgdGhpcy5ncm91cHMgPSBncm91cHM7XHJcbiAgICAgICAgdGhpcy5yb290R3JvdXAgPSByb290R3JvdXA7XHJcbiAgICAgICAgdGhpcy5hdm9pZE92ZXJsYXBzID0gYXZvaWRPdmVybGFwcztcclxuICAgICAgICB0aGlzLnZhcmlhYmxlcyA9IG5vZGVzLm1hcChmdW5jdGlvbiAodiwgaSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdi52YXJpYWJsZSA9IG5ldyBJbmRleGVkVmFyaWFibGUoaSwgMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGNvbnN0cmFpbnRzKVxyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKTtcclxuICAgICAgICBpZiAoYXZvaWRPdmVybGFwcyAmJiByb290R3JvdXAgJiYgdHlwZW9mIHJvb3RHcm91cC5ncm91cHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdi53aWR0aCB8fCAhdi5oZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB2LmJvdW5kcyA9IG5ldyBSZWN0YW5nbGUodi54LCB2LngsIHYueSwgdi55KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgdzIgPSB2LndpZHRoIC8gMiwgaDIgPSB2LmhlaWdodCAvIDI7XHJcbiAgICAgICAgICAgICAgICB2LmJvdW5kcyA9IG5ldyBSZWN0YW5nbGUodi54IC0gdzIsIHYueCArIHcyLCB2LnkgLSBoMiwgdi55ICsgaDIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29tcHV0ZUdyb3VwQm91bmRzKHJvb3RHcm91cCk7XHJcbiAgICAgICAgICAgIHZhciBpID0gbm9kZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICBncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMudmFyaWFibGVzW2ldID0gZy5taW5WYXIgPSBuZXcgSW5kZXhlZFZhcmlhYmxlKGkrKywgdHlwZW9mIGcuc3RpZmZuZXNzICE9PSBcInVuZGVmaW5lZFwiID8gZy5zdGlmZm5lc3MgOiAwLjAxKTtcclxuICAgICAgICAgICAgICAgIF90aGlzLnZhcmlhYmxlc1tpXSA9IGcubWF4VmFyID0gbmV3IEluZGV4ZWRWYXJpYWJsZShpKyssIHR5cGVvZiBnLnN0aWZmbmVzcyAhPT0gXCJ1bmRlZmluZWRcIiA/IGcuc3RpZmZuZXNzIDogMC4wMSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLmNyZWF0ZVNlcGFyYXRpb24gPSBmdW5jdGlvbiAoYykge1xyXG4gICAgICAgIHJldHVybiBuZXcgdnBzY18xLkNvbnN0cmFpbnQodGhpcy5ub2Rlc1tjLmxlZnRdLnZhcmlhYmxlLCB0aGlzLm5vZGVzW2MucmlnaHRdLnZhcmlhYmxlLCBjLmdhcCwgdHlwZW9mIGMuZXF1YWxpdHkgIT09IFwidW5kZWZpbmVkXCIgPyBjLmVxdWFsaXR5IDogZmFsc2UpO1xyXG4gICAgfTtcclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLm1ha2VGZWFzaWJsZSA9IGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoIXRoaXMuYXZvaWRPdmVybGFwcylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHZhciBheGlzID0gJ3gnLCBkaW0gPSAnd2lkdGgnO1xyXG4gICAgICAgIGlmIChjLmF4aXMgPT09ICd4JylcclxuICAgICAgICAgICAgYXhpcyA9ICd5JywgZGltID0gJ2hlaWdodCc7XHJcbiAgICAgICAgdmFyIHZzID0gYy5vZmZzZXRzLm1hcChmdW5jdGlvbiAobykgeyByZXR1cm4gX3RoaXMubm9kZXNbby5ub2RlXTsgfSkuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYVtheGlzXSAtIGJbYXhpc107IH0pO1xyXG4gICAgICAgIHZhciBwID0gbnVsbDtcclxuICAgICAgICB2cy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgIGlmIChwKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV4dFBvcyA9IHBbYXhpc10gKyBwW2RpbV07XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dFBvcyA+IHZbYXhpc10pIHtcclxuICAgICAgICAgICAgICAgICAgICB2W2F4aXNdID0gbmV4dFBvcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwID0gdjtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbiAgICBQcm9qZWN0aW9uLnByb3RvdHlwZS5jcmVhdGVBbGlnbm1lbnQgPSBmdW5jdGlvbiAoYykge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHUgPSB0aGlzLm5vZGVzW2Mub2Zmc2V0c1swXS5ub2RlXS52YXJpYWJsZTtcclxuICAgICAgICB0aGlzLm1ha2VGZWFzaWJsZShjKTtcclxuICAgICAgICB2YXIgY3MgPSBjLmF4aXMgPT09ICd4JyA/IHRoaXMueENvbnN0cmFpbnRzIDogdGhpcy55Q29uc3RyYWludHM7XHJcbiAgICAgICAgYy5vZmZzZXRzLnNsaWNlKDEpLmZvckVhY2goZnVuY3Rpb24gKG8pIHtcclxuICAgICAgICAgICAgdmFyIHYgPSBfdGhpcy5ub2Rlc1tvLm5vZGVdLnZhcmlhYmxlO1xyXG4gICAgICAgICAgICBjcy5wdXNoKG5ldyB2cHNjXzEuQ29uc3RyYWludCh1LCB2LCBvLm9mZnNldCwgdHJ1ZSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLmNyZWF0ZUNvbnN0cmFpbnRzID0gZnVuY3Rpb24gKGNvbnN0cmFpbnRzKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2YXIgaXNTZXAgPSBmdW5jdGlvbiAoYykgeyByZXR1cm4gdHlwZW9mIGMudHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgYy50eXBlID09PSAnc2VwYXJhdGlvbic7IH07XHJcbiAgICAgICAgdGhpcy54Q29uc3RyYWludHMgPSBjb25zdHJhaW50c1xyXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLmF4aXMgPT09IFwieFwiICYmIGlzU2VwKGMpOyB9KVxyXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBfdGhpcy5jcmVhdGVTZXBhcmF0aW9uKGMpOyB9KTtcclxuICAgICAgICB0aGlzLnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMuYXhpcyA9PT0gXCJ5XCIgJiYgaXNTZXAoYyk7IH0pXHJcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIF90aGlzLmNyZWF0ZVNlcGFyYXRpb24oYyk7IH0pO1xyXG4gICAgICAgIGNvbnN0cmFpbnRzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMudHlwZSA9PT0gJ2FsaWdubWVudCc7IH0pXHJcbiAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBfdGhpcy5jcmVhdGVBbGlnbm1lbnQoYyk7IH0pO1xyXG4gICAgfTtcclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLnNldHVwVmFyaWFibGVzQW5kQm91bmRzID0gZnVuY3Rpb24gKHgwLCB5MCwgZGVzaXJlZCwgZ2V0RGVzaXJlZCkge1xyXG4gICAgICAgIHRoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodiwgaSkge1xyXG4gICAgICAgICAgICBpZiAodi5maXhlZCkge1xyXG4gICAgICAgICAgICAgICAgdi52YXJpYWJsZS53ZWlnaHQgPSB2LmZpeGVkV2VpZ2h0ID8gdi5maXhlZFdlaWdodCA6IDEwMDA7XHJcbiAgICAgICAgICAgICAgICBkZXNpcmVkW2ldID0gZ2V0RGVzaXJlZCh2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHYudmFyaWFibGUud2VpZ2h0ID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgdyA9ICh2LndpZHRoIHx8IDApIC8gMiwgaCA9ICh2LmhlaWdodCB8fCAwKSAvIDI7XHJcbiAgICAgICAgICAgIHZhciBpeCA9IHgwW2ldLCBpeSA9IHkwW2ldO1xyXG4gICAgICAgICAgICB2LmJvdW5kcyA9IG5ldyBSZWN0YW5nbGUoaXggLSB3LCBpeCArIHcsIGl5IC0gaCwgaXkgKyBoKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbiAgICBQcm9qZWN0aW9uLnByb3RvdHlwZS54UHJvamVjdCA9IGZ1bmN0aW9uICh4MCwgeTAsIHgpIHtcclxuICAgICAgICBpZiAoIXRoaXMucm9vdEdyb3VwICYmICEodGhpcy5hdm9pZE92ZXJsYXBzIHx8IHRoaXMueENvbnN0cmFpbnRzKSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucHJvamVjdCh4MCwgeTAsIHgwLCB4LCBmdW5jdGlvbiAodikgeyByZXR1cm4gdi5weDsgfSwgdGhpcy54Q29uc3RyYWludHMsIGdlbmVyYXRlWEdyb3VwQ29uc3RyYWludHMsIGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LmJvdW5kcy5zZXRYQ2VudHJlKHhbdi52YXJpYWJsZS5pbmRleF0gPSB2LnZhcmlhYmxlLnBvc2l0aW9uKCkpOyB9LCBmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICB2YXIgeG1pbiA9IHhbZy5taW5WYXIuaW5kZXhdID0gZy5taW5WYXIucG9zaXRpb24oKTtcclxuICAgICAgICAgICAgdmFyIHhtYXggPSB4W2cubWF4VmFyLmluZGV4XSA9IGcubWF4VmFyLnBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHZhciBwMiA9IGcucGFkZGluZyAvIDI7XHJcbiAgICAgICAgICAgIGcuYm91bmRzLnggPSB4bWluIC0gcDI7XHJcbiAgICAgICAgICAgIGcuYm91bmRzLlggPSB4bWF4ICsgcDI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgUHJvamVjdGlvbi5wcm90b3R5cGUueVByb2plY3QgPSBmdW5jdGlvbiAoeDAsIHkwLCB5KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJvb3RHcm91cCAmJiAhdGhpcy55Q29uc3RyYWludHMpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb2plY3QoeDAsIHkwLCB5MCwgeSwgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHYucHk7IH0sIHRoaXMueUNvbnN0cmFpbnRzLCBnZW5lcmF0ZVlHcm91cENvbnN0cmFpbnRzLCBmdW5jdGlvbiAodikgeyByZXR1cm4gdi5ib3VuZHMuc2V0WUNlbnRyZSh5W3YudmFyaWFibGUuaW5kZXhdID0gdi52YXJpYWJsZS5wb3NpdGlvbigpKTsgfSwgZnVuY3Rpb24gKGcpIHtcclxuICAgICAgICAgICAgdmFyIHltaW4gPSB5W2cubWluVmFyLmluZGV4XSA9IGcubWluVmFyLnBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHZhciB5bWF4ID0geVtnLm1heFZhci5pbmRleF0gPSBnLm1heFZhci5wb3NpdGlvbigpO1xyXG4gICAgICAgICAgICB2YXIgcDIgPSBnLnBhZGRpbmcgLyAyO1xyXG4gICAgICAgICAgICBnLmJvdW5kcy55ID0geW1pbiAtIHAyO1xyXG4gICAgICAgICAgICA7XHJcbiAgICAgICAgICAgIGcuYm91bmRzLlkgPSB5bWF4ICsgcDI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgUHJvamVjdGlvbi5wcm90b3R5cGUucHJvamVjdEZ1bmN0aW9ucyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICh4MCwgeTAsIHgpIHsgcmV0dXJuIF90aGlzLnhQcm9qZWN0KHgwLCB5MCwgeCk7IH0sXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICh4MCwgeTAsIHkpIHsgcmV0dXJuIF90aGlzLnlQcm9qZWN0KHgwLCB5MCwgeSk7IH1cclxuICAgICAgICBdO1xyXG4gICAgfTtcclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLnByb2plY3QgPSBmdW5jdGlvbiAoeDAsIHkwLCBzdGFydCwgZGVzaXJlZCwgZ2V0RGVzaXJlZCwgY3MsIGdlbmVyYXRlQ29uc3RyYWludHMsIHVwZGF0ZU5vZGVCb3VuZHMsIHVwZGF0ZUdyb3VwQm91bmRzKSB7XHJcbiAgICAgICAgdGhpcy5zZXR1cFZhcmlhYmxlc0FuZEJvdW5kcyh4MCwgeTAsIGRlc2lyZWQsIGdldERlc2lyZWQpO1xyXG4gICAgICAgIGlmICh0aGlzLnJvb3RHcm91cCAmJiB0aGlzLmF2b2lkT3ZlcmxhcHMpIHtcclxuICAgICAgICAgICAgY29tcHV0ZUdyb3VwQm91bmRzKHRoaXMucm9vdEdyb3VwKTtcclxuICAgICAgICAgICAgY3MgPSBjcy5jb25jYXQoZ2VuZXJhdGVDb25zdHJhaW50cyh0aGlzLnJvb3RHcm91cCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNvbHZlKHRoaXMudmFyaWFibGVzLCBjcywgc3RhcnQsIGRlc2lyZWQpO1xyXG4gICAgICAgIHRoaXMubm9kZXMuZm9yRWFjaCh1cGRhdGVOb2RlQm91bmRzKTtcclxuICAgICAgICBpZiAodGhpcy5yb290R3JvdXAgJiYgdGhpcy5hdm9pZE92ZXJsYXBzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzLmZvckVhY2godXBkYXRlR3JvdXBCb3VuZHMpO1xyXG4gICAgICAgICAgICBjb21wdXRlR3JvdXBCb3VuZHModGhpcy5yb290R3JvdXApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBQcm9qZWN0aW9uLnByb3RvdHlwZS5zb2x2ZSA9IGZ1bmN0aW9uICh2cywgY3MsIHN0YXJ0aW5nLCBkZXNpcmVkKSB7XHJcbiAgICAgICAgdmFyIHNvbHZlciA9IG5ldyB2cHNjXzEuU29sdmVyKHZzLCBjcyk7XHJcbiAgICAgICAgc29sdmVyLnNldFN0YXJ0aW5nUG9zaXRpb25zKHN0YXJ0aW5nKTtcclxuICAgICAgICBzb2x2ZXIuc2V0RGVzaXJlZFBvc2l0aW9ucyhkZXNpcmVkKTtcclxuICAgICAgICBzb2x2ZXIuc29sdmUoKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUHJvamVjdGlvbjtcclxufSgpKTtcclxuZXhwb3J0cy5Qcm9qZWN0aW9uID0gUHJvamVjdGlvbjtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21WamRHRnVaMnhsTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dlYyVmlRMjlzWVM5emNtTXZjbVZqZEdGdVoyeGxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenM3T3pzN096dEJRVUZCTEN0Q1FVRnRSRHRCUVVOdVJDeHRRMEZCSzBJN1FVRnJRak5DTEZOQlFXZENMR3RDUVVGclFpeERRVUZETEVOQlFXdENPMGxCUTJwRUxFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hMUVVGTExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlEzaERMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFVTXNRMEZCV1N4RlFVRkZMRU5CUVVNc1NVRkJTeXhQUVVGQkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGcVFpeERRVUZwUWl4RlFVRkZMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVVc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzBsQlEzUkNMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZMTEZkQlFWYzdVVUZETDBJc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQll5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGRExFTkJRVmtzUlVGQlJTeERRVUZETEVsQlFVc3NUMEZCUVN4clFrRkJhMElzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVGxDTEVOQlFUaENMRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEzcEhMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlEzWkRMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU53UWl4RFFVRkRPMEZCVWtRc1owUkJVVU03UVVGRlJEdEpRVU5KTEcxQ1FVTlhMRU5CUVZNc1JVRkRWQ3hEUVVGVExFVkJRMVFzUTBGQlV5eEZRVU5VTEVOQlFWTTdVVUZJVkN4TlFVRkRMRWRCUVVRc1EwRkJReXhEUVVGUk8xRkJRMVFzVFVGQlF5eEhRVUZFTEVOQlFVTXNRMEZCVVR0UlFVTlVMRTFCUVVNc1IwRkJSQ3hEUVVGRExFTkJRVkU3VVVGRFZDeE5RVUZETEVkQlFVUXNRMEZCUXl4RFFVRlJPMGxCUVVrc1EwRkJRenRKUVVWc1FpeGxRVUZMTEVkQlFWb3NZMEZCTkVJc1QwRkJUeXhKUVVGSkxGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhGUVVGRkxFMUJRVTBzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hOUVVGTkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRk0wb3NjMEpCUVVVc1IwRkJSaXhqUVVGbExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlRsRExITkNRVUZGTEVkQlFVWXNZMEZCWlN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVU1UXl3MFFrRkJVU3hIUVVGU0xGVkJRVk1zUTBGQldUdFJRVU5xUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU5vUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVThzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMnhFTEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRiRVFzVDBGQlR5eERRVUZETEVOQlFVTTdTVUZEWWl4RFFVRkRPMGxCUlVRc05FSkJRVkVzUjBGQlVpeFZRVUZUTEVOQlFWazdVVUZEYWtJc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdVVUZEYUVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5zUkN4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMnhFTEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTJJc1EwRkJRenRKUVVWRUxEaENRVUZWTEVkQlFWWXNWVUZCVnl4RlFVRlZPMUZCUTJwQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRGVFSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03VVVGRFlpeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRKUVVOcVFpeERRVUZETzBsQlJVUXNPRUpCUVZVc1IwRkJWaXhWUVVGWExFVkJRVlU3VVVGRGFrSXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXp0UlFVTjRRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0UlFVTmlMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzBsQlEycENMRU5CUVVNN1NVRkZSQ3g1UWtGQlN5eEhRVUZNTzFGQlEwa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETTBJc1EwRkJRenRKUVVWRUxEQkNRVUZOTEVkQlFVNDdVVUZEU1N4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTXpRaXhEUVVGRE8wbEJSVVFzZVVKQlFVc3NSMEZCVEN4VlFVRk5MRU5CUVZrN1VVRkRaQ3hQUVVGUExFbEJRVWtzVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55U0N4RFFVRkRPMGxCVjBRc2NVTkJRV2xDTEVkQlFXcENMRlZCUVd0Q0xFVkJRVlVzUlVGQlJTeEZRVUZWTEVWQlFVVXNSVUZCVlN4RlFVRkZMRVZCUVZVN1VVRkROVVFzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY2tNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTJoRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzUkRMRWxCUVVrc1lVRkJZU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU4yUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM2hDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGRrY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTVHRuUWtGQlJTeGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFOQlF6RkVPMUZCUTBRc1QwRkJUeXhoUVVGaExFTkJRVU03U1VGRGVrSXNRMEZCUXp0SlFWVkVMRzFEUVVGbExFZEJRV1lzVlVGQlowSXNSVUZCVlN4RlFVRkZMRVZCUVZVN1VVRkRiRU1zU1VGQlNTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hKUVVGSkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRMmhGTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETzBsQlF6VkRMRU5CUVVNN1NVRkZSQ3cwUWtGQlVTeEhRVUZTTzFGQlEwa3NUMEZCVHp0WlFVTklMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVU3V1VGRGVFSXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSVHRaUVVONFFpeEZRVUZGTEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZPMWxCUTNoQ0xFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVTdVMEZCUXl4RFFVRkRPMGxCUTJ4RExFTkJRVU03U1VGRlRTd3dRa0ZCWjBJc1IwRkJka0lzVlVGRFNTeEZRVUZWTEVWQlFVVXNSVUZCVlN4RlFVTjBRaXhGUVVGVkxFVkJRVVVzUlVGQlZTeEZRVU4wUWl4RlFVRlZMRVZCUVVVc1JVRkJWU3hGUVVOMFFpeEZRVUZWTEVWQlFVVXNSVUZCVlR0UlFVTjBRaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRWxCUVVrc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEZRVU01UWl4SlFVRkpMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJTeEpRVUZKTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkRPVUlzVjBGQlZ5eEhRVUZITEVsQlFVa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU0xUXl4SlFVRkpMRmRCUVZjc1NVRkJTU3hEUVVGRE8xbEJRVVVzVDBGQlR5eEpRVUZKTEVOQlFVTTdVVUZEYkVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlN4SlFVRkpMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGRE9VSXNTVUZCU1N4SFFVRkhMRWxCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEVsQlFVa3NSVUZEYUVNc1EwRkJReXhIUVVGSExFbEJRVWtzUjBGQlJ5eFhRVUZYTEVWQlEzUkNMRWxCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEVsQlFVa3NSMEZCUnl4SlFVRkpMRVZCUTJoRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVkQlFVY3NWMEZCVnl4RFFVRkRPMUZCUXpOQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHRaUVVOMFF5eFBRVUZQTzJkQ1FVTklMRU5CUVVNc1JVRkJSU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVsQlFVazdaMEpCUTJoQ0xFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrN1lVRkRia0lzUTBGQlF6dFRRVU5NTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRhRUlzUTBGQlF6dEpRVVZFTERKQ1FVRlBMRWRCUVZBc1ZVRkJVU3hIUVVGWE8xRkJRMllzVDBGQlR5eEpRVUZKTEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEycEdMRU5CUVVNN1NVRkRUQ3huUWtGQlF6dEJRVUZFTEVOQlFVTXNRVUY0U0VRc1NVRjNTRU03UVVGNFNGa3NPRUpCUVZNN1FVRnhTWFJDTEZOQlFXZENMR1ZCUVdVc1EwRkJReXhOUVVGcFFpeEZRVUZGTEUxQlFXbENMRVZCUVVVc1JVRkJWVHRKUVVVMVJTeEpRVUZOTEVWQlFVVXNSMEZCUnl4TlFVRk5MRU5CUVVNc1pVRkJaU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNSVUZCUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVNM1JpeEZRVUZGTEVkQlFVY3NUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNUVUZCVFN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1JVRkRNMFlzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGRGFFSXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZEYUVJc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGJFUXNUMEZCVHp0UlFVTklMR3RDUVVGclFpeEZRVUZGTEVWQlFVVTdVVUZEZEVJc2EwSkJRV3RDTEVWQlFVVXNSVUZCUlR0UlFVTjBRaXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSVHRMUVVNdlJDeERRVUZCTzBGQlEwd3NRMEZCUXp0QlFWcEVMREJEUVZsRE8wRkJWMFFzVTBGQlowSXNWVUZCVlN4RFFVRkRMRU5CUVRKQ0xFVkJRVVVzVFVGQmFVSXNSVUZCUlN4RlFVRlZPMGxCUTJwR0xFbEJRVWtzUlVGQlJTeEhRVUZITEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNVU1zU1VGQlNTeERRVUZETEVWQlFVVTdVVUZCUlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXp0SlFVTnFSQ3hKUVVGSkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRMllzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGRFppeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJRenRKUVVOeVF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF6dEJRVU0xUkN4RFFVRkRPMEZCVUVRc1owTkJUME03UVVGRlJEdEpRVWxKTEdOQlFXMUNMRU5CUVZjc1JVRkJVeXhEUVVGWkxFVkJRVk1zUjBGQlZ6dFJRVUZ3UkN4TlFVRkRMRWRCUVVRc1EwRkJReXhEUVVGVk8xRkJRVk1zVFVGQlF5eEhRVUZFTEVOQlFVTXNRMEZCVnp0UlFVRlRMRkZCUVVjc1IwRkJTQ3hIUVVGSExFTkJRVkU3VVVGRGJrVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhWUVVGVkxFVkJRVVVzUTBGQlF6dFJRVU42UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExGVkJRVlVzUlVGQlJTeERRVUZETzBsQlF6ZENMRU5CUVVNN1NVRkRUQ3hYUVVGRE8wRkJRVVFzUTBGQlF5eEJRVkpFTEVsQlVVTTdRVUZGUkR0SlFVTkpMR1ZCUVcxQ0xFMUJRV1VzUlVGQlV5eERRVUZQTEVWQlFWTXNSMEZCVnp0UlFVRnVSQ3hYUVVGTkxFZEJRVTRzVFVGQlRTeERRVUZUTzFGQlFWTXNUVUZCUXl4SFFVRkVMRU5CUVVNc1EwRkJUVHRSUVVGVExGRkJRVWNzUjBGQlNDeEhRVUZITEVOQlFWRTdTVUZCUnl4RFFVRkRPMGxCUXpsRkxGbEJRVU03UVVGQlJDeERRVUZETEVGQlJrUXNTVUZGUXp0QlFVVkVMRk5CUVZNc1lVRkJZU3hEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTzBsQlEzSkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZPMUZCUTJZc1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRFdqdEpRVU5FTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTzFGQlEyWXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOaU8wbEJRMFFzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZPMUZCUlZZc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU5pTzBsQlEwUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8xRkJSVllzVDBGQlR5eERRVUZETEVOQlFVTTdTMEZEV2p0SlFVTkVMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRMklzUTBGQlF6dEJRVVZFTEZOQlFWTXNWVUZCVlR0SlFVTm1MRTlCUVU4c1NVRkJTU3hsUVVGTkxFTkJRVThzVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkxMRTlCUVVFc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRmlMRU5CUVdFc1EwRkJReXhEUVVGRE8wRkJRM0pFTEVOQlFVTTdRVUZYUkN4SlFVRkpMRXRCUVVzc1IwRkJhMEk3U1VGRGRrSXNVMEZCVXl4RlFVRkZMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRk9MRU5CUVUwN1NVRkRja0lzVDBGQlR5eEZRVUZGTEZWQlFVRXNRMEZCUXl4SlFVRkhMRTlCUVVFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlNDeERRVUZITzBsQlEyaENMRkZCUVZFc1JVRkJSU3hWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVnc1EwRkJSenRKUVVOcVFpeFBRVUZQTEVWQlFVVXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFWUXNRMEZCVXp0SlFVTjBRaXhSUVVGUkxFVkJRVVVzVlVGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFbEJRVXNzVDBGQlFTeEpRVUZKTEZOQlFWTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEVWQlFXaEZMRU5CUVdkRk8wbEJRM3BITEdOQlFXTXNSVUZCUlN4bFFVRmxPME5CUTJ4RExFTkJRVU03UVVGRlJpeEpRVUZKTEV0QlFVc3NSMEZCYTBJN1NVRkRka0lzVTBGQlV5eEZRVUZGTEZWQlFVRXNRMEZCUXl4SlFVRkhMRTlCUVVFc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZPTEVOQlFVMDdTVUZEY2tJc1QwRkJUeXhGUVVGRkxGVkJRVUVzUTBGQlF5eEpRVUZITEU5QlFVRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJTQ3hEUVVGSE8wbEJRMmhDTEZGQlFWRXNSVUZCUlN4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVZ3NRMEZCUnp0SlFVTnFRaXhQUVVGUExFVkJRVVVzVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVllzUTBGQlZUdEpRVU4yUWl4UlFVRlJMRVZCUVVVc1ZVRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4SlFVRkpMRWxCUVVzc1QwRkJRU3hKUVVGSkxGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEUxQlFVMHNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRV2hGTEVOQlFXZEZPMGxCUTNwSExHTkJRV01zUlVGQlJTeGxRVUZsTzBOQlEyeERMRU5CUVVNN1FVRkZSaXhUUVVGVExIZENRVUYzUWl4RFFVRkRMRWxCUVhGQ0xFVkJRVVVzUTBGQlowSXNSVUZCUlN4TlFVRmpMRVZCUVVVc1YwRkJORUk3U1VGQk5VSXNORUpCUVVFc1JVRkJRU3h0UWtGQk5FSTdTVUZGYmtnc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZEZEVJc1JVRkJSU3hIUVVGSExFOUJRVThzU1VGQlNTeERRVUZETEUxQlFVMHNTMEZCU3l4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRMmhGTEVWQlFVVXNSMEZCUnl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVTm9SU3huUWtGQlowSXNSMEZCYVVJc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdVVUZEZWtNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVVNc1IwRkJhVUlzUlVGQlJTeERRVUZETEVsQlFVc3NUMEZCUVN4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExIZENRVUYzUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVhoRUxFTkJRWGRFTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUXpWSExFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVOdVF5eEZRVUZGTEVkQlFXVXNTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRemRDTEVWQlFVVXNSMEZCWjBJc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlF6bENMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRMHdzUjBGQlJ5eEhRVUZITEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJUeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkJMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJReTlETEVsQlFVa3NWMEZCVnl4RlFVRkZPMUZCUldJc1NVRkJTU3hEUVVGRExFZEJRV01zU1VGQlNTeERRVUZETEUxQlFVMHNSVUZETVVJc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVONFF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGRE1VTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzVDBGQlR5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTNwRUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNaVUZCWlN4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVOc1F5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NSVUZCUlN4UFFVRlBMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZUVRc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGxRVUZsTEVkQlFVY3NSMEZCUnl4RFFVRkRPMUZCUTJ4RExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU16UkR0SlFVTkVMRWxCUVVrc1JVRkJSVHRSUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSkxFOUJRVUVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUY2UWl4RFFVRjVRaXhEUVVGRExFTkJRVU03U1VGRE5VUXNTVUZCU1N4RlFVRkZPMUZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTNwQ0xFbEJRVWtzUTBGQlF5eEhRVUZqTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1dVRkROVUlzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTjZSaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5JTEVsQlFVa3NSVUZCUlN4SFFVRkhMRzFDUVVGdFFpeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEyaEVMRWxCUVVrc1JVRkJSU3hGUVVGRk8xRkJRMG9zUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlFTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpkRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlFTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpsRUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJRenRaUVVOcVFpeEpRVUZKTEdGQlFXRXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZETVVRc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSkxFOUJRVUVzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4aFFVRmhMRVZCUVhSQ0xFTkJRWE5DTEVOQlFVTXNRMEZCUXp0WlFVTnNSQ3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU12UlN4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOT08wbEJRMFFzVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZGtNc1EwRkJRenRCUVVWRUxGTkJRVk1zYlVKQlFXMUNMRU5CUVVNc1JVRkJaU3hGUVVGRkxFbEJRV2RDTEVWQlF6RkVMRWxCUVcxQ0xFVkJRVVVzVFVGQll6dEpRVVZ1UXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXp0SlFVTnlRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJRc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMnBETEVsQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEycERMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJRM0JDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5rTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJoRUxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5vUkN4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRM3BFTzBsQlEwUXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dEpRVU16UWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUlVGQll5eERRVUZETzBsQlEycERMRWxCUVVrc1VVRkJVU3hIUVVGSExGVkJRVlVzUlVGQlJTeERRVUZETzBsQlF6VkNMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJRM0JDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExb3NTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8xbEJRMVlzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOdVFpeEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dFRRVU53UXp0aFFVRk5PMWxCUlVnc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnVRaXhKUVVGSkxHTkJRV01zUjBGQlJ5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMmRDUVVOMFFpeEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFMUJRVTBzUTBGQlF6dG5Ra0ZETDBRc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEdsQ1FVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE0wTXNRMEZCUXl4RFFVRkRPMWxCUTBZc1NVRkJTU3hsUVVGbExFZEJRVWNzVlVGQlF5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRXRCUVVzN1owSkJRekZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1owSkJRMnhETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4SlFVRkpMRVZCUVVVN2IwSkJRMnBETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlExb3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkRlRUk3V1VGRFRDeERRVUZETEVOQlFVTTdXVUZEUml4bFFVRmxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJRU3hqUVVGakxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRndRaXhEUVVGdlFpeERRVUZETEVOQlFVTTdXVUZEYUVVc1pVRkJaU3hEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzWTBGQll5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJjRUlzUTBGQmIwSXNRMEZCUXl4RFFVRkRPMU5CUTI1Rk8wdEJRMG83U1VGRFJDeFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEY0VNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRFpDeERRVUZETzBGQlJVUXNVMEZCVXl4bFFVRmxMRU5CUVVNc1EwRkJUeXhGUVVGRkxGRkJRWE5DTzBsQlEzQkVMRWxCUVVrc1EwRkJReXhIUVVGSExGVkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVODdVVUZEY2tJc1NVRkJTU3hGUVVGRkxFZEJRVWNzVVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNNVFpeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTk9MRTlCUVU4c1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGFrTXNTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMmhETEVsQlFVa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTzJkQ1FVTTVReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU55UWl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTNoQ08xbEJRMFFzU1VGQlNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4RlFVRkZPMmRDUVVOa0xFMUJRVTA3WVVGRFZEdFRRVU5LTzBsQlEwd3NRMEZCUXl4RFFVRkJPMGxCUTBRc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVTnNRaXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTNSQ0xFTkJRVU03UVVGRlJDeFRRVUZUTEdWQlFXVXNRMEZCUXl4RFFVRlBMRVZCUVVVc1VVRkJjMEk3U1VGRGNFUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1ZVRkJReXhQUVVGUExFVkJRVVVzVDBGQlR6dFJRVU55UWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhSUVVGUkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRGVFTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdXVUZEY2tNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOeVFpeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzaENPMGxCUTB3c1EwRkJReXhEUVVGQk8wbEJRMFFzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOc1FpeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRM1JDTEVOQlFVTTdRVUZGUkN4VFFVRm5RaXh2UWtGQmIwSXNRMEZCUXl4RlFVRmxMRVZCUVVVc1NVRkJaMEk3U1VGRGJFVXNUMEZCVHl4dFFrRkJiVUlzUTBGQlF5eEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU4wUkN4RFFVRkRPMEZCUmtRc2IwUkJSVU03UVVGRlJDeFRRVUZuUWl4dlFrRkJiMElzUTBGQlF5eEZRVUZsTEVWQlFVVXNTVUZCWjBJN1NVRkRiRVVzVDBGQlR5eHRRa0ZCYlVJc1EwRkJReXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOMFJDeERRVUZETzBGQlJrUXNiMFJCUlVNN1FVRkZSQ3hUUVVGblFpeDVRa0ZCZVVJc1EwRkJReXhKUVVGeFFqdEpRVU16UkN4UFFVRlBMSGRDUVVGM1FpeERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGRrUXNRMEZCUXp0QlFVWkVMRGhFUVVWRE8wRkJSVVFzVTBGQlowSXNlVUpCUVhsQ0xFTkJRVU1zU1VGQmNVSTdTVUZETTBRc1QwRkJUeXgzUWtGQmQwSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEzWkVMRU5CUVVNN1FVRkdSQ3c0UkVGRlF6dEJRVVZFTEZOQlFXZENMR05CUVdNc1EwRkJReXhGUVVGbE8wbEJRekZETEVsQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4SlFVRkpMR1ZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCY0VJc1EwRkJiMElzUTBGQlF5eERRVUZETzBsQlF6TkRMRWxCUVVrc1JVRkJSU3hIUVVGSExHOUNRVUZ2UWl4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEpRVU4wUXl4SlFVRkpMRTFCUVUwc1IwRkJSeXhKUVVGSkxHRkJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkRhRU1zVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMGxCUTJZc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJRU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eEZRVUU1UWl4RFFVRTRRaXhEUVVGRExFTkJRVU03U1VGRGNrUXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4SlFVRkpMR1ZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCY0VJc1EwRkJiMElzUTBGQlF5eERRVUZETzBsQlEzUkRMRVZCUVVVc1IwRkJSeXh2UWtGQmIwSXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGJFTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1lVRkJUU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTTFRaXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdTVUZEWml4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU3l4UFFVRkJMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFVkJRVGxDTEVOQlFUaENMRU5CUVVNc1EwRkJRenRCUVVONlJDeERRVUZETzBGQldFUXNkME5CVjBNN1FVRmhSRHRKUVVGeFF5eHRRMEZCVVR0SlFVTjZReXg1UWtGQmJVSXNTMEZCWVN4RlFVRkZMRU5CUVZNN1VVRkJNME1zV1VGRFNTeHJRa0ZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExGTkJRMlE3VVVGR2EwSXNWMEZCU3l4SFFVRk1MRXRCUVVzc1EwRkJVVHM3U1VGRmFFTXNRMEZCUXp0SlFVTk1MSE5DUVVGRE8wRkJRVVFzUTBGQlF5eEJRVXBFTEVOQlFYRkRMR1ZCUVZFc1IwRkpOVU03UVVGS1dTd3dRMEZCWlR0QlFVMDFRanRKUVV0SkxHOUNRVUZ2UWl4TFFVRnJRaXhGUVVNeFFpeE5RVUY1UWl4RlFVTjZRaXhUUVVGcFF5eEZRVU42UXl4WFFVRjNRaXhGUVVOb1FpeGhRVUU0UWp0UlFVb3hReXhwUWtFNFFrTTdVVUUxUWxjc01FSkJRVUVzUlVGQlFTeG5Ra0ZCYVVNN1VVRkRla01zTkVKQlFVRXNSVUZCUVN4clFrRkJkMEk3VVVGRGFFSXNPRUpCUVVFc1JVRkJRU3h4UWtGQk9FSTdVVUZLZEVJc1ZVRkJTeXhIUVVGTUxFdEJRVXNzUTBGQllUdFJRVU14UWl4WFFVRk5MRWRCUVU0c1RVRkJUU3hEUVVGdFFqdFJRVU42UWl4alFVRlRMRWRCUVZRc1UwRkJVeXhEUVVGM1FqdFJRVVZxUXl4clFrRkJZU3hIUVVGaUxHRkJRV0VzUTBGQmFVSTdVVUZGZEVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRE5VSXNUMEZCVHl4RFFVRkRMRU5CUVVNc1VVRkJVU3hIUVVGSExFbEJRVWtzWlVGQlpTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOc1JDeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVklMRWxCUVVrc1YwRkJWenRaUVVGRkxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVVZ5UkN4SlFVRkpMR0ZCUVdFc1NVRkJTU3hUUVVGVExFbEJRVWtzVDBGQlR5eFRRVUZUTEVOQlFVTXNUVUZCVFN4TFFVRkxMRmRCUVZjc1JVRkJSVHRaUVVOMlJTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJRenRuUWtGRE1VSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVTjZRanR2UWtGRlF5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRE4wTXNUMEZCVHp0cFFrRkRVRHRuUWtGRFl5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzaERMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU55UlN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOSUxHdENRVUZyUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xbEJRemxDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU03V1VGRGNrSXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU03WjBKQlExb3NTMEZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1pVRkJaU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRMRk5CUVZNc1MwRkJTeXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnFTQ3hMUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeGxRVUZsTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zVTBGQlV5eExRVUZMTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkRja2dzUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEVGp0SlFVTk1MRU5CUVVNN1NVRkhUeXh4UTBGQlowSXNSMEZCZUVJc1ZVRkJlVUlzUTBGQlRUdFJRVU16UWl4UFFVRlBMRWxCUVVrc2FVSkJRVlVzUTBGRGFrSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVN4RlFVTXpRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhSUVVGUkxFVkJRelZDTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUTB3c1QwRkJUeXhEUVVGRExFTkJRVU1zVVVGQlVTeExRVUZMTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRhRVVzUTBGQlF6dEpRVWRQTEdsRFFVRlpMRWRCUVhCQ0xGVkJRWEZDTEVOQlFVMDdVVUZCTTBJc2FVSkJhVUpETzFGQmFFSkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllUdFpRVUZGTEU5QlFVODdVVUZGYUVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSMEZCUnl4UFFVRlBMRU5CUVVNN1VVRkRPVUlzU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRWRCUVVjN1dVRkJSU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSMEZCUnl4UlFVRlJMRU5CUVVNN1VVRkRMME1zU1VGQlNTeEZRVUZGTEVkQlFXZENMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1MwRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVd4Q0xFTkJRV3RDTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCYWtJc1EwRkJhVUlzUTBGQlF5eERRVUZETzFGQlF5OUdMRWxCUVVrc1EwRkJReXhIUVVGakxFbEJRVWtzUTBGQlF6dFJRVU40UWl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF6dFpRVVZTTEVsQlFVa3NRMEZCUXl4RlFVRkZPMmRDUVVOSUxFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUXk5Q0xFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHR2UWtGRGJrSXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFOUJRVThzUTBGQlF6dHBRa0ZEY2tJN1lVRkRTanRaUVVORUxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEVml4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOUUxFTkJRVU03U1VGRlR5eHZRMEZCWlN4SFFVRjJRaXhWUVVGM1FpeERRVUZOTzFGQlFUbENMR2xDUVZGRE8xRkJVRWNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF6dFJRVU12UXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkNMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRE8xRkJRMmhGTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNN1dVRkRlRUlzU1VGQlNTeERRVUZETEVkQlFVY3NTMEZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRPMWxCUTNCRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4cFFrRkJWU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyeEVMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMUFzUTBGQlF6dEpRVVZQTEhORFFVRnBRaXhIUVVGNlFpeFZRVUV3UWl4WFFVRnJRanRSUVVFMVF5eHBRa0ZYUXp0UlFWWkhMRWxCUVVrc1MwRkJTeXhIUVVGSExGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1NVRkJTU3hMUVVGTExGZEJRVmNzU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRmxCUVZrc1JVRkJlRVFzUTBGQmQwUXNRMEZCUXp0UlFVTXhSU3hKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEZkQlFWYzdZVUZETVVJc1RVRkJUU3hEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRXhRaXhEUVVFd1FpeERRVUZETzJGQlEzWkRMRWRCUVVjc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEV0QlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCZUVJc1EwRkJkMElzUTBGQlF5eERRVUZETzFGQlEzaERMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzVjBGQlZ6dGhRVU14UWl4TlFVRk5MRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFURkNMRU5CUVRCQ0xFTkJRVU03WVVGRGRrTXNSMEZCUnl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSkxFOUJRVUVzUzBGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUY0UWl4RFFVRjNRaXhEUVVGRExFTkJRVU03VVVGRGVFTXNWMEZCVnp0aFFVTk9MRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEVOQlFVTXNRMEZCUXl4SlFVRkpMRXRCUVVzc1YwRkJWeXhGUVVGMFFpeERRVUZ6UWl4RFFVRkRPMkZCUTI1RExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCU1N4UFFVRkJMRXRCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFYWkNMRU5CUVhWQ0xFTkJRVU1zUTBGQlF6dEpRVU12UXl4RFFVRkRPMGxCUlU4c05FTkJRWFZDTEVkQlFTOUNMRlZCUVdkRExFVkJRVmtzUlVGQlJTeEZRVUZaTEVWQlFVVXNUMEZCYVVJc1JVRkJSU3hWUVVGdlF6dFJRVU12Unl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUTNCQ0xFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlR0blFrRkRWQ3hEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03WjBKQlEzcEVMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRPVUk3YVVKQlFVMDdaMEpCUTBnc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMkZCUTNwQ08xbEJRMFFzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOd1JDeEpRVUZKTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNelFpeERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1UwRkJVeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNM1JDeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTlFMRU5CUVVNN1NVRkZSQ3cyUWtGQlVTeEhRVUZTTEZWQlFWTXNSVUZCV1N4RlFVRkZMRVZCUVZrc1JVRkJSU3hEUVVGWE8xRkJRelZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03V1VGQlJTeFBRVUZQTzFGQlF6RkZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxGVkJRVUVzUTBGQlF5eEpRVUZITEU5QlFVRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJTaXhEUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4NVFrRkJlVUlzUlVGRE9VVXNWVUZCUVN4RFFVRkRMRWxCUVVrc1QwRkJRU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVcxQ0xFTkJRVU1zUTBGQlF5eFJRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4RlFVRnVSaXhEUVVGdFJpeEZRVU40Uml4VlFVRkJMRU5CUVVNN1dVRkRSeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFXMUNMRU5CUVVNc1EwRkJReXhOUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dFpRVU4wUlN4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVzFDTEVOQlFVTXNRMEZCUXl4TlFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRaUVVOMFJTeEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU4yUWl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMWxCUTNaQ0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRE0wSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRXQ3hEUVVGRE8wbEJSVVFzTmtKQlFWRXNSMEZCVWl4VlFVRlRMRVZCUVZrc1JVRkJSU3hGUVVGWkxFVkJRVVVzUTBGQlZ6dFJRVU0xUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpPMWxCUVVVc1QwRkJUenRSUVVOc1JDeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVb3NRMEZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzZVVKQlFYbENMRVZCUXpsRkxGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZ0UWl4RFFVRkRMRU5CUVVNc1VVRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUlVGQmJrWXNRMEZCYlVZc1JVRkRlRVlzVlVGQlFTeERRVUZETzFsQlEwY3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGdFFpeERRVUZETEVOQlFVTXNUVUZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1dVRkRkRVVzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRnRRaXhEUVVGRExFTkJRVU1zVFVGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdXVUZEZEVVc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRka0lzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dFpRVUZCTEVOQlFVTTdXVUZEZUVJc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVNelFpeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTllMRU5CUVVNN1NVRkZSQ3h4UTBGQlowSXNSMEZCYUVJN1VVRkJRU3hwUWtGTFF6dFJRVXBITEU5QlFVODdXVUZEU0N4VlFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNTMEZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRjRRaXhEUVVGM1FqdFpRVU4yUXl4VlFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNTMEZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRjRRaXhEUVVGM1FqdFRRVU14UXl4RFFVRkRPMGxCUTA0c1EwRkJRenRKUVVWUExEUkNRVUZQTEVkQlFXWXNWVUZCWjBJc1JVRkJXU3hGUVVGRkxFVkJRVmtzUlVGQlJTeExRVUZsTEVWQlFVVXNUMEZCYVVJc1JVRkRNVVVzVlVGQmIwTXNSVUZEY0VNc1JVRkJaMElzUlVGRGFFSXNiVUpCUVhsRUxFVkJRM3BFTEdkQ1FVRjFReXhGUVVOMlF5eHBRa0ZCT0VNN1VVRkZPVU1zU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNUMEZCVHl4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRekZFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTzFsQlEzUkRMR3RDUVVGclFpeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRaUVVOdVF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU4yUkR0UlFVTkVMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFGQlF5OURMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU03VVVGRGNrTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFbEJRVWtzUTBGQlF5eGhRVUZoTEVWQlFVVTdXVUZEZEVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF6dFpRVU4yUXl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1UwRkRkRU03U1VGRFRDeERRVUZETzBsQlJVOHNNRUpCUVVzc1IwRkJZaXhWUVVGakxFVkJRV01zUlVGQlJTeEZRVUZuUWl4RlFVRkZMRkZCUVd0Q0xFVkJRVVVzVDBGQmFVSTdVVUZEYWtZc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeGhRVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRMmhETEUxQlFVMHNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UlFVTjBReXhOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRGNFTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8wbEJRMjVDTEVOQlFVTTdTVUZEVEN4cFFrRkJRenRCUVVGRUxFTkJRVU1zUVVGc1MwUXNTVUZyUzBNN1FVRnNTMWtzWjBOQlFWVWlmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIFBhaXJpbmdIZWFwID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFBhaXJpbmdIZWFwKGVsZW0pIHtcclxuICAgICAgICB0aGlzLmVsZW0gPSBlbGVtO1xyXG4gICAgICAgIHRoaXMuc3ViaGVhcHMgPSBbXTtcclxuICAgIH1cclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChzZWxlY3Rvcikge1xyXG4gICAgICAgIHZhciBzdHIgPSBcIlwiLCBuZWVkQ29tbWEgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3ViaGVhcHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgdmFyIHN1YmhlYXAgPSB0aGlzLnN1YmhlYXBzW2ldO1xyXG4gICAgICAgICAgICBpZiAoIXN1YmhlYXAuZWxlbSkge1xyXG4gICAgICAgICAgICAgICAgbmVlZENvbW1hID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobmVlZENvbW1hKSB7XHJcbiAgICAgICAgICAgICAgICBzdHIgPSBzdHIgKyBcIixcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdHIgPSBzdHIgKyBzdWJoZWFwLnRvU3RyaW5nKHNlbGVjdG9yKTtcclxuICAgICAgICAgICAgbmVlZENvbW1hID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHN0ciAhPT0gXCJcIikge1xyXG4gICAgICAgICAgICBzdHIgPSBcIihcIiArIHN0ciArIFwiKVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKHRoaXMuZWxlbSA/IHNlbGVjdG9yKHRoaXMuZWxlbSkgOiBcIlwiKSArIHN0cjtcclxuICAgIH07XHJcbiAgICBQYWlyaW5nSGVhcC5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVtcHR5KCkpIHtcclxuICAgICAgICAgICAgZih0aGlzLmVsZW0sIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLnN1YmhlYXBzLmZvckVhY2goZnVuY3Rpb24gKHMpIHsgcmV0dXJuIHMuZm9yRWFjaChmKTsgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5jb3VudCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbXB0eSgpID8gMCA6IDEgKyB0aGlzLnN1YmhlYXBzLnJlZHVjZShmdW5jdGlvbiAobiwgaCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbiArIGguY291bnQoKTtcclxuICAgICAgICB9LCAwKTtcclxuICAgIH07XHJcbiAgICBQYWlyaW5nSGVhcC5wcm90b3R5cGUubWluID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZW07XHJcbiAgICB9O1xyXG4gICAgUGFpcmluZ0hlYXAucHJvdG90eXBlLmVtcHR5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZW0gPT0gbnVsbDtcclxuICAgIH07XHJcbiAgICBQYWlyaW5nSGVhcC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiAoaCkge1xyXG4gICAgICAgIGlmICh0aGlzID09PSBoKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3ViaGVhcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3ViaGVhcHNbaV0uY29udGFpbnMoaCkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5pc0hlYXAgPSBmdW5jdGlvbiAobGVzc1RoYW4pIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN1YmhlYXBzLmV2ZXJ5KGZ1bmN0aW9uIChoKSB7IHJldHVybiBsZXNzVGhhbihfdGhpcy5lbGVtLCBoLmVsZW0pICYmIGguaXNIZWFwKGxlc3NUaGFuKTsgfSk7XHJcbiAgICB9O1xyXG4gICAgUGFpcmluZ0hlYXAucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uIChvYmosIGxlc3NUaGFuKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2UobmV3IFBhaXJpbmdIZWFwKG9iaiksIGxlc3NUaGFuKTtcclxuICAgIH07XHJcbiAgICBQYWlyaW5nSGVhcC5wcm90b3R5cGUubWVyZ2UgPSBmdW5jdGlvbiAoaGVhcDIsIGxlc3NUaGFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1wdHkoKSlcclxuICAgICAgICAgICAgcmV0dXJuIGhlYXAyO1xyXG4gICAgICAgIGVsc2UgaWYgKGhlYXAyLmVtcHR5KCkpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIGVsc2UgaWYgKGxlc3NUaGFuKHRoaXMuZWxlbSwgaGVhcDIuZWxlbSkpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJoZWFwcy5wdXNoKGhlYXAyKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBoZWFwMi5zdWJoZWFwcy5wdXNoKHRoaXMpO1xyXG4gICAgICAgICAgICByZXR1cm4gaGVhcDI7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5yZW1vdmVNaW4gPSBmdW5jdGlvbiAobGVzc1RoYW4pIHtcclxuICAgICAgICBpZiAodGhpcy5lbXB0eSgpKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1lcmdlUGFpcnMobGVzc1RoYW4pO1xyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5tZXJnZVBhaXJzID0gZnVuY3Rpb24gKGxlc3NUaGFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3ViaGVhcHMubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUGFpcmluZ0hlYXAobnVsbCk7XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5zdWJoZWFwcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJoZWFwc1swXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBmaXJzdFBhaXIgPSB0aGlzLnN1YmhlYXBzLnBvcCgpLm1lcmdlKHRoaXMuc3ViaGVhcHMucG9wKCksIGxlc3NUaGFuKTtcclxuICAgICAgICAgICAgdmFyIHJlbWFpbmluZyA9IHRoaXMubWVyZ2VQYWlycyhsZXNzVGhhbik7XHJcbiAgICAgICAgICAgIHJldHVybiBmaXJzdFBhaXIubWVyZ2UocmVtYWluaW5nLCBsZXNzVGhhbik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5kZWNyZWFzZUtleSA9IGZ1bmN0aW9uIChzdWJoZWFwLCBuZXdWYWx1ZSwgc2V0SGVhcE5vZGUsIGxlc3NUaGFuKSB7XHJcbiAgICAgICAgdmFyIG5ld0hlYXAgPSBzdWJoZWFwLnJlbW92ZU1pbihsZXNzVGhhbik7XHJcbiAgICAgICAgc3ViaGVhcC5lbGVtID0gbmV3SGVhcC5lbGVtO1xyXG4gICAgICAgIHN1YmhlYXAuc3ViaGVhcHMgPSBuZXdIZWFwLnN1YmhlYXBzO1xyXG4gICAgICAgIGlmIChzZXRIZWFwTm9kZSAhPT0gbnVsbCAmJiBuZXdIZWFwLmVsZW0gIT09IG51bGwpIHtcclxuICAgICAgICAgICAgc2V0SGVhcE5vZGUoc3ViaGVhcC5lbGVtLCBzdWJoZWFwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHBhaXJpbmdOb2RlID0gbmV3IFBhaXJpbmdIZWFwKG5ld1ZhbHVlKTtcclxuICAgICAgICBpZiAoc2V0SGVhcE5vZGUgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgc2V0SGVhcE5vZGUobmV3VmFsdWUsIHBhaXJpbmdOb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2UocGFpcmluZ05vZGUsIGxlc3NUaGFuKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUGFpcmluZ0hlYXA7XHJcbn0oKSk7XHJcbmV4cG9ydHMuUGFpcmluZ0hlYXAgPSBQYWlyaW5nSGVhcDtcclxudmFyIFByaW9yaXR5UXVldWUgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gUHJpb3JpdHlRdWV1ZShsZXNzVGhhbikge1xyXG4gICAgICAgIHRoaXMubGVzc1RoYW4gPSBsZXNzVGhhbjtcclxuICAgIH1cclxuICAgIFByaW9yaXR5UXVldWUucHJvdG90eXBlLnRvcCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5lbXB0eSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5yb290LmVsZW07XHJcbiAgICB9O1xyXG4gICAgUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgYXJncyA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHBhaXJpbmdOb2RlO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBhcmc7IGFyZyA9IGFyZ3NbaV07ICsraSkge1xyXG4gICAgICAgICAgICBwYWlyaW5nTm9kZSA9IG5ldyBQYWlyaW5nSGVhcChhcmcpO1xyXG4gICAgICAgICAgICB0aGlzLnJvb3QgPSB0aGlzLmVtcHR5KCkgP1xyXG4gICAgICAgICAgICAgICAgcGFpcmluZ05vZGUgOiB0aGlzLnJvb3QubWVyZ2UocGFpcmluZ05vZGUsIHRoaXMubGVzc1RoYW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFpcmluZ05vZGU7XHJcbiAgICB9O1xyXG4gICAgUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuZW1wdHkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLnJvb3QgfHwgIXRoaXMucm9vdC5lbGVtO1xyXG4gICAgfTtcclxuICAgIFByaW9yaXR5UXVldWUucHJvdG90eXBlLmlzSGVhcCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yb290LmlzSGVhcCh0aGlzLmxlc3NUaGFuKTtcclxuICAgIH07XHJcbiAgICBQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gKGYpIHtcclxuICAgICAgICB0aGlzLnJvb3QuZm9yRWFjaChmKTtcclxuICAgIH07XHJcbiAgICBQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1wdHkoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG9iaiA9IHRoaXMucm9vdC5taW4oKTtcclxuICAgICAgICB0aGlzLnJvb3QgPSB0aGlzLnJvb3QucmVtb3ZlTWluKHRoaXMubGVzc1RoYW4pO1xyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9O1xyXG4gICAgUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucmVkdWNlS2V5ID0gZnVuY3Rpb24gKGhlYXBOb2RlLCBuZXdLZXksIHNldEhlYXBOb2RlKSB7XHJcbiAgICAgICAgaWYgKHNldEhlYXBOb2RlID09PSB2b2lkIDApIHsgc2V0SGVhcE5vZGUgPSBudWxsOyB9XHJcbiAgICAgICAgdGhpcy5yb290ID0gdGhpcy5yb290LmRlY3JlYXNlS2V5KGhlYXBOb2RlLCBuZXdLZXksIHNldEhlYXBOb2RlLCB0aGlzLmxlc3NUaGFuKTtcclxuICAgIH07XHJcbiAgICBQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChzZWxlY3Rvcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvb3QudG9TdHJpbmcoc2VsZWN0b3IpO1xyXG4gICAgfTtcclxuICAgIFByaW9yaXR5UXVldWUucHJvdG90eXBlLmNvdW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvb3QuY291bnQoKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUHJpb3JpdHlRdWV1ZTtcclxufSgpKTtcclxuZXhwb3J0cy5Qcmlvcml0eVF1ZXVlID0gUHJpb3JpdHlRdWV1ZTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY0hGMVpYVmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2VjJWaVEyOXNZUzl6Y21NdmNIRjFaWFZsTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRMEU3U1VGSlNTeHhRa0ZCYlVJc1NVRkJUenRSUVVGUUxGTkJRVWtzUjBGQlNpeEpRVUZKTEVOQlFVYzdVVUZEZEVJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdTVUZEZGtJc1EwRkJRenRKUVVWTkxEaENRVUZSTEVkQlFXWXNWVUZCWjBJc1VVRkJVVHRSUVVOd1FpeEpRVUZKTEVkQlFVY3NSMEZCUnl4RlFVRkZMRVZCUVVVc1UwRkJVeXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVU5vUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZETTBNc1NVRkJTU3hQUVVGUExFZEJRVzFDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGREwwTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVU3WjBKQlEyWXNVMEZCVXl4SFFVRkhMRXRCUVVzc1EwRkJRenRuUWtGRGJFSXNVMEZCVXp0aFFVTmFPMWxCUTBRc1NVRkJTU3hUUVVGVExFVkJRVVU3WjBKQlExZ3NSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU03WVVGRGJrSTdXVUZEUkN4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1dVRkRka01zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXp0VFFVTndRanRSUVVORUxFbEJRVWtzUjBGQlJ5eExRVUZMTEVWQlFVVXNSVUZCUlR0WlFVTmFMRWRCUVVjc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXp0VFFVTjZRanRSUVVORUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZEZUVRc1EwRkJRenRKUVVWTkxEWkNRVUZQTEVkQlFXUXNWVUZCWlN4RFFVRkRPMUZCUTFvc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlR0WlFVTm1MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTI1Q0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSkxFOUJRVUVzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJXaXhEUVVGWkxFTkJRVU1zUTBGQlF6dFRRVU0xUXp0SlFVTk1MRU5CUVVNN1NVRkZUU3d5UWtGQlN5eEhRVUZhTzFGQlEwa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVVNc1EwRkJVeXhGUVVGRkxFTkJRV2xDTzFsQlF6VkZMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0UlFVTjZRaXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEVml4RFFVRkRPMGxCUlUwc2VVSkJRVWNzUjBGQlZqdFJRVU5KTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRKUVVOeVFpeERRVUZETzBsQlJVMHNNa0pCUVVzc1IwRkJXanRSUVVOSkxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNN1NVRkROMElzUTBGQlF6dEpRVVZOTERoQ1FVRlJMRWRCUVdZc1ZVRkJaMElzUTBGQmFVSTdVVUZETjBJc1NVRkJTU3hKUVVGSkxFdEJRVXNzUTBGQlF6dFpRVUZGTEU5QlFVOHNTVUZCU1N4RFFVRkRPMUZCUXpWQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNelF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkJSU3hQUVVGUExFbEJRVWtzUTBGQlF6dFRRVU5xUkR0UlFVTkVMRTlCUVU4c1MwRkJTeXhEUVVGRE8wbEJRMnBDTEVOQlFVTTdTVUZGVFN3MFFrRkJUU3hIUVVGaUxGVkJRV01zVVVGQmFVTTdVVUZCTDBNc2FVSkJSVU03VVVGRVJ5eFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZITEU5QlFVRXNVVUZCVVN4RFFVRkRMRXRCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFXcEVMRU5CUVdsRUxFTkJRVU1zUTBGQlF6dEpRVU4wUml4RFFVRkRPMGxCUlUwc05FSkJRVTBzUjBGQllpeFZRVUZqTEVkQlFVOHNSVUZCUlN4UlFVRlJPMUZCUXpOQ0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRmRCUVZjc1EwRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0SlFVTjZSQ3hEUVVGRE8wbEJSVTBzTWtKQlFVc3NSMEZCV2l4VlFVRmhMRXRCUVhGQ0xFVkJRVVVzVVVGQlVUdFJRVU40UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVU3V1VGQlJTeFBRVUZQTEV0QlFVc3NRMEZCUXp0aFFVTXhRaXhKUVVGSkxFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJRenRoUVVNdlFpeEpRVUZKTEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0WlFVTjBReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVNeFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0VFFVTm1PMkZCUVUwN1dVRkRTQ3hMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVNeFFpeFBRVUZQTEV0QlFVc3NRMEZCUXp0VFFVTm9RanRKUVVOTUxFTkJRVU03U1VGRlRTd3JRa0ZCVXl4SFFVRm9RaXhWUVVGcFFpeFJRVUZwUXp0UlFVTTVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJRenM3V1VGRGVrSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlF6RkRMRU5CUVVNN1NVRkZUU3huUTBGQlZTeEhRVUZxUWl4VlFVRnJRaXhSUVVGcFF6dFJRVU12UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTTdXVUZCUlN4UFFVRlBMRWxCUVVrc1YwRkJWeXhEUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETzJGQlF6RkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RlFVRkZPMWxCUVVVc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUVVVN1lVRkRNMFE3V1VGRFJDeEpRVUZKTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMWxCUTNwRkxFbEJRVWtzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03V1VGRE1VTXNUMEZCVHl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExGTkJRVk1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0VFFVTXZRenRKUVVOTUxFTkJRVU03U1VGRFRTeHBRMEZCVnl4SFFVRnNRaXhWUVVGdFFpeFBRVUYxUWl4RlFVRkZMRkZCUVZjc1JVRkJSU3hYUVVFMFF5eEZRVUZGTEZGQlFXbERPMUZCUTNCSkxFbEJRVWtzVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRk1VTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1IwRkJSeXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETzFGQlF6VkNMRTlCUVU4c1EwRkJReXhSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXp0UlFVTndReXhKUVVGSkxGZEJRVmNzUzBGQlN5eEpRVUZKTEVsQlFVa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGREwwTXNWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdVMEZEZEVNN1VVRkRSQ3hKUVVGSkxGZEJRVmNzUjBGQlJ5eEpRVUZKTEZkQlFWY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRSUVVNMVF5eEpRVUZKTEZkQlFWY3NTMEZCU3l4SlFVRkpMRVZCUVVVN1dVRkRkRUlzVjBGQlZ5eERRVUZETEZGQlFWRXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRUUVVOMFF6dFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdTVUZETjBNc1EwRkJRenRKUVVOTUxHdENRVUZETzBGQlFVUXNRMEZCUXl4QlFYcEhSQ3hKUVhsSFF6dEJRWHBIV1N4clEwRkJWenRCUVRoSGVFSTdTVUZGU1N4MVFrRkJiMElzVVVGQmFVTTdVVUZCYWtNc1lVRkJVU3hIUVVGU0xGRkJRVkVzUTBGQmVVSTdTVUZCU1N4RFFVRkRPMGxCUzI1RUxESkNRVUZITEVkQlFWWTdVVUZEU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJUdFpRVUZGTEU5QlFVOHNTVUZCU1N4RFFVRkRPMU5CUVVVN1VVRkRiRU1zVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRKUVVNeFFpeERRVUZETzBsQlMwMHNORUpCUVVrc1IwRkJXRHRSUVVGWkxHTkJRVms3WVVGQldpeFZRVUZaTEVWQlFWb3NjVUpCUVZrc1JVRkJXaXhKUVVGWk8xbEJRVm9zZVVKQlFWazdPMUZCUTNCQ0xFbEJRVWtzVjBGQlZ5eERRVUZETzFGQlEyaENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRWRCUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTI1RExGZEJRVmNzUjBGQlJ5eEpRVUZKTEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOdVF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETzJkQ1FVTjBRaXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1UwRkRha1U3VVVGRFJDeFBRVUZQTEZkQlFWY3NRMEZCUXp0SlFVTjJRaXhEUVVGRE8wbEJTMDBzTmtKQlFVc3NSMEZCV2p0UlFVTkpMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRGVrTXNRMEZCUXp0SlFVdE5MRGhDUVVGTkxFZEJRV0k3VVVGRFNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhEUVVGRE8wbEJTMDBzSzBKQlFVOHNSMEZCWkN4VlFVRmxMRU5CUVVNN1VVRkRXaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONlFpeERRVUZETzBsQlNVMHNNa0pCUVVjc1IwRkJWanRSUVVOSkxFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZPMWxCUTJRc1QwRkJUeXhKUVVGSkxFTkJRVU03VTBGRFpqdFJRVU5FTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZETVVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETDBNc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFppeERRVUZETzBsQlNVMHNhVU5CUVZNc1IwRkJhRUlzVlVGQmFVSXNVVUZCZDBJc1JVRkJSU3hOUVVGVExFVkJRVVVzVjBGQmJVUTdVVUZCYmtRc05FSkJRVUVzUlVGQlFTeHJRa0ZCYlVRN1VVRkRja2NzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFJRVUZSTEVWQlFVVXNUVUZCVFN4RlFVRkZMRmRCUVZjc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdTVUZEY0VZc1EwRkJRenRKUVVOTkxHZERRVUZSTEVkQlFXWXNWVUZCWjBJc1VVRkJVVHRSUVVOd1FpeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlEzaERMRU5CUVVNN1NVRkxUU3cyUWtGQlN5eEhRVUZhTzFGQlEwa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzBsQlF6ZENMRU5CUVVNN1NVRkRUQ3h2UWtGQlF6dEJRVUZFTEVOQlFVTXNRVUY0UlVRc1NVRjNSVU03UVVGNFJWa3NjME5CUVdFaWZRPT0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgcHF1ZXVlXzEgPSByZXF1aXJlKFwiLi9wcXVldWVcIik7XHJcbnZhciBOZWlnaGJvdXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTmVpZ2hib3VyKGlkLCBkaXN0YW5jZSkge1xyXG4gICAgICAgIHRoaXMuaWQgPSBpZDtcclxuICAgICAgICB0aGlzLmRpc3RhbmNlID0gZGlzdGFuY2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTmVpZ2hib3VyO1xyXG59KCkpO1xyXG52YXIgTm9kZSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBOb2RlKGlkKSB7XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMubmVpZ2hib3VycyA9IFtdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE5vZGU7XHJcbn0oKSk7XHJcbnZhciBRdWV1ZUVudHJ5ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFF1ZXVlRW50cnkobm9kZSwgcHJldiwgZCkge1xyXG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XHJcbiAgICAgICAgdGhpcy5wcmV2ID0gcHJldjtcclxuICAgICAgICB0aGlzLmQgPSBkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFF1ZXVlRW50cnk7XHJcbn0oKSk7XHJcbnZhciBDYWxjdWxhdG9yID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIENhbGN1bGF0b3IobiwgZXMsIGdldFNvdXJjZUluZGV4LCBnZXRUYXJnZXRJbmRleCwgZ2V0TGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5uID0gbjtcclxuICAgICAgICB0aGlzLmVzID0gZXM7XHJcbiAgICAgICAgdGhpcy5uZWlnaGJvdXJzID0gbmV3IEFycmF5KHRoaXMubik7XHJcbiAgICAgICAgdmFyIGkgPSB0aGlzLm47XHJcbiAgICAgICAgd2hpbGUgKGktLSlcclxuICAgICAgICAgICAgdGhpcy5uZWlnaGJvdXJzW2ldID0gbmV3IE5vZGUoaSk7XHJcbiAgICAgICAgaSA9IHRoaXMuZXMubGVuZ3RoO1xyXG4gICAgICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmVzW2ldO1xyXG4gICAgICAgICAgICB2YXIgdSA9IGdldFNvdXJjZUluZGV4KGUpLCB2ID0gZ2V0VGFyZ2V0SW5kZXgoZSk7XHJcbiAgICAgICAgICAgIHZhciBkID0gZ2V0TGVuZ3RoKGUpO1xyXG4gICAgICAgICAgICB0aGlzLm5laWdoYm91cnNbdV0ubmVpZ2hib3Vycy5wdXNoKG5ldyBOZWlnaGJvdXIodiwgZCkpO1xyXG4gICAgICAgICAgICB0aGlzLm5laWdoYm91cnNbdl0ubmVpZ2hib3Vycy5wdXNoKG5ldyBOZWlnaGJvdXIodSwgZCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIENhbGN1bGF0b3IucHJvdG90eXBlLkRpc3RhbmNlTWF0cml4ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBEID0gbmV3IEFycmF5KHRoaXMubik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm47ICsraSkge1xyXG4gICAgICAgICAgICBEW2ldID0gdGhpcy5kaWprc3RyYU5laWdoYm91cnMoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBEO1xyXG4gICAgfTtcclxuICAgIENhbGN1bGF0b3IucHJvdG90eXBlLkRpc3RhbmNlc0Zyb21Ob2RlID0gZnVuY3Rpb24gKHN0YXJ0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlqa3N0cmFOZWlnaGJvdXJzKHN0YXJ0KTtcclxuICAgIH07XHJcbiAgICBDYWxjdWxhdG9yLnByb3RvdHlwZS5QYXRoRnJvbU5vZGVUb05vZGUgPSBmdW5jdGlvbiAoc3RhcnQsIGVuZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRpamtzdHJhTmVpZ2hib3VycyhzdGFydCwgZW5kKTtcclxuICAgIH07XHJcbiAgICBDYWxjdWxhdG9yLnByb3RvdHlwZS5QYXRoRnJvbU5vZGVUb05vZGVXaXRoUHJldkNvc3QgPSBmdW5jdGlvbiAoc3RhcnQsIGVuZCwgcHJldkNvc3QpIHtcclxuICAgICAgICB2YXIgcSA9IG5ldyBwcXVldWVfMS5Qcmlvcml0eVF1ZXVlKGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmQgPD0gYi5kOyB9KSwgdSA9IHRoaXMubmVpZ2hib3Vyc1tzdGFydF0sIHF1ID0gbmV3IFF1ZXVlRW50cnkodSwgbnVsbCwgMCksIHZpc2l0ZWRGcm9tID0ge307XHJcbiAgICAgICAgcS5wdXNoKHF1KTtcclxuICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSkge1xyXG4gICAgICAgICAgICBxdSA9IHEucG9wKCk7XHJcbiAgICAgICAgICAgIHUgPSBxdS5ub2RlO1xyXG4gICAgICAgICAgICBpZiAodS5pZCA9PT0gZW5kKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgaSA9IHUubmVpZ2hib3Vycy5sZW5ndGg7XHJcbiAgICAgICAgICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICAgICAgICAgIHZhciBuZWlnaGJvdXIgPSB1Lm5laWdoYm91cnNbaV0sIHYgPSB0aGlzLm5laWdoYm91cnNbbmVpZ2hib3VyLmlkXTtcclxuICAgICAgICAgICAgICAgIGlmIChxdS5wcmV2ICYmIHYuaWQgPT09IHF1LnByZXYubm9kZS5pZClcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIHZhciB2aWR1aWQgPSB2LmlkICsgJywnICsgdS5pZDtcclxuICAgICAgICAgICAgICAgIGlmICh2aWR1aWQgaW4gdmlzaXRlZEZyb20gJiYgdmlzaXRlZEZyb21bdmlkdWlkXSA8PSBxdS5kKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNjID0gcXUucHJldiA/IHByZXZDb3N0KHF1LnByZXYubm9kZS5pZCwgdS5pZCwgdi5pZCkgOiAwLCB0ID0gcXUuZCArIG5laWdoYm91ci5kaXN0YW5jZSArIGNjO1xyXG4gICAgICAgICAgICAgICAgdmlzaXRlZEZyb21bdmlkdWlkXSA9IHQ7XHJcbiAgICAgICAgICAgICAgICBxLnB1c2gobmV3IFF1ZXVlRW50cnkodiwgcXUsIHQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgcGF0aCA9IFtdO1xyXG4gICAgICAgIHdoaWxlIChxdS5wcmV2KSB7XHJcbiAgICAgICAgICAgIHF1ID0gcXUucHJldjtcclxuICAgICAgICAgICAgcGF0aC5wdXNoKHF1Lm5vZGUuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgIH07XHJcbiAgICBDYWxjdWxhdG9yLnByb3RvdHlwZS5kaWprc3RyYU5laWdoYm91cnMgPSBmdW5jdGlvbiAoc3RhcnQsIGRlc3QpIHtcclxuICAgICAgICBpZiAoZGVzdCA9PT0gdm9pZCAwKSB7IGRlc3QgPSAtMTsgfVxyXG4gICAgICAgIHZhciBxID0gbmV3IHBxdWV1ZV8xLlByaW9yaXR5UXVldWUoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEuZCA8PSBiLmQ7IH0pLCBpID0gdGhpcy5uZWlnaGJvdXJzLmxlbmd0aCwgZCA9IG5ldyBBcnJheShpKTtcclxuICAgICAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5uZWlnaGJvdXJzW2ldO1xyXG4gICAgICAgICAgICBub2RlLmQgPSBpID09PSBzdGFydCA/IDAgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XHJcbiAgICAgICAgICAgIG5vZGUucSA9IHEucHVzaChub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKCFxLmVtcHR5KCkpIHtcclxuICAgICAgICAgICAgdmFyIHUgPSBxLnBvcCgpO1xyXG4gICAgICAgICAgICBkW3UuaWRdID0gdS5kO1xyXG4gICAgICAgICAgICBpZiAodS5pZCA9PT0gZGVzdCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHBhdGggPSBbXTtcclxuICAgICAgICAgICAgICAgIHZhciB2ID0gdTtcclxuICAgICAgICAgICAgICAgIHdoaWxlICh0eXBlb2Ygdi5wcmV2ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGgucHVzaCh2LnByZXYuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHYgPSB2LnByZXY7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpID0gdS5uZWlnaGJvdXJzLmxlbmd0aDtcclxuICAgICAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG5laWdoYm91ciA9IHUubmVpZ2hib3Vyc1tpXTtcclxuICAgICAgICAgICAgICAgIHZhciB2ID0gdGhpcy5uZWlnaGJvdXJzW25laWdoYm91ci5pZF07XHJcbiAgICAgICAgICAgICAgICB2YXIgdCA9IHUuZCArIG5laWdoYm91ci5kaXN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGlmICh1LmQgIT09IE51bWJlci5NQVhfVkFMVUUgJiYgdi5kID4gdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHYuZCA9IHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5wcmV2ID0gdTtcclxuICAgICAgICAgICAgICAgICAgICBxLnJlZHVjZUtleSh2LnEsIHYsIGZ1bmN0aW9uIChlLCBxKSB7IHJldHVybiBlLnEgPSBxOyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gQ2FsY3VsYXRvcjtcclxufSgpKTtcclxuZXhwb3J0cy5DYWxjdWxhdG9yID0gQ2FsY3VsYXRvcjtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJodmNuUmxjM1J3WVhSb2N5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMWRsWWtOdmJHRXZjM0pqTDNOb2IzSjBaWE4wY0dGMGFITXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTeHRRMEZCYlVRN1FVRkZia1E3U1VGRFNTeHRRa0ZCYlVJc1JVRkJWU3hGUVVGVExGRkJRV2RDTzFGQlFXNURMRTlCUVVVc1IwRkJSaXhGUVVGRkxFTkJRVkU3VVVGQlV5eGhRVUZSTEVkQlFWSXNVVUZCVVN4RFFVRlJPMGxCUVVrc1EwRkJRenRKUVVNdlJDeG5Ra0ZCUXp0QlFVRkVMRU5CUVVNc1FVRkdSQ3hKUVVWRE8wRkJSVVE3U1VGRFNTeGpRVUZ0UWl4RlFVRlZPMUZCUVZZc1QwRkJSU3hIUVVGR0xFVkJRVVVzUTBGQlVUdFJRVU42UWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU42UWl4RFFVRkRPMGxCUzB3c1YwRkJRenRCUVVGRUxFTkJRVU1zUVVGU1JDeEpRVkZETzBGQlJVUTdTVUZEU1N4dlFrRkJiVUlzU1VGQlZTeEZRVUZUTEVsQlFXZENMRVZCUVZNc1EwRkJVenRSUVVGeVJDeFRRVUZKTEVkQlFVb3NTVUZCU1N4RFFVRk5PMUZCUVZNc1UwRkJTU3hIUVVGS0xFbEJRVWtzUTBGQldUdFJRVUZUTEUxQlFVTXNSMEZCUkN4RFFVRkRMRU5CUVZFN1NVRkJSeXhEUVVGRE8wbEJRMmhHTEdsQ1FVRkRPMEZCUVVRc1EwRkJReXhCUVVaRUxFbEJSVU03UVVGVFJEdEpRVWRKTEc5Q1FVRnRRaXhEUVVGVExFVkJRVk1zUlVGQlZTeEZRVUZGTEdOQlFXMURMRVZCUVVVc1kwRkJiVU1zUlVGQlJTeFRRVUU0UWp0UlFVRjBTU3hOUVVGRExFZEJRVVFzUTBGQlF5eERRVUZSTzFGQlFWTXNUMEZCUlN4SFFVRkdMRVZCUVVVc1EwRkJVVHRSUVVNelF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTndReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVU3V1VGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlRkRUxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETlVJc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOdVFpeEpRVUZKTEVOQlFVTXNSMEZCVnl4alFVRmpMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZYTEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOcVJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNoRUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZOQlFWTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU16UkR0SlFVTk1MRU5CUVVNN1NVRlZSQ3h0UTBGQll5eEhRVUZrTzFGQlEwa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpGQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUXpkQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRja003VVVGRFJDeFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRlJSQ3h6UTBGQmFVSXNSMEZCYWtJc1ZVRkJhMElzUzBGQllUdFJRVU16UWl4UFFVRlBMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVNeFF5eERRVUZETzBsQlJVUXNkVU5CUVd0Q0xFZEJRV3hDTEZWQlFXMUNMRXRCUVdFc1JVRkJSU3hIUVVGWE8xRkJRM3BETEU5QlFVOHNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVNdlF5eERRVUZETzBsQlMwUXNiVVJCUVRoQ0xFZEJRVGxDTEZWQlEwa3NTMEZCWVN4RlFVTmlMRWRCUVZjc1JVRkRXQ3hSUVVFNFF6dFJRVVU1UXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxITkNRVUZoTEVOQlFXRXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGV0xFTkJRVlVzUTBGQlF5eEZRVU4yUkN4RFFVRkRMRWRCUVZNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZEYUVNc1JVRkJSU3hIUVVGbExFbEJRVWtzVlVGQlZTeERRVUZETEVOQlFVTXNSVUZCUXl4SlFVRkpMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRM3BETEZkQlFWY3NSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRja0lzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVOWUxFOUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVN1dVRkRaQ3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMWxCUTJJc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEV2l4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFdEJRVXNzUjBGQlJ5eEZRVUZGTzJkQ1FVTmtMRTFCUVUwN1lVRkRWRHRaUVVORUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkRja01zU1VGQlNTeFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGRE0wSXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMmRDUVVkMFF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRk8yOUNRVUZGTEZOQlFWTTdaMEpCU1d4RUxFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdaMEpCUXk5Q0xFbEJRVWNzVFVGQlRTeEpRVUZKTEZkQlFWY3NTVUZCU1N4WFFVRlhMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTTdiMEpCUTI1RUxGTkJRVk03WjBKQlJXSXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVONFJDeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zVVVGQlVTeEhRVUZITEVWQlFVVXNRMEZCUXp0blFrRkhka01zVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRGVFSXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGNFTTdVMEZEU2p0UlFVTkVMRWxCUVVrc1NVRkJTU3hIUVVGWkxFVkJRVVVzUTBGQlF6dFJRVU4yUWl4UFFVRlBMRVZCUVVVc1EwRkJReXhKUVVGSkxFVkJRVVU3V1VGRFdpeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJRenRaUVVOaUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFRRVU42UWp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMmhDTEVOQlFVTTdTVUZGVHl4MVEwRkJhMElzUjBGQk1VSXNWVUZCTWtJc1MwRkJZU3hGUVVGRkxFbEJRV2xDTzFGQlFXcENMSEZDUVVGQkxFVkJRVUVzVVVGQlowSXNRMEZCUXp0UlFVTjJSQ3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEhOQ1FVRmhMRU5CUVU4c1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZXTEVOQlFWVXNRMEZCUXl4RlFVTnFSQ3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRVZCUXpGQ0xFTkJRVU1zUjBGQllTeEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNdlFpeFBRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTFJc1NVRkJTU3hKUVVGSkxFZEJRVk1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RFFVRkRPMWxCUTNCRUxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFRRVU42UWp0UlFVTkVMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVTdXVUZGWml4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdXVUZEYUVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMlFzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRWxCUVVrc1JVRkJSVHRuUWtGRFppeEpRVUZKTEVsQlFVa3NSMEZCWVN4RlFVRkZMRU5CUVVNN1owSkJRM2hDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFZpeFBRVUZQTEU5QlFVOHNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhYUVVGWExFVkJRVVU3YjBKQlEyeERMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenR2UWtGRGNrSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03YVVKQlEyUTdaMEpCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU03WVVGRFpqdFpRVU5FTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRMnBETEVsQlFVa3NVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTJoRExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1UwRkJVeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzJkQ1FVTjBReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU03WjBKQlEycERMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eE5RVUZOTEVOQlFVTXNVMEZCVXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzI5Q1FVTnlReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRVaXhEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRXQ3hEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxGVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZRTEVOQlFVOHNRMEZCUXl4RFFVRkRPMmxDUVVOMlF6dGhRVU5LTzFOQlEwbzdVVUZEUkN4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRFRDeHBRa0ZCUXp0QlFVRkVMRU5CUVVNc1FVRnFTVVFzU1VGcFNVTTdRVUZxU1Zrc1owTkJRVlVpZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgcmVjdGFuZ2xlXzEgPSByZXF1aXJlKFwiLi9yZWN0YW5nbGVcIik7XHJcbnZhciBQb2ludCA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQb2ludCgpIHtcclxuICAgIH1cclxuICAgIHJldHVybiBQb2ludDtcclxufSgpKTtcclxuZXhwb3J0cy5Qb2ludCA9IFBvaW50O1xyXG52YXIgTGluZVNlZ21lbnQgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTGluZVNlZ21lbnQoeDEsIHkxLCB4MiwgeTIpIHtcclxuICAgICAgICB0aGlzLngxID0geDE7XHJcbiAgICAgICAgdGhpcy55MSA9IHkxO1xyXG4gICAgICAgIHRoaXMueDIgPSB4MjtcclxuICAgICAgICB0aGlzLnkyID0geTI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTGluZVNlZ21lbnQ7XHJcbn0oKSk7XHJcbmV4cG9ydHMuTGluZVNlZ21lbnQgPSBMaW5lU2VnbWVudDtcclxudmFyIFBvbHlQb2ludCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoUG9seVBvaW50LCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gUG9seVBvaW50KCkge1xyXG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcclxuICAgIH1cclxuICAgIHJldHVybiBQb2x5UG9pbnQ7XHJcbn0oUG9pbnQpKTtcclxuZXhwb3J0cy5Qb2x5UG9pbnQgPSBQb2x5UG9pbnQ7XHJcbmZ1bmN0aW9uIGlzTGVmdChQMCwgUDEsIFAyKSB7XHJcbiAgICByZXR1cm4gKFAxLnggLSBQMC54KSAqIChQMi55IC0gUDAueSkgLSAoUDIueCAtIFAwLngpICogKFAxLnkgLSBQMC55KTtcclxufVxyXG5leHBvcnRzLmlzTGVmdCA9IGlzTGVmdDtcclxuZnVuY3Rpb24gYWJvdmUocCwgdmksIHZqKSB7XHJcbiAgICByZXR1cm4gaXNMZWZ0KHAsIHZpLCB2aikgPiAwO1xyXG59XHJcbmZ1bmN0aW9uIGJlbG93KHAsIHZpLCB2aikge1xyXG4gICAgcmV0dXJuIGlzTGVmdChwLCB2aSwgdmopIDwgMDtcclxufVxyXG5mdW5jdGlvbiBDb252ZXhIdWxsKFMpIHtcclxuICAgIHZhciBQID0gUy5zbGljZSgwKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLnggIT09IGIueCA/IGIueCAtIGEueCA6IGIueSAtIGEueTsgfSk7XHJcbiAgICB2YXIgbiA9IFMubGVuZ3RoLCBpO1xyXG4gICAgdmFyIG1pbm1pbiA9IDA7XHJcbiAgICB2YXIgeG1pbiA9IFBbMF0ueDtcclxuICAgIGZvciAoaSA9IDE7IGkgPCBuOyArK2kpIHtcclxuICAgICAgICBpZiAoUFtpXS54ICE9PSB4bWluKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHZhciBtaW5tYXggPSBpIC0gMTtcclxuICAgIHZhciBIID0gW107XHJcbiAgICBILnB1c2goUFttaW5taW5dKTtcclxuICAgIGlmIChtaW5tYXggPT09IG4gLSAxKSB7XHJcbiAgICAgICAgaWYgKFBbbWlubWF4XS55ICE9PSBQW21pbm1pbl0ueSlcclxuICAgICAgICAgICAgSC5wdXNoKFBbbWlubWF4XSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2YXIgbWF4bWluLCBtYXhtYXggPSBuIC0gMTtcclxuICAgICAgICB2YXIgeG1heCA9IFBbbiAtIDFdLng7XHJcbiAgICAgICAgZm9yIChpID0gbiAtIDI7IGkgPj0gMDsgaS0tKVxyXG4gICAgICAgICAgICBpZiAoUFtpXS54ICE9PSB4bWF4KVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgbWF4bWluID0gaSArIDE7XHJcbiAgICAgICAgaSA9IG1pbm1heDtcclxuICAgICAgICB3aGlsZSAoKytpIDw9IG1heG1pbikge1xyXG4gICAgICAgICAgICBpZiAoaXNMZWZ0KFBbbWlubWluXSwgUFttYXhtaW5dLCBQW2ldKSA+PSAwICYmIGkgPCBtYXhtaW4pXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgd2hpbGUgKEgubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTGVmdChIW0gubGVuZ3RoIC0gMl0sIEhbSC5sZW5ndGggLSAxXSwgUFtpXSkgPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIEgubGVuZ3RoIC09IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGkgIT0gbWlubWluKVxyXG4gICAgICAgICAgICAgICAgSC5wdXNoKFBbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobWF4bWF4ICE9IG1heG1pbilcclxuICAgICAgICAgICAgSC5wdXNoKFBbbWF4bWF4XSk7XHJcbiAgICAgICAgdmFyIGJvdCA9IEgubGVuZ3RoO1xyXG4gICAgICAgIGkgPSBtYXhtaW47XHJcbiAgICAgICAgd2hpbGUgKC0taSA+PSBtaW5tYXgpIHtcclxuICAgICAgICAgICAgaWYgKGlzTGVmdChQW21heG1heF0sIFBbbWlubWF4XSwgUFtpXSkgPj0gMCAmJiBpID4gbWlubWF4KVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIHdoaWxlIChILmxlbmd0aCA+IGJvdCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTGVmdChIW0gubGVuZ3RoIC0gMl0sIEhbSC5sZW5ndGggLSAxXSwgUFtpXSkgPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIEgubGVuZ3RoIC09IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGkgIT0gbWlubWluKVxyXG4gICAgICAgICAgICAgICAgSC5wdXNoKFBbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBIO1xyXG59XHJcbmV4cG9ydHMuQ29udmV4SHVsbCA9IENvbnZleEh1bGw7XHJcbmZ1bmN0aW9uIGNsb2Nrd2lzZVJhZGlhbFN3ZWVwKHAsIFAsIGYpIHtcclxuICAgIFAuc2xpY2UoMCkuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gTWF0aC5hdGFuMihhLnkgLSBwLnksIGEueCAtIHAueCkgLSBNYXRoLmF0YW4yKGIueSAtIHAueSwgYi54IC0gcC54KTsgfSkuZm9yRWFjaChmKTtcclxufVxyXG5leHBvcnRzLmNsb2Nrd2lzZVJhZGlhbFN3ZWVwID0gY2xvY2t3aXNlUmFkaWFsU3dlZXA7XHJcbmZ1bmN0aW9uIG5leHRQb2x5UG9pbnQocCwgcHMpIHtcclxuICAgIGlmIChwLnBvbHlJbmRleCA9PT0gcHMubGVuZ3RoIC0gMSlcclxuICAgICAgICByZXR1cm4gcHNbMF07XHJcbiAgICByZXR1cm4gcHNbcC5wb2x5SW5kZXggKyAxXTtcclxufVxyXG5mdW5jdGlvbiBwcmV2UG9seVBvaW50KHAsIHBzKSB7XHJcbiAgICBpZiAocC5wb2x5SW5kZXggPT09IDApXHJcbiAgICAgICAgcmV0dXJuIHBzW3BzLmxlbmd0aCAtIDFdO1xyXG4gICAgcmV0dXJuIHBzW3AucG9seUluZGV4IC0gMV07XHJcbn1cclxuZnVuY3Rpb24gdGFuZ2VudF9Qb2ludFBvbHlDKFAsIFYpIHtcclxuICAgIHZhciBWY2xvc2VkID0gVi5zbGljZSgwKTtcclxuICAgIFZjbG9zZWQucHVzaChWWzBdKTtcclxuICAgIHJldHVybiB7IHJ0YW46IFJ0YW5nZW50X1BvaW50UG9seUMoUCwgVmNsb3NlZCksIGx0YW46IEx0YW5nZW50X1BvaW50UG9seUMoUCwgVmNsb3NlZCkgfTtcclxufVxyXG5mdW5jdGlvbiBSdGFuZ2VudF9Qb2ludFBvbHlDKFAsIFYpIHtcclxuICAgIHZhciBuID0gVi5sZW5ndGggLSAxO1xyXG4gICAgdmFyIGEsIGIsIGM7XHJcbiAgICB2YXIgdXBBLCBkbkM7XHJcbiAgICBpZiAoYmVsb3coUCwgVlsxXSwgVlswXSkgJiYgIWFib3ZlKFAsIFZbbiAtIDFdLCBWWzBdKSlcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIGZvciAoYSA9IDAsIGIgPSBuOzspIHtcclxuICAgICAgICBpZiAoYiAtIGEgPT09IDEpXHJcbiAgICAgICAgICAgIGlmIChhYm92ZShQLCBWW2FdLCBWW2JdKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBhO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYjtcclxuICAgICAgICBjID0gTWF0aC5mbG9vcigoYSArIGIpIC8gMik7XHJcbiAgICAgICAgZG5DID0gYmVsb3coUCwgVltjICsgMV0sIFZbY10pO1xyXG4gICAgICAgIGlmIChkbkMgJiYgIWFib3ZlKFAsIFZbYyAtIDFdLCBWW2NdKSlcclxuICAgICAgICAgICAgcmV0dXJuIGM7XHJcbiAgICAgICAgdXBBID0gYWJvdmUoUCwgVlthICsgMV0sIFZbYV0pO1xyXG4gICAgICAgIGlmICh1cEEpIHtcclxuICAgICAgICAgICAgaWYgKGRuQylcclxuICAgICAgICAgICAgICAgIGIgPSBjO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChhYm92ZShQLCBWW2FdLCBWW2NdKSlcclxuICAgICAgICAgICAgICAgICAgICBiID0gYztcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBhID0gYztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCFkbkMpXHJcbiAgICAgICAgICAgICAgICBhID0gYztcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYmVsb3coUCwgVlthXSwgVltjXSkpXHJcbiAgICAgICAgICAgICAgICAgICAgYiA9IGM7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgYSA9IGM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gTHRhbmdlbnRfUG9pbnRQb2x5QyhQLCBWKSB7XHJcbiAgICB2YXIgbiA9IFYubGVuZ3RoIC0gMTtcclxuICAgIHZhciBhLCBiLCBjO1xyXG4gICAgdmFyIGRuQSwgZG5DO1xyXG4gICAgaWYgKGFib3ZlKFAsIFZbbiAtIDFdLCBWWzBdKSAmJiAhYmVsb3coUCwgVlsxXSwgVlswXSkpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICBmb3IgKGEgPSAwLCBiID0gbjs7KSB7XHJcbiAgICAgICAgaWYgKGIgLSBhID09PSAxKVxyXG4gICAgICAgICAgICBpZiAoYmVsb3coUCwgVlthXSwgVltiXSkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGI7XHJcbiAgICAgICAgYyA9IE1hdGguZmxvb3IoKGEgKyBiKSAvIDIpO1xyXG4gICAgICAgIGRuQyA9IGJlbG93KFAsIFZbYyArIDFdLCBWW2NdKTtcclxuICAgICAgICBpZiAoYWJvdmUoUCwgVltjIC0gMV0sIFZbY10pICYmICFkbkMpXHJcbiAgICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgIGRuQSA9IGJlbG93KFAsIFZbYSArIDFdLCBWW2FdKTtcclxuICAgICAgICBpZiAoZG5BKSB7XHJcbiAgICAgICAgICAgIGlmICghZG5DKVxyXG4gICAgICAgICAgICAgICAgYiA9IGM7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGJlbG93KFAsIFZbYV0sIFZbY10pKVxyXG4gICAgICAgICAgICAgICAgICAgIGIgPSBjO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGEgPSBjO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZG5DKVxyXG4gICAgICAgICAgICAgICAgYSA9IGM7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFib3ZlKFAsIFZbYV0sIFZbY10pKVxyXG4gICAgICAgICAgICAgICAgICAgIGIgPSBjO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGEgPSBjO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRhbmdlbnRfUG9seVBvbHlDKFYsIFcsIHQxLCB0MiwgY21wMSwgY21wMikge1xyXG4gICAgdmFyIGl4MSwgaXgyO1xyXG4gICAgaXgxID0gdDEoV1swXSwgVik7XHJcbiAgICBpeDIgPSB0MihWW2l4MV0sIFcpO1xyXG4gICAgdmFyIGRvbmUgPSBmYWxzZTtcclxuICAgIHdoaWxlICghZG9uZSkge1xyXG4gICAgICAgIGRvbmUgPSB0cnVlO1xyXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICAgIGlmIChpeDEgPT09IFYubGVuZ3RoIC0gMSlcclxuICAgICAgICAgICAgICAgIGl4MSA9IDA7XHJcbiAgICAgICAgICAgIGlmIChjbXAxKFdbaXgyXSwgVltpeDFdLCBWW2l4MSArIDFdKSlcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICArK2l4MTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgICAgaWYgKGl4MiA9PT0gMClcclxuICAgICAgICAgICAgICAgIGl4MiA9IFcubGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgaWYgKGNtcDIoVltpeDFdLCBXW2l4Ml0sIFdbaXgyIC0gMV0pKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIC0taXgyO1xyXG4gICAgICAgICAgICBkb25lID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgdDE6IGl4MSwgdDI6IGl4MiB9O1xyXG59XHJcbmV4cG9ydHMudGFuZ2VudF9Qb2x5UG9seUMgPSB0YW5nZW50X1BvbHlQb2x5QztcclxuZnVuY3Rpb24gTFJ0YW5nZW50X1BvbHlQb2x5QyhWLCBXKSB7XHJcbiAgICB2YXIgcmwgPSBSTHRhbmdlbnRfUG9seVBvbHlDKFcsIFYpO1xyXG4gICAgcmV0dXJuIHsgdDE6IHJsLnQyLCB0MjogcmwudDEgfTtcclxufVxyXG5leHBvcnRzLkxSdGFuZ2VudF9Qb2x5UG9seUMgPSBMUnRhbmdlbnRfUG9seVBvbHlDO1xyXG5mdW5jdGlvbiBSTHRhbmdlbnRfUG9seVBvbHlDKFYsIFcpIHtcclxuICAgIHJldHVybiB0YW5nZW50X1BvbHlQb2x5QyhWLCBXLCBSdGFuZ2VudF9Qb2ludFBvbHlDLCBMdGFuZ2VudF9Qb2ludFBvbHlDLCBhYm92ZSwgYmVsb3cpO1xyXG59XHJcbmV4cG9ydHMuUkx0YW5nZW50X1BvbHlQb2x5QyA9IFJMdGFuZ2VudF9Qb2x5UG9seUM7XHJcbmZ1bmN0aW9uIExMdGFuZ2VudF9Qb2x5UG9seUMoViwgVykge1xyXG4gICAgcmV0dXJuIHRhbmdlbnRfUG9seVBvbHlDKFYsIFcsIEx0YW5nZW50X1BvaW50UG9seUMsIEx0YW5nZW50X1BvaW50UG9seUMsIGJlbG93LCBiZWxvdyk7XHJcbn1cclxuZXhwb3J0cy5MTHRhbmdlbnRfUG9seVBvbHlDID0gTEx0YW5nZW50X1BvbHlQb2x5QztcclxuZnVuY3Rpb24gUlJ0YW5nZW50X1BvbHlQb2x5QyhWLCBXKSB7XHJcbiAgICByZXR1cm4gdGFuZ2VudF9Qb2x5UG9seUMoViwgVywgUnRhbmdlbnRfUG9pbnRQb2x5QywgUnRhbmdlbnRfUG9pbnRQb2x5QywgYWJvdmUsIGFib3ZlKTtcclxufVxyXG5leHBvcnRzLlJSdGFuZ2VudF9Qb2x5UG9seUMgPSBSUnRhbmdlbnRfUG9seVBvbHlDO1xyXG52YXIgQmlUYW5nZW50ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEJpVGFuZ2VudCh0MSwgdDIpIHtcclxuICAgICAgICB0aGlzLnQxID0gdDE7XHJcbiAgICAgICAgdGhpcy50MiA9IHQyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEJpVGFuZ2VudDtcclxufSgpKTtcclxuZXhwb3J0cy5CaVRhbmdlbnQgPSBCaVRhbmdlbnQ7XHJcbnZhciBCaVRhbmdlbnRzID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEJpVGFuZ2VudHMoKSB7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gQmlUYW5nZW50cztcclxufSgpKTtcclxuZXhwb3J0cy5CaVRhbmdlbnRzID0gQmlUYW5nZW50cztcclxudmFyIFRWR1BvaW50ID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcclxuICAgIF9fZXh0ZW5kcyhUVkdQb2ludCwgX3N1cGVyKTtcclxuICAgIGZ1bmN0aW9uIFRWR1BvaW50KCkge1xyXG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcclxuICAgIH1cclxuICAgIHJldHVybiBUVkdQb2ludDtcclxufShQb2ludCkpO1xyXG5leHBvcnRzLlRWR1BvaW50ID0gVFZHUG9pbnQ7XHJcbnZhciBWaXNpYmlsaXR5VmVydGV4ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFZpc2liaWxpdHlWZXJ0ZXgoaWQsIHBvbHlpZCwgcG9seXZlcnRpZCwgcCkge1xyXG4gICAgICAgIHRoaXMuaWQgPSBpZDtcclxuICAgICAgICB0aGlzLnBvbHlpZCA9IHBvbHlpZDtcclxuICAgICAgICB0aGlzLnBvbHl2ZXJ0aWQgPSBwb2x5dmVydGlkO1xyXG4gICAgICAgIHRoaXMucCA9IHA7XHJcbiAgICAgICAgcC52diA9IHRoaXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gVmlzaWJpbGl0eVZlcnRleDtcclxufSgpKTtcclxuZXhwb3J0cy5WaXNpYmlsaXR5VmVydGV4ID0gVmlzaWJpbGl0eVZlcnRleDtcclxudmFyIFZpc2liaWxpdHlFZGdlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFZpc2liaWxpdHlFZGdlKHNvdXJjZSwgdGFyZ2V0KSB7XHJcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XHJcbiAgICB9XHJcbiAgICBWaXNpYmlsaXR5RWRnZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBkeCA9IHRoaXMuc291cmNlLnAueCAtIHRoaXMudGFyZ2V0LnAueDtcclxuICAgICAgICB2YXIgZHkgPSB0aGlzLnNvdXJjZS5wLnkgLSB0aGlzLnRhcmdldC5wLnk7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFZpc2liaWxpdHlFZGdlO1xyXG59KCkpO1xyXG5leHBvcnRzLlZpc2liaWxpdHlFZGdlID0gVmlzaWJpbGl0eUVkZ2U7XHJcbnZhciBUYW5nZW50VmlzaWJpbGl0eUdyYXBoID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFRhbmdlbnRWaXNpYmlsaXR5R3JhcGgoUCwgZzApIHtcclxuICAgICAgICB0aGlzLlAgPSBQO1xyXG4gICAgICAgIHRoaXMuViA9IFtdO1xyXG4gICAgICAgIHRoaXMuRSA9IFtdO1xyXG4gICAgICAgIGlmICghZzApIHtcclxuICAgICAgICAgICAgdmFyIG4gPSBQLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBwID0gUFtpXTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcC5sZW5ndGg7ICsraikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwaiA9IHBbal0sIHZ2ID0gbmV3IFZpc2liaWxpdHlWZXJ0ZXgodGhpcy5WLmxlbmd0aCwgaSwgaiwgcGopO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuVi5wdXNoKHZ2KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaiA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRS5wdXNoKG5ldyBWaXNpYmlsaXR5RWRnZShwW2ogLSAxXS52diwgdnYpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5FLnB1c2gobmV3IFZpc2liaWxpdHlFZGdlKHBbMF0udnYsIHBbcC5sZW5ndGggLSAxXS52dikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbiAtIDE7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIFBpID0gUFtpXTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBpICsgMTsgaiA8IG47IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBQaiA9IFBbal0sIHQgPSB0YW5nZW50cyhQaSwgUGopO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHEgaW4gdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHRbcV0sIHNvdXJjZSA9IFBpW2MudDFdLCB0YXJnZXQgPSBQaltjLnQyXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRFZGdlSWZWaXNpYmxlKHNvdXJjZSwgdGFyZ2V0LCBpLCBqKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuViA9IGcwLlYuc2xpY2UoMCk7XHJcbiAgICAgICAgICAgIHRoaXMuRSA9IGcwLkUuc2xpY2UoMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgVGFuZ2VudFZpc2liaWxpdHlHcmFwaC5wcm90b3R5cGUuYWRkRWRnZUlmVmlzaWJsZSA9IGZ1bmN0aW9uICh1LCB2LCBpMSwgaTIpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaW50ZXJzZWN0c1BvbHlzKG5ldyBMaW5lU2VnbWVudCh1LngsIHUueSwgdi54LCB2LnkpLCBpMSwgaTIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRS5wdXNoKG5ldyBWaXNpYmlsaXR5RWRnZSh1LnZ2LCB2LnZ2KSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFRhbmdlbnRWaXNpYmlsaXR5R3JhcGgucHJvdG90eXBlLmFkZFBvaW50ID0gZnVuY3Rpb24gKHAsIGkxKSB7XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzLlAubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMuVi5wdXNoKG5ldyBWaXNpYmlsaXR5VmVydGV4KHRoaXMuVi5sZW5ndGgsIG4sIDAsIHApKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gaTEpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgdmFyIHBvbHkgPSB0aGlzLlBbaV0sIHQgPSB0YW5nZW50X1BvaW50UG9seUMocCwgcG9seSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRWRnZUlmVmlzaWJsZShwLCBwb2x5W3QubHRhbl0sIGkxLCBpKTtcclxuICAgICAgICAgICAgdGhpcy5hZGRFZGdlSWZWaXNpYmxlKHAsIHBvbHlbdC5ydGFuXSwgaTEsIGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcC52djtcclxuICAgIH07XHJcbiAgICBUYW5nZW50VmlzaWJpbGl0eUdyYXBoLnByb3RvdHlwZS5pbnRlcnNlY3RzUG9seXMgPSBmdW5jdGlvbiAobCwgaTEsIGkyKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0aGlzLlAubGVuZ3RoOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgICAgIGlmIChpICE9IGkxICYmIGkgIT0gaTIgJiYgaW50ZXJzZWN0cyhsLCB0aGlzLlBbaV0pLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gVGFuZ2VudFZpc2liaWxpdHlHcmFwaDtcclxufSgpKTtcclxuZXhwb3J0cy5UYW5nZW50VmlzaWJpbGl0eUdyYXBoID0gVGFuZ2VudFZpc2liaWxpdHlHcmFwaDtcclxuZnVuY3Rpb24gaW50ZXJzZWN0cyhsLCBQKSB7XHJcbiAgICB2YXIgaW50cyA9IFtdO1xyXG4gICAgZm9yICh2YXIgaSA9IDEsIG4gPSBQLmxlbmd0aDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgIHZhciBpbnQgPSByZWN0YW5nbGVfMS5SZWN0YW5nbGUubGluZUludGVyc2VjdGlvbihsLngxLCBsLnkxLCBsLngyLCBsLnkyLCBQW2kgLSAxXS54LCBQW2kgLSAxXS55LCBQW2ldLngsIFBbaV0ueSk7XHJcbiAgICAgICAgaWYgKGludClcclxuICAgICAgICAgICAgaW50cy5wdXNoKGludCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW50cztcclxufVxyXG5mdW5jdGlvbiB0YW5nZW50cyhWLCBXKSB7XHJcbiAgICB2YXIgbSA9IFYubGVuZ3RoIC0gMSwgbiA9IFcubGVuZ3RoIC0gMTtcclxuICAgIHZhciBidCA9IG5ldyBCaVRhbmdlbnRzKCk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG07ICsraSkge1xyXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbjsgKytqKSB7XHJcbiAgICAgICAgICAgIHZhciB2MSA9IFZbaSA9PSAwID8gbSAtIDEgOiBpIC0gMV07XHJcbiAgICAgICAgICAgIHZhciB2MiA9IFZbaV07XHJcbiAgICAgICAgICAgIHZhciB2MyA9IFZbaSArIDFdO1xyXG4gICAgICAgICAgICB2YXIgdzEgPSBXW2ogPT0gMCA/IG4gLSAxIDogaiAtIDFdO1xyXG4gICAgICAgICAgICB2YXIgdzIgPSBXW2pdO1xyXG4gICAgICAgICAgICB2YXIgdzMgPSBXW2ogKyAxXTtcclxuICAgICAgICAgICAgdmFyIHYxdjJ3MiA9IGlzTGVmdCh2MSwgdjIsIHcyKTtcclxuICAgICAgICAgICAgdmFyIHYydzF3MiA9IGlzTGVmdCh2MiwgdzEsIHcyKTtcclxuICAgICAgICAgICAgdmFyIHYydzJ3MyA9IGlzTGVmdCh2MiwgdzIsIHczKTtcclxuICAgICAgICAgICAgdmFyIHcxdzJ2MiA9IGlzTGVmdCh3MSwgdzIsIHYyKTtcclxuICAgICAgICAgICAgdmFyIHcydjF2MiA9IGlzTGVmdCh3MiwgdjEsIHYyKTtcclxuICAgICAgICAgICAgdmFyIHcydjJ2MyA9IGlzTGVmdCh3MiwgdjIsIHYzKTtcclxuICAgICAgICAgICAgaWYgKHYxdjJ3MiA+PSAwICYmIHYydzF3MiA+PSAwICYmIHYydzJ3MyA8IDBcclxuICAgICAgICAgICAgICAgICYmIHcxdzJ2MiA+PSAwICYmIHcydjF2MiA+PSAwICYmIHcydjJ2MyA8IDApIHtcclxuICAgICAgICAgICAgICAgIGJ0LmxsID0gbmV3IEJpVGFuZ2VudChpLCBqKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh2MXYydzIgPD0gMCAmJiB2MncxdzIgPD0gMCAmJiB2MncydzMgPiAwXHJcbiAgICAgICAgICAgICAgICAmJiB3MXcydjIgPD0gMCAmJiB3MnYxdjIgPD0gMCAmJiB3MnYydjMgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBidC5yciA9IG5ldyBCaVRhbmdlbnQoaSwgaik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodjF2MncyIDw9IDAgJiYgdjJ3MXcyID4gMCAmJiB2MncydzMgPD0gMFxyXG4gICAgICAgICAgICAgICAgJiYgdzF3MnYyID49IDAgJiYgdzJ2MXYyIDwgMCAmJiB3MnYydjMgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgYnQucmwgPSBuZXcgQmlUYW5nZW50KGksIGopO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHYxdjJ3MiA+PSAwICYmIHYydzF3MiA8IDAgJiYgdjJ3MnczID49IDBcclxuICAgICAgICAgICAgICAgICYmIHcxdzJ2MiA8PSAwICYmIHcydjF2MiA+IDAgJiYgdzJ2MnYzIDw9IDApIHtcclxuICAgICAgICAgICAgICAgIGJ0LmxyID0gbmV3IEJpVGFuZ2VudChpLCBqKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBidDtcclxufVxyXG5leHBvcnRzLnRhbmdlbnRzID0gdGFuZ2VudHM7XHJcbmZ1bmN0aW9uIGlzUG9pbnRJbnNpZGVQb2x5KHAsIHBvbHkpIHtcclxuICAgIGZvciAodmFyIGkgPSAxLCBuID0gcG9seS5sZW5ndGg7IGkgPCBuOyArK2kpXHJcbiAgICAgICAgaWYgKGJlbG93KHBvbHlbaSAtIDFdLCBwb2x5W2ldLCBwKSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuZnVuY3Rpb24gaXNBbnlQSW5RKHAsIHEpIHtcclxuICAgIHJldHVybiAhcC5ldmVyeShmdW5jdGlvbiAodikgeyByZXR1cm4gIWlzUG9pbnRJbnNpZGVQb2x5KHYsIHEpOyB9KTtcclxufVxyXG5mdW5jdGlvbiBwb2x5c092ZXJsYXAocCwgcSkge1xyXG4gICAgaWYgKGlzQW55UEluUShwLCBxKSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIGlmIChpc0FueVBJblEocSwgcCkpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICBmb3IgKHZhciBpID0gMSwgbiA9IHAubGVuZ3RoOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgdmFyIHYgPSBwW2ldLCB1ID0gcFtpIC0gMV07XHJcbiAgICAgICAgaWYgKGludGVyc2VjdHMobmV3IExpbmVTZWdtZW50KHUueCwgdS55LCB2LngsIHYueSksIHEpLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmV4cG9ydHMucG9seXNPdmVybGFwID0gcG9seXNPdmVybGFwO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laMlZ2YlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwxZGxZa052YkdFdmMzSmpMMmRsYjIwdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenM3TzBGQlFVRXNlVU5CUVhGRE8wRkJRMnBETzBsQlFVRTdTVUZIUVN4RFFVRkRPMGxCUVVRc1dVRkJRenRCUVVGRUxFTkJRVU1zUVVGSVJDeEpRVWRETzBGQlNGa3NjMEpCUVVzN1FVRkxiRUk3U1VGRFNTeHhRa0ZCYlVJc1JVRkJWU3hGUVVGVExFVkJRVlVzUlVGQlV5eEZRVUZWTEVWQlFWTXNSVUZCVlR0UlFVRnVSU3hQUVVGRkxFZEJRVVlzUlVGQlJTeERRVUZSTzFGQlFWTXNUMEZCUlN4SFFVRkdMRVZCUVVVc1EwRkJVVHRSUVVGVExFOUJRVVVzUjBGQlJpeEZRVUZGTEVOQlFWRTdVVUZCVXl4UFFVRkZMRWRCUVVZc1JVRkJSU3hEUVVGUk8wbEJRVWtzUTBGQlF6dEpRVU12Uml4clFrRkJRenRCUVVGRUxFTkJRVU1zUVVGR1JDeEpRVVZETzBGQlJsa3NhME5CUVZjN1FVRkplRUk3U1VGQkswSXNOa0pCUVVzN1NVRkJjRU03TzBsQlJVRXNRMEZCUXp0SlFVRkVMR2RDUVVGRE8wRkJRVVFzUTBGQlF5eEJRVVpFTEVOQlFTdENMRXRCUVVzc1IwRkZia003UVVGR1dTdzRRa0ZCVXp0QlFWVjBRaXhUUVVGblFpeE5RVUZOTEVOQlFVTXNSVUZCVXl4RlFVRkZMRVZCUVZNc1JVRkJSU3hGUVVGVE8wbEJRMnhFTEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVONlJTeERRVUZETzBGQlJrUXNkMEpCUlVNN1FVRkZSQ3hUUVVGVExFdEJRVXNzUTBGQlF5eERRVUZSTEVWQlFVVXNSVUZCVXl4RlFVRkZMRVZCUVZNN1NVRkRla01zVDBGQlR5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEYWtNc1EwRkJRenRCUVVWRUxGTkJRVk1zUzBGQlN5eERRVUZETEVOQlFWRXNSVUZCUlN4RlFVRlRMRVZCUVVVc1JVRkJVenRKUVVONlF5eFBRVUZQTEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTnFReXhEUVVGRE8wRkJVMFFzVTBGQlowSXNWVUZCVlN4RFFVRkRMRU5CUVZVN1NVRkRha01zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQmJrTXNRMEZCYlVNc1EwRkJReXhEUVVGRE8wbEJRM1pGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEzQkNMRWxCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU5tTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYkVJc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGRGNFSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVazdXVUZCUlN4TlFVRk5PMHRCUXpsQ08wbEJRMFFzU1VGQlNTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOdVFpeEpRVUZKTEVOQlFVTXNSMEZCV1N4RlFVRkZMRU5CUVVNN1NVRkRjRUlzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5zUWl4SlFVRkpMRTFCUVUwc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEyeENMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU16UWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTNwQ08xTkJRVTA3VVVGRlNDeEpRVUZKTEUxQlFVMHNSVUZCUlN4TlFVRk5MRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU16UWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOMFFpeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSk8yZENRVUZGTEUxQlFVMDdVVUZETDBJc1RVRkJUU3hIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZIWml4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRMWdzVDBGQlR5eEZRVUZGTEVOQlFVTXNTVUZCU1N4TlFVRk5MRVZCUVVVN1dVRkZiRUlzU1VGQlNTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRTFCUVUwN1owSkJRM0pFTEZOQlFWTTdXVUZGWWl4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVU51UWp0blFrRkZTU3hKUVVGSkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRE8yOUNRVU5zUkN4TlFVRk5PenR2UWtGRlRpeERRVUZETEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1EwRkJRenRoUVVOeVFqdFpRVU5FTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwN1owSkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU5xUXp0UlFVZEVMRWxCUVVrc1RVRkJUU3hKUVVGSkxFMUJRVTA3V1VGRGFFSXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjBRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTI1Q0xFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTTdVVUZEV0N4UFFVRlBMRVZCUVVVc1EwRkJReXhKUVVGSkxFMUJRVTBzUlVGQlJUdFpRVVZzUWl4SlFVRkpMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzVFVGQlRUdG5Ra0ZEY2tRc1UwRkJVenRaUVVWaUxFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4SFFVRkhMRVZCUTNKQ08yZENRVVZKTEVsQlFVa3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTTdiMEpCUTJ4RUxFMUJRVTA3TzI5Q1FVVk9MRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETzJGQlEzSkNPMWxCUTBRc1NVRkJTU3hEUVVGRExFbEJRVWtzVFVGQlRUdG5Ra0ZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTJwRE8wdEJRMG83U1VGRFJDeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTmlMRU5CUVVNN1FVRTVSRVFzWjBOQk9FUkRPMEZCUjBRc1UwRkJaMElzYjBKQlFXOUNMRU5CUVVNc1EwRkJVU3hGUVVGRkxFTkJRVlVzUlVGQlJTeERRVUZ4UWp0SlFVTTFSU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkRXQ3hWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVc3NUMEZCUVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQmJrVXNRMEZCYlVVc1EwRkROVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRja0lzUTBGQlF6dEJRVXBFTEc5RVFVbERPMEZCUlVRc1UwRkJVeXhoUVVGaExFTkJRVU1zUTBGQldTeEZRVUZGTEVWQlFXVTdTVUZEYUVRc1NVRkJTU3hEUVVGRExFTkJRVU1zVTBGQlV5eExRVUZMTEVWQlFVVXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJRenRSUVVGRkxFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJoRUxFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVMRk5CUVZNc1lVRkJZU3hEUVVGRExFTkJRVmtzUlVGQlJTeEZRVUZsTzBsQlEyaEVMRWxCUVVrc1EwRkJReXhEUVVGRExGTkJRVk1zUzBGQlN5eERRVUZETzFGQlFVVXNUMEZCVHl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTm9SQ3hQUVVGUExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJReTlDTEVOQlFVTTdRVUZSUkN4VFFVRlRMR3RDUVVGclFpeERRVUZETEVOQlFWRXNSVUZCUlN4RFFVRlZPMGxCUnpWRExFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVnVRaXhQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTEcxQ1FVRnRRaXhEUVVGRExFTkJRVU1zUlVGQlJTeFBRVUZQTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRTlCUVU4c1EwRkJReXhGUVVGRkxFTkJRVU03UVVGRE5VWXNRMEZCUXp0QlFWTkVMRk5CUVZNc2JVSkJRVzFDTEVOQlFVTXNRMEZCVVN4RlFVRkZMRU5CUVZVN1NVRkROME1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGSGNrSXNTVUZCU1N4RFFVRlRMRVZCUVVVc1EwRkJVeXhGUVVGRkxFTkJRVk1zUTBGQlF6dEpRVU53UXl4SlFVRkpMRWRCUVZrc1JVRkJSU3hIUVVGWkxFTkJRVU03U1VGSkwwSXNTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGFrUXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkZZaXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJRenRaUVVOWUxFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOd1FpeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1owSkJSVlFzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZGYWtJc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVJc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNdlFpeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYUVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGSllpeEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUNMRWxCUVVrc1IwRkJSeXhGUVVGRk8xbEJRMHdzU1VGQlNTeEhRVUZITzJkQ1FVTklMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03YVVKQlEwdzdaMEpCUTBRc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTNCQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdPMjlDUVVWT0xFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdZVUZEWWp0VFFVTktPMkZCUTBrN1dVRkRSQ3hKUVVGSkxFTkJRVU1zUjBGQlJ6dG5Ra0ZEU2l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8ybENRVU5NTzJkQ1FVTkVMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTndRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZET3p0dlFrRkZUaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJGQlEySTdVMEZEU2p0TFFVTktPMEZCUTB3c1EwRkJRenRCUVZGRUxGTkJRVk1zYlVKQlFXMUNMRU5CUVVNc1EwRkJVU3hGUVVGRkxFTkJRVlU3U1VGRE4wTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGY2tJc1NVRkJTU3hEUVVGVExFVkJRVVVzUTBGQlV5eEZRVUZGTEVOQlFWTXNRMEZCUXp0SlFVTndReXhKUVVGSkxFZEJRVmtzUlVGQlJTeEhRVUZaTEVOQlFVTTdTVUZKTDBJc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtRc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRllpeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlN6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF6dFpRVU5ZTEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU53UWl4UFFVRlBMRU5CUVVNc1EwRkJRenM3WjBKQlJWUXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkZha0lzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkROVUlzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU12UWl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjN1dVRkRhRU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZKWWl4SFFVRkhMRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXk5Q0xFbEJRVWtzUjBGQlJ5eEZRVUZGTzFsQlEwd3NTVUZCU1N4RFFVRkRMRWRCUVVjN1owSkJRMG9zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0cFFrRkRURHRuUWtGRFJDeEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGNFSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenM3YjBKQlJVNHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRoUVVOaU8xTkJRMG83WVVGRFNUdFpRVU5FTEVsQlFVa3NSMEZCUnp0blFrRkRTQ3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJsQ1FVTk1PMmRDUVVORUxFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOd1FpeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPenR2UWtGRlRpeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMkZCUTJJN1UwRkRTanRMUVVOS08wRkJRMHdzUTBGQlF6dEJRVk5FTEZOQlFXZENMR2xDUVVGcFFpeERRVUZETEVOQlFWVXNSVUZCUlN4RFFVRlZMRVZCUVVVc1JVRkJiME1zUlVGQlJTeEZRVUZ2UXl4RlFVRkZMRWxCUVN0RExFVkJRVVVzU1VGQkswTTdTVUZEYkU4c1NVRkJTU3hIUVVGWExFVkJRVVVzUjBGQlZ5eERRVUZETzBsQlJ6ZENMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMnhDTEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUjNCQ0xFbEJRVWtzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXp0SlFVTnFRaXhQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTzFGQlExWXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOYUxFOUJRVThzU1VGQlNTeEZRVUZGTzFsQlExUXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETzJkQ1FVRkZMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGJFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVGRkxFMUJRVTA3V1VGRE5VTXNSVUZCUlN4SFFVRkhMRU5CUVVNN1UwRkRWRHRSUVVORUxFOUJRVThzU1VGQlNTeEZRVUZGTzFsQlExUXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJRenRuUWtGQlJTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGJFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVGRkxFMUJRVTA3V1VGRE5VTXNSVUZCUlN4SFFVRkhMRU5CUVVNN1dVRkRUaXhKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETzFOQlEyaENPMHRCUTBvN1NVRkRSQ3hQUVVGUExFVkJRVVVzUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGFFTXNRMEZCUXp0QlFYaENSQ3c0UTBGM1FrTTdRVUZGUkN4VFFVRm5RaXh0UWtGQmJVSXNRMEZCUXl4RFFVRlZMRVZCUVVVc1EwRkJWVHRKUVVOMFJDeEpRVUZKTEVWQlFVVXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRia01zVDBGQlR5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNN1FVRkRjRU1zUTBGQlF6dEJRVWhFTEd0RVFVZERPMEZCUlVRc1UwRkJaMElzYlVKQlFXMUNMRU5CUVVNc1EwRkJWU3hGUVVGRkxFTkJRVlU3U1VGRGRFUXNUMEZCVHl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRzFDUVVGdFFpeEZRVUZGTEcxQ1FVRnRRaXhGUVVGRkxFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTXpSaXhEUVVGRE8wRkJSa1FzYTBSQlJVTTdRVUZGUkN4VFFVRm5RaXh0UWtGQmJVSXNRMEZCUXl4RFFVRlZMRVZCUVVVc1EwRkJWVHRKUVVOMFJDeFBRVUZQTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNiVUpCUVcxQ0xFVkJRVVVzYlVKQlFXMUNMRVZCUVVVc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzBGQlF6TkdMRU5CUVVNN1FVRkdSQ3hyUkVGRlF6dEJRVVZFTEZOQlFXZENMRzFDUVVGdFFpeERRVUZETEVOQlFWVXNSVUZCUlN4RFFVRlZPMGxCUTNSRUxFOUJRVThzYVVKQlFXbENMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeHRRa0ZCYlVJc1JVRkJSU3h0UWtGQmJVSXNSVUZCUlN4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRE0wWXNRMEZCUXp0QlFVWkVMR3RFUVVWRE8wRkJSVVE3U1VGRFNTeHRRa0ZCYlVJc1JVRkJWU3hGUVVGVExFVkJRVlU3VVVGQk4wSXNUMEZCUlN4SFFVRkdMRVZCUVVVc1EwRkJVVHRSUVVGVExFOUJRVVVzUjBGQlJpeEZRVUZGTEVOQlFWRTdTVUZCU1N4RFFVRkRPMGxCUTNwRUxHZENRVUZETzBGQlFVUXNRMEZCUXl4QlFVWkVMRWxCUlVNN1FVRkdXU3c0UWtGQlV6dEJRVWwwUWp0SlFVRkJPMGxCUzBFc1EwRkJRenRKUVVGRUxHbENRVUZETzBGQlFVUXNRMEZCUXl4QlFVeEVMRWxCUzBNN1FVRk1XU3huUTBGQlZUdEJRVTkyUWp0SlFVRTRRaXcwUWtGQlN6dEpRVUZ1UXpzN1NVRkZRU3hEUVVGRE8wbEJRVVFzWlVGQlF6dEJRVUZFTEVOQlFVTXNRVUZHUkN4RFFVRTRRaXhMUVVGTExFZEJSV3hETzBGQlJsa3NORUpCUVZFN1FVRkpja0k3U1VGRFNTd3dRa0ZEVnl4RlFVRlZMRVZCUTFZc1RVRkJZeXhGUVVOa0xGVkJRV3RDTEVWQlEyeENMRU5CUVZjN1VVRklXQ3hQUVVGRkxFZEJRVVlzUlVGQlJTeERRVUZSTzFGQlExWXNWMEZCVFN4SFFVRk9MRTFCUVUwc1EwRkJVVHRSUVVOa0xHVkJRVlVzUjBGQlZpeFZRVUZWTEVOQlFWRTdVVUZEYkVJc1RVRkJReXhIUVVGRUxFTkJRVU1zUTBGQlZUdFJRVVZzUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCUTB3c2RVSkJRVU03UVVGQlJDeERRVUZETEVGQlZFUXNTVUZUUXp0QlFWUlpMRFJEUVVGblFqdEJRVmMzUWp0SlFVTkpMSGRDUVVOWExFMUJRWGRDTEVWQlEzaENMRTFCUVhkQ08xRkJSSGhDTEZkQlFVMHNSMEZCVGl4TlFVRk5MRU5CUVd0Q08xRkJRM2hDTEZkQlFVMHNSMEZCVGl4TlFVRk5MRU5CUVd0Q08wbEJRVWtzUTBGQlF6dEpRVU40UXl3clFrRkJUU3hIUVVGT08xRkJRMGtzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU16UXl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpORExFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTjRReXhEUVVGRE8wbEJRMHdzY1VKQlFVTTdRVUZCUkN4RFFVRkRMRUZCVkVRc1NVRlRRenRCUVZSWkxIZERRVUZqTzBGQlZ6TkNPMGxCUjBrc1owTkJRVzFDTEVOQlFXVXNSVUZCUlN4RlFVRnRSRHRSUVVGd1JTeE5RVUZETEVkQlFVUXNRMEZCUXl4RFFVRmpPMUZCUm14RExFMUJRVU1zUjBGQmRVSXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFMUJRVU1zUjBGQmNVSXNSVUZCUlN4RFFVRkRPMUZCUlhKQ0xFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEVEN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETzFsQlJXcENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlEzaENMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkZZaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0dlFrRkRMMElzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVOVUxFVkJRVVVzUjBGQlJ5eEpRVUZKTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdiMEpCUTNaRUxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8yOUNRVWxvUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8zZENRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN2FVSkJReTlFTzJkQ1FVVkVMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETzI5Q1FVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVOc1JqdFpRVU5FTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU0xUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTJRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdiMEpCUXpWQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRWQ3hEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenR2UWtGRGVrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3ZDBKQlEySXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU5TTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzNkQ1FVTjZReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN2NVSkJReTlETzJsQ1FVTktPMkZCUTBvN1UwRkRTanRoUVVGTk8xbEJRMGdzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjJRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlF6RkNPMGxCUTB3c1EwRkJRenRKUVVORUxHbEVRVUZuUWl4SFFVRm9RaXhWUVVGcFFpeERRVUZYTEVWQlFVVXNRMEZCVnl4RlFVRkZMRVZCUVZVc1JVRkJSU3hGUVVGVk8xRkJRemRFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFbEJRVWtzVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRjRVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hqUVVGakxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU12UXp0SlFVTk1MRU5CUVVNN1NVRkRSQ3g1UTBGQlVTeEhRVUZTTEZWQlFWTXNRMEZCVnl4RlFVRkZMRVZCUVZVN1VVRkROVUlzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGRFSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETVVRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU40UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRk8yZENRVUZGTEZOQlFWTTdXVUZEZGtJc1NVRkJTU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRhRUlzUTBGQlF5eEhRVUZITEd0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTndReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6bERMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRGFrUTdVVUZEUkN4UFFVRlBMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFVTlBMR2RFUVVGbExFZEJRWFpDTEZWQlFYZENMRU5CUVdNc1JVRkJSU3hGUVVGVkxFVkJRVVVzUlVGQlZUdFJRVU14UkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVNelF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeFZRVUZWTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVU16UkN4UFFVRlBMRWxCUVVrc1EwRkJRenRoUVVObU8xTkJRMG83VVVGRFJDeFBRVUZQTEV0QlFVc3NRMEZCUXp0SlFVTnFRaXhEUVVGRE8wbEJRMHdzTmtKQlFVTTdRVUZCUkN4RFFVRkRMRUZCYUVWRUxFbEJaMFZETzBGQmFFVlpMSGRFUVVGelFqdEJRV3RGYmtNc1UwRkJVeXhWUVVGVkxFTkJRVU1zUTBGQll5eEZRVUZGTEVOQlFWVTdTVUZETVVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzBsQlEyUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjBReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eHhRa0ZCVXl4RFFVRkRMR2RDUVVGblFpeERRVU5vUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlExWXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVU5XTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU4wUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRMklzUTBGQlF6dFJRVU5PTEVsQlFVa3NSMEZCUnp0WlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZETTBJN1NVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5vUWl4RFFVRkRPMEZCUlVRc1UwRkJaMElzVVVGQlVTeERRVUZETEVOQlFWVXNSVUZCUlN4RFFVRlZPMGxCUlRORExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOMlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4SlFVRkpMRlZCUVZVc1JVRkJSU3hEUVVGRE8wbEJRekZDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRlRUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyNURMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTmtMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRiRUlzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnVReXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRaQ3hKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMnhDTEVsQlFVa3NUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUTJoRExFbEJRVWtzVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFsQlEyaERMRWxCUVVrc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJRMmhETEVsQlFVa3NUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUTJoRExFbEJRVWtzVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFsQlEyaERMRWxCUVVrc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJRMmhETEVsQlFVa3NUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEUxQlFVMHNSMEZCUnl4RFFVRkRPMjFDUVVOeVF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNSVUZCUlR0blFrRkRla01zUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYmtNN2FVSkJRVTBzU1VGQlNTeE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTTdiVUpCUXpWRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzJkQ1FVTjZReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU51UXp0cFFrRkJUU3hKUVVGSkxFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1NVRkJTU3hOUVVGTkxFbEJRVWtzUTBGQlF6dHRRa0ZETlVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRTFCUVUwc1NVRkJTU3hEUVVGRExFVkJRVVU3WjBKQlEzcERMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMjVETzJsQ1FVRk5MRWxCUVVrc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRTFCUVUwc1NVRkJTU3hEUVVGRE8yMUNRVU0xUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhKUVVGSkxFMUJRVTBzUjBGQlJ5eERRVUZETEVsQlFVa3NUVUZCVFN4SlFVRkpMRU5CUVVNc1JVRkJSVHRuUWtGRGVrTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhKUVVGSkxGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRia003VTBGRFNqdExRVU5LTzBsQlEwUXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJiRU5FTERSQ1FXdERRenRCUVVWRUxGTkJRVk1zYVVKQlFXbENMRU5CUVVNc1EwRkJVU3hGUVVGRkxFbEJRV0U3U1VGRE9VTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdVVUZEZGtNc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUVVVc1QwRkJUeXhMUVVGTExFTkJRVU03U1VGRGNrUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRhRUlzUTBGQlF6dEJRVVZFTEZOQlFWTXNVMEZCVXl4RFFVRkRMRU5CUVZVc1JVRkJSU3hEUVVGVk8wbEJRM0pETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVhoQ0xFTkJRWGRDTEVOQlFVTXNRMEZCUXp0QlFVTnVSQ3hEUVVGRE8wRkJSVVFzVTBGQlowSXNXVUZCV1N4RFFVRkRMRU5CUVZVc1JVRkJSU3hEUVVGVk8wbEJReTlETEVsQlFVa3NVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTnFReXhKUVVGSkxGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUVVVc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRGFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjBReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNMElzU1VGQlNTeFZRVUZWTEVOQlFVTXNTVUZCU1N4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETzFsQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNN1MwRkRiRVk3U1VGRFJDeFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTnFRaXhEUVVGRE8wRkJVa1FzYjBOQlVVTWlmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIHBhY2tpbmdPcHRpb25zID0ge1xyXG4gICAgUEFERElORzogMTAsXHJcbiAgICBHT0xERU5fU0VDVElPTjogKDEgKyBNYXRoLnNxcnQoNSkpIC8gMixcclxuICAgIEZMT0FUX0VQU0lMT046IDAuMDAwMSxcclxuICAgIE1BWF9JTkVSQVRJT05TOiAxMDBcclxufTtcclxuZnVuY3Rpb24gYXBwbHlQYWNraW5nKGdyYXBocywgdywgaCwgbm9kZV9zaXplLCBkZXNpcmVkX3JhdGlvLCBjZW50ZXJHcmFwaCkge1xyXG4gICAgaWYgKGRlc2lyZWRfcmF0aW8gPT09IHZvaWQgMCkgeyBkZXNpcmVkX3JhdGlvID0gMTsgfVxyXG4gICAgaWYgKGNlbnRlckdyYXBoID09PSB2b2lkIDApIHsgY2VudGVyR3JhcGggPSB0cnVlOyB9XHJcbiAgICB2YXIgaW5pdF94ID0gMCwgaW5pdF95ID0gMCwgc3ZnX3dpZHRoID0gdywgc3ZnX2hlaWdodCA9IGgsIGRlc2lyZWRfcmF0aW8gPSB0eXBlb2YgZGVzaXJlZF9yYXRpbyAhPT0gJ3VuZGVmaW5lZCcgPyBkZXNpcmVkX3JhdGlvIDogMSwgbm9kZV9zaXplID0gdHlwZW9mIG5vZGVfc2l6ZSAhPT0gJ3VuZGVmaW5lZCcgPyBub2RlX3NpemUgOiAwLCByZWFsX3dpZHRoID0gMCwgcmVhbF9oZWlnaHQgPSAwLCBtaW5fd2lkdGggPSAwLCBnbG9iYWxfYm90dG9tID0gMCwgbGluZSA9IFtdO1xyXG4gICAgaWYgKGdyYXBocy5sZW5ndGggPT0gMClcclxuICAgICAgICByZXR1cm47XHJcbiAgICBjYWxjdWxhdGVfYmIoZ3JhcGhzKTtcclxuICAgIGFwcGx5KGdyYXBocywgZGVzaXJlZF9yYXRpbyk7XHJcbiAgICBpZiAoY2VudGVyR3JhcGgpIHtcclxuICAgICAgICBwdXRfbm9kZXNfdG9fcmlnaHRfcG9zaXRpb25zKGdyYXBocyk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVfYmIoZ3JhcGhzKSB7XHJcbiAgICAgICAgZ3JhcGhzLmZvckVhY2goZnVuY3Rpb24gKGcpIHtcclxuICAgICAgICAgICAgY2FsY3VsYXRlX3NpbmdsZV9iYihnKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBmdW5jdGlvbiBjYWxjdWxhdGVfc2luZ2xlX2JiKGdyYXBoKSB7XHJcbiAgICAgICAgICAgIHZhciBtaW5feCA9IE51bWJlci5NQVhfVkFMVUUsIG1pbl95ID0gTnVtYmVyLk1BWF9WQUxVRSwgbWF4X3ggPSAwLCBtYXhfeSA9IDA7XHJcbiAgICAgICAgICAgIGdyYXBoLmFycmF5LmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgIHZhciB3ID0gdHlwZW9mIHYud2lkdGggIT09ICd1bmRlZmluZWQnID8gdi53aWR0aCA6IG5vZGVfc2l6ZTtcclxuICAgICAgICAgICAgICAgIHZhciBoID0gdHlwZW9mIHYuaGVpZ2h0ICE9PSAndW5kZWZpbmVkJyA/IHYuaGVpZ2h0IDogbm9kZV9zaXplO1xyXG4gICAgICAgICAgICAgICAgdyAvPSAyO1xyXG4gICAgICAgICAgICAgICAgaCAvPSAyO1xyXG4gICAgICAgICAgICAgICAgbWF4X3ggPSBNYXRoLm1heCh2LnggKyB3LCBtYXhfeCk7XHJcbiAgICAgICAgICAgICAgICBtaW5feCA9IE1hdGgubWluKHYueCAtIHcsIG1pbl94KTtcclxuICAgICAgICAgICAgICAgIG1heF95ID0gTWF0aC5tYXgodi55ICsgaCwgbWF4X3kpO1xyXG4gICAgICAgICAgICAgICAgbWluX3kgPSBNYXRoLm1pbih2LnkgLSBoLCBtaW5feSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBncmFwaC53aWR0aCA9IG1heF94IC0gbWluX3g7XHJcbiAgICAgICAgICAgIGdyYXBoLmhlaWdodCA9IG1heF95IC0gbWluX3k7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcHV0X25vZGVzX3RvX3JpZ2h0X3Bvc2l0aW9ucyhncmFwaHMpIHtcclxuICAgICAgICBncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICB2YXIgY2VudGVyID0geyB4OiAwLCB5OiAwIH07XHJcbiAgICAgICAgICAgIGcuYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xyXG4gICAgICAgICAgICAgICAgY2VudGVyLnggKz0gbm9kZS54O1xyXG4gICAgICAgICAgICAgICAgY2VudGVyLnkgKz0gbm9kZS55O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY2VudGVyLnggLz0gZy5hcnJheS5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNlbnRlci55IC89IGcuYXJyYXkubGVuZ3RoO1xyXG4gICAgICAgICAgICB2YXIgY29ybmVyID0geyB4OiBjZW50ZXIueCAtIGcud2lkdGggLyAyLCB5OiBjZW50ZXIueSAtIGcuaGVpZ2h0IC8gMiB9O1xyXG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0geyB4OiBnLnggLSBjb3JuZXIueCArIHN2Z193aWR0aCAvIDIgLSByZWFsX3dpZHRoIC8gMiwgeTogZy55IC0gY29ybmVyLnkgKyBzdmdfaGVpZ2h0IC8gMiAtIHJlYWxfaGVpZ2h0IC8gMiB9O1xyXG4gICAgICAgICAgICBnLmFycmF5LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcclxuICAgICAgICAgICAgICAgIG5vZGUueCArPSBvZmZzZXQueDtcclxuICAgICAgICAgICAgICAgIG5vZGUueSArPSBvZmZzZXQueTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBhcHBseShkYXRhLCBkZXNpcmVkX3JhdGlvKSB7XHJcbiAgICAgICAgdmFyIGN1cnJfYmVzdF9mID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xyXG4gICAgICAgIHZhciBjdXJyX2Jlc3QgPSAwO1xyXG4gICAgICAgIGRhdGEuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYi5oZWlnaHQgLSBhLmhlaWdodDsgfSk7XHJcbiAgICAgICAgbWluX3dpZHRoID0gZGF0YS5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGEud2lkdGggPCBiLndpZHRoID8gYS53aWR0aCA6IGIud2lkdGg7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdmFyIGxlZnQgPSB4MSA9IG1pbl93aWR0aDtcclxuICAgICAgICB2YXIgcmlnaHQgPSB4MiA9IGdldF9lbnRpcmVfd2lkdGgoZGF0YSk7XHJcbiAgICAgICAgdmFyIGl0ZXJhdGlvbkNvdW50ZXIgPSAwO1xyXG4gICAgICAgIHZhciBmX3gxID0gTnVtYmVyLk1BWF9WQUxVRTtcclxuICAgICAgICB2YXIgZl94MiA9IE51bWJlci5NQVhfVkFMVUU7XHJcbiAgICAgICAgdmFyIGZsYWcgPSAtMTtcclxuICAgICAgICB2YXIgZHggPSBOdW1iZXIuTUFYX1ZBTFVFO1xyXG4gICAgICAgIHZhciBkZiA9IE51bWJlci5NQVhfVkFMVUU7XHJcbiAgICAgICAgd2hpbGUgKChkeCA+IG1pbl93aWR0aCkgfHwgZGYgPiBwYWNraW5nT3B0aW9ucy5GTE9BVF9FUFNJTE9OKSB7XHJcbiAgICAgICAgICAgIGlmIChmbGFnICE9IDEpIHtcclxuICAgICAgICAgICAgICAgIHZhciB4MSA9IHJpZ2h0IC0gKHJpZ2h0IC0gbGVmdCkgLyBwYWNraW5nT3B0aW9ucy5HT0xERU5fU0VDVElPTjtcclxuICAgICAgICAgICAgICAgIHZhciBmX3gxID0gc3RlcChkYXRhLCB4MSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGZsYWcgIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHgyID0gbGVmdCArIChyaWdodCAtIGxlZnQpIC8gcGFja2luZ09wdGlvbnMuR09MREVOX1NFQ1RJT047XHJcbiAgICAgICAgICAgICAgICB2YXIgZl94MiA9IHN0ZXAoZGF0YSwgeDIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGR4ID0gTWF0aC5hYnMoeDEgLSB4Mik7XHJcbiAgICAgICAgICAgIGRmID0gTWF0aC5hYnMoZl94MSAtIGZfeDIpO1xyXG4gICAgICAgICAgICBpZiAoZl94MSA8IGN1cnJfYmVzdF9mKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyX2Jlc3RfZiA9IGZfeDE7XHJcbiAgICAgICAgICAgICAgICBjdXJyX2Jlc3QgPSB4MTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZl94MiA8IGN1cnJfYmVzdF9mKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyX2Jlc3RfZiA9IGZfeDI7XHJcbiAgICAgICAgICAgICAgICBjdXJyX2Jlc3QgPSB4MjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZl94MSA+IGZfeDIpIHtcclxuICAgICAgICAgICAgICAgIGxlZnQgPSB4MTtcclxuICAgICAgICAgICAgICAgIHgxID0geDI7XHJcbiAgICAgICAgICAgICAgICBmX3gxID0gZl94MjtcclxuICAgICAgICAgICAgICAgIGZsYWcgPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmlnaHQgPSB4MjtcclxuICAgICAgICAgICAgICAgIHgyID0geDE7XHJcbiAgICAgICAgICAgICAgICBmX3gyID0gZl94MTtcclxuICAgICAgICAgICAgICAgIGZsYWcgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpdGVyYXRpb25Db3VudGVyKysgPiAxMDApIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0ZXAoZGF0YSwgY3Vycl9iZXN0KTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAoZGF0YSwgbWF4X3dpZHRoKSB7XHJcbiAgICAgICAgbGluZSA9IFtdO1xyXG4gICAgICAgIHJlYWxfd2lkdGggPSAwO1xyXG4gICAgICAgIHJlYWxfaGVpZ2h0ID0gMDtcclxuICAgICAgICBnbG9iYWxfYm90dG9tID0gaW5pdF95O1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgbyA9IGRhdGFbaV07XHJcbiAgICAgICAgICAgIHB1dF9yZWN0KG8sIG1heF93aWR0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhnZXRfcmVhbF9yYXRpbygpIC0gZGVzaXJlZF9yYXRpbyk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwdXRfcmVjdChyZWN0LCBtYXhfd2lkdGgpIHtcclxuICAgICAgICB2YXIgcGFyZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoKGxpbmVbaV0uc3BhY2VfbGVmdCA+PSByZWN0LmhlaWdodCkgJiYgKGxpbmVbaV0ueCArIGxpbmVbaV0ud2lkdGggKyByZWN0LndpZHRoICsgcGFja2luZ09wdGlvbnMuUEFERElORyAtIG1heF93aWR0aCkgPD0gcGFja2luZ09wdGlvbnMuRkxPQVRfRVBTSUxPTikge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50ID0gbGluZVtpXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxpbmUucHVzaChyZWN0KTtcclxuICAgICAgICBpZiAocGFyZW50ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmVjdC54ID0gcGFyZW50LnggKyBwYXJlbnQud2lkdGggKyBwYWNraW5nT3B0aW9ucy5QQURESU5HO1xyXG4gICAgICAgICAgICByZWN0LnkgPSBwYXJlbnQuYm90dG9tO1xyXG4gICAgICAgICAgICByZWN0LnNwYWNlX2xlZnQgPSByZWN0LmhlaWdodDtcclxuICAgICAgICAgICAgcmVjdC5ib3R0b20gPSByZWN0Lnk7XHJcbiAgICAgICAgICAgIHBhcmVudC5zcGFjZV9sZWZ0IC09IHJlY3QuaGVpZ2h0ICsgcGFja2luZ09wdGlvbnMuUEFERElORztcclxuICAgICAgICAgICAgcGFyZW50LmJvdHRvbSArPSByZWN0LmhlaWdodCArIHBhY2tpbmdPcHRpb25zLlBBRERJTkc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZWN0LnkgPSBnbG9iYWxfYm90dG9tO1xyXG4gICAgICAgICAgICBnbG9iYWxfYm90dG9tICs9IHJlY3QuaGVpZ2h0ICsgcGFja2luZ09wdGlvbnMuUEFERElORztcclxuICAgICAgICAgICAgcmVjdC54ID0gaW5pdF94O1xyXG4gICAgICAgICAgICByZWN0LmJvdHRvbSA9IHJlY3QueTtcclxuICAgICAgICAgICAgcmVjdC5zcGFjZV9sZWZ0ID0gcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZWN0LnkgKyByZWN0LmhlaWdodCAtIHJlYWxfaGVpZ2h0ID4gLXBhY2tpbmdPcHRpb25zLkZMT0FUX0VQU0lMT04pXHJcbiAgICAgICAgICAgIHJlYWxfaGVpZ2h0ID0gcmVjdC55ICsgcmVjdC5oZWlnaHQgLSBpbml0X3k7XHJcbiAgICAgICAgaWYgKHJlY3QueCArIHJlY3Qud2lkdGggLSByZWFsX3dpZHRoID4gLXBhY2tpbmdPcHRpb25zLkZMT0FUX0VQU0lMT04pXHJcbiAgICAgICAgICAgIHJlYWxfd2lkdGggPSByZWN0LnggKyByZWN0LndpZHRoIC0gaW5pdF94O1xyXG4gICAgfVxyXG4gICAgO1xyXG4gICAgZnVuY3Rpb24gZ2V0X2VudGlyZV93aWR0aChkYXRhKSB7XHJcbiAgICAgICAgdmFyIHdpZHRoID0gMDtcclxuICAgICAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKGQpIHsgcmV0dXJuIHdpZHRoICs9IGQud2lkdGggKyBwYWNraW5nT3B0aW9ucy5QQURESU5HOyB9KTtcclxuICAgICAgICByZXR1cm4gd2lkdGg7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZXRfcmVhbF9yYXRpbygpIHtcclxuICAgICAgICByZXR1cm4gKHJlYWxfd2lkdGggLyByZWFsX2hlaWdodCk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5hcHBseVBhY2tpbmcgPSBhcHBseVBhY2tpbmc7XHJcbmZ1bmN0aW9uIHNlcGFyYXRlR3JhcGhzKG5vZGVzLCBsaW5rcykge1xyXG4gICAgdmFyIG1hcmtzID0ge307XHJcbiAgICB2YXIgd2F5cyA9IHt9O1xyXG4gICAgdmFyIGdyYXBocyA9IFtdO1xyXG4gICAgdmFyIGNsdXN0ZXJzID0gMDtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgbGluayA9IGxpbmtzW2ldO1xyXG4gICAgICAgIHZhciBuMSA9IGxpbmsuc291cmNlO1xyXG4gICAgICAgIHZhciBuMiA9IGxpbmsudGFyZ2V0O1xyXG4gICAgICAgIGlmICh3YXlzW24xLmluZGV4XSlcclxuICAgICAgICAgICAgd2F5c1tuMS5pbmRleF0ucHVzaChuMik7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB3YXlzW24xLmluZGV4XSA9IFtuMl07XHJcbiAgICAgICAgaWYgKHdheXNbbjIuaW5kZXhdKVxyXG4gICAgICAgICAgICB3YXlzW24yLmluZGV4XS5wdXNoKG4xKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHdheXNbbjIuaW5kZXhdID0gW24xXTtcclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xyXG4gICAgICAgIGlmIChtYXJrc1tub2RlLmluZGV4XSlcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgZXhwbG9yZV9ub2RlKG5vZGUsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZXhwbG9yZV9ub2RlKG4sIGlzX25ldykge1xyXG4gICAgICAgIGlmIChtYXJrc1tuLmluZGV4XSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgaWYgKGlzX25ldykge1xyXG4gICAgICAgICAgICBjbHVzdGVycysrO1xyXG4gICAgICAgICAgICBncmFwaHMucHVzaCh7IGFycmF5OiBbXSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWFya3Nbbi5pbmRleF0gPSBjbHVzdGVycztcclxuICAgICAgICBncmFwaHNbY2x1c3RlcnMgLSAxXS5hcnJheS5wdXNoKG4pO1xyXG4gICAgICAgIHZhciBhZGphY2VudCA9IHdheXNbbi5pbmRleF07XHJcbiAgICAgICAgaWYgKCFhZGphY2VudClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYWRqYWNlbnQubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgZXhwbG9yZV9ub2RlKGFkamFjZW50W2pdLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyYXBocztcclxufVxyXG5leHBvcnRzLnNlcGFyYXRlR3JhcGhzID0gc2VwYXJhdGVHcmFwaHM7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFHRnVaR3hsWkdselkyOXVibVZqZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZWMlZpUTI5c1lTOXpjbU12YUdGdVpHeGxaR2x6WTI5dWJtVmpkR1ZrTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVWtzU1VGQlNTeGpRVUZqTEVkQlFVYzdTVUZEYWtJc1QwRkJUeXhGUVVGRkxFVkJRVVU3U1VGRFdDeGpRVUZqTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNN1NVRkRkRU1zWVVGQllTeEZRVUZGTEUxQlFVMDdTVUZEY2tJc1kwRkJZeXhGUVVGRkxFZEJRVWM3UTBGRGRFSXNRMEZCUXp0QlFVZEdMRk5CUVdkQ0xGbEJRVmtzUTBGQlF5eE5RVUZwUWl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVTBGQlV5eEZRVUZGTEdGQlFXbENMRVZCUVVVc1YwRkJhMEk3U1VGQmNrTXNPRUpCUVVFc1JVRkJRU3hwUWtGQmFVSTdTVUZCUlN3MFFrRkJRU3hGUVVGQkxHdENRVUZyUWp0SlFVVnNSeXhKUVVGSkxFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlExWXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkZWaXhUUVVGVExFZEJRVWNzUTBGQlF5eEZRVU5pTEZWQlFWVXNSMEZCUnl4RFFVRkRMRVZCUldRc1lVRkJZU3hIUVVGSExFOUJRVThzWVVGQllTeExRVUZMTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlEzaEZMRk5CUVZNc1IwRkJSeXhQUVVGUExGTkJRVk1zUzBGQlN5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVVUxUkN4VlFVRlZMRWRCUVVjc1EwRkJReXhGUVVOa0xGZEJRVmNzUjBGQlJ5eERRVUZETEVWQlEyWXNVMEZCVXl4SFFVRkhMRU5CUVVNc1JVRkZZaXhoUVVGaExFZEJRVWNzUTBGQlF5eEZRVU5xUWl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJSV1FzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNN1VVRkRiRUlzVDBGQlR6dEpRVlZZTEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOeVFpeExRVUZMTEVOQlFVTXNUVUZCVFN4RlFVRkZMR0ZCUVdFc1EwRkJReXhEUVVGRE8wbEJRemRDTEVsQlFVY3NWMEZCVnl4RlFVRkZPMUZCUTFvc05FSkJRVFJDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRlRU03U1VGSFJDeFRRVUZUTEZsQlFWa3NRMEZCUXl4TlFVRk5PMUZCUlhoQ0xFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTNSQ0xHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGQk8xRkJRekZDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc1UwRkJVeXh0UWtGQmJVSXNRMEZCUXl4TFFVRkxPMWxCUXpsQ0xFbEJRVWtzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRVZCUVVVc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF5eFRRVUZUTEVWQlEyeEVMRXRCUVVzc1IwRkJSeXhEUVVGRExFVkJRVVVzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVVjZRaXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNN1owSkJRek5DTEVsQlFVa3NRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRExFdEJRVXNzUzBGQlN5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXp0blFrRkROMFFzU1VGQlNTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hMUVVGTExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETzJkQ1FVTXZSQ3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTlFMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlExQXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03WjBKQlEycERMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzJkQ1FVTnFReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0blFrRkRha01zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1dVRkRja01zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZGU0N4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZETlVJc1MwRkJTeXhEUVVGRExFMUJRVTBzUjBGQlJ5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTJwRExFTkJRVU03U1VGRFRDeERRVUZETzBsQmRVTkVMRk5CUVZNc05FSkJRVFJDTEVOQlFVTXNUVUZCVFR0UlFVTjRReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXp0WlFVVjBRaXhKUVVGSkxFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlJUVkNMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNTVUZCU1R0blFrRkRNVUlzVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU51UWl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZGtJc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRlNDeE5RVUZOTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETzFsQlF6TkNMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN1dVRkhNMElzU1VGQlNTeE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEzWkZMRWxCUVVrc1RVRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eFRRVUZUTEVkQlFVY3NRMEZCUXl4SFFVRkhMRlZCUVZVc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVkQlFVY3NRMEZCUXl4SFFVRkhMRmRCUVZjc1IwRkJSeXhEUVVGRExFVkJRVU1zUTBGQlF6dFpRVWQ2U0N4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVsQlFVazdaMEpCUXpGQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGJrSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzWkNMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMUFzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEVUN4RFFVRkRPMGxCU1VRc1UwRkJVeXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEdGQlFXRTdVVUZET1VJc1NVRkJTU3hYUVVGWExFZEJRVWNzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhEUVVGRE8xRkJRek5ETEVsQlFVa3NVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlRORUxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRGJFTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNN1VVRkRha1FzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGU0N4SlFVRkpMRWxCUVVrc1IwRkJSeXhGUVVGRkxFZEJRVWNzVTBGQlV5eERRVUZETzFGQlF6RkNMRWxCUVVrc1MwRkJTeXhIUVVGSExFVkJRVVVzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU40UXl4SlFVRkpMR2RDUVVGblFpeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVjZRaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUXpWQ0xFbEJRVWtzU1VGQlNTeEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNN1VVRkROVUlzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkhaQ3hKUVVGSkxFVkJRVVVzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUXpGQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNN1VVRkZNVUlzVDBGQlR5eERRVUZETEVWQlFVVXNSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzWTBGQll5eERRVUZETEdGQlFXRXNSVUZCUlR0WlFVVXhSQ3hKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEVWQlFVVTdaMEpCUTFnc1NVRkJTU3hGUVVGRkxFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExHTkJRV01zUTBGQlF5eGpRVUZqTEVOQlFVTTdaMEpCUTJoRkxFbEJRVWtzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03WVVGRE4wSTdXVUZEUkN4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFVkJRVVU3WjBKQlExZ3NTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMR05CUVdNc1EwRkJReXhqUVVGakxFTkJRVU03WjBKQlF5OUVMRWxCUVVrc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1lVRkROMEk3V1VGRlJDeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdXVUZEZGtJc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJSVE5DTEVsQlFVa3NTVUZCU1N4SFFVRkhMRmRCUVZjc1JVRkJSVHRuUWtGRGNFSXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRuUWtGRGJrSXNVMEZCVXl4SFFVRkhMRVZCUVVVc1EwRkJRenRoUVVOc1FqdFpRVVZFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRmRCUVZjc1JVRkJSVHRuUWtGRGNFSXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRuUWtGRGJrSXNVMEZCVXl4SFFVRkhMRVZCUVVVc1EwRkJRenRoUVVOc1FqdFpRVVZFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1JVRkJSVHRuUWtGRFlpeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMmRDUVVOV0xFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdaMEpCUTFJc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dG5Ra0ZEV2l4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRE8yRkJRMW83YVVKQlFVMDdaMEpCUTBnc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF6dG5Ra0ZEV0N4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRE8yZENRVU5TTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1owSkJRMW9zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTmFPMWxCUlVRc1NVRkJTU3huUWtGQlowSXNSVUZCUlN4SFFVRkhMRWRCUVVjc1JVRkJSVHRuUWtGRE1VSXNUVUZCVFR0aFFVTlVPMU5CUTBvN1VVRkZSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMGxCUXpGQ0xFTkJRVU03U1VGSlJDeFRRVUZUTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1UwRkJVenRSUVVONlFpeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTFZc1ZVRkJWU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5tTEZkQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRhRUlzWVVGQllTeEhRVUZITEUxQlFVMHNRMEZCUXp0UlFVVjJRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTnNReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRhRUlzVVVGQlVTeERRVUZETEVOQlFVTXNSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJRenRUUVVNeFFqdFJRVVZFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhqUVVGakxFVkJRVVVzUjBGQlJ5eGhRVUZoTEVOQlFVTXNRMEZCUXp0SlFVTjBSQ3hEUVVGRE8wbEJSMFFzVTBGQlV5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRk5CUVZNN1VVRkhOMElzU1VGQlNTeE5RVUZOTEVkQlFVY3NVMEZCVXl4RFFVRkRPMUZCUlhaQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTJ4RExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMR05CUVdNc1EwRkJReXhQUVVGUExFZEJRVWNzVTBGQlV5eERRVUZETEVsQlFVa3NZMEZCWXl4RFFVRkRMR0ZCUVdFc1JVRkJSVHRuUWtGRGRFb3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtJc1RVRkJUVHRoUVVOVU8xTkJRMG83VVVGRlJDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSV2hDTEVsQlFVa3NUVUZCVFN4TFFVRkxMRk5CUVZNc1JVRkJSVHRaUVVOMFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4alFVRmpMRU5CUVVNc1QwRkJUeXhEUVVGRE8xbEJRekZFTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVU4yUWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdXVUZET1VJc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xFMUJRVTBzUTBGQlF5eFZRVUZWTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhqUVVGakxFTkJRVU1zVDBGQlR5eERRVUZETzFsQlF6RkVMRTFCUVUwc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4alFVRmpMRU5CUVVNc1QwRkJUeXhEUVVGRE8xTkJRM3BFTzJGQlFVMDdXVUZEU0N4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExHRkJRV0VzUTBGQlF6dFpRVU4yUWl4aFFVRmhMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eGpRVUZqTEVOQlFVTXNUMEZCVHl4RFFVRkRPMWxCUTNSRUxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRPMWxCUTJoQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOeVFpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VTBGRGFrTTdVVUZGUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4WFFVRlhMRWRCUVVjc1EwRkJReXhqUVVGakxFTkJRVU1zWVVGQllUdFpRVUZGTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUTNCSUxFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExGVkJRVlVzUjBGQlJ5eERRVUZETEdOQlFXTXNRMEZCUXl4aFFVRmhPMWxCUVVVc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU03U1VGRGNFZ3NRMEZCUXp0SlFVRkJMRU5CUVVNN1NVRkZSaXhUUVVGVExHZENRVUZuUWl4RFFVRkRMRWxCUVVrN1VVRkRNVUlzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJRc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4UFFVRlBMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITEdOQlFXTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5xUml4UFFVRlBMRXRCUVVzc1EwRkJRenRKUVVOcVFpeERRVUZETzBsQlJVUXNVMEZCVXl4alFVRmpPMUZCUTI1Q0xFOUJRVThzUTBGQlF5eFZRVUZWTEVkQlFVY3NWMEZCVnl4RFFVRkRMRU5CUVVNN1NVRkRkRU1zUTBGQlF6dEJRVU5NTEVOQlFVTTdRVUV4VUVRc2IwTkJNRkJETzBGQlRVUXNVMEZCWjBJc1kwRkJZeXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTzBsQlEzWkRMRWxCUVVrc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU5tTEVsQlFVa3NTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOa0xFbEJRVWtzVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTm9RaXhKUVVGSkxGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGYWtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZEYmtNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRja0lzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRE8xbEJRMlFzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdPMWxCUlhoQ0xFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVVV4UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETzFsQlEyUXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN08xbEJSWGhDTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0TFFVTTNRanRKUVVWRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMUZCUTI1RExFbEJRVWtzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1FpeEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8xbEJRVVVzVTBGQlV6dFJRVU5vUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6VkNPMGxCUlVRc1UwRkJVeXhaUVVGWkxFTkJRVU1zUTBGQlF5eEZRVUZGTEUxQlFVMDdVVUZETTBJc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRk5CUVZNN1dVRkJSU3hQUVVGUE8xRkJRM3BETEVsQlFVa3NUVUZCVFN4RlFVRkZPMWxCUTFJc1VVRkJVU3hGUVVGRkxFTkJRVU03V1VGRFdDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVMEZET1VJN1VVRkRSQ3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRkZCUVZFc1EwRkJRenRSUVVNeFFpeE5RVUZOTEVOQlFVTXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRia01zU1VGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU0zUWl4SlFVRkpMRU5CUVVNc1VVRkJVVHRaUVVGRkxFOUJRVTg3VVVGRmRFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGRFTXNXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0VFFVTndRenRKUVVOTUxFTkJRVU03U1VGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTnNRaXhEUVVGRE8wRkJOVU5FTEhkRFFUUkRReUo5IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIHBvd2VyZ3JhcGggPSByZXF1aXJlKFwiLi9wb3dlcmdyYXBoXCIpO1xyXG52YXIgbGlua2xlbmd0aHNfMSA9IHJlcXVpcmUoXCIuL2xpbmtsZW5ndGhzXCIpO1xyXG52YXIgZGVzY2VudF8xID0gcmVxdWlyZShcIi4vZGVzY2VudFwiKTtcclxudmFyIHJlY3RhbmdsZV8xID0gcmVxdWlyZShcIi4vcmVjdGFuZ2xlXCIpO1xyXG52YXIgc2hvcnRlc3RwYXRoc18xID0gcmVxdWlyZShcIi4vc2hvcnRlc3RwYXRoc1wiKTtcclxudmFyIGdlb21fMSA9IHJlcXVpcmUoXCIuL2dlb21cIik7XHJcbnZhciBoYW5kbGVkaXNjb25uZWN0ZWRfMSA9IHJlcXVpcmUoXCIuL2hhbmRsZWRpc2Nvbm5lY3RlZFwiKTtcclxudmFyIEV2ZW50VHlwZTtcclxuKGZ1bmN0aW9uIChFdmVudFR5cGUpIHtcclxuICAgIEV2ZW50VHlwZVtFdmVudFR5cGVbXCJzdGFydFwiXSA9IDBdID0gXCJzdGFydFwiO1xyXG4gICAgRXZlbnRUeXBlW0V2ZW50VHlwZVtcInRpY2tcIl0gPSAxXSA9IFwidGlja1wiO1xyXG4gICAgRXZlbnRUeXBlW0V2ZW50VHlwZVtcImVuZFwiXSA9IDJdID0gXCJlbmRcIjtcclxufSkoRXZlbnRUeXBlID0gZXhwb3J0cy5FdmVudFR5cGUgfHwgKGV4cG9ydHMuRXZlbnRUeXBlID0ge30pKTtcclxuO1xyXG5mdW5jdGlvbiBpc0dyb3VwKGcpIHtcclxuICAgIHJldHVybiB0eXBlb2YgZy5sZWF2ZXMgIT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBnLmdyb3VwcyAhPT0gJ3VuZGVmaW5lZCc7XHJcbn1cclxudmFyIExheW91dCA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBMYXlvdXQoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB0aGlzLl9jYW52YXNTaXplID0gWzEsIDFdO1xyXG4gICAgICAgIHRoaXMuX2xpbmtEaXN0YW5jZSA9IDIwO1xyXG4gICAgICAgIHRoaXMuX2RlZmF1bHROb2RlU2l6ZSA9IDEwO1xyXG4gICAgICAgIHRoaXMuX2xpbmtMZW5ndGhDYWxjdWxhdG9yID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9saW5rVHlwZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fYXZvaWRPdmVybGFwcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZURpc2Nvbm5lY3RlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fcnVubmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX25vZGVzID0gW107XHJcbiAgICAgICAgdGhpcy5fZ3JvdXBzID0gW107XHJcbiAgICAgICAgdGhpcy5fcm9vdEdyb3VwID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9saW5rcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2NvbnN0cmFpbnRzID0gW107XHJcbiAgICAgICAgdGhpcy5fZGlzdGFuY2VNYXRyaXggPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2Rlc2NlbnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2RpcmVjdGVkTGlua0NvbnN0cmFpbnRzID0gbnVsbDtcclxuICAgICAgICB0aGlzLl90aHJlc2hvbGQgPSAwLjAxO1xyXG4gICAgICAgIHRoaXMuX3Zpc2liaWxpdHlHcmFwaCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fZ3JvdXBDb21wYWN0bmVzcyA9IDFlLTY7XHJcbiAgICAgICAgdGhpcy5ldmVudCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5saW5rQWNjZXNzb3IgPSB7XHJcbiAgICAgICAgICAgIGdldFNvdXJjZUluZGV4OiBMYXlvdXQuZ2V0U291cmNlSW5kZXgsXHJcbiAgICAgICAgICAgIGdldFRhcmdldEluZGV4OiBMYXlvdXQuZ2V0VGFyZ2V0SW5kZXgsXHJcbiAgICAgICAgICAgIHNldExlbmd0aDogTGF5b3V0LnNldExpbmtMZW5ndGgsXHJcbiAgICAgICAgICAgIGdldFR5cGU6IGZ1bmN0aW9uIChsKSB7IHJldHVybiB0eXBlb2YgX3RoaXMuX2xpbmtUeXBlID09PSBcImZ1bmN0aW9uXCIgPyBfdGhpcy5fbGlua1R5cGUobCkgOiAwOyB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIExheW91dC5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZSwgbGlzdGVuZXIpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZXZlbnQpXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQgPSB7fTtcclxuICAgICAgICBpZiAodHlwZW9mIGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRbRXZlbnRUeXBlW2VdXSA9IGxpc3RlbmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudFtlXSA9IGxpc3RlbmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIGlmICh0aGlzLmV2ZW50ICYmIHR5cGVvZiB0aGlzLmV2ZW50W2UudHlwZV0gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRbZS50eXBlXShlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5raWNrID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHdoaWxlICghdGhpcy50aWNrKCkpXHJcbiAgICAgICAgICAgIDtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnRpY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FscGhhIDwgdGhpcy5fdGhyZXNob2xkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3J1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyKHsgdHlwZTogRXZlbnRUeXBlLmVuZCwgYWxwaGE6IHRoaXMuX2FscGhhID0gMCwgc3RyZXNzOiB0aGlzLl9sYXN0U3RyZXNzIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzLl9ub2Rlcy5sZW5ndGgsIG0gPSB0aGlzLl9saW5rcy5sZW5ndGg7XHJcbiAgICAgICAgdmFyIG8sIGk7XHJcbiAgICAgICAgdGhpcy5fZGVzY2VudC5sb2Nrcy5jbGVhcigpO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcclxuICAgICAgICAgICAgbyA9IHRoaXMuX25vZGVzW2ldO1xyXG4gICAgICAgICAgICBpZiAoby5maXhlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvLnB4ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2Ygby5weSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBvLnB4ID0gby54O1xyXG4gICAgICAgICAgICAgICAgICAgIG8ucHkgPSBvLnk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgcCA9IFtvLnB4LCBvLnB5XTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQubG9ja3MuYWRkKGksIHApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzMSA9IHRoaXMuX2Rlc2NlbnQucnVuZ2VLdXR0YSgpO1xyXG4gICAgICAgIGlmIChzMSA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hbHBoYSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9sYXN0U3RyZXNzICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLl9hbHBoYSA9IHMxO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9sYXN0U3RyZXNzID0gczE7XHJcbiAgICAgICAgdGhpcy51cGRhdGVOb2RlUG9zaXRpb25zKCk7XHJcbiAgICAgICAgdGhpcy50cmlnZ2VyKHsgdHlwZTogRXZlbnRUeXBlLnRpY2ssIGFscGhhOiB0aGlzLl9hbHBoYSwgc3RyZXNzOiB0aGlzLl9sYXN0U3RyZXNzIH0pO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnVwZGF0ZU5vZGVQb3NpdGlvbnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHggPSB0aGlzLl9kZXNjZW50LnhbMF0sIHkgPSB0aGlzLl9kZXNjZW50LnhbMV07XHJcbiAgICAgICAgdmFyIG8sIGkgPSB0aGlzLl9ub2Rlcy5sZW5ndGg7XHJcbiAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICBvID0gdGhpcy5fbm9kZXNbaV07XHJcbiAgICAgICAgICAgIG8ueCA9IHhbaV07XHJcbiAgICAgICAgICAgIG8ueSA9IHlbaV07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUubm9kZXMgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIGlmICghdikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fbm9kZXMubGVuZ3RoID09PSAwICYmIHRoaXMuX2xpbmtzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHZhciBuID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xpbmtzLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBuID0gTWF0aC5tYXgobiwgbC5zb3VyY2UsIGwudGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm9kZXMgPSBuZXcgQXJyYXkoKytuKTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm9kZXNbaV0gPSB7fTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX25vZGVzID0gdjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmdyb3VwcyA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoIXgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ncm91cHM7XHJcbiAgICAgICAgdGhpcy5fZ3JvdXBzID0geDtcclxuICAgICAgICB0aGlzLl9yb290R3JvdXAgPSB7fTtcclxuICAgICAgICB0aGlzLl9ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGcucGFkZGluZyA9PT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgICAgICAgICAgIGcucGFkZGluZyA9IDE7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZy5sZWF2ZXMgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgIGcubGVhdmVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZy5sZWF2ZXNbaV0gPSBfdGhpcy5fbm9kZXNbdl0pLnBhcmVudCA9IGc7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGcuZ3JvdXBzICE9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgICAgICBnLmdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnaSwgaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZ2kgPT09ICdudW1iZXInKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZy5ncm91cHNbaV0gPSBfdGhpcy5fZ3JvdXBzW2dpXSkucGFyZW50ID0gZztcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fcm9vdEdyb3VwLmxlYXZlcyA9IHRoaXMuX25vZGVzLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gdHlwZW9mIHYucGFyZW50ID09PSAndW5kZWZpbmVkJzsgfSk7XHJcbiAgICAgICAgdGhpcy5fcm9vdEdyb3VwLmdyb3VwcyA9IHRoaXMuX2dyb3Vwcy5maWx0ZXIoZnVuY3Rpb24gKGcpIHsgcmV0dXJuIHR5cGVvZiBnLnBhcmVudCA9PT0gJ3VuZGVmaW5lZCc7IH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUucG93ZXJHcmFwaEdyb3VwcyA9IGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgdmFyIGcgPSBwb3dlcmdyYXBoLmdldEdyb3Vwcyh0aGlzLl9ub2RlcywgdGhpcy5fbGlua3MsIHRoaXMubGlua0FjY2Vzc29yLCB0aGlzLl9yb290R3JvdXApO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzKGcuZ3JvdXBzKTtcclxuICAgICAgICBmKGcpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUuYXZvaWRPdmVybGFwcyA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYXZvaWRPdmVybGFwcztcclxuICAgICAgICB0aGlzLl9hdm9pZE92ZXJsYXBzID0gdjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmhhbmRsZURpc2Nvbm5lY3RlZCA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faGFuZGxlRGlzY29ubmVjdGVkO1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZURpc2Nvbm5lY3RlZCA9IHY7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5mbG93TGF5b3V0ID0gZnVuY3Rpb24gKGF4aXMsIG1pblNlcGFyYXRpb24pIHtcclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpXHJcbiAgICAgICAgICAgIGF4aXMgPSAneSc7XHJcbiAgICAgICAgdGhpcy5fZGlyZWN0ZWRMaW5rQ29uc3RyYWludHMgPSB7XHJcbiAgICAgICAgICAgIGF4aXM6IGF4aXMsXHJcbiAgICAgICAgICAgIGdldE1pblNlcGFyYXRpb246IHR5cGVvZiBtaW5TZXBhcmF0aW9uID09PSAnbnVtYmVyJyA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1pblNlcGFyYXRpb247IH0gOiBtaW5TZXBhcmF0aW9uXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmxpbmtzID0gZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5rcztcclxuICAgICAgICB0aGlzLl9saW5rcyA9IHg7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5jb25zdHJhaW50cyA9IGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RyYWludHM7XHJcbiAgICAgICAgdGhpcy5fY29uc3RyYWludHMgPSBjO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUuZGlzdGFuY2VNYXRyaXggPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3RhbmNlTWF0cml4O1xyXG4gICAgICAgIHRoaXMuX2Rpc3RhbmNlTWF0cml4ID0gZDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgIGlmICgheClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NhbnZhc1NpemU7XHJcbiAgICAgICAgdGhpcy5fY2FudmFzU2l6ZSA9IHg7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5kZWZhdWx0Tm9kZVNpemUgPSBmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgIGlmICgheClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHROb2RlU2l6ZTtcclxuICAgICAgICB0aGlzLl9kZWZhdWx0Tm9kZVNpemUgPSB4O1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUuZ3JvdXBDb21wYWN0bmVzcyA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgaWYgKCF4KVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ3JvdXBDb21wYWN0bmVzcztcclxuICAgICAgICB0aGlzLl9ncm91cENvbXBhY3RuZXNzID0geDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmxpbmtEaXN0YW5jZSA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgaWYgKCF4KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5rRGlzdGFuY2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2xpbmtEaXN0YW5jZSA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogK3g7XHJcbiAgICAgICAgdGhpcy5fbGlua0xlbmd0aENhbGN1bGF0b3IgPSBudWxsO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUubGlua1R5cGUgPSBmdW5jdGlvbiAoZikge1xyXG4gICAgICAgIHRoaXMuX2xpbmtUeXBlID0gZjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmNvbnZlcmdlbmNlVGhyZXNob2xkID0gZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICBpZiAoIXgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XHJcbiAgICAgICAgdGhpcy5fdGhyZXNob2xkID0gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiA/IHggOiAreDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmFscGhhID0gZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hbHBoYTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgeCA9ICt4O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fYWxwaGEpIHtcclxuICAgICAgICAgICAgICAgIGlmICh4ID4gMClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hbHBoYSA9IHg7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWxwaGEgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3J1bm5pbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ydW5uaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoeyB0eXBlOiBFdmVudFR5cGUuc3RhcnQsIGFscGhhOiB0aGlzLl9hbHBoYSA9IHggfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5raWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUuZ2V0TGlua0xlbmd0aCA9IGZ1bmN0aW9uIChsaW5rKSB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9saW5rRGlzdGFuY2UgPT09IFwiZnVuY3Rpb25cIiA/ICsodGhpcy5fbGlua0Rpc3RhbmNlKGxpbmspKSA6IHRoaXMuX2xpbmtEaXN0YW5jZTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQuc2V0TGlua0xlbmd0aCA9IGZ1bmN0aW9uIChsaW5rLCBsZW5ndGgpIHtcclxuICAgICAgICBsaW5rLmxlbmd0aCA9IGxlbmd0aDtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmdldExpbmtUeXBlID0gZnVuY3Rpb24gKGxpbmspIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX2xpbmtUeXBlID09PSBcImZ1bmN0aW9uXCIgPyB0aGlzLl9saW5rVHlwZShsaW5rKSA6IDA7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5zeW1tZXRyaWNEaWZmTGlua0xlbmd0aHMgPSBmdW5jdGlvbiAoaWRlYWxMZW5ndGgsIHcpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IDE7IH1cclxuICAgICAgICB0aGlzLmxpbmtEaXN0YW5jZShmdW5jdGlvbiAobCkgeyByZXR1cm4gaWRlYWxMZW5ndGggKiBsLmxlbmd0aDsgfSk7XHJcbiAgICAgICAgdGhpcy5fbGlua0xlbmd0aENhbGN1bGF0b3IgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBsaW5rbGVuZ3Roc18xLnN5bW1ldHJpY0RpZmZMaW5rTGVuZ3RocyhfdGhpcy5fbGlua3MsIF90aGlzLmxpbmtBY2Nlc3Nvciwgdyk7IH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5qYWNjYXJkTGlua0xlbmd0aHMgPSBmdW5jdGlvbiAoaWRlYWxMZW5ndGgsIHcpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IDE7IH1cclxuICAgICAgICB0aGlzLmxpbmtEaXN0YW5jZShmdW5jdGlvbiAobCkgeyByZXR1cm4gaWRlYWxMZW5ndGggKiBsLmxlbmd0aDsgfSk7XHJcbiAgICAgICAgdGhpcy5fbGlua0xlbmd0aENhbGN1bGF0b3IgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBsaW5rbGVuZ3Roc18xLmphY2NhcmRMaW5rTGVuZ3RocyhfdGhpcy5fbGlua3MsIF90aGlzLmxpbmtBY2Nlc3Nvciwgdyk7IH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uIChpbml0aWFsVW5jb25zdHJhaW5lZEl0ZXJhdGlvbnMsIGluaXRpYWxVc2VyQ29uc3RyYWludEl0ZXJhdGlvbnMsIGluaXRpYWxBbGxDb25zdHJhaW50c0l0ZXJhdGlvbnMsIGdyaWRTbmFwSXRlcmF0aW9ucywga2VlcFJ1bm5pbmcsIGNlbnRlckdyYXBoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoaW5pdGlhbFVuY29uc3RyYWluZWRJdGVyYXRpb25zID09PSB2b2lkIDApIHsgaW5pdGlhbFVuY29uc3RyYWluZWRJdGVyYXRpb25zID0gMDsgfVxyXG4gICAgICAgIGlmIChpbml0aWFsVXNlckNvbnN0cmFpbnRJdGVyYXRpb25zID09PSB2b2lkIDApIHsgaW5pdGlhbFVzZXJDb25zdHJhaW50SXRlcmF0aW9ucyA9IDA7IH1cclxuICAgICAgICBpZiAoaW5pdGlhbEFsbENvbnN0cmFpbnRzSXRlcmF0aW9ucyA9PT0gdm9pZCAwKSB7IGluaXRpYWxBbGxDb25zdHJhaW50c0l0ZXJhdGlvbnMgPSAwOyB9XHJcbiAgICAgICAgaWYgKGdyaWRTbmFwSXRlcmF0aW9ucyA9PT0gdm9pZCAwKSB7IGdyaWRTbmFwSXRlcmF0aW9ucyA9IDA7IH1cclxuICAgICAgICBpZiAoa2VlcFJ1bm5pbmcgPT09IHZvaWQgMCkgeyBrZWVwUnVubmluZyA9IHRydWU7IH1cclxuICAgICAgICBpZiAoY2VudGVyR3JhcGggPT09IHZvaWQgMCkgeyBjZW50ZXJHcmFwaCA9IHRydWU7IH1cclxuICAgICAgICB2YXIgaSwgaiwgbiA9IHRoaXMubm9kZXMoKS5sZW5ndGgsIE4gPSBuICsgMiAqIHRoaXMuX2dyb3Vwcy5sZW5ndGgsIG0gPSB0aGlzLl9saW5rcy5sZW5ndGgsIHcgPSB0aGlzLl9jYW52YXNTaXplWzBdLCBoID0gdGhpcy5fY2FudmFzU2l6ZVsxXTtcclxuICAgICAgICB2YXIgeCA9IG5ldyBBcnJheShOKSwgeSA9IG5ldyBBcnJheShOKTtcclxuICAgICAgICB2YXIgRyA9IG51bGw7XHJcbiAgICAgICAgdmFyIGFvID0gdGhpcy5fYXZvaWRPdmVybGFwcztcclxuICAgICAgICB0aGlzLl9ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBpKSB7XHJcbiAgICAgICAgICAgIHYuaW5kZXggPSBpO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYueCA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgIHYueCA9IHcgLyAyLCB2LnkgPSBoIC8gMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB4W2ldID0gdi54LCB5W2ldID0gdi55O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLl9saW5rTGVuZ3RoQ2FsY3VsYXRvcilcclxuICAgICAgICAgICAgdGhpcy5fbGlua0xlbmd0aENhbGN1bGF0b3IoKTtcclxuICAgICAgICB2YXIgZGlzdGFuY2VzO1xyXG4gICAgICAgIGlmICh0aGlzLl9kaXN0YW5jZU1hdHJpeCkge1xyXG4gICAgICAgICAgICBkaXN0YW5jZXMgPSB0aGlzLl9kaXN0YW5jZU1hdHJpeDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGRpc3RhbmNlcyA9IChuZXcgc2hvcnRlc3RwYXRoc18xLkNhbGN1bGF0b3IoTiwgdGhpcy5fbGlua3MsIExheW91dC5nZXRTb3VyY2VJbmRleCwgTGF5b3V0LmdldFRhcmdldEluZGV4LCBmdW5jdGlvbiAobCkgeyByZXR1cm4gX3RoaXMuZ2V0TGlua0xlbmd0aChsKTsgfSkpLkRpc3RhbmNlTWF0cml4KCk7XHJcbiAgICAgICAgICAgIEcgPSBkZXNjZW50XzEuRGVzY2VudC5jcmVhdGVTcXVhcmVNYXRyaXgoTiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gMjsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2xpbmtzLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbC5zb3VyY2UgPT0gXCJudW1iZXJcIilcclxuICAgICAgICAgICAgICAgICAgICBsLnNvdXJjZSA9IF90aGlzLl9ub2Rlc1tsLnNvdXJjZV07XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGwudGFyZ2V0ID09IFwibnVtYmVyXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgbC50YXJnZXQgPSBfdGhpcy5fbm9kZXNbbC50YXJnZXRdO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5fbGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHUgPSBMYXlvdXQuZ2V0U291cmNlSW5kZXgoZSksIHYgPSBMYXlvdXQuZ2V0VGFyZ2V0SW5kZXgoZSk7XHJcbiAgICAgICAgICAgICAgICBHW3VdW3ZdID0gR1t2XVt1XSA9IGUud2VpZ2h0IHx8IDE7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgRCA9IGRlc2NlbnRfMS5EZXNjZW50LmNyZWF0ZVNxdWFyZU1hdHJpeChOLCBmdW5jdGlvbiAoaSwgaikge1xyXG4gICAgICAgICAgICByZXR1cm4gZGlzdGFuY2VzW2ldW2pdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLl9yb290R3JvdXAgJiYgdHlwZW9mIHRoaXMuX3Jvb3RHcm91cC5ncm91cHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHZhciBpID0gbjtcclxuICAgICAgICAgICAgdmFyIGFkZEF0dHJhY3Rpb24gPSBmdW5jdGlvbiAoaSwgaiwgc3RyZW5ndGgsIGlkZWFsRGlzdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIEdbaV1bal0gPSBHW2pdW2ldID0gc3RyZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBEW2ldW2pdID0gRFtqXVtpXSA9IGlkZWFsRGlzdGFuY2U7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnKSB7XHJcbiAgICAgICAgICAgICAgICBhZGRBdHRyYWN0aW9uKGksIGkgKyAxLCBfdGhpcy5fZ3JvdXBDb21wYWN0bmVzcywgMC4xKTtcclxuICAgICAgICAgICAgICAgIHhbaV0gPSAwLCB5W2krK10gPSAwO1xyXG4gICAgICAgICAgICAgICAgeFtpXSA9IDAsIHlbaSsrXSA9IDA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuX3Jvb3RHcm91cCA9IHsgbGVhdmVzOiB0aGlzLl9ub2RlcywgZ3JvdXBzOiBbXSB9O1xyXG4gICAgICAgIHZhciBjdXJDb25zdHJhaW50cyA9IHRoaXMuX2NvbnN0cmFpbnRzIHx8IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLl9kaXJlY3RlZExpbmtDb25zdHJhaW50cykge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmtBY2Nlc3Nvci5nZXRNaW5TZXBhcmF0aW9uID0gdGhpcy5fZGlyZWN0ZWRMaW5rQ29uc3RyYWludHMuZ2V0TWluU2VwYXJhdGlvbjtcclxuICAgICAgICAgICAgY3VyQ29uc3RyYWludHMgPSBjdXJDb25zdHJhaW50cy5jb25jYXQobGlua2xlbmd0aHNfMS5nZW5lcmF0ZURpcmVjdGVkRWRnZUNvbnN0cmFpbnRzKG4sIHRoaXMuX2xpbmtzLCB0aGlzLl9kaXJlY3RlZExpbmtDb25zdHJhaW50cy5heGlzLCAodGhpcy5saW5rQWNjZXNzb3IpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXZvaWRPdmVybGFwcyhmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5fZGVzY2VudCA9IG5ldyBkZXNjZW50XzEuRGVzY2VudChbeCwgeV0sIEQpO1xyXG4gICAgICAgIHRoaXMuX2Rlc2NlbnQubG9ja3MuY2xlYXIoKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgbyA9IHRoaXMuX25vZGVzW2ldO1xyXG4gICAgICAgICAgICBpZiAoby5maXhlZCkge1xyXG4gICAgICAgICAgICAgICAgby5weCA9IG8ueDtcclxuICAgICAgICAgICAgICAgIG8ucHkgPSBvLnk7XHJcbiAgICAgICAgICAgICAgICB2YXIgcCA9IFtvLngsIG8ueV07XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZXNjZW50LmxvY2tzLmFkZChpLCBwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9kZXNjZW50LnRocmVzaG9sZCA9IHRoaXMuX3RocmVzaG9sZDtcclxuICAgICAgICB0aGlzLmluaXRpYWxMYXlvdXQoaW5pdGlhbFVuY29uc3RyYWluZWRJdGVyYXRpb25zLCB4LCB5KTtcclxuICAgICAgICBpZiAoY3VyQ29uc3RyYWludHMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgdGhpcy5fZGVzY2VudC5wcm9qZWN0ID0gbmV3IHJlY3RhbmdsZV8xLlByb2plY3Rpb24odGhpcy5fbm9kZXMsIHRoaXMuX2dyb3VwcywgdGhpcy5fcm9vdEdyb3VwLCBjdXJDb25zdHJhaW50cykucHJvamVjdEZ1bmN0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuX2Rlc2NlbnQucnVuKGluaXRpYWxVc2VyQ29uc3RyYWludEl0ZXJhdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuc2VwYXJhdGVPdmVybGFwcGluZ0NvbXBvbmVudHModywgaCwgY2VudGVyR3JhcGgpO1xyXG4gICAgICAgIHRoaXMuYXZvaWRPdmVybGFwcyhhbyk7XHJcbiAgICAgICAgaWYgKGFvKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHsgdi54ID0geFtpXSwgdi55ID0geVtpXTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQucHJvamVjdCA9IG5ldyByZWN0YW5nbGVfMS5Qcm9qZWN0aW9uKHRoaXMuX25vZGVzLCB0aGlzLl9ncm91cHMsIHRoaXMuX3Jvb3RHcm91cCwgY3VyQ29uc3RyYWludHMsIHRydWUpLnByb2plY3RGdW5jdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5fbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodiwgaSkgeyB4W2ldID0gdi54LCB5W2ldID0gdi55OyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fZGVzY2VudC5HID0gRztcclxuICAgICAgICB0aGlzLl9kZXNjZW50LnJ1bihpbml0aWFsQWxsQ29uc3RyYWludHNJdGVyYXRpb25zKTtcclxuICAgICAgICBpZiAoZ3JpZFNuYXBJdGVyYXRpb25zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQuc25hcFN0cmVuZ3RoID0gMTAwMDtcclxuICAgICAgICAgICAgdGhpcy5fZGVzY2VudC5zbmFwR3JpZFNpemUgPSB0aGlzLl9ub2Rlc1swXS53aWR0aDtcclxuICAgICAgICAgICAgdGhpcy5fZGVzY2VudC5udW1HcmlkU25hcE5vZGVzID0gbjtcclxuICAgICAgICAgICAgdGhpcy5fZGVzY2VudC5zY2FsZVNuYXBCeU1heEggPSBuICE9IE47XHJcbiAgICAgICAgICAgIHZhciBHMCA9IGRlc2NlbnRfMS5EZXNjZW50LmNyZWF0ZVNxdWFyZU1hdHJpeChOLCBmdW5jdGlvbiAoaSwgaikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGkgPj0gbiB8fCBqID49IG4pXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdbaV1bal07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQuRyA9IEcwO1xyXG4gICAgICAgICAgICB0aGlzLl9kZXNjZW50LnJ1bihncmlkU25hcEl0ZXJhdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZU5vZGVQb3NpdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnNlcGFyYXRlT3ZlcmxhcHBpbmdDb21wb25lbnRzKHcsIGgsIGNlbnRlckdyYXBoKTtcclxuICAgICAgICByZXR1cm4ga2VlcFJ1bm5pbmcgPyB0aGlzLnJlc3VtZSgpIDogdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmluaXRpYWxMYXlvdXQgPSBmdW5jdGlvbiAoaXRlcmF0aW9ucywgeCwgeSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9ncm91cHMubGVuZ3RoID4gMCAmJiBpdGVyYXRpb25zID4gMCkge1xyXG4gICAgICAgICAgICB2YXIgbiA9IHRoaXMuX25vZGVzLmxlbmd0aDtcclxuICAgICAgICAgICAgdmFyIGVkZ2VzID0gdGhpcy5fbGlua3MubWFwKGZ1bmN0aW9uIChlKSB7IHJldHVybiAoeyBzb3VyY2U6IGUuc291cmNlLmluZGV4LCB0YXJnZXQ6IGUudGFyZ2V0LmluZGV4IH0pOyB9KTtcclxuICAgICAgICAgICAgdmFyIHZzID0gdGhpcy5fbm9kZXMubWFwKGZ1bmN0aW9uICh2KSB7IHJldHVybiAoeyBpbmRleDogdi5pbmRleCB9KTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnLCBpKSB7XHJcbiAgICAgICAgICAgICAgICB2cy5wdXNoKHsgaW5kZXg6IGcuaW5kZXggPSBuICsgaSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnLCBpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGcubGVhdmVzICE9PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgICAgICAgICBnLmxlYXZlcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7IHJldHVybiBlZGdlcy5wdXNoKHsgc291cmNlOiBnLmluZGV4LCB0YXJnZXQ6IHYuaW5kZXggfSk7IH0pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBnLmdyb3VwcyAhPT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgICAgICAgICAgZy5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZ2cpIHsgcmV0dXJuIGVkZ2VzLnB1c2goeyBzb3VyY2U6IGcuaW5kZXgsIHRhcmdldDogZ2cuaW5kZXggfSk7IH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbmV3IExheW91dCgpXHJcbiAgICAgICAgICAgICAgICAuc2l6ZSh0aGlzLnNpemUoKSlcclxuICAgICAgICAgICAgICAgIC5ub2Rlcyh2cylcclxuICAgICAgICAgICAgICAgIC5saW5rcyhlZGdlcylcclxuICAgICAgICAgICAgICAgIC5hdm9pZE92ZXJsYXBzKGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgLmxpbmtEaXN0YW5jZSh0aGlzLmxpbmtEaXN0YW5jZSgpKVxyXG4gICAgICAgICAgICAgICAgLnN5bW1ldHJpY0RpZmZMaW5rTGVuZ3Rocyg1KVxyXG4gICAgICAgICAgICAgICAgLmNvbnZlcmdlbmNlVGhyZXNob2xkKDFlLTQpXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoaXRlcmF0aW9ucywgMCwgMCwgMCwgZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLl9ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgICAgICB4W3YuaW5kZXhdID0gdnNbdi5pbmRleF0ueDtcclxuICAgICAgICAgICAgICAgIHlbdi5pbmRleF0gPSB2c1t2LmluZGV4XS55O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQucnVuKGl0ZXJhdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnNlcGFyYXRlT3ZlcmxhcHBpbmdDb21wb25lbnRzID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIGNlbnRlckdyYXBoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoY2VudGVyR3JhcGggPT09IHZvaWQgMCkgeyBjZW50ZXJHcmFwaCA9IHRydWU7IH1cclxuICAgICAgICBpZiAoIXRoaXMuX2Rpc3RhbmNlTWF0cml4ICYmIHRoaXMuX2hhbmRsZURpc2Nvbm5lY3RlZCkge1xyXG4gICAgICAgICAgICB2YXIgeF8xID0gdGhpcy5fZGVzY2VudC54WzBdLCB5XzEgPSB0aGlzLl9kZXNjZW50LnhbMV07XHJcbiAgICAgICAgICAgIHRoaXMuX25vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHsgdi54ID0geF8xW2ldLCB2LnkgPSB5XzFbaV07IH0pO1xyXG4gICAgICAgICAgICB2YXIgZ3JhcGhzID0gaGFuZGxlZGlzY29ubmVjdGVkXzEuc2VwYXJhdGVHcmFwaHModGhpcy5fbm9kZXMsIHRoaXMuX2xpbmtzKTtcclxuICAgICAgICAgICAgaGFuZGxlZGlzY29ubmVjdGVkXzEuYXBwbHlQYWNraW5nKGdyYXBocywgd2lkdGgsIGhlaWdodCwgdGhpcy5fZGVmYXVsdE5vZGVTaXplLCAxLCBjZW50ZXJHcmFwaCk7XHJcbiAgICAgICAgICAgIHRoaXMuX25vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLl9kZXNjZW50LnhbMF1baV0gPSB2LngsIF90aGlzLl9kZXNjZW50LnhbMV1baV0gPSB2Lnk7XHJcbiAgICAgICAgICAgICAgICBpZiAodi5ib3VuZHMpIHtcclxuICAgICAgICAgICAgICAgICAgICB2LmJvdW5kcy5zZXRYQ2VudHJlKHYueCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5ib3VuZHMuc2V0WUNlbnRyZSh2LnkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxwaGEoMC4xKTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxwaGEoMCk7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5wcmVwYXJlRWRnZVJvdXRpbmcgPSBmdW5jdGlvbiAobm9kZU1hcmdpbikge1xyXG4gICAgICAgIGlmIChub2RlTWFyZ2luID09PSB2b2lkIDApIHsgbm9kZU1hcmdpbiA9IDA7IH1cclxuICAgICAgICB0aGlzLl92aXNpYmlsaXR5R3JhcGggPSBuZXcgZ2VvbV8xLlRhbmdlbnRWaXNpYmlsaXR5R3JhcGgodGhpcy5fbm9kZXMubWFwKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2LmJvdW5kcy5pbmZsYXRlKC1ub2RlTWFyZ2luKS52ZXJ0aWNlcygpO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnJvdXRlRWRnZSA9IGZ1bmN0aW9uIChlZGdlLCBhaCwgZHJhdykge1xyXG4gICAgICAgIGlmIChhaCA9PT0gdm9pZCAwKSB7IGFoID0gNTsgfVxyXG4gICAgICAgIHZhciBsaW5lRGF0YSA9IFtdO1xyXG4gICAgICAgIHZhciB2ZzIgPSBuZXcgZ2VvbV8xLlRhbmdlbnRWaXNpYmlsaXR5R3JhcGgodGhpcy5fdmlzaWJpbGl0eUdyYXBoLlAsIHsgVjogdGhpcy5fdmlzaWJpbGl0eUdyYXBoLlYsIEU6IHRoaXMuX3Zpc2liaWxpdHlHcmFwaC5FIH0pLCBwb3J0MSA9IHsgeDogZWRnZS5zb3VyY2UueCwgeTogZWRnZS5zb3VyY2UueSB9LCBwb3J0MiA9IHsgeDogZWRnZS50YXJnZXQueCwgeTogZWRnZS50YXJnZXQueSB9LCBzdGFydCA9IHZnMi5hZGRQb2ludChwb3J0MSwgZWRnZS5zb3VyY2UuaW5kZXgpLCBlbmQgPSB2ZzIuYWRkUG9pbnQocG9ydDIsIGVkZ2UudGFyZ2V0LmluZGV4KTtcclxuICAgICAgICB2ZzIuYWRkRWRnZUlmVmlzaWJsZShwb3J0MSwgcG9ydDIsIGVkZ2Uuc291cmNlLmluZGV4LCBlZGdlLnRhcmdldC5pbmRleCk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBkcmF3ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICBkcmF3KHZnMik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzb3VyY2VJbmQgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5zb3VyY2UuaWQ7IH0sIHRhcmdldEluZCA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnRhcmdldC5pZDsgfSwgbGVuZ3RoID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUubGVuZ3RoKCk7IH0sIHNwQ2FsYyA9IG5ldyBzaG9ydGVzdHBhdGhzXzEuQ2FsY3VsYXRvcih2ZzIuVi5sZW5ndGgsIHZnMi5FLCBzb3VyY2VJbmQsIHRhcmdldEluZCwgbGVuZ3RoKSwgc2hvcnRlc3RQYXRoID0gc3BDYWxjLlBhdGhGcm9tTm9kZVRvTm9kZShzdGFydC5pZCwgZW5kLmlkKTtcclxuICAgICAgICBpZiAoc2hvcnRlc3RQYXRoLmxlbmd0aCA9PT0gMSB8fCBzaG9ydGVzdFBhdGgubGVuZ3RoID09PSB2ZzIuVi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdmFyIHJvdXRlID0gcmVjdGFuZ2xlXzEubWFrZUVkZ2VCZXR3ZWVuKGVkZ2Uuc291cmNlLmlubmVyQm91bmRzLCBlZGdlLnRhcmdldC5pbm5lckJvdW5kcywgYWgpO1xyXG4gICAgICAgICAgICBsaW5lRGF0YSA9IFtyb3V0ZS5zb3VyY2VJbnRlcnNlY3Rpb24sIHJvdXRlLmFycm93U3RhcnRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIG4gPSBzaG9ydGVzdFBhdGgubGVuZ3RoIC0gMiwgcCA9IHZnMi5WW3Nob3J0ZXN0UGF0aFtuXV0ucCwgcSA9IHZnMi5WW3Nob3J0ZXN0UGF0aFswXV0ucCwgbGluZURhdGEgPSBbZWRnZS5zb3VyY2UuaW5uZXJCb3VuZHMucmF5SW50ZXJzZWN0aW9uKHAueCwgcC55KV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBuOyBpID49IDA7IC0taSlcclxuICAgICAgICAgICAgICAgIGxpbmVEYXRhLnB1c2godmcyLlZbc2hvcnRlc3RQYXRoW2ldXS5wKTtcclxuICAgICAgICAgICAgbGluZURhdGEucHVzaChyZWN0YW5nbGVfMS5tYWtlRWRnZVRvKHEsIGVkZ2UudGFyZ2V0LmlubmVyQm91bmRzLCBhaCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGluZURhdGE7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LmdldFNvdXJjZUluZGV4ID0gZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIGUuc291cmNlID09PSAnbnVtYmVyJyA/IGUuc291cmNlIDogZS5zb3VyY2UuaW5kZXg7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LmdldFRhcmdldEluZGV4ID0gZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIGUudGFyZ2V0ID09PSAnbnVtYmVyJyA/IGUudGFyZ2V0IDogZS50YXJnZXQuaW5kZXg7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LmxpbmtJZCA9IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgcmV0dXJuIExheW91dC5nZXRTb3VyY2VJbmRleChlKSArIFwiLVwiICsgTGF5b3V0LmdldFRhcmdldEluZGV4KGUpO1xyXG4gICAgfTtcclxuICAgIExheW91dC5kcmFnU3RhcnQgPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGlmIChpc0dyb3VwKGQpKSB7XHJcbiAgICAgICAgICAgIExheW91dC5zdG9yZU9mZnNldChkLCBMYXlvdXQuZHJhZ09yaWdpbihkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBMYXlvdXQuc3RvcE5vZGUoZCk7XHJcbiAgICAgICAgICAgIGQuZml4ZWQgfD0gMjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnN0b3BOb2RlID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2LnB4ID0gdi54O1xyXG4gICAgICAgIHYucHkgPSB2Lnk7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnN0b3JlT2Zmc2V0ID0gZnVuY3Rpb24gKGQsIG9yaWdpbikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZC5sZWF2ZXMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGQubGVhdmVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgIHYuZml4ZWQgfD0gMjtcclxuICAgICAgICAgICAgICAgIExheW91dC5zdG9wTm9kZSh2KTtcclxuICAgICAgICAgICAgICAgIHYuX2RyYWdHcm91cE9mZnNldFggPSB2LnggLSBvcmlnaW4ueDtcclxuICAgICAgICAgICAgICAgIHYuX2RyYWdHcm91cE9mZnNldFkgPSB2LnkgLSBvcmlnaW4ueTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgZC5ncm91cHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGQuZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKGcpIHsgcmV0dXJuIExheW91dC5zdG9yZU9mZnNldChnLCBvcmlnaW4pOyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LmRyYWdPcmlnaW4gPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGlmIChpc0dyb3VwKGQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB4OiBkLmJvdW5kcy5jeCgpLFxyXG4gICAgICAgICAgICAgICAgeTogZC5ib3VuZHMuY3koKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGQ7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIExheW91dC5kcmFnID0gZnVuY3Rpb24gKGQsIHBvc2l0aW9uKSB7XHJcbiAgICAgICAgaWYgKGlzR3JvdXAoZCkpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBkLmxlYXZlcyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgIGQubGVhdmVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgICAgICBkLmJvdW5kcy5zZXRYQ2VudHJlKHBvc2l0aW9uLngpO1xyXG4gICAgICAgICAgICAgICAgICAgIGQuYm91bmRzLnNldFlDZW50cmUocG9zaXRpb24ueSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5weCA9IHYuX2RyYWdHcm91cE9mZnNldFggKyBwb3NpdGlvbi54O1xyXG4gICAgICAgICAgICAgICAgICAgIHYucHkgPSB2Ll9kcmFnR3JvdXBPZmZzZXRZICsgcG9zaXRpb24ueTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZC5ncm91cHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICBkLmdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnKSB7IHJldHVybiBMYXlvdXQuZHJhZyhnLCBwb3NpdGlvbik7IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBkLnB4ID0gcG9zaXRpb24ueDtcclxuICAgICAgICAgICAgZC5weSA9IHBvc2l0aW9uLnk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIExheW91dC5kcmFnRW5kID0gZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICBpZiAoaXNHcm91cChkKSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGQubGVhdmVzICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgZC5sZWF2ZXMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICAgICAgICAgIExheW91dC5kcmFnRW5kKHYpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2Ll9kcmFnR3JvdXBPZmZzZXRYO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2Ll9kcmFnR3JvdXBPZmZzZXRZO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBkLmdyb3VwcyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgIGQuZ3JvdXBzLmZvckVhY2goTGF5b3V0LmRyYWdFbmQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBkLmZpeGVkICY9IH42O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBMYXlvdXQubW91c2VPdmVyID0gZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICBkLmZpeGVkIHw9IDQ7XHJcbiAgICAgICAgZC5weCA9IGQueCwgZC5weSA9IGQueTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQubW91c2VPdXQgPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGQuZml4ZWQgJj0gfjQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIExheW91dDtcclxufSgpKTtcclxuZXhwb3J0cy5MYXlvdXQgPSBMYXlvdXQ7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHRjViM1YwTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dlYyVmlRMjlzWVM5emNtTXZiR0Y1YjNWMExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPMEZCUVVFc2VVTkJRVEJETzBGQlF6RkRMRFpEUVVFclNEdEJRVU12U0N4eFEwRkJhVU03UVVGRGFrTXNlVU5CUVRoRk8wRkJRemxGTEdsRVFVRXdRenRCUVVNeFF5d3JRa0ZCZFVRN1FVRkRka1FzTWtSQlFXbEZPMEZCVHpkRUxFbEJRVmtzVTBGQk9FSTdRVUZCTVVNc1YwRkJXU3hUUVVGVE8wbEJRVWNzTWtOQlFVc3NRMEZCUVR0SlFVRkZMSGxEUVVGSkxFTkJRVUU3U1VGQlJTeDFRMEZCUnl4RFFVRkJPMEZCUVVNc1EwRkJReXhGUVVFNVFpeFRRVUZUTEVkQlFWUXNhVUpCUVZNc1MwRkJWQ3hwUWtGQlV5eFJRVUZ4UWp0QlFVRkJMRU5CUVVNN1FVRXJRek5ETEZOQlFWTXNUMEZCVHl4RFFVRkRMRU5CUVUwN1NVRkRia0lzVDBGQlR5eFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1YwRkJWeXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNTMEZCU3l4WFFVRlhMRU5CUVVNN1FVRkRPVVVzUTBGQlF6dEJRWGRDUkR0SlFVRkJPMUZCUVVFc2FVSkJhM2xDUXp0UlFXcDVRbGNzWjBKQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU55UWl4clFrRkJZU3hIUVVGNVF5eEZRVUZGTEVOQlFVTTdVVUZEZWtRc2NVSkJRV2RDTEVkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUXpsQ0xEQkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVNM1FpeGpRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xHMUNRVUZqTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTNaQ0xIZENRVUZ0UWl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVjelFpeGhRVUZSTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTJwQ0xGZEJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEV2l4WlFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMklzWlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTnNRaXhYUVVGTkxFZEJRVEJDTEVWQlFVVXNRMEZCUXp0UlFVTnVReXhwUWtGQldTeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTnNRaXh2UWtGQlpTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTjJRaXhoUVVGUkxFZEJRVmtzU1VGQlNTeERRVUZETzFGQlEzcENMRFpDUVVGM1FpeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTm9ReXhsUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEyeENMSEZDUVVGblFpeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTjRRaXh6UWtGQmFVSXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkhka0lzVlVGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXp0UlFXdFdka0lzYVVKQlFWa3NSMEZCTWtJN1dVRkRia01zWTBGQll5eEZRVUZGTEUxQlFVMHNRMEZCUXl4alFVRmpPMWxCUTNKRExHTkJRV01zUlVGQlJTeE5RVUZOTEVOQlFVTXNZMEZCWXp0WlFVTnlReXhUUVVGVExFVkJRVVVzVFVGQlRTeERRVUZETEdGQlFXRTdXVUZETDBJc1QwRkJUeXhGUVVGRkxGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNUMEZCVHl4TFFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRTFSQ3hEUVVFMFJEdFRRVU0zUlN4RFFVRkRPMGxCYldKT0xFTkJRVU03U1VGMGQwSlZMRzFDUVVGRkxFZEJRVlFzVlVGQlZTeERRVUZ4UWl4RlFVRkZMRkZCUVdsRE8xRkJSVGxFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTenRaUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJwRExFbEJRVWtzVDBGQlR5eERRVUZETEV0QlFVc3NVVUZCVVN4RlFVRkZPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETzFOQlEzWkRPMkZCUVUwN1dVRkRTQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRkZCUVZFc1EwRkJRenRUUVVNMVFqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGSlV5eDNRa0ZCVHl4SFFVRnFRaXhWUVVGclFpeERRVUZSTzFGQlEzUkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEZkQlFWY3NSVUZCUlR0WlFVTjZSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU42UWp0SlFVTk1MRU5CUVVNN1NVRkxVeXh4UWtGQlNTeEhRVUZrTzFGQlEwa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVU3V1VGQlF5eERRVUZETzBsQlEzcENMRU5CUVVNN1NVRkxVeXh4UWtGQlNTeEhRVUZrTzFGQlEwa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVTdXVUZETDBJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEZEVJc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRlRVlzVDBGQlR5eEpRVUZKTEVOQlFVTTdVMEZEWmp0UlFVTkVMRWxCUVUwc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVTjBRaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkROMElzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUlZRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1VVRkROVUlzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEY0VJc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRia0lzU1VGQlNTeERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZPMmRDUVVOVUxFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRmRCUVZjc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NWMEZCVnl4RlFVRkZPMjlDUVVNMVJDeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlExZ3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTmtPMmRDUVVORUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdaMEpCUTNKQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYWtNN1UwRkRTanRSUVVWRUxFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03VVVGRmNFTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRMVlzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRia0k3WVVGQlRTeEpRVUZKTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmRCUVZjc1MwRkJTeXhYUVVGWExFVkJRVVU3V1VGRGFFUXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03VTBGRGNFSTdVVUZEUkN4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVVYwUWl4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVWQlFVVXNRMEZCUXp0UlFVVXpRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNKR0xFOUJRVThzUzBGQlN5eERRVUZETzBsQlEycENMRU5CUVVNN1NVRkhUeXh2UTBGQmJVSXNSMEZCTTBJN1VVRkRTU3hKUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY2tRc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJRemxDTEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRVaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOdVFpeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5ZTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEyUTdTVUZEVEN4RFFVRkRPMGxCVjBRc2MwSkJRVXNzUjBGQlRDeFZRVUZOTEVOQlFVODdVVUZEVkN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRk8xbEJRMG9zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVWR3UkN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlExWXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETzI5Q1FVTXpRaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVZVc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlZTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRM2hFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOSUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdHZRa0ZEZUVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN2FVSkJRM1pDTzJGQlEwbzdXVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VTBGRGRFSTdVVUZEUkN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5vUWl4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlUwUXNkVUpCUVUwc1IwRkJUaXhWUVVGUExFTkJRV2RDTzFGQlFYWkNMR2xDUVhWQ1F6dFJRWFJDUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVTTFRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnFRaXhKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTnlRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNN1dVRkRiRUlzU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4UFFVRlBMRXRCUVVzc1YwRkJWenRuUWtGRGFFTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGJFSXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFdEJRVXNzVjBGQlZ5eEZRVUZGTzJkQ1FVTnFReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8yOUNRVU5zUWl4SlFVRkpMRTlCUVU4c1EwRkJReXhMUVVGTExGRkJRVkU3ZDBKQlEzSkNMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRVHRuUWtGRGFrUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRUanRaUVVORUxFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4TFFVRkxMRmRCUVZjc1JVRkJSVHRuUWtGRGFrTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXp0dlFrRkRia0lzU1VGQlNTeFBRVUZQTEVWQlFVVXNTMEZCU3l4UlFVRlJPM2RDUVVOMFFpeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUzBGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVRTdaMEpCUTI1RUxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEwNDdVVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOSUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZMTEZkQlFWY3NSVUZCTDBJc1EwRkJLMElzUTBGQlF5eERRVUZETzFGQlEyeEdMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hMUVVGTExGZEJRVmNzUlVGQkwwSXNRMEZCSzBJc1EwRkJReXhEUVVGRE8xRkJRMjVHTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGRlJDeHBRMEZCWjBJc1IwRkJhRUlzVlVGQmFVSXNRMEZCVnp0UlFVTjRRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0UlFVTXpSaXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVOMFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRUQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCVlVRc09FSkJRV0VzUjBGQllpeFZRVUZqTEVOQlFWYzdVVUZEY2tJc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTzFsQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRE8xRkJRMnhFTEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGWlJDeHRRMEZCYTBJc1IwRkJiRUlzVlVGQmJVSXNRMEZCVnp0UlFVTXhRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMDdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNRMEZCUXp0UlFVTjJSQ3hKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRemRDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGUlJDd3lRa0ZCVlN4SFFVRldMRlZCUVZjc1NVRkJXU3hGUVVGRkxHRkJRWGRETzFGQlF6ZEVMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVFVGQlRUdFpRVUZGTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRiRU1zU1VGQlNTeERRVUZETEhkQ1FVRjNRaXhIUVVGSE8xbEJRelZDTEVsQlFVa3NSVUZCUlN4SlFVRkpPMWxCUTFZc1owSkJRV2RDTEVWQlFVVXNUMEZCVHl4aFFVRmhMRXRCUVVzc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eGpRVUZqTEU5QlFVOHNZVUZCWVN4RFFVRkJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eGhRVUZoTzFOQlF6ZEhMRU5CUVVNN1VVRkRSaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCVTBRc2MwSkJRVXNzUjBGQlRDeFZRVUZOTEVOQlFUUkNPMUZCUXpsQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFR0WlFVRkZMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU14UXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5vUWl4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlZVUXNORUpCUVZjc1IwRkJXQ3hWUVVGWkxFTkJRV003VVVGRGRFSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTk8xbEJRVVVzVDBGQlR5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRPMUZCUTJoRUxFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTNSQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRlhSQ3dyUWtGQll5eEhRVUZrTEZWQlFXVXNRMEZCVHp0UlFVTnNRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMDdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU03VVVGRGJrUXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGVrSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRhRUlzUTBGQlF6dEpRVlZFTEhGQ1FVRkpMRWRCUVVvc1ZVRkJTeXhEUVVGcFFqdFJRVU5zUWl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVThzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXp0UlFVTm9ReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnlRaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCVTBRc1owTkJRV1VzUjBGQlppeFZRVUZuUWl4RFFVRlBPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eERRVUZETzFsQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTTdVVUZEY2tNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNeFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJVMFFzYVVOQlFXZENMRWRCUVdoQ0xGVkJRV2xDTEVOQlFVODdVVUZEY0VJc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF6dFJRVU4wUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpOQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRlRSQ3cyUWtGQldTeEhRVUZhTEZWQlFXRXNRMEZCVHp0UlFVTm9RaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTzFsQlEwb3NUMEZCVHl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRE8xTkJRemRDTzFGQlEwUXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhQUVVGUExFTkJRVU1zUzBGQlN5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZEVRc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOc1F5eFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJSVVFzZVVKQlFWRXNSMEZCVWl4VlFVRlRMRU5CUVc5Q08xRkJRM3BDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMjVDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGSlJDeHhRMEZCYjBJc1IwRkJjRUlzVlVGQmNVSXNRMEZCVlR0UlFVTXpRaXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVUZGTEU5QlFVOHNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJRenRSUVVNdlFpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRTlCUVU4c1EwRkJReXhMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU51UkN4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlNVUXNjMEpCUVVzc1IwRkJUQ3hWUVVGTkxFTkJRVlU3VVVGRFdpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwN1dVRkJSU3hQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdZVUZEY2tNN1dVRkRSQ3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEVUN4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVU3WjBKQlEySXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJRenR2UWtGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenM3YjBKQlEzUkNMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzJGQlEzaENPMmxDUVVGTkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlR0blFrRkRaQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlR0dlFrRkRhRUlzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNN2IwSkJRM0pDTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVTBGQlV5eERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVNdlJDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN2FVSkJRMlk3WVVGRFNqdFpRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMU5CUTJZN1NVRkRUQ3hEUVVGRE8wbEJSVVFzT0VKQlFXRXNSMEZCWWl4VlFVRmpMRWxCUVhsQ08xRkJRMjVETEU5QlFVOHNUMEZCVHl4SlFVRkpMRU5CUVVNc1lVRkJZU3hMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRXJRaXhKUVVGSkxFTkJRVU1zWVVGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGVExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTTdTVUZET1Vrc1EwRkJRenRKUVVWTkxHOUNRVUZoTEVkQlFYQkNMRlZCUVhGQ0xFbEJRWFZDTEVWQlFVVXNUVUZCWXp0UlFVTjRSQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXp0SlFVTjZRaXhEUVVGRE8wbEJSVVFzTkVKQlFWY3NSMEZCV0N4VlFVRlpMRWxCUVhsQ08xRkJRMnBETEU5QlFVOHNUMEZCVHl4SlFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpORkxFTkJRVU03U1VGdFFrUXNlVU5CUVhkQ0xFZEJRWGhDTEZWQlFYbENMRmRCUVcxQ0xFVkJRVVVzUTBGQllUdFJRVUV6UkN4cFFrRkpRenRSUVVvMlF5eHJRa0ZCUVN4RlFVRkJMRXRCUVdFN1VVRkRka1FzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJTU3hQUVVGQkxGZEJRVmNzUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRjBRaXhEUVVGelFpeERRVUZETEVOQlFVTTdVVUZETDBNc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4SFFVRkhMR05CUVUwc1QwRkJRU3h6UTBGQmQwSXNRMEZCUXl4TFFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFdEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVRORUxFTkJRVEpFTEVOQlFVTTdVVUZETDBZc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFWbEVMRzFEUVVGclFpeEhRVUZzUWl4VlFVRnRRaXhYUVVGdFFpeEZRVUZGTEVOQlFXRTdVVUZCY2tRc2FVSkJTVU03VVVGS2RVTXNhMEpCUVVFc1JVRkJRU3hMUVVGaE8xRkJRMnBFTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeFhRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJkRUlzUTBGQmMwSXNRMEZCUXl4RFFVRkRPMUZCUXk5RExFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1IwRkJSeXhqUVVGTkxFOUJRVUVzWjBOQlFXdENMRU5CUVVNc1MwRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeExRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGeVJDeERRVUZ4UkN4RFFVRkRPMUZCUTNwR0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRlpSQ3h6UWtGQlN5eEhRVUZNTEZWQlEwa3NPRUpCUVRCRExFVkJRekZETEN0Q1FVRXlReXhGUVVNelF5d3JRa0ZCTWtNc1JVRkRNME1zYTBKQlFUaENMRVZCUXpsQ0xGZEJRV3RDTEVWQlEyeENMRmRCUVd0Q08xRkJUblJDTEdsQ1FYTktRenRSUVhKS1J5d3JRMEZCUVN4RlFVRkJMR3REUVVFd1F6dFJRVU14UXl4blJFRkJRU3hGUVVGQkxHMURRVUV5UXp0UlFVTXpReXhuUkVGQlFTeEZRVUZCTEcxRFFVRXlRenRSUVVNelF5eHRRMEZCUVN4RlFVRkJMSE5DUVVFNFFqdFJRVU01UWl3MFFrRkJRU3hGUVVGQkxHdENRVUZyUWp0UlFVTnNRaXcwUWtGQlFTeEZRVUZCTEd0Q1FVRnJRanRSUVVWc1FpeEpRVUZKTEVOQlFWTXNSVUZEVkN4RFFVRlRMRVZCUTFRc1EwRkJReXhIUVVGblFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkhMRU5CUVVNc1RVRkJUU3hGUVVOeVF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNSVUZETDBJc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVTjBRaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRka0lzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRk5VSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYWkRMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVZpTEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU03VVVGRk4wSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTnlRaXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTmFMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEZkQlFWY3NSVUZCUlR0blFrRkROVUlzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRoUVVNMVFqdFpRVU5FTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6TkNMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVWdzU1VGQlNTeEpRVUZKTEVOQlFVTXNjVUpCUVhGQ08xbEJRVVVzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhGUVVGRkxFTkJRVU03VVVGTE4wUXNTVUZCU1N4VFFVRlRMRU5CUVVNN1VVRkRaQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVWQlFVVTdXVUZGZEVJc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTTdVMEZEY0VNN1lVRkJUVHRaUVVWSUxGTkJRVk1zUjBGQlJ5eERRVUZETEVsQlFVa3NNRUpCUVZVc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1kwRkJZeXhGUVVGRkxFMUJRVTBzUTBGQlF5eGpRVUZqTEVWQlFVVXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hMUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRnlRaXhEUVVGeFFpeERRVUZETEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRaUVVsMlNTeERRVUZETEVkQlFVY3NhVUpCUVU4c1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1kwRkJUU3hQUVVGQkxFTkJRVU1zUlVGQlJDeERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTXpReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNN1owSkJRMnBDTEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hKUVVGSkxGRkJRVkU3YjBKQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhMUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZUTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRuUWtGRE1VVXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzVVVGQlVUdHZRa0ZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFWTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xbEJRemxGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTBnc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMmRDUVVOcVFpeEpRVUZOTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTnFSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzUkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMDQ3VVVGRlJDeEpRVUZKTEVOQlFVTXNSMEZCUnl4cFFrRkJUeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hWUVVGVkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEyaEVMRTlCUVU4c1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpOQ0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NTVUZCU1N4SlFVRkpMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFOUJRVThzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRXRCUVVzc1YwRkJWeXhGUVVGRk8xbEJRMnhGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOV0xFbEJRVWtzWVVGQllTeEhRVUZITEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hSUVVGUkxFVkJRVVVzWVVGQllUdG5Ra0ZET1VNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNN1owSkJRemRDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzWVVGQllTeERRVUZETzFsQlEzUkRMRU5CUVVNc1EwRkJRenRaUVVOR0xFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJRenRuUWtGRGJFSXNZVUZCWVN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEV0QlFVa3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRnBRbkpFTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU55UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU42UWl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVOT096dFpRVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRk4wUXNTVUZCU1N4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzU1VGQlNTeEZRVUZGTEVOQlFVTTdVVUZETjBNc1NVRkJTU3hKUVVGSkxFTkJRVU1zZDBKQlFYZENMRVZCUVVVN1dVRkRla0lzU1VGQlNTeERRVUZETEZsQlFXRXNRMEZCUXl4blFrRkJaMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1dVRkRNMFlzWTBGQll5eEhRVUZITEdOQlFXTXNRMEZCUXl4TlFVRk5MRU5CUVVNc05rTkJRU3RDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEhkQ1FVRjNRaXhEUVVGRExFbEJRVWtzUlVGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGSGVrbzdVVUZGUkN4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlF6RkNMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeHBRa0ZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlhaRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8xRkJRelZDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRlRUlzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4yUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVU3WjBKQlExUXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTllMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRXQ3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTnVRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEycERPMU5CUTBvN1VVRkRSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJTekZETEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc09FSkJRVGhDTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSM3BFTEVsQlFVa3NZMEZCWXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRE8xbEJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3h6UWtGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZMR05CUVdNc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RlFVRkZMRU5CUVVNN1VVRkRja29zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc0swSkJRU3RDTEVOQlFVTXNRMEZCUXp0UlFVTnVSQ3hKUVVGSkxFTkJRVU1zTmtKQlFUWkNMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVZDBSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNaQ0xFbEJRVWtzUlVGQlJTeEZRVUZGTzFsQlEwb3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGFrVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeHpRa0ZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxHTkJRV01zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUlVGQlJTeERRVUZETzFsQlF6VklMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzQkZPMUZCUjBRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMQ3RDUVVFclFpeERRVUZETEVOQlFVTTdVVUZGYmtRc1NVRkJTU3hyUWtGQmEwSXNSVUZCUlR0WlFVTndRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1dVRkRiRU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNN1dVRkRiRVFzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4blFrRkJaMElzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYmtNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eGxRVUZsTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVOMlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4cFFrRkJUeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1JVRkJReXhWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzJkQ1FVTjJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN2IwSkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzSkRMRTlCUVU4c1EwRkJReXhEUVVGQk8xbEJRMW9zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEU0N4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdXVUZEY2tJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFRRVU42UXp0UlFVVkVMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFbEJRVWtzUTBGQlF5dzJRa0ZCTmtJc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRPMUZCUTNSRUxFOUJRVThzVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0SlFVTTVReXhEUVVGRE8wbEJSVThzT0VKQlFXRXNSMEZCY2tJc1ZVRkJjMElzVlVGQmEwSXNSVUZCUlN4RFFVRlhMRVZCUVVVc1EwRkJWenRSUVVNNVJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zU1VGQlNTeFZRVUZWTEVkQlFVY3NRMEZCUXl4RlFVRkZPMWxCUnpORExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRek5DTEVsQlFVa3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1EwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlV5eERRVUZETEVOQlFVTXNUVUZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJRVk1zUTBGQlF5eERRVUZETEUxQlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRU3hGUVVGMlJTeERRVUYxUlN4RFFVRkRMRU5CUVVNN1dVRkRNVWNzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4RFFVRkxMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUVN4RlFVRjJRaXhEUVVGMVFpeERRVUZETEVOQlFVTTdXVUZEZGtRc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRuUWtGRGRFSXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJUU3hGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFsQlF6ZERMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMGdzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF6dG5Ra0ZEZEVJc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnp0dlFrRkRMMElzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZvUkN4RFFVRm5SQ3hEUVVGRExFTkJRVU03WjBKQlF6VkZMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZMTEZkQlFWYzdiMEpCUXk5Q0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1JVRkJSU3hKUVVGSkxFOUJRVUVzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQmFrUXNRMEZCYVVRc1EwRkJReXhEUVVGRE8xbEJRMnhHTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUjBnc1NVRkJTU3hOUVVGTkxFVkJRVVU3YVVKQlExQXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dHBRa0ZEYWtJc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF6dHBRa0ZEVkN4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRE8ybENRVU5hTEdGQlFXRXNRMEZCUXl4TFFVRkxMRU5CUVVNN2FVSkJRM0JDTEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03YVVKQlEycERMSGRDUVVGM1FpeERRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkRNMElzYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRE8ybENRVU14UWl4TFFVRkxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJSWFpETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF6dG5Ra0ZEYWtJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRNMElzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNdlFpeERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTk9PMkZCUVUwN1dVRkRTQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRUUVVOcVF6dEpRVU5NTEVOQlFVTTdTVUZIVHl3NFEwRkJOa0lzUjBGQmNrTXNWVUZCYzBNc1MwRkJZU3hGUVVGRkxFMUJRV01zUlVGQlJTeFhRVUV5UWp0UlFVRm9SeXhwUWtGbFF6dFJRV1p2UlN3MFFrRkJRU3hGUVVGQkxHdENRVUV5UWp0UlFVVTFSaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdWQlFXVXNTVUZCU1N4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVWQlFVVTdXVUZEYmtRc1NVRkJTU3hIUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyNUVMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEycEZMRWxCUVVrc1RVRkJUU3hIUVVGSExHMURRVUZqTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdXVUZEZEVRc2FVTkJRVmtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF5eERRVUZETzFsQlF6TkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1owSkJRM0pDTEV0QlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGVrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8yOUNRVU5XTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRla0lzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTTFRanRaUVVOTUxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEwNDdTVUZEVEN4RFFVRkRPMGxCUlVRc2RVSkJRVTBzUjBGQlRqdFJRVU5KTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU16UWl4RFFVRkRPMGxCUlVRc2NVSkJRVWtzUjBGQlNqdFJRVU5KTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU42UWl4RFFVRkRPMGxCU1VRc2JVTkJRV3RDTEVkQlFXeENMRlZCUVcxQ0xGVkJRWE5DTzFGQlFYUkNMREpDUVVGQkxFVkJRVUVzWTBGQmMwSTdVVUZEY2tNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRWxCUVVrc05rSkJRWE5DTEVOQlF6bERMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXp0WlFVTjJRaXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdVVUZEY0VRc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5hTEVOQlFVTTdTVUZYUkN3d1FrRkJVeXhIUVVGVUxGVkJRVlVzU1VGQlNTeEZRVUZGTEVWQlFXTXNSVUZCUlN4SlFVRkpPMUZCUVhCQ0xHMUNRVUZCTEVWQlFVRXNUVUZCWXp0UlFVTXhRaXhKUVVGSkxGRkJRVkVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZKYkVJc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTdzJRa0ZCYzBJc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVOeVNDeExRVUZMTEVkQlFXRXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlEzaEVMRXRCUVVzc1IwRkJZU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkRlRVFzUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUXpsRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTJwRUxFZEJRVWNzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRla1VzU1VGQlNTeFBRVUZQTEVsQlFVa3NTMEZCU3l4WFFVRlhMRVZCUVVVN1dVRkROMElzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJJN1VVRkRSQ3hKUVVGSkxGTkJRVk1zUjBGQlJ5eFZRVUZCTEVOQlFVTXNTVUZCU1N4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZZTEVOQlFWY3NSVUZCUlN4VFFVRlRMRWRCUVVjc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1JVRkJXQ3hEUVVGWExFVkJRVVVzVFVGQlRTeEhRVUZITEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZXTEVOQlFWVXNSVUZEY0VZc1RVRkJUU3hIUVVGSExFbEJRVWtzTUVKQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRk5CUVZNc1JVRkJSU3hUUVVGVExFVkJRVVVzVFVGQlRTeERRVUZETEVWQlF6RkZMRmxCUVZrc1IwRkJSeXhOUVVGTkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRMMFFzU1VGQlNTeFpRVUZaTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1NVRkJTU3haUVVGWkxFTkJRVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8xbEJRMjVGTEVsQlFVa3NTMEZCU3l4SFFVRkhMREpDUVVGbExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRiRVlzVVVGQlVTeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRUUVVNelJEdGhRVUZOTzFsQlEwZ3NTVUZCU1N4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlF6TkNMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGRE5VSXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVNMVFpeFJRVUZSTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmNzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnVSU3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpWRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNjMEpCUVZVc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU0zUkR0UlFXRkVMRTlCUVU4c1VVRkJVU3hEUVVGRE8wbEJRM0JDTEVOQlFVTTdTVUZIVFN4eFFrRkJZeXhIUVVGeVFpeFZRVUZ6UWl4RFFVRnpRanRSUVVONFF5eFBRVUZQTEU5QlFVOHNRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZUTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGUkxFTkJRVU1zUTBGQlF5eE5RVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRPMGxCUTNCR0xFTkJRVU03U1VGSFRTeHhRa0ZCWXl4SFFVRnlRaXhWUVVGelFpeERRVUZ6UWp0UlFVTjRReXhQUVVGUExFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNTMEZCU3l4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGVExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRlJMRU5CUVVNc1EwRkJReXhOUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETzBsQlEzQkdMRU5CUVVNN1NVRkhUU3hoUVVGTkxFZEJRV0lzVlVGQll5eERRVUZ6UWp0UlFVTm9ReXhQUVVGUExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRja1VzUTBGQlF6dEpRVTFOTEdkQ1FVRlRMRWRCUVdoQ0xGVkJRV2xDTEVOQlFXVTdVVUZETlVJc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZEV2l4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGREwwTTdZVUZCVFR0WlFVTklMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYmtJc1EwRkJReXhEUVVGRExFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTTdVMEZEYUVJN1NVRkRUQ3hEUVVGRE8wbEJTV01zWlVGQlVTeEhRVUYyUWl4VlFVRjNRaXhEUVVGUE8xRkJRM0pDTEVOQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5hTEVOQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4wUWl4RFFVRkRPMGxCU1dNc2EwSkJRVmNzUjBGQk1VSXNWVUZCTWtJc1EwRkJVU3hGUVVGRkxFMUJRV2RETzFGQlEycEZMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZMTEZkQlFWY3NSVUZCUlR0WlFVTnFReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNN1owSkJRMlFzUTBGQlF5eERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMklzVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRFlpeERRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4wUXl4RFFVRkZMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyaEVMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMDQ3VVVGRFJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhYUVVGWExFVkJRVVU3V1VGRGFrTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNSVUZCTjBJc1EwRkJOa0lzUTBGQlF5eERRVUZETzFOQlEzaEVPMGxCUTB3c1EwRkJRenRKUVVkTkxHbENRVUZWTEVkQlFXcENMRlZCUVd0Q0xFTkJRV1U3VVVGRE4wSXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVU3V1VGRFdpeFBRVUZQTzJkQ1FVTklMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkRhRUlzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRk8yRkJRMjVDTEVOQlFVTTdVMEZEVER0aFFVRk5PMWxCUTBnc1QwRkJUeXhEUVVGRExFTkJRVU03VTBGRFdqdEpRVU5NTEVOQlFVTTdTVUZKVFN4WFFVRkpMRWRCUVZnc1ZVRkJXU3hEUVVGbExFVkJRVVVzVVVGQmEwTTdVVUZETTBRc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZEV2l4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUzBGQlN5eFhRVUZYTEVWQlFVVTdaMEpCUTJwRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJRenR2UWtGRFpDeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTJoRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETVVJc1EwRkJSU3hEUVVGRExFVkJRVVVzUjBGQlV5eERRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFZEJRVWNzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRhRVFzUTBGQlJTeERRVUZETEVWQlFVVXNSMEZCVXl4RFFVRkZMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE1VUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRUanRaUVVORUxFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4TFFVRkxMRmRCUVZjc1JVRkJSVHRuUWtGRGFrTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNSVUZCZUVJc1EwRkJkMElzUTBGQlF5eERRVUZETzJGQlEyNUVPMU5CUTBvN1lVRkJUVHRaUVVOSExFTkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOdVFpeERRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRE5VSTdTVUZEVEN4RFFVRkRPMGxCU1Uwc1kwRkJUeXhIUVVGa0xGVkJRV1VzUTBGQlF6dFJRVU5hTEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8xbEJRMW9zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1YwRkJWeXhGUVVGRk8yZENRVU5xUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTTdiMEpCUTJRc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRiRUlzVDBGQllTeERRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU03YjBKQlEyeERMRTlCUVdFc1EwRkJSU3hEUVVGRExHbENRVUZwUWl4RFFVRkRPMmRDUVVOMFF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTk9PMWxCUTBRc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnl4RlFVRkZPMmRDUVVOcVF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdZVUZEY0VNN1UwRkRTanRoUVVGTk8xbEJRMGdzUTBGQlF5eERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVWcVFqdEpRVU5NTEVOQlFVTTdTVUZIVFN4blFrRkJVeXhIUVVGb1FpeFZRVUZwUWl4RFFVRkRPMUZCUTJRc1EwRkJReXhEUVVGRExFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEWWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6TkNMRU5CUVVNN1NVRkhUU3hsUVVGUkxFZEJRV1lzVlVGQlowSXNRMEZCUXp0UlFVTmlMRU5CUVVNc1EwRkJReXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYkVJc1EwRkJRenRKUVVOTUxHRkJRVU03UVVGQlJDeERRVUZETEVGQmJIbENSQ3hKUVd0NVFrTTdRVUZzZVVKWkxIZENRVUZOSW4wPSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgbGF5b3V0XzEgPSByZXF1aXJlKFwiLi9sYXlvdXRcIik7XHJcbnZhciBMYXlvdXRBZGFwdG9yID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcclxuICAgIF9fZXh0ZW5kcyhMYXlvdXRBZGFwdG9yLCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gTGF5b3V0QWRhcHRvcihvcHRpb25zKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcclxuICAgICAgICB2YXIgc2VsZiA9IF90aGlzO1xyXG4gICAgICAgIHZhciBvID0gb3B0aW9ucztcclxuICAgICAgICBpZiAoby50cmlnZ2VyKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnRyaWdnZXIgPSBvLnRyaWdnZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvLmtpY2spIHtcclxuICAgICAgICAgICAgX3RoaXMua2ljayA9IG8ua2ljaztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG8uZHJhZykge1xyXG4gICAgICAgICAgICBfdGhpcy5kcmFnID0gby5kcmFnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoby5vbikge1xyXG4gICAgICAgICAgICBfdGhpcy5vbiA9IG8ub247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF90aGlzLmRyYWdzdGFydCA9IF90aGlzLmRyYWdTdGFydCA9IGxheW91dF8xLkxheW91dC5kcmFnU3RhcnQ7XHJcbiAgICAgICAgX3RoaXMuZHJhZ2VuZCA9IF90aGlzLmRyYWdFbmQgPSBsYXlvdXRfMS5MYXlvdXQuZHJhZ0VuZDtcclxuICAgICAgICByZXR1cm4gX3RoaXM7XHJcbiAgICB9XHJcbiAgICBMYXlvdXRBZGFwdG9yLnByb3RvdHlwZS50cmlnZ2VyID0gZnVuY3Rpb24gKGUpIHsgfTtcclxuICAgIDtcclxuICAgIExheW91dEFkYXB0b3IucHJvdG90eXBlLmtpY2sgPSBmdW5jdGlvbiAoKSB7IH07XHJcbiAgICA7XHJcbiAgICBMYXlvdXRBZGFwdG9yLnByb3RvdHlwZS5kcmFnID0gZnVuY3Rpb24gKCkgeyB9O1xyXG4gICAgO1xyXG4gICAgTGF5b3V0QWRhcHRvci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXZlbnRUeXBlLCBsaXN0ZW5lcikgeyByZXR1cm4gdGhpczsgfTtcclxuICAgIDtcclxuICAgIHJldHVybiBMYXlvdXRBZGFwdG9yO1xyXG59KGxheW91dF8xLkxheW91dCkpO1xyXG5leHBvcnRzLkxheW91dEFkYXB0b3IgPSBMYXlvdXRBZGFwdG9yO1xyXG5mdW5jdGlvbiBhZGFwdG9yKG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBuZXcgTGF5b3V0QWRhcHRvcihvcHRpb25zKTtcclxufVxyXG5leHBvcnRzLmFkYXB0b3IgPSBhZGFwdG9yO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZV1JoY0hSdmNpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMWRsWWtOdmJHRXZjM0pqTDJGa1lYQjBiM0l1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPMEZCUVVFc2JVTkJRV2xFTzBGQlJUZERPMGxCUVcxRExHbERRVUZOTzBsQllYSkRMSFZDUVVGaExFOUJRVTg3VVVGQmNFSXNXVUZEU1N4cFFrRkJUeXhUUVhsQ1ZqdFJRWEpDUnl4SlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGSkxFTkJRVU03VVVGRGFFSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRE8xRkJSV2hDTEVsQlFVc3NRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSenRaUVVOaUxFdEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJRenRUUVVNMVFqdFJRVVZFTEVsQlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSVHRaUVVOVUxFdEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenRUUVVOMFFqdFJRVVZFTEVsQlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSVHRaUVVOVUxFdEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenRUUVVOMFFqdFJRVVZFTEVsQlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOUUxFdEJRVWtzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRUUVVOc1FqdFJRVVZFTEV0QlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1MwRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eGxRVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUTI1RUxFdEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTMEZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhsUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZET3p0SlFVTnFSQ3hEUVVGRE8wbEJjRU5FTEN0Q1FVRlBMRWRCUVZBc1ZVRkJVU3hEUVVGUkxFbEJRVWNzUTBGQlF6dEpRVUZCTEVOQlFVTTdTVUZEY2tJc05FSkJRVWtzUjBGQlNpeGpRVUZSTEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUTFZc05FSkJRVWtzUjBGQlNpeGpRVUZSTEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUTFZc01FSkJRVVVzUjBGQlJpeFZRVUZITEZOQlFUWkNMRVZCUVVVc1VVRkJiMElzU1VGQlZ5eFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkJRU3hEUVVGRE8wbEJhME53Uml4dlFrRkJRenRCUVVGRUxFTkJRVU1zUVVGNFEwUXNRMEZCYlVNc1pVRkJUU3hIUVhkRGVFTTdRVUY0UTFrc2MwTkJRV0U3UVVFMlF6RkNMRk5CUVdkQ0xFOUJRVThzUTBGQlJTeFBRVUZQTzBsQlF6VkNMRTlCUVU4c1NVRkJTU3hoUVVGaExFTkJRVVVzVDBGQlR5eERRVUZGTEVOQlFVTTdRVUZEZUVNc1EwRkJRenRCUVVaRUxEQkNRVVZESW4wPSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgbGF5b3V0XzEgPSByZXF1aXJlKFwiLi9sYXlvdXRcIik7XHJcbnZhciBEM1N0eWxlTGF5b3V0QWRhcHRvciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoRDNTdHlsZUxheW91dEFkYXB0b3IsIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBEM1N0eWxlTGF5b3V0QWRhcHRvcigpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xyXG4gICAgICAgIF90aGlzLmV2ZW50ID0gZDMuZGlzcGF0Y2gobGF5b3V0XzEuRXZlbnRUeXBlW2xheW91dF8xLkV2ZW50VHlwZS5zdGFydF0sIGxheW91dF8xLkV2ZW50VHlwZVtsYXlvdXRfMS5FdmVudFR5cGUudGlja10sIGxheW91dF8xLkV2ZW50VHlwZVtsYXlvdXRfMS5FdmVudFR5cGUuZW5kXSk7XHJcbiAgICAgICAgdmFyIGQzbGF5b3V0ID0gX3RoaXM7XHJcbiAgICAgICAgdmFyIGRyYWc7XHJcbiAgICAgICAgX3RoaXMuZHJhZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKCFkcmFnKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZHJhZyA9IGQzLmJlaGF2aW9yLmRyYWcoKVxyXG4gICAgICAgICAgICAgICAgICAgIC5vcmlnaW4obGF5b3V0XzEuTGF5b3V0LmRyYWdPcmlnaW4pXHJcbiAgICAgICAgICAgICAgICAgICAgLm9uKFwiZHJhZ3N0YXJ0LmQzYWRhcHRvclwiLCBsYXlvdXRfMS5MYXlvdXQuZHJhZ1N0YXJ0KVxyXG4gICAgICAgICAgICAgICAgICAgIC5vbihcImRyYWcuZDNhZGFwdG9yXCIsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGF5b3V0XzEuTGF5b3V0LmRyYWcoZCwgZDMuZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGQzbGF5b3V0LnJlc3VtZSgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAub24oXCJkcmFnZW5kLmQzYWRhcHRvclwiLCBsYXlvdXRfMS5MYXlvdXQuZHJhZ0VuZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyYWc7XHJcbiAgICAgICAgICAgIHRoaXNcclxuICAgICAgICAgICAgICAgIC5jYWxsKGRyYWcpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIF90aGlzO1xyXG4gICAgfVxyXG4gICAgRDNTdHlsZUxheW91dEFkYXB0b3IucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHZhciBkM2V2ZW50ID0geyB0eXBlOiBsYXlvdXRfMS5FdmVudFR5cGVbZS50eXBlXSwgYWxwaGE6IGUuYWxwaGEsIHN0cmVzczogZS5zdHJlc3MgfTtcclxuICAgICAgICB0aGlzLmV2ZW50W2QzZXZlbnQudHlwZV0oZDNldmVudCk7XHJcbiAgICB9O1xyXG4gICAgRDNTdHlsZUxheW91dEFkYXB0b3IucHJvdG90eXBlLmtpY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBkMy50aW1lcihmdW5jdGlvbiAoKSB7IHJldHVybiBfc3VwZXIucHJvdG90eXBlLnRpY2suY2FsbChfdGhpcyk7IH0pO1xyXG4gICAgfTtcclxuICAgIEQzU3R5bGVMYXlvdXRBZGFwdG9yLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldmVudFR5cGUsIGxpc3RlbmVyKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBldmVudFR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQub24oZXZlbnRUeXBlLCBsaXN0ZW5lcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm9uKGxheW91dF8xLkV2ZW50VHlwZVtldmVudFR5cGVdLCBsaXN0ZW5lcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBEM1N0eWxlTGF5b3V0QWRhcHRvcjtcclxufShsYXlvdXRfMS5MYXlvdXQpKTtcclxuZXhwb3J0cy5EM1N0eWxlTGF5b3V0QWRhcHRvciA9IEQzU3R5bGVMYXlvdXRBZGFwdG9yO1xyXG5mdW5jdGlvbiBkM2FkYXB0b3IoKSB7XHJcbiAgICByZXR1cm4gbmV3IEQzU3R5bGVMYXlvdXRBZGFwdG9yKCk7XHJcbn1cclxuZXhwb3J0cy5kM2FkYXB0b3IgPSBkM2FkYXB0b3I7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpETjJNMkZrWVhCMGIzSXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTlYWldKRGIyeGhMM055WXk5a00zWXpZV1JoY0hSdmNpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdPenM3T3pzN1FVRk5RU3h0UTBGQmEwUTdRVUZIT1VNN1NVRkJNRU1zZDBOQlFVMDdTVUZuUWpWRE8xRkJRVUVzV1VGRFNTeHBRa0ZCVHl4VFFYVkNWanRSUVhaRFJDeFhRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhyUWtGQlV5eERRVUZETEd0Q1FVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzYTBKQlFWTXNRMEZCUXl4clFrRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEd0Q1FVRlRMRU5CUVVNc2EwSkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCYTBKcVJ5eEpRVUZKTEZGQlFWRXNSMEZCUnl4TFFVRkpMRU5CUVVNN1VVRkRjRUlzU1VGQlNTeEpRVUZKTEVOQlFVTTdVVUZEVkN4TFFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSE8xbEJRMUlzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlR0blFrRkRVQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSVHR4UWtGRGVFSXNUVUZCVFN4RFFVRkRMR1ZCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU03Y1VKQlEzcENMRVZCUVVVc1EwRkJReXh4UWtGQmNVSXNSVUZCUlN4bFFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRE8zRkNRVU16UXl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNWVUZCUVN4RFFVRkRPMjlDUVVOdVFpeGxRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJUeXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdiMEpCUXpsQ0xGRkJRVkVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0blFrRkRkRUlzUTBGQlF5eERRVUZETzNGQ1FVTkVMRVZCUVVVc1EwRkJReXh0UWtGQmJVSXNSVUZCUlN4bFFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03WVVGRGFFUTdXVUZGUkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTA3WjBKQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNN1dVRkhia01zU1VGQlNUdHBRa0ZGUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGNFSXNRMEZCUXl4RFFVRkJPenRKUVVOTUxFTkJRVU03U1VGeVEwUXNjME5CUVU4c1IwRkJVQ3hWUVVGUkxFTkJRVkU3VVVGRFdpeEpRVUZKTEU5QlFVOHNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJSU3hyUWtGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzFGQlF6VkZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRM1JETEVOQlFVTTdTVUZIUkN4dFEwRkJTU3hIUVVGS08xRkJRVUVzYVVKQlJVTTdVVUZFUnl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExHTkJRVTBzVDBGQlFTeHBRa0ZCVFN4SlFVRkpMRmxCUVVVc1JVRkJXaXhEUVVGWkxFTkJRVU1zUTBGQlF6dEpRVU5xUXl4RFFVRkRPMGxCWjBORUxHbERRVUZGTEVkQlFVWXNWVUZCUnl4VFFVRTJRaXhGUVVGRkxGRkJRVzlDTzFGQlEyeEVMRWxCUVVrc1QwRkJUeXhUUVVGVExFdEJRVXNzVVVGQlVTeEZRVUZGTzFsQlF5OUNMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeERRVUZETEZOQlFWTXNSVUZCUlN4UlFVRlJMRU5CUVVNc1EwRkJRenRUUVVOMFF6dGhRVUZOTzFsQlEwZ3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU1zYTBKQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dFRRVU5xUkR0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMmhDTEVOQlFVTTdTVUZEVEN3eVFrRkJRenRCUVVGRUxFTkJRVU1zUVVGdVJFUXNRMEZCTUVNc1pVRkJUU3hIUVcxRUwwTTdRVUZ1UkZrc2IwUkJRVzlDTzBGQmFVVnFReXhUUVVGblFpeFRRVUZUTzBsQlEzSkNMRTlCUVU4c1NVRkJTU3h2UWtGQmIwSXNSVUZCUlN4RFFVRkRPMEZCUTNSRExFTkJRVU03UVVGR1JDdzRRa0ZGUXlKOSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgbGF5b3V0XzEgPSByZXF1aXJlKFwiLi9sYXlvdXRcIik7XHJcbnZhciBEM1N0eWxlTGF5b3V0QWRhcHRvciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoRDNTdHlsZUxheW91dEFkYXB0b3IsIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBEM1N0eWxlTGF5b3V0QWRhcHRvcihkM0NvbnRleHQpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xyXG4gICAgICAgIF90aGlzLmQzQ29udGV4dCA9IGQzQ29udGV4dDtcclxuICAgICAgICBfdGhpcy5ldmVudCA9IGQzQ29udGV4dC5kaXNwYXRjaChsYXlvdXRfMS5FdmVudFR5cGVbbGF5b3V0XzEuRXZlbnRUeXBlLnN0YXJ0XSwgbGF5b3V0XzEuRXZlbnRUeXBlW2xheW91dF8xLkV2ZW50VHlwZS50aWNrXSwgbGF5b3V0XzEuRXZlbnRUeXBlW2xheW91dF8xLkV2ZW50VHlwZS5lbmRdKTtcclxuICAgICAgICB2YXIgZDNsYXlvdXQgPSBfdGhpcztcclxuICAgICAgICB2YXIgZHJhZztcclxuICAgICAgICBfdGhpcy5kcmFnID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAoIWRyYWcpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkcmFnID0gZDNDb250ZXh0LmRyYWcoKVxyXG4gICAgICAgICAgICAgICAgICAgIC5zdWJqZWN0KGxheW91dF8xLkxheW91dC5kcmFnT3JpZ2luKVxyXG4gICAgICAgICAgICAgICAgICAgIC5vbihcInN0YXJ0LmQzYWRhcHRvclwiLCBsYXlvdXRfMS5MYXlvdXQuZHJhZ1N0YXJ0KVxyXG4gICAgICAgICAgICAgICAgICAgIC5vbihcImRyYWcuZDNhZGFwdG9yXCIsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGF5b3V0XzEuTGF5b3V0LmRyYWcoZCwgZDNDb250ZXh0LmV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICBkM2xheW91dC5yZXN1bWUoKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLm9uKFwiZW5kLmQzYWRhcHRvclwiLCBsYXlvdXRfMS5MYXlvdXQuZHJhZ0VuZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyYWc7XHJcbiAgICAgICAgICAgIGFyZ3VtZW50c1swXS5jYWxsKGRyYWcpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIF90aGlzO1xyXG4gICAgfVxyXG4gICAgRDNTdHlsZUxheW91dEFkYXB0b3IucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHZhciBkM2V2ZW50ID0geyB0eXBlOiBsYXlvdXRfMS5FdmVudFR5cGVbZS50eXBlXSwgYWxwaGE6IGUuYWxwaGEsIHN0cmVzczogZS5zdHJlc3MgfTtcclxuICAgICAgICB0aGlzLmV2ZW50LmNhbGwoZDNldmVudC50eXBlLCBkM2V2ZW50KTtcclxuICAgIH07XHJcbiAgICBEM1N0eWxlTGF5b3V0QWRhcHRvci5wcm90b3R5cGUua2ljayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHZhciB0ID0gdGhpcy5kM0NvbnRleHQudGltZXIoZnVuY3Rpb24gKCkgeyByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS50aWNrLmNhbGwoX3RoaXMpICYmIHQuc3RvcCgpOyB9KTtcclxuICAgIH07XHJcbiAgICBEM1N0eWxlTGF5b3V0QWRhcHRvci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXZlbnRUeXBlLCBsaXN0ZW5lcikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZXZlbnRUeXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm9uKGV2ZW50VHlwZSwgbGlzdGVuZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5vbihsYXlvdXRfMS5FdmVudFR5cGVbZXZlbnRUeXBlXSwgbGlzdGVuZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICByZXR1cm4gRDNTdHlsZUxheW91dEFkYXB0b3I7XHJcbn0obGF5b3V0XzEuTGF5b3V0KSk7XHJcbmV4cG9ydHMuRDNTdHlsZUxheW91dEFkYXB0b3IgPSBEM1N0eWxlTGF5b3V0QWRhcHRvcjtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkROMk5HRmtZWEIwYjNJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOVhaV0pEYjJ4aEwzTnlZeTlrTTNZMFlXUmhjSFJ2Y2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN096czdPenM3UVVGSFFTeHRRMEZCYVVRN1FVRlZha1E3U1VGQk1FTXNkME5CUVUwN1NVRnBRalZETERoQ1FVRnZRaXhUUVVGdlFqdFJRVUY0UXl4WlFVTkpMR2xDUVVGUExGTkJlVUpXTzFGQk1VSnRRaXhsUVVGVExFZEJRVlFzVTBGQlV5eERRVUZYTzFGQlJYQkRMRXRCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzVTBGQlV5eERRVUZETEZGQlFWRXNRMEZCUXl4clFrRkJVeXhEUVVGRExHdENRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc2EwSkJRVk1zUTBGQlF5eHJRa0ZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxHdENRVUZUTEVOQlFVTXNhMEpCUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlIycElMRWxCUVVrc1VVRkJVU3hIUVVGSExFdEJRVWtzUTBGQlF6dFJRVU53UWl4SlFVRkpMRWxCUVVrc1EwRkJRenRSUVVOVUxFdEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVYzdXVUZEVWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRk8yZENRVU5RTEVsQlFVa3NTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVU3Y1VKQlEzUkNMRTlCUVU4c1EwRkJReXhsUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETzNGQ1FVTXhRaXhGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc1pVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF6dHhRa0ZEZGtNc1JVRkJSU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRlZCUVVFc1EwRkJRenR2UWtGRGJrSXNaVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJUU3hEUVVGRExFVkJRVVVzVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMjlDUVVOeVF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1owSkJRM1JDTEVOQlFVTXNRMEZCUXp0eFFrRkRSQ3hGUVVGRkxFTkJRVU1zWlVGQlpTeEZRVUZGTEdWQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRoUVVNMVF6dFpRVVZFTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUVHRuUWtGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXp0WlFVdHVReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRelZDTEVOQlFVTXNRMEZCUVRzN1NVRkRUQ3hEUVVGRE8wbEJla05FTEhORFFVRlBMRWRCUVZBc1ZVRkJVU3hEUVVGUk8xRkJRMW9zU1VGQlNTeFBRVUZQTEVkQlFVY3NSVUZCUlN4SlFVRkpMRVZCUVVVc2EwSkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dFJRVWMxUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRlBMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRMmhFTEVOQlFVTTdTVUZIUkN4dFEwRkJTU3hIUVVGS08xRkJRVUVzYVVKQlJVTTdVVUZFUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4alFVRk5MRTlCUVVFc2FVSkJRVTBzU1VGQlNTeFpRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGNFFpeERRVUYzUWl4RFFVRkRMRU5CUVVNN1NVRkRha1VzUTBGQlF6dEpRV3REUkN4cFEwRkJSU3hIUVVGR0xGVkJRVWNzVTBGQk5rSXNSVUZCUlN4UlFVRnZRanRSUVVOc1JDeEpRVUZKTEU5QlFVOHNVMEZCVXl4TFFVRkxMRkZCUVZFc1JVRkJSVHRaUVVNdlFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJReXhUUVVGVExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdVMEZEZEVNN1lVRkJUVHRaUVVOSUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMR3RDUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1UwRkRha1E3VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJRMHdzTWtKQlFVTTdRVUZCUkN4RFFVRkRMRUZCZEVSRUxFTkJRVEJETEdWQlFVMHNSMEZ6UkM5RE8wRkJkRVJaTEc5RVFVRnZRaUo5IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIGQzdjMgPSByZXF1aXJlKFwiLi9kM3YzYWRhcHRvclwiKTtcclxudmFyIGQzdjQgPSByZXF1aXJlKFwiLi9kM3Y0YWRhcHRvclwiKTtcclxuO1xyXG5mdW5jdGlvbiBkM2FkYXB0b3IoZDNDb250ZXh0KSB7XHJcbiAgICBpZiAoIWQzQ29udGV4dCB8fCBpc0QzVjMoZDNDb250ZXh0KSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgZDN2My5EM1N0eWxlTGF5b3V0QWRhcHRvcigpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBkM3Y0LkQzU3R5bGVMYXlvdXRBZGFwdG9yKGQzQ29udGV4dCk7XHJcbn1cclxuZXhwb3J0cy5kM2FkYXB0b3IgPSBkM2FkYXB0b3I7XHJcbmZ1bmN0aW9uIGlzRDNWMyhkM0NvbnRleHQpIHtcclxuICAgIHZhciB2M2V4cCA9IC9eM1xcLi87XHJcbiAgICByZXR1cm4gZDNDb250ZXh0LnZlcnNpb24gJiYgZDNDb250ZXh0LnZlcnNpb24ubWF0Y2godjNleHApICE9PSBudWxsO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpETmhaR0Z3ZEc5eUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZWMlZpUTI5c1lTOXpjbU12WkROaFpHRndkRzl5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVUVzYjBOQlFYRkRPMEZCUTNKRExHOURRVUZ4UXp0QlFVZFZMRU5CUVVNN1FVRTBRbWhFTEZOQlFXZENMRk5CUVZNc1EwRkJReXhUUVVGM1F6dEpRVU01UkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNSVUZCUlR0UlFVTnFReXhQUVVGUExFbEJRVWtzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhGUVVGRkxFTkJRVU03UzBGRE1VTTdTVUZEUkN4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRM0JFTEVOQlFVTTdRVUZNUkN3NFFrRkxRenRCUVVWRUxGTkJRVk1zVFVGQlRTeERRVUZETEZOQlFYVkRPMGxCUTI1RUxFbEJRVTBzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXp0SlFVTnlRaXhQUVVGaExGTkJRVlVzUTBGQlF5eFBRVUZQTEVsQlFWVXNVMEZCVlN4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRPMEZCUTNSR0xFTkJRVU1pZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciByZWN0YW5nbGVfMSA9IHJlcXVpcmUoXCIuL3JlY3RhbmdsZVwiKTtcclxudmFyIHZwc2NfMSA9IHJlcXVpcmUoXCIuL3Zwc2NcIik7XHJcbnZhciBzaG9ydGVzdHBhdGhzXzEgPSByZXF1aXJlKFwiLi9zaG9ydGVzdHBhdGhzXCIpO1xyXG52YXIgTm9kZVdyYXBwZXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTm9kZVdyYXBwZXIoaWQsIHJlY3QsIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMucmVjdCA9IHJlY3Q7XHJcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgICAgIHRoaXMubGVhZiA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3VuZGVmaW5lZCcgfHwgY2hpbGRyZW4ubGVuZ3RoID09PSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE5vZGVXcmFwcGVyO1xyXG59KCkpO1xyXG5leHBvcnRzLk5vZGVXcmFwcGVyID0gTm9kZVdyYXBwZXI7XHJcbnZhciBWZXJ0ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFZlcnQoaWQsIHgsIHksIG5vZGUsIGxpbmUpIHtcclxuICAgICAgICBpZiAobm9kZSA9PT0gdm9pZCAwKSB7IG5vZGUgPSBudWxsOyB9XHJcbiAgICAgICAgaWYgKGxpbmUgPT09IHZvaWQgMCkgeyBsaW5lID0gbnVsbDsgfVxyXG4gICAgICAgIHRoaXMuaWQgPSBpZDtcclxuICAgICAgICB0aGlzLnggPSB4O1xyXG4gICAgICAgIHRoaXMueSA9IHk7XHJcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZTtcclxuICAgICAgICB0aGlzLmxpbmUgPSBsaW5lO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFZlcnQ7XHJcbn0oKSk7XHJcbmV4cG9ydHMuVmVydCA9IFZlcnQ7XHJcbnZhciBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlKHMsIHQpIHtcclxuICAgICAgICB0aGlzLnMgPSBzO1xyXG4gICAgICAgIHRoaXMudCA9IHQ7XHJcbiAgICAgICAgdmFyIG1mID0gTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlLmZpbmRNYXRjaChzLCB0KTtcclxuICAgICAgICB2YXIgdHIgPSB0LnNsaWNlKDApLnJldmVyc2UoKTtcclxuICAgICAgICB2YXIgbXIgPSBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UuZmluZE1hdGNoKHMsIHRyKTtcclxuICAgICAgICBpZiAobWYubGVuZ3RoID49IG1yLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmxlbmd0aCA9IG1mLmxlbmd0aDtcclxuICAgICAgICAgICAgdGhpcy5zaSA9IG1mLnNpO1xyXG4gICAgICAgICAgICB0aGlzLnRpID0gbWYudGk7XHJcbiAgICAgICAgICAgIHRoaXMucmV2ZXJzZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gbXIubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aGlzLnNpID0gbXIuc2k7XHJcbiAgICAgICAgICAgIHRoaXMudGkgPSB0Lmxlbmd0aCAtIG1yLnRpIC0gbXIubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aGlzLnJldmVyc2VkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UuZmluZE1hdGNoID0gZnVuY3Rpb24gKHMsIHQpIHtcclxuICAgICAgICB2YXIgbSA9IHMubGVuZ3RoO1xyXG4gICAgICAgIHZhciBuID0gdC5sZW5ndGg7XHJcbiAgICAgICAgdmFyIG1hdGNoID0geyBsZW5ndGg6IDAsIHNpOiAtMSwgdGk6IC0xIH07XHJcbiAgICAgICAgdmFyIGwgPSBuZXcgQXJyYXkobSk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtOyBpKyspIHtcclxuICAgICAgICAgICAgbFtpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyBqKyspXHJcbiAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PT0gdFtqXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB2ID0gbFtpXVtqXSA9IChpID09PSAwIHx8IGogPT09IDApID8gMSA6IGxbaSAtIDFdW2ogLSAxXSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgPiBtYXRjaC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gubGVuZ3RoID0gdjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2guc2kgPSBpIC0gdiArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLnRpID0gaiAtIHYgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgbFtpXVtqXSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXRjaDtcclxuICAgIH07XHJcbiAgICBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UucHJvdG90eXBlLmdldFNlcXVlbmNlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxlbmd0aCA+PSAwID8gdGhpcy5zLnNsaWNlKHRoaXMuc2ksIHRoaXMuc2kgKyB0aGlzLmxlbmd0aCkgOiBbXTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlO1xyXG59KCkpO1xyXG5leHBvcnRzLkxvbmdlc3RDb21tb25TdWJzZXF1ZW5jZSA9IExvbmdlc3RDb21tb25TdWJzZXF1ZW5jZTtcclxudmFyIEdyaWRSb3V0ZXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gR3JpZFJvdXRlcihvcmlnaW5hbG5vZGVzLCBhY2Nlc3NvciwgZ3JvdXBQYWRkaW5nKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoZ3JvdXBQYWRkaW5nID09PSB2b2lkIDApIHsgZ3JvdXBQYWRkaW5nID0gMTI7IH1cclxuICAgICAgICB0aGlzLm9yaWdpbmFsbm9kZXMgPSBvcmlnaW5hbG5vZGVzO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBQYWRkaW5nID0gZ3JvdXBQYWRkaW5nO1xyXG4gICAgICAgIHRoaXMubGVhdmVzID0gbnVsbDtcclxuICAgICAgICB0aGlzLm5vZGVzID0gb3JpZ2luYWxub2Rlcy5tYXAoZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIG5ldyBOb2RlV3JhcHBlcihpLCBhY2Nlc3Nvci5nZXRCb3VuZHModiksIGFjY2Vzc29yLmdldENoaWxkcmVuKHYpKTsgfSk7XHJcbiAgICAgICAgdGhpcy5sZWF2ZXMgPSB0aGlzLm5vZGVzLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gdi5sZWFmOyB9KTtcclxuICAgICAgICB0aGlzLmdyb3VwcyA9IHRoaXMubm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChnKSB7IHJldHVybiAhZy5sZWFmOyB9KTtcclxuICAgICAgICB0aGlzLmNvbHMgPSB0aGlzLmdldEdyaWRMaW5lcygneCcpO1xyXG4gICAgICAgIHRoaXMucm93cyA9IHRoaXMuZ2V0R3JpZExpbmVzKCd5Jyk7XHJcbiAgICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICByZXR1cm4gdi5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBfdGhpcy5ub2Rlc1tjXS5wYXJlbnQgPSB2OyB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnJvb3QgPSB7IGNoaWxkcmVuOiBbXSB9O1xyXG4gICAgICAgIHRoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYucGFyZW50ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgdi5wYXJlbnQgPSBfdGhpcy5yb290O1xyXG4gICAgICAgICAgICAgICAgX3RoaXMucm9vdC5jaGlsZHJlbi5wdXNoKHYuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHYucG9ydHMgPSBbXTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmJhY2tUb0Zyb250ID0gdGhpcy5ub2Rlcy5zbGljZSgwKTtcclxuICAgICAgICB0aGlzLmJhY2tUb0Zyb250LnNvcnQoZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIF90aGlzLmdldERlcHRoKHgpIC0gX3RoaXMuZ2V0RGVwdGgoeSk7IH0pO1xyXG4gICAgICAgIHZhciBmcm9udFRvQmFja0dyb3VwcyA9IHRoaXMuYmFja1RvRnJvbnQuc2xpY2UoMCkucmV2ZXJzZSgpLmZpbHRlcihmdW5jdGlvbiAoZykgeyByZXR1cm4gIWcubGVhZjsgfSk7XHJcbiAgICAgICAgZnJvbnRUb0JhY2tHcm91cHMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICB2YXIgciA9IHJlY3RhbmdsZV8xLlJlY3RhbmdsZS5lbXB0eSgpO1xyXG4gICAgICAgICAgICB2LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIHIgPSByLnVuaW9uKF90aGlzLm5vZGVzW2NdLnJlY3QpOyB9KTtcclxuICAgICAgICAgICAgdi5yZWN0ID0gci5pbmZsYXRlKF90aGlzLmdyb3VwUGFkZGluZyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdmFyIGNvbE1pZHMgPSB0aGlzLm1pZFBvaW50cyh0aGlzLmNvbHMubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLnBvczsgfSkpO1xyXG4gICAgICAgIHZhciByb3dNaWRzID0gdGhpcy5taWRQb2ludHModGhpcy5yb3dzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5wb3M7IH0pKTtcclxuICAgICAgICB2YXIgcm93eCA9IGNvbE1pZHNbMF0sIHJvd1ggPSBjb2xNaWRzW2NvbE1pZHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgdmFyIGNvbHkgPSByb3dNaWRzWzBdLCBjb2xZID0gcm93TWlkc1tyb3dNaWRzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIHZhciBobGluZXMgPSB0aGlzLnJvd3MubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiAoeyB4MTogcm93eCwgeDI6IHJvd1gsIHkxOiByLnBvcywgeTI6IHIucG9zIH0pOyB9KVxyXG4gICAgICAgICAgICAuY29uY2F0KHJvd01pZHMubWFwKGZ1bmN0aW9uIChtKSB7IHJldHVybiAoeyB4MTogcm93eCwgeDI6IHJvd1gsIHkxOiBtLCB5MjogbSB9KTsgfSkpO1xyXG4gICAgICAgIHZhciB2bGluZXMgPSB0aGlzLmNvbHMubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiAoeyB4MTogYy5wb3MsIHgyOiBjLnBvcywgeTE6IGNvbHksIHkyOiBjb2xZIH0pOyB9KVxyXG4gICAgICAgICAgICAuY29uY2F0KGNvbE1pZHMubWFwKGZ1bmN0aW9uIChtKSB7IHJldHVybiAoeyB4MTogbSwgeDI6IG0sIHkxOiBjb2x5LCB5MjogY29sWSB9KTsgfSkpO1xyXG4gICAgICAgIHZhciBsaW5lcyA9IGhsaW5lcy5jb25jYXQodmxpbmVzKTtcclxuICAgICAgICBsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uIChsKSB7IHJldHVybiBsLnZlcnRzID0gW107IH0pO1xyXG4gICAgICAgIHRoaXMudmVydHMgPSBbXTtcclxuICAgICAgICB0aGlzLmVkZ2VzID0gW107XHJcbiAgICAgICAgaGxpbmVzLmZvckVhY2goZnVuY3Rpb24gKGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcCA9IG5ldyBWZXJ0KF90aGlzLnZlcnRzLmxlbmd0aCwgdi54MSwgaC55MSk7XHJcbiAgICAgICAgICAgICAgICBoLnZlcnRzLnB1c2gocCk7XHJcbiAgICAgICAgICAgICAgICB2LnZlcnRzLnB1c2gocCk7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy52ZXJ0cy5wdXNoKHApO1xyXG4gICAgICAgICAgICAgICAgdmFyIGkgPSBfdGhpcy5iYWNrVG9Gcm9udC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gX3RoaXMuYmFja1RvRnJvbnRbaV0sIHIgPSBub2RlLnJlY3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGR4ID0gTWF0aC5hYnMocC54IC0gci5jeCgpKSwgZHkgPSBNYXRoLmFicyhwLnkgLSByLmN5KCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkeCA8IHIud2lkdGgoKSAvIDIgJiYgZHkgPCByLmhlaWdodCgpIC8gMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLm5vZGUgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxpbmVzLmZvckVhY2goZnVuY3Rpb24gKGwsIGxpKSB7XHJcbiAgICAgICAgICAgIF90aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcclxuICAgICAgICAgICAgICAgIHYucmVjdC5saW5lSW50ZXJzZWN0aW9ucyhsLngxLCBsLnkxLCBsLngyLCBsLnkyKS5mb3JFYWNoKGZ1bmN0aW9uIChpbnRlcnNlY3QsIGopIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IG5ldyBWZXJ0KF90aGlzLnZlcnRzLmxlbmd0aCwgaW50ZXJzZWN0LngsIGludGVyc2VjdC55LCB2LCBsKTtcclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy52ZXJ0cy5wdXNoKHApO1xyXG4gICAgICAgICAgICAgICAgICAgIGwudmVydHMucHVzaChwKTtcclxuICAgICAgICAgICAgICAgICAgICB2LnBvcnRzLnB1c2gocCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHZhciBpc0hvcml6ID0gTWF0aC5hYnMobC55MSAtIGwueTIpIDwgMC4xO1xyXG4gICAgICAgICAgICB2YXIgZGVsdGEgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gaXNIb3JpeiA/IGIueCAtIGEueCA6IGIueSAtIGEueTsgfTtcclxuICAgICAgICAgICAgbC52ZXJ0cy5zb3J0KGRlbHRhKTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBsLnZlcnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdSA9IGwudmVydHNbaSAtIDFdLCB2ID0gbC52ZXJ0c1tpXTtcclxuICAgICAgICAgICAgICAgIGlmICh1Lm5vZGUgJiYgdS5ub2RlID09PSB2Lm5vZGUgJiYgdS5ub2RlLmxlYWYpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5lZGdlcy5wdXNoKHsgc291cmNlOiB1LmlkLCB0YXJnZXQ6IHYuaWQsIGxlbmd0aDogTWF0aC5hYnMoZGVsdGEodSwgdikpIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBHcmlkUm91dGVyLnByb3RvdHlwZS5hdmcgPSBmdW5jdGlvbiAoYSkgeyByZXR1cm4gYS5yZWR1Y2UoZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIHggKyB5OyB9KSAvIGEubGVuZ3RoOyB9O1xyXG4gICAgR3JpZFJvdXRlci5wcm90b3R5cGUuZ2V0R3JpZExpbmVzID0gZnVuY3Rpb24gKGF4aXMpIHtcclxuICAgICAgICB2YXIgY29sdW1ucyA9IFtdO1xyXG4gICAgICAgIHZhciBscyA9IHRoaXMubGVhdmVzLnNsaWNlKDAsIHRoaXMubGVhdmVzLmxlbmd0aCk7XHJcbiAgICAgICAgd2hpbGUgKGxzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdmFyIG92ZXJsYXBwaW5nID0gbHMuZmlsdGVyKGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LnJlY3RbJ292ZXJsYXAnICsgYXhpcy50b1VwcGVyQ2FzZSgpXShsc1swXS5yZWN0KTsgfSk7XHJcbiAgICAgICAgICAgIHZhciBjb2wgPSB7XHJcbiAgICAgICAgICAgICAgICBub2Rlczogb3ZlcmxhcHBpbmcsXHJcbiAgICAgICAgICAgICAgICBwb3M6IHRoaXMuYXZnKG92ZXJsYXBwaW5nLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdi5yZWN0WydjJyArIGF4aXNdKCk7IH0pKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb2x1bW5zLnB1c2goY29sKTtcclxuICAgICAgICAgICAgY29sLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgcmV0dXJuIGxzLnNwbGljZShscy5pbmRleE9mKHYpLCAxKTsgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbHVtbnMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5wb3MgLSBiLnBvczsgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNvbHVtbnM7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5wcm90b3R5cGUuZ2V0RGVwdGggPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBkZXB0aCA9IDA7XHJcbiAgICAgICAgd2hpbGUgKHYucGFyZW50ICE9PSB0aGlzLnJvb3QpIHtcclxuICAgICAgICAgICAgZGVwdGgrKztcclxuICAgICAgICAgICAgdiA9IHYucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGVwdGg7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5wcm90b3R5cGUubWlkUG9pbnRzID0gZnVuY3Rpb24gKGEpIHtcclxuICAgICAgICB2YXIgZ2FwID0gYVsxXSAtIGFbMF07XHJcbiAgICAgICAgdmFyIG1pZHMgPSBbYVswXSAtIGdhcCAvIDJdO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBtaWRzLnB1c2goKGFbaV0gKyBhW2kgLSAxXSkgLyAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWlkcy5wdXNoKGFbYS5sZW5ndGggLSAxXSArIGdhcCAvIDIpO1xyXG4gICAgICAgIHJldHVybiBtaWRzO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLmZpbmRMaW5lYWdlID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgbGluZWFnZSA9IFt2XTtcclxuICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgIHYgPSB2LnBhcmVudDtcclxuICAgICAgICAgICAgbGluZWFnZS5wdXNoKHYpO1xyXG4gICAgICAgIH0gd2hpbGUgKHYgIT09IHRoaXMucm9vdCk7XHJcbiAgICAgICAgcmV0dXJuIGxpbmVhZ2UucmV2ZXJzZSgpO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLmZpbmRBbmNlc3RvclBhdGhCZXR3ZWVuID0gZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICB2YXIgYWEgPSB0aGlzLmZpbmRMaW5lYWdlKGEpLCBiYSA9IHRoaXMuZmluZExpbmVhZ2UoYiksIGkgPSAwO1xyXG4gICAgICAgIHdoaWxlIChhYVtpXSA9PT0gYmFbaV0pXHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICByZXR1cm4geyBjb21tb25BbmNlc3RvcjogYWFbaSAtIDFdLCBsaW5lYWdlczogYWEuc2xpY2UoaSkuY29uY2F0KGJhLnNsaWNlKGkpKSB9O1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLnNpYmxpbmdPYnN0YWNsZXMgPSBmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHBhdGggPSB0aGlzLmZpbmRBbmNlc3RvclBhdGhCZXR3ZWVuKGEsIGIpO1xyXG4gICAgICAgIHZhciBsaW5lYWdlTG9va3VwID0ge307XHJcbiAgICAgICAgcGF0aC5saW5lYWdlcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7IHJldHVybiBsaW5lYWdlTG9va3VwW3YuaWRdID0ge307IH0pO1xyXG4gICAgICAgIHZhciBvYnN0YWNsZXMgPSBwYXRoLmNvbW1vbkFuY2VzdG9yLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gISh2IGluIGxpbmVhZ2VMb29rdXApOyB9KTtcclxuICAgICAgICBwYXRoLmxpbmVhZ2VzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHYucGFyZW50ICE9PSBwYXRoLmNvbW1vbkFuY2VzdG9yOyB9KVxyXG4gICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAodikgeyByZXR1cm4gb2JzdGFjbGVzID0gb2JzdGFjbGVzLmNvbmNhdCh2LnBhcmVudC5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMgIT09IHYuaWQ7IH0pKTsgfSk7XHJcbiAgICAgICAgcmV0dXJuIG9ic3RhY2xlcy5tYXAoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIF90aGlzLm5vZGVzW3ZdOyB9KTtcclxuICAgIH07XHJcbiAgICBHcmlkUm91dGVyLmdldFNlZ21lbnRTZXRzID0gZnVuY3Rpb24gKHJvdXRlcywgeCwgeSkge1xyXG4gICAgICAgIHZhciB2c2VnbWVudHMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBlaSA9IDA7IGVpIDwgcm91dGVzLmxlbmd0aDsgZWkrKykge1xyXG4gICAgICAgICAgICB2YXIgcm91dGUgPSByb3V0ZXNbZWldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBzaSA9IDA7IHNpIDwgcm91dGUubGVuZ3RoOyBzaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcyA9IHJvdXRlW3NpXTtcclxuICAgICAgICAgICAgICAgIHMuZWRnZWlkID0gZWk7XHJcbiAgICAgICAgICAgICAgICBzLmkgPSBzaTtcclxuICAgICAgICAgICAgICAgIHZhciBzZHggPSBzWzFdW3hdIC0gc1swXVt4XTtcclxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzZHgpIDwgMC4xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdnNlZ21lbnRzLnB1c2gocyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdnNlZ21lbnRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGFbMF1beF0gLSBiWzBdW3hdOyB9KTtcclxuICAgICAgICB2YXIgdnNlZ21lbnRzZXRzID0gW107XHJcbiAgICAgICAgdmFyIHNlZ21lbnRzZXQgPSBudWxsO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdnNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBzID0gdnNlZ21lbnRzW2ldO1xyXG4gICAgICAgICAgICBpZiAoIXNlZ21lbnRzZXQgfHwgTWF0aC5hYnMoc1swXVt4XSAtIHNlZ21lbnRzZXQucG9zKSA+IDAuMSkge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudHNldCA9IHsgcG9zOiBzWzBdW3hdLCBzZWdtZW50czogW10gfTtcclxuICAgICAgICAgICAgICAgIHZzZWdtZW50c2V0cy5wdXNoKHNlZ21lbnRzZXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNlZ21lbnRzZXQuc2VnbWVudHMucHVzaChzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZzZWdtZW50c2V0cztcclxuICAgIH07XHJcbiAgICBHcmlkUm91dGVyLm51ZGdlU2VncyA9IGZ1bmN0aW9uICh4LCB5LCByb3V0ZXMsIHNlZ21lbnRzLCBsZWZ0T2YsIGdhcCkge1xyXG4gICAgICAgIHZhciBuID0gc2VnbWVudHMubGVuZ3RoO1xyXG4gICAgICAgIGlmIChuIDw9IDEpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB2YXIgdnMgPSBzZWdtZW50cy5tYXAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIG5ldyB2cHNjXzEuVmFyaWFibGUoc1swXVt4XSk7IH0pO1xyXG4gICAgICAgIHZhciBjcyA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbjsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gailcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIHZhciBzMSA9IHNlZ21lbnRzW2ldLCBzMiA9IHNlZ21lbnRzW2pdLCBlMSA9IHMxLmVkZ2VpZCwgZTIgPSBzMi5lZGdlaWQsIGxpbmQgPSAtMSwgcmluZCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgaWYgKHggPT0gJ3gnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnRPZihlMSwgZTIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMVswXVt5XSA8IHMxWzFdW3ldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5kID0gaiwgcmluZCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5kID0gaSwgcmluZCA9IGo7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGVmdE9mKGUxLCBlMikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxWzBdW3ldIDwgczFbMV1beV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmQgPSBpLCByaW5kID0gajtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmQgPSBqLCByaW5kID0gaTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChsaW5kID49IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBjcy5wdXNoKG5ldyB2cHNjXzEuQ29uc3RyYWludCh2c1tsaW5kXSwgdnNbcmluZF0sIGdhcCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzb2x2ZXIgPSBuZXcgdnBzY18xLlNvbHZlcih2cywgY3MpO1xyXG4gICAgICAgIHNvbHZlci5zb2x2ZSgpO1xyXG4gICAgICAgIHZzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcclxuICAgICAgICAgICAgdmFyIHMgPSBzZWdtZW50c1tpXTtcclxuICAgICAgICAgICAgdmFyIHBvcyA9IHYucG9zaXRpb24oKTtcclxuICAgICAgICAgICAgc1swXVt4XSA9IHNbMV1beF0gPSBwb3M7XHJcbiAgICAgICAgICAgIHZhciByb3V0ZSA9IHJvdXRlc1tzLmVkZ2VpZF07XHJcbiAgICAgICAgICAgIGlmIChzLmkgPiAwKVxyXG4gICAgICAgICAgICAgICAgcm91dGVbcy5pIC0gMV1bMV1beF0gPSBwb3M7XHJcbiAgICAgICAgICAgIGlmIChzLmkgPCByb3V0ZS5sZW5ndGggLSAxKVxyXG4gICAgICAgICAgICAgICAgcm91dGVbcy5pICsgMV1bMF1beF0gPSBwb3M7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5udWRnZVNlZ21lbnRzID0gZnVuY3Rpb24gKHJvdXRlcywgeCwgeSwgbGVmdE9mLCBnYXApIHtcclxuICAgICAgICB2YXIgdnNlZ21lbnRzZXRzID0gR3JpZFJvdXRlci5nZXRTZWdtZW50U2V0cyhyb3V0ZXMsIHgsIHkpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdnNlZ21lbnRzZXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBzcyA9IHZzZWdtZW50c2V0c1tpXTtcclxuICAgICAgICAgICAgdmFyIGV2ZW50cyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNzLnNlZ21lbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcyA9IHNzLnNlZ21lbnRzW2pdO1xyXG4gICAgICAgICAgICAgICAgZXZlbnRzLnB1c2goeyB0eXBlOiAwLCBzOiBzLCBwb3M6IE1hdGgubWluKHNbMF1beV0sIHNbMV1beV0pIH0pO1xyXG4gICAgICAgICAgICAgICAgZXZlbnRzLnB1c2goeyB0eXBlOiAxLCBzOiBzLCBwb3M6IE1hdGgubWF4KHNbMF1beV0sIHNbMV1beV0pIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGV2ZW50cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLnBvcyAtIGIucG9zICsgYS50eXBlIC0gYi50eXBlOyB9KTtcclxuICAgICAgICAgICAgdmFyIG9wZW4gPSBbXTtcclxuICAgICAgICAgICAgdmFyIG9wZW5Db3VudCA9IDA7XHJcbiAgICAgICAgICAgIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZS50eXBlID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3Blbi5wdXNoKGUucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgb3BlbkNvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBvcGVuQ291bnQtLTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChvcGVuQ291bnQgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIEdyaWRSb3V0ZXIubnVkZ2VTZWdzKHgsIHksIHJvdXRlcywgb3BlbiwgbGVmdE9mLCBnYXApO1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZW4gPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLnJvdXRlRWRnZXMgPSBmdW5jdGlvbiAoZWRnZXMsIG51ZGdlR2FwLCBzb3VyY2UsIHRhcmdldCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHJvdXRlUGF0aHMgPSBlZGdlcy5tYXAoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF90aGlzLnJvdXRlKHNvdXJjZShlKSwgdGFyZ2V0KGUpKTsgfSk7XHJcbiAgICAgICAgdmFyIG9yZGVyID0gR3JpZFJvdXRlci5vcmRlckVkZ2VzKHJvdXRlUGF0aHMpO1xyXG4gICAgICAgIHZhciByb3V0ZXMgPSByb3V0ZVBhdGhzLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gR3JpZFJvdXRlci5tYWtlU2VnbWVudHMoZSk7IH0pO1xyXG4gICAgICAgIEdyaWRSb3V0ZXIubnVkZ2VTZWdtZW50cyhyb3V0ZXMsICd4JywgJ3knLCBvcmRlciwgbnVkZ2VHYXApO1xyXG4gICAgICAgIEdyaWRSb3V0ZXIubnVkZ2VTZWdtZW50cyhyb3V0ZXMsICd5JywgJ3gnLCBvcmRlciwgbnVkZ2VHYXApO1xyXG4gICAgICAgIEdyaWRSb3V0ZXIudW5yZXZlcnNlRWRnZXMocm91dGVzLCByb3V0ZVBhdGhzKTtcclxuICAgICAgICByZXR1cm4gcm91dGVzO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIudW5yZXZlcnNlRWRnZXMgPSBmdW5jdGlvbiAocm91dGVzLCByb3V0ZVBhdGhzKSB7XHJcbiAgICAgICAgcm91dGVzLmZvckVhY2goZnVuY3Rpb24gKHNlZ21lbnRzLCBpKSB7XHJcbiAgICAgICAgICAgIHZhciBwYXRoID0gcm91dGVQYXRoc1tpXTtcclxuICAgICAgICAgICAgaWYgKHBhdGgucmV2ZXJzZWQpIHtcclxuICAgICAgICAgICAgICAgIHNlZ21lbnRzLnJldmVyc2UoKTtcclxuICAgICAgICAgICAgICAgIHNlZ21lbnRzLmZvckVhY2goZnVuY3Rpb24gKHNlZ21lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50LnJldmVyc2UoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5hbmdsZUJldHdlZW4yTGluZXMgPSBmdW5jdGlvbiAobGluZTEsIGxpbmUyKSB7XHJcbiAgICAgICAgdmFyIGFuZ2xlMSA9IE1hdGguYXRhbjIobGluZTFbMF0ueSAtIGxpbmUxWzFdLnksIGxpbmUxWzBdLnggLSBsaW5lMVsxXS54KTtcclxuICAgICAgICB2YXIgYW5nbGUyID0gTWF0aC5hdGFuMihsaW5lMlswXS55IC0gbGluZTJbMV0ueSwgbGluZTJbMF0ueCAtIGxpbmUyWzFdLngpO1xyXG4gICAgICAgIHZhciBkaWZmID0gYW5nbGUxIC0gYW5nbGUyO1xyXG4gICAgICAgIGlmIChkaWZmID4gTWF0aC5QSSB8fCBkaWZmIDwgLU1hdGguUEkpIHtcclxuICAgICAgICAgICAgZGlmZiA9IGFuZ2xlMiAtIGFuZ2xlMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRpZmY7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5pc0xlZnQgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xyXG4gICAgICAgIHJldHVybiAoKGIueCAtIGEueCkgKiAoYy55IC0gYS55KSAtIChiLnkgLSBhLnkpICogKGMueCAtIGEueCkpIDw9IDA7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5nZXRPcmRlciA9IGZ1bmN0aW9uIChwYWlycykge1xyXG4gICAgICAgIHZhciBvdXRnb2luZyA9IHt9O1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFpcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIHAgPSBwYWlyc1tpXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvdXRnb2luZ1twLmxdID09PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgICAgIG91dGdvaW5nW3AubF0gPSB7fTtcclxuICAgICAgICAgICAgb3V0Z29pbmdbcC5sXVtwLnJdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChsLCByKSB7IHJldHVybiB0eXBlb2Ygb3V0Z29pbmdbbF0gIT09ICd1bmRlZmluZWQnICYmIG91dGdvaW5nW2xdW3JdOyB9O1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIub3JkZXJFZGdlcyA9IGZ1bmN0aW9uIChlZGdlcykge1xyXG4gICAgICAgIHZhciBlZGdlT3JkZXIgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBlZGdlcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGUgPSBlZGdlc1tpXSwgZiA9IGVkZ2VzW2pdLCBsY3MgPSBuZXcgTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlKGUsIGYpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHUsIHZpLCB2ajtcclxuICAgICAgICAgICAgICAgIGlmIChsY3MubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxjcy5yZXZlcnNlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGYucmV2ZXJzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGYucmV2ZXJzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxjcyA9IG5ldyBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UoZSwgZik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKGxjcy5zaSA8PSAwIHx8IGxjcy50aSA8PSAwKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChsY3Muc2kgKyBsY3MubGVuZ3RoID49IGUubGVuZ3RoIHx8IGxjcy50aSArIGxjcy5sZW5ndGggPj0gZi5sZW5ndGgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWRnZU9yZGVyLnB1c2goeyBsOiBpLCByOiBqIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGxjcy5zaSArIGxjcy5sZW5ndGggPj0gZS5sZW5ndGggfHwgbGNzLnRpICsgbGNzLmxlbmd0aCA+PSBmLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHUgPSBlW2xjcy5zaSArIDFdO1xyXG4gICAgICAgICAgICAgICAgICAgIHZqID0gZVtsY3Muc2kgLSAxXTtcclxuICAgICAgICAgICAgICAgICAgICB2aSA9IGZbbGNzLnRpIC0gMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB1ID0gZVtsY3Muc2kgKyBsY3MubGVuZ3RoIC0gMl07XHJcbiAgICAgICAgICAgICAgICAgICAgdmkgPSBlW2xjcy5zaSArIGxjcy5sZW5ndGhdO1xyXG4gICAgICAgICAgICAgICAgICAgIHZqID0gZltsY3MudGkgKyBsY3MubGVuZ3RoXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChHcmlkUm91dGVyLmlzTGVmdCh1LCB2aSwgdmopKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWRnZU9yZGVyLnB1c2goeyBsOiBqLCByOiBpIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWRnZU9yZGVyLnB1c2goeyBsOiBpLCByOiBqIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBHcmlkUm91dGVyLmdldE9yZGVyKGVkZ2VPcmRlcik7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5tYWtlU2VnbWVudHMgPSBmdW5jdGlvbiAocGF0aCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGNvcHlQb2ludChwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHg6IHAueCwgeTogcC55IH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBpc1N0cmFpZ2h0ID0gZnVuY3Rpb24gKGEsIGIsIGMpIHsgcmV0dXJuIE1hdGguYWJzKChiLnggLSBhLngpICogKGMueSAtIGEueSkgLSAoYi55IC0gYS55KSAqIChjLnggLSBhLngpKSA8IDAuMDAxOyB9O1xyXG4gICAgICAgIHZhciBzZWdtZW50cyA9IFtdO1xyXG4gICAgICAgIHZhciBhID0gY29weVBvaW50KHBhdGhbMF0pO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgYiA9IGNvcHlQb2ludChwYXRoW2ldKSwgYyA9IGkgPCBwYXRoLmxlbmd0aCAtIDEgPyBwYXRoW2kgKyAxXSA6IG51bGw7XHJcbiAgICAgICAgICAgIGlmICghYyB8fCAhaXNTdHJhaWdodChhLCBiLCBjKSkge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudHMucHVzaChbYSwgYl0pO1xyXG4gICAgICAgICAgICAgICAgYSA9IGI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlZ21lbnRzO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLnJvdXRlID0gZnVuY3Rpb24gKHMsIHQpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHZhciBzb3VyY2UgPSB0aGlzLm5vZGVzW3NdLCB0YXJnZXQgPSB0aGlzLm5vZGVzW3RdO1xyXG4gICAgICAgIHRoaXMub2JzdGFjbGVzID0gdGhpcy5zaWJsaW5nT2JzdGFjbGVzKHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgICAgICB2YXIgb2JzdGFjbGVMb29rdXAgPSB7fTtcclxuICAgICAgICB0aGlzLm9ic3RhY2xlcy5mb3JFYWNoKGZ1bmN0aW9uIChvKSB7IHJldHVybiBvYnN0YWNsZUxvb2t1cFtvLmlkXSA9IG87IH0pO1xyXG4gICAgICAgIHRoaXMucGFzc2FibGVFZGdlcyA9IHRoaXMuZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIHZhciB1ID0gX3RoaXMudmVydHNbZS5zb3VyY2VdLCB2ID0gX3RoaXMudmVydHNbZS50YXJnZXRdO1xyXG4gICAgICAgICAgICByZXR1cm4gISh1Lm5vZGUgJiYgdS5ub2RlLmlkIGluIG9ic3RhY2xlTG9va3VwXHJcbiAgICAgICAgICAgICAgICB8fCB2Lm5vZGUgJiYgdi5ub2RlLmlkIGluIG9ic3RhY2xlTG9va3VwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHNvdXJjZS5wb3J0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgdSA9IHNvdXJjZS5wb3J0c1swXS5pZDtcclxuICAgICAgICAgICAgdmFyIHYgPSBzb3VyY2UucG9ydHNbaV0uaWQ7XHJcbiAgICAgICAgICAgIHRoaXMucGFzc2FibGVFZGdlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHNvdXJjZTogdSxcclxuICAgICAgICAgICAgICAgIHRhcmdldDogdixcclxuICAgICAgICAgICAgICAgIGxlbmd0aDogMFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0YXJnZXQucG9ydHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIHUgPSB0YXJnZXQucG9ydHNbMF0uaWQ7XHJcbiAgICAgICAgICAgIHZhciB2ID0gdGFyZ2V0LnBvcnRzW2ldLmlkO1xyXG4gICAgICAgICAgICB0aGlzLnBhc3NhYmxlRWRnZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHUsXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHYsXHJcbiAgICAgICAgICAgICAgICBsZW5ndGg6IDBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBnZXRTb3VyY2UgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5zb3VyY2U7IH0sIGdldFRhcmdldCA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnRhcmdldDsgfSwgZ2V0TGVuZ3RoID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUubGVuZ3RoOyB9O1xyXG4gICAgICAgIHZhciBzaG9ydGVzdFBhdGhDYWxjdWxhdG9yID0gbmV3IHNob3J0ZXN0cGF0aHNfMS5DYWxjdWxhdG9yKHRoaXMudmVydHMubGVuZ3RoLCB0aGlzLnBhc3NhYmxlRWRnZXMsIGdldFNvdXJjZSwgZ2V0VGFyZ2V0LCBnZXRMZW5ndGgpO1xyXG4gICAgICAgIHZhciBiZW5kUGVuYWx0eSA9IGZ1bmN0aW9uICh1LCB2LCB3KSB7XHJcbiAgICAgICAgICAgIHZhciBhID0gX3RoaXMudmVydHNbdV0sIGIgPSBfdGhpcy52ZXJ0c1t2XSwgYyA9IF90aGlzLnZlcnRzW3ddO1xyXG4gICAgICAgICAgICB2YXIgZHggPSBNYXRoLmFicyhjLnggLSBhLngpLCBkeSA9IE1hdGguYWJzKGMueSAtIGEueSk7XHJcbiAgICAgICAgICAgIGlmIChhLm5vZGUgPT09IHNvdXJjZSAmJiBhLm5vZGUgPT09IGIubm9kZSB8fCBiLm5vZGUgPT09IHRhcmdldCAmJiBiLm5vZGUgPT09IGMubm9kZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICByZXR1cm4gZHggPiAxICYmIGR5ID4gMSA/IDEwMDAgOiAwO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdmFyIHNob3J0ZXN0UGF0aCA9IHNob3J0ZXN0UGF0aENhbGN1bGF0b3IuUGF0aEZyb21Ob2RlVG9Ob2RlV2l0aFByZXZDb3N0KHNvdXJjZS5wb3J0c1swXS5pZCwgdGFyZ2V0LnBvcnRzWzBdLmlkLCBiZW5kUGVuYWx0eSk7XHJcbiAgICAgICAgdmFyIHBhdGhQb2ludHMgPSBzaG9ydGVzdFBhdGgucmV2ZXJzZSgpLm1hcChmdW5jdGlvbiAodmkpIHsgcmV0dXJuIF90aGlzLnZlcnRzW3ZpXTsgfSk7XHJcbiAgICAgICAgcGF0aFBvaW50cy5wdXNoKHRoaXMubm9kZXNbdGFyZ2V0LmlkXS5wb3J0c1swXSk7XHJcbiAgICAgICAgcmV0dXJuIHBhdGhQb2ludHMuZmlsdGVyKGZ1bmN0aW9uICh2LCBpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhKGkgPCBwYXRoUG9pbnRzLmxlbmd0aCAtIDEgJiYgcGF0aFBvaW50c1tpICsgMV0ubm9kZSA9PT0gc291cmNlICYmIHYubm9kZSA9PT0gc291cmNlXHJcbiAgICAgICAgICAgICAgICB8fCBpID4gMCAmJiB2Lm5vZGUgPT09IHRhcmdldCAmJiBwYXRoUG9pbnRzW2kgLSAxXS5ub2RlID09PSB0YXJnZXQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIuZ2V0Um91dGVQYXRoID0gZnVuY3Rpb24gKHJvdXRlLCBjb3JuZXJyYWRpdXMsIGFycm93d2lkdGgsIGFycm93aGVpZ2h0KSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgcm91dGVwYXRoOiAnTSAnICsgcm91dGVbMF1bMF0ueCArICcgJyArIHJvdXRlWzBdWzBdLnkgKyAnICcsXHJcbiAgICAgICAgICAgIGFycm93cGF0aDogJydcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChyb3V0ZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm91dGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBsaSA9IHJvdXRlW2ldO1xyXG4gICAgICAgICAgICAgICAgdmFyIHggPSBsaVsxXS54LCB5ID0gbGlbMV0ueTtcclxuICAgICAgICAgICAgICAgIHZhciBkeCA9IHggLSBsaVswXS54O1xyXG4gICAgICAgICAgICAgICAgdmFyIGR5ID0geSAtIGxpWzBdLnk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaSA8IHJvdXRlLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoZHgpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB4IC09IGR4IC8gTWF0aC5hYnMoZHgpICogY29ybmVycmFkaXVzO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeSAtPSBkeSAvIE1hdGguYWJzKGR5KSAqIGNvcm5lcnJhZGl1cztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJvdXRlcGF0aCArPSAnTCAnICsgeCArICcgJyArIHkgKyAnICc7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSByb3V0ZVtpICsgMV07XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHgwID0gbFswXS54LCB5MCA9IGxbMF0ueTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgeDEgPSBsWzFdLng7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHkxID0gbFsxXS55O1xyXG4gICAgICAgICAgICAgICAgICAgIGR4ID0geDEgLSB4MDtcclxuICAgICAgICAgICAgICAgICAgICBkeSA9IHkxIC0geTA7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFuZ2xlID0gR3JpZFJvdXRlci5hbmdsZUJldHdlZW4yTGluZXMobGksIGwpIDwgMCA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB4MiwgeTI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGR4KSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeDIgPSB4MCArIGR4IC8gTWF0aC5hYnMoZHgpICogY29ybmVycmFkaXVzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB5MiA9IHkwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeDIgPSB4MDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeTIgPSB5MCArIGR5IC8gTWF0aC5hYnMoZHkpICogY29ybmVycmFkaXVzO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB2YXIgY3ggPSBNYXRoLmFicyh4MiAtIHgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjeSA9IE1hdGguYWJzKHkyIC0geSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJvdXRlcGF0aCArPSAnQSAnICsgY3ggKyAnICcgKyBjeSArICcgMCAwICcgKyBhbmdsZSArICcgJyArIHgyICsgJyAnICsgeTIgKyAnICc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYXJyb3d0aXAgPSBbeCwgeV07XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFycm93Y29ybmVyMSwgYXJyb3djb3JuZXIyO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhkeCkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHggLT0gZHggLyBNYXRoLmFicyhkeCkgKiBhcnJvd2hlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3djb3JuZXIxID0gW3gsIHkgKyBhcnJvd3dpZHRoXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3djb3JuZXIyID0gW3gsIHkgLSBhcnJvd3dpZHRoXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHkgLT0gZHkgLyBNYXRoLmFicyhkeSkgKiBhcnJvd2hlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3djb3JuZXIxID0gW3ggKyBhcnJvd3dpZHRoLCB5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3djb3JuZXIyID0gW3ggLSBhcnJvd3dpZHRoLCB5XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJvdXRlcGF0aCArPSAnTCAnICsgeCArICcgJyArIHkgKyAnICc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFycm93aGVpZ2h0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXJyb3dwYXRoID0gJ00gJyArIGFycm93dGlwWzBdICsgJyAnICsgYXJyb3d0aXBbMV0gKyAnIEwgJyArIGFycm93Y29ybmVyMVswXSArICcgJyArIGFycm93Y29ybmVyMVsxXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnIEwgJyArIGFycm93Y29ybmVyMlswXSArICcgJyArIGFycm93Y29ybmVyMlsxXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBsaSA9IHJvdXRlWzBdO1xyXG4gICAgICAgICAgICB2YXIgeCA9IGxpWzFdLngsIHkgPSBsaVsxXS55O1xyXG4gICAgICAgICAgICB2YXIgZHggPSB4IC0gbGlbMF0ueDtcclxuICAgICAgICAgICAgdmFyIGR5ID0geSAtIGxpWzBdLnk7XHJcbiAgICAgICAgICAgIHZhciBhcnJvd3RpcCA9IFt4LCB5XTtcclxuICAgICAgICAgICAgdmFyIGFycm93Y29ybmVyMSwgYXJyb3djb3JuZXIyO1xyXG4gICAgICAgICAgICBpZiAoTWF0aC5hYnMoZHgpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgeCAtPSBkeCAvIE1hdGguYWJzKGR4KSAqIGFycm93aGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgYXJyb3djb3JuZXIxID0gW3gsIHkgKyBhcnJvd3dpZHRoXTtcclxuICAgICAgICAgICAgICAgIGFycm93Y29ybmVyMiA9IFt4LCB5IC0gYXJyb3d3aWR0aF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB5IC09IGR5IC8gTWF0aC5hYnMoZHkpICogYXJyb3doZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBhcnJvd2Nvcm5lcjEgPSBbeCArIGFycm93d2lkdGgsIHldO1xyXG4gICAgICAgICAgICAgICAgYXJyb3djb3JuZXIyID0gW3ggLSBhcnJvd3dpZHRoLCB5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHQucm91dGVwYXRoICs9ICdMICcgKyB4ICsgJyAnICsgeSArICcgJztcclxuICAgICAgICAgICAgaWYgKGFycm93aGVpZ2h0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LmFycm93cGF0aCA9ICdNICcgKyBhcnJvd3RpcFswXSArICcgJyArIGFycm93dGlwWzFdICsgJyBMICcgKyBhcnJvd2Nvcm5lcjFbMF0gKyAnICcgKyBhcnJvd2Nvcm5lcjFbMV1cclxuICAgICAgICAgICAgICAgICAgICArICcgTCAnICsgYXJyb3djb3JuZXIyWzBdICsgJyAnICsgYXJyb3djb3JuZXIyWzFdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEdyaWRSb3V0ZXI7XHJcbn0oKSk7XHJcbmV4cG9ydHMuR3JpZFJvdXRlciA9IEdyaWRSb3V0ZXI7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVozSnBaSEp2ZFhSbGNpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMWRsWWtOdmJHRXZjM0pqTDJkeWFXUnliM1YwWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZEUVN4NVEwRkJjVU03UVVGRGNrTXNLMEpCUVcxRU8wRkJRMjVFTEdsRVFVRXdRenRCUVV0MFF6dEpRVWxKTEhGQ1FVRnRRaXhGUVVGVkxFVkJRVk1zU1VGQlpTeEZRVUZUTEZGQlFXdENPMUZCUVRkRUxFOUJRVVVzUjBGQlJpeEZRVUZGTEVOQlFWRTdVVUZCVXl4VFFVRkpMRWRCUVVvc1NVRkJTU3hEUVVGWE8xRkJRVk1zWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCVlR0UlFVTTFSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEU5QlFVOHNVVUZCVVN4TFFVRkxMRmRCUVZjc1NVRkJTU3hSUVVGUkxFTkJRVU1zVFVGQlRTeExRVUZMTEVOQlFVTXNRMEZCUXp0SlFVTjZSU3hEUVVGRE8wbEJRMHdzYTBKQlFVTTdRVUZCUkN4RFFVRkRMRUZCVUVRc1NVRlBRenRCUVZCWkxHdERRVUZYTzBGQlVYaENPMGxCUTBrc1kwRkJiVUlzUlVGQlZTeEZRVUZUTEVOQlFWRXNSVUZCVXl4RFFVRlRMRVZCUVZNc1NVRkJkMElzUlVGQlV5eEpRVUZYTzFGQlFUVkRMSEZDUVVGQkxFVkJRVUVzVjBGQmQwSTdVVUZCVXl4eFFrRkJRU3hGUVVGQkxGZEJRVmM3VVVGQmJFY3NUMEZCUlN4SFFVRkdMRVZCUVVVc1EwRkJVVHRSUVVGVExFMUJRVU1zUjBGQlJDeERRVUZETEVOQlFVODdVVUZCVXl4TlFVRkRMRWRCUVVRc1EwRkJReXhEUVVGUk8xRkJRVk1zVTBGQlNTeEhRVUZLTEVsQlFVa3NRMEZCYjBJN1VVRkJVeXhUUVVGSkxFZEJRVW9zU1VGQlNTeERRVUZQTzBsQlFVY3NRMEZCUXp0SlFVTTNTQ3hYUVVGRE8wRkJRVVFzUTBGQlF5eEJRVVpFTEVsQlJVTTdRVUZHV1N4dlFrRkJTVHRCUVVscVFqdEpRVXRKTEd0RFFVRnRRaXhEUVVGTkxFVkJRVk1zUTBGQlRUdFJRVUZ5UWl4TlFVRkRMRWRCUVVRc1EwRkJReXhEUVVGTE8xRkJRVk1zVFVGQlF5eEhRVUZFTEVOQlFVTXNRMEZCU3p0UlFVTndReXhKUVVGSkxFVkJRVVVzUjBGQlJ5eDNRa0ZCZDBJc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdVVUZET1VJc1NVRkJTU3hGUVVGRkxFZEJRVWNzZDBKQlFYZENMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTnVSQ3hKUVVGSkxFVkJRVVVzUTBGQlF5eE5RVUZOTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSVHRaUVVONFFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU03V1VGRGVFSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEyaENMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTm9RaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEV0QlFVc3NRMEZCUXp0VFFVTjZRanRoUVVGTk8xbEJRMGdzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRM2hDTEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU5vUWl4SlFVRkpMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETzFsQlEzWkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETzFOQlEzaENPMGxCUTB3c1EwRkJRenRKUVVOakxHdERRVUZUTEVkQlFYaENMRlZCUVRSQ0xFTkJRVTBzUlVGQlJTeERRVUZOTzFGQlEzUkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYWtJc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTnFRaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8xRkJRekZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGVFSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNCQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTzJkQ1FVTjBRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVU3YjBKQlEyWXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yOUNRVU5xUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTzNkQ1FVTnNRaXhMUVVGTExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0M1FrRkRha0lzUzBGQlN5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dDNRa0ZEY2tJc1MwRkJTeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR4UWtGRGVFSTdiMEpCUVVFc1EwRkJRenRwUWtGRFREczdiMEpCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVNeFFqdFJRVU5FTEU5QlFVOHNTMEZCU3l4RFFVRkRPMGxCUTJwQ0xFTkJRVU03U1VGRFJDdzRRMEZCVnl4SFFVRllPMUZCUTBrc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hKUVVGSkxFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzBsQlEyaEdMRU5CUVVNN1NVRkRUQ3dyUWtGQlF6dEJRVUZFTEVOQlFVTXNRVUV6UTBRc1NVRXlRME03UVVFelExa3NORVJCUVhkQ08wRkJhVVJ5UXp0SlFYTkVTU3h2UWtGQmJVSXNZVUZCY1VJc1JVRkJSU3hSUVVFMFFpeEZRVUZUTEZsQlFYbENPMUZCUVhoSExHbENRV3RJUXp0UlFXeElPRVVzTmtKQlFVRXNSVUZCUVN4cFFrRkJlVUk3VVVGQmNrWXNhMEpCUVdFc1IwRkJZaXhoUVVGaExFTkJRVkU3VVVGQmRVTXNhVUpCUVZrc1IwRkJXaXhaUVVGWkxFTkJRV0U3VVVGeVJIaEhMRmRCUVUwc1IwRkJhMElzU1VGQlNTeERRVUZETzFGQmMwUjZRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEdGQlFXRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNTVUZCU1N4WFFVRlhMRU5CUVVNc1EwRkJReXhGUVVGRkxGRkJRVkVzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRnNSU3hEUVVGclJTeERRVUZETEVOQlFVTTdVVUZETjBjc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVU0c1EwRkJUU3hEUVVGRExFTkJRVU03VVVGRE5VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCVUN4RFFVRlBMRU5CUVVNc1EwRkJRenRSUVVNM1F5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYmtNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJSMjVETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF6dFpRVU5xUWl4UFFVRkJMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkhMRTlCUVVFc1MwRkJTU3hEUVVGRExFdEJRVXNzUTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGb1F5eERRVUZuUXl4RFFVRkRPMUZCUVhoRUxFTkJRWGRFTEVOQlFVTXNRMEZCUXp0UlFVYzVSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVXNVVUZCVVN4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRemRDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF6dFpRVU5vUWl4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUzBGQlN5eFhRVUZYTEVWQlFVVTdaMEpCUTJwRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NTMEZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRuUWtGRGNrSXNTMEZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRoUVVOcVF6dFpRVTlFTEVOQlFVTXNRMEZCUXl4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGQk8xRkJRMmhDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUjBnc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJRU3hMUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFXNURMRU5CUVcxRExFTkJRVU1zUTBGQlF6dFJRVXR5UlN4SlFVRkpMR2xDUVVGcFFpeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJVQ3hEUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5vUml4cFFrRkJhVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEhGQ1FVRlRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03V1VGRE1VSXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUV2UWl4RFFVRXJRaXhEUVVGRExFTkJRVU03V1VGRGVFUXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVNeFF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVklMRWxCUVVrc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGTUxFTkJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZGtRc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVXdzUTBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVZDJSQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRekZFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZITVVRc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWNzVDBGQlFTeERRVUZMTEVWQlFVVXNSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVFc1JVRkJha1FzUTBGQmFVUXNRMEZCUXp0aFFVTTFSU3hOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVXNzUlVGQlJTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVUVzUlVGQmVrTXNRMEZCZVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGSGVFVXNTVUZCU1N4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hEUVVGTExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVOQlFVRXNSVUZCYWtRc1EwRkJhVVFzUTBGQlF6dGhRVU0xUlN4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVzc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVFc1JVRkJla01zUTBGQmVVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkhlRVVzU1VGQlNTeExRVUZMTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVWRzUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZITEU5QlFVRXNRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJSeXhGUVVGRkxFVkJRVm9zUTBGQldTeERRVUZETEVOQlFVTTdVVUZIYUVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEYUVJc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZIYUVJc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTTdXVUZEV2l4UFFVRkJMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETzJkQ1FVTmFMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8yZENRVU5vUkN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRhRUlzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEyaENMRXRCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVkdVFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4TFFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF6dG5Ra0ZEYUVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVTdiMEpCUTFvc1NVRkJTU3hKUVVGSkxFZEJRVWNzUzBGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRNVUlzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN2IwSkJRMnhDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGRE0wSXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dHZRa0ZEYUVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSVHQzUWtGRGNrTXNRMEZCUlN4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU03ZDBKQlEzSkNMRTFCUVUwN2NVSkJRMVE3YVVKQlEwbzdXVUZEVEN4RFFVRkRMRU5CUVVNN1VVRnNRa1lzUTBGclFrVXNRMEZEUkN4RFFVRkRPMUZCUlU0c1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUldoQ0xFdEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEzQkNMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzI5Q1FVVnNSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOd1JTeExRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZEYmtJc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRMmhDTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTndRaXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5RTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUjBnc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1dVRkRNVU1zU1VGQlNTeExRVUZMTEVkQlFVY3NWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCTDBJc1EwRkJLMElzUTBGQlF6dFpRVU4wUkN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTndRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRM0pETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOMlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNUdHZRa0ZCUlN4VFFVRlRPMmRDUVVONlJDeExRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEUxQlFVMHNSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03WVVGRGJFWTdVVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVsUUxFTkJRVU03U1VFMVNrOHNkMEpCUVVjc1IwRkJXQ3hWUVVGWkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJUQ3hEUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkJMRU5CUVVNc1EwRkJRenRKUVVsMFJDeHBRMEZCV1N4SFFVRndRaXhWUVVGeFFpeEpRVUZKTzFGQlEzSkNMRWxCUVVrc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5xUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTnNSQ3hQUVVGUExFVkJRVVVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMWxCUld4Q0xFbEJRVWtzVjBGQlZ5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWNzVDBGQlFTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFXeEVMRU5CUVd0RUxFTkJRVU1zUTBGQlF6dFpRVU53Uml4SlFVRkpMRWRCUVVjc1IwRkJSenRuUWtGRFRpeExRVUZMTEVWQlFVVXNWMEZCVnp0blFrRkRiRUlzUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1YwRkJWeXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVhCQ0xFTkJRVzlDTEVOQlFVTXNRMEZCUXp0aFFVTXpSQ3hEUVVGRE8xbEJRMFlzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOc1FpeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJNMElzUTBGQk1rSXNRMEZCUXl4RFFVRkRPMU5CUTNSRU8xRkJRMFFzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVXNzVDBGQlFTeERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRV0lzUTBGQllTeERRVUZETEVOQlFVRTdVVUZEY2tNc1QwRkJUeXhQUVVGUExFTkJRVU03U1VGRGJrSXNRMEZCUXp0SlFVZFBMRFpDUVVGUkxFZEJRV2hDTEZWQlFXbENMRU5CUVVNN1VVRkRaQ3hKUVVGSkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEWkN4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFdEJRVXNzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlR0WlFVTXpRaXhMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU5TTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRE8xTkJRMmhDTzFGQlEwUXNUMEZCVHl4TFFVRkxMRU5CUVVNN1NVRkRha0lzUTBGQlF6dEpRVWRQTERoQ1FVRlRMRWRCUVdwQ0xGVkJRV3RDTEVOQlFVTTdVVUZEWml4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM1JDTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNMVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNdlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTndRenRSUVVORUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pETEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGMVNFOHNaME5CUVZjc1IwRkJia0lzVlVGQmIwSXNRMEZCUXp0UlFVTnFRaXhKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJ4Q0xFZEJRVWM3V1VGRFF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRaUVVOaUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRia0lzVVVGQlVTeERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSVHRSUVVNeFFpeFBRVUZQTEU5QlFVOHNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVNM1FpeERRVUZETzBsQlIwOHNORU5CUVhWQ0xFZEJRUzlDTEZWQlFXZERMRU5CUVVNc1JVRkJSU3hEUVVGRE8xRkJRMmhETEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNNVJDeFBRVUZQTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1VVRkZOVUlzVDBGQlR5eEZRVUZGTEdOQlFXTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEZGQlFWRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTndSaXhEUVVGRE8wbEJTVVFzY1VOQlFXZENMRWRCUVdoQ0xGVkJRV2xDTEVOQlFVTXNSVUZCUlN4RFFVRkRPMUZCUVhKQ0xHbENRVmRETzFGQlZrY3NTVUZCU1N4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU01UXl4SlFVRkpMR0ZCUVdFc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGRrSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCZUVJc1EwRkJkMElzUTBGQlF5eERRVUZETzFGQlEzQkVMRWxCUVVrc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1lVRkJZU3hEUVVGRExFVkJRWEpDTEVOQlFYRkNMRU5CUVVNc1EwRkJRenRSUVVVdlJTeEpRVUZKTEVOQlFVTXNVVUZCVVR0aFFVTlNMRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQmFFTXNRMEZCWjBNc1EwRkJRenRoUVVNMVF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hUUVVGVExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCVml4RFFVRlZMRU5CUVVNc1EwRkJReXhGUVVGMFJTeERRVUZ6UlN4RFFVRkRMRU5CUVVNN1VVRkZla1lzVDBGQlR5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUzBGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJZaXhEUVVGaExFTkJRVU1zUTBGQlF6dEpRVU0xUXl4RFFVRkRPMGxCU1Uwc2VVSkJRV01zUjBGQmNrSXNWVUZCYzBJc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzFGQlJUbENMRWxCUVVrc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU51UWl4TFFVRkxMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJUdFpRVU4yUXl4SlFVRkpMRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdXVUZEZGtJc1MwRkJTeXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVTdaMEpCUTNSRExFbEJRVWtzUTBGQlF5eEhRVUZSTEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRuUWtGRGRrSXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlEyUXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlExUXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkROVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJUdHZRa0ZEY2tJc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkRja0k3WVVGRFNqdFRRVU5LTzFGQlEwUXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVc3NUMEZCUVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZxUWl4RFFVRnBRaXhEUVVGRExFTkJRVU03VVVGSE5VTXNTVUZCU1N4WlFVRlpMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRM1JDTEVsQlFVa3NWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOMFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOMlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1NVRkJTU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRk8yZENRVU42UkN4VlFVRlZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxGRkJRVkVzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXp0blFrRkROVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRoUVVOcVF6dFpRVU5FTEZWQlFWVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlF5OUNPMUZCUTBRc1QwRkJUeXhaUVVGWkxFTkJRVU03U1VGRGVFSXNRMEZCUXp0SlFWTk5MRzlDUVVGVExFZEJRV2hDTEZWQlFXbENMRU5CUVZNc1JVRkJSU3hEUVVGVExFVkJRVVVzVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4TlFVRk5MRVZCUVVVc1IwRkJWenRSUVVONFJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJRM2hDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkJSU3hQUVVGUE8xRkJRMjVDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4SlFVRkpMR1ZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJja0lzUTBGQmNVSXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFbEJRVWtzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTmFMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGVFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGVFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenR2UWtGQlJTeFRRVUZUTzJkQ1FVTjBRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUTJoQ0xFVkJRVVVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUTJoQ0xFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVTmtMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVU5rTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkRWQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCVFdRc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTzI5Q1FVTldMRWxCUVVrc1RVRkJUU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0M1FrRkZhRUlzU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk96UkNRVU55UWl4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdlVUpCUTNSQ096WkNRVUZOT3pSQ1FVTklMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0NVFrRkRkRUk3Y1VKQlEwbzdhVUpCUTBvN2NVSkJRVTA3YjBKQlEwZ3NTVUZCU1N4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzNkQ1FVTm9RaXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN05FSkJRM0pDTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF6dDVRa0ZEZEVJN05rSkJRVTA3TkVKQlEwZ3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETzNsQ1FVTjBRanR4UWtGRFNqdHBRa0ZEU2p0blFrRkRSQ3hKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEVWQlFVVTdiMEpCUlZnc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEdsQ1FVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTndSRHRoUVVOS08xTkJRMG83VVVGRFJDeEpRVUZKTEUxQlFVMHNSMEZCUnl4SlFVRkpMR0ZCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEYUVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzFGQlEyWXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlExb3NTVUZCU1N4RFFVRkRMRWRCUVVjc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzQkNMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0WlFVTjJRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJRenRaUVVONFFpeEpRVUZKTEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFsQlF6ZENMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETzJkQ1FVRkZMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXp0WlFVTjRReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRE8yZENRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dFJRVU16UkN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOUUxFTkJRVU03U1VGRlRTeDNRa0ZCWVN4SFFVRndRaXhWUVVGeFFpeE5RVUZOTEVWQlFVVXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hOUVVFeVF5eEZRVUZGTEVkQlFWYzdVVUZEZGtjc1NVRkJTU3haUVVGWkxFZEJRVWNzVlVGQlZTeERRVUZETEdOQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJUTkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlF6RkRMRWxCUVVrc1JVRkJSU3hIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhKUVVGSkxFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTTdXVUZEYUVJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMmRDUVVONlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTjJRaXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03WjBKQlEyaEZMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRoUVVOdVJUdFpRVU5FTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQkwwSXNRMEZCSzBJc1EwRkJReXhEUVVGRE8xbEJRM1pFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRaUVVOa0xFbEJRVWtzVTBGQlV5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTnNRaXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXp0blFrRkRXaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RlFVRkZPMjlDUVVOa0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU5tTEZOQlFWTXNSVUZCUlN4RFFVRkRPMmxDUVVObU8zRkNRVUZOTzI5Q1FVTklMRk5CUVZNc1JVRkJSU3hEUVVGRE8ybENRVU5tTzJkQ1FVTkVMRWxCUVVrc1UwRkJVeXhKUVVGSkxFTkJRVU1zUlVGQlJUdHZRa0ZEYUVJc1ZVRkJWU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVOMFJDeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMmxDUVVOaU8xbEJRMHdzUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEVGp0SlFVTk1MRU5CUVVNN1NVRlRSQ3dyUWtGQlZTeEhRVUZXTEZWQlFXbENMRXRCUVdFc1JVRkJSU3hSUVVGblFpeEZRVUZGTEUxQlFUSkNMRVZCUVVVc1RVRkJNa0k3VVVGQk1VY3NhVUpCVVVNN1VVRlFSeXhKUVVGSkxGVkJRVlVzUjBGQlJ5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUzBGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVdoRExFTkJRV2RETEVOQlFVTXNRMEZCUXp0UlFVTnFSU3hKUVVGSkxFdEJRVXNzUjBGQlJ5eFZRVUZWTEVOQlFVTXNWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRemxETEVsQlFVa3NUVUZCVFN4SFFVRkhMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NUMEZCVHl4VlFVRlZMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRha1lzVlVGQlZTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeExRVUZMTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkROVVFzVlVGQlZTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeExRVUZMTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkROVVFzVlVGQlZTeERRVUZETEdOQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRE9VTXNUMEZCVHl4TlFVRk5MRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVWxOTEhsQ1FVRmpMRWRCUVhKQ0xGVkJRWE5DTEUxQlFVMHNSVUZCUlN4VlFVRlZPMUZCUTNCRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRaUVVOMlFpeEpRVUZKTEVsQlFVa3NSMEZCUnl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrSXNTVUZCVlN4SlFVRkxMRU5CUVVNc1VVRkJVU3hGUVVGRk8yZENRVU4wUWl4UlFVRlJMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03WjBKQlEyNUNMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeFBRVUZQTzI5Q1FVTTVRaXhQUVVGUExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdaMEpCUTNSQ0xFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEwNDdVVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOUUxFTkJRVU03U1VGRlRTdzJRa0ZCYTBJc1IwRkJla0lzVlVGQk1FSXNTMEZCWXl4RlFVRkZMRXRCUVdNN1VVRkRjRVFzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlF6TkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6ZENMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVNelF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNM1FpeEpRVUZKTEVsQlFVa3NSMEZCUnl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRek5DTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOdVF5eEpRVUZKTEVkQlFVY3NUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRUUVVNeFFqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGSFl5eHBRa0ZCVFN4SFFVRnlRaXhWUVVGelFpeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1VVRkRla0lzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRGVFVXNRMEZCUXp0SlFVbGpMRzFDUVVGUkxFZEJRWFpDTEZWQlFYZENMRXRCUVdsRE8xRkJRM0pFTEVsQlFVa3NVVUZCVVN4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOc1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOdVF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGFrSXNTVUZCU1N4UFFVRlBMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NWMEZCVnp0blFrRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRaUVVNM1JDeFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1UwRkROMEk3VVVGRFJDeFBRVUZQTEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTeXhQUVVGQkxFOUJRVThzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRmRCUVZjc1NVRkJTU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVhCRUxFTkJRVzlFTEVOQlFVTTdTVUZETVVVc1EwRkJRenRKUVVsTkxIRkNRVUZWTEVkQlFXcENMRlZCUVd0Q0xFdEJRVXM3VVVGRGJrSXNTVUZCU1N4VFFVRlRMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMjVDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU4yUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUTNaRExFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRXaXhEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVTmFMRWRCUVVjc1IwRkJSeXhKUVVGSkxIZENRVUYzUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBNc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXp0blFrRkRaQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEV0QlFVc3NRMEZCUXp0dlFrRkRhRUlzVTBGQlV6dG5Ra0ZEWWl4SlFVRkpMRWRCUVVjc1EwRkJReXhSUVVGUkxFVkJRVVU3YjBKQlIyUXNRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8yOUNRVU5hTEVOQlFVTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRE8yOUNRVU5zUWl4SFFVRkhMRWRCUVVjc1NVRkJTU3gzUWtGQmQwSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03YVVKQlF6VkRPMmRDUVVORUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0dlFrRkROVUlzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRk8yOUNRVVYwUlN4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dHZRa0ZETDBJc1UwRkJVenRwUWtGRFdqdG5Ra0ZEUkN4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTzI5Q1FVMXdSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEyeENMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGJrSXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVOMFFqdHhRa0ZCVFR0dlFrRkRTQ3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRMMElzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0dlFrRkROVUlzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0cFFrRkRMMEk3WjBKQlEwUXNTVUZCU1N4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN2IwSkJRemxDTEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8ybENRVU5zUXp0eFFrRkJUVHR2UWtGRFNDeFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRwUWtGRGJFTTdZVUZEU2p0VFFVTktPMUZCUlVRc1QwRkJUeXhWUVVGVkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMGxCUXpGRExFTkJRVU03U1VGTFRTeDFRa0ZCV1N4SFFVRnVRaXhWUVVGdlFpeEpRVUZoTzFGQlF6ZENMRk5CUVZNc1UwRkJVeXhEUVVGRExFTkJRVkU3V1VGRGRrSXNUMEZCWXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRGNrTXNRMEZCUXp0UlFVTkVMRWxCUVVrc1ZVRkJWU3hIUVVGSExGVkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJRU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhMUVVGTExFVkJRWFpGTEVOQlFYVkZMRU5CUVVNN1VVRkRkRWNzU1VGQlNTeFJRVUZSTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJ4Q0xFbEJRVWtzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU16UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5zUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETzFsQlEzcEZMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJUdG5Ra0ZETlVJc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4wUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yRkJRMVE3VTBGRFNqdFJRVU5FTEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTNCQ0xFTkJRVU03U1VGSlJDd3dRa0ZCU3l4SFFVRk1MRlZCUVUwc1EwRkJVeXhGUVVGRkxFTkJRVk03VVVGQk1VSXNhVUpCTkVSRE8xRkJNMFJITEVsQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYmtVc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUlhaRUxFbEJRVWtzWTBGQll5eEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTjRRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJTU3hQUVVGQkxHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGNFFpeERRVUYzUWl4RFFVRkRMRU5CUVVNN1VVRkRkRVFzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZCTEVOQlFVTTdXVUZEY0VNc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRM2hDTEVOQlFVTXNSMEZCUnl4TFFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0WlFVTTNRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeEpRVUZKTEdOQlFXTTdiVUpCUTNaRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFbEJRVWtzWTBGQll5eERRVUZETEVOQlFVTTdVVUZEYkVRc1EwRkJReXhEUVVGRExFTkJRVU03VVVGSFNDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE1VTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRNMElzU1VGQlNTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZETTBJc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTTdaMEpCUTNCQ0xFMUJRVTBzUlVGQlJTeERRVUZETzJkQ1FVTlVMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU5VTEUxQlFVMHNSVUZCUlN4RFFVRkRPMkZCUTFvc1EwRkJReXhEUVVGRE8xTkJRMDQ3VVVGRFJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE1VTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRNMElzU1VGQlNTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZETTBJc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTTdaMEpCUTNCQ0xFMUJRVTBzUlVGQlJTeERRVUZETzJkQ1FVTlVMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU5VTEUxQlFVMHNSVUZCUlN4RFFVRkRPMkZCUTFvc1EwRkJReXhEUVVGRE8xTkJRMDQ3VVVGRlJDeEpRVUZKTEZOQlFWTXNSMEZCUnl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFWSXNRMEZCVVN4RlFVTjRRaXhUUVVGVExFZEJRVWNzVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGU0xFTkJRVkVzUlVGRGVFSXNVMEZCVXl4SFFVRkhMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCVWl4RFFVRlJMRU5CUVVNN1VVRkZOMElzU1VGQlNTeHpRa0ZCYzBJc1IwRkJSeXhKUVVGSkxEQkNRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEdGQlFXRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1UwRkJVeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEzQklMRWxCUVVrc1YwRkJWeXhIUVVGSExGVkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE5VUXNTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVWMlJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRXRCUVVzc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZMTEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eEpRVUZKTzJkQ1FVTm9SaXhQUVVGUExFTkJRVU1zUTBGQlF6dFpRVU5pTEU5QlFVOHNSVUZCUlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUXl4RFFVRkRMRU5CUVVNN1VVRkhSaXhKUVVGSkxGbEJRVmtzUjBGQlJ5eHpRa0ZCYzBJc1EwRkJReXc0UWtGQk9FSXNRMEZEY0VVc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUTNSRExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlIycENMRWxCUVVrc1ZVRkJWU3hIUVVGSExGbEJRVmtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJRU3hGUVVGRkxFbEJRVWtzVDBGQlFTeExRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGa0xFTkJRV01zUTBGQlF5eERRVUZETzFGQlEyeEZMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkhhRVFzVDBGQlR5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRE1VSXNUMEZCUVN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRlZCUVZVc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZMTEUxQlFVMDdiVUpCUXpsRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhOUVVGTkxFbEJRVWtzVlVGQlZTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFdEJRVXNzVFVGQlRTeERRVUZETzFGQlJIWkZMRU5CUTNWRkxFTkJRVU1zUTBGQlF6dEpRVU5xUml4RFFVRkRPMGxCUlUwc2RVSkJRVmtzUjBGQmJrSXNWVUZCYjBJc1MwRkJaMElzUlVGQlJTeFpRVUZ2UWl4RlFVRkZMRlZCUVd0Q0xFVkJRVVVzVjBGQmJVSTdVVUZETDBZc1NVRkJTU3hOUVVGTkxFZEJRVWM3V1VGRFZDeFRRVUZUTEVWQlFVVXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ6dFpRVU16UkN4VFFVRlRMRVZCUVVVc1JVRkJSVHRUUVVOb1FpeERRVUZETzFGQlEwWXNTVUZCU1N4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUlVGQlJUdFpRVU5zUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZEYmtNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTTNRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEY2tJc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzSkNMRWxCUVVrc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMjlDUVVOMFFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzNkQ1FVTnNRaXhEUVVGRExFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETzNGQ1FVTjZRenQ1UWtGQlRUdDNRa0ZEU0N4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRE8zRkNRVU42UXp0dlFrRkRSQ3hOUVVGTkxFTkJRVU1zVTBGQlV5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdiMEpCUXpkRExFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzSkNMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRemRDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTJoQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEyaENMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzI5Q1FVTmlMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzI5Q1FVTmlMRWxCUVVrc1MwRkJTeXhIUVVGSExGVkJRVlVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkZOMFFzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRPMjlDUVVOWUxFbEJRVWtzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3ZDBKQlEyeENMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETzNkQ1FVTXpReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzNGQ1FVTllPM2xDUVVGTk8zZENRVU5JTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNN2QwSkJRMUlzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNN2NVSkJRemxETzI5Q1FVTkVMRWxCUVVrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU14UWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRE1VSXNUVUZCVFN4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUlVGQlJTeEhRVUZITEVkQlFVY3NSMEZCUnl4RlFVRkZMRWRCUVVjc1QwRkJUeXhIUVVGSExFdEJRVXNzUjBGQlJ5eEhRVUZITEVkQlFVY3NSVUZCUlN4SFFVRkhMRWRCUVVjc1IwRkJSeXhGUVVGRkxFZEJRVWNzUjBGQlJ5eERRVUZETzJsQ1FVTXhSanR4UWtGQlRUdHZRa0ZEU0N4SlFVRkpMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRkRUlzU1VGQlNTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RFFVRkRPMjlDUVVNdlFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzNkQ1FVTnNRaXhEUVVGRExFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVjBGQlZ5eERRVUZETzNkQ1FVTnlReXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhEUVVGRE8zZENRVU51UXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4RFFVRkRPM0ZDUVVOMFF6dDVRa0ZCVFR0M1FrRkRTQ3hEUVVGRExFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVjBGQlZ5eERRVUZETzNkQ1FVTnlReXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NWVUZCVlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8zZENRVU51UXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPM0ZDUVVOMFF6dHZRa0ZEUkN4TlFVRk5MRU5CUVVNc1UwRkJVeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03YjBKQlF6ZERMRWxCUVVrc1YwRkJWeXhIUVVGSExFTkJRVU1zUlVGQlJUdDNRa0ZEYWtJc1RVRkJUU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF6czRRa0ZEZWtjc1MwRkJTeXhIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzNGQ1FVTnlSRHRwUWtGRFNqdGhRVU5LTzFOQlEwbzdZVUZCVFR0WlFVTklMRWxCUVVrc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnNRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRemRDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkNMRWxCUVVrc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzV1VGQldTeEZRVUZGTEZsQlFWa3NRMEZCUXp0WlFVTXZRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVU5zUWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1YwRkJWeXhEUVVGRE8yZENRVU55UXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4RFFVRkRPMmRDUVVOdVF5eFpRVUZaTEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eERRVUZETzJGQlEzUkRPMmxDUVVGTk8yZENRVU5JTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4WFFVRlhMRU5CUVVNN1owSkJRM0pETEZsQlFWa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTI1RExGbEJRVmtzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4VlFVRlZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGRFTTdXVUZEUkN4TlFVRk5MRU5CUVVNc1UwRkJVeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03V1VGRE4wTXNTVUZCU1N4WFFVRlhMRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVU5xUWl4TlFVRk5MRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRE8zTkNRVU42Unl4TFFVRkxMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGNrUTdVMEZEU2p0UlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZEVEN4cFFrRkJRenRCUVVGRUxFTkJRVU1zUVVGNmJFSkVMRWxCZVd4Q1F6dEJRWHBzUWxrc1owTkJRVlVpZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBzaG9ydGVzdHBhdGhzXzEgPSByZXF1aXJlKFwiLi9zaG9ydGVzdHBhdGhzXCIpO1xyXG52YXIgZGVzY2VudF8xID0gcmVxdWlyZShcIi4vZGVzY2VudFwiKTtcclxudmFyIHJlY3RhbmdsZV8xID0gcmVxdWlyZShcIi4vcmVjdGFuZ2xlXCIpO1xyXG52YXIgbGlua2xlbmd0aHNfMSA9IHJlcXVpcmUoXCIuL2xpbmtsZW5ndGhzXCIpO1xyXG52YXIgTGluazNEID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIExpbmszRChzb3VyY2UsIHRhcmdldCkge1xyXG4gICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgTGluazNELnByb3RvdHlwZS5hY3R1YWxMZW5ndGggPSBmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydCh4LnJlZHVjZShmdW5jdGlvbiAoYywgdikge1xyXG4gICAgICAgICAgICB2YXIgZHggPSB2W190aGlzLnRhcmdldF0gLSB2W190aGlzLnNvdXJjZV07XHJcbiAgICAgICAgICAgIHJldHVybiBjICsgZHggKiBkeDtcclxuICAgICAgICB9LCAwKSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIExpbmszRDtcclxufSgpKTtcclxuZXhwb3J0cy5MaW5rM0QgPSBMaW5rM0Q7XHJcbnZhciBOb2RlM0QgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTm9kZTNEKHgsIHksIHopIHtcclxuICAgICAgICBpZiAoeCA9PT0gdm9pZCAwKSB7IHggPSAwOyB9XHJcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0gMDsgfVxyXG4gICAgICAgIGlmICh6ID09PSB2b2lkIDApIHsgeiA9IDA7IH1cclxuICAgICAgICB0aGlzLnggPSB4O1xyXG4gICAgICAgIHRoaXMueSA9IHk7XHJcbiAgICAgICAgdGhpcy56ID0gejtcclxuICAgIH1cclxuICAgIHJldHVybiBOb2RlM0Q7XHJcbn0oKSk7XHJcbmV4cG9ydHMuTm9kZTNEID0gTm9kZTNEO1xyXG52YXIgTGF5b3V0M0QgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTGF5b3V0M0Qobm9kZXMsIGxpbmtzLCBpZGVhbExpbmtMZW5ndGgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmIChpZGVhbExpbmtMZW5ndGggPT09IHZvaWQgMCkgeyBpZGVhbExpbmtMZW5ndGggPSAxOyB9XHJcbiAgICAgICAgdGhpcy5ub2RlcyA9IG5vZGVzO1xyXG4gICAgICAgIHRoaXMubGlua3MgPSBsaW5rcztcclxuICAgICAgICB0aGlzLmlkZWFsTGlua0xlbmd0aCA9IGlkZWFsTGlua0xlbmd0aDtcclxuICAgICAgICB0aGlzLmNvbnN0cmFpbnRzID0gbnVsbDtcclxuICAgICAgICB0aGlzLnVzZUphY2NhcmRMaW5rTGVuZ3RocyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXN1bHQgPSBuZXcgQXJyYXkoTGF5b3V0M0Quayk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBMYXlvdXQzRC5rOyArK2kpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXN1bHRbaV0gPSBuZXcgQXJyYXkobm9kZXMubGVuZ3RoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodiwgaSkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gTGF5b3V0M0QuZGltczsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBkaW0gPSBfYVtfaV07XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZbZGltXSA9PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgICAgICAgICB2W2RpbV0gPSBNYXRoLnJhbmRvbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF90aGlzLnJlc3VsdFswXVtpXSA9IHYueDtcclxuICAgICAgICAgICAgX3RoaXMucmVzdWx0WzFdW2ldID0gdi55O1xyXG4gICAgICAgICAgICBfdGhpcy5yZXN1bHRbMl1baV0gPSB2Lno7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICA7XHJcbiAgICBMYXlvdXQzRC5wcm90b3R5cGUubGlua0xlbmd0aCA9IGZ1bmN0aW9uIChsKSB7XHJcbiAgICAgICAgcmV0dXJuIGwuYWN0dWFsTGVuZ3RoKHRoaXMucmVzdWx0KTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQzRC5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbiAoaXRlcmF0aW9ucykge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgaWYgKGl0ZXJhdGlvbnMgPT09IHZvaWQgMCkgeyBpdGVyYXRpb25zID0gMTAwOyB9XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzLm5vZGVzLmxlbmd0aDtcclxuICAgICAgICB2YXIgbGlua0FjY2Vzc29yID0gbmV3IExpbmtBY2Nlc3NvcigpO1xyXG4gICAgICAgIGlmICh0aGlzLnVzZUphY2NhcmRMaW5rTGVuZ3RocylcclxuICAgICAgICAgICAgbGlua2xlbmd0aHNfMS5qYWNjYXJkTGlua0xlbmd0aHModGhpcy5saW5rcywgbGlua0FjY2Vzc29yLCAxLjUpO1xyXG4gICAgICAgIHRoaXMubGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5sZW5ndGggKj0gX3RoaXMuaWRlYWxMaW5rTGVuZ3RoOyB9KTtcclxuICAgICAgICB2YXIgZGlzdGFuY2VNYXRyaXggPSAobmV3IHNob3J0ZXN0cGF0aHNfMS5DYWxjdWxhdG9yKG4sIHRoaXMubGlua3MsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnNvdXJjZTsgfSwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUudGFyZ2V0OyB9LCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5sZW5ndGg7IH0pKS5EaXN0YW5jZU1hdHJpeCgpO1xyXG4gICAgICAgIHZhciBEID0gZGVzY2VudF8xLkRlc2NlbnQuY3JlYXRlU3F1YXJlTWF0cml4KG4sIGZ1bmN0aW9uIChpLCBqKSB7IHJldHVybiBkaXN0YW5jZU1hdHJpeFtpXVtqXTsgfSk7XHJcbiAgICAgICAgdmFyIEcgPSBkZXNjZW50XzEuRGVzY2VudC5jcmVhdGVTcXVhcmVNYXRyaXgobiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gMjsgfSk7XHJcbiAgICAgICAgdGhpcy5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uIChfYSkge1xyXG4gICAgICAgICAgICB2YXIgc291cmNlID0gX2Euc291cmNlLCB0YXJnZXQgPSBfYS50YXJnZXQ7XHJcbiAgICAgICAgICAgIHJldHVybiBHW3NvdXJjZV1bdGFyZ2V0XSA9IEdbdGFyZ2V0XVtzb3VyY2VdID0gMTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmRlc2NlbnQgPSBuZXcgZGVzY2VudF8xLkRlc2NlbnQodGhpcy5yZXN1bHQsIEQpO1xyXG4gICAgICAgIHRoaXMuZGVzY2VudC50aHJlc2hvbGQgPSAxZS0zO1xyXG4gICAgICAgIHRoaXMuZGVzY2VudC5HID0gRztcclxuICAgICAgICBpZiAodGhpcy5jb25zdHJhaW50cylcclxuICAgICAgICAgICAgdGhpcy5kZXNjZW50LnByb2plY3QgPSBuZXcgcmVjdGFuZ2xlXzEuUHJvamVjdGlvbih0aGlzLm5vZGVzLCBudWxsLCBudWxsLCB0aGlzLmNvbnN0cmFpbnRzKS5wcm9qZWN0RnVuY3Rpb25zKCk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciB2ID0gdGhpcy5ub2Rlc1tpXTtcclxuICAgICAgICAgICAgaWYgKHYuZml4ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVzY2VudC5sb2Nrcy5hZGQoaSwgW3YueCwgdi55LCB2LnpdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRlc2NlbnQucnVuKGl0ZXJhdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dDNELnByb3RvdHlwZS50aWNrID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuZGVzY2VudC5sb2Nrcy5jbGVhcigpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgdiA9IHRoaXMubm9kZXNbaV07XHJcbiAgICAgICAgICAgIGlmICh2LmZpeGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2NlbnQubG9ja3MuYWRkKGksIFt2LngsIHYueSwgdi56XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVzY2VudC5ydW5nZUt1dHRhKCk7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0M0QuZGltcyA9IFsneCcsICd5JywgJ3onXTtcclxuICAgIExheW91dDNELmsgPSBMYXlvdXQzRC5kaW1zLmxlbmd0aDtcclxuICAgIHJldHVybiBMYXlvdXQzRDtcclxufSgpKTtcclxuZXhwb3J0cy5MYXlvdXQzRCA9IExheW91dDNEO1xyXG52YXIgTGlua0FjY2Vzc29yID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIExpbmtBY2Nlc3NvcigpIHtcclxuICAgIH1cclxuICAgIExpbmtBY2Nlc3Nvci5wcm90b3R5cGUuZ2V0U291cmNlSW5kZXggPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5zb3VyY2U7IH07XHJcbiAgICBMaW5rQWNjZXNzb3IucHJvdG90eXBlLmdldFRhcmdldEluZGV4ID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUudGFyZ2V0OyB9O1xyXG4gICAgTGlua0FjY2Vzc29yLnByb3RvdHlwZS5nZXRMZW5ndGggPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5sZW5ndGg7IH07XHJcbiAgICBMaW5rQWNjZXNzb3IucHJvdG90eXBlLnNldExlbmd0aCA9IGZ1bmN0aW9uIChlLCBsKSB7IGUubGVuZ3RoID0gbDsgfTtcclxuICAgIHJldHVybiBMaW5rQWNjZXNzb3I7XHJcbn0oKSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHRjViM1YwTTJRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOVhaV0pEYjJ4aEwzTnlZeTlzWVhsdmRYUXpaQzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMR2xFUVVFd1F6dEJRVU14UXl4eFEwRkJhVU03UVVGRGFrTXNlVU5CUVRSRU8wRkJSVFZFTERaRFFVRnZSVHRCUVVWd1JUdEpRVVZSTEdkQ1FVRnRRaXhOUVVGakxFVkJRVk1zVFVGQll6dFJRVUZ5UXl4WFFVRk5MRWRCUVU0c1RVRkJUU3hEUVVGUk8xRkJRVk1zVjBGQlRTeEhRVUZPTEUxQlFVMHNRMEZCVVR0SlFVRkpMRU5CUVVNN1NVRkROMFFzTmtKQlFWa3NSMEZCV2l4VlFVRmhMRU5CUVdFN1VVRkJNVUlzYVVKQlRVTTdVVUZNUnl4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRMW9zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGWE8xbEJRelZDTEVsQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFpRVU16UXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEzWkNMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEyWXNRMEZCUXp0SlFVTk1MR0ZCUVVNN1FVRkJSQ3hEUVVGRExFRkJWa3dzU1VGVlN6dEJRVlpSTEhkQ1FVRk5PMEZCVjJZN1NVRlRTU3huUWtGRFZ5eERRVUZoTEVWQlEySXNRMEZCWVN4RlFVTmlMRU5CUVdFN1VVRkdZaXhyUWtGQlFTeEZRVUZCTEV0QlFXRTdVVUZEWWl4clFrRkJRU3hGUVVGQkxFdEJRV0U3VVVGRFlpeHJRa0ZCUVN4RlFVRkJMRXRCUVdFN1VVRkdZaXhOUVVGRExFZEJRVVFzUTBGQlF5eERRVUZaTzFGQlEySXNUVUZCUXl4SFFVRkVMRU5CUVVNc1EwRkJXVHRSUVVOaUxFMUJRVU1zUjBGQlJDeERRVUZETEVOQlFWazdTVUZCU1N4RFFVRkRPMGxCUTJwRExHRkJRVU03UVVGQlJDeERRVUZETEVGQllrUXNTVUZoUXp0QlFXSlpMSGRDUVVGTk8wRkJZMjVDTzBsQlRVa3NhMEpCUVcxQ0xFdEJRV1VzUlVGQlV5eExRVUZsTEVWQlFWTXNaVUZCTWtJN1VVRkJPVVlzYVVKQllVTTdVVUZpYTBVc1owTkJRVUVzUlVGQlFTeHRRa0ZCTWtJN1VVRkJNMFVzVlVGQlN5eEhRVUZNTEV0QlFVc3NRMEZCVlR0UlFVRlRMRlZCUVVzc1IwRkJUQ3hMUVVGTExFTkJRVlU3VVVGQlV5eHZRa0ZCWlN4SFFVRm1MR1ZCUVdVc1EwRkJXVHRSUVVZNVJpeG5Ra0ZCVnl4SFFVRlZMRWxCUVVrc1EwRkJRenRSUVhGQ01VSXNNRUpCUVhGQ0xFZEJRVmtzU1VGQlNTeERRVUZETzFGQmJFSnNReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU53UXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU5xUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFRRVU0xUXp0UlFVTkVMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTm1MRXRCUVdkQ0xGVkJRV0VzUlVGQllpeExRVUZCTEZGQlFWRXNRMEZCUXl4SlFVRkpMRVZCUVdJc1kwRkJZU3hGUVVGaUxFbEJRV0VzUlVGQlJUdG5Ra0ZCTVVJc1NVRkJTU3hIUVVGSExGTkJRVUU3WjBKQlExSXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeFhRVUZYTzI5Q1FVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1lVRkROVVE3V1VGRFJDeExRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRlRUlzUzBGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNoQ0xFdEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTFRaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5RTEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUlVZc05rSkJRVlVzUjBGQlZpeFZRVUZYTEVOQlFWTTdVVUZEYUVJc1QwRkJUeXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOMlF5eERRVUZETzBsQlMwUXNkMEpCUVVzc1IwRkJUQ3hWUVVGTkxGVkJRWGRDTzFGQlFUbENMR2xDUVhWRFF6dFJRWFpEU3l3eVFrRkJRU3hGUVVGQkxHZENRVUYzUWp0UlFVTXhRaXhKUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVVMVFpeEpRVUZKTEZsQlFWa3NSMEZCUnl4SlFVRkpMRmxCUVZrc1JVRkJSU3hEUVVGRE8xRkJSWFJETEVsQlFVa3NTVUZCU1N4RFFVRkRMSEZDUVVGeFFqdFpRVU14UWl4blEwRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRmxCUVZrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVYwUkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCU1N4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzUzBGQlNTeERRVUZETEdWQlFXVXNSVUZCYUVNc1EwRkJaME1zUTBGQlF5eERRVUZETzFGQlJ6RkVMRWxCUVUwc1kwRkJZeXhIUVVGSExFTkJRVU1zU1VGQlNTd3dRa0ZCVlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVU5vUkN4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFWSXNRMEZCVVN4RlFVRkZMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCVWl4RFFVRlJMRVZCUVVVc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRlNMRU5CUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdVVUZGYWtVc1NVRkJUU3hEUVVGRExFZEJRVWNzYVVKQlFVOHNRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETEVWQlFVVXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGd1FpeERRVUZ2UWl4RFFVRkRMRU5CUVVNN1VVRkplRVVzU1VGQlNTeERRVUZETEVkQlFVY3NhVUpCUVU4c1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1kwRkJZeXhQUVVGUExFTkJRVU1zUTBGQlFTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJoRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVNc1JVRkJhMEk3WjBKQlFXaENMR3RDUVVGTkxFVkJRVVVzYTBKQlFVMDdXVUZCVHl4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXp0UlFVRjZReXhEUVVGNVF5eERRVUZETEVOQlFVTTdVVUZGZEVZc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEdsQ1FVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXpReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRPVUlzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJTVzVDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjN1dVRkRhRUlzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3h6UWtGQlZTeERRVUZqTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNRMEZCUXp0UlFVVndTQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRlRU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4wUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVU3WjBKQlExUXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU01UXp0VFFVTktPMUZCUlVRc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkROMElzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEYUVJc1EwRkJRenRKUVVWRUxIVkNRVUZKTEVkQlFVbzdVVUZEU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0UlFVTXpRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRlRU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4wUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVU3WjBKQlExUXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU01UXp0VFFVTktPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMGxCUTNKRExFTkJRVU03U1VFM1JVMHNZVUZCU1N4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTjJRaXhWUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRTJSWEJETEdWQlFVTTdRMEZCUVN4QlFTOUZSQ3hKUVN0RlF6dEJRUzlGV1N3MFFrRkJVVHRCUVdsR2NrSTdTVUZCUVR0SlFVdEJMRU5CUVVNN1NVRktSeXh4UTBGQll5eEhRVUZrTEZWQlFXVXNRMEZCVFN4SlFVRlpMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYmtRc2NVTkJRV01zUjBGQlpDeFZRVUZsTEVOQlFVMHNTVUZCV1N4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEyNUVMR2REUVVGVExFZEJRVlFzVlVGQlZTeERRVUZOTEVsQlFWa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU01UXl4blEwRkJVeXhIUVVGVUxGVkJRVlVzUTBGQlRTeEZRVUZGTEVOQlFWTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYkVRc2JVSkJRVU03UVVGQlJDeERRVUZETEVGQlRFUXNTVUZMUXlKOSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBsYXlvdXRfMSA9IHJlcXVpcmUoXCIuL2xheW91dFwiKTtcclxudmFyIGdyaWRyb3V0ZXJfMSA9IHJlcXVpcmUoXCIuL2dyaWRyb3V0ZXJcIik7XHJcbmZ1bmN0aW9uIGdyaWRpZnkocGdMYXlvdXQsIG51ZGdlR2FwLCBtYXJnaW4sIGdyb3VwTWFyZ2luKSB7XHJcbiAgICBwZ0xheW91dC5jb2xhLnN0YXJ0KDAsIDAsIDAsIDEwLCBmYWxzZSk7XHJcbiAgICB2YXIgZ3JpZHJvdXRlciA9IHJvdXRlKHBnTGF5b3V0LmNvbGEubm9kZXMoKSwgcGdMYXlvdXQuY29sYS5ncm91cHMoKSwgbWFyZ2luLCBncm91cE1hcmdpbik7XHJcbiAgICByZXR1cm4gZ3JpZHJvdXRlci5yb3V0ZUVkZ2VzKHBnTGF5b3V0LnBvd2VyR3JhcGgucG93ZXJFZGdlcywgbnVkZ2VHYXAsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnNvdXJjZS5yb3V0ZXJOb2RlLmlkOyB9LCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS50YXJnZXQucm91dGVyTm9kZS5pZDsgfSk7XHJcbn1cclxuZXhwb3J0cy5ncmlkaWZ5ID0gZ3JpZGlmeTtcclxuZnVuY3Rpb24gcm91dGUobm9kZXMsIGdyb3VwcywgbWFyZ2luLCBncm91cE1hcmdpbikge1xyXG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGQucm91dGVyTm9kZSA9IHtcclxuICAgICAgICAgICAgbmFtZTogZC5uYW1lLFxyXG4gICAgICAgICAgICBib3VuZHM6IGQuYm91bmRzLmluZmxhdGUoLW1hcmdpbilcclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICBncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGQucm91dGVyTm9kZSA9IHtcclxuICAgICAgICAgICAgYm91bmRzOiBkLmJvdW5kcy5pbmZsYXRlKC1ncm91cE1hcmdpbiksXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiAodHlwZW9mIGQuZ3JvdXBzICE9PSAndW5kZWZpbmVkJyA/IGQuZ3JvdXBzLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gbm9kZXMubGVuZ3RoICsgYy5pZDsgfSkgOiBbXSlcclxuICAgICAgICAgICAgICAgIC5jb25jYXQodHlwZW9mIGQubGVhdmVzICE9PSAndW5kZWZpbmVkJyA/IGQubGVhdmVzLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gYy5pbmRleDsgfSkgOiBbXSlcclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICB2YXIgZ3JpZFJvdXRlck5vZGVzID0gbm9kZXMuY29uY2F0KGdyb3VwcykubWFwKGZ1bmN0aW9uIChkLCBpKSB7XHJcbiAgICAgICAgZC5yb3V0ZXJOb2RlLmlkID0gaTtcclxuICAgICAgICByZXR1cm4gZC5yb3V0ZXJOb2RlO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3IGdyaWRyb3V0ZXJfMS5HcmlkUm91dGVyKGdyaWRSb3V0ZXJOb2Rlcywge1xyXG4gICAgICAgIGdldENoaWxkcmVuOiBmdW5jdGlvbiAodikgeyByZXR1cm4gdi5jaGlsZHJlbjsgfSxcclxuICAgICAgICBnZXRCb3VuZHM6IGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LmJvdW5kczsgfVxyXG4gICAgfSwgbWFyZ2luIC0gZ3JvdXBNYXJnaW4pO1xyXG59XHJcbmZ1bmN0aW9uIHBvd2VyR3JhcGhHcmlkTGF5b3V0KGdyYXBoLCBzaXplLCBncm91cHBhZGRpbmcpIHtcclxuICAgIHZhciBwb3dlckdyYXBoO1xyXG4gICAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodiwgaSkgeyByZXR1cm4gdi5pbmRleCA9IGk7IH0pO1xyXG4gICAgbmV3IGxheW91dF8xLkxheW91dCgpXHJcbiAgICAgICAgLmF2b2lkT3ZlcmxhcHMoZmFsc2UpXHJcbiAgICAgICAgLm5vZGVzKGdyYXBoLm5vZGVzKVxyXG4gICAgICAgIC5saW5rcyhncmFwaC5saW5rcylcclxuICAgICAgICAucG93ZXJHcmFwaEdyb3VwcyhmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIHBvd2VyR3JhcGggPSBkO1xyXG4gICAgICAgIHBvd2VyR3JhcGguZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHYucGFkZGluZyA9IGdyb3VwcGFkZGluZzsgfSk7XHJcbiAgICB9KTtcclxuICAgIHZhciBuID0gZ3JhcGgubm9kZXMubGVuZ3RoO1xyXG4gICAgdmFyIGVkZ2VzID0gW107XHJcbiAgICB2YXIgdnMgPSBncmFwaC5ub2Rlcy5zbGljZSgwKTtcclxuICAgIHZzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIHYuaW5kZXggPSBpOyB9KTtcclxuICAgIHBvd2VyR3JhcGguZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKGcpIHtcclxuICAgICAgICB2YXIgc291cmNlSW5kID0gZy5pbmRleCA9IGcuaWQgKyBuO1xyXG4gICAgICAgIHZzLnB1c2goZyk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBnLmxlYXZlcyAhPT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgIGcubGVhdmVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgcmV0dXJuIGVkZ2VzLnB1c2goeyBzb3VyY2U6IHNvdXJjZUluZCwgdGFyZ2V0OiB2LmluZGV4IH0pOyB9KTtcclxuICAgICAgICBpZiAodHlwZW9mIGcuZ3JvdXBzICE9PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgZy5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZ2cpIHsgcmV0dXJuIGVkZ2VzLnB1c2goeyBzb3VyY2U6IHNvdXJjZUluZCwgdGFyZ2V0OiBnZy5pZCArIG4gfSk7IH0pO1xyXG4gICAgfSk7XHJcbiAgICBwb3dlckdyYXBoLnBvd2VyRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIGVkZ2VzLnB1c2goeyBzb3VyY2U6IGUuc291cmNlLmluZGV4LCB0YXJnZXQ6IGUudGFyZ2V0LmluZGV4IH0pO1xyXG4gICAgfSk7XHJcbiAgICBuZXcgbGF5b3V0XzEuTGF5b3V0KClcclxuICAgICAgICAuc2l6ZShzaXplKVxyXG4gICAgICAgIC5ub2Rlcyh2cylcclxuICAgICAgICAubGlua3MoZWRnZXMpXHJcbiAgICAgICAgLmF2b2lkT3ZlcmxhcHMoZmFsc2UpXHJcbiAgICAgICAgLmxpbmtEaXN0YW5jZSgzMClcclxuICAgICAgICAuc3ltbWV0cmljRGlmZkxpbmtMZW5ndGhzKDUpXHJcbiAgICAgICAgLmNvbnZlcmdlbmNlVGhyZXNob2xkKDFlLTQpXHJcbiAgICAgICAgLnN0YXJ0KDEwMCwgMCwgMCwgMCwgZmFsc2UpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjb2xhOiBuZXcgbGF5b3V0XzEuTGF5b3V0KClcclxuICAgICAgICAgICAgLmNvbnZlcmdlbmNlVGhyZXNob2xkKDFlLTMpXHJcbiAgICAgICAgICAgIC5zaXplKHNpemUpXHJcbiAgICAgICAgICAgIC5hdm9pZE92ZXJsYXBzKHRydWUpXHJcbiAgICAgICAgICAgIC5ub2RlcyhncmFwaC5ub2RlcylcclxuICAgICAgICAgICAgLmxpbmtzKGdyYXBoLmxpbmtzKVxyXG4gICAgICAgICAgICAuZ3JvdXBDb21wYWN0bmVzcygxZS00KVxyXG4gICAgICAgICAgICAubGlua0Rpc3RhbmNlKDMwKVxyXG4gICAgICAgICAgICAuc3ltbWV0cmljRGlmZkxpbmtMZW5ndGhzKDUpXHJcbiAgICAgICAgICAgIC5wb3dlckdyYXBoR3JvdXBzKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgICAgIHBvd2VyR3JhcGggPSBkO1xyXG4gICAgICAgICAgICBwb3dlckdyYXBoLmdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgICAgICB2LnBhZGRpbmcgPSBncm91cHBhZGRpbmc7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pLnN0YXJ0KDUwLCAwLCAxMDAsIDAsIGZhbHNlKSxcclxuICAgICAgICBwb3dlckdyYXBoOiBwb3dlckdyYXBoXHJcbiAgICB9O1xyXG59XHJcbmV4cG9ydHMucG93ZXJHcmFwaEdyaWRMYXlvdXQgPSBwb3dlckdyYXBoR3JpZExheW91dDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWW1GMFkyZ3Vhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTlYWldKRGIyeGhMM055WXk5aVlYUmphQzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMRzFEUVVFeVF6dEJRVU16UXl3eVEwRkJkVU03UVVGUmRrTXNVMEZCWjBJc1QwRkJUeXhEUVVGRExGRkJRVkVzUlVGQlJTeFJRVUZuUWl4RlFVRkZMRTFCUVdNc1JVRkJSU3hYUVVGdFFqdEpRVU51Uml4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdTVUZEZUVNc1NVRkJTU3hWUVVGVkxFZEJRVWNzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hOUVVGTkxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTTdTVUZETTBZc1QwRkJUeXhWUVVGVkxFTkJRVU1zVlVGQlZTeERRVUZOTEZGQlFWRXNRMEZCUXl4VlFVRlZMRU5CUVVNc1ZVRkJWU3hGUVVGRkxGRkJRVkVzUlVGQlJTeFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNSVUZCZEVJc1EwRkJjMElzUlVGQlJTeFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNSVUZCZEVJc1EwRkJjMElzUTBGQlF5eERRVUZETzBGQlEzaEpMRU5CUVVNN1FVRktSQ3d3UWtGSlF6dEJRVVZFTEZOQlFWTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJRVVVzVFVGQll5eEZRVUZGTEZkQlFXMUNPMGxCUXpkRUxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMUZCUTFnc1EwRkJReXhEUVVGRExGVkJRVlVzUjBGQlVUdFpRVU5vUWl4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWs3V1VGRFdpeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdVMEZEY0VNc1EwRkJRenRKUVVOT0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEwZ3NUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU03VVVGRFdpeERRVUZETEVOQlFVTXNWVUZCVlN4SFFVRlJPMWxCUTJoQ0xFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF6dFpRVU4wUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJia0lzUTBGQmJVSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03YVVKQlEyNUdMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFWQXNRMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF6dFRRVU5vUml4RFFVRkRPMGxCUTA0c1EwRkJReXhEUVVGRExFTkJRVU03U1VGRFNDeEpRVUZKTEdWQlFXVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8xRkJRMmhFTEVOQlFVTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU53UWl4UFFVRlBMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU03U1VGRGVFSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRTQ3hQUVVGUExFbEJRVWtzZFVKQlFWVXNRMEZCUXl4bFFVRmxMRVZCUVVVN1VVRkRia01zVjBGQlZ5eEZRVUZGTEZWQlFVTXNRMEZCVFN4SlFVRkxMRTlCUVVFc1EwRkJReXhEUVVGRExGRkJRVkVzUlVGQlZpeERRVUZWTzFGQlEyNURMRk5CUVZNc1JVRkJSU3hWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVZJc1EwRkJVVHRMUVVNelFpeEZRVUZGTEUxQlFVMHNSMEZCUnl4WFFVRlhMRU5CUVVNc1EwRkJRenRCUVVNM1FpeERRVUZETzBGQlJVUXNVMEZCWjBJc2IwSkJRVzlDTEVOQlEyaERMRXRCUVRaRExFVkJRemRETEVsQlFXTXNSVUZEWkN4WlFVRnZRanRKUVVkd1FpeEpRVUZKTEZWQlFWVXNRMEZCUXp0SlFVTm1MRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1NVRkJTeXhQUVVGTkxFTkJRVVVzUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZCUXl4RlFVRnNRaXhEUVVGclFpeERRVUZETEVOQlFVTTdTVUZEYWtRc1NVRkJTU3hsUVVGTkxFVkJRVVU3VTBGRFVDeGhRVUZoTEVOQlFVTXNTMEZCU3l4RFFVRkRPMU5CUTNCQ0xFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRPMU5CUTJ4Q0xFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRPMU5CUTJ4Q0xHZENRVUZuUWl4RFFVRkRMRlZCUVZVc1EwRkJRenRSUVVONlFpeFZRVUZWTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJZc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hEUVVGRExFTkJRVU1zVDBGQlR5eEhRVUZITEZsQlFWa3NSVUZCZUVJc1EwRkJkMElzUTBGQlF5eERRVUZETzBsQlF6VkVMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJTVkFzU1VGQlNTeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRE0wSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJRMllzU1VGQlNTeEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZET1VJc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJUU3hEUVVGRkxFTkJRVU1zUzBGQlN5eEhRVUZITEVOQlFVTXNSVUZCYkVJc1EwRkJhMElzUTBGQlF5eERRVUZETzBsQlEzcERMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXp0UlFVTjJRaXhKUVVGSkxGTkJRVk1zUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEyNURMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEV0N4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUzBGQlN5eFhRVUZYTzFsQlF5OUNMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEUxQlFVMHNSVUZCUlN4VFFVRlRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RlFVRnNSQ3hEUVVGclJDeERRVUZETEVOQlFVTTdVVUZET1VVc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnp0WlFVTXZRaXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRVZCUVVVc1NVRkJTU3hQUVVGQkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4TlFVRk5MRVZCUVVVc1UwRkJVeXhGUVVGRkxFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRWEJFTEVOQlFXOUVMRU5CUVVNc1EwRkJRenRKUVVOeVJpeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTklMRlZCUVZVc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXp0UlFVTXpRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEYmtVc1EwRkJReXhEUVVGRExFTkJRVU03U1VGSFNDeEpRVUZKTEdWQlFVMHNSVUZCUlR0VFFVTlFMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03VTBGRFZpeExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRPMU5CUTFRc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6dFRRVU5hTEdGQlFXRXNRMEZCUXl4TFFVRkxMRU5CUVVNN1UwRkRjRUlzV1VGQldTeERRVUZETEVWQlFVVXNRMEZCUXp0VFFVTm9RaXgzUWtGQmQwSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRNMElzYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRE8xTkJRekZDTEV0QlFVc3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkxhRU1zVDBGQlR6dFJRVU5JTEVsQlFVa3NSVUZEUVN4SlFVRkpMR1ZCUVUwc1JVRkJSVHRoUVVOWUxHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrc1EwRkJRenRoUVVNeFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMkZCUTFZc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF6dGhRVU51UWl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6dGhRVU5zUWl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6dGhRVVZzUWl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTTdZVUZEZEVJc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF6dGhRVU5vUWl4M1FrRkJkMElzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZETTBJc1owSkJRV2RDTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTNwQ0xGVkJRVlVzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEWml4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTTdaMEpCUTJwRExFTkJRVU1zUTBGQlF5eFBRVUZQTEVkQlFVY3NXVUZCV1N4RFFVRkJPMWxCUXpWQ0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExQXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU03VVVGRGJFTXNWVUZCVlN4RlFVRkZMRlZCUVZVN1MwRkRla0lzUTBGQlF6dEJRVU5PTEVOQlFVTTdRVUZ5UlVRc2IwUkJjVVZESW4wPSIsIlwidXNlIHN0cmljdFwiO1xyXG5mdW5jdGlvbiBfX2V4cG9ydChtKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmICghZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eShwKSkgZXhwb3J0c1twXSA9IG1bcF07XHJcbn1cclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvYWRhcHRvclwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9kM2FkYXB0b3JcIikpO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvZGVzY2VudFwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9nZW9tXCIpKTtcclxuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL2dyaWRyb3V0ZXJcIikpO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvaGFuZGxlZGlzY29ubmVjdGVkXCIpKTtcclxuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL2xheW91dFwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9sYXlvdXQzZFwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9saW5rbGVuZ3Roc1wiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9wb3dlcmdyYXBoXCIpKTtcclxuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL3BxdWV1ZVwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9yYnRyZWVcIikpO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvcmVjdGFuZ2xlXCIpKTtcclxuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL3Nob3J0ZXN0cGF0aHNcIikpO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvdnBzY1wiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9iYXRjaFwiKSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTlYWldKRGIyeGhMMmx1WkdWNExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3TzBGQlFVRXNiVU5CUVRaQ08wRkJRemRDTEhGRFFVRXJRanRCUVVNdlFpeHRRMEZCTmtJN1FVRkROMElzWjBOQlFUQkNPMEZCUXpGQ0xITkRRVUZuUXp0QlFVTm9ReXc0UTBGQmQwTTdRVUZEZUVNc2EwTkJRVFJDTzBGQlF6VkNMRzlEUVVFNFFqdEJRVU01UWl4MVEwRkJhVU03UVVGRGFrTXNjME5CUVdkRE8wRkJRMmhETEd0RFFVRTBRanRCUVVNMVFpeHJRMEZCTkVJN1FVRkROVUlzY1VOQlFTdENPMEZCUXk5Q0xIbERRVUZ0UXp0QlFVTnVReXhuUTBGQk1FSTdRVUZETVVJc2FVTkJRVEpDSW4wPSIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIndlYmNvbGFcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wid2ViY29sYVwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJjeXRvc2NhcGVDb2xhXCJdID0gZmFjdG9yeShyZXF1aXJlKFwid2ViY29sYVwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1wiY3l0b3NjYXBlQ29sYVwiXSA9IGZhY3Rvcnkocm9vdFtcIndlYmNvbGFcIl0pO1xufSkodGhpcywgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV81X18pIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbi8qKioqKiovIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAzKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbnZhciBkZWZhdWx0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgY29sYSA9IF9fd2VicGFja19yZXF1aXJlX18oNSkgfHwgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmNvbGEgOiBudWxsKTtcbnZhciByYWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFyIGlzU3RyaW5nID0gZnVuY3Rpb24gaXNTdHJpbmcobykge1xuICByZXR1cm4gKHR5cGVvZiBvID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihvKSkgPT09IF90eXBlb2YoJycpO1xufTtcbnZhciBpc051bWJlciA9IGZ1bmN0aW9uIGlzTnVtYmVyKG8pIHtcbiAgcmV0dXJuICh0eXBlb2YgbyA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YobykpID09PSBfdHlwZW9mKDApO1xufTtcbnZhciBpc09iamVjdCA9IGZ1bmN0aW9uIGlzT2JqZWN0KG8pIHtcbiAgcmV0dXJuIG8gIT0gbnVsbCAmJiAodHlwZW9mIG8gPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKG8pKSA9PT0gX3R5cGVvZih7fSk7XG59O1xudmFyIGlzRnVuY3Rpb24gPSBmdW5jdGlvbiBpc0Z1bmN0aW9uKG8pIHtcbiAgcmV0dXJuIG8gIT0gbnVsbCAmJiAodHlwZW9mIG8gPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKG8pKSA9PT0gX3R5cGVvZihmdW5jdGlvbiAoKSB7fSk7XG59O1xudmFyIG5vcCA9IGZ1bmN0aW9uIG5vcCgpIHt9O1xuXG52YXIgZ2V0T3B0VmFsID0gZnVuY3Rpb24gZ2V0T3B0VmFsKHZhbCwgZWxlKSB7XG4gIGlmIChpc0Z1bmN0aW9uKHZhbCkpIHtcbiAgICB2YXIgZm4gPSB2YWw7XG4gICAgcmV0dXJuIGZuLmFwcGx5KGVsZSwgW2VsZV0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbn07XG5cbi8vIGNvbnN0cnVjdG9yXG4vLyBvcHRpb25zIDogb2JqZWN0IGNvbnRhaW5pbmcgbGF5b3V0IG9wdGlvbnNcbmZ1bmN0aW9uIENvbGFMYXlvdXQob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBhc3NpZ24oe30sIGRlZmF1bHRzLCBvcHRpb25zKTtcbn1cblxuLy8gcnVucyB0aGUgbGF5b3V0XG5Db2xhTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsYXlvdXQgPSB0aGlzO1xuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICBsYXlvdXQubWFudWFsbHlTdG9wcGVkID0gZmFsc2U7XG5cbiAgdmFyIGN5ID0gb3B0aW9ucy5jeTsgLy8gY3kgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgZm9yIHVzIGluIHRoZSBjb25zdHJ1Y3RvclxuICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgdmFyIG5vZGVzID0gZWxlcy5ub2RlcygpO1xuICB2YXIgZWRnZXMgPSBlbGVzLmVkZ2VzKCk7XG4gIHZhciByZWFkeSA9IGZhbHNlO1xuXG4gIHZhciBpc1BhcmVudCA9IGZ1bmN0aW9uIGlzUGFyZW50KGVsZSkge1xuICAgIHJldHVybiBlbGUuaXNQYXJlbnQoKTtcbiAgfTtcblxuICB2YXIgcGFyZW50Tm9kZXMgPSBub2Rlcy5maWx0ZXIoaXNQYXJlbnQpO1xuXG4gIHZhciBub25wYXJlbnROb2RlcyA9IG5vZGVzLnN1YnRyYWN0KHBhcmVudE5vZGVzKTtcblxuICB2YXIgYmIgPSBvcHRpb25zLmJvdW5kaW5nQm94IHx8IHsgeDE6IDAsIHkxOiAwLCB3OiBjeS53aWR0aCgpLCBoOiBjeS5oZWlnaHQoKSB9O1xuICBpZiAoYmIueDIgPT09IHVuZGVmaW5lZCkge1xuICAgIGJiLngyID0gYmIueDEgKyBiYi53O1xuICB9XG4gIGlmIChiYi53ID09PSB1bmRlZmluZWQpIHtcbiAgICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgfVxuICBpZiAoYmIueTIgPT09IHVuZGVmaW5lZCkge1xuICAgIGJiLnkyID0gYmIueTEgKyBiYi5oO1xuICB9XG4gIGlmIChiYi5oID09PSB1bmRlZmluZWQpIHtcbiAgICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgfVxuXG4gIHZhciB1cGRhdGVOb2RlUG9zaXRpb25zID0gZnVuY3Rpb24gdXBkYXRlTm9kZVBvc2l0aW9ucygpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgdmFyIGRpbWVuc2lvbnMgPSBub2RlLmxheW91dERpbWVuc2lvbnMob3B0aW9ucyk7XG4gICAgICB2YXIgc2NyYXRjaCA9IG5vZGUuc2NyYXRjaCgnY29sYScpO1xuXG4gICAgICAvLyB1cGRhdGUgbm9kZSBkaW1zXG4gICAgICBpZiAoIXNjcmF0Y2gudXBkYXRlZERpbXMpIHtcbiAgICAgICAgdmFyIHBhZGRpbmcgPSBnZXRPcHRWYWwob3B0aW9ucy5ub2RlU3BhY2luZywgbm9kZSk7XG5cbiAgICAgICAgc2NyYXRjaC53aWR0aCA9IGRpbWVuc2lvbnMudyArIDIgKiBwYWRkaW5nO1xuICAgICAgICBzY3JhdGNoLmhlaWdodCA9IGRpbWVuc2lvbnMuaCArIDIgKiBwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgIG5vZGVzLnBvc2l0aW9ucyhmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIHNjcmF0Y2ggPSBub2RlLnNjcmF0Y2goKS5jb2xhO1xuICAgICAgdmFyIHJldFBvcyA9IHZvaWQgMDtcblxuICAgICAgaWYgKCFub2RlLmdyYWJiZWQoKSAmJiBub25wYXJlbnROb2Rlcy5jb250YWlucyhub2RlKSkge1xuICAgICAgICByZXRQb3MgPSB7XG4gICAgICAgICAgeDogYmIueDEgKyBzY3JhdGNoLngsXG4gICAgICAgICAgeTogYmIueTEgKyBzY3JhdGNoLnlcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIWlzTnVtYmVyKHJldFBvcy54KSB8fCAhaXNOdW1iZXIocmV0UG9zLnkpKSB7XG4gICAgICAgICAgcmV0UG9zID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXRQb3M7XG4gICAgfSk7XG5cbiAgICBub2Rlcy51cGRhdGVDb21wb3VuZEJvdW5kcygpOyAvLyBiZWNhdXNlIHRoZSB3YXkgdGhpcyBsYXlvdXQgc2V0cyBwb3NpdGlvbnMgaXMgYnVnZ3kgZm9yIHNvbWUgcmVhc29uOyByZWYgIzg3OFxuXG4gICAgaWYgKCFyZWFkeSkge1xuICAgICAgb25SZWFkeSgpO1xuICAgICAgcmVhZHkgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmZpdCkge1xuICAgICAgY3kuZml0KG9wdGlvbnMucGFkZGluZyk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBvbkRvbmUgPSBmdW5jdGlvbiBvbkRvbmUoKSB7XG4gICAgaWYgKG9wdGlvbnMudW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nKSB7XG4gICAgICBncmFiYmFibGVOb2Rlcy5ncmFiaWZ5KCk7XG4gICAgfVxuXG4gICAgY3kub2ZmKCdkZXN0cm95JywgZGVzdHJveUhhbmRsZXIpO1xuXG4gICAgbm9kZXMub2ZmKCdncmFiIGZyZWUgcG9zaXRpb24nLCBncmFiSGFuZGxlcik7XG4gICAgbm9kZXMub2ZmKCdsb2NrIHVubG9jaycsIGxvY2tIYW5kbGVyKTtcblxuICAgIC8vIHRyaWdnZXIgbGF5b3V0c3RvcCB3aGVuIHRoZSBsYXlvdXQgc3RvcHMgKGUuZy4gZmluaXNoZXMpXG4gICAgbGF5b3V0Lm9uZSgnbGF5b3V0c3RvcCcsIG9wdGlvbnMuc3RvcCk7XG4gICAgbGF5b3V0LnRyaWdnZXIoeyB0eXBlOiAnbGF5b3V0c3RvcCcsIGxheW91dDogbGF5b3V0IH0pO1xuICB9O1xuXG4gIHZhciBvblJlYWR5ID0gZnVuY3Rpb24gb25SZWFkeSgpIHtcbiAgICAvLyB0cmlnZ2VyIGxheW91dHJlYWR5IHdoZW4gZWFjaCBub2RlIGhhcyBoYWQgaXRzIHBvc2l0aW9uIHNldCBhdCBsZWFzdCBvbmNlXG4gICAgbGF5b3V0Lm9uZSgnbGF5b3V0cmVhZHknLCBvcHRpb25zLnJlYWR5KTtcbiAgICBsYXlvdXQudHJpZ2dlcih7IHR5cGU6ICdsYXlvdXRyZWFkeScsIGxheW91dDogbGF5b3V0IH0pO1xuICB9O1xuXG4gIHZhciB0aWNrc1BlckZyYW1lID0gb3B0aW9ucy5yZWZyZXNoO1xuXG4gIGlmIChvcHRpb25zLnJlZnJlc2ggPCAwKSB7XG4gICAgdGlja3NQZXJGcmFtZSA9IDE7XG4gIH0gZWxzZSB7XG4gICAgdGlja3NQZXJGcmFtZSA9IE1hdGgubWF4KDEsIHRpY2tzUGVyRnJhbWUpOyAvLyBhdCBsZWFzdCAxXG4gIH1cblxuICB2YXIgYWRhcHRvciA9IGxheW91dC5hZGFwdG9yID0gY29sYS5hZGFwdG9yKHtcbiAgICB0cmlnZ2VyOiBmdW5jdGlvbiB0cmlnZ2VyKGUpIHtcbiAgICAgIC8vIG9uIHNpbSBldmVudFxuICAgICAgdmFyIFRJQ0sgPSBjb2xhLkV2ZW50VHlwZSA/IGNvbGEuRXZlbnRUeXBlLnRpY2sgOiBudWxsO1xuICAgICAgdmFyIEVORCA9IGNvbGEuRXZlbnRUeXBlID8gY29sYS5FdmVudFR5cGUuZW5kIDogbnVsbDtcblxuICAgICAgc3dpdGNoIChlLnR5cGUpIHtcbiAgICAgICAgY2FzZSAndGljayc6XG4gICAgICAgIGNhc2UgVElDSzpcbiAgICAgICAgICBpZiAob3B0aW9ucy5hbmltYXRlKSB7XG4gICAgICAgICAgICB1cGRhdGVOb2RlUG9zaXRpb25zKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgIGNhc2UgRU5EOlxuICAgICAgICAgIHVwZGF0ZU5vZGVQb3NpdGlvbnMoKTtcbiAgICAgICAgICBpZiAoIW9wdGlvbnMuaW5maW5pdGUpIHtcbiAgICAgICAgICAgIG9uRG9uZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAga2ljazogZnVuY3Rpb24ga2ljaygpIHtcbiAgICAgIC8vIGtpY2sgb2ZmIHRoZSBzaW11bGF0aW9uXG4gICAgICAvL2xldCBza2lwID0gMDtcblxuICAgICAgdmFyIGZpcnN0VGljayA9IHRydWU7XG5cbiAgICAgIHZhciBpbmZ0aWNrID0gZnVuY3Rpb24gaW5mdGljaygpIHtcbiAgICAgICAgaWYgKGxheW91dC5tYW51YWxseVN0b3BwZWQpIHtcbiAgICAgICAgICBvbkRvbmUoKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHJldCA9IGFkYXB0b3IudGljaygpO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5pbmZpbml0ZSAmJiAhZmlyc3RUaWNrKSB7XG4gICAgICAgICAgYWRhcHRvci5jb252ZXJnZW5jZVRocmVzaG9sZChvcHRpb25zLmNvbnZlcmdlbmNlVGhyZXNob2xkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpcnN0VGljayA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChyZXQgJiYgb3B0aW9ucy5pbmZpbml0ZSkge1xuICAgICAgICAgIC8vIHJlc3VtZSBsYXlvdXQgaWYgZG9uZVxuICAgICAgICAgIGFkYXB0b3IucmVzdW1lKCk7IC8vIHJlc3VtZSA9PiBuZXcga2lja1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDsgLy8gYWxsb3cgcmVndWxhciBmaW5pc2ggYi9jIG9mIG5ldyBraWNrXG4gICAgICB9O1xuXG4gICAgICB2YXIgbXVsdGl0aWNrID0gZnVuY3Rpb24gbXVsdGl0aWNrKCkge1xuICAgICAgICAvLyBtdWx0aXBsZSB0aWNrcyBpbiBhIHJvd1xuICAgICAgICB2YXIgcmV0ID0gdm9pZCAwO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGlja3NQZXJGcmFtZSAmJiAhcmV0OyBpKyspIHtcbiAgICAgICAgICByZXQgPSByZXQgfHwgaW5mdGljaygpOyAvLyBwaWNrIHVwIHRydWUgcmV0IHZhbHMgPT4gc2ltIGRvbmVcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9O1xuXG4gICAgICBpZiAob3B0aW9ucy5hbmltYXRlKSB7XG4gICAgICAgIHZhciBmcmFtZSA9IGZ1bmN0aW9uIGZyYW1lKCkge1xuICAgICAgICAgIGlmIChtdWx0aXRpY2soKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJhZihmcmFtZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmFmKGZyYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdoaWxlICghaW5mdGljaygpKSB7XG4gICAgICAgICAgLy8ga2VlcCBnb2luZy4uLlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIG9uOiBub3AsIC8vIGR1bW15OyBub3QgbmVlZGVkXG5cbiAgICBkcmFnOiBub3AgLy8gbm90IG5lZWRlZCBmb3Igb3VyIGNhc2VcbiAgfSk7XG4gIGxheW91dC5hZGFwdG9yID0gYWRhcHRvcjtcblxuICAvLyBpZiBzZXQgbm8gZ3JhYmJpbmcgZHVyaW5nIGxheW91dFxuICB2YXIgZ3JhYmJhYmxlTm9kZXMgPSBub2Rlcy5maWx0ZXIoJzpncmFiYmFibGUnKTtcbiAgaWYgKG9wdGlvbnMudW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nKSB7XG4gICAgZ3JhYmJhYmxlTm9kZXMudW5ncmFiaWZ5KCk7XG4gIH1cblxuICB2YXIgZGVzdHJveUhhbmRsZXIgPSB2b2lkIDA7XG4gIGN5Lm9uZSgnZGVzdHJveScsIGRlc3Ryb3lIYW5kbGVyID0gZnVuY3Rpb24gZGVzdHJveUhhbmRsZXIoKSB7XG4gICAgbGF5b3V0LnN0b3AoKTtcbiAgfSk7XG5cbiAgLy8gaGFuZGxlIG5vZGUgZHJhZ2dpbmdcbiAgdmFyIGdyYWJIYW5kbGVyID0gdm9pZCAwO1xuICBub2Rlcy5vbignZ3JhYiBmcmVlIHBvc2l0aW9uJywgZ3JhYkhhbmRsZXIgPSBmdW5jdGlvbiBncmFiSGFuZGxlcihlKSB7XG4gICAgdmFyIG5vZGUgPSB0aGlzO1xuICAgIHZhciBzY3JDb2xhID0gbm9kZS5zY3JhdGNoKCkuY29sYTtcbiAgICB2YXIgcG9zID0gbm9kZS5wb3NpdGlvbigpO1xuICAgIHZhciBub2RlSXNUYXJnZXQgPSBlLmN5VGFyZ2V0ID09PSBub2RlIHx8IGUudGFyZ2V0ID09PSBub2RlO1xuXG4gICAgaWYgKCFub2RlSXNUYXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGUudHlwZSkge1xuICAgICAgY2FzZSAnZ3JhYic6XG4gICAgICAgIGFkYXB0b3IuZHJhZ3N0YXJ0KHNjckNvbGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ZyZWUnOlxuICAgICAgICBhZGFwdG9yLmRyYWdlbmQoc2NyQ29sYSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncG9zaXRpb24nOlxuICAgICAgICAvLyBvbmx5IHVwZGF0ZSB3aGVuIGRpZmZlcmVudCAoaS5lLiBtYW51YWwgLnBvc2l0aW9uKCkgY2FsbCBvciBkcmFnKSBzbyB3ZSBkb24ndCBsb29wIG5lZWRsZXNzbHlcbiAgICAgICAgaWYgKHNjckNvbGEucHggIT09IHBvcy54IC0gYmIueDEgfHwgc2NyQ29sYS5weSAhPT0gcG9zLnkgLSBiYi55MSkge1xuICAgICAgICAgIHNjckNvbGEucHggPSBwb3MueCAtIGJiLngxO1xuICAgICAgICAgIHNjckNvbGEucHkgPSBwb3MueSAtIGJiLnkxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIGxvY2tIYW5kbGVyID0gdm9pZCAwO1xuICBub2Rlcy5vbignbG9jayB1bmxvY2snLCBsb2NrSGFuZGxlciA9IGZ1bmN0aW9uIGxvY2tIYW5kbGVyKCkge1xuICAgIHZhciBub2RlID0gdGhpcztcbiAgICB2YXIgc2NyQ29sYSA9IG5vZGUuc2NyYXRjaCgpLmNvbGE7XG5cbiAgICBzY3JDb2xhLmZpeGVkID0gbm9kZS5sb2NrZWQoKTtcblxuICAgIGlmIChub2RlLmxvY2tlZCgpKSB7XG4gICAgICBhZGFwdG9yLmRyYWdzdGFydChzY3JDb2xhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWRhcHRvci5kcmFnZW5kKHNjckNvbGEpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gYWRkIG5vZGVzIHRvIGNvbGFcbiAgYWRhcHRvci5ub2Rlcyhub25wYXJlbnROb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICB2YXIgcGFkZGluZyA9IGdldE9wdFZhbChvcHRpb25zLm5vZGVTcGFjaW5nLCBub2RlKTtcbiAgICB2YXIgcG9zID0gbm9kZS5wb3NpdGlvbigpO1xuICAgIHZhciBkaW1lbnNpb25zID0gbm9kZS5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuXG4gICAgdmFyIHN0cnVjdCA9IG5vZGUuc2NyYXRjaCgpLmNvbGEgPSB7XG4gICAgICB4OiBvcHRpb25zLnJhbmRvbWl6ZSAmJiAhbm9kZS5sb2NrZWQoKSB8fCBwb3MueCA9PT0gdW5kZWZpbmVkID8gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogYmIudykgOiBwb3MueCxcbiAgICAgIHk6IG9wdGlvbnMucmFuZG9taXplICYmICFub2RlLmxvY2tlZCgpIHx8IHBvcy55ID09PSB1bmRlZmluZWQgPyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiBiYi5oKSA6IHBvcy55LFxuICAgICAgd2lkdGg6IGRpbWVuc2lvbnMudyArIDIgKiBwYWRkaW5nLFxuICAgICAgaGVpZ2h0OiBkaW1lbnNpb25zLmggKyAyICogcGFkZGluZyxcbiAgICAgIGluZGV4OiBpLFxuICAgICAgZml4ZWQ6IG5vZGUubG9ja2VkKClcbiAgICB9O1xuXG4gICAgcmV0dXJuIHN0cnVjdDtcbiAgfSkpO1xuXG4gIC8vIHRoZSBjb25zdHJhaW50cyB0byBiZSBhZGRlZCBvbiBub2Rlc1xuICB2YXIgY29uc3RyYWludHMgPSBbXTtcblxuICBpZiAob3B0aW9ucy5hbGlnbm1lbnQpIHtcbiAgICAvLyB0aGVuIHNldCBhbGlnbm1lbnQgY29uc3RyYWludHNcblxuICAgIGlmIChvcHRpb25zLmFsaWdubWVudC52ZXJ0aWNhbCkge1xuICAgICAgdmFyIHZlcnRpY2FsQWxpZ25tZW50cyA9IG9wdGlvbnMuYWxpZ25tZW50LnZlcnRpY2FsO1xuICAgICAgdmVydGljYWxBbGlnbm1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGFsaWdubWVudCkge1xuICAgICAgICB2YXIgb2Zmc2V0c1ggPSBbXTtcbiAgICAgICAgYWxpZ25tZW50LmZvckVhY2goZnVuY3Rpb24gKG5vZGVEYXRhKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSBub2RlRGF0YS5ub2RlO1xuICAgICAgICAgIHZhciBzY3JDb2xhID0gbm9kZS5zY3JhdGNoKCkuY29sYTtcbiAgICAgICAgICB2YXIgaW5kZXggPSBzY3JDb2xhLmluZGV4O1xuICAgICAgICAgIG9mZnNldHNYLnB1c2goe1xuICAgICAgICAgICAgbm9kZTogaW5kZXgsXG4gICAgICAgICAgICBvZmZzZXQ6IG5vZGVEYXRhLm9mZnNldCA/IG5vZGVEYXRhLm9mZnNldCA6IDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdhbGlnbm1lbnQnLFxuICAgICAgICAgIGF4aXM6ICd4JyxcbiAgICAgICAgICBvZmZzZXRzOiBvZmZzZXRzWFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmFsaWdubWVudC5ob3Jpem9udGFsKSB7XG4gICAgICB2YXIgaG9yaXpvbnRhbEFsaWdubWVudHMgPSBvcHRpb25zLmFsaWdubWVudC5ob3Jpem9udGFsO1xuICAgICAgaG9yaXpvbnRhbEFsaWdubWVudHMuZm9yRWFjaChmdW5jdGlvbiAoYWxpZ25tZW50KSB7XG4gICAgICAgIHZhciBvZmZzZXRzWSA9IFtdO1xuICAgICAgICBhbGlnbm1lbnQuZm9yRWFjaChmdW5jdGlvbiAobm9kZURhdGEpIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVEYXRhLm5vZGU7XG4gICAgICAgICAgdmFyIHNjckNvbGEgPSBub2RlLnNjcmF0Y2goKS5jb2xhO1xuICAgICAgICAgIHZhciBpbmRleCA9IHNjckNvbGEuaW5kZXg7XG4gICAgICAgICAgb2Zmc2V0c1kucHVzaCh7XG4gICAgICAgICAgICBub2RlOiBpbmRleCxcbiAgICAgICAgICAgIG9mZnNldDogbm9kZURhdGEub2Zmc2V0ID8gbm9kZURhdGEub2Zmc2V0IDogMFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ2FsaWdubWVudCcsXG4gICAgICAgICAgYXhpczogJ3knLFxuICAgICAgICAgIG9mZnNldHM6IG9mZnNldHNZXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgZ2FwSW5lcXVhbGl0aWVzIHZhcmlhYmxlIGlzIHNldCBhZGQgZWFjaCBpbmVxdWFsaXR5IGNvbnN0cmFpbnQgdG8gbGlzdCBvZiBjb25zdHJhaW50c1xuICBpZiAob3B0aW9ucy5nYXBJbmVxdWFsaXRpZXMpIHtcbiAgICBvcHRpb25zLmdhcEluZXF1YWxpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChpbmVxdWFsaXR5KSB7XG5cbiAgICAgIC8vIGZvciB0aGUgY29uc3RyYWludHMgdG8gYmUgcGFzc2VkIHRvIGNvbGEgbGF5b3V0IGFkYXB0b3IgdXNlIGluZGljZXMgb2Ygbm9kZXMsXG4gICAgICAvLyBub3QgdGhlIG5vZGVzIHRoZW1zZWx2ZXNcbiAgICAgIHZhciBsZWZ0SW5kZXggPSBpbmVxdWFsaXR5LmxlZnQuc2NyYXRjaCgpLmNvbGEuaW5kZXg7XG4gICAgICB2YXIgcmlnaHRJbmRleCA9IGluZXF1YWxpdHkucmlnaHQuc2NyYXRjaCgpLmNvbGEuaW5kZXg7XG5cbiAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICBheGlzOiBpbmVxdWFsaXR5LmF4aXMsXG4gICAgICAgIGxlZnQ6IGxlZnRJbmRleCxcbiAgICAgICAgcmlnaHQ6IHJpZ2h0SW5kZXgsXG4gICAgICAgIGdhcDogaW5lcXVhbGl0eS5nYXAsXG4gICAgICAgIGVxdWFsaXR5OiBpbmVxdWFsaXR5LmVxdWFsaXR5XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGFkZCBjb25zdHJhaW50cyBpZiBhbnlcbiAgaWYgKGNvbnN0cmFpbnRzLmxlbmd0aCA+IDApIHtcbiAgICBhZGFwdG9yLmNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKTtcbiAgfVxuXG4gIC8vIGFkZCBjb21wb3VuZCBub2RlcyB0byBjb2xhXG4gIGFkYXB0b3IuZ3JvdXBzKHBhcmVudE5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIC8vIGFkZCBiYXNpYyBncm91cCBpbmNsIGxlYWYgbm9kZXNcbiAgICB2YXIgb3B0UGFkZGluZyA9IGdldE9wdFZhbChvcHRpb25zLm5vZGVTcGFjaW5nLCBub2RlKTtcbiAgICB2YXIgZ2V0UGFkZGluZyA9IGZ1bmN0aW9uIGdldFBhZGRpbmcoZCkge1xuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobm9kZS5zdHlsZSgncGFkZGluZy0nICsgZCkpO1xuICAgIH07XG5cbiAgICB2YXIgcGxlZnQgPSBnZXRQYWRkaW5nKCdsZWZ0JykgKyBvcHRQYWRkaW5nO1xuICAgIHZhciBwcmlnaHQgPSBnZXRQYWRkaW5nKCdyaWdodCcpICsgb3B0UGFkZGluZztcbiAgICB2YXIgcHRvcCA9IGdldFBhZGRpbmcoJ3RvcCcpICsgb3B0UGFkZGluZztcbiAgICB2YXIgcGJvdHRvbSA9IGdldFBhZGRpbmcoJ2JvdHRvbScpICsgb3B0UGFkZGluZztcblxuICAgIG5vZGUuc2NyYXRjaCgpLmNvbGEgPSB7XG4gICAgICBpbmRleDogaSxcblxuICAgICAgcGFkZGluZzogTWF0aC5tYXgocGxlZnQsIHByaWdodCwgcHRvcCwgcGJvdHRvbSksXG5cbiAgICAgIC8vIGxlYXZlcyBzaG91bGQgb25seSBjb250YWluIGRpcmVjdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4pLFxuICAgICAgLy8gbm90IHRoZSBsZWF2ZXMgb2YgbmVzdGVkIGNvbXBvdW5kIG5vZGVzIG9yIGFueSBub2RlcyB0aGF0IGFyZSBjb21wb3VuZHMgdGhlbXNlbHZlc1xuICAgICAgbGVhdmVzOiBub2RlLmNoaWxkcmVuKCkuaW50ZXJzZWN0aW9uKG5vbnBhcmVudE5vZGVzKS5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIHJldHVybiBjaGlsZFswXS5zY3JhdGNoKCkuY29sYS5pbmRleDtcbiAgICAgIH0pLFxuXG4gICAgICBmaXhlZDogbm9kZS5sb2NrZWQoKVxuICAgIH07XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfSkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgLy8gYWRkIHN1Ymdyb3Vwc1xuICAgIG5vZGUuc2NyYXRjaCgpLmNvbGEuZ3JvdXBzID0gbm9kZS5jaGlsZHJlbigpLmludGVyc2VjdGlvbihwYXJlbnROb2RlcykubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgcmV0dXJuIGNoaWxkLnNjcmF0Y2goKS5jb2xhLmluZGV4O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5vZGUuc2NyYXRjaCgpLmNvbGE7XG4gIH0pKTtcblxuICAvLyBnZXQgdGhlIGVkZ2UgbGVuZ3RoIHNldHRpbmcgbWVjaGFuaXNtXG4gIHZhciBsZW5ndGggPSB2b2lkIDA7XG4gIHZhciBsZW5ndGhGbk5hbWUgPSB2b2lkIDA7XG4gIGlmIChvcHRpb25zLmVkZ2VMZW5ndGggIT0gbnVsbCkge1xuICAgIGxlbmd0aCA9IG9wdGlvbnMuZWRnZUxlbmd0aDtcbiAgICBsZW5ndGhGbk5hbWUgPSAnbGlua0Rpc3RhbmNlJztcbiAgfSBlbHNlIGlmIChvcHRpb25zLmVkZ2VTeW1EaWZmTGVuZ3RoICE9IG51bGwpIHtcbiAgICBsZW5ndGggPSBvcHRpb25zLmVkZ2VTeW1EaWZmTGVuZ3RoO1xuICAgIGxlbmd0aEZuTmFtZSA9ICdzeW1tZXRyaWNEaWZmTGlua0xlbmd0aHMnO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMuZWRnZUphY2NhcmRMZW5ndGggIT0gbnVsbCkge1xuICAgIGxlbmd0aCA9IG9wdGlvbnMuZWRnZUphY2NhcmRMZW5ndGg7XG4gICAgbGVuZ3RoRm5OYW1lID0gJ2phY2NhcmRMaW5rTGVuZ3Rocyc7XG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gMTAwO1xuICAgIGxlbmd0aEZuTmFtZSA9ICdsaW5rRGlzdGFuY2UnO1xuICB9XG5cbiAgdmFyIGxlbmd0aEdldHRlciA9IGZ1bmN0aW9uIGxlbmd0aEdldHRlcihsaW5rKSB7XG4gICAgcmV0dXJuIGxpbmsuY2FsY0xlbmd0aDtcbiAgfTtcblxuICAvLyBhZGQgdGhlIGVkZ2VzIHRvIGNvbGFcbiAgYWRhcHRvci5saW5rcyhlZGdlcy5zdGRGaWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gbm9ucGFyZW50Tm9kZXMuY29udGFpbnMoZWRnZS5zb3VyY2UoKSkgJiYgbm9ucGFyZW50Tm9kZXMuY29udGFpbnMoZWRnZS50YXJnZXQoKSk7XG4gIH0pLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBjID0gZWRnZS5zY3JhdGNoKCkuY29sYSA9IHtcbiAgICAgIHNvdXJjZTogZWRnZS5zb3VyY2UoKVswXS5zY3JhdGNoKCkuY29sYS5pbmRleCxcbiAgICAgIHRhcmdldDogZWRnZS50YXJnZXQoKVswXS5zY3JhdGNoKCkuY29sYS5pbmRleFxuICAgIH07XG5cbiAgICBpZiAobGVuZ3RoICE9IG51bGwpIHtcbiAgICAgIGMuY2FsY0xlbmd0aCA9IGdldE9wdFZhbChsZW5ndGgsIGVkZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBjO1xuICB9KSk7XG5cbiAgYWRhcHRvci5zaXplKFtiYi53LCBiYi5oXSk7XG5cbiAgaWYgKGxlbmd0aCAhPSBudWxsKSB7XG4gICAgYWRhcHRvcltsZW5ndGhGbk5hbWVdKGxlbmd0aEdldHRlcik7XG4gIH1cblxuICAvLyBzZXQgdGhlIGZsb3cgb2YgY29sYVxuICBpZiAob3B0aW9ucy5mbG93KSB7XG4gICAgdmFyIGZsb3cgPSB2b2lkIDA7XG4gICAgdmFyIGRlZkF4aXMgPSAneSc7XG4gICAgdmFyIGRlZk1pblNlcCA9IDUwO1xuXG4gICAgaWYgKGlzU3RyaW5nKG9wdGlvbnMuZmxvdykpIHtcbiAgICAgIGZsb3cgPSB7XG4gICAgICAgIGF4aXM6IG9wdGlvbnMuZmxvdyxcbiAgICAgICAgbWluU2VwYXJhdGlvbjogZGVmTWluU2VwXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIob3B0aW9ucy5mbG93KSkge1xuICAgICAgZmxvdyA9IHtcbiAgICAgICAgYXhpczogZGVmQXhpcyxcbiAgICAgICAgbWluU2VwYXJhdGlvbjogb3B0aW9ucy5mbG93XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3Qob3B0aW9ucy5mbG93KSkge1xuICAgICAgZmxvdyA9IG9wdGlvbnMuZmxvdztcblxuICAgICAgZmxvdy5heGlzID0gZmxvdy5heGlzIHx8IGRlZkF4aXM7XG4gICAgICBmbG93Lm1pblNlcGFyYXRpb24gPSBmbG93Lm1pblNlcGFyYXRpb24gIT0gbnVsbCA/IGZsb3cubWluU2VwYXJhdGlvbiA6IGRlZk1pblNlcDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZS5nLiBvcHRpb25zLmZsb3c6IHRydWVcbiAgICAgIGZsb3cgPSB7XG4gICAgICAgIGF4aXM6IGRlZkF4aXMsXG4gICAgICAgIG1pblNlcGFyYXRpb246IGRlZk1pblNlcFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBhZGFwdG9yLmZsb3dMYXlvdXQoZmxvdy5heGlzLCBmbG93Lm1pblNlcGFyYXRpb24pO1xuICB9XG5cbiAgbGF5b3V0LnRyaWdnZXIoeyB0eXBlOiAnbGF5b3V0c3RhcnQnLCBsYXlvdXQ6IGxheW91dCB9KTtcblxuICBhZGFwdG9yLmF2b2lkT3ZlcmxhcHMob3B0aW9ucy5hdm9pZE92ZXJsYXApLmhhbmRsZURpc2Nvbm5lY3RlZChvcHRpb25zLmhhbmRsZURpc2Nvbm5lY3RlZCkuc3RhcnQob3B0aW9ucy51bmNvbnN0ckl0ZXIsIG9wdGlvbnMudXNlckNvbnN0SXRlciwgb3B0aW9ucy5hbGxDb25zdEl0ZXIsIHVuZGVmaW5lZCwgLy8gZ3JpZFNuYXBJdGVyYXRpb25zID0gMFxuICB1bmRlZmluZWQsIC8vIGtlZXBSdW5uaW5nID0gdHJ1ZVxuICBvcHRpb25zLmNlbnRlckdyYXBoKTtcblxuICBpZiAoIW9wdGlvbnMuaW5maW5pdGUpIHtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghbGF5b3V0Lm1hbnVhbGx5U3RvcHBlZCkge1xuICAgICAgICBhZGFwdG9yLnN0b3AoKTtcbiAgICAgIH1cbiAgICB9LCBvcHRpb25zLm1heFNpbXVsYXRpb25UaW1lKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuLy8gY2FsbGVkIG9uIGNvbnRpbnVvdXMgbGF5b3V0cyB0byBzdG9wIHRoZW0gYmVmb3JlIHRoZXkgZmluaXNoXG5Db2xhTGF5b3V0LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5hZGFwdG9yKSB7XG4gICAgdGhpcy5tYW51YWxseVN0b3BwZWQgPSB0cnVlO1xuICAgIHRoaXMuYWRhcHRvci5zdG9wKCk7XG4gIH1cblxuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ29sYUxheW91dDtcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8vIFNpbXBsZSwgaW50ZXJuYWwgT2JqZWN0LmFzc2lnbigpIHBvbHlmaWxsIGZvciBvcHRpb25zIG9iamVjdHMgZXRjLlxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5hc3NpZ24gIT0gbnVsbCA/IE9iamVjdC5hc3NpZ24uYmluZChPYmplY3QpIDogZnVuY3Rpb24gKHRndCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgc3JjcyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBzcmNzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHNyY3MuZmlsdGVyKGZ1bmN0aW9uIChzcmMpIHtcbiAgICByZXR1cm4gc3JjICE9IG51bGw7XG4gIH0pLmZvckVhY2goZnVuY3Rpb24gKHNyYykge1xuICAgIE9iamVjdC5rZXlzKHNyYykuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgcmV0dXJuIHRndFtrXSA9IHNyY1trXTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRndDtcbn07XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vLyBkZWZhdWx0IGxheW91dCBvcHRpb25zXG52YXIgZGVmYXVsdHMgPSB7XG4gIGFuaW1hdGU6IHRydWUsIC8vIHdoZXRoZXIgdG8gc2hvdyB0aGUgbGF5b3V0IGFzIGl0J3MgcnVubmluZ1xuICByZWZyZXNoOiAxLCAvLyBudW1iZXIgb2YgdGlja3MgcGVyIGZyYW1lOyBoaWdoZXIgaXMgZmFzdGVyIGJ1dCBtb3JlIGplcmt5XG4gIG1heFNpbXVsYXRpb25UaW1lOiA0MDAwLCAvLyBtYXggbGVuZ3RoIGluIG1zIHRvIHJ1biB0aGUgbGF5b3V0XG4gIHVuZ3JhYmlmeVdoaWxlU2ltdWxhdGluZzogZmFsc2UsIC8vIHNvIHlvdSBjYW4ndCBkcmFnIG5vZGVzIGR1cmluZyBsYXlvdXRcbiAgZml0OiB0cnVlLCAvLyBvbiBldmVyeSBsYXlvdXQgcmVwb3NpdGlvbiBvZiBub2RlcywgZml0IHRoZSB2aWV3cG9ydFxuICBwYWRkaW5nOiAzMCwgLy8gcGFkZGluZyBhcm91bmQgdGhlIHNpbXVsYXRpb25cbiAgYm91bmRpbmdCb3g6IHVuZGVmaW5lZCwgLy8gY29uc3RyYWluIGxheW91dCBib3VuZHM7IHsgeDEsIHkxLCB4MiwgeTIgfSBvciB7IHgxLCB5MSwgdywgaCB9XG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2UsIC8vIHdoZXRoZXIgbGFiZWxzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkZXRlcm1pbmluZyB0aGUgc3BhY2UgdXNlZCBieSBhIG5vZGVcblxuICAvLyBsYXlvdXQgZXZlbnQgY2FsbGJhY2tzXG4gIHJlYWR5OiBmdW5jdGlvbiByZWFkeSgpIHt9LCAvLyBvbiBsYXlvdXRyZWFkeVxuICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge30sIC8vIG9uIGxheW91dHN0b3BcblxuICAvLyBwb3NpdGlvbmluZyBvcHRpb25zXG4gIHJhbmRvbWl6ZTogZmFsc2UsIC8vIHVzZSByYW5kb20gbm9kZSBwb3NpdGlvbnMgYXQgYmVnaW5uaW5nIG9mIGxheW91dFxuICBhdm9pZE92ZXJsYXA6IHRydWUsIC8vIGlmIHRydWUsIHByZXZlbnRzIG92ZXJsYXAgb2Ygbm9kZSBib3VuZGluZyBib3hlc1xuICBoYW5kbGVEaXNjb25uZWN0ZWQ6IHRydWUsIC8vIGlmIHRydWUsIGF2b2lkcyBkaXNjb25uZWN0ZWQgY29tcG9uZW50cyBmcm9tIG92ZXJsYXBwaW5nXG4gIGNvbnZlcmdlbmNlVGhyZXNob2xkOiAwLjAxLCAvLyB3aGVuIHRoZSBhbHBoYSB2YWx1ZSAoc3lzdGVtIGVuZXJneSkgZmFsbHMgYmVsb3cgdGhpcyB2YWx1ZSwgdGhlIGxheW91dCBzdG9wc1xuICBub2RlU3BhY2luZzogZnVuY3Rpb24gbm9kZVNwYWNpbmcobm9kZSkge1xuICAgIHJldHVybiAxMDtcbiAgfSwgLy8gZXh0cmEgc3BhY2luZyBhcm91bmQgbm9kZXNcbiAgZmxvdzogdW5kZWZpbmVkLCAvLyB1c2UgREFHL3RyZWUgZmxvdyBsYXlvdXQgaWYgc3BlY2lmaWVkLCBlLmcuIHsgYXhpczogJ3knLCBtaW5TZXBhcmF0aW9uOiAzMCB9XG4gIGFsaWdubWVudDogdW5kZWZpbmVkLCAvLyByZWxhdGl2ZSBhbGlnbm1lbnQgY29uc3RyYWludHMgb24gbm9kZXMsIGUuZy4gZnVuY3Rpb24oIG5vZGUgKXsgcmV0dXJuIHsgeDogMCwgeTogMSB9IH1cbiAgZ2FwSW5lcXVhbGl0aWVzOiB1bmRlZmluZWQsIC8vIGxpc3Qgb2YgaW5lcXVhbGl0eSBjb25zdHJhaW50cyBmb3IgdGhlIGdhcCBiZXR3ZWVuIHRoZSBub2RlcywgZS5nLiBbe1wiYXhpc1wiOlwieVwiLCBcImxlZnRcIjpub2RlMSwgXCJyaWdodFwiOm5vZGUyLCBcImdhcFwiOjI1fV1cbiAgY2VudGVyR3JhcGg6IHRydWUsIC8vIGFkanVzdHMgdGhlIG5vZGUgcG9zaXRpb25zIGluaXRpYWxseSB0byBjZW50ZXIgdGhlIGdyYXBoIChwYXNzIGZhbHNlIGlmIHlvdSB3YW50IHRvIHN0YXJ0IHRoZSBsYXlvdXQgZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbilcblxuXG4gIC8vIGRpZmZlcmVudCBtZXRob2RzIG9mIHNwZWNpZnlpbmcgZWRnZSBsZW5ndGhcbiAgLy8gZWFjaCBjYW4gYmUgYSBjb25zdGFudCBudW1lcmljYWwgdmFsdWUgb3IgYSBmdW5jdGlvbiBsaWtlIGBmdW5jdGlvbiggZWRnZSApeyByZXR1cm4gMjsgfWBcbiAgZWRnZUxlbmd0aDogdW5kZWZpbmVkLCAvLyBzZXRzIGVkZ2UgbGVuZ3RoIGRpcmVjdGx5IGluIHNpbXVsYXRpb25cbiAgZWRnZVN5bURpZmZMZW5ndGg6IHVuZGVmaW5lZCwgLy8gc3ltbWV0cmljIGRpZmYgZWRnZSBsZW5ndGggaW4gc2ltdWxhdGlvblxuICBlZGdlSmFjY2FyZExlbmd0aDogdW5kZWZpbmVkLCAvLyBqYWNjYXJkIGVkZ2UgbGVuZ3RoIGluIHNpbXVsYXRpb25cblxuICAvLyBpdGVyYXRpb25zIG9mIGNvbGEgYWxnb3JpdGhtOyB1c2VzIGRlZmF1bHQgdmFsdWVzIG9uIHVuZGVmaW5lZFxuICB1bmNvbnN0ckl0ZXI6IHVuZGVmaW5lZCwgLy8gdW5jb25zdHJhaW5lZCBpbml0aWFsIGxheW91dCBpdGVyYXRpb25zXG4gIHVzZXJDb25zdEl0ZXI6IHVuZGVmaW5lZCwgLy8gaW5pdGlhbCBsYXlvdXQgaXRlcmF0aW9ucyB3aXRoIHVzZXItc3BlY2lmaWVkIGNvbnN0cmFpbnRzXG4gIGFsbENvbnN0SXRlcjogdW5kZWZpbmVkLCAvLyBpbml0aWFsIGxheW91dCBpdGVyYXRpb25zIHdpdGggYWxsIGNvbnN0cmFpbnRzIGluY2x1ZGluZyBub24tb3ZlcmxhcFxuXG4gIC8vIGluZmluaXRlIGxheW91dCBvcHRpb25zXG4gIGluZmluaXRlOiBmYWxzZSAvLyBvdmVycmlkZXMgYWxsIG90aGVyIG9wdGlvbnMgZm9yIGEgZm9yY2VzLWFsbC10aGUtdGltZSBtb2RlXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xuXG4vKioqLyB9KSxcbi8qIDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIGltcGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vLyByZWdpc3RlcnMgdGhlIGV4dGVuc2lvbiBvbiBhIGN5dG9zY2FwZSBsaWIgcmVmXG52YXIgcmVnaXN0ZXIgPSBmdW5jdGlvbiByZWdpc3RlcihjeXRvc2NhcGUpIHtcbiAgaWYgKCFjeXRvc2NhcGUpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gY2FuJ3QgcmVnaXN0ZXIgaWYgY3l0b3NjYXBlIHVuc3BlY2lmaWVkXG5cbiAgY3l0b3NjYXBlKCdsYXlvdXQnLCAnY29sYScsIGltcGwpOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYgKHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKGN5dG9zY2FwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXI7XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbnZhciByYWYgPSB2b2lkIDA7XG5cbmlmICgodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKHdpbmRvdykpICE9PSAoIHRydWUgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZih1bmRlZmluZWQpKSkge1xuICByYWYgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgZnVuY3Rpb24gKGZuKSB7XG4gICAgcmV0dXJuIHNldFRpbWVvdXQoZm4sIDE2KTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIGlmIG5vdCBhdmFpbGFibGUsIGFsbCB5b3UgZ2V0IGlzIGltbWVkaWF0ZSBjYWxsc1xuICByYWYgPSBmdW5jdGlvbiByYWYoY2IpIHtcbiAgICBjYigpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJhZjtcblxuLyoqKi8gfSksXG4vKiA1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV81X187XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImxheW91dEJhc2VcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibGF5b3V0QmFzZVwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDI2KTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gTGF5b3V0Q29uc3RhbnRzKCkge31cblxuLyoqXHJcbiAqIExheW91dCBRdWFsaXR5OiAwOmRyYWZ0LCAxOmRlZmF1bHQsIDI6cHJvb2ZcclxuICovXG5MYXlvdXRDb25zdGFudHMuUVVBTElUWSA9IDE7XG5cbi8qKlxyXG4gKiBEZWZhdWx0IHBhcmFtZXRlcnNcclxuICovXG5MYXlvdXRDb25zdGFudHMuREVGQVVMVF9DUkVBVEVfQkVORFNfQVNfTkVFREVEID0gZmFsc2U7XG5MYXlvdXRDb25zdGFudHMuREVGQVVMVF9JTkNSRU1FTlRBTCA9IGZhbHNlO1xuTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX09OX0xBWU9VVCA9IHRydWU7XG5MYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fRFVSSU5HX0xBWU9VVCA9IGZhbHNlO1xuTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX1BFUklPRCA9IDUwO1xuTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfVU5JRk9STV9MRUFGX05PREVfU0laRVMgPSBmYWxzZTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEdlbmVyYWwgb3RoZXIgY29uc3RhbnRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLypcclxuICogTWFyZ2lucyBvZiBhIGdyYXBoIHRvIGJlIGFwcGxpZWQgb24gYm91ZGluZyByZWN0YW5nbGUgb2YgaXRzIGNvbnRlbnRzLiBXZVxyXG4gKiBhc3N1bWUgbWFyZ2lucyBvbiBhbGwgZm91ciBzaWRlcyB0byBiZSB1bmlmb3JtLlxyXG4gKi9cbkxheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVBIX01BUkdJTiA9IDE1O1xuXG4vKlxyXG4gKiBXaGV0aGVyIHRvIGNvbnNpZGVyIGxhYmVscyBpbiBub2RlIGRpbWVuc2lvbnMgb3Igbm90XHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLk5PREVfRElNRU5TSU9OU19JTkNMVURFX0xBQkVMUyA9IGZhbHNlO1xuXG4vKlxyXG4gKiBEZWZhdWx0IGRpbWVuc2lvbiBvZiBhIG5vbi1jb21wb3VuZCBub2RlLlxyXG4gKi9cbkxheW91dENvbnN0YW50cy5TSU1QTEVfTk9ERV9TSVpFID0gNDA7XG5cbi8qXHJcbiAqIERlZmF1bHQgZGltZW5zaW9uIG9mIGEgbm9uLWNvbXBvdW5kIG5vZGUuXHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLlNJTVBMRV9OT0RFX0hBTEZfU0laRSA9IExheW91dENvbnN0YW50cy5TSU1QTEVfTk9ERV9TSVpFIC8gMjtcblxuLypcclxuICogRW1wdHkgY29tcG91bmQgbm9kZSBzaXplLiBXaGVuIGEgY29tcG91bmQgbm9kZSBpcyBlbXB0eSwgaXRzIGJvdGhcclxuICogZGltZW5zaW9ucyBzaG91bGQgYmUgb2YgdGhpcyB2YWx1ZS5cclxuICovXG5MYXlvdXRDb25zdGFudHMuRU1QVFlfQ09NUE9VTkRfTk9ERV9TSVpFID0gNDA7XG5cbi8qXHJcbiAqIE1pbmltdW0gbGVuZ3RoIHRoYXQgYW4gZWRnZSBzaG91bGQgdGFrZSBkdXJpbmcgbGF5b3V0XHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLk1JTl9FREdFX0xFTkdUSCA9IDE7XG5cbi8qXHJcbiAqIFdvcmxkIGJvdW5kYXJpZXMgdGhhdCBsYXlvdXQgb3BlcmF0ZXMgb25cclxuICovXG5MYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlkgPSAxMDAwMDAwO1xuXG4vKlxyXG4gKiBXb3JsZCBib3VuZGFyaWVzIHRoYXQgcmFuZG9tIHBvc2l0aW9uaW5nIGNhbiBiZSBwZXJmb3JtZWQgd2l0aFxyXG4gKi9cbkxheW91dENvbnN0YW50cy5JTklUSUFMX1dPUkxEX0JPVU5EQVJZID0gTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZIC8gMTAwMDtcblxuLypcclxuICogQ29vcmRpbmF0ZXMgb2YgdGhlIHdvcmxkIGNlbnRlclxyXG4gKi9cbkxheW91dENvbnN0YW50cy5XT1JMRF9DRU5URVJfWCA9IDEyMDA7XG5MYXlvdXRDb25zdGFudHMuV09STERfQ0VOVEVSX1kgPSA5MDA7XG5cbm1vZHVsZS5leHBvcnRzID0gTGF5b3V0Q29uc3RhbnRzO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgSUdlb21ldHJ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbnZhciBJTWF0aCA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cbmZ1bmN0aW9uIExFZGdlKHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSkge1xuICBMR3JhcGhPYmplY3QuY2FsbCh0aGlzLCB2RWRnZSk7XG5cbiAgdGhpcy5pc092ZXJsYXBpbmdTb3VyY2VBbmRUYXJnZXQgPSBmYWxzZTtcbiAgdGhpcy52R3JhcGhPYmplY3QgPSB2RWRnZTtcbiAgdGhpcy5iZW5kcG9pbnRzID0gW107XG4gIHRoaXMuc291cmNlID0gc291cmNlO1xuICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbn1cblxuTEVkZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMR3JhcGhPYmplY3QucHJvdG90eXBlKTtcblxuZm9yICh2YXIgcHJvcCBpbiBMR3JhcGhPYmplY3QpIHtcbiAgTEVkZ2VbcHJvcF0gPSBMR3JhcGhPYmplY3RbcHJvcF07XG59XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRTb3VyY2UgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnNvdXJjZTtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRUYXJnZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnRhcmdldDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5pc0ludGVyR3JhcGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmlzSW50ZXJHcmFwaDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxlbmd0aDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5pc092ZXJsYXBpbmdTb3VyY2VBbmRUYXJnZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmlzT3ZlcmxhcGluZ1NvdXJjZUFuZFRhcmdldDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRCZW5kcG9pbnRzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5iZW5kcG9pbnRzO1xufTtcblxuTEVkZ2UucHJvdG90eXBlLmdldExjYSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubGNhO1xufTtcblxuTEVkZ2UucHJvdG90eXBlLmdldFNvdXJjZUluTGNhID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5zb3VyY2VJbkxjYTtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRUYXJnZXRJbkxjYSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMudGFyZ2V0SW5MY2E7XG59O1xuXG5MRWRnZS5wcm90b3R5cGUuZ2V0T3RoZXJFbmQgPSBmdW5jdGlvbiAobm9kZSkge1xuICBpZiAodGhpcy5zb3VyY2UgPT09IG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy50YXJnZXQ7XG4gIH0gZWxzZSBpZiAodGhpcy50YXJnZXQgPT09IG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2U7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgXCJOb2RlIGlzIG5vdCBpbmNpZGVudCB3aXRoIHRoaXMgZWRnZVwiO1xuICB9XG59O1xuXG5MRWRnZS5wcm90b3R5cGUuZ2V0T3RoZXJFbmRJbkdyYXBoID0gZnVuY3Rpb24gKG5vZGUsIGdyYXBoKSB7XG4gIHZhciBvdGhlckVuZCA9IHRoaXMuZ2V0T3RoZXJFbmQobm9kZSk7XG4gIHZhciByb290ID0gZ3JhcGguZ2V0R3JhcGhNYW5hZ2VyKCkuZ2V0Um9vdCgpO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKG90aGVyRW5kLmdldE93bmVyKCkgPT0gZ3JhcGgpIHtcbiAgICAgIHJldHVybiBvdGhlckVuZDtcbiAgICB9XG5cbiAgICBpZiAob3RoZXJFbmQuZ2V0T3duZXIoKSA9PSByb290KSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBvdGhlckVuZCA9IG90aGVyRW5kLmdldE93bmVyKCkuZ2V0UGFyZW50KCk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS51cGRhdGVMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBjbGlwUG9pbnRDb29yZGluYXRlcyA9IG5ldyBBcnJheSg0KTtcblxuICB0aGlzLmlzT3ZlcmxhcGluZ1NvdXJjZUFuZFRhcmdldCA9IElHZW9tZXRyeS5nZXRJbnRlcnNlY3Rpb24odGhpcy50YXJnZXQuZ2V0UmVjdCgpLCB0aGlzLnNvdXJjZS5nZXRSZWN0KCksIGNsaXBQb2ludENvb3JkaW5hdGVzKTtcblxuICBpZiAoIXRoaXMuaXNPdmVybGFwaW5nU291cmNlQW5kVGFyZ2V0KSB7XG4gICAgdGhpcy5sZW5ndGhYID0gY2xpcFBvaW50Q29vcmRpbmF0ZXNbMF0gLSBjbGlwUG9pbnRDb29yZGluYXRlc1syXTtcbiAgICB0aGlzLmxlbmd0aFkgPSBjbGlwUG9pbnRDb29yZGluYXRlc1sxXSAtIGNsaXBQb2ludENvb3JkaW5hdGVzWzNdO1xuXG4gICAgaWYgKE1hdGguYWJzKHRoaXMubGVuZ3RoWCkgPCAxLjApIHtcbiAgICAgIHRoaXMubGVuZ3RoWCA9IElNYXRoLnNpZ24odGhpcy5sZW5ndGhYKTtcbiAgICB9XG5cbiAgICBpZiAoTWF0aC5hYnModGhpcy5sZW5ndGhZKSA8IDEuMCkge1xuICAgICAgdGhpcy5sZW5ndGhZID0gSU1hdGguc2lnbih0aGlzLmxlbmd0aFkpO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5zcXJ0KHRoaXMubGVuZ3RoWCAqIHRoaXMubGVuZ3RoWCArIHRoaXMubGVuZ3RoWSAqIHRoaXMubGVuZ3RoWSk7XG4gIH1cbn07XG5cbkxFZGdlLnByb3RvdHlwZS51cGRhdGVMZW5ndGhTaW1wbGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubGVuZ3RoWCA9IHRoaXMudGFyZ2V0LmdldENlbnRlclgoKSAtIHRoaXMuc291cmNlLmdldENlbnRlclgoKTtcbiAgdGhpcy5sZW5ndGhZID0gdGhpcy50YXJnZXQuZ2V0Q2VudGVyWSgpIC0gdGhpcy5zb3VyY2UuZ2V0Q2VudGVyWSgpO1xuXG4gIGlmIChNYXRoLmFicyh0aGlzLmxlbmd0aFgpIDwgMS4wKSB7XG4gICAgdGhpcy5sZW5ndGhYID0gSU1hdGguc2lnbih0aGlzLmxlbmd0aFgpO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKHRoaXMubGVuZ3RoWSkgPCAxLjApIHtcbiAgICB0aGlzLmxlbmd0aFkgPSBJTWF0aC5zaWduKHRoaXMubGVuZ3RoWSk7XG4gIH1cblxuICB0aGlzLmxlbmd0aCA9IE1hdGguc3FydCh0aGlzLmxlbmd0aFggKiB0aGlzLmxlbmd0aFggKyB0aGlzLmxlbmd0aFkgKiB0aGlzLmxlbmd0aFkpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBMRWRnZTtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIExHcmFwaE9iamVjdCh2R3JhcGhPYmplY3QpIHtcbiAgdGhpcy52R3JhcGhPYmplY3QgPSB2R3JhcGhPYmplY3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gTEdyYXBoT2JqZWN0O1xuXG4vKioqLyB9KSxcbi8qIDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xudmFyIFJlY3RhbmdsZUQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIFJhbmRvbVNlZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcbnZhciBQb2ludEQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXG5mdW5jdGlvbiBMTm9kZShnbSwgbG9jLCBzaXplLCB2Tm9kZSkge1xuICAvL0FsdGVybmF0aXZlIGNvbnN0cnVjdG9yIDEgOiBMTm9kZShMR3JhcGhNYW5hZ2VyIGdtLCBQb2ludCBsb2MsIERpbWVuc2lvbiBzaXplLCBPYmplY3Qgdk5vZGUpXG4gIGlmIChzaXplID09IG51bGwgJiYgdk5vZGUgPT0gbnVsbCkge1xuICAgIHZOb2RlID0gbG9jO1xuICB9XG5cbiAgTEdyYXBoT2JqZWN0LmNhbGwodGhpcywgdk5vZGUpO1xuXG4gIC8vQWx0ZXJuYXRpdmUgY29uc3RydWN0b3IgMiA6IExOb2RlKExheW91dCBsYXlvdXQsIE9iamVjdCB2Tm9kZSlcbiAgaWYgKGdtLmdyYXBoTWFuYWdlciAhPSBudWxsKSBnbSA9IGdtLmdyYXBoTWFuYWdlcjtcblxuICB0aGlzLmVzdGltYXRlZFNpemUgPSBJbnRlZ2VyLk1JTl9WQUxVRTtcbiAgdGhpcy5pbmNsdXNpb25UcmVlRGVwdGggPSBJbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdGhpcy52R3JhcGhPYmplY3QgPSB2Tm9kZTtcbiAgdGhpcy5lZGdlcyA9IFtdO1xuICB0aGlzLmdyYXBoTWFuYWdlciA9IGdtO1xuXG4gIGlmIChzaXplICE9IG51bGwgJiYgbG9jICE9IG51bGwpIHRoaXMucmVjdCA9IG5ldyBSZWN0YW5nbGVEKGxvYy54LCBsb2MueSwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpO2Vsc2UgdGhpcy5yZWN0ID0gbmV3IFJlY3RhbmdsZUQoKTtcbn1cblxuTE5vZGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMR3JhcGhPYmplY3QucHJvdG90eXBlKTtcbmZvciAodmFyIHByb3AgaW4gTEdyYXBoT2JqZWN0KSB7XG4gIExOb2RlW3Byb3BdID0gTEdyYXBoT2JqZWN0W3Byb3BdO1xufVxuXG5MTm9kZS5wcm90b3R5cGUuZ2V0RWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmVkZ2VzO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldENoaWxkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5jaGlsZDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRPd25lciA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gIGlmICh0aGlzLm93bmVyICE9IG51bGwpIHtcbiAgLy8gICAgaWYgKCEodGhpcy5vd25lciA9PSBudWxsIHx8IHRoaXMub3duZXIuZ2V0Tm9kZXMoKS5pbmRleE9mKHRoaXMpID4gLTEpKSB7XG4gIC8vICAgICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIC8vICAgIH1cbiAgLy8gIH1cblxuICByZXR1cm4gdGhpcy5vd25lcjtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVjdC53aWR0aDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5zZXRXaWR0aCA9IGZ1bmN0aW9uICh3aWR0aCkge1xuICB0aGlzLnJlY3Qud2lkdGggPSB3aWR0aDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnJlY3QuaGVpZ2h0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLnNldEhlaWdodCA9IGZ1bmN0aW9uIChoZWlnaHQpIHtcbiAgdGhpcy5yZWN0LmhlaWdodCA9IGhlaWdodDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRDZW50ZXJYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0LnggKyB0aGlzLnJlY3Qud2lkdGggLyAyO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldENlbnRlclkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnJlY3QueSArIHRoaXMucmVjdC5oZWlnaHQgLyAyO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldENlbnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludEQodGhpcy5yZWN0LnggKyB0aGlzLnJlY3Qud2lkdGggLyAyLCB0aGlzLnJlY3QueSArIHRoaXMucmVjdC5oZWlnaHQgLyAyKTtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRMb2NhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludEQodGhpcy5yZWN0LngsIHRoaXMucmVjdC55KTtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRSZWN0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldERpYWdvbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gTWF0aC5zcXJ0KHRoaXMucmVjdC53aWR0aCAqIHRoaXMucmVjdC53aWR0aCArIHRoaXMucmVjdC5oZWlnaHQgKiB0aGlzLnJlY3QuaGVpZ2h0KTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBoYWxmIHRoZSBkaWFnb25hbCBsZW5ndGggb2YgdGhpcyBub2RlLlxuICovXG5MTm9kZS5wcm90b3R5cGUuZ2V0SGFsZlRoZURpYWdvbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gTWF0aC5zcXJ0KHRoaXMucmVjdC5oZWlnaHQgKiB0aGlzLnJlY3QuaGVpZ2h0ICsgdGhpcy5yZWN0LndpZHRoICogdGhpcy5yZWN0LndpZHRoKSAvIDI7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuc2V0UmVjdCA9IGZ1bmN0aW9uICh1cHBlckxlZnQsIGRpbWVuc2lvbikge1xuICB0aGlzLnJlY3QueCA9IHVwcGVyTGVmdC54O1xuICB0aGlzLnJlY3QueSA9IHVwcGVyTGVmdC55O1xuICB0aGlzLnJlY3Qud2lkdGggPSBkaW1lbnNpb24ud2lkdGg7XG4gIHRoaXMucmVjdC5oZWlnaHQgPSBkaW1lbnNpb24uaGVpZ2h0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLnNldENlbnRlciA9IGZ1bmN0aW9uIChjeCwgY3kpIHtcbiAgdGhpcy5yZWN0LnggPSBjeCAtIHRoaXMucmVjdC53aWR0aCAvIDI7XG4gIHRoaXMucmVjdC55ID0gY3kgLSB0aGlzLnJlY3QuaGVpZ2h0IC8gMjtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5zZXRMb2NhdGlvbiA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gIHRoaXMucmVjdC54ID0geDtcbiAgdGhpcy5yZWN0LnkgPSB5O1xufTtcblxuTE5vZGUucHJvdG90eXBlLm1vdmVCeSA9IGZ1bmN0aW9uIChkeCwgZHkpIHtcbiAgdGhpcy5yZWN0LnggKz0gZHg7XG4gIHRoaXMucmVjdC55ICs9IGR5O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldEVkZ2VMaXN0VG9Ob2RlID0gZnVuY3Rpb24gKHRvKSB7XG4gIHZhciBlZGdlTGlzdCA9IFtdO1xuICB2YXIgZWRnZTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIHNlbGYuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuXG4gICAgaWYgKGVkZ2UudGFyZ2V0ID09IHRvKSB7XG4gICAgICBpZiAoZWRnZS5zb3VyY2UgIT0gc2VsZikgdGhyb3cgXCJJbmNvcnJlY3QgZWRnZSBzb3VyY2UhXCI7XG5cbiAgICAgIGVkZ2VMaXN0LnB1c2goZWRnZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWRnZUxpc3Q7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0RWRnZXNCZXR3ZWVuID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gIHZhciBlZGdlTGlzdCA9IFtdO1xuICB2YXIgZWRnZTtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHNlbGYuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuXG4gICAgaWYgKCEoZWRnZS5zb3VyY2UgPT0gc2VsZiB8fCBlZGdlLnRhcmdldCA9PSBzZWxmKSkgdGhyb3cgXCJJbmNvcnJlY3QgZWRnZSBzb3VyY2UgYW5kL29yIHRhcmdldFwiO1xuXG4gICAgaWYgKGVkZ2UudGFyZ2V0ID09IG90aGVyIHx8IGVkZ2Uuc291cmNlID09IG90aGVyKSB7XG4gICAgICBlZGdlTGlzdC5wdXNoKGVkZ2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVkZ2VMaXN0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldE5laWdoYm9yc0xpc3QgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBuZWlnaGJvcnMgPSBuZXcgU2V0KCk7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBzZWxmLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcblxuICAgIGlmIChlZGdlLnNvdXJjZSA9PSBzZWxmKSB7XG4gICAgICBuZWlnaGJvcnMuYWRkKGVkZ2UudGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGVkZ2UudGFyZ2V0ICE9IHNlbGYpIHtcbiAgICAgICAgdGhyb3cgXCJJbmNvcnJlY3QgaW5jaWRlbmN5IVwiO1xuICAgICAgfVxuXG4gICAgICBuZWlnaGJvcnMuYWRkKGVkZ2Uuc291cmNlKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBuZWlnaGJvcnM7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUud2l0aENoaWxkcmVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgd2l0aE5laWdoYm9yc0xpc3QgPSBuZXcgU2V0KCk7XG4gIHZhciBjaGlsZE5vZGU7XG4gIHZhciBjaGlsZHJlbjtcblxuICB3aXRoTmVpZ2hib3JzTGlzdC5hZGQodGhpcyk7XG5cbiAgaWYgKHRoaXMuY2hpbGQgIT0gbnVsbCkge1xuICAgIHZhciBub2RlcyA9IHRoaXMuY2hpbGQuZ2V0Tm9kZXMoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZE5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIGNoaWxkcmVuID0gY2hpbGROb2RlLndpdGhDaGlsZHJlbigpO1xuICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB3aXRoTmVpZ2hib3JzTGlzdC5hZGQobm9kZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gd2l0aE5laWdoYm9yc0xpc3Q7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0Tm9PZkNoaWxkcmVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbm9PZkNoaWxkcmVuID0gMDtcbiAgdmFyIGNoaWxkTm9kZTtcblxuICBpZiAodGhpcy5jaGlsZCA9PSBudWxsKSB7XG4gICAgbm9PZkNoaWxkcmVuID0gMTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLmNoaWxkLmdldE5vZGVzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGROb2RlID0gbm9kZXNbaV07XG5cbiAgICAgIG5vT2ZDaGlsZHJlbiArPSBjaGlsZE5vZGUuZ2V0Tm9PZkNoaWxkcmVuKCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG5vT2ZDaGlsZHJlbiA9PSAwKSB7XG4gICAgbm9PZkNoaWxkcmVuID0gMTtcbiAgfVxuICByZXR1cm4gbm9PZkNoaWxkcmVuO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldEVzdGltYXRlZFNpemUgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmVzdGltYXRlZFNpemUgPT0gSW50ZWdlci5NSU5fVkFMVUUpIHtcbiAgICB0aHJvdyBcImFzc2VydCBmYWlsZWRcIjtcbiAgfVxuICByZXR1cm4gdGhpcy5lc3RpbWF0ZWRTaXplO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmNhbGNFc3RpbWF0ZWRTaXplID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5jaGlsZCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZXN0aW1hdGVkU2l6ZSA9ICh0aGlzLnJlY3Qud2lkdGggKyB0aGlzLnJlY3QuaGVpZ2h0KSAvIDI7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5lc3RpbWF0ZWRTaXplID0gdGhpcy5jaGlsZC5jYWxjRXN0aW1hdGVkU2l6ZSgpO1xuICAgIHRoaXMucmVjdC53aWR0aCA9IHRoaXMuZXN0aW1hdGVkU2l6ZTtcbiAgICB0aGlzLnJlY3QuaGVpZ2h0ID0gdGhpcy5lc3RpbWF0ZWRTaXplO1xuXG4gICAgcmV0dXJuIHRoaXMuZXN0aW1hdGVkU2l6ZTtcbiAgfVxufTtcblxuTE5vZGUucHJvdG90eXBlLnNjYXR0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciByYW5kb21DZW50ZXJYO1xuICB2YXIgcmFuZG9tQ2VudGVyWTtcblxuICB2YXIgbWluWCA9IC1MYXlvdXRDb25zdGFudHMuSU5JVElBTF9XT1JMRF9CT1VOREFSWTtcbiAgdmFyIG1heFggPSBMYXlvdXRDb25zdGFudHMuSU5JVElBTF9XT1JMRF9CT1VOREFSWTtcbiAgcmFuZG9tQ2VudGVyWCA9IExheW91dENvbnN0YW50cy5XT1JMRF9DRU5URVJfWCArIFJhbmRvbVNlZWQubmV4dERvdWJsZSgpICogKG1heFggLSBtaW5YKSArIG1pblg7XG5cbiAgdmFyIG1pblkgPSAtTGF5b3V0Q29uc3RhbnRzLklOSVRJQUxfV09STERfQk9VTkRBUlk7XG4gIHZhciBtYXhZID0gTGF5b3V0Q29uc3RhbnRzLklOSVRJQUxfV09STERfQk9VTkRBUlk7XG4gIHJhbmRvbUNlbnRlclkgPSBMYXlvdXRDb25zdGFudHMuV09STERfQ0VOVEVSX1kgKyBSYW5kb21TZWVkLm5leHREb3VibGUoKSAqIChtYXhZIC0gbWluWSkgKyBtaW5ZO1xuXG4gIHRoaXMucmVjdC54ID0gcmFuZG9tQ2VudGVyWDtcbiAgdGhpcy5yZWN0LnkgPSByYW5kb21DZW50ZXJZO1xufTtcblxuTE5vZGUucHJvdG90eXBlLnVwZGF0ZUJvdW5kcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuZ2V0Q2hpbGQoKSA9PSBudWxsKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cbiAgaWYgKHRoaXMuZ2V0Q2hpbGQoKS5nZXROb2RlcygpLmxlbmd0aCAhPSAwKSB7XG4gICAgLy8gd3JhcCB0aGUgY2hpbGRyZW4gbm9kZXMgYnkgcmUtYXJyYW5naW5nIHRoZSBib3VuZGFyaWVzXG4gICAgdmFyIGNoaWxkR3JhcGggPSB0aGlzLmdldENoaWxkKCk7XG4gICAgY2hpbGRHcmFwaC51cGRhdGVCb3VuZHModHJ1ZSk7XG5cbiAgICB0aGlzLnJlY3QueCA9IGNoaWxkR3JhcGguZ2V0TGVmdCgpO1xuICAgIHRoaXMucmVjdC55ID0gY2hpbGRHcmFwaC5nZXRUb3AoKTtcblxuICAgIHRoaXMuc2V0V2lkdGgoY2hpbGRHcmFwaC5nZXRSaWdodCgpIC0gY2hpbGRHcmFwaC5nZXRMZWZ0KCkpO1xuICAgIHRoaXMuc2V0SGVpZ2h0KGNoaWxkR3JhcGguZ2V0Qm90dG9tKCkgLSBjaGlsZEdyYXBoLmdldFRvcCgpKTtcblxuICAgIC8vIFVwZGF0ZSBjb21wb3VuZCBib3VuZHMgY29uc2lkZXJpbmcgaXRzIGxhYmVsIHByb3BlcnRpZXMgICAgXG4gICAgaWYgKExheW91dENvbnN0YW50cy5OT0RFX0RJTUVOU0lPTlNfSU5DTFVERV9MQUJFTFMpIHtcblxuICAgICAgdmFyIHdpZHRoID0gY2hpbGRHcmFwaC5nZXRSaWdodCgpIC0gY2hpbGRHcmFwaC5nZXRMZWZ0KCk7XG4gICAgICB2YXIgaGVpZ2h0ID0gY2hpbGRHcmFwaC5nZXRCb3R0b20oKSAtIGNoaWxkR3JhcGguZ2V0VG9wKCk7XG5cbiAgICAgIGlmICh0aGlzLmxhYmVsV2lkdGggPiB3aWR0aCkge1xuICAgICAgICB0aGlzLnJlY3QueCAtPSAodGhpcy5sYWJlbFdpZHRoIC0gd2lkdGgpIC8gMjtcbiAgICAgICAgdGhpcy5zZXRXaWR0aCh0aGlzLmxhYmVsV2lkdGgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5sYWJlbEhlaWdodCA+IGhlaWdodCkge1xuICAgICAgICBpZiAodGhpcy5sYWJlbFBvcyA9PSBcImNlbnRlclwiKSB7XG4gICAgICAgICAgdGhpcy5yZWN0LnkgLT0gKHRoaXMubGFiZWxIZWlnaHQgLSBoZWlnaHQpIC8gMjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxhYmVsUG9zID09IFwidG9wXCIpIHtcbiAgICAgICAgICB0aGlzLnJlY3QueSAtPSB0aGlzLmxhYmVsSGVpZ2h0IC0gaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0SGVpZ2h0KHRoaXMubGFiZWxIZWlnaHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuTE5vZGUucHJvdG90eXBlLmdldEluY2x1c2lvblRyZWVEZXB0aCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuaW5jbHVzaW9uVHJlZURlcHRoID09IEludGVnZXIuTUFYX1ZBTFVFKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cbiAgcmV0dXJuIHRoaXMuaW5jbHVzaW9uVHJlZURlcHRoO1xufTtcblxuTE5vZGUucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uICh0cmFucykge1xuICB2YXIgbGVmdCA9IHRoaXMucmVjdC54O1xuXG4gIGlmIChsZWZ0ID4gTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZKSB7XG4gICAgbGVmdCA9IExheW91dENvbnN0YW50cy5XT1JMRF9CT1VOREFSWTtcbiAgfSBlbHNlIGlmIChsZWZ0IDwgLUxheW91dENvbnN0YW50cy5XT1JMRF9CT1VOREFSWSkge1xuICAgIGxlZnQgPSAtTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZO1xuICB9XG5cbiAgdmFyIHRvcCA9IHRoaXMucmVjdC55O1xuXG4gIGlmICh0b3AgPiBMYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlkpIHtcbiAgICB0b3AgPSBMYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlk7XG4gIH0gZWxzZSBpZiAodG9wIDwgLUxheW91dENvbnN0YW50cy5XT1JMRF9CT1VOREFSWSkge1xuICAgIHRvcCA9IC1MYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlk7XG4gIH1cblxuICB2YXIgbGVmdFRvcCA9IG5ldyBQb2ludEQobGVmdCwgdG9wKTtcbiAgdmFyIHZMZWZ0VG9wID0gdHJhbnMuaW52ZXJzZVRyYW5zZm9ybVBvaW50KGxlZnRUb3ApO1xuXG4gIHRoaXMuc2V0TG9jYXRpb24odkxlZnRUb3AueCwgdkxlZnRUb3AueSk7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0TGVmdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVjdC54O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldFJpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0LnggKyB0aGlzLnJlY3Qud2lkdGg7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0VG9wID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0Lnk7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0Qm90dG9tID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0LnkgKyB0aGlzLnJlY3QuaGVpZ2h0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMub3duZXIgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMub3duZXIuZ2V0UGFyZW50KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExOb2RlO1xuXG4vKioqLyB9KSxcbi8qIDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gUG9pbnREKHgsIHkpIHtcbiAgaWYgKHggPT0gbnVsbCAmJiB5ID09IG51bGwpIHtcbiAgICB0aGlzLnggPSAwO1xuICAgIHRoaXMueSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICB9XG59XG5cblBvaW50RC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueDtcbn07XG5cblBvaW50RC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueTtcbn07XG5cblBvaW50RC5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uICh4KSB7XG4gIHRoaXMueCA9IHg7XG59O1xuXG5Qb2ludEQucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbiAoeSkge1xuICB0aGlzLnkgPSB5O1xufTtcblxuUG9pbnRELnByb3RvdHlwZS5nZXREaWZmZXJlbmNlID0gZnVuY3Rpb24gKHB0KSB7XG4gIHJldHVybiBuZXcgRGltZW5zaW9uRCh0aGlzLnggLSBwdC54LCB0aGlzLnkgLSBwdC55KTtcbn07XG5cblBvaW50RC5wcm90b3R5cGUuZ2V0Q29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludEQodGhpcy54LCB0aGlzLnkpO1xufTtcblxuUG9pbnRELnByb3RvdHlwZS50cmFuc2xhdGUgPSBmdW5jdGlvbiAoZGltKSB7XG4gIHRoaXMueCArPSBkaW0ud2lkdGg7XG4gIHRoaXMueSArPSBkaW0uaGVpZ2h0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUG9pbnREO1xuXG4vKioqLyB9KSxcbi8qIDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xudmFyIExheW91dENvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgTEdyYXBoTWFuYWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG52YXIgTE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xudmFyIExFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbnZhciBSZWN0YW5nbGVEID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG52YXIgUG9pbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcbnZhciBMaW5rZWRMaXN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cbmZ1bmN0aW9uIExHcmFwaChwYXJlbnQsIG9iajIsIHZHcmFwaCkge1xuICBMR3JhcGhPYmplY3QuY2FsbCh0aGlzLCB2R3JhcGgpO1xuICB0aGlzLmVzdGltYXRlZFNpemUgPSBJbnRlZ2VyLk1JTl9WQUxVRTtcbiAgdGhpcy5tYXJnaW4gPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9HUkFQSF9NQVJHSU47XG4gIHRoaXMuZWRnZXMgPSBbXTtcbiAgdGhpcy5ub2RlcyA9IFtdO1xuICB0aGlzLmlzQ29ubmVjdGVkID0gZmFsc2U7XG4gIHRoaXMucGFyZW50ID0gcGFyZW50O1xuXG4gIGlmIChvYmoyICE9IG51bGwgJiYgb2JqMiBpbnN0YW5jZW9mIExHcmFwaE1hbmFnZXIpIHtcbiAgICB0aGlzLmdyYXBoTWFuYWdlciA9IG9iajI7XG4gIH0gZWxzZSBpZiAob2JqMiAhPSBudWxsICYmIG9iajIgaW5zdGFuY2VvZiBMYXlvdXQpIHtcbiAgICB0aGlzLmdyYXBoTWFuYWdlciA9IG9iajIuZ3JhcGhNYW5hZ2VyO1xuICB9XG59XG5cbkxHcmFwaC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExHcmFwaE9iamVjdC5wcm90b3R5cGUpO1xuZm9yICh2YXIgcHJvcCBpbiBMR3JhcGhPYmplY3QpIHtcbiAgTEdyYXBoW3Byb3BdID0gTEdyYXBoT2JqZWN0W3Byb3BdO1xufVxuXG5MR3JhcGgucHJvdG90eXBlLmdldE5vZGVzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ub2Rlcztcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuZ2V0RWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmVkZ2VzO1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5nZXRHcmFwaE1hbmFnZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdyYXBoTWFuYWdlcjtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuZ2V0UGFyZW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5wYXJlbnQ7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmdldExlZnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxlZnQ7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmdldFJpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yaWdodDtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuZ2V0VG9wID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy50b3A7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmdldEJvdHRvbSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuYm90dG9tO1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5pc0Nvbm5lY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuaXNDb25uZWN0ZWQ7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChvYmoxLCBzb3VyY2VOb2RlLCB0YXJnZXROb2RlKSB7XG4gIGlmIChzb3VyY2VOb2RlID09IG51bGwgJiYgdGFyZ2V0Tm9kZSA9PSBudWxsKSB7XG4gICAgdmFyIG5ld05vZGUgPSBvYmoxO1xuICAgIGlmICh0aGlzLmdyYXBoTWFuYWdlciA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBcIkdyYXBoIGhhcyBubyBncmFwaCBtZ3IhXCI7XG4gICAgfVxuICAgIGlmICh0aGlzLmdldE5vZGVzKCkuaW5kZXhPZihuZXdOb2RlKSA+IC0xKSB7XG4gICAgICB0aHJvdyBcIk5vZGUgYWxyZWFkeSBpbiBncmFwaCFcIjtcbiAgICB9XG4gICAgbmV3Tm9kZS5vd25lciA9IHRoaXM7XG4gICAgdGhpcy5nZXROb2RlcygpLnB1c2gobmV3Tm9kZSk7XG5cbiAgICByZXR1cm4gbmV3Tm9kZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbmV3RWRnZSA9IG9iajE7XG4gICAgaWYgKCEodGhpcy5nZXROb2RlcygpLmluZGV4T2Yoc291cmNlTm9kZSkgPiAtMSAmJiB0aGlzLmdldE5vZGVzKCkuaW5kZXhPZih0YXJnZXROb2RlKSA+IC0xKSkge1xuICAgICAgdGhyb3cgXCJTb3VyY2Ugb3IgdGFyZ2V0IG5vdCBpbiBncmFwaCFcIjtcbiAgICB9XG5cbiAgICBpZiAoIShzb3VyY2VOb2RlLm93bmVyID09IHRhcmdldE5vZGUub3duZXIgJiYgc291cmNlTm9kZS5vd25lciA9PSB0aGlzKSkge1xuICAgICAgdGhyb3cgXCJCb3RoIG93bmVycyBtdXN0IGJlIHRoaXMgZ3JhcGghXCI7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZU5vZGUub3duZXIgIT0gdGFyZ2V0Tm9kZS5vd25lcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gc2V0IHNvdXJjZSBhbmQgdGFyZ2V0XG4gICAgbmV3RWRnZS5zb3VyY2UgPSBzb3VyY2VOb2RlO1xuICAgIG5ld0VkZ2UudGFyZ2V0ID0gdGFyZ2V0Tm9kZTtcblxuICAgIC8vIHNldCBhcyBpbnRyYS1ncmFwaCBlZGdlXG4gICAgbmV3RWRnZS5pc0ludGVyR3JhcGggPSBmYWxzZTtcblxuICAgIC8vIGFkZCB0byBncmFwaCBlZGdlIGxpc3RcbiAgICB0aGlzLmdldEVkZ2VzKCkucHVzaChuZXdFZGdlKTtcblxuICAgIC8vIGFkZCB0byBpbmNpZGVuY3kgbGlzdHNcbiAgICBzb3VyY2VOb2RlLmVkZ2VzLnB1c2gobmV3RWRnZSk7XG5cbiAgICBpZiAodGFyZ2V0Tm9kZSAhPSBzb3VyY2VOb2RlKSB7XG4gICAgICB0YXJnZXROb2RlLmVkZ2VzLnB1c2gobmV3RWRnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0VkZ2U7XG4gIH1cbn07XG5cbkxHcmFwaC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKG9iaikge1xuICB2YXIgbm9kZSA9IG9iajtcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIExOb2RlKSB7XG4gICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgXCJOb2RlIGlzIG51bGwhXCI7XG4gICAgfVxuICAgIGlmICghKG5vZGUub3duZXIgIT0gbnVsbCAmJiBub2RlLm93bmVyID09IHRoaXMpKSB7XG4gICAgICB0aHJvdyBcIk93bmVyIGdyYXBoIGlzIGludmFsaWQhXCI7XG4gICAgfVxuICAgIGlmICh0aGlzLmdyYXBoTWFuYWdlciA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBcIk93bmVyIGdyYXBoIG1hbmFnZXIgaXMgaW52YWxpZCFcIjtcbiAgICB9XG4gICAgLy8gcmVtb3ZlIGluY2lkZW50IGVkZ2VzIGZpcnN0IChtYWtlIGEgY29weSB0byBkbyBpdCBzYWZlbHkpXG4gICAgdmFyIGVkZ2VzVG9CZVJlbW92ZWQgPSBub2RlLmVkZ2VzLnNsaWNlKCk7XG4gICAgdmFyIGVkZ2U7XG4gICAgdmFyIHMgPSBlZGdlc1RvQmVSZW1vdmVkLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgZWRnZSA9IGVkZ2VzVG9CZVJlbW92ZWRbaV07XG5cbiAgICAgIGlmIChlZGdlLmlzSW50ZXJHcmFwaCkge1xuICAgICAgICB0aGlzLmdyYXBoTWFuYWdlci5yZW1vdmUoZWRnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlLnNvdXJjZS5vd25lci5yZW1vdmUoZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbm93IHRoZSBub2RlIGl0c2VsZlxuICAgIHZhciBpbmRleCA9IHRoaXMubm9kZXMuaW5kZXhPZihub2RlKTtcbiAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgIHRocm93IFwiTm9kZSBub3QgaW4gb3duZXIgbm9kZSBsaXN0IVwiO1xuICAgIH1cblxuICAgIHRoaXMubm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBMRWRnZSkge1xuICAgIHZhciBlZGdlID0gb2JqO1xuICAgIGlmIChlZGdlID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiRWRnZSBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAoIShlZGdlLnNvdXJjZSAhPSBudWxsICYmIGVkZ2UudGFyZ2V0ICE9IG51bGwpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IGlzIG51bGwhXCI7XG4gICAgfVxuICAgIGlmICghKGVkZ2Uuc291cmNlLm93bmVyICE9IG51bGwgJiYgZWRnZS50YXJnZXQub3duZXIgIT0gbnVsbCAmJiBlZGdlLnNvdXJjZS5vd25lciA9PSB0aGlzICYmIGVkZ2UudGFyZ2V0Lm93bmVyID09IHRoaXMpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IG93bmVyIGlzIGludmFsaWQhXCI7XG4gICAgfVxuXG4gICAgdmFyIHNvdXJjZUluZGV4ID0gZWRnZS5zb3VyY2UuZWRnZXMuaW5kZXhPZihlZGdlKTtcbiAgICB2YXIgdGFyZ2V0SW5kZXggPSBlZGdlLnRhcmdldC5lZGdlcy5pbmRleE9mKGVkZ2UpO1xuICAgIGlmICghKHNvdXJjZUluZGV4ID4gLTEgJiYgdGFyZ2V0SW5kZXggPiAtMSkpIHtcbiAgICAgIHRocm93IFwiU291cmNlIGFuZC9vciB0YXJnZXQgZG9lc24ndCBrbm93IHRoaXMgZWRnZSFcIjtcbiAgICB9XG5cbiAgICBlZGdlLnNvdXJjZS5lZGdlcy5zcGxpY2Uoc291cmNlSW5kZXgsIDEpO1xuXG4gICAgaWYgKGVkZ2UudGFyZ2V0ICE9IGVkZ2Uuc291cmNlKSB7XG4gICAgICBlZGdlLnRhcmdldC5lZGdlcy5zcGxpY2UodGFyZ2V0SW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IGVkZ2Uuc291cmNlLm93bmVyLmdldEVkZ2VzKCkuaW5kZXhPZihlZGdlKTtcbiAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgIHRocm93IFwiTm90IGluIG93bmVyJ3MgZWRnZSBsaXN0IVwiO1xuICAgIH1cblxuICAgIGVkZ2Uuc291cmNlLm93bmVyLmdldEVkZ2VzKCkuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxufTtcblxuTEdyYXBoLnByb3RvdHlwZS51cGRhdGVMZWZ0VG9wID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdG9wID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciBsZWZ0ID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciBub2RlVG9wO1xuICB2YXIgbm9kZUxlZnQ7XG4gIHZhciBtYXJnaW47XG5cbiAgdmFyIG5vZGVzID0gdGhpcy5nZXROb2RlcygpO1xuICB2YXIgcyA9IG5vZGVzLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIHZhciBsTm9kZSA9IG5vZGVzW2ldO1xuICAgIG5vZGVUb3AgPSBsTm9kZS5nZXRUb3AoKTtcbiAgICBub2RlTGVmdCA9IGxOb2RlLmdldExlZnQoKTtcblxuICAgIGlmICh0b3AgPiBub2RlVG9wKSB7XG4gICAgICB0b3AgPSBub2RlVG9wO1xuICAgIH1cblxuICAgIGlmIChsZWZ0ID4gbm9kZUxlZnQpIHtcbiAgICAgIGxlZnQgPSBub2RlTGVmdDtcbiAgICB9XG4gIH1cblxuICAvLyBEbyB3ZSBoYXZlIGFueSBub2RlcyBpbiB0aGlzIGdyYXBoP1xuICBpZiAodG9wID09IEludGVnZXIuTUFYX1ZBTFVFKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAobm9kZXNbMF0uZ2V0UGFyZW50KCkucGFkZGluZ0xlZnQgIT0gdW5kZWZpbmVkKSB7XG4gICAgbWFyZ2luID0gbm9kZXNbMF0uZ2V0UGFyZW50KCkucGFkZGluZ0xlZnQ7XG4gIH0gZWxzZSB7XG4gICAgbWFyZ2luID0gdGhpcy5tYXJnaW47XG4gIH1cblxuICB0aGlzLmxlZnQgPSBsZWZ0IC0gbWFyZ2luO1xuICB0aGlzLnRvcCA9IHRvcCAtIG1hcmdpbjtcblxuICAvLyBBcHBseSB0aGUgbWFyZ2lucyBhbmQgcmV0dXJuIHRoZSByZXN1bHRcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLmxlZnQsIHRoaXMudG9wKTtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUudXBkYXRlQm91bmRzID0gZnVuY3Rpb24gKHJlY3Vyc2l2ZSkge1xuICAvLyBjYWxjdWxhdGUgYm91bmRzXG4gIHZhciBsZWZ0ID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciByaWdodCA9IC1JbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdmFyIHRvcCA9IEludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgYm90dG9tID0gLUludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgbm9kZUxlZnQ7XG4gIHZhciBub2RlUmlnaHQ7XG4gIHZhciBub2RlVG9wO1xuICB2YXIgbm9kZUJvdHRvbTtcbiAgdmFyIG1hcmdpbjtcblxuICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzO1xuICB2YXIgcyA9IG5vZGVzLmxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICB2YXIgbE5vZGUgPSBub2Rlc1tpXTtcblxuICAgIGlmIChyZWN1cnNpdmUgJiYgbE5vZGUuY2hpbGQgIT0gbnVsbCkge1xuICAgICAgbE5vZGUudXBkYXRlQm91bmRzKCk7XG4gICAgfVxuICAgIG5vZGVMZWZ0ID0gbE5vZGUuZ2V0TGVmdCgpO1xuICAgIG5vZGVSaWdodCA9IGxOb2RlLmdldFJpZ2h0KCk7XG4gICAgbm9kZVRvcCA9IGxOb2RlLmdldFRvcCgpO1xuICAgIG5vZGVCb3R0b20gPSBsTm9kZS5nZXRCb3R0b20oKTtcblxuICAgIGlmIChsZWZ0ID4gbm9kZUxlZnQpIHtcbiAgICAgIGxlZnQgPSBub2RlTGVmdDtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQgPCBub2RlUmlnaHQpIHtcbiAgICAgIHJpZ2h0ID0gbm9kZVJpZ2h0O1xuICAgIH1cblxuICAgIGlmICh0b3AgPiBub2RlVG9wKSB7XG4gICAgICB0b3AgPSBub2RlVG9wO1xuICAgIH1cblxuICAgIGlmIChib3R0b20gPCBub2RlQm90dG9tKSB7XG4gICAgICBib3R0b20gPSBub2RlQm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIHZhciBib3VuZGluZ1JlY3QgPSBuZXcgUmVjdGFuZ2xlRChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKTtcbiAgaWYgKGxlZnQgPT0gSW50ZWdlci5NQVhfVkFMVUUpIHtcbiAgICB0aGlzLmxlZnQgPSB0aGlzLnBhcmVudC5nZXRMZWZ0KCk7XG4gICAgdGhpcy5yaWdodCA9IHRoaXMucGFyZW50LmdldFJpZ2h0KCk7XG4gICAgdGhpcy50b3AgPSB0aGlzLnBhcmVudC5nZXRUb3AoKTtcbiAgICB0aGlzLmJvdHRvbSA9IHRoaXMucGFyZW50LmdldEJvdHRvbSgpO1xuICB9XG5cbiAgaWYgKG5vZGVzWzBdLmdldFBhcmVudCgpLnBhZGRpbmdMZWZ0ICE9IHVuZGVmaW5lZCkge1xuICAgIG1hcmdpbiA9IG5vZGVzWzBdLmdldFBhcmVudCgpLnBhZGRpbmdMZWZ0O1xuICB9IGVsc2Uge1xuICAgIG1hcmdpbiA9IHRoaXMubWFyZ2luO1xuICB9XG5cbiAgdGhpcy5sZWZ0ID0gYm91bmRpbmdSZWN0LnggLSBtYXJnaW47XG4gIHRoaXMucmlnaHQgPSBib3VuZGluZ1JlY3QueCArIGJvdW5kaW5nUmVjdC53aWR0aCArIG1hcmdpbjtcbiAgdGhpcy50b3AgPSBib3VuZGluZ1JlY3QueSAtIG1hcmdpbjtcbiAgdGhpcy5ib3R0b20gPSBib3VuZGluZ1JlY3QueSArIGJvdW5kaW5nUmVjdC5oZWlnaHQgKyBtYXJnaW47XG59O1xuXG5MR3JhcGguY2FsY3VsYXRlQm91bmRzID0gZnVuY3Rpb24gKG5vZGVzKSB7XG4gIHZhciBsZWZ0ID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciByaWdodCA9IC1JbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdmFyIHRvcCA9IEludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgYm90dG9tID0gLUludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgbm9kZUxlZnQ7XG4gIHZhciBub2RlUmlnaHQ7XG4gIHZhciBub2RlVG9wO1xuICB2YXIgbm9kZUJvdHRvbTtcblxuICB2YXIgcyA9IG5vZGVzLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIHZhciBsTm9kZSA9IG5vZGVzW2ldO1xuICAgIG5vZGVMZWZ0ID0gbE5vZGUuZ2V0TGVmdCgpO1xuICAgIG5vZGVSaWdodCA9IGxOb2RlLmdldFJpZ2h0KCk7XG4gICAgbm9kZVRvcCA9IGxOb2RlLmdldFRvcCgpO1xuICAgIG5vZGVCb3R0b20gPSBsTm9kZS5nZXRCb3R0b20oKTtcblxuICAgIGlmIChsZWZ0ID4gbm9kZUxlZnQpIHtcbiAgICAgIGxlZnQgPSBub2RlTGVmdDtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQgPCBub2RlUmlnaHQpIHtcbiAgICAgIHJpZ2h0ID0gbm9kZVJpZ2h0O1xuICAgIH1cblxuICAgIGlmICh0b3AgPiBub2RlVG9wKSB7XG4gICAgICB0b3AgPSBub2RlVG9wO1xuICAgIH1cblxuICAgIGlmIChib3R0b20gPCBub2RlQm90dG9tKSB7XG4gICAgICBib3R0b20gPSBub2RlQm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIHZhciBib3VuZGluZ1JlY3QgPSBuZXcgUmVjdGFuZ2xlRChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKTtcblxuICByZXR1cm4gYm91bmRpbmdSZWN0O1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5nZXRJbmNsdXNpb25UcmVlRGVwdGggPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzID09IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKSkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRJbmNsdXNpb25UcmVlRGVwdGgoKTtcbiAgfVxufTtcblxuTEdyYXBoLnByb3RvdHlwZS5nZXRFc3RpbWF0ZWRTaXplID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5lc3RpbWF0ZWRTaXplID09IEludGVnZXIuTUlOX1ZBTFVFKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cbiAgcmV0dXJuIHRoaXMuZXN0aW1hdGVkU2l6ZTtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuY2FsY0VzdGltYXRlZFNpemUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzaXplID0gMDtcbiAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcztcbiAgdmFyIHMgPSBub2Rlcy5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICB2YXIgbE5vZGUgPSBub2Rlc1tpXTtcbiAgICBzaXplICs9IGxOb2RlLmNhbGNFc3RpbWF0ZWRTaXplKCk7XG4gIH1cblxuICBpZiAoc2l6ZSA9PSAwKSB7XG4gICAgdGhpcy5lc3RpbWF0ZWRTaXplID0gTGF5b3V0Q29uc3RhbnRzLkVNUFRZX0NPTVBPVU5EX05PREVfU0laRTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmVzdGltYXRlZFNpemUgPSBzaXplIC8gTWF0aC5zcXJ0KHRoaXMubm9kZXMubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmVzdGltYXRlZFNpemU7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLnVwZGF0ZUNvbm5lY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAodGhpcy5ub2Rlcy5sZW5ndGggPT0gMCkge1xuICAgIHRoaXMuaXNDb25uZWN0ZWQgPSB0cnVlO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBxdWV1ZSA9IG5ldyBMaW5rZWRMaXN0KCk7XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLm5vZGVzWzBdO1xuICB2YXIgbmVpZ2hib3JFZGdlcztcbiAgdmFyIGN1cnJlbnROZWlnaGJvcjtcbiAgdmFyIGNoaWxkcmVuT2ZOb2RlID0gY3VycmVudE5vZGUud2l0aENoaWxkcmVuKCk7XG4gIGNoaWxkcmVuT2ZOb2RlLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBxdWV1ZS5wdXNoKG5vZGUpO1xuICAgIHZpc2l0ZWQuYWRkKG5vZGUpO1xuICB9KTtcblxuICB3aGlsZSAocXVldWUubGVuZ3RoICE9PSAwKSB7XG4gICAgY3VycmVudE5vZGUgPSBxdWV1ZS5zaGlmdCgpO1xuXG4gICAgLy8gVHJhdmVyc2UgYWxsIG5laWdoYm9ycyBvZiB0aGlzIG5vZGVcbiAgICBuZWlnaGJvckVkZ2VzID0gY3VycmVudE5vZGUuZ2V0RWRnZXMoKTtcbiAgICB2YXIgc2l6ZSA9IG5laWdoYm9yRWRnZXMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICB2YXIgbmVpZ2hib3JFZGdlID0gbmVpZ2hib3JFZGdlc1tpXTtcbiAgICAgIGN1cnJlbnROZWlnaGJvciA9IG5laWdoYm9yRWRnZS5nZXRPdGhlckVuZEluR3JhcGgoY3VycmVudE5vZGUsIHRoaXMpO1xuXG4gICAgICAvLyBBZGQgdW52aXNpdGVkIG5laWdoYm9ycyB0byB0aGUgbGlzdCB0byB2aXNpdFxuICAgICAgaWYgKGN1cnJlbnROZWlnaGJvciAhPSBudWxsICYmICF2aXNpdGVkLmhhcyhjdXJyZW50TmVpZ2hib3IpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbk9mTmVpZ2hib3IgPSBjdXJyZW50TmVpZ2hib3Iud2l0aENoaWxkcmVuKCk7XG5cbiAgICAgICAgY2hpbGRyZW5PZk5laWdoYm9yLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICBxdWV1ZS5wdXNoKG5vZGUpO1xuICAgICAgICAgIHZpc2l0ZWQuYWRkKG5vZGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLmlzQ29ubmVjdGVkID0gZmFsc2U7XG5cbiAgaWYgKHZpc2l0ZWQuc2l6ZSA+PSB0aGlzLm5vZGVzLmxlbmd0aCkge1xuICAgIHZhciBub09mVmlzaXRlZEluVGhpc0dyYXBoID0gMDtcblxuICAgIHZpc2l0ZWQuZm9yRWFjaChmdW5jdGlvbiAodmlzaXRlZE5vZGUpIHtcbiAgICAgIGlmICh2aXNpdGVkTm9kZS5vd25lciA9PSBzZWxmKSB7XG4gICAgICAgIG5vT2ZWaXNpdGVkSW5UaGlzR3JhcGgrKztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChub09mVmlzaXRlZEluVGhpc0dyYXBoID09IHRoaXMubm9kZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmlzQ29ubmVjdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTEdyYXBoO1xuXG4vKioqLyB9KSxcbi8qIDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaDtcbnZhciBMRWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbmZ1bmN0aW9uIExHcmFwaE1hbmFnZXIobGF5b3V0KSB7XG4gIExHcmFwaCA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7IC8vIEl0IG1heSBiZSBiZXR0ZXIgdG8gaW5pdGlsaXplIHRoaXMgb3V0IG9mIHRoaXMgZnVuY3Rpb24gYnV0IGl0IGdpdmVzIGFuIGVycm9yIChSaWdodC1oYW5kIHNpZGUgb2YgJ2luc3RhbmNlb2YnIGlzIG5vdCBjYWxsYWJsZSkgbm93LlxuICB0aGlzLmxheW91dCA9IGxheW91dDtcblxuICB0aGlzLmdyYXBocyA9IFtdO1xuICB0aGlzLmVkZ2VzID0gW107XG59XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmFkZFJvb3QgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBuZ3JhcGggPSB0aGlzLmxheW91dC5uZXdHcmFwaCgpO1xuICB2YXIgbm5vZGUgPSB0aGlzLmxheW91dC5uZXdOb2RlKG51bGwpO1xuICB2YXIgcm9vdCA9IHRoaXMuYWRkKG5ncmFwaCwgbm5vZGUpO1xuICB0aGlzLnNldFJvb3RHcmFwaChyb290KTtcbiAgcmV0dXJuIHRoaXMucm9vdEdyYXBoO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG5ld0dyYXBoLCBwYXJlbnROb2RlLCBuZXdFZGdlLCBzb3VyY2VOb2RlLCB0YXJnZXROb2RlKSB7XG4gIC8vdGhlcmUgYXJlIGp1c3QgMiBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgdGhlbiBpdCBhZGRzIGFuIExHcmFwaCBlbHNlIGl0IGFkZHMgYW4gTEVkZ2VcbiAgaWYgKG5ld0VkZ2UgPT0gbnVsbCAmJiBzb3VyY2VOb2RlID09IG51bGwgJiYgdGFyZ2V0Tm9kZSA9PSBudWxsKSB7XG4gICAgaWYgKG5ld0dyYXBoID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiR3JhcGggaXMgbnVsbCFcIjtcbiAgICB9XG4gICAgaWYgKHBhcmVudE5vZGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgXCJQYXJlbnQgbm9kZSBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAodGhpcy5ncmFwaHMuaW5kZXhPZihuZXdHcmFwaCkgPiAtMSkge1xuICAgICAgdGhyb3cgXCJHcmFwaCBhbHJlYWR5IGluIHRoaXMgZ3JhcGggbWdyIVwiO1xuICAgIH1cblxuICAgIHRoaXMuZ3JhcGhzLnB1c2gobmV3R3JhcGgpO1xuXG4gICAgaWYgKG5ld0dyYXBoLnBhcmVudCAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBcIkFscmVhZHkgaGFzIGEgcGFyZW50IVwiO1xuICAgIH1cbiAgICBpZiAocGFyZW50Tm9kZS5jaGlsZCAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBcIkFscmVhZHkgaGFzIGEgY2hpbGQhXCI7XG4gICAgfVxuXG4gICAgbmV3R3JhcGgucGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICBwYXJlbnROb2RlLmNoaWxkID0gbmV3R3JhcGg7XG5cbiAgICByZXR1cm4gbmV3R3JhcGg7XG4gIH0gZWxzZSB7XG4gICAgLy9jaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBwYXJhbWV0ZXJzXG4gICAgdGFyZ2V0Tm9kZSA9IG5ld0VkZ2U7XG4gICAgc291cmNlTm9kZSA9IHBhcmVudE5vZGU7XG4gICAgbmV3RWRnZSA9IG5ld0dyYXBoO1xuICAgIHZhciBzb3VyY2VHcmFwaCA9IHNvdXJjZU5vZGUuZ2V0T3duZXIoKTtcbiAgICB2YXIgdGFyZ2V0R3JhcGggPSB0YXJnZXROb2RlLmdldE93bmVyKCk7XG5cbiAgICBpZiAoIShzb3VyY2VHcmFwaCAhPSBudWxsICYmIHNvdXJjZUdyYXBoLmdldEdyYXBoTWFuYWdlcigpID09IHRoaXMpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBub3QgaW4gdGhpcyBncmFwaCBtZ3IhXCI7XG4gICAgfVxuICAgIGlmICghKHRhcmdldEdyYXBoICE9IG51bGwgJiYgdGFyZ2V0R3JhcGguZ2V0R3JhcGhNYW5hZ2VyKCkgPT0gdGhpcykpIHtcbiAgICAgIHRocm93IFwiVGFyZ2V0IG5vdCBpbiB0aGlzIGdyYXBoIG1nciFcIjtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlR3JhcGggPT0gdGFyZ2V0R3JhcGgpIHtcbiAgICAgIG5ld0VkZ2UuaXNJbnRlckdyYXBoID0gZmFsc2U7XG4gICAgICByZXR1cm4gc291cmNlR3JhcGguYWRkKG5ld0VkZ2UsIHNvdXJjZU5vZGUsIHRhcmdldE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdFZGdlLmlzSW50ZXJHcmFwaCA9IHRydWU7XG5cbiAgICAgIC8vIHNldCBzb3VyY2UgYW5kIHRhcmdldFxuICAgICAgbmV3RWRnZS5zb3VyY2UgPSBzb3VyY2VOb2RlO1xuICAgICAgbmV3RWRnZS50YXJnZXQgPSB0YXJnZXROb2RlO1xuXG4gICAgICAvLyBhZGQgZWRnZSB0byBpbnRlci1ncmFwaCBlZGdlIGxpc3RcbiAgICAgIGlmICh0aGlzLmVkZ2VzLmluZGV4T2YobmV3RWRnZSkgPiAtMSkge1xuICAgICAgICB0aHJvdyBcIkVkZ2UgYWxyZWFkeSBpbiBpbnRlci1ncmFwaCBlZGdlIGxpc3QhXCI7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZWRnZXMucHVzaChuZXdFZGdlKTtcblxuICAgICAgLy8gYWRkIGVkZ2UgdG8gc291cmNlIGFuZCB0YXJnZXQgaW5jaWRlbmN5IGxpc3RzXG4gICAgICBpZiAoIShuZXdFZGdlLnNvdXJjZSAhPSBudWxsICYmIG5ld0VkZ2UudGFyZ2V0ICE9IG51bGwpKSB7XG4gICAgICAgIHRocm93IFwiRWRnZSBzb3VyY2UgYW5kL29yIHRhcmdldCBpcyBudWxsIVwiO1xuICAgICAgfVxuXG4gICAgICBpZiAoIShuZXdFZGdlLnNvdXJjZS5lZGdlcy5pbmRleE9mKG5ld0VkZ2UpID09IC0xICYmIG5ld0VkZ2UudGFyZ2V0LmVkZ2VzLmluZGV4T2YobmV3RWRnZSkgPT0gLTEpKSB7XG4gICAgICAgIHRocm93IFwiRWRnZSBhbHJlYWR5IGluIHNvdXJjZSBhbmQvb3IgdGFyZ2V0IGluY2lkZW5jeSBsaXN0IVwiO1xuICAgICAgfVxuXG4gICAgICBuZXdFZGdlLnNvdXJjZS5lZGdlcy5wdXNoKG5ld0VkZ2UpO1xuICAgICAgbmV3RWRnZS50YXJnZXQuZWRnZXMucHVzaChuZXdFZGdlKTtcblxuICAgICAgcmV0dXJuIG5ld0VkZ2U7XG4gICAgfVxuICB9XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAobE9iaikge1xuICBpZiAobE9iaiBpbnN0YW5jZW9mIExHcmFwaCkge1xuICAgIHZhciBncmFwaCA9IGxPYmo7XG4gICAgaWYgKGdyYXBoLmdldEdyYXBoTWFuYWdlcigpICE9IHRoaXMpIHtcbiAgICAgIHRocm93IFwiR3JhcGggbm90IGluIHRoaXMgZ3JhcGggbWdyXCI7XG4gICAgfVxuICAgIGlmICghKGdyYXBoID09IHRoaXMucm9vdEdyYXBoIHx8IGdyYXBoLnBhcmVudCAhPSBudWxsICYmIGdyYXBoLnBhcmVudC5ncmFwaE1hbmFnZXIgPT0gdGhpcykpIHtcbiAgICAgIHRocm93IFwiSW52YWxpZCBwYXJlbnQgbm9kZSFcIjtcbiAgICB9XG5cbiAgICAvLyBmaXJzdCB0aGUgZWRnZXMgKG1ha2UgYSBjb3B5IHRvIGRvIGl0IHNhZmVseSlcbiAgICB2YXIgZWRnZXNUb0JlUmVtb3ZlZCA9IFtdO1xuXG4gICAgZWRnZXNUb0JlUmVtb3ZlZCA9IGVkZ2VzVG9CZVJlbW92ZWQuY29uY2F0KGdyYXBoLmdldEVkZ2VzKCkpO1xuXG4gICAgdmFyIGVkZ2U7XG4gICAgdmFyIHMgPSBlZGdlc1RvQmVSZW1vdmVkLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgZWRnZSA9IGVkZ2VzVG9CZVJlbW92ZWRbaV07XG4gICAgICBncmFwaC5yZW1vdmUoZWRnZSk7XG4gICAgfVxuXG4gICAgLy8gdGhlbiB0aGUgbm9kZXMgKG1ha2UgYSBjb3B5IHRvIGRvIGl0IHNhZmVseSlcbiAgICB2YXIgbm9kZXNUb0JlUmVtb3ZlZCA9IFtdO1xuXG4gICAgbm9kZXNUb0JlUmVtb3ZlZCA9IG5vZGVzVG9CZVJlbW92ZWQuY29uY2F0KGdyYXBoLmdldE5vZGVzKCkpO1xuXG4gICAgdmFyIG5vZGU7XG4gICAgcyA9IG5vZGVzVG9CZVJlbW92ZWQubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICBub2RlID0gbm9kZXNUb0JlUmVtb3ZlZFtpXTtcbiAgICAgIGdyYXBoLnJlbW92ZShub2RlKTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiBncmFwaCBpcyB0aGUgcm9vdFxuICAgIGlmIChncmFwaCA9PSB0aGlzLnJvb3RHcmFwaCkge1xuICAgICAgdGhpcy5zZXRSb290R3JhcGgobnVsbCk7XG4gICAgfVxuXG4gICAgLy8gbm93IHJlbW92ZSB0aGUgZ3JhcGggaXRzZWxmXG4gICAgdmFyIGluZGV4ID0gdGhpcy5ncmFwaHMuaW5kZXhPZihncmFwaCk7XG4gICAgdGhpcy5ncmFwaHMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIC8vIGFsc28gcmVzZXQgdGhlIHBhcmVudCBvZiB0aGUgZ3JhcGhcbiAgICBncmFwaC5wYXJlbnQgPSBudWxsO1xuICB9IGVsc2UgaWYgKGxPYmogaW5zdGFuY2VvZiBMRWRnZSkge1xuICAgIGVkZ2UgPSBsT2JqO1xuICAgIGlmIChlZGdlID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiRWRnZSBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAoIWVkZ2UuaXNJbnRlckdyYXBoKSB7XG4gICAgICB0aHJvdyBcIk5vdCBhbiBpbnRlci1ncmFwaCBlZGdlIVwiO1xuICAgIH1cbiAgICBpZiAoIShlZGdlLnNvdXJjZSAhPSBudWxsICYmIGVkZ2UudGFyZ2V0ICE9IG51bGwpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IGlzIG51bGwhXCI7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIGVkZ2UgZnJvbSBzb3VyY2UgYW5kIHRhcmdldCBub2RlcycgaW5jaWRlbmN5IGxpc3RzXG5cbiAgICBpZiAoIShlZGdlLnNvdXJjZS5lZGdlcy5pbmRleE9mKGVkZ2UpICE9IC0xICYmIGVkZ2UudGFyZ2V0LmVkZ2VzLmluZGV4T2YoZWRnZSkgIT0gLTEpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IGRvZXNuJ3Qga25vdyB0aGlzIGVkZ2UhXCI7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gZWRnZS5zb3VyY2UuZWRnZXMuaW5kZXhPZihlZGdlKTtcbiAgICBlZGdlLnNvdXJjZS5lZGdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGluZGV4ID0gZWRnZS50YXJnZXQuZWRnZXMuaW5kZXhPZihlZGdlKTtcbiAgICBlZGdlLnRhcmdldC5lZGdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgLy8gcmVtb3ZlIGVkZ2UgZnJvbSBvd25lciBncmFwaCBtYW5hZ2VyJ3MgaW50ZXItZ3JhcGggZWRnZSBsaXN0XG5cbiAgICBpZiAoIShlZGdlLnNvdXJjZS5vd25lciAhPSBudWxsICYmIGVkZ2Uuc291cmNlLm93bmVyLmdldEdyYXBoTWFuYWdlcigpICE9IG51bGwpKSB7XG4gICAgICB0aHJvdyBcIkVkZ2Ugb3duZXIgZ3JhcGggb3Igb3duZXIgZ3JhcGggbWFuYWdlciBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAoZWRnZS5zb3VyY2Uub3duZXIuZ2V0R3JhcGhNYW5hZ2VyKCkuZWRnZXMuaW5kZXhPZihlZGdlKSA9PSAtMSkge1xuICAgICAgdGhyb3cgXCJOb3QgaW4gb3duZXIgZ3JhcGggbWFuYWdlcidzIGVkZ2UgbGlzdCFcIjtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBlZGdlLnNvdXJjZS5vd25lci5nZXRHcmFwaE1hbmFnZXIoKS5lZGdlcy5pbmRleE9mKGVkZ2UpO1xuICAgIGVkZ2Uuc291cmNlLm93bmVyLmdldEdyYXBoTWFuYWdlcigpLmVkZ2VzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLnVwZGF0ZUJvdW5kcyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5yb290R3JhcGgudXBkYXRlQm91bmRzKHRydWUpO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0R3JhcGhzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaHM7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5nZXRBbGxOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuYWxsTm9kZXMgPT0gbnVsbCkge1xuICAgIHZhciBub2RlTGlzdCA9IFtdO1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdldEdyYXBocygpO1xuICAgIHZhciBzID0gZ3JhcGhzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgbm9kZUxpc3QgPSBub2RlTGlzdC5jb25jYXQoZ3JhcGhzW2ldLmdldE5vZGVzKCkpO1xuICAgIH1cbiAgICB0aGlzLmFsbE5vZGVzID0gbm9kZUxpc3Q7XG4gIH1cbiAgcmV0dXJuIHRoaXMuYWxsTm9kZXM7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5yZXNldEFsbE5vZGVzID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmFsbE5vZGVzID0gbnVsbDtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLnJlc2V0QWxsRWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYWxsRWRnZXMgPSBudWxsO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUucmVzZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5hbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbiA9IG51bGw7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5nZXRBbGxFZGdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuYWxsRWRnZXMgPT0gbnVsbCkge1xuICAgIHZhciBlZGdlTGlzdCA9IFtdO1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdldEdyYXBocygpO1xuICAgIHZhciBzID0gZ3JhcGhzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBocy5sZW5ndGg7IGkrKykge1xuICAgICAgZWRnZUxpc3QgPSBlZGdlTGlzdC5jb25jYXQoZ3JhcGhzW2ldLmdldEVkZ2VzKCkpO1xuICAgIH1cblxuICAgIGVkZ2VMaXN0ID0gZWRnZUxpc3QuY29uY2F0KHRoaXMuZWRnZXMpO1xuXG4gICAgdGhpcy5hbGxFZGdlcyA9IGVkZ2VMaXN0O1xuICB9XG4gIHJldHVybiB0aGlzLmFsbEVkZ2VzO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0QWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmFsbE5vZGVzVG9BcHBseUdyYXZpdGF0aW9uO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuc2V0QWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gPSBmdW5jdGlvbiAobm9kZUxpc3QpIHtcbiAgaWYgKHRoaXMuYWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gIT0gbnVsbCkge1xuICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICB9XG5cbiAgdGhpcy5hbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbiA9IG5vZGVMaXN0O1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0Um9vdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucm9vdEdyYXBoO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuc2V0Um9vdEdyYXBoID0gZnVuY3Rpb24gKGdyYXBoKSB7XG4gIGlmIChncmFwaC5nZXRHcmFwaE1hbmFnZXIoKSAhPSB0aGlzKSB7XG4gICAgdGhyb3cgXCJSb290IG5vdCBpbiB0aGlzIGdyYXBoIG1nciFcIjtcbiAgfVxuXG4gIHRoaXMucm9vdEdyYXBoID0gZ3JhcGg7XG4gIC8vIHJvb3QgZ3JhcGggbXVzdCBoYXZlIGEgcm9vdCBub2RlIGFzc29jaWF0ZWQgd2l0aCBpdCBmb3IgY29udmVuaWVuY2VcbiAgaWYgKGdyYXBoLnBhcmVudCA9PSBudWxsKSB7XG4gICAgZ3JhcGgucGFyZW50ID0gdGhpcy5sYXlvdXQubmV3Tm9kZShcIlJvb3Qgbm9kZVwiKTtcbiAgfVxufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0TGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sYXlvdXQ7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5pc09uZUFuY2VzdG9yT2ZPdGhlciA9IGZ1bmN0aW9uIChmaXJzdE5vZGUsIHNlY29uZE5vZGUpIHtcbiAgaWYgKCEoZmlyc3ROb2RlICE9IG51bGwgJiYgc2Vjb25kTm9kZSAhPSBudWxsKSkge1xuICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICB9XG5cbiAgaWYgKGZpcnN0Tm9kZSA9PSBzZWNvbmROb2RlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gSXMgc2Vjb25kIG5vZGUgYW4gYW5jZXN0b3Igb2YgdGhlIGZpcnN0IG9uZT9cbiAgdmFyIG93bmVyR3JhcGggPSBmaXJzdE5vZGUuZ2V0T3duZXIoKTtcbiAgdmFyIHBhcmVudE5vZGU7XG5cbiAgZG8ge1xuICAgIHBhcmVudE5vZGUgPSBvd25lckdyYXBoLmdldFBhcmVudCgpO1xuXG4gICAgaWYgKHBhcmVudE5vZGUgPT0gbnVsbCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKHBhcmVudE5vZGUgPT0gc2Vjb25kTm9kZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgb3duZXJHcmFwaCA9IHBhcmVudE5vZGUuZ2V0T3duZXIoKTtcbiAgICBpZiAob3duZXJHcmFwaCA9PSBudWxsKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH0gd2hpbGUgKHRydWUpO1xuICAvLyBJcyBmaXJzdCBub2RlIGFuIGFuY2VzdG9yIG9mIHRoZSBzZWNvbmQgb25lP1xuICBvd25lckdyYXBoID0gc2Vjb25kTm9kZS5nZXRPd25lcigpO1xuXG4gIGRvIHtcbiAgICBwYXJlbnROb2RlID0gb3duZXJHcmFwaC5nZXRQYXJlbnQoKTtcblxuICAgIGlmIChwYXJlbnROb2RlID09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChwYXJlbnROb2RlID09IGZpcnN0Tm9kZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgb3duZXJHcmFwaCA9IHBhcmVudE5vZGUuZ2V0T3duZXIoKTtcbiAgICBpZiAob3duZXJHcmFwaCA9PSBudWxsKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH0gd2hpbGUgKHRydWUpO1xuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmNhbGNMb3dlc3RDb21tb25BbmNlc3RvcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlZGdlO1xuICB2YXIgc291cmNlTm9kZTtcbiAgdmFyIHRhcmdldE5vZGU7XG4gIHZhciBzb3VyY2VBbmNlc3RvckdyYXBoO1xuICB2YXIgdGFyZ2V0QW5jZXN0b3JHcmFwaDtcblxuICB2YXIgZWRnZXMgPSB0aGlzLmdldEFsbEVkZ2VzKCk7XG4gIHZhciBzID0gZWRnZXMubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIGVkZ2UgPSBlZGdlc1tpXTtcblxuICAgIHNvdXJjZU5vZGUgPSBlZGdlLnNvdXJjZTtcbiAgICB0YXJnZXROb2RlID0gZWRnZS50YXJnZXQ7XG4gICAgZWRnZS5sY2EgPSBudWxsO1xuICAgIGVkZ2Uuc291cmNlSW5MY2EgPSBzb3VyY2VOb2RlO1xuICAgIGVkZ2UudGFyZ2V0SW5MY2EgPSB0YXJnZXROb2RlO1xuXG4gICAgaWYgKHNvdXJjZU5vZGUgPT0gdGFyZ2V0Tm9kZSkge1xuICAgICAgZWRnZS5sY2EgPSBzb3VyY2VOb2RlLmdldE93bmVyKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBzb3VyY2VBbmNlc3RvckdyYXBoID0gc291cmNlTm9kZS5nZXRPd25lcigpO1xuXG4gICAgd2hpbGUgKGVkZ2UubGNhID09IG51bGwpIHtcbiAgICAgIGVkZ2UudGFyZ2V0SW5MY2EgPSB0YXJnZXROb2RlO1xuICAgICAgdGFyZ2V0QW5jZXN0b3JHcmFwaCA9IHRhcmdldE5vZGUuZ2V0T3duZXIoKTtcblxuICAgICAgd2hpbGUgKGVkZ2UubGNhID09IG51bGwpIHtcbiAgICAgICAgaWYgKHRhcmdldEFuY2VzdG9yR3JhcGggPT0gc291cmNlQW5jZXN0b3JHcmFwaCkge1xuICAgICAgICAgIGVkZ2UubGNhID0gdGFyZ2V0QW5jZXN0b3JHcmFwaDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXRBbmNlc3RvckdyYXBoID09IHRoaXMucm9vdEdyYXBoKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZWRnZS5sY2EgIT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICAgICAgICB9XG4gICAgICAgIGVkZ2UudGFyZ2V0SW5MY2EgPSB0YXJnZXRBbmNlc3RvckdyYXBoLmdldFBhcmVudCgpO1xuICAgICAgICB0YXJnZXRBbmNlc3RvckdyYXBoID0gZWRnZS50YXJnZXRJbkxjYS5nZXRPd25lcigpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc291cmNlQW5jZXN0b3JHcmFwaCA9PSB0aGlzLnJvb3RHcmFwaCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGVkZ2UubGNhID09IG51bGwpIHtcbiAgICAgICAgZWRnZS5zb3VyY2VJbkxjYSA9IHNvdXJjZUFuY2VzdG9yR3JhcGguZ2V0UGFyZW50KCk7XG4gICAgICAgIHNvdXJjZUFuY2VzdG9yR3JhcGggPSBlZGdlLnNvdXJjZUluTGNhLmdldE93bmVyKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVkZ2UubGNhID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICAgIH1cbiAgfVxufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuY2FsY0xvd2VzdENvbW1vbkFuY2VzdG9yID0gZnVuY3Rpb24gKGZpcnN0Tm9kZSwgc2Vjb25kTm9kZSkge1xuICBpZiAoZmlyc3ROb2RlID09IHNlY29uZE5vZGUpIHtcbiAgICByZXR1cm4gZmlyc3ROb2RlLmdldE93bmVyKCk7XG4gIH1cbiAgdmFyIGZpcnN0T3duZXJHcmFwaCA9IGZpcnN0Tm9kZS5nZXRPd25lcigpO1xuXG4gIGRvIHtcbiAgICBpZiAoZmlyc3RPd25lckdyYXBoID09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgc2Vjb25kT3duZXJHcmFwaCA9IHNlY29uZE5vZGUuZ2V0T3duZXIoKTtcblxuICAgIGRvIHtcbiAgICAgIGlmIChzZWNvbmRPd25lckdyYXBoID09IG51bGwpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWNvbmRPd25lckdyYXBoID09IGZpcnN0T3duZXJHcmFwaCkge1xuICAgICAgICByZXR1cm4gc2Vjb25kT3duZXJHcmFwaDtcbiAgICAgIH1cbiAgICAgIHNlY29uZE93bmVyR3JhcGggPSBzZWNvbmRPd25lckdyYXBoLmdldFBhcmVudCgpLmdldE93bmVyKCk7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICBmaXJzdE93bmVyR3JhcGggPSBmaXJzdE93bmVyR3JhcGguZ2V0UGFyZW50KCkuZ2V0T3duZXIoKTtcbiAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgcmV0dXJuIGZpcnN0T3duZXJHcmFwaDtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmNhbGNJbmNsdXNpb25UcmVlRGVwdGhzID0gZnVuY3Rpb24gKGdyYXBoLCBkZXB0aCkge1xuICBpZiAoZ3JhcGggPT0gbnVsbCAmJiBkZXB0aCA9PSBudWxsKSB7XG4gICAgZ3JhcGggPSB0aGlzLnJvb3RHcmFwaDtcbiAgICBkZXB0aCA9IDE7XG4gIH1cbiAgdmFyIG5vZGU7XG5cbiAgdmFyIG5vZGVzID0gZ3JhcGguZ2V0Tm9kZXMoKTtcbiAgdmFyIHMgPSBub2Rlcy5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgIG5vZGUuaW5jbHVzaW9uVHJlZURlcHRoID0gZGVwdGg7XG5cbiAgICBpZiAobm9kZS5jaGlsZCAhPSBudWxsKSB7XG4gICAgICB0aGlzLmNhbGNJbmNsdXNpb25UcmVlRGVwdGhzKG5vZGUuY2hpbGQsIGRlcHRoICsgMSk7XG4gICAgfVxuICB9XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5pbmNsdWRlc0ludmFsaWRFZGdlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWRnZTtcblxuICB2YXIgcyA9IHRoaXMuZWRnZXMubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIGVkZ2UgPSB0aGlzLmVkZ2VzW2ldO1xuXG4gICAgaWYgKHRoaXMuaXNPbmVBbmNlc3Rvck9mT3RoZXIoZWRnZS5zb3VyY2UsIGVkZ2UudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTEdyYXBoTWFuYWdlcjtcblxuLyoqKi8gfSksXG4vKiA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5mdW5jdGlvbiBGRExheW91dENvbnN0YW50cygpIHt9XG5cbi8vRkRMYXlvdXRDb25zdGFudHMgaW5oZXJpdHMgc3RhdGljIHByb3BzIGluIExheW91dENvbnN0YW50c1xuZm9yICh2YXIgcHJvcCBpbiBMYXlvdXRDb25zdGFudHMpIHtcbiAgRkRMYXlvdXRDb25zdGFudHNbcHJvcF0gPSBMYXlvdXRDb25zdGFudHNbcHJvcF07XG59XG5cbkZETGF5b3V0Q29uc3RhbnRzLk1BWF9JVEVSQVRJT05TID0gMjUwMDtcblxuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSCA9IDUwO1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9TUFJJTkdfU1RSRU5HVEggPSAwLjQ1O1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9SRVBVTFNJT05fU1RSRU5HVEggPSA0NTAwLjA7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVZJVFlfU1RSRU5HVEggPSAwLjQ7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPTVBPVU5EX0dSQVZJVFlfU1RSRU5HVEggPSAxLjA7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVZJVFlfUkFOR0VfRkFDVE9SID0gMy44O1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DT01QT1VORF9HUkFWSVRZX1JBTkdFX0ZBQ1RPUiA9IDEuNTtcbkZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfVVNFX1NNQVJUX0lERUFMX0VER0VfTEVOR1RIX0NBTENVTEFUSU9OID0gdHJ1ZTtcbkZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfVVNFX1NNQVJUX1JFUFVMU0lPTl9SQU5HRV9DQUxDVUxBVElPTiA9IHRydWU7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPT0xJTkdfRkFDVE9SX0lOQ1JFTUVOVEFMID0gMC4zO1xuRkRMYXlvdXRDb25zdGFudHMuQ09PTElOR19BREFQVEFUSU9OX0ZBQ1RPUiA9IDAuMzM7XG5GRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX0xPV0VSX05PREVfTElNSVQgPSAxMDAwO1xuRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9VUFBFUl9OT0RFX0xJTUlUID0gNTAwMDtcbkZETGF5b3V0Q29uc3RhbnRzLk1BWF9OT0RFX0RJU1BMQUNFTUVOVF9JTkNSRU1FTlRBTCA9IDEwMC4wO1xuRkRMYXlvdXRDb25zdGFudHMuTUFYX05PREVfRElTUExBQ0VNRU5UID0gRkRMYXlvdXRDb25zdGFudHMuTUFYX05PREVfRElTUExBQ0VNRU5UX0lOQ1JFTUVOVEFMICogMztcbkZETGF5b3V0Q29uc3RhbnRzLk1JTl9SRVBVTFNJT05fRElTVCA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEggLyAxMC4wO1xuRkRMYXlvdXRDb25zdGFudHMuQ09OVkVSR0VOQ0VfQ0hFQ0tfUEVSSU9EID0gMTAwO1xuRkRMYXlvdXRDb25zdGFudHMuUEVSX0xFVkVMX0lERUFMX0VER0VfTEVOR1RIX0ZBQ1RPUiA9IDAuMTtcbkZETGF5b3V0Q29uc3RhbnRzLk1JTl9FREdFX0xFTkdUSCA9IDE7XG5GRExheW91dENvbnN0YW50cy5HUklEX0NBTENVTEFUSU9OX0NIRUNLX1BFUklPRCA9IDEwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZETGF5b3V0Q29uc3RhbnRzO1xuXG4vKioqLyB9KSxcbi8qIDggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLyoqXG4gKiBUaGlzIGNsYXNzIG1haW50YWlucyBhIGxpc3Qgb2Ygc3RhdGljIGdlb21ldHJ5IHJlbGF0ZWQgdXRpbGl0eSBtZXRob2RzLlxuICpcbiAqXG4gKiBDb3B5cmlnaHQ6IGktVmlzIFJlc2VhcmNoIEdyb3VwLCBCaWxrZW50IFVuaXZlcnNpdHksIDIwMDcgLSBwcmVzZW50XG4gKi9cblxudmFyIFBvaW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5cbmZ1bmN0aW9uIElHZW9tZXRyeSgpIHt9XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2FsY3VsYXRlcyAqaGFsZiogdGhlIGFtb3VudCBpbiB4IGFuZCB5IGRpcmVjdGlvbnMgb2YgdGhlIHR3b1xuICogaW5wdXQgcmVjdGFuZ2xlcyBuZWVkZWQgdG8gc2VwYXJhdGUgdGhlbSBrZWVwaW5nIHRoZWlyIHJlc3BlY3RpdmVcbiAqIHBvc2l0aW9uaW5nLCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGluIHRoZSBpbnB1dCBhcnJheS4gQW4gaW5wdXRcbiAqIHNlcGFyYXRpb24gYnVmZmVyIGFkZGVkIHRvIHRoZSBhbW91bnQgaW4gYm90aCBkaXJlY3Rpb25zLiBXZSBhc3N1bWUgdGhhdFxuICogdGhlIHR3byByZWN0YW5nbGVzIGRvIGludGVyc2VjdC5cbiAqL1xuSUdlb21ldHJ5LmNhbGNTZXBhcmF0aW9uQW1vdW50ID0gZnVuY3Rpb24gKHJlY3RBLCByZWN0Qiwgb3ZlcmxhcEFtb3VudCwgc2VwYXJhdGlvbkJ1ZmZlcikge1xuICBpZiAoIXJlY3RBLmludGVyc2VjdHMocmVjdEIpKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cblxuICB2YXIgZGlyZWN0aW9ucyA9IG5ldyBBcnJheSgyKTtcblxuICB0aGlzLmRlY2lkZURpcmVjdGlvbnNGb3JPdmVybGFwcGluZ05vZGVzKHJlY3RBLCByZWN0QiwgZGlyZWN0aW9ucyk7XG5cbiAgb3ZlcmxhcEFtb3VudFswXSA9IE1hdGgubWluKHJlY3RBLmdldFJpZ2h0KCksIHJlY3RCLmdldFJpZ2h0KCkpIC0gTWF0aC5tYXgocmVjdEEueCwgcmVjdEIueCk7XG4gIG92ZXJsYXBBbW91bnRbMV0gPSBNYXRoLm1pbihyZWN0QS5nZXRCb3R0b20oKSwgcmVjdEIuZ2V0Qm90dG9tKCkpIC0gTWF0aC5tYXgocmVjdEEueSwgcmVjdEIueSk7XG5cbiAgLy8gdXBkYXRlIHRoZSBvdmVybGFwcGluZyBhbW91bnRzIGZvciB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICBpZiAocmVjdEEuZ2V0WCgpIDw9IHJlY3RCLmdldFgoKSAmJiByZWN0QS5nZXRSaWdodCgpID49IHJlY3RCLmdldFJpZ2h0KCkpIHtcbiAgICAvKiBDYXNlIHguMTpcbiAgICAqXG4gICAgKiByZWN0QVxuICAgICogXHR8ICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgKiBcdHwgICAgICAgIF9fX19fX19fXyAgICAgIHxcbiAgICAqIFx0fCAgICAgICAgfCAgICAgICB8ICAgICAgfFxuICAgICogXHR8X19fX19fX198X19fX19fX3xfX19fX198XG4gICAgKiBcdFx0XHQgfCAgICAgICB8XG4gICAgKiAgICAgICAgICAgfCAgICAgICB8XG4gICAgKiAgICAgICAgcmVjdEJcbiAgICAqL1xuICAgIG92ZXJsYXBBbW91bnRbMF0gKz0gTWF0aC5taW4ocmVjdEIuZ2V0WCgpIC0gcmVjdEEuZ2V0WCgpLCByZWN0QS5nZXRSaWdodCgpIC0gcmVjdEIuZ2V0UmlnaHQoKSk7XG4gIH0gZWxzZSBpZiAocmVjdEIuZ2V0WCgpIDw9IHJlY3RBLmdldFgoKSAmJiByZWN0Qi5nZXRSaWdodCgpID49IHJlY3RBLmdldFJpZ2h0KCkpIHtcbiAgICAvKiBDYXNlIHguMjpcbiAgICAqXG4gICAgKiByZWN0QlxuICAgICogXHR8ICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgKiBcdHwgICAgICAgIF9fX19fX19fXyAgICAgIHxcbiAgICAqIFx0fCAgICAgICAgfCAgICAgICB8ICAgICAgfFxuICAgICogXHR8X19fX19fX198X19fX19fX3xfX19fX198XG4gICAgKiBcdFx0XHQgfCAgICAgICB8XG4gICAgKiAgICAgICAgICAgfCAgICAgICB8XG4gICAgKiAgICAgICAgcmVjdEFcbiAgICAqL1xuICAgIG92ZXJsYXBBbW91bnRbMF0gKz0gTWF0aC5taW4ocmVjdEEuZ2V0WCgpIC0gcmVjdEIuZ2V0WCgpLCByZWN0Qi5nZXRSaWdodCgpIC0gcmVjdEEuZ2V0UmlnaHQoKSk7XG4gIH1cbiAgaWYgKHJlY3RBLmdldFkoKSA8PSByZWN0Qi5nZXRZKCkgJiYgcmVjdEEuZ2V0Qm90dG9tKCkgPj0gcmVjdEIuZ2V0Qm90dG9tKCkpIHtcbiAgICAvKiBDYXNlIHkuMTpcbiAgICAgKiAgICAgICAgICBfX19fX19fXyByZWN0QVxuICAgICAqICAgICAgICAgfFxuICAgICAqICAgICAgICAgfFxuICAgICAqICAgX19fX19ffF9fX18gIHJlY3RCXG4gICAgICogICAgICAgICB8ICAgIHxcbiAgICAgKiAgICAgICAgIHwgICAgfFxuICAgICAqICAgX19fX19ffF9fX198XG4gICAgICogICAgICAgICB8XG4gICAgICogICAgICAgICB8XG4gICAgICogICAgICAgICB8X19fX19fX19cbiAgICAgKlxuICAgICAqL1xuICAgIG92ZXJsYXBBbW91bnRbMV0gKz0gTWF0aC5taW4ocmVjdEIuZ2V0WSgpIC0gcmVjdEEuZ2V0WSgpLCByZWN0QS5nZXRCb3R0b20oKSAtIHJlY3RCLmdldEJvdHRvbSgpKTtcbiAgfSBlbHNlIGlmIChyZWN0Qi5nZXRZKCkgPD0gcmVjdEEuZ2V0WSgpICYmIHJlY3RCLmdldEJvdHRvbSgpID49IHJlY3RBLmdldEJvdHRvbSgpKSB7XG4gICAgLyogQ2FzZSB5LjI6XG4gICAgKiAgICAgICAgICBfX19fX19fXyByZWN0QlxuICAgICogICAgICAgICB8XG4gICAgKiAgICAgICAgIHxcbiAgICAqICAgX19fX19ffF9fX18gIHJlY3RBXG4gICAgKiAgICAgICAgIHwgICAgfFxuICAgICogICAgICAgICB8ICAgIHxcbiAgICAqICAgX19fX19ffF9fX198XG4gICAgKiAgICAgICAgIHxcbiAgICAqICAgICAgICAgfFxuICAgICogICAgICAgICB8X19fX19fX19cbiAgICAqXG4gICAgKi9cbiAgICBvdmVybGFwQW1vdW50WzFdICs9IE1hdGgubWluKHJlY3RBLmdldFkoKSAtIHJlY3RCLmdldFkoKSwgcmVjdEIuZ2V0Qm90dG9tKCkgLSByZWN0QS5nZXRCb3R0b20oKSk7XG4gIH1cblxuICAvLyBmaW5kIHNsb3BlIG9mIHRoZSBsaW5lIHBhc3NlcyB0d28gY2VudGVyc1xuICB2YXIgc2xvcGUgPSBNYXRoLmFicygocmVjdEIuZ2V0Q2VudGVyWSgpIC0gcmVjdEEuZ2V0Q2VudGVyWSgpKSAvIChyZWN0Qi5nZXRDZW50ZXJYKCkgLSByZWN0QS5nZXRDZW50ZXJYKCkpKTtcbiAgLy8gaWYgY2VudGVycyBhcmUgb3ZlcmxhcHBlZFxuICBpZiAocmVjdEIuZ2V0Q2VudGVyWSgpID09PSByZWN0QS5nZXRDZW50ZXJZKCkgJiYgcmVjdEIuZ2V0Q2VudGVyWCgpID09PSByZWN0QS5nZXRDZW50ZXJYKCkpIHtcbiAgICAvLyBhc3N1bWUgdGhlIHNsb3BlIGlzIDEgKDQ1IGRlZ3JlZSlcbiAgICBzbG9wZSA9IDEuMDtcbiAgfVxuXG4gIHZhciBtb3ZlQnlZID0gc2xvcGUgKiBvdmVybGFwQW1vdW50WzBdO1xuICB2YXIgbW92ZUJ5WCA9IG92ZXJsYXBBbW91bnRbMV0gLyBzbG9wZTtcbiAgaWYgKG92ZXJsYXBBbW91bnRbMF0gPCBtb3ZlQnlYKSB7XG4gICAgbW92ZUJ5WCA9IG92ZXJsYXBBbW91bnRbMF07XG4gIH0gZWxzZSB7XG4gICAgbW92ZUJ5WSA9IG92ZXJsYXBBbW91bnRbMV07XG4gIH1cbiAgLy8gcmV0dXJuIGhhbGYgdGhlIGFtb3VudCBzbyB0aGF0IGlmIGVhY2ggcmVjdGFuZ2xlIGlzIG1vdmVkIGJ5IHRoZXNlXG4gIC8vIGFtb3VudHMgaW4gb3Bwb3NpdGUgZGlyZWN0aW9ucywgb3ZlcmxhcCB3aWxsIGJlIHJlc29sdmVkXG4gIG92ZXJsYXBBbW91bnRbMF0gPSAtMSAqIGRpcmVjdGlvbnNbMF0gKiAobW92ZUJ5WCAvIDIgKyBzZXBhcmF0aW9uQnVmZmVyKTtcbiAgb3ZlcmxhcEFtb3VudFsxXSA9IC0xICogZGlyZWN0aW9uc1sxXSAqIChtb3ZlQnlZIC8gMiArIHNlcGFyYXRpb25CdWZmZXIpO1xufTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBkZWNpZGVzIHRoZSBzZXBhcmF0aW9uIGRpcmVjdGlvbiBvZiBvdmVybGFwcGluZyBub2Rlc1xuICpcbiAqIGlmIGRpcmVjdGlvbnNbMF0gPSAtMSwgdGhlbiByZWN0QSBnb2VzIGxlZnRcbiAqIGlmIGRpcmVjdGlvbnNbMF0gPSAxLCAgdGhlbiByZWN0QSBnb2VzIHJpZ2h0XG4gKiBpZiBkaXJlY3Rpb25zWzFdID0gLTEsIHRoZW4gcmVjdEEgZ29lcyB1cFxuICogaWYgZGlyZWN0aW9uc1sxXSA9IDEsICB0aGVuIHJlY3RBIGdvZXMgZG93blxuICovXG5JR2VvbWV0cnkuZGVjaWRlRGlyZWN0aW9uc0Zvck92ZXJsYXBwaW5nTm9kZXMgPSBmdW5jdGlvbiAocmVjdEEsIHJlY3RCLCBkaXJlY3Rpb25zKSB7XG4gIGlmIChyZWN0QS5nZXRDZW50ZXJYKCkgPCByZWN0Qi5nZXRDZW50ZXJYKCkpIHtcbiAgICBkaXJlY3Rpb25zWzBdID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgZGlyZWN0aW9uc1swXSA9IDE7XG4gIH1cblxuICBpZiAocmVjdEEuZ2V0Q2VudGVyWSgpIDwgcmVjdEIuZ2V0Q2VudGVyWSgpKSB7XG4gICAgZGlyZWN0aW9uc1sxXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIGRpcmVjdGlvbnNbMV0gPSAxO1xuICB9XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGNhbGN1bGF0ZXMgdGhlIGludGVyc2VjdGlvbiAoY2xpcHBpbmcpIHBvaW50cyBvZiB0aGUgdHdvXG4gKiBpbnB1dCByZWN0YW5nbGVzIHdpdGggbGluZSBzZWdtZW50IGRlZmluZWQgYnkgdGhlIGNlbnRlcnMgb2YgdGhlc2UgdHdvXG4gKiByZWN0YW5nbGVzLiBUaGUgY2xpcHBpbmcgcG9pbnRzIGFyZSBzYXZlZCBpbiB0aGUgaW5wdXQgZG91YmxlIGFycmF5IGFuZFxuICogd2hldGhlciBvciBub3QgdGhlIHR3byByZWN0YW5nbGVzIG92ZXJsYXAgaXMgcmV0dXJuZWQuXG4gKi9cbklHZW9tZXRyeS5nZXRJbnRlcnNlY3Rpb24yID0gZnVuY3Rpb24gKHJlY3RBLCByZWN0QiwgcmVzdWx0KSB7XG4gIC8vcmVzdWx0WzAtMV0gd2lsbCBjb250YWluIGNsaXBQb2ludCBvZiByZWN0QSwgcmVzdWx0WzItM10gd2lsbCBjb250YWluIGNsaXBQb2ludCBvZiByZWN0QlxuICB2YXIgcDF4ID0gcmVjdEEuZ2V0Q2VudGVyWCgpO1xuICB2YXIgcDF5ID0gcmVjdEEuZ2V0Q2VudGVyWSgpO1xuICB2YXIgcDJ4ID0gcmVjdEIuZ2V0Q2VudGVyWCgpO1xuICB2YXIgcDJ5ID0gcmVjdEIuZ2V0Q2VudGVyWSgpO1xuXG4gIC8vaWYgdHdvIHJlY3RhbmdsZXMgaW50ZXJzZWN0LCB0aGVuIGNsaXBwaW5nIHBvaW50cyBhcmUgY2VudGVyc1xuICBpZiAocmVjdEEuaW50ZXJzZWN0cyhyZWN0QikpIHtcbiAgICByZXN1bHRbMF0gPSBwMXg7XG4gICAgcmVzdWx0WzFdID0gcDF5O1xuICAgIHJlc3VsdFsyXSA9IHAyeDtcbiAgICByZXN1bHRbM10gPSBwMnk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy92YXJpYWJsZXMgZm9yIHJlY3RBXG4gIHZhciB0b3BMZWZ0QXggPSByZWN0QS5nZXRYKCk7XG4gIHZhciB0b3BMZWZ0QXkgPSByZWN0QS5nZXRZKCk7XG4gIHZhciB0b3BSaWdodEF4ID0gcmVjdEEuZ2V0UmlnaHQoKTtcbiAgdmFyIGJvdHRvbUxlZnRBeCA9IHJlY3RBLmdldFgoKTtcbiAgdmFyIGJvdHRvbUxlZnRBeSA9IHJlY3RBLmdldEJvdHRvbSgpO1xuICB2YXIgYm90dG9tUmlnaHRBeCA9IHJlY3RBLmdldFJpZ2h0KCk7XG4gIHZhciBoYWxmV2lkdGhBID0gcmVjdEEuZ2V0V2lkdGhIYWxmKCk7XG4gIHZhciBoYWxmSGVpZ2h0QSA9IHJlY3RBLmdldEhlaWdodEhhbGYoKTtcbiAgLy92YXJpYWJsZXMgZm9yIHJlY3RCXG4gIHZhciB0b3BMZWZ0QnggPSByZWN0Qi5nZXRYKCk7XG4gIHZhciB0b3BMZWZ0QnkgPSByZWN0Qi5nZXRZKCk7XG4gIHZhciB0b3BSaWdodEJ4ID0gcmVjdEIuZ2V0UmlnaHQoKTtcbiAgdmFyIGJvdHRvbUxlZnRCeCA9IHJlY3RCLmdldFgoKTtcbiAgdmFyIGJvdHRvbUxlZnRCeSA9IHJlY3RCLmdldEJvdHRvbSgpO1xuICB2YXIgYm90dG9tUmlnaHRCeCA9IHJlY3RCLmdldFJpZ2h0KCk7XG4gIHZhciBoYWxmV2lkdGhCID0gcmVjdEIuZ2V0V2lkdGhIYWxmKCk7XG4gIHZhciBoYWxmSGVpZ2h0QiA9IHJlY3RCLmdldEhlaWdodEhhbGYoKTtcblxuICAvL2ZsYWcgd2hldGhlciBjbGlwcGluZyBwb2ludHMgYXJlIGZvdW5kXG4gIHZhciBjbGlwUG9pbnRBRm91bmQgPSBmYWxzZTtcbiAgdmFyIGNsaXBQb2ludEJGb3VuZCA9IGZhbHNlO1xuXG4gIC8vIGxpbmUgaXMgdmVydGljYWxcbiAgaWYgKHAxeCA9PT0gcDJ4KSB7XG4gICAgaWYgKHAxeSA+IHAyeSkge1xuICAgICAgcmVzdWx0WzBdID0gcDF4O1xuICAgICAgcmVzdWx0WzFdID0gdG9wTGVmdEF5O1xuICAgICAgcmVzdWx0WzJdID0gcDJ4O1xuICAgICAgcmVzdWx0WzNdID0gYm90dG9tTGVmdEJ5O1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAocDF5IDwgcDJ5KSB7XG4gICAgICByZXN1bHRbMF0gPSBwMXg7XG4gICAgICByZXN1bHRbMV0gPSBib3R0b21MZWZ0QXk7XG4gICAgICByZXN1bHRbMl0gPSBwMng7XG4gICAgICByZXN1bHRbM10gPSB0b3BMZWZ0Qnk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vbm90IGxpbmUsIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICAvLyBsaW5lIGlzIGhvcml6b250YWxcbiAgZWxzZSBpZiAocDF5ID09PSBwMnkpIHtcbiAgICAgIGlmIChwMXggPiBwMngpIHtcbiAgICAgICAgcmVzdWx0WzBdID0gdG9wTGVmdEF4O1xuICAgICAgICByZXN1bHRbMV0gPSBwMXk7XG4gICAgICAgIHJlc3VsdFsyXSA9IHRvcFJpZ2h0Qng7XG4gICAgICAgIHJlc3VsdFszXSA9IHAyeTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChwMXggPCBwMngpIHtcbiAgICAgICAgcmVzdWx0WzBdID0gdG9wUmlnaHRBeDtcbiAgICAgICAgcmVzdWx0WzFdID0gcDF5O1xuICAgICAgICByZXN1bHRbMl0gPSB0b3BMZWZ0Qng7XG4gICAgICAgIHJlc3VsdFszXSA9IHAyeTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy9ub3QgdmFsaWQgbGluZSwgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vc2xvcGVzIG9mIHJlY3RBJ3MgYW5kIHJlY3RCJ3MgZGlhZ29uYWxzXG4gICAgICB2YXIgc2xvcGVBID0gcmVjdEEuaGVpZ2h0IC8gcmVjdEEud2lkdGg7XG4gICAgICB2YXIgc2xvcGVCID0gcmVjdEIuaGVpZ2h0IC8gcmVjdEIud2lkdGg7XG5cbiAgICAgIC8vc2xvcGUgb2YgbGluZSBiZXR3ZWVuIGNlbnRlciBvZiByZWN0QSBhbmQgY2VudGVyIG9mIHJlY3RCXG4gICAgICB2YXIgc2xvcGVQcmltZSA9IChwMnkgLSBwMXkpIC8gKHAyeCAtIHAxeCk7XG4gICAgICB2YXIgY2FyZGluYWxEaXJlY3Rpb25BID0gdm9pZCAwO1xuICAgICAgdmFyIGNhcmRpbmFsRGlyZWN0aW9uQiA9IHZvaWQgMDtcbiAgICAgIHZhciB0ZW1wUG9pbnRBeCA9IHZvaWQgMDtcbiAgICAgIHZhciB0ZW1wUG9pbnRBeSA9IHZvaWQgMDtcbiAgICAgIHZhciB0ZW1wUG9pbnRCeCA9IHZvaWQgMDtcbiAgICAgIHZhciB0ZW1wUG9pbnRCeSA9IHZvaWQgMDtcblxuICAgICAgLy9kZXRlcm1pbmUgd2hldGhlciBjbGlwcGluZyBwb2ludCBpcyB0aGUgY29ybmVyIG9mIG5vZGVBXG4gICAgICBpZiAoLXNsb3BlQSA9PT0gc2xvcGVQcmltZSkge1xuICAgICAgICBpZiAocDF4ID4gcDJ4KSB7XG4gICAgICAgICAgcmVzdWx0WzBdID0gYm90dG9tTGVmdEF4O1xuICAgICAgICAgIHJlc3VsdFsxXSA9IGJvdHRvbUxlZnRBeTtcbiAgICAgICAgICBjbGlwUG9pbnRBRm91bmQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFswXSA9IHRvcFJpZ2h0QXg7XG4gICAgICAgICAgcmVzdWx0WzFdID0gdG9wTGVmdEF5O1xuICAgICAgICAgIGNsaXBQb2ludEFGb3VuZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoc2xvcGVBID09PSBzbG9wZVByaW1lKSB7XG4gICAgICAgIGlmIChwMXggPiBwMngpIHtcbiAgICAgICAgICByZXN1bHRbMF0gPSB0b3BMZWZ0QXg7XG4gICAgICAgICAgcmVzdWx0WzFdID0gdG9wTGVmdEF5O1xuICAgICAgICAgIGNsaXBQb2ludEFGb3VuZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0WzBdID0gYm90dG9tUmlnaHRBeDtcbiAgICAgICAgICByZXN1bHRbMV0gPSBib3R0b21MZWZ0QXk7XG4gICAgICAgICAgY2xpcFBvaW50QUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvL2RldGVybWluZSB3aGV0aGVyIGNsaXBwaW5nIHBvaW50IGlzIHRoZSBjb3JuZXIgb2Ygbm9kZUJcbiAgICAgIGlmICgtc2xvcGVCID09PSBzbG9wZVByaW1lKSB7XG4gICAgICAgIGlmIChwMnggPiBwMXgpIHtcbiAgICAgICAgICByZXN1bHRbMl0gPSBib3R0b21MZWZ0Qng7XG4gICAgICAgICAgcmVzdWx0WzNdID0gYm90dG9tTGVmdEJ5O1xuICAgICAgICAgIGNsaXBQb2ludEJGb3VuZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0WzJdID0gdG9wUmlnaHRCeDtcbiAgICAgICAgICByZXN1bHRbM10gPSB0b3BMZWZ0Qnk7XG4gICAgICAgICAgY2xpcFBvaW50QkZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzbG9wZUIgPT09IHNsb3BlUHJpbWUpIHtcbiAgICAgICAgaWYgKHAyeCA+IHAxeCkge1xuICAgICAgICAgIHJlc3VsdFsyXSA9IHRvcExlZnRCeDtcbiAgICAgICAgICByZXN1bHRbM10gPSB0b3BMZWZ0Qnk7XG4gICAgICAgICAgY2xpcFBvaW50QkZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRbMl0gPSBib3R0b21SaWdodEJ4O1xuICAgICAgICAgIHJlc3VsdFszXSA9IGJvdHRvbUxlZnRCeTtcbiAgICAgICAgICBjbGlwUG9pbnRCRm91bmQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vaWYgYm90aCBjbGlwcGluZyBwb2ludHMgYXJlIGNvcm5lcnNcbiAgICAgIGlmIChjbGlwUG9pbnRBRm91bmQgJiYgY2xpcFBvaW50QkZvdW5kKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy9kZXRlcm1pbmUgQ2FyZGluYWwgRGlyZWN0aW9uIG9mIHJlY3RhbmdsZXNcbiAgICAgIGlmIChwMXggPiBwMngpIHtcbiAgICAgICAgaWYgKHAxeSA+IHAyeSkge1xuICAgICAgICAgIGNhcmRpbmFsRGlyZWN0aW9uQSA9IHRoaXMuZ2V0Q2FyZGluYWxEaXJlY3Rpb24oc2xvcGVBLCBzbG9wZVByaW1lLCA0KTtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkIgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKHNsb3BlQiwgc2xvcGVQcmltZSwgMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2FyZGluYWxEaXJlY3Rpb25BID0gdGhpcy5nZXRDYXJkaW5hbERpcmVjdGlvbigtc2xvcGVBLCBzbG9wZVByaW1lLCAzKTtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkIgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKC1zbG9wZUIsIHNsb3BlUHJpbWUsIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocDF5ID4gcDJ5KSB7XG4gICAgICAgICAgY2FyZGluYWxEaXJlY3Rpb25BID0gdGhpcy5nZXRDYXJkaW5hbERpcmVjdGlvbigtc2xvcGVBLCBzbG9wZVByaW1lLCAxKTtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkIgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKC1zbG9wZUIsIHNsb3BlUHJpbWUsIDMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhcmRpbmFsRGlyZWN0aW9uQSA9IHRoaXMuZ2V0Q2FyZGluYWxEaXJlY3Rpb24oc2xvcGVBLCBzbG9wZVByaW1lLCAyKTtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkIgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKHNsb3BlQiwgc2xvcGVQcmltZSwgNCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vY2FsY3VsYXRlIGNsaXBwaW5nIFBvaW50IGlmIGl0IGlzIG5vdCBmb3VuZCBiZWZvcmVcbiAgICAgIGlmICghY2xpcFBvaW50QUZvdW5kKSB7XG4gICAgICAgIHN3aXRjaCAoY2FyZGluYWxEaXJlY3Rpb25BKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgdGVtcFBvaW50QXkgPSB0b3BMZWZ0QXk7XG4gICAgICAgICAgICB0ZW1wUG9pbnRBeCA9IHAxeCArIC1oYWxmSGVpZ2h0QSAvIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMF0gPSB0ZW1wUG9pbnRBeDtcbiAgICAgICAgICAgIHJlc3VsdFsxXSA9IHRlbXBQb2ludEF5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGVtcFBvaW50QXggPSBib3R0b21SaWdodEF4O1xuICAgICAgICAgICAgdGVtcFBvaW50QXkgPSBwMXkgKyBoYWxmV2lkdGhBICogc2xvcGVQcmltZTtcbiAgICAgICAgICAgIHJlc3VsdFswXSA9IHRlbXBQb2ludEF4O1xuICAgICAgICAgICAgcmVzdWx0WzFdID0gdGVtcFBvaW50QXk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICB0ZW1wUG9pbnRBeSA9IGJvdHRvbUxlZnRBeTtcbiAgICAgICAgICAgIHRlbXBQb2ludEF4ID0gcDF4ICsgaGFsZkhlaWdodEEgLyBzbG9wZVByaW1lO1xuICAgICAgICAgICAgcmVzdWx0WzBdID0gdGVtcFBvaW50QXg7XG4gICAgICAgICAgICByZXN1bHRbMV0gPSB0ZW1wUG9pbnRBeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHRlbXBQb2ludEF4ID0gYm90dG9tTGVmdEF4O1xuICAgICAgICAgICAgdGVtcFBvaW50QXkgPSBwMXkgKyAtaGFsZldpZHRoQSAqIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMF0gPSB0ZW1wUG9pbnRBeDtcbiAgICAgICAgICAgIHJlc3VsdFsxXSA9IHRlbXBQb2ludEF5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghY2xpcFBvaW50QkZvdW5kKSB7XG4gICAgICAgIHN3aXRjaCAoY2FyZGluYWxEaXJlY3Rpb25CKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgdGVtcFBvaW50QnkgPSB0b3BMZWZ0Qnk7XG4gICAgICAgICAgICB0ZW1wUG9pbnRCeCA9IHAyeCArIC1oYWxmSGVpZ2h0QiAvIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMl0gPSB0ZW1wUG9pbnRCeDtcbiAgICAgICAgICAgIHJlc3VsdFszXSA9IHRlbXBQb2ludEJ5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGVtcFBvaW50QnggPSBib3R0b21SaWdodEJ4O1xuICAgICAgICAgICAgdGVtcFBvaW50QnkgPSBwMnkgKyBoYWxmV2lkdGhCICogc2xvcGVQcmltZTtcbiAgICAgICAgICAgIHJlc3VsdFsyXSA9IHRlbXBQb2ludEJ4O1xuICAgICAgICAgICAgcmVzdWx0WzNdID0gdGVtcFBvaW50Qnk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICB0ZW1wUG9pbnRCeSA9IGJvdHRvbUxlZnRCeTtcbiAgICAgICAgICAgIHRlbXBQb2ludEJ4ID0gcDJ4ICsgaGFsZkhlaWdodEIgLyBzbG9wZVByaW1lO1xuICAgICAgICAgICAgcmVzdWx0WzJdID0gdGVtcFBvaW50Qng7XG4gICAgICAgICAgICByZXN1bHRbM10gPSB0ZW1wUG9pbnRCeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHRlbXBQb2ludEJ4ID0gYm90dG9tTGVmdEJ4O1xuICAgICAgICAgICAgdGVtcFBvaW50QnkgPSBwMnkgKyAtaGFsZldpZHRoQiAqIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMl0gPSB0ZW1wUG9pbnRCeDtcbiAgICAgICAgICAgIHJlc3VsdFszXSA9IHRlbXBQb2ludEJ5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBpbiB3aGljaCBjYXJkaW5hbCBkaXJlY3Rpb24gZG9lcyBpbnB1dCBwb2ludCBzdGF5c1xuICogMTogTm9ydGhcbiAqIDI6IEVhc3RcbiAqIDM6IFNvdXRoXG4gKiA0OiBXZXN0XG4gKi9cbklHZW9tZXRyeS5nZXRDYXJkaW5hbERpcmVjdGlvbiA9IGZ1bmN0aW9uIChzbG9wZSwgc2xvcGVQcmltZSwgbGluZSkge1xuICBpZiAoc2xvcGUgPiBzbG9wZVByaW1lKSB7XG4gICAgcmV0dXJuIGxpbmU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDEgKyBsaW5lICUgNDtcbiAgfVxufTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBjYWxjdWxhdGVzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHR3byBsaW5lcyBkZWZpbmVkIGJ5XG4gKiBwb2ludCBwYWlycyAoczEsczIpIGFuZCAoZjEsZjIpLlxuICovXG5JR2VvbWV0cnkuZ2V0SW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHMxLCBzMiwgZjEsIGYyKSB7XG4gIGlmIChmMiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SW50ZXJzZWN0aW9uMihzMSwgczIsIGYxKTtcbiAgfVxuXG4gIHZhciB4MSA9IHMxLng7XG4gIHZhciB5MSA9IHMxLnk7XG4gIHZhciB4MiA9IHMyLng7XG4gIHZhciB5MiA9IHMyLnk7XG4gIHZhciB4MyA9IGYxLng7XG4gIHZhciB5MyA9IGYxLnk7XG4gIHZhciB4NCA9IGYyLng7XG4gIHZhciB5NCA9IGYyLnk7XG4gIHZhciB4ID0gdm9pZCAwLFxuICAgICAgeSA9IHZvaWQgMDsgLy8gaW50ZXJzZWN0aW9uIHBvaW50XG4gIHZhciBhMSA9IHZvaWQgMCxcbiAgICAgIGEyID0gdm9pZCAwLFxuICAgICAgYjEgPSB2b2lkIDAsXG4gICAgICBiMiA9IHZvaWQgMCxcbiAgICAgIGMxID0gdm9pZCAwLFxuICAgICAgYzIgPSB2b2lkIDA7IC8vIGNvZWZmaWNpZW50cyBvZiBsaW5lIGVxbnMuXG4gIHZhciBkZW5vbSA9IHZvaWQgMDtcblxuICBhMSA9IHkyIC0geTE7XG4gIGIxID0geDEgLSB4MjtcbiAgYzEgPSB4MiAqIHkxIC0geDEgKiB5MjsgLy8geyBhMSp4ICsgYjEqeSArIGMxID0gMCBpcyBsaW5lIDEgfVxuXG4gIGEyID0geTQgLSB5MztcbiAgYjIgPSB4MyAtIHg0O1xuICBjMiA9IHg0ICogeTMgLSB4MyAqIHk0OyAvLyB7IGEyKnggKyBiMip5ICsgYzIgPSAwIGlzIGxpbmUgMiB9XG5cbiAgZGVub20gPSBhMSAqIGIyIC0gYTIgKiBiMTtcblxuICBpZiAoZGVub20gPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHggPSAoYjEgKiBjMiAtIGIyICogYzEpIC8gZGVub207XG4gIHkgPSAoYTIgKiBjMSAtIGExICogYzIpIC8gZGVub207XG5cbiAgcmV0dXJuIG5ldyBQb2ludCh4LCB5KTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgZmluZHMgYW5kIHJldHVybnMgdGhlIGFuZ2xlIG9mIHRoZSB2ZWN0b3IgZnJvbSB0aGUgKyB4LWF4aXNcbiAqIGluIGNsb2Nrd2lzZSBkaXJlY3Rpb24gKGNvbXBhdGlibGUgdy8gSmF2YSBjb29yZGluYXRlIHN5c3RlbSEpLlxuICovXG5JR2VvbWV0cnkuYW5nbGVPZlZlY3RvciA9IGZ1bmN0aW9uIChDeCwgQ3ksIE54LCBOeSkge1xuICB2YXIgQ19hbmdsZSA9IHZvaWQgMDtcblxuICBpZiAoQ3ggIT09IE54KSB7XG4gICAgQ19hbmdsZSA9IE1hdGguYXRhbigoTnkgLSBDeSkgLyAoTnggLSBDeCkpO1xuXG4gICAgaWYgKE54IDwgQ3gpIHtcbiAgICAgIENfYW5nbGUgKz0gTWF0aC5QSTtcbiAgICB9IGVsc2UgaWYgKE55IDwgQ3kpIHtcbiAgICAgIENfYW5nbGUgKz0gdGhpcy5UV09fUEk7XG4gICAgfVxuICB9IGVsc2UgaWYgKE55IDwgQ3kpIHtcbiAgICBDX2FuZ2xlID0gdGhpcy5PTkVfQU5EX0hBTEZfUEk7IC8vIDI3MCBkZWdyZWVzXG4gIH0gZWxzZSB7XG4gICAgQ19hbmdsZSA9IHRoaXMuSEFMRl9QSTsgLy8gOTAgZGVncmVlc1xuICB9XG5cbiAgcmV0dXJuIENfYW5nbGU7XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGNoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiB0d28gbGluZSBzZWdtZW50cyAob25lIHdpdGggcG9pbnRcbiAqIHAxIGFuZCBwMiwgdGhlIG90aGVyIHdpdGggcG9pbnQgcDMgYW5kIHA0KSBpbnRlcnNlY3QgYXQgYSBwb2ludCBvdGhlclxuICogdGhhbiB0aGVzZSBwb2ludHMuXG4gKi9cbklHZW9tZXRyeS5kb0ludGVyc2VjdCA9IGZ1bmN0aW9uIChwMSwgcDIsIHAzLCBwNCkge1xuICB2YXIgYSA9IHAxLng7XG4gIHZhciBiID0gcDEueTtcbiAgdmFyIGMgPSBwMi54O1xuICB2YXIgZCA9IHAyLnk7XG4gIHZhciBwID0gcDMueDtcbiAgdmFyIHEgPSBwMy55O1xuICB2YXIgciA9IHA0Lng7XG4gIHZhciBzID0gcDQueTtcbiAgdmFyIGRldCA9IChjIC0gYSkgKiAocyAtIHEpIC0gKHIgLSBwKSAqIChkIC0gYik7XG5cbiAgaWYgKGRldCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbGFtYmRhID0gKChzIC0gcSkgKiAociAtIGEpICsgKHAgLSByKSAqIChzIC0gYikpIC8gZGV0O1xuICAgIHZhciBnYW1tYSA9ICgoYiAtIGQpICogKHIgLSBhKSArIChjIC0gYSkgKiAocyAtIGIpKSAvIGRldDtcbiAgICByZXR1cm4gMCA8IGxhbWJkYSAmJiBsYW1iZGEgPCAxICYmIDAgPCBnYW1tYSAmJiBnYW1tYSA8IDE7XG4gIH1cbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBDbGFzcyBDb25zdGFudHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKipcbiAqIFNvbWUgdXNlZnVsIHByZS1jYWxjdWxhdGVkIGNvbnN0YW50c1xuICovXG5JR2VvbWV0cnkuSEFMRl9QSSA9IDAuNSAqIE1hdGguUEk7XG5JR2VvbWV0cnkuT05FX0FORF9IQUxGX1BJID0gMS41ICogTWF0aC5QSTtcbklHZW9tZXRyeS5UV09fUEkgPSAyLjAgKiBNYXRoLlBJO1xuSUdlb21ldHJ5LlRIUkVFX1BJID0gMy4wICogTWF0aC5QSTtcblxubW9kdWxlLmV4cG9ydHMgPSBJR2VvbWV0cnk7XG5cbi8qKiovIH0pLFxuLyogOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBJTWF0aCgpIHt9XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2lnbiBvZiB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cbklNYXRoLnNpZ24gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgaWYgKHZhbHVlID4gMCkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2UgaWYgKHZhbHVlIDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufTtcblxuSU1hdGguZmxvb3IgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIDwgMCA/IE1hdGguY2VpbCh2YWx1ZSkgOiBNYXRoLmZsb29yKHZhbHVlKTtcbn07XG5cbklNYXRoLmNlaWwgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIDwgMCA/IE1hdGguZmxvb3IodmFsdWUpIDogTWF0aC5jZWlsKHZhbHVlKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSU1hdGg7XG5cbi8qKiovIH0pLFxuLyogMTAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gSW50ZWdlcigpIHt9XG5cbkludGVnZXIuTUFYX1ZBTFVFID0gMjE0NzQ4MzY0NztcbkludGVnZXIuTUlOX1ZBTFVFID0gLTIxNDc0ODM2NDg7XG5cbm1vZHVsZS5leHBvcnRzID0gSW50ZWdlcjtcblxuLyoqKi8gfSksXG4vKiAxMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgbm9kZUZyb20gPSBmdW5jdGlvbiBub2RlRnJvbSh2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIG5leHQ6IG51bGwsIHByZXY6IG51bGwgfTtcbn07XG5cbnZhciBhZGQgPSBmdW5jdGlvbiBhZGQocHJldiwgbm9kZSwgbmV4dCwgbGlzdCkge1xuICBpZiAocHJldiAhPT0gbnVsbCkge1xuICAgIHByZXYubmV4dCA9IG5vZGU7XG4gIH0gZWxzZSB7XG4gICAgbGlzdC5oZWFkID0gbm9kZTtcbiAgfVxuXG4gIGlmIChuZXh0ICE9PSBudWxsKSB7XG4gICAgbmV4dC5wcmV2ID0gbm9kZTtcbiAgfSBlbHNlIHtcbiAgICBsaXN0LnRhaWwgPSBub2RlO1xuICB9XG5cbiAgbm9kZS5wcmV2ID0gcHJldjtcbiAgbm9kZS5uZXh0ID0gbmV4dDtcblxuICBsaXN0Lmxlbmd0aCsrO1xuXG4gIHJldHVybiBub2RlO1xufTtcblxudmFyIF9yZW1vdmUgPSBmdW5jdGlvbiBfcmVtb3ZlKG5vZGUsIGxpc3QpIHtcbiAgdmFyIHByZXYgPSBub2RlLnByZXYsXG4gICAgICBuZXh0ID0gbm9kZS5uZXh0O1xuXG5cbiAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICBwcmV2Lm5leHQgPSBuZXh0O1xuICB9IGVsc2Uge1xuICAgIGxpc3QuaGVhZCA9IG5leHQ7XG4gIH1cblxuICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgIG5leHQucHJldiA9IHByZXY7XG4gIH0gZWxzZSB7XG4gICAgbGlzdC50YWlsID0gcHJldjtcbiAgfVxuXG4gIG5vZGUucHJldiA9IG5vZGUubmV4dCA9IG51bGw7XG5cbiAgbGlzdC5sZW5ndGgtLTtcblxuICByZXR1cm4gbm9kZTtcbn07XG5cbnZhciBMaW5rZWRMaXN0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMaW5rZWRMaXN0KHZhbHMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExpbmtlZExpc3QpO1xuXG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgdGhpcy50YWlsID0gbnVsbDtcblxuICAgIGlmICh2YWxzICE9IG51bGwpIHtcbiAgICAgIHZhbHMuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gX3RoaXMucHVzaCh2KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMaW5rZWRMaXN0LCBbe1xuICAgIGtleTogXCJzaXplXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sZW5ndGg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluc2VydEJlZm9yZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnNlcnRCZWZvcmUodmFsLCBvdGhlck5vZGUpIHtcbiAgICAgIHJldHVybiBhZGQob3RoZXJOb2RlLnByZXYsIG5vZGVGcm9tKHZhbCksIG90aGVyTm9kZSwgdGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluc2VydEFmdGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluc2VydEFmdGVyKHZhbCwgb3RoZXJOb2RlKSB7XG4gICAgICByZXR1cm4gYWRkKG90aGVyTm9kZSwgbm9kZUZyb20odmFsKSwgb3RoZXJOb2RlLm5leHQsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbnNlcnROb2RlQmVmb3JlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluc2VydE5vZGVCZWZvcmUobmV3Tm9kZSwgb3RoZXJOb2RlKSB7XG4gICAgICByZXR1cm4gYWRkKG90aGVyTm9kZS5wcmV2LCBuZXdOb2RlLCBvdGhlck5vZGUsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbnNlcnROb2RlQWZ0ZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5zZXJ0Tm9kZUFmdGVyKG5ld05vZGUsIG90aGVyTm9kZSkge1xuICAgICAgcmV0dXJuIGFkZChvdGhlck5vZGUsIG5ld05vZGUsIG90aGVyTm9kZS5uZXh0LCB0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHVzaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXNoKHZhbCkge1xuICAgICAgcmV0dXJuIGFkZCh0aGlzLnRhaWwsIG5vZGVGcm9tKHZhbCksIG51bGwsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1bnNoaWZ0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVuc2hpZnQodmFsKSB7XG4gICAgICByZXR1cm4gYWRkKG51bGwsIG5vZGVGcm9tKHZhbCksIHRoaXMuaGVhZCwgdGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmUobm9kZSkge1xuICAgICAgcmV0dXJuIF9yZW1vdmUobm9kZSwgdGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBvcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwb3AoKSB7XG4gICAgICByZXR1cm4gX3JlbW92ZSh0aGlzLnRhaWwsIHRoaXMpLnZhbHVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwb3BOb2RlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBvcE5vZGUoKSB7XG4gICAgICByZXR1cm4gX3JlbW92ZSh0aGlzLnRhaWwsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzaGlmdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaGlmdCgpIHtcbiAgICAgIHJldHVybiBfcmVtb3ZlKHRoaXMuaGVhZCwgdGhpcykudmFsdWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNoaWZ0Tm9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaGlmdE5vZGUoKSB7XG4gICAgICByZXR1cm4gX3JlbW92ZSh0aGlzLmhlYWQsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRfb2JqZWN0X2F0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldF9vYmplY3RfYXQoaW5kZXgpIHtcbiAgICAgIGlmIChpbmRleCA8PSB0aGlzLmxlbmd0aCgpKSB7XG4gICAgICAgIHZhciBpID0gMTtcbiAgICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLmhlYWQ7XG4gICAgICAgIHdoaWxlIChpIDwgaW5kZXgpIHtcbiAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudC52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0X29iamVjdF9hdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRfb2JqZWN0X2F0KGluZGV4LCB2YWx1ZSkge1xuICAgICAgaWYgKGluZGV4IDw9IHRoaXMubGVuZ3RoKCkpIHtcbiAgICAgICAgdmFyIGkgPSAxO1xuICAgICAgICB2YXIgY3VycmVudCA9IHRoaXMuaGVhZDtcbiAgICAgICAgd2hpbGUgKGkgPCBpbmRleCkge1xuICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQudmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTGlua2VkTGlzdDtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBMaW5rZWRMaXN0O1xuXG4vKioqLyB9KSxcbi8qIDEyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qXHJcbiAqVGhpcyBjbGFzcyBpcyB0aGUgamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9pbnQuamF2YSBjbGFzcyBpbiBqZGtcclxuICovXG5mdW5jdGlvbiBQb2ludCh4LCB5LCBwKSB7XG4gIHRoaXMueCA9IG51bGw7XG4gIHRoaXMueSA9IG51bGw7XG4gIGlmICh4ID09IG51bGwgJiYgeSA9PSBudWxsICYmIHAgPT0gbnVsbCkge1xuICAgIHRoaXMueCA9IDA7XG4gICAgdGhpcy55ID0gMDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgeCA9PSAnbnVtYmVyJyAmJiB0eXBlb2YgeSA9PSAnbnVtYmVyJyAmJiBwID09IG51bGwpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH0gZWxzZSBpZiAoeC5jb25zdHJ1Y3Rvci5uYW1lID09ICdQb2ludCcgJiYgeSA9PSBudWxsICYmIHAgPT0gbnVsbCkge1xuICAgIHAgPSB4O1xuICAgIHRoaXMueCA9IHAueDtcbiAgICB0aGlzLnkgPSBwLnk7XG4gIH1cbn1cblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLng7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRMb2NhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLngsIHRoaXMueSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuc2V0TG9jYXRpb24gPSBmdW5jdGlvbiAoeCwgeSwgcCkge1xuICBpZiAoeC5jb25zdHJ1Y3Rvci5uYW1lID09ICdQb2ludCcgJiYgeSA9PSBudWxsICYmIHAgPT0gbnVsbCkge1xuICAgIHAgPSB4O1xuICAgIHRoaXMuc2V0TG9jYXRpb24ocC54LCBwLnkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB4ID09ICdudW1iZXInICYmIHR5cGVvZiB5ID09ICdudW1iZXInICYmIHAgPT0gbnVsbCkge1xuICAgIC8vaWYgYm90aCBwYXJhbWV0ZXJzIGFyZSBpbnRlZ2VyIGp1c3QgbW92ZSAoeCx5KSBsb2NhdGlvblxuICAgIGlmIChwYXJzZUludCh4KSA9PSB4ICYmIHBhcnNlSW50KHkpID09IHkpIHtcbiAgICAgIHRoaXMubW92ZSh4LCB5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy54ID0gTWF0aC5mbG9vcih4ICsgMC41KTtcbiAgICAgIHRoaXMueSA9IE1hdGguZmxvb3IoeSArIDAuNSk7XG4gICAgfVxuICB9XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubW92ZSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gIHRoaXMueCA9IHg7XG4gIHRoaXMueSA9IHk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24gKGR4LCBkeSkge1xuICB0aGlzLnggKz0gZHg7XG4gIHRoaXMueSArPSBkeTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIGlmIChvYmouY29uc3RydWN0b3IubmFtZSA9PSBcIlBvaW50XCIpIHtcbiAgICB2YXIgcHQgPSBvYmo7XG4gICAgcmV0dXJuIHRoaXMueCA9PSBwdC54ICYmIHRoaXMueSA9PSBwdC55O1xuICB9XG4gIHJldHVybiB0aGlzID09IG9iajtcbn07XG5cblBvaW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCgpLmNvbnN0cnVjdG9yLm5hbWUgKyBcIlt4PVwiICsgdGhpcy54ICsgXCIseT1cIiArIHRoaXMueSArIFwiXVwiO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBQb2ludDtcblxuLyoqKi8gfSksXG4vKiAxMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBSZWN0YW5nbGVEKHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgdGhpcy54ID0gMDtcbiAgdGhpcy55ID0gMDtcbiAgdGhpcy53aWR0aCA9IDA7XG4gIHRoaXMuaGVpZ2h0ID0gMDtcblxuICBpZiAoeCAhPSBudWxsICYmIHkgIT0gbnVsbCAmJiB3aWR0aCAhPSBudWxsICYmIGhlaWdodCAhPSBudWxsKSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgfVxufVxuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy54O1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uICh4KSB7XG4gIHRoaXMueCA9IHg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy55O1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuc2V0WSA9IGZ1bmN0aW9uICh5KSB7XG4gIHRoaXMueSA9IHk7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMud2lkdGg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5zZXRXaWR0aCA9IGZ1bmN0aW9uICh3aWR0aCkge1xuICB0aGlzLndpZHRoID0gd2lkdGg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmhlaWdodDtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLnNldEhlaWdodCA9IGZ1bmN0aW9uIChoZWlnaHQpIHtcbiAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRSaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueCArIHRoaXMud2lkdGg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRCb3R0b20gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnkgKyB0aGlzLmhlaWdodDtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmludGVyc2VjdHMgPSBmdW5jdGlvbiAoYSkge1xuICBpZiAodGhpcy5nZXRSaWdodCgpIDwgYS54KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHRoaXMuZ2V0Qm90dG9tKCkgPCBhLnkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYS5nZXRSaWdodCgpIDwgdGhpcy54KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGEuZ2V0Qm90dG9tKCkgPCB0aGlzLnkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldENlbnRlclggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnggKyB0aGlzLndpZHRoIC8gMjtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldE1pblggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKTtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldE1heFggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKSArIHRoaXMud2lkdGg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRDZW50ZXJZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy55ICsgdGhpcy5oZWlnaHQgLyAyO1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0TWluWSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0WSgpO1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0TWF4WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0WSgpICsgdGhpcy5oZWlnaHQ7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRXaWR0aEhhbGYgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLndpZHRoIC8gMjtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldEhlaWdodEhhbGYgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmhlaWdodCAvIDI7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlY3RhbmdsZUQ7XG5cbi8qKiovIH0pLFxuLyogMTQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG5mdW5jdGlvbiBVbmlxdWVJREdlbmVyZXRvcigpIHt9XG5cblVuaXF1ZUlER2VuZXJldG9yLmxhc3RJRCA9IDA7XG5cblVuaXF1ZUlER2VuZXJldG9yLmNyZWF0ZUlEID0gZnVuY3Rpb24gKG9iaikge1xuICBpZiAoVW5pcXVlSURHZW5lcmV0b3IuaXNQcmltaXRpdmUob2JqKSkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cbiAgaWYgKG9iai51bmlxdWVJRCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIG9iai51bmlxdWVJRDtcbiAgfVxuICBvYmoudW5pcXVlSUQgPSBVbmlxdWVJREdlbmVyZXRvci5nZXRTdHJpbmcoKTtcbiAgVW5pcXVlSURHZW5lcmV0b3IubGFzdElEKys7XG4gIHJldHVybiBvYmoudW5pcXVlSUQ7XG59O1xuXG5VbmlxdWVJREdlbmVyZXRvci5nZXRTdHJpbmcgPSBmdW5jdGlvbiAoaWQpIHtcbiAgaWYgKGlkID09IG51bGwpIGlkID0gVW5pcXVlSURHZW5lcmV0b3IubGFzdElEO1xuICByZXR1cm4gXCJPYmplY3QjXCIgKyBpZCArIFwiXCI7XG59O1xuXG5VbmlxdWVJREdlbmVyZXRvci5pc1ByaW1pdGl2ZSA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgYXJnID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoYXJnKTtcbiAgcmV0dXJuIGFyZyA9PSBudWxsIHx8IHR5cGUgIT0gXCJvYmplY3RcIiAmJiB0eXBlICE9IFwiZnVuY3Rpb25cIjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVW5pcXVlSURHZW5lcmV0b3I7XG5cbi8qKiovIH0pLFxuLyogMTUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfSBlbHNlIHsgcmV0dXJuIEFycmF5LmZyb20oYXJyKTsgfSB9XG5cbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIExHcmFwaE1hbmFnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xudmFyIExOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbnZhciBMRWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG52YXIgTEdyYXBoID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbnZhciBQb2ludEQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFyIFRyYW5zZm9ybSA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpO1xudmFyIEVtaXR0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcblxuZnVuY3Rpb24gTGF5b3V0KGlzUmVtb3RlVXNlKSB7XG4gIEVtaXR0ZXIuY2FsbCh0aGlzKTtcblxuICAvL0xheW91dCBRdWFsaXR5OiAwOmRyYWZ0LCAxOmRlZmF1bHQsIDI6cHJvb2ZcbiAgdGhpcy5sYXlvdXRRdWFsaXR5ID0gTGF5b3V0Q29uc3RhbnRzLlFVQUxJVFk7XG4gIC8vV2hldGhlciBsYXlvdXQgc2hvdWxkIGNyZWF0ZSBiZW5kcG9pbnRzIGFzIG5lZWRlZCBvciBub3RcbiAgdGhpcy5jcmVhdGVCZW5kc0FzTmVlZGVkID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ1JFQVRFX0JFTkRTX0FTX05FRURFRDtcbiAgLy9XaGV0aGVyIGxheW91dCBzaG91bGQgYmUgaW5jcmVtZW50YWwgb3Igbm90XG4gIHRoaXMuaW5jcmVtZW50YWwgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9JTkNSRU1FTlRBTDtcbiAgLy9XaGV0aGVyIHdlIGFuaW1hdGUgZnJvbSBiZWZvcmUgdG8gYWZ0ZXIgbGF5b3V0IG5vZGUgcG9zaXRpb25zXG4gIHRoaXMuYW5pbWF0aW9uT25MYXlvdXQgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fT05fTEFZT1VUO1xuICAvL1doZXRoZXIgd2UgYW5pbWF0ZSB0aGUgbGF5b3V0IHByb2Nlc3Mgb3Igbm90XG4gIHRoaXMuYW5pbWF0aW9uRHVyaW5nTGF5b3V0ID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX0RVUklOR19MQVlPVVQ7XG4gIC8vTnVtYmVyIGl0ZXJhdGlvbnMgdGhhdCBzaG91bGQgYmUgZG9uZSBiZXR3ZWVuIHR3byBzdWNjZXNzaXZlIGFuaW1hdGlvbnNcbiAgdGhpcy5hbmltYXRpb25QZXJpb2QgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fUEVSSU9EO1xuICAvKipcclxuICAgKiBXaGV0aGVyIG9yIG5vdCBsZWFmIG5vZGVzIChub24tY29tcG91bmQgbm9kZXMpIGFyZSBvZiB1bmlmb3JtIHNpemVzLiBXaGVuXHJcbiAgICogdGhleSBhcmUsIGJvdGggc3ByaW5nIGFuZCByZXB1bHNpb24gZm9yY2VzIGJldHdlZW4gdHdvIGxlYWYgbm9kZXMgY2FuIGJlXHJcbiAgICogY2FsY3VsYXRlZCB3aXRob3V0IHRoZSBleHBlbnNpdmUgY2xpcHBpbmcgcG9pbnQgY2FsY3VsYXRpb25zLCByZXN1bHRpbmdcclxuICAgKiBpbiBtYWpvciBzcGVlZC11cC5cclxuICAgKi9cbiAgdGhpcy51bmlmb3JtTGVhZk5vZGVTaXplcyA9IExheW91dENvbnN0YW50cy5ERUZBVUxUX1VOSUZPUk1fTEVBRl9OT0RFX1NJWkVTO1xuICAvKipcclxuICAgKiBUaGlzIGlzIHVzZWQgZm9yIGNyZWF0aW9uIG9mIGJlbmRwb2ludHMgYnkgdXNpbmcgZHVtbXkgbm9kZXMgYW5kIGVkZ2VzLlxyXG4gICAqIE1hcHMgYW4gTEVkZ2UgdG8gaXRzIGR1bW15IGJlbmRwb2ludCBwYXRoLlxyXG4gICAqL1xuICB0aGlzLmVkZ2VUb0R1bW15Tm9kZXMgPSBuZXcgTWFwKCk7XG4gIHRoaXMuZ3JhcGhNYW5hZ2VyID0gbmV3IExHcmFwaE1hbmFnZXIodGhpcyk7XG4gIHRoaXMuaXNMYXlvdXRGaW5pc2hlZCA9IGZhbHNlO1xuICB0aGlzLmlzU3ViTGF5b3V0ID0gZmFsc2U7XG4gIHRoaXMuaXNSZW1vdGVVc2UgPSBmYWxzZTtcblxuICBpZiAoaXNSZW1vdGVVc2UgIT0gbnVsbCkge1xuICAgIHRoaXMuaXNSZW1vdGVVc2UgPSBpc1JlbW90ZVVzZTtcbiAgfVxufVxuXG5MYXlvdXQuUkFORE9NX1NFRUQgPSAxO1xuXG5MYXlvdXQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFbWl0dGVyLnByb3RvdHlwZSk7XG5cbkxheW91dC5wcm90b3R5cGUuZ2V0R3JhcGhNYW5hZ2VyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaE1hbmFnZXI7XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLmdldEFsbE5vZGVzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0QWxsTm9kZXMoKTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUuZ2V0QWxsRWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdyYXBoTWFuYWdlci5nZXRBbGxFZGdlcygpO1xufTtcblxuTGF5b3V0LnByb3RvdHlwZS5nZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbE5vZGVzVG9BcHBseUdyYXZpdGF0aW9uKCk7XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLm5ld0dyYXBoTWFuYWdlciA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGdtID0gbmV3IExHcmFwaE1hbmFnZXIodGhpcyk7XG4gIHRoaXMuZ3JhcGhNYW5hZ2VyID0gZ207XG4gIHJldHVybiBnbTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUubmV3R3JhcGggPSBmdW5jdGlvbiAodkdyYXBoKSB7XG4gIHJldHVybiBuZXcgTEdyYXBoKG51bGwsIHRoaXMuZ3JhcGhNYW5hZ2VyLCB2R3JhcGgpO1xufTtcblxuTGF5b3V0LnByb3RvdHlwZS5uZXdOb2RlID0gZnVuY3Rpb24gKHZOb2RlKSB7XG4gIHJldHVybiBuZXcgTE5vZGUodGhpcy5ncmFwaE1hbmFnZXIsIHZOb2RlKTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUubmV3RWRnZSA9IGZ1bmN0aW9uICh2RWRnZSkge1xuICByZXR1cm4gbmV3IExFZGdlKG51bGwsIG51bGwsIHZFZGdlKTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUuY2hlY2tMYXlvdXRTdWNjZXNzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpID09IG51bGwgfHwgdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpLmdldE5vZGVzKCkubGVuZ3RoID09IDAgfHwgdGhpcy5ncmFwaE1hbmFnZXIuaW5jbHVkZXNJbnZhbGlkRWRnZSgpO1xufTtcblxuTGF5b3V0LnByb3RvdHlwZS5ydW5MYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaXNMYXlvdXRGaW5pc2hlZCA9IGZhbHNlO1xuXG4gIGlmICh0aGlzLnRpbGluZ1ByZUxheW91dCkge1xuICAgIHRoaXMudGlsaW5nUHJlTGF5b3V0KCk7XG4gIH1cblxuICB0aGlzLmluaXRQYXJhbWV0ZXJzKCk7XG4gIHZhciBpc0xheW91dFN1Y2Nlc3NmdWxsO1xuXG4gIGlmICh0aGlzLmNoZWNrTGF5b3V0U3VjY2VzcygpKSB7XG4gICAgaXNMYXlvdXRTdWNjZXNzZnVsbCA9IGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIGlzTGF5b3V0U3VjY2Vzc2Z1bGwgPSB0aGlzLmxheW91dCgpO1xuICB9XG5cbiAgaWYgKExheW91dENvbnN0YW50cy5BTklNQVRFID09PSAnZHVyaW5nJykge1xuICAgIC8vIElmIHRoaXMgaXMgYSAnZHVyaW5nJyBsYXlvdXQgYW5pbWF0aW9uLiBMYXlvdXQgaXMgbm90IGZpbmlzaGVkIHlldC4gXG4gICAgLy8gV2UgbmVlZCB0byBwZXJmb3JtIHRoZXNlIGluIGluZGV4LmpzIHdoZW4gbGF5b3V0IGlzIHJlYWxseSBmaW5pc2hlZC5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNMYXlvdXRTdWNjZXNzZnVsbCkge1xuICAgIGlmICghdGhpcy5pc1N1YkxheW91dCkge1xuICAgICAgdGhpcy5kb1Bvc3RMYXlvdXQoKTtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy50aWxpbmdQb3N0TGF5b3V0KSB7XG4gICAgdGhpcy50aWxpbmdQb3N0TGF5b3V0KCk7XG4gIH1cblxuICB0aGlzLmlzTGF5b3V0RmluaXNoZWQgPSB0cnVlO1xuXG4gIHJldHVybiBpc0xheW91dFN1Y2Nlc3NmdWxsO1xufTtcblxuLyoqXHJcbiAqIFRoaXMgbWV0aG9kIHBlcmZvcm1zIHRoZSBvcGVyYXRpb25zIHJlcXVpcmVkIGFmdGVyIGxheW91dC5cclxuICovXG5MYXlvdXQucHJvdG90eXBlLmRvUG9zdExheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgLy9hc3NlcnQgIWlzU3ViTGF5b3V0IDogXCJTaG91bGQgbm90IGJlIGNhbGxlZCBvbiBzdWItbGF5b3V0IVwiO1xuICAvLyBQcm9wYWdhdGUgZ2VvbWV0cmljIGNoYW5nZXMgdG8gdi1sZXZlbCBvYmplY3RzXG4gIGlmICghdGhpcy5pbmNyZW1lbnRhbCkge1xuICAgIHRoaXMudHJhbnNmb3JtKCk7XG4gIH1cbiAgdGhpcy51cGRhdGUoKTtcbn07XG5cbi8qKlxyXG4gKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBnZW9tZXRyeSBvZiB0aGUgdGFyZ2V0IGdyYXBoIGFjY29yZGluZyB0b1xyXG4gKiBjYWxjdWxhdGVkIGxheW91dC5cclxuICovXG5MYXlvdXQucHJvdG90eXBlLnVwZGF0ZTIgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIHVwZGF0ZSBiZW5kIHBvaW50c1xuICBpZiAodGhpcy5jcmVhdGVCZW5kc0FzTmVlZGVkKSB7XG4gICAgdGhpcy5jcmVhdGVCZW5kcG9pbnRzRnJvbUR1bW15Tm9kZXMoKTtcblxuICAgIC8vIHJlc2V0IGFsbCBlZGdlcywgc2luY2UgdGhlIHRvcG9sb2d5IGhhcyBjaGFuZ2VkXG4gICAgdGhpcy5ncmFwaE1hbmFnZXIucmVzZXRBbGxFZGdlcygpO1xuICB9XG5cbiAgLy8gcGVyZm9ybSBlZGdlLCBub2RlIGFuZCByb290IHVwZGF0ZXMgaWYgbGF5b3V0IGlzIG5vdCBjYWxsZWRcbiAgLy8gcmVtb3RlbHlcbiAgaWYgKCF0aGlzLmlzUmVtb3RlVXNlKSB7XG4gICAgLy8gdXBkYXRlIGFsbCBlZGdlc1xuICAgIHZhciBlZGdlO1xuICAgIHZhciBhbGxFZGdlcyA9IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbEVkZ2VzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxFZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgZWRnZSA9IGFsbEVkZ2VzW2ldO1xuICAgICAgLy8gICAgICB0aGlzLnVwZGF0ZShlZGdlKTtcbiAgICB9XG5cbiAgICAvLyByZWN1cnNpdmVseSB1cGRhdGUgbm9kZXNcbiAgICB2YXIgbm9kZTtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkuZ2V0Tm9kZXMoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICAvLyAgICAgIHRoaXMudXBkYXRlKG5vZGUpO1xuICAgIH1cblxuICAgIC8vIHVwZGF0ZSByb290IGdyYXBoXG4gICAgdGhpcy51cGRhdGUodGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpKTtcbiAgfVxufTtcblxuTGF5b3V0LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAob2JqKSB7XG4gIGlmIChvYmogPT0gbnVsbCkge1xuICAgIHRoaXMudXBkYXRlMigpO1xuICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIExOb2RlKSB7XG4gICAgdmFyIG5vZGUgPSBvYmo7XG4gICAgaWYgKG5vZGUuZ2V0Q2hpbGQoKSAhPSBudWxsKSB7XG4gICAgICAvLyBzaW5jZSBub2RlIGlzIGNvbXBvdW5kLCByZWN1cnNpdmVseSB1cGRhdGUgY2hpbGQgbm9kZXNcbiAgICAgIHZhciBub2RlcyA9IG5vZGUuZ2V0Q2hpbGQoKS5nZXROb2RlcygpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB1cGRhdGUobm9kZXNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIHRoZSBsLWxldmVsIG5vZGUgaXMgYXNzb2NpYXRlZCB3aXRoIGEgdi1sZXZlbCBncmFwaCBvYmplY3QsXG4gICAgLy8gdGhlbiBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHYtbGV2ZWwgbm9kZSBpbXBsZW1lbnRzIHRoZVxuICAgIC8vIGludGVyZmFjZSBVcGRhdGFibGUuXG4gICAgaWYgKG5vZGUudkdyYXBoT2JqZWN0ICE9IG51bGwpIHtcbiAgICAgIC8vIGNhc3QgdG8gVXBkYXRhYmxlIHdpdGhvdXQgYW55IHR5cGUgY2hlY2tcbiAgICAgIHZhciB2Tm9kZSA9IG5vZGUudkdyYXBoT2JqZWN0O1xuXG4gICAgICAvLyBjYWxsIHRoZSB1cGRhdGUgbWV0aG9kIG9mIHRoZSBpbnRlcmZhY2VcbiAgICAgIHZOb2RlLnVwZGF0ZShub2RlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgTEVkZ2UpIHtcbiAgICB2YXIgZWRnZSA9IG9iajtcbiAgICAvLyBpZiB0aGUgbC1sZXZlbCBlZGdlIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHYtbGV2ZWwgZ3JhcGggb2JqZWN0LFxuICAgIC8vIHRoZW4gaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB2LWxldmVsIGVkZ2UgaW1wbGVtZW50cyB0aGVcbiAgICAvLyBpbnRlcmZhY2UgVXBkYXRhYmxlLlxuXG4gICAgaWYgKGVkZ2UudkdyYXBoT2JqZWN0ICE9IG51bGwpIHtcbiAgICAgIC8vIGNhc3QgdG8gVXBkYXRhYmxlIHdpdGhvdXQgYW55IHR5cGUgY2hlY2tcbiAgICAgIHZhciB2RWRnZSA9IGVkZ2UudkdyYXBoT2JqZWN0O1xuXG4gICAgICAvLyBjYWxsIHRoZSB1cGRhdGUgbWV0aG9kIG9mIHRoZSBpbnRlcmZhY2VcbiAgICAgIHZFZGdlLnVwZGF0ZShlZGdlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgTEdyYXBoKSB7XG4gICAgdmFyIGdyYXBoID0gb2JqO1xuICAgIC8vIGlmIHRoZSBsLWxldmVsIGdyYXBoIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHYtbGV2ZWwgZ3JhcGggb2JqZWN0LFxuICAgIC8vIHRoZW4gaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB2LWxldmVsIG9iamVjdCBpbXBsZW1lbnRzIHRoZVxuICAgIC8vIGludGVyZmFjZSBVcGRhdGFibGUuXG5cbiAgICBpZiAoZ3JhcGgudkdyYXBoT2JqZWN0ICE9IG51bGwpIHtcbiAgICAgIC8vIGNhc3QgdG8gVXBkYXRhYmxlIHdpdGhvdXQgYW55IHR5cGUgY2hlY2tcbiAgICAgIHZhciB2R3JhcGggPSBncmFwaC52R3JhcGhPYmplY3Q7XG5cbiAgICAgIC8vIGNhbGwgdGhlIHVwZGF0ZSBtZXRob2Qgb2YgdGhlIGludGVyZmFjZVxuICAgICAgdkdyYXBoLnVwZGF0ZShncmFwaCk7XG4gICAgfVxuICB9XG59O1xuXG4vKipcclxuICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBzZXQgYWxsIGxheW91dCBwYXJhbWV0ZXJzIHRvIGRlZmF1bHQgdmFsdWVzXHJcbiAqIGRldGVybWluZWQgYXQgY29tcGlsZSB0aW1lLlxyXG4gKi9cbkxheW91dC5wcm90b3R5cGUuaW5pdFBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5pc1N1YkxheW91dCkge1xuICAgIHRoaXMubGF5b3V0UXVhbGl0eSA9IExheW91dENvbnN0YW50cy5RVUFMSVRZO1xuICAgIHRoaXMuYW5pbWF0aW9uRHVyaW5nTGF5b3V0ID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX0RVUklOR19MQVlPVVQ7XG4gICAgdGhpcy5hbmltYXRpb25QZXJpb2QgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fUEVSSU9EO1xuICAgIHRoaXMuYW5pbWF0aW9uT25MYXlvdXQgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fT05fTEFZT1VUO1xuICAgIHRoaXMuaW5jcmVtZW50YWwgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9JTkNSRU1FTlRBTDtcbiAgICB0aGlzLmNyZWF0ZUJlbmRzQXNOZWVkZWQgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DUkVBVEVfQkVORFNfQVNfTkVFREVEO1xuICAgIHRoaXMudW5pZm9ybUxlYWZOb2RlU2l6ZXMgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9VTklGT1JNX0xFQUZfTk9ERV9TSVpFUztcbiAgfVxuXG4gIGlmICh0aGlzLmFuaW1hdGlvbkR1cmluZ0xheW91dCkge1xuICAgIHRoaXMuYW5pbWF0aW9uT25MYXlvdXQgPSBmYWxzZTtcbiAgfVxufTtcblxuTGF5b3V0LnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiAobmV3TGVmdFRvcCkge1xuICBpZiAobmV3TGVmdFRvcCA9PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnRyYW5zZm9ybShuZXcgUG9pbnREKDAsIDApKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBjcmVhdGUgYSB0cmFuc2Zvcm1hdGlvbiBvYmplY3QgKGZyb20gRWNsaXBzZSB0byBsYXlvdXQpLiBXaGVuIGFuXG4gICAgLy8gaW52ZXJzZSB0cmFuc2Zvcm0gaXMgYXBwbGllZCwgd2UgZ2V0IHVwcGVyLWxlZnQgY29vcmRpbmF0ZSBvZiB0aGVcbiAgICAvLyBkcmF3aW5nIG9yIHRoZSByb290IGdyYXBoIGF0IGdpdmVuIGlucHV0IGNvb3JkaW5hdGUgKHNvbWUgbWFyZ2luc1xuICAgIC8vIGFscmVhZHkgaW5jbHVkZWQgaW4gY2FsY3VsYXRpb24gb2YgbGVmdC10b3ApLlxuXG4gICAgdmFyIHRyYW5zID0gbmV3IFRyYW5zZm9ybSgpO1xuICAgIHZhciBsZWZ0VG9wID0gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpLnVwZGF0ZUxlZnRUb3AoKTtcblxuICAgIGlmIChsZWZ0VG9wICE9IG51bGwpIHtcbiAgICAgIHRyYW5zLnNldFdvcmxkT3JnWChuZXdMZWZ0VG9wLngpO1xuICAgICAgdHJhbnMuc2V0V29ybGRPcmdZKG5ld0xlZnRUb3AueSk7XG5cbiAgICAgIHRyYW5zLnNldERldmljZU9yZ1gobGVmdFRvcC54KTtcbiAgICAgIHRyYW5zLnNldERldmljZU9yZ1kobGVmdFRvcC55KTtcblxuICAgICAgdmFyIG5vZGVzID0gdGhpcy5nZXRBbGxOb2RlcygpO1xuICAgICAgdmFyIG5vZGU7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBub2RlLnRyYW5zZm9ybSh0cmFucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLnBvc2l0aW9uTm9kZXNSYW5kb21seSA9IGZ1bmN0aW9uIChncmFwaCkge1xuXG4gIGlmIChncmFwaCA9PSB1bmRlZmluZWQpIHtcbiAgICAvL2Fzc2VydCAhdGhpcy5pbmNyZW1lbnRhbDtcbiAgICB0aGlzLnBvc2l0aW9uTm9kZXNSYW5kb21seSh0aGlzLmdldEdyYXBoTWFuYWdlcigpLmdldFJvb3QoKSk7XG4gICAgdGhpcy5nZXRHcmFwaE1hbmFnZXIoKS5nZXRSb290KCkudXBkYXRlQm91bmRzKHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBsTm9kZTtcbiAgICB2YXIgY2hpbGRHcmFwaDtcblxuICAgIHZhciBub2RlcyA9IGdyYXBoLmdldE5vZGVzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbE5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIGNoaWxkR3JhcGggPSBsTm9kZS5nZXRDaGlsZCgpO1xuXG4gICAgICBpZiAoY2hpbGRHcmFwaCA9PSBudWxsKSB7XG4gICAgICAgIGxOb2RlLnNjYXR0ZXIoKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hpbGRHcmFwaC5nZXROb2RlcygpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGxOb2RlLnNjYXR0ZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25Ob2Rlc1JhbmRvbWx5KGNoaWxkR3JhcGgpO1xuICAgICAgICBsTm9kZS51cGRhdGVCb3VuZHMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxyXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiB0cmVlcyB3aGVyZSBlYWNoIHRyZWUgaXMgcmVwcmVzZW50ZWQgYXMgYVxyXG4gKiBsaXN0IG9mIGwtbm9kZXMuIFRoZSBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2Ygc2l6ZSAwIHdoZW46XHJcbiAqIC0gVGhlIGdyYXBoIGlzIG5vdCBmbGF0IG9yXHJcbiAqIC0gT25lIG9mIHRoZSBjb21wb25lbnQocykgb2YgdGhlIGdyYXBoIGlzIG5vdCBhIHRyZWUuXHJcbiAqL1xuTGF5b3V0LnByb3RvdHlwZS5nZXRGbGF0Rm9yZXN0ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZmxhdEZvcmVzdCA9IFtdO1xuICB2YXIgaXNGb3Jlc3QgPSB0cnVlO1xuXG4gIC8vIFF1aWNrIHJlZmVyZW5jZSBmb3IgYWxsIG5vZGVzIGluIHRoZSBncmFwaCBtYW5hZ2VyIGFzc29jaWF0ZWQgd2l0aFxuICAvLyB0aGlzIGxheW91dC4gVGhlIGxpc3Qgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLlxuICB2YXIgYWxsTm9kZXMgPSB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkuZ2V0Tm9kZXMoKTtcblxuICAvLyBGaXJzdCBiZSBzdXJlIHRoYXQgdGhlIGdyYXBoIGlzIGZsYXRcbiAgdmFyIGlzRmxhdCA9IHRydWU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhbGxOb2Rlc1tpXS5nZXRDaGlsZCgpICE9IG51bGwpIHtcbiAgICAgIGlzRmxhdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybiBlbXB0eSBmb3Jlc3QgaWYgdGhlIGdyYXBoIGlzIG5vdCBmbGF0LlxuICBpZiAoIWlzRmxhdCkge1xuICAgIHJldHVybiBmbGF0Rm9yZXN0O1xuICB9XG5cbiAgLy8gUnVuIEJGUyBmb3IgZWFjaCBjb21wb25lbnQgb2YgdGhlIGdyYXBoLlxuXG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2YXIgdG9CZVZpc2l0ZWQgPSBbXTtcbiAgdmFyIHBhcmVudHMgPSBuZXcgTWFwKCk7XG4gIHZhciB1blByb2Nlc3NlZE5vZGVzID0gW107XG5cbiAgdW5Qcm9jZXNzZWROb2RlcyA9IHVuUHJvY2Vzc2VkTm9kZXMuY29uY2F0KGFsbE5vZGVzKTtcblxuICAvLyBFYWNoIGl0ZXJhdGlvbiBvZiB0aGlzIGxvb3AgZmluZHMgYSBjb21wb25lbnQgb2YgdGhlIGdyYXBoIGFuZFxuICAvLyBkZWNpZGVzIHdoZXRoZXIgaXQgaXMgYSB0cmVlIG9yIG5vdC4gSWYgaXQgaXMgYSB0cmVlLCBhZGRzIGl0IHRvIHRoZVxuICAvLyBmb3Jlc3QgYW5kIGNvbnRpbnVlZCB3aXRoIHRoZSBuZXh0IGNvbXBvbmVudC5cblxuICB3aGlsZSAodW5Qcm9jZXNzZWROb2Rlcy5sZW5ndGggPiAwICYmIGlzRm9yZXN0KSB7XG4gICAgdG9CZVZpc2l0ZWQucHVzaCh1blByb2Nlc3NlZE5vZGVzWzBdKTtcblxuICAgIC8vIFN0YXJ0IHRoZSBCRlMuIEVhY2ggaXRlcmF0aW9uIG9mIHRoaXMgbG9vcCB2aXNpdHMgYSBub2RlIGluIGFcbiAgICAvLyBCRlMgbWFubmVyLlxuICAgIHdoaWxlICh0b0JlVmlzaXRlZC5sZW5ndGggPiAwICYmIGlzRm9yZXN0KSB7XG4gICAgICAvL3Bvb2wgb3BlcmF0aW9uXG4gICAgICB2YXIgY3VycmVudE5vZGUgPSB0b0JlVmlzaXRlZFswXTtcbiAgICAgIHRvQmVWaXNpdGVkLnNwbGljZSgwLCAxKTtcbiAgICAgIHZpc2l0ZWQuYWRkKGN1cnJlbnROb2RlKTtcblxuICAgICAgLy8gVHJhdmVyc2UgYWxsIG5laWdoYm9ycyBvZiB0aGlzIG5vZGVcbiAgICAgIHZhciBuZWlnaGJvckVkZ2VzID0gY3VycmVudE5vZGUuZ2V0RWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWlnaGJvckVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjdXJyZW50TmVpZ2hib3IgPSBuZWlnaGJvckVkZ2VzW2ldLmdldE90aGVyRW5kKGN1cnJlbnROb2RlKTtcblxuICAgICAgICAvLyBJZiBCRlMgaXMgbm90IGdyb3dpbmcgZnJvbSB0aGlzIG5laWdoYm9yLlxuICAgICAgICBpZiAocGFyZW50cy5nZXQoY3VycmVudE5vZGUpICE9IGN1cnJlbnROZWlnaGJvcikge1xuICAgICAgICAgIC8vIFdlIGhhdmVuJ3QgcHJldmlvdXNseSB2aXNpdGVkIHRoaXMgbmVpZ2hib3IuXG4gICAgICAgICAgaWYgKCF2aXNpdGVkLmhhcyhjdXJyZW50TmVpZ2hib3IpKSB7XG4gICAgICAgICAgICB0b0JlVmlzaXRlZC5wdXNoKGN1cnJlbnROZWlnaGJvcik7XG4gICAgICAgICAgICBwYXJlbnRzLnNldChjdXJyZW50TmVpZ2hib3IsIGN1cnJlbnROb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgaGF2ZSBwcmV2aW91c2x5IHZpc2l0ZWQgdGhpcyBuZWlnaGJvciBhbmRcbiAgICAgICAgICAvLyB0aGlzIG5laWdoYm9yIGlzIG5vdCBwYXJlbnQgb2YgY3VycmVudE5vZGUsIGdpdmVuXG4gICAgICAgICAgLy8gZ3JhcGggY29udGFpbnMgYSBjb21wb25lbnQgdGhhdCBpcyBub3QgdHJlZSwgaGVuY2VcbiAgICAgICAgICAvLyBpdCBpcyBub3QgYSBmb3Jlc3QuXG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGlzRm9yZXN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlIGdyYXBoIGNvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgaXMgbm90IGEgdHJlZS4gRW1wdHlcbiAgICAvLyBwcmV2aW91c2x5IGZvdW5kIHRyZWVzLiBUaGUgbWV0aG9kIHdpbGwgZW5kLlxuICAgIGlmICghaXNGb3Jlc3QpIHtcbiAgICAgIGZsYXRGb3Jlc3QgPSBbXTtcbiAgICB9XG4gICAgLy8gU2F2ZSBjdXJyZW50bHkgdmlzaXRlZCBub2RlcyBhcyBhIHRyZWUgaW4gb3VyIGZvcmVzdC4gUmVzZXRcbiAgICAvLyB2aXNpdGVkIGFuZCBwYXJlbnRzIGxpc3RzLiBDb250aW51ZSB3aXRoIHRoZSBuZXh0IGNvbXBvbmVudCBvZlxuICAgIC8vIHRoZSBncmFwaCwgaWYgYW55LlxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgdGVtcCA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodmlzaXRlZCkpO1xuICAgICAgICBmbGF0Rm9yZXN0LnB1c2godGVtcCk7XG4gICAgICAgIC8vZmxhdEZvcmVzdCA9IGZsYXRGb3Jlc3QuY29uY2F0KHRlbXApO1xuICAgICAgICAvL3VuUHJvY2Vzc2VkTm9kZXMucmVtb3ZlQWxsKHZpc2l0ZWQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlbXAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSB0ZW1wW2ldO1xuICAgICAgICAgIHZhciBpbmRleCA9IHVuUHJvY2Vzc2VkTm9kZXMuaW5kZXhPZih2YWx1ZSk7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHVuUHJvY2Vzc2VkTm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgICAgICAgcGFyZW50cyA9IG5ldyBNYXAoKTtcbiAgICAgIH1cbiAgfVxuXG4gIHJldHVybiBmbGF0Rm9yZXN0O1xufTtcblxuLyoqXHJcbiAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgZHVtbXkgbm9kZXMgKGFuIGwtbGV2ZWwgbm9kZSB3aXRoIG1pbmltYWwgZGltZW5zaW9ucylcclxuICogZm9yIHRoZSBnaXZlbiBlZGdlIChvbmUgcGVyIGJlbmRwb2ludCkuIFRoZSBleGlzdGluZyBsLWxldmVsIHN0cnVjdHVyZVxyXG4gKiBpcyB1cGRhdGVkIGFjY29yZGluZ2x5LlxyXG4gKi9cbkxheW91dC5wcm90b3R5cGUuY3JlYXRlRHVtbXlOb2Rlc0ZvckJlbmRwb2ludHMgPSBmdW5jdGlvbiAoZWRnZSkge1xuICB2YXIgZHVtbXlOb2RlcyA9IFtdO1xuICB2YXIgcHJldiA9IGVkZ2Uuc291cmNlO1xuXG4gIHZhciBncmFwaCA9IHRoaXMuZ3JhcGhNYW5hZ2VyLmNhbGNMb3dlc3RDb21tb25BbmNlc3RvcihlZGdlLnNvdXJjZSwgZWRnZS50YXJnZXQpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZS5iZW5kcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgLy8gY3JlYXRlIG5ldyBkdW1teSBub2RlXG4gICAgdmFyIGR1bW15Tm9kZSA9IHRoaXMubmV3Tm9kZShudWxsKTtcbiAgICBkdW1teU5vZGUuc2V0UmVjdChuZXcgUG9pbnQoMCwgMCksIG5ldyBEaW1lbnNpb24oMSwgMSkpO1xuXG4gICAgZ3JhcGguYWRkKGR1bW15Tm9kZSk7XG5cbiAgICAvLyBjcmVhdGUgbmV3IGR1bW15IGVkZ2UgYmV0d2VlbiBwcmV2IGFuZCBkdW1teSBub2RlXG4gICAgdmFyIGR1bW15RWRnZSA9IHRoaXMubmV3RWRnZShudWxsKTtcbiAgICB0aGlzLmdyYXBoTWFuYWdlci5hZGQoZHVtbXlFZGdlLCBwcmV2LCBkdW1teU5vZGUpO1xuXG4gICAgZHVtbXlOb2Rlcy5hZGQoZHVtbXlOb2RlKTtcbiAgICBwcmV2ID0gZHVtbXlOb2RlO1xuICB9XG5cbiAgdmFyIGR1bW15RWRnZSA9IHRoaXMubmV3RWRnZShudWxsKTtcbiAgdGhpcy5ncmFwaE1hbmFnZXIuYWRkKGR1bW15RWRnZSwgcHJldiwgZWRnZS50YXJnZXQpO1xuXG4gIHRoaXMuZWRnZVRvRHVtbXlOb2Rlcy5zZXQoZWRnZSwgZHVtbXlOb2Rlcyk7XG5cbiAgLy8gcmVtb3ZlIHJlYWwgZWRnZSBmcm9tIGdyYXBoIG1hbmFnZXIgaWYgaXQgaXMgaW50ZXItZ3JhcGhcbiAgaWYgKGVkZ2UuaXNJbnRlckdyYXBoKCkpIHtcbiAgICB0aGlzLmdyYXBoTWFuYWdlci5yZW1vdmUoZWRnZSk7XG4gIH1cbiAgLy8gZWxzZSwgcmVtb3ZlIHRoZSBlZGdlIGZyb20gdGhlIGN1cnJlbnQgZ3JhcGhcbiAgZWxzZSB7XG4gICAgICBncmFwaC5yZW1vdmUoZWRnZSk7XG4gICAgfVxuXG4gIHJldHVybiBkdW1teU5vZGVzO1xufTtcblxuLyoqXHJcbiAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYmVuZHBvaW50cyBmb3IgZWRnZXMgZnJvbSB0aGUgZHVtbXkgbm9kZXNcclxuICogYXQgbC1sZXZlbC5cclxuICovXG5MYXlvdXQucHJvdG90eXBlLmNyZWF0ZUJlbmRwb2ludHNGcm9tRHVtbXlOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVkZ2VzID0gW107XG4gIGVkZ2VzID0gZWRnZXMuY29uY2F0KHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbEVkZ2VzKCkpO1xuICBlZGdlcyA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodGhpcy5lZGdlVG9EdW1teU5vZGVzLmtleXMoKSkpLmNvbmNhdChlZGdlcyk7XG5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBlZGdlcy5sZW5ndGg7IGsrKykge1xuICAgIHZhciBsRWRnZSA9IGVkZ2VzW2tdO1xuXG4gICAgaWYgKGxFZGdlLmJlbmRwb2ludHMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIHBhdGggPSB0aGlzLmVkZ2VUb0R1bW15Tm9kZXMuZ2V0KGxFZGdlKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBkdW1teU5vZGUgPSBwYXRoW2ldO1xuICAgICAgICB2YXIgcCA9IG5ldyBQb2ludEQoZHVtbXlOb2RlLmdldENlbnRlclgoKSwgZHVtbXlOb2RlLmdldENlbnRlclkoKSk7XG5cbiAgICAgICAgLy8gdXBkYXRlIGJlbmRwb2ludCdzIGxvY2F0aW9uIGFjY29yZGluZyB0byBkdW1teSBub2RlXG4gICAgICAgIHZhciBlYnAgPSBsRWRnZS5iZW5kcG9pbnRzLmdldChpKTtcbiAgICAgICAgZWJwLnggPSBwLng7XG4gICAgICAgIGVicC55ID0gcC55O1xuXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgZHVtbXkgbm9kZSwgZHVtbXkgZWRnZXMgaW5jaWRlbnQgd2l0aCB0aGlzXG4gICAgICAgIC8vIGR1bW15IG5vZGUgaXMgYWxzbyByZW1vdmVkICh3aXRoaW4gdGhlIHJlbW92ZSBtZXRob2QpXG4gICAgICAgIGR1bW15Tm9kZS5nZXRPd25lcigpLnJlbW92ZShkdW1teU5vZGUpO1xuICAgICAgfVxuXG4gICAgICAvLyBhZGQgdGhlIHJlYWwgZWRnZSB0byBncmFwaFxuICAgICAgdGhpcy5ncmFwaE1hbmFnZXIuYWRkKGxFZGdlLCBsRWRnZS5zb3VyY2UsIGxFZGdlLnRhcmdldCk7XG4gICAgfVxuICB9XG59O1xuXG5MYXlvdXQudHJhbnNmb3JtID0gZnVuY3Rpb24gKHNsaWRlclZhbHVlLCBkZWZhdWx0VmFsdWUsIG1pbkRpdiwgbWF4TXVsKSB7XG4gIGlmIChtaW5EaXYgIT0gdW5kZWZpbmVkICYmIG1heE11bCAhPSB1bmRlZmluZWQpIHtcbiAgICB2YXIgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XG5cbiAgICBpZiAoc2xpZGVyVmFsdWUgPD0gNTApIHtcbiAgICAgIHZhciBtaW5WYWx1ZSA9IGRlZmF1bHRWYWx1ZSAvIG1pbkRpdjtcbiAgICAgIHZhbHVlIC09IChkZWZhdWx0VmFsdWUgLSBtaW5WYWx1ZSkgLyA1MCAqICg1MCAtIHNsaWRlclZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG1heFZhbHVlID0gZGVmYXVsdFZhbHVlICogbWF4TXVsO1xuICAgICAgdmFsdWUgKz0gKG1heFZhbHVlIC0gZGVmYXVsdFZhbHVlKSAvIDUwICogKHNsaWRlclZhbHVlIC0gNTApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgYSwgYjtcblxuICAgIGlmIChzbGlkZXJWYWx1ZSA8PSA1MCkge1xuICAgICAgYSA9IDkuMCAqIGRlZmF1bHRWYWx1ZSAvIDUwMC4wO1xuICAgICAgYiA9IGRlZmF1bHRWYWx1ZSAvIDEwLjA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSA5LjAgKiBkZWZhdWx0VmFsdWUgLyA1MC4wO1xuICAgICAgYiA9IC04ICogZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBhICogc2xpZGVyVmFsdWUgKyBiO1xuICB9XG59O1xuXG4vKipcclxuICogVGhpcyBtZXRob2QgZmluZHMgYW5kIHJldHVybnMgdGhlIGNlbnRlciBvZiB0aGUgZ2l2ZW4gbm9kZXMsIGFzc3VtaW5nXHJcbiAqIHRoYXQgdGhlIGdpdmVuIG5vZGVzIGZvcm0gYSB0cmVlIGluIHRoZW1zZWx2ZXMuXHJcbiAqL1xuTGF5b3V0LmZpbmRDZW50ZXJPZlRyZWUgPSBmdW5jdGlvbiAobm9kZXMpIHtcbiAgdmFyIGxpc3QgPSBbXTtcbiAgbGlzdCA9IGxpc3QuY29uY2F0KG5vZGVzKTtcblxuICB2YXIgcmVtb3ZlZE5vZGVzID0gW107XG4gIHZhciByZW1haW5pbmdEZWdyZWVzID0gbmV3IE1hcCgpO1xuICB2YXIgZm91bmRDZW50ZXIgPSBmYWxzZTtcbiAgdmFyIGNlbnRlck5vZGUgPSBudWxsO1xuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PSAxIHx8IGxpc3QubGVuZ3RoID09IDIpIHtcbiAgICBmb3VuZENlbnRlciA9IHRydWU7XG4gICAgY2VudGVyTm9kZSA9IGxpc3RbMF07XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IGxpc3RbaV07XG4gICAgdmFyIGRlZ3JlZSA9IG5vZGUuZ2V0TmVpZ2hib3JzTGlzdCgpLnNpemU7XG4gICAgcmVtYWluaW5nRGVncmVlcy5zZXQobm9kZSwgbm9kZS5nZXROZWlnaGJvcnNMaXN0KCkuc2l6ZSk7XG5cbiAgICBpZiAoZGVncmVlID09IDEpIHtcbiAgICAgIHJlbW92ZWROb2Rlcy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciB0ZW1wTGlzdCA9IFtdO1xuICB0ZW1wTGlzdCA9IHRlbXBMaXN0LmNvbmNhdChyZW1vdmVkTm9kZXMpO1xuXG4gIHdoaWxlICghZm91bmRDZW50ZXIpIHtcbiAgICB2YXIgdGVtcExpc3QyID0gW107XG4gICAgdGVtcExpc3QyID0gdGVtcExpc3QyLmNvbmNhdCh0ZW1wTGlzdCk7XG4gICAgdGVtcExpc3QgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBsaXN0W2ldO1xuXG4gICAgICB2YXIgaW5kZXggPSBsaXN0LmluZGV4T2Yobm9kZSk7XG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBuZWlnaGJvdXJzID0gbm9kZS5nZXROZWlnaGJvcnNMaXN0KCk7XG5cbiAgICAgIG5laWdoYm91cnMuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3VyKSB7XG4gICAgICAgIGlmIChyZW1vdmVkTm9kZXMuaW5kZXhPZihuZWlnaGJvdXIpIDwgMCkge1xuICAgICAgICAgIHZhciBvdGhlckRlZ3JlZSA9IHJlbWFpbmluZ0RlZ3JlZXMuZ2V0KG5laWdoYm91cik7XG4gICAgICAgICAgdmFyIG5ld0RlZ3JlZSA9IG90aGVyRGVncmVlIC0gMTtcblxuICAgICAgICAgIGlmIChuZXdEZWdyZWUgPT0gMSkge1xuICAgICAgICAgICAgdGVtcExpc3QucHVzaChuZWlnaGJvdXIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlbWFpbmluZ0RlZ3JlZXMuc2V0KG5laWdoYm91ciwgbmV3RGVncmVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlZE5vZGVzID0gcmVtb3ZlZE5vZGVzLmNvbmNhdCh0ZW1wTGlzdCk7XG5cbiAgICBpZiAobGlzdC5sZW5ndGggPT0gMSB8fCBsaXN0Lmxlbmd0aCA9PSAyKSB7XG4gICAgICBmb3VuZENlbnRlciA9IHRydWU7XG4gICAgICBjZW50ZXJOb2RlID0gbGlzdFswXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2VudGVyTm9kZTtcbn07XG5cbi8qKlxyXG4gKiBEdXJpbmcgdGhlIGNvYXJzZW5pbmcgcHJvY2VzcywgdGhpcyBsYXlvdXQgbWF5IGJlIHJlZmVyZW5jZWQgYnkgdHdvIGdyYXBoIG1hbmFnZXJzXHJcbiAqIHRoaXMgc2V0dGVyIGZ1bmN0aW9uIGdyYW50cyBhY2Nlc3MgdG8gY2hhbmdlIHRoZSBjdXJyZW50bHkgYmVpbmcgdXNlZCBncmFwaCBtYW5hZ2VyXHJcbiAqL1xuTGF5b3V0LnByb3RvdHlwZS5zZXRHcmFwaE1hbmFnZXIgPSBmdW5jdGlvbiAoZ20pIHtcbiAgdGhpcy5ncmFwaE1hbmFnZXIgPSBnbTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTGF5b3V0O1xuXG4vKioqLyB9KSxcbi8qIDE2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIFJhbmRvbVNlZWQoKSB7fVxuLy8gYWRhcHRlZCBmcm9tOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTkzMDM3MjVcblJhbmRvbVNlZWQuc2VlZCA9IDE7XG5SYW5kb21TZWVkLnggPSAwO1xuXG5SYW5kb21TZWVkLm5leHREb3VibGUgPSBmdW5jdGlvbiAoKSB7XG4gIFJhbmRvbVNlZWQueCA9IE1hdGguc2luKFJhbmRvbVNlZWQuc2VlZCsrKSAqIDEwMDAwO1xuICByZXR1cm4gUmFuZG9tU2VlZC54IC0gTWF0aC5mbG9vcihSYW5kb21TZWVkLngpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSYW5kb21TZWVkO1xuXG4vKioqLyB9KSxcbi8qIDE3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBQb2ludEQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXG5mdW5jdGlvbiBUcmFuc2Zvcm0oeCwgeSkge1xuICB0aGlzLmx3b3JsZE9yZ1ggPSAwLjA7XG4gIHRoaXMubHdvcmxkT3JnWSA9IDAuMDtcbiAgdGhpcy5sZGV2aWNlT3JnWCA9IDAuMDtcbiAgdGhpcy5sZGV2aWNlT3JnWSA9IDAuMDtcbiAgdGhpcy5sd29ybGRFeHRYID0gMS4wO1xuICB0aGlzLmx3b3JsZEV4dFkgPSAxLjA7XG4gIHRoaXMubGRldmljZUV4dFggPSAxLjA7XG4gIHRoaXMubGRldmljZUV4dFkgPSAxLjA7XG59XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0V29ybGRPcmdYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sd29ybGRPcmdYO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXRXb3JsZE9yZ1ggPSBmdW5jdGlvbiAod294KSB7XG4gIHRoaXMubHdvcmxkT3JnWCA9IHdveDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0V29ybGRPcmdZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sd29ybGRPcmdZO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXRXb3JsZE9yZ1kgPSBmdW5jdGlvbiAod295KSB7XG4gIHRoaXMubHdvcmxkT3JnWSA9IHdveTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0V29ybGRFeHRYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sd29ybGRFeHRYO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXRXb3JsZEV4dFggPSBmdW5jdGlvbiAod2V4KSB7XG4gIHRoaXMubHdvcmxkRXh0WCA9IHdleDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0V29ybGRFeHRZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sd29ybGRFeHRZO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXRXb3JsZEV4dFkgPSBmdW5jdGlvbiAod2V5KSB7XG4gIHRoaXMubHdvcmxkRXh0WSA9IHdleTtcbn07XG5cbi8qIERldmljZSByZWxhdGVkICovXG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0RGV2aWNlT3JnWCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubGRldmljZU9yZ1g7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnNldERldmljZU9yZ1ggPSBmdW5jdGlvbiAoZG94KSB7XG4gIHRoaXMubGRldmljZU9yZ1ggPSBkb3g7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLmdldERldmljZU9yZ1kgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxkZXZpY2VPcmdZO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXREZXZpY2VPcmdZID0gZnVuY3Rpb24gKGRveSkge1xuICB0aGlzLmxkZXZpY2VPcmdZID0gZG95O1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5nZXREZXZpY2VFeHRYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sZGV2aWNlRXh0WDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuc2V0RGV2aWNlRXh0WCA9IGZ1bmN0aW9uIChkZXgpIHtcbiAgdGhpcy5sZGV2aWNlRXh0WCA9IGRleDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0RGV2aWNlRXh0WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubGRldmljZUV4dFk7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnNldERldmljZUV4dFkgPSBmdW5jdGlvbiAoZGV5KSB7XG4gIHRoaXMubGRldmljZUV4dFkgPSBkZXk7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnRyYW5zZm9ybVggPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgeERldmljZSA9IDAuMDtcbiAgdmFyIHdvcmxkRXh0WCA9IHRoaXMubHdvcmxkRXh0WDtcbiAgaWYgKHdvcmxkRXh0WCAhPSAwLjApIHtcbiAgICB4RGV2aWNlID0gdGhpcy5sZGV2aWNlT3JnWCArICh4IC0gdGhpcy5sd29ybGRPcmdYKSAqIHRoaXMubGRldmljZUV4dFggLyB3b3JsZEV4dFg7XG4gIH1cblxuICByZXR1cm4geERldmljZTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUudHJhbnNmb3JtWSA9IGZ1bmN0aW9uICh5KSB7XG4gIHZhciB5RGV2aWNlID0gMC4wO1xuICB2YXIgd29ybGRFeHRZID0gdGhpcy5sd29ybGRFeHRZO1xuICBpZiAod29ybGRFeHRZICE9IDAuMCkge1xuICAgIHlEZXZpY2UgPSB0aGlzLmxkZXZpY2VPcmdZICsgKHkgLSB0aGlzLmx3b3JsZE9yZ1kpICogdGhpcy5sZGV2aWNlRXh0WSAvIHdvcmxkRXh0WTtcbiAgfVxuXG4gIHJldHVybiB5RGV2aWNlO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5pbnZlcnNlVHJhbnNmb3JtWCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciB4V29ybGQgPSAwLjA7XG4gIHZhciBkZXZpY2VFeHRYID0gdGhpcy5sZGV2aWNlRXh0WDtcbiAgaWYgKGRldmljZUV4dFggIT0gMC4wKSB7XG4gICAgeFdvcmxkID0gdGhpcy5sd29ybGRPcmdYICsgKHggLSB0aGlzLmxkZXZpY2VPcmdYKSAqIHRoaXMubHdvcmxkRXh0WCAvIGRldmljZUV4dFg7XG4gIH1cblxuICByZXR1cm4geFdvcmxkO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5pbnZlcnNlVHJhbnNmb3JtWSA9IGZ1bmN0aW9uICh5KSB7XG4gIHZhciB5V29ybGQgPSAwLjA7XG4gIHZhciBkZXZpY2VFeHRZID0gdGhpcy5sZGV2aWNlRXh0WTtcbiAgaWYgKGRldmljZUV4dFkgIT0gMC4wKSB7XG4gICAgeVdvcmxkID0gdGhpcy5sd29ybGRPcmdZICsgKHkgLSB0aGlzLmxkZXZpY2VPcmdZKSAqIHRoaXMubHdvcmxkRXh0WSAvIGRldmljZUV4dFk7XG4gIH1cbiAgcmV0dXJuIHlXb3JsZDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuaW52ZXJzZVRyYW5zZm9ybVBvaW50ID0gZnVuY3Rpb24gKGluUG9pbnQpIHtcbiAgdmFyIG91dFBvaW50ID0gbmV3IFBvaW50RCh0aGlzLmludmVyc2VUcmFuc2Zvcm1YKGluUG9pbnQueCksIHRoaXMuaW52ZXJzZVRyYW5zZm9ybVkoaW5Qb2ludC55KSk7XG4gIHJldHVybiBvdXRQb2ludDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVHJhbnNmb3JtO1xuXG4vKioqLyB9KSxcbi8qIDE4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gZWxzZSB7IHJldHVybiBBcnJheS5mcm9tKGFycik7IH0gfVxuXG52YXIgTGF5b3V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG52YXIgRkRMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xudmFyIExheW91dENvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgSUdlb21ldHJ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbnZhciBJTWF0aCA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cbmZ1bmN0aW9uIEZETGF5b3V0KCkge1xuICBMYXlvdXQuY2FsbCh0aGlzKTtcblxuICB0aGlzLnVzZVNtYXJ0SWRlYWxFZGdlTGVuZ3RoQ2FsY3VsYXRpb24gPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX1VTRV9TTUFSVF9JREVBTF9FREdFX0xFTkdUSF9DQUxDVUxBVElPTjtcbiAgdGhpcy5pZGVhbEVkZ2VMZW5ndGggPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0VER0VfTEVOR1RIO1xuICB0aGlzLnNwcmluZ0NvbnN0YW50ID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9TUFJJTkdfU1RSRU5HVEg7XG4gIHRoaXMucmVwdWxzaW9uQ29uc3RhbnQgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX1JFUFVMU0lPTl9TVFJFTkdUSDtcbiAgdGhpcy5ncmF2aXR5Q29uc3RhbnQgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVZJVFlfU1RSRU5HVEg7XG4gIHRoaXMuY29tcG91bmRHcmF2aXR5Q29uc3RhbnQgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPTVBPVU5EX0dSQVZJVFlfU1RSRU5HVEg7XG4gIHRoaXMuZ3Jhdml0eVJhbmdlRmFjdG9yID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9HUkFWSVRZX1JBTkdFX0ZBQ1RPUjtcbiAgdGhpcy5jb21wb3VuZEdyYXZpdHlSYW5nZUZhY3RvciA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ09NUE9VTkRfR1JBVklUWV9SQU5HRV9GQUNUT1I7XG4gIHRoaXMuZGlzcGxhY2VtZW50VGhyZXNob2xkUGVyTm9kZSA9IDMuMCAqIEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEggLyAxMDA7XG4gIHRoaXMuY29vbGluZ0ZhY3RvciA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ09PTElOR19GQUNUT1JfSU5DUkVNRU5UQUw7XG4gIHRoaXMuaW5pdGlhbENvb2xpbmdGYWN0b3IgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPT0xJTkdfRkFDVE9SX0lOQ1JFTUVOVEFMO1xuICB0aGlzLnRvdGFsRGlzcGxhY2VtZW50ID0gMC4wO1xuICB0aGlzLm9sZFRvdGFsRGlzcGxhY2VtZW50ID0gMC4wO1xuICB0aGlzLm1heEl0ZXJhdGlvbnMgPSBGRExheW91dENvbnN0YW50cy5NQVhfSVRFUkFUSU9OUztcbn1cblxuRkRMYXlvdXQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMYXlvdXQucHJvdG90eXBlKTtcblxuZm9yICh2YXIgcHJvcCBpbiBMYXlvdXQpIHtcbiAgRkRMYXlvdXRbcHJvcF0gPSBMYXlvdXRbcHJvcF07XG59XG5cbkZETGF5b3V0LnByb3RvdHlwZS5pbml0UGFyYW1ldGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgTGF5b3V0LnByb3RvdHlwZS5pbml0UGFyYW1ldGVycy5jYWxsKHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgdGhpcy50b3RhbEl0ZXJhdGlvbnMgPSAwO1xuICB0aGlzLm5vdEFuaW1hdGVkSXRlcmF0aW9ucyA9IDA7XG5cbiAgdGhpcy51c2VGUkdyaWRWYXJpYW50ID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9VU0VfU01BUlRfUkVQVUxTSU9OX1JBTkdFX0NBTENVTEFUSU9OO1xuXG4gIHRoaXMuZ3JpZCA9IFtdO1xufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNJZGVhbEVkZ2VMZW5ndGhzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWRnZTtcbiAgdmFyIGxjYURlcHRoO1xuICB2YXIgc291cmNlO1xuICB2YXIgdGFyZ2V0O1xuICB2YXIgc2l6ZU9mU291cmNlSW5MY2E7XG4gIHZhciBzaXplT2ZUYXJnZXRJbkxjYTtcblxuICB2YXIgYWxsRWRnZXMgPSB0aGlzLmdldEdyYXBoTWFuYWdlcigpLmdldEFsbEVkZ2VzKCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsRWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICBlZGdlID0gYWxsRWRnZXNbaV07XG5cbiAgICBlZGdlLmlkZWFsTGVuZ3RoID0gdGhpcy5pZGVhbEVkZ2VMZW5ndGg7XG5cbiAgICBpZiAoZWRnZS5pc0ludGVyR3JhcGgpIHtcbiAgICAgIHNvdXJjZSA9IGVkZ2UuZ2V0U291cmNlKCk7XG4gICAgICB0YXJnZXQgPSBlZGdlLmdldFRhcmdldCgpO1xuXG4gICAgICBzaXplT2ZTb3VyY2VJbkxjYSA9IGVkZ2UuZ2V0U291cmNlSW5MY2EoKS5nZXRFc3RpbWF0ZWRTaXplKCk7XG4gICAgICBzaXplT2ZUYXJnZXRJbkxjYSA9IGVkZ2UuZ2V0VGFyZ2V0SW5MY2EoKS5nZXRFc3RpbWF0ZWRTaXplKCk7XG5cbiAgICAgIGlmICh0aGlzLnVzZVNtYXJ0SWRlYWxFZGdlTGVuZ3RoQ2FsY3VsYXRpb24pIHtcbiAgICAgICAgZWRnZS5pZGVhbExlbmd0aCArPSBzaXplT2ZTb3VyY2VJbkxjYSArIHNpemVPZlRhcmdldEluTGNhIC0gMiAqIExheW91dENvbnN0YW50cy5TSU1QTEVfTk9ERV9TSVpFO1xuICAgICAgfVxuXG4gICAgICBsY2FEZXB0aCA9IGVkZ2UuZ2V0TGNhKCkuZ2V0SW5jbHVzaW9uVHJlZURlcHRoKCk7XG5cbiAgICAgIGVkZ2UuaWRlYWxMZW5ndGggKz0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSCAqIEZETGF5b3V0Q29uc3RhbnRzLlBFUl9MRVZFTF9JREVBTF9FREdFX0xFTkdUSF9GQUNUT1IgKiAoc291cmNlLmdldEluY2x1c2lvblRyZWVEZXB0aCgpICsgdGFyZ2V0LmdldEluY2x1c2lvblRyZWVEZXB0aCgpIC0gMiAqIGxjYURlcHRoKTtcbiAgICB9XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5pbml0U3ByaW5nRW1iZWRkZXIgPSBmdW5jdGlvbiAoKSB7XG5cbiAgdmFyIHMgPSB0aGlzLmdldEFsbE5vZGVzKCkubGVuZ3RoO1xuICBpZiAodGhpcy5pbmNyZW1lbnRhbCkge1xuICAgIGlmIChzID4gRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9MT1dFUl9OT0RFX0xJTUlUKSB7XG4gICAgICB0aGlzLmNvb2xpbmdGYWN0b3IgPSBNYXRoLm1heCh0aGlzLmNvb2xpbmdGYWN0b3IgKiBGRExheW91dENvbnN0YW50cy5DT09MSU5HX0FEQVBUQVRJT05fRkFDVE9SLCB0aGlzLmNvb2xpbmdGYWN0b3IgLSAocyAtIEZETGF5b3V0Q29uc3RhbnRzLkFEQVBUQVRJT05fTE9XRVJfTk9ERV9MSU1JVCkgLyAoRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9VUFBFUl9OT0RFX0xJTUlUIC0gRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9MT1dFUl9OT0RFX0xJTUlUKSAqIHRoaXMuY29vbGluZ0ZhY3RvciAqICgxIC0gRkRMYXlvdXRDb25zdGFudHMuQ09PTElOR19BREFQVEFUSU9OX0ZBQ1RPUikpO1xuICAgIH1cbiAgICB0aGlzLm1heE5vZGVEaXNwbGFjZW1lbnQgPSBGRExheW91dENvbnN0YW50cy5NQVhfTk9ERV9ESVNQTEFDRU1FTlRfSU5DUkVNRU5UQUw7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHMgPiBGRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX0xPV0VSX05PREVfTElNSVQpIHtcbiAgICAgIHRoaXMuY29vbGluZ0ZhY3RvciA9IE1hdGgubWF4KEZETGF5b3V0Q29uc3RhbnRzLkNPT0xJTkdfQURBUFRBVElPTl9GQUNUT1IsIDEuMCAtIChzIC0gRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9MT1dFUl9OT0RFX0xJTUlUKSAvIChGRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX1VQUEVSX05PREVfTElNSVQgLSBGRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX0xPV0VSX05PREVfTElNSVQpICogKDEgLSBGRExheW91dENvbnN0YW50cy5DT09MSU5HX0FEQVBUQVRJT05fRkFDVE9SKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29vbGluZ0ZhY3RvciA9IDEuMDtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsQ29vbGluZ0ZhY3RvciA9IHRoaXMuY29vbGluZ0ZhY3RvcjtcbiAgICB0aGlzLm1heE5vZGVEaXNwbGFjZW1lbnQgPSBGRExheW91dENvbnN0YW50cy5NQVhfTk9ERV9ESVNQTEFDRU1FTlQ7XG4gIH1cblxuICB0aGlzLm1heEl0ZXJhdGlvbnMgPSBNYXRoLm1heCh0aGlzLmdldEFsbE5vZGVzKCkubGVuZ3RoICogNSwgdGhpcy5tYXhJdGVyYXRpb25zKTtcblxuICB0aGlzLnRvdGFsRGlzcGxhY2VtZW50VGhyZXNob2xkID0gdGhpcy5kaXNwbGFjZW1lbnRUaHJlc2hvbGRQZXJOb2RlICogdGhpcy5nZXRBbGxOb2RlcygpLmxlbmd0aDtcblxuICB0aGlzLnJlcHVsc2lvblJhbmdlID0gdGhpcy5jYWxjUmVwdWxzaW9uUmFuZ2UoKTtcbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5jYWxjU3ByaW5nRm9yY2VzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbEVkZ2VzID0gdGhpcy5nZXRBbGxFZGdlcygpO1xuICB2YXIgZWRnZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxFZGdlcy5sZW5ndGg7IGkrKykge1xuICAgIGVkZ2UgPSBsRWRnZXNbaV07XG5cbiAgICB0aGlzLmNhbGNTcHJpbmdGb3JjZShlZGdlLCBlZGdlLmlkZWFsTGVuZ3RoKTtcbiAgfVxufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNSZXB1bHNpb25Gb3JjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBncmlkVXBkYXRlQWxsb3dlZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcbiAgdmFyIGZvcmNlVG9Ob2RlU3Vycm91bmRpbmdVcGRhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuXG4gIHZhciBpLCBqO1xuICB2YXIgbm9kZUEsIG5vZGVCO1xuICB2YXIgbE5vZGVzID0gdGhpcy5nZXRBbGxOb2RlcygpO1xuICB2YXIgcHJvY2Vzc2VkTm9kZVNldDtcblxuICBpZiAodGhpcy51c2VGUkdyaWRWYXJpYW50KSB7XG4gICAgaWYgKHRoaXMudG90YWxJdGVyYXRpb25zICUgRkRMYXlvdXRDb25zdGFudHMuR1JJRF9DQUxDVUxBVElPTl9DSEVDS19QRVJJT0QgPT0gMSAmJiBncmlkVXBkYXRlQWxsb3dlZCkge1xuICAgICAgdGhpcy51cGRhdGVHcmlkKCk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc2VkTm9kZVNldCA9IG5ldyBTZXQoKTtcblxuICAgIC8vIGNhbGN1bGF0ZSByZXB1bHNpb24gZm9yY2VzIGJldHdlZW4gZWFjaCBub2RlcyBhbmQgaXRzIHN1cnJvdW5kaW5nXG4gICAgZm9yIChpID0gMDsgaSA8IGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbm9kZUEgPSBsTm9kZXNbaV07XG4gICAgICB0aGlzLmNhbGN1bGF0ZVJlcHVsc2lvbkZvcmNlT2ZBTm9kZShub2RlQSwgcHJvY2Vzc2VkTm9kZVNldCwgZ3JpZFVwZGF0ZUFsbG93ZWQsIGZvcmNlVG9Ob2RlU3Vycm91bmRpbmdVcGRhdGUpO1xuICAgICAgcHJvY2Vzc2VkTm9kZVNldC5hZGQobm9kZUEpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub2RlQSA9IGxOb2Rlc1tpXTtcblxuICAgICAgZm9yIChqID0gaSArIDE7IGogPCBsTm9kZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgbm9kZUIgPSBsTm9kZXNbal07XG5cbiAgICAgICAgLy8gSWYgYm90aCBub2RlcyBhcmUgbm90IG1lbWJlcnMgb2YgdGhlIHNhbWUgZ3JhcGgsIHNraXAuXG4gICAgICAgIGlmIChub2RlQS5nZXRPd25lcigpICE9IG5vZGVCLmdldE93bmVyKCkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2FsY1JlcHVsc2lvbkZvcmNlKG5vZGVBLCBub2RlQik7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY0dyYXZpdGF0aW9uYWxGb3JjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBub2RlO1xuICB2YXIgbE5vZGVzID0gdGhpcy5nZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbigpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbm9kZSA9IGxOb2Rlc1tpXTtcbiAgICB0aGlzLmNhbGNHcmF2aXRhdGlvbmFsRm9yY2Uobm9kZSk7XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5tb3ZlTm9kZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsTm9kZXMgPSB0aGlzLmdldEFsbE5vZGVzKCk7XG4gIHZhciBub2RlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbm9kZSA9IGxOb2Rlc1tpXTtcbiAgICBub2RlLm1vdmUoKTtcbiAgfVxufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNTcHJpbmdGb3JjZSA9IGZ1bmN0aW9uIChlZGdlLCBpZGVhbExlbmd0aCkge1xuICB2YXIgc291cmNlTm9kZSA9IGVkZ2UuZ2V0U291cmNlKCk7XG4gIHZhciB0YXJnZXROb2RlID0gZWRnZS5nZXRUYXJnZXQoKTtcblxuICB2YXIgbGVuZ3RoO1xuICB2YXIgc3ByaW5nRm9yY2U7XG4gIHZhciBzcHJpbmdGb3JjZVg7XG4gIHZhciBzcHJpbmdGb3JjZVk7XG5cbiAgLy8gVXBkYXRlIGVkZ2UgbGVuZ3RoXG4gIGlmICh0aGlzLnVuaWZvcm1MZWFmTm9kZVNpemVzICYmIHNvdXJjZU5vZGUuZ2V0Q2hpbGQoKSA9PSBudWxsICYmIHRhcmdldE5vZGUuZ2V0Q2hpbGQoKSA9PSBudWxsKSB7XG4gICAgZWRnZS51cGRhdGVMZW5ndGhTaW1wbGUoKTtcbiAgfSBlbHNlIHtcbiAgICBlZGdlLnVwZGF0ZUxlbmd0aCgpO1xuXG4gICAgaWYgKGVkZ2UuaXNPdmVybGFwaW5nU291cmNlQW5kVGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgbGVuZ3RoID0gZWRnZS5nZXRMZW5ndGgoKTtcblxuICBpZiAobGVuZ3RoID09IDApIHJldHVybjtcblxuICAvLyBDYWxjdWxhdGUgc3ByaW5nIGZvcmNlc1xuICBzcHJpbmdGb3JjZSA9IHRoaXMuc3ByaW5nQ29uc3RhbnQgKiAobGVuZ3RoIC0gaWRlYWxMZW5ndGgpO1xuXG4gIC8vIFByb2plY3QgZm9yY2Ugb250byB4IGFuZCB5IGF4ZXNcbiAgc3ByaW5nRm9yY2VYID0gc3ByaW5nRm9yY2UgKiAoZWRnZS5sZW5ndGhYIC8gbGVuZ3RoKTtcbiAgc3ByaW5nRm9yY2VZID0gc3ByaW5nRm9yY2UgKiAoZWRnZS5sZW5ndGhZIC8gbGVuZ3RoKTtcblxuICAvLyBBcHBseSBmb3JjZXMgb24gdGhlIGVuZCBub2Rlc1xuICBzb3VyY2VOb2RlLnNwcmluZ0ZvcmNlWCArPSBzcHJpbmdGb3JjZVg7XG4gIHNvdXJjZU5vZGUuc3ByaW5nRm9yY2VZICs9IHNwcmluZ0ZvcmNlWTtcbiAgdGFyZ2V0Tm9kZS5zcHJpbmdGb3JjZVggLT0gc3ByaW5nRm9yY2VYO1xuICB0YXJnZXROb2RlLnNwcmluZ0ZvcmNlWSAtPSBzcHJpbmdGb3JjZVk7XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY1JlcHVsc2lvbkZvcmNlID0gZnVuY3Rpb24gKG5vZGVBLCBub2RlQikge1xuICB2YXIgcmVjdEEgPSBub2RlQS5nZXRSZWN0KCk7XG4gIHZhciByZWN0QiA9IG5vZGVCLmdldFJlY3QoKTtcbiAgdmFyIG92ZXJsYXBBbW91bnQgPSBuZXcgQXJyYXkoMik7XG4gIHZhciBjbGlwUG9pbnRzID0gbmV3IEFycmF5KDQpO1xuICB2YXIgZGlzdGFuY2VYO1xuICB2YXIgZGlzdGFuY2VZO1xuICB2YXIgZGlzdGFuY2VTcXVhcmVkO1xuICB2YXIgZGlzdGFuY2U7XG4gIHZhciByZXB1bHNpb25Gb3JjZTtcbiAgdmFyIHJlcHVsc2lvbkZvcmNlWDtcbiAgdmFyIHJlcHVsc2lvbkZvcmNlWTtcblxuICBpZiAocmVjdEEuaW50ZXJzZWN0cyhyZWN0QikpIC8vIHR3byBub2RlcyBvdmVybGFwXG4gICAge1xuICAgICAgLy8gY2FsY3VsYXRlIHNlcGFyYXRpb24gYW1vdW50IGluIHggYW5kIHkgZGlyZWN0aW9uc1xuICAgICAgSUdlb21ldHJ5LmNhbGNTZXBhcmF0aW9uQW1vdW50KHJlY3RBLCByZWN0Qiwgb3ZlcmxhcEFtb3VudCwgRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSCAvIDIuMCk7XG5cbiAgICAgIHJlcHVsc2lvbkZvcmNlWCA9IDIgKiBvdmVybGFwQW1vdW50WzBdO1xuICAgICAgcmVwdWxzaW9uRm9yY2VZID0gMiAqIG92ZXJsYXBBbW91bnRbMV07XG5cbiAgICAgIHZhciBjaGlsZHJlbkNvbnN0YW50ID0gbm9kZUEubm9PZkNoaWxkcmVuICogbm9kZUIubm9PZkNoaWxkcmVuIC8gKG5vZGVBLm5vT2ZDaGlsZHJlbiArIG5vZGVCLm5vT2ZDaGlsZHJlbik7XG5cbiAgICAgIC8vIEFwcGx5IGZvcmNlcyBvbiB0aGUgdHdvIG5vZGVzXG4gICAgICBub2RlQS5yZXB1bHNpb25Gb3JjZVggLT0gY2hpbGRyZW5Db25zdGFudCAqIHJlcHVsc2lvbkZvcmNlWDtcbiAgICAgIG5vZGVBLnJlcHVsc2lvbkZvcmNlWSAtPSBjaGlsZHJlbkNvbnN0YW50ICogcmVwdWxzaW9uRm9yY2VZO1xuICAgICAgbm9kZUIucmVwdWxzaW9uRm9yY2VYICs9IGNoaWxkcmVuQ29uc3RhbnQgKiByZXB1bHNpb25Gb3JjZVg7XG4gICAgICBub2RlQi5yZXB1bHNpb25Gb3JjZVkgKz0gY2hpbGRyZW5Db25zdGFudCAqIHJlcHVsc2lvbkZvcmNlWTtcbiAgICB9IGVsc2UgLy8gbm8gb3ZlcmxhcFxuICAgIHtcbiAgICAgIC8vIGNhbGN1bGF0ZSBkaXN0YW5jZVxuXG4gICAgICBpZiAodGhpcy51bmlmb3JtTGVhZk5vZGVTaXplcyAmJiBub2RlQS5nZXRDaGlsZCgpID09IG51bGwgJiYgbm9kZUIuZ2V0Q2hpbGQoKSA9PSBudWxsKSAvLyBzaW1wbHkgYmFzZSByZXB1bHNpb24gb24gZGlzdGFuY2Ugb2Ygbm9kZSBjZW50ZXJzXG4gICAgICAgIHtcbiAgICAgICAgICBkaXN0YW5jZVggPSByZWN0Qi5nZXRDZW50ZXJYKCkgLSByZWN0QS5nZXRDZW50ZXJYKCk7XG4gICAgICAgICAgZGlzdGFuY2VZID0gcmVjdEIuZ2V0Q2VudGVyWSgpIC0gcmVjdEEuZ2V0Q2VudGVyWSgpO1xuICAgICAgICB9IGVsc2UgLy8gdXNlIGNsaXBwaW5nIHBvaW50c1xuICAgICAgICB7XG4gICAgICAgICAgSUdlb21ldHJ5LmdldEludGVyc2VjdGlvbihyZWN0QSwgcmVjdEIsIGNsaXBQb2ludHMpO1xuXG4gICAgICAgICAgZGlzdGFuY2VYID0gY2xpcFBvaW50c1syXSAtIGNsaXBQb2ludHNbMF07XG4gICAgICAgICAgZGlzdGFuY2VZID0gY2xpcFBvaW50c1szXSAtIGNsaXBQb2ludHNbMV07XG4gICAgICAgIH1cblxuICAgICAgLy8gTm8gcmVwdWxzaW9uIHJhbmdlLiBGUiBncmlkIHZhcmlhbnQgc2hvdWxkIHRha2UgY2FyZSBvZiB0aGlzLlxuICAgICAgaWYgKE1hdGguYWJzKGRpc3RhbmNlWCkgPCBGRExheW91dENvbnN0YW50cy5NSU5fUkVQVUxTSU9OX0RJU1QpIHtcbiAgICAgICAgZGlzdGFuY2VYID0gSU1hdGguc2lnbihkaXN0YW5jZVgpICogRkRMYXlvdXRDb25zdGFudHMuTUlOX1JFUFVMU0lPTl9ESVNUO1xuICAgICAgfVxuXG4gICAgICBpZiAoTWF0aC5hYnMoZGlzdGFuY2VZKSA8IEZETGF5b3V0Q29uc3RhbnRzLk1JTl9SRVBVTFNJT05fRElTVCkge1xuICAgICAgICBkaXN0YW5jZVkgPSBJTWF0aC5zaWduKGRpc3RhbmNlWSkgKiBGRExheW91dENvbnN0YW50cy5NSU5fUkVQVUxTSU9OX0RJU1Q7XG4gICAgICB9XG5cbiAgICAgIGRpc3RhbmNlU3F1YXJlZCA9IGRpc3RhbmNlWCAqIGRpc3RhbmNlWCArIGRpc3RhbmNlWSAqIGRpc3RhbmNlWTtcbiAgICAgIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGRpc3RhbmNlU3F1YXJlZCk7XG5cbiAgICAgIHJlcHVsc2lvbkZvcmNlID0gdGhpcy5yZXB1bHNpb25Db25zdGFudCAqIG5vZGVBLm5vT2ZDaGlsZHJlbiAqIG5vZGVCLm5vT2ZDaGlsZHJlbiAvIGRpc3RhbmNlU3F1YXJlZDtcblxuICAgICAgLy8gUHJvamVjdCBmb3JjZSBvbnRvIHggYW5kIHkgYXhlc1xuICAgICAgcmVwdWxzaW9uRm9yY2VYID0gcmVwdWxzaW9uRm9yY2UgKiBkaXN0YW5jZVggLyBkaXN0YW5jZTtcbiAgICAgIHJlcHVsc2lvbkZvcmNlWSA9IHJlcHVsc2lvbkZvcmNlICogZGlzdGFuY2VZIC8gZGlzdGFuY2U7XG5cbiAgICAgIC8vIEFwcGx5IGZvcmNlcyBvbiB0aGUgdHdvIG5vZGVzICAgIFxuICAgICAgbm9kZUEucmVwdWxzaW9uRm9yY2VYIC09IHJlcHVsc2lvbkZvcmNlWDtcbiAgICAgIG5vZGVBLnJlcHVsc2lvbkZvcmNlWSAtPSByZXB1bHNpb25Gb3JjZVk7XG4gICAgICBub2RlQi5yZXB1bHNpb25Gb3JjZVggKz0gcmVwdWxzaW9uRm9yY2VYO1xuICAgICAgbm9kZUIucmVwdWxzaW9uRm9yY2VZICs9IHJlcHVsc2lvbkZvcmNlWTtcbiAgICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY0dyYXZpdGF0aW9uYWxGb3JjZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIHZhciBvd25lckdyYXBoO1xuICB2YXIgb3duZXJDZW50ZXJYO1xuICB2YXIgb3duZXJDZW50ZXJZO1xuICB2YXIgZGlzdGFuY2VYO1xuICB2YXIgZGlzdGFuY2VZO1xuICB2YXIgYWJzRGlzdGFuY2VYO1xuICB2YXIgYWJzRGlzdGFuY2VZO1xuICB2YXIgZXN0aW1hdGVkU2l6ZTtcbiAgb3duZXJHcmFwaCA9IG5vZGUuZ2V0T3duZXIoKTtcblxuICBvd25lckNlbnRlclggPSAob3duZXJHcmFwaC5nZXRSaWdodCgpICsgb3duZXJHcmFwaC5nZXRMZWZ0KCkpIC8gMjtcbiAgb3duZXJDZW50ZXJZID0gKG93bmVyR3JhcGguZ2V0VG9wKCkgKyBvd25lckdyYXBoLmdldEJvdHRvbSgpKSAvIDI7XG4gIGRpc3RhbmNlWCA9IG5vZGUuZ2V0Q2VudGVyWCgpIC0gb3duZXJDZW50ZXJYO1xuICBkaXN0YW5jZVkgPSBub2RlLmdldENlbnRlclkoKSAtIG93bmVyQ2VudGVyWTtcbiAgYWJzRGlzdGFuY2VYID0gTWF0aC5hYnMoZGlzdGFuY2VYKSArIG5vZGUuZ2V0V2lkdGgoKSAvIDI7XG4gIGFic0Rpc3RhbmNlWSA9IE1hdGguYWJzKGRpc3RhbmNlWSkgKyBub2RlLmdldEhlaWdodCgpIC8gMjtcblxuICBpZiAobm9kZS5nZXRPd25lcigpID09IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKSkgLy8gaW4gdGhlIHJvb3QgZ3JhcGhcbiAgICB7XG4gICAgICBlc3RpbWF0ZWRTaXplID0gb3duZXJHcmFwaC5nZXRFc3RpbWF0ZWRTaXplKCkgKiB0aGlzLmdyYXZpdHlSYW5nZUZhY3RvcjtcblxuICAgICAgaWYgKGFic0Rpc3RhbmNlWCA+IGVzdGltYXRlZFNpemUgfHwgYWJzRGlzdGFuY2VZID4gZXN0aW1hdGVkU2l6ZSkge1xuICAgICAgICBub2RlLmdyYXZpdGF0aW9uRm9yY2VYID0gLXRoaXMuZ3Jhdml0eUNvbnN0YW50ICogZGlzdGFuY2VYO1xuICAgICAgICBub2RlLmdyYXZpdGF0aW9uRm9yY2VZID0gLXRoaXMuZ3Jhdml0eUNvbnN0YW50ICogZGlzdGFuY2VZO1xuICAgICAgfVxuICAgIH0gZWxzZSAvLyBpbnNpZGUgYSBjb21wb3VuZFxuICAgIHtcbiAgICAgIGVzdGltYXRlZFNpemUgPSBvd25lckdyYXBoLmdldEVzdGltYXRlZFNpemUoKSAqIHRoaXMuY29tcG91bmRHcmF2aXR5UmFuZ2VGYWN0b3I7XG5cbiAgICAgIGlmIChhYnNEaXN0YW5jZVggPiBlc3RpbWF0ZWRTaXplIHx8IGFic0Rpc3RhbmNlWSA+IGVzdGltYXRlZFNpemUpIHtcbiAgICAgICAgbm9kZS5ncmF2aXRhdGlvbkZvcmNlWCA9IC10aGlzLmdyYXZpdHlDb25zdGFudCAqIGRpc3RhbmNlWCAqIHRoaXMuY29tcG91bmRHcmF2aXR5Q29uc3RhbnQ7XG4gICAgICAgIG5vZGUuZ3Jhdml0YXRpb25Gb3JjZVkgPSAtdGhpcy5ncmF2aXR5Q29uc3RhbnQgKiBkaXN0YW5jZVkgKiB0aGlzLmNvbXBvdW5kR3Jhdml0eUNvbnN0YW50O1xuICAgICAgfVxuICAgIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5pc0NvbnZlcmdlZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNvbnZlcmdlZDtcbiAgdmFyIG9zY2lsYXRpbmcgPSBmYWxzZTtcblxuICBpZiAodGhpcy50b3RhbEl0ZXJhdGlvbnMgPiB0aGlzLm1heEl0ZXJhdGlvbnMgLyAzKSB7XG4gICAgb3NjaWxhdGluZyA9IE1hdGguYWJzKHRoaXMudG90YWxEaXNwbGFjZW1lbnQgLSB0aGlzLm9sZFRvdGFsRGlzcGxhY2VtZW50KSA8IDI7XG4gIH1cblxuICBjb252ZXJnZWQgPSB0aGlzLnRvdGFsRGlzcGxhY2VtZW50IDwgdGhpcy50b3RhbERpc3BsYWNlbWVudFRocmVzaG9sZDtcblxuICB0aGlzLm9sZFRvdGFsRGlzcGxhY2VtZW50ID0gdGhpcy50b3RhbERpc3BsYWNlbWVudDtcblxuICByZXR1cm4gY29udmVyZ2VkIHx8IG9zY2lsYXRpbmc7XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuYW5pbWF0aW9uRHVyaW5nTGF5b3V0ICYmICF0aGlzLmlzU3ViTGF5b3V0KSB7XG4gICAgaWYgKHRoaXMubm90QW5pbWF0ZWRJdGVyYXRpb25zID09IHRoaXMuYW5pbWF0aW9uUGVyaW9kKSB7XG4gICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgdGhpcy5ub3RBbmltYXRlZEl0ZXJhdGlvbnMgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vdEFuaW1hdGVkSXRlcmF0aW9ucysrO1xuICAgIH1cbiAgfVxufTtcblxuLy9UaGlzIG1ldGhvZCBjYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gKHdlaWdodCkgZm9yIGFsbCBub2Rlc1xuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNOb09mQ2hpbGRyZW5Gb3JBbGxOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG5vZGU7XG4gIHZhciBhbGxOb2RlcyA9IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbE5vZGVzKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIG5vZGUgPSBhbGxOb2Rlc1tpXTtcbiAgICBub2RlLm5vT2ZDaGlsZHJlbiA9IG5vZGUuZ2V0Tm9PZkNoaWxkcmVuKCk7XG4gIH1cbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBGUi1HcmlkIFZhcmlhbnQgUmVwdWxzaW9uIEZvcmNlIENhbGN1bGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY0dyaWQgPSBmdW5jdGlvbiAoZ3JhcGgpIHtcblxuICB2YXIgc2l6ZVggPSAwO1xuICB2YXIgc2l6ZVkgPSAwO1xuXG4gIHNpemVYID0gcGFyc2VJbnQoTWF0aC5jZWlsKChncmFwaC5nZXRSaWdodCgpIC0gZ3JhcGguZ2V0TGVmdCgpKSAvIHRoaXMucmVwdWxzaW9uUmFuZ2UpKTtcbiAgc2l6ZVkgPSBwYXJzZUludChNYXRoLmNlaWwoKGdyYXBoLmdldEJvdHRvbSgpIC0gZ3JhcGguZ2V0VG9wKCkpIC8gdGhpcy5yZXB1bHNpb25SYW5nZSkpO1xuXG4gIHZhciBncmlkID0gbmV3IEFycmF5KHNpemVYKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemVYOyBpKyspIHtcbiAgICBncmlkW2ldID0gbmV3IEFycmF5KHNpemVZKTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZVg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZVk7IGorKykge1xuICAgICAgZ3JpZFtpXVtqXSA9IG5ldyBBcnJheSgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBncmlkO1xufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmFkZE5vZGVUb0dyaWQgPSBmdW5jdGlvbiAodiwgbGVmdCwgdG9wKSB7XG5cbiAgdmFyIHN0YXJ0WCA9IDA7XG4gIHZhciBmaW5pc2hYID0gMDtcbiAgdmFyIHN0YXJ0WSA9IDA7XG4gIHZhciBmaW5pc2hZID0gMDtcblxuICBzdGFydFggPSBwYXJzZUludChNYXRoLmZsb29yKCh2LmdldFJlY3QoKS54IC0gbGVmdCkgLyB0aGlzLnJlcHVsc2lvblJhbmdlKSk7XG4gIGZpbmlzaFggPSBwYXJzZUludChNYXRoLmZsb29yKCh2LmdldFJlY3QoKS53aWR0aCArIHYuZ2V0UmVjdCgpLnggLSBsZWZ0KSAvIHRoaXMucmVwdWxzaW9uUmFuZ2UpKTtcbiAgc3RhcnRZID0gcGFyc2VJbnQoTWF0aC5mbG9vcigodi5nZXRSZWN0KCkueSAtIHRvcCkgLyB0aGlzLnJlcHVsc2lvblJhbmdlKSk7XG4gIGZpbmlzaFkgPSBwYXJzZUludChNYXRoLmZsb29yKCh2LmdldFJlY3QoKS5oZWlnaHQgKyB2LmdldFJlY3QoKS55IC0gdG9wKSAvIHRoaXMucmVwdWxzaW9uUmFuZ2UpKTtcblxuICBmb3IgKHZhciBpID0gc3RhcnRYOyBpIDw9IGZpbmlzaFg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSBzdGFydFk7IGogPD0gZmluaXNoWTsgaisrKSB7XG4gICAgICB0aGlzLmdyaWRbaV1bal0ucHVzaCh2KTtcbiAgICAgIHYuc2V0R3JpZENvb3JkaW5hdGVzKHN0YXJ0WCwgZmluaXNoWCwgc3RhcnRZLCBmaW5pc2hZKTtcbiAgICB9XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS51cGRhdGVHcmlkID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaTtcbiAgdmFyIG5vZGVBO1xuICB2YXIgbE5vZGVzID0gdGhpcy5nZXRBbGxOb2RlcygpO1xuXG4gIHRoaXMuZ3JpZCA9IHRoaXMuY2FsY0dyaWQodGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpKTtcblxuICAvLyBwdXQgYWxsIG5vZGVzIHRvIHByb3BlciBncmlkIGNlbGxzXG4gIGZvciAoaSA9IDA7IGkgPCBsTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBub2RlQSA9IGxOb2Rlc1tpXTtcbiAgICB0aGlzLmFkZE5vZGVUb0dyaWQobm9kZUEsIHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKS5nZXRMZWZ0KCksIHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKS5nZXRUb3AoKSk7XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5jYWxjdWxhdGVSZXB1bHNpb25Gb3JjZU9mQU5vZGUgPSBmdW5jdGlvbiAobm9kZUEsIHByb2Nlc3NlZE5vZGVTZXQsIGdyaWRVcGRhdGVBbGxvd2VkLCBmb3JjZVRvTm9kZVN1cnJvdW5kaW5nVXBkYXRlKSB7XG5cbiAgaWYgKHRoaXMudG90YWxJdGVyYXRpb25zICUgRkRMYXlvdXRDb25zdGFudHMuR1JJRF9DQUxDVUxBVElPTl9DSEVDS19QRVJJT0QgPT0gMSAmJiBncmlkVXBkYXRlQWxsb3dlZCB8fCBmb3JjZVRvTm9kZVN1cnJvdW5kaW5nVXBkYXRlKSB7XG4gICAgdmFyIHN1cnJvdW5kaW5nID0gbmV3IFNldCgpO1xuICAgIG5vZGVBLnN1cnJvdW5kaW5nID0gbmV3IEFycmF5KCk7XG4gICAgdmFyIG5vZGVCO1xuICAgIHZhciBncmlkID0gdGhpcy5ncmlkO1xuXG4gICAgZm9yICh2YXIgaSA9IG5vZGVBLnN0YXJ0WCAtIDE7IGkgPCBub2RlQS5maW5pc2hYICsgMjsgaSsrKSB7XG4gICAgICBmb3IgKHZhciBqID0gbm9kZUEuc3RhcnRZIC0gMTsgaiA8IG5vZGVBLmZpbmlzaFkgKyAyOyBqKyspIHtcbiAgICAgICAgaWYgKCEoaSA8IDAgfHwgaiA8IDAgfHwgaSA+PSBncmlkLmxlbmd0aCB8fCBqID49IGdyaWRbMF0ubGVuZ3RoKSkge1xuICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgZ3JpZFtpXVtqXS5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgbm9kZUIgPSBncmlkW2ldW2pdW2tdO1xuXG4gICAgICAgICAgICAvLyBJZiBib3RoIG5vZGVzIGFyZSBub3QgbWVtYmVycyBvZiB0aGUgc2FtZSBncmFwaCwgXG4gICAgICAgICAgICAvLyBvciBib3RoIG5vZGVzIGFyZSB0aGUgc2FtZSwgc2tpcC5cbiAgICAgICAgICAgIGlmIChub2RlQS5nZXRPd25lcigpICE9IG5vZGVCLmdldE93bmVyKCkgfHwgbm9kZUEgPT0gbm9kZUIpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSByZXB1bHNpb24gZm9yY2UgYmV0d2VlblxuICAgICAgICAgICAgLy8gbm9kZUEgYW5kIG5vZGVCIGhhcyBhbHJlYWR5IGJlZW4gY2FsY3VsYXRlZFxuICAgICAgICAgICAgaWYgKCFwcm9jZXNzZWROb2RlU2V0Lmhhcyhub2RlQikgJiYgIXN1cnJvdW5kaW5nLmhhcyhub2RlQikpIHtcbiAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlWCA9IE1hdGguYWJzKG5vZGVBLmdldENlbnRlclgoKSAtIG5vZGVCLmdldENlbnRlclgoKSkgLSAobm9kZUEuZ2V0V2lkdGgoKSAvIDIgKyBub2RlQi5nZXRXaWR0aCgpIC8gMik7XG4gICAgICAgICAgICAgIHZhciBkaXN0YW5jZVkgPSBNYXRoLmFicyhub2RlQS5nZXRDZW50ZXJZKCkgLSBub2RlQi5nZXRDZW50ZXJZKCkpIC0gKG5vZGVBLmdldEhlaWdodCgpIC8gMiArIG5vZGVCLmdldEhlaWdodCgpIC8gMik7XG5cbiAgICAgICAgICAgICAgLy8gaWYgdGhlIGRpc3RhbmNlIGJldHdlZW4gbm9kZUEgYW5kIG5vZGVCIFxuICAgICAgICAgICAgICAvLyBpcyBsZXNzIHRoZW4gY2FsY3VsYXRpb24gcmFuZ2VcbiAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlWCA8PSB0aGlzLnJlcHVsc2lvblJhbmdlICYmIGRpc3RhbmNlWSA8PSB0aGlzLnJlcHVsc2lvblJhbmdlKSB7XG4gICAgICAgICAgICAgICAgLy90aGVuIGFkZCBub2RlQiB0byBzdXJyb3VuZGluZyBvZiBub2RlQVxuICAgICAgICAgICAgICAgIHN1cnJvdW5kaW5nLmFkZChub2RlQik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBub2RlQS5zdXJyb3VuZGluZyA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoc3Vycm91bmRpbmcpKTtcbiAgfVxuICBmb3IgKGkgPSAwOyBpIDwgbm9kZUEuc3Vycm91bmRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLmNhbGNSZXB1bHNpb25Gb3JjZShub2RlQSwgbm9kZUEuc3Vycm91bmRpbmdbaV0pO1xuICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY1JlcHVsc2lvblJhbmdlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gMC4wO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBGRExheW91dDtcblxuLyoqKi8gfSksXG4vKiAxOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgTEVkZ2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIEZETGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblxuZnVuY3Rpb24gRkRMYXlvdXRFZGdlKHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSkge1xuICBMRWRnZS5jYWxsKHRoaXMsIHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSk7XG4gIHRoaXMuaWRlYWxMZW5ndGggPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0VER0VfTEVOR1RIO1xufVxuXG5GRExheW91dEVkZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMRWRnZS5wcm90b3R5cGUpO1xuXG5mb3IgKHZhciBwcm9wIGluIExFZGdlKSB7XG4gIEZETGF5b3V0RWRnZVtwcm9wXSA9IExFZGdlW3Byb3BdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEZETGF5b3V0RWRnZTtcblxuLyoqKi8gfSksXG4vKiAyMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgTE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG5mdW5jdGlvbiBGRExheW91dE5vZGUoZ20sIGxvYywgc2l6ZSwgdk5vZGUpIHtcbiAgLy8gYWx0ZXJuYXRpdmUgY29uc3RydWN0b3IgaXMgaGFuZGxlZCBpbnNpZGUgTE5vZGVcbiAgTE5vZGUuY2FsbCh0aGlzLCBnbSwgbG9jLCBzaXplLCB2Tm9kZSk7XG4gIC8vU3ByaW5nLCByZXB1bHNpb24gYW5kIGdyYXZpdGF0aW9uYWwgZm9yY2VzIGFjdGluZyBvbiB0aGlzIG5vZGVcbiAgdGhpcy5zcHJpbmdGb3JjZVggPSAwO1xuICB0aGlzLnNwcmluZ0ZvcmNlWSA9IDA7XG4gIHRoaXMucmVwdWxzaW9uRm9yY2VYID0gMDtcbiAgdGhpcy5yZXB1bHNpb25Gb3JjZVkgPSAwO1xuICB0aGlzLmdyYXZpdGF0aW9uRm9yY2VYID0gMDtcbiAgdGhpcy5ncmF2aXRhdGlvbkZvcmNlWSA9IDA7XG4gIC8vQW1vdW50IGJ5IHdoaWNoIHRoaXMgbm9kZSBpcyB0byBiZSBtb3ZlZCBpbiB0aGlzIGl0ZXJhdGlvblxuICB0aGlzLmRpc3BsYWNlbWVudFggPSAwO1xuICB0aGlzLmRpc3BsYWNlbWVudFkgPSAwO1xuXG4gIC8vU3RhcnQgYW5kIGZpbmlzaCBncmlkIGNvb3JkaW5hdGVzIHRoYXQgdGhpcyBub2RlIGlzIGZhbGxlbiBpbnRvXG4gIHRoaXMuc3RhcnRYID0gMDtcbiAgdGhpcy5maW5pc2hYID0gMDtcbiAgdGhpcy5zdGFydFkgPSAwO1xuICB0aGlzLmZpbmlzaFkgPSAwO1xuXG4gIC8vR2VvbWV0cmljIG5laWdoYm9ycyBvZiB0aGlzIG5vZGVcbiAgdGhpcy5zdXJyb3VuZGluZyA9IFtdO1xufVxuXG5GRExheW91dE5vZGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMTm9kZS5wcm90b3R5cGUpO1xuXG5mb3IgKHZhciBwcm9wIGluIExOb2RlKSB7XG4gIEZETGF5b3V0Tm9kZVtwcm9wXSA9IExOb2RlW3Byb3BdO1xufVxuXG5GRExheW91dE5vZGUucHJvdG90eXBlLnNldEdyaWRDb29yZGluYXRlcyA9IGZ1bmN0aW9uIChfc3RhcnRYLCBfZmluaXNoWCwgX3N0YXJ0WSwgX2ZpbmlzaFkpIHtcbiAgdGhpcy5zdGFydFggPSBfc3RhcnRYO1xuICB0aGlzLmZpbmlzaFggPSBfZmluaXNoWDtcbiAgdGhpcy5zdGFydFkgPSBfc3RhcnRZO1xuICB0aGlzLmZpbmlzaFkgPSBfZmluaXNoWTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRkRMYXlvdXROb2RlO1xuXG4vKioqLyB9KSxcbi8qIDIxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIERpbWVuc2lvbkQod2lkdGgsIGhlaWdodCkge1xuICB0aGlzLndpZHRoID0gMDtcbiAgdGhpcy5oZWlnaHQgPSAwO1xuICBpZiAod2lkdGggIT09IG51bGwgJiYgaGVpZ2h0ICE9PSBudWxsKSB7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICB9XG59XG5cbkRpbWVuc2lvbkQucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy53aWR0aDtcbn07XG5cbkRpbWVuc2lvbkQucHJvdG90eXBlLnNldFdpZHRoID0gZnVuY3Rpb24gKHdpZHRoKSB7XG4gIHRoaXMud2lkdGggPSB3aWR0aDtcbn07XG5cbkRpbWVuc2lvbkQucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuaGVpZ2h0O1xufTtcblxuRGltZW5zaW9uRC5wcm90b3R5cGUuc2V0SGVpZ2h0ID0gZnVuY3Rpb24gKGhlaWdodCkge1xuICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRGltZW5zaW9uRDtcblxuLyoqKi8gfSksXG4vKiAyMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgVW5pcXVlSURHZW5lcmV0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblxuZnVuY3Rpb24gSGFzaE1hcCgpIHtcbiAgdGhpcy5tYXAgPSB7fTtcbiAgdGhpcy5rZXlzID0gW107XG59XG5cbkhhc2hNYXAucHJvdG90eXBlLnB1dCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHZhciB0aGVJZCA9IFVuaXF1ZUlER2VuZXJldG9yLmNyZWF0ZUlEKGtleSk7XG4gIGlmICghdGhpcy5jb250YWlucyh0aGVJZCkpIHtcbiAgICB0aGlzLm1hcFt0aGVJZF0gPSB2YWx1ZTtcbiAgICB0aGlzLmtleXMucHVzaChrZXkpO1xuICB9XG59O1xuXG5IYXNoTWFwLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgdmFyIHRoZUlkID0gVW5pcXVlSURHZW5lcmV0b3IuY3JlYXRlSUQoa2V5KTtcbiAgcmV0dXJuIHRoaXMubWFwW2tleV0gIT0gbnVsbDtcbn07XG5cbkhhc2hNYXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgdmFyIHRoZUlkID0gVW5pcXVlSURHZW5lcmV0b3IuY3JlYXRlSUQoa2V5KTtcbiAgcmV0dXJuIHRoaXMubWFwW3RoZUlkXTtcbn07XG5cbkhhc2hNYXAucHJvdG90eXBlLmtleVNldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMua2V5cztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaE1hcDtcblxuLyoqKi8gfSksXG4vKiAyMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgVW5pcXVlSURHZW5lcmV0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblxuZnVuY3Rpb24gSGFzaFNldCgpIHtcbiAgdGhpcy5zZXQgPSB7fTtcbn1cbjtcblxuSGFzaFNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG9iaikge1xuICB2YXIgdGhlSWQgPSBVbmlxdWVJREdlbmVyZXRvci5jcmVhdGVJRChvYmopO1xuICBpZiAoIXRoaXMuY29udGFpbnModGhlSWQpKSB0aGlzLnNldFt0aGVJZF0gPSBvYmo7XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAob2JqKSB7XG4gIGRlbGV0ZSB0aGlzLnNldFtVbmlxdWVJREdlbmVyZXRvci5jcmVhdGVJRChvYmopXTtcbn07XG5cbkhhc2hTZXQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLnNldCA9IHt9O1xufTtcblxuSGFzaFNldC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB0aGlzLnNldFtVbmlxdWVJREdlbmVyZXRvci5jcmVhdGVJRChvYmopXSA9PSBvYmo7XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5zaXplKCkgPT09IDA7XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zZXQpLmxlbmd0aDtcbn07XG5cbi8vY29uY2F0cyB0aGlzLnNldCB0byB0aGUgZ2l2ZW4gbGlzdFxuSGFzaFNldC5wcm90b3R5cGUuYWRkQWxsVG8gPSBmdW5jdGlvbiAobGlzdCkge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuc2V0KTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgbGlzdC5wdXNoKHRoaXMuc2V0W2tleXNbaV1dKTtcbiAgfVxufTtcblxuSGFzaFNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuc2V0KS5sZW5ndGg7XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5hZGRBbGwgPSBmdW5jdGlvbiAobGlzdCkge1xuICB2YXIgcyA9IGxpc3QubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIHZhciB2ID0gbGlzdFtpXTtcbiAgICB0aGlzLmFkZCh2KTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoU2V0O1xuXG4vKioqLyB9KSxcbi8qIDI0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbi8qKlxuICogQSBjbGFzc2ljIFF1aWNrc29ydCBhbGdvcml0aG0gd2l0aCBIb2FyZSdzIHBhcnRpdGlvblxuICogLSBXb3JrcyBhbHNvIG9uIExpbmtlZExpc3Qgb2JqZWN0c1xuICpcbiAqIENvcHlyaWdodDogaS1WaXMgUmVzZWFyY2ggR3JvdXAsIEJpbGtlbnQgVW5pdmVyc2l0eSwgMjAwNyAtIHByZXNlbnRcbiAqL1xuXG52YXIgTGlua2VkTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXG52YXIgUXVpY2tzb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFF1aWNrc29ydChBLCBjb21wYXJlRnVuY3Rpb24pIHtcbiAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFF1aWNrc29ydCk7XG5cbiAgICAgICAgaWYgKGNvbXBhcmVGdW5jdGlvbiAhPT0gbnVsbCB8fCBjb21wYXJlRnVuY3Rpb24gIT09IHVuZGVmaW5lZCkgdGhpcy5jb21wYXJlRnVuY3Rpb24gPSB0aGlzLl9kZWZhdWx0Q29tcGFyZUZ1bmN0aW9uO1xuXG4gICAgICAgIHZhciBsZW5ndGggPSB2b2lkIDA7XG4gICAgICAgIGlmIChBIGluc3RhbmNlb2YgTGlua2VkTGlzdCkgbGVuZ3RoID0gQS5zaXplKCk7ZWxzZSBsZW5ndGggPSBBLmxlbmd0aDtcblxuICAgICAgICB0aGlzLl9xdWlja3NvcnQoQSwgMCwgbGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKFF1aWNrc29ydCwgW3tcbiAgICAgICAga2V5OiAnX3F1aWNrc29ydCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfcXVpY2tzb3J0KEEsIHAsIHIpIHtcbiAgICAgICAgICAgIGlmIChwIDwgcikge1xuICAgICAgICAgICAgICAgIHZhciBxID0gdGhpcy5fcGFydGl0aW9uKEEsIHAsIHIpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3F1aWNrc29ydChBLCBwLCBxKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9xdWlja3NvcnQoQSwgcSArIDEsIHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfcGFydGl0aW9uJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9wYXJ0aXRpb24oQSwgcCwgcikge1xuICAgICAgICAgICAgdmFyIHggPSB0aGlzLl9nZXQoQSwgcCk7XG4gICAgICAgICAgICB2YXIgaSA9IHA7XG4gICAgICAgICAgICB2YXIgaiA9IHI7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzLmNvbXBhcmVGdW5jdGlvbih4LCB0aGlzLl9nZXQoQSwgaikpKSB7XG4gICAgICAgICAgICAgICAgICAgIGotLTtcbiAgICAgICAgICAgICAgICB9d2hpbGUgKHRoaXMuY29tcGFyZUZ1bmN0aW9uKHRoaXMuX2dldChBLCBpKSwgeCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIH1pZiAoaSA8IGopIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3dhcChBLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHJldHVybiBqO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfZ2V0JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXQob2JqZWN0LCBpbmRleCkge1xuICAgICAgICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIExpbmtlZExpc3QpIHJldHVybiBvYmplY3QuZ2V0X29iamVjdF9hdChpbmRleCk7ZWxzZSByZXR1cm4gb2JqZWN0W2luZGV4XTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX3NldCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfc2V0KG9iamVjdCwgaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgTGlua2VkTGlzdCkgb2JqZWN0LnNldF9vYmplY3RfYXQoaW5kZXgsIHZhbHVlKTtlbHNlIG9iamVjdFtpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX3N3YXAnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX3N3YXAoQSwgaSwgaikge1xuICAgICAgICAgICAgdmFyIHRlbXAgPSB0aGlzLl9nZXQoQSwgaSk7XG4gICAgICAgICAgICB0aGlzLl9zZXQoQSwgaSwgdGhpcy5fZ2V0KEEsIGopKTtcbiAgICAgICAgICAgIHRoaXMuX3NldChBLCBqLCB0ZW1wKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX2RlZmF1bHRDb21wYXJlRnVuY3Rpb24nLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX2RlZmF1bHRDb21wYXJlRnVuY3Rpb24oYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGIgPiBhO1xuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIFF1aWNrc29ydDtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBRdWlja3NvcnQ7XG5cbi8qKiovIH0pLFxuLyogMjUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuLyoqXG4gKiAgIE5lZWRsZW1hbi1XdW5zY2ggYWxnb3JpdGhtIGlzIGFuIHByb2NlZHVyZSB0byBjb21wdXRlIHRoZSBvcHRpbWFsIGdsb2JhbCBhbGlnbm1lbnQgb2YgdHdvIHN0cmluZ1xuICogICBzZXF1ZW5jZXMgYnkgUy5CLk5lZWRsZW1hbiBhbmQgQy5ELld1bnNjaCAoMTk3MCkuXG4gKlxuICogICBBc2lkZSBmcm9tIHRoZSBpbnB1dHMsIHlvdSBjYW4gYXNzaWduIHRoZSBzY29yZXMgZm9yLFxuICogICAtIE1hdGNoOiBUaGUgdHdvIGNoYXJhY3RlcnMgYXQgdGhlIGN1cnJlbnQgaW5kZXggYXJlIHNhbWUuXG4gKiAgIC0gTWlzbWF0Y2g6IFRoZSB0d28gY2hhcmFjdGVycyBhdCB0aGUgY3VycmVudCBpbmRleCBhcmUgZGlmZmVyZW50LlxuICogICAtIEluc2VydGlvbi9EZWxldGlvbihnYXBzKTogVGhlIGJlc3QgYWxpZ25tZW50IGludm9sdmVzIG9uZSBsZXR0ZXIgYWxpZ25pbmcgdG8gYSBnYXAgaW4gdGhlIG90aGVyIHN0cmluZy5cbiAqL1xuXG52YXIgTmVlZGxlbWFuV3Vuc2NoID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5lZWRsZW1hbld1bnNjaChzZXF1ZW5jZTEsIHNlcXVlbmNlMikge1xuICAgICAgICB2YXIgbWF0Y2hfc2NvcmUgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDE7XG4gICAgICAgIHZhciBtaXNtYXRjaF9wZW5hbHR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiAtMTtcbiAgICAgICAgdmFyIGdhcF9wZW5hbHR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAtMTtcblxuICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTmVlZGxlbWFuV3Vuc2NoKTtcblxuICAgICAgICB0aGlzLnNlcXVlbmNlMSA9IHNlcXVlbmNlMTtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZTIgPSBzZXF1ZW5jZTI7XG4gICAgICAgIHRoaXMubWF0Y2hfc2NvcmUgPSBtYXRjaF9zY29yZTtcbiAgICAgICAgdGhpcy5taXNtYXRjaF9wZW5hbHR5ID0gbWlzbWF0Y2hfcGVuYWx0eTtcbiAgICAgICAgdGhpcy5nYXBfcGVuYWx0eSA9IGdhcF9wZW5hbHR5O1xuXG4gICAgICAgIC8vIEp1c3QgdGhlIHJlbW92ZSByZWR1bmRhbmN5XG4gICAgICAgIHRoaXMuaU1heCA9IHNlcXVlbmNlMS5sZW5ndGggKyAxO1xuICAgICAgICB0aGlzLmpNYXggPSBzZXF1ZW5jZTIubGVuZ3RoICsgMTtcblxuICAgICAgICAvLyBHcmlkIG1hdHJpeCBvZiBzY29yZXNcbiAgICAgICAgdGhpcy5ncmlkID0gbmV3IEFycmF5KHRoaXMuaU1heCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5pTWF4OyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZFtpXSA9IG5ldyBBcnJheSh0aGlzLmpNYXgpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuak1heDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkW2ldW2pdID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRyYWNlYmFjayBtYXRyaXggKDJEIGFycmF5LCBlYWNoIGNlbGwgaXMgYW4gYXJyYXkgb2YgYm9vbGVhbiB2YWx1ZXMgZm9yIFtgRGlhZ2AsIGBVcGAsIGBMZWZ0YF0gcG9zaXRpb25zKVxuICAgICAgICB0aGlzLnRyYWNlYmFja0dyaWQgPSBuZXcgQXJyYXkodGhpcy5pTWF4KTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHRoaXMuaU1heDsgX2krKykge1xuICAgICAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkW19pXSA9IG5ldyBBcnJheSh0aGlzLmpNYXgpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgdGhpcy5qTWF4OyBfaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkW19pXVtfal0gPSBbbnVsbCwgbnVsbCwgbnVsbF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgYWxpZ25lZCBzZXF1ZW5jZXMgKHJldHVybiBtdWx0aXBsZSBwb3NzaWJpbGl0aWVzKVxuICAgICAgICB0aGlzLmFsaWdubWVudHMgPSBbXTtcblxuICAgICAgICAvLyBGaW5hbCBhbGlnbm1lbnQgc2NvcmVcbiAgICAgICAgdGhpcy5zY29yZSA9IC0xO1xuXG4gICAgICAgIC8vIENhbGN1bGF0ZSBzY29yZXMgYW5kIHRyYWNlYmFja3NcbiAgICAgICAgdGhpcy5jb21wdXRlR3JpZHMoKTtcbiAgICB9XG5cbiAgICBfY3JlYXRlQ2xhc3MoTmVlZGxlbWFuV3Vuc2NoLCBbe1xuICAgICAgICBrZXk6IFwiZ2V0U2NvcmVcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNjb3JlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NvcmU7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJnZXRBbGlnbm1lbnRzXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRBbGlnbm1lbnRzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxpZ25tZW50cztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1haW4gZHluYW1pYyBwcm9ncmFtbWluZyBwcm9jZWR1cmVcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcImNvbXB1dGVHcmlkc1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gY29tcHV0ZUdyaWRzKCkge1xuICAgICAgICAgICAgLy8gRmlsbCBpbiB0aGUgZmlyc3Qgcm93XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IHRoaXMuak1heDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkWzBdW2pdID0gdGhpcy5ncmlkWzBdW2ogLSAxXSArIHRoaXMuZ2FwX3BlbmFsdHk7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkWzBdW2pdID0gW2ZhbHNlLCBmYWxzZSwgdHJ1ZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEZpbGwgaW4gdGhlIGZpcnN0IGNvbHVtblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aGlzLmlNYXg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFtpXVswXSA9IHRoaXMuZ3JpZFtpIC0gMV1bMF0gKyB0aGlzLmdhcF9wZW5hbHR5O1xuICAgICAgICAgICAgICAgIHRoaXMudHJhY2ViYWNrR3JpZFtpXVswXSA9IFtmYWxzZSwgdHJ1ZSwgZmFsc2VdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBGaWxsIHRoZSByZXN0IG9mIHRoZSBncmlkXG4gICAgICAgICAgICBmb3IgKHZhciBfaTIgPSAxOyBfaTIgPCB0aGlzLmlNYXg7IF9pMisrKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2oyID0gMTsgX2oyIDwgdGhpcy5qTWF4OyBfajIrKykge1xuICAgICAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBtYXggc2NvcmUocykgYW1vbmcgW2BEaWFnYCwgYFVwYCwgYExlZnRgXVxuICAgICAgICAgICAgICAgICAgICB2YXIgZGlhZyA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VxdWVuY2UxW19pMiAtIDFdID09PSB0aGlzLnNlcXVlbmNlMltfajIgLSAxXSkgZGlhZyA9IHRoaXMuZ3JpZFtfaTIgLSAxXVtfajIgLSAxXSArIHRoaXMubWF0Y2hfc2NvcmU7ZWxzZSBkaWFnID0gdGhpcy5ncmlkW19pMiAtIDFdW19qMiAtIDFdICsgdGhpcy5taXNtYXRjaF9wZW5hbHR5O1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciB1cCA9IHRoaXMuZ3JpZFtfaTIgLSAxXVtfajJdICsgdGhpcy5nYXBfcGVuYWx0eTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlZnQgPSB0aGlzLmdyaWRbX2kyXVtfajIgLSAxXSArIHRoaXMuZ2FwX3BlbmFsdHk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgZXhpc3RzIG11bHRpcGxlIG1heCB2YWx1ZXMsIGNhcHR1cmUgdGhlbSBmb3IgbXVsdGlwbGUgcGF0aHNcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heE9mID0gW2RpYWcsIHVwLCBsZWZ0XTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGljZXMgPSB0aGlzLmFycmF5QWxsTWF4SW5kZXhlcyhtYXhPZik7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIEdyaWRzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFtfaTJdW19qMl0gPSBtYXhPZltpbmRpY2VzWzBdXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkW19pMl1bX2oyXSA9IFtpbmRpY2VzLmluY2x1ZGVzKDApLCBpbmRpY2VzLmluY2x1ZGVzKDEpLCBpbmRpY2VzLmluY2x1ZGVzKDIpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSBhbGlnbm1lbnQgc2NvcmVcbiAgICAgICAgICAgIHRoaXMuc2NvcmUgPSB0aGlzLmdyaWRbdGhpcy5pTWF4IC0gMV1bdGhpcy5qTWF4IC0gMV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXRzIGFsbCBwb3NzaWJsZSB2YWxpZCBzZXF1ZW5jZSBjb21iaW5hdGlvbnNcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcImFsaWdubWVudFRyYWNlYmFja1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gYWxpZ25tZW50VHJhY2ViYWNrKCkge1xuICAgICAgICAgICAgdmFyIGluUHJvY2Vzc0FsaWdubWVudHMgPSBbXTtcblxuICAgICAgICAgICAgaW5Qcm9jZXNzQWxpZ25tZW50cy5wdXNoKHsgcG9zOiBbdGhpcy5zZXF1ZW5jZTEubGVuZ3RoLCB0aGlzLnNlcXVlbmNlMi5sZW5ndGhdLFxuICAgICAgICAgICAgICAgIHNlcTE6IFwiXCIsXG4gICAgICAgICAgICAgICAgc2VxMjogXCJcIlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHdoaWxlIChpblByb2Nlc3NBbGlnbm1lbnRzWzBdKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBpblByb2Nlc3NBbGlnbm1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIHZhciBkaXJlY3Rpb25zID0gdGhpcy50cmFjZWJhY2tHcmlkW2N1cnJlbnQucG9zWzBdXVtjdXJyZW50LnBvc1sxXV07XG5cbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uc1swXSkge1xuICAgICAgICAgICAgICAgICAgICBpblByb2Nlc3NBbGlnbm1lbnRzLnB1c2goeyBwb3M6IFtjdXJyZW50LnBvc1swXSAtIDEsIGN1cnJlbnQucG9zWzFdIC0gMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXExOiB0aGlzLnNlcXVlbmNlMVtjdXJyZW50LnBvc1swXSAtIDFdICsgY3VycmVudC5zZXExLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VxMjogdGhpcy5zZXF1ZW5jZTJbY3VycmVudC5wb3NbMV0gLSAxXSArIGN1cnJlbnQuc2VxMlxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbnNbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaW5Qcm9jZXNzQWxpZ25tZW50cy5wdXNoKHsgcG9zOiBbY3VycmVudC5wb3NbMF0gLSAxLCBjdXJyZW50LnBvc1sxXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXExOiB0aGlzLnNlcXVlbmNlMVtjdXJyZW50LnBvc1swXSAtIDFdICsgY3VycmVudC5zZXExLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VxMjogJy0nICsgY3VycmVudC5zZXEyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uc1syXSkge1xuICAgICAgICAgICAgICAgICAgICBpblByb2Nlc3NBbGlnbm1lbnRzLnB1c2goeyBwb3M6IFtjdXJyZW50LnBvc1swXSwgY3VycmVudC5wb3NbMV0gLSAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcTE6ICctJyArIGN1cnJlbnQuc2VxMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcTI6IHRoaXMuc2VxdWVuY2UyW2N1cnJlbnQucG9zWzFdIC0gMV0gKyBjdXJyZW50LnNlcTJcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQucG9zWzBdID09PSAwICYmIGN1cnJlbnQucG9zWzFdID09PSAwKSB0aGlzLmFsaWdubWVudHMucHVzaCh7IHNlcXVlbmNlMTogY3VycmVudC5zZXExLFxuICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZTI6IGN1cnJlbnQuc2VxMlxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaW5Qcm9jZXNzQWxpZ25tZW50cy5zaGlmdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hbGlnbm1lbnRzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGVscGVyIEZ1bmN0aW9uc1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiZ2V0QWxsSW5kZXhlc1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QWxsSW5kZXhlcyhhcnIsIHZhbCkge1xuICAgICAgICAgICAgdmFyIGluZGV4ZXMgPSBbXSxcbiAgICAgICAgICAgICAgICBpID0gLTE7XG4gICAgICAgICAgICB3aGlsZSAoKGkgPSBhcnIuaW5kZXhPZih2YWwsIGkgKyAxKSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaW5kZXhlcy5wdXNoKGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGluZGV4ZXM7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJhcnJheUFsbE1heEluZGV4ZXNcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGFycmF5QWxsTWF4SW5kZXhlcyhhcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWxsSW5kZXhlcyhhcnJheSwgTWF0aC5tYXguYXBwbHkobnVsbCwgYXJyYXkpKTtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBOZWVkbGVtYW5XdW5zY2g7XG59KCk7XG5cbm1vZHVsZS5leHBvcnRzID0gTmVlZGxlbWFuV3Vuc2NoO1xuXG4vKioqLyB9KSxcbi8qIDI2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBsYXlvdXRCYXNlID0gZnVuY3Rpb24gbGF5b3V0QmFzZSgpIHtcbiAgcmV0dXJuO1xufTtcblxubGF5b3V0QmFzZS5GRExheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpO1xubGF5b3V0QmFzZS5GRExheW91dENvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5sYXlvdXRCYXNlLkZETGF5b3V0RWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xubGF5b3V0QmFzZS5GRExheW91dE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTtcbmxheW91dEJhc2UuRGltZW5zaW9uRCA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpO1xubGF5b3V0QmFzZS5IYXNoTWFwID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMik7XG5sYXlvdXRCYXNlLkhhc2hTZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcbmxheW91dEJhc2UuSUdlb21ldHJ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbmxheW91dEJhc2UuSU1hdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xubGF5b3V0QmFzZS5JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5sYXlvdXRCYXNlLlBvaW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5sYXlvdXRCYXNlLlBvaW50RCA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5sYXlvdXRCYXNlLlJhbmRvbVNlZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcbmxheW91dEJhc2UuUmVjdGFuZ2xlRCA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xubGF5b3V0QmFzZS5UcmFuc2Zvcm0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcbmxheW91dEJhc2UuVW5pcXVlSURHZW5lcmV0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcbmxheW91dEJhc2UuUXVpY2tzb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNCk7XG5sYXlvdXRCYXNlLkxpbmtlZExpc3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcbmxheW91dEJhc2UuTEdyYXBoT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbmxheW91dEJhc2UuTEdyYXBoID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbmxheW91dEJhc2UuTEVkZ2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xubGF5b3V0QmFzZS5MR3JhcGhNYW5hZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcbmxheW91dEJhc2UuTE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xubGF5b3V0QmFzZS5MYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcbmxheW91dEJhc2UuTGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbmxheW91dEJhc2UuTmVlZGxlbWFuV3Vuc2NoID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbGF5b3V0QmFzZTtcblxuLyoqKi8gfSksXG4vKiAyNyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBFbWl0dGVyKCkge1xuICB0aGlzLmxpc3RlbmVycyA9IFtdO1xufVxuXG52YXIgcCA9IEVtaXR0ZXIucHJvdG90eXBlO1xuXG5wLmFkZExpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50LCBjYWxsYmFjaykge1xuICB0aGlzLmxpc3RlbmVycy5wdXNoKHtcbiAgICBldmVudDogZXZlbnQsXG4gICAgY2FsbGJhY2s6IGNhbGxiYWNrXG4gIH0pO1xufTtcblxucC5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHtcbiAgZm9yICh2YXIgaSA9IHRoaXMubGlzdGVuZXJzLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgbCA9IHRoaXMubGlzdGVuZXJzW2ldO1xuXG4gICAgaWYgKGwuZXZlbnQgPT09IGV2ZW50ICYmIGwuY2FsbGJhY2sgPT09IGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLmxpc3RlbmVycy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9XG59O1xuXG5wLmVtaXQgPSBmdW5jdGlvbiAoZXZlbnQsIGRhdGEpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBsID0gdGhpcy5saXN0ZW5lcnNbaV07XG5cbiAgICBpZiAoZXZlbnQgPT09IGwuZXZlbnQpIHtcbiAgICAgIGwuY2FsbGJhY2soZGF0YSk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVtaXR0ZXI7XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcImxheW91dC1iYXNlXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtcImxheW91dC1iYXNlXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImF2c2RmQmFzZVwiXSA9IGZhY3RvcnkocmVxdWlyZShcImxheW91dC1iYXNlXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJhdnNkZkJhc2VcIl0gPSBmYWN0b3J5KHJvb3RbXCJsYXlvdXRCYXNlXCJdKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMF9fKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4vKioqKioqLyBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGdldDogZ2V0dGVyXG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNik7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV8wX187XG5cbi8qKiovIH0pLFxuLyogMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vKipcbiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBkYXRhIGFuZCBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIGZvciBBVlNERiBsYXlvdXQgcGVyXG4gKiBjaXJjbGUuXG4gKlxuICpcbiAqIENvcHlyaWdodDogaS1WaXMgUmVzZWFyY2ggR3JvdXAsIEJpbGtlbnQgVW5pdmVyc2l0eSwgMjAwNyAtIHByZXNlbnRcbiAqL1xuXG52YXIgTEdyYXBoID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5MR3JhcGg7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBJbml0aWFsaXphdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIEFWU0RGQ2lyY2xlKHBhcmVudCwgZ3JhcGhNZ3IsIHZPYmplY3QpIHtcbiAgICBMR3JhcGguY2FsbCh0aGlzLCBwYXJlbnQsIGdyYXBoTWdyLCB2T2JqZWN0KTtcbiAgICB0aGlzLmluT3JkZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50SW5kZXggPSAwO1xuICAgIHRoaXMubm9kZVNlcGFyYXRpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zdGFjayA9IFtdO1xuICAgIHRoaXMucGVyaW1ldGVyID0gMDtcbiAgICB0aGlzLmNlbnRlclggPSAwO1xuICAgIHRoaXMuY2VudGVyWSA9IDA7XG4gICAgdGhpcy5yYWRpdXMgPSAwO1xufVxuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExHcmFwaC5wcm90b3R5cGUpO1xuXG5mb3IgKHZhciBwcm9wZXJ0eSBpbiBMR3JhcGgpIHtcbiAgICBBVlNERkNpcmNsZVtwcm9wZXJ0eV0gPSBMR3JhcGhbcHJvcGVydHldO1xufVxuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuaW5pdE9yZGVyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaW5PcmRlciA9IFtdO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEFjY2Vzc29yIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBhcnJheSBpbiB3aGljaCB0aGUgbm9kZXMgb2YgdGhpcyBjaXJjbGUgYXJlIGtlcHQgaW4gb3JkZXIuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZ2V0T3JkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5PcmRlcjtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgeC1jb29yZGluYXRlIG9mIHRoZSBjZW50ZXIgb2YgdGhpcyBjaXJjbGUuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZ2V0Q2VudGVyWCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5jZW50ZXJYO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIGNlbnRlciBvZiB0aGlzIGNpcmNsZS5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5nZXRDZW50ZXJZID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmNlbnRlclk7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJhZGl1cyBvZiB0aGlzIGNpcmNsZS5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5nZXRSYWRpdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmFkaXVzO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgdmVydGljZXMgb2YgdGhpcyBjaXJjbGUuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZ2V0U2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXROb2RlcygpLmxlbmd0aDtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGNyb3NzaW5ncyBpbiB0aGlzXG4vLyBjaXJjbGUgYnkgYWRkaW5nIHVwIHRoZSBjcm9zc2luZyBudW1iZXIgb2YgaW5kaXZpZHVhbCBub2RlcyBvbiBpdC5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5nZXRUb3RhbENyb3NzaW5nT2ZDaXJjbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjcm9zc2luZ051bWJlciA9IDA7XG5cbiAgICBmb3IgKHZhciBub2RlIGluIHNlbGYuaW5PcmRlcikge1xuICAgICAgICB2YXIgbm9kZUNyb3NzaW5nID0gbm9kZS5nZXRUb3RhbENyb3NzaW5nT2ZFZGdlcygpO1xuICAgICAgICBpZiAobm9kZUNyb3NzaW5nID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGNyb3NzaW5nTnVtYmVyICs9IG5vZGVDcm9zc2luZztcbiAgICB9XG5cbiAgICByZXR1cm4gY3Jvc3NpbmdOdW1iZXIgLyA0O1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBjaGVja3Mgd2hldGhlciBvciBub3QgYWxsIG9mIHRoZSB2ZXJ0aWNlcyBvZiB0aGlzIGNpcmNsZSBhcmVcbi8vIGFzc2lnbmVkIGFuIGluZGV4IG9uIHRoZSBjaXJjbGUuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuaGFzRmluaXNoZWRPcmRlcmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5kZXggPT09IHRoaXMuZ2V0Tm9kZXMoKS5sZW5ndGg7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG5vZGUgc2VwYXJhdGlvbiBvZiB0aGlzIGNpcmNsZS5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5nZXROb2RlU2VwYXJhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlU2VwYXJhdGlvbjtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbm9kZSBzZXBhcmF0aW9uIG9mIHRoaXMgY2lyY2xlLlxuQVZTREZDaXJjbGUucHJvdG90eXBlLnNldE5vZGVTZXBhcmF0aW9uID0gZnVuY3Rpb24gKG5vZGVTZXBhcmF0aW9uKSB7XG4gICAgdGhpcy5ub2RlU2VwYXJhdGlvbiA9IG5vZGVTZXBhcmF0aW9uO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IFJlbWFpbmluZyBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFRoaXMgZnVuY3Rpb24gdHJhdmVyc2VzIHRoZSB2ZXJ0aWNlcyBvZiB0aGlzIGNpcmNsZSBhbmQgY29ycmVjdHMgdGhlIGFuZ2xlXG4vLyBvZiB0aGUgdmVydGljZXMgd2l0aCByZXNwZWN0IHRvIHRoZWlyIGNpcmNsZSBpbmRpY2VzLlxuQVZTREZDaXJjbGUucHJvdG90eXBlLmNvcnJlY3RBbmdsZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYuY3VycmVudEluZGV4ID0gMDtcblxuICAgIHNlbGYuaW5PcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBzZWxmLnB1dEluT3JkZXIobm9kZSk7XG4gICAgfSk7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHB1dHMgdGhlIGdpdmVuIG5vZGUgb24gdGhlIGNpcmNsZSBpbiB0aGUgY3VycmVudCBvcmRlciBhbmRcbi8vIHNldHMgaXRzIGFuZ2xlIGFwcHJvcHJpYXRlbHkuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUucHV0SW5PcmRlciA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIG5vZGVzID0gc2VsZi5nZXROb2RlcygpO1xuXG4gICAgLy8gTm90ZSB0aGF0IGlkIGF0dHJpYnV0ZSBvZiBhIG5vZGUgaXMgYWRkZWQgYmVmb3JlXG4gICAgLy8gQVZTREZMYXlvdXQgaXMgY2FsbGVkXG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAobm9kZXNbaV0uaWQgPT0gbm9kZS5pZCkge1xuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgIHRocm93IFwiVGhlIG5vZGUgbXVzdCBiZSBhIG1lbWJlciBvZiBMR3JhcGhcIjtcbiAgICB9XG5cbiAgICBzZWxmLmluT3JkZXJbc2VsZi5jdXJyZW50SW5kZXhdID0gbm9kZTtcbiAgICBub2RlLnNldEluZGV4KHNlbGYuY3VycmVudEluZGV4KTtcblxuICAgIGlmIChzZWxmLmN1cnJlbnRJbmRleCA9PT0gMCkge1xuICAgICAgICBub2RlLnNldEFuZ2xlKDAuMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5zZXRBbmdsZShzZWxmLmluT3JkZXJbc2VsZi5jdXJyZW50SW5kZXggLSAxXS5nZXRBbmdsZSgpICsgMiAqIE1hdGguUEkgKiAobm9kZS5nZXREaWFnb25hbCgpIC8gMiArIHNlbGYubm9kZVNlcGFyYXRpb24gKyBzZWxmLmluT3JkZXJbc2VsZi5jdXJyZW50SW5kZXggLSAxXS5nZXREaWFnb25hbCgpIC8gMikgLyBzZWxmLnBlcmltZXRlcik7XG4gICAgfVxuXG4gICAgc2VsZi5jdXJyZW50SW5kZXgrKztcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbmV4dCBub2RlIHRvIGJlIHBsYWNlZCBvbiB0aGlzIGNpcmNsZSB3aXRoXG4vLyByZXNwZWN0IHRvIHRoZSBBVlNERiBhbGdvcml0aG0uXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZmluZE5vZGVUb1BsYWNlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc0RlZ3JlZU5vZGUgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBGaW5kIHRoZSBzbWFsbGVzdCBkZWdyZWUgdmVydGV4IGlmIHRoZSBzdGFjayBpcyBlbXB0eVxuICAgIGlmIChzZWxmLnN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBzRGVncmVlTm9kZSA9IHNlbGYuZmluZFVub3JkZXJlZFNtYWxsZXN0RGVncmVlTm9kZSgpO1xuICAgIH1cbiAgICAvLyBGaW5kIHRoZSBmaXJzdCB2ZXJ0ZXggaW4gdGhlIHN0YWNrIG5vdCB5ZXQgcGxhY2VkXG4gICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgZm91bmRVbm9yZGVyTm9kZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICB3aGlsZSAoIWZvdW5kVW5vcmRlck5vZGUgJiYgIShzZWxmLnN0YWNrLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICBzRGVncmVlTm9kZSA9IHNlbGYuc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgZm91bmRVbm9yZGVyTm9kZSA9ICFzRGVncmVlTm9kZS5pc09yZGVyZWQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFmb3VuZFVub3JkZXJOb2RlKSB7XG4gICAgICAgICAgICAgICAgc0RlZ3JlZU5vZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIC8vIElmIG5vIHVub3JkZXJlZCB2ZXJ0ZXggaXMgZm91bmQgaW4gdGhlIHN0YWNrLCBmaW5kIG9uZVxuICAgIC8vIGZyb20gdGhlIHJlbWFpbmluZyBvbmVzXG4gICAgaWYgKHNEZWdyZWVOb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc0RlZ3JlZU5vZGUgPSBzZWxmLmZpbmRVbm9yZGVyZWRTbWFsbGVzdERlZ3JlZU5vZGUoKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIHVub3JkZXJlZCBuZWlnaGJvcnMgb2YgdGhpcyBub2RlIHRvIHRoZSBzdGFja1xuICAgIGlmIChzRGVncmVlTm9kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBuZWlnaGJvcnMgPSBzRGVncmVlTm9kZS5nZXROZWlnaGJvcnNTb3J0ZWRCeURlZ3JlZSgpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSBuZWlnaGJvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIHZhciBuZWlnaGJvciA9IG5laWdoYm9yc1tpXTtcblxuICAgICAgICAgICAgaWYgKCFuZWlnaGJvci5pc09yZGVyZWQoKSkgLy8gQ2hlY2sgaGVyZSBmb3IgcG9zc2libGUgZXJyb3JcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhY2sucHVzaChuZWlnaGJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNEZWdyZWVOb2RlO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSByYWRpdXMgb2YgdGhpcyBjaXJjbGUgd2l0aCByZXNwZWN0IHRvIHRoZSBzaXplc1xuLy8gb2YgdGhlIHZlcnRpY2VzIGFuZCB0aGUgbm9kZSBzZXBhcmF0aW9uIHBhcmFtZXRlci5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5jYWxjdWxhdGVSYWRpdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0b3RhbERpYWdvbmFsID0gMDtcblxuICAgIHNlbGYuZ2V0Tm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiB0b3RhbERpYWdvbmFsICs9IE1hdGguc3FydChub2RlLmdldFdpZHRoKCkgKiBub2RlLmdldFdpZHRoKCkgKyBub2RlLmdldEhlaWdodCgpICogbm9kZS5nZXRIZWlnaHQoKSk7XG4gICAgfSk7XG5cbiAgICBzZWxmLnBlcmltZXRlciA9IHRvdGFsRGlhZ29uYWwgKyBzZWxmLmdldE5vZGVzKCkubGVuZ3RoICogc2VsZi5ub2RlU2VwYXJhdGlvbjtcbiAgICB2YXIgcmFkaXVzID0gc2VsZi5wZXJpbWV0ZXIgLyAoMiAqIE1hdGguUEkpO1xuXG4gICAgLy8gQ2hlY2sgaGVyZSBmb3IgcG9zc2libGUgZXJyb3JcblxuICAgIHNlbGYuZ2V0UGFyZW50KCkuc2V0V2lkdGgoMiAqIHJhZGl1cyk7XG4gICAgc2VsZi5nZXRQYXJlbnQoKS5zZXRIZWlnaHQoMiAqIHJhZGl1cyk7XG4gICAgc2VsZi5nZXRQYXJlbnQoKS5zZXRDZW50ZXIoc2VsZi5nZXRQYXJlbnQoKS5nZXRXaWR0aCgpLCBzZWxmLmdldFBhcmVudCgpLmdldEhlaWdodCgpKTtcblxuICAgIHNlbGYuY2VudGVyWCA9IHNlbGYuZ2V0UGFyZW50KCkuZ2V0Q2VudGVyWCgpO1xuICAgIHNlbGYuY2VudGVyWSA9IHNlbGYuZ2V0UGFyZW50KCkuZ2V0Q2VudGVyWSgpO1xuICAgIHNlbGYucmFkaXVzID0gc2VsZi5nZXRQYXJlbnQoKS5nZXRIZWlnaHQoKSAvIDI7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBjcm9zc2luZ3Mgb2YgYWxsIHZlcnRpY2VzIG9mXG4vLyB0aGlzIGNpcmNsZS5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5jYWxjdWxhdGVFZGdlQ3Jvc3NpbmdzT2ZOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdldE5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5jYWxjdWxhdGVUb3RhbENyb3NzaW5nKCk7XG4gICAgfSk7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGluZGV4IG9mIGVhY2ggdmVydGV4IHRvIGl0cyBwb3NpdGlvbiBpbiBpbk9yZGVyXG4vLyBhcnJheS4gTm90ZSB0aGF0IGluZGV4IG9mIGEgbm9kZSBjYW4gYmUgZGlmZmVyZW50IGZyb20gaXRzIHBsYWNlIGluIHRoZVxuLy8gYXJyYXkgZHVlIHRvIGNyb3NzaW5nIHJlZHVjdGlvbiBwaGFzZSBvZiB0aGUgQVZTREYgYWxnb3JpdGhtLiBJdCBsb2Fkc1xuLy8gb2xkIGluZGV4IHZhbHVlcyB0byB2ZXJ0aWNlcyBkdWUgdG8gYW4gaW5jcmVhc2UgaW4gdGhlIG51bWJlciBvZlxuLy8gY3Jvc3NpbmdzIHdpdGggdGhlIG5ldyBpbmRpY2VzLlxuQVZTREZDaXJjbGUucHJvdG90eXBlLmxvYWRPbGRJbmRpY2VzT2ZOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAvL3RoaXMuaW5PcmRlci5mb3JFYWNoKCAobm9kZSxpbmRleCkgPT4gbm9kZS5zZXRJbmRleChpbmRleCkpO1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaW5PcmRlci5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZWxmLmluT3JkZXJbaV0uc2V0SW5kZXgoaSk7XG4gICAgfVxufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBwb3NpdGlvbiBvZiBlYWNoIG5vZGUgaW4gaW5PcmRlciBhcnJheSB0byBpdHMgaW5kZXguXG4vLyBOb3RlIHRoYXQgaW5kZXggb2YgYSBub2RlIGNhbiBiZSBkaWZmZXJlbnQgZnJvbSBpdHMgcGxhY2UgaW4gdGhlIGluT3JkZXJcbi8vIGFycmF5IGR1ZSB0byBjcm9zc2luZyByZWR1Y3Rpb24gcGhhc2Ugb2YgdGhlIEFWU0RGIGFsZ29yaXRobS4gVGhpcyBmdW5jdGlvblxuLy8gcHV0cyB0aGUgbm9kZXMgdG8gdGhlaXIgbmV3IGluZGV4IHZhbHVlcyBpbiBpbk9yZGVyIGFycmF5IGR1ZSB0byBhXG4vLyBkZWNyZWFzZSBpbiB0aGUgbnVtYmVyIG9mIGNyb3NzaW5ncyB3aXRoIHRoZSBuZXcgaW5kaWNlcy5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5yZU9yZGVyVmVydGljZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuZ2V0Tm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBzZWxmLmluT3JkZXJbbm9kZS5nZXRJbmRleCgpXSA9IG5vZGU7XG4gICAgfSk7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIGZpbmRzIGFuZCByZXR1cm5zIHRoZSB1bm9yZGVyZWQgc21hbGxlc3QgZGVncmVlIHZlcnRleCBvblxuLy8gdGhpcyBjaXJjbGUuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZmluZFVub3JkZXJlZFNtYWxsZXN0RGVncmVlTm9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWluRGVncmVlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgdmFyIHNEZWdyZWVOb2RlID0gdm9pZCAwO1xuXG4gICAgdGhpcy5nZXROb2RlcygpLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuZ2V0RGVncmVlKCkgPCBtaW5EZWdyZWUgJiYgIW5vZGUuaXNPcmRlcmVkKCkpIHtcbiAgICAgICAgICAgIG1pbkRlZ3JlZSA9IG5vZGUuZ2V0RGVncmVlKCk7XG4gICAgICAgICAgICBzRGVncmVlTm9kZSA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzRGVncmVlTm9kZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQVZTREZDaXJjbGU7XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgTGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5MYXlvdXRDb25zdGFudHM7XG5cbmZ1bmN0aW9uIEFWU0RGQ29uc3RhbnRzKCkge31cblxuLy8gQVZTREZDb25zdGFudHMgaW5oZXJpdHMgcHJvcGVydGllcyBpbiBMYXlvdXRDb25zdGFudHNcbmZvciAodmFyIHByb3AgaW4gTGF5b3V0Q29uc3RhbnRzKSB7XG4gICAgQVZTREZDb25zdGFudHNbcHJvcF0gPSBMYXlvdXRDb25zdGFudHNbcHJvcF07XG59XG5cbkFWU0RGQ29uc3RhbnRzLkRFRkFVTFRfTk9ERV9TRVBBUkFUSU9OID0gNjA7XG5cbm1vZHVsZS5leHBvcnRzID0gQVZTREZDb25zdGFudHM7XG5cbi8qKiovIH0pLFxuLyogMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vKipcbiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBkYXRhIGFuZCBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIGZvciBBVlNERiBsYXlvdXQgcGVyXG4gKiBlZGdlLlxuICpcblxuICogQ29weXJpZ2h0OiBpLVZpcyBSZXNlYXJjaCBHcm91cCwgQmlsa2VudCBVbml2ZXJzaXR5LCAyMDA3IC0gcHJlc2VudFxuICovXG5cbnZhciBMRWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuTEVkZ2U7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBJbml0aWFsaXphdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIEFWU0RGRWRnZShzb3VyY2UsIHRhcmdldCwgdkVkZ2UpIHtcbiAgICBMRWRnZS5jYWxsKHRoaXMsIHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSk7XG59XG5cbkFWU0RGRWRnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExFZGdlLnByb3RvdHlwZSk7XG5cbmZvciAodmFyIHByb3BlcnRpZXMgaW4gTEVkZ2UpIHtcbiAgICBBVlNERkVkZ2VbcHJvcGVydGllc10gPSBMRWRnZVtwcm9wZXJ0aWVzXTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEFjY2Vzc29yIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gVGhlIGZ1bmN0aW9uIGdldE90aGVyRW5kIHJldHVybnMgdGhlIG90aGVyIGVuZCBvZiB0aGlzIGVkZ2UuXG5BVlNERkVkZ2UucHJvdG90eXBlLmdldE90aGVyRW5kID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gTEVkZ2UucHJvdG90eXBlLmdldE90aGVyRW5kKG5vZGUpO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IFJlbWFpbmluZyBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgdGhpcyBlZGdlIGNyb3NzZXMgd2l0aCB0aGUgaW5wdXQgZWRnZS4gSXRcbi8vIHJldHVybnMgZmFsc2UsIGlmIGFueSBvZiB0aGUgdmVydGljZXMgdGhvc2UgZWRnZXMgYXJlIGluY2lkZW50IHRvIGFyZSBub3Rcbi8vIHlldCBwbGFjZWQgb24gdGhlIGNpcmNsZS5cbkFWU0RGRWRnZS5wcm90b3R5cGUuY3Jvc3Nlc1dpdGhFZGdlID0gZnVuY3Rpb24gKG90aGVyRWRnZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc291cmNlUG9zID0gc2VsZi5nZXRTb3VyY2UoKS5nZXRJbmRleCgpO1xuICAgIHZhciB0YXJnZXRQb3MgPSBzZWxmLmdldFRhcmdldCgpLmdldEluZGV4KCk7XG4gICAgdmFyIG90aGVyU291cmNlUG9zID0gb3RoZXJFZGdlLmdldFNvdXJjZSgpLmdldEluZGV4KCk7XG4gICAgdmFyIG90aGVyVGFyZ2V0UG9zID0gb3RoZXJFZGdlLmdldFRhcmdldCgpLmdldEluZGV4KCk7XG5cbiAgICAvLyBpZiBhbnkgb2YgdGhlIHZlcnRpY2VzIHRob3NlIHR3byBlZGdlcyBhcmUgbm90IHlldCBwbGFjZWRcbiAgICBpZiAoc291cmNlUG9zID09PSAtMSB8fCB0YXJnZXRQb3MgPT09IC0xIHx8IG90aGVyU291cmNlUG9zID09PSAtMSB8fCBvdGhlclRhcmdldFBvcyA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBvdGhlclNvdXJjZURpc3QgPSBvdGhlckVkZ2UuZ2V0U291cmNlKCkuZ2V0Q2lyY0Rpc3RXaXRoVGhlTm9kZShzZWxmLmdldFNvdXJjZSgpKTtcbiAgICB2YXIgb3RoZXJUYXJnZXREaXN0ID0gb3RoZXJFZGdlLmdldFRhcmdldCgpLmdldENpcmNEaXN0V2l0aFRoZU5vZGUoc2VsZi5nZXRTb3VyY2UoKSk7XG4gICAgdmFyIHRoaXNUYXJnZXREaXN0ID0gc2VsZi5nZXRUYXJnZXQoKS5nZXRDaXJjRGlzdFdpdGhUaGVOb2RlKHNlbGYuZ2V0U291cmNlKCkpO1xuXG4gICAgaWYgKHRoaXNUYXJnZXREaXN0IDwgTWF0aC5tYXgob3RoZXJTb3VyY2VEaXN0LCBvdGhlclRhcmdldERpc3QpICYmIHRoaXNUYXJnZXREaXN0ID4gTWF0aC5taW4ob3RoZXJTb3VyY2VEaXN0LCBvdGhlclRhcmdldERpc3QpICYmIG90aGVyVGFyZ2V0RGlzdCAhPT0gMCAmJiBvdGhlclNvdXJjZURpc3QgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIDEgaWYgdGhpcyBlZGdlIGNyb3NzZXMgd2l0aCB0aGUgaW5wdXQgZWRnZSwgMFxuLy8gb3RoZXJ3aXNlLlxuQVZTREZFZGdlLnByb3RvdHlwZS5jcm9zc2luZ1dpdGhFZGdlID0gZnVuY3Rpb24gKG90aGVyRWRnZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcmVzdWx0ID0gc2VsZi5jcm9zc2VzV2l0aEVkZ2Uob3RoZXJFZGdlKTtcblxuICAgIHJldHVybiByZXN1bHQgPyAxIDogMDtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIGNyb3NzaW5ncyBvZiB0aGlzIGVkZ2Ugd2l0aFxuLy8gYWxsIHRoZSBlZGdlcyBnaXZlbiBpbiB0aGUgaW5wdXQgbGlzdC5cbkFWU0RGRWRnZS5wcm90b3R5cGUuY2FsY3VsYXRlVG90YWxDcm9zc2luZ1dpdGhMaXN0ID0gZnVuY3Rpb24gKGVkZ2VMaXN0KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0b3RhbENyb3NzaW5nID0gMDtcblxuICAgIGVkZ2VMaXN0LmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRvdGFsQ3Jvc3NpbmcgKz0gc2VsZi5jcm9zc2luZ1dpdGhFZGdlKGVkZ2UpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRvdGFsQ3Jvc3Npbmc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFWU0RGRWRnZTtcblxuLyoqKi8gfSksXG4vKiA0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qKlxuICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGRhdGEgYW5kIGZ1bmN0aW9uYWxpdHkgcmVxdWlyZWQgZm9yIEFWU0RGIGxheW91dCBwZXJcbiAqIG5vZGUuXG4gKlxuICpcbiAqIENvcHlyaWdodDogaS1WaXMgUmVzZWFyY2ggR3JvdXAsIEJpbGtlbnQgVW5pdmVyc2l0eSwgMjAwNyAtIHByZXNlbnRcbiAqL1xuXG52YXIgTE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkxOb2RlO1xudmFyIFF1aWNrc29ydCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuUXVpY2tzb3J0O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VjdGlvbjogSW5pdGlhbGl6YXRpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBBVlNERk5vZGUoZ20sIHZOb2RlLCBsb2MsIHNpemUpIHtcbiAgICAvLyBDb25zdHJ1Y3RvciAxOiBBVlNERk5vZGUoZ20sIHZOb2RlLCBsb2MsIHNpemUpXG4gICAgaWYgKGxvYyAhPT0gdW5kZWZpbmVkICYmIHNpemUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBMTm9kZS5jYWxsKHRoaXMsIGdtLCB2Tm9kZSwgbG9jLCBzaXplKTtcbiAgICB9XG4gICAgLy8gQ29uc3RydWN0b3IgMjogQVZTREZOb2RlKGdtLCB2Tm9kZSlcbiAgICBlbHNlIHtcbiAgICAgICAgICAgIExOb2RlLmNhbGwodGhpcywgZ20sIHZOb2RlKTtcbiAgICAgICAgfVxuXG4gICAgLy8gQW5nbGUgb2YgdGhpcyBub2RlIG9uIHRoZSBvd25lciBjaXJjbGUgaW4gcmFkaWFuc1xuICAgIHRoaXMuYW5nbGUgPSAwO1xuXG4gICAgLy8gSW5kZXggb2YgdGhpcyBub2RlIG9uIHRoZSBvd25lciBjaXJjbGVcbiAgICB0aGlzLmNpcmNsZUluZGV4ID0gLTE7XG5cbiAgICAvLyBUb3RhbCBudW1iZXIgb2YgY3Jvc3NpbmdzIG9mIHRoZSBlZGdlcyB0aGlzIG5vZGUgaXMgaW5jaWRlbnQgdG9cbiAgICB0aGlzLnRvdGFsQ3Jvc3NpbmdPZkVkZ2VzID0gLTE7XG5cbiAgICAvLyBXaGV0aGVyIHRoZSBjdXJyZW50IGVkZ2UgY3Jvc3NpbmcgbnVtYmVyIGlzIHZhbGlkIG9yIGl0IG5lZWRzIHRvIGJlXG4gICAgLy8gcmVjYWxjdWxhdGVkXG4gICAgdGhpcy5pc0Nyb3NzaW5nTnVtYmVyVmFsaWQgPSBmYWxzZTtcbn1cblxuQVZTREZOb2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTE5vZGUucHJvdG90eXBlKTtcbmZvciAodmFyIHByb3BlcnRpZXMgaW4gTE5vZGUpIHtcbiAgICBBVlNERk5vZGVbcHJvcGVydGllc10gPSBMTm9kZVtwcm9wZXJ0aWVzXTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEFjY2Vzc29yIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjaXJjbGUgdGhpcyBub2RlIGlzIG93bmVkIGJ5LlxuQVZTREZOb2RlLnByb3RvdHlwZS5nZXRDaXJjbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3duZXIoKTtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgaW5kZXggb2YgdGhpcyBub2RlIG9uIHRoZSBjaXJjbGUsIGFuZCBzZXRzIHRoZVxuLy8gY3Jvc3NpbmcgbnVtYmVyIGludmFsaWQuIER1ZSB0byB0aGUgaW5kZXggY2hhbmdlIG9mIHRoZSBub2RlOyBpdCBuZWVkcyB0b1xuLy8gYmUgcmVjYWxjdWxhdGVkLlxuQVZTREZOb2RlLnByb3RvdHlwZS5zZXRJbmRleCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHRoaXMuY2lyY2xlSW5kZXggPSBpbmRleDtcbiAgICB0aGlzLmlzQ3Jvc3NpbmdOdW1iZXJWYWxpZCA9IGZhbHNlO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGlzIG5vZGUgaW4gdGhlIG9yZGVyaW5nIG9mIGl0cyBvd25lclxuLy8gY2lyY2xlLiBIZXJlIC0xIG1lYW5zIHRoYXQgdGhlIHZlcnRleCBpcyBub3QgeWV0IHBsYWNlZCBvbiBpdHMgb3duZXJcbi8vY2lyY2xlLlxuQVZTREZOb2RlLnByb3RvdHlwZS5nZXRJbmRleCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5jaXJjbGVJbmRleDtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYXJyYXkgb2YgdGhlIG5laWdib3JzIG9mIHRoaXMgbm9kZSBzb3J0ZWQgaW5cbi8vIGFzY2VuZGluZyBvcmRlci5cbkFWU0RGTm9kZS5wcm90b3R5cGUuZ2V0TmVpZ2hib3JzU29ydGVkQnlEZWdyZWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHJlc3VsdCA9IEFycmF5LmZyb20oc2VsZi5nZXROZWlnaGJvcnNMaXN0KCkpO1xuICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuZ2V0SW5kZXgoKSA9PT0gLTE7XG4gICAgfSk7XG5cbiAgICByZXN1bHQuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYS5nZXREZWdyZWUoKSAtIGIuZ2V0RGVncmVlKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBkZWdyZWUgb2YgdGhpcyBub2RlLlxuQVZTREZOb2RlLnByb3RvdHlwZS5nZXREZWdyZWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RWRnZXMoKS5sZW5ndGg7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciBvciBub3QgdGhpcyBub2RlIGlzIGN1cnJlbnRseSBwbGFjZWQgb24gaXRzXG4vLyBvd25lciBjaXJjbGUuXG5BVlNERk5vZGUucHJvdG90eXBlLmlzT3JkZXJlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJbmRleCgpID4gLTE7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGFuZ2xlIG9mIHRoaXMgbm9kZSB3LnIudC4gaXRzIG93bmVyIGNpcmNsZS4gSGVyZVxuLy8gdGhlIGFuZ2xlIHZhbHVlIGlzIGluIHJhZGlhbi5cbkFWU0RGTm9kZS5wcm90b3R5cGUuc2V0QW5nbGUgPSBmdW5jdGlvbiAoYW5nbGUpIHtcbiAgICB0aGlzLmFuZ2xlID0gYW5nbGU7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFuZ2xlIG9mIHRoaXMgbm9kZSB3LnIudC4gaXRzIG93bmVyIGNpcmNsZS4gSGVyZVxuLy8gdGhlIGFuZ2xlIHZhbHVlIGlzIGluIHJhZGlhbi5cbkFWU0RGTm9kZS5wcm90b3R5cGUuZ2V0QW5nbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYW5nbGU7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGluZGV4IGRpZmZlcmVuY2Ugb2YgdGhpcyBub2RlIHdpdGggdGhlIGlucHV0XG4vLyBub2RlLiBOb3RlIHRoYXQgdGhlIGluZGV4IGRpZmZlcmVuY2UgY2Fubm90IGJlIG5lZ2F0aXZlIGlmIGJvdGggbm9kZXMgYXJlXG4vLyBwbGFjZWQgb24gdGhlIGNpcmNsZS4gSGVyZSAtMSBtZWFucyBhdCBsZWFzdCBvbmUgb2YgdGhlIG5vZGVzIGFyZSBub3QgeWV0XG4vLyBwbGFjZWQgb24gdGhlIGNpcmNsZS5cbkFWU0RGTm9kZS5wcm90b3R5cGUuZ2V0Q2lyY0Rpc3RXaXRoVGhlTm9kZSA9IGZ1bmN0aW9uIChyZWZOb2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBvdGhlckluZGV4ID0gcmVmTm9kZS5nZXRJbmRleCgpO1xuXG4gICAgaWYgKG90aGVySW5kZXggPT09IC0xIHx8IHNlbGYuZ2V0SW5kZXgoKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHZhciBkaWZmID0gc2VsZi5nZXRJbmRleCgpIC0gb3RoZXJJbmRleDtcblxuICAgIGlmIChkaWZmIDwgMCkge1xuICAgICAgICBkaWZmICs9IHNlbGYuZ2V0Q2lyY2xlKCkuZ2V0U2l6ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBkaWZmO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgbnVtYmVyIG9mIGVkZ2UgY3Jvc3NpbmdzIGJldHdlZW4gdGhlIGVkZ2VzIG9mXG4vLyB0aGlzIG5vZGUgYW5kIHRoZSBlZGdlcyBvZiB0aGUgaW5wdXQgb25lLlxuQVZTREZOb2RlLnByb3RvdHlwZS5nZXRDcm9zc2luZ051bWJlcldpdGhOb2RlID0gZnVuY3Rpb24gKG90aGVyTm9kZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgdG90YWxDcm9zc2luZyA9IDA7XG5cbiAgICBzZWxmLmdldEVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICBvdGhlck5vZGUuZ2V0RWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChvdGhlckVkZ2UpIHtcbiAgICAgICAgICAgIHRvdGFsQ3Jvc3NpbmcgKz0gZWRnZS5jcm9zc2luZ1dpdGhFZGdlKG90aGVyRWRnZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRvdGFsQ3Jvc3Npbmc7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBlZGdlIGNyb3NzaW5ncy4gSWYgdGhlIHByZXZpb3VzbHlcbi8vIGNhbGN1bGF0ZWQgdmFsdWUgaXMgbm90IHZhbGlkIGR1ZSB0byBhbiBpbmRleCBjaGFuZ2Ugb24gdGhlIGNpcmNsZSwgdGhlblxuLy8gYSByZWNhbGN1bGF0aW9uIGlzIHBlcmZvcm1lZC5cbkFWU0RGTm9kZS5wcm90b3R5cGUuZ2V0VG90YWxDcm9zc2luZ09mRWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKCFzZWxmLmlzQ3Jvc3NpbmdOdW1iZXJWYWxpZCkge1xuICAgICAgICBzZWxmLmNhbGN1bGF0ZVRvdGFsQ3Jvc3NpbmcoKTtcbiAgICAgICAgc2VsZi5pc0Nyb3NzaW5nTnVtYmVyVmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxmLnRvdGFsQ3Jvc3NpbmdPZkVkZ2VzO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IFJlbWFpbmluZyBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIGNyb3NzaW5ncyB0aGUgZWRnZXMgb2YgdGhpc1xuLy8gbm9kZSBjYXVzZS5cbkFWU0RGTm9kZS5wcm90b3R5cGUuY2FsY3VsYXRlVG90YWxDcm9zc2luZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHRlbXBfY3Jvc3NpbmdfY291bnQgPSAwO1xuICAgIHZhciB0ZW1wX2VkZ2VfbGlzdCA9IFtdO1xuICAgIHRlbXBfZWRnZV9saXN0LnB1c2guYXBwbHkodGVtcF9lZGdlX2xpc3QsIHNlbGYuZ2V0Q2lyY2xlKCkuZ2V0RWRnZXMoKSk7XG4gICAgdGVtcF9lZGdlX2xpc3QgPSB0ZW1wX2VkZ2VfbGlzdC5maWx0ZXIoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gc2VsZi5nZXRFZGdlcygpLmluZGV4T2YoZWxlKSA8IDA7XG4gICAgfSk7XG5cbiAgICBzZWxmLmdldEVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICByZXR1cm4gdGVtcF9jcm9zc2luZ19jb3VudCArPSBlZGdlLmNhbGN1bGF0ZVRvdGFsQ3Jvc3NpbmdXaXRoTGlzdCh0ZW1wX2VkZ2VfbGlzdCk7XG4gICAgfSk7XG5cbiAgICBzZWxmLnRvdGFsQ3Jvc3NpbmdPZkVkZ2VzID0gdGVtcF9jcm9zc2luZ19jb3VudDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQVZTREZOb2RlO1xuXG4vKioqLyB9KSxcbi8qIDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIG92ZXJhbGwgbGF5b3V0IHByb2Nlc3MgZm9yIHRoZSBBVlNERiBhbGdvcml0aG1cbiAqIChDaXJjdWxhciBEcmF3aW5nIEFsZ29yaXRobSBieSBIZSBhbmQgU3lrb3JhKS5cbiAqXG4gKlxuICogQ29weXJpZ2h0OiBpLVZpcyBSZXNlYXJjaCBHcm91cCwgQmlsa2VudCBVbml2ZXJzaXR5LCAyMDA3IC0gcHJlc2VudFxuICovXG5cbnZhciBMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkxheW91dDtcbnZhciBBVlNERkNvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgQVZTREZDaXJjbGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIEFWU0RGTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG52YXIgQVZTREZFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEluaXRpYWxpemF0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gQ29uc3RydWN0b3JcbmZ1bmN0aW9uIEFWU0RGTGF5b3V0KCkge1xuICAgIExheW91dC5jYWxsKHRoaXMpO1xuICAgIHRoaXMubm9kZVNlcGFyYXRpb24gPSBBVlNERkNvbnN0YW50cy5ERUZBVUxUX05PREVfU0VQQVJBVElPTjtcbn1cblxuQVZTREZMYXlvdXQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMYXlvdXQucHJvdG90eXBlKTtcblxuZm9yICh2YXIgcHJvcGVydHkgaW4gTGF5b3V0KSB7XG4gICAgQVZTREZMYXlvdXRbcHJvcGVydHldID0gTGF5b3V0W3Byb3BlcnR5XTtcbn1cblxuQVZTREZMYXlvdXQucHJvdG90eXBlLm5ld0dyYXBoID0gZnVuY3Rpb24gKHZPYmplY3QpIHtcbiAgICB0aGlzLmF2c2RmQ2lyY2xlID0gbmV3IEFWU0RGQ2lyY2xlKG51bGwsIHRoaXMuZ3JhcGhNYW5hZ2VyLCB2T2JqZWN0KTtcblxuICAgIHJldHVybiB0aGlzLmF2c2RmQ2lyY2xlO1xufTtcblxuQVZTREZMYXlvdXQucHJvdG90eXBlLm5ld05vZGUgPSBmdW5jdGlvbiAodk5vZGUpIHtcbiAgICByZXR1cm4gbmV3IEFWU0RGTm9kZSh0aGlzLmdyYXBoTWFuYWdlciwgdk5vZGUpO1xufTtcblxuQVZTREZMYXlvdXQucHJvdG90eXBlLm5ld0VkZ2UgPSBmdW5jdGlvbiAodkVkZ2UpIHtcbiAgICByZXR1cm4gbmV3IEFWU0RGRWRnZShudWxsLCBudWxsLCB2RWRnZSk7XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VjdGlvbjogQWNjZXNzb3IgRnVuY3Rpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHBvc2l0aW9uIGRhdGEgZm9yIGFsbCBub2Rlc1xuQVZTREZMYXlvdXQucHJvdG90eXBlLmdldFBvc2l0aW9uc0RhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFsbE5vZGVzID0gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0QWxsTm9kZXMoKTtcbiAgICB2YXIgcERhdGEgPSB7fTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHJlY3QgPSBhbGxOb2Rlc1tpXS5yZWN0O1xuICAgICAgICB2YXIgaWQgPSBhbGxOb2Rlc1tpXS5pZDtcblxuICAgICAgICBwRGF0YVtpZF0gPSB7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB4OiByZWN0LmdldENlbnRlclgoKSxcbiAgICAgICAgICAgIHk6IHJlY3QuZ2V0Q2VudGVyWSgpLFxuICAgICAgICAgICAgdzogcmVjdC53aWR0aCxcbiAgICAgICAgICAgIGg6IHJlY3QuaGVpZ2h0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHBEYXRhO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IExheW91dCBSZWxhdGVkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgbGF5b3V0IG9uIGNvbnN0cnVjdGVkIGwtbGV2ZWwgZ3JhcGguXG4gKiBJdCByZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogSW1wb3J0YW50ITogSWYgeW91IHdhbnQgdG8gc2VlIHRoZSByZXN1bHRzIG9mIHRoaXMgZnVuY3Rpb24gdGhlbiwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIHlvdSBoYXZlIHRvIGNhbGN1bGF0ZVxuICogYW5kIHNldCB0aGUgcG9zaXRpb25zIG9mIGV2ZXJ5IG5vZGUuIFRvIGRvIHRoaXMgY2FsbCB1cGRhdGVOb2RlQ29vcmRpbmF0ZXMuIEhvd2V2ZXIsIHVwZGF0ZU5vZGVBbmdsZXMgb24gdGhlIG90aGVyXG4gKiBoYW5kIGlzIG5vdCBuZWVkZWQgKHJlZHVuZGFudCkgZm9yIHRoaXMgZnVuY3Rpb24uXG4gKi9cbkFWU0RGTGF5b3V0LnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgLy8gQ2hlY2sgaWYgZ3JhcGggY29udGFpbnMgYW55IGNvbXBvdW5kIHN0cnVjdHVyZXNcbiAgICBpZiAoc2VsZi5ncmFwaE1hbmFnZXIuZ2V0R3JhcGhzKCkubGVuZ3RoID4gMSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIGNsdXN0ZXJHcmFwaCA9IHRoaXMuYXZzZGZDaXJjbGU7IC8vIEZpeGVkIHJlZmVyZW5jZSwgYnV0IG5vdyBpdCBpcyBhIGJpdCByZWR1bmRhbnRcblxuICAgIGNsdXN0ZXJHcmFwaC5zZXROb2RlU2VwYXJhdGlvbih0aGlzLm5vZGVTZXBhcmF0aW9uKTtcbiAgICBjbHVzdGVyR3JhcGguY2FsY3VsYXRlUmFkaXVzKCk7XG4gICAgY2x1c3RlckdyYXBoLmluaXRPcmRlcmluZygpO1xuXG4gICAgd2hpbGUgKCFjbHVzdGVyR3JhcGguaGFzRmluaXNoZWRPcmRlcmluZygpKSB7XG4gICAgICAgIHZhciBub2RlID0gY2x1c3RlckdyYXBoLmZpbmROb2RlVG9QbGFjZSgpO1xuICAgICAgICBjbHVzdGVyR3JhcGgucHV0SW5PcmRlcihub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gdXBkYXRlcyB0aGUgYW5nbGUgKGluIHJhZGlhbnMpIHByb3BlcnR5IG9mIEFWU0RGTm9kZSBlbGVtZW50cyBpbiB0aGUgY2lyY2xlXG5BVlNERkxheW91dC5wcm90b3R5cGUudXBkYXRlTm9kZUFuZ2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkuY29ycmVjdEFuZ2xlcygpOyAvL0FWU0RGQ2lyY2xlIG9iamVjdFxufTtcblxuLy8gVGhpcyBmdW5jdGlvbiB0cmF2ZXJzZXMgdGhlIHZlcnRpY2VzIG9mIHRoZSBncmFwaCBhbmQgc2V0cyB0aGVpciBjb3JyZWN0IGNvb3JkaW5hdGVzIHdpdGggcmVzcGVjdCB0byB0aGUgb3duZXIgY2lyY2xlLlxuQVZTREZMYXlvdXQucHJvdG90eXBlLnVwZGF0ZU5vZGVDb29yZGluYXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY2x1c3RlckdyYXBoID0gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpO1xuXG4gICAgY2x1c3RlckdyYXBoLmdldE5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBub2RlLnNldENlbnRlcihjbHVzdGVyR3JhcGguZ2V0Q2VudGVyWCgpICsgY2x1c3RlckdyYXBoLmdldFJhZGl1cygpICogTWF0aC5jb3Mobm9kZS5nZXRBbmdsZSgpKSwgY2x1c3RlckdyYXBoLmdldENlbnRlclkoKSArIGNsdXN0ZXJHcmFwaC5nZXRSYWRpdXMoKSAqIE1hdGguc2luKG5vZGUuZ2V0QW5nbGUoKSkpO1xuICAgIH0pO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IFBvc3QgUHJvY2Vzc2luZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSBwb3N0IHByb2Nlc3Npbmcgc3RlcCBvZiB0aGUgYWxnb3JpdGhtLCB3aGljaFxuICogdHJpZXMgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiBlZGdlcyBmdXJ0aGVyIHdpdGggcmVzcGVjdCB0byB0aGUgbG9jYWxcbiAqIGFkanVzdGluZyBhbGdvcml0aG0gZGVzY3JpYmVkIGJ5IEhlIGFuZCBTeWtvcmEuXG4gKi9cbkFWU0RGTGF5b3V0LnByb3RvdHlwZS5pbml0UG9zdFByb2Nlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5hdnNkZkNpcmNsZS5jYWxjdWxhdGVFZGdlQ3Jvc3NpbmdzT2ZOb2RlcygpO1xuXG4gICAgdmFyIGxpc3QgPSB0aGlzLmF2c2RmQ2lyY2xlLmdldE5vZGVzKCk7XG5cbiAgICBsaXN0LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGIuZ2V0VG90YWxDcm9zc2luZ09mRWRnZXMoKSAtIGEuZ2V0VG90YWxDcm9zc2luZ09mRWRnZXMoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBsaXN0O1xufTtcblxuQVZTREZMYXlvdXQucHJvdG90eXBlLm9uZVN0ZXBQb3N0UHJvY2VzcyA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIGN1cnJlbnRDcm9zc2luZ051bWJlciA9IG5vZGUuZ2V0VG90YWxDcm9zc2luZ09mRWRnZXMoKTtcbiAgICB2YXIgbmV3Q3Jvc3NpbmdOdW1iZXIgPSB2b2lkIDA7XG5cbiAgICB2YXIgbmVpZ2hib3VycyA9IEFycmF5LmZyb20obm9kZS5nZXROZWlnaGJvcnNMaXN0KCkpO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBuZWlnaGJvdXJzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBuZWlnaGJvdXIgPSBuZWlnaGJvdXJzW2pdO1xuXG4gICAgICAgIHZhciBvbGRJbmRleCA9IG5vZGUuZ2V0SW5kZXgoKTtcbiAgICAgICAgdmFyIG5ld0luZGV4ID0gKG5laWdoYm91ci5nZXRJbmRleCgpICsgMSkgJSBzZWxmLmF2c2RmQ2lyY2xlLmdldFNpemUoKTtcblxuICAgICAgICBpZiAob2xkSW5kZXggIT09IG5ld0luZGV4KSB7XG4gICAgICAgICAgICBub2RlLnNldEluZGV4KG5ld0luZGV4KTtcblxuICAgICAgICAgICAgaWYgKG9sZEluZGV4IDwgbm9kZS5nZXRJbmRleCgpKSB7XG4gICAgICAgICAgICAgICAgb2xkSW5kZXggKz0gc2VsZi5hdnNkZkNpcmNsZS5nZXRTaXplKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBpbmRleCA9IG5vZGUuZ2V0SW5kZXgoKTtcblxuICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgb2xkSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IHNlbGYuYXZzZGZDaXJjbGUuZ2V0T3JkZXIoKVtpbmRleCAlIHNlbGYuYXZzZGZDaXJjbGUuZ2V0U2l6ZSgpXTtcbiAgICAgICAgICAgICAgICB0ZW1wLnNldEluZGV4KCh0ZW1wLmdldEluZGV4KCkgKyAxKSAlIHNlbGYuYXZzZGZDaXJjbGUuZ2V0U2l6ZSgpKTtcbiAgICAgICAgICAgICAgICBpbmRleCArPSAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub2RlLmNhbGN1bGF0ZVRvdGFsQ3Jvc3NpbmcoKTtcbiAgICAgICAgICAgIG5ld0Nyb3NzaW5nTnVtYmVyID0gbm9kZS5nZXRUb3RhbENyb3NzaW5nT2ZFZGdlcygpO1xuXG4gICAgICAgICAgICBpZiAobmV3Q3Jvc3NpbmdOdW1iZXIgPj0gY3VycmVudENyb3NzaW5nTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5hdnNkZkNpcmNsZS5sb2FkT2xkSW5kaWNlc09mTm9kZXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZi5hdnNkZkNpcmNsZS5yZU9yZGVyVmVydGljZXMoKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50Q3Jvc3NpbmdOdW1iZXIgPSBuZXdDcm9zc2luZ051bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQVZTREZMYXlvdXQ7XG5cbi8qKiovIH0pLFxuLyogNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgYXZzZGZCYXNlID0ge307XG5cbmF2c2RmQmFzZS5sYXlvdXRCYXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbmF2c2RmQmFzZS5BVlNERkNvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5hdnNkZkJhc2UuQVZTREZFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbmF2c2RmQmFzZS5BVlNERkNpcmNsZSA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5hdnNkZkJhc2UuQVZTREZMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuYXZzZGZCYXNlLkFWU0RGTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXZzZGZCYXNlO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG59KTsiLCIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJhdnNkZi1iYXNlXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtcImF2c2RmLWJhc2VcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlQXZzZGZcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJhdnNkZi1iYXNlXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJjeXRvc2NhcGVBdnNkZlwiXSA9IGZhY3Rvcnkocm9vdFtcImF2c2RmQmFzZVwiXSk7XG59KSh0aGlzLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzBfXykge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDMpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMF9fO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLy8gU2ltcGxlLCBpbnRlcm5hbCBPYmplY3QuYXNzaWduKCkgcG9seWZpbGwgZm9yIG9wdGlvbnMgb2JqZWN0cyBldGMuXG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmFzc2lnbiAhPSBudWxsID8gT2JqZWN0LmFzc2lnbi5iaW5kKE9iamVjdCkgOiBmdW5jdGlvbiAodGd0KSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzcmNzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHNyY3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgc3Jjcy5mb3JFYWNoKGZ1bmN0aW9uIChzcmMpIHtcbiAgICBPYmplY3Qua2V5cyhzcmMpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiB0Z3Rba10gPSBzcmNba107XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB0Z3Q7XG59O1xuXG4vKioqLyB9KSxcbi8qIDIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLyoqXG4gKlxuICogQ2hvb3NlIHRoZSB0eXBlIG9mIGxheW91dCB0aGF0IGJlc3Qgc3VpdHMgeW91ciB1c2VjYXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuXG4gKlxuICogQSBkaXNjcmV0ZSBsYXlvdXQgaXMgb25lIHRoYXQgYWxnb3JpdGhtaWNhbGx5IHNldHMgcmVzdWx0YW50IHBvc2l0aW9ucy4gIEl0XG4gKiBkb2VzIG5vdCBoYXZlIGludGVybWVkaWF0ZSBwb3NpdGlvbnMuXG4gKlxuICogQSBjb250aW51b3VzIGxheW91dCBpcyBvbmUgdGhhdCB1cGRhdGVzIHBvc2l0aW9ucyBjb250aW51b3VzbHksIGxpa2UgYSBmb3JjZS1cbiAqIGRpcmVjdGVkIC8gcGh5c2ljcyBzaW11bGF0aW9uIGxheW91dC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cbi8qKiovIH0pLFxuLyogMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgaW1wbCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cbi8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcbnZhciByZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyKGN5dG9zY2FwZSkge1xuICBpZiAoIWN5dG9zY2FwZSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBjYW4ndCByZWdpc3RlciBpZiBjeXRvc2NhcGUgdW5zcGVjaWZpZWRcblxuICBjeXRvc2NhcGUoJ2xheW91dCcsICdhdnNkZicsIGltcGwpOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYgKHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKGN5dG9zY2FwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXI7XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChvYmplY3QsIHByb3BlcnR5LCByZWNlaXZlcikgeyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgcmV0dXJuIGdldChwYXJlbnQsIHByb3BlcnR5LCByZWNlaXZlcik7IH0gfSBlbHNlIGlmIChcInZhbHVlXCIgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH07XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIG92ZXJhbGwgbGF5b3V0IHByb2Nlc3MgZm9yIHRoZVxuICogQWRqYWNlbnQgVmVydGV4IHdpdGggU21hbGxlc3QgRGVncmVlIEZpcnN0IChBVlNERikgYWxnb3JpdGhtLlxuICogKENpcmN1bGFyIERyYXdpbmcgQWxnb3JpdGhtIGJ5IEhvbmdtZWkgSGUgJiBPbmRyZWogU8O9a29yYSkuXG4gKlxuICogQGF1dGhvciBEb3J1ayDDh2FrbWFrw6fEsVxuICogQGF1dGhvciBBbGloYW4gT2trYVxuICpcbiAqIENvcHlyaWdodDogaS1WaXMgKEluZm9ybWF0aW9uIFZpc3VhbGl6YXRpb24pIFJlc2VhcmNoIExhYiwgQmlsa2VudCBVbml2ZXJzaXR5LCAyMDE5IC0gcHJlc2VudFxuKi9cblxuLy8gY3l0b3NzY2FwZS5qcy1hdnNkZiBSRVFVSVJFUyBhdnNkZi1iYXNlIGxpYnJhcnkgZWxlbWVudHNcbnZhciBBVlNERkxheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuQVZTREZMYXlvdXQ7XG52YXIgQVZTREZOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5BVlNERk5vZGU7XG52YXIgQVZTREZDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkFWU0RGQ29uc3RhbnRzO1xudmFyIFBvaW50RCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkubGF5b3V0QmFzZS5Qb2ludEQ7XG52YXIgRGltZW5zaW9uRCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkubGF5b3V0QmFzZS5EaW1lbnNpb25EO1xuXG4vLyBDeXRvc2NhcGUtZXh0ZW50aW9uIHRlbXBsYXRlIHJlcXVpcmVtZW50c1xuLy8gTW9yZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiBOUE0gJ3NsdXNoLWN5dG9zY2FwZS1leHRlbnNpb24nIHBhY2thZ2VcbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIENvbnRpbnVvdXNMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXG52YXIgaXNGbiA9IGZ1bmN0aW9uIGlzRm4oZm4pIHtcbiAgcmV0dXJuIHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJztcbn07XG52YXIgb3B0Rm4gPSBmdW5jdGlvbiBvcHRGbihvcHQsIGVsZSkge1xuICBpZiAoaXNGbihvcHQpKSB7XG4gICAgcmV0dXJuIG9wdChlbGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvcHQ7XG4gIH1cbn07XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge30sIC8vIENhbGxlZCBvbiBgbGF5b3V0cmVhZHlgXG4gIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7fSwgLy8gQ2FsbGVkIG9uIGBsYXlvdXRzdG9wYFxuICByZWZyZXNoOiAzMCwgLy8gbnVtYmVyIG9mIHRpY2tzIHBlciBmcmFtZTsgaGlnaGVyIGlzIGZhc3RlciBidXQgbW9yZSBqZXJreVxuICBmaXQ6IHRydWUsIC8vIFdoZXRoZXIgdG8gZml0IHRoZSBuZXR3b3JrIHZpZXcgYWZ0ZXIgd2hlbiBkb25lXG4gIHBhZGRpbmc6IDEwLCAvLyBQYWRkaW5nIG9uIGZpdFxuICByYW5kb21pemU6IGZhbHNlLCAvLyBXaGV0aGVyIHRvIGVuYWJsZSBpbmNyZW1lbnRhbCBtb2RlXG4gIGFuaW1hdGU6ICdlbmQnLCAvLyBUeXBlIG9mIGxheW91dCBhbmltYXRpb24uIFRoZSBvcHRpb24gc2V0IGlzIHsnZHVyaW5nJywgJ2VuZCcsIGZhbHNlfVxuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLCAvLyBEdXJhdGlvbiBmb3IgYW5pbWF0ZTplbmRcbiAgbm9kZVNlcGFyYXRpb246IDYwIC8vIEhvdyBhcGFydCB0aGUgbm9kZXMgYXJlXG59O1xuXG4vKipcbiAqICBUaGlzIGlzIHRoZSBtYWluIGNsYXNzIHRoYXQgZG9lcyBhbGwgdGhlIGZ1bmN0aW9uYWxpdHkuXG4gKiAgVGhlIGNsYXNzIGlzIHV0aWxpemVkIGJ5IGZ1bmN0aW9ucyBpbiB0aGUgY29udGludW91cy1iYXNlIGZvbGRlci5cbiAqL1xuXG52YXIgQVZTREYgPSBmdW5jdGlvbiAoX0NvbnRpbnVvdXNMYXlvdXQpIHtcbiAgX2luaGVyaXRzKEFWU0RGLCBfQ29udGludW91c0xheW91dCk7XG5cbiAgZnVuY3Rpb24gQVZTREYob3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBVlNERik7XG5cbiAgICAvLyBXaGV0aGVyIG5vZGUgc2VwYXJhdGlvbiB2YWx1ZSBpcyB1c2VkXG4gICAgdmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKEFWU0RGLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoQVZTREYpKS5jYWxsKHRoaXMsIGFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdGlvbnMpKSk7XG5cbiAgICBpZiAob3B0aW9ucy5ub2RlU2VwYXJhdGlvbiAhPSBudWxsKSBBVlNERkNvbnN0YW50cy5ERUZBVUxUX05PREVfU0VQQVJBVElPTiA9IG9wdGlvbnMubm9kZVNlcGFyYXRpb247ZWxzZSBBVlNERkNvbnN0YW50cy5ERUZBVUxUX05PREVfU0VQQVJBVElPTiA9IGRlZmF1bHRzLm5vZGVTZXBhcmF0aW9uO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgSW5pdGlhbGl6aW5nIEFWU0RGIGVsZW1lbnRzIGFuZCBhcnJhbmdpbmcgdGhlIG5vZGVzIG9mIHRoZSBncmFwaCBhcm91bmQgdGhlIGNpcmNsZVxuICAgKi9cblxuXG4gIF9jcmVhdGVDbGFzcyhBVlNERiwgW3tcbiAgICBrZXk6ICdwcmVydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwcmVydW4oKSB7XG4gICAgICB2YXIgc3RhdGUgPSB0aGlzLnN0YXRlOyAvLyBvcHRpb25zIG9iamVjdCBjb21iaW5lZCB3aXRoIGN1cnJlbnQgc3RhdGVcblxuICAgICAgLy8gSW5pdGlhbGl6ZSBBVlNERiBlbGVtZW50cyBhbmQgdGhlaXIgcmVxdWlyZW1lbnRzXG4gICAgICB2YXIgYXZzZGZMYXlvdXQgPSB0aGlzLmF2c2RmTGF5b3V0ID0gbmV3IEFWU0RGTGF5b3V0KCk7XG4gICAgICB2YXIgZ3JhcGhNYW5hZ2VyID0gdGhpcy5ncmFwaE1hbmFnZXIgPSBhdnNkZkxheW91dC5uZXdHcmFwaE1hbmFnZXIoKTtcbiAgICAgIHZhciByb290ID0gdGhpcy5yb290ID0gZ3JhcGhNYW5hZ2VyLmFkZFJvb3QoKTtcbiAgICAgIHZhciBub2RlcyA9IHN0YXRlLm5vZGVzO1xuICAgICAgdmFyIGVkZ2VzID0gc3RhdGUuZWRnZXM7XG5cbiAgICAgIC8vIEdldHRpbmcgbm9kZXMgb2YgY3l0b3NjYXBlIGFuZCBjb252ZXJ0aW5nIGl0IHRvIEFWU0RGIHN0cnVjdHVyZVxuICAgICAgdGhpcy5pZFRvTE5vZGUgPSB7fTtcbiAgICAgIHRoaXMucHJvY2Vzc0NoaWxkcmVuTGlzdChyb290LCBub2RlcywgYXZzZGZMYXlvdXQpO1xuXG4gICAgICAvLyBHZXR0aW5nIGVkZ2VzIG9mIGN5dG9zY2FwZSBhbmQgdHJhbnNmZXJpbmcgaXQgdG8gR3JhcGhNYW5hZ2VyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICAgIHZhciBzb3VyY2VOb2RlID0gdGhpcy5pZFRvTE5vZGVbZWRnZS5kYXRhKFwic291cmNlXCIpXTtcbiAgICAgICAgdmFyIHRhcmdldE5vZGUgPSB0aGlzLmlkVG9MTm9kZVtlZGdlLmRhdGEoXCJ0YXJnZXRcIildO1xuICAgICAgICBpZiAoc291cmNlTm9kZSAhPT0gdGFyZ2V0Tm9kZSAmJiBzb3VyY2VOb2RlLmdldEVkZ2VzQmV0d2Vlbih0YXJnZXROb2RlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB2YXIgZTEgPSBncmFwaE1hbmFnZXIuYWRkKGF2c2RmTGF5b3V0Lm5ld0VkZ2UoKSwgc291cmNlTm9kZSwgdGFyZ2V0Tm9kZSk7XG4gICAgICAgICAgZTEuaWQgPSBlZGdlLmlkKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUnVubmluZyB0aGUgQVZTREYgbGF5b3V0LlxuICAgICAgLy8gTm90ZTogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGRvIHBvc3QtcHJvY2Vzc2luZy4gUGx1cywgbm9kZXMgaGF2ZSB0byBiZSBwb3NpdGlvbmVkLlxuICAgICAgLy8gU2VlIEFWU0RGTGF5b3V0IGZvciBkZXRhaWxzLlxuICAgICAgYXZzZGZMYXlvdXQubGF5b3V0KCk7XG5cbiAgICAgIC8vIFdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBpbml0aWFsIGNpcmNsZSBwb3NpdGlvbiBpZiB3ZSB3YW50IHRvIHJlbmRlciBpdFxuICAgICAgYXZzZGZMYXlvdXQudXBkYXRlTm9kZUNvb3JkaW5hdGVzKCk7XG5cbiAgICAgIC8vIFBvc3QgcHJvY2VzcyBpcyBpdGVyYXRlZCBvdmVyIHRoZSBzb3J0ZWQgbGlzdCBvZiB2ZXJ0ZXggZGVncmVlcyAoZGVzY2VuZGluZylcbiAgICAgIHRoaXMuc29ydGVkQnlEZWdyZWVMaXN0ID0gYXZzZGZMYXlvdXQuaW5pdFBvc3RQcm9jZXNzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJ1bnMgdGhpcyBpbiBlYWNoIGl0ZXJhdGlvblxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICd0aWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGljaygpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgc3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIGdldHRpbmcgY29vcmRpbmF0ZXMgZnJvbSBBVlNERiBlbGVtZW50cyBhbmQgcGFzc2luZyBpdCB0byBjeXRvc2NhcGVcbiAgICAgIHZhciBwb3NpdGlvbnMgPSB0aGlzLmF2c2RmTGF5b3V0LmdldFBvc2l0aW9uc0RhdGEoKTtcbiAgICAgIHN0YXRlLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgdmFyIHMgPSBfdGhpczIuZ2V0U2NyYXRjaChuKTtcblxuICAgICAgICAvLyBleGFtcGxlIDogcHV0IG5vZGUgYXQgcmFuZG9tIHBvc2l0aW9uXG4gICAgICAgIHMueCA9IHBvc2l0aW9uc1tuLmRhdGEoJ2lkJyldLng7XG4gICAgICAgIHMueSA9IHBvc2l0aW9uc1tuLmRhdGEoJ2lkJyldLnk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHN0YXRlLnRpY2tJbmRleCA+PSBzdGF0ZS5ub2Rlcy5zaXplKCkpIHJldHVybiB0cnVlO1xuXG4gICAgICB0aGlzLmF2c2RmTGF5b3V0Lm9uZVN0ZXBQb3N0UHJvY2Vzcyh0aGlzLnNvcnRlZEJ5RGVncmVlTGlzdFtzdGF0ZS50aWNrSW5kZXhdKTtcbiAgICAgIHRoaXMuYXZzZGZMYXlvdXQudXBkYXRlTm9kZUFuZ2xlcygpO1xuICAgICAgdGhpcy5hdnNkZkxheW91dC51cGRhdGVOb2RlQ29vcmRpbmF0ZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUnVucyB0aGlzIGZ1bmN0aW9uIGFmdGVyIHRoZSBsYXlvdXQgaXMgZG9uZSB0aWNraW5nXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3Bvc3RydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwb3N0cnVuKCkge31cblxuICAgIC8qKlxuICAgICAqICBDbGVhbiB1cCBhbnkgb2JqZWN0IHJlZnMgdGhhdCBjb3VsZCBwcmV2ZW50IGdhcmJhZ2UgY29sbGVjdGlvbiwgZXRjLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdkZXN0cm95JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIF9nZXQoQVZTREYucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoQVZTREYucHJvdG90eXBlKSwgJ2Rlc3Ryb3knLCB0aGlzKS5jYWxsKHRoaXMpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFRyYW5zaXRpb24gZnJvbSBjeXRvc2NhcGUgbm9kZXMgdG8gQVZTREYgZWxlbWVudHNcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAncHJvY2Vzc0NoaWxkcmVuTGlzdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHByb2Nlc3NDaGlsZHJlbkxpc3QocGFyZW50LCBjaGlsZHJlbiwgbGF5b3V0KSB7XG4gICAgICB2YXIgc2l6ZSA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIHZhciB0aGVDaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB2YXIgdGhlTm9kZSA9IHZvaWQgMDtcblxuICAgICAgICAvL0xhYmVsIGRpbWVuc2lvbnMgYXJlIE5PVCBpbmNsdWRlZCB3aGVuIGNhbGN1bGF0aW5nIG5vZGUgZGltZW5zaW9uc1xuICAgICAgICB2YXIgZGltZW5zaW9ucyA9IHRoZUNoaWxkLmxheW91dERpbWVuc2lvbnMoe1xuICAgICAgICAgIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoZUNoaWxkLm91dGVyV2lkdGgoKSAhPSBudWxsICYmIHRoZUNoaWxkLm91dGVySGVpZ2h0KCkgIT0gbnVsbCkge1xuICAgICAgICAgIHRoZU5vZGUgPSBwYXJlbnQuYWRkKG5ldyBBVlNERk5vZGUobGF5b3V0LmdyYXBoTWFuYWdlciwgbnVsbCwgbmV3IFBvaW50RCh0aGVDaGlsZC5wb3NpdGlvbigneCcpIC0gZGltZW5zaW9ucy53IC8gMiwgdGhlQ2hpbGQucG9zaXRpb24oJ3knKSAtIGRpbWVuc2lvbnMuaCAvIDIpLCBuZXcgRGltZW5zaW9uRChwYXJzZUZsb2F0KGRpbWVuc2lvbnMudyksIHBhcnNlRmxvYXQoZGltZW5zaW9ucy5oKSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGVOb2RlID0gcGFyZW50LmFkZChuZXcgQVZTREZOb2RlKHRoaXMuZ3JhcGhNYW5hZ2VyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdHRhY2ggaWQgdG8gdGhlIGxheW91dCBub2RlXG4gICAgICAgIHRoZU5vZGUuaWQgPSB0aGVDaGlsZC5kYXRhKFwiaWRcIik7XG5cbiAgICAgICAgLy8gQXR0YWNoIHRoZSBwYWRkaW5ncyBvZiBjeSBub2RlIHRvIGxheW91dCBub2RlXG4gICAgICAgIHRoZU5vZGUucGFkZGluZ0xlZnQgPSBwYXJzZUludCh0aGVDaGlsZC5jc3MoJ3BhZGRpbmcnKSk7XG4gICAgICAgIHRoZU5vZGUucGFkZGluZ1RvcCA9IHBhcnNlSW50KHRoZUNoaWxkLmNzcygncGFkZGluZycpKTtcbiAgICAgICAgdGhlTm9kZS5wYWRkaW5nUmlnaHQgPSBwYXJzZUludCh0aGVDaGlsZC5jc3MoJ3BhZGRpbmcnKSk7XG4gICAgICAgIHRoZU5vZGUucGFkZGluZ0JvdHRvbSA9IHBhcnNlSW50KHRoZUNoaWxkLmNzcygncGFkZGluZycpKTtcblxuICAgICAgICAvLyBNYXAgdGhlIGxheW91dCBub2RlXG4gICAgICAgIHRoaXMuaWRUb0xOb2RlW3RoZUNoaWxkLmRhdGEoXCJpZFwiKV0gPSB0aGVOb2RlO1xuXG4gICAgICAgIGlmIChpc05hTih0aGVOb2RlLnJlY3QueCkpIHtcbiAgICAgICAgICB0aGVOb2RlLnJlY3QueCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNOYU4odGhlTm9kZS5yZWN0LnkpKSB7XG4gICAgICAgICAgdGhlTm9kZS5yZWN0LnkgPSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFWU0RGO1xufShDb250aW51b3VzTGF5b3V0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBBVlNERjtcblxuLyoqKi8gfSksXG4vKiA1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8vIGdlbmVyYWwgZGVmYXVsdCBvcHRpb25zIGZvciBmb3JjZS1kaXJlY3RlZCBsYXlvdXRcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZnJlZXplKHtcbiAgYW5pbWF0ZTogdHJ1ZSwgLy8gd2hldGhlciB0byBzaG93IHRoZSBsYXlvdXQgYXMgaXQncyBydW5uaW5nOyBzcGVjaWFsICdlbmQnIHZhbHVlIG1ha2VzIHRoZSBsYXlvdXQgYW5pbWF0ZSBsaWtlIGEgZGlzY3JldGUgbGF5b3V0XG4gIHJlZnJlc2g6IDEwLCAvLyBudW1iZXIgb2YgdGlja3MgcGVyIGZyYW1lOyBoaWdoZXIgaXMgZmFzdGVyIGJ1dCBtb3JlIGplcmt5XG4gIG1heEl0ZXJhdGlvbnM6IDEwMDAsIC8vIG1heCBpdGVyYXRpb25zIGJlZm9yZSB0aGUgbGF5b3V0IHdpbGwgYmFpbCBvdXRcbiAgdW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nOiBmYWxzZSwgLy8gc28geW91IGNhbid0IGRyYWcgbm9kZXMgZHVyaW5nIGxheW91dFxuICBmaXQ6IHRydWUsIC8vIG9uIGV2ZXJ5IGxheW91dCByZXBvc2l0aW9uIG9mIG5vZGVzLCBmaXQgdGhlIHZpZXdwb3J0XG4gIHBhZGRpbmc6IDMwLCAvLyBwYWRkaW5nIGFyb3VuZCB0aGUgc2ltdWxhdGlvblxuICBib3VuZGluZ0JveDogdW5kZWZpbmVkLCAvLyBjb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cblxuICAvLyBsYXlvdXQgZXZlbnQgY2FsbGJhY2tzXG4gIHJlYWR5OiBmdW5jdGlvbiByZWFkeSgpIHt9LCAvLyBvbiBsYXlvdXRyZWFkeVxuICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge30sIC8vIG9uIGxheW91dHN0b3BcblxuICAvLyBwb3NpdGlvbmluZyBvcHRpb25zXG4gIHJhbmRvbWl6ZTogZmFsc2UsIC8vIHVzZSByYW5kb20gbm9kZSBwb3NpdGlvbnMgYXQgYmVnaW5uaW5nIG9mIGxheW91dFxuXG4gIC8vIGluZmluaXRlIGxheW91dCBvcHRpb25zXG4gIGluZmluaXRlOiBmYWxzZSAvLyBvdmVycmlkZXMgYWxsIG90aGVyIG9wdGlvbnMgZm9yIGEgZm9yY2VzLWFsbC10aGUtdGltZSBtb2RlXG59KTtcblxuLyoqKi8gfSksXG4vKiA2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbi8qKlxuIEEgZ2VuZXJpYyBjb250aW51b3VzIGxheW91dCBjbGFzc1xuICovXG5cbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIGRlZmF1bHRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbnZhciBtYWtlQm91bmRpbmdCb3ggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXG52YXIgX3JlcXVpcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpLFxuICAgIHNldEluaXRpYWxQb3NpdGlvblN0YXRlID0gX3JlcXVpcmUuc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUsXG4gICAgcmVmcmVzaFBvc2l0aW9ucyA9IF9yZXF1aXJlLnJlZnJlc2hQb3NpdGlvbnMsXG4gICAgZ2V0Tm9kZVBvc2l0aW9uRGF0YSA9IF9yZXF1aXJlLmdldE5vZGVQb3NpdGlvbkRhdGE7XG5cbnZhciBfcmVxdWlyZTIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpLFxuICAgIG11bHRpdGljayA9IF9yZXF1aXJlMi5tdWx0aXRpY2s7XG5cbnZhciBMYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExheW91dChvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExheW91dCk7XG5cbiAgICB2YXIgbyA9IHRoaXMub3B0aW9ucyA9IGFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdGlvbnMpO1xuXG4gICAgdmFyIHMgPSB0aGlzLnN0YXRlID0gYXNzaWduKHt9LCBvLCB7XG4gICAgICBsYXlvdXQ6IHRoaXMsXG4gICAgICBub2Rlczogby5lbGVzLm5vZGVzKCksXG4gICAgICBlZGdlczogby5lbGVzLmVkZ2VzKCksXG4gICAgICB0aWNrSW5kZXg6IDAsXG4gICAgICBmaXJzdFVwZGF0ZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgcy5hbmltYXRlRW5kID0gby5hbmltYXRlICYmIG8uYW5pbWF0ZSA9PT0gJ2VuZCc7XG4gICAgcy5hbmltYXRlQ29udGludW91c2x5ID0gby5hbmltYXRlICYmICFzLmFuaW1hdGVFbmQ7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTGF5b3V0LCBbe1xuICAgIGtleTogJ2dldFNjcmF0Y2gnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTY3JhdGNoKGVsKSB7XG4gICAgICB2YXIgbmFtZSA9IHRoaXMuc3RhdGUubmFtZTtcbiAgICAgIHZhciBzY3JhdGNoID0gZWwuc2NyYXRjaChuYW1lKTtcblxuICAgICAgaWYgKCFzY3JhdGNoKSB7XG4gICAgICAgIHNjcmF0Y2ggPSB7fTtcblxuICAgICAgICBlbC5zY3JhdGNoKG5hbWUsIHNjcmF0Y2gpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2NyYXRjaDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oKSB7XG4gICAgICB2YXIgbCA9IHRoaXM7XG4gICAgICB2YXIgcyA9IHRoaXMuc3RhdGU7XG5cbiAgICAgIHMudGlja0luZGV4ID0gMDtcbiAgICAgIHMuZmlyc3RVcGRhdGUgPSB0cnVlO1xuICAgICAgcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgcy5ydW5uaW5nID0gdHJ1ZTtcblxuICAgICAgcy5jdXJyZW50Qm91bmRpbmdCb3ggPSBtYWtlQm91bmRpbmdCb3gocy5ib3VuZGluZ0JveCwgcy5jeSk7XG5cbiAgICAgIGlmIChzLnJlYWR5KSB7XG4gICAgICAgIGwub25lKCdyZWFkeScsIHMucmVhZHkpO1xuICAgICAgfVxuICAgICAgaWYgKHMuc3RvcCkge1xuICAgICAgICBsLm9uZSgnc3RvcCcsIHMuc3RvcCk7XG4gICAgICB9XG5cbiAgICAgIHMubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUobiwgcyk7XG4gICAgICB9KTtcblxuICAgICAgbC5wcmVydW4ocyk7XG5cbiAgICAgIGlmIChzLmFuaW1hdGVDb250aW51b3VzbHkpIHtcbiAgICAgICAgdmFyIHVuZ3JhYmlmeSA9IGZ1bmN0aW9uIHVuZ3JhYmlmeShub2RlKSB7XG4gICAgICAgICAgaWYgKCFzLnVuZ3JhYmlmeVdoaWxlU2ltdWxhdGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBncmFiYmFibGUgPSBnZXROb2RlUG9zaXRpb25EYXRhKG5vZGUsIHMpLmdyYWJiYWJsZSA9IG5vZGUuZ3JhYmJhYmxlKCk7XG5cbiAgICAgICAgICBpZiAoZ3JhYmJhYmxlKSB7XG4gICAgICAgICAgICBub2RlLnVuZ3JhYmlmeSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgcmVncmFiaWZ5ID0gZnVuY3Rpb24gcmVncmFiaWZ5KG5vZGUpIHtcbiAgICAgICAgICBpZiAoIXMudW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGdyYWJiYWJsZSA9IGdldE5vZGVQb3NpdGlvbkRhdGEobm9kZSwgcykuZ3JhYmJhYmxlO1xuXG4gICAgICAgICAgaWYgKGdyYWJiYWJsZSkge1xuICAgICAgICAgICAgbm9kZS5ncmFiaWZ5KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciB1cGRhdGVHcmFiU3RhdGUgPSBmdW5jdGlvbiB1cGRhdGVHcmFiU3RhdGUobm9kZSkge1xuICAgICAgICAgIHJldHVybiBnZXROb2RlUG9zaXRpb25EYXRhKG5vZGUsIHMpLmdyYWJiZWQgPSBub2RlLmdyYWJiZWQoKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgb25HcmFiID0gZnVuY3Rpb24gb25HcmFiKF9yZWYpIHtcbiAgICAgICAgICB2YXIgdGFyZ2V0ID0gX3JlZi50YXJnZXQ7XG5cbiAgICAgICAgICB1cGRhdGVHcmFiU3RhdGUodGFyZ2V0KTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgb25GcmVlID0gb25HcmFiO1xuXG4gICAgICAgIHZhciBvbkRyYWcgPSBmdW5jdGlvbiBvbkRyYWcoX3JlZjIpIHtcbiAgICAgICAgICB2YXIgdGFyZ2V0ID0gX3JlZjIudGFyZ2V0O1xuXG4gICAgICAgICAgdmFyIHAgPSBnZXROb2RlUG9zaXRpb25EYXRhKHRhcmdldCwgcyk7XG4gICAgICAgICAgdmFyIHRwID0gdGFyZ2V0LnBvc2l0aW9uKCk7XG5cbiAgICAgICAgICBwLnggPSB0cC54O1xuICAgICAgICAgIHAueSA9IHRwLnk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGxpc3RlblRvR3JhYiA9IGZ1bmN0aW9uIGxpc3RlblRvR3JhYihub2RlKSB7XG4gICAgICAgICAgbm9kZS5vbignZ3JhYicsIG9uR3JhYik7XG4gICAgICAgICAgbm9kZS5vbignZnJlZScsIG9uRnJlZSk7XG4gICAgICAgICAgbm9kZS5vbignZHJhZycsIG9uRHJhZyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIHVubGlzdGVuVG9HcmFiID0gZnVuY3Rpb24gdW5saXN0ZW5Ub0dyYWIobm9kZSkge1xuICAgICAgICAgIG5vZGUucmVtb3ZlTGlzdGVuZXIoJ2dyYWInLCBvbkdyYWIpO1xuICAgICAgICAgIG5vZGUucmVtb3ZlTGlzdGVuZXIoJ2ZyZWUnLCBvbkZyZWUpO1xuICAgICAgICAgIG5vZGUucmVtb3ZlTGlzdGVuZXIoJ2RyYWcnLCBvbkRyYWcpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBmaXQgPSBmdW5jdGlvbiBmaXQoKSB7XG4gICAgICAgICAgaWYgKHMuZml0ICYmIHMuYW5pbWF0ZUNvbnRpbnVvdXNseSkge1xuICAgICAgICAgICAgcy5jeS5maXQocy5wYWRkaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIG9uTm90RG9uZSA9IGZ1bmN0aW9uIG9uTm90RG9uZSgpIHtcbiAgICAgICAgICByZWZyZXNoUG9zaXRpb25zKHMubm9kZXMsIHMpO1xuICAgICAgICAgIGZpdCgpO1xuXG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKF9mcmFtZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIF9mcmFtZSA9IGZ1bmN0aW9uIF9mcmFtZSgpIHtcbiAgICAgICAgICBtdWx0aXRpY2socywgb25Ob3REb25lLCBfb25Eb25lKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgX29uRG9uZSA9IGZ1bmN0aW9uIF9vbkRvbmUoKSB7XG4gICAgICAgICAgcmVmcmVzaFBvc2l0aW9ucyhzLm5vZGVzLCBzKTtcbiAgICAgICAgICBmaXQoKTtcblxuICAgICAgICAgIHMubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgcmVncmFiaWZ5KG4pO1xuICAgICAgICAgICAgdW5saXN0ZW5Ub0dyYWIobik7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBzLnJ1bm5pbmcgPSBmYWxzZTtcblxuICAgICAgICAgIGwuZW1pdCgnbGF5b3V0c3RvcCcpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGwuZW1pdCgnbGF5b3V0c3RhcnQnKTtcblxuICAgICAgICBzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICB1bmdyYWJpZnkobik7XG4gICAgICAgICAgbGlzdGVuVG9HcmFiKG4pO1xuICAgICAgICB9KTtcblxuICAgICAgICBfZnJhbWUoKTsgLy8ga2ljayBvZmZcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICAgIHZhciBfb25Ob3REb25lID0gZnVuY3Rpb24gX29uTm90RG9uZSgpIHt9O1xuICAgICAgICB2YXIgX29uRG9uZTIgPSBmdW5jdGlvbiBfb25Eb25lMigpIHtcbiAgICAgICAgICByZXR1cm4gZG9uZSA9IHRydWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgbXVsdGl0aWNrKHMsIF9vbk5vdERvbmUsIF9vbkRvbmUyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHMuZWxlcy5sYXlvdXRQb3NpdGlvbnModGhpcywgcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICB2YXIgcGQgPSBnZXROb2RlUG9zaXRpb25EYXRhKG5vZGUsIHMpO1xuXG4gICAgICAgICAgcmV0dXJuIHsgeDogcGQueCwgeTogcGQueSB9O1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgbC5wb3N0cnVuKHMpO1xuXG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwcmVydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwcmVydW4oKSB7fVxuICB9LCB7XG4gICAga2V5OiAncG9zdHJ1bicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBvc3RydW4oKSB7fVxuICB9LCB7XG4gICAga2V5OiAndGljaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRpY2soKSB7fVxuICB9LCB7XG4gICAga2V5OiAnc3RvcCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICB0aGlzLnN0YXRlLnJ1bm5pbmcgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZGVzdHJveScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTGF5b3V0O1xufSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IExheW91dDtcblxuLyoqKi8gfSksXG4vKiA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJiLCBjeSkge1xuICBpZiAoYmIgPT0gbnVsbCkge1xuICAgIGJiID0geyB4MTogMCwgeTE6IDAsIHc6IGN5LndpZHRoKCksIGg6IGN5LmhlaWdodCgpIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gY29weVxuICAgIGJiID0geyB4MTogYmIueDEsIHgyOiBiYi54MiwgeTE6IGJiLnkxLCB5MjogYmIueTIsIHc6IGJiLncsIGg6IGJiLmggfTtcbiAgfVxuXG4gIGlmIChiYi54MiA9PSBudWxsKSB7XG4gICAgYmIueDIgPSBiYi54MSArIGJiLnc7XG4gIH1cbiAgaWYgKGJiLncgPT0gbnVsbCkge1xuICAgIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICB9XG4gIGlmIChiYi55MiA9PSBudWxsKSB7XG4gICAgYmIueTIgPSBiYi55MSArIGJiLmg7XG4gIH1cbiAgaWYgKGJiLmggPT0gbnVsbCkge1xuICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICB9XG5cbiAgcmV0dXJuIGJiO1xufTtcblxuLyoqKi8gfSksXG4vKiA4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG52YXIgc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUgPSBmdW5jdGlvbiBzZXRJbml0aWFsUG9zaXRpb25TdGF0ZShub2RlLCBzdGF0ZSkge1xuICB2YXIgcCA9IG5vZGUucG9zaXRpb24oKTtcbiAgdmFyIGJiID0gc3RhdGUuY3VycmVudEJvdW5kaW5nQm94O1xuICB2YXIgc2NyYXRjaCA9IG5vZGUuc2NyYXRjaChzdGF0ZS5uYW1lKTtcblxuICBpZiAoc2NyYXRjaCA9PSBudWxsKSB7XG4gICAgc2NyYXRjaCA9IHt9O1xuXG4gICAgbm9kZS5zY3JhdGNoKHN0YXRlLm5hbWUsIHNjcmF0Y2gpO1xuICB9XG5cbiAgYXNzaWduKHNjcmF0Y2gsIHN0YXRlLnJhbmRvbWl6ZSA/IHtcbiAgICB4OiBiYi54MSArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIGJiLncpLFxuICAgIHk6IGJiLnkxICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogYmIuaClcbiAgfSA6IHtcbiAgICB4OiBwLngsXG4gICAgeTogcC55XG4gIH0pO1xuXG4gIHNjcmF0Y2gubG9ja2VkID0gbm9kZS5sb2NrZWQoKTtcbn07XG5cbnZhciBnZXROb2RlUG9zaXRpb25EYXRhID0gZnVuY3Rpb24gZ2V0Tm9kZVBvc2l0aW9uRGF0YShub2RlLCBzdGF0ZSkge1xuICByZXR1cm4gbm9kZS5zY3JhdGNoKHN0YXRlLm5hbWUpO1xufTtcblxudmFyIHJlZnJlc2hQb3NpdGlvbnMgPSBmdW5jdGlvbiByZWZyZXNoUG9zaXRpb25zKG5vZGVzLCBzdGF0ZSkge1xuICBub2Rlcy5wb3NpdGlvbnMoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICB2YXIgc2NyYXRjaCA9IG5vZGUuc2NyYXRjaChzdGF0ZS5uYW1lKTtcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBzY3JhdGNoLngsXG4gICAgICB5OiBzY3JhdGNoLnlcbiAgICB9O1xuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0geyBzZXRJbml0aWFsUG9zaXRpb25TdGF0ZTogc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUsIGdldE5vZGVQb3NpdGlvbkRhdGE6IGdldE5vZGVQb3NpdGlvbkRhdGEsIHJlZnJlc2hQb3NpdGlvbnM6IHJlZnJlc2hQb3NpdGlvbnMgfTtcblxuLyoqKi8gfSksXG4vKiA5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBub3AgPSBmdW5jdGlvbiBub3AoKSB7fTtcblxudmFyIHRpY2sgPSBmdW5jdGlvbiB0aWNrKHN0YXRlKSB7XG4gIHZhciBzID0gc3RhdGU7XG4gIHZhciBsID0gc3RhdGUubGF5b3V0O1xuXG4gIHZhciB0aWNrSW5kaWNhdGVzRG9uZSA9IGwudGljayhzKTtcblxuICBpZiAocy5maXJzdFVwZGF0ZSkge1xuICAgIGlmIChzLmFuaW1hdGVDb250aW51b3VzbHkpIHtcbiAgICAgIC8vIGluZGljYXRlIHRoZSBpbml0aWFsIHBvc2l0aW9ucyBoYXZlIGJlZW4gc2V0XG4gICAgICBzLmxheW91dC5lbWl0KCdsYXlvdXRyZWFkeScpO1xuICAgIH1cbiAgICBzLmZpcnN0VXBkYXRlID0gZmFsc2U7XG4gIH1cblxuICBzLnRpY2tJbmRleCsrO1xuXG4gIHZhciBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzLnN0YXJ0VGltZTtcblxuICByZXR1cm4gIXMuaW5maW5pdGUgJiYgdGlja0luZGljYXRlc0RvbmU7XG59O1xuXG52YXIgbXVsdGl0aWNrID0gZnVuY3Rpb24gbXVsdGl0aWNrKHN0YXRlKSB7XG4gIHZhciBvbk5vdERvbmUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG5vcDtcbiAgdmFyIG9uRG9uZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogbm9wO1xuXG4gIHZhciBkb25lID0gZmFsc2U7XG4gIHZhciBzID0gc3RhdGU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLnJlZnJlc2g7IGkrKykge1xuICAgIGRvbmUgPSAhcy5ydW5uaW5nIHx8IHRpY2socyk7XG5cbiAgICBpZiAoZG9uZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFkb25lKSB7XG4gICAgb25Ob3REb25lKCk7XG4gIH0gZWxzZSB7XG4gICAgb25Eb25lKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0geyB0aWNrOiB0aWNrLCBtdWx0aXRpY2s6IG11bHRpdGljayB9O1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG59KTsiLCIvKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gW107XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlQ2xlYXI7XG4iLCIvKipcbiAqIFBlcmZvcm1zIGFcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcSgnYScsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcShOYU4sIE5hTik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcTtcbiIsInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0luZGV4T2Y7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgaWYgKGluZGV4ID09IGxhc3RJbmRleCkge1xuICAgIGRhdGEucG9wKCk7XG4gIH0gZWxzZSB7XG4gICAgc3BsaWNlLmNhbGwoZGF0YSwgaW5kZXgsIDEpO1xuICB9XG4gIC0tdGhpcy5zaXplO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVEZWxldGU7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlR2V0O1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVIYXM7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgKyt0aGlzLnNpemU7XG4gICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0gZWxzZSB7XG4gICAgZGF0YVtpbmRleF1bMV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVTZXQ7XG4iLCJ2YXIgbGlzdENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVDbGVhcicpLFxuICAgIGxpc3RDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZURlbGV0ZScpLFxuICAgIGxpc3RDYWNoZUdldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUdldCcpLFxuICAgIGxpc3RDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUhhcycpLFxuICAgIGxpc3RDYWNoZVNldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTGlzdENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tEZWxldGU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuIiwiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxubW9kdWxlLmV4cG9ydHMgPSBmcmVlR2xvYmFsO1xuIiwidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb290O1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGdldFJhd1RhZyA9IHJlcXVpcmUoJy4vX2dldFJhd1RhZycpLFxuICAgIG9iamVjdFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fb2JqZWN0VG9TdHJpbmcnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldFRhZztcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcmVKc0RhdGE7XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNNYXNrZWQgPSByZXF1aXJlKCcuL19pc01hc2tlZCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRWYWx1ZTtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVDcmVhdGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKi9cbmZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5hdGl2ZUNyZWF0ZSA/IG5hdGl2ZUNyZWF0ZShudWxsKSA6IHt9O1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hDbGVhcjtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaERlbGV0ZTtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hHZXQ7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoSGFzO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoU2V0O1xuIiwidmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLFxuICAgIGhhc2hEZWxldGUgPSByZXF1aXJlKCcuL19oYXNoRGVsZXRlJyksXG4gICAgaGFzaEdldCA9IHJlcXVpcmUoJy4vX2hhc2hHZXQnKSxcbiAgICBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLFxuICAgIGhhc2hTZXQgPSByZXF1aXJlKCcuL19oYXNoU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG5IYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbkhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG5IYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2g7XG4iLCJ2YXIgSGFzaCA9IHJlcXVpcmUoJy4vX0hhc2gnKSxcbiAgICBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVDbGVhcigpIHtcbiAgdGhpcy5zaXplID0gMDtcbiAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICdtYXAnOiBuZXcgKE1hcCB8fCBMaXN0Q2FjaGUpLFxuICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlQ2xlYXI7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXlhYmxlO1xuIiwidmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWFwRGF0YTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUhhcztcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVTZXQ7XG4iLCJ2YXIgbWFwQ2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX21hcENhY2hlQ2xlYXInKSxcbiAgICBtYXBDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX21hcENhY2hlRGVsZXRlJyksXG4gICAgbWFwQ2FjaGVHZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZUdldCcpLFxuICAgIG1hcENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVIYXMnKSxcbiAgICBtYXBDYWNoZVNldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tTZXQ7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgc3RhY2tDbGVhciA9IHJlcXVpcmUoJy4vX3N0YWNrQ2xlYXInKSxcbiAgICBzdGFja0RlbGV0ZSA9IHJlcXVpcmUoJy4vX3N0YWNrRGVsZXRlJyksXG4gICAgc3RhY2tHZXQgPSByZXF1aXJlKCcuL19zdGFja0dldCcpLFxuICAgIHN0YWNrSGFzID0gcmVxdWlyZSgnLi9fc3RhY2tIYXMnKSxcbiAgICBzdGFja1NldCA9IHJlcXVpcmUoJy4vX3N0YWNrU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuU3RhY2sucHJvdG90eXBlLmNsZWFyID0gc3RhY2tDbGVhcjtcblN0YWNrLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBzdGFja0RlbGV0ZTtcblN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcblN0YWNrLnByb3RvdHlwZS5oYXMgPSBzdGFja0hhcztcblN0YWNrLnByb3RvdHlwZS5zZXQgPSBzdGFja1NldDtcblxubW9kdWxlLmV4cG9ydHMgPSBTdGFjaztcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheUVhY2goYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUVhY2g7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZVByb3BlcnR5O1xuIiwidmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICogdmFsdWUgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduVmFsdWU7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduVmFsdWU7XG4iLCJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpO1xuXG4vKipcbiAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5T2JqZWN0O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0FyZ3VtZW50cztcbiIsInZhciBiYXNlSXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL19iYXNlSXNBcmd1bWVudHMnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FyZ3VtZW50cztcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkZhbHNlO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQnVmZmVyO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW5kZXg7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzVHlwZWRBcnJheTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5hcnk7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgIGlmICh0eXBlcykge1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBub2RlVXRpbDtcbiIsInZhciBiYXNlSXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fYmFzZUlzVHlwZWRBcnJheScpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNUeXBlZEFycmF5O1xuIiwidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUxpa2VLZXlzO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUHJvdG90eXBlO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5cztcbiIsInZhciBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5cyA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXMnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzO1xuIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2U7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5c0luO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzSW4gPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIiwidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzSW4nKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5c0luO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25JbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbkluKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25JbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICBidWZmZXIuY29weShyZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQnVmZmVyO1xuIiwiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weUFycmF5O1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RmlsdGVyKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmlsdGVyO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXMpO1xuICogLy8gPT4gW1tdLCBbXV1cbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXNbMF0gPT09IGFycmF5c1sxXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBzdHViQXJyYXkoKSB7XG4gIHJldHVybiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViQXJyYXk7XG4iLCJ2YXIgYXJyYXlGaWx0ZXIgPSByZXF1aXJlKCcuL19hcnJheUZpbHRlcicpLFxuICAgIHN0dWJBcnJheSA9IHJlcXVpcmUoJy4vc3R1YkFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICByZXR1cm4gYXJyYXlGaWx0ZXIobmF0aXZlR2V0U3ltYm9scyhvYmplY3QpLCBmdW5jdGlvbihzeW1ib2wpIHtcbiAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRTeW1ib2xzO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9scyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzO1xuIiwiLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UHVzaDtcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRQcm90b3R5cGU7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChvYmplY3QpIHtcbiAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHNJbjtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpO1xuXG4vKipcbiAqIENvcGllcyBvd24gYW5kIGluaGVyaXRlZCBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5U3ltYm9sc0luKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9sc0luKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHNJbjtcbiIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0QWxsS2V5cztcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5cztcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9sc0luJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzSW47XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBQcm9taXNlID0gZ2V0TmF0aXZlKHJvb3QsICdQcm9taXNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgU2V0ID0gZ2V0TmF0aXZlKHJvb3QsICdTZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFdlYWtNYXAgPSBnZXROYXRpdmUocm9vdCwgJ1dlYWtNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBXZWFrTWFwO1xuIiwidmFyIERhdGFWaWV3ID0gcmVxdWlyZSgnLi9fRGF0YVZpZXcnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBQcm9taXNlID0gcmVxdWlyZSgnLi9fUHJvbWlzZScpLFxuICAgIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIFdlYWtNYXAgPSByZXF1aXJlKCcuL19XZWFrTWFwJyksXG4gICAgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG52YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xudmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbi8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbmlmICgoRGF0YVZpZXcgJiYgZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBkYXRhVmlld1RhZykgfHxcbiAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLFxuICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICBpZiAoY3RvclN0cmluZykge1xuICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VGFnO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQXJyYXkoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIC8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG4gIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgcmVzdWx0LmlucHV0ID0gYXJyYXkuaW5wdXQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVBcnJheTtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVpbnQ4QXJyYXk7XG4iLCJ2YXIgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGFycmF5QnVmZmVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyYXlCdWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikge1xuICB2YXIgcmVzdWx0ID0gbmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpO1xuICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQXJyYXlCdWZmZXI7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVEYXRhVmlldyhkYXRhVmlldywgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURhdGFWaWV3O1xuIiwiLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICovXG5mdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVJlZ0V4cDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBgc3ltYm9sYCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzeW1ib2wgVGhlIHN5bWJvbCBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY2xvbmVTeW1ib2woc3ltYm9sKSB7XG4gIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lU3ltYm9sO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2xvbmVUeXBlZEFycmF5KHR5cGVkQXJyYXksIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVUeXBlZEFycmF5O1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyksXG4gICAgY2xvbmVEYXRhVmlldyA9IHJlcXVpcmUoJy4vX2Nsb25lRGF0YVZpZXcnKSxcbiAgICBjbG9uZVJlZ0V4cCA9IHJlcXVpcmUoJy4vX2Nsb25lUmVnRXhwJyksXG4gICAgY2xvbmVTeW1ib2wgPSByZXF1aXJlKCcuL19jbG9uZVN5bWJvbCcpLFxuICAgIGNsb25lVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Nsb25lVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUgYmFzZWQgb24gaXRzIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjbG9uaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTWFwYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBgU2V0YCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQnlUYWcob2JqZWN0LCB0YWcsIGlzRGVlcCkge1xuICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXIob2JqZWN0KTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7XG5cbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgcmV0dXJuIGNsb25lRGF0YVZpZXcob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgIGNhc2UgdWludDhUYWc6IGNhc2UgdWludDhDbGFtcGVkVGFnOiBjYXNlIHVpbnQxNlRhZzogY2FzZSB1aW50MzJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVUeXBlZEFycmF5KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgcmV0dXJuIGNsb25lU3ltYm9sKG9iamVjdCk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVCeVRhZztcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHByb3RvIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xudmFyIGJhc2VDcmVhdGUgPSAoZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gIHJldHVybiBmdW5jdGlvbihwcm90bykge1xuICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChvYmplY3RDcmVhdGUpIHtcbiAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgIH1cbiAgICBvYmplY3QucHJvdG90eXBlID0gcHJvdG87XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ3JlYXRlO1xuIiwidmFyIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuIiwidmFyIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hcGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWFwKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gbWFwVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hcDtcbiIsInZhciBiYXNlSXNNYXAgPSByZXF1aXJlKCcuL19iYXNlSXNNYXAnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzTWFwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNNYXA7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBNYXBgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTWFwKG5ldyBNYXApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNNYXAobmV3IFdlYWtNYXApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzTWFwID0gbm9kZUlzTWFwID8gYmFzZVVuYXJ5KG5vZGVJc01hcCkgOiBiYXNlSXNNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXA7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzU2V0O1xuIiwidmFyIGJhc2VJc1NldCA9IHJlcXVpcmUoJy4vX2Jhc2VJc1NldCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNTZXQgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1NldDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFNldGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTZXQobmV3IFNldCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1NldChuZXcgV2Vha1NldCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNTZXQgPSBub2RlSXNTZXQgPyBiYXNlVW5hcnkobm9kZUlzU2V0KSA6IGJhc2VJc1NldDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1NldDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ24gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduJyksXG4gICAgYmFzZUFzc2lnbkluID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbkluJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGNvcHlTeW1ib2xzID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHMnKSxcbiAgICBjb3B5U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHNJbicpLFxuICAgIGdldEFsbEtleXMgPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzJyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaW5pdENsb25lQXJyYXkgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVBcnJheScpLFxuICAgIGluaXRDbG9uZUJ5VGFnID0gcmVxdWlyZSgnLi9faW5pdENsb25lQnlUYWcnKSxcbiAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNNYXAgPSByZXF1aXJlKCcuL2lzTWFwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTZXQgPSByZXF1aXJlKCcuL2lzU2V0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbnZhciBjbG9uZWFibGVUYWdzID0ge307XG5jbG9uZWFibGVUYWdzW2FyZ3NUYWddID0gY2xvbmVhYmxlVGFnc1thcnJheVRhZ10gPVxuY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG5jbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG5jbG9uZWFibGVUYWdzW2Zsb2F0MzJUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tudW1iZXJUYWddID0gY2xvbmVhYmxlVGFnc1tvYmplY3RUYWddID1cbmNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbmNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG5jbG9uZWFibGVUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICogdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBEZWVwIGNsb25lXG4gKiAgMiAtIEZsYXR0ZW4gaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAqICA0IC0gQ2xvbmUgc3ltYm9sc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBba2V5XSBUaGUga2V5IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIHBhcmVudCBvYmplY3Qgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgdmFyIHJlc3VsdCxcbiAgICAgIGlzRGVlcCA9IGJpdG1hc2sgJiBDTE9ORV9ERUVQX0ZMQUcsXG4gICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgaXNGdWxsID0gYml0bWFzayAmIENMT05FX1NZTUJPTFNfRkxBRztcblxuICBpZiAoY3VzdG9taXplcikge1xuICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgfVxuICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpO1xuICBpZiAoaXNBcnIpIHtcbiAgICByZXN1bHQgPSBpbml0Q2xvbmVBcnJheSh2YWx1ZSk7XG4gICAgaWYgKCFpc0RlZXApIHtcbiAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICBpc0Z1bmMgPSB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xuXG4gICAgaWYgKGlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgIH1cbiAgICBpZiAodGFnID09IG9iamVjdFRhZyB8fCB0YWcgPT0gYXJnc1RhZyB8fCAoaXNGdW5jICYmICFvYmplY3QpKSB7XG4gICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICByZXR1cm4gaXNGbGF0XG4gICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgOiBjb3B5U3ltYm9scyh2YWx1ZSwgYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICBpZiAoc3RhY2tlZCkge1xuICAgIHJldHVybiBzdGFja2VkO1xuICB9XG4gIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgcmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN1YlZhbHVlLCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdC5zZXQoa2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbG9uZTtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzaGFsbG93IGNsb25lIG9mIGB2YWx1ZWAuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlXG4gKiBbc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG1dKGh0dHBzOi8vbWRuLmlvL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtKVxuICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICogbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcywgc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkXG4gKiBhcnJheXMuIFRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBhcmd1bWVudHNgIG9iamVjdHMgYXJlIGNsb25lZFxuICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICogYXMgZXJyb3Igb2JqZWN0cywgZnVuY3Rpb25zLCBET00gbm9kZXMsIGFuZCBXZWFrTWFwcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgc2hhbGxvdyA9IF8uY2xvbmUob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZTtcbiIsIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnN0YW50O1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgYmFzZSBmdW5jdGlvbiBmb3IgbWV0aG9kcyBsaWtlIGBfLmZvckluYCBhbmQgYF8uZm9yT3duYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRm9yKGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgaXRlcmFibGUgPSBPYmplY3Qob2JqZWN0KSxcbiAgICAgICAgcHJvcHMgPSBrZXlzRnVuYyhvYmplY3QpLFxuICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUZvcjtcbiIsInZhciBjcmVhdGVCYXNlRm9yID0gcmVxdWlyZSgnLi9fY3JlYXRlQmFzZUZvcicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xudmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvcjtcbiIsInZhciBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGb3JPd247XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsIGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICB9XG4gICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVbaW5kZXhdLCBpbmRleCwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUVhY2g7XG4iLCJ2YXIgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBjcmVhdGVCYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2NyZWF0ZUJhc2VFYWNoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gKi9cbnZhciBiYXNlRWFjaCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd24pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VFYWNoO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBpdCByZWNlaXZlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBBbnkgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqXG4gKiBjb25zb2xlLmxvZyhfLmlkZW50aXR5KG9iamVjdCkgPT09IG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpZGVudGl0eTtcbiIsInZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGBpZGVudGl0eWAgaWYgaXQncyBub3QgYSBmdW5jdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBjYXN0IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjYXN0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nID8gdmFsdWUgOiBpZGVudGl0eTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0RnVuY3Rpb247XG4iLCJ2YXIgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGNhc3RGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2Nhc3RGdW5jdGlvbicpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIGVsZW1lbnQuXG4gKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqICoqTm90ZToqKiBBcyB3aXRoIG90aGVyIFwiQ29sbGVjdGlvbnNcIiBtZXRob2RzLCBvYmplY3RzIHdpdGggYSBcImxlbmd0aFwiXG4gKiBwcm9wZXJ0eSBhcmUgaXRlcmF0ZWQgbGlrZSBhcnJheXMuIFRvIGF2b2lkIHRoaXMgYmVoYXZpb3IgdXNlIGBfLmZvckluYFxuICogb3IgYF8uZm9yT3duYCBmb3Igb2JqZWN0IGl0ZXJhdGlvbi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAYWxpYXMgZWFjaFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gKiBAc2VlIF8uZm9yRWFjaFJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZm9yRWFjaChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gKiAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAqIH0pO1xuICogLy8gPT4gTG9ncyBgMWAgdGhlbiBgMmAuXG4gKlxuICogXy5mb3JFYWNoKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICogICBjb25zb2xlLmxvZyhrZXkpO1xuICogfSk7XG4gKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2ggOiBiYXNlRWFjaDtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgY2FzdEZ1bmN0aW9uKGl0ZXJhdGVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZm9yRWFjaDtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mb3JFYWNoJyk7XG4iLCJ2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbHRlcmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlRmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSkge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZpbHRlcjtcbiIsIi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBhZGRcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQGFsaWFzIHB1c2hcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlQWRkO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUhhcyh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlSGFzO1xuIiwidmFyIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKSxcbiAgICBzZXRDYWNoZUFkZCA9IHJlcXVpcmUoJy4vX3NldENhY2hlQWRkJyksXG4gICAgc2V0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19zZXRDYWNoZUhhcycpO1xuXG4vKipcbiAqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG5cbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG5TZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0Q2FjaGU7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5U29tZTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSGFzO1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheVNvbWUgPSByZXF1aXJlKCcuL19hcnJheVNvbWUnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBhcnJheWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQXJyYXlzKGFycmF5LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuXG4gIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChhcnJTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICB9XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgIHNlZW4gPSAoYml0bWFzayAmIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpID8gbmV3IFNldENhY2hlIDogdW5kZWZpbmVkO1xuXG4gIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAvLyBJZ25vcmUgbm9uLWluZGV4IHByb3BlcnRpZXMuXG4gIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2luZGV4XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBhcnJWYWx1ZSwgaW5kZXgsIG90aGVyLCBhcnJheSwgc3RhY2spXG4gICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKHNlZW4pIHtcbiAgICAgIGlmICghYXJyYXlTb21lKG90aGVyLCBmdW5jdGlvbihvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZWVuLnB1c2gob3RoSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKSB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCEoXG4gICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEFycmF5cztcbiIsIi8qKlxuICogQ29udmVydHMgYG1hcGAgdG8gaXRzIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAqL1xuZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwVG9BcnJheTtcbiIsIi8qKlxuICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9BcnJheTtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSxcbiAgICBtYXBUb0FycmF5ID0gcmVxdWlyZSgnLi9fbWFwVG9BcnJheScpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGNvbXBhcmluZyBvYmplY3RzIG9mXG4gKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY29tcGFyaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3RzIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgIChvYmplY3QuYnl0ZU9mZnNldCAhPSBvdGhlci5ieXRlT2Zmc2V0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBvYmplY3QuYnVmZmVyO1xuICAgICAgb3RoZXIgPSBvdGhlci5idWZmZXI7XG5cbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgLy8gSW52YWxpZCBkYXRlcyBhcmUgY29lcmNlZCB0byBgTmFOYC5cbiAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuXG4gICAgY2FzZSBlcnJvclRhZzpcbiAgICAgIHJldHVybiBvYmplY3QubmFtZSA9PSBvdGhlci5uYW1lICYmIG9iamVjdC5tZXNzYWdlID09IG90aGVyLm1lc3NhZ2U7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIC8vIENvZXJjZSByZWdleGVzIHRvIHN0cmluZ3MgYW5kIHRyZWF0IHN0cmluZ3MsIHByaW1pdGl2ZXMgYW5kIG9iamVjdHMsXG4gICAgICAvLyBhcyBlcXVhbC4gU2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdCA9PSAob3RoZXIgKyAnJyk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgaWYgKG9iamVjdC5zaXplICE9IG90aGVyLnNpemUgJiYgIWlzUGFydGlhbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICBpZiAoc3ltYm9sVmFsdWVPZikge1xuICAgICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZi5jYWxsKG9iamVjdCkgPT0gc3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxCeVRhZztcbiIsInZhciBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgb2JqU3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gb2JqU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IG9iamVjdDtcbiAgfVxuICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gIH1cbiAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbE9iamVjdHM7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSxcbiAgICBlcXVhbEJ5VGFnID0gcmVxdWlyZSgnLi9fZXF1YWxCeVRhZycpLFxuICAgIGVxdWFsT2JqZWN0cyA9IHJlcXVpcmUoJy4vX2VxdWFsT2JqZWN0cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgY29tcGFyZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0VxdWFsRGVlcChvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgIG90aElzQXJyID0gaXNBcnJheShvdGhlciksXG4gICAgICBvYmpUYWcgPSBvYmpJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG9iamVjdCksXG4gICAgICBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcblxuICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgb3RoVGFnID0gb3RoVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvdGhUYWc7XG5cbiAgdmFyIG9iaklzT2JqID0gb2JqVGFnID09IG9iamVjdFRhZyxcbiAgICAgIG90aElzT2JqID0gb3RoVGFnID09IG9iamVjdFRhZyxcbiAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG5cbiAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgaWYgKCFpc0J1ZmZlcihvdGhlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgIG9iaklzT2JqID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzU2FtZVRhZyAmJiAhb2JqSXNPYmopIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIHJldHVybiAob2JqSXNBcnIgfHwgaXNUeXBlZEFycmF5KG9iamVjdCkpXG4gICAgICA/IGVxdWFsQXJyYXlzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spXG4gICAgICA6IGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgb2JqVGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgfVxuICBpZiAoIShiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcpKSB7XG4gICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSxcbiAgICAgICAgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG5cbiAgICBpZiAob2JqSXNXcmFwcGVkIHx8IG90aElzV3JhcHBlZCkge1xuICAgICAgdmFyIG9ialVud3JhcHBlZCA9IG9iaklzV3JhcHBlZCA/IG9iamVjdC52YWx1ZSgpIDogb2JqZWN0LFxuICAgICAgICAgIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcblxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHJldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLCBvdGhVbndyYXBwZWQsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgcmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbERlZXA7XG4iLCJ2YXIgYmFzZUlzRXF1YWxEZWVwID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWxEZWVwJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0VxdWFsYCB3aGljaCBzdXBwb3J0cyBwYXJ0aWFsIGNvbXBhcmlzb25zXG4gKiBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gVW5vcmRlcmVkIGNvbXBhcmlzb25cbiAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYHZhbHVlYCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXI7XG4gIH1cbiAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWw7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gIWxlbmd0aDtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWF0Y2g7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgJiYgIWlzT2JqZWN0KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIEdldHMgdGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG1hdGNoIGRhdGEgb2YgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGdldE1hdGNoRGF0YShvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLFxuICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgcmVzdWx0W2xlbmd0aF0gPSBba2V5LCB2YWx1ZSwgaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKV07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXRjaERhdGE7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hlc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL19iYXNlSXNNYXRjaCcpLFxuICAgIGdldE1hdGNoRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hdGNoRGF0YScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hdGNoZXM7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTeW1ib2w7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVJc0RlZXBQcm9wID0gL1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxcbiAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXkodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIHJlSXNQbGFpblByb3AudGVzdCh2YWx1ZSkgfHwgIXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKSB8fFxuICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXk7XG4iLCJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAqXG4gKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogdmFsdWVzKG90aGVyKTtcbiAqIC8vID0+IFszLCA0XVxuICpcbiAqIG9iamVjdC5hID0gMjtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG5tZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiIsInZhciBtZW1vaXplID0gcmVxdWlyZSgnLi9tZW1vaXplJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBtYXhpbXVtIG1lbW9pemUgY2FjaGUgc2l6ZS4gKi9cbnZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tZW1vaXplYCB3aGljaCBjbGVhcnMgdGhlIG1lbW9pemVkIGZ1bmN0aW9uJ3NcbiAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtZW1vaXplQ2FwcGVkKGZ1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IG1lbW9pemUoZnVuYywgZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKGNhY2hlLnNpemUgPT09IE1BWF9NRU1PSVpFX1NJWkUpIHtcbiAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH0pO1xuXG4gIHZhciBjYWNoZSA9IHJlc3VsdC5jYWNoZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplQ2FwcGVkO1xuIiwidmFyIG1lbW9pemVDYXBwZWQgPSByZXF1aXJlKCcuL19tZW1vaXplQ2FwcGVkJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZVByb3BOYW1lID0gL1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nO1xuXG4vKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICovXG52YXIgc3RyaW5nVG9QYXRoID0gbWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICByZXN1bHQucHVzaCgnJyk7XG4gIH1cbiAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdUb1BhdGg7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TWFwO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xUb1N0cmluZyA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gKiB2YWx1ZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRvU3RyaW5nO1xuIiwidmFyIGJhc2VUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VUb1N0cmluZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9TdHJpbmc7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICBzdHJpbmdUb1BhdGggPSByZXF1aXJlKCcuL19zdHJpbmdUb1BhdGgnKSxcbiAgICB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGEgcGF0aCBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLCBvYmplY3QpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBpc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0UGF0aDtcbiIsInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICovXG5mdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9LZXk7XG4iLCJ2YXIgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IDAsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICB9XG4gIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0O1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy43LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICogLy8gPT4gJ2RlZmF1bHQnXG4gKi9cbmZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXQ7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzSW47XG4iLCJ2YXIgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGV4aXN0cyBvbiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYXNGdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjayBwcm9wZXJ0aWVzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzUGF0aChvYmplY3QsIHBhdGgsIGhhc0Z1bmMpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHRvS2V5KHBhdGhbaW5kZXhdKTtcbiAgICBpZiAoIShyZXN1bHQgPSBvYmplY3QgIT0gbnVsbCAmJiBoYXNGdW5jKG9iamVjdCwga2V5KSkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBvYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgfVxuICBpZiAocmVzdWx0IHx8ICsraW5kZXggIT0gbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBsZW5ndGggPSBvYmplY3QgPT0gbnVsbCA/IDAgOiBvYmplY3QubGVuZ3RoO1xuICByZXR1cm4gISFsZW5ndGggJiYgaXNMZW5ndGgobGVuZ3RoKSAmJiBpc0luZGV4KGtleSwgbGVuZ3RoKSAmJlxuICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNBcmd1bWVudHMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzUGF0aDtcbiIsInZhciBiYXNlSGFzSW4gPSByZXF1aXJlKCcuL19iYXNlSGFzSW4nKSxcbiAgICBoYXNQYXRoID0gcmVxdWlyZSgnLi9faGFzUGF0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzSW47XG4iLCJ2YXIgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpLFxuICAgIGdldCA9IHJlcXVpcmUoJy4vZ2V0JyksXG4gICAgaGFzSW4gPSByZXF1aXJlKCcuL2hhc0luJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX2lzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICByZXR1cm4gKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgb2JqVmFsdWUgPT09IHNyY1ZhbHVlKVxuICAgICAgPyBoYXNJbihvYmplY3QsIHBhdGgpXG4gICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlc1Byb3BlcnR5O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHk7XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VQcm9wZXJ0eWAgd2hpY2ggc3VwcG9ydHMgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVByb3BlcnR5RGVlcDtcbiIsInZhciBiYXNlUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHknKSxcbiAgICBiYXNlUHJvcGVydHlEZWVwID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5RGVlcCcpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW1xuICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gKiBdO1xuICpcbiAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAqIC8vID0+IFsyLCAxXVxuICpcbiAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqL1xuZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICByZXR1cm4gaXNLZXkocGF0aCkgPyBiYXNlUHJvcGVydHkodG9LZXkocGF0aCkpIDogYmFzZVByb3BlcnR5RGVlcChwYXRoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwcm9wZXJ0eTtcbiIsInZhciBiYXNlTWF0Y2hlcyA9IHJlcXVpcmUoJy4vX2Jhc2VNYXRjaGVzJyksXG4gICAgYmFzZU1hdGNoZXNQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VNYXRjaGVzUHJvcGVydHknKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgcHJvcGVydHkgPSByZXF1aXJlKCcuL3Byb3BlcnR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXRlcmF0ZWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IFt2YWx1ZT1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgaXRlcmF0ZWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJdGVyYXRlZSh2YWx1ZSkge1xuICAvLyBEb24ndCBzdG9yZSB0aGUgYHR5cGVvZmAgcmVzdWx0IGluIGEgdmFyaWFibGUgdG8gYXZvaWQgYSBKSVQgYnVnIGluIFNhZmFyaSA5LlxuICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAzNCBmb3IgbW9yZSBkZXRhaWxzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gaWRlbnRpdHk7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBpc0FycmF5KHZhbHVlKVxuICAgICAgPyBiYXNlTWF0Y2hlc1Byb3BlcnR5KHZhbHVlWzBdLCB2YWx1ZVsxXSlcbiAgICAgIDogYmFzZU1hdGNoZXModmFsdWUpO1xuICB9XG4gIHJldHVybiBwcm9wZXJ0eSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUl0ZXJhdGVlO1xuIiwidmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSxcbiAgICBiYXNlRmlsdGVyID0gcmVxdWlyZSgnLi9fYmFzZUZpbHRlcicpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIGFuIGFycmF5IG9mIGFsbCBlbGVtZW50c1xuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqIEBzZWUgXy5yZWplY3RcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gKiBdO1xuICpcbiAqIF8uZmlsdGVyKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmlsdGVyKHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gKlxuICogLy8gQ29tYmluaW5nIHNldmVyYWwgcHJlZGljYXRlcyB1c2luZyBgXy5vdmVyRXZlcnlgIG9yIGBfLm92ZXJTb21lYC5cbiAqIF8uZmlsdGVyKHVzZXJzLCBfLm92ZXJTb21lKFt7ICdhZ2UnOiAzNiB9LCBbJ2FnZScsIDQwXV0pKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICovXG5mdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbHRlcjtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzO1xuIiwidmFyIGJhc2VIYXMgPSByZXF1aXJlKCcuL19iYXNlSGFzJyksXG4gICAgaGFzUGF0aCA9IHJlcXVpcmUoJy4vX2hhc1BhdGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiB7ICdiJzogMiB9IH07XG4gKiB2YXIgb3RoZXIgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gKlxuICogXy5oYXMob2JqZWN0LCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXMob3RoZXIsICdhJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBoYXMob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhcyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzO1xuIiwidmFyIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBlbXB0eSBvYmplY3QsIGNvbGxlY3Rpb24sIG1hcCwgb3Igc2V0LlxuICpcbiAqIE9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIG5vIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZFxuICogcHJvcGVydGllcy5cbiAqXG4gKiBBcnJheS1saWtlIHZhbHVlcyBzdWNoIGFzIGBhcmd1bWVudHNgIG9iamVjdHMsIGFycmF5cywgYnVmZmVycywgc3RyaW5ncywgb3JcbiAqIGpRdWVyeS1saWtlIGNvbGxlY3Rpb25zIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBsZW5ndGhgIG9mIGAwYC5cbiAqIFNpbWlsYXJseSwgbWFwcyBhbmQgc2V0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgc2l6ZWAgb2YgYDBgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGVtcHR5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNFbXB0eShudWxsKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkodHJ1ZSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KDEpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eShbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzRW1wdHkoeyAnYSc6IDEgfSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJlxuICAgICAgKGlzQXJyYXkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUuc3BsaWNlID09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgaXNCdWZmZXIodmFsdWUpIHx8IGlzVHlwZWRBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpKSkge1xuICAgIHJldHVybiAhdmFsdWUubGVuZ3RoO1xuICB9XG4gIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpO1xuICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgcmV0dXJuICF2YWx1ZS5zaXplO1xuICB9XG4gIGlmIChpc1Byb3RvdHlwZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gIWJhc2VLZXlzKHZhbHVlKS5sZW5ndGg7XG4gIH1cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFbXB0eTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1VuZGVmaW5lZCh2b2lkIDApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNVbmRlZmluZWQobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1VuZGVmaW5lZDtcbiIsInZhciBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWFwYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBpdGVyYXRlZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hcDtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZU1hcCA9IHJlcXVpcmUoJy4vX2Jhc2VNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnVcbiAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICpcbiAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICogYF8uZXZlcnlgLCBgXy5maWx0ZXJgLCBgXy5tYXBgLCBgXy5tYXBWYWx1ZXNgLCBgXy5yZWplY3RgLCBhbmQgYF8uc29tZWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXJ5YCwgYGNodW5rYCwgYGN1cnJ5YCwgYGN1cnJ5UmlnaHRgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZXZlcnlgLFxuICogYGZpbGxgLCBgaW52ZXJ0YCwgYHBhcnNlSW50YCwgYHJhbmRvbWAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlcGVhdGAsXG4gKiBgc2FtcGxlU2l6ZWAsIGBzbGljZWAsIGBzb21lYCwgYHNvcnRCeWAsIGBzcGxpdGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gKiBgdGVtcGxhdGVgLCBgdHJpbWAsIGB0cmltRW5kYCwgYHRyaW1TdGFydGAsIGFuZCBgd29yZHNgXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICogICByZXR1cm4gbiAqIG47XG4gKiB9XG4gKlxuICogXy5tYXAoWzQsIDhdLCBzcXVhcmUpO1xuICogLy8gPT4gWzE2LCA2NF1cbiAqXG4gKiBfLm1hcCh7ICdhJzogNCwgJ2InOiA4IH0sIHNxdWFyZSk7XG4gKiAvLyA9PiBbMTYsIDY0XSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknIH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcgfVxuICogXTtcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8ubWFwKHVzZXJzLCAndXNlcicpO1xuICogLy8gPT4gWydiYXJuZXknLCAnZnJlZCddXG4gKi9cbmZ1bmN0aW9uIG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheU1hcCA6IGJhc2VNYXA7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcDtcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnJlZHVjZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICBhY2N1bXVsYXRvciA9IGFycmF5WysraW5kZXhdO1xuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYWNjdW11bGF0b3IgPSBpdGVyYXRlZShhY2N1bXVsYXRvciwgYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVJlZHVjZTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVkdWNlYCBhbmQgYF8ucmVkdWNlUmlnaHRgLCB3aXRob3V0IHN1cHBvcnRcbiAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYCB1c2luZyBgZWFjaEZ1bmNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5pdEFjY3VtIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IG9yIGxhc3QgZWxlbWVudCBvZlxuICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlUmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBlYWNoRnVuYykge1xuICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgPyAoaW5pdEFjY3VtID0gZmFsc2UsIHZhbHVlKVxuICAgICAgOiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmVkdWNlO1xuIiwidmFyIGFycmF5UmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXlSZWR1Y2UnKSxcbiAgICBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZVJlZHVjZSA9IHJlcXVpcmUoJy4vX2Jhc2VSZWR1Y2UnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAqIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAqIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOlxuICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAqIGFuZCBgc29ydEJ5YFxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBzZWUgXy5yZWR1Y2VSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnJlZHVjZShbMSwgMl0sIGZ1bmN0aW9uKHN1bSwgbikge1xuICogICByZXR1cm4gc3VtICsgbjtcbiAqIH0sIDApO1xuICogLy8gPT4gM1xuICpcbiAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAqICAgcmV0dXJuIHJlc3VsdDtcbiAqIH0sIHt9KTtcbiAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZSA6IGJhc2VSZWR1Y2UsXG4gICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVkdWNlO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuIiwidmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eScpO1xuXG4vKipcbiAqIEdldHMgdGhlIHNpemUgb2YgYW4gQVNDSUkgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gKi9cbnZhciBhc2NpaVNpemUgPSBiYXNlUHJvcGVydHkoJ2xlbmd0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFzY2lpU2l6ZTtcbiIsIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbnZhciByZUhhc1VuaWNvZGUgPSBSZWdFeHAoJ1snICsgcnNaV0ogKyByc0FzdHJhbFJhbmdlICArIHJzQ29tYm9SYW5nZSArIHJzVmFyUmFuZ2UgKyAnXScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBVbmljb2RlIHN5bWJvbHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1VuaWNvZGUoc3RyaW5nKSB7XG4gIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1VuaWNvZGU7XG4iLCIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgcnNNb2RpZmllciA9ICcoPzonICsgcnNDb21ibyArICd8JyArIHJzRml0eiArICcpJyxcbiAgICByc05vbkFzdHJhbCA9ICdbXicgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgcnNTdXJyUGFpciA9ICdbXFxcXHVkODAwLVxcXFx1ZGJmZl1bXFxcXHVkYzAwLVxcXFx1ZGZmZl0nLFxuICAgIHJzWldKID0gJ1xcXFx1MjAwZCc7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSByZWdleGVzLiAqL1xudmFyIHJlT3B0TW9kID0gcnNNb2RpZmllciArICc/JyxcbiAgICByc09wdFZhciA9ICdbJyArIHJzVmFyUmFuZ2UgKyAnXT8nLFxuICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgcnNTZXEgPSByc09wdFZhciArIHJlT3B0TW9kICsgcnNPcHRKb2luLFxuICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4vKiogVXNlZCB0byBtYXRjaCBbc3RyaW5nIHN5bWJvbHNdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LXVuaWNvZGUpLiAqL1xudmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4vKipcbiAqIEdldHMgdGhlIHNpemUgb2YgYSBVbmljb2RlIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICovXG5mdW5jdGlvbiB1bmljb2RlU2l6ZShzdHJpbmcpIHtcbiAgdmFyIHJlc3VsdCA9IHJlVW5pY29kZS5sYXN0SW5kZXggPSAwO1xuICB3aGlsZSAocmVVbmljb2RlLnRlc3Qoc3RyaW5nKSkge1xuICAgICsrcmVzdWx0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pY29kZVNpemU7XG4iLCJ2YXIgYXNjaWlTaXplID0gcmVxdWlyZSgnLi9fYXNjaWlTaXplJyksXG4gICAgaGFzVW5pY29kZSA9IHJlcXVpcmUoJy4vX2hhc1VuaWNvZGUnKSxcbiAgICB1bmljb2RlU2l6ZSA9IHJlcXVpcmUoJy4vX3VuaWNvZGVTaXplJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgaW4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ1NpemUoc3RyaW5nKSB7XG4gIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICA/IHVuaWNvZGVTaXplKHN0cmluZylcbiAgICA6IGFzY2lpU2l6ZShzdHJpbmcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ1NpemU7XG4iLCJ2YXIgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzU3RyaW5nID0gcmVxdWlyZSgnLi9pc1N0cmluZycpLFxuICAgIHN0cmluZ1NpemUgPSByZXF1aXJlKCcuL19zdHJpbmdTaXplJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqXG4gKiBHZXRzIHRoZSBzaXplIG9mIGBjb2xsZWN0aW9uYCBieSByZXR1cm5pbmcgaXRzIGxlbmd0aCBmb3IgYXJyYXktbGlrZVxuICogdmFsdWVzIG9yIHRoZSBudW1iZXIgb2Ygb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgZm9yIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fHN0cmluZ30gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29sbGVjdGlvbiBzaXplLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnNpemUoWzEsIDIsIDNdKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnNpemUoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAqIC8vID0+IDJcbiAqXG4gKiBfLnNpemUoJ3BlYmJsZXMnKTtcbiAqIC8vID0+IDdcbiAqL1xuZnVuY3Rpb24gc2l6ZShjb2xsZWN0aW9uKSB7XG4gIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBpZiAoaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICByZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbikgPyBzdHJpbmdTaXplKGNvbGxlY3Rpb24pIDogY29sbGVjdGlvbi5sZW5ndGg7XG4gIH1cbiAgdmFyIHRhZyA9IGdldFRhZyhjb2xsZWN0aW9uKTtcbiAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgIHJldHVybiBjb2xsZWN0aW9uLnNpemU7XG4gIH1cbiAgcmV0dXJuIGJhc2VLZXlzKGNvbGxlY3Rpb24pLmxlbmd0aDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaXplO1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKlxuICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICogZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyB0aHJ1IGBpdGVyYXRlZWAsIHdpdGggZWFjaCBpbnZvY2F0aW9uXG4gKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6IChhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgb2JqZWN0KS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGN1c3RvbSBhY2N1bXVsYXRvciB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gKiB9LCBbXSk7XG4gKiAvLyA9PiBbNCwgOV1cbiAqXG4gKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gKiB9LCB7fSk7XG4gKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybShvYmplY3QsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gIGl0ZXJhdGVlID0gYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgaWYgKGFjY3VtdWxhdG9yID09IG51bGwpIHtcbiAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgYWNjdW11bGF0b3IgPSBpc0FyciA/IG5ldyBDdG9yIDogW107XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXNGdW5jdGlvbihDdG9yKSA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpIDoge307XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYWNjdW11bGF0b3IgPSB7fTtcbiAgICB9XG4gIH1cbiAgKGlzQXJyTGlrZSA/IGFycmF5RWFjaCA6IGJhc2VGb3JPd24pKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmFuc2Zvcm07XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZsYXR0ZW5hYmxlIGBhcmd1bWVudHNgIG9iamVjdCBvciBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0ZsYXR0ZW5hYmxlKHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAhIShzcHJlYWRhYmxlU3ltYm9sICYmIHZhbHVlICYmIHZhbHVlW3NwcmVhZGFibGVTeW1ib2xdKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZsYXR0ZW5hYmxlO1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzRmxhdHRlbmFibGUgPSByZXF1aXJlKCcuL19pc0ZsYXR0ZW5hYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuIiwiLyoqXG4gKiBBIGZhc3RlciBhbHRlcm5hdGl2ZSB0byBgRnVuY3Rpb24jYXBwbHlgLCB0aGlzIGZ1bmN0aW9uIGludm9rZXMgYGZ1bmNgXG4gKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAqL1xuZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICB9XG4gIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5O1xuIiwidmFyIGFwcGx5ID0gcmVxdWlyZSgnLi9fYXBwbHknKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIGluZGV4ID0gLTE7XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyUmVzdDtcbiIsInZhciBjb25zdGFudCA9IHJlcXVpcmUoJy4vY29uc3RhbnQnKSxcbiAgICBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5JyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jLCAndG9TdHJpbmcnLCB7XG4gICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAndmFsdWUnOiBjb25zdGFudChzdHJpbmcpLFxuICAgICd3cml0YWJsZSc6IHRydWVcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXRUb1N0cmluZztcbiIsIi8qKiBVc2VkIHRvIGRldGVjdCBob3QgZnVuY3Rpb25zIGJ5IG51bWJlciBvZiBjYWxscyB3aXRoaW4gYSBzcGFuIG9mIG1pbGxpc2Vjb25kcy4gKi9cbnZhciBIT1RfQ09VTlQgPSA4MDAsXG4gICAgSE9UX1NQQU4gPSAxNjtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU5vdyA9IERhdGUubm93O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0J2xsIHNob3J0IG91dCBhbmQgaW52b2tlIGBpZGVudGl0eWAgaW5zdGVhZFxuICogb2YgYGZ1bmNgIHdoZW4gaXQncyBjYWxsZWQgYEhPVF9DT1VOVGAgb3IgbW9yZSB0aW1lcyBpbiBgSE9UX1NQQU5gXG4gKiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc2hvcnRhYmxlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBzaG9ydE91dChmdW5jKSB7XG4gIHZhciBjb3VudCA9IDAsXG4gICAgICBsYXN0Q2FsbGVkID0gMDtcblxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0YW1wID0gbmF0aXZlTm93KCksXG4gICAgICAgIHJlbWFpbmluZyA9IEhPVF9TUEFOIC0gKHN0YW1wIC0gbGFzdENhbGxlZCk7XG5cbiAgICBsYXN0Q2FsbGVkID0gc3RhbXA7XG4gICAgaWYgKHJlbWFpbmluZyA+IDApIHtcbiAgICAgIGlmICgrK2NvdW50ID49IEhPVF9DT1VOVCkge1xuICAgICAgICByZXR1cm4gYXJndW1lbnRzWzBdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb3VudCA9IDA7XG4gICAgfVxuICAgIHJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaG9ydE91dDtcbiIsInZhciBiYXNlU2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19iYXNlU2V0VG9TdHJpbmcnKSxcbiAgICBzaG9ydE91dCA9IHJlcXVpcmUoJy4vX3Nob3J0T3V0Jyk7XG5cbi8qKlxuICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9TdHJpbmc7XG4iLCJ2YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgb3ZlclJlc3QgPSByZXF1aXJlKCcuL19vdmVyUmVzdCcpLFxuICAgIHNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fc2V0VG9TdHJpbmcnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlc3Q7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmluZEluZGV4O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYU47XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaWN0SW5kZXhPZjtcbiIsInZhciBiYXNlRmluZEluZGV4ID0gcmVxdWlyZSgnLi9fYmFzZUZpbmRJbmRleCcpLFxuICAgIGJhc2VJc05hTiA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hTicpLFxuICAgIHN0cmljdEluZGV4T2YgPSByZXF1aXJlKCcuL19zdHJpY3RJbmRleE9mJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICA/IHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpXG4gICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUluZGV4T2Y7XG4iLCJ2YXIgYmFzZUluZGV4T2YgPSByZXF1aXJlKCcuL19iYXNlSW5kZXhPZicpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmNsdWRlc2AgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBzcGVjaWZ5aW5nIGFuIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlJbmNsdWRlcyhhcnJheSwgdmFsdWUpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gISFsZW5ndGggJiYgYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCAwKSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5SW5jbHVkZXM7XG4iLCIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXJyYXlJbmNsdWRlc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChjb21wYXJhdG9yKHZhbHVlLCBhcnJheVtpbmRleF0pKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi4zLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5ub29wKTtcbiAqIC8vID0+IFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAqL1xuZnVuY3Rpb24gbm9vcCgpIHtcbiAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBub29wO1xuIiwidmFyIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIG5vb3AgPSByZXF1aXJlKCcuL25vb3AnKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzZXQgb2JqZWN0IG9mIGB2YWx1ZXNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhZGQgdG8gdGhlIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBzZXQuXG4gKi9cbnZhciBjcmVhdGVTZXQgPSAhKFNldCAmJiAoMSAvIHNldFRvQXJyYXkobmV3IFNldChbLC0wXSkpWzFdKSA9PSBJTkZJTklUWSkgPyBub29wIDogZnVuY3Rpb24odmFsdWVzKSB7XG4gIHJldHVybiBuZXcgU2V0KHZhbHVlcyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVNldDtcbiIsInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlJbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXMnKSxcbiAgICBhcnJheUluY2x1ZGVzV2l0aCA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXNXaXRoJyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpLFxuICAgIGNyZWF0ZVNldCA9IHJlcXVpcmUoJy4vX2NyZWF0ZVNldCcpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5pcUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmlxKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgc2VlbiA9IHJlc3VsdDtcblxuICBpZiAoY29tcGFyYXRvcikge1xuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgfVxuICBlbHNlIGlmIChsZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgIHZhciBzZXQgPSBpdGVyYXRlZSA/IG51bGwgOiBjcmVhdGVTZXQoYXJyYXkpO1xuICAgIGlmIChzZXQpIHtcbiAgICAgIHJldHVybiBzZXRUb0FycmF5KHNldCk7XG4gICAgfVxuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICBzZWVuID0gbmV3IFNldENhY2hlO1xuICB9XG4gIGVsc2Uge1xuICAgIHNlZW4gPSBpdGVyYXRlZSA/IFtdIDogcmVzdWx0O1xuICB9XG4gIG91dGVyOlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgd2hpbGUgKHNlZW5JbmRleC0tKSB7XG4gICAgICAgIGlmIChzZWVuW3NlZW5JbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuaXE7XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKSxcbiAgICBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgYmFzZVVuaXEgPSByZXF1aXJlKCcuL19iYXNlVW5pcScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcywgaW4gb3JkZXIsIGZyb20gYWxsIGdpdmVuIGFycmF5cyB1c2luZ1xuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlvbihbMl0sIFsxLCAyXSk7XG4gKiAvLyA9PiBbMiwgMV1cbiAqL1xudmFyIHVuaW9uID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmlvbjtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VWYWx1ZXM7XG4iLCJ2YXIgYmFzZVZhbHVlcyA9IHJlcXVpcmUoJy4vX2Jhc2VWYWx1ZXMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy52YWx1ZXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLnZhbHVlcygnaGknKTtcbiAqIC8vID0+IFsnaCcsICdpJ11cbiAqL1xuZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbHVlcztcbiIsIi8qIGdsb2JhbCB3aW5kb3cgKi9cblxudmFyIGxvZGFzaDtcblxuaWYgKHR5cGVvZiByZXF1aXJlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgdHJ5IHtcbiAgICBsb2Rhc2ggPSB7XG4gICAgICBjbG9uZTogcmVxdWlyZShcImxvZGFzaC9jbG9uZVwiKSxcbiAgICAgIGNvbnN0YW50OiByZXF1aXJlKFwibG9kYXNoL2NvbnN0YW50XCIpLFxuICAgICAgZWFjaDogcmVxdWlyZShcImxvZGFzaC9lYWNoXCIpLFxuICAgICAgZmlsdGVyOiByZXF1aXJlKFwibG9kYXNoL2ZpbHRlclwiKSxcbiAgICAgIGhhczogIHJlcXVpcmUoXCJsb2Rhc2gvaGFzXCIpLFxuICAgICAgaXNBcnJheTogcmVxdWlyZShcImxvZGFzaC9pc0FycmF5XCIpLFxuICAgICAgaXNFbXB0eTogcmVxdWlyZShcImxvZGFzaC9pc0VtcHR5XCIpLFxuICAgICAgaXNGdW5jdGlvbjogcmVxdWlyZShcImxvZGFzaC9pc0Z1bmN0aW9uXCIpLFxuICAgICAgaXNVbmRlZmluZWQ6IHJlcXVpcmUoXCJsb2Rhc2gvaXNVbmRlZmluZWRcIiksXG4gICAgICBrZXlzOiByZXF1aXJlKFwibG9kYXNoL2tleXNcIiksXG4gICAgICBtYXA6IHJlcXVpcmUoXCJsb2Rhc2gvbWFwXCIpLFxuICAgICAgcmVkdWNlOiByZXF1aXJlKFwibG9kYXNoL3JlZHVjZVwiKSxcbiAgICAgIHNpemU6IHJlcXVpcmUoXCJsb2Rhc2gvc2l6ZVwiKSxcbiAgICAgIHRyYW5zZm9ybTogcmVxdWlyZShcImxvZGFzaC90cmFuc2Zvcm1cIiksXG4gICAgICB1bmlvbjogcmVxdWlyZShcImxvZGFzaC91bmlvblwiKSxcbiAgICAgIHZhbHVlczogcmVxdWlyZShcImxvZGFzaC92YWx1ZXNcIilcbiAgICB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gY29udGludWUgcmVnYXJkbGVzcyBvZiBlcnJvclxuICB9XG59XG5cbmlmICghbG9kYXNoKSB7XG4gIGxvZGFzaCA9IHdpbmRvdy5fO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxvZGFzaDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBHcmFwaDtcblxudmFyIERFRkFVTFRfRURHRV9OQU1FID0gXCJcXHgwMFwiO1xudmFyIEdSQVBIX05PREUgPSBcIlxceDAwXCI7XG52YXIgRURHRV9LRVlfREVMSU0gPSBcIlxceDAxXCI7XG5cbi8vIEltcGxlbWVudGF0aW9uIG5vdGVzOlxuLy9cbi8vICAqIE5vZGUgaWQgcXVlcnkgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gc3RyaW5nIGlkcyBmb3IgdGhlIG5vZGVzXG4vLyAgKiBFZGdlIGlkIHF1ZXJ5IGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIGFuIFwiZWRnZU9ialwiLCBlZGdlIG9iamVjdCwgdGhhdCBpc1xuLy8gICAgY29tcG9zZWQgb2YgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGFuIGVkZ2U6IHt2LCB3LCBuYW1lfS5cbi8vICAqIEludGVybmFsbHkgd2UgdXNlIGFuIFwiZWRnZUlkXCIsIGEgc3RyaW5naWZpZWQgZm9ybSBvZiB0aGUgZWRnZU9iaiwgdG9cbi8vICAgIHJlZmVyZW5jZSBlZGdlcy4gVGhpcyBpcyBiZWNhdXNlIHdlIG5lZWQgYSBwZXJmb3JtYW50IHdheSB0byBsb29rIHRoZXNlXG4vLyAgICBlZGdlcyB1cCBhbmQsIG9iamVjdCBwcm9wZXJ0aWVzLCB3aGljaCBoYXZlIHN0cmluZyBrZXlzLCBhcmUgdGhlIGNsb3Nlc3Rcbi8vICAgIHdlJ3JlIGdvaW5nIHRvIGdldCB0byBhIHBlcmZvcm1hbnQgaGFzaHRhYmxlIGluIEphdmFTY3JpcHQuXG5cbmZ1bmN0aW9uIEdyYXBoKG9wdHMpIHtcbiAgdGhpcy5faXNEaXJlY3RlZCA9IF8uaGFzKG9wdHMsIFwiZGlyZWN0ZWRcIikgPyBvcHRzLmRpcmVjdGVkIDogdHJ1ZTtcbiAgdGhpcy5faXNNdWx0aWdyYXBoID0gXy5oYXMob3B0cywgXCJtdWx0aWdyYXBoXCIpID8gb3B0cy5tdWx0aWdyYXBoIDogZmFsc2U7XG4gIHRoaXMuX2lzQ29tcG91bmQgPSBfLmhhcyhvcHRzLCBcImNvbXBvdW5kXCIpID8gb3B0cy5jb21wb3VuZCA6IGZhbHNlO1xuXG4gIC8vIExhYmVsIGZvciB0aGUgZ3JhcGggaXRzZWxmXG4gIHRoaXMuX2xhYmVsID0gdW5kZWZpbmVkO1xuXG4gIC8vIERlZmF1bHRzIHRvIGJlIHNldCB3aGVuIGNyZWF0aW5nIGEgbmV3IG5vZGVcbiAgdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuID0gXy5jb25zdGFudCh1bmRlZmluZWQpO1xuXG4gIC8vIERlZmF1bHRzIHRvIGJlIHNldCB3aGVuIGNyZWF0aW5nIGEgbmV3IGVkZ2VcbiAgdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuID0gXy5jb25zdGFudCh1bmRlZmluZWQpO1xuXG4gIC8vIHYgLT4gbGFiZWxcbiAgdGhpcy5fbm9kZXMgPSB7fTtcblxuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIC8vIHYgLT4gcGFyZW50XG4gICAgdGhpcy5fcGFyZW50ID0ge307XG5cbiAgICAvLyB2IC0+IGNoaWxkcmVuXG4gICAgdGhpcy5fY2hpbGRyZW4gPSB7fTtcbiAgICB0aGlzLl9jaGlsZHJlbltHUkFQSF9OT0RFXSA9IHt9O1xuICB9XG5cbiAgLy8gdiAtPiBlZGdlT2JqXG4gIHRoaXMuX2luID0ge307XG5cbiAgLy8gdSAtPiB2IC0+IE51bWJlclxuICB0aGlzLl9wcmVkcyA9IHt9O1xuXG4gIC8vIHYgLT4gZWRnZU9ialxuICB0aGlzLl9vdXQgPSB7fTtcblxuICAvLyB2IC0+IHcgLT4gTnVtYmVyXG4gIHRoaXMuX3N1Y3MgPSB7fTtcblxuICAvLyBlIC0+IGVkZ2VPYmpcbiAgdGhpcy5fZWRnZU9ianMgPSB7fTtcblxuICAvLyBlIC0+IGxhYmVsXG4gIHRoaXMuX2VkZ2VMYWJlbHMgPSB7fTtcbn1cblxuLyogTnVtYmVyIG9mIG5vZGVzIGluIHRoZSBncmFwaC4gU2hvdWxkIG9ubHkgYmUgY2hhbmdlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uICovXG5HcmFwaC5wcm90b3R5cGUuX25vZGVDb3VudCA9IDA7XG5cbi8qIE51bWJlciBvZiBlZGdlcyBpbiB0aGUgZ3JhcGguIFNob3VsZCBvbmx5IGJlIGNoYW5nZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uLiAqL1xuR3JhcGgucHJvdG90eXBlLl9lZGdlQ291bnQgPSAwO1xuXG5cbi8qID09PSBHcmFwaCBmdW5jdGlvbnMgPT09PT09PT09ICovXG5cbkdyYXBoLnByb3RvdHlwZS5pc0RpcmVjdGVkID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9pc0RpcmVjdGVkO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmlzTXVsdGlncmFwaCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5faXNNdWx0aWdyYXBoO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmlzQ29tcG91bmQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2lzQ29tcG91bmQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0R3JhcGggPSBmdW5jdGlvbihsYWJlbCkge1xuICB0aGlzLl9sYWJlbCA9IGxhYmVsO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ncmFwaCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fbGFiZWw7XG59O1xuXG5cbi8qID09PSBOb2RlIGZ1bmN0aW9ucyA9PT09PT09PT09ICovXG5cbkdyYXBoLnByb3RvdHlwZS5zZXREZWZhdWx0Tm9kZUxhYmVsID0gZnVuY3Rpb24obmV3RGVmYXVsdCkge1xuICBpZiAoIV8uaXNGdW5jdGlvbihuZXdEZWZhdWx0KSkge1xuICAgIG5ld0RlZmF1bHQgPSBfLmNvbnN0YW50KG5ld0RlZmF1bHQpO1xuICB9XG4gIHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbiA9IG5ld0RlZmF1bHQ7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGVDb3VudCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fbm9kZUNvdW50O1xufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGVzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBfLmtleXModGhpcy5fbm9kZXMpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNvdXJjZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICByZXR1cm4gXy5maWx0ZXIodGhpcy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIF8uaXNFbXB0eShzZWxmLl9pblt2XSk7XG4gIH0pO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNpbmtzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgcmV0dXJuIF8uZmlsdGVyKHRoaXMubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHJldHVybiBfLmlzRW1wdHkoc2VsZi5fb3V0W3ZdKTtcbiAgfSk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0Tm9kZXMgPSBmdW5jdGlvbih2cywgdmFsdWUpIHtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgXy5lYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgc2VsZi5zZXROb2RlKHYsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5zZXROb2RlKHYpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldE5vZGUgPSBmdW5jdGlvbih2LCB2YWx1ZSkge1xuICBpZiAoXy5oYXModGhpcy5fbm9kZXMsIHYpKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLl9ub2Rlc1t2XSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRoaXMuX25vZGVzW3ZdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyB2YWx1ZSA6IHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbih2KTtcbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB0aGlzLl9wYXJlbnRbdl0gPSBHUkFQSF9OT0RFO1xuICAgIHRoaXMuX2NoaWxkcmVuW3ZdID0ge307XG4gICAgdGhpcy5fY2hpbGRyZW5bR1JBUEhfTk9ERV1bdl0gPSB0cnVlO1xuICB9XG4gIHRoaXMuX2luW3ZdID0ge307XG4gIHRoaXMuX3ByZWRzW3ZdID0ge307XG4gIHRoaXMuX291dFt2XSA9IHt9O1xuICB0aGlzLl9zdWNzW3ZdID0ge307XG4gICsrdGhpcy5fbm9kZUNvdW50O1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ub2RlID0gZnVuY3Rpb24odikge1xuICByZXR1cm4gdGhpcy5fbm9kZXNbdl07XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaGFzTm9kZSA9IGZ1bmN0aW9uKHYpIHtcbiAgcmV0dXJuIF8uaGFzKHRoaXMuX25vZGVzLCB2KTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5yZW1vdmVOb2RlID0gIGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAoXy5oYXModGhpcy5fbm9kZXMsIHYpKSB7XG4gICAgdmFyIHJlbW92ZUVkZ2UgPSBmdW5jdGlvbihlKSB7IHNlbGYucmVtb3ZlRWRnZShzZWxmLl9lZGdlT2Jqc1tlXSk7IH07XG4gICAgZGVsZXRlIHRoaXMuX25vZGVzW3ZdO1xuICAgIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgICB0aGlzLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdCh2KTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9wYXJlbnRbdl07XG4gICAgICBfLmVhY2godGhpcy5jaGlsZHJlbih2KSwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgICAgc2VsZi5zZXRQYXJlbnQoY2hpbGQpO1xuICAgICAgfSk7XG4gICAgICBkZWxldGUgdGhpcy5fY2hpbGRyZW5bdl07XG4gICAgfVxuICAgIF8uZWFjaChfLmtleXModGhpcy5faW5bdl0pLCByZW1vdmVFZGdlKTtcbiAgICBkZWxldGUgdGhpcy5faW5bdl07XG4gICAgZGVsZXRlIHRoaXMuX3ByZWRzW3ZdO1xuICAgIF8uZWFjaChfLmtleXModGhpcy5fb3V0W3ZdKSwgcmVtb3ZlRWRnZSk7XG4gICAgZGVsZXRlIHRoaXMuX291dFt2XTtcbiAgICBkZWxldGUgdGhpcy5fc3Vjc1t2XTtcbiAgICAtLXRoaXMuX25vZGVDb3VudDtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXRQYXJlbnQgPSBmdW5jdGlvbih2LCBwYXJlbnQpIHtcbiAgaWYgKCF0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHNldCBwYXJlbnQgaW4gYSBub24tY29tcG91bmQgZ3JhcGhcIik7XG4gIH1cblxuICBpZiAoXy5pc1VuZGVmaW5lZChwYXJlbnQpKSB7XG4gICAgcGFyZW50ID0gR1JBUEhfTk9ERTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDb2VyY2UgcGFyZW50IHRvIHN0cmluZ1xuICAgIHBhcmVudCArPSBcIlwiO1xuICAgIGZvciAodmFyIGFuY2VzdG9yID0gcGFyZW50O1xuICAgICAgIV8uaXNVbmRlZmluZWQoYW5jZXN0b3IpO1xuICAgICAgYW5jZXN0b3IgPSB0aGlzLnBhcmVudChhbmNlc3RvcikpIHtcbiAgICAgIGlmIChhbmNlc3RvciA9PT0gdikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZXR0aW5nIFwiICsgcGFyZW50KyBcIiBhcyBwYXJlbnQgb2YgXCIgKyB2ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIHdvdWxkIGNyZWF0ZSBhIGN5Y2xlXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0Tm9kZShwYXJlbnQpO1xuICB9XG5cbiAgdGhpcy5zZXROb2RlKHYpO1xuICB0aGlzLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdCh2KTtcbiAgdGhpcy5fcGFyZW50W3ZdID0gcGFyZW50O1xuICB0aGlzLl9jaGlsZHJlbltwYXJlbnRdW3ZdID0gdHJ1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0ID0gZnVuY3Rpb24odikge1xuICBkZWxldGUgdGhpcy5fY2hpbGRyZW5bdGhpcy5fcGFyZW50W3ZdXVt2XTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5wYXJlbnQgPSBmdW5jdGlvbih2KSB7XG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuX3BhcmVudFt2XTtcbiAgICBpZiAocGFyZW50ICE9PSBHUkFQSF9OT0RFKSB7XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH1cbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLmNoaWxkcmVuID0gZnVuY3Rpb24odikge1xuICBpZiAoXy5pc1VuZGVmaW5lZCh2KSkge1xuICAgIHYgPSBHUkFQSF9OT0RFO1xuICB9XG5cbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLl9jaGlsZHJlblt2XTtcbiAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBfLmtleXMoY2hpbGRyZW4pO1xuICAgIH1cbiAgfSBlbHNlIGlmICh2ID09PSBHUkFQSF9OT0RFKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMoKTtcbiAgfSBlbHNlIGlmICh0aGlzLmhhc05vZGUodikpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5wcmVkZWNlc3NvcnMgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBwcmVkc1YgPSB0aGlzLl9wcmVkc1t2XTtcbiAgaWYgKHByZWRzVikge1xuICAgIHJldHVybiBfLmtleXMocHJlZHNWKTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLnN1Y2Nlc3NvcnMgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBzdWNzViA9IHRoaXMuX3N1Y3Nbdl07XG4gIGlmIChzdWNzVikge1xuICAgIHJldHVybiBfLmtleXMoc3Vjc1YpO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubmVpZ2hib3JzID0gZnVuY3Rpb24odikge1xuICB2YXIgcHJlZHMgPSB0aGlzLnByZWRlY2Vzc29ycyh2KTtcbiAgaWYgKHByZWRzKSB7XG4gICAgcmV0dXJuIF8udW5pb24ocHJlZHMsIHRoaXMuc3VjY2Vzc29ycyh2KSk7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5pc0xlYWYgPSBmdW5jdGlvbiAodikge1xuICB2YXIgbmVpZ2hib3JzO1xuICBpZiAodGhpcy5pc0RpcmVjdGVkKCkpIHtcbiAgICBuZWlnaGJvcnMgPSB0aGlzLnN1Y2Nlc3NvcnModik7XG4gIH0gZWxzZSB7XG4gICAgbmVpZ2hib3JzID0gdGhpcy5uZWlnaGJvcnModik7XG4gIH1cbiAgcmV0dXJuIG5laWdoYm9ycy5sZW5ndGggPT09IDA7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZmlsdGVyTm9kZXMgPSBmdW5jdGlvbihmaWx0ZXIpIHtcbiAgdmFyIGNvcHkgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih7XG4gICAgZGlyZWN0ZWQ6IHRoaXMuX2lzRGlyZWN0ZWQsXG4gICAgbXVsdGlncmFwaDogdGhpcy5faXNNdWx0aWdyYXBoLFxuICAgIGNvbXBvdW5kOiB0aGlzLl9pc0NvbXBvdW5kXG4gIH0pO1xuXG4gIGNvcHkuc2V0R3JhcGgodGhpcy5ncmFwaCgpKTtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIF8uZWFjaCh0aGlzLl9ub2RlcywgZnVuY3Rpb24odmFsdWUsIHYpIHtcbiAgICBpZiAoZmlsdGVyKHYpKSB7XG4gICAgICBjb3B5LnNldE5vZGUodiwgdmFsdWUpO1xuICAgIH1cbiAgfSk7XG5cbiAgXy5lYWNoKHRoaXMuX2VkZ2VPYmpzLCBmdW5jdGlvbihlKSB7XG4gICAgaWYgKGNvcHkuaGFzTm9kZShlLnYpICYmIGNvcHkuaGFzTm9kZShlLncpKSB7XG4gICAgICBjb3B5LnNldEVkZ2UoZSwgc2VsZi5lZGdlKGUpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHZhciBwYXJlbnRzID0ge307XG4gIGZ1bmN0aW9uIGZpbmRQYXJlbnQodikge1xuICAgIHZhciBwYXJlbnQgPSBzZWxmLnBhcmVudCh2KTtcbiAgICBpZiAocGFyZW50ID09PSB1bmRlZmluZWQgfHwgY29weS5oYXNOb2RlKHBhcmVudCkpIHtcbiAgICAgIHBhcmVudHNbdl0gPSBwYXJlbnQ7XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH0gZWxzZSBpZiAocGFyZW50IGluIHBhcmVudHMpIHtcbiAgICAgIHJldHVybiBwYXJlbnRzW3BhcmVudF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmaW5kUGFyZW50KHBhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICBfLmVhY2goY29weS5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgICBjb3B5LnNldFBhcmVudCh2LCBmaW5kUGFyZW50KHYpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBjb3B5O1xufTtcblxuLyogPT09IEVkZ2UgZnVuY3Rpb25zID09PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLnNldERlZmF1bHRFZGdlTGFiZWwgPSBmdW5jdGlvbihuZXdEZWZhdWx0KSB7XG4gIGlmICghXy5pc0Z1bmN0aW9uKG5ld0RlZmF1bHQpKSB7XG4gICAgbmV3RGVmYXVsdCA9IF8uY29uc3RhbnQobmV3RGVmYXVsdCk7XG4gIH1cbiAgdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuID0gbmV3RGVmYXVsdDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZWRnZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9lZGdlQ291bnQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZWRnZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIF8udmFsdWVzKHRoaXMuX2VkZ2VPYmpzKTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXRQYXRoID0gZnVuY3Rpb24odnMsIHZhbHVlKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gIF8ucmVkdWNlKHZzLCBmdW5jdGlvbih2LCB3KSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgc2VsZi5zZXRFZGdlKHYsIHcsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5zZXRFZGdlKHYsIHcpO1xuICAgIH1cbiAgICByZXR1cm4gdztcbiAgfSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLypcbiAqIHNldEVkZ2UodiwgdywgW3ZhbHVlLCBbbmFtZV1dKVxuICogc2V0RWRnZSh7IHYsIHcsIFtuYW1lXSB9LCBbdmFsdWVdKVxuICovXG5HcmFwaC5wcm90b3R5cGUuc2V0RWRnZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdiwgdywgbmFtZSwgdmFsdWU7XG4gIHZhciB2YWx1ZVNwZWNpZmllZCA9IGZhbHNlO1xuICB2YXIgYXJnMCA9IGFyZ3VtZW50c1swXTtcblxuICBpZiAodHlwZW9mIGFyZzAgPT09IFwib2JqZWN0XCIgJiYgYXJnMCAhPT0gbnVsbCAmJiBcInZcIiBpbiBhcmcwKSB7XG4gICAgdiA9IGFyZzAudjtcbiAgICB3ID0gYXJnMC53O1xuICAgIG5hbWUgPSBhcmcwLm5hbWU7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHZhbHVlID0gYXJndW1lbnRzWzFdO1xuICAgICAgdmFsdWVTcGVjaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2ID0gYXJnMDtcbiAgICB3ID0gYXJndW1lbnRzWzFdO1xuICAgIG5hbWUgPSBhcmd1bWVudHNbM107XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICB2YWx1ZSA9IGFyZ3VtZW50c1syXTtcbiAgICAgIHZhbHVlU3BlY2lmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB2ID0gXCJcIiArIHY7XG4gIHcgPSBcIlwiICsgdztcbiAgaWYgKCFfLmlzVW5kZWZpbmVkKG5hbWUpKSB7XG4gICAgbmFtZSA9IFwiXCIgKyBuYW1lO1xuICB9XG5cbiAgdmFyIGUgPSBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSk7XG4gIGlmIChfLmhhcyh0aGlzLl9lZGdlTGFiZWxzLCBlKSkge1xuICAgIGlmICh2YWx1ZVNwZWNpZmllZCkge1xuICAgICAgdGhpcy5fZWRnZUxhYmVsc1tlXSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZChuYW1lKSAmJiAhdGhpcy5faXNNdWx0aWdyYXBoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHNldCBhIG5hbWVkIGVkZ2Ugd2hlbiBpc011bHRpZ3JhcGggPSBmYWxzZVwiKTtcbiAgfVxuXG4gIC8vIEl0IGRpZG4ndCBleGlzdCwgc28gd2UgbmVlZCB0byBjcmVhdGUgaXQuXG4gIC8vIEZpcnN0IGVuc3VyZSB0aGUgbm9kZXMgZXhpc3QuXG4gIHRoaXMuc2V0Tm9kZSh2KTtcbiAgdGhpcy5zZXROb2RlKHcpO1xuXG4gIHRoaXMuX2VkZ2VMYWJlbHNbZV0gPSB2YWx1ZVNwZWNpZmllZCA/IHZhbHVlIDogdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuKHYsIHcsIG5hbWUpO1xuXG4gIHZhciBlZGdlT2JqID0gZWRnZUFyZ3NUb09iaih0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKTtcbiAgLy8gRW5zdXJlIHdlIGFkZCB1bmRpcmVjdGVkIGVkZ2VzIGluIGEgY29uc2lzdGVudCB3YXkuXG4gIHYgPSBlZGdlT2JqLnY7XG4gIHcgPSBlZGdlT2JqLnc7XG5cbiAgT2JqZWN0LmZyZWV6ZShlZGdlT2JqKTtcbiAgdGhpcy5fZWRnZU9ianNbZV0gPSBlZGdlT2JqO1xuICBpbmNyZW1lbnRPckluaXRFbnRyeSh0aGlzLl9wcmVkc1t3XSwgdik7XG4gIGluY3JlbWVudE9ySW5pdEVudHJ5KHRoaXMuX3N1Y3Nbdl0sIHcpO1xuICB0aGlzLl9pblt3XVtlXSA9IGVkZ2VPYmo7XG4gIHRoaXMuX291dFt2XVtlXSA9IGVkZ2VPYmo7XG4gIHRoaXMuX2VkZ2VDb3VudCsrO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5lZGdlID0gZnVuY3Rpb24odiwgdywgbmFtZSkge1xuICB2YXIgZSA9IChhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgOiBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSkpO1xuICByZXR1cm4gdGhpcy5fZWRnZUxhYmVsc1tlXTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5oYXNFZGdlID0gZnVuY3Rpb24odiwgdywgbmFtZSkge1xuICB2YXIgZSA9IChhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgOiBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSkpO1xuICByZXR1cm4gXy5oYXModGhpcy5fZWRnZUxhYmVscywgZSk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUucmVtb3ZlRWRnZSA9IGZ1bmN0aW9uKHYsIHcsIG5hbWUpIHtcbiAgdmFyIGUgPSAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgID8gZWRnZU9ialRvSWQodGhpcy5faXNEaXJlY3RlZCwgYXJndW1lbnRzWzBdKVxuICAgIDogZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpKTtcbiAgdmFyIGVkZ2UgPSB0aGlzLl9lZGdlT2Jqc1tlXTtcbiAgaWYgKGVkZ2UpIHtcbiAgICB2ID0gZWRnZS52O1xuICAgIHcgPSBlZGdlLnc7XG4gICAgZGVsZXRlIHRoaXMuX2VkZ2VMYWJlbHNbZV07XG4gICAgZGVsZXRlIHRoaXMuX2VkZ2VPYmpzW2VdO1xuICAgIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkodGhpcy5fcHJlZHNbd10sIHYpO1xuICAgIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkodGhpcy5fc3Vjc1t2XSwgdyk7XG4gICAgZGVsZXRlIHRoaXMuX2luW3ddW2VdO1xuICAgIGRlbGV0ZSB0aGlzLl9vdXRbdl1bZV07XG4gICAgdGhpcy5fZWRnZUNvdW50LS07XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaW5FZGdlcyA9IGZ1bmN0aW9uKHYsIHUpIHtcbiAgdmFyIGluViA9IHRoaXMuX2luW3ZdO1xuICBpZiAoaW5WKSB7XG4gICAgdmFyIGVkZ2VzID0gXy52YWx1ZXMoaW5WKTtcbiAgICBpZiAoIXUpIHtcbiAgICAgIHJldHVybiBlZGdlcztcbiAgICB9XG4gICAgcmV0dXJuIF8uZmlsdGVyKGVkZ2VzLCBmdW5jdGlvbihlZGdlKSB7IHJldHVybiBlZGdlLnYgPT09IHU7IH0pO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUub3V0RWRnZXMgPSBmdW5jdGlvbih2LCB3KSB7XG4gIHZhciBvdXRWID0gdGhpcy5fb3V0W3ZdO1xuICBpZiAob3V0Vikge1xuICAgIHZhciBlZGdlcyA9IF8udmFsdWVzKG91dFYpO1xuICAgIGlmICghdykge1xuICAgICAgcmV0dXJuIGVkZ2VzO1xuICAgIH1cbiAgICByZXR1cm4gXy5maWx0ZXIoZWRnZXMsIGZ1bmN0aW9uKGVkZ2UpIHsgcmV0dXJuIGVkZ2UudyA9PT0gdzsgfSk7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ub2RlRWRnZXMgPSBmdW5jdGlvbih2LCB3KSB7XG4gIHZhciBpbkVkZ2VzID0gdGhpcy5pbkVkZ2VzKHYsIHcpO1xuICBpZiAoaW5FZGdlcykge1xuICAgIHJldHVybiBpbkVkZ2VzLmNvbmNhdCh0aGlzLm91dEVkZ2VzKHYsIHcpKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gaW5jcmVtZW50T3JJbml0RW50cnkobWFwLCBrKSB7XG4gIGlmIChtYXBba10pIHtcbiAgICBtYXBba10rKztcbiAgfSBlbHNlIHtcbiAgICBtYXBba10gPSAxO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkobWFwLCBrKSB7XG4gIGlmICghLS1tYXBba10pIHsgZGVsZXRlIG1hcFtrXTsgfVxufVxuXG5mdW5jdGlvbiBlZGdlQXJnc1RvSWQoaXNEaXJlY3RlZCwgdl8sIHdfLCBuYW1lKSB7XG4gIHZhciB2ID0gXCJcIiArIHZfO1xuICB2YXIgdyA9IFwiXCIgKyB3XztcbiAgaWYgKCFpc0RpcmVjdGVkICYmIHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuICByZXR1cm4gdiArIEVER0VfS0VZX0RFTElNICsgdyArIEVER0VfS0VZX0RFTElNICtcbiAgICAgICAgICAgICAoXy5pc1VuZGVmaW5lZChuYW1lKSA/IERFRkFVTFRfRURHRV9OQU1FIDogbmFtZSk7XG59XG5cbmZ1bmN0aW9uIGVkZ2VBcmdzVG9PYmooaXNEaXJlY3RlZCwgdl8sIHdfLCBuYW1lKSB7XG4gIHZhciB2ID0gXCJcIiArIHZfO1xuICB2YXIgdyA9IFwiXCIgKyB3XztcbiAgaWYgKCFpc0RpcmVjdGVkICYmIHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuICB2YXIgZWRnZU9iaiA9ICB7IHY6IHYsIHc6IHcgfTtcbiAgaWYgKG5hbWUpIHtcbiAgICBlZGdlT2JqLm5hbWUgPSBuYW1lO1xuICB9XG4gIHJldHVybiBlZGdlT2JqO1xufVxuXG5mdW5jdGlvbiBlZGdlT2JqVG9JZChpc0RpcmVjdGVkLCBlZGdlT2JqKSB7XG4gIHJldHVybiBlZGdlQXJnc1RvSWQoaXNEaXJlY3RlZCwgZWRnZU9iai52LCBlZGdlT2JqLncsIGVkZ2VPYmoubmFtZSk7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICcyLjEuOCc7XG4iLCIvLyBJbmNsdWRlcyBvbmx5IHRoZSBcImNvcmVcIiBvZiBncmFwaGxpYlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEdyYXBoOiByZXF1aXJlKFwiLi9ncmFwaFwiKSxcbiAgdmVyc2lvbjogcmVxdWlyZShcIi4vdmVyc2lvblwiKVxufTtcbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB3cml0ZTogd3JpdGUsXG4gIHJlYWQ6IHJlYWRcbn07XG5cbmZ1bmN0aW9uIHdyaXRlKGcpIHtcbiAgdmFyIGpzb24gPSB7XG4gICAgb3B0aW9uczoge1xuICAgICAgZGlyZWN0ZWQ6IGcuaXNEaXJlY3RlZCgpLFxuICAgICAgbXVsdGlncmFwaDogZy5pc011bHRpZ3JhcGgoKSxcbiAgICAgIGNvbXBvdW5kOiBnLmlzQ29tcG91bmQoKVxuICAgIH0sXG4gICAgbm9kZXM6IHdyaXRlTm9kZXMoZyksXG4gICAgZWRnZXM6IHdyaXRlRWRnZXMoZylcbiAgfTtcbiAgaWYgKCFfLmlzVW5kZWZpbmVkKGcuZ3JhcGgoKSkpIHtcbiAgICBqc29uLnZhbHVlID0gXy5jbG9uZShnLmdyYXBoKCkpO1xuICB9XG4gIHJldHVybiBqc29uO1xufVxuXG5mdW5jdGlvbiB3cml0ZU5vZGVzKGcpIHtcbiAgcmV0dXJuIF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlVmFsdWUgPSBnLm5vZGUodik7XG4gICAgdmFyIHBhcmVudCA9IGcucGFyZW50KHYpO1xuICAgIHZhciBub2RlID0geyB2OiB2IH07XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKG5vZGVWYWx1ZSkpIHtcbiAgICAgIG5vZGUudmFsdWUgPSBub2RlVmFsdWU7XG4gICAgfVxuICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXJlbnQpKSB7XG4gICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZUVkZ2VzKGcpIHtcbiAgcmV0dXJuIF8ubWFwKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlVmFsdWUgPSBnLmVkZ2UoZSk7XG4gICAgdmFyIGVkZ2UgPSB7IHY6IGUudiwgdzogZS53IH07XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGUubmFtZSkpIHtcbiAgICAgIGVkZ2UubmFtZSA9IGUubmFtZTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGVkZ2VWYWx1ZSkpIHtcbiAgICAgIGVkZ2UudmFsdWUgPSBlZGdlVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBlZGdlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZChqc29uKSB7XG4gIHZhciBnID0gbmV3IEdyYXBoKGpzb24ub3B0aW9ucykuc2V0R3JhcGgoanNvbi52YWx1ZSk7XG4gIF8uZWFjaChqc29uLm5vZGVzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGcuc2V0Tm9kZShlbnRyeS52LCBlbnRyeS52YWx1ZSk7XG4gICAgaWYgKGVudHJ5LnBhcmVudCkge1xuICAgICAgZy5zZXRQYXJlbnQoZW50cnkudiwgZW50cnkucGFyZW50KTtcbiAgICB9XG4gIH0pO1xuICBfLmVhY2goanNvbi5lZGdlcywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICBnLnNldEVkZ2UoeyB2OiBlbnRyeS52LCB3OiBlbnRyeS53LCBuYW1lOiBlbnRyeS5uYW1lIH0sIGVudHJ5LnZhbHVlKTtcbiAgfSk7XG4gIHJldHVybiBnO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBvbmVudHM7XG5cbmZ1bmN0aW9uIGNvbXBvbmVudHMoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgY21wdHMgPSBbXTtcbiAgdmFyIGNtcHQ7XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHJldHVybjtcbiAgICB2aXNpdGVkW3ZdID0gdHJ1ZTtcbiAgICBjbXB0LnB1c2godik7XG4gICAgXy5lYWNoKGcuc3VjY2Vzc29ycyh2KSwgZGZzKTtcbiAgICBfLmVhY2goZy5wcmVkZWNlc3NvcnModiksIGRmcyk7XG4gIH1cblxuICBfLmVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgY21wdCA9IFtdO1xuICAgIGRmcyh2KTtcbiAgICBpZiAoY21wdC5sZW5ndGgpIHtcbiAgICAgIGNtcHRzLnB1c2goY21wdCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gY21wdHM7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJpb3JpdHlRdWV1ZTtcblxuLyoqXG4gKiBBIG1pbi1wcmlvcml0eSBxdWV1ZSBkYXRhIHN0cnVjdHVyZS4gVGhpcyBhbGdvcml0aG0gaXMgZGVyaXZlZCBmcm9tIENvcm1lbixcbiAqIGV0IGFsLiwgXCJJbnRyb2R1Y3Rpb24gdG8gQWxnb3JpdGhtc1wiLiBUaGUgYmFzaWMgaWRlYSBvZiBhIG1pbi1wcmlvcml0eVxuICogcXVldWUgaXMgdGhhdCB5b3UgY2FuIGVmZmljaWVudGx5IChpbiBPKDEpIHRpbWUpIGdldCB0aGUgc21hbGxlc3Qga2V5IGluXG4gKiB0aGUgcXVldWUuIEFkZGluZyBhbmQgcmVtb3ZpbmcgZWxlbWVudHMgdGFrZXMgTyhsb2cgbikgdGltZS4gQSBrZXkgY2FuXG4gKiBoYXZlIGl0cyBwcmlvcml0eSBkZWNyZWFzZWQgaW4gTyhsb2cgbikgdGltZS5cbiAqL1xuZnVuY3Rpb24gUHJpb3JpdHlRdWV1ZSgpIHtcbiAgdGhpcy5fYXJyID0gW107XG4gIHRoaXMuX2tleUluZGljZXMgPSB7fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHF1ZXVlLiBUYWtlcyBgTygxKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fYXJyLmxlbmd0aDtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUga2V5cyB0aGF0IGFyZSBpbiB0aGUgcXVldWUuIFRha2VzIGBPKG4pYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9hcnIubWFwKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHgua2V5OyB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgKiprZXkqKiBpcyBpbiB0aGUgcXVldWUgYW5kIGBmYWxzZWAgaWYgbm90LlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihrZXkpIHtcbiAgcmV0dXJuIF8uaGFzKHRoaXMuX2tleUluZGljZXMsIGtleSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHByaW9yaXR5IGZvciAqKmtleSoqLiBJZiAqKmtleSoqIGlzIG5vdCBwcmVzZW50IGluIHRoZSBxdWV1ZVxuICogdGhlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYHVuZGVmaW5lZGAuIFRha2VzIGBPKDEpYCB0aW1lLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBrZXlcbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucHJpb3JpdHkgPSBmdW5jdGlvbihrZXkpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fa2V5SW5kaWNlc1trZXldO1xuICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5O1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGtleSBmb3IgdGhlIG1pbmltdW0gZWxlbWVudCBpbiB0aGlzIHF1ZXVlLiBJZiB0aGUgcXVldWUgaXNcbiAqIGVtcHR5IHRoaXMgZnVuY3Rpb24gdGhyb3dzIGFuIEVycm9yLiBUYWtlcyBgTygxKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUubWluID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLnNpemUoKSA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlF1ZXVlIHVuZGVyZmxvd1wiKTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyWzBdLmtleTtcbn07XG5cbi8qKlxuICogSW5zZXJ0cyBhIG5ldyBrZXkgaW50byB0aGUgcHJpb3JpdHkgcXVldWUuIElmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMgaW5cbiAqIHRoZSBxdWV1ZSB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYDsgb3RoZXJ3aXNlIGl0IHdpbGwgcmV0dXJuIGB0cnVlYC5cbiAqIFRha2VzIGBPKG4pYCB0aW1lLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBrZXkgdGhlIGtleSB0byBhZGRcbiAqIEBwYXJhbSB7TnVtYmVyfSBwcmlvcml0eSB0aGUgaW5pdGlhbCBwcmlvcml0eSBmb3IgdGhlIGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihrZXksIHByaW9yaXR5KSB7XG4gIHZhciBrZXlJbmRpY2VzID0gdGhpcy5fa2V5SW5kaWNlcztcbiAga2V5ID0gU3RyaW5nKGtleSk7XG4gIGlmICghXy5oYXMoa2V5SW5kaWNlcywga2V5KSkge1xuICAgIHZhciBhcnIgPSB0aGlzLl9hcnI7XG4gICAgdmFyIGluZGV4ID0gYXJyLmxlbmd0aDtcbiAgICBrZXlJbmRpY2VzW2tleV0gPSBpbmRleDtcbiAgICBhcnIucHVzaCh7a2V5OiBrZXksIHByaW9yaXR5OiBwcmlvcml0eX0pO1xuICAgIHRoaXMuX2RlY3JlYXNlKGluZGV4KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgYW5kIHJldHVybnMgdGhlIHNtYWxsZXN0IGtleSBpbiB0aGUgcXVldWUuIFRha2VzIGBPKGxvZyBuKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucmVtb3ZlTWluID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX3N3YXAoMCwgdGhpcy5fYXJyLmxlbmd0aCAtIDEpO1xuICB2YXIgbWluID0gdGhpcy5fYXJyLnBvcCgpO1xuICBkZWxldGUgdGhpcy5fa2V5SW5kaWNlc1ttaW4ua2V5XTtcbiAgdGhpcy5faGVhcGlmeSgwKTtcbiAgcmV0dXJuIG1pbi5rZXk7XG59O1xuXG4vKipcbiAqIERlY3JlYXNlcyB0aGUgcHJpb3JpdHkgZm9yICoqa2V5KiogdG8gKipwcmlvcml0eSoqLiBJZiB0aGUgbmV3IHByaW9yaXR5IGlzXG4gKiBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIHByaW9yaXR5LCB0aGlzIGZ1bmN0aW9uIHdpbGwgdGhyb3cgYW4gRXJyb3IuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleSB0aGUga2V5IGZvciB3aGljaCB0byByYWlzZSBwcmlvcml0eVxuICogQHBhcmFtIHtOdW1iZXJ9IHByaW9yaXR5IHRoZSBuZXcgcHJpb3JpdHkgZm9yIHRoZSBrZXlcbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuZGVjcmVhc2UgPSBmdW5jdGlvbihrZXksIHByaW9yaXR5KSB7XG4gIHZhciBpbmRleCA9IHRoaXMuX2tleUluZGljZXNba2V5XTtcbiAgaWYgKHByaW9yaXR5ID4gdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5ldyBwcmlvcml0eSBpcyBncmVhdGVyIHRoYW4gY3VycmVudCBwcmlvcml0eS4gXCIgK1xuICAgICAgICBcIktleTogXCIgKyBrZXkgKyBcIiBPbGQ6IFwiICsgdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSArIFwiIE5ldzogXCIgKyBwcmlvcml0eSk7XG4gIH1cbiAgdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSA9IHByaW9yaXR5O1xuICB0aGlzLl9kZWNyZWFzZShpbmRleCk7XG59O1xuXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5faGVhcGlmeSA9IGZ1bmN0aW9uKGkpIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIGwgPSAyICogaTtcbiAgdmFyIHIgPSBsICsgMTtcbiAgdmFyIGxhcmdlc3QgPSBpO1xuICBpZiAobCA8IGFyci5sZW5ndGgpIHtcbiAgICBsYXJnZXN0ID0gYXJyW2xdLnByaW9yaXR5IDwgYXJyW2xhcmdlc3RdLnByaW9yaXR5ID8gbCA6IGxhcmdlc3Q7XG4gICAgaWYgKHIgPCBhcnIubGVuZ3RoKSB7XG4gICAgICBsYXJnZXN0ID0gYXJyW3JdLnByaW9yaXR5IDwgYXJyW2xhcmdlc3RdLnByaW9yaXR5ID8gciA6IGxhcmdlc3Q7XG4gICAgfVxuICAgIGlmIChsYXJnZXN0ICE9PSBpKSB7XG4gICAgICB0aGlzLl9zd2FwKGksIGxhcmdlc3QpO1xuICAgICAgdGhpcy5faGVhcGlmeShsYXJnZXN0KTtcbiAgICB9XG4gIH1cbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9kZWNyZWFzZSA9IGZ1bmN0aW9uKGluZGV4KSB7XG4gIHZhciBhcnIgPSB0aGlzLl9hcnI7XG4gIHZhciBwcmlvcml0eSA9IGFycltpbmRleF0ucHJpb3JpdHk7XG4gIHZhciBwYXJlbnQ7XG4gIHdoaWxlIChpbmRleCAhPT0gMCkge1xuICAgIHBhcmVudCA9IGluZGV4ID4+IDE7XG4gICAgaWYgKGFycltwYXJlbnRdLnByaW9yaXR5IDwgcHJpb3JpdHkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl9zd2FwKGluZGV4LCBwYXJlbnQpO1xuICAgIGluZGV4ID0gcGFyZW50O1xuICB9XG59O1xuXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5fc3dhcCA9IGZ1bmN0aW9uKGksIGopIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIGtleUluZGljZXMgPSB0aGlzLl9rZXlJbmRpY2VzO1xuICB2YXIgb3JpZ0FyckkgPSBhcnJbaV07XG4gIHZhciBvcmlnQXJySiA9IGFycltqXTtcbiAgYXJyW2ldID0gb3JpZ0Fycko7XG4gIGFycltqXSA9IG9yaWdBcnJJO1xuICBrZXlJbmRpY2VzW29yaWdBcnJKLmtleV0gPSBpO1xuICBrZXlJbmRpY2VzW29yaWdBcnJJLmtleV0gPSBqO1xufTtcbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBQcmlvcml0eVF1ZXVlID0gcmVxdWlyZShcIi4uL2RhdGEvcHJpb3JpdHktcXVldWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmE7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GVU5DID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZGlqa3N0cmEoZywgc291cmNlLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHJldHVybiBydW5EaWprc3RyYShnLCBTdHJpbmcoc291cmNlKSxcbiAgICB3ZWlnaHRGbiB8fCBERUZBVUxUX1dFSUdIVF9GVU5DLFxuICAgIGVkZ2VGbiB8fCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm91dEVkZ2VzKHYpOyB9KTtcbn1cblxuZnVuY3Rpb24gcnVuRGlqa3N0cmEoZywgc291cmNlLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHZhciByZXN1bHRzID0ge307XG4gIHZhciBwcSA9IG5ldyBQcmlvcml0eVF1ZXVlKCk7XG4gIHZhciB2LCB2RW50cnk7XG5cbiAgdmFyIHVwZGF0ZU5laWdoYm9ycyA9IGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICB2YXIgdyA9IGVkZ2UudiAhPT0gdiA/IGVkZ2UudiA6IGVkZ2UudztcbiAgICB2YXIgd0VudHJ5ID0gcmVzdWx0c1t3XTtcbiAgICB2YXIgd2VpZ2h0ID0gd2VpZ2h0Rm4oZWRnZSk7XG4gICAgdmFyIGRpc3RhbmNlID0gdkVudHJ5LmRpc3RhbmNlICsgd2VpZ2h0O1xuXG4gICAgaWYgKHdlaWdodCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImRpamtzdHJhIGRvZXMgbm90IGFsbG93IG5lZ2F0aXZlIGVkZ2Ugd2VpZ2h0cy4gXCIgK1xuICAgICAgICAgICAgICAgICAgICAgIFwiQmFkIGVkZ2U6IFwiICsgZWRnZSArIFwiIFdlaWdodDogXCIgKyB3ZWlnaHQpO1xuICAgIH1cblxuICAgIGlmIChkaXN0YW5jZSA8IHdFbnRyeS5kaXN0YW5jZSkge1xuICAgICAgd0VudHJ5LmRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICB3RW50cnkucHJlZGVjZXNzb3IgPSB2O1xuICAgICAgcHEuZGVjcmVhc2UodywgZGlzdGFuY2UpO1xuICAgIH1cbiAgfTtcblxuICBnLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgdmFyIGRpc3RhbmNlID0gdiA9PT0gc291cmNlID8gMCA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICByZXN1bHRzW3ZdID0geyBkaXN0YW5jZTogZGlzdGFuY2UgfTtcbiAgICBwcS5hZGQodiwgZGlzdGFuY2UpO1xuICB9KTtcblxuICB3aGlsZSAocHEuc2l6ZSgpID4gMCkge1xuICAgIHYgPSBwcS5yZW1vdmVNaW4oKTtcbiAgICB2RW50cnkgPSByZXN1bHRzW3ZdO1xuICAgIGlmICh2RW50cnkuZGlzdGFuY2UgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZWRnZUZuKHYpLmZvckVhY2godXBkYXRlTmVpZ2hib3JzKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIGRpamtzdHJhID0gcmVxdWlyZShcIi4vZGlqa3N0cmFcIik7XG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmFBbGw7XG5cbmZ1bmN0aW9uIGRpamtzdHJhQWxsKGcsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKSB7XG4gIHJldHVybiBfLnRyYW5zZm9ybShnLm5vZGVzKCksIGZ1bmN0aW9uKGFjYywgdikge1xuICAgIGFjY1t2XSA9IGRpamtzdHJhKGcsIHYsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKTtcbiAgfSwge30pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRhcmphbjtcblxuZnVuY3Rpb24gdGFyamFuKGcpIHtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciB2aXNpdGVkID0ge307IC8vIG5vZGUgaWQgLT4geyBvblN0YWNrLCBsb3dsaW5rLCBpbmRleCB9XG4gIHZhciByZXN1bHRzID0gW107XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgZW50cnkgPSB2aXNpdGVkW3ZdID0ge1xuICAgICAgb25TdGFjazogdHJ1ZSxcbiAgICAgIGxvd2xpbms6IGluZGV4LFxuICAgICAgaW5kZXg6IGluZGV4KytcbiAgICB9O1xuICAgIHN0YWNrLnB1c2godik7XG5cbiAgICBnLnN1Y2Nlc3NvcnModikuZm9yRWFjaChmdW5jdGlvbih3KSB7XG4gICAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHcpKSB7XG4gICAgICAgIGRmcyh3KTtcbiAgICAgICAgZW50cnkubG93bGluayA9IE1hdGgubWluKGVudHJ5Lmxvd2xpbmssIHZpc2l0ZWRbd10ubG93bGluayk7XG4gICAgICB9IGVsc2UgaWYgKHZpc2l0ZWRbd10ub25TdGFjaykge1xuICAgICAgICBlbnRyeS5sb3dsaW5rID0gTWF0aC5taW4oZW50cnkubG93bGluaywgdmlzaXRlZFt3XS5pbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoZW50cnkubG93bGluayA9PT0gZW50cnkuaW5kZXgpIHtcbiAgICAgIHZhciBjbXB0ID0gW107XG4gICAgICB2YXIgdztcbiAgICAgIGRvIHtcbiAgICAgICAgdyA9IHN0YWNrLnBvcCgpO1xuICAgICAgICB2aXNpdGVkW3ddLm9uU3RhY2sgPSBmYWxzZTtcbiAgICAgICAgY21wdC5wdXNoKHcpO1xuICAgICAgfSB3aGlsZSAodiAhPT0gdyk7XG4gICAgICByZXN1bHRzLnB1c2goY21wdCk7XG4gICAgfVxuICB9XG5cbiAgZy5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgIGlmICghXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIGRmcyh2KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIHRhcmphbiA9IHJlcXVpcmUoXCIuL3RhcmphblwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kQ3ljbGVzO1xuXG5mdW5jdGlvbiBmaW5kQ3ljbGVzKGcpIHtcbiAgcmV0dXJuIF8uZmlsdGVyKHRhcmphbihnKSwgZnVuY3Rpb24oY21wdCkge1xuICAgIHJldHVybiBjbXB0Lmxlbmd0aCA+IDEgfHwgKGNtcHQubGVuZ3RoID09PSAxICYmIGcuaGFzRWRnZShjbXB0WzBdLCBjbXB0WzBdKSk7XG4gIH0pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZsb3lkV2Fyc2hhbGw7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GVU5DID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZmxveWRXYXJzaGFsbChnLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHJldHVybiBydW5GbG95ZFdhcnNoYWxsKGcsXG4gICAgd2VpZ2h0Rm4gfHwgREVGQVVMVF9XRUlHSFRfRlVOQyxcbiAgICBlZGdlRm4gfHwgZnVuY3Rpb24odikgeyByZXR1cm4gZy5vdXRFZGdlcyh2KTsgfSk7XG59XG5cbmZ1bmN0aW9uIHJ1bkZsb3lkV2Fyc2hhbGwoZywgd2VpZ2h0Rm4sIGVkZ2VGbikge1xuICB2YXIgcmVzdWx0cyA9IHt9O1xuICB2YXIgbm9kZXMgPSBnLm5vZGVzKCk7XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgcmVzdWx0c1t2XSA9IHt9O1xuICAgIHJlc3VsdHNbdl1bdl0gPSB7IGRpc3RhbmNlOiAwIH07XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbih3KSB7XG4gICAgICBpZiAodiAhPT0gdykge1xuICAgICAgICByZXN1bHRzW3ZdW3ddID0geyBkaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgZWRnZUZuKHYpLmZvckVhY2goZnVuY3Rpb24oZWRnZSkge1xuICAgICAgdmFyIHcgPSBlZGdlLnYgPT09IHYgPyBlZGdlLncgOiBlZGdlLnY7XG4gICAgICB2YXIgZCA9IHdlaWdodEZuKGVkZ2UpO1xuICAgICAgcmVzdWx0c1t2XVt3XSA9IHsgZGlzdGFuY2U6IGQsIHByZWRlY2Vzc29yOiB2IH07XG4gICAgfSk7XG4gIH0pO1xuXG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgIHZhciByb3dLID0gcmVzdWx0c1trXTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGkpIHtcbiAgICAgIHZhciByb3dJID0gcmVzdWx0c1tpXTtcbiAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaikge1xuICAgICAgICB2YXIgaWsgPSByb3dJW2tdO1xuICAgICAgICB2YXIga2ogPSByb3dLW2pdO1xuICAgICAgICB2YXIgaWogPSByb3dJW2pdO1xuICAgICAgICB2YXIgYWx0RGlzdGFuY2UgPSBpay5kaXN0YW5jZSArIGtqLmRpc3RhbmNlO1xuICAgICAgICBpZiAoYWx0RGlzdGFuY2UgPCBpai5kaXN0YW5jZSkge1xuICAgICAgICAgIGlqLmRpc3RhbmNlID0gYWx0RGlzdGFuY2U7XG4gICAgICAgICAgaWoucHJlZGVjZXNzb3IgPSBrai5wcmVkZWNlc3NvcjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRvcHNvcnQ7XG50b3Bzb3J0LkN5Y2xlRXhjZXB0aW9uID0gQ3ljbGVFeGNlcHRpb247XG5cbmZ1bmN0aW9uIHRvcHNvcnQoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgc3RhY2sgPSB7fTtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcblxuICBmdW5jdGlvbiB2aXNpdChub2RlKSB7XG4gICAgaWYgKF8uaGFzKHN0YWNrLCBub2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEN5Y2xlRXhjZXB0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmhhcyh2aXNpdGVkLCBub2RlKSkge1xuICAgICAgc3RhY2tbbm9kZV0gPSB0cnVlO1xuICAgICAgdmlzaXRlZFtub2RlXSA9IHRydWU7XG4gICAgICBfLmVhY2goZy5wcmVkZWNlc3NvcnMobm9kZSksIHZpc2l0KTtcbiAgICAgIGRlbGV0ZSBzdGFja1tub2RlXTtcbiAgICAgIHJlc3VsdHMucHVzaChub2RlKTtcbiAgICB9XG4gIH1cblxuICBfLmVhY2goZy5zaW5rcygpLCB2aXNpdCk7XG5cbiAgaWYgKF8uc2l6ZSh2aXNpdGVkKSAhPT0gZy5ub2RlQ291bnQoKSkge1xuICAgIHRocm93IG5ldyBDeWNsZUV4Y2VwdGlvbigpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIEN5Y2xlRXhjZXB0aW9uKCkge31cbkN5Y2xlRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOyAvLyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEVycm9yIHRvIHBhc3MgdGVzdGluZyIsInZhciB0b3Bzb3J0ID0gcmVxdWlyZShcIi4vdG9wc29ydFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FjeWNsaWM7XG5cbmZ1bmN0aW9uIGlzQWN5Y2xpYyhnKSB7XG4gIHRyeSB7XG4gICAgdG9wc29ydChnKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgdG9wc29ydC5DeWNsZUV4Y2VwdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRmcztcblxuLypcbiAqIEEgaGVscGVyIHRoYXQgcHJlZm9ybXMgYSBwcmUtIG9yIHBvc3Qtb3JkZXIgdHJhdmVyc2FsIG9uIHRoZSBpbnB1dCBncmFwaFxuICogYW5kIHJldHVybnMgdGhlIG5vZGVzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgdmlzaXRlZC4gSWYgdGhlIGdyYXBoIGlzXG4gKiB1bmRpcmVjdGVkIHRoZW4gdGhpcyBhbGdvcml0aG0gd2lsbCBuYXZpZ2F0ZSB1c2luZyBuZWlnaGJvcnMuIElmIHRoZSBncmFwaFxuICogaXMgZGlyZWN0ZWQgdGhlbiB0aGlzIGFsZ29yaXRobSB3aWxsIG5hdmlnYXRlIHVzaW5nIHN1Y2Nlc3NvcnMuXG4gKlxuICogT3JkZXIgbXVzdCBiZSBvbmUgb2YgXCJwcmVcIiBvciBcInBvc3RcIi5cbiAqL1xuZnVuY3Rpb24gZGZzKGcsIHZzLCBvcmRlcikge1xuICBpZiAoIV8uaXNBcnJheSh2cykpIHtcbiAgICB2cyA9IFt2c107XG4gIH1cblxuICB2YXIgbmF2aWdhdGlvbiA9IChnLmlzRGlyZWN0ZWQoKSA/IGcuc3VjY2Vzc29ycyA6IGcubmVpZ2hib3JzKS5iaW5kKGcpO1xuXG4gIHZhciBhY2MgPSBbXTtcbiAgdmFyIHZpc2l0ZWQgPSB7fTtcbiAgXy5lYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKCFnLmhhc05vZGUodikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkdyYXBoIGRvZXMgbm90IGhhdmUgbm9kZTogXCIgKyB2KTtcbiAgICB9XG5cbiAgICBkb0RmcyhnLCB2LCBvcmRlciA9PT0gXCJwb3N0XCIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYyk7XG4gIH0pO1xuICByZXR1cm4gYWNjO1xufVxuXG5mdW5jdGlvbiBkb0RmcyhnLCB2LCBwb3N0b3JkZXIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYykge1xuICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHYpKSB7XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG5cbiAgICBpZiAoIXBvc3RvcmRlcikgeyBhY2MucHVzaCh2KTsgfVxuICAgIF8uZWFjaChuYXZpZ2F0aW9uKHYpLCBmdW5jdGlvbih3KSB7XG4gICAgICBkb0RmcyhnLCB3LCBwb3N0b3JkZXIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYyk7XG4gICAgfSk7XG4gICAgaWYgKHBvc3RvcmRlcikgeyBhY2MucHVzaCh2KTsgfVxuICB9XG59XG4iLCJ2YXIgZGZzID0gcmVxdWlyZShcIi4vZGZzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBvc3RvcmRlcjtcblxuZnVuY3Rpb24gcG9zdG9yZGVyKGcsIHZzKSB7XG4gIHJldHVybiBkZnMoZywgdnMsIFwicG9zdFwiKTtcbn1cbiIsInZhciBkZnMgPSByZXF1aXJlKFwiLi9kZnNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJlb3JkZXI7XG5cbmZ1bmN0aW9uIHByZW9yZGVyKGcsIHZzKSB7XG4gIHJldHVybiBkZnMoZywgdnMsIFwicHJlXCIpO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBoXCIpO1xudmFyIFByaW9yaXR5UXVldWUgPSByZXF1aXJlKFwiLi4vZGF0YS9wcmlvcml0eS1xdWV1ZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwcmltO1xuXG5mdW5jdGlvbiBwcmltKGcsIHdlaWdodEZ1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBHcmFwaCgpO1xuICB2YXIgcGFyZW50cyA9IHt9O1xuICB2YXIgcHEgPSBuZXcgUHJpb3JpdHlRdWV1ZSgpO1xuICB2YXIgdjtcblxuICBmdW5jdGlvbiB1cGRhdGVOZWlnaGJvcnMoZWRnZSkge1xuICAgIHZhciB3ID0gZWRnZS52ID09PSB2ID8gZWRnZS53IDogZWRnZS52O1xuICAgIHZhciBwcmkgPSBwcS5wcmlvcml0eSh3KTtcbiAgICBpZiAocHJpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBlZGdlV2VpZ2h0ID0gd2VpZ2h0RnVuYyhlZGdlKTtcbiAgICAgIGlmIChlZGdlV2VpZ2h0IDwgcHJpKSB7XG4gICAgICAgIHBhcmVudHNbd10gPSB2O1xuICAgICAgICBwcS5kZWNyZWFzZSh3LCBlZGdlV2VpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZy5ub2RlQ291bnQoKSA9PT0gMCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBfLmVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgcHEuYWRkKHYsIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gICAgcmVzdWx0LnNldE5vZGUodik7XG4gIH0pO1xuXG4gIC8vIFN0YXJ0IGZyb20gYW4gYXJiaXRyYXJ5IG5vZGVcbiAgcHEuZGVjcmVhc2UoZy5ub2RlcygpWzBdLCAwKTtcblxuICB2YXIgaW5pdCA9IGZhbHNlO1xuICB3aGlsZSAocHEuc2l6ZSgpID4gMCkge1xuICAgIHYgPSBwcS5yZW1vdmVNaW4oKTtcbiAgICBpZiAoXy5oYXMocGFyZW50cywgdikpIHtcbiAgICAgIHJlc3VsdC5zZXRFZGdlKHYsIHBhcmVudHNbdl0pO1xuICAgIH0gZWxzZSBpZiAoaW5pdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgZ3JhcGggaXMgbm90IGNvbm5lY3RlZDogXCIgKyBnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdCA9IHRydWU7XG4gICAgfVxuXG4gICAgZy5ub2RlRWRnZXModikuZm9yRWFjaCh1cGRhdGVOZWlnaGJvcnMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBjb21wb25lbnRzOiByZXF1aXJlKFwiLi9jb21wb25lbnRzXCIpLFxuICBkaWprc3RyYTogcmVxdWlyZShcIi4vZGlqa3N0cmFcIiksXG4gIGRpamtzdHJhQWxsOiByZXF1aXJlKFwiLi9kaWprc3RyYS1hbGxcIiksXG4gIGZpbmRDeWNsZXM6IHJlcXVpcmUoXCIuL2ZpbmQtY3ljbGVzXCIpLFxuICBmbG95ZFdhcnNoYWxsOiByZXF1aXJlKFwiLi9mbG95ZC13YXJzaGFsbFwiKSxcbiAgaXNBY3ljbGljOiByZXF1aXJlKFwiLi9pcy1hY3ljbGljXCIpLFxuICBwb3N0b3JkZXI6IHJlcXVpcmUoXCIuL3Bvc3RvcmRlclwiKSxcbiAgcHJlb3JkZXI6IHJlcXVpcmUoXCIuL3ByZW9yZGVyXCIpLFxuICBwcmltOiByZXF1aXJlKFwiLi9wcmltXCIpLFxuICB0YXJqYW46IHJlcXVpcmUoXCIuL3RhcmphblwiKSxcbiAgdG9wc29ydDogcmVxdWlyZShcIi4vdG9wc29ydFwiKVxufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LCBDaHJpcyBQZXR0aXR0XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG4gKlxuICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzXG4gKiBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gKiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9yc1xuICogbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXRcbiAqIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIiBBTkRcbiAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFXG4gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1JcbiAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSXG4gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLFxuICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGxpYiA9IHJlcXVpcmUoXCIuL2xpYlwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEdyYXBoOiBsaWIuR3JhcGgsXG4gIGpzb246IHJlcXVpcmUoXCIuL2xpYi9qc29uXCIpLFxuICBhbGc6IHJlcXVpcmUoXCIuL2xpYi9hbGdcIiksXG4gIHZlcnNpb246IGxpYi52ZXJzaW9uXG59O1xuIiwiLyogZ2xvYmFsIHdpbmRvdyAqL1xuXG52YXIgZ3JhcGhsaWI7XG5cbmlmICh0eXBlb2YgcmVxdWlyZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gIHRyeSB7XG4gICAgZ3JhcGhsaWIgPSByZXF1aXJlKFwiZ3JhcGhsaWJcIik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBjb250aW51ZSByZWdhcmRsZXNzIG9mIGVycm9yXG4gIH1cbn1cblxuaWYgKCFncmFwaGxpYikge1xuICBncmFwaGxpYiA9IHdpbmRvdy5ncmFwaGxpYjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBncmFwaGxpYjtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICpcbiAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhkZWVwWzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGVlcCh2YWx1ZSkge1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGVlcDtcbiIsInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSB2YWx1ZSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gaW5kZXggVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBpbmRleCBvciBrZXkgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0l0ZXJhdGVlQ2FsbCh2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgID8gKGlzQXJyYXlMaWtlKG9iamVjdCkgJiYgaXNJbmRleChpbmRleCwgb2JqZWN0Lmxlbmd0aCkpXG4gICAgICAgIDogKHR5cGUgPT0gJ3N0cmluZycgJiYgaW5kZXggaW4gb2JqZWN0KVxuICAgICAgKSB7XG4gICAgcmV0dXJuIGVxKG9iamVjdFtpbmRleF0sIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJdGVyYXRlZUNhbGw7XG4iLCJ2YXIgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAqIG9iamVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBmb3IgYWxsIGRlc3RpbmF0aW9uIHByb3BlcnRpZXMgdGhhdFxuICogcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmRlZmF1bHRzRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbnZhciBkZWZhdWx0cyA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoO1xuICB2YXIgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgbGVuZ3RoID0gMTtcbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgIHZhciBwcm9wcyA9IGtleXNJbihzb3VyY2UpO1xuICAgIHZhciBwcm9wc0luZGV4ID0gLTE7XG4gICAgdmFyIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsrcHJvcHNJbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHNbcHJvcHNJbmRleF07XG4gICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoZXEodmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iLCJ2YXIgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBgXy5maW5kYCBvciBgXy5maW5kTGFzdGAgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZpbmRJbmRleEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbGxlY3Rpb24gaW5kZXguXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmaW5kIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVGaW5kKGZpbmRJbmRleEZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgY29sbGVjdGlvbiA9IGtleXMoY29sbGVjdGlvbik7XG4gICAgICBwcmVkaWNhdGUgPSBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpOyB9O1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSBmaW5kSW5kZXhGdW5jKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KTtcbiAgICByZXR1cm4gaW5kZXggPiAtMSA/IGl0ZXJhYmxlW2l0ZXJhdGVlID8gY29sbGVjdGlvbltpbmRleF0gOiBpbmRleF0gOiB1bmRlZmluZWQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlRmluZDtcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmltbWVkRW5kSW5kZXg7XG4iLCJ2YXIgdHJpbW1lZEVuZEluZGV4ID0gcmVxdWlyZSgnLi9fdHJpbW1lZEVuZEluZGV4Jyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udHJpbWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byB0cmltLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUcmltKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nXG4gICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICA6IHN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVHJpbTtcbiIsInZhciBiYXNlVHJpbSA9IHJlcXVpcmUoJy4vX2Jhc2VUcmltJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvTnVtYmVyO1xuIiwidmFyIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICB9XG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0Zpbml0ZTtcbiIsInZhciB0b0Zpbml0ZSA9IHJlcXVpcmUoJy4vdG9GaW5pdGUnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0ludGVnZXI7XG4iLCJ2YXIgYmFzZUZpbmRJbmRleCA9IHJlcXVpcmUoJy4vX2Jhc2VGaW5kSW5kZXgnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICB0b0ludGVnZXIgPSByZXF1aXJlKCcuL3RvSW50ZWdlcicpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RcbiAqIGVsZW1lbnQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICogXTtcbiAqXG4gKiBfLmZpbmRJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdiYXJuZXknOyB9KTtcbiAqIC8vID0+IDBcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnZnJlZCcsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAqIC8vID0+IDFcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmRJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gMFxuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAqIC8vID0+IDJcbiAqL1xuZnVuY3Rpb24gZmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICB9XG4gIHJldHVybiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRJbmRleDtcbiIsInZhciBjcmVhdGVGaW5kID0gcmVxdWlyZSgnLi9fY3JlYXRlRmluZCcpLFxuICAgIGZpbmRJbmRleCA9IHJlcXVpcmUoJy4vZmluZEluZGV4Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyB0aGUgZmlyc3QgZWxlbWVudFxuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gKiBdO1xuICpcbiAqIF8uZmluZCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdwZWJibGVzJ1xuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0IGZvciAnZnJlZCdcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgJ2FjdGl2ZScpO1xuICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICovXG52YXIgZmluZCA9IGNyZWF0ZUZpbmQoZmluZEluZGV4KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kO1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKTtcblxuLyoqXG4gKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5mbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIDEpIDogW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdHRlbjtcbiIsInZhciBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGNhc3RGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2Nhc3RGdW5jdGlvbicpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuXG4gKiBvYmplY3QgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0XG4gKiBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmZvckluUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5mb3JJbihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gKiB9KTtcbiAqIC8vID0+IExvZ3MgJ2EnLCAnYicsIHRoZW4gJ2MnIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICovXG5mdW5jdGlvbiBmb3JJbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgID8gb2JqZWN0XG4gICAgOiBiYXNlRm9yKG9iamVjdCwgY2FzdEZ1bmN0aW9uKGl0ZXJhdGVlKSwga2V5c0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb3JJbjtcbiIsIi8qKlxuICogR2V0cyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubGFzdChbMSwgMiwgM10pO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuIGxlbmd0aCA/IGFycmF5W2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxhc3Q7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleXMgYXMgYG9iamVjdGAgYW5kIHZhbHVlcyBnZW5lcmF0ZWRcbiAqIGJ5IHJ1bm5pbmcgZWFjaCBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAgdGhydVxuICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gKiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIG9iamVjdC5cbiAqIEBzZWUgXy5tYXBLZXlzXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IHtcbiAqICAgJ2ZyZWQnOiAgICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAgfSxcbiAqICAgJ3BlYmJsZXMnOiB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gKiB9O1xuICpcbiAqIF8ubWFwVmFsdWVzKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZTsgfSk7XG4gKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1hcFZhbHVlcyh1c2VycywgJ2FnZScpO1xuICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBtYXBWYWx1ZXMob2JqZWN0LCBpdGVyYXRlZSkge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGl0ZXJhdGVlID0gYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAzKTtcblxuICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwVmFsdWVzO1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5tYXhgIGFuZCBgXy5taW5gIHdoaWNoIGFjY2VwdHMgYVxuICogYGNvbXBhcmF0b3JgIHRvIGRldGVybWluZSB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciB1c2VkIHRvIGNvbXBhcmUgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlRXh0cmVtdW0oYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjdXJyZW50ID0gaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgaWYgKGN1cnJlbnQgIT0gbnVsbCAmJiAoY29tcHV0ZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKGN1cnJlbnQgPT09IGN1cnJlbnQgJiYgIWlzU3ltYm9sKGN1cnJlbnQpKVxuICAgICAgICAgIDogY29tcGFyYXRvcihjdXJyZW50LCBjb21wdXRlZClcbiAgICAgICAgKSkge1xuICAgICAgdmFyIGNvbXB1dGVkID0gY3VycmVudCxcbiAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRXh0cmVtdW07XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmd0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlR3QodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA+IG90aGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHdDtcbiIsInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlR3QgPSByZXF1aXJlKCcuL19iYXNlR3QnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBNYXRoXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubWF4KFs0LCAyLCA4LCA2XSk7XG4gKiAvLyA9PiA4XG4gKlxuICogXy5tYXgoW10pO1xuICogLy8gPT4gdW5kZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIG1heChhcnJheSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXg7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxKG9iamVjdFtrZXldLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduTWVyZ2VWYWx1ZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1Y3Rvci4gKi9cbnZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjguMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2VvZiBDdG9yICYmXG4gICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuIiwiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCwgdW5sZXNzIGBrZXlgIGlzIFwiX19wcm90b19fXCIgb3IgXCJjb25zdHJ1Y3RvclwiLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2FmZUdldDtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHBsYWluIG9iamVjdCBmbGF0dGVuaW5nIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZ1xuICoga2V5ZWQgcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgcGxhaW4gb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBuZXcgRm9vKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIF8udG9QbGFpbk9iamVjdChuZXcgRm9vKSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfVxuICovXG5mdW5jdGlvbiB0b1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHZhbHVlLCBrZXlzSW4odmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1BsYWluT2JqZWN0O1xuIiwidmFyIGFzc2lnbk1lcmdlVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25NZXJnZVZhbHVlJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNsb25lVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Nsb25lVHlwZWRBcnJheScpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGluaXRDbG9uZU9iamVjdCA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZU9iamVjdCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0FycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2VPYmplY3QnKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4vaXNQbGFpbk9iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5JyksXG4gICAgc2FmZUdldCA9IHJlcXVpcmUoJy4vX3NhZmVHZXQnKSxcbiAgICB0b1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi90b1BsYWluT2JqZWN0Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgbWVyZ2VzIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gbWVyZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICogIGNvdW50ZXJwYXJ0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgbWVyZ2VGdW5jLCBjdXN0b21pemVyLCBzdGFjaykge1xuICB2YXIgb2JqVmFsdWUgPSBzYWZlR2V0KG9iamVjdCwga2V5KSxcbiAgICAgIHNyY1ZhbHVlID0gc2FmZUdldChzb3VyY2UsIGtleSksXG4gICAgICBzdGFja2VkID0gc3RhY2suZ2V0KHNyY1ZhbHVlKTtcblxuICBpZiAoc3RhY2tlZCkge1xuICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHN0YWNrZWQpO1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgPyBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIHZhciBpc0NvbW1vbiA9IG5ld1ZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksXG4gICAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiBpc0J1ZmZlcihzcmNWYWx1ZSksXG4gICAgICAgIGlzVHlwZWQgPSAhaXNBcnIgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO1xuXG4gICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICBpZiAoaXNBcnIgfHwgaXNCdWZmIHx8IGlzVHlwZWQpIHtcbiAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNBcnJheUxpa2VPYmplY3Qob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gY29weUFycmF5KG9ialZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzQnVmZikge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lQnVmZmVyKHNyY1ZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzVHlwZWQpIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgbmV3VmFsdWUgPSBjbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG5ld1ZhbHVlID0gW107XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc3JjVmFsdWUpIHx8IGlzQXJndW1lbnRzKHNyY1ZhbHVlKSkge1xuICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgIGlmIChpc0FyZ3VtZW50cyhvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKCFpc09iamVjdChvYmpWYWx1ZSkgfHwgaXNGdW5jdGlvbihvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBpbml0Q2xvbmVPYmplY3Qoc3JjVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChpc0NvbW1vbikge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHN0YWNrLnNldChzcmNWYWx1ZSwgbmV3VmFsdWUpO1xuICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgc3RhY2tbJ2RlbGV0ZSddKHNyY1ZhbHVlKTtcbiAgfVxuICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlRGVlcDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGJhc2VNZXJnZURlZXAgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2VEZWVwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lcmdlYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYmFzZUZvcihzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIGJhc2VNZXJnZSwgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH0sIGtleXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlO1xuIiwidmFyIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXNzaWduZXI7XG4iLCJ2YXIgYmFzZU1lcmdlID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlJyksXG4gICAgY3JlYXRlQXNzaWduZXIgPSByZXF1aXJlKCcuL19jcmVhdGVBc3NpZ25lcicpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBtZXJnZXMgb3duIGFuZFxuICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICogc2tpcHBlZCBpZiBhIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzXG4gKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gKiBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC41LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHtcbiAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAqIH07XG4gKlxuICogdmFyIG90aGVyID0ge1xuICogICAnYSc6IFt7ICdjJzogMyB9LCB7ICdlJzogNSB9XVxuICogfTtcbiAqXG4gKiBfLm1lcmdlKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICovXG52YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpIHtcbiAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubHRgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VMdCh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlIDwgb3RoZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUx0O1xuIiwidmFyIGJhc2VFeHRyZW11bSA9IHJlcXVpcmUoJy4vX2Jhc2VFeHRyZW11bScpLFxuICAgIGJhc2VMdCA9IHJlcXVpcmUoJy4vX2Jhc2VMdCcpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICogYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE1hdGhcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAqIC8vID0+IDJcbiAqXG4gKiBfLm1pbihbXSk7XG4gKiAvLyA9PiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBpZGVudGl0eSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbjtcbiIsInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTHQgPSByZXF1aXJlKCcuL19iYXNlTHQnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1pbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTWF0aFxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAqXG4gKiBfLm1pbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKi9cbmZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbkJ5O1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbm93O1xuIiwidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBwYXRoIGNyZWF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDEsXG4gICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgd2hpbGUgKG5lc3RlZCAhPSBudWxsICYmICsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pLFxuICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycgfHwga2V5ID09PSAnY29uc3RydWN0b3InIHx8IGtleSA9PT0gJ3Byb3RvdHlwZScpIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ICE9IGxhc3RJbmRleCkge1xuICAgICAgdmFyIG9ialZhbHVlID0gbmVzdGVkW2tleV07XG4gICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IGlzT2JqZWN0KG9ialZhbHVlKVxuICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICA6IChpc0luZGV4KHBhdGhbaW5kZXggKyAxXSkgPyBbXSA6IHt9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXNzaWduVmFsdWUobmVzdGVkLCBrZXksIG5ld1ZhbHVlKTtcbiAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXQ7XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlU2V0ID0gcmVxdWlyZSgnLi9fYmFzZVNldCcpLFxuICAgIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGhzLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IHt9O1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHBhdGggPSBwYXRoc1tpbmRleF0sXG4gICAgICAgIHZhbHVlID0gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuXG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgIGJhc2VTZXQocmVzdWx0LCBjYXN0UGF0aChwYXRoLCBvYmplY3QpLCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVBpY2tCeTtcbiIsInZhciBiYXNlUGlja0J5ID0gcmVxdWlyZSgnLi9fYmFzZVBpY2tCeScpLFxuICAgIGhhc0luID0gcmVxdWlyZSgnLi9oYXNJbicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnBpY2tgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICogcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpIHtcbiAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICByZXR1cm4gaGFzSW4ob2JqZWN0LCBwYXRoKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVBpY2s7XG4iLCJ2YXIgZmxhdHRlbiA9IHJlcXVpcmUoJy4vZmxhdHRlbicpLFxuICAgIG92ZXJSZXN0ID0gcmVxdWlyZSgnLi9fb3ZlclJlc3QnKSxcbiAgICBzZXRUb1N0cmluZyA9IHJlcXVpcmUoJy4vX3NldFRvU3RyaW5nJyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggZmxhdHRlbnMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gZmxhdFJlc3QoZnVuYykge1xuICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgdW5kZWZpbmVkLCBmbGF0dGVuKSwgZnVuYyArICcnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0UmVzdDtcbiIsInZhciBiYXNlUGljayA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrJyksXG4gICAgZmxhdFJlc3QgPSByZXF1aXJlKCcuL19mbGF0UmVzdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBwaWNrZWQgYG9iamVjdGAgcHJvcGVydGllcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICpcbiAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gKi9cbnZhciBwaWNrID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB7fSA6IGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGljaztcbiIsIi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsLFxuICAgIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmdlYCBhbmQgYF8ucmFuZ2VSaWdodGAgd2hpY2ggZG9lc24ndFxuICogY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAgVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAqL1xuZnVuY3Rpb24gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChuYXRpdmVDZWlsKChlbmQgLSBzdGFydCkgLyAoc3RlcCB8fCAxKSksIDApLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICByZXN1bHRbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF0gPSBzdGFydDtcbiAgICBzdGFydCArPSBzdGVwO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJhbmdlO1xuIiwidmFyIGJhc2VSYW5nZSA9IHJlcXVpcmUoJy4vX2Jhc2VSYW5nZScpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKSxcbiAgICB0b0Zpbml0ZSA9IHJlcXVpcmUoJy4vdG9GaW5pdGUnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYF8ucmFuZ2VgIG9yIGBfLnJhbmdlUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJhbmdlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVSYW5nZShmcm9tUmlnaHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIHN0ZXApIHtcbiAgICBpZiAoc3RlcCAmJiB0eXBlb2Ygc3RlcCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdGFydCwgZW5kLCBzdGVwKSkge1xuICAgICAgZW5kID0gc3RlcCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gRW5zdXJlIHRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICBzdGFydCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgfVxuICAgIHN0ZXAgPSBzdGVwID09PSB1bmRlZmluZWQgPyAoc3RhcnQgPCBlbmQgPyAxIDogLTEpIDogdG9GaW5pdGUoc3RlcCk7XG4gICAgcmV0dXJuIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVJhbmdlO1xuIiwidmFyIGNyZWF0ZVJhbmdlID0gcmVxdWlyZSgnLi9fY3JlYXRlUmFuZ2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAqIGBzdGFydGAgaXMgc3BlY2lmaWVkIHdpdGhvdXQgYW4gYGVuZGAgb3IgYHN0ZXBgLiBJZiBgZW5kYCBpcyBub3Qgc3BlY2lmaWVkLFxuICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICpcbiAqICoqTm90ZToqKiBKYXZhU2NyaXB0IGZvbGxvd3MgdGhlIElFRUUtNzU0IHN0YW5kYXJkIGZvciByZXNvbHZpbmdcbiAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ucmFuZ2UoNCk7XG4gKiAvLyA9PiBbMCwgMSwgMiwgM11cbiAqXG4gKiBfLnJhbmdlKC00KTtcbiAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICpcbiAqIF8ucmFuZ2UoMSwgNSk7XG4gKiAvLyA9PiBbMSwgMiwgMywgNF1cbiAqXG4gKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAqIC8vID0+IFswLCA1LCAxMCwgMTVdXG4gKlxuICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gKlxuICogXy5yYW5nZSgxLCA0LCAwKTtcbiAqIC8vID0+IFsxLCAxLCAxXVxuICpcbiAqIF8ucmFuZ2UoMCk7XG4gKiAvLyA9PiBbXVxuICovXG52YXIgcmFuZ2UgPSBjcmVhdGVSYW5nZSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJhbmdlO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0QnlgIHdoaWNoIHVzZXMgYGNvbXBhcmVyYCB0byBkZWZpbmUgdGhlXG4gKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gKiB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyZXIgVGhlIGZ1bmN0aW9uIHRvIGRlZmluZSBzb3J0IG9yZGVyLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTb3J0QnkoYXJyYXksIGNvbXBhcmVyKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGFycmF5W2xlbmd0aF0gPSBhcnJheVtsZW5ndGhdLnZhbHVlO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU29ydEJ5O1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKipcbiAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgdmFsdWVgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICBpZiAodmFsdWUgIT09IG90aGVyKSB7XG4gICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICB2YWxJc1JlZmxleGl2ZSA9IHZhbHVlID09PSB2YWx1ZSxcbiAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgb3RoSXNOdWxsID0gb3RoZXIgPT09IG51bGwsXG4gICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgIGlmICgoIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wgJiYgIXZhbElzU3ltYm9sICYmIHZhbHVlID4gb3RoZXIpIHx8XG4gICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAoIXZhbElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgKG90aElzTnVsbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUFzY2VuZGluZztcbiIsInZhciBjb21wYXJlQXNjZW5kaW5nID0gcmVxdWlyZSgnLi9fY29tcGFyZUFzY2VuZGluZycpO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICogYW5kIHN0YWJsZSBzb3J0IHRoZW0uXG4gKlxuICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAqIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXJcbiAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW5bXXxzdHJpbmdbXX0gb3JkZXJzIFRoZSBvcmRlciB0byBzb3J0IGJ5IGZvciBlYWNoIHByb3BlcnR5LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICBvdGhDcml0ZXJpYSA9IG90aGVyLmNyaXRlcmlhLFxuICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBpZiAoaW5kZXggPj0gb3JkZXJzTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgb3JkZXIgPSBvcmRlcnNbaW5kZXhdO1xuICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgIH1cbiAgfVxuICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gIC8vIGBvYmplY3RgIGFuZCBgb3RoZXJgLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL3B1bGwvMTI0N1xuICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAvL1xuICAvLyBUaGlzIGFsc28gZW5zdXJlcyBhIHN0YWJsZSBzb3J0IGluIFY4IGFuZCBvdGhlciBlbmdpbmVzLlxuICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVNdWx0aXBsZTtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTWFwID0gcmVxdWlyZSgnLi9fYmFzZU1hcCcpLFxuICAgIGJhc2VTb3J0QnkgPSByZXF1aXJlKCcuL19iYXNlU29ydEJ5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgY29tcGFyZU11bHRpcGxlID0gcmVxdWlyZSgnLi9fY29tcGFyZU11bHRpcGxlJyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm9yZGVyQnlgIHdpdGhvdXQgcGFyYW0gZ3VhcmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IGl0ZXJhdGVlcyBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICBpZiAoaXRlcmF0ZWVzLmxlbmd0aCkge1xuICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgIGlmIChpc0FycmF5KGl0ZXJhdGVlKSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gYmFzZUdldCh2YWx1ZSwgaXRlcmF0ZWUubGVuZ3RoID09PSAxID8gaXRlcmF0ZWVbMF0gOiBpdGVyYXRlZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVyYXRlZTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpdGVyYXRlZXMgPSBbaWRlbnRpdHldO1xuICB9XG5cbiAgdmFyIGluZGV4ID0gLTE7XG4gIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgYmFzZVVuYXJ5KGJhc2VJdGVyYXRlZSkpO1xuXG4gIHZhciByZXN1bHQgPSBiYXNlTWFwKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICB2YXIgY3JpdGVyaWEgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiB7ICdjcml0ZXJpYSc6IGNyaXRlcmlhLCAnaW5kZXgnOiArK2luZGV4LCAndmFsdWUnOiB2YWx1ZSB9O1xuICB9KTtcblxuICByZXR1cm4gYmFzZVNvcnRCeShyZXN1bHQsIGZ1bmN0aW9uKG9iamVjdCwgb3RoZXIpIHtcbiAgICByZXR1cm4gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycyk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VPcmRlckJ5O1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKSxcbiAgICBiYXNlT3JkZXJCeSA9IHJlcXVpcmUoJy4vX2Jhc2VPcmRlckJ5JyksXG4gICAgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzLCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSByZXN1bHRzIG9mXG4gKiBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBhIGNvbGxlY3Rpb24gdGhydSBlYWNoIGl0ZXJhdGVlLiBUaGlzIG1ldGhvZFxuICogcGVyZm9ybXMgYSBzdGFibGUgc29ydCwgdGhhdCBpcywgaXQgcHJlc2VydmVzIHRoZSBvcmlnaW5hbCBzb3J0IG9yZGVyIG9mXG4gKiBlcXVhbCBlbGVtZW50cy4gVGhlIGl0ZXJhdGVlcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiAzMCB9LFxuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9XG4gKiBdO1xuICpcbiAqIF8uc29ydEJ5KHVzZXJzLCBbZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyOyB9XSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDMwXV1cbiAqXG4gKiBfLnNvcnRCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM0XSwgWydiYXJuZXknLCAzNl0sIFsnZnJlZCcsIDMwXSwgWydmcmVkJywgNDhdXVxuICovXG52YXIgc29ydEJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWVzKSB7XG4gIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIGxlbmd0aCA9IGl0ZXJhdGVlcy5sZW5ndGg7XG4gIGlmIChsZW5ndGggPiAxICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdKSkge1xuICAgIGl0ZXJhdGVlcyA9IFtdO1xuICB9IGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaXNJdGVyYXRlZUNhbGwoaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0sIGl0ZXJhdGVlc1syXSkpIHtcbiAgICBpdGVyYXRlZXMgPSBbaXRlcmF0ZWVzWzBdXTtcbiAgfVxuICByZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgYmFzZUZsYXR0ZW4oaXRlcmF0ZWVzLCAxKSwgW10pO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydEJ5O1xuIiwidmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKiogVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzLiAqL1xudmFyIGlkQ291bnRlciA9IDA7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIElELiBJZiBgcHJlZml4YCBpcyBnaXZlbiwgdGhlIElEIGlzIGFwcGVuZGVkIHRvIGl0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge3N0cmluZ30gW3ByZWZpeD0nJ10gVGhlIHZhbHVlIHRvIHByZWZpeCB0aGUgSUQgd2l0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAqXG4gKiBfLnVuaXF1ZUlkKCk7XG4gKiAvLyA9PiAnMTA1J1xuICovXG5mdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gIHJldHVybiB0b1N0cmluZyhwcmVmaXgpICsgaWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pcXVlSWQ7XG4iLCIvKipcbiAqIFRoaXMgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy56aXBPYmplY3RgIHdoaWNoIGFzc2lnbnMgdmFsdWVzIHVzaW5nIGBhc3NpZ25GdW5jYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25GdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVppcE9iamVjdChwcm9wcywgdmFsdWVzLCBhc3NpZ25GdW5jKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoLFxuICAgICAgdmFsc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGluZGV4IDwgdmFsc0xlbmd0aCA/IHZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgYXNzaWduRnVuYyhyZXN1bHQsIHByb3BzW2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVppcE9iamVjdDtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZVppcE9iamVjdCA9IHJlcXVpcmUoJy4vX2Jhc2VaaXBPYmplY3QnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICogb25lIG9mIHByb3BlcnR5IGlkZW50aWZpZXJzIGFuZCBvbmUgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjQuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBbcHJvcHM9W11dIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbmZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGFzc2lnblZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB6aXBPYmplY3Q7XG4iLCIvKiBnbG9iYWwgd2luZG93ICovXG5cbnZhciBsb2Rhc2g7XG5cbmlmICh0eXBlb2YgcmVxdWlyZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gIHRyeSB7XG4gICAgbG9kYXNoID0ge1xuICAgICAgY2xvbmVEZWVwOiByZXF1aXJlKFwibG9kYXNoL2Nsb25lRGVlcFwiKSxcbiAgICAgIGNvbnN0YW50OiByZXF1aXJlKFwibG9kYXNoL2NvbnN0YW50XCIpLFxuICAgICAgZGVmYXVsdHM6IHJlcXVpcmUoXCJsb2Rhc2gvZGVmYXVsdHNcIiksXG4gICAgICBlYWNoOiByZXF1aXJlKFwibG9kYXNoL2VhY2hcIiksXG4gICAgICBmaWx0ZXI6IHJlcXVpcmUoXCJsb2Rhc2gvZmlsdGVyXCIpLFxuICAgICAgZmluZDogcmVxdWlyZShcImxvZGFzaC9maW5kXCIpLFxuICAgICAgZmxhdHRlbjogcmVxdWlyZShcImxvZGFzaC9mbGF0dGVuXCIpLFxuICAgICAgZm9yRWFjaDogcmVxdWlyZShcImxvZGFzaC9mb3JFYWNoXCIpLFxuICAgICAgZm9ySW46IHJlcXVpcmUoXCJsb2Rhc2gvZm9ySW5cIiksXG4gICAgICBoYXM6ICByZXF1aXJlKFwibG9kYXNoL2hhc1wiKSxcbiAgICAgIGlzVW5kZWZpbmVkOiByZXF1aXJlKFwibG9kYXNoL2lzVW5kZWZpbmVkXCIpLFxuICAgICAgbGFzdDogcmVxdWlyZShcImxvZGFzaC9sYXN0XCIpLFxuICAgICAgbWFwOiByZXF1aXJlKFwibG9kYXNoL21hcFwiKSxcbiAgICAgIG1hcFZhbHVlczogcmVxdWlyZShcImxvZGFzaC9tYXBWYWx1ZXNcIiksXG4gICAgICBtYXg6IHJlcXVpcmUoXCJsb2Rhc2gvbWF4XCIpLFxuICAgICAgbWVyZ2U6IHJlcXVpcmUoXCJsb2Rhc2gvbWVyZ2VcIiksXG4gICAgICBtaW46IHJlcXVpcmUoXCJsb2Rhc2gvbWluXCIpLFxuICAgICAgbWluQnk6IHJlcXVpcmUoXCJsb2Rhc2gvbWluQnlcIiksXG4gICAgICBub3c6IHJlcXVpcmUoXCJsb2Rhc2gvbm93XCIpLFxuICAgICAgcGljazogcmVxdWlyZShcImxvZGFzaC9waWNrXCIpLFxuICAgICAgcmFuZ2U6IHJlcXVpcmUoXCJsb2Rhc2gvcmFuZ2VcIiksXG4gICAgICByZWR1Y2U6IHJlcXVpcmUoXCJsb2Rhc2gvcmVkdWNlXCIpLFxuICAgICAgc29ydEJ5OiByZXF1aXJlKFwibG9kYXNoL3NvcnRCeVwiKSxcbiAgICAgIHVuaXF1ZUlkOiByZXF1aXJlKFwibG9kYXNoL3VuaXF1ZUlkXCIpLFxuICAgICAgdmFsdWVzOiByZXF1aXJlKFwibG9kYXNoL3ZhbHVlc1wiKSxcbiAgICAgIHppcE9iamVjdDogcmVxdWlyZShcImxvZGFzaC96aXBPYmplY3RcIiksXG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgfVxufVxuXG5pZiAoIWxvZGFzaCkge1xuICBsb2Rhc2ggPSB3aW5kb3cuXztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsb2Rhc2g7XG4iLCIvKlxuICogU2ltcGxlIGRvdWJseSBsaW5rZWQgbGlzdCBpbXBsZW1lbnRhdGlvbiBkZXJpdmVkIGZyb20gQ29ybWVuLCBldCBhbC4sXG4gKiBcIkludHJvZHVjdGlvbiB0byBBbGdvcml0aG1zXCIuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBMaXN0O1xuXG5mdW5jdGlvbiBMaXN0KCkge1xuICB2YXIgc2VudGluZWwgPSB7fTtcbiAgc2VudGluZWwuX25leHQgPSBzZW50aW5lbC5fcHJldiA9IHNlbnRpbmVsO1xuICB0aGlzLl9zZW50aW5lbCA9IHNlbnRpbmVsO1xufVxuXG5MaXN0LnByb3RvdHlwZS5kZXF1ZXVlID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICB2YXIgZW50cnkgPSBzZW50aW5lbC5fcHJldjtcbiAgaWYgKGVudHJ5ICE9PSBzZW50aW5lbCkge1xuICAgIHVubGluayhlbnRyeSk7XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9XG59O1xuXG5MaXN0LnByb3RvdHlwZS5lbnF1ZXVlID0gZnVuY3Rpb24oZW50cnkpIHtcbiAgdmFyIHNlbnRpbmVsID0gdGhpcy5fc2VudGluZWw7XG4gIGlmIChlbnRyeS5fcHJldiAmJiBlbnRyeS5fbmV4dCkge1xuICAgIHVubGluayhlbnRyeSk7XG4gIH1cbiAgZW50cnkuX25leHQgPSBzZW50aW5lbC5fbmV4dDtcbiAgc2VudGluZWwuX25leHQuX3ByZXYgPSBlbnRyeTtcbiAgc2VudGluZWwuX25leHQgPSBlbnRyeTtcbiAgZW50cnkuX3ByZXYgPSBzZW50aW5lbDtcbn07XG5cbkxpc3QucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzdHJzID0gW107XG4gIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICB2YXIgY3VyciA9IHNlbnRpbmVsLl9wcmV2O1xuICB3aGlsZSAoY3VyciAhPT0gc2VudGluZWwpIHtcbiAgICBzdHJzLnB1c2goSlNPTi5zdHJpbmdpZnkoY3VyciwgZmlsdGVyT3V0TGlua3MpKTtcbiAgICBjdXJyID0gY3Vyci5fcHJldjtcbiAgfVxuICByZXR1cm4gXCJbXCIgKyBzdHJzLmpvaW4oXCIsIFwiKSArIFwiXVwiO1xufTtcblxuZnVuY3Rpb24gdW5saW5rKGVudHJ5KSB7XG4gIGVudHJ5Ll9wcmV2Ll9uZXh0ID0gZW50cnkuX25leHQ7XG4gIGVudHJ5Ll9uZXh0Ll9wcmV2ID0gZW50cnkuX3ByZXY7XG4gIGRlbGV0ZSBlbnRyeS5fbmV4dDtcbiAgZGVsZXRlIGVudHJ5Ll9wcmV2O1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJPdXRMaW5rcyhrLCB2KSB7XG4gIGlmIChrICE9PSBcIl9uZXh0XCIgJiYgayAhPT0gXCJfcHJldlwiKSB7XG4gICAgcmV0dXJuIHY7XG4gIH1cbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhsaWJcIikuR3JhcGg7XG52YXIgTGlzdCA9IHJlcXVpcmUoXCIuL2RhdGEvbGlzdFwiKTtcblxuLypcbiAqIEEgZ3JlZWR5IGhldXJpc3RpYyBmb3IgZmluZGluZyBhIGZlZWRiYWNrIGFyYyBzZXQgZm9yIGEgZ3JhcGguIEEgZmVlZGJhY2tcbiAqIGFyYyBzZXQgaXMgYSBzZXQgb2YgZWRnZXMgdGhhdCBjYW4gYmUgcmVtb3ZlZCB0byBtYWtlIGEgZ3JhcGggYWN5Y2xpYy5cbiAqIFRoZSBhbGdvcml0aG0gY29tZXMgZnJvbTogUC4gRWFkZXMsIFguIExpbiwgYW5kIFcuIEYuIFNteXRoLCBcIkEgZmFzdCBhbmRcbiAqIGVmZmVjdGl2ZSBoZXVyaXN0aWMgZm9yIHRoZSBmZWVkYmFjayBhcmMgc2V0IHByb2JsZW0uXCIgVGhpcyBpbXBsZW1lbnRhdGlvblxuICogYWRqdXN0cyB0aGF0IGZyb20gdGhlIHBhcGVyIHRvIGFsbG93IGZvciB3ZWlnaHRlZCBlZGdlcy5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBncmVlZHlGQVM7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GTiA9IF8uY29uc3RhbnQoMSk7XG5cbmZ1bmN0aW9uIGdyZWVkeUZBUyhnLCB3ZWlnaHRGbikge1xuICBpZiAoZy5ub2RlQ291bnQoKSA8PSAxKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciBzdGF0ZSA9IGJ1aWxkU3RhdGUoZywgd2VpZ2h0Rm4gfHwgREVGQVVMVF9XRUlHSFRfRk4pO1xuICB2YXIgcmVzdWx0cyA9IGRvR3JlZWR5RkFTKHN0YXRlLmdyYXBoLCBzdGF0ZS5idWNrZXRzLCBzdGF0ZS56ZXJvSWR4KTtcblxuICAvLyBFeHBhbmQgbXVsdGktZWRnZXNcbiAgcmV0dXJuIF8uZmxhdHRlbihfLm1hcChyZXN1bHRzLCBmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIGcub3V0RWRnZXMoZS52LCBlLncpO1xuICB9KSwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGRvR3JlZWR5RkFTKGcsIGJ1Y2tldHMsIHplcm9JZHgpIHtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgdmFyIHNvdXJjZXMgPSBidWNrZXRzW2J1Y2tldHMubGVuZ3RoIC0gMV07XG4gIHZhciBzaW5rcyA9IGJ1Y2tldHNbMF07XG5cbiAgdmFyIGVudHJ5O1xuICB3aGlsZSAoZy5ub2RlQ291bnQoKSkge1xuICAgIHdoaWxlICgoZW50cnkgPSBzaW5rcy5kZXF1ZXVlKCkpKSAgIHsgcmVtb3ZlTm9kZShnLCBidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSk7IH1cbiAgICB3aGlsZSAoKGVudHJ5ID0gc291cmNlcy5kZXF1ZXVlKCkpKSB7IHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnkpOyB9XG4gICAgaWYgKGcubm9kZUNvdW50KCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSBidWNrZXRzLmxlbmd0aCAtIDI7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgZW50cnkgPSBidWNrZXRzW2ldLmRlcXVldWUoKTtcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuY29uY2F0KHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnksIHRydWUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiByZW1vdmVOb2RlKGcsIGJ1Y2tldHMsIHplcm9JZHgsIGVudHJ5LCBjb2xsZWN0UHJlZGVjZXNzb3JzKSB7XG4gIHZhciByZXN1bHRzID0gY29sbGVjdFByZWRlY2Vzc29ycyA/IFtdIDogdW5kZWZpbmVkO1xuXG4gIF8uZm9yRWFjaChnLmluRWRnZXMoZW50cnkudiksIGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICB2YXIgd2VpZ2h0ID0gZy5lZGdlKGVkZ2UpO1xuICAgIHZhciB1RW50cnkgPSBnLm5vZGUoZWRnZS52KTtcblxuICAgIGlmIChjb2xsZWN0UHJlZGVjZXNzb3JzKSB7XG4gICAgICByZXN1bHRzLnB1c2goeyB2OiBlZGdlLnYsIHc6IGVkZ2UudyB9KTtcbiAgICB9XG5cbiAgICB1RW50cnkub3V0IC09IHdlaWdodDtcbiAgICBhc3NpZ25CdWNrZXQoYnVja2V0cywgemVyb0lkeCwgdUVudHJ5KTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcub3V0RWRnZXMoZW50cnkudiksIGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICB2YXIgd2VpZ2h0ID0gZy5lZGdlKGVkZ2UpO1xuICAgIHZhciB3ID0gZWRnZS53O1xuICAgIHZhciB3RW50cnkgPSBnLm5vZGUodyk7XG4gICAgd0VudHJ5W1wiaW5cIl0gLT0gd2VpZ2h0O1xuICAgIGFzc2lnbkJ1Y2tldChidWNrZXRzLCB6ZXJvSWR4LCB3RW50cnkpO1xuICB9KTtcblxuICBnLnJlbW92ZU5vZGUoZW50cnkudik7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkU3RhdGUoZywgd2VpZ2h0Rm4pIHtcbiAgdmFyIGZhc0dyYXBoID0gbmV3IEdyYXBoKCk7XG4gIHZhciBtYXhJbiA9IDA7XG4gIHZhciBtYXhPdXQgPSAwO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBmYXNHcmFwaC5zZXROb2RlKHYsIHsgdjogdiwgXCJpblwiOiAwLCBvdXQ6IDAgfSk7XG4gIH0pO1xuXG4gIC8vIEFnZ3JlZ2F0ZSB3ZWlnaHRzIG9uIG5vZGVzLCBidXQgYWxzbyBzdW0gdGhlIHdlaWdodHMgYWNyb3NzIG11bHRpLWVkZ2VzXG4gIC8vIGludG8gYSBzaW5nbGUgZWRnZSBmb3IgdGhlIGZhc0dyYXBoLlxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHByZXZXZWlnaHQgPSBmYXNHcmFwaC5lZGdlKGUudiwgZS53KSB8fCAwO1xuICAgIHZhciB3ZWlnaHQgPSB3ZWlnaHRGbihlKTtcbiAgICB2YXIgZWRnZVdlaWdodCA9IHByZXZXZWlnaHQgKyB3ZWlnaHQ7XG4gICAgZmFzR3JhcGguc2V0RWRnZShlLnYsIGUudywgZWRnZVdlaWdodCk7XG4gICAgbWF4T3V0ID0gTWF0aC5tYXgobWF4T3V0LCBmYXNHcmFwaC5ub2RlKGUudikub3V0ICs9IHdlaWdodCk7XG4gICAgbWF4SW4gID0gTWF0aC5tYXgobWF4SW4sICBmYXNHcmFwaC5ub2RlKGUudylbXCJpblwiXSAgKz0gd2VpZ2h0KTtcbiAgfSk7XG5cbiAgdmFyIGJ1Y2tldHMgPSBfLnJhbmdlKG1heE91dCArIG1heEluICsgMykubWFwKGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IExpc3QoKTsgfSk7XG4gIHZhciB6ZXJvSWR4ID0gbWF4SW4gKyAxO1xuXG4gIF8uZm9yRWFjaChmYXNHcmFwaC5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIGZhc0dyYXBoLm5vZGUodikpO1xuICB9KTtcblxuICByZXR1cm4geyBncmFwaDogZmFzR3JhcGgsIGJ1Y2tldHM6IGJ1Y2tldHMsIHplcm9JZHg6IHplcm9JZHggfTtcbn1cblxuZnVuY3Rpb24gYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIGVudHJ5KSB7XG4gIGlmICghZW50cnkub3V0KSB7XG4gICAgYnVja2V0c1swXS5lbnF1ZXVlKGVudHJ5KTtcbiAgfSBlbHNlIGlmICghZW50cnlbXCJpblwiXSkge1xuICAgIGJ1Y2tldHNbYnVja2V0cy5sZW5ndGggLSAxXS5lbnF1ZXVlKGVudHJ5KTtcbiAgfSBlbHNlIHtcbiAgICBidWNrZXRzW2VudHJ5Lm91dCAtIGVudHJ5W1wiaW5cIl0gKyB6ZXJvSWR4XS5lbnF1ZXVlKGVudHJ5KTtcbiAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIGdyZWVkeUZBUyA9IHJlcXVpcmUoXCIuL2dyZWVkeS1mYXNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBydW46IHJ1bixcbiAgdW5kbzogdW5kb1xufTtcblxuZnVuY3Rpb24gcnVuKGcpIHtcbiAgdmFyIGZhcyA9IChnLmdyYXBoKCkuYWN5Y2xpY2VyID09PSBcImdyZWVkeVwiXG4gICAgPyBncmVlZHlGQVMoZywgd2VpZ2h0Rm4oZykpXG4gICAgOiBkZnNGQVMoZykpO1xuICBfLmZvckVhY2goZmFzLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGxhYmVsID0gZy5lZGdlKGUpO1xuICAgIGcucmVtb3ZlRWRnZShlKTtcbiAgICBsYWJlbC5mb3J3YXJkTmFtZSA9IGUubmFtZTtcbiAgICBsYWJlbC5yZXZlcnNlZCA9IHRydWU7XG4gICAgZy5zZXRFZGdlKGUudywgZS52LCBsYWJlbCwgXy51bmlxdWVJZChcInJldlwiKSk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHdlaWdodEZuKGcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgcmV0dXJuIGcuZWRnZShlKS53ZWlnaHQ7XG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZnNGQVMoZykge1xuICB2YXIgZmFzID0gW107XG4gIHZhciBzdGFjayA9IHt9O1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgaWYgKF8uaGFzKHZpc2l0ZWQsIHYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIHN0YWNrW3ZdID0gdHJ1ZTtcbiAgICBfLmZvckVhY2goZy5vdXRFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgaWYgKF8uaGFzKHN0YWNrLCBlLncpKSB7XG4gICAgICAgIGZhcy5wdXNoKGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGZzKGUudyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZGVsZXRlIHN0YWNrW3ZdO1xuICB9XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZGZzKTtcbiAgcmV0dXJuIGZhcztcbn1cblxuZnVuY3Rpb24gdW5kbyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgbGFiZWwgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKGxhYmVsLnJldmVyc2VkKSB7XG4gICAgICBnLnJlbW92ZUVkZ2UoZSk7XG5cbiAgICAgIHZhciBmb3J3YXJkTmFtZSA9IGxhYmVsLmZvcndhcmROYW1lO1xuICAgICAgZGVsZXRlIGxhYmVsLnJldmVyc2VkO1xuICAgICAgZGVsZXRlIGxhYmVsLmZvcndhcmROYW1lO1xuICAgICAgZy5zZXRFZGdlKGUudywgZS52LCBsYWJlbCwgZm9yd2FyZE5hbWUpO1xuICAgIH1cbiAgfSk7XG59XG4iLCIvKiBlc2xpbnQgXCJuby1jb25zb2xlXCI6IG9mZiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaGxpYlwiKS5HcmFwaDtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFkZER1bW15Tm9kZTogYWRkRHVtbXlOb2RlLFxuICBzaW1wbGlmeTogc2ltcGxpZnksXG4gIGFzTm9uQ29tcG91bmRHcmFwaDogYXNOb25Db21wb3VuZEdyYXBoLFxuICBzdWNjZXNzb3JXZWlnaHRzOiBzdWNjZXNzb3JXZWlnaHRzLFxuICBwcmVkZWNlc3NvcldlaWdodHM6IHByZWRlY2Vzc29yV2VpZ2h0cyxcbiAgaW50ZXJzZWN0UmVjdDogaW50ZXJzZWN0UmVjdCxcbiAgYnVpbGRMYXllck1hdHJpeDogYnVpbGRMYXllck1hdHJpeCxcbiAgbm9ybWFsaXplUmFua3M6IG5vcm1hbGl6ZVJhbmtzLFxuICByZW1vdmVFbXB0eVJhbmtzOiByZW1vdmVFbXB0eVJhbmtzLFxuICBhZGRCb3JkZXJOb2RlOiBhZGRCb3JkZXJOb2RlLFxuICBtYXhSYW5rOiBtYXhSYW5rLFxuICBwYXJ0aXRpb246IHBhcnRpdGlvbixcbiAgdGltZTogdGltZSxcbiAgbm90aW1lOiBub3RpbWVcbn07XG5cbi8qXG4gKiBBZGRzIGEgZHVtbXkgbm9kZSB0byB0aGUgZ3JhcGggYW5kIHJldHVybiB2LlxuICovXG5mdW5jdGlvbiBhZGREdW1teU5vZGUoZywgdHlwZSwgYXR0cnMsIG5hbWUpIHtcbiAgdmFyIHY7XG4gIGRvIHtcbiAgICB2ID0gXy51bmlxdWVJZChuYW1lKTtcbiAgfSB3aGlsZSAoZy5oYXNOb2RlKHYpKTtcblxuICBhdHRycy5kdW1teSA9IHR5cGU7XG4gIGcuc2V0Tm9kZSh2LCBhdHRycyk7XG4gIHJldHVybiB2O1xufVxuXG4vKlxuICogUmV0dXJucyBhIG5ldyBncmFwaCB3aXRoIG9ubHkgc2ltcGxlIGVkZ2VzLiBIYW5kbGVzIGFnZ3JlZ2F0aW9uIG9mIGRhdGFcbiAqIGFzc29jaWF0ZWQgd2l0aCBtdWx0aS1lZGdlcy5cbiAqL1xuZnVuY3Rpb24gc2ltcGxpZnkoZykge1xuICB2YXIgc2ltcGxpZmllZCA9IG5ldyBHcmFwaCgpLnNldEdyYXBoKGcuZ3JhcGgoKSk7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgc2ltcGxpZmllZC5zZXROb2RlKHYsIGcubm9kZSh2KSk7IH0pO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHNpbXBsZUxhYmVsID0gc2ltcGxpZmllZC5lZGdlKGUudiwgZS53KSB8fCB7IHdlaWdodDogMCwgbWlubGVuOiAxIH07XG4gICAgdmFyIGxhYmVsID0gZy5lZGdlKGUpO1xuICAgIHNpbXBsaWZpZWQuc2V0RWRnZShlLnYsIGUudywge1xuICAgICAgd2VpZ2h0OiBzaW1wbGVMYWJlbC53ZWlnaHQgKyBsYWJlbC53ZWlnaHQsXG4gICAgICBtaW5sZW46IE1hdGgubWF4KHNpbXBsZUxhYmVsLm1pbmxlbiwgbGFiZWwubWlubGVuKVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHNpbXBsaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIGFzTm9uQ29tcG91bmRHcmFwaChnKSB7XG4gIHZhciBzaW1wbGlmaWVkID0gbmV3IEdyYXBoKHsgbXVsdGlncmFwaDogZy5pc011bHRpZ3JhcGgoKSB9KS5zZXRHcmFwaChnLmdyYXBoKCkpO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKCFnLmNoaWxkcmVuKHYpLmxlbmd0aCkge1xuICAgICAgc2ltcGxpZmllZC5zZXROb2RlKHYsIGcubm9kZSh2KSk7XG4gICAgfVxuICB9KTtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHNpbXBsaWZpZWQuc2V0RWRnZShlLCBnLmVkZ2UoZSkpO1xuICB9KTtcbiAgcmV0dXJuIHNpbXBsaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHN1Y2Nlc3NvcldlaWdodHMoZykge1xuICB2YXIgd2VpZ2h0TWFwID0gXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHN1Y3MgPSB7fTtcbiAgICBfLmZvckVhY2goZy5vdXRFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgc3Vjc1tlLnddID0gKHN1Y3NbZS53XSB8fCAwKSArIGcuZWRnZShlKS53ZWlnaHQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN1Y3M7XG4gIH0pO1xuICByZXR1cm4gXy56aXBPYmplY3QoZy5ub2RlcygpLCB3ZWlnaHRNYXApO1xufVxuXG5mdW5jdGlvbiBwcmVkZWNlc3NvcldlaWdodHMoZykge1xuICB2YXIgd2VpZ2h0TWFwID0gXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHByZWRzID0ge307XG4gICAgXy5mb3JFYWNoKGcuaW5FZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgcHJlZHNbZS52XSA9IChwcmVkc1tlLnZdIHx8IDApICsgZy5lZGdlKGUpLndlaWdodDtcbiAgICB9KTtcbiAgICByZXR1cm4gcHJlZHM7XG4gIH0pO1xuICByZXR1cm4gXy56aXBPYmplY3QoZy5ub2RlcygpLCB3ZWlnaHRNYXApO1xufVxuXG4vKlxuICogRmluZHMgd2hlcmUgYSBsaW5lIHN0YXJ0aW5nIGF0IHBvaW50ICh7eCwgeX0pIHdvdWxkIGludGVyc2VjdCBhIHJlY3RhbmdsZVxuICogKHt4LCB5LCB3aWR0aCwgaGVpZ2h0fSkgaWYgaXQgd2VyZSBwb2ludGluZyBhdCB0aGUgcmVjdGFuZ2xlJ3MgY2VudGVyLlxuICovXG5mdW5jdGlvbiBpbnRlcnNlY3RSZWN0KHJlY3QsIHBvaW50KSB7XG4gIHZhciB4ID0gcmVjdC54O1xuICB2YXIgeSA9IHJlY3QueTtcblxuICAvLyBSZWN0YW5nbGUgaW50ZXJzZWN0aW9uIGFsZ29yaXRobSBmcm9tOlxuICAvLyBodHRwOi8vbWF0aC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMTA4MTEzL2ZpbmQtZWRnZS1iZXR3ZWVuLXR3by1ib3hlc1xuICB2YXIgZHggPSBwb2ludC54IC0geDtcbiAgdmFyIGR5ID0gcG9pbnQueSAtIHk7XG4gIHZhciB3ID0gcmVjdC53aWR0aCAvIDI7XG4gIHZhciBoID0gcmVjdC5oZWlnaHQgLyAyO1xuXG4gIGlmICghZHggJiYgIWR5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IHBvc3NpYmxlIHRvIGZpbmQgaW50ZXJzZWN0aW9uIGluc2lkZSBvZiB0aGUgcmVjdGFuZ2xlXCIpO1xuICB9XG5cbiAgdmFyIHN4LCBzeTtcbiAgaWYgKE1hdGguYWJzKGR5KSAqIHcgPiBNYXRoLmFicyhkeCkgKiBoKSB7XG4gICAgLy8gSW50ZXJzZWN0aW9uIGlzIHRvcCBvciBib3R0b20gb2YgcmVjdC5cbiAgICBpZiAoZHkgPCAwKSB7XG4gICAgICBoID0gLWg7XG4gICAgfVxuICAgIHN4ID0gaCAqIGR4IC8gZHk7XG4gICAgc3kgPSBoO1xuICB9IGVsc2Uge1xuICAgIC8vIEludGVyc2VjdGlvbiBpcyBsZWZ0IG9yIHJpZ2h0IG9mIHJlY3QuXG4gICAgaWYgKGR4IDwgMCkge1xuICAgICAgdyA9IC13O1xuICAgIH1cbiAgICBzeCA9IHc7XG4gICAgc3kgPSB3ICogZHkgLyBkeDtcbiAgfVxuXG4gIHJldHVybiB7IHg6IHggKyBzeCwgeTogeSArIHN5IH07XG59XG5cbi8qXG4gKiBHaXZlbiBhIERBRyB3aXRoIGVhY2ggbm9kZSBhc3NpZ25lZCBcInJhbmtcIiBhbmQgXCJvcmRlclwiIHByb3BlcnRpZXMsIHRoaXNcbiAqIGZ1bmN0aW9uIHdpbGwgcHJvZHVjZSBhIG1hdHJpeCB3aXRoIHRoZSBpZHMgb2YgZWFjaCBub2RlLlxuICovXG5mdW5jdGlvbiBidWlsZExheWVyTWF0cml4KGcpIHtcbiAgdmFyIGxheWVyaW5nID0gXy5tYXAoXy5yYW5nZShtYXhSYW5rKGcpICsgMSksIGZ1bmN0aW9uKCkgeyByZXR1cm4gW107IH0pO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgdmFyIHJhbmsgPSBub2RlLnJhbms7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHJhbmspKSB7XG4gICAgICBsYXllcmluZ1tyYW5rXVtub2RlLm9yZGVyXSA9IHY7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGxheWVyaW5nO1xufVxuXG4vKlxuICogQWRqdXN0cyB0aGUgcmFua3MgZm9yIGFsbCBub2RlcyBpbiB0aGUgZ3JhcGggc3VjaCB0aGF0IGFsbCBub2RlcyB2IGhhdmVcbiAqIHJhbmsodikgPj0gMCBhbmQgYXQgbGVhc3Qgb25lIG5vZGUgdyBoYXMgcmFuayh3KSA9IDAuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJhbmtzKGcpIHtcbiAgdmFyIG1pbiA9IF8ubWluKF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLnJhbms7IH0pKTtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChfLmhhcyhub2RlLCBcInJhbmtcIikpIHtcbiAgICAgIG5vZGUucmFuayAtPSBtaW47XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlRW1wdHlSYW5rcyhnKSB7XG4gIC8vIFJhbmtzIG1heSBub3Qgc3RhcnQgYXQgMCwgc28gd2UgbmVlZCB0byBvZmZzZXQgdGhlbVxuICB2YXIgb2Zmc2V0ID0gXy5taW4oXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikucmFuazsgfSkpO1xuXG4gIHZhciBsYXllcnMgPSBbXTtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciByYW5rID0gZy5ub2RlKHYpLnJhbmsgLSBvZmZzZXQ7XG4gICAgaWYgKCFsYXllcnNbcmFua10pIHtcbiAgICAgIGxheWVyc1tyYW5rXSA9IFtdO1xuICAgIH1cbiAgICBsYXllcnNbcmFua10ucHVzaCh2KTtcbiAgfSk7XG5cbiAgdmFyIGRlbHRhID0gMDtcbiAgdmFyIG5vZGVSYW5rRmFjdG9yID0gZy5ncmFwaCgpLm5vZGVSYW5rRmFjdG9yO1xuICBfLmZvckVhY2gobGF5ZXJzLCBmdW5jdGlvbih2cywgaSkge1xuICAgIGlmIChfLmlzVW5kZWZpbmVkKHZzKSAmJiBpICUgbm9kZVJhbmtGYWN0b3IgIT09IDApIHtcbiAgICAgIC0tZGVsdGE7XG4gICAgfSBlbHNlIGlmIChkZWx0YSkge1xuICAgICAgXy5mb3JFYWNoKHZzLCBmdW5jdGlvbih2KSB7IGcubm9kZSh2KS5yYW5rICs9IGRlbHRhOyB9KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRCb3JkZXJOb2RlKGcsIHByZWZpeCwgcmFuaywgb3JkZXIpIHtcbiAgdmFyIG5vZGUgPSB7XG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH07XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDQpIHtcbiAgICBub2RlLnJhbmsgPSByYW5rO1xuICAgIG5vZGUub3JkZXIgPSBvcmRlcjtcbiAgfVxuICByZXR1cm4gYWRkRHVtbXlOb2RlKGcsIFwiYm9yZGVyXCIsIG5vZGUsIHByZWZpeCk7XG59XG5cbmZ1bmN0aW9uIG1heFJhbmsoZykge1xuICByZXR1cm4gXy5tYXgoXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHJhbmsgPSBnLm5vZGUodikucmFuaztcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocmFuaykpIHtcbiAgICAgIHJldHVybiByYW5rO1xuICAgIH1cbiAgfSkpO1xufVxuXG4vKlxuICogUGFydGl0aW9uIGEgY29sbGVjdGlvbiBpbnRvIHR3byBncm91cHM6IGBsaHNgIGFuZCBgcmhzYC4gSWYgdGhlIHN1cHBsaWVkXG4gKiBmdW5jdGlvbiByZXR1cm5zIHRydWUgZm9yIGFuIGVudHJ5IGl0IGdvZXMgaW50byBgbGhzYC4gT3RoZXJ3aXNlIGl0IGdvZXNcbiAqIGludG8gYHJocy5cbiAqL1xuZnVuY3Rpb24gcGFydGl0aW9uKGNvbGxlY3Rpb24sIGZuKSB7XG4gIHZhciByZXN1bHQgPSB7IGxoczogW10sIHJoczogW10gfTtcbiAgXy5mb3JFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKGZuKHZhbHVlKSkge1xuICAgICAgcmVzdWx0Lmxocy5wdXNoKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnJocy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKlxuICogUmV0dXJucyBhIG5ldyBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmbmAgd2l0aCBhIHRpbWVyLiBUaGUgd3JhcHBlciBsb2dzIHRoZVxuICogdGltZSBpdCB0YWtlcyB0byBleGVjdXRlIHRoZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gdGltZShuYW1lLCBmbikge1xuICB2YXIgc3RhcnQgPSBfLm5vdygpO1xuICB0cnkge1xuICAgIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIGNvbnNvbGUubG9nKG5hbWUgKyBcIiB0aW1lOiBcIiArIChfLm5vdygpIC0gc3RhcnQpICsgXCJtc1wiKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3RpbWUobmFtZSwgZm4pIHtcbiAgcmV0dXJuIGZuKCk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBydW46IHJ1bixcbiAgdW5kbzogdW5kb1xufTtcblxuLypcbiAqIEJyZWFrcyBhbnkgbG9uZyBlZGdlcyBpbiB0aGUgZ3JhcGggaW50byBzaG9ydCBzZWdtZW50cyB0aGF0IHNwYW4gMSBsYXllclxuICogZWFjaC4gVGhpcyBvcGVyYXRpb24gaXMgdW5kb2FibGUgd2l0aCB0aGUgZGVub3JtYWxpemUgZnVuY3Rpb24uXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGlucHV0IGdyYXBoIGlzIGEgREFHLlxuICogICAgMi4gRWFjaCBub2RlIGluIHRoZSBncmFwaCBoYXMgYSBcInJhbmtcIiBwcm9wZXJ0eS5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbjpcbiAqXG4gKiAgICAxLiBBbGwgZWRnZXMgaW4gdGhlIGdyYXBoIGhhdmUgYSBsZW5ndGggb2YgMS5cbiAqICAgIDIuIER1bW15IG5vZGVzIGFyZSBhZGRlZCB3aGVyZSBlZGdlcyBoYXZlIGJlZW4gc3BsaXQgaW50byBzZWdtZW50cy5cbiAqICAgIDMuIFRoZSBncmFwaCBpcyBhdWdtZW50ZWQgd2l0aCBhIFwiZHVtbXlDaGFpbnNcIiBhdHRyaWJ1dGUgd2hpY2ggY29udGFpbnNcbiAqICAgICAgIHRoZSBmaXJzdCBkdW1teSBpbiBlYWNoIGNoYWluIG9mIGR1bW15IG5vZGVzIHByb2R1Y2VkLlxuICovXG5mdW5jdGlvbiBydW4oZykge1xuICBnLmdyYXBoKCkuZHVtbXlDaGFpbnMgPSBbXTtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZWRnZSkgeyBub3JtYWxpemVFZGdlKGcsIGVkZ2UpOyB9KTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplRWRnZShnLCBlKSB7XG4gIHZhciB2ID0gZS52O1xuICB2YXIgdlJhbmsgPSBnLm5vZGUodikucmFuaztcbiAgdmFyIHcgPSBlLnc7XG4gIHZhciB3UmFuayA9IGcubm9kZSh3KS5yYW5rO1xuICB2YXIgbmFtZSA9IGUubmFtZTtcbiAgdmFyIGVkZ2VMYWJlbCA9IGcuZWRnZShlKTtcbiAgdmFyIGxhYmVsUmFuayA9IGVkZ2VMYWJlbC5sYWJlbFJhbms7XG5cbiAgaWYgKHdSYW5rID09PSB2UmFuayArIDEpIHJldHVybjtcblxuICBnLnJlbW92ZUVkZ2UoZSk7XG5cbiAgdmFyIGR1bW15LCBhdHRycywgaTtcbiAgZm9yIChpID0gMCwgKyt2UmFuazsgdlJhbmsgPCB3UmFuazsgKytpLCArK3ZSYW5rKSB7XG4gICAgZWRnZUxhYmVsLnBvaW50cyA9IFtdO1xuICAgIGF0dHJzID0ge1xuICAgICAgd2lkdGg6IDAsIGhlaWdodDogMCxcbiAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLCBlZGdlT2JqOiBlLFxuICAgICAgcmFuazogdlJhbmtcbiAgICB9O1xuICAgIGR1bW15ID0gdXRpbC5hZGREdW1teU5vZGUoZywgXCJlZGdlXCIsIGF0dHJzLCBcIl9kXCIpO1xuICAgIGlmICh2UmFuayA9PT0gbGFiZWxSYW5rKSB7XG4gICAgICBhdHRycy53aWR0aCA9IGVkZ2VMYWJlbC53aWR0aDtcbiAgICAgIGF0dHJzLmhlaWdodCA9IGVkZ2VMYWJlbC5oZWlnaHQ7XG4gICAgICBhdHRycy5kdW1teSA9IFwiZWRnZS1sYWJlbFwiO1xuICAgICAgYXR0cnMubGFiZWxwb3MgPSBlZGdlTGFiZWwubGFiZWxwb3M7XG4gICAgfVxuICAgIGcuc2V0RWRnZSh2LCBkdW1teSwgeyB3ZWlnaHQ6IGVkZ2VMYWJlbC53ZWlnaHQgfSwgbmFtZSk7XG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGcuZ3JhcGgoKS5kdW1teUNoYWlucy5wdXNoKGR1bW15KTtcbiAgICB9XG4gICAgdiA9IGR1bW15O1xuICB9XG5cbiAgZy5zZXRFZGdlKHYsIHcsIHsgd2VpZ2h0OiBlZGdlTGFiZWwud2VpZ2h0IH0sIG5hbWUpO1xufVxuXG5mdW5jdGlvbiB1bmRvKGcpIHtcbiAgXy5mb3JFYWNoKGcuZ3JhcGgoKS5kdW1teUNoYWlucywgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIHZhciBvcmlnTGFiZWwgPSBub2RlLmVkZ2VMYWJlbDtcbiAgICB2YXIgdztcbiAgICBnLnNldEVkZ2Uobm9kZS5lZGdlT2JqLCBvcmlnTGFiZWwpO1xuICAgIHdoaWxlIChub2RlLmR1bW15KSB7XG4gICAgICB3ID0gZy5zdWNjZXNzb3JzKHYpWzBdO1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgICAgb3JpZ0xhYmVsLnBvaW50cy5wdXNoKHsgeDogbm9kZS54LCB5OiBub2RlLnkgfSk7XG4gICAgICBpZiAobm9kZS5kdW1teSA9PT0gXCJlZGdlLWxhYmVsXCIpIHtcbiAgICAgICAgb3JpZ0xhYmVsLnggPSBub2RlLng7XG4gICAgICAgIG9yaWdMYWJlbC55ID0gbm9kZS55O1xuICAgICAgICBvcmlnTGFiZWwud2lkdGggPSBub2RlLndpZHRoO1xuICAgICAgICBvcmlnTGFiZWwuaGVpZ2h0ID0gbm9kZS5oZWlnaHQ7XG4gICAgICB9XG4gICAgICB2ID0gdztcbiAgICAgIG5vZGUgPSBnLm5vZGUodik7XG4gICAgfVxuICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBsb25nZXN0UGF0aDogbG9uZ2VzdFBhdGgsXG4gIHNsYWNrOiBzbGFja1xufTtcblxuLypcbiAqIEluaXRpYWxpemVzIHJhbmtzIGZvciB0aGUgaW5wdXQgZ3JhcGggdXNpbmcgdGhlIGxvbmdlc3QgcGF0aCBhbGdvcml0aG0uIFRoaXNcbiAqIGFsZ29yaXRobSBzY2FsZXMgd2VsbCBhbmQgaXMgZmFzdCBpbiBwcmFjdGljZSwgaXQgeWllbGRzIHJhdGhlciBwb29yXG4gKiBzb2x1dGlvbnMuIE5vZGVzIGFyZSBwdXNoZWQgdG8gdGhlIGxvd2VzdCBsYXllciBwb3NzaWJsZSwgbGVhdmluZyB0aGUgYm90dG9tXG4gKiByYW5rcyB3aWRlIGFuZCBsZWF2aW5nIGVkZ2VzIGxvbmdlciB0aGFuIG5lY2Vzc2FyeS4gSG93ZXZlciwgZHVlIHRvIGl0c1xuICogc3BlZWQsIHRoaXMgYWxnb3JpdGhtIGlzIGdvb2QgZm9yIGdldHRpbmcgYW4gaW5pdGlhbCByYW5raW5nIHRoYXQgY2FuIGJlIGZlZFxuICogaW50byBvdGhlciBhbGdvcml0aG1zLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIGRvZXMgbm90IG5vcm1hbGl6ZSBsYXllcnMgYmVjYXVzZSBpdCB3aWxsIGJlIHVzZWQgYnkgb3RoZXJcbiAqIGFsZ29yaXRobXMgaW4gbW9zdCBjYXNlcy4gSWYgdXNpbmcgdGhpcyBhbGdvcml0aG0gZGlyZWN0bHksIGJlIHN1cmUgdG9cbiAqIHJ1biBub3JtYWxpemUgYXQgdGhlIGVuZC5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBhIERBRy5cbiAqICAgIDIuIElucHV0IGdyYXBoIG5vZGUgbGFiZWxzIGNhbiBiZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBFYWNoIG5vZGUgd2lsbCBiZSBhc3NpZ24gYW4gKHVubm9ybWFsaXplZCkgXCJyYW5rXCIgcHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIGxvbmdlc3RQYXRoKGcpIHtcbiAgdmFyIHZpc2l0ZWQgPSB7fTtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIHZhciBsYWJlbCA9IGcubm9kZSh2KTtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIHJldHVybiBsYWJlbC5yYW5rO1xuICAgIH1cbiAgICB2aXNpdGVkW3ZdID0gdHJ1ZTtcblxuICAgIHZhciByYW5rID0gXy5taW4oXy5tYXAoZy5vdXRFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgcmV0dXJuIGRmcyhlLncpIC0gZy5lZGdlKGUpLm1pbmxlbjtcbiAgICB9KSk7XG5cbiAgICBpZiAocmFuayA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIHx8IC8vIHJldHVybiB2YWx1ZSBvZiBfLm1hcChbXSkgZm9yIExvZGFzaCAzXG4gICAgICAgIHJhbmsgPT09IHVuZGVmaW5lZCB8fCAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW10pIGZvciBMb2Rhc2ggNFxuICAgICAgICByYW5rID09PSBudWxsKSB7IC8vIHJldHVybiB2YWx1ZSBvZiBfLm1hcChbbnVsbF0pXG4gICAgICByYW5rID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gKGxhYmVsLnJhbmsgPSByYW5rKTtcbiAgfVxuXG4gIF8uZm9yRWFjaChnLnNvdXJjZXMoKSwgZGZzKTtcbn1cblxuLypcbiAqIFJldHVybnMgdGhlIGFtb3VudCBvZiBzbGFjayBmb3IgdGhlIGdpdmVuIGVkZ2UuIFRoZSBzbGFjayBpcyBkZWZpbmVkIGFzIHRoZVxuICogZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsZW5ndGggb2YgdGhlIGVkZ2UgYW5kIGl0cyBtaW5pbXVtIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gc2xhY2soZywgZSkge1xuICByZXR1cm4gZy5ub2RlKGUudykucmFuayAtIGcubm9kZShlLnYpLnJhbmsgLSBnLmVkZ2UoZSkubWlubGVuO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciBzbGFjayA9IHJlcXVpcmUoXCIuL3V0aWxcIikuc2xhY2s7XG5cbm1vZHVsZS5leHBvcnRzID0gZmVhc2libGVUcmVlO1xuXG4vKlxuICogQ29uc3RydWN0cyBhIHNwYW5uaW5nIHRyZWUgd2l0aCB0aWdodCBlZGdlcyBhbmQgYWRqdXN0ZWQgdGhlIGlucHV0IG5vZGUnc1xuICogcmFua3MgdG8gYWNoaWV2ZSB0aGlzLiBBIHRpZ2h0IGVkZ2UgaXMgb25lIHRoYXQgaXMgaGFzIGEgbGVuZ3RoIHRoYXQgbWF0Y2hlc1xuICogaXRzIFwibWlubGVuXCIgYXR0cmlidXRlLlxuICpcbiAqIFRoZSBiYXNpYyBzdHJ1Y3R1cmUgZm9yIHRoaXMgZnVuY3Rpb24gaXMgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBXG4gKiBUZWNobmlxdWUgZm9yIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbXVzdCBiZSBhIERBRy5cbiAqICAgIDIuIEdyYXBoIG11c3QgYmUgY29ubmVjdGVkLlxuICogICAgMy4gR3JhcGggbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBub2RlLlxuICogICAgNS4gR3JhcGggbm9kZXMgbXVzdCBoYXZlIGJlZW4gcHJldmlvdXNseSBhc3NpZ25lZCBhIFwicmFua1wiIHByb3BlcnR5IHRoYXRcbiAqICAgICAgIHJlc3BlY3RzIHRoZSBcIm1pbmxlblwiIHByb3BlcnR5IG9mIGluY2lkZW50IGVkZ2VzLlxuICogICAgNi4gR3JhcGggZWRnZXMgbXVzdCBoYXZlIGEgXCJtaW5sZW5cIiBwcm9wZXJ0eS5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgLSBHcmFwaCBub2RlcyB3aWxsIGhhdmUgdGhlaXIgcmFuayBhZGp1c3RlZCB0byBlbnN1cmUgdGhhdCBhbGwgZWRnZXMgYXJlXG4gKiAgICAgIHRpZ2h0LlxuICpcbiAqIFJldHVybnMgYSB0cmVlICh1bmRpcmVjdGVkIGdyYXBoKSB0aGF0IGlzIGNvbnN0cnVjdGVkIHVzaW5nIG9ubHkgXCJ0aWdodFwiXG4gKiBlZGdlcy5cbiAqL1xuZnVuY3Rpb24gZmVhc2libGVUcmVlKGcpIHtcbiAgdmFyIHQgPSBuZXcgR3JhcGgoeyBkaXJlY3RlZDogZmFsc2UgfSk7XG5cbiAgLy8gQ2hvb3NlIGFyYml0cmFyeSBub2RlIGZyb20gd2hpY2ggdG8gc3RhcnQgb3VyIHRyZWVcbiAgdmFyIHN0YXJ0ID0gZy5ub2RlcygpWzBdO1xuICB2YXIgc2l6ZSA9IGcubm9kZUNvdW50KCk7XG4gIHQuc2V0Tm9kZShzdGFydCwge30pO1xuXG4gIHZhciBlZGdlLCBkZWx0YTtcbiAgd2hpbGUgKHRpZ2h0VHJlZSh0LCBnKSA8IHNpemUpIHtcbiAgICBlZGdlID0gZmluZE1pblNsYWNrRWRnZSh0LCBnKTtcbiAgICBkZWx0YSA9IHQuaGFzTm9kZShlZGdlLnYpID8gc2xhY2soZywgZWRnZSkgOiAtc2xhY2soZywgZWRnZSk7XG4gICAgc2hpZnRSYW5rcyh0LCBnLCBkZWx0YSk7XG4gIH1cblxuICByZXR1cm4gdDtcbn1cblxuLypcbiAqIEZpbmRzIGEgbWF4aW1hbCB0cmVlIG9mIHRpZ2h0IGVkZ2VzIGFuZCByZXR1cm5zIHRoZSBudW1iZXIgb2Ygbm9kZXMgaW4gdGhlXG4gKiB0cmVlLlxuICovXG5mdW5jdGlvbiB0aWdodFRyZWUodCwgZykge1xuICBmdW5jdGlvbiBkZnModikge1xuICAgIF8uZm9yRWFjaChnLm5vZGVFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgdmFyIGVkZ2VWID0gZS52LFxuICAgICAgICB3ID0gKHYgPT09IGVkZ2VWKSA/IGUudyA6IGVkZ2VWO1xuICAgICAgaWYgKCF0Lmhhc05vZGUodykgJiYgIXNsYWNrKGcsIGUpKSB7XG4gICAgICAgIHQuc2V0Tm9kZSh3LCB7fSk7XG4gICAgICAgIHQuc2V0RWRnZSh2LCB3LCB7fSk7XG4gICAgICAgIGRmcyh3KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIF8uZm9yRWFjaCh0Lm5vZGVzKCksIGRmcyk7XG4gIHJldHVybiB0Lm5vZGVDb3VudCgpO1xufVxuXG4vKlxuICogRmluZHMgdGhlIGVkZ2Ugd2l0aCB0aGUgc21hbGxlc3Qgc2xhY2sgdGhhdCBpcyBpbmNpZGVudCBvbiB0cmVlIGFuZCByZXR1cm5zXG4gKiBpdC5cbiAqL1xuZnVuY3Rpb24gZmluZE1pblNsYWNrRWRnZSh0LCBnKSB7XG4gIHJldHVybiBfLm1pbkJ5KGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIGlmICh0Lmhhc05vZGUoZS52KSAhPT0gdC5oYXNOb2RlKGUudykpIHtcbiAgICAgIHJldHVybiBzbGFjayhnLCBlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzaGlmdFJhbmtzKHQsIGcsIGRlbHRhKSB7XG4gIF8uZm9yRWFjaCh0Lm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBnLm5vZGUodikucmFuayArPSBkZWx0YTtcbiAgfSk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIGZlYXNpYmxlVHJlZSA9IHJlcXVpcmUoXCIuL2ZlYXNpYmxlLXRyZWVcIik7XG52YXIgc2xhY2sgPSByZXF1aXJlKFwiLi91dGlsXCIpLnNsYWNrO1xudmFyIGluaXRSYW5rID0gcmVxdWlyZShcIi4vdXRpbFwiKS5sb25nZXN0UGF0aDtcbnZhciBwcmVvcmRlciA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5hbGcucHJlb3JkZXI7XG52YXIgcG9zdG9yZGVyID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLmFsZy5wb3N0b3JkZXI7XG52YXIgc2ltcGxpZnkgPSByZXF1aXJlKFwiLi4vdXRpbFwiKS5zaW1wbGlmeTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXR3b3JrU2ltcGxleDtcblxuLy8gRXhwb3NlIHNvbWUgaW50ZXJuYWxzIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG5uZXR3b3JrU2ltcGxleC5pbml0TG93TGltVmFsdWVzID0gaW5pdExvd0xpbVZhbHVlcztcbm5ldHdvcmtTaW1wbGV4LmluaXRDdXRWYWx1ZXMgPSBpbml0Q3V0VmFsdWVzO1xubmV0d29ya1NpbXBsZXguY2FsY0N1dFZhbHVlID0gY2FsY0N1dFZhbHVlO1xubmV0d29ya1NpbXBsZXgubGVhdmVFZGdlID0gbGVhdmVFZGdlO1xubmV0d29ya1NpbXBsZXguZW50ZXJFZGdlID0gZW50ZXJFZGdlO1xubmV0d29ya1NpbXBsZXguZXhjaGFuZ2VFZGdlcyA9IGV4Y2hhbmdlRWRnZXM7XG5cbi8qXG4gKiBUaGUgbmV0d29yayBzaW1wbGV4IGFsZ29yaXRobSBhc3NpZ25zIHJhbmtzIHRvIGVhY2ggbm9kZSBpbiB0aGUgaW5wdXQgZ3JhcGhcbiAqIGFuZCBpdGVyYXRpdmVseSBpbXByb3ZlcyB0aGUgcmFua2luZyB0byByZWR1Y2UgdGhlIGxlbmd0aCBvZiBlZGdlcy5cbiAqXG4gKiBQcmVjb25kaXRpb25zOlxuICpcbiAqICAgIDEuIFRoZSBpbnB1dCBncmFwaCBtdXN0IGJlIGEgREFHLlxuICogICAgMi4gQWxsIG5vZGVzIGluIHRoZSBncmFwaCBtdXN0IGhhdmUgYW4gb2JqZWN0IHZhbHVlLlxuICogICAgMy4gQWxsIGVkZ2VzIGluIHRoZSBncmFwaCBtdXN0IGhhdmUgXCJtaW5sZW5cIiBhbmQgXCJ3ZWlnaHRcIiBhdHRyaWJ1dGVzLlxuICpcbiAqIFBvc3Rjb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEFsbCBub2RlcyBpbiB0aGUgZ3JhcGggd2lsbCBoYXZlIGFuIGFzc2lnbmVkIFwicmFua1wiIGF0dHJpYnV0ZSB0aGF0IGhhc1xuICogICAgICAgYmVlbiBvcHRpbWl6ZWQgYnkgdGhlIG5ldHdvcmsgc2ltcGxleCBhbGdvcml0aG0uIFJhbmtzIHN0YXJ0IGF0IDAuXG4gKlxuICpcbiAqIEEgcm91Z2ggc2tldGNoIG9mIHRoZSBhbGdvcml0aG0gaXMgYXMgZm9sbG93czpcbiAqXG4gKiAgICAxLiBBc3NpZ24gaW5pdGlhbCByYW5rcyB0byBlYWNoIG5vZGUuIFdlIHVzZSB0aGUgbG9uZ2VzdCBwYXRoIGFsZ29yaXRobSxcbiAqICAgICAgIHdoaWNoIGFzc2lnbnMgcmFua3MgdG8gdGhlIGxvd2VzdCBwb3NpdGlvbiBwb3NzaWJsZS4gSW4gZ2VuZXJhbCB0aGlzXG4gKiAgICAgICBsZWFkcyB0byB2ZXJ5IHdpZGUgYm90dG9tIHJhbmtzIGFuZCB1bm5lY2Vzc2FyaWx5IGxvbmcgZWRnZXMuXG4gKiAgICAyLiBDb25zdHJ1Y3QgYSBmZWFzaWJsZSB0aWdodCB0cmVlLiBBIHRpZ2h0IHRyZWUgaXMgb25lIHN1Y2ggdGhhdCBhbGxcbiAqICAgICAgIGVkZ2VzIGluIHRoZSB0cmVlIGhhdmUgbm8gc2xhY2sgKGRpZmZlcmVuY2UgYmV0d2VlbiBsZW5ndGggb2YgZWRnZVxuICogICAgICAgYW5kIG1pbmxlbiBmb3IgdGhlIGVkZ2UpLiBUaGlzIGJ5IGl0c2VsZiBncmVhdGx5IGltcHJvdmVzIHRoZSBhc3NpZ25lZFxuICogICAgICAgcmFua2luZ3MgYnkgc2hvcnRpbmcgZWRnZXMuXG4gKiAgICAzLiBJdGVyYXRpdmVseSBmaW5kIGVkZ2VzIHRoYXQgaGF2ZSBuZWdhdGl2ZSBjdXQgdmFsdWVzLiBHZW5lcmFsbHkgYVxuICogICAgICAgbmVnYXRpdmUgY3V0IHZhbHVlIGluZGljYXRlcyB0aGF0IHRoZSBlZGdlIGNvdWxkIGJlIHJlbW92ZWQgYW5kIGEgbmV3XG4gKiAgICAgICB0cmVlIGVkZ2UgY291bGQgYmUgYWRkZWQgdG8gcHJvZHVjZSBhIG1vcmUgY29tcGFjdCBncmFwaC5cbiAqXG4gKiBNdWNoIG9mIHRoZSBhbGdvcml0aG1zIGhlcmUgYXJlIGRlcml2ZWQgZnJvbSBHYW5zbmVyLCBldCBhbC4sIFwiQSBUZWNobmlxdWVcbiAqIGZvciBEcmF3aW5nIERpcmVjdGVkIEdyYXBocy5cIiBUaGUgc3RydWN0dXJlIG9mIHRoZSBmaWxlIHJvdWdobHkgZm9sbG93cyB0aGVcbiAqIHN0cnVjdHVyZSBvZiB0aGUgb3ZlcmFsbCBhbGdvcml0aG0uXG4gKi9cbmZ1bmN0aW9uIG5ldHdvcmtTaW1wbGV4KGcpIHtcbiAgZyA9IHNpbXBsaWZ5KGcpO1xuICBpbml0UmFuayhnKTtcbiAgdmFyIHQgPSBmZWFzaWJsZVRyZWUoZyk7XG4gIGluaXRMb3dMaW1WYWx1ZXModCk7XG4gIGluaXRDdXRWYWx1ZXModCwgZyk7XG5cbiAgdmFyIGUsIGY7XG4gIHdoaWxlICgoZSA9IGxlYXZlRWRnZSh0KSkpIHtcbiAgICBmID0gZW50ZXJFZGdlKHQsIGcsIGUpO1xuICAgIGV4Y2hhbmdlRWRnZXModCwgZywgZSwgZik7XG4gIH1cbn1cblxuLypcbiAqIEluaXRpYWxpemVzIGN1dCB2YWx1ZXMgZm9yIGFsbCBlZGdlcyBpbiB0aGUgdHJlZS5cbiAqL1xuZnVuY3Rpb24gaW5pdEN1dFZhbHVlcyh0LCBnKSB7XG4gIHZhciB2cyA9IHBvc3RvcmRlcih0LCB0Lm5vZGVzKCkpO1xuICB2cyA9IHZzLnNsaWNlKDAsIHZzLmxlbmd0aCAtIDEpO1xuICBfLmZvckVhY2godnMsIGZ1bmN0aW9uKHYpIHtcbiAgICBhc3NpZ25DdXRWYWx1ZSh0LCBnLCB2KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbkN1dFZhbHVlKHQsIGcsIGNoaWxkKSB7XG4gIHZhciBjaGlsZExhYiA9IHQubm9kZShjaGlsZCk7XG4gIHZhciBwYXJlbnQgPSBjaGlsZExhYi5wYXJlbnQ7XG4gIHQuZWRnZShjaGlsZCwgcGFyZW50KS5jdXR2YWx1ZSA9IGNhbGNDdXRWYWx1ZSh0LCBnLCBjaGlsZCk7XG59XG5cbi8qXG4gKiBHaXZlbiB0aGUgdGlnaHQgdHJlZSwgaXRzIGdyYXBoLCBhbmQgYSBjaGlsZCBpbiB0aGUgZ3JhcGggY2FsY3VsYXRlIGFuZFxuICogcmV0dXJuIHRoZSBjdXQgdmFsdWUgZm9yIHRoZSBlZGdlIGJldHdlZW4gdGhlIGNoaWxkIGFuZCBpdHMgcGFyZW50LlxuICovXG5mdW5jdGlvbiBjYWxjQ3V0VmFsdWUodCwgZywgY2hpbGQpIHtcbiAgdmFyIGNoaWxkTGFiID0gdC5ub2RlKGNoaWxkKTtcbiAgdmFyIHBhcmVudCA9IGNoaWxkTGFiLnBhcmVudDtcbiAgLy8gVHJ1ZSBpZiB0aGUgY2hpbGQgaXMgb24gdGhlIHRhaWwgZW5kIG9mIHRoZSBlZGdlIGluIHRoZSBkaXJlY3RlZCBncmFwaFxuICB2YXIgY2hpbGRJc1RhaWwgPSB0cnVlO1xuICAvLyBUaGUgZ3JhcGgncyB2aWV3IG9mIHRoZSB0cmVlIGVkZ2Ugd2UncmUgaW5zcGVjdGluZ1xuICB2YXIgZ3JhcGhFZGdlID0gZy5lZGdlKGNoaWxkLCBwYXJlbnQpO1xuICAvLyBUaGUgYWNjdW11bGF0ZWQgY3V0IHZhbHVlIGZvciB0aGUgZWRnZSBiZXR3ZWVuIHRoaXMgbm9kZSBhbmQgaXRzIHBhcmVudFxuICB2YXIgY3V0VmFsdWUgPSAwO1xuXG4gIGlmICghZ3JhcGhFZGdlKSB7XG4gICAgY2hpbGRJc1RhaWwgPSBmYWxzZTtcbiAgICBncmFwaEVkZ2UgPSBnLmVkZ2UocGFyZW50LCBjaGlsZCk7XG4gIH1cblxuICBjdXRWYWx1ZSA9IGdyYXBoRWRnZS53ZWlnaHQ7XG5cbiAgXy5mb3JFYWNoKGcubm9kZUVkZ2VzKGNoaWxkKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBpc091dEVkZ2UgPSBlLnYgPT09IGNoaWxkLFxuICAgICAgb3RoZXIgPSBpc091dEVkZ2UgPyBlLncgOiBlLnY7XG5cbiAgICBpZiAob3RoZXIgIT09IHBhcmVudCkge1xuICAgICAgdmFyIHBvaW50c1RvSGVhZCA9IGlzT3V0RWRnZSA9PT0gY2hpbGRJc1RhaWwsXG4gICAgICAgIG90aGVyV2VpZ2h0ID0gZy5lZGdlKGUpLndlaWdodDtcblxuICAgICAgY3V0VmFsdWUgKz0gcG9pbnRzVG9IZWFkID8gb3RoZXJXZWlnaHQgOiAtb3RoZXJXZWlnaHQ7XG4gICAgICBpZiAoaXNUcmVlRWRnZSh0LCBjaGlsZCwgb3RoZXIpKSB7XG4gICAgICAgIHZhciBvdGhlckN1dFZhbHVlID0gdC5lZGdlKGNoaWxkLCBvdGhlcikuY3V0dmFsdWU7XG4gICAgICAgIGN1dFZhbHVlICs9IHBvaW50c1RvSGVhZCA/IC1vdGhlckN1dFZhbHVlIDogb3RoZXJDdXRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjdXRWYWx1ZTtcbn1cblxuZnVuY3Rpb24gaW5pdExvd0xpbVZhbHVlcyh0cmVlLCByb290KSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHJvb3QgPSB0cmVlLm5vZGVzKClbMF07XG4gIH1cbiAgZGZzQXNzaWduTG93TGltKHRyZWUsIHt9LCAxLCByb290KTtcbn1cblxuZnVuY3Rpb24gZGZzQXNzaWduTG93TGltKHRyZWUsIHZpc2l0ZWQsIG5leHRMaW0sIHYsIHBhcmVudCkge1xuICB2YXIgbG93ID0gbmV4dExpbTtcbiAgdmFyIGxhYmVsID0gdHJlZS5ub2RlKHYpO1xuXG4gIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICBfLmZvckVhY2godHJlZS5uZWlnaGJvcnModiksIGZ1bmN0aW9uKHcpIHtcbiAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHcpKSB7XG4gICAgICBuZXh0TGltID0gZGZzQXNzaWduTG93TGltKHRyZWUsIHZpc2l0ZWQsIG5leHRMaW0sIHcsIHYpO1xuICAgIH1cbiAgfSk7XG5cbiAgbGFiZWwubG93ID0gbG93O1xuICBsYWJlbC5saW0gPSBuZXh0TGltKys7XG4gIGlmIChwYXJlbnQpIHtcbiAgICBsYWJlbC5wYXJlbnQgPSBwYXJlbnQ7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETyBzaG91bGQgYmUgYWJsZSB0byByZW1vdmUgdGhpcyB3aGVuIHdlIGluY3JlbWVudGFsbHkgdXBkYXRlIGxvdyBsaW1cbiAgICBkZWxldGUgbGFiZWwucGFyZW50O1xuICB9XG5cbiAgcmV0dXJuIG5leHRMaW07XG59XG5cbmZ1bmN0aW9uIGxlYXZlRWRnZSh0cmVlKSB7XG4gIHJldHVybiBfLmZpbmQodHJlZS5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIHRyZWUuZWRnZShlKS5jdXR2YWx1ZSA8IDA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlbnRlckVkZ2UodCwgZywgZWRnZSkge1xuICB2YXIgdiA9IGVkZ2UudjtcbiAgdmFyIHcgPSBlZGdlLnc7XG5cbiAgLy8gRm9yIHRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24gd2UgYXNzdW1lIHRoYXQgdiBpcyB0aGUgdGFpbCBhbmQgdyBpcyB0aGVcbiAgLy8gaGVhZCwgc28gaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIGVkZ2UgaW4gdGhlIGdyYXBoIHdlIHNob3VsZCBmbGlwIGl0IHRvXG4gIC8vIG1hdGNoIHRoZSBjb3JyZWN0IG9yaWVudGF0aW9uLlxuICBpZiAoIWcuaGFzRWRnZSh2LCB3KSkge1xuICAgIHYgPSBlZGdlLnc7XG4gICAgdyA9IGVkZ2UudjtcbiAgfVxuXG4gIHZhciB2TGFiZWwgPSB0Lm5vZGUodik7XG4gIHZhciB3TGFiZWwgPSB0Lm5vZGUodyk7XG4gIHZhciB0YWlsTGFiZWwgPSB2TGFiZWw7XG4gIHZhciBmbGlwID0gZmFsc2U7XG5cbiAgLy8gSWYgdGhlIHJvb3QgaXMgaW4gdGhlIHRhaWwgb2YgdGhlIGVkZ2UgdGhlbiB3ZSBuZWVkIHRvIGZsaXAgdGhlIGxvZ2ljIHRoYXRcbiAgLy8gY2hlY2tzIGZvciB0aGUgaGVhZCBhbmQgdGFpbCBub2RlcyBpbiB0aGUgY2FuZGlkYXRlcyBmdW5jdGlvbiBiZWxvdy5cbiAgaWYgKHZMYWJlbC5saW0gPiB3TGFiZWwubGltKSB7XG4gICAgdGFpbExhYmVsID0gd0xhYmVsO1xuICAgIGZsaXAgPSB0cnVlO1xuICB9XG5cbiAgdmFyIGNhbmRpZGF0ZXMgPSBfLmZpbHRlcihnLmVkZ2VzKCksIGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICByZXR1cm4gZmxpcCA9PT0gaXNEZXNjZW5kYW50KHQsIHQubm9kZShlZGdlLnYpLCB0YWlsTGFiZWwpICYmXG4gICAgICAgICAgIGZsaXAgIT09IGlzRGVzY2VuZGFudCh0LCB0Lm5vZGUoZWRnZS53KSwgdGFpbExhYmVsKTtcbiAgfSk7XG5cbiAgcmV0dXJuIF8ubWluQnkoY2FuZGlkYXRlcywgZnVuY3Rpb24oZWRnZSkgeyByZXR1cm4gc2xhY2soZywgZWRnZSk7IH0pO1xufVxuXG5mdW5jdGlvbiBleGNoYW5nZUVkZ2VzKHQsIGcsIGUsIGYpIHtcbiAgdmFyIHYgPSBlLnY7XG4gIHZhciB3ID0gZS53O1xuICB0LnJlbW92ZUVkZ2Uodiwgdyk7XG4gIHQuc2V0RWRnZShmLnYsIGYudywge30pO1xuICBpbml0TG93TGltVmFsdWVzKHQpO1xuICBpbml0Q3V0VmFsdWVzKHQsIGcpO1xuICB1cGRhdGVSYW5rcyh0LCBnKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlUmFua3ModCwgZykge1xuICB2YXIgcm9vdCA9IF8uZmluZCh0Lm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgcmV0dXJuICFnLm5vZGUodikucGFyZW50OyB9KTtcbiAgdmFyIHZzID0gcHJlb3JkZXIodCwgcm9vdCk7XG4gIHZzID0gdnMuc2xpY2UoMSk7XG4gIF8uZm9yRWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIHZhciBwYXJlbnQgPSB0Lm5vZGUodikucGFyZW50LFxuICAgICAgZWRnZSA9IGcuZWRnZSh2LCBwYXJlbnQpLFxuICAgICAgZmxpcHBlZCA9IGZhbHNlO1xuXG4gICAgaWYgKCFlZGdlKSB7XG4gICAgICBlZGdlID0gZy5lZGdlKHBhcmVudCwgdik7XG4gICAgICBmbGlwcGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnLm5vZGUodikucmFuayA9IGcubm9kZShwYXJlbnQpLnJhbmsgKyAoZmxpcHBlZCA/IGVkZ2UubWlubGVuIDogLWVkZ2UubWlubGVuKTtcbiAgfSk7XG59XG5cbi8qXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGVkZ2UgaXMgaW4gdGhlIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIGlzVHJlZUVkZ2UodHJlZSwgdSwgdikge1xuICByZXR1cm4gdHJlZS5oYXNFZGdlKHUsIHYpO1xufVxuXG4vKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgbm9kZSBpcyBkZXNjZW5kYW50IG9mIHRoZSByb290IG5vZGUgcGVyIHRoZVxuICogYXNzaWduZWQgbG93IGFuZCBsaW0gYXR0cmlidXRlcyBpbiB0aGUgdHJlZS5cbiAqL1xuZnVuY3Rpb24gaXNEZXNjZW5kYW50KHRyZWUsIHZMYWJlbCwgcm9vdExhYmVsKSB7XG4gIHJldHVybiByb290TGFiZWwubG93IDw9IHZMYWJlbC5saW0gJiYgdkxhYmVsLmxpbSA8PSByb290TGFiZWwubGltO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciByYW5rVXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG52YXIgbG9uZ2VzdFBhdGggPSByYW5rVXRpbC5sb25nZXN0UGF0aDtcbnZhciBmZWFzaWJsZVRyZWUgPSByZXF1aXJlKFwiLi9mZWFzaWJsZS10cmVlXCIpO1xudmFyIG5ldHdvcmtTaW1wbGV4ID0gcmVxdWlyZShcIi4vbmV0d29yay1zaW1wbGV4XCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJhbms7XG5cbi8qXG4gKiBBc3NpZ25zIGEgcmFuayB0byBlYWNoIG5vZGUgaW4gdGhlIGlucHV0IGdyYXBoIHRoYXQgcmVzcGVjdHMgdGhlIFwibWlubGVuXCJcbiAqIGNvbnN0cmFpbnQgc3BlY2lmaWVkIG9uIGVkZ2VzIGJldHdlZW4gbm9kZXMuXG4gKlxuICogVGhpcyBiYXNpYyBzdHJ1Y3R1cmUgaXMgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZSBmb3JcbiAqIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbXVzdCBiZSBhIGNvbm5lY3RlZCBEQUdcbiAqICAgIDIuIEdyYXBoIG5vZGVzIG11c3QgYmUgb2JqZWN0c1xuICogICAgMy4gR3JhcGggZWRnZXMgbXVzdCBoYXZlIFwid2VpZ2h0XCIgYW5kIFwibWlubGVuXCIgYXR0cmlidXRlc1xuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBub2RlcyB3aWxsIGhhdmUgYSBcInJhbmtcIiBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHJlc3VsdHMgb2YgdGhlXG4gKiAgICAgICBhbGdvcml0aG0uIFJhbmtzIGNhbiBzdGFydCBhdCBhbnkgaW5kZXggKGluY2x1ZGluZyBuZWdhdGl2ZSksIHdlJ2xsXG4gKiAgICAgICBmaXggdGhlbSB1cCBsYXRlci5cbiAqL1xuZnVuY3Rpb24gcmFuayhnKSB7XG4gIHN3aXRjaChnLmdyYXBoKCkucmFua2VyKSB7XG4gIGNhc2UgXCJuZXR3b3JrLXNpbXBsZXhcIjogbmV0d29ya1NpbXBsZXhSYW5rZXIoZyk7IGJyZWFrO1xuICBjYXNlIFwidGlnaHQtdHJlZVwiOiB0aWdodFRyZWVSYW5rZXIoZyk7IGJyZWFrO1xuICBjYXNlIFwibG9uZ2VzdC1wYXRoXCI6IGxvbmdlc3RQYXRoUmFua2VyKGcpOyBicmVhaztcbiAgZGVmYXVsdDogbmV0d29ya1NpbXBsZXhSYW5rZXIoZyk7XG4gIH1cbn1cblxuLy8gQSBmYXN0IGFuZCBzaW1wbGUgcmFua2VyLCBidXQgcmVzdWx0cyBhcmUgZmFyIGZyb20gb3B0aW1hbC5cbnZhciBsb25nZXN0UGF0aFJhbmtlciA9IGxvbmdlc3RQYXRoO1xuXG5mdW5jdGlvbiB0aWdodFRyZWVSYW5rZXIoZykge1xuICBsb25nZXN0UGF0aChnKTtcbiAgZmVhc2libGVUcmVlKGcpO1xufVxuXG5mdW5jdGlvbiBuZXR3b3JrU2ltcGxleFJhbmtlcihnKSB7XG4gIG5ldHdvcmtTaW1wbGV4KGcpO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50RHVtbXlDaGFpbnM7XG5cbmZ1bmN0aW9uIHBhcmVudER1bW15Q2hhaW5zKGcpIHtcbiAgdmFyIHBvc3RvcmRlck51bXMgPSBwb3N0b3JkZXIoZyk7XG5cbiAgXy5mb3JFYWNoKGcuZ3JhcGgoKS5kdW1teUNoYWlucywgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIHZhciBlZGdlT2JqID0gbm9kZS5lZGdlT2JqO1xuICAgIHZhciBwYXRoRGF0YSA9IGZpbmRQYXRoKGcsIHBvc3RvcmRlck51bXMsIGVkZ2VPYmoudiwgZWRnZU9iai53KTtcbiAgICB2YXIgcGF0aCA9IHBhdGhEYXRhLnBhdGg7XG4gICAgdmFyIGxjYSA9IHBhdGhEYXRhLmxjYTtcbiAgICB2YXIgcGF0aElkeCA9IDA7XG4gICAgdmFyIHBhdGhWID0gcGF0aFtwYXRoSWR4XTtcbiAgICB2YXIgYXNjZW5kaW5nID0gdHJ1ZTtcblxuICAgIHdoaWxlICh2ICE9PSBlZGdlT2JqLncpIHtcbiAgICAgIG5vZGUgPSBnLm5vZGUodik7XG5cbiAgICAgIGlmIChhc2NlbmRpbmcpIHtcbiAgICAgICAgd2hpbGUgKChwYXRoViA9IHBhdGhbcGF0aElkeF0pICE9PSBsY2EgJiZcbiAgICAgICAgICAgICAgIGcubm9kZShwYXRoVikubWF4UmFuayA8IG5vZGUucmFuaykge1xuICAgICAgICAgIHBhdGhJZHgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoViA9PT0gbGNhKSB7XG4gICAgICAgICAgYXNjZW5kaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFhc2NlbmRpbmcpIHtcbiAgICAgICAgd2hpbGUgKHBhdGhJZHggPCBwYXRoLmxlbmd0aCAtIDEgJiZcbiAgICAgICAgICAgICAgIGcubm9kZShwYXRoViA9IHBhdGhbcGF0aElkeCArIDFdKS5taW5SYW5rIDw9IG5vZGUucmFuaykge1xuICAgICAgICAgIHBhdGhJZHgrKztcbiAgICAgICAgfVxuICAgICAgICBwYXRoViA9IHBhdGhbcGF0aElkeF07XG4gICAgICB9XG5cbiAgICAgIGcuc2V0UGFyZW50KHYsIHBhdGhWKTtcbiAgICAgIHYgPSBnLnN1Y2Nlc3NvcnModilbMF07XG4gICAgfVxuICB9KTtcbn1cblxuLy8gRmluZCBhIHBhdGggZnJvbSB2IHRvIHcgdGhyb3VnaCB0aGUgbG93ZXN0IGNvbW1vbiBhbmNlc3RvciAoTENBKS4gUmV0dXJuIHRoZVxuLy8gZnVsbCBwYXRoIGFuZCB0aGUgTENBLlxuZnVuY3Rpb24gZmluZFBhdGgoZywgcG9zdG9yZGVyTnVtcywgdiwgdykge1xuICB2YXIgdlBhdGggPSBbXTtcbiAgdmFyIHdQYXRoID0gW107XG4gIHZhciBsb3cgPSBNYXRoLm1pbihwb3N0b3JkZXJOdW1zW3ZdLmxvdywgcG9zdG9yZGVyTnVtc1t3XS5sb3cpO1xuICB2YXIgbGltID0gTWF0aC5tYXgocG9zdG9yZGVyTnVtc1t2XS5saW0sIHBvc3RvcmRlck51bXNbd10ubGltKTtcbiAgdmFyIHBhcmVudDtcbiAgdmFyIGxjYTtcblxuICAvLyBUcmF2ZXJzZSB1cCBmcm9tIHYgdG8gZmluZCB0aGUgTENBXG4gIHBhcmVudCA9IHY7XG4gIGRvIHtcbiAgICBwYXJlbnQgPSBnLnBhcmVudChwYXJlbnQpO1xuICAgIHZQYXRoLnB1c2gocGFyZW50KTtcbiAgfSB3aGlsZSAocGFyZW50ICYmXG4gICAgICAgICAgIChwb3N0b3JkZXJOdW1zW3BhcmVudF0ubG93ID4gbG93IHx8IGxpbSA+IHBvc3RvcmRlck51bXNbcGFyZW50XS5saW0pKTtcbiAgbGNhID0gcGFyZW50O1xuXG4gIC8vIFRyYXZlcnNlIGZyb20gdyB0byBMQ0FcbiAgcGFyZW50ID0gdztcbiAgd2hpbGUgKChwYXJlbnQgPSBnLnBhcmVudChwYXJlbnQpKSAhPT0gbGNhKSB7XG4gICAgd1BhdGgucHVzaChwYXJlbnQpO1xuICB9XG5cbiAgcmV0dXJuIHsgcGF0aDogdlBhdGguY29uY2F0KHdQYXRoLnJldmVyc2UoKSksIGxjYTogbGNhIH07XG59XG5cbmZ1bmN0aW9uIHBvc3RvcmRlcihnKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgdmFyIGxpbSA9IDA7XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgbG93ID0gbGltO1xuICAgIF8uZm9yRWFjaChnLmNoaWxkcmVuKHYpLCBkZnMpO1xuICAgIHJlc3VsdFt2XSA9IHsgbG93OiBsb3csIGxpbTogbGltKysgfTtcbiAgfVxuICBfLmZvckVhY2goZy5jaGlsZHJlbigpLCBkZnMpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHJ1bjogcnVuLFxuICBjbGVhbnVwOiBjbGVhbnVwXG59O1xuXG4vKlxuICogQSBuZXN0aW5nIGdyYXBoIGNyZWF0ZXMgZHVtbXkgbm9kZXMgZm9yIHRoZSB0b3BzIGFuZCBib3R0b21zIG9mIHN1YmdyYXBocyxcbiAqIGFkZHMgYXBwcm9wcmlhdGUgZWRnZXMgdG8gZW5zdXJlIHRoYXQgYWxsIGNsdXN0ZXIgbm9kZXMgYXJlIHBsYWNlZCBiZXR3ZWVuXG4gKiB0aGVzZSBib3VuZHJpZXMsIGFuZCBlbnN1cmVzIHRoYXQgdGhlIGdyYXBoIGlzIGNvbm5lY3RlZC5cbiAqXG4gKiBJbiBhZGRpdGlvbiB3ZSBlbnN1cmUsIHRocm91Z2ggdGhlIHVzZSBvZiB0aGUgbWlubGVuIHByb3BlcnR5LCB0aGF0IG5vZGVzXG4gKiBhbmQgc3ViZ3JhcGggYm9yZGVyIG5vZGVzIHRvIG5vdCBlbmQgdXAgb24gdGhlIHNhbWUgcmFuay5cbiAqXG4gKiBQcmVjb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIGlzIGEgREFHXG4gKiAgICAyLiBOb2RlcyBpbiB0aGUgaW5wdXQgZ3JhcGggaGFzIGEgbWlubGVuIGF0dHJpYnV0ZVxuICpcbiAqIFBvc3Rjb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIGlzIGNvbm5lY3RlZC5cbiAqICAgIDIuIER1bW15IG5vZGVzIGFyZSBhZGRlZCBmb3IgdGhlIHRvcHMgYW5kIGJvdHRvbXMgb2Ygc3ViZ3JhcGhzLlxuICogICAgMy4gVGhlIG1pbmxlbiBhdHRyaWJ1dGUgZm9yIG5vZGVzIGlzIGFkanVzdGVkIHRvIGVuc3VyZSBub2RlcyBkbyBub3RcbiAqICAgICAgIGdldCBwbGFjZWQgb24gdGhlIHNhbWUgcmFuayBhcyBzdWJncmFwaCBib3JkZXIgbm9kZXMuXG4gKlxuICogVGhlIG5lc3RpbmcgZ3JhcGggaWRlYSBjb21lcyBmcm9tIFNhbmRlciwgXCJMYXlvdXQgb2YgQ29tcG91bmQgRGlyZWN0ZWRcbiAqIEdyYXBocy5cIlxuICovXG5mdW5jdGlvbiBydW4oZykge1xuICB2YXIgcm9vdCA9IHV0aWwuYWRkRHVtbXlOb2RlKGcsIFwicm9vdFwiLCB7fSwgXCJfcm9vdFwiKTtcbiAgdmFyIGRlcHRocyA9IHRyZWVEZXB0aHMoZyk7XG4gIHZhciBoZWlnaHQgPSBfLm1heChfLnZhbHVlcyhkZXB0aHMpKSAtIDE7IC8vIE5vdGU6IGRlcHRocyBpcyBhbiBPYmplY3Qgbm90IGFuIGFycmF5XG4gIHZhciBub2RlU2VwID0gMiAqIGhlaWdodCArIDE7XG5cbiAgZy5ncmFwaCgpLm5lc3RpbmdSb290ID0gcm9vdDtcblxuICAvLyBNdWx0aXBseSBtaW5sZW4gYnkgbm9kZVNlcCB0byBhbGlnbiBub2RlcyBvbiBub24tYm9yZGVyIHJhbmtzLlxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7IGcuZWRnZShlKS5taW5sZW4gKj0gbm9kZVNlcDsgfSk7XG5cbiAgLy8gQ2FsY3VsYXRlIGEgd2VpZ2h0IHRoYXQgaXMgc3VmZmljaWVudCB0byBrZWVwIHN1YmdyYXBocyB2ZXJ0aWNhbGx5IGNvbXBhY3RcbiAgdmFyIHdlaWdodCA9IHN1bVdlaWdodHMoZykgKyAxO1xuXG4gIC8vIENyZWF0ZSBib3JkZXIgbm9kZXMgYW5kIGxpbmsgdGhlbSB1cFxuICBfLmZvckVhY2goZy5jaGlsZHJlbigpLCBmdW5jdGlvbihjaGlsZCkge1xuICAgIGRmcyhnLCByb290LCBub2RlU2VwLCB3ZWlnaHQsIGhlaWdodCwgZGVwdGhzLCBjaGlsZCk7XG4gIH0pO1xuXG4gIC8vIFNhdmUgdGhlIG11bHRpcGxpZXIgZm9yIG5vZGUgbGF5ZXJzIGZvciBsYXRlciByZW1vdmFsIG9mIGVtcHR5IGJvcmRlclxuICAvLyBsYXllcnMuXG4gIGcuZ3JhcGgoKS5ub2RlUmFua0ZhY3RvciA9IG5vZGVTZXA7XG59XG5cbmZ1bmN0aW9uIGRmcyhnLCByb290LCBub2RlU2VwLCB3ZWlnaHQsIGhlaWdodCwgZGVwdGhzLCB2KSB7XG4gIHZhciBjaGlsZHJlbiA9IGcuY2hpbGRyZW4odik7XG4gIGlmICghY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgaWYgKHYgIT09IHJvb3QpIHtcbiAgICAgIGcuc2V0RWRnZShyb290LCB2LCB7IHdlaWdodDogMCwgbWlubGVuOiBub2RlU2VwIH0pO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgdG9wID0gdXRpbC5hZGRCb3JkZXJOb2RlKGcsIFwiX2J0XCIpO1xuICB2YXIgYm90dG9tID0gdXRpbC5hZGRCb3JkZXJOb2RlKGcsIFwiX2JiXCIpO1xuICB2YXIgbGFiZWwgPSBnLm5vZGUodik7XG5cbiAgZy5zZXRQYXJlbnQodG9wLCB2KTtcbiAgbGFiZWwuYm9yZGVyVG9wID0gdG9wO1xuICBnLnNldFBhcmVudChib3R0b20sIHYpO1xuICBsYWJlbC5ib3JkZXJCb3R0b20gPSBib3R0b207XG5cbiAgXy5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbihjaGlsZCkge1xuICAgIGRmcyhnLCByb290LCBub2RlU2VwLCB3ZWlnaHQsIGhlaWdodCwgZGVwdGhzLCBjaGlsZCk7XG5cbiAgICB2YXIgY2hpbGROb2RlID0gZy5ub2RlKGNoaWxkKTtcbiAgICB2YXIgY2hpbGRUb3AgPSBjaGlsZE5vZGUuYm9yZGVyVG9wID8gY2hpbGROb2RlLmJvcmRlclRvcCA6IGNoaWxkO1xuICAgIHZhciBjaGlsZEJvdHRvbSA9IGNoaWxkTm9kZS5ib3JkZXJCb3R0b20gPyBjaGlsZE5vZGUuYm9yZGVyQm90dG9tIDogY2hpbGQ7XG4gICAgdmFyIHRoaXNXZWlnaHQgPSBjaGlsZE5vZGUuYm9yZGVyVG9wID8gd2VpZ2h0IDogMiAqIHdlaWdodDtcbiAgICB2YXIgbWlubGVuID0gY2hpbGRUb3AgIT09IGNoaWxkQm90dG9tID8gMSA6IGhlaWdodCAtIGRlcHRoc1t2XSArIDE7XG5cbiAgICBnLnNldEVkZ2UodG9wLCBjaGlsZFRvcCwge1xuICAgICAgd2VpZ2h0OiB0aGlzV2VpZ2h0LFxuICAgICAgbWlubGVuOiBtaW5sZW4sXG4gICAgICBuZXN0aW5nRWRnZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgZy5zZXRFZGdlKGNoaWxkQm90dG9tLCBib3R0b20sIHtcbiAgICAgIHdlaWdodDogdGhpc1dlaWdodCxcbiAgICAgIG1pbmxlbjogbWlubGVuLFxuICAgICAgbmVzdGluZ0VkZ2U6IHRydWVcbiAgICB9KTtcbiAgfSk7XG5cbiAgaWYgKCFnLnBhcmVudCh2KSkge1xuICAgIGcuc2V0RWRnZShyb290LCB0b3AsIHsgd2VpZ2h0OiAwLCBtaW5sZW46IGhlaWdodCArIGRlcHRoc1t2XSB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmVlRGVwdGhzKGcpIHtcbiAgdmFyIGRlcHRocyA9IHt9O1xuICBmdW5jdGlvbiBkZnModiwgZGVwdGgpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICAgIGlmIChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIF8uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgICAgZGZzKGNoaWxkLCBkZXB0aCArIDEpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGRlcHRoc1t2XSA9IGRlcHRoO1xuICB9XG4gIF8uZm9yRWFjaChnLmNoaWxkcmVuKCksIGZ1bmN0aW9uKHYpIHsgZGZzKHYsIDEpOyB9KTtcbiAgcmV0dXJuIGRlcHRocztcbn1cblxuZnVuY3Rpb24gc3VtV2VpZ2h0cyhnKSB7XG4gIHJldHVybiBfLnJlZHVjZShnLmVkZ2VzKCksIGZ1bmN0aW9uKGFjYywgZSkge1xuICAgIHJldHVybiBhY2MgKyBnLmVkZ2UoZSkud2VpZ2h0O1xuICB9LCAwKTtcbn1cblxuZnVuY3Rpb24gY2xlYW51cChnKSB7XG4gIHZhciBncmFwaExhYmVsID0gZy5ncmFwaCgpO1xuICBnLnJlbW92ZU5vZGUoZ3JhcGhMYWJlbC5uZXN0aW5nUm9vdCk7XG4gIGRlbGV0ZSBncmFwaExhYmVsLm5lc3RpbmdSb290O1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKGVkZ2UubmVzdGluZ0VkZ2UpIHtcbiAgICAgIGcucmVtb3ZlRWRnZShlKTtcbiAgICB9XG4gIH0pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gYWRkQm9yZGVyU2VnbWVudHM7XG5cbmZ1bmN0aW9uIGFkZEJvcmRlclNlZ21lbnRzKGcpIHtcbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIF8uZm9yRWFjaChjaGlsZHJlbiwgZGZzKTtcbiAgICB9XG5cbiAgICBpZiAoXy5oYXMobm9kZSwgXCJtaW5SYW5rXCIpKSB7XG4gICAgICBub2RlLmJvcmRlckxlZnQgPSBbXTtcbiAgICAgIG5vZGUuYm9yZGVyUmlnaHQgPSBbXTtcbiAgICAgIGZvciAodmFyIHJhbmsgPSBub2RlLm1pblJhbmssIG1heFJhbmsgPSBub2RlLm1heFJhbmsgKyAxO1xuICAgICAgICByYW5rIDwgbWF4UmFuaztcbiAgICAgICAgKytyYW5rKSB7XG4gICAgICAgIGFkZEJvcmRlck5vZGUoZywgXCJib3JkZXJMZWZ0XCIsIFwiX2JsXCIsIHYsIG5vZGUsIHJhbmspO1xuICAgICAgICBhZGRCb3JkZXJOb2RlKGcsIFwiYm9yZGVyUmlnaHRcIiwgXCJfYnJcIiwgdiwgbm9kZSwgcmFuayk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgXy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwgZGZzKTtcbn1cblxuZnVuY3Rpb24gYWRkQm9yZGVyTm9kZShnLCBwcm9wLCBwcmVmaXgsIHNnLCBzZ05vZGUsIHJhbmspIHtcbiAgdmFyIGxhYmVsID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwLCByYW5rOiByYW5rLCBib3JkZXJUeXBlOiBwcm9wIH07XG4gIHZhciBwcmV2ID0gc2dOb2RlW3Byb3BdW3JhbmsgLSAxXTtcbiAgdmFyIGN1cnIgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcImJvcmRlclwiLCBsYWJlbCwgcHJlZml4KTtcbiAgc2dOb2RlW3Byb3BdW3JhbmtdID0gY3VycjtcbiAgZy5zZXRQYXJlbnQoY3Vyciwgc2cpO1xuICBpZiAocHJldikge1xuICAgIGcuc2V0RWRnZShwcmV2LCBjdXJyLCB7IHdlaWdodDogMSB9KTtcbiAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYWRqdXN0OiBhZGp1c3QsXG4gIHVuZG86IHVuZG9cbn07XG5cbmZ1bmN0aW9uIGFkanVzdChnKSB7XG4gIHZhciByYW5rRGlyID0gZy5ncmFwaCgpLnJhbmtkaXIudG9Mb3dlckNhc2UoKTtcbiAgaWYgKHJhbmtEaXIgPT09IFwibHJcIiB8fCByYW5rRGlyID09PSBcInJsXCIpIHtcbiAgICBzd2FwV2lkdGhIZWlnaHQoZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5kbyhnKSB7XG4gIHZhciByYW5rRGlyID0gZy5ncmFwaCgpLnJhbmtkaXIudG9Mb3dlckNhc2UoKTtcbiAgaWYgKHJhbmtEaXIgPT09IFwiYnRcIiB8fCByYW5rRGlyID09PSBcInJsXCIpIHtcbiAgICByZXZlcnNlWShnKTtcbiAgfVxuXG4gIGlmIChyYW5rRGlyID09PSBcImxyXCIgfHwgcmFua0RpciA9PT0gXCJybFwiKSB7XG4gICAgc3dhcFhZKGcpO1xuICAgIHN3YXBXaWR0aEhlaWdodChnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzd2FwV2lkdGhIZWlnaHQoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHN3YXBXaWR0aEhlaWdodE9uZShnLm5vZGUodikpOyB9KTtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkgeyBzd2FwV2lkdGhIZWlnaHRPbmUoZy5lZGdlKGUpKTsgfSk7XG59XG5cbmZ1bmN0aW9uIHN3YXBXaWR0aEhlaWdodE9uZShhdHRycykge1xuICB2YXIgdyA9IGF0dHJzLndpZHRoO1xuICBhdHRycy53aWR0aCA9IGF0dHJzLmhlaWdodDtcbiAgYXR0cnMuaGVpZ2h0ID0gdztcbn1cblxuZnVuY3Rpb24gcmV2ZXJzZVkoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHJldmVyc2VZT25lKGcubm9kZSh2KSk7IH0pO1xuXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBfLmZvckVhY2goZWRnZS5wb2ludHMsIHJldmVyc2VZT25lKTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ5XCIpKSB7XG4gICAgICByZXZlcnNlWU9uZShlZGdlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXZlcnNlWU9uZShhdHRycykge1xuICBhdHRycy55ID0gLWF0dHJzLnk7XG59XG5cbmZ1bmN0aW9uIHN3YXBYWShnKSB7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgc3dhcFhZT25lKGcubm9kZSh2KSk7IH0pO1xuXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBfLmZvckVhY2goZWRnZS5wb2ludHMsIHN3YXBYWU9uZSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieFwiKSkge1xuICAgICAgc3dhcFhZT25lKGVkZ2UpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN3YXBYWU9uZShhdHRycykge1xuICB2YXIgeCA9IGF0dHJzLng7XG4gIGF0dHJzLnggPSBhdHRycy55O1xuICBhdHRycy55ID0geDtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdE9yZGVyO1xuXG4vKlxuICogQXNzaWducyBhbiBpbml0aWFsIG9yZGVyIHZhbHVlIGZvciBlYWNoIG5vZGUgYnkgcGVyZm9ybWluZyBhIERGUyBzZWFyY2hcbiAqIHN0YXJ0aW5nIGZyb20gbm9kZXMgaW4gdGhlIGZpcnN0IHJhbmsuIE5vZGVzIGFyZSBhc3NpZ25lZCBhbiBvcmRlciBpbiB0aGVpclxuICogcmFuayBhcyB0aGV5IGFyZSBmaXJzdCB2aXNpdGVkLlxuICpcbiAqIFRoaXMgYXBwcm9hY2ggY29tZXMgZnJvbSBHYW5zbmVyLCBldCBhbC4sIFwiQSBUZWNobmlxdWUgZm9yIERyYXdpbmcgRGlyZWN0ZWRcbiAqIEdyYXBocy5cIlxuICpcbiAqIFJldHVybnMgYSBsYXllcmluZyBtYXRyaXggd2l0aCBhbiBhcnJheSBwZXIgbGF5ZXIgYW5kIGVhY2ggbGF5ZXIgc29ydGVkIGJ5XG4gKiB0aGUgb3JkZXIgb2YgaXRzIG5vZGVzLlxuICovXG5mdW5jdGlvbiBpbml0T3JkZXIoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgc2ltcGxlTm9kZXMgPSBfLmZpbHRlcihnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gIWcuY2hpbGRyZW4odikubGVuZ3RoO1xuICB9KTtcbiAgdmFyIG1heFJhbmsgPSBfLm1heChfLm1hcChzaW1wbGVOb2RlcywgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLnJhbms7IH0pKTtcbiAgdmFyIGxheWVycyA9IF8ubWFwKF8ucmFuZ2UobWF4UmFuayArIDEpLCBmdW5jdGlvbigpIHsgcmV0dXJuIFtdOyB9KTtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkgcmV0dXJuO1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGxheWVyc1tub2RlLnJhbmtdLnB1c2godik7XG4gICAgXy5mb3JFYWNoKGcuc3VjY2Vzc29ycyh2KSwgZGZzKTtcbiAgfVxuXG4gIHZhciBvcmRlcmVkVnMgPSBfLnNvcnRCeShzaW1wbGVOb2RlcywgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLnJhbms7IH0pO1xuICBfLmZvckVhY2gob3JkZXJlZFZzLCBkZnMpO1xuXG4gIHJldHVybiBsYXllcnM7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyb3NzQ291bnQ7XG5cbi8qXG4gKiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBsYXllcmluZyAoYW4gYXJyYXkgb2YgbGF5ZXJzLCBlYWNoIHdpdGggYW4gYXJyYXkgb2ZcbiAqIG9yZGVyZXJkIG5vZGVzKSBhbmQgYSBncmFwaCBhbmQgcmV0dXJucyBhIHdlaWdodGVkIGNyb3NzaW5nIGNvdW50LlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIG11c3QgYmUgc2ltcGxlIChub3QgYSBtdWx0aWdyYXBoKSwgZGlyZWN0ZWQsIGFuZCBpbmNsdWRlXG4gKiAgICAgICBvbmx5IHNpbXBsZSBlZGdlcy5cbiAqICAgIDIuIEVkZ2VzIGluIHRoZSBpbnB1dCBncmFwaCBtdXN0IGhhdmUgYXNzaWduZWQgd2VpZ2h0cy5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGdyYXBoIGFuZCBsYXllcmluZyBtYXRyaXggYXJlIGxlZnQgdW5jaGFuZ2VkLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIGlzIGRlcml2ZWQgZnJvbSBCYXJ0aCwgZXQgYWwuLCBcIkJpbGF5ZXIgQ3Jvc3MgQ291bnRpbmcuXCJcbiAqL1xuZnVuY3Rpb24gY3Jvc3NDb3VudChnLCBsYXllcmluZykge1xuICB2YXIgY2MgPSAwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxheWVyaW5nLmxlbmd0aDsgKytpKSB7XG4gICAgY2MgKz0gdHdvTGF5ZXJDcm9zc0NvdW50KGcsIGxheWVyaW5nW2ktMV0sIGxheWVyaW5nW2ldKTtcbiAgfVxuICByZXR1cm4gY2M7XG59XG5cbmZ1bmN0aW9uIHR3b0xheWVyQ3Jvc3NDb3VudChnLCBub3J0aExheWVyLCBzb3V0aExheWVyKSB7XG4gIC8vIFNvcnQgYWxsIG9mIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBub3J0aCBhbmQgc291dGggbGF5ZXJzIGJ5IHRoZWlyIHBvc2l0aW9uXG4gIC8vIGluIHRoZSBub3J0aCBsYXllciBhbmQgdGhlbiB0aGUgc291dGguIE1hcCB0aGVzZSBlZGdlcyB0byB0aGUgcG9zaXRpb24gb2ZcbiAgLy8gdGhlaXIgaGVhZCBpbiB0aGUgc291dGggbGF5ZXIuXG4gIHZhciBzb3V0aFBvcyA9IF8uemlwT2JqZWN0KHNvdXRoTGF5ZXIsXG4gICAgXy5tYXAoc291dGhMYXllciwgZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIGk7IH0pKTtcbiAgdmFyIHNvdXRoRW50cmllcyA9IF8uZmxhdHRlbihfLm1hcChub3J0aExheWVyLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIF8uc29ydEJ5KF8ubWFwKGcub3V0RWRnZXModiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiB7IHBvczogc291dGhQb3NbZS53XSwgd2VpZ2h0OiBnLmVkZ2UoZSkud2VpZ2h0IH07XG4gICAgfSksIFwicG9zXCIpO1xuICB9KSwgdHJ1ZSk7XG5cbiAgLy8gQnVpbGQgdGhlIGFjY3VtdWxhdG9yIHRyZWVcbiAgdmFyIGZpcnN0SW5kZXggPSAxO1xuICB3aGlsZSAoZmlyc3RJbmRleCA8IHNvdXRoTGF5ZXIubGVuZ3RoKSBmaXJzdEluZGV4IDw8PSAxO1xuICB2YXIgdHJlZVNpemUgPSAyICogZmlyc3RJbmRleCAtIDE7XG4gIGZpcnN0SW5kZXggLT0gMTtcbiAgdmFyIHRyZWUgPSBfLm1hcChuZXcgQXJyYXkodHJlZVNpemUpLCBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH0pO1xuXG4gIC8vIENhbGN1bGF0ZSB0aGUgd2VpZ2h0ZWQgY3Jvc3NpbmdzXG4gIHZhciBjYyA9IDA7XG4gIF8uZm9yRWFjaChzb3V0aEVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbnRyeSkge1xuICAgIHZhciBpbmRleCA9IGVudHJ5LnBvcyArIGZpcnN0SW5kZXg7XG4gICAgdHJlZVtpbmRleF0gKz0gZW50cnkud2VpZ2h0O1xuICAgIHZhciB3ZWlnaHRTdW0gPSAwO1xuICAgIHdoaWxlIChpbmRleCA+IDApIHtcbiAgICAgIGlmIChpbmRleCAlIDIpIHtcbiAgICAgICAgd2VpZ2h0U3VtICs9IHRyZWVbaW5kZXggKyAxXTtcbiAgICAgIH1cbiAgICAgIGluZGV4ID0gKGluZGV4IC0gMSkgPj4gMTtcbiAgICAgIHRyZWVbaW5kZXhdICs9IGVudHJ5LndlaWdodDtcbiAgICB9XG4gICAgY2MgKz0gZW50cnkud2VpZ2h0ICogd2VpZ2h0U3VtO1xuICB9KSk7XG5cbiAgcmV0dXJuIGNjO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhcnljZW50ZXI7XG5cbmZ1bmN0aW9uIGJhcnljZW50ZXIoZywgbW92YWJsZSkge1xuICByZXR1cm4gXy5tYXAobW92YWJsZSwgZnVuY3Rpb24odikge1xuICAgIHZhciBpblYgPSBnLmluRWRnZXModik7XG4gICAgaWYgKCFpblYubGVuZ3RoKSB7XG4gICAgICByZXR1cm4geyB2OiB2IH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXN1bHQgPSBfLnJlZHVjZShpblYsIGZ1bmN0aW9uKGFjYywgZSkge1xuICAgICAgICB2YXIgZWRnZSA9IGcuZWRnZShlKSxcbiAgICAgICAgICBub2RlVSA9IGcubm9kZShlLnYpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1bTogYWNjLnN1bSArIChlZGdlLndlaWdodCAqIG5vZGVVLm9yZGVyKSxcbiAgICAgICAgICB3ZWlnaHQ6IGFjYy53ZWlnaHQgKyBlZGdlLndlaWdodFxuICAgICAgICB9O1xuICAgICAgfSwgeyBzdW06IDAsIHdlaWdodDogMCB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdjogdixcbiAgICAgICAgYmFyeWNlbnRlcjogcmVzdWx0LnN1bSAvIHJlc3VsdC53ZWlnaHQsXG4gICAgICAgIHdlaWdodDogcmVzdWx0LndlaWdodFxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufVxuXG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlc29sdmVDb25mbGljdHM7XG5cbi8qXG4gKiBHaXZlbiBhIGxpc3Qgb2YgZW50cmllcyBvZiB0aGUgZm9ybSB7diwgYmFyeWNlbnRlciwgd2VpZ2h0fSBhbmQgYVxuICogY29uc3RyYWludCBncmFwaCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmVzb2x2ZSBhbnkgY29uZmxpY3RzIGJldHdlZW4gdGhlXG4gKiBjb25zdHJhaW50IGdyYXBoIGFuZCB0aGUgYmFyeWNlbnRlcnMgZm9yIHRoZSBlbnRyaWVzLiBJZiB0aGUgYmFyeWNlbnRlcnMgZm9yXG4gKiBhbiBlbnRyeSB3b3VsZCB2aW9sYXRlIGEgY29uc3RyYWludCBpbiB0aGUgY29uc3RyYWludCBncmFwaCB0aGVuIHdlIGNvYWxlc2NlXG4gKiB0aGUgbm9kZXMgaW4gdGhlIGNvbmZsaWN0IGludG8gYSBuZXcgbm9kZSB0aGF0IHJlc3BlY3RzIHRoZSBjb250cmFpbnQgYW5kXG4gKiBhZ2dyZWdhdGVzIGJhcnljZW50ZXIgYW5kIHdlaWdodCBpbmZvcm1hdGlvbi5cbiAqXG4gKiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiBpbiBGb3JzdGVyLCBcIkEgRmFzdCBhbmRcbiAqIFNpbXBsZSBIdWVyaXN0aWMgZm9yIENvbnN0cmFpbmVkIFR3by1MZXZlbCBDcm9zc2luZyBSZWR1Y3Rpb24sXCIgdGhvdWdodCBpdFxuICogZGlmZmVycyBpbiBzb21lIHNwZWNpZmljIGRldGFpbHMuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gRWFjaCBlbnRyeSBoYXMgdGhlIGZvcm0ge3YsIGJhcnljZW50ZXIsIHdlaWdodH0sIG9yIGlmIHRoZSBub2RlIGhhc1xuICogICAgICAgbm8gYmFyeWNlbnRlciwgdGhlbiB7dn0uXG4gKlxuICogUmV0dXJuczpcbiAqXG4gKiAgICBBIG5ldyBsaXN0IG9mIGVudHJpZXMgb2YgdGhlIGZvcm0ge3ZzLCBpLCBiYXJ5Y2VudGVyLCB3ZWlnaHR9LiBUaGUgbGlzdFxuICogICAgYHZzYCBtYXkgZWl0aGVyIGJlIGEgc2luZ2xldG9uIG9yIGl0IG1heSBiZSBhbiBhZ2dyZWdhdGlvbiBvZiBub2Rlc1xuICogICAgb3JkZXJlZCBzdWNoIHRoYXQgdGhleSBkbyBub3QgdmlvbGF0ZSBjb25zdHJhaW50cyBmcm9tIHRoZSBjb25zdHJhaW50XG4gKiAgICBncmFwaC4gVGhlIHByb3BlcnR5IGBpYCBpcyB0aGUgbG93ZXN0IG9yaWdpbmFsIGluZGV4IG9mIGFueSBvZiB0aGVcbiAqICAgIGVsZW1lbnRzIGluIGB2c2AuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVDb25mbGljdHMoZW50cmllcywgY2cpIHtcbiAgdmFyIG1hcHBlZEVudHJpZXMgPSB7fTtcbiAgXy5mb3JFYWNoKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5LCBpKSB7XG4gICAgdmFyIHRtcCA9IG1hcHBlZEVudHJpZXNbZW50cnkudl0gPSB7XG4gICAgICBpbmRlZ3JlZTogMCxcbiAgICAgIFwiaW5cIjogW10sXG4gICAgICBvdXQ6IFtdLFxuICAgICAgdnM6IFtlbnRyeS52XSxcbiAgICAgIGk6IGlcbiAgICB9O1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChlbnRyeS5iYXJ5Y2VudGVyKSkge1xuICAgICAgdG1wLmJhcnljZW50ZXIgPSBlbnRyeS5iYXJ5Y2VudGVyO1xuICAgICAgdG1wLndlaWdodCA9IGVudHJ5LndlaWdodDtcbiAgICB9XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChjZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVudHJ5ViA9IG1hcHBlZEVudHJpZXNbZS52XTtcbiAgICB2YXIgZW50cnlXID0gbWFwcGVkRW50cmllc1tlLnddO1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChlbnRyeVYpICYmICFfLmlzVW5kZWZpbmVkKGVudHJ5VykpIHtcbiAgICAgIGVudHJ5Vy5pbmRlZ3JlZSsrO1xuICAgICAgZW50cnlWLm91dC5wdXNoKG1hcHBlZEVudHJpZXNbZS53XSk7XG4gICAgfVxuICB9KTtcblxuICB2YXIgc291cmNlU2V0ID0gXy5maWx0ZXIobWFwcGVkRW50cmllcywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICByZXR1cm4gIWVudHJ5LmluZGVncmVlO1xuICB9KTtcblxuICByZXR1cm4gZG9SZXNvbHZlQ29uZmxpY3RzKHNvdXJjZVNldCk7XG59XG5cbmZ1bmN0aW9uIGRvUmVzb2x2ZUNvbmZsaWN0cyhzb3VyY2VTZXQpIHtcbiAgdmFyIGVudHJpZXMgPSBbXTtcblxuICBmdW5jdGlvbiBoYW5kbGVJbih2RW50cnkpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24odUVudHJ5KSB7XG4gICAgICBpZiAodUVudHJ5Lm1lcmdlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZCh1RW50cnkuYmFyeWNlbnRlcikgfHxcbiAgICAgICAgICBfLmlzVW5kZWZpbmVkKHZFbnRyeS5iYXJ5Y2VudGVyKSB8fFxuICAgICAgICAgIHVFbnRyeS5iYXJ5Y2VudGVyID49IHZFbnRyeS5iYXJ5Y2VudGVyKSB7XG4gICAgICAgIG1lcmdlRW50cmllcyh2RW50cnksIHVFbnRyeSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU91dCh2RW50cnkpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24od0VudHJ5KSB7XG4gICAgICB3RW50cnlbXCJpblwiXS5wdXNoKHZFbnRyeSk7XG4gICAgICBpZiAoLS13RW50cnkuaW5kZWdyZWUgPT09IDApIHtcbiAgICAgICAgc291cmNlU2V0LnB1c2god0VudHJ5KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgd2hpbGUgKHNvdXJjZVNldC5sZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBzb3VyY2VTZXQucG9wKCk7XG4gICAgZW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICBfLmZvckVhY2goZW50cnlbXCJpblwiXS5yZXZlcnNlKCksIGhhbmRsZUluKGVudHJ5KSk7XG4gICAgXy5mb3JFYWNoKGVudHJ5Lm91dCwgaGFuZGxlT3V0KGVudHJ5KSk7XG4gIH1cblxuICByZXR1cm4gXy5tYXAoXy5maWx0ZXIoZW50cmllcywgZnVuY3Rpb24oZW50cnkpIHsgcmV0dXJuICFlbnRyeS5tZXJnZWQ7IH0pLFxuICAgIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICByZXR1cm4gXy5waWNrKGVudHJ5LCBbXCJ2c1wiLCBcImlcIiwgXCJiYXJ5Y2VudGVyXCIsIFwid2VpZ2h0XCJdKTtcbiAgICB9KTtcblxufVxuXG5mdW5jdGlvbiBtZXJnZUVudHJpZXModGFyZ2V0LCBzb3VyY2UpIHtcbiAgdmFyIHN1bSA9IDA7XG4gIHZhciB3ZWlnaHQgPSAwO1xuXG4gIGlmICh0YXJnZXQud2VpZ2h0KSB7XG4gICAgc3VtICs9IHRhcmdldC5iYXJ5Y2VudGVyICogdGFyZ2V0LndlaWdodDtcbiAgICB3ZWlnaHQgKz0gdGFyZ2V0LndlaWdodDtcbiAgfVxuXG4gIGlmIChzb3VyY2Uud2VpZ2h0KSB7XG4gICAgc3VtICs9IHNvdXJjZS5iYXJ5Y2VudGVyICogc291cmNlLndlaWdodDtcbiAgICB3ZWlnaHQgKz0gc291cmNlLndlaWdodDtcbiAgfVxuXG4gIHRhcmdldC52cyA9IHNvdXJjZS52cy5jb25jYXQodGFyZ2V0LnZzKTtcbiAgdGFyZ2V0LmJhcnljZW50ZXIgPSBzdW0gLyB3ZWlnaHQ7XG4gIHRhcmdldC53ZWlnaHQgPSB3ZWlnaHQ7XG4gIHRhcmdldC5pID0gTWF0aC5taW4oc291cmNlLmksIHRhcmdldC5pKTtcbiAgc291cmNlLm1lcmdlZCA9IHRydWU7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuLi91dGlsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNvcnQ7XG5cbmZ1bmN0aW9uIHNvcnQoZW50cmllcywgYmlhc1JpZ2h0KSB7XG4gIHZhciBwYXJ0cyA9IHV0aWwucGFydGl0aW9uKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgcmV0dXJuIF8uaGFzKGVudHJ5LCBcImJhcnljZW50ZXJcIik7XG4gIH0pO1xuICB2YXIgc29ydGFibGUgPSBwYXJ0cy5saHMsXG4gICAgdW5zb3J0YWJsZSA9IF8uc29ydEJ5KHBhcnRzLnJocywgZnVuY3Rpb24oZW50cnkpIHsgcmV0dXJuIC1lbnRyeS5pOyB9KSxcbiAgICB2cyA9IFtdLFxuICAgIHN1bSA9IDAsXG4gICAgd2VpZ2h0ID0gMCxcbiAgICB2c0luZGV4ID0gMDtcblxuICBzb3J0YWJsZS5zb3J0KGNvbXBhcmVXaXRoQmlhcyghIWJpYXNSaWdodCkpO1xuXG4gIHZzSW5kZXggPSBjb25zdW1lVW5zb3J0YWJsZSh2cywgdW5zb3J0YWJsZSwgdnNJbmRleCk7XG5cbiAgXy5mb3JFYWNoKHNvcnRhYmxlLCBmdW5jdGlvbiAoZW50cnkpIHtcbiAgICB2c0luZGV4ICs9IGVudHJ5LnZzLmxlbmd0aDtcbiAgICB2cy5wdXNoKGVudHJ5LnZzKTtcbiAgICBzdW0gKz0gZW50cnkuYmFyeWNlbnRlciAqIGVudHJ5LndlaWdodDtcbiAgICB3ZWlnaHQgKz0gZW50cnkud2VpZ2h0O1xuICAgIHZzSW5kZXggPSBjb25zdW1lVW5zb3J0YWJsZSh2cywgdW5zb3J0YWJsZSwgdnNJbmRleCk7XG4gIH0pO1xuXG4gIHZhciByZXN1bHQgPSB7IHZzOiBfLmZsYXR0ZW4odnMsIHRydWUpIH07XG4gIGlmICh3ZWlnaHQpIHtcbiAgICByZXN1bHQuYmFyeWNlbnRlciA9IHN1bSAvIHdlaWdodDtcbiAgICByZXN1bHQud2VpZ2h0ID0gd2VpZ2h0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVVbnNvcnRhYmxlKHZzLCB1bnNvcnRhYmxlLCBpbmRleCkge1xuICB2YXIgbGFzdDtcbiAgd2hpbGUgKHVuc29ydGFibGUubGVuZ3RoICYmIChsYXN0ID0gXy5sYXN0KHVuc29ydGFibGUpKS5pIDw9IGluZGV4KSB7XG4gICAgdW5zb3J0YWJsZS5wb3AoKTtcbiAgICB2cy5wdXNoKGxhc3QudnMpO1xuICAgIGluZGV4Kys7XG4gIH1cbiAgcmV0dXJuIGluZGV4O1xufVxuXG5mdW5jdGlvbiBjb21wYXJlV2l0aEJpYXMoYmlhcykge1xuICByZXR1cm4gZnVuY3Rpb24oZW50cnlWLCBlbnRyeVcpIHtcbiAgICBpZiAoZW50cnlWLmJhcnljZW50ZXIgPCBlbnRyeVcuYmFyeWNlbnRlcikge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSBpZiAoZW50cnlWLmJhcnljZW50ZXIgPiBlbnRyeVcuYmFyeWNlbnRlcikge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuICFiaWFzID8gZW50cnlWLmkgLSBlbnRyeVcuaSA6IGVudHJ5Vy5pIC0gZW50cnlWLmk7XG4gIH07XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgYmFyeWNlbnRlciA9IHJlcXVpcmUoXCIuL2JhcnljZW50ZXJcIik7XG52YXIgcmVzb2x2ZUNvbmZsaWN0cyA9IHJlcXVpcmUoXCIuL3Jlc29sdmUtY29uZmxpY3RzXCIpO1xudmFyIHNvcnQgPSByZXF1aXJlKFwiLi9zb3J0XCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNvcnRTdWJncmFwaDtcblxuZnVuY3Rpb24gc29ydFN1YmdyYXBoKGcsIHYsIGNnLCBiaWFzUmlnaHQpIHtcbiAgdmFyIG1vdmFibGUgPSBnLmNoaWxkcmVuKHYpO1xuICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgdmFyIGJsID0gbm9kZSA/IG5vZGUuYm9yZGVyTGVmdCA6IHVuZGVmaW5lZDtcbiAgdmFyIGJyID0gbm9kZSA/IG5vZGUuYm9yZGVyUmlnaHQ6IHVuZGVmaW5lZDtcbiAgdmFyIHN1YmdyYXBocyA9IHt9O1xuXG4gIGlmIChibCkge1xuICAgIG1vdmFibGUgPSBfLmZpbHRlcihtb3ZhYmxlLCBmdW5jdGlvbih3KSB7XG4gICAgICByZXR1cm4gdyAhPT0gYmwgJiYgdyAhPT0gYnI7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgYmFyeWNlbnRlcnMgPSBiYXJ5Y2VudGVyKGcsIG1vdmFibGUpO1xuICBfLmZvckVhY2goYmFyeWNlbnRlcnMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgaWYgKGcuY2hpbGRyZW4oZW50cnkudikubGVuZ3RoKSB7XG4gICAgICB2YXIgc3ViZ3JhcGhSZXN1bHQgPSBzb3J0U3ViZ3JhcGgoZywgZW50cnkudiwgY2csIGJpYXNSaWdodCk7XG4gICAgICBzdWJncmFwaHNbZW50cnkudl0gPSBzdWJncmFwaFJlc3VsdDtcbiAgICAgIGlmIChfLmhhcyhzdWJncmFwaFJlc3VsdCwgXCJiYXJ5Y2VudGVyXCIpKSB7XG4gICAgICAgIG1lcmdlQmFyeWNlbnRlcnMoZW50cnksIHN1YmdyYXBoUmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHZhciBlbnRyaWVzID0gcmVzb2x2ZUNvbmZsaWN0cyhiYXJ5Y2VudGVycywgY2cpO1xuICBleHBhbmRTdWJncmFwaHMoZW50cmllcywgc3ViZ3JhcGhzKTtcblxuICB2YXIgcmVzdWx0ID0gc29ydChlbnRyaWVzLCBiaWFzUmlnaHQpO1xuXG4gIGlmIChibCkge1xuICAgIHJlc3VsdC52cyA9IF8uZmxhdHRlbihbYmwsIHJlc3VsdC52cywgYnJdLCB0cnVlKTtcbiAgICBpZiAoZy5wcmVkZWNlc3NvcnMoYmwpLmxlbmd0aCkge1xuICAgICAgdmFyIGJsUHJlZCA9IGcubm9kZShnLnByZWRlY2Vzc29ycyhibClbMF0pLFxuICAgICAgICBiclByZWQgPSBnLm5vZGUoZy5wcmVkZWNlc3NvcnMoYnIpWzBdKTtcbiAgICAgIGlmICghXy5oYXMocmVzdWx0LCBcImJhcnljZW50ZXJcIikpIHtcbiAgICAgICAgcmVzdWx0LmJhcnljZW50ZXIgPSAwO1xuICAgICAgICByZXN1bHQud2VpZ2h0ID0gMDtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5iYXJ5Y2VudGVyID0gKHJlc3VsdC5iYXJ5Y2VudGVyICogcmVzdWx0LndlaWdodCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBibFByZWQub3JkZXIgKyBiclByZWQub3JkZXIpIC8gKHJlc3VsdC53ZWlnaHQgKyAyKTtcbiAgICAgIHJlc3VsdC53ZWlnaHQgKz0gMjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBleHBhbmRTdWJncmFwaHMoZW50cmllcywgc3ViZ3JhcGhzKSB7XG4gIF8uZm9yRWFjaChlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGVudHJ5LnZzID0gXy5mbGF0dGVuKGVudHJ5LnZzLm1hcChmdW5jdGlvbih2KSB7XG4gICAgICBpZiAoc3ViZ3JhcGhzW3ZdKSB7XG4gICAgICAgIHJldHVybiBzdWJncmFwaHNbdl0udnM7XG4gICAgICB9XG4gICAgICByZXR1cm4gdjtcbiAgICB9KSwgdHJ1ZSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtZXJnZUJhcnljZW50ZXJzKHRhcmdldCwgb3RoZXIpIHtcbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHRhcmdldC5iYXJ5Y2VudGVyKSkge1xuICAgIHRhcmdldC5iYXJ5Y2VudGVyID0gKHRhcmdldC5iYXJ5Y2VudGVyICogdGFyZ2V0LndlaWdodCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuYmFyeWNlbnRlciAqIG90aGVyLndlaWdodCkgL1xuICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldC53ZWlnaHQgKyBvdGhlci53ZWlnaHQpO1xuICAgIHRhcmdldC53ZWlnaHQgKz0gb3RoZXIud2VpZ2h0O1xuICB9IGVsc2Uge1xuICAgIHRhcmdldC5iYXJ5Y2VudGVyID0gb3RoZXIuYmFyeWNlbnRlcjtcbiAgICB0YXJnZXQud2VpZ2h0ID0gb3RoZXIud2VpZ2h0O1xuICB9XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhsaWJcIikuR3JhcGg7XG5cbm1vZHVsZS5leHBvcnRzID0gYnVpbGRMYXllckdyYXBoO1xuXG4vKlxuICogQ29uc3RydWN0cyBhIGdyYXBoIHRoYXQgY2FuIGJlIHVzZWQgdG8gc29ydCBhIGxheWVyIG9mIG5vZGVzLiBUaGUgZ3JhcGggd2lsbFxuICogY29udGFpbiBhbGwgYmFzZSBhbmQgc3ViZ3JhcGggbm9kZXMgZnJvbSB0aGUgcmVxdWVzdCBsYXllciBpbiB0aGVpciBvcmlnaW5hbFxuICogaGllcmFyY2h5IGFuZCBhbnkgZWRnZXMgdGhhdCBhcmUgaW5jaWRlbnQgb24gdGhlc2Ugbm9kZXMgYW5kIGFyZSBvZiB0aGUgdHlwZVxuICogcmVxdWVzdGVkIGJ5IHRoZSBcInJlbGF0aW9uc2hpcFwiIHBhcmFtZXRlci5cbiAqXG4gKiBOb2RlcyBmcm9tIHRoZSByZXF1ZXN0ZWQgcmFuayB0aGF0IGRvIG5vdCBoYXZlIHBhcmVudHMgYXJlIGFzc2lnbmVkIGEgcm9vdFxuICogbm9kZSBpbiB0aGUgb3V0cHV0IGdyYXBoLCB3aGljaCBpcyBzZXQgaW4gdGhlIHJvb3QgZ3JhcGggYXR0cmlidXRlLiBUaGlzXG4gKiBtYWtlcyBpdCBlYXN5IHRvIHdhbGsgdGhlIGhpZXJhcmNoeSBvZiBtb3ZhYmxlIG5vZGVzIGR1cmluZyBvcmRlcmluZy5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBhIERBR1xuICogICAgMi4gQmFzZSBub2RlcyBpbiB0aGUgaW5wdXQgZ3JhcGggaGF2ZSBhIHJhbmsgYXR0cmlidXRlXG4gKiAgICAzLiBTdWJncmFwaCBub2RlcyBpbiB0aGUgaW5wdXQgZ3JhcGggaGFzIG1pblJhbmsgYW5kIG1heFJhbmsgYXR0cmlidXRlc1xuICogICAgNC4gRWRnZXMgaGF2ZSBhbiBhc3NpZ25lZCB3ZWlnaHRcbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gT3V0cHV0IGdyYXBoIGhhcyBhbGwgbm9kZXMgaW4gdGhlIG1vdmFibGUgcmFuayB3aXRoIHByZXNlcnZlZFxuICogICAgICAgaGllcmFyY2h5LlxuICogICAgMi4gUm9vdCBub2RlcyBpbiB0aGUgbW92YWJsZSBsYXllciBhcmUgbWFkZSBjaGlsZHJlbiBvZiB0aGUgbm9kZVxuICogICAgICAgaW5kaWNhdGVkIGJ5IHRoZSByb290IGF0dHJpYnV0ZSBvZiB0aGUgZ3JhcGguXG4gKiAgICAzLiBOb24tbW92YWJsZSBub2RlcyBpbmNpZGVudCBvbiBtb3ZhYmxlIG5vZGVzLCBzZWxlY3RlZCBieSB0aGVcbiAqICAgICAgIHJlbGF0aW9uc2hpcCBwYXJhbWV0ZXIsIGFyZSBpbmNsdWRlZCBpbiB0aGUgZ3JhcGggKHdpdGhvdXQgaGllcmFyY2h5KS5cbiAqICAgIDQuIEVkZ2VzIGluY2lkZW50IG9uIG1vdmFibGUgbm9kZXMsIHNlbGVjdGVkIGJ5IHRoZSByZWxhdGlvbnNoaXBcbiAqICAgICAgIHBhcmFtZXRlciwgYXJlIGFkZGVkIHRvIHRoZSBvdXRwdXQgZ3JhcGguXG4gKiAgICA1LiBUaGUgd2VpZ2h0cyBmb3IgY29waWVkIGVkZ2VzIGFyZSBhZ2dyZWdhdGVkIGFzIG5lZWQsIHNpbmNlIHRoZSBvdXRwdXRcbiAqICAgICAgIGdyYXBoIGlzIG5vdCBhIG11bHRpLWdyYXBoLlxuICovXG5mdW5jdGlvbiBidWlsZExheWVyR3JhcGgoZywgcmFuaywgcmVsYXRpb25zaGlwKSB7XG4gIHZhciByb290ID0gY3JlYXRlUm9vdE5vZGUoZyksXG4gICAgcmVzdWx0ID0gbmV3IEdyYXBoKHsgY29tcG91bmQ6IHRydWUgfSkuc2V0R3JhcGgoeyByb290OiByb290IH0pXG4gICAgICAuc2V0RGVmYXVsdE5vZGVMYWJlbChmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodik7IH0pO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KSxcbiAgICAgIHBhcmVudCA9IGcucGFyZW50KHYpO1xuXG4gICAgaWYgKG5vZGUucmFuayA9PT0gcmFuayB8fCBub2RlLm1pblJhbmsgPD0gcmFuayAmJiByYW5rIDw9IG5vZGUubWF4UmFuaykge1xuICAgICAgcmVzdWx0LnNldE5vZGUodik7XG4gICAgICByZXN1bHQuc2V0UGFyZW50KHYsIHBhcmVudCB8fCByb290KTtcblxuICAgICAgLy8gVGhpcyBhc3N1bWVzIHdlIGhhdmUgb25seSBzaG9ydCBlZGdlcyFcbiAgICAgIF8uZm9yRWFjaChnW3JlbGF0aW9uc2hpcF0odiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgdmFyIHUgPSBlLnYgPT09IHYgPyBlLncgOiBlLnYsXG4gICAgICAgICAgZWRnZSA9IHJlc3VsdC5lZGdlKHUsIHYpLFxuICAgICAgICAgIHdlaWdodCA9ICFfLmlzVW5kZWZpbmVkKGVkZ2UpID8gZWRnZS53ZWlnaHQgOiAwO1xuICAgICAgICByZXN1bHQuc2V0RWRnZSh1LCB2LCB7IHdlaWdodDogZy5lZGdlKGUpLndlaWdodCArIHdlaWdodCB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoXy5oYXMobm9kZSwgXCJtaW5SYW5rXCIpKSB7XG4gICAgICAgIHJlc3VsdC5zZXROb2RlKHYsIHtcbiAgICAgICAgICBib3JkZXJMZWZ0OiBub2RlLmJvcmRlckxlZnRbcmFua10sXG4gICAgICAgICAgYm9yZGVyUmlnaHQ6IG5vZGUuYm9yZGVyUmlnaHRbcmFua11cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSb290Tm9kZShnKSB7XG4gIHZhciB2O1xuICB3aGlsZSAoZy5oYXNOb2RlKCh2ID0gXy51bmlxdWVJZChcIl9yb290XCIpKSkpO1xuICByZXR1cm4gdjtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBhZGRTdWJncmFwaENvbnN0cmFpbnRzO1xuXG5mdW5jdGlvbiBhZGRTdWJncmFwaENvbnN0cmFpbnRzKGcsIGNnLCB2cykge1xuICB2YXIgcHJldiA9IHt9LFxuICAgIHJvb3RQcmV2O1xuXG4gIF8uZm9yRWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIHZhciBjaGlsZCA9IGcucGFyZW50KHYpLFxuICAgICAgcGFyZW50LFxuICAgICAgcHJldkNoaWxkO1xuICAgIHdoaWxlIChjaGlsZCkge1xuICAgICAgcGFyZW50ID0gZy5wYXJlbnQoY2hpbGQpO1xuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICBwcmV2Q2hpbGQgPSBwcmV2W3BhcmVudF07XG4gICAgICAgIHByZXZbcGFyZW50XSA9IGNoaWxkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJldkNoaWxkID0gcm9vdFByZXY7XG4gICAgICAgIHJvb3RQcmV2ID0gY2hpbGQ7XG4gICAgICB9XG4gICAgICBpZiAocHJldkNoaWxkICYmIHByZXZDaGlsZCAhPT0gY2hpbGQpIHtcbiAgICAgICAgY2cuc2V0RWRnZShwcmV2Q2hpbGQsIGNoaWxkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2hpbGQgPSBwYXJlbnQ7XG4gICAgfVxuICB9KTtcblxuICAvKlxuICBmdW5jdGlvbiBkZnModikge1xuICAgIHZhciBjaGlsZHJlbiA9IHYgPyBnLmNoaWxkcmVuKHYpIDogZy5jaGlsZHJlbigpO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHZhciBtaW4gPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgICAgICAgc3ViZ3JhcGhzID0gW107XG4gICAgICBfLmVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICAgIHZhciBjaGlsZE1pbiA9IGRmcyhjaGlsZCk7XG4gICAgICAgIGlmIChnLmNoaWxkcmVuKGNoaWxkKS5sZW5ndGgpIHtcbiAgICAgICAgICBzdWJncmFwaHMucHVzaCh7IHY6IGNoaWxkLCBvcmRlcjogY2hpbGRNaW4gfSk7XG4gICAgICAgIH1cbiAgICAgICAgbWluID0gTWF0aC5taW4obWluLCBjaGlsZE1pbik7XG4gICAgICB9KTtcbiAgICAgIF8ucmVkdWNlKF8uc29ydEJ5KHN1YmdyYXBocywgXCJvcmRlclwiKSwgZnVuY3Rpb24ocHJldiwgY3Vycikge1xuICAgICAgICBjZy5zZXRFZGdlKHByZXYudiwgY3Vyci52KTtcbiAgICAgICAgcmV0dXJuIGN1cnI7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBtaW47XG4gICAgfVxuICAgIHJldHVybiBnLm5vZGUodikub3JkZXI7XG4gIH1cbiAgZGZzKHVuZGVmaW5lZCk7XG4gICovXG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIGluaXRPcmRlciA9IHJlcXVpcmUoXCIuL2luaXQtb3JkZXJcIik7XG52YXIgY3Jvc3NDb3VudCA9IHJlcXVpcmUoXCIuL2Nyb3NzLWNvdW50XCIpO1xudmFyIHNvcnRTdWJncmFwaCA9IHJlcXVpcmUoXCIuL3NvcnQtc3ViZ3JhcGhcIik7XG52YXIgYnVpbGRMYXllckdyYXBoID0gcmVxdWlyZShcIi4vYnVpbGQtbGF5ZXItZ3JhcGhcIik7XG52YXIgYWRkU3ViZ3JhcGhDb25zdHJhaW50cyA9IHJlcXVpcmUoXCIuL2FkZC1zdWJncmFwaC1jb25zdHJhaW50c1wiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gb3JkZXI7XG5cbi8qXG4gKiBBcHBsaWVzIGhldXJpc3RpY3MgdG8gbWluaW1pemUgZWRnZSBjcm9zc2luZ3MgaW4gdGhlIGdyYXBoIGFuZCBzZXRzIHRoZSBiZXN0XG4gKiBvcmRlciBzb2x1dGlvbiBhcyBhbiBvcmRlciBhdHRyaWJ1dGUgb24gZWFjaCBub2RlLlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEdyYXBoIG11c3QgYmUgREFHXG4gKiAgICAyLiBHcmFwaCBub2RlcyBtdXN0IGJlIG9iamVjdHMgd2l0aCBhIFwicmFua1wiIGF0dHJpYnV0ZVxuICogICAgMy4gR3JhcGggZWRnZXMgbXVzdCBoYXZlIHRoZSBcIndlaWdodFwiIGF0dHJpYnV0ZVxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBub2RlcyB3aWxsIGhhdmUgYW4gXCJvcmRlclwiIGF0dHJpYnV0ZSBiYXNlZCBvbiB0aGUgcmVzdWx0cyBvZiB0aGVcbiAqICAgICAgIGFsZ29yaXRobS5cbiAqL1xuZnVuY3Rpb24gb3JkZXIoZykge1xuICB2YXIgbWF4UmFuayA9IHV0aWwubWF4UmFuayhnKSxcbiAgICBkb3duTGF5ZXJHcmFwaHMgPSBidWlsZExheWVyR3JhcGhzKGcsIF8ucmFuZ2UoMSwgbWF4UmFuayArIDEpLCBcImluRWRnZXNcIiksXG4gICAgdXBMYXllckdyYXBocyA9IGJ1aWxkTGF5ZXJHcmFwaHMoZywgXy5yYW5nZShtYXhSYW5rIC0gMSwgLTEsIC0xKSwgXCJvdXRFZGdlc1wiKTtcblxuICB2YXIgbGF5ZXJpbmcgPSBpbml0T3JkZXIoZyk7XG4gIGFzc2lnbk9yZGVyKGcsIGxheWVyaW5nKTtcblxuICB2YXIgYmVzdENDID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIGJlc3Q7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxhc3RCZXN0ID0gMDsgbGFzdEJlc3QgPCA0OyArK2ksICsrbGFzdEJlc3QpIHtcbiAgICBzd2VlcExheWVyR3JhcGhzKGkgJSAyID8gZG93bkxheWVyR3JhcGhzIDogdXBMYXllckdyYXBocywgaSAlIDQgPj0gMik7XG5cbiAgICBsYXllcmluZyA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcbiAgICB2YXIgY2MgPSBjcm9zc0NvdW50KGcsIGxheWVyaW5nKTtcbiAgICBpZiAoY2MgPCBiZXN0Q0MpIHtcbiAgICAgIGxhc3RCZXN0ID0gMDtcbiAgICAgIGJlc3QgPSBfLmNsb25lRGVlcChsYXllcmluZyk7XG4gICAgICBiZXN0Q0MgPSBjYztcbiAgICB9XG4gIH1cblxuICBhc3NpZ25PcmRlcihnLCBiZXN0KTtcbn1cblxuZnVuY3Rpb24gYnVpbGRMYXllckdyYXBocyhnLCByYW5rcywgcmVsYXRpb25zaGlwKSB7XG4gIHJldHVybiBfLm1hcChyYW5rcywgZnVuY3Rpb24ocmFuaykge1xuICAgIHJldHVybiBidWlsZExheWVyR3JhcGgoZywgcmFuaywgcmVsYXRpb25zaGlwKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN3ZWVwTGF5ZXJHcmFwaHMobGF5ZXJHcmFwaHMsIGJpYXNSaWdodCkge1xuICB2YXIgY2cgPSBuZXcgR3JhcGgoKTtcbiAgXy5mb3JFYWNoKGxheWVyR3JhcGhzLCBmdW5jdGlvbihsZykge1xuICAgIHZhciByb290ID0gbGcuZ3JhcGgoKS5yb290O1xuICAgIHZhciBzb3J0ZWQgPSBzb3J0U3ViZ3JhcGgobGcsIHJvb3QsIGNnLCBiaWFzUmlnaHQpO1xuICAgIF8uZm9yRWFjaChzb3J0ZWQudnMsIGZ1bmN0aW9uKHYsIGkpIHtcbiAgICAgIGxnLm5vZGUodikub3JkZXIgPSBpO1xuICAgIH0pO1xuICAgIGFkZFN1YmdyYXBoQ29uc3RyYWludHMobGcsIGNnLCBzb3J0ZWQudnMpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYXNzaWduT3JkZXIoZywgbGF5ZXJpbmcpIHtcbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odiwgaSkge1xuICAgICAgZy5ub2RlKHYpLm9yZGVyID0gaTtcbiAgICB9KTtcbiAgfSk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLkdyYXBoO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi4vdXRpbFwiKTtcblxuLypcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGNvb3JkaW5hdGUgYXNzaWdubWVudCBiYXNlZCBvbiBCcmFuZGVzIGFuZCBLw7ZwZiwgXCJGYXN0XG4gKiBhbmQgU2ltcGxlIEhvcml6b250YWwgQ29vcmRpbmF0ZSBBc3NpZ25tZW50LlwiXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHBvc2l0aW9uWDogcG9zaXRpb25YLFxuICBmaW5kVHlwZTFDb25mbGljdHM6IGZpbmRUeXBlMUNvbmZsaWN0cyxcbiAgZmluZFR5cGUyQ29uZmxpY3RzOiBmaW5kVHlwZTJDb25mbGljdHMsXG4gIGFkZENvbmZsaWN0OiBhZGRDb25mbGljdCxcbiAgaGFzQ29uZmxpY3Q6IGhhc0NvbmZsaWN0LFxuICB2ZXJ0aWNhbEFsaWdubWVudDogdmVydGljYWxBbGlnbm1lbnQsXG4gIGhvcml6b250YWxDb21wYWN0aW9uOiBob3Jpem9udGFsQ29tcGFjdGlvbixcbiAgYWxpZ25Db29yZGluYXRlczogYWxpZ25Db29yZGluYXRlcyxcbiAgZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQ6IGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50LFxuICBiYWxhbmNlOiBiYWxhbmNlXG59O1xuXG4vKlxuICogTWFya3MgYWxsIGVkZ2VzIGluIHRoZSBncmFwaCB3aXRoIGEgdHlwZS0xIGNvbmZsaWN0IHdpdGggdGhlIFwidHlwZTFDb25mbGljdFwiXG4gKiBwcm9wZXJ0eS4gQSB0eXBlLTEgY29uZmxpY3QgaXMgb25lIHdoZXJlIGEgbm9uLWlubmVyIHNlZ21lbnQgY3Jvc3NlcyBhblxuICogaW5uZXIgc2VnbWVudC4gQW4gaW5uZXIgc2VnbWVudCBpcyBhbiBlZGdlIHdpdGggYm90aCBpbmNpZGVudCBub2RlcyBtYXJrZWRcbiAqIHdpdGggdGhlIFwiZHVtbXlcIiBwcm9wZXJ0eS5cbiAqXG4gKiBUaGlzIGFsZ29yaXRobSBzY2FucyBsYXllciBieSBsYXllciwgc3RhcnRpbmcgd2l0aCB0aGUgc2Vjb25kLCBmb3IgdHlwZS0xXG4gKiBjb25mbGljdHMgYmV0d2VlbiB0aGUgY3VycmVudCBsYXllciBhbmQgdGhlIHByZXZpb3VzIGxheWVyLiBGb3IgZWFjaCBsYXllclxuICogaXQgc2NhbnMgdGhlIG5vZGVzIGZyb20gbGVmdCB0byByaWdodCB1bnRpbCBpdCByZWFjaGVzIG9uZSB0aGF0IGlzIGluY2lkZW50XG4gKiBvbiBhbiBpbm5lciBzZWdtZW50LiBJdCB0aGVuIHNjYW5zIHByZWRlY2Vzc29ycyB0byBkZXRlcm1pbmUgaWYgdGhleSBoYXZlXG4gKiBlZGdlcyB0aGF0IGNyb3NzIHRoYXQgaW5uZXIgc2VnbWVudC4gQXQgdGhlIGVuZCBhIGZpbmFsIHNjYW4gaXMgZG9uZSBmb3IgYWxsXG4gKiBub2RlcyBvbiB0aGUgY3VycmVudCByYW5rIHRvIHNlZSBpZiB0aGV5IGNyb3NzIHRoZSBsYXN0IHZpc2l0ZWQgaW5uZXJcbiAqIHNlZ21lbnQuXG4gKlxuICogVGhpcyBhbGdvcml0aG0gKHNhZmVseSkgYXNzdW1lcyB0aGF0IGEgZHVtbXkgbm9kZSB3aWxsIG9ubHkgYmUgaW5jaWRlbnQgb24gYVxuICogc2luZ2xlIG5vZGUgaW4gdGhlIGxheWVycyBiZWluZyBzY2FubmVkLlxuICovXG5mdW5jdGlvbiBmaW5kVHlwZTFDb25mbGljdHMoZywgbGF5ZXJpbmcpIHtcbiAgdmFyIGNvbmZsaWN0cyA9IHt9O1xuXG4gIGZ1bmN0aW9uIHZpc2l0TGF5ZXIocHJldkxheWVyLCBsYXllcikge1xuICAgIHZhclxuICAgICAgLy8gbGFzdCB2aXNpdGVkIG5vZGUgaW4gdGhlIHByZXZpb3VzIGxheWVyIHRoYXQgaXMgaW5jaWRlbnQgb24gYW4gaW5uZXJcbiAgICAgIC8vIHNlZ21lbnQuXG4gICAgICBrMCA9IDAsXG4gICAgICAvLyBUcmFja3MgdGhlIGxhc3Qgbm9kZSBpbiB0aGlzIGxheWVyIHNjYW5uZWQgZm9yIGNyb3NzaW5ncyB3aXRoIGEgdHlwZS0xXG4gICAgICAvLyBzZWdtZW50LlxuICAgICAgc2NhblBvcyA9IDAsXG4gICAgICBwcmV2TGF5ZXJMZW5ndGggPSBwcmV2TGF5ZXIubGVuZ3RoLFxuICAgICAgbGFzdE5vZGUgPSBfLmxhc3QobGF5ZXIpO1xuXG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2LCBpKSB7XG4gICAgICB2YXIgdyA9IGZpbmRPdGhlcklubmVyU2VnbWVudE5vZGUoZywgdiksXG4gICAgICAgIGsxID0gdyA/IGcubm9kZSh3KS5vcmRlciA6IHByZXZMYXllckxlbmd0aDtcblxuICAgICAgaWYgKHcgfHwgdiA9PT0gbGFzdE5vZGUpIHtcbiAgICAgICAgXy5mb3JFYWNoKGxheWVyLnNsaWNlKHNjYW5Qb3MsIGkgKzEpLCBmdW5jdGlvbihzY2FuTm9kZSkge1xuICAgICAgICAgIF8uZm9yRWFjaChnLnByZWRlY2Vzc29ycyhzY2FuTm9kZSksIGZ1bmN0aW9uKHUpIHtcbiAgICAgICAgICAgIHZhciB1TGFiZWwgPSBnLm5vZGUodSksXG4gICAgICAgICAgICAgIHVQb3MgPSB1TGFiZWwub3JkZXI7XG4gICAgICAgICAgICBpZiAoKHVQb3MgPCBrMCB8fCBrMSA8IHVQb3MpICYmXG4gICAgICAgICAgICAgICAgISh1TGFiZWwuZHVtbXkgJiYgZy5ub2RlKHNjYW5Ob2RlKS5kdW1teSkpIHtcbiAgICAgICAgICAgICAgYWRkQ29uZmxpY3QoY29uZmxpY3RzLCB1LCBzY2FuTm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBzY2FuUG9zID0gaSArIDE7XG4gICAgICAgIGswID0gazE7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGF5ZXI7XG4gIH1cblxuICBfLnJlZHVjZShsYXllcmluZywgdmlzaXRMYXllcik7XG4gIHJldHVybiBjb25mbGljdHM7XG59XG5cbmZ1bmN0aW9uIGZpbmRUeXBlMkNvbmZsaWN0cyhnLCBsYXllcmluZykge1xuICB2YXIgY29uZmxpY3RzID0ge307XG5cbiAgZnVuY3Rpb24gc2Nhbihzb3V0aCwgc291dGhQb3MsIHNvdXRoRW5kLCBwcmV2Tm9ydGhCb3JkZXIsIG5leHROb3J0aEJvcmRlcikge1xuICAgIHZhciB2O1xuICAgIF8uZm9yRWFjaChfLnJhbmdlKHNvdXRoUG9zLCBzb3V0aEVuZCksIGZ1bmN0aW9uKGkpIHtcbiAgICAgIHYgPSBzb3V0aFtpXTtcbiAgICAgIGlmIChnLm5vZGUodikuZHVtbXkpIHtcbiAgICAgICAgXy5mb3JFYWNoKGcucHJlZGVjZXNzb3JzKHYpLCBmdW5jdGlvbih1KSB7XG4gICAgICAgICAgdmFyIHVOb2RlID0gZy5ub2RlKHUpO1xuICAgICAgICAgIGlmICh1Tm9kZS5kdW1teSAmJlxuICAgICAgICAgICAgICAodU5vZGUub3JkZXIgPCBwcmV2Tm9ydGhCb3JkZXIgfHwgdU5vZGUub3JkZXIgPiBuZXh0Tm9ydGhCb3JkZXIpKSB7XG4gICAgICAgICAgICBhZGRDb25mbGljdChjb25mbGljdHMsIHUsIHYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIGZ1bmN0aW9uIHZpc2l0TGF5ZXIobm9ydGgsIHNvdXRoKSB7XG4gICAgdmFyIHByZXZOb3J0aFBvcyA9IC0xLFxuICAgICAgbmV4dE5vcnRoUG9zLFxuICAgICAgc291dGhQb3MgPSAwO1xuXG4gICAgXy5mb3JFYWNoKHNvdXRoLCBmdW5jdGlvbih2LCBzb3V0aExvb2thaGVhZCkge1xuICAgICAgaWYgKGcubm9kZSh2KS5kdW1teSA9PT0gXCJib3JkZXJcIikge1xuICAgICAgICB2YXIgcHJlZGVjZXNzb3JzID0gZy5wcmVkZWNlc3NvcnModik7XG4gICAgICAgIGlmIChwcmVkZWNlc3NvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgbmV4dE5vcnRoUG9zID0gZy5ub2RlKHByZWRlY2Vzc29yc1swXSkub3JkZXI7XG4gICAgICAgICAgc2Nhbihzb3V0aCwgc291dGhQb3MsIHNvdXRoTG9va2FoZWFkLCBwcmV2Tm9ydGhQb3MsIG5leHROb3J0aFBvcyk7XG4gICAgICAgICAgc291dGhQb3MgPSBzb3V0aExvb2thaGVhZDtcbiAgICAgICAgICBwcmV2Tm9ydGhQb3MgPSBuZXh0Tm9ydGhQb3M7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aC5sZW5ndGgsIG5leHROb3J0aFBvcywgbm9ydGgubGVuZ3RoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzb3V0aDtcbiAgfVxuXG4gIF8ucmVkdWNlKGxheWVyaW5nLCB2aXNpdExheWVyKTtcbiAgcmV0dXJuIGNvbmZsaWN0cztcbn1cblxuZnVuY3Rpb24gZmluZE90aGVySW5uZXJTZWdtZW50Tm9kZShnLCB2KSB7XG4gIGlmIChnLm5vZGUodikuZHVtbXkpIHtcbiAgICByZXR1cm4gXy5maW5kKGcucHJlZGVjZXNzb3JzKHYpLCBmdW5jdGlvbih1KSB7XG4gICAgICByZXR1cm4gZy5ub2RlKHUpLmR1bW15O1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFkZENvbmZsaWN0KGNvbmZsaWN0cywgdiwgdykge1xuICBpZiAodiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG5cbiAgdmFyIGNvbmZsaWN0c1YgPSBjb25mbGljdHNbdl07XG4gIGlmICghY29uZmxpY3RzVikge1xuICAgIGNvbmZsaWN0c1t2XSA9IGNvbmZsaWN0c1YgPSB7fTtcbiAgfVxuICBjb25mbGljdHNWW3ddID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaGFzQ29uZmxpY3QoY29uZmxpY3RzLCB2LCB3KSB7XG4gIGlmICh2ID4gdykge1xuICAgIHZhciB0bXAgPSB2O1xuICAgIHYgPSB3O1xuICAgIHcgPSB0bXA7XG4gIH1cbiAgcmV0dXJuIF8uaGFzKGNvbmZsaWN0c1t2XSwgdyk7XG59XG5cbi8qXG4gKiBUcnkgdG8gYWxpZ24gbm9kZXMgaW50byB2ZXJ0aWNhbCBcImJsb2Nrc1wiIHdoZXJlIHBvc3NpYmxlLiBUaGlzIGFsZ29yaXRobVxuICogYXR0ZW1wdHMgdG8gYWxpZ24gYSBub2RlIHdpdGggb25lIG9mIGl0cyBtZWRpYW4gbmVpZ2hib3JzLiBJZiB0aGUgZWRnZVxuICogY29ubmVjdGluZyBhIG5laWdoYm9yIGlzIGEgdHlwZS0xIGNvbmZsaWN0IHRoZW4gd2UgaWdub3JlIHRoYXQgcG9zc2liaWxpdHkuXG4gKiBJZiBhIHByZXZpb3VzIG5vZGUgaGFzIGFscmVhZHkgZm9ybWVkIGEgYmxvY2sgd2l0aCBhIG5vZGUgYWZ0ZXIgdGhlIG5vZGVcbiAqIHdlJ3JlIHRyeWluZyB0byBmb3JtIGEgYmxvY2sgd2l0aCwgd2UgYWxzbyBpZ25vcmUgdGhhdCBwb3NzaWJpbGl0eSAtIG91clxuICogYmxvY2tzIHdvdWxkIGJlIHNwbGl0IGluIHRoYXQgc2NlbmFyaW8uXG4gKi9cbmZ1bmN0aW9uIHZlcnRpY2FsQWxpZ25tZW50KGcsIGxheWVyaW5nLCBjb25mbGljdHMsIG5laWdoYm9yRm4pIHtcbiAgdmFyIHJvb3QgPSB7fSxcbiAgICBhbGlnbiA9IHt9LFxuICAgIHBvcyA9IHt9O1xuXG4gIC8vIFdlIGNhY2hlIHRoZSBwb3NpdGlvbiBoZXJlIGJhc2VkIG9uIHRoZSBsYXllcmluZyBiZWNhdXNlIHRoZSBncmFwaCBhbmRcbiAgLy8gbGF5ZXJpbmcgbWF5IGJlIG91dCBvZiBzeW5jLiBUaGUgbGF5ZXJpbmcgbWF0cml4IGlzIG1hbmlwdWxhdGVkIHRvXG4gIC8vIGdlbmVyYXRlIGRpZmZlcmVudCBleHRyZW1lIGFsaWdubWVudHMuXG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYsIG9yZGVyKSB7XG4gICAgICByb290W3ZdID0gdjtcbiAgICAgIGFsaWduW3ZdID0gdjtcbiAgICAgIHBvc1t2XSA9IG9yZGVyO1xuICAgIH0pO1xuICB9KTtcblxuICBfLmZvckVhY2gobGF5ZXJpbmcsIGZ1bmN0aW9uKGxheWVyKSB7XG4gICAgdmFyIHByZXZJZHggPSAtMTtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYpIHtcbiAgICAgIHZhciB3cyA9IG5laWdoYm9yRm4odik7XG4gICAgICBpZiAod3MubGVuZ3RoKSB7XG4gICAgICAgIHdzID0gXy5zb3J0Qnkod3MsIGZ1bmN0aW9uKHcpIHsgcmV0dXJuIHBvc1t3XTsgfSk7XG4gICAgICAgIHZhciBtcCA9ICh3cy5sZW5ndGggLSAxKSAvIDI7XG4gICAgICAgIGZvciAodmFyIGkgPSBNYXRoLmZsb29yKG1wKSwgaWwgPSBNYXRoLmNlaWwobXApOyBpIDw9IGlsOyArK2kpIHtcbiAgICAgICAgICB2YXIgdyA9IHdzW2ldO1xuICAgICAgICAgIGlmIChhbGlnblt2XSA9PT0gdiAmJlxuICAgICAgICAgICAgICBwcmV2SWR4IDwgcG9zW3ddICYmXG4gICAgICAgICAgICAgICFoYXNDb25mbGljdChjb25mbGljdHMsIHYsIHcpKSB7XG4gICAgICAgICAgICBhbGlnblt3XSA9IHY7XG4gICAgICAgICAgICBhbGlnblt2XSA9IHJvb3Rbdl0gPSByb290W3ddO1xuICAgICAgICAgICAgcHJldklkeCA9IHBvc1t3XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgcm9vdDogcm9vdCwgYWxpZ246IGFsaWduIH07XG59XG5cbmZ1bmN0aW9uIGhvcml6b250YWxDb21wYWN0aW9uKGcsIGxheWVyaW5nLCByb290LCBhbGlnbiwgcmV2ZXJzZVNlcCkge1xuICAvLyBUaGlzIHBvcnRpb24gb2YgdGhlIGFsZ29yaXRobSBkaWZmZXJzIGZyb20gQksgZHVlIHRvIGEgbnVtYmVyIG9mIHByb2JsZW1zLlxuICAvLyBJbnN0ZWFkIG9mIHRoZWlyIGFsZ29yaXRobSB3ZSBjb25zdHJ1Y3QgYSBuZXcgYmxvY2sgZ3JhcGggYW5kIGRvIHR3b1xuICAvLyBzd2VlcHMuIFRoZSBmaXJzdCBzd2VlcCBwbGFjZXMgYmxvY2tzIHdpdGggdGhlIHNtYWxsZXN0IHBvc3NpYmxlXG4gIC8vIGNvb3JkaW5hdGVzLiBUaGUgc2Vjb25kIHN3ZWVwIHJlbW92ZXMgdW51c2VkIHNwYWNlIGJ5IG1vdmluZyBibG9ja3MgdG8gdGhlXG4gIC8vIGdyZWF0ZXN0IGNvb3JkaW5hdGVzIHdpdGhvdXQgdmlvbGF0aW5nIHNlcGFyYXRpb24uXG4gIHZhciB4cyA9IHt9LFxuICAgIGJsb2NrRyA9IGJ1aWxkQmxvY2tHcmFwaChnLCBsYXllcmluZywgcm9vdCwgcmV2ZXJzZVNlcCksXG4gICAgYm9yZGVyVHlwZSA9IHJldmVyc2VTZXAgPyBcImJvcmRlckxlZnRcIiA6IFwiYm9yZGVyUmlnaHRcIjtcblxuICBmdW5jdGlvbiBpdGVyYXRlKHNldFhzRnVuYywgbmV4dE5vZGVzRnVuYykge1xuICAgIHZhciBzdGFjayA9IGJsb2NrRy5ub2RlcygpO1xuICAgIHZhciBlbGVtID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIHZpc2l0ZWQgPSB7fTtcbiAgICB3aGlsZSAoZWxlbSkge1xuICAgICAgaWYgKHZpc2l0ZWRbZWxlbV0pIHtcbiAgICAgICAgc2V0WHNGdW5jKGVsZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmlzaXRlZFtlbGVtXSA9IHRydWU7XG4gICAgICAgIHN0YWNrLnB1c2goZWxlbSk7XG4gICAgICAgIHN0YWNrID0gc3RhY2suY29uY2F0KG5leHROb2Rlc0Z1bmMoZWxlbSkpO1xuICAgICAgfVxuXG4gICAgICBlbGVtID0gc3RhY2sucG9wKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gRmlyc3QgcGFzcywgYXNzaWduIHNtYWxsZXN0IGNvb3JkaW5hdGVzXG4gIGZ1bmN0aW9uIHBhc3MxKGVsZW0pIHtcbiAgICB4c1tlbGVtXSA9IGJsb2NrRy5pbkVkZ2VzKGVsZW0pLnJlZHVjZShmdW5jdGlvbihhY2MsIGUpIHtcbiAgICAgIHJldHVybiBNYXRoLm1heChhY2MsIHhzW2Uudl0gKyBibG9ja0cuZWRnZShlKSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICAvLyBTZWNvbmQgcGFzcywgYXNzaWduIGdyZWF0ZXN0IGNvb3JkaW5hdGVzXG4gIGZ1bmN0aW9uIHBhc3MyKGVsZW0pIHtcbiAgICB2YXIgbWluID0gYmxvY2tHLm91dEVkZ2VzKGVsZW0pLnJlZHVjZShmdW5jdGlvbihhY2MsIGUpIHtcbiAgICAgIHJldHVybiBNYXRoLm1pbihhY2MsIHhzW2Uud10gLSBibG9ja0cuZWRnZShlKSk7XG4gICAgfSwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcblxuICAgIHZhciBub2RlID0gZy5ub2RlKGVsZW0pO1xuICAgIGlmIChtaW4gIT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSAmJiBub2RlLmJvcmRlclR5cGUgIT09IGJvcmRlclR5cGUpIHtcbiAgICAgIHhzW2VsZW1dID0gTWF0aC5tYXgoeHNbZWxlbV0sIG1pbik7XG4gICAgfVxuICB9XG5cbiAgaXRlcmF0ZShwYXNzMSwgYmxvY2tHLnByZWRlY2Vzc29ycy5iaW5kKGJsb2NrRykpO1xuICBpdGVyYXRlKHBhc3MyLCBibG9ja0cuc3VjY2Vzc29ycy5iaW5kKGJsb2NrRykpO1xuXG4gIC8vIEFzc2lnbiB4IGNvb3JkaW5hdGVzIHRvIGFsbCBub2Rlc1xuICBfLmZvckVhY2goYWxpZ24sIGZ1bmN0aW9uKHYpIHtcbiAgICB4c1t2XSA9IHhzW3Jvb3Rbdl1dO1xuICB9KTtcblxuICByZXR1cm4geHM7XG59XG5cblxuZnVuY3Rpb24gYnVpbGRCbG9ja0dyYXBoKGcsIGxheWVyaW5nLCByb290LCByZXZlcnNlU2VwKSB7XG4gIHZhciBibG9ja0dyYXBoID0gbmV3IEdyYXBoKCksXG4gICAgZ3JhcGhMYWJlbCA9IGcuZ3JhcGgoKSxcbiAgICBzZXBGbiA9IHNlcChncmFwaExhYmVsLm5vZGVzZXAsIGdyYXBoTGFiZWwuZWRnZXNlcCwgcmV2ZXJzZVNlcCk7XG5cbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciB1O1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odikge1xuICAgICAgdmFyIHZSb290ID0gcm9vdFt2XTtcbiAgICAgIGJsb2NrR3JhcGguc2V0Tm9kZSh2Um9vdCk7XG4gICAgICBpZiAodSkge1xuICAgICAgICB2YXIgdVJvb3QgPSByb290W3VdLFxuICAgICAgICAgIHByZXZNYXggPSBibG9ja0dyYXBoLmVkZ2UodVJvb3QsIHZSb290KTtcbiAgICAgICAgYmxvY2tHcmFwaC5zZXRFZGdlKHVSb290LCB2Um9vdCwgTWF0aC5tYXgoc2VwRm4oZywgdiwgdSksIHByZXZNYXggfHwgMCkpO1xuICAgICAgfVxuICAgICAgdSA9IHY7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBibG9ja0dyYXBoO1xufVxuXG4vKlxuICogUmV0dXJucyB0aGUgYWxpZ25tZW50IHRoYXQgaGFzIHRoZSBzbWFsbGVzdCB3aWR0aCBvZiB0aGUgZ2l2ZW4gYWxpZ25tZW50cy5cbiAqL1xuZnVuY3Rpb24gZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQoZywgeHNzKSB7XG4gIHJldHVybiBfLm1pbkJ5KF8udmFsdWVzKHhzcyksIGZ1bmN0aW9uICh4cykge1xuICAgIHZhciBtYXggPSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gICAgdmFyIG1pbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcblxuICAgIF8uZm9ySW4oeHMsIGZ1bmN0aW9uICh4LCB2KSB7XG4gICAgICB2YXIgaGFsZldpZHRoID0gd2lkdGgoZywgdikgLyAyO1xuXG4gICAgICBtYXggPSBNYXRoLm1heCh4ICsgaGFsZldpZHRoLCBtYXgpO1xuICAgICAgbWluID0gTWF0aC5taW4oeCAtIGhhbGZXaWR0aCwgbWluKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXggLSBtaW47XG4gIH0pO1xufVxuXG4vKlxuICogQWxpZ24gdGhlIGNvb3JkaW5hdGVzIG9mIGVhY2ggb2YgdGhlIGxheW91dCBhbGlnbm1lbnRzIHN1Y2ggdGhhdFxuICogbGVmdC1iaWFzZWQgYWxpZ25tZW50cyBoYXZlIHRoZWlyIG1pbmltdW0gY29vcmRpbmF0ZSBhdCB0aGUgc2FtZSBwb2ludCBhc1xuICogdGhlIG1pbmltdW0gY29vcmRpbmF0ZSBvZiB0aGUgc21hbGxlc3Qgd2lkdGggYWxpZ25tZW50IGFuZCByaWdodC1iaWFzZWRcbiAqIGFsaWdubWVudHMgaGF2ZSB0aGVpciBtYXhpbXVtIGNvb3JkaW5hdGUgYXQgdGhlIHNhbWUgcG9pbnQgYXMgdGhlIG1heGltdW1cbiAqIGNvb3JkaW5hdGUgb2YgdGhlIHNtYWxsZXN0IHdpZHRoIGFsaWdubWVudC5cbiAqL1xuZnVuY3Rpb24gYWxpZ25Db29yZGluYXRlcyh4c3MsIGFsaWduVG8pIHtcbiAgdmFyIGFsaWduVG9WYWxzID0gXy52YWx1ZXMoYWxpZ25UbyksXG4gICAgYWxpZ25Ub01pbiA9IF8ubWluKGFsaWduVG9WYWxzKSxcbiAgICBhbGlnblRvTWF4ID0gXy5tYXgoYWxpZ25Ub1ZhbHMpO1xuXG4gIF8uZm9yRWFjaChbXCJ1XCIsIFwiZFwiXSwgZnVuY3Rpb24odmVydCkge1xuICAgIF8uZm9yRWFjaChbXCJsXCIsIFwiclwiXSwgZnVuY3Rpb24oaG9yaXopIHtcbiAgICAgIHZhciBhbGlnbm1lbnQgPSB2ZXJ0ICsgaG9yaXosXG4gICAgICAgIHhzID0geHNzW2FsaWdubWVudF0sXG4gICAgICAgIGRlbHRhO1xuICAgICAgaWYgKHhzID09PSBhbGlnblRvKSByZXR1cm47XG5cbiAgICAgIHZhciB4c1ZhbHMgPSBfLnZhbHVlcyh4cyk7XG4gICAgICBkZWx0YSA9IGhvcml6ID09PSBcImxcIiA/IGFsaWduVG9NaW4gLSBfLm1pbih4c1ZhbHMpIDogYWxpZ25Ub01heCAtIF8ubWF4KHhzVmFscyk7XG5cbiAgICAgIGlmIChkZWx0YSkge1xuICAgICAgICB4c3NbYWxpZ25tZW50XSA9IF8ubWFwVmFsdWVzKHhzLCBmdW5jdGlvbih4KSB7IHJldHVybiB4ICsgZGVsdGE7IH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYmFsYW5jZSh4c3MsIGFsaWduKSB7XG4gIHJldHVybiBfLm1hcFZhbHVlcyh4c3MudWwsIGZ1bmN0aW9uKGlnbm9yZSwgdikge1xuICAgIGlmIChhbGlnbikge1xuICAgICAgcmV0dXJuIHhzc1thbGlnbi50b0xvd2VyQ2FzZSgpXVt2XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHhzID0gXy5zb3J0QnkoXy5tYXAoeHNzLCB2KSk7XG4gICAgICByZXR1cm4gKHhzWzFdICsgeHNbMl0pIC8gMjtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwb3NpdGlvblgoZykge1xuICB2YXIgbGF5ZXJpbmcgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gIHZhciBjb25mbGljdHMgPSBfLm1lcmdlKFxuICAgIGZpbmRUeXBlMUNvbmZsaWN0cyhnLCBsYXllcmluZyksXG4gICAgZmluZFR5cGUyQ29uZmxpY3RzKGcsIGxheWVyaW5nKSk7XG5cbiAgdmFyIHhzcyA9IHt9O1xuICB2YXIgYWRqdXN0ZWRMYXllcmluZztcbiAgXy5mb3JFYWNoKFtcInVcIiwgXCJkXCJdLCBmdW5jdGlvbih2ZXJ0KSB7XG4gICAgYWRqdXN0ZWRMYXllcmluZyA9IHZlcnQgPT09IFwidVwiID8gbGF5ZXJpbmcgOiBfLnZhbHVlcyhsYXllcmluZykucmV2ZXJzZSgpO1xuICAgIF8uZm9yRWFjaChbXCJsXCIsIFwiclwiXSwgZnVuY3Rpb24oaG9yaXopIHtcbiAgICAgIGlmIChob3JpeiA9PT0gXCJyXCIpIHtcbiAgICAgICAgYWRqdXN0ZWRMYXllcmluZyA9IF8ubWFwKGFkanVzdGVkTGF5ZXJpbmcsIGZ1bmN0aW9uKGlubmVyKSB7XG4gICAgICAgICAgcmV0dXJuIF8udmFsdWVzKGlubmVyKS5yZXZlcnNlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmVpZ2hib3JGbiA9ICh2ZXJ0ID09PSBcInVcIiA/IGcucHJlZGVjZXNzb3JzIDogZy5zdWNjZXNzb3JzKS5iaW5kKGcpO1xuICAgICAgdmFyIGFsaWduID0gdmVydGljYWxBbGlnbm1lbnQoZywgYWRqdXN0ZWRMYXllcmluZywgY29uZmxpY3RzLCBuZWlnaGJvckZuKTtcbiAgICAgIHZhciB4cyA9IGhvcml6b250YWxDb21wYWN0aW9uKGcsIGFkanVzdGVkTGF5ZXJpbmcsXG4gICAgICAgIGFsaWduLnJvb3QsIGFsaWduLmFsaWduLCBob3JpeiA9PT0gXCJyXCIpO1xuICAgICAgaWYgKGhvcml6ID09PSBcInJcIikge1xuICAgICAgICB4cyA9IF8ubWFwVmFsdWVzKHhzLCBmdW5jdGlvbih4KSB7IHJldHVybiAteDsgfSk7XG4gICAgICB9XG4gICAgICB4c3NbdmVydCArIGhvcml6XSA9IHhzO1xuICAgIH0pO1xuICB9KTtcblxuICB2YXIgc21hbGxlc3RXaWR0aCA9IGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50KGcsIHhzcyk7XG4gIGFsaWduQ29vcmRpbmF0ZXMoeHNzLCBzbWFsbGVzdFdpZHRoKTtcbiAgcmV0dXJuIGJhbGFuY2UoeHNzLCBnLmdyYXBoKCkuYWxpZ24pO1xufVxuXG5mdW5jdGlvbiBzZXAobm9kZVNlcCwgZWRnZVNlcCwgcmV2ZXJzZVNlcCkge1xuICByZXR1cm4gZnVuY3Rpb24oZywgdiwgdykge1xuICAgIHZhciB2TGFiZWwgPSBnLm5vZGUodik7XG4gICAgdmFyIHdMYWJlbCA9IGcubm9kZSh3KTtcbiAgICB2YXIgc3VtID0gMDtcbiAgICB2YXIgZGVsdGE7XG5cbiAgICBzdW0gKz0gdkxhYmVsLndpZHRoIC8gMjtcbiAgICBpZiAoXy5oYXModkxhYmVsLCBcImxhYmVscG9zXCIpKSB7XG4gICAgICBzd2l0Y2ggKHZMYWJlbC5sYWJlbHBvcy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIFwibFwiOiBkZWx0YSA9IC12TGFiZWwud2lkdGggLyAyOyBicmVhaztcbiAgICAgIGNhc2UgXCJyXCI6IGRlbHRhID0gdkxhYmVsLndpZHRoIC8gMjsgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkZWx0YSkge1xuICAgICAgc3VtICs9IHJldmVyc2VTZXAgPyBkZWx0YSA6IC1kZWx0YTtcbiAgICB9XG4gICAgZGVsdGEgPSAwO1xuXG4gICAgc3VtICs9ICh2TGFiZWwuZHVtbXkgPyBlZGdlU2VwIDogbm9kZVNlcCkgLyAyO1xuICAgIHN1bSArPSAod0xhYmVsLmR1bW15ID8gZWRnZVNlcCA6IG5vZGVTZXApIC8gMjtcblxuICAgIHN1bSArPSB3TGFiZWwud2lkdGggLyAyO1xuICAgIGlmIChfLmhhcyh3TGFiZWwsIFwibGFiZWxwb3NcIikpIHtcbiAgICAgIHN3aXRjaCAod0xhYmVsLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgXCJsXCI6IGRlbHRhID0gd0xhYmVsLndpZHRoIC8gMjsgYnJlYWs7XG4gICAgICBjYXNlIFwiclwiOiBkZWx0YSA9IC13TGFiZWwud2lkdGggLyAyOyBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRlbHRhKSB7XG4gICAgICBzdW0gKz0gcmV2ZXJzZVNlcCA/IGRlbHRhIDogLWRlbHRhO1xuICAgIH1cbiAgICBkZWx0YSA9IDA7XG5cbiAgICByZXR1cm4gc3VtO1xuICB9O1xufVxuXG5mdW5jdGlvbiB3aWR0aChnLCB2KSB7XG4gIHJldHVybiBnLm5vZGUodikud2lkdGg7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi4vdXRpbFwiKTtcbnZhciBwb3NpdGlvblggPSByZXF1aXJlKFwiLi9ia1wiKS5wb3NpdGlvblg7XG5cbm1vZHVsZS5leHBvcnRzID0gcG9zaXRpb247XG5cbmZ1bmN0aW9uIHBvc2l0aW9uKGcpIHtcbiAgZyA9IHV0aWwuYXNOb25Db21wb3VuZEdyYXBoKGcpO1xuXG4gIHBvc2l0aW9uWShnKTtcbiAgXy5mb3JFYWNoKHBvc2l0aW9uWChnKSwgZnVuY3Rpb24oeCwgdikge1xuICAgIGcubm9kZSh2KS54ID0geDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBvc2l0aW9uWShnKSB7XG4gIHZhciBsYXllcmluZyA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcbiAgdmFyIHJhbmtTZXAgPSBnLmdyYXBoKCkucmFua3NlcDtcbiAgdmFyIHByZXZZID0gMDtcbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciBtYXhIZWlnaHQgPSBfLm1heChfLm1hcChsYXllciwgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLmhlaWdodDsgfSkpO1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odikge1xuICAgICAgZy5ub2RlKHYpLnkgPSBwcmV2WSArIG1heEhlaWdodCAvIDI7XG4gICAgfSk7XG4gICAgcHJldlkgKz0gbWF4SGVpZ2h0ICsgcmFua1NlcDtcbiAgfSk7XG59XG5cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciBhY3ljbGljID0gcmVxdWlyZShcIi4vYWN5Y2xpY1wiKTtcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKFwiLi9ub3JtYWxpemVcIik7XG52YXIgcmFuayA9IHJlcXVpcmUoXCIuL3JhbmtcIik7XG52YXIgbm9ybWFsaXplUmFua3MgPSByZXF1aXJlKFwiLi91dGlsXCIpLm5vcm1hbGl6ZVJhbmtzO1xudmFyIHBhcmVudER1bW15Q2hhaW5zID0gcmVxdWlyZShcIi4vcGFyZW50LWR1bW15LWNoYWluc1wiKTtcbnZhciByZW1vdmVFbXB0eVJhbmtzID0gcmVxdWlyZShcIi4vdXRpbFwiKS5yZW1vdmVFbXB0eVJhbmtzO1xudmFyIG5lc3RpbmdHcmFwaCA9IHJlcXVpcmUoXCIuL25lc3RpbmctZ3JhcGhcIik7XG52YXIgYWRkQm9yZGVyU2VnbWVudHMgPSByZXF1aXJlKFwiLi9hZGQtYm9yZGVyLXNlZ21lbnRzXCIpO1xudmFyIGNvb3JkaW5hdGVTeXN0ZW0gPSByZXF1aXJlKFwiLi9jb29yZGluYXRlLXN5c3RlbVwiKTtcbnZhciBvcmRlciA9IHJlcXVpcmUoXCIuL29yZGVyXCIpO1xudmFyIHBvc2l0aW9uID0gcmVxdWlyZShcIi4vcG9zaXRpb25cIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaGxpYlwiKS5HcmFwaDtcblxubW9kdWxlLmV4cG9ydHMgPSBsYXlvdXQ7XG5cbmZ1bmN0aW9uIGxheW91dChnLCBvcHRzKSB7XG4gIHZhciB0aW1lID0gb3B0cyAmJiBvcHRzLmRlYnVnVGltaW5nID8gdXRpbC50aW1lIDogdXRpbC5ub3RpbWU7XG4gIHRpbWUoXCJsYXlvdXRcIiwgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxheW91dEdyYXBoID0gXG4gICAgICB0aW1lKFwiICBidWlsZExheW91dEdyYXBoXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gYnVpbGRMYXlvdXRHcmFwaChnKTsgfSk7XG4gICAgdGltZShcIiAgcnVuTGF5b3V0XCIsICAgICAgICBmdW5jdGlvbigpIHsgcnVuTGF5b3V0KGxheW91dEdyYXBoLCB0aW1lKTsgfSk7XG4gICAgdGltZShcIiAgdXBkYXRlSW5wdXRHcmFwaFwiLCBmdW5jdGlvbigpIHsgdXBkYXRlSW5wdXRHcmFwaChnLCBsYXlvdXRHcmFwaCk7IH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcnVuTGF5b3V0KGcsIHRpbWUpIHtcbiAgdGltZShcIiAgICBtYWtlU3BhY2VGb3JFZGdlTGFiZWxzXCIsIGZ1bmN0aW9uKCkgeyBtYWtlU3BhY2VGb3JFZGdlTGFiZWxzKGcpOyB9KTtcbiAgdGltZShcIiAgICByZW1vdmVTZWxmRWRnZXNcIiwgICAgICAgIGZ1bmN0aW9uKCkgeyByZW1vdmVTZWxmRWRnZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFjeWNsaWNcIiwgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGFjeWNsaWMucnVuKGcpOyB9KTtcbiAgdGltZShcIiAgICBuZXN0aW5nR3JhcGgucnVuXCIsICAgICAgIGZ1bmN0aW9uKCkgeyBuZXN0aW5nR3JhcGgucnVuKGcpOyB9KTtcbiAgdGltZShcIiAgICByYW5rXCIsICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyByYW5rKHV0aWwuYXNOb25Db21wb3VuZEdyYXBoKGcpKTsgfSk7XG4gIHRpbWUoXCIgICAgaW5qZWN0RWRnZUxhYmVsUHJveGllc1wiLCBmdW5jdGlvbigpIHsgaW5qZWN0RWRnZUxhYmVsUHJveGllcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmVtb3ZlRW1wdHlSYW5rc1wiLCAgICAgICBmdW5jdGlvbigpIHsgcmVtb3ZlRW1wdHlSYW5rcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgbmVzdGluZ0dyYXBoLmNsZWFudXBcIiwgICBmdW5jdGlvbigpIHsgbmVzdGluZ0dyYXBoLmNsZWFudXAoZyk7IH0pO1xuICB0aW1lKFwiICAgIG5vcm1hbGl6ZVJhbmtzXCIsICAgICAgICAgZnVuY3Rpb24oKSB7IG5vcm1hbGl6ZVJhbmtzKGcpOyB9KTtcbiAgdGltZShcIiAgICBhc3NpZ25SYW5rTWluTWF4XCIsICAgICAgIGZ1bmN0aW9uKCkgeyBhc3NpZ25SYW5rTWluTWF4KGcpOyB9KTtcbiAgdGltZShcIiAgICByZW1vdmVFZGdlTGFiZWxQcm94aWVzXCIsIGZ1bmN0aW9uKCkgeyByZW1vdmVFZGdlTGFiZWxQcm94aWVzKGcpOyB9KTtcbiAgdGltZShcIiAgICBub3JtYWxpemUucnVuXCIsICAgICAgICAgIGZ1bmN0aW9uKCkgeyBub3JtYWxpemUucnVuKGcpOyB9KTtcbiAgdGltZShcIiAgICBwYXJlbnREdW1teUNoYWluc1wiLCAgICAgIGZ1bmN0aW9uKCkgeyBwYXJlbnREdW1teUNoYWlucyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgYWRkQm9yZGVyU2VnbWVudHNcIiwgICAgICBmdW5jdGlvbigpIHsgYWRkQm9yZGVyU2VnbWVudHMoZyk7IH0pO1xuICB0aW1lKFwiICAgIG9yZGVyXCIsICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IG9yZGVyKGcpOyB9KTtcbiAgdGltZShcIiAgICBpbnNlcnRTZWxmRWRnZXNcIiwgICAgICAgIGZ1bmN0aW9uKCkgeyBpbnNlcnRTZWxmRWRnZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFkanVzdENvb3JkaW5hdGVTeXN0ZW1cIiwgZnVuY3Rpb24oKSB7IGNvb3JkaW5hdGVTeXN0ZW0uYWRqdXN0KGcpOyB9KTtcbiAgdGltZShcIiAgICBwb3NpdGlvblwiLCAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBwb3NpdGlvbihnKTsgfSk7XG4gIHRpbWUoXCIgICAgcG9zaXRpb25TZWxmRWRnZXNcIiwgICAgICBmdW5jdGlvbigpIHsgcG9zaXRpb25TZWxmRWRnZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIHJlbW92ZUJvcmRlck5vZGVzXCIsICAgICAgZnVuY3Rpb24oKSB7IHJlbW92ZUJvcmRlck5vZGVzKGcpOyB9KTtcbiAgdGltZShcIiAgICBub3JtYWxpemUudW5kb1wiLCAgICAgICAgIGZ1bmN0aW9uKCkgeyBub3JtYWxpemUudW5kbyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgZml4dXBFZGdlTGFiZWxDb29yZHNcIiwgICBmdW5jdGlvbigpIHsgZml4dXBFZGdlTGFiZWxDb29yZHMoZyk7IH0pO1xuICB0aW1lKFwiICAgIHVuZG9Db29yZGluYXRlU3lzdGVtXCIsICAgZnVuY3Rpb24oKSB7IGNvb3JkaW5hdGVTeXN0ZW0udW5kbyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgdHJhbnNsYXRlR3JhcGhcIiwgICAgICAgICBmdW5jdGlvbigpIHsgdHJhbnNsYXRlR3JhcGgoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFzc2lnbk5vZGVJbnRlcnNlY3RzXCIsICAgZnVuY3Rpb24oKSB7IGFzc2lnbk5vZGVJbnRlcnNlY3RzKGcpOyB9KTtcbiAgdGltZShcIiAgICByZXZlcnNlUG9pbnRzXCIsICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXZlcnNlUG9pbnRzRm9yUmV2ZXJzZWRFZGdlcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgYWN5Y2xpYy51bmRvXCIsICAgICAgICAgICBmdW5jdGlvbigpIHsgYWN5Y2xpYy51bmRvKGcpOyB9KTtcbn1cblxuLypcbiAqIENvcGllcyBmaW5hbCBsYXlvdXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbGF5b3V0IGdyYXBoIGJhY2sgdG8gdGhlIGlucHV0XG4gKiBncmFwaC4gVGhpcyBwcm9jZXNzIG9ubHkgY29waWVzIHdoaXRlbGlzdGVkIGF0dHJpYnV0ZXMgZnJvbSB0aGUgbGF5b3V0IGdyYXBoXG4gKiB0byB0aGUgaW5wdXQgZ3JhcGgsIHNvIGl0IHNlcnZlcyBhcyBhIGdvb2QgcGxhY2UgdG8gZGV0ZXJtaW5lIHdoYXRcbiAqIGF0dHJpYnV0ZXMgY2FuIGluZmx1ZW5jZSBsYXlvdXQuXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZUlucHV0R3JhcGgoaW5wdXRHcmFwaCwgbGF5b3V0R3JhcGgpIHtcbiAgXy5mb3JFYWNoKGlucHV0R3JhcGgubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBpbnB1dExhYmVsID0gaW5wdXRHcmFwaC5ub2RlKHYpO1xuICAgIHZhciBsYXlvdXRMYWJlbCA9IGxheW91dEdyYXBoLm5vZGUodik7XG5cbiAgICBpZiAoaW5wdXRMYWJlbCkge1xuICAgICAgaW5wdXRMYWJlbC54ID0gbGF5b3V0TGFiZWwueDtcbiAgICAgIGlucHV0TGFiZWwueSA9IGxheW91dExhYmVsLnk7XG5cbiAgICAgIGlmIChsYXlvdXRHcmFwaC5jaGlsZHJlbih2KS5sZW5ndGgpIHtcbiAgICAgICAgaW5wdXRMYWJlbC53aWR0aCA9IGxheW91dExhYmVsLndpZHRoO1xuICAgICAgICBpbnB1dExhYmVsLmhlaWdodCA9IGxheW91dExhYmVsLmhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgaW5wdXRMYWJlbCA9IGlucHV0R3JhcGguZWRnZShlKTtcbiAgICB2YXIgbGF5b3V0TGFiZWwgPSBsYXlvdXRHcmFwaC5lZGdlKGUpO1xuXG4gICAgaW5wdXRMYWJlbC5wb2ludHMgPSBsYXlvdXRMYWJlbC5wb2ludHM7XG4gICAgaWYgKF8uaGFzKGxheW91dExhYmVsLCBcInhcIikpIHtcbiAgICAgIGlucHV0TGFiZWwueCA9IGxheW91dExhYmVsLng7XG4gICAgICBpbnB1dExhYmVsLnkgPSBsYXlvdXRMYWJlbC55O1xuICAgIH1cbiAgfSk7XG5cbiAgaW5wdXRHcmFwaC5ncmFwaCgpLndpZHRoID0gbGF5b3V0R3JhcGguZ3JhcGgoKS53aWR0aDtcbiAgaW5wdXRHcmFwaC5ncmFwaCgpLmhlaWdodCA9IGxheW91dEdyYXBoLmdyYXBoKCkuaGVpZ2h0O1xufVxuXG52YXIgZ3JhcGhOdW1BdHRycyA9IFtcIm5vZGVzZXBcIiwgXCJlZGdlc2VwXCIsIFwicmFua3NlcFwiLCBcIm1hcmdpbnhcIiwgXCJtYXJnaW55XCJdO1xudmFyIGdyYXBoRGVmYXVsdHMgPSB7IHJhbmtzZXA6IDUwLCBlZGdlc2VwOiAyMCwgbm9kZXNlcDogNTAsIHJhbmtkaXI6IFwidGJcIiB9O1xudmFyIGdyYXBoQXR0cnMgPSBbXCJhY3ljbGljZXJcIiwgXCJyYW5rZXJcIiwgXCJyYW5rZGlyXCIsIFwiYWxpZ25cIl07XG52YXIgbm9kZU51bUF0dHJzID0gW1wid2lkdGhcIiwgXCJoZWlnaHRcIl07XG52YXIgbm9kZURlZmF1bHRzID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XG52YXIgZWRnZU51bUF0dHJzID0gW1wibWlubGVuXCIsIFwid2VpZ2h0XCIsIFwid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJsYWJlbG9mZnNldFwiXTtcbnZhciBlZGdlRGVmYXVsdHMgPSB7XG4gIG1pbmxlbjogMSwgd2VpZ2h0OiAxLCB3aWR0aDogMCwgaGVpZ2h0OiAwLFxuICBsYWJlbG9mZnNldDogMTAsIGxhYmVscG9zOiBcInJcIlxufTtcbnZhciBlZGdlQXR0cnMgPSBbXCJsYWJlbHBvc1wiXTtcblxuLypcbiAqIENvbnN0cnVjdHMgYSBuZXcgZ3JhcGggZnJvbSB0aGUgaW5wdXQgZ3JhcGgsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBsYXlvdXQuXG4gKiBUaGlzIHByb2Nlc3MgY29waWVzIG9ubHkgd2hpdGVsaXN0ZWQgYXR0cmlidXRlcyBmcm9tIHRoZSBpbnB1dCBncmFwaCB0byB0aGVcbiAqIGxheW91dCBncmFwaC4gVGh1cyB0aGlzIGZ1bmN0aW9uIHNlcnZlcyBhcyBhIGdvb2QgcGxhY2UgdG8gZGV0ZXJtaW5lIHdoYXRcbiAqIGF0dHJpYnV0ZXMgY2FuIGluZmx1ZW5jZSBsYXlvdXQuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTGF5b3V0R3JhcGgoaW5wdXRHcmFwaCkge1xuICB2YXIgZyA9IG5ldyBHcmFwaCh7IG11bHRpZ3JhcGg6IHRydWUsIGNvbXBvdW5kOiB0cnVlIH0pO1xuICB2YXIgZ3JhcGggPSBjYW5vbmljYWxpemUoaW5wdXRHcmFwaC5ncmFwaCgpKTtcblxuICBnLnNldEdyYXBoKF8ubWVyZ2Uoe30sXG4gICAgZ3JhcGhEZWZhdWx0cyxcbiAgICBzZWxlY3ROdW1iZXJBdHRycyhncmFwaCwgZ3JhcGhOdW1BdHRycyksXG4gICAgXy5waWNrKGdyYXBoLCBncmFwaEF0dHJzKSkpO1xuXG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGNhbm9uaWNhbGl6ZShpbnB1dEdyYXBoLm5vZGUodikpO1xuICAgIGcuc2V0Tm9kZSh2LCBfLmRlZmF1bHRzKHNlbGVjdE51bWJlckF0dHJzKG5vZGUsIG5vZGVOdW1BdHRycyksIG5vZGVEZWZhdWx0cykpO1xuICAgIGcuc2V0UGFyZW50KHYsIGlucHV0R3JhcGgucGFyZW50KHYpKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGlucHV0R3JhcGguZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gY2Fub25pY2FsaXplKGlucHV0R3JhcGguZWRnZShlKSk7XG4gICAgZy5zZXRFZGdlKGUsIF8ubWVyZ2Uoe30sXG4gICAgICBlZGdlRGVmYXVsdHMsXG4gICAgICBzZWxlY3ROdW1iZXJBdHRycyhlZGdlLCBlZGdlTnVtQXR0cnMpLFxuICAgICAgXy5waWNrKGVkZ2UsIGVkZ2VBdHRycykpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGc7XG59XG5cbi8qXG4gKiBUaGlzIGlkZWEgY29tZXMgZnJvbSB0aGUgR2Fuc25lciBwYXBlcjogdG8gYWNjb3VudCBmb3IgZWRnZSBsYWJlbHMgaW4gb3VyXG4gKiBsYXlvdXQgd2Ugc3BsaXQgZWFjaCByYW5rIGluIGhhbGYgYnkgZG91YmxpbmcgbWlubGVuIGFuZCBoYWx2aW5nIHJhbmtzZXAuXG4gKiBUaGVuIHdlIGNhbiBwbGFjZSBsYWJlbHMgYXQgdGhlc2UgbWlkLXBvaW50cyBiZXR3ZWVuIG5vZGVzLlxuICpcbiAqIFdlIGFsc28gYWRkIHNvbWUgbWluaW1hbCBwYWRkaW5nIHRvIHRoZSB3aWR0aCB0byBwdXNoIHRoZSBsYWJlbCBmb3IgdGhlIGVkZ2VcbiAqIGF3YXkgZnJvbSB0aGUgZWRnZSBpdHNlbGYgYSBiaXQuXG4gKi9cbmZ1bmN0aW9uIG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMoZykge1xuICB2YXIgZ3JhcGggPSBnLmdyYXBoKCk7XG4gIGdyYXBoLnJhbmtzZXAgLz0gMjtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGVkZ2UubWlubGVuICo9IDI7XG4gICAgaWYgKGVkZ2UubGFiZWxwb3MudG9Mb3dlckNhc2UoKSAhPT0gXCJjXCIpIHtcbiAgICAgIGlmIChncmFwaC5yYW5rZGlyID09PSBcIlRCXCIgfHwgZ3JhcGgucmFua2RpciA9PT0gXCJCVFwiKSB7XG4gICAgICAgIGVkZ2Uud2lkdGggKz0gZWRnZS5sYWJlbG9mZnNldDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVkZ2UuaGVpZ2h0ICs9IGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuLypcbiAqIENyZWF0ZXMgdGVtcG9yYXJ5IGR1bW15IG5vZGVzIHRoYXQgY2FwdHVyZSB0aGUgcmFuayBpbiB3aGljaCBlYWNoIGVkZ2Unc1xuICogbGFiZWwgaXMgZ29pbmcgdG8sIGlmIGl0IGhhcyBvbmUgb2Ygbm9uLXplcm8gd2lkdGggYW5kIGhlaWdodC4gV2UgZG8gdGhpc1xuICogc28gdGhhdCB3ZSBjYW4gc2FmZWx5IHJlbW92ZSBlbXB0eSByYW5rcyB3aGlsZSBwcmVzZXJ2aW5nIGJhbGFuY2UgZm9yIHRoZVxuICogbGFiZWwncyBwb3NpdGlvbi5cbiAqL1xuZnVuY3Rpb24gaW5qZWN0RWRnZUxhYmVsUHJveGllcyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBpZiAoZWRnZS53aWR0aCAmJiBlZGdlLmhlaWdodCkge1xuICAgICAgdmFyIHYgPSBnLm5vZGUoZS52KTtcbiAgICAgIHZhciB3ID0gZy5ub2RlKGUudyk7XG4gICAgICB2YXIgbGFiZWwgPSB7IHJhbms6ICh3LnJhbmsgLSB2LnJhbmspIC8gMiArIHYucmFuaywgZTogZSB9O1xuICAgICAgdXRpbC5hZGREdW1teU5vZGUoZywgXCJlZGdlLXByb3h5XCIsIGxhYmVsLCBcIl9lcFwiKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhc3NpZ25SYW5rTWluTWF4KGcpIHtcbiAgdmFyIG1heFJhbmsgPSAwO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKG5vZGUuYm9yZGVyVG9wKSB7XG4gICAgICBub2RlLm1pblJhbmsgPSBnLm5vZGUobm9kZS5ib3JkZXJUb3ApLnJhbms7XG4gICAgICBub2RlLm1heFJhbmsgPSBnLm5vZGUobm9kZS5ib3JkZXJCb3R0b20pLnJhbms7XG4gICAgICBtYXhSYW5rID0gXy5tYXgobWF4UmFuaywgbm9kZS5tYXhSYW5rKTtcbiAgICB9XG4gIH0pO1xuICBnLmdyYXBoKCkubWF4UmFuayA9IG1heFJhbms7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUVkZ2VMYWJlbFByb3hpZXMoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKG5vZGUuZHVtbXkgPT09IFwiZWRnZS1wcm94eVwiKSB7XG4gICAgICBnLmVkZ2Uobm9kZS5lKS5sYWJlbFJhbmsgPSBub2RlLnJhbms7XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdHJhbnNsYXRlR3JhcGgoZykge1xuICB2YXIgbWluWCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmFyIG1heFggPSAwO1xuICB2YXIgbWluWSA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmFyIG1heFkgPSAwO1xuICB2YXIgZ3JhcGhMYWJlbCA9IGcuZ3JhcGgoKTtcbiAgdmFyIG1hcmdpblggPSBncmFwaExhYmVsLm1hcmdpbnggfHwgMDtcbiAgdmFyIG1hcmdpblkgPSBncmFwaExhYmVsLm1hcmdpbnkgfHwgMDtcblxuICBmdW5jdGlvbiBnZXRFeHRyZW1lcyhhdHRycykge1xuICAgIHZhciB4ID0gYXR0cnMueDtcbiAgICB2YXIgeSA9IGF0dHJzLnk7XG4gICAgdmFyIHcgPSBhdHRycy53aWR0aDtcbiAgICB2YXIgaCA9IGF0dHJzLmhlaWdodDtcbiAgICBtaW5YID0gTWF0aC5taW4obWluWCwgeCAtIHcgLyAyKTtcbiAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgeCArIHcgLyAyKTtcbiAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgeSAtIGggLyAyKTtcbiAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgeSArIGggLyAyKTtcbiAgfVxuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgZ2V0RXh0cmVtZXMoZy5ub2RlKHYpKTsgfSk7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ4XCIpKSB7XG4gICAgICBnZXRFeHRyZW1lcyhlZGdlKTtcbiAgICB9XG4gIH0pO1xuXG4gIG1pblggLT0gbWFyZ2luWDtcbiAgbWluWSAtPSBtYXJnaW5ZO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBub2RlLnggLT0gbWluWDtcbiAgICBub2RlLnkgLT0gbWluWTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIF8uZm9yRWFjaChlZGdlLnBvaW50cywgZnVuY3Rpb24ocCkge1xuICAgICAgcC54IC09IG1pblg7XG4gICAgICBwLnkgLT0gbWluWTtcbiAgICB9KTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ4XCIpKSB7IGVkZ2UueCAtPSBtaW5YOyB9XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieVwiKSkgeyBlZGdlLnkgLT0gbWluWTsgfVxuICB9KTtcblxuICBncmFwaExhYmVsLndpZHRoID0gbWF4WCAtIG1pblggKyBtYXJnaW5YO1xuICBncmFwaExhYmVsLmhlaWdodCA9IG1heFkgLSBtaW5ZICsgbWFyZ2luWTtcbn1cblxuZnVuY3Rpb24gYXNzaWduTm9kZUludGVyc2VjdHMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgdmFyIG5vZGVWID0gZy5ub2RlKGUudik7XG4gICAgdmFyIG5vZGVXID0gZy5ub2RlKGUudyk7XG4gICAgdmFyIHAxLCBwMjtcbiAgICBpZiAoIWVkZ2UucG9pbnRzKSB7XG4gICAgICBlZGdlLnBvaW50cyA9IFtdO1xuICAgICAgcDEgPSBub2RlVztcbiAgICAgIHAyID0gbm9kZVY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHAxID0gZWRnZS5wb2ludHNbMF07XG4gICAgICBwMiA9IGVkZ2UucG9pbnRzW2VkZ2UucG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICBlZGdlLnBvaW50cy51bnNoaWZ0KHV0aWwuaW50ZXJzZWN0UmVjdChub2RlViwgcDEpKTtcbiAgICBlZGdlLnBvaW50cy5wdXNoKHV0aWwuaW50ZXJzZWN0UmVjdChub2RlVywgcDIpKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGZpeHVwRWRnZUxhYmVsQ29vcmRzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChfLmhhcyhlZGdlLCBcInhcIikpIHtcbiAgICAgIGlmIChlZGdlLmxhYmVscG9zID09PSBcImxcIiB8fCBlZGdlLmxhYmVscG9zID09PSBcInJcIikge1xuICAgICAgICBlZGdlLndpZHRoIC09IGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKGVkZ2UubGFiZWxwb3MpIHtcbiAgICAgIGNhc2UgXCJsXCI6IGVkZ2UueCAtPSBlZGdlLndpZHRoIC8gMiArIGVkZ2UubGFiZWxvZmZzZXQ7IGJyZWFrO1xuICAgICAgY2FzZSBcInJcIjogZWRnZS54ICs9IGVkZ2Uud2lkdGggLyAyICsgZWRnZS5sYWJlbG9mZnNldDsgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmV2ZXJzZVBvaW50c0ZvclJldmVyc2VkRWRnZXMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKGVkZ2UucmV2ZXJzZWQpIHtcbiAgICAgIGVkZ2UucG9pbnRzLnJldmVyc2UoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVCb3JkZXJOb2RlcyhnKSB7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoZy5jaGlsZHJlbih2KS5sZW5ndGgpIHtcbiAgICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgICAgdmFyIHQgPSBnLm5vZGUobm9kZS5ib3JkZXJUb3ApO1xuICAgICAgdmFyIGIgPSBnLm5vZGUobm9kZS5ib3JkZXJCb3R0b20pO1xuICAgICAgdmFyIGwgPSBnLm5vZGUoXy5sYXN0KG5vZGUuYm9yZGVyTGVmdCkpO1xuICAgICAgdmFyIHIgPSBnLm5vZGUoXy5sYXN0KG5vZGUuYm9yZGVyUmlnaHQpKTtcblxuICAgICAgbm9kZS53aWR0aCA9IE1hdGguYWJzKHIueCAtIGwueCk7XG4gICAgICBub2RlLmhlaWdodCA9IE1hdGguYWJzKGIueSAtIHQueSk7XG4gICAgICBub2RlLnggPSBsLnggKyBub2RlLndpZHRoIC8gMjtcbiAgICAgIG5vZGUueSA9IHQueSArIG5vZGUuaGVpZ2h0IC8gMjtcbiAgICB9XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoZy5ub2RlKHYpLmR1bW15ID09PSBcImJvcmRlclwiKSB7XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU2VsZkVkZ2VzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIGlmIChlLnYgPT09IGUudykge1xuICAgICAgdmFyIG5vZGUgPSBnLm5vZGUoZS52KTtcbiAgICAgIGlmICghbm9kZS5zZWxmRWRnZXMpIHtcbiAgICAgICAgbm9kZS5zZWxmRWRnZXMgPSBbXTtcbiAgICAgIH1cbiAgICAgIG5vZGUuc2VsZkVkZ2VzLnB1c2goeyBlOiBlLCBsYWJlbDogZy5lZGdlKGUpIH0pO1xuICAgICAgZy5yZW1vdmVFZGdlKGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydFNlbGZFZGdlcyhnKSB7XG4gIHZhciBsYXllcnMgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gIF8uZm9yRWFjaChsYXllcnMsIGZ1bmN0aW9uKGxheWVyKSB7XG4gICAgdmFyIG9yZGVyU2hpZnQgPSAwO1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odiwgaSkge1xuICAgICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgICBub2RlLm9yZGVyID0gaSArIG9yZGVyU2hpZnQ7XG4gICAgICBfLmZvckVhY2gobm9kZS5zZWxmRWRnZXMsIGZ1bmN0aW9uKHNlbGZFZGdlKSB7XG4gICAgICAgIHV0aWwuYWRkRHVtbXlOb2RlKGcsIFwic2VsZmVkZ2VcIiwge1xuICAgICAgICAgIHdpZHRoOiBzZWxmRWRnZS5sYWJlbC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IHNlbGZFZGdlLmxhYmVsLmhlaWdodCxcbiAgICAgICAgICByYW5rOiBub2RlLnJhbmssXG4gICAgICAgICAgb3JkZXI6IGkgKyAoKytvcmRlclNoaWZ0KSxcbiAgICAgICAgICBlOiBzZWxmRWRnZS5lLFxuICAgICAgICAgIGxhYmVsOiBzZWxmRWRnZS5sYWJlbFxuICAgICAgICB9LCBcIl9zZVwiKTtcbiAgICAgIH0pO1xuICAgICAgZGVsZXRlIG5vZGUuc2VsZkVkZ2VzO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcG9zaXRpb25TZWxmRWRnZXMoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKG5vZGUuZHVtbXkgPT09IFwic2VsZmVkZ2VcIikge1xuICAgICAgdmFyIHNlbGZOb2RlID0gZy5ub2RlKG5vZGUuZS52KTtcbiAgICAgIHZhciB4ID0gc2VsZk5vZGUueCArIHNlbGZOb2RlLndpZHRoIC8gMjtcbiAgICAgIHZhciB5ID0gc2VsZk5vZGUueTtcbiAgICAgIHZhciBkeCA9IG5vZGUueCAtIHg7XG4gICAgICB2YXIgZHkgPSBzZWxmTm9kZS5oZWlnaHQgLyAyO1xuICAgICAgZy5zZXRFZGdlKG5vZGUuZSwgbm9kZS5sYWJlbCk7XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgICBub2RlLmxhYmVsLnBvaW50cyA9IFtcbiAgICAgICAgeyB4OiB4ICsgMiAqIGR4IC8gMywgeTogeSAtIGR5IH0sXG4gICAgICAgIHsgeDogeCArIDUgKiBkeCAvIDYsIHk6IHkgLSBkeSB9LFxuICAgICAgICB7IHg6IHggKyAgICAgZHggICAgLCB5OiB5IH0sXG4gICAgICAgIHsgeDogeCArIDUgKiBkeCAvIDYsIHk6IHkgKyBkeSB9LFxuICAgICAgICB7IHg6IHggKyAyICogZHggLyAzLCB5OiB5ICsgZHkgfVxuICAgICAgXTtcbiAgICAgIG5vZGUubGFiZWwueCA9IG5vZGUueDtcbiAgICAgIG5vZGUubGFiZWwueSA9IG5vZGUueTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZWxlY3ROdW1iZXJBdHRycyhvYmosIGF0dHJzKSB7XG4gIHJldHVybiBfLm1hcFZhbHVlcyhfLnBpY2sob2JqLCBhdHRycyksIE51bWJlcik7XG59XG5cbmZ1bmN0aW9uIGNhbm9uaWNhbGl6ZShhdHRycykge1xuICB2YXIgbmV3QXR0cnMgPSB7fTtcbiAgXy5mb3JFYWNoKGF0dHJzLCBmdW5jdGlvbih2LCBrKSB7XG4gICAgbmV3QXR0cnNbay50b0xvd2VyQ2FzZSgpXSA9IHY7XG4gIH0pO1xuICByZXR1cm4gbmV3QXR0cnM7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGVidWdPcmRlcmluZzogZGVidWdPcmRlcmluZ1xufTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGRlYnVnT3JkZXJpbmcoZykge1xuICB2YXIgbGF5ZXJNYXRyaXggPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG5cbiAgdmFyIGggPSBuZXcgR3JhcGgoeyBjb21wb3VuZDogdHJ1ZSwgbXVsdGlncmFwaDogdHJ1ZSB9KS5zZXRHcmFwaCh7fSk7XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGguc2V0Tm9kZSh2LCB7IGxhYmVsOiB2IH0pO1xuICAgIGguc2V0UGFyZW50KHYsIFwibGF5ZXJcIiArIGcubm9kZSh2KS5yYW5rKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIGguc2V0RWRnZShlLnYsIGUudywge30sIGUubmFtZSk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChsYXllck1hdHJpeCwgZnVuY3Rpb24obGF5ZXIsIGkpIHtcbiAgICB2YXIgbGF5ZXJWID0gXCJsYXllclwiICsgaTtcbiAgICBoLnNldE5vZGUobGF5ZXJWLCB7IHJhbms6IFwic2FtZVwiIH0pO1xuICAgIF8ucmVkdWNlKGxheWVyLCBmdW5jdGlvbih1LCB2KSB7XG4gICAgICBoLnNldEVkZ2UodSwgdiwgeyBzdHlsZTogXCJpbnZpc1wiIH0pO1xuICAgICAgcmV0dXJuIHY7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBoO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBcIjAuOC41XCI7XG4iLCIvKlxuQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgQ2hyaXMgUGV0dGl0dFxuXG5QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG5vZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG5pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG50byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG5jb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cblRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG5hbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG5GSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG5PVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG5USEUgU09GVFdBUkUuXG4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ3JhcGhsaWI6IHJlcXVpcmUoXCIuL2xpYi9ncmFwaGxpYlwiKSxcblxuICBsYXlvdXQ6IHJlcXVpcmUoXCIuL2xpYi9sYXlvdXRcIiksXG4gIGRlYnVnOiByZXF1aXJlKFwiLi9saWIvZGVidWdcIiksXG4gIHV0aWw6IHtcbiAgICB0aW1lOiByZXF1aXJlKFwiLi9saWIvdXRpbFwiKS50aW1lLFxuICAgIG5vdGltZTogcmVxdWlyZShcIi4vbGliL3V0aWxcIikubm90aW1lXG4gIH0sXG4gIHZlcnNpb246IHJlcXVpcmUoXCIuL2xpYi92ZXJzaW9uXCIpXG59O1xuIiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiZGFncmVcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiZGFncmVcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlRGFncmVcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJkYWdyZVwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1wiY3l0b3NjYXBlRGFncmVcIl0gPSBmYWN0b3J5KHJvb3RbXCJkYWdyZVwiXSk7XG59KSh0aGlzLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX180X18pIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuLyoqKioqKi8gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLyoqKioqKi8gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gbnM7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDApO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaW1wbCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7IC8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcblxuXG52YXIgcmVnaXN0ZXIgPSBmdW5jdGlvbiByZWdpc3RlcihjeXRvc2NhcGUpIHtcbiAgaWYgKCFjeXRvc2NhcGUpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gY2FuJ3QgcmVnaXN0ZXIgaWYgY3l0b3NjYXBlIHVuc3BlY2lmaWVkXG5cblxuICBjeXRvc2NhcGUoJ2xheW91dCcsICdkYWdyZScsIGltcGwpOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYgKHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKGN5dG9zY2FwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXI7XG5cbi8qKiovIH0pLFxuLyogMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbnZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gaXNGdW5jdGlvbihvKSB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cbnZhciBkZWZhdWx0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG52YXIgZGFncmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOyAvLyBjb25zdHJ1Y3RvclxuLy8gb3B0aW9ucyA6IG9iamVjdCBjb250YWluaW5nIGxheW91dCBvcHRpb25zXG5cblxuZnVuY3Rpb24gRGFncmVMYXlvdXQob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBhc3NpZ24oe30sIGRlZmF1bHRzLCBvcHRpb25zKTtcbn0gLy8gcnVucyB0aGUgbGF5b3V0XG5cblxuRGFncmVMYXlvdXQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gIHZhciBsYXlvdXQgPSB0aGlzO1xuICB2YXIgY3kgPSBvcHRpb25zLmN5OyAvLyBjeSBpcyBhdXRvbWF0aWNhbGx5IHBvcHVsYXRlZCBmb3IgdXMgaW4gdGhlIGNvbnN0cnVjdG9yXG5cbiAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7XG5cbiAgdmFyIGdldFZhbCA9IGZ1bmN0aW9uIGdldFZhbChlbGUsIHZhbCkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKHZhbCkgPyB2YWwuYXBwbHkoZWxlLCBbZWxlXSkgOiB2YWw7XG4gIH07XG5cbiAgdmFyIGJiID0gb3B0aW9ucy5ib3VuZGluZ0JveCB8fCB7XG4gICAgeDE6IDAsXG4gICAgeTE6IDAsXG4gICAgdzogY3kud2lkdGgoKSxcbiAgICBoOiBjeS5oZWlnaHQoKVxuICB9O1xuXG4gIGlmIChiYi54MiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYmIueDIgPSBiYi54MSArIGJiLnc7XG4gIH1cblxuICBpZiAoYmIudyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYmIudyA9IGJiLngyIC0gYmIueDE7XG4gIH1cblxuICBpZiAoYmIueTIgPT09IHVuZGVmaW5lZCkge1xuICAgIGJiLnkyID0gYmIueTEgKyBiYi5oO1xuICB9XG5cbiAgaWYgKGJiLmggPT09IHVuZGVmaW5lZCkge1xuICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICB9XG5cbiAgdmFyIGcgPSBuZXcgZGFncmUuZ3JhcGhsaWIuR3JhcGgoe1xuICAgIG11bHRpZ3JhcGg6IHRydWUsXG4gICAgY29tcG91bmQ6IHRydWVcbiAgfSk7XG4gIHZhciBnT2JqID0ge307XG5cbiAgdmFyIHNldEdPYmogPSBmdW5jdGlvbiBzZXRHT2JqKG5hbWUsIHZhbCkge1xuICAgIGlmICh2YWwgIT0gbnVsbCkge1xuICAgICAgZ09ialtuYW1lXSA9IHZhbDtcbiAgICB9XG4gIH07XG5cbiAgc2V0R09iaignbm9kZXNlcCcsIG9wdGlvbnMubm9kZVNlcCk7XG4gIHNldEdPYmooJ2VkZ2VzZXAnLCBvcHRpb25zLmVkZ2VTZXApO1xuICBzZXRHT2JqKCdyYW5rc2VwJywgb3B0aW9ucy5yYW5rU2VwKTtcbiAgc2V0R09iaigncmFua2RpcicsIG9wdGlvbnMucmFua0Rpcik7XG4gIHNldEdPYmooJ3JhbmtlcicsIG9wdGlvbnMucmFua2VyKTtcbiAgZy5zZXRHcmFwaChnT2JqKTtcbiAgZy5zZXREZWZhdWx0RWRnZUxhYmVsKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge307XG4gIH0pO1xuICBnLnNldERlZmF1bHROb2RlTGFiZWwoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7fTtcbiAgfSk7IC8vIGFkZCBub2RlcyB0byBkYWdyZVxuXG4gIHZhciBub2RlcyA9IGVsZXMubm9kZXMoKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgbmJiID0gbm9kZS5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuICAgIGcuc2V0Tm9kZShub2RlLmlkKCksIHtcbiAgICAgIHdpZHRoOiBuYmIudyxcbiAgICAgIGhlaWdodDogbmJiLmgsXG4gICAgICBuYW1lOiBub2RlLmlkKClcbiAgICB9KTsgLy8gY29uc29sZS5sb2coIGcubm9kZShub2RlLmlkKCkpICk7XG4gIH0gLy8gc2V0IGNvbXBvdW5kIHBhcmVudHNcblxuXG4gIGZvciAodmFyIF9pID0gMDsgX2kgPCBub2Rlcy5sZW5ndGg7IF9pKyspIHtcbiAgICB2YXIgX25vZGUgPSBub2Rlc1tfaV07XG5cbiAgICBpZiAoX25vZGUuaXNDaGlsZCgpKSB7XG4gICAgICBnLnNldFBhcmVudChfbm9kZS5pZCgpLCBfbm9kZS5wYXJlbnQoKS5pZCgpKTtcbiAgICB9XG4gIH0gLy8gYWRkIGVkZ2VzIHRvIGRhZ3JlXG5cblxuICB2YXIgZWRnZXMgPSBlbGVzLmVkZ2VzKCkuc3RkRmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuICFlZGdlLnNvdXJjZSgpLmlzUGFyZW50KCkgJiYgIWVkZ2UudGFyZ2V0KCkuaXNQYXJlbnQoKTsgLy8gZGFncmUgY2FuJ3QgaGFuZGxlIGVkZ2VzIG9uIGNvbXBvdW5kIG5vZGVzXG4gIH0pO1xuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGVkZ2VzLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW19pMl07XG4gICAgZy5zZXRFZGdlKGVkZ2Uuc291cmNlKCkuaWQoKSwgZWRnZS50YXJnZXQoKS5pZCgpLCB7XG4gICAgICBtaW5sZW46IGdldFZhbChlZGdlLCBvcHRpb25zLm1pbkxlbiksXG4gICAgICB3ZWlnaHQ6IGdldFZhbChlZGdlLCBvcHRpb25zLmVkZ2VXZWlnaHQpLFxuICAgICAgbmFtZTogZWRnZS5pZCgpXG4gICAgfSwgZWRnZS5pZCgpKTsgLy8gY29uc29sZS5sb2coIGcuZWRnZShlZGdlLnNvdXJjZSgpLmlkKCksIGVkZ2UudGFyZ2V0KCkuaWQoKSwgZWRnZS5pZCgpKSApO1xuICB9XG5cbiAgZGFncmUubGF5b3V0KGcpO1xuICB2YXIgZ05vZGVJZHMgPSBnLm5vZGVzKCk7XG5cbiAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgZ05vZGVJZHMubGVuZ3RoOyBfaTMrKykge1xuICAgIHZhciBpZCA9IGdOb2RlSWRzW19pM107XG4gICAgdmFyIG4gPSBnLm5vZGUoaWQpO1xuICAgIGN5LmdldEVsZW1lbnRCeUlkKGlkKS5zY3JhdGNoKCkuZGFncmUgPSBuO1xuICB9XG5cbiAgdmFyIGRhZ3JlQkI7XG5cbiAgaWYgKG9wdGlvbnMuYm91bmRpbmdCb3gpIHtcbiAgICBkYWdyZUJCID0ge1xuICAgICAgeDE6IEluZmluaXR5LFxuICAgICAgeDI6IC1JbmZpbml0eSxcbiAgICAgIHkxOiBJbmZpbml0eSxcbiAgICAgIHkyOiAtSW5maW5pdHlcbiAgICB9O1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBkTW9kZWwgPSBub2RlLnNjcmF0Y2goKS5kYWdyZTtcbiAgICAgIGRhZ3JlQkIueDEgPSBNYXRoLm1pbihkYWdyZUJCLngxLCBkTW9kZWwueCk7XG4gICAgICBkYWdyZUJCLngyID0gTWF0aC5tYXgoZGFncmVCQi54MiwgZE1vZGVsLngpO1xuICAgICAgZGFncmVCQi55MSA9IE1hdGgubWluKGRhZ3JlQkIueTEsIGRNb2RlbC55KTtcbiAgICAgIGRhZ3JlQkIueTIgPSBNYXRoLm1heChkYWdyZUJCLnkyLCBkTW9kZWwueSk7XG4gICAgfSk7XG4gICAgZGFncmVCQi53ID0gZGFncmVCQi54MiAtIGRhZ3JlQkIueDE7XG4gICAgZGFncmVCQi5oID0gZGFncmVCQi55MiAtIGRhZ3JlQkIueTE7XG4gIH0gZWxzZSB7XG4gICAgZGFncmVCQiA9IGJiO1xuICB9XG5cbiAgdmFyIGNvbnN0cmFpblBvcyA9IGZ1bmN0aW9uIGNvbnN0cmFpblBvcyhwKSB7XG4gICAgaWYgKG9wdGlvbnMuYm91bmRpbmdCb3gpIHtcbiAgICAgIHZhciB4UGN0ID0gZGFncmVCQi53ID09PSAwID8gMCA6IChwLnggLSBkYWdyZUJCLngxKSAvIGRhZ3JlQkIudztcbiAgICAgIHZhciB5UGN0ID0gZGFncmVCQi5oID09PSAwID8gMCA6IChwLnkgLSBkYWdyZUJCLnkxKSAvIGRhZ3JlQkIuaDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGJiLngxICsgeFBjdCAqIGJiLncsXG4gICAgICAgIHk6IGJiLnkxICsgeVBjdCAqIGJiLmhcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwO1xuICAgIH1cbiAgfTtcblxuICBub2Rlcy5sYXlvdXRQb3NpdGlvbnMobGF5b3V0LCBvcHRpb25zLCBmdW5jdGlvbiAoZWxlKSB7XG4gICAgZWxlID0gX3R5cGVvZihlbGUpID09PSBcIm9iamVjdFwiID8gZWxlIDogdGhpcztcbiAgICB2YXIgZE1vZGVsID0gZWxlLnNjcmF0Y2goKS5kYWdyZTtcbiAgICByZXR1cm4gY29uc3RyYWluUG9zKHtcbiAgICAgIHg6IGRNb2RlbC54LFxuICAgICAgeTogZE1vZGVsLnlcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYWdyZUxheW91dDtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgLy8gZGFncmUgYWxnbyBvcHRpb25zLCB1c2VzIGRlZmF1bHQgdmFsdWUgb24gdW5kZWZpbmVkXG4gIG5vZGVTZXA6IHVuZGVmaW5lZCxcbiAgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBub2RlcyBpbiB0aGUgc2FtZSByYW5rXG4gIGVkZ2VTZXA6IHVuZGVmaW5lZCxcbiAgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBlZGdlcyBpbiB0aGUgc2FtZSByYW5rXG4gIHJhbmtTZXA6IHVuZGVmaW5lZCxcbiAgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBub2RlcyBpbiB0aGUgc2FtZSByYW5rXG4gIHJhbmtEaXI6IHVuZGVmaW5lZCxcbiAgLy8gJ1RCJyBmb3IgdG9wIHRvIGJvdHRvbSBmbG93LCAnTFInIGZvciBsZWZ0IHRvIHJpZ2h0LFxuICByYW5rZXI6IHVuZGVmaW5lZCxcbiAgLy8gVHlwZSBvZiBhbGdvcml0aG0gdG8gYXNzaWducyBhIHJhbmsgdG8gZWFjaCBub2RlIGluIHRoZSBpbnB1dCBncmFwaC5cbiAgLy8gUG9zc2libGUgdmFsdWVzOiBuZXR3b3JrLXNpbXBsZXgsIHRpZ2h0LXRyZWUgb3IgbG9uZ2VzdC1wYXRoXG4gIG1pbkxlbjogZnVuY3Rpb24gbWluTGVuKGVkZ2UpIHtcbiAgICByZXR1cm4gMTtcbiAgfSxcbiAgLy8gbnVtYmVyIG9mIHJhbmtzIHRvIGtlZXAgYmV0d2VlbiB0aGUgc291cmNlIGFuZCB0YXJnZXQgb2YgdGhlIGVkZ2VcbiAgZWRnZVdlaWdodDogZnVuY3Rpb24gZWRnZVdlaWdodChlZGdlKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0sXG4gIC8vIGhpZ2hlciB3ZWlnaHQgZWRnZXMgYXJlIGdlbmVyYWxseSBtYWRlIHNob3J0ZXIgYW5kIHN0cmFpZ2h0ZXIgdGhhbiBsb3dlciB3ZWlnaHQgZWRnZXNcbiAgLy8gZ2VuZXJhbCBsYXlvdXQgb3B0aW9uc1xuICBmaXQ6IHRydWUsXG4gIC8vIHdoZXRoZXIgdG8gZml0IHRvIHZpZXdwb3J0XG4gIHBhZGRpbmc6IDMwLFxuICAvLyBmaXQgcGFkZGluZ1xuICBzcGFjaW5nRmFjdG9yOiB1bmRlZmluZWQsXG4gIC8vIEFwcGxpZXMgYSBtdWx0aXBsaWNhdGl2ZSBmYWN0b3IgKD4wKSB0byBleHBhbmQgb3IgY29tcHJlc3MgdGhlIG92ZXJhbGwgYXJlYSB0aGF0IHRoZSBub2RlcyB0YWtlIHVwXG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2UsXG4gIC8vIHdoZXRoZXIgbGFiZWxzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkZXRlcm1pbmluZyB0aGUgc3BhY2UgdXNlZCBieSBhIG5vZGVcbiAgYW5pbWF0ZTogZmFsc2UsXG4gIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24gYW5pbWF0ZUZpbHRlcihub2RlLCBpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIC8vIHdoZXRoZXIgdG8gYW5pbWF0ZSBzcGVjaWZpYyBub2RlcyB3aGVuIGFuaW1hdGlvbiBpcyBvbjsgbm9uLWFuaW1hdGVkIG5vZGVzIGltbWVkaWF0ZWx5IGdvIHRvIHRoZWlyIGZpbmFsIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsXG4gIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3MpIHtcbiAgICByZXR1cm4gcG9zO1xuICB9LFxuICAvLyBhIGZ1bmN0aW9uIHRoYXQgYXBwbGllcyBhIHRyYW5zZm9ybSB0byB0aGUgZmluYWwgbm9kZSBwb3NpdGlvblxuICByZWFkeTogZnVuY3Rpb24gcmVhZHkoKSB7fSxcbiAgLy8gb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHt9IC8vIG9uIGxheW91dHN0b3BcblxufTtcbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG5cbi8qKiovIH0pLFxuLyogMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyBTaW1wbGUsIGludGVybmFsIE9iamVjdC5hc3NpZ24oKSBwb2x5ZmlsbCBmb3Igb3B0aW9ucyBvYmplY3RzIGV0Yy5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmFzc2lnbiAhPSBudWxsID8gT2JqZWN0LmFzc2lnbi5iaW5kKE9iamVjdCkgOiBmdW5jdGlvbiAodGd0KSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzcmNzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBzcmNzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHNyY3MuZm9yRWFjaChmdW5jdGlvbiAoc3JjKSB7XG4gICAgT2JqZWN0LmtleXMoc3JjKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICByZXR1cm4gdGd0W2tdID0gc3JjW2tdO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHRndDtcbn07XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzRfXztcblxuLyoqKi8gfSlcbi8qKioqKiovIF0pO1xufSk7IiwiLy8gaHR0cHM6Ly9kM2pzLm9yZy9kMy1xdWFkdHJlZS8gdjIuMC4wIENvcHlyaWdodCAyMDIwIE1pa2UgQm9zdG9ja1xuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbnR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IGZhY3RvcnkoZXhwb3J0cykgOlxudHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnZXhwb3J0cyddLCBmYWN0b3J5KSA6XG4oZ2xvYmFsID0gZ2xvYmFsIHx8IHNlbGYsIGZhY3RvcnkoZ2xvYmFsLmQzID0gZ2xvYmFsLmQzIHx8IHt9KSk7XG59KHRoaXMsIGZ1bmN0aW9uIChleHBvcnRzKSB7ICd1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gdHJlZV9hZGQoZCkge1xuICBjb25zdCB4ID0gK3RoaXMuX3guY2FsbChudWxsLCBkKSxcbiAgICAgIHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpO1xuICByZXR1cm4gYWRkKHRoaXMuY292ZXIoeCwgeSksIHgsIHksIGQpO1xufVxuXG5mdW5jdGlvbiBhZGQodHJlZSwgeCwgeSwgZCkge1xuICBpZiAoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiB0cmVlOyAvLyBpZ25vcmUgaW52YWxpZCBwb2ludHNcblxuICB2YXIgcGFyZW50LFxuICAgICAgbm9kZSA9IHRyZWUuX3Jvb3QsXG4gICAgICBsZWFmID0ge2RhdGE6IGR9LFxuICAgICAgeDAgPSB0cmVlLl94MCxcbiAgICAgIHkwID0gdHJlZS5feTAsXG4gICAgICB4MSA9IHRyZWUuX3gxLFxuICAgICAgeTEgPSB0cmVlLl95MSxcbiAgICAgIHhtLFxuICAgICAgeW0sXG4gICAgICB4cCxcbiAgICAgIHlwLFxuICAgICAgcmlnaHQsXG4gICAgICBib3R0b20sXG4gICAgICBpLFxuICAgICAgajtcblxuICAvLyBJZiB0aGUgdHJlZSBpcyBlbXB0eSwgaW5pdGlhbGl6ZSB0aGUgcm9vdCBhcyBhIGxlYWYuXG4gIGlmICghbm9kZSkgcmV0dXJuIHRyZWUuX3Jvb3QgPSBsZWFmLCB0cmVlO1xuXG4gIC8vIEZpbmQgdGhlIGV4aXN0aW5nIGxlYWYgZm9yIHRoZSBuZXcgcG9pbnQsIG9yIGFkZCBpdC5cbiAgd2hpbGUgKG5vZGUubGVuZ3RoKSB7XG4gICAgaWYgKHJpZ2h0ID0geCA+PSAoeG0gPSAoeDAgKyB4MSkgLyAyKSkgeDAgPSB4bTsgZWxzZSB4MSA9IHhtO1xuICAgIGlmIChib3R0b20gPSB5ID49ICh5bSA9ICh5MCArIHkxKSAvIDIpKSB5MCA9IHltOyBlbHNlIHkxID0geW07XG4gICAgaWYgKHBhcmVudCA9IG5vZGUsICEobm9kZSA9IG5vZGVbaSA9IGJvdHRvbSA8PCAxIHwgcmlnaHRdKSkgcmV0dXJuIHBhcmVudFtpXSA9IGxlYWYsIHRyZWU7XG4gIH1cblxuICAvLyBJcyB0aGUgbmV3IHBvaW50IGlzIGV4YWN0bHkgY29pbmNpZGVudCB3aXRoIHRoZSBleGlzdGluZyBwb2ludD9cbiAgeHAgPSArdHJlZS5feC5jYWxsKG51bGwsIG5vZGUuZGF0YSk7XG4gIHlwID0gK3RyZWUuX3kuY2FsbChudWxsLCBub2RlLmRhdGEpO1xuICBpZiAoeCA9PT0geHAgJiYgeSA9PT0geXApIHJldHVybiBsZWFmLm5leHQgPSBub2RlLCBwYXJlbnQgPyBwYXJlbnRbaV0gPSBsZWFmIDogdHJlZS5fcm9vdCA9IGxlYWYsIHRyZWU7XG5cbiAgLy8gT3RoZXJ3aXNlLCBzcGxpdCB0aGUgbGVhZiBub2RlIHVudGlsIHRoZSBvbGQgYW5kIG5ldyBwb2ludCBhcmUgc2VwYXJhdGVkLlxuICBkbyB7XG4gICAgcGFyZW50ID0gcGFyZW50ID8gcGFyZW50W2ldID0gbmV3IEFycmF5KDQpIDogdHJlZS5fcm9vdCA9IG5ldyBBcnJheSg0KTtcbiAgICBpZiAocmlnaHQgPSB4ID49ICh4bSA9ICh4MCArIHgxKSAvIDIpKSB4MCA9IHhtOyBlbHNlIHgxID0geG07XG4gICAgaWYgKGJvdHRvbSA9IHkgPj0gKHltID0gKHkwICsgeTEpIC8gMikpIHkwID0geW07IGVsc2UgeTEgPSB5bTtcbiAgfSB3aGlsZSAoKGkgPSBib3R0b20gPDwgMSB8IHJpZ2h0KSA9PT0gKGogPSAoeXAgPj0geW0pIDw8IDEgfCAoeHAgPj0geG0pKSk7XG4gIHJldHVybiBwYXJlbnRbal0gPSBub2RlLCBwYXJlbnRbaV0gPSBsZWFmLCB0cmVlO1xufVxuXG5mdW5jdGlvbiBhZGRBbGwoZGF0YSkge1xuICB2YXIgZCwgaSwgbiA9IGRhdGEubGVuZ3RoLFxuICAgICAgeCxcbiAgICAgIHksXG4gICAgICB4eiA9IG5ldyBBcnJheShuKSxcbiAgICAgIHl6ID0gbmV3IEFycmF5KG4pLFxuICAgICAgeDAgPSBJbmZpbml0eSxcbiAgICAgIHkwID0gSW5maW5pdHksXG4gICAgICB4MSA9IC1JbmZpbml0eSxcbiAgICAgIHkxID0gLUluZmluaXR5O1xuXG4gIC8vIENvbXB1dGUgdGhlIHBvaW50cyBhbmQgdGhlaXIgZXh0ZW50LlxuICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKGlzTmFOKHggPSArdGhpcy5feC5jYWxsKG51bGwsIGQgPSBkYXRhW2ldKSkgfHwgaXNOYU4oeSA9ICt0aGlzLl95LmNhbGwobnVsbCwgZCkpKSBjb250aW51ZTtcbiAgICB4eltpXSA9IHg7XG4gICAgeXpbaV0gPSB5O1xuICAgIGlmICh4IDwgeDApIHgwID0geDtcbiAgICBpZiAoeCA+IHgxKSB4MSA9IHg7XG4gICAgaWYgKHkgPCB5MCkgeTAgPSB5O1xuICAgIGlmICh5ID4geTEpIHkxID0geTtcbiAgfVxuXG4gIC8vIElmIHRoZXJlIHdlcmUgbm8gKHZhbGlkKSBwb2ludHMsIGFib3J0LlxuICBpZiAoeDAgPiB4MSB8fCB5MCA+IHkxKSByZXR1cm4gdGhpcztcblxuICAvLyBFeHBhbmQgdGhlIHRyZWUgdG8gY292ZXIgdGhlIG5ldyBwb2ludHMuXG4gIHRoaXMuY292ZXIoeDAsIHkwKS5jb3Zlcih4MSwgeTEpO1xuXG4gIC8vIEFkZCB0aGUgbmV3IHBvaW50cy5cbiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgIGFkZCh0aGlzLCB4eltpXSwgeXpbaV0sIGRhdGFbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHRyZWVfY292ZXIoeCwgeSkge1xuICBpZiAoaXNOYU4oeCA9ICt4KSB8fCBpc05hTih5ID0gK3kpKSByZXR1cm4gdGhpczsgLy8gaWdub3JlIGludmFsaWQgcG9pbnRzXG5cbiAgdmFyIHgwID0gdGhpcy5feDAsXG4gICAgICB5MCA9IHRoaXMuX3kwLFxuICAgICAgeDEgPSB0aGlzLl94MSxcbiAgICAgIHkxID0gdGhpcy5feTE7XG5cbiAgLy8gSWYgdGhlIHF1YWR0cmVlIGhhcyBubyBleHRlbnQsIGluaXRpYWxpemUgdGhlbS5cbiAgLy8gSW50ZWdlciBleHRlbnQgYXJlIG5lY2Vzc2FyeSBzbyB0aGF0IGlmIHdlIGxhdGVyIGRvdWJsZSB0aGUgZXh0ZW50LFxuICAvLyB0aGUgZXhpc3RpbmcgcXVhZHJhbnQgYm91bmRhcmllcyBkb27igJl0IGNoYW5nZSBkdWUgdG8gZmxvYXRpbmcgcG9pbnQgZXJyb3IhXG4gIGlmIChpc05hTih4MCkpIHtcbiAgICB4MSA9ICh4MCA9IE1hdGguZmxvb3IoeCkpICsgMTtcbiAgICB5MSA9ICh5MCA9IE1hdGguZmxvb3IoeSkpICsgMTtcbiAgfVxuXG4gIC8vIE90aGVyd2lzZSwgZG91YmxlIHJlcGVhdGVkbHkgdG8gY292ZXIuXG4gIGVsc2Uge1xuICAgIHZhciB6ID0geDEgLSB4MCB8fCAxLFxuICAgICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgICAgcGFyZW50LFxuICAgICAgICBpO1xuXG4gICAgd2hpbGUgKHgwID4geCB8fCB4ID49IHgxIHx8IHkwID4geSB8fCB5ID49IHkxKSB7XG4gICAgICBpID0gKHkgPCB5MCkgPDwgMSB8ICh4IDwgeDApO1xuICAgICAgcGFyZW50ID0gbmV3IEFycmF5KDQpLCBwYXJlbnRbaV0gPSBub2RlLCBub2RlID0gcGFyZW50LCB6ICo9IDI7XG4gICAgICBzd2l0Y2ggKGkpIHtcbiAgICAgICAgY2FzZSAwOiB4MSA9IHgwICsgeiwgeTEgPSB5MCArIHo7IGJyZWFrO1xuICAgICAgICBjYXNlIDE6IHgwID0geDEgLSB6LCB5MSA9IHkwICsgejsgYnJlYWs7XG4gICAgICAgIGNhc2UgMjogeDEgPSB4MCArIHosIHkwID0geTEgLSB6OyBicmVhaztcbiAgICAgICAgY2FzZSAzOiB4MCA9IHgxIC0geiwgeTAgPSB5MSAtIHo7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9yb290ICYmIHRoaXMuX3Jvb3QubGVuZ3RoKSB0aGlzLl9yb290ID0gbm9kZTtcbiAgfVxuXG4gIHRoaXMuX3gwID0geDA7XG4gIHRoaXMuX3kwID0geTA7XG4gIHRoaXMuX3gxID0geDE7XG4gIHRoaXMuX3kxID0geTE7XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB0cmVlX2RhdGEoKSB7XG4gIHZhciBkYXRhID0gW107XG4gIHRoaXMudmlzaXQoZnVuY3Rpb24obm9kZSkge1xuICAgIGlmICghbm9kZS5sZW5ndGgpIGRvIGRhdGEucHVzaChub2RlLmRhdGEpOyB3aGlsZSAobm9kZSA9IG5vZGUubmV4dClcbiAgfSk7XG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiB0cmVlX2V4dGVudChfKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuY292ZXIoK19bMF1bMF0sICtfWzBdWzFdKS5jb3ZlcigrX1sxXVswXSwgK19bMV1bMV0pXG4gICAgICA6IGlzTmFOKHRoaXMuX3gwKSA/IHVuZGVmaW5lZCA6IFtbdGhpcy5feDAsIHRoaXMuX3kwXSwgW3RoaXMuX3gxLCB0aGlzLl95MV1dO1xufVxuXG5mdW5jdGlvbiBRdWFkKG5vZGUsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHRoaXMubm9kZSA9IG5vZGU7XG4gIHRoaXMueDAgPSB4MDtcbiAgdGhpcy55MCA9IHkwO1xuICB0aGlzLngxID0geDE7XG4gIHRoaXMueTEgPSB5MTtcbn1cblxuZnVuY3Rpb24gdHJlZV9maW5kKHgsIHksIHJhZGl1cykge1xuICB2YXIgZGF0YSxcbiAgICAgIHgwID0gdGhpcy5feDAsXG4gICAgICB5MCA9IHRoaXMuX3kwLFxuICAgICAgeDEsXG4gICAgICB5MSxcbiAgICAgIHgyLFxuICAgICAgeTIsXG4gICAgICB4MyA9IHRoaXMuX3gxLFxuICAgICAgeTMgPSB0aGlzLl95MSxcbiAgICAgIHF1YWRzID0gW10sXG4gICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgIHEsXG4gICAgICBpO1xuXG4gIGlmIChub2RlKSBxdWFkcy5wdXNoKG5ldyBRdWFkKG5vZGUsIHgwLCB5MCwgeDMsIHkzKSk7XG4gIGlmIChyYWRpdXMgPT0gbnVsbCkgcmFkaXVzID0gSW5maW5pdHk7XG4gIGVsc2Uge1xuICAgIHgwID0geCAtIHJhZGl1cywgeTAgPSB5IC0gcmFkaXVzO1xuICAgIHgzID0geCArIHJhZGl1cywgeTMgPSB5ICsgcmFkaXVzO1xuICAgIHJhZGl1cyAqPSByYWRpdXM7XG4gIH1cblxuICB3aGlsZSAocSA9IHF1YWRzLnBvcCgpKSB7XG5cbiAgICAvLyBTdG9wIHNlYXJjaGluZyBpZiB0aGlzIHF1YWRyYW50IGNhbuKAmXQgY29udGFpbiBhIGNsb3NlciBub2RlLlxuICAgIGlmICghKG5vZGUgPSBxLm5vZGUpXG4gICAgICAgIHx8ICh4MSA9IHEueDApID4geDNcbiAgICAgICAgfHwgKHkxID0gcS55MCkgPiB5M1xuICAgICAgICB8fCAoeDIgPSBxLngxKSA8IHgwXG4gICAgICAgIHx8ICh5MiA9IHEueTEpIDwgeTApIGNvbnRpbnVlO1xuXG4gICAgLy8gQmlzZWN0IHRoZSBjdXJyZW50IHF1YWRyYW50LlxuICAgIGlmIChub2RlLmxlbmd0aCkge1xuICAgICAgdmFyIHhtID0gKHgxICsgeDIpIC8gMixcbiAgICAgICAgICB5bSA9ICh5MSArIHkyKSAvIDI7XG5cbiAgICAgIHF1YWRzLnB1c2goXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbM10sIHhtLCB5bSwgeDIsIHkyKSxcbiAgICAgICAgbmV3IFF1YWQobm9kZVsyXSwgeDEsIHltLCB4bSwgeTIpLFxuICAgICAgICBuZXcgUXVhZChub2RlWzFdLCB4bSwgeTEsIHgyLCB5bSksXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbMF0sIHgxLCB5MSwgeG0sIHltKVxuICAgICAgKTtcblxuICAgICAgLy8gVmlzaXQgdGhlIGNsb3Nlc3QgcXVhZHJhbnQgZmlyc3QuXG4gICAgICBpZiAoaSA9ICh5ID49IHltKSA8PCAxIHwgKHggPj0geG0pKSB7XG4gICAgICAgIHEgPSBxdWFkc1txdWFkcy5sZW5ndGggLSAxXTtcbiAgICAgICAgcXVhZHNbcXVhZHMubGVuZ3RoIC0gMV0gPSBxdWFkc1txdWFkcy5sZW5ndGggLSAxIC0gaV07XG4gICAgICAgIHF1YWRzW3F1YWRzLmxlbmd0aCAtIDEgLSBpXSA9IHE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVmlzaXQgdGhpcyBwb2ludC4gKFZpc2l0aW5nIGNvaW5jaWRlbnQgcG9pbnRzIGlzbuKAmXQgbmVjZXNzYXJ5ISlcbiAgICBlbHNlIHtcbiAgICAgIHZhciBkeCA9IHggLSArdGhpcy5feC5jYWxsKG51bGwsIG5vZGUuZGF0YSksXG4gICAgICAgICAgZHkgPSB5IC0gK3RoaXMuX3kuY2FsbChudWxsLCBub2RlLmRhdGEpLFxuICAgICAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHk7XG4gICAgICBpZiAoZDIgPCByYWRpdXMpIHtcbiAgICAgICAgdmFyIGQgPSBNYXRoLnNxcnQocmFkaXVzID0gZDIpO1xuICAgICAgICB4MCA9IHggLSBkLCB5MCA9IHkgLSBkO1xuICAgICAgICB4MyA9IHggKyBkLCB5MyA9IHkgKyBkO1xuICAgICAgICBkYXRhID0gbm9kZS5kYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiB0cmVlX3JlbW92ZShkKSB7XG4gIGlmIChpc05hTih4ID0gK3RoaXMuX3guY2FsbChudWxsLCBkKSkgfHwgaXNOYU4oeSA9ICt0aGlzLl95LmNhbGwobnVsbCwgZCkpKSByZXR1cm4gdGhpczsgLy8gaWdub3JlIGludmFsaWQgcG9pbnRzXG5cbiAgdmFyIHBhcmVudCxcbiAgICAgIG5vZGUgPSB0aGlzLl9yb290LFxuICAgICAgcmV0YWluZXIsXG4gICAgICBwcmV2aW91cyxcbiAgICAgIG5leHQsXG4gICAgICB4MCA9IHRoaXMuX3gwLFxuICAgICAgeTAgPSB0aGlzLl95MCxcbiAgICAgIHgxID0gdGhpcy5feDEsXG4gICAgICB5MSA9IHRoaXMuX3kxLFxuICAgICAgeCxcbiAgICAgIHksXG4gICAgICB4bSxcbiAgICAgIHltLFxuICAgICAgcmlnaHQsXG4gICAgICBib3R0b20sXG4gICAgICBpLFxuICAgICAgajtcblxuICAvLyBJZiB0aGUgdHJlZSBpcyBlbXB0eSwgaW5pdGlhbGl6ZSB0aGUgcm9vdCBhcyBhIGxlYWYuXG4gIGlmICghbm9kZSkgcmV0dXJuIHRoaXM7XG5cbiAgLy8gRmluZCB0aGUgbGVhZiBub2RlIGZvciB0aGUgcG9pbnQuXG4gIC8vIFdoaWxlIGRlc2NlbmRpbmcsIGFsc28gcmV0YWluIHRoZSBkZWVwZXN0IHBhcmVudCB3aXRoIGEgbm9uLXJlbW92ZWQgc2libGluZy5cbiAgaWYgKG5vZGUubGVuZ3RoKSB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChyaWdodCA9IHggPj0gKHhtID0gKHgwICsgeDEpIC8gMikpIHgwID0geG07IGVsc2UgeDEgPSB4bTtcbiAgICBpZiAoYm90dG9tID0geSA+PSAoeW0gPSAoeTAgKyB5MSkgLyAyKSkgeTAgPSB5bTsgZWxzZSB5MSA9IHltO1xuICAgIGlmICghKHBhcmVudCA9IG5vZGUsIG5vZGUgPSBub2RlW2kgPSBib3R0b20gPDwgMSB8IHJpZ2h0XSkpIHJldHVybiB0aGlzO1xuICAgIGlmICghbm9kZS5sZW5ndGgpIGJyZWFrO1xuICAgIGlmIChwYXJlbnRbKGkgKyAxKSAmIDNdIHx8IHBhcmVudFsoaSArIDIpICYgM10gfHwgcGFyZW50WyhpICsgMykgJiAzXSkgcmV0YWluZXIgPSBwYXJlbnQsIGogPSBpO1xuICB9XG5cbiAgLy8gRmluZCB0aGUgcG9pbnQgdG8gcmVtb3ZlLlxuICB3aGlsZSAobm9kZS5kYXRhICE9PSBkKSBpZiAoIShwcmV2aW91cyA9IG5vZGUsIG5vZGUgPSBub2RlLm5leHQpKSByZXR1cm4gdGhpcztcbiAgaWYgKG5leHQgPSBub2RlLm5leHQpIGRlbGV0ZSBub2RlLm5leHQ7XG5cbiAgLy8gSWYgdGhlcmUgYXJlIG11bHRpcGxlIGNvaW5jaWRlbnQgcG9pbnRzLCByZW1vdmUganVzdCB0aGUgcG9pbnQuXG4gIGlmIChwcmV2aW91cykgcmV0dXJuIChuZXh0ID8gcHJldmlvdXMubmV4dCA9IG5leHQgOiBkZWxldGUgcHJldmlvdXMubmV4dCksIHRoaXM7XG5cbiAgLy8gSWYgdGhpcyBpcyB0aGUgcm9vdCBwb2ludCwgcmVtb3ZlIGl0LlxuICBpZiAoIXBhcmVudCkgcmV0dXJuIHRoaXMuX3Jvb3QgPSBuZXh0LCB0aGlzO1xuXG4gIC8vIFJlbW92ZSB0aGlzIGxlYWYuXG4gIG5leHQgPyBwYXJlbnRbaV0gPSBuZXh0IDogZGVsZXRlIHBhcmVudFtpXTtcblxuICAvLyBJZiB0aGUgcGFyZW50IG5vdyBjb250YWlucyBleGFjdGx5IG9uZSBsZWFmLCBjb2xsYXBzZSBzdXBlcmZsdW91cyBwYXJlbnRzLlxuICBpZiAoKG5vZGUgPSBwYXJlbnRbMF0gfHwgcGFyZW50WzFdIHx8IHBhcmVudFsyXSB8fCBwYXJlbnRbM10pXG4gICAgICAmJiBub2RlID09PSAocGFyZW50WzNdIHx8IHBhcmVudFsyXSB8fCBwYXJlbnRbMV0gfHwgcGFyZW50WzBdKVxuICAgICAgJiYgIW5vZGUubGVuZ3RoKSB7XG4gICAgaWYgKHJldGFpbmVyKSByZXRhaW5lcltqXSA9IG5vZGU7XG4gICAgZWxzZSB0aGlzLl9yb290ID0gbm9kZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiByZW1vdmVBbGwoZGF0YSkge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IGRhdGEubGVuZ3RoOyBpIDwgbjsgKytpKSB0aGlzLnJlbW92ZShkYXRhW2ldKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHRyZWVfcm9vdCgpIHtcbiAgcmV0dXJuIHRoaXMuX3Jvb3Q7XG59XG5cbmZ1bmN0aW9uIHRyZWVfc2l6ZSgpIHtcbiAgdmFyIHNpemUgPSAwO1xuICB0aGlzLnZpc2l0KGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUubGVuZ3RoKSBkbyArK3NpemU7IHdoaWxlIChub2RlID0gbm9kZS5uZXh0KVxuICB9KTtcbiAgcmV0dXJuIHNpemU7XG59XG5cbmZ1bmN0aW9uIHRyZWVfdmlzaXQoY2FsbGJhY2spIHtcbiAgdmFyIHF1YWRzID0gW10sIHEsIG5vZGUgPSB0aGlzLl9yb290LCBjaGlsZCwgeDAsIHkwLCB4MSwgeTE7XG4gIGlmIChub2RlKSBxdWFkcy5wdXNoKG5ldyBRdWFkKG5vZGUsIHRoaXMuX3gwLCB0aGlzLl95MCwgdGhpcy5feDEsIHRoaXMuX3kxKSk7XG4gIHdoaWxlIChxID0gcXVhZHMucG9wKCkpIHtcbiAgICBpZiAoIWNhbGxiYWNrKG5vZGUgPSBxLm5vZGUsIHgwID0gcS54MCwgeTAgPSBxLnkwLCB4MSA9IHEueDEsIHkxID0gcS55MSkgJiYgbm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciB4bSA9ICh4MCArIHgxKSAvIDIsIHltID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbM10pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5bSwgeDEsIHkxKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzJdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeW0sIHhtLCB5MSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsxXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHkwLCB4MSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMF0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5MCwgeG0sIHltKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB0cmVlX3Zpc2l0QWZ0ZXIoY2FsbGJhY2spIHtcbiAgdmFyIHF1YWRzID0gW10sIG5leHQgPSBbXSwgcTtcbiAgaWYgKHRoaXMuX3Jvb3QpIHF1YWRzLnB1c2gobmV3IFF1YWQodGhpcy5fcm9vdCwgdGhpcy5feDAsIHRoaXMuX3kwLCB0aGlzLl94MSwgdGhpcy5feTEpKTtcbiAgd2hpbGUgKHEgPSBxdWFkcy5wb3AoKSkge1xuICAgIHZhciBub2RlID0gcS5ub2RlO1xuICAgIGlmIChub2RlLmxlbmd0aCkge1xuICAgICAgdmFyIGNoaWxkLCB4MCA9IHEueDAsIHkwID0gcS55MCwgeDEgPSBxLngxLCB5MSA9IHEueTEsIHhtID0gKHgwICsgeDEpIC8gMiwgeW0gPSAoeTAgKyB5MSkgLyAyO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVswXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeDAsIHkwLCB4bSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMV0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5MCwgeDEsIHltKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzJdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeW0sIHhtLCB5MSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVszXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHltLCB4MSwgeTEpKTtcbiAgICB9XG4gICAgbmV4dC5wdXNoKHEpO1xuICB9XG4gIHdoaWxlIChxID0gbmV4dC5wb3AoKSkge1xuICAgIGNhbGxiYWNrKHEubm9kZSwgcS54MCwgcS55MCwgcS54MSwgcS55MSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRYKGQpIHtcbiAgcmV0dXJuIGRbMF07XG59XG5cbmZ1bmN0aW9uIHRyZWVfeChfKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3ggPSBfLCB0aGlzKSA6IHRoaXMuX3g7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRZKGQpIHtcbiAgcmV0dXJuIGRbMV07XG59XG5cbmZ1bmN0aW9uIHRyZWVfeShfKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3kgPSBfLCB0aGlzKSA6IHRoaXMuX3k7XG59XG5cbmZ1bmN0aW9uIHF1YWR0cmVlKG5vZGVzLCB4LCB5KSB7XG4gIHZhciB0cmVlID0gbmV3IFF1YWR0cmVlKHggPT0gbnVsbCA/IGRlZmF1bHRYIDogeCwgeSA9PSBudWxsID8gZGVmYXVsdFkgOiB5LCBOYU4sIE5hTiwgTmFOLCBOYU4pO1xuICByZXR1cm4gbm9kZXMgPT0gbnVsbCA/IHRyZWUgOiB0cmVlLmFkZEFsbChub2Rlcyk7XG59XG5cbmZ1bmN0aW9uIFF1YWR0cmVlKHgsIHksIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHRoaXMuX3ggPSB4O1xuICB0aGlzLl95ID0geTtcbiAgdGhpcy5feDAgPSB4MDtcbiAgdGhpcy5feTAgPSB5MDtcbiAgdGhpcy5feDEgPSB4MTtcbiAgdGhpcy5feTEgPSB5MTtcbiAgdGhpcy5fcm9vdCA9IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gbGVhZl9jb3B5KGxlYWYpIHtcbiAgdmFyIGNvcHkgPSB7ZGF0YTogbGVhZi5kYXRhfSwgbmV4dCA9IGNvcHk7XG4gIHdoaWxlIChsZWFmID0gbGVhZi5uZXh0KSBuZXh0ID0gbmV4dC5uZXh0ID0ge2RhdGE6IGxlYWYuZGF0YX07XG4gIHJldHVybiBjb3B5O1xufVxuXG52YXIgdHJlZVByb3RvID0gcXVhZHRyZWUucHJvdG90eXBlID0gUXVhZHRyZWUucHJvdG90eXBlO1xuXG50cmVlUHJvdG8uY29weSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgY29weSA9IG5ldyBRdWFkdHJlZSh0aGlzLl94LCB0aGlzLl95LCB0aGlzLl94MCwgdGhpcy5feTAsIHRoaXMuX3gxLCB0aGlzLl95MSksXG4gICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgIG5vZGVzLFxuICAgICAgY2hpbGQ7XG5cbiAgaWYgKCFub2RlKSByZXR1cm4gY29weTtcblxuICBpZiAoIW5vZGUubGVuZ3RoKSByZXR1cm4gY29weS5fcm9vdCA9IGxlYWZfY29weShub2RlKSwgY29weTtcblxuICBub2RlcyA9IFt7c291cmNlOiBub2RlLCB0YXJnZXQ6IGNvcHkuX3Jvb3QgPSBuZXcgQXJyYXkoNCl9XTtcbiAgd2hpbGUgKG5vZGUgPSBub2Rlcy5wb3AoKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgKytpKSB7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlLnNvdXJjZVtpXSkge1xuICAgICAgICBpZiAoY2hpbGQubGVuZ3RoKSBub2Rlcy5wdXNoKHtzb3VyY2U6IGNoaWxkLCB0YXJnZXQ6IG5vZGUudGFyZ2V0W2ldID0gbmV3IEFycmF5KDQpfSk7XG4gICAgICAgIGVsc2Ugbm9kZS50YXJnZXRbaV0gPSBsZWFmX2NvcHkoY2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb3B5O1xufTtcblxudHJlZVByb3RvLmFkZCA9IHRyZWVfYWRkO1xudHJlZVByb3RvLmFkZEFsbCA9IGFkZEFsbDtcbnRyZWVQcm90by5jb3ZlciA9IHRyZWVfY292ZXI7XG50cmVlUHJvdG8uZGF0YSA9IHRyZWVfZGF0YTtcbnRyZWVQcm90by5leHRlbnQgPSB0cmVlX2V4dGVudDtcbnRyZWVQcm90by5maW5kID0gdHJlZV9maW5kO1xudHJlZVByb3RvLnJlbW92ZSA9IHRyZWVfcmVtb3ZlO1xudHJlZVByb3RvLnJlbW92ZUFsbCA9IHJlbW92ZUFsbDtcbnRyZWVQcm90by5yb290ID0gdHJlZV9yb290O1xudHJlZVByb3RvLnNpemUgPSB0cmVlX3NpemU7XG50cmVlUHJvdG8udmlzaXQgPSB0cmVlX3Zpc2l0O1xudHJlZVByb3RvLnZpc2l0QWZ0ZXIgPSB0cmVlX3Zpc2l0QWZ0ZXI7XG50cmVlUHJvdG8ueCA9IHRyZWVfeDtcbnRyZWVQcm90by55ID0gdHJlZV95O1xuXG5leHBvcnRzLnF1YWR0cmVlID0gcXVhZHRyZWU7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbn0pKTtcbiIsIi8vIGh0dHBzOi8vZDNqcy5vcmcvZDMtZGlzcGF0Y2gvIHYyLjAuMCBDb3B5cmlnaHQgMjAyMCBNaWtlIEJvc3RvY2tcbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG50eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBmYWN0b3J5KGV4cG9ydHMpIDpcbnR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJ2V4cG9ydHMnXSwgZmFjdG9yeSkgOlxuKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBmYWN0b3J5KGdsb2JhbC5kMyA9IGdsb2JhbC5kMyB8fCB7fSkpO1xufSh0aGlzLCBmdW5jdGlvbiAoZXhwb3J0cykgeyAndXNlIHN0cmljdCc7XG5cbnZhciBub29wID0ge3ZhbHVlOiAoKSA9PiB7fX07XG5cbmZ1bmN0aW9uIGRpc3BhdGNoKCkge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IGFyZ3VtZW50cy5sZW5ndGgsIF8gPSB7fSwgdDsgaSA8IG47ICsraSkge1xuICAgIGlmICghKHQgPSBhcmd1bWVudHNbaV0gKyBcIlwiKSB8fCAodCBpbiBfKSB8fCAvW1xccy5dLy50ZXN0KHQpKSB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIHR5cGU6IFwiICsgdCk7XG4gICAgX1t0XSA9IFtdO1xuICB9XG4gIHJldHVybiBuZXcgRGlzcGF0Y2goXyk7XG59XG5cbmZ1bmN0aW9uIERpc3BhdGNoKF8pIHtcbiAgdGhpcy5fID0gXztcbn1cblxuZnVuY3Rpb24gcGFyc2VUeXBlbmFtZXModHlwZW5hbWVzLCB0eXBlcykge1xuICByZXR1cm4gdHlwZW5hbWVzLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykubWFwKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgbmFtZSA9IFwiXCIsIGkgPSB0LmluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChpID49IDApIG5hbWUgPSB0LnNsaWNlKGkgKyAxKSwgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgaWYgKHQgJiYgIXR5cGVzLmhhc093blByb3BlcnR5KHQpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdCk7XG4gICAgcmV0dXJuIHt0eXBlOiB0LCBuYW1lOiBuYW1lfTtcbiAgfSk7XG59XG5cbkRpc3BhdGNoLnByb3RvdHlwZSA9IGRpc3BhdGNoLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IERpc3BhdGNoLFxuICBvbjogZnVuY3Rpb24odHlwZW5hbWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIF8gPSB0aGlzLl8sXG4gICAgICAgIFQgPSBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZSArIFwiXCIsIF8pLFxuICAgICAgICB0LFxuICAgICAgICBpID0gLTEsXG4gICAgICAgIG4gPSBULmxlbmd0aDtcblxuICAgIC8vIElmIG5vIGNhbGxiYWNrIHdhcyBzcGVjaWZpZWQsIHJldHVybiB0aGUgY2FsbGJhY2sgb2YgdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgICB3aGlsZSAoKytpIDwgbikgaWYgKCh0ID0gKHR5cGVuYW1lID0gVFtpXSkudHlwZSkgJiYgKHQgPSBnZXQoX1t0XSwgdHlwZW5hbWUubmFtZSkpKSByZXR1cm4gdDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBhIHR5cGUgd2FzIHNwZWNpZmllZCwgc2V0IHRoZSBjYWxsYmFjayBmb3IgdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuXG4gICAgLy8gT3RoZXJ3aXNlLCBpZiBhIG51bGwgY2FsbGJhY2sgd2FzIHNwZWNpZmllZCwgcmVtb3ZlIGNhbGxiYWNrcyBvZiB0aGUgZ2l2ZW4gbmFtZS5cbiAgICBpZiAoY2FsbGJhY2sgIT0gbnVsbCAmJiB0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBjYWxsYmFjazogXCIgKyBjYWxsYmFjayk7XG4gICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgIGlmICh0ID0gKHR5cGVuYW1lID0gVFtpXSkudHlwZSkgX1t0XSA9IHNldChfW3RdLCB0eXBlbmFtZS5uYW1lLCBjYWxsYmFjayk7XG4gICAgICBlbHNlIGlmIChjYWxsYmFjayA9PSBudWxsKSBmb3IgKHQgaW4gXykgX1t0XSA9IHNldChfW3RdLCB0eXBlbmFtZS5uYW1lLCBudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgY29weTogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNvcHkgPSB7fSwgXyA9IHRoaXMuXztcbiAgICBmb3IgKHZhciB0IGluIF8pIGNvcHlbdF0gPSBfW3RdLnNsaWNlKCk7XG4gICAgcmV0dXJuIG5ldyBEaXNwYXRjaChjb3B5KTtcbiAgfSxcbiAgY2FsbDogZnVuY3Rpb24odHlwZSwgdGhhdCkge1xuICAgIGlmICgobiA9IGFyZ3VtZW50cy5sZW5ndGggLSAyKSA+IDApIGZvciAodmFyIGFyZ3MgPSBuZXcgQXJyYXkobiksIGkgPSAwLCBuLCB0OyBpIDwgbjsgKytpKSBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICBpZiAoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHR5cGUpO1xuICAgIGZvciAodCA9IHRoaXMuX1t0eXBlXSwgaSA9IDAsIG4gPSB0Lmxlbmd0aDsgaSA8IG47ICsraSkgdFtpXS52YWx1ZS5hcHBseSh0aGF0LCBhcmdzKTtcbiAgfSxcbiAgYXBwbHk6IGZ1bmN0aW9uKHR5cGUsIHRoYXQsIGFyZ3MpIHtcbiAgICBpZiAoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHR5cGUpO1xuICAgIGZvciAodmFyIHQgPSB0aGlzLl9bdHlwZV0sIGkgPSAwLCBuID0gdC5sZW5ndGg7IGkgPCBuOyArK2kpIHRbaV0udmFsdWUuYXBwbHkodGhhdCwgYXJncyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldCh0eXBlLCBuYW1lKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZS5sZW5ndGgsIGM7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoKGMgPSB0eXBlW2ldKS5uYW1lID09PSBuYW1lKSB7XG4gICAgICByZXR1cm4gYy52YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0KHR5cGUsIG5hbWUsIGNhbGxiYWNrKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZS5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAodHlwZVtpXS5uYW1lID09PSBuYW1lKSB7XG4gICAgICB0eXBlW2ldID0gbm9vcCwgdHlwZSA9IHR5cGUuc2xpY2UoMCwgaSkuY29uY2F0KHR5cGUuc2xpY2UoaSArIDEpKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoY2FsbGJhY2sgIT0gbnVsbCkgdHlwZS5wdXNoKHtuYW1lOiBuYW1lLCB2YWx1ZTogY2FsbGJhY2t9KTtcbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydHMuZGlzcGF0Y2ggPSBkaXNwYXRjaDtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxufSkpO1xuIiwiLy8gaHR0cHM6Ly9kM2pzLm9yZy9kMy10aW1lci8gdjIuMC4wIENvcHlyaWdodCAyMDIwIE1pa2UgQm9zdG9ja1xuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbnR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IGZhY3RvcnkoZXhwb3J0cykgOlxudHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnZXhwb3J0cyddLCBmYWN0b3J5KSA6XG4oZ2xvYmFsID0gZ2xvYmFsIHx8IHNlbGYsIGZhY3RvcnkoZ2xvYmFsLmQzID0gZ2xvYmFsLmQzIHx8IHt9KSk7XG59KHRoaXMsIGZ1bmN0aW9uIChleHBvcnRzKSB7ICd1c2Ugc3RyaWN0JztcblxudmFyIGZyYW1lID0gMCwgLy8gaXMgYW4gYW5pbWF0aW9uIGZyYW1lIHBlbmRpbmc/XG4gICAgdGltZW91dCA9IDAsIC8vIGlzIGEgdGltZW91dCBwZW5kaW5nP1xuICAgIGludGVydmFsID0gMCwgLy8gYXJlIGFueSB0aW1lcnMgYWN0aXZlP1xuICAgIHBva2VEZWxheSA9IDEwMDAsIC8vIGhvdyBmcmVxdWVudGx5IHdlIGNoZWNrIGZvciBjbG9jayBza2V3XG4gICAgdGFza0hlYWQsXG4gICAgdGFza1RhaWwsXG4gICAgY2xvY2tMYXN0ID0gMCxcbiAgICBjbG9ja05vdyA9IDAsXG4gICAgY2xvY2tTa2V3ID0gMCxcbiAgICBjbG9jayA9IHR5cGVvZiBwZXJmb3JtYW5jZSA9PT0gXCJvYmplY3RcIiAmJiBwZXJmb3JtYW5jZS5ub3cgPyBwZXJmb3JtYW5jZSA6IERhdGUsXG4gICAgc2V0RnJhbWUgPSB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KSA6IGZ1bmN0aW9uKGYpIHsgc2V0VGltZW91dChmLCAxNyk7IH07XG5cbmZ1bmN0aW9uIG5vdygpIHtcbiAgcmV0dXJuIGNsb2NrTm93IHx8IChzZXRGcmFtZShjbGVhck5vdyksIGNsb2NrTm93ID0gY2xvY2subm93KCkgKyBjbG9ja1NrZXcpO1xufVxuXG5mdW5jdGlvbiBjbGVhck5vdygpIHtcbiAgY2xvY2tOb3cgPSAwO1xufVxuXG5mdW5jdGlvbiBUaW1lcigpIHtcbiAgdGhpcy5fY2FsbCA9XG4gIHRoaXMuX3RpbWUgPVxuICB0aGlzLl9uZXh0ID0gbnVsbDtcbn1cblxuVGltZXIucHJvdG90eXBlID0gdGltZXIucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogVGltZXIsXG4gIHJlc3RhcnQ6IGZ1bmN0aW9uKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uXCIpO1xuICAgIHRpbWUgPSAodGltZSA9PSBudWxsID8gbm93KCkgOiArdGltZSkgKyAoZGVsYXkgPT0gbnVsbCA/IDAgOiArZGVsYXkpO1xuICAgIGlmICghdGhpcy5fbmV4dCAmJiB0YXNrVGFpbCAhPT0gdGhpcykge1xuICAgICAgaWYgKHRhc2tUYWlsKSB0YXNrVGFpbC5fbmV4dCA9IHRoaXM7XG4gICAgICBlbHNlIHRhc2tIZWFkID0gdGhpcztcbiAgICAgIHRhc2tUYWlsID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5fY2FsbCA9IGNhbGxiYWNrO1xuICAgIHRoaXMuX3RpbWUgPSB0aW1lO1xuICAgIHNsZWVwKCk7XG4gIH0sXG4gIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9jYWxsKSB7XG4gICAgICB0aGlzLl9jYWxsID0gbnVsbDtcbiAgICAgIHRoaXMuX3RpbWUgPSBJbmZpbml0eTtcbiAgICAgIHNsZWVwKCk7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiB0aW1lcihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgdmFyIHQgPSBuZXcgVGltZXI7XG4gIHQucmVzdGFydChjYWxsYmFjaywgZGVsYXksIHRpbWUpO1xuICByZXR1cm4gdDtcbn1cblxuZnVuY3Rpb24gdGltZXJGbHVzaCgpIHtcbiAgbm93KCk7IC8vIEdldCB0aGUgY3VycmVudCB0aW1lLCBpZiBub3QgYWxyZWFkeSBzZXQuXG4gICsrZnJhbWU7IC8vIFByZXRlbmQgd2XigJl2ZSBzZXQgYW4gYWxhcm0sIGlmIHdlIGhhdmVu4oCZdCBhbHJlYWR5LlxuICB2YXIgdCA9IHRhc2tIZWFkLCBlO1xuICB3aGlsZSAodCkge1xuICAgIGlmICgoZSA9IGNsb2NrTm93IC0gdC5fdGltZSkgPj0gMCkgdC5fY2FsbC5jYWxsKG51bGwsIGUpO1xuICAgIHQgPSB0Ll9uZXh0O1xuICB9XG4gIC0tZnJhbWU7XG59XG5cbmZ1bmN0aW9uIHdha2UoKSB7XG4gIGNsb2NrTm93ID0gKGNsb2NrTGFzdCA9IGNsb2NrLm5vdygpKSArIGNsb2NrU2tldztcbiAgZnJhbWUgPSB0aW1lb3V0ID0gMDtcbiAgdHJ5IHtcbiAgICB0aW1lckZsdXNoKCk7XG4gIH0gZmluYWxseSB7XG4gICAgZnJhbWUgPSAwO1xuICAgIG5hcCgpO1xuICAgIGNsb2NrTm93ID0gMDtcbiAgfVxufVxuXG5mdW5jdGlvbiBwb2tlKCkge1xuICB2YXIgbm93ID0gY2xvY2subm93KCksIGRlbGF5ID0gbm93IC0gY2xvY2tMYXN0O1xuICBpZiAoZGVsYXkgPiBwb2tlRGVsYXkpIGNsb2NrU2tldyAtPSBkZWxheSwgY2xvY2tMYXN0ID0gbm93O1xufVxuXG5mdW5jdGlvbiBuYXAoKSB7XG4gIHZhciB0MCwgdDEgPSB0YXNrSGVhZCwgdDIsIHRpbWUgPSBJbmZpbml0eTtcbiAgd2hpbGUgKHQxKSB7XG4gICAgaWYgKHQxLl9jYWxsKSB7XG4gICAgICBpZiAodGltZSA+IHQxLl90aW1lKSB0aW1lID0gdDEuX3RpbWU7XG4gICAgICB0MCA9IHQxLCB0MSA9IHQxLl9uZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0MiA9IHQxLl9uZXh0LCB0MS5fbmV4dCA9IG51bGw7XG4gICAgICB0MSA9IHQwID8gdDAuX25leHQgPSB0MiA6IHRhc2tIZWFkID0gdDI7XG4gICAgfVxuICB9XG4gIHRhc2tUYWlsID0gdDA7XG4gIHNsZWVwKHRpbWUpO1xufVxuXG5mdW5jdGlvbiBzbGVlcCh0aW1lKSB7XG4gIGlmIChmcmFtZSkgcmV0dXJuOyAvLyBTb29uZXN0IGFsYXJtIGFscmVhZHkgc2V0LCBvciB3aWxsIGJlLlxuICBpZiAodGltZW91dCkgdGltZW91dCA9IGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgdmFyIGRlbGF5ID0gdGltZSAtIGNsb2NrTm93OyAvLyBTdHJpY3RseSBsZXNzIHRoYW4gaWYgd2UgcmVjb21wdXRlZCBjbG9ja05vdy5cbiAgaWYgKGRlbGF5ID4gMjQpIHtcbiAgICBpZiAodGltZSA8IEluZmluaXR5KSB0aW1lb3V0ID0gc2V0VGltZW91dCh3YWtlLCB0aW1lIC0gY2xvY2subm93KCkgLSBjbG9ja1NrZXcpO1xuICAgIGlmIChpbnRlcnZhbCkgaW50ZXJ2YWwgPSBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWludGVydmFsKSBjbG9ja0xhc3QgPSBjbG9jay5ub3coKSwgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChwb2tlLCBwb2tlRGVsYXkpO1xuICAgIGZyYW1lID0gMSwgc2V0RnJhbWUod2FrZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdGltZW91dCQxKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICB2YXIgdCA9IG5ldyBUaW1lcjtcbiAgZGVsYXkgPSBkZWxheSA9PSBudWxsID8gMCA6ICtkZWxheTtcbiAgdC5yZXN0YXJ0KGVsYXBzZWQgPT4ge1xuICAgIHQuc3RvcCgpO1xuICAgIGNhbGxiYWNrKGVsYXBzZWQgKyBkZWxheSk7XG4gIH0sIGRlbGF5LCB0aW1lKTtcbiAgcmV0dXJuIHQ7XG59XG5cbmZ1bmN0aW9uIGludGVydmFsJDEoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyLCB0b3RhbCA9IGRlbGF5O1xuICBpZiAoZGVsYXkgPT0gbnVsbCkgcmV0dXJuIHQucmVzdGFydChjYWxsYmFjaywgZGVsYXksIHRpbWUpLCB0O1xuICB0Ll9yZXN0YXJ0ID0gdC5yZXN0YXJ0O1xuICB0LnJlc3RhcnQgPSBmdW5jdGlvbihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgICBkZWxheSA9ICtkZWxheSwgdGltZSA9IHRpbWUgPT0gbnVsbCA/IG5vdygpIDogK3RpbWU7XG4gICAgdC5fcmVzdGFydChmdW5jdGlvbiB0aWNrKGVsYXBzZWQpIHtcbiAgICAgIGVsYXBzZWQgKz0gdG90YWw7XG4gICAgICB0Ll9yZXN0YXJ0KHRpY2ssIHRvdGFsICs9IGRlbGF5LCB0aW1lKTtcbiAgICAgIGNhbGxiYWNrKGVsYXBzZWQpO1xuICAgIH0sIGRlbGF5LCB0aW1lKTtcbiAgfTtcbiAgdC5yZXN0YXJ0KGNhbGxiYWNrLCBkZWxheSwgdGltZSk7XG4gIHJldHVybiB0O1xufVxuXG5leHBvcnRzLmludGVydmFsID0gaW50ZXJ2YWwkMTtcbmV4cG9ydHMubm93ID0gbm93O1xuZXhwb3J0cy50aW1lb3V0ID0gdGltZW91dCQxO1xuZXhwb3J0cy50aW1lciA9IHRpbWVyO1xuZXhwb3J0cy50aW1lckZsdXNoID0gdGltZXJGbHVzaDtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxufSkpO1xuIiwiLy8gaHR0cHM6Ly9kM2pzLm9yZy9kMy1mb3JjZS8gdjIuMS4xIENvcHlyaWdodCAyMDIwIE1pa2UgQm9zdG9ja1xuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbnR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IGZhY3RvcnkoZXhwb3J0cywgcmVxdWlyZSgnZDMtcXVhZHRyZWUnKSwgcmVxdWlyZSgnZDMtZGlzcGF0Y2gnKSwgcmVxdWlyZSgnZDMtdGltZXInKSkgOlxudHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnZXhwb3J0cycsICdkMy1xdWFkdHJlZScsICdkMy1kaXNwYXRjaCcsICdkMy10aW1lciddLCBmYWN0b3J5KSA6XG4oZ2xvYmFsID0gZ2xvYmFsIHx8IHNlbGYsIGZhY3RvcnkoZ2xvYmFsLmQzID0gZ2xvYmFsLmQzIHx8IHt9LCBnbG9iYWwuZDMsIGdsb2JhbC5kMywgZ2xvYmFsLmQzKSk7XG59KHRoaXMsIGZ1bmN0aW9uIChleHBvcnRzLCBkM1F1YWR0cmVlLCBkM0Rpc3BhdGNoLCBkM1RpbWVyKSB7ICd1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gY2VudGVyKHgsIHkpIHtcbiAgdmFyIG5vZGVzLCBzdHJlbmd0aCA9IDE7XG5cbiAgaWYgKHggPT0gbnVsbCkgeCA9IDA7XG4gIGlmICh5ID09IG51bGwpIHkgPSAwO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKCkge1xuICAgIHZhciBpLFxuICAgICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBub2RlLFxuICAgICAgICBzeCA9IDAsXG4gICAgICAgIHN5ID0gMDtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tpXSwgc3ggKz0gbm9kZS54LCBzeSArPSBub2RlLnk7XG4gICAgfVxuXG4gICAgZm9yIChzeCA9IChzeCAvIG4gLSB4KSAqIHN0cmVuZ3RoLCBzeSA9IChzeSAvIG4gLSB5KSAqIHN0cmVuZ3RoLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLnggLT0gc3gsIG5vZGUueSAtPSBzeTtcbiAgICB9XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oXykge1xuICAgIG5vZGVzID0gXztcbiAgfTtcblxuICBmb3JjZS54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSArXywgZm9yY2UpIDogeDtcbiAgfTtcblxuICBmb3JjZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSArXywgZm9yY2UpIDogeTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9ICtfLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG5cbmZ1bmN0aW9uIGNvbnN0YW50KHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuXG5mdW5jdGlvbiBqaWdnbGUocmFuZG9tKSB7XG4gIHJldHVybiAocmFuZG9tKCkgLSAwLjUpICogMWUtNjtcbn1cblxuZnVuY3Rpb24geChkKSB7XG4gIHJldHVybiBkLnggKyBkLnZ4O1xufVxuXG5mdW5jdGlvbiB5KGQpIHtcbiAgcmV0dXJuIGQueSArIGQudnk7XG59XG5cbmZ1bmN0aW9uIGNvbGxpZGUocmFkaXVzKSB7XG4gIHZhciBub2RlcyxcbiAgICAgIHJhZGlpLFxuICAgICAgcmFuZG9tLFxuICAgICAgc3RyZW5ndGggPSAxLFxuICAgICAgaXRlcmF0aW9ucyA9IDE7XG5cbiAgaWYgKHR5cGVvZiByYWRpdXMgIT09IFwiZnVuY3Rpb25cIikgcmFkaXVzID0gY29uc3RhbnQocmFkaXVzID09IG51bGwgPyAxIDogK3JhZGl1cyk7XG5cbiAgZnVuY3Rpb24gZm9yY2UoKSB7XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIHRyZWUsXG4gICAgICAgIG5vZGUsXG4gICAgICAgIHhpLFxuICAgICAgICB5aSxcbiAgICAgICAgcmksXG4gICAgICAgIHJpMjtcblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaXRlcmF0aW9uczsgKytrKSB7XG4gICAgICB0cmVlID0gZDNRdWFkdHJlZS5xdWFkdHJlZShub2RlcywgeCwgeSkudmlzaXRBZnRlcihwcmVwYXJlKTtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICByaSA9IHJhZGlpW25vZGUuaW5kZXhdLCByaTIgPSByaSAqIHJpO1xuICAgICAgICB4aSA9IG5vZGUueCArIG5vZGUudng7XG4gICAgICAgIHlpID0gbm9kZS55ICsgbm9kZS52eTtcbiAgICAgICAgdHJlZS52aXNpdChhcHBseSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwbHkocXVhZCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgICAgIHZhciBkYXRhID0gcXVhZC5kYXRhLCByaiA9IHF1YWQuciwgciA9IHJpICsgcmo7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBpZiAoZGF0YS5pbmRleCA+IG5vZGUuaW5kZXgpIHtcbiAgICAgICAgICB2YXIgeCA9IHhpIC0gZGF0YS54IC0gZGF0YS52eCxcbiAgICAgICAgICAgICAgeSA9IHlpIC0gZGF0YS55IC0gZGF0YS52eSxcbiAgICAgICAgICAgICAgbCA9IHggKiB4ICsgeSAqIHk7XG4gICAgICAgICAgaWYgKGwgPCByICogcikge1xuICAgICAgICAgICAgaWYgKHggPT09IDApIHggPSBqaWdnbGUocmFuZG9tKSwgbCArPSB4ICogeDtcbiAgICAgICAgICAgIGlmICh5ID09PSAwKSB5ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geSAqIHk7XG4gICAgICAgICAgICBsID0gKHIgLSAobCA9IE1hdGguc3FydChsKSkpIC8gbCAqIHN0cmVuZ3RoO1xuICAgICAgICAgICAgbm9kZS52eCArPSAoeCAqPSBsKSAqIChyID0gKHJqICo9IHJqKSAvIChyaTIgKyByaikpO1xuICAgICAgICAgICAgbm9kZS52eSArPSAoeSAqPSBsKSAqIHI7XG4gICAgICAgICAgICBkYXRhLnZ4IC09IHggKiAociA9IDEgLSByKTtcbiAgICAgICAgICAgIGRhdGEudnkgLT0geSAqIHI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB4MCA+IHhpICsgciB8fCB4MSA8IHhpIC0gciB8fCB5MCA+IHlpICsgciB8fCB5MSA8IHlpIC0gcjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwcmVwYXJlKHF1YWQpIHtcbiAgICBpZiAocXVhZC5kYXRhKSByZXR1cm4gcXVhZC5yID0gcmFkaWlbcXVhZC5kYXRhLmluZGV4XTtcbiAgICBmb3IgKHZhciBpID0gcXVhZC5yID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgaWYgKHF1YWRbaV0gJiYgcXVhZFtpXS5yID4gcXVhZC5yKSB7XG4gICAgICAgIHF1YWQuciA9IHF1YWRbaV0ucjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTtcbiAgICByYWRpaSA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBub2RlID0gbm9kZXNbaV0sIHJhZGlpW25vZGUuaW5kZXhdID0gK3JhZGl1cyhub2RlLCBpLCBub2Rlcyk7XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oX25vZGVzLCBfcmFuZG9tKSB7XG4gICAgbm9kZXMgPSBfbm9kZXM7XG4gICAgcmFuZG9tID0gX3JhbmRvbTtcbiAgICBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2UuaXRlcmF0aW9ucyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpdGVyYXRpb25zID0gK18sIGZvcmNlKSA6IGl0ZXJhdGlvbnM7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSArXywgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UucmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHJhZGl1cztcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG5cbmZ1bmN0aW9uIGluZGV4KGQpIHtcbiAgcmV0dXJuIGQuaW5kZXg7XG59XG5cbmZ1bmN0aW9uIGZpbmQobm9kZUJ5SWQsIG5vZGVJZCkge1xuICB2YXIgbm9kZSA9IG5vZGVCeUlkLmdldChub2RlSWQpO1xuICBpZiAoIW5vZGUpIHRocm93IG5ldyBFcnJvcihcIm5vZGUgbm90IGZvdW5kOiBcIiArIG5vZGVJZCk7XG4gIHJldHVybiBub2RlO1xufVxuXG5mdW5jdGlvbiBsaW5rKGxpbmtzKSB7XG4gIHZhciBpZCA9IGluZGV4LFxuICAgICAgc3RyZW5ndGggPSBkZWZhdWx0U3RyZW5ndGgsXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICBkaXN0YW5jZSA9IGNvbnN0YW50KDMwKSxcbiAgICAgIGRpc3RhbmNlcyxcbiAgICAgIG5vZGVzLFxuICAgICAgY291bnQsXG4gICAgICBiaWFzLFxuICAgICAgcmFuZG9tLFxuICAgICAgaXRlcmF0aW9ucyA9IDE7XG5cbiAgaWYgKGxpbmtzID09IG51bGwpIGxpbmtzID0gW107XG5cbiAgZnVuY3Rpb24gZGVmYXVsdFN0cmVuZ3RoKGxpbmspIHtcbiAgICByZXR1cm4gMSAvIE1hdGgubWluKGNvdW50W2xpbmsuc291cmNlLmluZGV4XSwgY291bnRbbGluay50YXJnZXQuaW5kZXhdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcmNlKGFscGhhKSB7XG4gICAgZm9yICh2YXIgayA9IDAsIG4gPSBsaW5rcy5sZW5ndGg7IGsgPCBpdGVyYXRpb25zOyArK2spIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsaW5rLCBzb3VyY2UsIHRhcmdldCwgeCwgeSwgbCwgYjsgaSA8IG47ICsraSkge1xuICAgICAgICBsaW5rID0gbGlua3NbaV0sIHNvdXJjZSA9IGxpbmsuc291cmNlLCB0YXJnZXQgPSBsaW5rLnRhcmdldDtcbiAgICAgICAgeCA9IHRhcmdldC54ICsgdGFyZ2V0LnZ4IC0gc291cmNlLnggLSBzb3VyY2UudnggfHwgamlnZ2xlKHJhbmRvbSk7XG4gICAgICAgIHkgPSB0YXJnZXQueSArIHRhcmdldC52eSAtIHNvdXJjZS55IC0gc291cmNlLnZ5IHx8IGppZ2dsZShyYW5kb20pO1xuICAgICAgICBsID0gTWF0aC5zcXJ0KHggKiB4ICsgeSAqIHkpO1xuICAgICAgICBsID0gKGwgLSBkaXN0YW5jZXNbaV0pIC8gbCAqIGFscGhhICogc3RyZW5ndGhzW2ldO1xuICAgICAgICB4ICo9IGwsIHkgKj0gbDtcbiAgICAgICAgdGFyZ2V0LnZ4IC09IHggKiAoYiA9IGJpYXNbaV0pO1xuICAgICAgICB0YXJnZXQudnkgLT0geSAqIGI7XG4gICAgICAgIHNvdXJjZS52eCArPSB4ICogKGIgPSAxIC0gYik7XG4gICAgICAgIHNvdXJjZS52eSArPSB5ICogYjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcblxuICAgIHZhciBpLFxuICAgICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBtID0gbGlua3MubGVuZ3RoLFxuICAgICAgICBub2RlQnlJZCA9IG5ldyBNYXAobm9kZXMubWFwKChkLCBpKSA9PiBbaWQoZCwgaSwgbm9kZXMpLCBkXSkpLFxuICAgICAgICBsaW5rO1xuXG4gICAgZm9yIChpID0gMCwgY291bnQgPSBuZXcgQXJyYXkobik7IGkgPCBtOyArK2kpIHtcbiAgICAgIGxpbmsgPSBsaW5rc1tpXSwgbGluay5pbmRleCA9IGk7XG4gICAgICBpZiAodHlwZW9mIGxpbmsuc291cmNlICE9PSBcIm9iamVjdFwiKSBsaW5rLnNvdXJjZSA9IGZpbmQobm9kZUJ5SWQsIGxpbmsuc291cmNlKTtcbiAgICAgIGlmICh0eXBlb2YgbGluay50YXJnZXQgIT09IFwib2JqZWN0XCIpIGxpbmsudGFyZ2V0ID0gZmluZChub2RlQnlJZCwgbGluay50YXJnZXQpO1xuICAgICAgY291bnRbbGluay5zb3VyY2UuaW5kZXhdID0gKGNvdW50W2xpbmsuc291cmNlLmluZGV4XSB8fCAwKSArIDE7XG4gICAgICBjb3VudFtsaW5rLnRhcmdldC5pbmRleF0gPSAoY291bnRbbGluay50YXJnZXQuaW5kZXhdIHx8IDApICsgMTtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwLCBiaWFzID0gbmV3IEFycmF5KG0pOyBpIDwgbTsgKytpKSB7XG4gICAgICBsaW5rID0gbGlua3NbaV0sIGJpYXNbaV0gPSBjb3VudFtsaW5rLnNvdXJjZS5pbmRleF0gLyAoY291bnRbbGluay5zb3VyY2UuaW5kZXhdICsgY291bnRbbGluay50YXJnZXQuaW5kZXhdKTtcbiAgICB9XG5cbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobSksIGluaXRpYWxpemVTdHJlbmd0aCgpO1xuICAgIGRpc3RhbmNlcyA9IG5ldyBBcnJheShtKSwgaW5pdGlhbGl6ZURpc3RhbmNlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplU3RyZW5ndGgoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBsaW5rcy5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIHN0cmVuZ3Roc1tpXSA9ICtzdHJlbmd0aChsaW5rc1tpXSwgaSwgbGlua3MpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemVEaXN0YW5jZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IGxpbmtzLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgZGlzdGFuY2VzW2ldID0gK2Rpc3RhbmNlKGxpbmtzW2ldLCBpLCBsaW5rcyk7XG4gICAgfVxuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF9ub2RlcywgX3JhbmRvbSkge1xuICAgIG5vZGVzID0gX25vZGVzO1xuICAgIHJhbmRvbSA9IF9yYW5kb207XG4gICAgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLmxpbmtzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGxpbmtzID0gXywgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBsaW5rcztcbiAgfTtcblxuICBmb3JjZS5pZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpZCA9IF8sIGZvcmNlKSA6IGlkO1xuICB9O1xuXG4gIGZvcmNlLml0ZXJhdGlvbnMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaXRlcmF0aW9ucyA9ICtfLCBmb3JjZSkgOiBpdGVyYXRpb25zO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemVTdHJlbmd0aCgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS5kaXN0YW5jZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkaXN0YW5jZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplRGlzdGFuY2UoKSwgZm9yY2UpIDogZGlzdGFuY2U7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW5lYXJfY29uZ3J1ZW50aWFsX2dlbmVyYXRvciNQYXJhbWV0ZXJzX2luX2NvbW1vbl91c2VcbmNvbnN0IGEgPSAxNjY0NTI1O1xuY29uc3QgYyA9IDEwMTM5MDQyMjM7XG5jb25zdCBtID0gNDI5NDk2NzI5NjsgLy8gMl4zMlxuXG5mdW5jdGlvbiBsY2coKSB7XG4gIGxldCBzID0gMTtcbiAgcmV0dXJuICgpID0+IChzID0gKGEgKiBzICsgYykgJSBtKSAvIG07XG59XG5cbmZ1bmN0aW9uIHgkMShkKSB7XG4gIHJldHVybiBkLng7XG59XG5cbmZ1bmN0aW9uIHkkMShkKSB7XG4gIHJldHVybiBkLnk7XG59XG5cbnZhciBpbml0aWFsUmFkaXVzID0gMTAsXG4gICAgaW5pdGlhbEFuZ2xlID0gTWF0aC5QSSAqICgzIC0gTWF0aC5zcXJ0KDUpKTtcblxuZnVuY3Rpb24gc2ltdWxhdGlvbihub2Rlcykge1xuICB2YXIgc2ltdWxhdGlvbixcbiAgICAgIGFscGhhID0gMSxcbiAgICAgIGFscGhhTWluID0gMC4wMDEsXG4gICAgICBhbHBoYURlY2F5ID0gMSAtIE1hdGgucG93KGFscGhhTWluLCAxIC8gMzAwKSxcbiAgICAgIGFscGhhVGFyZ2V0ID0gMCxcbiAgICAgIHZlbG9jaXR5RGVjYXkgPSAwLjYsXG4gICAgICBmb3JjZXMgPSBuZXcgTWFwKCksXG4gICAgICBzdGVwcGVyID0gZDNUaW1lci50aW1lcihzdGVwKSxcbiAgICAgIGV2ZW50ID0gZDNEaXNwYXRjaC5kaXNwYXRjaChcInRpY2tcIiwgXCJlbmRcIiksXG4gICAgICByYW5kb20gPSBsY2coKTtcblxuICBpZiAobm9kZXMgPT0gbnVsbCkgbm9kZXMgPSBbXTtcblxuICBmdW5jdGlvbiBzdGVwKCkge1xuICAgIHRpY2soKTtcbiAgICBldmVudC5jYWxsKFwidGlja1wiLCBzaW11bGF0aW9uKTtcbiAgICBpZiAoYWxwaGEgPCBhbHBoYU1pbikge1xuICAgICAgc3RlcHBlci5zdG9wKCk7XG4gICAgICBldmVudC5jYWxsKFwiZW5kXCIsIHNpbXVsYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRpY2soaXRlcmF0aW9ucykge1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlO1xuXG4gICAgaWYgKGl0ZXJhdGlvbnMgPT09IHVuZGVmaW5lZCkgaXRlcmF0aW9ucyA9IDE7XG5cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IGl0ZXJhdGlvbnM7ICsraykge1xuICAgICAgYWxwaGEgKz0gKGFscGhhVGFyZ2V0IC0gYWxwaGEpICogYWxwaGFEZWNheTtcblxuICAgICAgZm9yY2VzLmZvckVhY2goZnVuY3Rpb24oZm9yY2UpIHtcbiAgICAgICAgZm9yY2UoYWxwaGEpO1xuICAgICAgfSk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBpZiAobm9kZS5meCA9PSBudWxsKSBub2RlLnggKz0gbm9kZS52eCAqPSB2ZWxvY2l0eURlY2F5O1xuICAgICAgICBlbHNlIG5vZGUueCA9IG5vZGUuZngsIG5vZGUudnggPSAwO1xuICAgICAgICBpZiAobm9kZS5meSA9PSBudWxsKSBub2RlLnkgKz0gbm9kZS52eSAqPSB2ZWxvY2l0eURlY2F5O1xuICAgICAgICBlbHNlIG5vZGUueSA9IG5vZGUuZnksIG5vZGUudnkgPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzaW11bGF0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZU5vZGVzKCkge1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUuaW5kZXggPSBpO1xuICAgICAgaWYgKG5vZGUuZnggIT0gbnVsbCkgbm9kZS54ID0gbm9kZS5meDtcbiAgICAgIGlmIChub2RlLmZ5ICE9IG51bGwpIG5vZGUueSA9IG5vZGUuZnk7XG4gICAgICBpZiAoaXNOYU4obm9kZS54KSB8fCBpc05hTihub2RlLnkpKSB7XG4gICAgICAgIHZhciByYWRpdXMgPSBpbml0aWFsUmFkaXVzICogTWF0aC5zcXJ0KDAuNSArIGkpLCBhbmdsZSA9IGkgKiBpbml0aWFsQW5nbGU7XG4gICAgICAgIG5vZGUueCA9IHJhZGl1cyAqIE1hdGguY29zKGFuZ2xlKTtcbiAgICAgICAgbm9kZS55ID0gcmFkaXVzICogTWF0aC5zaW4oYW5nbGUpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTmFOKG5vZGUudngpIHx8IGlzTmFOKG5vZGUudnkpKSB7XG4gICAgICAgIG5vZGUudnggPSBub2RlLnZ5ID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplRm9yY2UoZm9yY2UpIHtcbiAgICBpZiAoZm9yY2UuaW5pdGlhbGl6ZSkgZm9yY2UuaW5pdGlhbGl6ZShub2RlcywgcmFuZG9tKTtcbiAgICByZXR1cm4gZm9yY2U7XG4gIH1cblxuICBpbml0aWFsaXplTm9kZXMoKTtcblxuICByZXR1cm4gc2ltdWxhdGlvbiA9IHtcbiAgICB0aWNrOiB0aWNrLFxuXG4gICAgcmVzdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gc3RlcHBlci5yZXN0YXJ0KHN0ZXApLCBzaW11bGF0aW9uO1xuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBzdGVwcGVyLnN0b3AoKSwgc2ltdWxhdGlvbjtcbiAgICB9LFxuXG4gICAgbm9kZXM6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVzID0gXywgaW5pdGlhbGl6ZU5vZGVzKCksIGZvcmNlcy5mb3JFYWNoKGluaXRpYWxpemVGb3JjZSksIHNpbXVsYXRpb24pIDogbm9kZXM7XG4gICAgfSxcblxuICAgIGFscGhhOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChhbHBoYSA9ICtfLCBzaW11bGF0aW9uKSA6IGFscGhhO1xuICAgIH0sXG5cbiAgICBhbHBoYU1pbjogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGFNaW4gPSArXywgc2ltdWxhdGlvbikgOiBhbHBoYU1pbjtcbiAgICB9LFxuXG4gICAgYWxwaGFEZWNheTogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGFEZWNheSA9ICtfLCBzaW11bGF0aW9uKSA6ICthbHBoYURlY2F5O1xuICAgIH0sXG5cbiAgICBhbHBoYVRhcmdldDogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGFUYXJnZXQgPSArXywgc2ltdWxhdGlvbikgOiBhbHBoYVRhcmdldDtcbiAgICB9LFxuXG4gICAgdmVsb2NpdHlEZWNheTogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodmVsb2NpdHlEZWNheSA9IDEgLSBfLCBzaW11bGF0aW9uKSA6IDEgLSB2ZWxvY2l0eURlY2F5O1xuICAgIH0sXG5cbiAgICByYW5kb21Tb3VyY2U6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhbmRvbSA9IF8sIGZvcmNlcy5mb3JFYWNoKGluaXRpYWxpemVGb3JjZSksIHNpbXVsYXRpb24pIDogcmFuZG9tO1xuICAgIH0sXG5cbiAgICBmb3JjZTogZnVuY3Rpb24obmFtZSwgXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gKChfID09IG51bGwgPyBmb3JjZXMuZGVsZXRlKG5hbWUpIDogZm9yY2VzLnNldChuYW1lLCBpbml0aWFsaXplRm9yY2UoXykpKSwgc2ltdWxhdGlvbikgOiBmb3JjZXMuZ2V0KG5hbWUpO1xuICAgIH0sXG5cbiAgICBmaW5kOiBmdW5jdGlvbih4LCB5LCByYWRpdXMpIHtcbiAgICAgIHZhciBpID0gMCxcbiAgICAgICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICAgIGR4LFxuICAgICAgICAgIGR5LFxuICAgICAgICAgIGQyLFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgY2xvc2VzdDtcblxuICAgICAgaWYgKHJhZGl1cyA9PSBudWxsKSByYWRpdXMgPSBJbmZpbml0eTtcbiAgICAgIGVsc2UgcmFkaXVzICo9IHJhZGl1cztcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIGR4ID0geCAtIG5vZGUueDtcbiAgICAgICAgZHkgPSB5IC0gbm9kZS55O1xuICAgICAgICBkMiA9IGR4ICogZHggKyBkeSAqIGR5O1xuICAgICAgICBpZiAoZDIgPCByYWRpdXMpIGNsb3Nlc3QgPSBub2RlLCByYWRpdXMgPSBkMjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsb3Nlc3Q7XG4gICAgfSxcblxuICAgIG9uOiBmdW5jdGlvbihuYW1lLCBfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyAoZXZlbnQub24obmFtZSwgXyksIHNpbXVsYXRpb24pIDogZXZlbnQub24obmFtZSk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBtYW55Qm9keSgpIHtcbiAgdmFyIG5vZGVzLFxuICAgICAgbm9kZSxcbiAgICAgIHJhbmRvbSxcbiAgICAgIGFscGhhLFxuICAgICAgc3RyZW5ndGggPSBjb25zdGFudCgtMzApLFxuICAgICAgc3RyZW5ndGhzLFxuICAgICAgZGlzdGFuY2VNaW4yID0gMSxcbiAgICAgIGRpc3RhbmNlTWF4MiA9IEluZmluaXR5LFxuICAgICAgdGhldGEyID0gMC44MTtcblxuICBmdW5jdGlvbiBmb3JjZShfKSB7XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGgsIHRyZWUgPSBkM1F1YWR0cmVlLnF1YWR0cmVlKG5vZGVzLCB4JDEsIHkkMSkudmlzaXRBZnRlcihhY2N1bXVsYXRlKTtcbiAgICBmb3IgKGFscGhhID0gXywgaSA9IDA7IGkgPCBuOyArK2kpIG5vZGUgPSBub2Rlc1tpXSwgdHJlZS52aXNpdChhcHBseSk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTtcbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobik7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgbm9kZSA9IG5vZGVzW2ldLCBzdHJlbmd0aHNbbm9kZS5pbmRleF0gPSArc3RyZW5ndGgobm9kZSwgaSwgbm9kZXMpO1xuICB9XG5cbiAgZnVuY3Rpb24gYWNjdW11bGF0ZShxdWFkKSB7XG4gICAgdmFyIHN0cmVuZ3RoID0gMCwgcSwgYywgd2VpZ2h0ID0gMCwgeCwgeSwgaTtcblxuICAgIC8vIEZvciBpbnRlcm5hbCBub2RlcywgYWNjdW11bGF0ZSBmb3JjZXMgZnJvbSBjaGlsZCBxdWFkcmFudHMuXG4gICAgaWYgKHF1YWQubGVuZ3RoKSB7XG4gICAgICBmb3IgKHggPSB5ID0gaSA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICAgICAgaWYgKChxID0gcXVhZFtpXSkgJiYgKGMgPSBNYXRoLmFicyhxLnZhbHVlKSkpIHtcbiAgICAgICAgICBzdHJlbmd0aCArPSBxLnZhbHVlLCB3ZWlnaHQgKz0gYywgeCArPSBjICogcS54LCB5ICs9IGMgKiBxLnk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1YWQueCA9IHggLyB3ZWlnaHQ7XG4gICAgICBxdWFkLnkgPSB5IC8gd2VpZ2h0O1xuICAgIH1cblxuICAgIC8vIEZvciBsZWFmIG5vZGVzLCBhY2N1bXVsYXRlIGZvcmNlcyBmcm9tIGNvaW5jaWRlbnQgcXVhZHJhbnRzLlxuICAgIGVsc2Uge1xuICAgICAgcSA9IHF1YWQ7XG4gICAgICBxLnggPSBxLmRhdGEueDtcbiAgICAgIHEueSA9IHEuZGF0YS55O1xuICAgICAgZG8gc3RyZW5ndGggKz0gc3RyZW5ndGhzW3EuZGF0YS5pbmRleF07XG4gICAgICB3aGlsZSAocSA9IHEubmV4dCk7XG4gICAgfVxuXG4gICAgcXVhZC52YWx1ZSA9IHN0cmVuZ3RoO1xuICB9XG5cbiAgZnVuY3Rpb24gYXBwbHkocXVhZCwgeDEsIF8sIHgyKSB7XG4gICAgaWYgKCFxdWFkLnZhbHVlKSByZXR1cm4gdHJ1ZTtcblxuICAgIHZhciB4ID0gcXVhZC54IC0gbm9kZS54LFxuICAgICAgICB5ID0gcXVhZC55IC0gbm9kZS55LFxuICAgICAgICB3ID0geDIgLSB4MSxcbiAgICAgICAgbCA9IHggKiB4ICsgeSAqIHk7XG5cbiAgICAvLyBBcHBseSB0aGUgQmFybmVzLUh1dCBhcHByb3hpbWF0aW9uIGlmIHBvc3NpYmxlLlxuICAgIC8vIExpbWl0IGZvcmNlcyBmb3IgdmVyeSBjbG9zZSBub2RlczsgcmFuZG9taXplIGRpcmVjdGlvbiBpZiBjb2luY2lkZW50LlxuICAgIGlmICh3ICogdyAvIHRoZXRhMiA8IGwpIHtcbiAgICAgIGlmIChsIDwgZGlzdGFuY2VNYXgyKSB7XG4gICAgICAgIGlmICh4ID09PSAwKSB4ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geCAqIHg7XG4gICAgICAgIGlmICh5ID09PSAwKSB5ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geSAqIHk7XG4gICAgICAgIGlmIChsIDwgZGlzdGFuY2VNaW4yKSBsID0gTWF0aC5zcXJ0KGRpc3RhbmNlTWluMiAqIGwpO1xuICAgICAgICBub2RlLnZ4ICs9IHggKiBxdWFkLnZhbHVlICogYWxwaGEgLyBsO1xuICAgICAgICBub2RlLnZ5ICs9IHkgKiBxdWFkLnZhbHVlICogYWxwaGEgLyBsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlLCBwcm9jZXNzIHBvaW50cyBkaXJlY3RseS5cbiAgICBlbHNlIGlmIChxdWFkLmxlbmd0aCB8fCBsID49IGRpc3RhbmNlTWF4MikgcmV0dXJuO1xuXG4gICAgLy8gTGltaXQgZm9yY2VzIGZvciB2ZXJ5IGNsb3NlIG5vZGVzOyByYW5kb21pemUgZGlyZWN0aW9uIGlmIGNvaW5jaWRlbnQuXG4gICAgaWYgKHF1YWQuZGF0YSAhPT0gbm9kZSB8fCBxdWFkLm5leHQpIHtcbiAgICAgIGlmICh4ID09PSAwKSB4ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geCAqIHg7XG4gICAgICBpZiAoeSA9PT0gMCkgeSA9IGppZ2dsZShyYW5kb20pLCBsICs9IHkgKiB5O1xuICAgICAgaWYgKGwgPCBkaXN0YW5jZU1pbjIpIGwgPSBNYXRoLnNxcnQoZGlzdGFuY2VNaW4yICogbCk7XG4gICAgfVxuXG4gICAgZG8gaWYgKHF1YWQuZGF0YSAhPT0gbm9kZSkge1xuICAgICAgdyA9IHN0cmVuZ3Roc1txdWFkLmRhdGEuaW5kZXhdICogYWxwaGEgLyBsO1xuICAgICAgbm9kZS52eCArPSB4ICogdztcbiAgICAgIG5vZGUudnkgKz0geSAqIHc7XG4gICAgfSB3aGlsZSAocXVhZCA9IHF1YWQubmV4dCk7XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oX25vZGVzLCBfcmFuZG9tKSB7XG4gICAgbm9kZXMgPSBfbm9kZXM7XG4gICAgcmFuZG9tID0gX3JhbmRvbTtcbiAgICBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS5kaXN0YW5jZU1pbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkaXN0YW5jZU1pbjIgPSBfICogXywgZm9yY2UpIDogTWF0aC5zcXJ0KGRpc3RhbmNlTWluMik7XG4gIH07XG5cbiAgZm9yY2UuZGlzdGFuY2VNYXggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGlzdGFuY2VNYXgyID0gXyAqIF8sIGZvcmNlKSA6IE1hdGguc3FydChkaXN0YW5jZU1heDIpO1xuICB9O1xuXG4gIGZvcmNlLnRoZXRhID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoZXRhMiA9IF8gKiBfLCBmb3JjZSkgOiBNYXRoLnNxcnQodGhldGEyKTtcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG5cbmZ1bmN0aW9uIHJhZGlhbChyYWRpdXMsIHgsIHkpIHtcbiAgdmFyIG5vZGVzLFxuICAgICAgc3RyZW5ndGggPSBjb25zdGFudCgwLjEpLFxuICAgICAgc3RyZW5ndGhzLFxuICAgICAgcmFkaXVzZXM7XG5cbiAgaWYgKHR5cGVvZiByYWRpdXMgIT09IFwiZnVuY3Rpb25cIikgcmFkaXVzID0gY29uc3RhbnQoK3JhZGl1cyk7XG4gIGlmICh4ID09IG51bGwpIHggPSAwO1xuICBpZiAoeSA9PSBudWxsKSB5ID0gMDtcblxuICBmdW5jdGlvbiBmb3JjZShhbHBoYSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbm9kZXMubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldLFxuICAgICAgICAgIGR4ID0gbm9kZS54IC0geCB8fCAxZS02LFxuICAgICAgICAgIGR5ID0gbm9kZS55IC0geSB8fCAxZS02LFxuICAgICAgICAgIHIgPSBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpLFxuICAgICAgICAgIGsgPSAocmFkaXVzZXNbaV0gLSByKSAqIHN0cmVuZ3Roc1tpXSAqIGFscGhhIC8gcjtcbiAgICAgIG5vZGUudnggKz0gZHggKiBrO1xuICAgICAgbm9kZS52eSArPSBkeSAqIGs7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGg7XG4gICAgc3RyZW5ndGhzID0gbmV3IEFycmF5KG4pO1xuICAgIHJhZGl1c2VzID0gbmV3IEFycmF5KG4pO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHJhZGl1c2VzW2ldID0gK3JhZGl1cyhub2Rlc1tpXSwgaSwgbm9kZXMpO1xuICAgICAgc3RyZW5ndGhzW2ldID0gaXNOYU4ocmFkaXVzZXNbaV0pID8gMCA6ICtzdHJlbmd0aChub2Rlc1tpXSwgaSwgbm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgbm9kZXMgPSBfLCBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS5yYWRpdXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFkaXVzID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogcmFkaXVzO1xuICB9O1xuXG4gIGZvcmNlLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9ICtfLCBmb3JjZSkgOiB4O1xuICB9O1xuXG4gIGZvcmNlLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeSA9ICtfLCBmb3JjZSkgOiB5O1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cblxuZnVuY3Rpb24geCQyKHgpIHtcbiAgdmFyIHN0cmVuZ3RoID0gY29uc3RhbnQoMC4xKSxcbiAgICAgIG5vZGVzLFxuICAgICAgc3RyZW5ndGhzLFxuICAgICAgeHo7XG5cbiAgaWYgKHR5cGVvZiB4ICE9PSBcImZ1bmN0aW9uXCIpIHggPSBjb25zdGFudCh4ID09IG51bGwgPyAwIDogK3gpO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKGFscGhhKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBub2Rlcy5sZW5ndGgsIG5vZGU7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tpXSwgbm9kZS52eCArPSAoeHpbaV0gLSBub2RlLngpICogc3RyZW5ndGhzW2ldICogYWxwaGE7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGg7XG4gICAgc3RyZW5ndGhzID0gbmV3IEFycmF5KG4pO1xuICAgIHh6ID0gbmV3IEFycmF5KG4pO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHN0cmVuZ3Roc1tpXSA9IGlzTmFOKHh6W2ldID0gK3gobm9kZXNbaV0sIGksIG5vZGVzKSkgPyAwIDogK3N0cmVuZ3RoKG5vZGVzW2ldLCBpLCBub2Rlcyk7XG4gICAgfVxuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICBub2RlcyA9IF87XG4gICAgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UueCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh4ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogeDtcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG5cbmZ1bmN0aW9uIHkkMih5KSB7XG4gIHZhciBzdHJlbmd0aCA9IGNvbnN0YW50KDAuMSksXG4gICAgICBub2RlcyxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIHl6O1xuXG4gIGlmICh0eXBlb2YgeSAhPT0gXCJmdW5jdGlvblwiKSB5ID0gY29uc3RhbnQoeSA9PSBudWxsID8gMCA6ICt5KTtcblxuICBmdW5jdGlvbiBmb3JjZShhbHBoYSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUudnkgKz0gKHl6W2ldIC0gbm9kZS55KSAqIHN0cmVuZ3Roc1tpXSAqIGFscGhhO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoO1xuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShuKTtcbiAgICB5eiA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBzdHJlbmd0aHNbaV0gPSBpc05hTih5eltpXSA9ICt5KG5vZGVzW2ldLCBpLCBub2RlcykpID8gMCA6ICtzdHJlbmd0aChub2Rlc1tpXSwgaSwgbm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgbm9kZXMgPSBfO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHk7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuXG5leHBvcnRzLmZvcmNlQ2VudGVyID0gY2VudGVyO1xuZXhwb3J0cy5mb3JjZUNvbGxpZGUgPSBjb2xsaWRlO1xuZXhwb3J0cy5mb3JjZUxpbmsgPSBsaW5rO1xuZXhwb3J0cy5mb3JjZU1hbnlCb2R5ID0gbWFueUJvZHk7XG5leHBvcnRzLmZvcmNlUmFkaWFsID0gcmFkaWFsO1xuZXhwb3J0cy5mb3JjZVNpbXVsYXRpb24gPSBzaW11bGF0aW9uO1xuZXhwb3J0cy5mb3JjZVggPSB4JDI7XG5leHBvcnRzLmZvcmNlWSA9IHkkMjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxufSkpO1xuIiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiZDMtZm9yY2VcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiZDMtZm9yY2VcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlRDNGb3JjZVwiXSA9IGZhY3RvcnkocmVxdWlyZShcImQzLWZvcmNlXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJjeXRvc2NhcGVEM0ZvcmNlXCJdID0gZmFjdG9yeShyb290W1wiZDMtZm9yY2VcIl0pO1xufSkodGhpcywgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV80X18pIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbi8qKioqKiovIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAzKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuLyoqXG4qIGN5dG9zY2FwZS1kMy1mb3JjZVxuKi9cblxudmFyIGRlZmF1bHRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbnZhciBkMyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxudmFyIENvbnRpbnVvdXNMYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENvbnRpbnVvdXNMYXlvdXQob3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb250aW51b3VzTGF5b3V0KTtcblxuICAgIHZhciBvID0gdGhpcy5vcHRpb25zID0gYXNzaWduKHt9LCBkZWZhdWx0cywgb3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZSA9IGFzc2lnbih7fSwgbywge1xuICAgICAgbGF5b3V0OiB0aGlzLFxuICAgICAgbm9kZXM6IG8uZWxlcy5ub2RlcygpLFxuICAgICAgZWRnZXM6IG8uZWxlcy5lZGdlcygpLFxuICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICBpdGVyYXRpb25zOiAwLFxuICAgICAgc3RhcnRUaW1lOiAwXG4gICAgfSk7XG4gICAgdGhpcy5zaW11bGF0aW9uID0gbnVsbDtcbiAgICB0aGlzLnJlbW92ZUN5dG9zY2FwZUV2ZW50cyA9IG51bGw7XG4gICAgdGhpcy5kZXN0cm95ZWRFdmVudCA9IG51bGw7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ29udGludW91c0xheW91dCwgW3tcbiAgICBrZXk6ICdtYWtlQm91bmRpbmdCb3gnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtYWtlQm91bmRpbmdCb3goYmIsIGN5KSB7XG4gICAgICBpZiAoYmIgPT0gbnVsbCkge1xuICAgICAgICBiYiA9IHsgeDE6IDAsIHkxOiAwLCB3OiBjeS53aWR0aCgpLCBoOiBjeS5oZWlnaHQoKSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmIgPSB7IHgxOiBiYi54MSwgeDI6IGJiLngyLCB5MTogYmIueTEsIHkyOiBiYi55MiwgdzogYmIudywgaDogYmIuaCB9O1xuICAgICAgfVxuICAgICAgaWYgKGJiLngyID09IG51bGwpIHtcbiAgICAgICAgYmIueDIgPSBiYi54MSArIGJiLnc7XG4gICAgICB9XG4gICAgICBpZiAoYmIudyA9PSBudWxsKSB7XG4gICAgICAgIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICAgICAgfVxuICAgICAgaWYgKGJiLnkyID09IG51bGwpIHtcbiAgICAgICAgYmIueTIgPSBiYi55MSArIGJiLmg7XG4gICAgICB9XG4gICAgICBpZiAoYmIuaCA9PSBudWxsKSB7XG4gICAgICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYmI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRJbml0aWFsUG9zaXRpb25TdGF0ZShub2RlLCBzdGF0ZSkge1xuICAgICAgdmFyIHAgPSBub2RlLnBvc2l0aW9uKCk7XG4gICAgICB2YXIgYmIgPSBzdGF0ZS5jdXJyZW50Qm91bmRpbmdCb3g7XG4gICAgICB2YXIgc2NyYXRjaCA9IG5vZGUuc2NyYXRjaChzdGF0ZS5uYW1lKTtcblxuICAgICAgaWYgKHNjcmF0Y2ggPT0gbnVsbCkge1xuICAgICAgICBzY3JhdGNoID0ge307XG5cbiAgICAgICAgbm9kZS5zY3JhdGNoKHN0YXRlLm5hbWUsIHNjcmF0Y2gpO1xuICAgICAgfVxuXG4gICAgICBhc3NpZ24oc2NyYXRjaCwgc3RhdGUucmFuZG9taXplID8ge1xuICAgICAgICB4OiBiYi54MSArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIGJiLncpLFxuICAgICAgICB5OiBiYi55MSArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIGJiLmgpXG4gICAgICB9IDoge1xuICAgICAgICB4OiBwLngsXG4gICAgICAgIHk6IHAueVxuICAgICAgfSk7XG4gICAgICBpZiAobm9kZS5sb2NrZWQoKSkge1xuICAgICAgICBhc3NpZ24oc2NyYXRjaCwge1xuICAgICAgICAgIGZ4OiBwLngsXG4gICAgICAgICAgZnk6IHAueVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZWZyZXNoUG9zaXRpb25zJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVmcmVzaFBvc2l0aW9ucyhub2Rlcywgc3RhdGUsIGZpdCkge1xuICAgICAgbm9kZXMucG9zaXRpb25zKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBzY3JhdGNoID0gbm9kZS5zY3JhdGNoKHN0YXRlLm5hbWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IHNjcmF0Y2gueCxcbiAgICAgICAgICB5OiBzY3JhdGNoLnlcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgZml0ICYmIHN0YXRlLmN5LmZpdChzdGF0ZS5wYWRkaW5nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRTY3JhdGNoJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2NyYXRjaChlbCkge1xuICAgICAgdmFyIG5hbWUgPSB0aGlzLnN0YXRlLm5hbWU7XG4gICAgICB2YXIgc2NyYXRjaCA9IGVsLnNjcmF0Y2gobmFtZSk7XG5cbiAgICAgIGlmICghc2NyYXRjaCkge1xuICAgICAgICBzY3JhdGNoID0ge307XG5cbiAgICAgICAgZWwuc2NyYXRjaChuYW1lLCBzY3JhdGNoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzY3JhdGNoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3VuZ3JhYmlmeScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVuZ3JhYmlmeShub2Rlcykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKCF0aGlzLnN0YXRlLnVuZ3JhYmlmeVdoaWxlU2ltdWxhdGluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIG5vZGVHcmFiYmFibGUgPSBfdGhpcy5nZXRTY3JhdGNoKG5vZGUpLmdyYWJiYWJsZSA9IG5vZGUuZ3JhYmJhYmxlKCk7XG4gICAgICAgIHJldHVybiBub2RlR3JhYmJhYmxlO1xuICAgICAgfSk7XG4gICAgICBub2Rlcy51bmdyYWJpZnkoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZWdyYWJpZnknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWdyYWJpZnkobm9kZXMpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpZiAoIXRoaXMuc3RhdGUudW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgbm9kZUdyYWJiYWJsZSA9IF90aGlzMi5nZXRTY3JhdGNoKG5vZGUpLmdyYWJiYWJsZTtcbiAgICAgICAgcmV0dXJuIG5vZGVHcmFiYmFibGU7XG4gICAgICB9KTtcbiAgICAgIG5vZGVzLmdyYWJpZnkoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd0aWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGljaygpIHtcbiAgICAgIHZhciBzID0gdGhpcy5zdGF0ZTtcbiAgICAgIHMucHJvZ3Jlc3MgKz0gMSAvIE1hdGguY2VpbChNYXRoLmxvZyh0aGlzLnNpbXVsYXRpb24uYWxwaGFNaW4oKSkgLyBNYXRoLmxvZygxIC0gdGhpcy5zaW11bGF0aW9uLmFscGhhRGVjYXkoKSkpO1xuICAgICAgcy5pdGVyYXRpb25zKys7XG4gICAgICB2YXIgX2l0ZXJhdGlvbnMgPSBzLm1heEl0ZXJhdGlvbnMgJiYgIXMuaW5maW5pdGUgPyBzLml0ZXJhdGlvbnMgLyBzLm1heEl0ZXJhdGlvbnMgOiAwO1xuICAgICAgdmFyIF90aW1lUnVubmluZyA9IERhdGUubm93KCkgLSBzLnN0YXJ0VGltZTtcbiAgICAgIHZhciBfdGltZUl0ZXJhdGlvbnMgPSBzLm1heFNpbXVsYXRpb25UaW1lICYmICFzLmluZmluaXRlID8gX3RpbWVSdW5uaW5nIC8gcy5tYXhTaW11bGF0aW9uVGltZSA6IDA7XG4gICAgICB2YXIgX3Byb2dyZXNzID0gTWF0aC5tYXgoX2l0ZXJhdGlvbnMsIF90aW1lSXRlcmF0aW9ucywgcy5wcm9ncmVzcyk7XG4gICAgICBfcHJvZ3Jlc3MgPSBfcHJvZ3Jlc3MgPiAxID8gMSA6IF9wcm9ncmVzcztcbiAgICAgIGlmIChfcHJvZ3Jlc3MgPj0gMSkge1xuICAgICAgICB0aGlzLmVuZCghcy5pbmZpbml0ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHMudGljayAmJiBzLnRpY2soX3Byb2dyZXNzKTtcbiAgICAgIGlmIChzLmFuaW1hdGUpIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoUG9zaXRpb25zKHMubm9kZXMsIHMsIHMuZml0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdlbmQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmQoZGVzdHJveWVkKSB7XG4gICAgICB2YXIgcyA9IHRoaXMuc3RhdGU7XG4gICAgICB0aGlzLnJlZnJlc2hQb3NpdGlvbnMocy5ub2Rlcywgcywgcy5maXQpO1xuICAgICAgdGhpcy5lbWl0KCdsYXlvdXRzdG9wJywgcy5jeSk7XG4gICAgICB0aGlzLnJlc2V0KGRlc3Ryb3llZCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVzZXQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldChkZXN0cm95ZWQpIHtcbiAgICAgIHRoaXMuc2ltdWxhdGlvbiAmJiB0aGlzLnNpbXVsYXRpb24uc3RvcCgpO1xuICAgICAgdmFyIHMgPSB0aGlzLnN0YXRlO1xuICAgICAgdGhpcy5kZXN0cm95ZWRFdmVudCAmJiB0aGlzLmRlc3Ryb3llZEV2ZW50KCk7XG4gICAgICAoZGVzdHJveWVkIHx8ICFzLmluZmluaXRlKSAmJiB0aGlzLnJlbW92ZUN5dG9zY2FwZUV2ZW50cyAmJiB0aGlzLnJlbW92ZUN5dG9zY2FwZUV2ZW50cygpO1xuICAgICAgcy5hbmltYXRlICYmIHRoaXMucmVncmFiaWZ5KHMubm9kZXMpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncnVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgIHZhciBsID0gdGhpcztcbiAgICAgIHZhciBzID0gdGhpcy5zdGF0ZTtcbiAgICAgIHZhciByZWFkeSA9IGZhbHNlO1xuICAgICAgcy5jdXJyZW50Qm91bmRpbmdCb3ggPSB0aGlzLm1ha2VCb3VuZGluZ0JveChzLmJvdW5kaW5nQm94LCBzLmN5KTtcbiAgICAgIGlmIChzLnJlYWR5KSB7XG4gICAgICAgIGwub25lKCdsYXlvdXRyZWFkeScsIHMucmVhZHkpO1xuICAgICAgfVxuICAgICAgaWYgKHMuc3RvcCkge1xuICAgICAgICBsLm9uZSgnbGF5b3V0c3RvcCcsIHMuc3RvcCk7XG4gICAgICB9XG4gICAgICBzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMy5zZXRJbml0aWFsUG9zaXRpb25TdGF0ZShuLCBzKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKCFyZWFkeSkge1xuICAgICAgICByZWFkeSA9IHRydWU7XG4gICAgICAgIGwuZW1pdCgnbGF5b3V0cmVhZHknKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFsLnNpbXVsYXRpb24pIHtcbiAgICAgICAgdmFyIF9mb3JjZW5vZGVzID0gcy5ub2Rlcy5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICByZXR1cm4gYXNzaWduKGwuZ2V0U2NyYXRjaChuKSwgbi5kYXRhKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9mb3JjZWVkZ2VzID0gcy5lZGdlcy5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICByZXR1cm4gYXNzaWduKHt9LCBlLmRhdGEoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBsLnNpbXVsYXRpb24gPSBkMy5mb3JjZVNpbXVsYXRpb24oX2ZvcmNlbm9kZXMpO1xuICAgICAgICBzLmFscGhhICYmIGwuc2ltdWxhdGlvbi5hbHBoYShzLmFscGhhKTtcbiAgICAgICAgcy5hbHBoYU1pbiAmJiBsLnNpbXVsYXRpb24uYWxwaGFNaW4ocy5hbHBoYU1pbik7XG4gICAgICAgIHMuYWxwaGFEZWNheSAmJiBsLnNpbXVsYXRpb24uYWxwaGFEZWNheShzLmFscGhhRGVjYXkpO1xuICAgICAgICBzLmFscGhhVGFyZ2V0ICYmIGwuc2ltdWxhdGlvbi5hbHBoYVRhcmdldChzLmFscGhhVGFyZ2V0KTtcbiAgICAgICAgcy52ZWxvY2l0eURlY2F5ICYmIGwuc2ltdWxhdGlvbi52ZWxvY2l0eURlY2F5KHMudmVsb2NpdHlEZWNheSk7XG4gICAgICAgIHZhciBfY29sbGlkZSA9IGQzLmZvcmNlQ29sbGlkZSgpO1xuICAgICAgICBzLmNvbGxpZGVSYWRpdXMgJiYgX2NvbGxpZGUucmFkaXVzKHMuY29sbGlkZVJhZGl1cyk7XG4gICAgICAgIHMuY29sbGlkZVN0cmVuZ3RoICYmIF9jb2xsaWRlLnN0cmVuZ3RoKHMuY29sbGlkZVN0cmVuZ3RoKTtcbiAgICAgICAgcy5jb2xsaWRlSXRlcmF0aW9ucyAmJiBfY29sbGlkZS5pdGVyYXRpb25zKHMuY29sbGlkZUl0ZXJhdGlvbnMpO1xuICAgICAgICB2YXIgX2xpbmsgPSBkMy5mb3JjZUxpbmsoX2ZvcmNlZWRnZXMpO1xuICAgICAgICBzLmxpbmtJZCAmJiBfbGluay5pZChzLmxpbmtJZCk7XG4gICAgICAgIHMubGlua0Rpc3RhbmNlICYmIF9saW5rLmRpc3RhbmNlKHMubGlua0Rpc3RhbmNlKTtcbiAgICAgICAgcy5saW5rU3RyZW5ndGggJiYgX2xpbmsuc3RyZW5ndGgocy5saW5rU3RyZW5ndGgpO1xuICAgICAgICBzLmxpbmtJdGVyYXRpb25zICYmIF9saW5rLml0ZXJhdGlvbnMocy5saW5rSXRlcmF0aW9ucyk7XG4gICAgICAgIHZhciBfbWFueUJvZHkgPSBkMy5mb3JjZU1hbnlCb2R5KCk7XG4gICAgICAgIHMubWFueUJvZHlTdHJlbmd0aCAmJiBfbWFueUJvZHkuc3RyZW5ndGgocy5tYW55Qm9keVN0cmVuZ3RoKTtcbiAgICAgICAgcy5tYW55Qm9keVRoZXRhICYmIF9tYW55Qm9keS50aGV0YShzLm1hbnlCb2R5VGhldGEpO1xuICAgICAgICBzLm1hbnlCb2R5RGlzdGFuY2VNaW4gJiYgX21hbnlCb2R5LmRpc3RhbmNlTWluKHMubWFueUJvZHlEaXN0YW5jZU1pbik7XG4gICAgICAgIHMubWFueUJvZHlEaXN0YW5jZU1heCAmJiBfbWFueUJvZHkuZGlzdGFuY2VNYXgocy5tYW55Qm9keURpc3RhbmNlTWF4KTtcbiAgICAgICAgdmFyIF94ID0gZDMuZm9yY2VYKCk7XG4gICAgICAgIHMueFggJiYgX3gueChzLnhYKTtcbiAgICAgICAgcy54U3RyZW5ndGggJiYgX3guc3RyZW5ndGgocy54U3RyZW5ndGgpO1xuICAgICAgICB2YXIgX3kgPSBkMy5mb3JjZVkoKTtcbiAgICAgICAgcy55WSAmJiBfeS55KHMueVkpO1xuICAgICAgICBzLnlTdHJlbmd0aCAmJiBfeS5zdHJlbmd0aChzLnlTdHJlbmd0aCk7XG4gICAgICAgIHZhciBfcmFkaXVzID0gbnVsbDtcbiAgICAgICAgaWYgKHMucmFkaWFsUmFkaXVzIHx8IHMucmFkaWFsU3RyZW5ndGggfHwgcy5yYWRpYWxYIHx8IHMucmFkaWFsWSkge1xuICAgICAgICAgIF9yYWRpdXMgPSBkMy5mb3JjZVJhZGlhbCgpO1xuICAgICAgICAgIHMucmFkaWFsUmFkaXVzICYmIF9yYWRpdXMucmFkaXVzKHMucmFkaWFsUmFkaXVzKTtcbiAgICAgICAgICBzLnJhZGlhbFN0cmVuZ3RoICYmIF9yYWRpdXMuc3RyZW5ndGgocy5yYWRpYWxTdHJlbmd0aCk7XG4gICAgICAgICAgcy5yYWRpYWxYICYmIF9yYWRpdXMueChzLnJhZGlhbFgpO1xuICAgICAgICAgIHMucmFkaWFsWSAmJiBfcmFkaXVzLnkocy5yYWRpYWxZKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX2NlbnRlciA9IGQzLmZvcmNlQ2VudGVyKHMuY3VycmVudEJvdW5kaW5nQm94LncgLyAyLCBzLmN1cnJlbnRCb3VuZGluZ0JveC5oIC8gMik7XG4gICAgICAgIGwuc2ltdWxhdGlvbi5mb3JjZSgnY29sbGlkZScsIF9jb2xsaWRlKS5mb3JjZSgnbGluaycsIF9saW5rKS5mb3JjZSgnbWFueS1ib2R5JywgX21hbnlCb2R5KS5mb3JjZSgneCcsIF94KS5mb3JjZSgneScsIF95KS5mb3JjZShcImNlbnRlclwiLCBfY2VudGVyKTtcbiAgICAgICAgX3JhZGl1cyAmJiBsLnNpbXVsYXRpb24uZm9yY2UoJ3JhZGl1cycsIF9yYWRpdXMpO1xuICAgICAgICBsLnNpbXVsYXRpb24ub24oXCJ0aWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsLnRpY2soKTtcbiAgICAgICAgfSkub24oXCJlbmRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGwuZW5kKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFsLmRlc3Ryb3llZEV2ZW50KSB7XG4gICAgICAgIHZhciBkZXN0cm95SGFuZGxlciA9IHZvaWQgMDtcbiAgICAgICAgcy5jeS5vbmUoJ2Rlc3Ryb3knLCBkZXN0cm95SGFuZGxlciA9IGZ1bmN0aW9uIGRlc3Ryb3lIYW5kbGVyKCkge1xuICAgICAgICAgIGwuc3RvcCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgbC5kZXN0cm95ZWRFdmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzLmN5Lm9mZignZGVzdHJveScsIGRlc3Ryb3lIYW5kbGVyKTtcbiAgICAgICAgICBsLmRlc3Ryb3llZEV2ZW50ID0gbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGwucHJlcnVuKHMpO1xuICAgICAgbC5lbWl0KCdsYXlvdXRzdGFydCcpO1xuICAgICAgcy5wcm9ncmVzcyA9IDA7XG4gICAgICBzLml0ZXJhdGlvbnMgPSAwO1xuICAgICAgcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICBpZiAocy5hbmltYXRlKSB7XG4gICAgICAgIHZhciByZXN0YXJ0QWxwaGFUYXJnZXQgPSBNYXRoLmFicygocy5hbHBoYSB8fCAxKSAtIChzLmFscGhhVGFyZ2V0IHx8IDApKSAvIDM7XG4gICAgICAgIGlmICghbC5yZW1vdmVDeXRvc2NhcGVFdmVudHMpIHtcbiAgICAgICAgICB2YXIgX2N5dG9zY2FwZUV2ZW50ID0gZnVuY3Rpb24gX2N5dG9zY2FwZUV2ZW50KGUpIHtcbiAgICAgICAgICAgIHZhciBub2RlID0gdGhpcztcbiAgICAgICAgICAgIHZhciBwb3MgPSBub2RlLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICB2YXIgbm9kZUlzVGFyZ2V0ID0gZS5jeVRhcmdldCA9PT0gbm9kZSB8fCBlLnRhcmdldCA9PT0gbm9kZTtcbiAgICAgICAgICAgIGlmICghbm9kZUlzVGFyZ2V0KSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBfc2NyYXRjaCA9IGwuZ2V0U2NyYXRjaChub2RlKTtcbiAgICAgICAgICAgIHMucHJvZ3Jlc3MgPSAwO1xuICAgICAgICAgICAgcy5pdGVyYXRpb25zID0gMDtcbiAgICAgICAgICAgIHMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIF9zY3JhdGNoLnggPSBwb3MueDtcbiAgICAgICAgICAgIF9zY3JhdGNoLnkgPSBwb3MueTtcbiAgICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdncmFiJykge1xuICAgICAgICAgICAgICBsLnNpbXVsYXRpb24uYWxwaGFUYXJnZXQocmVzdGFydEFscGhhVGFyZ2V0KS5yZXN0YXJ0KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGUudHlwZSA9PT0gJ3VubG9jaycgfHwgZS50eXBlID09PSAnZnJlZScpIHtcbiAgICAgICAgICAgICAgaWYgKCFzLmZpeGVkQWZ0ZXJEcmFnZ2luZykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBfc2NyYXRjaC5meDtcbiAgICAgICAgICAgICAgICBkZWxldGUgX3NjcmF0Y2guZnk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgX3NjcmF0Y2guZnggPSBwb3MueDtcbiAgICAgICAgICAgICAgICBfc2NyYXRjaC5meSA9IHBvcy55O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGwuc2ltdWxhdGlvbi5hbHBoYVRhcmdldChyZXN0YXJ0QWxwaGFUYXJnZXQpLnJlc3RhcnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIF9zY3JhdGNoLmZ4ID0gcG9zLng7XG4gICAgICAgICAgICAgIF9zY3JhdGNoLmZ5ID0gcG9zLnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBsLnJlbW92ZUN5dG9zY2FwZUV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHMubm9kZXMub2ZmKCdncmFiIGZyZWUgZHJhZyBsb2NrIHVubG9jaycsIF9jeXRvc2NhcGVFdmVudCk7XG4gICAgICAgICAgICBsLnJlbW92ZUN5dG9zY2FwZUV2ZW50cyA9IG51bGw7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBzLm5vZGVzLm9uKCdncmFiIGZyZWUgZHJhZyBsb2NrIHVubG9jaycsIF9jeXRvc2NhcGVFdmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgbC51bmdyYWJpZnkocy5ub2Rlcyk7XG4gICAgICB9XG4gICAgICBsLnBvc3RydW4ocyk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwcmVydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwcmVydW4oKSB7fVxuICB9LCB7XG4gICAga2V5OiAncG9zdHJ1bicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBvc3RydW4oKSB7fVxuICB9LCB7XG4gICAga2V5OiAnc3RvcCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNldCh0cnVlKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ29udGludW91c0xheW91dDtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDb250aW51b3VzTGF5b3V0O1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLy8gU2ltcGxlLCBpbnRlcm5hbCBPYmplY3QuYXNzaWduKCkgcG9seWZpbGwgZm9yIG9wdGlvbnMgb2JqZWN0cyBldGMuXG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmFzc2lnbiAhPSBudWxsID8gT2JqZWN0LmFzc2lnbi5iaW5kKE9iamVjdCkgOiBmdW5jdGlvbiAodGd0KSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzcmNzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHNyY3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgc3Jjcy5mb3JFYWNoKGZ1bmN0aW9uIChzcmMpIHtcbiAgICBPYmplY3Qua2V5cyhzcmMpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiB0Z3Rba10gPSBzcmNba107XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB0Z3Q7XG59O1xuXG4vKioqLyB9KSxcbi8qIDIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZnJlZXplKHtcbiAgYW5pbWF0ZTogdHJ1ZSwgLy8gd2hldGhlciB0byBzaG93IHRoZSBsYXlvdXQgYXMgaXQncyBydW5uaW5nOyBzcGVjaWFsICdlbmQnIHZhbHVlIG1ha2VzIHRoZSBsYXlvdXQgYW5pbWF0ZSBsaWtlIGEgZGlzY3JldGUgbGF5b3V0XG4gIG1heEl0ZXJhdGlvbnM6IDAsIC8vIG1heCBpdGVyYXRpb25zIGJlZm9yZSB0aGUgbGF5b3V0IHdpbGwgYmFpbCBvdXRcbiAgbWF4U2ltdWxhdGlvblRpbWU6IDAsIC8vIG1heCBsZW5ndGggaW4gbXMgdG8gcnVuIHRoZSBsYXlvdXRcbiAgdW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nOiBmYWxzZSwgLy8gc28geW91IGNhbid0IGRyYWcgbm9kZXMgZHVyaW5nIGxheW91dFxuICBmaXhlZEFmdGVyRHJhZ2dpbmc6IGZhbHNlLCAvLyBmaXhlZCBub2RlIGFmdGVyIGRyYWdnaW5nXG4gIGZpdDogZmFsc2UsIC8vIG9uIGV2ZXJ5IGxheW91dCByZXBvc2l0aW9uIG9mIG5vZGVzLCBmaXQgdGhlIHZpZXdwb3J0XG4gIHBhZGRpbmc6IDMwLCAvLyBwYWRkaW5nIGFyb3VuZCB0aGUgc2ltdWxhdGlvblxuICBib3VuZGluZ0JveDogdW5kZWZpbmVkLCAvLyBjb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cbiAgLyoqZDMtZm9yY2UgQVBJKiovXG4gIGFscGhhOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIGN1cnJlbnQgYWxwaGEgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDFdXG4gIGFscGhhTWluOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIG1pbmltdW0gYWxwaGEgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDFdXG4gIGFscGhhRGVjYXk6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgYWxwaGEgZGVjYXkgcmF0ZSB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsMV1cbiAgYWxwaGFUYXJnZXQ6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgY3VycmVudCB0YXJnZXQgYWxwaGEgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDFdXG4gIHZlbG9jaXR5RGVjYXk6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgdmVsb2NpdHkgZGVjYXkgZmFjdG9yIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIGluIHRoZSByYW5nZSBbMCwxXVxuICBjb2xsaWRlUmFkaXVzOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIHJhZGl1cyBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvciBmdW5jdGlvblxuICBjb2xsaWRlU3RyZW5ndGg6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgZm9yY2Ugc3RyZW5ndGggdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDFdXG4gIGNvbGxpZGVJdGVyYXRpb25zOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHBlciBhcHBsaWNhdGlvbiB0byB0aGUgc3BlY2lmaWVkIG51bWJlclxuICBsaW5rSWQ6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgbm9kZSBpZCBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uXG4gIGxpbmtEaXN0YW5jZTogMzAsIC8vIHNldHMgdGhlIGRpc3RhbmNlIGFjY2Vzc29yIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9yIGZ1bmN0aW9uXG4gIGxpbmtTdHJlbmd0aDogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBzdHJlbmd0aCBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvciBmdW5jdGlvblxuICBsaW5rSXRlcmF0aW9uczogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBwZXIgYXBwbGljYXRpb24gdG8gdGhlIHNwZWNpZmllZCBudW1iZXJcbiAgbWFueUJvZHlTdHJlbmd0aDogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBzdHJlbmd0aCBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvciBmdW5jdGlvblxuICBtYW55Qm9keVRoZXRhOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIEJhcm5lc+KAk0h1dCBhcHByb3hpbWF0aW9uIGNyaXRlcmlvbiB0byB0aGUgc3BlY2lmaWVkIG51bWJlclxuICBtYW55Qm9keURpc3RhbmNlTWluOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIG1pbmltdW0gZGlzdGFuY2UgYmV0d2VlbiBub2RlcyBvdmVyIHdoaWNoIHRoaXMgZm9yY2UgaXMgY29uc2lkZXJlZFxuICBtYW55Qm9keURpc3RhbmNlTWF4OiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIG1heGltdW0gZGlzdGFuY2UgYmV0d2VlbiBub2RlcyBvdmVyIHdoaWNoIHRoaXMgZm9yY2UgaXMgY29uc2lkZXJlZFxuICB4U3RyZW5ndGg6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgc3RyZW5ndGggYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb3IgZnVuY3Rpb25cbiAgeFg6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgeC1jb29yZGluYXRlIGFjY2Vzc29yIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9yIGZ1bmN0aW9uXG4gIHlTdHJlbmd0aDogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBzdHJlbmd0aCBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvciBmdW5jdGlvblxuICB5WTogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSB5LWNvb3JkaW5hdGUgYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb3IgZnVuY3Rpb25cbiAgcmFkaWFsU3RyZW5ndGg6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgc3RyZW5ndGggYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb3IgZnVuY3Rpb25cbiAgcmFkaWFsUmFkaXVzOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIGNpcmNsZSByYWRpdXMgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb3IgZnVuY3Rpb25cbiAgcmFkaWFsWDogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIGNpcmNsZSBjZW50ZXIgdG8gdGhlIHNwZWNpZmllZCBudW1iZXJcbiAgcmFkaWFsWTogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIGNpcmNsZSBjZW50ZXIgdG8gdGhlIHNwZWNpZmllZCBudW1iZXJcbiAgLy8gbGF5b3V0IGV2ZW50IGNhbGxiYWNrc1xuICByZWFkeTogZnVuY3Rpb24gcmVhZHkoKSB7fSwgLy8gb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHt9LCAvLyBvbiBsYXlvdXRzdG9wXG4gIHRpY2s6IGZ1bmN0aW9uIHRpY2soKSB7fSwgLy8gb24gZXZlcnkgaXRlcmF0aW9uXG4gIC8vIHBvc2l0aW9uaW5nIG9wdGlvbnNcbiAgcmFuZG9taXplOiBmYWxzZSwgLy8gdXNlIHJhbmRvbSBub2RlIHBvc2l0aW9ucyBhdCBiZWdpbm5pbmcgb2YgbGF5b3V0XG4gIC8vIGluZmluaXRlIGxheW91dCBvcHRpb25zXG4gIGluZmluaXRlOiBmYWxzZSAvLyBvdmVycmlkZXMgYWxsIG90aGVyIG9wdGlvbnMgZm9yIGEgZm9yY2VzLWFsbC10aGUtdGltZSBtb2RlXG59KTtcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBpbXBsID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLy8gcmVnaXN0ZXJzIHRoZSBleHRlbnNpb24gb24gYSBjeXRvc2NhcGUgbGliIHJlZlxudmFyIHJlZ2lzdGVyID0gZnVuY3Rpb24gcmVnaXN0ZXIoY3l0b3NjYXBlKSB7XG4gIGlmICghY3l0b3NjYXBlKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIGNhbid0IHJlZ2lzdGVyIGlmIGN5dG9zY2FwZSB1bnNwZWNpZmllZFxuXG4gIGN5dG9zY2FwZSgnbGF5b3V0JywgJ2QzLWZvcmNlJywgaW1wbCk7IC8vIHJlZ2lzdGVyIHdpdGggY3l0b3NjYXBlLmpzXG59O1xuXG5pZiAodHlwZW9mIGN5dG9zY2FwZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gZXhwb3NlIHRvIGdsb2JhbCBjeXRvc2NhcGUgKGkuZS4gd2luZG93LmN5dG9zY2FwZSlcbiAgcmVnaXN0ZXIoY3l0b3NjYXBlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZWdpc3RlcjtcblxuLyoqKi8gfSksXG4vKiA0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV80X187XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsImltcG9ydCAnY3l0b3NjYXBlJztcblxuLy8gaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy9kZXNrdG9wL2FwaS93aW51c2VyL25mLXdpbnVzZXItc2V0ZG91YmxlY2xpY2t0aW1lXHJcbnZhciBJTlRFUlZBTCA9IDUwMDtcclxuZnVuY3Rpb24gZXh0ZW5zaW9uKGludGVydmFsKSB7XHJcbiAgICBpZiAoaW50ZXJ2YWwgPT09IHZvaWQgMCkgeyBpbnRlcnZhbCA9IElOVEVSVkFMOyB9XHJcbiAgICB2YXIgY2xpY2tlZCA9IG51bGw7XHJcbiAgICB0aGlzLm9uKCdjbGljaycsIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgICBpZiAoY2xpY2tlZCAmJiBjbGlja2VkID09PSBldnQudGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGNsaWNrZWQgPSBudWxsO1xyXG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBldnQudGFyZ2V0LmVtaXQoJ2RibGNsaWNrJywgW2V2dF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY2xpY2tlZCA9IGV2dC50YXJnZXQ7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNsaWNrZWQgJiYgY2xpY2tlZCA9PT0gZXZ0LnRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsaWNrZWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGV2dC50YXJnZXQuZW1pdCgnZGJsY2xpY2s6dGltZW91dCcsIFtldnRdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgaW50ZXJ2YWwpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluYWJpbGl0eVxyXG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyKGN5KSB7XHJcbiAgICBpZiAoIWN5KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gSW5pdGlhbGl6ZSBleHRlbnNpb25cclxuICAgIC8vIFJlZ2lzdGVyIGV4dGVuc2lvblxyXG4gICAgdmFyIGV4dGVuc2lvbk5hbWUgPSAnZGJsY2xpY2snO1xyXG4gICAgY3koJ2NvcmUnLCBleHRlbnNpb25OYW1lLCBleHRlbnNpb24pO1xyXG4gICAgLy8gY3koJ2NvbGxlY3Rpb24nLCBleHRlbnNpb25OYW1lLCBleHRlbnNpb24pO1xyXG4gICAgLy8gY3koJ2xheW91dCcsIGV4dGVuc2lvbk5hbWUsIGV4dGVuc2lvbik7XHJcbiAgICAvLyBjeSgncmVuZGVyZXInLCBleHRlbnNpb25OYW1lLCBleHRlbnNpb24pO1xyXG59XHJcbmlmICh0eXBlb2Ygd2luZG93LmN5dG9zY2FwZSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgIHJlZ2lzdGVyKHdpbmRvdy5jeXRvc2NhcGUpO1xyXG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZXNtLmpzLm1hcFxuIiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlQ3h0bWVudVwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJjeXRvc2NhcGVDeHRtZW51XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4vKioqKioqLyBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGdldDogZ2V0dGVyXG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNCk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBkZWZhdWx0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxudmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKSxcbiAgICByZW1vdmVFbGVzID0gX3JlcXVpcmUucmVtb3ZlRWxlcyxcbiAgICBzZXRTdHlsZXMgPSBfcmVxdWlyZS5zZXRTdHlsZXMsXG4gICAgY3JlYXRlRWxlbWVudCA9IF9yZXF1aXJlLmNyZWF0ZUVsZW1lbnQsXG4gICAgZ2V0UGl4ZWxSYXRpbyA9IF9yZXF1aXJlLmdldFBpeGVsUmF0aW8sXG4gICAgZ2V0T2Zmc2V0ID0gX3JlcXVpcmUuZ2V0T2Zmc2V0O1xuXG52YXIgY3h0bWVudSA9IGZ1bmN0aW9uIGN4dG1lbnUocGFyYW1zKSB7XG4gIHZhciBvcHRpb25zID0gYXNzaWduKHt9LCBkZWZhdWx0cywgcGFyYW1zKTtcbiAgdmFyIGN5ID0gdGhpcztcbiAgdmFyIGNvbnRhaW5lciA9IGN5LmNvbnRhaW5lcigpO1xuICB2YXIgdGFyZ2V0ID0gdm9pZCAwO1xuXG4gIHZhciBkYXRhID0ge1xuICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgaGFuZGxlcnM6IFtdLFxuICAgIGNvbnRhaW5lcjogY3JlYXRlRWxlbWVudCh7IGNsYXNzOiAnY3h0bWVudScgfSlcbiAgfTtcblxuICB2YXIgd3JhcHBlciA9IGRhdGEuY29udGFpbmVyO1xuICB2YXIgcGFyZW50ID0gY3JlYXRlRWxlbWVudCgpO1xuICB2YXIgY2FudmFzID0gY3JlYXRlRWxlbWVudCh7IHRhZzogJ2NhbnZhcycgfSk7XG4gIHZhciBjb21tYW5kcyA9IFtdO1xuICB2YXIgYzJkID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgdmFyIHIgPSAxMDA7IC8vIGRlZmFpbHQgcmFkaXVzO1xuICB2YXIgY29udGFpbmVyU2l6ZSA9IChyICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nKSAqIDI7XG4gIHZhciBhY3RpdmVDb21tYW5kSSA9IHZvaWQgMDtcbiAgdmFyIG9mZnNldCA9IHZvaWQgMDtcblxuICBjb250YWluZXIuaW5zZXJ0QmVmb3JlKHdyYXBwZXIsIGNvbnRhaW5lci5maXJzdENoaWxkKTtcbiAgd3JhcHBlci5hcHBlbmRDaGlsZChwYXJlbnQpO1xuICBwYXJlbnQuYXBwZW5kQ2hpbGQoY2FudmFzKTtcblxuICBzZXRTdHlsZXMod3JhcHBlciwge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHpJbmRleDogb3B0aW9ucy56SW5kZXgsXG4gICAgdXNlclNlbGVjdDogJ25vbmUnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyAvLyBwcmV2ZW50IGV2ZW50cyBvbiBtZW51IGluIG1vZGVybiBicm93c2Vyc1xuICB9KTtcblxuICAvLyBwcmV2ZW50IGV2ZW50cyBvbiBtZW51IGluIGxlZ2FjeSBicm93c2Vyc1xuICBbJ21vdXNlZG93bicsICdtb3VzZW1vdmUnLCAnbW91c2V1cCcsICdjb250ZXh0bWVudSddLmZvckVhY2goZnVuY3Rpb24gKGV2dCkge1xuICAgIHdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcihldnQsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc2V0U3R5bGVzKHBhcmVudCwge1xuICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB3aWR0aDogY29udGFpbmVyU2l6ZSArICdweCcsXG4gICAgaGVpZ2h0OiBjb250YWluZXJTaXplICsgJ3B4JyxcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB6SW5kZXg6IDEsXG4gICAgbWFyZ2luTGVmdDogLW9wdGlvbnMuYWN0aXZlUGFkZGluZyArICdweCcsXG4gICAgbWFyZ2luVG9wOiAtb3B0aW9ucy5hY3RpdmVQYWRkaW5nICsgJ3B4JyxcbiAgICB1c2VyU2VsZWN0OiAnbm9uZSdcbiAgfSk7XG5cbiAgY2FudmFzLndpZHRoID0gY29udGFpbmVyU2l6ZTtcbiAgY2FudmFzLmhlaWdodCA9IGNvbnRhaW5lclNpemU7XG5cbiAgZnVuY3Rpb24gY3JlYXRlTWVudUl0ZW1zKHIsIHJzKSB7XG4gICAgcmVtb3ZlRWxlcygnLmN4dG1lbnUtaXRlbScsIHBhcmVudCk7XG4gICAgdmFyIGR0aGV0YSA9IDIgKiBNYXRoLlBJIC8gY29tbWFuZHMubGVuZ3RoO1xuICAgIHZhciB0aGV0YTEgPSBNYXRoLlBJIC8gMjtcbiAgICB2YXIgdGhldGEyID0gdGhldGExICsgZHRoZXRhO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21tYW5kcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNvbW1hbmQgPSBjb21tYW5kc1tpXTtcblxuICAgICAgdmFyIG1pZHRoZXRhID0gKHRoZXRhMSArIHRoZXRhMikgLyAyO1xuICAgICAgdmFyIHJ4MSA9IChyICsgcnMpIC8gMiAqIE1hdGguY29zKG1pZHRoZXRhKTtcbiAgICAgIHZhciByeTEgPSAociArIHJzKSAvIDIgKiBNYXRoLnNpbihtaWR0aGV0YSk7XG5cbiAgICAgIC8vIEFyYml0cmFyeSBtdWx0aXBsaWVyIHRvIGluY3JlYXNlIHRoZSBzaXppbmcgb2YgdGhlIHNwYWNlIFxuICAgICAgLy8gYXZhaWxhYmxlIGZvciB0aGUgaXRlbS5cbiAgICAgIHZhciB3aWR0aCA9IDEgKiBNYXRoLmFicygociAtIHJzKSAqIE1hdGguY29zKG1pZHRoZXRhKSk7XG4gICAgICB2YXIgaGVpZ2h0ID0gMSAqIE1hdGguYWJzKChyIC0gcnMpICogTWF0aC5zaW4obWlkdGhldGEpKTtcbiAgICAgIHdpZHRoID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7XG5cbiAgICAgIHZhciBpdGVtID0gY3JlYXRlRWxlbWVudCh7IGNsYXNzOiAnY3h0bWVudS1pdGVtJyB9KTtcbiAgICAgIHNldFN0eWxlcyhpdGVtLCB7XG4gICAgICAgIGNvbG9yOiBvcHRpb25zLml0ZW1Db2xvcixcbiAgICAgICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRpc3BsYXk6ICd0YWJsZScsXG4gICAgICAgICd0ZXh0LWFsaWduJzogJ2NlbnRlcicsXG4gICAgICAgIC8vYmFja2dyb3VuZDogJ3JlZCcsXG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAndGV4dC1zaGFkb3cnOiAnLTFweCAtMXB4IDJweCAnICsgb3B0aW9ucy5pdGVtVGV4dFNoYWRvd0NvbG9yICsgJywgMXB4IC0xcHggMnB4ICcgKyBvcHRpb25zLml0ZW1UZXh0U2hhZG93Q29sb3IgKyAnLCAtMXB4IDFweCAycHggJyArIG9wdGlvbnMuaXRlbVRleHRTaGFkb3dDb2xvciArICcsIDFweCAxcHggMXB4ICcgKyBvcHRpb25zLml0ZW1UZXh0U2hhZG93Q29sb3IsXG4gICAgICAgIGxlZnQ6ICc1MCUnLFxuICAgICAgICB0b3A6ICc1MCUnLFxuICAgICAgICAnbWluLWhlaWdodCc6IHdpZHRoICsgJ3B4JyxcbiAgICAgICAgd2lkdGg6IHdpZHRoICsgJ3B4JyxcbiAgICAgICAgaGVpZ2h0OiB3aWR0aCArICdweCcsXG4gICAgICAgIG1hcmdpbkxlZnQ6IHJ4MSAtIHdpZHRoIC8gMiArICdweCcsXG4gICAgICAgIG1hcmdpblRvcDogLXJ5MSAtIHdpZHRoIC8gMiArICdweCdcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgY29udGVudCA9IGNyZWF0ZUVsZW1lbnQoeyBjbGFzczogJ2N4dG1lbnUtY29udGVudCcgfSk7XG5cbiAgICAgIGlmIChjb21tYW5kLmNvbnRlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGNvbW1hbmQuY29udGVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZW50LmlubmVySFRNTCA9IGNvbW1hbmQuY29udGVudDtcbiAgICAgIH1cblxuICAgICAgc2V0U3R5bGVzKGNvbnRlbnQsIHtcbiAgICAgICAgJ3dpZHRoJzogd2lkdGggKyAncHgnLFxuICAgICAgICAnaGVpZ2h0Jzogd2lkdGggKyAncHgnLFxuICAgICAgICAndmVydGljYWwtYWxpZ24nOiAnbWlkZGxlJyxcbiAgICAgICAgJ2Rpc3BsYXknOiAndGFibGUtY2VsbCdcbiAgICAgIH0pO1xuXG4gICAgICBzZXRTdHlsZXMoY29udGVudCwgY29tbWFuZC5jb250ZW50U3R5bGUgfHwge30pO1xuXG4gICAgICBpZiAoY29tbWFuZC5kaXNhYmxlZCA9PT0gdHJ1ZSB8fCBjb21tYW5kLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnRlbnQuc2V0QXR0cmlidXRlKCdjbGFzcycsICdjeHRtZW51LWNvbnRlbnQgY3h0bWVudS1kaXNhYmxlZCcpO1xuICAgICAgfVxuXG4gICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoaXRlbSk7XG4gICAgICBpdGVtLmFwcGVuZENoaWxkKGNvbnRlbnQpO1xuXG4gICAgICB0aGV0YTEgKz0gZHRoZXRhO1xuICAgICAgdGhldGEyICs9IGR0aGV0YTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBxdWV1ZURyYXdCZyhyYWRpdXMsIHJzcG90bGlnaHQpIHtcbiAgICByZWRyYXdRdWV1ZS5kcmF3QmcgPSBbcmFkaXVzLCByc3BvdGxpZ2h0XTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRyYXdCZyhyYWRpdXMsIHJzcG90bGlnaHQpIHtcbiAgICBjMmQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcblxuICAgIGMyZC5jbGVhclJlY3QoMCwgMCwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVyU2l6ZSk7XG5cbiAgICAvLyBkcmF3IGJhY2tncm91bmQgaXRlbXNcbiAgICBjMmQuZmlsbFN0eWxlID0gb3B0aW9ucy5maWxsQ29sb3I7XG4gICAgdmFyIGR0aGV0YSA9IDIgKiBNYXRoLlBJIC8gY29tbWFuZHMubGVuZ3RoO1xuICAgIHZhciB0aGV0YTEgPSBNYXRoLlBJIC8gMjtcbiAgICB2YXIgdGhldGEyID0gdGhldGExICsgZHRoZXRhO1xuXG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvbW1hbmRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdmFyIGNvbW1hbmQgPSBjb21tYW5kc1tpbmRleF07XG5cbiAgICAgIGlmIChjb21tYW5kLmZpbGxDb2xvcikge1xuICAgICAgICBjMmQuZmlsbFN0eWxlID0gY29tbWFuZC5maWxsQ29sb3I7XG4gICAgICB9XG4gICAgICBjMmQuYmVnaW5QYXRoKCk7XG4gICAgICBjMmQubW92ZVRvKHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZywgcmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nKTtcbiAgICAgIGMyZC5hcmMocmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcsIHJhZGl1cywgMiAqIE1hdGguUEkgLSB0aGV0YTEsIDIgKiBNYXRoLlBJIC0gdGhldGEyLCB0cnVlKTtcbiAgICAgIGMyZC5jbG9zZVBhdGgoKTtcbiAgICAgIGMyZC5maWxsKCk7XG5cbiAgICAgIHRoZXRhMSArPSBkdGhldGE7XG4gICAgICB0aGV0YTIgKz0gZHRoZXRhO1xuXG4gICAgICBjMmQuZmlsbFN0eWxlID0gb3B0aW9ucy5maWxsQ29sb3I7XG4gICAgfVxuXG4gICAgLy8gZHJhdyBzZXBhcmF0b3JzIGJldHdlZW4gaXRlbXNcbiAgICBjMmQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW91dCc7XG4gICAgYzJkLnN0cm9rZVN0eWxlID0gJ3doaXRlJztcbiAgICBjMmQubGluZVdpZHRoID0gb3B0aW9ucy5zZXBhcmF0b3JXaWR0aDtcbiAgICB0aGV0YTEgPSBNYXRoLlBJIC8gMjtcbiAgICB0aGV0YTIgPSB0aGV0YTEgKyBkdGhldGE7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbW1hbmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcngxID0gcmFkaXVzICogTWF0aC5jb3ModGhldGExKTtcbiAgICAgIHZhciByeTEgPSByYWRpdXMgKiBNYXRoLnNpbih0aGV0YTEpO1xuICAgICAgYzJkLmJlZ2luUGF0aCgpO1xuICAgICAgYzJkLm1vdmVUbyhyYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcsIHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZyk7XG4gICAgICBjMmQubGluZVRvKHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZyArIHJ4MSwgcmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nIC0gcnkxKTtcbiAgICAgIGMyZC5jbG9zZVBhdGgoKTtcbiAgICAgIGMyZC5zdHJva2UoKTtcblxuICAgICAgdGhldGExICs9IGR0aGV0YTtcbiAgICAgIHRoZXRhMiArPSBkdGhldGE7XG4gICAgfVxuXG4gICAgYzJkLmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgYzJkLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdXQnO1xuICAgIGMyZC5iZWdpblBhdGgoKTtcbiAgICBjMmQuYXJjKHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZywgcmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByc3BvdGxpZ2h0ICsgb3B0aW9ucy5zcG90bGlnaHRQYWRkaW5nLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7XG4gICAgYzJkLmNsb3NlUGF0aCgpO1xuICAgIGMyZC5maWxsKCk7XG5cbiAgICBjMmQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcbiAgfVxuXG4gIGZ1bmN0aW9uIHF1ZXVlRHJhd0NvbW1hbmRzKHJ4LCByeSwgcmFkaXVzLCB0aGV0YSwgcnNwb3RsaWdodCkge1xuICAgIHJlZHJhd1F1ZXVlLmRyYXdDb21tYW5kcyA9IFtyeCwgcnksIHJhZGl1cywgdGhldGEsIHJzcG90bGlnaHRdO1xuICB9XG5cbiAgZnVuY3Rpb24gZHJhd0NvbW1hbmRzKHJ4LCByeSwgcmFkaXVzLCB0aGV0YSwgcnMpIHtcbiAgICB2YXIgZHRoZXRhID0gMiAqIE1hdGguUEkgLyBjb21tYW5kcy5sZW5ndGg7XG4gICAgdmFyIHRoZXRhMSA9IE1hdGguUEkgLyAyO1xuICAgIHZhciB0aGV0YTIgPSB0aGV0YTEgKyBkdGhldGE7XG5cbiAgICB0aGV0YTEgKz0gZHRoZXRhICogYWN0aXZlQ29tbWFuZEk7XG4gICAgdGhldGEyICs9IGR0aGV0YSAqIGFjdGl2ZUNvbW1hbmRJO1xuXG4gICAgYzJkLmZpbGxTdHlsZSA9IG9wdGlvbnMuYWN0aXZlRmlsbENvbG9yO1xuICAgIGMyZC5zdHJva2VTdHlsZSA9ICdibGFjayc7XG4gICAgYzJkLmxpbmVXaWR0aCA9IDE7XG4gICAgYzJkLmJlZ2luUGF0aCgpO1xuICAgIGMyZC5tb3ZlVG8ocmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcpO1xuICAgIGMyZC5hcmMocmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcsIHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZywgMiAqIE1hdGguUEkgLSB0aGV0YTEsIDIgKiBNYXRoLlBJIC0gdGhldGEyLCB0cnVlKTtcbiAgICBjMmQuY2xvc2VQYXRoKCk7XG4gICAgYzJkLmZpbGwoKTtcblxuICAgIGMyZC5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgIGMyZC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnZGVzdGluYXRpb24tb3V0JztcblxuICAgIHZhciB0eCA9IHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZyArIHJ4IC8gcmFkaXVzICogKHJzICsgb3B0aW9ucy5zcG90bGlnaHRQYWRkaW5nIC0gb3B0aW9ucy5pbmRpY2F0b3JTaXplIC8gNCk7XG4gICAgdmFyIHR5ID0gcmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nICsgcnkgLyByYWRpdXMgKiAocnMgKyBvcHRpb25zLnNwb3RsaWdodFBhZGRpbmcgLSBvcHRpb25zLmluZGljYXRvclNpemUgLyA0KTtcbiAgICB2YXIgcm90ID0gTWF0aC5QSSAvIDQgLSB0aGV0YTtcblxuICAgIGMyZC50cmFuc2xhdGUodHgsIHR5KTtcbiAgICBjMmQucm90YXRlKHJvdCk7XG5cbiAgICAvLyBjbGVhciB0aGUgaW5kaWNhdG9yXG4gICAgLy8gVGhlIGluZGljYXRvciBzaXplIChhcnJvdykgZGVwZW5kcyBvbiB0aGUgbm9kZSBzaXplIGFzIHdlbGwuIElmIHRoZSBpbmRpY2F0b3Igc2l6ZSBpcyBiaWdnZXIgYW5kIHRoZSByZW5kZXJlZCBub2RlIHNpemUgKyBwYWRkaW5nLCBcbiAgICAvLyB1c2UgdGhlIHJlbmRlcmVkIG5vZGUgc2l6ZSArIHBhZGRpbmcgYXMgdGhlIGluZGljYXRvciBzaXplLlxuICAgIHZhciBpbmRpY2F0b3JTaXplID0gb3B0aW9ucy5pbmRpY2F0b3JTaXplID4gcnMgKyBvcHRpb25zLnNwb3RsaWdodFBhZGRpbmcgPyBycyArIG9wdGlvbnMuc3BvdGxpZ2h0UGFkZGluZyA6IG9wdGlvbnMuaW5kaWNhdG9yU2l6ZTtcbiAgICBjMmQuYmVnaW5QYXRoKCk7XG4gICAgYzJkLmZpbGxSZWN0KC1pbmRpY2F0b3JTaXplIC8gMiwgLWluZGljYXRvclNpemUgLyAyLCBpbmRpY2F0b3JTaXplLCBpbmRpY2F0b3JTaXplKTtcbiAgICBjMmQuY2xvc2VQYXRoKCk7XG4gICAgYzJkLmZpbGwoKTtcblxuICAgIGMyZC5yb3RhdGUoLXJvdCk7XG4gICAgYzJkLnRyYW5zbGF0ZSgtdHgsIC10eSk7XG5cbiAgICAvLyBjMmQuc2V0VHJhbnNmb3JtKCAxLCAwLCAwLCAxLCAwLCAwICk7XG5cbiAgICAvLyBjbGVhciB0aGUgc3BvdGxpZ2h0XG4gICAgYzJkLmJlZ2luUGF0aCgpO1xuICAgIGMyZC5hcmMocmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcsIHJzICsgb3B0aW9ucy5zcG90bGlnaHRQYWRkaW5nLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7XG4gICAgYzJkLmNsb3NlUGF0aCgpO1xuICAgIGMyZC5maWxsKCk7XG5cbiAgICBjMmQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZVBpeGVsUmF0aW8oKSB7XG4gICAgdmFyIHB4ciA9IGdldFBpeGVsUmF0aW8oKTtcbiAgICB2YXIgdyA9IGNvbnRhaW5lclNpemU7XG4gICAgdmFyIGggPSBjb250YWluZXJTaXplO1xuXG4gICAgY2FudmFzLndpZHRoID0gdyAqIHB4cjtcbiAgICBjYW52YXMuaGVpZ2h0ID0gaCAqIHB4cjtcblxuICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9IHcgKyAncHgnO1xuICAgIGNhbnZhcy5zdHlsZS5oZWlnaHQgPSBoICsgJ3B4JztcblxuICAgIGMyZC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7XG4gICAgYzJkLnNjYWxlKHB4ciwgcHhyKTtcbiAgfVxuXG4gIHZhciByZWRyYXdpbmcgPSB0cnVlO1xuICB2YXIgcmVkcmF3UXVldWUgPSB7fTtcblxuICB2YXIgcmFmID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IGZ1bmN0aW9uIChmbikge1xuICAgIHJldHVybiBzZXRUaW1lb3V0KGZuLCAxNik7XG4gIH07XG5cbiAgdmFyIHJlZHJhdyA9IGZ1bmN0aW9uIHJlZHJhdygpIHtcbiAgICBpZiAocmVkcmF3UXVldWUuZHJhd0JnKSB7XG4gICAgICBkcmF3QmcuYXBwbHkobnVsbCwgcmVkcmF3UXVldWUuZHJhd0JnKTtcbiAgICB9XG5cbiAgICBpZiAocmVkcmF3UXVldWUuZHJhd0NvbW1hbmRzKSB7XG4gICAgICBkcmF3Q29tbWFuZHMuYXBwbHkobnVsbCwgcmVkcmF3UXVldWUuZHJhd0NvbW1hbmRzKTtcbiAgICB9XG5cbiAgICByZWRyYXdRdWV1ZSA9IHt9O1xuXG4gICAgaWYgKHJlZHJhd2luZykge1xuICAgICAgcmFmKHJlZHJhdyk7XG4gICAgfVxuICB9O1xuXG4gIC8vIGtpY2sgb2ZmXG4gIHVwZGF0ZVBpeGVsUmF0aW8oKTtcbiAgcmVkcmF3KCk7XG5cbiAgdmFyIGN0cnggPSB2b2lkIDAsXG4gICAgICBjdHJ5ID0gdm9pZCAwLFxuICAgICAgcnMgPSB2b2lkIDA7XG5cbiAgdmFyIGJpbmRpbmdzID0ge1xuICAgIG9uOiBmdW5jdGlvbiBvbihldmVudHMsIHNlbGVjdG9yLCBmbikge1xuXG4gICAgICB2YXIgX2ZuID0gZm47XG4gICAgICBpZiAoc2VsZWN0b3IgPT09ICdjb3JlJykge1xuICAgICAgICBfZm4gPSBmdW5jdGlvbiBfZm4oZSkge1xuICAgICAgICAgIGlmIChlLmN5VGFyZ2V0ID09PSBjeSB8fCBlLnRhcmdldCA9PT0gY3kpIHtcbiAgICAgICAgICAgIC8vIG9ubHkgaWYgZXZlbnQgdGFyZ2V0IGlzIGRpcmVjdGx5IGNvcmVcbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBbZV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgZGF0YS5oYW5kbGVycy5wdXNoKHtcbiAgICAgICAgZXZlbnRzOiBldmVudHMsXG4gICAgICAgIHNlbGVjdG9yOiBzZWxlY3RvcixcbiAgICAgICAgZm46IF9mblxuICAgICAgfSk7XG5cbiAgICAgIGlmIChzZWxlY3RvciA9PT0gJ2NvcmUnKSB7XG4gICAgICAgIGN5Lm9uKGV2ZW50cywgX2ZuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN5Lm9uKGV2ZW50cywgc2VsZWN0b3IsIF9mbik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVycygpIHtcbiAgICB2YXIgZ3JhYmJhYmxlID0gdm9pZCAwO1xuICAgIHZhciBpbkdlc3R1cmUgPSBmYWxzZTtcbiAgICB2YXIgZHJhZ0hhbmRsZXIgPSB2b2lkIDA7XG4gICAgdmFyIHpvb21FbmFibGVkID0gdm9pZCAwO1xuICAgIHZhciBwYW5FbmFibGVkID0gdm9pZCAwO1xuICAgIHZhciBib3hFbmFibGVkID0gdm9pZCAwO1xuICAgIHZhciBnZXN0dXJlU3RhcnRFdmVudCA9IHZvaWQgMDtcblxuICAgIHZhciByZXN0b3JlWm9vbSA9IGZ1bmN0aW9uIHJlc3RvcmVab29tKCkge1xuICAgICAgaWYgKHpvb21FbmFibGVkKSB7XG4gICAgICAgIGN5LnVzZXJab29taW5nRW5hYmxlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHJlc3RvcmVHcmFiID0gZnVuY3Rpb24gcmVzdG9yZUdyYWIoKSB7XG4gICAgICBpZiAoZ3JhYmJhYmxlKSB7XG4gICAgICAgIHRhcmdldC5ncmFiaWZ5KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciByZXN0b3JlUGFuID0gZnVuY3Rpb24gcmVzdG9yZVBhbigpIHtcbiAgICAgIGlmIChwYW5FbmFibGVkKSB7XG4gICAgICAgIGN5LnVzZXJQYW5uaW5nRW5hYmxlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHJlc3RvcmVCb3hTZWxuID0gZnVuY3Rpb24gcmVzdG9yZUJveFNlbG4oKSB7XG4gICAgICBpZiAoYm94RW5hYmxlZCkge1xuICAgICAgICBjeS5ib3hTZWxlY3Rpb25FbmFibGVkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgcmVzdG9yZUdlc3R1cmVzID0gZnVuY3Rpb24gcmVzdG9yZUdlc3R1cmVzKCkge1xuICAgICAgcmVzdG9yZUdyYWIoKTtcbiAgICAgIHJlc3RvcmVab29tKCk7XG4gICAgICByZXN0b3JlUGFuKCk7XG4gICAgICByZXN0b3JlQm94U2VsbigpO1xuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlUGl4ZWxSYXRpbyk7XG5cbiAgICBiaW5kaW5ncy5vbigncmVzaXplJywgZnVuY3Rpb24gKCkge1xuICAgICAgdXBkYXRlUGl4ZWxSYXRpbygpO1xuICAgIH0pLm9uKG9wdGlvbnMub3Blbk1lbnVFdmVudHMsIG9wdGlvbnMuc2VsZWN0b3IsIGZ1bmN0aW9uIChlKSB7XG4gICAgICB0YXJnZXQgPSB0aGlzOyAvLyBSZW1lbWJlciB3aGljaCBub2RlIHRoZSBjb250ZXh0IG1lbnUgaXMgZm9yXG4gICAgICB2YXIgZWxlID0gdGhpcztcbiAgICAgIHZhciBpc0N5ID0gdGhpcyA9PT0gY3k7XG5cbiAgICAgIGlmIChpbkdlc3R1cmUpIHtcbiAgICAgICAgcGFyZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cbiAgICAgICAgaW5HZXN0dXJlID0gZmFsc2U7XG5cbiAgICAgICAgcmVzdG9yZUdlc3R1cmVzKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5jb21tYW5kcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YXIgcmVzID0gb3B0aW9ucy5jb21tYW5kcyh0YXJnZXQpO1xuICAgICAgICBpZiAocmVzLnRoZW4pIHtcbiAgICAgICAgICByZXMudGhlbihmdW5jdGlvbiAoX2NvbW1hbmRzKSB7XG4gICAgICAgICAgICBjb21tYW5kcyA9IF9jb21tYW5kcztcbiAgICAgICAgICAgIG9wZW5NZW51KCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZHMgPSByZXM7XG4gICAgICAgICAgb3Blbk1lbnUoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tbWFuZHMgPSBvcHRpb25zLmNvbW1hbmRzO1xuICAgICAgICBvcGVuTWVudSgpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBvcGVuTWVudSgpIHtcbiAgICAgICAgaWYgKCFjb21tYW5kcyB8fCBjb21tYW5kcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB6b29tRW5hYmxlZCA9IGN5LnVzZXJab29taW5nRW5hYmxlZCgpO1xuICAgICAgICBjeS51c2VyWm9vbWluZ0VuYWJsZWQoZmFsc2UpO1xuXG4gICAgICAgIHBhbkVuYWJsZWQgPSBjeS51c2VyUGFubmluZ0VuYWJsZWQoKTtcbiAgICAgICAgY3kudXNlclBhbm5pbmdFbmFibGVkKGZhbHNlKTtcblxuICAgICAgICBib3hFbmFibGVkID0gY3kuYm94U2VsZWN0aW9uRW5hYmxlZCgpO1xuICAgICAgICBjeS5ib3hTZWxlY3Rpb25FbmFibGVkKGZhbHNlKTtcblxuICAgICAgICBncmFiYmFibGUgPSB0YXJnZXQuZ3JhYmJhYmxlICYmIHRhcmdldC5ncmFiYmFibGUoKTtcbiAgICAgICAgaWYgKGdyYWJiYWJsZSkge1xuICAgICAgICAgIHRhcmdldC51bmdyYWJpZnkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBycCA9IHZvaWQgMCxcbiAgICAgICAgICAgIHJ3ID0gdm9pZCAwLFxuICAgICAgICAgICAgcmggPSB2b2lkIDAsXG4gICAgICAgICAgICBycyA9IHZvaWQgMDtcbiAgICAgICAgaWYgKCFpc0N5ICYmIGVsZSAmJiBlbGUuaXNOb2RlIGluc3RhbmNlb2YgRnVuY3Rpb24gJiYgZWxlLmlzTm9kZSgpICYmICFlbGUuaXNQYXJlbnQoKSAmJiAhb3B0aW9ucy5hdE1vdXNlKSB7XG4gICAgICAgICAgLy8gSWYgaXQncyBhIG5vZGUsIHRoZSBkZWZhdWx0IHNwb3RsaWdodCByYWRpdXMgZm9yIGEgbm9kZSBpcyB0aGUgbm9kZSB3aWR0aFxuICAgICAgICAgIHJwID0gZWxlLnJlbmRlcmVkUG9zaXRpb24oKTtcbiAgICAgICAgICBydyA9IGVsZS5yZW5kZXJlZE91dGVyV2lkdGgoKTtcbiAgICAgICAgICByaCA9IGVsZS5yZW5kZXJlZE91dGVySGVpZ2h0KCk7XG4gICAgICAgICAgcnMgPSBydyAvIDI7XG4gICAgICAgICAgLy8gSWYgYWRhcHRhdGl2ZU5vZGVzcG90bGlnaHRSYWRpdXMgaXMgbm90IGVuYWJsZWQgYW5kIG1pbnxtYXhTcG90bGlnaHJSYWRpdXMgaXMgZGVmaW5lZCwgdXNlIHRob3NlIGluc3RlYWRcbiAgICAgICAgICBycyA9ICFvcHRpb25zLmFkYXB0YXRpdmVOb2RlU3BvdGxpZ2h0UmFkaXVzICYmIG9wdGlvbnMubWluU3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5tYXgocnMsIG9wdGlvbnMubWluU3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgICAgIHJzID0gIW9wdGlvbnMuYWRhcHRhdGl2ZU5vZGVTcG90bGlnaHRSYWRpdXMgJiYgb3B0aW9ucy5tYXhTcG90bGlnaHRSYWRpdXMgPyBNYXRoLm1pbihycywgb3B0aW9ucy5tYXhTcG90bGlnaHRSYWRpdXMpIDogcnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgaXQncyB0aGUgYmFja2dyb3VuZCBvciBhbiBlZGdlLCB0aGUgc3BvdGxpZ2h0IHJhZGl1cyBpcyB0aGUgbWlufG1heFNwb3RsaWdodFJhZGl1c1xuICAgICAgICAgIHJwID0gZS5yZW5kZXJlZFBvc2l0aW9uIHx8IGUuY3lSZW5kZXJlZFBvc2l0aW9uO1xuICAgICAgICAgIHJ3ID0gMTtcbiAgICAgICAgICByaCA9IDE7XG4gICAgICAgICAgcnMgPSBydyAvIDI7XG4gICAgICAgICAgcnMgPSBvcHRpb25zLm1pblNwb3RsaWdodFJhZGl1cyA/IE1hdGgubWF4KHJzLCBvcHRpb25zLm1pblNwb3RsaWdodFJhZGl1cykgOiBycztcbiAgICAgICAgICBycyA9IG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5taW4ocnMsIG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgICB9XG5cbiAgICAgICAgb2Zmc2V0ID0gZ2V0T2Zmc2V0KGNvbnRhaW5lcik7XG5cbiAgICAgICAgY3RyeCA9IHJwLng7XG4gICAgICAgIGN0cnkgPSBycC55O1xuICAgICAgICByID0gcncgLyAyICsgKG9wdGlvbnMubWVudVJhZGl1cyBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gb3B0aW9ucy5tZW51UmFkaXVzKHRhcmdldCkgOiBOdW1iZXIob3B0aW9ucy5tZW51UmFkaXVzKSk7XG4gICAgICAgIGNvbnRhaW5lclNpemUgPSAociArIG9wdGlvbnMuYWN0aXZlUGFkZGluZykgKiAyO1xuICAgICAgICB1cGRhdGVQaXhlbFJhdGlvKCk7XG5cbiAgICAgICAgc2V0U3R5bGVzKHBhcmVudCwge1xuICAgICAgICAgIHdpZHRoOiBjb250YWluZXJTaXplICsgJ3B4JyxcbiAgICAgICAgICBoZWlnaHQ6IGNvbnRhaW5lclNpemUgKyAncHgnLFxuICAgICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgICAgbGVmdDogcnAueCAtIHIgKyAncHgnLFxuICAgICAgICAgIHRvcDogcnAueSAtIHIgKyAncHgnXG4gICAgICAgIH0pO1xuICAgICAgICBjcmVhdGVNZW51SXRlbXMociwgcnMpO1xuICAgICAgICBxdWV1ZURyYXdCZyhyLCBycyk7XG5cbiAgICAgICAgYWN0aXZlQ29tbWFuZEkgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaW5HZXN0dXJlID0gdHJ1ZTtcbiAgICAgICAgZ2VzdHVyZVN0YXJ0RXZlbnQgPSBlO1xuICAgICAgfVxuICAgIH0pLm9uKCdjeHRkcmFnIHRhcGRyYWcnLCBvcHRpb25zLnNlbGVjdG9yLCBkcmFnSGFuZGxlciA9IGZ1bmN0aW9uIGRyYWdIYW5kbGVyKGUpIHtcblxuICAgICAgaWYgKCFpbkdlc3R1cmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOyAvLyBPdGhlcndpc2UsIG9uIG1vYmlsZSwgdGhlIHB1bGwtZG93biByZWZyZXNoIGdlc3R1cmUgZ2V0cyBhY3RpdmF0ZWRcblxuICAgICAgdmFyIG9yaWdFID0gZS5vcmlnaW5hbEV2ZW50O1xuICAgICAgdmFyIGlzVG91Y2ggPSBvcmlnRS50b3VjaGVzICYmIG9yaWdFLnRvdWNoZXMubGVuZ3RoID4gMDtcblxuICAgICAgdmFyIHBhZ2VYID0gKGlzVG91Y2ggPyBvcmlnRS50b3VjaGVzWzBdLnBhZ2VYIDogb3JpZ0UucGFnZVgpIC0gd2luZG93LnBhZ2VYT2Zmc2V0O1xuICAgICAgdmFyIHBhZ2VZID0gKGlzVG91Y2ggPyBvcmlnRS50b3VjaGVzWzBdLnBhZ2VZIDogb3JpZ0UucGFnZVkpIC0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuXG4gICAgICBhY3RpdmVDb21tYW5kSSA9IHVuZGVmaW5lZDtcblxuICAgICAgdmFyIGR4ID0gcGFnZVggLSBvZmZzZXQubGVmdCAtIGN0cng7XG4gICAgICB2YXIgZHkgPSBwYWdlWSAtIG9mZnNldC50b3AgLSBjdHJ5O1xuXG4gICAgICBpZiAoZHggPT09IDApIHtcbiAgICAgICAgZHggPSAwLjAxO1xuICAgICAgfVxuXG4gICAgICB2YXIgZCA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gICAgICB2YXIgY29zVGhldGEgPSAoZHkgKiBkeSAtIGQgKiBkIC0gZHggKiBkeCkgLyAoLTIgKiBkICogZHgpO1xuICAgICAgdmFyIHRoZXRhID0gTWF0aC5hY29zKGNvc1RoZXRhKTtcblxuICAgICAgdmFyIHJ3ID0gdm9pZCAwO1xuICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuaXNOb2RlIGluc3RhbmNlb2YgRnVuY3Rpb24gJiYgdGFyZ2V0LmlzTm9kZSgpICYmICF0YXJnZXQuaXNQYXJlbnQoKSAmJiAhb3B0aW9ucy5hdE1vdXNlKSB7XG4gICAgICAgIC8vIElmIGl0J3MgYSBub2RlLCB0aGUgZGVmYXVsdCBzcG90bGlnaHQgcmFkaXVzIGZvciBhIG5vZGUgaXMgdGhlIG5vZGUgd2lkdGhcbiAgICAgICAgcncgPSB0YXJnZXQucmVuZGVyZWRPdXRlcldpZHRoKCk7XG4gICAgICAgIHJzID0gcncgLyAyO1xuICAgICAgICAvLyBJZiBhZGFwdGF0aXZlTm9kZXNwb3RsaWdodFJhZGl1cyBpcyBub3QgZW5hYmxlZCBhbmQgbWlufG1heFNwb3RsaWdoclJhZGl1cyBpcyBkZWZpbmVkLCB1c2UgdGhvc2UgaW5zdGVhZFxuICAgICAgICBycyA9ICFvcHRpb25zLmFkYXB0YXRpdmVOb2RlU3BvdGxpZ2h0UmFkaXVzICYmIG9wdGlvbnMubWluU3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5tYXgocnMsIG9wdGlvbnMubWluU3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgICBycyA9ICFvcHRpb25zLmFkYXB0YXRpdmVOb2RlU3BvdGxpZ2h0UmFkaXVzICYmIG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5taW4ocnMsIG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgaXQncyB0aGUgYmFja2dyb3VuZCBvciBhbiBlZGdlLCB0aGUgc3BvdGxpZ2h0IHJhZGl1cyBpcyB0aGUgbWlufG1heFNwb3RsaWdodFJhZGl1c1xuICAgICAgICBydyA9IDE7XG4gICAgICAgIHJzID0gcncgLyAyO1xuICAgICAgICBycyA9IG9wdGlvbnMubWluU3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5tYXgocnMsIG9wdGlvbnMubWluU3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgICBycyA9IG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5taW4ocnMsIG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgfVxuXG4gICAgICByID0gcncgLyAyICsgKG9wdGlvbnMubWVudVJhZGl1cyBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gb3B0aW9ucy5tZW51UmFkaXVzKHRhcmdldCkgOiBOdW1iZXIob3B0aW9ucy5tZW51UmFkaXVzKSk7XG4gICAgICBpZiAoZCA8IHJzICsgb3B0aW9ucy5zcG90bGlnaHRQYWRkaW5nIHx8IHR5cGVvZiBvcHRpb25zLm91dHNpZGVNZW51Q2FuY2VsID09PSBcIm51bWJlclwiICYmIGQgPiByICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nICsgb3B0aW9ucy5vdXRzaWRlTWVudUNhbmNlbCkge1xuICAgICAgICAvL1xuXG4gICAgICAgIHF1ZXVlRHJhd0JnKHIsIHJzKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcXVldWVEcmF3QmcociwgcnMpO1xuXG4gICAgICB2YXIgcnggPSBkeCAqIHIgLyBkO1xuICAgICAgdmFyIHJ5ID0gZHkgKiByIC8gZDtcblxuICAgICAgaWYgKGR5ID4gMCkge1xuICAgICAgICB0aGV0YSA9IE1hdGguUEkgKyBNYXRoLmFicyh0aGV0YSAtIE1hdGguUEkpO1xuICAgICAgfVxuXG4gICAgICB2YXIgZHRoZXRhID0gMiAqIE1hdGguUEkgLyBjb21tYW5kcy5sZW5ndGg7XG4gICAgICB2YXIgdGhldGExID0gTWF0aC5QSSAvIDI7XG4gICAgICB2YXIgdGhldGEyID0gdGhldGExICsgZHRoZXRhO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbW1hbmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjb21tYW5kID0gY29tbWFuZHNbaV07XG5cbiAgICAgICAgdmFyIGluVGhpc0NvbW1hbmQgPSB0aGV0YTEgPD0gdGhldGEgJiYgdGhldGEgPD0gdGhldGEyIHx8IHRoZXRhMSA8PSB0aGV0YSArIDIgKiBNYXRoLlBJICYmIHRoZXRhICsgMiAqIE1hdGguUEkgPD0gdGhldGEyO1xuXG4gICAgICAgIGlmIChjb21tYW5kLmRpc2FibGVkID09PSB0cnVlIHx8IGNvbW1hbmQuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpblRoaXNDb21tYW5kID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5UaGlzQ29tbWFuZCkge1xuICAgICAgICAgIGFjdGl2ZUNvbW1hbmRJID0gaTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoZXRhMSArPSBkdGhldGE7XG4gICAgICAgIHRoZXRhMiArPSBkdGhldGE7XG4gICAgICB9XG4gICAgICBxdWV1ZURyYXdDb21tYW5kcyhyeCwgcnksIHIsIHRoZXRhLCBycyk7XG4gICAgfSkub24oJ3RhcGRyYWcnLCBkcmFnSGFuZGxlcikub24oJ2N4dHRhcGVuZCB0YXBlbmQnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgcGFyZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICBpZiAoYWN0aXZlQ29tbWFuZEkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YXIgc2VsZWN0ID0gY29tbWFuZHNbYWN0aXZlQ29tbWFuZEldLnNlbGVjdDtcblxuICAgICAgICBpZiAoc2VsZWN0KSB7XG4gICAgICAgICAgc2VsZWN0LmFwcGx5KHRhcmdldCwgW3RhcmdldCwgZ2VzdHVyZVN0YXJ0RXZlbnQsIGVdKTtcbiAgICAgICAgICBhY3RpdmVDb21tYW5kSSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpbkdlc3R1cmUgPSBmYWxzZTtcblxuICAgICAgcmVzdG9yZUdlc3R1cmVzKCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVycygpIHtcbiAgICB2YXIgaGFuZGxlcnMgPSBkYXRhLmhhbmRsZXJzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYW5kbGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGggPSBoYW5kbGVyc1tpXTtcblxuICAgICAgaWYgKGguc2VsZWN0b3IgPT09ICdjb3JlJykge1xuICAgICAgICBjeS5vZmYoaC5ldmVudHMsIGguZm4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3kub2ZmKGguZXZlbnRzLCBoLnNlbGVjdG9yLCBoLmZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlUGl4ZWxSYXRpbyk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95SW5zdGFuY2UoKSB7XG4gICAgcmVkcmF3aW5nID0gZmFsc2U7XG5cbiAgICByZW1vdmVFdmVudExpc3RlbmVycygpO1xuXG4gICAgd3JhcHBlci5yZW1vdmUoKTtcbiAgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgZGVzdHJveUluc3RhbmNlKCk7XG4gICAgfVxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjeHRtZW51O1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLy8gU2ltcGxlLCBpbnRlcm5hbCBPYmplY3QuYXNzaWduKCkgcG9seWZpbGwgZm9yIG9wdGlvbnMgb2JqZWN0cyBldGMuXG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmFzc2lnbiAhPSBudWxsID8gT2JqZWN0LmFzc2lnbi5iaW5kKE9iamVjdCkgOiBmdW5jdGlvbiAodGd0KSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzcmNzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHNyY3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgc3Jjcy5maWx0ZXIoZnVuY3Rpb24gKHNyYykge1xuICAgIHJldHVybiBzcmMgIT0gbnVsbDtcbiAgfSkuZm9yRWFjaChmdW5jdGlvbiAoc3JjKSB7XG4gICAgT2JqZWN0LmtleXMoc3JjKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICByZXR1cm4gdGd0W2tdID0gc3JjW2tdO1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gdGd0O1xufTtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgbWVudVJhZGl1czogZnVuY3Rpb24gbWVudVJhZGl1cyhlbGUpIHtcbiAgICByZXR1cm4gMTAwO1xuICB9LCAvLyB0aGUgcmFkaXVzIG9mIHRoZSBjaXJjdWxhciBtZW51IGluIHBpeGVsc1xuICBzZWxlY3RvcjogJ25vZGUnLCAvLyBlbGVtZW50cyBtYXRjaGluZyB0aGlzIEN5dG9zY2FwZS5qcyBzZWxlY3RvciB3aWxsIHRyaWdnZXIgY3h0bWVudXNcbiAgY29tbWFuZHM6IFsvLyBhbiBhcnJheSBvZiBjb21tYW5kcyB0byBsaXN0IGluIHRoZSBtZW51IG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBhcnJheVxuICAgIC8qXG4gICAgeyAvLyBleGFtcGxlIGNvbW1hbmRcbiAgICAgIGZpbGxDb2xvcjogJ3JnYmEoMjAwLCAyMDAsIDIwMCwgMC43NSknLCAvLyBvcHRpb25hbDogY3VzdG9tIGJhY2tncm91bmQgY29sb3IgZm9yIGl0ZW1cbiAgICAgIGNvbnRlbnQ6ICdhIGNvbW1hbmQgbmFtZScgLy8gaHRtbC90ZXh0IGNvbnRlbnQgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBtZW51XG4gICAgICBjb250ZW50U3R5bGU6IHt9LCAvLyBjc3Mga2V5OnZhbHVlIHBhaXJzIHRvIHNldCB0aGUgY29tbWFuZCdzIGNzcyBpbiBqcyBpZiB5b3Ugd2FudFxuICAgICAgc2VsZWN0OiBmdW5jdGlvbihlbGUpeyAvLyBhIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgd2hlbiB0aGUgY29tbWFuZCBpcyBzZWxlY3RlZFxuICAgICAgICBjb25zb2xlLmxvZyggZWxlLmlkKCkgKSAvLyBgZWxlYCBob2xkcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUgZWxlbWVudFxuICAgICAgfSxcbiAgICAgIGVuYWJsZWQ6IHRydWUgLy8gd2hldGhlciB0aGUgY29tbWFuZCBpcyBzZWxlY3RhYmxlXG4gICAgfVxuICAgICovXG4gIF0sIC8vIGZ1bmN0aW9uKCBlbGUgKXsgcmV0dXJuIFsgLyouLi4qLyBdIH0sIC8vIGV4YW1wbGUgZnVuY3Rpb24gZm9yIGNvbW1hbmRzXG4gIGZpbGxDb2xvcjogJ3JnYmEoMCwgMCwgMCwgMC43NSknLCAvLyB0aGUgYmFja2dyb3VuZCBjb2xvdXIgb2YgdGhlIG1lbnVcbiAgYWN0aXZlRmlsbENvbG9yOiAncmdiYSgxLCAxMDUsIDIxNywgMC43NSknLCAvLyB0aGUgY29sb3VyIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHNlbGVjdGVkIGNvbW1hbmRcbiAgYWN0aXZlUGFkZGluZzogMjAsIC8vIGFkZGl0aW9uYWwgc2l6ZSBpbiBwaXhlbHMgZm9yIHRoZSBhY3RpdmUgY29tbWFuZFxuICBpbmRpY2F0b3JTaXplOiAyNCwgLy8gdGhlIHNpemUgaW4gcGl4ZWxzIG9mIHRoZSBwb2ludGVyIHRvIHRoZSBhY3RpdmUgY29tbWFuZCwgd2lsbCBkZWZhdWx0IHRvIHRoZSBub2RlIHNpemUgaWYgdGhlIG5vZGUgc2l6ZSBpcyBzbWFsbGVyIHRoYW4gdGhlIGluZGljYXRvciBzaXplLCBcbiAgc2VwYXJhdG9yV2lkdGg6IDMsIC8vIHRoZSBlbXB0eSBzcGFjaW5nIGluIHBpeGVscyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgY29tbWFuZHNcbiAgc3BvdGxpZ2h0UGFkZGluZzogNCwgLy8gZXh0cmEgc3BhY2luZyBpbiBwaXhlbHMgYmV0d2VlbiB0aGUgZWxlbWVudCBhbmQgdGhlIHNwb3RsaWdodFxuICBhZGFwdGF0aXZlTm9kZVNwb3RsaWdodFJhZGl1czogZmFsc2UsIC8vIHNwZWNpZnkgd2hldGhlciB0aGUgc3BvdGxpZ2h0IHJhZGl1cyBzaG91bGQgYWRhcHQgdG8gdGhlIG5vZGUgc2l6ZVxuICBtaW5TcG90bGlnaHRSYWRpdXM6IDI0LCAvLyB0aGUgbWluaW11bSByYWRpdXMgaW4gcGl4ZWxzIG9mIHRoZSBzcG90bGlnaHQgKGlnbm9yZWQgZm9yIHRoZSBub2RlIGlmIGFkYXB0YXRpdmVOb2RlU3BvdGxpZ2h0UmFkaXVzIGlzIGVuYWJsZWQgYnV0IHN0aWxsIHVzZWQgZm9yIHRoZSBlZGdlICYgYmFja2dyb3VuZClcbiAgbWF4U3BvdGxpZ2h0UmFkaXVzOiAzOCwgLy8gdGhlIG1heGltdW0gcmFkaXVzIGluIHBpeGVscyBvZiB0aGUgc3BvdGxpZ2h0IChpZ25vcmVkIGZvciB0aGUgbm9kZSBpZiBhZGFwdGF0aXZlTm9kZVNwb3RsaWdodFJhZGl1cyBpcyBlbmFibGVkIGJ1dCBzdGlsbCB1c2VkIGZvciB0aGUgZWRnZSAmIGJhY2tncm91bmQpXG4gIG9wZW5NZW51RXZlbnRzOiAnY3h0dGFwc3RhcnQgdGFwaG9sZCcsIC8vIHNwYWNlLXNlcGFyYXRlZCBjeXRvc2NhcGUgZXZlbnRzIHRoYXQgd2lsbCBvcGVuIHRoZSBtZW51OyBvbmx5IGBjeHR0YXBzdGFydGAgYW5kL29yIGB0YXBob2xkYCB3b3JrIGhlcmVcbiAgaXRlbUNvbG9yOiAnd2hpdGUnLCAvLyB0aGUgY29sb3VyIG9mIHRleHQgaW4gdGhlIGNvbW1hbmQncyBjb250ZW50XG4gIGl0ZW1UZXh0U2hhZG93Q29sb3I6ICd0cmFuc3BhcmVudCcsIC8vIHRoZSB0ZXh0IHNoYWRvdyBjb2xvdXIgb2YgdGhlIGNvbW1hbmQncyBjb250ZW50XG4gIHpJbmRleDogOTk5OSwgLy8gdGhlIHotaW5kZXggb2YgdGhlIHVpIGRpdlxuICBhdE1vdXNlOiBmYWxzZSwgLy8gZHJhdyBtZW51IGF0IG1vdXNlIHBvc2l0aW9uXG4gIG91dHNpZGVNZW51Q2FuY2VsOiBmYWxzZSAvLyBpZiBzZXQgdG8gYSBudW1iZXIsIHRoaXMgd2lsbCBjYW5jZWwgdGhlIGNvbW1hbmQgaWYgdGhlIHBvaW50ZXIgaXMgcmVsZWFzZWQgb3V0c2lkZSBvZiB0aGUgc3BvdGxpZ2h0LCBwYWRkZWQgYnkgdGhlIG51bWJlciBnaXZlblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0cztcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciByZW1vdmVFbGVzID0gZnVuY3Rpb24gcmVtb3ZlRWxlcyhxdWVyeSkge1xuICB2YXIgYW5jZXN0b3IgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGRvY3VtZW50O1xuXG4gIHZhciBlbHMgPSBhbmNlc3Rvci5xdWVyeVNlbGVjdG9yQWxsKHF1ZXJ5KTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVscy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbCA9IGVsc1tpXTtcblxuICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpO1xuICB9XG59O1xuXG52YXIgc2V0U3R5bGVzID0gZnVuY3Rpb24gc2V0U3R5bGVzKGVsLCBzdHlsZSkge1xuICB2YXIgcHJvcHMgPSBPYmplY3Qua2V5cyhzdHlsZSk7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBwcm9wcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBlbC5zdHlsZVtwcm9wc1tpXV0gPSBzdHlsZVtwcm9wc1tpXV07XG4gIH1cbn07XG5cbnZhciBjcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gY3JlYXRlRWxlbWVudChvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQob3B0aW9ucy50YWcgfHwgJ2RpdicpO1xuXG4gIGVsLmNsYXNzTmFtZSA9IG9wdGlvbnMuY2xhc3MgfHwgJyc7XG5cbiAgaWYgKG9wdGlvbnMuc3R5bGUpIHtcbiAgICBzZXRTdHlsZXMoZWwsIG9wdGlvbnMuc3R5bGUpO1xuICB9XG5cbiAgcmV0dXJuIGVsO1xufTtcblxudmFyIGdldFBpeGVsUmF0aW8gPSBmdW5jdGlvbiBnZXRQaXhlbFJhdGlvKCkge1xuICByZXR1cm4gd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbn07XG5cbnZhciBnZXRPZmZzZXQgPSBmdW5jdGlvbiBnZXRPZmZzZXQoZWwpIHtcbiAgdmFyIG9mZnNldCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gIHJldHVybiB7XG4gICAgbGVmdDogb2Zmc2V0LmxlZnQgKyBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgKyBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSlbJ3BhZGRpbmctbGVmdCddKSArIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KVsnYm9yZGVyLWxlZnQtd2lkdGgnXSksXG4gICAgdG9wOiBvZmZzZXQudG9wICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgKyBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSlbJ3BhZGRpbmctdG9wJ10pICsgcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpWydib3JkZXItdG9wLXdpZHRoJ10pXG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHsgcmVtb3ZlRWxlczogcmVtb3ZlRWxlcywgc2V0U3R5bGVzOiBzZXRTdHlsZXMsIGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQsIGdldFBpeGVsUmF0aW86IGdldFBpeGVsUmF0aW8sIGdldE9mZnNldDogZ2V0T2Zmc2V0IH07XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgY3h0bWVudSA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcbnZhciByZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyKGN5dG9zY2FwZSkge1xuICBpZiAoIWN5dG9zY2FwZSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBjYW4ndCByZWdpc3RlciBpZiBjeXRvc2NhcGUgdW5zcGVjaWZpZWRcblxuICBjeXRvc2NhcGUoJ2NvcmUnLCAnY3h0bWVudScsIGN4dG1lbnUpOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYgKHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKGN5dG9zY2FwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXI7XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsbnVsbCwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgICBpbXBvcnQge05vZGVDb2xsZWN0aW9uLCBOb2RlU2luZ3VsYXJ9IGZyb20gXCJjeXRvc2NhcGVcIjtcblxuICAgIGV4cG9ydCBsZXQgbmFtZTogc3RyaW5nO1xuICAgIGV4cG9ydCBsZXQgbm9kZXM6IE5vZGVDb2xsZWN0aW9uO1xuICAgIGV4cG9ydCBsZXQgb25DbGlja1RleHQ7XG4gICAgZXhwb3J0IGxldCBvbkNsaWNrQnV0dG9uO1xuICAgIGV4cG9ydCBsZXQgaWNvbiA9IG51bGw7XG4gICAgZXhwb3J0IGxldCBpY29uX3Rvb2x0aXAgPSBudWxsO1xuICAgIGV4cG9ydCBsZXQgY3R4bWVudTtcbiAgICBsZXQgZGlzcGxheUxpc3QgPSB0cnVlO1xuXG4gICAgbGV0IHNldERpc3BsYXlMaXN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGRpc3BsYXlMaXN0ID0gIWRpc3BsYXlMaXN0O1xuICAgIH1cbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwianVnZ2wtbGlzdC1oZWFkZXJcIiBvbjpjbGljaz17c2V0RGlzcGxheUxpc3R9PlxuICAgIHtuYW1lfVxuPC9kaXY+XG57I2lmIGRpc3BsYXlMaXN0fVxuICAgIHsjZWFjaCBub2Rlcy5zb3J0KChhLCBiKSA9PiBhLmRhdGEoXCJuYW1lXCIpLmxvY2FsZUNvbXBhcmUoYi5kYXRhKFwibmFtZVwiKSkpIGFzIHZ9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVlLWl0ZW1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVlLWl0ZW0tc2VsZiBpcy1jbGlja2FibGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZS1pdGVtLWlubmVyIGp1Z2dsLWxpc3QtdGV4dFwiIG9uOmNsaWNrPXsoZSkgPT4gb25DbGlja1RleHQodiwgZSl9XG4gICAgICAgICAgICAgICAgICAgICBvbjpjb250ZXh0bWVudT17KGUpID0+IGN0eG1lbnUodiwgZSl9XG4gICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiB7di5zdHlsZSgnYmFja2dyb3VuZC1jb2xvcicpfVwiPlxuICAgICAgICAgICAgICAgICAgICB7di5kYXRhKFwibmFtZVwiKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7I2lmIGljb259XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwianVnZ2wtYnV0dG9uIGp1Z2dsLWJ1dHRvbi1wYW5lXCIgb246Y2xpY2s9e29uQ2xpY2tCdXR0b24odil9IGFyaWEtbGFiZWw9e2ljb25fdG9vbHRpcH0gPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT0gXCJ3aWR0aDoxNHB4O2hlaWdodDoxNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPXtpY29ufSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgey9lYWNofVxuey9pZn0iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAgIGltcG9ydCB7SnVnZ2x9IGZyb20gXCIuLi92aXovdmlzdWFsaXphdGlvblwiO1xuICAgIGltcG9ydCB7Tm9kZUNvbGxlY3Rpb24sIE5vZGVTaW5ndWxhcn0gZnJvbSBcImN5dG9zY2FwZVwiO1xuICAgIGltcG9ydCBjeXRvc2NhcGUgZnJvbSBcImN5dG9zY2FwZVwiO1xuICAgIGltcG9ydCB7Q0xBU1NfSEFSRF9GSUxURVJFRH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuICAgIGltcG9ydCBOb2Rlc0xpc3QgZnJvbSBcIi4vTm9kZXNMaXN0LnN2ZWx0ZVwiO1xuICAgIGltcG9ydCB7TWVudX0gZnJvbSBcIm9ic2lkaWFuXCI7XG4gICAgaW1wb3J0IHtWaXpJZH0gZnJvbSBcImp1Z2dsLWFwaVwiO1xuICAgIGltcG9ydCB7aWNvbnN9IGZyb20gJy4uL3VpL2ljb25zJztcblxuICAgIGxldCB2aXo6IEp1Z2dsID0gbnVsbDtcbiAgICBsZXQgdmlzaWJsZTogTm9kZUNvbGxlY3Rpb24gPSBjeXRvc2NhcGUoKS5jb2xsZWN0aW9uKCk7XG4gICAgbGV0IGhpZGRlbjogTm9kZUNvbGxlY3Rpb24gPSBjeXRvc2NhcGUoKS5jb2xsZWN0aW9uKCk7XG4gICAgZXhwb3J0IGNvbnN0IHNldFZpeiA9IGZ1bmN0aW9uIChqdWdnbDogSnVnZ2wpIHtcbiAgICAgICAgaWYgKCFqdWdnbCkge1xuICAgICAgICAgICAgdml6ID0gbnVsbDtcbiAgICAgICAgICAgIHZpc2libGUgPSBjeXRvc2NhcGUoKS5jb2xsZWN0aW9uKCk7XG4gICAgICAgICAgICBoaWRkZW4gPSBjeXRvc2NhcGUoKS5jb2xsZWN0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdml6ID0ganVnZ2w7XG4gICAgICAgIC8vIFRPRE86IENhbiBwcm9iYWJseSBkbyBzb21ldGhpbmcgbGlrZSBub3QgSEFSRCBGSUxURVJFRCwgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBzdHlsaW5nLlxuICAgICAgICB2aXNpYmxlID0gdml6LnZpei5ub2RlcyhcIjp2aXNpYmxlXCIpO1xuICAgICAgICBoaWRkZW4gPSB2aXoudml6Lm5vZGVzKGAuJHtDTEFTU19IQVJEX0ZJTFRFUkVEfWApO1xuICAgIH1cbiAgICBsZXQgY3R4TWVudSA9IGZ1bmN0aW9uKG5vZGU6IE5vZGVTaW5ndWxhciwgZTogTW91c2VFdmVudCkge1xuICAgICAgICBjb25zdCBmaWxlTWVudSA9IG5ldyBNZW51KCk7IC8vIENyZWF0ZXMgZW1wdHkgZmlsZSBtZW51XG4gICAgICAgIGNvbnN0IGlkID0gVml6SWQuZnJvbU5vZGUobm9kZSk7XG4gICAgICAgIGNvbnN0IGZpbGUgPSB2aXoucGx1Z2luLm1ldGFkYXRhLmdldEZpcnN0TGlua3BhdGhEZXN0KGlkLmlkLCAnJyk7XG4gICAgICAgIGlmICghKGZpbGUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIC8vIGhvb2sgZm9yIHBsdWdpbnMgdG8gcG9wdWxhdGUgbWVudSB3aXRoIFwiZmlsZS1hd2FyZVwiIG1lbnUgaXRlbXNcbiAgICAgICAgICAgIHZpei5wbHVnaW4uYXBwLndvcmtzcGFjZS50cmlnZ2VyKCdmaWxlLW1lbnUnLCBmaWxlTWVudSwgZmlsZSwgJ215LWNvbnRleHQtbWVudScsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHZpei5tb2RlLmZpbGxNZW51KGZpbGVNZW51LCBub2RlKTtcbiAgICAgICAgZmlsZU1lbnUuc2hvd0F0UG9zaXRpb24oe3g6IGUueCwgeTogZS55fSk7XG4gICAgfVxuICAgIGxldCBjbGlja1R4dCA9IGZ1bmN0aW9uKG5vZGU6IE5vZGVTaW5ndWxhciwgZTogTW91c2VFdmVudCkge1xuICAgICAgICB2aXoucGx1Z2luLm9wZW5GaWxlRnJvbU5vZGUobm9kZSwgZS5tZXRhS2V5KTtcbiAgICB9XG4gICAgbGV0IGZpbHRlckJ1dHRvbkNsaWNrID0gZnVuY3Rpb24obm9kZTogTm9kZVNpbmd1bGFyKSB7XG4gICAgICAgIG5vZGUucmVtb3ZlQ2xhc3MoQ0xBU1NfSEFSRF9GSUxURVJFRCk7XG4gICAgICAgIHZpei5vbkdyYXBoQ2hhbmdlZCh0cnVlLCB0cnVlKTtcbiAgICB9XG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cImp1Z2dsLW5vZGVzLXBhbmVcIj5cbiAgICA8Tm9kZXNMaXN0IG5vZGVzPXt2aXNpYmxlfSBuYW1lPVwiTm9kZXMgaW4gZ3JhcGhcIiBjdHhtZW51PXtjdHhNZW51fSBvbkNsaWNrVGV4dD17Y2xpY2tUeHR9Lz5cblxuICAgIDxOb2Rlc0xpc3Qgbm9kZXM9e2hpZGRlbn0gbmFtZT1cIkhpZGRlbiBub2Rlc1wiIGN0eG1lbnU9e2N0eE1lbnV9IG9uQ2xpY2tUZXh0PXtjbGlja1R4dH0gaWNvbj17aWNvbnMuYWdfdW5oaWRlfVxuICAgIGljb25fdG9vbHRpcD1cIlNob3cgaW4gZ3JhcGhcIiBvbkNsaWNrQnV0dG9uPXtmaWx0ZXJCdXR0b25DbGlja30gLz5cbjwvZGl2PiIsbnVsbCwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgICBpbXBvcnQge1NIQVBFU30gZnJvbSBcIi4uL3Zpei9zdHlsZXNoZWV0XCI7XG4gICAgaW1wb3J0IHR5cGUge1N0eWxlR3JvdXAsIEljb24sIElKdWdnbFBsdWdpbn0gZnJvbSBcImp1Z2dsLWFwaVwiO1xuICAgIGltcG9ydCB7SWNvbk1vZGFsfSBmcm9tIFwiLi9pY29uLW1vZGFsXCI7XG4gICAgLy8gaW1wb3J0IEp1Z2dsUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XG4gICAgaW1wb3J0IHtlbXB0eVN0eWxlR3JvdXB9IGZyb20gXCIuLi9zZXR0aW5nc1wiO1xuICAgIGltcG9ydCB7aWNvbnN9IGZyb20gXCIuLi91aS9pY29uc1wiO1xuXG4gICAgZXhwb3J0IGxldCBncm91cHM6IFN0eWxlR3JvdXBbXTtcbiAgICBleHBvcnQgbGV0IHRpdGxlOiBzdHJpbmc7Ly9cbiAgICBleHBvcnQgbGV0IG9uQ2hhbmdlRmlsdGVyO1xuICAgIGV4cG9ydCBsZXQgb25DaGFuZ2VHcm91cHM7XG4gICAgZXhwb3J0IGxldCBwbHVnaW46IElKdWdnbFBsdWdpbjtcbiAgICBsZXQgb25OZXdHcm91cCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBncm91cHMucHVzaCh7Li4uZW1wdHlTdHlsZUdyb3VwfSk7XG4gICAgICAgIGdyb3VwcyA9IGdyb3VwcztcbiAgICAgICAgb25DaGFuZ2VHcm91cHMoKTtcbiAgICB9XG4gICAgbGV0IG9uRGVsZXRlR3JvdXAgPSBmdW5jdGlvbihncm91cDogU3R5bGVHcm91cCkge1xuICAgICAgICBncm91cHMucmVtb3ZlKGdyb3VwKTtcbiAgICAgICAgZ3JvdXBzID0gZ3JvdXBzO1xuICAgICAgICBvbkNoYW5nZUZpbHRlcigpO1xuICAgICAgICBvbkNoYW5nZUdyb3VwcygpO1xuICAgIH1cbiAgICBsZXQgb25JY29uQnV0dG9uID0gZnVuY3Rpb24oZ3JvdXA6IFN0eWxlR3JvdXApIHtcbiAgICAgICAgbGV0IGNhbGxiYWNrID0gZnVuY3Rpb24oaWNvbjogSWNvbikge1xuICAgICAgICAgICAgZ3JvdXAuaWNvbiA9IGljb247XG4gICAgICAgICAgICBvbkNoYW5nZUdyb3VwcygpO1xuICAgICAgICAgICAgZ3JvdXBzID0gZ3JvdXBzO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpY29uTW9kYWwgPSBuZXcgSWNvbk1vZGFsKHBsdWdpbi5hcHAsIGNhbGxiYWNrLCBncm91cC5pY29uLmNvbG9yKTtcbiAgICAgICAgaWNvbk1vZGFsLm9wZW4oKTtcbiAgICB9XG4gICAgbGV0IHNob3dHcm91cCA9IGZ1bmN0aW9uKGdyb3VwOiBTdHlsZUdyb3VwLCBzaG93OiBib29sZWFuKSB7XG4gICAgICAgIGdyb3VwLnNob3dJblBhbmUgPSBzaG93O1xuICAgICAgICBncm91cHMgPSBncm91cHM7XG4gICAgfVxuXG4gICAgbGV0IGNoYW5nZVNob3cgPSBmdW5jdGlvbihncm91cDogU3R5bGVHcm91cCkge1xuICAgICAgICBncm91cC5zaG93ID0gIWdyb3VwLnNob3c7XG4gICAgICAgIG9uQ2hhbmdlR3JvdXBzKCk7XG4gICAgICAgIGdyb3VwcyA9IGdyb3VwcztcbiAgICB9XG5cbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwianVnZ2wtbGlzdC1oZWFkZXJcIj5cbiAgICB7dGl0bGV9XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJqdWdnbC1zdHlsZS1ncm91cC1jb250YWluZXJcIj5cbiAgICB7I2VhY2ggZ3JvdXBzIGFzIGdyb3VwfVxuICAgICAgICB7I2lmIGdyb3VwLnNob3dJblBhbmV9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJqdWdnbC1zdHlsZS1ncm91cFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImp1Z2dsLXN0eWxlLXBhbmUtbGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrYWJsZS1pY29uXCIgYXJpYS1sYWJlbD1cIkhpZGUgZ3JvdXAgb3B0aW9uc1wiIG9uOmNsaWNrPXtzaG93R3JvdXAoZ3JvdXAsIGZhbHNlKX0gZmxleC1iYXNpcz1cIjEwMCVcIiA+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDEwMCAxMDBcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgY2xhc3M9XCJyaWdodC10cmlhbmdsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05NC45LDIwLjhjLTEuNC0yLjUtNC4xLTQuMS03LjEtNC4xSDEyLjJjLTMsMC01LjcsMS42LTcuMSw0LjFjLTEuMywyLjQtMS4yLDUuMiwwLjIsNy42TDQzLjEsODhjMS41LDIuMyw0LDMuNyw2LjksMy43IHM1LjQtMS40LDYuOS0zLjdsMzcuOC01OS42Qzk2LjEsMjYsOTYuMiwyMy4yLDk0LjksMjAuOEw5NC45LDIwLjh6XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrYWJsZS1pY29uXCIgYXJpYS1sYWJlbD17Z3JvdXAuc2hvdyA/IFwiSGlkZSBncm91cFwiIDogXCJTaG93IGdyb3VwXCJ9IG9uOmNsaWNrPXtjaGFuZ2VTaG93KGdyb3VwKX0gZmxleC1iYXNpcz1cIjEwMCVcIiA+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgY2xhc3M9XCJyaWdodC10cmlhbmdsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD17Z3JvdXAuc2hvdyA/IGljb25zLmFnX3VuaGlkZSA6IGljb25zLmFnX2hpZGV9PlxuICAgICAgICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBmaWx0ZXIuLi5cIiBiaW5kOnZhbHVlPXtncm91cC5maWx0ZXJ9IG9uOmNoYW5nZT17b25DaGFuZ2VGaWx0ZXJ9Lz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGlja2FibGUtaWNvblwiIGFyaWEtbGFiZWw9XCJEZWxldGUgZ3JvdXBcIiBvbjpjbGljaz17b25EZWxldGVHcm91cChncm91cCl9IGZsZXgtYmFzaXM9XCIxMDAlXCIgPlxuICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAxMDAgMTAwXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgY2xhc3M9XCJjcm9zc1wiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNS40LDEyLjZsLTIuOSwyLjlMNDcuMSw1MEwxMi42LDg0LjZsMi45LDIuOUw1MCw1Mi45bDM0LjYsMzQuNmwyLjktMi45TDUyLjksNTBsMzQuNi0zNC42bC0yLjktMi45TDUwLDQ3LjFMMTUuNCwxMi42eiBcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqdWdnbC1zdHlsZS1wYW5lLWxlZnRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgYXJpYS1sYWJlbD1cIkNsaWNrIHRvIGNoYW5nZSBjb2xvclwiIGJpbmQ6dmFsdWU9e2dyb3VwLmNvbG9yfSBmbGV4LWJhc2lzPVwiMTAwJVwiIG9uOmNoYW5nZT17b25DaGFuZ2VHcm91cHN9Lz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNlbGVjdCBiaW5kOnZhbHVlPXtncm91cC5zaGFwZX0gY2xhc3M9XCJkcm9wZG93blwiIG9uOmJsdXI9e29uQ2hhbmdlR3JvdXBzfT5cbiAgICAgICAgICAgICAgICB7I2VhY2ggU0hBUEVTIGFzIHNoYXBlfVxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPXtzaGFwZX0+e3NoYXBlfTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIHsvZWFjaH1cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVnZ2wtc3R5bGUtcGFuZS1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgeyNpZiBncm91cC5pY29uLnBhdGh9XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBhcmlhLWxhYmVsPVwiQ2xpY2sgdG8gY2hhbmdlIGljb24gY29sb3JcIiBiaW5kOnZhbHVlPXtncm91cC5pY29uLmNvbG9yfSBmbGV4LWJhc2lzPVwiMTAwJVwiIG9uOmNoYW5nZT17b25DaGFuZ2VHcm91cHN9Lz5cbiAgICAgICAgICAgICAgICB7L2lmfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwianVnZ2wtaWNvbi1idXR0b25cIiBvbjpjbGljaz17b25JY29uQnV0dG9uKGdyb3VwKX0+XG4gICAgICAgICAgICAgICAgeyNpZiBncm91cC5pY29uLnBhdGh9XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgc3R5bGU9IFwid2lkdGg6MjRweDtoZWlnaHQ6MjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudGNvbG9yXCIgZD17Z3JvdXAuaWNvbi5wYXRofSAvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgICAgICAgICAgIHtncm91cC5pY29uLm5hbWV9XG4gICAgICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVnZ2wtc3R5bGUtcGFuZS1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICB7TWF0aC5yb3VuZChncm91cC5zaXplKiAxMDApIC8gMTAwfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzbGlkZXJcIiB0eXBlPVwicmFuZ2VcIiBtaW49XCIwLjAxXCIgbWF4PVwiMTBcIiBzdGVwPVwiYW55XCIgYmluZDp2YWx1ZT17Z3JvdXAuc2l6ZX0gYXJpYS1sYWJlbD1cIlNpemVcIiBvbjpjaGFuZ2U9e29uQ2hhbmdlR3JvdXBzfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgezplbHNlfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImp1Z2dsLXN0eWxlLWdyb3VwLWhpZGRlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGlja2FibGUtaWNvblwiIHN0eWxlPVwiZGlzcGxheTogaW5saW5lXCIgYXJpYS1sYWJlbD1cIlNob3cgZ3JvdXAgb3B0aW9uc1wiIG9uOmNsaWNrPXtzaG93R3JvdXAoZ3JvdXAsIHRydWUpfSA+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAxMDAgMTAwXCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIGNsYXNzPVwicmlnaHQtdHJpYW5nbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB0cmFuc2Zvcm09XCJyb3RhdGUoMjcwIDUwIDUwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTk0LjksMjAuOGMtMS40LTIuNS00LjEtNC4xLTcuMS00LjFIMTIuMmMtMywwLTUuNywxLjYtNy4xLDQuMWMtMS4zLDIuNC0xLjIsNS4yLDAuMiw3LjZMNDMuMSw4OGMxLjUsMi4zLDQsMy43LDYuOSwzLjcgczUuNC0xLjQsNi45LTMuN2wzNy44LTU5LjZDOTYuMSwyNiw5Ni4yLDIzLjIsOTQuOSwyMC44TDk0LjksMjAuOHpcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAge2dyb3VwLmZpbHRlcn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgIHsvaWZ9XG4gICAgey9lYWNofVxuICAgIDxkaXYgY2xhc3M9XCJncmFwaC1jb2xvci1idXR0b24tY29udGFpbmVyXCIgb246Y2xpY2s9e29uTmV3R3JvdXB9PlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibW9kLWN0YVwiPlxuICAgICAgICAgICAgTmV3IGdyb3VwXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAgIGltcG9ydCB7SnVnZ2x9IGZyb20gXCIuLi92aXovdmlzdWFsaXphdGlvblwiO1xuICAgIGltcG9ydCBTdHlsZUdyb3VwcyBmcm9tIFwiLi9TdHlsZUdyb3Vwcy5zdmVsdGVcIjtcbiAgICBpbXBvcnQgdHlwZSB7SUp1Z2dsUGx1Z2lufSBmcm9tIFwianVnZ2wtYXBpXCI7XG5cbiAgICBleHBvcnQgbGV0IHZpejogSnVnZ2w7XG4gICAgZXhwb3J0IGxldCBwbHVnaW46IElKdWdnbFBsdWdpbjtcbiAgICBsZXQgc2V0dGluZ3MgPSBwbHVnaW4/LnNldHRpbmdzO1xuXG4gICAgZXhwb3J0IGNvbnN0IHNldFZpeiA9IGZ1bmN0aW9uIChfdml6OiBKdWdnbCkge1xuICAgICAgICB2aXogPSBfdml6O1xuICAgICAgICBpZiAodml6KSB7XG4gICAgICAgICAgICBsb2NhbEdyb3VwcyA9IHZpei5zZXR0aW5ncy5zdHlsZUdyb3VwcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvY2FsR3JvdXBzID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbG9jYWxHcm91cHMgPSBbXTtcbiAgICBsZXQgZ2xvYmFsR3JvdXBzID0gc2V0dGluZ3MuZ2xvYmFsU3R5bGVHcm91cHM7XG4gICAgbGV0IG9uQ2hhbmdlR3JvdXBzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh2aXopIHtcbiAgICAgICAgICAgIHZpei51cGRhdGVTdHlsZXNoZWV0KClcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgb25DaGFuZ2VHcm91cHNHbG9iYWwgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcGx1Z2luLnNhdmVEYXRhKHNldHRpbmdzKTtcbiAgICAgICAgcGx1Z2luLmFjdGl2ZUdyYXBocygpLmZvckVhY2goaiA9PiBqLnVwZGF0ZVN0eWxlc2hlZXQoKSk7XG4gICAgfVxuICAgIGxldCBvbkNoYW5nZUZpbHRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodml6KSB7XG4gICAgICAgICAgICB2aXouYXNzaWduU3R5bGVHcm91cHMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgb25DaGFuZ2VGaWx0ZXJHbG9iYWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHBsdWdpbi5zYXZlRGF0YShzZXR0aW5ncyk7XG4gICAgICAgIHBsdWdpbi5hY3RpdmVHcmFwaHMoKS5mb3JFYWNoKGogPT4gai5hc3NpZ25TdHlsZUdyb3VwcygpKTtcbiAgICB9XG5cbjwvc2NyaXB0PlxuPGRpdiBjbGFzcz1cImp1Z2dsLXN0eWxlLXBhbmVcIj5cbiAgICA8U3R5bGVHcm91cHMgZ3JvdXBzPXtsb2NhbEdyb3Vwc30gdGl0bGU9XCJMb2NhbCBzdHlsZSBncm91cHNcIiBvbkNoYW5nZUdyb3Vwcz17b25DaGFuZ2VHcm91cHN9IG9uQ2hhbmdlRmlsdGVyPXtvbkNoYW5nZUZpbHRlcn0gcGx1Z2luPXtwbHVnaW59IC8+XG4gICAgPFN0eWxlR3JvdXBzIGdyb3Vwcz17Z2xvYmFsR3JvdXBzfSB0aXRsZT1cIkdsb2JhbCBzdHlsZSBncm91cHNcIiBvbkNoYW5nZUdyb3Vwcz17b25DaGFuZ2VHcm91cHNHbG9iYWx9IG9uQ2hhbmdlRmlsdGVyPXtvbkNoYW5nZUZpbHRlckdsb2JhbH0gcGx1Z2luPXtwbHVnaW59IC8+XG48L2Rpdj4iLG51bGwsbnVsbCwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgICBleHBvcnQgbGV0IGNhbmNlbENhbGxiYWNrO1xuICAgIGV4cG9ydCBsZXQgY29udGludWVDYWxsYmFjaztcbjwvc2NyaXB0PlxuXG5XYXJuaW5nOiBKdWdnbCBpcyBub3Qgb3B0aW1pemVkIGZvciBsYXJnZSBncmFwaHMuIFdlIGFkdmlzZSBub3QgdG8gdXNlIHRoZSBnbG9iYWwgZ3JhcGggaWYgeW91ciB2YXVsdFxuY29udGFpbnMgbW9yZSB0aGFuIDI1MCBub3RlcyB0byBwcmV2ZW50IE9ic2lkaWFuIGZyb20gZnJlZXppbmcuIDxiciAvPlxuXG48YnV0dG9uIGNsYXNzPSdtb2QtY3RhJyBvbjpjbGljaz17Y2FuY2VsQ2FsbGJhY2t9PkNhbmNlbDwvYnV0dG9uPlxuPGJ1dHRvbiBjbGFzcz1cIm1vZC1jdGFcIiBvbjpjbGljaz17Y29udGludWVDYWxsYmFja30+VW5kZXJzdG9vZCwgY29udGludWU8L2J1dHRvbj4iLG51bGwsbnVsbF0sIm5hbWVzIjpbIkV2ZW50cyIsInBhcnNlRnJvbnRNYXR0ZXJUYWdzIiwicGFyc2VGcm9udE1hdHRlclN0cmluZ0FycmF5IiwiQ29tcG9uZW50IiwiaXRlcmF0ZUNhY2hlUmVmcyIsImdldExpbmtwYXRoIiwiVEZpbGUiLCJub29wIiwicnVuIiwiZWxlbWVudCIsInVwZGF0ZSIsImZzIiwiUGx1Z2luU2V0dGluZ1RhYiIsIlNldHRpbmciLCJGVU5DX0VSUk9SX1RFWFQiLCJOQU4iLCJzeW1ib2xUYWciLCJyZUlzQmFkSGV4IiwicmVJc0JpbmFyeSIsInJlSXNPY3RhbCIsImZyZWVQYXJzZUludCIsImZyZWVHbG9iYWwiLCJnbG9iYWwiLCJmcmVlU2VsZiIsInJvb3QiLCJvYmplY3RQcm90byIsIm9iamVjdFRvU3RyaW5nIiwibmF0aXZlTWF4Iiwibm93IiwiZGVib3VuY2UiLCJ0b051bWJlciIsImlzT2JqZWN0IiwiaXNPYmplY3RMaWtlIiwiaXNTeW1ib2wiLCJ0aGlzIiwicmVxdWlyZSQkMCIsIl9pbnRlcm9wRGVmYXVsdCIsInV0aWwiLCJyZXF1aXJlJCQxIiwiX2RlZmluZVByb3BlcnR5IiwibmF2aWdhdG9yIiwibWVtb2l6ZSIsInBlcmZvcm1hbmNlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2xvbmUiLCJjb3B5QXJyYXkiLCJkZWZhdWx0cyIsIk1hcCQxIiwiU2V0JDEiLCJFbGVtZW50IiwibWluIiwibWF4IiwiZGlzdCIsImRlZmF1bHRzJDEiLCJub3JtYWxpemUiLCJpZGVudGl0eSIsIlByb21pc2UkMSIsInRvU3RyaW5nIiwiZmlsdGVyIiwicG9zaXRpb24iLCJFdmVudCIsImdldFZhbHVlIiwiQ29uY2VudHJpY0xheW91dCIsImxheW91dCIsIm5vb3AkMSIsImV4dGVuc2lvbiIsInZlcnNpb24iLCJjeXRvc2NhcGUiLCJtZGlJY29ucy5tZGlBcnJvd0V4cGFuZEFsbCIsIm1kaUljb25zLm1kaUFycm93Q29sbGFwc2VBbGwiLCJtZGlJY29ucy5tZGlTZWxlY3RBbGwiLCJtZGlJY29ucy5tZGlTZWxlY3RDb21wYXJlIiwibWRpSWNvbnMubWRpU2VsZWN0R3JvdXAiLCJtZGlJY29ucy5tZGlMb2NrIiwibWRpSWNvbnMubWRpTG9ja09wZW5WYXJpYW50T3V0bGluZSIsIm1kaUljb25zLm1kaUV5ZU9mZiIsIm1kaUljb25zLm1kaUV5ZSIsIm1kaUljb25zLm1kaUZpdFRvUGFnZU91dGxpbmUiLCJtZGlJY29ucy5tZGlJbWFnZSIsIm1kaUljb25zLm1kaVRvb2xib3hPdXRsaW5lIiwibWRpSWNvbnMubWRpRmxhcmUiLCJtZGlJY29ucy5tZGlHcmFpbiIsIm1kaUljb25zLm1kaUdyYXBocWwiLCJtZGlJY29ucy5tZGlEb3RzR3JpZCIsIm1kaUljb25zLm1kaUdyYXBoIiwibWRpSWNvbnMubWRpRmlsZU91dGxpbmUiLCJtZGlJY29ucy5tZGlGaWx0ZXJPdXRsaW5lIiwibWRpSWNvbnMubWRpQ29udGVudFNhdmUiLCJtZGlJY29ucy5tZGlGb3JtYXRMaXN0QnVsbGV0ZWRUeXBlIiwibWRpSWNvbnMubWRpUGFsZXR0ZU91dGxpbmUiLCJtZGlJY29ucy5tZGlIZWxwIiwiYWRkSWNvbiIsIkl0ZW1WaWV3IiwiTW9kYWwiLCJzZWFyY2hRdWVyeSIsIk1lbnUiLCJNYXJrZG93blJlbmRlcmVyIiwiTm90aWNlIiwicG9wcGVyIiwicmVhZCIsIndyaXRlIiwiZWZmZWN0IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIm1hdGhNYXgiLCJtYXRoTWluIiwiaGFzaCIsImFsbFBsYWNlbWVudHMiLCJwbGFjZW1lbnRzIiwib3JkZXIiLCJjcmVhdGVQb3BwZXIiLCJkZWZhdWx0TW9kaWZpZXJzIiwicG9wcGVyT2Zmc2V0cyIsImNvbXB1dGVTdHlsZXMiLCJhcHBseVN0eWxlcyIsIm9mZnNldCIsImZsaXAiLCJwcmV2ZW50T3ZlcmZsb3ciLCJhcnJvdyIsImhpZGUiLCJfX2V4dGVuZHMiLCJOb2RlIiwicmJ0cmVlXzEiLCJ2cHNjXzEiLCJQcmlvcml0eVF1ZXVlIiwicHF1ZXVlXzEiLCJQb2ludCIsInJlY3RhbmdsZV8xIiwibGlua2xlbmd0aHNfMSIsInNob3J0ZXN0cGF0aHNfMSIsImRlc2NlbnRfMSIsImhhbmRsZWRpc2Nvbm5lY3RlZF8xIiwiZ2VvbV8xIiwibGF5b3V0XzEiLCJEM1N0eWxlTGF5b3V0QWRhcHRvciIsImQzYWRhcHRvciIsImQzdjMiLCJkM3Y0IiwiZ3JpZHJvdXRlcl8xIiwicmVxdWlyZSQkMiIsInJlcXVpcmUkJDMiLCJyZXF1aXJlJCQ0IiwicmVxdWlyZSQkNSIsInJlcXVpcmUkJDYiLCJyZXF1aXJlJCQ3IiwicmVxdWlyZSQkOCIsInJlcXVpcmUkJDkiLCJyZXF1aXJlJCQxMCIsInJlcXVpcmUkJDExIiwicmVxdWlyZSQkMTIiLCJyZXF1aXJlJCQxMyIsInJlcXVpcmUkJDE0IiwicmVxdWlyZSQkMTUiLCJlcSIsImFzc29jSW5kZXhPZiIsImxpc3RDYWNoZUNsZWFyIiwibGlzdENhY2hlRGVsZXRlIiwibGlzdENhY2hlR2V0IiwibGlzdENhY2hlSGFzIiwibGlzdENhY2hlU2V0IiwiTGlzdENhY2hlIiwiU3ltYm9sIiwiaGFzT3duUHJvcGVydHkiLCJuYXRpdmVPYmplY3RUb1N0cmluZyIsInN5bVRvU3RyaW5nVGFnIiwiZ2V0UmF3VGFnIiwiZnVuY1RhZyIsImdlblRhZyIsImJhc2VHZXRUYWciLCJjb3JlSnNEYXRhIiwiZnVuY1Byb3RvIiwiZnVuY1RvU3RyaW5nIiwiaXNNYXNrZWQiLCJpc0Z1bmN0aW9uIiwidG9Tb3VyY2UiLCJiYXNlSXNOYXRpdmUiLCJNYXAiLCJnZXROYXRpdmUiLCJuYXRpdmVDcmVhdGUiLCJIQVNIX1VOREVGSU5FRCIsImhhc2hDbGVhciIsImhhc2hEZWxldGUiLCJoYXNoR2V0IiwiaGFzaEhhcyIsImhhc2hTZXQiLCJIYXNoIiwiaXNLZXlhYmxlIiwiZ2V0TWFwRGF0YSIsIm1hcENhY2hlQ2xlYXIiLCJtYXBDYWNoZURlbGV0ZSIsIm1hcENhY2hlR2V0IiwibWFwQ2FjaGVIYXMiLCJtYXBDYWNoZVNldCIsIkxBUkdFX0FSUkFZX1NJWkUiLCJNYXBDYWNoZSIsInN0YWNrQ2xlYXIiLCJzdGFja0RlbGV0ZSIsInN0YWNrR2V0Iiwic3RhY2tIYXMiLCJzdGFja1NldCIsImRlZmluZVByb3BlcnR5IiwiYmFzZUFzc2lnblZhbHVlIiwiYXNzaWduVmFsdWUiLCJhcmdzVGFnIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJiYXNlSXNBcmd1bWVudHMiLCJzdHViRmFsc2UiLCJNQVhfU0FGRV9JTlRFR0VSIiwiYXJyYXlUYWciLCJib29sVGFnIiwiZGF0ZVRhZyIsImVycm9yVGFnIiwibWFwVGFnIiwibnVtYmVyVGFnIiwib2JqZWN0VGFnIiwicmVnZXhwVGFnIiwic2V0VGFnIiwic3RyaW5nVGFnIiwid2Vha01hcFRhZyIsImFycmF5QnVmZmVyVGFnIiwiZGF0YVZpZXdUYWciLCJmbG9hdDMyVGFnIiwiZmxvYXQ2NFRhZyIsImludDhUYWciLCJpbnQxNlRhZyIsImludDMyVGFnIiwidWludDhUYWciLCJ1aW50OENsYW1wZWRUYWciLCJ1aW50MTZUYWciLCJ1aW50MzJUYWciLCJpc0xlbmd0aCIsIm5vZGVVdGlsIiwiYmFzZVVuYXJ5IiwiYmFzZUlzVHlwZWRBcnJheSIsImlzQXJyYXkiLCJpc0FyZ3VtZW50cyIsImlzQnVmZmVyIiwiaXNUeXBlZEFycmF5IiwiYmFzZVRpbWVzIiwiaXNJbmRleCIsIm92ZXJBcmciLCJpc1Byb3RvdHlwZSIsIm5hdGl2ZUtleXMiLCJpc0FycmF5TGlrZSIsImFycmF5TGlrZUtleXMiLCJiYXNlS2V5cyIsImNvcHlPYmplY3QiLCJrZXlzIiwibmF0aXZlS2V5c0luIiwiYmFzZUtleXNJbiIsImtleXNJbiIsIm5hdGl2ZUdldFN5bWJvbHMiLCJzdHViQXJyYXkiLCJhcnJheUZpbHRlciIsImdldFN5bWJvbHMiLCJhcnJheVB1c2giLCJnZXRQcm90b3R5cGUiLCJnZXRTeW1ib2xzSW4iLCJiYXNlR2V0QWxsS2V5cyIsIlByb21pc2UiLCJTZXQiLCJEYXRhVmlldyIsIldlYWtNYXAiLCJVaW50OEFycmF5IiwiY2xvbmVBcnJheUJ1ZmZlciIsInN5bWJvbFByb3RvIiwic3ltYm9sVmFsdWVPZiIsImNsb25lRGF0YVZpZXciLCJjbG9uZVR5cGVkQXJyYXkiLCJjbG9uZVJlZ0V4cCIsImNsb25lU3ltYm9sIiwiYmFzZUNyZWF0ZSIsImdldFRhZyIsImJhc2VJc01hcCIsImJhc2VJc1NldCIsIkNMT05FX0RFRVBfRkxBRyIsIkNMT05FX1NZTUJPTFNfRkxBRyIsImluaXRDbG9uZUFycmF5IiwiY2xvbmVCdWZmZXIiLCJpbml0Q2xvbmVPYmplY3QiLCJjb3B5U3ltYm9sc0luIiwiYmFzZUFzc2lnbkluIiwiY29weVN5bWJvbHMiLCJiYXNlQXNzaWduIiwiaW5pdENsb25lQnlUYWciLCJTdGFjayIsImlzU2V0IiwiaXNNYXAiLCJnZXRBbGxLZXlzSW4iLCJnZXRBbGxLZXlzIiwiYXJyYXlFYWNoIiwiYmFzZUNsb25lIiwiY3JlYXRlQmFzZUZvciIsImJhc2VGb3IiLCJjcmVhdGVCYXNlRWFjaCIsImJhc2VGb3JPd24iLCJiYXNlRWFjaCIsImNhc3RGdW5jdGlvbiIsInNldENhY2hlQWRkIiwic2V0Q2FjaGVIYXMiLCJDT01QQVJFX1BBUlRJQUxfRkxBRyIsIkNPTVBBUkVfVU5PUkRFUkVEX0ZMQUciLCJTZXRDYWNoZSIsImFycmF5U29tZSIsImNhY2hlSGFzIiwibWFwVG9BcnJheSIsInNldFRvQXJyYXkiLCJlcXVhbEFycmF5cyIsImVxdWFsQnlUYWciLCJlcXVhbE9iamVjdHMiLCJiYXNlSXNFcXVhbERlZXAiLCJiYXNlSXNFcXVhbCIsImlzU3RyaWN0Q29tcGFyYWJsZSIsImdldE1hdGNoRGF0YSIsIm1hdGNoZXNTdHJpY3RDb21wYXJhYmxlIiwiYmFzZUlzTWF0Y2giLCJtZW1vaXplQ2FwcGVkIiwiSU5GSU5JVFkiLCJhcnJheU1hcCIsImJhc2VUb1N0cmluZyIsImlzS2V5Iiwic3RyaW5nVG9QYXRoIiwiY2FzdFBhdGgiLCJ0b0tleSIsImJhc2VHZXQiLCJoYXNQYXRoIiwiYmFzZUhhc0luIiwiZ2V0IiwiaGFzSW4iLCJiYXNlUHJvcGVydHkiLCJiYXNlUHJvcGVydHlEZWVwIiwiYmFzZU1hdGNoZXNQcm9wZXJ0eSIsImJhc2VNYXRjaGVzIiwicHJvcGVydHkiLCJiYXNlRmlsdGVyIiwiYmFzZUl0ZXJhdGVlIiwiYmFzZUhhcyIsImJhc2VNYXAiLCJhcnJheVJlZHVjZSIsImJhc2VSZWR1Y2UiLCJyc0FzdHJhbFJhbmdlIiwicnNDb21ib01hcmtzUmFuZ2UiLCJyZUNvbWJvSGFsZk1hcmtzUmFuZ2UiLCJyc0NvbWJvU3ltYm9sc1JhbmdlIiwicnNDb21ib1JhbmdlIiwicnNWYXJSYW5nZSIsInJzWldKIiwiaGFzVW5pY29kZSIsInVuaWNvZGVTaXplIiwiYXNjaWlTaXplIiwiaXNTdHJpbmciLCJzdHJpbmdTaXplIiwiaXNGbGF0dGVuYWJsZSIsImFwcGx5IiwiY29uc3RhbnQiLCJzaG9ydE91dCIsImJhc2VTZXRUb1N0cmluZyIsInNldFRvU3RyaW5nIiwib3ZlclJlc3QiLCJzdHJpY3RJbmRleE9mIiwiYmFzZUZpbmRJbmRleCIsImJhc2VJc05hTiIsImJhc2VJbmRleE9mIiwiYXJyYXlJbmNsdWRlcyIsImFycmF5SW5jbHVkZXNXaXRoIiwiY3JlYXRlU2V0IiwiYmFzZVJlc3QiLCJiYXNlVW5pcSIsImJhc2VGbGF0dGVuIiwiaXNBcnJheUxpa2VPYmplY3QiLCJiYXNlVmFsdWVzIiwibG9kYXNoIiwicmVxdWlyZSIsIkdyYXBoIiwiXyIsIkRFRkFVTFRfV0VJR0hUX0ZVTkMiLCJkaWprc3RyYSIsInRhcmphbiIsInRvcHNvcnQiLCJkZnMiLCJwb3N0b3JkZXIiLCJwcmVvcmRlciIsImlzSXRlcmF0ZWVDYWxsIiwidHJpbW1lZEVuZEluZGV4IiwiYmFzZVRyaW0iLCJ0b0Zpbml0ZSIsInRvSW50ZWdlciIsImNyZWF0ZUZpbmQiLCJmaW5kSW5kZXgiLCJiYXNlRXh0cmVtdW0iLCJiYXNlR3QiLCJzYWZlR2V0IiwiYXNzaWduTWVyZ2VWYWx1ZSIsImlzUGxhaW5PYmplY3QiLCJ0b1BsYWluT2JqZWN0IiwiYmFzZU1lcmdlRGVlcCIsImNyZWF0ZUFzc2lnbmVyIiwiYmFzZU1lcmdlIiwiYmFzZUx0IiwiYmFzZVNldCIsImJhc2VQaWNrQnkiLCJmbGF0dGVuIiwiZmxhdFJlc3QiLCJiYXNlUGljayIsImJhc2VSYW5nZSIsImNyZWF0ZVJhbmdlIiwiY29tcGFyZUFzY2VuZGluZyIsImJhc2VTb3J0QnkiLCJjb21wYXJlTXVsdGlwbGUiLCJiYXNlT3JkZXJCeSIsImJhc2VaaXBPYmplY3QiLCJyZXF1aXJlJCQxNiIsInJlcXVpcmUkJDE3IiwicmVxdWlyZSQkMTgiLCJyZXF1aXJlJCQxOSIsInJlcXVpcmUkJDIwIiwicmVxdWlyZSQkMjEiLCJyZXF1aXJlJCQyMiIsInJlcXVpcmUkJDIzIiwicmVxdWlyZSQkMjQiLCJyZXF1aXJlJCQyNSIsIkxpc3QiLCJ1bmRvIiwiZ3JlZWR5RkFTIiwic2ltcGxpZnkiLCJub3JtYWxpemVSYW5rcyIsInJlbW92ZUVtcHR5UmFua3MiLCJhZGRCb3JkZXJOb2RlIiwibG9uZ2VzdFBhdGgiLCJzbGFjayIsImZlYXNpYmxlVHJlZSIsInJhbmtVdGlsIiwibmV0d29ya1NpbXBsZXgiLCJiYXJ5Y2VudGVyIiwicmVzb2x2ZUNvbmZsaWN0cyIsInNvcnQiLCJpbml0T3JkZXIiLCJjcm9zc0NvdW50IiwiYnVpbGRMYXllckdyYXBoIiwic29ydFN1YmdyYXBoIiwiYWRkU3ViZ3JhcGhDb25zdHJhaW50cyIsInBvc2l0aW9uWCIsInJhbmsiLCJwYXJlbnREdW1teUNoYWlucyIsImFkZEJvcmRlclNlZ21lbnRzIiwiRnV6enlTdWdnZXN0TW9kYWwiLCJQbHVnaW4iLCJkYmxjbGljayIsInBhcnNlWWFtbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7TUFFYSxlQUFnQixTQUFRQSxlQUFNO0lBS3pDLE9BQU8sQ0FBQyxJQUFZLEVBQUUsR0FBRyxJQUFXO1FBQ2xDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDOUI7SUFNRCxFQUFFLENBQUMsSUFBWSxFQUFFLFFBQWlDLEVBQUUs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LEVBQUU7WUFDRCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7U0FDVixFQUFFO1lBQ0QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1YsRUFBRTtZQUNELFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztTQUNWLEVBQUU7WUFDRCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7U0FDVixFQUFFO1lBQ0QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQy9CLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0I7S0FDRjtJQUNELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNqQixLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtRQUNsRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDZixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQVU7Z0JBQzVCLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FB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LEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUN6SSxNQUFNLE9BQU8sU0FBUyxDQUFDO0FBQ3ZCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDN0IsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ2xCLElBQUksS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDdkQsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVDLEtBQUs7QUFDTCxJQUFJLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLEdBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxVQUFVLEdBQUcsU0FBUyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtBQUMxQyxJQUFJLElBQUksR0FBRyxDQUFDO0FBQ1osSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7QUFDckIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDO0FBQ3ZCLEtBQUs7QUFDTCxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDcEIsTUFBTSxPQUFPO0FBQ2IsS0FBSztBQUNMLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwQyxHQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFFBQVEsR0FBRyxTQUFTLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO0FBQ3JDLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3JDLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO0FBQ3JCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQztBQUN2QixLQUFLO0FBQ0wsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtBQUN4QixNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDekIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixJQUFJLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ3RELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0QixNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLEtBQUs7QUFDTCxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN0QyxHQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRyxTQUFTLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO0FBQ3RDLFFBQVEsSUFBSSxFQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTO0FBQ2xFLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO0FBQ3JCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQztBQUN2QixLQUFLO0FBQ0wsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtBQUNoQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0MsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtBQUMxQixRQUFRLE9BQU8sTUFBTSxDQUFDO0FBQ3RCLE9BQU87QUFDUCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLE1BQU0sS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDeEQsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNoQyxVQUFVLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0MsVUFBVSxNQUFNLENB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LENBQUMsQ0FBQztBQUN4QyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxHQUFHLE1BQU07QUFDVCxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsR0FBRyxFQUFFO0FBQ3hDLEVBQUUsSUFBSSxHQUFHLENBQUM7QUFDVixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFCO0FBQ0EsRUFBRSxTQUFTLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUM1QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FB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QUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDekIsRUFBRSxhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUMvQixFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDeEIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUMzQixFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUMvQixFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzNCLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0QixFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzdCLEVBQUUsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDL0IsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUM5QixFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzdCLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDN0IsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM5QixFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDMUIsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM1QixFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzFCLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDMUIsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM1QixFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzFCLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDOUIsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUM1QixFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0FBQ3hCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM3QixFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3JCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDM0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN2QixFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDcEIsRUFBRSxXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUM3QixFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDMUIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUMxQixFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0FBQ3RCLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDeEIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN4QixFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsYUFBYSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDaEMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUMxQixFQUFFLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQy9CLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM3QixFQUFFLFNBQVMsRUFB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LEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzdCLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDdkIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQixFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDM0IsRUFBRSxXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUM1QixFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDNUIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUN6QixFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDdkIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN6QixFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzFCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDM0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM1QixFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FB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QU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLEtBQUssQ0FBQztBQUNOO0FBQ0E7QUFDQSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2xDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQixNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUI7QUFDQSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNuQixRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEIsT0FBTyxNQUFNO0FBQ2IsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzNCLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixJQUFJLElBQUksUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDO0FBQ0EsSUFBSSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUM5QyxNQUFNLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQixNQUFNLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQztBQUNBLE1BQU0sSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFO0FBQ3ZCLFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQTtBQUNBLE1BQU0sSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLE1BQU0sSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLE1BQU0sSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekI7QUFDQSxNQUFNLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQztBQUNBO0FBQ0EsTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUU7QUFDOUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzNCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQixRQUFRLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDNUIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDckIsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQjtBQUNBLFFBQVEsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFO0FBQzdDLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUM3QixVQUFVLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsVUFBVSxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzlCLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEMsTUFBTSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3hDLFFBQVEsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0I7QUFDQSxRQUFRLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDdkMsVUFBVSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxVQUFVLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzlCO0FBQ0EsVUFBVSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzlDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0MsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsR0FBRyxFQUFFO0FBQzVDLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksSUFBSSxhQUFhLEdBQUcsU0FBUyxhQUFhLENBQUMsR0FBRyxFQUFFO0FBQ3BELE1BQU0sT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckMsS0FBSyxDQUFD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QyxJQUFJLElBQUk7QUFDM0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSTtBQUMzQixHQUFHLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixJQUFJLFdBQVcsR0FBRyxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUU7QUFDNUMsRUFBRSxPQUFPO0FBQ1QsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNiLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDYixHQUFHLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixJQUFJRyxLQUFHLEdBQUcsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFO0FBQzVCLEVBQUUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BGLEVBQUUsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUMzRixFQUFFLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQztBQUNyQjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNwQyxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQjtBQUNBLElBQUksSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDL0IsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFDRixJQUFJQyxLQUFHLEdBQUcsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFO0FBQzVCLEVBQUUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BGLEVBQUUsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUMzRixFQUFFLElBQUksR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO0FBQ3RCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3BDLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCO0FBQ0EsSUFBSSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMvQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUNGLElBQUksSUFBSSxHQUFHLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUM5QixFQUFFLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRixFQUFFLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDM0YsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDaEIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDWjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNwQyxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQjtBQUNBLElBQUksSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDdkIsTUFBTSxLQUFLLElBQUksR0FBRyxDQUFDO0FBQ25CLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDVixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxNQUFNLEdBQUcsU0FBUyxNQUFNLENBQUMsR0FBRyxFQUFFO0FBQ2xDLEVBQUUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BGLEVBQUUsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUMzRixFQUFFLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN0RixFQUFFLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN0RixFQUFFLElBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUM5RjtBQUNBLEVBQUUsSUFBSSxJQUFJLEVBQUU7QUFDWixJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNoQyxHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0FBQ25CLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDM0IsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDZDtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxJQUFJLFlBQVksRUFBRTtBQUN0QixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFD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QUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDWixFQUFFLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQixFQUFFLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ2xCO0FBQ0EsRUFBRSxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUU7QUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNsRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2xFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUMzQixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDbkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxFQUFFLElBQUksWUFBWSxLQUFLLENBQUMsRUFBRTtBQUMxQixJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3BFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDbkMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzNDLElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ1QsRUFBRSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNsRCxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNwRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNwRSxFQUFFLE9BQU87QUFDVCxDQUFDLENBQUM7QUFDRixJQUFJLHVCQUF1QixHQUFHLFNBQVMsdUJBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN0SyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUMxSixFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwTCxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENB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Q0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUMzRSxFQUFFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDaEMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JELEVBQUUsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVELEVBQUUsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdELEVBQUUsSUFBSSxLQUFLLEdBQUcsVUFBVSxHQUFHLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFDL0M7QUFDQSxFQUFFLElBQUksVUFBVSxHQUFHLENBQUMsRUFBRTtBQUN0QixJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQ3RCLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDckQsR0FBRztBQUNI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Q0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2xELElBQUksSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLFFBQVEsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDdkMsS0FBSyxNQUFNO0FBQ1gsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsS0FBSztBQUNMO0FBQ0EsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxJQUFJLEVBQUUsR0FBRyxPQUFPLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakQsSUFBSSxJQUFJLEVBQUUsR0FBRyxPQUFPLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JELElBQUksSUFBSSxRQUFRLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsSCxJQUFJLElBQUksTUFBTSxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsTUFBTSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRCxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RCxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hELElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BELElBQUksZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNuQyxJQUFJLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3ZDLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDdkMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN2QyxJQUFJLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDekMsSUFBSSxJQUFJLEtBQUssR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0QyxJQUFJLElBQUksUUFBUSxHQUFHLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0U7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRTtBQUN0QixNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNsQixNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNsQixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksR0FBRyxLQUFLLEdBQUcsWUFBWSxDQUFDO0FBQ3pDLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxZQUFZLENBQUM7QUFDekMsSUFBSSxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BFO0FBQ0EsSUFBSSxJQUFJLGVBQWUsSUFBSSxtQkFBbUIsRUFBRTtBQUNoRCxNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sd0JBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUNGLElBQUksU0FBUyxHQUFHLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUM1QyxFQUFFLElBQUksUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsRUFBRSxJQUFJLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUM7QUFDN0UsRUFBRSxJQUFJLGNBQWMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQztBQUNqRTtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQy9DLElBQUksaUJBQWlCLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2QyxJQUFJLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNDLElBQUksZUFBZSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLElBQUksZUFBZSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pDO0FBQ0EsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDcEMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1QyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxLQUFLLE1BQU07QUFDWCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0TCxJQUFJLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLElBQUksUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxhQUFhLEdBQUcsU0FBUyxhQUFhLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtBQUN4RCxFQUFFLElBQUksZUFBZSxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckQsRUFBRSxJQUFJLGFBQWEsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztBQUMzRDtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzlDLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEMsSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEM7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNDLEtBQUssTUFBTTtBQUNYLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsVUFBVSxHQUFHLGFBQWEsQ0FBQztBQUM3QyxJQUFJLElBQUksT0FBTyxHQUFHLEVBQUUsVUFBVSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0FBQ2hEO0FBQ0EsSUFBSSxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ3hFLElBQUksSUFBSSxpQkFBaUIsR0FBRyxPQUFPLEdBQUcsWUFBWSxDQUFDO0FBQ25ELElBQUksSUFBSSxpQkFBaUIsR0FBRyxPQUFPLEdBQUcsWUFBWSxDQUFDO0FBQ25ELElBQUksZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxhQUFhLEdBQUcsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQ3JFLElBQUksZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsYUFBYSxHQUFHLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztBQUN6RSxJQUFJLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFDdEUsSUFBSSxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQ3RFLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxvQkFBb0IsR0FBRyxTQUFTLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFO0FBQ2pILEVBQUUsSUFBSSxLQUFLLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUMxQixFQUFFLElBQUksS0FBSyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDMUIsRUFBRSxLQUFLLElBQUksY0FBYyxDQUFDO0FBQzFCLEVBQUUsS0FBSyxJQUFJLGNBQWMsQ0FBQztBQUMxQixFQUFFLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDckQsRUFBRSxJQUFJLFNBQVMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzFCO0FBQ0EsRUFBRSxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUU7QUFDckIsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNkLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxhQUFhLEdBQUcsU0FBUyxHQUFHLEdBQUcsQ0FBQztBQUN0QyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLENBQUMsQ0FBQztBQUNGLElBQUksY0FBYyxHQUFHLFNBQVMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUM3RixFQUFFLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDZixFQUFFLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDZixFQUFFLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUMzQixFQUFFLENBQUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUM1QixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksbUJBQW1CLEdBQUcsU0FBUyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDakc7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDN0I7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDdkMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUN0RCxFQUFFLElBQUksWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkM7QUFDQSxFQUFFLElBQUksWUFBWSxHQUFHLENBQUMsRUFBRTtBQUN4QixJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ2QsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BELEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwRCxFQUFFLElBQUksSUFBSSxHQUFH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LENBQUM7QUFDakQsSUFBSSxJQUFJLEVBQUUsR0FBRyxPQUFPLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JELElBQUksSUFBSSxRQUFRLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsSCxJQUFJLElBQUksTUFBTSxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsTUFBTSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRCxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RCxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hELElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0FBQ0EsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsTUFBTSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDMUMsTUFBTSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDMUMsS0FBSyxNQUFNO0FBQ1gsTUFBTSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FB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QyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNsQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzdCLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztBQUM3QjtBQUNBLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUN4QyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQy9DLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN2RCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxD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QUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDMUMsTUFBTSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0IsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0QztBQUNBLE1BQU0sSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFO0FBQzNCLFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsTUFBTSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLE1BQU0sSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNCO0FBQ0EsTUFBTSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNoQztBQUNBO0FBQ0EsTUFBTSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCO0FBQ0EsTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxRQUFRLEdBQUcsY0FBYyxDQUFDO0FBQzVDO0FBQ0E7QUFDQSxJQUFJLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDMUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDL0I7QUFDQSxRQUFRLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDakQsVUFBVSxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUN4QztBQUNBLFVBQVUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQixTQUFTO0FBQ1QsT0FBTyxNQUFNO0FBQ2I7QUFDQSxRQUFRLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDakQsVUFBVSxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUN4QztBQUNBLFVBQVUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDO0FBQ3JFLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFDLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkMsSUFBSSxJQUFJLFFBQVEsQ0FBQztBQUNqQjtBQUNBO0FBQ0EsSUFBSSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQzdDLE1BQU0sV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixLQUFLO0FBQ0w7QUFDQSxJQUFJLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUU7QUFDbEQ7QUFDQSxNQUFNLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDL0MsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE9BQU87QUFDUDtBQUNBO0FBQ0EsTUFBTSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQy9DLFFBQVEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNqRCxVQUFVLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxRQUFRLEdBQUcsR0FBRyxDQUFDO0FBQ3pDO0FBQ0EsVUFBVSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsTUFBTSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUM7QUFDN0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQztBQUN0QixNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNuQjtBQUNBLE1BQU0sS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUMvQyxRQUFRLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckQsUUFBUSxJQUFJLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztBQUM5QixPQUFPO0FBQ1A7QUFDQTtBQUNBLE1BQU0sSUFBSSxJQUFJLEdBQUcsU0FBUyxFQUFFO0FBQzVCLFFBQVEsTUFBTTtBQUNkLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxHQUFHLEdBQUc7QUFDZCxNQUFNLElBQUksRUFBRSxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDaEMsUUFBUSxJQUFJLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QyxRQUFRLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoRCxPQUFPO0FBQ1AsS0FBSyxDQUFDO0FBQ04sSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUNmLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSU8sWUFBVSxHQUFHUCxVQUFRLENBQUM7QUFDMUIsRUFBRSxJQUFJLEVBQUUsSUFBSTtBQUNaLEVBQUUsTUFBTSxFQUFFLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRTtBQUNoQyxJQUFJLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsR0FBRztBQUNILEVBQUUsUUFBUSxFQUFFLEtBQUs7QUFDakIsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNWLENBQUMsQ0FBQyxDQUFDO0FBQ0gsSUFBSSxRQUFRLEdBQUc7QUFDZixFQUFFLDBCQUEwQixFQUFFLFNBQVMsMEJBQTBCLENBQUMsT0FBTyxFQUFFO0FBQzNFLElBQUksT0FBTyxHQUFHTyxZQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDdkIsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDN0IsSUFBSSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDO0FBQ0EsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtBQUMzQixNQUFNLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztBQUN4QjtBQUNBLE1BQU0sS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxRQUFRLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QjtBQUNBLFFBQVEsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDNUIsUUFBUSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEQ7QUFDQSxRQUFRLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDM0MsVUFBVSxTQUFTLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUN4QyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQy9DLE9BQU87QUFDUDtBQUNBLE1BQU0sT0FBTztBQUNiLFFBQVEsTUFBTSxFQUFFLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRTtBQUN0QyxVQUFVLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRTtBQUMvQixZQUFZLE9BQU8sQ0FBQyxDQUFDO0FBQ3JCLFdBQVc7QUFDWDtBQUNBLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDNUI7QUFDQSxZQUFZLElBQUksR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLFdBQVc7QUFDWDtBQUNBLFVBQVUsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ2hELFNBQVM7QUFDVCxPQUFPLENBQUM7QUFDUixLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUN6QixNQUFNLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztBQUMxQixNQUFNLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQUMzQjtBQUNBLE1BQU0sS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUM1QyxRQUFRLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM5QjtBQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzVCO0FBQ0E7QUFDQSxRQUFRLE9BQU8sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0FBQzdCO0FBQ0EsUUFBUSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekQ7QUFDQSxRQUFRLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7QUFDbkYsUUFBUSxJQUFJLFlBQVksR0FBRyxXQUFXLENBQUMsU0FBUyxFQUFFLFlBQVksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO0FBQ3ZGLFFBQVEsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7QUFDN0MsUUFBUSxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztBQUMvQyxPQUFPO0FBQ1A7QUFDQSxNQUFNLE9BQU87QUFDYixRQUFRLFFBQVEsRUFBRSxTQUFTLFFBQVEsQ0FBQyxJQUFJLEVBQUU7QUFDMUMsVUFBVSxJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUU7QUFDaEMsWUFBWSxPQUFPLENBQUMsQ0FBQztBQUNyQixXQUFXO0FBQ1g7QUFDQSxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzVCO0FBQ0EsWUFBWSxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQyxXQUFXO0FBQ1g7QUFDQSxVQUFVLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQztBQUNwRCxTQUFTO0FBQ1QsUUFBUSxTQUFTLEVBQUUsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFO0FBQzVDLFVBQVUsSUFBSSxZQUFZLEtBQUssQ0FBQyxFQUFFO0FBQ2xDLFlBQVksT0FBTyxDQUFDLENBQUM7QUFDckIsV0FBVztBQUNYO0FBQ0EsVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM1QjtBQUNBLFlBQVksSUFBSSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkMsV0FBVztBQUNYO0FBQ0EsVUFBVSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUM7QUFDdEQsU0FBUztBQUNULE9BQU8sQ0FBQztBQUNSLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO0FBQ3ZELElBQUksT0FBTyxHQUFHQSxZQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDdkIsSUFBSSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDM0IsSUFBSSxJQUFJLFFBQVEsR0FBRyxPQUFPO0FBQzFCLFFBQVEsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJO0FBQzVCLFFBQVEsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNO0FBQ2hDLFFBQVEsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRO0FBQ3BDLFFBQVEsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7QUFDL0IsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQztBQUNBLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNuQixNQUFNLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdEUsTUFBTSxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQy9CLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCO0FBQ0EsTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNqRCxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsT0FBTztBQUNQO0FBQ0EsTUFBTSxPQUFPO0FBQ2IsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztBQUMzRCxPQUFPLENBQUM7QUFDUixLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUN4QyxNQUFNLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUU7QUFDbEQsUUFBUSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRSxPQUFPLENBQUMsQ0FBQztBQUNULE1BQU0sSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRTtBQUNsRCxRQUFRLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pFLE9BQU8sQ0FBQyxDQUFDO0FBQ1QsTUFBTSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2pDLE1BQU0sSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUNsQyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNuQixNQUFNLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNwQjtBQUNBLE1BQU0sS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDdEQsUUFBUSxJQUFJLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLE9BQU87QUFDUDtBQUNBO0FBQ0EsTUFBTSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUN0RCxRQUFRLEtBQUssSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkMsT0FBTztBQUNQO0FBQ0EsTUFBTSxPQUFPO0FBQ2IsUUFBUSxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUNuRSxRQUFRLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0FBQ3RFLE9BQU8sQ0FBQztBQUNSLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0EsUUFBUSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7QUFDeEMsUUFBUSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsMEJBQTBCLEdBQUcsUUFBUSxDQUFDLDBCQUEwQixDQUFDO0FBQ3pGO0FBQ0EsSUFBSSxVQUFVLEdBQUdQLFVBQVEsQ0FBQztBQUMxQixFQUFFLFFBQVEsRUFBRSxJQUFJO0FBQ2hCLEVBQUUsTUFBTSxFQUFFLFNBQVMsTUFBTSxHQUFHO0FBQzVCLElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixHQUFHO0FBQ0gsRUFBRSxRQUFRLEVBQUUsS0FBSztBQUNqQixFQUFFLElBQUksRUFBRSxJQUFJO0FBQ1osQ0FBQyxDQUFDLENBQUM7QUFDSCxJQUFJLFFBQVEsR0FBRztBQUNmLEVBQUUsNkJBQTZCLEVBQUUsU0FBUyw2QkFBNkIsQ0FBQyxPQUFPLEVBQUU7QUFDakYsSUFBSSxJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLFFBQVEsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRO0FBQ3JDLFFBQVEsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNO0FBQ2pDLFFBQVEsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDdEM7QUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN2QixJQUFJLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN6QixJQUFJLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQUN6QixJQUFJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUM3QixJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDaEMsTUFBTSxNQUFNLEVBQUUsTUFBTTtBQUNwQixNQUFNLFFBQVEsRUFBRSxRQUFRO0FBQ3hCLEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzNDLE1BQU0sSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLE1BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3QyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNyQixVQUFVLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hEO0FBQ0EsVUFBVSxJQUFJLFFBQVEsRUFBRTtBQUN4QixZQUFZLGFBQWEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLFdBQVcsTUFBTTtBQUNqQixZQUFZLGFBQWEsSUFBSSxDQUFDLENBQUM7QUFDL0IsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDckIsUUFBUSxhQUFhLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQztBQUMxQyxPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksWUFBWSxHQUFHLGFBQWEsRUFBRTtBQUN4QyxRQUFRLFlBQVksR0FBRyxhQUFhLENBQUM7QUFDckMsT0FBTztBQUNQO0FBQ0EsTUFBTSxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDO0FBQy9DLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTztBQUNYLE1BQU0sU0FBUyxFQUFFLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRTtBQUMxQyxRQUFRLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRTtBQUMvQixVQUFVLE9BQU8sQ0FBQyxDQUFDO0FBQ25CLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDMUI7QUFDQSxVQUFVLElBQUksR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3pDLFNBQVMsTUFBTTtBQUNmO0FBQ0EsVUFBVSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzNCLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDO0FBQ2hELE9BQU87QUFDUCxLQUFLLENBQUM7QUFDTixHQUFHO0FBQ0g7QUFDQSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsbUJBQW1CLENBQUMsT0FBTyxFQUFFO0FBQzdELElBQUksSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztBQUN4QyxRQUFRLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSTtBQUM5QixRQUFRLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTTtBQUNsQyxRQUFRLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUTtBQUN0QyxRQUFRLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO0FBQ3ZDO0FBQ0EsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQztBQUNBLElBQUksSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNqQyxNQUFNLElBQUksRUFBRSxJQUFJO0FBQ2hCLE1BQU0sTUFBTSxFQUFFLE1BQU07QUFDcEIsTUFBTSxRQUFRLEVBQUUsUUFBUTtBQUN4QixLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzdCO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzQyxNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QjtBQUNBLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDekIsUUFBUSxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0EsUUFBUSxJQUFJLFFBQVEsRUFBRTtBQUN0QixVQUFVLGFBQWEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLFNBQVMsTUFBTTtBQUNmLFVBQVUsYUFBYSxJQUFJLENBQUMsQ0FBQztBQUM3QixTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxRQUFRLEdBQUcsYUFBYSxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUM7QUFDeEQsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBLFFBQVEsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLG1CQUFtQixDQUFDO0FBQzNDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLDZCQUE2QixHQUFHLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQztBQUMvRjtBQUNBLElBQUksVUFBVSxHQUFHQSxVQUFRLENBQUM7QUFDMUIsRUFBRSxNQUFNLEVBQUUsSUFBSTtBQUNkLEVBQUUsUUFBUSxFQUFFLEtBQUs7QUFDakIsQ0FBQyxDQUFDLENBQUM7QUFDSCxJQUFJLFFBQVEsR0FBRztBQUNmO0FBQ0EsRUFBRSxxQkFBcUIsRUFBRSxTQUFTLHFCQUFxQixDQUFDLE9BQU8sRUFBRTtBQUNqRSxJQUFJLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7QUFDdkMsUUFBUSxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVE7QUFDckMsUUFBUSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUNsQztBQUNBLElBQUksSUFBSSxRQUFRLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQztBQUNsQyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN2QjtBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2YsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDaEIsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDaEIsSUFBSSxJQUFJLENBQUMsR0FBRztBQUNaLE1BQU0sR0FBRyxFQUFFLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDbEMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3RCO0FBQ0EsUUFBUSxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUU7QUFDdkIsVUFBVSxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3BCLFNBQVM7QUFDVCxPQUFPO0FBQ1AsTUFBTSxHQUFHLEVBQUUsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFO0FBQzdCLFFBQVEsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsT0FBTztBQUNQLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN2QjtBQUNBLE1BQU0sSUFBSSxRQUFRLEVBQUU7QUFDcEIsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3RDLE9BQU8sTUFBTTtBQUNiLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzlDLE9BQU87QUFDUDtBQUNBLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDbEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDMUIsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDakI7QUFDQSxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNqQixNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNqQixNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNqQixNQUFNLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN2QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixPQUFPLENBQUMsQ0FBQztBQUNUO0FBQ0E7QUFDQSxNQUFNLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQzVDLFFBQVEsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzlCO0FBQ0EsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDM0IsT0FBTztBQUNQO0FBQ0EsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCO0FBQ0EsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCO0FBQ0EsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCO0FBQ0EsTUFBTSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO0FBQ3pCLFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3pCO0FBQ0EsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25CO0FBQ0EsUUFBUSxJQUFJLFFBQVEsRUFBRTtBQUN0QixVQUFVLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2pELFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFlBQVksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QyxZQUFZLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUM1QyxjQUFjLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLGFBQWEsTUFBTTtBQUNuQixjQUFjLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLGFBQWE7QUFDYjtBQUNBLFlBQVksSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN2QjtBQUNBLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRTtBQUMzQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ3hDO0FBQ0EsY0FBYyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUMxQztBQUNBLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLGVBQWUsTUFBTTtBQUNyQjtBQUNBLGdCQUFnQixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLGVBQWU7QUFDZjtBQUNBLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QixjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDeEIsYUFBYTtBQUNiO0FBQ0EsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFO0FBQzVDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVCLGFBQWE7QUFDYixXQUFXO0FBQ1gsU0FBUyxNQUFNO0FBQ2YsVUFBVSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUNwRCxZQUFZLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNwQztBQUNBLFlBQVksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksUUFBUSxFQUFFO0FBQ25DLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6QixjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLGFBQWE7QUFDYjtBQUNBLFlBQVksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNwQyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDO0FBQ0EsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdCLGFBQWE7QUFDYixXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2pCO0FBQ0EsTUFBTSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUMvQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsT0FBTztBQUNQO0FBQ0EsTUFBTSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQzNCLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFCO0FBQ0EsUUFBUSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUN0RCxVQUFVLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0QsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7QUFDOUIsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFDLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2YsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRztBQUNkLE1BQU0sV0FBVyxFQUFFLFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRTtBQUM5QyxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDMUMsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekIsT0FBTztBQUNQLE1BQU0scUJBQXFCLEVBQUUsU0FBUyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUU7QUFDbEUsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUU7QUFDdEIsVUFBVSxPQUFPLENBQUMsQ0FBQztBQUNuQixTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDMUMsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQy9CLE9BQU87QUFDUCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksR0FBRyxDQUFDLHFCQUFxQixHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQztBQUMxRCxJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBLFFBQVEsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLHFCQUFxQixDQUFDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxVQUFVLEdBQUdBLFVBQVEsQ0FBQztBQUMxQixFQUFFLFlBQVksRUFBRSxDQUFDO0FBQ2pCO0FBQ0EsRUFBRSxhQUFhLEVBQUUsQ0FBQztBQUNsQjtBQUNBLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDZjtBQUNBLEVBQUUsYUFBYSxFQUFFLEVBQUU7QUFDbkI7QUFDQSxFQUFFLFVBQVUsRUFBRTtBQUNkLEVBQUUsVUFBVSxJQUFJLEVBQUU7QUFDbEIsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiLEdBQUcsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0g7QUFDQTtBQUNBLElBQUksVUFBVSxHQUFHLFNBQVMsVUFBVSxDQUFDLE9BQU8sRUFBRTtBQUM5QyxFQUFFLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBLElBQUksYUFBYSxHQUFHLFNBQVMsYUFBYSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7QUFDN0QsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDaEI7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzlDLElBQUksS0FBSyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFFBQVEsR0FBRyxTQUFTLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtBQUM1QyxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDdkIsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSVEsV0FBUyxHQUFHLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDekMsRUFBRSxJQUFJLEdBQUcsQ0FBQztBQUNWO0FBQ0EsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3BDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNaO0FBQ0EsSUFBSSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3RDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLEtBQUs7QUFDTDtBQUNBLElBQUksS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRTtBQUN6QyxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNsRCxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQSxJQUFJLEtBQUssR0FBRyxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNwQyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzQjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM5QixJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsS0FBSztBQUNMO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2hDLE1BQU0sS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUNyQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3RELE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxNQUFNLEdBQUcsU0FBUyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZO0FBQy9DO0FBQ0EsRUFBRTtBQUNGLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4QixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGFBQWE7QUFDbEQ7QUFDQSxFQUFFO0FBQ0YsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUI7QUFDQTtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDMUMsR0FBRztBQUNIO0FBQ0EsRUFBRUEsV0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQixFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFlBQVksR0FBRyxTQUFTLFlBQVksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUU7QUFDakU7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDL0IsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3RGO0FBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZGO0FBQ0EsSUFBSSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7QUFDbkIsTUFBTSxPQUFPLEtBQUssQ0FBQztBQUNuQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxNQUFNLEdBQUcsU0FBUyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO0FBQzlDLEVBQUUsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzlCLElBQUksSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ3JCO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2hDO0FBQ0EsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRTtBQUN0RCxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUM5QixNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzVDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxXQUFXLEdBQUcsU0FBUyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUMvQyxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3RDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO0FBQzdDLE1BQU0sT0FBTyxLQUFLLENBQUM7QUFDbkIsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksZ0JBQWdCLEdBQUcsU0FBUyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUU7QUFDM0QsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM1QyxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzlDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDM0QsUUFBUSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QixPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLGdCQUFnQixHQUFHLFNBQVMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO0FBQzFELEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3JCO0FBQ0EsRUFBRSxJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakM7QUFDQSxFQUFFLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDekMsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTTtBQUN0QixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCO0FBQ0EsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDdkIsTUFBTSxFQUFFLENBQUM7QUFDVDtBQUNBLEVBQUUsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUNsQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLElBQUksSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzlDLElBQUksSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLElBQUksSUFBSSxHQUFHLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDbkQsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDMUI7QUFDQSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUMxQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDbEM7QUFDQSxFQUFFQSxXQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLEVBQUUsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDO0FBQzNCLEVBQUUsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCO0FBQ0EsRUFBRSxPQUFPLGFBQWEsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTtBQUMzRCxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7QUFDMUI7QUFDQSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDekM7QUFDQSxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0M7QUFDQSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDckMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDO0FBQzNCLEtBQUs7QUFDTDtBQUNBLElBQUksVUFBVSxFQUFFLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6QztBQUNBLEVBQUUsUUFBUSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLGtCQUFrQixHQUFHO0FBQ3pCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCO0FBQ3BDLEVBQUUsR0FBRyxFQUFFLGdCQUFnQjtBQUN2QixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQSxJQUFJQyxVQUFRLEdBQUcsU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3BDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDckMsRUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbEQsRUFBRSxPQUFPLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxjQUFjLEdBQUcsU0FBUyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDMUQsRUFBRSxPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLElBQUksR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDNUIsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFVBQVUsR0FBRyxTQUFTLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN2RCxFQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxXQUFXLEdBQUcsU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUN4RSxFQUFFLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxVQUFRLENBQUM7QUFDMUYsRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDakIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDWDtBQUNBLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUN6QyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNCLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFNBQVMsR0FBRztBQUNoQixFQUFFLFNBQVMsRUFBRSxTQUFTLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUNwRCxJQUFJLElBQUksTUFBTSxJQUFJLENBQUMsRUFBRTtBQUNyQixNQUFNLE9BQU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEUsS0FBSyxNQUFNO0FBQ1g7QUFDQSxNQUFNLE9BQU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM1RCxLQUFLO0FBQ0wsR0FBRztBQUNILEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUNsRSxJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUM5RCxHQUFHO0FBQ0gsRUFBRSxTQUFTLEVBQUUsU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDcEQsSUFBSSxPQUFPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDMUQsR0FBRztBQUNILEVBQUUsR0FBRyxFQUFFLFNBQVMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3hDLElBQUksT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbEUsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDL0QsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDOUQsU0FBUyxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUN2RSxFQUFFLElBQUksSUFBSSxDQUFDO0FBQ1g7QUFDQSxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ2xCLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNsQixHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQztBQUNwRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDbEMsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsR0FBRyxNQUFNO0FBQ1QsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEQsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBLElBQUksVUFBVSxHQUFHVCxVQUFRLENBQUM7QUFDMUIsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNOLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDTixFQUFFLG9CQUFvQixFQUFFLE1BQU07QUFDOUIsRUFBRSxRQUFRLEVBQUUsV0FBVztBQUN2QixFQUFFLGFBQWEsRUFBRSxFQUFFO0FBQ25CLEVBQUUsVUFBVSxFQUFFLEVBQUU7QUFDaEIsRUFBRSxRQUFRLEVBQUUsS0FBSztBQUNqQixFQUFFLGFBQWEsRUFBRSxJQUFJO0FBQ3JCLENBQUMsQ0FBQyxDQUFDO0FBQ0g7QUFDQSxJQUFJLFlBQVksR0FBRyxTQUFTLFVBQVUsQ0FBQyxPQUFPLEVBQUU7QUFDaEQsRUFBRSxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3QixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO0FBQ3ZFLEVBQUUsSUFBSSxPQUFPLEdBQUcsSUFBSSxLQUFLLFVBQVUsQ0FBQztBQUNwQyxFQUFFLElBQUksSUFBSSxHQUFHLE9BQU8sR0FBRyxVQUFVLENBQUMsRUFBRTtBQUNwQyxJQUFJLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUNuQixJQUFJLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ25DLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLElBQUksR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDOUIsSUFBSSxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDO0FBQ3ZCLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ25CLEVBQUUsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvRSxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksZUFBZSxHQUFHLFNBQVMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFO0FBQ3JFLEVBQUUsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUMvQixFQUFFLElBQUksR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVCLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsRUFBRSxJQUFJLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixFQUFFLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNqQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM1QyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM1QyxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM5QixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDbEI7QUFDQSxJQUFJLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDdEMsTUFBTSxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkUsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFD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RUFBRTtBQUN2QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQztBQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUMzRCxRQUFRLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxPQUFPO0FBQ1AsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUU7QUFDdkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEM7QUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDM0QsUUFBUSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsT0FBTztBQUNQLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFO0FBQ3hDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxF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QUFJLFlBQVksSUFBSSxRQUFRLEVBQUU7QUFDeEQsVUFBVSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMsVUFBVSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQzVCLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQUU7QUFDdkMsVUFBVSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLFVBQVUsVUFBVSxHQUFHLElBQUksQ0FBQztBQUM1QixTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUM1QixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RELEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNILEVBQUUsV0FBVyxFQUFFLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUM3QyxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUMsR0FBRztBQUNILEVBQUUsVUFBVSxFQUFFLFNBQVMsVUFBVSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDckQsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEI7QUFDQSxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtBQUMxQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDckIsS0FBSyxNQUFNLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRTtBQUMvQixNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzQixJQUFJLFVBQVUsQ0FB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QU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNsRjtBQUNBLElBQUksSUFBSSxhQUFhLEVBQUU7QUFDdkIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRCxLQUFLLE1BQU07QUFDWCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEMsS0FBSztBQUNMO0FBQ0EsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztBQUN0QixNQUFNLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWTtBQUM3QixNQUFNLEtBQUssRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDO0FBQ3JDLE1BQU0sUUFBUSxFQUFFLFlBQVk7QUFDNUIsTUFBTSxLQUFLLEVBQUUsS0FBSztBQUNsQixLQUFLLENBQUMsQ0FBQztBQUNQLEdBQUc7QUFDSCxDQUFDLEVBQUU7QUFDSCxFQUFFLElBQUksRUFBRSxVQUFVO0FBQ2xCLEVBQUUsS0FBSyxFQUFFLElBQUk7QUFDYixFQUFFLEtBQUssRUFBRSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxVQUFVO0FBQzdFLEVBQUUsUUFBUSxFQUFFLFNBQVMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ3ZELElBQUksSUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDMUMsUUFBUSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMxQixRQUFRLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0I7QUFDQSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxT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USxLQUFLLFNBQVMsQ0FBQztBQUNoQyxDQUFDLENBQUM7QUFDRixJQUFJLElBQUksR0FBRyxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ3JDLEVBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUNGLElBQUksSUFBSSxHQUFHLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDckMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDM0MsRUFBRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxFQUFFO0FBQzNDLElBQUksT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNyQyxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDMUMsRUFBRSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQzFCLEVBQUUsT0FBTyxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFVBQVUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMxQyxFQUFFLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDbEMs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S0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMvQyxFQUFFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUM3RSxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEMsR0FBRyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQzdDLEVBQUUsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQzdFLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4QyxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxVQUFVLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDbkQsRUFBRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzlGLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZO0FBQy9CLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxLQUFLLEVBQUUsR0FBRyxF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QUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFO0FBQ25DLFNBQVMsQ0FBQztBQUNWLE9BQU8sQ0FBQztBQUNSO0FBQ0EsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNuQyxNQUFNLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbkMsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxXQUFXLEdBQUcsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUN2QyxJ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RyxLQUFLLENBQUM7QUFDdEIsTUFBTSxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLEtBQUssTUFBTSxJQUFJLE1BQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO0FBQy9DLE1BQU0sSUFBSSxZQUFZLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDckMsUUFBUSxJQUFJLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUM1RDtBQUNBO0FBQ0EsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlELFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5RCxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlEO0FBQ0EsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDO0FBQ3JCLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQztBQUNyQixRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFDckIsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDO0FBQ3JCLFFBQVEsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNqRDtBQUNB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O0FBQ2xDLFFBQVEsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzlCLFFBQVEsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ2xDLFFBQVEsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEIsUUFBUSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN0QixRQUFRLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLFFBQVEsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEI7QUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRTtBQUN2QixVQUFVLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUMzQixVQUFVLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDcEIsVUFBVSxHQUFHLEdBQUcsTUFBTSxDQUFDO0FBQ3ZCLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO0FBQ3ZCLFVBQVUsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQzNCLFVBQVUsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNwQixVQUFVLEdBQUcsR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFDckIsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDO0FBQ3JCLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQztBQUNyQixRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFDckIsUUFBUSxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxZQUFZLElBQUksT0FBTyxDQUFDLFlBQVksSUFBSSxNQUFNLEVBQUU7QUFDeEQsTUFBTSxxQkFBcUIsQ0FBQyxN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LElBQUksR0FBRyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRixNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUNmLEdBQUc7QUFDSCxFQUFFLE1BQU0sRUFBRSxTQUFTLE1BQU0sQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFO0FBQzVDLElBQUksSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDO0FBQzNCLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEMsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUNmLEdBQUc7QUFDSCxFQUFFLEdBQUcsRUFBRSxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQ3BDLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDeEIsSUFBSSxJQUFJLE1BQU0sQ0FBQztBQUNmLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQyxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FB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b0IsQ0FBQyxNQUFNLEVBQUU7QUFDdEMsRUFBRSxPQUFPLFlBQVk7QUFDckIsSUFBSSxJQUFJLElBQUksR0FBRyxTQUFTLENBQUM7QUFDekIsSUFBSSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDekI7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDM0IsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsTUFBTSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzNDLEtBQUs7QUFDTCxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQy9DLFFBQVEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLE9BQU87QUFDUDtBQUNBLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDekUsVUFBVSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzlEO0FBQ0EsVUFBVSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxZQUFZLElBQUksR0FBRyxHQUFHLElBQUksQ0FB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QUFDLE9BQU8sQ0FBQyxVQUFVLEtBQUssRUFBRTtBQUMxTCxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFDLENBQUM7QUFDSDtBQUNBLElBQUksTUFBTSxHQUFHO0FBQ2IsRUFBRSxHQUFHLEVBQUUsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFO0FBQzFCLElBQUksSUFBSSxRQUFRLENBQUM7QUFDakIsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDbEI7QUFDQSxJQUFJLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkMsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDdEI7QUFDQSxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO0FBQ25DO0FBQ0EsUUFBUSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ2xDLE9BQU8sTUFBTTtBQUNiO0FBQ0EsUUFBUSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDdkI7QUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzlDLFVBQVUsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFVBQVUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNqQyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0MsT0FBTztBQUNQLEtBQUs7QUFDTCxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzFCLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQzFCLFFBQVEsUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsRUFB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Q3hCLFVBQVUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxVQUFVLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsVUFBVSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLFVBQVUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxVQUFVLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsVUFBVSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLFVBQVUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkUsVUFBVSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxVQUFVLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLE9BQU8sQ0FB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QUMsT0FBTyxDQUFDLENBQUM7QUFDMUMsSUFBSSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDdEIsSUFBSSxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNuQyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixJQUFJLFFBQVEsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLElBQUksUUFBUSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDM0IsSUFBSSxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekMsSUFBSSxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekMsSUFBSSxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUN6QixJQUFJLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVCLElBQUksUUFBUSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNCLElBQUksUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzVELElBQUksUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzVELElBQUksUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdB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LFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRixNQUFNLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2RCxNQUFNLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2RCxNQUFNLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2RCxNQUFNLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2RCxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUNyQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sVUFBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0FBQzNCLElBQUksSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFO0FBQ0EsSUFBSSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7QUFDN0I7QUFDQSxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDMUQsTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzFELE1BQU0sT0FBTztBQUNiLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzlCLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzlCLE9BQU8sQ0FBQztBQUNSLEtBQUssTUFBTTtBQUNYLE1BQU0sT0FBTztBQUNiLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxTQUFTO0FBQzFCLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxTQUFTO0FBQzFCLE9BQU8sQ0FBQztBQUNSLEtBQUs7QUFDTCxHQUFHLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxnQkFBZ0IsR0FBRyxTQUFTLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFO0FBQzFFO0FBQ0E7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDOUIsRUFBRSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ25DLEVBQUUsSUFBSSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDaEM7QUFDQSxFQUFFLElBQUksSUFBSSxLQUFLLFVBQVUsQ0FBQyxLQUFLLEVBQUU7QUFDakM7QUFDQTtBQUNBLElBQUksVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDNUIsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0MsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2hCLE1BQU0sSUFBSSxFQUFFLGFBQWE7QUFDekIsTUFBTSxNQUFNLEVBQUUsSUFBSTtBQUNsQixLQUFLLENBQUMsQ0FBQztBQUNQLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxNQUFNLEdBQUcsU0FBUyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUJBQW1CLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzNDO0FBQ0EsRUFBRSxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNsQztBQUNBLEVBQUUsc0JBQXNCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlDO0FBQ0EsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDOUI7QUFDQSxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM5QixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxtQkFBbUIsR0FBRyxTQUFTLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUU7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2RCxJQUFJLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkMsSUFBSSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLE1BQU0sSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekU7QUFDQSxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzdDLFFBQVEsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0UsUUFBUSxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDekQsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLGNBQWMsR0FBRyxTQUFTLGNBQWMsQ0FBQyxHQUFHLEVBQUU7QUFDbEQsRUFBRSxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3hDLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGFBQWEsR0FBRyxTQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUU7QUFDOUU7QUFDQSxFQUFFLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDN0IsRUFBRSxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQzdCO0FBQ0EsRUFBRSxJQUFJLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFO0FBQ3JELElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7QUFDckQsRUFBRSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7QUFDckQsRUFBRSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDdEI7QUFDQTtBQUNBLEVBQUUsSUFBSSxDQUFDLEtBQUssVUFBVSxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDNUMsSUFBSSxVQUFVLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzdDLElBQUksVUFBVSxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM3QyxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksT0FBTyxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNuRTtBQUNBLEVBQUUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztBQUM5QztBQUNBLElBQUksSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxHQUFHLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUNoRjtBQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsS0FBSyxHQUFHLFVBQVUsR0FBRyxRQUFRLENBQUM7QUFDL0MsSUFBSSxJQUFJLE1BQU0sR0FBRyxLQUFLLEdBQUcsVUFBVSxHQUFHLFFBQVEsQ0FBQztBQUMvQyxHQUFHLE1BQU07QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNsRSxJQUFJLElBQUksTUFBTSxHQUFHLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDNUU7QUFDQSxJQUFJLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN4QyxJQUFJLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN4QyxJQUFJLElBQUksV0FBVyxHQUFHLFNBQVMsR0FBRyxTQUFTLEdBQUcsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUNwRSxJQUFJLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUM7QUFDQTtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksV0FBVyxDQUFDO0FBQzFFLElBQUksSUFBSSxNQUFNLEdBQUcsS0FBSyxHQUFHLFNBQVMsR0FBRyxRQUFRLENBQUM7QUFDOUMsSUFBSSxJQUFJLE1BQU0sR0FBRyxLQUFLLEdBQUcsU0FBUyxHQUFHLFFBQVEsQ0FBQztBQUM5QyxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7QUFDdkIsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQztBQUM1QixJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDO0FBQzVCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7QUFDdkIsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQztBQUM1QixJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDO0FBQzVCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxFQUFFLE9BQU87QUFDVCxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFlBQVksR0FBRyxTQUFTLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDL0QsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDZCxJQUFJLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztBQUMzQyxHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztBQUMzQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtBQUNkLElBQUksSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQzNDLEdBQUcsTUFBTTtBQUNULElBQUksSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQzNDLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUU7QUFDdEMsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsR0FBRyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDaEUsR0FBRyxNQUFNO0FBQ1QsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGlCQUFpQixHQUFHLFNBQVMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDakU7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7QUFDekIsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3pCLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDM0IsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUMxQixFQUFFLElBQUksUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDekIsRUFBRSxJQUFJLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNmO0FBQ0EsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtBQUMxQixJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2Q7QUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEIsSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUNmLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtBQUMxQixJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCO0FBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUNmLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksU0FBUyxFQUFFO0FBQ3JFLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QixJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQztBQUNBLElBQUksT0FBTyxHQUFHLENBQUM7QUFDZixHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLFNBQVMsSUFBSSxRQUFRLElBQUksUUFBUSxJQUFJLFNBQVMsRUFBRTtBQUNyRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEIsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDaEM7QUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLFFBQVEsSUFBSSxTQUFTLENBQUMsRUFBRTtBQUN2RSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEI7QUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLFFBQVEsSUFBSSxTQUFTLENBQUMsRUFBRTtBQUN2RSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEI7QUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2Ys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LENBQUMsQ0FBQztBQUM1QyxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEQsSUFBSSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDO0FBQ0EsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7QUFDOUMsTUFBTSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUMxQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQzFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUU7QUFDMUQ7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDM0Q7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRTtBQUNuQixJQUFJLElBQUksR0FBRyxHQUFHO0FBQ2QsTUFB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QUMsQ0FBQyxDQUFDLENBQUM7QUFDbkIsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkQsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkQsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEQsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEQsS0FBSztBQUNMO0FBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RCLElBQUksTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QixHQUFHO0FBQ0g7QUFDQSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ3BDLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FB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LEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRTtBQUNqQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFO0FBQ2xCLEdBQUcsQ0FBQyxDQUFDO0FBQ0w7QUFDQSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDaEMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxHQUFHLEVBQUU7QUFDL0QsTUFBTSxPQUFPO0FBQ2IsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDaEIsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDaEIsT0FBTyxDQUFDO0FBQ1IsS0FBSyxDQUFDLENBQUM7QUFDUCxHQUFHLE1BQU07QUFDVDtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdCLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDaEQ7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRTtBQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtBQUN2QixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEMsT0FBTyxNQUFNO0FBQ2IsUUFBUSxJQUFJLEdBQUcsR0FBRyxJ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QUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN0RCxJQUFJLElBQUksYUFBYSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQztBQUNyRTtBQUNBLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksRUFBRTtBQUNqQyxNQUFNLE9BQU87QUFDYixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRCxJQUFJLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRCxJQUFJLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMzRCxJQUFJLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUM5RCxJQUFJLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUM5RCxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUM5QjtBQUNBLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDOUIsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDOUI7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LElBQUksRUFBRTtBQUM3QyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0FBQ2xDLEVBQUUsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUM7QUFDOUMsRUFBRSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQztBQUMxQyxFQUFFLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEtBQUssYUFBYSxDQUFDO0FBQ3BELEVBQUUsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUM7QUFDOUMsRUFBRSxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQztBQUM5QyxFQUFFLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDO0FBQ3RDO0FBQ0EsRUFBRSxJQUFJLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDbkIsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQzdDO0FBQ0EsRUFBRSxJQUFJLFVBQVUsRUFBRTtBQUNsQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLEdBQUcsTUFBTTtBQUNULElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7QUFDNUIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztBQUM1QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO0FBQ3hCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7QUFDeEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztBQUNqQixFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ2pCO0FBQ0E7QUFDQSxFQUFFLElBQUksVUFBVSxFQUFFO0FBQ2xCLElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLEdBQUcsTUFBTSxJQUFJLGFBQWEsSUFBSSxVQUFVLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtBQUNoRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDeEIsSUFBSSxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDcEQsSUFBSSxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDcEQsSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUN4QixJQUFJLEtBQUssR0FBRyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLEdBQUcsTUFBTTtBQUNULElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDMUIsSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQztBQUMxQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BEO0FBQ0E7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDckIsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3JCO0FBQ0EsRUFBRSxJQUFJLFVBQVUsRUFBRTtBQUNsQixJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQy9CLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUM7QUFDL0IsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUN4QixFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ3hCO0FBQ0EsRUFBRSxJQUFJLFVBQVUsRUFBRTtBQUNsQixJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDeEI7QUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNsQyxNQUFNLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLE1BQU0sSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN4QyxLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLEtBQUs7QUFDTCxHQUFHLE1BQU0sSUFBSSxhQUFhLElBQUksVUFBVSxJQUFJLE1BQU0sRUFBRTtBQUNwRCxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDeEIsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO0FBQzFCLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ25CLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbkMsTUFBTSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEM7QUFDQSxNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2RCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbkUsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzFELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN0RSxLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQztBQUNBLE1BQU0sSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0QjtBQUNBLE1BQU0sSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0QjtBQUNBLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMxRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdEUsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNuRSxLQUFLO0FBQ0w7QUFDQSxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDeEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZELEVBQUUsRUFBRSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDdEIsRUFBRSxFQUFFLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUN0QjtBQUNBO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDZCxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNkO0FBQ0EsRUFBRSxJQUFJLFVBQVUsRUFBRTtBQUNsQixJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDeEI7QUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU07QUFDekMsTUFBTSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEMsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0MsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2RDtBQUNBO0FBQ0EsRUFBRSxJQUFJLFVBQVUsRUFBRTtBQUNsQixJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRCxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRCxHQUFHLE1BQU0sSUFBSSxhQUFhLElBQUksVUFBVSxJQUFJLE1BQU0sSUFBSSxRQUFRLEVBQUU7QUFDaEUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUN2QixJQUFJLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNoRSxJQUFJLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNoRSxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLElBQUks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QUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzVCLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzVCLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN0RCxJQUFJLElBQUksVUFBVSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDaEM7QUFDQSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xOLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEQsSUFBSSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoRDtBQUNBLElBQUksRUFBRSxDQUFDLFFBQVEs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QVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLEdBQUcsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdFEsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUU7QUFDN0U7QUFDQSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0FBQ2xDLEVBQUUsRUFBRSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDM0IsRUFBRSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTTtBQUM5QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTTtBQUM5QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSTtBQUMxQixNQUFNLElB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QyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxRTtBQUNBLE1BQU0sSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLEVBQUU7QUFDekIsVUFBVSxHQUFHLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUMxQixNQUFNLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2QyxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLHlCQUF5QixHQUFHLFVBQVUsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUM1RCxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0FBQ2xDO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO0FBQ2hDLElBQUksSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU07QUFDaEMsUUFBUSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU07QUFDaEMsUUFBUSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUk7QUFDNUIsUUFBUSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUk7QUFDNUIsUUFBUSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUk7QUFDNUIsUUFBUSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUk7QUFDNUIsUUFBUSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVE7QUFDcEMsUUFBUSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUNyQyxJQUFJLElBQUksUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUQsSUFBSSxJQUFJLFNBQVMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcs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RyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNO0FBQzdDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTTtBQUM3QyxPQUFPLENBQUM7QUFDUixNQUFNLElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hHO0FBQ0EsTUFBTSxJQUFJLGFBQWEsRUFBRTtBQUN6QixRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQztBQUM1RSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQztBQUM1RSxPQUFPLE1BQU07QUFDYixRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQzlELFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDOUQsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxNQUFNLElBQUksT0FBTyxJQUFJLFdBQVcsRUFBRTtBQUMxQyxNQUFNLFdBQVcsR0FBRyxJQUFJ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QU0sSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRTtBQUN6SCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ25CLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekM7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN2RDtBQUNBLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZEO0FBQ0EsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7QUFDckMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0csT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDZDtBQUNBLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN6QyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqQyxLQUFLLE1BQU07QUFDWCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUNmLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRixNQUFNLEVBQUUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BGLEtBQUs7QUFDTCxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRTtBQUN6QztBQUNBLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6RDtBQUNBLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO0FBQ3hFLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO0FBQ3hFLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFO0FBQ3pDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDbkIsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDO0FBQ0EsSUFBSSxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDcEMsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDcEMsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMs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LENBQUMsTUFBTSxFQUFFLENBQUM7QUFDakMsSUFBSSxJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDakM7QUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRTtBQUMzQyxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNyQixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDaEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDbEQsSUFBSSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNsRCxJQUFJLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ2hELElBQUksSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDakQsSUFBSSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNoRCxJQUFJLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2pEO0FBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdFO0FBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxD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QSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUNuQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUNuQyxNQUFNLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEI7QUFDQSxNQUFNLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtBQUNyRSxRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRCxRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRCxRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkQsUUFBUSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZELE9BQU8sTUFBTTtBQUNiLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUks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LElBQUksQ0FBQyxDQUFDO0FBQ25DLFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUNuQztBQUNBLFFBQVEsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlCLFFBQVEsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUNuQyxRQUFRLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM1QjtBQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BELFFBQVEsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BELFFBQVEsSUFBSSxJQUFJLEdBQUc7QUFDbkIsVUFBVSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUk7QUFDekQsVUFBVSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUk7QUFDekQsU0FBUyxDQUFDO0FBQ1Y7QUFDQSxRQUFRLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRTtBQUN2QyxVQUFVLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO0FBQ3JELFVBQVUsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDM0MsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyQyxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JDO0FB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RSxLQUFLLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQzNHLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsWUFBWSxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQzlILFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsWUFBWSxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQzlILFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsWUFBWSxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQzlILFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsWUFBWSxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQzlILFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQO0FBQ0EsTUFBTSxPQUFPLEtBQUssQ0FBQztBQUNuQixLQUFLO0FBQ0wsR0FBRyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsb0JBQW9CLEdBQUcsWUFBWTtBQUN6QyxFQUFFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHO0FBQzlFLElBQUksUUFBUSxFQUFFLElBQUk7QUFDbEIsSUFBSSxJQUFJLEVBQUUsZUFBZTtBQUN6QixJQUFJLFlBQVksRUFBRSwyQkFBMkIsRUFBRTtBQUMvQyxJQUFJLE1BQU0sRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25ELElBQUksSUFBSSxFQUFFLFNBQVMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDbEUsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RixLQUFLO0FBQ0wsSUFBSSxzQkFBc0IsRUFBRSxTQUFTLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUM3RixNQUFNLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDakMsTUFBTSxJQUFJLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sSUFBSSxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUN6QixNQUFNLElBQUksTUFBTSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDaEMsTUFBTSxJQUFJLElBQUksR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQzlCLE1BQU0sSUFBSSxNQUFNLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxNQUFNLElBQUksSUFBSSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDOUI7QUFDQSxNQUFNLE9BQU87QUFDYixRQUFRLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNyRixRQUFRLFFBQVEsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNoRixRQUFRLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUM3RSxRQUFRLFVBQVUsRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNsRixPQUFPLENBQUM7QUFDUixLQUFLO0FBQ0wsSUFBSSxhQUFhLEVBQUUsU0FBUyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFO0FBQ3RGLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsT0FBTyxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RyxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUosTUFBTSxPQUFPLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMzRCxLQUFLO0FBQ0wsSUFBSSxVQUFVLEVBQUUsU0FBUyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3BGO0FBQ0EsTUFBTSxJQUFJLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRTtBQUM1SCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLE9BQU87QUFDUDtBQUNBO0FBQ0EsTUFBTSxJQUFJLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRTtBQUM1SCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hGLE1BQU0sT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxUCxLQUFLO0FBQ0wsR0FBRyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsY0FBYyxHQUFHLFlBQVk7QUFDbkMsRUFBRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUc7QUFDckMsSUFBSSxRQUFRLEVBQUUsSUFBSTtBQUNsQixJQUFJLElBQUksRUFBRSxRQUFRO0FBQ2xCLElBQUksTUFBTSxFQUFFLGlDQUFpQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkQsSUFBSSxJQUFJLEVBQUUsU0FBUyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUNsRSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZGLEtBQUs7QUFDTCxJQUFJLGFBQWEsRUFBRSxTQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUU7QUFDdEY7QUFDQSxNQUFNLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztBQUNwQixNQUFNLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUNuQixNQUFNLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztBQUNwQixNQUFNLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLE9BQU8sRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkc7QUFDQSxNQUFNLElBQUkseUJBQXlCLEdBQUcsU0FBUyx5QkFBeUIsQ0FBQyxHQUFHLEVBQUU7QUFDOUU7QUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLFdBQVcsQ0FBQztBQUM3QixVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25CLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkIsU0FBUyxFQUFFO0FBQ1gsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuQixVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25CLFNBQVMsRUFBRTtBQUNYLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkIsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuQixTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDZixRQUFRLElBQUksRUFBRSxHQUFHLFdBQVcsQ0FBQztBQUM3QixVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25CLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkIsU0FBUyxFQUFFO0FBQ1gsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuQixVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25CLFNBQVMsRUFBRTtBQUNYLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkIsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuQixTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDZixRQUFRLElBQUksRUFBRSxHQUFHLFdBQVcsQ0FBQztBQUM3QixVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25CLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkIsU0FBUyxFQUFFO0FBQ1gsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuQixVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25CLFNBQVMsRUFBRTtBQUNYLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkIsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuQixTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDZixRQUFRLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRixPQUFPLENBQUM7QUFDUjtBQUNBLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUseUJBQXlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLHlCQUF5QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN0TSxNQUFNLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNELEtBQUs7QUFDTCxJQUFJLHVCQUF1QixFQUFFLFNBQVMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQy9GLE1BQU0sSUFBSSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUMxQixNQUFNLElBQUksRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDekIsTUFBTSxJQUFJLE1BQU0sR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLE1BQU0sSUFBSSxJQUFJLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUM5QixNQUFNLElBQUksTUFBTSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDaEMsTUFBTSxJQUFJLElBQUksR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQzlCLE1BQU0sSUFBSSxjQUFjLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xFLE1BQU0sSUFBSSxPQUFPLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQztBQUNoRCxNQUFNLElBQUksT0FBTyxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUM7QUFDL0MsTUFBTSxJQUFJLGFBQWEsR0FBRyxjQUFjLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztBQUNqRTtBQUNBLE1BQU0sSUFBSSxHQUFHLEdBQUc7QUFDaEIsUUFBUSxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLEdBQUcsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxFQUFFLE1BQU0sQ0FBQztBQUNyRyxRQUFRLFFBQVEsRUFBRSxDQUFDLElBQUksR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksR0FBRyxhQUFhLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBQ2hHLFFBQVEsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxPQUFPLEVBQUUsSUFBSSxHQUFHLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUM7QUFDN0YsUUFBUSxVQUFVLEVBQUUsQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUNsRyxPQUFPLENBQUM7QUFDUixNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUMvQixNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUNoQyxNQUFNLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUNyQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QyxNQUFNLE9BQU8sR0FBRyxDQUFDO0FBQ2pCLEtBQUs7QUFDTCxJQUFJLFVBQVUsRUFBRSxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDcEYsTUFBTSxJQUFJLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEUsTUFBTSxJQUFJLE9BQU8sR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDO0FBQ2hELE1BQU0sSUFBSSxPQUFPLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQztBQUMvQztBQUNBLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRTtBQUNsSCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLE9BQU87QUFDUDtBQUNBO0FBQ0EsTUFBTSxJQUFJLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssR0FBRyxDQUFDLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQ2xILFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDekY7QUFDQSxNQUFNLElBQUksU0FBUyxHQUFHLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFO0FBQ3pELFFBQVEsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFFBQVEsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFFBQVEsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFFBQVEsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCO0FBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsUUFBUSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwQyxRQUFRLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEMsUUFBUSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwQztBQUNBLFFBQVEsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO0FBQzlELFVBQVUsSUFBSSxLQUFLLEdBQUcsb0JBQW9CLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN2RCxVQUFVLElBQUksS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RSxVQUFVLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDckQsWUFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQyxXQUFXLENBQUMsQ0FBQztBQUNiO0FBQ0EsVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3JDLFlBQVksT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTyxDQUFDO0FBQ1I7QUFDQSxNQUFNLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDckQ7QUFDQSxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3BELFFBQVEsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLFFBQVEsSUFBSSxTQUFTLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9DLFFBQVEsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDM0M7QUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtBQUN2QixVQUFVLFNBQVM7QUFDbkIsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsUUFBUSxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsUUFBUSxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsUUFBUSxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUM7QUFDQSxRQUFRLElBQUksU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO0FBQzFDLFVBQVUsT0FBTyxJQUFJLENBQUM7QUFDdEIsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLFNBQVMsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtBQUM3QyxVQUFVLE9BQU8sSUFBSSxDQUFDO0FBQ3RCLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ25CLEtBQUs7QUFDTCxHQUFHLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxZQUFZO0FBQ2pELEVBQUUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHO0FBQy9GLElBQUksUUFBUSxFQUFFLElBQUk7QUFDbEIsSUFBSSxJQUFJLEVBQUUsd0JBQXdCO0FBQ2xDLElBQUksTUFBTSxFQUFFLGlDQUFpQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkQsSUFBSSxJQUFJLEVBQUUsU0FBUyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUNsRSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZGLEtBQUs7QUFDTCxJQUFJLGFBQWEsRUFBRSxTQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUU7QUFDdEYsTUFBTSxJQUFJLFNBQVMsR0FBRyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUNwRCxNQUFNLElBQUksU0FBUyxHQUFHLEtBQUssSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ3JELE1BQU0sSUFBSSxPQUFPLEdBQUcsU0FBUyxDQUFDO0FBQzlCLE1BQU0sSUFBSSxPQUFPLEdBQUcsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDbEQsTUFBTSxJQUFJLGdCQUFnQixHQUFHLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckg7QUFDQSxNQUFNLElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUN2QyxRQUFRLE9BQU8sZ0JBQWdCLENBQUM7QUFDaEMsT0FBTztBQUNQO0FBQ0EsTUFBTSxPQUFPLDJCQUEyQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3JGLEtBQUs7QUFDTCxJQUFJLFVBQVUsRUFBRSxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDcEYsTUFBTSxJQUFJLFlBQVksR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDaEUsTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDO0FBQ2xDO0FBQ0EsTUFBTSxJQUFJLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDM0csUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixPQUFPO0FBQ1A7QUFDQTtBQUNBLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQzNHLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksVUFBVSxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUMvQyxNQUFNLElBQUksV0FBVyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUNqRCxNQUFNLElBQUksTUFBTSxHQUFHLENBQUMsT0FBTyxHQUFHLFVBQVUsRUFBRSxPQUFPLEdBQUcsV0FBVyxFQUFFLE9BQU8sR0FBRyxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sR0FBRyxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sR0FBRyxVQUFVLEVBQUUsT0FBTyxHQUFHLFdBQVcsQ0FBQyxDQUFDO0FBQzVLO0FBQ0EsTUFBTSxJQUFJLHdCQUF3QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUU7QUFDbEQsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixPQUFPO0FBQ1A7QUFDQTtBQUNBLE1BQU0sSUFBSSxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLFlBQVksRUFBRSxPQUFPLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDOUgsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixPQUFPO0FBQ1A7QUFDQTtBQUNBLE1BQU0sSUFBSSxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLFlBQVksRUFBRSxPQUFPLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDOUgsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixPQUFPO0FBQ1A7QUFDQSxNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ25CLEtBQUs7QUFDTCxHQUFHLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxZQUFZO0FBQ3ZDLEVBQUUsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDeEMsRUFBRSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDdEIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDekIsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLGlDQUFpQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNqRCxFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0FBQ2hDLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7QUFDOUIsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDeEIsRUFBRSxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztBQUN0QyxFQUFFO0FBQ0YsSUFBSSxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUNuRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDOUQsR0FBRztBQUNILEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsaUNBQWlDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUUsaUNBQWlDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkYsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsaUNBQWlDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEYsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLGlDQUFpQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RixFQUFFLElBQUksV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDLEVBQUU7QUFDRixJQUFJLElBQUksV0FBVyxHQUFHLHNCQUFzQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuRCxJQUFJLElBQUksV0FBVyxHQUFHLHNCQUFzQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdEO0FBQ0EsSUFBSSxJQUFJLFdBQVcsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUM7QUFDeEI7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNyRCxNQUFNLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDO0FBQ3hDLE1BQU0sV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDO0FBQzVDLEtBQUs7QUFDTDtBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDckMsTUFBTSxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsTUFBTSxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RCxNQUFNLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEQsTUFBTSxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RCxLQUFLO0FBQ0wsR0FBRztBQUNILEVBQUUsV0FBVyxHQUFHLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2hELEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDNUMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0ksRUFBRTtBQUNGLElBQUksSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDM0MsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3RELEdBQUc7QUFDSDtBQUNBLEVBQUUsVUFBVSxDQUFDLFdBQVcsR0FBRyxVQUFVLE1BQU0sRUFBRTtBQUM3QztBQUNBLElBQUksSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixJQUFJLElBQUksSUFBSSxHQUFHLFVBQVUsR0FBRyxHQUFHLENBQUM7QUFDaEMsSUFBSSxJQUFJLEtBQUssQ0FBQztBQUNkO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDNUI7QUFDQSxNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ25CLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSSxPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xELEdBQUcsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2Y7QUFDQSxLQUFLLENBQUMsWUFBWSxHQUFHLFlBQVk7QUFDakMsRUFBRSxPQUFPLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUNqRCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxNQUFNLEdBQUcsVUFBVSxPQUFPLEVBQUU7QUFDbEMsRUFBRSxPQUFPLEdBQUcsT0FBTyxJQUFJLGlCQUFpQixFQUFFLENBQUM7QUFDM0MsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDZjtBQUNBLEVBQUUsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEtBQUssU0FBUyxFQUFFO0FBQ3pDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUM1QixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxDQUFDLGNBQWMsS0FBSyxTQUFTLEVBQUU7QUFDdEMsSUFBSSxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztBQUN6QixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUU7QUFDcEMsSUFBSSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztBQUN2QixHQUFHO0FBQ0g7QUFDQSxFQUFFLENBQUMsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQzFCLEVBQUUsQ0FBQyxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsWUFBWSxHQUFHLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRTtBQUM3QztBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ3RCLElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO0FBQ3hCLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7QUFDdkQsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7QUFDdkMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQ1gsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNWLElBQUksUUFBUSxFQUFFLFFBQVE7QUFDdEIsR0FBRyxDQUFDLENBQUM7QUFDTDtBQUNBLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDM0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNuQyxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxxQkFBcUIsR0FBRyxTQUFTLHFCQUFxQixDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO0FBQ25GLEVBQUUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO0FBQ3BDO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxlQUFlLEdBQUcsWUFBWTtBQUNwQyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNmLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNoQjtBQUNBLEVBQUUsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEVBQUU7QUFDM0IsSUFBSSxPQUFPO0FBQ1gsR0FBRyxNQUFNO0FBQ1QsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxRQUFRLEdBQUcsU0FBUyxRQUFRLENBQUMsV0FBVyxFQUFFO0FBQ2hELElBQUksSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ3JCLE1BQU0sT0FBTztBQUNiLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDcEUsTUFBTSxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sSUFBSSxTQUFTLEdBQUcsY0FBYyxFQUFFLENBQUM7QUFDdkMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNoQyxNQUFNLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxZQUFZLEdBQUcsY0FBYyxFQUFFLENBQUM7QUFDdEQ7QUFDQSxNQUFNLElBQUksQ0FBQyxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtBQUM3QyxRQUFRLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDO0FBQ2xELE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtBQUN2QyxRQUFRLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLE9BQU87QUFDUDtBQUNBLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3RCO0FBQ0EsTUFBTSxJQUFJLENBQUMsQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFO0FBQzNDLFFBQVEsQ0FBQyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFDOUIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLFFBQVEsR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxDQUFDLGVBQWUsSUFBSSxRQUFRLENBQUM7QUFDcEMsTUFBTSxDQUFDLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztBQUNsQztBQUNBLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNuRSxNQUFNLENBQUMsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0FBQy9CLEtBQUssTUFBTTtBQUNYLE1BQU0scUJBQXFCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNuRCxLQUFLO0FBQ0w7QUFDQSxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLElBQUlNLHVCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3BDLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRUEsdUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFlBQVksR0FBRyxTQUFTLFlBQVksQ0FBQyxPQUFPLEVBQUU7QUFDbEQsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxFQUFFLEdBQUcsWUFBWSxDQUFDO0FBQ3RCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7QUFDekIsS0FBSyxDQUFDLGVBQWUsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ25IO0FBQ0EsS0FBSyxDQUFDLElBQUksR0FBRyxVQUFVLE9BQU8sRUFBRTtBQUNoQyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNmLEVBQUUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDdEIsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDcEIsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDakQ7QUFDQSxFQUFFLElBQUksUUFBUSxFQUFFO0FBQ2hCLElBQUksSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUNyQyxJQUFJLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFDN0IsSUFBSSxJQUFJLFlBQVksR0FBRyxnQ0FBZ0MsQ0FBQztBQUN4RCxJQUFJLElBQUksU0FBUyxHQUFHLCtCQUErQixDQUFDO0FBQ3BELElBQUksSUFBSSx1QkFBdUIsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNoRjtBQUNBLElBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDOUMsTUFBTSxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQztBQUM5RCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtBQUNsQyxNQUFNLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkQsTUFBTSxVQUFVLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQztBQUNuQyxNQUFNLFVBQVUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLFNBQVMsR0FBRywwQkFBMEIsQ0FBQztBQUMxRSxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2RCxJQUFJLElBQUksUUFBUSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM5RDtBQUNBLElBQUksSUFBSSxRQUFRLEtBQUssUUFBUSxFQUFFO0FBQy9CLE1BQU0sSUFBSSxDQUFDLDJGQUEyRixDQUFDLENBQUM7QUFDeEcsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoRTtBQUNBLEVBQUUsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9EO0FBQ0EsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHO0FBQ2hCLElBQUksSUFBSSxFQUFFLElBQUk7QUFDZCxJQUFJLElBQUksRUFBRSxJQUFJO0FBQ2QsSUFBSSxRQUFRLEVBQUUsSUFBSTtBQUNsQixJQUFJLFdBQVcsRUFBRSxJQUFJO0FBQ3JCLElBQUksUUFBUSxFQUFFLEtBQUs7QUFDbkIsSUFBSSxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQzVCLElBQUksT0FBTyxFQUFFLEtBQUs7QUFDbEIsR0FBRyxDQUFDO0FBQ0osRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHO0FBQ2YsSUFBSSxvQkFBb0IsRUFBRSxFQUFFO0FBQzVCLEdBQUcsQ0FBQztBQUNKLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRztBQUNoQixJQUFJLEtBQUssRUFBRSxJQUFJO0FBQ2YsSUFBSSxPQUFPLEVBQUUsS0FBSztBQUNsQjtBQUNBLElBQUksYUFBYSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDdkQsSUFBSSxvQkFBb0IsRUFBRSxJQUFJO0FBQzlCLElBQUksZ0JBQWdCLEVBQUUsSUFBSTtBQUMxQixJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQzdDLElBQUksT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDakQsR0FBRyxDQUFDO0FBQ0osRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUNoQixFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUM5QixFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUMxQixFQUFFLENBQUMsQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUM7QUFDdEQsRUFBRSxDQUFDLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0FBQ2xELEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUNoRCxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQzNDO0FBQ0EsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUM5RSxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUNwQztBQUNBLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUNsRCxFQUFFLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO0FBQ3JELEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUMxQixFQUFFLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCO0FBQ0EsRUFBRSxDQUFDLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLEVBQUUsQ0FBQyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7QUFDMUIsRUFBRSxDQUFDLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQzlCLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztBQUN0RCxFQUFFLENBQUMsQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDO0FBQ3JGLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUNsRCxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0FBQy9FLEVBQUUsQ0FBQyxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFDMUIsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNsQixFQUFFLENBQUMsQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7QUFDL0IsRUFBRSxDQUFDLENBQUMsc0JBQXNCLEdBQUc7QUFDN0I7QUFDQSxJQUFJLFVBQVUsRUFBRSxHQUFHO0FBQ25CLElBQUksUUFBUSxFQUFFLEdBQUc7QUFDakIsSUFBSSxTQUFTLEVBQUUsR0FBRztBQUNsQixJQUFJLFNBQVMsRUFBRSxHQUFHO0FBQ2xCLElBQUksVUFBVSxFQUFFLEdBQUc7QUFDbkIsR0FBRyxDQUFDO0FBQ0osRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUN6QixFQUFFLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0FBQzFCLEVBQUUsQ0FBQyxDQUFDLDRCQUE0QixFQUFFLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsTUFBTSxHQUFHLFVBQVUsU0FBUyxFQUFFLElBQUksRUFBRTtBQUMxQyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNmLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNoQjtBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ3RCLElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxTQUFTLEtBQUssTUFBTSxFQUFFO0FBQzVCLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2IsSUFBSSxPQUFPO0FBQ1gsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUU7QUFDL0IsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDaEIsSUFBSSxPQUFPO0FBQ1gsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLFNBQVMsS0FBSyxLQUFLLElBQUksU0FBUyxLQUFLLFFBQVEsSUFBSSxTQUFTLEtBQUssTUFBTSxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLFNBQVMsS0FBSyxNQUFNLElBQUksU0FBUyxLQUFLLFFBQVEsSUFBSSxTQUFTLEtBQUssT0FBTyxFQUFFO0FBQ2pMLElBQUksQ0FBQyxDQUFDLDJCQUEyQixFQUFFLENBQUM7QUFDcEMsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUU7QUFDaEMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksU0FBUyxLQUFLLE1BQU0sSUFBSSxTQUFTLEtBQUssUUFBUSxJQUFJLFNBQVMsS0FBSyxPQUFPLEVBQUU7QUFDL0UsSUFBSSxDQUFDLENBQUMsb0NBQW9DLEVBQUUsQ0FBQztBQUM3QyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLEdBQUc7QUFDSDtBQUNBLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0IsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QixFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUN6QixFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNoQixDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxPQUFPLEdBQUcsWUFBWTtBQUM1QixFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNmLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDckIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFDM0I7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM5QyxJQUFJLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDcEIsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1RCxHQUFHO0FBQ0g7QUFDQSxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ2xCLEVBQUUsQ0FBQyxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUMvQixFQUFFLENBQUMsQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFDN0I7QUFDQSxFQUFFLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRTtBQUN4QixJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDbEMsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUU7QUFDdkIsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ2pDLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFO0FBQ3hCLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNsQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRTtBQUN0QixJQUFJLElBQUk7QUFDUixNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNoRCxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDaEIsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxVQUFVLEdBQUcsWUFBWTtBQUMvQixFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSyxFQUFFO0FBQ2xFLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQztBQUNIO0FBQ0EsSUFBSSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUM1QjtBQUNBLElBQUksSUFBSSxHQUFHO0FBQ1gsRUFBRSxlQUFlLEVBQUUsU0FBUyxlQUFlLENBQUMsSUFBSSxFQUFFO0FBQ2xELElBQUksT0FBTyxTQUFTLG1CQUFtQixHQUFHO0FBQzFDLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUM1QjtBQUNBLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO0FBQ2hDLFFBQVEsT0FBTztBQUNmLE9BQU8sTUFBTTtBQUNiLFFBQVEsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDcEMsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLFdBQVcsR0FBR04sTUFBSSxDQUFDLFlBQVk7QUFDekMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25DLFFBQVEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNsQztBQUNBLE1BQU0sSUFBSSxPQUFPLEdBQUcsU0FBUyxPQUFPLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRTtBQUMvRCxRQUFRLElBQUksU0FBUyxHQUFHLGNBQWMsRUFBRSxDQUFDO0FBQ3pDLFFBQVEsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO0FBQ2hELFFBQVEsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQztBQUMxQyxRQUFRLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUN0QixRQUFRLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbkMsUUFBUSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDM0M7QUFDQTtBQUNBLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUN2QixVQUFVLENBQUMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0FBQ3RDLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxJQUFJLEVBQUU7QUFDckI7QUFDQSxVQUFVLElBQUksR0FBRyxHQUFHLGNBQWMsRUFBRSxDQUFDO0FBQ3JDLFVBQVUsSUFBSSxRQUFRLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztBQUN6QyxVQUFVLElBQUksYUFBYSxHQUFHLEdBQUcsR0FBRyxjQUFjLENBQUM7QUFDbkQ7QUFDQSxVQUFVLElBQUksVUFBVSxHQUFHLFdBQVcsRUFBRTtBQUN4QztBQUNBO0FBQ0EsWUFBWSxJQUFJLGFBQWEsR0FBRyxXQUFXLElBQUksUUFBUSxHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3RTtBQUNBLFlBQVksSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxhQUFhLEVBQUU7QUFDbkUsY0FBYyxNQUFNO0FBQ3BCLGFBQWE7QUFDYixXQUFXLE1BQU07QUFDakIsWUFBWSxJQUFJLFFBQVEsRUFBRTtBQUMxQixjQUFjLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsRUFBRTtBQUN4RyxnQkFBZ0IsTUFBTTtBQUN0QixlQUFlO0FBQ2YsYUFBYSxNQUFNLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxFQUFFO0FBQzFFLGNBQWMsTUFBTTtBQUNwQixhQUFhO0FBQ2IsV0FBVztBQUNYO0FBQ0EsVUFBVSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUQ7QUFDQSxVQUFVLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDbkMsWUFBWSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN0RCxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsYUFBYTtBQUNiLFdBQVcsTUFBTTtBQUNqQixZQUFZLE1BQU07QUFDbEIsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQzdCLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEM7QUFDQSxVQUFVLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBRTtBQUM5RSxZQUFZLFdBQVcsRUFBRSxDQUFDO0FBQzFCLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTyxDQUFDO0FBQ1I7QUFDQSxNQUFNLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUk5QixNQUFJLENBQUM7QUFDM0MsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM5QyxLQUFLLENBQUM7QUFDTixHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0EsSUFBSSx5QkFBeUI7QUFDN0I7QUFDQSxZQUFZO0FBQ1osRUFBRSxTQUFTLHlCQUF5QixDQUFDLE1BQU0sRUFBRTtBQUM3QyxJQUFJLElBQUksb0JBQW9CLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzNHO0FBQ0EsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLHlCQUF5QixDQUFDLENBQUM7QUFDckQ7QUFDQSxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSXdDLE9BQUssRUFBRSxDQUFDO0FBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJQSxPQUFLLEVBQUUsQ0FBQztBQUNoQyxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSUEsT0FBSyxFQUFFLENBQUM7QUFDbkMsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNuQixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDO0FBQ3JELEdBQUc7QUFDSDtBQUNBLEVBQUUsWUFBWSxDQUFDLHlCQUF5QixFQUFFLENBQUM7QUFDM0MsSUFBSSxHQUFHLEVBQUUsV0FBVztBQUNwQixJQUFJLEtBQUssRUFBRSxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUU7QUFDbkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7QUFDdkIsUUFBUSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztBQUNsRCxPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDbkMsTUFBTSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QztBQUNBLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNoQixRQUFRLEdBQUcsR0FBRyxJQUFJQyxPQUFLLEVBQUUsQ0FBQztBQUMxQixRQUFRLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE9BQU87QUFDUDtBQUNBLE1BQU0sT0FBTyxHQUFHLENBQUM7QUFDakIsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLGFBQWE7QUFDdEIsSUFBSSxLQUFLLEVBQUUsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRTtBQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtBQUN2QixRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsZ0JBQWdCO0FBQ3pCLElBQUksS0FBSyxFQUFFLFNBQVMsY0FBYyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUU7QUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7QUFDdkIsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsc0JBQXNCO0FBQy9CLElBQUksS0FBSyxFQUFFLFNBQVMsb0JBQW9CLENBQUMsR0FBRyxFQUFFO0FBQzlDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO0FBQ3ZCLFFBQVEsT0FBTyxDQUFDLENBQUM7QUFDakIsT0FBTyxNQUFNO0FBQ2IsUUFBUSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3hDLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUscUJBQXFCO0FBQzlCLElBQUksS0FBSyxFQUFFLFNBQVMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO0FBQzdDLE1BQU0sSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUMsTUFBTSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdkMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNyQyxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUscUJBQXFCO0FBQzlCLElBQUksS0FBSyxFQUFFLFNBQVMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO0FBQzdDLE1BQU0sSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN2QyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEMsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLGtCQUFrQjtBQUMzQixJQUFJLEtBQUssRUFBRSxTQUFTLGdCQUFnQixDQUFDLEdBQUcsRUFBRTtBQUMxQyxNQUFNLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN4QixNQUFNLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLE1BQU0sSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQyxNQUFNLE9BQU8sT0FBTyxLQUFLLE1BQU0sQ0FBQztBQUNoQyxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsV0FBVztBQUNwQixJQUFJLEtBQUssRUFBRSxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUU7QUFDbkMsTUFBTSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUUsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLGFBQWE7QUFDdEIsSUFBSSxLQUFLLEVBQUUsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFO0FBQ3JDLE1BQU0sSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVc7QUFDeEMsVUFBVSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUMzQixNQUFNLElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEM7QUFDQSxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDbkIsUUFBUSxNQUFNLEdBQUcsSUFBSUQsT0FBSyxFQUFFLENBQUM7QUFDN0IsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsT0FBTztBQUNQO0FBQ0EsTUFBTSxPQUFPLE1BQU0sQ0FBQztBQUNwQixLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsVUFBVTtBQUNuQixJQUFJLEtBQUssRUFBRSxTQUFTLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLE1BQU0sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QyxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsS0FBSztBQUNkLElBQUksS0FBSyxFQUFFLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDbEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUM7QUFDQSxNQUFNLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtBQUN6QixRQUFRLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxPQUFPO0FBQ1A7QUFDQSxNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ25CLEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxpQkFBaUI7QUFDMUIsSUFBSSxLQUFLLEVBQUUsU0FBUyxlQUFlLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUM5QyxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVDO0FBQ0EsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQyxNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ25CLEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxVQUFVO0FBQ25CLElBQUksS0FBSyxFQUFFLFNBQVMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDdkMsTUFBTSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxLQUFLO0FBQ2QsSUFBSSxLQUFLLEVBQUUsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNsQyxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsTUFBTSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxVQUFVO0FBQ25CLElBQUksS0FBSyxFQUFFLFNBQVMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQzlDLE1BQU0sS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUMsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLEtBQUs7QUFDZCxJQUFJLEtBQUssRUFBRSxTQUFTLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUN6QyxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckMsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLGFBQWE7QUFDdEIsSUFBSSxLQUFLLEVBQUUsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUMxQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0MsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLFFBQVE7QUFDakIsSUFBSSxLQUFLLEVBQUUsU0FBUyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUN0QyxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNqQyxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsZUFBZTtBQUN4QixJQUFJLEtBQUssRUFBRSxTQUFTLGFBQWEsQ0FBQyxHQUFHLEVBQUU7QUFDdkMsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDdkI7QUFDQSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxFQUFFO0FBQ3ZDLFFBQVEsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMzQyxPQUFPLENBQUMsQ0FBQztBQUNULEtBQUs7QUFDTDtBQUNBLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLFlBQVk7QUFDckIsSUFBSSxLQUFLLEVBQUUsU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFO0FBQ3BDLE1BQU0sSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEM7QUFDQSxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQyxNQUFNLElBQUksb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hFO0FBQ0EsTUFBTSxJQUFJLG9CQUFvQixFQUFFO0FBQ2hDO0FBQ0EsUUFBUSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLE9BQU87QUFDUDtBQUNBLE1BQU0sT0FBTyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFFLEtBQUs7QUFDTCxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ047QUFDQSxFQUFFLE9BQU8seUJBQXlCLENBQUM7QUFDbkMsQ0FBQyxFQUFFLENBQUM7QUFDSjtBQUNBLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNqQjtBQUNBLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNsQjtBQUNBLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hCO0FBQ0EsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2Y7QUFDQSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbkI7QUFDQSxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7QUFDdEI7QUFDQSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDdkI7QUFDQSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbkI7QUFDQSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbkI7QUFDQSxJQUFJLFVBQVUsR0FBRyxHQUFHLENBQUM7QUFDckI7QUFDQSxJQUFJLFdBQVcsR0FBRyxHQUFHLENBQUM7QUFDdEI7QUFDQSxJQUFJLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUMzQjtBQUNBLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztBQUNuQjtBQUNBLElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQztBQUNyQjtBQUNBLElBQUksYUFBYSxHQUFHLEdBQUcsQ0FBQztBQUN4QjtBQUNBLElBQUksV0FBVyxHQUFHLEdBQUcsQ0FBQztBQUN0QjtBQUNBLElBQUksa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQzdCO0FBQ0EsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxhQUFhLEdBQUc7QUFDcEIsRUFBRSxPQUFPLEVBQUUsU0FBUztBQUNwQixFQUFFLFNBQVMsRUFBRSxXQUFXO0FBQ3hCLEVBQUUsV0FBVyxFQUFFLGFBQWE7QUFDNUIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxZQUFZLEdBQUdELFVBQVEsQ0FBQztBQUM1QixFQUFFLE1BQU0sRUFBRSxJQUFJO0FBQ2QsRUFBRSxvQkFBb0IsRUFBRSxPQUFPO0FBQy9CLEVBQUUsV0FBVyxFQUFFLElBQUk7QUFDbkIsRUFBRSxjQUFjLEVBQUUsSUFBSTtBQUN0QixFQUFFLGdCQUFnQixFQUFFLElBQUk7QUFDeEIsRUFBRSxpQkFBaUIsRUFBRSxJQUFJO0FBQ3pCLEVBQUUsU0FBUyxFQUFFLE9BQU87QUFDcEIsRUFBRSxtQkFBbUIsRUFBRSxJQUFJO0FBQzNCLEVBQUUscUJBQXFCLEVBQUUsSUFBSTtBQUM3QixDQUFDLENBQUMsQ0FBQztBQUNIO0FBQ0EsSUFBSSxtQkFBbUIsR0FBRyxTQUFTLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUU7QUFDOUUsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDbEIsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUMzQixFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCLEVBQUUsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZDLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyQixFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3RGLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDO0FBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDO0FBQzdCO0FBQ0EsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLElBQUksRUFBRTtBQUN2QyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7QUFDOUMsRUFBRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDakUsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLElBQUksRUFBRTtBQUM5QyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztBQUM1RSxFQUFFLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ25ELEVBQUUsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBLElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWTtBQUNuQyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDOUUsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMzQixHQUFHLENBQUMsQ0FBQztBQUNMLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0EsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFlBQVk7QUFDeEMsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDbEIsRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztBQUNwRSxFQUFFLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsR0FBRyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtBQUMzRCxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDeEIsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pCLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUMzQjtBQUNBLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFO0FBQ3hHLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUU7QUFDbEcsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtBQUNuQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMxQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRyxHQUFHLE1BQU0sRUFBRTtBQUNwQixJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUM7QUFDakIsR0FBRyxNQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxHQUFHLEdBQUcsTUFBTSxFQUFFO0FBQzlDLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMvQixFQUFFLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ2hDLEVBQUUsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDaEMsRUFBRSxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUQ7QUFDQSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFO0FBQzlDLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0QztBQUNBLEVBQUUsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRTtBQUN4QyxJQUFJLFFBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQ2pDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQ3hELEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxRQUFRLEVBQUU7QUFDaEIsSUFBSSxPQUFPLFFBQVEsQ0FBQztBQUNwQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxDQUFDO0FBQ1g7QUFDQSxFQUFFLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRTtBQUM3QixJQUFJLElBQUksR0FBRyxPQUFPLENBQUM7QUFDbkIsR0FBRyxNQUFNLElBQUksVUFBVSxJQUFJLFFBQVEsRUFBRTtBQUNyQyxJQUFJLElBQUksR0FBRyxRQUFRLENBQUM7QUFDcEIsR0FBRyxNQUFNO0FBQ1QsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQ3ZELEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxVQUFVLEdBQUcsT0FBTyxJQUFJLFVBQVUsR0FBRyxPQUFPLEVBQUU7QUFDcEQsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEM7QUFDQSxFQUFFLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xDO0FBQ0EsRUFBRSxJQUFJLFNBQVMsR0FBRyxTQUFTLFNBQVMsR0FBRztBQUN2QyxJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDdEYsR0FBRyxDQUFDO0FBQ0o7QUFDQTtBQUNBLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNaLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ1osSUFBSSxHQUFHLEdBQUcsU0FBUyxFQUFFLENBQUM7QUFDdEIsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsU0FBUyxHQUFHLFVBQVUsRUFBRTtBQUM5QyxJQUFJLEdBQUcsR0FBRyxTQUFTLEVBQUUsQ0FBQztBQUN0QixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksWUFBWSxHQUFHLFNBQVMsWUFBWSxDQUFDLFVBQVUsRUFBRTtBQUN2RCxJQUFJLE9BQU8sVUFBVSxJQUFJLFVBQVUsQ0FBQyxnQkFBZ0IsS0FBSyxnQkFBZ0IsQ0FBQztBQUMxRSxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSxNQUFNLEdBQUcsTUFBTSxJQUFJLE1BQU0sS0FBSyxhQUFhLENBQUMsT0FBTyxDQUFDO0FBQzFELEVBQUUsSUFBSSxjQUFjLEdBQUcsTUFBTSxJQUFJLE1BQU0sS0FBSyxhQUFhLENBQUMsV0FBVyxDQUFDO0FBQ3RFLEVBQUUsSUFBSSxZQUFZLEdBQUcsTUFBTSxJQUFJLE1BQU0sS0FBSyxhQUFhLENBQUMsU0FBUyxDQUFDO0FBQ2xFLEVBQUUsSUFBSSxXQUFXLENBQUM7QUFDbEI7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFDLElBQUksSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0I7QUFDQSxJQUFJLElBQUksQ0FBQyxFQUFFO0FBQ1gsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sTUFBTTtBQUNaLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksVUFBVSxHQUFHLFdBQVcsSUFBSSxXQUFXLENBQUMsS0FBSyxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQztBQUNyRjtBQUNBLEVBQUUsSUFBSSxTQUFTLEdBQUcsU0FBUyxTQUFTLEdBQUc7QUFDdkMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3JKLEdBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0MsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUQ7QUFDQSxFQUFFLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDO0FBQ0EsSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUNoQixHQUFHLE1BQU0sSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUU7QUFDeEM7QUFDQTtBQUNBLElBQUksSUFBSSxjQUFjLEVBQUU7QUFDeEIsTUFBTSxLQUFLLElBQUksRUFBRSxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUN2RCxRQUFRLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDcEYsT0FBTztBQUNQO0FBQ0EsTUFBTSxTQUFTLEVBQUUsQ0FBQztBQUNsQixLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEQsTUFBTSxPQUFPLFdBQVcsQ0FBQztBQUN6QixLQUFLO0FBQ0wsR0FBRyxNQUFNO0FBQ1QsSUFBSSxJQUFJLFVBQVUsQ0FBQztBQUNuQjtBQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLFlBQVksRUFBRTtBQUNyRCxNQUFNLEtBQUssSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3BELFFBQVEsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdEM7QUFDQSxRQUFRLElBQUksRUFBRSxFQUFFO0FBQ2hCLFVBQVUsVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUMxQixVQUFVLE1BQU07QUFDaEIsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2xDO0FBQ0EsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNsQyxNQUFNLE9BQU8sVUFBVSxDQUFDO0FBQ3hCLEtBQUs7QUFDTDtBQUNBLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BFLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDNUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0MsR0FBRztBQUNIO0FBQ0EsRUFBRSxRQUFRLEdBQUc7QUFDYixJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUztBQUNwQixJQUFJLE9BQU8sRUFBRSxHQUFHO0FBQ2hCLElBQUksS0FBSyxFQUFFLEdBQUc7QUFDZCxJQUFJLEtBQUssRUFBRSxLQUFLO0FBQ2hCLElBQUksS0FBSyxFQUFFLFVBQVU7QUFDckIsSUFBSSxNQUFNLEVBQUUsVUFBVTtBQUN0QixJQUFJLGdCQUFnQixFQUFFLGdCQUFnQjtBQUN0QyxHQUFHLENBQUM7QUFDSixFQUFFLEdBQUcsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLENBQUM7QUFDekQsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQixFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNqQyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxFQUFFLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsSUFBSSxFQUFFO0FBQzFDLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsR0FBRyxFQUFFO0FBQ3hDLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUMzQixFQUFFLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNsQixFQUFFLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEM7QUFDQSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDaEIsSUFBSSxPQUFPO0FBQ1gsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLElBQUksR0FBRyxHQUFHLE1BQU0sRUFBRSxHQUFHLElBQUksTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQy9DLElBQUksSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDakQ7QUFDQSxJQUFJLElBQUksS0FBSyxFQUFFO0FBQ2YsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuRDtBQUNBLEVBQUUsSUFBSSxtQkFBbUIsRUFBRTtBQUMzQixJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLE1BQU0sSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUMvQjtBQUNBLE1BQU0sR0FBRyxDQUFDLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDM0M7QUFDQSxNQUFNLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ2hDO0FBQ0EsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFVBQVUsR0FBRyxFQUFFO0FBQzFDO0FBQ0EsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRTtBQUN0RCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsR0FBRyxFQUFFO0FBQzNDO0FBQ0E7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDO0FBQ0EsRUFBRSxJQUFJLEdBQUcsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxXQUFXLElBQUksR0FBRyxDQUFDLGNBQWMsSUFBSSxpQkFBaUIsRUFBRTtBQUMxRixJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDL0IsR0FBRyxNQUFNO0FBQ1QsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDekIsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLEdBQUcsRUFBRTtBQUNwQyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDeEIsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUMzQjtBQUNBLEVBQUUsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM3QixFQUFFLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3JCO0FBQ0EsRUFBRSxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO0FBQ2hDO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3QyxJQUFJLElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckQsR0FBRztBQUNIO0FBQ0EsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEI7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUN4QyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEMsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDZixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakIsRUFBRSxHQUFHLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNyQixFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMxQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUMzQixFQUFFLEdBQUcsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hFLEVBQUUsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxFQUFFLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUM1QyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEMsRUFBRSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakQ7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFDLElBQUksSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQzNCLE1BQU0sR0FBRyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDMUIsTUFBTSxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztBQUN4QixNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFDL0IsTUFBTSxHQUFHLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztBQUM3QixNQUFNLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEMsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pELE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6RCxNQUFNLGVBQWUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbkMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLE1BQU0sT0FBTyxHQUFHLENBQUM7QUFDakIsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ3hDLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ2pDLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7QUFDeEMsRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLEVBQUUsSUFBSSxXQUFXLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdCO0FBQ0EsRUFBRSxJQUFJLFdBQVcsRUFBRTtBQUNuQjtBQUNBLElBQUksV0FBVyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDekQsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN2QixJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDOUIsR0FBRyxNQUFNO0FBQ1QsSUFBSSxJQUFJLEdBQUcsR0FBRztBQUNkLE1BQU0sSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQ2xDLE1BQU0sS0FBSyxFQUFFLEdBQUc7QUFDaEIsTUFBTSxJQUFJLEVBQUUsQ0FBQztBQUNiLE1BQU0sR0FBRyxFQUFFLEdBQUc7QUFDZCxLQUFLLENBQUM7QUFDTixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEIsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxPQUFPO0FBQ2hDO0FBQ0EsRUFBRTtBQUNGLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ2pDLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7QUFDeEMsRUFBRSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDcEIsRUFBRSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzNCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztBQUN4QixNQUFNLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RDtBQUNBLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN0QjtBQUNBLE1BQU0sSUFBSSxXQUFXLEVBQUU7QUFDdkIsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixNQUFNLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzFFLEtBQUssTUFBTTtBQUNYLE1BQU0sTUFBTTtBQUNaLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLEdBQUcsRUFBRTtBQUN0QyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUNqQyxFQUFFLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0FBQ3hDLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixFQUFFLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQjtBQUNBLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO0FBQ25CLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDL0I7QUFDQTtBQUNBLE1BQU0sR0FBRyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7QUFDekIsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2Q7QUFDQSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDdEIsS0FBSyxNQUFNO0FBQ1g7QUFDQSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsRUFBRSxFQUFFO0FBQy9CLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsRUFBRSxFQUFFO0FBQ2hDLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7QUFDNUMsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0I7QUFDeEMsRUFBRSxPQUFPLEVBQUUsT0FBTztBQUNsQixFQUFFLFVBQVUsRUFBRSxVQUFVO0FBQ3hCLEVBQUUsYUFBYSxFQUFFLGFBQWE7QUFDOUIsRUFBRSxXQUFXLEVBQUUsV0FBVztBQUMxQixFQUFFLEdBQUcsRUFBRSxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUMzQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDekMsR0FBRztBQUNILEVBQUUsTUFBTSxFQUFFLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDdEMsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDckQsTUFBTSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsS0FBSztBQUNMLEdBQUc7QUFDSCxFQUFFLFlBQVksRUFBRSxTQUFTLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDbkUsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQyxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDOUI7QUFDQSxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3ZDO0FBQ0EsUUFBUSxJQUFJLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtBQUNoRCxVQUFVLE9BQU8sSUFBSSxDQUFDO0FBQ3RCLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0gsRUFBRSxRQUFRLEVBQUUsU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFO0FBQ3BDLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQztBQUMxRCxHQUFHO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDSDtBQUNBLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQUNyQjtBQUNBLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xCO0FBQ0EsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCO0FBQ0EsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3JCO0FBQ0EsSUFBSSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDOUI7QUFDQSxJQUFJLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUMvQjtBQUNBLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztBQUNyQjtBQUNBLElBQUksWUFBWSxHQUFHLEdBQUcsQ0FBQztBQUN2QjtBQUNBLElBQUksZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUMxQjtBQUNBLElBQUksYUFBYSxHQUFHLEdBQUcsQ0FBQztBQUN4QjtBQUNBLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQUNyQjtBQUNBLElBQUksZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO0FBQzNCO0FBQ0EsSUFBSSxZQUFZLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUMvQjtBQUNBLElBQUksd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0FBQ3BDO0FBQ0E7QUFDQSxJQUFJLG1CQUFtQixHQUFHLFNBQVMsbUJBQW1CLENBQUMsUUFBUSxFQUFFO0FBQ2pFLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDbkMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2hCLEVBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDMUI7QUFDQSxFQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGNBQWMsRUFBRSxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN0RSxFQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDcEMsRUFBRSxJQUFJLENBQUMseUJBQXlCLEdBQUdULE1BQUksQ0FBQyxZQUFZO0FBQ3BELElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM3QyxHQUFHLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQUM1QixFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQzFDLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixJQUFJLGdCQUFnQixFQUFFO0FBQzdELE1BQU0sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDM0IsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUM1QixLQUFLO0FBQ0wsR0FBRyxFQUFFLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxQztBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNuQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzNCLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDO0FBQ3pDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztBQUNwQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEM7QUFDQSxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRTtBQUNwQyxFQUFFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkQsRUFBRSxJQUFJLEtBQUssR0FBRztBQUNkLElBQUksRUFBRSxFQUFFLFdBQVcsR0FBRyxFQUFFLFdBQVcsR0FBRyxTQUFTO0FBQy9DLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDVixJQUFJLEtBQUssRUFBRSxHQUFHO0FBQ2QsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUNaLElBQUksTUFBTSxFQUFFLENBQUM7QUFDYixJQUFJLE1BQU0sRUFBRSxNQUFNO0FBQ2xCLElBQUksT0FBTyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0FBQ3BDLElBQUksSUFBSSxFQUFFLEVBQUU7QUFDWixJQUFJLFNBQVMsRUFBRSxFQUFFO0FBQ2pCLElBQUksSUFBSSxFQUFFLENBQUM7QUFDWCxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztBQUMxQixFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDeEIsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3hCO0FBQ0EsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMxQixFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtBQUMvQyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDeEIsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2hCLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3ZCLEVBQUUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUMvQixFQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ3hCO0FBQ0E7QUFDQSxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtBQUNuQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMxQztBQUNBLElBQUksSUFBSSxHQUFHLEdBQUcsUUFBUSxFQUFFO0FBQ3hCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQztBQUNyQixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksU0FBUyxJQUFJLEdBQUcsR0FBRyxRQUFRLEVBQUU7QUFDcEQsTUFBTSxPQUFPLElBQUksQ0FBQztBQUNsQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdDLEVBQUUsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztBQUN2QyxFQUFFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLEVBQUUsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDekQsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNULEVBQUUsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEQsRUFBRSxJQUFJLFNBQVMsQ0FBQztBQUNoQjtBQUNBLEVBQUUsSUFBSSxlQUFlLEdBQUcsU0FBUyxlQUFlLEdBQUc7QUFDbkQsSUFBSSxJQUFJLGNBQWMsR0FBRyxTQUFTLGNBQWMsQ0FBQyxDQUFDLEVBQUU7QUFDcEQsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9DO0FBQ0EsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFO0FBQ3pDLFFBQVEsU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLE9BQU87QUFDUCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsR0FBRyxFQUFFO0FBQzVDLE1BQU0sSUFBSSxTQUFTLEVBQUU7QUFDckIsUUFBUSxPQUFPO0FBQ2YsT0FBTztBQUNQO0FBQ0EsTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUU7QUFDeEUsUUFBUSxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMvQixVQUFVLE1BQU07QUFDaEIsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQjtBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2pELE1BQU0sSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7QUFDekIsUUFBUSxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDcEI7QUFDQTtBQUNBLElBQUksZUFBZSxFQUFFLENBQUM7QUFDdEIsR0FBRyxNQUFNO0FBQ1Q7QUFDQSxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsU0FBUyxLQUFLLEdBQUc7QUFDL0IsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO0FBQ2IsTUFBTSxFQUFFLEdBQUcsZUFBZSxFQUFFLENBQUM7QUFDN0I7QUFDQSxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLFFBQVEsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3JELE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ2QsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksU0FBUyxHQUFHLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRTtBQUMzQyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ3RCLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUMzQixJQUFJLEtBQUssRUFBRSxDQUFDO0FBQ1osSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzdDO0FBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxZQUFZLEVBQUU7QUFDN0IsTUFBTSxPQUFPLElBQUksQ0FBQztBQUNsQixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDO0FBQ0EsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7QUFDdkIsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyQyxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3pEO0FBQ0EsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNsQztBQUNBLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUNuQixFQUFFLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDO0FBQ25ELEVBQUUsSUFBSSxpQkFBaUIsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNyQztBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEMsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsSUFBSSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUNuQyxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7QUFDN0Q7QUFDQSxJQUFJLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQztBQUNBLElBQUksSUFBSSxhQUFhLEVBQUU7QUFDdkI7QUFDQTtBQUNBLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQztBQUM1QixNQUFNLFNBQVM7QUFDZixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksZUFBZSxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRTtBQUNsSDtBQUNBLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQztBQUN4QixRQUFRLE1BQU0sRUFBRSxJQUFJO0FBQ3BCLFFBQVEsS0FBSyxFQUFFLEtBQUs7QUFDcEIsT0FBTyxDQUFDLENBQUM7QUFDVDtBQUNBLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNsQixRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxTQUFTLElBQUksaUJBQWlCLEVBQUU7QUFDeEM7QUFDQSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLEtBQUssTUFBTTtBQUNYO0FBQ0EsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3BELEtBQUs7QUFDTDtBQUNBLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLFNBQVMsRUFBRTtBQUNqQjtBQUNBLElBQUksT0FBTyxTQUFTLENBQUM7QUFDckIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLGlCQUFpQixFQUFFO0FBQ3pCO0FBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxVQUFVLEdBQUcsRUFBRSxPQUFPLEVBQUU7QUFDeEQsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRTtBQUMxRCxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDeEIsRUFBRSxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBQzlCLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzdCO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFO0FBQ2xELElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEQ7QUFDQSxFQUFFO0FBQ0YsSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0QyxHQUFHO0FBQ0g7QUFDQSxFQUFFO0FBQ0YsSUFBSSxDQUFDLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBQ2pGLEdBQUc7QUFDSDtBQUNBLEVBQUU7QUFDRixJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JDLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQzVDLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QztBQUNBLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUN0QyxJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBQzFCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQyxJQUFJLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQjtBQUNBLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtBQUN4QixNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ25CLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7QUFDdkIsTUFBTSxPQUFPLEtBQUssQ0FBQztBQUNuQixLQUFLO0FBQ0w7QUFDQSxJQUFJLGVBQWUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUN6QyxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsSUFBSSxlQUFlLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUN2QyxJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksQ0FBQywwQkFBMEIsR0FBRyxVQUFVLEdBQUcsRUFBRSxJQUFJLEVBQUU7QUFDdkQsRUFBRSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0EsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2YsSUFBSSxPQUFPO0FBQ1gsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsSUFBSSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsSUFBSSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwQjtBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3JDLFFBQVEsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNuQixRQUFRLE1BQU07QUFDZCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDcEI7QUFDQSxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEMsTUFBTSxTQUFTO0FBQ2YsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUNuQjtBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDekM7QUFDQSxRQUFRLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEMsUUFBUSxNQUFNO0FBQ2QsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxJQUFJLEVBQUUsTUFBTSxFQUFFO0FBQ3RELEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEVBQUUsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDO0FBQ0E7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3hDLElBQUksSUFBSSxHQUFHLEdBQUcsTUFBTSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEMsSUFBSSxJQUFJLEdBQUcsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDN0MsSUFBSSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUNuQyxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7QUFDN0Q7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDL0MsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDbEIsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRTtBQUMzRSxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM5QixLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZO0FBQzlCLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEVBQUUsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQ3pCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLElBQUksUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzdDLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QztBQUNBLElBQUksSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDckMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLE1BQU0sTUFBTTtBQUNaLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsSUFBSSxFQUFFO0FBQzFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2xCO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGNBQWMsRUFBRSxDQUFDO0FBQy9DO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO0FBQy9DLElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxTQUFTLGdCQUFnQixDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQy9FLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLEtBQUssRUFBRTtBQUN4QztBQUNBLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGNBQWMsRUFBRSxDQUFDO0FBQy9DO0FBQ0EsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7QUFDckIsSUFBSSxPQUFPO0FBQ1gsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDeEIsRUFBRSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQ3hCLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QztBQUNBLEVBQUUsZUFBZSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqQztBQUNBLEVBQUUsS0FBSyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDdkIsRUFBRSxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUN2QjtBQUNBLEVBQUUsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFO0FBQ3pCLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEMsSUFBSSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7QUFDMUQ7QUFDQSxJQUFJLElBQUksTUFBTSxFQUFFO0FBQ2hCLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN6QixLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFVBQVUsSUFBSSxFQUFFO0FBQzdDLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2xCO0FBQ0EsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQzVFLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztBQUNqQztBQUNBLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtBQUNmLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2RSxNQUFNLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQzVCLE1BQU0sSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQzdCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDcEIsTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDakQsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUMsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsVUFBVSxHQUFHLEVBQUU7QUFDL0M7QUFDQSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUN4QyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7QUFDM0IsRUFBRSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO0FBQzlCLEVBQUUsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUM5QztBQUNBLEVBQUUsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFO0FBQ3pCLElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHLEVBQUU7QUFDWCxJQUFJLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3pCLE1BQU0sT0FBTztBQUNiLEtBQUs7QUFDTDtBQUNBLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDM0IsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7QUFDbEIsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDakIsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLEdBQUcsTUFBTTtBQUNULElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDbkIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxPQUFPLEVBQUU7QUFDbEMsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDbEIsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBQzNCLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLEVBQUUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCO0FBQ0EsRUFBRSxPQUFPLE9BQU8sR0FBRyxZQUFZLEVBQUU7QUFDakMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUU7QUFDeEIsTUFBTSxNQUFNO0FBQ1osS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDekI7QUFDQSxJQUFJLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtBQUMzQjtBQUNBLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2QsTUFBTSxTQUFTO0FBQ2YsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUU7QUFDaEU7QUFDQSxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNkLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO0FBQ3ZCO0FBQ0EsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFNLFNBQVM7QUFDZixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDdEM7QUFDQSxJQUFJLElBQUksR0FBRyxFQUFFO0FBQ2I7QUFDQSxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzVELE1BQU0sT0FBTyxFQUFFLENBQUM7QUFDaEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQzNCO0FBQ0EsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUN0QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNkLE1BQU0sS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDckI7QUFDQTtBQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQzFCLFFBQVEsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFDLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQzNCLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLENBQUMscUJBQXFCLEdBQUcsVUFBVSxLQUFLLEVBQUU7QUFDOUMsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDbEIsRUFBRSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RCxFQUFFLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7QUFDaEMsRUFBRSxJQUFJLEtBQUssR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzlDO0FBQ0E7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFO0FBQ3JDO0FBQ0EsSUFBSSxPQUFPO0FBQ1gsR0FBRztBQUNIO0FBQ0EsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQy9CO0FBQ0E7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM5QyxJQUFJLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ3BDLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztBQUM1RDtBQUNBLElBQUksSUFBSSxLQUFLLEVBQUU7QUFDZixNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ2pDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxDQUFDLGFBQWEsR0FBR0EsTUFBSSxDQUFDLFlBQVk7QUFDdEMsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3hCLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0IsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNiLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNSLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztBQUM1QyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQjtBQUMxQyxFQUFFLE9BQU8sRUFBRSxTQUFTO0FBQ3BCLEVBQUUsVUFBVSxFQUFFLFlBQVk7QUFDMUIsRUFBRSxhQUFhLEVBQUUsZUFBZTtBQUNoQyxFQUFFLFdBQVcsRUFBRSxhQUFhO0FBQzVCLEVBQUUsR0FBRyxFQUFFLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDbkMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakMsR0FBRztBQUNILEVBQUUsTUFBTSxFQUFFOUIsTUFBSTtBQUNkLEVBQUUsWUFBWSxFQUFFLE9BQU87QUFDdkIsRUFBRSxRQUFRLEVBQUUsU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFO0FBQ3BDLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQztBQUMxRCxHQUFHO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDSDtBQUNBLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLElBQUksSUFBSSxDQUFDO0FBQ1Q7QUFDQSxTQUFTLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQ2xDLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFO0FBQzFELEVBQUUsSUFBSSxPQUFPLENBQUM7QUFDZDtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkI7QUFDQSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNqQixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDbkIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRixDQUFDO0FBQ0Q7QUFDQSxTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRTtBQUN6RCxFQUFFLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtBQUN6QixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN4QixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHLGNBQWMsQ0FBQztBQUM5QjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDO0FBQ3pCLEVBQUUsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QztBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO0FBQ3pCLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3hCLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLGNBQWMsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzVELEVBQUUsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO0FBQ3pCLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3hCLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENB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QUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRSxJQUFJLElBQUksTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUMzRCxJQUFJLElBQUksWUFBWSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5RSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN4QixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0UsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFD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LENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckYsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDbEIsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQzVELEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDN0MsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUM5RSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDckMsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDOUQsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDNUIsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxD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Q0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekg7QUFDQSxNQUFNLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRTtBQUMzQixRQUFRLE9BQU8sQ0FBQyxXQUFXLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ3RRLFFBQVEsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdILE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7QUFDMUQs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TUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDbkMsS0FBSyxNQUFNO0FBQ1gsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsS0FBSztBQUNMO0FBQ0EsSUFBSSxNQUFNLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsSUFBSSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEMsSUFBSSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVDLElBQUksSUFBSSxRQUFRLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRyxJQUFJLElBQUksTUFBTSxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM5QyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRCxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hE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LEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDL0QsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUMvRCxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEdBQUcsVUFBVSxHQUFHLFlBQVksQ0FBQyxDQUFDO0FBQy9ELEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxVQUFVLEdBQUcsWUFBWSxDQUFDLENBQUM7QUFDL0QsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUMvRCxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQy9ELEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxVQUFVLEdBQUcsWUFBWSxDQUFDLENBQUM7QUFDL0QsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxHQUFHLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQztBQUMvRCxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxjQUFjLEdBQUcsVUFBVSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQy9ELEVBQUUsSUFBSSxTQUFTLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUM1QixFQUFFLElBQUksVUFBVSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDOUIsRUFBRSxJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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LElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDbEMsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0FBQ2xDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QixRQUFRLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztBQUM3QyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDM0MsWUFBWSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDekMsZ0JBQWdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDaEMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsZ0JBQWdCLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDakQsb0JBQW9CLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RSxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFB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LENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdILFlBQVksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSyxDQUFDO0FBQ04sSUFBSSxPQUFPLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDckMsUUFBUSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDOUQsWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNqRSxTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRTtBQUNsRSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3pDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLFNBQVM7QUFDVCxLQUFLLENBQUM7QUFDTixJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLFlBQVk7QUFDbEQsUUFBUSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDdkIsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRTtBQUNoRSxZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3hELGdCQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ2pELG9CQUFvQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLGlCQUFpQjtBQUNqQixnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLG9CQUFvQixTQUFTO0FBQzdCLGdCQUFnQixJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLGdCQUFnQixJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLGdCQUFnQixNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDdkMsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLE9BQU8sTUFBTSxDQUFDO0FBQ3RCLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7QUFDakMsSUFBSSxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ0wsYUFBZSxHQUFHLE9BQU8sQ0FBQztBQUMxQixJQUFJLFlBQVksSUFBSSxZQUFZO0FBQ2hDLElBQUksU0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ2hDLFFBQVEsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDMUMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3hCLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDekIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUM1QixRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLEtBQUs7QUFDTCxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFlBQVk7QUFDakQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMzRCxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzlDLEtBQUssQ0FBQztBQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ2hFLFFBQVEsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNsRCxLQUFLLENBQUM7QUFDTixJQUFJLE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDTCxrQkFBb0IsR0FBRyxZQUFZLENBQUM7Ozs7Ozs7OztBQ3JWcEMsSUFBSSxhQUFhLElBQUksWUFBWTtBQUNqQyxJQUFJLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRTtBQUNsQyxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDcEIsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwQixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLGFBQWEsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ3ZELFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3RDLFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3BDLFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUMxQixRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDaEMsUUFBUSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQztBQUMvQyxRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDaEMsS0FBSyxDQUFDO0FBQ04sSUFBSSxhQUFhLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxZQUFZO0FBQ2xELFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzdDLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxhQUFhLENBQUM7QUFDekIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNMLG1CQUFxQixHQUFHLGFBQWEsQ0FBQztBQUN0QyxJQUFJLFVBQVUsSUFBSSxZQUFZO0FBQzlCLElBQUksU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFO0FBQ3BELFFBQVEsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUU7QUFDdEQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6QixRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdkIsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUNqQyxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQzVCLFFBQVEsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7QUFDbkMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6QixRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdkIsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUNqQyxLQUFLO0FBQ0wsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZO0FBQzdDLFFBQVEsT0FBTyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTO0FBQ3BELGNBQWMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRztBQUNqRSxrQkFBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN6RCxLQUFLLENBQUM7QUFDTixJQUFJLE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDTCxnQkFBa0IsR0FBRyxVQUFVLENBQUM7QUFDaEMsSUFBSSxRQUFRLElBQUksWUFBWTtBQUM1QixJQUFJLFNBQVMsUUFBUSxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQ3RELFFBQVEsSUFBSSxNQUFNLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDOUMsUUFBUSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtBQUM1QyxRQUFRLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0FBQy9DLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDN0IsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMzQixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLEtBQUs7QUFDTCxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFlBQVk7QUFDMUMsUUFBUSxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDNUUsS0FBSyxDQUFDO0FBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxZQUFZO0FBQzlDLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDbEYsS0FBSyxDQUFDO0FBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLGVBQWUsR0FBRyxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUU7QUFDNUQsUUFBUSxJQUFJLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN4RixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuRSxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRSxLQUFLLENBQUM7QUFDTixJQUFJLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDTCxjQUFnQixHQUFHLFFBQVEsQ0FBQztBQUM1QixJQUFJLEtBQUssSUFBSSxZQUFZO0FBQ3pCLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQ3RCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7QUFDdkIsUUFBUSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNyQixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdDLFFBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixLQUFLO0FBQ0wsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUMvQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN0QyxLQUFLLENBQUM7QUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEdBQUcsWUFBWTtBQUN6RCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNqRCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN4RCxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN0QyxLQUFLLENBQUM7QUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUU7QUFDN0QsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDekIsUUFBUSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDNUIsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUU7QUFDaEQsWUFBWSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDOUQsWUFBWSxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ2xDLGdCQUFnQixJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzdDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztBQUM3QixhQUFhO0FBQ2IsaUJBQWlCO0FBQ2pCLGdCQUFnQixJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQzlDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQzlCLGFBQWE7QUFDYixZQUFZLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM5QixLQUFLLENBQUM7QUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQzVELFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQ25ELFlBQVksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekUsWUFBWSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLFlBQVksS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QyxTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUssQ0FBQztBQUNOLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUU7QUFDOUQsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDekIsUUFBUSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDL0MsUUFBUSxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRTtBQUM3QyxRQUFRLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRTtBQUNuRCxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsWUFBWSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hELFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSyxDQUFDO0FBQ04sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxZQUFZO0FBQzVDLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRTtBQUN6RCxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzFELGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxPQUFPLENBQUMsQ0FBQztBQUNqQixLQUFLLENBQUM7QUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ3pELFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDbkQsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckIsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRTtBQUN2RCxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzlFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxPQUFPLENBQUMsQ0FBQztBQUNqQixLQUFLLENBQUM7QUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFO0FBQzdELFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLFFBQVEsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQzdCLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQ25ELFlBQVksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUNsRixnQkFBZ0IsUUFBUSxHQUFHLElBQUksQ0FBQztBQUNoQyxnQkFBZ0IsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvQixhQUFhO0FBQ2IsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE9BQU8sUUFBUSxDQUFDO0FBQ3hCLEtBQUssQ0FBQztBQUNOLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbEUsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ25CLFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUM5QixRQUFRLE9BQU8sQ0FBQyxFQUFFLEVBQUU7QUFDcEIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLFlBQVksSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN4RSxnQkFBZ0IsT0FBTyxJQUFJLENBQUM7QUFDNUIsU0FBUztBQUNULFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsS0FBSyxDQUFDO0FBQ04sSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQy9CLFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDekIsUUFBUSxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakYsS0FBSyxDQUFDO0FBQ04sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxRQUFRLEVBQUU7QUFDakQsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNwQyxRQUFRLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0MsUUFBUSxPQUFPLENBQUMsQ0FBQztBQUNqQixLQUFLLENBQUM7QUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUNyRCxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUMsUUFBUSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDeEIsWUFBWSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLFlBQVksT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDM0QsU0FBUztBQUNULFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSyxDQUFDO0FBQ04sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQ3hELFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDeEIsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUN2RCxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsWUFBWSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQztBQUM3QixZQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3RDLEtBQUssQ0FBQztBQUNOLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsWUFBWTtBQUN2QyxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDMUMsUUFBUSxPQUFPLENBQUMsRUFBRSxFQUFFO0FBQ3BCLFlBQVksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUM7QUFDdkUsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3BDLFNBQVM7QUFDVCxRQUFRLE9BQU8sR0FBRyxDQUFDO0FBQ25CLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNMLFdBQWEsR0FBRyxLQUFLLENBQUM7QUFDdEIsSUFBSSxNQUFNLElBQUksWUFBWTtBQUMxQixJQUFJLFNBQVMsTUFBTSxDQUFDLEVBQUUsRUFBRTtBQUN4QixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUMxQixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsUUFBUSxPQUFPLENBQUMsRUFBRSxFQUFFO0FBQ3BCLFlBQVksSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixZQUFZLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxZQUFZO0FBQ3hDLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUMxQyxRQUFRLE9BQU8sQ0FBQyxFQUFFO0FBQ2xCLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdkMsUUFBUSxPQUFPLEdBQUcsQ0FBQztBQUNuQixLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQzNDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUN0QyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDM0MsUUFBUSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDeEMsUUFBUSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ2hDLFFBQVEsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQzdCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQzlDLFlBQVksU0FBUyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQzVDLFNBQVM7QUFDVCxLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQzFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ2hELFFBQVEsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUMxRCxRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDM0MsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEMsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsU0FBUztBQUNU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LEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6SCxLQUFLLENBQUM7QUFDTixJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDdEUsUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNyRCxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1QyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1QyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsUUFBUSxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDL0IsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3BDLFlBQVksSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVB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QUFNLEtBQUssV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFO0FBQy9MLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM5UCxJQUFJLElBQUksV0FBVyxFQUFFO0FBQ3JCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFH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RSxFQUFFLEVBQUU7QUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBQ0QsU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBQ0QsU0FBUyxVQUFVLENBQUMsQ0FBQyxFQUFFO0FBQ3ZCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3RixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLElBQUksSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzVCLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUk7QUFDM0IsWUFBWSxNQUFNO0FBQ2xCLEtBQUs7QUFDTCxJQUFJLElBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDZixJQUFJLENBQUMs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LENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsS0FBSztBQUNMLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUNELFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDeEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDM0MsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0FBQzlCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUNoQyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDcEMsWUFBWSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvQyxZQUFZLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixZQUFZLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUIsWUFBWSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvQyxZQUFZLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixZQUFZLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUIsWUFBWSxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztB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QUFVLEdBQUcsV0FBVyxFQUFFO0FBQzFDLEtBQUs7QUFDTCxDQUFDO0FBQ0Qsa0JBQW9CLEdBQUcsWUFBWSxDQUFDO0FBQ3BDLFNBQVMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDdEMsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDbkIsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDbEIsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDcEIsSUFBSSxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDckIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzQyxRQUFRLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDN0IsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzdCLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztBQUMxQixZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDO0FBQ0EsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEMsUUFBUSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQzFCLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDcEM7QUFDQSxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQyxLQUFLO0FBQ0wsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENB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RSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZVLFFBQVEsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqRixRQUFRLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFO0FBQ3pDLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLFNBQVM7QUFDVCxRQUFRLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxJQUFJSCxhQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRSxZ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WUFBWSxDQUFDLENBQUM7QUFDbkQsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRixRQUFRLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRixRQUFRLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEUsUUFBUSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzNHLGFBQWEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFD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QUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzlDLEtBQUssQ0FBQztBQUNOLElBQUksVUFBVSxDQUFDLFlBQVksR0FBRyxVQUFVLElBQUksRUFBRTtBQUM5QyxRQUFRLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRTtBQUM5QixZQUFZLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RDLFNBQVM7QUFDVCxRQUFRLElBQUksVUFBVSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ2hJLFFBQVEsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQzFCLFFBQVEsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUMsWUFBWSxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyRixZQUFZLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUM1QyxnQkFBZ0IsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLGFBQWE7QUFDYixTQUFTO0FBQ1QsUUFBUSxPQUFPLFFBQVEsQ0FBQztBQUN4QixLQUFLLENBQUM7QUFDTixJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNqRCxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUN6QixRQUFRLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0QsUUFBUSxJQUFJLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDaEMsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEYsUUFBUSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQzVELFlBQVksSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JFLFlBQVksT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksY0FBYztBQUMxRCxtQkFBbUIsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxjQUFjLENBQUMsQ0FBQztBQUMxRCxTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3RELFlBQVksSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkMsWUFBWSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN2QyxZQUFZLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO0FBQ3BDLGdCQUFnQixNQUFNLEVBQUUsQ0FBQztBQUN6QixnQkFBZ0IsTUFBTSxFQUFFLENBQUM7QUFDekIsZ0JBQWdCLE1BQU0sRUFBRSxDQUFDO0FBQ3pCLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUztBQUNULFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3RELFlBQVksSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkMsWUFBWSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN2QyxZQUFZLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO0FBQ3BDLGdCQUFnQixNQUFNLEVBQUUsQ0FBQztBQUN6QixnQkFBZ0IsTUFBTSxFQUFFLENBQUM7QUFDekIsZ0JBQWdCLE1BQU0sRUFBRSxDQUFDO0FBQ3pCLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUztBQUNULFFBQVEsSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUN4SixRQUFRLElBQUksc0JBQXNCLEdBQUcsSUFBSU0sYUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDNUksUUFBUSxJQUFJLFdBQVcsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzdDLFlBQVksSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRSxZQUFZLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkUsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJO0FBQ2hHLGdCQUFnQixPQUFPLENBQUMsQ0FBQztBQUN6QixZQUFZLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDL0MsU0FBUyxDQUFDO0FBQ1YsUUFBUSxJQUFJLFlBQVksR0FBRyxzQkFBc0IsQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUN0SSxRQUFRLElBQUksVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0YsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELFFBQVEsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNqRCxZQUFZLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTTtBQUN4RyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztBQUNwRixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUssQ0FBQztBQUNOLElBQUksVUFBVSxDQUFDLFlBQVksR0FBRyxVQUFVLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTtBQUN0RixRQUFRLElBQUksTUFBTSxHQUFHO0FBQ3JCLFlBQVksU0FBUyxFQUFFLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUc7QUFDdkUsWUFBWSxTQUFTLEVBQUUsRUFBRTtBQUN6QixTQUFTLENBQUM7QUFDVixRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDOUIsWUFBWSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNuRCxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLGdCQUFnQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLGdCQUFnQixJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQzFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQzFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDO0FBQzlELHFCQUFxQjtBQUNyQix5QkFBeUI7QUFDekIsd0JBQXdCLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUM7QUFDOUQscUJBQXFCO0FBQ3JCLG9CQUFvQixNQUFNLENBQUMsU0FBUyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDakUsb0JBQW9CLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDekMsb0JBQW9CLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsb0JBQW9CLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsb0JBQW9CLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNqQyxvQkFBb0IsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqRixvQkFBb0IsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQy9CLG9CQUFvQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQzFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztBQUNuRSx3QkFBd0IsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNoQyxxQkFBcUI7QUFDckIseUJBQXlCO0FBQ3pCLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztBQUNuRSxxQkFBcUI7QUFDckIsb0JBQW9CLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlDLG9CQUFvQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxvQkFBb0IsTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsT0FBTyxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQzNHLGlCQUFpQjtBQUNqQixxQkFBcUI7QUFDckIsb0JBQW9CLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFDLG9CQUFvQixJQUFJLFlBQVksRUFBRSxZQUFZLENBQUM7QUFDbkQsb0JBQW9CLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDMUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUM7QUFDN0Qsd0JBQXdCLFlBQVksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDM0Qsd0JBQXdCLFlBQVksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDM0QscUJBQXFCO0FBQ3JCLHlCQUF5QjtBQUN6Qix3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQztBQUM3RCx3QkFBd0IsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRCx3QkFBd0IsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRCxxQkFBcUI7QUFDckIsb0JBQW9CLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNqRSxvQkFBb0IsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFO0FBQ3pDLHdCQUF3QixNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ25JLDhCQUE4QixLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUUscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixZQUFZLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsWUFBWSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxZQUFZLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLFlBQVksSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsWUFBWSxJQUFJLFlBQVksRUFBRSxZQUFZLENBQUM7QUFDM0MsWUFBWSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ2xDLGdCQUFnQixDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDO0FBQ3JELGdCQUFnQixZQUFZLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQ25ELGdCQUFnQixZQUFZLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQ25ELGFBQWE7QUFDYixpQkFBaUI7QUFDakIsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUM7QUFDckQsZ0JBQWdCLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkQsZ0JBQWdCLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkQsYUFBYTtBQUNiLFlBQVksTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3pELFlBQVksSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFO0FBQ2pDLGdCQUFnQixNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQzNILHNCQUFzQixLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEUsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLE9BQU8sTUFBTSxDQUFDO0FBQ3RCLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNMLGdCQUFrQixHQUFHLFVBQVUsQ0FBQzs7Ozs7Ozs7OztBQzloQmhDLElBQUksTUFBTSxJQUFJLFlBQVk7QUFDMUIsSUFBSSxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BDLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDN0IsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUM3QixLQUFLO0FBQ0wsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsRUFBRTtBQUNqRCxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUN6QixRQUFRLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNsRCxZQUFZLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2RCxZQUFZLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDL0IsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZixLQUFLLENBQUM7QUFDTixJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDTCxZQUFjLEdBQUcsTUFBTSxDQUFDO0FBQ3hCLElBQUksTUFBTSxJQUFJLFlBQVk7QUFDMUIsSUFBSSxTQUFTLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUM3QixRQUFRLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ3BDLFFBQVEsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDcEMsUUFBUSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUNwQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixLQUFLO0FBQ0wsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ0wsWUFBYyxHQUFHLE1BQU0sQ0FBQztBQUN4QixJQUFJLFFBQVEsSUFBSSxZQUFZO0FBQzVCLElBQUksU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUU7QUFDckQsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDekIsUUFBUSxJQUFJLGVBQWUsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUNoRSxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDM0IsUUFBUSxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztBQUMvQyxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ2hDLFFBQVEsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQUMxQyxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVDLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDN0MsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyRCxTQUFTO0FBQ1QsUUFBUSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN0QyxZQUFZLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ3ZFLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakMsZ0JBQWdCLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksV0FBVztBQUNoRCxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUMzQyxhQUFhO0FBQ2IsWUFBWSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsWUFBWSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsWUFBWSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBRUwsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUNqRCxRQUFRLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0MsS0FBSyxDQUFDO0FBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxVQUFVLFVBQVUsRUFBRTtBQUNyRCxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUN6QixRQUFRLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0FBQ3hELFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDbEMsUUFBUSxJQUFJLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQzlDLFFBQVEsSUFBSSxJQUFJLENBQUMscUJBQXFCO0FBQ3RDLFlBQVlELFdBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM1RSxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkYsUUFBUSxJQUFJLGNBQWMsR0FBRyxDQUFDLElBQUlDLGFBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQztBQUN2TSxRQUFRLElBQUksQ0FBQyxHQUFHQyxPQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxRyxRQUFRLElBQUksQ0FBQyxHQUFHQSxPQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkYsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRTtBQUN6QyxZQUFZLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDdkQsWUFBWSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdELFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUlBLE9BQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RCxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUN0QyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixRQUFRLElBQUksSUFBSSxDQUFDLFdBQVc7QUFDNUIsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJSCxTQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUMzSCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNwRCxZQUFZLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsWUFBWSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDekIsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3JDLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSyxDQUFDO0FBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxZQUFZO0FBQzFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkMsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDcEQsWUFBWSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLFlBQVksSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ3pCLGdCQUFnQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNELGFBQWE7QUFDYixTQUFTO0FBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDekMsS0FBSyxDQUFDO0FBQ04sSUFBSSxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDdEMsSUFBSSxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ0wsY0FBZ0IsR0FBRyxRQUFRLENBQUM7QUFDNUIsSUFBSSxZQUFZLElBQUksWUFBWTtBQUNoQyxJQUFJLFNBQVMsWUFBWSxHQUFHO0FBQzVCLEtBQUs7QUFDTCxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM5RSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM5RSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUN6RSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN6RSxJQUFJLE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMsRUFBRSxDQUFDLENBQUM7Ozs7Ozs7OztBQzdHTCxTQUFTLE9BQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUU7QUFDMUQsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUMsSUFBSSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMvRixJQUFJLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3SyxDQUFDO0FBQ0QsYUFBZSxHQUFHLE9BQU8sQ0FBQztBQUMxQixTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUU7QUFDbkQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQy9CLFFBQVEsQ0FBQyxDQUFDLFVBQVUsR0FBRztBQUN2QixZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtBQUN4QixZQUFZLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUM3QyxTQUFTLENBQUM7QUFDVixLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUNoQyxRQUFRLENBQUMsQ0FBQyxVQUFVLEdBQUc7QUFDdkIsWUFBWSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDbEQsWUFBWSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRTtBQUN4SCxpQkFBaUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxXQUFXLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzlHLFNBQVMsQ0FBQztBQUNWLEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbkUsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDNUIsUUFBUSxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDNUIsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLE9BQU8sSUFBSVcsVUFBWSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUU7QUFDeEQsUUFBUSxXQUFXLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUN4RCxRQUFRLFNBQVMsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ3BELEtBQUssRUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUNELFNBQVMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7QUFDekQsSUFBSSxJQUFJLFVBQVUsQ0FBQztBQUNuQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakUsSUFBSSxJQUFJTCxRQUFRLENBQUMsTUFBTSxFQUFFO0FBQ3pCLFNBQVMsYUFBYSxDQUFDLEtBQUssQ0FBQztBQUM3QixTQUFTLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQzNCLFNBQVMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDM0IsU0FBUyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUN2QyxRQUFRLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFDdkIsUUFBUSxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckYsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQy9CLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ25CLElBQUksSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEQsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUMzQyxRQUFRLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVztBQUMzQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUcsUUFBUSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxXQUFXO0FBQzNDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0csS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQy9DLFFBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxJQUFJQSxRQUFRLENBQUMsTUFBTSxFQUFFO0FBQ3pCLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNuQixTQUFTLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDbEIsU0FBUyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ3JCLFNBQVMsYUFBYSxDQUFDLEtBQUssQ0FBQztBQUM3QixTQUFTLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDekIsU0FBUyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7QUFDcEMsU0FBUyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7QUFDbkMsU0FBUyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BDLElBQUksT0FBTztBQUNYLFFBQVEsSUFBSSxFQUFFLElBQUlBLFFBQVEsQ0FBQyxNQUFNLEVBQUU7QUFDbkMsYUFBYSxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7QUFDdkMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3ZCLGFBQWEsYUFBYSxDQUFDLElBQUksQ0FBQztBQUNoQyxhQUFhLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQy9CLGFBQWEsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDL0IsYUFBYSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7QUFDbkMsYUFBYSxZQUFZLENBQUMsRUFBRSxDQUFDO0FBQzdCLGFBQWEsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLGFBQWEsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDM0MsWUFBWSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLFlBQVksVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDbkQsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDO0FBQ3pDLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7QUFDdEMsUUFBUSxVQUFVLEVBQUUsVUFBVTtBQUM5QixLQUFLLENBQUM7QUFDTixDQUFDO0FBQ0QsMEJBQTRCLEdBQUcsb0JBQW9CLENBQUM7Ozs7Ozs7OztBQ3RGcEQsU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3JCLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBQ0QsTUFBTSxDQUFDLGNBQWMsVUFBVSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RCxRQUFRLENBQUNqRyxTQUF3QixDQUFDLENBQUM7QUFDbkMsUUFBUSxDQUFDRyxXQUEwQixDQUFDLENBQUM7QUFDckMsUUFBUSxDQUFDb0csT0FBd0IsQ0FBQyxDQUFDO0FBQ25DLFFBQVEsQ0FBQ0MsSUFBcUIsQ0FBQyxDQUFDO0FBQ2hDLFFBQVEsQ0FBQ0MsVUFBMkIsQ0FBQyxDQUFDO0FBQ3RDLFFBQVEsQ0FBQ0Msa0JBQW1DLENBQUMsQ0FBQztBQUM5QyxRQUFRLENBQUNDLFFBQXVCLENBQUMsQ0FBQztBQUNsQyxRQUFRLENBQUNDLFFBQXlCLENBQUMsQ0FBQztBQUNwQyxRQUFRLENBQUNDLFdBQTRCLENBQUMsQ0FBQztBQUN2QyxRQUFRLENBQUNDLFVBQTJCLENBQUMsQ0FBQztBQUN0QyxRQUFRLENBQUNDLE1BQXVCLENBQUMsQ0FBQztBQUNsQyxRQUFRLENBQUNDLE1BQXVCLENBQUMsQ0FBQztBQUNsQyxRQUFRLENBQUNDLFNBQTBCLENBQUMsQ0FBQztBQUNyQyxRQUFRLENBQUNDLGFBQThCLENBQUMsQ0FBQztBQUN6QyxRQUFRLENBQUNDLElBQXFCLENBQUMsQ0FBQztBQUNoQyxRQUFRLENBQUNDLEtBQXNCLENBQUMsQ0FBQzs7Ozs7QUNwQmpDLENBQUMsU0FBUyxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQzFELENBQ0UsaUJBQWlCLE9BQU8sQ0FBQ3BILElBQWtCLENBQUMsQ0FNSztBQUNuRCxDQUFDLEVBQUVELGNBQUksRUFBRSxTQUFTLDZCQUE2QixFQUFFO0FBQ2pELGdCQUFnQixDQUFDLFNBQVMsT0FBTyxFQUFFO0FBQ25DO0FBQ0EsVUFBVSxJQUFJLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUNwQztBQUNBO0FBQ0EsVUFBVSxTQUFTLG1CQUFtQixDQUFDLFFBQVEsRUFBRTtBQUNqRDtBQUNBO0FBQ0EsV0FBVyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQzFDLFlBQVksT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDdEQsWUFBWTtBQUNaO0FBQ0EsV0FBVyxJQUFJLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRztBQUNyRCxZQUFZLENBQUMsRUFBRSxRQUFRO0FBQ3ZCLFlBQVksQ0FBQyxFQUFFLEtBQUs7QUFDcEIsWUFBWSxPQUFPLEVBQUUsRUFBRTtBQUN2QixZQUFZLENBQUM7QUFDYjtBQUNBO0FBQ0EsV0FBVyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUMvRjtBQUNBO0FBQ0EsV0FBVyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMzQjtBQUNBO0FBQ0EsV0FBVyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDakMsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFVBQVUsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUMxQztBQUNBO0FBQ0EsVUFBVSxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7QUFDbkQ7QUFDQTtBQUNBLFVBQVUsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLFNBQVMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3BFO0FBQ0E7QUFDQSxVQUFVLG1CQUFtQixDQUFDLENBQUMsR0FBRyxTQUFTLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0FBQ2xFLFdBQVcsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFDckQsWUFBWSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDakQsYUFBYSxZQUFZLEVBQUUsS0FBSztBQUNoQyxhQUFhLFVBQVUsRUFBRSxJQUFJO0FBQzdCLGFBQWEsR0FBRyxFQUFFLE1BQU07QUFDeEIsYUFBYSxDQUFDLENBQUM7QUFDZixZQUFZO0FBQ1osV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBLFVBQVUsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLFNBQVMsTUFBTSxFQUFFO0FBQ25ELFdBQVcsSUFBSSxNQUFNLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVO0FBQ25ELFlBQVksU0FBUyxVQUFVLEdBQUcsRUFBRSxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFO0FBQy9ELFlBQVksU0FBUyxnQkFBZ0IsR0FBRyxFQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUMzRCxXQUFXLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RELFdBQVcsT0FBTyxNQUFNLENBQUM7QUFDekIsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBLFVBQVUsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLFNBQVMsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEk7QUFDQTtBQUNBLFVBQVUsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNyQztBQUNBO0FBQ0EsVUFBVSxPQUFPLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxPQUFPLFNBQVMsTUFBTSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRTtBQUd0RDtBQUNBO0FBQ0EsSUFBSSxPQUFPLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE9BQU8sTUFBTSxDQUFDLFFBQVEsS0FBSyxRQUFRLEdBQUcsVUFBVSxHQUFHLEVBQUUsRUFBRSxPQUFPLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxVQUFVLEdBQUcsRUFBRSxFQUFFLE9BQU8sR0FBRyxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsV0FBVyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDLFNBQVMsR0FBRyxRQUFRLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQzdRO0FBQ0EsSUFBSSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsSUFBSSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEMsSUFBSSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxNQUFNLEtBQUssV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDMUYsSUFBSSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsSUFBSSxRQUFRLEdBQUcsU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3BDLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFdBQVcsR0FBRyxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvRSxDQUFDLENBQUM7QUFDRixJQUFJLFFBQVEsR0FBRyxTQUFTLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDcEMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssV0FBVyxHQUFHLFdBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlFLENBQUMsQ0FBQztBQUNGLElBQUksUUFBUSxHQUFHLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUNwQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFdBQVcsR0FBRyxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM1RixDQUFDLENBQUM7QUFDRixJQUFJLFVBQVUsR0FBRyxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUU7QUFDeEMsRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLEdBQUcsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUN4RyxDQUFDLENBQUM7QUFDRixJQUFJLEdBQUcsR0FBRyxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDNUI7QUFDQSxJQUFJLFNBQVMsR0FBRyxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQzdDLEVBQUUsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDdkIsSUFBSSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDakIsSUFBSSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoQyxHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBLFNBQVMsVUFBVSxDQUFDLE9BQU8sRUFBRTtBQUM3QixFQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUNEO0FBQ0E7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxZQUFZO0FBQ3ZDLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUM3QjtBQUNBLEVBQUUsTUFBTSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7QUFDakM7QUFDQSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDdEIsRUFBRSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQzFCLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLEVBQUUsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3BCO0FBQ0EsRUFBRSxJQUFJLFFBQVEsR0FBRyxTQUFTLFFBQVEsQ0FBQyxHQUFHLEVBQUU7QUFDeEMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMxQixHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMzQztBQUNBLEVBQUUsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNuRDtBQUNBLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztBQUNsRixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUU7QUFDM0IsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6QixHQUFHO0FBQ0gsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDekIsR0FBRztBQUNILEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRTtBQUMz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SztBQUNMLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUU7QUFDdkQsTUFBTSxNQUFNLCtCQUErQixDQUFDO0FBQzVDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDM0YsTUFBTSxNQUFNLDhDQUE4QyxDQUFDO0FBQzNELEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRTtBQUNyRixNQUFNLE1BQU0sa0RBQWtELENBQUM7QUFDL0QsS0FBSztBQUNMLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFLLENB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QUFDLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ25HLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRTtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUNuRyxHQUFHO0FBQ0gsRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRTtBQUM5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDckcsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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LENBQUMsQ0FBQyxDQUFDO0FBQ2YsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2YsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2YsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2YsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2YsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEQ7QUFDQSxFQUFFLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtBQUNqQixJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEdBQUcsTUFBTTtBQUNULElBQUksSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQy9ELElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQzlELElBQUksT0FBTyxDQUFDLEdBQUcsTUFBTSxJQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzlELEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDbEMsU0FBUyxDQUFDLGVBQWUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUMxQyxTQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ2pDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDbkM7QUFDQSxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUMzQjtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU8sU0FBUyxNQUFNLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFO0FBR3REO0FBQ0E7QUFDQSxTQUFTLEtBQUssR0FBRyxFQUFFO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxDQUFDLElBQUksR0FBRyxVQUFVLEtBQUssRUFBRTtBQUM5QixFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtBQUNqQixJQUFJLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsR0FBRyxNQUFNLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtBQUN4QixJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDZCxHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLEtBQUssR0FBRyxVQUFVLEtBQUssRUFBRTtBQUMvQixFQUFFLE9BQU8sS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsSUFBSSxHQUFHLFVBQVUsS0FBSyxFQUFFO0FBQzlCLEVBQUUsT0FBTyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ3ZCO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTyxTQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7QUFHdEQ7QUFDQTtBQUNBLFNBQVMsT0FBTyxHQUFHLEVBQUU7QUFDckI7QUFDQSxPQUFPLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztBQUMvQixPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsVUFBVSxDQUFDO0FBQ2hDO0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDekI7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPLFNBQVMsTUFBTSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRTtBQUd0RDtBQUNBO0FBQ0EsSUFBSSxZQUFZLEdBQUcsWUFBWSxFQUFFLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxPQUFPLElBQUksVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLFVBQVUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsRUFBRSxJQUFJLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3BqQjtBQUNBLFNBQVMsZUFBZSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxZQUFZLFdBQVcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxJQUFJLFNBQVMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN6SjtBQUNBLElBQUksUUFBUSxHQUFHLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtBQUN4QyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ2xELENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxHQUFHLEdBQUcsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQy9DLEVBQUUsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDckIsR0FBRyxNQUFNO0FBQ1QsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNyQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtBQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLEdBQUcsTUFBTTtBQUNULElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDckIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNuQixFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ25CO0FBQ0EsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDaEI7QUFDQSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQzNDLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUk7QUFDdEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUN2QjtBQUNBO0FBQ0EsRUFBRSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNyQixHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDckIsR0FBRyxNQUFNO0FBQ1QsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNyQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDL0I7QUFDQSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNoQjtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksVUFBVSxHQUFHLFlBQVk7QUFDN0IsRUFBRSxTQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUU7QUFDNUIsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDckI7QUFDQSxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDdEM7QUFDQSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNyQjtBQUNBLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO0FBQ3RCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUNoQyxRQUFRLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixPQUFPLENBQUMsQ0FBQztBQUNULEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUM1QixJQUFJLEdBQUcsRUFBRSxNQUFNO0FBQ2YsSUFBSSxLQUFLLEVBQUUsU0FBUyxJQUFJLEdBQUc7QUFDM0IsTUFBTSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDekIsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLGNBQWM7QUFDdkIsSUFBSSxLQUFLLEVBQUUsU0FBUyxZQUFZLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRTtBQUNqRCxNQUFNLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRSxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsYUFBYTtBQUN0QixJQUFJLEtBQUssRUFBRSxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFO0FBQ2hELE1BQU0sT0FBTyxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pFLEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxrQkFBa0I7QUFDM0IsSUFBSSxLQUFLLEVBQUUsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFO0FBQ3pELE1BQU0sT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNELEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxpQkFBaUI7QUFDMUIsSUFBSSxLQUFLLEVBQUUsU0FBUyxlQUFlLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRTtBQUN4RCxNQUFNLE9BQU8sR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMzRCxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsTUFBTTtBQUNmLElBQUksS0FBSyxFQUFFLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUM5QixNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2RCxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsU0FBUztBQUNsQixJQUFJLEtBQUssRUFBRSxTQUFTLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDakMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkQsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLFFBQVE7QUFDakIsSUFBSSxLQUFLLEVBQUUsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFO0FBQ2pDLE1BQU0sT0FBTyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pDLEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxLQUFLO0FBQ2QsSUFBSSxLQUFLLEVBQUUsU0FBUyxHQUFHLEdBQUc7QUFDMUIsTUFBTSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM1QyxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsU0FBUztBQUNsQixJQUFJLEtBQUssRUFBRSxTQUFTLE9BQU8sR0FBRztBQUM5QixNQUFNLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEMsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLE9BQU87QUFDaEIsSUFBSSxLQUFLLEVBQUUsU0FBUyxLQUFLLEdBQUc7QUFDNUIsTUFBTSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM1QyxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0wsSUFBSSxHQUFHLEVBQUUsV0FBVztBQUNwQixJQUFJLEtBQUssRUFBRSxTQUFTLFNBQVMsR0FBRztBQUNoQyxNQUFNLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEMsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMLElBQUksR0FBRyxFQUFFLGVBQWU7QUFDeEIsSUFBSSxLQUFLLEVBQUUsU0FBUyxhQUFhLENBQUMsS0FBSyxFQUFFO0FBQ3pDLE1BQU0sSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO0FBQ2xDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFFBQVEsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNoQyxRQUFRLE9BQU8sQ0FBQyxHQUFHLEtBQUssRUFBRTtBQUMxQixVQUFVLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ2pDLFVBQVUsQ0FBQyxFQUFFLENBQUM7QUFDZCxTQUFTO0FBQ1QsUUFBUSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDN0IsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxlQUFlO0FBQ3hCLElBQUksS0FBSyxFQUFFLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDaEQsTUFBTSxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUU7QUFDbEMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsUUFBUSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ2hDLFFBQVEsT0FBTyxDQUFDLEdBQUcsS0FBSyxFQUFFO0FBQzFCLFVBQVUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDakMsVUFBVSxDQUFDLEVBQUUsQ0FBQztBQUNkLFNBQVM7QUFDVCxRQUFRLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzlCLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNOO0FBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLEVBQUUsQ0FBQztBQUNKO0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7QUFDNUI7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPLFNBQVMsTUFBTSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRTtBQUd0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDeEIsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNoQixFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2hCLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtBQUMzQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtBQUN4RSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7QUFDdEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1YsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFlBQVk7QUFDbkMsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxZQUFZO0FBQ25DLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsWUFBWTtBQUMxQyxFQUFFLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2pELEVBQUUsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO0FBQy9ELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNWLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixHQUFHLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7QUFDeEU7QUFDQSxJQUFJLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzlDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEIsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNuQyxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3ZDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDYixFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDOUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNmLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDZixDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsR0FBRyxFQUFFO0FBQ3hDLEVBQUUsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxPQUFPLEVBQUU7QUFDdkMsSUFBSSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDakIsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUMsR0FBRztBQUNILEVBQUUsT0FBTyxJQUFJLElBQUksR0FBRyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtBQUN2QyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUM5RSxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ3ZCO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTyxTQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7QUFHdEQ7QUFDQTtBQUNBLFNBQVMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUN6QyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2IsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNiLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDakIsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNsQjtBQUNBLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ2pFLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZixJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxZQUFZO0FBQ3hDLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUNGO0FBQ0EsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDekMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUNGO0FBQ0EsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsWUFBWTtBQUN4QyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUM7QUFDRjtBQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ3pDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDYixDQUFDLENBQUM7QUFDRjtBQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7QUFDNUMsRUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxVQUFVLEtBQUssRUFBRTtBQUNqRCxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUNGO0FBQ0EsVUFBVSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsWUFBWTtBQUM3QyxFQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUNyQixDQUFDLENBQUM7QUFDRjtBQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsTUFBTSxFQUFFO0FBQ25ELEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxZQUFZO0FBQzVDLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxZQUFZO0FBQzdDLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUMvQyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDN0IsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDOUIsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDN0IsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDOUIsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxZQUFZO0FBQzlDLEVBQUUsT0FBTyxJQUFJLENB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T0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNqRSxRQUFRLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxRSxVQUFVLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3RELFlBQVksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQztBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxLQUFLLElBQUksS0FBSyxFQUFFO0FBQ3hFLGNBQWMsU0FBUztBQUN2QixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsWUFBWSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN6RSxjQUFjLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hJLGNBQWMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMs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QUd0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFDMUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFDRDtBQUNBLFNBQVMsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckQ7QUFDQSxLQUFLLElBQUksVUFBVSxJQUFJLEtBQUssRUFBRTtBQUM5QixJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQVUsSUFBSSxFQUFFO0FBQ2xELElBQUksT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxTQUFTLEVBQUU7QUFDM0QsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEQsSUFBSSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEQsSUFBSSxJQUFJLGNBQWMsR0FBRyxT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QUFDLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFDRjtBQUNBRCxPQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUMsRUFBRTtBQUMxQyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUlDLFVBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRTtBQUM3QixJQUFJLElBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3pFLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQzFCLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLE1BQU0sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLE1BQU1BLFVBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEtBQUssRUFBRTtBQUMvQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUIsT0FBTyxDQUFDLENBQUM7QUFDVCxNQUFNLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixLQUFLO0FBQ0wsSUFBSUEsVUFBQyxDQUFDLElBQUksQ0FBQ0EsVUFBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDNUMsSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMs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O0FBQ1QsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRTtBQUNqQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFO0FBQ2xCLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFO0FBQzNCLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDekIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFO0FBQzNCLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDekIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQ25DLElBQUksVUFBVSxFQUFFLElBQUk7QUFDcEIsSUFBSSxRQUFRLEVBQUUsSUFBSTtBQUNsQixHQUFHLENBQUMsQ0FBQztBQUNMLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2hCO0FBQ0EsRUFBRSxJQUFJLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO0FBQzVDLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFF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SUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztBQUN4QyxNQUFNLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxNQUFNLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxNQUFNLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxNQUFNLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDeEMsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztBQUN4QyxHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLFlBQVksR0FBRyxTQUFTLFlBQVksQ0FBQyxDQUFDLEVBQUU7QUFDOUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7QUFDN0IsTUFBTSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN0RSxNQUFNLElBQUksSUFBSSxHQUFH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QUNSO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUM7QUFDNUM7QUFDQTtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3RCLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDakUsSUFBSSxJQUFJLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNsRSxJQUFJLElBQUksTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQzlGLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3pHO0FBQ0E7QUFDQSxFQUFFLEdBQUc7QUFDTCxJQUFJLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0UsSUFBSSxJQUFJLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNqRSxJQUFJLElBQUksTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2xFLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtBQUM3RSxFQUFFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNsRCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUU7QUFDdEIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNO0FBQzNCLE1BQU0sQ0FBQztBQUNQLE1BQU0sQ0FBQztBQUNQLE1BQU0sRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN2QixNQUFNLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkIsTUFBTSxFQUFFLEdBQUcsUUFBUTtBQUNuQixNQUFNLEVBQUUsR0FBRyxRQUFRO0FBQ25CLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUTtBQUNwQixNQUFNLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUNyQjtBQUNBO0FBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUMxQixJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUztBQUNuRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQztBQUN0QztBQUNBO0FBQ0EsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25DO0FBQ0E7QUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzFCLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzFCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2xEO0FBQ0EsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRztBQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRztBQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRztBQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNqQixJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxHQUFHO0FBQ0g7QUFDQTtBQUNBLE9BQU87QUFDUCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQztBQUN4QixRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSztBQUN6QixRQUFRLE1BQU07QUFDZCxRQUFRLENBQUMsQ0FBQztBQUNWO0FBQ0EsSUFBSSxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7QUFDbkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckUsTUFBTSxRQUFRLENBQUM7QUFDZixRQUFRLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNoRCxRQUFRLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNoRCxRQUFRLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNoRCxRQUFRLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNoRCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENB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LE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDeEMsT0FBTztBQUNQLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxNQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDckMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUNyQyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUM7QUFDckIsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUU7QUFDMUI7QUFDQTtBQUNBLElBQUksSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3hCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQzNCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQzNCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQzNCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsU0FBUztBQUN0QztBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckIsTUFBTSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQztBQUM1QixVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCO0FBQ0EsTUFBTSxLQUFLLENBQUMsSUFBSTtBQUNoQixRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDekMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFF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LEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFNBQVMsR0FBRztBQUNyQixFQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztBQUNwQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLFNBQVMsR0FBRztBQUNyQixFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNmLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksRUFBRTtBQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUN6RCxHQUFHLENBQUMsQ0FBQztBQUNMLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFVBQVUsQ0FBQyxRQUFRLEVBQUU7QUFDOUIsRUFBRSxJQUFJLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDOUQsRUFBRSxJQUFJLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRTtBQUMxQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzdGLE1BQU0sSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkUsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RSxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLEtBQUs7QUFDTCxHQUFHO0FBQ0gsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFDRDtBQUNBLFNBQVMsZUFBZSxDQUFDLFFBQVEsRUFBRTtBQUNuQyxFQUFFLElBQUksS0FBSyxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvQixFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0YsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUU7QUFDMUIsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3RCLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3JCLE1BQU0sSUFBSSxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEcsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RSxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMs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RSxJQUFJLEVBQUUsV0FBVztBQUNuQixJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM5QixJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDNUMsSUFBSSxPQUFPLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSCxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDN0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFILElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDL0UsSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekYsR0FBRztBQUNILEVBQUUsS0FBSyxFQUFFLFNBQVMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDcEMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMvRSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdGLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDekIsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUNsRCxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDckMsTUFBTSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDckIsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUNuQyxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDL0MsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENB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QUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUUsR0FBRztBQUNIO0FBQ0EsRUFBRSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUU7QUFDeEIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzNELE1BQU0sS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDcEUsUUFBUSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3BFLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFFLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFFLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsU0FBUyxDQUFD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QUFFLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQUM7QUFDaEUsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsUUFBUSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQUM7QUFDaEUsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxVQUFVLENBQUM7QUFDdEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxTQUFTLGVBQWUsR0FBRztBQUM3QixJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3hELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUN0QyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzVDLE1BQU0sSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMxQyxRQUFRLElBQUksTUFBTSxHQUFHLGFBQWEs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LEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUUsR0FBRztBQUNIO0FBQ0EsRUFBRSxTQUFTLFVBQVUsR0FBRztBQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTztBQUN2QixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztBQUNsQyxJQUFJLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9GLEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFO0FBQzVCLElBQUksSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckIsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3RDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDdEQsVUFBVSxRQUFRLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkUsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMxQixNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMxQixLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVM7QUFDVCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDZixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLE1BQU0sR0FBRyxRQUFRLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0MsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRTtBQUN6QixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO0FBQzFCLEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0FBQ2xDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDakM7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDM0IsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMzQixRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNuQixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUM1QixNQUFNLElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRTtBQUM1QixRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BELFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsUUFBUSxJQUFJLENBQUMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlELFFBQVEsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLFFBQVEsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLE9BQU87QUFDUCxNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLFlBQVksRUFBRSxPQUFPO0FBQ3REO0FBQ0E7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtBQUN6QyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sSUFB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 + */var Ya=fe((function(e,t){t.parse=function(e,t){if(t?t.offsets=void 0===t.offsets||t.offsets:t={offsets:!0},e||(e=""),-1!==e.indexOf(":")||t.tokenize){if(t.keywords||t.ranges||t.tokenize){var C={text:[]};t.offsets&&(C.offsets=[]);for(var i,H={},n=[],V=/(\S+:'(?:[^'\\]|\\.)*')|(\S+:"(?:[^"\\]|\\.)*")|(-?"(?:[^"\\]|\\.)*")|(-?'(?:[^'\\]|\\.)*')|\S+|\S+:\S+/g;null!==(i=V.exec(e));){var r,L=(r=i[0]).indexOf(":");if(-1!==L){r.split(":");var o=r.slice(0,L),a=r.slice(L+1);a=((a=a.replace(/^\"|\"$|^\'|\'$/g,""))+"").replace(/\\(.?)/g,(function(e,t){switch(t){case"\\":return"\\";case"0":return"\0";case"":return"";default:return t}})),n.push({keyword:o,value:a,offsetStart:i.index,offsetEnd:i.index+r.length})}else{var M=!1;"-"===r[0]&&(M=!0,r=r.slice(1)),r=((r=r.replace(/^\"|\"$|^\'|\'$/g,""))+"").replace(/\\(.?)/g,(function(e,t){switch(t){case"\\":return"\\";case"0":return"\0";case"":return"";default:return t}})),M?H.text?(H.text instanceof Array||(H.text=[H.text]),H.text.push(r)):H.text=r:n.push({text:r,offsetStart:i.index,offsetEnd:i.index+r.length})}}for(n.reverse();r=n.pop();)if(r.text)C.text.push(r.text),t.offsets&&C.offsets.push(r);else{o=r.keyword;t.keywords=t.keywords||[];var s=!1,l=!1;if(/^-/.test(o)){if("-"===o[0]){var d=o.slice(1);(s=!(-1===t.keywords.indexOf(d)))&&(o=d,l=!0)}}else s=!(-1===t.keywords.indexOf(o));t.ranges=t.ranges||[];var u=!(-1===t.ranges.indexOf(o));if(s){if(t.offsets&&C.offsets.push({keyword:o,value:r.value,offsetStart:l?r.offsetStart+1:r.offsetStart,offsetEnd:r.offsetEnd}),(c=r.value).length){var A=c.split(",");l?H[o]?H[o]instanceof Array?A.length>1?H[o]=H[o].concat(A):H[o].push(c):(H[o]=[H[o]],H[o].push(c)):A.length>1?H[o]=A:t.alwaysArray?H[o]=[c]:H[o]=c:C[o]?C[o]instanceof Array?A.length>1?C[o]=C[o].concat(A):C[o].push(c):(C[o]=[C[o]],C[o].push(c)):A.length>1?C[o]=A:t.alwaysArray?C[o]=[c]:C[o]=c}}else if(u){t.offsets&&C.offsets.push(r);var c,h=(c=r.value).split("-");C[o]={},2===h.length?(C[o].from=h[0],C[o].to=h[1]):!h.length%2||(C[o].from=c)}else{var m=r.keyword+":"+r.value;C.text.push(m),t.offsets&&C.offsets.push({text:m,offsetStart:r.offsetStart,offsetEnd:r.offsetEnd})}}return C.text.length?t.tokenize||(C.text=C.text.join(" ").trim()):delete C.text,C.exclude=H,C}return e}return e},t.stringify=function(e,C,i){if(C||(C={offsets:!0}),!e)return"";if("string"==typeof e)return e;if(Array.isArray(e))return e.join(" ");if(!Object.keys(e).length)return"";if(3===Object.keys(e).length&&e.text&&e.offsets&&e.exclude&&"string"==typeof e.text)return e.text;i||(i="");var H=function(e){return e.indexOf(" ")>-1?JSON.stringify(e):e},n=function(e){return i+e},V=[];if(e.text){var r=[];"string"==typeof e.text?r.push(e.text):r.push.apply(r,e.text),r.length>0&&V.push(r.map(H).map(n).join(" "))}return C.keywords&&C.keywords.forEach((function(t){if(e[t]){var C=[];"string"==typeof e[t]?C.push(e[t]):C.push.apply(C,e[t]),C.length>0&&V.push(n(t+":"+C.map(H).join(",")))}})),C.ranges&&C.ranges.forEach((function(t){if(e[t]){var C=e[t].from,i=e[t].to;i&&(C=C+"-"+i),C&&V.push(n(t+":"+C))}})),e.exclude&&Object.keys(e.exclude).length>0&&V.push(t.stringify(e.exclude,C,"-")),V.join(" ")}})),Xa=Ya;const qa=function(e,t,C="*="){return"string"==typeof t||t instanceof String?[`[${e} ${C} '${t}']`]:t.map((t=>`[${e} ${C} '${t}']`))},Qa=function(e,t){switch(t){case"exclude":return[];case"content":case"ignore-case":case"text":return qa("content",e[t],"@*=");case"match-case":return qa("content",e[t],"*=");case"file":return qa("name",e[t]);case"name":return qa("name",e[t],"@*=");case"tag":return"string"==typeof(i=e[t])||i instanceof String?i.length>0&&"#"===i[0]?(i.slice(1),[`.tag-${i.slice(1).replaceAll("/","-")}`]):[]:i.map((e=>e.length>0&&"#"===e[0]?`.tag-${e.slice(1).replaceAll("/","-")}`:""));case"class":return"string"==typeof(C=e[t])||C instanceof String?[`.${C}`]:C.map((e=>`.${e}`));case"raw":return[e[t]];default:return qa(t,e[t])}var C,i},Ka=function(e,t,C){if(C===e)return function(e,t){const C=new Set;t.forEach((e=>{Object.keys(e.data()).forEach((e=>C.add(e)))}));const i=["file","tag","raw","match-case","ignore-case","class"];i.push(...C);const H={keywords:i,tokenize:!0,offsets:!1},n=Xa.parse(e,H);let V="node";for(const e of Object.keys(n))V+=Qa(n,e).join();let r=t.filter(V);if(n.exclude)for(const e of Object.keys(n.exclude))for(const t of Qa(n.exclude,e)){const e="node"+t;r=r.not(e)}return r}(e,t);const i=[];let H=0,n=0;for(let t=0;te.union(function(e,t){const C=[],i=[];let H=0,n=-1,V=-1;for(let t=0;t0&&"-"===e[t-1]?t-1:t);H.trim().length>0&&(i.push(!1),C.push(H))}H+=1}else if(")"===e[t])H-=1,0===H&&(V=t,i.push(n>0&&"-"===e[n-1]),C.push(e.slice(n+1,V)));else if(t===e.length-1){const t=e.slice(V+1);t.trim().length>0&&(i.push(!1),C.push(t))}let r=t;for(let t=0;tnew n(e,this.datastores.coreStore.storeId()))),C=this.settings.expandInitial?await this.neighbourhood(i):await Promise.all(i.map((e=>this.datastores.coreStore.get(e,this)))),C=C.filter((e=>e)),this.viz=Wo({container:t,elements:C,minZoom:.3,maxZoom:10,wheelSensitivity:this.settings.zoomSpeed})):this.viz=Wo({container:t,elements:[{data:{id:"a"}},{data:{id:"b"}}],minZoom:.3,maxZoom:10,wheelSensitivity:this.settings.zoomSpeed}),this.viz.dblclick(),this.settings.navigator){const e=document.createElement("div");e.id="cynav"+eM,t.children[0].appendChild(e),e.addClass("cy-navigator"),this.viz.navigator({container:"#cynav"+eM,viewLiveFramerate:0,thumbnailEventFramerate:10,thumbnailLiveFramerate:!1,dblClickDelay:200,removeCustomContainer:!0,rerenderDelay:100})}if(eM+=1,i){for(const e of i){const t=this.viz.$id(e.toId());this.settings.expandInitial&&t.addClass("expanded"),t.addClass("protected")}const e=this.viz.nodes(),t=await this.buildEdges(e);this.viz.add(t),this.onGraphChanged(!0)}await this.updateStylesheet(),i&&this.restartLayout();this.viz.on("tap boxselect",(async e=>{this.element.focus()})),this.viz.on("tap","node",(async e=>{n.fromNode(e.target).storeId})),this.viz.on("tap","edge",(async e=>{})),this.viz.on("mouseover","node",(async e=>{e.target.unlock();const t=e.target;e.cy.elements().difference(t.closedNeighborhood()).addClass("unhover"),t.addClass("hover").connectedEdges().addClass("connected-hover").connectedNodes().addClass("connected-hover");const C=n.fromNode(e.target);if("core"===C.storeId){const t=this.plugin.metadata.getFirstLinkpathDest(C.id,"");!t||"md"!==t.extension||!e.originalEvent.metaKey&&this.settings.metaKeyHover||(this.hoverTimeout[e.target.id()]=setTimeout((async()=>this.plugin.app.workspace.trigger("link-hover",this.element,null,t.path,"")),300))}})),this.viz.on("mouseover","edge",(async e=>{const t=e.target;this.settings.hoverEdges&&(e.cy.elements().difference(t.connectedNodes().union(t)).addClass("unhover"),t.addClass("hover").connectedNodes().addClass("connected-hover")),!("context"in t.data())||!e.originalEvent.metaKey&&this.settings.metaKeyHover||(this.hoverTimeout[e.target.id()]=setTimeout((async()=>{const e=n.fromNode(t.source()),C=this.plugin.metadata.getFirstLinkpathDest(e.id,"");if(C&&"md"===C.extension&&"obsidian-hover-editor"in this.plugin.app.plugins.plugins){const e=t.data().line,i={scroll:e,line:e,startLoc:{line:e,col:t.data().start,offset:0},endLoc:{line:e,col:t.data().end,offset:0}};this.plugin.app.workspace.trigger("link-hover",this.element,null,C.path,"",i)}else await this.popover(t.data().context,"",t,"juggl-preview-edge")}),800))})),this.viz.on("mouseout",(e=>{if(e.target===e.cy)return;const t=e.target.id();t in this.hoverTimeout&&(clearTimeout(this.hoverTimeout[t]),this.hoverTimeout[t]=void 0),e.cy.elements().removeClass(["hover","unhover","connected-hover"]),e.target.hasClass("pinned")&&e.target.lock()})),this.viz.on("grab",(e=>{this.activeLayout&&this.activeLayout.stop()})),this.viz.on("dragfree",(e=>{this.activeLayout&&this.activeLayout.stop(),this.activeLayout.start();const t=e.target;t.lock(),this.activeLayout.one("layoutstop",(e=>{t.hasClass("pinned")||t.unlock()}))})),this.viz.on("cxttap",(t=>{const C=new e.Menu(this.plugin.app);if(t.target!==this.viz&&"nodes"===t.target.group()){const e=n.fromNode(t.target);if(t.target.select(),"core"===e.storeId){const t=this.plugin.app.metadataCache.getFirstLinkpathDest(e.id,"");void 0!==t&&this.plugin.app.workspace.trigger("file-menu",C,t,"my-context-menu",null)}}this.mode.fillMenu(C,this.viz.nodes(":selected")),C.showAtPosition({x:t.originalEvent.x,y:t.originalEvent.y})})),this.viz.on("layoutstop",e.debounce((e=>{if(!this.settings.autoZoom)return;let t;const C=this.viz.nodes(".active-node");t=C.length>0?C.closedNeighborhood():this.viz.nodes(),e.cy.animate({fit:{eles:t,padding:0},duration:250,queue:!1})}),500,!0)),this.vizReady=!0,this.trigger("vizReady",this.viz),console.log("Visualization ready")}catch(e){throw console.log(e),e}}async popover(t,C,i,H){const n=document.createElement("div");n.addClasses(["popover","hover-popover","is-loaded","juggl-hover"]);const V=document.createElement("div");V.addClasses(["markdown-embed",H]),n.appendChild(V);const r=document.createElement("div");r.addClasses(["markdown-embed-content"]),V.appendChild(r);const L=document.createElement("div");L.addClasses(["markdown-preview-view"]),r.appendChild(L);const o=document.createElement("div");o.addClasses(["markdown-preview-sizer","markdown-preview-section"]),L.appendChild(o),await e.MarkdownRenderer.renderMarkdown(t,o,C,null),document.body.appendChild(n);const a=i.popper({content:()=>n,popper:{placement:"top"}}),M=function(){a.update()};i.on("position",M),this.viz.on("pan zoom resize",M),n.addEventListener("mouseenter",(e=>{n.addClass("popover-hovered")})),this.destroyHover=()=>{a.destroy(),n.remove(),this.destroyHover=null},n.addEventListener("mouseleave",this.destroyHover);const s=this.destroyHover;this.viz.one("mouseout",(e=>{setTimeout((function(){n.hasClass("popover-hovered")||s()}),300)}))}async neighbourhood(e){const t=[];for(const C of this.datastores.dataStores){const i=await C.getNeighbourhood(e,this);t.push(...i)}return t}async buildEdges(e){const t=[];for(const C of this.datastores.dataStores)t.push(...await C.connectNodes(this.viz.nodes(),e,this));return t}async expand(e,t=!0,C=!0){if(0===e.length)return null;t&&this.viz.startBatch(),e.addClass("expanded"),e.addClass("protected");const i=e.map((e=>n.fromNode(e))),H=await this.neighbourhood(i);this.mergeToGraph(H,!1,!1);const V=this.viz.collection();H.forEach((e=>{V.merge(this.viz.$id(e.data.id))}));const r=await this.buildEdges(V),L=this.mergeToGraph(r,!1,C);return t&&this.viz.endBatch(),this.trigger("expand",e),L}async updateStylesheet(){const e=new Ve(this.plugin);this.trigger("stylesheet",e);const t=await e.getStylesheet(this);this.viz.style(t)}onunload(){}removeNodes(e){let t=null;return this.viz.batch((()=>{this.getExpanded().intersection(e.neighborhood()).removeClass("expanded"),t=e.remove(),this.onGraphChanged(!1,!0)})),t}fitView(e){e?this.viz.fit(e):this.viz.fit()}restartLayout(){this.activeLayout&&this.activeLayout.stop();const e="string"==typeof(t=this.settings).layout||t.layout instanceof String?Pa(t.layout,t):Pa(t.layout.name,t,t.layout);var t;try{this.activeLayout=e.startLayout(this)}catch(e){console.log(e)}}setLayout(e){this.settings.layout=e.options,this.restartLayout()}mergeToGraph(e,t=!0,C=!0){t&&this.viz.startBatch();const H=[],n=this.viz.collection();e.forEach((e=>{if(0===this.viz.$id(e.data.id).length)H.push(e);else{const t=this.viz.$id(e.data.id),C=i.filter((e=>t.hasClass(e)));C.push(...t.classes().filter((e=>e.startsWith("global-")||e.startsWith("local-")))),t.classes(e.classes);for(const e of C)t.addClass(e);t.data(e.data),n.merge(t)}}));const V=this.viz.add(H);return n.merge(V),C&&this.onGraphChanged(!1),t&&this.viz.endBatch(),{merged:n,added:V}}assignStyleGroups(){const e=this.viz,t=function(t,C){for(const[i,H]of t.entries()){const t=`${C}-${i}`;e.nodes().removeClass(t);Ja(H.filter,e.nodes()).addClass(t)}};t(this.settings.styleGroups,"local"),"settings"in this.plugin&&t(this.plugin.settings.globalStyleGroups,"global")}onGraphChanged(e=!0,t=!1){e&&this.viz.startBatch(),this.viz.nodes().forEach((e=>{e.data("degree",e.degree(!1)),e.data("nameLength",e.data("name").length),e.addClass([...new Set(e.incomers("edge").map((e=>"has-incoming-"+(e.data("type")?e.data("type"):"inline"))))]),e.addClass([...new Set(e.outgoers("edge").map((e=>"has-outgoing-"+(e.data("type")?e.data("type"):"inline"))))])})),e&&this.viz.endBatch(),this.trigger("elementsChange"),this.searchFilter(this.settings.filter),t?this.debouncedRestartLayout():this.restartLayout(),this.assignStyleGroups()}getViz(){return this.viz}setMode(e){this.removeChild(this.mode),"local"===e?this.mode=new Ua(this):"workspace"===e&&(this.mode=new ja(this)),this.addChild(this.mode),this.settings.toolbar&&this.mode.createToolbar(this.element.children[0])}searchFilter(e){this.viz.nodes().removeClass("filtered");const t=Ja(e,this.viz.nodes());this.viz.nodes().difference(t).addClass("filtered"),this.settings.filter=e}getPinned(){return this.viz.nodes(".pinned")}getExpanded(){return this.viz.nodes(".expanded")}getProtected(){return this.viz.nodes(".protected")}on(e,t,C){return this.events.on(e,t,C)}off(e,t){this.events.off(e,t)}offref(e){this.events.offref(e)}trigger(e,...t){this.events.trigger(e,...t)}tryTrigger(e,t){this.events.tryTrigger(e,t)}}class CM extends e.Component{constructor(e){super(),this.settings=e.settings,this.plugin=e,this.imgServer=null}async onload(){if(super.onload(),e.Platform.isMobile||!this.settings.useImgServer)return;const t=require("path"),C=require("http"),i=require("fs");let H=null;try{H=t.join(this.plugin.path)}catch(e){return console.log("Couldn't start image server. This is likely because we're on mobile!"),console.log("Alternatively, windows might block it using the firewall"),void console.log(e)}const n={gif:"image/gif",jpg:"image/jpeg",png:"image/png",svg:"image/svg+xml"},V=this.settings,r=this.plugin.app.vault;this.imgServer=C.createServer((function(e,C){const L=e.url.toString().split("?")[0];if("GET"!==e.method)return C.statusCode=501,C.setHeader("Content-Type","text/plain"),C.end("Method not implemented");let o=t.join(H,decodeURI(L.replace(/\/$/,"/index.html")));o=r.adapter.getFullPath(o),V.debug&&(console.log("entering server query"),console.log(e),console.log(o));const a=n[t.extname(o).slice(1)],M=i.createReadStream(o);M.on("open",(function(){C.setHeader("Content-Type",a),C.setHeader("Access-Control-Allow-Origin","*"),M.pipe(C)})),M.on("error",(function(){console.log("Here3"),C.setHeader("Content-Type","text/plain"),C.statusCode=404,C.end("Not found")}))}));try{const e=this.settings.imgServerPort;this.imgServer.listen(e,(function(){console.log("Image server listening on http://localhost:"+e+"/")}))}catch(t){console.log(t),new e.Notice("Juggl: Couldn't start image server, see console")}}async onunload(){super.onunload(),this.imgServer&&(this.imgServer.close(),this.imgServer=null)}}var iM=fe((function(e){!function(){var t={container:!1,viewLiveFramerate:0,dblClickDelay:200,removeCustomContainer:!0,rerenderDelay:500},C=function(){var e=Math.max,t=Date.now||function(){return(new Date).getTime()};return function(C,i,H){var n,V,r,L,o,a,M,s,l,d=0,u=!1,A=!0;if("function"!=typeof C)throw new TypeError("Expected a function");if(i=i<0?0:+i||0,!0===H){var c=!0;A=!1}else l=typeof(s=H),!s||"object"!=l&&"function"!=l||(c=!!H.leading,u="maxWait"in H&&e(+H.maxWait||0,i),A="trailing"in H?!!H.trailing:A);function h(e,i){i&&clearTimeout(i),V=a=M=void 0,e&&(d=t(),r=C.apply(o,n),a||V||(n=o=void 0))}function m(){var e=i-(t()-L);e<=0||e>i?h(M,V):a=setTimeout(m,e)}function f(){h(A,a)}function p(){if(n=arguments,L=t(),o=this,M=A&&(a||!c),!1===u)var e=c&&!a;else{V||c||(d=L);var H=u-(L-d),s=H<=0||H>u;s?(V&&(V=clearTimeout(V)),d=L,r=C.apply(o,n)):V||(V=setTimeout(f,H))}return s&&a?a=clearTimeout(a):a||i===u||(a=setTimeout(m,i)),e&&(s=!0,r=C.apply(o,n)),!s||a||V||(n=o=void 0),r}return p.cancel=function(){a&&clearTimeout(a),V&&clearTimeout(V),d=0,V=a=M=void 0},p}}(),i=function(e,t){this._init(e,t)},H=function(){for(var e=1;e0?-1!==e.container.indexOf("#")?this.$panel=document.getElementById(e.container.replace("#","")):this.$panel=document.getElementsByClassName(e.container.replace(".",""))[0]:(this.$panel=document.createElement("div"),this.$panel.className="cytoscape-navigator",document.body.appendChild(this.$panel)),this._setupPanel(),this._addCyListener("resize",this.resize.bind(this))},_setupPanel:function(){this.panelWidth=n(this.$panel),this.panelHeight=V(this.$panel)},_initThumbnail:function(){this.$thumbnail=document.createElement("img"),this.$panel.appendChild(this.$thumbnail),this._setupThumbnailSizes(),this._setupThumbnail()},_setupThumbnail:function(){this._updateThumbnailImage()},_setupThumbnailSizes:function(){this.boundingBox=this.bb(),this.thumbnailZoom=Math.min(this.panelHeight/this.boundingBox.h,this.panelWidth/this.boundingBox.w),this.thumbnailPan={x:(this.panelWidth-this.thumbnailZoom*(this.boundingBox.x1+this.boundingBox.x2))/2,y:(this.panelHeight-this.thumbnailZoom*(this.boundingBox.y1+this.boundingBox.y2))/2}},_checkThumbnailSizesAndUpdate:function(){var e=this.thumbnailZoom,t=this.thumbnailPan.x,C=this.thumbnailPan.y;this._setupThumbnailSizes(),e!=this.thumbnailZoom||t!=this.thumbnailPan.x||C!=this.thumbnailPan.y?(this._setupThumbnail(),this._setupView()):this._updateThumbnailImage()},_initView:function(){this.$view=document.createElement("div"),this.$view.className="cytoscape-navigatorView",this.$panel.appendChild(this.$view),this.viewBorderTop=parseInt(this.$view.style["border-top-width"],10)||0,this.viewBorderRight=parseInt(this.$view.style["border-right-width"],10)||0,this.viewBorderBottom=parseInt(this.$view.style["border-bottom-width"],10)||0,this.viewBorderLeft=parseInt(this.$view.style["border-left-width"],10)||0,this.viewBorderHorizontal=this.viewBorderLeft+this.viewBorderRight,this.viewBorderVertical=this.viewBorderTop+this.viewBorderBottom,this._setupView(),this._addCyListener("zoom pan",this._setupView.bind(this))},_setupView:function(){if(!this.viewLocked){var e=this.cy.zoom(),t=this.cy.pan();this.viewW=this.width/e*this.thumbnailZoom,this.viewX=-t.x*this.viewW/this.width+this.thumbnailPan.x-this.viewBorderLeft,this.viewH=this.height/e*this.thumbnailZoom,this.viewY=-t.y*this.viewH/this.height+this.thumbnailPan.y-this.viewBorderTop,this.$view.style.width=this.viewW+"px",this.$view.style.height=this.viewH+"px",this.$view.style.position="absolute",this.$view.style.left=this.viewX+"px",this.$view.style.top=this.viewY+"px"}},_initOverlay:function(){this.$overlay=document.createElement("div"),this.$overlay.className="cytoscape-navigatorOverlay",this.$panel.appendChild(this.$overlay),this.overlayHookPointX=0,this.overlayHookPointY=0,this._initEventsHandling()},resize:function(){this.width=n(this.$element),this.height=V(this.$element),this._thumbnailSetup=!1,this._setupPanel(),this._checkThumbnailSizesAndUpdate(),this._setupView()},_initEventsHandling:function(){for(var e=this,t=["mousedown","mousewheel","DOMMouseScroll","touchstart"],C=["mouseup","mouseout","mousemove","touchmove","touchend"],i=function(t){if("touchstart"==t.type&&(Object.defineProperty(t,"offsetX",{value:e.viewX+e.viewW/2,writable:!0}),Object.defineProperty(t,"offsetY",{value:e.viewY+e.viewH/2,writable:!0})),void 0===t.offsetX||void 0===t.offsetY){var C=t.target.getBoundingClientRect(),i={top:C.top+window.scrollY,left:C.left+window.scrollX};Object.defineProperty(t,"offsetX",{value:t.pageX-i.left,writable:!0}),Object.defineProperty(t,"offsetY",{value:t.pageY-i.top,writable:!0})}return"mousedown"==t.type||"touchstart"==t.type?e._eventMoveStart(t):"mousewheel"!=t.type&&"DOMMouseScroll"!=t.type||e._eventZoom(t),!1},H=function(t){if(e.overlayInMovement){if("touchend"==t.type?(Object.defineProperty(t,"offsetX",{value:e.viewX+e.viewW/2,writable:!0}),Object.defineProperty(t,"offsetY",{value:e.viewY+e.viewH/2,writable:!0})):"touchmove"==t.type&&(Object.defineProperty(t,"pageX",{value:t.originalEvent.touches[0].pageX,writable:!0}),Object.defineProperty(t,"pageY",{value:t.originalEvent.touches[0].pageY,writable:!0})),void 0===t.offsetX||void 0===t.offsetY){var C={top:(i=t.target.getBoundingClientRect()).top+window.scrollY,left:i.left+window.scrollX};Object.defineProperty(t,"offsetX",{value:t.pageX-C.left,writable:!0}),Object.defineProperty(t,"offsetY",{value:t.pageY-C.top,writable:!0})}if(t.target!==e.$overlay){var i=t.target.getBoundingClientRect(),H=e.$overlay.getBoundingClientRect(),n=(C={top:i.top+window.scrollY,left:i.left+window.scrollX},{top:H.top+window.scrollY,left:H.left+window.scrollX});if(!C||!n)return!1;Object.defineProperty(t,"offsetX",{value:t.offsetX-n.left+C.left,writable:!0}),Object.defineProperty(t,"offsetY",{value:t.offsetY-n.top+C.top,writable:!0})}return"mousemove"==t.type||"touchmove"==t.type?e._eventMove(t):"mouseup"!=t.type&&"touchend"!=t.type||e._eventMoveEnd(t),!1}},n=0;nt?(this.overlayLastMoveStartTime=0,this.overlayInMovement=!0,this.overlayHookPointX=this.viewW/2,this.overlayHookPointY=this.viewH/2,!1!==this.options.viewLiveFramerate?this._eventMove({offsetX:this.panelWidth/2,offsetY:this.panelHeight/2}):this._eventMoveEnd({offsetX:this.panelWidth/2,offsetY:this.panelHeight/2}),this.overlayInMovement=!1):(this.overlayLastMoveStartTime=t,this.overlayInMovement=!0,this.viewLocked=!0,e.offsetX>=this.viewX&&e.offsetX<=this.viewX+this.viewW&&e.offsetY>=this.viewY&&e.offsetY<=this.viewY+this.viewH?(this.overlayHookPointX=e.offsetX-this.viewX,this.overlayHookPointY=e.offsetY-this.viewY):(this.overlayHookPointX=this.viewW/2,this.overlayHookPointY=this.viewH/2,this._eventMove(e)))},_eventMove:function(e){var t=this;this._checkMousePosition(e),this.overlayInMovement&&(this.viewX=e.offsetX-this.overlayHookPointX,this.viewY=e.offsetY-this.overlayHookPointY,this.$view.style.left=this.viewX+"px",this.$view.style.top=this.viewY+"px",!1!==this.options.viewLiveFramerate&&(0==this.options.viewLiveFramerate?this._moveCy():this.overlayTimeout||(this.overlayTimeout=setTimeout((function(){t._moveCy(),t.overlayTimeout=!1}),1e3/this.options.viewLiveFramerate))))},_checkMousePosition:function(e){e.offsetX>this.viewX&&e.offsetXthis.viewY&&e.offsetY0&&(i=gM(C.width)/V||1),n>0&&(H=gM(C.height)/n||1)}return{width:C.width/i,height:C.height/H,top:C.top/H,right:C.right/i,bottom:C.bottom/H,left:C.left/i,x:C.left/i,y:C.top/H}}function yM(e){var t=vM(e),C=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-C)<=1&&(C=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:C,height:i}}function ZM(e,t){var C=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(C&&cM(C)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function SM(e){return dM(e).getComputedStyle(e)}function bM(e){return["table","td","th"].indexOf(lM(e))>=0}function wM(e){return((uM(e)?e.ownerDocument:e.document)||window.document).documentElement}function xM(e){return"html"===lM(e)?e:e.assignedSlot||e.parentNode||(cM(e)?e.host:null)||wM(e)}function OM(e){return AM(e)&&"fixed"!==SM(e).position?e.offsetParent:null}function kM(e){for(var t=dM(e),C=OM(e);C&&bM(C)&&"static"===SM(C).position;)C=OM(C);return C&&("html"===lM(C)||"body"===lM(C)&&"static"===SM(C).position)?t:C||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&AM(e)&&"fixed"===SM(e).position)return null;for(var C=xM(e);AM(C)&&["html","body"].indexOf(lM(C))<0;){var i=SM(C);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return C;C=C.parentNode}return null}(e)||t}function EM(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function PM(e,t,C){return fM(e,pM(t,C))}function TM(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function _M(e,t){return t.reduce((function(t,C){return t[C]=e,t}),{})}var BM={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,C=e.state,i=e.name,H=e.options,n=C.elements.arrow,V=C.modifiersData.popperOffsets,r=mM(C.placement),L=EM(r),o=[rM,VM].indexOf(r)>=0?"height":"width";if(n&&V){var a=function(e,t){return TM("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:_M(e,LM))}(H.padding,C),M=yM(n),s="y"===L?HM:rM,l="y"===L?nM:VM,d=C.rects.reference[o]+C.rects.reference[L]-V[L]-C.rects.popper[o],u=V[L]-C.rects.reference[L],A=kM(n),c=A?"y"===L?A.clientHeight||0:A.clientWidth||0:0,h=d/2-u/2,m=a[s],f=c-M[o]-a[l],p=c/2-M[o]/2+h,g=PM(m,p,f),v=L;C.modifiersData[i]=((t={})[v]=g,t.centerOffset=g-p,t)}},effect:function(e){var t=e.state,C=e.options.element,i=void 0===C?"[data-popper-arrow]":C;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&("production"!==process.env.NODE_ENV&&(AM(i)||console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).',"To use an SVG arrow, wrap it in an HTMLElement that will be used as","the arrow."].join(" "))),ZM(t.elements.popper,i)?t.elements.arrow=i:"production"!==process.env.NODE_ENV&&console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper',"element."].join(" ")))},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function DM(e){return e.split("-")[1]}var NM={top:"auto",right:"auto",bottom:"auto",left:"auto"};function RM(e){var t,C=e.popper,i=e.popperRect,H=e.placement,n=e.variation,V=e.offsets,r=e.position,L=e.gpuAcceleration,o=e.adaptive,a=e.roundOffsets,M=e.isFixed,s=V.x,l=void 0===s?0:s,d=V.y,u=void 0===d?0:d,A="function"==typeof a?a({x:l,y:u}):{x:l,y:u};l=A.x,u=A.y;var c=V.hasOwnProperty("x"),h=V.hasOwnProperty("y"),m=rM,f=HM,p=window;if(o){var g=kM(C),v="clientHeight",y="clientWidth";if(g===dM(C)&&"static"!==SM(g=wM(C)).position&&"absolute"===r&&(v="scrollHeight",y="scrollWidth"),g=g,H===HM||(H===rM||H===VM)&&n===oM)f=nM,u-=(M&&p.visualViewport?p.visualViewport.height:g[v])-i.height,u*=L?1:-1;if(H===rM||(H===HM||H===nM)&&n===oM)m=VM,l-=(M&&p.visualViewport?p.visualViewport.width:g[y])-i.width,l*=L?1:-1}var Z,S=Object.assign({position:r},o&&NM),b=!0===a?function(e){var t=e.x,C=e.y,i=window.devicePixelRatio||1;return{x:gM(t*i)/i||0,y:gM(C*i)/i||0}}({x:l,y:u}):{x:l,y:u};return l=b.x,u=b.y,L?Object.assign({},S,((Z={})[f]=h?"0":"",Z[m]=c?"0":"",Z.transform=(p.devicePixelRatio||1)<=1?"translate("+l+"px, "+u+"px)":"translate3d("+l+"px, "+u+"px, 0)",Z)):Object.assign({},S,((t={})[f]=h?u+"px":"",t[m]=c?l+"px":"",t.transform="",t))}var FM={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,C=e.options,i=C.gpuAcceleration,H=void 0===i||i,n=C.adaptive,V=void 0===n||n,r=C.roundOffsets,L=void 0===r||r;if("production"!==process.env.NODE_ENV){var o=SM(t.elements.popper).transitionProperty||"";V&&["transform","top","right","bottom","left"].some((function(e){return o.indexOf(e)>=0}))&&console.warn(["Popper: Detected CSS transitions on at least one of the following",'CSS properties: "transform", "top", "right", "bottom", "left".',"\n\n",'Disable the "computeStyles" modifier\'s `adaptive` option to allow',"for smooth transitions, or remove these properties from the CSS","transition declaration on the popper element if only transitioning","opacity or background-color for example.","\n\n","We recommend using the popper element as a wrapper around an inner","element that can have any CSS property transitioned for animations."].join(" "))}var a={placement:mM(t.placement),variation:DM(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:H,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,RM(Object.assign({},a,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:V,roundOffsets:L})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,RM(Object.assign({},a,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:L})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},IM={passive:!0};var zM={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,C=e.instance,i=e.options,H=i.scroll,n=void 0===H||H,V=i.resize,r=void 0===V||V,L=dM(t.elements.popper),o=[].concat(t.scrollParents.reference,t.scrollParents.popper);return n&&o.forEach((function(e){e.addEventListener("scroll",C.update,IM)})),r&&L.addEventListener("resize",C.update,IM),function(){n&&o.forEach((function(e){e.removeEventListener("scroll",C.update,IM)})),r&&L.removeEventListener("resize",C.update,IM)}},data:{}},jM={left:"right",right:"left",bottom:"top",top:"bottom"};function GM(e){return e.replace(/left|right|bottom|top/g,(function(e){return jM[e]}))}var WM={start:"end",end:"start"};function $M(e){return e.replace(/start|end/g,(function(e){return WM[e]}))}function UM(e){var t=dM(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function YM(e){return vM(wM(e)).left+UM(e).scrollLeft}function XM(e){var t=SM(e),C=t.overflow,i=t.overflowX,H=t.overflowY;return/auto|scroll|overlay|hidden/.test(C+H+i)}function qM(e){return["html","body","#document"].indexOf(lM(e))>=0?e.ownerDocument.body:AM(e)&&XM(e)?e:qM(xM(e))}function QM(e,t){var C;void 0===t&&(t=[]);var i=qM(e),H=i===(null==(C=e.ownerDocument)?void 0:C.body),n=dM(i),V=H?[n].concat(n.visualViewport||[],XM(i)?i:[]):i,r=t.concat(V);return H?r:r.concat(QM(xM(V)))}function KM(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function JM(e,t){return"viewport"===t?KM(function(e){var t=dM(e),C=wM(e),i=t.visualViewport,H=C.clientWidth,n=C.clientHeight,V=0,r=0;return i&&(H=i.width,n=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(V=i.offsetLeft,r=i.offsetTop)),{width:H,height:n,x:V+YM(e),y:r}}(e)):uM(t)?function(e){var t=vM(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):KM(function(e){var t,C=wM(e),i=UM(e),H=null==(t=e.ownerDocument)?void 0:t.body,n=fM(C.scrollWidth,C.clientWidth,H?H.scrollWidth:0,H?H.clientWidth:0),V=fM(C.scrollHeight,C.clientHeight,H?H.scrollHeight:0,H?H.clientHeight:0),r=-i.scrollLeft+YM(e),L=-i.scrollTop;return"rtl"===SM(H||C).direction&&(r+=fM(C.clientWidth,H?H.clientWidth:0)-n),{width:n,height:V,x:r,y:L}}(wM(e)))}function es(e,t,C){var i="clippingParents"===t?function(e){var t=QM(xM(e)),C=["absolute","fixed"].indexOf(SM(e).position)>=0&&AM(e)?kM(e):e;return uM(C)?t.filter((function(e){return uM(e)&&ZM(e,C)&&"body"!==lM(e)})):[]}(e):[].concat(t),H=[].concat(i,[C]),n=H[0],V=H.reduce((function(t,C){var i=JM(e,C);return t.top=fM(i.top,t.top),t.right=pM(i.right,t.right),t.bottom=pM(i.bottom,t.bottom),t.left=fM(i.left,t.left),t}),JM(e,n));return V.width=V.right-V.left,V.height=V.bottom-V.top,V.x=V.left,V.y=V.top,V}function ts(e){var t,C=e.reference,i=e.element,H=e.placement,n=H?mM(H):null,V=H?DM(H):null,r=C.x+C.width/2-i.width/2,L=C.y+C.height/2-i.height/2;switch(n){case HM:t={x:r,y:C.y-i.height};break;case nM:t={x:r,y:C.y+C.height};break;case VM:t={x:C.x+C.width,y:L};break;case rM:t={x:C.x-i.width,y:L};break;default:t={x:C.x,y:C.y}}var o=n?EM(n):null;if(null!=o){var a="y"===o?"height":"width";switch(V){case"start":t[o]=t[o]-(C[a]/2-i[a]/2);break;case oM:t[o]=t[o]+(C[a]/2-i[a]/2)}}return t}function Cs(e,t){void 0===t&&(t={});var C=t,i=C.placement,H=void 0===i?e.placement:i,n=C.boundary,V=void 0===n?"clippingParents":n,r=C.rootBoundary,L=void 0===r?"viewport":r,o=C.elementContext,a=void 0===o?"popper":o,M=C.altBoundary,s=void 0!==M&&M,l=C.padding,d=void 0===l?0:l,u=TM("number"!=typeof d?d:_M(d,LM)),A="popper"===a?"reference":"popper",c=e.rects.popper,h=e.elements[s?A:a],m=es(uM(h)?h:h.contextElement||wM(e.elements.popper),V,L),f=vM(e.elements.reference),p=ts({reference:f,element:c,strategy:"absolute",placement:H}),g=KM(Object.assign({},c,p)),v="popper"===a?g:f,y={top:m.top-v.top+u.top,bottom:v.bottom-m.bottom+u.bottom,left:m.left-v.left+u.left,right:v.right-m.right+u.right},Z=e.modifiersData.offset;if("popper"===a&&Z){var S=Z[H];Object.keys(y).forEach((function(e){var t=[VM,nM].indexOf(e)>=0?1:-1,C=[HM,nM].indexOf(e)>=0?"y":"x";y[e]+=S[C]*t}))}return y}function is(e,t){void 0===t&&(t={});var C=t,i=C.placement,H=C.boundary,n=C.rootBoundary,V=C.padding,r=C.flipVariations,L=C.allowedAutoPlacements,o=void 0===L?MM:L,a=DM(i),M=a?r?aM:aM.filter((function(e){return DM(e)===a})):LM,s=M.filter((function(e){return o.indexOf(e)>=0}));0===s.length&&(s=M,"production"!==process.env.NODE_ENV&&console.error(["Popper: The `allowedAutoPlacements` option did not allow any","placements. Ensure the `placement` option matches the variation","of the allowed placements.",'For example, "auto" cannot be used to allow "bottom-start".','Use "auto-start" instead.'].join(" ")));var l=s.reduce((function(t,C){return t[C]=Cs(e,{placement:C,boundary:H,rootBoundary:n,padding:V})[mM(C)],t}),{});return Object.keys(l).sort((function(e,t){return l[e]-l[t]}))}var Hs={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,C=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var H=C.mainAxis,n=void 0===H||H,V=C.altAxis,r=void 0===V||V,L=C.fallbackPlacements,o=C.padding,a=C.boundary,M=C.rootBoundary,s=C.altBoundary,l=C.flipVariations,d=void 0===l||l,u=C.allowedAutoPlacements,A=t.options.placement,c=mM(A),h=L||(c===A||!d?[GM(A)]:function(e){if("auto"===mM(e))return[];var t=GM(e);return[$M(e),t,$M(t)]}(A)),m=[A].concat(h).reduce((function(e,C){return e.concat("auto"===mM(C)?is(t,{placement:C,boundary:a,rootBoundary:M,padding:o,flipVariations:d,allowedAutoPlacements:u}):C)}),[]),f=t.rects.reference,p=t.rects.popper,g=new Map,v=!0,y=m[0],Z=0;Z=0,O=x?"width":"height",k=Cs(t,{placement:S,boundary:a,rootBoundary:M,altBoundary:s,padding:o}),E=x?w?VM:rM:w?nM:HM;f[O]>p[O]&&(E=GM(E));var P=GM(E),T=[];if(n&&T.push(k[b]<=0),r&&T.push(k[E]<=0,k[P]<=0),T.every((function(e){return e}))){y=S,v=!1;break}g.set(S,T)}if(v)for(var _=function(e){var t=m.find((function(t){var C=g.get(t);if(C)return C.slice(0,e).every((function(e){return e}))}));if(t)return y=t,"break"},B=d?3:1;B>0;B--){if("break"===_(B))break}t.placement!==y&&(t.modifiersData[i]._skip=!0,t.placement=y,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ns(e,t,C){return void 0===C&&(C={x:0,y:0}),{top:e.top-t.height-C.y,right:e.right-t.width+C.x,bottom:e.bottom-t.height+C.y,left:e.left-t.width-C.x}}function Vs(e){return[HM,VM,nM,rM].some((function(t){return e[t]>=0}))}var rs={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,C=e.name,i=t.rects.reference,H=t.rects.popper,n=t.modifiersData.preventOverflow,V=Cs(t,{elementContext:"reference"}),r=Cs(t,{altBoundary:!0}),L=ns(V,i),o=ns(r,H,n),a=Vs(L),M=Vs(o);t.modifiersData[C]={referenceClippingOffsets:L,popperEscapeOffsets:o,isReferenceHidden:a,hasPopperEscaped:M},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":a,"data-popper-escaped":M})}};var Ls={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,C=e.options,i=e.name,H=C.offset,n=void 0===H?[0,0]:H,V=MM.reduce((function(e,C){return e[C]=function(e,t,C){var i=mM(e),H=[rM,HM].indexOf(i)>=0?-1:1,n="function"==typeof C?C(Object.assign({},t,{placement:e})):C,V=n[0],r=n[1];return V=V||0,r=(r||0)*H,[rM,VM].indexOf(i)>=0?{x:r,y:V}:{x:V,y:r}}(C,t.rects,n),e}),{}),r=V[t.placement],L=r.x,o=r.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=L,t.modifiersData.popperOffsets.y+=o),t.modifiersData[i]=V}};var os={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,C=e.name;t.modifiersData[C]=ts({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};var as={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,C=e.options,i=e.name,H=C.mainAxis,n=void 0===H||H,V=C.altAxis,r=void 0!==V&&V,L=C.boundary,o=C.rootBoundary,a=C.altBoundary,M=C.padding,s=C.tether,l=void 0===s||s,d=C.tetherOffset,u=void 0===d?0:d,A=Cs(t,{boundary:L,rootBoundary:o,padding:M,altBoundary:a}),c=mM(t.placement),h=DM(t.placement),m=!h,f=EM(c),p="x"===f?"y":"x",g=t.modifiersData.popperOffsets,v=t.rects.reference,y=t.rects.popper,Z="function"==typeof u?u(Object.assign({},t.rects,{placement:t.placement})):u,S="number"==typeof Z?{mainAxis:Z,altAxis:Z}:Object.assign({mainAxis:0,altAxis:0},Z),b=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,w={x:0,y:0};if(g){if(n){var x,O="y"===f?HM:rM,k="y"===f?nM:VM,E="y"===f?"height":"width",P=g[f],T=P+A[O],_=P-A[k],B=l?-y[E]/2:0,D="start"===h?v[E]:y[E],N="start"===h?-y[E]:-v[E],R=t.elements.arrow,F=l&&R?yM(R):{width:0,height:0},I=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=I[O],j=I[k],G=PM(0,v[E],F[E]),W=m?v[E]/2-B-G-z-S.mainAxis:D-G-z-S.mainAxis,$=m?-v[E]/2+B+G+j+S.mainAxis:N+G+j+S.mainAxis,U=t.elements.arrow&&kM(t.elements.arrow),Y=U?"y"===f?U.clientTop||0:U.clientLeft||0:0,X=null!=(x=null==b?void 0:b[f])?x:0,q=P+$-X,Q=PM(l?pM(T,P+W-X-Y):T,P,l?fM(_,q):_);g[f]=Q,w[f]=Q-P}if(r){var K,J="x"===f?HM:rM,ee="x"===f?nM:VM,te=g[p],Ce="y"===p?"height":"width",ie=te+A[J],He=te-A[ee],ne=-1!==[HM,rM].indexOf(c),Ve=null!=(K=null==b?void 0:b[p])?K:0,re=ne?ie:te-v[Ce]-y[Ce]-Ve+S.altAxis,Le=ne?te+v[Ce]+y[Ce]-Ve-S.altAxis:He,oe=l&&ne?function(e,t,C){var i=PM(e,t,C);return i>C?C:i}(re,te,Le):PM(l?re:ie,te,l?Le:He);g[p]=oe,w[p]=oe-te}t.modifiersData[i]=w}},requiresIfExists:["offset"]};function Ms(e,t,C){void 0===C&&(C=!1);var i,H=AM(t),n=AM(t)&&function(e){var t=e.getBoundingClientRect(),C=gM(t.width)/e.offsetWidth||1,i=gM(t.height)/e.offsetHeight||1;return 1!==C||1!==i}(t),V=wM(t),r=vM(e,n),L={scrollLeft:0,scrollTop:0},o={x:0,y:0};return(H||!H&&!C)&&(("body"!==lM(t)||XM(V))&&(L=(i=t)!==dM(i)&&AM(i)?function(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}(i):UM(i)),AM(t)?((o=vM(t,!0)).x+=t.clientLeft,o.y+=t.clientTop):V&&(o.x=YM(V))),{x:r.left+L.scrollLeft-o.x,y:r.top+L.scrollTop-o.y,width:r.width,height:r.height}}function ss(e){var t=new Map,C=new Set,i=[];function H(e){C.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!C.has(e)){var i=t.get(e);i&&H(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){C.has(e.name)||H(e)})),i}function ls(e){var t;return function(){return t||(t=new Promise((function(C){Promise.resolve().then((function(){t=void 0,C(e())}))}))),t}}function ds(e){for(var t=arguments.length,C=new Array(t>1?t-1:0),i=1;i100){console.error("Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.");break}if(!0!==H.reset){var V=H.orderedModifiers[n],o=V.fn,a=V.options,M=void 0===a?{}:a,s=V.name;"function"==typeof o&&(H=o({state:H,options:M,name:s,instance:L})||H)}else H.reset=!1,n=-1}}else"production"!==process.env.NODE_ENV&&console.error(cs)}},update:ls((function(){return new Promise((function(e){L.forceUpdate(),e(H)}))})),destroy:function(){o(),r=!0}};if(!ms(e,t))return"production"!==process.env.NODE_ENV&&console.error(cs),L;function o(){V.forEach((function(e){return e()})),V=[]}return L.setOptions(C).then((function(e){!r&&C.onFirstUpdate&&C.onFirstUpdate(e)})),L}}var ps=fs(),gs=fs({defaultModifiers:[zM,os,FM,hM]}),vs=fs({defaultModifiers:[zM,os,FM,hM,Ls,Hs,as,BM,rs]}),ys=me(Object.freeze({__proto__:null,popperGenerator:fs,detectOverflow:Cs,createPopperBase:ps,createPopper:vs,createPopperLite:gs,top:HM,bottom:nM,right:VM,left:rM,auto:"auto",basePlacements:LM,start:"start",end:oM,clippingParents:"clippingParents",viewport:"viewport",popper:"popper",reference:"reference",variationPlacements:aM,placements:MM,beforeRead:"beforeRead",read:"read",afterRead:"afterRead",beforeMain:"beforeMain",main:"main",afterMain:"afterMain",beforeWrite:"beforeWrite",write:"write",afterWrite:"afterWrite",modifierPhases:sM,applyStyles:hM,arrow:BM,computeStyles:FM,eventListeners:zM,flip:Hs,hide:rs,offset:Ls,popperOffsets:os,preventOverflow:as})),Zs=fe((function(e,t){var C;C=function(e){return function(e){var t={};function C(i){if(t[i])return t[i].exports;var H=t[i]={i:i,l:!1,exports:{}};return e[i].call(H.exports,H,H.exports,C),H.l=!0,H.exports}return C.m=e,C.c=t,C.i=function(e){return e},C.d=function(e,t,i){C.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},C.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return C.d(t,"a",t),t},C.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},C.p="",C(C.s=7)}([function(e,t,C){e.exports=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments.length,C=Array(t>1?t-1:0),i=1;i1&&(console.warn("Popper.js Extension should only be used on one element."),console.warn("Ignoring all subsequent elements"))}e.exports={popper:function(e){return r(this),H(this[0],V(this[0],e))},popperRef:function(e){return r(this),n(this[0],V(this[0],e))}}},function(e,t,C){var i=C(0),H=C(2).getPopper,n=C(1).getRef;function V(e,t){return i({},{boundingBox:{top:0,left:0,right:0,bottom:0,w:3,h:3},renderedDimensions:function(){return{w:3,h:3}},renderedPosition:function(){return{x:0,y:0}},popper:{},cy:e},t)}e.exports={popper:function(e){return H(this,V(this,e))},popperRef:function(e){return n(this,V(this,e))}}},function(e,t,C){e.exports={getBoundingBox:function(e,t){var C=t.renderedPosition,i=t.cy,H=t.renderedDimensions,n=i.container().getBoundingClientRect(),V=H(e),r=C(e);return{top:r.y+n.top,left:r.x+n.left,right:r.x+V.w+n.left,bottom:r.y+V.h+n.top,width:V.w,height:V.h}}}},function(e,t,C){e.exports={getContent:function(e,t){var C=null;if("function"!=typeof t){if(t instanceof HTMLElement)return t;throw new Error("Can not create popper from 'target' with unknown type")}if(null===(C=t(e)))throw new Error("No 'target' specified to create popper");return C}}},function(e,t,C){var i=C(4),H=C(3),n=function(e){e&&(e("core","popper",i.popper),e("collection","popper",H.popper),e("core","popperRef",i.popperRef),e("collection","popperRef",H.popperRef))};"undefined"!=typeof cytoscape&&n(cytoscape),e.exports=n},function(t,C){t.exports=e}])},e.exports=C(ys)})),Ss=he(Zs),bs=function(e,t,C){this.source=e,this.target=t,this.type=C},ws=bs,xs=function(){function e(e,t,C,i){var H=this;if(this.linkAccessor=C,this.modules=new Array(e),this.roots=[],i)this.initModulesFromGroup(i);else{this.roots.push(new Ts);for(var n=0;n=this.R))return this.merge(t.a,t.b,e),!0}},e.prototype.nEdges=function(e,t){var C=e.incoming.intersection(t.incoming),i=e.outgoing.intersection(t.outgoing);return this.R-C.count()-i.count()},e.prototype.getGroupHierarchy=function(e){var t=this,C=[];return ks(this.roots[0],{},C),this.allEdges().forEach((function(i){var H=t.modules[i.source],n=t.modules[i.target];e.push(new bs(void 0===H.gid?i.source:C[H.gid],void 0===n.gid?i.target:C[n.gid],i.type))})),C},e.prototype.allEdges=function(){var t=[];return e.getEdges(this.roots[0],t),t},e.getEdges=function(t,C){t.forAll((function(t){t.getEdges(C),e.getEdges(t.children,C)}))},e}(),Os=xs;function ks(e,t,C){e.forAll((function(e){if(e.isLeaf())t.leaves||(t.leaves=[]),t.leaves.push(e.id);else{var i=t;if(e.gid=C.length,!e.isIsland()||e.isPredefined()){if(i={id:e.gid},e.isPredefined())for(var H in e.definition)i[H]=e.definition[H];t.groups||(t.groups=[]),t.groups.push(e.gid),C.push(i)}ks(e.children,i,C)}}))}var Es=function(){function e(e,t,C,i,H){void 0===t&&(t=new Bs),void 0===C&&(C=new Bs),void 0===i&&(i=new Ts),this.id=e,this.outgoing=t,this.incoming=C,this.children=i,this.definition=H}return e.prototype.getEdges=function(e){var t=this;this.outgoing.forAll((function(C,i){C.forAll((function(C){e.push(new bs(t.id,C.id,i))}))}))},e.prototype.isLeaf=function(){return 0===this.children.count()},e.prototype.isIsland=function(){return 0===this.outgoing.count()&&0===this.incoming.count()},e.prototype.isPredefined=function(){return void 0!==this.definition},e}(),Ps=Es;var Ts=function(){function e(){this.table={}}return e.prototype.count=function(){return Object.keys(this.table).length},e.prototype.intersection=function(t){var C=new e;return C.table=function(e,t){var C={};for(var i in e)i in t&&(C[i]=e[i]);return C}(this.table,t.table),C},e.prototype.intersectionCount=function(e){return this.intersection(e).count()},e.prototype.contains=function(e){return e in this.table},e.prototype.add=function(e){this.table[e.id]=e},e.prototype.remove=function(e){delete this.table[e.id]},e.prototype.forAll=function(e){for(var t in this.table)e(this.table[t])},e.prototype.modules=function(){var e=[];return this.forAll((function(t){t.isPredefined()||e.push(t)})),e},e}(),_s=Ts,Bs=function(){function e(){this.sets={},this.n=0}return e.prototype.count=function(){return this.n},e.prototype.contains=function(e){var t=!1;return this.forAllModules((function(C){t||C.id!=e||(t=!0)})),t},e.prototype.add=function(e,t){(e in this.sets?this.sets[e]:this.sets[e]=new Ts).add(t),++this.n},e.prototype.remove=function(e,t){var C=this.sets[e];C.remove(t),0===C.count()&&delete this.sets[e],--this.n},e.prototype.forAll=function(e){for(var t in this.sets)e(this.sets[t],Number(t))},e.prototype.forAllModules=function(e){this.forAll((function(t,C){return t.forAll(e)}))},e.prototype.intersection=function(t){var C=new e;return this.forAll((function(e,i){if(i in t.sets){var H=e.intersection(t.sets[i]),n=H.count();n>0&&(C.sets[i]=H,C.n+=n)}})),C},e}(),Ds=Bs;var Ns=function(e,t,C,i){for(var H=e.length,n=new xs(H,t,C,i);n.greedyMerge(););var V=[],r=n.getGroupHierarchy(V);return V.forEach((function(t){var C=function(C){var i=t[C];"number"==typeof i&&(t[C]=e[i])};C("source"),C("target")})),{groups:r,powerEdges:V}},Rs=Object.defineProperty({PowerEdge:ws,Configuration:Os,Module:Ps,ModuleSet:_s,LinkSets:Ds,getGroups:Ns},"__esModule",{value:!0});function Fs(e,t){var C={};for(var i in e)C[i]={};for(var i in t)C[i]={};return Object.keys(C).length}function Is(e,t){var C=0;for(var i in e)void 0!==t[i]&&++C;return C}function zs(e,t,C,i){var H=function(e,t){var C={},i=function(e,t){void 0===C[e]&&(C[e]={}),C[e][t]={}};return e.forEach((function(e){var C=t.getSourceIndex(e),H=t.getTargetIndex(e);i(C,H),i(H,C)})),C}(e,i);e.forEach((function(e){var n=H[i.getSourceIndex(e)],V=H[i.getTargetIndex(e)];i.setLength(e,1+t*C(n,V))}))}var js=function(e,t,C){void 0===C&&(C=1),zs(e,C,(function(e,t){return Math.sqrt(Fs(e,t)-Is(e,t))}),t)};var Gs=function(e,t,C){void 0===C&&(C=1),zs(e,C,(function(e,t){return Math.min(Object.keys(e).length,Object.keys(t).length)<1.1?0:Is(e,t)/Fs(e,t)}),t)};var Ws=function(e,t,C,i){var H=$s(e,t,i),n={};H.forEach((function(e,t){return e.forEach((function(e){return n[e]=t}))}));var V=[];return t.forEach((function(e){var t=i.getSourceIndex(e),H=i.getTargetIndex(e);n[t]!==n[H]&&V.push({axis:C,left:t,right:H,gap:i.getMinSeparation(e)})})),V};function $s(e,t,C){var i=[],H=0,n=[],V=[];function r(e){e.index=e.lowlink=H++,n.push(e),e.onStack=!0;for(var t=0,C=e.out;tn;){var V=t[n][H];V>0&&V1e-9)break;var l=this.offsetDir();for(i=0;i1&&d>u||!isFinite(u))for(i=0;i1&&(A=1);var c=u*u,h=2*A*(d-u)/(c*d),m=d*d*d,f=2*-A/(c*m);for(isFinite(h)||console.log(h),i=0;i0?Z-(w+1)*g:Z-(w-1)*g)&&s<=p&&(this.scaleSnapByMaxH?(this.g[i][L]+=r*v*s,this.H[i][L][L]+=r*v):(this.g[i][L]+=v*s,this.H[i][L][L]+=v))}this.locks.isEmpty()||this.locks.apply((function(C,H){for(i=0;i0;)for(var H=t;H-- >0;)C(i,H)},e.prototype.matrixApply=function(t){e.mApply(this.k,this.n,t)},e.prototype.computeNextPosition=function(e,t){var C=this;this.computeDerivatives(e);var i=this.computeStepSize(this.g);if(this.stepAndProject(e,t,this.g,i),this.project){this.matrixApply((function(i,H){return C.e[i][H]=e[i][H]-t[i][H]}));var H=this.computeStepSize(this.e);H=Math.max(.2,Math.min(H,1)),this.stepAndProject(e,t,this.e,H)}},e.prototype.run=function(e){for(var t=Number.MAX_VALUE,C=!1;!C&&e-- >0;){var i=this.rungeKutta();C=Math.abs(t/i-1)>16)/this.range},e.prototype.getNextBetween=function(e,t){return e+this.getNext()*(t-e)},e}(),el=Js,tl=Object.defineProperty({Locks:qs,Descent:Ks,PseudoRandom:el},"__esModule",{value:!0}),Cl=function(){function e(e){this.scale=e,this.AB=0,this.AD=0,this.A2=0}return e.prototype.addVariable=function(e){var t=this.scale/e.scale,C=e.offset/e.scale,i=e.weight;this.AB+=i*t*C,this.AD+=i*t*e.desiredPosition,this.A2+=i*t*t},e.prototype.getPosn=function(){return(this.AD-this.AB)/this.A2},e}(),il=Cl,Hl=function(){function e(e,t,C,i){void 0===i&&(i=!1),this.left=e,this.right=t,this.gap=C,this.equality=i,this.active=!1,this.unsatisfiable=!1,this.left=e,this.right=t,this.gap=C,this.equality=i}return e.prototype.slack=function(){return this.unsatisfiable?Number.MAX_VALUE:this.right.scale*this.right.position()-this.gap-this.left.scale*this.left.position()},e}(),nl=Hl,Vl=function(){function e(e,t,C){void 0===t&&(t=1),void 0===C&&(C=1),this.desiredPosition=e,this.weight=t,this.scale=C,this.offset=0}return e.prototype.dfdv=function(){return 2*this.weight*(this.position()-this.desiredPosition)},e.prototype.position=function(){return(this.block.ps.scale*this.block.posn+this.offset)/this.scale},e.prototype.visitNeighbours=function(e,t){var C=function(C,i){return C.active&&e!==i&&t(C,i)};this.cOut.forEach((function(e){return C(e,e.right)})),this.cIn.forEach((function(e){return C(e,e.left)}))},e}(),rl=Vl,Ll=function(){function e(e){this.vars=[],e.offset=0,this.ps=new Cl(e.scale),this.addVariable(e)}return e.prototype.addVariable=function(e){e.block=this,this.vars.push(e),this.ps.addVariable(e),this.posn=this.ps.getPosn()},e.prototype.updateWeightedPosition=function(){this.ps.AB=this.ps.AD=this.ps.A2=0;for(var e=0,t=this.vars.length;e=0?this.inactive.push(t):this.bs.merge(t)}}},e.prototype.solve=function(){this.satisfy();for(var e=Number.MAX_VALUE,t=this.bs.cost();Math.abs(e-t)>1e-4;)this.satisfy(),e=t,t=this.bs.cost();return t},e.LAGRANGIAN_TOLERANCE=-1e-4,e.ZERO_UPPERBOUND=-1e-10,e}(),ll=sl;var dl,ul=function(e,t,C){for(var i=e.map((function(e){return new Vl(e.desiredCenter)})),H=[],n=e.length,V=0;V0)}return null}}return e.prototype.clear=function(){this._root=null,this.size=0},e.prototype.find=function(e){for(var t=this._root;null!==t;){var C=this._comparator(e,t.data);if(0===C)return t.data;t=t.get_child(C>0)}return null},e.prototype.lowerBound=function(e){return this._bound(e,this._comparator)},e.prototype.upperBound=function(e){var t=this._comparator;return this._bound(e,(function(e,C){return t(C,e)}))},e.prototype.min=function(){var e=this._root;if(null===e)return null;for(;null!==e.left;)e=e.left;return e.data},e.prototype.max=function(){var e=this._root;if(null===e)return null;for(;null!==e.right;)e=e.right;return e.data},e.prototype.iterator=function(){return new fl(this)},e.prototype.each=function(e){for(var t,C=this.iterator();null!==(t=C.next());)e(t)},e.prototype.reach=function(e){for(var t,C=this.iterator();null!==(t=C.prev());)e(t)},e.prototype._bound=function(e,t){for(var C=this._root,i=this.iterator();null!==C;){var H=this._comparator(e,C.data);if(0===H)return i._cursor=C,i;i._ancestors.push(C),C=C.get_child(H>0)}for(var n=i._ancestors.length-1;n>=0;--n)if(t(e,(C=i._ancestors[n]).data)>0)return i._cursor=C,i._ancestors.length=n,i;return i._ancestors.length=0,i},e}(),ml=hl,fl=function(){function e(e){this._tree=e,this._ancestors=[],this._cursor=null}return e.prototype.data=function(){return null!==this._cursor?this._cursor.data:null},e.prototype.next=function(){if(null===this._cursor){var e=this._tree._root;null!==e&&this._minNode(e)}else{var t;if(null===this._cursor.right)do{if(t=this._cursor,!this._ancestors.length){this._cursor=null;break}this._cursor=this._ancestors.pop()}while(this._cursor.right===t);else this._ancestors.push(this._cursor),this._minNode(this._cursor.right)}return null!==this._cursor?this._cursor.data:null},e.prototype.prev=function(){if(null===this._cursor){var e=this._tree._root;null!==e&&this._maxNode(e)}else{var t;if(null===this._cursor.left)do{if(t=this._cursor,!this._ancestors.length){this._cursor=null;break}this._cursor=this._ancestors.pop()}while(this._cursor.left===t);else this._ancestors.push(this._cursor),this._maxNode(this._cursor.left)}return null!==this._cursor?this._cursor.data:null},e.prototype._minNode=function(e){for(;null!==e.left;)this._ancestors.push(e),e=e.left;this._cursor=e},e.prototype._maxNode=function(e){for(;null!==e.right;)this._ancestors.push(e),e=e.right;this._cursor=e},e}(),pl=fl,gl=function(){function e(e){this.data=e,this.left=null,this.right=null,this.red=!0}return e.prototype.get_child=function(e){return e?this.right:this.left},e.prototype.set_child=function(e,t){e?this.right=t:this.left=t},e}(),vl=function(e){function t(t){var C=e.call(this)||this;return C._root=null,C._comparator=t,C.size=0,C}return cl(t,e),t.prototype.insert=function(e){var C=!1;if(null===this._root)this._root=new gl(e),C=!0,this.size++;else{var i=new gl(void 0),H=!1,n=!1,V=null,r=i,L=null,o=this._root;for(r.right=this._root;;){if(null===o?(o=new gl(e),L.set_child(H,o),C=!0,this.size++):t.is_red(o.left)&&t.is_red(o.right)&&(o.red=!0,o.left.red=!1,o.right.red=!1),t.is_red(o)&&t.is_red(L)){var a=r.right===V;o===L.get_child(n)?r.set_child(a,t.single_rotate(V,!n)):r.set_child(a,t.double_rotate(V,!n))}var M=this._comparator(o.data,e);if(0===M)break;n=H,H=M<0,null!==V&&(r=V),V=L,L=o,o=o.get_child(H)}this._root=i.right}return this._root.red=!1,C},t.prototype.remove=function(e){if(null===this._root)return!1;var C=new gl(void 0),i=C;i.right=this._root;for(var H=null,n=null,V=null,r=!0;null!==i.get_child(r);){var L=r;n=H,H=i,i=i.get_child(r);var o=this._comparator(e,i.data);if(r=o>0,0===o&&(V=i),!t.is_red(i)&&!t.is_red(i.get_child(r)))if(t.is_red(i.get_child(!r))){var a=t.single_rotate(i,r);H.set_child(L,a),H=a}else if(!t.is_red(i.get_child(!r))){var M=H.get_child(!L);if(null!==M)if(t.is_red(M.get_child(!L))||t.is_red(M.get_child(L))){var s=n.right===H;t.is_red(M.get_child(L))?n.set_child(s,t.double_rotate(H,L)):t.is_red(M.get_child(!L))&&n.set_child(s,t.single_rotate(H,L));var l=n.get_child(s);l.red=!0,i.red=!0,l.left.red=!1,l.right.red=!1}else H.red=!1,M.red=!0,i.red=!0}}return null!==V&&(V.data=i.data,H.set_child(H.right===i,i.get_child(null===i.left)),this.size--),this._root=C.right,null!==this._root&&(this._root.red=!1),null!==V},t.is_red=function(e){return null!==e&&e.red},t.single_rotate=function(e,t){var C=e.get_child(!t);return e.set_child(!t,C.get_child(t)),C.set_child(t,e),e.red=!0,C.red=!1,C},t.double_rotate=function(e,C){return e.set_child(!C,t.single_rotate(e.get_child(!C),!C)),t.single_rotate(e,C)},t}(hl),yl=vl,Zl=Object.defineProperty({TreeBase:ml,Iterator:pl,RBTree:yl},"__esModule",{value:!0}),Sl=ce&&ce.__extends||function(){var e=function(t,C){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var C in t)t.hasOwnProperty(C)&&(e[C]=t[C])},e(t,C)};return function(t,C){function i(){this.constructor=t}e(t,C),t.prototype=null===C?Object.create(C):(i.prototype=C.prototype,new i)}}();function bl(e){return e.bounds=void 0!==e.leaves?e.leaves.reduce((function(e,t){return t.bounds.union(e)}),xl.empty()):xl.empty(),void 0!==e.groups&&(e.bounds=e.groups.reduce((function(e,t){return bl(t).union(e)}),e.bounds)),e.bounds=e.bounds.inflate(e.padding),e.bounds}var wl=bl,xl=function(){function e(e,t,C,i){this.x=e,this.X=t,this.y=C,this.Y=i}return e.empty=function(){return new e(Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY)},e.prototype.cx=function(){return(this.x+this.X)/2},e.prototype.cy=function(){return(this.y+this.Y)/2},e.prototype.overlapX=function(e){var t=this.cx(),C=e.cx();return t<=C&&e.x0?C[0]:null},e.prototype.vertices=function(){return[{x:this.x,y:this.y},{x:this.X,y:this.y},{x:this.X,y:this.Y},{x:this.x,y:this.Y}]},e.lineIntersection=function(e,t,C,i,H,n,V,r){var L=C-e,o=V-H,a=i-t,M=r-n,s=M*L-o*a;if(0==s)return null;var l=e-H,d=t-n,u=(o*d-M*l)/s,A=(L*d-a*l)/s;return u>=0&&u<=1&&A>=0&&A<=1?{x:e+u*L,y:t+u*a}:null},e.prototype.inflate=function(t){return new e(this.x-t,this.X+t,this.y-t,this.Y+t)},e}(),Ol=xl;var kl=function(e,t,C){var i=e.rayIntersection(t.cx(),t.cy())||{x:e.cx(),y:e.cy()},H=t.rayIntersection(e.cx(),e.cy())||{x:t.cx(),y:t.cy()},n=H.x-i.x,V=H.y-i.y,r=Math.sqrt(n*n+V*V),L=r-C;return{sourceIntersection:i,targetIntersection:H,arrowStart:{x:i.x+L*n/r,y:i.y+L*V/r}}};var El=function(e,t,C){var i=t.rayIntersection(e.x,e.y);i||(i={x:t.cx(),y:t.cy()});var H=i.x-e.x,n=i.y-e.y,V=Math.sqrt(H*H+n*n);return{x:i.x-C*H/V,y:i.y-C*n/V}},Pl=function(e,t,C){this.v=e,this.r=t,this.pos=C,this.prev=Bl(),this.next=Bl()},Tl=function(e,t,C){this.isOpen=e,this.v=t,this.pos=C};function _l(e,t){return e.pos>t.pos?1:e.pos0&&(e[C].insert(H),H[i].insert(e))};C("next","prev"),C("prev","next")}};function Rl(e,t,C,i){void 0===i&&(i=!1);var H=e.padding,n=void 0!==e.groups?e.groups.length:0,V=void 0!==e.leaves?e.leaves.length:0,r=n?e.groups.reduce((function(e,i){return e.concat(Rl(i,t,C,!0))}),[]):[],L=(i?2:0)+V+n,o=new Array(L),a=new Array(L),M=0,s=function(e,t){a[M]=e,o[M++]=t};if(i){var l=e.bounds,d=t.getCentre(l),u=t.getSize(l)/2,A=t.getOpen(l),c=t.getClose(l),h=d-u+H/2,m=d+u-H/2;e.minVar.desiredPosition=h,s(t.makeRect(A,c,h,H),e.minVar),e.maxVar.desiredPosition=m,s(t.makeRect(A,c,m,H),e.maxVar)}V&&e.leaves.forEach((function(e){return s(e.bounds,e.variable)})),n&&e.groups.forEach((function(e){var C=e.bounds;s(t.makeRect(t.getOpen(C),t.getClose(C),t.getCentre(C),t.getSize(C)),e.minVar)}));var f=Fl(a,o,t,C);return n&&(o.forEach((function(e){e.cOut=[],e.cIn=[]})),f.forEach((function(e){e.left.cOut.push(e),e.right.cIn.push(e)})),e.groups.forEach((function(e){var C=(e.padding-t.getSize(e.bounds))/2;e.minVar.cIn.forEach((function(e){return e.gap+=C})),e.minVar.cOut.forEach((function(t){t.left=e.maxVar,t.gap+=C}))}))),r.concat(f)}function Fl(e,t,C,i){var H,n=e.length,V=2*n;console.assert(t.length>=n);var r=new Array(V);for(H=0;He[C]&&(e[C]=t)}n=e}))}},e.prototype.createAlignment=function(e){var t=this,C=this.nodes[e.offsets[0].node].variable;this.makeFeasible(e);var i="x"===e.axis?this.xConstraints:this.yConstraints;e.offsets.slice(1).forEach((function(e){var H=t.nodes[e.node].variable;i.push(new Al.Constraint(C,H,e.offset,!0))}))},e.prototype.createConstraints=function(e){var t=this,C=function(e){return void 0===e.type||"separation"===e.type};this.xConstraints=e.filter((function(e){return"x"===e.axis&&C(e)})).map((function(e){return t.createSeparation(e)})),this.yConstraints=e.filter((function(e){return"y"===e.axis&&C(e)})).map((function(e){return t.createSeparation(e)})),e.filter((function(e){return"alignment"===e.type})).forEach((function(e){return t.createAlignment(e)}))},e.prototype.setupVariablesAndBounds=function(e,t,C,i){this.nodes.forEach((function(H,n){H.fixed?(H.variable.weight=H.fixedWeight?H.fixedWeight:1e3,C[n]=i(H)):H.variable.weight=1;var V=(H.width||0)/2,r=(H.height||0)/2,L=e[n],o=t[n];H.bounds=new xl(L-V,L+V,o-r,o+r)}))},e.prototype.xProject=function(e,t,C){(this.rootGroup||this.avoidOverlaps||this.xConstraints)&&this.project(e,t,e,C,(function(e){return e.px}),this.xConstraints,Wl,(function(e){return e.bounds.setXCentre(C[e.variable.index]=e.variable.position())}),(function(e){var t=C[e.minVar.index]=e.minVar.position(),i=C[e.maxVar.index]=e.maxVar.position(),H=e.padding/2;e.bounds.x=t-H,e.bounds.X=i+H}))},e.prototype.yProject=function(e,t,C){(this.rootGroup||this.yConstraints)&&this.project(e,t,t,C,(function(e){return e.py}),this.yConstraints,Ul,(function(e){return e.bounds.setYCentre(C[e.variable.index]=e.variable.position())}),(function(e){var t=C[e.minVar.index]=e.minVar.position(),i=C[e.maxVar.index]=e.maxVar.position(),H=e.padding/2;e.bounds.y=t-H,e.bounds.Y=i+H}))},e.prototype.projectFunctions=function(){var e=this;return[function(t,C,i){return e.xProject(t,C,i)},function(t,C,i){return e.yProject(t,C,i)}]},e.prototype.project=function(e,t,C,i,H,n,V,r,L){this.setupVariablesAndBounds(e,t,i,H),this.rootGroup&&this.avoidOverlaps&&(bl(this.rootGroup),n=n.concat(V(this.rootGroup))),this.solve(this.variables,n,C,i),this.nodes.forEach(r),this.rootGroup&&this.avoidOverlaps&&(this.groups.forEach(L),bl(this.rootGroup))},e.prototype.solve=function(e,t,C,i){var H=new Al.Solver(e,t);H.setStartingPositions(C),H.setDesiredPositions(i),H.solve()},e}(),Jl=Kl,ed=Object.defineProperty({computeGroupBounds:wl,Rectangle:Ol,makeEdgeBetween:kl,makeEdgeTo:El,generateXConstraints:zl,generateYConstraints:Gl,generateXGroupConstraints:$l,generateYGroupConstraints:Yl,removeOverlaps:Xl,IndexedVariable:Ql,Projection:Jl},"__esModule",{value:!0}),td=function(){function e(e){this.elem=e,this.subheaps=[]}return e.prototype.toString=function(e){for(var t="",C=!1,i=0;ia&&(L.d=a,L.prev=V,C.reduceKey(L.q,L,(function(e,t){return e.q=t})))}}return H},e}(),ad=od,Md=Object.defineProperty({Calculator:ad},"__esModule",{value:!0}),sd=ce&&ce.__extends||function(){var e=function(t,C){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var C in t)t.hasOwnProperty(C)&&(e[C]=t[C])},e(t,C)};return function(t,C){function i(){this.constructor=t}e(t,C),t.prototype=null===C?Object.create(C):(i.prototype=C.prototype,new i)}}(),ld=function(){},dd=ld,ud=function(e,t,C,i){this.x1=e,this.y1=t,this.x2=C,this.y2=i},Ad=ud,cd=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return sd(t,e),t}(ld);function hd(e,t,C){return(t.x-e.x)*(C.y-e.y)-(C.x-e.x)*(t.y-e.y)}var md=hd;function fd(e,t,C){return hd(e,t,C)>0}function pd(e,t,C){return hd(e,t,C)<0}var gd=function(e){var t,C=e.slice(0).sort((function(e,t){return e.x!==t.x?t.x-e.x:t.y-e.y})),i=e.length,H=C[0].x;for(t=1;t=0&&C[t].x===o;t--);for(r=t+1,t=n;++t<=r;)if(!(hd(C[0],C[r],C[t])>=0&&t1&&!(hd(V[V.length-2],V[V.length-1],C[t])>0);)V.length-=1;0!=t&&V.push(C[t])}L!=r&&V.push(C[L]);var a=V.length;for(t=r;--t>=n;)if(!(hd(C[L],C[n],C[t])>=0&&t>n)){for(;V.length>a&&!(hd(V[V.length-2],V[V.length-1],C[t])>0);)V.length-=1;0!=t&&V.push(C[t])}}return V};var vd=function(e,t,C){t.slice(0).sort((function(t,C){return Math.atan2(t.y-e.y,t.x-e.x)-Math.atan2(C.y-e.y,C.x-e.x)})).forEach(C)};function yd(e,t){var C,i,H,n,V=t.length-1;if(pd(e,t[1],t[0])&&!fd(e,t[V-1],t[0]))return 0;for(C=0,i=V;;){if(i-C==1)return fd(e,t[C],t[i])?C:i;if((n=pd(e,t[(H=Math.floor((C+i)/2))+1],t[H]))&&!fd(e,t[H-1],t[H]))return H;fd(e,t[C+1],t[C])?n||fd(e,t[C],t[H])?i=H:C=H:n&&pd(e,t[C],t[H])?i=H:C=H}}function Zd(e,t){var C,i,H,n,V=t.length-1;if(fd(e,t[V-1],t[0])&&!pd(e,t[1],t[0]))return 0;for(C=0,i=V;;){if(i-C==1)return pd(e,t[C],t[i])?C:i;if(n=pd(e,t[(H=Math.floor((C+i)/2))+1],t[H]),fd(e,t[H-1],t[H])&&!n)return H;pd(e,t[C+1],t[C])?n?pd(e,t[C],t[H])?i=H:C=H:i=H:n?C=H:fd(e,t[C],t[H])?i=H:C=H}}function Sd(e,t,C,i,H,n){var V,r;r=i(e[V=C(t[0],e)],t);for(var L=!1;!L;){for(L=!0;V===e.length-1&&(V=0),!H(t[r],e[V],e[V+1]);)++V;for(;0===r&&(r=t.length-1),!n(e[V],t[r],t[r-1]);)--r,L=!1}return{t1:V,t2:r}}var bd=Sd;var wd=function(e,t){var C=xd(t,e);return{t1:C.t2,t2:C.t1}};function xd(e,t){return Sd(e,t,yd,Zd,fd,pd)}var Od=xd;var kd=function(e,t){return Sd(e,t,Zd,Zd,pd,pd)};var Ed=function(e,t){return Sd(e,t,yd,yd,fd,fd)},Pd=function(e,t){this.t1=e,this.t2=t},Td=Pd,_d=function(){},Bd=_d,Dd=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return sd(t,e),t}(ld),Nd=function(e,t,C,i){this.id=e,this.polyid=t,this.polyvertid=C,this.p=i,i.vv=this},Rd=Nd,Fd=function(){function e(e,t){this.source=e,this.target=t}return e.prototype.length=function(){var e=this.source.p.x-this.target.p.x,t=this.source.p.y-this.target.p.y;return Math.sqrt(e*e+t*t)},e}(),Id=Fd,zd=function(){function e(e,t){if(this.P=e,this.V=[],this.E=[],t)this.V=t.V.slice(0),this.E=t.E.slice(0);else{for(var C=e.length,i=0;i0&&this.E.push(new Fd(H[n-1].vv,r))}H.length>1&&this.E.push(new Fd(H[0].vv,H[H.length-1].vv))}for(i=0;i0)return!0;return!1},e}(),jd=zd;function Gd(e,t){for(var C=[],i=1,H=t.length;i=0&&d>=0&&u<0&&A>=0&&c>=0&&h<0?H.ll=new Pd(n,V):l<=0&&d<=0&&u>0&&A<=0&&c<=0&&h>0?H.rr=new Pd(n,V):l<=0&&d>0&&u<=0&&A>=0&&c<0&&h>=0?H.rl=new Pd(n,V):l>=0&&d<0&&u>=0&&A<=0&&c>0&&h<=0&&(H.lr=new Pd(n,V))}return H}var $d=Wd;function Ud(e,t){return!e.every((function(e){return!function(e,t){for(var C=1,i=t.length;C0)return!0}return!1},Xd=Object.defineProperty({Point:dd,LineSegment:Ad,PolyPoint:cd,isLeft:md,ConvexHull:gd,clockwiseRadialSweep:vd,tangent_PolyPolyC:bd,LRtangent_PolyPolyC:wd,RLtangent_PolyPolyC:Od,LLtangent_PolyPolyC:kd,RRtangent_PolyPolyC:Ed,BiTangent:Td,BiTangents:Bd,TVGPoint:Dd,VisibilityVertex:Rd,VisibilityEdge:Id,TangentVisibilityGraph:jd,tangents:$d,polysOverlap:Yd},"__esModule",{value:!0}),qd=10,Qd=(1+Math.sqrt(5))/2,Kd=1e-4;var Jd=function(e,t,C,i,H,n){void 0===H&&(H=1),void 0===n&&(n=!0);var V=t,r=C,L=(H=void 0!==H?H:1,i=void 0!==i?i:0,0),o=0,a=0,M=0,s=[];function l(e,t){s=[],L=0,o=0,M=0;for(var C=0;C=e.height&&s[i].x+s[i].width+e.width+qd-t<=Kd){C=s[i];break}s.push(e),void 0!==C?(e.x=C.x+C.width+qd,e.y=C.bottom,e.space_left=e.height,e.bottom=e.y,C.space_left-=e.height+qd,C.bottom+=e.height+qd):(e.y=M,M+=e.height+qd,e.x=0,e.bottom=e.y,e.space_left=e.height),e.y+e.height-o>-Kd&&(o=e.y+e.height-0),e.x+e.width-L>-Kd&&(L=e.x+e.width-0)}0!=e.length&&(function(e){e.forEach((function(e){!function(e){var t=Number.MAX_VALUE,C=Number.MAX_VALUE,H=0,n=0;e.array.forEach((function(e){var V=void 0!==e.width?e.width:i,r=void 0!==e.height?e.height:i;V/=2,r/=2,H=Math.max(e.x+V,H),t=Math.min(e.x-V,t),n=Math.max(e.y+r,n),C=Math.min(e.y-r,C)})),e.width=H-t,e.height=n-C}(e)}))}(e),function(e,t){var C=Number.POSITIVE_INFINITY,i=0;e.sort((function(e,t){return t.height-e.height})),a=e.reduce((function(e,t){return e.widtha||s>Kd;){if(1!=o){var d=n-(n-H)/Qd;r=l(e,d)}if(0!=o){var u=H+(n-H)/Qd;L=l(e,u)}if(M=Math.abs(d-u),s=Math.abs(r-L),rL?(H=d,d=u,r=L,o=1):(n=u,u=d,L=r,o=0),V++>100)break}l(e,i)}(e),n&&function(e){e.forEach((function(e){var t={x:0,y:0};e.array.forEach((function(e){t.x+=e.x,t.y+=e.y})),t.x/=e.array.length,t.y/=e.array.length;var C={x:t.x-e.width/2,y:t.y-e.height/2},i={x:e.x-C.x+V/2-L/2,y:e.y-C.y+r/2-o/2};e.array.forEach((function(e){e.x+=i.x,e.y+=i.y}))}))}(e))};var eu=function(e,t){for(var C={},i={},H=[],n=0,V=0;V0){var t=0;this._links.forEach((function(e){t=Math.max(t,e.source,e.target)})),this._nodes=new Array(++t);for(var C=0;C0?e:0:e>0&&(this._running||(this._running=!0,this.trigger({type:C.start,alpha:this._alpha=e}),this.kick())),this):this._alpha},e.prototype.getLinkLength=function(e){return"function"==typeof this._linkDistance?+this._linkDistance(e):this._linkDistance},e.setLinkLength=function(e,t){e.length=t},e.prototype.getLinkType=function(e){return"function"==typeof this._linkType?this._linkType(e):0},e.prototype.symmetricDiffLinkLengths=function(e,t){var C=this;return void 0===t&&(t=1),this.linkDistance((function(t){return e*t.length})),this._linkLengthCalculator=function(){return Ys.symmetricDiffLinkLengths(C._links,C.linkAccessor,t)},this},e.prototype.jaccardLinkLengths=function(e,t){var C=this;return void 0===t&&(t=1),this.linkDistance((function(t){return e*t.length})),this._linkLengthCalculator=function(){return Ys.jaccardLinkLengths(C._links,C.linkAccessor,t)},this},e.prototype.start=function(t,C,i,H,n,V){var r=this;void 0===t&&(t=0),void 0===C&&(C=0),void 0===i&&(i=0),void 0===H&&(H=0),void 0===n&&(n=!0),void 0===V&&(V=!0);var L=this.nodes().length,o=L+2*this._groups.length;this._links.length;var a,M=this._canvasSize[0],s=this._canvasSize[1],l=new Array(o),d=new Array(o),u=null,A=this._avoidOverlaps;this._nodes.forEach((function(e,t){e.index=t,void 0===e.x&&(e.x=M/2,e.y=s/2),l[t]=e.x,d[t]=e.y})),this._linkLengthCalculator&&this._linkLengthCalculator(),this._distanceMatrix?a=this._distanceMatrix:(a=new Md.Calculator(o,this._links,e.getSourceIndex,e.getTargetIndex,(function(e){return r.getLinkLength(e)})).DistanceMatrix(),u=tl.Descent.createSquareMatrix(o,(function(){return 2})),this._links.forEach((function(e){"number"==typeof e.source&&(e.source=r._nodes[e.source]),"number"==typeof e.target&&(e.target=r._nodes[e.target])})),this._links.forEach((function(t){var C=e.getSourceIndex(t),i=e.getTargetIndex(t);u[C][i]=u[i][C]=t.weight||1})));var c=tl.Descent.createSquareMatrix(o,(function(e,t){return a[e][t]}));if(this._rootGroup&&void 0!==this._rootGroup.groups){var h=L;this._groups.forEach((function(e){!function(e,t,C,i){u[e][t]=u[t][e]=C,c[e][t]=c[t][e]=i}(h,h+1,r._groupCompactness,.1),l[h]=0,d[h++]=0,l[h]=0,d[h++]=0}))}else this._rootGroup={leaves:this._nodes,groups:[]};var m=this._constraints||[];this._directedLinkConstraints&&(this.linkAccessor.getMinSeparation=this._directedLinkConstraints.getMinSeparation,m=m.concat(Ys.generateDirectedEdgeConstraints(L,this._links,this._directedLinkConstraints.axis,this.linkAccessor))),this.avoidOverlaps(!1),this._descent=new tl.Descent([l,d],c),this._descent.locks.clear();for(h=0;h0&&(this._descent.project=new ed.Projection(this._nodes,this._groups,this._rootGroup,m).projectFunctions()),this._descent.run(C),this.separateOverlappingComponents(M,s,V),this.avoidOverlaps(A),A&&(this._nodes.forEach((function(e,t){e.x=l[t],e.y=d[t]})),this._descent.project=new ed.Projection(this._nodes,this._groups,this._rootGroup,m,!0).projectFunctions(),this._nodes.forEach((function(e,t){l[t]=e.x,d[t]=e.y}))),this._descent.G=u,this._descent.run(i),H){this._descent.snapStrength=1e3,this._descent.snapGridSize=this._nodes[0].width,this._descent.numGridSnapNodes=L,this._descent.scaleSnapByMaxH=L!=o;var g=tl.Descent.createSquareMatrix(o,(function(e,t){return e>=L||t>=L?u[e][t]:0}));this._descent.G=g,this._descent.run(H)}return this.updateNodePositions(),this.separateOverlappingComponents(M,s,V),n?this.resume():this},e.prototype.initialLayout=function(t,C,i){if(this._groups.length>0&&t>0){var H=this._nodes.length,n=this._links.map((function(e){return{source:e.source.index,target:e.target.index}})),V=this._nodes.map((function(e){return{index:e.index}}));this._groups.forEach((function(e,t){V.push({index:e.index=H+t})})),this._groups.forEach((function(e,t){void 0!==e.leaves&&e.leaves.forEach((function(t){return n.push({source:e.index,target:t.index})})),void 0!==e.groups&&e.groups.forEach((function(t){return n.push({source:e.index,target:t.index})}))})),(new e).size(this.size()).nodes(V).links(n).avoidOverlaps(!1).linkDistance(this.linkDistance()).symmetricDiffLinkLengths(5).convergenceThreshold(1e-4).start(t,0,0,0,!1),this._nodes.forEach((function(e){C[e.index]=V[e.index].x,i[e.index]=V[e.index].y}))}else this._descent.run(t)},e.prototype.separateOverlappingComponents=function(e,t,C){var i=this;if(void 0===C&&(C=!0),!this._distanceMatrix&&this._handleDisconnected){var H=this._descent.x[0],n=this._descent.x[1];this._nodes.forEach((function(e,t){e.x=H[t],e.y=n[t]}));var V=tu.separateGraphs(this._nodes,this._links);tu.applyPacking(V,e,t,this._defaultNodeSize,1,C),this._nodes.forEach((function(e,t){i._descent.x[0][t]=e.x,i._descent.x[1][t]=e.y,e.bounds&&(e.bounds.setXCentre(e.x),e.bounds.setYCentre(e.y))}))}},e.prototype.resume=function(){return this.alpha(.1)},e.prototype.stop=function(){return this.alpha(0)},e.prototype.prepareEdgeRouting=function(e){void 0===e&&(e=0),this._visibilityGraph=new Xd.TangentVisibilityGraph(this._nodes.map((function(t){return t.bounds.inflate(-e).vertices()})))},e.prototype.routeEdge=function(e,t,C){void 0===t&&(t=5);var i=[],H=new Xd.TangentVisibilityGraph(this._visibilityGraph.P,{V:this._visibilityGraph.V,E:this._visibilityGraph.E}),n={x:e.source.x,y:e.source.y},V={x:e.target.x,y:e.target.y},r=H.addPoint(n,e.source.index),L=H.addPoint(V,e.target.index);H.addEdgeIfVisible(n,V,e.source.index,e.target.index),void 0!==C&&C(H);var o=new Md.Calculator(H.V.length,H.E,(function(e){return e.source.id}),(function(e){return e.target.id}),(function(e){return e.length()})).PathFromNodeToNode(r.id,L.id);if(1===o.length||o.length===H.V.length){var a=ed.makeEdgeBetween(e.source.innerBounds,e.target.innerBounds,t);i=[a.sourceIntersection,a.arrowStart]}else{for(var M=o.length-2,s=H.V[o[M]].p,l=H.V[o[0]].p,d=(i=[e.source.innerBounds.rayIntersection(s.x,s.y)],M);d>=0;--d)i.push(H.V[o[d]].p);i.push(ed.makeEdgeTo(l,e.target.innerBounds,t))}return i},e.getSourceIndex=function(e){return"number"==typeof e.source?e.source:e.source.index},e.getTargetIndex=function(e){return"number"==typeof e.target?e.target:e.target.index},e.linkId=function(t){return e.getSourceIndex(t)+"-"+e.getTargetIndex(t)},e.dragStart=function(t){i(t)?e.storeOffset(t,e.dragOrigin(t)):(e.stopNode(t),t.fixed|=2)},e.stopNode=function(e){e.px=e.x,e.py=e.y},e.storeOffset=function(t,C){void 0!==t.leaves&&t.leaves.forEach((function(t){t.fixed|=2,e.stopNode(t),t._dragGroupOffsetX=t.x-C.x,t._dragGroupOffsetY=t.y-C.y})),void 0!==t.groups&&t.groups.forEach((function(t){return e.storeOffset(t,C)}))},e.dragOrigin=function(e){return i(e)?{x:e.bounds.cx(),y:e.bounds.cy()}:e},e.drag=function(t,C){i(t)?(void 0!==t.leaves&&t.leaves.forEach((function(e){t.bounds.setXCentre(C.x),t.bounds.setYCentre(C.y),e.px=e._dragGroupOffsetX+C.x,e.py=e._dragGroupOffsetY+C.y})),void 0!==t.groups&&t.groups.forEach((function(t){return e.drag(t,C)}))):(t.px=C.x,t.py=C.y)},e.dragEnd=function(t){i(t)?(void 0!==t.leaves&&t.leaves.forEach((function(t){e.dragEnd(t),delete t._dragGroupOffsetX,delete t._dragGroupOffsetY})),void 0!==t.groups&&t.groups.forEach(e.dragEnd)):t.fixed&=-7},e.mouseOver=function(e){e.fixed|=4,e.px=e.x,e.py=e.y},e.mouseOut=function(e){e.fixed&=-5},e}();t.Layout=H})),iu=ce&&ce.__extends||function(){var e=function(t,C){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var C in t)t.hasOwnProperty(C)&&(e[C]=t[C])},e(t,C)};return function(t,C){function i(){this.constructor=t}e(t,C),t.prototype=null===C?Object.create(C):(i.prototype=C.prototype,new i)}}(),Hu=function(e){function t(t){var C=e.call(this)||this,i=t;return i.trigger&&(C.trigger=i.trigger),i.kick&&(C.kick=i.kick),i.drag&&(C.drag=i.drag),i.on&&(C.on=i.on),C.dragstart=C.dragStart=Cu.Layout.dragStart,C.dragend=C.dragEnd=Cu.Layout.dragEnd,C}return iu(t,e),t.prototype.trigger=function(e){},t.prototype.kick=function(){},t.prototype.drag=function(){},t.prototype.on=function(e,t){return this},t}(Cu.Layout),nu=Hu;var Vu=function(e){return new Hu(e)},ru=Object.defineProperty({LayoutAdaptor:nu,adaptor:Vu},"__esModule",{value:!0}),Lu=ce&&ce.__extends||function(){var e=function(t,C){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var C in t)t.hasOwnProperty(C)&&(e[C]=t[C])},e(t,C)};return function(t,C){function i(){this.constructor=t}e(t,C),t.prototype=null===C?Object.create(C):(i.prototype=C.prototype,new i)}}(),ou=function(e){function t(){var t=e.call(this)||this;t.event=d3.dispatch(Cu.EventType[Cu.EventType.start],Cu.EventType[Cu.EventType.tick],Cu.EventType[Cu.EventType.end]);var C=t;return t.drag=function(){if(!e)var e=d3.behavior.drag().origin(Cu.Layout.dragOrigin).on("dragstart.d3adaptor",Cu.Layout.dragStart).on("drag.d3adaptor",(function(e){Cu.Layout.drag(e,d3.event),C.resume()})).on("dragend.d3adaptor",Cu.Layout.dragEnd);if(!arguments.length)return e;this.call(e)},t}return Lu(t,e),t.prototype.trigger=function(e){var t={type:Cu.EventType[e.type],alpha:e.alpha,stress:e.stress};this.event[t.type](t)},t.prototype.kick=function(){var t=this;d3.timer((function(){return e.prototype.tick.call(t)}))},t.prototype.on=function(e,t){return"string"==typeof e?this.event.on(e,t):this.event.on(Cu.EventType[e],t),this},t}(Cu.Layout),au=ou;var Mu=function(){return new ou},su=Object.defineProperty({D3StyleLayoutAdaptor:au,d3adaptor:Mu},"__esModule",{value:!0}),lu=ce&&ce.__extends||function(){var e=function(t,C){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var C in t)t.hasOwnProperty(C)&&(e[C]=t[C])},e(t,C)};return function(t,C){function i(){this.constructor=t}e(t,C),t.prototype=null===C?Object.create(C):(i.prototype=C.prototype,new i)}}(),du=function(e){function t(t){var C=e.call(this)||this;C.d3Context=t,C.event=t.dispatch(Cu.EventType[Cu.EventType.start],Cu.EventType[Cu.EventType.tick],Cu.EventType[Cu.EventType.end]);var i=C;return C.drag=function(){if(!e)var e=t.drag().subject(Cu.Layout.dragOrigin).on("start.d3adaptor",Cu.Layout.dragStart).on("drag.d3adaptor",(function(e){Cu.Layout.drag(e,t.event),i.resume()})).on("end.d3adaptor",Cu.Layout.dragEnd);if(!arguments.length)return e;arguments[0].call(e)},C}return lu(t,e),t.prototype.trigger=function(e){var t={type:Cu.EventType[e.type],alpha:e.alpha,stress:e.stress};this.event.call(t.type,t)},t.prototype.kick=function(){var t=this,C=this.d3Context.timer((function(){return e.prototype.tick.call(t)&&C.stop()}))},t.prototype.on=function(e,t){return"string"==typeof e?this.event.on(e,t):this.event.on(Cu.EventType[e],t),this},t}(Cu.Layout),uu=Object.defineProperty({D3StyleLayoutAdaptor:du},"__esModule",{value:!0});var Au=function(e){return!e||function(e){var t=/^3\./;return e.version&&null!==e.version.match(t)}(e)?new su.D3StyleLayoutAdaptor:new uu.D3StyleLayoutAdaptor(e)};var cu=Object.defineProperty({d3adaptor:Au},"__esModule",{value:!0}),hu=function(e,t,C){this.id=e,this.rect=t,this.children=C,this.leaf=void 0===C||0===C.length},mu=hu,fu=function(e,t,C,i,H){void 0===i&&(i=null),void 0===H&&(H=null),this.id=e,this.x=t,this.y=C,this.node=i,this.line=H},pu=fu,gu=function(){function e(t,C){this.s=t,this.t=C;var i=e.findMatch(t,C),H=C.slice(0).reverse(),n=e.findMatch(t,H);i.length>=n.length?(this.length=i.length,this.si=i.si,this.ti=i.ti,this.reversed=!1):(this.length=n.length,this.si=n.si,this.ti=C.length-n.ti-n.length,this.reversed=!0)}return e.findMatch=function(e,t){for(var C=e.length,i=t.length,H={length:0,si:-1,ti:-1},n=new Array(C),V=0;VH.length&&(H.length=L,H.si=V-L+1,H.ti=r-L+1)}else n[V][r]=0}return H},e.prototype.getSequence=function(){return this.length>=0?this.s.slice(this.si,this.si+this.length):[]},e}(),vu=gu,yu=function(){function e(e,t,C){var i=this;void 0===C&&(C=12),this.originalnodes=e,this.groupPadding=C,this.leaves=null,this.nodes=e.map((function(e,C){return new hu(C,t.getBounds(e),t.getChildren(e))})),this.leaves=this.nodes.filter((function(e){return e.leaf})),this.groups=this.nodes.filter((function(e){return!e.leaf})),this.cols=this.getGridLines("x"),this.rows=this.getGridLines("y"),this.groups.forEach((function(e){return e.children.forEach((function(t){return i.nodes[t].parent=e}))})),this.root={children:[]},this.nodes.forEach((function(e){void 0===e.parent&&(e.parent=i.root,i.root.children.push(e.id)),e.ports=[]})),this.backToFront=this.nodes.slice(0),this.backToFront.sort((function(e,t){return i.getDepth(e)-i.getDepth(t)})),this.backToFront.slice(0).reverse().filter((function(e){return!e.leaf})).forEach((function(e){var t=ed.Rectangle.empty();e.children.forEach((function(e){return t=t.union(i.nodes[e].rect)})),e.rect=t.inflate(i.groupPadding)}));var H=this.midPoints(this.cols.map((function(e){return e.pos}))),n=this.midPoints(this.rows.map((function(e){return e.pos}))),V=H[0],r=H[H.length-1],L=n[0],o=n[n.length-1],a=this.rows.map((function(e){return{x1:V,x2:r,y1:e.pos,y2:e.pos}})).concat(n.map((function(e){return{x1:V,x2:r,y1:e,y2:e}}))),M=this.cols.map((function(e){return{x1:e.pos,x2:e.pos,y1:L,y2:o}})).concat(H.map((function(e){return{x1:e,x2:e,y1:L,y2:o}}))),s=a.concat(M);s.forEach((function(e){return e.verts=[]})),this.verts=[],this.edges=[],a.forEach((function(e){return M.forEach((function(t){var C=new fu(i.verts.length,t.x1,e.y1);e.verts.push(C),t.verts.push(C),i.verts.push(C);for(var H=i.backToFront.length;H-- >0;){var n=i.backToFront[H],V=n.rect,r=Math.abs(C.x-V.cx()),L=Math.abs(C.y-V.cy());if(r0;){var i=C.filter((function(t){return t.rect["overlap"+e.toUpperCase()](C[0].rect)})),H={nodes:i,pos:this.avg(i.map((function(t){return t.rect["c"+e]()})))};t.push(H),H.nodes.forEach((function(e){return C.splice(C.indexOf(e),1)}))}return t.sort((function(e,t){return e.pos-t.pos})),t},e.prototype.getDepth=function(e){for(var t=0;e.parent!==this.root;)t++,e=e.parent;return t},e.prototype.midPoints=function(e){for(var t=e[1]-e[0],C=[e[0]-t/2],i=1;i.1)&&(o={pos:M[0][t],segments:[]},L.push(o)),o.segments.push(M)}return L},e.nudgeSegs=function(e,t,C,i,H,n){var V=i.length;if(!(V<=1)){for(var r=i.map((function(t){return new Al.Variable(t[0][e])})),L=[],o=0;o=0&&L.push(new Al.Constraint(r[u],r[A],n))}new Al.Solver(r,L).solve(),r.forEach((function(t,H){var n=i[H],V=t.position();n[0][e]=n[1][e]=V;var r=C[n.edgeid];n.i>0&&(r[n.i-1][1][e]=V),n.iMath.PI||H<-Math.PI)&&(H=i-C),H},e.isLeft=function(e,t,C){return(t.x-e.x)*(C.y-e.y)-(t.y-e.y)*(C.x-e.x)<=0},e.getOrder=function(e){for(var t={},C=0;C=L.length||a.ti+a.length>=o.length)?C.push({l:i,r:H}):(a.si+a.length>=L.length||a.ti+a.length>=o.length?(n=L[a.si+1],r=L[a.si-1],V=o[a.ti-1]):(n=L[a.si+a.length-2],V=L[a.si+a.length],r=o[a.ti+a.length]),e.isLeft(n,V,r)?C.push({l:H,r:i}):C.push({l:i,r:H})))}return e.getOrder(C)},e.makeSegments=function(e){function t(e){return{x:e.x,y:e.y}}for(var C=function(e,t,C){return Math.abs((t.x-e.x)*(C.y-e.y)-(t.y-e.y)*(C.x-e.x))<.001},i=[],H=t(e[0]),n=1;n1&&a>1?1e3:0})),a=o.reverse().map((function(e){return C.verts[e]}));return a.push(this.nodes[H.id].ports[0]),a.filter((function(e,t){return!(t0&&e.node===H&&a[t-1].node===H)}))},e.getRoutePath=function(t,C,i,H){var n={routepath:"M "+t[0][0].x+" "+t[0][0].y+" ",arrowpath:""};if(t.length>1)for(var V=0;V0?r-=o/Math.abs(o)*C:L-=a/Math.abs(a)*C,n.routepath+="L "+r+" "+L+" ";var M=t[V+1],s=M[0].x,l=M[0].y;o=M[1].x-s,a=M[1].y-l;var d,u,A=e.angleBetween2Lines(f,M)<0?1:0;Math.abs(o)>0?(d=s+o/Math.abs(o)*C,u=l):(d=s,u=l+a/Math.abs(a)*C);var c=Math.abs(d-r),h=Math.abs(u-L);n.routepath+="A "+c+" "+h+" 0 0 "+A+" "+d+" "+u+" "}else{var m=[r,L];Math.abs(o)>0?(p=[r-=o/Math.abs(o)*H,L+i],g=[r,L-i]):(p=[r+i,L-=a/Math.abs(a)*H],g=[r-i,L]),n.routepath+="L "+r+" "+L+" ",H>0&&(n.arrowpath="M "+m[0]+" "+m[1]+" L "+p[0]+" "+p[1]+" L "+g[0]+" "+g[1])}}else{var f,p,g;r=(f=t[0])[1].x,L=f[1].y,o=r-f[0].x,a=L-f[0].y,m=[r,L];Math.abs(o)>0?(p=[r-=o/Math.abs(o)*H,L+i],g=[r,L-i]):(p=[r+i,L-=a/Math.abs(a)*H],g=[r-i,L]),n.routepath+="L "+r+" "+L+" ",H>0&&(n.arrowpath="M "+m[0]+" "+m[1]+" L "+p[0]+" "+p[1]+" L "+g[0]+" "+g[1])}return n},e}(),Zu=yu,Su=Object.defineProperty({NodeWrapper:mu,Vert:pu,LongestCommonSubsequence:vu,GridRouter:Zu},"__esModule",{value:!0}),bu=function(){function e(e,t){this.source=e,this.target=t}return e.prototype.actualLength=function(e){var t=this;return Math.sqrt(e.reduce((function(e,C){var i=C[t.target]-C[t.source];return e+i*i}),0))},e}(),wu=function(e,t,C){void 0===e&&(e=0),void 0===t&&(t=0),void 0===C&&(C=0),this.x=e,this.y=t,this.z=C},xu=function(){function e(t,C,i){var H=this;void 0===i&&(i=1),this.nodes=t,this.links=C,this.idealLinkLength=i,this.constraints=null,this.useJaccardLinkLengths=!0,this.result=new Array(e.k);for(var n=0;n0&&f.constraints(Z),f.groups(l.map((function(e,C){var i=a(t.nodeSpacing,e),H=function(t){return parseFloat(e.style("padding-"+t))},n=H("left")+i,V=H("right")+i,r=H("top")+i,L=H("bottom")+i;return e.scratch().cola={index:C,padding:Math.max(n,V,r,L),leaves:e.children().intersection(d).map((function(e){return e[0].scratch().cola.index})),fixed:e.locked()},e})).map((function(e){return e.scratch().cola.groups=e.children().intersection(l).map((function(e){return e.scratch().cola.index})),e.scratch().cola})));var S,b=void 0,w=void 0;if(null!=t.edgeLength?(b=t.edgeLength,w="linkDistance"):null!=t.edgeSymDiffLength?(b=t.edgeSymDiffLength,w="symmetricDiffLinkLengths"):null!=t.edgeJaccardLength?(b=t.edgeJaccardLength,w="jaccardLinkLengths"):(b=100,w="linkDistance"),f.links(M.stdFilter((function(e){return d.contains(e.source())&&d.contains(e.target())})).map((function(e){var t=e.scratch().cola={source:e.source()[0].scratch().cola.index,target:e.target()[0].scratch().cola.index};return null!=b&&(t.calcLength=a(b,e)),t}))),f.size([u.w,u.h]),null!=b&&f[w]((function(e){return e.calcLength})),t.flow){var x=void 0;(void 0===(S=t.flow)?"undefined":i(S))===i("")?x={axis:t.flow,minSeparation:50}:L(t.flow)?x={axis:"y",minSeparation:t.flow}:function(e){return null!=e&&(void 0===e?"undefined":i(e))===i({})}(t.flow)?((x=t.flow).axis=x.axis||"y",x.minSeparation=null!=x.minSeparation?x.minSeparation:50):x={axis:"y",minSeparation:50},f.flowLayout(x.axis,x.minSeparation)}return e.trigger({type:"layoutstart",layout:e}),f.avoidOverlaps(t.avoidOverlap).handleDisconnected(t.handleDisconnected).start(t.unconstrIter,t.userConstIter,t.allConstIter,void 0,void 0,t.centerGraph),t.infinite||setTimeout((function(){e.manuallyStopped||f.stop()}),t.maxSimulationTime),this},M.prototype.stop=function(){return this.adaptor&&(this.manuallyStopped=!0,this.adaptor.stop()),this},e.exports=M},function(e,t,C){e.exports=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments.length,C=Array(t>1?t-1:0),i=1;it&&(this.rect.x-=(this.labelWidth-t)/2,this.setWidth(this.labelWidth)),this.labelHeight>C&&("center"==this.labelPos?this.rect.y-=(this.labelHeight-C)/2:"top"==this.labelPos&&(this.rect.y-=this.labelHeight-C),this.setHeight(this.labelHeight))}}},o.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==H.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},o.prototype.transform=function(e){var t=this.rect.x;t>V.WORLD_BOUNDARY?t=V.WORLD_BOUNDARY:t<-V.WORLD_BOUNDARY&&(t=-V.WORLD_BOUNDARY);var C=this.rect.y;C>V.WORLD_BOUNDARY?C=V.WORLD_BOUNDARY:C<-V.WORLD_BOUNDARY&&(C=-V.WORLD_BOUNDARY);var i=new L(t,C),H=e.inverseTransformPoint(i);this.setLocation(H.x,H.y)},o.prototype.getLeft=function(){return this.rect.x},o.prototype.getRight=function(){return this.rect.x+this.rect.width},o.prototype.getTop=function(){return this.rect.y},o.prototype.getBottom=function(){return this.rect.y+this.rect.height},o.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},e.exports=o},function(e,t,C){function i(e,t){null==e&&null==t?(this.x=0,this.y=0):(this.x=e,this.y=t)}i.prototype.getX=function(){return this.x},i.prototype.getY=function(){return this.y},i.prototype.setX=function(e){this.x=e},i.prototype.setY=function(e){this.y=e},i.prototype.getDifference=function(e){return new DimensionD(this.x-e.x,this.y-e.y)},i.prototype.getCopy=function(){return new i(this.x,this.y)},i.prototype.translate=function(e){return this.x+=e.width,this.y+=e.height,this},e.exports=i},function(e,t,C){var i=C(2),H=C(10),n=C(0),V=C(6),r=C(3),L=C(1),o=C(13),a=C(12),M=C(11);function s(e,t,C){i.call(this,C),this.estimatedSize=H.MIN_VALUE,this.margin=n.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=e,null!=t&&t instanceof V?this.graphManager=t:null!=t&&t instanceof Layout&&(this.graphManager=t.graphManager)}for(var l in s.prototype=Object.create(i.prototype),i)s[l]=i[l];s.prototype.getNodes=function(){return this.nodes},s.prototype.getEdges=function(){return this.edges},s.prototype.getGraphManager=function(){return this.graphManager},s.prototype.getParent=function(){return this.parent},s.prototype.getLeft=function(){return this.left},s.prototype.getRight=function(){return this.right},s.prototype.getTop=function(){return this.top},s.prototype.getBottom=function(){return this.bottom},s.prototype.isConnected=function(){return this.isConnected},s.prototype.add=function(e,t,C){if(null==t&&null==C){var i=e;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(i)>-1)throw"Node already in graph!";return i.owner=this,this.getNodes().push(i),i}var H=e;if(!(this.getNodes().indexOf(t)>-1&&this.getNodes().indexOf(C)>-1))throw"Source or target not in graph!";if(t.owner!=C.owner||t.owner!=this)throw"Both owners must be this graph!";return t.owner!=C.owner?null:(H.source=t,H.target=C,H.isInterGraph=!1,this.getEdges().push(H),t.edges.push(H),C!=t&&C.edges.push(H),H)},s.prototype.remove=function(e){var t=e;if(e instanceof r){if(null==t)throw"Node is null!";if(null==t.owner||t.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var C=t.edges.slice(),i=C.length,H=0;H-1&&a>-1))throw"Source and/or target doesn't know this edge!";if(n.source.edges.splice(o,1),n.target!=n.source&&n.target.edges.splice(a,1),-1==(V=n.source.owner.getEdges().indexOf(n)))throw"Not in owner's edge list!";n.source.owner.getEdges().splice(V,1)}},s.prototype.updateLeftTop=function(){for(var e,t,C,i=H.MAX_VALUE,n=H.MAX_VALUE,V=this.getNodes(),r=V.length,L=0;L(e=o.getTop())&&(i=e),n>(t=o.getLeft())&&(n=t)}return i==H.MAX_VALUE?null:(C=null!=V[0].getParent().paddingLeft?V[0].getParent().paddingLeft:this.margin,this.left=n-C,this.top=i-C,new a(this.left,this.top))},s.prototype.updateBounds=function(e){for(var t,C,i,n,V,r=H.MAX_VALUE,L=-H.MAX_VALUE,a=H.MAX_VALUE,M=-H.MAX_VALUE,s=this.nodes,l=s.length,d=0;d(t=u.getLeft())&&(r=t),L<(C=u.getRight())&&(L=C),a>(i=u.getTop())&&(a=i),M<(n=u.getBottom())&&(M=n)}var A=new o(r,a,L-r,M-a);r==H.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),V=null!=s[0].getParent().paddingLeft?s[0].getParent().paddingLeft:this.margin,this.left=A.x-V,this.right=A.x+A.width+V,this.top=A.y-V,this.bottom=A.y+A.height+V},s.calculateBounds=function(e){for(var t,C,i,n,V=H.MAX_VALUE,r=-H.MAX_VALUE,L=H.MAX_VALUE,a=-H.MAX_VALUE,M=e.length,s=0;s(t=l.getLeft())&&(V=t),r<(C=l.getRight())&&(r=C),L>(i=l.getTop())&&(L=i),a<(n=l.getBottom())&&(a=n)}return new o(V,L,r-V,a-L)},s.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},s.prototype.getEstimatedSize=function(){if(this.estimatedSize==H.MIN_VALUE)throw"assert failed";return this.estimatedSize},s.prototype.calcEstimatedSize=function(){for(var e=0,t=this.nodes,C=t.length,i=0;i=this.nodes.length){var L=0;H.forEach((function(t){t.owner==e&&L++})),L==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},e.exports=s},function(e,t,C){var i,H=C(1);function n(e){i=C(5),this.layout=e,this.graphs=[],this.edges=[]}n.prototype.addRoot=function(){var e=this.layout.newGraph(),t=this.layout.newNode(null),C=this.add(e,t);return this.setRootGraph(C),this.rootGraph},n.prototype.add=function(e,t,C,i,H){if(null==C&&null==i&&null==H){if(null==e)throw"Graph is null!";if(null==t)throw"Parent node is null!";if(this.graphs.indexOf(e)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(e),null!=e.parent)throw"Already has a parent!";if(null!=t.child)throw"Already has a child!";return e.parent=t,t.child=e,e}H=C,C=e;var n=(i=t).getOwner(),V=H.getOwner();if(null==n||n.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==V||V.getGraphManager()!=this)throw"Target not in this graph mgr!";if(n==V)return C.isInterGraph=!1,n.add(C,i,H);if(C.isInterGraph=!0,C.source=i,C.target=H,this.edges.indexOf(C)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(C),null==C.source||null==C.target)throw"Edge source and/or target is null!";if(-1!=C.source.edges.indexOf(C)||-1!=C.target.edges.indexOf(C))throw"Edge already in source and/or target incidency list!";return C.source.edges.push(C),C.target.edges.push(C),C},n.prototype.remove=function(e){if(e instanceof i){var t=e;if(t.getGraphManager()!=this)throw"Graph not in this graph mgr";if(t!=this.rootGraph&&(null==t.parent||t.parent.graphManager!=this))throw"Invalid parent node!";for(var C,n=[],V=(n=n.concat(t.getEdges())).length,r=0;r=t.getRight()?C[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight()):t.getX()<=e.getX()&&t.getRight()>=e.getRight()&&(C[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight())),e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()?C[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()):t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()&&(C[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()));var n=Math.abs((t.getCenterY()-e.getCenterY())/(t.getCenterX()-e.getCenterX()));t.getCenterY()===e.getCenterY()&&t.getCenterX()===e.getCenterX()&&(n=1);var V=n*C[0],r=C[1]/n;C[0]V)return C[0]=i,C[1]=L,C[2]=n,C[3]=m,!1;if(Hn)return C[0]=r,C[1]=H,C[2]=c,C[3]=V,!1;if(in?(C[0]=a,C[1]=M,v=!0):(C[0]=o,C[1]=L,v=!0):Z===b&&(i>n?(C[0]=r,C[1]=L,v=!0):(C[0]=s,C[1]=M,v=!0)),-S===b?n>i?(C[2]=h,C[3]=m,y=!0):(C[2]=c,C[3]=A,y=!0):S===b&&(n>i?(C[2]=u,C[3]=A,y=!0):(C[2]=f,C[3]=m,y=!0)),v&&y)return!1;if(i>n?H>V?(w=this.getCardinalDirection(Z,b,4),x=this.getCardinalDirection(S,b,2)):(w=this.getCardinalDirection(-Z,b,3),x=this.getCardinalDirection(-S,b,1)):H>V?(w=this.getCardinalDirection(-Z,b,1),x=this.getCardinalDirection(-S,b,3)):(w=this.getCardinalDirection(Z,b,2),x=this.getCardinalDirection(S,b,4)),!v)switch(w){case 1:k=L,O=i+-d/b,C[0]=O,C[1]=k;break;case 2:O=s,k=H+l*b,C[0]=O,C[1]=k;break;case 3:k=M,O=i+d/b,C[0]=O,C[1]=k;break;case 4:O=a,k=H+-l*b,C[0]=O,C[1]=k}if(!y)switch(x){case 1:P=A,E=n+-g/b,C[2]=E,C[3]=P;break;case 2:E=f,P=V+p*b,C[2]=E,C[3]=P;break;case 3:P=m,E=n+g/b,C[2]=E,C[3]=P;break;case 4:E=h,P=V+-p*b,C[2]=E,C[3]=P}}return!1},H.getCardinalDirection=function(e,t,C){return e>t?C:1+C%4},H.getIntersection=function(e,t,C,H){if(null==H)return this.getIntersection2(e,t,C);var n,V,r,L,o,a,M,s=e.x,l=e.y,d=t.x,u=t.y,A=C.x,c=C.y,h=H.x,m=H.y;return 0==(M=(n=u-l)*(L=A-h)-(V=m-c)*(r=s-d))?null:new i((r*(a=h*c-A*m)-L*(o=d*l-s*u))/M,(V*o-n*a)/M)},H.angleOfVector=function(e,t,C,i){var H=void 0;return e!==C?(H=Math.atan((i-t)/(C-e)),C0?1:e<0?-1:0},i.floor=function(e){return e<0?Math.ceil(e):Math.floor(e)},i.ceil=function(e){return e<0?Math.floor(e):Math.ceil(e)},e.exports=i},function(e,t,C){function i(){}i.MAX_VALUE=2147483647,i.MIN_VALUE=-2147483648,e.exports=i},function(e,t,C){var i=function(){function e(e,t){for(var C=0;C0&&t;){for(r.push(o[0]);r.length>0&&t;){var a=r[0];r.splice(0,1),V.add(a);var M=a.getEdges();for(n=0;n-1&&o.splice(u,1)}V=new Set,L=new Map}else e=[]}return e},s.prototype.createDummyNodesForBendpoints=function(e){for(var t=[],C=e.source,i=this.graphManager.calcLowestCommonAncestor(e.source,e.target),H=0;H0){for(var H=this.edgeToDummyNodes.get(C),n=0;n=0&&t.splice(M,1),a.getNeighborsList().forEach((function(e){if(C.indexOf(e)<0){var t=i.get(e)-1;1==t&&L.push(e),i.set(e,t)}}))}C=C.concat(L),1!=t.length&&2!=t.length||(H=!0,n=t[0])}return n},s.prototype.setGraphManager=function(e){this.graphManager=e},e.exports=s},function(e,t,C){function i(){}i.seed=1,i.x=0,i.nextDouble=function(){return i.x=1e4*Math.sin(i.seed++),i.x-Math.floor(i.x)},e.exports=i},function(e,t,C){var i=C(4);function H(e,t){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}H.prototype.getWorldOrgX=function(){return this.lworldOrgX},H.prototype.setWorldOrgX=function(e){this.lworldOrgX=e},H.prototype.getWorldOrgY=function(){return this.lworldOrgY},H.prototype.setWorldOrgY=function(e){this.lworldOrgY=e},H.prototype.getWorldExtX=function(){return this.lworldExtX},H.prototype.setWorldExtX=function(e){this.lworldExtX=e},H.prototype.getWorldExtY=function(){return this.lworldExtY},H.prototype.setWorldExtY=function(e){this.lworldExtY=e},H.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},H.prototype.setDeviceOrgX=function(e){this.ldeviceOrgX=e},H.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},H.prototype.setDeviceOrgY=function(e){this.ldeviceOrgY=e},H.prototype.getDeviceExtX=function(){return this.ldeviceExtX},H.prototype.setDeviceExtX=function(e){this.ldeviceExtX=e},H.prototype.getDeviceExtY=function(){return this.ldeviceExtY},H.prototype.setDeviceExtY=function(e){this.ldeviceExtY=e},H.prototype.transformX=function(e){var t=0,C=this.lworldExtX;return 0!=C&&(t=this.ldeviceOrgX+(e-this.lworldOrgX)*this.ldeviceExtX/C),t},H.prototype.transformY=function(e){var t=0,C=this.lworldExtY;return 0!=C&&(t=this.ldeviceOrgY+(e-this.lworldOrgY)*this.ldeviceExtY/C),t},H.prototype.inverseTransformX=function(e){var t=0,C=this.ldeviceExtX;return 0!=C&&(t=this.lworldOrgX+(e-this.ldeviceOrgX)*this.lworldExtX/C),t},H.prototype.inverseTransformY=function(e){var t=0,C=this.ldeviceExtY;return 0!=C&&(t=this.lworldOrgY+(e-this.ldeviceOrgY)*this.lworldExtY/C),t},H.prototype.inverseTransformPoint=function(e){return new i(this.inverseTransformX(e.x),this.inverseTransformY(e.y))},e.exports=H},function(e,t,C){var i=C(15),H=C(7),n=C(0),V=C(8),r=C(9);function L(){i.call(this),this.useSmartIdealEdgeLengthCalculation=H.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=H.DEFAULT_EDGE_LENGTH,this.springConstant=H.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=H.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=H.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=H.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=H.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=H.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*H.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=H.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=H.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=H.MAX_ITERATIONS}for(var o in L.prototype=Object.create(i.prototype),i)L[o]=i[o];L.prototype.initParameters=function(){i.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=H.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},L.prototype.calcIdealEdgeLengths=function(){for(var e,t,C,i,V,r,L=this.getGraphManager().getAllEdges(),o=0;oH.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*H.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(e-H.ADAPTATION_LOWER_NODE_LIMIT)/(H.ADAPTATION_UPPER_NODE_LIMIT-H.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-H.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=H.MAX_NODE_DISPLACEMENT_INCREMENTAL):(e>H.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(H.COOLING_ADAPTATION_FACTOR,1-(e-H.ADAPTATION_LOWER_NODE_LIMIT)/(H.ADAPTATION_UPPER_NODE_LIMIT-H.ADAPTATION_LOWER_NODE_LIMIT)*(1-H.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=H.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},L.prototype.calcSpringForces=function(){for(var e,t=this.getAllEdges(),C=0;C0&&void 0!==arguments[0])||arguments[0],r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],L=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%H.GRID_CALCULATION_CHECK_PERIOD==1&&V&&this.updateGrid(),n=new Set,e=0;e(L=t.getEstimatedSize()*this.gravityRangeFactor)||r>L)&&(e.gravitationForceX=-this.gravityConstant*H,e.gravitationForceY=-this.gravityConstant*n):(V>(L=t.getEstimatedSize()*this.compoundGravityRangeFactor)||r>L)&&(e.gravitationForceX=-this.gravityConstant*H*this.compoundGravityConstant,e.gravitationForceY=-this.gravityConstant*n*this.compoundGravityConstant)},L.prototype.isConverged=function(){var e,t=!1;return this.totalIterations>this.maxIterations/3&&(t=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),e=this.totalDisplacement=r.length||o>=r[0].length))for(var a=0;ae}}]),e}();e.exports=n},function(e,t,C){var i=function(){function e(e,t){for(var C=0;C2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,V=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;H(this,e),this.sequence1=t,this.sequence2=C,this.match_score=i,this.mismatch_penalty=n,this.gap_penalty=V,this.iMax=t.length+1,this.jMax=C.length+1,this.grid=new Array(this.iMax);for(var r=0;r=0;C--){var i=this.listeners[C];i.event===e&&i.callback===t&&this.listeners.splice(C,1)}},H.emit=function(e,t){for(var C=0;C=0;H--){var n=i[H];n.isOrdered()||e.stack.push(n)}return t},H.prototype.calculateRadius=function(){var e=this,t=0;e.getNodes().forEach((function(e){return t+=Math.sqrt(e.getWidth()*e.getWidth()+e.getHeight()*e.getHeight())})),e.perimeter=t+e.getNodes().length*e.nodeSeparation;var C=e.perimeter/(2*Math.PI);e.getParent().setWidth(2*C),e.getParent().setHeight(2*C),e.getParent().setCenter(e.getParent().getWidth(),e.getParent().getHeight()),e.centerX=e.getParent().getCenterX(),e.centerY=e.getParent().getCenterY(),e.radius=e.getParent().getHeight()/2},H.prototype.calculateEdgeCrossingsOfNodes=function(){this.getNodes().forEach((function(e){return e.calculateTotalCrossing()}))},H.prototype.loadOldIndicesOfNodes=function(){for(var e=0;eMath.min(V,r)&&0!==r&&0!==V},H.prototype.crossingWithEdge=function(e){return this.crossesWithEdge(e)?1:0},H.prototype.calculateTotalCrossingWithList=function(e){var t=this,C=0;return e.forEach((function(e){return C+=t.crossingWithEdge(e)})),C},e.exports=H},function(e,t,C){var i=C(0).LNode;function H(e,t,C,H){void 0!==C&&void 0!==H?i.call(this,e,t,C,H):i.call(this,e,t),this.angle=0,this.circleIndex=-1,this.totalCrossingOfEdges=-1,this.isCrossingNumberValid=!1}for(var n in C(0).Quicksort,H.prototype=Object.create(i.prototype),i)H[n]=i[n];H.prototype.getCircle=function(){return this.getOwner()},H.prototype.setIndex=function(e){this.circleIndex=e,this.isCrossingNumberValid=!1},H.prototype.getIndex=function(){return this.circleIndex},H.prototype.getNeighborsSortedByDegree=function(){var e=Array.from(this.getNeighborsList());return(e=e.filter((function(e){return-1===e.getIndex()}))).sort((function(e,t){return e.getDegree()-t.getDegree()})),e},H.prototype.getDegree=function(){return this.getEdges().length},H.prototype.isOrdered=function(){return this.getIndex()>-1},H.prototype.setAngle=function(e){this.angle=e},H.prototype.getAngle=function(){return this.angle},H.prototype.getCircDistWithTheNode=function(e){var t=this,C=e.getIndex();if(-1===C||-1===t.getIndex())return-1;var i=t.getIndex()-C;return i<0&&(i+=t.getCircle().getSize()),i},H.prototype.getCrossingNumberWithNode=function(e){var t=0;return this.getEdges().forEach((function(C){e.getEdges().forEach((function(e){t+=C.crossingWithEdge(e)}))})),t},H.prototype.getTotalCrossingOfEdges=function(){var e=this;return e.isCrossingNumberValid||(e.calculateTotalCrossing(),e.isCrossingNumberValid=!0),e.totalCrossingOfEdges},H.prototype.calculateTotalCrossing=function(){var e=this,t=0,C=[];C.push.apply(C,e.getCircle().getEdges()),C=C.filter((function(t){return e.getEdges().indexOf(t)<0})),e.getEdges().forEach((function(e){return t+=e.calculateTotalCrossingWithList(C)})),e.totalCrossingOfEdges=t},e.exports=H},function(e,t,C){var i=C(0).Layout,H=C(2),n=C(1),V=C(4),r=C(3);function L(){i.call(this),this.nodeSeparation=H.DEFAULT_NODE_SEPARATION}for(var o in L.prototype=Object.create(i.prototype),i)L[o]=i[o];L.prototype.newGraph=function(e){return this.avsdfCircle=new n(null,this.graphManager,e),this.avsdfCircle},L.prototype.newNode=function(e){return new V(this.graphManager,e)},L.prototype.newEdge=function(e){return new r(null,null,e)},L.prototype.getPositionsData=function(){for(var e=this.graphManager.getAllNodes(),t={},C=0;C1)return!1;var e=this.avsdfCircle;for(e.setNodeSeparation(this.nodeSeparation),e.calculateRadius(),e.initOrdering();!e.hasFinishedOrdering();){var t=e.findNodeToPlace();e.putInOrder(t)}return!0},L.prototype.updateNodeAngles=function(){this.graphManager.getRoot().correctAngles()},L.prototype.updateNodeCoordinates=function(){var e=this.graphManager.getRoot();e.getNodes().forEach((function(t){t.setCenter(e.getCenterX()+e.getRadius()*Math.cos(t.getAngle()),e.getCenterY()+e.getRadius()*Math.sin(t.getAngle()))}))},L.prototype.initPostProcess=function(){this.avsdfCircle.calculateEdgeCrossingsOfNodes();var e=this.avsdfCircle.getNodes();return e.sort((function(e,t){return t.getTotalCrossingOfEdges()-e.getTotalCrossingOfEdges()})),e},L.prototype.oneStepPostProcess=function(e){for(var t=this,C=e.getTotalCrossingOfEdges(),i=void 0,H=Array.from(e.getNeighborsList()),n=0;n=C?t.avsdfCircle.loadOldIndicesOfNodes():(t.avsdfCircle.reOrderVertices(),C=i)}}},e.exports=L},function(e,t,C){var i={};i.layoutBase=C(0),i.AVSDFConstants=C(2),i.AVSDFEdge=C(3),i.AVSDFCircle=C(1),i.AVSDFLayout=C(5),i.AVSDFNode=C(4),e.exports=i}])},e.exports=C(Fu)})),zu=fe((function(e,t){var C;C=function(e){return function(e){var t={};function C(i){if(t[i])return t[i].exports;var H=t[i]={i:i,l:!1,exports:{}};return e[i].call(H.exports,H,H.exports,C),H.l=!0,H.exports}return C.m=e,C.c=t,C.i=function(e){return e},C.d=function(e,t,i){C.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},C.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return C.d(t,"a",t),t},C.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},C.p="",C(C.s=3)}([function(t,C){t.exports=e},function(e,t,C){e.exports=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments.length,C=Array(t>1?t-1:0),i=1;i=t.nodes.size())return!0;this.avsdfLayout.oneStepPostProcess(this.sortedByDegreeList[t.tickIndex]),this.avsdfLayout.updateNodeAngles(),this.avsdfLayout.updateNodeCoordinates()}},{key:"postrun",value:function(){}},{key:"destroy",value:function(){return H(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this),this}},{key:"processChildrenList",value:function(e,t,C){for(var i=t.length,H=0;H1&&void 0!==arguments[1]?arguments[1]:i,C=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i,n=!1,V=e,r=0;r-1};var Qu=function(e,t){var C=this.__data__,i=$u(C,e);return i<0?(++this.size,C.push([e,t])):C[i][1]=t,this};function Ku(e){var t=-1,C=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991},vc={};vc["[object Float32Array]"]=vc["[object Float64Array]"]=vc["[object Int8Array]"]=vc["[object Int16Array]"]=vc["[object Int32Array]"]=vc["[object Uint8Array]"]=vc["[object Uint8ClampedArray]"]=vc["[object Uint16Array]"]=vc["[object Uint32Array]"]=!0,vc["[object Arguments]"]=vc["[object Array]"]=vc["[object ArrayBuffer]"]=vc["[object Boolean]"]=vc["[object DataView]"]=vc["[object Date]"]=vc["[object Error]"]=vc["[object Function]"]=vc["[object Map]"]=vc["[object Number]"]=vc["[object Object]"]=vc["[object RegExp]"]=vc["[object Set]"]=vc["[object String]"]=vc["[object WeakMap]"]=!1;var yc=function(e){return Mc(e)&&gc(e.length)&&!!vc[AA(e)]};var Zc=function(e){return function(t){return e(t)}},Sc=fe((function(e,t){var C=t&&!t.nodeType&&t,i=C&&e&&!e.nodeType&&e,H=i&&i.exports===C&&HA.process,n=function(){try{var e=i&&i.require&&i.require("util").types;return e||H&&H.binding&&H.binding("util")}catch(e){}}();e.exports=n})),bc=Sc&&Sc.isTypedArray,wc=bc?Zc(bc):yc,xc=Object.prototype.hasOwnProperty;var Oc=function(e,t){var C=cc(e),i=!C&&Ac(e),H=!C&&!i&&mc(e),n=!C&&!i&&!H&&wc(e),V=C||i||H||n,r=V?ac(e.length,String):[],L=r.length;for(var o in e)!t&&!xc.call(e,o)||V&&("length"==o||H&&("offset"==o||"parent"==o)||n&&("buffer"==o||"byteLength"==o||"byteOffset"==o)||pc(o,L))||r.push(o);return r},kc=Object.prototype;var Ec=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||kc)};var Pc=function(e,t){return function(C){return e(t(C))}},Tc=Pc(Object.keys,Object),_c=Object.prototype.hasOwnProperty;var Bc=function(e){if(!Ec(e))return Tc(e);var t=[];for(var C in Object(e))_c.call(e,C)&&"constructor"!=C&&t.push(C);return t};var Dc=function(e){return null!=e&&gc(e.length)&&!mA(e)};var Nc=function(e){return Dc(e)?Oc(e):Bc(e)};var Rc=function(e,t){return e&&oc(t,Nc(t),e)};var Fc=function(e){var t=[];if(null!=e)for(var C in Object(e))t.push(C);return t},Ic=Object.prototype.hasOwnProperty;var zc=function(e){if(!cA(e))return Fc(e);var t=Ec(e),C=[];for(var i in e)("constructor"!=i||!t&&Ic.call(e,i))&&C.push(i);return C};var jc=function(e){return Dc(e)?Oc(e,!0):zc(e)};var Gc=function(e,t){return e&&oc(t,jc(t),e)},Wc=fe((function(e,t){var C=t&&!t.nodeType&&t,i=C&&e&&!e.nodeType&&e,H=i&&i.exports===C?VA.Buffer:void 0,n=H?H.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var C=e.length,i=n?n(C):new e.constructor(C);return e.copy(i),i}}));var $c=function(e,t){var C=-1,i=e.length;for(t||(t=Array(i));++Cr))return!1;var o=n.get(e),a=n.get(t);if(o&&a)return o==t&&a==e;var M=-1,s=!0,l=2&C?new Hm:void 0;for(n.set(e,t),n.set(t,e);++M0&&i(L)?C>1?e(L,C-1,i,H,n):eh(n,L):H||(n[n.length]=L)}return n};var kf=function(e,t,C){switch(C.length){case 0:return e.call(t);case 1:return e.call(t,C[0]);case 2:return e.call(t,C[0],C[1]);case 3:return e.call(t,C[0],C[1],C[2])}return e.apply(t,C)},Ef=Math.max;var Pf=function(e,t,C){return t=Ef(void 0===t?e.length-1:t,0),function(){for(var i=arguments,H=-1,n=Ef(i.length-t,0),V=Array(n);++H0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}},Nf=Df(_f);var Rf=function(e,t){return Nf(Pf(e,t,qh),e+"")};var Ff=function(e,t,C,i){for(var H=e.length,n=C+(i?1:-1);i?n--:++n-1};var Wf=function(e,t,C){for(var i=-1,H=null==e?0:e.length;++i=200){var o=t?null:Yf(e);if(o)return om(o);V=!1,H=Vm,L=new Hm}else L=t?[]:r;e:for(;++in){var V=H;H=n,n=V}return H+""+n+""+(tp.isUndefined(i)?"\0":i)}function rp(e,t,C,i){var H=""+t,n=""+C;if(!e&&H>n){var V=H;H=n,n=V}var r={v:H,w:n};return i&&(r.name=i),r}function Lp(e,t){return Vp(e,t.v,t.w,t.name)}ip.prototype._nodeCount=0,ip.prototype._edgeCount=0,ip.prototype.isDirected=function(){return this._isDirected},ip.prototype.isMultigraph=function(){return this._isMultigraph},ip.prototype.isCompound=function(){return this._isCompound},ip.prototype.setGraph=function(e){return this._label=e,this},ip.prototype.graph=function(){return this._label},ip.prototype.setDefaultNodeLabel=function(e){return tp.isFunction(e)||(e=tp.constant(e)),this._defaultNodeLabelFn=e,this},ip.prototype.nodeCount=function(){return this._nodeCount},ip.prototype.nodes=function(){return tp.keys(this._nodes)},ip.prototype.sources=function(){var e=this;return tp.filter(this.nodes(),(function(t){return tp.isEmpty(e._in[t])}))},ip.prototype.sinks=function(){var e=this;return tp.filter(this.nodes(),(function(t){return tp.isEmpty(e._out[t])}))},ip.prototype.setNodes=function(e,t){var C=arguments,i=this;return tp.each(e,(function(e){C.length>1?i.setNode(e,t):i.setNode(e)})),this},ip.prototype.setNode=function(e,t){return tp.has(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]="\0",this._children[e]={},this._children["\0"][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)},ip.prototype.node=function(e){return this._nodes[e]},ip.prototype.hasNode=function(e){return tp.has(this._nodes,e)},ip.prototype.removeNode=function(e){var t=this;if(tp.has(this._nodes,e)){var C=function(e){t.removeEdge(t._edgeObjs[e])};delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],tp.each(this.children(e),(function(e){t.setParent(e)})),delete this._children[e]),tp.each(tp.keys(this._in[e]),C),delete this._in[e],delete this._preds[e],tp.each(tp.keys(this._out[e]),C),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this},ip.prototype.setParent=function(e,t){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(tp.isUndefined(t))t="\0";else{for(var C=t+="";!tp.isUndefined(C);C=this.parent(C))if(C===e)throw new Error("Setting "+t+" as parent of "+e+" would create a cycle");this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this},ip.prototype._removeFromParentsChildList=function(e){delete this._children[this._parent[e]][e]},ip.prototype.parent=function(e){if(this._isCompound){var t=this._parent[e];if("\0"!==t)return t}},ip.prototype.children=function(e){if(tp.isUndefined(e)&&(e="\0"),this._isCompound){var t=this._children[e];if(t)return tp.keys(t)}else{if("\0"===e)return this.nodes();if(this.hasNode(e))return[]}},ip.prototype.predecessors=function(e){var t=this._preds[e];if(t)return tp.keys(t)},ip.prototype.successors=function(e){var t=this._sucs[e];if(t)return tp.keys(t)},ip.prototype.neighbors=function(e){var t=this.predecessors(e);if(t)return tp.union(t,this.successors(e))},ip.prototype.isLeaf=function(e){return 0===(this.isDirected()?this.successors(e):this.neighbors(e)).length},ip.prototype.filterNodes=function(e){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var C=this;tp.each(this._nodes,(function(C,i){e(i)&&t.setNode(i,C)})),tp.each(this._edgeObjs,(function(e){t.hasNode(e.v)&&t.hasNode(e.w)&&t.setEdge(e,C.edge(e))}));var i={};function H(e){var n=C.parent(e);return void 0===n||t.hasNode(n)?(i[e]=n,n):n in i?i[n]:H(n)}return this._isCompound&&tp.each(t.nodes(),(function(e){t.setParent(e,H(e))})),t},ip.prototype.setDefaultEdgeLabel=function(e){return tp.isFunction(e)||(e=tp.constant(e)),this._defaultEdgeLabelFn=e,this},ip.prototype.edgeCount=function(){return this._edgeCount},ip.prototype.edges=function(){return tp.values(this._edgeObjs)},ip.prototype.setPath=function(e,t){var C=this,i=arguments;return tp.reduce(e,(function(e,H){return i.length>1?C.setEdge(e,H,t):C.setEdge(e,H),H})),this},ip.prototype.setEdge=function(){var e,t,C,i,H=!1,n=arguments[0];"object"==typeof n&&null!==n&&"v"in n?(e=n.v,t=n.w,C=n.name,2===arguments.length&&(i=arguments[1],H=!0)):(e=n,t=arguments[1],C=arguments[3],arguments.length>2&&(i=arguments[2],H=!0)),e=""+e,t=""+t,tp.isUndefined(C)||(C=""+C);var V=Vp(this._isDirected,e,t,C);if(tp.has(this._edgeLabels,V))return H&&(this._edgeLabels[V]=i),this;if(!tp.isUndefined(C)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(t),this._edgeLabels[V]=H?i:this._defaultEdgeLabelFn(e,t,C);var r=rp(this._isDirected,e,t,C);return e=r.v,t=r.w,Object.freeze(r),this._edgeObjs[V]=r,Hp(this._preds[t],e),Hp(this._sucs[e],t),this._in[t][V]=r,this._out[e][V]=r,this._edgeCount++,this},ip.prototype.edge=function(e,t,C){var i=1===arguments.length?Lp(this._isDirected,arguments[0]):Vp(this._isDirected,e,t,C);return this._edgeLabels[i]},ip.prototype.hasEdge=function(e,t,C){var i=1===arguments.length?Lp(this._isDirected,arguments[0]):Vp(this._isDirected,e,t,C);return tp.has(this._edgeLabels,i)},ip.prototype.removeEdge=function(e,t,C){var i=1===arguments.length?Lp(this._isDirected,arguments[0]):Vp(this._isDirected,e,t,C),H=this._edgeObjs[i];return H&&(e=H.v,t=H.w,delete this._edgeLabels[i],delete this._edgeObjs[i],np(this._preds[t],e),np(this._sucs[e],t),delete this._in[t][i],delete this._out[e][i],this._edgeCount--),this},ip.prototype.inEdges=function(e,t){var C=this._in[e];if(C){var i=tp.values(C);return t?tp.filter(i,(function(e){return e.v===t})):i}},ip.prototype.outEdges=function(e,t){var C=this._out[e];if(C){var i=tp.values(C);return t?tp.filter(i,(function(e){return e.w===t})):i}},ip.prototype.nodeEdges=function(e,t){var C=this.inEdges(e,t);if(C)return C.concat(this.outEdges(e,t))};var op={Graph:Cp,version:"2.1.8"},ap={write:function(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:Mp(e),edges:sp(e)};tp.isUndefined(e.graph())||(t.value=tp.clone(e.graph()));return t},read:function(e){var t=new Cp(e.options).setGraph(e.value);return tp.each(e.nodes,(function(e){t.setNode(e.v,e.value),e.parent&&t.setParent(e.v,e.parent)})),tp.each(e.edges,(function(e){t.setEdge({v:e.v,w:e.w,name:e.name},e.value)})),t}};function Mp(e){return tp.map(e.nodes(),(function(t){var C=e.node(t),i=e.parent(t),H={v:t};return tp.isUndefined(C)||(H.value=C),tp.isUndefined(i)||(H.parent=i),H}))}function sp(e){return tp.map(e.edges(),(function(t){var C=e.edge(t),i={v:t.v,w:t.w};return tp.isUndefined(t.name)||(i.name=t.name),tp.isUndefined(C)||(i.value=C),i}))}var lp=function(e){var t,C={},i=[];function H(i){tp.has(C,i)||(C[i]=!0,t.push(i),tp.each(e.successors(i),H),tp.each(e.predecessors(i),H))}return tp.each(e.nodes(),(function(e){t=[],H(e),t.length&&i.push(t)})),i};var dp=up;function up(){this._arr=[],this._keyIndices={}}up.prototype.size=function(){return this._arr.length},up.prototype.keys=function(){return this._arr.map((function(e){return e.key}))},up.prototype.has=function(e){return tp.has(this._keyIndices,e)},up.prototype.priority=function(e){var t=this._keyIndices[e];if(void 0!==t)return this._arr[t].priority},up.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},up.prototype.add=function(e,t){var C=this._keyIndices;if(e=String(e),!tp.has(C,e)){var i=this._arr,H=i.length;return C[e]=H,i.push({key:e,priority:t}),this._decrease(H),!0}return!1},up.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key},up.prototype.decrease=function(e,t){var C=this._keyIndices[e];if(t>this._arr[C].priority)throw new Error("New priority is greater than current priority. Key: "+e+" Old: "+this._arr[C].priority+" New: "+t);this._arr[C].priority=t,this._decrease(C)},up.prototype._heapify=function(e){var t=this._arr,C=2*e,i=C+1,H=e;C>1].priority0&&(H=r.removeMin(),(n=V[H]).distance!==Number.POSITIVE_INFINITY);)i(H).forEach(L);return V}(e,String(t),C||cp,i||function(t){return e.outEdges(t)})},cp=tp.constant(1);var hp=function(e,t,C){return tp.transform(e.nodes(),(function(i,H){i[H]=Ap(e,H,t,C)}),{})};var mp=function(e){var t=0,C=[],i={},H=[];function n(V){var r=i[V]={onStack:!0,lowlink:t,index:t++};if(C.push(V),e.successors(V).forEach((function(e){tp.has(i,e)?i[e].onStack&&(r.lowlink=Math.min(r.lowlink,i[e].index)):(n(e),r.lowlink=Math.min(r.lowlink,i[e].lowlink))})),r.lowlink===r.index){var L,o=[];do{L=C.pop(),i[L].onStack=!1,o.push(L)}while(V!==L);H.push(o)}}return e.nodes().forEach((function(e){tp.has(i,e)||n(e)})),H};var fp=function(e){return tp.filter(mp(e),(function(t){return t.length>1||1===t.length&&e.hasEdge(t[0],t[0])}))};var pp=function(e,t,C){return function(e,t,C){var i={},H=e.nodes();return H.forEach((function(e){i[e]={},i[e][e]={distance:0},H.forEach((function(t){e!==t&&(i[e][t]={distance:Number.POSITIVE_INFINITY})})),C(e).forEach((function(C){var H=C.v===e?C.w:C.v,n=t(C);i[e][H]={distance:n,predecessor:e}}))})),H.forEach((function(e){var t=i[e];H.forEach((function(C){var n=i[C];H.forEach((function(C){var i=n[e],H=t[C],V=n[C],r=i.distance+H.distance;r0;){if(C=n.removeMin(),tp.has(H,C))i.setEdge(C,H[C]);else{if(r)throw new Error("Input graph is not connected: "+e);r=!0}e.nodeEdges(C).forEach(V)}return i};var xp,Op={Graph:op.Graph,json:ap,alg:{components:lp,dijkstra:Ap,dijkstraAll:hp,findCycles:fp,floydWarshall:pp,isAcyclic:function(e){try{vp(e)}catch(e){if(e instanceof vp.CycleException)return!1;throw e}return!0},postorder:function(e,t){return Sp(e,t,"post")},preorder:function(e,t){return Sp(e,t,"pre")},prim:wp,tarjan:mp,topsort:vp},version:op.version};try{xp=Op}catch(e){}xp||(xp=window.graphlib);var kp=xp;var Ep=function(e){return zh(e,5)};var Pp=function(e,t,C){if(!cA(C))return!1;var i=typeof t;return!!("number"==i?Dc(C)&&pc(t,C.length):"string"==i&&t in C)&&Wu(C[t],e)},Tp=Object.prototype,_p=Tp.hasOwnProperty,Bp=Rf((function(e,t){e=Object(e);var C=-1,i=t.length,H=i>2?t[2]:void 0;for(H&&Pp(t[0],t[1],H)&&(i=1);++C-1?H[n?t[V]:V]:void 0}},Rp=/\s/;var Fp=function(e){for(var t=e.length;t--&&Rp.test(e.charAt(t)););return t},Ip=/^\s+/;var zp=function(e){return e?e.slice(0,Fp(e)+1).replace(Ip,""):e},jp=/^[-+]0x[0-9a-f]+$/i,Gp=/^0b[01]+$/i,Wp=/^0o[0-7]+$/i,$p=parseInt;var Up=function(e){if("number"==typeof e)return e;if(vm(e))return NaN;if(cA(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=cA(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=zp(e);var C=Gp.test(e);return C||Wp.test(e)?$p(e.slice(2),C?2:8):jp.test(e)?NaN:+e};var Yp=function(e){return e?Infinity===(e=Up(e))||-Infinity===e?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0};var Xp=function(e){var t=Yp(e),C=t%1;return t==t?C?t-C:t:0},qp=Math.max;var Qp=function(e,t,C){var i=null==e?0:e.length;if(!i)return-1;var H=null==C?0:Xp(C);return H<0&&(H=qp(i+H,0)),Ff(e,qm(t),H)},Kp=Np(Qp);var Jp=function(e){return(null==e?0:e.length)?Of(e,1):[]};var eg=function(e,t){return null==e?e:$h(e,Qh(t),jc)};var tg=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0};var Cg=function(e,t){var C={};return t=qm(t),Uh(e,(function(e,i,H){Vc(C,i,t(e,i,H))})),C};var ig=function(e,t,C){for(var i=-1,H=e.length;++it};var ng=function(e){return e&&e.length?ig(e,qh,Hg):void 0};var Vg=function(e,t,C){(void 0!==C&&!Wu(e[t],C)||void 0===C&&!(t in e))&&Vc(e,t,C)},rg=Function.prototype,Lg=Object.prototype,og=rg.toString,ag=Lg.hasOwnProperty,Mg=og.call(Object);var sg=function(e){if(!Mc(e)||"[object Object]"!=AA(e))return!1;var t=th(e);if(null===t)return!0;var C=ag.call(t,"constructor")&&t.constructor;return"function"==typeof C&&C instanceof C&&og.call(C)==Mg};var lg=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]};var dg=function(e){return oc(e,jc(e))};var ug=function(e,t,C,i,H,n,V){var r=lg(e,C),L=lg(t,C),o=V.get(L);if(o)Vg(e,C,o);else{var a=n?n(r,L,C+"",e,t,V):void 0,M=void 0===a;if(M){var s=cc(L),l=!s&&mc(L),d=!s&&!l&&wc(L);a=L,s||l||d?cc(r)?a=r:qf(r)?a=$c(r):l?(M=!1,a=Wc(L,!0)):d?(M=!1,a=xh(L,!0)):a=[]:sg(L)||Ac(L)?(a=r,Ac(r)?a=dg(r):cA(r)&&!mA(r)||(a=Th(L))):M=!1}M&&(V.set(L,a),H(a,L,i,n,V),V.delete(L)),Vg(e,C,a)}};var Ag=function e(t,C,i,H,n){t!==C&&$h(C,(function(V,r){if(n||(n=new Cc),cA(V))ug(t,C,r,i,e,H,n);else{var L=H?H(lg(t,r),V,r+"",t,C,n):void 0;void 0===L&&(L=V),Vg(t,r,L)}}),jc)};var cg=function(e){return Rf((function(t,C){var i=-1,H=C.length,n=H>1?C[H-1]:void 0,V=H>2?C[2]:void 0;for(n=e.length>3&&"function"==typeof n?(H--,n):void 0,V&&Pp(C[0],C[1],V)&&(n=H<3?void 0:n,H=1),t=Object(t);++it||n&&V&&L&&!r&&!o||i&&V&&L||!C&&L||!H)return 1;if(!i&&!n&&!o&&e=r?L:L*("desc"==C[i]?-1:1)}return e.index-t.index};var Ng=function(e,t,C){t=t.length?Tm(t,(function(e){return cc(e)?function(t){return Im(t,1===e.length?e[0]:e)}:e})):[qh];var i=-1;t=Tm(t,Zc(qm));var H=nf(e,(function(e,C,H){return{criteria:Tm(t,(function(t){return t(e)})),index:++i,value:e}}));return _g(H,(function(e,t){return Dg(e,t,C)}))},Rg=Rf((function(e,t){if(null==e)return[];var C=t.length;return C>1&&Pp(e,t[0],t[1])?t=[]:C>2&&Pp(t[0],t[1],t[2])&&(t=[t[0]]),Ng(e,Of(t,1),[])})),Fg=Rg,Ig=0;var zg=function(e){var t=++Ig;return Nm(e)+t};var jg=function(e,t,C){for(var i=-1,H=e.length,n=t.length,V={};++i0;--r)if(i=t[r].dequeue()){H=H.concat(ev(e,t,C,i,!0));break}}return H}(C.graph,C.buckets,C.zeroIdx);return $g.flatten($g.map(i,(function(t){return e.outEdges(t.v,t.w)})),!0)},Jg=$g.constant(1);function ev(e,t,C,i,H){var n=H?[]:void 0;return $g.forEach(e.inEdges(i.v),(function(i){var V=e.edge(i),r=e.node(i.v);H&&n.push({v:i.v,w:i.w}),r.out-=V,tv(t,C,r)})),$g.forEach(e.outEdges(i.v),(function(i){var H=e.edge(i),n=i.w,V=e.node(n);V.in-=H,tv(t,C,V)})),e.removeNode(i.v),n}function tv(e,t,C){C.out?C.in?e[C.out-C.in+t].enqueue(C):e[e.length-1].enqueue(C):e[0].enqueue(C)}var Cv={run:function(e){var t="greedy"===e.graph().acyclicer?Kg(e,function(e){return function(t){return e.edge(t).weight}}(e)):function(e){var t=[],C={},i={};function H(n){$g.has(i,n)||(i[n]=!0,C[n]=!0,$g.forEach(e.outEdges(n),(function(e){$g.has(C,e.w)?t.push(e):H(e.w)})),delete C[n])}return $g.forEach(e.nodes(),H),t}(e);$g.forEach(t,(function(t){var C=e.edge(t);e.removeEdge(t),C.forwardName=t.name,C.reversed=!0,e.setEdge(t.w,t.v,C,$g.uniqueId("rev"))}))},undo:function(e){$g.forEach(e.edges(),(function(t){var C=e.edge(t);if(C.reversed){e.removeEdge(t);var i=C.forwardName;delete C.reversed,delete C.forwardName,e.setEdge(t.w,t.v,C,i)}}))}};var iv=kp.Graph,Hv={addDummyNode:nv,simplify:function(e){var t=(new iv).setGraph(e.graph());return $g.forEach(e.nodes(),(function(C){t.setNode(C,e.node(C))})),$g.forEach(e.edges(),(function(C){var i=t.edge(C.v,C.w)||{weight:0,minlen:1},H=e.edge(C);t.setEdge(C.v,C.w,{weight:i.weight+H.weight,minlen:Math.max(i.minlen,H.minlen)})})),t},asNonCompoundGraph:function(e){var t=new iv({multigraph:e.isMultigraph()}).setGraph(e.graph());return $g.forEach(e.nodes(),(function(C){e.children(C).length||t.setNode(C,e.node(C))})),$g.forEach(e.edges(),(function(C){t.setEdge(C,e.edge(C))})),t},successorWeights:function(e){var t=$g.map(e.nodes(),(function(t){var C={};return $g.forEach(e.outEdges(t),(function(t){C[t.w]=(C[t.w]||0)+e.edge(t).weight})),C}));return $g.zipObject(e.nodes(),t)},predecessorWeights:function(e){var t=$g.map(e.nodes(),(function(t){var C={};return $g.forEach(e.inEdges(t),(function(t){C[t.v]=(C[t.v]||0)+e.edge(t).weight})),C}));return $g.zipObject(e.nodes(),t)},intersectRect:function(e,t){var C,i,H=e.x,n=e.y,V=t.x-H,r=t.y-n,L=e.width/2,o=e.height/2;if(!V&&!r)throw new Error("Not possible to find intersection inside of the rectangle");Math.abs(r)*L>Math.abs(V)*o?(r<0&&(o=-o),C=o*V/r,i=o):(V<0&&(L=-L),C=L,i=L*r/V);return{x:H+C,y:n+i}},buildLayerMatrix:function(e){var t=$g.map($g.range(Vv(e)+1),(function(){return[]}));return $g.forEach(e.nodes(),(function(C){var i=e.node(C),H=i.rank;$g.isUndefined(H)||(t[H][i.order]=C)})),t},normalizeRanks:function(e){var t=$g.min($g.map(e.nodes(),(function(t){return e.node(t).rank})));$g.forEach(e.nodes(),(function(C){var i=e.node(C);$g.has(i,"rank")&&(i.rank-=t)}))},removeEmptyRanks:function(e){var t=$g.min($g.map(e.nodes(),(function(t){return e.node(t).rank}))),C=[];$g.forEach(e.nodes(),(function(i){var H=e.node(i).rank-t;C[H]||(C[H]=[]),C[H].push(i)}));var i=0,H=e.graph().nodeRankFactor;$g.forEach(C,(function(t,C){$g.isUndefined(t)&&C%H!=0?--i:i&&$g.forEach(t,(function(t){e.node(t).rank+=i}))}))},addBorderNode:function(e,t,C,i){var H={width:0,height:0};arguments.length>=4&&(H.rank=C,H.order=i);return nv(e,"border",H,t)},maxRank:Vv,partition:function(e,t){var C={lhs:[],rhs:[]};return $g.forEach(e,(function(e){t(e)?C.lhs.push(e):C.rhs.push(e)})),C},time:function(e,t){var C=$g.now();try{return t()}finally{console.log(e+" time: "+($g.now()-C)+"ms")}},notime:function(e,t){return t()}};function nv(e,t,C,i){var H;do{H=$g.uniqueId(i)}while(e.hasNode(H));return C.dummy=t,e.setNode(H,C),H}function Vv(e){return $g.max($g.map(e.nodes(),(function(t){var C=e.node(t).rank;if(!$g.isUndefined(C))return C})))}var rv={run:function(e){e.graph().dummyChains=[],$g.forEach(e.edges(),(function(t){!function(e,t){var C,i,H,n=t.v,V=e.node(n).rank,r=t.w,L=e.node(r).rank,o=t.name,a=e.edge(t),M=a.labelRank;if(L===V+1)return;for(e.removeEdge(t),H=0,++V;VV.lim&&(r=V,L=!0);var o=$g.filter(t.edges(),(function(t){return L===Ov(e,e.node(t.v),r)&&L!==Ov(e,e.node(t.w),r)}));return $g.minBy(o,(function(e){return Av(t,e)}))}function xv(e,t,C,i){var H=C.v,n=C.w;e.removeEdge(H,n),e.setEdge(i.v,i.w,{}),Zv(e),vv(e,t),function(e,t){var C=$g.find(e.nodes(),(function(e){return!t.node(e).parent})),i=hv(e,C);i=i.slice(1),$g.forEach(i,(function(C){var i=e.node(C).parent,H=t.edge(C,i),n=!1;H||(H=t.edge(i,C),n=!0),t.node(C).rank=t.node(i).rank+(n?H.minlen:-H.minlen)}))}(e,t)}function Ov(e,t,C){return C.low<=t.lim&&t.lim<=C.lim}gv.initLowLimValues=Zv,gv.initCutValues=vv,gv.calcCutValue=yv,gv.leaveEdge=bv,gv.enterEdge=wv,gv.exchangeEdges=xv;var kv=Lv,Ev=function(e){if("function"==typeof e.graph().ranker)e.graph().ranker(e);else switch(e.graph().ranker){case"network-simplex":default:Tv(e);break;case"tight-tree":!function(e){kv(e),sv(e)}(e);break;case"longest-path":Pv(e)}};var Pv=kv;function Tv(e){pv(e)}var _v=function(e){var t=function(e){var t={},C=0;function i(H){var n=C;$g.forEach(e.children(H),i),t[H]={low:n,lim:C++}}return $g.forEach(e.children(),i),t}(e);$g.forEach(e.graph().dummyChains,(function(C){for(var i=e.node(C),H=i.edgeObj,n=function(e,t,C,i){var H,n,V=[],r=[],L=Math.min(t[C].low,t[i].low),o=Math.max(t[C].lim,t[i].lim);H=C;do{H=e.parent(H),V.push(H)}while(H&&(t[H].low>L||o>t[H].lim));n=H,H=i;for(;(H=e.parent(H))!==n;)r.push(H);return{path:V.concat(r.reverse()),lca:n}}(e,t,H.v,H.w),V=n.path,r=n.lca,L=0,o=V[L],a=!0;C!==H.w;){if(i=e.node(C),a){for(;(o=V[L])!==r&&e.node(o).maxRank0;)t%2&&(C+=r[t+1]),r[t=t-1>>1]+=e.weight;L+=e.weight*C}))),L}var Yv=function(e,t){return $g.map(t,(function(t){var C=e.inEdges(t);if(C.length){var i=$g.reduce(C,(function(t,C){var i=e.edge(C),H=e.node(C.v);return{sum:t.sum+i.weight*H.order,weight:t.weight+i.weight}}),{sum:0,weight:0});return{v:t,barycenter:i.sum/i.weight,weight:i.weight}}return{v:t}}))};var Xv=function(e,t){var C={};return $g.forEach(e,(function(e,t){var i=C[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:t};$g.isUndefined(e.barycenter)||(i.barycenter=e.barycenter,i.weight=e.weight)})),$g.forEach(t.edges(),(function(e){var t=C[e.v],i=C[e.w];$g.isUndefined(t)||$g.isUndefined(i)||(i.indegree++,t.out.push(C[e.w]))})),function(e){var t=[];function C(e){return function(t){t.merged||($g.isUndefined(t.barycenter)||$g.isUndefined(e.barycenter)||t.barycenter>=e.barycenter)&&function(e,t){var C=0,i=0;e.weight&&(C+=e.barycenter*e.weight,i+=e.weight);t.weight&&(C+=t.barycenter*t.weight,i+=t.weight);e.vs=t.vs.concat(e.vs),e.barycenter=C/i,e.weight=i,e.i=Math.min(t.i,e.i),t.merged=!0}(e,t)}}function i(t){return function(C){C.in.push(t),0==--C.indegree&&e.push(C)}}for(;e.length;){var H=e.pop();t.push(H),$g.forEach(H.in.reverse(),C(H)),$g.forEach(H.out,i(H))}return $g.map($g.filter(t,(function(e){return!e.merged})),(function(e){return $g.pick(e,["vs","i","barycenter","weight"])}))}($g.filter(C,(function(e){return!e.indegree})))};var qv=function(e,t){var C=Hv.partition(e,(function(e){return $g.has(e,"barycenter")})),i=C.lhs,H=$g.sortBy(C.rhs,(function(e){return-e.i})),n=[],V=0,r=0,L=0;i.sort((o=!!t,function(e,t){return e.barycentert.barycenter?1:o?t.i-e.i:e.i-t.i})),L=Qv(n,H,L),$g.forEach(i,(function(e){L+=e.vs.length,n.push(e.vs),V+=e.barycenter*e.weight,r+=e.weight,L=Qv(n,H,L)}));var o;var a={vs:$g.flatten(n,!0)};r&&(a.barycenter=V/r,a.weight=r);return a};function Qv(e,t,C){for(var i;t.length&&(i=$g.last(t)).i<=C;)t.pop(),e.push(i.vs),C++;return C}var Kv=function e(t,C,i,H){var n=t.children(C),V=t.node(C),r=V?V.borderLeft:void 0,L=V?V.borderRight:void 0,o={};r&&(n=$g.filter(n,(function(e){return e!==r&&e!==L})));var a=Yv(t,n);$g.forEach(a,(function(C){if(t.children(C.v).length){var n=e(t,C.v,i,H);o[C.v]=n,$g.has(n,"barycenter")&&(V=C,r=n,$g.isUndefined(V.barycenter)?(V.barycenter=r.barycenter,V.weight=r.weight):(V.barycenter=(V.barycenter*V.weight+r.barycenter*r.weight)/(V.weight+r.weight),V.weight+=r.weight))}var V,r}));var M=Xv(a,i);!function(e,t){$g.forEach(e,(function(e){e.vs=$g.flatten(e.vs.map((function(e){return t[e]?t[e].vs:e})),!0)}))}(M,o);var s=qv(M,H);if(r&&(s.vs=$g.flatten([r,s.vs,L],!0),t.predecessors(r).length)){var l=t.node(t.predecessors(r)[0]),d=t.node(t.predecessors(L)[0]);$g.has(s,"barycenter")||(s.barycenter=0,s.weight=0),s.barycenter=(s.barycenter*s.weight+l.order+d.order)/(s.weight+2),s.weight+=2}return s};var Jv=kp.Graph,ey=function(e,t,C){var i=function(e){var t;for(;e.hasNode(t=$g.uniqueId("_root")););return t}(e),H=new Jv({compound:!0}).setGraph({root:i}).setDefaultNodeLabel((function(t){return e.node(t)}));return $g.forEach(e.nodes(),(function(n){var V=e.node(n),r=e.parent(n);(V.rank===t||V.minRank<=t&&t<=V.maxRank)&&(H.setNode(n),H.setParent(n,r||i),$g.forEach(e[C](n),(function(t){var C=t.v===n?t.w:t.v,i=H.edge(C,n),V=$g.isUndefined(i)?0:i.weight;H.setEdge(C,n,{weight:e.edge(t).weight+V})})),$g.has(V,"minRank")&&H.setNode(n,{borderLeft:V.borderLeft[t],borderRight:V.borderRight[t]}))})),H};var ty=function(e,t,C){var i,H={};$g.forEach(C,(function(C){for(var n,V,r=e.parent(C);r;){if((n=e.parent(r))?(V=H[n],H[n]=r):(V=i,i=r),V&&V!==r)return void t.setEdge(V,r);r=n}}))};var Cy=kp.Graph,iy=function(e){var t=Hv.maxRank(e),C=Hy(e,$g.range(1,t+1),"inEdges"),i=Hy(e,$g.range(t-1,-1,-1),"outEdges"),H=Wv(e);Vy(e,H);for(var n,V=Number.POSITIVE_INFINITY,r=0,L=0;L<4;++r,++L){ny(r%2?C:i,r%4>=2),H=Hv.buildLayerMatrix(e);var o=$v(e,H);oV)&&My(C,t,r)}))}))}return $g.reduce(t,(function(t,C){var H,n=-1,V=0;return $g.forEach(C,(function(r,L){if("border"===e.node(r).dummy){var o=e.predecessors(r);o.length&&(H=e.node(o[0]).order,i(C,V,L,n,H),V=L,n=H)}i(C,V,C.length,H,t.length)})),C})),C}function My(e,t,C){if(t>C){var i=t;t=C,C=i}var H=e[t];H||(e[t]=H={}),H[C]=!0}function sy(e,t,C){if(t>C){var i=t;t=C,C=i}return $g.has(e[t],C)}function ly(e,t,C,i){var H={},n={},V={};return $g.forEach(t,(function(e){$g.forEach(e,(function(e,t){H[e]=e,n[e]=e,V[e]=t}))})),$g.forEach(t,(function(e){var t=-1;$g.forEach(e,(function(e){var r=i(e);if(r.length){r=$g.sortBy(r,(function(e){return V[e]}));for(var L=(r.length-1)/2,o=Math.floor(L),a=Math.ceil(L);o<=a;++o){var M=r[o];n[e]===e&&t1?t-1:0),i=1;i=(n=(u+c)/2))?u=n:c=n,(a=C>=(V=(A+h)/2))?A=V:h=V,H=l,!(l=l[M=a<<1|o]))return H[M]=d,e;if(r=+e._x.call(null,l.data),L=+e._y.call(null,l.data),t===r&&C===L)return d.next=l,H?H[M]=d:e._root=d,e;do{H=H?H[M]=new Array(4):e._root=new Array(4),(o=t>=(n=(u+c)/2))?u=n:c=n,(a=C>=(V=(A+h)/2))?A=V:h=V}while((M=a<<1|o)==(s=(L>=V)<<1|r>=n));return H[s]=l,H[M]=d,e}function i(e){var t,i,H,n,V=e.length,r=new Array(V),L=new Array(V),o=1/0,a=1/0,M=-1/0,s=-1/0;for(i=0;iM&&(M=H),ns&&(s=n));if(o>M||a>s)return this;for(this.cover(o,a).cover(M,s),i=0;ie||e>=H||i>t||t>=n;)switch(r=(tl||(n=o.y0)>d||(V=o.x1)=h)<<1|e>=c)&&(o=u[u.length-1],u[u.length-1]=u[u.length-1-a],u[u.length-1-a]=o)}else{var m=e-+this._x.call(null,A.data),f=t-+this._y.call(null,A.data),p=m*m+f*f;if(p=(r=(d+A)/2))?d=r:A=r,(a=V>=(L=(u+c)/2))?u=L:c=L,t=l,!(l=l[M=a<<1|o]))return this;if(!l.length)break;(t[M+1&3]||t[M+2&3]||t[M+3&3])&&(C=t,s=M)}for(;l.data!==e;)if(i=l,!(l=l.next))return this;return(H=l.next)&&delete l.next,i?(H?i.next=H:delete i.next,this):t?(H?t[M]=H:delete t[M],(l=t[0]||t[1]||t[2]||t[3])&&l===(t[3]||t[2]||t[1]||t[0])&&!l.length&&(C?C[s]=l:this._root=l),this):(this._root=H,this)}function a(e){for(var t=0,C=e.length;t{}};function C(){for(var e,t=0,C=arguments.length,H={};t=0&&(C=e.slice(i+1),e=e.slice(0,i)),e&&!t.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:C}}))}function n(e,t){for(var C,i=0,H=e.length;i0)for(var C,i,H=new Array(C),n=0;n=0&&C._call.call(null,e),C=C._next;--i}function c(){L=(r=a.now())+o,i=H=0;try{A()}finally{i=0,m(),L=0}}function h(){var e=a.now(),t=e-r;t>V&&(o-=t,r=e)}function m(){for(var e,i,H=t,n=1/0;H;)H._call?(n>H._time&&(n=H._time),e=H,H=H._next):(i=H._next,H._next=null,H=e?e._next=i:t=i);C=e,f(n)}function f(e){i||(H&&(H=clearTimeout(H)),e-L>24?(e<1/0&&(H=setTimeout(c,e-a.now()-o)),n&&(n=clearInterval(n))):(n||(r=a.now(),n=setInterval(h,V)),i=1,M(c)))}function p(e,t,C){var i=new d;return t=null==t?0:+t,i.restart((C=>{i.stop(),e(C+t)}),t,C),i}function g(e,t,C){var i=new d,H=t;return null==t?(i.restart(e,t,C),i):(i._restart=i.restart,i.restart=function(e,t,C){t=+t,C=null==C?s():+C,i._restart((function n(V){V+=H,i._restart(n,H+=t,C),e(V)}),t,C)},i.restart(e,t,C),i)}d.prototype=u.prototype={constructor:d,restart:function(e,i,H){if("function"!=typeof e)throw new TypeError("callback is not a function");H=(null==H?s():+H)+(null==i?0:+i),this._next||C===this||(C?C._next=this:t=this,C=this),this._call=e,this._time=H,f()},stop:function(){this._call&&(this._call=null,this._time=1/0,f())}},e.interval=g,e.now=s,e.timeout=p,e.timer=u,e.timerFlush=A,Object.defineProperty(e,"__esModule",{value:!0})}(t)})),zy=fe((function(e,t){!function(e,t,C,i){function H(e,t){var C,i=1;function H(){var H,n,V=C.length,r=0,L=0;for(H=0;Hl+a||id+a||nM.index){var s=l-r.x-r.vx,c=d-r.y-r.vy,h=s*s+c*c;he.r&&(e.r=e[t].r)}function l(){if(C){var t,H,n=C.length;for(i=new Array(n),t=0;t[o(e,t,i),e])));for(n=0,H=new Array(L);n(e=(l*e+d)%u)/u}function c(e){return e.x}function h(e){return e.y}var m=10,f=Math.PI*(3-Math.sqrt(5));function p(e){var t,H=1,n=.001,V=1-Math.pow(n,1/300),r=0,L=.6,o=new Map,a=i.timer(l),M=C.dispatch("tick","end"),s=A();function l(){d(),M.call("tick",t),H1?(null==C?o.delete(e):o.set(e,c(C)),t):o.get(e)},find:function(t,C,i){var H,n,V,r,L,o=0,a=e.length;for(null==i?i=1/0:i*=i,o=0;o1?(M.on(e,C),t):M.on(e)}}}function g(){var e,C,i,H,r,L=n(-30),o=1,a=1/0,M=.81;function s(i){var n,V=e.length,r=t.quadtree(e,c,h).visitAfter(d);for(H=i,n=0;n=a)){(e.data!==C||e.next)&&(0===s&&(u+=(s=V(i))*s),0===l&&(u+=(l=V(i))*l),u1?1:H)>=1?this.end(!e.infinite):(e.tick&&e.tick(H),e.animate&&this.refreshPositions(e.nodes,e,e.fit))}},{key:"end",value:function(e){var t=this.state;this.refreshPositions(t.nodes,t,t.fit),this.emit("layoutstop",t.cy),this.reset(e)}},{key:"reset",value:function(e){this.simulation&&this.simulation.stop();var t=this.state;return this.destroyedEvent&&this.destroyedEvent(),(e||!t.infinite)&&this.removeCytoscapeEvents&&this.removeCytoscapeEvents(),t.animate&&this.regrabify(t.nodes),this}},{key:"run",value:function(){var e=this;this.reset();var t,C=this,i=this.state,H=!1;if(i.currentBoundingBox=this.makeBoundingBox(i.boundingBox,i.cy),i.ready&&C.one("layoutready",i.ready),i.stop&&C.one("layoutstop",i.stop),i.nodes.forEach((function(t){return e.setInitialPositionState(t,i)})),H||(H=!0,C.emit("layoutready")),!C.simulation){var r=i.nodes.map((function(e){return V(C.getScratch(e),e.data())})),L=i.edges.map((function(e){return V({},e.data())}));C.simulation=n.forceSimulation(r),i.alpha&&C.simulation.alpha(i.alpha),i.alphaMin&&C.simulation.alphaMin(i.alphaMin),i.alphaDecay&&C.simulation.alphaDecay(i.alphaDecay),i.alphaTarget&&C.simulation.alphaTarget(i.alphaTarget),i.velocityDecay&&C.simulation.velocityDecay(i.velocityDecay);var o=n.forceCollide();i.collideRadius&&o.radius(i.collideRadius),i.collideStrength&&o.strength(i.collideStrength),i.collideIterations&&o.iterations(i.collideIterations);var a=n.forceLink(L);i.linkId&&a.id(i.linkId),i.linkDistance&&a.distance(i.linkDistance),i.linkStrength&&a.strength(i.linkStrength),i.linkIterations&&a.iterations(i.linkIterations);var M=n.forceManyBody();i.manyBodyStrength&&M.strength(i.manyBodyStrength),i.manyBodyTheta&&M.theta(i.manyBodyTheta),i.manyBodyDistanceMin&&M.distanceMin(i.manyBodyDistanceMin),i.manyBodyDistanceMax&&M.distanceMax(i.manyBodyDistanceMax);var s=n.forceX();i.xX&&s.x(i.xX),i.xStrength&&s.strength(i.xStrength);var l=n.forceY();i.yY&&l.y(i.yY),i.yStrength&&l.strength(i.yStrength);var d=null;(i.radialRadius||i.radialStrength||i.radialX||i.radialY)&&(d=n.forceRadial(),i.radialRadius&&d.radius(i.radialRadius),i.radialStrength&&d.strength(i.radialStrength),i.radialX&&d.x(i.radialX),i.radialY&&d.y(i.radialY));var u=n.forceCenter(i.currentBoundingBox.w/2,i.currentBoundingBox.h/2);C.simulation.force("collide",o).force("link",a).force("many-body",M).force("x",s).force("y",l).force("center",u),d&&C.simulation.force("radius",d),C.simulation.on("tick",(function(){C.tick()})).on("end",(function(){C.end()}))}C.destroyedEvent||(i.cy.one("destroy",t=function(){C.stop()}),C.destroyedEvent=function(){i.cy.off("destroy",t),C.destroyedEvent=null});if(C.prerun(i),C.emit("layoutstart"),i.progress=0,i.iterations=0,i.startTime=Date.now(),i.animate){var A=Math.abs((i.alpha||1)-(i.alphaTarget||0))/3;if(!C.removeCytoscapeEvents){var c=function(e){var t=this,H=t.position();if(e.cyTarget===t||e.target===t){var n=C.getScratch(t);i.progress=0,i.iterations=0,i.startTime=Date.now(),n.x=H.x,n.y=H.y,"grab"===e.type?C.simulation.alphaTarget(A).restart():"unlock"===e.type||"free"===e.type?(i.fixedAfterDragging?(n.fx=H.x,n.fy=H.y):(delete n.fx,delete n.fy),C.simulation.alphaTarget(A).restart()):(n.fx=H.x,n.fy=H.y)}};C.removeCytoscapeEvents=function(){i.nodes.off("grab free drag lock unlock",c),C.removeCytoscapeEvents=null},i.nodes.on("grab free drag lock unlock",c)}C.ungrabify(i.nodes)}return C.postrun(i),this}},{key:"prerun",value:function(){}},{key:"postrun",value:function(){}},{key:"stop",value:function(){return this.reset(!0)}}]),e}();e.exports=r},function(e,t,C){e.exports=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments.length,C=Array(t>1?t-1:0),i=1;in+t.spotlightPadding?n+t.spotlightPadding:t.indicatorSize;c.beginPath(),c.fillRect(-s/2,-s/2,s,s),c.closePath(),c.fill(),c.rotate(-M),c.translate(-o,-a),c.beginPath(),c.arc(i+t.activePadding,i+t.activePadding,n+t.spotlightPadding,0,2*Math.PI,!0),c.closePath(),c.fill(),c.globalCompositeOperation="source-over"}function Z(){var e=o(),t=m,C=m;u.width=t*e,u.height=C*e,u.style.width=t+"px",u.style.height=C+"px",c.setTransform(1,0,0,1,0,0),c.scale(e,e)}n.insertBefore(l,n.firstChild),l.appendChild(d),d.appendChild(u),r(l,{position:"absolute",zIndex:t.zIndex,userSelect:"none",pointerEvents:"none"}),["mousedown","mousemove","mouseup","contextmenu"].forEach((function(e){l.addEventListener(e,(function(e){return e.preventDefault(),!1}))})),r(d,{display:"none",width:m+"px",height:m+"px",position:"absolute",zIndex:1,marginLeft:-t.activePadding+"px",marginTop:-t.activePadding+"px",userSelect:"none"}),u.width=m,u.height=m;var S=!0,b={},w=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(e){return setTimeout(e,16)};Z(),function e(){b.drawBg&&v.apply(null,b.drawBg),b.drawCommands&&y.apply(null,b.drawCommands),b={},S&&w(e)}();var x,O,k,E,P,T,_,B,D=void 0,N=void 0,R=void 0,F={on:function(e,t,i){var H=i;return"core"===t&&(H=function(e){if(e.cyTarget===C||e.target===C)return i.apply(this,[e])}),s.handlers.push({events:e,selector:t,fn:H}),"core"===t?C.on(e,H):C.on(e,t,H),this}};function I(){S=!1,function(){for(var e=s.handlers,t=0;t0,H=(i?C.touches[0].pageX:C.pageX)-window.pageXOffset,n=(i?C.touches[0].pageY:C.pageY)-window.pageYOffset;f=void 0;var V=H-p.left-D,r=n-p.top-N;0===V&&(V=.01);var L=Math.sqrt(V*V+r*r),o=(r*r-L*L-V*V)/(-2*L*V),a=Math.acos(o),s=void 0;if(M&&M.isNode instanceof Function&&M.isNode()&&!M.isParent()&&!t.atMouse?(s=M.renderedOuterWidth(),R=s/2,R=!t.adaptativeNodeSpotlightRadius&&t.minSpotlightRadius?Math.max(R,t.minSpotlightRadius):R,R=!t.adaptativeNodeSpotlightRadius&&t.maxSpotlightRadius?Math.min(R,t.maxSpotlightRadius):R):(R=(s=1)/2,R=t.minSpotlightRadius?Math.max(R,t.minSpotlightRadius):R,R=t.maxSpotlightRadius?Math.min(R,t.maxSpotlightRadius):R),h=s/2+(t.menuRadius instanceof Function?t.menuRadius(M):Number(t.menuRadius)),Lh+t.activePadding+t.outsideMenuCancel)g(h,R);else{g(h,R);var l=V*h/L,d=r*h/L;r>0&&(a=Math.PI+Math.abs(a-Math.PI));for(var u=2*Math.PI/A.length,c=Math.PI/2,m=c+u,v=0;v1?t-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:document,C=t.querySelectorAll(e),i=0;ie.data("name").localeCompare(t.data("name"));function CZ(e,t,C){let{name:i}=t,{nodes:H}=t,{onClickText:n}=t,{onClickButton:V}=t,{icon:r=null}=t,{icon_tooltip:L=null}=t,{ctxmenu:o}=t,a=!0;return e.$$set=e=>{"name"in e&&C(0,i=e.name),"nodes"in e&&C(1,H=e.nodes),"onClickText"in e&&C(2,n=e.onClickText),"onClickButton"in e&&C(3,V=e.onClickButton),"icon"in e&&C(4,r=e.icon),"icon_tooltip"in e&&C(5,L=e.icon_tooltip),"ctxmenu"in e&&C(6,o=e.ctxmenu)},[i,H,n,V,r,L,o,a,function(){C(7,a=!a)},(e,t)=>n(e,t),(e,t)=>o(e,t)]}class iZ extends te{constructor(e){super(),ee(this,e,CZ,eZ,A,{name:0,nodes:1,onClickText:2,onClickButton:3,icon:4,icon_tooltip:5,ctxmenu:6})}}function HZ(e){let t,C,i,H,n;return C=new iZ({props:{nodes:e[0],name:"Nodes in graph",ctxmenu:e[2],onClickText:e[3]}}),H=new iZ({props:{nodes:e[1],name:"Hidden nodes",ctxmenu:e[2],onClickText:e[3],icon:ca.ag_unhide,icon_tooltip:"Show in graph",onClickButton:e[4]}}),{c(){t=v("div"),q(C.$$.fragment),i=S(),q(H.$$.fragment),x(t,"class","juggl-nodes-pane")},m(e,V){f(e,t,V),Q(C,t,null),m(t,i),Q(H,t,null),n=!0},p(e,[t]){const i={};1&t&&(i.nodes=e[0]),C.$set(i);const n={};2&t&&(n.nodes=e[1]),H.$set(n)},i(e){n||(Y(C.$$.fragment,e),Y(H.$$.fragment,e),n=!0)},o(e){X(C.$$.fragment,e),X(H.$$.fragment,e),n=!1},d(e){e&&p(t),K(C),K(H)}}}function nZ(t,C,i){let H=null,V=Wo().collection(),r=Wo().collection();return[V,r,function(t,C){const i=new e.Menu,V=n.fromNode(t),r=H.plugin.metadata.getFirstLinkpathDest(V.id,"");void 0!==r&&H.plugin.app.workspace.trigger("file-menu",i,r,"my-context-menu",null),H.mode.fillMenu(i,t),i.showAtPosition({x:C.x,y:C.y})},function(e,t){H.plugin.openFileFromNode(e,t.metaKey)},function(e){e.removeClass("hard-filtered"),H.onGraphChanged(!0,!0)},function(e){if(!e)return H=null,i(0,V=Wo().collection()),void i(1,r=Wo().collection());H=e,i(0,V=H.viz.nodes(":visible")),i(1,r=H.viz.nodes(".hard-filtered"))}]}class VZ extends te{constructor(e){super(),ee(this,e,nZ,HZ,A,{setViz:5})}get setViz(){return this.$$.ctx[5]}}class rZ extends e.FuzzySuggestModal{constructor(e,t,C){super(e),this.callback=t,this.resultContainerEl.addClass("juggl-icon-picker"),this.color=C}getItemText(e){return e.name}getItems(){const e=[{name:"No icon",path:"",color:this.color}];return e.push(...Object.keys(ua).map((e=>({name:e.slice(3).replace(/([A-Z])/g," $1").trim(),path:ua[e],color:this.color})))),e}onChooseItem(e,t){this.callback(e)}renderSuggestion(e,t){t.empty();const C=Aa(e.item.path);t.createEl("span",{cls:"react-icon "}).innerHTML=C,super.renderSuggestion(e,t)}}function LZ(e,t,C){const i=e.slice();return i[15]=t[C],i[16]=t,i[17]=C,i}function oZ(e,t,C){const i=e.slice();return i[18]=t[C],i}function aZ(e){let t,C,i,H,n,V,r,L,o=e[15].filter+"";return{c(){t=v("div"),C=v("div"),C.innerHTML='',i=S(),H=Z(o),n=S(),V=v("br"),x(C,"class","clickable-icon"),E(C,"display","inline"),x(C,"aria-label","Show group options"),x(t,"class","juggl-style-group-hidden")},m(o,a){f(o,t,a),m(t,C),m(t,i),m(t,H),f(o,n,a),f(o,V,a),r||(L=w(C,"click",(function(){u(e[7](e[15],!0))&&e[7](e[15],!0).apply(this,arguments)})),r=!0)},p(t,C){e=t,1&C&&o!==(o=e[15].filter+"")&&O(H,o)},d(e){e&&p(t),e&&p(n),e&&p(V),r=!1,L()}}}function MZ(e){let t,C,i,H,n,V,r,L,o,a,M,s,l,A,c,h,b,E,T,_,B,D,N,R,F,z,j,G,W,$,U,Y,X,q,Q,K=Math.round(100*e[15].size)/100+"";function J(){e[10].call(M,e[16],e[17])}function ee(){e[11].call(E,e[16],e[17])}let te=ie,Ce=[];for(let t=0;t',H=S(),n=v("div"),V=y("svg"),r=y("path"),a=S(),M=v("input"),s=S(),l=v("div"),l.innerHTML='',A=S(),c=v("div"),h=S(),b=v("div"),E=v("input"),T=S(),_=v("select");for(let e=0;eNew group',x(t,"class","juggl-list-header"),x(V,"class","graph-color-button-container"),x(H,"class","juggl-style-group-container")},m(o,M){f(o,t,M),m(t,C),f(o,i,M),f(o,H,M);for(let e=0;e{"groups"in e&&C(0,i=e.groups),"title"in e&&C(1,H=e.title),"onChangeFilter"in e&&C(2,n=e.onChangeFilter),"onChangeGroups"in e&&C(3,V=e.onChangeGroups),"plugin"in e&&C(9,r=e.plugin)},[i,H,n,V,function(){i.push({...de}),C(0,i),V()},function(e){i.remove(e),C(0,i),n(),V()},function(e){new rZ(r.app,(function(t){e.icon=t,V(),C(0,i)}),e.icon.color).open()},function(e,t){e.showInPane=t,C(0,i)},function(e){e.show=!e.show,V(),C(0,i)},r,function(e,t){e[t].filter=this.value,C(0,i)},function(e,t){e[t].color=this.value,C(0,i)},function(e,t){e[t].shape=function(e){const t=e.querySelector(":checked")||e.options[0];return t&&t.__value}(this),C(0,i)},function(e,t){e[t].icon.color=this.value,C(0,i)},function(e,t){var H;e[t].size=""===(H=this.value)?null:+H,C(0,i)}]}class mZ extends te{constructor(e){super(),ee(this,e,hZ,cZ,A,{groups:0,title:1,onChangeFilter:2,onChangeGroups:3,plugin:9})}}function fZ(e){let t,C,i,H,n;return C=new mZ({props:{groups:e[1],title:"Local style groups",onChangeGroups:e[3],onChangeFilter:e[5],plugin:e[0]}}),H=new mZ({props:{groups:e[2],title:"Global style groups",onChangeGroups:e[4],onChangeFilter:e[6],plugin:e[0]}}),{c(){t=v("div"),q(C.$$.fragment),i=S(),q(H.$$.fragment),x(t,"class","juggl-style-pane")},m(e,V){f(e,t,V),Q(C,t,null),m(t,i),Q(H,t,null),n=!0},p(e,[t]){const i={};2&t&&(i.groups=e[1]),1&t&&(i.plugin=e[0]),C.$set(i);const n={};1&t&&(n.plugin=e[0]),H.$set(n)},i(e){n||(Y(C.$$.fragment,e),Y(H.$$.fragment,e),n=!0)},o(e){X(C.$$.fragment,e),X(H.$$.fragment,e),n=!1},d(e){e&&p(t),K(C),K(H)}}}function pZ(e,t,C){let{viz:i}=t,{plugin:H}=t,n=H?.settings;let V=[],r=n.globalStyleGroups;return e.$$set=e=>{"viz"in e&&C(7,i=e.viz),"plugin"in e&&C(0,H=e.plugin)},[H,V,r,function(){i&&i.updateStylesheet()},function(){H.saveData(n),H.activeGraphs().forEach((e=>e.updateStylesheet()))},function(){i&&i.assignStyleGroups()},function(){H.saveData(n),H.activeGraphs().forEach((e=>e.assignStyleGroups()))},i,function(e){C(7,i=e),C(1,V=i?i.settings.styleGroups:[])}]}class gZ extends te{constructor(e){super(),ee(this,e,pZ,fZ,A,{viz:7,plugin:0,setViz:8})}get setViz(){return this.$$.ctx[8]}}class vZ extends e.ItemView{constructor(e,t){super(e),this.activeViz=null,this.changeRef=null,this.plugin=t;const C=this;this.registerEvent(this.plugin.app.workspace.on("active-leaf-change",(e=>{if(this.changeRef&&(this.activeViz.offref(this.changeRef),this.changeRef=null),e)if("juggl_view"===e.view.getViewType()){const t=e.view.juggl;if(this.changeRef=t.on("elementsChange",(()=>{C.onActiveVizChange()})),t===this.activeViz)return;this.activeViz=t}else e.view instanceof vZ||(this.activeViz=null);else this.activeViz=null;this.onActiveVizChange()})))}setViz(e){this.activeViz=e,this.onActiveVizChange()}}class yZ extends vZ{constructor(e,t){super(e,t),this.icon="ag-node-list"}onload(){super.onload(),this.pane=new VZ({target:this.contentEl})}getDisplayText(){return"Juggl nodes"}getViewType(){return"juggl_nodes"}onActiveVizChange(){this.pane&&this.pane.setViz.bind(this.pane)(this.activeViz)}}class ZZ extends vZ{constructor(e,t){super(e,t),this.icon="ag-style"}onload(){super.onload(),this.pane=new gZ({target:this.contentEl,props:{plugin:this.plugin}})}getDisplayText(){return"Juggl style"}getViewType(){return"juggl_style"}onActiveVizChange(){this.pane&&this.pane.setViz.bind(this.pane)(this.activeViz)}}class SZ extends e.Component{constructor(e){super(),this.graphs=[],this.plugin=e,this.adapter=this.plugin.app.vault.adapter}async onload(){super.onload();try{await this.adapter.mkdir(H(this.plugin.vault));const e=require("path");this.graphs=(await this.adapter.list(H(this.plugin.vault))).folders.map((t=>e.basename(t)))}catch(e){console.log(e)}}async saveGraph(e,t){try{const C=H(t.vault)+e;await this.adapter.mkdir(C);const i=t.viz.json();await this.adapter.write(C+"/graph.json",JSON.stringify(i));const n=t.settings;await this.adapter.write(C+"/settings.json",JSON.stringify(n)),this.graphs.contains(e)||this.graphs.push(e)}catch(e){console.log(e)}}async loadGraph(e,t){try{const C=H(t.vault)+e,i=JSON.parse(await this.adapter.read(C+"/graph.json")),V=JSON.parse(await this.adapter.read(C+"/settings.json"));t.viz.json(i),t.settings=V;const r=t.viz.nodes();for(let e=1;e{"cancelCallback"in e&&C(0,i=e.cancelCallback),"continueCallback"in e&&C(1,H=e.continueCallback)},[i,H]}class xZ extends te{constructor(e){super(),ee(this,e,wZ,bZ,A,{cancelCallback:0,continueCallback:1})}}class OZ extends e.Modal{constructor(e,t){super(e);new xZ({target:this.modalEl,props:{cancelCallback:this.close.bind(this),continueCallback:t}})}}class kZ extends e.Plugin{constructor(){super(...arguments),this.coreStores={},this.stores=[]}async onload(){super.onload(),console.log("Loading Juggl"),iM(Wo),Wo.use(Ss),Wo.use(Ru),Wo.use(Ny),Wo.use(ju),Wo.use(Gy),Wo.use($y),Wo.use(Yy),Object.keys(ca).forEach((t=>{e.addIcon(t.replace("_","-").replace("_","-"),Aa(ca[t]))})),this.vault=this.app.vault,this.metadata=this.app.metadataCache,this.path=this.vault.getRoot().path;const t=new a(this);this.addChild(t),this.workspaceManager=new SZ(this),this.addChild(this.workspaceManager),this.registerCoreStore(t,"Obsidian"),ue.globalStyleGroups=function(e){const t={},C=[["#0089BA","#2C73D2","#008E9B","#0081CF","#008F7A","#008E9B"],["#D65DB1","#0082C1","#9270D3","#007F93","#007ED9","#007660"],["#FF9671","#A36AAA","#F27D88","#6967A9","#D26F9D","#1b6299"],["#FFC75F","#4C9A52","#C3BB4E","#00855B","#88AC4B","#006F61"],["#FF6F91","#6F7F22","#E07250","#257A3E","#AC7C26","#006F5F"],["#F9F871","#2FAB63","#B8E067","#008E63","#78C664","#007160"]],i=[];for(const e of Array(6).keys())for(const t of Array(6).keys())i.push(C[t][e]);let H=0;for(const C of e.vault.getMarkdownFiles()){const n=e.metadata.getFileCache(C);n?.tags&&n.tags.forEach((e=>{const C=e.tag.slice(1).split("/"),n=[];for(const e in C){const t=C.slice(0,parseInt(e)+1).join("-");n.push(t)}for(const e of n)e in t||(t[e]=i[H],H+=1,H>=i.length&&(H=0))}))}const n=[{filter:"class:dangling",color:ne("color-fill-unresolved"),shape:"ellipse",icon:{name:"No icon",path:"",color:"white"},showInPane:!0,show:!0,size:1},{filter:"class:file -class:image",color:ne("color-fill"),shape:"ellipse",icon:{name:"No icon",path:"",color:"white"},showInPane:!0,show:!0,size:1}];for(const e of Object.keys(t))n.push({filter:`tag:#${e}`,color:t[e],shape:"ellipse",icon:{name:"No icon",path:"",color:"white"},showInPane:!0,show:!0,size:1});return n}(this),this.settings=Object.assign({},ue,await this.loadData()),this.settings.globalStyleGroups=this.settings.globalStyleGroups.map((e=>Object.assign({},de,e))),this.settings.graphSettings=Object.assign({},ue.graphSettings,this.settings.graphSettings),this.settings.embedSettings=Object.assign({},ue.embedSettings,this.settings.embedSettings),this.addCommand({id:"open-vis",name:"Open local graph of note",callback:()=>{const e=this.app.workspace.getActiveFile().name;this.openLocalGraph(e)}}),this.addCommand({id:"open-vis-global",name:"Open global graph",callback:()=>{this.openGlobalGraph()}}),this.addSettingTab(new Ae(this.app,this)),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{t&&e.addItem((e=>{e.setTitle("Open Juggl").setIcon("dot-network").onClick((e=>{"md"===t.extension?this.openLocalGraph(t.basename):this.openLocalGraph(t.name)}))}))}))),this.registerMarkdownCodeBlockProcessor("juggl",(async(t,C,i)=>{setTimeout((async()=>{const i=e.parseYaml(t);try{const e=Object.assign({},this.settings.embedSettings,i);if(!le.contains(e.layout))throw new Error(`Invalid layout. Choose one from ${le}`);const t={dataStores:[this.coreStores[e.coreStore]].concat(this.stores),coreStore:this.coreStores[e.coreStore]};if(C.style.width=e.width,C.style.height=e.height,Object.keys(i).contains("local"))this.addChild(new tM(C,this,t,e,[i.local]));else if(Object.keys(i).contains("workspace")){const H=new tM(C,this,t,e,null);if(!this.workspaceManager.graphs.contains(i.workspace))throw new Error("Did not recognize workspace. Did you misspell its name?");this.addChild(H),await this.workspaceManager.loadGraph(i.workspace,H)}else{if(!Object.keys(i).contains("oql"))throw new Error("Invalid query. Specify either the local property or the workspace property.");if(!("obsidian-query-language"in this.app.plugins.plugins))throw new Error("The Obsidian Query Language plugin isn't loaded, so cannot query using oql!");{const H=await this.app.plugins.plugins["obsidian-query-language"].search(i.oql);e.expandInitial=!1,this.addChild(new tM(C,this,t,e,H.map((e=>e.title))))}}}catch(e){const t=document.createElement("div");t.addClass("juggl-error"),t.innerText=e.message,C.appendChild(t)}}),200)}));const C=this;this.registerView("juggl_nodes",(e=>new yZ(e,C))),this.registerView("juggl_style",(e=>new ZZ(e,C)));const i=function(){if(0===C.app.workspace.getLeavesOfType("juggl_nodes").length){C.app.workspace.getRightLeaf(!1).setViewState({type:"juggl_nodes"})}},H=function(){if(0===C.app.workspace.getLeavesOfType("juggl_style").length){C.app.workspace.getRightLeaf(!1).setViewState({type:"juggl_style"})}};this.app.workspace.onLayoutReady(i),this.app.workspace.onLayoutReady(H),this.addCommand({id:"show-nodes-pane",name:"Open Nodes Pane",checkCallback:e=>{if(e)return 0===this.app.workspace.getLeavesOfType("juggl_nodes").length;i()}}),this.addCommand({id:"show-style-pane",name:"Open Style Pane",checkCallback:e=>{if(e)return 0===this.app.workspace.getLeavesOfType("juggl_style").length;H()}});const n=Ce(this.vault);this.registerEvent(this.vault.on("raw",(e=>{if(e===n){console.log(`Updating stylesheet from ${n}`);for(const e of this.activeGraphs())e.updateStylesheet().then()}}))),this.setGlobalIcon(),this.addChild(new CM(this))}setGlobalIcon(){this.ribbonIcon&&this.ribbonIcon.detach(),this.settings.globalGraphRibbon&&(this.ribbonIcon=this.addRibbonIcon("ag-concentric","Juggl global graph",(()=>{this.openGlobalGraph()})))}async openFileFromNode(e,t=!1){const C=n.fromNode(e);if("core"!==C.storeId)return null;let i=this.app.metadataCache.getFirstLinkpathDest(C.id,"");if(i)await this.openFile(i);else{const e=C.id+".md";i=await this.vault.create(e,""),await this.openFile(i)}return i}async openFile(e,t=!1){await this.app.workspace.getLeaf(t).openFile(e)}async openLocalGraph(e){const t=this.app.workspace.splitActiveLeaf(this.settings.splitDirection),C=new Xy(t,this.settings.graphSettings,this,[e]);await t.open(C)}async openGlobalGraph(){const e=this.app.workspace.getLeaf(!1),t=this.app.vault.getFiles().map((e=>"md"===e.extension?e.basename:e.name));if(t.length>250){const C=new OZ(this.app,(async()=>{const i=new Xy(e,this.settings.globalGraphSettings,this,t);await e.open(i),C.close()}));C.open()}else{const C=new Xy(e,this.settings.globalGraphSettings,this,t);await e.open(C)}}activeGraphs(){return this.app.workspace.getLeavesOfType("juggl_view").map((e=>e.view.juggl))}async onunload(){super.onunload(),console.log("Unloading Juggl"),this.app.workspace.detachLeavesOfType("juggl_nodes"),this.app.workspace.detachLeavesOfType("juggl_style"),this.watcher&&this.watcher.close()}registerStore(e){this.stores.push(e)}removeStore(e){this.stores.remove(e)}registerCoreStore(e,t){if("core"!==e.storeId())throw new Error("Can only register IDataStores as core if their storeId is core");this.coreStores[t]=e}createJuggl(e,t,C,i){return t||(t=Object.assign({},ue.embedSettings),i&&(t.expandInitial=!1)),C||(C=this.defaultStores()),new tM(e,this,C,t,i)}defaultStores(){return{dataStores:[this.coreStores.Obsidian].concat(this.stores),coreStore:this.coreStores.Obsidian}}}kZ.CAT_DANGLING="dangling",module.exports=kZ; diff --git a/notes/.obsidian/plugins/juggl/manifest.json b/notes/.obsidian/plugins/juggl/manifest.json index 5b6a131..058b7ef 100644 --- a/notes/.obsidian/plugins/juggl/manifest.json +++ b/notes/.obsidian/plugins/juggl/manifest.json @@ -1,7 +1,7 @@ { "id": "juggl", "name": "Juggl", - "version": "1.2.5", + "version": "1.4.0", "minAppVersion": "0.11.5", "description": "Adds a completely interactive, stylable and expandable graph view to Obsidian.", "author": "Emile", diff --git a/notes/.obsidian/plugins/juggl/styles.css b/notes/.obsidian/plugins/juggl/styles.css index d61a99a..c3b75d1 100644 --- a/notes/.obsidian/plugins/juggl/styles.css +++ b/notes/.obsidian/plugins/juggl/styles.css @@ -58,8 +58,9 @@ div.juggl-error { height: 100%; } -.juggl-hover { +.juggl-hover.is-loaded.hover-popover.popover { opacity: 0.9; + height: max-content; } .juggl-preview-edge { @@ -67,7 +68,7 @@ div.juggl-error { } .cy-content { - padding: 0; + padding: 0 !important; } .cy-toolbar { diff --git a/notes/.obsidian/plugins/obsidian-activity-history/data.json b/notes/.obsidian/plugins/obsidian-activity-history/data.json index 22b756d..3134b40 100644 --- a/notes/.obsidian/plugins/obsidian-activity-history/data.json +++ b/notes/.obsidian/plugins/obsidian-activity-history/data.json @@ -12,8 +12,8 @@ "checkpointList": [ { "path": "/", - "date": "2022-04-22", - "size": 828428 + "date": "2022-04-25", + "size": 829506 } ], "activityHistory": [ @@ -594,7 +594,11 @@ }, { "date": "2022-04-22", - "value": 1854 + "value": 1988 + }, + { + "date": "2022-04-25", + "value": 944 } ] } diff --git a/notes/.obsidian/plugins/obsidian-admonition/data.json b/notes/.obsidian/plugins/obsidian-admonition/data.json index ac4b24e..2b3f104 100644 --- a/notes/.obsidian/plugins/obsidian-admonition/data.json +++ b/notes/.obsidian/plugins/obsidian-admonition/data.json @@ -15,13 +15,27 @@ }, "syntaxHighlight": false, "copyButton": false, - "version": "6.9.6", + "version": "9.0.1", "autoCollapse": false, "defaultCollapseType": "open", - "syncLinks": true, - "enableMarkdownProcessor": false, "injectColor": true, "parseTitles": true, + "dropShadow": true, + "hideEmpty": false, + "open": { + "admonitions": true, + "icons": true, + "other": true, + "advanced": false + }, + "icons": [], + "useFontAwesome": true, + "rpgDownloadedOnce": false, + "msDocConverted": false, + "useSnippet": false, + "snippetPath": "custom-admonitions.8e02f6", + "syncLinks": true, + "enableMarkdownProcessor": false, "allowMSSyntax": true, "livePreviewMS": true } \ No newline at end of file diff --git a/notes/.obsidian/plugins/obsidian-admonition/main.js b/notes/.obsidian/plugins/obsidian-admonition/main.js index 2c108c8..af39ade 100644 --- a/notes/.obsidian/plugins/obsidian-admonition/main.js +++ b/notes/.obsidian/plugins/obsidian-admonition/main.js @@ -3,15621 +3,508 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); -var __export = (target, all) => { - __markAsModule(target); - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __reExport = (target, module2, desc) => { - if (module2 && typeof module2 === "object" || typeof module2 === "function") { - for (let key of __getOwnPropNames(module2)) - if (!__hasOwnProp.call(target, key) && key !== "default") - __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable }); - } - return target; -}; -var __toModule = (module2) => { - return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2); -}; - -// src/main.ts -__export(exports, { - default: () => ObsidianAdmonition -}); -var import_obsidian6 = __toModule(require("obsidian")); -var import_language = __toModule(require("@codemirror/language")); -var import_view = __toModule(require("@codemirror/view")); -var import_stream_parser = __toModule(require("@codemirror/stream-parser")); -var import_state = __toModule(require("@codemirror/state")); - -// node_modules/@fortawesome/free-regular-svg-icons/index.es.js -var faAddressBook = { - prefix: "far", - iconName: "address-book", - icon: [448, 512, [], "f2b9", "M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-68 304H48V48h320v416zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z"] -}; -var faAddressCard = { - prefix: "far", - iconName: "address-card", - icon: [576, 512, [], "f2bb", "M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h480v352zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2zM360 320h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8z"] -}; -var faAngry = { - prefix: "far", - iconName: "angry", - icon: [496, 512, [], "f556", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-144c-33.6 0-65.2 14.8-86.8 40.6-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.2 33.8-3c24.8-29.7 75-29.7 99.8 0 8.1 9.7 23.2 11.9 33.8 3 10.2-8.5 11.5-23.6 3.1-33.8-21.6-25.8-53.2-40.6-86.8-40.6zm-48-72c10.3 0 19.9-6.7 23-17.1 3.8-12.7-3.4-26.1-16.1-29.9l-80-24c-12.8-3.9-26.1 3.4-29.9 16.1-3.8 12.7 3.4 26.1 16.1 29.9l28.2 8.5c-3.1 4.9-5.3 10.4-5.3 16.6 0 17.7 14.3 32 32 32s32-14.4 32-32.1zm199-54.9c-3.8-12.7-17.1-19.9-29.9-16.1l-80 24c-12.7 3.8-19.9 17.2-16.1 29.9 3.1 10.4 12.7 17.1 23 17.1 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.2-2.2-11.7-5.3-16.6l28.2-8.5c12.7-3.7 19.9-17.1 16.1-29.8z"] -}; -var faArrowAltCircleDown = { - prefix: "far", - iconName: "arrow-alt-circle-down", - icon: [512, 512, [], "f358", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm-32-316v116h-67c-10.7 0-16 12.9-8.5 20.5l99 99c4.7 4.7 12.3 4.7 17 0l99-99c7.6-7.6 2.2-20.5-8.5-20.5h-67V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12z"] -}; -var faArrowAltCircleLeft = { - prefix: "far", - iconName: "arrow-alt-circle-left", - icon: [512, 512, [], "f359", "M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-72-20v40c0 6.6-5.4 12-12 12H256v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12z"] -}; -var faArrowAltCircleRight = { - prefix: "far", - iconName: "arrow-alt-circle-right", - icon: [512, 512, [], "f35a", "M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z"] -}; -var faArrowAltCircleUp = { - prefix: "far", - iconName: "arrow-alt-circle-up", - icon: [512, 512, [], "f35b", "M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z"] -}; -var faBell = { - prefix: "far", - iconName: "bell", - icon: [448, 512, [], "f0f3", "M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z"] -}; -var faBellSlash = { - prefix: "far", - iconName: "bell-slash", - icon: [640, 512, [], "f1f6", "M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM163.53 368c16.71-22.03 34.48-55.8 41.4-110.58l-45.47-35.55c-3.27 90.73-36.47 120.68-54.84 140.42-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h279.66l-61.4-48H163.53zM320 96c61.86 0 112 50.14 112 112 0 .2-.06.38-.06.58.02 16.84 1.16 31.77 2.79 45.73l59.53 46.54c-8.31-22.13-14.34-51.49-14.34-92.85 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-26.02 5.41-49.45 16.94-69.13 32.72l38.17 29.84C275 103.18 296.65 96 320 96zm0 416c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z"] -}; -var faBookmark = { - prefix: "far", - iconName: "bookmark", - icon: [384, 512, [], "f02e", "M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z"] -}; -var faBuilding = { - prefix: "far", - iconName: "building", - icon: [448, 512, [], "f1ad", "M128 148v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12zm140 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-128 96h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm128 0h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-76 84v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm76 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm180 124v36H0v-36c0-6.6 5.4-12 12-12h19.5V24c0-13.3 10.7-24 24-24h337c13.3 0 24 10.7 24 24v440H436c6.6 0 12 5.4 12 12zM79.5 463H192v-67c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v67h112.5V49L80 48l-.5 415z"] -}; -var faCalendar = { - prefix: "far", - iconName: "calendar", - icon: [448, 512, [], "f133", "M400 64h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V160h352v298c0 3.3-2.7 6-6 6z"] -}; -var faCalendarAlt = { - prefix: "far", - iconName: "calendar-alt", - icon: [448, 512, [], "f073", "M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"] -}; -var faCalendarCheck = { - prefix: "far", - iconName: "calendar-check", - icon: [448, 512, [], "f274", "M400 64h-48V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H160V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V160h352v298a6 6 0 0 1-6 6zm-52.849-200.65L198.842 404.519c-4.705 4.667-12.303 4.637-16.971-.068l-75.091-75.699c-4.667-4.705-4.637-12.303.068-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l44.104 44.461 111.072-110.181c4.705-4.667 12.303-4.637 16.971.068l22.536 22.718c4.667 4.705 4.636 12.303-.069 16.97z"] -}; -var faCalendarMinus = { - prefix: "far", - iconName: "calendar-minus", - icon: [448, 512, [], "f272", "M124 328c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H124zm324-216v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"] -}; -var faCalendarPlus = { - prefix: "far", - iconName: "calendar-plus", - icon: [448, 512, [], "f271", "M336 292v24c0 6.6-5.4 12-12 12h-76v76c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-76h-76c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h76v-76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v76h76c6.6 0 12 5.4 12 12zm112-180v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"] -}; -var faCalendarTimes = { - prefix: "far", - iconName: "calendar-times", - icon: [448, 512, [], "f273", "M311.7 374.7l-17 17c-4.7 4.7-12.3 4.7-17 0L224 337.9l-53.7 53.7c-4.7 4.7-12.3 4.7-17 0l-17-17c-4.7-4.7-4.7-12.3 0-17l53.7-53.7-53.7-53.7c-4.7-4.7-4.7-12.3 0-17l17-17c4.7-4.7 12.3-4.7 17 0l53.7 53.7 53.7-53.7c4.7-4.7 12.3-4.7 17 0l17 17c4.7 4.7 4.7 12.3 0 17L257.9 304l53.7 53.7c4.8 4.7 4.8 12.3.1 17zM448 112v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"] -}; -var faCaretSquareDown = { - prefix: "far", - iconName: "caret-square-down", - icon: [448, 512, [], "f150", "M125.1 208h197.8c10.7 0 16.1 13 8.5 20.5l-98.9 98.3c-4.7 4.7-12.2 4.7-16.9 0l-98.9-98.3c-7.7-7.5-2.3-20.5 8.4-20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"] -}; -var faCaretSquareLeft = { - prefix: "far", - iconName: "caret-square-left", - icon: [448, 512, [], "f191", "M272 157.1v197.8c0 10.7-13 16.1-20.5 8.5l-98.3-98.9c-4.7-4.7-4.7-12.2 0-16.9l98.3-98.9c7.5-7.7 20.5-2.3 20.5 8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"] -}; -var faCaretSquareRight = { - prefix: "far", - iconName: "caret-square-right", - icon: [448, 512, [], "f152", "M176 354.9V157.1c0-10.7 13-16.1 20.5-8.5l98.3 98.9c4.7 4.7 4.7 12.2 0 16.9l-98.3 98.9c-7.5 7.7-20.5 2.3-20.5-8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"] -}; -var faCaretSquareUp = { - prefix: "far", - iconName: "caret-square-up", - icon: [448, 512, [], "f151", "M322.9 304H125.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"] -}; -var faChartBar = { - prefix: "far", - iconName: "chart-bar", - icon: [512, 512, [], "f080", "M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z"] -}; -var faCheckCircle = { - prefix: "far", - iconName: "check-circle", - icon: [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"] -}; -var faCheckSquare = { - prefix: "far", - iconName: "check-square", - icon: [448, 512, [], "f14a", "M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z"] -}; -var faCircle = { - prefix: "far", - iconName: "circle", - icon: [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z"] -}; -var faClipboard = { - prefix: "far", - iconName: "clipboard", - icon: [384, 512, [], "f328", "M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm144 418c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h42v36c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-36h42c3.3 0 6 2.7 6 6z"] -}; -var faClock = { - prefix: "far", - iconName: "clock", - icon: [512, 512, [], "f017", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z"] -}; -var faClone = { - prefix: "far", - iconName: "clone", - icon: [512, 512, [], "f24d", "M464 0H144c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-48h48c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zM362 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h42v224c0 26.51 21.49 48 48 48h224v42a6 6 0 0 1-6 6zm96-96H150a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h308a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6z"] -}; -var faClosedCaptioning = { - prefix: "far", - iconName: "closed-captioning", - icon: [512, 512, [], "f20a", "M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-211.1-85.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7zm190.4 0c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.9-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 220.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7z"] -}; -var faComment = { - prefix: "far", - iconName: "comment", - icon: [512, 512, [], "f075", "M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"] -}; -var faCommentAlt = { - prefix: "far", - iconName: "comment-alt", - icon: [512, 512, [], "f27a", "M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288z"] -}; -var faCommentDots = { - prefix: "far", - iconName: "comment-dots", - icon: [512, 512, [], "f4ad", "M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"] -}; -var faComments = { - prefix: "far", - iconName: "comments", - icon: [576, 512, [], "f086", "M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z"] -}; -var faCompass = { - prefix: "far", - iconName: "compass", - icon: [496, 512, [], "f14e", "M347.94 129.86L203.6 195.83a31.938 31.938 0 0 0-15.77 15.77l-65.97 144.34c-7.61 16.65 9.54 33.81 26.2 26.2l144.34-65.97a31.938 31.938 0 0 0 15.77-15.77l65.97-144.34c7.61-16.66-9.54-33.81-26.2-26.2zm-77.36 148.72c-12.47 12.47-32.69 12.47-45.16 0-12.47-12.47-12.47-32.69 0-45.16 12.47-12.47 32.69-12.47 45.16 0 12.47 12.47 12.47 32.69 0 45.16zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z"] -}; -var faCopy = { - prefix: "far", - iconName: "copy", - icon: [448, 512, [], "f0c5", "M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"] -}; -var faCopyright = { - prefix: "far", - iconName: "copyright", - icon: [512, 512, [], "f1f9", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm107.351-101.064c-9.614 9.712-45.53 41.396-104.065 41.396-82.43 0-140.484-61.425-140.484-141.567 0-79.152 60.275-139.401 139.762-139.401 55.531 0 88.738 26.62 97.593 34.779a11.965 11.965 0 0 1 1.936 15.322l-18.155 28.113c-3.841 5.95-11.966 7.282-17.499 2.921-8.595-6.776-31.814-22.538-61.708-22.538-48.303 0-77.916 35.33-77.916 80.082 0 41.589 26.888 83.692 78.277 83.692 32.657 0 56.843-19.039 65.726-27.225 5.27-4.857 13.596-4.039 17.82 1.738l19.865 27.17a11.947 11.947 0 0 1-1.152 15.518z"] -}; -var faCreditCard = { - prefix: "far", - iconName: "credit-card", - icon: [576, 512, [], "f09d", "M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zM54.1 80h467.8c3.3 0 6 2.7 6 6v42H48.1V86c0-3.3 2.7-6 6-6zm467.8 352H54.1c-3.3 0-6-2.7-6-6V256h479.8v170c0 3.3-2.7 6-6 6zM192 332v40c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v40c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12z"] -}; -var faDizzy = { - prefix: "far", - iconName: "dizzy", - icon: [496, 512, [], "f567", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-33.8-217.9c7.8-7.8 7.8-20.5 0-28.3L196.3 192l17.9-17.9c7.8-7.8 7.8-20.5 0-28.3-7.8-7.8-20.5-7.8-28.3 0L168 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.9 7.7 20.5 7.7 28.4-.2zm160-92.2c-7.8-7.8-20.5-7.8-28.3 0L328 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.8 7.8 20.5 7.8 28.3 0 7.8-7.8 7.8-20.5 0-28.3l-17.8-18 17.9-17.9c7.7-7.8 7.7-20.4 0-28.2zM248 272c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z"] -}; -var faDotCircle = { - prefix: "far", - iconName: "dot-circle", - icon: [512, 512, [], "f192", "M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z"] -}; -var faEdit = { - prefix: "far", - iconName: "edit", - icon: [576, 512, [], "f044", "M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z"] -}; -var faEnvelope = { - prefix: "far", - iconName: "envelope", - icon: [512, 512, [], "f0e0", "M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z"] -}; -var faEnvelopeOpen = { - prefix: "far", - iconName: "envelope-open", - icon: [512, 512, [], "f2b6", "M494.586 164.516c-4.697-3.883-111.723-89.95-135.251-108.657C337.231 38.191 299.437 0 256 0c-43.205 0-80.636 37.717-103.335 55.859-24.463 19.45-131.07 105.195-135.15 108.549A48.004 48.004 0 0 0 0 201.485V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.509a48 48 0 0 0-17.414-36.993zM464 458a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V204.347c0-1.813.816-3.526 2.226-4.665 15.87-12.814 108.793-87.554 132.364-106.293C200.755 78.88 232.398 48 256 48c23.693 0 55.857 31.369 73.41 45.389 23.573 18.741 116.503 93.493 132.366 106.316a5.99 5.99 0 0 1 2.224 4.663V458zm-31.991-187.704c4.249 5.159 3.465 12.795-1.745 16.981-28.975 23.283-59.274 47.597-70.929 56.863C336.636 362.283 299.205 400 256 400c-43.452 0-81.287-38.237-103.335-55.86-11.279-8.967-41.744-33.413-70.927-56.865-5.21-4.187-5.993-11.822-1.745-16.981l15.258-18.528c4.178-5.073 11.657-5.843 16.779-1.726 28.618 23.001 58.566 47.035 70.56 56.571C200.143 320.631 232.307 352 256 352c23.602 0 55.246-30.88 73.41-45.389 11.994-9.535 41.944-33.57 70.563-56.568 5.122-4.116 12.601-3.346 16.778 1.727l15.258 18.526z"] -}; -var faEye = { - prefix: "far", - iconName: "eye", - icon: [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"] -}; -var faEyeSlash = { - prefix: "far", - iconName: "eye-slash", - icon: [640, 512, [], "f070", "M634 471L36 3.51A16 16 0 0 0 13.51 6l-10 12.49A16 16 0 0 0 6 41l598 467.49a16 16 0 0 0 22.49-2.49l10-12.49A16 16 0 0 0 634 471zM296.79 146.47l134.79 105.38C429.36 191.91 380.48 144 320 144a112.26 112.26 0 0 0-23.21 2.47zm46.42 219.07L208.42 260.16C210.65 320.09 259.53 368 320 368a113 113 0 0 0 23.21-2.46zM320 112c98.65 0 189.09 55 237.93 144a285.53 285.53 0 0 1-44 60.2l37.74 29.5a333.7 333.7 0 0 0 52.9-75.11 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64c-36.7 0-71.71 7-104.63 18.81l46.41 36.29c18.94-4.3 38.34-7.1 58.22-7.1zm0 288c-98.65 0-189.08-55-237.93-144a285.47 285.47 0 0 1 44.05-60.19l-37.74-29.5a333.6 333.6 0 0 0-52.89 75.1 32.35 32.35 0 0 0 0 29.19C89.72 376.41 197.08 448 320 448c36.7 0 71.71-7.05 104.63-18.81l-46.41-36.28C359.28 397.2 339.89 400 320 400z"] -}; -var faFile = { - prefix: "far", - iconName: "file", - icon: [384, 512, [], "f15b", "M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"] -}; -var faFileAlt = { - prefix: "far", - iconName: "file-alt", - icon: [384, 512, [], "f15c", "M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"] -}; -var faFileArchive = { - prefix: "far", - iconName: "file-archive", - icon: [384, 512, [], "f1c6", "M128.3 160v32h32v-32zm64-96h-32v32h32zm-64 32v32h32V96zm64 32h-32v32h32zm177.6-30.1L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h79.7v16h32V48H208v104c0 13.3 10.7 24 24 24h104zM194.2 265.7c-1.1-5.6-6-9.7-11.8-9.7h-22.1v-32h-32v32l-19.7 97.1C102 385.6 126.8 416 160 416c33.1 0 57.9-30.2 51.5-62.6zm-33.9 124.4c-17.9 0-32.4-12.1-32.4-27s14.5-27 32.4-27 32.4 12.1 32.4 27-14.5 27-32.4 27zm32-198.1h-32v32h32z"] -}; -var faFileAudio = { - prefix: "far", - iconName: "file-audio", - icon: [384, 512, [], "f1c7", "M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm144-76.024c0 10.691-12.926 16.045-20.485 8.485L136 360.486h-28c-6.627 0-12-5.373-12-12v-56c0-6.627 5.373-12 12-12h28l35.515-36.947c7.56-7.56 20.485-2.206 20.485 8.485v135.952zm41.201-47.13c9.051-9.297 9.06-24.133.001-33.439-22.149-22.752 12.235-56.246 34.395-33.481 27.198 27.94 27.212 72.444.001 100.401-21.793 22.386-56.947-10.315-34.397-33.481z"] -}; -var faFileCode = { - prefix: "far", - iconName: "file-code", - icon: [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"] -}; -var faFileExcel = { - prefix: "far", - iconName: "file-excel", - icon: [384, 512, [], "f1c3", "M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm212-240h-28.8c-4.4 0-8.4 2.4-10.5 6.3-18 33.1-22.2 42.4-28.6 57.7-13.9-29.1-6.9-17.3-28.6-57.7-2.1-3.9-6.2-6.3-10.6-6.3H124c-9.3 0-15 10-10.4 18l46.3 78-46.3 78c-4.7 8 1.1 18 10.4 18h28.9c4.4 0 8.4-2.4 10.5-6.3 21.7-40 23-45 28.6-57.7 14.9 30.2 5.9 15.9 28.6 57.7 2.1 3.9 6.2 6.3 10.6 6.3H260c9.3 0 15-10 10.4-18L224 320c.7-1.1 30.3-50.5 46.3-78 4.7-8-1.1-18-10.3-18z"] -}; -var faFileImage = { - prefix: "far", - iconName: "file-image", - icon: [384, 512, [], "f1c5", "M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z"] -}; -var faFilePdf = { - prefix: "far", - iconName: "file-pdf", - icon: [384, 512, [], "f1c1", "M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm250.2-143.7c-12.2-12-47-8.7-64.4-6.5-17.2-10.5-28.7-25-36.8-46.3 3.9-16.1 10.1-40.6 5.4-56-4.2-26.2-37.8-23.6-42.6-5.9-4.4 16.1-.4 38.5 7 67.1-10 23.9-24.9 56-35.4 74.4-20 10.3-47 26.2-51 46.2-3.3 15.8 26 55.2 76.1-31.2 22.4-7.4 46.8-16.5 68.4-20.1 18.9 10.2 41 17 55.8 17 25.5 0 28-28.2 17.5-38.7zm-198.1 77.8c5.1-13.7 24.5-29.5 30.4-35-19 30.3-30.4 35.7-30.4 35zm81.6-190.6c7.4 0 6.7 32.1 1.8 40.8-4.4-13.9-4.3-40.8-1.8-40.8zm-24.4 136.6c9.7-16.9 18-37 24.7-54.7 8.3 15.1 18.9 27.2 30.1 35.5-20.8 4.3-38.9 13.1-54.8 19.2zm131.6-5s-5 6-37.3-7.8c35.1-2.6 40.9 5.4 37.3 7.8z"] -}; -var faFilePowerpoint = { - prefix: "far", - iconName: "file-powerpoint", - icon: [384, 512, [], "f1c4", "M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm72-60V236c0-6.6 5.4-12 12-12h69.2c36.7 0 62.8 27 62.8 66.3 0 74.3-68.7 66.5-95.5 66.5V404c0 6.6-5.4 12-12 12H132c-6.6 0-12-5.4-12-12zm48.5-87.4h23c7.9 0 13.9-2.4 18.1-7.2 8.5-9.8 8.4-28.5.1-37.8-4.1-4.6-9.9-7-17.4-7h-23.9v52z"] -}; -var faFileVideo = { - prefix: "far", - iconName: "file-video", - icon: [384, 512, [], "f1c8", "M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm228.687-211.303L224 305.374V268c0-11.046-8.954-20-20-20H100c-11.046 0-20 8.954-20 20v104c0 11.046 8.954 20 20 20h104c11.046 0 20-8.954 20-20v-37.374l52.687 52.674C286.704 397.318 304 390.28 304 375.986V264.011c0-14.311-17.309-21.319-27.313-11.314z"] -}; -var faFileWord = { - prefix: "far", - iconName: "file-word", - icon: [384, 512, [], "f1c2", "M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm220.1-208c-5.7 0-10.6 4-11.7 9.5-20.6 97.7-20.4 95.4-21 103.5-.2-1.2-.4-2.6-.7-4.3-.8-5.1.3.2-23.6-99.5-1.3-5.4-6.1-9.2-11.7-9.2h-13.3c-5.5 0-10.3 3.8-11.7 9.1-24.4 99-24 96.2-24.8 103.7-.1-1.1-.2-2.5-.5-4.2-.7-5.2-14.1-73.3-19.1-99-1.1-5.6-6-9.7-11.8-9.7h-16.8c-7.8 0-13.5 7.3-11.7 14.8 8 32.6 26.7 109.5 33.2 136 1.3 5.4 6.1 9.1 11.7 9.1h25.2c5.5 0 10.3-3.7 11.6-9.1l17.9-71.4c1.5-6.2 2.5-12 3-17.3l2.9 17.3c.1.4 12.6 50.5 17.9 71.4 1.3 5.3 6.1 9.1 11.6 9.1h24.7c5.5 0 10.3-3.7 11.6-9.1 20.8-81.9 30.2-119 34.5-136 1.9-7.6-3.8-14.9-11.6-14.9h-15.8z"] -}; -var faFlag = { - prefix: "far", - iconName: "flag", - icon: [512, 512, [], "f024", "M336.174 80c-49.132 0-93.305-32-161.913-32-31.301 0-58.303 6.482-80.721 15.168a48.04 48.04 0 0 0 2.142-20.727C93.067 19.575 74.167 1.594 51.201.104 23.242-1.71 0 20.431 0 48c0 17.764 9.657 33.262 24 41.562V496c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-83.443C109.869 395.28 143.259 384 199.826 384c49.132 0 93.305 32 161.913 32 58.479 0 101.972-22.617 128.548-39.981C503.846 367.161 512 352.051 512 335.855V95.937c0-34.459-35.264-57.768-66.904-44.117C409.193 67.309 371.641 80 336.174 80zM464 336c-21.783 15.412-60.824 32-102.261 32-59.945 0-102.002-32-161.913-32-43.361 0-96.379 9.403-127.826 24V128c21.784-15.412 60.824-32 102.261-32 59.945 0 102.002 32 161.913 32 43.271 0 96.32-17.366 127.826-32v240z"] -}; -var faFlushed = { - prefix: "far", - iconName: "flushed", - icon: [496, 512, [], "f579", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm96-312c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-112 24c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zm-80 48c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm160 144H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z"] -}; -var faFolder = { - prefix: "far", - iconName: "folder", - icon: [512, 512, [], "f07b", "M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"] -}; -var faFolderOpen = { - prefix: "far", - iconName: "folder-open", - icon: [576, 512, [], "f07c", "M527.9 224H480v-48c0-26.5-21.5-48-48-48H272l-64-64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h400c16.5 0 31.9-8.5 40.7-22.6l79.9-128c20-31.9-3-73.4-40.7-73.4zM48 118c0-3.3 2.7-6 6-6h134.1l64 64H426c3.3 0 6 2.7 6 6v42H152c-16.8 0-32.4 8.8-41.1 23.2L48 351.4zm400 282H72l77.2-128H528z"] -}; -var faFontAwesomeLogoFull = { - prefix: "far", - iconName: "font-awesome-logo-full", - icon: [3992, 512, ["Font Awesome"], "f4e6", "M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z"] -}; -var faFrown = { - prefix: "far", - iconName: "frown", - icon: [496, 512, [], "f119", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z"] -}; -var faFrownOpen = { - prefix: "far", - iconName: "frown-open", - icon: [496, 512, [], "f57a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-48-248c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 112c-35.6 0-88.8 21.3-95.8 61.2-2 11.8 9 21.5 20.5 18.1 31.2-9.6 59.4-15.3 75.3-15.3s44.1 5.7 75.3 15.3c11.4 3.5 22.5-6.3 20.5-18.1-7-39.9-60.2-61.2-95.8-61.2z"] -}; -var faFutbol = { - prefix: "far", - iconName: "futbol", - icon: [496, 512, [], "f1e3", "M483.8 179.4C449.8 74.6 352.6 8 248.1 8c-25.4 0-51.2 3.9-76.7 12.2C41.2 62.5-30.1 202.4 12.2 332.6 46.2 437.4 143.4 504 247.9 504c25.4 0 51.2-3.9 76.7-12.2 130.2-42.3 201.5-182.2 159.2-312.4zm-74.5 193.7l-52.2 6.4-43.7-60.9 24.4-75.2 71.1-22.1 38.9 36.4c-.2 30.7-7.4 61.1-21.7 89.2-4.7 9.3-10.7 17.8-16.8 26.2zm0-235.4l-10.4 53.1-70.7 22-64.2-46.5V92.5l47.4-26.2c39.2 13 73.4 38 97.9 71.4zM184.9 66.4L232 92.5v73.8l-64.2 46.5-70.6-22-10.1-52.5c24.3-33.4 57.9-58.6 97.8-71.9zM139 379.5L85.9 373c-14.4-20.1-37.3-59.6-37.8-115.3l39-36.4 71.1 22.2 24.3 74.3-43.5 61.7zm48.2 67l-22.4-48.1 43.6-61.7H287l44.3 61.7-22.4 48.1c-6.2 1.8-57.6 20.4-121.7 0z"] -}; -var faGem = { - prefix: "far", - iconName: "gem", - icon: [576, 512, [], "f3a5", "M464 0H112c-4 0-7.8 2-10 5.4L2 152.6c-2.9 4.4-2.6 10.2.7 14.2l276 340.8c4.8 5.9 13.8 5.9 18.6 0l276-340.8c3.3-4.1 3.6-9.8.7-14.2L474.1 5.4C471.8 2 468.1 0 464 0zm-19.3 48l63.3 96h-68.4l-51.7-96h56.8zm-202.1 0h90.7l51.7 96H191l51.6-96zm-111.3 0h56.8l-51.7 96H68l63.3-96zm-43 144h51.4L208 352 88.3 192zm102.9 0h193.6L288 435.3 191.2 192zM368 352l68.2-160h51.4L368 352z"] -}; -var faGrimace = { - prefix: "far", - iconName: "grimace", - icon: [496, 512, [], "f57f", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm16 16H152c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h192c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48zm-168 96h-24c-8.8 0-16-7.2-16-16v-8h40v24zm0-40h-40v-8c0-8.8 7.2-16 16-16h24v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm56 24c0 8.8-7.2 16-16 16h-24v-24h40v8zm0-24h-40v-24h24c8.8 0 16 7.2 16 16v8z"] -}; -var faGrin = { - prefix: "far", - iconName: "grin", - icon: [496, 512, [], "f580", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"] -}; -var faGrinAlt = { - prefix: "far", - iconName: "grin-alt", - icon: [496, 512, [], "f581", "M200.3 248c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zm128 0c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3z"] -}; -var faGrinBeam = { - prefix: "far", - iconName: "grin-beam", - icon: [496, 512, [], "f582", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-235.9-72.9c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3zm160 0c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3z"] -}; -var faGrinBeamSweat = { - prefix: "far", - iconName: "grin-beam-sweat", - icon: [496, 512, [], "f583", "M440 160c29.5 0 53.3-26.3 53.3-58.7 0-25-31.7-75.5-46.2-97.3-3.6-5.3-10.7-5.3-14.2 0-14.5 21.8-46.2 72.3-46.2 97.3 0 32.4 23.8 58.7 53.3 58.7zM248 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zm105.3-52.9c-24.6 15.7-46 12.9-46.4 12.9 6.9 20.2 10.8 41.8 10.8 64.3 0 110.3-89.7 200-200 200S48 366.3 48 256 137.7 56 248 56c39.8 0 76.8 11.8 108 31.9 1.7-9.5 6.3-24.1 17.2-45.7C336.4 20.6 293.7 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-27-4.4-52.9-12.4-77.2zM168 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z"] -}; -var faGrinHearts = { - prefix: "far", - iconName: "grin-hearts", - icon: [496, 512, [], "f584", "M353.6 304.6c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-152.8-48.9c4.5 1.2 9.2-1.5 10.5-6l19.4-69.9c5.6-20.3-7.4-41.1-28.8-44.5-18.6-3-36.4 9.8-41.5 27.9l-2 7.1-7.1-1.9c-18.2-4.7-38.2 4.3-44.9 22-7.7 20.2 3.8 41.9 24.2 47.2l70.2 18.1zm188.8-65.3c-6.7-17.6-26.7-26.7-44.9-22l-7.1 1.9-2-7.1c-5-18.1-22.8-30.9-41.5-27.9-21.4 3.4-34.4 24.2-28.8 44.5l19.4 69.9c1.2 4.5 5.9 7.2 10.5 6l70.2-18.2c20.4-5.3 31.9-26.9 24.2-47.1zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z"] -}; -var faGrinSquint = { - prefix: "far", - iconName: "grin-squint", - icon: [496, 512, [], "f585", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-234.7-40.8c3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3l-80-48c-5.1-3-11.4-1.9-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11.1.1 15.5zm242.9 2.5c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11-.1-15.5-3.8-4.4-10.2-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48z"] -}; -var faGrinSquintTears = { - prefix: "far", - iconName: "grin-squint-tears", - icon: [512, 512, [], "f586", "M117.1 384.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 479 124.3 420.8 128 395c.8-6.4-4.6-11.8-10.9-10.9zm-41.2-41.7C40.3 268 53 176.1 114.6 114.6 152.4 76.8 202.6 56 256 56c36.2 0 70.8 9.8 101.2 27.7 3.8-20.3 8-36.1 12-48.3C333.8 17.2 294.9 8 256 8 192.5 8 129.1 32.2 80.6 80.6c-74.1 74.1-91.3 183.4-52 274 12.2-4.1 27.7-8.3 47.3-12.2zm352.3-187.6c45 76.6 34.9 176.9-30.8 242.6-37.8 37.8-88 58.6-141.4 58.6-30.5 0-59.8-7-86.4-19.8-3.9 19.5-8 35-12.2 47.2 31.4 13.6 65 20.6 98.7 20.6 63.5 0 126.9-24.2 175.4-72.6 78.1-78.1 93.1-195.4 45.2-288.6-12.3 4-28.2 8.1-48.5 12zm-33.3-26.9c25.8-3.7 84-13.7 100.9-30.6 21.9-21.9 21.5-57.9-.9-80.3s-58.3-22.8-80.3-.9C397.7 33 387.7 91.2 384 117c-.8 6.4 4.6 11.8 10.9 10.9zm-187 108.3c-3-3-7.2-4.2-11.4-3.2L106 255.7c-5.7 1.4-9.5 6.7-9.1 12.6.5 5.8 5.1 10.5 10.9 11l52.3 4.8 4.8 52.3c.5 5.8 5.2 10.4 11 10.9h.9c5.5 0 10.3-3.7 11.7-9.1l22.6-90.5c1-4.2-.2-8.5-3.2-11.5zm39.7-25.1l90.5-22.6c5.7-1.4 9.5-6.7 9.1-12.6-.5-5.8-5.1-10.5-10.9-11l-52.3-4.8-4.8-52.3c-.5-5.8-5.2-10.4-11-10.9-5.6-.1-11.2 3.4-12.6 9.1L233 196.5c-1 4.1.2 8.4 3.2 11.4 5 5 11.3 3.2 11.4 3.2zm52 88.5c-29.1 29.1-59.7 52.9-83.9 65.4-9.2 4.8-10 17.5-1.7 23.4 38.9 27.7 107 6.2 143.7-30.6S416 253 388.3 214.1c-5.8-8.2-18.5-7.6-23.4 1.7-12.3 24.2-36.2 54.7-65.3 83.8z"] -}; -var faGrinStars = { - prefix: "far", - iconName: "grin-stars", - icon: [496, 512, [], "f587", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-227.9-57.5c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.5 1.9-12.2-4.3-13.2l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6.1 34.9zm259.7-72.7l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6 34.9c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.6 1.8-12.2-4.4-13.2z"] -}; -var faGrinTears = { - prefix: "far", - iconName: "grin-tears", - icon: [640, 512, [], "f588", "M117.1 256.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 351 124.3 292.8 128 267c.8-6.4-4.6-11.8-10.9-10.9zm506.7 30.6c-16.9-16.9-75.1-26.9-100.9-30.6-6.3-.9-11.7 4.5-10.8 10.8 3.7 25.8 13.7 84 30.6 100.9 21.9 21.9 57.9 21.5 80.3-.9 22.3-22.3 22.7-58.3.8-80.2zm-126.6 61.7C463.8 412.3 396.9 456 320 456c-76.9 0-143.8-43.7-177.2-107.6-12.5 37.4-25.2 43.9-28.3 46.5C159.1 460.7 234.5 504 320 504s160.9-43.3 205.5-109.1c-3.2-2.7-15.9-9.2-28.3-46.5zM122.7 224.5C137.9 129.2 220.5 56 320 56c99.5 0 182.1 73.2 197.3 168.5 2.1-.2 5.2-2.4 49.5 7C554.4 106 448.7 8 320 8S85.6 106 73.2 231.4c44.5-9.4 47.1-7.2 49.5-6.9zM320 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zM240 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z"] -}; -var faGrinTongue = { - prefix: "far", - iconName: "grin-tongue", - icon: [496, 512, [], "f589", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zM168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"] -}; -var faGrinTongueSquint = { - prefix: "far", - iconName: "grin-tongue-squint", - icon: [496, 512, [], "f58a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zm36.9-281.1c-3.8-4.4-10.3-5.5-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zm-162.9 45.5l-80-48c-5-3-11.4-2-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3z"] -}; -var faGrinTongueWink = { - prefix: "far", - iconName: "grin-tongue-wink", - icon: [496, 512, [], "f58b", "M152 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm176-52c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3z"] -}; -var faGrinWink = { - prefix: "far", - iconName: "grin-wink", - icon: [496, 512, [], "f58c", "M328 180c-25.69 0-55.88 16.92-59.86 42.12-1.75 11.22 11.5 18.24 19.83 10.84l9.55-8.48c14.81-13.19 46.16-13.19 60.97 0l9.55 8.48c8.48 7.43 21.56.25 19.83-10.84C383.88 196.92 353.69 180 328 180zm-160 60c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm185.55 64.64c-25.93 8.3-64.4 13.06-105.55 13.06s-79.62-4.75-105.55-13.06c-9.94-3.13-19.4 5.37-17.71 15.34C132.67 367.13 196.06 400 248 400s115.33-32.87 123.26-80.02c1.68-9.89-7.67-18.48-17.71-15.34zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z"] -}; -var faHandLizard = { - prefix: "far", - iconName: "hand-lizard", - icon: [576, 512, [], "f258", "M556.686 290.542L410.328 64.829C397.001 44.272 374.417 32 349.917 32H56C25.121 32 0 57.122 0 88v8c0 44.112 35.888 80 80 80h196.042l-18.333 48H144c-48.523 0-88 39.477-88 88 0 30.879 25.121 56 56 56h131.552c2.987 0 5.914.549 8.697 1.631L352 408.418V480h224V355.829c0-23.225-6.679-45.801-19.314-65.287zM528 432H400v-23.582c0-19.948-12.014-37.508-30.604-44.736l-99.751-38.788A71.733 71.733 0 0 0 243.552 320H112c-4.411 0-8-3.589-8-8 0-22.056 17.944-40 40-40h113.709c19.767 0 37.786-12.407 44.84-30.873l24.552-64.281c8.996-23.553-8.428-48.846-33.63-48.846H80c-17.645 0-32-14.355-32-32v-8c0-4.411 3.589-8 8-8h293.917c8.166 0 15.693 4.09 20.137 10.942l146.358 225.715A71.84 71.84 0 0 1 528 355.829V432z"] -}; -var faHandPaper = { - prefix: "far", - iconName: "hand-paper", - icon: [448, 512, [], "f256", "M372.57 112.641v-10.825c0-43.612-40.52-76.691-83.039-65.546-25.629-49.5-94.09-47.45-117.982.747C130.269 26.456 89.144 57.945 89.144 102v126.13c-19.953-7.427-43.308-5.068-62.083 8.871-29.355 21.796-35.794 63.333-14.55 93.153L132.48 498.569a32 32 0 0 0 26.062 13.432h222.897c14.904 0 27.835-10.289 31.182-24.813l30.184-130.958A203.637 203.637 0 0 0 448 310.564V179c0-40.62-35.523-71.992-75.43-66.359zm27.427 197.922c0 11.731-1.334 23.469-3.965 34.886L368.707 464h-201.92L51.591 302.303c-14.439-20.27 15.023-42.776 29.394-22.605l27.128 38.079c8.995 12.626 29.031 6.287 29.031-9.283V102c0-25.645 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V67c0-25.663 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V101.125c0-25.672 36.57-24.81 36.57.691V256c0 8.837 7.163 16 16 16h6.857c8.837 0 16-7.163 16-16v-76.309c0-26.242 36.57-25.64 36.57-.691v131.563z"] -}; -var faHandPeace = { - prefix: "far", - iconName: "hand-peace", - icon: [448, 512, [], "f25b", "M362.146 191.976c-13.71-21.649-38.761-34.016-65.006-30.341V74c0-40.804-32.811-74-73.141-74-40.33 0-73.14 33.196-73.14 74L160 168l-18.679-78.85C126.578 50.843 83.85 32.11 46.209 47.208 8.735 62.238-9.571 104.963 5.008 142.85l55.757 144.927c-30.557 24.956-43.994 57.809-24.733 92.218l54.853 97.999C102.625 498.97 124.73 512 148.575 512h205.702c30.744 0 57.558-21.44 64.555-51.797l27.427-118.999a67.801 67.801 0 0 0 1.729-15.203L448 256c0-44.956-43.263-77.343-85.854-64.024zM399.987 326c0 1.488-.169 2.977-.502 4.423l-27.427 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H148.575c-6.486 0-12.542-3.621-15.805-9.449l-54.854-98c-4.557-8.141-2.619-18.668 4.508-24.488l26.647-21.764a16 16 0 0 0 4.812-18.139l-64.09-166.549C37.226 92.956 84.37 74.837 96.51 106.389l59.784 155.357A16 16 0 0 0 171.227 272h11.632c8.837 0 16-7.163 16-16V74c0-34.375 50.281-34.43 50.281 0v182c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16v-28c0-25.122 36.567-25.159 36.567 0v28c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16 0-25.12 36.567-25.16 36.567 0v70z"] -}; -var faHandPointDown = { - prefix: "far", - iconName: "hand-point-down", - icon: [448, 512, [], "f0a7", "M188.8 512c45.616 0 83.2-37.765 83.2-83.2v-35.647a93.148 93.148 0 0 0 22.064-7.929c22.006 2.507 44.978-3.503 62.791-15.985C409.342 368.1 448 331.841 448 269.299V248c0-60.063-40-98.512-40-127.2v-2.679c4.952-5.747 8-13.536 8-22.12V32c0-17.673-12.894-32-28.8-32H156.8C140.894 0 128 14.327 128 32v64c0 8.584 3.048 16.373 8 22.12v2.679c0 6.964-6.193 14.862-23.668 30.183l-.148.129-.146.131c-9.937 8.856-20.841 18.116-33.253 25.851C48.537 195.798 0 207.486 0 252.8c0 56.928 35.286 92 83.2 92 8.026 0 15.489-.814 22.4-2.176V428.8c0 45.099 38.101 83.2 83.2 83.2zm0-48c-18.7 0-35.2-16.775-35.2-35.2V270.4c-17.325 0-35.2 26.4-70.4 26.4-26.4 0-35.2-20.625-35.2-44 0-8.794 32.712-20.445 56.1-34.926 14.575-9.074 27.225-19.524 39.875-30.799 18.374-16.109 36.633-33.836 39.596-59.075h176.752C364.087 170.79 400 202.509 400 248v21.299c0 40.524-22.197 57.124-61.325 50.601-8.001 14.612-33.979 24.151-53.625 12.925-18.225 19.365-46.381 17.787-61.05 4.95V428.8c0 18.975-16.225 35.2-35.2 35.2zM328 64c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24z"] -}; -var faHandPointLeft = { - prefix: "far", - iconName: "hand-point-left", - icon: [512, 512, [], "f0a5", "M0 220.8C0 266.416 37.765 304 83.2 304h35.647a93.148 93.148 0 0 0 7.929 22.064c-2.507 22.006 3.503 44.978 15.985 62.791C143.9 441.342 180.159 480 242.701 480H264c60.063 0 98.512-40 127.2-40h2.679c5.747 4.952 13.536 8 22.12 8h64c17.673 0 32-12.894 32-28.8V188.8c0-15.906-14.327-28.8-32-28.8h-64c-8.584 0-16.373 3.048-22.12 8H391.2c-6.964 0-14.862-6.193-30.183-23.668l-.129-.148-.131-.146c-8.856-9.937-18.116-20.841-25.851-33.253C316.202 80.537 304.514 32 259.2 32c-56.928 0-92 35.286-92 83.2 0 8.026.814 15.489 2.176 22.4H83.2C38.101 137.6 0 175.701 0 220.8zm48 0c0-18.7 16.775-35.2 35.2-35.2h158.4c0-17.325-26.4-35.2-26.4-70.4 0-26.4 20.625-35.2 44-35.2 8.794 0 20.445 32.712 34.926 56.1 9.074 14.575 19.524 27.225 30.799 39.875 16.109 18.374 33.836 36.633 59.075 39.596v176.752C341.21 396.087 309.491 432 264 432h-21.299c-40.524 0-57.124-22.197-50.601-61.325-14.612-8.001-24.151-33.979-12.925-53.625-19.365-18.225-17.787-46.381-4.95-61.05H83.2C64.225 256 48 239.775 48 220.8zM448 360c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z"] -}; -var faHandPointRight = { - prefix: "far", - iconName: "hand-point-right", - icon: [512, 512, [], "f0a4", "M428.8 137.6h-86.177a115.52 115.52 0 0 0 2.176-22.4c0-47.914-35.072-83.2-92-83.2-45.314 0-57.002 48.537-75.707 78.784-7.735 12.413-16.994 23.317-25.851 33.253l-.131.146-.129.148C135.662 161.807 127.764 168 120.8 168h-2.679c-5.747-4.952-13.536-8-22.12-8H32c-17.673 0-32 12.894-32 28.8v230.4C0 435.106 14.327 448 32 448h64c8.584 0 16.373-3.048 22.12-8h2.679c28.688 0 67.137 40 127.2 40h21.299c62.542 0 98.8-38.658 99.94-91.145 12.482-17.813 18.491-40.785 15.985-62.791A93.148 93.148 0 0 0 393.152 304H428.8c45.435 0 83.2-37.584 83.2-83.2 0-45.099-38.101-83.2-83.2-83.2zm0 118.4h-91.026c12.837 14.669 14.415 42.825-4.95 61.05 11.227 19.646 1.687 45.624-12.925 53.625 6.524 39.128-10.076 61.325-50.6 61.325H248c-45.491 0-77.21-35.913-120-39.676V215.571c25.239-2.964 42.966-21.222 59.075-39.596 11.275-12.65 21.725-25.3 30.799-39.875C232.355 112.712 244.006 80 252.8 80c23.375 0 44 8.8 44 35.2 0 35.2-26.4 53.075-26.4 70.4h158.4c18.425 0 35.2 16.5 35.2 35.2 0 18.975-16.225 35.2-35.2 35.2zM88 384c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z"] -}; -var faHandPointUp = { - prefix: "far", - iconName: "hand-point-up", - icon: [448, 512, [], "f0a6", "M105.6 83.2v86.177a115.52 115.52 0 0 0-22.4-2.176c-47.914 0-83.2 35.072-83.2 92 0 45.314 48.537 57.002 78.784 75.707 12.413 7.735 23.317 16.994 33.253 25.851l.146.131.148.129C129.807 376.338 136 384.236 136 391.2v2.679c-4.952 5.747-8 13.536-8 22.12v64c0 17.673 12.894 32 28.8 32h230.4c15.906 0 28.8-14.327 28.8-32v-64c0-8.584-3.048-16.373-8-22.12V391.2c0-28.688 40-67.137 40-127.2v-21.299c0-62.542-38.658-98.8-91.145-99.94-17.813-12.482-40.785-18.491-62.791-15.985A93.148 93.148 0 0 0 272 118.847V83.2C272 37.765 234.416 0 188.8 0c-45.099 0-83.2 38.101-83.2 83.2zm118.4 0v91.026c14.669-12.837 42.825-14.415 61.05 4.95 19.646-11.227 45.624-1.687 53.625 12.925 39.128-6.524 61.325 10.076 61.325 50.6V264c0 45.491-35.913 77.21-39.676 120H183.571c-2.964-25.239-21.222-42.966-39.596-59.075-12.65-11.275-25.3-21.725-39.875-30.799C80.712 279.645 48 267.994 48 259.2c0-23.375 8.8-44 35.2-44 35.2 0 53.075 26.4 70.4 26.4V83.2c0-18.425 16.5-35.2 35.2-35.2 18.975 0 35.2 16.225 35.2 35.2zM352 424c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z"] -}; -var faHandPointer = { - prefix: "far", - iconName: "hand-pointer", - icon: [448, 512, [], "f25a", "M358.182 179.361c-19.493-24.768-52.679-31.945-79.872-19.098-15.127-15.687-36.182-22.487-56.595-19.629V67c0-36.944-29.736-67-66.286-67S89.143 30.056 89.143 67v161.129c-19.909-7.41-43.272-5.094-62.083 8.872-29.355 21.795-35.793 63.333-14.55 93.152l109.699 154.001C134.632 501.59 154.741 512 176 512h178.286c30.802 0 57.574-21.5 64.557-51.797l27.429-118.999A67.873 67.873 0 0 0 448 326v-84c0-46.844-46.625-79.273-89.818-62.639zM80.985 279.697l27.126 38.079c8.995 12.626 29.031 6.287 29.031-9.283V67c0-25.12 36.571-25.16 36.571 0v175c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16v-35c0-25.12 36.571-25.16 36.571 0v35c0 8.836 7.163 16 16 16H272c8.837 0 16-7.164 16-16v-21c0-25.12 36.571-25.16 36.571 0v21c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16 0-25.121 36.571-25.16 36.571 0v84c0 1.488-.169 2.977-.502 4.423l-27.43 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H176c-5.769 0-11.263-2.878-14.697-7.697l-109.712-154c-14.406-20.223 14.994-42.818 29.394-22.606zM176.143 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.733 0-14-7.163-14-16zm75.428 0v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16zM327 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16z"] -}; -var faHandRock = { - prefix: "far", - iconName: "hand-rock", - icon: [512, 512, [], "f255", "M408.864 79.052c-22.401-33.898-66.108-42.273-98.813-23.588-29.474-31.469-79.145-31.093-108.334-.022-47.16-27.02-108.71 5.055-110.671 60.806C44.846 105.407 0 140.001 0 187.429v56.953c0 32.741 14.28 63.954 39.18 85.634l97.71 85.081c4.252 3.702 3.11 5.573 3.11 32.903 0 17.673 14.327 32 32 32h252c17.673 0 32-14.327 32-32 0-23.513-1.015-30.745 3.982-42.37l42.835-99.656c6.094-14.177 9.183-29.172 9.183-44.568V146.963c0-52.839-54.314-88.662-103.136-67.911zM464 261.406a64.505 64.505 0 0 1-5.282 25.613l-42.835 99.655c-5.23 12.171-7.883 25.04-7.883 38.25V432H188v-10.286c0-16.37-7.14-31.977-19.59-42.817l-97.71-85.08C56.274 281.255 48 263.236 48 244.381v-56.953c0-33.208 52-33.537 52 .677v41.228a16 16 0 0 0 5.493 12.067l7 6.095A16 16 0 0 0 139 235.429V118.857c0-33.097 52-33.725 52 .677v26.751c0 8.836 7.164 16 16 16h7c8.836 0 16-7.164 16-16v-41.143c0-33.134 52-33.675 52 .677v40.466c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16v-27.429c0-33.03 52-33.78 52 .677v26.751c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16 0-33.146 52-33.613 52 .677v114.445z"] -}; -var faHandScissors = { - prefix: "far", - iconName: "hand-scissors", - icon: [512, 512, [], "f257", "M256 480l70-.013c5.114 0 10.231-.583 15.203-1.729l118.999-27.427C490.56 443.835 512 417.02 512 386.277V180.575c0-23.845-13.03-45.951-34.005-57.69l-97.999-54.853c-34.409-19.261-67.263-5.824-92.218 24.733L142.85 37.008c-37.887-14.579-80.612 3.727-95.642 41.201-15.098 37.642 3.635 80.37 41.942 95.112L168 192l-94-9.141c-40.804 0-74 32.811-74 73.14 0 40.33 33.196 73.141 74 73.141h87.635c-3.675 26.245 8.692 51.297 30.341 65.006C178.657 436.737 211.044 480 256 480zm0-48.013c-25.16 0-25.12-36.567 0-36.567 8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16h-28c-25.159 0-25.122-36.567 0-36.567h28c8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16H74c-34.43 0-34.375-50.281 0-50.281h182c8.837 0 16-7.163 16-16v-11.632a16 16 0 0 0-10.254-14.933L106.389 128.51c-31.552-12.14-13.432-59.283 19.222-46.717l166.549 64.091a16.001 16.001 0 0 0 18.139-4.812l21.764-26.647c5.82-7.127 16.348-9.064 24.488-4.508l98 54.854c5.828 3.263 9.449 9.318 9.449 15.805v205.701c0 8.491-5.994 15.804-14.576 17.782l-119.001 27.427a19.743 19.743 0 0 1-4.423.502h-70z"] -}; -var faHandSpock = { - prefix: "far", - iconName: "hand-spock", - icon: [512, 512, [], "f259", "M501.03053,116.17605c-19.39059-31.50779-51.24406-35.72849-66.31044-35.01756-14.11325-50.81051-62.0038-54.08-70.73816-54.08a74.03091,74.03091,0,0,0-72.23816,58.916l-4.64648,22.66014-13.68357-53.207c-9.09569-35.37107-46.412-64.05074-89.66-53.07223a73.89749,73.89749,0,0,0-55.121,78.94722,73.68273,73.68273,0,0,0-64.8495,94.42181l24.35933,82.19721c-38.24017-7.54492-62.79677,16.18358-68.11512,21.84764a73.6791,73.6791,0,0,0,3.19921,104.19329l91.36509,85.9765A154.164,154.164,0,0,0,220.62279,512h107.4549A127.30079,127.30079,0,0,0,452.3392,413.86139l57.623-241.96272A73.20274,73.20274,0,0,0,501.03053,116.17605Zm-37.7597,44.60544L405.64788,402.74812a79.46616,79.46616,0,0,1-77.57019,61.25972H220.62279a106.34052,106.34052,0,0,1-73.1366-28.998l-91.369-85.98041C31.34381,325.72669,66.61133,288.131,91.39644,311.5392l51.123,48.10739c5.42577,5.10937,13.48239.71679,13.48239-5.82617a246.79914,246.79914,0,0,0-10.17771-70.1523l-36.01362-121.539c-9.7324-32.88279,39.69916-47.27145,49.38664-14.625l31.3437,105.77923c5.59374,18.90428,33.78119,10.71288,28.9648-8.00781L177.06427,80.23662c-8.50389-33.1035,41.43157-45.64646,49.86515-12.83593l47.32609,184.035c4.42773,17.24218,29.16207,16.5039,32.71089-.80468l31.791-154.9706c6.81054-33.1074,57.51748-24.10741,50.11906,11.96288L360.32764,246.78924c-3.72265,18.10936,23.66793,24.63084,28.05659,6.21679L413.185,148.85962C421.1498,115.512,471.14,127.79713,463.27083,160.78149Z"] -}; -var faHandshake = { - prefix: "far", - iconName: "handshake", - icon: [640, 512, [], "f2b5", "M519.2 127.9l-47.6-47.6A56.252 56.252 0 0 0 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H0v255.7h64c17.6 0 31.8-14.2 31.9-31.7h9.1l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23h57.9c.1 17.5 14.4 31.7 31.9 31.7h64V127.9H519.2zM48 351.6c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16zm390-6.9l-26.1 32.2c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-6 7.3-15 4.8-18 2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H96V175.8h41.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 3.9 7.9 1.2 11.3zm106-40.8h-69.2c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.3-9.9-8.5-25.1 1.2-33.9l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H544v128zm48 47.7c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16z"] -}; -var faHdd = { - prefix: "far", - iconName: "hdd", - icon: [576, 512, [], "f0a0", "M567.403 235.642L462.323 84.589A48 48 0 0 0 422.919 64H153.081a48 48 0 0 0-39.404 20.589L8.597 235.642A48.001 48.001 0 0 0 0 263.054V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V263.054c0-9.801-3-19.366-8.597-27.412zM153.081 112h269.838l77.913 112H75.168l77.913-112zM528 400H48V272h480v128zm-32-64c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32zm-96 0c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32z"] -}; -var faHeart = { - prefix: "far", - iconName: "heart", - icon: [512, 512, [], "f004", "M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z"] -}; -var faHospital = { - prefix: "far", - iconName: "hospital", - icon: [448, 512, [], "f0f8", "M128 244v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12zm140 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm-76 84v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm76 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm180 124v36H0v-36c0-6.627 5.373-12 12-12h19.5V85.035C31.5 73.418 42.245 64 55.5 64H144V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v40h88.5c13.255 0 24 9.418 24 21.035V464H436c6.627 0 12 5.373 12 12zM79.5 463H192v-67c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v67h112.5V112H304v24c0 13.255-10.745 24-24 24H168c-13.255 0-24-10.745-24-24v-24H79.5v351zM266 64h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6z"] -}; -var faHourglass = { - prefix: "far", - iconName: "hourglass", - icon: [384, 512, [], "f254", "M368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.899 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48zM64 48h256c0 101.62-57.307 184-128 184S64 149.621 64 48zm256 416H64c0-101.62 57.308-184 128-184s128 82.38 128 184z"] -}; -var faIdBadge = { - prefix: "far", - iconName: "id-badge", - icon: [384, 512, [], "f2c1", "M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h288v416zM144 112h96c8.8 0 16-7.2 16-16s-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16zm48 176c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z"] -}; -var faIdCard = { - prefix: "far", - iconName: "id-card", - icon: [576, 512, [], "f2c2", "M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H303.2c.9-4.5.8 3.6.8-22.4 0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6 0 26-.2 17.9.8 22.4H48V144h480v288zm-168-80h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm-168 96c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z"] -}; -var faImage = { - prefix: "far", - iconName: "image", - icon: [512, 512, [], "f03e", "M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"] -}; -var faImages = { - prefix: "far", - iconName: "images", - icon: [576, 512, [], "f302", "M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v48H54a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6v-10h48zm42-336H150a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6V86a6 6 0 0 0-6-6zm6-48c26.51 0 48 21.49 48 48v256c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h384zM264 144c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm-72 96l39.515-39.515c4.686-4.686 12.284-4.686 16.971 0L288 240l103.515-103.515c4.686-4.686 12.284-4.686 16.971 0L480 208v80H192v-48z"] -}; -var faKeyboard = { - prefix: "far", - iconName: "keyboard", - icon: [576, 512, [], "f11c", "M528 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm8 336c0 4.411-3.589 8-8 8H48c-4.411 0-8-3.589-8-8V112c0-4.411 3.589-8 8-8h480c4.411 0 8 3.589 8 8v288zM170 270v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-336 82v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm384 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zM122 188v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-98 158v-16c0-6.627-5.373-12-12-12H180c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h216c6.627 0 12-5.373 12-12z"] -}; -var faKiss = { - prefix: "far", - iconName: "kiss", - icon: [496, 512, [], "f596", "M168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm136 132c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"] -}; -var faKissBeam = { - prefix: "far", - iconName: "kiss-beam", - icon: [496, 512, [], "f597", "M168 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm56-148c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zm24-156c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4z"] -}; -var faKissWinkHeart = { - prefix: "far", - iconName: "kiss-wink-heart", - icon: [504, 512, [], "f598", "M304 308.5c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36 21.7-9.1 35.1-23.4 35.1-36.4zm70.5-83.5l9.5 8.5c3.8 3.3 9.3 4 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 5.8 3.1 11.2.7 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0zM136 208.5c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm365.1 194c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zM334 436.3c-26.1 12.5-55.2 19.7-86 19.7-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200c0 22.1-3.7 43.3-10.4 63.2 9 6.4 17 14.2 22.6 23.9 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-2.5-7.3 4.3 17.2-13.4-46.8z"] -}; -var faLaugh = { - prefix: "far", - iconName: "laugh", - icon: [496, 512, [], "f599", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 224c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"] -}; -var faLaughBeam = { - prefix: "far", - iconName: "laugh-beam", - icon: [496, 512, [], "f59a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 152c-23.8 0-52.7 29.3-56 71.4-.7 8.6 10.8 11.9 14.9 4.5l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.1-42.1-32-71.4-55.8-71.4zm-201 75.9l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.6 8.5 10.9 11.9 15.1 4.5zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"] -}; -var faLaughSquint = { - prefix: "far", - iconName: "laugh-squint", - icon: [496, 512, [], "f59b", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM343.6 196l33.6-40.3c8.6-10.3-3.8-24.8-15.4-18l-80 48c-7.8 4.7-7.8 15.9 0 20.6l80 48c11.5 6.8 24-7.6 15.4-18L343.6 196zm-209.4 58.3l80-48c7.8-4.7 7.8-15.9 0-20.6l-80-48c-11.6-6.9-24 7.7-15.4 18l33.6 40.3-33.6 40.3c-8.7 10.4 3.8 24.8 15.4 18zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"] -}; -var faLaughWink = { - prefix: "far", - iconName: "laugh-wink", - icon: [496, 512, [], "f59c", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6C68.8 359.6 48 309.4 48 256s20.8-103.6 58.6-141.4C144.4 76.8 194.6 56 248 56s103.6 20.8 141.4 58.6c37.8 37.8 58.6 88 58.6 141.4s-20.8 103.6-58.6 141.4zM328 164c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1zm-160 60c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"] -}; -var faLemon = { - prefix: "far", - iconName: "lemon", - icon: [512, 512, [], "f094", "M484.112 27.889C455.989-.233 416.108-8.057 387.059 8.865 347.604 31.848 223.504-41.111 91.196 91.197-41.277 223.672 31.923 347.472 8.866 387.058c-16.922 29.051-9.1 68.932 19.022 97.054 28.135 28.135 68.011 35.938 97.057 19.021 39.423-22.97 163.557 49.969 295.858-82.329 132.474-132.477 59.273-256.277 82.331-295.861 16.922-29.05 9.1-68.931-19.022-97.054zm-22.405 72.894c-38.8 66.609 45.6 165.635-74.845 286.08-120.44 120.443-219.475 36.048-286.076 74.843-22.679 13.207-64.035-27.241-50.493-50.488 38.8-66.609-45.6-165.635 74.845-286.08C245.573 4.702 344.616 89.086 411.219 50.292c22.73-13.24 64.005 27.288 50.488 50.491zm-169.861 8.736c1.37 10.96-6.404 20.957-17.365 22.327-54.846 6.855-135.779 87.787-142.635 142.635-1.373 10.989-11.399 18.734-22.326 17.365-10.961-1.37-18.735-11.366-17.365-22.326 9.162-73.286 104.167-168.215 177.365-177.365 10.953-1.368 20.956 6.403 22.326 17.364z"] -}; -var faLifeRing = { - prefix: "far", - iconName: "life-ring", - icon: [512, 512, [], "f1cd", "M256 504c136.967 0 248-111.033 248-248S392.967 8 256 8 8 119.033 8 256s111.033 248 248 248zm-103.398-76.72l53.411-53.411c31.806 13.506 68.128 13.522 99.974 0l53.411 53.411c-63.217 38.319-143.579 38.319-206.796 0zM336 256c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zm91.28 103.398l-53.411-53.411c13.505-31.806 13.522-68.128 0-99.974l53.411-53.411c38.319 63.217 38.319 143.579 0 206.796zM359.397 84.72l-53.411 53.411c-31.806-13.505-68.128-13.522-99.973 0L152.602 84.72c63.217-38.319 143.579-38.319 206.795 0zM84.72 152.602l53.411 53.411c-13.506 31.806-13.522 68.128 0 99.974L84.72 359.398c-38.319-63.217-38.319-143.579 0-206.796z"] -}; -var faLightbulb = { - prefix: "far", - iconName: "lightbulb", - icon: [352, 512, [], "f0eb", "M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"] -}; -var faListAlt = { - prefix: "far", - iconName: "list-alt", - icon: [512, 512, [], "f022", "M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z"] -}; -var faMap = { - prefix: "far", - iconName: "map", - icon: [576, 512, [], "f279", "M560.02 32c-1.96 0-3.98.37-5.96 1.16L384.01 96H384L212 35.28A64.252 64.252 0 0 0 191.76 32c-6.69 0-13.37 1.05-19.81 3.14L20.12 87.95A32.006 32.006 0 0 0 0 117.66v346.32C0 473.17 7.53 480 15.99 480c1.96 0 3.97-.37 5.96-1.16L192 416l172 60.71a63.98 63.98 0 0 0 40.05.15l151.83-52.81A31.996 31.996 0 0 0 576 394.34V48.02c0-9.19-7.53-16.02-15.98-16.02zM224 90.42l128 45.19v285.97l-128-45.19V90.42zM48 418.05V129.07l128-44.53v286.2l-.64.23L48 418.05zm480-35.13l-128 44.53V141.26l.64-.24L528 93.95v288.97z"] -}; -var faMeh = { - prefix: "far", - iconName: "meh", - icon: [496, 512, [], "f11a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z"] -}; -var faMehBlank = { - prefix: "far", - iconName: "meh-blank", - icon: [496, 512, [], "f5a4", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"] -}; -var faMehRollingEyes = { - prefix: "far", - iconName: "meh-rolling-eyes", - icon: [496, 512, [], "f5a5", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm88-304c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40 0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40zm-104-40c0-39.8-32.2-72-72-72s-72 32.2-72 72 32.2 72 72 72 72-32.2 72-72zm-112 0c0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40s-40-17.9-40-40zm192 128H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z"] -}; -var faMinusSquare = { - prefix: "far", - iconName: "minus-square", - icon: [448, 512, [], "f146", "M108 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H108zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"] -}; -var faMoneyBillAlt = { - prefix: "far", - iconName: "money-bill-alt", - icon: [640, 512, [], "f3d1", "M320 144c-53.02 0-96 50.14-96 112 0 61.85 42.98 112 96 112 53 0 96-50.13 96-112 0-61.86-42.98-112-96-112zm40 168c0 4.42-3.58 8-8 8h-64c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h16v-55.44l-.47.31a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09l15.33-10.22a23.99 23.99 0 0 1 13.31-4.03H328c4.42 0 8 3.58 8 8v88h16c4.42 0 8 3.58 8 8v16zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zm-16 272c-35.35 0-64 28.65-64 64H112c0-35.35-28.65-64-64-64V176c35.35 0 64-28.65 64-64h416c0 35.35 28.65 64 64 64v160z"] -}; -var faMoon = { - prefix: "far", - iconName: "moon", - icon: [512, 512, [], "f186", "M279.135 512c78.756 0 150.982-35.804 198.844-94.775 28.27-34.831-2.558-85.722-46.249-77.401-82.348 15.683-158.272-47.268-158.272-130.792 0-48.424 26.06-92.292 67.434-115.836 38.745-22.05 28.999-80.788-15.022-88.919A257.936 257.936 0 0 0 279.135 0c-141.36 0-256 114.575-256 256 0 141.36 114.576 256 256 256zm0-464c12.985 0 25.689 1.201 38.016 3.478-54.76 31.163-91.693 90.042-91.693 157.554 0 113.848 103.641 199.2 215.252 177.944C402.574 433.964 344.366 464 279.135 464c-114.875 0-208-93.125-208-208s93.125-208 208-208z"] -}; -var faNewspaper = { - prefix: "far", - iconName: "newspaper", - icon: [576, 512, [], "f1ea", "M552 64H112c-20.858 0-38.643 13.377-45.248 32H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h496c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24zM48 392V144h16v248c0 4.411-3.589 8-8 8s-8-3.589-8-8zm480 8H111.422c.374-2.614.578-5.283.578-8V112h416v288zM172 280h136c6.627 0 12-5.373 12-12v-96c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v96c0 6.627 5.373 12 12 12zm28-80h80v40h-80v-40zm-40 140v-24c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H172c-6.627 0-12-5.373-12-12zm192 0v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0-144v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0 72v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12z"] -}; -var faObjectGroup = { - prefix: "far", - iconName: "object-group", - icon: [512, 512, [], "f247", "M500 128c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v256H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V128h12zm-52-64h32v32h-32V64zM32 64h32v32H32V64zm32 384H32v-32h32v32zm416 0h-32v-32h32v32zm-40-64h-12c-6.627 0-12 5.373-12 12v12H96v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h12v256zm-36-192h-84v-52c0-6.628-5.373-12-12-12H108c-6.627 0-12 5.372-12 12v168c0 6.628 5.373 12 12 12h84v52c0 6.628 5.373 12 12 12h200c6.627 0 12-5.372 12-12V204c0-6.628-5.373-12-12-12zm-268-24h144v112H136V168zm240 176H232v-24h76c6.627 0 12-5.372 12-12v-76h56v112z"] -}; -var faObjectUngroup = { - prefix: "far", - iconName: "object-ungroup", - icon: [576, 512, [], "f248", "M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z"] -}; -var faPaperPlane = { - prefix: "far", - iconName: "paper-plane", - icon: [512, 512, [], "f1d8", "M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z"] -}; -var faPauseCircle = { - prefix: "far", - iconName: "pause-circle", - icon: [512, 512, [], "f28b", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z"] -}; -var faPlayCircle = { - prefix: "far", - iconName: "play-circle", - icon: [512, 512, [], "f144", "M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 21v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z"] -}; -var faPlusSquare = { - prefix: "far", - iconName: "plus-square", - icon: [448, 512, [], "f0fe", "M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"] -}; -var faQuestionCircle = { - prefix: "far", - iconName: "question-circle", - icon: [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"] -}; -var faRegistered = { - prefix: "far", - iconName: "registered", - icon: [512, 512, [], "f25d", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm110.442-81.791c-53.046-96.284-50.25-91.468-53.271-96.085 24.267-13.879 39.482-41.563 39.482-73.176 0-52.503-30.247-85.252-101.498-85.252h-78.667c-6.617 0-12 5.383-12 12V380c0 6.617 5.383 12 12 12h38.568c6.617 0 12-5.383 12-12v-83.663h31.958l47.515 89.303a11.98 11.98 0 0 0 10.593 6.36h42.81c9.14 0 14.914-9.799 10.51-17.791zM256.933 239.906h-33.875v-64.14h27.377c32.417 0 38.929 12.133 38.929 31.709-.001 20.913-11.518 32.431-32.431 32.431z"] -}; -var faSadCry = { - prefix: "far", - iconName: "sad-cry", - icon: [496, 512, [], "f5b3", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm144 386.4V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v151.4C315.5 447 282.8 456 248 456s-67.5-9-96-24.6V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v114.4c-34.6-36-56-84.7-56-138.4 0-110.3 89.7-200 200-200s200 89.7 200 200c0 53.7-21.4 102.5-56 138.4zM205.8 234.5c4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.3 7.9 4.8 13.7 1.6zM344 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.5 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm-96 92c-30.9 0-56 28.7-56 64s25.1 64 56 64 56-28.7 56-64-25.1-64-56-64z"] -}; -var faSadTear = { - prefix: "far", - iconName: "sad-tear", - icon: [496, 512, [], "f5b4", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm8-152c-13.2 0-24 10.8-24 24s10.8 24 24 24c23.8 0 46.3 10.5 61.6 28.8 8.1 9.8 23.2 11.9 33.8 3.1 10.2-8.5 11.6-23.6 3.1-33.8C330 320.8 294.1 304 256 304zm-88-64c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-165.6 98.8C151 290.1 126 325.4 126 342.9c0 22.7 18.8 41.1 42 41.1s42-18.4 42-41.1c0-17.5-25-52.8-36.4-68.1-2.8-3.7-8.4-3.7-11.2 0z"] -}; -var faSave = { - prefix: "far", - iconName: "save", - icon: [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"] -}; -var faShareSquare = { - prefix: "far", - iconName: "share-square", - icon: [576, 512, [], "f14d", "M561.938 158.06L417.94 14.092C387.926-15.922 336 5.097 336 48.032v57.198c-42.45 1.88-84.03 6.55-120.76 17.99-35.17 10.95-63.07 27.58-82.91 49.42C108.22 199.2 96 232.6 96 271.94c0 61.697 33.178 112.455 84.87 144.76 37.546 23.508 85.248-12.651 71.02-55.74-15.515-47.119-17.156-70.923 84.11-78.76V336c0 42.993 51.968 63.913 81.94 33.94l143.998-144c18.75-18.74 18.75-49.14 0-67.88zM384 336V232.16C255.309 234.082 166.492 255.35 206.31 376 176.79 357.55 144 324.08 144 271.94c0-109.334 129.14-118.947 240-119.85V48l144 144-144 144zm24.74 84.493a82.658 82.658 0 0 0 20.974-9.303c7.976-4.952 18.286.826 18.286 10.214V464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h132c6.627 0 12 5.373 12 12v4.486c0 4.917-2.987 9.369-7.569 11.152-13.702 5.331-26.396 11.537-38.05 18.585a12.138 12.138 0 0 1-6.28 1.777H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6v-25.966c0-5.37 3.579-10.059 8.74-11.541z"] -}; -var faSmile = { - prefix: "far", - iconName: "smile", - icon: [496, 512, [], "f118", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z"] -}; -var faSmileBeam = { - prefix: "far", - iconName: "smile-beam", - icon: [496, 512, [], "f5b8", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm84-143.4c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.6-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.2-8.4-25.3-7.1-33.8 3.1zM136.5 211c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.4 1.1 7.4-.5 9.3-3.7l9.5-17zM328 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4z"] -}; -var faSmileWink = { - prefix: "far", - iconName: "smile-wink", - icon: [496, 512, [], "f4da", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm117.8-146.4c-10.2-8.5-25.3-7.1-33.8 3.1-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-60c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1z"] -}; -var faSnowflake = { - prefix: "far", - iconName: "snowflake", - icon: [448, 512, [], "f2dc", "M440.1 355.2l-39.2-23 34.1-9.3c8.4-2.3 13.4-11.1 11.1-19.6l-4.1-15.5c-2.2-8.5-10.9-13.6-19.3-11.3L343 298.2 271.2 256l71.9-42.2 79.7 21.7c8.4 2.3 17-2.8 19.3-11.3l4.1-15.5c2.2-8.5-2.7-17.3-11.1-19.6l-34.1-9.3 39.2-23c7.5-4.4 10.1-14.2 5.8-21.9l-7.9-13.9c-4.3-7.7-14-10.3-21.5-5.9l-39.2 23 9.1-34.7c2.2-8.5-2.7-17.3-11.1-19.6l-15.2-4.1c-8.4-2.3-17 2.8-19.3 11.3l-21.3 81-71.9 42.2v-84.5L306 70.4c6.1-6.2 6.1-16.4 0-22.6l-11.1-11.3c-6.1-6.2-16.1-6.2-22.2 0l-24.9 25.4V16c0-8.8-7-16-15.7-16h-15.7c-8.7 0-15.7 7.2-15.7 16v46.1l-24.9-25.4c-6.1-6.2-16.1-6.2-22.2 0L142.1 48c-6.1 6.2-6.1 16.4 0 22.6l58.3 59.3v84.5l-71.9-42.2-21.3-81c-2.2-8.5-10.9-13.6-19.3-11.3L72.7 84c-8.4 2.3-13.4 11.1-11.1 19.6l9.1 34.7-39.2-23c-7.5-4.4-17.1-1.8-21.5 5.9l-7.9 13.9c-4.3 7.7-1.8 17.4 5.8 21.9l39.2 23-34.1 9.1c-8.4 2.3-13.4 11.1-11.1 19.6L6 224.2c2.2 8.5 10.9 13.6 19.3 11.3l79.7-21.7 71.9 42.2-71.9 42.2-79.7-21.7c-8.4-2.3-17 2.8-19.3 11.3l-4.1 15.5c-2.2 8.5 2.7 17.3 11.1 19.6l34.1 9.3-39.2 23c-7.5 4.4-10.1 14.2-5.8 21.9L10 391c4.3 7.7 14 10.3 21.5 5.9l39.2-23-9.1 34.7c-2.2 8.5 2.7 17.3 11.1 19.6l15.2 4.1c8.4 2.3 17-2.8 19.3-11.3l21.3-81 71.9-42.2v84.5l-58.3 59.3c-6.1 6.2-6.1 16.4 0 22.6l11.1 11.3c6.1 6.2 16.1 6.2 22.2 0l24.9-25.4V496c0 8.8 7 16 15.7 16h15.7c8.7 0 15.7-7.2 15.7-16v-46.1l24.9 25.4c6.1 6.2 16.1 6.2 22.2 0l11.1-11.3c6.1-6.2 6.1-16.4 0-22.6l-58.3-59.3v-84.5l71.9 42.2 21.3 81c2.2 8.5 10.9 13.6 19.3 11.3L375 428c8.4-2.3 13.4-11.1 11.1-19.6l-9.1-34.7 39.2 23c7.5 4.4 17.1 1.8 21.5-5.9l7.9-13.9c4.6-7.5 2.1-17.3-5.5-21.7z"] -}; -var faSquare = { - prefix: "far", - iconName: "square", - icon: [448, 512, [], "f0c8", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z"] -}; -var faStar = { - prefix: "far", - iconName: "star", - icon: [576, 512, [], "f005", "M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z"] -}; -var faStarHalf = { - prefix: "far", - iconName: "star-half", - icon: [576, 512, [], "f089", "M288 385.3l-124.3 65.4 23.7-138.4-100.6-98 139-20.2 62.2-126V0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6v-54.3z"] -}; -var faStickyNote = { - prefix: "far", - iconName: "sticky-note", - icon: [448, 512, [], "f249", "M448 348.106V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80v351.988c0 26.51 21.49 48 48 48h268.118a48 48 0 0 0 33.941-14.059l83.882-83.882A48 48 0 0 0 448 348.106zm-128 80v-76.118h76.118L320 428.106zM400 80v223.988H296c-13.255 0-24 10.745-24 24v104H48V80h352z"] -}; -var faStopCircle = { - prefix: "far", - iconName: "stop-circle", - icon: [512, 512, [], "f28d", "M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm296-80v160c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16z"] -}; -var faSun = { - prefix: "far", - iconName: "sun", - icon: [512, 512, [], "f185", "M494.2 221.9l-59.8-40.5 13.7-71c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l40.4-59.9 70.9 13.7c13.4 2.7 26.8-1.6 36.3-11.1 9.5-9.5 13.6-23.1 11.1-36.3l-13.7-71 59.8-40.5c11.1-7.5 17.8-20.1 17.8-33.5-.1-13.6-6.7-26.1-17.9-33.7zm-112.9 85.6l17.6 91.2-91-17.6L256 458l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-17.6 91.1 76.8 52-76.8 52.1zM256 152c-57.3 0-104 46.7-104 104s46.7 104 104 104 104-46.7 104-104-46.7-104-104-104zm0 160c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56z"] -}; -var faSurprise = { - prefix: "far", - iconName: "surprise", - icon: [496, 512, [], "f5c2", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-176c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm-48-72c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"] -}; -var faThumbsDown = { - prefix: "far", - iconName: "thumbs-down", - icon: [512, 512, [], "f165", "M466.27 225.31c4.674-22.647.864-44.538-8.99-62.99 2.958-23.868-4.021-48.565-17.34-66.99C438.986 39.423 404.117 0 327 0c-7 0-15 .01-22.22.01C201.195.01 168.997 40 128 40h-10.845c-5.64-4.975-13.042-8-21.155-8H32C14.327 32 0 46.327 0 64v240c0 17.673 14.327 32 32 32h64c11.842 0 22.175-6.438 27.708-16h7.052c19.146 16.953 46.013 60.653 68.76 83.4 13.667 13.667 10.153 108.6 71.76 108.6 57.58 0 95.27-31.936 95.27-104.73 0-18.41-3.93-33.73-8.85-46.54h36.48c48.602 0 85.82-41.565 85.82-85.58 0-19.15-4.96-34.99-13.73-49.84zM64 296c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm330.18 16.73H290.19c0 37.82 28.36 55.37 28.36 94.54 0 23.75 0 56.73-47.27 56.73-18.91-18.91-9.46-66.18-37.82-94.54C206.9 342.89 167.28 272 138.92 272H128V85.83c53.611 0 100.001-37.82 171.64-37.82h37.82c35.512 0 60.82 17.12 53.12 65.9 15.2 8.16 26.5 36.44 13.94 57.57 21.581 20.384 18.699 51.065 5.21 65.62 9.45 0 22.36 18.91 22.27 37.81-.09 18.91-16.71 37.82-37.82 37.82z"] -}; -var faThumbsUp = { - prefix: "far", - iconName: "thumbs-up", - icon: [512, 512, [], "f164", "M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z"] -}; -var faTimesCircle = { - prefix: "far", - iconName: "times-circle", - icon: [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z"] -}; -var faTired = { - prefix: "far", - iconName: "tired", - icon: [496, 512, [], "f5c8", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm129.1-303.8c-3.8-4.4-10.3-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.8 1.6 15.3-2.5 3.8-4.5 3.9-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zM220 208c0-4.2-2.2-8.1-5.8-10.3l-80-48c-5-3-11.5-1.9-15.3 2.5-3.8 4.5-3.9 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.5 4.1 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3zm28 64c-45.4 0-100.9 38.3-107.8 93.3-1.5 11.8 6.9 21.6 15.5 17.9C178.4 373.5 212 368 248 368s69.6 5.5 92.3 15.2c8.5 3.7 17-6 15.5-17.9-6.9-55-62.4-93.3-107.8-93.3z"] -}; -var faTrashAlt = { - prefix: "far", - iconName: "trash-alt", - icon: [448, 512, [], "f2ed", "M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z"] -}; -var faUser = { - prefix: "far", - iconName: "user", - icon: [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"] -}; -var faUserCircle = { - prefix: "far", - iconName: "user-circle", - icon: [496, 512, [], "f2bd", "M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"] -}; -var faWindowClose = { - prefix: "far", - iconName: "window-close", - icon: [512, 512, [], "f410", "M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v340zM356.5 194.6L295.1 256l61.4 61.4c4.6 4.6 4.6 12.1 0 16.8l-22.3 22.3c-4.6 4.6-12.1 4.6-16.8 0L256 295.1l-61.4 61.4c-4.6 4.6-12.1 4.6-16.8 0l-22.3-22.3c-4.6-4.6-4.6-12.1 0-16.8l61.4-61.4-61.4-61.4c-4.6-4.6-4.6-12.1 0-16.8l22.3-22.3c4.6-4.6 12.1-4.6 16.8 0l61.4 61.4 61.4-61.4c4.6-4.6 12.1-4.6 16.8 0l22.3 22.3c4.7 4.6 4.7 12.1 0 16.8z"] -}; -var faWindowMaximize = { - prefix: "far", - iconName: "window-maximize", - icon: [512, 512, [], "f2d0", "M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z"] -}; -var faWindowMinimize = { - prefix: "far", - iconName: "window-minimize", - icon: [512, 512, [], "f2d1", "M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z"] -}; -var faWindowRestore = { - prefix: "far", - iconName: "window-restore", - icon: [512, 512, [], "f2d2", "M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-96 464H48V256h320v208zm96-96h-48V144c0-26.5-21.5-48-48-48H144V48h320v320z"] -}; -var _iconsCache = { - faAddressBook, - faAddressCard, - faAngry, - faArrowAltCircleDown, - faArrowAltCircleLeft, - faArrowAltCircleRight, - faArrowAltCircleUp, - faBell, - faBellSlash, - faBookmark, - faBuilding, - faCalendar, - faCalendarAlt, - faCalendarCheck, - faCalendarMinus, - faCalendarPlus, - faCalendarTimes, - faCaretSquareDown, - faCaretSquareLeft, - faCaretSquareRight, - faCaretSquareUp, - faChartBar, - faCheckCircle, - faCheckSquare, - faCircle, - faClipboard, - faClock, - faClone, - faClosedCaptioning, - faComment, - faCommentAlt, - faCommentDots, - faComments, - faCompass, - faCopy, - faCopyright, - faCreditCard, - faDizzy, - faDotCircle, - faEdit, - faEnvelope, - faEnvelopeOpen, - faEye, - faEyeSlash, - faFile, - faFileAlt, - faFileArchive, - faFileAudio, - faFileCode, - faFileExcel, - faFileImage, - faFilePdf, - faFilePowerpoint, - faFileVideo, - faFileWord, - faFlag, - faFlushed, - faFolder, - faFolderOpen, - faFontAwesomeLogoFull, - faFrown, - faFrownOpen, - faFutbol, - faGem, - faGrimace, - faGrin, - faGrinAlt, - faGrinBeam, - faGrinBeamSweat, - faGrinHearts, - faGrinSquint, - faGrinSquintTears, - faGrinStars, - faGrinTears, - faGrinTongue, - faGrinTongueSquint, - faGrinTongueWink, - faGrinWink, - faHandLizard, - faHandPaper, - faHandPeace, - faHandPointDown, - faHandPointLeft, - faHandPointRight, - faHandPointUp, - faHandPointer, - faHandRock, - faHandScissors, - faHandSpock, - faHandshake, - faHdd, - faHeart, - faHospital, - faHourglass, - faIdBadge, - faIdCard, - faImage, - faImages, - faKeyboard, - faKiss, - faKissBeam, - faKissWinkHeart, - faLaugh, - faLaughBeam, - faLaughSquint, - faLaughWink, - faLemon, - faLifeRing, - faLightbulb, - faListAlt, - faMap, - faMeh, - faMehBlank, - faMehRollingEyes, - faMinusSquare, - faMoneyBillAlt, - faMoon, - faNewspaper, - faObjectGroup, - faObjectUngroup, - faPaperPlane, - faPauseCircle, - faPlayCircle, - faPlusSquare, - faQuestionCircle, - faRegistered, - faSadCry, - faSadTear, - faSave, - faShareSquare, - faSmile, - faSmileBeam, - faSmileWink, - faSnowflake, - faSquare, - faStar, - faStarHalf, - faStickyNote, - faStopCircle, - faSun, - faSurprise, - faThumbsDown, - faThumbsUp, - faTimesCircle, - faTired, - faTrashAlt, - faUser, - faUserCircle, - faWindowClose, - faWindowMaximize, - faWindowMinimize, - faWindowRestore -}; - -// node_modules/@fortawesome/free-solid-svg-icons/index.es.js -var faAd = { - prefix: "fas", - iconName: "ad", - icon: [512, 512, [], "f641", "M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z"] -}; -var faAddressBook2 = { - prefix: "fas", - iconName: "address-book", - icon: [448, 512, [], "f2b9", "M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"] -}; -var faAddressCard2 = { - prefix: "fas", - iconName: "address-card", - icon: [576, 512, [], "f2bb", "M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"] -}; -var faAdjust = { - prefix: "fas", - iconName: "adjust", - icon: [512, 512, [], "f042", "M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z"] -}; -var faAirFreshener = { - prefix: "fas", - iconName: "air-freshener", - icon: [512, 512, [], "f5d0", "M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z"] -}; -var faAlignCenter = { - prefix: "fas", - iconName: "align-center", - icon: [448, 512, [], "f037", "M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z"] -}; -var faAlignJustify = { - prefix: "fas", - iconName: "align-justify", - icon: [448, 512, [], "f039", "M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"] -}; -var faAlignLeft = { - prefix: "fas", - iconName: "align-left", - icon: [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"] -}; -var faAlignRight = { - prefix: "fas", - iconName: "align-right", - icon: [448, 512, [], "f038", "M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z"] -}; -var faAllergies = { - prefix: "fas", - iconName: "allergies", - icon: [448, 512, [], "f461", "M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"] -}; -var faAmbulance = { - prefix: "fas", - iconName: "ambulance", - icon: [640, 512, [], "f0f9", "M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"] -}; -var faAmericanSignLanguageInterpreting = { - prefix: "fas", - iconName: "american-sign-language-interpreting", - icon: [640, 512, [], "f2a3", "M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z"] -}; -var faAnchor = { - prefix: "fas", - iconName: "anchor", - icon: [576, 512, [], "f13d", "M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z"] -}; -var faAngleDoubleDown = { - prefix: "fas", - iconName: "angle-double-down", - icon: [320, 512, [], "f103", "M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z"] -}; -var faAngleDoubleLeft = { - prefix: "fas", - iconName: "angle-double-left", - icon: [448, 512, [], "f100", "M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z"] -}; -var faAngleDoubleRight = { - prefix: "fas", - iconName: "angle-double-right", - icon: [448, 512, [], "f101", "M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"] -}; -var faAngleDoubleUp = { - prefix: "fas", - iconName: "angle-double-up", - icon: [320, 512, [], "f102", "M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"] -}; -var faAngleDown = { - prefix: "fas", - iconName: "angle-down", - icon: [320, 512, [], "f107", "M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"] -}; -var faAngleLeft = { - prefix: "fas", - iconName: "angle-left", - icon: [256, 512, [], "f104", "M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"] -}; -var faAngleRight = { - prefix: "fas", - iconName: "angle-right", - icon: [256, 512, [], "f105", "M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"] -}; -var faAngleUp = { - prefix: "fas", - iconName: "angle-up", - icon: [320, 512, [], "f106", "M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"] -}; -var faAngry2 = { - prefix: "fas", - iconName: "angry", - icon: [496, 512, [], "f556", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z"] -}; -var faAnkh = { - prefix: "fas", - iconName: "ankh", - icon: [320, 512, [], "f644", "M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z"] -}; -var faAppleAlt = { - prefix: "fas", - iconName: "apple-alt", - icon: [448, 512, [], "f5d1", "M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z"] -}; -var faArchive = { - prefix: "fas", - iconName: "archive", - icon: [512, 512, [], "f187", "M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z"] -}; -var faArchway = { - prefix: "fas", - iconName: "archway", - icon: [576, 512, [], "f557", "M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z"] -}; -var faArrowAltCircleDown2 = { - prefix: "fas", - iconName: "arrow-alt-circle-down", - icon: [512, 512, [], "f358", "M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z"] -}; -var faArrowAltCircleLeft2 = { - prefix: "fas", - iconName: "arrow-alt-circle-left", - icon: [512, 512, [], "f359", "M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z"] -}; -var faArrowAltCircleRight2 = { - prefix: "fas", - iconName: "arrow-alt-circle-right", - icon: [512, 512, [], "f35a", "M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z"] -}; -var faArrowAltCircleUp2 = { - prefix: "fas", - iconName: "arrow-alt-circle-up", - icon: [512, 512, [], "f35b", "M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z"] -}; -var faArrowCircleDown = { - prefix: "fas", - iconName: "arrow-circle-down", - icon: [512, 512, [], "f0ab", "M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z"] -}; -var faArrowCircleLeft = { - prefix: "fas", - iconName: "arrow-circle-left", - icon: [512, 512, [], "f0a8", "M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z"] -}; -var faArrowCircleRight = { - prefix: "fas", - iconName: "arrow-circle-right", - icon: [512, 512, [], "f0a9", "M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"] -}; -var faArrowCircleUp = { - prefix: "fas", - iconName: "arrow-circle-up", - icon: [512, 512, [], "f0aa", "M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z"] -}; -var faArrowDown = { - prefix: "fas", - iconName: "arrow-down", - icon: [448, 512, [], "f063", "M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"] -}; -var faArrowLeft = { - prefix: "fas", - iconName: "arrow-left", - icon: [448, 512, [], "f060", "M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"] -}; -var faArrowRight = { - prefix: "fas", - iconName: "arrow-right", - icon: [448, 512, [], "f061", "M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"] -}; -var faArrowUp = { - prefix: "fas", - iconName: "arrow-up", - icon: [448, 512, [], "f062", "M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"] -}; -var faArrowsAlt = { - prefix: "fas", - iconName: "arrows-alt", - icon: [512, 512, [], "f0b2", "M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"] -}; -var faArrowsAltH = { - prefix: "fas", - iconName: "arrows-alt-h", - icon: [512, 512, [], "f337", "M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z"] -}; -var faArrowsAltV = { - prefix: "fas", - iconName: "arrows-alt-v", - icon: [256, 512, [], "f338", "M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"] -}; -var faAssistiveListeningSystems = { - prefix: "fas", - iconName: "assistive-listening-systems", - icon: [512, 512, [], "f2a2", "M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z"] -}; -var faAsterisk = { - prefix: "fas", - iconName: "asterisk", - icon: [512, 512, [], "f069", "M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z"] -}; -var faAt = { - prefix: "fas", - iconName: "at", - icon: [512, 512, [], "f1fa", "M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z"] -}; -var faAtlas = { - prefix: "fas", - iconName: "atlas", - icon: [448, 512, [], "f558", "M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z"] -}; -var faAtom = { - prefix: "fas", - iconName: "atom", - icon: [448, 512, [], "f5d2", "M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z"] -}; -var faAudioDescription = { - prefix: "fas", - iconName: "audio-description", - icon: [512, 512, [], "f29e", "M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z"] -}; -var faAward = { - prefix: "fas", - iconName: "award", - icon: [384, 512, [], "f559", "M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z"] -}; -var faBaby = { - prefix: "fas", - iconName: "baby", - icon: [384, 512, [], "f77c", "M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z"] -}; -var faBabyCarriage = { - prefix: "fas", - iconName: "baby-carriage", - icon: [512, 512, [], "f77d", "M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z"] -}; -var faBackspace = { - prefix: "fas", - iconName: "backspace", - icon: [640, 512, [], "f55a", "M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z"] -}; -var faBackward = { - prefix: "fas", - iconName: "backward", - icon: [512, 512, [], "f04a", "M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"] -}; -var faBacon = { - prefix: "fas", - iconName: "bacon", - icon: [576, 512, [], "f7e5", "M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z"] -}; -var faBacteria = { - prefix: "fas", - iconName: "bacteria", - icon: [640, 512, [], "e059", "M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z"] -}; -var faBacterium = { - prefix: "fas", - iconName: "bacterium", - icon: [512, 512, [], "e05a", "M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z"] -}; -var faBahai = { - prefix: "fas", - iconName: "bahai", - icon: [512, 512, [], "f666", "M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z"] -}; -var faBalanceScale = { - prefix: "fas", - iconName: "balance-scale", - icon: [640, 512, [], "f24e", "M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"] -}; -var faBalanceScaleLeft = { - prefix: "fas", - iconName: "balance-scale-left", - icon: [640, 512, [], "f515", "M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z"] -}; -var faBalanceScaleRight = { - prefix: "fas", - iconName: "balance-scale-right", - icon: [640, 512, [], "f516", "M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z"] -}; -var faBan = { - prefix: "fas", - iconName: "ban", - icon: [512, 512, [], "f05e", "M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z"] -}; -var faBandAid = { - prefix: "fas", - iconName: "band-aid", - icon: [640, 512, [], "f462", "M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z"] -}; -var faBarcode = { - prefix: "fas", - iconName: "barcode", - icon: [512, 512, [], "f02a", "M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z"] -}; -var faBars = { - prefix: "fas", - iconName: "bars", - icon: [448, 512, [], "f0c9", "M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"] -}; -var faBaseballBall = { - prefix: "fas", - iconName: "baseball-ball", - icon: [496, 512, [], "f433", "M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z"] -}; -var faBasketballBall = { - prefix: "fas", - iconName: "basketball-ball", - icon: [496, 512, [], "f434", "M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z"] -}; -var faBath = { - prefix: "fas", - iconName: "bath", - icon: [512, 512, [], "f2cd", "M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z"] -}; -var faBatteryEmpty = { - prefix: "fas", - iconName: "battery-empty", - icon: [640, 512, [], "f244", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z"] -}; -var faBatteryFull = { - prefix: "fas", - iconName: "battery-full", - icon: [640, 512, [], "f240", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z"] -}; -var faBatteryHalf = { - prefix: "fas", - iconName: "battery-half", - icon: [640, 512, [], "f242", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z"] -}; -var faBatteryQuarter = { - prefix: "fas", - iconName: "battery-quarter", - icon: [640, 512, [], "f243", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z"] -}; -var faBatteryThreeQuarters = { - prefix: "fas", - iconName: "battery-three-quarters", - icon: [640, 512, [], "f241", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z"] -}; -var faBed = { - prefix: "fas", - iconName: "bed", - icon: [640, 512, [], "f236", "M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z"] -}; -var faBeer = { - prefix: "fas", - iconName: "beer", - icon: [448, 512, [], "f0fc", "M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z"] -}; -var faBell2 = { - prefix: "fas", - iconName: "bell", - icon: [448, 512, [], "f0f3", "M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z"] -}; -var faBellSlash2 = { - prefix: "fas", - iconName: "bell-slash", - icon: [640, 512, [], "f1f6", "M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z"] -}; -var faBezierCurve = { - prefix: "fas", - iconName: "bezier-curve", - icon: [640, 512, [], "f55b", "M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"] -}; -var faBible = { - prefix: "fas", - iconName: "bible", - icon: [448, 512, [], "f647", "M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"] -}; -var faBicycle = { - prefix: "fas", - iconName: "bicycle", - icon: [640, 512, [], "f206", "M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z"] -}; -var faBiking = { - prefix: "fas", - iconName: "biking", - icon: [640, 512, [], "f84a", "M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"] -}; -var faBinoculars = { - prefix: "fas", - iconName: "binoculars", - icon: [512, 512, [], "f1e5", "M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z"] -}; -var faBiohazard = { - prefix: "fas", - iconName: "biohazard", - icon: [576, 512, [], "f780", "M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"] -}; -var faBirthdayCake = { - prefix: "fas", - iconName: "birthday-cake", - icon: [448, 512, [], "f1fd", "M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z"] -}; -var faBlender = { - prefix: "fas", - iconName: "blender", - icon: [512, 512, [], "f517", "M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z"] -}; -var faBlenderPhone = { - prefix: "fas", - iconName: "blender-phone", - icon: [576, 512, [], "f6b6", "M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faBlind = { - prefix: "fas", - iconName: "blind", - icon: [384, 512, [], "f29d", "M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z"] -}; -var faBlog = { - prefix: "fas", - iconName: "blog", - icon: [512, 512, [], "f781", "M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z"] -}; -var faBold = { - prefix: "fas", - iconName: "bold", - icon: [384, 512, [], "f032", "M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z"] -}; -var faBolt = { - prefix: "fas", - iconName: "bolt", - icon: [320, 512, [], "f0e7", "M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z"] -}; -var faBomb = { - prefix: "fas", - iconName: "bomb", - icon: [512, 512, [], "f1e2", "M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z"] -}; -var faBone = { - prefix: "fas", - iconName: "bone", - icon: [640, 512, [], "f5d7", "M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z"] -}; -var faBong = { - prefix: "fas", - iconName: "bong", - icon: [448, 512, [], "f55c", "M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z"] -}; -var faBook = { - prefix: "fas", - iconName: "book", - icon: [448, 512, [], "f02d", "M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z"] -}; -var faBookDead = { - prefix: "fas", - iconName: "book-dead", - icon: [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"] -}; -var faBookMedical = { - prefix: "fas", - iconName: "book-medical", - icon: [448, 512, [], "f7e6", "M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z"] -}; -var faBookOpen = { - prefix: "fas", - iconName: "book-open", - icon: [576, 512, [], "f518", "M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z"] -}; -var faBookReader = { - prefix: "fas", - iconName: "book-reader", - icon: [512, 512, [], "f5da", "M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z"] -}; -var faBookmark2 = { - prefix: "fas", - iconName: "bookmark", - icon: [384, 512, [], "f02e", "M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"] -}; -var faBorderAll = { - prefix: "fas", - iconName: "border-all", - icon: [448, 512, [], "f84c", "M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z"] -}; -var faBorderNone = { - prefix: "fas", - iconName: "border-none", - icon: [448, 512, [], "f850", "M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"] -}; -var faBorderStyle = { - prefix: "fas", - iconName: "border-style", - icon: [448, 512, [], "f853", "M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"] -}; -var faBowlingBall = { - prefix: "fas", - iconName: "bowling-ball", - icon: [496, 512, [], "f436", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"] -}; -var faBox = { - prefix: "fas", - iconName: "box", - icon: [512, 512, [], "f466", "M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z"] -}; -var faBoxOpen = { - prefix: "fas", - iconName: "box-open", - icon: [640, 512, [], "f49e", "M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z"] -}; -var faBoxTissue = { - prefix: "fas", - iconName: "box-tissue", - icon: [512, 512, [], "e05b", "M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z"] -}; -var faBoxes = { - prefix: "fas", - iconName: "boxes", - icon: [576, 512, [], "f468", "M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z"] -}; -var faBraille = { - prefix: "fas", - iconName: "braille", - icon: [640, 512, [], "f2a1", "M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"] -}; -var faBrain = { - prefix: "fas", - iconName: "brain", - icon: [576, 512, [], "f5dc", "M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z"] -}; -var faBreadSlice = { - prefix: "fas", - iconName: "bread-slice", - icon: [576, 512, [], "f7ec", "M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z"] -}; -var faBriefcase = { - prefix: "fas", - iconName: "briefcase", - icon: [512, 512, [], "f0b1", "M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z"] -}; -var faBriefcaseMedical = { - prefix: "fas", - iconName: "briefcase-medical", - icon: [512, 512, [], "f469", "M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z"] -}; -var faBroadcastTower = { - prefix: "fas", - iconName: "broadcast-tower", - icon: [640, 512, [], "f519", "M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z"] -}; -var faBroom = { - prefix: "fas", - iconName: "broom", - icon: [640, 512, [], "f51a", "M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z"] -}; -var faBrush = { - prefix: "fas", - iconName: "brush", - icon: [384, 512, [], "f55d", "M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z"] -}; -var faBug = { - prefix: "fas", - iconName: "bug", - icon: [512, 512, [], "f188", "M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z"] -}; -var faBuilding2 = { - prefix: "fas", - iconName: "building", - icon: [448, 512, [], "f1ad", "M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z"] -}; -var faBullhorn = { - prefix: "fas", - iconName: "bullhorn", - icon: [576, 512, [], "f0a1", "M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z"] -}; -var faBullseye = { - prefix: "fas", - iconName: "bullseye", - icon: [496, 512, [], "f140", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z"] -}; -var faBurn = { - prefix: "fas", - iconName: "burn", - icon: [384, 512, [], "f46a", "M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z"] -}; -var faBus = { - prefix: "fas", - iconName: "bus", - icon: [512, 512, [], "f207", "M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faBusAlt = { - prefix: "fas", - iconName: "bus-alt", - icon: [512, 512, [], "f55e", "M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faBusinessTime = { - prefix: "fas", - iconName: "business-time", - icon: [640, 512, [], "f64a", "M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z"] -}; -var faCalculator = { - prefix: "fas", - iconName: "calculator", - icon: [448, 512, [], "f1ec", "M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z"] -}; -var faCalendar2 = { - prefix: "fas", - iconName: "calendar", - icon: [448, 512, [], "f133", "M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z"] -}; -var faCalendarAlt2 = { - prefix: "fas", - iconName: "calendar-alt", - icon: [448, 512, [], "f073", "M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"] -}; -var faCalendarCheck2 = { - prefix: "fas", - iconName: "calendar-check", - icon: [448, 512, [], "f274", "M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z"] -}; -var faCalendarDay = { - prefix: "fas", - iconName: "calendar-day", - icon: [448, 512, [], "f783", "M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"] -}; -var faCalendarMinus2 = { - prefix: "fas", - iconName: "calendar-minus", - icon: [448, 512, [], "f272", "M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z"] -}; -var faCalendarPlus2 = { - prefix: "fas", - iconName: "calendar-plus", - icon: [448, 512, [], "f271", "M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z"] -}; -var faCalendarTimes2 = { - prefix: "fas", - iconName: "calendar-times", - icon: [448, 512, [], "f273", "M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z"] -}; -var faCalendarWeek = { - prefix: "fas", - iconName: "calendar-week", - icon: [448, 512, [], "f784", "M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"] -}; -var faCamera = { - prefix: "fas", - iconName: "camera", - icon: [512, 512, [], "f030", "M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z"] -}; -var faCameraRetro = { - prefix: "fas", - iconName: "camera-retro", - icon: [512, 512, [], "f083", "M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z"] -}; -var faCampground = { - prefix: "fas", - iconName: "campground", - icon: [640, 512, [], "f6bb", "M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z"] -}; -var faCandyCane = { - prefix: "fas", - iconName: "candy-cane", - icon: [512, 512, [], "f786", "M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z"] -}; -var faCannabis = { - prefix: "fas", - iconName: "cannabis", - icon: [512, 512, [], "f55f", "M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z"] -}; -var faCapsules = { - prefix: "fas", - iconName: "capsules", - icon: [576, 512, [], "f46b", "M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z"] -}; -var faCar = { - prefix: "fas", - iconName: "car", - icon: [512, 512, [], "f1b9", "M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z"] -}; -var faCarAlt = { - prefix: "fas", - iconName: "car-alt", - icon: [480, 512, [], "f5de", "M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z"] -}; -var faCarBattery = { - prefix: "fas", - iconName: "car-battery", - icon: [512, 512, [], "f5df", "M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z"] -}; -var faCarCrash = { - prefix: "fas", - iconName: "car-crash", - icon: [640, 512, [], "f5e1", "M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z"] -}; -var faCarSide = { - prefix: "fas", - iconName: "car-side", - icon: [640, 512, [], "f5e4", "M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z"] -}; -var faCaravan = { - prefix: "fas", - iconName: "caravan", - icon: [640, 512, [], "f8ff", "M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z"] -}; -var faCaretDown = { - prefix: "fas", - iconName: "caret-down", - icon: [320, 512, [], "f0d7", "M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"] -}; -var faCaretLeft = { - prefix: "fas", - iconName: "caret-left", - icon: [192, 512, [], "f0d9", "M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z"] -}; -var faCaretRight = { - prefix: "fas", - iconName: "caret-right", - icon: [192, 512, [], "f0da", "M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z"] -}; -var faCaretSquareDown2 = { - prefix: "fas", - iconName: "caret-square-down", - icon: [448, 512, [], "f150", "M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z"] -}; -var faCaretSquareLeft2 = { - prefix: "fas", - iconName: "caret-square-left", - icon: [448, 512, [], "f191", "M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z"] -}; -var faCaretSquareRight2 = { - prefix: "fas", - iconName: "caret-square-right", - icon: [448, 512, [], "f152", "M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z"] -}; -var faCaretSquareUp2 = { - prefix: "fas", - iconName: "caret-square-up", - icon: [448, 512, [], "f151", "M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z"] -}; -var faCaretUp = { - prefix: "fas", - iconName: "caret-up", - icon: [320, 512, [], "f0d8", "M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"] -}; -var faCarrot = { - prefix: "fas", - iconName: "carrot", - icon: [512, 512, [], "f787", "M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z"] -}; -var faCartArrowDown = { - prefix: "fas", - iconName: "cart-arrow-down", - icon: [576, 512, [], "f218", "M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z"] -}; -var faCartPlus = { - prefix: "fas", - iconName: "cart-plus", - icon: [576, 512, [], "f217", "M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z"] -}; -var faCashRegister = { - prefix: "fas", - iconName: "cash-register", - icon: [512, 512, [], "f788", "M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z"] -}; -var faCat = { - prefix: "fas", - iconName: "cat", - icon: [512, 512, [], "f6be", "M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"] -}; -var faCertificate = { - prefix: "fas", - iconName: "certificate", - icon: [512, 512, [], "f0a3", "M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z"] -}; -var faChair = { - prefix: "fas", - iconName: "chair", - icon: [448, 512, [], "f6c0", "M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z"] -}; -var faChalkboard = { - prefix: "fas", - iconName: "chalkboard", - icon: [640, 512, [], "f51b", "M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"] -}; -var faChalkboardTeacher = { - prefix: "fas", - iconName: "chalkboard-teacher", - icon: [640, 512, [], "f51c", "M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z"] -}; -var faChargingStation = { - prefix: "fas", - iconName: "charging-station", - icon: [576, 512, [], "f5e7", "M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z"] -}; -var faChartArea = { - prefix: "fas", - iconName: "chart-area", - icon: [512, 512, [], "f1fe", "M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z"] -}; -var faChartBar2 = { - prefix: "fas", - iconName: "chart-bar", - icon: [512, 512, [], "f080", "M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"] -}; -var faChartLine = { - prefix: "fas", - iconName: "chart-line", - icon: [512, 512, [], "f201", "M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z"] -}; -var faChartPie = { - prefix: "fas", - iconName: "chart-pie", - icon: [544, 512, [], "f200", "M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z"] -}; -var faCheck = { - prefix: "fas", - iconName: "check", - icon: [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"] -}; -var faCheckCircle2 = { - prefix: "fas", - iconName: "check-circle", - icon: [512, 512, [], "f058", "M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"] -}; -var faCheckDouble = { - prefix: "fas", - iconName: "check-double", - icon: [512, 512, [], "f560", "M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z"] -}; -var faCheckSquare2 = { - prefix: "fas", - iconName: "check-square", - icon: [448, 512, [], "f14a", "M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z"] -}; -var faCheese = { - prefix: "fas", - iconName: "cheese", - icon: [512, 512, [], "f7ef", "M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z"] -}; -var faChess = { - prefix: "fas", - iconName: "chess", - icon: [512, 512, [], "f439", "M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z"] -}; -var faChessBishop = { - prefix: "fas", - iconName: "chess-bishop", - icon: [320, 512, [], "f43a", "M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"] -}; -var faChessBoard = { - prefix: "fas", - iconName: "chess-board", - icon: [512, 512, [], "f43c", "M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z"] -}; -var faChessKing = { - prefix: "fas", - iconName: "chess-king", - icon: [448, 512, [], "f43f", "M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z"] -}; -var faChessKnight = { - prefix: "fas", - iconName: "chess-knight", - icon: [384, 512, [], "f441", "M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"] -}; -var faChessPawn = { - prefix: "fas", - iconName: "chess-pawn", - icon: [320, 512, [], "f443", "M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"] -}; -var faChessQueen = { - prefix: "fas", - iconName: "chess-queen", - icon: [512, 512, [], "f445", "M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z"] -}; -var faChessRook = { - prefix: "fas", - iconName: "chess-rook", - icon: [384, 512, [], "f447", "M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"] -}; -var faChevronCircleDown = { - prefix: "fas", - iconName: "chevron-circle-down", - icon: [512, 512, [], "f13a", "M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z"] -}; -var faChevronCircleLeft = { - prefix: "fas", - iconName: "chevron-circle-left", - icon: [512, 512, [], "f137", "M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z"] -}; -var faChevronCircleRight = { - prefix: "fas", - iconName: "chevron-circle-right", - icon: [512, 512, [], "f138", "M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z"] -}; -var faChevronCircleUp = { - prefix: "fas", - iconName: "chevron-circle-up", - icon: [512, 512, [], "f139", "M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z"] -}; -var faChevronDown = { - prefix: "fas", - iconName: "chevron-down", - icon: [448, 512, [], "f078", "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"] -}; -var faChevronLeft = { - prefix: "fas", - iconName: "chevron-left", - icon: [320, 512, [], "f053", "M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"] -}; -var faChevronRight = { - prefix: "fas", - iconName: "chevron-right", - icon: [320, 512, [], "f054", "M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"] -}; -var faChevronUp = { - prefix: "fas", - iconName: "chevron-up", - icon: [448, 512, [], "f077", "M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z"] -}; -var faChild = { - prefix: "fas", - iconName: "child", - icon: [384, 512, [], "f1ae", "M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z"] -}; -var faChurch = { - prefix: "fas", - iconName: "church", - icon: [640, 512, [], "f51d", "M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z"] -}; -var faCircle2 = { - prefix: "fas", - iconName: "circle", - icon: [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"] -}; -var faCircleNotch = { - prefix: "fas", - iconName: "circle-notch", - icon: [512, 512, [], "f1ce", "M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z"] -}; -var faCity = { - prefix: "fas", - iconName: "city", - icon: [640, 512, [], "f64f", "M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z"] -}; -var faClinicMedical = { - prefix: "fas", - iconName: "clinic-medical", - icon: [576, 512, [], "f7f2", "M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z"] -}; -var faClipboard2 = { - prefix: "fas", - iconName: "clipboard", - icon: [384, 512, [], "f328", "M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z"] -}; -var faClipboardCheck = { - prefix: "fas", - iconName: "clipboard-check", - icon: [384, 512, [], "f46c", "M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z"] -}; -var faClipboardList = { - prefix: "fas", - iconName: "clipboard-list", - icon: [384, 512, [], "f46d", "M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"] -}; -var faClock2 = { - prefix: "fas", - iconName: "clock", - icon: [512, 512, [], "f017", "M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z"] -}; -var faClone2 = { - prefix: "fas", - iconName: "clone", - icon: [512, 512, [], "f24d", "M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z"] -}; -var faClosedCaptioning2 = { - prefix: "fas", - iconName: "closed-captioning", - icon: [512, 512, [], "f20a", "M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z"] -}; -var faCloud = { - prefix: "fas", - iconName: "cloud", - icon: [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"] -}; -var faCloudDownloadAlt = { - prefix: "fas", - iconName: "cloud-download-alt", - icon: [640, 512, [], "f381", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z"] -}; -var faCloudMeatball = { - prefix: "fas", - iconName: "cloud-meatball", - icon: [512, 512, [], "f73b", "M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z"] -}; -var faCloudMoon = { - prefix: "fas", - iconName: "cloud-moon", - icon: [576, 512, [], "f6c3", "M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z"] -}; -var faCloudMoonRain = { - prefix: "fas", - iconName: "cloud-moon-rain", - icon: [576, 512, [], "f73c", "M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z"] -}; -var faCloudRain = { - prefix: "fas", - iconName: "cloud-rain", - icon: [512, 512, [], "f73d", "M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z"] -}; -var faCloudShowersHeavy = { - prefix: "fas", - iconName: "cloud-showers-heavy", - icon: [512, 512, [], "f740", "M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z"] -}; -var faCloudSun = { - prefix: "fas", - iconName: "cloud-sun", - icon: [640, 512, [], "f6c4", "M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z"] -}; -var faCloudSunRain = { - prefix: "fas", - iconName: "cloud-sun-rain", - icon: [576, 512, [], "f743", "M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z"] -}; -var faCloudUploadAlt = { - prefix: "fas", - iconName: "cloud-upload-alt", - icon: [640, 512, [], "f382", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z"] -}; -var faCocktail = { - prefix: "fas", - iconName: "cocktail", - icon: [576, 512, [], "f561", "M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z"] -}; -var faCode = { - prefix: "fas", - iconName: "code", - icon: [640, 512, [], "f121", "M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"] -}; -var faCodeBranch = { - prefix: "fas", - iconName: "code-branch", - icon: [384, 512, [], "f126", "M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z"] -}; -var faCoffee = { - prefix: "fas", - iconName: "coffee", - icon: [640, 512, [], "f0f4", "M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z"] -}; -var faCog = { - prefix: "fas", - iconName: "cog", - icon: [512, 512, [], "f013", "M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"] -}; -var faCogs = { - prefix: "fas", - iconName: "cogs", - icon: [640, 512, [], "f085", "M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z"] -}; -var faCoins = { - prefix: "fas", - iconName: "coins", - icon: [512, 512, [], "f51e", "M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z"] -}; -var faColumns = { - prefix: "fas", - iconName: "columns", - icon: [512, 512, [], "f0db", "M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z"] -}; -var faComment2 = { - prefix: "fas", - iconName: "comment", - icon: [512, 512, [], "f075", "M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z"] -}; -var faCommentAlt2 = { - prefix: "fas", - iconName: "comment-alt", - icon: [512, 512, [], "f27a", "M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z"] -}; -var faCommentDollar = { - prefix: "fas", - iconName: "comment-dollar", - icon: [512, 512, [], "f651", "M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z"] -}; -var faCommentDots2 = { - prefix: "fas", - iconName: "comment-dots", - icon: [512, 512, [], "f4ad", "M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"] -}; -var faCommentMedical = { - prefix: "fas", - iconName: "comment-medical", - icon: [512, 512, [], "f7f5", "M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z"] -}; -var faCommentSlash = { - prefix: "fas", - iconName: "comment-slash", - icon: [640, 512, [], "f4b3", "M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z"] -}; -var faComments2 = { - prefix: "fas", - iconName: "comments", - icon: [576, 512, [], "f086", "M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z"] -}; -var faCommentsDollar = { - prefix: "fas", - iconName: "comments-dollar", - icon: [576, 512, [], "f653", "M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z"] -}; -var faCompactDisc = { - prefix: "fas", - iconName: "compact-disc", - icon: [496, 512, [], "f51f", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"] -}; -var faCompass2 = { - prefix: "fas", - iconName: "compass", - icon: [496, 512, [], "f14e", "M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z"] -}; -var faCompress = { - prefix: "fas", - iconName: "compress", - icon: [448, 512, [], "f066", "M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"] -}; -var faCompressAlt = { - prefix: "fas", - iconName: "compress-alt", - icon: [448, 512, [], "f422", "M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z"] -}; -var faCompressArrowsAlt = { - prefix: "fas", - iconName: "compress-arrows-alt", - icon: [512, 512, [], "f78c", "M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z"] -}; -var faConciergeBell = { - prefix: "fas", - iconName: "concierge-bell", - icon: [512, 512, [], "f562", "M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"] -}; -var faCookie = { - prefix: "fas", - iconName: "cookie", - icon: [512, 512, [], "f563", "M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faCookieBite = { - prefix: "fas", - iconName: "cookie-bite", - icon: [512, 512, [], "f564", "M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faCopy2 = { - prefix: "fas", - iconName: "copy", - icon: [448, 512, [], "f0c5", "M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z"] -}; -var faCopyright2 = { - prefix: "fas", - iconName: "copyright", - icon: [512, 512, [], "f1f9", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z"] -}; -var faCouch = { - prefix: "fas", - iconName: "couch", - icon: [640, 512, [], "f4b8", "M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z"] -}; -var faCreditCard2 = { - prefix: "fas", - iconName: "credit-card", - icon: [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"] -}; -var faCrop = { - prefix: "fas", - iconName: "crop", - icon: [512, 512, [], "f125", "M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"] -}; -var faCropAlt = { - prefix: "fas", - iconName: "crop-alt", - icon: [512, 512, [], "f565", "M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z"] -}; -var faCross = { - prefix: "fas", - iconName: "cross", - icon: [384, 512, [], "f654", "M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"] -}; -var faCrosshairs = { - prefix: "fas", - iconName: "crosshairs", - icon: [512, 512, [], "f05b", "M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z"] -}; -var faCrow = { - prefix: "fas", - iconName: "crow", - icon: [640, 512, [], "f520", "M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"] -}; -var faCrown = { - prefix: "fas", - iconName: "crown", - icon: [640, 512, [], "f521", "M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z"] -}; -var faCrutch = { - prefix: "fas", - iconName: "crutch", - icon: [512, 512, [], "f7f7", "M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z"] -}; -var faCube = { - prefix: "fas", - iconName: "cube", - icon: [512, 512, [], "f1b2", "M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z"] -}; -var faCubes = { - prefix: "fas", - iconName: "cubes", - icon: [512, 512, [], "f1b3", "M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z"] -}; -var faCut = { - prefix: "fas", - iconName: "cut", - icon: [448, 512, [], "f0c4", "M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"] -}; -var faDatabase = { - prefix: "fas", - iconName: "database", - icon: [448, 512, [], "f1c0", "M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z"] -}; -var faDeaf = { - prefix: "fas", - iconName: "deaf", - icon: [512, 512, [], "f2a4", "M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z"] -}; -var faDemocrat = { - prefix: "fas", - iconName: "democrat", - icon: [640, 512, [], "f747", "M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z"] -}; -var faDesktop = { - prefix: "fas", - iconName: "desktop", - icon: [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"] -}; -var faDharmachakra = { - prefix: "fas", - iconName: "dharmachakra", - icon: [512, 512, [], "f655", "M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z"] -}; -var faDiagnoses = { - prefix: "fas", - iconName: "diagnoses", - icon: [640, 512, [], "f470", "M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"] -}; -var faDice = { - prefix: "fas", - iconName: "dice", - icon: [640, 512, [], "f522", "M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"] -}; -var faDiceD20 = { - prefix: "fas", - iconName: "dice-d20", - icon: [480, 512, [], "f6cf", "M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z"] -}; -var faDiceD6 = { - prefix: "fas", - iconName: "dice-d6", - icon: [448, 512, [], "f6d1", "M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z"] -}; -var faDiceFive = { - prefix: "fas", - iconName: "dice-five", - icon: [448, 512, [], "f523", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faDiceFour = { - prefix: "fas", - iconName: "dice-four", - icon: [448, 512, [], "f524", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faDiceOne = { - prefix: "fas", - iconName: "dice-one", - icon: [448, 512, [], "f525", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faDiceSix = { - prefix: "fas", - iconName: "dice-six", - icon: [448, 512, [], "f526", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faDiceThree = { - prefix: "fas", - iconName: "dice-three", - icon: [448, 512, [], "f527", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faDiceTwo = { - prefix: "fas", - iconName: "dice-two", - icon: [448, 512, [], "f528", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faDigitalTachograph = { - prefix: "fas", - iconName: "digital-tachograph", - icon: [640, 512, [], "f566", "M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z"] -}; -var faDirections = { - prefix: "fas", - iconName: "directions", - icon: [512, 512, [], "f5eb", "M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z"] -}; -var faDisease = { - prefix: "fas", - iconName: "disease", - icon: [512, 512, [], "f7fa", "M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z"] -}; -var faDivide = { - prefix: "fas", - iconName: "divide", - icon: [448, 512, [], "f529", "M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"] -}; -var faDizzy2 = { - prefix: "fas", - iconName: "dizzy", - icon: [496, 512, [], "f567", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z"] -}; -var faDna = { - prefix: "fas", - iconName: "dna", - icon: [448, 512, [], "f471", "M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z"] -}; -var faDog = { - prefix: "fas", - iconName: "dog", - icon: [576, 512, [], "f6d3", "M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z"] -}; -var faDollarSign = { - prefix: "fas", - iconName: "dollar-sign", - icon: [288, 512, [], "f155", "M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z"] -}; -var faDolly = { - prefix: "fas", - iconName: "dolly", - icon: [576, 512, [], "f472", "M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"] -}; -var faDollyFlatbed = { - prefix: "fas", - iconName: "dolly-flatbed", - icon: [640, 512, [], "f474", "M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"] -}; -var faDonate = { - prefix: "fas", - iconName: "donate", - icon: [512, 512, [], "f4b9", "M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z"] -}; -var faDoorClosed = { - prefix: "fas", - iconName: "door-closed", - icon: [640, 512, [], "f52a", "M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z"] -}; -var faDoorOpen = { - prefix: "fas", - iconName: "door-open", - icon: [640, 512, [], "f52b", "M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z"] -}; -var faDotCircle2 = { - prefix: "fas", - iconName: "dot-circle", - icon: [512, 512, [], "f192", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z"] -}; -var faDove = { - prefix: "fas", - iconName: "dove", - icon: [512, 512, [], "f4ba", "M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"] -}; -var faDownload = { - prefix: "fas", - iconName: "download", - icon: [512, 512, [], "f019", "M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"] -}; -var faDraftingCompass = { - prefix: "fas", - iconName: "drafting-compass", - icon: [512, 512, [], "f568", "M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z"] -}; -var faDragon = { - prefix: "fas", - iconName: "dragon", - icon: [640, 512, [], "f6d5", "M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z"] -}; -var faDrawPolygon = { - prefix: "fas", - iconName: "draw-polygon", - icon: [448, 512, [], "f5ee", "M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z"] -}; -var faDrum = { - prefix: "fas", - iconName: "drum", - icon: [512, 512, [], "f569", "M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z"] -}; -var faDrumSteelpan = { - prefix: "fas", - iconName: "drum-steelpan", - icon: [576, 512, [], "f56a", "M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z"] -}; -var faDrumstickBite = { - prefix: "fas", - iconName: "drumstick-bite", - icon: [512, 512, [], "f6d7", "M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z"] -}; -var faDumbbell = { - prefix: "fas", - iconName: "dumbbell", - icon: [640, 512, [], "f44b", "M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z"] -}; -var faDumpster = { - prefix: "fas", - iconName: "dumpster", - icon: [576, 512, [], "f793", "M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"] -}; -var faDumpsterFire = { - prefix: "fas", - iconName: "dumpster-fire", - icon: [640, 512, [], "f794", "M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z"] -}; -var faDungeon = { - prefix: "fas", - iconName: "dungeon", - icon: [512, 512, [], "f6d9", "M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z"] -}; -var faEdit2 = { - prefix: "fas", - iconName: "edit", - icon: [576, 512, [], "f044", "M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"] -}; -var faEgg = { - prefix: "fas", - iconName: "egg", - icon: [384, 512, [], "f7fb", "M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z"] -}; -var faEject = { - prefix: "fas", - iconName: "eject", - icon: [448, 512, [], "f052", "M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z"] -}; -var faEllipsisH = { - prefix: "fas", - iconName: "ellipsis-h", - icon: [512, 512, [], "f141", "M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"] -}; -var faEllipsisV = { - prefix: "fas", - iconName: "ellipsis-v", - icon: [192, 512, [], "f142", "M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"] -}; -var faEnvelope2 = { - prefix: "fas", - iconName: "envelope", - icon: [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"] -}; -var faEnvelopeOpen2 = { - prefix: "fas", - iconName: "envelope-open", - icon: [512, 512, [], "f2b6", "M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z"] -}; -var faEnvelopeOpenText = { - prefix: "fas", - iconName: "envelope-open-text", - icon: [512, 512, [], "f658", "M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z"] -}; -var faEnvelopeSquare = { - prefix: "fas", - iconName: "envelope-square", - icon: [448, 512, [], "f199", "M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z"] -}; -var faEquals = { - prefix: "fas", - iconName: "equals", - icon: [448, 512, [], "f52c", "M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"] -}; -var faEraser = { - prefix: "fas", - iconName: "eraser", - icon: [512, 512, [], "f12d", "M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z"] -}; -var faEthernet = { - prefix: "fas", - iconName: "ethernet", - icon: [512, 512, [], "f796", "M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z"] -}; -var faEuroSign = { - prefix: "fas", - iconName: "euro-sign", - icon: [320, 512, [], "f153", "M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z"] -}; -var faExchangeAlt = { - prefix: "fas", - iconName: "exchange-alt", - icon: [512, 512, [], "f362", "M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z"] -}; -var faExclamation = { - prefix: "fas", - iconName: "exclamation", - icon: [192, 512, [], "f12a", "M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z"] -}; -var faExclamationCircle = { - prefix: "fas", - iconName: "exclamation-circle", - icon: [512, 512, [], "f06a", "M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"] -}; -var faExclamationTriangle = { - prefix: "fas", - iconName: "exclamation-triangle", - icon: [576, 512, [], "f071", "M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"] -}; -var faExpand = { - prefix: "fas", - iconName: "expand", - icon: [448, 512, [], "f065", "M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z"] -}; -var faExpandAlt = { - prefix: "fas", - iconName: "expand-alt", - icon: [448, 512, [], "f424", "M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z"] -}; -var faExpandArrowsAlt = { - prefix: "fas", - iconName: "expand-arrows-alt", - icon: [448, 512, [], "f31e", "M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z"] -}; -var faExternalLinkAlt = { - prefix: "fas", - iconName: "external-link-alt", - icon: [512, 512, [], "f35d", "M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z"] -}; -var faExternalLinkSquareAlt = { - prefix: "fas", - iconName: "external-link-square-alt", - icon: [448, 512, [], "f360", "M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z"] -}; -var faEye2 = { - prefix: "fas", - iconName: "eye", - icon: [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"] -}; -var faEyeDropper = { - prefix: "fas", - iconName: "eye-dropper", - icon: [512, 512, [], "f1fb", "M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z"] -}; -var faEyeSlash2 = { - prefix: "fas", - iconName: "eye-slash", - icon: [640, 512, [], "f070", "M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"] -}; -var faFan = { - prefix: "fas", - iconName: "fan", - icon: [512, 512, [], "f863", "M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"] -}; -var faFastBackward = { - prefix: "fas", - iconName: "fast-backward", - icon: [512, 512, [], "f049", "M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z"] -}; -var faFastForward = { - prefix: "fas", - iconName: "fast-forward", - icon: [512, 512, [], "f050", "M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z"] -}; -var faFaucet = { - prefix: "fas", - iconName: "faucet", - icon: [512, 512, [], "e005", "M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z"] -}; -var faFax = { - prefix: "fas", - iconName: "fax", - icon: [512, 512, [], "f1ac", "M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z"] -}; -var faFeather = { - prefix: "fas", - iconName: "feather", - icon: [512, 512, [], "f52d", "M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z"] -}; -var faFeatherAlt = { - prefix: "fas", - iconName: "feather-alt", - icon: [512, 512, [], "f56b", "M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z"] -}; -var faFemale = { - prefix: "fas", - iconName: "female", - icon: [256, 512, [], "f182", "M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z"] -}; -var faFighterJet = { - prefix: "fas", - iconName: "fighter-jet", - icon: [640, 512, [], "f0fb", "M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z"] -}; -var faFile2 = { - prefix: "fas", - iconName: "file", - icon: [384, 512, [], "f15b", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"] -}; -var faFileAlt2 = { - prefix: "fas", - iconName: "file-alt", - icon: [384, 512, [], "f15c", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"] -}; -var faFileArchive2 = { - prefix: "fas", - iconName: "file-archive", - icon: [384, 512, [], "f1c6", "M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z"] -}; -var faFileAudio2 = { - prefix: "fas", - iconName: "file-audio", - icon: [384, 512, [], "f1c7", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"] -}; -var faFileCode2 = { - prefix: "fas", - iconName: "file-code", - icon: [384, 512, [], "f1c9", "M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z"] -}; -var faFileContract = { - prefix: "fas", - iconName: "file-contract", - icon: [384, 512, [], "f56c", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"] -}; -var faFileCsv = { - prefix: "fas", - iconName: "file-csv", - icon: [384, 512, [], "f6dd", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"] -}; -var faFileDownload = { - prefix: "fas", - iconName: "file-download", - icon: [384, 512, [], "f56d", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"] -}; -var faFileExcel2 = { - prefix: "fas", - iconName: "file-excel", - icon: [384, 512, [], "f1c3", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"] -}; -var faFileExport = { - prefix: "fas", - iconName: "file-export", - icon: [576, 512, [], "f56e", "M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z"] -}; -var faFileImage2 = { - prefix: "fas", - iconName: "file-image", - icon: [384, 512, [], "f1c5", "M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z"] -}; -var faFileImport = { - prefix: "fas", - iconName: "file-import", - icon: [512, 512, [], "f56f", "M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z"] -}; -var faFileInvoice = { - prefix: "fas", - iconName: "file-invoice", - icon: [384, 512, [], "f570", "M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z"] -}; -var faFileInvoiceDollar = { - prefix: "fas", - iconName: "file-invoice-dollar", - icon: [384, 512, [], "f571", "M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z"] -}; -var faFileMedical = { - prefix: "fas", - iconName: "file-medical", - icon: [384, 512, [], "f477", "M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z"] -}; -var faFileMedicalAlt = { - prefix: "fas", - iconName: "file-medical-alt", - icon: [448, 512, [], "f478", "M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"] -}; -var faFilePdf2 = { - prefix: "fas", - iconName: "file-pdf", - icon: [384, 512, [], "f1c1", "M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z"] -}; -var faFilePowerpoint2 = { - prefix: "fas", - iconName: "file-powerpoint", - icon: [384, 512, [], "f1c4", "M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z"] -}; -var faFilePrescription = { - prefix: "fas", - iconName: "file-prescription", - icon: [384, 512, [], "f572", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"] -}; -var faFileSignature = { - prefix: "fas", - iconName: "file-signature", - icon: [576, 512, [], "f573", "M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z"] -}; -var faFileUpload = { - prefix: "fas", - iconName: "file-upload", - icon: [384, 512, [], "f574", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"] -}; -var faFileVideo2 = { - prefix: "fas", - iconName: "file-video", - icon: [384, 512, [], "f1c8", "M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z"] -}; -var faFileWord2 = { - prefix: "fas", - iconName: "file-word", - icon: [384, 512, [], "f1c2", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"] -}; -var faFill = { - prefix: "fas", - iconName: "fill", - icon: [512, 512, [], "f575", "M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z"] -}; -var faFillDrip = { - prefix: "fas", - iconName: "fill-drip", - icon: [576, 512, [], "f576", "M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z"] -}; -var faFilm = { - prefix: "fas", - iconName: "film", - icon: [512, 512, [], "f008", "M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z"] -}; -var faFilter = { - prefix: "fas", - iconName: "filter", - icon: [512, 512, [], "f0b0", "M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"] -}; -var faFingerprint = { - prefix: "fas", - iconName: "fingerprint", - icon: [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"] -}; -var faFire = { - prefix: "fas", - iconName: "fire", - icon: [384, 512, [], "f06d", "M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z"] -}; -var faFireAlt = { - prefix: "fas", - iconName: "fire-alt", - icon: [448, 512, [], "f7e4", "M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z"] -}; -var faFireExtinguisher = { - prefix: "fas", - iconName: "fire-extinguisher", - icon: [448, 512, [], "f134", "M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z"] -}; -var faFirstAid = { - prefix: "fas", - iconName: "first-aid", - icon: [576, 512, [], "f479", "M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"] -}; -var faFish = { - prefix: "fas", - iconName: "fish", - icon: [576, 512, [], "f578", "M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z"] -}; -var faFistRaised = { - prefix: "fas", - iconName: "fist-raised", - icon: [384, 512, [], "f6de", "M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z"] -}; -var faFlag2 = { - prefix: "fas", - iconName: "flag", - icon: [512, 512, [], "f024", "M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z"] -}; -var faFlagCheckered = { - prefix: "fas", - iconName: "flag-checkered", - icon: [512, 512, [], "f11e", "M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z"] -}; -var faFlagUsa = { - prefix: "fas", - iconName: "flag-usa", - icon: [512, 512, [], "f74d", "M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z"] -}; -var faFlask = { - prefix: "fas", - iconName: "flask", - icon: [448, 512, [], "f0c3", "M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z"] -}; -var faFlushed2 = { - prefix: "fas", - iconName: "flushed", - icon: [496, 512, [], "f579", "M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z"] -}; -var faFolder2 = { - prefix: "fas", - iconName: "folder", - icon: [512, 512, [], "f07b", "M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"] -}; -var faFolderMinus = { - prefix: "fas", - iconName: "folder-minus", - icon: [512, 512, [], "f65d", "M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z"] -}; -var faFolderOpen2 = { - prefix: "fas", - iconName: "folder-open", - icon: [576, 512, [], "f07c", "M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z"] -}; -var faFolderPlus = { - prefix: "fas", - iconName: "folder-plus", - icon: [512, 512, [], "f65e", "M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z"] -}; -var faFont = { - prefix: "fas", - iconName: "font", - icon: [448, 512, [], "f031", "M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z"] -}; -var faFontAwesomeLogoFull2 = { - prefix: "fas", - iconName: "font-awesome-logo-full", - icon: [3992, 512, ["Font Awesome"], "f4e6", "M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z"] -}; -var faFootballBall = { - prefix: "fas", - iconName: "football-ball", - icon: [496, 512, [], "f44e", "M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z"] -}; -var faForward = { - prefix: "fas", - iconName: "forward", - icon: [512, 512, [], "f04e", "M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"] -}; -var faFrog = { - prefix: "fas", - iconName: "frog", - icon: [576, 512, [], "f52e", "M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z"] -}; -var faFrown2 = { - prefix: "fas", - iconName: "frown", - icon: [496, 512, [], "f119", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z"] -}; -var faFrownOpen2 = { - prefix: "fas", - iconName: "frown-open", - icon: [496, 512, [], "f57a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"] -}; -var faFunnelDollar = { - prefix: "fas", - iconName: "funnel-dollar", - icon: [640, 512, [], "f662", "M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z"] -}; -var faFutbol2 = { - prefix: "fas", - iconName: "futbol", - icon: [512, 512, [], "f1e3", "M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z"] -}; -var faGamepad = { - prefix: "fas", - iconName: "gamepad", - icon: [640, 512, [], "f11b", "M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z"] -}; -var faGasPump = { - prefix: "fas", - iconName: "gas-pump", - icon: [512, 512, [], "f52f", "M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z"] -}; -var faGavel = { - prefix: "fas", - iconName: "gavel", - icon: [512, 512, [], "f0e3", "M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z"] -}; -var faGem2 = { - prefix: "fas", - iconName: "gem", - icon: [576, 512, [], "f3a5", "M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z"] -}; -var faGenderless = { - prefix: "fas", - iconName: "genderless", - icon: [288, 512, [], "f22d", "M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z"] -}; -var faGhost = { - prefix: "fas", - iconName: "ghost", - icon: [384, 512, [], "f6e2", "M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faGift = { - prefix: "fas", - iconName: "gift", - icon: [512, 512, [], "f06b", "M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z"] -}; -var faGifts = { - prefix: "fas", - iconName: "gifts", - icon: [640, 512, [], "f79c", "M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z"] -}; -var faGlassCheers = { - prefix: "fas", - iconName: "glass-cheers", - icon: [640, 512, [], "f79f", "M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z"] -}; -var faGlassMartini = { - prefix: "fas", - iconName: "glass-martini", - icon: [512, 512, [], "f000", "M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z"] -}; -var faGlassMartiniAlt = { - prefix: "fas", - iconName: "glass-martini-alt", - icon: [512, 512, [], "f57b", "M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z"] -}; -var faGlassWhiskey = { - prefix: "fas", - iconName: "glass-whiskey", - icon: [512, 512, [], "f7a0", "M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z"] -}; -var faGlasses = { - prefix: "fas", - iconName: "glasses", - icon: [576, 512, [], "f530", "M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z"] -}; -var faGlobe = { - prefix: "fas", - iconName: "globe", - icon: [496, 512, [], "f0ac", "M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"] -}; -var faGlobeAfrica = { - prefix: "fas", - iconName: "globe-africa", - icon: [496, 512, [], "f57c", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z"] -}; -var faGlobeAmericas = { - prefix: "fas", - iconName: "globe-americas", - icon: [496, 512, [], "f57d", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z"] -}; -var faGlobeAsia = { - prefix: "fas", - iconName: "globe-asia", - icon: [496, 512, [], "f57e", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z"] -}; -var faGlobeEurope = { - prefix: "fas", - iconName: "globe-europe", - icon: [496, 512, [], "f7a2", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z"] -}; -var faGolfBall = { - prefix: "fas", - iconName: "golf-ball", - icon: [416, 512, [], "f450", "M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z"] -}; -var faGopuram = { - prefix: "fas", - iconName: "gopuram", - icon: [512, 512, [], "f664", "M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z"] -}; -var faGraduationCap = { - prefix: "fas", - iconName: "graduation-cap", - icon: [640, 512, [], "f19d", "M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z"] -}; -var faGreaterThan = { - prefix: "fas", - iconName: "greater-than", - icon: [384, 512, [], "f531", "M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z"] -}; -var faGreaterThanEqual = { - prefix: "fas", - iconName: "greater-than-equal", - icon: [448, 512, [], "f532", "M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"] -}; -var faGrimace2 = { - prefix: "fas", - iconName: "grimace", - icon: [496, 512, [], "f57f", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z"] -}; -var faGrin2 = { - prefix: "fas", - iconName: "grin", - icon: [496, 512, [], "f580", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"] -}; -var faGrinAlt2 = { - prefix: "fas", - iconName: "grin-alt", - icon: [496, 512, [], "f581", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"] -}; -var faGrinBeam2 = { - prefix: "fas", - iconName: "grin-beam", - icon: [496, 512, [], "f582", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"] -}; -var faGrinBeamSweat2 = { - prefix: "fas", - iconName: "grin-beam-sweat", - icon: [504, 512, [], "f583", "M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"] -}; -var faGrinHearts2 = { - prefix: "fas", - iconName: "grin-hearts", - icon: [496, 512, [], "f584", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z"] -}; -var faGrinSquint2 = { - prefix: "fas", - iconName: "grin-squint", - icon: [496, 512, [], "f585", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"] -}; -var faGrinSquintTears2 = { - prefix: "fas", - iconName: "grin-squint-tears", - icon: [512, 512, [], "f586", "M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z"] -}; -var faGrinStars2 = { - prefix: "fas", - iconName: "grin-stars", - icon: [496, 512, [], "f587", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z"] -}; -var faGrinTears2 = { - prefix: "fas", - iconName: "grin-tears", - icon: [640, 512, [], "f588", "M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"] -}; -var faGrinTongue2 = { - prefix: "fas", - iconName: "grin-tongue", - icon: [496, 512, [], "f589", "M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z"] -}; -var faGrinTongueSquint2 = { - prefix: "fas", - iconName: "grin-tongue-squint", - icon: [496, 512, [], "f58a", "M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z"] -}; -var faGrinTongueWink2 = { - prefix: "fas", - iconName: "grin-tongue-wink", - icon: [496, 512, [], "f58b", "M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z"] -}; -var faGrinWink2 = { - prefix: "fas", - iconName: "grin-wink", - icon: [496, 512, [], "f58c", "M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z"] -}; -var faGripHorizontal = { - prefix: "fas", - iconName: "grip-horizontal", - icon: [448, 512, [], "f58d", "M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"] -}; -var faGripLines = { - prefix: "fas", - iconName: "grip-lines", - icon: [512, 512, [], "f7a4", "M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"] -}; -var faGripLinesVertical = { - prefix: "fas", - iconName: "grip-lines-vertical", - icon: [256, 512, [], "f7a5", "M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z"] -}; -var faGripVertical = { - prefix: "fas", - iconName: "grip-vertical", - icon: [320, 512, [], "f58e", "M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"] -}; -var faGuitar = { - prefix: "fas", - iconName: "guitar", - icon: [512, 512, [], "f7a6", "M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"] -}; -var faHSquare = { - prefix: "fas", - iconName: "h-square", - icon: [448, 512, [], "f0fd", "M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z"] -}; -var faHamburger = { - prefix: "fas", - iconName: "hamburger", - icon: [512, 512, [], "f805", "M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z"] -}; -var faHammer = { - prefix: "fas", - iconName: "hammer", - icon: [576, 512, [], "f6e3", "M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z"] -}; -var faHamsa = { - prefix: "fas", - iconName: "hamsa", - icon: [512, 512, [], "f665", "M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"] -}; -var faHandHolding = { - prefix: "fas", - iconName: "hand-holding", - icon: [576, 512, [], "f4bd", "M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"] -}; -var faHandHoldingHeart = { - prefix: "fas", - iconName: "hand-holding-heart", - icon: [576, 512, [], "f4be", "M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"] -}; -var faHandHoldingMedical = { - prefix: "fas", - iconName: "hand-holding-medical", - icon: [576, 512, [], "e05c", "M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z"] -}; -var faHandHoldingUsd = { - prefix: "fas", - iconName: "hand-holding-usd", - icon: [576, 512, [], "f4c0", "M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z"] -}; -var faHandHoldingWater = { - prefix: "fas", - iconName: "hand-holding-water", - icon: [576, 512, [], "f4c1", "M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"] -}; -var faHandLizard2 = { - prefix: "fas", - iconName: "hand-lizard", - icon: [576, 512, [], "f258", "M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z"] -}; -var faHandMiddleFinger = { - prefix: "fas", - iconName: "hand-middle-finger", - icon: [512, 512, [], "f806", "M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z"] -}; -var faHandPaper2 = { - prefix: "fas", - iconName: "hand-paper", - icon: [448, 512, [], "f256", "M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z"] -}; -var faHandPeace2 = { - prefix: "fas", - iconName: "hand-peace", - icon: [448, 512, [], "f25b", "M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z"] -}; -var faHandPointDown2 = { - prefix: "fas", - iconName: "hand-point-down", - icon: [384, 512, [], "f0a7", "M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z"] -}; -var faHandPointLeft2 = { - prefix: "fas", - iconName: "hand-point-left", - icon: [512, 512, [], "f0a5", "M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z"] -}; -var faHandPointRight2 = { - prefix: "fas", - iconName: "hand-point-right", - icon: [512, 512, [], "f0a4", "M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z"] -}; -var faHandPointUp2 = { - prefix: "fas", - iconName: "hand-point-up", - icon: [384, 512, [], "f0a6", "M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z"] -}; -var faHandPointer2 = { - prefix: "fas", - iconName: "hand-pointer", - icon: [448, 512, [], "f25a", "M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z"] -}; -var faHandRock2 = { - prefix: "fas", - iconName: "hand-rock", - icon: [512, 512, [], "f255", "M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z"] -}; -var faHandScissors2 = { - prefix: "fas", - iconName: "hand-scissors", - icon: [512, 512, [], "f257", "M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z"] -}; -var faHandSparkles = { - prefix: "fas", - iconName: "hand-sparkles", - icon: [640, 512, [], "e05d", "M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z"] -}; -var faHandSpock2 = { - prefix: "fas", - iconName: "hand-spock", - icon: [512, 512, [], "f259", "M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z"] -}; -var faHands = { - prefix: "fas", - iconName: "hands", - icon: [640, 512, [], "f4c2", "M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z"] -}; -var faHandsHelping = { - prefix: "fas", - iconName: "hands-helping", - icon: [640, 512, [], "f4c4", "M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z"] -}; -var faHandsWash = { - prefix: "fas", - iconName: "hands-wash", - icon: [576, 512, [], "e05e", "M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z"] -}; -var faHandshake2 = { - prefix: "fas", - iconName: "handshake", - icon: [640, 512, [], "f2b5", "M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z"] -}; -var faHandshakeAltSlash = { - prefix: "fas", - iconName: "handshake-alt-slash", - icon: [640, 512, [], "e05f", "M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z"] -}; -var faHandshakeSlash = { - prefix: "fas", - iconName: "handshake-slash", - icon: [640, 512, [], "e060", "M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z"] -}; -var faHanukiah = { - prefix: "fas", - iconName: "hanukiah", - icon: [640, 512, [], "f6e6", "M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z"] -}; -var faHardHat = { - prefix: "fas", - iconName: "hard-hat", - icon: [512, 512, [], "f807", "M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"] -}; -var faHashtag = { - prefix: "fas", - iconName: "hashtag", - icon: [448, 512, [], "f292", "M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z"] -}; -var faHatCowboy = { - prefix: "fas", - iconName: "hat-cowboy", - icon: [640, 512, [], "f8c0", "M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z"] -}; -var faHatCowboySide = { - prefix: "fas", - iconName: "hat-cowboy-side", - icon: [640, 512, [], "f8c1", "M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z"] -}; -var faHatWizard = { - prefix: "fas", - iconName: "hat-wizard", - icon: [512, 512, [], "f6e8", "M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z"] -}; -var faHdd2 = { - prefix: "fas", - iconName: "hdd", - icon: [576, 512, [], "f0a0", "M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"] -}; -var faHeadSideCough = { - prefix: "fas", - iconName: "head-side-cough", - icon: [640, 512, [], "e061", "M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z"] -}; -var faHeadSideCoughSlash = { - prefix: "fas", - iconName: "head-side-cough-slash", - icon: [640, 512, [], "e062", "M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z"] -}; -var faHeadSideMask = { - prefix: "fas", - iconName: "head-side-mask", - icon: [512, 512, [], "e063", "M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z"] -}; -var faHeadSideVirus = { - prefix: "fas", - iconName: "head-side-virus", - icon: [512, 512, [], "e064", "M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z"] -}; -var faHeading = { - prefix: "fas", - iconName: "heading", - icon: [512, 512, [], "f1dc", "M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z"] -}; -var faHeadphones = { - prefix: "fas", - iconName: "headphones", - icon: [512, 512, [], "f025", "M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z"] -}; -var faHeadphonesAlt = { - prefix: "fas", - iconName: "headphones-alt", - icon: [512, 512, [], "f58f", "M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z"] -}; -var faHeadset = { - prefix: "fas", - iconName: "headset", - icon: [512, 512, [], "f590", "M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z"] -}; -var faHeart2 = { - prefix: "fas", - iconName: "heart", - icon: [512, 512, [], "f004", "M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z"] -}; -var faHeartBroken = { - prefix: "fas", - iconName: "heart-broken", - icon: [512, 512, [], "f7a9", "M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z"] -}; -var faHeartbeat = { - prefix: "fas", - iconName: "heartbeat", - icon: [512, 512, [], "f21e", "M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z"] -}; -var faHelicopter = { - prefix: "fas", - iconName: "helicopter", - icon: [640, 512, [], "f533", "M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z"] -}; -var faHighlighter = { - prefix: "fas", - iconName: "highlighter", - icon: [544, 512, [], "f591", "M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z"] -}; -var faHiking = { - prefix: "fas", - iconName: "hiking", - icon: [384, 512, [], "f6ec", "M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z"] -}; -var faHippo = { - prefix: "fas", - iconName: "hippo", - icon: [640, 512, [], "f6ed", "M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"] -}; -var faHistory = { - prefix: "fas", - iconName: "history", - icon: [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"] -}; -var faHockeyPuck = { - prefix: "fas", - iconName: "hockey-puck", - icon: [512, 512, [], "f453", "M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z"] -}; -var faHollyBerry = { - prefix: "fas", - iconName: "holly-berry", - icon: [448, 512, [], "f7aa", "M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z"] -}; -var faHome = { - prefix: "fas", - iconName: "home", - icon: [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"] -}; -var faHorse = { - prefix: "fas", - iconName: "horse", - icon: [576, 512, [], "f6f0", "M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"] -}; -var faHorseHead = { - prefix: "fas", - iconName: "horse-head", - icon: [512, 512, [], "f7ab", "M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z"] -}; -var faHospital2 = { - prefix: "fas", - iconName: "hospital", - icon: [448, 512, [], "f0f8", "M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z"] -}; -var faHospitalAlt = { - prefix: "fas", - iconName: "hospital-alt", - icon: [576, 512, [], "f47d", "M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z"] -}; -var faHospitalSymbol = { - prefix: "fas", - iconName: "hospital-symbol", - icon: [512, 512, [], "f47e", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z"] -}; -var faHospitalUser = { - prefix: "fas", - iconName: "hospital-user", - icon: [640, 512, [], "f80d", "M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z"] -}; -var faHotTub = { - prefix: "fas", - iconName: "hot-tub", - icon: [512, 512, [], "f593", "M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z"] -}; -var faHotdog = { - prefix: "fas", - iconName: "hotdog", - icon: [512, 512, [], "f80f", "M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z"] -}; -var faHotel = { - prefix: "fas", - iconName: "hotel", - icon: [576, 512, [], "f594", "M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z"] -}; -var faHourglass2 = { - prefix: "fas", - iconName: "hourglass", - icon: [384, 512, [], "f254", "M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z"] -}; -var faHourglassEnd = { - prefix: "fas", - iconName: "hourglass-end", - icon: [384, 512, [], "f253", "M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z"] -}; -var faHourglassHalf = { - prefix: "fas", - iconName: "hourglass-half", - icon: [384, 512, [], "f252", "M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z"] -}; -var faHourglassStart = { - prefix: "fas", - iconName: "hourglass-start", - icon: [384, 512, [], "f251", "M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z"] -}; -var faHouseDamage = { - prefix: "fas", - iconName: "house-damage", - icon: [576, 512, [], "f6f1", "M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z"] -}; -var faHouseUser = { - prefix: "fas", - iconName: "house-user", - icon: [576, 512, [], "e065", "M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z"] -}; -var faHryvnia = { - prefix: "fas", - iconName: "hryvnia", - icon: [384, 512, [], "f6f2", "M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z"] -}; -var faICursor = { - prefix: "fas", - iconName: "i-cursor", - icon: [256, 512, [], "f246", "M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z"] -}; -var faIceCream = { - prefix: "fas", - iconName: "ice-cream", - icon: [448, 512, [], "f810", "M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z"] -}; -var faIcicles = { - prefix: "fas", - iconName: "icicles", - icon: [512, 512, [], "f7ad", "M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z"] -}; -var faIcons = { - prefix: "fas", - iconName: "icons", - icon: [512, 512, [], "f86d", "M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z"] -}; -var faIdBadge2 = { - prefix: "fas", - iconName: "id-badge", - icon: [384, 512, [], "f2c1", "M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"] -}; -var faIdCard2 = { - prefix: "fas", - iconName: "id-card", - icon: [576, 512, [], "f2c2", "M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z"] -}; -var faIdCardAlt = { - prefix: "fas", - iconName: "id-card-alt", - icon: [576, 512, [], "f47f", "M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z"] -}; -var faIgloo = { - prefix: "fas", - iconName: "igloo", - icon: [576, 512, [], "f7ae", "M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z"] -}; -var faImage2 = { - prefix: "fas", - iconName: "image", - icon: [512, 512, [], "f03e", "M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"] -}; -var faImages2 = { - prefix: "fas", - iconName: "images", - icon: [576, 512, [], "f302", "M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z"] -}; -var faInbox = { - prefix: "fas", - iconName: "inbox", - icon: [576, 512, [], "f01c", "M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z"] -}; -var faIndent = { - prefix: "fas", - iconName: "indent", - icon: [448, 512, [], "f03c", "M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"] -}; -var faIndustry = { - prefix: "fas", - iconName: "industry", - icon: [512, 512, [], "f275", "M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z"] -}; -var faInfinity = { - prefix: "fas", - iconName: "infinity", - icon: [640, 512, [], "f534", "M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z"] -}; -var faInfo = { - prefix: "fas", - iconName: "info", - icon: [192, 512, [], "f129", "M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"] -}; -var faInfoCircle = { - prefix: "fas", - iconName: "info-circle", - icon: [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"] -}; -var faItalic = { - prefix: "fas", - iconName: "italic", - icon: [320, 512, [], "f033", "M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z"] -}; -var faJedi = { - prefix: "fas", - iconName: "jedi", - icon: [576, 512, [], "f669", "M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z"] -}; -var faJoint = { - prefix: "fas", - iconName: "joint", - icon: [640, 512, [], "f595", "M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z"] -}; -var faJournalWhills = { - prefix: "fas", - iconName: "journal-whills", - icon: [448, 512, [], "f66a", "M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z"] -}; -var faKaaba = { - prefix: "fas", - iconName: "kaaba", - icon: [576, 512, [], "f66b", "M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z"] -}; -var faKey = { - prefix: "fas", - iconName: "key", - icon: [512, 512, [], "f084", "M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z"] -}; -var faKeyboard2 = { - prefix: "fas", - iconName: "keyboard", - icon: [576, 512, [], "f11c", "M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"] -}; -var faKhanda = { - prefix: "fas", - iconName: "khanda", - icon: [512, 512, [], "f66d", "M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z"] -}; -var faKiss2 = { - prefix: "fas", - iconName: "kiss", - icon: [496, 512, [], "f596", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"] -}; -var faKissBeam2 = { - prefix: "fas", - iconName: "kiss-beam", - icon: [496, 512, [], "f597", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z"] -}; -var faKissWinkHeart2 = { - prefix: "fas", - iconName: "kiss-wink-heart", - icon: [504, 512, [], "f598", "M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z"] -}; -var faKiwiBird = { - prefix: "fas", - iconName: "kiwi-bird", - icon: [576, 512, [], "f535", "M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z"] -}; -var faLandmark = { - prefix: "fas", - iconName: "landmark", - icon: [512, 512, [], "f66f", "M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"] -}; -var faLanguage = { - prefix: "fas", - iconName: "language", - icon: [640, 512, [], "f1ab", "M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z"] -}; -var faLaptop = { - prefix: "fas", - iconName: "laptop", - icon: [640, 512, [], "f109", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"] -}; -var faLaptopCode = { - prefix: "fas", - iconName: "laptop-code", - icon: [640, 512, [], "f5fc", "M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"] -}; -var faLaptopHouse = { - prefix: "fas", - iconName: "laptop-house", - icon: [640, 512, [], "e066", "M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"] -}; -var faLaptopMedical = { - prefix: "fas", - iconName: "laptop-medical", - icon: [640, 512, [], "f812", "M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"] -}; -var faLaugh2 = { - prefix: "fas", - iconName: "laugh", - icon: [496, 512, [], "f599", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z"] -}; -var faLaughBeam2 = { - prefix: "fas", - iconName: "laugh-beam", - icon: [496, 512, [], "f59a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"] -}; -var faLaughSquint2 = { - prefix: "fas", - iconName: "laugh-squint", - icon: [496, 512, [], "f59b", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"] -}; -var faLaughWink2 = { - prefix: "fas", - iconName: "laugh-wink", - icon: [496, 512, [], "f59c", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"] -}; -var faLayerGroup = { - prefix: "fas", - iconName: "layer-group", - icon: [512, 512, [], "f5fd", "M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z"] -}; -var faLeaf = { - prefix: "fas", - iconName: "leaf", - icon: [576, 512, [], "f06c", "M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z"] -}; -var faLemon2 = { - prefix: "fas", - iconName: "lemon", - icon: [512, 512, [], "f094", "M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z"] -}; -var faLessThan = { - prefix: "fas", - iconName: "less-than", - icon: [384, 512, [], "f536", "M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z"] -}; -var faLessThanEqual = { - prefix: "fas", - iconName: "less-than-equal", - icon: [448, 512, [], "f537", "M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"] -}; -var faLevelDownAlt = { - prefix: "fas", - iconName: "level-down-alt", - icon: [320, 512, [], "f3be", "M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z"] -}; -var faLevelUpAlt = { - prefix: "fas", - iconName: "level-up-alt", - icon: [320, 512, [], "f3bf", "M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z"] -}; -var faLifeRing2 = { - prefix: "fas", - iconName: "life-ring", - icon: [512, 512, [], "f1cd", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z"] -}; -var faLightbulb2 = { - prefix: "fas", - iconName: "lightbulb", - icon: [352, 512, [], "f0eb", "M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"] -}; -var faLink = { - prefix: "fas", - iconName: "link", - icon: [512, 512, [], "f0c1", "M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"] -}; -var faLiraSign = { - prefix: "fas", - iconName: "lira-sign", - icon: [384, 512, [], "f195", "M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z"] -}; -var faList = { - prefix: "fas", - iconName: "list", - icon: [512, 512, [], "f03a", "M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"] -}; -var faListAlt2 = { - prefix: "fas", - iconName: "list-alt", - icon: [512, 512, [], "f022", "M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z"] -}; -var faListOl = { - prefix: "fas", - iconName: "list-ol", - icon: [512, 512, [], "f0cb", "M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"] -}; -var faListUl = { - prefix: "fas", - iconName: "list-ul", - icon: [512, 512, [], "f0ca", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"] -}; -var faLocationArrow = { - prefix: "fas", - iconName: "location-arrow", - icon: [512, 512, [], "f124", "M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z"] -}; -var faLock = { - prefix: "fas", - iconName: "lock", - icon: [448, 512, [], "f023", "M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"] -}; -var faLockOpen = { - prefix: "fas", - iconName: "lock-open", - icon: [576, 512, [], "f3c1", "M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z"] -}; -var faLongArrowAltDown = { - prefix: "fas", - iconName: "long-arrow-alt-down", - icon: [256, 512, [], "f309", "M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z"] -}; -var faLongArrowAltLeft = { - prefix: "fas", - iconName: "long-arrow-alt-left", - icon: [448, 512, [], "f30a", "M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z"] -}; -var faLongArrowAltRight = { - prefix: "fas", - iconName: "long-arrow-alt-right", - icon: [448, 512, [], "f30b", "M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z"] -}; -var faLongArrowAltUp = { - prefix: "fas", - iconName: "long-arrow-alt-up", - icon: [256, 512, [], "f30c", "M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z"] -}; -var faLowVision = { - prefix: "fas", - iconName: "low-vision", - icon: [576, 512, [], "f2a8", "M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z"] -}; -var faLuggageCart = { - prefix: "fas", - iconName: "luggage-cart", - icon: [640, 512, [], "f59d", "M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z"] -}; -var faLungs = { - prefix: "fas", - iconName: "lungs", - icon: [640, 512, [], "f604", "M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z"] -}; -var faLungsVirus = { - prefix: "fas", - iconName: "lungs-virus", - icon: [640, 512, [], "e067", "M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z"] -}; -var faMagic = { - prefix: "fas", - iconName: "magic", - icon: [512, 512, [], "f0d0", "M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z"] -}; -var faMagnet = { - prefix: "fas", - iconName: "magnet", - icon: [512, 512, [], "f076", "M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z"] -}; -var faMailBulk = { - prefix: "fas", - iconName: "mail-bulk", - icon: [576, 512, [], "f674", "M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z"] -}; -var faMale = { - prefix: "fas", - iconName: "male", - icon: [192, 512, [], "f183", "M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z"] -}; -var faMap2 = { - prefix: "fas", - iconName: "map", - icon: [576, 512, [], "f279", "M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z"] -}; -var faMapMarked = { - prefix: "fas", - iconName: "map-marked", - icon: [576, 512, [], "f59f", "M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z"] -}; -var faMapMarkedAlt = { - prefix: "fas", - iconName: "map-marked-alt", - icon: [576, 512, [], "f5a0", "M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z"] -}; -var faMapMarker = { - prefix: "fas", - iconName: "map-marker", - icon: [384, 512, [], "f041", "M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z"] -}; -var faMapMarkerAlt = { - prefix: "fas", - iconName: "map-marker-alt", - icon: [384, 512, [], "f3c5", "M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z"] -}; -var faMapPin = { - prefix: "fas", - iconName: "map-pin", - icon: [288, 512, [], "f276", "M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z"] -}; -var faMapSigns = { - prefix: "fas", - iconName: "map-signs", - icon: [512, 512, [], "f277", "M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z"] -}; -var faMarker = { - prefix: "fas", - iconName: "marker", - icon: [512, 512, [], "f5a1", "M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z"] -}; -var faMars = { - prefix: "fas", - iconName: "mars", - icon: [384, 512, [], "f222", "M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"] -}; -var faMarsDouble = { - prefix: "fas", - iconName: "mars-double", - icon: [512, 512, [], "f227", "M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z"] -}; -var faMarsStroke = { - prefix: "fas", - iconName: "mars-stroke", - icon: [384, 512, [], "f229", "M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"] -}; -var faMarsStrokeH = { - prefix: "fas", - iconName: "mars-stroke-h", - icon: [480, 512, [], "f22b", "M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z"] -}; -var faMarsStrokeV = { - prefix: "fas", - iconName: "mars-stroke-v", - icon: [288, 512, [], "f22a", "M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z"] -}; -var faMask = { - prefix: "fas", - iconName: "mask", - icon: [640, 512, [], "f6fa", "M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z"] -}; -var faMedal = { - prefix: "fas", - iconName: "medal", - icon: [512, 512, [], "f5a2", "M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z"] -}; -var faMedkit = { - prefix: "fas", - iconName: "medkit", - icon: [512, 512, [], "f0fa", "M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z"] -}; -var faMeh2 = { - prefix: "fas", - iconName: "meh", - icon: [496, 512, [], "f11a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"] -}; -var faMehBlank2 = { - prefix: "fas", - iconName: "meh-blank", - icon: [496, 512, [], "f5a4", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"] -}; -var faMehRollingEyes2 = { - prefix: "fas", - iconName: "meh-rolling-eyes", - icon: [496, 512, [], "f5a5", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z"] -}; -var faMemory = { - prefix: "fas", - iconName: "memory", - icon: [640, 512, [], "f538", "M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z"] -}; -var faMenorah = { - prefix: "fas", - iconName: "menorah", - icon: [640, 512, [], "f676", "M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z"] -}; -var faMercury = { - prefix: "fas", - iconName: "mercury", - icon: [288, 512, [], "f223", "M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z"] -}; -var faMeteor = { - prefix: "fas", - iconName: "meteor", - icon: [512, 512, [], "f753", "M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z"] -}; -var faMicrochip = { - prefix: "fas", - iconName: "microchip", - icon: [512, 512, [], "f2db", "M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z"] -}; -var faMicrophone = { - prefix: "fas", - iconName: "microphone", - icon: [352, 512, [], "f130", "M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z"] -}; -var faMicrophoneAlt = { - prefix: "fas", - iconName: "microphone-alt", - icon: [352, 512, [], "f3c9", "M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z"] -}; -var faMicrophoneAltSlash = { - prefix: "fas", - iconName: "microphone-alt-slash", - icon: [640, 512, [], "f539", "M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z"] -}; -var faMicrophoneSlash = { - prefix: "fas", - iconName: "microphone-slash", - icon: [640, 512, [], "f131", "M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z"] -}; -var faMicroscope = { - prefix: "fas", - iconName: "microscope", - icon: [512, 512, [], "f610", "M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z"] -}; -var faMinus = { - prefix: "fas", - iconName: "minus", - icon: [448, 512, [], "f068", "M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"] -}; -var faMinusCircle = { - prefix: "fas", - iconName: "minus-circle", - icon: [512, 512, [], "f056", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z"] -}; -var faMinusSquare2 = { - prefix: "fas", - iconName: "minus-square", - icon: [448, 512, [], "f146", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z"] -}; -var faMitten = { - prefix: "fas", - iconName: "mitten", - icon: [448, 512, [], "f7b5", "M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z"] -}; -var faMobile = { - prefix: "fas", - iconName: "mobile", - icon: [320, 512, [], "f10b", "M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"] -}; -var faMobileAlt = { - prefix: "fas", - iconName: "mobile-alt", - icon: [320, 512, [], "f3cd", "M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z"] -}; -var faMoneyBill = { - prefix: "fas", - iconName: "money-bill", - icon: [640, 512, [], "f0d6", "M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z"] -}; -var faMoneyBillAlt2 = { - prefix: "fas", - iconName: "money-bill-alt", - icon: [640, 512, [], "f3d1", "M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z"] -}; -var faMoneyBillWave = { - prefix: "fas", - iconName: "money-bill-wave", - icon: [640, 512, [], "f53a", "M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z"] -}; -var faMoneyBillWaveAlt = { - prefix: "fas", - iconName: "money-bill-wave-alt", - icon: [640, 512, [], "f53b", "M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z"] -}; -var faMoneyCheck = { - prefix: "fas", - iconName: "money-check", - icon: [640, 512, [], "f53c", "M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z"] -}; -var faMoneyCheckAlt = { - prefix: "fas", - iconName: "money-check-alt", - icon: [640, 512, [], "f53d", "M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z"] -}; -var faMonument = { - prefix: "fas", - iconName: "monument", - icon: [384, 512, [], "f5a6", "M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z"] -}; -var faMoon2 = { - prefix: "fas", - iconName: "moon", - icon: [512, 512, [], "f186", "M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"] -}; -var faMortarPestle = { - prefix: "fas", - iconName: "mortar-pestle", - icon: [512, 512, [], "f5a7", "M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"] -}; -var faMosque = { - prefix: "fas", - iconName: "mosque", - icon: [640, 512, [], "f678", "M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z"] -}; -var faMotorcycle = { - prefix: "fas", - iconName: "motorcycle", - icon: [640, 512, [], "f21c", "M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z"] -}; -var faMountain = { - prefix: "fas", - iconName: "mountain", - icon: [640, 512, [], "f6fc", "M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z"] -}; -var faMouse = { - prefix: "fas", - iconName: "mouse", - icon: [384, 512, [], "f8cc", "M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z"] -}; -var faMousePointer = { - prefix: "fas", - iconName: "mouse-pointer", - icon: [320, 512, [], "f245", "M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z"] -}; -var faMugHot = { - prefix: "fas", - iconName: "mug-hot", - icon: [512, 512, [], "f7b6", "M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z"] -}; -var faMusic = { - prefix: "fas", - iconName: "music", - icon: [512, 512, [], "f001", "M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z"] -}; -var faNetworkWired = { - prefix: "fas", - iconName: "network-wired", - icon: [640, 512, [], "f6ff", "M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z"] -}; -var faNeuter = { - prefix: "fas", - iconName: "neuter", - icon: [288, 512, [], "f22c", "M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"] -}; -var faNewspaper2 = { - prefix: "fas", - iconName: "newspaper", - icon: [576, 512, [], "f1ea", "M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z"] -}; -var faNotEqual = { - prefix: "fas", - iconName: "not-equal", - icon: [448, 512, [], "f53e", "M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z"] -}; -var faNotesMedical = { - prefix: "fas", - iconName: "notes-medical", - icon: [384, 512, [], "f481", "M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z"] -}; -var faObjectGroup2 = { - prefix: "fas", - iconName: "object-group", - icon: [512, 512, [], "f247", "M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z"] -}; -var faObjectUngroup2 = { - prefix: "fas", - iconName: "object-ungroup", - icon: [576, 512, [], "f248", "M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z"] -}; -var faOilCan = { - prefix: "fas", - iconName: "oil-can", - icon: [640, 512, [], "f613", "M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z"] -}; -var faOm = { - prefix: "fas", - iconName: "om", - icon: [512, 512, [], "f679", "M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z"] -}; -var faOtter = { - prefix: "fas", - iconName: "otter", - icon: [640, 512, [], "f700", "M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z"] -}; -var faOutdent = { - prefix: "fas", - iconName: "outdent", - icon: [448, 512, [], "f03b", "M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"] -}; -var faPager = { - prefix: "fas", - iconName: "pager", - icon: [512, 512, [], "f815", "M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z"] -}; -var faPaintBrush = { - prefix: "fas", - iconName: "paint-brush", - icon: [512, 512, [], "f1fc", "M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z"] -}; -var faPaintRoller = { - prefix: "fas", - iconName: "paint-roller", - icon: [512, 512, [], "f5aa", "M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z"] -}; -var faPalette = { - prefix: "fas", - iconName: "palette", - icon: [512, 512, [], "f53f", "M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"] -}; -var faPallet = { - prefix: "fas", - iconName: "pallet", - icon: [640, 512, [], "f482", "M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z"] -}; -var faPaperPlane2 = { - prefix: "fas", - iconName: "paper-plane", - icon: [512, 512, [], "f1d8", "M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z"] -}; -var faPaperclip = { - prefix: "fas", - iconName: "paperclip", - icon: [448, 512, [], "f0c6", "M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z"] -}; -var faParachuteBox = { - prefix: "fas", - iconName: "parachute-box", - icon: [512, 512, [], "f4cd", "M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z"] -}; -var faParagraph = { - prefix: "fas", - iconName: "paragraph", - icon: [448, 512, [], "f1dd", "M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z"] -}; -var faParking = { - prefix: "fas", - iconName: "parking", - icon: [448, 512, [], "f540", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z"] -}; -var faPassport = { - prefix: "fas", - iconName: "passport", - icon: [448, 512, [], "f5ab", "M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z"] -}; -var faPastafarianism = { - prefix: "fas", - iconName: "pastafarianism", - icon: [640, 512, [], "f67b", "M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z"] -}; -var faPaste = { - prefix: "fas", - iconName: "paste", - icon: [448, 512, [], "f0ea", "M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z"] -}; -var faPause = { - prefix: "fas", - iconName: "pause", - icon: [448, 512, [], "f04c", "M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z"] -}; -var faPauseCircle2 = { - prefix: "fas", - iconName: "pause-circle", - icon: [512, 512, [], "f28b", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z"] -}; -var faPaw = { - prefix: "fas", - iconName: "paw", - icon: [512, 512, [], "f1b0", "M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z"] -}; -var faPeace = { - prefix: "fas", - iconName: "peace", - icon: [496, 512, [], "f67c", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z"] -}; -var faPen = { - prefix: "fas", - iconName: "pen", - icon: [512, 512, [], "f304", "M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z"] -}; -var faPenAlt = { - prefix: "fas", - iconName: "pen-alt", - icon: [512, 512, [], "f305", "M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z"] -}; -var faPenFancy = { - prefix: "fas", - iconName: "pen-fancy", - icon: [512, 512, [], "f5ac", "M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z"] -}; -var faPenNib = { - prefix: "fas", - iconName: "pen-nib", - icon: [512, 512, [], "f5ad", "M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z"] -}; -var faPenSquare = { - prefix: "fas", - iconName: "pen-square", - icon: [448, 512, [], "f14b", "M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z"] -}; -var faPencilAlt = { - prefix: "fas", - iconName: "pencil-alt", - icon: [512, 512, [], "f303", "M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"] -}; -var faPencilRuler = { - prefix: "fas", - iconName: "pencil-ruler", - icon: [512, 512, [], "f5ae", "M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z"] -}; -var faPeopleArrows = { - prefix: "fas", - iconName: "people-arrows", - icon: [576, 512, [], "e068", "M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z"] -}; -var faPeopleCarry = { - prefix: "fas", - iconName: "people-carry", - icon: [640, 512, [], "f4ce", "M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z"] -}; -var faPepperHot = { - prefix: "fas", - iconName: "pepper-hot", - icon: [512, 512, [], "f816", "M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z"] -}; -var faPercent = { - prefix: "fas", - iconName: "percent", - icon: [448, 512, [], "f295", "M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z"] -}; -var faPercentage = { - prefix: "fas", - iconName: "percentage", - icon: [384, 512, [], "f541", "M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z"] -}; -var faPersonBooth = { - prefix: "fas", - iconName: "person-booth", - icon: [576, 512, [], "f756", "M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z"] -}; -var faPhone = { - prefix: "fas", - iconName: "phone", - icon: [512, 512, [], "f095", "M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z"] -}; -var faPhoneAlt = { - prefix: "fas", - iconName: "phone-alt", - icon: [512, 512, [], "f879", "M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z"] -}; -var faPhoneSlash = { - prefix: "fas", - iconName: "phone-slash", - icon: [640, 512, [], "f3dd", "M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z"] -}; -var faPhoneSquare = { - prefix: "fas", - iconName: "phone-square", - icon: [448, 512, [], "f098", "M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z"] -}; -var faPhoneSquareAlt = { - prefix: "fas", - iconName: "phone-square-alt", - icon: [448, 512, [], "f87b", "M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z"] -}; -var faPhoneVolume = { - prefix: "fas", - iconName: "phone-volume", - icon: [384, 512, [], "f2a0", "M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z"] -}; -var faPhotoVideo = { - prefix: "fas", - iconName: "photo-video", - icon: [640, 512, [], "f87c", "M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z"] -}; -var faPiggyBank = { - prefix: "fas", - iconName: "piggy-bank", - icon: [576, 512, [], "f4d3", "M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z"] -}; -var faPills = { - prefix: "fas", - iconName: "pills", - icon: [576, 512, [], "f484", "M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z"] -}; -var faPizzaSlice = { - prefix: "fas", - iconName: "pizza-slice", - icon: [512, 512, [], "f818", "M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"] -}; -var faPlaceOfWorship = { - prefix: "fas", - iconName: "place-of-worship", - icon: [640, 512, [], "f67f", "M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z"] -}; -var faPlane = { - prefix: "fas", - iconName: "plane", - icon: [576, 512, [], "f072", "M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z"] -}; -var faPlaneArrival = { - prefix: "fas", - iconName: "plane-arrival", - icon: [640, 512, [], "f5af", "M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z"] -}; -var faPlaneDeparture = { - prefix: "fas", - iconName: "plane-departure", - icon: [640, 512, [], "f5b0", "M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z"] -}; -var faPlaneSlash = { - prefix: "fas", - iconName: "plane-slash", - icon: [640, 512, [], "e069", "M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z"] -}; -var faPlay = { - prefix: "fas", - iconName: "play", - icon: [448, 512, [], "f04b", "M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"] -}; -var faPlayCircle2 = { - prefix: "fas", - iconName: "play-circle", - icon: [512, 512, [], "f144", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z"] -}; -var faPlug = { - prefix: "fas", - iconName: "plug", - icon: [384, 512, [], "f1e6", "M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z"] -}; -var faPlus = { - prefix: "fas", - iconName: "plus", - icon: [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"] -}; -var faPlusCircle = { - prefix: "fas", - iconName: "plus-circle", - icon: [512, 512, [], "f055", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"] -}; -var faPlusSquare2 = { - prefix: "fas", - iconName: "plus-square", - icon: [448, 512, [], "f0fe", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"] -}; -var faPodcast = { - prefix: "fas", - iconName: "podcast", - icon: [448, 512, [], "f2ce", "M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z"] -}; -var faPoll = { - prefix: "fas", - iconName: "poll", - icon: [448, 512, [], "f681", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z"] -}; -var faPollH = { - prefix: "fas", - iconName: "poll-h", - icon: [448, 512, [], "f682", "M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z"] -}; -var faPoo = { - prefix: "fas", - iconName: "poo", - icon: [512, 512, [], "f2fe", "M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"] -}; -var faPooStorm = { - prefix: "fas", - iconName: "poo-storm", - icon: [448, 512, [], "f75a", "M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z"] -}; -var faPoop = { - prefix: "fas", - iconName: "poop", - icon: [512, 512, [], "f619", "M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z"] -}; -var faPortrait = { - prefix: "fas", - iconName: "portrait", - icon: [384, 512, [], "f3e0", "M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"] -}; -var faPoundSign = { - prefix: "fas", - iconName: "pound-sign", - icon: [320, 512, [], "f154", "M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z"] -}; -var faPowerOff = { - prefix: "fas", - iconName: "power-off", - icon: [512, 512, [], "f011", "M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z"] -}; -var faPray = { - prefix: "fas", - iconName: "pray", - icon: [384, 512, [], "f683", "M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z"] -}; -var faPrayingHands = { - prefix: "fas", - iconName: "praying-hands", - icon: [640, 512, [], "f684", "M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z"] -}; -var faPrescription = { - prefix: "fas", - iconName: "prescription", - icon: [384, 512, [], "f5b1", "M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z"] -}; -var faPrescriptionBottle = { - prefix: "fas", - iconName: "prescription-bottle", - icon: [384, 512, [], "f485", "M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z"] -}; -var faPrescriptionBottleAlt = { - prefix: "fas", - iconName: "prescription-bottle-alt", - icon: [384, 512, [], "f486", "M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z"] -}; -var faPrint = { - prefix: "fas", - iconName: "print", - icon: [512, 512, [], "f02f", "M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"] -}; -var faProcedures = { - prefix: "fas", - iconName: "procedures", - icon: [640, 512, [], "f487", "M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z"] -}; -var faProjectDiagram = { - prefix: "fas", - iconName: "project-diagram", - icon: [640, 512, [], "f542", "M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z"] -}; -var faPumpMedical = { - prefix: "fas", - iconName: "pump-medical", - icon: [384, 512, [], "e06a", "M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z"] -}; -var faPumpSoap = { - prefix: "fas", - iconName: "pump-soap", - icon: [384, 512, [], "e06b", "M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z"] -}; -var faPuzzlePiece = { - prefix: "fas", - iconName: "puzzle-piece", - icon: [576, 512, [], "f12e", "M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z"] -}; -var faQrcode = { - prefix: "fas", - iconName: "qrcode", - icon: [448, 512, [], "f029", "M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z"] -}; -var faQuestion = { - prefix: "fas", - iconName: "question", - icon: [384, 512, [], "f128", "M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z"] -}; -var faQuestionCircle2 = { - prefix: "fas", - iconName: "question-circle", - icon: [512, 512, [], "f059", "M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z"] -}; -var faQuidditch = { - prefix: "fas", - iconName: "quidditch", - icon: [640, 512, [], "f458", "M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z"] -}; -var faQuoteLeft = { - prefix: "fas", - iconName: "quote-left", - icon: [512, 512, [], "f10d", "M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"] -}; -var faQuoteRight = { - prefix: "fas", - iconName: "quote-right", - icon: [512, 512, [], "f10e", "M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z"] -}; -var faQuran = { - prefix: "fas", - iconName: "quran", - icon: [448, 512, [], "f687", "M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"] -}; -var faRadiation = { - prefix: "fas", - iconName: "radiation", - icon: [496, 512, [], "f7b9", "M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z"] -}; -var faRadiationAlt = { - prefix: "fas", - iconName: "radiation-alt", - icon: [496, 512, [], "f7ba", "M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"] -}; -var faRainbow = { - prefix: "fas", - iconName: "rainbow", - icon: [576, 512, [], "f75b", "M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z"] -}; -var faRandom = { - prefix: "fas", - iconName: "random", - icon: [512, 512, [], "f074", "M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z"] -}; -var faReceipt = { - prefix: "fas", - iconName: "receipt", - icon: [384, 512, [], "f543", "M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z"] -}; -var faRecordVinyl = { - prefix: "fas", - iconName: "record-vinyl", - icon: [512, 512, [], "f8d9", "M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z"] -}; -var faRecycle = { - prefix: "fas", - iconName: "recycle", - icon: [512, 512, [], "f1b8", "M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z"] -}; -var faRedo = { - prefix: "fas", - iconName: "redo", - icon: [512, 512, [], "f01e", "M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"] -}; -var faRedoAlt = { - prefix: "fas", - iconName: "redo-alt", - icon: [512, 512, [], "f2f9", "M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z"] -}; -var faRegistered2 = { - prefix: "fas", - iconName: "registered", - icon: [512, 512, [], "f25d", "M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z"] -}; -var faRemoveFormat = { - prefix: "fas", - iconName: "remove-format", - icon: [640, 512, [], "f87d", "M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z"] -}; -var faReply = { - prefix: "fas", - iconName: "reply", - icon: [512, 512, [], "f3e5", "M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z"] -}; -var faReplyAll = { - prefix: "fas", - iconName: "reply-all", - icon: [576, 512, [], "f122", "M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z"] -}; -var faRepublican = { - prefix: "fas", - iconName: "republican", - icon: [640, 512, [], "f75e", "M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z"] -}; -var faRestroom = { - prefix: "fas", - iconName: "restroom", - icon: [640, 512, [], "f7bd", "M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z"] -}; -var faRetweet = { - prefix: "fas", - iconName: "retweet", - icon: [640, 512, [], "f079", "M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z"] -}; -var faRibbon = { - prefix: "fas", - iconName: "ribbon", - icon: [448, 512, [], "f4d6", "M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z"] -}; -var faRing = { - prefix: "fas", - iconName: "ring", - icon: [512, 512, [], "f70b", "M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z"] -}; -var faRoad = { - prefix: "fas", - iconName: "road", - icon: [576, 512, [], "f018", "M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z"] -}; -var faRobot = { - prefix: "fas", - iconName: "robot", - icon: [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"] -}; -var faRocket = { - prefix: "fas", - iconName: "rocket", - icon: [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"] -}; -var faRoute = { - prefix: "fas", - iconName: "route", - icon: [512, 512, [], "f4d7", "M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"] -}; -var faRss = { - prefix: "fas", - iconName: "rss", - icon: [448, 512, [], "f09e", "M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z"] -}; -var faRssSquare = { - prefix: "fas", - iconName: "rss-square", - icon: [448, 512, [], "f143", "M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z"] -}; -var faRubleSign = { - prefix: "fas", - iconName: "ruble-sign", - icon: [384, 512, [], "f158", "M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z"] -}; -var faRuler = { - prefix: "fas", - iconName: "ruler", - icon: [640, 512, [], "f545", "M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z"] -}; -var faRulerCombined = { - prefix: "fas", - iconName: "ruler-combined", - icon: [512, 512, [], "f546", "M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"] -}; -var faRulerHorizontal = { - prefix: "fas", - iconName: "ruler-horizontal", - icon: [576, 512, [], "f547", "M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z"] -}; -var faRulerVertical = { - prefix: "fas", - iconName: "ruler-vertical", - icon: [256, 512, [], "f548", "M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z"] -}; -var faRunning = { - prefix: "fas", - iconName: "running", - icon: [416, 512, [], "f70c", "M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z"] -}; -var faRupeeSign = { - prefix: "fas", - iconName: "rupee-sign", - icon: [320, 512, [], "f156", "M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z"] -}; -var faSadCry2 = { - prefix: "fas", - iconName: "sad-cry", - icon: [496, 512, [], "f5b3", "M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z"] -}; -var faSadTear2 = { - prefix: "fas", - iconName: "sad-tear", - icon: [496, 512, [], "f5b4", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z"] -}; -var faSatellite = { - prefix: "fas", - iconName: "satellite", - icon: [512, 512, [], "f7bf", "M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z"] -}; -var faSatelliteDish = { - prefix: "fas", - iconName: "satellite-dish", - icon: [512, 512, [], "f7c0", "M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z"] -}; -var faSave2 = { - prefix: "fas", - iconName: "save", - icon: [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"] -}; -var faSchool = { - prefix: "fas", - iconName: "school", - icon: [640, 512, [], "f549", "M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z"] -}; -var faScrewdriver = { - prefix: "fas", - iconName: "screwdriver", - icon: [512, 512, [], "f54a", "M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"] -}; -var faScroll = { - prefix: "fas", - iconName: "scroll", - icon: [640, 512, [], "f70e", "M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z"] -}; -var faSdCard = { - prefix: "fas", - iconName: "sd-card", - icon: [384, 512, [], "f7c2", "M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z"] -}; -var faSearch = { - prefix: "fas", - iconName: "search", - icon: [512, 512, [], "f002", "M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"] -}; -var faSearchDollar = { - prefix: "fas", - iconName: "search-dollar", - icon: [512, 512, [], "f688", "M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z"] -}; -var faSearchLocation = { - prefix: "fas", - iconName: "search-location", - icon: [512, 512, [], "f689", "M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"] -}; -var faSearchMinus = { - prefix: "fas", - iconName: "search-minus", - icon: [512, 512, [], "f010", "M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"] -}; -var faSearchPlus = { - prefix: "fas", - iconName: "search-plus", - icon: [512, 512, [], "f00e", "M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"] -}; -var faSeedling = { - prefix: "fas", - iconName: "seedling", - icon: [512, 512, [], "f4d8", "M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z"] -}; -var faServer = { - prefix: "fas", - iconName: "server", - icon: [512, 512, [], "f233", "M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z"] -}; -var faShapes = { - prefix: "fas", - iconName: "shapes", - icon: [512, 512, [], "f61f", "M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z"] -}; -var faShare = { - prefix: "fas", - iconName: "share", - icon: [512, 512, [], "f064", "M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"] -}; -var faShareAlt = { - prefix: "fas", - iconName: "share-alt", - icon: [448, 512, [], "f1e0", "M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z"] -}; -var faShareAltSquare = { - prefix: "fas", - iconName: "share-alt-square", - icon: [448, 512, [], "f1e1", "M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z"] -}; -var faShareSquare2 = { - prefix: "fas", - iconName: "share-square", - icon: [576, 512, [], "f14d", "M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z"] -}; -var faShekelSign = { - prefix: "fas", - iconName: "shekel-sign", - icon: [448, 512, [], "f20b", "M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z"] -}; -var faShieldAlt = { - prefix: "fas", - iconName: "shield-alt", - icon: [512, 512, [], "f3ed", "M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z"] -}; -var faShieldVirus = { - prefix: "fas", - iconName: "shield-virus", - icon: [512, 512, [], "e06c", "M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z"] -}; -var faShip = { - prefix: "fas", - iconName: "ship", - icon: [640, 512, [], "f21a", "M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z"] -}; -var faShippingFast = { - prefix: "fas", - iconName: "shipping-fast", - icon: [640, 512, [], "f48b", "M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"] -}; -var faShoePrints = { - prefix: "fas", - iconName: "shoe-prints", - icon: [640, 512, [], "f54b", "M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z"] -}; -var faShoppingBag = { - prefix: "fas", - iconName: "shopping-bag", - icon: [448, 512, [], "f290", "M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z"] -}; -var faShoppingBasket = { - prefix: "fas", - iconName: "shopping-basket", - icon: [576, 512, [], "f291", "M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z"] -}; -var faShoppingCart = { - prefix: "fas", - iconName: "shopping-cart", - icon: [576, 512, [], "f07a", "M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z"] -}; -var faShower = { - prefix: "fas", - iconName: "shower", - icon: [512, 512, [], "f2cc", "M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z"] -}; -var faShuttleVan = { - prefix: "fas", - iconName: "shuttle-van", - icon: [640, 512, [], "f5b6", "M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z"] -}; -var faSign = { - prefix: "fas", - iconName: "sign", - icon: [512, 512, [], "f4d9", "M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z"] -}; -var faSignInAlt = { - prefix: "fas", - iconName: "sign-in-alt", - icon: [512, 512, [], "f2f6", "M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z"] -}; -var faSignLanguage = { - prefix: "fas", - iconName: "sign-language", - icon: [448, 512, [], "f2a7", "M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z"] -}; -var faSignOutAlt = { - prefix: "fas", - iconName: "sign-out-alt", - icon: [512, 512, [], "f2f5", "M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z"] -}; -var faSignal = { - prefix: "fas", - iconName: "signal", - icon: [640, 512, [], "f012", "M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z"] -}; -var faSignature = { - prefix: "fas", - iconName: "signature", - icon: [640, 512, [], "f5b7", "M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z"] -}; -var faSimCard = { - prefix: "fas", - iconName: "sim-card", - icon: [384, 512, [], "f7c4", "M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z"] -}; -var faSink = { - prefix: "fas", - iconName: "sink", - icon: [512, 512, [], "e06d", "M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z"] -}; -var faSitemap = { - prefix: "fas", - iconName: "sitemap", - icon: [640, 512, [], "f0e8", "M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"] -}; -var faSkating = { - prefix: "fas", - iconName: "skating", - icon: [448, 512, [], "f7c5", "M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z"] -}; -var faSkiing = { - prefix: "fas", - iconName: "skiing", - icon: [512, 512, [], "f7c9", "M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z"] -}; -var faSkiingNordic = { - prefix: "fas", - iconName: "skiing-nordic", - icon: [576, 512, [], "f7ca", "M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z"] -}; -var faSkull = { - prefix: "fas", - iconName: "skull", - icon: [512, 512, [], "f54c", "M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z"] -}; -var faSkullCrossbones = { - prefix: "fas", - iconName: "skull-crossbones", - icon: [448, 512, [], "f714", "M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z"] -}; -var faSlash = { - prefix: "fas", - iconName: "slash", - icon: [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"] -}; -var faSleigh = { - prefix: "fas", - iconName: "sleigh", - icon: [640, 512, [], "f7cc", "M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z"] -}; -var faSlidersH = { - prefix: "fas", - iconName: "sliders-h", - icon: [512, 512, [], "f1de", "M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"] -}; -var faSmile2 = { - prefix: "fas", - iconName: "smile", - icon: [496, 512, [], "f118", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z"] -}; -var faSmileBeam2 = { - prefix: "fas", - iconName: "smile-beam", - icon: [496, 512, [], "f5b8", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z"] -}; -var faSmileWink2 = { - prefix: "fas", - iconName: "smile-wink", - icon: [496, 512, [], "f4da", "M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z"] -}; -var faSmog = { - prefix: "fas", - iconName: "smog", - icon: [640, 512, [], "f75f", "M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z"] -}; -var faSmoking = { - prefix: "fas", - iconName: "smoking", - icon: [640, 512, [], "f48d", "M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z"] -}; -var faSmokingBan = { - prefix: "fas", - iconName: "smoking-ban", - icon: [512, 512, [], "f54d", "M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z"] -}; -var faSms = { - prefix: "fas", - iconName: "sms", - icon: [512, 512, [], "f7cd", "M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z"] -}; -var faSnowboarding = { - prefix: "fas", - iconName: "snowboarding", - icon: [512, 512, [], "f7ce", "M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z"] -}; -var faSnowflake2 = { - prefix: "fas", - iconName: "snowflake", - icon: [448, 512, [], "f2dc", "M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z"] -}; -var faSnowman = { - prefix: "fas", - iconName: "snowman", - icon: [512, 512, [], "f7d0", "M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"] -}; -var faSnowplow = { - prefix: "fas", - iconName: "snowplow", - icon: [640, 512, [], "f7d2", "M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z"] -}; -var faSoap = { - prefix: "fas", - iconName: "soap", - icon: [512, 512, [], "e06e", "M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z"] -}; -var faSocks = { - prefix: "fas", - iconName: "socks", - icon: [512, 512, [], "f696", "M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z"] -}; -var faSolarPanel = { - prefix: "fas", - iconName: "solar-panel", - icon: [640, 512, [], "f5ba", "M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z"] -}; -var faSort = { - prefix: "fas", - iconName: "sort", - icon: [320, 512, [], "f0dc", "M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z"] -}; -var faSortAlphaDown = { - prefix: "fas", - iconName: "sort-alpha-down", - icon: [448, 512, [], "f15d", "M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z"] -}; -var faSortAlphaDownAlt = { - prefix: "fas", - iconName: "sort-alpha-down-alt", - icon: [448, 512, [], "f881", "M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z"] -}; -var faSortAlphaUp = { - prefix: "fas", - iconName: "sort-alpha-up", - icon: [448, 512, [], "f15e", "M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z"] -}; -var faSortAlphaUpAlt = { - prefix: "fas", - iconName: "sort-alpha-up-alt", - icon: [448, 512, [], "f882", "M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z"] -}; -var faSortAmountDown = { - prefix: "fas", - iconName: "sort-amount-down", - icon: [512, 512, [], "f160", "M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"] -}; -var faSortAmountDownAlt = { - prefix: "fas", - iconName: "sort-amount-down-alt", - icon: [512, 512, [], "f884", "M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z"] -}; -var faSortAmountUp = { - prefix: "fas", - iconName: "sort-amount-up", - icon: [512, 512, [], "f161", "M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"] -}; -var faSortAmountUpAlt = { - prefix: "fas", - iconName: "sort-amount-up-alt", - icon: [512, 512, [], "f885", "M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z"] -}; -var faSortDown = { - prefix: "fas", - iconName: "sort-down", - icon: [320, 512, [], "f0dd", "M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z"] -}; -var faSortNumericDown = { - prefix: "fas", - iconName: "sort-numeric-down", - icon: [448, 512, [], "f162", "M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z"] -}; -var faSortNumericDownAlt = { - prefix: "fas", - iconName: "sort-numeric-down-alt", - icon: [448, 512, [], "f886", "M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z"] -}; -var faSortNumericUp = { - prefix: "fas", - iconName: "sort-numeric-up", - icon: [448, 512, [], "f163", "M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z"] -}; -var faSortNumericUpAlt = { - prefix: "fas", - iconName: "sort-numeric-up-alt", - icon: [448, 512, [], "f887", "M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z"] -}; -var faSortUp = { - prefix: "fas", - iconName: "sort-up", - icon: [320, 512, [], "f0de", "M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z"] -}; -var faSpa = { - prefix: "fas", - iconName: "spa", - icon: [576, 512, [], "f5bb", "M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z"] -}; -var faSpaceShuttle = { - prefix: "fas", - iconName: "space-shuttle", - icon: [640, 512, [], "f197", "M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z"] -}; -var faSpellCheck = { - prefix: "fas", - iconName: "spell-check", - icon: [576, 512, [], "f891", "M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z"] -}; -var faSpider = { - prefix: "fas", - iconName: "spider", - icon: [576, 512, [], "f717", "M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z"] -}; -var faSpinner = { - prefix: "fas", - iconName: "spinner", - icon: [512, 512, [], "f110", "M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"] -}; -var faSplotch = { - prefix: "fas", - iconName: "splotch", - icon: [512, 512, [], "f5bc", "M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z"] -}; -var faSprayCan = { - prefix: "fas", - iconName: "spray-can", - icon: [512, 512, [], "f5bd", "M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"] -}; -var faSquare2 = { - prefix: "fas", - iconName: "square", - icon: [448, 512, [], "f0c8", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"] -}; -var faSquareFull = { - prefix: "fas", - iconName: "square-full", - icon: [512, 512, [], "f45c", "M512 512H0V0h512v512z"] -}; -var faSquareRootAlt = { - prefix: "fas", - iconName: "square-root-alt", - icon: [576, 512, [], "f698", "M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"] -}; -var faStamp = { - prefix: "fas", - iconName: "stamp", - icon: [512, 512, [], "f5bf", "M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z"] -}; -var faStar2 = { - prefix: "fas", - iconName: "star", - icon: [576, 512, [], "f005", "M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"] -}; -var faStarAndCrescent = { - prefix: "fas", - iconName: "star-and-crescent", - icon: [512, 512, [], "f699", "M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z"] -}; -var faStarHalf2 = { - prefix: "fas", - iconName: "star-half", - icon: [576, 512, [], "f089", "M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z"] -}; -var faStarHalfAlt = { - prefix: "fas", - iconName: "star-half-alt", - icon: [536, 512, [], "f5c0", "M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z"] -}; -var faStarOfDavid = { - prefix: "fas", - iconName: "star-of-david", - icon: [464, 512, [], "f69a", "M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z"] -}; -var faStarOfLife = { - prefix: "fas", - iconName: "star-of-life", - icon: [480, 512, [], "f621", "M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z"] -}; -var faStepBackward = { - prefix: "fas", - iconName: "step-backward", - icon: [448, 512, [], "f048", "M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z"] -}; -var faStepForward = { - prefix: "fas", - iconName: "step-forward", - icon: [448, 512, [], "f051", "M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"] -}; -var faStethoscope = { - prefix: "fas", - iconName: "stethoscope", - icon: [512, 512, [], "f0f1", "M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"] -}; -var faStickyNote2 = { - prefix: "fas", - iconName: "sticky-note", - icon: [448, 512, [], "f249", "M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z"] -}; -var faStop = { - prefix: "fas", - iconName: "stop", - icon: [448, 512, [], "f04d", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"] -}; -var faStopCircle2 = { - prefix: "fas", - iconName: "stop-circle", - icon: [512, 512, [], "f28d", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z"] -}; -var faStopwatch = { - prefix: "fas", - iconName: "stopwatch", - icon: [448, 512, [], "f2f2", "M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"] -}; -var faStopwatch20 = { - prefix: "fas", - iconName: "stopwatch-20", - icon: [448, 512, [], "e06f", "M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z"] -}; -var faStore = { - prefix: "fas", - iconName: "store", - icon: [616, 512, [], "f54e", "M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z"] -}; -var faStoreAlt = { - prefix: "fas", - iconName: "store-alt", - icon: [640, 512, [], "f54f", "M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z"] -}; -var faStoreAltSlash = { - prefix: "fas", - iconName: "store-alt-slash", - icon: [640, 512, [], "e070", "M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z"] -}; -var faStoreSlash = { - prefix: "fas", - iconName: "store-slash", - icon: [640, 512, [], "e071", "M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z"] -}; -var faStream = { - prefix: "fas", - iconName: "stream", - icon: [512, 512, [], "f550", "M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z"] -}; -var faStreetView = { - prefix: "fas", - iconName: "street-view", - icon: [512, 512, [], "f21d", "M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z"] -}; -var faStrikethrough = { - prefix: "fas", - iconName: "strikethrough", - icon: [512, 512, [], "f0cc", "M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z"] -}; -var faStroopwafel = { - prefix: "fas", - iconName: "stroopwafel", - icon: [512, 512, [], "f551", "M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z"] -}; -var faSubscript = { - prefix: "fas", - iconName: "subscript", - icon: [512, 512, [], "f12c", "M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z"] -}; -var faSubway = { - prefix: "fas", - iconName: "subway", - icon: [448, 512, [], "f239", "M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"] -}; -var faSuitcase = { - prefix: "fas", - iconName: "suitcase", - icon: [512, 512, [], "f0f2", "M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z"] -}; -var faSuitcaseRolling = { - prefix: "fas", - iconName: "suitcase-rolling", - icon: [384, 512, [], "f5c1", "M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z"] -}; -var faSun2 = { - prefix: "fas", - iconName: "sun", - icon: [512, 512, [], "f185", "M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"] -}; -var faSuperscript = { - prefix: "fas", - iconName: "superscript", - icon: [512, 512, [], "f12b", "M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z"] -}; -var faSurprise2 = { - prefix: "fas", - iconName: "surprise", - icon: [496, 512, [], "f5c2", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"] -}; -var faSwatchbook = { - prefix: "fas", - iconName: "swatchbook", - icon: [512, 512, [], "f5c3", "M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z"] -}; -var faSwimmer = { - prefix: "fas", - iconName: "swimmer", - icon: [640, 512, [], "f5c4", "M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z"] -}; -var faSwimmingPool = { - prefix: "fas", - iconName: "swimming-pool", - icon: [640, 512, [], "f5c5", "M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z"] -}; -var faSynagogue = { - prefix: "fas", - iconName: "synagogue", - icon: [640, 512, [], "f69b", "M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z"] -}; -var faSync = { - prefix: "fas", - iconName: "sync", - icon: [512, 512, [], "f021", "M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"] -}; -var faSyncAlt = { - prefix: "fas", - iconName: "sync-alt", - icon: [512, 512, [], "f2f1", "M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"] -}; -var faSyringe = { - prefix: "fas", - iconName: "syringe", - icon: [512, 512, [], "f48e", "M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z"] -}; -var faTable = { - prefix: "fas", - iconName: "table", - icon: [512, 512, [], "f0ce", "M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z"] -}; -var faTableTennis = { - prefix: "fas", - iconName: "table-tennis", - icon: [512, 512, [], "f45d", "M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z"] -}; -var faTablet = { - prefix: "fas", - iconName: "tablet", - icon: [448, 512, [], "f10a", "M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"] -}; -var faTabletAlt = { - prefix: "fas", - iconName: "tablet-alt", - icon: [448, 512, [], "f3fa", "M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z"] -}; -var faTablets = { - prefix: "fas", - iconName: "tablets", - icon: [640, 512, [], "f490", "M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z"] -}; -var faTachometerAlt = { - prefix: "fas", - iconName: "tachometer-alt", - icon: [576, 512, [], "f3fd", "M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faTag = { - prefix: "fas", - iconName: "tag", - icon: [512, 512, [], "f02b", "M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"] -}; -var faTags = { - prefix: "fas", - iconName: "tags", - icon: [640, 512, [], "f02c", "M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z"] -}; -var faTape = { - prefix: "fas", - iconName: "tape", - icon: [640, 512, [], "f4db", "M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z"] -}; -var faTasks = { - prefix: "fas", - iconName: "tasks", - icon: [512, 512, [], "f0ae", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"] -}; -var faTaxi = { - prefix: "fas", - iconName: "taxi", - icon: [512, 512, [], "f1ba", "M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faTeeth = { - prefix: "fas", - iconName: "teeth", - icon: [640, 512, [], "f62e", "M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z"] -}; -var faTeethOpen = { - prefix: "fas", - iconName: "teeth-open", - icon: [640, 512, [], "f62f", "M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z"] -}; -var faTemperatureHigh = { - prefix: "fas", - iconName: "temperature-high", - icon: [512, 512, [], "f769", "M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z"] -}; -var faTemperatureLow = { - prefix: "fas", - iconName: "temperature-low", - icon: [512, 512, [], "f76b", "M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z"] -}; -var faTenge = { - prefix: "fas", - iconName: "tenge", - icon: [384, 512, [], "f7d7", "M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z"] -}; -var faTerminal = { - prefix: "fas", - iconName: "terminal", - icon: [640, 512, [], "f120", "M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z"] -}; -var faTextHeight = { - prefix: "fas", - iconName: "text-height", - icon: [576, 512, [], "f034", "M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z"] -}; -var faTextWidth = { - prefix: "fas", - iconName: "text-width", - icon: [448, 512, [], "f035", "M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z"] -}; -var faTh = { - prefix: "fas", - iconName: "th", - icon: [512, 512, [], "f00a", "M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z"] -}; -var faThLarge = { - prefix: "fas", - iconName: "th-large", - icon: [512, 512, [], "f009", "M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z"] -}; -var faThList = { - prefix: "fas", - iconName: "th-list", - icon: [512, 512, [], "f00b", "M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z"] -}; -var faTheaterMasks = { - prefix: "fas", - iconName: "theater-masks", - icon: [640, 512, [], "f630", "M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z"] -}; -var faThermometer = { - prefix: "fas", - iconName: "thermometer", - icon: [512, 512, [], "f491", "M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z"] -}; -var faThermometerEmpty = { - prefix: "fas", - iconName: "thermometer-empty", - icon: [256, 512, [], "f2cb", "M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"] -}; -var faThermometerFull = { - prefix: "fas", - iconName: "thermometer-full", - icon: [256, 512, [], "f2c7", "M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z"] -}; -var faThermometerHalf = { - prefix: "fas", - iconName: "thermometer-half", - icon: [256, 512, [], "f2c9", "M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"] -}; -var faThermometerQuarter = { - prefix: "fas", - iconName: "thermometer-quarter", - icon: [256, 512, [], "f2ca", "M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"] -}; -var faThermometerThreeQuarters = { - prefix: "fas", - iconName: "thermometer-three-quarters", - icon: [256, 512, [], "f2c8", "M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"] -}; -var faThumbsDown2 = { - prefix: "fas", - iconName: "thumbs-down", - icon: [512, 512, [], "f165", "M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z"] -}; -var faThumbsUp2 = { - prefix: "fas", - iconName: "thumbs-up", - icon: [512, 512, [], "f164", "M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z"] -}; -var faThumbtack = { - prefix: "fas", - iconName: "thumbtack", - icon: [384, 512, [], "f08d", "M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z"] -}; -var faTicketAlt = { - prefix: "fas", - iconName: "ticket-alt", - icon: [576, 512, [], "f3ff", "M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z"] -}; -var faTimes = { - prefix: "fas", - iconName: "times", - icon: [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"] -}; -var faTimesCircle2 = { - prefix: "fas", - iconName: "times-circle", - icon: [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"] -}; -var faTint = { - prefix: "fas", - iconName: "tint", - icon: [352, 512, [], "f043", "M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z"] -}; -var faTintSlash = { - prefix: "fas", - iconName: "tint-slash", - icon: [640, 512, [], "f5c7", "M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z"] -}; -var faTired2 = { - prefix: "fas", - iconName: "tired", - icon: [496, 512, [], "f5c8", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z"] -}; -var faToggleOff = { - prefix: "fas", - iconName: "toggle-off", - icon: [576, 512, [], "f204", "M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z"] -}; -var faToggleOn = { - prefix: "fas", - iconName: "toggle-on", - icon: [576, 512, [], "f205", "M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z"] -}; -var faToilet = { - prefix: "fas", - iconName: "toilet", - icon: [384, 512, [], "f7d8", "M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z"] -}; -var faToiletPaper = { - prefix: "fas", - iconName: "toilet-paper", - icon: [576, 512, [], "f71e", "M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z"] -}; -var faToiletPaperSlash = { - prefix: "fas", - iconName: "toilet-paper-slash", - icon: [640, 512, [], "e072", "M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z"] -}; -var faToolbox = { - prefix: "fas", - iconName: "toolbox", - icon: [512, 512, [], "f552", "M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z"] -}; -var faTools = { - prefix: "fas", - iconName: "tools", - icon: [512, 512, [], "f7d9", "M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z"] -}; -var faTooth = { - prefix: "fas", - iconName: "tooth", - icon: [448, 512, [], "f5c9", "M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z"] -}; -var faTorah = { - prefix: "fas", - iconName: "torah", - icon: [640, 512, [], "f6a0", "M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z"] -}; -var faToriiGate = { - prefix: "fas", - iconName: "torii-gate", - icon: [512, 512, [], "f6a1", "M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z"] -}; -var faTractor = { - prefix: "fas", - iconName: "tractor", - icon: [640, 512, [], "f722", "M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z"] -}; -var faTrademark = { - prefix: "fas", - iconName: "trademark", - icon: [640, 512, [], "f25c", "M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z"] -}; -var faTrafficLight = { - prefix: "fas", - iconName: "traffic-light", - icon: [384, 512, [], "f637", "M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z"] -}; -var faTrailer = { - prefix: "fas", - iconName: "trailer", - icon: [640, 512, [], "e041", "M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z"] -}; -var faTrain = { - prefix: "fas", - iconName: "train", - icon: [448, 512, [], "f238", "M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z"] -}; -var faTram = { - prefix: "fas", - iconName: "tram", - icon: [512, 512, [], "f7da", "M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"] -}; -var faTransgender = { - prefix: "fas", - iconName: "transgender", - icon: [384, 512, [], "f224", "M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"] -}; -var faTransgenderAlt = { - prefix: "fas", - iconName: "transgender-alt", - icon: [480, 512, [], "f225", "M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"] -}; -var faTrash = { - prefix: "fas", - iconName: "trash", - icon: [448, 512, [], "f1f8", "M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"] -}; -var faTrashAlt2 = { - prefix: "fas", - iconName: "trash-alt", - icon: [448, 512, [], "f2ed", "M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"] -}; -var faTrashRestore = { - prefix: "fas", - iconName: "trash-restore", - icon: [448, 512, [], "f829", "M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"] -}; -var faTrashRestoreAlt = { - prefix: "fas", - iconName: "trash-restore-alt", - icon: [448, 512, [], "f82a", "M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"] -}; -var faTree = { - prefix: "fas", - iconName: "tree", - icon: [384, 512, [], "f1bb", "M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z"] -}; -var faTrophy = { - prefix: "fas", - iconName: "trophy", - icon: [576, 512, [], "f091", "M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z"] -}; -var faTruck = { - prefix: "fas", - iconName: "truck", - icon: [640, 512, [], "f0d1", "M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"] -}; -var faTruckLoading = { - prefix: "fas", - iconName: "truck-loading", - icon: [640, 512, [], "f4de", "M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"] -}; -var faTruckMonster = { - prefix: "fas", - iconName: "truck-monster", - icon: [640, 512, [], "f63b", "M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z"] -}; -var faTruckMoving = { - prefix: "fas", - iconName: "truck-moving", - icon: [640, 512, [], "f4df", "M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z"] -}; -var faTruckPickup = { - prefix: "fas", - iconName: "truck-pickup", - icon: [640, 512, [], "f63c", "M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z"] -}; -var faTshirt = { - prefix: "fas", - iconName: "tshirt", - icon: [640, 512, [], "f553", "M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z"] -}; -var faTty = { - prefix: "fas", - iconName: "tty", - icon: [512, 512, [], "f1e4", "M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"] -}; -var faTv = { - prefix: "fas", - iconName: "tv", - icon: [640, 512, [], "f26c", "M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z"] -}; -var faUmbrella = { - prefix: "fas", - iconName: "umbrella", - icon: [576, 512, [], "f0e9", "M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z"] -}; -var faUmbrellaBeach = { - prefix: "fas", - iconName: "umbrella-beach", - icon: [640, 512, [], "f5ca", "M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z"] -}; -var faUnderline = { - prefix: "fas", - iconName: "underline", - icon: [448, 512, [], "f0cd", "M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"] -}; -var faUndo = { - prefix: "fas", - iconName: "undo", - icon: [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"] -}; -var faUndoAlt = { - prefix: "fas", - iconName: "undo-alt", - icon: [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"] -}; -var faUniversalAccess = { - prefix: "fas", - iconName: "universal-access", - icon: [512, 512, [], "f29a", "M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z"] -}; -var faUniversity = { - prefix: "fas", - iconName: "university", - icon: [512, 512, [], "f19c", "M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z"] -}; -var faUnlink = { - prefix: "fas", - iconName: "unlink", - icon: [512, 512, [], "f127", "M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z"] -}; -var faUnlock = { - prefix: "fas", - iconName: "unlock", - icon: [448, 512, [], "f09c", "M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"] -}; -var faUnlockAlt = { - prefix: "fas", - iconName: "unlock-alt", - icon: [448, 512, [], "f13e", "M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z"] -}; -var faUpload = { - prefix: "fas", - iconName: "upload", - icon: [512, 512, [], "f093", "M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"] -}; -var faUser2 = { - prefix: "fas", - iconName: "user", - icon: [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"] -}; -var faUserAlt = { - prefix: "fas", - iconName: "user-alt", - icon: [512, 512, [], "f406", "M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z"] -}; -var faUserAltSlash = { - prefix: "fas", - iconName: "user-alt-slash", - icon: [640, 512, [], "f4fa", "M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z"] -}; -var faUserAstronaut = { - prefix: "fas", - iconName: "user-astronaut", - icon: [448, 512, [], "f4fb", "M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z"] -}; -var faUserCheck = { - prefix: "fas", - iconName: "user-check", - icon: [640, 512, [], "f4fc", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z"] -}; -var faUserCircle2 = { - prefix: "fas", - iconName: "user-circle", - icon: [496, 512, [], "f2bd", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z"] -}; -var faUserClock = { - prefix: "fas", - iconName: "user-clock", - icon: [640, 512, [], "f4fd", "M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z"] -}; -var faUserCog = { - prefix: "fas", - iconName: "user-cog", - icon: [640, 512, [], "f4fe", "M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z"] -}; -var faUserEdit = { - prefix: "fas", - iconName: "user-edit", - icon: [640, 512, [], "f4ff", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z"] -}; -var faUserFriends = { - prefix: "fas", - iconName: "user-friends", - icon: [640, 512, [], "f500", "M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z"] -}; -var faUserGraduate = { - prefix: "fas", - iconName: "user-graduate", - icon: [448, 512, [], "f501", "M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z"] -}; -var faUserInjured = { - prefix: "fas", - iconName: "user-injured", - icon: [448, 512, [], "f728", "M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z"] -}; -var faUserLock = { - prefix: "fas", - iconName: "user-lock", - icon: [640, 512, [], "f502", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z"] -}; -var faUserMd = { - prefix: "fas", - iconName: "user-md", - icon: [448, 512, [], "f0f0", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z"] -}; -var faUserMinus = { - prefix: "fas", - iconName: "user-minus", - icon: [640, 512, [], "f503", "M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"] -}; -var faUserNinja = { - prefix: "fas", - iconName: "user-ninja", - icon: [448, 512, [], "f504", "M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z"] -}; -var faUserNurse = { - prefix: "fas", - iconName: "user-nurse", - icon: [448, 512, [], "f82f", "M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z"] -}; -var faUserPlus = { - prefix: "fas", - iconName: "user-plus", - icon: [640, 512, [], "f234", "M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"] -}; -var faUserSecret = { - prefix: "fas", - iconName: "user-secret", - icon: [448, 512, [], "f21b", "M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z"] -}; -var faUserShield = { - prefix: "fas", - iconName: "user-shield", - icon: [640, 512, [], "f505", "M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z"] -}; -var faUserSlash = { - prefix: "fas", - iconName: "user-slash", - icon: [640, 512, [], "f506", "M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z"] -}; -var faUserTag = { - prefix: "fas", - iconName: "user-tag", - icon: [640, 512, [], "f507", "M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z"] -}; -var faUserTie = { - prefix: "fas", - iconName: "user-tie", - icon: [448, 512, [], "f508", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z"] -}; -var faUserTimes = { - prefix: "fas", - iconName: "user-times", - icon: [640, 512, [], "f235", "M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"] -}; -var faUsers = { - prefix: "fas", - iconName: "users", - icon: [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"] -}; -var faUsersCog = { - prefix: "fas", - iconName: "users-cog", - icon: [640, 512, [], "f509", "M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"] -}; -var faUsersSlash = { - prefix: "fas", - iconName: "users-slash", - icon: [640, 512, [], "e073", "M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z"] -}; -var faUtensilSpoon = { - prefix: "fas", - iconName: "utensil-spoon", - icon: [512, 512, [], "f2e5", "M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z"] -}; -var faUtensils = { - prefix: "fas", - iconName: "utensils", - icon: [416, 512, [], "f2e7", "M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z"] -}; -var faVectorSquare = { - prefix: "fas", - iconName: "vector-square", - icon: [512, 512, [], "f5cb", "M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z"] -}; -var faVenus = { - prefix: "fas", - iconName: "venus", - icon: [288, 512, [], "f221", "M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z"] -}; -var faVenusDouble = { - prefix: "fas", - iconName: "venus-double", - icon: [512, 512, [], "f226", "M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z"] -}; -var faVenusMars = { - prefix: "fas", - iconName: "venus-mars", - icon: [576, 512, [], "f228", "M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"] -}; -var faVest = { - prefix: "fas", - iconName: "vest", - icon: [448, 512, [], "e085", "M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z"] -}; -var faVestPatches = { - prefix: "fas", - iconName: "vest-patches", - icon: [448, 512, [], "e086", "M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z"] -}; -var faVial = { - prefix: "fas", - iconName: "vial", - icon: [480, 512, [], "f492", "M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z"] -}; -var faVials = { - prefix: "fas", - iconName: "vials", - icon: [640, 512, [], "f493", "M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z"] -}; -var faVideo = { - prefix: "fas", - iconName: "video", - icon: [576, 512, [], "f03d", "M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z"] -}; -var faVideoSlash = { - prefix: "fas", - iconName: "video-slash", - icon: [640, 512, [], "f4e2", "M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z"] -}; -var faVihara = { - prefix: "fas", - iconName: "vihara", - icon: [640, 512, [], "f6a7", "M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z"] -}; -var faVirus = { - prefix: "fas", - iconName: "virus", - icon: [512, 512, [], "e074", "M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z"] -}; -var faVirusSlash = { - prefix: "fas", - iconName: "virus-slash", - icon: [640, 512, [], "e075", "M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z"] -}; -var faViruses = { - prefix: "fas", - iconName: "viruses", - icon: [640, 512, [], "e076", "M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z"] -}; -var faVoicemail = { - prefix: "fas", - iconName: "voicemail", - icon: [640, 512, [], "f897", "M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z"] -}; -var faVolleyballBall = { - prefix: "fas", - iconName: "volleyball-ball", - icon: [512, 512, [], "f45f", "M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z"] -}; -var faVolumeDown = { - prefix: "fas", - iconName: "volume-down", - icon: [384, 512, [], "f027", "M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z"] -}; -var faVolumeMute = { - prefix: "fas", - iconName: "volume-mute", - icon: [512, 512, [], "f6a9", "M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z"] -}; -var faVolumeOff = { - prefix: "fas", - iconName: "volume-off", - icon: [256, 512, [], "f026", "M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z"] -}; -var faVolumeUp = { - prefix: "fas", - iconName: "volume-up", - icon: [576, 512, [], "f028", "M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z"] -}; -var faVoteYea = { - prefix: "fas", - iconName: "vote-yea", - icon: [640, 512, [], "f772", "M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z"] -}; -var faVrCardboard = { - prefix: "fas", - iconName: "vr-cardboard", - icon: [640, 512, [], "f729", "M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z"] -}; -var faWalking = { - prefix: "fas", - iconName: "walking", - icon: [320, 512, [], "f554", "M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z"] -}; -var faWallet = { - prefix: "fas", - iconName: "wallet", - icon: [512, 512, [], "f555", "M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"] -}; -var faWarehouse = { - prefix: "fas", - iconName: "warehouse", - icon: [640, 512, [], "f494", "M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z"] -}; -var faWater = { - prefix: "fas", - iconName: "water", - icon: [576, 512, [], "f773", "M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z"] -}; -var faWaveSquare = { - prefix: "fas", - iconName: "wave-square", - icon: [640, 512, [], "f83e", "M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z"] -}; -var faWeight = { - prefix: "fas", - iconName: "weight", - icon: [512, 512, [], "f496", "M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z"] -}; -var faWeightHanging = { - prefix: "fas", - iconName: "weight-hanging", - icon: [512, 512, [], "f5cd", "M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"] -}; -var faWheelchair = { - prefix: "fas", - iconName: "wheelchair", - icon: [512, 512, [], "f193", "M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z"] -}; -var faWifi = { - prefix: "fas", - iconName: "wifi", - icon: [640, 512, [], "f1eb", "M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z"] -}; -var faWind = { - prefix: "fas", - iconName: "wind", - icon: [512, 512, [], "f72e", "M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z"] -}; -var faWindowClose2 = { - prefix: "fas", - iconName: "window-close", - icon: [512, 512, [], "f410", "M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z"] -}; -var faWindowMaximize2 = { - prefix: "fas", - iconName: "window-maximize", - icon: [512, 512, [], "f2d0", "M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z"] -}; -var faWindowMinimize2 = { - prefix: "fas", - iconName: "window-minimize", - icon: [512, 512, [], "f2d1", "M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z"] -}; -var faWindowRestore2 = { - prefix: "fas", - iconName: "window-restore", - icon: [512, 512, [], "f2d2", "M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z"] -}; -var faWineBottle = { - prefix: "fas", - iconName: "wine-bottle", - icon: [512, 512, [], "f72f", "M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z"] -}; -var faWineGlass = { - prefix: "fas", - iconName: "wine-glass", - icon: [288, 512, [], "f4e3", "M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z"] -}; -var faWineGlassAlt = { - prefix: "fas", - iconName: "wine-glass-alt", - icon: [288, 512, [], "f5ce", "M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z"] -}; -var faWonSign = { - prefix: "fas", - iconName: "won-sign", - icon: [576, 512, [], "f159", "M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z"] -}; -var faWrench = { - prefix: "fas", - iconName: "wrench", - icon: [512, 512, [], "f0ad", "M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"] -}; -var faXRay = { - prefix: "fas", - iconName: "x-ray", - icon: [640, 512, [], "f497", "M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z"] -}; -var faYenSign = { - prefix: "fas", - iconName: "yen-sign", - icon: [384, 512, [], "f157", "M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z"] -}; -var faYinYang = { - prefix: "fas", - iconName: "yin-yang", - icon: [496, 512, [], "f6ad", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"] -}; -var _iconsCache2 = { - faAd, - faAddressBook: faAddressBook2, - faAddressCard: faAddressCard2, - faAdjust, - faAirFreshener, - faAlignCenter, - faAlignJustify, - faAlignLeft, - faAlignRight, - faAllergies, - faAmbulance, - faAmericanSignLanguageInterpreting, - faAnchor, - faAngleDoubleDown, - faAngleDoubleLeft, - faAngleDoubleRight, - faAngleDoubleUp, - faAngleDown, - faAngleLeft, - faAngleRight, - faAngleUp, - faAngry: faAngry2, - faAnkh, - faAppleAlt, - faArchive, - faArchway, - faArrowAltCircleDown: faArrowAltCircleDown2, - faArrowAltCircleLeft: faArrowAltCircleLeft2, - faArrowAltCircleRight: faArrowAltCircleRight2, - faArrowAltCircleUp: faArrowAltCircleUp2, - faArrowCircleDown, - faArrowCircleLeft, - faArrowCircleRight, - faArrowCircleUp, - faArrowDown, - faArrowLeft, - faArrowRight, - faArrowUp, - faArrowsAlt, - faArrowsAltH, - faArrowsAltV, - faAssistiveListeningSystems, - faAsterisk, - faAt, - faAtlas, - faAtom, - faAudioDescription, - faAward, - faBaby, - faBabyCarriage, - faBackspace, - faBackward, - faBacon, - faBacteria, - faBacterium, - faBahai, - faBalanceScale, - faBalanceScaleLeft, - faBalanceScaleRight, - faBan, - faBandAid, - faBarcode, - faBars, - faBaseballBall, - faBasketballBall, - faBath, - faBatteryEmpty, - faBatteryFull, - faBatteryHalf, - faBatteryQuarter, - faBatteryThreeQuarters, - faBed, - faBeer, - faBell: faBell2, - faBellSlash: faBellSlash2, - faBezierCurve, - faBible, - faBicycle, - faBiking, - faBinoculars, - faBiohazard, - faBirthdayCake, - faBlender, - faBlenderPhone, - faBlind, - faBlog, - faBold, - faBolt, - faBomb, - faBone, - faBong, - faBook, - faBookDead, - faBookMedical, - faBookOpen, - faBookReader, - faBookmark: faBookmark2, - faBorderAll, - faBorderNone, - faBorderStyle, - faBowlingBall, - faBox, - faBoxOpen, - faBoxTissue, - faBoxes, - faBraille, - faBrain, - faBreadSlice, - faBriefcase, - faBriefcaseMedical, - faBroadcastTower, - faBroom, - faBrush, - faBug, - faBuilding: faBuilding2, - faBullhorn, - faBullseye, - faBurn, - faBus, - faBusAlt, - faBusinessTime, - faCalculator, - faCalendar: faCalendar2, - faCalendarAlt: faCalendarAlt2, - faCalendarCheck: faCalendarCheck2, - faCalendarDay, - faCalendarMinus: faCalendarMinus2, - faCalendarPlus: faCalendarPlus2, - faCalendarTimes: faCalendarTimes2, - faCalendarWeek, - faCamera, - faCameraRetro, - faCampground, - faCandyCane, - faCannabis, - faCapsules, - faCar, - faCarAlt, - faCarBattery, - faCarCrash, - faCarSide, - faCaravan, - faCaretDown, - faCaretLeft, - faCaretRight, - faCaretSquareDown: faCaretSquareDown2, - faCaretSquareLeft: faCaretSquareLeft2, - faCaretSquareRight: faCaretSquareRight2, - faCaretSquareUp: faCaretSquareUp2, - faCaretUp, - faCarrot, - faCartArrowDown, - faCartPlus, - faCashRegister, - faCat, - faCertificate, - faChair, - faChalkboard, - faChalkboardTeacher, - faChargingStation, - faChartArea, - faChartBar: faChartBar2, - faChartLine, - faChartPie, - faCheck, - faCheckCircle: faCheckCircle2, - faCheckDouble, - faCheckSquare: faCheckSquare2, - faCheese, - faChess, - faChessBishop, - faChessBoard, - faChessKing, - faChessKnight, - faChessPawn, - faChessQueen, - faChessRook, - faChevronCircleDown, - faChevronCircleLeft, - faChevronCircleRight, - faChevronCircleUp, - faChevronDown, - faChevronLeft, - faChevronRight, - faChevronUp, - faChild, - faChurch, - faCircle: faCircle2, - faCircleNotch, - faCity, - faClinicMedical, - faClipboard: faClipboard2, - faClipboardCheck, - faClipboardList, - faClock: faClock2, - faClone: faClone2, - faClosedCaptioning: faClosedCaptioning2, - faCloud, - faCloudDownloadAlt, - faCloudMeatball, - faCloudMoon, - faCloudMoonRain, - faCloudRain, - faCloudShowersHeavy, - faCloudSun, - faCloudSunRain, - faCloudUploadAlt, - faCocktail, - faCode, - faCodeBranch, - faCoffee, - faCog, - faCogs, - faCoins, - faColumns, - faComment: faComment2, - faCommentAlt: faCommentAlt2, - faCommentDollar, - faCommentDots: faCommentDots2, - faCommentMedical, - faCommentSlash, - faComments: faComments2, - faCommentsDollar, - faCompactDisc, - faCompass: faCompass2, - faCompress, - faCompressAlt, - faCompressArrowsAlt, - faConciergeBell, - faCookie, - faCookieBite, - faCopy: faCopy2, - faCopyright: faCopyright2, - faCouch, - faCreditCard: faCreditCard2, - faCrop, - faCropAlt, - faCross, - faCrosshairs, - faCrow, - faCrown, - faCrutch, - faCube, - faCubes, - faCut, - faDatabase, - faDeaf, - faDemocrat, - faDesktop, - faDharmachakra, - faDiagnoses, - faDice, - faDiceD20, - faDiceD6, - faDiceFive, - faDiceFour, - faDiceOne, - faDiceSix, - faDiceThree, - faDiceTwo, - faDigitalTachograph, - faDirections, - faDisease, - faDivide, - faDizzy: faDizzy2, - faDna, - faDog, - faDollarSign, - faDolly, - faDollyFlatbed, - faDonate, - faDoorClosed, - faDoorOpen, - faDotCircle: faDotCircle2, - faDove, - faDownload, - faDraftingCompass, - faDragon, - faDrawPolygon, - faDrum, - faDrumSteelpan, - faDrumstickBite, - faDumbbell, - faDumpster, - faDumpsterFire, - faDungeon, - faEdit: faEdit2, - faEgg, - faEject, - faEllipsisH, - faEllipsisV, - faEnvelope: faEnvelope2, - faEnvelopeOpen: faEnvelopeOpen2, - faEnvelopeOpenText, - faEnvelopeSquare, - faEquals, - faEraser, - faEthernet, - faEuroSign, - faExchangeAlt, - faExclamation, - faExclamationCircle, - faExclamationTriangle, - faExpand, - faExpandAlt, - faExpandArrowsAlt, - faExternalLinkAlt, - faExternalLinkSquareAlt, - faEye: faEye2, - faEyeDropper, - faEyeSlash: faEyeSlash2, - faFan, - faFastBackward, - faFastForward, - faFaucet, - faFax, - faFeather, - faFeatherAlt, - faFemale, - faFighterJet, - faFile: faFile2, - faFileAlt: faFileAlt2, - faFileArchive: faFileArchive2, - faFileAudio: faFileAudio2, - faFileCode: faFileCode2, - faFileContract, - faFileCsv, - faFileDownload, - faFileExcel: faFileExcel2, - faFileExport, - faFileImage: faFileImage2, - faFileImport, - faFileInvoice, - faFileInvoiceDollar, - faFileMedical, - faFileMedicalAlt, - faFilePdf: faFilePdf2, - faFilePowerpoint: faFilePowerpoint2, - faFilePrescription, - faFileSignature, - faFileUpload, - faFileVideo: faFileVideo2, - faFileWord: faFileWord2, - faFill, - faFillDrip, - faFilm, - faFilter, - faFingerprint, - faFire, - faFireAlt, - faFireExtinguisher, - faFirstAid, - faFish, - faFistRaised, - faFlag: faFlag2, - faFlagCheckered, - faFlagUsa, - faFlask, - faFlushed: faFlushed2, - faFolder: faFolder2, - faFolderMinus, - faFolderOpen: faFolderOpen2, - faFolderPlus, - faFont, - faFontAwesomeLogoFull: faFontAwesomeLogoFull2, - faFootballBall, - faForward, - faFrog, - faFrown: faFrown2, - faFrownOpen: faFrownOpen2, - faFunnelDollar, - faFutbol: faFutbol2, - faGamepad, - faGasPump, - faGavel, - faGem: faGem2, - faGenderless, - faGhost, - faGift, - faGifts, - faGlassCheers, - faGlassMartini, - faGlassMartiniAlt, - faGlassWhiskey, - faGlasses, - faGlobe, - faGlobeAfrica, - faGlobeAmericas, - faGlobeAsia, - faGlobeEurope, - faGolfBall, - faGopuram, - faGraduationCap, - faGreaterThan, - faGreaterThanEqual, - faGrimace: faGrimace2, - faGrin: faGrin2, - faGrinAlt: faGrinAlt2, - faGrinBeam: faGrinBeam2, - faGrinBeamSweat: faGrinBeamSweat2, - faGrinHearts: faGrinHearts2, - faGrinSquint: faGrinSquint2, - faGrinSquintTears: faGrinSquintTears2, - faGrinStars: faGrinStars2, - faGrinTears: faGrinTears2, - faGrinTongue: faGrinTongue2, - faGrinTongueSquint: faGrinTongueSquint2, - faGrinTongueWink: faGrinTongueWink2, - faGrinWink: faGrinWink2, - faGripHorizontal, - faGripLines, - faGripLinesVertical, - faGripVertical, - faGuitar, - faHSquare, - faHamburger, - faHammer, - faHamsa, - faHandHolding, - faHandHoldingHeart, - faHandHoldingMedical, - faHandHoldingUsd, - faHandHoldingWater, - faHandLizard: faHandLizard2, - faHandMiddleFinger, - faHandPaper: faHandPaper2, - faHandPeace: faHandPeace2, - faHandPointDown: faHandPointDown2, - faHandPointLeft: faHandPointLeft2, - faHandPointRight: faHandPointRight2, - faHandPointUp: faHandPointUp2, - faHandPointer: faHandPointer2, - faHandRock: faHandRock2, - faHandScissors: faHandScissors2, - faHandSparkles, - faHandSpock: faHandSpock2, - faHands, - faHandsHelping, - faHandsWash, - faHandshake: faHandshake2, - faHandshakeAltSlash, - faHandshakeSlash, - faHanukiah, - faHardHat, - faHashtag, - faHatCowboy, - faHatCowboySide, - faHatWizard, - faHdd: faHdd2, - faHeadSideCough, - faHeadSideCoughSlash, - faHeadSideMask, - faHeadSideVirus, - faHeading, - faHeadphones, - faHeadphonesAlt, - faHeadset, - faHeart: faHeart2, - faHeartBroken, - faHeartbeat, - faHelicopter, - faHighlighter, - faHiking, - faHippo, - faHistory, - faHockeyPuck, - faHollyBerry, - faHome, - faHorse, - faHorseHead, - faHospital: faHospital2, - faHospitalAlt, - faHospitalSymbol, - faHospitalUser, - faHotTub, - faHotdog, - faHotel, - faHourglass: faHourglass2, - faHourglassEnd, - faHourglassHalf, - faHourglassStart, - faHouseDamage, - faHouseUser, - faHryvnia, - faICursor, - faIceCream, - faIcicles, - faIcons, - faIdBadge: faIdBadge2, - faIdCard: faIdCard2, - faIdCardAlt, - faIgloo, - faImage: faImage2, - faImages: faImages2, - faInbox, - faIndent, - faIndustry, - faInfinity, - faInfo, - faInfoCircle, - faItalic, - faJedi, - faJoint, - faJournalWhills, - faKaaba, - faKey, - faKeyboard: faKeyboard2, - faKhanda, - faKiss: faKiss2, - faKissBeam: faKissBeam2, - faKissWinkHeart: faKissWinkHeart2, - faKiwiBird, - faLandmark, - faLanguage, - faLaptop, - faLaptopCode, - faLaptopHouse, - faLaptopMedical, - faLaugh: faLaugh2, - faLaughBeam: faLaughBeam2, - faLaughSquint: faLaughSquint2, - faLaughWink: faLaughWink2, - faLayerGroup, - faLeaf, - faLemon: faLemon2, - faLessThan, - faLessThanEqual, - faLevelDownAlt, - faLevelUpAlt, - faLifeRing: faLifeRing2, - faLightbulb: faLightbulb2, - faLink, - faLiraSign, - faList, - faListAlt: faListAlt2, - faListOl, - faListUl, - faLocationArrow, - faLock, - faLockOpen, - faLongArrowAltDown, - faLongArrowAltLeft, - faLongArrowAltRight, - faLongArrowAltUp, - faLowVision, - faLuggageCart, - faLungs, - faLungsVirus, - faMagic, - faMagnet, - faMailBulk, - faMale, - faMap: faMap2, - faMapMarked, - faMapMarkedAlt, - faMapMarker, - faMapMarkerAlt, - faMapPin, - faMapSigns, - faMarker, - faMars, - faMarsDouble, - faMarsStroke, - faMarsStrokeH, - faMarsStrokeV, - faMask, - faMedal, - faMedkit, - faMeh: faMeh2, - faMehBlank: faMehBlank2, - faMehRollingEyes: faMehRollingEyes2, - faMemory, - faMenorah, - faMercury, - faMeteor, - faMicrochip, - faMicrophone, - faMicrophoneAlt, - faMicrophoneAltSlash, - faMicrophoneSlash, - faMicroscope, - faMinus, - faMinusCircle, - faMinusSquare: faMinusSquare2, - faMitten, - faMobile, - faMobileAlt, - faMoneyBill, - faMoneyBillAlt: faMoneyBillAlt2, - faMoneyBillWave, - faMoneyBillWaveAlt, - faMoneyCheck, - faMoneyCheckAlt, - faMonument, - faMoon: faMoon2, - faMortarPestle, - faMosque, - faMotorcycle, - faMountain, - faMouse, - faMousePointer, - faMugHot, - faMusic, - faNetworkWired, - faNeuter, - faNewspaper: faNewspaper2, - faNotEqual, - faNotesMedical, - faObjectGroup: faObjectGroup2, - faObjectUngroup: faObjectUngroup2, - faOilCan, - faOm, - faOtter, - faOutdent, - faPager, - faPaintBrush, - faPaintRoller, - faPalette, - faPallet, - faPaperPlane: faPaperPlane2, - faPaperclip, - faParachuteBox, - faParagraph, - faParking, - faPassport, - faPastafarianism, - faPaste, - faPause, - faPauseCircle: faPauseCircle2, - faPaw, - faPeace, - faPen, - faPenAlt, - faPenFancy, - faPenNib, - faPenSquare, - faPencilAlt, - faPencilRuler, - faPeopleArrows, - faPeopleCarry, - faPepperHot, - faPercent, - faPercentage, - faPersonBooth, - faPhone, - faPhoneAlt, - faPhoneSlash, - faPhoneSquare, - faPhoneSquareAlt, - faPhoneVolume, - faPhotoVideo, - faPiggyBank, - faPills, - faPizzaSlice, - faPlaceOfWorship, - faPlane, - faPlaneArrival, - faPlaneDeparture, - faPlaneSlash, - faPlay, - faPlayCircle: faPlayCircle2, - faPlug, - faPlus, - faPlusCircle, - faPlusSquare: faPlusSquare2, - faPodcast, - faPoll, - faPollH, - faPoo, - faPooStorm, - faPoop, - faPortrait, - faPoundSign, - faPowerOff, - faPray, - faPrayingHands, - faPrescription, - faPrescriptionBottle, - faPrescriptionBottleAlt, - faPrint, - faProcedures, - faProjectDiagram, - faPumpMedical, - faPumpSoap, - faPuzzlePiece, - faQrcode, - faQuestion, - faQuestionCircle: faQuestionCircle2, - faQuidditch, - faQuoteLeft, - faQuoteRight, - faQuran, - faRadiation, - faRadiationAlt, - faRainbow, - faRandom, - faReceipt, - faRecordVinyl, - faRecycle, - faRedo, - faRedoAlt, - faRegistered: faRegistered2, - faRemoveFormat, - faReply, - faReplyAll, - faRepublican, - faRestroom, - faRetweet, - faRibbon, - faRing, - faRoad, - faRobot, - faRocket, - faRoute, - faRss, - faRssSquare, - faRubleSign, - faRuler, - faRulerCombined, - faRulerHorizontal, - faRulerVertical, - faRunning, - faRupeeSign, - faSadCry: faSadCry2, - faSadTear: faSadTear2, - faSatellite, - faSatelliteDish, - faSave: faSave2, - faSchool, - faScrewdriver, - faScroll, - faSdCard, - faSearch, - faSearchDollar, - faSearchLocation, - faSearchMinus, - faSearchPlus, - faSeedling, - faServer, - faShapes, - faShare, - faShareAlt, - faShareAltSquare, - faShareSquare: faShareSquare2, - faShekelSign, - faShieldAlt, - faShieldVirus, - faShip, - faShippingFast, - faShoePrints, - faShoppingBag, - faShoppingBasket, - faShoppingCart, - faShower, - faShuttleVan, - faSign, - faSignInAlt, - faSignLanguage, - faSignOutAlt, - faSignal, - faSignature, - faSimCard, - faSink, - faSitemap, - faSkating, - faSkiing, - faSkiingNordic, - faSkull, - faSkullCrossbones, - faSlash, - faSleigh, - faSlidersH, - faSmile: faSmile2, - faSmileBeam: faSmileBeam2, - faSmileWink: faSmileWink2, - faSmog, - faSmoking, - faSmokingBan, - faSms, - faSnowboarding, - faSnowflake: faSnowflake2, - faSnowman, - faSnowplow, - faSoap, - faSocks, - faSolarPanel, - faSort, - faSortAlphaDown, - faSortAlphaDownAlt, - faSortAlphaUp, - faSortAlphaUpAlt, - faSortAmountDown, - faSortAmountDownAlt, - faSortAmountUp, - faSortAmountUpAlt, - faSortDown, - faSortNumericDown, - faSortNumericDownAlt, - faSortNumericUp, - faSortNumericUpAlt, - faSortUp, - faSpa, - faSpaceShuttle, - faSpellCheck, - faSpider, - faSpinner, - faSplotch, - faSprayCan, - faSquare: faSquare2, - faSquareFull, - faSquareRootAlt, - faStamp, - faStar: faStar2, - faStarAndCrescent, - faStarHalf: faStarHalf2, - faStarHalfAlt, - faStarOfDavid, - faStarOfLife, - faStepBackward, - faStepForward, - faStethoscope, - faStickyNote: faStickyNote2, - faStop, - faStopCircle: faStopCircle2, - faStopwatch, - faStopwatch20, - faStore, - faStoreAlt, - faStoreAltSlash, - faStoreSlash, - faStream, - faStreetView, - faStrikethrough, - faStroopwafel, - faSubscript, - faSubway, - faSuitcase, - faSuitcaseRolling, - faSun: faSun2, - faSuperscript, - faSurprise: faSurprise2, - faSwatchbook, - faSwimmer, - faSwimmingPool, - faSynagogue, - faSync, - faSyncAlt, - faSyringe, - faTable, - faTableTennis, - faTablet, - faTabletAlt, - faTablets, - faTachometerAlt, - faTag, - faTags, - faTape, - faTasks, - faTaxi, - faTeeth, - faTeethOpen, - faTemperatureHigh, - faTemperatureLow, - faTenge, - faTerminal, - faTextHeight, - faTextWidth, - faTh, - faThLarge, - faThList, - faTheaterMasks, - faThermometer, - faThermometerEmpty, - faThermometerFull, - faThermometerHalf, - faThermometerQuarter, - faThermometerThreeQuarters, - faThumbsDown: faThumbsDown2, - faThumbsUp: faThumbsUp2, - faThumbtack, - faTicketAlt, - faTimes, - faTimesCircle: faTimesCircle2, - faTint, - faTintSlash, - faTired: faTired2, - faToggleOff, - faToggleOn, - faToilet, - faToiletPaper, - faToiletPaperSlash, - faToolbox, - faTools, - faTooth, - faTorah, - faToriiGate, - faTractor, - faTrademark, - faTrafficLight, - faTrailer, - faTrain, - faTram, - faTransgender, - faTransgenderAlt, - faTrash, - faTrashAlt: faTrashAlt2, - faTrashRestore, - faTrashRestoreAlt, - faTree, - faTrophy, - faTruck, - faTruckLoading, - faTruckMonster, - faTruckMoving, - faTruckPickup, - faTshirt, - faTty, - faTv, - faUmbrella, - faUmbrellaBeach, - faUnderline, - faUndo, - faUndoAlt, - faUniversalAccess, - faUniversity, - faUnlink, - faUnlock, - faUnlockAlt, - faUpload, - faUser: faUser2, - faUserAlt, - faUserAltSlash, - faUserAstronaut, - faUserCheck, - faUserCircle: faUserCircle2, - faUserClock, - faUserCog, - faUserEdit, - faUserFriends, - faUserGraduate, - faUserInjured, - faUserLock, - faUserMd, - faUserMinus, - faUserNinja, - faUserNurse, - faUserPlus, - faUserSecret, - faUserShield, - faUserSlash, - faUserTag, - faUserTie, - faUserTimes, - faUsers, - faUsersCog, - faUsersSlash, - faUtensilSpoon, - faUtensils, - faVectorSquare, - faVenus, - faVenusDouble, - faVenusMars, - faVest, - faVestPatches, - faVial, - faVials, - faVideo, - faVideoSlash, - faVihara, - faVirus, - faVirusSlash, - faViruses, - faVoicemail, - faVolleyballBall, - faVolumeDown, - faVolumeMute, - faVolumeOff, - faVolumeUp, - faVoteYea, - faVrCardboard, - faWalking, - faWallet, - faWarehouse, - faWater, - faWaveSquare, - faWeight, - faWeightHanging, - faWheelchair, - faWifi, - faWind, - faWindowClose: faWindowClose2, - faWindowMaximize: faWindowMaximize2, - faWindowMinimize: faWindowMinimize2, - faWindowRestore: faWindowRestore2, - faWineBottle, - faWineGlass, - faWineGlassAlt, - faWonSign, - faWrench, - faXRay, - faYenSign, - faYinYang -}; +var c6=Object.create;var X1=Object.defineProperty;var a6=Object.getOwnPropertyDescriptor;var e6=Object.getOwnPropertyNames;var i6=Object.getPrototypeOf,n6=Object.prototype.hasOwnProperty;var p4=a=>X1(a,"__esModule",{value:!0});var o6=(a,c)=>{p4(a);for(var e in c)X1(a,e,{get:c[e],enumerable:!0})},t6=(a,c,e)=>{if(c&&typeof c=="object"||typeof c=="function")for(let i of e6(c))!n6.call(a,i)&&i!=="default"&&X1(a,i,{get:()=>c[i],enumerable:!(e=a6(c,i))||e.enumerable});return a},J=a=>t6(p4(X1(a!=null?c6(i6(a)):{},"default",a&&a.__esModule&&"default"in a?{get:()=>a.default,enumerable:!0}:{value:a,enumerable:!0})),a);o6(exports,{default:()=>r4});var x=J(require("obsidian"));var d4=J(require("obsidian")),g2=J(require("obsidian"));function r6(a,c){for(let e=0;e=0}function R(a){return((n1(a)?a.ownerDocument:a.document)||window.document).documentElement}function o1(a){return O(a)==="html"?a:a.assignedSlot||a.parentNode||(i2(a)?a.host:null)||R(a)}function A4(a){return!B(a)||j(a).position==="fixed"?null:a.offsetParent}function C6(a){var c=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,e=navigator.userAgent.indexOf("Trident")!==-1;if(e&&B(a)){var i=j(a);if(i.position==="fixed")return null}for(var n=o1(a);B(n)&&["html","body"].indexOf(O(n))<0;){var o=j(n);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||c&&o.willChange==="filter"||c&&o.filter&&o.filter!=="none")return n;n=n.parentNode}return null}function X(a){for(var c=w(a),e=A4(a);e&&L2(e)&&j(e).position==="static";)e=A4(e);return e&&(O(e)==="html"||O(e)==="body"&&j(e).position==="static")?c:e||C6(a)||c}function p1(a){return["top","bottom"].indexOf(a)>=0?"x":"y"}var $=Math.max,f1=Math.min,O1=Math.round;function d1(a,c,e){return $(a,f1(c,e))}function I1(){return{top:0,right:0,bottom:0,left:0}}function B1(a){return Object.assign({},I1(),a)}function R1(a,c){return c.reduce(function(e,i){return e[i]=a,e},{})}var H6=function(c,e){return c=typeof c=="function"?c(Object.assign({},e.rects,{placement:e.placement})):c,B1(typeof c!="number"?c:R1(c,l1))};function g6(a){var c,e=a.state,i=a.name,n=a.options,o=e.elements.arrow,r=e.modifiersData.popperOffsets,t=I(e.placement),l=p1(t),f=[P,T].indexOf(t)>=0,s=f?"height":"width";if(!(!o||!r)){var h=H6(n.padding,e),m=z1(o),z=l==="y"?k:P,v=l==="y"?D:T,M=e.rects.reference[s]+e.rects.reference[l]-r[l]-e.rects.popper[s],p=r[l]-e.rects.reference[l],C=X(o),H=C?l==="y"?C.clientHeight||0:C.clientWidth||0:0,L=M/2-p/2,d=h[z],N=H-m[s]-h[v],V=H/2-m[s]/2+L,y=d1(d,V,N),A=l;e.modifiersData[i]=(c={},c[A]=y,c.centerOffset=y-V,c)}}function V6(a){var c=a.state,e=a.options,i=e.element,n=i===void 0?"[data-popper-arrow]":i;n!=null&&(typeof n=="string"&&(n=c.elements.popper.querySelector(n),!n)||!D1(c.elements.popper,n)||(c.elements.arrow=n))}var y4={name:"arrow",enabled:!0,phase:"main",fn:g6,effect:V6,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};var L6={top:"auto",right:"auto",bottom:"auto",left:"auto"};function x6(a){var c=a.x,e=a.y,i=window,n=i.devicePixelRatio||1;return{x:O1(O1(c*n)/n)||0,y:O1(O1(e*n)/n)||0}}function S4(a){var c,e=a.popper,i=a.popperRect,n=a.placement,o=a.offsets,r=a.position,t=a.gpuAcceleration,l=a.adaptive,f=a.roundOffsets,s=f===!0?x6(o):typeof f=="function"?f(o):o,h=s.x,m=h===void 0?0:h,z=s.y,v=z===void 0?0:z,M=o.hasOwnProperty("x"),p=o.hasOwnProperty("y"),C=P,H=k,L=window;if(l){var d=X(e),N="clientHeight",V="clientWidth";d===w(e)&&(d=R(e),j(d).position!=="static"&&(N="scrollHeight",V="scrollWidth")),d=d,n===k&&(H=D,v-=d[N]-i.height,v*=t?1:-1),n===P&&(C=T,m-=d[V]-i.width,m*=t?1:-1)}var y=Object.assign({position:r},l&&L6);if(t){var A;return Object.assign({},y,(A={},A[H]=p?"0":"",A[C]=M?"0":"",A.transform=(L.devicePixelRatio||1)<2?"translate("+m+"px, "+v+"px)":"translate3d("+m+"px, "+v+"px, 0)",A))}return Object.assign({},y,(c={},c[H]=p?v+"px":"",c[C]=M?m+"px":"",c.transform="",c))}function b6(a){var c=a.state,e=a.options,i=e.gpuAcceleration,n=i===void 0?!0:i,o=e.adaptive,r=o===void 0?!0:o,t=e.roundOffsets,l=t===void 0?!0:t;if(!1)var f;var s={placement:I(c.placement),popper:c.elements.popper,popperRect:c.rects.popper,gpuAcceleration:n};c.modifiersData.popperOffsets!=null&&(c.styles.popper=Object.assign({},c.styles.popper,S4(Object.assign({},s,{offsets:c.modifiersData.popperOffsets,position:c.options.strategy,adaptive:r,roundOffsets:l})))),c.modifiersData.arrow!=null&&(c.styles.arrow=Object.assign({},c.styles.arrow,S4(Object.assign({},s,{offsets:c.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),c.attributes.popper=Object.assign({},c.attributes.popper,{"data-popper-placement":c.placement})}var w4={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:b6,data:{}};var n2={passive:!0};function N6(a){var c=a.state,e=a.instance,i=a.options,n=i.scroll,o=n===void 0?!0:n,r=i.resize,t=r===void 0?!0:r,l=w(c.elements.popper),f=[].concat(c.scrollParents.reference,c.scrollParents.popper);return o&&f.forEach(function(s){s.addEventListener("scroll",e.update,n2)}),t&&l.addEventListener("resize",e.update,n2),function(){o&&f.forEach(function(s){s.removeEventListener("scroll",e.update,n2)}),t&&l.removeEventListener("resize",e.update,n2)}}var k4={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:N6,data:{}};var A6={left:"right",right:"left",bottom:"top",top:"bottom"};function S1(a){return a.replace(/left|right|bottom|top/g,function(c){return A6[c]})}var y6={start:"end",end:"start"};function o2(a){return a.replace(/start|end/g,function(c){return y6[c]})}function u1(a){var c=w(a),e=c.pageXOffset,i=c.pageYOffset;return{scrollLeft:e,scrollTop:i}}function M1(a){return _(R(a)).left+u1(a).scrollLeft}function x2(a){var c=w(a),e=R(a),i=c.visualViewport,n=e.clientWidth,o=e.clientHeight,r=0,t=0;return i&&(n=i.width,o=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=i.offsetLeft,t=i.offsetTop)),{width:n,height:o,x:r+M1(a),y:t}}function b2(a){var c,e=R(a),i=u1(a),n=(c=a.ownerDocument)==null?void 0:c.body,o=$(e.scrollWidth,e.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),r=$(e.scrollHeight,e.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),t=-i.scrollLeft+M1(a),l=-i.scrollTop;return j(n||e).direction==="rtl"&&(t+=$(e.clientWidth,n?n.clientWidth:0)-o),{width:o,height:r,x:t,y:l}}function C1(a){var c=j(a),e=c.overflow,i=c.overflowX,n=c.overflowY;return/auto|scroll|overlay|hidden/.test(e+n+i)}function t2(a){return["html","body","#document"].indexOf(O(a))>=0?a.ownerDocument.body:B(a)&&C1(a)?a:t2(o1(a))}function s1(a,c){var e;c===void 0&&(c=[]);var i=t2(a),n=i===((e=a.ownerDocument)==null?void 0:e.body),o=w(i),r=n?[o].concat(o.visualViewport||[],C1(i)?i:[]):i,t=c.concat(r);return n?t:t.concat(s1(o1(r)))}function w1(a){return Object.assign({},a,{left:a.x,top:a.y,right:a.x+a.width,bottom:a.y+a.height})}function S6(a){var c=_(a);return c.top=c.top+a.clientTop,c.left=c.left+a.clientLeft,c.bottom=c.top+a.clientHeight,c.right=c.left+a.clientWidth,c.width=a.clientWidth,c.height=a.clientHeight,c.x=c.left,c.y=c.top,c}function T4(a,c){return c===a2?w1(x2(a)):B(c)?S6(c):w1(b2(R(a)))}function w6(a){var c=s1(o1(a)),e=["absolute","fixed"].indexOf(j(a).position)>=0,i=e&&B(a)?X(a):a;return n1(i)?c.filter(function(n){return n1(n)&&D1(n,i)&&O(n)!=="body"}):[]}function N2(a,c,e){var i=c==="clippingParents"?w6(a):[].concat(c),n=[].concat(i,[e]),o=n[0],r=n.reduce(function(t,l){var f=T4(a,l);return t.top=$(f.top,t.top),t.right=f1(f.right,t.right),t.bottom=f1(f.bottom,t.bottom),t.left=$(f.left,t.left),t},T4(a,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}function c1(a){return a.split("-")[1]}function F1(a){var c=a.reference,e=a.element,i=a.placement,n=i?I(i):null,o=i?c1(i):null,r=c.x+c.width/2-e.width/2,t=c.y+c.height/2-e.height/2,l;switch(n){case k:l={x:r,y:c.y-e.height};break;case D:l={x:r,y:c.y+c.height};break;case T:l={x:c.x+c.width,y:t};break;case P:l={x:c.x-e.width,y:t};break;default:l={x:c.x,y:c.y}}var f=n?p1(n):null;if(f!=null){var s=f==="y"?"height":"width";switch(o){case i1:l[f]=l[f]-(c[s]/2-e[s]/2);break;case c2:l[f]=l[f]+(c[s]/2-e[s]/2);break;default:}}return l}function K(a,c){c===void 0&&(c={});var e=c,i=e.placement,n=i===void 0?a.placement:i,o=e.boundary,r=o===void 0?L4:o,t=e.rootBoundary,l=t===void 0?a2:t,f=e.elementContext,s=f===void 0?y1:f,h=e.altBoundary,m=h===void 0?!1:h,z=e.padding,v=z===void 0?0:z,M=B1(typeof v!="number"?v:R1(v,l1)),p=s===y1?x4:y1,C=a.elements.reference,H=a.rects.popper,L=a.elements[m?p:s],d=N2(n1(L)?L:L.contextElement||R(a.elements.popper),r,l),N=_(C),V=F1({reference:N,element:H,strategy:"absolute",placement:n}),y=w1(Object.assign({},H,V)),A=s===y1?y:N,E={top:d.top-A.top+M.top,bottom:A.bottom-d.bottom+M.bottom,left:d.left-A.left+M.left,right:A.right-d.right+M.right},S=a.modifiersData.offset;if(s===y1&&S){var Z=S[n];Object.keys(E).forEach(function(e1){var W=[T,D].indexOf(e1)>=0?1:-1,h1=[k,D].indexOf(e1)>=0?"y":"x";E[e1]+=Z[h1]*W})}return E}function A2(a,c){c===void 0&&(c={});var e=c,i=e.placement,n=e.boundary,o=e.rootBoundary,r=e.padding,t=e.flipVariations,l=e.allowedAutoPlacements,f=l===void 0?e2:l,s=c1(i),h=s?t?V2:V2.filter(function(v){return c1(v)===s}):l1,m=h.filter(function(v){return f.indexOf(v)>=0});m.length===0&&(m=h);var z=m.reduce(function(v,M){return v[M]=K(a,{placement:M,boundary:n,rootBoundary:o,padding:r})[I(M)],v},{});return Object.keys(z).sort(function(v,M){return z[v]-z[M]})}function k6(a){if(I(a)===J1)return[];var c=S1(a);return[o2(a),c,o2(c)]}function T6(a){var c=a.state,e=a.options,i=a.name;if(!c.modifiersData[i]._skip){for(var n=e.mainAxis,o=n===void 0?!0:n,r=e.altAxis,t=r===void 0?!0:r,l=e.fallbackPlacements,f=e.padding,s=e.boundary,h=e.rootBoundary,m=e.altBoundary,z=e.flipVariations,v=z===void 0?!0:z,M=e.allowedAutoPlacements,p=c.options.placement,C=I(p),H=C===p,L=l||(H||!v?[S1(p)]:k6(p)),d=[p].concat(L).reduce(function(v1,Q){return v1.concat(I(Q)===J1?A2(c,{placement:Q,boundary:s,rootBoundary:h,padding:f,flipVariations:v,allowedAutoPlacements:M}):Q)},[]),N=c.rects.reference,V=c.rects.popper,y=new Map,A=!0,E=d[0],S=0;S=0,T1=h1?"width":"height",x1=K(c,{placement:Z,boundary:s,rootBoundary:h,altBoundary:m,padding:f}),m1=h1?W?T:P:W?D:k;N[T1]>V[T1]&&(m1=S1(m1));var u2=S1(m1),b1=[];if(o&&b1.push(x1[e1]<=0),t&&b1.push(x1[m1]<=0,x1[u2]<=0),b1.every(function(v1){return v1})){E=Z,A=!1;break}y.set(Z,b1)}if(A)for(var G1=v?3:1,M2=function(Q){var $1=d.find(function(C2){var A1=y.get(C2);if(A1)return A1.slice(0,Q).every(function(H2){return H2})});if($1)return E=$1,"break"},N1=G1;N1>0;N1--){var _1=M2(N1);if(_1==="break")break}c.placement!==E&&(c.modifiersData[i]._skip=!0,c.placement=E,c.reset=!0)}}var P4={name:"flip",enabled:!0,phase:"main",fn:T6,requiresIfExists:["offset"],data:{_skip:!1}};function E4(a,c,e){return e===void 0&&(e={x:0,y:0}),{top:a.top-c.height-e.y,right:a.right-c.width+e.x,bottom:a.bottom-c.height+e.y,left:a.left-c.width-e.x}}function D4(a){return[k,T,D,P].some(function(c){return a[c]>=0})}function P6(a){var c=a.state,e=a.name,i=c.rects.reference,n=c.rects.popper,o=c.modifiersData.preventOverflow,r=K(c,{elementContext:"reference"}),t=K(c,{altBoundary:!0}),l=E4(r,i),f=E4(t,n,o),s=D4(l),h=D4(f);c.modifiersData[e]={referenceClippingOffsets:l,popperEscapeOffsets:f,isReferenceHidden:s,hasPopperEscaped:h},c.attributes.popper=Object.assign({},c.attributes.popper,{"data-popper-reference-hidden":s,"data-popper-escaped":h})}var O4={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:P6};function E6(a,c,e){var i=I(a),n=[P,k].indexOf(i)>=0?-1:1,o=typeof e=="function"?e(Object.assign({},c,{placement:a})):e,r=o[0],t=o[1];return r=r||0,t=(t||0)*n,[P,T].indexOf(i)>=0?{x:t,y:r}:{x:r,y:t}}function D6(a){var c=a.state,e=a.options,i=a.name,n=e.offset,o=n===void 0?[0,0]:n,r=e2.reduce(function(s,h){return s[h]=E6(h,c.rects,o),s},{}),t=r[c.placement],l=t.x,f=t.y;c.modifiersData.popperOffsets!=null&&(c.modifiersData.popperOffsets.x+=l,c.modifiersData.popperOffsets.y+=f),c.modifiersData[i]=r}var I4={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:D6};function O6(a){var c=a.state,e=a.name;c.modifiersData[e]=F1({reference:c.rects.reference,element:c.rects.popper,strategy:"absolute",placement:c.placement})}var B4={name:"popperOffsets",enabled:!0,phase:"read",fn:O6,data:{}};function y2(a){return a==="x"?"y":"x"}function I6(a){var c=a.state,e=a.options,i=a.name,n=e.mainAxis,o=n===void 0?!0:n,r=e.altAxis,t=r===void 0?!1:r,l=e.boundary,f=e.rootBoundary,s=e.altBoundary,h=e.padding,m=e.tether,z=m===void 0?!0:m,v=e.tetherOffset,M=v===void 0?0:v,p=K(c,{boundary:l,rootBoundary:f,padding:h,altBoundary:s}),C=I(c.placement),H=c1(c.placement),L=!H,d=p1(C),N=y2(d),V=c.modifiersData.popperOffsets,y=c.rects.reference,A=c.rects.popper,E=typeof M=="function"?M(Object.assign({},c.rects,{placement:c.placement})):M,S={x:0,y:0};if(!!V){if(o||t){var Z=d==="y"?k:P,e1=d==="y"?D:T,W=d==="y"?"height":"width",h1=V[d],T1=V[d]+p[Z],x1=V[d]-p[e1],m1=z?-A[W]/2:0,u2=H===i1?y[W]:A[W],b1=H===i1?-A[W]:-y[W],G1=c.elements.arrow,M2=z&&G1?z1(G1):{width:0,height:0},N1=c.modifiersData["arrow#persistent"]?c.modifiersData["arrow#persistent"].padding:I1(),_1=N1[Z],v1=N1[e1],Q=d1(0,y[W],M2[W]),$1=L?y[W]/2-m1-Q-_1-E:u2-Q-_1-E,C2=L?-y[W]/2+m1+Q+v1+E:b1+Q+v1+E,A1=c.elements.arrow&&X(c.elements.arrow),H2=A1?d==="y"?A1.clientTop||0:A1.clientLeft||0:0,l4=c.modifiersData.offset?c.modifiersData.offset[c.placement][d]:0,f4=V[d]+$1-l4-H2,s4=V[d]+C2-l4;if(o){var h4=d1(z?f1(T1,f4):T1,h1,z?$(x1,s4):x1);V[d]=h4,S[d]=h4-h1}if(t){var Q3=d==="x"?k:P,J3=d==="x"?D:T,Y1=V[N],m4=Y1+p[Q3],v4=Y1-p[J3],z4=d1(z?f1(m4,f4):m4,Y1,z?$(v4,s4):v4);V[N]=z4,S[N]=z4-Y1}}c.modifiersData[i]=S}}var R4={name:"preventOverflow",enabled:!0,phase:"main",fn:I6,requiresIfExists:["offset"]};function S2(a){return{scrollLeft:a.scrollLeft,scrollTop:a.scrollTop}}function w2(a){return a===w(a)||!B(a)?u1(a):S2(a)}function k2(a,c,e){e===void 0&&(e=!1);var i=R(c),n=_(a),o=B(c),r={scrollLeft:0,scrollTop:0},t={x:0,y:0};return(o||!o&&!e)&&((O(c)!=="body"||C1(i))&&(r=w2(c)),B(c)?(t=_(c),t.x+=c.clientLeft,t.y+=c.clientTop):i&&(t.x=M1(i))),{x:n.left+r.scrollLeft-t.x,y:n.top+r.scrollTop-t.y,width:n.width,height:n.height}}function B6(a){var c=new Map,e=new Set,i=[];a.forEach(function(o){c.set(o.name,o)});function n(o){e.add(o.name);var r=[].concat(o.requires||[],o.requiresIfExists||[]);r.forEach(function(t){if(!e.has(t)){var l=c.get(t);l&&n(l)}}),i.push(o)}return a.forEach(function(o){e.has(o.name)||n(o)}),i}function T2(a){var c=B6(a);return b4.reduce(function(e,i){return e.concat(c.filter(function(n){return n.phase===i}))},[])}function P2(a){var c;return function(){return c||(c=new Promise(function(e){Promise.resolve().then(function(){c=void 0,e(a())})})),c}}function E2(a){var c=a.reduce(function(e,i){var n=e[i.name];return e[i.name]=n?Object.assign({},n,i,{options:Object.assign({},n.options,i.options),data:Object.assign({},n.data,i.data)}):i,e},{});return Object.keys(c).map(function(e){return c[e]})}var F4={placement:"bottom",modifiers:[],strategy:"absolute"};function Z4(){for(var a=arguments.length,c=new Array(a),e=0;e(this.setSelectedItem(this.selectedItem-1,!0),!1)),i.register([],"ArrowDown",()=>(this.setSelectedItem(this.selectedItem+1,!0),!1)),i.register([],"Enter",n=>(this.useSelectedItem(n),!1)),i.register([],"Tab",n=>(this.useSelectedItem(n),!1))}chooseSuggestion(c){if(!this.items||!this.items.length)return;let e=this.items[this.selectedItem];e&&this.owner.selectSuggestion(e,c)}onSuggestionClick(c,e){if(c.preventDefault(),!this.suggestions||!this.suggestions.length)return;let i=this.suggestions.indexOf(e);this.setSelectedItem(i,!1),this.useSelectedItem(c)}onSuggestionMouseover(c,e){if(!this.suggestions||!this.suggestions.length)return;let i=this.suggestions.indexOf(e);this.setSelectedItem(i,!1)}empty(){this.containerEl.empty()}setSuggestions(c){this.containerEl.empty();let e=[];c.forEach(i=>{let n=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(i,n),e.push(n)}),this.items=c,this.suggestions=e,this.setSelectedItem(0,!1)}useSelectedItem(c){if(!this.items||!this.items.length)return;let e=this.items[this.selectedItem];e&&this.owner.selectSuggestion(e,c),q.Platform.isMobile&&this.chooseSuggestion(c)}wrap(c,e){return(c%e+e)%e}setSelectedItem(c,e){let i=this.wrap(c,this.suggestions.length),n=this.suggestions[this.selectedItem],o=this.suggestions[i];n&&n.removeClass("is-selected"),o&&o.addClass("is-selected"),this.selectedItem=i,e&&o.scrollIntoView(!1)}},O2=class extends q.FuzzySuggestModal{constructor(c,e,i){super(c);this.items=[];this.scope=new q.Scope;this.emptyStateText="No match found";this.limit=100;this.inputEl=e,this.items=i,this.suggestEl=createDiv("suggestion-container"),this.suggestEl.style.width=`${e.clientWidth}px`,this.contentEl=this.suggestEl.createDiv("suggestion"),this.suggester=new q4(this,this.contentEl,this.scope),this.scope.register([],"Escape",this.close.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onInputChanged.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",n=>{n.preventDefault()})}empty(){this.suggester.empty()}onInputChanged(){let c=this.modifyInput(this.inputEl.value),e=this.getSuggestions(c);e.length>0?this.suggester.setSuggestions(e.slice(0,this.limit)):this.onNoSuggestion(),this.open()}modifyInput(c){return c}onNoSuggestion(){this.empty(),this.renderSuggestion(null,this.contentEl.createDiv("suggestion-item"))}open(){this.app.keymap.pushScope(this.scope),document.body.appendChild(this.suggestEl),this.popper=D2(this.inputEl,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,10]}},{name:"flip",options:{fallbackPlacements:["top"]}}]})}close(){this.app.keymap.popScope(this.scope),this.suggester.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}createPrompt(c){this.promptEl||(this.promptEl=this.suggestEl.createDiv("prompt-instructions"));let e=this.promptEl.createDiv("prompt-instruction");for(let i of c)e.appendChild(i)}},I2=class extends O2{constructor(c,e){super(c.app,e.inputEl,c.iconManager.iconDefinitions);this.plugin=c;this.icons=c.iconManager.iconDefinitions,this.text=e,this.createPrompts(),this.inputEl.addEventListener("input",this.getItem.bind(this))}createPrompts(){}getItem(){let c=this.inputEl.value,e=this.icons.find(i=>i.name===c.trim());e!=this.icon&&(this.icon=e,this.icons&&this.onInputChanged())}getItemText(c){return c.name}onChooseItem(c){this.text.setValue(c.name),this.icon=c}selectSuggestion({item:c}){this.text.setValue(c.name),this.icon=c,this.onClose(),this.close()}renderSuggestion(c,e){let{item:i,match:n}=c||{},o=e.createDiv({cls:"suggestion-content icon"});if(!i){o.setText(this.emptyStateText),o.parentElement.addClass("is-selected");return}let r=n.matches.map(l=>createSpan("suggestion-highlight"));for(let l=0;ls[0]===l);if(f){let s=r[n.matches.indexOf(f)];o.appendChild(s),s.appendText(i.name.substring(f[0],f[1])),l+=f[1]-f[0]-1;continue}o.appendText(i.name[l])}let t=createDiv("suggestion-flair admonition-suggester-icon");t.appendChild(this.plugin.iconManager.getIconNode(i)??createDiv()),o.prepend(t),o.createDiv({cls:"suggestion-note",text:this.plugin.iconManager.getIconModuleName(i)})}getItems(){return this.icons}},U4=class extends O2{constructor(c,e,i){super(c.app,e.inputEl,i);this.plugin=c;this.admonitions=[...i],this.text=e,this.createPrompts(),this.inputEl.addEventListener("input",this.getItem.bind(this))}createPrompts(){}getItem(){let c=this.inputEl.value,e=this.admonitions.find(i=>i.type===c.trim());e!=this.admonition&&(this.admonition=e,this.admonitions&&this.onInputChanged())}getItemText(c){return c.type}onChooseItem(c){this.text.setValue(c.type),this.admonition=c}selectSuggestion({item:c}){this.text.setValue(c.type),this.onClose(),this.close()}renderSuggestion(c,e){let{item:i,match:n}=c||{},o=e.createDiv({cls:"suggestion-content icon"});if(!i){o.setText(this.emptyStateText),o.parentElement.addClass("is-selected");return}let r=n.matches.map(l=>createSpan("suggestion-highlight"));for(let l=0;ls[0]===l);if(f){let s=r[n.matches.indexOf(f)];o.appendChild(s),s.appendText(i.type.substring(f[0],f[1])),l+=f[1]-f[0]-1;continue}o.appendText(i.type[l])}let t=createDiv("suggestion-flair admonition-suggester-icon");t.appendChild(this.plugin.iconManager.getIconNode(i.icon)??createDiv()).setAttribute("color",`rgb(${i.color})`),o.prepend(t)}getItems(){return this.admonitions}},r2=class extends q.Modal{constructor(c){super(c.app);this.plugin=c;this.collapse=this.plugin.data.autoCollapse?this.plugin.data.defaultCollapseType:"none";this.containerEl.addClass("insert-admonition-modal"),this.onOpen=()=>this.display(!0)}async display(c){let{contentEl:e}=this;e.empty(),new q.Setting(e).setName("Admonition Type").addText(t=>{t.setPlaceholder("Admonition Type").setValue(this.type);let l=new U4(this.plugin,t,this.plugin.admonitionArray),f=()=>{t.inputEl.value&&this.plugin.admonitions[t.inputEl.value]?(this.type=t.inputEl.value,this.title?.length||(this.title=this.type[0].toUpperCase()+this.type.slice(1).toLowerCase()),n.setValue(this.title)):(new q.Notice("No admonition type by that name exists."),t.inputEl.value=""),this.buildAdmonition()};t.inputEl.onblur=f,l.onClose=f,c&&(l.open(),t.inputEl.focus())});let n;new q.Setting(e).setName("Admonition Title").setDesc("Leave blank to render without a title.").addText(t=>{n=t,t.setValue(this.title),t.onChange(l=>{if(this.title=l,l.length==0?this.noTitle=!0:this.noTitle=!1,this.element){let f=this.plugin.admonitions[this.type],s=this.plugin.getAdmonitionElement(this.type,this.title,f.icon,f.injectColor??this.plugin.data.injectColor?f.color:null,this.collapse);s.createDiv({cls:"admonition-content",text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla."}),this.element.replaceWith(s),this.element=s}})}),new q.Setting(e).setName("Make Collapsible").addDropdown(t=>{t.addOption("open","Open"),t.addOption("closed","Closed"),t.addOption("none","None"),t.setValue(this.collapse),t.onChange(l=>{this.collapse=l,this.buildAdmonition()})}),this.admonitionEl=this.contentEl.createDiv(),this.buildAdmonition(),new q.Setting(e).addButton(t=>t.setButtonText("Insert").setCta().onClick(()=>{this.insert=!0,this.close()})).addExtraButton(t=>{t.setIcon("cross").setTooltip("Cancel").onClick(()=>this.close()),t.extraSettingsEl.setAttr("tabindex",0),t.extraSettingsEl.onkeydown=l=>{l.key=="Enter"&&this.close()}})}buildAdmonition(){if(this.admonitionEl.empty(),this.type&&this.plugin.admonitions[this.type]){let c=this.plugin.admonitions[this.type];this.element=this.plugin.getAdmonitionElement(this.type,this.title,c.icon,c.injectColor??this.plugin.data.injectColor?c.color:null,this.collapse),this.element.createDiv({cls:"admonition-content",text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla."}),this.admonitionEl.appendChild(this.element)}}};var W4='/*\nTHIS IS A GENERATED/BUNDLED FILE BY ESBUILD\nif you want to view the source, please visit the github repository of this plugin\n*/\n\nfunction T(n,e,i){let t=document.createElement(n);typeof e=="string"&&(e={cls:e});let o=e||{},l=o.cls,s=o.text,a=o.attr,r=o.title,d=o.value,c=o.type,g=i||o.parent,f=o.prepend,m=o.href;return l&&(Array.isArray(l)?t.className=l.join(" "):t.className=l),s&&(t.textContent=s),a&&Object.keys(a).forEach(p=>{let E=a[p];E!==null&&t.setAttribute(p,String(E))}),r&&(t.title=r),d&&(t instanceof HTMLInputElement||t instanceof HTMLSelectElement||t instanceof HTMLOptionElement)&&(t.value=d),c&&t instanceof HTMLStyleElement&&t.setAttribute("type",c),m&&(t instanceof HTMLAnchorElement||t instanceof HTMLLinkElement)&&(t.href=m),g&&(f?g.insertBefore(t,g.firstChild):g.appendChild(t)),t}var h=function(n,e){return T("div",n,e)};Node.prototype.createDiv=function(n,e){return h(n,this)};Node.prototype.createEl=function(n,e,i){return T(n,e,this)};Element.prototype.addClass=function(...n){let e=[];for(let i=0;i{y(),b()};function w(){return new Promise((n,e)=>{let i=document.querySelector(".markdown-preview-sizer");if(i)n(i);else{let t=new MutationObserver(o=>{for(let l of o)if(l.type=="childList"&&l.addedNodes.length){for(let s of Array.from(l.addedNodes))if(s instanceof HTMLDivElement){if(s.hasClass("publish-renderer")){let a=s.querySelector(".markdown-preview-sizer");a&&(t.disconnect(),n(a))}s.hasClass("markdown-preview-sizer")&&(t.disconnect(),n(i))}}});t.observe(document.body,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}})}async function b(){let n=await w();new MutationObserver(i=>{i.forEach(t=>{t.type=="childList"&&t.addedNodes.length&&t.addedNodes.forEach(o=>{if(o&&o instanceof HTMLDivElement&&!o.childElementCount){let l=new MutationObserver(s=>{for(let a of s)if(a.type=="childList"&&a.addedNodes.length)for(let r of Array.from(a.addedNodes))r instanceof HTMLPreElement&&(!M.has(r)&&Array.from(r.classList).some(d=>/language-ad-(\\w+)/.test(d))?(l.disconnect(),M.add(r),v(r)):(l.disconnect(),H(r)))});l.observe(o,{attributes:!1,childList:!0,characterData:!1,subtree:!1})}o&&o instanceof HTMLElement&&o.children.length&&o.firstElementChild instanceof HTMLPreElement&&H(o.firstElementChild)})})}).observe(n,{attributes:!1,childList:!0,subtree:!1})}function H(n){let e=new MutationObserver(i=>{i.forEach(t=>{t.target instanceof HTMLPreElement&&!M.has(t.target)&&t.type==="attributes"&&t.attributeName==="class"&&Array.from(t.target.classList).some(o=>/language-ad-(\\w+)/.test(o))&&(e.disconnect(),M.add(t.target),v(t.target))})});e.observe(n,{attributes:!0,childList:!1,characterData:!1,subtree:!1})}function v(n){let[,e]=n.classList.toString().match(/language-ad-(\\w+)/);if(!e||!(e in u.ADMONITION_ICON_MAP))return;let{title:i=e[0].toUpperCase()+e.slice(1).toLowerCase(),collapse:t,content:o,icon:l=u.ADMONITION_ICON_MAP[e].icon,color:s=u.ADMONITION_ICON_MAP[e].color}=N(e,n.innerText),a=L(e,i,l,s,t),d=a.createDiv("admonition-content-holder").createDiv("admonition-content");d.innerText=o,n.replaceWith(a)}function y(){let n=document.querySelectorAll("pre[class*=\'language-ad\']");if(!!n.length)for(let e of Array.from(n)){M.add(e);let[,i]=e.classList.toString().match(/language-ad-(\\w+)/);if(!i||!(i in u.ADMONITION_ICON_MAP))continue;let{title:t=i[0].toUpperCase()+i.slice(1).toLowerCase(),collapse:o,content:l,icon:s=u.ADMONITION_ICON_MAP[i].icon,color:a=u.ADMONITION_ICON_MAP[i].color}=N(i,e.innerText),r=L(i,t,s,a,o),c=r.createDiv("admonition-content-holder").createDiv("admonition-content");c.innerText=l,e.replaceWith(r)}}\n';var z3=J(require("obsidian"));var G4={};var _4={};var $4={};var Y4={};var B2={"Admonition Settings":"Admonition Settings","Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.":"Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.","Markdown Syntax Highlighting":"Markdown Syntax Highlighting","Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.":"Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk."," Sync Links to Metadata Cache":" Sync Links to Metadata Cache","Allows admonitions to be created using ":"Allows admonitions to be created using "," or ":" or ",", instead of using a code block.":", instead of using a code block."," Enable Non-codeblock Admonitions":" Enable Non-codeblock Admonitions","Collapsible by Default":"Collapsible by Default","All admonitions will be collapsible by default. Use ":"All admonitions will be collapsible by default. Use "," to prevent.":" to prevent.","Default Collapse Type":"Default Collapse Type","Collapsible admonitions will be either opened or closed.":"Collapsible admonitions will be either opened or closed.","Add Copy Button":"Add Copy Button","Add a 'copy content' button to admonitions.":"Add a 'copy content' button to admonitions.","Add New":"Add New","Add a new Admonition type.":"Add a new Admonition type.","Add Additional":"Add Additional","Register Commands":"Register Commands","Unregister Commands":"Unregister Commands",Edit:"Edit",Delete:"Delete","Admonition Type":"Admonition Type","Admonition Title":"Admonition Title","This will be the default title for this admonition type.":"This will be the default title for this admonition type.","Admonition type cannot be empty.":"Admonition type cannot be empty.","Admonition type cannot include spaces.":"Admonition type cannot include spaces.","Types must be a valid CSS selector.":"Types must be a valid CSS selector.","Invalid icon name.":"Invalid icon name.","Icon cannot be empty.":"Icon cannot be empty.","Upload Image":"Upload Image","There was an error parsing the image.":"There was an error parsing the image.","Admonition Icon":"Admonition Icon",Color:"Color",Save:"Save","No Admonition Title by Default":"No Admonition Title by Default","The admonition will have no title unless ":"The admonition will have no title unless "," is explicitly provided.":" is explicitly provided.","Show Copy Button":"Show Copy Button","A copy button will be added to the admonition.":"A copy button will be added to the admonition.","Parse Titles as Markdown":"Parse Titles as Markdown","Admonition Titles will be rendered as markdown.":"Admonition Titles will be rendered as markdown."};var X4={};var K4={};var Q4={};var J4={};var c3={};var a3={};var e3={};var i3={};var n3={};var o3={};var t3={};var r3={};var l3={};var f3={};var s3={};var h3={};var m3={"Admonition Settings":"Admonition \u8BBE\u7F6E","Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.":"\u5728 admonition \u4EE3\u7801\u5757\u4E2D\u4F7F\u7528 Obsidian \u7684 markdown \u7CFB\u7EDF\u7EA7\u9AD8\u4EAE\u3002\u8BE5\u8BBE\u7F6E\u4E3A\u5B9E\u9A8C\u6027\uFF0C\u53EF\u80FD\u4F1A\u5F15\u53D1\u9519\u8BEF"," Markdown Syntax Highlighting":" Markdown \u7CFB\u7EDF\u9AD8\u4EAE","Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.":"Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk."," Sync Links to Metadata Cache":" Sync Links to Metadata Cache","Allows admonitions to be created using ":"\u5141\u8BB8 admonitions \u521B\u5EFA\u4F7F\u7528"," or ":"\u6216",", instead of using a code block.":"\uFF0C\u800C\u975E\u4EE3\u7801\u5757"," Enable Non-codeblock Admonitions":" \u5141\u8BB8\u975E\u4EE3\u7801\u5757\u7684 Admonitions","Collapsible by Default":"\u53EF\u6298\u53E0\u9ED8\u8BA4\u503C","All admonitions will be collapsible by default. Use ":"\u6240\u6709\u7684 admonitions \u9ED8\u8BA4\u53EF\u6298\u53E0\u3002\u4F7F\u7528"," to prevent.":" \u6765\u963B\u6B62\u3002","Default Collapse Type":"\u9ED8\u8BA4\u53EF\u6298\u53E0\u7C7B\u578B","Collapsible admonitions will be either opened or closed.":"Collapsible admonitions \u8981\u4E48\u662F openede \u8981\u4E48\u662F closed","Add Copy Button":"\u6DFB\u52A0\u590D\u5236\u6309\u94AE","Add a 'copy content' button to admonitions.":"\u4E3A admonitions \u65B0\u589E\u4E00\u4E2A\u201C\u590D\u5236\u5185\u5BB9\u201D\u6309\u94AE\u3002","Add New":"\u65B0\u589E","Add a new Admonition type.":"\u6DFB\u52A0\u4E00\u4E2A\u65B0\u7684 Admonition \u7C7B\u578B\u3002","Add Additional":"\u989D\u5916\u6DFB\u52A0","Register Commands":"\u6CE8\u518C\u547D\u4EE4","Unregister Commands":"\u6CE8\u9500\u547D\u4EE4",Edit:"\u7F16\u8F91",Delete:"\u5220\u9664","Admonition type cannot be empty.":"Admonition \u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A\u3002","Admonition type cannot include spaces.":"Admonition \u7C7B\u578B\u4E0D\u80FD\u5305\u542B\u7A7A\u683C","Admonition Type":"Admonition \u7C7B\u578B","Types must be a valid CSS selector.":"\u7C7B\u578B\u5FC5\u987B\u4E3A\u5408\u6CD5\u7684 css \u9009\u62E9\u5668\u3002","Invalid icon name.":"\u975E\u6CD5\u56FE\u6807\u540D\u79F0","Icon cannot be empty.":"\u56FE\u6807\u4E0D\u80FD\u4E3A\u7A7A","Upload Image":"\u4E0A\u4F20\u56FE\u50CF","There was an error parsing the image.":"\u4E0A\u4F20\u56FE\u50CF\u65F6\u51FA\u9519\u4E86\u3002","Admonition Icon":"Admonition \u56FE\u6807",Color:"\u989C\u8272",Save:"\u4FDD\u5B58"};var v3={};var Z6={ar:G4,cs:_4,da:$4,de:Y4,en:B2,"en-gb":X4,es:K4,fr:Q4,hi:J4,id:c3,it:a3,ja:e3,ko:i3,nl:n3,nn:o3,pl:t3,pt:r3,"pt-br":l3,ro:f3,ru:s3,tr:h3,"zh-cn":m3,"zh-tw":v3},p3=Z6[z3.moment.locale()];function g(a){return p3&&p3[a]||B2[a]}var Z1=J(require("obsidian"));async function d3(a,c,e={cta:"Yes",secondary:"No"}){return new Promise((i,n)=>{try{let o=new u3(a,c,e);o.onClose=()=>{i(o.confirmed)},o.open()}catch{n()}})}var u3=class extends Z1.Modal{constructor(c,e,i){super(c);this.text=e;this.buttons=i;this.confirmed=!1}async display(){this.contentEl.empty(),this.contentEl.addClass("confirm-modal"),this.contentEl.createEl("p",{text:this.text});let c=this.contentEl.createDiv("fantasy-calendar-confirm-buttons");new Z1.ButtonComponent(c).setButtonText(this.buttons.cta).setCta().onClick(()=>{this.confirmed=!0,this.close()}),new Z1.ButtonComponent(c).setButtonText(this.buttons.secondary).onClick(()=>{this.close()})}onOpen(){this.display()}};var H1={octicons:"Octicons",rpg:"RPG Awesome"};var M3=(a=>c=>{try{a.querySelector(c)}catch{return!1}return!0})(document.createDocumentFragment()),l2=class extends u.PluginSettingTab{constructor(c,e){super(c,e);this.plugin=e;this.queue=[];this.converted=0}async display(){this.containerEl.empty(),this.containerEl.addClass("admonition-settings"),this.containerEl.createEl("h2",{text:g("Admonition Settings")});let c=this.containerEl.createDiv("admonitions-nested-settings");u.Platform.isMobile||new u.Setting(c).setName("Export Custom Types as CSS").setDesc("Export a CSS snippet for custom callout types.").addButton(i=>i.setIcon("download").onClick(()=>{let n=[`/* This snippet was auto-generated by the Admonitions plugin */ -// node_modules/@fortawesome/free-brands-svg-icons/index.es.js -var fa500px = { - prefix: "fab", - iconName: "500px", - icon: [448, 512, [], "f26e", "M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z"] -}; -var faAccessibleIcon = { - prefix: "fab", - iconName: "accessible-icon", - icon: [448, 512, [], "f368", "M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z"] -}; -var faAccusoft = { - prefix: "fab", - iconName: "accusoft", - icon: [640, 512, [], "f369", "M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z"] -}; -var faAcquisitionsIncorporated = { - prefix: "fab", - iconName: "acquisitions-incorporated", - icon: [384, 512, [], "f6af", "M357.45 468.2c-1.2-7.7-1.3-7.6-9.6-7.6-99.8.2-111.8-2.4-112.7-2.6-12.3-1.7-20.6-10.5-21-23.1-.1-1.6-.2-71.6-1-129.1-.1-4.7 1.6-6.4 5.9-7.5 12.5-3 24.9-6.1 37.3-9.7 4.3-1.3 6.8-.2 8.4 3.5 4.5 10.3 8.8 20.6 13.2 30.9 1.6 3.7.1 4.4-3.4 4.4-10-.2-20-.1-30.4-.1v27h116c-1.4-9.5-2.7-18.1-4-27.5-7 0-13.8.4-20.4-.1-22.6-1.6-18.3-4.4-84-158.6-8.8-20.1-27.9-62.1-36.5-89.2-4.4-14 5.5-25.4 18.9-26.6 18.6-1.7 37.5-1.6 56.2-2 20.6-.4 41.2-.4 61.8-.5 3.1 0 4-1.4 4.3-4.3 1.2-9.8 2.7-19.5 4-29.2.8-5.3 1.6-10.7 2.4-16.1L23.75 0c-3.6 0-5.3 1.1-4.6 5.3 2.2 13.2-.8.8 6.4 45.3 63.4 0 71.8.9 101.8.5 12.3-.2 37 3.5 37.7 22.1.4 11.4-1.1 11.3-32.6 87.4-53.8 129.8-50.7 120.3-67.3 161-1.7 4.1-3.6 5.2-7.6 5.2-8.5-.2-17-.3-25.4.1-1.9.1-5.2 1.8-5.5 3.2-1.5 8.1-2.2 16.3-3.2 24.9h114.3v-27.6c-6.9 0-33.5.4-35.3-2.9 5.3-12.3 10.4-24.4 15.7-36.7 16.3 4 31.9 7.8 47.6 11.7 3.4.9 4.6 3 4.6 6.8-.1 42.9.1 85.9.2 128.8 0 10.2-5.5 19.1-14.9 23.1-6.5 2.7-3.3 3.4-121.4 2.4-5.3 0-7.1 2-7.6 6.8-1.5 12.9-2.9 25.9-5 38.8-.8 5 1.3 5.7 5.3 5.7 183.2.6-30.7 0 337.1 0-2.5-15-4.4-29.4-6.6-43.7zm-174.9-205.7c-13.3-4.2-26.6-8.2-39.9-12.5a44.53 44.53 0 0 1-5.8-2.9c17.2-44.3 34.2-88.1 51.3-132.1 7.5 2.4 7.9-.8 9.4 0 9.3 22.5 18.1 60.1 27 82.8 6.6 16.7 13 33.5 19.7 50.9a35.78 35.78 0 0 1-3.9 2.1c-13.1 3.9-26.4 7.5-39.4 11.7a27.66 27.66 0 0 1-18.4 0z"] -}; -var faAdn = { - prefix: "fab", - iconName: "adn", - icon: [496, 512, [], "f170", "M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z"] -}; -var faAdversal = { - prefix: "fab", - iconName: "adversal", - icon: [512, 512, [], "f36a", "M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z"] -}; -var faAffiliatetheme = { - prefix: "fab", - iconName: "affiliatetheme", - icon: [512, 512, [], "f36b", "M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z"] -}; -var faAirbnb = { - prefix: "fab", - iconName: "airbnb", - icon: [448, 512, [], "f834", "M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z"] -}; -var faAlgolia = { - prefix: "fab", - iconName: "algolia", - icon: [448, 512, [], "f36c", "M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z"] -}; -var faAlipay = { - prefix: "fab", - iconName: "alipay", - icon: [448, 512, [], "f642", "M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z"] -}; -var faAmazon = { - prefix: "fab", - iconName: "amazon", - icon: [448, 512, [], "f270", "M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z"] -}; -var faAmazonPay = { - prefix: "fab", - iconName: "amazon-pay", - icon: [640, 512, [], "f42c", "M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z"] -}; -var faAmilia = { - prefix: "fab", - iconName: "amilia", - icon: [448, 512, [], "f36d", "M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z"] -}; -var faAndroid = { - prefix: "fab", - iconName: "android", - icon: [576, 512, [], "f17b", "M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55"] -}; -var faAngellist = { - prefix: "fab", - iconName: "angellist", - icon: [448, 512, [], "f209", "M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z"] -}; -var faAngrycreative = { - prefix: "fab", - iconName: "angrycreative", - icon: [640, 512, [], "f36e", "M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z"] -}; -var faAngular = { - prefix: "fab", - iconName: "angular", - icon: [448, 512, [], "f420", "M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z"] -}; -var faAppStore = { - prefix: "fab", - iconName: "app-store", - icon: [512, 512, [], "f36f", "M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z"] -}; -var faAppStoreIos = { - prefix: "fab", - iconName: "app-store-ios", - icon: [448, 512, [], "f370", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z"] -}; -var faApper = { - prefix: "fab", - iconName: "apper", - icon: [640, 512, [], "f371", "M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z"] -}; -var faApple = { - prefix: "fab", - iconName: "apple", - icon: [384, 512, [], "f179", "M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"] -}; -var faApplePay = { - prefix: "fab", - iconName: "apple-pay", - icon: [640, 512, [], "f415", "M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z"] -}; -var faArtstation = { - prefix: "fab", - iconName: "artstation", - icon: [512, 512, [], "f77a", "M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z"] -}; -var faAsymmetrik = { - prefix: "fab", - iconName: "asymmetrik", - icon: [576, 512, [], "f372", "M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z"] -}; -var faAtlassian = { - prefix: "fab", - iconName: "atlassian", - icon: [512, 512, [], "f77b", "M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z"] -}; -var faAudible = { - prefix: "fab", - iconName: "audible", - icon: [640, 512, [], "f373", "M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z"] -}; -var faAutoprefixer = { - prefix: "fab", - iconName: "autoprefixer", - icon: [640, 512, [], "f41c", "M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z"] -}; -var faAvianex = { - prefix: "fab", - iconName: "avianex", - icon: [512, 512, [], "f374", "M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z"] -}; -var faAviato = { - prefix: "fab", - iconName: "aviato", - icon: [640, 512, [], "f421", "M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z"] -}; -var faAws = { - prefix: "fab", - iconName: "aws", - icon: [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"] -}; -var faBandcamp = { - prefix: "fab", - iconName: "bandcamp", - icon: [512, 512, [], "f2d5", "M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm48.2,326.1h-181L207.9,178h181Z"] -}; -var faBattleNet = { - prefix: "fab", - iconName: "battle-net", - icon: [512, 512, [], "f835", "M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8"] -}; -var faBehance = { - prefix: "fab", - iconName: "behance", - icon: [576, 512, [], "f1b4", "M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z"] -}; -var faBehanceSquare = { - prefix: "fab", - iconName: "behance-square", - icon: [448, 512, [], "f1b5", "M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z"] -}; -var faBimobject = { - prefix: "fab", - iconName: "bimobject", - icon: [448, 512, [], "f378", "M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z"] -}; -var faBitbucket = { - prefix: "fab", - iconName: "bitbucket", - icon: [512, 512, [], "f171", "M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z"] -}; -var faBitcoin = { - prefix: "fab", - iconName: "bitcoin", - icon: [512, 512, [], "f379", "M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z"] -}; -var faBity = { - prefix: "fab", - iconName: "bity", - icon: [496, 512, [], "f37a", "M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z"] -}; -var faBlackTie = { - prefix: "fab", - iconName: "black-tie", - icon: [448, 512, [], "f27e", "M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z"] -}; -var faBlackberry = { - prefix: "fab", - iconName: "blackberry", - icon: [512, 512, [], "f37b", "M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z"] -}; -var faBlogger = { - prefix: "fab", - iconName: "blogger", - icon: [448, 512, [], "f37c", "M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z"] -}; -var faBloggerB = { - prefix: "fab", - iconName: "blogger-b", - icon: [448, 512, [], "f37d", "M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z"] -}; -var faBluetooth = { - prefix: "fab", - iconName: "bluetooth", - icon: [448, 512, [], "f293", "M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z"] -}; -var faBluetoothB = { - prefix: "fab", - iconName: "bluetooth-b", - icon: [320, 512, [], "f294", "M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z"] -}; -var faBootstrap = { - prefix: "fab", - iconName: "bootstrap", - icon: [576, 512, [], "f836", "M333.5,201.4c0-22.1-15.6-34.3-43-34.3h-50.4v71.2h42.5C315.4,238.2,333.5,225,333.5,201.4z M517,188.6 c-9.5-30.9-10.9-68.8-9.8-98.1c1.1-30.5-22.7-58.5-54.7-58.5H123.7c-32.1,0-55.8,28.1-54.7,58.5c1,29.3-0.3,67.2-9.8,98.1 c-9.6,31-25.7,50.6-52.2,53.1v28.5c26.4,2.5,42.6,22.1,52.2,53.1c9.5,30.9,10.9,68.8,9.8,98.1c-1.1,30.5,22.7,58.5,54.7,58.5h328.7 c32.1,0,55.8-28.1,54.7-58.5c-1-29.3,0.3-67.2,9.8-98.1c9.6-31,25.7-50.6,52.1-53.1v-28.5C542.7,239.2,526.5,219.6,517,188.6z M300.2,375.1h-97.9V136.8h97.4c43.3,0,71.7,23.4,71.7,59.4c0,25.3-19.1,47.9-43.5,51.8v1.3c33.2,3.6,55.5,26.6,55.5,58.3 C383.4,349.7,352.1,375.1,300.2,375.1z M290.2,266.4h-50.1v78.4h52.3c34.2,0,52.3-13.7,52.3-39.5 C344.7,279.6,326.1,266.4,290.2,266.4z"] -}; -var faBtc = { - prefix: "fab", - iconName: "btc", - icon: [384, 512, [], "f15a", "M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z"] -}; -var faBuffer = { - prefix: "fab", - iconName: "buffer", - icon: [448, 512, [], "f837", "M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z"] -}; -var faBuromobelexperte = { - prefix: "fab", - iconName: "buromobelexperte", - icon: [448, 512, [], "f37f", "M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z"] -}; -var faBuyNLarge = { - prefix: "fab", - iconName: "buy-n-large", - icon: [576, 512, [], "f8a6", "M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z"] -}; -var faBuysellads = { - prefix: "fab", - iconName: "buysellads", - icon: [448, 512, [], "f20d", "M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z"] -}; -var faCanadianMapleLeaf = { - prefix: "fab", - iconName: "canadian-maple-leaf", - icon: [512, 512, [], "f785", "M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z"] -}; -var faCcAmazonPay = { - prefix: "fab", - iconName: "cc-amazon-pay", - icon: [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"] -}; -var faCcAmex = { - prefix: "fab", - iconName: "cc-amex", - icon: [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"] -}; -var faCcApplePay = { - prefix: "fab", - iconName: "cc-apple-pay", - icon: [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"] -}; -var faCcDinersClub = { - prefix: "fab", - iconName: "cc-diners-club", - icon: [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"] -}; -var faCcDiscover = { - prefix: "fab", - iconName: "cc-discover", - icon: [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"] -}; -var faCcJcb = { - prefix: "fab", - iconName: "cc-jcb", - icon: [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"] -}; -var faCcMastercard = { - prefix: "fab", - iconName: "cc-mastercard", - icon: [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"] -}; -var faCcPaypal = { - prefix: "fab", - iconName: "cc-paypal", - icon: [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"] -}; -var faCcStripe = { - prefix: "fab", - iconName: "cc-stripe", - icon: [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"] -}; -var faCcVisa = { - prefix: "fab", - iconName: "cc-visa", - icon: [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"] -}; -var faCentercode = { - prefix: "fab", - iconName: "centercode", - icon: [512, 512, [], "f380", "M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z"] -}; -var faCentos = { - prefix: "fab", - iconName: "centos", - icon: [448, 512, [], "f789", "M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z"] -}; -var faChrome = { - prefix: "fab", - iconName: "chrome", - icon: [496, 512, [], "f268", "M131.5 217.5L55.1 100.1c47.6-59.2 119-91.8 192-92.1 42.3-.3 85.5 10.5 124.8 33.2 43.4 25.2 76.4 61.4 97.4 103L264 133.4c-58.1-3.4-113.4 29.3-132.5 84.1zm32.9 38.5c0 46.2 37.4 83.6 83.6 83.6s83.6-37.4 83.6-83.6-37.4-83.6-83.6-83.6-83.6 37.3-83.6 83.6zm314.9-89.2L339.6 174c37.9 44.3 38.5 108.2 6.6 157.2L234.1 503.6c46.5 2.5 94.4-7.7 137.8-32.9 107.4-62 150.9-192 107.4-303.9zM133.7 303.6L40.4 120.1C14.9 159.1 0 205.9 0 256c0 124 90.8 226.7 209.5 244.9l63.7-124.8c-57.6 10.8-113.2-20.8-139.5-72.5z"] -}; -var faChromecast = { - prefix: "fab", - iconName: "chromecast", - icon: [512, 512, [], "f838", "M447.8,64H64c-23.6,0-42.7,19.1-42.7,42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6,0,42.7-19.1,42.7-42.7V106.7 C490.7,83.1,471.4,64,447.8,64z M21.3,383.6L21.3,383.6l0,63.9h63.9C85.2,412.2,56.6,383.6,21.3,383.6L21.3,383.6z M21.3,298.6V341 c58.9,0,106.6,48.1,106.6,107h42.7C170.7,365.6,103.7,298.7,21.3,298.6z M213.4,448h42.7c-0.5-129.5-105.3-234.3-234.8-234.6l0,42.4 C127.3,255.6,213.3,342,213.4,448z"] -}; -var faCloudflare = { - prefix: "fab", - iconName: "cloudflare", - icon: [640, 512, [], "e07d", "M407.906,319.913l-230.8-2.928a4.58,4.58,0,0,1-3.632-1.926,4.648,4.648,0,0,1-.494-4.147,6.143,6.143,0,0,1,5.361-4.076L411.281,303.9c27.631-1.26,57.546-23.574,68.022-50.784l13.286-34.542a7.944,7.944,0,0,0,.524-2.936,7.735,7.735,0,0,0-.164-1.631A151.91,151.91,0,0,0,201.257,198.4,68.12,68.12,0,0,0,94.2,269.59C41.924,271.106,0,313.728,0,366.12a96.054,96.054,0,0,0,1.029,13.958,4.508,4.508,0,0,0,4.445,3.871l426.1.051c.043,0,.08-.019.122-.02a5.606,5.606,0,0,0,5.271-4l3.273-11.265c3.9-13.4,2.448-25.8-4.1-34.9C430.124,325.423,420.09,320.487,407.906,319.913ZM513.856,221.1c-2.141,0-4.271.062-6.391.164a3.771,3.771,0,0,0-3.324,2.653l-9.077,31.193c-3.9,13.4-2.449,25.786,4.1,34.89,6.02,8.4,16.054,13.323,28.238,13.9l49.2,2.939a4.491,4.491,0,0,1,3.51,1.894,4.64,4.64,0,0,1,.514,4.169,6.153,6.153,0,0,1-5.351,4.075l-51.125,2.939c-27.754,1.27-57.669,23.574-68.145,50.784l-3.695,9.606a2.716,2.716,0,0,0,2.427,3.68c.046,0,.088.017.136.017h175.91a4.69,4.69,0,0,0,4.539-3.37,124.807,124.807,0,0,0,4.682-34C640,277.3,583.524,221.1,513.856,221.1Z"] -}; -var faCloudscale = { - prefix: "fab", - iconName: "cloudscale", - icon: [448, 512, [], "f383", "M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z"] -}; -var faCloudsmith = { - prefix: "fab", - iconName: "cloudsmith", - icon: [332, 512, [], "f384", "M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z"] -}; -var faCloudversify = { - prefix: "fab", - iconName: "cloudversify", - icon: [616, 512, [], "f385", "M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z"] -}; -var faCodepen = { - prefix: "fab", - iconName: "codepen", - icon: [512, 512, [], "f1cb", "M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z"] -}; -var faCodiepie = { - prefix: "fab", - iconName: "codiepie", - icon: [472, 512, [], "f284", "M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z"] -}; -var faConfluence = { - prefix: "fab", - iconName: "confluence", - icon: [512, 512, [], "f78d", "M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z"] -}; -var faConnectdevelop = { - prefix: "fab", - iconName: "connectdevelop", - icon: [576, 512, [], "f20e", "M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z"] -}; -var faContao = { - prefix: "fab", - iconName: "contao", - icon: [512, 512, [], "f26d", "M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z"] -}; -var faCottonBureau = { - prefix: "fab", - iconName: "cotton-bureau", - icon: [512, 512, [], "f89e", "M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z"] -}; -var faCpanel = { - prefix: "fab", - iconName: "cpanel", - icon: [640, 512, [], "f388", "M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z"] -}; -var faCreativeCommons = { - prefix: "fab", - iconName: "creative-commons", - icon: [496, 512, [], "f25e", "M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"] -}; -var faCreativeCommonsBy = { - prefix: "fab", - iconName: "creative-commons-by", - icon: [496, 512, [], "f4e7", "M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"] -}; -var faCreativeCommonsNc = { - prefix: "fab", - iconName: "creative-commons-nc", - icon: [496, 512, [], "f4e8", "M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z"] -}; -var faCreativeCommonsNcEu = { - prefix: "fab", - iconName: "creative-commons-nc-eu", - icon: [496, 512, [], "f4e9", "M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z"] -}; -var faCreativeCommonsNcJp = { - prefix: "fab", - iconName: "creative-commons-nc-jp", - icon: [496, 512, [], "f4ea", "M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z"] -}; -var faCreativeCommonsNd = { - prefix: "fab", - iconName: "creative-commons-nd", - icon: [496, 512, [], "f4eb", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"] -}; -var faCreativeCommonsPd = { - prefix: "fab", - iconName: "creative-commons-pd", - icon: [496, 512, [], "f4ec", "M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z"] -}; -var faCreativeCommonsPdAlt = { - prefix: "fab", - iconName: "creative-commons-pd-alt", - icon: [496, 512, [], "f4ed", "M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z"] -}; -var faCreativeCommonsRemix = { - prefix: "fab", - iconName: "creative-commons-remix", - icon: [496, 512, [], "f4ee", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z"] -}; -var faCreativeCommonsSa = { - prefix: "fab", - iconName: "creative-commons-sa", - icon: [496, 512, [], "f4ef", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z"] -}; -var faCreativeCommonsSampling = { - prefix: "fab", - iconName: "creative-commons-sampling", - icon: [496, 512, [], "f4f0", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z"] -}; -var faCreativeCommonsSamplingPlus = { - prefix: "fab", - iconName: "creative-commons-sampling-plus", - icon: [496, 512, [], "f4f1", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z"] -}; -var faCreativeCommonsShare = { - prefix: "fab", - iconName: "creative-commons-share", - icon: [496, 512, [], "f4f2", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z"] -}; -var faCreativeCommonsZero = { - prefix: "fab", - iconName: "creative-commons-zero", - icon: [496, 512, [], "f4f3", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z"] -}; -var faCriticalRole = { - prefix: "fab", - iconName: "critical-role", - icon: [448, 512, [], "f6c9", "M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z"] -}; -var faCss3 = { - prefix: "fab", - iconName: "css3", - icon: [512, 512, [], "f13c", "M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z"] -}; -var faCss3Alt = { - prefix: "fab", - iconName: "css3-alt", - icon: [384, 512, [], "f38b", "M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z"] -}; -var faCuttlefish = { - prefix: "fab", - iconName: "cuttlefish", - icon: [440, 512, [], "f38c", "M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z"] -}; -var faDAndD = { - prefix: "fab", - iconName: "d-and-d", - icon: [576, 512, [], "f38d", "M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z"] -}; -var faDAndDBeyond = { - prefix: "fab", - iconName: "d-and-d-beyond", - icon: [640, 512, [], "f6ca", "M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z"] -}; -var faDailymotion = { - prefix: "fab", - iconName: "dailymotion", - icon: [448, 512, [], "e052", "M298.93,267a48.4,48.4,0,0,0-24.36-6.21q-19.83,0-33.44,13.27t-13.61,33.42q0,21.16,13.28,34.6t33.43,13.44q20.5,0,34.11-13.78T322,307.47A47.13,47.13,0,0,0,315.9,284,44.13,44.13,0,0,0,298.93,267ZM0,32V480H448V32ZM374.71,405.26h-53.1V381.37h-.67q-15.79,26.2-55.78,26.2-27.56,0-48.89-13.1a88.29,88.29,0,0,1-32.94-35.77q-11.6-22.68-11.59-50.89,0-27.56,11.76-50.22a89.9,89.9,0,0,1,32.93-35.78q21.18-13.09,47.72-13.1a80.87,80.87,0,0,1,29.74,5.21q13.28,5.21,25,17V153l55.79-12.09Z"] -}; -var faDashcube = { - prefix: "fab", - iconName: "dashcube", - icon: [448, 512, [], "f210", "M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z"] -}; -var faDeezer = { - prefix: "fab", - iconName: "deezer", - icon: [576, 512, [], "e077", "M451.46,244.71H576V172H451.46Zm0-173.89v72.67H576V70.82Zm0,275.06H576V273.2H451.46ZM0,447.09H124.54V374.42H0Zm150.47,0H275V374.42H150.47Zm150.52,0H425.53V374.42H301Zm150.47,0H576V374.42H451.46ZM301,345.88H425.53V273.2H301Zm-150.52,0H275V273.2H150.47Zm0-101.17H275V172H150.47Z"] -}; -var faDelicious = { - prefix: "fab", - iconName: "delicious", - icon: [448, 512, [], "f1a5", "M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z"] -}; -var faDeploydog = { - prefix: "fab", - iconName: "deploydog", - icon: [512, 512, [], "f38e", "M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z"] -}; -var faDeskpro = { - prefix: "fab", - iconName: "deskpro", - icon: [480, 512, [], "f38f", "M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z"] -}; -var faDev = { - prefix: "fab", - iconName: "dev", - icon: [448, 512, [], "f6cc", "M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z"] -}; -var faDeviantart = { - prefix: "fab", - iconName: "deviantart", - icon: [320, 512, [], "f1bd", "M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z"] -}; -var faDhl = { - prefix: "fab", - iconName: "dhl", - icon: [640, 512, [], "f790", "M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z"] -}; -var faDiaspora = { - prefix: "fab", - iconName: "diaspora", - icon: [512, 512, [], "f791", "M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z"] -}; -var faDigg = { - prefix: "fab", - iconName: "digg", - icon: [512, 512, [], "f1a6", "M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z"] -}; -var faDigitalOcean = { - prefix: "fab", - iconName: "digital-ocean", - icon: [512, 512, [], "f391", "M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z"] -}; -var faDiscord = { - prefix: "fab", - iconName: "discord", - icon: [640, 512, [], "f392", "M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"] -}; -var faDiscourse = { - prefix: "fab", - iconName: "discourse", - icon: [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"] -}; -var faDochub = { - prefix: "fab", - iconName: "dochub", - icon: [416, 512, [], "f394", "M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z"] -}; -var faDocker = { - prefix: "fab", - iconName: "docker", - icon: [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"] -}; -var faDraft2digital = { - prefix: "fab", - iconName: "draft2digital", - icon: [480, 512, [], "f396", "M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z"] -}; -var faDribbble = { - prefix: "fab", - iconName: "dribbble", - icon: [512, 512, [], "f17d", "M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z"] -}; -var faDribbbleSquare = { - prefix: "fab", - iconName: "dribbble-square", - icon: [448, 512, [], "f397", "M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z"] -}; -var faDropbox = { - prefix: "fab", - iconName: "dropbox", - icon: [528, 512, [], "f16b", "M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z"] -}; -var faDrupal = { - prefix: "fab", - iconName: "drupal", - icon: [448, 512, [], "f1a9", "M319.5 114.7c-22.2-14-43.5-19.5-64.7-33.5-13-8.8-31.3-30-46.5-48.3-2.7 29.3-11.5 41.2-22 49.5-21.3 17-34.8 22.2-53.5 32.3C117 123 32 181.5 32 290.5 32 399.7 123.8 480 225.8 480 327.5 480 416 406 416 294c0-112.3-83-171-96.5-179.3zm2.5 325.6c-20.1 20.1-90.1 28.7-116.7 4.2-4.8-4.8.3-12 6.5-12 0 0 17 13.3 51.5 13.3 27 0 46-7.7 54.5-14 6.1-4.6 8.4 4.3 4.2 8.5zm-54.5-52.6c8.7-3.6 29-3.8 36.8 1.3 4.1 2.8 16.1 18.8 6.2 23.7-8.4 4.2-1.2-15.7-26.5-15.7-14.7 0-19.5 5.2-26.7 11-7 6-9.8 8-12.2 4.7-6-8.2 15.9-22.3 22.4-25zM360 405c-15.2-1-45.5-48.8-65-49.5-30.9-.9-104.1 80.7-161.3 42-38.8-26.6-14.6-104.8 51.8-105.2 49.5-.5 83.8 49 108.5 48.5 21.3-.3 61.8-41.8 81.8-41.8 48.7 0 23.3 109.3-15.8 106z"] -}; -var faDyalog = { - prefix: "fab", - iconName: "dyalog", - icon: [416, 512, [], "f399", "M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z"] -}; -var faEarlybirds = { - prefix: "fab", - iconName: "earlybirds", - icon: [480, 512, [], "f39a", "M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z"] -}; -var faEbay = { - prefix: "fab", - iconName: "ebay", - icon: [640, 512, [], "f4f4", "M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z"] -}; -var faEdge = { - prefix: "fab", - iconName: "edge", - icon: [512, 512, [], "f282", "M481.92,134.48C440.87,54.18,352.26,8,255.91,8,137.05,8,37.51,91.68,13.47,203.66c26-46.49,86.22-79.14,149.46-79.14,79.27,0,121.09,48.93,122.25,50.18,22,23.8,33,50.39,33,83.1,0,10.4-5.31,25.82-15.11,38.57-1.57,2-6.39,4.84-6.39,11,0,5.06,3.29,9.92,9.14,14,27.86,19.37,80.37,16.81,80.51,16.81A115.39,115.39,0,0,0,444.94,322a118.92,118.92,0,0,0,58.95-102.44C504.39,176.13,488.39,147.26,481.92,134.48ZM212.77,475.67a154.88,154.88,0,0,1-46.64-45c-32.94-47.42-34.24-95.6-20.1-136A155.5,155.5,0,0,1,203,215.75c59-45.2,94.84-5.65,99.06-1a80,80,0,0,0-4.89-10.14c-9.24-15.93-24-36.41-56.56-53.51-33.72-17.69-70.59-18.59-77.64-18.59-38.71,0-77.9,13-107.53,35.69C35.68,183.3,12.77,208.72,8.6,243c-1.08,12.31-2.75,62.8,23,118.27a248,248,0,0,0,248.3,141.61C241.78,496.26,214.05,476.24,212.77,475.67Zm250.72-98.33a7.76,7.76,0,0,0-7.92-.23,181.66,181.66,0,0,1-20.41,9.12,197.54,197.54,0,0,1-69.55,12.52c-91.67,0-171.52-63.06-171.52-144A61.12,61.12,0,0,1,200.61,228,168.72,168.72,0,0,0,161.85,278c-14.92,29.37-33,88.13,13.33,151.66,6.51,8.91,23,30,56,47.67,23.57,12.65,49,19.61,71.7,19.61,35.14,0,115.43-33.44,163-108.87A7.75,7.75,0,0,0,463.49,377.34Z"] -}; -var faEdgeLegacy = { - prefix: "fab", - iconName: "edge-legacy", - icon: [512, 512, [], "e078", "M25.71,228.16l.35-.48c0,.16,0,.32-.07.48Zm460.58,15.51c0-44-7.76-84.46-28.81-122.4C416.5,47.88,343.91,8,258.89,8,119,7.72,40.62,113.21,26.06,227.68c42.42-61.31,117.07-121.38,220.37-125,0,0,109.67,0,99.42,105H170c6.37-37.39,18.55-59,34.34-78.93-75.05,34.9-121.85,96.1-120.75,188.32.83,71.45,50.13,144.84,120.75,172,83.35,31.84,192.77,7.2,240.13-21.33V363.31C363.6,419.8,173.6,424.23,172.21,295.74H486.29V243.67Z"] -}; -var faElementor = { - prefix: "fab", - iconName: "elementor", - icon: [448, 512, [], "f430", "M425.6 32H22.4C10 32 0 42 0 54.4v403.2C0 470 10 480 22.4 480h403.2c12.4 0 22.4-10 22.4-22.4V54.4C448 42 438 32 425.6 32M164.3 355.5h-39.8v-199h39.8v199zm159.3 0H204.1v-39.8h119.5v39.8zm0-79.6H204.1v-39.8h119.5v39.8zm0-79.7H204.1v-39.8h119.5v39.8z"] -}; -var faEllo = { - prefix: "fab", - iconName: "ello", - icon: [496, 512, [], "f5f1", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z"] -}; -var faEmber = { - prefix: "fab", - iconName: "ember", - icon: [640, 512, [], "f423", "M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z"] -}; -var faEmpire = { - prefix: "fab", - iconName: "empire", - icon: [496, 512, [], "f1d1", "M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z"] -}; -var faEnvira = { - prefix: "fab", - iconName: "envira", - icon: [448, 512, [], "f299", "M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z"] -}; -var faErlang = { - prefix: "fab", - iconName: "erlang", - icon: [640, 512, [], "f39d", "M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z"] -}; -var faEthereum = { - prefix: "fab", - iconName: "ethereum", - icon: [320, 512, [], "f42e", "M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z"] -}; -var faEtsy = { - prefix: "fab", - iconName: "etsy", - icon: [384, 512, [], "f2d7", "M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z"] -}; -var faEvernote = { - prefix: "fab", - iconName: "evernote", - icon: [384, 512, [], "f839", "M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z"] -}; -var faExpeditedssl = { - prefix: "fab", - iconName: "expeditedssl", - icon: [496, 512, [], "f23e", "M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z"] -}; -var faFacebook = { - prefix: "fab", - iconName: "facebook", - icon: [512, 512, [], "f09a", "M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"] -}; -var faFacebookF = { - prefix: "fab", - iconName: "facebook-f", - icon: [320, 512, [], "f39e", "M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z"] -}; -var faFacebookMessenger = { - prefix: "fab", - iconName: "facebook-messenger", - icon: [512, 512, [], "f39f", "M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z"] -}; -var faFacebookSquare = { - prefix: "fab", - iconName: "facebook-square", - icon: [448, 512, [], "f082", "M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z"] -}; -var faFantasyFlightGames = { - prefix: "fab", - iconName: "fantasy-flight-games", - icon: [512, 512, [], "f6dc", "M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99a42569.01 42569.01 0 0 1-41.13-40.72zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z"] -}; -var faFedex = { - prefix: "fab", - iconName: "fedex", - icon: [640, 512, [], "f797", "M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z"] -}; -var faFedora = { - prefix: "fab", - iconName: "fedora", - icon: [448, 512, [], "f798", "M225 32C101.3 31.7.8 131.7.4 255.4L0 425.7a53.6 53.6 0 0 0 53.6 53.9l170.2.4c123.7.3 224.3-99.7 224.6-223.4S348.7 32.3 225 32zm169.8 157.2L333 126.6c2.3-4.7 3.8-9.2 3.8-14.3v-1.6l55.2 56.1a101 101 0 0 1 2.8 22.4zM331 94.3a106.06 106.06 0 0 1 58.5 63.8l-54.3-54.6a26.48 26.48 0 0 0-4.2-9.2zM118.1 247.2a49.66 49.66 0 0 0-7.7 11.4l-8.5-8.5a85.78 85.78 0 0 1 16.2-2.9zM97 251.4l11.8 11.9-.9 8a34.74 34.74 0 0 0 2.4 12.5l-27-27.2a80.6 80.6 0 0 1 13.7-5.2zm-18.2 7.4l38.2 38.4a53.17 53.17 0 0 0-14.1 4.7L67.6 266a107 107 0 0 1 11.2-7.2zm-15.2 9.8l35.3 35.5a67.25 67.25 0 0 0-10.5 8.5L53.5 278a64.33 64.33 0 0 1 10.1-9.4zm-13.3 12.3l34.9 35a56.84 56.84 0 0 0-7.7 11.4l-35.8-35.9c2.8-3.8 5.7-7.2 8.6-10.5zm-11 14.3l36.4 36.6a48.29 48.29 0 0 0-3.6 15.2l-39.5-39.8a99.81 99.81 0 0 1 6.7-12zm-8.8 16.3l41.3 41.8a63.47 63.47 0 0 0 6.7 26.2L25.8 326c1.4-4.9 2.9-9.6 4.7-14.5zm-7.9 43l61.9 62.2a31.24 31.24 0 0 0-3.6 14.3v1.1l-55.4-55.7a88.27 88.27 0 0 1-2.9-21.9zm5.3 30.7l54.3 54.6a28.44 28.44 0 0 0 4.2 9.2 106.32 106.32 0 0 1-58.5-63.8zm-5.3-37a80.69 80.69 0 0 1 2.1-17l72.2 72.5a37.59 37.59 0 0 0-9.9 8.7zm253.3-51.8l-42.6-.1-.1 56c-.2 69.3-64.4 115.8-125.7 102.9-5.7 0-19.9-8.7-19.9-24.2a24.89 24.89 0 0 1 24.5-24.6c6.3 0 6.3 1.6 15.7 1.6a55.91 55.91 0 0 0 56.1-55.9l.1-47c0-4.5-4.5-9-8.9-9l-33.6-.1c-32.6-.1-32.5-49.4.1-49.3l42.6.1.1-56a105.18 105.18 0 0 1 105.6-105 86.35 86.35 0 0 1 20.2 2.3c11.2 1.8 19.9 11.9 19.9 24 0 15.5-14.9 27.8-30.3 23.9-27.4-5.9-65.9 14.4-66 54.9l-.1 47a8.94 8.94 0 0 0 8.9 9l33.6.1c32.5.2 32.4 49.5-.2 49.4zm23.5-.3a35.58 35.58 0 0 0 7.6-11.4l8.5 8.5a102 102 0 0 1-16.1 2.9zm21-4.2L308.6 280l.9-8.1a34.74 34.74 0 0 0-2.4-12.5l27 27.2a74.89 74.89 0 0 1-13.7 5.3zm18-7.4l-38-38.4c4.9-1.1 9.6-2.4 13.7-4.7l36.2 35.9c-3.8 2.5-7.9 5-11.9 7.2zm15.5-9.8l-35.3-35.5a61.06 61.06 0 0 0 10.5-8.5l34.9 35a124.56 124.56 0 0 1-10.1 9zm13.2-12.3l-34.9-35a63.18 63.18 0 0 0 7.7-11.4l35.8 35.9a130.28 130.28 0 0 1-8.6 10.5zm11-14.3l-36.4-36.6a48.29 48.29 0 0 0 3.6-15.2l39.5 39.8a87.72 87.72 0 0 1-6.7 12zm13.5-30.9a140.63 140.63 0 0 1-4.7 14.3L345.6 190a58.19 58.19 0 0 0-7.1-26.2zm1-5.6l-71.9-72.1a32 32 0 0 0 9.9-9.2l64.3 64.7a90.93 90.93 0 0 1-2.3 16.6z"] -}; -var faFigma = { - prefix: "fab", - iconName: "figma", - icon: [384, 512, [], "f799", "M14 95.7924C14 42.8877 56.8878 0 109.793 0H274.161C327.066 0 369.954 42.8877 369.954 95.7924C369.954 129.292 352.758 158.776 326.711 175.897C352.758 193.019 369.954 222.502 369.954 256.002C369.954 308.907 327.066 351.795 274.161 351.795H272.081C247.279 351.795 224.678 342.369 207.666 326.904V415.167C207.666 468.777 163.657 512 110.309 512C57.5361 512 14 469.243 14 416.207C14 382.709 31.1945 353.227 57.2392 336.105C31.1945 318.983 14 289.5 14 256.002C14 222.502 31.196 193.019 57.2425 175.897C31.196 158.776 14 129.292 14 95.7924ZM176.288 191.587H109.793C74.2172 191.587 45.3778 220.427 45.3778 256.002C45.3778 291.44 73.9948 320.194 109.381 320.416C109.518 320.415 109.655 320.415 109.793 320.415H176.288V191.587ZM207.666 256.002C207.666 291.577 236.505 320.417 272.081 320.417H274.161C309.737 320.417 338.576 291.577 338.576 256.002C338.576 220.427 309.737 191.587 274.161 191.587H272.081C236.505 191.587 207.666 220.427 207.666 256.002ZM109.793 351.795C109.655 351.795 109.518 351.794 109.381 351.794C73.9948 352.015 45.3778 380.769 45.3778 416.207C45.3778 451.652 74.6025 480.622 110.309 480.622C146.591 480.622 176.288 451.186 176.288 415.167V351.795H109.793ZM109.793 31.3778C74.2172 31.3778 45.3778 60.2173 45.3778 95.7924C45.3778 131.368 74.2172 160.207 109.793 160.207H176.288V31.3778H109.793ZM207.666 160.207H274.161C309.737 160.207 338.576 131.368 338.576 95.7924C338.576 60.2173 309.737 31.3778 274.161 31.3778H207.666V160.207Z"] -}; -var faFirefox = { - prefix: "fab", - iconName: "firefox", - icon: [512, 512, [], "f269", "M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z"] -}; -var faFirefoxBrowser = { - prefix: "fab", - iconName: "firefox-browser", - icon: [512, 512, [], "e007", "M189.37,152.86Zm-58.74-29.37C130.79,123.5,130.71,123.5,130.63,123.49Zm351.42,45.35c-10.61-25.5-32.08-53-48.94-61.73,13.72,26.89,21.67,53.88,24.7,74,0,0,0,.14.05.41-27.58-68.75-74.35-96.47-112.55-156.83-1.93-3.05-3.86-6.11-5.74-9.33-1-1.65-1.86-3.34-2.69-5.05A44.88,44.88,0,0,1,333.24.69a.63.63,0,0,0-.55-.66.9.9,0,0,0-.46,0l-.12.07-.18.1.1-.14c-54.23,31.77-76.72,87.38-82.5,122.78a130,130,0,0,0-48.33,12.33,6.25,6.25,0,0,0-3.09,7.75,6.13,6.13,0,0,0,7.79,3.79l.52-.21a117.84,117.84,0,0,1,42.11-11l1.42-.1c2-.12,4-.2,6-.22A122.61,122.61,0,0,1,291,140c.67.2,1.32.42,2,.63,1.89.57,3.76,1.2,5.62,1.87,1.36.5,2.71,1,4.05,1.58,1.09.44,2.18.88,3.25,1.35q2.52,1.13,5,2.35c.75.37,1.5.74,2.25,1.13q2.4,1.26,4.74,2.63,1.51.87,3,1.8a124.89,124.89,0,0,1,42.66,44.13c-13-9.15-36.35-18.19-58.82-14.28,87.74,43.86,64.18,194.9-57.39,189.2a108.43,108.43,0,0,1-31.74-6.12c-2.42-.91-4.8-1.89-7.16-2.93-1.38-.63-2.76-1.27-4.12-2C174.5,346,149.9,316.92,146.83,281.59c0,0,11.25-41.95,80.62-41.95,7.5,0,28.93-20.92,29.33-27-.09-2-42.54-18.87-59.09-35.18-8.85-8.71-13.05-12.91-16.77-16.06a69.58,69.58,0,0,0-6.31-4.77A113.05,113.05,0,0,1,173.92,97c-25.06,11.41-44.55,29.45-58.71,45.37h-.12c-9.67-12.25-9-52.65-8.43-61.08-.12-.53-7.22,3.68-8.15,4.31a178.54,178.54,0,0,0-23.84,20.43A214,214,0,0,0,51.9,133.36l0,0a.08.08,0,0,1,0,0,205.84,205.84,0,0,0-32.73,73.9c-.06.27-2.33,10.21-4,22.48q-.42,2.87-.78,5.74c-.57,3.69-1,7.71-1.44,14,0,.24,0,.48-.05.72-.18,2.71-.34,5.41-.49,8.12,0,.41,0,.82,0,1.24,0,134.7,109.21,243.89,243.92,243.89,120.64,0,220.82-87.58,240.43-202.62.41-3.12.74-6.26,1.11-9.41,4.85-41.83-.54-85.79-15.82-122.55Z"] -}; -var faFirstOrder = { - prefix: "fab", - iconName: "first-order", - icon: [448, 512, [], "f2b0", "M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z"] -}; -var faFirstOrderAlt = { - prefix: "fab", - iconName: "first-order-alt", - icon: [496, 512, [], "f50a", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z"] -}; -var faFirstdraft = { - prefix: "fab", - iconName: "firstdraft", - icon: [384, 512, [], "f3a1", "M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z"] -}; -var faFlickr = { - prefix: "fab", - iconName: "flickr", - icon: [448, 512, [], "f16e", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z"] -}; -var faFlipboard = { - prefix: "fab", - iconName: "flipboard", - icon: [448, 512, [], "f44d", "M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z"] -}; -var faFly = { - prefix: "fab", - iconName: "fly", - icon: [384, 512, [], "f417", "M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z"] -}; -var faFontAwesome = { - prefix: "fab", - iconName: "font-awesome", - icon: [448, 512, [], "f2b4", "M400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32ZM336 312c-31.6 11.2-41.2 16-59.8 16-31.4 0-43.2-16-74.6-16a80 80 0 0 0-25.6 4V284a85.9 85.9 0 0 1 25.6-4c31.2 0 43.2 16 74.6 16 10.2 0 17.8-1.4 27.8-4.6v-96c-10 3.2-17.6 4.6-27.8 4.6-31.4 0-43.2-16-74.6-16-25.4 0-37.4 10.4-57.6 14.4V352a16 16 0 0 1-32 0V160a16 16 0 0 1 32 0v6.4c20.2-4 32.2-14.4 57.6-14.4 31.2 0 43.2 16 74.6 16 18.6 0 28.2-4.8 59.8-16Z"] -}; -var faFontAwesomeAlt = { - prefix: "fab", - iconName: "font-awesome-alt", - icon: [448, 512, [], "f35c", "M400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32Zm16 400a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16V80A16 16 0 0 1 48 64H400a16 16 0 0 1 16 16ZM201.6 152c-25.4 0-37.4 10.4-57.6 14.4V160a16 16 0 0 0-32 0V352a16 16 0 0 0 32 0V198.4c20.2-4 32.2-14.4 57.6-14.4 31.4 0 43.2 16 74.6 16 10.2 0 17.8-1.4 27.8-4.6v96c-10 3.2-17.6 4.6-27.8 4.6-31.4 0-43.4-16-74.6-16a85.9 85.9 0 0 0-25.6 4v32a80 80 0 0 1 25.6-4c31.4 0 43.2 16 74.6 16 18.6 0 28.2-4.8 59.8-16V152c-31.6 11.2-41.2 16-59.8 16C244.8 168 232.8 152 201.6 152Z"] -}; -var faFontAwesomeFlag = { - prefix: "fab", - iconName: "font-awesome-flag", - icon: [448, 512, [], "f425", "M448 48V384c-63 23-82 32-119 32-63 0-87-32-150-32-20 0-36 4-51 8V328c15-4 31-8 51-8 63 0 87 32 150 32 20 0 35-3 55-9V135c-20 6-35 9-55 9-63 0-87-32-150-32-51 0-75 21-115 29V448a31.6 31.6 0 0 1-32 32A31.6 31.6 0 0 1 0 448V64A31.6 31.6 0 0 1 32 32 31.6 31.6 0 0 1 64 64V77c40-8 64-29 115-29 63 0 87 32 150 32C366 80 385 71 448 48Z"] -}; -var faFontAwesomeLogoFull3 = { - prefix: "fab", - iconName: "font-awesome-logo-full", - icon: [3992, 512, ["Font Awesome"], "f4e6", "M1209.7 156.5c-57.8 0-102 43.9-102 99.1 0 56 44.6 99.1 102 99.1 57.4 0 102-43.1 102-99.1C1311.7 200.4 1267.5 156.5 1209.7 156.5Zm0 152.7c-35.1 0-51.8-27.4-51.8-53.2 0-25.8 16.7-53.2 51.8-53.2 35.1 0 51.8 27.8 51.8 53.2C1261.1 281.8 1244.8 309.2 1209.7 309.2Zm962.1-136.1c-4.4-10.9-12.3-16.5-23.5-16.5s-19.1 5.6-23.5 16.5l-59.4 145.8c-7.2 17.7 2.8 27.4 4.4 29a24.6 24.6 0 0 0 17.5 6.8c10.8 0 18.7-6 23.1-18.1l4-10.1h67.7l4 10.1c4.8 12.1 12.3 18.1 23.1 18.1a24.6 24.6 0 0 0 17.5-6.8c10-10.1 6.8-22.6 4.4-29Zm-43 113.6 19.1-56 19.1 56Zm-574.5-130.1c-14.3 0-24.7 10.9-24.7 25.4v76.5l-68.5-85.8c-4.4-5.6-11.6-16.1-25.5-16.1-19.1 0-24.3 17.7-24.3 25.4V329.7c0 14.1 10.4 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V252.8l68.9 86.2c4.8 5.6 11.6 16.1 25.5 16.1 19.1 0 23.9-17.3 23.9-25.4V181.9C1579 167.4 1568.6 156.5 1554.3 156.5Zm-554.1 1.6H916.5c-19.9 0-25.1 17.3-25.1 25.4V328.1c0 19.7 16.7 25.4 24.7 25.4 8 0 24.7-5.2 24.7-25.4V285h44.6c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.5-22.1-22.7-22.1H940.8V203.6h59.4c12.8 0 22.7-9.3 22.7-22.6C1022.9 163 1007.3 158.1 1000.2 158.1Zm815.1 0H1691.7c-7.2 0-22.7 4.4-22.7 22.2 0 13.3 10 22.6 22.7 22.6h37V327.7c0 14.1 10.4 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V202.8h37c12.7 0 22.7-9.3 22.7-22.6C1837.9 163 1822.4 158.1 1815.2 158.1Zm1789.5-1.6c-9.6 0-17.5 6-25.1 18.1l-46.6 76.1L3486.4 174.6q-10.8-18.1-25.1-18.1c-19.5 0-24.7 18.1-24.7 25.8V329.7c0 14.1 10.4 25.4 24.7 25.4s24.7-10.9 24.7-25.4V262.8L3510.7 302.7c6.4 10.1 13.9 15.3 22.3 15.3 8.8 0 15.9-5.2 22.3-15.3l24.7-39.9v66.9c0 14.1 10.3 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V182.3C3629.4 174.2 3624.6 156.5 3604.7 156.5Zm248.6 149.8h-65.7V272.9h39.4c11.9 0 21.1-8.9 21.1-20.9 0-12.1-9.2-20.9-21.1-20.9h-39.4V204.8h62.1c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.6-22.2-22.7-22.2h-86.4c-19.9 0-25.1 17.3-25.1 25.4V326.5c0 8.1 5.2 25.4 25.1 25.4h90c12.8 0 22.7-9.3 22.7-22.6C3876 311.2 3860.5 306.3 3853.3 306.3ZM3235 156.5c-57.8 0-102 43.9-102 99.1 0 56 44.6 99.1 102 99.1 57.4 0 102-43.1 102-99.1C3337 200.4 3292.8 156.5 3235 156.5Zm0 152.7c-35.1 0-51.8-27.4-51.8-53.2 0-25.8 16.7-53.2 51.8-53.2 35.1 0 51.8 27.8 51.8 53.2C3286.8 281.8 3270.1 309.2 3235 309.2ZM2550.2 156.5c-11.2 0-19.1 5.6-23.1 16.5l-34.3 94.7-31.5-92.2c-4.4-12.5-12.3-18.9-24.3-18.9-11.9 0-19.9 6.4-24.3 18.9l-31.5 92.2-34.3-95.5q-5.4-15.7-22.7-15.7c-6.8 0-12.3 2.4-17.5 7.3-5.2 5.2-10.8 14.5-4.8 28.6l55.8 145.8c4 11.3 11.6 16.9 23.1 16.9q16.7 0 22.7-16.9l33.5-91.8 33.5 91.8q6 16.9 22.7 16.9c11.2 0 19.1-5.6 23.1-16.9l55.8-145.8c3.6-9.3 4.4-19.3-4.8-28.6A23 23 0 0 0 2550.2 156.5Zm444.2 81-21.9-9.3c-11.9-4.8-16.3-8.5-16.3-15.7q0-12.1 16.7-12.1c12.7 0 19.5 7.7 24.3 10.9 7.2 5.2 18.3 6.8 27.9-2 10.8-10.5 6.8-23.8 1.2-30.6-12.3-14.9-30.3-22.2-53.8-22.2-19.1 0-35.1 5.2-47.4 15.7-12.3 10.5-18.7 24.2-18.7 41.1 0 24.2 15.9 43.5 47.8 57.6l19.5 8.9c15.9 6.8 19.1 9.7 19.1 17.7 0 9.3-6.4 14.1-19.5 14.1-19.1 0-34.7-14.9-36.3-16.1-10.8-7.3-21.5-2-26.3 2.8-6.8 6.4-12.7 20.9 3.2 36.2 6.8 6.4 15.5 11.7 26.7 15.3a94.6 94.6 0 0 0 32.7 5.6c19.9 0 36.7-5.2 49.8-16.1 13.1-10.9 19.5-25.4 19.5-43.5q0-20.5-12-33.8C3022.7 253.2 3010.7 244.3 2994.4 237.5Zm-206.4 68.9h-65.7V272.9h39.4c12 0 21.1-8.9 21.1-20.9 0-12.1-9.2-20.9-21.1-20.9h-39.4V204.8h62.1c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.5-22.2-22.7-22.2h-86.4c-19.9 0-25.1 17.3-25.1 25.4V326.5c0 8.1 5.2 25.4 25.1 25.4h90c12.7 0 22.7-9.3 22.7-22.6C2810.8 311.2 2795.2 306.3 2788 306.3ZM178.3 49.1c-50.5 0-74.4 20.7-114.6 28.7V65A31.8 31.8 0 1 0 0 65V447a31.8 31.8 0 0 0 63.7 0V141.4c40.2-8 64.1-28.7 114.6-28.7 62.5 0 86 31.8 148.4 31.8 20.3 0 35.4-2.8 55.3-9.2v191c-19.9 6.4-35 9.2-55.3 9.2-62.5 0-86.4-31.8-148.4-31.8-20.3 0-36.2 3.6-50.9 8V375.4a159.1 159.1 0 0 1 50.9-8c62.5 0 86 31.8 148.4 31.8 37 0 56.1-9.6 119-31.8V49.1C382.8 71.4 363.7 80.9 326.7 80.9 264.2 80.9 240.4 49.1 178.3 49.1Z"] -}; -var faFonticons = { - prefix: "fab", - iconName: "fonticons", - icon: [448, 512, [], "f280", "M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z"] -}; -var faFonticonsFi = { - prefix: "fab", - iconName: "fonticons-fi", - icon: [384, 512, [], "f3a2", "M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z"] -}; -var faFortAwesome = { - prefix: "fab", - iconName: "fort-awesome", - icon: [512, 512, [], "f286", "M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z"] -}; -var faFortAwesomeAlt = { - prefix: "fab", - iconName: "fort-awesome-alt", - icon: [512, 512, [], "f3a3", "M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z"] -}; -var faForumbee = { - prefix: "fab", - iconName: "forumbee", - icon: [448, 512, [], "f211", "M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z"] -}; -var faFoursquare = { - prefix: "fab", - iconName: "foursquare", - icon: [368, 512, [], "f180", "M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z"] -}; -var faFreeCodeCamp = { - prefix: "fab", - iconName: "free-code-camp", - icon: [576, 512, [], "f2c5", "M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z"] -}; -var faFreebsd = { - prefix: "fab", - iconName: "freebsd", - icon: [448, 512, [], "f3a4", "M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z"] -}; -var faFulcrum = { - prefix: "fab", - iconName: "fulcrum", - icon: [320, 512, [], "f50b", "M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z"] -}; -var faGalacticRepublic = { - prefix: "fab", - iconName: "galactic-republic", - icon: [496, 512, [], "f50c", "M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z"] -}; -var faGalacticSenate = { - prefix: "fab", - iconName: "galactic-senate", - icon: [512, 512, [], "f50d", "M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z"] -}; -var faGetPocket = { - prefix: "fab", - iconName: "get-pocket", - icon: [448, 512, [], "f265", "M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z"] -}; -var faGg = { - prefix: "fab", - iconName: "gg", - icon: [512, 512, [], "f260", "M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z"] -}; -var faGgCircle = { - prefix: "fab", - iconName: "gg-circle", - icon: [512, 512, [], "f261", "M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z"] -}; -var faGit = { - prefix: "fab", - iconName: "git", - icon: [512, 512, [], "f1d3", "M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z"] -}; -var faGitAlt = { - prefix: "fab", - iconName: "git-alt", - icon: [448, 512, [], "f841", "M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"] -}; -var faGitSquare = { - prefix: "fab", - iconName: "git-square", - icon: [448, 512, [], "f1d2", "M100.59 334.24c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52.01-5.09 3.29-9.4 6.6-13.46zm27.95-116.64c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47.75-44.47zM448 80v352a48 48 0 0 1-48 48H48a48 48 0 0 1-48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.62 127 243.88 127c-14.48 0-22.88 7.84-22.88 22.31zM199.18 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.23 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.35 81.53 385 127.52 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.84l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.52h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z"] -}; -var faGithub = { - prefix: "fab", - iconName: "github", - icon: [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"] -}; -var faGithubAlt = { - prefix: "fab", - iconName: "github-alt", - icon: [480, 512, [], "f113", "M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"] -}; -var faGithubSquare = { - prefix: "fab", - iconName: "github-square", - icon: [448, 512, [], "f092", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z"] -}; -var faGitkraken = { - prefix: "fab", - iconName: "gitkraken", - icon: [592, 512, [], "f3a6", "M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z"] -}; -var faGitlab = { - prefix: "fab", - iconName: "gitlab", - icon: [512, 512, [], "f296", "M105.2 24.9c-3.1-8.9-15.7-8.9-18.9 0L29.8 199.7h132c-.1 0-56.6-174.8-56.6-174.8zM.9 287.7c-2.6 8 .3 16.9 7.1 22l247.9 184-226.2-294zm160.8-88l94.3 294 94.3-294zm349.4 88l-28.8-88-226.3 294 247.9-184c6.9-5.1 9.7-14 7.2-22zM425.7 24.9c-3.1-8.9-15.7-8.9-18.9 0l-56.6 174.8h132z"] -}; -var faGitter = { - prefix: "fab", - iconName: "gitter", - icon: [384, 512, [], "f426", "M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z"] -}; -var faGlide = { - prefix: "fab", - iconName: "glide", - icon: [448, 512, [], "f2a5", "M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z"] -}; -var faGlideG = { - prefix: "fab", - iconName: "glide-g", - icon: [448, 512, [], "f2a6", "M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z"] -}; -var faGofore = { - prefix: "fab", - iconName: "gofore", - icon: [400, 512, [], "f3a7", "M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z"] -}; -var faGoodreads = { - prefix: "fab", - iconName: "goodreads", - icon: [448, 512, [], "f3a8", "M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z"] -}; -var faGoodreadsG = { - prefix: "fab", - iconName: "goodreads-g", - icon: [384, 512, [], "f3a9", "M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z"] -}; -var faGoogle = { - prefix: "fab", - iconName: "google", - icon: [488, 512, [], "f1a0", "M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"] -}; -var faGoogleDrive = { - prefix: "fab", - iconName: "google-drive", - icon: [512, 512, [], "f3aa", "M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z"] -}; -var faGooglePay = { - prefix: "fab", - iconName: "google-pay", - icon: [640, 512, [], "e079", "M105.72,215v41.25h57.1a49.66,49.66,0,0,1-21.14,32.6c-9.54,6.55-21.72,10.28-36,10.28-27.6,0-50.93-18.91-59.3-44.22a65.61,65.61,0,0,1,0-41l0,0c8.37-25.46,31.7-44.37,59.3-44.37a56.43,56.43,0,0,1,40.51,16.08L176.47,155a101.24,101.24,0,0,0-70.75-27.84,105.55,105.55,0,0,0-94.38,59.11,107.64,107.64,0,0,0,0,96.18v.15a105.41,105.41,0,0,0,94.38,59c28.47,0,52.55-9.53,70-25.91,20-18.61,31.41-46.15,31.41-78.91A133.76,133.76,0,0,0,205.38,215Zm389.41-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46,0-39.34,8.34-50.5,24.86l20.85,13.26q11.45-17,31.26-17a34.05,34.05,0,0,1,22.75,8.79A28.14,28.14,0,0,1,487.79,248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44,0-29.65,3.88-39.49,11.77s-14.82,18.31-14.82,31.56a39.74,39.74,0,0,0,13.94,31.27c9.25,8.34,21,12.51,34.79,12.51,16.29,0,29.21-7.3,39-21.89h1v17.72h22.61V250C510.25,233.45,505.26,220.34,495.13,211ZM475.9,300.3a37.32,37.32,0,0,1-26.57,11.16A28.61,28.61,0,0,1,431,305.21a19.41,19.41,0,0,1-7.77-15.63c0-7,3.22-12.81,9.54-17.42s14.53-7,24.07-7C470,265,480.3,268,487.64,273.94,487.64,284.07,483.68,292.85,475.9,300.3Zm-93.65-142A55.71,55.71,0,0,0,341.74,142H279.07V328.74H302.7V253.1h39c16,0,29.5-5.36,40.51-15.93.88-.89,1.76-1.79,2.65-2.68A54.45,54.45,0,0,0,382.25,158.26Zm-16.58,62.23a30.65,30.65,0,0,1-23.34,9.68H302.7V165h39.63a32,32,0,0,1,22.6,9.23A33.18,33.18,0,0,1,365.67,220.49ZM614.31,201,577.77,292.7h-.45L539.9,201H514.21L566,320.55l-29.35,64.32H561L640,201Z"] -}; -var faGooglePlay = { - prefix: "fab", - iconName: "google-play", - icon: [512, 512, [], "f3ab", "M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z"] -}; -var faGooglePlus = { - prefix: "fab", - iconName: "google-plus", - icon: [512, 512, [], "f2b3", "M256,8C119.1,8,8,119.1,8,256S119.1,504,256,504,504,392.9,504,256,392.9,8,256,8ZM185.3,380a124,124,0,0,1,0-248c31.3,0,60.1,11,83,32.3l-33.6,32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9,0-77.2,35.5-77.2,78.1S142.3,334,185.3,334c32.6,0,64.9-19.1,70.1-53.3H185.3V238.1H302.2a109.2,109.2,0,0,1,1.9,20.7c0,70.8-47.5,121.2-118.8,121.2ZM415.5,273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5Z"] -}; -var faGooglePlusG = { - prefix: "fab", - iconName: "google-plus-g", - icon: [640, 512, [], "f0d5", "M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z"] -}; -var faGooglePlusSquare = { - prefix: "fab", - iconName: "google-plus-square", - icon: [448, 512, [], "f0d4", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z"] -}; -var faGoogleWallet = { - prefix: "fab", - iconName: "google-wallet", - icon: [448, 512, [], "f1ee", "M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z"] -}; -var faGratipay = { - prefix: "fab", - iconName: "gratipay", - icon: [496, 512, [], "f184", "M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z"] -}; -var faGrav = { - prefix: "fab", - iconName: "grav", - icon: [512, 512, [], "f2d6", "M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z"] -}; -var faGripfire = { - prefix: "fab", - iconName: "gripfire", - icon: [384, 512, [], "f3ac", "M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z"] -}; -var faGrunt = { - prefix: "fab", - iconName: "grunt", - icon: [384, 512, [], "f3ad", "M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z"] -}; -var faGuilded = { - prefix: "fab", - iconName: "guilded", - icon: [448, 512, [], "e07e", "M443.427,64H4.571c0,103.26,22.192,180.06,43.418,222.358C112.046,414.135,224,448,225.256,448a312.824,312.824,0,0,0,140.55-103.477c25.907-33.923,53.1-87.19,65.916-145.761H171.833c4.14,36.429,22.177,67.946,45.1,86.944h88.589c-17.012,28.213-48.186,54.4-80.456,69.482-31.232-13.259-69.09-46.544-96.548-98.362-26.726-53.833-27.092-105.883-27.092-105.883H437.573A625.91,625.91,0,0,0,443.427,64Z"] -}; -var faGulp = { - prefix: "fab", - iconName: "gulp", - icon: [256, 512, [], "f3ae", "M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z"] -}; -var faHackerNews = { - prefix: "fab", - iconName: "hacker-news", - icon: [448, 512, [], "f1d4", "M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"] -}; -var faHackerNewsSquare = { - prefix: "fab", - iconName: "hacker-news-square", - icon: [448, 512, [], "f3af", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"] -}; -var faHackerrank = { - prefix: "fab", - iconName: "hackerrank", - icon: [512, 512, [], "f5f7", "M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z"] -}; -var faHips = { - prefix: "fab", - iconName: "hips", - icon: [640, 512, [], "f452", "M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z"] -}; -var faHireAHelper = { - prefix: "fab", - iconName: "hire-a-helper", - icon: [512, 512, [], "f3b0", "M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z"] -}; -var faHive = { - prefix: "fab", - iconName: "hive", - icon: [512, 512, [], "e07f", "M260.353,254.878,131.538,33.1a2.208,2.208,0,0,0-3.829.009L.3,254.887A2.234,2.234,0,0,0,.3,257.122L129.116,478.9a2.208,2.208,0,0,0,3.83-.009L260.358,257.113A2.239,2.239,0,0,0,260.353,254.878Zm39.078-25.713a2.19,2.19,0,0,0,1.9,1.111h66.509a2.226,2.226,0,0,0,1.9-3.341L259.115,33.111a2.187,2.187,0,0,0-1.9-1.111H190.707a2.226,2.226,0,0,0-1.9,3.341ZM511.7,254.886,384.9,33.112A2.2,2.2,0,0,0,382.99,32h-66.6a2.226,2.226,0,0,0-1.906,3.34L440.652,256,314.481,476.66a2.226,2.226,0,0,0,1.906,3.34h66.6a2.2,2.2,0,0,0,1.906-1.112L511.7,257.114A2.243,2.243,0,0,0,511.7,254.886ZM366.016,284.917H299.508a2.187,2.187,0,0,0-1.9,1.111l-108.8,190.631a2.226,2.226,0,0,0,1.9,3.341h66.509a2.187,2.187,0,0,0,1.9-1.111l108.8-190.631A2.226,2.226,0,0,0,366.016,284.917Z"] -}; -var faHooli = { - prefix: "fab", - iconName: "hooli", - icon: [640, 512, [], "f427", "M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z"] -}; -var faHornbill = { - prefix: "fab", - iconName: "hornbill", - icon: [512, 512, [], "f592", "M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z"] -}; -var faHotjar = { - prefix: "fab", - iconName: "hotjar", - icon: [448, 512, [], "f3b1", "M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z"] -}; -var faHouzz = { - prefix: "fab", - iconName: "houzz", - icon: [448, 512, [], "f27c", "M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z"] -}; -var faHtml5 = { - prefix: "fab", - iconName: "html5", - icon: [384, 512, [], "f13b", "M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"] -}; -var faHubspot = { - prefix: "fab", - iconName: "hubspot", - icon: [512, 512, [], "f3b2", "M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z"] -}; -var faIdeal = { - prefix: "fab", - iconName: "ideal", - icon: [576, 512, [], "e013", "M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z"] -}; -var faImdb = { - prefix: "fab", - iconName: "imdb", - icon: [448, 512, [], "f2d8", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.3 229.2H21c.1-.1.2-.3.3-.4zM97 319.8H64V192h33zm113.2 0h-28.7v-86.4l-11.6 86.4h-20.6l-12.2-84.5v84.5h-29V192h42.8c3.3 19.8 6 39.9 8.7 59.9l7.6-59.9h43zm11.4 0V192h24.6c17.6 0 44.7-1.6 49 20.9 1.7 7.6 1.4 16.3 1.4 24.4 0 88.5 11.1 82.6-75 82.5zm160.9-29.2c0 15.7-2.4 30.9-22.2 30.9-9 0-15.2-3-20.9-9.8l-1.9 8.1h-29.8V192h31.7v41.7c6-6.5 12-9.2 20.9-9.2 21.4 0 22.2 12.8 22.2 30.1zM265 229.9c0-9.7 1.6-16-10.3-16v83.7c12.2.3 10.3-8.7 10.3-18.4zm85.5 26.1c0-5.4 1.1-12.7-6.2-12.7-6 0-4.9 8.9-4.9 12.7 0 .6-1.1 39.6 1.1 44.7.8 1.6 2.2 2.4 3.8 2.4 7.8 0 6.2-9 6.2-14.4z"] -}; -var faInnosoft = { - prefix: "fab", - iconName: "innosoft", - icon: [448, 512, [], "e080", "M422.559,159.71a27.379,27.379,0,0,0-13.866-23.337,26.42,26.42,0,0,0-26.211.133L73.943,314.647V176.261a11.955,11.955,0,0,1,6.047-10.34L218.066,86.208a12.153,12.153,0,0,1,11.922.025l32.656,18.853L112.581,191.723v56L359.642,105.086,241.129,36.679c-10.992-6.129-22.3-6.255-33.8-.27l-164.6,95.026c-10.634,6.12-16.771,16.39-17.29,29.124l0,191.5c.17,10.135,5.08,18.672,13.474,23.428a27.037,27.037,0,0,0,26.736-.045L374.057,197.376V335.657a11.976,11.976,0,0,1-5.92,10.368L230.025,425.77a12.175,12.175,0,0,1-11.937.062l-32.723-18.9,150.051-86.627v-56L88.367,406.932l118.794,68.583a33.88,33.88,0,0,0,34.25-.327l164.527-94.995c10.746-6.631,16.649-17.118,16.624-29.528Z"] -}; -var faInstagram = { - prefix: "fab", - iconName: "instagram", - icon: [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"] -}; -var faInstagramSquare = { - prefix: "fab", - iconName: "instagram-square", - icon: [448, 512, [], "e055", "M224,202.66A53.34,53.34,0,1,0,277.36,256,53.38,53.38,0,0,0,224,202.66Zm124.71-41a54,54,0,0,0-30.41-30.41c-21-8.29-71-6.43-94.3-6.43s-73.25-1.93-94.31,6.43a54,54,0,0,0-30.41,30.41c-8.28,21-6.43,71.05-6.43,94.33S91,329.26,99.32,350.33a54,54,0,0,0,30.41,30.41c21,8.29,71,6.43,94.31,6.43s73.24,1.93,94.3-6.43a54,54,0,0,0,30.41-30.41c8.35-21,6.43-71.05,6.43-94.33S357.1,182.74,348.75,161.67ZM224,338a82,82,0,1,1,82-82A81.9,81.9,0,0,1,224,338Zm85.38-148.3a19.14,19.14,0,1,1,19.13-19.14A19.1,19.1,0,0,1,309.42,189.74ZM400,32H48A48,48,0,0,0,0,80V432a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V80A48,48,0,0,0,400,32ZM382.88,322c-1.29,25.63-7.14,48.34-25.85,67s-41.4,24.63-67,25.85c-26.41,1.49-105.59,1.49-132,0-25.63-1.29-48.26-7.15-67-25.85s-24.63-41.42-25.85-67c-1.49-26.42-1.49-105.61,0-132,1.29-25.63,7.07-48.34,25.85-67s41.47-24.56,67-25.78c26.41-1.49,105.59-1.49,132,0,25.63,1.29,48.33,7.15,67,25.85s24.63,41.42,25.85,67.05C384.37,216.44,384.37,295.56,382.88,322Z"] -}; -var faInstalod = { - prefix: "fab", - iconName: "instalod", - icon: [512, 512, [], "e081", "M153.384,480H387.113L502.554,275.765,204.229,333.211ZM504.726,240.078,387.113,32H155.669L360.23,267.9ZM124.386,48.809,7.274,256,123.236,461.154,225.627,165.561Z"] -}; -var faIntercom = { - prefix: "fab", - iconName: "intercom", - icon: [448, 512, [], "f7af", "M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z"] -}; -var faInternetExplorer = { - prefix: "fab", - iconName: "internet-explorer", - icon: [512, 512, [], "f26b", "M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z"] -}; -var faInvision = { - prefix: "fab", - iconName: "invision", - icon: [448, 512, [], "f7b0", "M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z"] -}; -var faIoxhost = { - prefix: "fab", - iconName: "ioxhost", - icon: [640, 512, [], "f208", "M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z"] -}; -var faItchIo = { - prefix: "fab", - iconName: "itch-io", - icon: [512, 512, [], "f83a", "M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z"] -}; -var faItunes = { - prefix: "fab", - iconName: "itunes", - icon: [448, 512, [], "f3b4", "M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z"] -}; -var faItunesNote = { - prefix: "fab", - iconName: "itunes-note", - icon: [384, 512, [], "f3b5", "M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z"] -}; -var faJava = { - prefix: "fab", - iconName: "java", - icon: [384, 512, [], "f4e4", "M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z"] -}; -var faJediOrder = { - prefix: "fab", - iconName: "jedi-order", - icon: [448, 512, [], "f50e", "M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z"] -}; -var faJenkins = { - prefix: "fab", - iconName: "jenkins", - icon: [512, 512, [], "f3b6", "M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z"] -}; -var faJira = { - prefix: "fab", - iconName: "jira", - icon: [496, 512, [], "f7b1", "M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z"] -}; -var faJoget = { - prefix: "fab", - iconName: "joget", - icon: [496, 512, [], "f3b7", "M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z"] -}; -var faJoomla = { - prefix: "fab", - iconName: "joomla", - icon: [448, 512, [], "f1aa", "M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z"] -}; -var faJs = { - prefix: "fab", - iconName: "js", - icon: [448, 512, [], "f3b8", "M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"] -}; -var faJsSquare = { - prefix: "fab", - iconName: "js-square", - icon: [448, 512, [], "f3b9", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"] -}; -var faJsfiddle = { - prefix: "fab", - iconName: "jsfiddle", - icon: [576, 512, [], "f1cc", "M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z"] -}; -var faKaggle = { - prefix: "fab", - iconName: "kaggle", - icon: [320, 512, [], "f5fa", "M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z"] -}; -var faKeybase = { - prefix: "fab", - iconName: "keybase", - icon: [448, 512, [], "f4f5", "M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z"] -}; -var faKeycdn = { - prefix: "fab", - iconName: "keycdn", - icon: [512, 512, [], "f3ba", "M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160"] -}; -var faKickstarter = { - prefix: "fab", - iconName: "kickstarter", - icon: [448, 512, [], "f3bb", "M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z"] -}; -var faKickstarterK = { - prefix: "fab", - iconName: "kickstarter-k", - icon: [384, 512, [], "f3bc", "M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z"] -}; -var faKorvue = { - prefix: "fab", - iconName: "korvue", - icon: [446, 512, [], "f42f", "M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z"] -}; -var faLaravel = { - prefix: "fab", - iconName: "laravel", - icon: [512, 512, [], "f3bd", "M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z"] -}; -var faLastfm = { - prefix: "fab", - iconName: "lastfm", - icon: [512, 512, [], "f202", "M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z"] -}; -var faLastfmSquare = { - prefix: "fab", - iconName: "lastfm-square", - icon: [448, 512, [], "f203", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z"] -}; -var faLeanpub = { - prefix: "fab", - iconName: "leanpub", - icon: [576, 512, [], "f212", "M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z"] -}; -var faLess = { - prefix: "fab", - iconName: "less", - icon: [640, 512, [], "f41d", "M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z"] -}; -var faLine = { - prefix: "fab", - iconName: "line", - icon: [448, 512, [], "f3c0", "M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z"] -}; -var faLinkedin = { - prefix: "fab", - iconName: "linkedin", - icon: [448, 512, [], "f08c", "M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"] -}; -var faLinkedinIn = { - prefix: "fab", - iconName: "linkedin-in", - icon: [448, 512, [], "f0e1", "M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"] -}; -var faLinode = { - prefix: "fab", - iconName: "linode", - icon: [448, 512, [], "f2b8", "M437.4 226.3c-.3-.9-.9-1.4-1.4-2l-70-38.6c-.9-.6-2-.6-3.1 0l-58.9 36c-.9.6-1.4 1.7-1.4 2.6l-.9 31.4-24-16c-.9-.6-2.3-.6-3.1 0L240 260.9l-1.4-35.1c0-.9-.6-2-1.4-2.3l-36-24.3 33.7-17.4c1.1-.6 1.7-1.7 1.7-2.9l-5.7-132.3c0-.9-.9-2-1.7-2.6L138.6.3c-.9-.3-1.7-.3-2.3-.3L12.6 38.6c-1.4.6-2.3 2-2 3.7L38 175.4c.9 3.4 34 27.4 38.6 30.9l-26.9 12.9c-1.4.9-2 2.3-1.7 3.4l20.6 100.3c.6 2.9 23.7 23.1 27.1 26.3l-17.4 10.6c-.9.6-1.7 2-1.4 3.1 1.4 7.1 15.4 77.7 16.9 79.1l65.1 69.1c.6.6 1.4.6 2.3.9.6 0 1.1-.3 1.7-.6l83.7-66.9c.9-.6 1.1-1.4 1.1-2.3l-2-46 28 23.7c1.1.9 2.9.9 4 0l66.9-53.4c.9-.6 1.1-1.4 1.1-2.3l2.3-33.4 20.3 14c1.1.9 2.6.9 3.7 0l54.6-43.7c.6-.3 1.1-1.1 1.1-2 .9-6.5 10.3-70.8 9.7-72.8zm-204.8 4.8l4 92.6-90.6 61.2-14-96.6 100.6-57.2zm-7.7-180l5.4 126-106.6 55.4L104 97.7l120.9-46.6zM44 173.1L18 48l79.7 49.4 19.4 132.9L44 173.1zm30.6 147.8L55.7 230l70 58.3 13.7 93.4-64.8-60.8zm24.3 117.7l-13.7-67.1 61.7 60.9 9.7 67.4-57.7-61.2zm64.5 64.5l-10.6-70.9 85.7-61.4 3.1 70-78.2 62.3zm82-115.1c0-3.4.9-22.9-2-25.1l-24.3-20 22.3-14.9c2.3-1.7 1.1-5.7 1.1-8l29.4 22.6.6 68.3-27.1-22.9zm94.3-25.4l-60.9 48.6-.6-68.6 65.7-46.9-4.2 66.9zm27.7-25.7l-19.1-13.4 2-34c.3-.9-.3-2-1.1-2.6L308 259.7l.6-30 64.6 40.6-5.8 66.6zm54.6-39.8l-48.3 38.3 5.7-65.1 51.1-36.6-8.5 63.4z"] -}; -var faLinux = { - prefix: "fab", - iconName: "linux", - icon: [448, 512, [], "f17c", "M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z"] -}; -var faLyft = { - prefix: "fab", - iconName: "lyft", - icon: [512, 512, [], "f3c3", "M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z"] -}; -var faMagento = { - prefix: "fab", - iconName: "magento", - icon: [448, 512, [], "f3c4", "M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z"] -}; -var faMailchimp = { - prefix: "fab", - iconName: "mailchimp", - icon: [448, 512, [], "f59e", "M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z"] -}; -var faMandalorian = { - prefix: "fab", - iconName: "mandalorian", - icon: [448, 512, [], "f50f", "M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z"] -}; -var faMarkdown = { - prefix: "fab", - iconName: "markdown", - icon: [640, 512, [], "f60f", "M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"] -}; -var faMastodon = { - prefix: "fab", - iconName: "mastodon", - icon: [448, 512, [], "f4f6", "M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"] -}; -var faMaxcdn = { - prefix: "fab", - iconName: "maxcdn", - icon: [512, 512, [], "f136", "M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z"] -}; -var faMdb = { - prefix: "fab", - iconName: "mdb", - icon: [576, 512, [], "f8ca", "M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z"] -}; -var faMedapps = { - prefix: "fab", - iconName: "medapps", - icon: [320, 512, [], "f3c6", "M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z"] -}; -var faMedium = { - prefix: "fab", - iconName: "medium", - icon: [448, 512, [], "f23a", "M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z"] -}; -var faMediumM = { - prefix: "fab", - iconName: "medium-m", - icon: [512, 512, [], "f3c7", "M71.5 142.3c.6-5.9-1.7-11.8-6.1-15.8L20.3 72.1V64h140.2l108.4 237.7L364.2 64h133.7v8.1l-38.6 37c-3.3 2.5-5 6.7-4.3 10.8v272c-.7 4.1 1 8.3 4.3 10.8l37.7 37v8.1H307.3v-8.1l39.1-37.9c3.8-3.8 3.8-5 3.8-10.8V171.2L241.5 447.1h-14.7L100.4 171.2v184.9c-1.1 7.8 1.5 15.6 7 21.2l50.8 61.6v8.1h-144v-8L65 377.3c5.4-5.6 7.9-13.5 6.5-21.2V142.3z"] -}; -var faMedrt = { - prefix: "fab", - iconName: "medrt", - icon: [544, 512, [], "f3c8", "M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z"] -}; -var faMeetup = { - prefix: "fab", - iconName: "meetup", - icon: [512, 512, [], "f2e0", "M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z"] -}; -var faMegaport = { - prefix: "fab", - iconName: "megaport", - icon: [496, 512, [], "f5a3", "M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z"] -}; -var faMendeley = { - prefix: "fab", - iconName: "mendeley", - icon: [640, 512, [], "f7b3", "M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z"] -}; -var faMicroblog = { - prefix: "fab", - iconName: "microblog", - icon: [448, 512, [], "e01a", "M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z"] -}; -var faMicrosoft = { - prefix: "fab", - iconName: "microsoft", - icon: [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"] -}; -var faMix = { - prefix: "fab", - iconName: "mix", - icon: [448, 512, [], "f3cb", "M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z"] -}; -var faMixcloud = { - prefix: "fab", - iconName: "mixcloud", - icon: [640, 512, [], "f289", "M424.43 219.729C416.124 134.727 344.135 68 256.919 68c-72.266 0-136.224 46.516-159.205 114.074-54.545 8.029-96.63 54.822-96.63 111.582 0 62.298 50.668 112.966 113.243 112.966h289.614c52.329 0 94.969-42.362 94.969-94.693 0-45.131-32.118-83.063-74.48-92.2zm-20.489 144.53H114.327c-39.04 0-70.881-31.564-70.881-70.604s31.841-70.604 70.881-70.604c18.827 0 36.548 7.475 49.838 20.766 19.963 19.963 50.133-10.227 30.18-30.18-14.675-14.398-32.672-24.365-52.053-29.349 19.935-44.3 64.79-73.926 114.628-73.926 69.496 0 125.979 56.483 125.979 125.702 0 13.568-2.215 26.857-6.369 39.594-8.943 27.517 32.133 38.939 40.147 13.29 2.769-8.306 4.984-16.889 6.369-25.472 19.381 7.476 33.502 26.303 33.502 48.453 0 28.795-23.535 52.33-52.607 52.33zm235.069-52.33c0 44.024-12.737 86.386-37.102 122.657-4.153 6.092-10.798 9.414-17.72 9.414-16.317 0-27.127-18.826-17.443-32.949 19.381-29.349 29.903-63.682 29.903-99.122s-10.521-69.773-29.903-98.845c-15.655-22.831 19.361-47.24 35.163-23.534 24.366 35.993 37.102 78.356 37.102 122.379zm-70.88 0c0 31.565-9.137 62.021-26.857 88.325-4.153 6.091-10.798 9.136-17.72 9.136-17.201 0-27.022-18.979-17.443-32.948 13.013-19.104 19.658-41.255 19.658-64.513 0-22.981-6.645-45.408-19.658-64.512-15.761-22.986 19.008-47.095 35.163-23.535 17.719 26.026 26.857 56.483 26.857 88.047z"] -}; -var faMixer = { - prefix: "fab", - iconName: "mixer", - icon: [512, 512, [], "e056", "M114.57,76.07a45.71,45.71,0,0,0-67.51-6.41c-17.58,16.18-19,43.52-4.75,62.77l91.78,123L41.76,379.58c-14.23,19.25-13.11,46.59,4.74,62.77A45.71,45.71,0,0,0,114,435.94L242.89,262.7a12.14,12.14,0,0,0,0-14.23ZM470.24,379.58,377.91,255.45l91.78-123c14.22-19.25,12.83-46.59-4.75-62.77a45.71,45.71,0,0,0-67.51,6.41l-128,172.12a12.14,12.14,0,0,0,0,14.23L398,435.94a45.71,45.71,0,0,0,67.51,6.41C483.35,426.17,484.47,398.83,470.24,379.58Z"] -}; -var faMizuni = { - prefix: "fab", - iconName: "mizuni", - icon: [496, 512, [], "f3cc", "M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z"] -}; -var faModx = { - prefix: "fab", - iconName: "modx", - icon: [448, 512, [], "f285", "M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z"] -}; -var faMonero = { - prefix: "fab", - iconName: "monero", - icon: [496, 512, [], "f3d0", "M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z"] -}; -var faNapster = { - prefix: "fab", - iconName: "napster", - icon: [496, 512, [], "f3d2", "M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z"] -}; -var faNeos = { - prefix: "fab", - iconName: "neos", - icon: [512, 512, [], "f612", "M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z"] -}; -var faNimblr = { - prefix: "fab", - iconName: "nimblr", - icon: [384, 512, [], "f5a8", "M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z"] -}; -var faNode = { - prefix: "fab", - iconName: "node", - icon: [640, 512, [], "f419", "M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z"] -}; -var faNodeJs = { - prefix: "fab", - iconName: "node-js", - icon: [448, 512, [], "f3d3", "M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z"] -}; -var faNpm = { - prefix: "fab", - iconName: "npm", - icon: [576, 512, [], "f3d4", "M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z"] -}; -var faNs8 = { - prefix: "fab", - iconName: "ns8", - icon: [640, 512, [], "f3d5", "M104.324,269.172h26.067V242.994H104.324Zm52.466-26.178-.055-26.178v-.941a39.325,39.325,0,0,0-78.644.941v.166h26.4v-.166a12.98,12.98,0,0,1,25.956,0v26.178Zm52.356,25.846a91.1,91.1,0,0,1-91.1,91.1h-.609a91.1,91.1,0,0,1-91.1-91.1H0v.166A117.33,117.33,0,0,0,117.44,386.28h.775A117.331,117.331,0,0,0,235.49,268.84V242.828H209.146Zm-157.233,0a65.362,65.362,0,0,0,130.723,0H156.292a39.023,39.023,0,0,1-78.035,0V242.883H51.968v-26.62A65.42,65.42,0,0,1,182.8,217.48v25.293h26.344V217.48a91.761,91.761,0,0,0-183.522,0v25.4H51.913Zm418.4-71.173c13.67,0,24.573,6.642,30.052,18.264l.719,1.549,23.245-11.511-.609-1.439c-8.025-19.26-28.5-31.27-53.407-31.27-23.134,0-43.611,11.4-50.972,28.447-.123,26.876-.158,23.9,0,24.85,4.7,11.013,14.555,19.37,28.668,24.241a102.033,102.033,0,0,0,19.813,3.984c5.479.72,10.626,1.384,15.829,3.1,6.364,2.1,10.46,5.257,12.84,9.851v9.851c-3.708,7.527-13.781,12.342-25.791,12.342-14.334,0-25.956-6.918-31.933-19.039l-.72-1.494L415.026,280.9l.553,1.439c7.915,19.426,29.609,32.044,55.289,32.044,23.632,0,44.608-11.4,52.3-28.447l.166-25.9-.166-.664c-4.87-11.014-15.219-19.647-28.944-24.241-7.693-2.712-14.335-3.6-20.7-4.427a83.777,83.777,0,0,1-14.832-2.878c-6.31-1.937-10.4-5.092-12.619-9.63v-8.412C449.45,202.427,458.969,197.667,470.315,197.667ZM287.568,311.344h26.067v-68.4H287.568Zm352.266-53.3c-2.933-6.254-8.3-12.01-15.441-16.714A37.99,37.99,0,0,0,637.4,226l.166-25.347-.166-.664C630.038,184,610.667,173.26,589.25,173.26S548.461,184,541.1,199.992l-.166,25.347.166.664a39.643,39.643,0,0,0,13.006,15.331c-7.2,4.7-12.508,10.46-15.441,16.714l-.166,28.889.166.72c7.582,15.994,27.893,26.731,50.585,26.731s43.057-10.737,50.584-26.731l.166-28.89Zm-73.22-50.806c3.6-6.31,12.563-10.516,22.58-10.516s19.038,4.206,22.636,10.516v13.725c-3.542,6.2-12.563,10.349-22.636,10.349s-19.094-4.15-22.58-10.349Zm47.319,72.169c-3.764,6.641-13.338,10.9-24.683,10.9-11.125,0-20.976-4.372-24.684-10.9V263.25c3.708-6.309,13.5-10.515,24.684-10.515,11.345,0,20.919,4.15,24.683,10.515ZM376.4,265.962l-59.827-89.713h-29v40.623h26.51v.387l62.539,94.085H402.3V176.249H376.4Z"] -}; -var faNutritionix = { - prefix: "fab", - iconName: "nutritionix", - icon: [400, 512, [], "f3d6", "M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z"] -}; -var faOctopusDeploy = { - prefix: "fab", - iconName: "octopus-deploy", - icon: [512, 512, [], "e082", "M455.6,349.2c-45.891-39.09-36.67-77.877-16.095-128.11C475.16,134.04,415.967,34.14,329.93,8.3,237.04-19.6,134.252,24.341,99.677,117.147a180.862,180.862,0,0,0-10.988,73.544c1.733,29.543,14.717,52.97,24.09,80.3,17.2,50.161-28.1,92.743-66.662,117.582-46.806,30.2-36.319,39.857-8.428,41.858,23.378,1.68,44.478-4.548,65.265-15.045,9.2-4.647,40.687-18.931,45.13-28.588C135.9,413.388,111.122,459.5,126.621,488.9c19.1,36.229,67.112-31.77,76.709-45.812,8.591-12.572,42.963-81.279,63.627-46.926,18.865,31.361,8.6,76.391,35.738,104.622,32.854,34.2,51.155-18.312,51.412-44.221.163-16.411-6.1-95.852,29.9-59.944C405.428,418,436.912,467.8,472.568,463.642c38.736-4.516-22.123-67.967-28.262-78.695,5.393,4.279,53.665,34.128,53.818,9.52C498.234,375.678,468.039,359.8,455.6,349.2Z"] -}; -var faOdnoklassniki = { - prefix: "fab", - iconName: "odnoklassniki", - icon: [320, 512, [], "f263", "M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z"] -}; -var faOdnoklassnikiSquare = { - prefix: "fab", - iconName: "odnoklassniki-square", - icon: [448, 512, [], "f264", "M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z"] -}; -var faOldRepublic = { - prefix: "fab", - iconName: "old-republic", - icon: [496, 512, [], "f510", "M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z"] -}; -var faOpencart = { - prefix: "fab", - iconName: "opencart", - icon: [640, 512, [], "f23d", "M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z"] -}; -var faOpenid = { - prefix: "fab", - iconName: "openid", - icon: [448, 512, [], "f19b", "M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z"] -}; -var faOpera = { - prefix: "fab", - iconName: "opera", - icon: [496, 512, [], "f26a", "M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z"] -}; -var faOptinMonster = { - prefix: "fab", - iconName: "optin-monster", - icon: [576, 512, [], "f23c", "M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z"] -}; -var faOrcid = { - prefix: "fab", - iconName: "orcid", - icon: [512, 512, [], "f8d2", "M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z"] -}; -var faOsi = { - prefix: "fab", - iconName: "osi", - icon: [512, 512, [], "f41a", "M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z"] -}; -var faPage4 = { - prefix: "fab", - iconName: "page4", - icon: [496, 512, [], "f3d7", "M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z"] -}; -var faPagelines = { - prefix: "fab", - iconName: "pagelines", - icon: [384, 512, [], "f18c", "M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z"] -}; -var faPalfed = { - prefix: "fab", - iconName: "palfed", - icon: [576, 512, [], "f3d8", "M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z"] -}; -var faPatreon = { - prefix: "fab", - iconName: "patreon", - icon: [512, 512, [], "f3d9", "M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z"] -}; -var faPaypal = { - prefix: "fab", - iconName: "paypal", - icon: [384, 512, [], "f1ed", "M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z"] -}; -var faPennyArcade = { - prefix: "fab", - iconName: "penny-arcade", - icon: [640, 512, [], "f704", "M421.91 164.27c-4.49 19.45-1.4 6.06-15.1 65.29l39.73-10.61c-22.34-49.61-17.29-38.41-24.63-54.68zm-206.09 51.11c-20.19 5.4-11.31 3.03-39.63 10.58l4.46 46.19c28.17-7.59 20.62-5.57 34.82-9.34 42.3-9.79 32.85-56.42.35-47.43zm326.16-26.19l-45.47-99.2c-5.69-12.37-19.46-18.84-32.62-15.33-70.27 18.75-38.72 10.32-135.59 36.23a27.618 27.618 0 0 0-18.89 17.41C144.26 113.27 0 153.75 0 226.67c0 33.5 30.67 67.11 80.9 95.37l1.74 17.88a27.891 27.891 0 0 0-17.77 28.67l4.3 44.48c1.39 14.31 13.43 25.21 27.8 25.2 5.18-.01-3.01 1.78 122.53-31.76 12.57-3.37 21.12-15.02 20.58-28.02 216.59 45.5 401.99-5.98 399.89-84.83.01-28.15-22.19-66.56-97.99-104.47zM255.14 298.3l-21.91 5.88-48.44 12.91 2.46 23.55 20.53-5.51 4.51 44.51-115.31 30.78-4.3-44.52 20.02-5.35-11.11-114.64-20.12 5.39-4.35-44.5c178.15-47.54 170.18-46.42 186.22-46.65 56.66-1.13 64.15 71.84 42.55 104.43a86.7 86.7 0 0 1-50.75 33.72zm199.18 16.62l-3.89-39.49 14.9-3.98-6.61-14.68-57.76 15.42-4.1 17.54 19.2-5.12 4.05 39.54-112.85 30.07-4.46-44.43 20.99-5.59 33.08-126.47-17.15 4.56-4.2-44.48c93.36-24.99 65.01-17.41 135.59-36.24l66.67 145.47 20.79-5.56 4.3 44.48-108.55 28.96z"] -}; -var faPerbyte = { - prefix: "fab", - iconName: "perbyte", - icon: [448, 512, [], "e083", "M305.314,284.578H246.6V383.3h58.711q24.423,0,38.193-13.77t13.77-36.11q0-21.826-14.032-35.335T305.314,284.578ZM149.435,128.7H90.724v98.723h58.711q24.42,0,38.19-13.773t13.77-36.107q0-21.826-14.029-35.338T149.435,128.7ZM366.647,32H81.353A81.445,81.445,0,0,0,0,113.352V398.647A81.445,81.445,0,0,0,81.353,480H366.647A81.445,81.445,0,0,0,448,398.647V113.352A81.445,81.445,0,0,0,366.647,32Zm63.635,366.647a63.706,63.706,0,0,1-63.635,63.635H81.353a63.706,63.706,0,0,1-63.635-63.635V113.352A63.706,63.706,0,0,1,81.353,49.718H366.647a63.706,63.706,0,0,1,63.635,63.634ZM305.314,128.7H246.6v98.723h58.711q24.423,0,38.193-13.773t13.77-36.107q0-21.826-14.032-35.338T305.314,128.7Z"] -}; -var faPeriscope = { - prefix: "fab", - iconName: "periscope", - icon: [448, 512, [], "f3da", "M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z"] -}; -var faPhabricator = { - prefix: "fab", - iconName: "phabricator", - icon: [496, 512, [], "f3db", "M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z"] -}; -var faPhoenixFramework = { - prefix: "fab", - iconName: "phoenix-framework", - icon: [640, 512, [], "f3dc", "M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z"] -}; -var faPhoenixSquadron = { - prefix: "fab", - iconName: "phoenix-squadron", - icon: [512, 512, [], "f511", "M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z"] -}; -var faPhp = { - prefix: "fab", - iconName: "php", - icon: [640, 512, [], "f457", "M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z"] -}; -var faPiedPiper = { - prefix: "fab", - iconName: "pied-piper", - icon: [480, 512, [], "f2ae", "M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z"] -}; -var faPiedPiperAlt = { - prefix: "fab", - iconName: "pied-piper-alt", - icon: [576, 512, [], "f1a8", "M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z"] -}; -var faPiedPiperHat = { - prefix: "fab", - iconName: "pied-piper-hat", - icon: [640, 512, [], "f4e5", "M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z"] -}; -var faPiedPiperPp = { - prefix: "fab", - iconName: "pied-piper-pp", - icon: [448, 512, [], "f1a7", "M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z"] -}; -var faPiedPiperSquare = { - prefix: "fab", - iconName: "pied-piper-square", - icon: [448, 512, [], "e01e", "M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z"] -}; -var faPinterest = { - prefix: "fab", - iconName: "pinterest", - icon: [496, 512, [], "f0d2", "M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z"] -}; -var faPinterestP = { - prefix: "fab", - iconName: "pinterest-p", - icon: [384, 512, [], "f231", "M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z"] -}; -var faPinterestSquare = { - prefix: "fab", - iconName: "pinterest-square", - icon: [448, 512, [], "f0d3", "M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z"] -}; -var faPlaystation = { - prefix: "fab", - iconName: "playstation", - icon: [576, 512, [], "f3df", "M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z"] -}; -var faProductHunt = { - prefix: "fab", - iconName: "product-hunt", - icon: [512, 512, [], "f288", "M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z"] -}; -var faPushed = { - prefix: "fab", - iconName: "pushed", - icon: [432, 512, [], "f3e1", "M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z"] -}; -var faPython = { - prefix: "fab", - iconName: "python", - icon: [448, 512, [], "f3e2", "M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"] -}; -var faQq = { - prefix: "fab", - iconName: "qq", - icon: [448, 512, [], "f1d6", "M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z"] -}; -var faQuinscape = { - prefix: "fab", - iconName: "quinscape", - icon: [512, 512, [], "f459", "M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z"] -}; -var faQuora = { - prefix: "fab", - iconName: "quora", - icon: [448, 512, [], "f2c4", "M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z"] -}; -var faRProject = { - prefix: "fab", - iconName: "r-project", - icon: [581, 512, [], "f4f7", "M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"] -}; -var faRaspberryPi = { - prefix: "fab", - iconName: "raspberry-pi", - icon: [407, 512, [], "f7bb", "M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z"] -}; -var faRavelry = { - prefix: "fab", - iconName: "ravelry", - icon: [512, 512, [], "f2d9", "M498.252,234.223c-1.208-10.34-1.7-20.826-3.746-31a310.306,310.306,0,0,0-9.622-36.6,184.068,184.068,0,0,0-30.874-57.5,251.154,251.154,0,0,0-18.818-21.689,237.362,237.362,0,0,0-47.113-36.116A240.8,240.8,0,0,0,331.356,26.65c-11.018-3.1-22.272-5.431-33.515-7.615-6.78-1.314-13.749-1.667-20.627-2.482-.316-.036-.6-.358-.9-.553q-16.143.009-32.288.006c-2.41.389-4.808.925-7.236,1.15a179.331,179.331,0,0,0-34.256,7.1,221.5,221.5,0,0,0-39.768,16.355,281.385,281.385,0,0,0-38.08,24.158c-6.167,4.61-12.268,9.36-17.974,14.518C96.539,88.494,86.34,97.72,76.785,107.555a243.878,243.878,0,0,0-33.648,43.95,206.488,206.488,0,0,0-20.494,44.6,198.2,198.2,0,0,0-7.691,34.759A201.13,201.13,0,0,0,13.4,266.385a299.716,299.716,0,0,0,4.425,40.24,226.865,226.865,0,0,0,16.73,53.3,210.543,210.543,0,0,0,24,39.528,213.589,213.589,0,0,0,26.358,28.416A251.313,251.313,0,0,0,126.7,458.455a287.831,287.831,0,0,0,55.9,25.277,269.5,269.5,0,0,0,40.641,9.835c6.071,1.01,12.275,1.253,18.412,1.873a4.149,4.149,0,0,1,1.19.56h32.289c2.507-.389,5-.937,7.527-1.143,16.336-1.332,32.107-5.335,47.489-10.717A219.992,219.992,0,0,0,379.1,460.322c9.749-6.447,19.395-13.077,28.737-20.1,5.785-4.348,10.988-9.5,16.3-14.457,3.964-3.7,7.764-7.578,11.51-11.5a232.162,232.162,0,0,0,31.427-41.639c9.542-16.045,17.355-32.905,22.3-50.926,2.859-10.413,4.947-21.045,7.017-31.652,1.032-5.279,1.251-10.723,1.87-16.087.036-.317.358-.6.552-.9V236.005A9.757,9.757,0,0,1,498.252,234.223Zm-161.117-1.15s-16.572-2.98-28.47-2.98c-27.2,0-33.57,14.9-33.57,37.04V360.8H201.582V170.062H275.1v31.931c8.924-26.822,26.771-36.189,62.04-36.189Z"] -}; -var faReact = { - prefix: "fab", - iconName: "react", - icon: [512, 512, [], "f41b", "M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z"] -}; -var faReacteurope = { - prefix: "fab", - iconName: "reacteurope", - icon: [576, 512, [], "f75d", "M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z"] -}; -var faReadme = { - prefix: "fab", - iconName: "readme", - icon: [576, 512, [], "f4d5", "M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z"] -}; -var faRebel = { - prefix: "fab", - iconName: "rebel", - icon: [512, 512, [], "f1d0", "M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z"] -}; -var faRedRiver = { - prefix: "fab", - iconName: "red-river", - icon: [448, 512, [], "f3e3", "M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z"] -}; -var faReddit = { - prefix: "fab", - iconName: "reddit", - icon: [512, 512, [], "f1a1", "M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z"] -}; -var faRedditAlien = { - prefix: "fab", - iconName: "reddit-alien", - icon: [512, 512, [], "f281", "M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z"] -}; -var faRedditSquare = { - prefix: "fab", - iconName: "reddit-square", - icon: [448, 512, [], "f1a2", "M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z"] -}; -var faRedhat = { - prefix: "fab", - iconName: "redhat", - icon: [512, 512, [], "f7bc", "M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24"] -}; -var faRenren = { - prefix: "fab", - iconName: "renren", - icon: [512, 512, [], "f18b", "M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z"] -}; -var faReplyd = { - prefix: "fab", - iconName: "replyd", - icon: [448, 512, [], "f3e6", "M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z"] -}; -var faResearchgate = { - prefix: "fab", - iconName: "researchgate", - icon: [448, 512, [], "f4f8", "M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z"] -}; -var faResolving = { - prefix: "fab", - iconName: "resolving", - icon: [496, 512, [], "f3e7", "M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z"] -}; -var faRev = { - prefix: "fab", - iconName: "rev", - icon: [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"] -}; -var faRocketchat = { - prefix: "fab", - iconName: "rocketchat", - icon: [576, 512, [], "f3e8", "M284.046,224.8a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,284.046,224.8Zm-110.45,0a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,173.6,224.8Zm220.923,0a34.114,34.114,0,1,0,34.317,34.113A34.215,34.215,0,0,0,394.519,224.8Zm153.807-55.319c-15.535-24.172-37.31-45.57-64.681-63.618-52.886-34.817-122.374-54-195.666-54a405.975,405.975,0,0,0-72.032,6.357,238.524,238.524,0,0,0-49.51-36.588C99.684-11.7,40.859.711,11.135,11.421A14.291,14.291,0,0,0,5.58,34.782C26.542,56.458,61.222,99.3,52.7,138.252c-33.142,33.9-51.112,74.776-51.112,117.337,0,43.372,17.97,84.248,51.112,118.148,8.526,38.956-26.154,81.816-47.116,103.491a14.284,14.284,0,0,0,5.555,23.34c29.724,10.709,88.549,23.147,155.324-10.2a238.679,238.679,0,0,0,49.51-36.589A405.972,405.972,0,0,0,288,460.14c73.313,0,142.8-19.159,195.667-53.975,27.371-18.049,49.145-39.426,64.679-63.619,17.309-26.923,26.07-55.916,26.07-86.125C574.394,225.4,565.634,196.43,548.326,169.485ZM284.987,409.9a345.65,345.65,0,0,1-89.446-11.5l-20.129,19.393a184.366,184.366,0,0,1-37.138,27.585,145.767,145.767,0,0,1-52.522,14.87c.983-1.771,1.881-3.563,2.842-5.356q30.258-55.68,16.325-100.078c-32.992-25.962-52.778-59.2-52.778-95.4,0-83.1,104.254-150.469,232.846-150.469s232.867,67.373,232.867,150.469C517.854,342.525,413.6,409.9,284.987,409.9Z"] -}; -var faRockrms = { - prefix: "fab", - iconName: "rockrms", - icon: [496, 512, [], "f3e9", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z"] -}; -var faRust = { - prefix: "fab", - iconName: "rust", - icon: [512, 512, [], "e07a", "M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z"] -}; -var faSafari = { - prefix: "fab", - iconName: "safari", - icon: [512, 512, [], "f267", "M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z"] -}; -var faSalesforce = { - prefix: "fab", - iconName: "salesforce", - icon: [640, 512, [], "f83b", "M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z"] -}; -var faSass = { - prefix: "fab", - iconName: "sass", - icon: [640, 512, [], "f41e", "M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z"] -}; -var faSchlix = { - prefix: "fab", - iconName: "schlix", - icon: [448, 512, [], "f3ea", "M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z"] -}; -var faScribd = { - prefix: "fab", - iconName: "scribd", - icon: [384, 512, [], "f28a", "M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z"] -}; -var faSearchengin = { - prefix: "fab", - iconName: "searchengin", - icon: [460, 512, [], "f3eb", "M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z"] -}; -var faSellcast = { - prefix: "fab", - iconName: "sellcast", - icon: [448, 512, [], "f2da", "M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z"] -}; -var faSellsy = { - prefix: "fab", - iconName: "sellsy", - icon: [640, 512, [], "f213", "M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z"] -}; -var faServicestack = { - prefix: "fab", - iconName: "servicestack", - icon: [496, 512, [], "f3ec", "M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z"] -}; -var faShirtsinbulk = { - prefix: "fab", - iconName: "shirtsinbulk", - icon: [448, 512, [], "f214", "M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z"] -}; -var faShopify = { - prefix: "fab", - iconName: "shopify", - icon: [448, 512, [], "e057", "M388.32,104.1a4.66,4.66,0,0,0-4.4-4c-2,0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.76,472S388.72,106.5,388.32,104.1ZM288.65,70.47a116.67,116.67,0,0,0-7.21-17.61C271,32.85,255.42,22,237,22a15,15,0,0,0-4,.4c-.4-.8-1.2-1.2-1.6-2C223.4,11.63,213,7.63,200.58,8c-24,.8-48,18-67.25,48.83-13.61,21.62-24,48.84-26.82,70.06-27.62,8.4-46.83,14.41-47.23,14.81-14,4.4-14.41,4.8-16,18-1.2,10-38,291.82-38,291.82L307.86,504V65.67a41.66,41.66,0,0,0-4.4.4S297.86,67.67,288.65,70.47ZM233.41,87.69c-16,4.8-33.63,10.4-50.84,15.61,4.8-18.82,14.41-37.63,25.62-50,4.4-4.4,10.41-9.61,17.21-12.81C232.21,54.86,233.81,74.48,233.41,87.69ZM200.58,24.44A27.49,27.49,0,0,1,215,28c-6.4,3.2-12.81,8.41-18.81,14.41-15.21,16.42-26.82,42-31.62,66.45-14.42,4.41-28.83,8.81-42,12.81C131.33,83.28,163.75,25.24,200.58,24.44ZM154.15,244.61c1.6,25.61,69.25,31.22,73.25,91.66,2.8,47.64-25.22,80.06-65.65,82.47-48.83,3.2-75.65-25.62-75.65-25.62l10.4-44s26.82,20.42,48.44,18.82c14-.8,19.22-12.41,18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44,27.22-93.27,94.47-97.68,26-1.6,39.23,4.81,39.23,4.81L221.4,225.39s-17.21-8-37.63-6.4C154.15,221,153.75,239.8,154.15,244.61ZM249.42,82.88c0-12-1.6-29.22-7.21-43.63,18.42,3.6,27.22,24,31.23,36.43Q262.63,78.68,249.42,82.88Z"] -}; -var faShopware = { - prefix: "fab", - iconName: "shopware", - icon: [512, 512, [], "f5b5", "M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z"] -}; -var faSimplybuilt = { - prefix: "fab", - iconName: "simplybuilt", - icon: [512, 512, [], "f215", "M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z"] -}; -var faSistrix = { - prefix: "fab", - iconName: "sistrix", - icon: [448, 512, [], "f3ee", "M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z"] -}; -var faSith = { - prefix: "fab", - iconName: "sith", - icon: [448, 512, [], "f512", "M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z"] -}; -var faSketch = { - prefix: "fab", - iconName: "sketch", - icon: [512, 512, [], "f7c6", "M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z"] -}; -var faSkyatlas = { - prefix: "fab", - iconName: "skyatlas", - icon: [640, 512, [], "f216", "M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z"] -}; -var faSkype = { - prefix: "fab", - iconName: "skype", - icon: [448, 512, [], "f17e", "M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z"] -}; -var faSlack = { - prefix: "fab", - iconName: "slack", - icon: [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"] -}; -var faSlackHash = { - prefix: "fab", - iconName: "slack-hash", - icon: [448, 512, [], "f3ef", "M446.2 270.4c-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-30.3-90 45.4-15.1c19.1-6.2 29.1-26.8 23-45.9-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-93.4 31.2-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-45.3 15c-19.1 6.2-29.1 26.8-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l30.3 90L78 354.8c-19 6.2-29.1 26.9-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 93.6-31.3 15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 45.4-15.1c19-6 29.1-26.7 22.9-45.7zm-254.1 47.2l-30.3-90.2 93.5-31.3 30.3 90.2-93.5 31.3z"] -}; -var faSlideshare = { - prefix: "fab", - iconName: "slideshare", - icon: [512, 512, [], "f1e7", "M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z"] -}; -var faSnapchat = { - prefix: "fab", - iconName: "snapchat", - icon: [496, 512, [], "f2ab", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm169.5 338.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z"] -}; -var faSnapchatGhost = { - prefix: "fab", - iconName: "snapchat-ghost", - icon: [512, 512, [], "f2ac", "M510.846 392.673c-5.211 12.157-27.239 21.089-67.36 27.318-2.064 2.786-3.775 14.686-6.507 23.956-1.625 5.566-5.623 8.869-12.128 8.869l-.297-.005c-9.395 0-19.203-4.323-38.852-4.323-26.521 0-35.662 6.043-56.254 20.588-21.832 15.438-42.771 28.764-74.027 27.399-31.646 2.334-58.025-16.908-72.871-27.404-20.714-14.643-29.828-20.582-56.241-20.582-18.864 0-30.736 4.72-38.852 4.72-8.073 0-11.213-4.922-12.422-9.04-2.703-9.189-4.404-21.263-6.523-24.13-20.679-3.209-67.31-11.344-68.498-32.15a10.627 10.627 0 0 1 8.877-11.069c69.583-11.455 100.924-82.901 102.227-85.934.074-.176.155-.344.237-.515 3.713-7.537 4.544-13.849 2.463-18.753-5.05-11.896-26.872-16.164-36.053-19.796-23.715-9.366-27.015-20.128-25.612-27.504 2.437-12.836 21.725-20.735 33.002-15.453 8.919 4.181 16.843 6.297 23.547 6.297 5.022 0 8.212-1.204 9.96-2.171-2.043-35.936-7.101-87.29 5.687-115.969C158.122 21.304 229.705 15.42 250.826 15.42c.944 0 9.141-.089 10.11-.089 52.148 0 102.254 26.78 126.723 81.643 12.777 28.65 7.749 79.792 5.695 116.009 1.582.872 4.357 1.942 8.599 2.139 6.397-.286 13.815-2.389 22.069-6.257 6.085-2.846 14.406-2.461 20.48.058l.029.01c9.476 3.385 15.439 10.215 15.589 17.87.184 9.747-8.522 18.165-25.878 25.018-2.118.835-4.694 1.655-7.434 2.525-9.797 3.106-24.6 7.805-28.616 17.271-2.079 4.904-1.256 11.211 2.46 18.748.087.168.166.342.239.515 1.301 3.03 32.615 74.46 102.23 85.934 6.427 1.058 11.163 7.877 7.725 15.859z"] -}; -var faSnapchatSquare = { - prefix: "fab", - iconName: "snapchat-square", - icon: [448, 512, [], "f2ad", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6.5 314.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C159.1 100 206.7 96 220.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z"] -}; -var faSoundcloud = { - prefix: "fab", - iconName: "soundcloud", - icon: [640, 512, [], "f1be", "M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z"] -}; -var faSourcetree = { - prefix: "fab", - iconName: "sourcetree", - icon: [448, 512, [], "f7d3", "M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z"] -}; -var faSpeakap = { - prefix: "fab", - iconName: "speakap", - icon: [448, 512, [], "f3f3", "M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z"] -}; -var faSpeakerDeck = { - prefix: "fab", - iconName: "speaker-deck", - icon: [512, 512, [], "f83c", "M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z"] -}; -var faSpotify = { - prefix: "fab", - iconName: "spotify", - icon: [496, 512, [], "f1bc", "M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z"] -}; -var faSquarespace = { - prefix: "fab", - iconName: "squarespace", - icon: [512, 512, [], "f5be", "M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z"] -}; -var faStackExchange = { - prefix: "fab", - iconName: "stack-exchange", - icon: [448, 512, [], "f18d", "M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z"] -}; -var faStackOverflow = { - prefix: "fab", - iconName: "stack-overflow", - icon: [384, 512, [], "f16c", "M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"] -}; -var faStackpath = { - prefix: "fab", - iconName: "stackpath", - icon: [448, 512, [], "f842", "M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z"] -}; -var faStaylinked = { - prefix: "fab", - iconName: "staylinked", - icon: [440, 512, [], "f3f5", "M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z"] -}; -var faSteam = { - prefix: "fab", - iconName: "steam", - icon: [496, 512, [], "f1b6", "M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z"] -}; -var faSteamSquare = { - prefix: "fab", - iconName: "steam-square", - icon: [448, 512, [], "f1b7", "M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z"] -}; -var faSteamSymbol = { - prefix: "fab", - iconName: "steam-symbol", - icon: [448, 512, [], "f3f6", "M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z"] -}; -var faStickerMule = { - prefix: "fab", - iconName: "sticker-mule", - icon: [576, 512, [], "f3f7", "M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z"] -}; -var faStrava = { - prefix: "fab", - iconName: "strava", - icon: [384, 512, [], "f428", "M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z"] -}; -var faStripe = { - prefix: "fab", - iconName: "stripe", - icon: [640, 512, [], "f429", "M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z"] -}; -var faStripeS = { - prefix: "fab", - iconName: "stripe-s", - icon: [384, 512, [], "f42a", "M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z"] -}; -var faStudiovinari = { - prefix: "fab", - iconName: "studiovinari", - icon: [512, 512, [], "f3f8", "M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z"] -}; -var faStumbleupon = { - prefix: "fab", - iconName: "stumbleupon", - icon: [512, 512, [], "f1a4", "M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z"] -}; -var faStumbleuponCircle = { - prefix: "fab", - iconName: "stumbleupon-circle", - icon: [496, 512, [], "f1a3", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z"] -}; -var faSuperpowers = { - prefix: "fab", - iconName: "superpowers", - icon: [448, 512, [], "f2dd", "M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z"] -}; -var faSupple = { - prefix: "fab", - iconName: "supple", - icon: [640, 512, [], "f3f9", "M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z"] -}; -var faSuse = { - prefix: "fab", - iconName: "suse", - icon: [640, 512, [], "f7d6", "M471.08 102.66s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.06a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2.3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9.5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5.4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3.5-76.2-25.4-81.6-28.2-.3-.4.1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7.8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3.1-.1-.9-.3-.9.7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0-25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z"] -}; -var faSwift = { - prefix: "fab", - iconName: "swift", - icon: [448, 512, [], "f8e1", "M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z"] -}; -var faSymfony = { - prefix: "fab", - iconName: "symfony", - icon: [512, 512, [], "f83d", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z"] -}; -var faTeamspeak = { - prefix: "fab", - iconName: "teamspeak", - icon: [512, 512, [], "f4f9", "M244.2 346.79c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6.6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0-8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.64 222.64 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.59 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.29v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.79c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z"] -}; -var faTelegram = { - prefix: "fab", - iconName: "telegram", - icon: [496, 512, [], "f2c6", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z"] -}; -var faTelegramPlane = { - prefix: "fab", - iconName: "telegram-plane", - icon: [448, 512, [], "f3fe", "M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z"] -}; -var faTencentWeibo = { - prefix: "fab", - iconName: "tencent-weibo", - icon: [384, 512, [], "f1d5", "M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z"] -}; -var faTheRedYeti = { - prefix: "fab", - iconName: "the-red-yeti", - icon: [512, 512, [], "f69d", "M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z"] -}; -var faThemeco = { - prefix: "fab", - iconName: "themeco", - icon: [448, 512, [], "f5c6", "M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z"] -}; -var faThemeisle = { - prefix: "fab", - iconName: "themeisle", - icon: [512, 512, [], "f2b2", "M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z"] -}; -var faThinkPeaks = { - prefix: "fab", - iconName: "think-peaks", - icon: [576, 512, [], "f731", "M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z"] -}; -var faTiktok = { - prefix: "fab", - iconName: "tiktok", - icon: [448, 512, [], "e07b", "M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z"] -}; -var faTradeFederation = { - prefix: "fab", - iconName: "trade-federation", - icon: [496, 512, [], "f513", "M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z"] -}; -var faTrello = { - prefix: "fab", - iconName: "trello", - icon: [448, 512, [], "f181", "M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z"] -}; -var faTumblr = { - prefix: "fab", - iconName: "tumblr", - icon: [320, 512, [], "f173", "M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z"] -}; -var faTumblrSquare = { - prefix: "fab", - iconName: "tumblr-square", - icon: [448, 512, [], "f174", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z"] -}; -var faTwitch = { - prefix: "fab", - iconName: "twitch", - icon: [512, 512, [], "f1e8", "M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z"] -}; -var faTwitter = { - prefix: "fab", - iconName: "twitter", - icon: [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"] -}; -var faTwitterSquare = { - prefix: "fab", - iconName: "twitter-square", - icon: [448, 512, [], "f081", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z"] -}; -var faTypo3 = { - prefix: "fab", - iconName: "typo3", - icon: [448, 512, [], "f42b", "M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z"] -}; -var faUber = { - prefix: "fab", - iconName: "uber", - icon: [448, 512, [], "f402", "M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z"] -}; -var faUbuntu = { - prefix: "fab", - iconName: "ubuntu", - icon: [496, 512, [], "f7df", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z"] -}; -var faUikit = { - prefix: "fab", - iconName: "uikit", - icon: [448, 512, [], "f403", "M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z"] -}; -var faUmbraco = { - prefix: "fab", - iconName: "umbraco", - icon: [510, 512, [], "f8e8", "M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z"] -}; -var faUncharted = { - prefix: "fab", - iconName: "uncharted", - icon: [448, 512, [], "e084", "M171.73,232.813A5.381,5.381,0,0,0,176.7,229.5,48.081,48.081,0,0,1,191.6,204.244c1.243-.828,1.657-2.484,1.657-4.141a4.22,4.22,0,0,0-2.071-3.312L74.429,128.473,148.958,85a9.941,9.941,0,0,0,4.968-8.281,9.108,9.108,0,0,0-4.968-8.281L126.6,55.6a9.748,9.748,0,0,0-9.523,0l-100.2,57.966a9.943,9.943,0,0,0-4.969,8.281V236.954a9.109,9.109,0,0,0,4.969,8.281L39.235,258.07a8.829,8.829,0,0,0,4.968,1.242,9.4,9.4,0,0,0,6.625-2.484,10.8,10.8,0,0,0,2.9-7.039V164.5L169.66,232.4A4.5,4.5,0,0,0,171.73,232.813ZM323.272,377.73a12.478,12.478,0,0,0-4.969,1.242l-74.528,43.062V287.882c0-2.9-2.9-5.8-6.211-4.555a53.036,53.036,0,0,1-28.984.414,4.86,4.86,0,0,0-6.21,4.555V421.619l-74.529-43.061a8.83,8.83,0,0,0-4.969-1.242,9.631,9.631,0,0,0-9.523,9.523v26.085a9.107,9.107,0,0,0,4.969,8.281l100.2,57.553A8.829,8.829,0,0,0,223.486,480a11.027,11.027,0,0,0,4.969-1.242l100.2-57.553a9.941,9.941,0,0,0,4.968-8.281V386.839C332.8,382.285,328.24,377.73,323.272,377.73ZM286.007,78a23,23,0,1,0-23-23A23,23,0,0,0,286.007,78Zm63.627-10.086a23,23,0,1,0,23,23A23,23,0,0,0,349.634,67.914ZM412.816,151.6a23,23,0,1,0-23-23A23,23,0,0,0,412.816,151.6Zm-63.182-9.2a23,23,0,1,0,23,23A23,23,0,0,0,349.634,142.4Zm-63.627,83.244a23,23,0,1,0-23-23A23,23,0,0,0,286.007,225.648Zm-62.074,36.358a23,23,0,1,0-23-23A23,23,0,0,0,223.933,262.006Zm188.883-82.358a23,23,0,1,0,23,23A23,23,0,0,0,412.816,179.648Zm0,72.272a23,23,0,1,0,23,23A23,23,0,0,0,412.816,251.92Z"] -}; -var faUniregistry = { - prefix: "fab", - iconName: "uniregistry", - icon: [384, 512, [], "f404", "M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z"] -}; -var faUnity = { - prefix: "fab", - iconName: "unity", - icon: [576, 512, [], "e049", "M498.11,206.4,445.31,14.72,248.2,66.08,219,116.14l-59.2-.43L15.54,256,159.82,396.32l59.17-.43,29.24,50,197.08,51.36,52.8-191.62-30-49.63ZM223.77,124.2,374.55,86.51,288,232.33H114.87Zm0,263.63L114.87,279.71H288l86.55,145.81Zm193,14L330.17,256l86.58-145.84L458.56,256Z"] -}; -var faUnsplash = { - prefix: "fab", - iconName: "unsplash", - icon: [448, 512, [], "e07c", "M448,230.17V480H0V230.17H141.13V355.09H306.87V230.17ZM306.87,32H141.13V156.91H306.87Z"] -}; -var faUntappd = { - prefix: "fab", - iconName: "untappd", - icon: [640, 512, [], "f405", "M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z"] -}; -var faUps = { - prefix: "fab", - iconName: "ups", - icon: [384, 512, [], "f7e0", "M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z"] -}; -var faUsb = { - prefix: "fab", - iconName: "usb", - icon: [640, 512, [], "f287", "M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z"] -}; -var faUsps = { - prefix: "fab", - iconName: "usps", - icon: [576, 512, [], "f7e1", "M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z"] -}; -var faUssunnah = { - prefix: "fab", - iconName: "ussunnah", - icon: [512, 512, [], "f407", "M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z"] -}; -var faVaadin = { - prefix: "fab", - iconName: "vaadin", - icon: [448, 512, [], "f408", "M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z"] -}; -var faViacoin = { - prefix: "fab", - iconName: "viacoin", - icon: [384, 512, [], "f237", "M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z"] -}; -var faViadeo = { - prefix: "fab", - iconName: "viadeo", - icon: [448, 512, [], "f2a9", "M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z"] -}; -var faViadeoSquare = { - prefix: "fab", - iconName: "viadeo-square", - icon: [448, 512, [], "f2aa", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z"] -}; -var faViber = { - prefix: "fab", - iconName: "viber", - icon: [512, 512, [], "f409", "M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z"] -}; -var faVimeo = { - prefix: "fab", - iconName: "vimeo", - icon: [448, 512, [], "f40a", "M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z"] -}; -var faVimeoSquare = { - prefix: "fab", - iconName: "vimeo-square", - icon: [448, 512, [], "f194", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z"] -}; -var faVimeoV = { - prefix: "fab", - iconName: "vimeo-v", - icon: [448, 512, [], "f27d", "M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z"] -}; -var faVine = { - prefix: "fab", - iconName: "vine", - icon: [384, 512, [], "f1ca", "M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z"] -}; -var faVk = { - prefix: "fab", - iconName: "vk", - icon: [576, 512, [], "f189", "M545 117.7c3.7-12.5 0-21.7-17.8-21.7h-58.9c-15 0-21.9 7.9-25.6 16.7 0 0-30 73.1-72.4 120.5-13.7 13.7-20 18.1-27.5 18.1-3.7 0-9.4-4.4-9.4-16.9V117.7c0-15-4.2-21.7-16.6-21.7h-92.6c-9.4 0-15 7-15 13.5 0 14.2 21.2 17.5 23.4 57.5v86.8c0 19-3.4 22.5-10.9 22.5-20 0-68.6-73.4-97.4-157.4-5.8-16.3-11.5-22.9-26.6-22.9H38.8c-16.8 0-20.2 7.9-20.2 16.7 0 15.6 20 93.1 93.1 195.5C160.4 378.1 229 416 291.4 416c37.5 0 42.1-8.4 42.1-22.9 0-66.8-3.4-73.1 15.4-73.1 8.7 0 23.7 4.4 58.7 38.1 40 40 46.6 57.9 69 57.9h58.9c16.8 0 25.3-8.4 20.4-25-11.2-34.9-86.9-106.7-90.3-111.5-8.7-11.2-6.2-16.2 0-26.2.1-.1 72-101.3 79.4-135.6z"] -}; -var faVnv = { - prefix: "fab", - iconName: "vnv", - icon: [640, 512, [], "f40b", "M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z"] -}; -var faVuejs = { - prefix: "fab", - iconName: "vuejs", - icon: [448, 512, [], "f41f", "M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z"] -}; -var faWatchmanMonitoring = { - prefix: "fab", - iconName: "watchman-monitoring", - icon: [512, 512, [], "e087", "M256,16C123.452,16,16,123.452,16,256S123.452,496,256,496,496,388.548,496,256,388.548,16,256,16ZM121.69,429.122C70.056,388.972,36.741,326.322,36.741,256a218.519,218.519,0,0,1,9.587-64.122l102.9-17.895-.121,10.967-13.943,2.013s-.144,12.5-.144,19.549a12.778,12.778,0,0,0,4.887,10.349l9.468,7.4Zm105.692-283.27,8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46,0,0,0-32.342,30.474-39.529,34.5-7.078,3.964-.144,9.344-.144,9.344l8.481,7.618-.048,4.369L75.982,131.045c39.644-56.938,105.532-94.3,180.018-94.3A218.754,218.754,0,0,1,420.934,111.77l-193.512,37.7Zm34.063,329.269-33.9-250.857,9.467-7.4a12.778,12.778,0,0,0,4.888-10.349c0-7.044-.144-19.549-.144-19.549l-13.943-2.013-.116-10.474,241.711,31.391A218.872,218.872,0,0,1,475.259,256C475.259,375.074,379.831,472.212,261.445,475.121Z"] -}; -var faWaze = { - prefix: "fab", - iconName: "waze", - icon: [512, 512, [], "f83f", "M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z"] -}; -var faWeebly = { - prefix: "fab", - iconName: "weebly", - icon: [512, 512, [], "f5cc", "M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z"] -}; -var faWeibo = { - prefix: "fab", - iconName: "weibo", - icon: [512, 512, [], "f18a", "M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z"] -}; -var faWeixin = { - prefix: "fab", - iconName: "weixin", - icon: [576, 512, [], "f1d7", "M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z"] -}; -var faWhatsapp = { - prefix: "fab", - iconName: "whatsapp", - icon: [448, 512, [], "f232", "M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"] -}; -var faWhatsappSquare = { - prefix: "fab", - iconName: "whatsapp-square", - icon: [448, 512, [], "f40c", "M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z"] -}; -var faWhmcs = { - prefix: "fab", - iconName: "whmcs", - icon: [448, 512, [], "f40d", "M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z"] -}; -var faWikipediaW = { - prefix: "fab", - iconName: "wikipedia-w", - icon: [640, 512, [], "f266", "M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z"] -}; -var faWindows = { - prefix: "fab", - iconName: "windows", - icon: [448, 512, [], "f17a", "M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"] -}; -var faWix = { - prefix: "fab", - iconName: "wix", - icon: [640, 512, [], "f5cf", "M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z"] -}; -var faWizardsOfTheCoast = { - prefix: "fab", - iconName: "wizards-of-the-coast", - icon: [640, 512, [], "f730", "M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z"] -}; -var faWodu = { - prefix: "fab", - iconName: "wodu", - icon: [640, 512, [], "e088", "M178.414 339.706H141.1L112.166 223.475h-.478L83.228 339.706H45.2L0 168.946H37.548L64.574 285.177h.478L94.707 168.946h35.157l29.178 117.667h.479L187.5 168.946h36.831zM271.4 212.713c38.984 0 64.1 25.828 64.1 65.291 0 39.222-25.111 65.05-64.1 65.05-38.743 0-63.855-25.828-63.855-65.05C207.547 238.541 232.659 212.713 271.4 212.713zm0 104.753c23.2 0 30.133-19.852 30.133-39.462 0-19.852-6.934-39.7-30.133-39.7-27.7 0-29.894 19.85-29.894 39.7C241.508 297.614 248.443 317.466 271.4 317.466zM435.084 323.922h-.478c-7.893 13.392-21.765 19.132-37.548 19.132-37.31 0-55.485-32.045-55.485-66.246 0-33.243 18.415-64.095 54.767-64.095 14.589 0 28.938 6.218 36.831 18.416h.24V168.946h33.96v170.76H435.084zM405.428 238.3c-22.24 0-29.894 19.134-29.894 39.463 0 19.371 8.848 39.7 29.894 39.7 22.482 0 29.178-19.613 29.178-39.94C434.606 257.436 427.432 238.3 405.428 238.3zM592.96 339.706H560.673V322.487h-.718c-8.609 13.87-23.436 20.567-37.786 20.567-36.113 0-45.2-20.328-45.2-50.941V216.061h33.959V285.9c0 20.329 5.979 30.372 21.765 30.372 18.415 0 26.306-10.283 26.306-35.393V216.061H592.96zM602.453 302.876H640v36.83H602.453z"] -}; -var faWolfPackBattalion = { - prefix: "fab", - iconName: "wolf-pack-battalion", - icon: [512, 512, [], "f514", "M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z"] -}; -var faWordpress = { - prefix: "fab", - iconName: "wordpress", - icon: [512, 512, [], "f19a", "M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z"] -}; -var faWordpressSimple = { - prefix: "fab", - iconName: "wordpress-simple", - icon: [512, 512, [], "f411", "M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z"] -}; -var faWpbeginner = { - prefix: "fab", - iconName: "wpbeginner", - icon: [512, 512, [], "f297", "M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z"] -}; -var faWpexplorer = { - prefix: "fab", - iconName: "wpexplorer", - icon: [512, 512, [], "f2de", "M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z"] -}; -var faWpforms = { - prefix: "fab", - iconName: "wpforms", - icon: [448, 512, [], "f298", "M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z"] -}; -var faWpressr = { - prefix: "fab", - iconName: "wpressr", - icon: [496, 512, [], "f3e4", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z"] -}; -var faXbox = { - prefix: "fab", - iconName: "xbox", - icon: [512, 512, [], "f412", "M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z"] -}; -var faXing = { - prefix: "fab", - iconName: "xing", - icon: [384, 512, [], "f168", "M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z"] -}; -var faXingSquare = { - prefix: "fab", - iconName: "xing-square", - icon: [448, 512, [], "f169", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z"] -}; -var faYCombinator = { - prefix: "fab", - iconName: "y-combinator", - icon: [448, 512, [], "f23b", "M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z"] -}; -var faYahoo = { - prefix: "fab", - iconName: "yahoo", - icon: [512, 512, [], "f19e", "M223.69,141.06,167,284.23,111,141.06H14.93L120.76,390.19,82.19,480h94.17L317.27,141.06Zm105.4,135.79a58.22,58.22,0,1,0,58.22,58.22A58.22,58.22,0,0,0,329.09,276.85ZM394.65,32l-93,223.47H406.44L499.07,32Z"] -}; -var faYammer = { - prefix: "fab", - iconName: "yammer", - icon: [512, 512, [], "f840", "M421.78 152.17A23.06 23.06 0 0 0 400.9 112c-.83.43-1.71.9-2.63 1.4-15.25 8.4-118.33 80.62-106.69 88.77s82.04-23.61 130.2-50zm0 217.17c-48.16-26.38-118.64-58.1-130.2-50s91.42 80.35 106.69 88.74c.92.51 1.8 1 2.63 1.41a23.07 23.07 0 0 0 20.88-40.15zM464.21 237c-.95 0-1.95-.06-3-.06-17.4 0-142.52 13.76-136.24 26.51s83.3 18.74 138.21 18.76a23 23 0 0 0 1-45.21zM31 96.65a24.88 24.88 0 0 1 46.14-18.4l81 205.06h1.21l77-203.53a23.52 23.52 0 0 1 44.45 15.27L171.2 368.44C152.65 415.66 134.08 448 77.91 448a139.67 139.67 0 0 1-23.81-1.95 21.31 21.31 0 0 1 6.9-41.77c.66.06 10.91.66 13.86.66 30.47 0 43.74-18.94 58.07-59.41z"] -}; -var faYandex = { - prefix: "fab", - iconName: "yandex", - icon: [256, 512, [], "f413", "M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z"] -}; -var faYandexInternational = { - prefix: "fab", - iconName: "yandex-international", - icon: [320, 512, [], "f414", "M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z"] -}; -var faYarn = { - prefix: "fab", - iconName: "yarn", - icon: [496, 512, [], "f7e3", "M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z"] -}; -var faYelp = { - prefix: "fab", - iconName: "yelp", - icon: [384, 512, [], "f1e9", "M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z"] -}; -var faYoast = { - prefix: "fab", - iconName: "yoast", - icon: [448, 512, [], "f2b1", "M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z"] -}; -var faYoutube = { - prefix: "fab", - iconName: "youtube", - icon: [576, 512, [], "f167", "M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"] -}; -var faYoutubeSquare = { - prefix: "fab", - iconName: "youtube-square", - icon: [448, 512, [], "f431", "M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z"] -}; -var faZhihu = { - prefix: "fab", - iconName: "zhihu", - icon: [640, 512, [], "f63f", "M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z"] -}; -var _iconsCache3 = { - fa500px, - faAccessibleIcon, - faAccusoft, - faAcquisitionsIncorporated, - faAdn, - faAdversal, - faAffiliatetheme, - faAirbnb, - faAlgolia, - faAlipay, - faAmazon, - faAmazonPay, - faAmilia, - faAndroid, - faAngellist, - faAngrycreative, - faAngular, - faAppStore, - faAppStoreIos, - faApper, - faApple, - faApplePay, - faArtstation, - faAsymmetrik, - faAtlassian, - faAudible, - faAutoprefixer, - faAvianex, - faAviato, - faAws, - faBandcamp, - faBattleNet, - faBehance, - faBehanceSquare, - faBimobject, - faBitbucket, - faBitcoin, - faBity, - faBlackTie, - faBlackberry, - faBlogger, - faBloggerB, - faBluetooth, - faBluetoothB, - faBootstrap, - faBtc, - faBuffer, - faBuromobelexperte, - faBuyNLarge, - faBuysellads, - faCanadianMapleLeaf, - faCcAmazonPay, - faCcAmex, - faCcApplePay, - faCcDinersClub, - faCcDiscover, - faCcJcb, - faCcMastercard, - faCcPaypal, - faCcStripe, - faCcVisa, - faCentercode, - faCentos, - faChrome, - faChromecast, - faCloudflare, - faCloudscale, - faCloudsmith, - faCloudversify, - faCodepen, - faCodiepie, - faConfluence, - faConnectdevelop, - faContao, - faCottonBureau, - faCpanel, - faCreativeCommons, - faCreativeCommonsBy, - faCreativeCommonsNc, - faCreativeCommonsNcEu, - faCreativeCommonsNcJp, - faCreativeCommonsNd, - faCreativeCommonsPd, - faCreativeCommonsPdAlt, - faCreativeCommonsRemix, - faCreativeCommonsSa, - faCreativeCommonsSampling, - faCreativeCommonsSamplingPlus, - faCreativeCommonsShare, - faCreativeCommonsZero, - faCriticalRole, - faCss3, - faCss3Alt, - faCuttlefish, - faDAndD, - faDAndDBeyond, - faDailymotion, - faDashcube, - faDeezer, - faDelicious, - faDeploydog, - faDeskpro, - faDev, - faDeviantart, - faDhl, - faDiaspora, - faDigg, - faDigitalOcean, - faDiscord, - faDiscourse, - faDochub, - faDocker, - faDraft2digital, - faDribbble, - faDribbbleSquare, - faDropbox, - faDrupal, - faDyalog, - faEarlybirds, - faEbay, - faEdge, - faEdgeLegacy, - faElementor, - faEllo, - faEmber, - faEmpire, - faEnvira, - faErlang, - faEthereum, - faEtsy, - faEvernote, - faExpeditedssl, - faFacebook, - faFacebookF, - faFacebookMessenger, - faFacebookSquare, - faFantasyFlightGames, - faFedex, - faFedora, - faFigma, - faFirefox, - faFirefoxBrowser, - faFirstOrder, - faFirstOrderAlt, - faFirstdraft, - faFlickr, - faFlipboard, - faFly, - faFontAwesome, - faFontAwesomeAlt, - faFontAwesomeFlag, - faFontAwesomeLogoFull: faFontAwesomeLogoFull3, - faFonticons, - faFonticonsFi, - faFortAwesome, - faFortAwesomeAlt, - faForumbee, - faFoursquare, - faFreeCodeCamp, - faFreebsd, - faFulcrum, - faGalacticRepublic, - faGalacticSenate, - faGetPocket, - faGg, - faGgCircle, - faGit, - faGitAlt, - faGitSquare, - faGithub, - faGithubAlt, - faGithubSquare, - faGitkraken, - faGitlab, - faGitter, - faGlide, - faGlideG, - faGofore, - faGoodreads, - faGoodreadsG, - faGoogle, - faGoogleDrive, - faGooglePay, - faGooglePlay, - faGooglePlus, - faGooglePlusG, - faGooglePlusSquare, - faGoogleWallet, - faGratipay, - faGrav, - faGripfire, - faGrunt, - faGuilded, - faGulp, - faHackerNews, - faHackerNewsSquare, - faHackerrank, - faHips, - faHireAHelper, - faHive, - faHooli, - faHornbill, - faHotjar, - faHouzz, - faHtml5, - faHubspot, - faIdeal, - faImdb, - faInnosoft, - faInstagram, - faInstagramSquare, - faInstalod, - faIntercom, - faInternetExplorer, - faInvision, - faIoxhost, - faItchIo, - faItunes, - faItunesNote, - faJava, - faJediOrder, - faJenkins, - faJira, - faJoget, - faJoomla, - faJs, - faJsSquare, - faJsfiddle, - faKaggle, - faKeybase, - faKeycdn, - faKickstarter, - faKickstarterK, - faKorvue, - faLaravel, - faLastfm, - faLastfmSquare, - faLeanpub, - faLess, - faLine, - faLinkedin, - faLinkedinIn, - faLinode, - faLinux, - faLyft, - faMagento, - faMailchimp, - faMandalorian, - faMarkdown, - faMastodon, - faMaxcdn, - faMdb, - faMedapps, - faMedium, - faMediumM, - faMedrt, - faMeetup, - faMegaport, - faMendeley, - faMicroblog, - faMicrosoft, - faMix, - faMixcloud, - faMixer, - faMizuni, - faModx, - faMonero, - faNapster, - faNeos, - faNimblr, - faNode, - faNodeJs, - faNpm, - faNs8, - faNutritionix, - faOctopusDeploy, - faOdnoklassniki, - faOdnoklassnikiSquare, - faOldRepublic, - faOpencart, - faOpenid, - faOpera, - faOptinMonster, - faOrcid, - faOsi, - faPage4, - faPagelines, - faPalfed, - faPatreon, - faPaypal, - faPennyArcade, - faPerbyte, - faPeriscope, - faPhabricator, - faPhoenixFramework, - faPhoenixSquadron, - faPhp, - faPiedPiper, - faPiedPiperAlt, - faPiedPiperHat, - faPiedPiperPp, - faPiedPiperSquare, - faPinterest, - faPinterestP, - faPinterestSquare, - faPlaystation, - faProductHunt, - faPushed, - faPython, - faQq, - faQuinscape, - faQuora, - faRProject, - faRaspberryPi, - faRavelry, - faReact, - faReacteurope, - faReadme, - faRebel, - faRedRiver, - faReddit, - faRedditAlien, - faRedditSquare, - faRedhat, - faRenren, - faReplyd, - faResearchgate, - faResolving, - faRev, - faRocketchat, - faRockrms, - faRust, - faSafari, - faSalesforce, - faSass, - faSchlix, - faScribd, - faSearchengin, - faSellcast, - faSellsy, - faServicestack, - faShirtsinbulk, - faShopify, - faShopware, - faSimplybuilt, - faSistrix, - faSith, - faSketch, - faSkyatlas, - faSkype, - faSlack, - faSlackHash, - faSlideshare, - faSnapchat, - faSnapchatGhost, - faSnapchatSquare, - faSoundcloud, - faSourcetree, - faSpeakap, - faSpeakerDeck, - faSpotify, - faSquarespace, - faStackExchange, - faStackOverflow, - faStackpath, - faStaylinked, - faSteam, - faSteamSquare, - faSteamSymbol, - faStickerMule, - faStrava, - faStripe, - faStripeS, - faStudiovinari, - faStumbleupon, - faStumbleuponCircle, - faSuperpowers, - faSupple, - faSuse, - faSwift, - faSymfony, - faTeamspeak, - faTelegram, - faTelegramPlane, - faTencentWeibo, - faTheRedYeti, - faThemeco, - faThemeisle, - faThinkPeaks, - faTiktok, - faTradeFederation, - faTrello, - faTumblr, - faTumblrSquare, - faTwitch, - faTwitter, - faTwitterSquare, - faTypo3, - faUber, - faUbuntu, - faUikit, - faUmbraco, - faUncharted, - faUniregistry, - faUnity, - faUnsplash, - faUntappd, - faUps, - faUsb, - faUsps, - faUssunnah, - faVaadin, - faViacoin, - faViadeo, - faViadeoSquare, - faViber, - faVimeo, - faVimeoSquare, - faVimeoV, - faVine, - faVk, - faVnv, - faVuejs, - faWatchmanMonitoring, - faWaze, - faWeebly, - faWeibo, - faWeixin, - faWhatsapp, - faWhatsappSquare, - faWhmcs, - faWikipediaW, - faWindows, - faWix, - faWizardsOfTheCoast, - faWodu, - faWolfPackBattalion, - faWordpress, - faWordpressSimple, - faWpbeginner, - faWpexplorer, - faWpforms, - faWpressr, - faXbox, - faXing, - faXingSquare, - faYCombinator, - faYahoo, - faYammer, - faYandex, - faYandexInternational, - faYarn, - faYelp, - faYoast, - faYoutube, - faYoutubeSquare, - faZhihu -}; - -// node_modules/@fortawesome/fontawesome-svg-core/index.es.js -function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function(obj2) { - return typeof obj2; - }; - } else { - _typeof = function(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); -} -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; -} -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; -} -function _objectSpread(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - var ownKeys = Object.keys(source); - if (typeof Object.getOwnPropertySymbols === "function") { - ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { - return Object.getOwnPropertyDescriptor(source, sym).enumerable; - })); - } - ownKeys.forEach(function(key) { - _defineProperty(target, key, source[key]); - }); - } - return target; -} -function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); -} -function _arrayWithHoles(arr) { - if (Array.isArray(arr)) - return arr; -} -function _iterableToArrayLimit(arr, i) { - var _arr = []; - var _n = true; - var _d = false; - var _e = void 0; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) - break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) - _i["return"](); - } finally { - if (_d) - throw _e; - } - } - return _arr; -} -function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); -} -var noop = function noop2() { -}; -var _WINDOW = {}; -var _DOCUMENT = {}; -var _MUTATION_OBSERVER = null; -var _PERFORMANCE = { - mark: noop, - measure: noop -}; -try { - if (typeof window !== "undefined") - _WINDOW = window; - if (typeof document !== "undefined") - _DOCUMENT = document; - if (typeof MutationObserver !== "undefined") - _MUTATION_OBSERVER = MutationObserver; - if (typeof performance !== "undefined") - _PERFORMANCE = performance; -} catch (e) { -} -var _ref = _WINDOW.navigator || {}; -var _ref$userAgent = _ref.userAgent; -var userAgent = _ref$userAgent === void 0 ? "" : _ref$userAgent; -var WINDOW = _WINDOW; -var DOCUMENT = _DOCUMENT; -var PERFORMANCE = _PERFORMANCE; -var IS_BROWSER = !!WINDOW.document; -var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === "function" && typeof DOCUMENT.createElement === "function"; -var IS_IE = ~userAgent.indexOf("MSIE") || ~userAgent.indexOf("Trident/"); -var NAMESPACE_IDENTIFIER = "___FONT_AWESOME___"; -var DEFAULT_FAMILY_PREFIX = "fa"; -var DEFAULT_REPLACEMENT_CLASS = "svg-inline--fa"; -var DATA_FA_I2SVG = "data-fa-i2svg"; -var PRODUCTION = function() { - try { - return false; - } catch (e) { - return false; - } -}(); -var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; -var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); -var DUOTONE_CLASSES = { - GROUP: "group", - SWAP_OPACITY: "swap-opacity", - PRIMARY: "primary", - SECONDARY: "secondary" -}; -var RESERVED_CLASSES = ["xs", "sm", "lg", "fw", "ul", "li", "border", "pull-left", "pull-right", "spin", "pulse", "rotate-90", "rotate-180", "rotate-270", "flip-horizontal", "flip-vertical", "flip-both", "stack", "stack-1x", "stack-2x", "inverse", "layers", "layers-text", "layers-counter", DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function(n) { - return "".concat(n, "x"); -})).concat(oneToTwenty.map(function(n) { - return "w-".concat(n); -})); -var initial = WINDOW.FontAwesomeConfig || {}; -function getAttrConfig(attr) { - var element = DOCUMENT.querySelector("script[" + attr + "]"); - if (element) { - return element.getAttribute(attr); - } -} -function coerce(val) { - if (val === "") - return true; - if (val === "false") - return false; - if (val === "true") - return true; - return val; -} -if (DOCUMENT && typeof DOCUMENT.querySelector === "function") { - attrs = [["data-family-prefix", "familyPrefix"], ["data-replacement-class", "replacementClass"], ["data-auto-replace-svg", "autoReplaceSvg"], ["data-auto-add-css", "autoAddCss"], ["data-auto-a11y", "autoA11y"], ["data-search-pseudo-elements", "searchPseudoElements"], ["data-observe-mutations", "observeMutations"], ["data-mutate-approach", "mutateApproach"], ["data-keep-original-source", "keepOriginalSource"], ["data-measure-performance", "measurePerformance"], ["data-show-missing-icons", "showMissingIcons"]]; - attrs.forEach(function(_ref2) { - var _ref22 = _slicedToArray(_ref2, 2), attr = _ref22[0], key = _ref22[1]; - var val = coerce(getAttrConfig(attr)); - if (val !== void 0 && val !== null) { - initial[key] = val; - } - }); +`],o=new Blob([this.plugin.calloutManager.generateCssString()],{type:"text/css"});createEl("a",{attr:{download:"custom_callouts.css",href:URL.createObjectURL(o)}}).click()}).setDisabled(!Object.keys(this.plugin.data.userAdmonitions).length)),new u.Setting(c).setName("Use CSS Snippet for Custom Callouts").setDesc("Instead of managing it internally, Admonitions will maintain a CSS snippet to enable your custom types for callouts.").addToggle(i=>i.setValue(this.plugin.data.useSnippet).onChange(n=>{this.plugin.data.useSnippet=n,this.plugin.saveSettings(),this.plugin.calloutManager.setUseSnippet()})),new u.Setting(c).setName(g("Add New")).setDesc("Add a new Admonition type. All custom Admonitions will also be usable as callouts.").addButton(i=>i.setTooltip(g("Add Additional")).setButtonText("+").onClick(async()=>{let o=new F(this.plugin);o.onClose=async()=>{if(o.saved){let r={type:o.type,color:o.color,icon:o.icon,command:!1,title:o.title,injectColor:o.injectColor,noTitle:o.noTitle,copy:o.copy};this.plugin.addAdmonition(r),this.plugin.calloutManager.addAdmonition(r),this.display()}},o.open()})),this.additionalEl=c.createDiv("additional"),this.buildTypes(),this.buildAdmonitions(this.containerEl.createEl("details",{cls:"admonitions-nested-settings",attr:{...this.plugin.data.open.admonitions?{open:!0}:{}}})),this.buildIcons(this.containerEl.createEl("details",{cls:"admonitions-nested-settings",attr:{...this.plugin.data.open.icons?{open:!0}:{}}})),this.buildOtherSyntaxes(this.containerEl.createEl("details",{cls:"admonitions-nested-settings",attr:{...this.plugin.data.open.other?{open:!0}:{}}})),this.buildAdvanced(this.containerEl.createEl("details",{cls:"admonitions-nested-settings",attr:{...this.plugin.data.open.advanced?{open:!0}:{}}})),this.containerEl.createDiv("coffee").createEl("a",{href:"https://www.buymeacoffee.com/valentine195"}).createEl("img",{attr:{src:"https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=\u2615&slug=valentine195&button_colour=e3e7ef&font_colour=262626&font_family=Inter&outline_colour=262626&coffee_colour=ff0000"}})}buildAdmonitions(c){c.empty(),c.ontoggle=()=>{this.plugin.data.open.admonitions=c.open,this.plugin.saveSettings()};let e=c.createEl("summary");new u.Setting(e).setHeading().setName("Admonitions & Callouts"),e.createDiv("collapser").createDiv("handle"),new u.Setting(c).setName("Add Drop Shadow").setDesc("A drop shadow will be added to admonitions.").addToggle(i=>{i.setValue(this.plugin.data.dropShadow).onChange(async n=>{this.plugin.data.dropShadow=n,this.display(),await this.plugin.saveSettings()})}),new u.Setting(c).setName(g("Collapsible by Default")).setDesc(createFragment(i=>{i.createSpan({text:"All admonitions & callouts will be collapsible by default. Use "}),i.createEl("code",{text:"collapse: none"}),i.createSpan({text:g(" to prevent.")})})).addToggle(i=>{i.setValue(this.plugin.data.autoCollapse).onChange(async n=>{this.plugin.data.autoCollapse=n,this.display(),await this.plugin.saveSettings()})}),this.plugin.data.autoCollapse&&new u.Setting(c).setName(g("Default Collapse Type")).setDesc("Collapsible admonitions & callouts will be either opened or closed.").addDropdown(i=>{i.addOption("open","open"),i.addOption("closed","closed"),i.setValue(this.plugin.data.defaultCollapseType),i.onChange(async n=>{this.plugin.data.defaultCollapseType=n,await this.plugin.saveSettings()})}),new u.Setting(c).setName(g("Add Copy Button")).setDesc("Add a 'copy content' button to admonitions & callouts.").addToggle(i=>{i.setValue(this.plugin.data.copyButton),i.onChange(async n=>{this.plugin.data.copyButton=n,n||document.querySelectorAll(".admonition-content-copy").forEach(o=>{o.detach()}),await this.plugin.saveSettings()})}),new u.Setting(c).setName(g("Parse Titles as Markdown")).setDesc(g("Admonition Titles will be rendered as markdown.")).addToggle(i=>{i.setValue(this.plugin.data.parseTitles),i.onChange(async n=>{this.plugin.data.parseTitles=n,await this.plugin.saveSettings()})}),new u.Setting(c).setName("Set Admonition Colors").setDesc("Disable this setting to turn off admonition coloring by default. Can be overridden in the admonition definition.").addToggle(i=>i.setValue(this.plugin.data.injectColor).setTooltip(`${this.plugin.data.injectColor?"Disable":"Enable"} Admonition Color`).onChange(async n=>{this.plugin.data.injectColor=n,await this.plugin.saveSettings(),await this.buildTypes()})),new u.Setting(c).setName("Hide Empty Admonitions").setDesc("Any admonition that does not have content inside it will be hidden.").addToggle(i=>i.setValue(this.plugin.data.hideEmpty).onChange(async n=>{this.plugin.data.hideEmpty=n,await this.plugin.saveSettings(),await this.buildTypes()}))}buildIcons(c){c.empty(),c.ontoggle=()=>{this.plugin.data.open.icons=c.open,this.plugin.saveSettings()};let e=c.createEl("summary");new u.Setting(e).setHeading().setName("Icon Packs"),e.createDiv("collapser").createDiv("handle"),new u.Setting(c).setName("Use Font Awesome Icons").setDesc("Font Awesome Free icons will be available in the item picker. Existing Admonitions defined using Font Awesome icons will continue to work.").addToggle(r=>{r.setValue(this.plugin.data.useFontAwesome).onChange(t=>{this.plugin.data.useFontAwesome=t,this.plugin.iconManager.setIconDefinitions(),this.plugin.saveSettings()})});let i,n=Object.entries(H1).filter(([r])=>!this.plugin.data.icons.includes(r));new u.Setting(c).setName("Load Additional Icons").setDesc("Load an additional icon pack. This requires an internet connection.").addDropdown(r=>{if(!n.length){r.setDisabled(!0);return}for(let[t,l]of n)r.addOption(t,l);r.onChange(t=>i=t),i=r.getValue()}).addExtraButton(r=>{r.setIcon("plus-with-circle").setTooltip("Load").onClick(async()=>{!i||!i.length||(await this.plugin.iconManager.downloadIcon(i),this.buildIcons(c))}),n.length||r.setDisabled(!0)});let o=c.createDiv("admonitions-nested-settings");new u.Setting(o);for(let r of this.plugin.data.icons)new u.Setting(o).setName(H1[r]).addExtraButton(t=>{t.setIcon("reset").setTooltip("Redownload").onClick(async()=>{await this.plugin.iconManager.removeIcon(r),await this.plugin.iconManager.downloadIcon(r),this.buildIcons(c)})}).addExtraButton(t=>{t.setIcon("trash").onClick(async()=>{Object.values(this.plugin.data.userAdmonitions).find(l=>l.icon.type==r)&&!await d3(this.plugin.app,"You have Admonitions using icons from this pack. Are you sure you want to remove it?")||(await this.plugin.iconManager.removeIcon(r),this.buildIcons(c))})})}buildOtherSyntaxes(c){c.empty(),c.ontoggle=()=>{this.plugin.data.open.other=c.open,this.plugin.saveSettings()};let e=c.createEl("summary");new u.Setting(e).setHeading().setName("Additional Syntaxes"),e.createDiv("collapser").createDiv("handle"),c.createEl("p",{text:"Obsidian 0.14 has introduced Callout boxes to its core functionality using the same syntax as the Microsoft Document callouts.",cls:"setting-item"}),c.createEl("p",{text:"This has rendered the Microsoft Document syntax for Admonitions obsolete, but Admonitions can still be used to create and manage your custom callout types.",cls:"setting-item"}),c.createEl("p",{text:"Your existing code block Admonitions will always work!",cls:"setting-item"}),this.plugin.data.msDocConverted||new u.Setting(c).setName("Convert MSDoc Admonitions to Callouts").setDesc(createFragment(i=>{let n=i.createDiv("admonition-convert");(0,u.setIcon)(n.createSpan(),P1),n.createSpan({text:"This "}),n.createEl("strong",{text:"will"}),n.createSpan({text:" modify notes. Use at your own risk and please make backups."}),i.createEl("p",{text:"With large vaults, this could take awhile!"})})).addButton(i=>i.setButtonText("Convert").setCta().onClick(()=>{this.queue=this.plugin.app.vault.getMarkdownFiles(),this.notice=new u.Notice(createFragment(n=>{let o=n.createDiv("admonition-convert");o.createSpan({text:"Converting MS-doc admonitions..."}),(0,u.setIcon)(o.createSpan("admonition-convert-icon"),E1)}),0),this.checkAndReplace()})),new u.Setting(c).setName("Convert Codeblock Admonitions to Callouts").setDesc(createFragment(i=>{let n=i.createDiv("admonition-convert");(0,u.setIcon)(n.createSpan(),P1),n.createSpan({text:"This "}),n.createEl("strong",{text:"will"}),n.createSpan({text:" modify notes. Use at your own risk and please make backups."}),i.createEl("p",{text:"With large vaults, this could take awhile!"})})).addButton(i=>i.setButtonText("Convert").setCta().onClick(()=>{this.queue=this.plugin.app.vault.getMarkdownFiles(),this.notice=new u.Notice(createFragment(n=>{let o=n.createDiv("admonition-convert");o.createSpan({text:"Converting Codeblock admonitions..."}),(0,u.setIcon)(o.createSpan("admonition-convert-icon"),E1)}),0),this.converted=0,this.checkAndReplaceCodeBlocks()}))}async checkAndReplace(){if(!this.queue.length){this.converted?this.notice.setMessage(`${this.converted} MS-doc Admonitions converted!`):this.notice.setMessage("No MS-doc Admonitions found to convert."),this.plugin.data.msDocConverted=!0,this.plugin.saveSettings().then(()=>this.display()),setTimeout(()=>{this.notice.hide(),this.notice=void 0},2e3);return}setTimeout(async()=>{let c=this.queue.shift(),e=await this.app.vault.read(c);/> \[!([^ :]+)(?::[ ]?(.+))\](x|\+|\-)?/.test(e)&&(this.converted++,await this.plugin.app.vault.modify(c,e.replace(/> \[!([^ :]+)(?::[ ]?(.+))\](x|\+|\-)?/g,"> [!$1]$3 $2"))),this.checkAndReplace()})}async checkAndReplaceCodeBlocks(){if(!this.queue.length){this.converted?this.notice.setMessage(`${this.converted} Codeblock Admonitions converted!`):this.notice.setMessage("No Codeblock Admonitions found to convert."),this.display(),setTimeout(()=>{this.notice.hide(),this.notice=void 0},2e3);return}setTimeout(async()=>{let c=this.queue.shift(),e=await this.app.vault.read(c);/^(`{3,})ad-(\w+)([\s\S]*?)?\n^\1/m.test(e)&&(e=this.replaceCodeBlockInPlace(e),this.app.vault.modify(c,e)),this.checkAndReplaceCodeBlocks()})}replaceCodeBlockInPlace(c){let e=c.match(/^(`{3,})ad-(\w+)([\s\S]*?)?\n^\1/gm)??[];for(let i of e){let[,n]=i.match(/^`{3,}ad-(\w+)/),o="",r="";if(!n)continue;let t=[],l=!0;for(let s of i.split(` +`).slice(1,-1)){if(l){if(/^title:/.test(s)){o=s.match(/^title:(.*)/)?.[1].trim()??n[0].toUpperCase()+n.slice(1).toLowerCase();continue}if(/^collapse:/.test(s)){r=(s.match(/^collapse:\s?(.*)/)?.[1].trim()??"open")=="open"?"+":"-";continue}/^(title|collapse|color|icon):/.test(s)||(l=!1)}t.push(s)}let f=t.join(` +`);/^(`{3,})ad-(\w+)([\s\S]*?)?\n^\1/m.test(f)&&(f=this.replaceCodeBlockInPlace(f)),c=c.replace(i,`> [!${n}]${r}${o.length?" ":""}${o} +> ${f.split(` +`).join(` +> `)}`),this.converted++}return c}buildAdvanced(c){c.empty(),c.ontoggle=()=>{this.plugin.data.open.advanced=c.open,this.plugin.saveSettings()};let e=c.createEl("summary");new u.Setting(e).setHeading().setName("Advanced Settings"),e.createDiv("collapser").createDiv("handle"),new u.Setting(c).setName(g("Markdown Syntax Highlighting")).setDesc(g("Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.")).addToggle(i=>{i.setValue(this.plugin.data.syntaxHighlight),i.onChange(async n=>{this.plugin.data.syntaxHighlight=n,n?this.plugin.turnOnSyntaxHighlighting():this.plugin.turnOffSyntaxHighlighting(),await this.plugin.saveSettings()})}),new u.Setting(c).setName("Generate JS for Publish").setDesc(createFragment(i=>{i.createSpan({text:"Generate a javascript file to place in your "}),i.createEl("code",{text:"publish.js"}),i.createSpan({text:"file."}),i.createEl("br"),i.createEl("strong",{text:"Please note that this can only be done on custom domain publish sites."})})).addButton(i=>{i.setButtonText("Generate"),i.onClick(n=>{let o={};for(let f in this.plugin.admonitions){let s=this.plugin.admonitions[f];o[f]={icon:this.plugin.iconManager.getIconNode(s.icon)?.outerHTML??"",color:s.color}}let r=W4.replace(/ADMONITION_ICON_MAP\s?=\s?\{\}/,"ADMONITION_ICON_MAP="+JSON.stringify(o)),t=new Blob([r],{type:"text/javascript"}),l=createEl("a",{href:URL.createObjectURL(t),attr:{download:"publish.admonition.js"}});l.click(),l.detach()})})}buildTypes(){this.additionalEl.empty();for(let c of Object.values(this.plugin.data.userAdmonitions)){let e=new u.Setting(this.additionalEl),i=this.plugin.getAdmonitionElement(c.type,c.type[0].toUpperCase()+c.type.slice(1).toLowerCase(),c.icon,c.injectColor??this.plugin.data.injectColor?c.color:null);e.infoEl.replaceWith(i),c.command?e.addExtraButton(n=>{n.setIcon(Q1.toString()).setTooltip(g("Unregister Commands")).onClick(async()=>{this.plugin.unregisterCommandsFor(c),await this.plugin.saveSettings(),this.display()})}):e.addExtraButton(n=>{n.setIcon(K1.toString()).setTooltip(g("Register Commands")).onClick(async()=>{this.plugin.registerCommandsFor(c),await this.plugin.saveSettings(),this.display()})}),e.addExtraButton(n=>{n.setIcon("pencil").setTooltip(g("Edit")).onClick(()=>{let o=new F(this.plugin,c);o.onClose=async()=>{if(o.saved){let r=c.command,t={type:o.type,color:o.color,icon:o.icon,command:r,title:o.title,injectColor:o.injectColor,noTitle:o.noTitle,copy:o.copy};if(t.type!=c.type){this.plugin.unregisterType(c);let l=Object.entries(this.plugin.data.userAdmonitions);this.plugin.data.userAdmonitions=Object.fromEntries(l.map(([f,s])=>f==c.type?[t.type,t]:[f,s]))}else this.plugin.data.userAdmonitions[t.type]=t;this.plugin.registerType(t.type),this.plugin.calloutManager.addAdmonition(t),this.display()}},o.open()})}).addExtraButton(n=>{n.setIcon("trash").setTooltip(g("Delete")).onClick(()=>{this.plugin.removeAdmonition(c),this.display()})})}}},F=class extends u.Modal{constructor(c,e){super(c.app);this.plugin=c;this.color="#7d7d7d";this.icon={};this.saved=!1;this.error=!1;this.injectColor=this.plugin.data.injectColor;this.noTitle=!1;e&&(this.color=e.color,this.icon=e.icon,this.type=e.type,this.originalType=e.type,this.title=e.title,this.injectColor=e.injectColor??this.injectColor,this.noTitle=e.noTitle??!1,this.copy=e.copy??this.plugin.data.copyButton)}async display(){let{contentEl:c}=this;c.empty();let e=c.createDiv(),i=this.title??this.type??"...";this.admonitionPreview=this.plugin.getAdmonitionElement(this.type,i[0].toUpperCase()+i.slice(1).toLowerCase(),this.icon,this.injectColor??this.plugin.data.injectColor?this.color:null),this.admonitionPreview.createDiv("callout-content admonition-content").createEl("p",{text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla."}),c.appendChild(this.admonitionPreview);let n,o=new u.Setting(e).setName(g("Admonition Type")).addText(h=>{n=h,n.setValue(this.type).onChange(m=>{if(!m.length){F.setValidationError(h,g("Admonition type cannot be empty."));return}if(m.includes(" ")){F.setValidationError(h,g("Admonition type cannot include spaces."));return}if(!M3(m)){F.setValidationError(h,g("Types must be a valid CSS selector."));return}F.removeValidationError(h),this.type=m,this.title||this.updateTitle(this.admonitionPreview,this.type?.[0].toUpperCase()+this.type?.slice(1).toLowerCase())})});o.controlEl.addClass("admonition-type-setting"),o.descEl.createSpan({text:"This is used to create the admonition (e.g., "}),o.descEl.createEl("code",{text:"note"}),o.descEl.createSpan({text:" or "}),o.descEl.createEl("code",{text:"abstract"}),o.descEl.createSpan({text:")"}),new u.Setting(e).setName(g("Admonition Title")).setDesc(g("This will be the default title for this admonition type.")).addText(h=>{h.setValue(this.title).onChange(m=>{if(!m.length){this.title=null,this.updateTitle(this.admonitionPreview,this.type?.[0].toUpperCase()+i.slice(1).toLowerCase());return}this.title=m,this.updateTitle(this.admonitionPreview,this.title)})}),new u.Setting(e).setName(g("No Admonition Title by Default")).setDesc(createFragment(h=>{h.createSpan({text:g("The admonition will have no title unless ")}),h.createEl("code",{text:"title"}),h.createSpan({text:g(" is explicitly provided.")})})).addToggle(h=>{h.setValue(this.noTitle).onChange(m=>this.noTitle=m)}),new u.Setting(e).setName(g("Show Copy Button")).setDesc(createFragment(h=>{h.createSpan({text:"A copy button will be added to the admonition & callout."})})).addToggle(h=>{h.setValue(this.copy).onChange(m=>this.copy=m)});let r=createEl("input",{attr:{type:"file",name:"image",accept:"image/*"}}),t;new u.Setting(e).setName(g("Admonition Icon")).setDesc("Icon to display next to the title.").addText(h=>{t=h,this.icon.type!=="image"&&h.setValue(this.icon.name);let m=async()=>{let v=h.inputEl.value,M=this.plugin.iconManager.getIconType(v);if(!M){F.setValidationError(h,g("Invalid icon name."));return}if(v.length==0){F.setValidationError(h,g("Icon cannot be empty."));return}F.removeValidationError(h),this.icon=z.icon??{name:v,type:M};let p=this.admonitionPreview.querySelector(".admonition-title-icon");p.innerHTML=this.plugin.iconManager.getIconNode(this.icon)?.outerHTML??""},z=new I2(this.plugin,h);z.onClose=m,h.inputEl.onblur=m}).addButton(h=>{h.setButtonText(g("Upload Image")).setIcon("image-file"),h.buttonEl.addClass("admonition-file-upload"),h.buttonEl.appendChild(r),h.onClick(()=>r.click())}),r.onchange=async()=>{let{files:h}=r;if(!h.length)return;let m=h[0],z=new FileReader;z.onloadend=v=>{var M=new Image;M.onload=()=>{try{let p=document.createElement("canvas"),C=24,H=M.width,L=M.height;H>L?H>C&&(L*=C/H,H=C):L>C&&(H*=C/L,L=C),p.width=H,p.height=L,p.getContext("2d").drawImage(M,0,0,H,L),this.icon={name:p.toDataURL("image/png"),type:"image"},this.display()}catch{new u.Notice("There was an error parsing the image.")}},M.src=v.target.result.toString()},z.readAsDataURL(m),r.value=null};let l=e.createDiv("admonition-color-settings");this.createColor(l);let f=c.createDiv(),s=new u.Setting(f);s.addButton(h=>(h.setTooltip(g("Save")).setIcon("checkmark").onClick(async()=>{let m=!1;if(n.inputEl.value.length||(F.setValidationError(n,g("Admonition type cannot be empty.")),m=!0),n.inputEl.value.includes(" ")&&(F.setValidationError(n,g("Admonition type cannot include spaces.")),m=!0),this.type!=this.originalType&&this.type in this.plugin.data.userAdmonitions&&(F.setValidationError(n,"That Admonition type already exists."),m=!0),M3(n.inputEl.value)||(F.setValidationError(n,g("Types must be a valid CSS selector.")),m=!0),!this.plugin.iconManager.getIconType(t.inputEl.value)&&this.icon.type!=="image"&&(F.setValidationError(t,g("Invalid icon name.")),m=!0),this.icon.name.length||(F.setValidationError(t,g("Icon cannot be empty.")),m=!0),m){new u.Notice("Fix errors before saving.");return}this.saved=!0,this.close()}),h)),s.addExtraButton(h=>(h.setIcon("cross").setTooltip("Cancel").onClick(()=>{this.saved=!1,this.close()}),h))}createColor(c){c.empty();let e=this.injectColor?"Set the admonition color. Disable to set manually using CSS.":"Admonition color is disabled and must be manually set using CSS.";new u.Setting(c).setName(g("Color")).setDesc(e).addText(i=>{i.inputEl.setAttribute("type","color"),this.injectColor||i.inputEl.setAttribute("disabled","true"),i.setValue(q6(this.color)).onChange(n=>{let o=j6(n);!o||(this.color=`${o.r}, ${o.g}, ${o.b}`,this.admonitionPreview.setAttribute("style",`--callout-color: ${this.color};`))})}).addToggle(i=>i.setValue(this.injectColor).setTooltip(`${this.injectColor?"Disable":"Enable"} Admonition Color`).onChange(n=>{this.injectColor=n,n?this.admonitionPreview.setAttribute("style",`--callout-color: ${this.color};`):this.admonitionPreview.removeAttribute("style"),this.createColor(c)}))}updateTitle(c,e){let i=c.querySelector(".admonition-title-content"),n=c.querySelector(".admonition-title-icon");i.textContent=e,i.prepend(n)}onOpen(){this.display()}static setValidationError(c,e){if(c.inputEl.addClass("is-invalid"),e){c.inputEl.parentElement.addClasses(["has-invalid-message","unset-align-items"]),c.inputEl.parentElement.parentElement.addClass(".unset-align-items");let i=c.inputEl.parentElement.querySelector(".invalid-feedback");i||(i=createDiv({cls:"invalid-feedback"})),i.innerText=e,i.insertAfter(c.inputEl)}}static removeValidationError(c){c.inputEl.removeClass("is-invalid"),c.inputEl.parentElement.removeClasses(["has-invalid-message","unset-align-items"]),c.inputEl.parentElement.parentElement.removeClass(".unset-align-items"),c.inputEl.parentElement.querySelector(".invalid-feedback")&&c.inputEl.parentElement.removeChild(c.inputEl.parentElement.querySelector(".invalid-feedback"))}};function j6(a){let c=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);return c?{r:parseInt(c[1],16),g:parseInt(c[2],16),b:parseInt(c[3],16)}:null}function R2(a){var c=a.toString(16);return c.length==1?"0"+c:c}function q6(a){let c=/^(\d+),\s?(\d+),\s?(\d+)/i.exec(a);return!c||!c.length?"":`#${R2(Number(c[1]))}${R2(Number(c[2]))}${R2(Number(c[3]))}`}var U6={prefix:"far",iconName:"address-book",icon:[448,512,[],"f2b9","M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-68 304H48V48h320v416zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z"]},W6={prefix:"far",iconName:"address-card",icon:[576,512,[],"f2bb","M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h480v352zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2zM360 320h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8z"]},G6={prefix:"far",iconName:"angry",icon:[496,512,[],"f556","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-144c-33.6 0-65.2 14.8-86.8 40.6-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.2 33.8-3c24.8-29.7 75-29.7 99.8 0 8.1 9.7 23.2 11.9 33.8 3 10.2-8.5 11.5-23.6 3.1-33.8-21.6-25.8-53.2-40.6-86.8-40.6zm-48-72c10.3 0 19.9-6.7 23-17.1 3.8-12.7-3.4-26.1-16.1-29.9l-80-24c-12.8-3.9-26.1 3.4-29.9 16.1-3.8 12.7 3.4 26.1 16.1 29.9l28.2 8.5c-3.1 4.9-5.3 10.4-5.3 16.6 0 17.7 14.3 32 32 32s32-14.4 32-32.1zm199-54.9c-3.8-12.7-17.1-19.9-29.9-16.1l-80 24c-12.7 3.8-19.9 17.2-16.1 29.9 3.1 10.4 12.7 17.1 23 17.1 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.2-2.2-11.7-5.3-16.6l28.2-8.5c12.7-3.7 19.9-17.1 16.1-29.8z"]},_6={prefix:"far",iconName:"arrow-alt-circle-down",icon:[512,512,[],"f358","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm-32-316v116h-67c-10.7 0-16 12.9-8.5 20.5l99 99c4.7 4.7 12.3 4.7 17 0l99-99c7.6-7.6 2.2-20.5-8.5-20.5h-67V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12z"]},$6={prefix:"far",iconName:"arrow-alt-circle-left",icon:[512,512,[],"f359","M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-72-20v40c0 6.6-5.4 12-12 12H256v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12z"]},Y6={prefix:"far",iconName:"arrow-alt-circle-right",icon:[512,512,[],"f35a","M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z"]},X6={prefix:"far",iconName:"arrow-alt-circle-up",icon:[512,512,[],"f35b","M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z"]},K6={prefix:"far",iconName:"bell",icon:[448,512,[],"f0f3","M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z"]},Q6={prefix:"far",iconName:"bell-slash",icon:[640,512,[],"f1f6","M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM163.53 368c16.71-22.03 34.48-55.8 41.4-110.58l-45.47-35.55c-3.27 90.73-36.47 120.68-54.84 140.42-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h279.66l-61.4-48H163.53zM320 96c61.86 0 112 50.14 112 112 0 .2-.06.38-.06.58.02 16.84 1.16 31.77 2.79 45.73l59.53 46.54c-8.31-22.13-14.34-51.49-14.34-92.85 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-26.02 5.41-49.45 16.94-69.13 32.72l38.17 29.84C275 103.18 296.65 96 320 96zm0 416c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z"]},J6={prefix:"far",iconName:"bookmark",icon:[384,512,[],"f02e","M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z"]},c8={prefix:"far",iconName:"building",icon:[448,512,[],"f1ad","M128 148v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12zm140 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-128 96h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm128 0h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-76 84v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm76 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm180 124v36H0v-36c0-6.6 5.4-12 12-12h19.5V24c0-13.3 10.7-24 24-24h337c13.3 0 24 10.7 24 24v440H436c6.6 0 12 5.4 12 12zM79.5 463H192v-67c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v67h112.5V49L80 48l-.5 415z"]},a8={prefix:"far",iconName:"calendar",icon:[448,512,[],"f133","M400 64h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V160h352v298c0 3.3-2.7 6-6 6z"]},e8={prefix:"far",iconName:"calendar-alt",icon:[448,512,[],"f073","M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},i8={prefix:"far",iconName:"calendar-check",icon:[448,512,[],"f274","M400 64h-48V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H160V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V160h352v298a6 6 0 0 1-6 6zm-52.849-200.65L198.842 404.519c-4.705 4.667-12.303 4.637-16.971-.068l-75.091-75.699c-4.667-4.705-4.637-12.303.068-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l44.104 44.461 111.072-110.181c4.705-4.667 12.303-4.637 16.971.068l22.536 22.718c4.667 4.705 4.636 12.303-.069 16.97z"]},n8={prefix:"far",iconName:"calendar-minus",icon:[448,512,[],"f272","M124 328c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H124zm324-216v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},o8={prefix:"far",iconName:"calendar-plus",icon:[448,512,[],"f271","M336 292v24c0 6.6-5.4 12-12 12h-76v76c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-76h-76c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h76v-76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v76h76c6.6 0 12 5.4 12 12zm112-180v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},t8={prefix:"far",iconName:"calendar-times",icon:[448,512,[],"f273","M311.7 374.7l-17 17c-4.7 4.7-12.3 4.7-17 0L224 337.9l-53.7 53.7c-4.7 4.7-12.3 4.7-17 0l-17-17c-4.7-4.7-4.7-12.3 0-17l53.7-53.7-53.7-53.7c-4.7-4.7-4.7-12.3 0-17l17-17c4.7-4.7 12.3-4.7 17 0l53.7 53.7 53.7-53.7c4.7-4.7 12.3-4.7 17 0l17 17c4.7 4.7 4.7 12.3 0 17L257.9 304l53.7 53.7c4.8 4.7 4.8 12.3.1 17zM448 112v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},r8={prefix:"far",iconName:"caret-square-down",icon:[448,512,[],"f150","M125.1 208h197.8c10.7 0 16.1 13 8.5 20.5l-98.9 98.3c-4.7 4.7-12.2 4.7-16.9 0l-98.9-98.3c-7.7-7.5-2.3-20.5 8.4-20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},l8={prefix:"far",iconName:"caret-square-left",icon:[448,512,[],"f191","M272 157.1v197.8c0 10.7-13 16.1-20.5 8.5l-98.3-98.9c-4.7-4.7-4.7-12.2 0-16.9l98.3-98.9c7.5-7.7 20.5-2.3 20.5 8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},f8={prefix:"far",iconName:"caret-square-right",icon:[448,512,[],"f152","M176 354.9V157.1c0-10.7 13-16.1 20.5-8.5l98.3 98.9c4.7 4.7 4.7 12.2 0 16.9l-98.3 98.9c-7.5 7.7-20.5 2.3-20.5-8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},s8={prefix:"far",iconName:"caret-square-up",icon:[448,512,[],"f151","M322.9 304H125.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},h8={prefix:"far",iconName:"chart-bar",icon:[512,512,[],"f080","M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z"]},m8={prefix:"far",iconName:"check-circle",icon:[512,512,[],"f058","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"]},v8={prefix:"far",iconName:"check-square",icon:[448,512,[],"f14a","M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z"]},z8={prefix:"far",iconName:"circle",icon:[512,512,[],"f111","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z"]},p8={prefix:"far",iconName:"clipboard",icon:[384,512,[],"f328","M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm144 418c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h42v36c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-36h42c3.3 0 6 2.7 6 6z"]},d8={prefix:"far",iconName:"clock",icon:[512,512,[],"f017","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z"]},u8={prefix:"far",iconName:"clone",icon:[512,512,[],"f24d","M464 0H144c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-48h48c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zM362 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h42v224c0 26.51 21.49 48 48 48h224v42a6 6 0 0 1-6 6zm96-96H150a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h308a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6z"]},M8={prefix:"far",iconName:"closed-captioning",icon:[512,512,[],"f20a","M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-211.1-85.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7zm190.4 0c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.9-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 220.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7z"]},C8={prefix:"far",iconName:"comment",icon:[512,512,[],"f075","M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"]},H8={prefix:"far",iconName:"comment-alt",icon:[512,512,[],"f27a","M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288z"]},g8={prefix:"far",iconName:"comment-dots",icon:[512,512,[],"f4ad","M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"]},V8={prefix:"far",iconName:"comments",icon:[576,512,[],"f086","M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z"]},L8={prefix:"far",iconName:"compass",icon:[496,512,[],"f14e","M347.94 129.86L203.6 195.83a31.938 31.938 0 0 0-15.77 15.77l-65.97 144.34c-7.61 16.65 9.54 33.81 26.2 26.2l144.34-65.97a31.938 31.938 0 0 0 15.77-15.77l65.97-144.34c7.61-16.66-9.54-33.81-26.2-26.2zm-77.36 148.72c-12.47 12.47-32.69 12.47-45.16 0-12.47-12.47-12.47-32.69 0-45.16 12.47-12.47 32.69-12.47 45.16 0 12.47 12.47 12.47 32.69 0 45.16zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z"]},F2={prefix:"far",iconName:"copy",icon:[448,512,[],"f0c5","M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"]},x8={prefix:"far",iconName:"copyright",icon:[512,512,[],"f1f9","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm107.351-101.064c-9.614 9.712-45.53 41.396-104.065 41.396-82.43 0-140.484-61.425-140.484-141.567 0-79.152 60.275-139.401 139.762-139.401 55.531 0 88.738 26.62 97.593 34.779a11.965 11.965 0 0 1 1.936 15.322l-18.155 28.113c-3.841 5.95-11.966 7.282-17.499 2.921-8.595-6.776-31.814-22.538-61.708-22.538-48.303 0-77.916 35.33-77.916 80.082 0 41.589 26.888 83.692 78.277 83.692 32.657 0 56.843-19.039 65.726-27.225 5.27-4.857 13.596-4.039 17.82 1.738l19.865 27.17a11.947 11.947 0 0 1-1.152 15.518z"]},b8={prefix:"far",iconName:"credit-card",icon:[576,512,[],"f09d","M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zM54.1 80h467.8c3.3 0 6 2.7 6 6v42H48.1V86c0-3.3 2.7-6 6-6zm467.8 352H54.1c-3.3 0-6-2.7-6-6V256h479.8v170c0 3.3-2.7 6-6 6zM192 332v40c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v40c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12z"]},N8={prefix:"far",iconName:"dizzy",icon:[496,512,[],"f567","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-33.8-217.9c7.8-7.8 7.8-20.5 0-28.3L196.3 192l17.9-17.9c7.8-7.8 7.8-20.5 0-28.3-7.8-7.8-20.5-7.8-28.3 0L168 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.9 7.7 20.5 7.7 28.4-.2zm160-92.2c-7.8-7.8-20.5-7.8-28.3 0L328 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.8 7.8 20.5 7.8 28.3 0 7.8-7.8 7.8-20.5 0-28.3l-17.8-18 17.9-17.9c7.7-7.8 7.7-20.4 0-28.2zM248 272c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z"]},A8={prefix:"far",iconName:"dot-circle",icon:[512,512,[],"f192","M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z"]},y8={prefix:"far",iconName:"edit",icon:[576,512,[],"f044","M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z"]},S8={prefix:"far",iconName:"envelope",icon:[512,512,[],"f0e0","M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z"]},w8={prefix:"far",iconName:"envelope-open",icon:[512,512,[],"f2b6","M494.586 164.516c-4.697-3.883-111.723-89.95-135.251-108.657C337.231 38.191 299.437 0 256 0c-43.205 0-80.636 37.717-103.335 55.859-24.463 19.45-131.07 105.195-135.15 108.549A48.004 48.004 0 0 0 0 201.485V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.509a48 48 0 0 0-17.414-36.993zM464 458a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V204.347c0-1.813.816-3.526 2.226-4.665 15.87-12.814 108.793-87.554 132.364-106.293C200.755 78.88 232.398 48 256 48c23.693 0 55.857 31.369 73.41 45.389 23.573 18.741 116.503 93.493 132.366 106.316a5.99 5.99 0 0 1 2.224 4.663V458zm-31.991-187.704c4.249 5.159 3.465 12.795-1.745 16.981-28.975 23.283-59.274 47.597-70.929 56.863C336.636 362.283 299.205 400 256 400c-43.452 0-81.287-38.237-103.335-55.86-11.279-8.967-41.744-33.413-70.927-56.865-5.21-4.187-5.993-11.822-1.745-16.981l15.258-18.528c4.178-5.073 11.657-5.843 16.779-1.726 28.618 23.001 58.566 47.035 70.56 56.571C200.143 320.631 232.307 352 256 352c23.602 0 55.246-30.88 73.41-45.389 11.994-9.535 41.944-33.57 70.563-56.568 5.122-4.116 12.601-3.346 16.778 1.727l15.258 18.526z"]},k8={prefix:"far",iconName:"eye",icon:[576,512,[],"f06e","M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"]},T8={prefix:"far",iconName:"eye-slash",icon:[640,512,[],"f070","M634 471L36 3.51A16 16 0 0 0 13.51 6l-10 12.49A16 16 0 0 0 6 41l598 467.49a16 16 0 0 0 22.49-2.49l10-12.49A16 16 0 0 0 634 471zM296.79 146.47l134.79 105.38C429.36 191.91 380.48 144 320 144a112.26 112.26 0 0 0-23.21 2.47zm46.42 219.07L208.42 260.16C210.65 320.09 259.53 368 320 368a113 113 0 0 0 23.21-2.46zM320 112c98.65 0 189.09 55 237.93 144a285.53 285.53 0 0 1-44 60.2l37.74 29.5a333.7 333.7 0 0 0 52.9-75.11 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64c-36.7 0-71.71 7-104.63 18.81l46.41 36.29c18.94-4.3 38.34-7.1 58.22-7.1zm0 288c-98.65 0-189.08-55-237.93-144a285.47 285.47 0 0 1 44.05-60.19l-37.74-29.5a333.6 333.6 0 0 0-52.89 75.1 32.35 32.35 0 0 0 0 29.19C89.72 376.41 197.08 448 320 448c36.7 0 71.71-7.05 104.63-18.81l-46.41-36.28C359.28 397.2 339.89 400 320 400z"]},P8={prefix:"far",iconName:"file",icon:[384,512,[],"f15b","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"]},E8={prefix:"far",iconName:"file-alt",icon:[384,512,[],"f15c","M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"]},D8={prefix:"far",iconName:"file-archive",icon:[384,512,[],"f1c6","M128.3 160v32h32v-32zm64-96h-32v32h32zm-64 32v32h32V96zm64 32h-32v32h32zm177.6-30.1L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h79.7v16h32V48H208v104c0 13.3 10.7 24 24 24h104zM194.2 265.7c-1.1-5.6-6-9.7-11.8-9.7h-22.1v-32h-32v32l-19.7 97.1C102 385.6 126.8 416 160 416c33.1 0 57.9-30.2 51.5-62.6zm-33.9 124.4c-17.9 0-32.4-12.1-32.4-27s14.5-27 32.4-27 32.4 12.1 32.4 27-14.5 27-32.4 27zm32-198.1h-32v32h32z"]},O8={prefix:"far",iconName:"file-audio",icon:[384,512,[],"f1c7","M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm144-76.024c0 10.691-12.926 16.045-20.485 8.485L136 360.486h-28c-6.627 0-12-5.373-12-12v-56c0-6.627 5.373-12 12-12h28l35.515-36.947c7.56-7.56 20.485-2.206 20.485 8.485v135.952zm41.201-47.13c9.051-9.297 9.06-24.133.001-33.439-22.149-22.752 12.235-56.246 34.395-33.481 27.198 27.94 27.212 72.444.001 100.401-21.793 22.386-56.947-10.315-34.397-33.481z"]},I8={prefix:"far",iconName:"file-code",icon:[384,512,[],"f1c9","M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"]},B8={prefix:"far",iconName:"file-excel",icon:[384,512,[],"f1c3","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm212-240h-28.8c-4.4 0-8.4 2.4-10.5 6.3-18 33.1-22.2 42.4-28.6 57.7-13.9-29.1-6.9-17.3-28.6-57.7-2.1-3.9-6.2-6.3-10.6-6.3H124c-9.3 0-15 10-10.4 18l46.3 78-46.3 78c-4.7 8 1.1 18 10.4 18h28.9c4.4 0 8.4-2.4 10.5-6.3 21.7-40 23-45 28.6-57.7 14.9 30.2 5.9 15.9 28.6 57.7 2.1 3.9 6.2 6.3 10.6 6.3H260c9.3 0 15-10 10.4-18L224 320c.7-1.1 30.3-50.5 46.3-78 4.7-8-1.1-18-10.3-18z"]},R8={prefix:"far",iconName:"file-image",icon:[384,512,[],"f1c5","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z"]},F8={prefix:"far",iconName:"file-pdf",icon:[384,512,[],"f1c1","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm250.2-143.7c-12.2-12-47-8.7-64.4-6.5-17.2-10.5-28.7-25-36.8-46.3 3.9-16.1 10.1-40.6 5.4-56-4.2-26.2-37.8-23.6-42.6-5.9-4.4 16.1-.4 38.5 7 67.1-10 23.9-24.9 56-35.4 74.4-20 10.3-47 26.2-51 46.2-3.3 15.8 26 55.2 76.1-31.2 22.4-7.4 46.8-16.5 68.4-20.1 18.9 10.2 41 17 55.8 17 25.5 0 28-28.2 17.5-38.7zm-198.1 77.8c5.1-13.7 24.5-29.5 30.4-35-19 30.3-30.4 35.7-30.4 35zm81.6-190.6c7.4 0 6.7 32.1 1.8 40.8-4.4-13.9-4.3-40.8-1.8-40.8zm-24.4 136.6c9.7-16.9 18-37 24.7-54.7 8.3 15.1 18.9 27.2 30.1 35.5-20.8 4.3-38.9 13.1-54.8 19.2zm131.6-5s-5 6-37.3-7.8c35.1-2.6 40.9 5.4 37.3 7.8z"]},Z8={prefix:"far",iconName:"file-powerpoint",icon:[384,512,[],"f1c4","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm72-60V236c0-6.6 5.4-12 12-12h69.2c36.7 0 62.8 27 62.8 66.3 0 74.3-68.7 66.5-95.5 66.5V404c0 6.6-5.4 12-12 12H132c-6.6 0-12-5.4-12-12zm48.5-87.4h23c7.9 0 13.9-2.4 18.1-7.2 8.5-9.8 8.4-28.5.1-37.8-4.1-4.6-9.9-7-17.4-7h-23.9v52z"]},j8={prefix:"far",iconName:"file-video",icon:[384,512,[],"f1c8","M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm228.687-211.303L224 305.374V268c0-11.046-8.954-20-20-20H100c-11.046 0-20 8.954-20 20v104c0 11.046 8.954 20 20 20h104c11.046 0 20-8.954 20-20v-37.374l52.687 52.674C286.704 397.318 304 390.28 304 375.986V264.011c0-14.311-17.309-21.319-27.313-11.314z"]},q8={prefix:"far",iconName:"file-word",icon:[384,512,[],"f1c2","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm220.1-208c-5.7 0-10.6 4-11.7 9.5-20.6 97.7-20.4 95.4-21 103.5-.2-1.2-.4-2.6-.7-4.3-.8-5.1.3.2-23.6-99.5-1.3-5.4-6.1-9.2-11.7-9.2h-13.3c-5.5 0-10.3 3.8-11.7 9.1-24.4 99-24 96.2-24.8 103.7-.1-1.1-.2-2.5-.5-4.2-.7-5.2-14.1-73.3-19.1-99-1.1-5.6-6-9.7-11.8-9.7h-16.8c-7.8 0-13.5 7.3-11.7 14.8 8 32.6 26.7 109.5 33.2 136 1.3 5.4 6.1 9.1 11.7 9.1h25.2c5.5 0 10.3-3.7 11.6-9.1l17.9-71.4c1.5-6.2 2.5-12 3-17.3l2.9 17.3c.1.4 12.6 50.5 17.9 71.4 1.3 5.3 6.1 9.1 11.6 9.1h24.7c5.5 0 10.3-3.7 11.6-9.1 20.8-81.9 30.2-119 34.5-136 1.9-7.6-3.8-14.9-11.6-14.9h-15.8z"]},U8={prefix:"far",iconName:"flag",icon:[512,512,[],"f024","M336.174 80c-49.132 0-93.305-32-161.913-32-31.301 0-58.303 6.482-80.721 15.168a48.04 48.04 0 0 0 2.142-20.727C93.067 19.575 74.167 1.594 51.201.104 23.242-1.71 0 20.431 0 48c0 17.764 9.657 33.262 24 41.562V496c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-83.443C109.869 395.28 143.259 384 199.826 384c49.132 0 93.305 32 161.913 32 58.479 0 101.972-22.617 128.548-39.981C503.846 367.161 512 352.051 512 335.855V95.937c0-34.459-35.264-57.768-66.904-44.117C409.193 67.309 371.641 80 336.174 80zM464 336c-21.783 15.412-60.824 32-102.261 32-59.945 0-102.002-32-161.913-32-43.361 0-96.379 9.403-127.826 24V128c21.784-15.412 60.824-32 102.261-32 59.945 0 102.002 32 161.913 32 43.271 0 96.32-17.366 127.826-32v240z"]},W8={prefix:"far",iconName:"flushed",icon:[496,512,[],"f579","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm96-312c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-112 24c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zm-80 48c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm160 144H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z"]},G8={prefix:"far",iconName:"folder",icon:[512,512,[],"f07b","M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"]},_8={prefix:"far",iconName:"folder-open",icon:[576,512,[],"f07c","M527.9 224H480v-48c0-26.5-21.5-48-48-48H272l-64-64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h400c16.5 0 31.9-8.5 40.7-22.6l79.9-128c20-31.9-3-73.4-40.7-73.4zM48 118c0-3.3 2.7-6 6-6h134.1l64 64H426c3.3 0 6 2.7 6 6v42H152c-16.8 0-32.4 8.8-41.1 23.2L48 351.4zm400 282H72l77.2-128H528z"]},$8={prefix:"far",iconName:"font-awesome-logo-full",icon:[3992,512,["Font Awesome"],"f4e6","M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z"]},Y8={prefix:"far",iconName:"frown",icon:[496,512,[],"f119","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z"]},X8={prefix:"far",iconName:"frown-open",icon:[496,512,[],"f57a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-48-248c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 112c-35.6 0-88.8 21.3-95.8 61.2-2 11.8 9 21.5 20.5 18.1 31.2-9.6 59.4-15.3 75.3-15.3s44.1 5.7 75.3 15.3c11.4 3.5 22.5-6.3 20.5-18.1-7-39.9-60.2-61.2-95.8-61.2z"]},K8={prefix:"far",iconName:"futbol",icon:[496,512,[],"f1e3","M483.8 179.4C449.8 74.6 352.6 8 248.1 8c-25.4 0-51.2 3.9-76.7 12.2C41.2 62.5-30.1 202.4 12.2 332.6 46.2 437.4 143.4 504 247.9 504c25.4 0 51.2-3.9 76.7-12.2 130.2-42.3 201.5-182.2 159.2-312.4zm-74.5 193.7l-52.2 6.4-43.7-60.9 24.4-75.2 71.1-22.1 38.9 36.4c-.2 30.7-7.4 61.1-21.7 89.2-4.7 9.3-10.7 17.8-16.8 26.2zm0-235.4l-10.4 53.1-70.7 22-64.2-46.5V92.5l47.4-26.2c39.2 13 73.4 38 97.9 71.4zM184.9 66.4L232 92.5v73.8l-64.2 46.5-70.6-22-10.1-52.5c24.3-33.4 57.9-58.6 97.8-71.9zM139 379.5L85.9 373c-14.4-20.1-37.3-59.6-37.8-115.3l39-36.4 71.1 22.2 24.3 74.3-43.5 61.7zm48.2 67l-22.4-48.1 43.6-61.7H287l44.3 61.7-22.4 48.1c-6.2 1.8-57.6 20.4-121.7 0z"]},Q8={prefix:"far",iconName:"gem",icon:[576,512,[],"f3a5","M464 0H112c-4 0-7.8 2-10 5.4L2 152.6c-2.9 4.4-2.6 10.2.7 14.2l276 340.8c4.8 5.9 13.8 5.9 18.6 0l276-340.8c3.3-4.1 3.6-9.8.7-14.2L474.1 5.4C471.8 2 468.1 0 464 0zm-19.3 48l63.3 96h-68.4l-51.7-96h56.8zm-202.1 0h90.7l51.7 96H191l51.6-96zm-111.3 0h56.8l-51.7 96H68l63.3-96zm-43 144h51.4L208 352 88.3 192zm102.9 0h193.6L288 435.3 191.2 192zM368 352l68.2-160h51.4L368 352z"]},J8={prefix:"far",iconName:"grimace",icon:[496,512,[],"f57f","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm16 16H152c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h192c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48zm-168 96h-24c-8.8 0-16-7.2-16-16v-8h40v24zm0-40h-40v-8c0-8.8 7.2-16 16-16h24v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm56 24c0 8.8-7.2 16-16 16h-24v-24h40v8zm0-24h-40v-24h24c8.8 0 16 7.2 16 16v8z"]},c0={prefix:"far",iconName:"grin",icon:[496,512,[],"f580","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]},a0={prefix:"far",iconName:"grin-alt",icon:[496,512,[],"f581","M200.3 248c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zm128 0c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3z"]},e0={prefix:"far",iconName:"grin-beam",icon:[496,512,[],"f582","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-235.9-72.9c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3zm160 0c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3z"]},i0={prefix:"far",iconName:"grin-beam-sweat",icon:[496,512,[],"f583","M440 160c29.5 0 53.3-26.3 53.3-58.7 0-25-31.7-75.5-46.2-97.3-3.6-5.3-10.7-5.3-14.2 0-14.5 21.8-46.2 72.3-46.2 97.3 0 32.4 23.8 58.7 53.3 58.7zM248 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zm105.3-52.9c-24.6 15.7-46 12.9-46.4 12.9 6.9 20.2 10.8 41.8 10.8 64.3 0 110.3-89.7 200-200 200S48 366.3 48 256 137.7 56 248 56c39.8 0 76.8 11.8 108 31.9 1.7-9.5 6.3-24.1 17.2-45.7C336.4 20.6 293.7 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-27-4.4-52.9-12.4-77.2zM168 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z"]},n0={prefix:"far",iconName:"grin-hearts",icon:[496,512,[],"f584","M353.6 304.6c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-152.8-48.9c4.5 1.2 9.2-1.5 10.5-6l19.4-69.9c5.6-20.3-7.4-41.1-28.8-44.5-18.6-3-36.4 9.8-41.5 27.9l-2 7.1-7.1-1.9c-18.2-4.7-38.2 4.3-44.9 22-7.7 20.2 3.8 41.9 24.2 47.2l70.2 18.1zm188.8-65.3c-6.7-17.6-26.7-26.7-44.9-22l-7.1 1.9-2-7.1c-5-18.1-22.8-30.9-41.5-27.9-21.4 3.4-34.4 24.2-28.8 44.5l19.4 69.9c1.2 4.5 5.9 7.2 10.5 6l70.2-18.2c20.4-5.3 31.9-26.9 24.2-47.1zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z"]},o0={prefix:"far",iconName:"grin-squint",icon:[496,512,[],"f585","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-234.7-40.8c3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3l-80-48c-5.1-3-11.4-1.9-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11.1.1 15.5zm242.9 2.5c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11-.1-15.5-3.8-4.4-10.2-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48z"]},t0={prefix:"far",iconName:"grin-squint-tears",icon:[512,512,[],"f586","M117.1 384.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 479 124.3 420.8 128 395c.8-6.4-4.6-11.8-10.9-10.9zm-41.2-41.7C40.3 268 53 176.1 114.6 114.6 152.4 76.8 202.6 56 256 56c36.2 0 70.8 9.8 101.2 27.7 3.8-20.3 8-36.1 12-48.3C333.8 17.2 294.9 8 256 8 192.5 8 129.1 32.2 80.6 80.6c-74.1 74.1-91.3 183.4-52 274 12.2-4.1 27.7-8.3 47.3-12.2zm352.3-187.6c45 76.6 34.9 176.9-30.8 242.6-37.8 37.8-88 58.6-141.4 58.6-30.5 0-59.8-7-86.4-19.8-3.9 19.5-8 35-12.2 47.2 31.4 13.6 65 20.6 98.7 20.6 63.5 0 126.9-24.2 175.4-72.6 78.1-78.1 93.1-195.4 45.2-288.6-12.3 4-28.2 8.1-48.5 12zm-33.3-26.9c25.8-3.7 84-13.7 100.9-30.6 21.9-21.9 21.5-57.9-.9-80.3s-58.3-22.8-80.3-.9C397.7 33 387.7 91.2 384 117c-.8 6.4 4.6 11.8 10.9 10.9zm-187 108.3c-3-3-7.2-4.2-11.4-3.2L106 255.7c-5.7 1.4-9.5 6.7-9.1 12.6.5 5.8 5.1 10.5 10.9 11l52.3 4.8 4.8 52.3c.5 5.8 5.2 10.4 11 10.9h.9c5.5 0 10.3-3.7 11.7-9.1l22.6-90.5c1-4.2-.2-8.5-3.2-11.5zm39.7-25.1l90.5-22.6c5.7-1.4 9.5-6.7 9.1-12.6-.5-5.8-5.1-10.5-10.9-11l-52.3-4.8-4.8-52.3c-.5-5.8-5.2-10.4-11-10.9-5.6-.1-11.2 3.4-12.6 9.1L233 196.5c-1 4.1.2 8.4 3.2 11.4 5 5 11.3 3.2 11.4 3.2zm52 88.5c-29.1 29.1-59.7 52.9-83.9 65.4-9.2 4.8-10 17.5-1.7 23.4 38.9 27.7 107 6.2 143.7-30.6S416 253 388.3 214.1c-5.8-8.2-18.5-7.6-23.4 1.7-12.3 24.2-36.2 54.7-65.3 83.8z"]},r0={prefix:"far",iconName:"grin-stars",icon:[496,512,[],"f587","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-227.9-57.5c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.5 1.9-12.2-4.3-13.2l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6.1 34.9zm259.7-72.7l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6 34.9c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.6 1.8-12.2-4.4-13.2z"]},l0={prefix:"far",iconName:"grin-tears",icon:[640,512,[],"f588","M117.1 256.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 351 124.3 292.8 128 267c.8-6.4-4.6-11.8-10.9-10.9zm506.7 30.6c-16.9-16.9-75.1-26.9-100.9-30.6-6.3-.9-11.7 4.5-10.8 10.8 3.7 25.8 13.7 84 30.6 100.9 21.9 21.9 57.9 21.5 80.3-.9 22.3-22.3 22.7-58.3.8-80.2zm-126.6 61.7C463.8 412.3 396.9 456 320 456c-76.9 0-143.8-43.7-177.2-107.6-12.5 37.4-25.2 43.9-28.3 46.5C159.1 460.7 234.5 504 320 504s160.9-43.3 205.5-109.1c-3.2-2.7-15.9-9.2-28.3-46.5zM122.7 224.5C137.9 129.2 220.5 56 320 56c99.5 0 182.1 73.2 197.3 168.5 2.1-.2 5.2-2.4 49.5 7C554.4 106 448.7 8 320 8S85.6 106 73.2 231.4c44.5-9.4 47.1-7.2 49.5-6.9zM320 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zM240 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z"]},f0={prefix:"far",iconName:"grin-tongue",icon:[496,512,[],"f589","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zM168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},s0={prefix:"far",iconName:"grin-tongue-squint",icon:[496,512,[],"f58a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zm36.9-281.1c-3.8-4.4-10.3-5.5-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zm-162.9 45.5l-80-48c-5-3-11.4-2-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3z"]},h0={prefix:"far",iconName:"grin-tongue-wink",icon:[496,512,[],"f58b","M152 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm176-52c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3z"]},m0={prefix:"far",iconName:"grin-wink",icon:[496,512,[],"f58c","M328 180c-25.69 0-55.88 16.92-59.86 42.12-1.75 11.22 11.5 18.24 19.83 10.84l9.55-8.48c14.81-13.19 46.16-13.19 60.97 0l9.55 8.48c8.48 7.43 21.56.25 19.83-10.84C383.88 196.92 353.69 180 328 180zm-160 60c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm185.55 64.64c-25.93 8.3-64.4 13.06-105.55 13.06s-79.62-4.75-105.55-13.06c-9.94-3.13-19.4 5.37-17.71 15.34C132.67 367.13 196.06 400 248 400s115.33-32.87 123.26-80.02c1.68-9.89-7.67-18.48-17.71-15.34zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z"]},v0={prefix:"far",iconName:"hand-lizard",icon:[576,512,[],"f258","M556.686 290.542L410.328 64.829C397.001 44.272 374.417 32 349.917 32H56C25.121 32 0 57.122 0 88v8c0 44.112 35.888 80 80 80h196.042l-18.333 48H144c-48.523 0-88 39.477-88 88 0 30.879 25.121 56 56 56h131.552c2.987 0 5.914.549 8.697 1.631L352 408.418V480h224V355.829c0-23.225-6.679-45.801-19.314-65.287zM528 432H400v-23.582c0-19.948-12.014-37.508-30.604-44.736l-99.751-38.788A71.733 71.733 0 0 0 243.552 320H112c-4.411 0-8-3.589-8-8 0-22.056 17.944-40 40-40h113.709c19.767 0 37.786-12.407 44.84-30.873l24.552-64.281c8.996-23.553-8.428-48.846-33.63-48.846H80c-17.645 0-32-14.355-32-32v-8c0-4.411 3.589-8 8-8h293.917c8.166 0 15.693 4.09 20.137 10.942l146.358 225.715A71.84 71.84 0 0 1 528 355.829V432z"]},z0={prefix:"far",iconName:"hand-paper",icon:[448,512,[],"f256","M372.57 112.641v-10.825c0-43.612-40.52-76.691-83.039-65.546-25.629-49.5-94.09-47.45-117.982.747C130.269 26.456 89.144 57.945 89.144 102v126.13c-19.953-7.427-43.308-5.068-62.083 8.871-29.355 21.796-35.794 63.333-14.55 93.153L132.48 498.569a32 32 0 0 0 26.062 13.432h222.897c14.904 0 27.835-10.289 31.182-24.813l30.184-130.958A203.637 203.637 0 0 0 448 310.564V179c0-40.62-35.523-71.992-75.43-66.359zm27.427 197.922c0 11.731-1.334 23.469-3.965 34.886L368.707 464h-201.92L51.591 302.303c-14.439-20.27 15.023-42.776 29.394-22.605l27.128 38.079c8.995 12.626 29.031 6.287 29.031-9.283V102c0-25.645 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V67c0-25.663 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V101.125c0-25.672 36.57-24.81 36.57.691V256c0 8.837 7.163 16 16 16h6.857c8.837 0 16-7.163 16-16v-76.309c0-26.242 36.57-25.64 36.57-.691v131.563z"]},p0={prefix:"far",iconName:"hand-peace",icon:[448,512,[],"f25b","M362.146 191.976c-13.71-21.649-38.761-34.016-65.006-30.341V74c0-40.804-32.811-74-73.141-74-40.33 0-73.14 33.196-73.14 74L160 168l-18.679-78.85C126.578 50.843 83.85 32.11 46.209 47.208 8.735 62.238-9.571 104.963 5.008 142.85l55.757 144.927c-30.557 24.956-43.994 57.809-24.733 92.218l54.853 97.999C102.625 498.97 124.73 512 148.575 512h205.702c30.744 0 57.558-21.44 64.555-51.797l27.427-118.999a67.801 67.801 0 0 0 1.729-15.203L448 256c0-44.956-43.263-77.343-85.854-64.024zM399.987 326c0 1.488-.169 2.977-.502 4.423l-27.427 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H148.575c-6.486 0-12.542-3.621-15.805-9.449l-54.854-98c-4.557-8.141-2.619-18.668 4.508-24.488l26.647-21.764a16 16 0 0 0 4.812-18.139l-64.09-166.549C37.226 92.956 84.37 74.837 96.51 106.389l59.784 155.357A16 16 0 0 0 171.227 272h11.632c8.837 0 16-7.163 16-16V74c0-34.375 50.281-34.43 50.281 0v182c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16v-28c0-25.122 36.567-25.159 36.567 0v28c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16 0-25.12 36.567-25.16 36.567 0v70z"]},d0={prefix:"far",iconName:"hand-point-down",icon:[448,512,[],"f0a7","M188.8 512c45.616 0 83.2-37.765 83.2-83.2v-35.647a93.148 93.148 0 0 0 22.064-7.929c22.006 2.507 44.978-3.503 62.791-15.985C409.342 368.1 448 331.841 448 269.299V248c0-60.063-40-98.512-40-127.2v-2.679c4.952-5.747 8-13.536 8-22.12V32c0-17.673-12.894-32-28.8-32H156.8C140.894 0 128 14.327 128 32v64c0 8.584 3.048 16.373 8 22.12v2.679c0 6.964-6.193 14.862-23.668 30.183l-.148.129-.146.131c-9.937 8.856-20.841 18.116-33.253 25.851C48.537 195.798 0 207.486 0 252.8c0 56.928 35.286 92 83.2 92 8.026 0 15.489-.814 22.4-2.176V428.8c0 45.099 38.101 83.2 83.2 83.2zm0-48c-18.7 0-35.2-16.775-35.2-35.2V270.4c-17.325 0-35.2 26.4-70.4 26.4-26.4 0-35.2-20.625-35.2-44 0-8.794 32.712-20.445 56.1-34.926 14.575-9.074 27.225-19.524 39.875-30.799 18.374-16.109 36.633-33.836 39.596-59.075h176.752C364.087 170.79 400 202.509 400 248v21.299c0 40.524-22.197 57.124-61.325 50.601-8.001 14.612-33.979 24.151-53.625 12.925-18.225 19.365-46.381 17.787-61.05 4.95V428.8c0 18.975-16.225 35.2-35.2 35.2zM328 64c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24z"]},u0={prefix:"far",iconName:"hand-point-left",icon:[512,512,[],"f0a5","M0 220.8C0 266.416 37.765 304 83.2 304h35.647a93.148 93.148 0 0 0 7.929 22.064c-2.507 22.006 3.503 44.978 15.985 62.791C143.9 441.342 180.159 480 242.701 480H264c60.063 0 98.512-40 127.2-40h2.679c5.747 4.952 13.536 8 22.12 8h64c17.673 0 32-12.894 32-28.8V188.8c0-15.906-14.327-28.8-32-28.8h-64c-8.584 0-16.373 3.048-22.12 8H391.2c-6.964 0-14.862-6.193-30.183-23.668l-.129-.148-.131-.146c-8.856-9.937-18.116-20.841-25.851-33.253C316.202 80.537 304.514 32 259.2 32c-56.928 0-92 35.286-92 83.2 0 8.026.814 15.489 2.176 22.4H83.2C38.101 137.6 0 175.701 0 220.8zm48 0c0-18.7 16.775-35.2 35.2-35.2h158.4c0-17.325-26.4-35.2-26.4-70.4 0-26.4 20.625-35.2 44-35.2 8.794 0 20.445 32.712 34.926 56.1 9.074 14.575 19.524 27.225 30.799 39.875 16.109 18.374 33.836 36.633 59.075 39.596v176.752C341.21 396.087 309.491 432 264 432h-21.299c-40.524 0-57.124-22.197-50.601-61.325-14.612-8.001-24.151-33.979-12.925-53.625-19.365-18.225-17.787-46.381-4.95-61.05H83.2C64.225 256 48 239.775 48 220.8zM448 360c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z"]},M0={prefix:"far",iconName:"hand-point-right",icon:[512,512,[],"f0a4","M428.8 137.6h-86.177a115.52 115.52 0 0 0 2.176-22.4c0-47.914-35.072-83.2-92-83.2-45.314 0-57.002 48.537-75.707 78.784-7.735 12.413-16.994 23.317-25.851 33.253l-.131.146-.129.148C135.662 161.807 127.764 168 120.8 168h-2.679c-5.747-4.952-13.536-8-22.12-8H32c-17.673 0-32 12.894-32 28.8v230.4C0 435.106 14.327 448 32 448h64c8.584 0 16.373-3.048 22.12-8h2.679c28.688 0 67.137 40 127.2 40h21.299c62.542 0 98.8-38.658 99.94-91.145 12.482-17.813 18.491-40.785 15.985-62.791A93.148 93.148 0 0 0 393.152 304H428.8c45.435 0 83.2-37.584 83.2-83.2 0-45.099-38.101-83.2-83.2-83.2zm0 118.4h-91.026c12.837 14.669 14.415 42.825-4.95 61.05 11.227 19.646 1.687 45.624-12.925 53.625 6.524 39.128-10.076 61.325-50.6 61.325H248c-45.491 0-77.21-35.913-120-39.676V215.571c25.239-2.964 42.966-21.222 59.075-39.596 11.275-12.65 21.725-25.3 30.799-39.875C232.355 112.712 244.006 80 252.8 80c23.375 0 44 8.8 44 35.2 0 35.2-26.4 53.075-26.4 70.4h158.4c18.425 0 35.2 16.5 35.2 35.2 0 18.975-16.225 35.2-35.2 35.2zM88 384c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z"]},C0={prefix:"far",iconName:"hand-point-up",icon:[448,512,[],"f0a6","M105.6 83.2v86.177a115.52 115.52 0 0 0-22.4-2.176c-47.914 0-83.2 35.072-83.2 92 0 45.314 48.537 57.002 78.784 75.707 12.413 7.735 23.317 16.994 33.253 25.851l.146.131.148.129C129.807 376.338 136 384.236 136 391.2v2.679c-4.952 5.747-8 13.536-8 22.12v64c0 17.673 12.894 32 28.8 32h230.4c15.906 0 28.8-14.327 28.8-32v-64c0-8.584-3.048-16.373-8-22.12V391.2c0-28.688 40-67.137 40-127.2v-21.299c0-62.542-38.658-98.8-91.145-99.94-17.813-12.482-40.785-18.491-62.791-15.985A93.148 93.148 0 0 0 272 118.847V83.2C272 37.765 234.416 0 188.8 0c-45.099 0-83.2 38.101-83.2 83.2zm118.4 0v91.026c14.669-12.837 42.825-14.415 61.05 4.95 19.646-11.227 45.624-1.687 53.625 12.925 39.128-6.524 61.325 10.076 61.325 50.6V264c0 45.491-35.913 77.21-39.676 120H183.571c-2.964-25.239-21.222-42.966-39.596-59.075-12.65-11.275-25.3-21.725-39.875-30.799C80.712 279.645 48 267.994 48 259.2c0-23.375 8.8-44 35.2-44 35.2 0 53.075 26.4 70.4 26.4V83.2c0-18.425 16.5-35.2 35.2-35.2 18.975 0 35.2 16.225 35.2 35.2zM352 424c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z"]},H0={prefix:"far",iconName:"hand-pointer",icon:[448,512,[],"f25a","M358.182 179.361c-19.493-24.768-52.679-31.945-79.872-19.098-15.127-15.687-36.182-22.487-56.595-19.629V67c0-36.944-29.736-67-66.286-67S89.143 30.056 89.143 67v161.129c-19.909-7.41-43.272-5.094-62.083 8.872-29.355 21.795-35.793 63.333-14.55 93.152l109.699 154.001C134.632 501.59 154.741 512 176 512h178.286c30.802 0 57.574-21.5 64.557-51.797l27.429-118.999A67.873 67.873 0 0 0 448 326v-84c0-46.844-46.625-79.273-89.818-62.639zM80.985 279.697l27.126 38.079c8.995 12.626 29.031 6.287 29.031-9.283V67c0-25.12 36.571-25.16 36.571 0v175c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16v-35c0-25.12 36.571-25.16 36.571 0v35c0 8.836 7.163 16 16 16H272c8.837 0 16-7.164 16-16v-21c0-25.12 36.571-25.16 36.571 0v21c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16 0-25.121 36.571-25.16 36.571 0v84c0 1.488-.169 2.977-.502 4.423l-27.43 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H176c-5.769 0-11.263-2.878-14.697-7.697l-109.712-154c-14.406-20.223 14.994-42.818 29.394-22.606zM176.143 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.733 0-14-7.163-14-16zm75.428 0v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16zM327 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16z"]},g0={prefix:"far",iconName:"hand-rock",icon:[512,512,[],"f255","M408.864 79.052c-22.401-33.898-66.108-42.273-98.813-23.588-29.474-31.469-79.145-31.093-108.334-.022-47.16-27.02-108.71 5.055-110.671 60.806C44.846 105.407 0 140.001 0 187.429v56.953c0 32.741 14.28 63.954 39.18 85.634l97.71 85.081c4.252 3.702 3.11 5.573 3.11 32.903 0 17.673 14.327 32 32 32h252c17.673 0 32-14.327 32-32 0-23.513-1.015-30.745 3.982-42.37l42.835-99.656c6.094-14.177 9.183-29.172 9.183-44.568V146.963c0-52.839-54.314-88.662-103.136-67.911zM464 261.406a64.505 64.505 0 0 1-5.282 25.613l-42.835 99.655c-5.23 12.171-7.883 25.04-7.883 38.25V432H188v-10.286c0-16.37-7.14-31.977-19.59-42.817l-97.71-85.08C56.274 281.255 48 263.236 48 244.381v-56.953c0-33.208 52-33.537 52 .677v41.228a16 16 0 0 0 5.493 12.067l7 6.095A16 16 0 0 0 139 235.429V118.857c0-33.097 52-33.725 52 .677v26.751c0 8.836 7.164 16 16 16h7c8.836 0 16-7.164 16-16v-41.143c0-33.134 52-33.675 52 .677v40.466c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16v-27.429c0-33.03 52-33.78 52 .677v26.751c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16 0-33.146 52-33.613 52 .677v114.445z"]},V0={prefix:"far",iconName:"hand-scissors",icon:[512,512,[],"f257","M256 480l70-.013c5.114 0 10.231-.583 15.203-1.729l118.999-27.427C490.56 443.835 512 417.02 512 386.277V180.575c0-23.845-13.03-45.951-34.005-57.69l-97.999-54.853c-34.409-19.261-67.263-5.824-92.218 24.733L142.85 37.008c-37.887-14.579-80.612 3.727-95.642 41.201-15.098 37.642 3.635 80.37 41.942 95.112L168 192l-94-9.141c-40.804 0-74 32.811-74 73.14 0 40.33 33.196 73.141 74 73.141h87.635c-3.675 26.245 8.692 51.297 30.341 65.006C178.657 436.737 211.044 480 256 480zm0-48.013c-25.16 0-25.12-36.567 0-36.567 8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16h-28c-25.159 0-25.122-36.567 0-36.567h28c8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16H74c-34.43 0-34.375-50.281 0-50.281h182c8.837 0 16-7.163 16-16v-11.632a16 16 0 0 0-10.254-14.933L106.389 128.51c-31.552-12.14-13.432-59.283 19.222-46.717l166.549 64.091a16.001 16.001 0 0 0 18.139-4.812l21.764-26.647c5.82-7.127 16.348-9.064 24.488-4.508l98 54.854c5.828 3.263 9.449 9.318 9.449 15.805v205.701c0 8.491-5.994 15.804-14.576 17.782l-119.001 27.427a19.743 19.743 0 0 1-4.423.502h-70z"]},L0={prefix:"far",iconName:"hand-spock",icon:[512,512,[],"f259","M501.03053,116.17605c-19.39059-31.50779-51.24406-35.72849-66.31044-35.01756-14.11325-50.81051-62.0038-54.08-70.73816-54.08a74.03091,74.03091,0,0,0-72.23816,58.916l-4.64648,22.66014-13.68357-53.207c-9.09569-35.37107-46.412-64.05074-89.66-53.07223a73.89749,73.89749,0,0,0-55.121,78.94722,73.68273,73.68273,0,0,0-64.8495,94.42181l24.35933,82.19721c-38.24017-7.54492-62.79677,16.18358-68.11512,21.84764a73.6791,73.6791,0,0,0,3.19921,104.19329l91.36509,85.9765A154.164,154.164,0,0,0,220.62279,512h107.4549A127.30079,127.30079,0,0,0,452.3392,413.86139l57.623-241.96272A73.20274,73.20274,0,0,0,501.03053,116.17605Zm-37.7597,44.60544L405.64788,402.74812a79.46616,79.46616,0,0,1-77.57019,61.25972H220.62279a106.34052,106.34052,0,0,1-73.1366-28.998l-91.369-85.98041C31.34381,325.72669,66.61133,288.131,91.39644,311.5392l51.123,48.10739c5.42577,5.10937,13.48239.71679,13.48239-5.82617a246.79914,246.79914,0,0,0-10.17771-70.1523l-36.01362-121.539c-9.7324-32.88279,39.69916-47.27145,49.38664-14.625l31.3437,105.77923c5.59374,18.90428,33.78119,10.71288,28.9648-8.00781L177.06427,80.23662c-8.50389-33.1035,41.43157-45.64646,49.86515-12.83593l47.32609,184.035c4.42773,17.24218,29.16207,16.5039,32.71089-.80468l31.791-154.9706c6.81054-33.1074,57.51748-24.10741,50.11906,11.96288L360.32764,246.78924c-3.72265,18.10936,23.66793,24.63084,28.05659,6.21679L413.185,148.85962C421.1498,115.512,471.14,127.79713,463.27083,160.78149Z"]},x0={prefix:"far",iconName:"handshake",icon:[640,512,[],"f2b5","M519.2 127.9l-47.6-47.6A56.252 56.252 0 0 0 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H0v255.7h64c17.6 0 31.8-14.2 31.9-31.7h9.1l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23h57.9c.1 17.5 14.4 31.7 31.9 31.7h64V127.9H519.2zM48 351.6c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16zm390-6.9l-26.1 32.2c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-6 7.3-15 4.8-18 2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H96V175.8h41.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 3.9 7.9 1.2 11.3zm106-40.8h-69.2c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.3-9.9-8.5-25.1 1.2-33.9l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H544v128zm48 47.7c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16z"]},b0={prefix:"far",iconName:"hdd",icon:[576,512,[],"f0a0","M567.403 235.642L462.323 84.589A48 48 0 0 0 422.919 64H153.081a48 48 0 0 0-39.404 20.589L8.597 235.642A48.001 48.001 0 0 0 0 263.054V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V263.054c0-9.801-3-19.366-8.597-27.412zM153.081 112h269.838l77.913 112H75.168l77.913-112zM528 400H48V272h480v128zm-32-64c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32zm-96 0c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32z"]},N0={prefix:"far",iconName:"heart",icon:[512,512,[],"f004","M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z"]},A0={prefix:"far",iconName:"hospital",icon:[448,512,[],"f0f8","M128 244v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12zm140 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm-76 84v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm76 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm180 124v36H0v-36c0-6.627 5.373-12 12-12h19.5V85.035C31.5 73.418 42.245 64 55.5 64H144V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v40h88.5c13.255 0 24 9.418 24 21.035V464H436c6.627 0 12 5.373 12 12zM79.5 463H192v-67c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v67h112.5V112H304v24c0 13.255-10.745 24-24 24H168c-13.255 0-24-10.745-24-24v-24H79.5v351zM266 64h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6z"]},y0={prefix:"far",iconName:"hourglass",icon:[384,512,[],"f254","M368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.899 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48zM64 48h256c0 101.62-57.307 184-128 184S64 149.621 64 48zm256 416H64c0-101.62 57.308-184 128-184s128 82.38 128 184z"]},S0={prefix:"far",iconName:"id-badge",icon:[384,512,[],"f2c1","M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h288v416zM144 112h96c8.8 0 16-7.2 16-16s-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16zm48 176c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z"]},w0={prefix:"far",iconName:"id-card",icon:[576,512,[],"f2c2","M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H303.2c.9-4.5.8 3.6.8-22.4 0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6 0 26-.2 17.9.8 22.4H48V144h480v288zm-168-80h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm-168 96c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z"]},k0={prefix:"far",iconName:"image",icon:[512,512,[],"f03e","M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"]},T0={prefix:"far",iconName:"images",icon:[576,512,[],"f302","M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v48H54a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6v-10h48zm42-336H150a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6V86a6 6 0 0 0-6-6zm6-48c26.51 0 48 21.49 48 48v256c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h384zM264 144c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm-72 96l39.515-39.515c4.686-4.686 12.284-4.686 16.971 0L288 240l103.515-103.515c4.686-4.686 12.284-4.686 16.971 0L480 208v80H192v-48z"]},P0={prefix:"far",iconName:"keyboard",icon:[576,512,[],"f11c","M528 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm8 336c0 4.411-3.589 8-8 8H48c-4.411 0-8-3.589-8-8V112c0-4.411 3.589-8 8-8h480c4.411 0 8 3.589 8 8v288zM170 270v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-336 82v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm384 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zM122 188v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-98 158v-16c0-6.627-5.373-12-12-12H180c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h216c6.627 0 12-5.373 12-12z"]},E0={prefix:"far",iconName:"kiss",icon:[496,512,[],"f596","M168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm136 132c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},D0={prefix:"far",iconName:"kiss-beam",icon:[496,512,[],"f597","M168 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm56-148c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zm24-156c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4z"]},O0={prefix:"far",iconName:"kiss-wink-heart",icon:[504,512,[],"f598","M304 308.5c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36 21.7-9.1 35.1-23.4 35.1-36.4zm70.5-83.5l9.5 8.5c3.8 3.3 9.3 4 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 5.8 3.1 11.2.7 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0zM136 208.5c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm365.1 194c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zM334 436.3c-26.1 12.5-55.2 19.7-86 19.7-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200c0 22.1-3.7 43.3-10.4 63.2 9 6.4 17 14.2 22.6 23.9 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-2.5-7.3 4.3 17.2-13.4-46.8z"]},I0={prefix:"far",iconName:"laugh",icon:[496,512,[],"f599","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 224c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"]},B0={prefix:"far",iconName:"laugh-beam",icon:[496,512,[],"f59a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 152c-23.8 0-52.7 29.3-56 71.4-.7 8.6 10.8 11.9 14.9 4.5l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.1-42.1-32-71.4-55.8-71.4zm-201 75.9l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.6 8.5 10.9 11.9 15.1 4.5zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"]},R0={prefix:"far",iconName:"laugh-squint",icon:[496,512,[],"f59b","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM343.6 196l33.6-40.3c8.6-10.3-3.8-24.8-15.4-18l-80 48c-7.8 4.7-7.8 15.9 0 20.6l80 48c11.5 6.8 24-7.6 15.4-18L343.6 196zm-209.4 58.3l80-48c7.8-4.7 7.8-15.9 0-20.6l-80-48c-11.6-6.9-24 7.7-15.4 18l33.6 40.3-33.6 40.3c-8.7 10.4 3.8 24.8 15.4 18zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"]},F0={prefix:"far",iconName:"laugh-wink",icon:[496,512,[],"f59c","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6C68.8 359.6 48 309.4 48 256s20.8-103.6 58.6-141.4C144.4 76.8 194.6 56 248 56s103.6 20.8 141.4 58.6c37.8 37.8 58.6 88 58.6 141.4s-20.8 103.6-58.6 141.4zM328 164c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1zm-160 60c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"]},Z0={prefix:"far",iconName:"lemon",icon:[512,512,[],"f094","M484.112 27.889C455.989-.233 416.108-8.057 387.059 8.865 347.604 31.848 223.504-41.111 91.196 91.197-41.277 223.672 31.923 347.472 8.866 387.058c-16.922 29.051-9.1 68.932 19.022 97.054 28.135 28.135 68.011 35.938 97.057 19.021 39.423-22.97 163.557 49.969 295.858-82.329 132.474-132.477 59.273-256.277 82.331-295.861 16.922-29.05 9.1-68.931-19.022-97.054zm-22.405 72.894c-38.8 66.609 45.6 165.635-74.845 286.08-120.44 120.443-219.475 36.048-286.076 74.843-22.679 13.207-64.035-27.241-50.493-50.488 38.8-66.609-45.6-165.635 74.845-286.08C245.573 4.702 344.616 89.086 411.219 50.292c22.73-13.24 64.005 27.288 50.488 50.491zm-169.861 8.736c1.37 10.96-6.404 20.957-17.365 22.327-54.846 6.855-135.779 87.787-142.635 142.635-1.373 10.989-11.399 18.734-22.326 17.365-10.961-1.37-18.735-11.366-17.365-22.326 9.162-73.286 104.167-168.215 177.365-177.365 10.953-1.368 20.956 6.403 22.326 17.364z"]},j0={prefix:"far",iconName:"life-ring",icon:[512,512,[],"f1cd","M256 504c136.967 0 248-111.033 248-248S392.967 8 256 8 8 119.033 8 256s111.033 248 248 248zm-103.398-76.72l53.411-53.411c31.806 13.506 68.128 13.522 99.974 0l53.411 53.411c-63.217 38.319-143.579 38.319-206.796 0zM336 256c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zm91.28 103.398l-53.411-53.411c13.505-31.806 13.522-68.128 0-99.974l53.411-53.411c38.319 63.217 38.319 143.579 0 206.796zM359.397 84.72l-53.411 53.411c-31.806-13.505-68.128-13.522-99.973 0L152.602 84.72c63.217-38.319 143.579-38.319 206.795 0zM84.72 152.602l53.411 53.411c-13.506 31.806-13.522 68.128 0 99.974L84.72 359.398c-38.319-63.217-38.319-143.579 0-206.796z"]},q0={prefix:"far",iconName:"lightbulb",icon:[352,512,[],"f0eb","M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"]},U0={prefix:"far",iconName:"list-alt",icon:[512,512,[],"f022","M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z"]},W0={prefix:"far",iconName:"map",icon:[576,512,[],"f279","M560.02 32c-1.96 0-3.98.37-5.96 1.16L384.01 96H384L212 35.28A64.252 64.252 0 0 0 191.76 32c-6.69 0-13.37 1.05-19.81 3.14L20.12 87.95A32.006 32.006 0 0 0 0 117.66v346.32C0 473.17 7.53 480 15.99 480c1.96 0 3.97-.37 5.96-1.16L192 416l172 60.71a63.98 63.98 0 0 0 40.05.15l151.83-52.81A31.996 31.996 0 0 0 576 394.34V48.02c0-9.19-7.53-16.02-15.98-16.02zM224 90.42l128 45.19v285.97l-128-45.19V90.42zM48 418.05V129.07l128-44.53v286.2l-.64.23L48 418.05zm480-35.13l-128 44.53V141.26l.64-.24L528 93.95v288.97z"]},G0={prefix:"far",iconName:"meh",icon:[496,512,[],"f11a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z"]},_0={prefix:"far",iconName:"meh-blank",icon:[496,512,[],"f5a4","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},$0={prefix:"far",iconName:"meh-rolling-eyes",icon:[496,512,[],"f5a5","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm88-304c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40 0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40zm-104-40c0-39.8-32.2-72-72-72s-72 32.2-72 72 32.2 72 72 72 72-32.2 72-72zm-112 0c0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40s-40-17.9-40-40zm192 128H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z"]},Y0={prefix:"far",iconName:"minus-square",icon:[448,512,[],"f146","M108 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H108zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},X0={prefix:"far",iconName:"money-bill-alt",icon:[640,512,[],"f3d1","M320 144c-53.02 0-96 50.14-96 112 0 61.85 42.98 112 96 112 53 0 96-50.13 96-112 0-61.86-42.98-112-96-112zm40 168c0 4.42-3.58 8-8 8h-64c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h16v-55.44l-.47.31a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09l15.33-10.22a23.99 23.99 0 0 1 13.31-4.03H328c4.42 0 8 3.58 8 8v88h16c4.42 0 8 3.58 8 8v16zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zm-16 272c-35.35 0-64 28.65-64 64H112c0-35.35-28.65-64-64-64V176c35.35 0 64-28.65 64-64h416c0 35.35 28.65 64 64 64v160z"]},K0={prefix:"far",iconName:"moon",icon:[512,512,[],"f186","M279.135 512c78.756 0 150.982-35.804 198.844-94.775 28.27-34.831-2.558-85.722-46.249-77.401-82.348 15.683-158.272-47.268-158.272-130.792 0-48.424 26.06-92.292 67.434-115.836 38.745-22.05 28.999-80.788-15.022-88.919A257.936 257.936 0 0 0 279.135 0c-141.36 0-256 114.575-256 256 0 141.36 114.576 256 256 256zm0-464c12.985 0 25.689 1.201 38.016 3.478-54.76 31.163-91.693 90.042-91.693 157.554 0 113.848 103.641 199.2 215.252 177.944C402.574 433.964 344.366 464 279.135 464c-114.875 0-208-93.125-208-208s93.125-208 208-208z"]},Q0={prefix:"far",iconName:"newspaper",icon:[576,512,[],"f1ea","M552 64H112c-20.858 0-38.643 13.377-45.248 32H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h496c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24zM48 392V144h16v248c0 4.411-3.589 8-8 8s-8-3.589-8-8zm480 8H111.422c.374-2.614.578-5.283.578-8V112h416v288zM172 280h136c6.627 0 12-5.373 12-12v-96c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v96c0 6.627 5.373 12 12 12zm28-80h80v40h-80v-40zm-40 140v-24c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H172c-6.627 0-12-5.373-12-12zm192 0v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0-144v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0 72v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12z"]},J0={prefix:"far",iconName:"object-group",icon:[512,512,[],"f247","M500 128c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v256H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V128h12zm-52-64h32v32h-32V64zM32 64h32v32H32V64zm32 384H32v-32h32v32zm416 0h-32v-32h32v32zm-40-64h-12c-6.627 0-12 5.373-12 12v12H96v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h12v256zm-36-192h-84v-52c0-6.628-5.373-12-12-12H108c-6.627 0-12 5.372-12 12v168c0 6.628 5.373 12 12 12h84v52c0 6.628 5.373 12 12 12h200c6.627 0 12-5.372 12-12V204c0-6.628-5.373-12-12-12zm-268-24h144v112H136V168zm240 176H232v-24h76c6.627 0 12-5.372 12-12v-76h56v112z"]},c5={prefix:"far",iconName:"object-ungroup",icon:[576,512,[],"f248","M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z"]},a5={prefix:"far",iconName:"paper-plane",icon:[512,512,[],"f1d8","M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z"]},e5={prefix:"far",iconName:"pause-circle",icon:[512,512,[],"f28b","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z"]},i5={prefix:"far",iconName:"play-circle",icon:[512,512,[],"f144","M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 21v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z"]},n5={prefix:"far",iconName:"plus-square",icon:[448,512,[],"f0fe","M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},o5={prefix:"far",iconName:"question-circle",icon:[512,512,[],"f059","M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"]},t5={prefix:"far",iconName:"registered",icon:[512,512,[],"f25d","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm110.442-81.791c-53.046-96.284-50.25-91.468-53.271-96.085 24.267-13.879 39.482-41.563 39.482-73.176 0-52.503-30.247-85.252-101.498-85.252h-78.667c-6.617 0-12 5.383-12 12V380c0 6.617 5.383 12 12 12h38.568c6.617 0 12-5.383 12-12v-83.663h31.958l47.515 89.303a11.98 11.98 0 0 0 10.593 6.36h42.81c9.14 0 14.914-9.799 10.51-17.791zM256.933 239.906h-33.875v-64.14h27.377c32.417 0 38.929 12.133 38.929 31.709-.001 20.913-11.518 32.431-32.431 32.431z"]},r5={prefix:"far",iconName:"sad-cry",icon:[496,512,[],"f5b3","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm144 386.4V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v151.4C315.5 447 282.8 456 248 456s-67.5-9-96-24.6V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v114.4c-34.6-36-56-84.7-56-138.4 0-110.3 89.7-200 200-200s200 89.7 200 200c0 53.7-21.4 102.5-56 138.4zM205.8 234.5c4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.3 7.9 4.8 13.7 1.6zM344 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.5 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm-96 92c-30.9 0-56 28.7-56 64s25.1 64 56 64 56-28.7 56-64-25.1-64-56-64z"]},l5={prefix:"far",iconName:"sad-tear",icon:[496,512,[],"f5b4","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm8-152c-13.2 0-24 10.8-24 24s10.8 24 24 24c23.8 0 46.3 10.5 61.6 28.8 8.1 9.8 23.2 11.9 33.8 3.1 10.2-8.5 11.6-23.6 3.1-33.8C330 320.8 294.1 304 256 304zm-88-64c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-165.6 98.8C151 290.1 126 325.4 126 342.9c0 22.7 18.8 41.1 42 41.1s42-18.4 42-41.1c0-17.5-25-52.8-36.4-68.1-2.8-3.7-8.4-3.7-11.2 0z"]},f5={prefix:"far",iconName:"save",icon:[448,512,[],"f0c7","M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"]},s5={prefix:"far",iconName:"share-square",icon:[576,512,[],"f14d","M561.938 158.06L417.94 14.092C387.926-15.922 336 5.097 336 48.032v57.198c-42.45 1.88-84.03 6.55-120.76 17.99-35.17 10.95-63.07 27.58-82.91 49.42C108.22 199.2 96 232.6 96 271.94c0 61.697 33.178 112.455 84.87 144.76 37.546 23.508 85.248-12.651 71.02-55.74-15.515-47.119-17.156-70.923 84.11-78.76V336c0 42.993 51.968 63.913 81.94 33.94l143.998-144c18.75-18.74 18.75-49.14 0-67.88zM384 336V232.16C255.309 234.082 166.492 255.35 206.31 376 176.79 357.55 144 324.08 144 271.94c0-109.334 129.14-118.947 240-119.85V48l144 144-144 144zm24.74 84.493a82.658 82.658 0 0 0 20.974-9.303c7.976-4.952 18.286.826 18.286 10.214V464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h132c6.627 0 12 5.373 12 12v4.486c0 4.917-2.987 9.369-7.569 11.152-13.702 5.331-26.396 11.537-38.05 18.585a12.138 12.138 0 0 1-6.28 1.777H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6v-25.966c0-5.37 3.579-10.059 8.74-11.541z"]},h5={prefix:"far",iconName:"smile",icon:[496,512,[],"f118","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z"]},m5={prefix:"far",iconName:"smile-beam",icon:[496,512,[],"f5b8","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm84-143.4c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.6-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.2-8.4-25.3-7.1-33.8 3.1zM136.5 211c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.4 1.1 7.4-.5 9.3-3.7l9.5-17zM328 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4z"]},v5={prefix:"far",iconName:"smile-wink",icon:[496,512,[],"f4da","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm117.8-146.4c-10.2-8.5-25.3-7.1-33.8 3.1-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-60c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1z"]},z5={prefix:"far",iconName:"snowflake",icon:[448,512,[],"f2dc","M440.1 355.2l-39.2-23 34.1-9.3c8.4-2.3 13.4-11.1 11.1-19.6l-4.1-15.5c-2.2-8.5-10.9-13.6-19.3-11.3L343 298.2 271.2 256l71.9-42.2 79.7 21.7c8.4 2.3 17-2.8 19.3-11.3l4.1-15.5c2.2-8.5-2.7-17.3-11.1-19.6l-34.1-9.3 39.2-23c7.5-4.4 10.1-14.2 5.8-21.9l-7.9-13.9c-4.3-7.7-14-10.3-21.5-5.9l-39.2 23 9.1-34.7c2.2-8.5-2.7-17.3-11.1-19.6l-15.2-4.1c-8.4-2.3-17 2.8-19.3 11.3l-21.3 81-71.9 42.2v-84.5L306 70.4c6.1-6.2 6.1-16.4 0-22.6l-11.1-11.3c-6.1-6.2-16.1-6.2-22.2 0l-24.9 25.4V16c0-8.8-7-16-15.7-16h-15.7c-8.7 0-15.7 7.2-15.7 16v46.1l-24.9-25.4c-6.1-6.2-16.1-6.2-22.2 0L142.1 48c-6.1 6.2-6.1 16.4 0 22.6l58.3 59.3v84.5l-71.9-42.2-21.3-81c-2.2-8.5-10.9-13.6-19.3-11.3L72.7 84c-8.4 2.3-13.4 11.1-11.1 19.6l9.1 34.7-39.2-23c-7.5-4.4-17.1-1.8-21.5 5.9l-7.9 13.9c-4.3 7.7-1.8 17.4 5.8 21.9l39.2 23-34.1 9.1c-8.4 2.3-13.4 11.1-11.1 19.6L6 224.2c2.2 8.5 10.9 13.6 19.3 11.3l79.7-21.7 71.9 42.2-71.9 42.2-79.7-21.7c-8.4-2.3-17 2.8-19.3 11.3l-4.1 15.5c-2.2 8.5 2.7 17.3 11.1 19.6l34.1 9.3-39.2 23c-7.5 4.4-10.1 14.2-5.8 21.9L10 391c4.3 7.7 14 10.3 21.5 5.9l39.2-23-9.1 34.7c-2.2 8.5 2.7 17.3 11.1 19.6l15.2 4.1c8.4 2.3 17-2.8 19.3-11.3l21.3-81 71.9-42.2v84.5l-58.3 59.3c-6.1 6.2-6.1 16.4 0 22.6l11.1 11.3c6.1 6.2 16.1 6.2 22.2 0l24.9-25.4V496c0 8.8 7 16 15.7 16h15.7c8.7 0 15.7-7.2 15.7-16v-46.1l24.9 25.4c6.1 6.2 16.1 6.2 22.2 0l11.1-11.3c6.1-6.2 6.1-16.4 0-22.6l-58.3-59.3v-84.5l71.9 42.2 21.3 81c2.2 8.5 10.9 13.6 19.3 11.3L375 428c8.4-2.3 13.4-11.1 11.1-19.6l-9.1-34.7 39.2 23c7.5 4.4 17.1 1.8 21.5-5.9l7.9-13.9c4.6-7.5 2.1-17.3-5.5-21.7z"]},p5={prefix:"far",iconName:"square",icon:[448,512,[],"f0c8","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z"]},d5={prefix:"far",iconName:"star",icon:[576,512,[],"f005","M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z"]},u5={prefix:"far",iconName:"star-half",icon:[576,512,[],"f089","M288 385.3l-124.3 65.4 23.7-138.4-100.6-98 139-20.2 62.2-126V0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6v-54.3z"]},M5={prefix:"far",iconName:"sticky-note",icon:[448,512,[],"f249","M448 348.106V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80v351.988c0 26.51 21.49 48 48 48h268.118a48 48 0 0 0 33.941-14.059l83.882-83.882A48 48 0 0 0 448 348.106zm-128 80v-76.118h76.118L320 428.106zM400 80v223.988H296c-13.255 0-24 10.745-24 24v104H48V80h352z"]},C5={prefix:"far",iconName:"stop-circle",icon:[512,512,[],"f28d","M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm296-80v160c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16z"]},H5={prefix:"far",iconName:"sun",icon:[512,512,[],"f185","M494.2 221.9l-59.8-40.5 13.7-71c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l40.4-59.9 70.9 13.7c13.4 2.7 26.8-1.6 36.3-11.1 9.5-9.5 13.6-23.1 11.1-36.3l-13.7-71 59.8-40.5c11.1-7.5 17.8-20.1 17.8-33.5-.1-13.6-6.7-26.1-17.9-33.7zm-112.9 85.6l17.6 91.2-91-17.6L256 458l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-17.6 91.1 76.8 52-76.8 52.1zM256 152c-57.3 0-104 46.7-104 104s46.7 104 104 104 104-46.7 104-104-46.7-104-104-104zm0 160c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56z"]},g5={prefix:"far",iconName:"surprise",icon:[496,512,[],"f5c2","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-176c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm-48-72c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},V5={prefix:"far",iconName:"thumbs-down",icon:[512,512,[],"f165","M466.27 225.31c4.674-22.647.864-44.538-8.99-62.99 2.958-23.868-4.021-48.565-17.34-66.99C438.986 39.423 404.117 0 327 0c-7 0-15 .01-22.22.01C201.195.01 168.997 40 128 40h-10.845c-5.64-4.975-13.042-8-21.155-8H32C14.327 32 0 46.327 0 64v240c0 17.673 14.327 32 32 32h64c11.842 0 22.175-6.438 27.708-16h7.052c19.146 16.953 46.013 60.653 68.76 83.4 13.667 13.667 10.153 108.6 71.76 108.6 57.58 0 95.27-31.936 95.27-104.73 0-18.41-3.93-33.73-8.85-46.54h36.48c48.602 0 85.82-41.565 85.82-85.58 0-19.15-4.96-34.99-13.73-49.84zM64 296c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm330.18 16.73H290.19c0 37.82 28.36 55.37 28.36 94.54 0 23.75 0 56.73-47.27 56.73-18.91-18.91-9.46-66.18-37.82-94.54C206.9 342.89 167.28 272 138.92 272H128V85.83c53.611 0 100.001-37.82 171.64-37.82h37.82c35.512 0 60.82 17.12 53.12 65.9 15.2 8.16 26.5 36.44 13.94 57.57 21.581 20.384 18.699 51.065 5.21 65.62 9.45 0 22.36 18.91 22.27 37.81-.09 18.91-16.71 37.82-37.82 37.82z"]},L5={prefix:"far",iconName:"thumbs-up",icon:[512,512,[],"f164","M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z"]},x5={prefix:"far",iconName:"times-circle",icon:[512,512,[],"f057","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z"]},b5={prefix:"far",iconName:"tired",icon:[496,512,[],"f5c8","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm129.1-303.8c-3.8-4.4-10.3-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.8 1.6 15.3-2.5 3.8-4.5 3.9-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zM220 208c0-4.2-2.2-8.1-5.8-10.3l-80-48c-5-3-11.5-1.9-15.3 2.5-3.8 4.5-3.9 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.5 4.1 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3zm28 64c-45.4 0-100.9 38.3-107.8 93.3-1.5 11.8 6.9 21.6 15.5 17.9C178.4 373.5 212 368 248 368s69.6 5.5 92.3 15.2c8.5 3.7 17-6 15.5-17.9-6.9-55-62.4-93.3-107.8-93.3z"]},N5={prefix:"far",iconName:"trash-alt",icon:[448,512,[],"f2ed","M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z"]},A5={prefix:"far",iconName:"user",icon:[448,512,[],"f007","M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"]},y5={prefix:"far",iconName:"user-circle",icon:[496,512,[],"f2bd","M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"]},S5={prefix:"far",iconName:"window-close",icon:[512,512,[],"f410","M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v340zM356.5 194.6L295.1 256l61.4 61.4c4.6 4.6 4.6 12.1 0 16.8l-22.3 22.3c-4.6 4.6-12.1 4.6-16.8 0L256 295.1l-61.4 61.4c-4.6 4.6-12.1 4.6-16.8 0l-22.3-22.3c-4.6-4.6-4.6-12.1 0-16.8l61.4-61.4-61.4-61.4c-4.6-4.6-4.6-12.1 0-16.8l22.3-22.3c4.6-4.6 12.1-4.6 16.8 0l61.4 61.4 61.4-61.4c4.6-4.6 12.1-4.6 16.8 0l22.3 22.3c4.7 4.6 4.7 12.1 0 16.8z"]},w5={prefix:"far",iconName:"window-maximize",icon:[512,512,[],"f2d0","M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z"]},k5={prefix:"far",iconName:"window-minimize",icon:[512,512,[],"f2d1","M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z"]},T5={prefix:"far",iconName:"window-restore",icon:[512,512,[],"f2d2","M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-96 464H48V256h320v208zm96-96h-48V144c0-26.5-21.5-48-48-48H144V48h320v320z"]},Z2={faAddressBook:U6,faAddressCard:W6,faAngry:G6,faArrowAltCircleDown:_6,faArrowAltCircleLeft:$6,faArrowAltCircleRight:Y6,faArrowAltCircleUp:X6,faBell:K6,faBellSlash:Q6,faBookmark:J6,faBuilding:c8,faCalendar:a8,faCalendarAlt:e8,faCalendarCheck:i8,faCalendarMinus:n8,faCalendarPlus:o8,faCalendarTimes:t8,faCaretSquareDown:r8,faCaretSquareLeft:l8,faCaretSquareRight:f8,faCaretSquareUp:s8,faChartBar:h8,faCheckCircle:m8,faCheckSquare:v8,faCircle:z8,faClipboard:p8,faClock:d8,faClone:u8,faClosedCaptioning:M8,faComment:C8,faCommentAlt:H8,faCommentDots:g8,faComments:V8,faCompass:L8,faCopy:F2,faCopyright:x8,faCreditCard:b8,faDizzy:N8,faDotCircle:A8,faEdit:y8,faEnvelope:S8,faEnvelopeOpen:w8,faEye:k8,faEyeSlash:T8,faFile:P8,faFileAlt:E8,faFileArchive:D8,faFileAudio:O8,faFileCode:I8,faFileExcel:B8,faFileImage:R8,faFilePdf:F8,faFilePowerpoint:Z8,faFileVideo:j8,faFileWord:q8,faFlag:U8,faFlushed:W8,faFolder:G8,faFolderOpen:_8,faFontAwesomeLogoFull:$8,faFrown:Y8,faFrownOpen:X8,faFutbol:K8,faGem:Q8,faGrimace:J8,faGrin:c0,faGrinAlt:a0,faGrinBeam:e0,faGrinBeamSweat:i0,faGrinHearts:n0,faGrinSquint:o0,faGrinSquintTears:t0,faGrinStars:r0,faGrinTears:l0,faGrinTongue:f0,faGrinTongueSquint:s0,faGrinTongueWink:h0,faGrinWink:m0,faHandLizard:v0,faHandPaper:z0,faHandPeace:p0,faHandPointDown:d0,faHandPointLeft:u0,faHandPointRight:M0,faHandPointUp:C0,faHandPointer:H0,faHandRock:g0,faHandScissors:V0,faHandSpock:L0,faHandshake:x0,faHdd:b0,faHeart:N0,faHospital:A0,faHourglass:y0,faIdBadge:S0,faIdCard:w0,faImage:k0,faImages:T0,faKeyboard:P0,faKiss:E0,faKissBeam:D0,faKissWinkHeart:O0,faLaugh:I0,faLaughBeam:B0,faLaughSquint:R0,faLaughWink:F0,faLemon:Z0,faLifeRing:j0,faLightbulb:q0,faListAlt:U0,faMap:W0,faMeh:G0,faMehBlank:_0,faMehRollingEyes:$0,faMinusSquare:Y0,faMoneyBillAlt:X0,faMoon:K0,faNewspaper:Q0,faObjectGroup:J0,faObjectUngroup:c5,faPaperPlane:a5,faPauseCircle:e5,faPlayCircle:i5,faPlusSquare:n5,faQuestionCircle:o5,faRegistered:t5,faSadCry:r5,faSadTear:l5,faSave:f5,faShareSquare:s5,faSmile:h5,faSmileBeam:m5,faSmileWink:v5,faSnowflake:z5,faSquare:p5,faStar:d5,faStarHalf:u5,faStickyNote:M5,faStopCircle:C5,faSun:H5,faSurprise:g5,faThumbsDown:V5,faThumbsUp:L5,faTimesCircle:x5,faTired:b5,faTrashAlt:N5,faUser:A5,faUserCircle:y5,faWindowClose:S5,faWindowMaximize:w5,faWindowMinimize:k5,faWindowRestore:T5};var P5={prefix:"fas",iconName:"ad",icon:[512,512,[],"f641","M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z"]},E5={prefix:"fas",iconName:"address-book",icon:[448,512,[],"f2b9","M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]},D5={prefix:"fas",iconName:"address-card",icon:[576,512,[],"f2bb","M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"]},O5={prefix:"fas",iconName:"adjust",icon:[512,512,[],"f042","M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z"]},I5={prefix:"fas",iconName:"air-freshener",icon:[512,512,[],"f5d0","M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z"]},B5={prefix:"fas",iconName:"align-center",icon:[448,512,[],"f037","M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z"]},R5={prefix:"fas",iconName:"align-justify",icon:[448,512,[],"f039","M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},F5={prefix:"fas",iconName:"align-left",icon:[448,512,[],"f036","M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},Z5={prefix:"fas",iconName:"align-right",icon:[448,512,[],"f038","M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z"]},j5={prefix:"fas",iconName:"allergies",icon:[448,512,[],"f461","M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]},q5={prefix:"fas",iconName:"ambulance",icon:[640,512,[],"f0f9","M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]},U5={prefix:"fas",iconName:"american-sign-language-interpreting",icon:[640,512,[],"f2a3","M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z"]},W5={prefix:"fas",iconName:"anchor",icon:[576,512,[],"f13d","M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z"]},G5={prefix:"fas",iconName:"angle-double-down",icon:[320,512,[],"f103","M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z"]},_5={prefix:"fas",iconName:"angle-double-left",icon:[448,512,[],"f100","M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z"]},$5={prefix:"fas",iconName:"angle-double-right",icon:[448,512,[],"f101","M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"]},Y5={prefix:"fas",iconName:"angle-double-up",icon:[320,512,[],"f102","M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"]},X5={prefix:"fas",iconName:"angle-down",icon:[320,512,[],"f107","M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"]},K5={prefix:"fas",iconName:"angle-left",icon:[256,512,[],"f104","M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"]},Q5={prefix:"fas",iconName:"angle-right",icon:[256,512,[],"f105","M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"]},J5={prefix:"fas",iconName:"angle-up",icon:[320,512,[],"f106","M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"]},c7={prefix:"fas",iconName:"angry",icon:[496,512,[],"f556","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z"]},a7={prefix:"fas",iconName:"ankh",icon:[320,512,[],"f644","M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z"]},e7={prefix:"fas",iconName:"apple-alt",icon:[448,512,[],"f5d1","M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z"]},i7={prefix:"fas",iconName:"archive",icon:[512,512,[],"f187","M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z"]},n7={prefix:"fas",iconName:"archway",icon:[576,512,[],"f557","M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z"]},o7={prefix:"fas",iconName:"arrow-alt-circle-down",icon:[512,512,[],"f358","M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z"]},t7={prefix:"fas",iconName:"arrow-alt-circle-left",icon:[512,512,[],"f359","M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z"]},r7={prefix:"fas",iconName:"arrow-alt-circle-right",icon:[512,512,[],"f35a","M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z"]},l7={prefix:"fas",iconName:"arrow-alt-circle-up",icon:[512,512,[],"f35b","M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z"]},f7={prefix:"fas",iconName:"arrow-circle-down",icon:[512,512,[],"f0ab","M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z"]},s7={prefix:"fas",iconName:"arrow-circle-left",icon:[512,512,[],"f0a8","M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z"]},h7={prefix:"fas",iconName:"arrow-circle-right",icon:[512,512,[],"f0a9","M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"]},m7={prefix:"fas",iconName:"arrow-circle-up",icon:[512,512,[],"f0aa","M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z"]},v7={prefix:"fas",iconName:"arrow-down",icon:[448,512,[],"f063","M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"]},z7={prefix:"fas",iconName:"arrow-left",icon:[448,512,[],"f060","M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"]},p7={prefix:"fas",iconName:"arrow-right",icon:[448,512,[],"f061","M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"]},d7={prefix:"fas",iconName:"arrow-up",icon:[448,512,[],"f062","M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"]},u7={prefix:"fas",iconName:"arrows-alt",icon:[512,512,[],"f0b2","M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"]},M7={prefix:"fas",iconName:"arrows-alt-h",icon:[512,512,[],"f337","M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z"]},C7={prefix:"fas",iconName:"arrows-alt-v",icon:[256,512,[],"f338","M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"]},H7={prefix:"fas",iconName:"assistive-listening-systems",icon:[512,512,[],"f2a2","M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z"]},g7={prefix:"fas",iconName:"asterisk",icon:[512,512,[],"f069","M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z"]},V7={prefix:"fas",iconName:"at",icon:[512,512,[],"f1fa","M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z"]},L7={prefix:"fas",iconName:"atlas",icon:[448,512,[],"f558","M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z"]},x7={prefix:"fas",iconName:"atom",icon:[448,512,[],"f5d2","M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z"]},b7={prefix:"fas",iconName:"audio-description",icon:[512,512,[],"f29e","M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z"]},N7={prefix:"fas",iconName:"award",icon:[384,512,[],"f559","M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z"]},A7={prefix:"fas",iconName:"baby",icon:[384,512,[],"f77c","M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z"]},y7={prefix:"fas",iconName:"baby-carriage",icon:[512,512,[],"f77d","M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z"]},S7={prefix:"fas",iconName:"backspace",icon:[640,512,[],"f55a","M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z"]},w7={prefix:"fas",iconName:"backward",icon:[512,512,[],"f04a","M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"]},k7={prefix:"fas",iconName:"bacon",icon:[576,512,[],"f7e5","M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z"]},T7={prefix:"fas",iconName:"bacteria",icon:[640,512,[],"e059","M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z"]},P7={prefix:"fas",iconName:"bacterium",icon:[512,512,[],"e05a","M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z"]},E7={prefix:"fas",iconName:"bahai",icon:[512,512,[],"f666","M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z"]},D7={prefix:"fas",iconName:"balance-scale",icon:[640,512,[],"f24e","M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},O7={prefix:"fas",iconName:"balance-scale-left",icon:[640,512,[],"f515","M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z"]},I7={prefix:"fas",iconName:"balance-scale-right",icon:[640,512,[],"f516","M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z"]},B7={prefix:"fas",iconName:"ban",icon:[512,512,[],"f05e","M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z"]},R7={prefix:"fas",iconName:"band-aid",icon:[640,512,[],"f462","M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z"]},F7={prefix:"fas",iconName:"barcode",icon:[512,512,[],"f02a","M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z"]},Z7={prefix:"fas",iconName:"bars",icon:[448,512,[],"f0c9","M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"]},j7={prefix:"fas",iconName:"baseball-ball",icon:[496,512,[],"f433","M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z"]},q7={prefix:"fas",iconName:"basketball-ball",icon:[496,512,[],"f434","M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z"]},U7={prefix:"fas",iconName:"bath",icon:[512,512,[],"f2cd","M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z"]},W7={prefix:"fas",iconName:"battery-empty",icon:[640,512,[],"f244","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z"]},G7={prefix:"fas",iconName:"battery-full",icon:[640,512,[],"f240","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z"]},_7={prefix:"fas",iconName:"battery-half",icon:[640,512,[],"f242","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z"]},$7={prefix:"fas",iconName:"battery-quarter",icon:[640,512,[],"f243","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z"]},Y7={prefix:"fas",iconName:"battery-three-quarters",icon:[640,512,[],"f241","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z"]},X7={prefix:"fas",iconName:"bed",icon:[640,512,[],"f236","M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z"]},K7={prefix:"fas",iconName:"beer",icon:[448,512,[],"f0fc","M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z"]},Q7={prefix:"fas",iconName:"bell",icon:[448,512,[],"f0f3","M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z"]},J7={prefix:"fas",iconName:"bell-slash",icon:[640,512,[],"f1f6","M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z"]},c9={prefix:"fas",iconName:"bezier-curve",icon:[640,512,[],"f55b","M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]},a9={prefix:"fas",iconName:"bible",icon:[448,512,[],"f647","M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"]},e9={prefix:"fas",iconName:"bicycle",icon:[640,512,[],"f206","M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z"]},i9={prefix:"fas",iconName:"biking",icon:[640,512,[],"f84a","M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]},n9={prefix:"fas",iconName:"binoculars",icon:[512,512,[],"f1e5","M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z"]},o9={prefix:"fas",iconName:"biohazard",icon:[576,512,[],"f780","M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]},t9={prefix:"fas",iconName:"birthday-cake",icon:[448,512,[],"f1fd","M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z"]},r9={prefix:"fas",iconName:"blender",icon:[512,512,[],"f517","M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z"]},l9={prefix:"fas",iconName:"blender-phone",icon:[576,512,[],"f6b6","M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},f9={prefix:"fas",iconName:"blind",icon:[384,512,[],"f29d","M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z"]},s9={prefix:"fas",iconName:"blog",icon:[512,512,[],"f781","M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z"]},h9={prefix:"fas",iconName:"bold",icon:[384,512,[],"f032","M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z"]},m9={prefix:"fas",iconName:"bolt",icon:[320,512,[],"f0e7","M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z"]},v9={prefix:"fas",iconName:"bomb",icon:[512,512,[],"f1e2","M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z"]},z9={prefix:"fas",iconName:"bone",icon:[640,512,[],"f5d7","M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z"]},p9={prefix:"fas",iconName:"bong",icon:[448,512,[],"f55c","M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z"]},d9={prefix:"fas",iconName:"book",icon:[448,512,[],"f02d","M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z"]},u9={prefix:"fas",iconName:"book-dead",icon:[448,512,[],"f6b7","M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"]},M9={prefix:"fas",iconName:"book-medical",icon:[448,512,[],"f7e6","M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z"]},C9={prefix:"fas",iconName:"book-open",icon:[576,512,[],"f518","M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z"]},H9={prefix:"fas",iconName:"book-reader",icon:[512,512,[],"f5da","M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z"]},g9={prefix:"fas",iconName:"bookmark",icon:[384,512,[],"f02e","M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"]},V9={prefix:"fas",iconName:"border-all",icon:[448,512,[],"f84c","M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z"]},L9={prefix:"fas",iconName:"border-none",icon:[448,512,[],"f850","M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},x9={prefix:"fas",iconName:"border-style",icon:[448,512,[],"f853","M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},b9={prefix:"fas",iconName:"bowling-ball",icon:[496,512,[],"f436","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},N9={prefix:"fas",iconName:"box",icon:[512,512,[],"f466","M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z"]},A9={prefix:"fas",iconName:"box-open",icon:[640,512,[],"f49e","M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z"]},y9={prefix:"fas",iconName:"box-tissue",icon:[512,512,[],"e05b","M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z"]},S9={prefix:"fas",iconName:"boxes",icon:[576,512,[],"f468","M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z"]},w9={prefix:"fas",iconName:"braille",icon:[640,512,[],"f2a1","M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"]},k9={prefix:"fas",iconName:"brain",icon:[576,512,[],"f5dc","M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z"]},T9={prefix:"fas",iconName:"bread-slice",icon:[576,512,[],"f7ec","M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z"]},P9={prefix:"fas",iconName:"briefcase",icon:[512,512,[],"f0b1","M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z"]},E9={prefix:"fas",iconName:"briefcase-medical",icon:[512,512,[],"f469","M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z"]},D9={prefix:"fas",iconName:"broadcast-tower",icon:[640,512,[],"f519","M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z"]},O9={prefix:"fas",iconName:"broom",icon:[640,512,[],"f51a","M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z"]},I9={prefix:"fas",iconName:"brush",icon:[384,512,[],"f55d","M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z"]},B9={prefix:"fas",iconName:"bug",icon:[512,512,[],"f188","M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z"]},R9={prefix:"fas",iconName:"building",icon:[448,512,[],"f1ad","M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z"]},F9={prefix:"fas",iconName:"bullhorn",icon:[576,512,[],"f0a1","M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z"]},Z9={prefix:"fas",iconName:"bullseye",icon:[496,512,[],"f140","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z"]},j9={prefix:"fas",iconName:"burn",icon:[384,512,[],"f46a","M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z"]},q9={prefix:"fas",iconName:"bus",icon:[512,512,[],"f207","M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},U9={prefix:"fas",iconName:"bus-alt",icon:[512,512,[],"f55e","M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},W9={prefix:"fas",iconName:"business-time",icon:[640,512,[],"f64a","M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z"]},G9={prefix:"fas",iconName:"calculator",icon:[448,512,[],"f1ec","M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z"]},_9={prefix:"fas",iconName:"calendar",icon:[448,512,[],"f133","M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z"]},$9={prefix:"fas",iconName:"calendar-alt",icon:[448,512,[],"f073","M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]},Y9={prefix:"fas",iconName:"calendar-check",icon:[448,512,[],"f274","M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z"]},X9={prefix:"fas",iconName:"calendar-day",icon:[448,512,[],"f783","M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]},K9={prefix:"fas",iconName:"calendar-minus",icon:[448,512,[],"f272","M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z"]},Q9={prefix:"fas",iconName:"calendar-plus",icon:[448,512,[],"f271","M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z"]},J9={prefix:"fas",iconName:"calendar-times",icon:[448,512,[],"f273","M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z"]},cc={prefix:"fas",iconName:"calendar-week",icon:[448,512,[],"f784","M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]},ac={prefix:"fas",iconName:"camera",icon:[512,512,[],"f030","M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z"]},ec={prefix:"fas",iconName:"camera-retro",icon:[512,512,[],"f083","M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z"]},ic={prefix:"fas",iconName:"campground",icon:[640,512,[],"f6bb","M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z"]},nc={prefix:"fas",iconName:"candy-cane",icon:[512,512,[],"f786","M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z"]},oc={prefix:"fas",iconName:"cannabis",icon:[512,512,[],"f55f","M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z"]},tc={prefix:"fas",iconName:"capsules",icon:[576,512,[],"f46b","M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z"]},rc={prefix:"fas",iconName:"car",icon:[512,512,[],"f1b9","M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z"]},lc={prefix:"fas",iconName:"car-alt",icon:[480,512,[],"f5de","M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z"]},fc={prefix:"fas",iconName:"car-battery",icon:[512,512,[],"f5df","M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z"]},sc={prefix:"fas",iconName:"car-crash",icon:[640,512,[],"f5e1","M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z"]},hc={prefix:"fas",iconName:"car-side",icon:[640,512,[],"f5e4","M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z"]},mc={prefix:"fas",iconName:"caravan",icon:[640,512,[],"f8ff","M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z"]},vc={prefix:"fas",iconName:"caret-down",icon:[320,512,[],"f0d7","M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"]},zc={prefix:"fas",iconName:"caret-left",icon:[192,512,[],"f0d9","M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z"]},pc={prefix:"fas",iconName:"caret-right",icon:[192,512,[],"f0da","M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z"]},dc={prefix:"fas",iconName:"caret-square-down",icon:[448,512,[],"f150","M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z"]},uc={prefix:"fas",iconName:"caret-square-left",icon:[448,512,[],"f191","M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z"]},Mc={prefix:"fas",iconName:"caret-square-right",icon:[448,512,[],"f152","M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z"]},Cc={prefix:"fas",iconName:"caret-square-up",icon:[448,512,[],"f151","M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z"]},Hc={prefix:"fas",iconName:"caret-up",icon:[320,512,[],"f0d8","M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"]},gc={prefix:"fas",iconName:"carrot",icon:[512,512,[],"f787","M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z"]},Vc={prefix:"fas",iconName:"cart-arrow-down",icon:[576,512,[],"f218","M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z"]},Lc={prefix:"fas",iconName:"cart-plus",icon:[576,512,[],"f217","M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z"]},xc={prefix:"fas",iconName:"cash-register",icon:[512,512,[],"f788","M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z"]},bc={prefix:"fas",iconName:"cat",icon:[512,512,[],"f6be","M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]},Nc={prefix:"fas",iconName:"certificate",icon:[512,512,[],"f0a3","M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z"]},Ac={prefix:"fas",iconName:"chair",icon:[448,512,[],"f6c0","M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z"]},yc={prefix:"fas",iconName:"chalkboard",icon:[640,512,[],"f51b","M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},Sc={prefix:"fas",iconName:"chalkboard-teacher",icon:[640,512,[],"f51c","M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z"]},wc={prefix:"fas",iconName:"charging-station",icon:[576,512,[],"f5e7","M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z"]},kc={prefix:"fas",iconName:"chart-area",icon:[512,512,[],"f1fe","M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z"]},Tc={prefix:"fas",iconName:"chart-bar",icon:[512,512,[],"f080","M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},Pc={prefix:"fas",iconName:"chart-line",icon:[512,512,[],"f201","M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z"]},Ec={prefix:"fas",iconName:"chart-pie",icon:[544,512,[],"f200","M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z"]},Dc={prefix:"fas",iconName:"check",icon:[512,512,[],"f00c","M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"]},Oc={prefix:"fas",iconName:"check-circle",icon:[512,512,[],"f058","M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"]},Ic={prefix:"fas",iconName:"check-double",icon:[512,512,[],"f560","M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z"]},Bc={prefix:"fas",iconName:"check-square",icon:[448,512,[],"f14a","M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z"]},Rc={prefix:"fas",iconName:"cheese",icon:[512,512,[],"f7ef","M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z"]},Fc={prefix:"fas",iconName:"chess",icon:[512,512,[],"f439","M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z"]},Zc={prefix:"fas",iconName:"chess-bishop",icon:[320,512,[],"f43a","M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},jc={prefix:"fas",iconName:"chess-board",icon:[512,512,[],"f43c","M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z"]},qc={prefix:"fas",iconName:"chess-king",icon:[448,512,[],"f43f","M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z"]},Uc={prefix:"fas",iconName:"chess-knight",icon:[384,512,[],"f441","M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},Wc={prefix:"fas",iconName:"chess-pawn",icon:[320,512,[],"f443","M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},Gc={prefix:"fas",iconName:"chess-queen",icon:[512,512,[],"f445","M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z"]},_c={prefix:"fas",iconName:"chess-rook",icon:[384,512,[],"f447","M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},$c={prefix:"fas",iconName:"chevron-circle-down",icon:[512,512,[],"f13a","M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z"]},Yc={prefix:"fas",iconName:"chevron-circle-left",icon:[512,512,[],"f137","M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z"]},Xc={prefix:"fas",iconName:"chevron-circle-right",icon:[512,512,[],"f138","M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z"]},Kc={prefix:"fas",iconName:"chevron-circle-up",icon:[512,512,[],"f139","M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z"]},Qc={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"]},Jc={prefix:"fas",iconName:"chevron-left",icon:[320,512,[],"f053","M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"]},ca={prefix:"fas",iconName:"chevron-right",icon:[320,512,[],"f054","M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"]},aa={prefix:"fas",iconName:"chevron-up",icon:[448,512,[],"f077","M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z"]},ea={prefix:"fas",iconName:"child",icon:[384,512,[],"f1ae","M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z"]},ia={prefix:"fas",iconName:"church",icon:[640,512,[],"f51d","M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z"]},na={prefix:"fas",iconName:"circle",icon:[512,512,[],"f111","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"]},oa={prefix:"fas",iconName:"circle-notch",icon:[512,512,[],"f1ce","M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z"]},ta={prefix:"fas",iconName:"city",icon:[640,512,[],"f64f","M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z"]},ra={prefix:"fas",iconName:"clinic-medical",icon:[576,512,[],"f7f2","M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z"]},la={prefix:"fas",iconName:"clipboard",icon:[384,512,[],"f328","M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z"]},fa={prefix:"fas",iconName:"clipboard-check",icon:[384,512,[],"f46c","M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z"]},sa={prefix:"fas",iconName:"clipboard-list",icon:[384,512,[],"f46d","M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"]},ha={prefix:"fas",iconName:"clock",icon:[512,512,[],"f017","M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z"]},ma={prefix:"fas",iconName:"clone",icon:[512,512,[],"f24d","M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z"]},va={prefix:"fas",iconName:"closed-captioning",icon:[512,512,[],"f20a","M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z"]},za={prefix:"fas",iconName:"cloud",icon:[640,512,[],"f0c2","M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"]},pa={prefix:"fas",iconName:"cloud-download-alt",icon:[640,512,[],"f381","M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z"]},da={prefix:"fas",iconName:"cloud-meatball",icon:[512,512,[],"f73b","M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z"]},ua={prefix:"fas",iconName:"cloud-moon",icon:[576,512,[],"f6c3","M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z"]},Ma={prefix:"fas",iconName:"cloud-moon-rain",icon:[576,512,[],"f73c","M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z"]},Ca={prefix:"fas",iconName:"cloud-rain",icon:[512,512,[],"f73d","M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z"]},Ha={prefix:"fas",iconName:"cloud-showers-heavy",icon:[512,512,[],"f740","M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z"]},ga={prefix:"fas",iconName:"cloud-sun",icon:[640,512,[],"f6c4","M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z"]},Va={prefix:"fas",iconName:"cloud-sun-rain",icon:[576,512,[],"f743","M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z"]},La={prefix:"fas",iconName:"cloud-upload-alt",icon:[640,512,[],"f382","M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z"]},xa={prefix:"fas",iconName:"cocktail",icon:[576,512,[],"f561","M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z"]},ba={prefix:"fas",iconName:"code",icon:[640,512,[],"f121","M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"]},Na={prefix:"fas",iconName:"code-branch",icon:[384,512,[],"f126","M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z"]},Aa={prefix:"fas",iconName:"coffee",icon:[640,512,[],"f0f4","M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z"]},ya={prefix:"fas",iconName:"cog",icon:[512,512,[],"f013","M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},Sa={prefix:"fas",iconName:"cogs",icon:[640,512,[],"f085","M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z"]},wa={prefix:"fas",iconName:"coins",icon:[512,512,[],"f51e","M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z"]},ka={prefix:"fas",iconName:"columns",icon:[512,512,[],"f0db","M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z"]},Ta={prefix:"fas",iconName:"comment",icon:[512,512,[],"f075","M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z"]},Pa={prefix:"fas",iconName:"comment-alt",icon:[512,512,[],"f27a","M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z"]},Ea={prefix:"fas",iconName:"comment-dollar",icon:[512,512,[],"f651","M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z"]},Da={prefix:"fas",iconName:"comment-dots",icon:[512,512,[],"f4ad","M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},Oa={prefix:"fas",iconName:"comment-medical",icon:[512,512,[],"f7f5","M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z"]},Ia={prefix:"fas",iconName:"comment-slash",icon:[640,512,[],"f4b3","M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z"]},Ba={prefix:"fas",iconName:"comments",icon:[576,512,[],"f086","M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z"]},Ra={prefix:"fas",iconName:"comments-dollar",icon:[576,512,[],"f653","M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z"]},Fa={prefix:"fas",iconName:"compact-disc",icon:[496,512,[],"f51f","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},Za={prefix:"fas",iconName:"compass",icon:[496,512,[],"f14e","M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z"]},ja={prefix:"fas",iconName:"compress",icon:[448,512,[],"f066","M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"]},qa={prefix:"fas",iconName:"compress-alt",icon:[448,512,[],"f422","M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z"]},Ua={prefix:"fas",iconName:"compress-arrows-alt",icon:[512,512,[],"f78c","M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z"]},Wa={prefix:"fas",iconName:"concierge-bell",icon:[512,512,[],"f562","M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},Ga={prefix:"fas",iconName:"cookie",icon:[512,512,[],"f563","M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},_a={prefix:"fas",iconName:"cookie-bite",icon:[512,512,[],"f564","M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},$a={prefix:"fas",iconName:"copy",icon:[448,512,[],"f0c5","M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z"]},Ya={prefix:"fas",iconName:"copyright",icon:[512,512,[],"f1f9","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z"]},Xa={prefix:"fas",iconName:"couch",icon:[640,512,[],"f4b8","M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z"]},Ka={prefix:"fas",iconName:"credit-card",icon:[576,512,[],"f09d","M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"]},Qa={prefix:"fas",iconName:"crop",icon:[512,512,[],"f125","M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]},Ja={prefix:"fas",iconName:"crop-alt",icon:[512,512,[],"f565","M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z"]},ce={prefix:"fas",iconName:"cross",icon:[384,512,[],"f654","M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]},ae={prefix:"fas",iconName:"crosshairs",icon:[512,512,[],"f05b","M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z"]},ee={prefix:"fas",iconName:"crow",icon:[640,512,[],"f520","M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},ie={prefix:"fas",iconName:"crown",icon:[640,512,[],"f521","M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z"]},ne={prefix:"fas",iconName:"crutch",icon:[512,512,[],"f7f7","M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z"]},oe={prefix:"fas",iconName:"cube",icon:[512,512,[],"f1b2","M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z"]},te={prefix:"fas",iconName:"cubes",icon:[512,512,[],"f1b3","M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z"]},re={prefix:"fas",iconName:"cut",icon:[448,512,[],"f0c4","M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"]},le={prefix:"fas",iconName:"database",icon:[448,512,[],"f1c0","M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z"]},fe={prefix:"fas",iconName:"deaf",icon:[512,512,[],"f2a4","M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z"]},se={prefix:"fas",iconName:"democrat",icon:[640,512,[],"f747","M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z"]},he={prefix:"fas",iconName:"desktop",icon:[576,512,[],"f108","M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"]},me={prefix:"fas",iconName:"dharmachakra",icon:[512,512,[],"f655","M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z"]},ve={prefix:"fas",iconName:"diagnoses",icon:[640,512,[],"f470","M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]},ze={prefix:"fas",iconName:"dice",icon:[640,512,[],"f522","M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},pe={prefix:"fas",iconName:"dice-d20",icon:[480,512,[],"f6cf","M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z"]},de={prefix:"fas",iconName:"dice-d6",icon:[448,512,[],"f6d1","M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z"]},ue={prefix:"fas",iconName:"dice-five",icon:[448,512,[],"f523","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},Me={prefix:"fas",iconName:"dice-four",icon:[448,512,[],"f524","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},Ce={prefix:"fas",iconName:"dice-one",icon:[448,512,[],"f525","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},He={prefix:"fas",iconName:"dice-six",icon:[448,512,[],"f526","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},ge={prefix:"fas",iconName:"dice-three",icon:[448,512,[],"f527","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},Ve={prefix:"fas",iconName:"dice-two",icon:[448,512,[],"f528","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},Le={prefix:"fas",iconName:"digital-tachograph",icon:[640,512,[],"f566","M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z"]},xe={prefix:"fas",iconName:"directions",icon:[512,512,[],"f5eb","M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z"]},be={prefix:"fas",iconName:"disease",icon:[512,512,[],"f7fa","M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z"]},Ne={prefix:"fas",iconName:"divide",icon:[448,512,[],"f529","M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},Ae={prefix:"fas",iconName:"dizzy",icon:[496,512,[],"f567","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z"]},ye={prefix:"fas",iconName:"dna",icon:[448,512,[],"f471","M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z"]},Se={prefix:"fas",iconName:"dog",icon:[576,512,[],"f6d3","M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z"]},we={prefix:"fas",iconName:"dollar-sign",icon:[288,512,[],"f155","M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z"]},ke={prefix:"fas",iconName:"dolly",icon:[576,512,[],"f472","M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]},Te={prefix:"fas",iconName:"dolly-flatbed",icon:[640,512,[],"f474","M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]},Pe={prefix:"fas",iconName:"donate",icon:[512,512,[],"f4b9","M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z"]},Ee={prefix:"fas",iconName:"door-closed",icon:[640,512,[],"f52a","M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z"]},De={prefix:"fas",iconName:"door-open",icon:[640,512,[],"f52b","M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z"]},Oe={prefix:"fas",iconName:"dot-circle",icon:[512,512,[],"f192","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z"]},Ie={prefix:"fas",iconName:"dove",icon:[512,512,[],"f4ba","M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]},Be={prefix:"fas",iconName:"download",icon:[512,512,[],"f019","M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]},Re={prefix:"fas",iconName:"drafting-compass",icon:[512,512,[],"f568","M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z"]},Fe={prefix:"fas",iconName:"dragon",icon:[640,512,[],"f6d5","M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z"]},Ze={prefix:"fas",iconName:"draw-polygon",icon:[448,512,[],"f5ee","M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z"]},je={prefix:"fas",iconName:"drum",icon:[512,512,[],"f569","M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z"]},qe={prefix:"fas",iconName:"drum-steelpan",icon:[576,512,[],"f56a","M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z"]},Ue={prefix:"fas",iconName:"drumstick-bite",icon:[512,512,[],"f6d7","M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z"]},We={prefix:"fas",iconName:"dumbbell",icon:[640,512,[],"f44b","M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z"]},Ge={prefix:"fas",iconName:"dumpster",icon:[576,512,[],"f793","M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]},_e={prefix:"fas",iconName:"dumpster-fire",icon:[640,512,[],"f794","M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z"]},$e={prefix:"fas",iconName:"dungeon",icon:[512,512,[],"f6d9","M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z"]},Ye={prefix:"fas",iconName:"edit",icon:[576,512,[],"f044","M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"]},Xe={prefix:"fas",iconName:"egg",icon:[384,512,[],"f7fb","M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z"]},Ke={prefix:"fas",iconName:"eject",icon:[448,512,[],"f052","M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z"]},Qe={prefix:"fas",iconName:"ellipsis-h",icon:[512,512,[],"f141","M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"]},Je={prefix:"fas",iconName:"ellipsis-v",icon:[192,512,[],"f142","M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"]},ci={prefix:"fas",iconName:"envelope",icon:[512,512,[],"f0e0","M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"]},ai={prefix:"fas",iconName:"envelope-open",icon:[512,512,[],"f2b6","M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z"]},ei={prefix:"fas",iconName:"envelope-open-text",icon:[512,512,[],"f658","M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z"]},ii={prefix:"fas",iconName:"envelope-square",icon:[448,512,[],"f199","M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z"]},ni={prefix:"fas",iconName:"equals",icon:[448,512,[],"f52c","M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},oi={prefix:"fas",iconName:"eraser",icon:[512,512,[],"f12d","M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z"]},ti={prefix:"fas",iconName:"ethernet",icon:[512,512,[],"f796","M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z"]},ri={prefix:"fas",iconName:"euro-sign",icon:[320,512,[],"f153","M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z"]},li={prefix:"fas",iconName:"exchange-alt",icon:[512,512,[],"f362","M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z"]},fi={prefix:"fas",iconName:"exclamation",icon:[192,512,[],"f12a","M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z"]},si={prefix:"fas",iconName:"exclamation-circle",icon:[512,512,[],"f06a","M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]},hi={prefix:"fas",iconName:"exclamation-triangle",icon:[576,512,[],"f071","M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]},mi={prefix:"fas",iconName:"expand",icon:[448,512,[],"f065","M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z"]},vi={prefix:"fas",iconName:"expand-alt",icon:[448,512,[],"f424","M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z"]},zi={prefix:"fas",iconName:"expand-arrows-alt",icon:[448,512,[],"f31e","M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z"]},pi={prefix:"fas",iconName:"external-link-alt",icon:[512,512,[],"f35d","M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z"]},di={prefix:"fas",iconName:"external-link-square-alt",icon:[448,512,[],"f360","M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z"]},ui={prefix:"fas",iconName:"eye",icon:[576,512,[],"f06e","M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"]},Mi={prefix:"fas",iconName:"eye-dropper",icon:[512,512,[],"f1fb","M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z"]},Ci={prefix:"fas",iconName:"eye-slash",icon:[640,512,[],"f070","M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"]},Hi={prefix:"fas",iconName:"fan",icon:[512,512,[],"f863","M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"]},gi={prefix:"fas",iconName:"fast-backward",icon:[512,512,[],"f049","M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z"]},Vi={prefix:"fas",iconName:"fast-forward",icon:[512,512,[],"f050","M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z"]},Li={prefix:"fas",iconName:"faucet",icon:[512,512,[],"e005","M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z"]},xi={prefix:"fas",iconName:"fax",icon:[512,512,[],"f1ac","M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z"]},bi={prefix:"fas",iconName:"feather",icon:[512,512,[],"f52d","M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z"]},Ni={prefix:"fas",iconName:"feather-alt",icon:[512,512,[],"f56b","M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z"]},Ai={prefix:"fas",iconName:"female",icon:[256,512,[],"f182","M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z"]},yi={prefix:"fas",iconName:"fighter-jet",icon:[640,512,[],"f0fb","M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z"]},Si={prefix:"fas",iconName:"file",icon:[384,512,[],"f15b","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},wi={prefix:"fas",iconName:"file-alt",icon:[384,512,[],"f15c","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},ki={prefix:"fas",iconName:"file-archive",icon:[384,512,[],"f1c6","M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z"]},Ti={prefix:"fas",iconName:"file-audio",icon:[384,512,[],"f1c7","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},Pi={prefix:"fas",iconName:"file-code",icon:[384,512,[],"f1c9","M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z"]},Ei={prefix:"fas",iconName:"file-contract",icon:[384,512,[],"f56c","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},Di={prefix:"fas",iconName:"file-csv",icon:[384,512,[],"f6dd","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},Oi={prefix:"fas",iconName:"file-download",icon:[384,512,[],"f56d","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},Ii={prefix:"fas",iconName:"file-excel",icon:[384,512,[],"f1c3","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},Bi={prefix:"fas",iconName:"file-export",icon:[576,512,[],"f56e","M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z"]},Ri={prefix:"fas",iconName:"file-image",icon:[384,512,[],"f1c5","M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z"]},Fi={prefix:"fas",iconName:"file-import",icon:[512,512,[],"f56f","M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z"]},Zi={prefix:"fas",iconName:"file-invoice",icon:[384,512,[],"f570","M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z"]},ji={prefix:"fas",iconName:"file-invoice-dollar",icon:[384,512,[],"f571","M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z"]},qi={prefix:"fas",iconName:"file-medical",icon:[384,512,[],"f477","M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z"]},Ui={prefix:"fas",iconName:"file-medical-alt",icon:[448,512,[],"f478","M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},Wi={prefix:"fas",iconName:"file-pdf",icon:[384,512,[],"f1c1","M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z"]},Gi={prefix:"fas",iconName:"file-powerpoint",icon:[384,512,[],"f1c4","M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z"]},_i={prefix:"fas",iconName:"file-prescription",icon:[384,512,[],"f572","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},$i={prefix:"fas",iconName:"file-signature",icon:[576,512,[],"f573","M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z"]},Yi={prefix:"fas",iconName:"file-upload",icon:[384,512,[],"f574","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},Xi={prefix:"fas",iconName:"file-video",icon:[384,512,[],"f1c8","M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z"]},Ki={prefix:"fas",iconName:"file-word",icon:[384,512,[],"f1c2","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},Qi={prefix:"fas",iconName:"fill",icon:[512,512,[],"f575","M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z"]},Ji={prefix:"fas",iconName:"fill-drip",icon:[576,512,[],"f576","M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z"]},cn={prefix:"fas",iconName:"film",icon:[512,512,[],"f008","M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z"]},an={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"]},en={prefix:"fas",iconName:"fingerprint",icon:[512,512,[],"f577","M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"]},nn={prefix:"fas",iconName:"fire",icon:[384,512,[],"f06d","M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z"]},on={prefix:"fas",iconName:"fire-alt",icon:[448,512,[],"f7e4","M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z"]},tn={prefix:"fas",iconName:"fire-extinguisher",icon:[448,512,[],"f134","M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z"]},rn={prefix:"fas",iconName:"first-aid",icon:[576,512,[],"f479","M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]},ln={prefix:"fas",iconName:"fish",icon:[576,512,[],"f578","M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z"]},fn={prefix:"fas",iconName:"fist-raised",icon:[384,512,[],"f6de","M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z"]},sn={prefix:"fas",iconName:"flag",icon:[512,512,[],"f024","M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z"]},hn={prefix:"fas",iconName:"flag-checkered",icon:[512,512,[],"f11e","M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z"]},mn={prefix:"fas",iconName:"flag-usa",icon:[512,512,[],"f74d","M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z"]},vn={prefix:"fas",iconName:"flask",icon:[448,512,[],"f0c3","M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z"]},zn={prefix:"fas",iconName:"flushed",icon:[496,512,[],"f579","M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z"]},pn={prefix:"fas",iconName:"folder",icon:[512,512,[],"f07b","M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"]},dn={prefix:"fas",iconName:"folder-minus",icon:[512,512,[],"f65d","M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z"]},un={prefix:"fas",iconName:"folder-open",icon:[576,512,[],"f07c","M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z"]},Mn={prefix:"fas",iconName:"folder-plus",icon:[512,512,[],"f65e","M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z"]},Cn={prefix:"fas",iconName:"font",icon:[448,512,[],"f031","M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z"]},Hn={prefix:"fas",iconName:"font-awesome-logo-full",icon:[3992,512,["Font Awesome"],"f4e6","M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z"]},gn={prefix:"fas",iconName:"football-ball",icon:[496,512,[],"f44e","M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z"]},Vn={prefix:"fas",iconName:"forward",icon:[512,512,[],"f04e","M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"]},Ln={prefix:"fas",iconName:"frog",icon:[576,512,[],"f52e","M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z"]},xn={prefix:"fas",iconName:"frown",icon:[496,512,[],"f119","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z"]},bn={prefix:"fas",iconName:"frown-open",icon:[496,512,[],"f57a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},Nn={prefix:"fas",iconName:"funnel-dollar",icon:[640,512,[],"f662","M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z"]},An={prefix:"fas",iconName:"futbol",icon:[512,512,[],"f1e3","M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z"]},yn={prefix:"fas",iconName:"gamepad",icon:[640,512,[],"f11b","M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z"]},Sn={prefix:"fas",iconName:"gas-pump",icon:[512,512,[],"f52f","M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z"]},wn={prefix:"fas",iconName:"gavel",icon:[512,512,[],"f0e3","M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z"]},kn={prefix:"fas",iconName:"gem",icon:[576,512,[],"f3a5","M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z"]},Tn={prefix:"fas",iconName:"genderless",icon:[288,512,[],"f22d","M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z"]},Pn={prefix:"fas",iconName:"ghost",icon:[384,512,[],"f6e2","M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},En={prefix:"fas",iconName:"gift",icon:[512,512,[],"f06b","M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z"]},Dn={prefix:"fas",iconName:"gifts",icon:[640,512,[],"f79c","M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z"]},On={prefix:"fas",iconName:"glass-cheers",icon:[640,512,[],"f79f","M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z"]},In={prefix:"fas",iconName:"glass-martini",icon:[512,512,[],"f000","M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z"]},Bn={prefix:"fas",iconName:"glass-martini-alt",icon:[512,512,[],"f57b","M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z"]},Rn={prefix:"fas",iconName:"glass-whiskey",icon:[512,512,[],"f7a0","M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z"]},Fn={prefix:"fas",iconName:"glasses",icon:[576,512,[],"f530","M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z"]},Zn={prefix:"fas",iconName:"globe",icon:[496,512,[],"f0ac","M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"]},jn={prefix:"fas",iconName:"globe-africa",icon:[496,512,[],"f57c","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z"]},qn={prefix:"fas",iconName:"globe-americas",icon:[496,512,[],"f57d","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z"]},Un={prefix:"fas",iconName:"globe-asia",icon:[496,512,[],"f57e","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z"]},Wn={prefix:"fas",iconName:"globe-europe",icon:[496,512,[],"f7a2","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z"]},Gn={prefix:"fas",iconName:"golf-ball",icon:[416,512,[],"f450","M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z"]},_n={prefix:"fas",iconName:"gopuram",icon:[512,512,[],"f664","M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z"]},$n={prefix:"fas",iconName:"graduation-cap",icon:[640,512,[],"f19d","M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z"]},Yn={prefix:"fas",iconName:"greater-than",icon:[384,512,[],"f531","M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z"]},Xn={prefix:"fas",iconName:"greater-than-equal",icon:[448,512,[],"f532","M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]},Kn={prefix:"fas",iconName:"grimace",icon:[496,512,[],"f57f","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z"]},Qn={prefix:"fas",iconName:"grin",icon:[496,512,[],"f580","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},Jn={prefix:"fas",iconName:"grin-alt",icon:[496,512,[],"f581","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},co={prefix:"fas",iconName:"grin-beam",icon:[496,512,[],"f582","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},ao={prefix:"fas",iconName:"grin-beam-sweat",icon:[504,512,[],"f583","M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},eo={prefix:"fas",iconName:"grin-hearts",icon:[496,512,[],"f584","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z"]},io={prefix:"fas",iconName:"grin-squint",icon:[496,512,[],"f585","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},no={prefix:"fas",iconName:"grin-squint-tears",icon:[512,512,[],"f586","M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z"]},oo={prefix:"fas",iconName:"grin-stars",icon:[496,512,[],"f587","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z"]},to={prefix:"fas",iconName:"grin-tears",icon:[640,512,[],"f588","M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},ro={prefix:"fas",iconName:"grin-tongue",icon:[496,512,[],"f589","M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z"]},lo={prefix:"fas",iconName:"grin-tongue-squint",icon:[496,512,[],"f58a","M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z"]},fo={prefix:"fas",iconName:"grin-tongue-wink",icon:[496,512,[],"f58b","M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z"]},so={prefix:"fas",iconName:"grin-wink",icon:[496,512,[],"f58c","M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z"]},ho={prefix:"fas",iconName:"grip-horizontal",icon:[448,512,[],"f58d","M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]},mo={prefix:"fas",iconName:"grip-lines",icon:[512,512,[],"f7a4","M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]},vo={prefix:"fas",iconName:"grip-lines-vertical",icon:[256,512,[],"f7a5","M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z"]},zo={prefix:"fas",iconName:"grip-vertical",icon:[320,512,[],"f58e","M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]},po={prefix:"fas",iconName:"guitar",icon:[512,512,[],"f7a6","M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]},uo={prefix:"fas",iconName:"h-square",icon:[448,512,[],"f0fd","M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z"]},Mo={prefix:"fas",iconName:"hamburger",icon:[512,512,[],"f805","M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z"]},Co={prefix:"fas",iconName:"hammer",icon:[576,512,[],"f6e3","M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z"]},Ho={prefix:"fas",iconName:"hamsa",icon:[512,512,[],"f665","M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]},go={prefix:"fas",iconName:"hand-holding",icon:[576,512,[],"f4bd","M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]},Vo={prefix:"fas",iconName:"hand-holding-heart",icon:[576,512,[],"f4be","M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]},Lo={prefix:"fas",iconName:"hand-holding-medical",icon:[576,512,[],"e05c","M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z"]},xo={prefix:"fas",iconName:"hand-holding-usd",icon:[576,512,[],"f4c0","M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z"]},bo={prefix:"fas",iconName:"hand-holding-water",icon:[576,512,[],"f4c1","M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]},No={prefix:"fas",iconName:"hand-lizard",icon:[576,512,[],"f258","M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z"]},Ao={prefix:"fas",iconName:"hand-middle-finger",icon:[512,512,[],"f806","M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z"]},yo={prefix:"fas",iconName:"hand-paper",icon:[448,512,[],"f256","M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z"]},So={prefix:"fas",iconName:"hand-peace",icon:[448,512,[],"f25b","M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z"]},wo={prefix:"fas",iconName:"hand-point-down",icon:[384,512,[],"f0a7","M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z"]},ko={prefix:"fas",iconName:"hand-point-left",icon:[512,512,[],"f0a5","M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z"]},To={prefix:"fas",iconName:"hand-point-right",icon:[512,512,[],"f0a4","M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z"]},Po={prefix:"fas",iconName:"hand-point-up",icon:[384,512,[],"f0a6","M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z"]},Eo={prefix:"fas",iconName:"hand-pointer",icon:[448,512,[],"f25a","M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z"]},Do={prefix:"fas",iconName:"hand-rock",icon:[512,512,[],"f255","M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z"]},Oo={prefix:"fas",iconName:"hand-scissors",icon:[512,512,[],"f257","M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z"]},Io={prefix:"fas",iconName:"hand-sparkles",icon:[640,512,[],"e05d","M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z"]},Bo={prefix:"fas",iconName:"hand-spock",icon:[512,512,[],"f259","M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z"]},Ro={prefix:"fas",iconName:"hands",icon:[640,512,[],"f4c2","M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z"]},Fo={prefix:"fas",iconName:"hands-helping",icon:[640,512,[],"f4c4","M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z"]},Zo={prefix:"fas",iconName:"hands-wash",icon:[576,512,[],"e05e","M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z"]},jo={prefix:"fas",iconName:"handshake",icon:[640,512,[],"f2b5","M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z"]},qo={prefix:"fas",iconName:"handshake-alt-slash",icon:[640,512,[],"e05f","M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z"]},Uo={prefix:"fas",iconName:"handshake-slash",icon:[640,512,[],"e060","M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z"]},Wo={prefix:"fas",iconName:"hanukiah",icon:[640,512,[],"f6e6","M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z"]},Go={prefix:"fas",iconName:"hard-hat",icon:[512,512,[],"f807","M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},_o={prefix:"fas",iconName:"hashtag",icon:[448,512,[],"f292","M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z"]},$o={prefix:"fas",iconName:"hat-cowboy",icon:[640,512,[],"f8c0","M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z"]},Yo={prefix:"fas",iconName:"hat-cowboy-side",icon:[640,512,[],"f8c1","M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z"]},Xo={prefix:"fas",iconName:"hat-wizard",icon:[512,512,[],"f6e8","M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z"]},Ko={prefix:"fas",iconName:"hdd",icon:[576,512,[],"f0a0","M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"]},Qo={prefix:"fas",iconName:"head-side-cough",icon:[640,512,[],"e061","M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z"]},Jo={prefix:"fas",iconName:"head-side-cough-slash",icon:[640,512,[],"e062","M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z"]},ct={prefix:"fas",iconName:"head-side-mask",icon:[512,512,[],"e063","M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z"]},at={prefix:"fas",iconName:"head-side-virus",icon:[512,512,[],"e064","M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z"]},et={prefix:"fas",iconName:"heading",icon:[512,512,[],"f1dc","M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z"]},it={prefix:"fas",iconName:"headphones",icon:[512,512,[],"f025","M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z"]},nt={prefix:"fas",iconName:"headphones-alt",icon:[512,512,[],"f58f","M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z"]},ot={prefix:"fas",iconName:"headset",icon:[512,512,[],"f590","M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z"]},tt={prefix:"fas",iconName:"heart",icon:[512,512,[],"f004","M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z"]},rt={prefix:"fas",iconName:"heart-broken",icon:[512,512,[],"f7a9","M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z"]},lt={prefix:"fas",iconName:"heartbeat",icon:[512,512,[],"f21e","M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z"]},ft={prefix:"fas",iconName:"helicopter",icon:[640,512,[],"f533","M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z"]},st={prefix:"fas",iconName:"highlighter",icon:[544,512,[],"f591","M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z"]},ht={prefix:"fas",iconName:"hiking",icon:[384,512,[],"f6ec","M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z"]},mt={prefix:"fas",iconName:"hippo",icon:[640,512,[],"f6ed","M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]},vt={prefix:"fas",iconName:"history",icon:[512,512,[],"f1da","M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"]},zt={prefix:"fas",iconName:"hockey-puck",icon:[512,512,[],"f453","M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z"]},pt={prefix:"fas",iconName:"holly-berry",icon:[448,512,[],"f7aa","M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z"]},dt={prefix:"fas",iconName:"home",icon:[576,512,[],"f015","M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"]},ut={prefix:"fas",iconName:"horse",icon:[576,512,[],"f6f0","M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]},Mt={prefix:"fas",iconName:"horse-head",icon:[512,512,[],"f7ab","M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z"]},Ct={prefix:"fas",iconName:"hospital",icon:[448,512,[],"f0f8","M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z"]},Ht={prefix:"fas",iconName:"hospital-alt",icon:[576,512,[],"f47d","M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z"]},gt={prefix:"fas",iconName:"hospital-symbol",icon:[512,512,[],"f47e","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z"]},Vt={prefix:"fas",iconName:"hospital-user",icon:[640,512,[],"f80d","M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z"]},Lt={prefix:"fas",iconName:"hot-tub",icon:[512,512,[],"f593","M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z"]},xt={prefix:"fas",iconName:"hotdog",icon:[512,512,[],"f80f","M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z"]},bt={prefix:"fas",iconName:"hotel",icon:[576,512,[],"f594","M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z"]},Nt={prefix:"fas",iconName:"hourglass",icon:[384,512,[],"f254","M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z"]},At={prefix:"fas",iconName:"hourglass-end",icon:[384,512,[],"f253","M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z"]},yt={prefix:"fas",iconName:"hourglass-half",icon:[384,512,[],"f252","M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z"]},St={prefix:"fas",iconName:"hourglass-start",icon:[384,512,[],"f251","M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z"]},wt={prefix:"fas",iconName:"house-damage",icon:[576,512,[],"f6f1","M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z"]},kt={prefix:"fas",iconName:"house-user",icon:[576,512,[],"e065","M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z"]},Tt={prefix:"fas",iconName:"hryvnia",icon:[384,512,[],"f6f2","M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z"]},Pt={prefix:"fas",iconName:"i-cursor",icon:[256,512,[],"f246","M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z"]},Et={prefix:"fas",iconName:"ice-cream",icon:[448,512,[],"f810","M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z"]},Dt={prefix:"fas",iconName:"icicles",icon:[512,512,[],"f7ad","M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z"]},Ot={prefix:"fas",iconName:"icons",icon:[512,512,[],"f86d","M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z"]},It={prefix:"fas",iconName:"id-badge",icon:[384,512,[],"f2c1","M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]},Bt={prefix:"fas",iconName:"id-card",icon:[576,512,[],"f2c2","M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z"]},Rt={prefix:"fas",iconName:"id-card-alt",icon:[576,512,[],"f47f","M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z"]},Ft={prefix:"fas",iconName:"igloo",icon:[576,512,[],"f7ae","M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z"]},Zt={prefix:"fas",iconName:"image",icon:[512,512,[],"f03e","M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"]},jt={prefix:"fas",iconName:"images",icon:[576,512,[],"f302","M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z"]},qt={prefix:"fas",iconName:"inbox",icon:[576,512,[],"f01c","M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z"]},Ut={prefix:"fas",iconName:"indent",icon:[448,512,[],"f03c","M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},Wt={prefix:"fas",iconName:"industry",icon:[512,512,[],"f275","M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z"]},Gt={prefix:"fas",iconName:"infinity",icon:[640,512,[],"f534","M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z"]},_t={prefix:"fas",iconName:"info",icon:[192,512,[],"f129","M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"]},$t={prefix:"fas",iconName:"info-circle",icon:[512,512,[],"f05a","M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"]},Yt={prefix:"fas",iconName:"italic",icon:[320,512,[],"f033","M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z"]},Xt={prefix:"fas",iconName:"jedi",icon:[576,512,[],"f669","M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z"]},Kt={prefix:"fas",iconName:"joint",icon:[640,512,[],"f595","M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z"]},Qt={prefix:"fas",iconName:"journal-whills",icon:[448,512,[],"f66a","M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z"]},Jt={prefix:"fas",iconName:"kaaba",icon:[576,512,[],"f66b","M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z"]},cr={prefix:"fas",iconName:"key",icon:[512,512,[],"f084","M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z"]},ar={prefix:"fas",iconName:"keyboard",icon:[576,512,[],"f11c","M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"]},er={prefix:"fas",iconName:"khanda",icon:[512,512,[],"f66d","M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z"]},ir={prefix:"fas",iconName:"kiss",icon:[496,512,[],"f596","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},nr={prefix:"fas",iconName:"kiss-beam",icon:[496,512,[],"f597","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z"]},or={prefix:"fas",iconName:"kiss-wink-heart",icon:[504,512,[],"f598","M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z"]},tr={prefix:"fas",iconName:"kiwi-bird",icon:[576,512,[],"f535","M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z"]},rr={prefix:"fas",iconName:"landmark",icon:[512,512,[],"f66f","M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},lr={prefix:"fas",iconName:"language",icon:[640,512,[],"f1ab","M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z"]},fr={prefix:"fas",iconName:"laptop",icon:[640,512,[],"f109","M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"]},sr={prefix:"fas",iconName:"laptop-code",icon:[640,512,[],"f5fc","M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"]},hr={prefix:"fas",iconName:"laptop-house",icon:[640,512,[],"e066","M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]},mr={prefix:"fas",iconName:"laptop-medical",icon:[640,512,[],"f812","M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]},vr={prefix:"fas",iconName:"laugh",icon:[496,512,[],"f599","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z"]},zr={prefix:"fas",iconName:"laugh-beam",icon:[496,512,[],"f59a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]},pr={prefix:"fas",iconName:"laugh-squint",icon:[496,512,[],"f59b","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]},dr={prefix:"fas",iconName:"laugh-wink",icon:[496,512,[],"f59c","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]},ur={prefix:"fas",iconName:"layer-group",icon:[512,512,[],"f5fd","M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z"]},Mr={prefix:"fas",iconName:"leaf",icon:[576,512,[],"f06c","M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z"]},Cr={prefix:"fas",iconName:"lemon",icon:[512,512,[],"f094","M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z"]},Hr={prefix:"fas",iconName:"less-than",icon:[384,512,[],"f536","M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z"]},gr={prefix:"fas",iconName:"less-than-equal",icon:[448,512,[],"f537","M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]},Vr={prefix:"fas",iconName:"level-down-alt",icon:[320,512,[],"f3be","M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z"]},Lr={prefix:"fas",iconName:"level-up-alt",icon:[320,512,[],"f3bf","M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z"]},xr={prefix:"fas",iconName:"life-ring",icon:[512,512,[],"f1cd","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z"]},br={prefix:"fas",iconName:"lightbulb",icon:[352,512,[],"f0eb","M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"]},Nr={prefix:"fas",iconName:"link",icon:[512,512,[],"f0c1","M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"]},Ar={prefix:"fas",iconName:"lira-sign",icon:[384,512,[],"f195","M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z"]},yr={prefix:"fas",iconName:"list",icon:[512,512,[],"f03a","M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},Sr={prefix:"fas",iconName:"list-alt",icon:[512,512,[],"f022","M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z"]},wr={prefix:"fas",iconName:"list-ol",icon:[512,512,[],"f0cb","M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"]},kr={prefix:"fas",iconName:"list-ul",icon:[512,512,[],"f0ca","M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},Tr={prefix:"fas",iconName:"location-arrow",icon:[512,512,[],"f124","M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z"]},Pr={prefix:"fas",iconName:"lock",icon:[448,512,[],"f023","M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"]},Er={prefix:"fas",iconName:"lock-open",icon:[576,512,[],"f3c1","M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z"]},Dr={prefix:"fas",iconName:"long-arrow-alt-down",icon:[256,512,[],"f309","M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z"]},Or={prefix:"fas",iconName:"long-arrow-alt-left",icon:[448,512,[],"f30a","M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z"]},Ir={prefix:"fas",iconName:"long-arrow-alt-right",icon:[448,512,[],"f30b","M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z"]},Br={prefix:"fas",iconName:"long-arrow-alt-up",icon:[256,512,[],"f30c","M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z"]},Rr={prefix:"fas",iconName:"low-vision",icon:[576,512,[],"f2a8","M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z"]},Fr={prefix:"fas",iconName:"luggage-cart",icon:[640,512,[],"f59d","M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z"]},Zr={prefix:"fas",iconName:"lungs",icon:[640,512,[],"f604","M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z"]},jr={prefix:"fas",iconName:"lungs-virus",icon:[640,512,[],"e067","M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z"]},qr={prefix:"fas",iconName:"magic",icon:[512,512,[],"f0d0","M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z"]},Ur={prefix:"fas",iconName:"magnet",icon:[512,512,[],"f076","M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z"]},Wr={prefix:"fas",iconName:"mail-bulk",icon:[576,512,[],"f674","M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z"]},Gr={prefix:"fas",iconName:"male",icon:[192,512,[],"f183","M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z"]},_r={prefix:"fas",iconName:"map",icon:[576,512,[],"f279","M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z"]},$r={prefix:"fas",iconName:"map-marked",icon:[576,512,[],"f59f","M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z"]},Yr={prefix:"fas",iconName:"map-marked-alt",icon:[576,512,[],"f5a0","M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z"]},Xr={prefix:"fas",iconName:"map-marker",icon:[384,512,[],"f041","M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z"]},Kr={prefix:"fas",iconName:"map-marker-alt",icon:[384,512,[],"f3c5","M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z"]},Qr={prefix:"fas",iconName:"map-pin",icon:[288,512,[],"f276","M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z"]},Jr={prefix:"fas",iconName:"map-signs",icon:[512,512,[],"f277","M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z"]},cl={prefix:"fas",iconName:"marker",icon:[512,512,[],"f5a1","M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z"]},al={prefix:"fas",iconName:"mars",icon:[384,512,[],"f222","M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},el={prefix:"fas",iconName:"mars-double",icon:[512,512,[],"f227","M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z"]},il={prefix:"fas",iconName:"mars-stroke",icon:[384,512,[],"f229","M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},nl={prefix:"fas",iconName:"mars-stroke-h",icon:[480,512,[],"f22b","M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z"]},ol={prefix:"fas",iconName:"mars-stroke-v",icon:[288,512,[],"f22a","M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z"]},tl={prefix:"fas",iconName:"mask",icon:[640,512,[],"f6fa","M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z"]},rl={prefix:"fas",iconName:"medal",icon:[512,512,[],"f5a2","M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z"]},ll={prefix:"fas",iconName:"medkit",icon:[512,512,[],"f0fa","M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z"]},fl={prefix:"fas",iconName:"meh",icon:[496,512,[],"f11a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},sl={prefix:"fas",iconName:"meh-blank",icon:[496,512,[],"f5a4","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},hl={prefix:"fas",iconName:"meh-rolling-eyes",icon:[496,512,[],"f5a5","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z"]},ml={prefix:"fas",iconName:"memory",icon:[640,512,[],"f538","M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z"]},vl={prefix:"fas",iconName:"menorah",icon:[640,512,[],"f676","M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z"]},zl={prefix:"fas",iconName:"mercury",icon:[288,512,[],"f223","M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z"]},pl={prefix:"fas",iconName:"meteor",icon:[512,512,[],"f753","M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z"]},dl={prefix:"fas",iconName:"microchip",icon:[512,512,[],"f2db","M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z"]},ul={prefix:"fas",iconName:"microphone",icon:[352,512,[],"f130","M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z"]},Ml={prefix:"fas",iconName:"microphone-alt",icon:[352,512,[],"f3c9","M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z"]},Cl={prefix:"fas",iconName:"microphone-alt-slash",icon:[640,512,[],"f539","M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z"]},Hl={prefix:"fas",iconName:"microphone-slash",icon:[640,512,[],"f131","M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z"]},gl={prefix:"fas",iconName:"microscope",icon:[512,512,[],"f610","M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z"]},Vl={prefix:"fas",iconName:"minus",icon:[448,512,[],"f068","M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},Ll={prefix:"fas",iconName:"minus-circle",icon:[512,512,[],"f056","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z"]},xl={prefix:"fas",iconName:"minus-square",icon:[448,512,[],"f146","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z"]},bl={prefix:"fas",iconName:"mitten",icon:[448,512,[],"f7b5","M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z"]},Nl={prefix:"fas",iconName:"mobile",icon:[320,512,[],"f10b","M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},Al={prefix:"fas",iconName:"mobile-alt",icon:[320,512,[],"f3cd","M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z"]},yl={prefix:"fas",iconName:"money-bill",icon:[640,512,[],"f0d6","M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z"]},Sl={prefix:"fas",iconName:"money-bill-alt",icon:[640,512,[],"f3d1","M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z"]},wl={prefix:"fas",iconName:"money-bill-wave",icon:[640,512,[],"f53a","M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z"]},kl={prefix:"fas",iconName:"money-bill-wave-alt",icon:[640,512,[],"f53b","M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z"]},Tl={prefix:"fas",iconName:"money-check",icon:[640,512,[],"f53c","M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z"]},Pl={prefix:"fas",iconName:"money-check-alt",icon:[640,512,[],"f53d","M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z"]},El={prefix:"fas",iconName:"monument",icon:[384,512,[],"f5a6","M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z"]},Dl={prefix:"fas",iconName:"moon",icon:[512,512,[],"f186","M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"]},Ol={prefix:"fas",iconName:"mortar-pestle",icon:[512,512,[],"f5a7","M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},Il={prefix:"fas",iconName:"mosque",icon:[640,512,[],"f678","M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z"]},Bl={prefix:"fas",iconName:"motorcycle",icon:[640,512,[],"f21c","M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z"]},Rl={prefix:"fas",iconName:"mountain",icon:[640,512,[],"f6fc","M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z"]},Fl={prefix:"fas",iconName:"mouse",icon:[384,512,[],"f8cc","M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z"]},Zl={prefix:"fas",iconName:"mouse-pointer",icon:[320,512,[],"f245","M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z"]},jl={prefix:"fas",iconName:"mug-hot",icon:[512,512,[],"f7b6","M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z"]},ql={prefix:"fas",iconName:"music",icon:[512,512,[],"f001","M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z"]},Ul={prefix:"fas",iconName:"network-wired",icon:[640,512,[],"f6ff","M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z"]},Wl={prefix:"fas",iconName:"neuter",icon:[288,512,[],"f22c","M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},Gl={prefix:"fas",iconName:"newspaper",icon:[576,512,[],"f1ea","M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z"]},_l={prefix:"fas",iconName:"not-equal",icon:[448,512,[],"f53e","M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z"]},$l={prefix:"fas",iconName:"notes-medical",icon:[384,512,[],"f481","M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z"]},Yl={prefix:"fas",iconName:"object-group",icon:[512,512,[],"f247","M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z"]},Xl={prefix:"fas",iconName:"object-ungroup",icon:[576,512,[],"f248","M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z"]},Kl={prefix:"fas",iconName:"oil-can",icon:[640,512,[],"f613","M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z"]},Ql={prefix:"fas",iconName:"om",icon:[512,512,[],"f679","M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z"]},Jl={prefix:"fas",iconName:"otter",icon:[640,512,[],"f700","M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z"]},cf={prefix:"fas",iconName:"outdent",icon:[448,512,[],"f03b","M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},af={prefix:"fas",iconName:"pager",icon:[512,512,[],"f815","M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z"]},ef={prefix:"fas",iconName:"paint-brush",icon:[512,512,[],"f1fc","M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z"]},nf={prefix:"fas",iconName:"paint-roller",icon:[512,512,[],"f5aa","M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z"]},of={prefix:"fas",iconName:"palette",icon:[512,512,[],"f53f","M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},tf={prefix:"fas",iconName:"pallet",icon:[640,512,[],"f482","M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z"]},rf={prefix:"fas",iconName:"paper-plane",icon:[512,512,[],"f1d8","M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z"]},lf={prefix:"fas",iconName:"paperclip",icon:[448,512,[],"f0c6","M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z"]},ff={prefix:"fas",iconName:"parachute-box",icon:[512,512,[],"f4cd","M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z"]},sf={prefix:"fas",iconName:"paragraph",icon:[448,512,[],"f1dd","M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z"]},hf={prefix:"fas",iconName:"parking",icon:[448,512,[],"f540","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z"]},mf={prefix:"fas",iconName:"passport",icon:[448,512,[],"f5ab","M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z"]},vf={prefix:"fas",iconName:"pastafarianism",icon:[640,512,[],"f67b","M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z"]},zf={prefix:"fas",iconName:"paste",icon:[448,512,[],"f0ea","M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z"]},pf={prefix:"fas",iconName:"pause",icon:[448,512,[],"f04c","M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z"]},df={prefix:"fas",iconName:"pause-circle",icon:[512,512,[],"f28b","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z"]},uf={prefix:"fas",iconName:"paw",icon:[512,512,[],"f1b0","M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z"]},Mf={prefix:"fas",iconName:"peace",icon:[496,512,[],"f67c","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z"]},Cf={prefix:"fas",iconName:"pen",icon:[512,512,[],"f304","M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z"]},Hf={prefix:"fas",iconName:"pen-alt",icon:[512,512,[],"f305","M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z"]},gf={prefix:"fas",iconName:"pen-fancy",icon:[512,512,[],"f5ac","M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z"]},Vf={prefix:"fas",iconName:"pen-nib",icon:[512,512,[],"f5ad","M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z"]},Lf={prefix:"fas",iconName:"pen-square",icon:[448,512,[],"f14b","M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z"]},xf={prefix:"fas",iconName:"pencil-alt",icon:[512,512,[],"f303","M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"]},bf={prefix:"fas",iconName:"pencil-ruler",icon:[512,512,[],"f5ae","M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z"]},Nf={prefix:"fas",iconName:"people-arrows",icon:[576,512,[],"e068","M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z"]},Af={prefix:"fas",iconName:"people-carry",icon:[640,512,[],"f4ce","M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z"]},yf={prefix:"fas",iconName:"pepper-hot",icon:[512,512,[],"f816","M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z"]},Sf={prefix:"fas",iconName:"percent",icon:[448,512,[],"f295","M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z"]},wf={prefix:"fas",iconName:"percentage",icon:[384,512,[],"f541","M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z"]},kf={prefix:"fas",iconName:"person-booth",icon:[576,512,[],"f756","M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z"]},Tf={prefix:"fas",iconName:"phone",icon:[512,512,[],"f095","M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z"]},Pf={prefix:"fas",iconName:"phone-alt",icon:[512,512,[],"f879","M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z"]},Ef={prefix:"fas",iconName:"phone-slash",icon:[640,512,[],"f3dd","M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z"]},Df={prefix:"fas",iconName:"phone-square",icon:[448,512,[],"f098","M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z"]},Of={prefix:"fas",iconName:"phone-square-alt",icon:[448,512,[],"f87b","M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z"]},If={prefix:"fas",iconName:"phone-volume",icon:[384,512,[],"f2a0","M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z"]},Bf={prefix:"fas",iconName:"photo-video",icon:[640,512,[],"f87c","M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z"]},Rf={prefix:"fas",iconName:"piggy-bank",icon:[576,512,[],"f4d3","M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z"]},Ff={prefix:"fas",iconName:"pills",icon:[576,512,[],"f484","M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z"]},Zf={prefix:"fas",iconName:"pizza-slice",icon:[512,512,[],"f818","M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"]},jf={prefix:"fas",iconName:"place-of-worship",icon:[640,512,[],"f67f","M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z"]},qf={prefix:"fas",iconName:"plane",icon:[576,512,[],"f072","M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z"]},Uf={prefix:"fas",iconName:"plane-arrival",icon:[640,512,[],"f5af","M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z"]},Wf={prefix:"fas",iconName:"plane-departure",icon:[640,512,[],"f5b0","M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z"]},Gf={prefix:"fas",iconName:"plane-slash",icon:[640,512,[],"e069","M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z"]},_f={prefix:"fas",iconName:"play",icon:[448,512,[],"f04b","M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"]},$f={prefix:"fas",iconName:"play-circle",icon:[512,512,[],"f144","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z"]},Yf={prefix:"fas",iconName:"plug",icon:[384,512,[],"f1e6","M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z"]},Xf={prefix:"fas",iconName:"plus",icon:[448,512,[],"f067","M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},Kf={prefix:"fas",iconName:"plus-circle",icon:[512,512,[],"f055","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"]},Qf={prefix:"fas",iconName:"plus-square",icon:[448,512,[],"f0fe","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"]},Jf={prefix:"fas",iconName:"podcast",icon:[448,512,[],"f2ce","M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z"]},cs={prefix:"fas",iconName:"poll",icon:[448,512,[],"f681","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z"]},as={prefix:"fas",iconName:"poll-h",icon:[448,512,[],"f682","M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z"]},es={prefix:"fas",iconName:"poo",icon:[512,512,[],"f2fe","M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},is={prefix:"fas",iconName:"poo-storm",icon:[448,512,[],"f75a","M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z"]},ns={prefix:"fas",iconName:"poop",icon:[512,512,[],"f619","M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z"]},os={prefix:"fas",iconName:"portrait",icon:[384,512,[],"f3e0","M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]},ts={prefix:"fas",iconName:"pound-sign",icon:[320,512,[],"f154","M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z"]},rs={prefix:"fas",iconName:"power-off",icon:[512,512,[],"f011","M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z"]},ls={prefix:"fas",iconName:"pray",icon:[384,512,[],"f683","M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z"]},fs={prefix:"fas",iconName:"praying-hands",icon:[640,512,[],"f684","M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z"]},ss={prefix:"fas",iconName:"prescription",icon:[384,512,[],"f5b1","M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z"]},hs={prefix:"fas",iconName:"prescription-bottle",icon:[384,512,[],"f485","M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z"]},ms={prefix:"fas",iconName:"prescription-bottle-alt",icon:[384,512,[],"f486","M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z"]},vs={prefix:"fas",iconName:"print",icon:[512,512,[],"f02f","M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},zs={prefix:"fas",iconName:"procedures",icon:[640,512,[],"f487","M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z"]},ps={prefix:"fas",iconName:"project-diagram",icon:[640,512,[],"f542","M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z"]},ds={prefix:"fas",iconName:"pump-medical",icon:[384,512,[],"e06a","M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z"]},us={prefix:"fas",iconName:"pump-soap",icon:[384,512,[],"e06b","M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z"]},Ms={prefix:"fas",iconName:"puzzle-piece",icon:[576,512,[],"f12e","M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z"]},Cs={prefix:"fas",iconName:"qrcode",icon:[448,512,[],"f029","M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z"]},Hs={prefix:"fas",iconName:"question",icon:[384,512,[],"f128","M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z"]},gs={prefix:"fas",iconName:"question-circle",icon:[512,512,[],"f059","M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z"]},Vs={prefix:"fas",iconName:"quidditch",icon:[640,512,[],"f458","M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z"]},Ls={prefix:"fas",iconName:"quote-left",icon:[512,512,[],"f10d","M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"]},xs={prefix:"fas",iconName:"quote-right",icon:[512,512,[],"f10e","M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z"]},bs={prefix:"fas",iconName:"quran",icon:[448,512,[],"f687","M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"]},Ns={prefix:"fas",iconName:"radiation",icon:[496,512,[],"f7b9","M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z"]},As={prefix:"fas",iconName:"radiation-alt",icon:[496,512,[],"f7ba","M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]},ys={prefix:"fas",iconName:"rainbow",icon:[576,512,[],"f75b","M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z"]},Ss={prefix:"fas",iconName:"random",icon:[512,512,[],"f074","M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z"]},ws={prefix:"fas",iconName:"receipt",icon:[384,512,[],"f543","M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z"]},ks={prefix:"fas",iconName:"record-vinyl",icon:[512,512,[],"f8d9","M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z"]},Ts={prefix:"fas",iconName:"recycle",icon:[512,512,[],"f1b8","M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z"]},Ps={prefix:"fas",iconName:"redo",icon:[512,512,[],"f01e","M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"]},Es={prefix:"fas",iconName:"redo-alt",icon:[512,512,[],"f2f9","M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z"]},Ds={prefix:"fas",iconName:"registered",icon:[512,512,[],"f25d","M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z"]},Os={prefix:"fas",iconName:"remove-format",icon:[640,512,[],"f87d","M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z"]},Is={prefix:"fas",iconName:"reply",icon:[512,512,[],"f3e5","M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z"]},Bs={prefix:"fas",iconName:"reply-all",icon:[576,512,[],"f122","M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z"]},Rs={prefix:"fas",iconName:"republican",icon:[640,512,[],"f75e","M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z"]},Fs={prefix:"fas",iconName:"restroom",icon:[640,512,[],"f7bd","M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z"]},Zs={prefix:"fas",iconName:"retweet",icon:[640,512,[],"f079","M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z"]},js={prefix:"fas",iconName:"ribbon",icon:[448,512,[],"f4d6","M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z"]},qs={prefix:"fas",iconName:"ring",icon:[512,512,[],"f70b","M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z"]},Us={prefix:"fas",iconName:"road",icon:[576,512,[],"f018","M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z"]},Ws={prefix:"fas",iconName:"robot",icon:[640,512,[],"f544","M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"]},Gs={prefix:"fas",iconName:"rocket",icon:[512,512,[],"f135","M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"]},_s={prefix:"fas",iconName:"route",icon:[512,512,[],"f4d7","M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},$s={prefix:"fas",iconName:"rss",icon:[448,512,[],"f09e","M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z"]},Ys={prefix:"fas",iconName:"rss-square",icon:[448,512,[],"f143","M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z"]},Xs={prefix:"fas",iconName:"ruble-sign",icon:[384,512,[],"f158","M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z"]},Ks={prefix:"fas",iconName:"ruler",icon:[640,512,[],"f545","M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z"]},Qs={prefix:"fas",iconName:"ruler-combined",icon:[512,512,[],"f546","M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]},Js={prefix:"fas",iconName:"ruler-horizontal",icon:[576,512,[],"f547","M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z"]},ch={prefix:"fas",iconName:"ruler-vertical",icon:[256,512,[],"f548","M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z"]},ah={prefix:"fas",iconName:"running",icon:[416,512,[],"f70c","M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z"]},eh={prefix:"fas",iconName:"rupee-sign",icon:[320,512,[],"f156","M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z"]},ih={prefix:"fas",iconName:"sad-cry",icon:[496,512,[],"f5b3","M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z"]},nh={prefix:"fas",iconName:"sad-tear",icon:[496,512,[],"f5b4","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z"]},oh={prefix:"fas",iconName:"satellite",icon:[512,512,[],"f7bf","M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z"]},th={prefix:"fas",iconName:"satellite-dish",icon:[512,512,[],"f7c0","M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z"]},rh={prefix:"fas",iconName:"save",icon:[448,512,[],"f0c7","M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"]},lh={prefix:"fas",iconName:"school",icon:[640,512,[],"f549","M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z"]},fh={prefix:"fas",iconName:"screwdriver",icon:[512,512,[],"f54a","M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"]},sh={prefix:"fas",iconName:"scroll",icon:[640,512,[],"f70e","M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z"]},hh={prefix:"fas",iconName:"sd-card",icon:[384,512,[],"f7c2","M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z"]},mh={prefix:"fas",iconName:"search",icon:[512,512,[],"f002","M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"]},vh={prefix:"fas",iconName:"search-dollar",icon:[512,512,[],"f688","M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z"]},zh={prefix:"fas",iconName:"search-location",icon:[512,512,[],"f689","M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},ph={prefix:"fas",iconName:"search-minus",icon:[512,512,[],"f010","M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"]},dh={prefix:"fas",iconName:"search-plus",icon:[512,512,[],"f00e","M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"]},uh={prefix:"fas",iconName:"seedling",icon:[512,512,[],"f4d8","M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z"]},Mh={prefix:"fas",iconName:"server",icon:[512,512,[],"f233","M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z"]},Ch={prefix:"fas",iconName:"shapes",icon:[512,512,[],"f61f","M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z"]},Hh={prefix:"fas",iconName:"share",icon:[512,512,[],"f064","M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"]},gh={prefix:"fas",iconName:"share-alt",icon:[448,512,[],"f1e0","M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z"]},Vh={prefix:"fas",iconName:"share-alt-square",icon:[448,512,[],"f1e1","M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z"]},Lh={prefix:"fas",iconName:"share-square",icon:[576,512,[],"f14d","M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z"]},xh={prefix:"fas",iconName:"shekel-sign",icon:[448,512,[],"f20b","M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z"]},bh={prefix:"fas",iconName:"shield-alt",icon:[512,512,[],"f3ed","M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z"]},Nh={prefix:"fas",iconName:"shield-virus",icon:[512,512,[],"e06c","M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z"]},Ah={prefix:"fas",iconName:"ship",icon:[640,512,[],"f21a","M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z"]},yh={prefix:"fas",iconName:"shipping-fast",icon:[640,512,[],"f48b","M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]},Sh={prefix:"fas",iconName:"shoe-prints",icon:[640,512,[],"f54b","M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z"]},wh={prefix:"fas",iconName:"shopping-bag",icon:[448,512,[],"f290","M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z"]},kh={prefix:"fas",iconName:"shopping-basket",icon:[576,512,[],"f291","M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z"]},Th={prefix:"fas",iconName:"shopping-cart",icon:[576,512,[],"f07a","M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z"]},Ph={prefix:"fas",iconName:"shower",icon:[512,512,[],"f2cc","M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z"]},Eh={prefix:"fas",iconName:"shuttle-van",icon:[640,512,[],"f5b6","M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z"]},Dh={prefix:"fas",iconName:"sign",icon:[512,512,[],"f4d9","M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z"]},Oh={prefix:"fas",iconName:"sign-in-alt",icon:[512,512,[],"f2f6","M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z"]},Ih={prefix:"fas",iconName:"sign-language",icon:[448,512,[],"f2a7","M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z"]},Bh={prefix:"fas",iconName:"sign-out-alt",icon:[512,512,[],"f2f5","M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z"]},Rh={prefix:"fas",iconName:"signal",icon:[640,512,[],"f012","M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z"]},Fh={prefix:"fas",iconName:"signature",icon:[640,512,[],"f5b7","M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z"]},Zh={prefix:"fas",iconName:"sim-card",icon:[384,512,[],"f7c4","M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z"]},jh={prefix:"fas",iconName:"sink",icon:[512,512,[],"e06d","M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z"]},qh={prefix:"fas",iconName:"sitemap",icon:[640,512,[],"f0e8","M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]},Uh={prefix:"fas",iconName:"skating",icon:[448,512,[],"f7c5","M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z"]},Wh={prefix:"fas",iconName:"skiing",icon:[512,512,[],"f7c9","M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z"]},Gh={prefix:"fas",iconName:"skiing-nordic",icon:[576,512,[],"f7ca","M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z"]},_h={prefix:"fas",iconName:"skull",icon:[512,512,[],"f54c","M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z"]},$h={prefix:"fas",iconName:"skull-crossbones",icon:[448,512,[],"f714","M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z"]},Yh={prefix:"fas",iconName:"slash",icon:[640,512,[],"f715","M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"]},Xh={prefix:"fas",iconName:"sleigh",icon:[640,512,[],"f7cc","M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z"]},Kh={prefix:"fas",iconName:"sliders-h",icon:[512,512,[],"f1de","M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"]},Qh={prefix:"fas",iconName:"smile",icon:[496,512,[],"f118","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z"]},Jh={prefix:"fas",iconName:"smile-beam",icon:[496,512,[],"f5b8","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z"]},cm={prefix:"fas",iconName:"smile-wink",icon:[496,512,[],"f4da","M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z"]},am={prefix:"fas",iconName:"smog",icon:[640,512,[],"f75f","M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z"]},em={prefix:"fas",iconName:"smoking",icon:[640,512,[],"f48d","M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z"]},im={prefix:"fas",iconName:"smoking-ban",icon:[512,512,[],"f54d","M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z"]},nm={prefix:"fas",iconName:"sms",icon:[512,512,[],"f7cd","M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z"]},om={prefix:"fas",iconName:"snowboarding",icon:[512,512,[],"f7ce","M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z"]},tm={prefix:"fas",iconName:"snowflake",icon:[448,512,[],"f2dc","M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z"]},rm={prefix:"fas",iconName:"snowman",icon:[512,512,[],"f7d0","M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]},lm={prefix:"fas",iconName:"snowplow",icon:[640,512,[],"f7d2","M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z"]},fm={prefix:"fas",iconName:"soap",icon:[512,512,[],"e06e","M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z"]},sm={prefix:"fas",iconName:"socks",icon:[512,512,[],"f696","M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z"]},hm={prefix:"fas",iconName:"solar-panel",icon:[640,512,[],"f5ba","M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z"]},mm={prefix:"fas",iconName:"sort",icon:[320,512,[],"f0dc","M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z"]},vm={prefix:"fas",iconName:"sort-alpha-down",icon:[448,512,[],"f15d","M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z"]},zm={prefix:"fas",iconName:"sort-alpha-down-alt",icon:[448,512,[],"f881","M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z"]},pm={prefix:"fas",iconName:"sort-alpha-up",icon:[448,512,[],"f15e","M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z"]},dm={prefix:"fas",iconName:"sort-alpha-up-alt",icon:[448,512,[],"f882","M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z"]},um={prefix:"fas",iconName:"sort-amount-down",icon:[512,512,[],"f160","M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},Mm={prefix:"fas",iconName:"sort-amount-down-alt",icon:[512,512,[],"f884","M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z"]},Cm={prefix:"fas",iconName:"sort-amount-up",icon:[512,512,[],"f161","M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},Hm={prefix:"fas",iconName:"sort-amount-up-alt",icon:[512,512,[],"f885","M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z"]},gm={prefix:"fas",iconName:"sort-down",icon:[320,512,[],"f0dd","M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z"]},Vm={prefix:"fas",iconName:"sort-numeric-down",icon:[448,512,[],"f162","M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z"]},Lm={prefix:"fas",iconName:"sort-numeric-down-alt",icon:[448,512,[],"f886","M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z"]},xm={prefix:"fas",iconName:"sort-numeric-up",icon:[448,512,[],"f163","M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z"]},bm={prefix:"fas",iconName:"sort-numeric-up-alt",icon:[448,512,[],"f887","M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z"]},Nm={prefix:"fas",iconName:"sort-up",icon:[320,512,[],"f0de","M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z"]},Am={prefix:"fas",iconName:"spa",icon:[576,512,[],"f5bb","M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z"]},ym={prefix:"fas",iconName:"space-shuttle",icon:[640,512,[],"f197","M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z"]},Sm={prefix:"fas",iconName:"spell-check",icon:[576,512,[],"f891","M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z"]},wm={prefix:"fas",iconName:"spider",icon:[576,512,[],"f717","M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z"]},km={prefix:"fas",iconName:"spinner",icon:[512,512,[],"f110","M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"]},Tm={prefix:"fas",iconName:"splotch",icon:[512,512,[],"f5bc","M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z"]},Pm={prefix:"fas",iconName:"spray-can",icon:[512,512,[],"f5bd","M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]},Em={prefix:"fas",iconName:"square",icon:[448,512,[],"f0c8","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]},Dm={prefix:"fas",iconName:"square-full",icon:[512,512,[],"f45c","M512 512H0V0h512v512z"]},Om={prefix:"fas",iconName:"square-root-alt",icon:[576,512,[],"f698","M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"]},Im={prefix:"fas",iconName:"stamp",icon:[512,512,[],"f5bf","M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z"]},Bm={prefix:"fas",iconName:"star",icon:[576,512,[],"f005","M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"]},Rm={prefix:"fas",iconName:"star-and-crescent",icon:[512,512,[],"f699","M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z"]},Fm={prefix:"fas",iconName:"star-half",icon:[576,512,[],"f089","M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z"]},Zm={prefix:"fas",iconName:"star-half-alt",icon:[536,512,[],"f5c0","M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z"]},jm={prefix:"fas",iconName:"star-of-david",icon:[464,512,[],"f69a","M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z"]},qm={prefix:"fas",iconName:"star-of-life",icon:[480,512,[],"f621","M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z"]},Um={prefix:"fas",iconName:"step-backward",icon:[448,512,[],"f048","M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z"]},Wm={prefix:"fas",iconName:"step-forward",icon:[448,512,[],"f051","M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"]},Gm={prefix:"fas",iconName:"stethoscope",icon:[512,512,[],"f0f1","M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]},_m={prefix:"fas",iconName:"sticky-note",icon:[448,512,[],"f249","M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z"]},$m={prefix:"fas",iconName:"stop",icon:[448,512,[],"f04d","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]},Ym={prefix:"fas",iconName:"stop-circle",icon:[512,512,[],"f28d","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z"]},Xm={prefix:"fas",iconName:"stopwatch",icon:[448,512,[],"f2f2","M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"]},Km={prefix:"fas",iconName:"stopwatch-20",icon:[448,512,[],"e06f","M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z"]},Qm={prefix:"fas",iconName:"store",icon:[616,512,[],"f54e","M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z"]},Jm={prefix:"fas",iconName:"store-alt",icon:[640,512,[],"f54f","M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z"]},cv={prefix:"fas",iconName:"store-alt-slash",icon:[640,512,[],"e070","M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z"]},av={prefix:"fas",iconName:"store-slash",icon:[640,512,[],"e071","M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z"]},ev={prefix:"fas",iconName:"stream",icon:[512,512,[],"f550","M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z"]},iv={prefix:"fas",iconName:"street-view",icon:[512,512,[],"f21d","M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z"]},nv={prefix:"fas",iconName:"strikethrough",icon:[512,512,[],"f0cc","M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z"]},ov={prefix:"fas",iconName:"stroopwafel",icon:[512,512,[],"f551","M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z"]},tv={prefix:"fas",iconName:"subscript",icon:[512,512,[],"f12c","M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z"]},rv={prefix:"fas",iconName:"subway",icon:[448,512,[],"f239","M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"]},lv={prefix:"fas",iconName:"suitcase",icon:[512,512,[],"f0f2","M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z"]},fv={prefix:"fas",iconName:"suitcase-rolling",icon:[384,512,[],"f5c1","M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z"]},sv={prefix:"fas",iconName:"sun",icon:[512,512,[],"f185","M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"]},hv={prefix:"fas",iconName:"superscript",icon:[512,512,[],"f12b","M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z"]},mv={prefix:"fas",iconName:"surprise",icon:[496,512,[],"f5c2","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},vv={prefix:"fas",iconName:"swatchbook",icon:[512,512,[],"f5c3","M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z"]},zv={prefix:"fas",iconName:"swimmer",icon:[640,512,[],"f5c4","M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z"]},pv={prefix:"fas",iconName:"swimming-pool",icon:[640,512,[],"f5c5","M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z"]},dv={prefix:"fas",iconName:"synagogue",icon:[640,512,[],"f69b","M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z"]},uv={prefix:"fas",iconName:"sync",icon:[512,512,[],"f021","M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"]},Mv={prefix:"fas",iconName:"sync-alt",icon:[512,512,[],"f2f1","M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"]},Cv={prefix:"fas",iconName:"syringe",icon:[512,512,[],"f48e","M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z"]},Hv={prefix:"fas",iconName:"table",icon:[512,512,[],"f0ce","M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z"]},gv={prefix:"fas",iconName:"table-tennis",icon:[512,512,[],"f45d","M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z"]},Vv={prefix:"fas",iconName:"tablet",icon:[448,512,[],"f10a","M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},Lv={prefix:"fas",iconName:"tablet-alt",icon:[448,512,[],"f3fa","M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z"]},xv={prefix:"fas",iconName:"tablets",icon:[640,512,[],"f490","M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z"]},bv={prefix:"fas",iconName:"tachometer-alt",icon:[576,512,[],"f3fd","M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},Nv={prefix:"fas",iconName:"tag",icon:[512,512,[],"f02b","M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"]},Av={prefix:"fas",iconName:"tags",icon:[640,512,[],"f02c","M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z"]},yv={prefix:"fas",iconName:"tape",icon:[640,512,[],"f4db","M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z"]},Sv={prefix:"fas",iconName:"tasks",icon:[512,512,[],"f0ae","M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},wv={prefix:"fas",iconName:"taxi",icon:[512,512,[],"f1ba","M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},kv={prefix:"fas",iconName:"teeth",icon:[640,512,[],"f62e","M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z"]},Tv={prefix:"fas",iconName:"teeth-open",icon:[640,512,[],"f62f","M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z"]},Pv={prefix:"fas",iconName:"temperature-high",icon:[512,512,[],"f769","M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z"]},Ev={prefix:"fas",iconName:"temperature-low",icon:[512,512,[],"f76b","M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z"]},Dv={prefix:"fas",iconName:"tenge",icon:[384,512,[],"f7d7","M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z"]},Ov={prefix:"fas",iconName:"terminal",icon:[640,512,[],"f120","M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z"]},Iv={prefix:"fas",iconName:"text-height",icon:[576,512,[],"f034","M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z"]},Bv={prefix:"fas",iconName:"text-width",icon:[448,512,[],"f035","M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z"]},Rv={prefix:"fas",iconName:"th",icon:[512,512,[],"f00a","M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z"]},Fv={prefix:"fas",iconName:"th-large",icon:[512,512,[],"f009","M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z"]},Zv={prefix:"fas",iconName:"th-list",icon:[512,512,[],"f00b","M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z"]},jv={prefix:"fas",iconName:"theater-masks",icon:[640,512,[],"f630","M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z"]},qv={prefix:"fas",iconName:"thermometer",icon:[512,512,[],"f491","M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z"]},Uv={prefix:"fas",iconName:"thermometer-empty",icon:[256,512,[],"f2cb","M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]},Wv={prefix:"fas",iconName:"thermometer-full",icon:[256,512,[],"f2c7","M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z"]},Gv={prefix:"fas",iconName:"thermometer-half",icon:[256,512,[],"f2c9","M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]},_v={prefix:"fas",iconName:"thermometer-quarter",icon:[256,512,[],"f2ca","M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]},$v={prefix:"fas",iconName:"thermometer-three-quarters",icon:[256,512,[],"f2c8","M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]},Yv={prefix:"fas",iconName:"thumbs-down",icon:[512,512,[],"f165","M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z"]},Xv={prefix:"fas",iconName:"thumbs-up",icon:[512,512,[],"f164","M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z"]},Kv={prefix:"fas",iconName:"thumbtack",icon:[384,512,[],"f08d","M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z"]},Qv={prefix:"fas",iconName:"ticket-alt",icon:[576,512,[],"f3ff","M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z"]},Jv={prefix:"fas",iconName:"times",icon:[352,512,[],"f00d","M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"]},cz={prefix:"fas",iconName:"times-circle",icon:[512,512,[],"f057","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"]},az={prefix:"fas",iconName:"tint",icon:[352,512,[],"f043","M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z"]},ez={prefix:"fas",iconName:"tint-slash",icon:[640,512,[],"f5c7","M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z"]},iz={prefix:"fas",iconName:"tired",icon:[496,512,[],"f5c8","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z"]},nz={prefix:"fas",iconName:"toggle-off",icon:[576,512,[],"f204","M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z"]},oz={prefix:"fas",iconName:"toggle-on",icon:[576,512,[],"f205","M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z"]},tz={prefix:"fas",iconName:"toilet",icon:[384,512,[],"f7d8","M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z"]},rz={prefix:"fas",iconName:"toilet-paper",icon:[576,512,[],"f71e","M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z"]},lz={prefix:"fas",iconName:"toilet-paper-slash",icon:[640,512,[],"e072","M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z"]},fz={prefix:"fas",iconName:"toolbox",icon:[512,512,[],"f552","M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z"]},sz={prefix:"fas",iconName:"tools",icon:[512,512,[],"f7d9","M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z"]},hz={prefix:"fas",iconName:"tooth",icon:[448,512,[],"f5c9","M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z"]},mz={prefix:"fas",iconName:"torah",icon:[640,512,[],"f6a0","M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z"]},vz={prefix:"fas",iconName:"torii-gate",icon:[512,512,[],"f6a1","M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z"]},zz={prefix:"fas",iconName:"tractor",icon:[640,512,[],"f722","M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z"]},pz={prefix:"fas",iconName:"trademark",icon:[640,512,[],"f25c","M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z"]},dz={prefix:"fas",iconName:"traffic-light",icon:[384,512,[],"f637","M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z"]},uz={prefix:"fas",iconName:"trailer",icon:[640,512,[],"e041","M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z"]},Mz={prefix:"fas",iconName:"train",icon:[448,512,[],"f238","M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z"]},Cz={prefix:"fas",iconName:"tram",icon:[512,512,[],"f7da","M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]},Hz={prefix:"fas",iconName:"transgender",icon:[384,512,[],"f224","M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},gz={prefix:"fas",iconName:"transgender-alt",icon:[480,512,[],"f225","M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},Vz={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"]},Lz={prefix:"fas",iconName:"trash-alt",icon:[448,512,[],"f2ed","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},xz={prefix:"fas",iconName:"trash-restore",icon:[448,512,[],"f829","M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},bz={prefix:"fas",iconName:"trash-restore-alt",icon:[448,512,[],"f82a","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},Nz={prefix:"fas",iconName:"tree",icon:[384,512,[],"f1bb","M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z"]},Az={prefix:"fas",iconName:"trophy",icon:[576,512,[],"f091","M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z"]},yz={prefix:"fas",iconName:"truck",icon:[640,512,[],"f0d1","M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]},Sz={prefix:"fas",iconName:"truck-loading",icon:[640,512,[],"f4de","M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]},wz={prefix:"fas",iconName:"truck-monster",icon:[640,512,[],"f63b","M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z"]},kz={prefix:"fas",iconName:"truck-moving",icon:[640,512,[],"f4df","M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z"]},Tz={prefix:"fas",iconName:"truck-pickup",icon:[640,512,[],"f63c","M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z"]},Pz={prefix:"fas",iconName:"tshirt",icon:[640,512,[],"f553","M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z"]},Ez={prefix:"fas",iconName:"tty",icon:[512,512,[],"f1e4","M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"]},Dz={prefix:"fas",iconName:"tv",icon:[640,512,[],"f26c","M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z"]},Oz={prefix:"fas",iconName:"umbrella",icon:[576,512,[],"f0e9","M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z"]},Iz={prefix:"fas",iconName:"umbrella-beach",icon:[640,512,[],"f5ca","M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z"]},Bz={prefix:"fas",iconName:"underline",icon:[448,512,[],"f0cd","M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},Rz={prefix:"fas",iconName:"undo",icon:[512,512,[],"f0e2","M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"]},Fz={prefix:"fas",iconName:"undo-alt",icon:[512,512,[],"f2ea","M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"]},Zz={prefix:"fas",iconName:"universal-access",icon:[512,512,[],"f29a","M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z"]},jz={prefix:"fas",iconName:"university",icon:[512,512,[],"f19c","M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z"]},qz={prefix:"fas",iconName:"unlink",icon:[512,512,[],"f127","M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z"]},Uz={prefix:"fas",iconName:"unlock",icon:[448,512,[],"f09c","M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"]},Wz={prefix:"fas",iconName:"unlock-alt",icon:[448,512,[],"f13e","M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z"]},Gz={prefix:"fas",iconName:"upload",icon:[512,512,[],"f093","M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]},_z={prefix:"fas",iconName:"user",icon:[448,512,[],"f007","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},$z={prefix:"fas",iconName:"user-alt",icon:[512,512,[],"f406","M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z"]},Yz={prefix:"fas",iconName:"user-alt-slash",icon:[640,512,[],"f4fa","M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z"]},Xz={prefix:"fas",iconName:"user-astronaut",icon:[448,512,[],"f4fb","M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z"]},Kz={prefix:"fas",iconName:"user-check",icon:[640,512,[],"f4fc","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z"]},Qz={prefix:"fas",iconName:"user-circle",icon:[496,512,[],"f2bd","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z"]},Jz={prefix:"fas",iconName:"user-clock",icon:[640,512,[],"f4fd","M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z"]},cp={prefix:"fas",iconName:"user-cog",icon:[640,512,[],"f4fe","M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z"]},ap={prefix:"fas",iconName:"user-edit",icon:[640,512,[],"f4ff","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z"]},ep={prefix:"fas",iconName:"user-friends",icon:[640,512,[],"f500","M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z"]},ip={prefix:"fas",iconName:"user-graduate",icon:[448,512,[],"f501","M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z"]},np={prefix:"fas",iconName:"user-injured",icon:[448,512,[],"f728","M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z"]},op={prefix:"fas",iconName:"user-lock",icon:[640,512,[],"f502","M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z"]},tp={prefix:"fas",iconName:"user-md",icon:[448,512,[],"f0f0","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z"]},rp={prefix:"fas",iconName:"user-minus",icon:[640,512,[],"f503","M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},lp={prefix:"fas",iconName:"user-ninja",icon:[448,512,[],"f504","M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z"]},fp={prefix:"fas",iconName:"user-nurse",icon:[448,512,[],"f82f","M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z"]},sp={prefix:"fas",iconName:"user-plus",icon:[640,512,[],"f234","M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},hp={prefix:"fas",iconName:"user-secret",icon:[448,512,[],"f21b","M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z"]},mp={prefix:"fas",iconName:"user-shield",icon:[640,512,[],"f505","M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z"]},vp={prefix:"fas",iconName:"user-slash",icon:[640,512,[],"f506","M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z"]},zp={prefix:"fas",iconName:"user-tag",icon:[640,512,[],"f507","M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z"]},pp={prefix:"fas",iconName:"user-tie",icon:[448,512,[],"f508","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z"]},dp={prefix:"fas",iconName:"user-times",icon:[640,512,[],"f235","M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},up={prefix:"fas",iconName:"users",icon:[640,512,[],"f0c0","M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]},Mp={prefix:"fas",iconName:"users-cog",icon:[640,512,[],"f509","M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]},Cp={prefix:"fas",iconName:"users-slash",icon:[640,512,[],"e073","M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z"]},Hp={prefix:"fas",iconName:"utensil-spoon",icon:[512,512,[],"f2e5","M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z"]},gp={prefix:"fas",iconName:"utensils",icon:[416,512,[],"f2e7","M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z"]},Vp={prefix:"fas",iconName:"vector-square",icon:[512,512,[],"f5cb","M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z"]},Lp={prefix:"fas",iconName:"venus",icon:[288,512,[],"f221","M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z"]},xp={prefix:"fas",iconName:"venus-double",icon:[512,512,[],"f226","M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z"]},bp={prefix:"fas",iconName:"venus-mars",icon:[576,512,[],"f228","M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},Np={prefix:"fas",iconName:"vest",icon:[448,512,[],"e085","M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z"]},Ap={prefix:"fas",iconName:"vest-patches",icon:[448,512,[],"e086","M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z"]},yp={prefix:"fas",iconName:"vial",icon:[480,512,[],"f492","M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z"]},Sp={prefix:"fas",iconName:"vials",icon:[640,512,[],"f493","M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z"]},wp={prefix:"fas",iconName:"video",icon:[576,512,[],"f03d","M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z"]},kp={prefix:"fas",iconName:"video-slash",icon:[640,512,[],"f4e2","M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z"]},Tp={prefix:"fas",iconName:"vihara",icon:[640,512,[],"f6a7","M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z"]},Pp={prefix:"fas",iconName:"virus",icon:[512,512,[],"e074","M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z"]},Ep={prefix:"fas",iconName:"virus-slash",icon:[640,512,[],"e075","M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z"]},Dp={prefix:"fas",iconName:"viruses",icon:[640,512,[],"e076","M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z"]},Op={prefix:"fas",iconName:"voicemail",icon:[640,512,[],"f897","M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z"]},Ip={prefix:"fas",iconName:"volleyball-ball",icon:[512,512,[],"f45f","M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z"]},Bp={prefix:"fas",iconName:"volume-down",icon:[384,512,[],"f027","M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z"]},Rp={prefix:"fas",iconName:"volume-mute",icon:[512,512,[],"f6a9","M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z"]},Fp={prefix:"fas",iconName:"volume-off",icon:[256,512,[],"f026","M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z"]},Zp={prefix:"fas",iconName:"volume-up",icon:[576,512,[],"f028","M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z"]},jp={prefix:"fas",iconName:"vote-yea",icon:[640,512,[],"f772","M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z"]},qp={prefix:"fas",iconName:"vr-cardboard",icon:[640,512,[],"f729","M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z"]},Up={prefix:"fas",iconName:"walking",icon:[320,512,[],"f554","M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z"]},Wp={prefix:"fas",iconName:"wallet",icon:[512,512,[],"f555","M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},Gp={prefix:"fas",iconName:"warehouse",icon:[640,512,[],"f494","M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z"]},_p={prefix:"fas",iconName:"water",icon:[576,512,[],"f773","M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z"]},$p={prefix:"fas",iconName:"wave-square",icon:[640,512,[],"f83e","M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z"]},Yp={prefix:"fas",iconName:"weight",icon:[512,512,[],"f496","M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z"]},Xp={prefix:"fas",iconName:"weight-hanging",icon:[512,512,[],"f5cd","M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"]},Kp={prefix:"fas",iconName:"wheelchair",icon:[512,512,[],"f193","M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z"]},Qp={prefix:"fas",iconName:"wifi",icon:[640,512,[],"f1eb","M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z"]},Jp={prefix:"fas",iconName:"wind",icon:[512,512,[],"f72e","M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z"]},cd={prefix:"fas",iconName:"window-close",icon:[512,512,[],"f410","M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z"]},ad={prefix:"fas",iconName:"window-maximize",icon:[512,512,[],"f2d0","M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z"]},ed={prefix:"fas",iconName:"window-minimize",icon:[512,512,[],"f2d1","M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z"]},id={prefix:"fas",iconName:"window-restore",icon:[512,512,[],"f2d2","M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z"]},nd={prefix:"fas",iconName:"wine-bottle",icon:[512,512,[],"f72f","M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z"]},od={prefix:"fas",iconName:"wine-glass",icon:[288,512,[],"f4e3","M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z"]},td={prefix:"fas",iconName:"wine-glass-alt",icon:[288,512,[],"f5ce","M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z"]},rd={prefix:"fas",iconName:"won-sign",icon:[576,512,[],"f159","M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z"]},ld={prefix:"fas",iconName:"wrench",icon:[512,512,[],"f0ad","M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},fd={prefix:"fas",iconName:"x-ray",icon:[640,512,[],"f497","M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z"]},sd={prefix:"fas",iconName:"yen-sign",icon:[384,512,[],"f157","M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z"]},hd={prefix:"fas",iconName:"yin-yang",icon:[496,512,[],"f6ad","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]},j2={faAd:P5,faAddressBook:E5,faAddressCard:D5,faAdjust:O5,faAirFreshener:I5,faAlignCenter:B5,faAlignJustify:R5,faAlignLeft:F5,faAlignRight:Z5,faAllergies:j5,faAmbulance:q5,faAmericanSignLanguageInterpreting:U5,faAnchor:W5,faAngleDoubleDown:G5,faAngleDoubleLeft:_5,faAngleDoubleRight:$5,faAngleDoubleUp:Y5,faAngleDown:X5,faAngleLeft:K5,faAngleRight:Q5,faAngleUp:J5,faAngry:c7,faAnkh:a7,faAppleAlt:e7,faArchive:i7,faArchway:n7,faArrowAltCircleDown:o7,faArrowAltCircleLeft:t7,faArrowAltCircleRight:r7,faArrowAltCircleUp:l7,faArrowCircleDown:f7,faArrowCircleLeft:s7,faArrowCircleRight:h7,faArrowCircleUp:m7,faArrowDown:v7,faArrowLeft:z7,faArrowRight:p7,faArrowUp:d7,faArrowsAlt:u7,faArrowsAltH:M7,faArrowsAltV:C7,faAssistiveListeningSystems:H7,faAsterisk:g7,faAt:V7,faAtlas:L7,faAtom:x7,faAudioDescription:b7,faAward:N7,faBaby:A7,faBabyCarriage:y7,faBackspace:S7,faBackward:w7,faBacon:k7,faBacteria:T7,faBacterium:P7,faBahai:E7,faBalanceScale:D7,faBalanceScaleLeft:O7,faBalanceScaleRight:I7,faBan:B7,faBandAid:R7,faBarcode:F7,faBars:Z7,faBaseballBall:j7,faBasketballBall:q7,faBath:U7,faBatteryEmpty:W7,faBatteryFull:G7,faBatteryHalf:_7,faBatteryQuarter:$7,faBatteryThreeQuarters:Y7,faBed:X7,faBeer:K7,faBell:Q7,faBellSlash:J7,faBezierCurve:c9,faBible:a9,faBicycle:e9,faBiking:i9,faBinoculars:n9,faBiohazard:o9,faBirthdayCake:t9,faBlender:r9,faBlenderPhone:l9,faBlind:f9,faBlog:s9,faBold:h9,faBolt:m9,faBomb:v9,faBone:z9,faBong:p9,faBook:d9,faBookDead:u9,faBookMedical:M9,faBookOpen:C9,faBookReader:H9,faBookmark:g9,faBorderAll:V9,faBorderNone:L9,faBorderStyle:x9,faBowlingBall:b9,faBox:N9,faBoxOpen:A9,faBoxTissue:y9,faBoxes:S9,faBraille:w9,faBrain:k9,faBreadSlice:T9,faBriefcase:P9,faBriefcaseMedical:E9,faBroadcastTower:D9,faBroom:O9,faBrush:I9,faBug:B9,faBuilding:R9,faBullhorn:F9,faBullseye:Z9,faBurn:j9,faBus:q9,faBusAlt:U9,faBusinessTime:W9,faCalculator:G9,faCalendar:_9,faCalendarAlt:$9,faCalendarCheck:Y9,faCalendarDay:X9,faCalendarMinus:K9,faCalendarPlus:Q9,faCalendarTimes:J9,faCalendarWeek:cc,faCamera:ac,faCameraRetro:ec,faCampground:ic,faCandyCane:nc,faCannabis:oc,faCapsules:tc,faCar:rc,faCarAlt:lc,faCarBattery:fc,faCarCrash:sc,faCarSide:hc,faCaravan:mc,faCaretDown:vc,faCaretLeft:zc,faCaretRight:pc,faCaretSquareDown:dc,faCaretSquareLeft:uc,faCaretSquareRight:Mc,faCaretSquareUp:Cc,faCaretUp:Hc,faCarrot:gc,faCartArrowDown:Vc,faCartPlus:Lc,faCashRegister:xc,faCat:bc,faCertificate:Nc,faChair:Ac,faChalkboard:yc,faChalkboardTeacher:Sc,faChargingStation:wc,faChartArea:kc,faChartBar:Tc,faChartLine:Pc,faChartPie:Ec,faCheck:Dc,faCheckCircle:Oc,faCheckDouble:Ic,faCheckSquare:Bc,faCheese:Rc,faChess:Fc,faChessBishop:Zc,faChessBoard:jc,faChessKing:qc,faChessKnight:Uc,faChessPawn:Wc,faChessQueen:Gc,faChessRook:_c,faChevronCircleDown:$c,faChevronCircleLeft:Yc,faChevronCircleRight:Xc,faChevronCircleUp:Kc,faChevronDown:Qc,faChevronLeft:Jc,faChevronRight:ca,faChevronUp:aa,faChild:ea,faChurch:ia,faCircle:na,faCircleNotch:oa,faCity:ta,faClinicMedical:ra,faClipboard:la,faClipboardCheck:fa,faClipboardList:sa,faClock:ha,faClone:ma,faClosedCaptioning:va,faCloud:za,faCloudDownloadAlt:pa,faCloudMeatball:da,faCloudMoon:ua,faCloudMoonRain:Ma,faCloudRain:Ca,faCloudShowersHeavy:Ha,faCloudSun:ga,faCloudSunRain:Va,faCloudUploadAlt:La,faCocktail:xa,faCode:ba,faCodeBranch:Na,faCoffee:Aa,faCog:ya,faCogs:Sa,faCoins:wa,faColumns:ka,faComment:Ta,faCommentAlt:Pa,faCommentDollar:Ea,faCommentDots:Da,faCommentMedical:Oa,faCommentSlash:Ia,faComments:Ba,faCommentsDollar:Ra,faCompactDisc:Fa,faCompass:Za,faCompress:ja,faCompressAlt:qa,faCompressArrowsAlt:Ua,faConciergeBell:Wa,faCookie:Ga,faCookieBite:_a,faCopy:$a,faCopyright:Ya,faCouch:Xa,faCreditCard:Ka,faCrop:Qa,faCropAlt:Ja,faCross:ce,faCrosshairs:ae,faCrow:ee,faCrown:ie,faCrutch:ne,faCube:oe,faCubes:te,faCut:re,faDatabase:le,faDeaf:fe,faDemocrat:se,faDesktop:he,faDharmachakra:me,faDiagnoses:ve,faDice:ze,faDiceD20:pe,faDiceD6:de,faDiceFive:ue,faDiceFour:Me,faDiceOne:Ce,faDiceSix:He,faDiceThree:ge,faDiceTwo:Ve,faDigitalTachograph:Le,faDirections:xe,faDisease:be,faDivide:Ne,faDizzy:Ae,faDna:ye,faDog:Se,faDollarSign:we,faDolly:ke,faDollyFlatbed:Te,faDonate:Pe,faDoorClosed:Ee,faDoorOpen:De,faDotCircle:Oe,faDove:Ie,faDownload:Be,faDraftingCompass:Re,faDragon:Fe,faDrawPolygon:Ze,faDrum:je,faDrumSteelpan:qe,faDrumstickBite:Ue,faDumbbell:We,faDumpster:Ge,faDumpsterFire:_e,faDungeon:$e,faEdit:Ye,faEgg:Xe,faEject:Ke,faEllipsisH:Qe,faEllipsisV:Je,faEnvelope:ci,faEnvelopeOpen:ai,faEnvelopeOpenText:ei,faEnvelopeSquare:ii,faEquals:ni,faEraser:oi,faEthernet:ti,faEuroSign:ri,faExchangeAlt:li,faExclamation:fi,faExclamationCircle:si,faExclamationTriangle:hi,faExpand:mi,faExpandAlt:vi,faExpandArrowsAlt:zi,faExternalLinkAlt:pi,faExternalLinkSquareAlt:di,faEye:ui,faEyeDropper:Mi,faEyeSlash:Ci,faFan:Hi,faFastBackward:gi,faFastForward:Vi,faFaucet:Li,faFax:xi,faFeather:bi,faFeatherAlt:Ni,faFemale:Ai,faFighterJet:yi,faFile:Si,faFileAlt:wi,faFileArchive:ki,faFileAudio:Ti,faFileCode:Pi,faFileContract:Ei,faFileCsv:Di,faFileDownload:Oi,faFileExcel:Ii,faFileExport:Bi,faFileImage:Ri,faFileImport:Fi,faFileInvoice:Zi,faFileInvoiceDollar:ji,faFileMedical:qi,faFileMedicalAlt:Ui,faFilePdf:Wi,faFilePowerpoint:Gi,faFilePrescription:_i,faFileSignature:$i,faFileUpload:Yi,faFileVideo:Xi,faFileWord:Ki,faFill:Qi,faFillDrip:Ji,faFilm:cn,faFilter:an,faFingerprint:en,faFire:nn,faFireAlt:on,faFireExtinguisher:tn,faFirstAid:rn,faFish:ln,faFistRaised:fn,faFlag:sn,faFlagCheckered:hn,faFlagUsa:mn,faFlask:vn,faFlushed:zn,faFolder:pn,faFolderMinus:dn,faFolderOpen:un,faFolderPlus:Mn,faFont:Cn,faFontAwesomeLogoFull:Hn,faFootballBall:gn,faForward:Vn,faFrog:Ln,faFrown:xn,faFrownOpen:bn,faFunnelDollar:Nn,faFutbol:An,faGamepad:yn,faGasPump:Sn,faGavel:wn,faGem:kn,faGenderless:Tn,faGhost:Pn,faGift:En,faGifts:Dn,faGlassCheers:On,faGlassMartini:In,faGlassMartiniAlt:Bn,faGlassWhiskey:Rn,faGlasses:Fn,faGlobe:Zn,faGlobeAfrica:jn,faGlobeAmericas:qn,faGlobeAsia:Un,faGlobeEurope:Wn,faGolfBall:Gn,faGopuram:_n,faGraduationCap:$n,faGreaterThan:Yn,faGreaterThanEqual:Xn,faGrimace:Kn,faGrin:Qn,faGrinAlt:Jn,faGrinBeam:co,faGrinBeamSweat:ao,faGrinHearts:eo,faGrinSquint:io,faGrinSquintTears:no,faGrinStars:oo,faGrinTears:to,faGrinTongue:ro,faGrinTongueSquint:lo,faGrinTongueWink:fo,faGrinWink:so,faGripHorizontal:ho,faGripLines:mo,faGripLinesVertical:vo,faGripVertical:zo,faGuitar:po,faHSquare:uo,faHamburger:Mo,faHammer:Co,faHamsa:Ho,faHandHolding:go,faHandHoldingHeart:Vo,faHandHoldingMedical:Lo,faHandHoldingUsd:xo,faHandHoldingWater:bo,faHandLizard:No,faHandMiddleFinger:Ao,faHandPaper:yo,faHandPeace:So,faHandPointDown:wo,faHandPointLeft:ko,faHandPointRight:To,faHandPointUp:Po,faHandPointer:Eo,faHandRock:Do,faHandScissors:Oo,faHandSparkles:Io,faHandSpock:Bo,faHands:Ro,faHandsHelping:Fo,faHandsWash:Zo,faHandshake:jo,faHandshakeAltSlash:qo,faHandshakeSlash:Uo,faHanukiah:Wo,faHardHat:Go,faHashtag:_o,faHatCowboy:$o,faHatCowboySide:Yo,faHatWizard:Xo,faHdd:Ko,faHeadSideCough:Qo,faHeadSideCoughSlash:Jo,faHeadSideMask:ct,faHeadSideVirus:at,faHeading:et,faHeadphones:it,faHeadphonesAlt:nt,faHeadset:ot,faHeart:tt,faHeartBroken:rt,faHeartbeat:lt,faHelicopter:ft,faHighlighter:st,faHiking:ht,faHippo:mt,faHistory:vt,faHockeyPuck:zt,faHollyBerry:pt,faHome:dt,faHorse:ut,faHorseHead:Mt,faHospital:Ct,faHospitalAlt:Ht,faHospitalSymbol:gt,faHospitalUser:Vt,faHotTub:Lt,faHotdog:xt,faHotel:bt,faHourglass:Nt,faHourglassEnd:At,faHourglassHalf:yt,faHourglassStart:St,faHouseDamage:wt,faHouseUser:kt,faHryvnia:Tt,faICursor:Pt,faIceCream:Et,faIcicles:Dt,faIcons:Ot,faIdBadge:It,faIdCard:Bt,faIdCardAlt:Rt,faIgloo:Ft,faImage:Zt,faImages:jt,faInbox:qt,faIndent:Ut,faIndustry:Wt,faInfinity:Gt,faInfo:_t,faInfoCircle:$t,faItalic:Yt,faJedi:Xt,faJoint:Kt,faJournalWhills:Qt,faKaaba:Jt,faKey:cr,faKeyboard:ar,faKhanda:er,faKiss:ir,faKissBeam:nr,faKissWinkHeart:or,faKiwiBird:tr,faLandmark:rr,faLanguage:lr,faLaptop:fr,faLaptopCode:sr,faLaptopHouse:hr,faLaptopMedical:mr,faLaugh:vr,faLaughBeam:zr,faLaughSquint:pr,faLaughWink:dr,faLayerGroup:ur,faLeaf:Mr,faLemon:Cr,faLessThan:Hr,faLessThanEqual:gr,faLevelDownAlt:Vr,faLevelUpAlt:Lr,faLifeRing:xr,faLightbulb:br,faLink:Nr,faLiraSign:Ar,faList:yr,faListAlt:Sr,faListOl:wr,faListUl:kr,faLocationArrow:Tr,faLock:Pr,faLockOpen:Er,faLongArrowAltDown:Dr,faLongArrowAltLeft:Or,faLongArrowAltRight:Ir,faLongArrowAltUp:Br,faLowVision:Rr,faLuggageCart:Fr,faLungs:Zr,faLungsVirus:jr,faMagic:qr,faMagnet:Ur,faMailBulk:Wr,faMale:Gr,faMap:_r,faMapMarked:$r,faMapMarkedAlt:Yr,faMapMarker:Xr,faMapMarkerAlt:Kr,faMapPin:Qr,faMapSigns:Jr,faMarker:cl,faMars:al,faMarsDouble:el,faMarsStroke:il,faMarsStrokeH:nl,faMarsStrokeV:ol,faMask:tl,faMedal:rl,faMedkit:ll,faMeh:fl,faMehBlank:sl,faMehRollingEyes:hl,faMemory:ml,faMenorah:vl,faMercury:zl,faMeteor:pl,faMicrochip:dl,faMicrophone:ul,faMicrophoneAlt:Ml,faMicrophoneAltSlash:Cl,faMicrophoneSlash:Hl,faMicroscope:gl,faMinus:Vl,faMinusCircle:Ll,faMinusSquare:xl,faMitten:bl,faMobile:Nl,faMobileAlt:Al,faMoneyBill:yl,faMoneyBillAlt:Sl,faMoneyBillWave:wl,faMoneyBillWaveAlt:kl,faMoneyCheck:Tl,faMoneyCheckAlt:Pl,faMonument:El,faMoon:Dl,faMortarPestle:Ol,faMosque:Il,faMotorcycle:Bl,faMountain:Rl,faMouse:Fl,faMousePointer:Zl,faMugHot:jl,faMusic:ql,faNetworkWired:Ul,faNeuter:Wl,faNewspaper:Gl,faNotEqual:_l,faNotesMedical:$l,faObjectGroup:Yl,faObjectUngroup:Xl,faOilCan:Kl,faOm:Ql,faOtter:Jl,faOutdent:cf,faPager:af,faPaintBrush:ef,faPaintRoller:nf,faPalette:of,faPallet:tf,faPaperPlane:rf,faPaperclip:lf,faParachuteBox:ff,faParagraph:sf,faParking:hf,faPassport:mf,faPastafarianism:vf,faPaste:zf,faPause:pf,faPauseCircle:df,faPaw:uf,faPeace:Mf,faPen:Cf,faPenAlt:Hf,faPenFancy:gf,faPenNib:Vf,faPenSquare:Lf,faPencilAlt:xf,faPencilRuler:bf,faPeopleArrows:Nf,faPeopleCarry:Af,faPepperHot:yf,faPercent:Sf,faPercentage:wf,faPersonBooth:kf,faPhone:Tf,faPhoneAlt:Pf,faPhoneSlash:Ef,faPhoneSquare:Df,faPhoneSquareAlt:Of,faPhoneVolume:If,faPhotoVideo:Bf,faPiggyBank:Rf,faPills:Ff,faPizzaSlice:Zf,faPlaceOfWorship:jf,faPlane:qf,faPlaneArrival:Uf,faPlaneDeparture:Wf,faPlaneSlash:Gf,faPlay:_f,faPlayCircle:$f,faPlug:Yf,faPlus:Xf,faPlusCircle:Kf,faPlusSquare:Qf,faPodcast:Jf,faPoll:cs,faPollH:as,faPoo:es,faPooStorm:is,faPoop:ns,faPortrait:os,faPoundSign:ts,faPowerOff:rs,faPray:ls,faPrayingHands:fs,faPrescription:ss,faPrescriptionBottle:hs,faPrescriptionBottleAlt:ms,faPrint:vs,faProcedures:zs,faProjectDiagram:ps,faPumpMedical:ds,faPumpSoap:us,faPuzzlePiece:Ms,faQrcode:Cs,faQuestion:Hs,faQuestionCircle:gs,faQuidditch:Vs,faQuoteLeft:Ls,faQuoteRight:xs,faQuran:bs,faRadiation:Ns,faRadiationAlt:As,faRainbow:ys,faRandom:Ss,faReceipt:ws,faRecordVinyl:ks,faRecycle:Ts,faRedo:Ps,faRedoAlt:Es,faRegistered:Ds,faRemoveFormat:Os,faReply:Is,faReplyAll:Bs,faRepublican:Rs,faRestroom:Fs,faRetweet:Zs,faRibbon:js,faRing:qs,faRoad:Us,faRobot:Ws,faRocket:Gs,faRoute:_s,faRss:$s,faRssSquare:Ys,faRubleSign:Xs,faRuler:Ks,faRulerCombined:Qs,faRulerHorizontal:Js,faRulerVertical:ch,faRunning:ah,faRupeeSign:eh,faSadCry:ih,faSadTear:nh,faSatellite:oh,faSatelliteDish:th,faSave:rh,faSchool:lh,faScrewdriver:fh,faScroll:sh,faSdCard:hh,faSearch:mh,faSearchDollar:vh,faSearchLocation:zh,faSearchMinus:ph,faSearchPlus:dh,faSeedling:uh,faServer:Mh,faShapes:Ch,faShare:Hh,faShareAlt:gh,faShareAltSquare:Vh,faShareSquare:Lh,faShekelSign:xh,faShieldAlt:bh,faShieldVirus:Nh,faShip:Ah,faShippingFast:yh,faShoePrints:Sh,faShoppingBag:wh,faShoppingBasket:kh,faShoppingCart:Th,faShower:Ph,faShuttleVan:Eh,faSign:Dh,faSignInAlt:Oh,faSignLanguage:Ih,faSignOutAlt:Bh,faSignal:Rh,faSignature:Fh,faSimCard:Zh,faSink:jh,faSitemap:qh,faSkating:Uh,faSkiing:Wh,faSkiingNordic:Gh,faSkull:_h,faSkullCrossbones:$h,faSlash:Yh,faSleigh:Xh,faSlidersH:Kh,faSmile:Qh,faSmileBeam:Jh,faSmileWink:cm,faSmog:am,faSmoking:em,faSmokingBan:im,faSms:nm,faSnowboarding:om,faSnowflake:tm,faSnowman:rm,faSnowplow:lm,faSoap:fm,faSocks:sm,faSolarPanel:hm,faSort:mm,faSortAlphaDown:vm,faSortAlphaDownAlt:zm,faSortAlphaUp:pm,faSortAlphaUpAlt:dm,faSortAmountDown:um,faSortAmountDownAlt:Mm,faSortAmountUp:Cm,faSortAmountUpAlt:Hm,faSortDown:gm,faSortNumericDown:Vm,faSortNumericDownAlt:Lm,faSortNumericUp:xm,faSortNumericUpAlt:bm,faSortUp:Nm,faSpa:Am,faSpaceShuttle:ym,faSpellCheck:Sm,faSpider:wm,faSpinner:km,faSplotch:Tm,faSprayCan:Pm,faSquare:Em,faSquareFull:Dm,faSquareRootAlt:Om,faStamp:Im,faStar:Bm,faStarAndCrescent:Rm,faStarHalf:Fm,faStarHalfAlt:Zm,faStarOfDavid:jm,faStarOfLife:qm,faStepBackward:Um,faStepForward:Wm,faStethoscope:Gm,faStickyNote:_m,faStop:$m,faStopCircle:Ym,faStopwatch:Xm,faStopwatch20:Km,faStore:Qm,faStoreAlt:Jm,faStoreAltSlash:cv,faStoreSlash:av,faStream:ev,faStreetView:iv,faStrikethrough:nv,faStroopwafel:ov,faSubscript:tv,faSubway:rv,faSuitcase:lv,faSuitcaseRolling:fv,faSun:sv,faSuperscript:hv,faSurprise:mv,faSwatchbook:vv,faSwimmer:zv,faSwimmingPool:pv,faSynagogue:dv,faSync:uv,faSyncAlt:Mv,faSyringe:Cv,faTable:Hv,faTableTennis:gv,faTablet:Vv,faTabletAlt:Lv,faTablets:xv,faTachometerAlt:bv,faTag:Nv,faTags:Av,faTape:yv,faTasks:Sv,faTaxi:wv,faTeeth:kv,faTeethOpen:Tv,faTemperatureHigh:Pv,faTemperatureLow:Ev,faTenge:Dv,faTerminal:Ov,faTextHeight:Iv,faTextWidth:Bv,faTh:Rv,faThLarge:Fv,faThList:Zv,faTheaterMasks:jv,faThermometer:qv,faThermometerEmpty:Uv,faThermometerFull:Wv,faThermometerHalf:Gv,faThermometerQuarter:_v,faThermometerThreeQuarters:$v,faThumbsDown:Yv,faThumbsUp:Xv,faThumbtack:Kv,faTicketAlt:Qv,faTimes:Jv,faTimesCircle:cz,faTint:az,faTintSlash:ez,faTired:iz,faToggleOff:nz,faToggleOn:oz,faToilet:tz,faToiletPaper:rz,faToiletPaperSlash:lz,faToolbox:fz,faTools:sz,faTooth:hz,faTorah:mz,faToriiGate:vz,faTractor:zz,faTrademark:pz,faTrafficLight:dz,faTrailer:uz,faTrain:Mz,faTram:Cz,faTransgender:Hz,faTransgenderAlt:gz,faTrash:Vz,faTrashAlt:Lz,faTrashRestore:xz,faTrashRestoreAlt:bz,faTree:Nz,faTrophy:Az,faTruck:yz,faTruckLoading:Sz,faTruckMonster:wz,faTruckMoving:kz,faTruckPickup:Tz,faTshirt:Pz,faTty:Ez,faTv:Dz,faUmbrella:Oz,faUmbrellaBeach:Iz,faUnderline:Bz,faUndo:Rz,faUndoAlt:Fz,faUniversalAccess:Zz,faUniversity:jz,faUnlink:qz,faUnlock:Uz,faUnlockAlt:Wz,faUpload:Gz,faUser:_z,faUserAlt:$z,faUserAltSlash:Yz,faUserAstronaut:Xz,faUserCheck:Kz,faUserCircle:Qz,faUserClock:Jz,faUserCog:cp,faUserEdit:ap,faUserFriends:ep,faUserGraduate:ip,faUserInjured:np,faUserLock:op,faUserMd:tp,faUserMinus:rp,faUserNinja:lp,faUserNurse:fp,faUserPlus:sp,faUserSecret:hp,faUserShield:mp,faUserSlash:vp,faUserTag:zp,faUserTie:pp,faUserTimes:dp,faUsers:up,faUsersCog:Mp,faUsersSlash:Cp,faUtensilSpoon:Hp,faUtensils:gp,faVectorSquare:Vp,faVenus:Lp,faVenusDouble:xp,faVenusMars:bp,faVest:Np,faVestPatches:Ap,faVial:yp,faVials:Sp,faVideo:wp,faVideoSlash:kp,faVihara:Tp,faVirus:Pp,faVirusSlash:Ep,faViruses:Dp,faVoicemail:Op,faVolleyballBall:Ip,faVolumeDown:Bp,faVolumeMute:Rp,faVolumeOff:Fp,faVolumeUp:Zp,faVoteYea:jp,faVrCardboard:qp,faWalking:Up,faWallet:Wp,faWarehouse:Gp,faWater:_p,faWaveSquare:$p,faWeight:Yp,faWeightHanging:Xp,faWheelchair:Kp,faWifi:Qp,faWind:Jp,faWindowClose:cd,faWindowMaximize:ad,faWindowMinimize:ed,faWindowRestore:id,faWineBottle:nd,faWineGlass:od,faWineGlassAlt:td,faWonSign:rd,faWrench:ld,faXRay:fd,faYenSign:sd,faYinYang:hd};var md={prefix:"fab",iconName:"500px",icon:[448,512,[],"f26e","M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z"]},vd={prefix:"fab",iconName:"accessible-icon",icon:[448,512,[],"f368","M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z"]},zd={prefix:"fab",iconName:"accusoft",icon:[640,512,[],"f369","M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z"]},pd={prefix:"fab",iconName:"acquisitions-incorporated",icon:[384,512,[],"f6af","M357.45 468.2c-1.2-7.7-1.3-7.6-9.6-7.6-99.8.2-111.8-2.4-112.7-2.6-12.3-1.7-20.6-10.5-21-23.1-.1-1.6-.2-71.6-1-129.1-.1-4.7 1.6-6.4 5.9-7.5 12.5-3 24.9-6.1 37.3-9.7 4.3-1.3 6.8-.2 8.4 3.5 4.5 10.3 8.8 20.6 13.2 30.9 1.6 3.7.1 4.4-3.4 4.4-10-.2-20-.1-30.4-.1v27h116c-1.4-9.5-2.7-18.1-4-27.5-7 0-13.8.4-20.4-.1-22.6-1.6-18.3-4.4-84-158.6-8.8-20.1-27.9-62.1-36.5-89.2-4.4-14 5.5-25.4 18.9-26.6 18.6-1.7 37.5-1.6 56.2-2 20.6-.4 41.2-.4 61.8-.5 3.1 0 4-1.4 4.3-4.3 1.2-9.8 2.7-19.5 4-29.2.8-5.3 1.6-10.7 2.4-16.1L23.75 0c-3.6 0-5.3 1.1-4.6 5.3 2.2 13.2-.8.8 6.4 45.3 63.4 0 71.8.9 101.8.5 12.3-.2 37 3.5 37.7 22.1.4 11.4-1.1 11.3-32.6 87.4-53.8 129.8-50.7 120.3-67.3 161-1.7 4.1-3.6 5.2-7.6 5.2-8.5-.2-17-.3-25.4.1-1.9.1-5.2 1.8-5.5 3.2-1.5 8.1-2.2 16.3-3.2 24.9h114.3v-27.6c-6.9 0-33.5.4-35.3-2.9 5.3-12.3 10.4-24.4 15.7-36.7 16.3 4 31.9 7.8 47.6 11.7 3.4.9 4.6 3 4.6 6.8-.1 42.9.1 85.9.2 128.8 0 10.2-5.5 19.1-14.9 23.1-6.5 2.7-3.3 3.4-121.4 2.4-5.3 0-7.1 2-7.6 6.8-1.5 12.9-2.9 25.9-5 38.8-.8 5 1.3 5.7 5.3 5.7 183.2.6-30.7 0 337.1 0-2.5-15-4.4-29.4-6.6-43.7zm-174.9-205.7c-13.3-4.2-26.6-8.2-39.9-12.5a44.53 44.53 0 0 1-5.8-2.9c17.2-44.3 34.2-88.1 51.3-132.1 7.5 2.4 7.9-.8 9.4 0 9.3 22.5 18.1 60.1 27 82.8 6.6 16.7 13 33.5 19.7 50.9a35.78 35.78 0 0 1-3.9 2.1c-13.1 3.9-26.4 7.5-39.4 11.7a27.66 27.66 0 0 1-18.4 0z"]},dd={prefix:"fab",iconName:"adn",icon:[496,512,[],"f170","M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z"]},ud={prefix:"fab",iconName:"adversal",icon:[512,512,[],"f36a","M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z"]},Md={prefix:"fab",iconName:"affiliatetheme",icon:[512,512,[],"f36b","M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z"]},Cd={prefix:"fab",iconName:"airbnb",icon:[448,512,[],"f834","M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z"]},Hd={prefix:"fab",iconName:"algolia",icon:[448,512,[],"f36c","M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z"]},gd={prefix:"fab",iconName:"alipay",icon:[448,512,[],"f642","M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z"]},Vd={prefix:"fab",iconName:"amazon",icon:[448,512,[],"f270","M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z"]},Ld={prefix:"fab",iconName:"amazon-pay",icon:[640,512,[],"f42c","M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z"]},xd={prefix:"fab",iconName:"amilia",icon:[448,512,[],"f36d","M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z"]},bd={prefix:"fab",iconName:"android",icon:[576,512,[],"f17b","M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55"]},Nd={prefix:"fab",iconName:"angellist",icon:[448,512,[],"f209","M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z"]},Ad={prefix:"fab",iconName:"angrycreative",icon:[640,512,[],"f36e","M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z"]},yd={prefix:"fab",iconName:"angular",icon:[448,512,[],"f420","M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z"]},Sd={prefix:"fab",iconName:"app-store",icon:[512,512,[],"f36f","M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z"]},wd={prefix:"fab",iconName:"app-store-ios",icon:[448,512,[],"f370","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z"]},kd={prefix:"fab",iconName:"apper",icon:[640,512,[],"f371","M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z"]},Td={prefix:"fab",iconName:"apple",icon:[384,512,[],"f179","M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"]},Pd={prefix:"fab",iconName:"apple-pay",icon:[640,512,[],"f415","M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z"]},Ed={prefix:"fab",iconName:"artstation",icon:[512,512,[],"f77a","M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z"]},Dd={prefix:"fab",iconName:"asymmetrik",icon:[576,512,[],"f372","M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z"]},Od={prefix:"fab",iconName:"atlassian",icon:[512,512,[],"f77b","M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z"]},Id={prefix:"fab",iconName:"audible",icon:[640,512,[],"f373","M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z"]},Bd={prefix:"fab",iconName:"autoprefixer",icon:[640,512,[],"f41c","M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z"]},Rd={prefix:"fab",iconName:"avianex",icon:[512,512,[],"f374","M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z"]},Fd={prefix:"fab",iconName:"aviato",icon:[640,512,[],"f421","M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z"]},Zd={prefix:"fab",iconName:"aws",icon:[640,512,[],"f375","M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"]},jd={prefix:"fab",iconName:"bandcamp",icon:[512,512,[],"f2d5","M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm48.2,326.1h-181L207.9,178h181Z"]},qd={prefix:"fab",iconName:"battle-net",icon:[512,512,[],"f835","M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8"]},Ud={prefix:"fab",iconName:"behance",icon:[576,512,[],"f1b4","M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z"]},Wd={prefix:"fab",iconName:"behance-square",icon:[448,512,[],"f1b5","M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z"]},Gd={prefix:"fab",iconName:"bimobject",icon:[448,512,[],"f378","M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z"]},_d={prefix:"fab",iconName:"bitbucket",icon:[512,512,[],"f171","M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z"]},$d={prefix:"fab",iconName:"bitcoin",icon:[512,512,[],"f379","M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z"]},Yd={prefix:"fab",iconName:"bity",icon:[496,512,[],"f37a","M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z"]},Xd={prefix:"fab",iconName:"black-tie",icon:[448,512,[],"f27e","M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z"]},Kd={prefix:"fab",iconName:"blackberry",icon:[512,512,[],"f37b","M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z"]},Qd={prefix:"fab",iconName:"blogger",icon:[448,512,[],"f37c","M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z"]},Jd={prefix:"fab",iconName:"blogger-b",icon:[448,512,[],"f37d","M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z"]},cu={prefix:"fab",iconName:"bluetooth",icon:[448,512,[],"f293","M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z"]},au={prefix:"fab",iconName:"bluetooth-b",icon:[320,512,[],"f294","M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z"]},eu={prefix:"fab",iconName:"bootstrap",icon:[576,512,[],"f836","M333.5,201.4c0-22.1-15.6-34.3-43-34.3h-50.4v71.2h42.5C315.4,238.2,333.5,225,333.5,201.4z M517,188.6 c-9.5-30.9-10.9-68.8-9.8-98.1c1.1-30.5-22.7-58.5-54.7-58.5H123.7c-32.1,0-55.8,28.1-54.7,58.5c1,29.3-0.3,67.2-9.8,98.1 c-9.6,31-25.7,50.6-52.2,53.1v28.5c26.4,2.5,42.6,22.1,52.2,53.1c9.5,30.9,10.9,68.8,9.8,98.1c-1.1,30.5,22.7,58.5,54.7,58.5h328.7 c32.1,0,55.8-28.1,54.7-58.5c-1-29.3,0.3-67.2,9.8-98.1c9.6-31,25.7-50.6,52.1-53.1v-28.5C542.7,239.2,526.5,219.6,517,188.6z M300.2,375.1h-97.9V136.8h97.4c43.3,0,71.7,23.4,71.7,59.4c0,25.3-19.1,47.9-43.5,51.8v1.3c33.2,3.6,55.5,26.6,55.5,58.3 C383.4,349.7,352.1,375.1,300.2,375.1z M290.2,266.4h-50.1v78.4h52.3c34.2,0,52.3-13.7,52.3-39.5 C344.7,279.6,326.1,266.4,290.2,266.4z"]},iu={prefix:"fab",iconName:"btc",icon:[384,512,[],"f15a","M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z"]},nu={prefix:"fab",iconName:"buffer",icon:[448,512,[],"f837","M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z"]},ou={prefix:"fab",iconName:"buromobelexperte",icon:[448,512,[],"f37f","M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z"]},tu={prefix:"fab",iconName:"buy-n-large",icon:[576,512,[],"f8a6","M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z"]},ru={prefix:"fab",iconName:"buysellads",icon:[448,512,[],"f20d","M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z"]},lu={prefix:"fab",iconName:"canadian-maple-leaf",icon:[512,512,[],"f785","M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z"]},fu={prefix:"fab",iconName:"cc-amazon-pay",icon:[576,512,[],"f42d","M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"]},su={prefix:"fab",iconName:"cc-amex",icon:[576,512,[],"f1f3","M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"]},hu={prefix:"fab",iconName:"cc-apple-pay",icon:[576,512,[],"f416","M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"]},mu={prefix:"fab",iconName:"cc-diners-club",icon:[576,512,[],"f24c","M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"]},vu={prefix:"fab",iconName:"cc-discover",icon:[576,512,[],"f1f2","M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"]},zu={prefix:"fab",iconName:"cc-jcb",icon:[576,512,[],"f24b","M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"]},pu={prefix:"fab",iconName:"cc-mastercard",icon:[576,512,[],"f1f1","M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"]},du={prefix:"fab",iconName:"cc-paypal",icon:[576,512,[],"f1f4","M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"]},uu={prefix:"fab",iconName:"cc-stripe",icon:[576,512,[],"f1f5","M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"]},Mu={prefix:"fab",iconName:"cc-visa",icon:[576,512,[],"f1f0","M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"]},Cu={prefix:"fab",iconName:"centercode",icon:[512,512,[],"f380","M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z"]},Hu={prefix:"fab",iconName:"centos",icon:[448,512,[],"f789","M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z"]},gu={prefix:"fab",iconName:"chrome",icon:[496,512,[],"f268","M131.5 217.5L55.1 100.1c47.6-59.2 119-91.8 192-92.1 42.3-.3 85.5 10.5 124.8 33.2 43.4 25.2 76.4 61.4 97.4 103L264 133.4c-58.1-3.4-113.4 29.3-132.5 84.1zm32.9 38.5c0 46.2 37.4 83.6 83.6 83.6s83.6-37.4 83.6-83.6-37.4-83.6-83.6-83.6-83.6 37.3-83.6 83.6zm314.9-89.2L339.6 174c37.9 44.3 38.5 108.2 6.6 157.2L234.1 503.6c46.5 2.5 94.4-7.7 137.8-32.9 107.4-62 150.9-192 107.4-303.9zM133.7 303.6L40.4 120.1C14.9 159.1 0 205.9 0 256c0 124 90.8 226.7 209.5 244.9l63.7-124.8c-57.6 10.8-113.2-20.8-139.5-72.5z"]},Vu={prefix:"fab",iconName:"chromecast",icon:[512,512,[],"f838","M447.8,64H64c-23.6,0-42.7,19.1-42.7,42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6,0,42.7-19.1,42.7-42.7V106.7 C490.7,83.1,471.4,64,447.8,64z M21.3,383.6L21.3,383.6l0,63.9h63.9C85.2,412.2,56.6,383.6,21.3,383.6L21.3,383.6z M21.3,298.6V341 c58.9,0,106.6,48.1,106.6,107h42.7C170.7,365.6,103.7,298.7,21.3,298.6z M213.4,448h42.7c-0.5-129.5-105.3-234.3-234.8-234.6l0,42.4 C127.3,255.6,213.3,342,213.4,448z"]},Lu={prefix:"fab",iconName:"cloudflare",icon:[640,512,[],"e07d","M407.906,319.913l-230.8-2.928a4.58,4.58,0,0,1-3.632-1.926,4.648,4.648,0,0,1-.494-4.147,6.143,6.143,0,0,1,5.361-4.076L411.281,303.9c27.631-1.26,57.546-23.574,68.022-50.784l13.286-34.542a7.944,7.944,0,0,0,.524-2.936,7.735,7.735,0,0,0-.164-1.631A151.91,151.91,0,0,0,201.257,198.4,68.12,68.12,0,0,0,94.2,269.59C41.924,271.106,0,313.728,0,366.12a96.054,96.054,0,0,0,1.029,13.958,4.508,4.508,0,0,0,4.445,3.871l426.1.051c.043,0,.08-.019.122-.02a5.606,5.606,0,0,0,5.271-4l3.273-11.265c3.9-13.4,2.448-25.8-4.1-34.9C430.124,325.423,420.09,320.487,407.906,319.913ZM513.856,221.1c-2.141,0-4.271.062-6.391.164a3.771,3.771,0,0,0-3.324,2.653l-9.077,31.193c-3.9,13.4-2.449,25.786,4.1,34.89,6.02,8.4,16.054,13.323,28.238,13.9l49.2,2.939a4.491,4.491,0,0,1,3.51,1.894,4.64,4.64,0,0,1,.514,4.169,6.153,6.153,0,0,1-5.351,4.075l-51.125,2.939c-27.754,1.27-57.669,23.574-68.145,50.784l-3.695,9.606a2.716,2.716,0,0,0,2.427,3.68c.046,0,.088.017.136.017h175.91a4.69,4.69,0,0,0,4.539-3.37,124.807,124.807,0,0,0,4.682-34C640,277.3,583.524,221.1,513.856,221.1Z"]},xu={prefix:"fab",iconName:"cloudscale",icon:[448,512,[],"f383","M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z"]},bu={prefix:"fab",iconName:"cloudsmith",icon:[332,512,[],"f384","M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z"]},Nu={prefix:"fab",iconName:"cloudversify",icon:[616,512,[],"f385","M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z"]},Au={prefix:"fab",iconName:"codepen",icon:[512,512,[],"f1cb","M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z"]},yu={prefix:"fab",iconName:"codiepie",icon:[472,512,[],"f284","M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z"]},Su={prefix:"fab",iconName:"confluence",icon:[512,512,[],"f78d","M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z"]},wu={prefix:"fab",iconName:"connectdevelop",icon:[576,512,[],"f20e","M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z"]},ku={prefix:"fab",iconName:"contao",icon:[512,512,[],"f26d","M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z"]},Tu={prefix:"fab",iconName:"cotton-bureau",icon:[512,512,[],"f89e","M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z"]},Pu={prefix:"fab",iconName:"cpanel",icon:[640,512,[],"f388","M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z"]},Eu={prefix:"fab",iconName:"creative-commons",icon:[496,512,[],"f25e","M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"]},Du={prefix:"fab",iconName:"creative-commons-by",icon:[496,512,[],"f4e7","M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"]},Ou={prefix:"fab",iconName:"creative-commons-nc",icon:[496,512,[],"f4e8","M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z"]},Iu={prefix:"fab",iconName:"creative-commons-nc-eu",icon:[496,512,[],"f4e9","M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z"]},Bu={prefix:"fab",iconName:"creative-commons-nc-jp",icon:[496,512,[],"f4ea","M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z"]},Ru={prefix:"fab",iconName:"creative-commons-nd",icon:[496,512,[],"f4eb","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"]},Fu={prefix:"fab",iconName:"creative-commons-pd",icon:[496,512,[],"f4ec","M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z"]},Zu={prefix:"fab",iconName:"creative-commons-pd-alt",icon:[496,512,[],"f4ed","M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z"]},ju={prefix:"fab",iconName:"creative-commons-remix",icon:[496,512,[],"f4ee","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z"]},qu={prefix:"fab",iconName:"creative-commons-sa",icon:[496,512,[],"f4ef","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z"]},Uu={prefix:"fab",iconName:"creative-commons-sampling",icon:[496,512,[],"f4f0","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z"]},Wu={prefix:"fab",iconName:"creative-commons-sampling-plus",icon:[496,512,[],"f4f1","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z"]},Gu={prefix:"fab",iconName:"creative-commons-share",icon:[496,512,[],"f4f2","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z"]},_u={prefix:"fab",iconName:"creative-commons-zero",icon:[496,512,[],"f4f3","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z"]},$u={prefix:"fab",iconName:"critical-role",icon:[448,512,[],"f6c9","M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z"]},Yu={prefix:"fab",iconName:"css3",icon:[512,512,[],"f13c","M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z"]},Xu={prefix:"fab",iconName:"css3-alt",icon:[384,512,[],"f38b","M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z"]},Ku={prefix:"fab",iconName:"cuttlefish",icon:[440,512,[],"f38c","M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z"]},Qu={prefix:"fab",iconName:"d-and-d",icon:[576,512,[],"f38d","M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z"]},Ju={prefix:"fab",iconName:"d-and-d-beyond",icon:[640,512,[],"f6ca","M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z"]},cM={prefix:"fab",iconName:"dailymotion",icon:[448,512,[],"e052","M298.93,267a48.4,48.4,0,0,0-24.36-6.21q-19.83,0-33.44,13.27t-13.61,33.42q0,21.16,13.28,34.6t33.43,13.44q20.5,0,34.11-13.78T322,307.47A47.13,47.13,0,0,0,315.9,284,44.13,44.13,0,0,0,298.93,267ZM0,32V480H448V32ZM374.71,405.26h-53.1V381.37h-.67q-15.79,26.2-55.78,26.2-27.56,0-48.89-13.1a88.29,88.29,0,0,1-32.94-35.77q-11.6-22.68-11.59-50.89,0-27.56,11.76-50.22a89.9,89.9,0,0,1,32.93-35.78q21.18-13.09,47.72-13.1a80.87,80.87,0,0,1,29.74,5.21q13.28,5.21,25,17V153l55.79-12.09Z"]},aM={prefix:"fab",iconName:"dashcube",icon:[448,512,[],"f210","M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z"]},eM={prefix:"fab",iconName:"deezer",icon:[576,512,[],"e077","M451.46,244.71H576V172H451.46Zm0-173.89v72.67H576V70.82Zm0,275.06H576V273.2H451.46ZM0,447.09H124.54V374.42H0Zm150.47,0H275V374.42H150.47Zm150.52,0H425.53V374.42H301Zm150.47,0H576V374.42H451.46ZM301,345.88H425.53V273.2H301Zm-150.52,0H275V273.2H150.47Zm0-101.17H275V172H150.47Z"]},iM={prefix:"fab",iconName:"delicious",icon:[448,512,[],"f1a5","M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z"]},nM={prefix:"fab",iconName:"deploydog",icon:[512,512,[],"f38e","M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z"]},oM={prefix:"fab",iconName:"deskpro",icon:[480,512,[],"f38f","M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z"]},tM={prefix:"fab",iconName:"dev",icon:[448,512,[],"f6cc","M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z"]},rM={prefix:"fab",iconName:"deviantart",icon:[320,512,[],"f1bd","M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z"]},lM={prefix:"fab",iconName:"dhl",icon:[640,512,[],"f790","M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z"]},fM={prefix:"fab",iconName:"diaspora",icon:[512,512,[],"f791","M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z"]},sM={prefix:"fab",iconName:"digg",icon:[512,512,[],"f1a6","M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z"]},hM={prefix:"fab",iconName:"digital-ocean",icon:[512,512,[],"f391","M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z"]},mM={prefix:"fab",iconName:"discord",icon:[640,512,[],"f392","M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"]},vM={prefix:"fab",iconName:"discourse",icon:[448,512,[],"f393","M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"]},zM={prefix:"fab",iconName:"dochub",icon:[416,512,[],"f394","M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z"]},pM={prefix:"fab",iconName:"docker",icon:[640,512,[],"f395","M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"]},dM={prefix:"fab",iconName:"draft2digital",icon:[480,512,[],"f396","M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z"]},uM={prefix:"fab",iconName:"dribbble",icon:[512,512,[],"f17d","M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z"]},MM={prefix:"fab",iconName:"dribbble-square",icon:[448,512,[],"f397","M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z"]},CM={prefix:"fab",iconName:"dropbox",icon:[528,512,[],"f16b","M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z"]},HM={prefix:"fab",iconName:"drupal",icon:[448,512,[],"f1a9","M319.5 114.7c-22.2-14-43.5-19.5-64.7-33.5-13-8.8-31.3-30-46.5-48.3-2.7 29.3-11.5 41.2-22 49.5-21.3 17-34.8 22.2-53.5 32.3C117 123 32 181.5 32 290.5 32 399.7 123.8 480 225.8 480 327.5 480 416 406 416 294c0-112.3-83-171-96.5-179.3zm2.5 325.6c-20.1 20.1-90.1 28.7-116.7 4.2-4.8-4.8.3-12 6.5-12 0 0 17 13.3 51.5 13.3 27 0 46-7.7 54.5-14 6.1-4.6 8.4 4.3 4.2 8.5zm-54.5-52.6c8.7-3.6 29-3.8 36.8 1.3 4.1 2.8 16.1 18.8 6.2 23.7-8.4 4.2-1.2-15.7-26.5-15.7-14.7 0-19.5 5.2-26.7 11-7 6-9.8 8-12.2 4.7-6-8.2 15.9-22.3 22.4-25zM360 405c-15.2-1-45.5-48.8-65-49.5-30.9-.9-104.1 80.7-161.3 42-38.8-26.6-14.6-104.8 51.8-105.2 49.5-.5 83.8 49 108.5 48.5 21.3-.3 61.8-41.8 81.8-41.8 48.7 0 23.3 109.3-15.8 106z"]},gM={prefix:"fab",iconName:"dyalog",icon:[416,512,[],"f399","M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z"]},VM={prefix:"fab",iconName:"earlybirds",icon:[480,512,[],"f39a","M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z"]},LM={prefix:"fab",iconName:"ebay",icon:[640,512,[],"f4f4","M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z"]},xM={prefix:"fab",iconName:"edge",icon:[512,512,[],"f282","M481.92,134.48C440.87,54.18,352.26,8,255.91,8,137.05,8,37.51,91.68,13.47,203.66c26-46.49,86.22-79.14,149.46-79.14,79.27,0,121.09,48.93,122.25,50.18,22,23.8,33,50.39,33,83.1,0,10.4-5.31,25.82-15.11,38.57-1.57,2-6.39,4.84-6.39,11,0,5.06,3.29,9.92,9.14,14,27.86,19.37,80.37,16.81,80.51,16.81A115.39,115.39,0,0,0,444.94,322a118.92,118.92,0,0,0,58.95-102.44C504.39,176.13,488.39,147.26,481.92,134.48ZM212.77,475.67a154.88,154.88,0,0,1-46.64-45c-32.94-47.42-34.24-95.6-20.1-136A155.5,155.5,0,0,1,203,215.75c59-45.2,94.84-5.65,99.06-1a80,80,0,0,0-4.89-10.14c-9.24-15.93-24-36.41-56.56-53.51-33.72-17.69-70.59-18.59-77.64-18.59-38.71,0-77.9,13-107.53,35.69C35.68,183.3,12.77,208.72,8.6,243c-1.08,12.31-2.75,62.8,23,118.27a248,248,0,0,0,248.3,141.61C241.78,496.26,214.05,476.24,212.77,475.67Zm250.72-98.33a7.76,7.76,0,0,0-7.92-.23,181.66,181.66,0,0,1-20.41,9.12,197.54,197.54,0,0,1-69.55,12.52c-91.67,0-171.52-63.06-171.52-144A61.12,61.12,0,0,1,200.61,228,168.72,168.72,0,0,0,161.85,278c-14.92,29.37-33,88.13,13.33,151.66,6.51,8.91,23,30,56,47.67,23.57,12.65,49,19.61,71.7,19.61,35.14,0,115.43-33.44,163-108.87A7.75,7.75,0,0,0,463.49,377.34Z"]},bM={prefix:"fab",iconName:"edge-legacy",icon:[512,512,[],"e078","M25.71,228.16l.35-.48c0,.16,0,.32-.07.48Zm460.58,15.51c0-44-7.76-84.46-28.81-122.4C416.5,47.88,343.91,8,258.89,8,119,7.72,40.62,113.21,26.06,227.68c42.42-61.31,117.07-121.38,220.37-125,0,0,109.67,0,99.42,105H170c6.37-37.39,18.55-59,34.34-78.93-75.05,34.9-121.85,96.1-120.75,188.32.83,71.45,50.13,144.84,120.75,172,83.35,31.84,192.77,7.2,240.13-21.33V363.31C363.6,419.8,173.6,424.23,172.21,295.74H486.29V243.67Z"]},NM={prefix:"fab",iconName:"elementor",icon:[448,512,[],"f430","M425.6 32H22.4C10 32 0 42 0 54.4v403.2C0 470 10 480 22.4 480h403.2c12.4 0 22.4-10 22.4-22.4V54.4C448 42 438 32 425.6 32M164.3 355.5h-39.8v-199h39.8v199zm159.3 0H204.1v-39.8h119.5v39.8zm0-79.6H204.1v-39.8h119.5v39.8zm0-79.7H204.1v-39.8h119.5v39.8z"]},AM={prefix:"fab",iconName:"ello",icon:[496,512,[],"f5f1","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z"]},yM={prefix:"fab",iconName:"ember",icon:[640,512,[],"f423","M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z"]},SM={prefix:"fab",iconName:"empire",icon:[496,512,[],"f1d1","M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z"]},wM={prefix:"fab",iconName:"envira",icon:[448,512,[],"f299","M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z"]},kM={prefix:"fab",iconName:"erlang",icon:[640,512,[],"f39d","M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z"]},TM={prefix:"fab",iconName:"ethereum",icon:[320,512,[],"f42e","M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z"]},PM={prefix:"fab",iconName:"etsy",icon:[384,512,[],"f2d7","M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z"]},EM={prefix:"fab",iconName:"evernote",icon:[384,512,[],"f839","M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z"]},DM={prefix:"fab",iconName:"expeditedssl",icon:[496,512,[],"f23e","M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z"]},OM={prefix:"fab",iconName:"facebook",icon:[512,512,[],"f09a","M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"]},IM={prefix:"fab",iconName:"facebook-f",icon:[320,512,[],"f39e","M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z"]},BM={prefix:"fab",iconName:"facebook-messenger",icon:[512,512,[],"f39f","M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z"]},RM={prefix:"fab",iconName:"facebook-square",icon:[448,512,[],"f082","M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z"]},FM={prefix:"fab",iconName:"fantasy-flight-games",icon:[512,512,[],"f6dc","M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99a42569.01 42569.01 0 0 1-41.13-40.72zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z"]},ZM={prefix:"fab",iconName:"fedex",icon:[640,512,[],"f797","M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z"]},jM={prefix:"fab",iconName:"fedora",icon:[448,512,[],"f798","M225 32C101.3 31.7.8 131.7.4 255.4L0 425.7a53.6 53.6 0 0 0 53.6 53.9l170.2.4c123.7.3 224.3-99.7 224.6-223.4S348.7 32.3 225 32zm169.8 157.2L333 126.6c2.3-4.7 3.8-9.2 3.8-14.3v-1.6l55.2 56.1a101 101 0 0 1 2.8 22.4zM331 94.3a106.06 106.06 0 0 1 58.5 63.8l-54.3-54.6a26.48 26.48 0 0 0-4.2-9.2zM118.1 247.2a49.66 49.66 0 0 0-7.7 11.4l-8.5-8.5a85.78 85.78 0 0 1 16.2-2.9zM97 251.4l11.8 11.9-.9 8a34.74 34.74 0 0 0 2.4 12.5l-27-27.2a80.6 80.6 0 0 1 13.7-5.2zm-18.2 7.4l38.2 38.4a53.17 53.17 0 0 0-14.1 4.7L67.6 266a107 107 0 0 1 11.2-7.2zm-15.2 9.8l35.3 35.5a67.25 67.25 0 0 0-10.5 8.5L53.5 278a64.33 64.33 0 0 1 10.1-9.4zm-13.3 12.3l34.9 35a56.84 56.84 0 0 0-7.7 11.4l-35.8-35.9c2.8-3.8 5.7-7.2 8.6-10.5zm-11 14.3l36.4 36.6a48.29 48.29 0 0 0-3.6 15.2l-39.5-39.8a99.81 99.81 0 0 1 6.7-12zm-8.8 16.3l41.3 41.8a63.47 63.47 0 0 0 6.7 26.2L25.8 326c1.4-4.9 2.9-9.6 4.7-14.5zm-7.9 43l61.9 62.2a31.24 31.24 0 0 0-3.6 14.3v1.1l-55.4-55.7a88.27 88.27 0 0 1-2.9-21.9zm5.3 30.7l54.3 54.6a28.44 28.44 0 0 0 4.2 9.2 106.32 106.32 0 0 1-58.5-63.8zm-5.3-37a80.69 80.69 0 0 1 2.1-17l72.2 72.5a37.59 37.59 0 0 0-9.9 8.7zm253.3-51.8l-42.6-.1-.1 56c-.2 69.3-64.4 115.8-125.7 102.9-5.7 0-19.9-8.7-19.9-24.2a24.89 24.89 0 0 1 24.5-24.6c6.3 0 6.3 1.6 15.7 1.6a55.91 55.91 0 0 0 56.1-55.9l.1-47c0-4.5-4.5-9-8.9-9l-33.6-.1c-32.6-.1-32.5-49.4.1-49.3l42.6.1.1-56a105.18 105.18 0 0 1 105.6-105 86.35 86.35 0 0 1 20.2 2.3c11.2 1.8 19.9 11.9 19.9 24 0 15.5-14.9 27.8-30.3 23.9-27.4-5.9-65.9 14.4-66 54.9l-.1 47a8.94 8.94 0 0 0 8.9 9l33.6.1c32.5.2 32.4 49.5-.2 49.4zm23.5-.3a35.58 35.58 0 0 0 7.6-11.4l8.5 8.5a102 102 0 0 1-16.1 2.9zm21-4.2L308.6 280l.9-8.1a34.74 34.74 0 0 0-2.4-12.5l27 27.2a74.89 74.89 0 0 1-13.7 5.3zm18-7.4l-38-38.4c4.9-1.1 9.6-2.4 13.7-4.7l36.2 35.9c-3.8 2.5-7.9 5-11.9 7.2zm15.5-9.8l-35.3-35.5a61.06 61.06 0 0 0 10.5-8.5l34.9 35a124.56 124.56 0 0 1-10.1 9zm13.2-12.3l-34.9-35a63.18 63.18 0 0 0 7.7-11.4l35.8 35.9a130.28 130.28 0 0 1-8.6 10.5zm11-14.3l-36.4-36.6a48.29 48.29 0 0 0 3.6-15.2l39.5 39.8a87.72 87.72 0 0 1-6.7 12zm13.5-30.9a140.63 140.63 0 0 1-4.7 14.3L345.6 190a58.19 58.19 0 0 0-7.1-26.2zm1-5.6l-71.9-72.1a32 32 0 0 0 9.9-9.2l64.3 64.7a90.93 90.93 0 0 1-2.3 16.6z"]},qM={prefix:"fab",iconName:"figma",icon:[384,512,[],"f799","M14 95.7924C14 42.8877 56.8878 0 109.793 0H274.161C327.066 0 369.954 42.8877 369.954 95.7924C369.954 129.292 352.758 158.776 326.711 175.897C352.758 193.019 369.954 222.502 369.954 256.002C369.954 308.907 327.066 351.795 274.161 351.795H272.081C247.279 351.795 224.678 342.369 207.666 326.904V415.167C207.666 468.777 163.657 512 110.309 512C57.5361 512 14 469.243 14 416.207C14 382.709 31.1945 353.227 57.2392 336.105C31.1945 318.983 14 289.5 14 256.002C14 222.502 31.196 193.019 57.2425 175.897C31.196 158.776 14 129.292 14 95.7924ZM176.288 191.587H109.793C74.2172 191.587 45.3778 220.427 45.3778 256.002C45.3778 291.44 73.9948 320.194 109.381 320.416C109.518 320.415 109.655 320.415 109.793 320.415H176.288V191.587ZM207.666 256.002C207.666 291.577 236.505 320.417 272.081 320.417H274.161C309.737 320.417 338.576 291.577 338.576 256.002C338.576 220.427 309.737 191.587 274.161 191.587H272.081C236.505 191.587 207.666 220.427 207.666 256.002ZM109.793 351.795C109.655 351.795 109.518 351.794 109.381 351.794C73.9948 352.015 45.3778 380.769 45.3778 416.207C45.3778 451.652 74.6025 480.622 110.309 480.622C146.591 480.622 176.288 451.186 176.288 415.167V351.795H109.793ZM109.793 31.3778C74.2172 31.3778 45.3778 60.2173 45.3778 95.7924C45.3778 131.368 74.2172 160.207 109.793 160.207H176.288V31.3778H109.793ZM207.666 160.207H274.161C309.737 160.207 338.576 131.368 338.576 95.7924C338.576 60.2173 309.737 31.3778 274.161 31.3778H207.666V160.207Z"]},UM={prefix:"fab",iconName:"firefox",icon:[512,512,[],"f269","M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z"]},WM={prefix:"fab",iconName:"firefox-browser",icon:[512,512,[],"e007","M189.37,152.86Zm-58.74-29.37C130.79,123.5,130.71,123.5,130.63,123.49Zm351.42,45.35c-10.61-25.5-32.08-53-48.94-61.73,13.72,26.89,21.67,53.88,24.7,74,0,0,0,.14.05.41-27.58-68.75-74.35-96.47-112.55-156.83-1.93-3.05-3.86-6.11-5.74-9.33-1-1.65-1.86-3.34-2.69-5.05A44.88,44.88,0,0,1,333.24.69a.63.63,0,0,0-.55-.66.9.9,0,0,0-.46,0l-.12.07-.18.1.1-.14c-54.23,31.77-76.72,87.38-82.5,122.78a130,130,0,0,0-48.33,12.33,6.25,6.25,0,0,0-3.09,7.75,6.13,6.13,0,0,0,7.79,3.79l.52-.21a117.84,117.84,0,0,1,42.11-11l1.42-.1c2-.12,4-.2,6-.22A122.61,122.61,0,0,1,291,140c.67.2,1.32.42,2,.63,1.89.57,3.76,1.2,5.62,1.87,1.36.5,2.71,1,4.05,1.58,1.09.44,2.18.88,3.25,1.35q2.52,1.13,5,2.35c.75.37,1.5.74,2.25,1.13q2.4,1.26,4.74,2.63,1.51.87,3,1.8a124.89,124.89,0,0,1,42.66,44.13c-13-9.15-36.35-18.19-58.82-14.28,87.74,43.86,64.18,194.9-57.39,189.2a108.43,108.43,0,0,1-31.74-6.12c-2.42-.91-4.8-1.89-7.16-2.93-1.38-.63-2.76-1.27-4.12-2C174.5,346,149.9,316.92,146.83,281.59c0,0,11.25-41.95,80.62-41.95,7.5,0,28.93-20.92,29.33-27-.09-2-42.54-18.87-59.09-35.18-8.85-8.71-13.05-12.91-16.77-16.06a69.58,69.58,0,0,0-6.31-4.77A113.05,113.05,0,0,1,173.92,97c-25.06,11.41-44.55,29.45-58.71,45.37h-.12c-9.67-12.25-9-52.65-8.43-61.08-.12-.53-7.22,3.68-8.15,4.31a178.54,178.54,0,0,0-23.84,20.43A214,214,0,0,0,51.9,133.36l0,0a.08.08,0,0,1,0,0,205.84,205.84,0,0,0-32.73,73.9c-.06.27-2.33,10.21-4,22.48q-.42,2.87-.78,5.74c-.57,3.69-1,7.71-1.44,14,0,.24,0,.48-.05.72-.18,2.71-.34,5.41-.49,8.12,0,.41,0,.82,0,1.24,0,134.7,109.21,243.89,243.92,243.89,120.64,0,220.82-87.58,240.43-202.62.41-3.12.74-6.26,1.11-9.41,4.85-41.83-.54-85.79-15.82-122.55Z"]},GM={prefix:"fab",iconName:"first-order",icon:[448,512,[],"f2b0","M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z"]},_M={prefix:"fab",iconName:"first-order-alt",icon:[496,512,[],"f50a","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z"]},$M={prefix:"fab",iconName:"firstdraft",icon:[384,512,[],"f3a1","M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z"]},YM={prefix:"fab",iconName:"flickr",icon:[448,512,[],"f16e","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z"]},XM={prefix:"fab",iconName:"flipboard",icon:[448,512,[],"f44d","M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z"]},KM={prefix:"fab",iconName:"fly",icon:[384,512,[],"f417","M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z"]},QM={prefix:"fab",iconName:"font-awesome",icon:[448,512,[],"f2b4","M400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32ZM336 312c-31.6 11.2-41.2 16-59.8 16-31.4 0-43.2-16-74.6-16a80 80 0 0 0-25.6 4V284a85.9 85.9 0 0 1 25.6-4c31.2 0 43.2 16 74.6 16 10.2 0 17.8-1.4 27.8-4.6v-96c-10 3.2-17.6 4.6-27.8 4.6-31.4 0-43.2-16-74.6-16-25.4 0-37.4 10.4-57.6 14.4V352a16 16 0 0 1-32 0V160a16 16 0 0 1 32 0v6.4c20.2-4 32.2-14.4 57.6-14.4 31.2 0 43.2 16 74.6 16 18.6 0 28.2-4.8 59.8-16Z"]},JM={prefix:"fab",iconName:"font-awesome-alt",icon:[448,512,[],"f35c","M400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32Zm16 400a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16V80A16 16 0 0 1 48 64H400a16 16 0 0 1 16 16ZM201.6 152c-25.4 0-37.4 10.4-57.6 14.4V160a16 16 0 0 0-32 0V352a16 16 0 0 0 32 0V198.4c20.2-4 32.2-14.4 57.6-14.4 31.4 0 43.2 16 74.6 16 10.2 0 17.8-1.4 27.8-4.6v96c-10 3.2-17.6 4.6-27.8 4.6-31.4 0-43.4-16-74.6-16a85.9 85.9 0 0 0-25.6 4v32a80 80 0 0 1 25.6-4c31.4 0 43.2 16 74.6 16 18.6 0 28.2-4.8 59.8-16V152c-31.6 11.2-41.2 16-59.8 16C244.8 168 232.8 152 201.6 152Z"]},cC={prefix:"fab",iconName:"font-awesome-flag",icon:[448,512,[],"f425","M448 48V384c-63 23-82 32-119 32-63 0-87-32-150-32-20 0-36 4-51 8V328c15-4 31-8 51-8 63 0 87 32 150 32 20 0 35-3 55-9V135c-20 6-35 9-55 9-63 0-87-32-150-32-51 0-75 21-115 29V448a31.6 31.6 0 0 1-32 32A31.6 31.6 0 0 1 0 448V64A31.6 31.6 0 0 1 32 32 31.6 31.6 0 0 1 64 64V77c40-8 64-29 115-29 63 0 87 32 150 32C366 80 385 71 448 48Z"]},aC={prefix:"fab",iconName:"font-awesome-logo-full",icon:[3992,512,["Font Awesome"],"f4e6","M1209.7 156.5c-57.8 0-102 43.9-102 99.1 0 56 44.6 99.1 102 99.1 57.4 0 102-43.1 102-99.1C1311.7 200.4 1267.5 156.5 1209.7 156.5Zm0 152.7c-35.1 0-51.8-27.4-51.8-53.2 0-25.8 16.7-53.2 51.8-53.2 35.1 0 51.8 27.8 51.8 53.2C1261.1 281.8 1244.8 309.2 1209.7 309.2Zm962.1-136.1c-4.4-10.9-12.3-16.5-23.5-16.5s-19.1 5.6-23.5 16.5l-59.4 145.8c-7.2 17.7 2.8 27.4 4.4 29a24.6 24.6 0 0 0 17.5 6.8c10.8 0 18.7-6 23.1-18.1l4-10.1h67.7l4 10.1c4.8 12.1 12.3 18.1 23.1 18.1a24.6 24.6 0 0 0 17.5-6.8c10-10.1 6.8-22.6 4.4-29Zm-43 113.6 19.1-56 19.1 56Zm-574.5-130.1c-14.3 0-24.7 10.9-24.7 25.4v76.5l-68.5-85.8c-4.4-5.6-11.6-16.1-25.5-16.1-19.1 0-24.3 17.7-24.3 25.4V329.7c0 14.1 10.4 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V252.8l68.9 86.2c4.8 5.6 11.6 16.1 25.5 16.1 19.1 0 23.9-17.3 23.9-25.4V181.9C1579 167.4 1568.6 156.5 1554.3 156.5Zm-554.1 1.6H916.5c-19.9 0-25.1 17.3-25.1 25.4V328.1c0 19.7 16.7 25.4 24.7 25.4 8 0 24.7-5.2 24.7-25.4V285h44.6c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.5-22.1-22.7-22.1H940.8V203.6h59.4c12.8 0 22.7-9.3 22.7-22.6C1022.9 163 1007.3 158.1 1000.2 158.1Zm815.1 0H1691.7c-7.2 0-22.7 4.4-22.7 22.2 0 13.3 10 22.6 22.7 22.6h37V327.7c0 14.1 10.4 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V202.8h37c12.7 0 22.7-9.3 22.7-22.6C1837.9 163 1822.4 158.1 1815.2 158.1Zm1789.5-1.6c-9.6 0-17.5 6-25.1 18.1l-46.6 76.1L3486.4 174.6q-10.8-18.1-25.1-18.1c-19.5 0-24.7 18.1-24.7 25.8V329.7c0 14.1 10.4 25.4 24.7 25.4s24.7-10.9 24.7-25.4V262.8L3510.7 302.7c6.4 10.1 13.9 15.3 22.3 15.3 8.8 0 15.9-5.2 22.3-15.3l24.7-39.9v66.9c0 14.1 10.3 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V182.3C3629.4 174.2 3624.6 156.5 3604.7 156.5Zm248.6 149.8h-65.7V272.9h39.4c11.9 0 21.1-8.9 21.1-20.9 0-12.1-9.2-20.9-21.1-20.9h-39.4V204.8h62.1c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.6-22.2-22.7-22.2h-86.4c-19.9 0-25.1 17.3-25.1 25.4V326.5c0 8.1 5.2 25.4 25.1 25.4h90c12.8 0 22.7-9.3 22.7-22.6C3876 311.2 3860.5 306.3 3853.3 306.3ZM3235 156.5c-57.8 0-102 43.9-102 99.1 0 56 44.6 99.1 102 99.1 57.4 0 102-43.1 102-99.1C3337 200.4 3292.8 156.5 3235 156.5Zm0 152.7c-35.1 0-51.8-27.4-51.8-53.2 0-25.8 16.7-53.2 51.8-53.2 35.1 0 51.8 27.8 51.8 53.2C3286.8 281.8 3270.1 309.2 3235 309.2ZM2550.2 156.5c-11.2 0-19.1 5.6-23.1 16.5l-34.3 94.7-31.5-92.2c-4.4-12.5-12.3-18.9-24.3-18.9-11.9 0-19.9 6.4-24.3 18.9l-31.5 92.2-34.3-95.5q-5.4-15.7-22.7-15.7c-6.8 0-12.3 2.4-17.5 7.3-5.2 5.2-10.8 14.5-4.8 28.6l55.8 145.8c4 11.3 11.6 16.9 23.1 16.9q16.7 0 22.7-16.9l33.5-91.8 33.5 91.8q6 16.9 22.7 16.9c11.2 0 19.1-5.6 23.1-16.9l55.8-145.8c3.6-9.3 4.4-19.3-4.8-28.6A23 23 0 0 0 2550.2 156.5Zm444.2 81-21.9-9.3c-11.9-4.8-16.3-8.5-16.3-15.7q0-12.1 16.7-12.1c12.7 0 19.5 7.7 24.3 10.9 7.2 5.2 18.3 6.8 27.9-2 10.8-10.5 6.8-23.8 1.2-30.6-12.3-14.9-30.3-22.2-53.8-22.2-19.1 0-35.1 5.2-47.4 15.7-12.3 10.5-18.7 24.2-18.7 41.1 0 24.2 15.9 43.5 47.8 57.6l19.5 8.9c15.9 6.8 19.1 9.7 19.1 17.7 0 9.3-6.4 14.1-19.5 14.1-19.1 0-34.7-14.9-36.3-16.1-10.8-7.3-21.5-2-26.3 2.8-6.8 6.4-12.7 20.9 3.2 36.2 6.8 6.4 15.5 11.7 26.7 15.3a94.6 94.6 0 0 0 32.7 5.6c19.9 0 36.7-5.2 49.8-16.1 13.1-10.9 19.5-25.4 19.5-43.5q0-20.5-12-33.8C3022.7 253.2 3010.7 244.3 2994.4 237.5Zm-206.4 68.9h-65.7V272.9h39.4c12 0 21.1-8.9 21.1-20.9 0-12.1-9.2-20.9-21.1-20.9h-39.4V204.8h62.1c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.5-22.2-22.7-22.2h-86.4c-19.9 0-25.1 17.3-25.1 25.4V326.5c0 8.1 5.2 25.4 25.1 25.4h90c12.7 0 22.7-9.3 22.7-22.6C2810.8 311.2 2795.2 306.3 2788 306.3ZM178.3 49.1c-50.5 0-74.4 20.7-114.6 28.7V65A31.8 31.8 0 1 0 0 65V447a31.8 31.8 0 0 0 63.7 0V141.4c40.2-8 64.1-28.7 114.6-28.7 62.5 0 86 31.8 148.4 31.8 20.3 0 35.4-2.8 55.3-9.2v191c-19.9 6.4-35 9.2-55.3 9.2-62.5 0-86.4-31.8-148.4-31.8-20.3 0-36.2 3.6-50.9 8V375.4a159.1 159.1 0 0 1 50.9-8c62.5 0 86 31.8 148.4 31.8 37 0 56.1-9.6 119-31.8V49.1C382.8 71.4 363.7 80.9 326.7 80.9 264.2 80.9 240.4 49.1 178.3 49.1Z"]},eC={prefix:"fab",iconName:"fonticons",icon:[448,512,[],"f280","M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z"]},iC={prefix:"fab",iconName:"fonticons-fi",icon:[384,512,[],"f3a2","M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z"]},nC={prefix:"fab",iconName:"fort-awesome",icon:[512,512,[],"f286","M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z"]},oC={prefix:"fab",iconName:"fort-awesome-alt",icon:[512,512,[],"f3a3","M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z"]},tC={prefix:"fab",iconName:"forumbee",icon:[448,512,[],"f211","M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z"]},rC={prefix:"fab",iconName:"foursquare",icon:[368,512,[],"f180","M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z"]},lC={prefix:"fab",iconName:"free-code-camp",icon:[576,512,[],"f2c5","M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z"]},fC={prefix:"fab",iconName:"freebsd",icon:[448,512,[],"f3a4","M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z"]},sC={prefix:"fab",iconName:"fulcrum",icon:[320,512,[],"f50b","M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z"]},hC={prefix:"fab",iconName:"galactic-republic",icon:[496,512,[],"f50c","M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z"]},mC={prefix:"fab",iconName:"galactic-senate",icon:[512,512,[],"f50d","M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z"]},vC={prefix:"fab",iconName:"get-pocket",icon:[448,512,[],"f265","M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z"]},zC={prefix:"fab",iconName:"gg",icon:[512,512,[],"f260","M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z"]},pC={prefix:"fab",iconName:"gg-circle",icon:[512,512,[],"f261","M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z"]},dC={prefix:"fab",iconName:"git",icon:[512,512,[],"f1d3","M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z"]},uC={prefix:"fab",iconName:"git-alt",icon:[448,512,[],"f841","M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"]},MC={prefix:"fab",iconName:"git-square",icon:[448,512,[],"f1d2","M100.59 334.24c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52.01-5.09 3.29-9.4 6.6-13.46zm27.95-116.64c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47.75-44.47zM448 80v352a48 48 0 0 1-48 48H48a48 48 0 0 1-48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.62 127 243.88 127c-14.48 0-22.88 7.84-22.88 22.31zM199.18 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.23 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.35 81.53 385 127.52 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.84l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.52h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z"]},CC={prefix:"fab",iconName:"github",icon:[496,512,[],"f09b","M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"]},HC={prefix:"fab",iconName:"github-alt",icon:[480,512,[],"f113","M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"]},gC={prefix:"fab",iconName:"github-square",icon:[448,512,[],"f092","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z"]},VC={prefix:"fab",iconName:"gitkraken",icon:[592,512,[],"f3a6","M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z"]},LC={prefix:"fab",iconName:"gitlab",icon:[512,512,[],"f296","M105.2 24.9c-3.1-8.9-15.7-8.9-18.9 0L29.8 199.7h132c-.1 0-56.6-174.8-56.6-174.8zM.9 287.7c-2.6 8 .3 16.9 7.1 22l247.9 184-226.2-294zm160.8-88l94.3 294 94.3-294zm349.4 88l-28.8-88-226.3 294 247.9-184c6.9-5.1 9.7-14 7.2-22zM425.7 24.9c-3.1-8.9-15.7-8.9-18.9 0l-56.6 174.8h132z"]},xC={prefix:"fab",iconName:"gitter",icon:[384,512,[],"f426","M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z"]},bC={prefix:"fab",iconName:"glide",icon:[448,512,[],"f2a5","M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z"]},NC={prefix:"fab",iconName:"glide-g",icon:[448,512,[],"f2a6","M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z"]},AC={prefix:"fab",iconName:"gofore",icon:[400,512,[],"f3a7","M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z"]},yC={prefix:"fab",iconName:"goodreads",icon:[448,512,[],"f3a8","M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z"]},SC={prefix:"fab",iconName:"goodreads-g",icon:[384,512,[],"f3a9","M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z"]},wC={prefix:"fab",iconName:"google",icon:[488,512,[],"f1a0","M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"]},kC={prefix:"fab",iconName:"google-drive",icon:[512,512,[],"f3aa","M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z"]},TC={prefix:"fab",iconName:"google-pay",icon:[640,512,[],"e079","M105.72,215v41.25h57.1a49.66,49.66,0,0,1-21.14,32.6c-9.54,6.55-21.72,10.28-36,10.28-27.6,0-50.93-18.91-59.3-44.22a65.61,65.61,0,0,1,0-41l0,0c8.37-25.46,31.7-44.37,59.3-44.37a56.43,56.43,0,0,1,40.51,16.08L176.47,155a101.24,101.24,0,0,0-70.75-27.84,105.55,105.55,0,0,0-94.38,59.11,107.64,107.64,0,0,0,0,96.18v.15a105.41,105.41,0,0,0,94.38,59c28.47,0,52.55-9.53,70-25.91,20-18.61,31.41-46.15,31.41-78.91A133.76,133.76,0,0,0,205.38,215Zm389.41-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46,0-39.34,8.34-50.5,24.86l20.85,13.26q11.45-17,31.26-17a34.05,34.05,0,0,1,22.75,8.79A28.14,28.14,0,0,1,487.79,248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44,0-29.65,3.88-39.49,11.77s-14.82,18.31-14.82,31.56a39.74,39.74,0,0,0,13.94,31.27c9.25,8.34,21,12.51,34.79,12.51,16.29,0,29.21-7.3,39-21.89h1v17.72h22.61V250C510.25,233.45,505.26,220.34,495.13,211ZM475.9,300.3a37.32,37.32,0,0,1-26.57,11.16A28.61,28.61,0,0,1,431,305.21a19.41,19.41,0,0,1-7.77-15.63c0-7,3.22-12.81,9.54-17.42s14.53-7,24.07-7C470,265,480.3,268,487.64,273.94,487.64,284.07,483.68,292.85,475.9,300.3Zm-93.65-142A55.71,55.71,0,0,0,341.74,142H279.07V328.74H302.7V253.1h39c16,0,29.5-5.36,40.51-15.93.88-.89,1.76-1.79,2.65-2.68A54.45,54.45,0,0,0,382.25,158.26Zm-16.58,62.23a30.65,30.65,0,0,1-23.34,9.68H302.7V165h39.63a32,32,0,0,1,22.6,9.23A33.18,33.18,0,0,1,365.67,220.49ZM614.31,201,577.77,292.7h-.45L539.9,201H514.21L566,320.55l-29.35,64.32H561L640,201Z"]},PC={prefix:"fab",iconName:"google-play",icon:[512,512,[],"f3ab","M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z"]},EC={prefix:"fab",iconName:"google-plus",icon:[512,512,[],"f2b3","M256,8C119.1,8,8,119.1,8,256S119.1,504,256,504,504,392.9,504,256,392.9,8,256,8ZM185.3,380a124,124,0,0,1,0-248c31.3,0,60.1,11,83,32.3l-33.6,32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9,0-77.2,35.5-77.2,78.1S142.3,334,185.3,334c32.6,0,64.9-19.1,70.1-53.3H185.3V238.1H302.2a109.2,109.2,0,0,1,1.9,20.7c0,70.8-47.5,121.2-118.8,121.2ZM415.5,273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5Z"]},DC={prefix:"fab",iconName:"google-plus-g",icon:[640,512,[],"f0d5","M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z"]},OC={prefix:"fab",iconName:"google-plus-square",icon:[448,512,[],"f0d4","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z"]},IC={prefix:"fab",iconName:"google-wallet",icon:[448,512,[],"f1ee","M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z"]},BC={prefix:"fab",iconName:"gratipay",icon:[496,512,[],"f184","M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z"]},RC={prefix:"fab",iconName:"grav",icon:[512,512,[],"f2d6","M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z"]},FC={prefix:"fab",iconName:"gripfire",icon:[384,512,[],"f3ac","M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z"]},ZC={prefix:"fab",iconName:"grunt",icon:[384,512,[],"f3ad","M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z"]},jC={prefix:"fab",iconName:"guilded",icon:[448,512,[],"e07e","M443.427,64H4.571c0,103.26,22.192,180.06,43.418,222.358C112.046,414.135,224,448,225.256,448a312.824,312.824,0,0,0,140.55-103.477c25.907-33.923,53.1-87.19,65.916-145.761H171.833c4.14,36.429,22.177,67.946,45.1,86.944h88.589c-17.012,28.213-48.186,54.4-80.456,69.482-31.232-13.259-69.09-46.544-96.548-98.362-26.726-53.833-27.092-105.883-27.092-105.883H437.573A625.91,625.91,0,0,0,443.427,64Z"]},qC={prefix:"fab",iconName:"gulp",icon:[256,512,[],"f3ae","M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z"]},UC={prefix:"fab",iconName:"hacker-news",icon:[448,512,[],"f1d4","M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"]},WC={prefix:"fab",iconName:"hacker-news-square",icon:[448,512,[],"f3af","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"]},GC={prefix:"fab",iconName:"hackerrank",icon:[512,512,[],"f5f7","M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z"]},_C={prefix:"fab",iconName:"hips",icon:[640,512,[],"f452","M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z"]},$C={prefix:"fab",iconName:"hire-a-helper",icon:[512,512,[],"f3b0","M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z"]},YC={prefix:"fab",iconName:"hive",icon:[512,512,[],"e07f","M260.353,254.878,131.538,33.1a2.208,2.208,0,0,0-3.829.009L.3,254.887A2.234,2.234,0,0,0,.3,257.122L129.116,478.9a2.208,2.208,0,0,0,3.83-.009L260.358,257.113A2.239,2.239,0,0,0,260.353,254.878Zm39.078-25.713a2.19,2.19,0,0,0,1.9,1.111h66.509a2.226,2.226,0,0,0,1.9-3.341L259.115,33.111a2.187,2.187,0,0,0-1.9-1.111H190.707a2.226,2.226,0,0,0-1.9,3.341ZM511.7,254.886,384.9,33.112A2.2,2.2,0,0,0,382.99,32h-66.6a2.226,2.226,0,0,0-1.906,3.34L440.652,256,314.481,476.66a2.226,2.226,0,0,0,1.906,3.34h66.6a2.2,2.2,0,0,0,1.906-1.112L511.7,257.114A2.243,2.243,0,0,0,511.7,254.886ZM366.016,284.917H299.508a2.187,2.187,0,0,0-1.9,1.111l-108.8,190.631a2.226,2.226,0,0,0,1.9,3.341h66.509a2.187,2.187,0,0,0,1.9-1.111l108.8-190.631A2.226,2.226,0,0,0,366.016,284.917Z"]},XC={prefix:"fab",iconName:"hooli",icon:[640,512,[],"f427","M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z"]},KC={prefix:"fab",iconName:"hornbill",icon:[512,512,[],"f592","M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z"]},QC={prefix:"fab",iconName:"hotjar",icon:[448,512,[],"f3b1","M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z"]},JC={prefix:"fab",iconName:"houzz",icon:[448,512,[],"f27c","M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z"]},cH={prefix:"fab",iconName:"html5",icon:[384,512,[],"f13b","M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"]},aH={prefix:"fab",iconName:"hubspot",icon:[512,512,[],"f3b2","M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z"]},eH={prefix:"fab",iconName:"ideal",icon:[576,512,[],"e013","M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z"]},iH={prefix:"fab",iconName:"imdb",icon:[448,512,[],"f2d8","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.3 229.2H21c.1-.1.2-.3.3-.4zM97 319.8H64V192h33zm113.2 0h-28.7v-86.4l-11.6 86.4h-20.6l-12.2-84.5v84.5h-29V192h42.8c3.3 19.8 6 39.9 8.7 59.9l7.6-59.9h43zm11.4 0V192h24.6c17.6 0 44.7-1.6 49 20.9 1.7 7.6 1.4 16.3 1.4 24.4 0 88.5 11.1 82.6-75 82.5zm160.9-29.2c0 15.7-2.4 30.9-22.2 30.9-9 0-15.2-3-20.9-9.8l-1.9 8.1h-29.8V192h31.7v41.7c6-6.5 12-9.2 20.9-9.2 21.4 0 22.2 12.8 22.2 30.1zM265 229.9c0-9.7 1.6-16-10.3-16v83.7c12.2.3 10.3-8.7 10.3-18.4zm85.5 26.1c0-5.4 1.1-12.7-6.2-12.7-6 0-4.9 8.9-4.9 12.7 0 .6-1.1 39.6 1.1 44.7.8 1.6 2.2 2.4 3.8 2.4 7.8 0 6.2-9 6.2-14.4z"]},nH={prefix:"fab",iconName:"innosoft",icon:[448,512,[],"e080","M422.559,159.71a27.379,27.379,0,0,0-13.866-23.337,26.42,26.42,0,0,0-26.211.133L73.943,314.647V176.261a11.955,11.955,0,0,1,6.047-10.34L218.066,86.208a12.153,12.153,0,0,1,11.922.025l32.656,18.853L112.581,191.723v56L359.642,105.086,241.129,36.679c-10.992-6.129-22.3-6.255-33.8-.27l-164.6,95.026c-10.634,6.12-16.771,16.39-17.29,29.124l0,191.5c.17,10.135,5.08,18.672,13.474,23.428a27.037,27.037,0,0,0,26.736-.045L374.057,197.376V335.657a11.976,11.976,0,0,1-5.92,10.368L230.025,425.77a12.175,12.175,0,0,1-11.937.062l-32.723-18.9,150.051-86.627v-56L88.367,406.932l118.794,68.583a33.88,33.88,0,0,0,34.25-.327l164.527-94.995c10.746-6.631,16.649-17.118,16.624-29.528Z"]},oH={prefix:"fab",iconName:"instagram",icon:[448,512,[],"f16d","M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"]},tH={prefix:"fab",iconName:"instagram-square",icon:[448,512,[],"e055","M224,202.66A53.34,53.34,0,1,0,277.36,256,53.38,53.38,0,0,0,224,202.66Zm124.71-41a54,54,0,0,0-30.41-30.41c-21-8.29-71-6.43-94.3-6.43s-73.25-1.93-94.31,6.43a54,54,0,0,0-30.41,30.41c-8.28,21-6.43,71.05-6.43,94.33S91,329.26,99.32,350.33a54,54,0,0,0,30.41,30.41c21,8.29,71,6.43,94.31,6.43s73.24,1.93,94.3-6.43a54,54,0,0,0,30.41-30.41c8.35-21,6.43-71.05,6.43-94.33S357.1,182.74,348.75,161.67ZM224,338a82,82,0,1,1,82-82A81.9,81.9,0,0,1,224,338Zm85.38-148.3a19.14,19.14,0,1,1,19.13-19.14A19.1,19.1,0,0,1,309.42,189.74ZM400,32H48A48,48,0,0,0,0,80V432a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V80A48,48,0,0,0,400,32ZM382.88,322c-1.29,25.63-7.14,48.34-25.85,67s-41.4,24.63-67,25.85c-26.41,1.49-105.59,1.49-132,0-25.63-1.29-48.26-7.15-67-25.85s-24.63-41.42-25.85-67c-1.49-26.42-1.49-105.61,0-132,1.29-25.63,7.07-48.34,25.85-67s41.47-24.56,67-25.78c26.41-1.49,105.59-1.49,132,0,25.63,1.29,48.33,7.15,67,25.85s24.63,41.42,25.85,67.05C384.37,216.44,384.37,295.56,382.88,322Z"]},rH={prefix:"fab",iconName:"instalod",icon:[512,512,[],"e081","M153.384,480H387.113L502.554,275.765,204.229,333.211ZM504.726,240.078,387.113,32H155.669L360.23,267.9ZM124.386,48.809,7.274,256,123.236,461.154,225.627,165.561Z"]},lH={prefix:"fab",iconName:"intercom",icon:[448,512,[],"f7af","M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z"]},fH={prefix:"fab",iconName:"internet-explorer",icon:[512,512,[],"f26b","M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z"]},sH={prefix:"fab",iconName:"invision",icon:[448,512,[],"f7b0","M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z"]},hH={prefix:"fab",iconName:"ioxhost",icon:[640,512,[],"f208","M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z"]},mH={prefix:"fab",iconName:"itch-io",icon:[512,512,[],"f83a","M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z"]},vH={prefix:"fab",iconName:"itunes",icon:[448,512,[],"f3b4","M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z"]},zH={prefix:"fab",iconName:"itunes-note",icon:[384,512,[],"f3b5","M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z"]},pH={prefix:"fab",iconName:"java",icon:[384,512,[],"f4e4","M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z"]},dH={prefix:"fab",iconName:"jedi-order",icon:[448,512,[],"f50e","M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z"]},uH={prefix:"fab",iconName:"jenkins",icon:[512,512,[],"f3b6","M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z"]},MH={prefix:"fab",iconName:"jira",icon:[496,512,[],"f7b1","M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z"]},CH={prefix:"fab",iconName:"joget",icon:[496,512,[],"f3b7","M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z"]},HH={prefix:"fab",iconName:"joomla",icon:[448,512,[],"f1aa","M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z"]},gH={prefix:"fab",iconName:"js",icon:[448,512,[],"f3b8","M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"]},VH={prefix:"fab",iconName:"js-square",icon:[448,512,[],"f3b9","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"]},LH={prefix:"fab",iconName:"jsfiddle",icon:[576,512,[],"f1cc","M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z"]},xH={prefix:"fab",iconName:"kaggle",icon:[320,512,[],"f5fa","M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z"]},bH={prefix:"fab",iconName:"keybase",icon:[448,512,[],"f4f5","M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z"]},NH={prefix:"fab",iconName:"keycdn",icon:[512,512,[],"f3ba","M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160"]},AH={prefix:"fab",iconName:"kickstarter",icon:[448,512,[],"f3bb","M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z"]},yH={prefix:"fab",iconName:"kickstarter-k",icon:[384,512,[],"f3bc","M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z"]},SH={prefix:"fab",iconName:"korvue",icon:[446,512,[],"f42f","M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z"]},wH={prefix:"fab",iconName:"laravel",icon:[512,512,[],"f3bd","M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z"]},kH={prefix:"fab",iconName:"lastfm",icon:[512,512,[],"f202","M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z"]},TH={prefix:"fab",iconName:"lastfm-square",icon:[448,512,[],"f203","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z"]},PH={prefix:"fab",iconName:"leanpub",icon:[576,512,[],"f212","M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z"]},EH={prefix:"fab",iconName:"less",icon:[640,512,[],"f41d","M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z"]},DH={prefix:"fab",iconName:"line",icon:[448,512,[],"f3c0","M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z"]},OH={prefix:"fab",iconName:"linkedin",icon:[448,512,[],"f08c","M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"]},IH={prefix:"fab",iconName:"linkedin-in",icon:[448,512,[],"f0e1","M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"]},BH={prefix:"fab",iconName:"linode",icon:[448,512,[],"f2b8","M437.4 226.3c-.3-.9-.9-1.4-1.4-2l-70-38.6c-.9-.6-2-.6-3.1 0l-58.9 36c-.9.6-1.4 1.7-1.4 2.6l-.9 31.4-24-16c-.9-.6-2.3-.6-3.1 0L240 260.9l-1.4-35.1c0-.9-.6-2-1.4-2.3l-36-24.3 33.7-17.4c1.1-.6 1.7-1.7 1.7-2.9l-5.7-132.3c0-.9-.9-2-1.7-2.6L138.6.3c-.9-.3-1.7-.3-2.3-.3L12.6 38.6c-1.4.6-2.3 2-2 3.7L38 175.4c.9 3.4 34 27.4 38.6 30.9l-26.9 12.9c-1.4.9-2 2.3-1.7 3.4l20.6 100.3c.6 2.9 23.7 23.1 27.1 26.3l-17.4 10.6c-.9.6-1.7 2-1.4 3.1 1.4 7.1 15.4 77.7 16.9 79.1l65.1 69.1c.6.6 1.4.6 2.3.9.6 0 1.1-.3 1.7-.6l83.7-66.9c.9-.6 1.1-1.4 1.1-2.3l-2-46 28 23.7c1.1.9 2.9.9 4 0l66.9-53.4c.9-.6 1.1-1.4 1.1-2.3l2.3-33.4 20.3 14c1.1.9 2.6.9 3.7 0l54.6-43.7c.6-.3 1.1-1.1 1.1-2 .9-6.5 10.3-70.8 9.7-72.8zm-204.8 4.8l4 92.6-90.6 61.2-14-96.6 100.6-57.2zm-7.7-180l5.4 126-106.6 55.4L104 97.7l120.9-46.6zM44 173.1L18 48l79.7 49.4 19.4 132.9L44 173.1zm30.6 147.8L55.7 230l70 58.3 13.7 93.4-64.8-60.8zm24.3 117.7l-13.7-67.1 61.7 60.9 9.7 67.4-57.7-61.2zm64.5 64.5l-10.6-70.9 85.7-61.4 3.1 70-78.2 62.3zm82-115.1c0-3.4.9-22.9-2-25.1l-24.3-20 22.3-14.9c2.3-1.7 1.1-5.7 1.1-8l29.4 22.6.6 68.3-27.1-22.9zm94.3-25.4l-60.9 48.6-.6-68.6 65.7-46.9-4.2 66.9zm27.7-25.7l-19.1-13.4 2-34c.3-.9-.3-2-1.1-2.6L308 259.7l.6-30 64.6 40.6-5.8 66.6zm54.6-39.8l-48.3 38.3 5.7-65.1 51.1-36.6-8.5 63.4z"]},RH={prefix:"fab",iconName:"linux",icon:[448,512,[],"f17c","M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z"]},FH={prefix:"fab",iconName:"lyft",icon:[512,512,[],"f3c3","M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z"]},ZH={prefix:"fab",iconName:"magento",icon:[448,512,[],"f3c4","M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z"]},jH={prefix:"fab",iconName:"mailchimp",icon:[448,512,[],"f59e","M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z"]},qH={prefix:"fab",iconName:"mandalorian",icon:[448,512,[],"f50f","M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z"]},UH={prefix:"fab",iconName:"markdown",icon:[640,512,[],"f60f","M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"]},WH={prefix:"fab",iconName:"mastodon",icon:[448,512,[],"f4f6","M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"]},GH={prefix:"fab",iconName:"maxcdn",icon:[512,512,[],"f136","M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z"]},_H={prefix:"fab",iconName:"mdb",icon:[576,512,[],"f8ca","M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z"]},$H={prefix:"fab",iconName:"medapps",icon:[320,512,[],"f3c6","M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z"]},YH={prefix:"fab",iconName:"medium",icon:[448,512,[],"f23a","M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z"]},XH={prefix:"fab",iconName:"medium-m",icon:[512,512,[],"f3c7","M71.5 142.3c.6-5.9-1.7-11.8-6.1-15.8L20.3 72.1V64h140.2l108.4 237.7L364.2 64h133.7v8.1l-38.6 37c-3.3 2.5-5 6.7-4.3 10.8v272c-.7 4.1 1 8.3 4.3 10.8l37.7 37v8.1H307.3v-8.1l39.1-37.9c3.8-3.8 3.8-5 3.8-10.8V171.2L241.5 447.1h-14.7L100.4 171.2v184.9c-1.1 7.8 1.5 15.6 7 21.2l50.8 61.6v8.1h-144v-8L65 377.3c5.4-5.6 7.9-13.5 6.5-21.2V142.3z"]},KH={prefix:"fab",iconName:"medrt",icon:[544,512,[],"f3c8","M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z"]},QH={prefix:"fab",iconName:"meetup",icon:[512,512,[],"f2e0","M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z"]},JH={prefix:"fab",iconName:"megaport",icon:[496,512,[],"f5a3","M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z"]},cg={prefix:"fab",iconName:"mendeley",icon:[640,512,[],"f7b3","M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z"]},ag={prefix:"fab",iconName:"microblog",icon:[448,512,[],"e01a","M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z"]},eg={prefix:"fab",iconName:"microsoft",icon:[448,512,[],"f3ca","M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"]},ig={prefix:"fab",iconName:"mix",icon:[448,512,[],"f3cb","M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z"]},ng={prefix:"fab",iconName:"mixcloud",icon:[640,512,[],"f289","M424.43 219.729C416.124 134.727 344.135 68 256.919 68c-72.266 0-136.224 46.516-159.205 114.074-54.545 8.029-96.63 54.822-96.63 111.582 0 62.298 50.668 112.966 113.243 112.966h289.614c52.329 0 94.969-42.362 94.969-94.693 0-45.131-32.118-83.063-74.48-92.2zm-20.489 144.53H114.327c-39.04 0-70.881-31.564-70.881-70.604s31.841-70.604 70.881-70.604c18.827 0 36.548 7.475 49.838 20.766 19.963 19.963 50.133-10.227 30.18-30.18-14.675-14.398-32.672-24.365-52.053-29.349 19.935-44.3 64.79-73.926 114.628-73.926 69.496 0 125.979 56.483 125.979 125.702 0 13.568-2.215 26.857-6.369 39.594-8.943 27.517 32.133 38.939 40.147 13.29 2.769-8.306 4.984-16.889 6.369-25.472 19.381 7.476 33.502 26.303 33.502 48.453 0 28.795-23.535 52.33-52.607 52.33zm235.069-52.33c0 44.024-12.737 86.386-37.102 122.657-4.153 6.092-10.798 9.414-17.72 9.414-16.317 0-27.127-18.826-17.443-32.949 19.381-29.349 29.903-63.682 29.903-99.122s-10.521-69.773-29.903-98.845c-15.655-22.831 19.361-47.24 35.163-23.534 24.366 35.993 37.102 78.356 37.102 122.379zm-70.88 0c0 31.565-9.137 62.021-26.857 88.325-4.153 6.091-10.798 9.136-17.72 9.136-17.201 0-27.022-18.979-17.443-32.948 13.013-19.104 19.658-41.255 19.658-64.513 0-22.981-6.645-45.408-19.658-64.512-15.761-22.986 19.008-47.095 35.163-23.535 17.719 26.026 26.857 56.483 26.857 88.047z"]},og={prefix:"fab",iconName:"mixer",icon:[512,512,[],"e056","M114.57,76.07a45.71,45.71,0,0,0-67.51-6.41c-17.58,16.18-19,43.52-4.75,62.77l91.78,123L41.76,379.58c-14.23,19.25-13.11,46.59,4.74,62.77A45.71,45.71,0,0,0,114,435.94L242.89,262.7a12.14,12.14,0,0,0,0-14.23ZM470.24,379.58,377.91,255.45l91.78-123c14.22-19.25,12.83-46.59-4.75-62.77a45.71,45.71,0,0,0-67.51,6.41l-128,172.12a12.14,12.14,0,0,0,0,14.23L398,435.94a45.71,45.71,0,0,0,67.51,6.41C483.35,426.17,484.47,398.83,470.24,379.58Z"]},tg={prefix:"fab",iconName:"mizuni",icon:[496,512,[],"f3cc","M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z"]},rg={prefix:"fab",iconName:"modx",icon:[448,512,[],"f285","M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z"]},lg={prefix:"fab",iconName:"monero",icon:[496,512,[],"f3d0","M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z"]},fg={prefix:"fab",iconName:"napster",icon:[496,512,[],"f3d2","M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z"]},sg={prefix:"fab",iconName:"neos",icon:[512,512,[],"f612","M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z"]},hg={prefix:"fab",iconName:"nimblr",icon:[384,512,[],"f5a8","M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z"]},mg={prefix:"fab",iconName:"node",icon:[640,512,[],"f419","M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z"]},vg={prefix:"fab",iconName:"node-js",icon:[448,512,[],"f3d3","M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z"]},zg={prefix:"fab",iconName:"npm",icon:[576,512,[],"f3d4","M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z"]},pg={prefix:"fab",iconName:"ns8",icon:[640,512,[],"f3d5","M104.324,269.172h26.067V242.994H104.324Zm52.466-26.178-.055-26.178v-.941a39.325,39.325,0,0,0-78.644.941v.166h26.4v-.166a12.98,12.98,0,0,1,25.956,0v26.178Zm52.356,25.846a91.1,91.1,0,0,1-91.1,91.1h-.609a91.1,91.1,0,0,1-91.1-91.1H0v.166A117.33,117.33,0,0,0,117.44,386.28h.775A117.331,117.331,0,0,0,235.49,268.84V242.828H209.146Zm-157.233,0a65.362,65.362,0,0,0,130.723,0H156.292a39.023,39.023,0,0,1-78.035,0V242.883H51.968v-26.62A65.42,65.42,0,0,1,182.8,217.48v25.293h26.344V217.48a91.761,91.761,0,0,0-183.522,0v25.4H51.913Zm418.4-71.173c13.67,0,24.573,6.642,30.052,18.264l.719,1.549,23.245-11.511-.609-1.439c-8.025-19.26-28.5-31.27-53.407-31.27-23.134,0-43.611,11.4-50.972,28.447-.123,26.876-.158,23.9,0,24.85,4.7,11.013,14.555,19.37,28.668,24.241a102.033,102.033,0,0,0,19.813,3.984c5.479.72,10.626,1.384,15.829,3.1,6.364,2.1,10.46,5.257,12.84,9.851v9.851c-3.708,7.527-13.781,12.342-25.791,12.342-14.334,0-25.956-6.918-31.933-19.039l-.72-1.494L415.026,280.9l.553,1.439c7.915,19.426,29.609,32.044,55.289,32.044,23.632,0,44.608-11.4,52.3-28.447l.166-25.9-.166-.664c-4.87-11.014-15.219-19.647-28.944-24.241-7.693-2.712-14.335-3.6-20.7-4.427a83.777,83.777,0,0,1-14.832-2.878c-6.31-1.937-10.4-5.092-12.619-9.63v-8.412C449.45,202.427,458.969,197.667,470.315,197.667ZM287.568,311.344h26.067v-68.4H287.568Zm352.266-53.3c-2.933-6.254-8.3-12.01-15.441-16.714A37.99,37.99,0,0,0,637.4,226l.166-25.347-.166-.664C630.038,184,610.667,173.26,589.25,173.26S548.461,184,541.1,199.992l-.166,25.347.166.664a39.643,39.643,0,0,0,13.006,15.331c-7.2,4.7-12.508,10.46-15.441,16.714l-.166,28.889.166.72c7.582,15.994,27.893,26.731,50.585,26.731s43.057-10.737,50.584-26.731l.166-28.89Zm-73.22-50.806c3.6-6.31,12.563-10.516,22.58-10.516s19.038,4.206,22.636,10.516v13.725c-3.542,6.2-12.563,10.349-22.636,10.349s-19.094-4.15-22.58-10.349Zm47.319,72.169c-3.764,6.641-13.338,10.9-24.683,10.9-11.125,0-20.976-4.372-24.684-10.9V263.25c3.708-6.309,13.5-10.515,24.684-10.515,11.345,0,20.919,4.15,24.683,10.515ZM376.4,265.962l-59.827-89.713h-29v40.623h26.51v.387l62.539,94.085H402.3V176.249H376.4Z"]},dg={prefix:"fab",iconName:"nutritionix",icon:[400,512,[],"f3d6","M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z"]},ug={prefix:"fab",iconName:"octopus-deploy",icon:[512,512,[],"e082","M455.6,349.2c-45.891-39.09-36.67-77.877-16.095-128.11C475.16,134.04,415.967,34.14,329.93,8.3,237.04-19.6,134.252,24.341,99.677,117.147a180.862,180.862,0,0,0-10.988,73.544c1.733,29.543,14.717,52.97,24.09,80.3,17.2,50.161-28.1,92.743-66.662,117.582-46.806,30.2-36.319,39.857-8.428,41.858,23.378,1.68,44.478-4.548,65.265-15.045,9.2-4.647,40.687-18.931,45.13-28.588C135.9,413.388,111.122,459.5,126.621,488.9c19.1,36.229,67.112-31.77,76.709-45.812,8.591-12.572,42.963-81.279,63.627-46.926,18.865,31.361,8.6,76.391,35.738,104.622,32.854,34.2,51.155-18.312,51.412-44.221.163-16.411-6.1-95.852,29.9-59.944C405.428,418,436.912,467.8,472.568,463.642c38.736-4.516-22.123-67.967-28.262-78.695,5.393,4.279,53.665,34.128,53.818,9.52C498.234,375.678,468.039,359.8,455.6,349.2Z"]},Mg={prefix:"fab",iconName:"odnoklassniki",icon:[320,512,[],"f263","M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z"]},Cg={prefix:"fab",iconName:"odnoklassniki-square",icon:[448,512,[],"f264","M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z"]},Hg={prefix:"fab",iconName:"old-republic",icon:[496,512,[],"f510","M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z"]},gg={prefix:"fab",iconName:"opencart",icon:[640,512,[],"f23d","M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z"]},Vg={prefix:"fab",iconName:"openid",icon:[448,512,[],"f19b","M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z"]},Lg={prefix:"fab",iconName:"opera",icon:[496,512,[],"f26a","M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z"]},xg={prefix:"fab",iconName:"optin-monster",icon:[576,512,[],"f23c","M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z"]},bg={prefix:"fab",iconName:"orcid",icon:[512,512,[],"f8d2","M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z"]},Ng={prefix:"fab",iconName:"osi",icon:[512,512,[],"f41a","M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z"]},Ag={prefix:"fab",iconName:"page4",icon:[496,512,[],"f3d7","M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z"]},yg={prefix:"fab",iconName:"pagelines",icon:[384,512,[],"f18c","M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z"]},Sg={prefix:"fab",iconName:"palfed",icon:[576,512,[],"f3d8","M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z"]},wg={prefix:"fab",iconName:"patreon",icon:[512,512,[],"f3d9","M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z"]},kg={prefix:"fab",iconName:"paypal",icon:[384,512,[],"f1ed","M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z"]},Tg={prefix:"fab",iconName:"penny-arcade",icon:[640,512,[],"f704","M421.91 164.27c-4.49 19.45-1.4 6.06-15.1 65.29l39.73-10.61c-22.34-49.61-17.29-38.41-24.63-54.68zm-206.09 51.11c-20.19 5.4-11.31 3.03-39.63 10.58l4.46 46.19c28.17-7.59 20.62-5.57 34.82-9.34 42.3-9.79 32.85-56.42.35-47.43zm326.16-26.19l-45.47-99.2c-5.69-12.37-19.46-18.84-32.62-15.33-70.27 18.75-38.72 10.32-135.59 36.23a27.618 27.618 0 0 0-18.89 17.41C144.26 113.27 0 153.75 0 226.67c0 33.5 30.67 67.11 80.9 95.37l1.74 17.88a27.891 27.891 0 0 0-17.77 28.67l4.3 44.48c1.39 14.31 13.43 25.21 27.8 25.2 5.18-.01-3.01 1.78 122.53-31.76 12.57-3.37 21.12-15.02 20.58-28.02 216.59 45.5 401.99-5.98 399.89-84.83.01-28.15-22.19-66.56-97.99-104.47zM255.14 298.3l-21.91 5.88-48.44 12.91 2.46 23.55 20.53-5.51 4.51 44.51-115.31 30.78-4.3-44.52 20.02-5.35-11.11-114.64-20.12 5.39-4.35-44.5c178.15-47.54 170.18-46.42 186.22-46.65 56.66-1.13 64.15 71.84 42.55 104.43a86.7 86.7 0 0 1-50.75 33.72zm199.18 16.62l-3.89-39.49 14.9-3.98-6.61-14.68-57.76 15.42-4.1 17.54 19.2-5.12 4.05 39.54-112.85 30.07-4.46-44.43 20.99-5.59 33.08-126.47-17.15 4.56-4.2-44.48c93.36-24.99 65.01-17.41 135.59-36.24l66.67 145.47 20.79-5.56 4.3 44.48-108.55 28.96z"]},Pg={prefix:"fab",iconName:"perbyte",icon:[448,512,[],"e083","M305.314,284.578H246.6V383.3h58.711q24.423,0,38.193-13.77t13.77-36.11q0-21.826-14.032-35.335T305.314,284.578ZM149.435,128.7H90.724v98.723h58.711q24.42,0,38.19-13.773t13.77-36.107q0-21.826-14.029-35.338T149.435,128.7ZM366.647,32H81.353A81.445,81.445,0,0,0,0,113.352V398.647A81.445,81.445,0,0,0,81.353,480H366.647A81.445,81.445,0,0,0,448,398.647V113.352A81.445,81.445,0,0,0,366.647,32Zm63.635,366.647a63.706,63.706,0,0,1-63.635,63.635H81.353a63.706,63.706,0,0,1-63.635-63.635V113.352A63.706,63.706,0,0,1,81.353,49.718H366.647a63.706,63.706,0,0,1,63.635,63.634ZM305.314,128.7H246.6v98.723h58.711q24.423,0,38.193-13.773t13.77-36.107q0-21.826-14.032-35.338T305.314,128.7Z"]},Eg={prefix:"fab",iconName:"periscope",icon:[448,512,[],"f3da","M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z"]},Dg={prefix:"fab",iconName:"phabricator",icon:[496,512,[],"f3db","M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z"]},Og={prefix:"fab",iconName:"phoenix-framework",icon:[640,512,[],"f3dc","M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z"]},Ig={prefix:"fab",iconName:"phoenix-squadron",icon:[512,512,[],"f511","M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z"]},Bg={prefix:"fab",iconName:"php",icon:[640,512,[],"f457","M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z"]},Rg={prefix:"fab",iconName:"pied-piper",icon:[480,512,[],"f2ae","M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z"]},Fg={prefix:"fab",iconName:"pied-piper-alt",icon:[576,512,[],"f1a8","M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z"]},Zg={prefix:"fab",iconName:"pied-piper-hat",icon:[640,512,[],"f4e5","M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z"]},jg={prefix:"fab",iconName:"pied-piper-pp",icon:[448,512,[],"f1a7","M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z"]},qg={prefix:"fab",iconName:"pied-piper-square",icon:[448,512,[],"e01e","M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z"]},Ug={prefix:"fab",iconName:"pinterest",icon:[496,512,[],"f0d2","M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z"]},Wg={prefix:"fab",iconName:"pinterest-p",icon:[384,512,[],"f231","M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z"]},Gg={prefix:"fab",iconName:"pinterest-square",icon:[448,512,[],"f0d3","M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z"]},_g={prefix:"fab",iconName:"playstation",icon:[576,512,[],"f3df","M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z"]},$g={prefix:"fab",iconName:"product-hunt",icon:[512,512,[],"f288","M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z"]},Yg={prefix:"fab",iconName:"pushed",icon:[432,512,[],"f3e1","M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z"]},Xg={prefix:"fab",iconName:"python",icon:[448,512,[],"f3e2","M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"]},Kg={prefix:"fab",iconName:"qq",icon:[448,512,[],"f1d6","M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z"]},Qg={prefix:"fab",iconName:"quinscape",icon:[512,512,[],"f459","M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z"]},Jg={prefix:"fab",iconName:"quora",icon:[448,512,[],"f2c4","M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z"]},cV={prefix:"fab",iconName:"r-project",icon:[581,512,[],"f4f7","M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"]},aV={prefix:"fab",iconName:"raspberry-pi",icon:[407,512,[],"f7bb","M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z"]},eV={prefix:"fab",iconName:"ravelry",icon:[512,512,[],"f2d9","M498.252,234.223c-1.208-10.34-1.7-20.826-3.746-31a310.306,310.306,0,0,0-9.622-36.6,184.068,184.068,0,0,0-30.874-57.5,251.154,251.154,0,0,0-18.818-21.689,237.362,237.362,0,0,0-47.113-36.116A240.8,240.8,0,0,0,331.356,26.65c-11.018-3.1-22.272-5.431-33.515-7.615-6.78-1.314-13.749-1.667-20.627-2.482-.316-.036-.6-.358-.9-.553q-16.143.009-32.288.006c-2.41.389-4.808.925-7.236,1.15a179.331,179.331,0,0,0-34.256,7.1,221.5,221.5,0,0,0-39.768,16.355,281.385,281.385,0,0,0-38.08,24.158c-6.167,4.61-12.268,9.36-17.974,14.518C96.539,88.494,86.34,97.72,76.785,107.555a243.878,243.878,0,0,0-33.648,43.95,206.488,206.488,0,0,0-20.494,44.6,198.2,198.2,0,0,0-7.691,34.759A201.13,201.13,0,0,0,13.4,266.385a299.716,299.716,0,0,0,4.425,40.24,226.865,226.865,0,0,0,16.73,53.3,210.543,210.543,0,0,0,24,39.528,213.589,213.589,0,0,0,26.358,28.416A251.313,251.313,0,0,0,126.7,458.455a287.831,287.831,0,0,0,55.9,25.277,269.5,269.5,0,0,0,40.641,9.835c6.071,1.01,12.275,1.253,18.412,1.873a4.149,4.149,0,0,1,1.19.56h32.289c2.507-.389,5-.937,7.527-1.143,16.336-1.332,32.107-5.335,47.489-10.717A219.992,219.992,0,0,0,379.1,460.322c9.749-6.447,19.395-13.077,28.737-20.1,5.785-4.348,10.988-9.5,16.3-14.457,3.964-3.7,7.764-7.578,11.51-11.5a232.162,232.162,0,0,0,31.427-41.639c9.542-16.045,17.355-32.905,22.3-50.926,2.859-10.413,4.947-21.045,7.017-31.652,1.032-5.279,1.251-10.723,1.87-16.087.036-.317.358-.6.552-.9V236.005A9.757,9.757,0,0,1,498.252,234.223Zm-161.117-1.15s-16.572-2.98-28.47-2.98c-27.2,0-33.57,14.9-33.57,37.04V360.8H201.582V170.062H275.1v31.931c8.924-26.822,26.771-36.189,62.04-36.189Z"]},iV={prefix:"fab",iconName:"react",icon:[512,512,[],"f41b","M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z"]},nV={prefix:"fab",iconName:"reacteurope",icon:[576,512,[],"f75d","M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z"]},oV={prefix:"fab",iconName:"readme",icon:[576,512,[],"f4d5","M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z"]},tV={prefix:"fab",iconName:"rebel",icon:[512,512,[],"f1d0","M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z"]},rV={prefix:"fab",iconName:"red-river",icon:[448,512,[],"f3e3","M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z"]},lV={prefix:"fab",iconName:"reddit",icon:[512,512,[],"f1a1","M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z"]},fV={prefix:"fab",iconName:"reddit-alien",icon:[512,512,[],"f281","M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z"]},sV={prefix:"fab",iconName:"reddit-square",icon:[448,512,[],"f1a2","M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z"]},hV={prefix:"fab",iconName:"redhat",icon:[512,512,[],"f7bc","M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24"]},mV={prefix:"fab",iconName:"renren",icon:[512,512,[],"f18b","M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z"]},vV={prefix:"fab",iconName:"replyd",icon:[448,512,[],"f3e6","M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z"]},zV={prefix:"fab",iconName:"researchgate",icon:[448,512,[],"f4f8","M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z"]},pV={prefix:"fab",iconName:"resolving",icon:[496,512,[],"f3e7","M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z"]},dV={prefix:"fab",iconName:"rev",icon:[448,512,[],"f5b2","M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"]},uV={prefix:"fab",iconName:"rocketchat",icon:[576,512,[],"f3e8","M284.046,224.8a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,284.046,224.8Zm-110.45,0a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,173.6,224.8Zm220.923,0a34.114,34.114,0,1,0,34.317,34.113A34.215,34.215,0,0,0,394.519,224.8Zm153.807-55.319c-15.535-24.172-37.31-45.57-64.681-63.618-52.886-34.817-122.374-54-195.666-54a405.975,405.975,0,0,0-72.032,6.357,238.524,238.524,0,0,0-49.51-36.588C99.684-11.7,40.859.711,11.135,11.421A14.291,14.291,0,0,0,5.58,34.782C26.542,56.458,61.222,99.3,52.7,138.252c-33.142,33.9-51.112,74.776-51.112,117.337,0,43.372,17.97,84.248,51.112,118.148,8.526,38.956-26.154,81.816-47.116,103.491a14.284,14.284,0,0,0,5.555,23.34c29.724,10.709,88.549,23.147,155.324-10.2a238.679,238.679,0,0,0,49.51-36.589A405.972,405.972,0,0,0,288,460.14c73.313,0,142.8-19.159,195.667-53.975,27.371-18.049,49.145-39.426,64.679-63.619,17.309-26.923,26.07-55.916,26.07-86.125C574.394,225.4,565.634,196.43,548.326,169.485ZM284.987,409.9a345.65,345.65,0,0,1-89.446-11.5l-20.129,19.393a184.366,184.366,0,0,1-37.138,27.585,145.767,145.767,0,0,1-52.522,14.87c.983-1.771,1.881-3.563,2.842-5.356q30.258-55.68,16.325-100.078c-32.992-25.962-52.778-59.2-52.778-95.4,0-83.1,104.254-150.469,232.846-150.469s232.867,67.373,232.867,150.469C517.854,342.525,413.6,409.9,284.987,409.9Z"]},MV={prefix:"fab",iconName:"rockrms",icon:[496,512,[],"f3e9","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z"]},CV={prefix:"fab",iconName:"rust",icon:[512,512,[],"e07a","M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z"]},HV={prefix:"fab",iconName:"safari",icon:[512,512,[],"f267","M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z"]},gV={prefix:"fab",iconName:"salesforce",icon:[640,512,[],"f83b","M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z"]},VV={prefix:"fab",iconName:"sass",icon:[640,512,[],"f41e","M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z"]},LV={prefix:"fab",iconName:"schlix",icon:[448,512,[],"f3ea","M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z"]},xV={prefix:"fab",iconName:"scribd",icon:[384,512,[],"f28a","M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z"]},bV={prefix:"fab",iconName:"searchengin",icon:[460,512,[],"f3eb","M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z"]},NV={prefix:"fab",iconName:"sellcast",icon:[448,512,[],"f2da","M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z"]},AV={prefix:"fab",iconName:"sellsy",icon:[640,512,[],"f213","M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z"]},yV={prefix:"fab",iconName:"servicestack",icon:[496,512,[],"f3ec","M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z"]},SV={prefix:"fab",iconName:"shirtsinbulk",icon:[448,512,[],"f214","M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z"]},wV={prefix:"fab",iconName:"shopify",icon:[448,512,[],"e057","M388.32,104.1a4.66,4.66,0,0,0-4.4-4c-2,0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.76,472S388.72,106.5,388.32,104.1ZM288.65,70.47a116.67,116.67,0,0,0-7.21-17.61C271,32.85,255.42,22,237,22a15,15,0,0,0-4,.4c-.4-.8-1.2-1.2-1.6-2C223.4,11.63,213,7.63,200.58,8c-24,.8-48,18-67.25,48.83-13.61,21.62-24,48.84-26.82,70.06-27.62,8.4-46.83,14.41-47.23,14.81-14,4.4-14.41,4.8-16,18-1.2,10-38,291.82-38,291.82L307.86,504V65.67a41.66,41.66,0,0,0-4.4.4S297.86,67.67,288.65,70.47ZM233.41,87.69c-16,4.8-33.63,10.4-50.84,15.61,4.8-18.82,14.41-37.63,25.62-50,4.4-4.4,10.41-9.61,17.21-12.81C232.21,54.86,233.81,74.48,233.41,87.69ZM200.58,24.44A27.49,27.49,0,0,1,215,28c-6.4,3.2-12.81,8.41-18.81,14.41-15.21,16.42-26.82,42-31.62,66.45-14.42,4.41-28.83,8.81-42,12.81C131.33,83.28,163.75,25.24,200.58,24.44ZM154.15,244.61c1.6,25.61,69.25,31.22,73.25,91.66,2.8,47.64-25.22,80.06-65.65,82.47-48.83,3.2-75.65-25.62-75.65-25.62l10.4-44s26.82,20.42,48.44,18.82c14-.8,19.22-12.41,18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44,27.22-93.27,94.47-97.68,26-1.6,39.23,4.81,39.23,4.81L221.4,225.39s-17.21-8-37.63-6.4C154.15,221,153.75,239.8,154.15,244.61ZM249.42,82.88c0-12-1.6-29.22-7.21-43.63,18.42,3.6,27.22,24,31.23,36.43Q262.63,78.68,249.42,82.88Z"]},kV={prefix:"fab",iconName:"shopware",icon:[512,512,[],"f5b5","M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z"]},TV={prefix:"fab",iconName:"simplybuilt",icon:[512,512,[],"f215","M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z"]},PV={prefix:"fab",iconName:"sistrix",icon:[448,512,[],"f3ee","M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z"]},EV={prefix:"fab",iconName:"sith",icon:[448,512,[],"f512","M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z"]},DV={prefix:"fab",iconName:"sketch",icon:[512,512,[],"f7c6","M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z"]},OV={prefix:"fab",iconName:"skyatlas",icon:[640,512,[],"f216","M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z"]},IV={prefix:"fab",iconName:"skype",icon:[448,512,[],"f17e","M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z"]},BV={prefix:"fab",iconName:"slack",icon:[448,512,[],"f198","M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"]},RV={prefix:"fab",iconName:"slack-hash",icon:[448,512,[],"f3ef","M446.2 270.4c-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-30.3-90 45.4-15.1c19.1-6.2 29.1-26.8 23-45.9-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-93.4 31.2-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-45.3 15c-19.1 6.2-29.1 26.8-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l30.3 90L78 354.8c-19 6.2-29.1 26.9-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 93.6-31.3 15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 45.4-15.1c19-6 29.1-26.7 22.9-45.7zm-254.1 47.2l-30.3-90.2 93.5-31.3 30.3 90.2-93.5 31.3z"]},FV={prefix:"fab",iconName:"slideshare",icon:[512,512,[],"f1e7","M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z"]},ZV={prefix:"fab",iconName:"snapchat",icon:[496,512,[],"f2ab","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm169.5 338.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z"]},jV={prefix:"fab",iconName:"snapchat-ghost",icon:[512,512,[],"f2ac","M510.846 392.673c-5.211 12.157-27.239 21.089-67.36 27.318-2.064 2.786-3.775 14.686-6.507 23.956-1.625 5.566-5.623 8.869-12.128 8.869l-.297-.005c-9.395 0-19.203-4.323-38.852-4.323-26.521 0-35.662 6.043-56.254 20.588-21.832 15.438-42.771 28.764-74.027 27.399-31.646 2.334-58.025-16.908-72.871-27.404-20.714-14.643-29.828-20.582-56.241-20.582-18.864 0-30.736 4.72-38.852 4.72-8.073 0-11.213-4.922-12.422-9.04-2.703-9.189-4.404-21.263-6.523-24.13-20.679-3.209-67.31-11.344-68.498-32.15a10.627 10.627 0 0 1 8.877-11.069c69.583-11.455 100.924-82.901 102.227-85.934.074-.176.155-.344.237-.515 3.713-7.537 4.544-13.849 2.463-18.753-5.05-11.896-26.872-16.164-36.053-19.796-23.715-9.366-27.015-20.128-25.612-27.504 2.437-12.836 21.725-20.735 33.002-15.453 8.919 4.181 16.843 6.297 23.547 6.297 5.022 0 8.212-1.204 9.96-2.171-2.043-35.936-7.101-87.29 5.687-115.969C158.122 21.304 229.705 15.42 250.826 15.42c.944 0 9.141-.089 10.11-.089 52.148 0 102.254 26.78 126.723 81.643 12.777 28.65 7.749 79.792 5.695 116.009 1.582.872 4.357 1.942 8.599 2.139 6.397-.286 13.815-2.389 22.069-6.257 6.085-2.846 14.406-2.461 20.48.058l.029.01c9.476 3.385 15.439 10.215 15.589 17.87.184 9.747-8.522 18.165-25.878 25.018-2.118.835-4.694 1.655-7.434 2.525-9.797 3.106-24.6 7.805-28.616 17.271-2.079 4.904-1.256 11.211 2.46 18.748.087.168.166.342.239.515 1.301 3.03 32.615 74.46 102.23 85.934 6.427 1.058 11.163 7.877 7.725 15.859z"]},qV={prefix:"fab",iconName:"snapchat-square",icon:[448,512,[],"f2ad","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6.5 314.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C159.1 100 206.7 96 220.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z"]},UV={prefix:"fab",iconName:"soundcloud",icon:[640,512,[],"f1be","M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z"]},WV={prefix:"fab",iconName:"sourcetree",icon:[448,512,[],"f7d3","M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z"]},GV={prefix:"fab",iconName:"speakap",icon:[448,512,[],"f3f3","M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z"]},_V={prefix:"fab",iconName:"speaker-deck",icon:[512,512,[],"f83c","M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z"]},$V={prefix:"fab",iconName:"spotify",icon:[496,512,[],"f1bc","M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z"]},YV={prefix:"fab",iconName:"squarespace",icon:[512,512,[],"f5be","M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z"]},XV={prefix:"fab",iconName:"stack-exchange",icon:[448,512,[],"f18d","M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z"]},KV={prefix:"fab",iconName:"stack-overflow",icon:[384,512,[],"f16c","M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"]},QV={prefix:"fab",iconName:"stackpath",icon:[448,512,[],"f842","M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z"]},JV={prefix:"fab",iconName:"staylinked",icon:[440,512,[],"f3f5","M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z"]},cL={prefix:"fab",iconName:"steam",icon:[496,512,[],"f1b6","M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z"]},aL={prefix:"fab",iconName:"steam-square",icon:[448,512,[],"f1b7","M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z"]},eL={prefix:"fab",iconName:"steam-symbol",icon:[448,512,[],"f3f6","M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z"]},iL={prefix:"fab",iconName:"sticker-mule",icon:[576,512,[],"f3f7","M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z"]},nL={prefix:"fab",iconName:"strava",icon:[384,512,[],"f428","M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z"]},oL={prefix:"fab",iconName:"stripe",icon:[640,512,[],"f429","M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z"]},tL={prefix:"fab",iconName:"stripe-s",icon:[384,512,[],"f42a","M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z"]},rL={prefix:"fab",iconName:"studiovinari",icon:[512,512,[],"f3f8","M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z"]},lL={prefix:"fab",iconName:"stumbleupon",icon:[512,512,[],"f1a4","M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z"]},fL={prefix:"fab",iconName:"stumbleupon-circle",icon:[496,512,[],"f1a3","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z"]},sL={prefix:"fab",iconName:"superpowers",icon:[448,512,[],"f2dd","M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z"]},hL={prefix:"fab",iconName:"supple",icon:[640,512,[],"f3f9","M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z"]},mL={prefix:"fab",iconName:"suse",icon:[640,512,[],"f7d6","M471.08 102.66s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.06a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2.3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9.5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5.4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3.5-76.2-25.4-81.6-28.2-.3-.4.1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7.8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3.1-.1-.9-.3-.9.7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0-25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z"]},vL={prefix:"fab",iconName:"swift",icon:[448,512,[],"f8e1","M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z"]},zL={prefix:"fab",iconName:"symfony",icon:[512,512,[],"f83d","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z"]},pL={prefix:"fab",iconName:"teamspeak",icon:[512,512,[],"f4f9","M244.2 346.79c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6.6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0-8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.64 222.64 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.59 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.29v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.79c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z"]},dL={prefix:"fab",iconName:"telegram",icon:[496,512,[],"f2c6","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z"]},uL={prefix:"fab",iconName:"telegram-plane",icon:[448,512,[],"f3fe","M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z"]},ML={prefix:"fab",iconName:"tencent-weibo",icon:[384,512,[],"f1d5","M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z"]},CL={prefix:"fab",iconName:"the-red-yeti",icon:[512,512,[],"f69d","M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z"]},HL={prefix:"fab",iconName:"themeco",icon:[448,512,[],"f5c6","M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z"]},gL={prefix:"fab",iconName:"themeisle",icon:[512,512,[],"f2b2","M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z"]},VL={prefix:"fab",iconName:"think-peaks",icon:[576,512,[],"f731","M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z"]},LL={prefix:"fab",iconName:"tiktok",icon:[448,512,[],"e07b","M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z"]},xL={prefix:"fab",iconName:"trade-federation",icon:[496,512,[],"f513","M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z"]},bL={prefix:"fab",iconName:"trello",icon:[448,512,[],"f181","M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z"]},NL={prefix:"fab",iconName:"tumblr",icon:[320,512,[],"f173","M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z"]},AL={prefix:"fab",iconName:"tumblr-square",icon:[448,512,[],"f174","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z"]},yL={prefix:"fab",iconName:"twitch",icon:[512,512,[],"f1e8","M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z"]},SL={prefix:"fab",iconName:"twitter",icon:[512,512,[],"f099","M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"]},wL={prefix:"fab",iconName:"twitter-square",icon:[448,512,[],"f081","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z"]},kL={prefix:"fab",iconName:"typo3",icon:[448,512,[],"f42b","M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z"]},TL={prefix:"fab",iconName:"uber",icon:[448,512,[],"f402","M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z"]},PL={prefix:"fab",iconName:"ubuntu",icon:[496,512,[],"f7df","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z"]},EL={prefix:"fab",iconName:"uikit",icon:[448,512,[],"f403","M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z"]},DL={prefix:"fab",iconName:"umbraco",icon:[510,512,[],"f8e8","M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z"]},OL={prefix:"fab",iconName:"uncharted",icon:[448,512,[],"e084","M171.73,232.813A5.381,5.381,0,0,0,176.7,229.5,48.081,48.081,0,0,1,191.6,204.244c1.243-.828,1.657-2.484,1.657-4.141a4.22,4.22,0,0,0-2.071-3.312L74.429,128.473,148.958,85a9.941,9.941,0,0,0,4.968-8.281,9.108,9.108,0,0,0-4.968-8.281L126.6,55.6a9.748,9.748,0,0,0-9.523,0l-100.2,57.966a9.943,9.943,0,0,0-4.969,8.281V236.954a9.109,9.109,0,0,0,4.969,8.281L39.235,258.07a8.829,8.829,0,0,0,4.968,1.242,9.4,9.4,0,0,0,6.625-2.484,10.8,10.8,0,0,0,2.9-7.039V164.5L169.66,232.4A4.5,4.5,0,0,0,171.73,232.813ZM323.272,377.73a12.478,12.478,0,0,0-4.969,1.242l-74.528,43.062V287.882c0-2.9-2.9-5.8-6.211-4.555a53.036,53.036,0,0,1-28.984.414,4.86,4.86,0,0,0-6.21,4.555V421.619l-74.529-43.061a8.83,8.83,0,0,0-4.969-1.242,9.631,9.631,0,0,0-9.523,9.523v26.085a9.107,9.107,0,0,0,4.969,8.281l100.2,57.553A8.829,8.829,0,0,0,223.486,480a11.027,11.027,0,0,0,4.969-1.242l100.2-57.553a9.941,9.941,0,0,0,4.968-8.281V386.839C332.8,382.285,328.24,377.73,323.272,377.73ZM286.007,78a23,23,0,1,0-23-23A23,23,0,0,0,286.007,78Zm63.627-10.086a23,23,0,1,0,23,23A23,23,0,0,0,349.634,67.914ZM412.816,151.6a23,23,0,1,0-23-23A23,23,0,0,0,412.816,151.6Zm-63.182-9.2a23,23,0,1,0,23,23A23,23,0,0,0,349.634,142.4Zm-63.627,83.244a23,23,0,1,0-23-23A23,23,0,0,0,286.007,225.648Zm-62.074,36.358a23,23,0,1,0-23-23A23,23,0,0,0,223.933,262.006Zm188.883-82.358a23,23,0,1,0,23,23A23,23,0,0,0,412.816,179.648Zm0,72.272a23,23,0,1,0,23,23A23,23,0,0,0,412.816,251.92Z"]},IL={prefix:"fab",iconName:"uniregistry",icon:[384,512,[],"f404","M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z"]},BL={prefix:"fab",iconName:"unity",icon:[576,512,[],"e049","M498.11,206.4,445.31,14.72,248.2,66.08,219,116.14l-59.2-.43L15.54,256,159.82,396.32l59.17-.43,29.24,50,197.08,51.36,52.8-191.62-30-49.63ZM223.77,124.2,374.55,86.51,288,232.33H114.87Zm0,263.63L114.87,279.71H288l86.55,145.81Zm193,14L330.17,256l86.58-145.84L458.56,256Z"]},RL={prefix:"fab",iconName:"unsplash",icon:[448,512,[],"e07c","M448,230.17V480H0V230.17H141.13V355.09H306.87V230.17ZM306.87,32H141.13V156.91H306.87Z"]},FL={prefix:"fab",iconName:"untappd",icon:[640,512,[],"f405","M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z"]},ZL={prefix:"fab",iconName:"ups",icon:[384,512,[],"f7e0","M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z"]},jL={prefix:"fab",iconName:"usb",icon:[640,512,[],"f287","M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z"]},qL={prefix:"fab",iconName:"usps",icon:[576,512,[],"f7e1","M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z"]},UL={prefix:"fab",iconName:"ussunnah",icon:[512,512,[],"f407","M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z"]},WL={prefix:"fab",iconName:"vaadin",icon:[448,512,[],"f408","M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z"]},GL={prefix:"fab",iconName:"viacoin",icon:[384,512,[],"f237","M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z"]},_L={prefix:"fab",iconName:"viadeo",icon:[448,512,[],"f2a9","M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z"]},$L={prefix:"fab",iconName:"viadeo-square",icon:[448,512,[],"f2aa","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z"]},YL={prefix:"fab",iconName:"viber",icon:[512,512,[],"f409","M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z"]},XL={prefix:"fab",iconName:"vimeo",icon:[448,512,[],"f40a","M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z"]},KL={prefix:"fab",iconName:"vimeo-square",icon:[448,512,[],"f194","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z"]},QL={prefix:"fab",iconName:"vimeo-v",icon:[448,512,[],"f27d","M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z"]},JL={prefix:"fab",iconName:"vine",icon:[384,512,[],"f1ca","M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z"]},cx={prefix:"fab",iconName:"vk",icon:[576,512,[],"f189","M545 117.7c3.7-12.5 0-21.7-17.8-21.7h-58.9c-15 0-21.9 7.9-25.6 16.7 0 0-30 73.1-72.4 120.5-13.7 13.7-20 18.1-27.5 18.1-3.7 0-9.4-4.4-9.4-16.9V117.7c0-15-4.2-21.7-16.6-21.7h-92.6c-9.4 0-15 7-15 13.5 0 14.2 21.2 17.5 23.4 57.5v86.8c0 19-3.4 22.5-10.9 22.5-20 0-68.6-73.4-97.4-157.4-5.8-16.3-11.5-22.9-26.6-22.9H38.8c-16.8 0-20.2 7.9-20.2 16.7 0 15.6 20 93.1 93.1 195.5C160.4 378.1 229 416 291.4 416c37.5 0 42.1-8.4 42.1-22.9 0-66.8-3.4-73.1 15.4-73.1 8.7 0 23.7 4.4 58.7 38.1 40 40 46.6 57.9 69 57.9h58.9c16.8 0 25.3-8.4 20.4-25-11.2-34.9-86.9-106.7-90.3-111.5-8.7-11.2-6.2-16.2 0-26.2.1-.1 72-101.3 79.4-135.6z"]},ax={prefix:"fab",iconName:"vnv",icon:[640,512,[],"f40b","M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z"]},ex={prefix:"fab",iconName:"vuejs",icon:[448,512,[],"f41f","M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z"]},ix={prefix:"fab",iconName:"watchman-monitoring",icon:[512,512,[],"e087","M256,16C123.452,16,16,123.452,16,256S123.452,496,256,496,496,388.548,496,256,388.548,16,256,16ZM121.69,429.122C70.056,388.972,36.741,326.322,36.741,256a218.519,218.519,0,0,1,9.587-64.122l102.9-17.895-.121,10.967-13.943,2.013s-.144,12.5-.144,19.549a12.778,12.778,0,0,0,4.887,10.349l9.468,7.4Zm105.692-283.27,8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46,0,0,0-32.342,30.474-39.529,34.5-7.078,3.964-.144,9.344-.144,9.344l8.481,7.618-.048,4.369L75.982,131.045c39.644-56.938,105.532-94.3,180.018-94.3A218.754,218.754,0,0,1,420.934,111.77l-193.512,37.7Zm34.063,329.269-33.9-250.857,9.467-7.4a12.778,12.778,0,0,0,4.888-10.349c0-7.044-.144-19.549-.144-19.549l-13.943-2.013-.116-10.474,241.711,31.391A218.872,218.872,0,0,1,475.259,256C475.259,375.074,379.831,472.212,261.445,475.121Z"]},nx={prefix:"fab",iconName:"waze",icon:[512,512,[],"f83f","M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z"]},ox={prefix:"fab",iconName:"weebly",icon:[512,512,[],"f5cc","M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z"]},tx={prefix:"fab",iconName:"weibo",icon:[512,512,[],"f18a","M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z"]},rx={prefix:"fab",iconName:"weixin",icon:[576,512,[],"f1d7","M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z"]},lx={prefix:"fab",iconName:"whatsapp",icon:[448,512,[],"f232","M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"]},fx={prefix:"fab",iconName:"whatsapp-square",icon:[448,512,[],"f40c","M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z"]},sx={prefix:"fab",iconName:"whmcs",icon:[448,512,[],"f40d","M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z"]},hx={prefix:"fab",iconName:"wikipedia-w",icon:[640,512,[],"f266","M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z"]},mx={prefix:"fab",iconName:"windows",icon:[448,512,[],"f17a","M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"]},vx={prefix:"fab",iconName:"wix",icon:[640,512,[],"f5cf","M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z"]},zx={prefix:"fab",iconName:"wizards-of-the-coast",icon:[640,512,[],"f730","M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z"]},px={prefix:"fab",iconName:"wodu",icon:[640,512,[],"e088","M178.414 339.706H141.1L112.166 223.475h-.478L83.228 339.706H45.2L0 168.946H37.548L64.574 285.177h.478L94.707 168.946h35.157l29.178 117.667h.479L187.5 168.946h36.831zM271.4 212.713c38.984 0 64.1 25.828 64.1 65.291 0 39.222-25.111 65.05-64.1 65.05-38.743 0-63.855-25.828-63.855-65.05C207.547 238.541 232.659 212.713 271.4 212.713zm0 104.753c23.2 0 30.133-19.852 30.133-39.462 0-19.852-6.934-39.7-30.133-39.7-27.7 0-29.894 19.85-29.894 39.7C241.508 297.614 248.443 317.466 271.4 317.466zM435.084 323.922h-.478c-7.893 13.392-21.765 19.132-37.548 19.132-37.31 0-55.485-32.045-55.485-66.246 0-33.243 18.415-64.095 54.767-64.095 14.589 0 28.938 6.218 36.831 18.416h.24V168.946h33.96v170.76H435.084zM405.428 238.3c-22.24 0-29.894 19.134-29.894 39.463 0 19.371 8.848 39.7 29.894 39.7 22.482 0 29.178-19.613 29.178-39.94C434.606 257.436 427.432 238.3 405.428 238.3zM592.96 339.706H560.673V322.487h-.718c-8.609 13.87-23.436 20.567-37.786 20.567-36.113 0-45.2-20.328-45.2-50.941V216.061h33.959V285.9c0 20.329 5.979 30.372 21.765 30.372 18.415 0 26.306-10.283 26.306-35.393V216.061H592.96zM602.453 302.876H640v36.83H602.453z"]},dx={prefix:"fab",iconName:"wolf-pack-battalion",icon:[512,512,[],"f514","M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z"]},ux={prefix:"fab",iconName:"wordpress",icon:[512,512,[],"f19a","M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z"]},Mx={prefix:"fab",iconName:"wordpress-simple",icon:[512,512,[],"f411","M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z"]},Cx={prefix:"fab",iconName:"wpbeginner",icon:[512,512,[],"f297","M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z"]},Hx={prefix:"fab",iconName:"wpexplorer",icon:[512,512,[],"f2de","M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z"]},gx={prefix:"fab",iconName:"wpforms",icon:[448,512,[],"f298","M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z"]},Vx={prefix:"fab",iconName:"wpressr",icon:[496,512,[],"f3e4","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z"]},Lx={prefix:"fab",iconName:"xbox",icon:[512,512,[],"f412","M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z"]},xx={prefix:"fab",iconName:"xing",icon:[384,512,[],"f168","M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z"]},bx={prefix:"fab",iconName:"xing-square",icon:[448,512,[],"f169","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z"]},Nx={prefix:"fab",iconName:"y-combinator",icon:[448,512,[],"f23b","M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z"]},Ax={prefix:"fab",iconName:"yahoo",icon:[512,512,[],"f19e","M223.69,141.06,167,284.23,111,141.06H14.93L120.76,390.19,82.19,480h94.17L317.27,141.06Zm105.4,135.79a58.22,58.22,0,1,0,58.22,58.22A58.22,58.22,0,0,0,329.09,276.85ZM394.65,32l-93,223.47H406.44L499.07,32Z"]},yx={prefix:"fab",iconName:"yammer",icon:[512,512,[],"f840","M421.78 152.17A23.06 23.06 0 0 0 400.9 112c-.83.43-1.71.9-2.63 1.4-15.25 8.4-118.33 80.62-106.69 88.77s82.04-23.61 130.2-50zm0 217.17c-48.16-26.38-118.64-58.1-130.2-50s91.42 80.35 106.69 88.74c.92.51 1.8 1 2.63 1.41a23.07 23.07 0 0 0 20.88-40.15zM464.21 237c-.95 0-1.95-.06-3-.06-17.4 0-142.52 13.76-136.24 26.51s83.3 18.74 138.21 18.76a23 23 0 0 0 1-45.21zM31 96.65a24.88 24.88 0 0 1 46.14-18.4l81 205.06h1.21l77-203.53a23.52 23.52 0 0 1 44.45 15.27L171.2 368.44C152.65 415.66 134.08 448 77.91 448a139.67 139.67 0 0 1-23.81-1.95 21.31 21.31 0 0 1 6.9-41.77c.66.06 10.91.66 13.86.66 30.47 0 43.74-18.94 58.07-59.41z"]},Sx={prefix:"fab",iconName:"yandex",icon:[256,512,[],"f413","M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z"]},wx={prefix:"fab",iconName:"yandex-international",icon:[320,512,[],"f414","M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z"]},kx={prefix:"fab",iconName:"yarn",icon:[496,512,[],"f7e3","M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z"]},Tx={prefix:"fab",iconName:"yelp",icon:[384,512,[],"f1e9","M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z"]},Px={prefix:"fab",iconName:"yoast",icon:[448,512,[],"f2b1","M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z"]},Ex={prefix:"fab",iconName:"youtube",icon:[576,512,[],"f167","M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"]},Dx={prefix:"fab",iconName:"youtube-square",icon:[448,512,[],"f431","M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z"]},Ox={prefix:"fab",iconName:"zhihu",icon:[640,512,[],"f63f","M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z"]},q2={fa500px:md,faAccessibleIcon:vd,faAccusoft:zd,faAcquisitionsIncorporated:pd,faAdn:dd,faAdversal:ud,faAffiliatetheme:Md,faAirbnb:Cd,faAlgolia:Hd,faAlipay:gd,faAmazon:Vd,faAmazonPay:Ld,faAmilia:xd,faAndroid:bd,faAngellist:Nd,faAngrycreative:Ad,faAngular:yd,faAppStore:Sd,faAppStoreIos:wd,faApper:kd,faApple:Td,faApplePay:Pd,faArtstation:Ed,faAsymmetrik:Dd,faAtlassian:Od,faAudible:Id,faAutoprefixer:Bd,faAvianex:Rd,faAviato:Fd,faAws:Zd,faBandcamp:jd,faBattleNet:qd,faBehance:Ud,faBehanceSquare:Wd,faBimobject:Gd,faBitbucket:_d,faBitcoin:$d,faBity:Yd,faBlackTie:Xd,faBlackberry:Kd,faBlogger:Qd,faBloggerB:Jd,faBluetooth:cu,faBluetoothB:au,faBootstrap:eu,faBtc:iu,faBuffer:nu,faBuromobelexperte:ou,faBuyNLarge:tu,faBuysellads:ru,faCanadianMapleLeaf:lu,faCcAmazonPay:fu,faCcAmex:su,faCcApplePay:hu,faCcDinersClub:mu,faCcDiscover:vu,faCcJcb:zu,faCcMastercard:pu,faCcPaypal:du,faCcStripe:uu,faCcVisa:Mu,faCentercode:Cu,faCentos:Hu,faChrome:gu,faChromecast:Vu,faCloudflare:Lu,faCloudscale:xu,faCloudsmith:bu,faCloudversify:Nu,faCodepen:Au,faCodiepie:yu,faConfluence:Su,faConnectdevelop:wu,faContao:ku,faCottonBureau:Tu,faCpanel:Pu,faCreativeCommons:Eu,faCreativeCommonsBy:Du,faCreativeCommonsNc:Ou,faCreativeCommonsNcEu:Iu,faCreativeCommonsNcJp:Bu,faCreativeCommonsNd:Ru,faCreativeCommonsPd:Fu,faCreativeCommonsPdAlt:Zu,faCreativeCommonsRemix:ju,faCreativeCommonsSa:qu,faCreativeCommonsSampling:Uu,faCreativeCommonsSamplingPlus:Wu,faCreativeCommonsShare:Gu,faCreativeCommonsZero:_u,faCriticalRole:$u,faCss3:Yu,faCss3Alt:Xu,faCuttlefish:Ku,faDAndD:Qu,faDAndDBeyond:Ju,faDailymotion:cM,faDashcube:aM,faDeezer:eM,faDelicious:iM,faDeploydog:nM,faDeskpro:oM,faDev:tM,faDeviantart:rM,faDhl:lM,faDiaspora:fM,faDigg:sM,faDigitalOcean:hM,faDiscord:mM,faDiscourse:vM,faDochub:zM,faDocker:pM,faDraft2digital:dM,faDribbble:uM,faDribbbleSquare:MM,faDropbox:CM,faDrupal:HM,faDyalog:gM,faEarlybirds:VM,faEbay:LM,faEdge:xM,faEdgeLegacy:bM,faElementor:NM,faEllo:AM,faEmber:yM,faEmpire:SM,faEnvira:wM,faErlang:kM,faEthereum:TM,faEtsy:PM,faEvernote:EM,faExpeditedssl:DM,faFacebook:OM,faFacebookF:IM,faFacebookMessenger:BM,faFacebookSquare:RM,faFantasyFlightGames:FM,faFedex:ZM,faFedora:jM,faFigma:qM,faFirefox:UM,faFirefoxBrowser:WM,faFirstOrder:GM,faFirstOrderAlt:_M,faFirstdraft:$M,faFlickr:YM,faFlipboard:XM,faFly:KM,faFontAwesome:QM,faFontAwesomeAlt:JM,faFontAwesomeFlag:cC,faFontAwesomeLogoFull:aC,faFonticons:eC,faFonticonsFi:iC,faFortAwesome:nC,faFortAwesomeAlt:oC,faForumbee:tC,faFoursquare:rC,faFreeCodeCamp:lC,faFreebsd:fC,faFulcrum:sC,faGalacticRepublic:hC,faGalacticSenate:mC,faGetPocket:vC,faGg:zC,faGgCircle:pC,faGit:dC,faGitAlt:uC,faGitSquare:MC,faGithub:CC,faGithubAlt:HC,faGithubSquare:gC,faGitkraken:VC,faGitlab:LC,faGitter:xC,faGlide:bC,faGlideG:NC,faGofore:AC,faGoodreads:yC,faGoodreadsG:SC,faGoogle:wC,faGoogleDrive:kC,faGooglePay:TC,faGooglePlay:PC,faGooglePlus:EC,faGooglePlusG:DC,faGooglePlusSquare:OC,faGoogleWallet:IC,faGratipay:BC,faGrav:RC,faGripfire:FC,faGrunt:ZC,faGuilded:jC,faGulp:qC,faHackerNews:UC,faHackerNewsSquare:WC,faHackerrank:GC,faHips:_C,faHireAHelper:$C,faHive:YC,faHooli:XC,faHornbill:KC,faHotjar:QC,faHouzz:JC,faHtml5:cH,faHubspot:aH,faIdeal:eH,faImdb:iH,faInnosoft:nH,faInstagram:oH,faInstagramSquare:tH,faInstalod:rH,faIntercom:lH,faInternetExplorer:fH,faInvision:sH,faIoxhost:hH,faItchIo:mH,faItunes:vH,faItunesNote:zH,faJava:pH,faJediOrder:dH,faJenkins:uH,faJira:MH,faJoget:CH,faJoomla:HH,faJs:gH,faJsSquare:VH,faJsfiddle:LH,faKaggle:xH,faKeybase:bH,faKeycdn:NH,faKickstarter:AH,faKickstarterK:yH,faKorvue:SH,faLaravel:wH,faLastfm:kH,faLastfmSquare:TH,faLeanpub:PH,faLess:EH,faLine:DH,faLinkedin:OH,faLinkedinIn:IH,faLinode:BH,faLinux:RH,faLyft:FH,faMagento:ZH,faMailchimp:jH,faMandalorian:qH,faMarkdown:UH,faMastodon:WH,faMaxcdn:GH,faMdb:_H,faMedapps:$H,faMedium:YH,faMediumM:XH,faMedrt:KH,faMeetup:QH,faMegaport:JH,faMendeley:cg,faMicroblog:ag,faMicrosoft:eg,faMix:ig,faMixcloud:ng,faMixer:og,faMizuni:tg,faModx:rg,faMonero:lg,faNapster:fg,faNeos:sg,faNimblr:hg,faNode:mg,faNodeJs:vg,faNpm:zg,faNs8:pg,faNutritionix:dg,faOctopusDeploy:ug,faOdnoklassniki:Mg,faOdnoklassnikiSquare:Cg,faOldRepublic:Hg,faOpencart:gg,faOpenid:Vg,faOpera:Lg,faOptinMonster:xg,faOrcid:bg,faOsi:Ng,faPage4:Ag,faPagelines:yg,faPalfed:Sg,faPatreon:wg,faPaypal:kg,faPennyArcade:Tg,faPerbyte:Pg,faPeriscope:Eg,faPhabricator:Dg,faPhoenixFramework:Og,faPhoenixSquadron:Ig,faPhp:Bg,faPiedPiper:Rg,faPiedPiperAlt:Fg,faPiedPiperHat:Zg,faPiedPiperPp:jg,faPiedPiperSquare:qg,faPinterest:Ug,faPinterestP:Wg,faPinterestSquare:Gg,faPlaystation:_g,faProductHunt:$g,faPushed:Yg,faPython:Xg,faQq:Kg,faQuinscape:Qg,faQuora:Jg,faRProject:cV,faRaspberryPi:aV,faRavelry:eV,faReact:iV,faReacteurope:nV,faReadme:oV,faRebel:tV,faRedRiver:rV,faReddit:lV,faRedditAlien:fV,faRedditSquare:sV,faRedhat:hV,faRenren:mV,faReplyd:vV,faResearchgate:zV,faResolving:pV,faRev:dV,faRocketchat:uV,faRockrms:MV,faRust:CV,faSafari:HV,faSalesforce:gV,faSass:VV,faSchlix:LV,faScribd:xV,faSearchengin:bV,faSellcast:NV,faSellsy:AV,faServicestack:yV,faShirtsinbulk:SV,faShopify:wV,faShopware:kV,faSimplybuilt:TV,faSistrix:PV,faSith:EV,faSketch:DV,faSkyatlas:OV,faSkype:IV,faSlack:BV,faSlackHash:RV,faSlideshare:FV,faSnapchat:ZV,faSnapchatGhost:jV,faSnapchatSquare:qV,faSoundcloud:UV,faSourcetree:WV,faSpeakap:GV,faSpeakerDeck:_V,faSpotify:$V,faSquarespace:YV,faStackExchange:XV,faStackOverflow:KV,faStackpath:QV,faStaylinked:JV,faSteam:cL,faSteamSquare:aL,faSteamSymbol:eL,faStickerMule:iL,faStrava:nL,faStripe:oL,faStripeS:tL,faStudiovinari:rL,faStumbleupon:lL,faStumbleuponCircle:fL,faSuperpowers:sL,faSupple:hL,faSuse:mL,faSwift:vL,faSymfony:zL,faTeamspeak:pL,faTelegram:dL,faTelegramPlane:uL,faTencentWeibo:ML,faTheRedYeti:CL,faThemeco:HL,faThemeisle:gL,faThinkPeaks:VL,faTiktok:LL,faTradeFederation:xL,faTrello:bL,faTumblr:NL,faTumblrSquare:AL,faTwitch:yL,faTwitter:SL,faTwitterSquare:wL,faTypo3:kL,faUber:TL,faUbuntu:PL,faUikit:EL,faUmbraco:DL,faUncharted:OL,faUniregistry:IL,faUnity:BL,faUnsplash:RL,faUntappd:FL,faUps:ZL,faUsb:jL,faUsps:qL,faUssunnah:UL,faVaadin:WL,faViacoin:GL,faViadeo:_L,faViadeoSquare:$L,faViber:YL,faVimeo:XL,faVimeoSquare:KL,faVimeoV:QL,faVine:JL,faVk:cx,faVnv:ax,faVuejs:ex,faWatchmanMonitoring:ix,faWaze:nx,faWeebly:ox,faWeibo:tx,faWeixin:rx,faWhatsapp:lx,faWhatsappSquare:fx,faWhmcs:sx,faWikipediaW:hx,faWindows:mx,faWix:vx,faWizardsOfTheCoast:zx,faWodu:px,faWolfPackBattalion:dx,faWordpress:ux,faWordpressSimple:Mx,faWpbeginner:Cx,faWpexplorer:Hx,faWpforms:gx,faWpressr:Vx,faXbox:Lx,faXing:xx,faXingSquare:bx,faYCombinator:Nx,faYahoo:Ax,faYammer:yx,faYandex:Sx,faYandexInternational:wx,faYarn:kx,faYelp:Tx,faYoast:Px,faYoutube:Ex,faYoutubeSquare:Dx,faZhihu:Ox};function j1(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?j1=function(c){return typeof c}:j1=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},j1(a)}function Ix(a,c){if(!(a instanceof c))throw new TypeError("Cannot call a class as a function")}function C3(a,c){for(var e=0;e-1;n--){var o=e[n],r=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(r)>-1&&(i=o)}return U.head.insertBefore(c,i),a}}var tb="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function z2(){for(var a=12,c="";a-- >0;)c+=tb[Math.random()*62|0];return c}function I3(a){return"".concat(a).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function rb(a){return Object.keys(a||{}).reduce(function(c,e){return c+"".concat(e,'="').concat(I3(a[e]),'" ')},"").trim()}function B3(a){return Object.keys(a||{}).reduce(function(c,e){return c+"".concat(e,": ").concat(a[e],";")},"")}function R3(a){return a.size!==k1.size||a.x!==k1.x||a.y!==k1.y||a.rotate!==k1.rotate||a.flipX||a.flipY}function F3(a){var c=a.transform,e=a.containerWidth,i=a.iconWidth,n={transform:"translate(".concat(e/2," 256)")},o="translate(".concat(c.x*32,", ").concat(c.y*32,") "),r="scale(".concat(c.size/16*(c.flipX?-1:1),", ").concat(c.size/16*(c.flipY?-1:1),") "),t="rotate(".concat(c.rotate," 0 0)"),l={transform:"".concat(o," ").concat(r," ").concat(t)},f={transform:"translate(".concat(i/2*-1," -256)")};return{outer:n,inner:l,path:f}}var K2={x:0,y:0,width:"100%",height:"100%"};function Z3(a){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return a.attributes&&(a.attributes.fill||c)&&(a.attributes.fill="black"),a}function lb(a){return a.tag==="g"?a.children:[a]}function fb(a){var c=a.children,e=a.attributes,i=a.main,n=a.mask,o=a.maskId,r=a.transform,t=i.width,l=i.icon,f=n.width,s=n.icon,h=F3({transform:r,containerWidth:f,iconWidth:t}),m={tag:"rect",attributes:b({},K2,{fill:"white"})},z=l.children?{children:l.children.map(Z3)}:{},v={tag:"g",attributes:b({},h.inner),children:[Z3(b({tag:l.tag,attributes:b({},l.attributes,h.path)},z))]},M={tag:"g",attributes:b({},h.outer),children:[v]},p="mask-".concat(o||z2()),C="clip-".concat(o||z2()),H={tag:"mask",attributes:b({},K2,{id:p,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[m,M]},L={tag:"defs",children:[{tag:"clipPath",attributes:{id:C},children:lb(s)},H]};return c.push(L,{tag:"rect",attributes:b({fill:"currentColor","clip-path":"url(#".concat(C,")"),mask:"url(#".concat(p,")")},K2)}),{children:c,attributes:e}}function sb(a){var c=a.children,e=a.attributes,i=a.main,n=a.transform,o=a.styles,r=B3(o);if(r.length>0&&(e.style=r),R3(n)){var t=F3({transform:n,containerWidth:i.width,iconWidth:i.width});c.push({tag:"g",attributes:b({},t.outer),children:[{tag:"g",attributes:b({},t.inner),children:[{tag:i.icon.tag,children:i.icon.children,attributes:b({},i.icon.attributes,t.path)}]}]})}else c.push(i.icon);return{children:c,attributes:e}}function hb(a){var c=a.children,e=a.main,i=a.mask,n=a.attributes,o=a.styles,r=a.transform;if(R3(r)&&e.found&&!i.found){var t=e.width,l=e.height,f={x:t/l/2,y:.5};n.style=B3(b({},o,{"transform-origin":"".concat(f.x+r.x/16,"em ").concat(f.y+r.y/16,"em")}))}return[{tag:"svg",attributes:n,children:c}]}function mb(a){var c=a.prefix,e=a.iconName,i=a.children,n=a.attributes,o=a.symbol,r=o===!0?"".concat(c,"-").concat(G.familyPrefix,"-").concat(e):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:b({},n,{id:r}),children:i}]}]}function vb(a){var c=a.icons,e=c.main,i=c.mask,n=a.prefix,o=a.iconName,r=a.transform,t=a.symbol,l=a.title,f=a.maskId,s=a.titleId,h=a.extra,m=a.watchable,z=m===void 0?!1:m,v=i.found?i:e,M=v.width,p=v.height,C=n==="fak",H=C?"":"fa-w-".concat(Math.ceil(M/p*16)),L=[G.replacementClass,o?"".concat(G.familyPrefix,"-").concat(o):"",H].filter(function(S){return h.classes.indexOf(S)===-1}).filter(function(S){return S!==""||!!S}).concat(h.classes).join(" "),d={children:[],attributes:b({},h.attributes,{"data-prefix":n,"data-icon":o,class:L,role:h.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(M," ").concat(p)})},N=C&&!~h.classes.indexOf("fa-fw")?{width:"".concat(M/p*16*.0625,"em")}:{};z&&(d.attributes[Wx]=""),l&&d.children.push({tag:"title",attributes:{id:d.attributes["aria-labelledby"]||"title-".concat(s||z2())},children:[l]});var V=b({},d,{prefix:n,iconName:o,main:e,mask:i,maskId:f,transform:r,symbol:t,styles:b({},N,h.styles)}),y=i.found&&e.found?fb(V):sb(V),A=y.children,E=y.attributes;return V.children=A,V.attributes=E,t?mb(V):hb(V)}var j3=function(){},Bw=G.measurePerformance&&s2&&s2.mark&&s2.measure?s2:{mark:j3,measure:j3};var zb=function(c,e){return function(i,n,o,r){return c.call(e,i,n,o,r)}},Q2=function(c,e,i,n){var o=Object.keys(c),r=o.length,t=n!==void 0?zb(e,n):e,l,f,s;for(i===void 0?(l=1,s=c[o[0]]):(l=0,s=i);l2&&arguments[2]!==void 0?arguments[2]:{},i=e.skipHooks,n=i===void 0?!1:i,o=Object.keys(c).reduce(function(r,t){var l=c[t],f=!!l.icon;return f?r[l.iconName]=l.icon:r[t]=l,r},{});typeof a1.hooks.addPack=="function"&&!n?a1.hooks.addPack(a,o):a1.styles[a]=b({},a1.styles[a]||{},o),a==="fas"&&q3("fa",c)}var U3=a1.styles,pb=a1.shims,db={},ub={},Mb={},W3=function(){var c=function(n){return Q2(U3,function(o,r,t){return o[t]=Q2(r,n,{}),o},{})};db=c(function(i,n,o){return n[3]&&(i[n[3]]=o),i}),ub=c(function(i,n,o){var r=n[2];return i[o]=o,r.forEach(function(t){i[t]=o}),i});var e="far"in U3;Mb=Q2(pb,function(i,n){var o=n[0],r=n[1],t=n[2];return r==="far"&&!e&&(r="fas"),i[o]={prefix:r,iconName:t},i},{})};W3();var Rw=a1.styles;function G3(a,c,e){if(a&&a[c]&&a[c][e])return{prefix:c,iconName:e,icon:a[c][e]}}function _3(a){var c=a.tag,e=a.attributes,i=e===void 0?{}:e,n=a.children,o=n===void 0?[]:n;return typeof a=="string"?I3(a):"<".concat(c," ").concat(rb(i),">").concat(o.map(_3).join(""),"")}function J2(a){this.name="MissingIcon",this.message=a||"Icon unavailable",this.stack=new Error().stack}J2.prototype=Object.create(Error.prototype);J2.prototype.constructor=J2;var p2={fill:"currentColor"},$3={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},Fw={tag:"path",attributes:b({},p2,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})},c4=b({},$3,{attributeName:"opacity"}),Zw={tag:"circle",attributes:b({},p2,{cx:"256",cy:"364",r:"28"}),children:[{tag:"animate",attributes:b({},$3,{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:b({},c4,{values:"1;0;1;1;0;1;"})}]},jw={tag:"path",attributes:b({},p2,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:[{tag:"animate",attributes:b({},c4,{values:"1;0;0;0;0;1;"})}]},qw={tag:"path",attributes:b({},p2,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:b({},c4,{values:"0;0;1;1;0;0;"})}]};var Uw=a1.styles;function Y3(a){var c=a[0],e=a[1],i=a.slice(4),n=H3(i,1),o=n[0],r=null;return Array.isArray(o)?r={tag:"g",attributes:{class:"".concat(G.familyPrefix,"-").concat(g1.GROUP)},children:[{tag:"path",attributes:{class:"".concat(G.familyPrefix,"-").concat(g1.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(G.familyPrefix,"-").concat(g1.PRIMARY),fill:"currentColor",d:o[1]}}]}:r={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:c,height:e,icon:r}}var Ww=a1.styles;var Cb=`svg:not(:root).svg-inline--fa { + overflow: visible; } -var attrs; -var _default = { - familyPrefix: DEFAULT_FAMILY_PREFIX, - replacementClass: DEFAULT_REPLACEMENT_CLASS, - autoReplaceSvg: true, - autoAddCss: true, - autoA11y: true, - searchPseudoElements: false, - observeMutations: true, - mutateApproach: "async", - keepOriginalSource: true, - measurePerformance: false, - showMissingIcons: true -}; -var _config = _objectSpread({}, _default, initial); -if (!_config.autoReplaceSvg) - _config.observeMutations = false; -var config = _objectSpread({}, _config); -WINDOW.FontAwesomeConfig = config; -var w = WINDOW || {}; -if (!w[NAMESPACE_IDENTIFIER]) - w[NAMESPACE_IDENTIFIER] = {}; -if (!w[NAMESPACE_IDENTIFIER].styles) - w[NAMESPACE_IDENTIFIER].styles = {}; -if (!w[NAMESPACE_IDENTIFIER].hooks) - w[NAMESPACE_IDENTIFIER].hooks = {}; -if (!w[NAMESPACE_IDENTIFIER].shims) - w[NAMESPACE_IDENTIFIER].shims = []; -var namespace = w[NAMESPACE_IDENTIFIER]; -var functions = []; -var listener = function listener2() { - DOCUMENT.removeEventListener("DOMContentLoaded", listener2); - loaded = 1; - functions.map(function(fn2) { - return fn2(); - }); -}; -var loaded = false; -if (IS_DOM) { - loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState); - if (!loaded) - DOCUMENT.addEventListener("DOMContentLoaded", listener); -} -var PENDING = "pending"; -var SETTLED = "settled"; -var FULFILLED = "fulfilled"; -var REJECTED = "rejected"; -var NOOP = function NOOP2() { -}; -var isNode = typeof global !== "undefined" && typeof global.process !== "undefined" && typeof global.process.emit === "function"; -var asyncSetTimer = typeof setImmediate === "undefined" ? setTimeout : setImmediate; -var asyncQueue = []; -var asyncTimer; -function asyncFlush() { - for (var i = 0; i < asyncQueue.length; i++) { - asyncQueue[i][0](asyncQueue[i][1]); - } - asyncQueue = []; - asyncTimer = false; -} -function asyncCall(callback, arg) { - asyncQueue.push([callback, arg]); - if (!asyncTimer) { - asyncTimer = true; - asyncSetTimer(asyncFlush, 0); - } -} -function invokeResolver(resolver, promise) { - function resolvePromise(value) { - resolve(promise, value); - } - function rejectPromise(reason) { - reject(promise, reason); - } - try { - resolver(resolvePromise, rejectPromise); - } catch (e) { - rejectPromise(e); - } -} -function invokeCallback(subscriber) { - var owner = subscriber.owner; - var settled = owner._state; - var value = owner._data; - var callback = subscriber[settled]; - var promise = subscriber.then; - if (typeof callback === "function") { - settled = FULFILLED; - try { - value = callback(value); - } catch (e) { - reject(promise, e); - } - } - if (!handleThenable(promise, value)) { - if (settled === FULFILLED) { - resolve(promise, value); - } - if (settled === REJECTED) { - reject(promise, value); - } - } -} -function handleThenable(promise, value) { - var resolved; - try { - if (promise === value) { - throw new TypeError("A promises callback cannot return that same promise."); - } - if (value && (typeof value === "function" || _typeof(value) === "object")) { - var then2 = value.then; - if (typeof then2 === "function") { - then2.call(value, function(val) { - if (!resolved) { - resolved = true; - if (value === val) { - fulfill(promise, val); - } else { - resolve(promise, val); - } - } - }, function(reason) { - if (!resolved) { - resolved = true; - reject(promise, reason); - } - }); - return true; - } - } - } catch (e) { - if (!resolved) { - reject(promise, e); - } - return true; - } - return false; -} -function resolve(promise, value) { - if (promise === value || !handleThenable(promise, value)) { - fulfill(promise, value); - } -} -function fulfill(promise, value) { - if (promise._state === PENDING) { - promise._state = SETTLED; - promise._data = value; - asyncCall(publishFulfillment, promise); - } -} -function reject(promise, reason) { - if (promise._state === PENDING) { - promise._state = SETTLED; - promise._data = reason; - asyncCall(publishRejection, promise); - } -} -function publish(promise) { - promise._then = promise._then.forEach(invokeCallback); -} -function publishFulfillment(promise) { - promise._state = FULFILLED; - publish(promise); -} -function publishRejection(promise) { - promise._state = REJECTED; - publish(promise); - if (!promise._handled && isNode) { - global.process.emit("unhandledRejection", promise._data, promise); - } -} -function notifyRejectionHandled(promise) { - global.process.emit("rejectionHandled", promise); + +.svg-inline--fa { + display: inline-block; + font-size: inherit; + height: 1em; + overflow: visible; + vertical-align: -0.125em; } -function P(resolver) { - if (typeof resolver !== "function") { - throw new TypeError("Promise resolver " + resolver + " is not a function"); - } - if (this instanceof P === false) { - throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); - } - this._then = []; - invokeResolver(resolver, this); +.svg-inline--fa.fa-lg { + vertical-align: -0.225em; } -P.prototype = { - constructor: P, - _state: PENDING, - _then: null, - _data: void 0, - _handled: false, - then: function then(onFulfillment, onRejection) { - var subscriber = { - owner: this, - then: new this.constructor(NOOP), - fulfilled: onFulfillment, - rejected: onRejection - }; - if ((onRejection || onFulfillment) && !this._handled) { - this._handled = true; - if (this._state === REJECTED && isNode) { - asyncCall(notifyRejectionHandled, this); - } - } - if (this._state === FULFILLED || this._state === REJECTED) { - asyncCall(invokeCallback, subscriber); - } else { - this._then.push(subscriber); - } - return subscriber.then; - }, - catch: function _catch(onRejection) { - return this.then(null, onRejection); - } -}; -P.all = function(promises) { - if (!Array.isArray(promises)) { - throw new TypeError("You must pass an array to Promise.all()."); - } - return new P(function(resolve2, reject2) { - var results = []; - var remaining = 0; - function resolver(index) { - remaining++; - return function(value) { - results[index] = value; - if (!--remaining) { - resolve2(results); - } - }; - } - for (var i = 0, promise; i < promises.length; i++) { - promise = promises[i]; - if (promise && typeof promise.then === "function") { - promise.then(resolver(i), reject2); - } else { - results[i] = promise; - } - } - if (!remaining) { - resolve2(results); - } - }); -}; -P.race = function(promises) { - if (!Array.isArray(promises)) { - throw new TypeError("You must pass an array to Promise.race()."); - } - return new P(function(resolve2, reject2) { - for (var i = 0, promise; i < promises.length; i++) { - promise = promises[i]; - if (promise && typeof promise.then === "function") { - promise.then(resolve2, reject2); - } else { - resolve2(promise); - } - } - }); -}; -P.resolve = function(value) { - if (value && _typeof(value) === "object" && value.constructor === P) { - return value; - } - return new P(function(resolve2) { - resolve2(value); - }); -}; -P.reject = function(reason) { - return new P(function(resolve2, reject2) { - reject2(reason); - }); -}; -var meaninglessTransform = { - size: 16, - x: 0, - y: 0, - rotate: 0, - flipX: false, - flipY: false -}; -function insertCss(css2) { - if (!css2 || !IS_DOM) { - return; - } - var style = DOCUMENT.createElement("style"); - style.setAttribute("type", "text/css"); - style.innerHTML = css2; - var headChildren = DOCUMENT.head.childNodes; - var beforeChild = null; - for (var i = headChildren.length - 1; i > -1; i--) { - var child = headChildren[i]; - var tagName = (child.tagName || "").toUpperCase(); - if (["STYLE", "LINK"].indexOf(tagName) > -1) { - beforeChild = child; - } - } - DOCUMENT.head.insertBefore(style, beforeChild); - return css2; +.svg-inline--fa.fa-w-1 { + width: 0.0625em; } -var idPool = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; -function nextUniqueId() { - var size = 12; - var id = ""; - while (size-- > 0) { - id += idPool[Math.random() * 62 | 0]; - } - return id; +.svg-inline--fa.fa-w-2 { + width: 0.125em; } -function htmlEscape(str) { - return "".concat(str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(//g, ">"); +.svg-inline--fa.fa-w-3 { + width: 0.1875em; } -function joinAttributes(attributes) { - return Object.keys(attributes || {}).reduce(function(acc, attributeName) { - return acc + "".concat(attributeName, '="').concat(htmlEscape(attributes[attributeName]), '" '); - }, "").trim(); +.svg-inline--fa.fa-w-4 { + width: 0.25em; } -function joinStyles(styles2) { - return Object.keys(styles2 || {}).reduce(function(acc, styleName) { - return acc + "".concat(styleName, ": ").concat(styles2[styleName], ";"); - }, ""); +.svg-inline--fa.fa-w-5 { + width: 0.3125em; } -function transformIsMeaningful(transform) { - return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY; +.svg-inline--fa.fa-w-6 { + width: 0.375em; } -function transformForSvg(_ref2) { - var transform = _ref2.transform, containerWidth = _ref2.containerWidth, iconWidth = _ref2.iconWidth; - var outer = { - transform: "translate(".concat(containerWidth / 2, " 256)") - }; - var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") "); - var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") "); - var innerRotate = "rotate(".concat(transform.rotate, " 0 0)"); - var inner = { - transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate) - }; - var path = { - transform: "translate(".concat(iconWidth / 2 * -1, " -256)") - }; - return { - outer, - inner, - path - }; +.svg-inline--fa.fa-w-7 { + width: 0.4375em; } -var ALL_SPACE = { - x: 0, - y: 0, - width: "100%", - height: "100%" -}; -function fillBlack(abstract) { - var force = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - if (abstract.attributes && (abstract.attributes.fill || force)) { - abstract.attributes.fill = "black"; - } - return abstract; +.svg-inline--fa.fa-w-8 { + width: 0.5em; } -function deGroup(abstract) { - if (abstract.tag === "g") { - return abstract.children; - } else { - return [abstract]; - } +.svg-inline--fa.fa-w-9 { + width: 0.5625em; } -function makeIconMasking(_ref2) { - var children = _ref2.children, attributes = _ref2.attributes, main2 = _ref2.main, mask = _ref2.mask, explicitMaskId = _ref2.maskId, transform = _ref2.transform; - var mainWidth = main2.width, mainPath = main2.icon; - var maskWidth = mask.width, maskPath = mask.icon; - var trans = transformForSvg({ - transform, - containerWidth: maskWidth, - iconWidth: mainWidth - }); - var maskRect = { - tag: "rect", - attributes: _objectSpread({}, ALL_SPACE, { - fill: "white" - }) - }; - var maskInnerGroupChildrenMixin = mainPath.children ? { - children: mainPath.children.map(fillBlack) - } : {}; - var maskInnerGroup = { - tag: "g", - attributes: _objectSpread({}, trans.inner), - children: [fillBlack(_objectSpread({ - tag: mainPath.tag, - attributes: _objectSpread({}, mainPath.attributes, trans.path) - }, maskInnerGroupChildrenMixin))] - }; - var maskOuterGroup = { - tag: "g", - attributes: _objectSpread({}, trans.outer), - children: [maskInnerGroup] - }; - var maskId = "mask-".concat(explicitMaskId || nextUniqueId()); - var clipId = "clip-".concat(explicitMaskId || nextUniqueId()); - var maskTag = { - tag: "mask", - attributes: _objectSpread({}, ALL_SPACE, { - id: maskId, - maskUnits: "userSpaceOnUse", - maskContentUnits: "userSpaceOnUse" - }), - children: [maskRect, maskOuterGroup] - }; - var defs = { - tag: "defs", - children: [{ - tag: "clipPath", - attributes: { - id: clipId - }, - children: deGroup(maskPath) - }, maskTag] - }; - children.push(defs, { - tag: "rect", - attributes: _objectSpread({ - fill: "currentColor", - "clip-path": "url(#".concat(clipId, ")"), - mask: "url(#".concat(maskId, ")") - }, ALL_SPACE) - }); - return { - children, - attributes - }; +.svg-inline--fa.fa-w-10 { + width: 0.625em; } -function makeIconStandard(_ref2) { - var children = _ref2.children, attributes = _ref2.attributes, main2 = _ref2.main, transform = _ref2.transform, styles2 = _ref2.styles; - var styleString = joinStyles(styles2); - if (styleString.length > 0) { - attributes["style"] = styleString; - } - if (transformIsMeaningful(transform)) { - var trans = transformForSvg({ - transform, - containerWidth: main2.width, - iconWidth: main2.width - }); - children.push({ - tag: "g", - attributes: _objectSpread({}, trans.outer), - children: [{ - tag: "g", - attributes: _objectSpread({}, trans.inner), - children: [{ - tag: main2.icon.tag, - children: main2.icon.children, - attributes: _objectSpread({}, main2.icon.attributes, trans.path) - }] - }] - }); - } else { - children.push(main2.icon); - } - return { - children, - attributes - }; +.svg-inline--fa.fa-w-11 { + width: 0.6875em; } -function asIcon(_ref2) { - var children = _ref2.children, main2 = _ref2.main, mask = _ref2.mask, attributes = _ref2.attributes, styles2 = _ref2.styles, transform = _ref2.transform; - if (transformIsMeaningful(transform) && main2.found && !mask.found) { - var width = main2.width, height = main2.height; - var offset2 = { - x: width / height / 2, - y: 0.5 - }; - attributes["style"] = joinStyles(_objectSpread({}, styles2, { - "transform-origin": "".concat(offset2.x + transform.x / 16, "em ").concat(offset2.y + transform.y / 16, "em") - })); - } - return [{ - tag: "svg", - attributes, - children - }]; +.svg-inline--fa.fa-w-12 { + width: 0.75em; } -function asSymbol(_ref2) { - var prefix = _ref2.prefix, iconName = _ref2.iconName, children = _ref2.children, attributes = _ref2.attributes, symbol = _ref2.symbol; - var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol; - return [{ - tag: "svg", - attributes: { - style: "display: none;" - }, - children: [{ - tag: "symbol", - attributes: _objectSpread({}, attributes, { - id - }), - children - }] - }]; +.svg-inline--fa.fa-w-13 { + width: 0.8125em; } -function makeInlineSvgAbstract(params) { - var _params$icons = params.icons, main2 = _params$icons.main, mask = _params$icons.mask, prefix = params.prefix, iconName = params.iconName, transform = params.transform, symbol = params.symbol, title = params.title, maskId = params.maskId, titleId = params.titleId, extra = params.extra, _params$watchable = params.watchable, watchable = _params$watchable === void 0 ? false : _params$watchable; - var _ref2 = mask.found ? mask : main2, width = _ref2.width, height = _ref2.height; - var isUploadedIcon = prefix === "fak"; - var widthClass = isUploadedIcon ? "" : "fa-w-".concat(Math.ceil(width / height * 16)); - var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : "", widthClass].filter(function(c) { - return extra.classes.indexOf(c) === -1; - }).filter(function(c) { - return c !== "" || !!c; - }).concat(extra.classes).join(" "); - var content = { - children: [], - attributes: _objectSpread({}, extra.attributes, { - "data-prefix": prefix, - "data-icon": iconName, - "class": attrClass, - "role": extra.attributes.role || "img", - "xmlns": "http://www.w3.org/2000/svg", - "viewBox": "0 0 ".concat(width, " ").concat(height) - }) - }; - var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf("fa-fw") ? { - width: "".concat(width / height * 16 * 0.0625, "em") - } : {}; - if (watchable) { - content.attributes[DATA_FA_I2SVG] = ""; - } - if (title) - content.children.push({ - tag: "title", - attributes: { - id: content.attributes["aria-labelledby"] || "title-".concat(titleId || nextUniqueId()) - }, - children: [title] - }); - var args = _objectSpread({}, content, { - prefix, - iconName, - main: main2, - mask, - maskId, - transform, - symbol, - styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles) - }); - var _ref22 = mask.found && main2.found ? makeIconMasking(args) : makeIconStandard(args), children = _ref22.children, attributes = _ref22.attributes; - args.children = children; - args.attributes = attributes; - if (symbol) { - return asSymbol(args); - } else { - return asIcon(args); - } +.svg-inline--fa.fa-w-14 { + width: 0.875em; } -var noop$1 = function noop3() { -}; -var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { - mark: noop$1, - measure: noop$1 -}; -var bindInternal4 = function bindInternal42(func, thisContext) { - return function(a, b, c, d) { - return func.call(thisContext, a, b, c, d); - }; -}; -var reduce = function fastReduceObject(subject, fn2, initialValue, thisContext) { - var keys = Object.keys(subject), length = keys.length, iterator = thisContext !== void 0 ? bindInternal4(fn2, thisContext) : fn2, i, key, result; - if (initialValue === void 0) { - i = 1; - result = subject[keys[0]]; - } else { - i = 0; - result = initialValue; - } - for (; i < length; i++) { - key = keys[i]; - result = iterator(result, subject[key], key, subject); - } - return result; -}; -function defineIcons(prefix, icons) { - var params = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; - var normalized = Object.keys(icons).reduce(function(acc, iconName) { - var icon2 = icons[iconName]; - var expanded = !!icon2.icon; - if (expanded) { - acc[icon2.iconName] = icon2.icon; - } else { - acc[iconName] = icon2; - } - return acc; - }, {}); - if (typeof namespace.hooks.addPack === "function" && !skipHooks) { - namespace.hooks.addPack(prefix, normalized); - } else { - namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized); - } - if (prefix === "fas") { - defineIcons("fa", icons); - } +.svg-inline--fa.fa-w-15 { + width: 0.9375em; } -var styles = namespace.styles; -var shims = namespace.shims; -var _byUnicode = {}; -var _byLigature = {}; -var _byOldName = {}; -var build = function build2() { - var lookup = function lookup2(reducer) { - return reduce(styles, function(o, style, prefix) { - o[prefix] = reduce(style, reducer, {}); - return o; - }, {}); - }; - _byUnicode = lookup(function(acc, icon2, iconName) { - if (icon2[3]) { - acc[icon2[3]] = iconName; - } - return acc; - }); - _byLigature = lookup(function(acc, icon2, iconName) { - var ligatures = icon2[2]; - acc[iconName] = iconName; - ligatures.forEach(function(ligature) { - acc[ligature] = iconName; - }); - return acc; - }); - var hasRegular = "far" in styles; - _byOldName = reduce(shims, function(acc, shim) { - var oldName = shim[0]; - var prefix = shim[1]; - var iconName = shim[2]; - if (prefix === "far" && !hasRegular) { - prefix = "fas"; - } - acc[oldName] = { - prefix, - iconName - }; - return acc; - }, {}); -}; -build(); -var styles$1 = namespace.styles; -function iconFromMapping(mapping, prefix, iconName) { - if (mapping && mapping[prefix] && mapping[prefix][iconName]) { - return { - prefix, - iconName, - icon: mapping[prefix][iconName] - }; - } +.svg-inline--fa.fa-w-16 { + width: 1em; } -function toHtml(abstractNodes) { - var tag = abstractNodes.tag, _abstractNodes$attrib = abstractNodes.attributes, attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib, _abstractNodes$childr = abstractNodes.children, children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr; - if (typeof abstractNodes === "string") { - return htmlEscape(abstractNodes); - } else { - return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(""), ""); - } +.svg-inline--fa.fa-w-17 { + width: 1.0625em; } -function MissingIcon(error) { - this.name = "MissingIcon"; - this.message = error || "Icon unavailable"; - this.stack = new Error().stack; +.svg-inline--fa.fa-w-18 { + width: 1.125em; } -MissingIcon.prototype = Object.create(Error.prototype); -MissingIcon.prototype.constructor = MissingIcon; -var FILL = { - fill: "currentColor" -}; -var ANIMATION_BASE = { - attributeType: "XML", - repeatCount: "indefinite", - dur: "2s" -}; -var RING = { - tag: "path", - attributes: _objectSpread({}, FILL, { - d: "M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z" - }) -}; -var OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, { - attributeName: "opacity" -}); -var DOT = { - tag: "circle", - attributes: _objectSpread({}, FILL, { - cx: "256", - cy: "364", - r: "28" - }), - children: [{ - tag: "animate", - attributes: _objectSpread({}, ANIMATION_BASE, { - attributeName: "r", - values: "28;14;28;28;14;28;" - }) - }, { - tag: "animate", - attributes: _objectSpread({}, OPACITY_ANIMATE, { - values: "1;0;1;1;0;1;" - }) - }] -}; -var QUESTION = { - tag: "path", - attributes: _objectSpread({}, FILL, { - opacity: "1", - d: "M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z" - }), - children: [{ - tag: "animate", - attributes: _objectSpread({}, OPACITY_ANIMATE, { - values: "1;0;0;0;0;1;" - }) - }] -}; -var EXCLAMATION = { - tag: "path", - attributes: _objectSpread({}, FILL, { - opacity: "0", - d: "M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z" - }), - children: [{ - tag: "animate", - attributes: _objectSpread({}, OPACITY_ANIMATE, { - values: "0;0;1;1;0;0;" - }) - }] -}; -var styles$2 = namespace.styles; -function asFoundIcon(icon2) { - var width = icon2[0]; - var height = icon2[1]; - var _icon$slice = icon2.slice(4), _icon$slice2 = _slicedToArray(_icon$slice, 1), vectorData = _icon$slice2[0]; - var element = null; - if (Array.isArray(vectorData)) { - element = { - tag: "g", - attributes: { - class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP) - }, - children: [{ - tag: "path", - attributes: { - class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY), - fill: "currentColor", - d: vectorData[0] - } - }, { - tag: "path", - attributes: { - class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY), - fill: "currentColor", - d: vectorData[1] - } - }] - }; - } else { - element = { - tag: "path", - attributes: { - fill: "currentColor", - d: vectorData - } - }; - } - return { - found: true, - width, - height, - icon: element - }; +.svg-inline--fa.fa-w-19 { + width: 1.1875em; } -var styles$3 = namespace.styles; -var baseStyles = 'svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}'; -function css() { - var dfp = DEFAULT_FAMILY_PREFIX; - var drc = DEFAULT_REPLACEMENT_CLASS; - var fp = config.familyPrefix; - var rc = config.replacementClass; - var s = baseStyles; - if (fp !== dfp || rc !== drc) { - var dPatt = new RegExp("\\.".concat(dfp, "\\-"), "g"); - var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), "g"); - var rPatt = new RegExp("\\.".concat(drc), "g"); - s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc)); - } - return s; +.svg-inline--fa.fa-w-20 { + width: 1.25em; } -var Library = /* @__PURE__ */ function() { - function Library2() { - _classCallCheck(this, Library2); - this.definitions = {}; - } - _createClass(Library2, [{ - key: "add", - value: function add() { - var _this = this; - for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) { - definitions[_key] = arguments[_key]; - } - var additions = definitions.reduce(this._pullDefinitions, {}); - Object.keys(additions).forEach(function(key) { - _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]); - defineIcons(key, additions[key]); - build(); - }); - } - }, { - key: "reset", - value: function reset() { - this.definitions = {}; - } - }, { - key: "_pullDefinitions", - value: function _pullDefinitions(additions, definition) { - var normalized = definition.prefix && definition.iconName && definition.icon ? { - 0: definition - } : definition; - Object.keys(normalized).map(function(key) { - var _normalized$key = normalized[key], prefix = _normalized$key.prefix, iconName = _normalized$key.iconName, icon2 = _normalized$key.icon; - if (!additions[prefix]) - additions[prefix] = {}; - additions[prefix][iconName] = icon2; - }); - return additions; - } - }]); - return Library2; -}(); -function ensureCss() { - if (config.autoAddCss && !_cssInserted) { - insertCss(css()); - _cssInserted = true; - } +.svg-inline--fa.fa-pull-left { + margin-right: 0.3em; + width: auto; } -function apiObject(val, abstractCreator) { - Object.defineProperty(val, "abstract", { - get: abstractCreator - }); - Object.defineProperty(val, "html", { - get: function get() { - return val.abstract.map(function(a) { - return toHtml(a); - }); - } - }); - Object.defineProperty(val, "node", { - get: function get() { - if (!IS_DOM) - return; - var container = DOCUMENT.createElement("div"); - container.innerHTML = val.html; - return container.children; - } - }); - return val; +.svg-inline--fa.fa-pull-right { + margin-left: 0.3em; + width: auto; } -function findIconDefinition(iconLookup) { - var _iconLookup$prefix = iconLookup.prefix, prefix = _iconLookup$prefix === void 0 ? "fa" : _iconLookup$prefix, iconName = iconLookup.iconName; - if (!iconName) - return; - return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName); +.svg-inline--fa.fa-border { + height: 1.5em; } -function resolveIcons(next) { - return function(maybeIconDefinition) { - var params = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {}); - var mask = params.mask; - if (mask) { - mask = (mask || {}).icon ? mask : findIconDefinition(mask || {}); - } - return next(iconDefinition, _objectSpread({}, params, { - mask - })); - }; +.svg-inline--fa.fa-li { + width: 2em; +} +.svg-inline--fa.fa-fw { + width: 1.25em; } -var library = new Library(); -var _cssInserted = false; -var icon = resolveIcons(function(iconDefinition) { - var params = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - var _params$transform = params.transform, transform = _params$transform === void 0 ? meaninglessTransform : _params$transform, _params$symbol = params.symbol, symbol = _params$symbol === void 0 ? false : _params$symbol, _params$mask = params.mask, mask = _params$mask === void 0 ? null : _params$mask, _params$maskId = params.maskId, maskId = _params$maskId === void 0 ? null : _params$maskId, _params$title = params.title, title = _params$title === void 0 ? null : _params$title, _params$titleId = params.titleId, titleId = _params$titleId === void 0 ? null : _params$titleId, _params$classes = params.classes, classes = _params$classes === void 0 ? [] : _params$classes, _params$attributes = params.attributes, attributes = _params$attributes === void 0 ? {} : _params$attributes, _params$styles = params.styles, styles2 = _params$styles === void 0 ? {} : _params$styles; - if (!iconDefinition) - return; - var prefix = iconDefinition.prefix, iconName = iconDefinition.iconName, icon2 = iconDefinition.icon; - return apiObject(_objectSpread({ - type: "icon" - }, iconDefinition), function() { - ensureCss(); - if (config.autoA11y) { - if (title) { - attributes["aria-labelledby"] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); - } else { - attributes["aria-hidden"] = "true"; - attributes["focusable"] = "false"; - } - } - return makeInlineSvgAbstract({ - icons: { - main: asFoundIcon(icon2), - mask: mask ? asFoundIcon(mask.icon) : { - found: false, - width: null, - height: null, - icon: {} - } - }, - prefix, - iconName, - transform: _objectSpread({}, meaninglessTransform, transform), - symbol, - title, - maskId, - titleId, - extra: { - attributes, - styles: styles2, - classes - } - }); - }); -}); -// src/util/rpgawesome.ts -var RPG = { - acid: '', - acorn: '', - "alien-fire": '', - "all-for-one": '', - "alligator-clip": '', - "ammo-bag": '', - anchor: '', - "angel-wings": '', - ankh: '', - anvil: '', - apple: '', - aquarius: '', - "arcane-mask": '', - archer: '', - "archery-target": '', - arena: '', - aries: '', - "arrow-cluster": '', - "arrow-flights": '', - arson: '', - aura: '', - aware: '', - "axe-swing": '', - axe: '', - ball: '', - "barbed-arrow": '', - barrier: '', - "bat-sword": '', - "battered-axe": '', - batteries: '', - "battery-0": '', - "battery-100": '', - "battery-25": '', - "battery-50": '', - "battery-75": '', - "battery-black": '', - "battery-negative": '', - "battery-positive": '', - "battery-white": '', - batwings: '', - "beam-wake": '', - "bear-trap": '', - beer: '', - beetle: '', - bell: '', - biohazard: '', - "bird-claw": '', - "bird-mask": '', - "blade-bite": '', - blast: '', - blaster: '', - "bleeding-eye": '', - "bleeding-hearts": '', - "bolt-shield": '', - "bomb-explosion": '', - bombs: '', - "bone-bite": '', - "bone-knife": '', - book: '', - boomerang: '', - "boot-stomp": '', - "bottle-vapors": '', - "bottled-bolt": '', - "bottom-right": '', - "bowie-knife": '', - "bowling-pin": '', - "brain-freeze": '', - "brandy-bottle": '', - bridge: '', - "broadhead-arrow": '', - broadsword: '', - "broken-bone": '', - "broken-bottle": '', - "broken-heart": '', - "broken-shield": '', - "broken-skull": '', - "bubbling-potion": '', - bullets: '', - "burning-book": '', - "burning-embers": '', - "burning-eye": '', - "burning-meteor": '', - "burst-blob": '', - butterfly: '', - campfire: '', - cancel: '', - cancer: '', - "candle-fire": '', - candle: '', - "cannon-shot": '', - capitol: '', - capricorn: '', - carrot: '', - "castle-emblem": '', - "castle-flag": '', - cat: '', - chain: '', - cheese: '', - "chemical-arrow": '', - chessboard: '', - "chicken-leg": '', - "circle-of-circles": '', - "circular-saw": '', - "circular-shield": '', - "cloak-and-dagger": '', - clockwork: '', - clover: '', - "clovers-card": '', - clovers: '', - "cluster-bomb": '', - "coffee-mug": '', - "cog-wheel": '', - cog: '', - "cold-heart": '', - compass: '', - "corked-tube": '', - "crab-claw": '', - "cracked-helm": '', - "cracked-shield": '', - "croc-sword": '', - crossbow: '', - "crossed-axes": '', - "crossed-bones": '', - "crossed-pistols": '', - "crossed-sabres": '', - "crossed-swords": '', - "crown-of-thorns": '', - crown: '', - "crowned-heart": '', - crush: '', - "crystal-ball": '', - "crystal-cluster": '', - "crystal-wand": '', - crystals: '', - cubes: '', - "cut-palm": '', - cycle: '', - daggers: '', - daisy: '', - "dead-tree": '', - "death-skull": '', - decapitation: '', - defibrillate: '', - demolish: '', - "dervish-swords": '', - "desert-skull": '', - diamond: '', - "diamonds-card": '', - diamonds: '', - "dice-five": '', - "dice-four": '', - "dice-one": '', - "dice-six": '', - "dice-three": '', - "dice-two": '', - dinosaur: '', - divert: '', - "diving-dagger": '', - "double-team": '', - doubled: '', - "dragon-breath": '', - "dragon-wing": '', - dragon: '', - dragonfly: '', - drill: '', - "dripping-blade": '', - "dripping-knife": '', - "dripping-sword": '', - "droplet-splash": '', - droplet: '', - droplets: '', - duel: '', - "egg-pod": '', - egg: '', - eggplant: '', - emerald: '', - energise: '', - explosion: '', - "explosive-materials": '', - "eye-monster": '', - "eye-shield": '', - eyeball: '', - "fairy-wand": '', - fairy: '', - "fall-down": '', - falling: '', - "fast-ship": '', - "feather-wing": '', - "feathered-wing": '', - fedora: '', - "fire-bomb": '', - "fire-breath": '', - "fire-ring": '', - "fire-shield": '', - "fire-symbol": '', - fire: '', - "fireball-sword": '', - fish: '', - "fizzing-flask": '', - "flame-symbol": '', - "flaming-arrow": '', - "flaming-claw": '', - "flaming-trident": '', - flask: '', - "flat-hammer": '', - flower: '', - flowers: '', - "fluffy-swirl": '', - "focused-lightning": '', - "food-chain": '', - footprint: '', - forging: '', - forward: '', - fox: '', - "frost-emblem": '', - frostfire: '', - "frozen-arrow": '', - "gamepad-cross": '', - gavel: '', - "gear-hammer": '', - "gear-heart": '', - gears: '', - gecko: '', - "gem-pendant": '', - gem: '', - gemini: '', - "glass-heart": '', - gloop: '', - "gold-bar": '', - "grappling-hook": '', - "grass-patch": '', - grass: '', - grenade: '', - groundbreaker: '', - "guarded-tower": '', - guillotine: '', - halberd: '', - "hammer-drop": '', - hammer: '', - "hand-emblem": '', - "hand-saw": '', - hand: '', - "harpoon-trident": '', - "health-decrease": '', - "health-increase": '', - health: '', - "heart-bottle": '', - "heart-tower": '', - heartburn: '', - "hearts-card": '', - hearts: '', - "heat-haze": '', - "heavy-fall": '', - "heavy-shield": '', - helmet: '', - help: '', - "hive-emblem": '', - "hole-ladder": '', - honeycomb: '', - hood: '', - "horn-call": '', - horns: '', - horseshoe: '', - "hospital-cross": '', - "hot-surface": '', - hourglass: '', - "hydra-shot": '', - hydra: '', - "ice-cube": '', - implosion: '', - incense: '', - "insect-jaws": '', - interdiction: '', - jetpack: '', - "jigsaw-piece": '', - kaleidoscope: '', - kettlebell: '', - "key-basic": '', - key: '', - "kitchen-knives": '', - "knife-fork": '', - knife: '', - "knight-helmet": '', - kunai: '', - "lantern-flame": '', - "large-hammer": '', - "laser-blast": '', - "laser-site": '', - lava: '', - leaf: '', - leo: '', - "level-four-advanced": '', - "level-four": '', - "level-three-advanced": '', - "level-three": '', - "level-two-advanced": '', - "level-two": '', - lever: '', - libra: '', - "light-bulb": '', - lighthouse: '', - "lightning-bolt": '', - "lightning-storm": '', - "lightning-sword": '', - "lightning-trio": '', - lightning: '', - lion: '', - "lit-candelabra": '', - load: '', - "locked-fortress": '', - "love-howl": '', - maggot: '', - magnet: '', - "mass-driver": '', - match: '', - "meat-hook": '', - meat: '', - "medical-pack": '', - "metal-gate": '', - microphone: '', - "mine-wagon": '', - "mining-diamonds": '', - mirror: '', - "monster-skull": '', - montains: '', - "moon-sun": '', - mp5: '', - "muscle-fat": '', - "muscle-up": '', - musket: '', - nails: '', - nodular: '', - noose: '', - nuclear: '', - ocarina: '', - "ocean-emblem": '', - octopus: '', - omega: '', - "on-target": '', - ophiuchus: '', - overhead: '', - overmind: '', - "palm-tree": '', - pawn: '', - pawprint: '', - "perspective-dice-five": '', - "perspective-dice-four": '', - "perspective-dice-one": '', - "perspective-dice-random": '', - "perspective-dice-six-two": '', - "perspective-dice-six": '', - "perspective-dice-three": '', - pill: '', - pills: '', - "pine-tree": '', - "ping-pong": '', - pisces: '', - "plain-dagger": '', - "player-despair": '', - "player-dodge": '', - "player-king": '', - "player-lift": '', - "player-pain": '', - "player-pyromaniac": '', - "player-shot": '', - "player-teleport": '', - "player-thunder-struck": '', - player: '', - podium: '', - "poison-cloud": '', - potion: '', - pyramids: '', - "queen-crown": '', - "quill-ink": '', - rabbit: '', - "radar-dish": '', - "radial-balance": '', - radioactive: '', - raven: '', - reactor: '', - recycle: '', - regeneration: '', - "relic-blade": '', - repair: '', - reverse: '', - revolver: '', - rifle: '', - "ringing-bell": '', - "roast-chicken": '', - "robot-arm": '', - "round-bottom-flask": '', - "round-shield": '', - rss: '', - "rune-stone": '', - sagittarius: '', - sapphire: '', - satellite: '', - save: '', - scorpio: '', - "scroll-unfurled": '', - scythe: '', - "sea-serpent": '', - seagull: '', - shark: '', - sheep: '', - sheriff: '', - shield: '', - "ship-emblem": '', - "shoe-prints": '', - "shot-through-the-heart": '', - "shotgun-shell": '', - shovel: '', - shuriken: '', - sickle: '', - sideswipe: '', - site: '', - "skull-trophy": '', - skull: '', - "slash-ring": '', - "small-fire": '', - snail: '', - snake: '', - snorkel: '', - snowflake: '', - "soccer-ball": '', - "spades-card": '', - spades: '', - "spawn-node": '', - "spear-head": '', - "speech-bubble": '', - "speech-bubbles": '', - "spider-face": '', - spikeball: '', - "spiked-mace": '', - "spiked-tentacle": '', - "spinning-sword": '', - "spiral-shell": '', - splash: '', - "spray-can": '', - "sprout-emblem": '', - sprout: '', - stopwatch: '', - "suckered-tentacle": '', - suits: '', - "sun-symbol": '', - sun: '', - sunbeams: '', - "super-mushroom": '', - "supersonic-arrow": '', - "surveillance-camera": '', - syringe: '', - "target-arrows": '', - "target-laser": '', - targeted: '', - taurus: '', - telescope: '', - tentacle: '', - tesla: '', - "thorn-arrow": '', - "thorny-vine": '', - "three-keys": '', - "tic-tac-toe": '', - toast: '', - tombstone: '', - tooth: '', - torch: '', - tower: '', - trail: '', - "trefoil-lily": '', - trident: '', - triforce: '', - trophy: '', - turd: '', - "two-dragons": '', - "two-hearts": '', - uncertainty: '', - underhand: '', - unplugged: '', - vase: '', - "venomous-snake": '', - vest: '', - vial: '', - "vine-whip": '', - virgo: '', - "water-drop": '', - wifi: '', - "wireless-signal": '', - "wolf-head": '', - "wolf-howl": '', - "wooden-sign": '', - wrench: '', - wyvern: '', - "x-mark": '', - "zebra-shield": '', - "zigzag-leaf": '' -}; - -// src/util/icons.ts -library.add(_iconsCache2, _iconsCache, _iconsCache3, faCopy); -var COPY_BUTTON_ICON = icon(findIconDefinition({ - iconName: "copy", - prefix: "far" -})).node[0]; -var WARNING_ICON = icon(findIconDefinition({ - iconName: "exclamation-triangle", - prefix: "fas" -})).node[0]; -var RPGIconNames = new Map(Object.keys(RPG).map((i) => { - return [ - i, - { - name: i, - type: "rpg" - } - ]; -})); -var FontAwesomeIconNames = new Map([Object.values(_iconsCache2), Object.values(_iconsCache), Object.values(_iconsCache3)].flat().map((i) => { - return [ - i.iconName, - { name: i.iconName, type: "font-awesome" } - ]; -})); -var iconDefinitions = [ - ...FontAwesomeIconNames.values(), - ...RPGIconNames.values() -]; -function getIconType(str) { - if (findIconDefinition({ iconName: str, prefix: "fas" })) - return "font-awesome"; - if (findIconDefinition({ iconName: str, prefix: "far" })) - return "font-awesome"; - if (findIconDefinition({ iconName: str, prefix: "fab" })) - return "font-awesome"; - if (RPG[str]) - return "rpg"; -} -function getIconModuleName(icon2) { - if (icon2.type === "rpg") - return "RPG Awesome"; - if (icon2.type === "font-awesome") - return "Font Awesome"; -} -function getIconNode(item) { - if (item.type === "image") { - const img = new Image(); - img.src = item.name; - return img; - } - if (item.type === "rpg") { - if (!RPG[item.name]) - return null; - const el = createDiv(); - el.innerHTML = RPG[item.name]; - return el.children[0]; - } - if (findIconDefinition({ - iconName: item.name, - prefix: "fas" - })) - return icon(findIconDefinition({ - iconName: item.name, - prefix: "fas" - })).node[0]; - if (findIconDefinition({ - iconName: item.name, - prefix: "far" - })) - return icon(findIconDefinition({ - iconName: item.name, - prefix: "far" - })).node[0]; - if (findIconDefinition({ - iconName: item.name, - prefix: "fab" - })) - return icon(findIconDefinition({ - iconName: item.name, - prefix: "fab" - })).node[0]; +.fa-layers svg.svg-inline--fa { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; } -// src/util/util.ts -var import_obsidian = __toModule(require("obsidian")); -function getID() { - return "ID_xyxyxyxyxyxy".replace(/[xy]/g, function(c) { - var r = Math.random() * 16 | 0, v = c == "x" ? r : r & 3 | 8; - return v.toString(16); - }); -} -function getMatches(src, from, toMatch) { - const split = src.split("\n").slice(from); - const first = split.indexOf(split.find((l) => l == toMatch)); - let next = first + 1; - for (; next < split.length; next++) { - if (!/^(?: {2,4}|\t)+[\s\S]*?/.test(split[next])) - break; - } - let innerSrc = split.slice(first + 1, next).join("\n"); - const toRemove = innerSrc.split("\n")[0].match(/^(\s+)/); - innerSrc = innerSrc.replace(new RegExp(`^${toRemove[0] || ""}`, "gm"), ""); - return { - start: first + from, - end: next + from - 1, - src: innerSrc, - type: toMatch.split("-").pop() - }; +.fa-layers { + display: inline-block; + height: 1em; + position: relative; + text-align: center; + vertical-align: -0.125em; + width: 1em; } -function startsWithAny(str, needles) { - for (let i = 0; i < needles.length; i++) { - if (str.startsWith(needles[i])) { - return i; - } - } - return false; -} -function getParametersFromSource(type, src, admonition) { - const admonitionTitle = admonition.title ?? type[0].toUpperCase() + type.slice(1).toLowerCase(); - const keywordTokens = ["title:", "collapse:", "icon:", "color:"]; - const keywords = ["title", "collapse", "icon", "color"]; - let lines = src.split("\n"); - let skipLines = 0; - let params = {}; - for (let i = 0; i < lines.length; i++) { - let keywordIndex = startsWithAny(lines[i], keywordTokens); - if (keywordIndex === false) { - break; - } - let foundKeyword = keywords[keywordIndex]; - if (params[foundKeyword] !== void 0) { - break; - } - params[foundKeyword] = lines[i].slice(keywordTokens[keywordIndex].length).trim(); - ++skipLines; - } - let { title, collapse, icon: icon2, color } = params; - let content = lines.slice(skipLines).join("\n"); - if (collapse !== void 0 && collapse !== "none" && collapse !== "open" && collapse !== "closed") { - collapse = "closed"; - } - if (!("title" in params)) { - if (!admonition.noTitle) { - title = admonitionTitle; - } - } - if (title && title.trim() === "" && collapse !== void 0 && collapse !== "none") { - title = admonitionTitle; - new import_obsidian.Notice("An admonition must have a title if it is collapsible."); - } - return { title, collapse, content, icon: icon2, color }; +.fa-layers svg.svg-inline--fa { + -webkit-transform-origin: center center; + transform-origin: center center; } -// src/util/constants.ts -var ADD_ADMONITION_COMMAND_ICON = ``; -var ADD_COMMAND_NAME = Symbol("add-command"); -var REMOVE_ADMONITION_COMMAND_ICON = ``; -var REMOVE_COMMAND_NAME = Symbol("remove-command"); -var ADMONITION_MAP = { - note: { - type: "note", - color: "68, 138, 255", - icon: { - type: "font-awesome", - name: "pencil-alt" - }, - command: false, - injectColor: true - }, - seealso: { - type: "note", - color: "68, 138, 255", - icon: { - type: "font-awesome", - name: "pencil-alt" - }, - command: false, - injectColor: true - }, - abstract: { - type: "abstract", - color: "0, 176, 255", - icon: { - type: "font-awesome", - name: "book" - }, - command: false, - injectColor: true - }, - summary: { - type: "abstract", - color: "0, 176, 255", - icon: { - type: "font-awesome", - name: "book" - }, - command: false, - injectColor: true - }, - tldr: { - type: "abstract", - color: "0, 176, 255", - icon: { - type: "font-awesome", - name: "book" - }, - command: false, - injectColor: true - }, - info: { - type: "info", - color: "0, 184, 212", - icon: { - type: "font-awesome", - name: "info-circle" - }, - command: false, - injectColor: true - }, - todo: { - type: "info", - color: "0, 184, 212", - icon: { - type: "font-awesome", - name: "info-circle" - }, - command: false, - injectColor: true - }, - tip: { - type: "tip", - color: "0, 191, 165", - icon: { - type: "font-awesome", - name: "fire" - }, - command: false, - injectColor: true - }, - hint: { - type: "tip", - color: "0, 191, 165", - icon: { - type: "font-awesome", - name: "fire" - }, - command: false, - injectColor: true - }, - important: { - type: "tip", - color: "0, 191, 165", - icon: { - type: "font-awesome", - name: "fire" - }, - command: false, - injectColor: true - }, - success: { - type: "success", - color: "0, 200, 83", - icon: { - type: "font-awesome", - name: "check-circle" - }, - command: false, - injectColor: true - }, - check: { - type: "success", - color: "0, 200, 83", - icon: { - type: "font-awesome", - name: "check-circle" - }, - command: false, - injectColor: true - }, - done: { - type: "success", - color: "0, 200, 83", - icon: { - type: "font-awesome", - name: "check-circle" - }, - command: false, - injectColor: true - }, - question: { - type: "question", - color: "100, 221, 23", - icon: { - type: "font-awesome", - name: "question-circle" - }, - command: false, - injectColor: true - }, - help: { - type: "question", - color: "100, 221, 23", - icon: { - type: "font-awesome", - name: "question-circle" - }, - command: false, - injectColor: true - }, - faq: { - type: "question", - color: "100, 221, 23", - icon: { - type: "font-awesome", - name: "question-circle" - }, - command: false, - injectColor: true - }, - warning: { - type: "warning", - color: "255, 145, 0", - icon: { - type: "font-awesome", - name: "exclamation-triangle" - }, - command: false, - injectColor: true - }, - caution: { - type: "warning", - color: "255, 145, 0", - icon: { - type: "font-awesome", - name: "exclamation-triangle" - }, - command: false, - injectColor: true - }, - attention: { - type: "warning", - color: "255, 145, 0", - icon: { - type: "font-awesome", - name: "exclamation-triangle" - }, - command: false, - injectColor: true - }, - failure: { - type: "failure", - color: "255, 82, 82", - icon: { - type: "font-awesome", - name: "times-circle" - }, - command: false, - injectColor: true - }, - fail: { - type: "failure", - color: "255, 82, 82", - icon: { - type: "font-awesome", - name: "times-circle" - }, - command: false, - injectColor: true - }, - missing: { - type: "failure", - color: "255, 82, 82", - icon: { - type: "font-awesome", - name: "times-circle" - }, - command: false, - injectColor: true - }, - danger: { - type: "danger", - color: "255, 23, 68", - icon: { - type: "font-awesome", - name: "bolt" - }, - command: false, - injectColor: true - }, - error: { - type: "danger", - color: "255, 23, 68", - icon: { - type: "font-awesome", - name: "bolt" - }, - command: false, - injectColor: true - }, - bug: { - type: "bug", - color: "245, 0, 87", - icon: { - type: "font-awesome", - name: "bug" - }, - command: false, - injectColor: true - }, - example: { - type: "example", - color: "124, 77, 255", - icon: { - type: "font-awesome", - name: "list-ol" - }, - command: false, - injectColor: true - }, - quote: { - type: "quote", - color: "158, 158, 158", - icon: { - type: "font-awesome", - name: "quote-right" - }, - command: false, - injectColor: true - }, - cite: { - type: "quote", - color: "158, 158, 158", - icon: { - type: "font-awesome", - name: "quote-right" - }, - command: false, - injectColor: true - } -}; - -// src/settings.ts -var import_obsidian4 = __toModule(require("obsidian")); - -// src/modal/index.ts -var import_obsidian2 = __toModule(require("obsidian")); - -// node_modules/@popperjs/core/lib/enums.js -var top = "top"; -var bottom = "bottom"; -var right = "right"; -var left = "left"; -var auto = "auto"; -var basePlacements = [top, bottom, right, left]; -var start = "start"; -var end = "end"; -var clippingParents = "clippingParents"; -var viewport = "viewport"; -var popper = "popper"; -var reference = "reference"; -var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { - return acc.concat([placement + "-" + start, placement + "-" + end]); -}, []); -var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { - return acc.concat([placement, placement + "-" + start, placement + "-" + end]); -}, []); -var beforeRead = "beforeRead"; -var read = "read"; -var afterRead = "afterRead"; -var beforeMain = "beforeMain"; -var main = "main"; -var afterMain = "afterMain"; -var beforeWrite = "beforeWrite"; -var write = "write"; -var afterWrite = "afterWrite"; -var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; - -// node_modules/@popperjs/core/lib/dom-utils/getNodeName.js -function getNodeName(element) { - return element ? (element.nodeName || "").toLowerCase() : null; +.fa-layers-counter, .fa-layers-text { + display: inline-block; + position: absolute; + text-align: center; } -// node_modules/@popperjs/core/lib/dom-utils/getWindow.js -function getWindow(node) { - if (node == null) { - return window; - } - if (node.toString() !== "[object Window]") { - var ownerDocument = node.ownerDocument; - return ownerDocument ? ownerDocument.defaultView || window : window; - } - return node; +.fa-layers-text { + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + -webkit-transform-origin: center center; + transform-origin: center center; } -// node_modules/@popperjs/core/lib/dom-utils/instanceOf.js -function isElement(node) { - var OwnElement = getWindow(node).Element; - return node instanceof OwnElement || node instanceof Element; -} -function isHTMLElement(node) { - var OwnElement = getWindow(node).HTMLElement; - return node instanceof OwnElement || node instanceof HTMLElement; -} -function isShadowRoot(node) { - if (typeof ShadowRoot === "undefined") { - return false; - } - var OwnElement = getWindow(node).ShadowRoot; - return node instanceof OwnElement || node instanceof ShadowRoot; +.fa-layers-counter { + background-color: #ff253a; + border-radius: 1em; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #fff; + height: 1.5em; + line-height: 1; + max-width: 5em; + min-width: 1.5em; + overflow: hidden; + padding: 0.25em; + right: 0; + text-overflow: ellipsis; + top: 0; + -webkit-transform: scale(0.25); + transform: scale(0.25); + -webkit-transform-origin: top right; + transform-origin: top right; } -// node_modules/@popperjs/core/lib/modifiers/applyStyles.js -function applyStyles(_ref2) { - var state = _ref2.state; - Object.keys(state.elements).forEach(function(name) { - var style = state.styles[name] || {}; - var attributes = state.attributes[name] || {}; - var element = state.elements[name]; - if (!isHTMLElement(element) || !getNodeName(element)) { - return; - } - Object.assign(element.style, style); - Object.keys(attributes).forEach(function(name2) { - var value = attributes[name2]; - if (value === false) { - element.removeAttribute(name2); - } else { - element.setAttribute(name2, value === true ? "" : value); - } - }); - }); -} -function effect(_ref2) { - var state = _ref2.state; - var initialStyles = { - popper: { - position: state.options.strategy, - left: "0", - top: "0", - margin: "0" - }, - arrow: { - position: "absolute" - }, - reference: {} - }; - Object.assign(state.elements.popper.style, initialStyles.popper); - state.styles = initialStyles; - if (state.elements.arrow) { - Object.assign(state.elements.arrow.style, initialStyles.arrow); - } - return function() { - Object.keys(state.elements).forEach(function(name) { - var element = state.elements[name]; - var attributes = state.attributes[name] || {}; - var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); - var style = styleProperties.reduce(function(style2, property) { - style2[property] = ""; - return style2; - }, {}); - if (!isHTMLElement(element) || !getNodeName(element)) { - return; - } - Object.assign(element.style, style); - Object.keys(attributes).forEach(function(attribute) { - element.removeAttribute(attribute); - }); - }); - }; +.fa-layers-bottom-right { + bottom: 0; + right: 0; + top: auto; + -webkit-transform: scale(0.25); + transform: scale(0.25); + -webkit-transform-origin: bottom right; + transform-origin: bottom right; } -var applyStyles_default = { - name: "applyStyles", - enabled: true, - phase: "write", - fn: applyStyles, - effect, - requires: ["computeStyles"] -}; -// node_modules/@popperjs/core/lib/utils/getBasePlacement.js -function getBasePlacement(placement) { - return placement.split("-")[0]; +.fa-layers-bottom-left { + bottom: 0; + left: 0; + right: auto; + top: auto; + -webkit-transform: scale(0.25); + transform: scale(0.25); + -webkit-transform-origin: bottom left; + transform-origin: bottom left; } -// node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js -function getBoundingClientRect(element) { - var rect = element.getBoundingClientRect(); - return { - width: rect.width, - height: rect.height, - top: rect.top, - right: rect.right, - bottom: rect.bottom, - left: rect.left, - x: rect.left, - y: rect.top - }; +.fa-layers-top-right { + right: 0; + top: 0; + -webkit-transform: scale(0.25); + transform: scale(0.25); + -webkit-transform-origin: top right; + transform-origin: top right; } -// node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js -function getLayoutRect(element) { - var clientRect = getBoundingClientRect(element); - var width = element.offsetWidth; - var height = element.offsetHeight; - if (Math.abs(clientRect.width - width) <= 1) { - width = clientRect.width; - } - if (Math.abs(clientRect.height - height) <= 1) { - height = clientRect.height; - } - return { - x: element.offsetLeft, - y: element.offsetTop, - width, - height - }; +.fa-layers-top-left { + left: 0; + right: auto; + top: 0; + -webkit-transform: scale(0.25); + transform: scale(0.25); + -webkit-transform-origin: top left; + transform-origin: top left; } -// node_modules/@popperjs/core/lib/dom-utils/contains.js -function contains(parent, child) { - var rootNode = child.getRootNode && child.getRootNode(); - if (parent.contains(child)) { - return true; - } else if (rootNode && isShadowRoot(rootNode)) { - var next = child; - do { - if (next && parent.isSameNode(next)) { - return true; - } - next = next.parentNode || next.host; - } while (next); - } - return false; +.fa-lg { + font-size: 1.3333333333em; + line-height: 0.75em; + vertical-align: -0.0667em; } -// node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js -function getComputedStyle2(element) { - return getWindow(element).getComputedStyle(element); +.fa-xs { + font-size: 0.75em; } -// node_modules/@popperjs/core/lib/dom-utils/isTableElement.js -function isTableElement(element) { - return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; +.fa-sm { + font-size: 0.875em; } -// node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js -function getDocumentElement(element) { - return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement; +.fa-1x { + font-size: 1em; } -// node_modules/@popperjs/core/lib/dom-utils/getParentNode.js -function getParentNode(element) { - if (getNodeName(element) === "html") { - return element; - } - return element.assignedSlot || element.parentNode || (isShadowRoot(element) ? element.host : null) || getDocumentElement(element); +.fa-2x { + font-size: 2em; } -// node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js -function getTrueOffsetParent(element) { - if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") { - return null; - } - return element.offsetParent; -} -function getContainingBlock(element) { - var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1; - var isIE = navigator.userAgent.indexOf("Trident") !== -1; - if (isIE && isHTMLElement(element)) { - var elementCss = getComputedStyle2(element); - if (elementCss.position === "fixed") { - return null; - } - } - var currentNode = getParentNode(element); - while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { - var css2 = getComputedStyle2(currentNode); - if (css2.transform !== "none" || css2.perspective !== "none" || css2.contain === "paint" || ["transform", "perspective"].indexOf(css2.willChange) !== -1 || isFirefox && css2.willChange === "filter" || isFirefox && css2.filter && css2.filter !== "none") { - return currentNode; - } else { - currentNode = currentNode.parentNode; - } - } - return null; -} -function getOffsetParent(element) { - var window2 = getWindow(element); - var offsetParent = getTrueOffsetParent(element); - while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") { - offsetParent = getTrueOffsetParent(offsetParent); - } - if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) { - return window2; - } - return offsetParent || getContainingBlock(element) || window2; +.fa-3x { + font-size: 3em; } -// node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js -function getMainAxisFromPlacement(placement) { - return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; +.fa-4x { + font-size: 4em; } -// node_modules/@popperjs/core/lib/utils/math.js -var max = Math.max; -var min = Math.min; -var round = Math.round; - -// node_modules/@popperjs/core/lib/utils/within.js -function within(min2, value, max2) { - return max(min2, min(value, max2)); +.fa-5x { + font-size: 5em; } -// node_modules/@popperjs/core/lib/utils/getFreshSideObject.js -function getFreshSideObject() { - return { - top: 0, - right: 0, - bottom: 0, - left: 0 - }; +.fa-6x { + font-size: 6em; } -// node_modules/@popperjs/core/lib/utils/mergePaddingObject.js -function mergePaddingObject(paddingObject) { - return Object.assign({}, getFreshSideObject(), paddingObject); +.fa-7x { + font-size: 7em; } -// node_modules/@popperjs/core/lib/utils/expandToHashMap.js -function expandToHashMap(value, keys) { - return keys.reduce(function(hashMap, key) { - hashMap[key] = value; - return hashMap; - }, {}); +.fa-8x { + font-size: 8em; } -// node_modules/@popperjs/core/lib/modifiers/arrow.js -var toPaddingObject = function toPaddingObject2(padding, state) { - padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { - placement: state.placement - })) : padding; - return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); -}; -function arrow(_ref2) { - var _state$modifiersData$; - var state = _ref2.state, name = _ref2.name, options = _ref2.options; - var arrowElement = state.elements.arrow; - var popperOffsets2 = state.modifiersData.popperOffsets; - var basePlacement = getBasePlacement(state.placement); - var axis = getMainAxisFromPlacement(basePlacement); - var isVertical = [left, right].indexOf(basePlacement) >= 0; - var len = isVertical ? "height" : "width"; - if (!arrowElement || !popperOffsets2) { - return; - } - var paddingObject = toPaddingObject(options.padding, state); - var arrowRect = getLayoutRect(arrowElement); - var minProp = axis === "y" ? top : left; - var maxProp = axis === "y" ? bottom : right; - var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; - var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; - var arrowOffsetParent = getOffsetParent(arrowElement); - var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; - var centerToReference = endDiff / 2 - startDiff / 2; - var min2 = paddingObject[minProp]; - var max2 = clientSize - arrowRect[len] - paddingObject[maxProp]; - var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; - var offset2 = within(min2, center, max2); - var axisProp = axis; - state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); +.fa-9x { + font-size: 9em; } -function effect2(_ref2) { - var state = _ref2.state, options = _ref2.options; - var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; - if (arrowElement == null) { - return; - } - if (typeof arrowElement === "string") { - arrowElement = state.elements.popper.querySelector(arrowElement); - if (!arrowElement) { - return; - } - } - if (true) { - if (!isHTMLElement(arrowElement)) { - console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" ")); - } - } - if (!contains(state.elements.popper, arrowElement)) { - if (true) { - console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" ")); - } - return; - } - state.elements.arrow = arrowElement; + +.fa-10x { + font-size: 10em; } -var arrow_default = { - name: "arrow", - enabled: true, - phase: "main", - fn: arrow, - effect: effect2, - requires: ["popperOffsets"], - requiresIfExists: ["preventOverflow"] -}; -// node_modules/@popperjs/core/lib/modifiers/computeStyles.js -var unsetSides = { - top: "auto", - right: "auto", - bottom: "auto", - left: "auto" -}; -function roundOffsetsByDPR(_ref2) { - var x = _ref2.x, y = _ref2.y; - var win = window; - var dpr = win.devicePixelRatio || 1; - return { - x: round(round(x * dpr) / dpr) || 0, - y: round(round(y * dpr) / dpr) || 0 - }; +.fa-fw { + text-align: center; + width: 1.25em; } -function mapToStyles(_ref2) { - var _Object$assign2; - var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets; - var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === "function" ? roundOffsets(offsets) : offsets, _ref3$x = _ref3.x, x = _ref3$x === void 0 ? 0 : _ref3$x, _ref3$y = _ref3.y, y = _ref3$y === void 0 ? 0 : _ref3$y; - var hasX = offsets.hasOwnProperty("x"); - var hasY = offsets.hasOwnProperty("y"); - var sideX = left; - var sideY = top; - var win = window; - if (adaptive) { - var offsetParent = getOffsetParent(popper2); - var heightProp = "clientHeight"; - var widthProp = "clientWidth"; - if (offsetParent === getWindow(popper2)) { - offsetParent = getDocumentElement(popper2); - if (getComputedStyle2(offsetParent).position !== "static") { - heightProp = "scrollHeight"; - widthProp = "scrollWidth"; - } - } - offsetParent = offsetParent; - if (placement === top) { - sideY = bottom; - y -= offsetParent[heightProp] - popperRect.height; - y *= gpuAcceleration ? 1 : -1; - } - if (placement === left) { - sideX = right; - x -= offsetParent[widthProp] - popperRect.width; - x *= gpuAcceleration ? 1 : -1; - } - } - var commonStyles = Object.assign({ - position - }, adaptive && unsetSides); - if (gpuAcceleration) { - var _Object$assign; - return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); - } - return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2)); + +.fa-ul { + list-style-type: none; + margin-left: 2.5em; + padding-left: 0; } -function computeStyles(_ref4) { - var state = _ref4.state, options = _ref4.options; - var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; - if (true) { - var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || ""; - if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) { - return transitionProperty.indexOf(property) >= 0; - })) { - console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" ")); - } - } - var commonStyles = { - placement: getBasePlacement(state.placement), - popper: state.elements.popper, - popperRect: state.rects.popper, - gpuAcceleration - }; - if (state.modifiersData.popperOffsets != null) { - state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.popperOffsets, - position: state.options.strategy, - adaptive, - roundOffsets - }))); - } - if (state.modifiersData.arrow != null) { - state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.arrow, - position: "absolute", - adaptive: false, - roundOffsets - }))); - } - state.attributes.popper = Object.assign({}, state.attributes.popper, { - "data-popper-placement": state.placement - }); +.fa-ul > li { + position: relative; } -var computeStyles_default = { - name: "computeStyles", - enabled: true, - phase: "beforeWrite", - fn: computeStyles, - data: {} -}; -// node_modules/@popperjs/core/lib/modifiers/eventListeners.js -var passive = { - passive: true -}; -function effect3(_ref2) { - var state = _ref2.state, instance = _ref2.instance, options = _ref2.options; - var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; - var window2 = getWindow(state.elements.popper); - var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); - if (scroll) { - scrollParents.forEach(function(scrollParent) { - scrollParent.addEventListener("scroll", instance.update, passive); - }); - } - if (resize) { - window2.addEventListener("resize", instance.update, passive); - } - return function() { - if (scroll) { - scrollParents.forEach(function(scrollParent) { - scrollParent.removeEventListener("scroll", instance.update, passive); - }); - } - if (resize) { - window2.removeEventListener("resize", instance.update, passive); - } - }; +.fa-li { + left: -2em; + position: absolute; + text-align: center; + width: 2em; + line-height: inherit; } -var eventListeners_default = { - name: "eventListeners", - enabled: true, - phase: "write", - fn: function fn() { - }, - effect: effect3, - data: {} -}; -// node_modules/@popperjs/core/lib/utils/getOppositePlacement.js -var hash = { - left: "right", - right: "left", - bottom: "top", - top: "bottom" -}; -function getOppositePlacement(placement) { - return placement.replace(/left|right|bottom|top/g, function(matched) { - return hash[matched]; - }); +.fa-border { + border: solid 0.08em #eee; + border-radius: 0.1em; + padding: 0.2em 0.25em 0.15em; } -// node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js -var hash2 = { - start: "end", - end: "start" -}; -function getOppositeVariationPlacement(placement) { - return placement.replace(/start|end/g, function(matched) { - return hash2[matched]; - }); +.fa-pull-left { + float: left; } -// node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js -function getWindowScroll(node) { - var win = getWindow(node); - var scrollLeft = win.pageXOffset; - var scrollTop = win.pageYOffset; - return { - scrollLeft, - scrollTop - }; +.fa-pull-right { + float: right; } -// node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js -function getWindowScrollBarX(element) { - return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; +.fa.fa-pull-left, +.fas.fa-pull-left, +.far.fa-pull-left, +.fal.fa-pull-left, +.fab.fa-pull-left { + margin-right: 0.3em; } - -// node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js -function getViewportRect(element) { - var win = getWindow(element); - var html = getDocumentElement(element); - var visualViewport = win.visualViewport; - var width = html.clientWidth; - var height = html.clientHeight; - var x = 0; - var y = 0; - if (visualViewport) { - width = visualViewport.width; - height = visualViewport.height; - if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - x = visualViewport.offsetLeft; - y = visualViewport.offsetTop; - } - } - return { - width, - height, - x: x + getWindowScrollBarX(element), - y - }; +.fa.fa-pull-right, +.fas.fa-pull-right, +.far.fa-pull-right, +.fal.fa-pull-right, +.fab.fa-pull-right { + margin-left: 0.3em; } -// node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js -function getDocumentRect(element) { - var _element$ownerDocumen; - var html = getDocumentElement(element); - var winScroll = getWindowScroll(element); - var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; - var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); - var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); - var x = -winScroll.scrollLeft + getWindowScrollBarX(element); - var y = -winScroll.scrollTop; - if (getComputedStyle2(body || html).direction === "rtl") { - x += max(html.clientWidth, body ? body.clientWidth : 0) - width; - } - return { - width, - height, - x, - y - }; +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; } -// node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js -function isScrollParent(element) { - var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; - return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); } -// node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js -function getScrollParent(node) { - if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { - return node.ownerDocument.body; +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } - if (isHTMLElement(node) && isScrollParent(node)) { - return node; + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } - return getScrollParent(getParentNode(node)); } -// node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js -function listScrollParents(element, list) { - var _element$ownerDocumen; - if (list === void 0) { - list = []; +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } - var scrollParent = getScrollParent(element); - var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); - var win = getWindow(scrollParent); - var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; - var updatedList = list.concat(target); - return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target))); -} - -// node_modules/@popperjs/core/lib/utils/rectToClientRect.js -function rectToClientRect(rect) { - return Object.assign({}, rect, { - left: rect.x, - top: rect.y, - right: rect.x + rect.width, - bottom: rect.y + rect.height - }); -} - -// node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js -function getInnerBoundingClientRect(element) { - var rect = getBoundingClientRect(element); - rect.top = rect.top + element.clientTop; - rect.left = rect.left + element.clientLeft; - rect.bottom = rect.top + element.clientHeight; - rect.right = rect.left + element.clientWidth; - rect.width = element.clientWidth; - rect.height = element.clientHeight; - rect.x = rect.left; - rect.y = rect.top; - return rect; -} -function getClientRectFromMixedType(element, clippingParent) { - return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); -} -function getClippingParents(element) { - var clippingParents2 = listScrollParents(getParentNode(element)); - var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0; - var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; - if (!isElement(clipperElement)) { - return []; + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } - return clippingParents2.filter(function(clippingParent) { - return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body"; - }); } -function getClippingRect(element, boundary, rootBoundary) { - var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary); - var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]); - var firstClippingParent = clippingParents2[0]; - var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) { - var rect = getClientRectFromMixedType(element, clippingParent); - accRect.top = max(rect.top, accRect.top); - accRect.right = min(rect.right, accRect.right); - accRect.bottom = min(rect.bottom, accRect.bottom); - accRect.left = max(rect.left, accRect.left); - return accRect; - }, getClientRectFromMixedType(element, firstClippingParent)); - clippingRect.width = clippingRect.right - clippingRect.left; - clippingRect.height = clippingRect.bottom - clippingRect.top; - clippingRect.x = clippingRect.left; - clippingRect.y = clippingRect.top; - return clippingRect; +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } -// node_modules/@popperjs/core/lib/utils/getVariation.js -function getVariation(placement) { - return placement.split("-")[1]; +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } -// node_modules/@popperjs/core/lib/utils/computeOffsets.js -function computeOffsets(_ref2) { - var reference2 = _ref2.reference, element = _ref2.element, placement = _ref2.placement; - var basePlacement = placement ? getBasePlacement(placement) : null; - var variation = placement ? getVariation(placement) : null; - var commonX = reference2.x + reference2.width / 2 - element.width / 2; - var commonY = reference2.y + reference2.height / 2 - element.height / 2; - var offsets; - switch (basePlacement) { - case top: - offsets = { - x: commonX, - y: reference2.y - element.height - }; - break; - case bottom: - offsets = { - x: commonX, - y: reference2.y + reference2.height - }; - break; - case right: - offsets = { - x: reference2.x + reference2.width, - y: commonY - }; - break; - case left: - offsets = { - x: reference2.x - element.width, - y: commonY - }; - break; - default: - offsets = { - x: reference2.x, - y: reference2.y - }; - } - var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; - if (mainAxis != null) { - var len = mainAxis === "y" ? "height" : "width"; - switch (variation) { - case start: - offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); - break; - case end: - offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); - break; - default: - } - } - return offsets; +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } -// node_modules/@popperjs/core/lib/utils/detectOverflow.js -function detectOverflow(state, options) { - if (options === void 0) { - options = {}; - } - var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; - var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); - var altContext = elementContext === popper ? reference : popper; - var referenceElement = state.elements.reference; - var popperRect = state.rects.popper; - var element = state.elements[altBoundary ? altContext : elementContext]; - var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); - var referenceClientRect = getBoundingClientRect(referenceElement); - var popperOffsets2 = computeOffsets({ - reference: referenceClientRect, - element: popperRect, - strategy: "absolute", - placement - }); - var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2)); - var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; - var overflowOffsets = { - top: clippingClientRect.top - elementClientRect.top + paddingObject.top, - bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, - left: clippingClientRect.left - elementClientRect.left + paddingObject.left, - right: elementClientRect.right - clippingClientRect.right + paddingObject.right - }; - var offsetData = state.modifiersData.offset; - if (elementContext === popper && offsetData) { - var offset2 = offsetData[placement]; - Object.keys(overflowOffsets).forEach(function(key) { - var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; - var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x"; - overflowOffsets[key] += offset2[axis] * multiply; - }); - } - return overflowOffsets; +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } -// node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js -function computeAutoPlacement(state, options) { - if (options === void 0) { - options = {}; - } - var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; - var variation = getVariation(placement); - var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) { - return getVariation(placement2) === variation; - }) : basePlacements; - var allowedPlacements = placements2.filter(function(placement2) { - return allowedAutoPlacements.indexOf(placement2) >= 0; - }); - if (allowedPlacements.length === 0) { - allowedPlacements = placements2; - if (true) { - console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" ")); - } - } - var overflows = allowedPlacements.reduce(function(acc, placement2) { - acc[placement2] = detectOverflow(state, { - placement: placement2, - boundary, - rootBoundary, - padding - })[getBasePlacement(placement2)]; - return acc; - }, {}); - return Object.keys(overflows).sort(function(a, b) { - return overflows[a] - overflows[b]; - }); +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } -// node_modules/@popperjs/core/lib/modifiers/flip.js -function getExpandedFallbackPlacements(placement) { - if (getBasePlacement(placement) === auto) { - return []; - } - var oppositePlacement = getOppositePlacement(placement); - return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; -} -function flip(_ref2) { - var state = _ref2.state, options = _ref2.options, name = _ref2.name; - if (state.modifiersData[name]._skip) { - return; - } - var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; - var preferredPlacement = state.options.placement; - var basePlacement = getBasePlacement(preferredPlacement); - var isBasePlacement = basePlacement === preferredPlacement; - var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); - var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) { - return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, { - placement: placement2, - boundary, - rootBoundary, - padding, - flipVariations, - allowedAutoPlacements - }) : placement2); - }, []); - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var checksMap = new Map(); - var makeFallbackChecks = true; - var firstFittingPlacement = placements2[0]; - for (var i = 0; i < placements2.length; i++) { - var placement = placements2[i]; - var _basePlacement = getBasePlacement(placement); - var isStartVariation = getVariation(placement) === start; - var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; - var len = isVertical ? "width" : "height"; - var overflow = detectOverflow(state, { - placement, - boundary, - rootBoundary, - altBoundary, - padding - }); - var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; - if (referenceRect[len] > popperRect[len]) { - mainVariationSide = getOppositePlacement(mainVariationSide); - } - var altVariationSide = getOppositePlacement(mainVariationSide); - var checks = []; - if (checkMainAxis) { - checks.push(overflow[_basePlacement] <= 0); - } - if (checkAltAxis) { - checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); - } - if (checks.every(function(check) { - return check; - })) { - firstFittingPlacement = placement; - makeFallbackChecks = false; - break; - } - checksMap.set(placement, checks); - } - if (makeFallbackChecks) { - var numberOfChecks = flipVariations ? 3 : 1; - var _loop = function _loop2(_i2) { - var fittingPlacement = placements2.find(function(placement2) { - var checks2 = checksMap.get(placement2); - if (checks2) { - return checks2.slice(0, _i2).every(function(check) { - return check; - }); - } - }); - if (fittingPlacement) { - firstFittingPlacement = fittingPlacement; - return "break"; - } - }; - for (var _i = numberOfChecks; _i > 0; _i--) { - var _ret = _loop(_i); - if (_ret === "break") - break; - } - } - if (state.placement !== firstFittingPlacement) { - state.modifiersData[name]._skip = true; - state.placement = firstFittingPlacement; - state.reset = true; - } +.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } -var flip_default = { - name: "flip", - enabled: true, - phase: "main", - fn: flip, - requiresIfExists: ["offset"], - data: { - _skip: false - } -}; -// node_modules/@popperjs/core/lib/modifiers/hide.js -function getSideOffsets(overflow, rect, preventedOffsets) { - if (preventedOffsets === void 0) { - preventedOffsets = { - x: 0, - y: 0 - }; - } - return { - top: overflow.top - rect.height - preventedOffsets.y, - right: overflow.right - rect.width + preventedOffsets.x, - bottom: overflow.bottom - rect.height + preventedOffsets.y, - left: overflow.left - rect.width - preventedOffsets.x - }; -} -function isAnySideFullyClipped(overflow) { - return [top, right, bottom, left].some(function(side) { - return overflow[side] >= 0; - }); -} -function hide(_ref2) { - var state = _ref2.state, name = _ref2.name; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var preventedOffsets = state.modifiersData.preventOverflow; - var referenceOverflow = detectOverflow(state, { - elementContext: "reference" - }); - var popperAltOverflow = detectOverflow(state, { - altBoundary: true - }); - var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); - var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); - var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); - var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); - state.modifiersData[name] = { - referenceClippingOffsets, - popperEscapeOffsets, - isReferenceHidden, - hasPopperEscaped - }; - state.attributes.popper = Object.assign({}, state.attributes.popper, { - "data-popper-reference-hidden": isReferenceHidden, - "data-popper-escaped": hasPopperEscaped - }); +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical, +:root .fa-flip-both { + -webkit-filter: none; + filter: none; } -var hide_default = { - name: "hide", - enabled: true, - phase: "main", - requiresIfExists: ["preventOverflow"], - fn: hide -}; -// node_modules/@popperjs/core/lib/modifiers/offset.js -function distanceAndSkiddingToXY(placement, rects, offset2) { - var basePlacement = getBasePlacement(placement); - var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; - var _ref2 = typeof offset2 === "function" ? offset2(Object.assign({}, rects, { - placement - })) : offset2, skidding = _ref2[0], distance = _ref2[1]; - skidding = skidding || 0; - distance = (distance || 0) * invertDistance; - return [left, right].indexOf(basePlacement) >= 0 ? { - x: distance, - y: skidding - } : { - x: skidding, - y: distance - }; +.fa-stack { + display: inline-block; + height: 2em; + position: relative; + width: 2.5em; } -function offset(_ref2) { - var state = _ref2.state, options = _ref2.options, name = _ref2.name; - var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset; - var data = placements.reduce(function(acc, placement) { - acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2); - return acc; - }, {}); - var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y; - if (state.modifiersData.popperOffsets != null) { - state.modifiersData.popperOffsets.x += x; - state.modifiersData.popperOffsets.y += y; - } - state.modifiersData[name] = data; -} -var offset_default = { - name: "offset", - enabled: true, - phase: "main", - requires: ["popperOffsets"], - fn: offset -}; -// node_modules/@popperjs/core/lib/modifiers/popperOffsets.js -function popperOffsets(_ref2) { - var state = _ref2.state, name = _ref2.name; - state.modifiersData[name] = computeOffsets({ - reference: state.rects.reference, - element: state.rects.popper, - strategy: "absolute", - placement: state.placement - }); +.fa-stack-1x, +.fa-stack-2x { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; } -var popperOffsets_default = { - name: "popperOffsets", - enabled: true, - phase: "read", - fn: popperOffsets, - data: {} -}; -// node_modules/@popperjs/core/lib/utils/getAltAxis.js -function getAltAxis(axis) { - return axis === "x" ? "y" : "x"; +.svg-inline--fa.fa-stack-1x { + height: 1em; + width: 1.25em; } - -// node_modules/@popperjs/core/lib/modifiers/preventOverflow.js -function preventOverflow(_ref2) { - var state = _ref2.state, options = _ref2.options, name = _ref2.name; - var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; - var overflow = detectOverflow(state, { - boundary, - rootBoundary, - padding, - altBoundary - }); - var basePlacement = getBasePlacement(state.placement); - var variation = getVariation(state.placement); - var isBasePlacement = !variation; - var mainAxis = getMainAxisFromPlacement(basePlacement); - var altAxis = getAltAxis(mainAxis); - var popperOffsets2 = state.modifiersData.popperOffsets; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { - placement: state.placement - })) : tetherOffset; - var data = { - x: 0, - y: 0 - }; - if (!popperOffsets2) { - return; - } - if (checkMainAxis || checkAltAxis) { - var mainSide = mainAxis === "y" ? top : left; - var altSide = mainAxis === "y" ? bottom : right; - var len = mainAxis === "y" ? "height" : "width"; - var offset2 = popperOffsets2[mainAxis]; - var min2 = popperOffsets2[mainAxis] + overflow[mainSide]; - var max2 = popperOffsets2[mainAxis] - overflow[altSide]; - var additive = tether ? -popperRect[len] / 2 : 0; - var minLen = variation === start ? referenceRect[len] : popperRect[len]; - var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; - var arrowElement = state.elements.arrow; - var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { - width: 0, - height: 0 - }; - var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject(); - var arrowPaddingMin = arrowPaddingObject[mainSide]; - var arrowPaddingMax = arrowPaddingObject[altSide]; - var arrowLen = within(0, referenceRect[len], arrowRect[len]); - var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue; - var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue; - var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); - var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; - var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0; - var tetherMin = popperOffsets2[mainAxis] + minOffset - offsetModifierValue - clientOffset; - var tetherMax = popperOffsets2[mainAxis] + maxOffset - offsetModifierValue; - if (checkMainAxis) { - var preventedOffset = within(tether ? min(min2, tetherMin) : min2, offset2, tether ? max(max2, tetherMax) : max2); - popperOffsets2[mainAxis] = preventedOffset; - data[mainAxis] = preventedOffset - offset2; - } - if (checkAltAxis) { - var _mainSide = mainAxis === "x" ? top : left; - var _altSide = mainAxis === "x" ? bottom : right; - var _offset = popperOffsets2[altAxis]; - var _min = _offset + overflow[_mainSide]; - var _max = _offset - overflow[_altSide]; - var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max); - popperOffsets2[altAxis] = _preventedOffset; - data[altAxis] = _preventedOffset - _offset; - } - } - state.modifiersData[name] = data; +.svg-inline--fa.fa-stack-2x { + height: 2em; + width: 2.5em; } -var preventOverflow_default = { - name: "preventOverflow", - enabled: true, - phase: "main", - fn: preventOverflow, - requiresIfExists: ["offset"] -}; -// node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js -function getHTMLElementScroll(element) { - return { - scrollLeft: element.scrollLeft, - scrollTop: element.scrollTop - }; +.fa-inverse { + color: #fff; } -// node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js -function getNodeScroll(node) { - if (node === getWindow(node) || !isHTMLElement(node)) { - return getWindowScroll(node); - } else { - return getHTMLElementScroll(node); - } +.sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } -// node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js -function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { - if (isFixed === void 0) { - isFixed = false; - } - var documentElement = getDocumentElement(offsetParent); - var rect = getBoundingClientRect(elementOrVirtualElement); - var isOffsetParentAnElement = isHTMLElement(offsetParent); - var scroll = { - scrollLeft: 0, - scrollTop: 0 - }; - var offsets = { - x: 0, - y: 0 - }; - if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { - if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) { - scroll = getNodeScroll(offsetParent); - } - if (isHTMLElement(offsetParent)) { - offsets = getBoundingClientRect(offsetParent); - offsets.x += offsetParent.clientLeft; - offsets.y += offsetParent.clientTop; - } else if (documentElement) { - offsets.x = getWindowScrollBarX(documentElement); - } - } - return { - x: rect.left + scroll.scrollLeft - offsets.x, - y: rect.top + scroll.scrollTop - offsets.y, - width: rect.width, - height: rect.height - }; +.sr-only-focusable:active, .sr-only-focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; } -// node_modules/@popperjs/core/lib/utils/orderModifiers.js -function order(modifiers) { - var map = new Map(); - var visited = new Set(); - var result = []; - modifiers.forEach(function(modifier) { - map.set(modifier.name, modifier); - }); - function sort(modifier) { - visited.add(modifier.name); - var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); - requires.forEach(function(dep) { - if (!visited.has(dep)) { - var depModifier = map.get(dep); - if (depModifier) { - sort(depModifier); - } - } - }); - result.push(modifier); - } - modifiers.forEach(function(modifier) { - if (!visited.has(modifier.name)) { - sort(modifier); - } - }); - return result; -} -function orderModifiers(modifiers) { - var orderedModifiers = order(modifiers); - return modifierPhases.reduce(function(acc, phase) { - return acc.concat(orderedModifiers.filter(function(modifier) { - return modifier.phase === phase; - })); - }, []); +.svg-inline--fa .fa-primary { + fill: var(--fa-primary-color, currentColor); + opacity: 1; + opacity: var(--fa-primary-opacity, 1); } -// node_modules/@popperjs/core/lib/utils/debounce.js -function debounce(fn2) { - var pending; - return function() { - if (!pending) { - pending = new Promise(function(resolve2) { - Promise.resolve().then(function() { - pending = void 0; - resolve2(fn2()); - }); - }); - } - return pending; - }; +.svg-inline--fa .fa-secondary { + fill: var(--fa-secondary-color, currentColor); + opacity: 0.4; + opacity: var(--fa-secondary-opacity, 0.4); } -// node_modules/@popperjs/core/lib/utils/format.js -function format(str) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - return [].concat(args).reduce(function(p2, c) { - return p2.replace(/%s/, c); - }, str); +.svg-inline--fa.fa-swap-opacity .fa-primary { + opacity: 0.4; + opacity: var(--fa-secondary-opacity, 0.4); } -// node_modules/@popperjs/core/lib/utils/validateModifiers.js -var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; -var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; -var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"]; -function validateModifiers(modifiers) { - modifiers.forEach(function(modifier) { - Object.keys(modifier).forEach(function(key) { - switch (key) { - case "name": - if (typeof modifier.name !== "string") { - console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"')); - } - break; - case "enabled": - if (typeof modifier.enabled !== "boolean") { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"')); - } - case "phase": - if (modifierPhases.indexOf(modifier.phase) < 0) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"')); - } - break; - case "fn": - if (typeof modifier.fn !== "function") { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"')); - } - break; - case "effect": - if (typeof modifier.effect !== "function") { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"')); - } - break; - case "requires": - if (!Array.isArray(modifier.requires)) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"')); - } - break; - case "requiresIfExists": - if (!Array.isArray(modifier.requiresIfExists)) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"')); - } - break; - case "options": - case "data": - break; - default: - console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) { - return '"' + s + '"'; - }).join(", ") + '; but "' + key + '" was provided.'); - } - modifier.requires && modifier.requires.forEach(function(requirement) { - if (modifiers.find(function(mod) { - return mod.name === requirement; - }) == null) { - console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); - } - }); - }); - }); +.svg-inline--fa.fa-swap-opacity .fa-secondary { + opacity: 1; + opacity: var(--fa-primary-opacity, 1); } -// node_modules/@popperjs/core/lib/utils/uniqueBy.js -function uniqueBy(arr, fn2) { - var identifiers = new Set(); - return arr.filter(function(item) { - var identifier = fn2(item); - if (!identifiers.has(identifier)) { - identifiers.add(identifier); - return true; - } - }); +.svg-inline--fa mask .fa-primary, +.svg-inline--fa mask .fa-secondary { + fill: black; } -// node_modules/@popperjs/core/lib/utils/mergeByName.js -function mergeByName(modifiers) { - var merged = modifiers.reduce(function(merged2, current) { - var existing = merged2[current.name]; - merged2[current.name] = existing ? Object.assign({}, existing, current, { - options: Object.assign({}, existing.options, current.options), - data: Object.assign({}, existing.data, current.data) - }) : current; - return merged2; - }, {}); - return Object.keys(merged).map(function(key) { - return merged[key]; - }); -} +.fad.fa-inverse { + color: #fff; +}`;function Hb(){var a=N3,c=A3,e=G.familyPrefix,i=G.replacementClass,n=Cb;if(e!==a||i!==c){var o=new RegExp("\\.".concat(a,"\\-"),"g"),r=new RegExp("\\--".concat(a,"\\-"),"g"),t=new RegExp("\\.".concat(c),"g");n=n.replace(o,".".concat(e,"-")).replace(r,"--".concat(e,"-")).replace(t,".".concat(i))}return n}var gb=function(){function a(){Ix(this,a),this.definitions={}}return Bx(a,[{key:"add",value:function(){for(var e=this,i=arguments.length,n=new Array(i),o=0;o1&&arguments[1]!==void 0?arguments[1]:{},i=(c||{}).icon?c:V1(c||{}),n=e.mask;return n&&(n=(n||{}).icon?n:V1(n||{})),a(i,b({},e,{mask:n}))}}var a4=new gb;var X3=!1;var K3=xb(function(a){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},e=c.transform,i=e===void 0?k1:e,n=c.symbol,o=n===void 0?!1:n,r=c.mask,t=r===void 0?null:r,l=c.maskId,f=l===void 0?null:l,s=c.title,h=s===void 0?null:s,m=c.titleId,z=m===void 0?null:m,v=c.classes,M=v===void 0?[]:v,p=c.attributes,C=p===void 0?{}:p,H=c.styles,L=H===void 0?{}:H;if(!!a){var d=a.prefix,N=a.iconName,V=a.icon;return Lb(b({type:"icon"},a),function(){return Vb(),G.autoA11y&&(h?C["aria-labelledby"]="".concat(G.replacementClass,"-title-").concat(z||z2()):(C["aria-hidden"]="true",C.focusable="false")),vb({icons:{main:Y3(V),mask:t?Y3(t.icon):{found:!1,width:null,height:null,icon:{}}},prefix:d,iconName:N,transform:b({},k1,i),symbol:o,title:h,maskId:f,titleId:z,extra:{attributes:C,styles:L,classes:M}})})}});var W1=J(require("obsidian"));var e4=["logo-crystal","create-new","trash","search","right-triangle","document","folder","pencil","left-arrow","right-arrow","three-horizontal-bars","dot-network","audio-file","image-file","pdf-file","gear","documents","blocks","go-to-file","presentation","cross-in-box","microphone","microphone-filled","link","popup-open","checkmark","hashtag","left-arrow-with-tail","right-arrow-with-tail","up-arrow-with-tail","down-arrow-with-tail","lines-of-text","vertical-three-dots","pin","magnifying-glass","info","horizontal-split","vertical-split","calendar-with-checkmark","sheets-in-box","up-and-down-arrows","broken-link","cross","any-key","reset","star","crossed-star","dice","filled-pin","enter","help","vault","open-vault","paper-plane","bullet-list","uppercase-lowercase-a","star-list","expand-vertically","languages","switch","pane-layout","install","sync","check-in-circle","sync-small","check-small","paused","forward-arrow","stacked-levels","bracket-glyph","note-glyph","tag-glyph","price-tag-glyph","heading-glyph","bold-glyph","italic-glyph","strikethrough-glyph","highlight-glyph","code-glyph","quote-glyph","link-glyph","bullet-list-glyph","number-list-glyph","checkbox-glyph","undo-glyph","redo-glyph","up-chevron-glyph","down-chevron-glyph","left-chevron-glyph","right-chevron-glyph","percent-sign-glyph","keyboard-glyph","double-up-arrow-glyph","double-down-arrow-glyph","image-glyph","wrench-screwdriver-glyph","clock","plus-with-circle","minus-with-circle","indent-glyph","unindent-glyph","fullscreen","exit-fullscreen","cloud","run-command","compress-glyph","enlarge-glyph","scissors-glyph","up-curly-arrow-glyph","down-curly-arrow-glyph","plus-minus-glyph","links-going-out","links-coming-in","add-note-glyph","duplicate-glyph","clock-glyph","calendar-glyph","command-glyph","dice-glyph","file-explorer-glyph","graph-glyph","import-glyph","navigate-glyph","open-elsewhere-glyph","bullet-list-glyph","presentation-glyph","paper-plane-glyph","question-mark-glyph","restore-file-glyph","search-glyph","star-glyph","play-audio-glyph","stop-audio-glyph","tomorrow-glyph","wand-glyph","workspace-glyph","yesterday-glyph","box-glyph","merge-files-glyph","merge-files","two-blank-pages","scissors","paste","paste-text","split","select-all-text","wand","github-glyph","reading-glasses","Activity","Airplay","AlarmCheck","AlarmClockOff","AlarmClock","AlarmMinus","AlarmPlus","Album","AlertCircle","AlertOctagon","AlertTriangle","AlignCenter","AlignJustify","AlignLeft","AlignRight","Anchor","Aperture","Archive","ArrowBigDown","ArrowBigLeft","ArrowBigRight","ArrowBigUp","ArrowDownCircle","ArrowDownLeft","ArrowDownRight","ArrowDown","ArrowLeftCircle","ArrowLeftRight","ArrowLeft","ArrowRightCircle","ArrowRight","ArrowUpCircle","ArrowUpLeft","ArrowUpRight","ArrowUp","Asterisk","AtSign","Award","Axe","Banknote","BarChart2","BarChart","BatteryCharging","BatteryFull","BatteryLow","BatteryMedium","Battery","Beaker","BellMinus","BellOff","BellPlus","BellRing","Bell","Bike","Binary","Bitcoin","BluetoothConnected","BluetoothOff","BluetoothSearching","Bluetooth","Bold","BookOpen","Book","BookmarkMinus","BookmarkPlus","Bookmark","Bot","BoxSelect","Box","Briefcase","Brush","Bug","Building","Bus","Calculator","Calendar","CameraOff","Camera","Car","Carrot","Cast","CheckCircle2","CheckCircle","CheckSquare","Check","ChevronDown","ChevronFirst","ChevronLast","ChevronLeft","ChevronRight","ChevronUp","ChevronsDownUp","ChevronsDown","ChevronsLeft","ChevronsRight","ChevronsUpDown","ChevronsUp","Chrome","CircleSlashed","Circle","ClipboardCheck","ClipboardCopy","ClipboardList","ClipboardX","Clipboard","Clock1","Clock10","Clock11","Clock12","Clock2","Clock3","Clock4","Clock5","Clock6","Clock7","Clock8","Clock9","Clock","CloudDrizzle","CloudFog","CloudHail","CloudLightning","CloudMoon","CloudOff","CloudRainWind","CloudRain","CloudSnow","CloudSun","Cloud","Cloudy","Clover","Code2","Code","Codepen","Codesandbox","Coffee","Coins","Columns","Command","Compass","Contact","Contrast","Cookie","Copy","Copyleft","Copyright","CornerDownLeft","CornerDownRight","CornerLeftDown","CornerLeftUp","CornerRightDown","CornerRightUp","CornerUpLeft","CornerUpRight","Cpu","CreditCard","Crop","Cross","Crosshair","Crown","Currency","Database","Delete","Disc","DivideCircle","DivideSquare","Divide","DollarSign","DownloadCloud","Download","Dribbble","Droplet","Droplets","Drumstick","Edit2","Edit3","Edit","Egg","EqualNot","Equal","Euro","Expand","ExternalLink","EyeOff","Eye","Facebook","FastForward","Feather","Figma","FileCheck2","FileCheck","FileCode","FileDigit","FileInput","FileMinus2","FileMinus","FileOutput","FilePlus2","FilePlus","FileSearch","FileText","FileX2","FileX","File","Files","Film","Filter","FlagTriangleLeft","FlagTriangleRight","Flag","Flame","FlashlightOff","Flashlight","FlaskConical","FlaskRound","FolderMinus","FolderOpen","FolderPlus","Folder","FormInput","Forward","Framer","Frown","FunctionSquare","Gamepad2","Gamepad","Gauge","Gavel","Gem","Ghost","Gift","GitBranchPlus","GitBranch","GitCommit","GitMerge","GitPullRequest","Github","Gitlab","Glasses","Globe2","Globe","Grab","GraduationCap","Grid","GripHorizontal","GripVertical","Hammer","HandMetal","Hand","HardDrive","HardHat","Hash","Haze","Headphones","Heart","HelpCircle","Hexagon","Highlighter","History","Home","ImageMinus","ImageOff","ImagePlus","Image","Import","Inbox","Indent","IndianRupee","Infinity","Info","Inspect","Instagram","Italic","JapaneseYen","Key","Landmark","Languages","Laptop2","Laptop","LassoSelect","Lasso","Layers","LayoutDashboard","LayoutGrid","LayoutList","LayoutTemplate","Layout","Library","LifeBuoy","LightbulbOff","Lightbulb","Link2Off","Link2","Link","Linkedin","ListChecks","ListMinus","ListOrdered","ListPlus","ListX","List","Loader2","Loader","LocateFixed","Locate","Lock","LogIn","LogOut","Mail","MapPin","Map","Maximize2","Maximize","Megaphone","Meh","Menu","MessageCircle","MessageSquare","MicOff","Mic","Minimize2","Minimize","MinusCircle","MinusSquare","Minus","MonitorOff","MonitorSpeaker","Monitor","Moon","MoreHorizontal","MoreVertical","MountainSnow","Mountain","MousePointer2","MousePointerClick","MousePointer","MoveDiagonal2","MoveDiagonal","MoveHorizontal","MoveVertical","Move","Music","Navigation2","Navigation","Network","Octagon","Option","Outdent","PackageCheck","PackageMinus","PackagePlus","PackageSearch","PackageX","Package","Palette","Paperclip","PauseCircle","PauseOctagon","Pause","PenTool","Pencil","Percent","PersonStanding","PhoneCall","PhoneForwarded","PhoneIncoming","PhoneMissed","PhoneOff","PhoneOutgoing","Phone","PieChart","PiggyBank","Pin","Pipette","Plane","PlayCircle","Play","PlugZap","PlusCircle","PlusSquare","Plus","Pocket","Podcast","Pointer","PoundSterling","PowerOff","Power","Printer","QrCode","Quote","RadioReceiver","Radio","Redo","RefreshCcw","RefreshCw","Regex","Repeat1","Repeat","ReplyAll","Reply","Rewind","RockingChair","RotateCcw","RotateCw","Rss","Ruler","RussianRuble","Save","Scale","ScanLine","Scan","Scissors","ScreenShareOff","ScreenShare","Search","Send","SeparatorHorizontal","SeparatorVertical","ServerCrash","ServerOff","Server","Settings2","Settings","Share2","Share","Sheet","ShieldAlert","ShieldCheck","ShieldClose","ShieldOff","Shield","Shirt","ShoppingBag","ShoppingCart","Shovel","Shrink","Shuffle","SidebarClose","SidebarOpen","Sidebar","Sigma","SignalHigh","SignalLow","SignalMedium","SignalZero","Signal","SkipBack","SkipForward","Skull","Slack","Slash","Sliders","SmartphoneCharging","Smartphone","Smile","Snowflake","SortAsc","SortDesc","Speaker","Sprout","Square","StarHalf","Star","StopCircle","Strikethrough","Subscript","Sun","Sunrise","Sunset","Superscript","SwissFranc","SwitchCamera","Table","Tablet","Tag","Target","Tent","TerminalSquare","Terminal","TextCursorInput","TextCursor","ThermometerSnowflake","ThermometerSun","Thermometer","ThumbsDown","ThumbsUp","Ticket","TimerOff","TimerReset","Timer","ToggleLeft","ToggleRight","Tornado","Trash2","Trash","Trello","TrendingDown","TrendingUp","Triangle","Truck","Tv2","Tv","Twitch","Twitter","Type","Umbrella","Underline","Undo","Unlink2","Unlink","Unlock","UploadCloud","Upload","UserCheck","UserMinus","UserPlus","UserX","User","Users","Verified","Vibrate","VideoOff","Video","View","Voicemail","Volume1","Volume2","VolumeX","Volume","Wallet","Wand","Watch","Webcam","WifiOff","Wifi","Wind","WrapText","Wrench","XCircle","XOctagon","XSquare","X","Youtube","ZapOff","Zap","ZoomIn","ZoomOut"];a4.add(j2,Z2,q2,F2);var i4=class{constructor(c){this.plugin=c;this.DOWNLOADED={};this.FONT_AWESOME_MAP=new Map([Object.values(j2),Object.values(Z2),Object.values(q2)].flat().map(c=>[c.iconName,{name:c.iconName,type:"font-awesome"}]));this.iconDefinitions=[]}async load(){for(let c of this.plugin.data.icons)await this.plugin.app.vault.adapter.exists(this.localIconPath(c))?this.DOWNLOADED[c]=JSON.parse(await this.plugin.app.vault.adapter.read(`${this.plugin.app.plugins.getPluginFolder()}/obsidian-admonition/${c}.json`)):await this.downloadIcon(c);this.setIconDefinitions()}setIconDefinitions(){let c=[];for(let e of this.plugin.data.icons){if(!(e in this.DOWNLOADED))continue;let i=this.DOWNLOADED[e];c.push(...Object.keys(i).map(n=>({type:e,name:n})))}this.iconDefinitions=[...this.plugin.data.useFontAwesome?this.FONT_AWESOME_MAP.values():[],...e4.map(e=>({type:"obsidian",name:e})),...c]}iconPath(c){return`https://raw.githubusercontent.com/valentine195/obsidian-admonition/master/icons/${c}/icons.json`}localIconPath(c){return`${this.plugin.app.plugins.getPluginFolder()}/obsidian-admonition/${c}.json`}async downloadIcon(c){try{let e=await(await fetch(this.iconPath(c))).json();this.plugin.data.icons.push(c),this.plugin.data.icons=[...new Set(this.plugin.data.icons)],await this.plugin.app.vault.adapter.write(this.localIconPath(c),JSON.stringify(e)),this.DOWNLOADED[c]=e,await this.plugin.saveSettings(),this.setIconDefinitions(),new W1.Notice(`${H1[c]} successfully downloaded.`)}catch(e){console.error(e),new W1.Notice("Could not download icon pack")}}async removeIcon(c){await this.plugin.app.vault.adapter.remove(this.localIconPath(c)),delete this.DOWNLOADED[c],this.plugin.data.icons.remove(c),this.plugin.data.icons=[...new Set(this.plugin.data.icons)],await this.plugin.saveSettings(),this.setIconDefinitions()}getIconType(c){if(V1({iconName:c,prefix:"fas"})||V1({iconName:c,prefix:"far"})||V1({iconName:c,prefix:"fab"}))return"font-awesome";if(e4.includes(c))return"obsidian";for(let[e,i]of Object.entries(this.DOWNLOADED))if(c in i)return e}getIconModuleName(c){if(c.type==="font-awesome")return"Font Awesome";if(c.type==="obsidian")return"Obsidian Icon";if(c.type!=="image"&&c.type in H1)return H1[c.type]}getIconNode(c){if(c.type==="image"){let e=new Image;return e.src=c.name,e}if(c.type=="obsidian"){let e=createDiv();return(0,W1.setIcon)(e,c.name),e}if(this.DOWNLOADED[c.type]?.[c.name]){let e=createDiv();return e.innerHTML=this.DOWNLOADED[c.type]?.[c.name],e.children[0]}for(let e of["fas","far","fab"]){let i=V1({iconName:c.name,prefix:e});if(i)return K3(i).node[0]}}};var L1=J(require("obsidian"));var n4=J(require("obsidian")),o4=class extends n4.EditorSuggest{constructor(c){super(c.app);this.plugin=c}getSuggestions(c){return Object.keys(this.plugin.admonitions).filter(e=>e.toLowerCase().contains(c.query.toLowerCase()))}renderSuggestion(c,e){e.createSpan({text:c})}selectSuggestion(c,e){if(!this.context)return;let i=this.context.editor.getLine(this.context.end.line).slice(this.context.end.ch),[n,o]=i.match(/^(\] ?)/)??[];this.context.editor.replaceRange(`${c}] `,this.context.start,{...this.context.end,ch:this.context.start.ch+this.context.query.length+(o?.length??0)},"admonitions"),this.context.editor.setCursor(this.context.start.line,this.context.start.ch+c.length+2),this.close()}onTrigger(c,e,i){let n=e.getLine(c.line);if(/> \[!\w+\]/.test(n.slice(0,c.ch))||!/> \[!\w*/.test(n))return null;let o=n.match(/> \[!(\w*)\]?/);if(!o)return null;let[r,t]=o;return!t||Object.keys(this.plugin.admonitions).find(f=>f.toLowerCase()==t.toLowerCase())?null:{end:c,start:{ch:o.index+4,line:c.line},query:t}}},t4=class extends n4.EditorSuggest{constructor(c){super(c.app);this.plugin=c}getSuggestions(c){return Object.keys(this.plugin.admonitions).filter(e=>e.toLowerCase().contains(c.query.toLowerCase()))}renderSuggestion(c,e){e.createSpan({text:c})}selectSuggestion(c,e){!this.context||(this.context.editor.replaceRange(`${c}`,this.context.start,this.context.end,"admonitions"),this.close())}onTrigger(c,e,i){let n=e.getLine(c.line);if(!/```ad-\w+/.test(n))return null;let o=n.match(/```ad-(\w+)/);if(!o)return null;let[r,t]=o;return!t||Object.keys(this.plugin.admonitions).find(f=>f.toLowerCase()==t.toLowerCase())?null:{end:c,start:{ch:o.index+6,line:c.line},query:t}}};var d2=class extends L1.Component{constructor(c){super();this.plugin=c;this.heights=["height","padding-top","padding-bottom","margin-top","margin-bottom"];this.heightMap=new WeakMap;this.indexing=[];this.style=document.head.createEl("style",{attr:{id:"ADMONITIONS_CUSTOM_STYLE_SHEET"}})}onload(){document.head.appendChild(this.style);for(let c of Object.values(this.plugin.data.userAdmonitions))this.addAdmonition(c);this.setUseSnippet(),this.plugin.registerEditorSuggest(new o4(this.plugin)),this.plugin.registerMarkdownPostProcessor(this.calloutProcessor.bind(this))}calloutProcessor(c,e){let i=c?.querySelector(".callout");if(!i)return;let n=i.dataset.callout,o=this.plugin.admonitions[n];if(!o)return;let r=i.querySelector(".callout-title"),t=i.querySelector(".callout-content"),l=e.getSectionInfo(c);if(l){let{text:f,lineStart:s,lineEnd:h}=l,m=f.split(` +`)[s],[,z]=m.match(/> \[!.+\|(.*)]/)??[];if(z&&(i.dataset.calloutMetadata=z),this.plugin.admonitions[n].copy??this.plugin.data.copyButton){let v=t.createDiv("admonition-content-copy");(0,L1.setIcon)(v,"copy"),v.addEventListener("click",()=>{navigator.clipboard.writeText(f.split(` +`).slice(s+1,h+1).join(` +`).replace(/^> /gm,"")).then(async()=>{new L1.Notice("Callout content copied to clipboard.")})})}}if(o.noTitle&&!i.dataset.calloutFold&&r.addClass("no-title"),!o.noTitle&&this.plugin.data.autoCollapse&&!i.dataset.calloutFold&&this.setCollapsible(i),o.title&&r.textContent==n[0].toUpperCase()+n.slice(1).toLowerCase()){let f=r.querySelector(".callout-title-inner");f&&f.setText(o.title)}this.plugin.data.dropShadow&&i.addClass("drop-shadow")}setCollapsible(c){let e=c.querySelector(".callout-title"),i=c.querySelector(".callout-content");if(!i)return;c.addClass("is-collapsible"),this.plugin.data.defaultCollapseType=="closed"?(c.dataset.calloutFold="-",c.addClass("is-collapsed")):c.dataset.calloutFold="+";let n=e.createDiv("callout-fold");(0,L1.setIcon)(n,"chevron-down");let o=c.hasClass("is-collapsed");if(this.getComputedHeights(i),o)for(let r of this.heights)i.style.setProperty(r,"0px");e.onclick=r=>{r.preventDefault();function t(l){i.removeEventListener("transitionend",t),i.style.removeProperty("transition")}if(i.addEventListener("transitionend",t),i.style.setProperty("transition","all 100ms cubic-bezier(.02, .01, .47, 1)"),o=c.hasClass("is-collapsed"),r.button==0){for(let l of this.heights){let f=this.getComputedHeights(i);i.style.setProperty(l,o?f[l]:"0px")}c.toggleClass("is-collapsed",!o)}}}getComputedHeights(c){if(this.heightMap.has(c))return this.heightMap.get(c);let e=getComputedStyle(c),i={};for(let n of this.heights)i[n]=e.getPropertyValue(n);return this.heightMap.set(c,i),i}generateCssString(){let c=[`/* This snippet was auto-generated by the Admonitions plugin on ${new Date().toLocaleString()} */ -// node_modules/@popperjs/core/lib/createPopper.js -var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element."; -var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash."; -var DEFAULT_OPTIONS = { - placement: "bottom", - modifiers: [], - strategy: "absolute" -}; -function areValidElements() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return !args.some(function(element) { - return !(element && typeof element.getBoundingClientRect === "function"); - }); -} -function popperGenerator(generatorOptions) { - if (generatorOptions === void 0) { - generatorOptions = {}; - } - var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; - return function createPopper2(reference2, popper2, options) { - if (options === void 0) { - options = defaultOptions; - } - var state = { - placement: "bottom", - orderedModifiers: [], - options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), - modifiersData: {}, - elements: { - reference: reference2, - popper: popper2 - }, - attributes: {}, - styles: {} - }; - var effectCleanupFns = []; - var isDestroyed = false; - var instance = { - state, - setOptions: function setOptions(options2) { - cleanupModifierEffects(); - state.options = Object.assign({}, defaultOptions, state.options, options2); - state.scrollParents = { - reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], - popper: listScrollParents(popper2) - }; - var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers))); - state.orderedModifiers = orderedModifiers.filter(function(m) { - return m.enabled; - }); - if (true) { - var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref2) { - var name = _ref2.name; - return name; - }); - validateModifiers(modifiers); - if (getBasePlacement(state.options.placement) === auto) { - var flipModifier = state.orderedModifiers.find(function(_ref2) { - var name = _ref2.name; - return name === "flip"; - }); - if (!flipModifier) { - console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" ")); - } - } - var _getComputedStyle = getComputedStyle2(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft; - if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) { - return parseFloat(margin); - })) { - console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" ")); - } - } - runModifierEffects(); - return instance.update(); - }, - forceUpdate: function forceUpdate() { - if (isDestroyed) { - return; - } - var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; - if (!areValidElements(reference3, popper3)) { - if (true) { - console.error(INVALID_ELEMENT_ERROR); - } - return; - } - state.rects = { - reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"), - popper: getLayoutRect(popper3) - }; - state.reset = false; - state.placement = state.options.placement; - state.orderedModifiers.forEach(function(modifier) { - return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); - }); - var __debug_loops__ = 0; - for (var index = 0; index < state.orderedModifiers.length; index++) { - if (true) { - __debug_loops__ += 1; - if (__debug_loops__ > 100) { - console.error(INFINITE_LOOP_ERROR); - break; - } - } - if (state.reset === true) { - state.reset = false; - index = -1; - continue; - } - var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; - if (typeof fn2 === "function") { - state = fn2({ - state, - options: _options, - name, - instance - }) || state; - } - } - }, - update: debounce(function() { - return new Promise(function(resolve2) { - instance.forceUpdate(); - resolve2(state); - }); - }), - destroy: function destroy() { - cleanupModifierEffects(); - isDestroyed = true; - } - }; - if (!areValidElements(reference2, popper2)) { - if (true) { - console.error(INVALID_ELEMENT_ERROR); - } - return instance; - } - instance.setOptions(options).then(function(state2) { - if (!isDestroyed && options.onFirstUpdate) { - options.onFirstUpdate(state2); - } - }); - function runModifierEffects() { - state.orderedModifiers.forEach(function(_ref3) { - var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect4 = _ref3.effect; - if (typeof effect4 === "function") { - var cleanupFn = effect4({ - state, - name, - instance, - options: options2 - }); - var noopFn = function noopFn2() { - }; - effectCleanupFns.push(cleanupFn || noopFn); - } - }); - } - function cleanupModifierEffects() { - effectCleanupFns.forEach(function(fn2) { - return fn2(); - }); - effectCleanupFns = []; - } - return instance; - }; -} +`];for(let e of Array.from(this.sheet.cssRules))c.push(e.cssText);return c.join(` -// node_modules/@popperjs/core/lib/popper.js -var defaultModifiers = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default, offset_default, flip_default, preventOverflow_default, arrow_default, hide_default]; -var createPopper = /* @__PURE__ */ popperGenerator({ - defaultModifiers -}); +`)}addAdmonition(c){if(!c.icon)return;let e;c.icon.type=="obsidian"?e=`.callout[data-callout="${c.type}"] { + --callout-color: ${c.color}; /* RGB Tuple (just like admonitions) */ + --callout-icon: ${c.icon.name}; /* Icon name from the Obsidian Icon Set */ +}`:e=`.callout[data-callout="${c.type}"] { + --callout-color: ${c.color}; + --callout-icon: '${(this.plugin.iconManager.getIconNode(c.icon)?.outerHTML??"").replace(/(width|height)=(\\?"|')\d+(\\?"|')/g,"")}'; + }`,this.indexing.contains(c.type)&&this.sheet.deleteRule(this.indexing.indexOf(c.type)),this.indexing=[...this.indexing.filter(i=>i!=c.type),c.type],this.sheet.insertRule(e,this.sheet.cssRules.length),this.updateSnippet()}removeAdmonition(c){if(!this.indexing.contains(c.type))return;let e=this.indexing.indexOf(c.type);this.sheet.deleteRule(e),this.indexing.splice(e,1),this.updateSnippet()}get sheet(){return this.style.sheet}unload(){this.style.detach()}get snippetPath(){return this.plugin.app.customCss.getSnippetPath(this.plugin.data.snippetPath)}setUseSnippet(){this.plugin.data.useSnippet&&this.updateSnippet()}async updateSnippet(){!this.plugin.data.useSnippet||(await this.plugin.app.vault.adapter.exists(this.snippetPath)?await this.plugin.app.vault.adapter.write(this.snippetPath,this.generateCssString()):await this.plugin.app.vault.create(this.snippetPath,this.generateCssString()),this.plugin.app.customCss.setCssEnabledStatus(this.plugin.data.snippetPath,!0),this.plugin.app.customCss.readCssFolders())}};var bb={userAdmonitions:{},syntaxHighlight:!1,copyButton:!1,version:"",autoCollapse:!1,defaultCollapseType:"open",injectColor:!0,parseTitles:!0,dropShadow:!0,hideEmpty:!1,open:{admonitions:!0,icons:!0,other:!0,advanced:!1},icons:[],useFontAwesome:!0,rpgDownloadedOnce:!1,msDocConverted:!1,useSnippet:!1,snippetPath:`custom-admonitions.${[...Array(6).keys()].map(()=>(16*Math.random()|0).toString(16)).join("")}`},r4=class extends x.Plugin{constructor(){super(...arguments);this.postprocessors=new Map;this.iconManager=new i4(this)}get types(){return Object.keys(this.admonitions)}get admonitionArray(){return Object.keys(this.admonitions).map(c=>({...this.admonitions[c],type:c}))}async onload(){console.log("Obsidian Admonition loaded"),this.postprocessors=new Map,await this.loadSettings(),await this.iconManager.load(),this.app.workspace.onLayoutReady(async()=>{this.addChild(this.calloutManager=new d2(this)),this.registerEditorSuggest(new t4(this)),Object.keys(this.admonitions).forEach(c=>{this.registerType(c)}),this.addSettingTab(new l2(this.app,this)),(0,x.addIcon)(K1,M4),(0,x.addIcon)(Q1,C4),(0,x.addIcon)(P1,H4),(0,x.addIcon)(E1,g4),this.addCommand({id:"collapse-admonitions",name:"Collapse Admonitions in Note",checkCallback:c=>{if(c)return!!this.app.workspace.getActiveViewOfType(x.MarkdownView);let e=this.app.workspace.getActiveViewOfType(x.MarkdownView);if(!e||!(e instanceof x.MarkdownView))return;let i=e.contentEl.querySelectorAll("details[open].admonition-plugin");for(let n=0;n{if(c)return!!this.app.workspace.getActiveViewOfType(x.MarkdownView);let e=this.app.workspace.getActiveViewOfType(x.MarkdownView);if(!e||!(e instanceof x.MarkdownView))return;let i=e.contentEl.querySelectorAll("details:not([open]).admonition-plugin");for(let n=0;n{let i=new r2(this);i.onClose=()=>{if(!i.insert)return;let n="",o="";i.title.length&&i.title.toLowerCase()!=i.type.toLowerCase()&&(n=`title: ${i.title} +`),(this.data.autoCollapse&&i.collapse!=this.data.defaultCollapseType||!this.data.autoCollapse&&i.collapse!="none")&&(o=`collapse: ${i.collapse} +`),c.getDoc().replaceSelection(`\`\`\`ad-${i.type} +${n}${o} +${c.getDoc().getSelection()} +\`\`\` +`);let r=c.getCursor();c.setCursor(r.line-3)},i.open()}}),this.addCommand({id:"insert-callout",name:"Insert Callout",editorCallback:(c,e)=>{let i=new r2(this);i.onClose=()=>{if(!i.insert)return;let n="",o="";if(this.data.autoCollapse&&i.collapse!=this.data.defaultCollapseType||!this.data.autoCollapse&&i.collapse!="none")switch(i.collapse){case"open":{o="+";break}case"closed":{o="-";break}}i.title.length&&i.title.toLowerCase()!=i.type.toLowerCase()&&(n=` ${i.title}`);let r=c.getDoc().getSelection();c.getDoc().replaceSelection(`> [!${i.type}]${o}${n} +> ${r.split(` +`).join(` +> `)} +`)},i.open()}})})}async downloadIcon(c){this.iconManager.downloadIcon(c)}async removeIcon(c){this.iconManager.removeIcon(c)}async postprocessor(c,e,i,n){if(!!this.admonitions[c])try{let o=typeof n=="string"?n:n?.sourcePath??this.app.workspace.getActiveFile()?.path??"",{title:r,collapse:t,content:l,icon:f,color:s}=u4(c,e,this.admonitions[c]);this.data.autoCollapse&&!t?t=this.data.defaultCollapseType??"open":t&&t.trim()==="none"&&(t="");let h=this.admonitions[c],m=this.getAdmonitionElement(c,r,this.iconManager.iconDefinitions.find(({name:v})=>f===v)??h.icon,s??(h.injectColor??this.data.injectColor?h.color:null),t);this.renderAdmonitionContent(m,c,l,n,o,e),t&&t!="none"&&this.calloutManager.setCollapsible(m);let z=i.parentElement;return z&&z.addClass("admonition-parent",`admonition-${c}-parent`),i.replaceWith(m),m}catch(o){console.error(o);let r=createEl("pre");r.createEl("code",{attr:{style:"color: var(--text-error) !important"}}).createSpan({text:`There was an error rendering the admonition: -// src/modal/index.ts -var Suggester = class { - constructor(owner, containerEl, scope) { - this.containerEl = containerEl; - this.owner = owner; - containerEl.on("click", ".suggestion-item", this.onSuggestionClick.bind(this)); - containerEl.on("mousemove", ".suggestion-item", this.onSuggestionMouseover.bind(this)); - scope.register([], "ArrowUp", () => { - this.setSelectedItem(this.selectedItem - 1, true); - return false; - }); - scope.register([], "ArrowDown", () => { - this.setSelectedItem(this.selectedItem + 1, true); - return false; - }); - scope.register([], "Enter", (evt) => { - this.useSelectedItem(evt); - return false; - }); - scope.register([], "Tab", (evt) => { - this.useSelectedItem(evt); - return false; - }); - } - chooseSuggestion(evt) { - if (!this.items || !this.items.length) - return; - const currentValue = this.items[this.selectedItem]; - if (currentValue) { - this.owner.selectSuggestion(currentValue, evt); - } - } - onSuggestionClick(event, el) { - event.preventDefault(); - if (!this.suggestions || !this.suggestions.length) - return; - const item = this.suggestions.indexOf(el); - this.setSelectedItem(item, false); - this.useSelectedItem(event); - } - onSuggestionMouseover(event, el) { - if (!this.suggestions || !this.suggestions.length) - return; - const item = this.suggestions.indexOf(el); - this.setSelectedItem(item, false); - } - empty() { - this.containerEl.empty(); - } - setSuggestions(items) { - this.containerEl.empty(); - const els = []; - items.forEach((item) => { - const suggestionEl = this.containerEl.createDiv("suggestion-item"); - this.owner.renderSuggestion(item, suggestionEl); - els.push(suggestionEl); - }); - this.items = items; - this.suggestions = els; - this.setSelectedItem(0, false); - } - useSelectedItem(event) { - if (!this.items || !this.items.length) - return; - const currentValue = this.items[this.selectedItem]; - if (currentValue) { - this.owner.selectSuggestion(currentValue, event); - } - if (import_obsidian2.Platform.isMobile) { - this.chooseSuggestion(event); - } - } - wrap(value, size) { - return (value % size + size) % size; - } - setSelectedItem(index, scroll) { - const nIndex = this.wrap(index, this.suggestions.length); - const prev = this.suggestions[this.selectedItem]; - const next = this.suggestions[nIndex]; - if (prev) - prev.removeClass("is-selected"); - if (next) - next.addClass("is-selected"); - this.selectedItem = nIndex; - if (scroll) { - next.scrollIntoView(false); - } - } -}; -var SuggestionModal = class extends import_obsidian2.FuzzySuggestModal { - constructor(app, inputEl, items) { - super(app); - this.items = []; - this.scope = new import_obsidian2.Scope(); - this.emptyStateText = "No match found"; - this.limit = 100; - this.inputEl = inputEl; - this.items = items; - this.suggestEl = createDiv("suggestion-container"); - this.contentEl = this.suggestEl.createDiv("suggestion"); - this.suggester = new Suggester(this, this.contentEl, this.scope); - this.scope.register([], "Escape", this.close.bind(this)); - this.inputEl.addEventListener("input", this.onInputChanged.bind(this)); - this.inputEl.addEventListener("focus", this.onInputChanged.bind(this)); - this.inputEl.addEventListener("blur", this.close.bind(this)); - this.suggestEl.on("mousedown", ".suggestion-container", (event) => { - event.preventDefault(); - }); - } - empty() { - this.suggester.empty(); - } - onInputChanged() { - const inputStr = this.modifyInput(this.inputEl.value); - const suggestions = this.getSuggestions(inputStr); - if (suggestions.length > 0) { - this.suggester.setSuggestions(suggestions.slice(0, this.limit)); - } else { - this.onNoSuggestion(); - } - this.open(); - } - modifyInput(input) { - return input; - } - onNoSuggestion() { - this.empty(); - this.renderSuggestion(null, this.contentEl.createDiv("suggestion-item")); - } - open() { - this.app.keymap.pushScope(this.scope); - document.body.appendChild(this.suggestEl); - this.popper = createPopper(this.inputEl, this.suggestEl, { - placement: "bottom-start", - modifiers: [ - { - name: "offset", - options: { - offset: [0, 10] - } - }, - { - name: "flip", - options: { - fallbackPlacements: ["top"] - } - } - ] - }); - } - close() { - this.app.keymap.popScope(this.scope); - this.suggester.setSuggestions([]); - if (this.popper) { - this.popper.destroy(); - } - this.suggestEl.detach(); - } - createPrompt(prompts) { - if (!this.promptEl) - this.promptEl = this.suggestEl.createDiv("prompt-instructions"); - let prompt = this.promptEl.createDiv("prompt-instruction"); - for (let p2 of prompts) { - prompt.appendChild(p2); - } - } -}; -var IconSuggestionModal = class extends SuggestionModal { - constructor(app, input) { - super(app, input.inputEl, iconDefinitions); - this.icons = iconDefinitions; - this.text = input; - this.createPrompts(); - this.inputEl.addEventListener("input", this.getItem.bind(this)); - } - createPrompts() { - } - getItem() { - const v = this.inputEl.value, icon2 = this.icons.find((iconName) => iconName.name === v.trim()); - if (icon2 == this.icon) - return; - this.icon = icon2; - if (this.icons) - this.onInputChanged(); - } - getItemText(item) { - return item.name; - } - onChooseItem(item) { - this.text.setValue(item.name); - this.icon = item; - } - selectSuggestion({ item }) { - this.text.setValue(item.name); - this.icon = item; - this.onClose(); - this.close(); - } - renderSuggestion(result, el) { - let { item, match: matches } = result || {}; - let content = el.createDiv({ - cls: "suggestion-content admonition-icon" - }); - let text = content.createDiv("suggestion-text admonition-text"); - if (!item) { - content.setText(this.emptyStateText); - content.parentElement.addClass("is-selected"); - return; - } - const matchElements = matches.matches.map((m) => { - return createSpan("suggestion-highlight"); - }); - for (let i = 0; i < item.name.length; i++) { - let match = matches.matches.find((m) => m[0] === i); - if (match) { - let element = matchElements[matches.matches.indexOf(match)]; - text.appendChild(element); - element.appendText(item.name.substring(match[0], match[1])); - i += match[1] - match[0] - 1; - continue; - } - text.appendText(item.name[i]); - } - const iconDiv = createDiv("suggestion-flair admonition-suggester-icon"); - iconDiv.appendChild(getIconNode(item)); - content.appendChild(iconDiv); - content.createDiv({ - cls: "suggestion-note", - text: getIconModuleName(item) - }); - } - getItems() { - return this.icons; - } -}; -var AdmonitionSuggestionModal = class extends SuggestionModal { - constructor(app, input, items) { - super(app, input.inputEl, items); - this.admonitions = [...items]; - this.text = input; - this.createPrompts(); - this.inputEl.addEventListener("input", this.getItem.bind(this)); - } - createPrompts() { - } - getItem() { - const v = this.inputEl.value, admonition = this.admonitions.find((admonition2) => admonition2.type === v.trim()); - if (admonition == this.admonition) - return; - this.admonition = admonition; - if (this.admonitions) - this.onInputChanged(); - } - getItemText(item) { - return item.type; - } - onChooseItem(item) { - this.text.setValue(item.type); - this.admonition = item; - } - selectSuggestion({ item }) { - this.text.setValue(item.type); - this.onClose(); - this.close(); - } - renderSuggestion(result, el) { - let { item, match: matches } = result || {}; - let content = el.createDiv({ - cls: "suggestion-content icon" - }); - if (!item) { - content.setText(this.emptyStateText); - content.parentElement.addClass("is-selected"); - return; - } - const matchElements = matches.matches.map((m) => { - return createSpan("suggestion-highlight"); - }); - for (let i = 0; i < item.type.length; i++) { - let match = matches.matches.find((m) => m[0] === i); - if (match) { - let element = matchElements[matches.matches.indexOf(match)]; - content.appendChild(element); - element.appendText(item.type.substring(match[0], match[1])); - i += match[1] - match[0] - 1; - continue; - } - content.appendText(item.type[i]); - } - const iconDiv = createDiv("suggestion-flair admonition-suggester-icon"); - iconDiv.appendChild(getIconNode(item.icon)).setAttribute("color", `rgb(${item.color})`); - content.prepend(iconDiv); - } - getItems() { - return this.admonitions; - } -}; -var InsertAdmonitionModal = class extends import_obsidian2.Modal { - constructor(plugin, editor) { - super(plugin.app); - this.plugin = plugin; - this.editor = editor; - this.collapse = this.plugin.data.autoCollapse ? this.plugin.data.defaultCollapseType : "none"; - this.containerEl.addClass("insert-admonition-modal"); - this.onOpen = () => this.display(true); - } - async display(focus) { - const { contentEl } = this; - contentEl.empty(); - const typeSetting = new import_obsidian2.Setting(contentEl); - typeSetting.setName("Admonition Type").addText((t2) => { - t2.setPlaceholder("Admonition Type").setValue(this.type); - const modal = new AdmonitionSuggestionModal(this.app, t2, this.plugin.admonitionArray); - const build3 = () => { - if (t2.inputEl.value && this.plugin.admonitions[t2.inputEl.value]) { - this.type = t2.inputEl.value; - if (!this.title?.length) { - this.title = this.type[0].toUpperCase() + this.type.slice(1).toLowerCase(); - } - titleInput.setValue(this.title); - } else { - new import_obsidian2.Notice("No admonition type by that name exists."); - t2.inputEl.value = ""; - } - this.buildAdmonition(); - }; - t2.inputEl.onblur = build3; - modal.onClose = build3; - if (focus) { - modal.open(); - t2.inputEl.focus(); - } - }); - let titleInput; - const titleSetting = new import_obsidian2.Setting(contentEl); - titleSetting.setName("Admonition Title").setDesc("Leave blank to render without a title.").addText((t2) => { - titleInput = t2; - t2.setValue(this.title); - t2.onChange((v) => { - this.title = v; - if (v.length == 0) { - this.noTitle = true; - } else { - this.noTitle = false; - } - if (this.element) { - const admonition = this.plugin.admonitions[this.type]; - const element = this.plugin.getAdmonitionElement(this.type, this.title, admonition.icon, admonition.injectColor ?? this.plugin.data.injectColor ? admonition.color : null, this.collapse); - element.createDiv({ - cls: "admonition-content", - text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla." - }); - this.element.replaceWith(element); - this.element = element; - } - }); - }); - const collapseSetting = new import_obsidian2.Setting(contentEl); - collapseSetting.setName("Make Collapsible").addDropdown((d) => { - d.addOption("open", "Open"); - d.addOption("closed", "Closed"); - d.addOption("none", "None"); - d.setValue(this.collapse); - d.onChange((v) => { - this.collapse = v; - this.buildAdmonition(); - }); - }); - this.admonitionEl = this.contentEl.createDiv(); - this.buildAdmonition(); - new import_obsidian2.Setting(contentEl).addButton((b) => b.setButtonText("Insert").setCta().onClick(() => { - try { - let titleLine = "", collapseLine = ""; - if (this.title.length && this.title.toLowerCase() != this.type.toLowerCase()) { - titleLine = `title: ${this.title} -`; - } - if (this.plugin.data.autoCollapse && this.collapse != this.plugin.data.defaultCollapseType || !this.plugin.data.autoCollapse && this.collapse != "none") { - collapseLine = `collapse: ${this.collapse} -`; - } - this.editor.getDoc().replaceSelection(`\`\`\`ad-${this.type} -${titleLine}${collapseLine} -${this.editor.getDoc().getSelection()} +`+e}),i.replaceWith(r)}}getAdmonitionElement(c,e,i,n,o){let r=createDiv({cls:`callout admonition admonition-${c} admonition-plugin ${e?.trim().length?"":"no-title"}`,attr:{style:`--admonition-color: ${n};`,"data-callout":c,"data-callout-fold":""}}),t=r.createDiv({cls:`callout-title admonition-title ${e?.trim().length?"":"no-title"}`});if(e&&e.trim().length){let l=t.createDiv("callout-icon admonition-title-icon");i&&i.name&&i.type&&l.appendChild(this.iconManager.getIconNode(i)??createDiv());let f=t.createDiv("callout-title-inner admonition-title-content");x.MarkdownRenderer.renderMarkdown(e,f,"",null),f.firstElementChild&&f.firstElementChild instanceof HTMLParagraphElement&&f.setChildrenInPlace(Array.from(f.firstElementChild.childNodes))}return o&&(r.addClass("is-collapsible"),o=="closed"&&r.addClass("is-collapsed")),this.data.dropShadow||r.addClass("no-drop"),r}renderAdmonitionContent(c,e,i,n,o,r){let t=new x.MarkdownRenderChild(c);if(t.containerEl=c,n&&typeof n!="string"&&n.addChild(t),i&&i?.trim().length){let l=this.getAdmonitionContentElement(e,c,i);if(/^`{3,}mermaid/m.test(i)){let s=!c.hasAttribute("open");c instanceof HTMLDetailsElement&&c.setAttribute("open","open"),setImmediate(()=>{x.MarkdownRenderer.renderMarkdown(i,l,o,t),c instanceof HTMLDetailsElement&&s&&c.removeAttribute("open")})}else x.MarkdownRenderer.renderMarkdown(i,l,o,t);(!i.length||l.textContent.trim()=="")&&this.data.hideEmpty&&c.addClass("no-content");let f=l.querySelectorAll(".task-list-item-checkbox");if(f?.length){let s=r.split(` +`),h=0;f.forEach(m=>{let z=s.slice(h).findIndex(v=>/^[ \t>]*\- \[.\]/.test(v));z!=-1&&(m.dataset.line=`${z+h+1}`,h=z+h+1)})}}}getAdmonitionContentElement(c,e,i){let n=e.createDiv("callout-content admonition-content");if(this.admonitions[c].copy??this.data.copyButton){let o=n.createDiv("admonition-content-copy");(0,x.setIcon)(o,"copy"),o.addEventListener("click",()=>{navigator.clipboard.writeText(i.trim()).then(async()=>{new x.Notice("Admonition content copied to clipboard.")})})}return n}registerType(c){this.data.syntaxHighlight&&this.turnOnSyntaxHighlighting([c]),this.postprocessors.has(c)&&x.MarkdownPreviewRenderer.unregisterCodeBlockPostProcessor(`ad-${c}`),this.postprocessors.set(c,this.registerMarkdownCodeBlockProcessor(`ad-${c}`,(i,n,o)=>this.postprocessor(c,i,n,o)));let e=this.admonitions[c];e.command&&this.registerCommandsFor(e)}get admonitions(){return{...V4,...this.data.userAdmonitions}}async addAdmonition(c){this.data.userAdmonitions={...this.data.userAdmonitions,[c.type]:c},this.registerType(c.type),this.calloutManager.addAdmonition(c),await this.saveSettings()}registerCommandsFor(c){c.command=!0,this.addCommand({id:`insert-${c.type}-callout`,name:`Insert ${c.type} Callout`,editorCheckCallback:(e,i,n)=>{if(e)return c.command;if(c.command)try{let o=i.getDoc().getSelection();i.getDoc().replaceSelection(`> [!${c.type}] +> ${o.split(` +`).join(` +> `)} +`);let r=i.getCursor();i.setCursor(r.line-2)}catch{new x.Notice("There was an issue inserting the admonition.")}}}),this.addCommand({id:`insert-${c.type}`,name:`Insert ${c.type}`,editorCheckCallback:(e,i,n)=>{if(e)return c.command;if(c.command)try{i.getDoc().replaceSelection(`\`\`\`ad-${c.type} + +${i.getDoc().getSelection()} \`\`\` -`); - const cursor = this.editor.getCursor(); - this.editor.setCursor(cursor.line - 3); - } catch (e) { - new import_obsidian2.Notice("There was an issue inserting the admonition."); - } - this.close(); - })).addExtraButton((b) => { - b.setIcon("cross").setTooltip("Cancel").onClick(() => this.close()); - b.extraSettingsEl.setAttr("tabindex", 0); - b.extraSettingsEl.onkeydown = (evt) => { - evt.key == "Enter" && this.close(); - }; - }); - } - buildAdmonition() { - this.admonitionEl.empty(); - if (this.type && this.plugin.admonitions[this.type]) { - const admonition = this.plugin.admonitions[this.type]; - this.element = this.plugin.getAdmonitionElement(this.type, this.title, admonition.icon, admonition.injectColor ?? this.plugin.data.injectColor ? admonition.color : null, this.collapse); - this.element.createDiv({ - cls: "admonition-content", - text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla." - }); - this.admonitionEl.appendChild(this.element); - } - } -}; +`);let o=i.getCursor();i.setCursor(o.line-2)}catch{new x.Notice("There was an issue inserting the admonition.")}}}),this.addCommand({id:`insert-${c.type}-with-title`,name:`Insert ${c.type} With Title`,editorCheckCallback:(e,i,n)=>{if(e)return c.command;if(c.command)try{let o=c.title??"";i.getDoc().replaceSelection(`\`\`\`ad-${c.type} +title: ${o} -// publish/publish.admonition.txt -var publish_admonition_default = `(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else { - var a = factory(); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(self, function() { -return /******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ // The require scope -/******/ var __webpack_require__ = {}; -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -__webpack_require__.r(__webpack_exports__); - -function createEl(tag, t, e) { - const i = document.createElement(tag); - "string" == typeof t && - (t = { - cls: t - }); - const r = t || {}, o = r.cls, s = r.text, a = r.attr, l = r.title, c = r.value, u = r.type, h = e ? e : r.parent, p = r.prepend, d = r.href; - return (o && - (Array.isArray(o) - ? (i.className = o.join(" ")) - : (i.className = o)), - s && (i.textContent = s), - a && - Object.keys(a).forEach((t) => { - const n = a[t]; - null !== n && i.setAttribute(t, String(n)); - }), - l && (i.title = l), - c && - (i instanceof HTMLInputElement || - i instanceof HTMLSelectElement || - i instanceof HTMLOptionElement) && - (i.value = c), - /* u && i instanceof HTMLInputElement && (i.type = u), */ - u && i instanceof HTMLStyleElement && i.setAttribute("type", u), - d && - (i instanceof HTMLAnchorElement || i instanceof HTMLLinkElement) && - (i.href = d), - h && (p ? h.insertBefore(i, h.firstChild) : h.appendChild(i)), - i); -} -//@ts-ignore-line -const createDiv = function (o, e) { - return createEl("div", o, e); -}; -Node.prototype.createDiv = function (o, cb) { - return createDiv(o, this); -}; -Node.prototype.createEl = function (tag, o, cb) { - return createEl(tag, o, this); -}; -Element.prototype.addClass = function (...args) { - const e = []; - for (let t = 0; t < args.length; t++) - e[t] = args[t]; - this.addClasses(e); -}; -Element.prototype.addClasses = function (e) { - for (let t = 0; t < e.length; t++) - this.classList.add(e[t]); -}; -function getAdmonitionElement(type, title, icon, color, collapse, id) { - var _a; - let admonition, titleEl, attrs = { - style: \`--admonition-color: \${color};\` - }; - if (collapse && collapse != "none") { - if (collapse === "open") { - attrs.open = "open"; - } - admonition = createEl("details", { - cls: \`admonition admonition-\${type} admonition-plugin\`, - attr: attrs - }); - titleEl = admonition.createEl("summary", { - cls: \`admonition-title \${!(title === null || title === void 0 ? void 0 : title.trim().length) ? "no-title" : ""}\` - }); - } - else { - admonition = createDiv({ - cls: \`admonition admonition-\${type} admonition-plugin\`, - attr: attrs - }); - titleEl = admonition.createDiv({ - cls: \`admonition-title \${!(title === null || title === void 0 ? void 0 : title.trim().length) ? "no-title" : ""}\` - }); - } - if (id) { - admonition.id = id; - } - if (title && title.trim().length) { - /** - * Title structure - * .admonition-title - * .admonition-title-content - Rendered Markdown top-level element (e.g. H1/2/3 etc, p) - * div.admonition-title-icon - * svg - * div.admonition-title-markdown - Container of rendered markdown - * ...rendered markdown children... - */ - //get markdown - const markdownHolder = createDiv(); - //MarkdownRenderer.renderMarkdown(title, markdownHolder, "", null); - //admonition-title-content is first child of rendered markdown - const admonitionTitleContent = - /* markdownHolder?.children[0]?.tagName === "P" - ? createDiv() - : markdownHolder.children[0] ?? */ createDiv(); - //get children of markdown element, then remove them - const markdownElements = Array.from(((_a = markdownHolder.children[0]) === null || _a === void 0 ? void 0 : _a.childNodes) || []); - admonitionTitleContent.innerHTML = ""; - admonitionTitleContent.addClass("admonition-title-content"); - //build icon element - const iconEl = admonitionTitleContent.createDiv("admonition-title-icon"); - if (icon) { - iconEl.innerHTML = icon; - } - //add markdown children back - const admonitionTitleMarkdown = admonitionTitleContent.createDiv("admonition-title-markdown"); - admonitionTitleMarkdown.innerText = title; - /* for (let i = 0; i < markdownElements.length; i++) { - admonitionTitleMarkdown.appendChild(markdownElements[i]); - } */ - titleEl.appendChild(admonitionTitleContent || createDiv()); - } - //add them to title element - if (collapse) { - titleEl.createDiv("collapser").createDiv("handle"); - } - return admonition; -} -function startsWithAny(str, needles) { - for (let i = 0; i < needles.length; i++) { - if (str.startsWith(needles[i])) { - return i; - } - } - return false; -} -function getParametersFromSource(type, src) { - const keywordTokens = ["title:", "collapse:", "icon:", "color:"]; - const keywords = ["title", "collapse", "icon", "color"]; - let lines = src.split("\\n"); - let skipLines = 0; - let params = {}; - for (let i = 0; i < lines.length; i++) { - let keywordIndex = startsWithAny(lines[i], keywordTokens); - if (keywordIndex === false) { - break; - } - let foundKeyword = keywords[keywordIndex]; - if (params[foundKeyword] !== undefined) { - break; - } - params[foundKeyword] = lines[i] - .substr(keywordTokens[keywordIndex].length) - .trim(); - ++skipLines; - } - let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, icon, color } = params; - let content = lines.slice(skipLines).join("\\n"); - /** - * If the admonition should collapse, but something other than open or closed was provided, set to closed. - */ - if (collapse !== undefined && - collapse !== "none" && - collapse !== "open" && - collapse !== "closed") { - collapse = "closed"; - } - /** - * If the admonition should collapse, but title was blanked, set the default title. - */ - if (title.trim() === "" && collapse !== undefined && collapse !== "none") { - title = type[0].toUpperCase() + type.slice(1).toLowerCase(); - return; - } - return { title, collapse, content, icon, color }; -} -const blockSet = new Set(); -const ADMONITION_ICON_MAP = {}; -if (document.readyState === "complete") { - postprocess(); - registerToProcess(); -} -else { - window.onload = () => { - postprocess(); - registerToProcess(); - }; -} -function registerToProcess() { - const sizer = document.querySelector(".markdown-preview-sizer"); - const observer = new MutationObserver((mutations) => { - mutations.forEach((mutation) => { - if (mutation.type == "childList" && mutation.addedNodes.length) { - mutation.addedNodes.forEach((node) => { - var _a; - if (node && - node instanceof Element && - node.children.length && - ((_a = node.firstElementChild) === null || _a === void 0 ? void 0 : _a.tagName) === "PRE") { - //postprocess(node); - preObserver.observe(node.firstChild, { - attributes: true, - childList: false, - characterData: false, - subtree: false - }); - } - }); - } - }); - }); - observer.observe(sizer, { - attributes: false, - childList: true, - subtree: false - }); - const preObserver = new MutationObserver((mutations) => { - mutations.forEach((mutation) => { - if (mutation.target instanceof HTMLPreElement && - !blockSet.has(mutation.target) && - mutation.type === "attributes" && - mutation.attributeName === "class" && - Array.from(mutation.target.classList).some((cls) => /language-ad-(\\w+)/.test(cls))) { - blockSet.add(mutation.target); - processAdmonitionBlock(mutation.target); - } - }); - }); -} -function processAdmonitionBlock(admonitionBlock) { - const [, type] = admonitionBlock.classList - .toString() - .match(/language-ad-(\\w+)/); - if (!type) - return; - if (!(type in ADMONITION_ICON_MAP)) - return; - let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, content, icon = ADMONITION_ICON_MAP[type].icon, color = ADMONITION_ICON_MAP[type].color } = getParametersFromSource(type, admonitionBlock.innerText); - let admonition = getAdmonitionElement(type, title, icon, color, collapse); - const contentHolder = admonition.createDiv("admonition-content-holder"); - const admonitionContent = contentHolder.createDiv("admonition-content"); - admonitionContent.innerText = content; - admonitionBlock.replaceWith(admonition); -} -function postprocess() { - //do work - const admonitions = document.querySelectorAll("pre[class*='language-ad']"); - if (!admonitions.length) - return; - for (let admonitionBlock of Array.from(admonitions)) { - blockSet.add(admonitionBlock); - const [, type] = admonitionBlock.classList - .toString() - .match(/language-ad-(\\w+)/); - if (!type) - continue; - if (!(type in ADMONITION_ICON_MAP)) - continue; - let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, content, icon = ADMONITION_ICON_MAP[type].icon, color = ADMONITION_ICON_MAP[type].color } = getParametersFromSource(type, admonitionBlock.innerText); - let admonition = getAdmonitionElement(type, title, icon, color, collapse); - const contentHolder = admonition.createDiv("admonition-content-holder"); - const admonitionContent = contentHolder.createDiv("admonition-content"); - admonitionContent.innerText = content; - admonitionBlock.replaceWith(admonition); - } -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC5hZG1vbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHVibGlzaC5hZG1vbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sb0JBQW9CLENBQUM7QUFFNUIsU0FBUyxRQUFRLENBQ2IsR0FBTSxFQUNOLENBQTJCLEVBQzNCLENBQWU7SUFFZixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFDaEIsQ0FBQyxDQUFDLEdBQUc7WUFDRCxHQUFHLEVBQUUsQ0FBQztTQUNULENBQUMsQ0FBQztJQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQ2IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQ1QsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUNwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFDYixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNmLE9BQU8sQ0FDSCxDQUFDO1FBQ0csQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxX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QUFJLEVBQ3JDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQzFDLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3RCxJQUFJLFVBQVUsR0FBRyxvQkFBb0IsQ0FDakMsSUFBSSxFQUNKLEtBQUssRUFDTCxJQUFJLEVBQ0osS0FBSyxFQUNMLFFBQVEsQ0FDWCxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRXhFLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXhFLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFFdEMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUMzQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCIuLi9hc3NldHMvbWFpbi5jc3NcIjtcclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUVsPEsgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxyXG4gICAgdGFnOiBLLFxyXG4gICAgdD86IHN0cmluZyB8IERvbUVsZW1lbnRJbmZvLFxyXG4gICAgZT86IEhUTUxFbGVtZW50XHJcbik6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXSB7XHJcbiAgICBjb25zdCBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO1xyXG4gICAgXCJzdHJpbmdcIiA9PSB0eXBlb2YgdCAmJlxyXG4gICAgICAgICh0ID0ge1xyXG4gICAgICAgICAgICBjbHM6IHRcclxuICAgICAgICB9KTtcclxuICAgIGNvbnN0IHIgPSB0IHx8IHt9LFxyXG4gICAgICAgIG8gPSByLmNscyxcclxuICAgICAgICBzID0gci50ZXh0LFxyXG4gICAgICAgIGEgPSByLmF0dHIsXHJcbiAgICAgICAgbCA9IHIudGl0bGUsXHJcbiAgICAgICAgYyA9IHIudmFsdWUsXHJcbiAgICAgICAgdSA9IHIudHlwZSxcclxuICAgICAgICBoID0gZSA/IGUgOiByLnBhcmVudCxcclxuICAgICAgICBwID0gci5wcmVwZW5kLFxyXG4gICAgICAgIGQgPSByLmhyZWY7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIG8gJiZcclxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkobylcclxuICAgICAgICAgICAgICAgID8gKGkuY2xhc3NOYW1lID0gby5qb2luKFwiIFwiKSlcclxuICAgICAgICAgICAgICAgIDogKGkuY2xhc3NOYW1lID0gbykpLFxyXG4gICAgICAgIHMgJiYgKGkudGV4dENvbnRlbnQgPSBzKSxcclxuICAgICAgICBhICYmXHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGEpLmZvckVhY2goKHQpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBhW3RdO1xyXG4gICAgICAgICAgICAgICAgbnVsbCAhPT0gbiAmJiBpLnNldEF0dHJpYnV0ZSh0LCBTdHJpbmcobikpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICBsICYmIChpLnRpdGxlID0gbCksXHJcbiAgICAgICAgYyAmJlxyXG4gICAgICAgICAgICAoaSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHxcclxuICAgICAgICAgICAgICAgIGkgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCB8fFxyXG4gICAgICAgICAgICAgICAgaSBpbnN0YW5jZW9mIEhUTUxPcHRpb25FbGVtZW50KSAmJlxyXG4gICAgICAgICAgICAoaS52YWx1ZSA9IGMpLFxyXG4gICAgICAgIC8qIHUgJiYgaSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgKGkudHlwZSA9IHUpLCAqL1xyXG4gICAgICAgIHUgJiYgaSBpbnN0YW5jZW9mIEhUTUxTdHlsZUVsZW1lbnQgJiYgaS5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIHUpLFxyXG4gICAgICAgIGQgJiZcclxuICAgICAgICAgICAgKGkgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCB8fCBpIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50KSAmJlxyXG4gICAgICAgICAgICAoaS5ocmVmID0gZCksXHJcbiAgICAgICAgaCAmJiAocCA/IGguaW5zZXJ0QmVmb3JlKGksIGguZmlyc3RDaGlsZCkgOiBoLmFwcGVuZENoaWxkKGkpKSxcclxuICAgICAgICBpXHJcbiAgICApO1xyXG59XHJcbi8vQHRzLWlnbm9yZS1saW5lXHJcbmNvbnN0IGNyZWF0ZURpdiA9IGZ1bmN0aW9uIChcclxuICAgIG8/OiBzdHJpbmcgfCBEb21FbGVtZW50SW5mbyxcclxuICAgIGU/OiBIVE1MRWxlbWVudFxyXG4pOiBIVE1MRGl2RWxlbWVudCB7XHJcbiAgICByZXR1cm4gY3JlYXRlRWwoXCJkaXZcIiwgbywgZSk7XHJcbn07XHJcblxyXG5Ob2RlLnByb3RvdHlwZS5jcmVhdGVEaXYgPSBmdW5jdGlvbiAoXHJcbiAgICBvPzogc3RyaW5nIHwgRG9tRWxlbWVudEluZm8sXHJcbiAgICBjYj86IChlbDogSFRNTERpdkVsZW1lbnQpID0+IHZvaWRcclxuKTogSFRNTERpdkVsZW1lbnQge1xyXG4gICAgcmV0dXJuIGNyZWF0ZURpdihvLCB0aGlzKTtcclxufTtcclxuTm9kZS5wcm90b3R5cGUuY3JlYXRlRWwgPSBmdW5jdGlvbiA8SyBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4oXHJcbiAgICB0YWc6IEssXHJcbiAgICBvPzogc3RyaW5nIHwgRG9tRWxlbWVudEluZm8sXHJcbiAgICBjYj86IChlbDogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tdKSA9PiB2b2lkXHJcbik6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXSB7XHJcbiAgICByZXR1cm4gY3JlYXRlRWwodGFnLCBvLCB0aGlzKTtcclxufTtcclxuXHJcbkVsZW1lbnQucHJvdG90eXBlLmFkZENsYXNzID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IGUgPSBbXTtcclxuICAgIGZvciAobGV0IHQgPSAwOyB0IDwgYXJncy5sZW5ndGg7IHQrKykgZVt0XSA9IGFyZ3NbdF07XHJcbiAgICB0aGlzLmFkZENsYXNzZXMoZSk7XHJcbn07XHJcblxyXG5FbGVtZW50LnByb3RvdHlwZS5hZGRDbGFzc2VzID0gZnVuY3Rpb24gKGUpIHtcclxuICAgIGZvciAobGV0IHQgPSAwOyB0IDwgZS5sZW5ndGg7IHQrKykgdGhpcy5jbGFzc0xpc3QuYWRkKGVbdF0pO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gZ2V0QWRtb25pdGlvbkVsZW1lbnQoXHJcbiAgICB0eXBlOiBzdHJpbmcsXHJcbiAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgaWNvbjogc3RyaW5nLFxyXG4gICAgY29sb3I6IHN0cmluZyxcclxuICAgIGNvbGxhcHNlPzogc3RyaW5nLFxyXG4gICAgaWQ/OiBzdHJpbmdcclxuKTogSFRNTEVsZW1lbnQge1xyXG4gICAgbGV0IGFkbW9uaXRpb24sXHJcbiAgICAgICAgdGl0bGVFbCxcclxuICAgICAgICBhdHRyczogeyBzdHlsZTogc3RyaW5nOyBvcGVuPzogc3RyaW5nIH0gPSB7XHJcbiAgICAgICAgICAgIHN0eWxlOiBgLS1hZG1vbml0aW9uLWNvbG9yOiAke2NvbG9yfTtgXHJcbiAgICAgICAgfTtcclxuICAgIGlmIChjb2xsYXBzZSAmJiBjb2xsYXBzZSAhPSBcIm5vbmVcIikge1xyXG4gICAgICAgIGlmIChjb2xsYXBzZSA9PT0gXCJvcGVuXCIpIHtcclxuICAgICAgICAgICAgYXR0cnMub3BlbiA9IFwib3BlblwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZG1vbml0aW9uID0gY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHtcclxuICAgICAgICAgICAgY2xzOiBgYWRtb25pdGlvbiBhZG1vbml0aW9uLSR7dHlwZX0gYWRtb25pdGlvbi1wbHVnaW5gLFxyXG4gICAgICAgICAgICBhdHRyOiBhdHRyc1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRpdGxlRWwgPSBhZG1vbml0aW9uLmNyZWF0ZUVsKFwic3VtbWFyeVwiLCB7XHJcbiAgICAgICAgICAgIGNsczogYGFkbW9uaXRpb24tdGl0bGUgJHshdGl0bGU/LnRyaW0oKS5sZW5ndGggPyBcIm5vLXRpdGxlXCIgOiBcIlwifWBcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYWRtb25pdGlvbiA9IGNyZWF0ZURpdih7XHJcbiAgICAgICAgICAgIGNsczogYGFkbW9uaXRpb24gYWRtb25pdGlvbi0ke3R5cGV9IGFkbW9uaXRpb24tcGx1Z2luYCxcclxuICAgICAgICAgICAgYXR0cjogYXR0cnNcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aXRsZUVsID0gYWRtb25pdGlvbi5jcmVhdGVEaXYoe1xyXG4gICAgICAgICAgICBjbHM6IGBhZG1vbml0aW9uLXRpdGxlICR7IXRpdGxlPy50cmltKCkubGVuZ3RoID8gXCJuby10aXRsZVwiIDogXCJcIn1gXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlkKSB7XHJcbiAgICAgICAgYWRtb25pdGlvbi5pZCA9IGlkO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aXRsZSAmJiB0aXRsZS50cmltKCkubGVuZ3RoKSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogVGl0bGUgc3RydWN0dXJlXHJcbiAgICAgICAgICogPGRpdnxzdW1tYXJ5Pi5hZG1vbml0aW9uLXRpdGxlXHJcbiAgICAgICAgICogICAgICA8ZWxlbWVudD4uYWRtb25pdGlvbi10aXRsZS1jb250ZW50IC0gUmVuZGVyZWQgTWFya2Rvd24gdG9wLWxldmVsIGVsZW1lbnQgKGUuZy4gSDEvMi8zIGV0YywgcClcclxuICAgICAgICAgKiAgICAgICAgICBkaXYuYWRtb25pdGlvbi10aXRsZS1pY29uXHJcbiAgICAgICAgICogICAgICAgICAgICAgIHN2Z1xyXG4gICAgICAgICAqICAgICAgICAgIGRpdi5hZG1vbml0aW9uLXRpdGxlLW1hcmtkb3duIC0gQ29udGFpbmVyIG9mIHJlbmRlcmVkIG1hcmtkb3duXHJcbiAgICAgICAgICogICAgICAgICAgICAgIC4uLnJlbmRlcmVkIG1hcmtkb3duIGNoaWxkcmVuLi4uXHJcbiAgICAgICAgICovXHJcblxyXG4gICAgICAgIC8vZ2V0IG1hcmtkb3duXHJcbiAgICAgICAgY29uc3QgbWFya2Rvd25Ib2xkZXIgPSBjcmVhdGVEaXYoKTtcclxuICAgICAgICAvL01hcmtkb3duUmVuZGVyZXIucmVuZGVyTWFya2Rvd24odGl0bGUsIG1hcmtkb3duSG9sZGVyLCBcIlwiLCBudWxsKTtcclxuXHJcbiAgICAgICAgLy9hZG1vbml0aW9uLXRpdGxlLWNvbnRlbnQgaXMgZmlyc3QgY2hpbGQgb2YgcmVuZGVyZWQgbWFya2Rvd25cclxuXHJcbiAgICAgICAgY29uc3QgYWRtb25pdGlvblRpdGxlQ29udGVudCA9XHJcbiAgICAgICAgICAgIC8qIG1hcmtkb3duSG9sZGVyPy5jaGlsZHJlblswXT8udGFnTmFtZSA9PT0gXCJQXCJcclxuICAgICAgICA/IGNyZWF0ZURpdigpXHJcbiAgICAgICAgOiBtYXJrZG93bkhvbGRlci5jaGlsZHJlblswXSA/PyAgKi8gY3JlYXRlRGl2KCk7XHJcblxyXG4gICAgICAgIC8vZ2V0IGNoaWxkcmVuIG9mIG1hcmtkb3duIGVsZW1lbnQsIHRoZW4gcmVtb3ZlIHRoZW1cclxuICAgICAgICBjb25zdCBtYXJrZG93bkVsZW1lbnRzID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgICAgbWFya2Rvd25Ib2xkZXIuY2hpbGRyZW5bMF0/LmNoaWxkTm9kZXMgfHwgW11cclxuICAgICAgICApO1xyXG4gICAgICAgIGFkbW9uaXRpb25UaXRsZUNvbnRlbnQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICBhZG1vbml0aW9uVGl0bGVDb250ZW50LmFkZENsYXNzKFwiYWRtb25pdGlvbi10aXRsZS1jb250ZW50XCIpO1xyXG5cclxuICAgICAgICAvL2J1aWxkIGljb24gZWxlbWVudFxyXG4gICAgICAgIGNvbnN0IGljb25FbCA9IGFkbW9uaXRpb25UaXRsZUNvbnRlbnQuY3JlYXRlRGl2KFxyXG4gICAgICAgICAgICBcImFkbW9uaXRpb24tdGl0bGUtaWNvblwiXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoaWNvbikge1xyXG4gICAgICAgICAgICBpY29uRWwuaW5uZXJIVE1MID0gaWNvbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vYWRkIG1hcmtkb3duIGNoaWxkcmVuIGJhY2tcclxuICAgICAgICBjb25zdCBhZG1vbml0aW9uVGl0bGVNYXJrZG93biA9IGFkbW9uaXRpb25UaXRsZUNvbnRlbnQuY3JlYXRlRGl2KFxyXG4gICAgICAgICAgICBcImFkbW9uaXRpb24tdGl0bGUtbWFya2Rvd25cIlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYWRtb25pdGlvblRpdGxlTWFya2Rvd24uaW5uZXJUZXh0ID0gdGl0bGU7XHJcbiAgICAgICAgLyogZm9yIChsZXQgaSA9IDA7IGkgPCBtYXJrZG93bkVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFkbW9uaXRpb25UaXRsZU1hcmtkb3duLmFwcGVuZENoaWxkKG1hcmtkb3duRWxlbWVudHNbaV0pO1xyXG4gICAgICAgIH0gKi9cclxuICAgICAgICB0aXRsZUVsLmFwcGVuZENoaWxkKGFkbW9uaXRpb25UaXRsZUNvbnRlbnQgfHwgY3JlYXRlRGl2KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vYWRkIHRoZW0gdG8gdGl0bGUgZWxlbWVudFxyXG5cclxuICAgIGlmIChjb2xsYXBzZSkge1xyXG4gICAgICAgIHRpdGxlRWwuY3JlYXRlRGl2KFwiY29sbGFwc2VyXCIpLmNyZWF0ZURpdihcImhhbmRsZVwiKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhZG1vbml0aW9uO1xyXG59XHJcbmZ1bmN0aW9uIHN0YXJ0c1dpdGhBbnkoc3RyOiBzdHJpbmcsIG5lZWRsZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lZWRsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoc3RyLnN0YXJ0c1dpdGgobmVlZGxlc1tpXSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyc0Zyb21Tb3VyY2UodHlwZTogc3RyaW5nLCBzcmM6IHN0cmluZykge1xyXG4gICAgY29uc3Qga2V5d29yZFRva2VucyA9IFtcInRpdGxlOlwiLCBcImNvbGxhcHNlOlwiLCBcImljb246XCIsIFwiY29sb3I6XCJdO1xyXG5cclxuICAgIGNvbnN0IGtleXdvcmRzID0gW1widGl0bGVcIiwgXCJjb2xsYXBzZVwiLCBcImljb25cIiwgXCJjb2xvclwiXTtcclxuXHJcbiAgICBsZXQgbGluZXMgPSBzcmMuc3BsaXQoXCJcXG5cIik7XHJcblxyXG4gICAgbGV0IHNraXBMaW5lcyA9IDA7XHJcblxyXG4gICAgbGV0IHBhcmFtczogeyBbazogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGtleXdvcmRJbmRleCA9IHN0YXJ0c1dpdGhBbnkobGluZXNbaV0sIGtleXdvcmRUb2tlbnMpO1xyXG5cclxuICAgICAgICBpZiAoa2V5d29yZEluZGV4ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmb3VuZEtleXdvcmQgPSBrZXl3b3Jkc1trZXl3b3JkSW5kZXhdO1xyXG5cclxuICAgICAgICBpZiAocGFyYW1zW2ZvdW5kS2V5d29yZF0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBhcmFtc1tmb3VuZEtleXdvcmRdID0gbGluZXNbaV1cclxuICAgICAgICAgICAgLnN1YnN0cihrZXl3b3JkVG9rZW5zW2tleXdvcmRJbmRleF0ubGVuZ3RoKVxyXG4gICAgICAgICAgICAudHJpbSgpO1xyXG4gICAgICAgICsrc2tpcExpbmVzO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB7XHJcbiAgICAgICAgdGl0bGUgPSB0eXBlWzBdLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgY29sbGFwc2UsXHJcbiAgICAgICAgaWNvbixcclxuICAgICAgICBjb2xvclxyXG4gICAgfSA9IHBhcmFtcztcclxuXHJcbiAgICBsZXQgY29udGVudCA9IGxpbmVzLnNsaWNlKHNraXBMaW5lcykuam9pbihcIlxcblwiKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIHRoZSBhZG1vbml0aW9uIHNob3VsZCBjb2xsYXBzZSwgYnV0IHNvbWV0aGluZyBvdGhlciB0aGFuIG9wZW4gb3IgY2xvc2VkIHdhcyBwcm92aWRlZCwgc2V0IHRvIGNsb3NlZC5cclxuICAgICAqL1xyXG4gICAgaWYgKFxyXG4gICAgICAgIGNvbGxhcHNlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICBjb2xsYXBzZSAhPT0gXCJub25lXCIgJiZcclxuICAgICAgICBjb2xsYXBzZSAhPT0gXCJvcGVuXCIgJiZcclxuICAgICAgICBjb2xsYXBzZSAhPT0gXCJjbG9zZWRcIlxyXG4gICAgKSB7XHJcbiAgICAgICAgY29sbGFwc2UgPSBcImNsb3NlZFwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgdGhlIGFkbW9uaXRpb24gc2hvdWxkIGNvbGxhcHNlLCBidXQgdGl0bGUgd2FzIGJsYW5rZWQsIHNldCB0aGUgZGVmYXVsdCB0aXRsZS5cclxuICAgICAqL1xyXG4gICAgaWYgKHRpdGxlLnRyaW0oKSA9PT0gXCJcIiAmJiBjb2xsYXBzZSAhPT0gdW5kZWZpbmVkICYmIGNvbGxhcHNlICE9PSBcIm5vbmVcIikge1xyXG4gICAgICAgIHRpdGxlID0gdHlwZVswXS50b1VwcGVyQ2FzZSgpICsgdHlwZS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyB0aXRsZSwgY29sbGFwc2UsIGNvbnRlbnQsIGljb24sIGNvbG9yIH07XHJcbn1cclxuXHJcbmludGVyZmFjZSBBZG1vbml0aW9uUHVibGlzaERlZmluaXRpb24ge1xyXG4gICAgaWNvbjogc3RyaW5nO1xyXG4gICAgY29sb3I6IHN0cmluZztcclxufVxyXG5cclxuY29uc3QgYmxvY2tTZXQ6IFNldDxIVE1MUHJlRWxlbWVudD4gPSBuZXcgU2V0KCk7XHJcbmNvbnN0IEFETU9OSVRJT05fSUNPTl9NQVA6IHtcclxuICAgIFthZG1vbml0aW9uVHlwZTogc3RyaW5nXTogQWRtb25pdGlvblB1Ymxpc2hEZWZpbml0aW9uO1xyXG59ID0ge307XHJcbmlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcclxuICAgIHBvc3Rwcm9jZXNzKCk7XHJcbiAgICByZWdpc3RlclRvUHJvY2VzcygpO1xyXG59IGVsc2Uge1xyXG4gICAgd2luZG93Lm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBwb3N0cHJvY2VzcygpO1xyXG4gICAgICAgIHJlZ2lzdGVyVG9Qcm9jZXNzKCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiByZWdpc3RlclRvUHJvY2VzcygpIHtcclxuICAgIGNvbnN0IHNpemVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5tYXJrZG93bi1wcmV2aWV3LXNpemVyXCIpO1xyXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XHJcbiAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09IFwiY2hpbGRMaXN0XCIgJiYgbXV0YXRpb24uYWRkZWROb2Rlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIG11dGF0aW9uLmFkZGVkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlIGluc3RhbmNlb2YgRWxlbWVudCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmZpcnN0RWxlbWVudENoaWxkPy50YWdOYW1lID09PSBcIlBSRVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcG9zdHByb2Nlc3Mobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZU9ic2VydmVyLm9ic2VydmUobm9kZS5maXJzdENoaWxkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlckRhdGE6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHJlZTogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShzaXplciwge1xyXG4gICAgICAgIGF0dHJpYnV0ZXM6IGZhbHNlLFxyXG4gICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcclxuICAgICAgICBzdWJ0cmVlOiBmYWxzZVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcHJlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XHJcbiAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIG11dGF0aW9uLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxQcmVFbGVtZW50ICYmXHJcbiAgICAgICAgICAgICAgICAhYmxvY2tTZXQuaGFzKG11dGF0aW9uLnRhcmdldCkgJiZcclxuICAgICAgICAgICAgICAgIG11dGF0aW9uLnR5cGUgPT09IFwiYXR0cmlidXRlc1wiICYmXHJcbiAgICAgICAgICAgICAgICBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSBcImNsYXNzXCIgJiZcclxuICAgICAgICAgICAgICAgIEFycmF5LmZyb20obXV0YXRpb24udGFyZ2V0LmNsYXNzTGlzdCkuc29tZSgoY2xzKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIC9sYW5ndWFnZS1hZC0oXFx3KykvLnRlc3QoY2xzKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGJsb2NrU2V0LmFkZChtdXRhdGlvbi50YXJnZXQpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0FkbW9uaXRpb25CbG9jayhtdXRhdGlvbi50YXJnZXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc0FkbW9uaXRpb25CbG9jayhhZG1vbml0aW9uQmxvY2s6IEhUTUxQcmVFbGVtZW50KSB7XHJcbiAgICBjb25zdCBbLCB0eXBlXSA9IGFkbW9uaXRpb25CbG9jay5jbGFzc0xpc3RcclxuICAgICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAgIC5tYXRjaCgvbGFuZ3VhZ2UtYWQtKFxcdyspLyk7XHJcbiAgICBpZiAoIXR5cGUpIHJldHVybjtcclxuICAgIGlmICghKHR5cGUgaW4gQURNT05JVElPTl9JQ09OX01BUCkpIHJldHVybjtcclxuXHJcbiAgICBsZXQge1xyXG4gICAgICAgIHRpdGxlID0gdHlwZVswXS50b1VwcGVyQ2FzZSgpICsgdHlwZS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICAgIGNvbGxhcHNlLFxyXG4gICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgaWNvbiA9IEFETU9OSVRJT05fSUNPTl9NQVBbdHlwZV0uaWNvbixcclxuICAgICAgICBjb2xvciA9IEFETU9OSVRJT05fSUNPTl9NQVBbdHlwZV0uY29sb3JcclxuICAgIH0gPSBnZXRQYXJhbWV0ZXJzRnJvbVNvdXJjZSh0eXBlLCBhZG1vbml0aW9uQmxvY2suaW5uZXJUZXh0KTtcclxuXHJcbiAgICBsZXQgYWRtb25pdGlvbiA9IGdldEFkbW9uaXRpb25FbGVtZW50KHR5cGUsIHRpdGxlLCBpY29uLCBjb2xvciwgY29sbGFwc2UpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnRIb2xkZXIgPSBhZG1vbml0aW9uLmNyZWF0ZURpdihcImFkbW9uaXRpb24tY29udGVudC1ob2xkZXJcIik7XHJcblxyXG4gICAgY29uc3QgYWRtb25pdGlvbkNvbnRlbnQgPSBjb250ZW50SG9sZGVyLmNyZWF0ZURpdihcImFkbW9uaXRpb24tY29udGVudFwiKTtcclxuXHJcbiAgICBhZG1vbml0aW9uQ29udGVudC5pbm5lclRleHQgPSBjb250ZW50O1xyXG5cclxuICAgIGFkbW9uaXRpb25CbG9jay5yZXBsYWNlV2l0aChhZG1vbml0aW9uKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcG9zdHByb2Nlc3MoKSB7XHJcbiAgICAvL2RvIHdvcmtcclxuICAgIGNvbnN0IGFkbW9uaXRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MUHJlRWxlbWVudD4oXHJcbiAgICAgICAgXCJwcmVbY2xhc3MqPSdsYW5ndWFnZS1hZCddXCJcclxuICAgICk7XHJcblxyXG4gICAgaWYgKCFhZG1vbml0aW9ucy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICBmb3IgKGxldCBhZG1vbml0aW9uQmxvY2sgb2YgQXJyYXkuZnJvbShhZG1vbml0aW9ucykpIHtcclxuICAgICAgICBibG9ja1NldC5hZGQoYWRtb25pdGlvbkJsb2NrKTtcclxuICAgICAgICBjb25zdCBbLCB0eXBlXSA9IGFkbW9uaXRpb25CbG9jay5jbGFzc0xpc3RcclxuICAgICAgICAgICAgLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgLm1hdGNoKC9sYW5ndWFnZS1hZC0oXFx3KykvKTtcclxuICAgICAgICBpZiAoIXR5cGUpIGNvbnRpbnVlO1xyXG4gICAgICAgIGlmICghKHR5cGUgaW4gQURNT05JVElPTl9JQ09OX01BUCkpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBsZXQge1xyXG4gICAgICAgICAgICB0aXRsZSA9IHR5cGVbMF0udG9VcHBlckNhc2UoKSArIHR5cGUuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSxcclxuICAgICAgICAgICAgY29sbGFwc2UsXHJcbiAgICAgICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgICAgIGljb24gPSBBRE1PTklUSU9OX0lDT05fTUFQW3R5cGVdLmljb24sXHJcbiAgICAgICAgICAgIGNvbG9yID0gQURNT05JVElPTl9JQ09OX01BUFt0eXBlXS5jb2xvclxyXG4gICAgICAgIH0gPSBnZXRQYXJhbWV0ZXJzRnJvbVNvdXJjZSh0eXBlLCBhZG1vbml0aW9uQmxvY2suaW5uZXJUZXh0KTtcclxuXHJcbiAgICAgICAgbGV0IGFkbW9uaXRpb24gPSBnZXRBZG1vbml0aW9uRWxlbWVudChcclxuICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgdGl0bGUsXHJcbiAgICAgICAgICAgIGljb24sXHJcbiAgICAgICAgICAgIGNvbG9yLFxyXG4gICAgICAgICAgICBjb2xsYXBzZVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbnRlbnRIb2xkZXIgPSBhZG1vbml0aW9uLmNyZWF0ZURpdihcImFkbW9uaXRpb24tY29udGVudC1ob2xkZXJcIik7XHJcblxyXG4gICAgICAgIGNvbnN0IGFkbW9uaXRpb25Db250ZW50ID0gY29udGVudEhvbGRlci5jcmVhdGVEaXYoXCJhZG1vbml0aW9uLWNvbnRlbnRcIik7XHJcblxyXG4gICAgICAgIGFkbW9uaXRpb25Db250ZW50LmlubmVyVGV4dCA9IGNvbnRlbnQ7XHJcblxyXG4gICAgICAgIGFkbW9uaXRpb25CbG9jay5yZXBsYWNlV2l0aChhZG1vbml0aW9uKTtcclxuICAgIH1cclxufVxyXG4iXX0= -/******/ return __webpack_exports__; -/******/ })() -; -});`; - -// src/lang/helpers.ts -var import_obsidian3 = __toModule(require("obsidian")); - -// src/lang/locale/ar.ts -var ar_default = {}; - -// src/lang/locale/cz.ts -var cz_default = {}; - -// src/lang/locale/da.ts -var da_default = {}; - -// src/lang/locale/de.ts -var de_default = {}; - -// src/lang/locale/en.ts -var en_default = { - "Admonition Settings": "Admonition Settings", - "Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.": "Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.", - " Markdown Syntax Highlighting": " Markdown Syntax Highlighting", - "Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.": "Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.", - " Sync Links to Metadata Cache": " Sync Links to Metadata Cache", - "Allows admonitions to be created using ": "Allows admonitions to be created using ", - " or ": " or ", - ", instead of using a code block.": ", instead of using a code block.", - " Enable Non-codeblock Admonitions": " Enable Non-codeblock Admonitions", - "Collapsible by Default": "Collapsible by Default", - "All admonitions will be collapsible by default. Use ": "All admonitions will be collapsible by default. Use ", - " to prevent.": " to prevent.", - "Default Collapse Type": "Default Collapse Type", - "Collapsible admonitions will be either opened or closed.": "Collapsible admonitions will be either opened or closed.", - "Add Copy Button": "Add Copy Button", - "Add a 'copy content' button to admonitions.": "Add a 'copy content' button to admonitions.", - "Add New": "Add New", - "Add a new Admonition type.": "Add a new Admonition type.", - "Add Additional": "Add Additional", - "Register Commands": "Register Commands", - "Unregister Commands": "Unregister Commands", - Edit: "Edit", - Delete: "Delete", - "Admonition Type": "Admonition Type", - "Admonition Title": "Admonition Title", - "This will be the default title for this admonition type.": "This will be the default title for this admonition type.", - "Admonition type cannot be empty.": "Admonition type cannot be empty.", - "Admonition type cannot include spaces.": "Admonition type cannot include spaces.", - "Types must be a valid CSS selector.": "Types must be a valid CSS selector.", - "Invalid icon name.": "Invalid icon name.", - "Icon cannot be empty.": "Icon cannot be empty.", - "Upload Image": "Upload Image", - "There was an error parsing the image.": "There was an error parsing the image.", - "Admonition Icon": "Admonition Icon", - Color: "Color", - Save: "Save", - "No Admonition Title by Default": "No Admonition Title by Default", - "The admonition will have no title unless ": "The admonition will have no title unless ", - " is explicitly provided.": " is explicitly provided.", - "Show Copy Button": "Show Copy Button", - "A copy button will be added to the admonition.": "A copy button will be added to the admonition.", - "Parse Titles as Markdown": "Parse Titles as Markdown", - "Admonition Titles will be rendered as markdown.": "Admonition Titles will be rendered as markdown." -}; - -// src/lang/locale/en-gb.ts -var en_gb_default = {}; - -// src/lang/locale/es.ts -var es_default = {}; - -// src/lang/locale/fr.ts -var fr_default = {}; - -// src/lang/locale/hi.ts -var hi_default = {}; - -// src/lang/locale/id.ts -var id_default = {}; - -// src/lang/locale/it.ts -var it_default = {}; - -// src/lang/locale/ja.ts -var ja_default = {}; - -// src/lang/locale/ko.ts -var ko_default = {}; - -// src/lang/locale/nl.ts -var nl_default = {}; - -// src/lang/locale/no.ts -var no_default = {}; - -// src/lang/locale/pl.ts -var pl_default = {}; - -// src/lang/locale/pt.ts -var pt_default = {}; - -// src/lang/locale/pt-br.ts -var pt_br_default = {}; - -// src/lang/locale/ro.ts -var ro_default = {}; - -// src/lang/locale/ru.ts -var ru_default = {}; - -// src/lang/locale/tr.ts -var tr_default = {}; - -// src/lang/locale/zh-cn.ts -var zh_cn_default = { - "Admonition Settings": "Admonition \u8BBE\u7F6E", - "Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.": "\u5728 admonition \u4EE3\u7801\u5757\u4E2D\u4F7F\u7528 Obsidian \u7684 markdown \u7CFB\u7EDF\u7EA7\u9AD8\u4EAE\u3002\u8BE5\u8BBE\u7F6E\u4E3A\u5B9E\u9A8C\u6027\uFF0C\u53EF\u80FD\u4F1A\u5F15\u53D1\u9519\u8BEF", - " Markdown Syntax Highlighting": " Markdown \u7CFB\u7EDF\u9AD8\u4EAE", - "Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.": "Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.", - " Sync Links to Metadata Cache": " Sync Links to Metadata Cache", - "Allows admonitions to be created using ": "\u5141\u8BB8 admonitions \u521B\u5EFA\u4F7F\u7528", - " or ": "\u6216", - ", instead of using a code block.": "\uFF0C\u800C\u975E\u4EE3\u7801\u5757", - " Enable Non-codeblock Admonitions": " \u5141\u8BB8\u975E\u4EE3\u7801\u5757\u7684 Admonitions", - "Collapsible by Default": "\u53EF\u6298\u53E0\u9ED8\u8BA4\u503C", - "All admonitions will be collapsible by default. Use ": "\u6240\u6709\u7684 admonitions \u9ED8\u8BA4\u53EF\u6298\u53E0\u3002\u4F7F\u7528", - " to prevent.": " \u6765\u963B\u6B62\u3002", - "Default Collapse Type": "\u9ED8\u8BA4\u53EF\u6298\u53E0\u7C7B\u578B", - "Collapsible admonitions will be either opened or closed.": "Collapsible admonitions \u8981\u4E48\u662F openede \u8981\u4E48\u662F closed", - "Add Copy Button": "\u6DFB\u52A0\u590D\u5236\u6309\u94AE", - "Add a 'copy content' button to admonitions.": "\u4E3A admonitions \u65B0\u589E\u4E00\u4E2A\u201C\u590D\u5236\u5185\u5BB9\u201D\u6309\u94AE\u3002", - "Add New": "\u65B0\u589E", - "Add a new Admonition type.": "\u6DFB\u52A0\u4E00\u4E2A\u65B0\u7684 Admonition \u7C7B\u578B\u3002", - "Add Additional": "\u989D\u5916\u6DFB\u52A0", - "Register Commands": "\u6CE8\u518C\u547D\u4EE4", - "Unregister Commands": "\u6CE8\u9500\u547D\u4EE4", - Edit: "\u7F16\u8F91", - Delete: "\u5220\u9664", - "Admonition type cannot be empty.": "Admonition \u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A\u3002", - "Admonition type cannot include spaces.": "Admonition \u7C7B\u578B\u4E0D\u80FD\u5305\u542B\u7A7A\u683C", - "Admonition Type": "Admonition \u7C7B\u578B", - "Types must be a valid CSS selector.": "\u7C7B\u578B\u5FC5\u987B\u4E3A\u5408\u6CD5\u7684 css \u9009\u62E9\u5668\u3002", - "Invalid icon name.": "\u975E\u6CD5\u56FE\u6807\u540D\u79F0", - "Icon cannot be empty.": "\u56FE\u6807\u4E0D\u80FD\u4E3A\u7A7A", - "Upload Image": "\u4E0A\u4F20\u56FE\u50CF", - "There was an error parsing the image.": "\u4E0A\u4F20\u56FE\u50CF\u65F6\u51FA\u9519\u4E86\u3002", - "Admonition Icon": "Admonition \u56FE\u6807", - "Color": "\u989C\u8272", - "Save": "\u4FDD\u5B58" -}; - -// src/lang/locale/zh-tw.ts -var zh_tw_default = {}; - -// src/lang/helpers.ts -var localeMap = { - ar: ar_default, - cs: cz_default, - da: da_default, - de: de_default, - en: en_default, - "en-gb": en_gb_default, - es: es_default, - fr: fr_default, - hi: hi_default, - id: id_default, - it: it_default, - ja: ja_default, - ko: ko_default, - nl: nl_default, - nn: no_default, - pl: pl_default, - pt: pt_default, - "pt-br": pt_br_default, - ro: ro_default, - ru: ru_default, - tr: tr_default, - "zh-cn": zh_cn_default, - "zh-tw": zh_tw_default -}; -var locale = localeMap[import_obsidian3.moment.locale()]; -function t(str) { - return locale && locale[str] || en_default[str]; -} - -// src/settings.ts -var isSelectorValid = ((dummyElement) => (selector) => { - try { - dummyElement.querySelector(selector); - } catch { - return false; - } - return true; -})(document.createDocumentFragment()); -var AdmonitionSetting = class extends import_obsidian4.PluginSettingTab { - constructor(app, plugin) { - super(app, plugin); - this.plugin = plugin; - } - async display() { - let { containerEl } = this; - containerEl.empty(); - containerEl.addClass("admonition-settings"); - containerEl.createEl("h2", { text: t("Admonition Settings") }); - new import_obsidian4.Setting(containerEl).setName(createFragment((e) => { - e.appendChild(WARNING_ICON.cloneNode(true)); - e.createSpan({ text: t(" Markdown Syntax Highlighting") }); - })).setDesc(t("Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.")).addToggle((t2) => { - t2.setValue(this.plugin.data.syntaxHighlight); - t2.onChange(async (v) => { - this.plugin.data.syntaxHighlight = v; - if (v) { - this.plugin.turnOnSyntaxHighlighting(); - } else { - this.plugin.turnOffSyntaxHighlighting(); - } - await this.plugin.saveSettings(); - }); - }); - new import_obsidian4.Setting(containerEl).setName(createFragment((e) => { - e.appendChild(WARNING_ICON.cloneNode(true)); - e.createSpan({ text: t(" Sync Links to Metadata Cache") }); - })).setDesc(t("Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.")).addToggle((t2) => { - t2.setValue(this.plugin.data.syncLinks).onChange(async (v) => { - this.plugin.data.syncLinks = v; - this.display(); - await this.plugin.saveSettings(); - }); - }); - new import_obsidian4.Setting(containerEl).setName(createFragment((e) => { - e.appendChild(WARNING_ICON.cloneNode(true)); - e.createSpan({ - text: t(" Enable Non-codeblock Admonitions") - }); - })).setDesc(createFragment((e) => { - e.createSpan({ - text: t("Allows admonitions to be created using ") - }); - e.createEl("code", { text: "!!! ad-" }); - e.createSpan({ - text: t(" or ") - }); - e.createEl("code", { text: "??? ad-" }); - e.createSpan({ - text: t(", instead of using a code block.") - }); - })).addToggle((t2) => { - t2.setValue(this.plugin.data.enableMarkdownProcessor).onChange(async (v) => { - this.plugin.data.enableMarkdownProcessor = v; - if (v) { - this.plugin.enableMarkdownProcessor(); - } else { - this.plugin.disableMarkdownProcessor(); - } - this.display(); - await this.plugin.saveSettings(); - }); - }); - new import_obsidian4.Setting(containerEl).setName("Allow Microsoft Document Syntax").setDesc(createFragment((e) => { - e.createSpan({ - text: "The plugin will render blockquotes created using the " - }); - e.createEl("a", { - href: "https://docs.microsoft.com/en-us/contribute/markdown-reference", - text: "Microsoft Document Syntax." - }); - })).addToggle((t2) => { - t2.setValue(this.plugin.data.allowMSSyntax).onChange((v) => { - this.plugin.data.allowMSSyntax = v; - this.display(); - this.plugin.saveSettings(); - }); - }); - if (this.plugin.data.allowMSSyntax) { - new import_obsidian4.Setting(containerEl).setName("Render Microsoft Document Syntax in Live Preview").setDesc(createFragment((e) => { - e.createSpan({ - text: "The plugin will render blockquotes created using the " - }); - e.createEl("a", { - href: "https://docs.microsoft.com/en-us/contribute/markdown-reference", - text: "Microsoft Document Syntax" - }); - e.createSpan({ - text: " in live preview mode." - }); - })).addToggle((t2) => { - t2.setValue(this.plugin.data.livePreviewMS).onChange((v) => { - this.plugin.data.livePreviewMS = v; - this.plugin.saveSettings(); - }); - }); - } - new import_obsidian4.Setting(containerEl).setName("Generate JS for Publish").setDesc(createFragment((f) => { - f.createSpan({ - text: "Generate a javascript file to place in your " - }); - f.createEl("code", { text: "publish.js" }); - f.createSpan({ text: "file." }); - f.createEl("br"); - f.createEl("strong", { - text: "Please note that this can only be done on self-hosted publish sites." - }); - })).addButton((b) => { - b.setButtonText("Generate"); - b.onClick((evt) => { - const admonition_icons = {}; - for (let key in this.plugin.admonitions) { - const value = this.plugin.admonitions[key]; - admonition_icons[key] = { - icon: getIconNode(value.icon).outerHTML, - color: value.color - }; - } - const js = publish_admonition_default.replace("const ADMONITION_ICON_MAP = {}", "const ADMONITION_ICON_MAP = " + JSON.stringify(admonition_icons)); - let csvFile = new Blob([js], { - type: "text/javascript" - }); - let downloadLink = document.createElement("a"); - downloadLink.download = "publish.admonition.js"; - downloadLink.href = window.URL.createObjectURL(csvFile); - downloadLink.style.display = "none"; - document.body.appendChild(downloadLink); - downloadLink.click(); - document.body.removeChild(downloadLink); - }); - }); - new import_obsidian4.Setting(containerEl).setName(t("Collapsible by Default")).setDesc(createFragment((e) => { - e.createSpan({ - text: t("All admonitions will be collapsible by default. Use ") - }); - e.createEl("code", { - text: "collapse: none" - }); - e.createSpan({ - text: t(" to prevent.") - }); - })).addToggle((t2) => { - t2.setValue(this.plugin.data.autoCollapse).onChange(async (v) => { - this.plugin.data.autoCollapse = v; - this.display(); - await this.plugin.saveSettings(); - }); - }); - if (this.plugin.data.autoCollapse) { - new import_obsidian4.Setting(containerEl).setName(t("Default Collapse Type")).setDesc(t("Collapsible admonitions will be either opened or closed.")).addDropdown((d) => { - d.addOption("open", "open"); - d.addOption("closed", "closed"); - d.setValue(this.plugin.data.defaultCollapseType); - d.onChange(async (v) => { - this.plugin.data.defaultCollapseType = v; - await this.plugin.saveSettings(); - }); - }); - } - new import_obsidian4.Setting(containerEl).setName(t("Add Copy Button")).setDesc(t("Add a 'copy content' button to admonitions.")).addToggle((t2) => { - t2.setValue(this.plugin.data.copyButton); - t2.onChange(async (v) => { - this.plugin.data.copyButton = v; - if (!v) { - document.querySelectorAll(".admonition-content-copy").forEach((el) => { - el.detach(); - }); - } - await this.plugin.saveSettings(); - }); - }); - new import_obsidian4.Setting(containerEl).setName(t("Parse Titles as Markdown")).setDesc(t("Admonition Titles will be rendered as markdown.")).addToggle((t2) => { - t2.setValue(this.plugin.data.parseTitles); - t2.onChange(async (v) => { - this.plugin.data.parseTitles = v; - await this.plugin.saveSettings(); - }); - }); - new import_obsidian4.Setting(containerEl).setName("Set Admonition Colors").setDesc("Disable this setting to turn off admonition coloring by default. Can be overridden in the admonition definition.").addToggle((t2) => t2.setValue(this.plugin.data.injectColor).setTooltip(`${this.plugin.data.injectColor ? "Disable" : "Enable"} Admonition Color`).onChange(async (v) => { - this.plugin.data.injectColor = v; - await this.plugin.saveSettings(); - await this.buildTypes(); - })); - const additionalContainer = containerEl.createDiv("admonition-setting-additional-container"); - new import_obsidian4.Setting(additionalContainer).setName(t("Add New")).setDesc(t("Add a new Admonition type.")).addButton((button) => { - let b = button.setTooltip(t("Add Additional")).setButtonText("+").onClick(async () => { - let modal = new SettingsModal(this.plugin); - modal.onClose = async () => { - if (modal.saved) { - this.plugin.addAdmonition({ - type: modal.type, - color: modal.color, - icon: modal.icon, - command: false, - title: modal.title, - injectColor: modal.injectColor, - noTitle: modal.noTitle, - copy: modal.copy - }); - this.display(); - } - }; - modal.open(); - }); - return b; - }); - this.additionalEl = additionalContainer.createDiv("additional"); - await this.buildTypes(); - const div = containerEl.createDiv("coffee"); - div.createEl("a", { - href: "https://www.buymeacoffee.com/valentine195" - }).createEl("img", { - attr: { - src: "https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=\u2615&slug=valentine195&button_colour=e3e7ef&font_colour=262626&font_family=Inter&outline_colour=262626&coffee_colour=ff0000" - } - }); - } - async buildTypes() { - this.additionalEl.empty(); - for (let a in this.plugin.data.userAdmonitions) { - const admonition = this.plugin.data.userAdmonitions[a]; - let setting = new import_obsidian4.Setting(this.additionalEl); - let admonitionElement = this.plugin.getAdmonitionElement(admonition.type, admonition.type[0].toUpperCase() + admonition.type.slice(1).toLowerCase(), admonition.icon, admonition.injectColor ?? this.plugin.data.injectColor ? admonition.color : null); - setting.infoEl.replaceWith(admonitionElement); - if (!admonition.command) { - setting.addExtraButton((b) => { - b.setIcon(ADD_COMMAND_NAME.toString()).setTooltip(t("Register Commands")).onClick(async () => { - this.plugin.registerCommandsFor(admonition); - await this.plugin.saveSettings(); - this.display(); - }); - }); - } else { - setting.addExtraButton((b) => { - b.setIcon(REMOVE_COMMAND_NAME.toString()).setTooltip(t("Unregister Commands")).onClick(async () => { - this.plugin.unregisterCommandsFor(admonition); - await this.plugin.saveSettings(); - this.display(); - }); - }); - } - setting.addExtraButton((b) => { - b.setIcon("pencil").setTooltip(t("Edit")).onClick(() => { - let modal = new SettingsModal(this.plugin, admonition); - modal.onClose = async () => { - if (modal.saved) { - const hasCommand = admonition.command; - this.plugin.removeAdmonition(admonition); - this.plugin.addAdmonition({ - type: modal.type, - color: modal.color, - icon: modal.icon, - command: hasCommand, - title: modal.title, - injectColor: modal.injectColor, - noTitle: modal.noTitle, - copy: modal.copy - }); - this.display(); - } - }; - modal.open(); - }); - }).addExtraButton((b) => { - b.setIcon("trash").setTooltip(t("Delete")).onClick(() => { - this.plugin.removeAdmonition(admonition); - this.display(); - }); - }); - } - } -}; -var SettingsModal = class extends import_obsidian4.Modal { - constructor(plugin, admonition) { - super(plugin.app); - this.plugin = plugin; - this.color = "#7d7d7d"; - this.icon = {}; - this.saved = false; - this.error = false; - this.injectColor = this.plugin.data.injectColor; - this.noTitle = false; - if (admonition) { - this.color = admonition.color; - this.icon = admonition.icon; - this.type = admonition.type; - this.title = admonition.title; - this.injectColor = admonition.injectColor ?? this.injectColor; - this.noTitle = admonition.noTitle ?? false; - this.copy = admonition.copy ?? this.plugin.data.copyButton; - } - } - async display() { - let { contentEl } = this; - contentEl.empty(); - const settingDiv = contentEl.createDiv(); - const title = this.title ?? this.type ?? "..."; - this.admonitionPreview = this.plugin.getAdmonitionElement(this.type, title[0].toUpperCase() + title.slice(1).toLowerCase(), this.icon, this.injectColor ?? this.plugin.data.injectColor ? this.color : null); - this.admonitionPreview.createDiv("admonition-content").createEl("p", { - text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla." - }); - contentEl.appendChild(this.admonitionPreview); - let typeText; - const typeSetting = new import_obsidian4.Setting(settingDiv).setName(t("Admonition Type")).addText((text) => { - typeText = text; - typeText.setValue(this.type).onChange((v) => { - if (!v.length) { - SettingsModal.setValidationError(text, t("Admonition type cannot be empty.")); - return; - } - if (v.includes(" ")) { - SettingsModal.setValidationError(text, t("Admonition type cannot include spaces.")); - return; - } - if (!isSelectorValid(v)) { - SettingsModal.setValidationError(text, t("Types must be a valid CSS selector.")); - return; - } - SettingsModal.removeValidationError(text); - this.type = v; - if (!this.title) - this.updateTitle(this.admonitionPreview, this.type); - }); - }); - typeSetting.controlEl.addClass("admonition-type-setting"); - typeSetting.descEl.createSpan({ - text: "This is used to create the admonition (e.g., " - }); - typeSetting.descEl.createEl("code", { - text: "note" - }); - typeSetting.descEl.createSpan({ - text: " or " - }); - typeSetting.descEl.createEl("code", { - text: "abstract" - }); - typeSetting.descEl.createSpan({ - text: ")" - }); - new import_obsidian4.Setting(settingDiv).setName(t("Admonition Title")).setDesc(t("This will be the default title for this admonition type.")).addText((text) => { - text.setValue(this.title).onChange((v) => { - if (!v.length) { - this.title = null; - this.updateTitle(this.admonitionPreview, this.type); - return; - } - this.title = v; - this.updateTitle(this.admonitionPreview, this.title); - }); - }); - new import_obsidian4.Setting(settingDiv).setName(t("No Admonition Title by Default")).setDesc(createFragment((e) => { - e.createSpan({ - text: t("The admonition will have no title unless ") - }); - e.createEl("code", { text: "title" }); - e.createSpan({ text: t(" is explicitly provided.") }); - })).addToggle((t2) => { - t2.setValue(this.noTitle).onChange((v) => this.noTitle = v); - }); - new import_obsidian4.Setting(settingDiv).setName(t("Show Copy Button")).setDesc(createFragment((e) => { - e.createSpan({ - text: t("A copy button will be added to the admonition.") - }); - })).addToggle((t2) => { - t2.setValue(this.copy).onChange((v) => this.copy = v); - }); - const input = createEl("input", { - attr: { - type: "file", - name: "image", - accept: "image/*" - } - }); - let iconText; - new import_obsidian4.Setting(settingDiv).setName(t("Admonition Icon")).setDesc(createFragment((desc) => { - desc.createEl("a", { - text: "Font Awesome Icon", - href: "https://fontawesome.com/icons?d=gallery&p=2&s=solid&m=free", - attr: { - tabindex: -1 - } - }); - desc.createSpan({ text: " or " }); - desc.createEl("a", { - text: "RPG Awesome Icon", - href: "https://nagoshiashumari.github.io/Rpg-Awesome/", - attr: { - tabindex: -1 - } - }); - desc.createSpan({ text: " to use next to the title." }); - })).addText((text) => { - iconText = text; - if (this.icon.type !== "image") - text.setValue(this.icon.name); - const validate = async () => { - const v = text.inputEl.value; - let ic = getIconType(v); - if (!ic) { - SettingsModal.setValidationError(text, t("Invalid icon name.")); - return; - } - if (v.length == 0) { - SettingsModal.setValidationError(text, t("Icon cannot be empty.")); - return; - } - SettingsModal.removeValidationError(text); - this.icon = modal.icon ?? { - name: v, - type: ic - }; - let iconEl = this.admonitionPreview.querySelector(".admonition-title-icon"); - iconEl.innerHTML = getIconNode(this.icon).outerHTML; - }; - const modal = new IconSuggestionModal(this.app, text); - modal.onClose = validate; - text.inputEl.onblur = validate; - }).addButton((b) => { - b.setButtonText(t("Upload Image")).setTooltip(t("Upload Image")); - b.buttonEl.addClass("admonition-file-upload"); - b.buttonEl.appendChild(input); - b.onClick(() => input.click()); - }); - input.onchange = async () => { - const { files } = input; - if (!files.length) - return; - const image = files[0]; - const reader = new FileReader(); - reader.onloadend = (evt) => { - var image2 = new Image(); - image2.onload = () => { - try { - const canvas = document.createElement("canvas"), max_size = 24; - let width = image2.width, height = image2.height; - if (width > height) { - if (width > max_size) { - height *= max_size / width; - width = max_size; - } - } else { - if (height > max_size) { - width *= max_size / height; - height = max_size; - } - } - canvas.width = width; - canvas.height = height; - canvas.getContext("2d").drawImage(image2, 0, 0, width, height); - this.icon = { - name: canvas.toDataURL("image/png"), - type: "image" - }; - this.display(); - } catch (e) { - new import_obsidian4.Notice("There was an error parsing the image."); - } - }; - image2.src = evt.target.result.toString(); - }; - reader.readAsDataURL(image); - input.value = null; - }; - const color = settingDiv.createDiv("admonition-color-settings"); - this.createColor(color); - let footerEl = contentEl.createDiv(); - let footerButtons = new import_obsidian4.Setting(footerEl); - footerButtons.addButton((b) => { - b.setTooltip(t("Save")).setIcon("checkmark").onClick(async () => { - let error = false; - if (!typeText.inputEl.value.length) { - SettingsModal.setValidationError(typeText, t("Admonition type cannot be empty.")); - error = true; - } - if (typeText.inputEl.value.includes(" ")) { - SettingsModal.setValidationError(typeText, t("Admonition type cannot include spaces.")); - error = true; - } - if (!isSelectorValid(typeText.inputEl.value)) { - SettingsModal.setValidationError(typeText, t("Types must be a valid CSS selector.")); - error = true; - } - if (!getIconType(iconText.inputEl.value) && this.icon.type !== "image") { - SettingsModal.setValidationError(iconText, t("Invalid icon name.")); - error = true; - } - if (!this.icon.name.length) { - SettingsModal.setValidationError(iconText, t("Icon cannot be empty.")); - error = true; - } - if (error) { - new import_obsidian4.Notice("Fix errors before saving."); - return; - } - this.saved = true; - this.close(); - }); - return b; - }); - footerButtons.addExtraButton((b) => { - b.setIcon("cross").setTooltip("Cancel").onClick(() => { - this.saved = false; - this.close(); - }); - return b; - }); - } - createColor(el) { - el.empty(); - const desc = this.injectColor ? "Set the admonition color. Disable to set manually using CSS." : "Admonition color is disabled and must be manually set using CSS."; - new import_obsidian4.Setting(el).setName(t("Color")).setDesc(desc).addText((t2) => { - t2.inputEl.setAttribute("type", "color"); - if (!this.injectColor) { - t2.inputEl.setAttribute("disabled", "true"); - } - t2.setValue(rgbToHex(this.color)).onChange((v) => { - let color = hexToRgb(v); - if (!color) - return; - this.color = `${color.r}, ${color.g}, ${color.b}`; - this.admonitionPreview.setAttribute("style", `--admonition-color: ${this.color};`); - }); - }).addToggle((t2) => t2.setValue(this.injectColor).setTooltip(`${this.injectColor ? "Disable" : "Enable"} Admonition Color`).onChange((v) => { - this.injectColor = v; - if (!v) { - this.admonitionPreview.removeAttribute("style"); - } else { - this.admonitionPreview.setAttribute("style", `--admonition-color: ${this.color};`); - } - this.createColor(el); - })); - } - updateTitle(admonitionPreview, title) { - let titleSpan = admonitionPreview.querySelector(".admonition-title-content"); - let iconEl = admonitionPreview.querySelector(".admonition-title-icon"); - titleSpan.textContent = title[0].toUpperCase() + title.slice(1).toLowerCase(); - titleSpan.prepend(iconEl); - } - onOpen() { - this.display(); - } - static setValidationError(textInput, message) { - textInput.inputEl.addClass("is-invalid"); - if (message) { - textInput.inputEl.parentElement.addClasses([ - "has-invalid-message", - "unset-align-items" - ]); - textInput.inputEl.parentElement.parentElement.addClass(".unset-align-items"); - let mDiv = textInput.inputEl.parentElement.querySelector(".invalid-feedback"); - if (!mDiv) { - mDiv = createDiv({ cls: "invalid-feedback" }); - } - mDiv.innerText = message; - mDiv.insertAfter(textInput.inputEl); - } - } - static removeValidationError(textInput) { - textInput.inputEl.removeClass("is-invalid"); - textInput.inputEl.parentElement.removeClasses([ - "has-invalid-message", - "unset-align-items" - ]); - textInput.inputEl.parentElement.parentElement.removeClass(".unset-align-items"); - if (textInput.inputEl.parentElement.querySelector(".invalid-feedback")) { - textInput.inputEl.parentElement.removeChild(textInput.inputEl.parentElement.querySelector(".invalid-feedback")); - } - } -}; -function hexToRgb(hex) { - let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - return result ? { - r: parseInt(result[1], 16), - g: parseInt(result[2], 16), - b: parseInt(result[3], 16) - } : null; -} -function componentToHex(c) { - var hex = c.toString(16); - return hex.length == 1 ? "0" + hex : hex; -} -function rgbToHex(rgb) { - let result = /^(\d+),\s?(\d+),\s?(\d+)/i.exec(rgb); - if (!result || !result.length) { - return ""; - } - return `#${componentToHex(Number(result[1]))}${componentToHex(Number(result[2]))}${componentToHex(Number(result[3]))}`; -} - -// src/util/livepreview.ts -var import_obsidian5 = __toModule(require("obsidian")); -var rangesInclude = (ranges, from, to) => { - for (const range of ranges) { - const { from: rFrom, to: rTo } = range; - if (rFrom >= from && rFrom <= to) - return true; - if (rTo >= from && rTo <= to) - return true; - if (rFrom < from && rTo > to) - return true; - } - return false; -}; -var isLivePreview = (state) => { - const md = state.field(import_obsidian5.editorViewField); - const { state: viewState } = md.leaf.getViewState() ?? {}; - if (import_obsidian5.requireApiVersion && (0, import_obsidian5.requireApiVersion)("0.13.21") && false) { - return state.field(editorLivePreviewField); - } else { - const md2 = state.field(import_obsidian5.editorViewField); - const { state: viewState2 } = md2.leaf.getViewState() ?? {}; - return viewState2 && viewState2.mode == "source" && viewState2.source == false; - } -}; - -// src/main.ts -Object.fromEntries = Object.fromEntries || function(entries) { - const obj = {}; - for (const pair of entries) { - if (Object(pair) !== pair) { - throw new TypeError("iterable for fromEntries should yield objects"); - } - const { "0": key, "1": val } = pair; - Object.defineProperty(obj, key, { - configurable: true, - enumerable: true, - writable: true, - value: val - }); - } - return obj; -}; -var DEFAULT_APP_SETTINGS = { - userAdmonitions: {}, - syntaxHighlight: false, - copyButton: false, - version: "", - autoCollapse: false, - defaultCollapseType: "open", - syncLinks: true, - enableMarkdownProcessor: false, - injectColor: true, - parseTitles: true, - allowMSSyntax: true, - livePreviewMS: true -}; -var ObsidianAdmonition = class extends import_obsidian6.Plugin { - constructor() { - super(...arguments); - this.admonitions = {}; - this.postprocessors = new Map(); - } - get types() { - return Object.keys(this.admonitions); - } - get admonitionArray() { - return Object.keys(this.admonitions).map((key) => { - return { - ...this.admonitions[key], - type: key - }; - }); - } - async saveSettings() { - this.data.version = this.manifest.version; - await this.saveData(this.data); - } - async loadSettings() { - let data = Object.assign({}, DEFAULT_APP_SETTINGS, await this.loadData()); - this.data = data; - if (this.data.userAdmonitions && (!this.data.version || Number(this.data.version.split(".")[0]) < 5)) { - for (let admonition in this.data.userAdmonitions) { - if (Object.prototype.hasOwnProperty.call(this.data.userAdmonitions[admonition], "type")) - continue; - this.data.userAdmonitions[admonition] = { - ...this.data.userAdmonitions[admonition], - icon: { - type: "font-awesome", - name: this.data.userAdmonitions[admonition].icon - } - }; - } - } - this.admonitions = { - ...ADMONITION_MAP, - ...this.data.userAdmonitions - }; - await this.saveSettings(); - } - async addAdmonition(admonition) { - this.data.userAdmonitions = { - ...this.data.userAdmonitions, - [admonition.type]: admonition - }; - this.admonitions = { - ...ADMONITION_MAP, - ...this.data.userAdmonitions - }; - if (this.data.syntaxHighlight) { - this.turnOnSyntaxHighlighting([admonition.type]); - } - await this.saveSettings(); - const processor = this.registerMarkdownCodeBlockProcessor(`ad-${admonition.type}`, (src, el, ctx) => this.postprocessor(admonition.type, src, el, ctx)); - this.postprocessors.set(admonition.type, processor); - } - async removeAdmonition(admonition) { - if (this.data.userAdmonitions[admonition.type]) { - delete this.data.userAdmonitions[admonition.type]; - } - this.admonitions = { - ...ADMONITION_MAP, - ...this.data.userAdmonitions - }; - if (this.data.syntaxHighlight) { - this.turnOffSyntaxHighlighting([admonition.type]); - } - if (admonition.command) { - this.unregisterCommandsFor(admonition); - } - if (this.postprocessors.has(admonition.type)) { - import_obsidian6.MarkdownPreviewRenderer.unregisterPostProcessor(this.postprocessors.get(admonition.type)); - import_obsidian6.MarkdownPreviewRenderer.unregisterCodeBlockPostProcessor(`ad-${admonition.type}`); - this.postprocessors.delete(admonition.type); - } - await this.saveSettings(); - } - async onload() { - console.log("Obsidian Admonition loaded"); - await this.loadSettings(); - this.addSettingTab(new AdmonitionSetting(this.app, this)); - (0, import_obsidian6.addIcon)(ADD_COMMAND_NAME.toString(), ADD_ADMONITION_COMMAND_ICON); - (0, import_obsidian6.addIcon)(REMOVE_COMMAND_NAME.toString(), REMOVE_ADMONITION_COMMAND_ICON); - if (this.data.enableMarkdownProcessor) { - this.enableMarkdownProcessor(); - } - Object.keys(this.admonitions).forEach((type) => { - const processor = this.registerMarkdownCodeBlockProcessor(`ad-${type}`, (src, el, ctx) => this.postprocessor(type, src, el, ctx)); - this.postprocessors.set(type, processor); - if (this.admonitions[type].command) { - this.registerCommandsFor(this.admonitions[type]); - } - }); - if (this.data.syntaxHighlight) { - this.turnOnSyntaxHighlighting(); - } - this.addCommand({ - id: "collapse-admonitions", - name: "Collapse Admonitions in Note", - checkCallback: (checking) => { - if (checking) { - return !!this.app.workspace.getActiveViewOfType(import_obsidian6.MarkdownView); - } - let view = this.app.workspace.getActiveViewOfType(import_obsidian6.MarkdownView); - if (!view || !(view instanceof import_obsidian6.MarkdownView)) - return; - let admonitions = view.contentEl.querySelectorAll("details[open].admonition-plugin"); - for (let i = 0; i < admonitions.length; i++) { - let admonition = admonitions[i]; - admonition.removeAttribute("open"); - } - } - }); - this.addCommand({ - id: "open-admonitions", - name: "Open Admonitions in Note", - checkCallback: (checking) => { - if (checking) { - return !!this.app.workspace.getActiveViewOfType(import_obsidian6.MarkdownView); - } - let view = this.app.workspace.getActiveViewOfType(import_obsidian6.MarkdownView); - if (!view || !(view instanceof import_obsidian6.MarkdownView)) - return; - let admonitions = view.contentEl.querySelectorAll("details:not([open]).admonition-plugin"); - for (let i = 0; i < admonitions.length; i++) { - let admonition = admonitions[i]; - admonition.setAttribute("open", "open"); - } - } - }); - this.addCommand({ - id: "insert-admonition", - name: "Insert Admonition", - editorCallback: (editor, view) => { - let suggestor = new InsertAdmonitionModal(this, editor); - suggestor.open(); - } - }); - this.registerEvent(this.app.metadataCache.on("resolve", (file) => { - if (!this.data.syncLinks) - return; - if (this.app.workspace.getActiveFile() != file) - return; - const view = this.app.workspace.getActiveViewOfType(import_obsidian6.MarkdownView); - if (!view || !(view instanceof import_obsidian6.MarkdownView)) - return; - const admonitionLinks = view.contentEl.querySelectorAll(".admonition:not(.admonition-plugin-async) a.internal-link"); - this.addLinksToCache(admonitionLinks, file.path); - })); - this.enableMSSyntax(); - } - enableMSSyntax() { - this.registerMarkdownPostProcessor((el, ctx) => { - if (!this.data.allowMSSyntax) - return; - if (el?.firstChild?.nodeName !== "BLOCKQUOTE") - return; - const section = ctx.getSectionInfo(el); - if (!section) - return; - const text = section.text.split("\n"); - const firstLine = text[section.lineStart]; - if (!/^> \[!.+\]/.test(firstLine)) - return; - const [, type, title, col] = firstLine.match(/^> \[!(\w+)(?:: (.+))?\](x|\+|\-)?/) ?? []; - if (!type || !this.admonitions[type]) - return; - let collapse; - switch (col) { - case "+": { - collapse = "open"; - break; - } - case "-": { - collapse = "closed"; - break; - } - case "x": { - break; - } - default: { - collapse = this.data.autoCollapse ? this.data.defaultCollapseType : null; - } - } - const admonition2 = this.getAdmonitionElement(type, title ?? this.admonitions[type].title ?? `${type[0].toUpperCase()}${type.slice(1).toLowerCase()}`, this.admonitions[type].icon, this.admonitions[type].color, collapse); - const content = text.slice(section.lineStart + 1, section.lineEnd + 1).join("\n").replace(/> /g, ""); - const contentEl = this.getAdmonitionContentElement(type, admonition2, content); - import_obsidian6.MarkdownRenderer.renderMarkdown(content, contentEl, ctx.sourcePath, null); - el.firstElementChild.replaceWith(admonition2); - }); - const admonition = import_state.StateEffect.define(); - class AdmonitionWidget extends import_view.WidgetType { - constructor(type, title, collapse, content) { - super(); - this.type = type; - this.title = title; - this.collapse = collapse; - this.content = content; - } - eq(widget) { - return this.type == widget.type && this.title == widget.title && this.collapse == widget.collapse && this.content == widget.content; - } - toDOM(view) { - const admonitionElement = self.getAdmonitionElement(this.type, this.title ?? self.admonitions[this.type].title ?? this.type[0].toUpperCase() + this.type.slice(1).toLowerCase(), self.admonitions[this.type].icon, self.admonitions[this.type].color, this.collapse); - const parent = createDiv(`cm-embed-block admonition-parent admonition-${this.type}-parent`); - parent.appendChild(admonitionElement); - const edit = parent.createDiv({ - cls: "edit-block-button", - attr: { "aria-label": "Edit this block" } - }); - (0, import_obsidian6.setIcon)(edit, "code-glyph"); - edit.onclick = () => { - const position = view.posAtDOM(admonitionElement); - view.dispatch({ - selection: { - head: position, - anchor: position - } - }); - }; - const content = this.content.replace(/^> /gm, ""); - const contentEl = self.getAdmonitionContentElement(this.type, admonitionElement, content); - import_obsidian6.MarkdownRenderer.renderMarkdown(content, contentEl, "", null); - return parent; - } - } - class StatefulDecorationSet { - constructor(editor) { - this.cache = Object.create(null); - this.editor = editor; - } - async compute(tokens) { - const admonition2 = []; - for (let token of tokens) { - let deco = this.cache[token.value]; - if (!deco) { - deco = this.cache[token.value] = import_view.Decoration.replace({ - inclusive: true, - widget: new AdmonitionWidget(token.type, token.title, token.collapse, token.value), - block: true, - from: token.from, - to: token.to - }); - } - admonition2.push(deco.range(token.from, token.to)); - } - return import_view.Decoration.set(admonition2, true); - } - async updateDecos(tokens) { - const admonitions = await this.compute(tokens); - if (admonitions || this.editor.state.field(field).size) { - this.editor.dispatch({ - effects: [admonition.of(admonitions ?? import_view.Decoration.none)] - }); - } - } - clearDecos() { - this.editor.dispatch({ - effects: [admonition.of(import_view.Decoration.none)] - }); - } - } - const self = this; - const plugin = import_view.ViewPlugin.fromClass(class { - constructor(view) { - this.source = false; - this.manager = new StatefulDecorationSet(view); - this.build(view); - } - update(update) { - if (update.heightChanged) - return; - if (!self.data.livePreviewMS) - return; - if (!isLivePreview(update.view.state)) { - if (this.source == false) { - this.source = true; - this.manager.updateDecos([]); - } - return; - } - if (update.docChanged || update.viewportChanged || update.selectionSet || this.source == true) { - this.source = false; - this.build(update.view); - } - } - destroy() { - } - build(view) { - if (!self.data.allowMSSyntax) - return; - if (!self.data.livePreviewMS) - return; - const targetElements = []; - if (!isLivePreview(view.state)) - return; - for (let { from, to } of view.visibleRanges) { - const tree = (0, import_language.syntaxTree)(view.state); - tree.iterate({ - from, - to, - enter: (types, from2, _) => { - const tokenProps = types.prop(import_stream_parser.tokenClassNodeProp); - const props = new Set(tokenProps?.split(" ")); - if (!props.has("quote")) - return; - const original = view.state.doc.sliceString(from2); - const split = original.split("\n"); - const line = split[0]; - if (!/^> \[!.+\]/.test(line)) - return; - const [, type, title, col] = line.match(/^> \[!(\w+)(?:: (.+))?\](x|\+|\-)?/) ?? []; - if (!type || !self.admonitions[type]) - return; - let collapse; - switch (col) { - case "+": { - collapse = "open"; - break; - } - case "-": { - collapse = "closed"; - break; - } - case "x": { - break; - } - default: { - collapse = self.data.autoCollapse ? self.data.defaultCollapseType : null; - } - } - const end2 = split.findIndex((v) => !/^>/.test(v)); - const content = split.slice(1, end2 > -1 ? end2 : void 0).join("\n"); - const to2 = from2 + line.length + content.length + 1; - targetElements.push({ - from: from2, - to: to2, - value: content, - title, - type, - collapse - }); - } - }); - } - this.manager.updateDecos(targetElements); - } - }); - const field = import_state.StateField.define({ - create() { - return import_view.Decoration.none; - }, - update(deco, tr) { - return tr.effects.reduce((deco2, effect4) => { - if (effect4.is(admonition)) - return effect4.value.update({ - filter: (_, __, decoration) => { - return !rangesInclude(tr.newSelection.ranges, decoration.spec.from, decoration.spec.to); - } - }); - return deco2; - }, deco.map(tr.changes)); - }, - provide: (field2) => import_view.EditorView.decorations.from(field2) - }); - this.registerEditorExtension([plugin, field]); - } - enableMarkdownProcessor() { - if (!this.data.enableMarkdownProcessor) - return; - const TYPE_REGEX = new RegExp(`(!{3,}|\\?{3,}\\+?) ad-(${this.types.join("|")})(\\s[\\s\\S]+)?`); - const END_REGEX = new RegExp(`\\-{3,} admonition`); - let push = false, id; - const childMap = new Map(); - const elementMap = new Map(); - const idMap = new Map(); - Object.values(this.admonitions).filter(({ command }) => command).forEach((admonition) => { - this.registerCommandsFor(admonition); - }); - this.registerMarkdownPostProcessor(async (el, ctx) => { - if (!this.data.enableMarkdownProcessor) - return; - if (END_REGEX.test(el.textContent) && push) { - push = false; - const lastElement = createDiv(); - if (id && idMap.has(id) && childMap.has(idMap.get(id)) && el.children[0].textContent.replace(END_REGEX, "").length) { - lastElement.innerHTML = el.children[0].outerHTML.replace(new RegExp(`(
)?\\n?${END_REGEX.source}`), ""); - const contentEl = childMap.get(idMap.get(id)).contentEl; - if (contentEl) - contentEl.appendChild(lastElement.children[0]); - } - el.children[0].detach(); - return; - } - if (!TYPE_REGEX.test(el.textContent) && !push) - return; - if (!push) { - if (!(Array.from(el.children).find((e) => TYPE_REGEX.test(e.textContent)) instanceof HTMLParagraphElement)) - return; - push = true; - let child = new import_obsidian6.MarkdownRenderChild(el); - id = getID(); - idMap.set(id, child); - childMap.set(child, { - contentEl: null, - elements: [], - loaded: false - }); - child.onload = async () => { - const source = el.textContent; - let [ - , - col, - type, - title = type[0].toUpperCase() + type.slice(1).toLowerCase() - ] = source.match(TYPE_REGEX) ?? []; - if (!type) - return; - let collapse; - if (/\?{3,}/.test(col)) { - collapse = /\+/.test(col) ? "open" : "closed"; - } - if ((title.trim() === "" || title === '""') && collapse !== void 0 && collapse !== "none") { - title = type[0].toUpperCase() + type.slice(1).toLowerCase(); - new import_obsidian6.Notice("An admonition must have a title if it is collapsible."); - } - const admonition = this.admonitions[type]; - const admonitionElement = await this.getAdmonitionElementAsync(type, title.trim(), admonition.icon, admonition.injectColor ?? this.data.injectColor ? admonition.color : null, collapse); - const contentHolder = admonitionElement.createDiv("admonition-content-holder"); - const contentEl = contentHolder.createDiv("admonition-content"); - child.containerEl.appendChild(admonitionElement); - for (let element of childMap.get(child)?.elements) { - contentEl.appendChild(element); - } - childMap.set(child, { - ...childMap.get(child), - contentEl, - loaded: true - }); - }; - child.onunload = () => { - idMap.delete(id); - childMap.delete(child); - }; - ctx.addChild(child); - el.children[0].detach(); - return; - } - if (id && idMap.get(id)) { - const child = idMap.get(id); - childMap.set(child, { - ...childMap.get(child), - elements: [ - ...childMap.get(child).elements, - ...Array.from(el.children) - ] - }); - elementMap.set(el, child); - if (childMap.get(child)?.loaded) { - for (let element of childMap.get(child)?.elements) { - childMap.get(child).contentEl.appendChild(element); - } - } - } - }); - } - disableMarkdownProcessor() { - Object.values(this.admonitions).filter(({ command }) => command).forEach((admonition) => { - this.registerCommandsFor(admonition); - }); - } - unregisterCommandsFor(admonition) { - admonition.command = false; - if (this.app.commands.findCommand(`obsidian-admonition:insert-${admonition.type}`)) { - delete this.app.commands.editorCommands[`obsidian-admonition:insert-${admonition.type}`]; - delete this.app.commands.editorCommands[`obsidian-admonition:insert-${admonition.type}-with-title`]; - delete this.app.commands.commands[`obsidian-admonition:insert-${admonition.type}`]; - delete this.app.commands.commands[`obsidian-admonition:insert-${admonition.type}-with-title`]; - } - } - registerCommandsFor(admonition) { - admonition.command = true; - this.addCommand({ - id: `insert-${admonition.type}`, - name: `Insert ${admonition.type}`, - editorCheckCallback: (checking, editor, view) => { - if (checking) - return admonition.command; - if (admonition.command) { - try { - editor.getDoc().replaceSelection(`\`\`\`ad-${admonition.type} - -${editor.getDoc().getSelection()} +${i.getDoc().getSelection()} \`\`\` -`); - const cursor = editor.getCursor(); - editor.setCursor(cursor.line - 2); - } catch (e) { - new import_obsidian6.Notice("There was an issue inserting the admonition."); - } - } - } - }); - this.addCommand({ - id: `insert-${admonition.type}-with-title`, - name: `Insert ${admonition.type} With Title`, - editorCheckCallback: (checking, editor, view) => { - if (checking) - return admonition.command; - if (admonition.command) { - try { - editor.getDoc().replaceSelection(`\`\`\`ad-${admonition.type} -title: - -${editor.getDoc().getSelection()} - -\`\`\` -`); - const cursor = editor.getCursor(); - editor.setCursor(cursor.line - 3); - } catch (e) { - new import_obsidian6.Notice("There was an issue inserting the admonition."); - } - } - } - }); - if (this.data.enableMarkdownProcessor) { - this.addCommand({ - id: `insert-non-${admonition.type}`, - name: `Insert Non-codeblock ${admonition.type}`, - editorCheckCallback: (checking, editor, view) => { - if (checking) - return admonition.command && this.data.enableMarkdownProcessor; - if (admonition.command) { - try { - editor.getDoc().replaceSelection(`!!! ad-${admonition.type} - -${editor.getDoc().getSelection()} ---- admonition -`); - const cursor = editor.getCursor(); - editor.setCursor(cursor.line - 2); - } catch (e) { - new import_obsidian6.Notice("There was an issue inserting the admonition."); - } - } - } - }); - } - } - turnOnSyntaxHighlighting(types = Object.keys(this.admonitions)) { - if (!this.data.syntaxHighlight) - return; - types.forEach((type) => { - if (this.data.syntaxHighlight) { - const [, cmPatchedType] = `${type}`.match(/^([\w+#-]*)[^\n`]*$/); - window.CodeMirror.defineMode(`ad-${cmPatchedType}`, (config2, options) => { - return window.CodeMirror.getMode({}, "hypermd"); - }); - } - }); - this.app.workspace.layoutReady ? this.layoutReady() : this.app.workspace.onLayoutReady(this.layoutReady.bind(this)); - } - turnOffSyntaxHighlighting(types = Object.keys(this.admonitions)) { - types.forEach((type) => { - if (window.CodeMirror.modes.hasOwnProperty(`ad-${type}`)) { - delete window.CodeMirror.modes[`ad-${type}`]; - } - }); - this.app.workspace.layoutReady ? this.layoutReady() : this.app.workspace.onLayoutReady(this.layoutReady.bind(this)); - } - layoutReady() { - this.app.workspace.off("layout-ready", this.layoutReady.bind(this)); - this.refreshLeaves(); - } - refreshLeaves() { - this.app.workspace.iterateCodeMirrors((cm) => cm.setOption("mode", cm.getOption("mode"))); - } - async postprocessor(type, src, el, ctx) { - if (!this.admonitions[type]) { - return; - } - try { - const sourcePath = typeof ctx == "string" ? ctx : ctx?.sourcePath ?? this.app.workspace.getActiveFile()?.path ?? ""; - let { title, collapse, content, icon: icon2, color } = getParametersFromSource(type, src, this.admonitions[type]); - let match = new RegExp(`^!!! ad-(${this.types.join("|")})$`, "gm"); - let nestedAdmonitions = content.match(match) || []; - if (nestedAdmonitions.length) { - let matches = [getMatches(content, 0, nestedAdmonitions[0])]; - for (let i = 1; i < nestedAdmonitions.length; i++) { - matches.push(getMatches(content, matches[i - 1].end, nestedAdmonitions[i])); - } - let split = content.split("\n"); - for (let m of matches.reverse()) { - split.splice(m.start, m.end - m.start + 1, `\`\`\`ad-${m.type} -${m.src} -\`\`\``); - } - content = split.join("\n"); - } - if (this.data.autoCollapse && !collapse) { - collapse = this.data.defaultCollapseType ?? "open"; - } else if (collapse && collapse.trim() === "none") { - collapse = ""; - } - const id = getID(); - const admonition = this.admonitions[type]; - let admonitionElement = this.getAdmonitionElement(type, title, iconDefinitions.find(({ name }) => icon2 === name) ?? admonition.icon, color ?? (admonition.injectColor ?? this.data.injectColor ? admonition.color : null), collapse, id); - let markdownRenderChild = new import_obsidian6.MarkdownRenderChild(admonitionElement); - markdownRenderChild.containerEl = admonitionElement; - if (ctx && !(typeof ctx == "string")) { - markdownRenderChild.onload = () => { - }; - markdownRenderChild.onunload = () => { - }; - ctx.addChild(markdownRenderChild); - } - if (content && content.length) { - const admonitionContent = this.getAdmonitionContentElement(type, admonitionElement, content); - if (/^`{3,}mermaid/m.test(content)) { - const wasCollapsed = !admonitionElement.hasAttribute("open"); - if (admonitionElement instanceof HTMLDetailsElement) { - admonitionElement.setAttribute("open", "open"); - } - setImmediate(() => { - import_obsidian6.MarkdownRenderer.renderMarkdown(content, admonitionContent, sourcePath, markdownRenderChild); - if (admonitionElement instanceof HTMLDetailsElement && wasCollapsed) { - admonitionElement.removeAttribute("open"); - } - }); - } else { - import_obsidian6.MarkdownRenderer.renderMarkdown(content, admonitionContent, sourcePath, markdownRenderChild); - } - const taskLists = admonitionContent.querySelectorAll(".task-list-item-checkbox"); - if (taskLists?.length) { - const split = src.split("\n"); - let slicer = 0; - taskLists.forEach((task) => { - const line = split.slice(slicer).findIndex((l) => /^\- \[.\]/.test(l)); - if (line == -1) - return; - task.dataset.line = `${line + slicer + 1}`; - slicer = line + slicer + 1; - }); - } - const links = admonitionContent.querySelectorAll("a.internal-link"); - this.addLinksToCache(links, sourcePath); - } - const parent = el.parentElement; - if (parent && !parent.hasClass("admonition-content")) { - parent.addClass("admonition-parent", `admonition-${type}-parent`); - } - el.replaceWith(admonitionElement); - return admonitionElement; - } catch (e) { - console.error(e); - const pre = createEl("pre"); - pre.createEl("code", { - attr: { - style: `color: var(--text-error) !important` - } - }).createSpan({ - text: "There was an error rendering the admonition:\n\n" + src - }); - el.replaceWith(pre); - } - } - async onunload() { - console.log("Obsidian Admonition unloaded"); - this.turnOffSyntaxHighlighting(); - } - addLinksToCache(links, sourcePath) { - if (!this.data.syncLinks) - return; - for (let i = 0; i < links.length; i++) { - const a = links[i]; - if (a.dataset.href) { - let file = this.app.metadataCache.getFirstLinkpathDest(a.dataset.href, ""); - let cache, path; - if (file && file instanceof import_obsidian6.TFile) { - cache = this.app.metadataCache.resolvedLinks; - path = file.path; - } else { - cache = this.app.metadataCache.unresolvedLinks; - path = a.dataset.href; - } - if (!cache[sourcePath]) { - cache[sourcePath] = { - [path]: 0 - }; - } - let resolved = cache[sourcePath]; - if (!resolved[path]) { - resolved[path] = 0; - } - resolved[path] += 1; - cache[sourcePath] = resolved; - } - } - } - getAdmonitionElement(type, title, icon2, color, collapse, id) { - let admonition, titleEl; - let attrs = color ? { - style: `--admonition-color: ${color};` - } : {}; - if (collapse && collapse != "none") { - if (collapse === "open") { - attrs.open = "open"; - } - admonition = createEl("details", { - cls: `admonition admonition-${type} admonition-plugin`, - attr: attrs - }); - titleEl = admonition.createEl("summary", { - cls: `admonition-title ${!title?.trim().length ? "no-title" : ""}` - }); - } else { - admonition = createDiv({ - cls: `admonition admonition-${type} admonition-plugin`, - attr: attrs - }); - titleEl = admonition.createDiv({ - cls: `admonition-title ${!title?.trim().length ? "no-title" : ""}` - }); - } - if (id) { - admonition.id = id; - } - if (title && title.trim().length) { - const markdownHolder = createDiv(); - import_obsidian6.MarkdownRenderer.renderMarkdown(title, markdownHolder, "", null); - const admonitionTitleContent = markdownHolder.children[0]?.tagName === "P" ? createDiv() : markdownHolder.children[0]; - const markdownElements = Array.from(markdownHolder.children[0]?.childNodes || []); - admonitionTitleContent.innerHTML = ""; - admonitionTitleContent.addClass("admonition-title-content"); - const iconEl = admonitionTitleContent.createDiv("admonition-title-icon"); - if (icon2 && icon2.name && icon2.type) { - iconEl.appendChild(getIconNode(icon2)); - } - const admonitionTitleMarkdown = admonitionTitleContent.createDiv("admonition-title-markdown"); - for (let i = 0; i < markdownElements.length; i++) { - admonitionTitleMarkdown.appendChild(markdownElements[i]); - } - titleEl.appendChild(admonitionTitleContent || createDiv()); - } - if (collapse) { - titleEl.createDiv("collapser").createDiv("handle"); - } - return admonition; - } - getAdmonitionContentElement(type, admonitionElement, content) { - const contentHolder = admonitionElement.createDiv("admonition-content-holder"); - const contentEl = contentHolder.createDiv("admonition-content"); - if (this.admonitions[type].copy ?? this.data.copyButton) { - let copy = contentHolder.createDiv("admonition-content-copy").appendChild(COPY_BUTTON_ICON.cloneNode(true)); - copy.addEventListener("click", () => { - navigator.clipboard.writeText(content.trim()).then(async () => { - new import_obsidian6.Notice("Admonition content copied to clipboard."); - }); - }); - } - return contentEl; - } - async getAdmonitionElementAsync(type, title, icon2, color, collapse, id) { - let admonition, titleEl, attrs = color ? { - style: `--admonition-color: ${color};` - } : {}; - if (collapse) { - if (collapse === "open") { - attrs.open = "open"; - } - admonition = createEl("details", { - cls: `admonition admonition-${type} admonition-plugin admonition-plugin-async`, - attr: attrs - }); - titleEl = admonition.createEl("summary", { - cls: `admonition-title ${!title.trim().length ? "no-title" : ""}` - }); - } else { - admonition = createDiv({ - cls: `admonition admonition-${type} admonition-plugin`, - attr: attrs - }); - titleEl = admonition.createDiv({ - cls: `admonition-title ${!title.trim().length ? "no-title" : ""}` - }); - } - if (id) { - admonition.id = id; - } - if (title && title.trim().length) { - if (this.data.parseTitles) { - const markdownHolder = createDiv(); - await import_obsidian6.MarkdownRenderer.renderMarkdown(title, markdownHolder, "", null); - const admonitionTitleContent = markdownHolder.children[0].tagName === "P" ? createDiv() : markdownHolder.children[0]; - const markdownElements = Array.from(markdownHolder.children[0]?.childNodes || []); - admonitionTitleContent.innerHTML = ""; - admonitionTitleContent.addClass("admonition-title-content"); - const iconEl = admonitionTitleContent.createDiv("admonition-title-icon"); - if (icon2 && icon2.name && icon2.type) { - iconEl.appendChild(getIconNode(icon2)); - } - const admonitionTitleMarkdown = admonitionTitleContent.createDiv("admonition-title-markdown"); - for (let i = 0; i < markdownElements.length; i++) { - admonitionTitleMarkdown.appendChild(markdownElements[i]); - } - titleEl.appendChild(admonitionTitleContent || createDiv()); - } else { - titleEl.appendChild(createDiv({ text: title })); - } - } - if (collapse) { - titleEl.createDiv("collapser").createDiv("handle"); - } - return admonition; - } -}; +`);let r=i.getCursor();i.setCursor(r.line-3)}catch{new x.Notice("There was an issue inserting the admonition.")}}})}unregisterType(c){this.data.syntaxHighlight&&this.turnOffSyntaxHighlighting([c.type]),c.command&&this.unregisterCommandsFor(c),this.postprocessors.has(c.type)&&(x.MarkdownPreviewRenderer.unregisterPostProcessor(this.postprocessors.get(c.type)),x.MarkdownPreviewRenderer.unregisterCodeBlockPostProcessor(`ad-${c.type}`),this.postprocessors.delete(c.type))}async removeAdmonition(c){this.data.userAdmonitions[c.type]&&delete this.data.userAdmonitions[c.type],this.unregisterType(c),this.calloutManager.removeAdmonition(c),await this.saveSettings()}unregisterCommandsFor(c){c.command=!1,this.app.commands.findCommand(`obsidian-admonition:insert-${c.type}`)&&(delete this.app.commands.editorCommands[`obsidian-admonition:insert-${c.type}`],delete this.app.commands.editorCommands[`obsidian-admonition:insert-${c.type}-with-title`],delete this.app.commands.commands[`obsidian-admonition:insert-${c.type}`],delete this.app.commands.commands[`obsidian-admonition:insert-${c.type}-with-title`])}async saveSettings(){this.data.version=this.manifest.version,await this.saveData(this.data)}async loadSettings(){let c=await this.loadData();if(this.data=Object.assign({},bb,c),this.data.userAdmonitions){if(!this.data.version||Number(this.data.version.split(".")[0])<5)for(let e in this.data.userAdmonitions)Object.prototype.hasOwnProperty.call(this.data.userAdmonitions[e],"type")||(this.data.userAdmonitions[e]={...this.data.userAdmonitions[e],icon:{type:"font-awesome",name:this.data.userAdmonitions[e].icon}});(!this.data.version||Number(this.data.version.split(".")[0])<8)&&new x.Notice(createFragment(e=>{e.createSpan({text:"Admonitions: Obsidian now has native support for callouts! Check out the "}),e.createEl("a",{text:"Admonitions ReadMe",href:"obsidian://show-plugin?id=obsidian-admonition"}),e.createSpan({text:" for what that means for Admonitions going forward."})}),0)}if(!this.data.rpgDownloadedOnce&&this.data.userAdmonitions&&Object.values(this.data.userAdmonitions).some(e=>{if(e.icon.type=="rpg")return!0})&&!this.data.icons.includes("rpg"))try{await this.downloadIcon("rpg"),this.data.rpgDownloadedOnce=!0}catch{}await this.saveSettings()}turnOnSyntaxHighlighting(c=Object.keys(this.admonitions)){!this.data.syntaxHighlight||(c.forEach(e=>{if(this.data.syntaxHighlight){let[,i]=`${e}`.match(/^([\w+#-]*)[^\n`]*$/);window.CodeMirror.defineMode(`ad-${i}`,(n,o)=>window.CodeMirror.getMode({},"hypermd"))}}),this.app.workspace.onLayoutReady(()=>this.app.workspace.iterateCodeMirrors(e=>e.setOption("mode",e.getOption("mode")))))}turnOffSyntaxHighlighting(c=Object.keys(this.admonitions)){c.forEach(e=>{window.CodeMirror.modes.hasOwnProperty(`ad-${e}`)&&delete window.CodeMirror.modes[`ad-${e}`]}),this.app.workspace.onLayoutReady(()=>this.app.workspace.iterateCodeMirrors(e=>e.setOption("mode",e.getOption("mode"))))}async onunload(){console.log("Obsidian Admonition unloaded"),this.postprocessors=null,this.turnOffSyntaxHighlighting()}}; /*! * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) diff --git a/notes/.obsidian/plugins/obsidian-admonition/manifest.json b/notes/.obsidian/plugins/obsidian-admonition/manifest.json index 81ab22f..bbf5fbe 100644 --- a/notes/.obsidian/plugins/obsidian-admonition/manifest.json +++ b/notes/.obsidian/plugins/obsidian-admonition/manifest.json @@ -1,9 +1,9 @@ { "id": "obsidian-admonition", "name": "Admonition", - "version": "6.9.6", - "minAppVersion": "0.11.0", - "description": "Admonition block-styled content for Obsidian.md", + "version": "9.0.1", + "minAppVersion": "0.14.0", + "description": "Enhanced callouts for Obsidian.md", "author": "Jeremy Valentine", "authorUrl": "", "isDesktopOnly": false diff --git a/notes/.obsidian/plugins/obsidian-admonition/styles.css b/notes/.obsidian/plugins/obsidian-admonition/styles.css index 1c7c8f9..607d9a5 100644 --- a/notes/.obsidian/plugins/obsidian-admonition/styles.css +++ b/notes/.obsidian/plugins/obsidian-admonition/styles.css @@ -1,250 +1 @@ -/* src/assets/main.css */ -:root { - --admonition-details-icon: url("data:image/svg+xml;charset=utf-8,"); - --admonition-margin-top: 1.5625em; - --admonition-margin-bottom: var(--admonition-margin-top); - --admonition-margin-top-lp: 0px; - --admonition-margin-bottom-lp: 12px; -} -.admonition { - margin-top: var(--admonition-margin-top); - margin-bottom: var(--admonition-margin-bottom); - margin-left: 0; - margin-right: 0; - padding: 0; - overflow: hidden; - color: var(--text-normal); - page-break-inside: avoid; - background-color: var(--background-secondary); - border-left: 0.2rem solid rgb(var(--admonition-color)); - border-radius: 0.1rem; - box-shadow: 0 0.2rem 0.5rem var(--background-modifier-box-shadow); -} -.admonition-title { - position: relative; - padding: 0.6rem 0.25em; - font-weight: 700; - background-color: rgba(var(--admonition-color), 0.1); -} -.admonition-title-content { - display: flex; - justify-content: flex-start; - margin-top: 0 !important; - margin-bottom: 0 !important; -} -.admonition-title-icon { - color: rgb(var(--admonition-color)); - display: flex; - align-items: center; - justify-content: center; - margin: 0 0.5em 0 0.25em; - min-width: 1em; - width: min-content; -} -.admonition-title-markdown { - display: block; -} -.admonition-title.no-title { - display: none; -} -.admonition > .admonition-title.no-title + .admonition-content-holder { - margin-top: 1rem; - margin-bottom: 1rem; -} -.admonition-content-holder { - position: relative; -} -.admonition-content { - margin: 10px 15px; - position: relative; - overflow-x: auto; -} -.admonition-content-copy { - color: var(--text-faint); - cursor: pointer; - opacity: 0; - position: absolute; - right: 0.375rem; - top: -5px; - transition: 0.3s opacity ease-in; -} -.admonition-content-copy:hover { - color: var(--text-normal); -} -.admonition:hover .admonition-content-copy, -.admonition-content-copy:hover { - opacity: 1; -} -.admonition-title:hover + .admonition-content .admonition-content-copy { - opacity: 0; -} -details.admonition:not([open]) { - padding-bottom: 0; -} -details.admonition > summary { - outline: none; - display: block !important; - list-style: none !important; - list-style-type: none !important; - min-height: 1rem; - border-top-left-radius: 0.1rem; - border-top-right-radius: 0.1rem; - cursor: pointer; -} -details.admonition > summary::-webkit-details-marker, -details.admonition > summary::marker { - display: none !important; -} -details.admonition > summary > .collapser { - position: absolute; - top: 50%; - right: 8px; - transform: translateY(-50%); - content: ""; -} -details.admonition > summary > .collapser > .handle { - transform: rotate(0deg); - transition: transform 0.25s; - background-color: currentColor; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: var(--admonition-details-icon); - mask-image: var(--admonition-details-icon); - width: 20px; - height: 20px; -} -details.admonition[open] > summary > .collapser > .handle { - transform: rotate(90deg); -} -.admonition-setting-additional-container > .setting-item:not(.setting-item-heading) { - border: 0px; -} -.admonition-setting-additional-container { - border-bottom: 1px solid var(--background-modifier-border); - border-top: 1px solid var(--background-modifier-border); - padding: 18px 0 0 0; -} -.admonition-setting-additional-container > .setting-item-heading:only-child { - padding-bottom: 18px; -} -.admonition-setting-additional-container > .additional { - margin: 6px 12px; -} -.admonition-setting-additional-container > .additional > .setting-item { - border-top: 0; - padding-top: 9px; -} -.admonition-setting-additional-container > .additional > .setting-item > .setting-item-control > *:first-child { - margin: 0 6px; -} -.setting-item > .admonition { - width: 50%; - margin: 0; -} -.unset-align-items { - align-items: unset; -} -.has-invalid-message { - display: grid; - grid-template-columns: 1fr 1fr; - grid-template-rows: 1fr 1fr; - grid-template-areas: "text image" "inv inv"; -} -input.is-invalid { - border-color: #dc3545 !important; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(0.375em + 0.1875rem) center; - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.admonition-type-setting input { - grid-column: span 2; -} -.invalid-feedback { - display: block; - grid-area: inv; - width: 100%; - margin-top: 0.25rem; - font-size: 0.875em; - color: #dc3545; -} -.suggestion-content.admonition-icon { - display: flex; - align-items: center; - justify-content: space-between; - flex-flow: row wrap; -} -.suggestion-content.admonition-icon > .suggestion-text.admonition-text { - width: fit-content; -} -.suggestion-content.admonition-icon > .suggestion-flair.admonition-suggester-icon { - width: min-content; - position: relative; - top: unset; - left: unset; - right: unset; - bottom: unset; - display: flex; - align-items: center; -} -.suggestion-content.admonition-icon > .suggestion-note { - width: 100%; -} -.admonition-suggester-icon svg { - width: 1em; -} -.admonition-color-settings .setting-item-control { - gap: 1rem; -} -.admonition-color-settings input[type=color]:disabled { - opacity: 0.75; - cursor: not-allowed; -} -.admonition li.task-list-item.is-checked p { - text-decoration: line-through; -} -.admonition-settings .coffee { - width: 60%; - color: var(--text-faint); - margin: 1rem auto; - text-align: center; -} -.admonition-settings .coffee img { - height: 30px; -} -.admonition-file-upload { - margin-right: 0; - margin-left: 12px; -} -.admonition-file-upload > input[type=file] { - display: none; -} -.insert-admonition-modal button:focus, -.insert-admonition-modal .clickable-icon:focus { - box-shadow: 0px 0px 5px rgb(0 0 0 / 50%); - border-color: var(--background-modifier-border-focus); -} -.is-live-preview .admonition { - margin-top: var(--admonition-margin-top-lp); - margin-bottom: var(--admonition-margin-bottom-lp); -} -.is-live-preview .admonition-content > * { - margin-top: 0px; - margin-bottom: 0px; -} -.is-live-preview .admonition-content > * br { - display: none; -} -.is-live-preview .admonition-content > *:first-child { - margin-top: 16px; -} -.is-live-preview .admonition-content > *:last-child { - margin-bottom: 16px; -} -.is-live-preview .admonition-content ul { - white-space: normal; -} - -/* src/styles.css */ +:root{--admonition-details-icon: url("data:image/svg+xml;charset=utf-8,");--admonition-margin-top: 1.5625em;--admonition-margin-bottom: var(--admonition-margin-top);--admonition-margin-top-lp: 0px;--admonition-margin-bottom-lp: 12px}.admonition{margin-top:var(--admonition-margin-top);margin-bottom:var(--admonition-margin-bottom);box-shadow:0 .2rem .5rem var(--background-modifier-box-shadow)}*:not(.is-live-preview) .admonition.no-content{display:none}.is-live-preview .admonition.no-content{opacity:.1}.admonition-title.no-title{display:none}.admonition-content,.callout-content{position:relative}.admonition.no-title .admonition-content{margin-top:0;margin-bottom:0}.admonition-content-copy{color:var(--text-faint);cursor:pointer;opacity:0;position:absolute;margin:.375rem;right:0;top:0;transition:.3s opacity ease-in}.admonition-content-copy:hover{color:var(--text-normal)}.admonition:hover .admonition-content-copy,.callout:hover .admonition-content-copy,.admonition-content-copy:hover{opacity:1}.admonition-title:hover+.admonition-content .admonition-content-copy{opacity:0}.admonition-settings .additional{margin:6px 12px}.admonition-settings .additional>.setting-item{border-top:0;padding-top:9px}.setting-item>.admonition{width:50%;margin:0}.unset-align-items{align-items:unset}.has-invalid-message{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;grid-template-areas:"text image" "inv inv"}input.is-invalid{border-color:#dc3545!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.admonition-type-setting input{grid-column:span 2}.invalid-feedback{display:block;grid-area:inv;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.suggestion-content.admonition-icon{display:flex;align-items:center;justify-content:space-between;flex-flow:row wrap}.suggestion-content.admonition-icon>.suggestion-text.admonition-text{width:fit-content}.suggestion-content.admonition-icon>.suggestion-flair.admonition-suggester-icon{width:min-content;position:relative;top:unset;left:unset;right:unset;bottom:unset;display:flex;align-items:center}.suggestion-content.admonition-icon>.suggestion-note{width:100%}.admonition-suggester-icon svg{width:1em}.admonition-color-settings .setting-item-control{gap:1rem}.admonition-color-settings input[type=color]:disabled{opacity:.75;cursor:not-allowed}.admonition-convert{display:flex;align-items:center;gap:.25rem}.admonition-convert-icon{display:flex;align-items:center}.admonition-convert-icon .admonition-spin{animation:admonition-convert 1s ease-in-out infinite;fill:currentColor}@keyframes admonition-convert{0%{transform:rotate(-45deg)}to{transform:rotate(315deg)}}.admonition-settings .admonition-convert{color:var(--text-error)}.notice-container .admonition-convert{justify-content:space-between;gap:1rem}.admonition li.task-list-item.is-checked p{text-decoration:line-through}.admonition-settings .coffee{width:60%;color:var(--text-faint);margin:1rem auto;text-align:center}.admonition-settings .coffee img{height:30px}.admonition-file-upload{margin-right:0;margin-left:12px}.admonition-file-upload>input[type=file]{display:none}.insert-admonition-modal button:focus,.insert-admonition-modal .clickable-icon:focus{box-shadow:0 0 5px #0000007f;border-color:var(--background-modifier-border-focus)}.admonition-settings details>summary{outline:none;display:block!important;list-style:none!important;list-style-type:none!important;min-height:1rem;border-top-left-radius:.1rem;border-top-right-radius:.1rem;cursor:pointer;position:relative}.admonition-settings details>summary::-webkit-details-marker,.admonition-settings details>summary::marker{display:none!important}.admonition-settings details>summary>.collapser{position:absolute;top:50%;right:8px;transform:translateY(-50%);content:""}.admonition-settings details>summary>.collapser>.handle{transform:rotate(0);transition:transform .25s;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:var(--admonition-details-icon);mask-image:var(--admonition-details-icon);width:20px;height:20px}.admonition-settings details[open]>summary>.collapser>.handle{transform:rotate(90deg)}.admonition-setting-warning{display:flex;gap:.25rem;align-items:center}.admonition-setting-warning.text-warning{color:var(--text-error)}.admonitions-nested-settings .setting-item{border:0px;padding-bottom:0}.admonitions-nested-settings{padding-bottom:18px}.admonitions-nested-settings[open] .setting-item-heading,.admonitions-nested-settings:not(details) .setting-item-heading{border-top:0px;border-bottom:1px solid var(--background-modifier-border)}.admonition.no-drop{box-shadow:none}.admonition.no-drop>.admonition-title.no-title+.admonition-content{margin-top:0;margin-bottom:0}.admonition.no-drop .admonition .admonition-content{border-right:1px solid rgba(var(--admonition-color),.2);border-bottom:1px solid rgba(var(--admonition-color),.2)}.admonition.no-drop .admonition .admonition-title.no-title+.admonition-content{border-top:1px solid rgba(var(--admonition-color),.2);margin-top:0;margin-bottom:0}.is-live-preview .admonition{margin-top:var(--admonition-margin-top-lp);margin-bottom:var(--admonition-margin-bottom-lp)}.is-live-preview .admonition-content>*{margin-top:0;margin-bottom:0}.is-live-preview .admonition-content>* br{display:none}.is-live-preview .admonition-content>*:first-child{margin-top:16px}.is-live-preview .admonition-content>*:last-child{margin-bottom:16px}.is-live-preview .admonition-content ul,.is-live-preview .admonition-content ol{white-space:normal}.is-live-preview .admonition-content .math-block>mjx-container{padding:0}.callout:not(.admonition).drop-shadow{box-shadow:0 .2rem .5rem var(--background-modifier-box-shadow)}.callout:not(.admonition) .no-title{display:none} diff --git a/notes/.obsidian/plugins/obsidian-charts/main.js b/notes/.obsidian/plugins/obsidian-charts/main.js index 6424a9b..515876d 100644 --- a/notes/.obsidian/plugins/obsidian-charts/main.js +++ b/notes/.obsidian/plugins/obsidian-charts/main.js @@ -3,76 +3,76 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source visit the plugins github repository (https://github.com/phibr0/obsidian-dictionary) */ -var $u=Object.create;var Di=Object.defineProperty;var Hu=Object.getOwnPropertyDescriptor;var Vu=Object.getOwnPropertyNames;var Wu=Object.getPrototypeOf,Yu=Object.prototype.hasOwnProperty;var La=n=>Di(n,"__esModule",{value:!0});var qs=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),Gu=(n,t)=>{La(n);for(var e in t)Di(n,e,{get:t[e],enumerable:!0})},qu=(n,t,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Vu(t))!Yu.call(n,i)&&i!=="default"&&Di(n,i,{get:()=>t[i],enumerable:!(e=Hu(t,i))||e.enumerable});return n},Te=n=>qu(La(Di(n!=null?$u(Wu(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);var Zl=qs((Vr,Wr)=>{(function(n,t){typeof Vr=="object"&&typeof Wr!="undefined"?Wr.exports=t():typeof define=="function"&&define.amd?define(t):n.chroma=t()})(Vr,function(){"use strict";for(var n=function(u,d,g){return d===void 0&&(d=0),g===void 0&&(g=1),ug?g:u},t=function(u){u._clipped=!1,u._unclipped=u.slice(0);for(var d=0;d<=3;d++)d<3?((u[d]<0||u[d]>255)&&(u._clipped=!0),u[d]=n(u[d],0,255)):d===3&&(u[d]=n(u[d],0,1));return u},e={},i=0,s=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];i=3?Array.prototype.slice.call(u):a(u[0])=="object"&&d?d.split("").filter(function(g){return u[0][g]!==void 0}).map(function(g){return u[0][g]}):u[0]},l=function(u){if(u.length<2)return null;var d=u.length-1;return a(u[d])=="string"?u[d].toLowerCase():null},c=Math.PI,h={clip_rgb:t,limit:n,type:a,unpack:o,last:l,PI:c,TWOPI:c*2,PITHIRD:c/3,DEG2RAD:c/180,RAD2DEG:180/c},f={format:{},autodetect:[]},p=h.last,m=h.clip_rgb,v=h.type,k=function(){for(var d=[],g=arguments.length;g--;)d[g]=arguments[g];var x=this;if(v(d[0])==="object"&&d[0].constructor&&d[0].constructor===this.constructor)return d[0];var M=p(d),C=!1;if(!M){C=!0,f.sorted||(f.autodetect=f.autodetect.sort(function(j,B){return B.p-j.p}),f.sorted=!0);for(var S=0,R=f.autodetect;S4?u[4]:1;return C===1?[0,0,0,S]:[g>=1?0:255*(1-g)*(1-C),x>=1?0:255*(1-x)*(1-C),M>=1?0:255*(1-M)*(1-C),S]},K=G,et=h.unpack,lt=h.type;_.prototype.cmyk=function(){return V(this._rgb)},T.cmyk=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["cmyk"])))},f.format.cmyk=K,f.autodetect.push({p:2,test:function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];if(u=et(u,"cmyk"),lt(u)==="array"&&u.length===4)return"cmyk"}});var rt=h.unpack,vt=h.last,st=function(u){return Math.round(u*100)/100},Q=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=rt(u,"hsla"),x=vt(u)||"lsa";return g[0]=st(g[0]||0),g[1]=st(g[1]*100)+"%",g[2]=st(g[2]*100)+"%",x==="hsla"||g.length>3&&g[3]<1?(g[3]=g.length>3?g[3]:1,x="hsla"):g.length=3,x+"("+g.join(",")+")"},ht=Q,he=h.unpack,te=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];u=he(u,"rgba");var g=u[0],x=u[1],M=u[2];g/=255,x/=255,M/=255;var C=Math.min(g,x,M),S=Math.max(g,x,M),R=(S+C)/2,A,z;return S===C?(A=0,z=Number.NaN):A=R<.5?(S-C)/(S+C):(S-C)/(2-S-C),g==S?z=(x-M)/(S-C):x==S?z=2+(M-g)/(S-C):M==S&&(z=4+(g-x)/(S-C)),z*=60,z<0&&(z+=360),u.length>3&&u[3]!==void 0?[z,A,R,u[3]]:[z,A,R]},ne=te,It=h.unpack,Ft=h.last,Ht=Math.round,zt=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=It(u,"rgba"),x=Ft(u)||"rgb";return x.substr(0,3)=="hsl"?ht(ne(g),x):(g[0]=Ht(g[0]),g[1]=Ht(g[1]),g[2]=Ht(g[2]),(x==="rgba"||g.length>3&&g[3]<1)&&(g[3]=g.length>3?g[3]:1,x="rgba"),x+"("+g.slice(0,x==="rgb"?3:4).join(",")+")")},Gt=zt,w=h.unpack,b=Math.round,y=function(){for(var u,d=[],g=arguments.length;g--;)d[g]=arguments[g];d=w(d,"hsl");var x=d[0],M=d[1],C=d[2],S,R,A;if(M===0)S=R=A=C*255;else{var z=[0,0,0],j=[0,0,0],B=C<.5?C*(1+M):C+M-C*M,X=2*C-B,Y=x/360;z[0]=Y+1/3,z[1]=Y,z[2]=Y-1/3;for(var it=0;it<3;it++)z[it]<0&&(z[it]+=1),z[it]>1&&(z[it]-=1),6*z[it]<1?j[it]=X+(B-X)*6*z[it]:2*z[it]<1?j[it]=B:3*z[it]<2?j[it]=X+(B-X)*(2/3-z[it])*6:j[it]=X;u=[b(j[0]*255),b(j[1]*255),b(j[2]*255)],S=u[0],R=u[1],A=u[2]}return d.length>3?[S,R,A,d[3]]:[S,R,A,1]},D=y,O=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,P=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,q=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,H=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Z=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,mt=Math.round,Rt=function(u){u=u.toLowerCase().trim();var d;if(f.format.named)try{return f.format.named(u)}catch(it){}if(d=u.match(O)){for(var g=d.slice(1,4),x=0;x<3;x++)g[x]=+g[x];return g[3]=1,g}if(d=u.match(P)){for(var M=d.slice(1,5),C=0;C<4;C++)M[C]=+M[C];return M}if(d=u.match(q)){for(var S=d.slice(1,4),R=0;R<3;R++)S[R]=mt(S[R]*2.55);return S[3]=1,S}if(d=u.match(H)){for(var A=d.slice(1,5),z=0;z<3;z++)A[z]=mt(A[z]*2.55);return A[3]=+A[3],A}if(d=u.match(U)){var j=d.slice(1,4);j[1]*=.01,j[2]*=.01;var B=D(j);return B[3]=1,B}if(d=u.match(Z)){var X=d.slice(1,4);X[1]*=.01,X[2]*=.01;var Y=D(X);return Y[3]=+d[4],Y}};Rt.test=function(u){return O.test(u)||P.test(u)||q.test(u)||H.test(u)||U.test(u)||Z.test(u)};var yt=Rt,Bt=h.type;_.prototype.css=function(u){return Gt(this._rgb,u)},T.css=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["css"])))},f.format.css=yt,f.autodetect.push({p:5,test:function(u){for(var d=[],g=arguments.length-1;g-- >0;)d[g]=arguments[g+1];if(!d.length&&Bt(u)==="string"&&yt.test(u))return"css"}});var jt=h.unpack;f.format.gl=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=jt(u,"rgba");return g[0]*=255,g[1]*=255,g[2]*=255,g},T.gl=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["gl"])))},_.prototype.gl=function(){var u=this._rgb;return[u[0]/255,u[1]/255,u[2]/255,u[3]]};var ie=h.unpack,ye=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=ie(u,"rgb"),x=g[0],M=g[1],C=g[2],S=Math.min(x,M,C),R=Math.max(x,M,C),A=R-S,z=A*100/255,j=S/(255-A)*100,B;return A===0?B=Number.NaN:(x===R&&(B=(M-C)/A),M===R&&(B=2+(C-x)/A),C===R&&(B=4+(x-M)/A),B*=60,B<0&&(B+=360)),[B,z,j]},ge=ye,pn=h.unpack,Re=Math.floor,$e=function(){for(var u,d,g,x,M,C,S=[],R=arguments.length;R--;)S[R]=arguments[R];S=pn(S,"hcg");var A=S[0],z=S[1],j=S[2],B,X,Y;j=j*255;var it=z*255;if(z===0)B=X=Y=j;else{A===360&&(A=0),A>360&&(A-=360),A<0&&(A+=360),A/=60;var dt=Re(A),at=A-dt,_t=j*(1-z),Ct=_t+it*(1-at),qt=_t+it*at,Ut=_t+it;switch(dt){case 0:u=[Ut,qt,_t],B=u[0],X=u[1],Y=u[2];break;case 1:d=[Ct,Ut,_t],B=d[0],X=d[1],Y=d[2];break;case 2:g=[_t,Ut,qt],B=g[0],X=g[1],Y=g[2];break;case 3:x=[_t,Ct,Ut],B=x[0],X=x[1],Y=x[2];break;case 4:M=[qt,_t,Ut],B=M[0],X=M[1],Y=M[2];break;case 5:C=[Ut,_t,Ct],B=C[0],X=C[1],Y=C[2];break}}return[B,X,Y,S.length>3?S[3]:1]},xi=$e,wi=h.unpack,Fn=h.type;_.prototype.hcg=function(){return ge(this._rgb)},T.hcg=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["hcg"])))},f.format.hcg=xi,f.autodetect.push({p:1,test:function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];if(u=wi(u,"hcg"),Fn(u)==="array"&&u.length===3)return"hcg"}});var Ae=h.unpack,rn=h.last,He=Math.round,ki=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=Ae(u,"rgba"),x=g[0],M=g[1],C=g[2],S=g[3],R=rn(u)||"auto";S===void 0&&(S=1),R==="auto"&&(R=S<1?"rgba":"rgb"),x=He(x),M=He(M),C=He(C);var A=x<<16|M<<8|C,z="000000"+A.toString(16);z=z.substr(z.length-6);var j="0"+He(S*255).toString(16);switch(j=j.substr(j.length-2),R.toLowerCase()){case"rgba":return"#"+z+j;case"argb":return"#"+j+z;default:return"#"+z}},Le=ki,Kt=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,xt=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,ee=function(u){if(u.match(Kt)){(u.length===4||u.length===7)&&(u=u.substr(1)),u.length===3&&(u=u.split(""),u=u[0]+u[0]+u[1]+u[1]+u[2]+u[2]);var d=parseInt(u,16),g=d>>16,x=d>>8&255,M=d&255;return[g,x,M,1]}if(u.match(xt)){(u.length===5||u.length===9)&&(u=u.substr(1)),u.length===4&&(u=u.split(""),u=u[0]+u[0]+u[1]+u[1]+u[2]+u[2]+u[3]+u[3]);var C=parseInt(u,16),S=C>>24&255,R=C>>16&255,A=C>>8&255,z=Math.round((C&255)/255*100)/100;return[S,R,A,z]}throw new Error("unknown hex color: "+u)},Vt=ee,Si=h.type;_.prototype.hex=function(u){return Le(this._rgb,u)},T.hex=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["hex"])))},f.format.hex=Vt,f.autodetect.push({p:4,test:function(u){for(var d=[],g=arguments.length-1;g-- >0;)d[g]=arguments[g+1];if(!d.length&&Si(u)==="string"&&[3,4,5,6,7,8,9].indexOf(u.length)>=0)return"hex"}});var Dc=h.unpack,ha=h.TWOPI,Ec=Math.min,Rc=Math.sqrt,Ac=Math.acos,Lc=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=Dc(u,"rgb"),x=g[0],M=g[1],C=g[2];x/=255,M/=255,C/=255;var S,R=Ec(x,M,C),A=(x+M+C)/3,z=A>0?1-R/A:0;return z===0?S=NaN:(S=(x-M+(x-C))/2,S/=Rc((x-M)*(x-M)+(x-C)*(M-C)),S=Ac(S),C>M&&(S=ha-S),S/=ha),[S*360,z,A]},Fc=Lc,Ic=h.unpack,Ts=h.limit,gn=h.TWOPI,Os=h.PITHIRD,mn=Math.cos,zc=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];u=Ic(u,"hsi");var g=u[0],x=u[1],M=u[2],C,S,R;return isNaN(g)&&(g=0),isNaN(x)&&(x=0),g>360&&(g-=360),g<0&&(g+=360),g/=360,g<1/3?(R=(1-x)/3,C=(1+x*mn(gn*g)/mn(Os-gn*g))/3,S=1-(R+C)):g<2/3?(g-=1/3,C=(1-x)/3,S=(1+x*mn(gn*g)/mn(Os-gn*g))/3,R=1-(C+S)):(g-=2/3,S=(1-x)/3,R=(1+x*mn(gn*g)/mn(Os-gn*g))/3,C=1-(S+R)),C=Ts(M*C*3),S=Ts(M*S*3),R=Ts(M*R*3),[C*255,S*255,R*255,u.length>3?u[3]:1]},Bc=zc,jc=h.unpack,Nc=h.type;_.prototype.hsi=function(){return Fc(this._rgb)},T.hsi=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["hsi"])))},f.format.hsi=Bc,f.autodetect.push({p:2,test:function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];if(u=jc(u,"hsi"),Nc(u)==="array"&&u.length===3)return"hsi"}});var $c=h.unpack,Hc=h.type;_.prototype.hsl=function(){return ne(this._rgb)},T.hsl=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["hsl"])))},f.format.hsl=D,f.autodetect.push({p:2,test:function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];if(u=$c(u,"hsl"),Hc(u)==="array"&&u.length===3)return"hsl"}});var Vc=h.unpack,Wc=Math.min,Yc=Math.max,Gc=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];u=Vc(u,"rgb");var g=u[0],x=u[1],M=u[2],C=Wc(g,x,M),S=Yc(g,x,M),R=S-C,A,z,j;return j=S/255,S===0?(A=Number.NaN,z=0):(z=R/S,g===S&&(A=(x-M)/R),x===S&&(A=2+(M-g)/R),M===S&&(A=4+(g-x)/R),A*=60,A<0&&(A+=360)),[A,z,j]},qc=Gc,Uc=h.unpack,Xc=Math.floor,Kc=function(){for(var u,d,g,x,M,C,S=[],R=arguments.length;R--;)S[R]=arguments[R];S=Uc(S,"hsv");var A=S[0],z=S[1],j=S[2],B,X,Y;if(j*=255,z===0)B=X=Y=j;else{A===360&&(A=0),A>360&&(A-=360),A<0&&(A+=360),A/=60;var it=Xc(A),dt=A-it,at=j*(1-z),_t=j*(1-z*dt),Ct=j*(1-z*(1-dt));switch(it){case 0:u=[j,Ct,at],B=u[0],X=u[1],Y=u[2];break;case 1:d=[_t,j,at],B=d[0],X=d[1],Y=d[2];break;case 2:g=[at,j,Ct],B=g[0],X=g[1],Y=g[2];break;case 3:x=[at,_t,j],B=x[0],X=x[1],Y=x[2];break;case 4:M=[Ct,at,j],B=M[0],X=M[1],Y=M[2];break;case 5:C=[j,at,_t],B=C[0],X=C[1],Y=C[2];break}}return[B,X,Y,S.length>3?S[3]:1]},Zc=Kc,Qc=h.unpack,Jc=h.type;_.prototype.hsv=function(){return qc(this._rgb)},T.hsv=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["hsv"])))},f.format.hsv=Zc,f.autodetect.push({p:2,test:function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];if(u=Qc(u,"hsv"),Jc(u)==="array"&&u.length===3)return"hsv"}});var se={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},th=h.unpack,ua=Math.pow,eh=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=th(u,"rgb"),x=g[0],M=g[1],C=g[2],S=nh(x,M,C),R=S[0],A=S[1],z=S[2],j=116*A-16;return[j<0?0:j,500*(R-A),200*(A-z)]},Ps=function(u){return(u/=255)<=.04045?u/12.92:ua((u+.055)/1.055,2.4)},Ds=function(u){return u>se.t3?ua(u,1/3):u/se.t2+se.t0},nh=function(u,d,g){u=Ps(u),d=Ps(d),g=Ps(g);var x=Ds((.4124564*u+.3575761*d+.1804375*g)/se.Xn),M=Ds((.2126729*u+.7151522*d+.072175*g)/se.Yn),C=Ds((.0193339*u+.119192*d+.9503041*g)/se.Zn);return[x,M,C]},fa=eh,ih=h.unpack,sh=Math.pow,rh=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];u=ih(u,"lab");var g=u[0],x=u[1],M=u[2],C,S,R,A,z,j;return S=(g+16)/116,C=isNaN(x)?S:S+x/500,R=isNaN(M)?S:S-M/200,S=se.Yn*Rs(S),C=se.Xn*Rs(C),R=se.Zn*Rs(R),A=Es(3.2404542*C-1.5371385*S-.4985314*R),z=Es(-.969266*C+1.8760108*S+.041556*R),j=Es(.0556434*C-.2040259*S+1.0572252*R),[A,z,j,u.length>3?u[3]:1]},Es=function(u){return 255*(u<=.00304?12.92*u:1.055*sh(u,1/2.4)-.055)},Rs=function(u){return u>se.t1?u*u*u:se.t2*(u-se.t0)},da=rh,ah=h.unpack,oh=h.type;_.prototype.lab=function(){return fa(this._rgb)},T.lab=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["lab"])))},f.format.lab=da,f.autodetect.push({p:2,test:function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];if(u=ah(u,"lab"),oh(u)==="array"&&u.length===3)return"lab"}});var lh=h.unpack,ch=h.RAD2DEG,hh=Math.sqrt,uh=Math.atan2,fh=Math.round,dh=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=lh(u,"lab"),x=g[0],M=g[1],C=g[2],S=hh(M*M+C*C),R=(uh(C,M)*ch+360)%360;return fh(S*1e4)===0&&(R=Number.NaN),[x,S,R]},ph=dh,gh=h.unpack,mh=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=gh(u,"rgb"),x=g[0],M=g[1],C=g[2],S=fa(x,M,C),R=S[0],A=S[1],z=S[2];return ph(R,A,z)},pa=mh,bh=h.unpack,_h=h.DEG2RAD,vh=Math.sin,yh=Math.cos,xh=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=bh(u,"lch"),x=g[0],M=g[1],C=g[2];return isNaN(C)&&(C=0),C=C*_h,[x,yh(C)*M,vh(C)*M]},wh=xh,kh=h.unpack,Sh=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];u=kh(u,"lch");var g=u[0],x=u[1],M=u[2],C=wh(g,x,M),S=C[0],R=C[1],A=C[2],z=da(S,R,A),j=z[0],B=z[1],X=z[2];return[j,B,X,u.length>3?u[3]:1]},ga=Sh,Mh=h.unpack,Ch=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=Mh(u,"hcl").reverse();return ga.apply(void 0,g)},Th=Ch,Oh=h.unpack,Ph=h.type;_.prototype.lch=function(){return pa(this._rgb)},_.prototype.hcl=function(){return pa(this._rgb).reverse()},T.lch=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["lch"])))},T.hcl=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["hcl"])))},f.format.lch=ga,f.format.hcl=Th,["lch","hcl"].forEach(function(u){return f.autodetect.push({p:2,test:function(){for(var d=[],g=arguments.length;g--;)d[g]=arguments[g];if(d=Oh(d,u),Ph(d)==="array"&&d.length===3)return u}})});var Dh={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},bn=Dh,Eh=h.type;_.prototype.name=function(){for(var u=Le(this._rgb,"rgb"),d=0,g=Object.keys(bn);d0;)d[g]=arguments[g+1];if(!d.length&&Eh(u)==="string"&&bn[u.toLowerCase()])return"named"}});var Rh=h.unpack,Ah=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=Rh(u,"rgb"),x=g[0],M=g[1],C=g[2];return(x<<16)+(M<<8)+C},Lh=Ah,Fh=h.type,Ih=function(u){if(Fh(u)=="number"&&u>=0&&u<=16777215){var d=u>>16,g=u>>8&255,x=u&255;return[d,g,x,1]}throw new Error("unknown num color: "+u)},zh=Ih,Bh=h.type;_.prototype.num=function(){return Lh(this._rgb)},T.num=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["num"])))},f.format.num=zh,f.autodetect.push({p:5,test:function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];if(u.length===1&&Bh(u[0])==="number"&&u[0]>=0&&u[0]<=16777215)return"num"}});var ma=h.unpack,ba=h.type,_a=Math.round;_.prototype.rgb=function(u){return u===void 0&&(u=!0),u===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(_a)},_.prototype.rgba=function(u){return u===void 0&&(u=!0),this._rgb.slice(0,4).map(function(d,g){return g<3?u===!1?d:_a(d):d})},T.rgb=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["rgb"])))},f.format.rgb=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];var g=ma(u,"rgba");return g[3]===void 0&&(g[3]=1),g},f.autodetect.push({p:3,test:function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];if(u=ma(u,"rgba"),ba(u)==="array"&&(u.length===3||u.length===4&&ba(u[3])=="number"&&u[3]>=0&&u[3]<=1))return"rgb"}});var Mi=Math.log,jh=function(u){var d=u/100,g,x,M;return d<66?(g=255,x=-155.25485562709179-.44596950469579133*(x=d-2)+104.49216199393888*Mi(x),M=d<20?0:-254.76935184120902+.8274096064007395*(M=d-10)+115.67994401066147*Mi(M)):(g=351.97690566805693+.114206453784165*(g=d-55)-40.25366309332127*Mi(g),x=325.4494125711974+.07943456536662342*(x=d-50)-28.0852963507957*Mi(x),M=255),[g,x,M,1]},va=jh,Nh=h.unpack,$h=Math.round,Hh=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];for(var g=Nh(u,"rgb"),x=g[0],M=g[2],C=1e3,S=4e4,R=.4,A;S-C>R;){A=(S+C)*.5;var z=va(A);z[2]/z[0]>=M/x?S=A:C=A}return $h(A)},Vh=Hh;_.prototype.temp=_.prototype.kelvin=_.prototype.temperature=function(){return Vh(this._rgb)},T.temp=T.kelvin=T.temperature=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];return new(Function.prototype.bind.apply(_,[null].concat(u,["temp"])))},f.format.temp=f.format.kelvin=f.format.temperature=va;var Wh=h.type;_.prototype.alpha=function(u,d){return d===void 0&&(d=!1),u!==void 0&&Wh(u)==="number"?d?(this._rgb[3]=u,this):new _([this._rgb[0],this._rgb[1],this._rgb[2],u],"rgb"):this._rgb[3]},_.prototype.clipped=function(){return this._rgb._clipped||!1},_.prototype.darken=function(u){u===void 0&&(u=1);var d=this,g=d.lab();return g[0]-=se.Kn*u,new _(g,"lab").alpha(d.alpha(),!0)},_.prototype.brighten=function(u){return u===void 0&&(u=1),this.darken(-u)},_.prototype.darker=_.prototype.darken,_.prototype.brighter=_.prototype.brighten,_.prototype.get=function(u){var d=u.split("."),g=d[0],x=d[1],M=this[g]();if(x){var C=g.indexOf(x);if(C>-1)return M[C];throw new Error("unknown channel "+x+" in mode "+g)}else return M};var Yh=h.type,Gh=Math.pow,qh=1e-7,Uh=20;_.prototype.luminance=function(u){if(u!==void 0&&Yh(u)==="number"){if(u===0)return new _([0,0,0,this._rgb[3]],"rgb");if(u===1)return new _([255,255,255,this._rgb[3]],"rgb");var d=this.luminance(),g="rgb",x=Uh,M=function(S,R){var A=S.interpolate(R,.5,g),z=A.luminance();return Math.abs(u-z)u?M(S,A):M(A,R)},C=(d>u?M(new _([0,0,0]),this):M(this,new _([255,255,255]))).rgb();return new _(C.concat([this._rgb[3]]))}return Xh.apply(void 0,this._rgb.slice(0,3))};var Xh=function(u,d,g){return u=As(u),d=As(d),g=As(g),.2126*u+.7152*d+.0722*g},As=function(u){return u/=255,u<=.03928?u/12.92:Gh((u+.055)/1.055,2.4)},re={},ya=h.type,xa=function(u,d,g){g===void 0&&(g=.5);for(var x=[],M=arguments.length-3;M-- >0;)x[M]=arguments[M+3];var C=x[0]||"lrgb";if(!re[C]&&!x.length&&(C=Object.keys(re)[0]),!re[C])throw new Error("interpolation mode "+C+" is not defined");return ya(u)!=="object"&&(u=new _(u)),ya(d)!=="object"&&(d=new _(d)),re[C](u,d,g).alpha(u.alpha()+g*(d.alpha()-u.alpha()))};_.prototype.mix=_.prototype.interpolate=function(u,d){d===void 0&&(d=.5);for(var g=[],x=arguments.length-2;x-- >0;)g[x]=arguments[x+2];return xa.apply(void 0,[this,u,d].concat(g))},_.prototype.premultiply=function(u){u===void 0&&(u=!1);var d=this._rgb,g=d[3];return u?(this._rgb=[d[0]*g,d[1]*g,d[2]*g,g],this):new _([d[0]*g,d[1]*g,d[2]*g,g],"rgb")},_.prototype.saturate=function(u){u===void 0&&(u=1);var d=this,g=d.lch();return g[1]+=se.Kn*u,g[1]<0&&(g[1]=0),new _(g,"lch").alpha(d.alpha(),!0)},_.prototype.desaturate=function(u){return u===void 0&&(u=1),this.saturate(-u)};var wa=h.type;_.prototype.set=function(u,d,g){g===void 0&&(g=!1);var x=u.split("."),M=x[0],C=x[1],S=this[M]();if(C){var R=M.indexOf(C);if(R>-1){if(wa(d)=="string")switch(d.charAt(0)){case"+":S[R]+=+d;break;case"-":S[R]+=+d;break;case"*":S[R]*=+d.substr(1);break;case"/":S[R]/=+d.substr(1);break;default:S[R]=+d}else if(wa(d)==="number")S[R]=d;else throw new Error("unsupported value for Color.set");var A=new _(S,M);return g?(this._rgb=A._rgb,this):A}throw new Error("unknown channel "+C+" in mode "+M)}else return S};var Kh=function(u,d,g){var x=u._rgb,M=d._rgb;return new _(x[0]+g*(M[0]-x[0]),x[1]+g*(M[1]-x[1]),x[2]+g*(M[2]-x[2]),"rgb")};re.rgb=Kh;var Ls=Math.sqrt,_n=Math.pow,Zh=function(u,d,g){var x=u._rgb,M=x[0],C=x[1],S=x[2],R=d._rgb,A=R[0],z=R[1],j=R[2];return new _(Ls(_n(M,2)*(1-g)+_n(A,2)*g),Ls(_n(C,2)*(1-g)+_n(z,2)*g),Ls(_n(S,2)*(1-g)+_n(j,2)*g),"rgb")};re.lrgb=Zh;var Qh=function(u,d,g){var x=u.lab(),M=d.lab();return new _(x[0]+g*(M[0]-x[0]),x[1]+g*(M[1]-x[1]),x[2]+g*(M[2]-x[2]),"lab")};re.lab=Qh;var In=function(u,d,g,x){var M,C,S,R;x==="hsl"?(S=u.hsl(),R=d.hsl()):x==="hsv"?(S=u.hsv(),R=d.hsv()):x==="hcg"?(S=u.hcg(),R=d.hcg()):x==="hsi"?(S=u.hsi(),R=d.hsi()):(x==="lch"||x==="hcl")&&(x="hcl",S=u.hcl(),R=d.hcl());var A,z,j,B,X,Y;x.substr(0,1)==="h"&&(M=S,A=M[0],j=M[1],X=M[2],C=R,z=C[0],B=C[1],Y=C[2]);var it,dt,at,_t;return!isNaN(A)&&!isNaN(z)?(z>A&&z-A>180?_t=z-(A+360):z180?_t=z+360-A:_t=z-A,dt=A+g*_t):isNaN(A)?isNaN(z)?dt=Number.NaN:(dt=z,(X==1||X==0)&&x!="hsv"&&(it=B)):(dt=A,(Y==1||Y==0)&&x!="hsv"&&(it=j)),it===void 0&&(it=j+g*(B-j)),at=X+g*(Y-X),new _([dt,it,at],x)},ka=function(u,d,g){return In(u,d,g,"lch")};re.lch=ka,re.hcl=ka;var Jh=function(u,d,g){var x=u.num(),M=d.num();return new _(x+g*(M-x),"num")};re.num=Jh;var tu=function(u,d,g){return In(u,d,g,"hcg")};re.hcg=tu;var eu=function(u,d,g){return In(u,d,g,"hsi")};re.hsi=eu;var nu=function(u,d,g){return In(u,d,g,"hsl")};re.hsl=nu;var iu=function(u,d,g){return In(u,d,g,"hsv")};re.hsv=iu;var su=h.clip_rgb,Fs=Math.pow,Is=Math.sqrt,zs=Math.PI,Sa=Math.cos,Ma=Math.sin,ru=Math.atan2,au=function(u,d,g){d===void 0&&(d="lrgb"),g===void 0&&(g=null);var x=u.length;g||(g=Array.from(new Array(x)).map(function(){return 1}));var M=x/g.reduce(function(dt,at){return dt+at});if(g.forEach(function(dt,at){g[at]*=M}),u=u.map(function(dt){return new _(dt)}),d==="lrgb")return ou(u,g);for(var C=u.shift(),S=C.get(d),R=[],A=0,z=0,j=0;j=360;)it-=360;S[Y]=it}else S[Y]=S[Y]/R[Y];return X/=x,new _(S,d).alpha(X>.99999?1:X,!0)},ou=function(u,d){for(var g=u.length,x=[0,0,0,0],M=0;M.9999999&&(x[3]=1),new _(su(x))},vn=h.type,lu=Math.pow,Ci=function(u){var d="rgb",g=T("#ccc"),x=0,M=[0,1],C=[],S=[0,0],R=!1,A=[],z=!1,j=0,B=1,X=!1,Y={},it=!0,dt=1,at=function(N){if(N=N||["#fff","#000"],N&&vn(N)==="string"&&T.brewer&&T.brewer[N.toLowerCase()]&&(N=T.brewer[N.toLowerCase()]),vn(N)==="array"){N.length===1&&(N=[N[0],N[0]]),N=N.slice(0);for(var tt=0;tt=R[pt];)pt++;return pt-1}return 0},Ct=function(N){return N},qt=function(N){return N},Ut=function(N,tt){var pt,ct;if(tt==null&&(tt=!1),isNaN(N)||N===null)return g;if(tt)ct=N;else if(R&&R.length>2){var ae=_t(N);ct=ae/(R.length-2)}else B!==j?ct=(N-j)/(B-j):ct=1;ct=qt(ct),tt||(ct=Ct(ct)),dt!==1&&(ct=lu(ct,dt)),ct=S[0]+ct*(1-S[0]-S[1]),ct=Math.min(1,Math.max(0,ct));var Dt=Math.floor(ct*1e4);if(it&&Y[Dt])pt=Y[Dt];else{if(vn(A)==="array")for(var kt=0;kt=St&&kt===C.length-1){pt=A[kt];break}if(ct>St&&ct2){var kt=N.map(function(Nt,Tt){return Tt/(N.length-1)}),St=N.map(function(Nt){return(Nt-j)/(B-j)});St.every(function(Nt,Tt){return kt[Tt]===Nt})||(qt=function(Nt){if(Nt<=0||Nt>=1)return Nt;for(var Tt=0;Nt>=St[Tt+1];)Tt++;var Ye=(Nt-St[Tt])/(St[Tt+1]-St[Tt]),yn=kt[Tt]+Ye*(kt[Tt+1]-kt[Tt]);return yn})}}return M=[j,B],gt},gt.mode=function(N){return arguments.length?(d=N,ue(),gt):d},gt.range=function(N,tt){return at(N,tt),gt},gt.out=function(N){return z=N,gt},gt.spread=function(N){return arguments.length?(x=N,gt):x},gt.correctLightness=function(N){return N==null&&(N=!0),X=N,ue(),X?Ct=function(tt){for(var pt=Ut(0,!0).lab()[0],ct=Ut(1,!0).lab()[0],ae=pt>ct,Dt=Ut(tt,!0).lab()[0],kt=pt+(ct-pt)*tt,St=Dt-kt,Nt=0,Tt=1,Ye=20;Math.abs(St)>.01&&Ye-- >0;)(function(){return ae&&(St*=-1),St<0?(Nt=tt,tt+=(Tt-tt)*.5):(Tt=tt,tt+=(Nt-tt)*.5),Dt=Ut(tt,!0).lab()[0],St=Dt-kt})();return tt}:Ct=function(tt){return tt},gt},gt.padding=function(N){return N!=null?(vn(N)==="number"&&(N=[N,N]),S=N,gt):S},gt.colors=function(N,tt){arguments.length<2&&(tt="hex");var pt=[];if(arguments.length===0)pt=A.slice(0);else if(N===1)pt=[gt(.5)];else if(N>1){var ct=M[0],ae=M[1]-ct;pt=cu(0,N,!1).map(function(Tt){return gt(ct+Tt/(N-1)*ae)})}else{u=[];var Dt=[];if(R&&R.length>2)for(var kt=1,St=R.length,Nt=1<=St;Nt?ktSt;Nt?kt++:kt--)Dt.push((R[kt-1]+R[kt])*.5);else Dt=M;pt=Dt.map(function(Tt){return gt(Tt)})}return T[tt]&&(pt=pt.map(function(Tt){return Tt[tt]()})),pt},gt.cache=function(N){return N!=null?(it=N,gt):it},gt.gamma=function(N){return N!=null?(dt=N,gt):dt},gt.nodata=function(N){return N!=null?(g=T(N),gt):g},gt};function cu(u,d,g){for(var x=[],M=uC;M?S++:S--)x.push(S);return x}var Bs=function(u){var d,g,x,M,C,S,R;if(u=u.map(function(B){return new _(B)}),u.length===2)d=u.map(function(B){return B.lab()}),C=d[0],S=d[1],M=function(B){var X=[0,1,2].map(function(Y){return C[Y]+B*(S[Y]-C[Y])});return new _(X,"lab")};else if(u.length===3)g=u.map(function(B){return B.lab()}),C=g[0],S=g[1],R=g[2],M=function(B){var X=[0,1,2].map(function(Y){return(1-B)*(1-B)*C[Y]+2*(1-B)*B*S[Y]+B*B*R[Y]});return new _(X,"lab")};else if(u.length===4){var A;x=u.map(function(B){return B.lab()}),C=x[0],S=x[1],R=x[2],A=x[3],M=function(B){var X=[0,1,2].map(function(Y){return(1-B)*(1-B)*(1-B)*C[Y]+3*(1-B)*(1-B)*B*S[Y]+3*(1-B)*B*B*R[Y]+B*B*B*A[Y]});return new _(X,"lab")}}else if(u.length===5){var z=Bs(u.slice(0,3)),j=Bs(u.slice(2,5));M=function(B){return B<.5?z(B*2):j((B-.5)*2)}}return M},hu=function(u){var d=Bs(u);return d.scale=function(){return Ci(d)},d},xe=function(u,d,g){if(!xe[g])throw new Error("unknown blend mode "+g);return xe[g](u,d)},Ve=function(u){return function(d,g){var x=T(g).rgb(),M=T(d).rgb();return T.rgb(u(x,M))}},We=function(u){return function(d,g){var x=[];return x[0]=u(d[0],g[0]),x[1]=u(d[1],g[1]),x[2]=u(d[2],g[2]),x}},uu=function(u){return u},fu=function(u,d){return u*d/255},du=function(u,d){return u>d?d:u},pu=function(u,d){return u>d?u:d},gu=function(u,d){return 255*(1-(1-u/255)*(1-d/255))},mu=function(u,d){return d<128?2*u*d/255:255*(1-2*(1-u/255)*(1-d/255))},bu=function(u,d){return 255*(1-(1-d/255)/(u/255))},_u=function(u,d){return u===255?255:(u=255*(d/255)/(1-u/255),u>255?255:u)};xe.normal=Ve(We(uu)),xe.multiply=Ve(We(fu)),xe.screen=Ve(We(gu)),xe.overlay=Ve(We(mu)),xe.darken=Ve(We(du)),xe.lighten=Ve(We(pu)),xe.dodge=Ve(We(_u)),xe.burn=Ve(We(bu));for(var vu=xe,js=h.type,yu=h.clip_rgb,xu=h.TWOPI,wu=Math.pow,ku=Math.sin,Su=Math.cos,Mu=function(u,d,g,x,M){u===void 0&&(u=300),d===void 0&&(d=-1.5),g===void 0&&(g=1),x===void 0&&(x=1),M===void 0&&(M=[0,1]);var C=0,S;js(M)==="array"?S=M[1]-M[0]:(S=0,M=[M,M]);var R=function(A){var z=xu*((u+120)/360+d*A),j=wu(M[0]+S*A,x),B=C!==0?g[0]+A*C:g,X=B*j*(1-j)/2,Y=Su(z),it=ku(z),dt=j+X*(-.14861*Y+1.78277*it),at=j+X*(-.29227*Y-.90649*it),_t=j+X*(1.97294*Y);return T(yu([dt*255,at*255,_t*255,1]))};return R.start=function(A){return A==null?u:(u=A,R)},R.rotations=function(A){return A==null?d:(d=A,R)},R.gamma=function(A){return A==null?x:(x=A,R)},R.hue=function(A){return A==null?g:(g=A,js(g)==="array"?(C=g[1]-g[0],C===0&&(g=g[1])):C=0,R)},R.lightness=function(A){return A==null?M:(js(A)==="array"?(M=A,S=A[1]-A[0]):(M=[A,A],S=0),R)},R.scale=function(){return T.scale(R)},R.hue(g),R},Cu="0123456789abcdef",Tu=Math.floor,Ou=Math.random,Pu=function(){for(var u="#",d=0;d<6;d++)u+=Cu.charAt(Tu(Ou()*16));return new _(u,"hex")},Ca=Math.log,Du=Math.pow,Eu=Math.floor,Ru=Math.abs,Ta=function(u,d){d===void 0&&(d=null);var g={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return a(u)==="object"&&(u=Object.values(u)),u.forEach(function(x){d&&a(x)==="object"&&(x=x[d]),x!=null&&!isNaN(x)&&(g.values.push(x),g.sum+=x,xg.max&&(g.max=x),g.count+=1)}),g.domain=[g.min,g.max],g.limits=function(x,M){return Oa(g,x,M)},g},Oa=function(u,d,g){d===void 0&&(d="equal"),g===void 0&&(g=7),a(u)=="array"&&(u=Ta(u));var x=u.min,M=u.max,C=u.values.sort(function(Ys,Gs){return Ys-Gs});if(g===1)return[x,M];var S=[];if(d.substr(0,1)==="c"&&(S.push(x),S.push(M)),d.substr(0,1)==="e"){S.push(x);for(var R=1;R 0");var A=Math.LOG10E*Ca(x),z=Math.LOG10E*Ca(M);S.push(x);for(var j=1;j200&&(qt=!1)}for(var zn={},Hs=0;Hsx?(g+.05)/(x+.05):(x+.05)/(g+.05)},Ti=Math.sqrt,Lu=Math.atan2,Da=Math.abs,Ea=Math.cos,Ns=Math.PI,Fu=function(u,d,g,x){g===void 0&&(g=1),x===void 0&&(x=1),u=new _(u),d=new _(d);for(var M=Array.from(u.lab()),C=M[0],S=M[1],R=M[2],A=Array.from(d.lab()),z=A[0],j=A[1],B=A[2],X=Ti(S*S+R*R),Y=Ti(j*j+B*B),it=C<16?.511:.040975*C/(1+.01765*C),dt=.0638*X/(1+.0131*X)+.638,at=X<1e-6?0:Lu(R,S)*180/Ns;at<0;)at+=360;for(;at>=360;)at-=360;var _t=at>=164&&at<=345?.56+Da(.2*Ea(Ns*(at+168)/180)):.36+Da(.4*Ea(Ns*(at+35)/180)),Ct=X*X*X*X,qt=Ti(Ct/(Ct+1900)),Ut=dt*(qt*_t+1-qt),ue=C-z,gt=X-Y,N=S-j,tt=R-B,pt=N*N+tt*tt-gt*gt,ct=ue/(g*it),ae=gt/(x*dt),Dt=Ut;return Ti(ct*ct+ae*ae+pt/(Dt*Dt))},Iu=function(u,d,g){g===void 0&&(g="lab"),u=new _(u),d=new _(d);var x=u.get(g),M=d.get(g),C=0;for(var S in x){var R=(x[S]||0)-(M[S]||0);C+=R*R}return Math.sqrt(C)},zu=function(){for(var u=[],d=arguments.length;d--;)u[d]=arguments[d];try{return new(Function.prototype.bind.apply(_,[null].concat(u))),!0}catch(g){return!1}},Bu={cool:function(){return Ci([T.hsl(180,1,.9),T.hsl(250,.7,.4)])},hot:function(){return Ci(["#000","#f00","#ff0","#fff"],[0,.25,.75,1]).mode("rgb")}},Oi={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},$s=0,Ra=Object.keys(Oi);$s{(function(n,t){typeof Cs=="object"&&typeof Mc!="undefined"?t(Cs):typeof define=="function"&&define.amd?define("@ts-stack/markdown",["exports"],t):(n=typeof globalThis!="undefined"?globalThis:n||self,t((n["ts-stack"]=n["ts-stack"]||{},n["ts-stack"].markdown={})))})(Cs,function(n){"use strict";var t=function(){function w(b,y){y===void 0&&(y=""),this.source=b.source,this.flags=y}return w.prototype.setGroup=function(b,y){var D=typeof y=="string"?y:y.source;return D=D.replace(/(^|[^\[])\^/g,"$1"),this.source=this.source.replace(b,D),this},w.prototype.getRegexp=function(){return new RegExp(this.source,this.flags)},w}();var e=/[&<>"']/,i=/[&<>"']/g,s={"&":"&","<":"<",">":">",'"':""","'":"'"},r=/[<>"']|&(?!#?\w+;)/,a=/[<>"']|&(?!#?\w+;)/g;function o(w,b){if(b){if(e.test(w))return w.replace(i,function(y){return s[y]})}else if(r.test(w))return w.replace(a,function(y){return s[y]});return w}function l(w){return w.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(b,y){return y=y.toLowerCase(),y==="colon"?":":y.charAt(0)==="#"?y.charAt(1)==="x"?String.fromCharCode(parseInt(y.substring(2),16)):String.fromCharCode(+y.substring(1)):""})}n.TokenType=void 0,function(w){w[w.space=1]="space",w[w.text=2]="text",w[w.paragraph=3]="paragraph",w[w.heading=4]="heading",w[w.listStart=5]="listStart",w[w.listEnd=6]="listEnd",w[w.looseItemStart=7]="looseItemStart",w[w.looseItemEnd=8]="looseItemEnd",w[w.listItemStart=9]="listItemStart",w[w.listItemEnd=10]="listItemEnd",w[w.blockquoteStart=11]="blockquoteStart",w[w.blockquoteEnd=12]="blockquoteEnd",w[w.code=13]="code",w[w.table=14]="table",w[w.html=15]="html",w[w.hr=16]="hr"}(n.TokenType||(n.TokenType={}));var c=function(){function w(){this.gfm=!0,this.tables=!0,this.breaks=!1,this.pedantic=!1,this.sanitize=!1,this.mangle=!0,this.smartLists=!1,this.silent=!1,this.langPrefix="lang-",this.smartypants=!1,this.headerPrefix="",this.xhtml=!1,this.escape=o,this.unescape=l}return w}();var h=function(w,b){return h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(y,D){y.__proto__=D}||function(y,D){for(var O in D)Object.prototype.hasOwnProperty.call(D,O)&&(y[O]=D[O])},h(w,b)};function f(w,b){if(typeof b!="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");h(w,b);function y(){this.constructor=w}w.prototype=b===null?Object.create(b):(y.prototype=b.prototype,new y)}var p=function(){return p=Object.assign||function(b){for(var y,D=1,O=arguments.length;D=0;H--)(q=w[H])&&(P=(O<3?q(P):O>3?q(b,y,P):q(b,y))||P);return O>3&&P&&Object.defineProperty(b,y,P),P}function k(w,b){return function(y,D){b(y,D,w)}}function _(w,b){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(w,b)}function E(w,b,y,D){function O(P){return P instanceof y?P:new y(function(q){q(P)})}return new(y||(y=Promise))(function(P,q){function H(mt){try{Z(D.next(mt))}catch(Rt){q(Rt)}}function U(mt){try{Z(D.throw(mt))}catch(Rt){q(Rt)}}function Z(mt){mt.done?P(mt.value):O(mt.value).then(H,U)}Z((D=D.apply(w,b||[])).next())})}function T(w,b){var y={label:0,sent:function(){if(P[0]&1)throw P[1];return P[1]},trys:[],ops:[]},D,O,P,q;return q={next:H(0),throw:H(1),return:H(2)},typeof Symbol=="function"&&(q[Symbol.iterator]=function(){return this}),q;function H(Z){return function(mt){return U([Z,mt])}}function U(Z){if(D)throw new TypeError("Generator is already executing.");for(;y;)try{if(D=1,O&&(P=Z[0]&2?O.return:Z[0]?O.throw||((P=O.return)&&P.call(O),0):O.next)&&!(P=P.call(O,Z[1])).done)return P;switch(O=0,P&&(Z=[Z[0]&2,P.value]),Z[0]){case 0:case 1:P=Z;break;case 4:return y.label++,{value:Z[1],done:!1};case 5:y.label++,O=Z[1],Z=[0];continue;case 7:Z=y.ops.pop(),y.trys.pop();continue;default:if(P=y.trys,!(P=P.length>0&&P[P.length-1])&&(Z[0]===6||Z[0]===2)){y=0;continue}if(Z[0]===3&&(!P||Z[1]>P[0]&&Z[1]=w.length&&(w=void 0),{value:w&&w[D++],done:!w}}};throw new TypeError(b?"Object is not iterable.":"Symbol.iterator is not defined.")}function V(w,b){var y=typeof Symbol=="function"&&w[Symbol.iterator];if(!y)return w;var D=y.call(w),O,P=[],q;try{for(;(b===void 0||b-- >0)&&!(O=D.next()).done;)P.push(O.value)}catch(H){q={error:H}}finally{try{O&&!O.done&&(y=D.return)&&y.call(D)}finally{if(q)throw q.error}}return P}function $(){for(var w=[],b=0;b1||H(yt,Bt)})})}function H(yt,Bt){try{U(D[yt](Bt))}catch(jt){Rt(P[0][3],jt)}}function U(yt){yt.value instanceof et?Promise.resolve(yt.value.v).then(Z,mt):Rt(P[0][2],yt)}function Z(yt){H("next",yt)}function mt(yt){H("throw",yt)}function Rt(yt,Bt){yt(Bt),P.shift(),P.length&&H(P[0][0],P[0][1])}}function rt(w){var b,y;return b={},D("next"),D("throw",function(O){throw O}),D("return"),b[Symbol.iterator]=function(){return this},b;function D(O,P){b[O]=w[O]?function(q){return(y=!y)?{value:et(w[O](q)),done:O==="return"}:P?P(q):q}:P}}function vt(w){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var b=w[Symbol.asyncIterator],y;return b?b.call(w):(w=typeof L=="function"?L(w):w[Symbol.iterator](),y={},D("next"),D("throw"),D("return"),y[Symbol.asyncIterator]=function(){return this},y);function D(P){y[P]=w[P]&&function(q){return new Promise(function(H,U){q=w[P](q),O(H,U,q.done,q.value)})}}function O(P,q,H,U){Promise.resolve(U).then(function(Z){P({value:Z,done:H})},q)}}function st(w,b){return Object.defineProperty?Object.defineProperty(w,"raw",{value:b}):w.raw=b,w}var Q=Object.create?function(w,b){Object.defineProperty(w,"default",{enumerable:!0,value:b})}:function(w,b){w.default=b};function ht(w){if(w&&w.__esModule)return w;var b={};if(w!=null)for(var y in w)y!=="default"&&Object.prototype.hasOwnProperty.call(w,y)&&I(b,w,y);return Q(b,w),b}function he(w){return w&&w.__esModule?w:{default:w}}function te(w,b){if(!b.has(w))throw new TypeError("attempted to get private field on non-instance");return b.get(w)}function ne(w,b,y){if(!b.has(w))throw new TypeError("attempted to set private field on non-instance");return b.set(w,y),y}var It=function(){function w(b){this.options=b||zt.options}return w.prototype.code=function(b,y,D,O){if(this.options.highlight){var P=this.options.highlight(b,y);P!=null&&P!==b&&(D=!0,b=P)}var q=D?b:this.options.escape(b,!0);if(!y)return` -
`+q+`
+var Vp=Object.create;var ii=Object.defineProperty,Wp=Object.defineProperties,Yp=Object.getOwnPropertyDescriptor,Gp=Object.getOwnPropertyDescriptors,qp=Object.getOwnPropertyNames,el=Object.getOwnPropertySymbols,Up=Object.getPrototypeOf,nl=Object.prototype.hasOwnProperty,Xp=Object.prototype.propertyIsEnumerable;var il=(n,t,e)=>t in n?ii(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,si=(n,t)=>{for(var e in t||(t={}))nl.call(t,e)&&il(n,e,t[e]);if(el)for(var e of el(t))Xp.call(t,e)&&il(n,e,t[e]);return n},ri=(n,t)=>Wp(n,Gp(t)),sl=n=>ii(n,"__esModule",{value:!0});var xr=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),Kp=(n,t)=>{sl(n);for(var e in t)ii(n,e,{get:t[e],enumerable:!0})},Zp=(n,t,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of qp(t))!nl.call(n,i)&&i!=="default"&&ii(n,i,{get:()=>t[i],enumerable:!(e=Yp(t,i))||e.enumerable});return n},De=n=>Zp(sl(ii(n!=null?Vp(Up(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);var mh=xr((wa,ka)=>{(function(n,t){typeof wa=="object"&&typeof ka!="undefined"?ka.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis!="undefined"?globalThis:n||self,n.chroma=t())})(wa,function(){"use strict";for(var n=function(h,f,g){return f===void 0&&(f=0),g===void 0&&(g=1),hg?g:h},t=n,e=function(h){h._clipped=!1,h._unclipped=h.slice(0);for(var f=0;f<=3;f++)f<3?((h[f]<0||h[f]>255)&&(h._clipped=!0),h[f]=t(h[f],0,255)):f===3&&(h[f]=t(h[f],0,1));return h},i={},s=0,r=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];s=3?Array.prototype.slice.call(h):l(h[0])=="object"&&f?f.split("").filter(function(g){return h[0][g]!==void 0}).map(function(g){return h[0][g]}):h[0]},u=o,d=function(h){if(h.length<2)return null;var f=h.length-1;return u(h[f])=="string"?h[f].toLowerCase():null},p=Math.PI,m={clip_rgb:e,limit:n,type:o,unpack:c,last:d,PI:p,TWOPI:p*2,PITHIRD:p/3,DEG2RAD:p/180,RAD2DEG:180/p},b={format:{},autodetect:[]},x=m.last,M=m.clip_rgb,A=m.type,R=b,I=function(){for(var f=[],g=arguments.length;g--;)f[g]=arguments[g];var _=this;if(A(f[0])==="object"&&f[0].constructor&&f[0].constructor===this.constructor)return f[0];var S=x(f),C=!1;if(!S){C=!0,R.sorted||(R.autodetect=R.autodetect.sort(function(z,W){return W.p-z.p}),R.sorted=!0);for(var w=0,O=R.autodetect;w4?h[4]:1;return C===1?[0,0,0,w]:[g>=1?0:255*(1-g)*(1-C),_>=1?0:255*(1-_)*(1-C),S>=1?0:255*(1-S)*(1-C),w]},wt=rt,st=B,Q=L,ht=b,ue=m.unpack,ie=m.type,fe=nt;Q.prototype.cmyk=function(){return fe(this._rgb)},st.cmyk=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(Q,[null].concat(h,["cmyk"])))},ht.format.cmyk=wt,ht.autodetect.push({p:2,test:function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];if(h=ue(h,"cmyk"),ie(h)==="array"&&h.length===4)return"cmyk"}});var Bt=m.unpack,$t=m.last,Vt=function(h){return Math.round(h*100)/100},jt=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=Bt(h,"hsla"),_=$t(h)||"lsa";return g[0]=Vt(g[0]||0),g[1]=Vt(g[1]*100)+"%",g[2]=Vt(g[2]*100)+"%",_==="hsla"||g.length>3&&g[3]<1?(g[3]=g.length>3?g[3]:1,_="hsla"):g.length=3,_+"("+g.join(",")+")"},Gt=jt,k=m.unpack,v=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];h=k(h,"rgba");var g=h[0],_=h[1],S=h[2];g/=255,_/=255,S/=255;var C=Math.min(g,_,S),w=Math.max(g,_,S),O=(w+C)/2,D,$;return w===C?(D=0,$=Number.NaN):D=O<.5?(w-C)/(w+C):(w-C)/(2-w-C),g==w?$=(_-S)/(w-C):_==w?$=2+(S-g)/(w-C):S==w&&($=4+(g-_)/(w-C)),$*=60,$<0&&($+=360),h.length>3&&h[3]!==void 0?[$,D,O,h[3]]:[$,D,O]},y=v,E=m.unpack,T=m.last,P=Gt,U=y,V=Math.round,X=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=E(h,"rgba"),_=T(h)||"rgb";return _.substr(0,3)=="hsl"?P(U(g),_):(g[0]=V(g[0]),g[1]=V(g[1]),g[2]=V(g[2]),(_==="rgba"||g.length>3&&g[3]<1)&&(g[3]=g.length>3?g[3]:1,_="rgba"),_+"("+g.slice(0,_==="rgb"?3:4).join(",")+")")},J=X,vt=m.unpack,Lt=Math.round,Ct=function(){for(var h,f=[],g=arguments.length;g--;)f[g]=arguments[g];f=vt(f,"hsl");var _=f[0],S=f[1],C=f[2],w,O,D;if(S===0)w=O=D=C*255;else{var $=[0,0,0],z=[0,0,0],W=C<.5?C*(1+S):C+S-C*S,j=2*C-W,K=_/360;$[0]=K+1/3,$[1]=K,$[2]=K-1/3;for(var q=0;q<3;q++)$[q]<0&&($[q]+=1),$[q]>1&&($[q]-=1),6*$[q]<1?z[q]=j+(W-j)*6*$[q]:2*$[q]<1?z[q]=W:3*$[q]<2?z[q]=j+(W-j)*(2/3-$[q])*6:z[q]=j;h=[Lt(z[0]*255),Lt(z[1]*255),Lt(z[2]*255)],w=h[0],O=h[1],D=h[2]}return f.length>3?[w,O,D,f[3]]:[w,O,D,1]},It=Ct,zt=It,se=b,ve=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,de=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,fn=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Ee=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ze=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Zn=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,Jn=Math.round,kn=function(h){h=h.toLowerCase().trim();var f;if(se.format.named)try{return se.format.named(h)}catch(q){}if(f=h.match(ve)){for(var g=f.slice(1,4),_=0;_<3;_++)g[_]=+g[_];return g[3]=1,g}if(f=h.match(de)){for(var S=f.slice(1,5),C=0;C<4;C++)S[C]=+S[C];return S}if(f=h.match(fn)){for(var w=f.slice(1,4),O=0;O<3;O++)w[O]=Jn(w[O]*2.55);return w[3]=1,w}if(f=h.match(Ee)){for(var D=f.slice(1,5),$=0;$<3;$++)D[$]=Jn(D[$]*2.55);return D[3]=+D[3],D}if(f=h.match(ze)){var z=f.slice(1,4);z[1]*=.01,z[2]*=.01;var W=zt(z);return W[3]=1,W}if(f=h.match(Zn)){var j=f.slice(1,4);j[1]*=.01,j[2]*=.01;var K=zt(j);return K[3]=+f[4],K}};kn.test=function(h){return ve.test(h)||de.test(h)||fn.test(h)||Ee.test(h)||ze.test(h)||Zn.test(h)};var Be=kn,dn=B,Sn=L,Qn=b,Ke=m.type,te=J,yt=Be;Sn.prototype.css=function(h){return te(this._rgb,h)},dn.css=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(Sn,[null].concat(h,["css"])))},Qn.format.css=yt,Qn.autodetect.push({p:5,test:function(h){for(var f=[],g=arguments.length-1;g-- >0;)f[g]=arguments[g+1];if(!f.length&&Ke(h)==="string"&&yt.test(h))return"css"}});var ee=L,qt=B,Vi=b,Uh=m.unpack;Vi.format.gl=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=Uh(h,"rgba");return g[0]*=255,g[1]*=255,g[2]*=255,g},qt.gl=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(ee,[null].concat(h,["gl"])))},ee.prototype.gl=function(){var h=this._rgb;return[h[0]/255,h[1]/255,h[2]/255,h[3]]};var Xh=m.unpack,Kh=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=Xh(h,"rgb"),_=g[0],S=g[1],C=g[2],w=Math.min(_,S,C),O=Math.max(_,S,C),D=O-w,$=D*100/255,z=w/(255-D)*100,W;return D===0?W=Number.NaN:(_===O&&(W=(S-C)/D),S===O&&(W=2+(C-_)/D),C===O&&(W=4+(_-S)/D),W*=60,W<0&&(W+=360)),[W,$,z]},Zh=Kh,Jh=m.unpack,Qh=Math.floor,tu=function(){for(var h,f,g,_,S,C,w=[],O=arguments.length;O--;)w[O]=arguments[O];w=Jh(w,"hcg");var D=w[0],$=w[1],z=w[2],W,j,K;z=z*255;var q=$*255;if($===0)W=j=K=z;else{D===360&&(D=0),D>360&&(D-=360),D<0&&(D+=360),D/=60;var lt=Qh(D),ft=D-lt,mt=z*(1-$),xt=mt+q*(1-ft),Kt=mt+q*ft,Xt=mt+q;switch(lt){case 0:h=[Xt,Kt,mt],W=h[0],j=h[1],K=h[2];break;case 1:f=[xt,Xt,mt],W=f[0],j=f[1],K=f[2];break;case 2:g=[mt,Xt,Kt],W=g[0],j=g[1],K=g[2];break;case 3:_=[mt,xt,Xt],W=_[0],j=_[1],K=_[2];break;case 4:S=[Kt,mt,Xt],W=S[0],j=S[1],K=S[2];break;case 5:C=[Xt,mt,xt],W=C[0],j=C[1],K=C[2];break}}return[W,j,K,w.length>3?w[3]:1]},eu=tu,nu=m.unpack,iu=m.type,su=B,Ha=L,Va=b,ru=Zh;Ha.prototype.hcg=function(){return ru(this._rgb)},su.hcg=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(Ha,[null].concat(h,["hcg"])))},Va.format.hcg=eu,Va.autodetect.push({p:1,test:function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];if(h=nu(h,"hcg"),iu(h)==="array"&&h.length===3)return"hcg"}});var au=m.unpack,ou=m.last,Wi=Math.round,lu=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=au(h,"rgba"),_=g[0],S=g[1],C=g[2],w=g[3],O=ou(h)||"auto";w===void 0&&(w=1),O==="auto"&&(O=w<1?"rgba":"rgb"),_=Wi(_),S=Wi(S),C=Wi(C);var D=_<<16|S<<8|C,$="000000"+D.toString(16);$=$.substr($.length-6);var z="0"+Wi(w*255).toString(16);switch(z=z.substr(z.length-2),O.toLowerCase()){case"rgba":return"#"+$+z;case"argb":return"#"+z+$;default:return"#"+$}},Wa=lu,cu=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,hu=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,uu=function(h){if(h.match(cu)){(h.length===4||h.length===7)&&(h=h.substr(1)),h.length===3&&(h=h.split(""),h=h[0]+h[0]+h[1]+h[1]+h[2]+h[2]);var f=parseInt(h,16),g=f>>16,_=f>>8&255,S=f&255;return[g,_,S,1]}if(h.match(hu)){(h.length===5||h.length===9)&&(h=h.substr(1)),h.length===4&&(h=h.split(""),h=h[0]+h[0]+h[1]+h[1]+h[2]+h[2]+h[3]+h[3]);var C=parseInt(h,16),w=C>>24&255,O=C>>16&255,D=C>>8&255,$=Math.round((C&255)/255*100)/100;return[w,O,D,$]}throw new Error("unknown hex color: "+h)},Ya=uu,fu=B,Ga=L,du=m.type,qa=b,pu=Wa;Ga.prototype.hex=function(h){return pu(this._rgb,h)},fu.hex=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(Ga,[null].concat(h,["hex"])))},qa.format.hex=Ya,qa.autodetect.push({p:4,test:function(h){for(var f=[],g=arguments.length-1;g-- >0;)f[g]=arguments[g+1];if(!f.length&&du(h)==="string"&&[3,4,5,6,7,8,9].indexOf(h.length)>=0)return"hex"}});var gu=m.unpack,Ua=m.TWOPI,mu=Math.min,bu=Math.sqrt,vu=Math.acos,_u=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=gu(h,"rgb"),_=g[0],S=g[1],C=g[2];_/=255,S/=255,C/=255;var w,O=mu(_,S,C),D=(_+S+C)/3,$=D>0?1-O/D:0;return $===0?w=NaN:(w=(_-S+(_-C))/2,w/=bu((_-S)*(_-S)+(_-C)*(S-C)),w=vu(w),C>S&&(w=Ua-w),w/=Ua),[w*360,$,D]},yu=_u,xu=m.unpack,Us=m.limit,Mn=m.TWOPI,Xs=m.PITHIRD,Cn=Math.cos,wu=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];h=xu(h,"hsi");var g=h[0],_=h[1],S=h[2],C,w,O;return isNaN(g)&&(g=0),isNaN(_)&&(_=0),g>360&&(g-=360),g<0&&(g+=360),g/=360,g<1/3?(O=(1-_)/3,C=(1+_*Cn(Mn*g)/Cn(Xs-Mn*g))/3,w=1-(O+C)):g<2/3?(g-=1/3,C=(1-_)/3,w=(1+_*Cn(Mn*g)/Cn(Xs-Mn*g))/3,O=1-(C+w)):(g-=2/3,w=(1-_)/3,O=(1+_*Cn(Mn*g)/Cn(Xs-Mn*g))/3,C=1-(w+O)),C=Us(S*C*3),w=Us(S*w*3),O=Us(S*O*3),[C*255,w*255,O*255,h.length>3?h[3]:1]},ku=wu,Su=m.unpack,Mu=m.type,Cu=B,Xa=L,Ka=b,Tu=yu;Xa.prototype.hsi=function(){return Tu(this._rgb)},Cu.hsi=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(Xa,[null].concat(h,["hsi"])))},Ka.format.hsi=ku,Ka.autodetect.push({p:2,test:function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];if(h=Su(h,"hsi"),Mu(h)==="array"&&h.length===3)return"hsi"}});var Pu=m.unpack,Ou=m.type,Eu=B,Za=L,Ja=b,Du=y;Za.prototype.hsl=function(){return Du(this._rgb)},Eu.hsl=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(Za,[null].concat(h,["hsl"])))},Ja.format.hsl=It,Ja.autodetect.push({p:2,test:function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];if(h=Pu(h,"hsl"),Ou(h)==="array"&&h.length===3)return"hsl"}});var Au=m.unpack,Lu=Math.min,Ru=Math.max,Fu=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];h=Au(h,"rgb");var g=h[0],_=h[1],S=h[2],C=Lu(g,_,S),w=Ru(g,_,S),O=w-C,D,$,z;return z=w/255,w===0?(D=Number.NaN,$=0):($=O/w,g===w&&(D=(_-S)/O),_===w&&(D=2+(S-g)/O),S===w&&(D=4+(g-_)/O),D*=60,D<0&&(D+=360)),[D,$,z]},$u=Fu,Iu=m.unpack,zu=Math.floor,Bu=function(){for(var h,f,g,_,S,C,w=[],O=arguments.length;O--;)w[O]=arguments[O];w=Iu(w,"hsv");var D=w[0],$=w[1],z=w[2],W,j,K;if(z*=255,$===0)W=j=K=z;else{D===360&&(D=0),D>360&&(D-=360),D<0&&(D+=360),D/=60;var q=zu(D),lt=D-q,ft=z*(1-$),mt=z*(1-$*lt),xt=z*(1-$*(1-lt));switch(q){case 0:h=[z,xt,ft],W=h[0],j=h[1],K=h[2];break;case 1:f=[mt,z,ft],W=f[0],j=f[1],K=f[2];break;case 2:g=[ft,z,xt],W=g[0],j=g[1],K=g[2];break;case 3:_=[ft,mt,z],W=_[0],j=_[1],K=_[2];break;case 4:S=[xt,ft,z],W=S[0],j=S[1],K=S[2];break;case 5:C=[z,ft,mt],W=C[0],j=C[1],K=C[2];break}}return[W,j,K,w.length>3?w[3]:1]},ju=Bu,Nu=m.unpack,Hu=m.type,Vu=B,Qa=L,to=b,Wu=$u;Qa.prototype.hsv=function(){return Wu(this._rgb)},Vu.hsv=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(Qa,[null].concat(h,["hsv"])))},to.format.hsv=ju,to.autodetect.push({p:2,test:function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];if(h=Nu(h,"hsv"),Hu(h)==="array"&&h.length===3)return"hsv"}});var Yi={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},Tn=Yi,Yu=m.unpack,eo=Math.pow,Gu=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=Yu(h,"rgb"),_=g[0],S=g[1],C=g[2],w=qu(_,S,C),O=w[0],D=w[1],$=w[2],z=116*D-16;return[z<0?0:z,500*(O-D),200*(D-$)]},Ks=function(h){return(h/=255)<=.04045?h/12.92:eo((h+.055)/1.055,2.4)},Zs=function(h){return h>Tn.t3?eo(h,1/3):h/Tn.t2+Tn.t0},qu=function(h,f,g){h=Ks(h),f=Ks(f),g=Ks(g);var _=Zs((.4124564*h+.3575761*f+.1804375*g)/Tn.Xn),S=Zs((.2126729*h+.7151522*f+.072175*g)/Tn.Yn),C=Zs((.0193339*h+.119192*f+.9503041*g)/Tn.Zn);return[_,S,C]},no=Gu,Pn=Yi,Uu=m.unpack,Xu=Math.pow,Ku=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];h=Uu(h,"lab");var g=h[0],_=h[1],S=h[2],C,w,O,D,$,z;return w=(g+16)/116,C=isNaN(_)?w:w+_/500,O=isNaN(S)?w:w-S/200,w=Pn.Yn*Qs(w),C=Pn.Xn*Qs(C),O=Pn.Zn*Qs(O),D=Js(3.2404542*C-1.5371385*w-.4985314*O),$=Js(-.969266*C+1.8760108*w+.041556*O),z=Js(.0556434*C-.2040259*w+1.0572252*O),[D,$,z,h.length>3?h[3]:1]},Js=function(h){return 255*(h<=.00304?12.92*h:1.055*Xu(h,1/2.4)-.055)},Qs=function(h){return h>Pn.t1?h*h*h:Pn.t2*(h-Pn.t0)},io=Ku,Zu=m.unpack,Ju=m.type,Qu=B,so=L,ro=b,tf=no;so.prototype.lab=function(){return tf(this._rgb)},Qu.lab=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(so,[null].concat(h,["lab"])))},ro.format.lab=io,ro.autodetect.push({p:2,test:function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];if(h=Zu(h,"lab"),Ju(h)==="array"&&h.length===3)return"lab"}});var ef=m.unpack,nf=m.RAD2DEG,sf=Math.sqrt,rf=Math.atan2,af=Math.round,of=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=ef(h,"lab"),_=g[0],S=g[1],C=g[2],w=sf(S*S+C*C),O=(rf(C,S)*nf+360)%360;return af(w*1e4)===0&&(O=Number.NaN),[_,w,O]},ao=of,lf=m.unpack,cf=no,hf=ao,uf=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=lf(h,"rgb"),_=g[0],S=g[1],C=g[2],w=cf(_,S,C),O=w[0],D=w[1],$=w[2];return hf(O,D,$)},ff=uf,df=m.unpack,pf=m.DEG2RAD,gf=Math.sin,mf=Math.cos,bf=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=df(h,"lch"),_=g[0],S=g[1],C=g[2];return isNaN(C)&&(C=0),C=C*pf,[_,mf(C)*S,gf(C)*S]},oo=bf,vf=m.unpack,_f=oo,yf=io,xf=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];h=vf(h,"lch");var g=h[0],_=h[1],S=h[2],C=_f(g,_,S),w=C[0],O=C[1],D=C[2],$=yf(w,O,D),z=$[0],W=$[1],j=$[2];return[z,W,j,h.length>3?h[3]:1]},lo=xf,wf=m.unpack,kf=lo,Sf=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=wf(h,"hcl").reverse();return kf.apply(void 0,g)},Mf=Sf,Cf=m.unpack,Tf=m.type,co=B,Gi=L,tr=b,ho=ff;Gi.prototype.lch=function(){return ho(this._rgb)},Gi.prototype.hcl=function(){return ho(this._rgb).reverse()},co.lch=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(Gi,[null].concat(h,["lch"])))},co.hcl=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(Gi,[null].concat(h,["hcl"])))},tr.format.lch=lo,tr.format.hcl=Mf,["lch","hcl"].forEach(function(h){return tr.autodetect.push({p:2,test:function(){for(var f=[],g=arguments.length;g--;)f[g]=arguments[g];if(f=Cf(f,h),Tf(f)==="array"&&f.length===3)return h}})});var Pf={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},uo=Pf,Of=L,fo=b,Ef=m.type,ti=uo,Df=Ya,Af=Wa;Of.prototype.name=function(){for(var h=Af(this._rgb,"rgb"),f=0,g=Object.keys(ti);f0;)f[g]=arguments[g+1];if(!f.length&&Ef(h)==="string"&&ti[h.toLowerCase()])return"named"}});var Lf=m.unpack,Rf=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=Lf(h,"rgb"),_=g[0],S=g[1],C=g[2];return(_<<16)+(S<<8)+C},Ff=Rf,$f=m.type,If=function(h){if($f(h)=="number"&&h>=0&&h<=16777215){var f=h>>16,g=h>>8&255,_=h&255;return[f,g,_,1]}throw new Error("unknown num color: "+h)},zf=If,Bf=B,po=L,go=b,jf=m.type,Nf=Ff;po.prototype.num=function(){return Nf(this._rgb)},Bf.num=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(po,[null].concat(h,["num"])))},go.format.num=zf,go.autodetect.push({p:5,test:function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];if(h.length===1&&jf(h[0])==="number"&&h[0]>=0&&h[0]<=16777215)return"num"}});var Hf=B,er=L,mo=b,bo=m.unpack,vo=m.type,_o=Math.round;er.prototype.rgb=function(h){return h===void 0&&(h=!0),h===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(_o)},er.prototype.rgba=function(h){return h===void 0&&(h=!0),this._rgb.slice(0,4).map(function(f,g){return g<3?h===!1?f:_o(f):f})},Hf.rgb=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(er,[null].concat(h,["rgb"])))},mo.format.rgb=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=bo(h,"rgba");return g[3]===void 0&&(g[3]=1),g},mo.autodetect.push({p:3,test:function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];if(h=bo(h,"rgba"),vo(h)==="array"&&(h.length===3||h.length===4&&vo(h[3])=="number"&&h[3]>=0&&h[3]<=1))return"rgb"}});var qi=Math.log,Vf=function(h){var f=h/100,g,_,S;return f<66?(g=255,_=f<6?0:-155.25485562709179-.44596950469579133*(_=f-2)+104.49216199393888*qi(_),S=f<20?0:-254.76935184120902+.8274096064007395*(S=f-10)+115.67994401066147*qi(S)):(g=351.97690566805693+.114206453784165*(g=f-55)-40.25366309332127*qi(g),_=325.4494125711974+.07943456536662342*(_=f-50)-28.0852963507957*qi(_),S=255),[g,_,S,1]},yo=Vf,Wf=yo,Yf=m.unpack,Gf=Math.round,qf=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];for(var g=Yf(h,"rgb"),_=g[0],S=g[2],C=1e3,w=4e4,O=.4,D;w-C>O;){D=(w+C)*.5;var $=Wf(D);$[2]/$[0]>=S/_?w=D:C=D}return Gf(D)},Uf=qf,nr=B,Ui=L,ir=b,Xf=Uf;Ui.prototype.temp=Ui.prototype.kelvin=Ui.prototype.temperature=function(){return Xf(this._rgb)},nr.temp=nr.kelvin=nr.temperature=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(Ui,[null].concat(h,["temp"])))},ir.format.temp=ir.format.kelvin=ir.format.temperature=yo;var Kf=m.unpack,sr=Math.cbrt,Zf=Math.pow,Jf=Math.sign,Qf=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=Kf(h,"rgb"),_=g[0],S=g[1],C=g[2],w=[rr(_/255),rr(S/255),rr(C/255)],O=w[0],D=w[1],$=w[2],z=sr(.4122214708*O+.5363325363*D+.0514459929*$),W=sr(.2119034982*O+.6806995451*D+.1073969566*$),j=sr(.0883024619*O+.2817188376*D+.6299787005*$);return[.2104542553*z+.793617785*W-.0040720468*j,1.9779984951*z-2.428592205*W+.4505937099*j,.0259040371*z+.7827717662*W-.808675766*j]},xo=Qf;function rr(h){var f=Math.abs(h);return f<.04045?h/12.92:(Jf(h)||1)*Zf((f+.055)/1.055,2.4)}var td=m.unpack,Xi=Math.pow,ed=Math.sign,nd=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];h=td(h,"lab");var g=h[0],_=h[1],S=h[2],C=Xi(g+.3963377774*_+.2158037573*S,3),w=Xi(g-.1055613458*_-.0638541728*S,3),O=Xi(g-.0894841775*_-1.291485548*S,3);return[255*ar(4.0767416621*C-3.3077115913*w+.2309699292*O),255*ar(-1.2684380046*C+2.6097574011*w-.3413193965*O),255*ar(-.0041960863*C-.7034186147*w+1.707614701*O),h.length>3?h[3]:1]},wo=nd;function ar(h){var f=Math.abs(h);return f>.0031308?(ed(h)||1)*(1.055*Xi(f,1/2.4)-.055):h*12.92}var id=m.unpack,sd=m.type,rd=B,ko=L,So=b,ad=xo;ko.prototype.oklab=function(){return ad(this._rgb)},rd.oklab=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(ko,[null].concat(h,["oklab"])))},So.format.oklab=wo,So.autodetect.push({p:3,test:function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];if(h=id(h,"oklab"),sd(h)==="array"&&h.length===3)return"oklab"}});var od=m.unpack,ld=xo,cd=ao,hd=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];var g=od(h,"rgb"),_=g[0],S=g[1],C=g[2],w=ld(_,S,C),O=w[0],D=w[1],$=w[2];return cd(O,D,$)},ud=hd,fd=m.unpack,dd=oo,pd=wo,gd=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];h=fd(h,"lch");var g=h[0],_=h[1],S=h[2],C=dd(g,_,S),w=C[0],O=C[1],D=C[2],$=pd(w,O,D),z=$[0],W=$[1],j=$[2];return[z,W,j,h.length>3?h[3]:1]},md=gd,bd=m.unpack,vd=m.type,_d=B,Mo=L,Co=b,yd=ud;Mo.prototype.oklch=function(){return yd(this._rgb)},_d.oklch=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];return new(Function.prototype.bind.apply(Mo,[null].concat(h,["oklch"])))},Co.format.oklch=md,Co.autodetect.push({p:3,test:function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];if(h=bd(h,"oklch"),vd(h)==="array"&&h.length===3)return"oklch"}});var To=L,xd=m.type;To.prototype.alpha=function(h,f){return f===void 0&&(f=!1),h!==void 0&&xd(h)==="number"?f?(this._rgb[3]=h,this):new To([this._rgb[0],this._rgb[1],this._rgb[2],h],"rgb"):this._rgb[3]};var wd=L;wd.prototype.clipped=function(){return this._rgb._clipped||!1};var pn=L,kd=Yi;pn.prototype.darken=function(h){h===void 0&&(h=1);var f=this,g=f.lab();return g[0]-=kd.Kn*h,new pn(g,"lab").alpha(f.alpha(),!0)},pn.prototype.brighten=function(h){return h===void 0&&(h=1),this.darken(-h)},pn.prototype.darker=pn.prototype.darken,pn.prototype.brighter=pn.prototype.brighten;var Sd=L;Sd.prototype.get=function(h){var f=h.split("."),g=f[0],_=f[1],S=this[g]();if(_){var C=g.indexOf(_)-(g.substr(0,2)==="ok"?2:0);if(C>-1)return S[C];throw new Error("unknown channel "+_+" in mode "+g)}else return S};var On=L,Md=m.type,Cd=Math.pow,Td=1e-7,Pd=20;On.prototype.luminance=function(h){if(h!==void 0&&Md(h)==="number"){if(h===0)return new On([0,0,0,this._rgb[3]],"rgb");if(h===1)return new On([255,255,255,this._rgb[3]],"rgb");var f=this.luminance(),g="rgb",_=Pd,S=function(w,O){var D=w.interpolate(O,.5,g),$=D.luminance();return Math.abs(h-$)h?S(w,D):S(D,O)},C=(f>h?S(new On([0,0,0]),this):S(this,new On([255,255,255]))).rgb();return new On(C.concat([this._rgb[3]]))}return Od.apply(void 0,this._rgb.slice(0,3))};var Od=function(h,f,g){return h=or(h),f=or(f),g=or(g),.2126*h+.7152*f+.0722*g},or=function(h){return h/=255,h<=.03928?h/12.92:Cd((h+.055)/1.055,2.4)},pe={},Po=L,Oo=m.type,Ki=pe,Eo=function(h,f,g){g===void 0&&(g=.5);for(var _=[],S=arguments.length-3;S-- >0;)_[S]=arguments[S+3];var C=_[0]||"lrgb";if(!Ki[C]&&!_.length&&(C=Object.keys(Ki)[0]),!Ki[C])throw new Error("interpolation mode "+C+" is not defined");return Oo(h)!=="object"&&(h=new Po(h)),Oo(f)!=="object"&&(f=new Po(f)),Ki[C](h,f,g).alpha(h.alpha()+g*(f.alpha()-h.alpha()))},Do=L,Ed=Eo;Do.prototype.mix=Do.prototype.interpolate=function(h,f){f===void 0&&(f=.5);for(var g=[],_=arguments.length-2;_-- >0;)g[_]=arguments[_+2];return Ed.apply(void 0,[this,h,f].concat(g))};var Ao=L;Ao.prototype.premultiply=function(h){h===void 0&&(h=!1);var f=this._rgb,g=f[3];return h?(this._rgb=[f[0]*g,f[1]*g,f[2]*g,g],this):new Ao([f[0]*g,f[1]*g,f[2]*g,g],"rgb")};var lr=L,Dd=Yi;lr.prototype.saturate=function(h){h===void 0&&(h=1);var f=this,g=f.lch();return g[1]+=Dd.Kn*h,g[1]<0&&(g[1]=0),new lr(g,"lch").alpha(f.alpha(),!0)},lr.prototype.desaturate=function(h){return h===void 0&&(h=1),this.saturate(-h)};var Lo=L,Ro=m.type;Lo.prototype.set=function(h,f,g){g===void 0&&(g=!1);var _=h.split("."),S=_[0],C=_[1],w=this[S]();if(C){var O=S.indexOf(C)-(S.substr(0,2)==="ok"?2:0);if(O>-1){if(Ro(f)=="string")switch(f.charAt(0)){case"+":w[O]+=+f;break;case"-":w[O]+=+f;break;case"*":w[O]*=+f.substr(1);break;case"/":w[O]/=+f.substr(1);break;default:w[O]=+f}else if(Ro(f)==="number")w[O]=f;else throw new Error("unsupported value for Color.set");var D=new Lo(w,S);return g?(this._rgb=D._rgb,this):D}throw new Error("unknown channel "+C+" in mode "+S)}else return w};var Ad=L,Ld=function(h,f,g){var _=h._rgb,S=f._rgb;return new Ad(_[0]+g*(S[0]-_[0]),_[1]+g*(S[1]-_[1]),_[2]+g*(S[2]-_[2]),"rgb")};pe.rgb=Ld;var Rd=L,cr=Math.sqrt,En=Math.pow,Fd=function(h,f,g){var _=h._rgb,S=_[0],C=_[1],w=_[2],O=f._rgb,D=O[0],$=O[1],z=O[2];return new Rd(cr(En(S,2)*(1-g)+En(D,2)*g),cr(En(C,2)*(1-g)+En($,2)*g),cr(En(w,2)*(1-g)+En(z,2)*g),"rgb")};pe.lrgb=Fd;var $d=L,Id=function(h,f,g){var _=h.lab(),S=f.lab();return new $d(_[0]+g*(S[0]-_[0]),_[1]+g*(S[1]-_[1]),_[2]+g*(S[2]-_[2]),"lab")};pe.lab=Id;var Fo=L,Dn=function(h,f,g,_){var S,C,w,O;_==="hsl"?(w=h.hsl(),O=f.hsl()):_==="hsv"?(w=h.hsv(),O=f.hsv()):_==="hcg"?(w=h.hcg(),O=f.hcg()):_==="hsi"?(w=h.hsi(),O=f.hsi()):_==="lch"||_==="hcl"?(_="hcl",w=h.hcl(),O=f.hcl()):_==="oklch"&&(w=h.oklch().reverse(),O=f.oklch().reverse());var D,$,z,W,j,K;(_.substr(0,1)==="h"||_==="oklch")&&(S=w,D=S[0],z=S[1],j=S[2],C=O,$=C[0],W=C[1],K=C[2]);var q,lt,ft,mt;return!isNaN(D)&&!isNaN($)?($>D&&$-D>180?mt=$-(D+360):$180?mt=$+360-D:mt=$-D,lt=D+g*mt):isNaN(D)?isNaN($)?lt=Number.NaN:(lt=$,(j==1||j==0)&&_!="hsv"&&(q=W)):(lt=D,(K==1||K==0)&&_!="hsv"&&(q=z)),q===void 0&&(q=z+g*(W-z)),ft=j+g*(K-j),_==="oklch"?new Fo([ft,q,lt],_):new Fo([lt,q,ft],_)},zd=Dn,$o=function(h,f,g){return zd(h,f,g,"lch")};pe.lch=$o,pe.hcl=$o;var Bd=L,jd=function(h,f,g){var _=h.num(),S=f.num();return new Bd(_+g*(S-_),"num")};pe.num=jd;var Nd=Dn,Hd=function(h,f,g){return Nd(h,f,g,"hcg")};pe.hcg=Hd;var Vd=Dn,Wd=function(h,f,g){return Vd(h,f,g,"hsi")};pe.hsi=Wd;var Yd=Dn,Gd=function(h,f,g){return Yd(h,f,g,"hsl")};pe.hsl=Gd;var qd=Dn,Ud=function(h,f,g){return qd(h,f,g,"hsv")};pe.hsv=Ud;var Xd=L,Kd=function(h,f,g){var _=h.oklab(),S=f.oklab();return new Xd(_[0]+g*(S[0]-_[0]),_[1]+g*(S[1]-_[1]),_[2]+g*(S[2]-_[2]),"oklab")};pe.oklab=Kd;var Zd=Dn,Jd=function(h,f,g){return Zd(h,f,g,"oklch")};pe.oklch=Jd;var hr=L,Qd=m.clip_rgb,ur=Math.pow,fr=Math.sqrt,dr=Math.PI,Io=Math.cos,zo=Math.sin,tp=Math.atan2,ep=function(h,f,g){f===void 0&&(f="lrgb"),g===void 0&&(g=null);var _=h.length;g||(g=Array.from(new Array(_)).map(function(){return 1}));var S=_/g.reduce(function(lt,ft){return lt+ft});if(g.forEach(function(lt,ft){g[ft]*=S}),h=h.map(function(lt){return new hr(lt)}),f==="lrgb")return np(h,g);for(var C=h.shift(),w=C.get(f),O=[],D=0,$=0,z=0;z=360;)q-=360;w[K]=q}else w[K]=w[K]/O[K];return j/=_,new hr(w,f).alpha(j>.99999?1:j,!0)},np=function(h,f){for(var g=h.length,_=[0,0,0,0],S=0;S.9999999&&(_[3]=1),new hr(Qd(_))},we=B,An=m.type,ip=Math.pow,pr=function(h){var f="rgb",g=we("#ccc"),_=0,S=[0,1],C=[],w=[0,0],O=!1,D=[],$=!1,z=0,W=1,j=!1,K={},q=!0,lt=1,ft=function(N){if(N=N||["#fff","#000"],N&&An(N)==="string"&&we.brewer&&we.brewer[N.toLowerCase()]&&(N=we.brewer[N.toLowerCase()]),An(N)==="array"){N.length===1&&(N=[N[0],N[0]]),N=N.slice(0);for(var et=0;et=O[ut];)ut++;return ut-1}return 0},xt=function(N){return N},Kt=function(N){return N},Xt=function(N,et){var ut,ct;if(et==null&&(et=!1),isNaN(N)||N===null)return g;if(et)ct=N;else if(O&&O.length>2){var Zt=mt(N);ct=Zt/(O.length-2)}else W!==z?ct=(N-z)/(W-z):ct=1;ct=Kt(ct),et||(ct=xt(ct)),lt!==1&&(ct=ip(ct,lt)),ct=w[0]+ct*(1-w[0]-w[1]),ct=Math.min(1,Math.max(0,ct));var Dt=Math.floor(ct*1e4);if(q&&K[Dt])ut=K[Dt];else{if(An(D)==="array")for(var bt=0;bt=kt&&bt===C.length-1){ut=D[bt];break}if(ct>kt&&ct2){var bt=N.map(function(St,Tt){return Tt/(N.length-1)}),kt=N.map(function(St){return(St-z)/(W-z)});kt.every(function(St,Tt){return bt[Tt]===St})||(Kt=function(St){if(St<=0||St>=1)return St;for(var Tt=0;St>=kt[Tt+1];)Tt++;var Se=(St-kt[Tt])/(kt[Tt+1]-kt[Tt]),Qe=bt[Tt]+Se*(bt[Tt+1]-bt[Tt]);return Qe})}}return S=[z,W],gt},gt.mode=function(N){return arguments.length?(f=N,re(),gt):f},gt.range=function(N,et){return ft(N),gt},gt.out=function(N){return $=N,gt},gt.spread=function(N){return arguments.length?(_=N,gt):_},gt.correctLightness=function(N){return N==null&&(N=!0),j=N,re(),j?xt=function(et){for(var ut=Xt(0,!0).lab()[0],ct=Xt(1,!0).lab()[0],Zt=ut>ct,Dt=Xt(et,!0).lab()[0],bt=ut+(ct-ut)*et,kt=Dt-bt,St=0,Tt=1,Se=20;Math.abs(kt)>.01&&Se-- >0;)(function(){return Zt&&(kt*=-1),kt<0?(St=et,et+=(Tt-et)*.5):(Tt=et,et+=(St-et)*.5),Dt=Xt(et,!0).lab()[0],kt=Dt-bt})();return et}:xt=function(et){return et},gt},gt.padding=function(N){return N!=null?(An(N)==="number"&&(N=[N,N]),w=N,gt):w},gt.colors=function(N,et){arguments.length<2&&(et="hex");var ut=[];if(arguments.length===0)ut=D.slice(0);else if(N===1)ut=[gt(.5)];else if(N>1){var ct=S[0],Zt=S[1]-ct;ut=sp(0,N,!1).map(function(Tt){return gt(ct+Tt/(N-1)*Zt)})}else{h=[];var Dt=[];if(O&&O.length>2)for(var bt=1,kt=O.length,St=1<=kt;St?btkt;St?bt++:bt--)Dt.push((O[bt-1]+O[bt])*.5);else Dt=S;ut=Dt.map(function(Tt){return gt(Tt)})}return we[et]&&(ut=ut.map(function(Tt){return Tt[et]()})),ut},gt.cache=function(N){return N!=null?(q=N,gt):q},gt.gamma=function(N){return N!=null?(lt=N,gt):lt},gt.nodata=function(N){return N!=null?(g=we(N),gt):g},gt};function sp(h,f,g){for(var _=[],S=hC;S?w++:w--)_.push(w);return _}var ei=L,rp=pr,ap=function(h){for(var f=[1,1],g=1;g=5){var $,z,W;$=h.map(function(j){return j.lab()}),W=h.length-1,z=ap(W),S=function(j){var K=1-j,q=[0,1,2].map(function(lt){return $.reduce(function(ft,mt,xt){return ft+z[xt]*Math.pow(K,W-xt)*Math.pow(j,xt)*mt[lt]},0)});return new ei(q,"lab")}}else throw new RangeError("No point in running bezier with only one color.");return S},lp=function(h){var f=op(h);return f.scale=function(){return rp(f)},f},gr=B,ke=function(h,f,g){if(!ke[g])throw new Error("unknown blend mode "+g);return ke[g](h,f)},Ze=function(h){return function(f,g){var _=gr(g).rgb(),S=gr(f).rgb();return gr.rgb(h(_,S))}},Je=function(h){return function(f,g){var _=[];return _[0]=h(f[0],g[0]),_[1]=h(f[1],g[1]),_[2]=h(f[2],g[2]),_}},cp=function(h){return h},hp=function(h,f){return h*f/255},up=function(h,f){return h>f?f:h},fp=function(h,f){return h>f?h:f},dp=function(h,f){return 255*(1-(1-h/255)*(1-f/255))},pp=function(h,f){return f<128?2*h*f/255:255*(1-2*(1-h/255)*(1-f/255))},gp=function(h,f){return 255*(1-(1-f/255)/(h/255))},mp=function(h,f){return h===255?255:(h=255*(f/255)/(1-h/255),h>255?255:h)};ke.normal=Ze(Je(cp)),ke.multiply=Ze(Je(hp)),ke.screen=Ze(Je(dp)),ke.overlay=Ze(Je(pp)),ke.darken=Ze(Je(up)),ke.lighten=Ze(Je(fp)),ke.dodge=Ze(Je(mp)),ke.burn=Ze(Je(gp));for(var bp=ke,mr=m.type,vp=m.clip_rgb,_p=m.TWOPI,yp=Math.pow,xp=Math.sin,wp=Math.cos,Bo=B,kp=function(h,f,g,_,S){h===void 0&&(h=300),f===void 0&&(f=-1.5),g===void 0&&(g=1),_===void 0&&(_=1),S===void 0&&(S=[0,1]);var C=0,w;mr(S)==="array"?w=S[1]-S[0]:(w=0,S=[S,S]);var O=function(D){var $=_p*((h+120)/360+f*D),z=yp(S[0]+w*D,_),W=C!==0?g[0]+D*C:g,j=W*z*(1-z)/2,K=wp($),q=xp($),lt=z+j*(-.14861*K+1.78277*q),ft=z+j*(-.29227*K-.90649*q),mt=z+j*(1.97294*K);return Bo(vp([lt*255,ft*255,mt*255,1]))};return O.start=function(D){return D==null?h:(h=D,O)},O.rotations=function(D){return D==null?f:(f=D,O)},O.gamma=function(D){return D==null?_:(_=D,O)},O.hue=function(D){return D==null?g:(g=D,mr(g)==="array"?(C=g[1]-g[0],C===0&&(g=g[1])):C=0,O)},O.lightness=function(D){return D==null?S:(mr(D)==="array"?(S=D,w=D[1]-D[0]):(S=[D,D],w=0),O)},O.scale=function(){return Bo.scale(O)},O.hue(g),O},Sp=L,Mp="0123456789abcdef",Cp=Math.floor,Tp=Math.random,Pp=function(){for(var h="#",f=0;f<6;f++)h+=Mp.charAt(Cp(Tp()*16));return new Sp(h,"hex")},br=o,jo=Math.log,Op=Math.pow,Ep=Math.floor,Dp=Math.abs,No=function(h,f){f===void 0&&(f=null);var g={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return br(h)==="object"&&(h=Object.values(h)),h.forEach(function(_){f&&br(_)==="object"&&(_=_[f]),_!=null&&!isNaN(_)&&(g.values.push(_),g.sum+=_,_g.max&&(g.max=_),g.count+=1)}),g.domain=[g.min,g.max],g.limits=function(_,S){return Ho(g,_,S)},g},Ho=function(h,f,g){f===void 0&&(f="equal"),g===void 0&&(g=7),br(h)=="array"&&(h=No(h));var _=h.min,S=h.max,C=h.values.sort(function(_r,yr){return _r-yr});if(g===1)return[_,S];var w=[];if(f.substr(0,1)==="c"&&(w.push(_),w.push(S)),f.substr(0,1)==="e"){w.push(_);for(var O=1;O 0");var D=Math.LOG10E*jo(_),$=Math.LOG10E*jo(S);w.push(_);for(var z=1;z200&&(Kt=!1)}for(var tn={},Ln=0;Ln_?(g+.05)/(_+.05):(_+.05)/(g+.05)},Yo=L,je=Math.sqrt,Nt=Math.pow,Lp=Math.min,Rp=Math.max,Go=Math.atan2,qo=Math.abs,Zi=Math.cos,Uo=Math.sin,Fp=Math.exp,Xo=Math.PI,$p=function(h,f,g,_,S){g===void 0&&(g=1),_===void 0&&(_=1),S===void 0&&(S=1);var C=function(mn){return 360*mn/(2*Xo)},w=function(mn){return 2*Xo*mn/360};h=new Yo(h),f=new Yo(f);var O=Array.from(h.lab()),D=O[0],$=O[1],z=O[2],W=Array.from(f.lab()),j=W[0],K=W[1],q=W[2],lt=(D+j)/2,ft=je(Nt($,2)+Nt(z,2)),mt=je(Nt(K,2)+Nt(q,2)),xt=(ft+mt)/2,Kt=.5*(1-je(Nt(xt,7)/(Nt(xt,7)+Nt(25,7)))),Xt=$*(1+Kt),re=K*(1+Kt),gt=je(Nt(Xt,2)+Nt(z,2)),N=je(Nt(re,2)+Nt(q,2)),et=(gt+N)/2,ut=C(Go(z,Xt)),ct=C(Go(q,re)),Zt=ut>=0?ut:ut+360,Dt=ct>=0?ct:ct+360,bt=qo(Zt-Dt)>180?(Zt+Dt+360)/2:(Zt+Dt)/2,kt=1-.17*Zi(w(bt-30))+.24*Zi(w(2*bt))+.32*Zi(w(3*bt+6))-.2*Zi(w(4*bt-63)),St=Dt-Zt;St=qo(St)<=180?St:Dt<=Zt?St+360:St-360,St=2*je(gt*N)*Uo(w(St)/2);var Tt=j-D,Se=N-gt,Qe=1+.015*Nt(lt-50,2)/je(20+Nt(lt-50,2)),tn=1+.045*et,Ln=1+.015*et*kt,Rn=30*Fp(-Nt((bt-275)/25,2)),Ne=2*je(Nt(et,7)/(Nt(et,7)+Nt(25,7))),gn=-Ne*Uo(2*w(Rn)),ni=je(Nt(Tt/(g*Qe),2)+Nt(Se/(_*tn),2)+Nt(St/(S*Ln),2)+gn*(Se/(_*tn))*(St/(S*Ln)));return Rp(0,Lp(100,ni))},Ko=L,Ip=function(h,f,g){g===void 0&&(g="lab"),h=new Ko(h),f=new Ko(f);var _=h.get(g),S=f.get(g),C=0;for(var w in _){var O=(_[w]||0)-(S[w]||0);C+=O*O}return Math.sqrt(C)},zp=L,Bp=function(){for(var h=[],f=arguments.length;f--;)h[f]=arguments[f];try{return new(Function.prototype.bind.apply(zp,[null].concat(h))),!0}catch(g){return!1}},Zo=B,Jo=pr,jp={cool:function(){return Jo([Zo.hsl(180,1,.9),Zo.hsl(250,.7,.4)])},hot:function(){return Jo(["#000","#f00","#ff0","#fff"]).mode("rgb")}},Ji={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},vr=0,Qo=Object.keys(Ji);vr{(function(n,t){typeof $s=="object"&&typeof _h!="undefined"?t($s):typeof define=="function"&&define.amd?define("@ts-stack/markdown",["exports"],t):(n=typeof globalThis!="undefined"?globalThis:n||self,t((n["ts-stack"]=n["ts-stack"]||{},n["ts-stack"].markdown={})))})($s,function(n){"use strict";var t=function(){function k(v,y){y===void 0&&(y=""),this.source=v.source,this.flags=y}return k.prototype.setGroup=function(v,y){var E=typeof y=="string"?y:y.source;return E=E.replace(/(^|[^\[])\^/g,"$1"),this.source=this.source.replace(v,E),this},k.prototype.getRegexp=function(){return new RegExp(this.source,this.flags)},k}();var e=/[&<>"']/,i=/[&<>"']/g,s={"&":"&","<":"<",">":">",'"':""","'":"'"},r=/[<>"']|&(?!#?\w+;)/,a=/[<>"']|&(?!#?\w+;)/g;function o(k,v){if(v){if(e.test(k))return k.replace(i,function(y){return s[y]})}else if(r.test(k))return k.replace(a,function(y){return s[y]});return k}function l(k){return k.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(v,y){return y=y.toLowerCase(),y==="colon"?":":y.charAt(0)==="#"?y.charAt(1)==="x"?String.fromCharCode(parseInt(y.substring(2),16)):String.fromCharCode(+y.substring(1)):""})}n.TokenType=void 0,function(k){k[k.space=1]="space",k[k.text=2]="text",k[k.paragraph=3]="paragraph",k[k.heading=4]="heading",k[k.listStart=5]="listStart",k[k.listEnd=6]="listEnd",k[k.looseItemStart=7]="looseItemStart",k[k.looseItemEnd=8]="looseItemEnd",k[k.listItemStart=9]="listItemStart",k[k.listItemEnd=10]="listItemEnd",k[k.blockquoteStart=11]="blockquoteStart",k[k.blockquoteEnd=12]="blockquoteEnd",k[k.code=13]="code",k[k.table=14]="table",k[k.html=15]="html",k[k.hr=16]="hr"}(n.TokenType||(n.TokenType={}));var c=function(){function k(){this.gfm=!0,this.tables=!0,this.breaks=!1,this.pedantic=!1,this.sanitize=!1,this.mangle=!0,this.smartLists=!1,this.silent=!1,this.langPrefix="lang-",this.smartypants=!1,this.headerPrefix="",this.xhtml=!1,this.escape=o,this.unescape=l}return k}();var u=function(k,v){return u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(y,E){y.__proto__=E}||function(y,E){for(var T in E)Object.prototype.hasOwnProperty.call(E,T)&&(y[T]=E[T])},u(k,v)};function d(k,v){if(typeof v!="function"&&v!==null)throw new TypeError("Class extends value "+String(v)+" is not a constructor or null");u(k,v);function y(){this.constructor=k}k.prototype=v===null?Object.create(v):(y.prototype=v.prototype,new y)}var p=function(){return p=Object.assign||function(v){for(var y,E=1,T=arguments.length;E=0;V--)(U=k[V])&&(P=(T<3?U(P):T>3?U(v,y,P):U(v,y))||P);return T>3&&P&&Object.defineProperty(v,y,P),P}function x(k,v){return function(y,E){v(y,E,k)}}function M(k,v){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(k,v)}function A(k,v,y,E){function T(P){return P instanceof y?P:new y(function(U){U(P)})}return new(y||(y=Promise))(function(P,U){function V(vt){try{J(E.next(vt))}catch(Lt){U(Lt)}}function X(vt){try{J(E.throw(vt))}catch(Lt){U(Lt)}}function J(vt){vt.done?P(vt.value):T(vt.value).then(V,X)}J((E=E.apply(k,v||[])).next())})}function R(k,v){var y={label:0,sent:function(){if(P[0]&1)throw P[1];return P[1]},trys:[],ops:[]},E,T,P,U;return U={next:V(0),throw:V(1),return:V(2)},typeof Symbol=="function"&&(U[Symbol.iterator]=function(){return this}),U;function V(J){return function(vt){return X([J,vt])}}function X(J){if(E)throw new TypeError("Generator is already executing.");for(;y;)try{if(E=1,T&&(P=J[0]&2?T.return:J[0]?T.throw||((P=T.return)&&P.call(T),0):T.next)&&!(P=P.call(T,J[1])).done)return P;switch(T=0,P&&(J=[J[0]&2,P.value]),J[0]){case 0:case 1:P=J;break;case 4:return y.label++,{value:J[1],done:!1};case 5:y.label++,T=J[1],J=[0];continue;case 7:J=y.ops.pop(),y.trys.pop();continue;default:if(P=y.trys,!(P=P.length>0&&P[P.length-1])&&(J[0]===6||J[0]===2)){y=0;continue}if(J[0]===3&&(!P||J[1]>P[0]&&J[1]=k.length&&(k=void 0),{value:k&&k[E++],done:!k}}};throw new TypeError(v?"Object is not iterable.":"Symbol.iterator is not defined.")}function B(k,v){var y=typeof Symbol=="function"&&k[Symbol.iterator];if(!y)return k;var E=y.call(k),T,P=[],U;try{for(;(v===void 0||v-- >0)&&!(T=E.next()).done;)P.push(T.value)}catch(V){U={error:V}}finally{try{T&&!T.done&&(y=E.return)&&y.call(E)}finally{if(U)throw U.error}}return P}function H(){for(var k=[],v=0;v1||V(Ct,It)})})}function V(Ct,It){try{X(E[Ct](It))}catch(zt){Lt(P[0][3],zt)}}function X(Ct){Ct.value instanceof nt?Promise.resolve(Ct.value.v).then(J,vt):Lt(P[0][2],Ct)}function J(Ct){V("next",Ct)}function vt(Ct){V("throw",Ct)}function Lt(Ct,It){Ct(It),P.shift(),P.length&&V(P[0][0],P[0][1])}}function rt(k){var v,y;return v={},E("next"),E("throw",function(T){throw T}),E("return"),v[Symbol.iterator]=function(){return this},v;function E(T,P){v[T]=k[T]?function(U){return(y=!y)?{value:nt(k[T](U)),done:T==="return"}:P?P(U):U}:P}}function wt(k){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var v=k[Symbol.asyncIterator],y;return v?v.call(k):(k=typeof F=="function"?F(k):k[Symbol.iterator](),y={},E("next"),E("throw"),E("return"),y[Symbol.asyncIterator]=function(){return this},y);function E(P){y[P]=k[P]&&function(U){return new Promise(function(V,X){U=k[P](U),T(V,X,U.done,U.value)})}}function T(P,U,V,X){Promise.resolve(X).then(function(J){P({value:J,done:V})},U)}}function st(k,v){return Object.defineProperty?Object.defineProperty(k,"raw",{value:v}):k.raw=v,k}var Q=Object.create?function(k,v){Object.defineProperty(k,"default",{enumerable:!0,value:v})}:function(k,v){k.default=v};function ht(k){if(k&&k.__esModule)return k;var v={};if(k!=null)for(var y in k)y!=="default"&&Object.prototype.hasOwnProperty.call(k,y)&&I(v,k,y);return Q(v,k),v}function ue(k){return k&&k.__esModule?k:{default:k}}function ie(k,v){if(!v.has(k))throw new TypeError("attempted to get private field on non-instance");return v.get(k)}function fe(k,v,y){if(!v.has(k))throw new TypeError("attempted to set private field on non-instance");return v.set(k,y),y}var Bt=function(){function k(v){this.options=v||jt.options}return k.prototype.code=function(v,y,E,T){if(this.options.highlight){var P=this.options.highlight(v,y);P!=null&&P!==v&&(E=!0,v=P)}var U=E?v:this.options.escape(v,!0);if(!y)return`
+
`+U+`
 
-`;var H=this.options.langPrefix+this.options.escape(y,!0);return` -
'+q+`
+`;var V=this.options.langPrefix+this.options.escape(y,!0);return`
+
'+U+`
 
-`},w.prototype.blockquote=function(b){return`
-`+b+`
-`},w.prototype.html=function(b){return b},w.prototype.heading=function(b,y,D){var O=this.options.headerPrefix+D.toLowerCase().replace(/[^\w]+/g,"-");return"'+b+" -`},w.prototype.hr=function(){return this.options.xhtml?`
+`},k.prototype.blockquote=function(v){return`
+`+v+`
+`},k.prototype.html=function(v){return v},k.prototype.heading=function(v,y,E){var T=this.options.headerPrefix+E.toLowerCase().replace(/[^\w]+/g,"-");return"'+v+" +`},k.prototype.hr=function(){return this.options.xhtml?`
`:`
-`},w.prototype.list=function(b,y){var D=y?"ol":"ul";return` -<`+D+`> -`+b+" -`},w.prototype.listitem=function(b){return"
  • "+b+`
  • -`},w.prototype.paragraph=function(b){return"

    "+b+`

    -`},w.prototype.table=function(b,y){return` +`},k.prototype.list=function(v,y){var E=y?"ol":"ul";return` +<`+E+`> +`+v+" +`},k.prototype.listitem=function(v){return"
  • "+v+`
  • +`},k.prototype.paragraph=function(v){return"

    "+v+`

    +`},k.prototype.table=function(v,y){return` -`+b+` +`+v+` `+y+`
    -`},w.prototype.tablerow=function(b){return` -`+b+` -`},w.prototype.tablecell=function(b,y){var D=y.header?"th":"td",O=y.align?"<"+D+' style="text-align:'+y.align+'">':"<"+D+">";return O+b+" -`},w.prototype.strong=function(b){return""+b+""},w.prototype.em=function(b){return""+b+""},w.prototype.codespan=function(b){return""+b+""},w.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},w.prototype.del=function(b){return""+b+""},w.prototype.link=function(b,y,D){if(this.options.sanitize){var O=void 0;try{O=decodeURIComponent(this.options.unescape(b)).replace(/[^\w:]/g,"").toLowerCase()}catch(q){return D}if(O.indexOf("javascript:")===0||O.indexOf("vbscript:")===0||O.indexOf("data:")===0)return D}var P='",P},w.prototype.image=function(b,y,D){var O=''+D+'":">",O},w.prototype.text=function(b){return b},w}();var Ft=function(){function w(b,y,D,O){if(D===void 0&&(D=zt.options),this.staticThis=b,this.links=y,this.options=D,this.renderer=O||this.options.renderer||new It(this.options),!this.links)throw new Error("InlineLexer requires 'links' parameter.");this.setRules()}return w.output=function(b,y,D){var O=new this(this,y,D);return O.output(b)},w.getRulesBase=function(){if(this.rulesBase)return this.rulesBase;var b={escape:/^\\([\\`*{}\[\]()#+\-.!_>])/,autolink:/^<([^ <>]+(@|:\/)[^ <>]+)>/,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^<'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)([\s\S]*?[^`])\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/};return b.link=new t(b.link).setGroup("inside",b._inside).setGroup("href",b._href).getRegexp(),b.reflink=new t(b.reflink).setGroup("inside",b._inside).getRegexp(),this.rulesBase=b},w.getRulesPedantic=function(){return this.rulesPedantic?this.rulesPedantic:this.rulesPedantic=Object.assign(Object.assign({},this.getRulesBase()),{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/})},w.getRulesGfm=function(){if(this.rulesGfm)return this.rulesGfm;var b=this.getRulesBase(),y=new t(b.escape).setGroup("])","~|])").getRegexp(),D=new t(b.text).setGroup("]|","~]|").setGroup("|","|https?://|").getRegexp();return this.rulesGfm=Object.assign(Object.assign({},b),{escape:y,url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:D})},w.getRulesBreaks=function(){if(this.rulesBreaks)return this.rulesBreaks;var b=this.getRulesGfm(),y=this.getRulesGfm();return this.rulesBreaks=Object.assign(Object.assign({},y),{br:new t(b.br).setGroup("{2,}","*").getRegexp(),text:new t(y.text).setGroup("{2,}","*").getRegexp()})},w.prototype.setRules=function(){this.options.gfm?this.options.breaks?this.rules=this.staticThis.getRulesBreaks():this.rules=this.staticThis.getRulesGfm():this.options.pedantic?this.rules=this.staticThis.getRulesPedantic():this.rules=this.staticThis.getRulesBase(),this.hasRulesGfm=this.rules.url!==void 0},w.prototype.output=function(b){b=b;for(var y,D="";b;){if(y=this.rules.escape.exec(b)){b=b.substring(y[0].length),D+=y[1];continue}if(y=this.rules.autolink.exec(b)){var O=void 0,P=void 0;b=b.substring(y[0].length),y[2]==="@"?(O=this.options.escape(y[1].charAt(6)===":"?this.mangle(y[1].substring(7)):this.mangle(y[1])),P=this.mangle("mailto:")+O):(O=this.options.escape(y[1]),P=O),D+=this.renderer.link(P,null,O);continue}if(!this.inLink&&this.hasRulesGfm&&(y=this.rules.url.exec(b))){var O=void 0,P=void 0;b=b.substring(y[0].length),O=this.options.escape(y[1]),P=O,D+=this.renderer.link(P,null,O);continue}if(y=this.rules.tag.exec(b)){!this.inLink&&/^/i.test(y[0])&&(this.inLink=!1),b=b.substring(y[0].length),D+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(y[0]):this.options.escape(y[0]):y[0];continue}if(y=this.rules.link.exec(b)){b=b.substring(y[0].length),this.inLink=!0,D+=this.outputLink(y,{href:y[2],title:y[3]}),this.inLink=!1;continue}if((y=this.rules.reflink.exec(b))||(y=this.rules.nolink.exec(b))){b=b.substring(y[0].length);var q=(y[2]||y[1]).replace(/\s+/g," "),H=this.links[q.toLowerCase()];if(!H||!H.href){D+=y[0].charAt(0),b=y[0].substring(1)+b;continue}this.inLink=!0,D+=this.outputLink(y,H),this.inLink=!1;continue}if(y=this.rules.strong.exec(b)){b=b.substring(y[0].length),D+=this.renderer.strong(this.output(y[2]||y[1]));continue}if(y=this.rules.em.exec(b)){b=b.substring(y[0].length),D+=this.renderer.em(this.output(y[2]||y[1]));continue}if(y=this.rules.code.exec(b)){b=b.substring(y[0].length),D+=this.renderer.codespan(this.options.escape(y[2].trim(),!0));continue}if(y=this.rules.br.exec(b)){b=b.substring(y[0].length),D+=this.renderer.br();continue}if(this.hasRulesGfm&&(y=this.rules.del.exec(b))){b=b.substring(y[0].length),D+=this.renderer.del(this.output(y[1]));continue}if(y=this.rules.text.exec(b)){b=b.substring(y[0].length),D+=this.renderer.text(this.options.escape(this.smartypants(y[0])));continue}if(b)throw new Error("Infinite loop on byte: "+b.charCodeAt(0))}return D},w.prototype.outputLink=function(b,y){var D=this.options.escape(y.href),O=y.title?this.options.escape(y.title):null;return b[0].charAt(0)!=="!"?this.renderer.link(D,O,this.output(b[1])):this.renderer.image(D,O,this.options.escape(b[1]))},w.prototype.smartypants=function(b){return this.options.smartypants?b.replace(/---/g,"\u2014").replace(/--/g,"\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201C").replace(/"/g,"\u201D").replace(/\.{3}/g,"\u2026"):b},w.prototype.mangle=function(b){if(!this.options.mangle)return b;for(var y="",D=b.length,O=0;O.5&&(P="x"+b.charCodeAt(O).toString(16)),y+="&#"+P+";"}return y},w}();Ft.rulesBase=null,Ft.rulesPedantic=null,Ft.rulesGfm=null,Ft.rulesBreaks=null;var Ht=function(){function w(b){this.simpleRenderers=[],this.line=0,this.tokens=[],this.token=null,this.options=b||zt.options,this.renderer=this.options.renderer||new It(this.options)}return w.parse=function(b,y,D){var O=new this(D);return O.parse(y,b)},w.prototype.parse=function(b,y){this.inlineLexer=new Ft(Ft,b,this.options,this.renderer),this.tokens=y.reverse();for(var D="";this.next();)D+=this.tok();return D},w.prototype.debug=function(b,y){this.inlineLexer=new Ft(Ft,b,this.options,this.renderer),this.tokens=y.reverse();for(var D="";this.next();){var O=this.tok();this.token.line=this.line+=O.split(` -`).length-1,D+=O}return D},w.prototype.next=function(){return this.token=this.tokens.pop()},w.prototype.getNextElement=function(){return this.tokens[this.tokens.length-1]},w.prototype.parseText=function(){for(var b=this.token.text,y;(y=this.getNextElement())&&y.type==n.TokenType.text;)b+=` -`+this.next().text;return this.inlineLexer.output(b)},w.prototype.tok=function(){var b,y;switch(this.token.type){case n.TokenType.space:return"";case n.TokenType.paragraph:return this.renderer.paragraph(this.inlineLexer.output(this.token.text));case n.TokenType.text:return this.options.isNoP?this.parseText():this.renderer.paragraph(this.parseText());case n.TokenType.heading:return this.renderer.heading(this.inlineLexer.output(this.token.text),this.token.depth,this.token.text);case n.TokenType.listStart:{for(var D="",O=this.token.ordered;this.next().type!=n.TokenType.listEnd;)D+=this.tok();return this.renderer.list(D,O)}case n.TokenType.listItemStart:{for(var D="";this.next().type!=n.TokenType.listItemEnd;)D+=this.token.type==n.TokenType.text?this.parseText():this.tok();return this.renderer.listitem(D)}case n.TokenType.looseItemStart:{for(var D="";this.next().type!=n.TokenType.listItemEnd;)D+=this.tok();return this.renderer.listitem(D)}case n.TokenType.code:return this.renderer.code(this.token.text,this.token.lang,this.token.escaped,this.token.meta);case n.TokenType.table:{var P="",D="",q=void 0;q="";for(var H=0;H +`+v+` +`},k.prototype.tablecell=function(v,y){var E=y.header?"th":"td",T=y.align?"<"+E+' style="text-align:'+y.align+'">':"<"+E+">";return T+v+" +`},k.prototype.strong=function(v){return""+v+""},k.prototype.em=function(v){return""+v+""},k.prototype.codespan=function(v){return""+v+""},k.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},k.prototype.del=function(v){return""+v+""},k.prototype.link=function(v,y,E){if(this.options.sanitize){var T=void 0;try{T=decodeURIComponent(this.options.unescape(v)).replace(/[^\w:]/g,"").toLowerCase()}catch(U){return E}if(T.indexOf("javascript:")===0||T.indexOf("vbscript:")===0||T.indexOf("data:")===0)return E}var P='
    ",P},k.prototype.image=function(v,y,E){var T=''+E+'":">",T},k.prototype.text=function(v){return v},k}();var $t=function(){function k(v,y,E,T){if(E===void 0&&(E=jt.options),this.staticThis=v,this.links=y,this.options=E,this.renderer=T||this.options.renderer||new Bt(this.options),!this.links)throw new Error("InlineLexer requires 'links' parameter.");this.setRules()}return k.output=function(v,y,E){var T=new this(this,y,E);return T.output(v)},k.getRulesBase=function(){if(this.rulesBase)return this.rulesBase;var v={escape:/^\\([\\`*{}\[\]()#+\-.!_>])/,autolink:/^<([^ <>]+(@|:\/)[^ <>]+)>/,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^<'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)([\s\S]*?[^`])\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/};return v.link=new t(v.link).setGroup("inside",v._inside).setGroup("href",v._href).getRegexp(),v.reflink=new t(v.reflink).setGroup("inside",v._inside).getRegexp(),this.rulesBase=v},k.getRulesPedantic=function(){return this.rulesPedantic?this.rulesPedantic:this.rulesPedantic=Object.assign(Object.assign({},this.getRulesBase()),{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/})},k.getRulesGfm=function(){if(this.rulesGfm)return this.rulesGfm;var v=this.getRulesBase(),y=new t(v.escape).setGroup("])","~|])").getRegexp(),E=new t(v.text).setGroup("]|","~]|").setGroup("|","|https?://|").getRegexp();return this.rulesGfm=Object.assign(Object.assign({},v),{escape:y,url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:E})},k.getRulesBreaks=function(){if(this.rulesBreaks)return this.rulesBreaks;var v=this.getRulesGfm(),y=this.getRulesGfm();return this.rulesBreaks=Object.assign(Object.assign({},y),{br:new t(v.br).setGroup("{2,}","*").getRegexp(),text:new t(y.text).setGroup("{2,}","*").getRegexp()})},k.prototype.setRules=function(){this.options.gfm?this.options.breaks?this.rules=this.staticThis.getRulesBreaks():this.rules=this.staticThis.getRulesGfm():this.options.pedantic?this.rules=this.staticThis.getRulesPedantic():this.rules=this.staticThis.getRulesBase(),this.hasRulesGfm=this.rules.url!==void 0},k.prototype.output=function(v){v=v;for(var y,E="";v;){if(y=this.rules.escape.exec(v)){v=v.substring(y[0].length),E+=y[1];continue}if(y=this.rules.autolink.exec(v)){var T=void 0,P=void 0;v=v.substring(y[0].length),y[2]==="@"?(T=this.options.escape(y[1].charAt(6)===":"?this.mangle(y[1].substring(7)):this.mangle(y[1])),P=this.mangle("mailto:")+T):(T=this.options.escape(y[1]),P=T),E+=this.renderer.link(P,null,T);continue}if(!this.inLink&&this.hasRulesGfm&&(y=this.rules.url.exec(v))){var T=void 0,P=void 0;v=v.substring(y[0].length),T=this.options.escape(y[1]),P=T,E+=this.renderer.link(P,null,T);continue}if(y=this.rules.tag.exec(v)){!this.inLink&&/^/i.test(y[0])&&(this.inLink=!1),v=v.substring(y[0].length),E+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(y[0]):this.options.escape(y[0]):y[0];continue}if(y=this.rules.link.exec(v)){v=v.substring(y[0].length),this.inLink=!0,E+=this.outputLink(y,{href:y[2],title:y[3]}),this.inLink=!1;continue}if((y=this.rules.reflink.exec(v))||(y=this.rules.nolink.exec(v))){v=v.substring(y[0].length);var U=(y[2]||y[1]).replace(/\s+/g," "),V=this.links[U.toLowerCase()];if(!V||!V.href){E+=y[0].charAt(0),v=y[0].substring(1)+v;continue}this.inLink=!0,E+=this.outputLink(y,V),this.inLink=!1;continue}if(y=this.rules.strong.exec(v)){v=v.substring(y[0].length),E+=this.renderer.strong(this.output(y[2]||y[1]));continue}if(y=this.rules.em.exec(v)){v=v.substring(y[0].length),E+=this.renderer.em(this.output(y[2]||y[1]));continue}if(y=this.rules.code.exec(v)){v=v.substring(y[0].length),E+=this.renderer.codespan(this.options.escape(y[2].trim(),!0));continue}if(y=this.rules.br.exec(v)){v=v.substring(y[0].length),E+=this.renderer.br();continue}if(this.hasRulesGfm&&(y=this.rules.del.exec(v))){v=v.substring(y[0].length),E+=this.renderer.del(this.output(y[1]));continue}if(y=this.rules.text.exec(v)){v=v.substring(y[0].length),E+=this.renderer.text(this.options.escape(this.smartypants(y[0])));continue}if(v)throw new Error("Infinite loop on byte: "+v.charCodeAt(0))}return E},k.prototype.outputLink=function(v,y){var E=this.options.escape(y.href),T=y.title?this.options.escape(y.title):null;return v[0].charAt(0)!=="!"?this.renderer.link(E,T,this.output(v[1])):this.renderer.image(E,T,this.options.escape(v[1]))},k.prototype.smartypants=function(v){return this.options.smartypants?v.replace(/---/g,"\u2014").replace(/--/g,"\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201C").replace(/"/g,"\u201D").replace(/\.{3}/g,"\u2026"):v},k.prototype.mangle=function(v){if(!this.options.mangle)return v;for(var y="",E=v.length,T=0;T.5&&(P="x"+v.charCodeAt(T).toString(16)),y+="&#"+P+";"}return y},k}();$t.rulesBase=null,$t.rulesPedantic=null,$t.rulesGfm=null,$t.rulesBreaks=null;var Vt=function(){function k(v){this.simpleRenderers=[],this.line=0,this.tokens=[],this.token=null,this.options=v||jt.options,this.renderer=this.options.renderer||new Bt(this.options)}return k.parse=function(v,y,E){var T=new this(E);return T.parse(y,v)},k.prototype.parse=function(v,y){this.inlineLexer=new $t($t,v,this.options,this.renderer),this.tokens=y.reverse();for(var E="";this.next();)E+=this.tok();return E},k.prototype.debug=function(v,y){this.inlineLexer=new $t($t,v,this.options,this.renderer),this.tokens=y.reverse();for(var E="";this.next();){var T=this.tok();this.token.line=this.line+=T.split(` +`).length-1,E+=T}return E},k.prototype.next=function(){return this.token=this.tokens.pop()},k.prototype.getNextElement=function(){return this.tokens[this.tokens.length-1]},k.prototype.parseText=function(){for(var v=this.token.text,y;(y=this.getNextElement())&&y.type==n.TokenType.text;)v+=` +`+this.next().text;return this.inlineLexer.output(v)},k.prototype.tok=function(){var v,y;switch(this.token.type){case n.TokenType.space:return"";case n.TokenType.paragraph:return this.renderer.paragraph(this.inlineLexer.output(this.token.text));case n.TokenType.text:return this.options.isNoP?this.parseText():this.renderer.paragraph(this.parseText());case n.TokenType.heading:return this.renderer.heading(this.inlineLexer.output(this.token.text),this.token.depth,this.token.text);case n.TokenType.listStart:{for(var E="",T=this.token.ordered;this.next().type!=n.TokenType.listEnd;)E+=this.tok();return this.renderer.list(E,T)}case n.TokenType.listItemStart:{for(var E="";this.next().type!=n.TokenType.listItemEnd;)E+=this.token.type==n.TokenType.text?this.parseText():this.tok();return this.renderer.listitem(E)}case n.TokenType.looseItemStart:{for(var E="";this.next().type!=n.TokenType.listItemEnd;)E+=this.tok();return this.renderer.listitem(E)}case n.TokenType.code:return this.renderer.code(this.token.text,this.token.lang,this.token.escaped,this.token.meta);case n.TokenType.table:{var P="",E="",U=void 0;U="";for(var V=0;VAn error occured:

    "+this.options.escape(b.message+"",!0)+"
    ";throw b},w}();zt.options=new c,zt.simpleRenderers=[];var Gt=function(){function w(b,y){this.staticThis=b,this.links={},this.tokens=[],this.options=y||zt.options,this.setRules()}return w.lex=function(b,y,D,O){var P=new this(this,y);return P.getTokens(b,D,O)},w.getRulesBase=function(){if(this.rulesBase)return this.rulesBase;var b={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/,bullet:/(?:[*+-]|\d+\.)/,item:/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/};b.item=new t(b.item,"gm").setGroup(/bull/g,b.bullet).getRegexp(),b.list=new t(b.list).setGroup(/bull/g,b.bullet).setGroup("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))").setGroup("def","\\n+(?="+b.def.source+")").getRegexp();var y="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b";return b.html=new t(b.html).setGroup("comment",//).setGroup("closed",/<(tag)[\s\S]+?<\/\1>/).setGroup("closing",/])*?>/).setGroup(/tag/g,y).getRegexp(),b.paragraph=new t(b.paragraph).setGroup("hr",b.hr).setGroup("heading",b.heading).setGroup("lheading",b.lheading).setGroup("blockquote",b.blockquote).setGroup("tag","<"+y).setGroup("def",b.def).getRegexp(),this.rulesBase=b},w.getRulesGfm=function(){if(this.rulesGfm)return this.rulesGfm;var b=this.getRulesBase(),y=Object.assign(Object.assign({},b),{fences:/^ *(`{3,}|~{3,})[ \.]*((\S+)? *[^\n]*)\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),D=y.fences.source.replace("\\1","\\2"),O=b.list.source.replace("\\1","\\3");return y.paragraph=new t(b.paragraph).setGroup("(?!","(?!"+D+"|"+O+"|").getRegexp(),this.rulesGfm=y},w.getRulesTable=function(){return this.rulesTables?this.rulesTables:this.rulesTables=Object.assign(Object.assign({},this.getRulesGfm()),{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/})},w.prototype.setRules=function(){this.options.gfm?this.options.tables?this.rules=this.staticThis.getRulesTable():this.rules=this.staticThis.getRulesGfm():this.rules=this.staticThis.getRulesBase(),this.hasRulesGfm=this.rules.fences!==void 0,this.hasRulesTables=this.rules.table!==void 0},w.prototype.getTokens=function(b,y,D){var O=b,P;t:for(;O;){if((P=this.rules.newline.exec(O))&&(O=O.substring(P[0].length),P[0].length>1&&this.tokens.push({type:n.TokenType.space})),P=this.rules.code.exec(O)){O=O.substring(P[0].length);var q=P[0].replace(/^ {4}/gm,"");this.tokens.push({type:n.TokenType.code,text:this.options.pedantic?q:q.replace(/\n+$/,"")});continue}if(this.hasRulesGfm&&(P=this.rules.fences.exec(O))){O=O.substring(P[0].length),this.tokens.push({type:n.TokenType.code,meta:P[2],lang:P[3],text:P[4]||""});continue}if(P=this.rules.heading.exec(O)){O=O.substring(P[0].length),this.tokens.push({type:n.TokenType.heading,depth:P[1].length,text:P[2]});continue}if(y&&this.hasRulesTables&&(P=this.rules.nptable.exec(O))){O=O.substring(P[0].length);for(var H={type:n.TokenType.table,header:P[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:P[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:[]},U=0;U ?/gm,"");this.getTokens(mt),this.tokens.push({type:n.TokenType.blockquoteEnd});continue}if(P=this.rules.list.exec(O)){O=O.substring(P[0].length);var Rt=P[2];this.tokens.push({type:n.TokenType.listStart,ordered:Rt.length>1});for(var mt=P[0].match(this.rules.item),yt=mt.length,Bt=!1,jt=void 0,ie=void 0,ye=void 0,U=0;U1&&ie.length>1)&&(O=mt.slice(U+1).join(` -`)+O,U=yt-1)),ye=Bt||/\n\n(?!\s*$)/.test(H),U!==yt-1&&(Bt=H.charAt(H.length-1)===` -`,ye||(ye=Bt)),this.tokens.push({type:ye?n.TokenType.looseItemStart:n.TokenType.listItemStart}),this.getTokens(H,!1,D),this.tokens.push({type:n.TokenType.listItemEnd})}this.tokens.push({type:n.TokenType.listEnd});continue}if(P=this.rules.html.exec(O)){O=O.substring(P[0].length);var ge=P[1],pn=ge==="pre"||ge==="script"||ge==="style";this.tokens.push({type:this.options.sanitize?n.TokenType.paragraph:n.TokenType.html,pre:!this.options.sanitizer&&pn,text:P[0]});continue}if(y&&(P=this.rules.def.exec(O))){O=O.substring(P[0].length),this.links[P[1].toLowerCase()]={href:P[2],title:P[3]};continue}if(y&&this.hasRulesTables&&(P=this.rules.table.exec(O))){O=O.substring(P[0].length);for(var H={type:n.TokenType.table,header:P[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:P[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:[]},U=0;U0?n.TokenType.paragraph:n.TokenType.text,text:P[1]});continue}if(P=this.rules.text.exec(O)){O=O.substring(P[0].length),this.tokens.push({type:n.TokenType.text,text:P[0]});continue}if(O)throw new Error("Infinite loop on byte: "+O.charCodeAt(0)+(", near text '"+O.slice(0,30)+"...'"))}return{tokens:this.tokens,links:this.links}},w}();Gt.simpleRules=[],Gt.rulesBase=null,Gt.rulesGfm=null,Gt.rulesTables=null,n.BlockLexer=Gt,n.ExtendRegexp=t,n.InlineLexer=Ft,n.Marked=zt,n.MarkedOptions=c,n.Parser=Ht,n.Renderer=It,n.escape=o,n.unescape=l,Object.defineProperty(n,"__esModule",{value:!0})})});var Tc=qs(Ln=>{"use strict";var Mm=Ln&&Ln.__extends||function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,s){i.__proto__=s}||function(i,s){for(var r in s)s.hasOwnProperty(r)&&(i[r]=s[r])},n(t,e)};return function(t,e){n(t,e);function i(){this.constructor=t}t.prototype=e===null?Object.create(e):(i.prototype=e.prototype,new i)}}();Object.defineProperty(Ln,"__esModule",{value:!0});Ln.Extractor=void 0;var oa=Cc(),Cm=function(n){Mm(t,n);function t(e,i){var s=n.call(this)||this;return s.lowercaseKeys=i??!1,s.reset(e),s}return Object.defineProperty(t.prototype,"tables",{get:function(){return this.extractedTables},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"objects",{get:function(){var e=this;return this.extractedTables.map(function(i){return t.tableToObject(i,e.lowercaseKeys)})},enumerable:!1,configurable:!0}),t.prototype.reset=function(e){e===void 0&&(e="rows"),this.mode=e,this.currentRow=[],this.currentTable=[],this.extractedTables=[]},t.prototype.table=function(e,i){return this.extractedTables.push(this.mode==="rows"?this.currentTable:t.transposeTable(this.currentTable)),this.currentTable=[],n.prototype.table.call(this,e,i)},t.prototype.tablerow=function(e){return this.currentTable.push(this.currentRow),this.currentRow=[],n.prototype.tablerow.call(this,e)},t.prototype.tablecell=function(e,i){return this.currentRow.push(e),n.prototype.tablecell.call(this,e,i)},t.transposeTable=function(e){for(var i=[],s=e.length,r=e[0].length,a=0;a0?r[0]:null},t.extractAllObjects=function(e,i,s){var r=t.createExtractor(e,i,s);return r.objects},t.extractTable=function(e,i,s){var r=t.extractAllTables(e,i,s);return r.length>0?r[0]:null},t.extractAllTables=function(e,i,s){var r=t.createExtractor(e,i,s);return r.tables},t.extract=function(e,i,s){var r=t.createExtractor(e,i,s);return r.objects.length>0?JSON.stringify(r.objects[0]):null},t.extractAll=function(e,i,s){var r=t.createExtractor(e,i,s);return r.objects.map(function(a){return JSON.stringify(a)})},t}(oa.Renderer);Ln.Extractor=Cm});Gu(exports,{default:()=>ca});var Ce=Te(require("obsidian"));var Us=function(){return typeof window=="undefined"?function(n){return n()}:window.requestAnimationFrame}();function Xs(n,t,e){let i=e||(a=>Array.prototype.slice.call(a)),s=!1,r=[];return function(...a){r=i(a),s||(s=!0,Us.call(window,()=>{s=!1,n.apply(t,r)}))}}function Fa(n,t){let e;return function(...i){return t?(clearTimeout(e),e=setTimeout(n,t,i)):n.apply(this,i),t}}var Ei=n=>n==="start"?"left":n==="end"?"right":"center",Xt=(n,t,e)=>n==="start"?t:n==="end"?e:(t+e)/2,Ia=(n,t,e,i)=>n===(i?"left":"right")?e:n==="center"?(t+e)/2:t;function Oe(){}var za=function(){let n=0;return function(){return n++}}();function bt(n){return n===null||typeof n=="undefined"}function Ot(n){if(Array.isArray&&Array.isArray(n))return!0;let t=Object.prototype.toString.call(n);return t.substr(0,7)==="[object"&&t.substr(-6)==="Array]"}function ut(n){return n!==null&&Object.prototype.toString.call(n)==="[object Object]"}var At=n=>(typeof n=="number"||n instanceof Number)&&isFinite(+n);function fe(n,t){return At(n)?n:t}function ot(n,t){return typeof n=="undefined"?t:n}var Ba=(n,t)=>typeof n=="string"&&n.endsWith("%")?parseFloat(n)/100:n/t,Ks=(n,t)=>typeof n=="string"&&n.endsWith("%")?parseFloat(n)/100*t:+n;function Pt(n,t,e){if(n&&typeof n.call=="function")return n.apply(e,t)}function wt(n,t,e,i){let s,r,a;if(Ot(n))if(r=n.length,i)for(s=r-1;s>=0;s--)t.call(e,n[s],s);else for(s=0;se;)n=n[t.substr(e,i-e)],e=i+1,i=Na(t,e);return n}function Ai(n){return n.charAt(0).toUpperCase()+n.slice(1)}var de=n=>typeof n!="undefined",Fe=n=>typeof n=="function",$a=(n,t)=>{if(n.size!==t.size)return!1;for(let e of n)if(!t.has(e))return!1;return!0},Et=Math.PI,Mt=2*Et,Qu=Mt+Et,Li=Number.POSITIVE_INFINITY,Ju=Et/180,Lt=Et/2,Nn=Et/4,Ha=Et*2/3,pe=Math.log10,we=Math.sign;function Zs(n){let t=Math.round(n);n=kn(n,t,n/1e3)?t:n;let e=Math.pow(10,Math.floor(pe(n))),i=n/e;return(i<=1?1:i<=2?2:i<=5?5:10)*e}function Va(n){let t=[],e=Math.sqrt(n),i;for(i=1;is-r).pop(),t}function on(n){return!isNaN(parseFloat(n))&&isFinite(n)}function kn(n,t,e){return Math.abs(n-t)=n}function Qs(n,t,e){let i,s,r;for(i=0,s=n.length;il&&cn===0||n===1,qa=(n,t,e)=>-(Math.pow(2,10*(n-=1))*Math.sin((n-t)*Mt/e)),Ua=(n,t,e)=>Math.pow(2,-10*n)*Math.sin((n-t)*Mt/e)+1,Sn={linear:n=>n,easeInQuad:n=>n*n,easeOutQuad:n=>-n*(n-2),easeInOutQuad:n=>(n/=.5)<1?.5*n*n:-.5*(--n*(n-2)-1),easeInCubic:n=>n*n*n,easeOutCubic:n=>(n-=1)*n*n+1,easeInOutCubic:n=>(n/=.5)<1?.5*n*n*n:.5*((n-=2)*n*n+2),easeInQuart:n=>n*n*n*n,easeOutQuart:n=>-((n-=1)*n*n*n-1),easeInOutQuart:n=>(n/=.5)<1?.5*n*n*n*n:-.5*((n-=2)*n*n*n-2),easeInQuint:n=>n*n*n*n*n,easeOutQuint:n=>(n-=1)*n*n*n*n+1,easeInOutQuint:n=>(n/=.5)<1?.5*n*n*n*n*n:.5*((n-=2)*n*n*n*n+2),easeInSine:n=>-Math.cos(n*Lt)+1,easeOutSine:n=>Math.sin(n*Lt),easeInOutSine:n=>-.5*(Math.cos(Et*n)-1),easeInExpo:n=>n===0?0:Math.pow(2,10*(n-1)),easeOutExpo:n=>n===1?1:-Math.pow(2,-10*n)+1,easeInOutExpo:n=>zi(n)?n:n<.5?.5*Math.pow(2,10*(n*2-1)):.5*(-Math.pow(2,-10*(n*2-1))+2),easeInCirc:n=>n>=1?n:-(Math.sqrt(1-n*n)-1),easeOutCirc:n=>Math.sqrt(1-(n-=1)*n),easeInOutCirc:n=>(n/=.5)<1?-.5*(Math.sqrt(1-n*n)-1):.5*(Math.sqrt(1-(n-=2)*n)+1),easeInElastic:n=>zi(n)?n:qa(n,.075,.3),easeOutElastic:n=>zi(n)?n:Ua(n,.075,.3),easeInOutElastic(n){let t=.1125,e=.45;return zi(n)?n:n<.5?.5*qa(n*2,t,e):.5+.5*Ua(n*2-1,t,e)},easeInBack(n){let t=1.70158;return n*n*((t+1)*n-t)},easeOutBack(n){let t=1.70158;return(n-=1)*n*((t+1)*n+t)+1},easeInOutBack(n){let t=1.70158;return(n/=.5)<1?.5*(n*n*(((t*=1.525)+1)*n-t)):.5*((n-=2)*n*(((t*=1.525)+1)*n+t)+2)},easeInBounce:n=>1-Sn.easeOutBounce(1-n),easeOutBounce(n){let t=7.5625,e=2.75;return n<1/e?t*n*n:n<2/e?t*(n-=1.5/e)*n+.75:n<2.5/e?t*(n-=2.25/e)*n+.9375:t*(n-=2.625/e)*n+.984375},easeInOutBounce:n=>n<.5?Sn.easeInBounce(n*2)*.5:Sn.easeOutBounce(n*2-1)*.5+.5};var _e={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},tr="0123456789ABCDEF",ef=n=>tr[n&15],nf=n=>tr[(n&240)>>4]+tr[n&15],Bi=n=>(n&240)>>4==(n&15);function sf(n){return Bi(n.r)&&Bi(n.g)&&Bi(n.b)&&Bi(n.a)}function rf(n){var t=n.length,e;return n[0]==="#"&&(t===4||t===5?e={r:255&_e[n[1]]*17,g:255&_e[n[2]]*17,b:255&_e[n[3]]*17,a:t===5?_e[n[4]]*17:255}:(t===7||t===9)&&(e={r:_e[n[1]]<<4|_e[n[2]],g:_e[n[3]]<<4|_e[n[4]],b:_e[n[5]]<<4|_e[n[6]],a:t===9?_e[n[7]]<<4|_e[n[8]]:255})),e}function af(n){var t=sf(n)?ef:nf;return n&&"#"+t(n.r)+t(n.g)+t(n.b)+(n.a<255?t(n.a):"")}function Hn(n){return n+.5|0}var ji=(n,t,e)=>Math.max(Math.min(n,e),t);function Vn(n){return ji(Hn(n*2.55),0,255)}function Wn(n){return ji(Hn(n*255),0,255)}function er(n){return ji(Hn(n/2.55)/100,0,1)}function Xa(n){return ji(Hn(n*100),0,100)}var of=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function lf(n){let t=of.exec(n),e=255,i,s,r;if(!!t){if(t[7]!==i){let a=+t[7];e=255&(t[8]?Vn(a):a*255)}return i=+t[1],s=+t[3],r=+t[5],i=255&(t[2]?Vn(i):i),s=255&(t[4]?Vn(s):s),r=255&(t[6]?Vn(r):r),{r:i,g:s,b:r,a:e}}}function cf(n){return n&&(n.a<255?`rgba(${n.r}, ${n.g}, ${n.b}, ${er(n.a)})`:`rgb(${n.r}, ${n.g}, ${n.b})`)}var hf=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Ka(n,t,e){let i=t*Math.min(e,1-e),s=(r,a=(r+n/30)%12)=>e-i*Math.max(Math.min(a-3,9-a,1),-1);return[s(0),s(8),s(4)]}function uf(n,t,e){let i=(s,r=(s+n/60)%6)=>e-e*t*Math.max(Math.min(r,4-r,1),0);return[i(5),i(3),i(1)]}function ff(n,t,e){let i=Ka(n,1,.5),s;for(t+e>1&&(s=1/(t+e),t*=s,e*=s),s=0;s<3;s++)i[s]*=1-t-e,i[s]+=t;return i}function nr(n){let t=255,e=n.r/t,i=n.g/t,s=n.b/t,r=Math.max(e,i,s),a=Math.min(e,i,s),o=(r+a)/2,l,c,h;return r!==a&&(h=r-a,c=o>.5?h/(2-r-a):h/(r+a),l=r===e?(i-s)/h+(i>16&255,r>>8&255,r&255]}return n}var Ni;function vf(n){Ni||(Ni=_f(),Ni.transparent=[0,0,0,0]);let t=Ni[n.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}function $i(n,t,e){if(n){let i=nr(n);i[t]=Math.max(0,Math.min(i[t]+i[t]*e,t===0?360:1)),i=sr(i),n.r=i[0],n.g=i[1],n.b=i[2]}}function to(n,t){return n&&Object.assign(t||{},n)}function eo(n){var t={r:0,g:0,b:0,a:255};return Array.isArray(n)?n.length>=3&&(t={r:n[0],g:n[1],b:n[2],a:255},n.length>3&&(t.a=Wn(n[3]))):(t=to(n,{r:0,g:0,b:0,a:1}),t.a=Wn(t.a)),t}function yf(n){return n.charAt(0)==="r"?lf(n):gf(n)}var Yn=class{constructor(t){if(t instanceof Yn)return t;let e=typeof t,i;e==="object"?i=eo(t):e==="string"&&(i=rf(t)||vf(t)||yf(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=to(this._rgb);return t&&(t.a=er(t.a)),t}set rgb(t){this._rgb=eo(t)}rgbString(){return this._valid?cf(this._rgb):this._rgb}hexString(){return this._valid?af(this._rgb):this._rgb}hslString(){return this._valid?bf(this._rgb):this._rgb}mix(t,e){let i=this;if(t){let s=i.rgb,r=t.rgb,a,o=e===a?.5:e,l=2*o-1,c=s.a-r.a,h=((l*c==-1?l:(l+c)/(1+l*c))+1)/2;a=1-h,s.r=255&h*s.r+a*r.r+.5,s.g=255&h*s.g+a*r.g+.5,s.b=255&h*s.b+a*r.b+.5,s.a=o*s.a+(1-o)*r.a,i.rgb=s}return i}clone(){return new Yn(this.rgb)}alpha(t){return this._rgb.a=Wn(t),this}clearer(t){let e=this._rgb;return e.a*=1-t,this}greyscale(){let t=this._rgb,e=Hn(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=t.b=e,this}opaquer(t){let e=this._rgb;return e.a*=1+t,this}negate(){let t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return $i(this._rgb,2,t),this}darken(t){return $i(this._rgb,2,-t),this}saturate(t){return $i(this._rgb,1,t),this}desaturate(t){return $i(this._rgb,1,-t),this}rotate(t){return mf(this._rgb,t),this}};function no(n){return new Yn(n)}var io=n=>n instanceof CanvasGradient||n instanceof CanvasPattern;function rr(n){return io(n)?n:no(n)}function ar(n){return io(n)?n:no(n).saturate(.5).darken(.1).hexString()}var qe=Object.create(null),Hi=Object.create(null);function Gn(n,t){if(!t)return n;let e=t.split(".");for(let i=0,s=e.length;ie.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,i)=>ar(i.backgroundColor),this.hoverBorderColor=(e,i)=>ar(i.borderColor),this.hoverColor=(e,i)=>ar(i.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.describe(t)}set(t,e){return or(this,t,e)}get(t){return Gn(this,t)}describe(t,e){return or(Hi,t,e)}override(t,e){return or(qe,t,e)}route(t,e,i,s){let r=Gn(this,t),a=Gn(this,i),o="_"+e;Object.defineProperties(r,{[o]:{value:r[e],writable:!0},[e]:{enumerable:!0,get(){let l=this[o],c=a[s];return ut(l)?Object.assign({},c,l):ot(l,c)},set(l){this[o]=l}}})}},ft=new so({_scriptable:n=>!n.startsWith("on"),_indexable:n=>n!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}});function xf(n){return!n||bt(n.size)||bt(n.family)?null:(n.style?n.style+" ":"")+(n.weight?n.weight+" ":"")+n.size+"px "+n.family}function qn(n,t,e,i,s){let r=t[s];return r||(r=t[s]=n.measureText(s).width,e.push(s)),r>i&&(i=r),i}function ro(n,t,e,i){i=i||{};let s=i.data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==t&&(s=i.data={},r=i.garbageCollect=[],i.font=t),n.save(),n.font=t;let a=0,o=e.length,l,c,h,f,p;for(l=0;le.length){for(l=0;l0&&n.stroke()}}function Xe(n,t,e){return e=e||.5,!t||n&&n.x>t.left-e&&n.xt.top-e&&n.y0&&r.strokeColor!=="",l,c;for(n.save(),n.font=s.string,wf(n,r),l=0;l+n||0;function Vi(n,t){let e={},i=ut(t),s=i?Object.keys(t):t,r=ut(n)?i?a=>ot(n[a],n[t[a]]):a=>n[a]:()=>n;for(let a of s)e[a]=Tf(r(a));return e}function cr(n){return Vi(n,{top:"y",right:"x",bottom:"y",left:"x"})}function ln(n){return Vi(n,["topLeft","topRight","bottomLeft","bottomRight"])}function Zt(n){let t=cr(n);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function $t(n,t){n=n||{},t=t||ft.font;let e=ot(n.size,t.size);typeof e=="string"&&(e=parseInt(e,10));let i=ot(n.style,t.style);i&&!(""+i).match(Mf)&&(console.warn('Invalid font style specified: "'+i+'"'),i="");let s={family:ot(n.family,t.family),lineHeight:Cf(ot(n.lineHeight,t.lineHeight),e),size:e,style:i,weight:ot(n.weight,t.weight),string:""};return s.string=xf(s),s}function Mn(n,t,e,i){let s=!0,r,a,o;for(r=0,a=n.length;re&&o===0?0:o+l;return{min:a(i,-Math.abs(r)),max:a(s,r)}}function Ie(n,t){return Object.assign(Object.create(n),t)}function Wi(n,t,e){e=e||(a=>n[a]1;)r=s+i>>1,e(r)?s=r:i=r;return{lo:s,hi:i}}var Pe=(n,t,e)=>Wi(n,e,i=>n[i][t]Wi(n,e,i=>n[i][t]>=e);function ho(n,t,e){let i=0,s=n.length;for(;ii&&n[s-1]>e;)s--;return i>0||s{let i="_onData"+Ai(e),s=n[e];Object.defineProperty(n,e,{configurable:!0,enumerable:!1,value(...r){let a=s.apply(this,r);return n._chartjs.listeners.forEach(o=>{typeof o[i]=="function"&&o[i](...r)}),a}})})}function hr(n,t){let e=n._chartjs;if(!e)return;let i=e.listeners,s=i.indexOf(t);s!==-1&&i.splice(s,1),!(i.length>0)&&(uo.forEach(r=>{delete n[r]}),delete n._chartjs)}function ur(n){let t=new Set,e,i;for(e=0,i=n.length;en[0]){de(i)||(i=_o("_fallback",n));let r={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:n,_rootScopes:e,_fallback:i,_getTarget:s,override:a=>Yi([a,...n],t,e,i)};return new Proxy(r,{deleteProperty(a,o){return delete a[o],delete a._keys,delete n[0][o],!0},get(a,o){return go(a,o,()=>Ff(o,t,n,a))},getOwnPropertyDescriptor(a,o){return Reflect.getOwnPropertyDescriptor(a._scopes[0],o)},getPrototypeOf(){return Reflect.getPrototypeOf(n[0])},has(a,o){return vo(a).includes(o)},ownKeys(a){return vo(a)},set(a,o,l){let c=a._storage||(a._storage=s());return c[o]=l,delete a[o],delete a._keys,!0}})}function cn(n,t,e,i){let s={_cacheable:!1,_proxy:n,_context:t,_subProxy:e,_stack:new Set,_descriptors:fr(n,i),setContext:r=>cn(n,r,e,i),override:r=>cn(n.override(r),t,e,i)};return new Proxy(s,{deleteProperty(r,a){return delete r[a],delete n[a],!0},get(r,a,o){return go(r,a,()=>Pf(r,a,o))},getOwnPropertyDescriptor(r,a){return r._descriptors.allKeys?Reflect.has(n,a)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(n,a)},getPrototypeOf(){return Reflect.getPrototypeOf(n)},has(r,a){return Reflect.has(n,a)},ownKeys(){return Reflect.ownKeys(n)},set(r,a,o){return n[a]=o,delete r[a],!0}})}function fr(n,t={scriptable:!0,indexable:!0}){let{_scriptable:e=t.scriptable,_indexable:i=t.indexable,_allKeys:s=t.allKeys}=n;return{allKeys:s,scriptable:e,indexable:i,isScriptable:Fe(e)?e:()=>e,isIndexable:Fe(i)?i:()=>i}}var Of=(n,t)=>n?n+Ai(t):t,po=(n,t)=>ut(t)&&n!=="adapters";function go(n,t,e){if(Object.prototype.hasOwnProperty.call(n,t))return n[t];let i=e();return n[t]=i,i}function Pf(n,t,e){let{_proxy:i,_context:s,_subProxy:r,_descriptors:a}=n,o=i[t];return Fe(o)&&a.isScriptable(t)&&(o=Df(t,o,n,e)),Ot(o)&&o.length&&(o=Ef(t,o,n,a.isIndexable)),po(t,o)&&(o=cn(o,s,r&&r[t],a)),o}function Df(n,t,e,i){let{_proxy:s,_context:r,_subProxy:a,_stack:o}=e;if(o.has(n))throw new Error("Recursion detected: "+Array.from(o).join("->")+"->"+n);return o.add(n),t=t(r,a||i),o.delete(n),ut(t)&&(t=dr(s._scopes,s,n,t)),t}function Ef(n,t,e,i){let{_proxy:s,_context:r,_subProxy:a,_descriptors:o}=e;if(de(r.index)&&i(n))t=t[r.index%t.length];else if(ut(t[0])){let l=t,c=s._scopes.filter(h=>h!==l);t=[];for(let h of l){let f=dr(c,s,n,h);t.push(cn(f,r,a&&a[n],o))}}return t}function mo(n,t,e){return Fe(n)?n(t,e):n}var Rf=(n,t)=>n===!0?t:typeof n=="string"?Ge(t,n):void 0;function Af(n,t,e,i){for(let s of t){let r=Rf(e,s);if(r){n.add(r);let a=mo(r._fallback,e,r);if(de(a)&&a!==e&&a!==i)return a}else if(r===!1&&de(i)&&e!==i)return null}return!1}function dr(n,t,e,i){let s=t._rootScopes,r=mo(t._fallback,e,i),a=[...n,...s],o=new Set;o.add(i);let l=bo(o,a,e,r||e);return l===null||de(r)&&r!==e&&(l=bo(o,a,r,l),l===null)?!1:Yi(Array.from(o),[""],s,r,()=>Lf(t,e,i))}function bo(n,t,e,i){for(;e;)e=Af(n,t,e,i);return e}function Lf(n,t,e){let i=n._getTarget();t in i||(i[t]={});let s=i[t];return Ot(s)&&ut(e)?e:s}function Ff(n,t,e,i){let s;for(let r of t)if(s=_o(Of(r,n),e),de(s))return po(n,s)?dr(e,i,n,s):s}function _o(n,t){for(let e of t){if(!e)continue;let i=e[n];if(de(i))return i}}function vo(n){let t=n._keys;return t||(t=n._keys=If(n._scopes)),t}function If(n){let t=new Set;for(let e of n)for(let i of Object.keys(e).filter(s=>!s.startsWith("_")))t.add(i);return Array.from(t)}var zf=Number.EPSILON||1e-14,Cn=(n,t)=>tn==="x"?"y":"x";function Bf(n,t,e,i){let s=n.skip?t:n,r=t,a=e.skip?t:e,o=Ii(r,s),l=Ii(a,r),c=o/(o+l),h=l/(o+l);c=isNaN(c)?0:c,h=isNaN(h)?0:h;let f=i*c,p=i*h;return{previous:{x:r.x-f*(a.x-s.x),y:r.y-f*(a.y-s.y)},next:{x:r.x+p*(a.x-s.x),y:r.y+p*(a.y-s.y)}}}function jf(n,t,e){let i=n.length,s,r,a,o,l,c=Cn(n,0);for(let h=0;h!c.skip)),t.cubicInterpolationMode==="monotone")$f(n,s);else{let c=i?n[n.length-1]:n[0];for(r=0,a=n.length;rwindow.getComputedStyle(n,null);function Vf(n,t){return Xi(n).getPropertyValue(t)}var Wf=["top","right","bottom","left"];function hn(n,t,e){let i={};e=e?"-"+e:"";for(let s=0;s<4;s++){let r=Wf[s];i[r]=parseFloat(n[t+"-"+r+e])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}var Yf=(n,t,e)=>(n>0||t>0)&&(!e||!e.shadowRoot);function Gf(n,t){let e=n.native||n,i=e.touches,s=i&&i.length?i[0]:e,{offsetX:r,offsetY:a}=s,o=!1,l,c;if(Yf(r,a,e.target))l=r,c=a;else{let h=t.getBoundingClientRect();l=s.clientX-h.left,c=s.clientY-h.top,o=!0}return{x:l,y:c,box:o}}function gr(n,t){let{canvas:e,currentDevicePixelRatio:i}=t,s=Xi(e),r=s.boxSizing==="border-box",a=hn(s,"padding"),o=hn(s,"border","width"),{x:l,y:c,box:h}=Gf(n,e),f=a.left+(h&&o.left),p=a.top+(h&&o.top),{width:m,height:v}=t;return r&&(m-=a.width+o.width,v-=a.height+o.height),{x:Math.round((l-f)/m*e.width/i),y:Math.round((c-p)/v*e.height/i)}}function qf(n,t,e){let i,s;if(t===void 0||e===void 0){let r=qi(n);if(!r)t=n.clientWidth,e=n.clientHeight;else{let a=r.getBoundingClientRect(),o=Xi(r),l=hn(o,"border","width"),c=hn(o,"padding");t=a.width-c.width-l.width,e=a.height-c.height-l.height,i=Ui(o.maxWidth,r,"clientWidth"),s=Ui(o.maxHeight,r,"clientHeight")}}return{width:t,height:e,maxWidth:i||Li,maxHeight:s||Li}}var mr=n=>Math.round(n*10)/10;function wo(n,t,e,i){let s=Xi(n),r=hn(s,"margin"),a=Ui(s.maxWidth,n,"clientWidth")||Li,o=Ui(s.maxHeight,n,"clientHeight")||Li,l=qf(n,t,e),{width:c,height:h}=l;if(s.boxSizing==="content-box"){let f=hn(s,"border","width"),p=hn(s,"padding");c-=p.width+f.width,h-=p.height+f.height}return c=Math.max(0,c-r.width),h=Math.max(0,i?Math.floor(c/i):h-r.height),c=mr(Math.min(c,a,l.maxWidth)),h=mr(Math.min(h,o,l.maxHeight)),c&&!h&&(h=mr(c/2)),{width:c,height:h}}function br(n,t,e){let i=t||1,s=Math.floor(n.height*i),r=Math.floor(n.width*i);n.height=s/i,n.width=r/i;let a=n.canvas;return a.style&&(e||!a.style.height&&!a.style.width)&&(a.style.height=`${n.height}px`,a.style.width=`${n.width}px`),n.currentDevicePixelRatio!==i||a.height!==s||a.width!==r?(n.currentDevicePixelRatio=i,a.height=s,a.width=r,n.ctx.setTransform(i,0,0,i,0,0),!0):!1}var ko=function(){let n=!1;try{let t={get passive(){return n=!0,!1}};window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(t){}return n}();function _r(n,t){let e=Vf(n,t),i=e&&e.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function Ze(n,t,e,i){return{x:n.x+e*(t.x-n.x),y:n.y+e*(t.y-n.y)}}function So(n,t,e,i){return{x:n.x+e*(t.x-n.x),y:i==="middle"?e<.5?n.y:t.y:i==="after"?e<1?n.y:t.y:e>0?t.y:n.y}}function Mo(n,t,e,i){let s={x:n.cp2x,y:n.cp2y},r={x:t.cp1x,y:t.cp1y},a=Ze(n,s,e),o=Ze(s,r,e),l=Ze(r,t,e),c=Ze(a,o,e),h=Ze(o,l,e);return Ze(c,h,e)}var Co=new Map;function Uf(n,t){t=t||{};let e=n+JSON.stringify(t),i=Co.get(e);return i||(i=new Intl.NumberFormat(n,t),Co.set(e,i)),i}function Tn(n,t,e){return Uf(t,e).format(n)}var Xf=function(n,t){return{x(e){return n+n+t-e},setWidth(e){t=e},textAlign(e){return e==="center"?e:e==="right"?"left":"right"},xPlus(e,i){return e-i},leftForLtr(e,i){return e-i}}},Kf=function(){return{x(n){return n},setWidth(n){},textAlign(n){return n},xPlus(n,t){return n+t},leftForLtr(n,t){return n}}};function un(n,t,e){return n?Xf(t,e):Kf()}function vr(n,t){let e,i;(t==="ltr"||t==="rtl")&&(e=n.canvas.style,i=[e.getPropertyValue("direction"),e.getPropertyPriority("direction")],e.setProperty("direction",t,"important"),n.prevTextDirection=i)}function yr(n,t){t!==void 0&&(delete n.prevTextDirection,n.canvas.style.setProperty("direction",t[0],t[1]))}function To(n){return n==="angle"?{between:$n,compare:tf,normalize:be}:{between:(t,e,i)=>t>=Math.min(e,i)&&t<=Math.max(i,e),compare:(t,e)=>t-e,normalize:t=>t}}function Oo({start:n,end:t,count:e,loop:i,style:s}){return{start:n%e,end:t%e,loop:i&&(t-n+1)%e==0,style:s}}function Zf(n,t,e){let{property:i,start:s,end:r}=e,{between:a,normalize:o}=To(i),l=t.length,{start:c,end:h,loop:f}=n,p,m;if(f){for(c+=l,h+=l,p=0,m=l;pl(s,I,E)&&o(s,I)!==0,L=()=>o(r,E)===0||l(r,I,E),V=()=>k||F(),$=()=>!k||L();for(let G=h,K=h;G<=f;++G)T=t[G%a],!T.skip&&(E=c(T[i]),E!==I&&(k=l(E,s,r),_===null&&V()&&(_=o(E,s)===0?G:K),_!==null&&$()&&(v.push(Oo({start:_,end:G,loop:p,count:a,style:m})),_=null),K=G,I=E));return _!==null&&v.push(Oo({start:_,end:f,loop:p,count:a,style:m})),v}function wr(n,t){let e=[],i=n.segments;for(let s=0;ss&&n[r%t].skip;)r--;return r%=t,{start:s,end:r}}function Jf(n,t,e,i){let s=n.length,r=[],a=t,o=n[t],l;for(l=t+1;l<=e;++l){let c=n[l%s];c.skip||c.stop?o.skip||(i=!1,r.push({start:t%s,end:(l-1)%s,loop:i}),t=a=c.stop?l:null):(a=l,o.skip&&(t=l)),o=c}return a!==null&&r.push({start:t%s,end:a%s,loop:i}),r}function Po(n,t){let e=n.points,i=n.options.spanGaps,s=e.length;if(!s)return[];let r=!!n._loop,{start:a,end:o}=Qf(e,s,r,i);if(i===!0)return Do(n,[{start:a,end:o,loop:r}],e,t);let l=oo({chart:t,initial:e.initial,numSteps:a,currentStep:Math.min(i-e.start,a)}))}_refresh(){this._request||(this._running=!0,this._request=Us.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((i,s)=>{if(!i.running||!i.items.length)return;let r=i.items,a=r.length-1,o=!1,l;for(;a>=0;--a)l=r[a],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(t),o=!0):(r[a]=r[r.length-1],r.pop());o&&(s.draw(),this._notify(s,i,t,"progress")),r.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=r.length}),this._lastDate=t,e===0&&(this._running=!1)}_getAnims(t){let e=this._charts,i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){!e||!e.length||this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){let e=this._charts.get(t);!e||(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((i,s)=>Math.max(i,s._duration),0),this._refresh())}running(t){if(!this._running)return!1;let e=this._charts.get(t);return!(!e||!e.running||!e.items.length)}stop(t){let e=this._charts.get(t);if(!e||!e.items.length)return;let i=e.items,s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}},ze=new Ro,Ao="transparent",nd={boolean(n,t,e){return e>.5?t:n},color(n,t,e){let i=rr(n||Ao),s=i.valid&&rr(t||Ao);return s&&s.valid?s.mix(i,e).hexString():t},number(n,t,e){return n+(t-n)*e}},Lo=class{constructor(t,e,i,s){let r=e[i];s=Mn([t.to,s,r,t.from]);let a=Mn([t.from,r,s]);this._active=!0,this._fn=t.fn||nd[t.type||typeof a],this._easing=Sn[t.easing]||Sn.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=a,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);let s=this._target[this._prop],r=i-this._start,a=this._duration-r;this._start=i,this._duration=Math.floor(Math.max(a,t.duration)),this._total+=r,this._loop=!!t.loop,this._to=Mn([t.to,e,s,t.from]),this._from=Mn([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){let e=t-this._start,i=this._duration,s=this._prop,r=this._from,a=this._loop,o=this._to,l;if(this._active=r!==o&&(a||e1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[s]=this._fn(r,o,l)}wait(){let t=this._promises||(this._promises=[]);return new Promise((e,i)=>{t.push({res:e,rej:i})})}_notify(t){let e=t?"res":"rej",i=this._promises||[];for(let s=0;sn!=="onProgress"&&n!=="onComplete"&&n!=="fn"});ft.set("animations",{colors:{type:"color",properties:sd},numbers:{type:"number",properties:id}});ft.describe("animations",{_fallback:"animation"});ft.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:n=>n|0}}}});var kr=class{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!ut(t))return;let e=this._properties;Object.getOwnPropertyNames(t).forEach(i=>{let s=t[i];if(!ut(s))return;let r={};for(let a of rd)r[a]=s[a];(Ot(s.properties)&&s.properties||[i]).forEach(a=>{(a===i||!e.has(a))&&e.set(a,r)})})}_animateOptions(t,e){let i=e.options,s=od(t,i);if(!s)return[];let r=this._createAnimations(s,i);return i.$shared&&ad(t.options.$animations,i).then(()=>{t.options=i},()=>{}),r}_createAnimations(t,e){let i=this._properties,s=[],r=t.$animations||(t.$animations={}),a=Object.keys(e),o=Date.now(),l;for(l=a.length-1;l>=0;--l){let c=a[l];if(c.charAt(0)==="$")continue;if(c==="options"){s.push(...this._animateOptions(t,e));continue}let h=e[c],f=r[c],p=i.get(c);if(f)if(p&&f.active()){f.update(p,h,o);continue}else f.cancel();if(!p||!p.duration){t[c]=h;continue}r[c]=f=new Lo(p,t,c,h),s.push(f)}return s}update(t,e){if(this._properties.size===0){Object.assign(t,e);return}let i=this._createAnimations(t,e);if(i.length)return ze.add(this._chart,i),!0}};function ad(n,t){let e=[],i=Object.keys(t);for(let s=0;s0||!e&&r<0)return s.index}return null}function No(n,t){let{chart:e,_cachedMeta:i}=n,s=e._stacks||(e._stacks={}),{iScale:r,vScale:a,index:o}=i,l=r.axis,c=a.axis,h=ud(r,a,i),f=t.length,p;for(let m=0;me[i].axis===t).shift()}function pd(n,t){return Ie(n,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function gd(n,t,e){return Ie(n,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:e,index:t,mode:"default",type:"data"})}function Qn(n,t){let e=n.controller.index,i=n.vScale&&n.vScale.axis;if(!!i){t=t||n._parsed;for(let s of t){let r=s._stacks;if(!r||r[i]===void 0||r[i][e]===void 0)return;delete r[i][e]}}}var Mr=n=>n==="reset"||n==="none",$o=(n,t)=>t?n:Object.assign({},n),md=(n,t,e)=>n&&!t.hidden&&t._stacked&&{keys:Io(e,!0),values:null},ke=class{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){let t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Bo(t.vScale,t),this.addElements()}updateIndex(t){this.index!==t&&Qn(this._cachedMeta),this.index=t}linkScales(){let t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(f,p,m,v)=>f==="x"?p:f==="r"?v:m,r=e.xAxisID=ot(i.xAxisID,Sr(t,"x")),a=e.yAxisID=ot(i.yAxisID,Sr(t,"y")),o=e.rAxisID=ot(i.rAxisID,Sr(t,"r")),l=e.indexAxis,c=e.iAxisID=s(l,r,a,o),h=e.vAxisID=s(l,a,r,o);e.xScale=this.getScaleForId(r),e.yScale=this.getScaleForId(a),e.rScale=this.getScaleForId(o),e.iScale=this.getScaleForId(c),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){let e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){let t=this._cachedMeta;this._data&&hr(this._data,this),t._stacked&&Qn(t)}_dataCheck(){let t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(ut(e))this._data=hd(e);else if(i!==e){if(i){hr(i,this);let s=this._cachedMeta;Qn(s),s._parsed=[]}e&&Object.isExtensible(e)&&fo(e,this),this._syncList=[],this._data=e}}addElements(){let t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){let e=this._cachedMeta,i=this.getDataset(),s=!1;this._dataCheck();let r=e._stacked;e._stacked=Bo(e.vScale,e),e.stack!==i.stack&&(s=!0,Qn(e),e.stack=i.stack),this._resyncElements(t),(s||r!==e._stacked)&&No(this,e._parsed)}configure(){let t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing}parse(t,e){let{_cachedMeta:i,_data:s}=this,{iScale:r,_stacked:a}=i,o=r.axis,l=t===0&&e===s.length?!0:i._sorted,c=t>0&&i._parsed[t-1],h,f,p;if(this._parsing===!1)i._parsed=s,i._sorted=!0,p=s;else{Ot(s[t])?p=this.parseArrayData(i,s,t,e):ut(s[t])?p=this.parseObjectData(i,s,t,e):p=this.parsePrimitiveData(i,s,t,e);let m=()=>f[o]===null||c&&f[o]k||f=0;--p)if(!v()){this.updateRangeFromParsed(c,t,m,l);break}}return c}getAllParsedValues(t){let e=this._cachedMeta._parsed,i=[],s,r,a;for(s=0,r=e.length;s=0&&tthis.getContext(i,s),k=c.resolveNamedOptions(p,m,v,f);return k.$shared&&(k.$shared=l,r[a]=Object.freeze($o(k,l))),k}_resolveAnimations(t,e,i){let s=this.chart,r=this._cachedDataOpts,a=`animation-${e}`,o=r[a];if(o)return o;let l;if(s.options.animation!==!1){let h=this.chart.config,f=h.datasetAnimationScopeKeys(this._type,e),p=h.getOptionScopes(this.getDataset(),f);l=h.createResolver(p,this.getContext(t,i,e))}let c=new kr(s,l&&l.animations);return l&&l._cacheable&&(r[a]=Object.freeze(c)),c}getSharedOptions(t){if(!!t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Mr(t)||this.chart._animationsDisabled}updateElement(t,e,i,s){Mr(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Mr(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;let r=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(r)||r})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){let e=this._data,i=this._cachedMeta.data;for(let[o,l,c]of this._syncList)this[o](l,c);this._syncList=[];let s=i.length,r=e.length,a=Math.min(r,s);a&&this.parse(0,a),r>s?this._insertElements(s,r-s,t):r{for(c.length+=e,o=c.length-1;o>=a;o--)c[o]=c[o-e]};for(l(r),o=t;os-r))}return n._cache.$bar}function _d(n){let t=n.iScale,e=bd(t,n.type),i=t._length,s,r,a,o,l=()=>{a===32767||a===-32768||(de(o)&&(i=Math.min(i,Math.abs(a-o)||i)),o=a)};for(s=0,r=e.length;s0?s[n-1]:null,o=nMath.abs(o)&&(l=o,c=a),t[e.axis]=c,t._custom={barStart:l,barEnd:c,start:s,end:r,min:a,max:o}}function Ho(n,t,e,i){return Ot(n)?xd(n,t,e,i):t[e.axis]=e.parse(n,i),t}function Vo(n,t,e,i){let s=n.iScale,r=n.vScale,a=s.getLabels(),o=s===r,l=[],c,h,f,p;for(c=e,h=e+i;c=e?1:-1)}function kd(n){let t,e,i,s,r;return n.horizontal?(t=n.base>n.x,e="left",i="right"):(t=n.base=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){let e=this._cachedMeta,{xScale:i,yScale:s}=e,r=this.getParsed(t),a=i.getLabelForValue(r.x),o=s.getLabelForValue(r.y),l=r._custom;return{label:e.label,value:"("+a+", "+o+(l?", "+l:"")+")"}}update(t){let e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){let r=s==="reset",{iScale:a,vScale:o}=this._cachedMeta,l=this.resolveDataElementOptions(e,s),c=this.getSharedOptions(l),h=this.includeOptions(s,c),f=a.axis,p=o.axis;for(let m=e;m$n(I,o,l,!0)?1:Math.max(F,F*e,L,L*e),v=(I,F,L)=>$n(I,o,l,!0)?-1:Math.min(F,F*e,L,L*e),k=m(0,c,f),_=m(Lt,h,p),E=v(Et,c,f),T=v(Et+Lt,h,p);i=(k-E)/2,s=(_-T)/2,r=-(k+E)/2,a=-(_+T)/2}return{ratioX:i,ratioY:s,offsetX:r,offsetY:a}}var fn=class extends ke{constructor(t,e){super(t,e);this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){let i=this.getDataset().data,s=this._cachedMeta;if(this._parsing===!1)s._parsed=i;else{let r=l=>+i[l];if(ut(i[t])){let{key:l="value"}=this._parsing;r=c=>+Ge(i[c],l)}let a,o;for(a=t,o=t+e;a0&&!isNaN(t)?Mt*(Math.abs(t)/e):0}getLabelAndValue(t){let e=this._cachedMeta,i=this.chart,s=i.data.labels||[],r=Tn(e._parsed[t],i.options.locale);return{label:s[t]||"",value:r}}getMaxBorderWidth(t){let e=0,i=this.chart,s,r,a,o,l;if(!t){for(s=0,r=i.data.datasets.length;sn!=="spacing",_indexable:n=>n!=="spacing"};fn.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(n){let t=n.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:e}}=n.legend.options;return t.labels.map((i,s)=>{let a=n.getDatasetMeta(0).controller.getStyle(s);return{text:i,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,lineWidth:a.borderWidth,pointStyle:e,hidden:!n.getDataVisibility(s),index:s}})}return[]}},onClick(n,t,e){e.chart.toggleDataVisibility(t.index),e.chart.update()}},tooltip:{callbacks:{title(){return""},label(n){let t=n.label,e=": "+n.formattedValue;return Ot(t)?(t=t.slice(),t[0]+=e):t+=e,t}}}}};var On=class extends ke{initialize(){this.enableOptionSharing=!0,super.initialize()}update(t){let e=this._cachedMeta,{dataset:i,data:s=[],_dataset:r}=e,a=this.chart._animationsDisabled,{start:o,count:l}=Od(e,s,a);this._drawStart=o,this._drawCount=l,Pd(e)&&(o=0,l=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!r._decimated,i.points=s;let c=this.resolveDatasetElementOptions(t);this.options.showLine||(c.borderWidth=0),c.segment=this.options.segment,this.updateElement(i,void 0,{animated:!a,options:c},t),this.updateElements(s,o,l,t)}updateElements(t,e,i,s){let r=s==="reset",{iScale:a,vScale:o,_stacked:l,_dataset:c}=this._cachedMeta,h=this.resolveDataElementOptions(e,s),f=this.getSharedOptions(h),p=this.includeOptions(s,f),m=a.axis,v=o.axis,{spanGaps:k,segment:_}=this.options,E=on(k)?k:Number.POSITIVE_INFINITY,T=this.chart._animationsDisabled||r||s==="none",I=e>0&&this.getParsed(e-1);for(let F=e;F0&&V[m]-I[m]>E,_&&($.parsed=V,$.raw=c.data[F]),p&&($.options=f||this.resolveDataElementOptions(F,L.active?"active":s)),T||this.updateElement(L,F,$,s),I=V}this.updateSharedOptions(f,s,h)}getMaxOverflow(){let t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;let r=s[0].size(this.resolveDataElementOptions(0)),a=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,r,a)/2}draw(){let t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}};On.id="line";On.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};On.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};function Od(n,t,e){let i=t.length,s=0,r=i;if(n._sorted){let{iScale:a,_parsed:o}=n,l=a.axis,{min:c,max:h,minDefined:f,maxDefined:p}=a.getUserBounds();f&&(s=Wt(Math.min(Pe(o,a.axis,c).lo,e?i:Pe(t,l,a.getPixelForValue(c)).lo),0,i-1)),p?r=Wt(Math.max(Pe(o,a.axis,h).hi+1,e?0:Pe(t,l,a.getPixelForValue(h)).hi+1),s,i)-s:r=i-s}return{start:s,count:r}}function Pd(n){let{xScale:t,yScale:e,_scaleRanges:i}=n,s={xmin:t.min,xmax:t.max,ymin:e.min,ymax:e.max};if(!i)return n._scaleRanges=s,!0;let r=i.xmin!==t.min||i.xmax!==t.max||i.ymin!==e.min||i.ymax!==e.max;return Object.assign(i,s),r}var ei=class extends ke{constructor(t,e){super(t,e);this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){let e=this._cachedMeta,i=this.chart,s=i.data.labels||[],r=Tn(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:r}}update(t){let e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}_updateRadius(){let t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),r=Math.max(s/2,0),a=Math.max(i.cutoutPercentage?r/100*i.cutoutPercentage:1,0),o=(r-a)/t.getVisibleDatasetCount();this.outerRadius=r-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){let r=s==="reset",a=this.chart,o=this.getDataset(),c=a.options.animation,h=this._cachedMeta.rScale,f=h.xCenter,p=h.yCenter,m=h.getIndexAngle(0)-.5*Et,v=m,k,_=360/this.countVisibleElements();for(k=0;k{!isNaN(t.data[r])&&this.chart.getDataVisibility(r)&&i++}),i}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?me(this.resolveDataElementOptions(t,e).angle||i):0}};ei.id="polarArea";ei.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};ei.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(n){let t=n.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:e}}=n.legend.options;return t.labels.map((i,s)=>{let a=n.getDatasetMeta(0).controller.getStyle(s);return{text:i,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,lineWidth:a.borderWidth,pointStyle:e,hidden:!n.getDataVisibility(s),index:s}})}return[]}},onClick(n,t,e){e.chart.toggleDataVisibility(t.index),e.chart.update()}},tooltip:{callbacks:{title(){return""},label(n){return n.chart.data.labels[n.dataIndex]+": "+n.formattedValue}}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};var Ki=class extends fn{};Ki.id="pie";Ki.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};var ni=class extends ke{getLabelAndValue(t){let e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}update(t){let e=this._cachedMeta,i=e.dataset,s=e.data||[],r=e.iScale.getLabels();if(i.points=s,t!=="resize"){let a=this.resolveDatasetElementOptions(t);this.options.showLine||(a.borderWidth=0);let o={_loop:!0,_fullLoop:r.length===s.length,options:a};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){let r=this.getDataset(),a=this._cachedMeta.rScale,o=s==="reset";for(let l=e;l{c[o](s[a],i)&&r.push({element:c,datasetIndex:h,index:f}),c.inRange(s.x,s.y,i)&&(l=!0)}),e.intersect&&!l?[]:r}var Ld={modes:{index(n,t,e,i){let s=si(t,n),r=e.axis||"x",a=e.intersect?Or(n,s,r,i):Pr(n,s,r,!1,i),o=[];return a.length?(n.getSortedVisibleDatasetMetas().forEach(l=>{let c=a[0].index,h=l.data[c];h&&!h.skip&&o.push({element:h,datasetIndex:l.index,index:c})}),o):[]},dataset(n,t,e,i){let s=si(t,n),r=e.axis||"xy",a=e.intersect?Or(n,s,r,i):Pr(n,s,r,!1,i);if(a.length>0){let o=a[0].datasetIndex,l=n.getDatasetMeta(o).data;a=[];for(let c=0;ce.pos===t)}function Xo(n,t){return n.filter(e=>Uo.indexOf(e.pos)===-1&&e.box.axis===t)}function ai(n,t){return n.sort((e,i)=>{let s=t?i:e,r=t?e:i;return s.weight===r.weight?s.index-r.index:s.weight-r.weight})}function Fd(n){let t=[],e,i,s,r,a,o;for(e=0,i=(n||[]).length;ec.box.fullSize),!0),i=ai(ri(t,"left"),!0),s=ai(ri(t,"right")),r=ai(ri(t,"top"),!0),a=ai(ri(t,"bottom")),o=Xo(t,"x"),l=Xo(t,"y");return{fullSize:e,leftAndTop:i.concat(r),rightAndBottom:s.concat(l).concat(a).concat(o),chartArea:ri(t,"chartArea"),vertical:i.concat(s).concat(l),horizontal:r.concat(a).concat(o)}}function Ko(n,t,e,i){return Math.max(n[e],t[e])+Math.max(n[i],t[i])}function Zo(n,t){n.top=Math.max(n.top,t.top),n.left=Math.max(n.left,t.left),n.bottom=Math.max(n.bottom,t.bottom),n.right=Math.max(n.right,t.right)}function jd(n,t,e,i){let{pos:s,box:r}=e,a=n.maxPadding;if(!ut(s)){e.size&&(n[s]-=e.size);let f=i[e.stack]||{size:0,count:1};f.size=Math.max(f.size,e.horizontal?r.height:r.width),e.size=f.size/f.count,n[s]+=e.size}r.getPadding&&Zo(a,r.getPadding());let o=Math.max(0,t.outerWidth-Ko(a,n,"left","right")),l=Math.max(0,t.outerHeight-Ko(a,n,"top","bottom")),c=o!==n.w,h=l!==n.h;return n.w=o,n.h=l,e.horizontal?{same:c,other:h}:{same:h,other:c}}function Nd(n){let t=n.maxPadding;function e(i){let s=Math.max(t[i]-n[i],0);return n[i]+=s,s}n.y+=e("top"),n.x+=e("left"),e("right"),e("bottom")}function $d(n,t){let e=t.maxPadding;function i(s){let r={left:0,top:0,right:0,bottom:0};return s.forEach(a=>{r[a]=Math.max(t[a],e[a])}),r}return i(n?["left","right"]:["top","bottom"])}function oi(n,t,e,i){let s=[],r,a,o,l,c,h;for(r=0,a=n.length,c=0;r{typeof k.beforeLayout=="function"&&k.beforeLayout()});let h=l.reduce((k,_)=>_.box.options&&_.box.options.display===!1?k:k+1,0)||1,f=Object.freeze({outerWidth:t,outerHeight:e,padding:s,availableWidth:r,availableHeight:a,vBoxMaxWidth:r/2/h,hBoxMaxHeight:a/2}),p=Object.assign({},s);Zo(p,Zt(i));let m=Object.assign({maxPadding:p,w:r,h:a,x:s.left,y:s.top},s),v=zd(l.concat(c),f);oi(o.fullSize,m,f,v),oi(l,m,f,v),oi(c,m,f,v)&&oi(l,m,f,v),Nd(m),Qo(o.leftAndTop,m,f,v),m.x+=m.w,m.y+=m.h,Qo(o.rightAndBottom,m,f,v),n.chartArea={left:m.left,top:m.top,right:m.left+m.w,bottom:m.top+m.h,height:m.h,width:m.w},wt(o.chartArea,k=>{let _=k.box;Object.assign(_,n.chartArea),_.update(m.w,m.h)})}},Dr=class{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}},Jo=class extends Dr{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}},Ji="$chartjs",Hd={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},tl=n=>n===null||n==="";function Vd(n,t){let e=n.style,i=n.getAttribute("height"),s=n.getAttribute("width");if(n[Ji]={initial:{height:i,width:s,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",tl(s)){let r=_r(n,"width");r!==void 0&&(n.width=r)}if(tl(i))if(n.style.height==="")n.height=n.width/(t||2);else{let r=_r(n,"height");r!==void 0&&(n.height=r)}return n}var el=ko?{passive:!0}:!1;function Wd(n,t,e){n.addEventListener(t,e,el)}function Yd(n,t,e){n.canvas.removeEventListener(t,e,el)}function Gd(n,t){let e=Hd[n.type]||n.type,{x:i,y:s}=gr(n,t);return{type:e,chart:t,native:n,x:i!==void 0?i:null,y:s!==void 0?s:null}}function qd(n,t,e){let i=n.canvas,s=new MutationObserver(r=>{for(let a of r)for(let o of a.addedNodes)if(o===i||o.contains(i))return e()});return s.observe(document,{childList:!0,subtree:!0}),s}function Ud(n,t,e){let i=n.canvas,s=new MutationObserver(r=>{for(let a of r)for(let o of a.removedNodes)if(o===i||o.contains(i))return e()});return s.observe(document,{childList:!0,subtree:!0}),s}var li=new Map,nl=0;function il(){let n=window.devicePixelRatio;n!==nl&&(nl=n,li.forEach((t,e)=>{e.currentDevicePixelRatio!==n&&t()}))}function Xd(n,t){li.size||window.addEventListener("resize",il),li.set(n,t)}function Kd(n){li.delete(n),li.size||window.removeEventListener("resize",il)}function Zd(n,t,e){let i=n.canvas,s=i&&qi(i);if(!s)return;let r=Xs((o,l)=>{let c=s.clientWidth;e(o,l),c{let l=o[0],c=l.contentRect.width,h=l.contentRect.height;c===0&&h===0||r(c,h)});return a.observe(s),Xd(n,r),a}function Er(n,t,e){e&&e.disconnect(),t==="resize"&&Kd(n)}function Qd(n,t,e){let i=n.canvas,s=Xs(r=>{n.ctx!==null&&e(Gd(r,n))},n,r=>{let a=r[0];return[a,a.offsetX,a.offsetY]});return Wd(i,t,s),s}var sl=class extends Dr{acquireContext(t,e){let i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(Vd(t,e),i):null}releaseContext(t){let e=t.canvas;if(!e[Ji])return!1;let i=e[Ji].initial;["height","width"].forEach(r=>{let a=i[r];bt(a)?e.removeAttribute(r):e.setAttribute(r,a)});let s=i.style||{};return Object.keys(s).forEach(r=>{e.style[r]=s[r]}),e.width=e.width,delete e[Ji],!0}addEventListener(t,e,i){this.removeEventListener(t,e);let s=t.$proxies||(t.$proxies={}),a={attach:qd,detach:Ud,resize:Zd}[e]||Qd;s[e]=a(t,e,i)}removeEventListener(t,e){let i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:Er,detach:Er,resize:Er}[e]||Yd)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return wo(t,e,i,s)}isAttached(t){let e=qi(t);return!!(e&&e.isConnected)}};function Jd(n){return!pr()||typeof OffscreenCanvas!="undefined"&&n instanceof OffscreenCanvas?Jo:sl}var ve=class{constructor(){this.x=void 0,this.y=void 0,this.active=!1,this.options=void 0,this.$animations=void 0}tooltipPosition(t){let{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return on(this.x)&&on(this.y)}getProps(t,e){let i=this.$animations;if(!e||!i)return this;let s={};return t.forEach(r=>{s[r]=i[r]&&i[r].active()?i[r]._to:this[r]}),s}};ve.defaults={};ve.defaultRoutes=void 0;var rl={values(n){return Ot(n)?n:""+n},numeric(n,t,e){if(n===0)return"0";let i=this.chart.options.locale,s,r=n;if(e.length>1){let c=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(c<1e-4||c>1e15)&&(s="scientific"),r=tp(n,e)}let a=pe(Math.abs(r)),o=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:s,minimumFractionDigits:o,maximumFractionDigits:o};return Object.assign(l,this.options.ticks.format),Tn(n,i,l)},logarithmic(n,t,e){if(n===0)return"0";let i=n/Math.pow(10,Math.floor(pe(n)));return i===1||i===2||i===5?rl.numeric.call(this,n,t,e):""}};function tp(n,t){let e=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(e)>=1&&n!==Math.floor(n)&&(e=n-Math.floor(n)),e}var ts={formatters:rl};ft.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(n,t)=>t.lineWidth,tickColor:(n,t)=>t.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ts.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}});ft.route("scale.ticks","color","","color");ft.route("scale.grid","color","","borderColor");ft.route("scale.grid","borderColor","","borderColor");ft.route("scale.title","color","","color");ft.describe("scale",{_fallback:!1,_scriptable:n=>!n.startsWith("before")&&!n.startsWith("after")&&n!=="callback"&&n!=="parser",_indexable:n=>n!=="borderDash"&&n!=="tickBorderDash"});ft.describe("scales",{_fallback:"scale"});ft.describe("scale.ticks",{_scriptable:n=>n!=="backdropPadding"&&n!=="callback",_indexable:n=>n!=="backdropPadding"});function ep(n,t){let e=n.options.ticks,i=e.maxTicksLimit||np(n),s=e.major.enabled?sp(t):[],r=s.length,a=s[0],o=s[r-1],l=[];if(r>i)return rp(t,l,s,r/i),l;let c=ip(s,t,i);if(r>0){let h,f,p=r>1?Math.round((o-a)/(r-1)):null;for(es(t,l,c,bt(p)?0:a-p,a),h=0,f=r-1;hs)return l}return Math.max(s,1)}function sp(n){let t=[],e,i;for(e=0,i=n.length;en==="left"?"right":n==="right"?"left":n,al=(n,t,e)=>t==="top"||t==="left"?n[t]+e:n[t]-e;function ol(n,t){let e=[],i=n.length/t,s=n.length,r=0;for(;ra+o)))return l}function cp(n,t){wt(n,e=>{let i=e.gc,s=i.length/2,r;if(s>t){for(r=0;ri?i:e,i=s&&e>i?e:i,{min:fe(e,fe(i,e)),max:fe(i,fe(e,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){Pt(this.options.beforeUpdate,[this])}update(t,e,i){let{beginAtZero:s,grace:r,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=lo(this,r,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let l=o=r||i<=1||!this.isHorizontal()){this.labelRotation=s;return}let h=this._getLabelSizes(),f=h.widest.width,p=h.highest.height,m=Wt(this.chart.width-f,0,this.maxWidth);o=t.offset?this.maxWidth/i:m/(i-1),f+6>o&&(o=m/(i-(t.offset?.5:1)),l=this.maxHeight-ci(t.grid)-e.padding-ll(t.title,this.chart.options.font),c=Math.sqrt(f*f+p*p),a=Fi(Math.min(Math.asin(Wt((h.highest.height+6)/o,-1,1)),Math.asin(Wt(l/c,-1,1))-Math.asin(Wt(p/c,-1,1)))),a=Math.max(s,Math.min(r,a))),this.labelRotation=a}afterCalculateLabelRotation(){Pt(this.options.afterCalculateLabelRotation,[this])}beforeFit(){Pt(this.options.beforeFit,[this])}fit(){let t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:r}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){let l=ll(s,e.options.font);if(o?(t.width=this.maxWidth,t.height=ci(r)+l):(t.height=this.maxHeight,t.width=ci(r)+l),i.display&&this.ticks.length){let{first:c,last:h,widest:f,highest:p}=this._getLabelSizes(),m=i.padding*2,v=me(this.labelRotation),k=Math.cos(v),_=Math.sin(v);if(o){let E=i.mirror?0:_*f.width+k*p.height;t.height=Math.min(this.maxHeight,t.height+E+m)}else{let E=i.mirror?0:k*f.width+_*p.height;t.width=Math.min(this.maxWidth,t.width+E+m)}this._calculatePadding(c,h,_,k)}}this._handleMargins(),o?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){let{ticks:{align:r,padding:a},position:o}=this.options,l=this.labelRotation!==0,c=o!=="top"&&this.axis==="x";if(this.isHorizontal()){let h=this.getPixelForTick(0)-this.left,f=this.right-this.getPixelForTick(this.ticks.length-1),p=0,m=0;l?c?(p=s*t.width,m=i*e.height):(p=i*t.height,m=s*e.width):r==="start"?m=e.width:r==="end"?p=t.width:(p=t.width/2,m=e.width/2),this.paddingLeft=Math.max((p-h+a)*this.width/(this.width-h),0),this.paddingRight=Math.max((m-f+a)*this.width/(this.width-f),0)}else{let h=e.height/2,f=t.height/2;r==="start"?(h=0,f=t.height):r==="end"&&(h=e.height,f=0),this.paddingTop=h+a,this.paddingBottom=f+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){Pt(this.options.afterFit,[this])}isHorizontal(){let{axis:t,position:e}=this.options;return e==="top"||e==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let e,i;for(e=0,i=t.length;e({width:r[$]||0,height:a[$]||0});return{first:V(0),last:V(e-1),widest:V(F),highest:V(L),widths:r,heights:a}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){let e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);let e=this._startPixel+t*this._length;return Ga(this._alignToPixels?Ue(this.chart,e,0):e)}getDecimalForPixel(t){let e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){let e=this.ticks||[];if(t>=0&&to*s?o/i:l/s:l*s0}_computeGridLineItems(t){let e=this.axis,i=this.chart,s=this.options,{grid:r,position:a}=s,o=r.offset,l=this.isHorizontal(),h=this.ticks.length+(o?1:0),f=ci(r),p=[],m=r.setContext(this.getContext()),v=m.drawBorder?m.borderWidth:0,k=v/2,_=function(Q){return Ue(i,Q,v)},E,T,I,F,L,V,$,G,K,et,lt,rt;if(a==="top")E=_(this.bottom),V=this.bottom-f,G=E-k,et=_(t.top)+k,rt=t.bottom;else if(a==="bottom")E=_(this.top),et=t.top,rt=_(t.bottom)-k,V=E+k,G=this.top+f;else if(a==="left")E=_(this.right),L=this.right-f,$=E-k,K=_(t.left)+k,lt=t.right;else if(a==="right")E=_(this.left),K=t.left,lt=_(t.right)-k,L=E+k,$=this.left+f;else if(e==="x"){if(a==="center")E=_((t.top+t.bottom)/2+.5);else if(ut(a)){let Q=Object.keys(a)[0],ht=a[Q];E=_(this.chart.scales[Q].getPixelForValue(ht))}et=t.top,rt=t.bottom,V=E+k,G=V+f}else if(e==="y"){if(a==="center")E=_((t.left+t.right)/2);else if(ut(a)){let Q=Object.keys(a)[0],ht=a[Q];E=_(this.chart.scales[Q].getPixelForValue(ht))}L=E-k,$=L-f,K=t.left,lt=t.right}let vt=ot(s.ticks.maxTicksLimit,h),st=Math.max(1,Math.ceil(h/vt));for(T=0;Tr.value===t);return s>=0?e.setContext(this.getContext(s)).lineWidth:0}drawGrid(t){let e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t)),r,a,o=(l,c,h)=>{!h.width||!h.color||(i.save(),i.lineWidth=h.width,i.strokeStyle=h.color,i.setLineDash(h.borderDash||[]),i.lineDashOffset=h.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(c.x,c.y),i.stroke(),i.restore())};if(e.display)for(r=0,a=s.length;r{this.draw(s)}}]:[{z:i,draw:s=>{this.drawBackground(),this.drawGrid(s),this.drawTitle()}},{z:i+1,draw:()=>{this.drawBorder()}},{z:e,draw:s=>{this.drawLabels(s)}}]}getMatchingVisibleMetas(t){let e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[],r,a;for(r=0,a=e.length;r{let i=e.split("."),s=i.pop(),r=[n].concat(i).join("."),a=t[e].split("."),o=a.pop(),l=a.join(".");ft.route(r,s,l,o)})}function mp(n){return"id"in n&&"defaults"in n}var cl=class{constructor(){this.controllers=new hi(ke,"datasets",!0),this.elements=new hi(ve,"elements"),this.plugins=new hi(Object,"plugins"),this.scales=new hi(Qe,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach(s=>{let r=i||this._getRegistryForType(s);i||r.isForType(s)||r===this.plugins&&s.id?this._exec(t,r,s):wt(s,a=>{let o=i||this._getRegistryForType(a);this._exec(t,o,a)})})}_exec(t,e,i){let s=Ai(t);Pt(i["before"+s],[],i),e[t](i),Pt(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;er.filter(o=>!a.some(l=>o.plugin.id===l.plugin.id));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}};function bp(n){let t=[],e=Object.keys(Be.plugins.items);for(let s=0;s{let l=i[o];if(!ut(l))return console.error(`Invalid scale configuration for scale: ${o}`);if(l._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${o}`);let c=Ar(o,l),h=wp(c,s),f=e.scales||{};r[c]=r[c]||o,a[o]=wn(Object.create(null),[{axis:c},l,f[c],f[h]])}),n.data.datasets.forEach(o=>{let l=o.type||n.type,c=o.indexAxis||Rr(l,t),f=(qe[l]||{}).scales||{};Object.keys(f).forEach(p=>{let m=xp(p,c),v=o[m+"AxisID"]||r[m]||m;a[v]=a[v]||Object.create(null),wn(a[v],[{axis:m},i[v],f[p]])})}),Object.keys(a).forEach(o=>{let l=a[o];wn(l,[ft.scales[l.type],ft.scale])}),a}function ul(n){let t=n.options||(n.options={});t.plugins=ot(t.plugins,{}),t.scales=Sp(n,t)}function fl(n){return n=n||{},n.datasets=n.datasets||[],n.labels=n.labels||[],n}function Mp(n){return n=n||{},n.data=fl(n.data),ul(n),n}var dl=new Map,pl=new Set;function ns(n,t){let e=dl.get(n);return e||(e=t(),dl.set(n,e),pl.add(e)),e}var ui=(n,t,e)=>{let i=Ge(t,e);i!==void 0&&n.add(i)},gl=class{constructor(t){this._config=Mp(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=fl(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){let t=this._config;this.clearCache(),ul(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return ns(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return ns(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return ns(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){let e=t.id,i=this.type;return ns(`${i}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){let i=this._scopeCache,s=i.get(t);return(!s||e)&&(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){let{options:s,type:r}=this,a=this._cachedScopes(t,i),o=a.get(e);if(o)return o;let l=new Set;e.forEach(h=>{t&&(l.add(t),h.forEach(f=>ui(l,t,f))),h.forEach(f=>ui(l,s,f)),h.forEach(f=>ui(l,qe[r]||{},f)),h.forEach(f=>ui(l,ft,f)),h.forEach(f=>ui(l,Hi,f))});let c=Array.from(l);return c.length===0&&c.push(Object.create(null)),pl.has(e)&&a.set(e,c),c}chartOptionScopes(){let{options:t,type:e}=this;return[t,qe[e]||{},ft.datasets[e]||{},{type:e},ft,Hi]}resolveNamedOptions(t,e,i,s=[""]){let r={$shared:!0},{resolver:a,subPrefixes:o}=ml(this._resolverCache,t,s),l=a;if(Tp(a,e)){r.$shared=!1,i=Fe(i)?i():i;let c=this.createResolver(t,i,o);l=cn(a,i,c)}for(let c of e)r[c]=l[c];return r}createResolver(t,e,i=[""],s){let{resolver:r}=ml(this._resolverCache,t,i);return ut(e)?cn(r,e,void 0,s):r}};function ml(n,t,e){let i=n.get(t);i||(i=new Map,n.set(t,i));let s=e.join(),r=i.get(s);return r||(r={resolver:Yi(t,e),subPrefixes:e.filter(o=>!o.toLowerCase().includes("hover"))},i.set(s,r)),r}var Cp=n=>ut(n)&&Object.getOwnPropertyNames(n).reduce((t,e)=>t||Fe(n[e]),!1);function Tp(n,t){let{isScriptable:e,isIndexable:i}=fr(n);for(let s of t){let r=e(s),a=i(s),o=(a||r)&&n[s];if(r&&(Fe(o)||Cp(o))||a&&Ot(o))return!0}return!1}var Op="3.6.0",Pp=["top","bottom","left","right","chartArea"];function bl(n,t){return n==="top"||n==="bottom"||Pp.indexOf(n)===-1&&t==="x"}function _l(n,t){return function(e,i){return e[n]===i[n]?e[t]-i[t]:e[n]-i[n]}}function vl(n){let t=n.chart,e=t.options.animation;t.notifyPlugins("afterRender"),Pt(e&&e.onComplete,[n],t)}function Dp(n){let t=n.chart,e=t.options.animation;Pt(e&&e.onProgress,[n],t)}function yl(n){return pr()&&typeof n=="string"?n=document.getElementById(n):n&&n.length&&(n=n[0]),n&&n.canvas&&(n=n.canvas),n}var is={},xl=n=>{let t=yl(n);return Object.values(is).filter(e=>e.canvas===t).pop()},Je=class{constructor(t,e){let i=this.config=new gl(e),s=yl(t),r=xl(s);if(r)throw new Error("Canvas is already in use. Chart with ID '"+r.id+"' must be destroyed before the canvas can be reused.");let a=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||Jd(s)),this.platform.updateConfig(i);let o=this.platform.acquireContext(s,a.aspectRatio),l=o&&o.canvas,c=l&&l.height,h=l&&l.width;if(this.id=za(),this.ctx=o,this.canvas=l,this.width=h,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new hl,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Fa(f=>this.update(f),a.resizeDelay||0),is[this.id]=this,!o||!l){console.error("Failed to create chart: can't acquire context from the given item");return}ze.listen(this,"complete",vl),ze.listen(this,"progress",Dp),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:s,_aspectRatio:r}=this;return bt(t)?e&&r?r:s?i/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():br(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return lr(this.canvas,this.ctx),this}stop(){return ze.stop(this),this}resize(t,e){ze.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){let i=this.options,s=this.canvas,r=i.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(s,t,e,r),o=i.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,!!br(this,o,!0)&&(this.notifyPlugins("resize",{size:a}),Pt(i.onResize,[this,a],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){let e=this.options.scales||{};wt(e,(i,s)=>{i.id=s})}buildOrUpdateScales(){let t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce((a,o)=>(a[o]=!1,a),{}),r=[];e&&(r=r.concat(Object.keys(e).map(a=>{let o=e[a],l=Ar(a,o),c=l==="r",h=l==="x";return{options:o,dposition:c?"chartArea":h?"bottom":"left",dtype:c?"radialLinear":h?"category":"linear"}}))),wt(r,a=>{let o=a.options,l=o.id,c=Ar(l,o),h=ot(o.type,a.dtype);(o.position===void 0||bl(o.position,c)!==bl(a.dposition))&&(o.position=a.dposition),s[l]=!0;let f=null;if(l in i&&i[l].type===h)f=i[l];else{let p=Be.getScale(h);f=new p({id:l,type:h,ctx:this.ctx,chart:this}),i[f.id]=f}f.init(o,t)}),wt(s,(a,o)=>{a||delete i[o]}),wt(i,a=>{Qt.configure(this,a,a.options),Qt.addBox(this,a)})}_updateMetasets(){let t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort((s,r)=>s.index-r.index),i>e){for(let s=e;se.length&&delete this._stacks,t.forEach((i,s)=>{e.filter(r=>r===i._dataset).length===0&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){let t=[],e=this.data.datasets,i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){let e=this.config;e.update();let i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext());wt(this.scales,c=>{Qt.removeBox(this,c)});let s=this._animationsDisabled=!i.animation;this.ensureScalesHaveIDs(),this.buildOrUpdateScales();let r=new Set(Object.keys(this._listeners)),a=new Set(i.events);if((!$a(r,a)||!!this._responsiveListeners!==i.responsive)&&(this.unbindEvents(),this.bindEvents()),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;let o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let l=0;for(let c=0,h=this.data.datasets.length;c{c.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(_l("z","_idx")),this._lastEvent&&this._eventHandler(this._lastEvent,!0),this.render()}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;Qt.update(this,this.width,this.height,t);let e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],wt(this.boxes,s=>{i&&s.position==="chartArea"||(s.configure&&s.configure(),this._layers.push(...s._layers()))},this),this._layers.forEach((s,r)=>{s._idx=r}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let e=0,i=this.data.datasets.length;e=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){let e=this.ctx,i=t._clip,s=!i.disabled,r=this.chartArea,a={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",a)!==!1&&(s&&Xn(e,{left:i.left===!1?0:r.left-i.left,right:i.right===!1?this.width:r.right+i.right,top:i.top===!1?0:r.top-i.top,bottom:i.bottom===!1?this.height:r.bottom+i.bottom}),t.controller.draw(),s&&Kn(e),a.cancelable=!1,this.notifyPlugins("afterDatasetDraw",a))}getElementsAtEventForMode(t,e,i,s){let r=Ld.modes[e];return typeof r=="function"?r(this,t,i,s):[]}getDatasetMeta(t){let e=this.data.datasets[t],i=this._metasets,s=i.filter(r=>r&&r._dataset===e).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ie(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){let e=this.data.datasets[t];if(!e)return!1;let i=this.getDatasetMeta(t);return typeof i.hidden=="boolean"?!i.hidden:!e.hidden}setDatasetVisibility(t,e){let i=this.getDatasetMeta(t);i.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){let s=i?"show":"hide",r=this.getDatasetMeta(t),a=r.controller._resolveAnimations(void 0,s);de(e)?(r.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),a.update(r,{visible:i}),this.update(o=>o.datasetIndex===t?s:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){let e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),ze.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,r,a),t[r]=a},s=(r,a,o)=>{r.offsetX=a,r.offsetY=o,this._eventHandler(r)};wt(this.options.events,r=>i(r,s))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});let t=this._responsiveListeners,e=this.platform,i=(l,c)=>{e.addEventListener(this,l,c),t[l]=c},s=(l,c)=>{t[l]&&(e.removeEventListener(this,l,c),delete t[l])},r=(l,c)=>{this.canvas&&this.resize(l,c)},a,o=()=>{s("attach",o),this.attached=!0,this.resize(),i("resize",r),i("detach",a)};a=()=>{this.attached=!1,s("resize",r),this._stop(),this._resize(0,0),i("attach",o)},e.isAttached(this.canvas)?o():a()}unbindEvents(){wt(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},wt(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){let s=i?"set":"remove",r,a,o,l;for(e==="dataset"&&(r=this.getDatasetMeta(t[0].datasetIndex),r.controller["_"+s+"DatasetHoverStyle"]()),o=0,l=t.length;o{let o=this.getDatasetMeta(r);if(!o)throw new Error("No dataset found at index "+r);return{datasetIndex:r,element:o.data[a],index:a}});!jn(i,e)&&(this._active=i,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}_updateHoverStyles(t,e,i){let s=this.options.hover,r=(l,c)=>l.filter(h=>!c.some(f=>h.datasetIndex===f.datasetIndex&&h.index===f.index)),a=r(e,t),o=i?t:r(t,e);a.length&&this.updateHoverStyle(a,s.mode,!1),o.length&&s.mode&&this.updateHoverStyle(o,s.mode,!0)}_eventHandler(t,e){let i={event:t,replay:e,cancelable:!0},s=a=>(a.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",i,s)===!1)return;let r=this._handleEvent(t,e);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(r||i.changed)&&this.render(),this}_handleEvent(t,e){let{_active:i=[],options:s}=this,r=s.hover,a=e,o=[],l=!1,c=null;return t.type!=="mouseout"&&(o=this.getElementsAtEventForMode(t,r.mode,r,a),c=t.type==="click"?this._lastEvent:t),this._lastEvent=null,Xe(t,this.chartArea,this._minPadding)&&(Pt(s.onHover,[t,o,this],this),(t.type==="mouseup"||t.type==="click"||t.type==="contextmenu")&&Pt(s.onClick,[t,o,this],this)),l=!jn(o,i),(l||e)&&(this._active=o,this._updateHoverStyles(o,i,e)),this._lastEvent=c,l}},wl=()=>wt(Je.instances,n=>n._plugins.invalidate()),tn=!0;Object.defineProperties(Je,{defaults:{enumerable:tn,value:ft},instances:{enumerable:tn,value:is},overrides:{enumerable:tn,value:qe},registry:{enumerable:tn,value:Be},version:{enumerable:tn,value:Op},getChart:{enumerable:tn,value:xl},register:{enumerable:tn,value:(...n)=>{Be.add(...n),wl()}},unregister:{enumerable:tn,value:(...n)=>{Be.remove(...n),wl()}}});function kl(n,t,e){let{startAngle:i,pixelMargin:s,x:r,y:a,outerRadius:o,innerRadius:l}=t,c=s/o;n.beginPath(),n.arc(r,a,o,i-c,e+c),l>s?(c=s/l,n.arc(r,a,l,e+c,i-c,!0)):n.arc(r,a,s,e+Lt,i-Lt),n.closePath(),n.clip()}function Ep(n){return Vi(n,["outerStart","outerEnd","innerStart","innerEnd"])}function Rp(n,t,e,i){let s=Ep(n.options.borderRadius),r=(e-t)/2,a=Math.min(r,i*t/2),o=l=>{let c=(e-Math.min(r,l))*i/2;return Wt(l,0,Math.min(r,c))};return{outerStart:o(s.outerStart),outerEnd:o(s.outerEnd),innerStart:Wt(s.innerStart,0,a),innerEnd:Wt(s.innerEnd,0,a)}}function Pn(n,t,e,i){return{x:e+n*Math.cos(t),y:i+n*Math.sin(t)}}function Lr(n,t,e,i,s){let{x:r,y:a,startAngle:o,pixelMargin:l,innerRadius:c}=t,h=Math.max(t.outerRadius+i+e-l,0),f=c>0?c+i+e+l:0,p=0,m=s-o;if(i){let ht=c>0?c-i:0,he=h>0?h-i:0,te=(ht+he)/2,ne=te!==0?m*te/(te+i):m;p=(m-ne)/2}let v=Math.max(.001,m*h-e/Et)/h,k=(m-v)/2,_=o+k+p,E=s-k-p,{outerStart:T,outerEnd:I,innerStart:F,innerEnd:L}=Rp(t,f,h,E-_),V=h-T,$=h-I,G=_+T/V,K=E-I/$,et=f+F,lt=f+L,rt=_+F/et,vt=E-L/lt;if(n.beginPath(),n.arc(r,a,h,G,K),I>0){let ht=Pn($,K,r,a);n.arc(ht.x,ht.y,I,K,E+Lt)}let st=Pn(lt,E,r,a);if(n.lineTo(st.x,st.y),L>0){let ht=Pn(lt,vt,r,a);n.arc(ht.x,ht.y,L,E+Lt,vt+Math.PI)}if(n.arc(r,a,f,E-L/f,_+F/f,!0),F>0){let ht=Pn(et,rt,r,a);n.arc(ht.x,ht.y,F,rt+Math.PI,_-Lt)}let Q=Pn(V,_,r,a);if(n.lineTo(Q.x,Q.y),T>0){let ht=Pn(V,G,r,a);n.arc(ht.x,ht.y,T,_-Lt,G)}n.closePath()}function Ap(n,t,e,i){let{fullCircles:s,startAngle:r,circumference:a}=t,o=t.endAngle;if(s){Lr(n,t,e,i,r+Mt);for(let l=0;l=Mt||$n(r,o,l),v=a>=c+p&&a<=h+p;return m&&v}getCenterPoint(t){let{x:e,y:i,startAngle:s,endAngle:r,innerRadius:a,outerRadius:o}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],t),{offset:l,spacing:c}=this.options,h=(s+r)/2,f=(a+o+c+l)/2;return{x:e+Math.cos(h)*f,y:i+Math.sin(h)*f}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){let{options:e,circumference:i}=this,s=(e.offset||0)/2,r=(e.spacing||0)/2;if(this.pixelMargin=e.borderAlign==="inner"?.33:0,this.fullCircles=i>Mt?Math.floor(i/Mt):0,i===0||this.innerRadius<0||this.outerRadius<0)return;t.save();let a=0;if(s){a=s/2;let l=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(l)*a,Math.sin(l)*a),this.circumference>=Et&&(a=s)}t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor;let o=Ap(t,this,a,r);Fp(t,this,a,r,o),t.restore()}};fi.id="arc";fi.defaults={borderAlign:"center",borderColor:"#fff",borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0};fi.defaultRoutes={backgroundColor:"backgroundColor"};function Sl(n,t,e=t){n.lineCap=ot(e.borderCapStyle,t.borderCapStyle),n.setLineDash(ot(e.borderDash,t.borderDash)),n.lineDashOffset=ot(e.borderDashOffset,t.borderDashOffset),n.lineJoin=ot(e.borderJoinStyle,t.borderJoinStyle),n.lineWidth=ot(e.borderWidth,t.borderWidth),n.strokeStyle=ot(e.borderColor,t.borderColor)}function Ip(n,t,e){n.lineTo(e.x,e.y)}function zp(n){return n.stepped?ao:n.tension||n.cubicInterpolationMode==="monotone"?oo:Ip}function Ml(n,t,e={}){let i=n.length,{start:s=0,end:r=i-1}=e,{start:a,end:o}=t,l=Math.max(s,a),c=Math.min(r,o),h=so&&r>o;return{count:i,start:l,loop:t.loop,ilen:c(a+(c?o-F:F))%r,I=()=>{k!==_&&(n.lineTo(h,_),n.lineTo(h,k),n.lineTo(h,E))};for(l&&(m=s[T(0)],n.moveTo(m.x,m.y)),p=0;p<=o;++p){if(m=s[T(p)],m.skip)continue;let F=m.x,L=m.y,V=F|0;V===v?(L_&&(_=L),h=(f*h+F)/++f):(I(),n.lineTo(F,L),v=V,f=0,k=_=L),E=L}I()}function Fr(n){let t=n.options,e=t.borderDash&&t.borderDash.length;return!n._decimated&&!n._loop&&!t.tension&&t.cubicInterpolationMode!=="monotone"&&!t.stepped&&!e?jp:Bp}function Np(n){return n.stepped?So:n.tension||n.cubicInterpolationMode==="monotone"?Mo:Ze}function $p(n,t,e,i){let s=t._path;s||(s=t._path=new Path2D,t.path(s,e,i)&&s.closePath()),Sl(n,t.options),n.stroke(s)}function Hp(n,t,e,i){let{segments:s,options:r}=t,a=Fr(t);for(let o of s)Sl(n,r,o.style),n.beginPath(),a(n,t,o,{start:e,end:e+i-1})&&n.closePath(),n.stroke()}var Vp=typeof Path2D=="function";function Wp(n,t,e,i){Vp&&!t.options.segment?$p(n,t,e,i):Hp(n,t,e,i)}var je=class extends ve{constructor(t){super();this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){let i=this.options;if((i.tension||i.cubicInterpolationMode==="monotone")&&!i.stepped&&!this._pointsUpdated){let s=i.spanGaps?this._loop:this._fullLoop;xo(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Po(this,this.options.segment))}first(){let t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){let t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){let i=this.options,s=t[e],r=this.points,a=wr(this,{property:e,start:s,end:s});if(!a.length)return;let o=[],l=Np(i),c,h;for(c=0,h=a.length;cn!=="borderDash"&&n!=="fill"};function Cl(n,t,e,i){let s=n.options,{[e]:r}=n.getProps([e],i);return Math.abs(t-r)=o.left&&t<=o.right)&&(r||e>=o.top&&e<=o.bottom)}function Up(n){return n.topLeft||n.topRight||n.bottomLeft||n.bottomRight}function Xp(n,t){n.rect(t.x,t.y,t.w,t.h)}function zr(n,t,e={}){let i=n.x!==e.x?-t:0,s=n.y!==e.y?-t:0,r=(n.x+n.w!==e.x+e.w?t:0)-i,a=(n.y+n.h!==e.y+e.h?t:0)-s;return{x:n.x+i,y:n.y+s,w:n.w+r,h:n.h+a,radius:n.radius}}var pi=class extends ve{constructor(t){super();this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){let{inflateAmount:e,options:{borderColor:i,backgroundColor:s}}=this,{inner:r,outer:a}=qp(this),o=Up(a.radius)?Zn:Xp;t.save(),(a.w!==r.w||a.h!==r.h)&&(t.beginPath(),o(t,zr(a,e,r)),t.clip(),o(t,zr(r,-e,a)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),o(t,zr(r,e)),t.fillStyle=s,t.fill(),t.restore()}inRange(t,e,i){return Ir(this,t,e,i)}inXRange(t,e){return Ir(this,t,null,e)}inYRange(t,e){return Ir(this,null,t,e)}getCenterPoint(t){let{x:e,y:i,base:s,horizontal:r}=this.getProps(["x","y","base","horizontal"],t);return{x:r?(e+s)/2:e,y:r?i:(i+s)/2}}getRange(t){return t==="x"?this.width/2:this.height/2}};pi.id="bar";pi.defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};pi.defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};var Kp=Object.freeze({__proto__:null,ArcElement:fi,LineElement:je,PointElement:di,BarElement:pi});function Zp(n,t,e,i,s){let r=s.samples||i;if(r>=e)return n.slice(t,t+e);let a=[],o=(e-2)/(r-2),l=0,c=t+e-1,h=t,f,p,m,v,k;for(a[l++]=n[h],f=0;fm&&(m=v,p=n[T],k=T);a[l++]=p,h=k}return a[l++]=n[c],a}function Qp(n,t,e,i){let s=0,r=0,a,o,l,c,h,f,p,m,v,k,_=[],E=t+e-1,T=n[t].x,F=n[E].x-T;for(a=t;ak&&(k=c,p=a),s=(r*s+o.x)/++r;else{let V=a-1;if(!bt(f)&&!bt(p)){let $=Math.min(f,p),G=Math.max(f,p);$!==m&&$!==V&&_.push({...n[$],x:s}),G!==m&&G!==V&&_.push({...n[G],x:s})}a>0&&V!==m&&_.push(n[V]),_.push(o),h=L,r=0,v=k=c,f=p=m=a}}return _}function Ol(n){if(n._decimated){let t=n._data;delete n._decimated,delete n._data,Object.defineProperty(n,"data",{value:t})}}function Pl(n){n.data.datasets.forEach(t=>{Ol(t)})}function Jp(n,t){let e=t.length,i=0,s,{iScale:r}=n,{min:a,max:o,minDefined:l,maxDefined:c}=r.getUserBounds();return l&&(i=Wt(Pe(t,r.axis,a).lo,0,e-1)),c?s=Wt(Pe(t,r.axis,o).hi+1,i,e)-i:s=e-i,{start:i,count:s}}var tg={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(n,t,e)=>{if(!e.enabled){Pl(n);return}let i=n.width;n.data.datasets.forEach((s,r)=>{let{_data:a,indexAxis:o}=s,l=n.getDatasetMeta(r),c=a||s.data;if(Mn([o,n.options.indexAxis])==="y"||l.type!=="line")return;let h=n.scales[l.xAxisID];if(h.type!=="linear"&&h.type!=="time"||n.options.parsing)return;let{start:f,count:p}=Jp(l,c),m=e.threshold||4*i;if(p<=m){Ol(s);return}bt(a)&&(s._data=c,delete s.data,Object.defineProperty(s,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(k){this._data=k}}));let v;switch(e.algorithm){case"lttb":v=Zp(c,f,p,i,e);break;case"min-max":v=Qp(c,f,p,i);break;default:throw new Error(`Unsupported decimation algorithm '${e.algorithm}'`)}s._decimated=v})},destroy(n){Pl(n)}};function eg(n,t){let e=n.getDatasetMeta(t);return e&&n.isDatasetVisible(t)?e.dataset:null}function ng(n){let t=n.options,e=t.fill,i=ot(e&&e.target,e);return i===void 0&&(i=!!t.backgroundColor),i===!1||i===null?!1:i===!0?"origin":i}function ig(n,t,e){let i=ng(n);if(ut(i))return isNaN(i.value)?!1:i;let s=parseFloat(i);return At(s)&&Math.floor(s)===s?((i[0]==="-"||i[0]==="+")&&(s=t+s),s===t||s<0||s>=e?!1:s):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function sg(n){let{scale:t={},fill:e}=n,i=null,s;return e==="start"?i=t.bottom:e==="end"?i=t.top:ut(e)?i=t.getPixelForValue(e.value):t.getBasePixel&&(i=t.getBasePixel()),At(i)?(s=t.isHorizontal(),{x:s?i:null,y:s?null:i}):null}var Br=class{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){let{x:s,y:r,radius:a}=this;return e=e||{start:0,end:Mt},t.arc(s,r,a,e.end,e.start,!0),!i.bounds}interpolate(t){let{x:e,y:i,radius:s}=this,r=t.angle;return{x:e+Math.cos(r)*s,y:i+Math.sin(r)*s,angle:r}}};function rg(n){let{scale:t,fill:e}=n,i=t.options,s=t.getLabels().length,r=[],a=i.reverse?t.max:t.min,o=i.reverse?t.min:t.max,l,c,h;if(e==="start"?h=a:e==="end"?h=o:ut(e)?h=e.value:h=t.getBaseValue(),i.grid.circular)return c=t.getPointPositionForValue(0,a),new Br({x:c.x,y:c.y,radius:t.getDistanceFromCenterForValue(h)});for(l=0;ln;t--){let i=e[t];if(!isNaN(i.x)&&!isNaN(i.y))break}return t}function og(n,t){let{x:e=null,y:i=null}=n||{},s=t.points,r=[];return t.segments.forEach(({start:a,end:o})=>{o=Dl(a,o,s);let l=s[a],c=s[o];i!==null?(r.push({x:l.x,y:i}),r.push({x:c.x,y:i})):e!==null&&(r.push({x:e,y:l.y}),r.push({x:e,y:c.y}))}),r}function lg(n){let{scale:t,index:e,line:i}=n,s=[],r=i.segments,a=i.points,o=cg(t,e);o.push(El({x:null,y:t.bottom},i));for(let l=0;l=f&&s<=p){o=s===f,l=s===p;break}}return{first:o,last:l,point:i}}function fg(n){let{chart:t,fill:e,line:i}=n;if(At(e))return eg(t,e);if(e==="stack")return lg(n);if(e==="shape")return!0;let s=ag(n);return s instanceof Br?s:El(s,i)}function El(n,t){let e=[],i=!1;return Ot(n)?(i=!0,e=n):e=og(n,t),e.length?new je({points:e,options:{tension:0},_loop:i,_fullLoop:i}):null}function dg(n,t,e){let s=n[t].fill,r=[t],a;if(!e)return s;for(;s!==!1&&r.indexOf(s)===-1;){if(!At(s))return s;if(a=n[s],!a)return!1;if(a.visible)return s;r.push(s),s=a.fill}return!1}function Rl(n,t,e){n.beginPath(),t.path(n),n.lineTo(t.last().x,e),n.lineTo(t.first().x,e),n.closePath(),n.clip()}function jr(n,t,e,i){if(i)return;let s=t[n],r=e[n];return n==="angle"&&(s=be(s),r=be(r)),{property:n,start:s,end:r}}function Al(n,t,e,i){return n&&t?i(n[e],t[e]):n?n[e]:t?t[e]:0}function pg(n,t,e){let i=n.segments,s=n.points,r=t.points,a=[];for(let o of i){let{start:l,end:c}=o;c=Dl(l,c,s);let h=jr(e,s[l],s[c],o.loop);if(!t.segments){a.push({source:o,target:h,start:s[l],end:s[c]});continue}let f=wr(t,h);for(let p of f){let m=jr(e,r[p.start],r[p.end],p.loop),v=xr(o,s,m);for(let k of v)a.push({source:k,target:p,start:{[e]:Al(h,m,"start",Math.max)},end:{[e]:Al(h,m,"end",Math.min)}})}}return a}function gg(n,t,e){let{top:i,bottom:s}=t.chart.chartArea,{property:r,start:a,end:o}=e||{};r==="x"&&(n.beginPath(),n.rect(a,i,o-a,s-i),n.clip())}function Ll(n,t,e,i){let s=t.interpolate(e,i);s&&n.lineTo(s.x,s.y)}function Fl(n,t){let{line:e,target:i,property:s,color:r,scale:a}=t,o=pg(e,i,s);for(let{source:l,target:c,start:h,end:f}of o){let{style:{backgroundColor:p=r}={}}=l,m=i!==!0;n.save(),n.fillStyle=p,gg(n,a,m&&jr(s,h,f)),n.beginPath();let v=!!e.pathSegment(n,l),k;if(m){v?n.closePath():Ll(n,i,f,s);let _=!!i.pathSegment(n,c,{move:v,reverse:!0});k=v&&_,k||Ll(n,i,h,s)}n.closePath(),n.fill(k?"evenodd":"nonzero"),n.restore()}}function mg(n,t){let{line:e,target:i,above:s,below:r,area:a,scale:o}=t,l=e._loop?"angle":t.axis;n.save(),l==="x"&&r!==s&&(Rl(n,i,a.top),Fl(n,{line:e,target:i,color:s,scale:o,property:l}),n.restore(),n.save(),Rl(n,i,a.bottom)),Fl(n,{line:e,target:i,color:r,scale:o,property:l}),n.restore()}function Nr(n,t,e){let i=fg(t),{line:s,scale:r,axis:a}=t,o=s.options,l=o.fill,c=o.backgroundColor,{above:h=c,below:f=c}=l||{};i&&s.points.length&&(Xn(n,e),mg(n,{line:s,target:i,above:h,below:f,area:e,scale:r,axis:a}),Kn(n))}var bg={id:"filler",afterDatasetsUpdate(n,t,e){let i=(n.data.datasets||[]).length,s=[],r,a,o,l;for(a=0;a=0;--a){let o=s[a].$filler;!o||(o.line.updateControlPoints(r,o.axis),i&&Nr(n.ctx,o,r))}},beforeDatasetsDraw(n,t,e){if(e.drawTime!=="beforeDatasetsDraw")return;let i=n.getSortedVisibleDatasetMetas();for(let s=i.length-1;s>=0;--s){let r=i[s].$filler;r&&Nr(n.ctx,r,n.chartArea)}},beforeDatasetDraw(n,t,e){let i=t.meta.$filler;!i||i.fill===!1||e.drawTime!=="beforeDatasetDraw"||Nr(n.ctx,i,n.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}},Il=(n,t)=>{let{boxHeight:e=t,boxWidth:i=t}=n;return n.usePointStyle&&(e=Math.min(e,t),i=Math.min(i,t)),{boxWidth:i,boxHeight:e,itemHeight:Math.max(t,e)}},_g=(n,t)=>n!==null&&t!==null&&n.datasetIndex===t.datasetIndex&&n.index===t.index,$r=class extends ve{constructor(t){super();this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let t=this.options.labels||{},e=Pt(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(i=>t.filter(i,this.chart.data))),t.sort&&(e=e.sort((i,s)=>t.sort(i,s,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){let{options:t,ctx:e}=this;if(!t.display){this.width=this.height=0;return}let i=t.labels,s=$t(i.font),r=s.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:l}=Il(i,r),c,h;e.font=s.string,this.isHorizontal()?(c=this.maxWidth,h=this._fitRows(a,r,o,l)+10):(h=this.maxHeight,c=this._fitCols(a,r,o,l)+10),this.width=Math.min(c,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){let{ctx:r,maxWidth:a,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],h=s+o,f=t;r.textAlign="left",r.textBaseline="middle";let p=-1,m=-h;return this.legendItems.forEach((v,k)=>{let _=i+e/2+r.measureText(v.text).width;(k===0||c[c.length-1]+_+2*o>a)&&(f+=h,c[c.length-(k>0?0:1)]=0,m+=h,p++),l[k]={left:0,top:m,row:p,width:_,height:s},c[c.length-1]+=_+o}),f}_fitCols(t,e,i,s){let{ctx:r,maxHeight:a,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],h=a-t,f=o,p=0,m=0,v=0,k=0;return this.legendItems.forEach((_,E)=>{let T=i+e/2+r.measureText(_.text).width;E>0&&m+s+2*o>h&&(f+=p+o,c.push({width:p,height:m}),v+=p+o,k++,p=m=0),l[E]={left:v,top:m,col:k,width:T,height:s},p=Math.max(p,T),m+=s+o}),f+=p,c.push({width:p,height:m}),f}adjustHitBoxes(){if(!this.options.display)return;let t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:r}}=this,a=un(r,this.left,this.width);if(this.isHorizontal()){let o=0,l=Xt(i,this.left+s,this.right-this.lineWidths[o]);for(let c of e)o!==c.row&&(o=c.row,l=Xt(i,this.left+s,this.right-this.lineWidths[o])),c.top+=this.top+t+s,c.left=a.leftForLtr(a.x(l),c.width),l+=c.width+s}else{let o=0,l=Xt(i,this.top+t+s,this.bottom-this.columnSizes[o].height);for(let c of e)c.col!==o&&(o=c.col,l=Xt(i,this.top+t+s,this.bottom-this.columnSizes[o].height)),c.top=l,c.left+=this.left+s,c.left=a.leftForLtr(a.x(c.left),c.width),l+=c.height+s}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){let t=this.ctx;Xn(t,this),this._draw(),Kn(t)}}_draw(){let{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:r,labels:a}=t,o=ft.color,l=un(t.rtl,this.left,this.width),c=$t(a.font),{color:h,padding:f}=a,p=c.size,m=p/2,v;this.drawTitle(),s.textAlign=l.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=c.string;let{boxWidth:k,boxHeight:_,itemHeight:E}=Il(a,p),T=function($,G,K){if(isNaN(k)||k<=0||isNaN(_)||_<0)return;s.save();let et=ot(K.lineWidth,1);if(s.fillStyle=ot(K.fillStyle,o),s.lineCap=ot(K.lineCap,"butt"),s.lineDashOffset=ot(K.lineDashOffset,0),s.lineJoin=ot(K.lineJoin,"miter"),s.lineWidth=et,s.strokeStyle=ot(K.strokeStyle,o),s.setLineDash(ot(K.lineDash,[])),a.usePointStyle){let lt={radius:k*Math.SQRT2/2,pointStyle:K.pointStyle,rotation:K.rotation,borderWidth:et},rt=l.xPlus($,k/2),vt=G+m;Un(s,lt,rt,vt)}else{let lt=G+Math.max((p-_)/2,0),rt=l.leftForLtr($,k),vt=ln(K.borderRadius);s.beginPath(),Object.values(vt).some(st=>st!==0)?Zn(s,{x:rt,y:lt,w:k,h:_,radius:vt}):s.rect(rt,lt,k,_),s.fill(),et!==0&&s.stroke()}s.restore()},I=function($,G,K){Ke(s,K.text,$,G+E/2,c,{strikethrough:K.hidden,textAlign:l.textAlign(K.textAlign)})},F=this.isHorizontal(),L=this._computeTitleHeight();F?v={x:Xt(r,this.left+f,this.right-i[0]),y:this.top+f+L,line:0}:v={x:this.left+f,y:Xt(r,this.top+L+f,this.bottom-e[0].height),line:0},vr(this.ctx,t.textDirection);let V=E+f;this.legendItems.forEach(($,G)=>{s.strokeStyle=$.fontColor||h,s.fillStyle=$.fontColor||h;let K=s.measureText($.text).width,et=l.textAlign($.textAlign||($.textAlign=a.textAlign)),lt=k+m+K,rt=v.x,vt=v.y;l.setWidth(this.width),F?G>0&&rt+lt+f>this.right&&(vt=v.y+=V,v.line++,rt=v.x=Xt(r,this.left+f,this.right-i[v.line])):G>0&&vt+V>this.bottom&&(rt=v.x=rt+e[v.line].width+f,v.line++,vt=v.y=Xt(r,this.top+L+f,this.bottom-e[v.line].height));let st=l.x(rt);T(st,vt,$),rt=Ia(et,rt+k+m,F?rt+lt:this.right,t.rtl),I(l.x(rt),vt,$),F?v.x+=lt+f:v.y+=V}),yr(this.ctx,t.textDirection)}drawTitle(){let t=this.options,e=t.title,i=$t(e.font),s=Zt(e.padding);if(!e.display)return;let r=un(t.rtl,this.left,this.width),a=this.ctx,o=e.position,l=i.size/2,c=s.top+l,h,f=this.left,p=this.width;if(this.isHorizontal())p=Math.max(...this.lineWidths),h=this.top+c,f=Xt(t.align,f,this.right-p);else{let v=this.columnSizes.reduce((k,_)=>Math.max(k,_.height),0);h=c+Xt(t.align,this.top,this.bottom-v-t.labels.padding-this._computeTitleHeight())}let m=Xt(o,f,f+p);a.textAlign=r.textAlign(Ei(o)),a.textBaseline="middle",a.strokeStyle=e.color,a.fillStyle=e.color,a.font=i.string,Ke(a,e.text,m,h,i)}_computeTitleHeight(){let t=this.options.title,e=$t(t.font),i=Zt(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,r;if(t>=this.left&&t<=this.right&&e>=this.top&&e<=this.bottom){for(r=this.legendHitBoxes,i=0;i=s.left&&t<=s.left+s.width&&e>=s.top&&e<=s.top+s.height)return this.legendItems[i]}return null}handleEvent(t){let e=this.options;if(!vg(t.type,e))return;let i=this._getLegendItemAt(t.x,t.y);if(t.type==="mousemove"){let s=this._hoveredItem,r=_g(s,i);s&&!r&&Pt(e.onLeave,[t,s,this],this),this._hoveredItem=i,i&&!r&&Pt(e.onHover,[t,i,this],this)}else i&&Pt(e.onClick,[t,i,this],this)}};function vg(n,t){return!!(n==="mousemove"&&(t.onHover||t.onLeave)||t.onClick&&(n==="click"||n==="mouseup"))}var yg={id:"legend",_element:$r,start(n,t,e){let i=n.legend=new $r({ctx:n.ctx,options:e,chart:n});Qt.configure(n,i,e),Qt.addBox(n,i)},stop(n){Qt.removeBox(n,n.legend),delete n.legend},beforeUpdate(n,t,e){let i=n.legend;Qt.configure(n,i,e),i.options=e},afterUpdate(n){let t=n.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(n,t){t.replay||n.legend.handleEvent(t.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(n,t,e){let i=t.datasetIndex,s=e.chart;s.isDatasetVisible(i)?(s.hide(i),t.hidden=!0):(s.show(i),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:n=>n.chart.options.color,boxWidth:40,padding:10,generateLabels(n){let t=n.data.datasets,{labels:{usePointStyle:e,pointStyle:i,textAlign:s,color:r}}=n.legend.options;return n._getSortedDatasetMetas().map(a=>{let o=a.controller.getStyle(e?0:void 0),l=Zt(o.borderWidth);return{text:t[a.index].label,fillStyle:o.backgroundColor,fontColor:r,hidden:!a.visible,lineCap:o.borderCapStyle,lineDash:o.borderDash,lineDashOffset:o.borderDashOffset,lineJoin:o.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:o.borderColor,pointStyle:i||o.pointStyle,rotation:o.rotation,textAlign:s||o.textAlign,borderRadius:0,datasetIndex:a.index}},this)}},title:{color:n=>n.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:n=>!n.startsWith("on"),labels:{_scriptable:n=>!["generateLabels","filter","sort"].includes(n)}}},ss=class extends ve{constructor(t){super();this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){let i=this.options;if(this.left=0,this.top=0,!i.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=t,this.height=this.bottom=e;let s=Ot(i.text)?i.text.length:1;this._padding=Zt(i.padding);let r=s*$t(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=r:this.width=r}isHorizontal(){let t=this.options.position;return t==="top"||t==="bottom"}_drawArgs(t){let{top:e,left:i,bottom:s,right:r,options:a}=this,o=a.align,l=0,c,h,f;return this.isHorizontal()?(h=Xt(o,i,r),f=e+t,c=r-i):(a.position==="left"?(h=i+t,f=Xt(o,s,e),l=Et*-.5):(h=r-t,f=Xt(o,e,s),l=Et*.5),c=s-e),{titleX:h,titleY:f,maxWidth:c,rotation:l}}draw(){let t=this.ctx,e=this.options;if(!e.display)return;let i=$t(e.font),r=i.lineHeight/2+this._padding.top,{titleX:a,titleY:o,maxWidth:l,rotation:c}=this._drawArgs(r);Ke(t,e.text,0,0,i,{color:e.color,maxWidth:l,rotation:c,textAlign:Ei(e.align),textBaseline:"middle",translation:[a,o]})}};function xg(n,t){let e=new ss({ctx:n.ctx,options:t,chart:n});Qt.configure(n,e,t),Qt.addBox(n,e),n.titleBlock=e}var wg={id:"title",_element:ss,start(n,t,e){xg(n,e)},stop(n){let t=n.titleBlock;Qt.removeBox(n,t),delete n.titleBlock},beforeUpdate(n,t,e){let i=n.titleBlock;Qt.configure(n,i,e),i.options=e},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},rs=new WeakMap,kg={id:"subtitle",start(n,t,e){let i=new ss({ctx:n.ctx,options:e,chart:n});Qt.configure(n,i,e),Qt.addBox(n,i),rs.set(n,i)},stop(n){Qt.removeBox(n,rs.get(n)),rs.delete(n)},beforeUpdate(n,t,e){let i=rs.get(n);Qt.configure(n,i,e),i.options=e},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},gi={average(n){if(!n.length)return!1;let t,e,i=0,s=0,r=0;for(t=0,e=n.length;tAn error occured:

    "+this.options.escape(v.message+"",!0)+"
    ";throw v},k}();jt.options=new c,jt.simpleRenderers=[];var Gt=function(){function k(v,y){this.staticThis=v,this.links={},this.tokens=[],this.options=y||jt.options,this.setRules()}return k.lex=function(v,y,E,T){var P=new this(this,y);return P.getTokens(v,E,T)},k.getRulesBase=function(){if(this.rulesBase)return this.rulesBase;var v={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/,bullet:/(?:[*+-]|\d+\.)/,item:/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/};v.item=new t(v.item,"gm").setGroup(/bull/g,v.bullet).getRegexp(),v.list=new t(v.list).setGroup(/bull/g,v.bullet).setGroup("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))").setGroup("def","\\n+(?="+v.def.source+")").getRegexp();var y="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b";return v.html=new t(v.html).setGroup("comment",//).setGroup("closed",/<(tag)[\s\S]+?<\/\1>/).setGroup("closing",/])*?>/).setGroup(/tag/g,y).getRegexp(),v.paragraph=new t(v.paragraph).setGroup("hr",v.hr).setGroup("heading",v.heading).setGroup("lheading",v.lheading).setGroup("blockquote",v.blockquote).setGroup("tag","<"+y).setGroup("def",v.def).getRegexp(),this.rulesBase=v},k.getRulesGfm=function(){if(this.rulesGfm)return this.rulesGfm;var v=this.getRulesBase(),y=Object.assign(Object.assign({},v),{fences:/^ *(`{3,}|~{3,})[ \.]*((\S+)? *[^\n]*)\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),E=y.fences.source.replace("\\1","\\2"),T=v.list.source.replace("\\1","\\3");return y.paragraph=new t(v.paragraph).setGroup("(?!","(?!"+E+"|"+T+"|").getRegexp(),this.rulesGfm=y},k.getRulesTable=function(){return this.rulesTables?this.rulesTables:this.rulesTables=Object.assign(Object.assign({},this.getRulesGfm()),{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/})},k.prototype.setRules=function(){this.options.gfm?this.options.tables?this.rules=this.staticThis.getRulesTable():this.rules=this.staticThis.getRulesGfm():this.rules=this.staticThis.getRulesBase(),this.hasRulesGfm=this.rules.fences!==void 0,this.hasRulesTables=this.rules.table!==void 0},k.prototype.getTokens=function(v,y,E){var T=v,P;t:for(;T;){if((P=this.rules.newline.exec(T))&&(T=T.substring(P[0].length),P[0].length>1&&this.tokens.push({type:n.TokenType.space})),P=this.rules.code.exec(T)){T=T.substring(P[0].length);var U=P[0].replace(/^ {4}/gm,"");this.tokens.push({type:n.TokenType.code,text:this.options.pedantic?U:U.replace(/\n+$/,"")});continue}if(this.hasRulesGfm&&(P=this.rules.fences.exec(T))){T=T.substring(P[0].length),this.tokens.push({type:n.TokenType.code,meta:P[2],lang:P[3],text:P[4]||""});continue}if(P=this.rules.heading.exec(T)){T=T.substring(P[0].length),this.tokens.push({type:n.TokenType.heading,depth:P[1].length,text:P[2]});continue}if(y&&this.hasRulesTables&&(P=this.rules.nptable.exec(T))){T=T.substring(P[0].length);for(var V={type:n.TokenType.table,header:P[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:P[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:[]},X=0;X ?/gm,"");this.getTokens(vt),this.tokens.push({type:n.TokenType.blockquoteEnd});continue}if(P=this.rules.list.exec(T)){T=T.substring(P[0].length);var Lt=P[2];this.tokens.push({type:n.TokenType.listStart,ordered:Lt.length>1});for(var vt=P[0].match(this.rules.item),Ct=vt.length,It=!1,zt=void 0,se=void 0,ve=void 0,X=0;X1&&se.length>1)&&(T=vt.slice(X+1).join(` +`)+T,X=Ct-1)),ve=It||/\n\n(?!\s*$)/.test(V),X!==Ct-1&&(It=V.charAt(V.length-1)===` +`,ve||(ve=It)),this.tokens.push({type:ve?n.TokenType.looseItemStart:n.TokenType.listItemStart}),this.getTokens(V,!1,E),this.tokens.push({type:n.TokenType.listItemEnd})}this.tokens.push({type:n.TokenType.listEnd});continue}if(P=this.rules.html.exec(T)){T=T.substring(P[0].length);var de=P[1],fn=de==="pre"||de==="script"||de==="style";this.tokens.push({type:this.options.sanitize?n.TokenType.paragraph:n.TokenType.html,pre:!this.options.sanitizer&&fn,text:P[0]});continue}if(y&&(P=this.rules.def.exec(T))){T=T.substring(P[0].length),this.links[P[1].toLowerCase()]={href:P[2],title:P[3]};continue}if(y&&this.hasRulesTables&&(P=this.rules.table.exec(T))){T=T.substring(P[0].length);for(var V={type:n.TokenType.table,header:P[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:P[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:[]},X=0;X0?n.TokenType.paragraph:n.TokenType.text,text:P[1]});continue}if(P=this.rules.text.exec(T)){T=T.substring(P[0].length),this.tokens.push({type:n.TokenType.text,text:P[0]});continue}if(T)throw new Error("Infinite loop on byte: "+T.charCodeAt(0)+(", near text '"+T.slice(0,30)+"...'"))}return{tokens:this.tokens,links:this.links}},k}();Gt.simpleRules=[],Gt.rulesBase=null,Gt.rulesGfm=null,Gt.rulesTables=null,n.BlockLexer=Gt,n.ExtendRegexp=t,n.InlineLexer=$t,n.Marked=jt,n.MarkedOptions=c,n.Parser=Vt,n.Renderer=Bt,n.escape=o,n.unescape=l,Object.defineProperty(n,"__esModule",{value:!0})})});var xh=xr(Un=>{"use strict";var lv=Un&&Un.__extends||function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,s){i.__proto__=s}||function(i,s){for(var r in s)s.hasOwnProperty(r)&&(i[r]=s[r])},n(t,e)};return function(t,e){n(t,e);function i(){this.constructor=t}t.prototype=e===null?Object.create(e):(i.prototype=e.prototype,new i)}}();Object.defineProperty(Un,"__esModule",{value:!0});Un.Extractor=void 0;var Sa=yh(),cv=function(n){lv(t,n);function t(e,i){var s=n.call(this)||this;return s.lowercaseKeys=i??!1,s.reset(e),s}return Object.defineProperty(t.prototype,"tables",{get:function(){return this.extractedTables},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"objects",{get:function(){var e=this;return this.extractedTables.map(function(i){return t.tableToObject(i,e.lowercaseKeys)})},enumerable:!1,configurable:!0}),t.prototype.reset=function(e){e===void 0&&(e="rows"),this.mode=e,this.currentRow=[],this.currentTable=[],this.extractedTables=[]},t.prototype.table=function(e,i){return this.extractedTables.push(this.mode==="rows"?this.currentTable:t.transposeTable(this.currentTable)),this.currentTable=[],n.prototype.table.call(this,e,i)},t.prototype.tablerow=function(e){return this.currentTable.push(this.currentRow),this.currentRow=[],n.prototype.tablerow.call(this,e)},t.prototype.tablecell=function(e,i){return this.currentRow.push(e),n.prototype.tablecell.call(this,e,i)},t.transposeTable=function(e){for(var i=[],s=e.length,r=e[0].length,a=0;a0?r[0]:null},t.extractAllObjects=function(e,i,s){var r=t.createExtractor(e,i,s);return r.objects},t.extractTable=function(e,i,s){var r=t.extractAllTables(e,i,s);return r.length>0?r[0]:null},t.extractAllTables=function(e,i,s){var r=t.createExtractor(e,i,s);return r.tables},t.extract=function(e,i,s){var r=t.createExtractor(e,i,s);return r.objects.length>0?JSON.stringify(r.objects[0]):null},t.extractAll=function(e,i,s){var r=t.createExtractor(e,i,s);return r.objects.map(function(a){return JSON.stringify(a)})},t}(Sa.Renderer);Un.Extractor=cv});Kp(exports,{default:()=>Na});var Oe=De(require("obsidian"));var wr=function(){return typeof window=="undefined"?function(n){return n()}:window.requestAnimationFrame}();function kr(n,t,e){let i=e||(a=>Array.prototype.slice.call(a)),s=!1,r=[];return function(...a){r=i(a),s||(s=!0,wr.call(window,()=>{s=!1,n.apply(t,r)}))}}function rl(n,t){let e;return function(...i){return t?(clearTimeout(e),e=setTimeout(n,t,i)):n.apply(this,i),t}}var Qi=n=>n==="start"?"left":n==="end"?"right":"center",Jt=(n,t,e)=>n==="start"?t:n==="end"?e:(t+e)/2,al=(n,t,e,i)=>n===(i?"left":"right")?e:n==="center"?(t+e)/2:t;function Ae(){}var ol=function(){let n=0;return function(){return n++}}();function _t(n){return n===null||typeof n=="undefined"}function Ot(n){if(Array.isArray&&Array.isArray(n))return!0;let t=Object.prototype.toString.call(n);return t.substr(0,7)==="[object"&&t.substr(-6)==="Array]"}function pt(n){return n!==null&&Object.prototype.toString.call(n)==="[object Object]"}var Ft=n=>(typeof n=="number"||n instanceof Number)&&isFinite(+n);function ge(n,t){return Ft(n)?n:t}function at(n,t){return typeof n=="undefined"?t:n}var ll=(n,t)=>typeof n=="string"&&n.endsWith("%")?parseFloat(n)/100:n/t,Sr=(n,t)=>typeof n=="string"&&n.endsWith("%")?parseFloat(n)/100*t:+n;function Et(n,t,e){if(n&&typeof n.call=="function")return n.apply(e,t)}function Mt(n,t,e,i){let s,r,a;if(Ot(n))if(r=n.length,i)for(s=r-1;s>=0;s--)t.call(e,n[s],s);else for(s=0;se;)n=n[t.substr(e,i-e)],e=i+1,i=hl(t,e);return n}function es(n){return n.charAt(0).toUpperCase()+n.slice(1)}var me=n=>typeof n!="undefined",He=n=>typeof n=="function",Mr=(n,t)=>{if(n.size!==t.size)return!1;for(let e of n)if(!t.has(e))return!1;return!0};function ul(n){return n.type==="mouseup"||n.type==="click"||n.type==="contextmenu"}var At=Math.PI,Pt=2*At,ng=Pt+At,ns=Number.POSITIVE_INFINITY,ig=At/180,Rt=At/2,oi=At/4,fl=At*2/3,be=Math.log10,Me=Math.sign;function Cr(n){let t=Math.round(n);n=zn(n,t,n/1e3)?t:n;let e=Math.pow(10,Math.floor(be(n))),i=n/e;return(i<=1?1:i<=2?2:i<=5?5:10)*e}function dl(n){let t=[],e=Math.sqrt(n),i;for(i=1;is-r).pop(),t}function In(n){return!isNaN(parseFloat(n))&&isFinite(n)}function zn(n,t,e){return Math.abs(n-t)=n}function Tr(n,t,e){let i,s,r;for(i=0,s=n.length;il&&c=Math.min(t,e)-i&&n<=Math.max(t,e)+i}var rs=n=>n===0||n===1,ml=(n,t,e)=>-(Math.pow(2,10*(n-=1))*Math.sin((n-t)*Pt/e)),bl=(n,t,e)=>Math.pow(2,-10*n)*Math.sin((n-t)*Pt/e)+1,jn={linear:n=>n,easeInQuad:n=>n*n,easeOutQuad:n=>-n*(n-2),easeInOutQuad:n=>(n/=.5)<1?.5*n*n:-.5*(--n*(n-2)-1),easeInCubic:n=>n*n*n,easeOutCubic:n=>(n-=1)*n*n+1,easeInOutCubic:n=>(n/=.5)<1?.5*n*n*n:.5*((n-=2)*n*n+2),easeInQuart:n=>n*n*n*n,easeOutQuart:n=>-((n-=1)*n*n*n-1),easeInOutQuart:n=>(n/=.5)<1?.5*n*n*n*n:-.5*((n-=2)*n*n*n-2),easeInQuint:n=>n*n*n*n*n,easeOutQuint:n=>(n-=1)*n*n*n*n+1,easeInOutQuint:n=>(n/=.5)<1?.5*n*n*n*n*n:.5*((n-=2)*n*n*n*n+2),easeInSine:n=>-Math.cos(n*Rt)+1,easeOutSine:n=>Math.sin(n*Rt),easeInOutSine:n=>-.5*(Math.cos(At*n)-1),easeInExpo:n=>n===0?0:Math.pow(2,10*(n-1)),easeOutExpo:n=>n===1?1:-Math.pow(2,-10*n)+1,easeInOutExpo:n=>rs(n)?n:n<.5?.5*Math.pow(2,10*(n*2-1)):.5*(-Math.pow(2,-10*(n*2-1))+2),easeInCirc:n=>n>=1?n:-(Math.sqrt(1-n*n)-1),easeOutCirc:n=>Math.sqrt(1-(n-=1)*n),easeInOutCirc:n=>(n/=.5)<1?-.5*(Math.sqrt(1-n*n)-1):.5*(Math.sqrt(1-(n-=2)*n)+1),easeInElastic:n=>rs(n)?n:ml(n,.075,.3),easeOutElastic:n=>rs(n)?n:bl(n,.075,.3),easeInOutElastic(n){let t=.1125,e=.45;return rs(n)?n:n<.5?.5*ml(n*2,t,e):.5+.5*bl(n*2-1,t,e)},easeInBack(n){let t=1.70158;return n*n*((t+1)*n-t)},easeOutBack(n){let t=1.70158;return(n-=1)*n*((t+1)*n+t)+1},easeInOutBack(n){let t=1.70158;return(n/=.5)<1?.5*(n*n*(((t*=1.525)+1)*n-t)):.5*((n-=2)*n*(((t*=1.525)+1)*n+t)+2)},easeInBounce:n=>1-jn.easeOutBounce(1-n),easeOutBounce(n){let t=7.5625,e=2.75;return n<1/e?t*n*n:n<2/e?t*(n-=1.5/e)*n+.75:n<2.5/e?t*(n-=2.25/e)*n+.9375:t*(n-=2.625/e)*n+.984375},easeInOutBounce:n=>n<.5?jn.easeInBounce(n*2)*.5:jn.easeOutBounce(n*2-1)*.5+.5};var ye={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Er="0123456789ABCDEF",rg=n=>Er[n&15],ag=n=>Er[(n&240)>>4]+Er[n&15],as=n=>(n&240)>>4==(n&15);function og(n){return as(n.r)&&as(n.g)&&as(n.b)&&as(n.a)}function lg(n){var t=n.length,e;return n[0]==="#"&&(t===4||t===5?e={r:255&ye[n[1]]*17,g:255&ye[n[2]]*17,b:255&ye[n[3]]*17,a:t===5?ye[n[4]]*17:255}:(t===7||t===9)&&(e={r:ye[n[1]]<<4|ye[n[2]],g:ye[n[3]]<<4|ye[n[4]],b:ye[n[5]]<<4|ye[n[6]],a:t===9?ye[n[7]]<<4|ye[n[8]]:255})),e}function cg(n){var t=og(n)?rg:ag;return n&&"#"+t(n.r)+t(n.g)+t(n.b)+(n.a<255?t(n.a):"")}function li(n){return n+.5|0}var os=(n,t,e)=>Math.max(Math.min(n,e),t);function ci(n){return os(li(n*2.55),0,255)}function hi(n){return os(li(n*255),0,255)}function Dr(n){return os(li(n/2.55)/100,0,1)}function vl(n){return os(li(n*100),0,100)}var hg=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function ug(n){let t=hg.exec(n),e=255,i,s,r;if(!!t){if(t[7]!==i){let a=+t[7];e=255&(t[8]?ci(a):a*255)}return i=+t[1],s=+t[3],r=+t[5],i=255&(t[2]?ci(i):i),s=255&(t[4]?ci(s):s),r=255&(t[6]?ci(r):r),{r:i,g:s,b:r,a:e}}}function fg(n){return n&&(n.a<255?`rgba(${n.r}, ${n.g}, ${n.b}, ${Dr(n.a)})`:`rgb(${n.r}, ${n.g}, ${n.b})`)}var dg=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function _l(n,t,e){let i=t*Math.min(e,1-e),s=(r,a=(r+n/30)%12)=>e-i*Math.max(Math.min(a-3,9-a,1),-1);return[s(0),s(8),s(4)]}function pg(n,t,e){let i=(s,r=(s+n/60)%6)=>e-e*t*Math.max(Math.min(r,4-r,1),0);return[i(5),i(3),i(1)]}function gg(n,t,e){let i=_l(n,1,.5),s;for(t+e>1&&(s=1/(t+e),t*=s,e*=s),s=0;s<3;s++)i[s]*=1-t-e,i[s]+=t;return i}function Ar(n){let t=255,e=n.r/t,i=n.g/t,s=n.b/t,r=Math.max(e,i,s),a=Math.min(e,i,s),o=(r+a)/2,l,c,u;return r!==a&&(u=r-a,c=o>.5?u/(2-r-a):u/(r+a),l=r===e?(i-s)/u+(i>16&255,r>>8&255,r&255]}return n}var ls;function wg(n){ls||(ls=xg(),ls.transparent=[0,0,0,0]);let t=ls[n.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}function cs(n,t,e){if(n){let i=Ar(n);i[t]=Math.max(0,Math.min(i[t]+i[t]*e,t===0?360:1)),i=Rr(i),n.r=i[0],n.g=i[1],n.b=i[2]}}function kl(n,t){return n&&Object.assign(t||{},n)}function Sl(n){var t={r:0,g:0,b:0,a:255};return Array.isArray(n)?n.length>=3&&(t={r:n[0],g:n[1],b:n[2],a:255},n.length>3&&(t.a=hi(n[3]))):(t=kl(n,{r:0,g:0,b:0,a:1}),t.a=hi(t.a)),t}function kg(n){return n.charAt(0)==="r"?ug(n):vg(n)}var ui=class{constructor(t){if(t instanceof ui)return t;let e=typeof t,i;e==="object"?i=Sl(t):e==="string"&&(i=lg(t)||wg(t)||kg(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=kl(this._rgb);return t&&(t.a=Dr(t.a)),t}set rgb(t){this._rgb=Sl(t)}rgbString(){return this._valid?fg(this._rgb):this._rgb}hexString(){return this._valid?cg(this._rgb):this._rgb}hslString(){return this._valid?yg(this._rgb):this._rgb}mix(t,e){let i=this;if(t){let s=i.rgb,r=t.rgb,a,o=e===a?.5:e,l=2*o-1,c=s.a-r.a,u=((l*c==-1?l:(l+c)/(1+l*c))+1)/2;a=1-u,s.r=255&u*s.r+a*r.r+.5,s.g=255&u*s.g+a*r.g+.5,s.b=255&u*s.b+a*r.b+.5,s.a=o*s.a+(1-o)*r.a,i.rgb=s}return i}clone(){return new ui(this.rgb)}alpha(t){return this._rgb.a=hi(t),this}clearer(t){let e=this._rgb;return e.a*=1-t,this}greyscale(){let t=this._rgb,e=li(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=t.b=e,this}opaquer(t){let e=this._rgb;return e.a*=1+t,this}negate(){let t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return cs(this._rgb,2,t),this}darken(t){return cs(this._rgb,2,-t),this}saturate(t){return cs(this._rgb,1,t),this}desaturate(t){return cs(this._rgb,1,-t),this}rotate(t){return _g(this._rgb,t),this}};function Ml(n){return new ui(n)}var Cl=n=>n instanceof CanvasGradient||n instanceof CanvasPattern;function Fr(n){return Cl(n)?n:Ml(n)}function $r(n){return Cl(n)?n:Ml(n).saturate(.5).darken(.1).hexString()}var nn=Object.create(null),hs=Object.create(null);function fi(n,t){if(!t)return n;let e=t.split(".");for(let i=0,s=e.length;ie.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,i)=>$r(i.backgroundColor),this.hoverBorderColor=(e,i)=>$r(i.borderColor),this.hoverColor=(e,i)=>$r(i.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t)}set(t,e){return Ir(this,t,e)}get(t){return fi(this,t)}describe(t,e){return Ir(hs,t,e)}override(t,e){return Ir(nn,t,e)}route(t,e,i,s){let r=fi(this,t),a=fi(this,i),o="_"+e;Object.defineProperties(r,{[o]:{value:r[e],writable:!0},[e]:{enumerable:!0,get(){let l=this[o],c=a[s];return pt(l)?Object.assign({},c,l):at(l,c)},set(l){this[o]=l}}})}},dt=new Tl({_scriptable:n=>!n.startsWith("on"),_indexable:n=>n!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}});function Sg(n){return!n||_t(n.size)||_t(n.family)?null:(n.style?n.style+" ":"")+(n.weight?n.weight+" ":"")+n.size+"px "+n.family}function di(n,t,e,i,s){let r=t[s];return r||(r=t[s]=n.measureText(s).width,e.push(s)),r>i&&(i=r),i}function Pl(n,t,e,i){i=i||{};let s=i.data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==t&&(s=i.data={},r=i.garbageCollect=[],i.font=t),n.save(),n.font=t;let a=0,o=e.length,l,c,u,d,p;for(l=0;le.length){for(l=0;l0&&n.stroke()}}function rn(n,t,e){return e=e||.5,!t||n&&n.x>t.left-e&&n.xt.top-e&&n.y0&&r.strokeColor!=="",l,c;for(n.save(),n.font=s.string,Mg(n,r),l=0;l+n||0;function us(n,t){let e={},i=pt(t),s=i?Object.keys(t):t,r=pt(n)?i?a=>at(n[a],n[t[a]]):a=>n[a]:()=>n;for(let a of s)e[a]=Eg(r(a));return e}function Br(n){return us(n,{top:"y",right:"x",bottom:"y",left:"x"})}function bn(n){return us(n,["topLeft","topRight","bottomLeft","bottomRight"])}function Qt(n){let t=Br(n);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function Ht(n,t){n=n||{},t=t||dt.font;let e=at(n.size,t.size);typeof e=="string"&&(e=parseInt(e,10));let i=at(n.style,t.style);i&&!(""+i).match(Pg)&&(console.warn('Invalid font style specified: "'+i+'"'),i="");let s={family:at(n.family,t.family),lineHeight:Og(at(n.lineHeight,t.lineHeight),e),size:e,style:i,weight:at(n.weight,t.weight),string:""};return s.string=Sg(s),s}function Nn(n,t,e,i){let s=!0,r,a,o;for(r=0,a=n.length;re&&o===0?0:o+l;return{min:a(i,-Math.abs(r)),max:a(s,r)}}function Ve(n,t){return Object.assign(Object.create(n),t)}function fs(n,t,e){e=e||(a=>n[a]1;)r=s+i>>1,e(r)?s=r:i=r;return{lo:s,hi:i}}var Re=(n,t,e)=>fs(n,e,i=>n[i][t]fs(n,e,i=>n[i][t]>=e);function Ll(n,t,e){let i=0,s=n.length;for(;ii&&n[s-1]>e;)s--;return i>0||s{let i="_onData"+es(e),s=n[e];Object.defineProperty(n,e,{configurable:!0,enumerable:!1,value(...r){let a=s.apply(this,r);return n._chartjs.listeners.forEach(o=>{typeof o[i]=="function"&&o[i](...r)}),a}})})}function jr(n,t){let e=n._chartjs;if(!e)return;let i=e.listeners,s=i.indexOf(t);s!==-1&&i.splice(s,1),!(i.length>0)&&(Rl.forEach(r=>{delete n[r]}),delete n._chartjs)}function Nr(n){let t=new Set,e,i;for(e=0,i=n.length;en[0]){me(i)||(i=Bl("_fallback",n));let r={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:n,_rootScopes:e,_fallback:i,_getTarget:s,override:a=>ds([a,...n],t,e,i)};return new Proxy(r,{deleteProperty(a,o){return delete a[o],delete a._keys,delete n[0][o],!0},get(a,o){return $l(a,o,()=>zg(o,t,n,a))},getOwnPropertyDescriptor(a,o){return Reflect.getOwnPropertyDescriptor(a._scopes[0],o)},getPrototypeOf(){return Reflect.getPrototypeOf(n[0])},has(a,o){return jl(a).includes(o)},ownKeys(a){return jl(a)},set(a,o,l){let c=a._storage||(a._storage=s());return a[o]=c[o]=l,delete a._keys,!0}})}function vn(n,t,e,i){let s={_cacheable:!1,_proxy:n,_context:t,_subProxy:e,_stack:new Set,_descriptors:Hr(n,i),setContext:r=>vn(n,r,e,i),override:r=>vn(n.override(r),t,e,i)};return new Proxy(s,{deleteProperty(r,a){return delete r[a],delete n[a],!0},get(r,a,o){return $l(r,a,()=>Ag(r,a,o))},getOwnPropertyDescriptor(r,a){return r._descriptors.allKeys?Reflect.has(n,a)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(n,a)},getPrototypeOf(){return Reflect.getPrototypeOf(n)},has(r,a){return Reflect.has(n,a)},ownKeys(){return Reflect.ownKeys(n)},set(r,a,o){return n[a]=o,delete r[a],!0}})}function Hr(n,t={scriptable:!0,indexable:!0}){let{_scriptable:e=t.scriptable,_indexable:i=t.indexable,_allKeys:s=t.allKeys}=n;return{allKeys:s,scriptable:e,indexable:i,isScriptable:He(e)?e:()=>e,isIndexable:He(i)?i:()=>i}}var Dg=(n,t)=>n?n+es(t):t,Vr=(n,t)=>pt(t)&&n!=="adapters"&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function $l(n,t,e){if(Object.prototype.hasOwnProperty.call(n,t))return n[t];let i=e();return n[t]=i,i}function Ag(n,t,e){let{_proxy:i,_context:s,_subProxy:r,_descriptors:a}=n,o=i[t];return He(o)&&a.isScriptable(t)&&(o=Lg(t,o,n,e)),Ot(o)&&o.length&&(o=Rg(t,o,n,a.isIndexable)),Vr(t,o)&&(o=vn(o,s,r&&r[t],a)),o}function Lg(n,t,e,i){let{_proxy:s,_context:r,_subProxy:a,_stack:o}=e;if(o.has(n))throw new Error("Recursion detected: "+Array.from(o).join("->")+"->"+n);return o.add(n),t=t(r,a||i),o.delete(n),Vr(n,t)&&(t=Wr(s._scopes,s,n,t)),t}function Rg(n,t,e,i){let{_proxy:s,_context:r,_subProxy:a,_descriptors:o}=e;if(me(r.index)&&i(n))t=t[r.index%t.length];else if(pt(t[0])){let l=t,c=s._scopes.filter(u=>u!==l);t=[];for(let u of l){let d=Wr(c,s,n,u);t.push(vn(d,r,a&&a[n],o))}}return t}function Il(n,t,e){return He(n)?n(t,e):n}var Fg=(n,t)=>n===!0?t:typeof n=="string"?en(t,n):void 0;function $g(n,t,e,i,s){for(let r of t){let a=Fg(e,r);if(a){n.add(a);let o=Il(a._fallback,e,s);if(me(o)&&o!==e&&o!==i)return o}else if(a===!1&&me(i)&&e!==i)return null}return!1}function Wr(n,t,e,i){let s=t._rootScopes,r=Il(t._fallback,e,i),a=[...n,...s],o=new Set;o.add(i);let l=zl(o,a,e,r||e,i);return l===null||me(r)&&r!==e&&(l=zl(o,a,r,l,i),l===null)?!1:ds(Array.from(o),[""],s,r,()=>Ig(t,e,i))}function zl(n,t,e,i,s){for(;e;)e=$g(n,t,e,i,s);return e}function Ig(n,t,e){let i=n._getTarget();t in i||(i[t]={});let s=i[t];return Ot(s)&&pt(e)?e:s}function zg(n,t,e,i){let s;for(let r of t)if(s=Bl(Dg(r,n),e),me(s))return Vr(n,s)?Wr(e,i,n,s):s}function Bl(n,t){for(let e of t){if(!e)continue;let i=e[n];if(me(i))return i}}function jl(n){let t=n._keys;return t||(t=n._keys=Bg(n._scopes)),t}function Bg(n){let t=new Set;for(let e of n)for(let i of Object.keys(e).filter(s=>!s.startsWith("_")))t.add(i);return Array.from(t)}var jg=Number.EPSILON||1e-14,Hn=(n,t)=>tn==="x"?"y":"x";function Ng(n,t,e,i){let s=n.skip?t:n,r=t,a=e.skip?t:e,o=ss(r,s),l=ss(a,r),c=o/(o+l),u=l/(o+l);c=isNaN(c)?0:c,u=isNaN(u)?0:u;let d=i*c,p=i*u;return{previous:{x:r.x-d*(a.x-s.x),y:r.y-d*(a.y-s.y)},next:{x:r.x+p*(a.x-s.x),y:r.y+p*(a.y-s.y)}}}function Hg(n,t,e){let i=n.length,s,r,a,o,l,c=Hn(n,0);for(let u=0;u!c.skip)),t.cubicInterpolationMode==="monotone")Wg(n,s);else{let c=i?n[n.length-1]:n[0];for(r=0,a=n.length;rwindow.getComputedStyle(n,null);function Gg(n,t){return bs(n).getPropertyValue(t)}var qg=["top","right","bottom","left"];function _n(n,t,e){let i={};e=e?"-"+e:"";for(let s=0;s<4;s++){let r=qg[s];i[r]=parseFloat(n[t+"-"+r+e])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}var Ug=(n,t,e)=>(n>0||t>0)&&(!e||!e.shadowRoot);function Xg(n,t){let e=n.native||n,i=e.touches,s=i&&i.length?i[0]:e,{offsetX:r,offsetY:a}=s,o=!1,l,c;if(Ug(r,a,e.target))l=r,c=a;else{let u=t.getBoundingClientRect();l=s.clientX-u.left,c=s.clientY-u.top,o=!0}return{x:l,y:c,box:o}}function Gr(n,t){let{canvas:e,currentDevicePixelRatio:i}=t,s=bs(e),r=s.boxSizing==="border-box",a=_n(s,"padding"),o=_n(s,"border","width"),{x:l,y:c,box:u}=Xg(n,e),d=a.left+(u&&o.left),p=a.top+(u&&o.top),{width:m,height:b}=t;return r&&(m-=a.width+o.width,b-=a.height+o.height),{x:Math.round((l-d)/m*e.width/i),y:Math.round((c-p)/b*e.height/i)}}function Kg(n,t,e){let i,s;if(t===void 0||e===void 0){let r=gs(n);if(!r)t=n.clientWidth,e=n.clientHeight;else{let a=r.getBoundingClientRect(),o=bs(r),l=_n(o,"border","width"),c=_n(o,"padding");t=a.width-c.width-l.width,e=a.height-c.height-l.height,i=ms(o.maxWidth,r,"clientWidth"),s=ms(o.maxHeight,r,"clientHeight")}}return{width:t,height:e,maxWidth:i||ns,maxHeight:s||ns}}var qr=n=>Math.round(n*10)/10;function Vl(n,t,e,i){let s=bs(n),r=_n(s,"margin"),a=ms(s.maxWidth,n,"clientWidth")||ns,o=ms(s.maxHeight,n,"clientHeight")||ns,l=Kg(n,t,e),{width:c,height:u}=l;if(s.boxSizing==="content-box"){let d=_n(s,"border","width"),p=_n(s,"padding");c-=p.width+d.width,u-=p.height+d.height}return c=Math.max(0,c-r.width),u=Math.max(0,i?Math.floor(c/i):u-r.height),c=qr(Math.min(c,a,l.maxWidth)),u=qr(Math.min(u,o,l.maxHeight)),c&&!u&&(u=qr(c/2)),{width:c,height:u}}function Ur(n,t,e){let i=t||1,s=Math.floor(n.height*i),r=Math.floor(n.width*i);n.height=s/i,n.width=r/i;let a=n.canvas;return a.style&&(e||!a.style.height&&!a.style.width)&&(a.style.height=`${n.height}px`,a.style.width=`${n.width}px`),n.currentDevicePixelRatio!==i||a.height!==s||a.width!==r?(n.currentDevicePixelRatio=i,a.height=s,a.width=r,n.ctx.setTransform(i,0,0,i,0,0),!0):!1}var Wl=function(){let n=!1;try{let t={get passive(){return n=!0,!1}};window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(t){}return n}();function Xr(n,t){let e=Gg(n,t),i=e&&e.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function on(n,t,e,i){return{x:n.x+e*(t.x-n.x),y:n.y+e*(t.y-n.y)}}function Yl(n,t,e,i){return{x:n.x+e*(t.x-n.x),y:i==="middle"?e<.5?n.y:t.y:i==="after"?e<1?n.y:t.y:e>0?t.y:n.y}}function Gl(n,t,e,i){let s={x:n.cp2x,y:n.cp2y},r={x:t.cp1x,y:t.cp1y},a=on(n,s,e),o=on(s,r,e),l=on(r,t,e),c=on(a,o,e),u=on(o,l,e);return on(c,u,e)}var ql=new Map;function Zg(n,t){t=t||{};let e=n+JSON.stringify(t),i=ql.get(e);return i||(i=new Intl.NumberFormat(n,t),ql.set(e,i)),i}function Vn(n,t,e){return Zg(t,e).format(n)}var Jg=function(n,t){return{x(e){return n+n+t-e},setWidth(e){t=e},textAlign(e){return e==="center"?e:e==="right"?"left":"right"},xPlus(e,i){return e-i},leftForLtr(e,i){return e-i}}},Qg=function(){return{x(n){return n},setWidth(n){},textAlign(n){return n},xPlus(n,t){return n+t},leftForLtr(n,t){return n}}};function yn(n,t,e){return n?Jg(t,e):Qg()}function Kr(n,t){let e,i;(t==="ltr"||t==="rtl")&&(e=n.canvas.style,i=[e.getPropertyValue("direction"),e.getPropertyPriority("direction")],e.setProperty("direction",t,"important"),n.prevTextDirection=i)}function Zr(n,t){t!==void 0&&(delete n.prevTextDirection,n.canvas.style.setProperty("direction",t[0],t[1]))}function Ul(n){return n==="angle"?{between:Bn,compare:sg,normalize:ae}:{between:Le,compare:(t,e)=>t-e,normalize:t=>t}}function Xl({start:n,end:t,count:e,loop:i,style:s}){return{start:n%e,end:t%e,loop:i&&(t-n+1)%e==0,style:s}}function tm(n,t,e){let{property:i,start:s,end:r}=e,{between:a,normalize:o}=Ul(i),l=t.length,{start:c,end:u,loop:d}=n,p,m;if(d){for(c+=l,u+=l,p=0,m=l;pl(s,I,A)&&o(s,I)!==0,F=()=>o(r,A)===0||l(r,I,A),B=()=>x||L(),H=()=>!x||F();for(let G=u,Z=u;G<=d;++G)R=t[G%a],!R.skip&&(A=c(R[i]),A!==I&&(x=l(A,s,r),M===null&&B()&&(M=o(A,s)===0?G:Z),M!==null&&H()&&(b.push(Xl({start:M,end:G,loop:p,count:a,style:m})),M=null),Z=G,I=A));return M!==null&&b.push(Xl({start:M,end:d,loop:p,count:a,style:m})),b}function Qr(n,t){let e=[],i=n.segments;for(let s=0;ss&&n[r%t].skip;)r--;return r%=t,{start:s,end:r}}function nm(n,t,e,i){let s=n.length,r=[],a=t,o=n[t],l;for(l=t+1;l<=e;++l){let c=n[l%s];c.skip||c.stop?o.skip||(i=!1,r.push({start:t%s,end:(l-1)%s,loop:i}),t=a=c.stop?l:null):(a=l,o.skip&&(t=l)),o=c}return a!==null&&r.push({start:t%s,end:a%s,loop:i}),r}function Kl(n,t){let e=n.points,i=n.options.spanGaps,s=e.length;if(!s)return[];let r=!!n._loop,{start:a,end:o}=em(e,s,r,i);if(i===!0)return Zl(n,[{start:a,end:o,loop:r}],e,t);let l=oo({chart:t,initial:e.initial,numSteps:a,currentStep:Math.min(i-e.start,a)}))}_refresh(){this._request||(this._running=!0,this._request=wr.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((i,s)=>{if(!i.running||!i.items.length)return;let r=i.items,a=r.length-1,o=!1,l;for(;a>=0;--a)l=r[a],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(t),o=!0):(r[a]=r[r.length-1],r.pop());o&&(s.draw(),this._notify(s,i,t,"progress")),r.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=r.length}),this._lastDate=t,e===0&&(this._running=!1)}_getAnims(t){let e=this._charts,i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){!e||!e.length||this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){let e=this._charts.get(t);!e||(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((i,s)=>Math.max(i,s._duration),0),this._refresh())}running(t){if(!this._running)return!1;let e=this._charts.get(t);return!(!e||!e.running||!e.items.length)}stop(t){let e=this._charts.get(t);if(!e||!e.items.length)return;let i=e.items,s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}},We=new Ql,tc="transparent",rm={boolean(n,t,e){return e>.5?t:n},color(n,t,e){let i=Fr(n||tc),s=i.valid&&Fr(t||tc);return s&&s.valid?s.mix(i,e).hexString():t},number(n,t,e){return n+(t-n)*e}},ec=class{constructor(t,e,i,s){let r=e[i];s=Nn([t.to,s,r,t.from]);let a=Nn([t.from,r,s]);this._active=!0,this._fn=t.fn||rm[t.type||typeof a],this._easing=jn[t.easing]||jn.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=a,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);let s=this._target[this._prop],r=i-this._start,a=this._duration-r;this._start=i,this._duration=Math.floor(Math.max(a,t.duration)),this._total+=r,this._loop=!!t.loop,this._to=Nn([t.to,e,s,t.from]),this._from=Nn([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){let e=t-this._start,i=this._duration,s=this._prop,r=this._from,a=this._loop,o=this._to,l;if(this._active=r!==o&&(a||e1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[s]=this._fn(r,o,l)}wait(){let t=this._promises||(this._promises=[]);return new Promise((e,i)=>{t.push({res:e,rej:i})})}_notify(t){let e=t?"res":"rej",i=this._promises||[];for(let s=0;sn!=="onProgress"&&n!=="onComplete"&&n!=="fn"});dt.set("animations",{colors:{type:"color",properties:om},numbers:{type:"number",properties:am}});dt.describe("animations",{_fallback:"animation"});dt.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:n=>n|0}}}});var ta=class{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!pt(t))return;let e=this._properties;Object.getOwnPropertyNames(t).forEach(i=>{let s=t[i];if(!pt(s))return;let r={};for(let a of lm)r[a]=s[a];(Ot(s.properties)&&s.properties||[i]).forEach(a=>{(a===i||!e.has(a))&&e.set(a,r)})})}_animateOptions(t,e){let i=e.options,s=hm(t,i);if(!s)return[];let r=this._createAnimations(s,i);return i.$shared&&cm(t.options.$animations,i).then(()=>{t.options=i},()=>{}),r}_createAnimations(t,e){let i=this._properties,s=[],r=t.$animations||(t.$animations={}),a=Object.keys(e),o=Date.now(),l;for(l=a.length-1;l>=0;--l){let c=a[l];if(c.charAt(0)==="$")continue;if(c==="options"){s.push(...this._animateOptions(t,e));continue}let u=e[c],d=r[c],p=i.get(c);if(d)if(p&&d.active()){d.update(p,u,o);continue}else d.cancel();if(!p||!p.duration){t[c]=u;continue}r[c]=d=new ec(p,t,c,u),s.push(d)}return s}update(t,e){if(this._properties.size===0){Object.assign(t,e);return}let i=this._createAnimations(t,e);if(i.length)return We.add(this._chart,i),!0}};function cm(n,t){let e=[],i=Object.keys(t);for(let s=0;s0||!e&&r<0)return s.index}return null}function oc(n,t){let{chart:e,_cachedMeta:i}=n,s=e._stacks||(e._stacks={}),{iScale:r,vScale:a,index:o}=i,l=r.axis,c=a.axis,u=pm(r,a,i),d=t.length,p;for(let m=0;me[i].axis===t).shift()}function bm(n,t){return Ve(n,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function vm(n,t,e){return Ve(n,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:e,index:t,mode:"default",type:"data"})}function vi(n,t){let e=n.controller.index,i=n.vScale&&n.vScale.axis;if(!!i){t=t||n._parsed;for(let s of t){let r=s._stacks;if(!r||r[i]===void 0||r[i][e]===void 0)return;delete r[i][e]}}}var na=n=>n==="reset"||n==="none",lc=(n,t)=>t?n:Object.assign({},n),_m=(n,t,e)=>n&&!t.hidden&&t._stacked&&{keys:ic(e,!0),values:null},Ce=class{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){let t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=rc(t.vScale,t),this.addElements()}updateIndex(t){this.index!==t&&vi(this._cachedMeta),this.index=t}linkScales(){let t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(d,p,m,b)=>d==="x"?p:d==="r"?b:m,r=e.xAxisID=at(i.xAxisID,ea(t,"x")),a=e.yAxisID=at(i.yAxisID,ea(t,"y")),o=e.rAxisID=at(i.rAxisID,ea(t,"r")),l=e.indexAxis,c=e.iAxisID=s(l,r,a,o),u=e.vAxisID=s(l,a,r,o);e.xScale=this.getScaleForId(r),e.yScale=this.getScaleForId(a),e.rScale=this.getScaleForId(o),e.iScale=this.getScaleForId(c),e.vScale=this.getScaleForId(u)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){let e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){let t=this._cachedMeta;this._data&&jr(this._data,this),t._stacked&&vi(t)}_dataCheck(){let t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(pt(e))this._data=dm(e);else if(i!==e){if(i){jr(i,this);let s=this._cachedMeta;vi(s),s._parsed=[]}e&&Object.isExtensible(e)&&Fl(e,this),this._syncList=[],this._data=e}}addElements(){let t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){let e=this._cachedMeta,i=this.getDataset(),s=!1;this._dataCheck();let r=e._stacked;e._stacked=rc(e.vScale,e),e.stack!==i.stack&&(s=!0,vi(e),e.stack=i.stack),this._resyncElements(t),(s||r!==e._stacked)&&oc(this,e._parsed)}configure(){let t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){let{_cachedMeta:i,_data:s}=this,{iScale:r,_stacked:a}=i,o=r.axis,l=t===0&&e===s.length?!0:i._sorted,c=t>0&&i._parsed[t-1],u,d,p;if(this._parsing===!1)i._parsed=s,i._sorted=!0,p=s;else{Ot(s[t])?p=this.parseArrayData(i,s,t,e):pt(s[t])?p=this.parseObjectData(i,s,t,e):p=this.parsePrimitiveData(i,s,t,e);let m=()=>d[o]===null||c&&d[o]x||d=0;--p)if(!b()){this.updateRangeFromParsed(c,t,m,l);break}}return c}getAllParsedValues(t){let e=this._cachedMeta._parsed,i=[],s,r,a;for(s=0,r=e.length;s=0&&tthis.getContext(i,s),x=c.resolveNamedOptions(p,m,b,d);return x.$shared&&(x.$shared=l,r[a]=Object.freeze(lc(x,l))),x}_resolveAnimations(t,e,i){let s=this.chart,r=this._cachedDataOpts,a=`animation-${e}`,o=r[a];if(o)return o;let l;if(s.options.animation!==!1){let u=this.chart.config,d=u.datasetAnimationScopeKeys(this._type,e),p=u.getOptionScopes(this.getDataset(),d);l=u.createResolver(p,this.getContext(t,i,e))}let c=new ta(s,l&&l.animations);return l&&l._cacheable&&(r[a]=Object.freeze(c)),c}getSharedOptions(t){if(!!t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||na(t)||this.chart._animationsDisabled}updateElement(t,e,i,s){na(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!na(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;let r=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(r)||r})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){let e=this._data,i=this._cachedMeta.data;for(let[o,l,c]of this._syncList)this[o](l,c);this._syncList=[];let s=i.length,r=e.length,a=Math.min(r,s);a&&this.parse(0,a),r>s?this._insertElements(s,r-s,t):r{for(c.length+=e,o=c.length-1;o>=a;o--)c[o]=c[o-e]};for(l(r),o=t;os-r))}return n._cache.$bar}function xm(n){let t=n.iScale,e=ym(t,n.type),i=t._length,s,r,a,o,l=()=>{a===32767||a===-32768||(me(o)&&(i=Math.min(i,Math.abs(a-o)||i)),o=a)};for(s=0,r=e.length;s0?s[n-1]:null,o=nMath.abs(o)&&(l=o,c=a),t[e.axis]=c,t._custom={barStart:l,barEnd:c,start:s,end:r,min:a,max:o}}function cc(n,t,e,i){return Ot(n)?Sm(n,t,e,i):t[e.axis]=e.parse(n,i),t}function hc(n,t,e,i){let s=n.iScale,r=n.vScale,a=s.getLabels(),o=s===r,l=[],c,u,d,p;for(c=e,u=e+i;c=e?1:-1)}function Cm(n){let t,e,i,s,r;return n.horizontal?(t=n.base>n.x,e="left",i="right"):(t=n.base=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){let e=this._cachedMeta,{xScale:i,yScale:s}=e,r=this.getParsed(t),a=i.getLabelForValue(r.x),o=s.getLabelForValue(r.y),l=r._custom;return{label:e.label,value:"("+a+", "+o+(l?", "+l:"")+")"}}update(t){let e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){let r=s==="reset",{iScale:a,vScale:o}=this._cachedMeta,l=this.resolveDataElementOptions(e,s),c=this.getSharedOptions(l),u=this.includeOptions(s,c),d=a.axis,p=o.axis;for(let m=e;mBn(I,o,l,!0)?1:Math.max(L,L*e,F,F*e),b=(I,L,F)=>Bn(I,o,l,!0)?-1:Math.min(L,L*e,F,F*e),x=m(0,c,d),M=m(Rt,u,p),A=b(At,c,d),R=b(At+Rt,u,p);i=(x-A)/2,s=(M-R)/2,r=-(x+A)/2,a=-(M+R)/2}return{ratioX:i,ratioY:s,offsetX:r,offsetY:a}}var xn=class extends Ce{constructor(t,e){super(t,e);this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){let i=this.getDataset().data,s=this._cachedMeta;if(this._parsing===!1)s._parsed=i;else{let r=l=>+i[l];if(pt(i[t])){let{key:l="value"}=this._parsing;r=c=>+en(i[c],l)}let a,o;for(a=t,o=t+e;a0&&!isNaN(t)?Pt*(Math.abs(t)/e):0}getLabelAndValue(t){let e=this._cachedMeta,i=this.chart,s=i.data.labels||[],r=Vn(e._parsed[t],i.options.locale);return{label:s[t]||"",value:r}}getMaxBorderWidth(t){let e=0,i=this.chart,s,r,a,o,l;if(!t){for(s=0,r=i.data.datasets.length;sn!=="spacing",_indexable:n=>n!=="spacing"};xn.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(n){let t=n.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:e}}=n.legend.options;return t.labels.map((i,s)=>{let a=n.getDatasetMeta(0).controller.getStyle(s);return{text:i,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,lineWidth:a.borderWidth,pointStyle:e,hidden:!n.getDataVisibility(s),index:s}})}return[]}},onClick(n,t,e){e.chart.toggleDataVisibility(t.index),e.chart.update()}},tooltip:{callbacks:{title(){return""},label(n){let t=n.label,e=": "+n.formattedValue;return Ot(t)?(t=t.slice(),t[0]+=e):t+=e,t}}}}};var Wn=class extends Ce{initialize(){this.enableOptionSharing=!0,super.initialize()}update(t){let e=this._cachedMeta,{dataset:i,data:s=[],_dataset:r}=e,a=this.chart._animationsDisabled,{start:o,count:l}=Dm(e,s,a);this._drawStart=o,this._drawCount=l,Am(e)&&(o=0,l=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!r._decimated,i.points=s;let c=this.resolveDatasetElementOptions(t);this.options.showLine||(c.borderWidth=0),c.segment=this.options.segment,this.updateElement(i,void 0,{animated:!a,options:c},t),this.updateElements(s,o,l,t)}updateElements(t,e,i,s){let r=s==="reset",{iScale:a,vScale:o,_stacked:l,_dataset:c}=this._cachedMeta,u=this.resolveDataElementOptions(e,s),d=this.getSharedOptions(u),p=this.includeOptions(s,d),m=a.axis,b=o.axis,{spanGaps:x,segment:M}=this.options,A=In(x)?x:Number.POSITIVE_INFINITY,R=this.chart._animationsDisabled||r||s==="none",I=e>0&&this.getParsed(e-1);for(let L=e;L0&&B[m]-I[m]>A,M&&(H.parsed=B,H.raw=c.data[L]),p&&(H.options=d||this.resolveDataElementOptions(L,F.active?"active":s)),R||this.updateElement(F,L,H,s),I=B}this.updateSharedOptions(d,s,u)}getMaxOverflow(){let t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;let r=s[0].size(this.resolveDataElementOptions(0)),a=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,r,a)/2}draw(){let t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}};Wn.id="line";Wn.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};Wn.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};function Dm(n,t,e){let i=t.length,s=0,r=i;if(n._sorted){let{iScale:a,_parsed:o}=n,l=a.axis,{min:c,max:u,minDefined:d,maxDefined:p}=a.getUserBounds();d&&(s=Wt(Math.min(Re(o,a.axis,c).lo,e?i:Re(t,l,a.getPixelForValue(c)).lo),0,i-1)),p?r=Wt(Math.max(Re(o,a.axis,u).hi+1,e?0:Re(t,l,a.getPixelForValue(u)).hi+1),s,i)-s:r=i-s}return{start:s,count:r}}function Am(n){let{xScale:t,yScale:e,_scaleRanges:i}=n,s={xmin:t.min,xmax:t.max,ymin:e.min,ymax:e.max};if(!i)return n._scaleRanges=s,!0;let r=i.xmin!==t.min||i.xmax!==t.max||i.ymin!==e.min||i.ymax!==e.max;return Object.assign(i,s),r}var xi=class extends Ce{constructor(t,e){super(t,e);this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){let e=this._cachedMeta,i=this.chart,s=i.data.labels||[],r=Vn(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:r}}update(t){let e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}_updateRadius(){let t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),r=Math.max(s/2,0),a=Math.max(i.cutoutPercentage?r/100*i.cutoutPercentage:1,0),o=(r-a)/t.getVisibleDatasetCount();this.outerRadius=r-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){let r=s==="reset",a=this.chart,o=this.getDataset(),c=a.options.animation,u=this._cachedMeta.rScale,d=u.xCenter,p=u.yCenter,m=u.getIndexAngle(0)-.5*At,b=m,x,M=360/this.countVisibleElements();for(x=0;x{!isNaN(t.data[r])&&this.chart.getDataVisibility(r)&&i++}),i}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?_e(this.resolveDataElementOptions(t,e).angle||i):0}};xi.id="polarArea";xi.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};xi.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(n){let t=n.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:e}}=n.legend.options;return t.labels.map((i,s)=>{let a=n.getDatasetMeta(0).controller.getStyle(s);return{text:i,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,lineWidth:a.borderWidth,pointStyle:e,hidden:!n.getDataVisibility(s),index:s}})}return[]}},onClick(n,t,e){e.chart.toggleDataVisibility(t.index),e.chart.update()}},tooltip:{callbacks:{title(){return""},label(n){return n.chart.data.labels[n.dataIndex]+": "+n.formattedValue}}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};var vs=class extends xn{};vs.id="pie";vs.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};var wi=class extends Ce{getLabelAndValue(t){let e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}update(t){let e=this._cachedMeta,i=e.dataset,s=e.data||[],r=e.iScale.getLabels();if(i.points=s,t!=="resize"){let a=this.resolveDatasetElementOptions(t);this.options.showLine||(a.borderWidth=0);let o={_loop:!0,_fullLoop:r.length===s.length,options:a};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){let r=this.getDataset(),a=this._cachedMeta.rScale,o=s==="reset";for(let l=e;l{c[o](s[a],i)&&r.push({element:c,datasetIndex:u,index:d}),c.inRange(s.x,s.y,i)&&(l=!0)}),e.intersect&&!l?[]:r}var Bm={modes:{index(n,t,e,i){let s=Si(t,n),r=e.axis||"x",a=e.intersect?aa(n,s,r,i):oa(n,s,r,!1,i),o=[];return a.length?(n.getSortedVisibleDatasetMetas().forEach(l=>{let c=a[0].index,u=l.data[c];u&&!u.skip&&o.push({element:u,datasetIndex:l.index,index:c})}),o):[]},dataset(n,t,e,i){let s=Si(t,n),r=e.axis||"xy",a=e.intersect?aa(n,s,r,i):oa(n,s,r,!1,i);if(a.length>0){let o=a[0].datasetIndex,l=n.getDatasetMeta(o).data;a=[];for(let c=0;ce.pos===t)}function gc(n,t){return n.filter(e=>pc.indexOf(e.pos)===-1&&e.box.axis===t)}function Ci(n,t){return n.sort((e,i)=>{let s=t?i:e,r=t?e:i;return s.weight===r.weight?s.index-r.index:s.weight-r.weight})}function jm(n){let t=[],e,i,s,r,a,o;for(e=0,i=(n||[]).length;ec.box.fullSize),!0),i=Ci(Mi(t,"left"),!0),s=Ci(Mi(t,"right")),r=Ci(Mi(t,"top"),!0),a=Ci(Mi(t,"bottom")),o=gc(t,"x"),l=gc(t,"y");return{fullSize:e,leftAndTop:i.concat(r),rightAndBottom:s.concat(l).concat(a).concat(o),chartArea:Mi(t,"chartArea"),vertical:i.concat(s).concat(l),horizontal:r.concat(a).concat(o)}}function mc(n,t,e,i){return Math.max(n[e],t[e])+Math.max(n[i],t[i])}function bc(n,t){n.top=Math.max(n.top,t.top),n.left=Math.max(n.left,t.left),n.bottom=Math.max(n.bottom,t.bottom),n.right=Math.max(n.right,t.right)}function Wm(n,t,e,i){let{pos:s,box:r}=e,a=n.maxPadding;if(!pt(s)){e.size&&(n[s]-=e.size);let d=i[e.stack]||{size:0,count:1};d.size=Math.max(d.size,e.horizontal?r.height:r.width),e.size=d.size/d.count,n[s]+=e.size}r.getPadding&&bc(a,r.getPadding());let o=Math.max(0,t.outerWidth-mc(a,n,"left","right")),l=Math.max(0,t.outerHeight-mc(a,n,"top","bottom")),c=o!==n.w,u=l!==n.h;return n.w=o,n.h=l,e.horizontal?{same:c,other:u}:{same:u,other:c}}function Ym(n){let t=n.maxPadding;function e(i){let s=Math.max(t[i]-n[i],0);return n[i]+=s,s}n.y+=e("top"),n.x+=e("left"),e("right"),e("bottom")}function Gm(n,t){let e=t.maxPadding;function i(s){let r={left:0,top:0,right:0,bottom:0};return s.forEach(a=>{r[a]=Math.max(t[a],e[a])}),r}return i(n?["left","right"]:["top","bottom"])}function Ti(n,t,e,i){let s=[],r,a,o,l,c,u;for(r=0,a=n.length,c=0;r{typeof x.beforeLayout=="function"&&x.beforeLayout()});let u=l.reduce((x,M)=>M.box.options&&M.box.options.display===!1?x:x+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:e,padding:s,availableWidth:r,availableHeight:a,vBoxMaxWidth:r/2/u,hBoxMaxHeight:a/2}),p=Object.assign({},s);bc(p,Qt(i));let m=Object.assign({maxPadding:p,w:r,h:a,x:s.left,y:s.top},s),b=Hm(l.concat(c),d);Ti(o.fullSize,m,d,b),Ti(l,m,d,b),Ti(c,m,d,b)&&Ti(l,m,d,b),Ym(m),vc(o.leftAndTop,m,d,b),m.x+=m.w,m.y+=m.h,vc(o.rightAndBottom,m,d,b),n.chartArea={left:m.left,top:m.top,right:m.left+m.w,bottom:m.top+m.h,height:m.h,width:m.w},Mt(o.chartArea,x=>{let M=x.box;Object.assign(M,n.chartArea),M.update(m.w,m.h,{left:0,top:0,right:0,bottom:0})})}},la=class{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}},_c=class extends la{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}},xs="$chartjs",qm={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},yc=n=>n===null||n==="";function Um(n,t){let e=n.style,i=n.getAttribute("height"),s=n.getAttribute("width");if(n[xs]={initial:{height:i,width:s,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",yc(s)){let r=Xr(n,"width");r!==void 0&&(n.width=r)}if(yc(i))if(n.style.height==="")n.height=n.width/(t||2);else{let r=Xr(n,"height");r!==void 0&&(n.height=r)}return n}var xc=Wl?{passive:!0}:!1;function Xm(n,t,e){n.addEventListener(t,e,xc)}function Km(n,t,e){n.canvas.removeEventListener(t,e,xc)}function Zm(n,t){let e=qm[n.type]||n.type,{x:i,y:s}=Gr(n,t);return{type:e,chart:t,native:n,x:i!==void 0?i:null,y:s!==void 0?s:null}}function ws(n,t){for(let e of n)if(e===t||e.contains(t))return!0}function Jm(n,t,e){let i=n.canvas,s=new MutationObserver(r=>{let a=!1;for(let o of r)a=a||ws(o.addedNodes,i),a=a&&!ws(o.removedNodes,i);a&&e()});return s.observe(document,{childList:!0,subtree:!0}),s}function Qm(n,t,e){let i=n.canvas,s=new MutationObserver(r=>{let a=!1;for(let o of r)a=a||ws(o.removedNodes,i),a=a&&!ws(o.addedNodes,i);a&&e()});return s.observe(document,{childList:!0,subtree:!0}),s}var Pi=new Map,wc=0;function kc(){let n=window.devicePixelRatio;n!==wc&&(wc=n,Pi.forEach((t,e)=>{e.currentDevicePixelRatio!==n&&t()}))}function tb(n,t){Pi.size||window.addEventListener("resize",kc),Pi.set(n,t)}function eb(n){Pi.delete(n),Pi.size||window.removeEventListener("resize",kc)}function nb(n,t,e){let i=n.canvas,s=i&&gs(i);if(!s)return;let r=kr((o,l)=>{let c=s.clientWidth;e(o,l),c{let l=o[0],c=l.contentRect.width,u=l.contentRect.height;c===0&&u===0||r(c,u)});return a.observe(s),tb(n,r),a}function ca(n,t,e){e&&e.disconnect(),t==="resize"&&eb(n)}function ib(n,t,e){let i=n.canvas,s=kr(r=>{n.ctx!==null&&e(Zm(r,n))},n,r=>{let a=r[0];return[a,a.offsetX,a.offsetY]});return Xm(i,t,s),s}var Sc=class extends la{acquireContext(t,e){let i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(Um(t,e),i):null}releaseContext(t){let e=t.canvas;if(!e[xs])return!1;let i=e[xs].initial;["height","width"].forEach(r=>{let a=i[r];_t(a)?e.removeAttribute(r):e.setAttribute(r,a)});let s=i.style||{};return Object.keys(s).forEach(r=>{e.style[r]=s[r]}),e.width=e.width,delete e[xs],!0}addEventListener(t,e,i){this.removeEventListener(t,e);let s=t.$proxies||(t.$proxies={}),a={attach:Jm,detach:Qm,resize:nb}[e]||ib;s[e]=a(t,e,i)}removeEventListener(t,e){let i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:ca,detach:ca,resize:ca}[e]||Km)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return Vl(t,e,i,s)}isAttached(t){let e=gs(t);return!!(e&&e.isConnected)}};function sb(n){return!Yr()||typeof OffscreenCanvas!="undefined"&&n instanceof OffscreenCanvas?_c:Sc}var xe=class{constructor(){this.x=void 0,this.y=void 0,this.active=!1,this.options=void 0,this.$animations=void 0}tooltipPosition(t){let{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return In(this.x)&&In(this.y)}getProps(t,e){let i=this.$animations;if(!e||!i)return this;let s={};return t.forEach(r=>{s[r]=i[r]&&i[r].active()?i[r]._to:this[r]}),s}};xe.defaults={};xe.defaultRoutes=void 0;var Mc={values(n){return Ot(n)?n:""+n},numeric(n,t,e){if(n===0)return"0";let i=this.chart.options.locale,s,r=n;if(e.length>1){let c=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(c<1e-4||c>1e15)&&(s="scientific"),r=rb(n,e)}let a=be(Math.abs(r)),o=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:s,minimumFractionDigits:o,maximumFractionDigits:o};return Object.assign(l,this.options.ticks.format),Vn(n,i,l)},logarithmic(n,t,e){if(n===0)return"0";let i=n/Math.pow(10,Math.floor(be(n)));return i===1||i===2||i===5?Mc.numeric.call(this,n,t,e):""}};function rb(n,t){let e=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(e)>=1&&n!==Math.floor(n)&&(e=n-Math.floor(n)),e}var ks={formatters:Mc};dt.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(n,t)=>t.lineWidth,tickColor:(n,t)=>t.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ks.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}});dt.route("scale.ticks","color","","color");dt.route("scale.grid","color","","borderColor");dt.route("scale.grid","borderColor","","borderColor");dt.route("scale.title","color","","color");dt.describe("scale",{_fallback:!1,_scriptable:n=>!n.startsWith("before")&&!n.startsWith("after")&&n!=="callback"&&n!=="parser",_indexable:n=>n!=="borderDash"&&n!=="tickBorderDash"});dt.describe("scales",{_fallback:"scale"});dt.describe("scale.ticks",{_scriptable:n=>n!=="backdropPadding"&&n!=="callback",_indexable:n=>n!=="backdropPadding"});function ab(n,t){let e=n.options.ticks,i=e.maxTicksLimit||ob(n),s=e.major.enabled?cb(t):[],r=s.length,a=s[0],o=s[r-1],l=[];if(r>i)return hb(t,l,s,r/i),l;let c=lb(s,t,i);if(r>0){let u,d,p=r>1?Math.round((o-a)/(r-1)):null;for(Ss(t,l,c,_t(p)?0:a-p,a),u=0,d=r-1;us)return l}return Math.max(s,1)}function cb(n){let t=[],e,i;for(e=0,i=n.length;en==="left"?"right":n==="right"?"left":n,Cc=(n,t,e)=>t==="top"||t==="left"?n[t]+e:n[t]-e;function Tc(n,t){let e=[],i=n.length/t,s=n.length,r=0;for(;ra+o)))return l}function pb(n,t){Mt(n,e=>{let i=e.gc,s=i.length/2,r;if(s>t){for(r=0;ri?i:e,i=s&&e>i?e:i,{min:ge(e,ge(i,e)),max:ge(i,ge(e,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){Et(this.options.beforeUpdate,[this])}update(t,e,i){let{beginAtZero:s,grace:r,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Dl(this,r,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let l=o=r||i<=1||!this.isHorizontal()){this.labelRotation=s;return}let u=this._getLabelSizes(),d=u.widest.width,p=u.highest.height,m=Wt(this.chart.width-d,0,this.maxWidth);o=t.offset?this.maxWidth/i:m/(i-1),d+6>o&&(o=m/(i-(t.offset?.5:1)),l=this.maxHeight-Oi(t.grid)-e.padding-Pc(t.title,this.chart.options.font),c=Math.sqrt(d*d+p*p),a=is(Math.min(Math.asin(Wt((u.highest.height+6)/o,-1,1)),Math.asin(Wt(l/c,-1,1))-Math.asin(Wt(p/c,-1,1)))),a=Math.max(s,Math.min(r,a))),this.labelRotation=a}afterCalculateLabelRotation(){Et(this.options.afterCalculateLabelRotation,[this])}beforeFit(){Et(this.options.beforeFit,[this])}fit(){let t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:r}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){let l=Pc(s,e.options.font);if(o?(t.width=this.maxWidth,t.height=Oi(r)+l):(t.height=this.maxHeight,t.width=Oi(r)+l),i.display&&this.ticks.length){let{first:c,last:u,widest:d,highest:p}=this._getLabelSizes(),m=i.padding*2,b=_e(this.labelRotation),x=Math.cos(b),M=Math.sin(b);if(o){let A=i.mirror?0:M*d.width+x*p.height;t.height=Math.min(this.maxHeight,t.height+A+m)}else{let A=i.mirror?0:x*d.width+M*p.height;t.width=Math.min(this.maxWidth,t.width+A+m)}this._calculatePadding(c,u,M,x)}}this._handleMargins(),o?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){let{ticks:{align:r,padding:a},position:o}=this.options,l=this.labelRotation!==0,c=o!=="top"&&this.axis==="x";if(this.isHorizontal()){let u=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1),p=0,m=0;l?c?(p=s*t.width,m=i*e.height):(p=i*t.height,m=s*e.width):r==="start"?m=e.width:r==="end"?p=t.width:(p=t.width/2,m=e.width/2),this.paddingLeft=Math.max((p-u+a)*this.width/(this.width-u),0),this.paddingRight=Math.max((m-d+a)*this.width/(this.width-d),0)}else{let u=e.height/2,d=t.height/2;r==="start"?(u=0,d=t.height):r==="end"&&(u=e.height,d=0),this.paddingTop=u+a,this.paddingBottom=d+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){Et(this.options.afterFit,[this])}isHorizontal(){let{axis:t,position:e}=this.options;return e==="top"||e==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let e,i;for(e=0,i=t.length;e({width:r[H]||0,height:a[H]||0});return{first:B(0),last:B(e-1),widest:B(L),highest:B(F),widths:r,heights:a}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){let e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);let e=this._startPixel+t*this._length;return gl(this._alignToPixels?sn(this.chart,e,0):e)}getDecimalForPixel(t){let e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){let e=this.ticks||[];if(t>=0&&to*s?o/i:l/s:l*s0}_computeGridLineItems(t){let e=this.axis,i=this.chart,s=this.options,{grid:r,position:a}=s,o=r.offset,l=this.isHorizontal(),u=this.ticks.length+(o?1:0),d=Oi(r),p=[],m=r.setContext(this.getContext()),b=m.drawBorder?m.borderWidth:0,x=b/2,M=function(Q){return sn(i,Q,b)},A,R,I,L,F,B,H,G,Z,nt,ot,rt;if(a==="top")A=M(this.bottom),B=this.bottom-d,G=A-x,nt=M(t.top)+x,rt=t.bottom;else if(a==="bottom")A=M(this.top),nt=t.top,rt=M(t.bottom)-x,B=A+x,G=this.top+d;else if(a==="left")A=M(this.right),F=this.right-d,H=A-x,Z=M(t.left)+x,ot=t.right;else if(a==="right")A=M(this.left),Z=t.left,ot=M(t.right)-x,F=A+x,H=this.left+d;else if(e==="x"){if(a==="center")A=M((t.top+t.bottom)/2+.5);else if(pt(a)){let Q=Object.keys(a)[0],ht=a[Q];A=M(this.chart.scales[Q].getPixelForValue(ht))}nt=t.top,rt=t.bottom,B=A+x,G=B+d}else if(e==="y"){if(a==="center")A=M((t.left+t.right)/2);else if(pt(a)){let Q=Object.keys(a)[0],ht=a[Q];A=M(this.chart.scales[Q].getPixelForValue(ht))}F=A-x,H=F-d,Z=t.left,ot=t.right}let wt=at(s.ticks.maxTicksLimit,u),st=Math.max(1,Math.ceil(u/wt));for(R=0;Rr.value===t);return s>=0?e.setContext(this.getContext(s)).lineWidth:0}drawGrid(t){let e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t)),r,a,o=(l,c,u)=>{!u.width||!u.color||(i.save(),i.lineWidth=u.width,i.strokeStyle=u.color,i.setLineDash(u.borderDash||[]),i.lineDashOffset=u.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(c.x,c.y),i.stroke(),i.restore())};if(e.display)for(r=0,a=s.length;r{this.draw(s)}}]:[{z:i,draw:s=>{this.drawBackground(),this.drawGrid(s),this.drawTitle()}},{z:i+1,draw:()=>{this.drawBorder()}},{z:e,draw:s=>{this.drawLabels(s)}}]}getMatchingVisibleMetas(t){let e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[],r,a;for(r=0,a=e.length;r{let i=e.split("."),s=i.pop(),r=[n].concat(i).join("."),a=t[e].split("."),o=a.pop(),l=a.join(".");dt.route(r,s,l,o)})}function xb(n){return"id"in n&&"defaults"in n}var Oc=class{constructor(){this.controllers=new Ei(Ce,"datasets",!0),this.elements=new Ei(xe,"elements"),this.plugins=new Ei(Object,"plugins"),this.scales=new Ei(ln,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach(s=>{let r=i||this._getRegistryForType(s);i||r.isForType(s)||r===this.plugins&&s.id?this._exec(t,r,s):Mt(s,a=>{let o=i||this._getRegistryForType(a);this._exec(t,o,a)})})}_exec(t,e,i){let s=es(t);Et(i["before"+s],[],i),e[t](i),Et(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;er.filter(o=>!a.some(l=>o.plugin.id===l.plugin.id));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}};function wb(n){let t=[],e=Object.keys(Ye.plugins.items);for(let s=0;s{let l=i[o];if(!pt(l))return console.error(`Invalid scale configuration for scale: ${o}`);if(l._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${o}`);let c=ua(o,l),u=Tb(c,s),d=e.scales||{};r[c]=r[c]||o,a[o]=$n(Object.create(null),[{axis:c},l,d[c],d[u]])}),n.data.datasets.forEach(o=>{let l=o.type||n.type,c=o.indexAxis||ha(l,t),d=(nn[l]||{}).scales||{};Object.keys(d).forEach(p=>{let m=Cb(p,c),b=o[m+"AxisID"]||r[m]||m;a[b]=a[b]||Object.create(null),$n(a[b],[{axis:m},i[b],d[p]])})}),Object.keys(a).forEach(o=>{let l=a[o];$n(l,[dt.scales[l.type],dt.scale])}),a}function Dc(n){let t=n.options||(n.options={});t.plugins=at(t.plugins,{}),t.scales=Ob(n,t)}function Ac(n){return n=n||{},n.datasets=n.datasets||[],n.labels=n.labels||[],n}function Eb(n){return n=n||{},n.data=Ac(n.data),Dc(n),n}var Lc=new Map,Rc=new Set;function Ms(n,t){let e=Lc.get(n);return e||(e=t(),Lc.set(n,e),Rc.add(e)),e}var Di=(n,t,e)=>{let i=en(t,e);i!==void 0&&n.add(i)},Fc=class{constructor(t){this._config=Eb(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Ac(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){let t=this._config;this.clearCache(),Dc(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Ms(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return Ms(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return Ms(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){let e=t.id,i=this.type;return Ms(`${i}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){let i=this._scopeCache,s=i.get(t);return(!s||e)&&(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){let{options:s,type:r}=this,a=this._cachedScopes(t,i),o=a.get(e);if(o)return o;let l=new Set;e.forEach(u=>{t&&(l.add(t),u.forEach(d=>Di(l,t,d))),u.forEach(d=>Di(l,s,d)),u.forEach(d=>Di(l,nn[r]||{},d)),u.forEach(d=>Di(l,dt,d)),u.forEach(d=>Di(l,hs,d))});let c=Array.from(l);return c.length===0&&c.push(Object.create(null)),Rc.has(e)&&a.set(e,c),c}chartOptionScopes(){let{options:t,type:e}=this;return[t,nn[e]||{},dt.datasets[e]||{},{type:e},dt,hs]}resolveNamedOptions(t,e,i,s=[""]){let r={$shared:!0},{resolver:a,subPrefixes:o}=$c(this._resolverCache,t,s),l=a;if(Ab(a,e)){r.$shared=!1,i=He(i)?i():i;let c=this.createResolver(t,i,o);l=vn(a,i,c)}for(let c of e)r[c]=l[c];return r}createResolver(t,e,i=[""],s){let{resolver:r}=$c(this._resolverCache,t,i);return pt(e)?vn(r,e,void 0,s):r}};function $c(n,t,e){let i=n.get(t);i||(i=new Map,n.set(t,i));let s=e.join(),r=i.get(s);return r||(r={resolver:ds(t,e),subPrefixes:e.filter(o=>!o.toLowerCase().includes("hover"))},i.set(s,r)),r}var Db=n=>pt(n)&&Object.getOwnPropertyNames(n).reduce((t,e)=>t||He(n[e]),!1);function Ab(n,t){let{isScriptable:e,isIndexable:i}=Hr(n);for(let s of t){let r=e(s),a=i(s),o=(a||r)&&n[s];if(r&&(He(o)||Db(o))||a&&Ot(o))return!0}return!1}var Lb="3.7.1",Rb=["top","bottom","left","right","chartArea"];function Ic(n,t){return n==="top"||n==="bottom"||Rb.indexOf(n)===-1&&t==="x"}function zc(n,t){return function(e,i){return e[n]===i[n]?e[t]-i[t]:e[n]-i[n]}}function Bc(n){let t=n.chart,e=t.options.animation;t.notifyPlugins("afterRender"),Et(e&&e.onComplete,[n],t)}function Fb(n){let t=n.chart,e=t.options.animation;Et(e&&e.onProgress,[n],t)}function jc(n){return Yr()&&typeof n=="string"?n=document.getElementById(n):n&&n.length&&(n=n[0]),n&&n.canvas&&(n=n.canvas),n}var Cs={},Nc=n=>{let t=jc(n);return Object.values(Cs).filter(e=>e.canvas===t).pop()};function $b(n,t,e){let i=Object.keys(n);for(let s of i){let r=+s;if(r>=t){let a=n[s];delete n[s],(e>0||r>t)&&(n[r+e]=a)}}}function Ib(n,t,e,i){return!e||n.type==="mouseout"?null:i?t:n}var oe=class{constructor(t,e){let i=this.config=new Fc(e),s=jc(t),r=Nc(s);if(r)throw new Error("Canvas is already in use. Chart with ID '"+r.id+"' must be destroyed before the canvas can be reused.");let a=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||sb(s)),this.platform.updateConfig(i);let o=this.platform.acquireContext(s,a.aspectRatio),l=o&&o.canvas,c=l&&l.height,u=l&&l.width;if(this.id=ol(),this.ctx=o,this.canvas=l,this.width=u,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Ec,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=rl(d=>this.update(d),a.resizeDelay||0),this._dataChanges=[],Cs[this.id]=this,!o||!l){console.error("Failed to create chart: can't acquire context from the given item");return}We.listen(this,"complete",Bc),We.listen(this,"progress",Fb),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:s,_aspectRatio:r}=this;return _t(t)?e&&r?r:s?i/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Ur(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return zr(this.canvas,this.ctx),this}stop(){return We.stop(this),this}resize(t,e){We.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){let i=this.options,s=this.canvas,r=i.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(s,t,e,r),o=i.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,!!Ur(this,o,!0)&&(this.notifyPlugins("resize",{size:a}),Et(i.onResize,[this,a],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){let e=this.options.scales||{};Mt(e,(i,s)=>{i.id=s})}buildOrUpdateScales(){let t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce((a,o)=>(a[o]=!1,a),{}),r=[];e&&(r=r.concat(Object.keys(e).map(a=>{let o=e[a],l=ua(a,o),c=l==="r",u=l==="x";return{options:o,dposition:c?"chartArea":u?"bottom":"left",dtype:c?"radialLinear":u?"category":"linear"}}))),Mt(r,a=>{let o=a.options,l=o.id,c=ua(l,o),u=at(o.type,a.dtype);(o.position===void 0||Ic(o.position,c)!==Ic(a.dposition))&&(o.position=a.dposition),s[l]=!0;let d=null;if(l in i&&i[l].type===u)d=i[l];else{let p=Ye.getScale(u);d=new p({id:l,type:u,ctx:this.ctx,chart:this}),i[d.id]=d}d.init(o,t)}),Mt(s,(a,o)=>{a||delete i[o]}),Mt(i,a=>{ne.configure(this,a,a.options),ne.addBox(this,a)})}_updateMetasets(){let t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort((s,r)=>s.index-r.index),i>e){for(let s=e;se.length&&delete this._stacks,t.forEach((i,s)=>{e.filter(r=>r===i._dataset).length===0&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){let t=[],e=this.data.datasets,i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){let e=this.config;e.update();let i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;let r=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let c=0,u=this.data.datasets.length;c{c.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(zc("z","_idx"));let{_active:o,_lastEvent:l}=this;l?this._eventHandler(l,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){Mt(this.scales,t=>{ne.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);(!Mr(e,i)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(let{method:i,start:s,count:r}of e){let a=i==="_removeElements"?-r:r;$b(t,s,a)}}_getUniformDataChanges(){let t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];let e=this.data.datasets.length,i=r=>new Set(t.filter(a=>a[0]===r).map((a,o)=>o+","+a.splice(1).join(","))),s=i(0);for(let r=1;rr.split(",")).map(r=>({method:r[1],start:+r[2],count:+r[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;ne.update(this,this.width,this.height,t);let e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],Mt(this.boxes,s=>{i&&s.position==="chartArea"||(s.configure&&s.configure(),this._layers.push(...s._layers()))},this),this._layers.forEach((s,r)=>{s._idx=r}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let e=0,i=this.data.datasets.length;e=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){let e=this.ctx,i=t._clip,s=!i.disabled,r=this.chartArea,a={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",a)!==!1&&(s&&gi(e,{left:i.left===!1?0:r.left-i.left,right:i.right===!1?this.width:r.right+i.right,top:i.top===!1?0:r.top-i.top,bottom:i.bottom===!1?this.height:r.bottom+i.bottom}),t.controller.draw(),s&&mi(e),a.cancelable=!1,this.notifyPlugins("afterDatasetDraw",a))}getElementsAtEventForMode(t,e,i,s){let r=Bm.modes[e];return typeof r=="function"?r(this,t,i,s):[]}getDatasetMeta(t){let e=this.data.datasets[t],i=this._metasets,s=i.filter(r=>r&&r._dataset===e).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ve(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){let e=this.data.datasets[t];if(!e)return!1;let i=this.getDatasetMeta(t);return typeof i.hidden=="boolean"?!i.hidden:!e.hidden}setDatasetVisibility(t,e){let i=this.getDatasetMeta(t);i.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){let s=i?"show":"hide",r=this.getDatasetMeta(t),a=r.controller._resolveAnimations(void 0,s);me(e)?(r.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),a.update(r,{visible:i}),this.update(o=>o.datasetIndex===t?s:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){let e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),We.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,r,a),t[r]=a},s=(r,a,o)=>{r.offsetX=a,r.offsetY=o,this._eventHandler(r)};Mt(this.options.events,r=>i(r,s))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});let t=this._responsiveListeners,e=this.platform,i=(l,c)=>{e.addEventListener(this,l,c),t[l]=c},s=(l,c)=>{t[l]&&(e.removeEventListener(this,l,c),delete t[l])},r=(l,c)=>{this.canvas&&this.resize(l,c)},a,o=()=>{s("attach",o),this.attached=!0,this.resize(),i("resize",r),i("detach",a)};a=()=>{this.attached=!1,s("resize",r),this._stop(),this._resize(0,0),i("attach",o)},e.isAttached(this.canvas)?o():a()}unbindEvents(){Mt(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},Mt(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){let s=i?"set":"remove",r,a,o,l;for(e==="dataset"&&(r=this.getDatasetMeta(t[0].datasetIndex),r.controller["_"+s+"DatasetHoverStyle"]()),o=0,l=t.length;o{let o=this.getDatasetMeta(r);if(!o)throw new Error("No dataset found at index "+r);return{datasetIndex:r,element:o.data[a],index:a}});!ai(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}_updateHoverStyles(t,e,i){let s=this.options.hover,r=(l,c)=>l.filter(u=>!c.some(d=>u.datasetIndex===d.datasetIndex&&u.index===d.index)),a=r(e,t),o=i?t:r(t,e);a.length&&this.updateHoverStyle(a,s.mode,!1),o.length&&s.mode&&this.updateHoverStyle(o,s.mode,!0)}_eventHandler(t,e){let i={event:t,replay:e,cancelable:!0,inChartArea:rn(t,this.chartArea,this._minPadding)},s=a=>(a.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",i,s)===!1)return;let r=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(r||i.changed)&&this.render(),this}_handleEvent(t,e,i){let{_active:s=[],options:r}=this,a=e,o=this._getActiveElements(t,s,i,a),l=ul(t),c=Ib(t,this._lastEvent,i,l);i&&(this._lastEvent=null,Et(r.onHover,[t,o,this],this),l&&Et(r.onClick,[t,o,this],this));let u=!ai(o,s);return(u||e)&&(this._active=o,this._updateHoverStyles(o,s,e)),this._lastEvent=c,u}_getActiveElements(t,e,i,s){if(t.type==="mouseout")return[];if(!i)return e;let r=this.options.hover;return this.getElementsAtEventForMode(t,r.mode,r,s)}},Hc=()=>Mt(oe.instances,n=>n._plugins.invalidate()),cn=!0;Object.defineProperties(oe,{defaults:{enumerable:cn,value:dt},instances:{enumerable:cn,value:Cs},overrides:{enumerable:cn,value:nn},registry:{enumerable:cn,value:Ye},version:{enumerable:cn,value:Lb},getChart:{enumerable:cn,value:Nc},register:{enumerable:cn,value:(...n)=>{Ye.add(...n),Hc()}},unregister:{enumerable:cn,value:(...n)=>{Ye.remove(...n),Hc()}}});function Vc(n,t,e){let{startAngle:i,pixelMargin:s,x:r,y:a,outerRadius:o,innerRadius:l}=t,c=s/o;n.beginPath(),n.arc(r,a,o,i-c,e+c),l>s?(c=s/l,n.arc(r,a,l,e+c,i-c,!0)):n.arc(r,a,s,e+Rt,i-Rt),n.closePath(),n.clip()}function zb(n){return us(n,["outerStart","outerEnd","innerStart","innerEnd"])}function Bb(n,t,e,i){let s=zb(n.options.borderRadius),r=(e-t)/2,a=Math.min(r,i*t/2),o=l=>{let c=(e-Math.min(r,l))*i/2;return Wt(l,0,Math.min(r,c))};return{outerStart:o(s.outerStart),outerEnd:o(s.outerEnd),innerStart:Wt(s.innerStart,0,a),innerEnd:Wt(s.innerEnd,0,a)}}function Yn(n,t,e,i){return{x:e+n*Math.cos(t),y:i+n*Math.sin(t)}}function fa(n,t,e,i,s){let{x:r,y:a,startAngle:o,pixelMargin:l,innerRadius:c}=t,u=Math.max(t.outerRadius+i+e-l,0),d=c>0?c+i+e+l:0,p=0,m=s-o;if(i){let ht=c>0?c-i:0,ue=u>0?u-i:0,ie=(ht+ue)/2,fe=ie!==0?m*ie/(ie+i):m;p=(m-fe)/2}let b=Math.max(.001,m*u-e/At)/u,x=(m-b)/2,M=o+x+p,A=s-x-p,{outerStart:R,outerEnd:I,innerStart:L,innerEnd:F}=Bb(t,d,u,A-M),B=u-R,H=u-I,G=M+R/B,Z=A-I/H,nt=d+L,ot=d+F,rt=M+L/nt,wt=A-F/ot;if(n.beginPath(),n.arc(r,a,u,G,Z),I>0){let ht=Yn(H,Z,r,a);n.arc(ht.x,ht.y,I,Z,A+Rt)}let st=Yn(ot,A,r,a);if(n.lineTo(st.x,st.y),F>0){let ht=Yn(ot,wt,r,a);n.arc(ht.x,ht.y,F,A+Rt,wt+Math.PI)}if(n.arc(r,a,d,A-F/d,M+L/d,!0),L>0){let ht=Yn(nt,rt,r,a);n.arc(ht.x,ht.y,L,rt+Math.PI,M-Rt)}let Q=Yn(B,M,r,a);if(n.lineTo(Q.x,Q.y),R>0){let ht=Yn(B,G,r,a);n.arc(ht.x,ht.y,R,M-Rt,G)}n.closePath()}function jb(n,t,e,i){let{fullCircles:s,startAngle:r,circumference:a}=t,o=t.endAngle;if(s){fa(n,t,e,i,r+Pt);for(let l=0;l=Pt||Bn(r,o,l),x=Le(a,c+p,u+p);return b&&x}getCenterPoint(t){let{x:e,y:i,startAngle:s,endAngle:r,innerRadius:a,outerRadius:o}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],t),{offset:l,spacing:c}=this.options,u=(s+r)/2,d=(a+o+c+l)/2;return{x:e+Math.cos(u)*d,y:i+Math.sin(u)*d}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){let{options:e,circumference:i}=this,s=(e.offset||0)/2,r=(e.spacing||0)/2;if(this.pixelMargin=e.borderAlign==="inner"?.33:0,this.fullCircles=i>Pt?Math.floor(i/Pt):0,i===0||this.innerRadius<0||this.outerRadius<0)return;t.save();let a=0;if(s){a=s/2;let l=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(l)*a,Math.sin(l)*a),this.circumference>=At&&(a=s)}t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor;let o=jb(t,this,a,r);Hb(t,this,a,r,o),t.restore()}};Ai.id="arc";Ai.defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0};Ai.defaultRoutes={backgroundColor:"backgroundColor"};function Wc(n,t,e=t){n.lineCap=at(e.borderCapStyle,t.borderCapStyle),n.setLineDash(at(e.borderDash,t.borderDash)),n.lineDashOffset=at(e.borderDashOffset,t.borderDashOffset),n.lineJoin=at(e.borderJoinStyle,t.borderJoinStyle),n.lineWidth=at(e.borderWidth,t.borderWidth),n.strokeStyle=at(e.borderColor,t.borderColor)}function Vb(n,t,e){n.lineTo(e.x,e.y)}function Wb(n){return n.stepped?Ol:n.tension||n.cubicInterpolationMode==="monotone"?El:Vb}function Yc(n,t,e={}){let i=n.length,{start:s=0,end:r=i-1}=e,{start:a,end:o}=t,l=Math.max(s,a),c=Math.min(r,o),u=so&&r>o;return{count:i,start:l,loop:t.loop,ilen:c(a+(c?o-L:L))%r,I=()=>{x!==M&&(n.lineTo(u,M),n.lineTo(u,x),n.lineTo(u,A))};for(l&&(m=s[R(0)],n.moveTo(m.x,m.y)),p=0;p<=o;++p){if(m=s[R(p)],m.skip)continue;let L=m.x,F=m.y,B=L|0;B===b?(FM&&(M=F),u=(d*u+L)/++d):(I(),n.lineTo(L,F),b=B,d=0,x=M=F),A=F}I()}function da(n){let t=n.options,e=t.borderDash&&t.borderDash.length;return!n._decimated&&!n._loop&&!t.tension&&t.cubicInterpolationMode!=="monotone"&&!t.stepped&&!e?Gb:Yb}function qb(n){return n.stepped?Yl:n.tension||n.cubicInterpolationMode==="monotone"?Gl:on}function Ub(n,t,e,i){let s=t._path;s||(s=t._path=new Path2D,t.path(s,e,i)&&s.closePath()),Wc(n,t.options),n.stroke(s)}function Xb(n,t,e,i){let{segments:s,options:r}=t,a=da(t);for(let o of s)Wc(n,r,o.style),n.beginPath(),a(n,t,o,{start:e,end:e+i-1})&&n.closePath(),n.stroke()}var Kb=typeof Path2D=="function";function Zb(n,t,e,i){Kb&&!t.options.segment?Ub(n,t,e,i):Xb(n,t,e,i)}var Ge=class extends xe{constructor(t){super();this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){let i=this.options;if((i.tension||i.cubicInterpolationMode==="monotone")&&!i.stepped&&!this._pointsUpdated){let s=i.spanGaps?this._loop:this._fullLoop;Hl(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Kl(this,this.options.segment))}first(){let t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){let t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){let i=this.options,s=t[e],r=this.points,a=Qr(this,{property:e,start:s,end:s});if(!a.length)return;let o=[],l=qb(i),c,u;for(c=0,u=a.length;cn!=="borderDash"&&n!=="fill"};function Gc(n,t,e,i){let s=n.options,{[e]:r}=n.getProps([e],i);return Math.abs(t-r)=e)return n.slice(t,t+e);let a=[],o=(e-2)/(r-2),l=0,c=t+e-1,u=t,d,p,m,b,x;for(a[l++]=n[u],d=0;dm&&(m=b,p=n[R],x=R);a[l++]=p,u=x}return a[l++]=n[c],a}function r0(n,t,e,i){let s=0,r=0,a,o,l,c,u,d,p,m,b,x,M=[],A=t+e-1,R=n[t].x,L=n[A].x-R;for(a=t;ax&&(x=c,p=a),s=(r*s+o.x)/++r;else{let B=a-1;if(!_t(d)&&!_t(p)){let H=Math.min(d,p),G=Math.max(d,p);H!==m&&H!==B&&M.push({...n[H],x:s}),G!==m&&G!==B&&M.push({...n[G],x:s})}a>0&&B!==m&&M.push(n[B]),M.push(o),u=F,r=0,b=x=c,d=p=m=a}}return M}function Uc(n){if(n._decimated){let t=n._data;delete n._decimated,delete n._data,Object.defineProperty(n,"data",{value:t})}}function Xc(n){n.data.datasets.forEach(t=>{Uc(t)})}function a0(n,t){let e=t.length,i=0,s,{iScale:r}=n,{min:a,max:o,minDefined:l,maxDefined:c}=r.getUserBounds();return l&&(i=Wt(Re(t,r.axis,a).lo,0,e-1)),c?s=Wt(Re(t,r.axis,o).hi+1,i,e)-i:s=e-i,{start:i,count:s}}var o0={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(n,t,e)=>{if(!e.enabled){Xc(n);return}let i=n.width;n.data.datasets.forEach((s,r)=>{let{_data:a,indexAxis:o}=s,l=n.getDatasetMeta(r),c=a||s.data;if(Nn([o,n.options.indexAxis])==="y"||l.type!=="line")return;let u=n.scales[l.xAxisID];if(u.type!=="linear"&&u.type!=="time"||n.options.parsing)return;let{start:d,count:p}=a0(l,c),m=e.threshold||4*i;if(p<=m){Uc(s);return}_t(a)&&(s._data=c,delete s.data,Object.defineProperty(s,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(x){this._data=x}}));let b;switch(e.algorithm){case"lttb":b=s0(c,d,p,i,e);break;case"min-max":b=r0(c,d,p,i);break;default:throw new Error(`Unsupported decimation algorithm '${e.algorithm}'`)}s._decimated=b})},destroy(n){Xc(n)}};function l0(n,t){let e=n.getDatasetMeta(t);return e&&n.isDatasetVisible(t)?e.dataset:null}function c0(n){let t=n.options,e=t.fill,i=at(e&&e.target,e);return i===void 0&&(i=!!t.backgroundColor),i===!1||i===null?!1:i===!0?"origin":i}function h0(n,t,e){let i=c0(n);if(pt(i))return isNaN(i.value)?!1:i;let s=parseFloat(i);return Ft(s)&&Math.floor(s)===s?((i[0]==="-"||i[0]==="+")&&(s=t+s),s===t||s<0||s>=e?!1:s):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function u0(n){let{scale:t={},fill:e}=n,i=null,s;return e==="start"?i=t.bottom:e==="end"?i=t.top:pt(e)?i=t.getPixelForValue(e.value):t.getBasePixel&&(i=t.getBasePixel()),Ft(i)?(s=t.isHorizontal(),{x:s?i:null,y:s?null:i}):null}var ma=class{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){let{x:s,y:r,radius:a}=this;return e=e||{start:0,end:Pt},t.arc(s,r,a,e.end,e.start,!0),!i.bounds}interpolate(t){let{x:e,y:i,radius:s}=this,r=t.angle;return{x:e+Math.cos(r)*s,y:i+Math.sin(r)*s,angle:r}}};function f0(n){let{scale:t,fill:e}=n,i=t.options,s=t.getLabels().length,r=[],a=i.reverse?t.max:t.min,o=i.reverse?t.min:t.max,l,c,u;if(e==="start"?u=a:e==="end"?u=o:pt(e)?u=e.value:u=t.getBaseValue(),i.grid.circular)return c=t.getPointPositionForValue(0,a),new ma({x:c.x,y:c.y,radius:t.getDistanceFromCenterForValue(u)});for(l=0;ln;t--){let i=e[t];if(!isNaN(i.x)&&!isNaN(i.y))break}return t}function p0(n,t){let{x:e=null,y:i=null}=n||{},s=t.points,r=[];return t.segments.forEach(({start:a,end:o})=>{o=ba(a,o,s);let l=s[a],c=s[o];i!==null?(r.push({x:l.x,y:i}),r.push({x:c.x,y:i})):e!==null&&(r.push({x:e,y:l.y}),r.push({x:e,y:c.y}))}),r}function g0(n){let{scale:t,index:e,line:i}=n,s=[],r=i.segments,a=i.points,o=m0(t,e);o.push(Kc({x:null,y:t.bottom},i));for(let l=0;l=0;--a){let o=s[a].$filler;!o||(o.line.updateControlPoints(r,o.axis),i&&_a(n.ctx,o,r))}},beforeDatasetsDraw(n,t,e){if(e.drawTime!=="beforeDatasetsDraw")return;let i=n.getSortedVisibleDatasetMetas();for(let s=i.length-1;s>=0;--s){let r=i[s].$filler;r&&_a(n.ctx,r,n.chartArea)}},beforeDatasetDraw(n,t,e){let i=t.meta.$filler;!i||i.fill===!1||e.drawTime!=="beforeDatasetDraw"||_a(n.ctx,i,n.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}},eh=(n,t)=>{let{boxHeight:e=t,boxWidth:i=t}=n;return n.usePointStyle&&(e=Math.min(e,t),i=Math.min(i,t)),{boxWidth:i,boxHeight:e,itemHeight:Math.max(t,e)}},M0=(n,t)=>n!==null&&t!==null&&n.datasetIndex===t.datasetIndex&&n.index===t.index,ya=class extends xe{constructor(t){super();this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let t=this.options.labels||{},e=Et(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(i=>t.filter(i,this.chart.data))),t.sort&&(e=e.sort((i,s)=>t.sort(i,s,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){let{options:t,ctx:e}=this;if(!t.display){this.width=this.height=0;return}let i=t.labels,s=Ht(i.font),r=s.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:l}=eh(i,r),c,u;e.font=s.string,this.isHorizontal()?(c=this.maxWidth,u=this._fitRows(a,r,o,l)+10):(u=this.maxHeight,c=this._fitCols(a,r,o,l)+10),this.width=Math.min(c,t.maxWidth||this.maxWidth),this.height=Math.min(u,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){let{ctx:r,maxWidth:a,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],u=s+o,d=t;r.textAlign="left",r.textBaseline="middle";let p=-1,m=-u;return this.legendItems.forEach((b,x)=>{let M=i+e/2+r.measureText(b.text).width;(x===0||c[c.length-1]+M+2*o>a)&&(d+=u,c[c.length-(x>0?0:1)]=0,m+=u,p++),l[x]={left:0,top:m,row:p,width:M,height:s},c[c.length-1]+=M+o}),d}_fitCols(t,e,i,s){let{ctx:r,maxHeight:a,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],u=a-t,d=o,p=0,m=0,b=0,x=0;return this.legendItems.forEach((M,A)=>{let R=i+e/2+r.measureText(M.text).width;A>0&&m+s+2*o>u&&(d+=p+o,c.push({width:p,height:m}),b+=p+o,x++,p=m=0),l[A]={left:b,top:m,col:x,width:R,height:s},p=Math.max(p,R),m+=s+o}),d+=p,c.push({width:p,height:m}),d}adjustHitBoxes(){if(!this.options.display)return;let t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:r}}=this,a=yn(r,this.left,this.width);if(this.isHorizontal()){let o=0,l=Jt(i,this.left+s,this.right-this.lineWidths[o]);for(let c of e)o!==c.row&&(o=c.row,l=Jt(i,this.left+s,this.right-this.lineWidths[o])),c.top+=this.top+t+s,c.left=a.leftForLtr(a.x(l),c.width),l+=c.width+s}else{let o=0,l=Jt(i,this.top+t+s,this.bottom-this.columnSizes[o].height);for(let c of e)c.col!==o&&(o=c.col,l=Jt(i,this.top+t+s,this.bottom-this.columnSizes[o].height)),c.top=l,c.left+=this.left+s,c.left=a.leftForLtr(a.x(c.left),c.width),l+=c.height+s}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){let t=this.ctx;gi(t,this),this._draw(),mi(t)}}_draw(){let{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:r,labels:a}=t,o=dt.color,l=yn(t.rtl,this.left,this.width),c=Ht(a.font),{color:u,padding:d}=a,p=c.size,m=p/2,b;this.drawTitle(),s.textAlign=l.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=c.string;let{boxWidth:x,boxHeight:M,itemHeight:A}=eh(a,p),R=function(H,G,Z){if(isNaN(x)||x<=0||isNaN(M)||M<0)return;s.save();let nt=at(Z.lineWidth,1);if(s.fillStyle=at(Z.fillStyle,o),s.lineCap=at(Z.lineCap,"butt"),s.lineDashOffset=at(Z.lineDashOffset,0),s.lineJoin=at(Z.lineJoin,"miter"),s.lineWidth=nt,s.strokeStyle=at(Z.strokeStyle,o),s.setLineDash(at(Z.lineDash,[])),a.usePointStyle){let ot={radius:x*Math.SQRT2/2,pointStyle:Z.pointStyle,rotation:Z.rotation,borderWidth:nt},rt=l.xPlus(H,x/2),wt=G+m;pi(s,ot,rt,wt)}else{let ot=G+Math.max((p-M)/2,0),rt=l.leftForLtr(H,x),wt=bn(Z.borderRadius);s.beginPath(),Object.values(wt).some(st=>st!==0)?bi(s,{x:rt,y:ot,w:x,h:M,radius:wt}):s.rect(rt,ot,x,M),s.fill(),nt!==0&&s.stroke()}s.restore()},I=function(H,G,Z){an(s,Z.text,H,G+A/2,c,{strikethrough:Z.hidden,textAlign:l.textAlign(Z.textAlign)})},L=this.isHorizontal(),F=this._computeTitleHeight();L?b={x:Jt(r,this.left+d,this.right-i[0]),y:this.top+d+F,line:0}:b={x:this.left+d,y:Jt(r,this.top+F+d,this.bottom-e[0].height),line:0},Kr(this.ctx,t.textDirection);let B=A+d;this.legendItems.forEach((H,G)=>{s.strokeStyle=H.fontColor||u,s.fillStyle=H.fontColor||u;let Z=s.measureText(H.text).width,nt=l.textAlign(H.textAlign||(H.textAlign=a.textAlign)),ot=x+m+Z,rt=b.x,wt=b.y;l.setWidth(this.width),L?G>0&&rt+ot+d>this.right&&(wt=b.y+=B,b.line++,rt=b.x=Jt(r,this.left+d,this.right-i[b.line])):G>0&&wt+B>this.bottom&&(rt=b.x=rt+e[b.line].width+d,b.line++,wt=b.y=Jt(r,this.top+F+d,this.bottom-e[b.line].height));let st=l.x(rt);R(st,wt,H),rt=al(nt,rt+x+m,L?rt+ot:this.right,t.rtl),I(l.x(rt),wt,H),L?b.x+=ot+d:b.y+=B}),Zr(this.ctx,t.textDirection)}drawTitle(){let t=this.options,e=t.title,i=Ht(e.font),s=Qt(e.padding);if(!e.display)return;let r=yn(t.rtl,this.left,this.width),a=this.ctx,o=e.position,l=i.size/2,c=s.top+l,u,d=this.left,p=this.width;if(this.isHorizontal())p=Math.max(...this.lineWidths),u=this.top+c,d=Jt(t.align,d,this.right-p);else{let b=this.columnSizes.reduce((x,M)=>Math.max(x,M.height),0);u=c+Jt(t.align,this.top,this.bottom-b-t.labels.padding-this._computeTitleHeight())}let m=Jt(o,d,d+p);a.textAlign=r.textAlign(Qi(o)),a.textBaseline="middle",a.strokeStyle=e.color,a.fillStyle=e.color,a.font=i.string,an(a,e.text,m,u,i)}_computeTitleHeight(){let t=this.options.title,e=Ht(t.font),i=Qt(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,r;if(Le(t,this.left,this.right)&&Le(e,this.top,this.bottom)){for(r=this.legendHitBoxes,i=0;in.chart.options.color,boxWidth:40,padding:10,generateLabels(n){let t=n.data.datasets,{labels:{usePointStyle:e,pointStyle:i,textAlign:s,color:r}}=n.legend.options;return n._getSortedDatasetMetas().map(a=>{let o=a.controller.getStyle(e?0:void 0),l=Qt(o.borderWidth);return{text:t[a.index].label,fillStyle:o.backgroundColor,fontColor:r,hidden:!a.visible,lineCap:o.borderCapStyle,lineDash:o.borderDash,lineDashOffset:o.borderDashOffset,lineJoin:o.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:o.borderColor,pointStyle:i||o.pointStyle,rotation:o.rotation,textAlign:s||o.textAlign,borderRadius:0,datasetIndex:a.index}},this)}},title:{color:n=>n.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:n=>!n.startsWith("on"),labels:{_scriptable:n=>!["generateLabels","filter","sort"].includes(n)}}},Ts=class extends xe{constructor(t){super();this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){let i=this.options;if(this.left=0,this.top=0,!i.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=t,this.height=this.bottom=e;let s=Ot(i.text)?i.text.length:1;this._padding=Qt(i.padding);let r=s*Ht(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=r:this.width=r}isHorizontal(){let t=this.options.position;return t==="top"||t==="bottom"}_drawArgs(t){let{top:e,left:i,bottom:s,right:r,options:a}=this,o=a.align,l=0,c,u,d;return this.isHorizontal()?(u=Jt(o,i,r),d=e+t,c=r-i):(a.position==="left"?(u=i+t,d=Jt(o,s,e),l=At*-.5):(u=r-t,d=Jt(o,e,s),l=At*.5),c=s-e),{titleX:u,titleY:d,maxWidth:c,rotation:l}}draw(){let t=this.ctx,e=this.options;if(!e.display)return;let i=Ht(e.font),r=i.lineHeight/2+this._padding.top,{titleX:a,titleY:o,maxWidth:l,rotation:c}=this._drawArgs(r);an(t,e.text,0,0,i,{color:e.color,maxWidth:l,rotation:c,textAlign:Qi(e.align),textBaseline:"middle",translation:[a,o]})}};function P0(n,t){let e=new Ts({ctx:n.ctx,options:t,chart:n});ne.configure(n,e,t),ne.addBox(n,e),n.titleBlock=e}var O0={id:"title",_element:Ts,start(n,t,e){P0(n,e)},stop(n){let t=n.titleBlock;ne.removeBox(n,t),delete n.titleBlock},beforeUpdate(n,t,e){let i=n.titleBlock;ne.configure(n,i,e),i.options=e},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},Ps=new WeakMap,E0={id:"subtitle",start(n,t,e){let i=new Ts({ctx:n.ctx,options:e,chart:n});ne.configure(n,i,e),ne.addBox(n,i),Ps.set(n,i)},stop(n){ne.removeBox(n,Ps.get(n)),Ps.delete(n)},beforeUpdate(n,t,e){let i=Ps.get(n);ne.configure(n,i,e),i.options=e},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},Fi={average(n){if(!n.length)return!1;let t,e,i=0,s=0,r=0;for(t=0,e=n.length;t-1?n.split(` -`):n}function Sg(n,t){let{element:e,datasetIndex:i,index:s}=t,r=n.getDatasetMeta(i).controller,{label:a,value:o}=r.getLabelAndValue(s);return{chart:n,label:a,parsed:r.getParsed(s),raw:n.data.datasets[i].data[s],formattedValue:o,dataset:r.getDataset(),dataIndex:s,datasetIndex:i,element:e}}function zl(n,t){let e=n._chart.ctx,{body:i,footer:s,title:r}=n,{boxWidth:a,boxHeight:o}=t,l=$t(t.bodyFont),c=$t(t.titleFont),h=$t(t.footerFont),f=r.length,p=s.length,m=i.length,v=Zt(t.padding),k=v.height,_=0,E=i.reduce((F,L)=>F+L.before.length+L.lines.length+L.after.length,0);if(E+=n.beforeBody.length+n.afterBody.length,f&&(k+=f*c.lineHeight+(f-1)*t.titleSpacing+t.titleMarginBottom),E){let F=t.displayColors?Math.max(o,l.lineHeight):l.lineHeight;k+=m*F+(E-m)*l.lineHeight+(E-1)*t.bodySpacing}p&&(k+=t.footerMarginTop+p*h.lineHeight+(p-1)*t.footerSpacing);let T=0,I=function(F){_=Math.max(_,e.measureText(F).width+T)};return e.save(),e.font=c.string,wt(n.title,I),e.font=l.string,wt(n.beforeBody.concat(n.afterBody),I),T=t.displayColors?a+2+t.boxPadding:0,wt(i,F=>{wt(F.before,I),wt(F.lines,I),wt(F.after,I)}),T=0,e.font=h.string,wt(n.footer,I),e.restore(),_+=v.width,{width:_,height:k}}function Mg(n,t){let{y:e,height:i}=t;return en.height-i/2?"bottom":"center"}function Cg(n,t,e,i){let{x:s,width:r}=i,a=e.caretSize+e.caretPadding;if(n==="left"&&s+r+a>t.width||n==="right"&&s-r-a<0)return!0}function Tg(n,t,e,i){let{x:s,width:r}=e,{width:a,chartArea:{left:o,right:l}}=n,c="center";return i==="center"?c=s<=(o+l)/2?"left":"right":s<=r/2?c="left":s>=a-r/2&&(c="right"),Cg(c,n,t,e)&&(c="center"),c}function Bl(n,t,e){let i=t.yAlign||Mg(n,e);return{xAlign:t.xAlign||Tg(n,t,e,i),yAlign:i}}function Og(n,t){let{x:e,width:i}=n;return t==="right"?e-=i:t==="center"&&(e-=i/2),e}function Pg(n,t,e){let{y:i,height:s}=n;return t==="top"?i+=e:t==="bottom"?i-=s+e:i-=s/2,i}function jl(n,t,e,i){let{caretSize:s,caretPadding:r,cornerRadius:a}=n,{xAlign:o,yAlign:l}=e,c=s+r,{topLeft:h,topRight:f,bottomLeft:p,bottomRight:m}=ln(a),v=Og(t,o),k=Pg(t,l,c);return l==="center"?o==="left"?v+=c:o==="right"&&(v-=c):o==="left"?v-=Math.max(h,p)+r:o==="right"&&(v+=Math.max(f,m)+r),{x:Wt(v,0,i.width-t.width),y:Wt(k,0,i.height-t.height)}}function as(n,t,e){let i=Zt(e.padding);return t==="center"?n.x+n.width/2:t==="right"?n.x+n.width-i.right:n.x+i.left}function Nl(n){return De([],Ne(n))}function Dg(n,t,e){return Ie(n,{tooltip:t,tooltipItems:e,type:"tooltip"})}function $l(n,t){let e=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return e?n.override(e):n}var os=class extends ve{constructor(t){super();this.opacity=0,this._active=[],this._chart=t._chart,this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){let t=this._cachedAnimations;if(t)return t;let e=this._chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,r=new kr(this._chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(r)),r}getContext(){return this.$context||(this.$context=Dg(this._chart.getContext(),this,this._tooltipItems))}getTitle(t,e){let{callbacks:i}=e,s=i.beforeTitle.apply(this,[t]),r=i.title.apply(this,[t]),a=i.afterTitle.apply(this,[t]),o=[];return o=De(o,Ne(s)),o=De(o,Ne(r)),o=De(o,Ne(a)),o}getBeforeBody(t,e){return Nl(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){let{callbacks:i}=e,s=[];return wt(t,r=>{let a={before:[],lines:[],after:[]},o=$l(i,r);De(a.before,Ne(o.beforeLabel.call(this,r))),De(a.lines,o.label.call(this,r)),De(a.after,Ne(o.afterLabel.call(this,r))),s.push(a)}),s}getAfterBody(t,e){return Nl(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){let{callbacks:i}=e,s=i.beforeFooter.apply(this,[t]),r=i.footer.apply(this,[t]),a=i.afterFooter.apply(this,[t]),o=[];return o=De(o,Ne(s)),o=De(o,Ne(r)),o=De(o,Ne(a)),o}_createItems(t){let e=this._active,i=this._chart.data,s=[],r=[],a=[],o=[],l,c;for(l=0,c=e.length;lt.filter(h,f,p,i))),t.itemSort&&(o=o.sort((h,f)=>t.itemSort(h,f,i))),wt(o,h=>{let f=$l(t.callbacks,h);s.push(f.labelColor.call(this,h)),r.push(f.labelPointStyle.call(this,h)),a.push(f.labelTextColor.call(this,h))}),this.labelColors=s,this.labelPointStyles=r,this.labelTextColors=a,this.dataPoints=o,o}update(t,e){let i=this.options.setContext(this.getContext()),s=this._active,r,a=[];if(!s.length)this.opacity!==0&&(r={opacity:0});else{let o=gi[i.position].call(this,s,this._eventPosition);a=this._createItems(i),this.title=this.getTitle(a,i),this.beforeBody=this.getBeforeBody(a,i),this.body=this.getBody(a,i),this.afterBody=this.getAfterBody(a,i),this.footer=this.getFooter(a,i);let l=this._size=zl(this,i),c=Object.assign({},o,l),h=Bl(this._chart,i,c),f=jl(i,c,h,this._chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,r={opacity:1,x:f.x,y:f.y,width:l.width,height:l.height,caretX:o.x,caretY:o.y}}this._tooltipItems=a,this.$context=void 0,r&&this._resolveAnimations().update(this,r),t&&i.external&&i.external.call(this,{chart:this._chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){let r=this.getCaretPosition(t,i,s);e.lineTo(r.x1,r.y1),e.lineTo(r.x2,r.y2),e.lineTo(r.x3,r.y3)}getCaretPosition(t,e,i){let{xAlign:s,yAlign:r}=this,{caretSize:a,cornerRadius:o}=i,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:f}=ln(o),{x:p,y:m}=t,{width:v,height:k}=e,_,E,T,I,F,L;return r==="center"?(F=m+k/2,s==="left"?(_=p,E=_-a,I=F+a,L=F-a):(_=p+v,E=_+a,I=F-a,L=F+a),T=_):(s==="left"?E=p+Math.max(l,h)+a:s==="right"?E=p+v-Math.max(c,f)-a:E=this.caretX,r==="top"?(I=m,F=I-a,_=E-a,T=E+a):(I=m+k,F=I+a,_=E+a,T=E-a),L=I),{x1:_,x2:E,x3:T,y1:I,y2:F,y3:L}}drawTitle(t,e,i){let s=this.title,r=s.length,a,o,l;if(r){let c=un(i.rtl,this.x,this.width);for(t.x=as(this,i.titleAlign,i),e.textAlign=c.textAlign(i.titleAlign),e.textBaseline="middle",a=$t(i.titleFont),o=i.titleSpacing,e.fillStyle=i.titleColor,e.font=a.string,l=0;lI!==0)?(t.beginPath(),t.fillStyle=r.multiKeyBackground,Zn(t,{x:_,y:k,w:c,h:l,radius:T}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),Zn(t,{x:E,y:k+1,w:c-2,h:l-2,radius:T}),t.fill()):(t.fillStyle=r.multiKeyBackground,t.fillRect(_,k,c,l),t.strokeRect(_,k,c,l),t.fillStyle=a.backgroundColor,t.fillRect(E,k+1,c-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){let{body:s}=this,{bodySpacing:r,bodyAlign:a,displayColors:o,boxHeight:l,boxWidth:c,boxPadding:h}=i,f=$t(i.bodyFont),p=f.lineHeight,m=0,v=un(i.rtl,this.x,this.width),k=function(G){e.fillText(G,v.x(t.x+m),t.y+p/2),t.y+=p+r},_=v.textAlign(a),E,T,I,F,L,V,$;for(e.textAlign=a,e.textBaseline="middle",e.font=f.string,t.x=as(this,_,i),e.fillStyle=i.bodyColor,wt(this.beforeBody,k),m=o&&_!=="right"?a==="center"?c/2+h:c+2+h:0,F=0,V=s.length;F0&&e.stroke()}_updateAnimationTarget(t){let e=this._chart,i=this.$animations,s=i&&i.x,r=i&&i.y;if(s||r){let a=gi[t.position].call(this,this._active,this._eventPosition);if(!a)return;let o=this._size=zl(this,t),l=Object.assign({},a,this._size),c=Bl(e,t,l),h=jl(t,l,c,e);(s._to!==h.x||r._to!==h.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=o.width,this.height=o.height,this.caretX=a.x,this.caretY=a.y,this._resolveAnimations().update(this,h))}}draw(t){let e=this.options.setContext(this.getContext()),i=this.opacity;if(!i)return;this._updateAnimationTarget(e);let s={width:this.width,height:this.height},r={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;let a=Zt(e.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&o&&(t.save(),t.globalAlpha=i,this.drawBackground(r,t,s,e),vr(t,e.textDirection),r.y+=a.top,this.drawTitle(r,t,e),this.drawBody(r,t,e),this.drawFooter(r,t,e),yr(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){let i=this._active,s=t.map(({datasetIndex:o,index:l})=>{let c=this._chart.getDatasetMeta(o);if(!c)throw new Error("Cannot find a dataset at index "+o);return{datasetIndex:o,element:c.data[l],index:l}}),r=!jn(i,s),a=this._positionChanged(s,e);(r||a)&&(this._active=s,this._eventPosition=e,this.update(!0))}handleEvent(t,e){let i=this.options,s=this._active||[],r=!1,a=[];t.type!=="mouseout"&&(a=this._chart.getElementsAtEventForMode(t,i.mode,i,e),i.reverse&&a.reverse());let o=this._positionChanged(a,t);return r=e||!jn(a,s)||o,r&&(this._active=a,(i.enabled||i.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_positionChanged(t,e){let{caretX:i,caretY:s,options:r}=this,a=gi[r.position].call(this,t,e);return a!==!1&&(i!==a.x||s!==a.y)}};os.positioners=gi;var Eg={id:"tooltip",_element:os,positioners:gi,afterInit(n,t,e){e&&(n.tooltip=new os({_chart:n,options:e}))},beforeUpdate(n,t,e){n.tooltip&&n.tooltip.initialize(e)},reset(n,t,e){n.tooltip&&n.tooltip.initialize(e)},afterDraw(n){let t=n.tooltip,e={tooltip:t};n.notifyPlugins("beforeTooltipDraw",e)!==!1&&(t&&t.draw(n.ctx),n.notifyPlugins("afterTooltipDraw",e))},afterEvent(n,t){if(n.tooltip){let e=t.replay;n.tooltip.handleEvent(t.event,e)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(n,t)=>t.bodyFont.size,boxWidth:(n,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:Oe,title(n){if(n.length>0){let t=n[0],e=t.chart.data.labels,i=e?e.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndexn!=="filter"&&n!=="itemSort"&&n!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},Rg=Object.freeze({__proto__:null,Decimation:tg,Filler:bg,Legend:yg,SubTitle:kg,Title:wg,Tooltip:Eg}),Ag=(n,t,e)=>typeof t=="string"?n.push(t)-1:isNaN(t)?null:e;function Lg(n,t,e){let i=n.indexOf(t);if(i===-1)return Ag(n,t,e);let s=n.lastIndexOf(t);return i!==s?e:i}var Fg=(n,t)=>n===null?null:Wt(Math.round(n),0,t),mi=class extends Qe{constructor(t){super(t);this._startValue=void 0,this._valueRange=0}parse(t,e){if(bt(t))return null;let i=this.getLabels();return e=isFinite(e)&&i[e]===t?e:Lg(i,t,ot(e,t)),Fg(e,i.length-1)}determineDataLimits(){let{minDefined:t,maxDefined:e}=this.getUserBounds(),{min:i,max:s}=this.getMinMax(!0);this.options.bounds==="ticks"&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){let t=this.min,e=this.max,i=this.options.offset,s=[],r=this.getLabels();r=t===0&&e===r.length-1?r:r.slice(t,e+1),this._valueRange=Math.max(r.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let a=t;a<=e;a++)s.push({value:a});return s}getLabelForValue(t){let e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}};mi.id="category";mi.defaults={ticks:{callback:mi.prototype.getLabelForValue}};function Ig(n,t){let e=[],i=1e-14,{bounds:s,step:r,min:a,max:o,precision:l,count:c,maxTicks:h,maxDigits:f,includeBounds:p}=n,m=r||1,v=h-1,{min:k,max:_}=t,E=!bt(a),T=!bt(o),I=!bt(c),F=(_-k)/(f+1),L=Zs((_-k)/v/m)*m,V,$,G,K;if(Lv&&(L=Zs(K*L/v/m)*m),bt(l)||(V=Math.pow(10,l),L=Math.ceil(L*V)/V),s==="ticks"?($=Math.floor(k/L)*L,G=Math.ceil(_/L)*L):($=k,G=_),E&&T&&r&&Wa((o-a)/r,L/1e3)?(K=Math.round(Math.min((o-a)/L,h)),L=(o-a)/K,$=a,G=o):I?($=E?a:$,G=T?o:G,K=c-1,L=(G-$)/K):(K=(G-$)/L,kn(K,Math.round(K),L/1e3)?K=Math.round(K):K=Math.ceil(K));let et=Math.max(Js(L),Js($));V=Math.pow(10,bt(l)?et:l),$=Math.round($*V)/V,G=Math.round(G*V)/V;let lt=0;for(E&&(p&&$!==a?(e.push({value:a}),$s=e?s:l,o=l=>r=i?r:l;if(t){let l=we(s),c=we(r);l<0&&c<0?o(0):l>0&&c>0&&a(0)}if(s===r){let l=1;(r>=Number.MAX_SAFE_INTEGER||s<=Number.MIN_SAFE_INTEGER)&&(l=Math.abs(r*.05)),o(r+l),t||a(s-l)}this.min=s,this.max=r}getTickLimit(){let t=this.options.ticks,{maxTicksLimit:e,stepSize:i}=t,s;return i?(s=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),e=e||11),e&&(s=Math.min(e,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){let t=this.options,e=t.ticks,i=this.getTickLimit();i=Math.max(2,i);let s={maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:e.includeBounds!==!1},r=this._range||this,a=Ig(s,r);return t.bounds==="ticks"&&Qs(a,this,"value"),t.reverse?(a.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),a}configure(){let t=this.ticks,e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){let s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return Tn(t,this.chart.options.locale)}},ls=class extends bi{determineDataLimits(){let{min:t,max:e}=this.getMinMax(!0);this.min=At(t)?t:0,this.max=At(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){let t=this.isHorizontal(),e=t?this.width:this.height,i=me(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,r=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,r.lineHeight/s))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}};ls.id="linear";ls.defaults={ticks:{callback:ts.formatters.numeric}};function Vl(n){return n/Math.pow(10,Math.floor(pe(n)))===1}function zg(n,t){let e=Math.floor(pe(t.max)),i=Math.ceil(t.max/Math.pow(10,e)),s=[],r=fe(n.min,Math.pow(10,Math.floor(pe(t.min)))),a=Math.floor(pe(r)),o=Math.floor(r/Math.pow(10,a)),l=a<0?Math.pow(10,Math.abs(a)):1;do s.push({value:r,major:Vl(r)}),++o,o===10&&(o=1,++a,l=a>=0?1:l),r=Math.round(o*Math.pow(10,a)*l)/l;while(a0?i:null}determineDataLimits(){let{min:t,max:e}=this.getMinMax(!0);this.min=At(t)?Math.max(0,t):null,this.max=At(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:t,maxDefined:e}=this.getUserBounds(),i=this.min,s=this.max,r=l=>i=t?i:l,a=l=>s=e?s:l,o=(l,c)=>Math.pow(10,Math.floor(pe(l))+c);i===s&&(i<=0?(r(1),a(10)):(r(o(i,-1)),a(o(s,1)))),i<=0&&r(o(s,-1)),s<=0&&a(o(i,1)),this._zero&&this.min!==this._suggestedMin&&i===o(this.min,0)&&r(o(i,-1)),this.min=i,this.max=s}buildTicks(){let t=this.options,e={min:this._userMin,max:this._userMax},i=zg(e,this);return t.bounds==="ticks"&&Qs(i,this,"value"),t.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(t){return t===void 0?"0":Tn(t,this.chart.options.locale)}configure(){let t=this.min;super.configure(),this._startValue=pe(t),this._valueRange=pe(this.max)-pe(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(pe(t)-this._startValue)/this._valueRange)}getValueForPixel(t){let e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}};cs.id="logarithmic";cs.defaults={ticks:{callback:ts.formatters.logarithmic,major:{enabled:!0}}};function Hr(n){let t=n.ticks;if(t.display&&n.display){let e=Zt(t.backdropPadding);return ot(t.font&&t.font.size,ft.font.size)+e.height}return 0}function Bg(n,t,e){return e=Ot(e)?e:[e],{w:ro(n,t.string,e),h:e.length*t.lineHeight}}function Wl(n,t,e,i,s){return n===i||n===s?{start:t-e/2,end:t+e/2}:ns?{start:t-e,end:t}:{start:t,end:t+e}}function jg(n){let t={l:0,r:n.width,t:0,b:n.height-n.paddingTop},e={},i=[],s=[],r=n.getLabels().length;for(let a=0;at.r&&(t.r=m.end,e.r=f),v.startt.b&&(t.b=v.end,e.b=f)}n._setReductions(n.drawingArea,t,e),n._pointLabelItems=Ng(n,i,s)}function Ng(n,t,e){let i=[],s=n.getLabels().length,r=n.options,a=Hr(r),o=n.getDistanceFromCenterForValue(r.ticks.reverse?n.min:n.max);for(let l=0;l270||e<90)&&(n-=t),n}function Wg(n,t){let{ctx:e,options:{pointLabels:i}}=n;for(let s=t-1;s>=0;s--){let r=i.setContext(n.getPointLabelContext(s)),a=$t(r.font),{x:o,y:l,textAlign:c,left:h,top:f,right:p,bottom:m}=n._pointLabelItems[s],{backdropColor:v}=r;if(!bt(v)){let k=Zt(r.backdropPadding);e.fillStyle=v,e.fillRect(h-k.left,f-k.top,p-h+k.width,m-f+k.height)}Ke(e,n._pointLabels[s],o,l+a.lineHeight/2,a,{color:r.color,textAlign:c,textBaseline:"middle"})}}function Yl(n,t,e,i){let{ctx:s}=n;if(e)s.arc(n.xCenter,n.yCenter,t,0,Mt);else{let r=n.getPointPosition(0,t);s.moveTo(r.x,r.y);for(let a=1;a{let s=Pt(this.options.pointLabels.callback,[e,i],this);return s||s===0?s:""})}fit(){let t=this.options;t.display&&t.pointLabels.display?jg(this):this.setCenterPoint(0,0,0,0)}_setReductions(t,e,i){let s=e.l/Math.sin(i.l),r=Math.max(e.r-this.width,0)/Math.sin(i.r),a=-e.t/Math.cos(i.t),o=-Math.max(e.b-(this.height-this.paddingTop),0)/Math.cos(i.b);s=hs(s),r=hs(r),a=hs(a),o=hs(o),this.drawingArea=Math.max(t/2,Math.min(Math.floor(t-(s+r)/2),Math.floor(t-(a+o)/2))),this.setCenterPoint(s,r,a,o)}setCenterPoint(t,e,i,s){let r=this.width-e-this.drawingArea,a=t+this.drawingArea,o=i+this.drawingArea,l=this.height-this.paddingTop-s-this.drawingArea;this.xCenter=Math.floor((a+r)/2+this.left),this.yCenter=Math.floor((o+l)/2+this.top+this.paddingTop)}getIndexAngle(t){let e=Mt/this.getLabels().length,i=this.options.startAngle||0;return be(t*e+me(i))}getDistanceFromCenterForValue(t){if(bt(t))return NaN;let e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(bt(t))return NaN;let e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){let e=this._pointLabels||[];if(t>=0&&t{if(h!==0){o=this.getDistanceFromCenterForValue(c.value);let f=s.setContext(this.getContext(h-1));Yg(this,f,o,r)}}),i.display){for(t.save(),a=this.getLabels().length-1;a>=0;a--){let c=i.setContext(this.getPointLabelContext(a)),{color:h,lineWidth:f}=c;!f||!h||(t.lineWidth=f,t.strokeStyle=h,t.setLineDash(c.borderDash),t.lineDashOffset=c.borderDashOffset,o=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),l=this.getPointPosition(a,o),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){let t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;let s=this.getIndexAngle(0),r,a;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((o,l)=>{if(l===0&&!e.reverse)return;let c=i.setContext(this.getContext(l)),h=$t(c.font);if(r=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){t.font=h.string,a=t.measureText(o.label).width,t.fillStyle=c.backdropColor;let f=Zt(c.backdropPadding);t.fillRect(-a/2-f.left,-r-h.size/2-f.top,a+f.width,h.size+f.height)}Ke(t,o.label,0,-r,h,{color:c.color})}),t.restore()}drawTitle(){}};Dn.id="radialLinear";Dn.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:ts.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(n){return n},padding:5}};Dn.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};Dn.descriptors={angleLines:{_fallback:"grid"}};var us={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},oe=Object.keys(us);function qg(n,t){return n-t}function Gl(n,t){if(bt(t))return null;let e=n._adapter,{parser:i,round:s,isoWeekday:r}=n._parseOpts,a=t;return typeof i=="function"&&(a=i(a)),At(a)||(a=typeof i=="string"?e.parse(a,i):e.parse(a)),a===null?null:(s&&(a=s==="week"&&(on(r)||r===!0)?e.startOf(a,"isoWeek",r):e.startOf(a,s)),+a)}function ql(n,t,e,i){let s=oe.length;for(let r=oe.indexOf(n);r=oe.indexOf(e);r--){let a=oe[r];if(us[a].common&&n._adapter.diff(s,i,a)>=t-1)return a}return oe[e?oe.indexOf(e):0]}function Xg(n){for(let t=oe.indexOf(n)+1,e=oe.length;t=t?e[i]:e[s];n[r]=!0}}function Kg(n,t,e,i){let s=n._adapter,r=+s.startOf(t[0].value,i),a=t[t.length-1].value,o,l;for(o=r;o<=a;o=+s.add(o,1,i))l=e[o],l>=0&&(t[l].major=!0);return t}function Xl(n,t,e){let i=[],s={},r=t.length,a,o;for(a=0;a1e5*o)throw new Error(e+" and "+i+" are too far apart with stepSize of "+o+" "+a);let v=s.ticks.source==="data"&&this.getDataTimestamps();for(p=f,m=0;pk-_).map(k=>+k)}getLabelForValue(t){let e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,s){let r=this.options,a=r.time.displayFormats,o=this._unit,l=this._majorUnit,c=o&&a[o],h=l&&a[l],f=i[e],p=l&&h&&f&&f.major,m=this._adapter.format(t,s||(p?h:c)),v=r.ticks.callback;return v?Pt(v,[m,e,i],this):m}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?o:1}getDataTimestamps(){let t=this._cache.data||[],e,i;if(t.length)return t;let s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(e=0,i=s.length;e=n[i].pos&&t<=n[s].pos&&({lo:i,hi:s}=Pe(n,"pos",t)),{pos:r,time:o}=n[i],{pos:a,time:l}=n[s]):(t>=n[i].time&&t<=n[s].time&&({lo:i,hi:s}=Pe(n,"time",t)),{time:r,pos:o}=n[i],{time:a,pos:l}=n[s]);let c=a-r;return c?o+(l-o)*(t-r)/c:o}var ds=class extends En{constructor(t){super(t);this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=fs(e,this.min),this._tableRange=fs(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){let{min:e,max:i}=this,s=[],r=[],a,o,l,c,h;for(a=0,o=t.length;a=e&&c<=i&&s.push(c);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(a=0,o=s.length;a(0,Ql.default)(t).alpha(.25).hex())}function nn(n,t){var i,s;let e=t.createDiv({cls:"chart-error"});e.createEl("b",{text:"Couldn't render Chart:"}),e.createEl("pre").createEl("code",{text:(s=(i=n.toString)==null?void 0:i.call(n))!=null?s:n}),e.createEl("hr"),e.createEl("span").innerHTML="You might also want to look for further Errors in the Console: Press CTRL + SHIFT + I to open it."}function Jg(n){for(var t=window.atob(n),e=t.length,i=new Uint8Array(e),s=0;so;o++)e.push({label:(s=t.series[o].title)!=null?s:"",data:t.series[o].data,backgroundColor:t.labelColors?Yr(this.settings.colors):Yr(this.settings.colors)[o],borderColor:t.labelColors?this.settings.colors:this.settings.colors[o],borderWidth:1,fill:(r=t.fill)!=null?r:!1,tension:(a=t.tension)!=null?a:0});let i;return t.type=="radar"||t.type=="polarArea"?i={type:t.type,data:{labels:t.labels,datasets:e},options:{spanGaps:t.spanGaps,scales:{r:{grid:{color:"rgba(122,122,122,0.3)"},beginAtZero:t.beginAtZero}},plugins:{legend:{display:t.legend,position:t.legendPosition}},layout:{padding:t.padding}}}:t.type=="bar"||t.type=="line"?i={type:t.type,data:{labels:t.labels,datasets:e},options:{indexAxis:t.indexAxis,spanGaps:t.spanGaps,scales:{y:{min:t.yMin,max:t.yMax,reverse:t.yReverse,ticks:{display:t.yTickDisplay,padding:t.yTickPadding},display:t.yDisplay,stacked:t.stacked,beginAtZero:t.beginAtZero,grid:{color:"rgba(122,122,122,0.3)"},title:{display:t.yTitle,text:t.yTitle}},x:{min:t.xMin,max:t.xMax,reverse:t.xReverse,ticks:{display:t.xTickDisplay,padding:t.xTickPadding},display:t.xDisplay,stacked:t.stacked,grid:{color:"rgba(122,122,122,0.3)"},title:{display:t.xTitle,text:t.xTitle}}},plugins:{legend:{display:t.legend,position:t.legendPosition}},layout:{padding:t.padding}}}:i={type:t.type,data:{labels:t.labels,datasets:e},options:{spanGaps:t.spanGaps,plugins:{legend:{display:t.legend,position:t.legendPosition}},layout:{padding:t.padding}}},{chartOptions:i,width:t.width}}async imageRenderer(t,e){let i=l=>new Promise(c=>setTimeout(c,l)),s=document.createElement("canvas"),r=s.getContext("2d"),a=this.datasetPrep(await(0,ps.parseYaml)(t.replace("```chart","").replace("```","").replace(/\t/g," ")));new Je(r,a.chartOptions),document.body.append(s),await i(250);let o=s.toDataURL(e.format,e.quality);return document.body.removeChild(s),o.substring(o.indexOf(",")+1)}renderRaw(t,e){var s;let i=e.createEl("canvas");if(t.chartOptions)try{let r=new Je(i.getContext("2d"),t.chartOptions);return i.parentElement.style.width=(s=t.width)!=null?s:"100%",i.parentElement.style.margin="auto",r}catch(r){return nn(r,e),null}else try{return new Je(i.getContext("2d"),t)}catch(r){return nn(r,e),null}}renderFromYaml(t,e,i){i.addChild(new tc(this.datasetPrep(t),e,this))}},tc=class extends ps.MarkdownRenderChild{constructor(t,e,i){super(e);this.data=t,this.renderer=i}onload(){this.chart=this.renderer.renderRaw(this.data,this.containerEl)}onunload(){this.chart&&this.chart.destroy(),this.chart=null}};var ms={colors:["rgba(255, 99, 132, 1)","rgba(54, 162, 235, 1)","rgba(255, 206, 86, 1)","rgba(75, 192, 192, 1)","rgba(153, 102, 255, 1)","rgba(255, 159, 64, 1)"],contextMenu:!0,imageSettings:{format:"image/png",quality:.92}};var Jt=Te(require("obsidian"));var Gr=function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")},qr=function(){function n(t,e){for(var i=0;i1&&arguments[1]!==void 0?arguments[1]:1,e=t>0?n.toFixed(t).replace(/0+$/,"").replace(/\.$/,""):n.toString();return e||"0"}var em=function(){function n(t,e,i,s){Gr(this,n);var r=this;function a(l){if(l.startsWith("hsl")){var c=l.match(/([\-\d\.e]+)/g).map(Number),h=bs(c,4),f=h[0],p=h[1],m=h[2],v=h[3];v===void 0&&(v=1),f/=360,p/=100,m/=100,r.hsla=[f,p,m,v]}else if(l.startsWith("rgb")){var k=l.match(/([\-\d\.e]+)/g).map(Number),_=bs(k,4),E=_[0],T=_[1],I=_[2],F=_[3];F===void 0&&(F=1),r.rgba=[E,T,I,F]}else l.startsWith("#")?r.rgba=n.hexToRgb(l):r.rgba=n.nameToRgb(l)||n.hexToRgb(l)}if(t!==void 0)if(Array.isArray(t))this.rgba=t;else if(i===void 0){var o=t&&""+t;o&&a(o.toLowerCase())}else this.rgba=[t,e,i,s===void 0?1:s]}return qr(n,[{key:"printRGB",value:function(e){var i=e?this.rgba:this.rgba.slice(0,3),s=i.map(function(r,a){return ec(r,a===3?3:0)});return e?"rgba("+s+")":"rgb("+s+")"}},{key:"printHSL",value:function(e){var i=[360,100,100,1],s=["","%","%",""],r=e?this.hsla:this.hsla.slice(0,3),a=r.map(function(o,l){return ec(o*i[l],l===3?3:1)+s[l]});return e?"hsla("+a+")":"hsl("+a+")"}},{key:"printHex",value:function(e){var i=this.hex;return e?i:i.substring(0,7)}},{key:"rgba",get:function(){if(this._rgba)return this._rgba;if(!this._hsla)throw new Error("No color is set");return this._rgba=n.hslToRgb(this._hsla)},set:function(e){e.length===3&&(e[3]=1),this._rgba=e,this._hsla=null}},{key:"rgbString",get:function(){return this.printRGB()}},{key:"rgbaString",get:function(){return this.printRGB(!0)}},{key:"hsla",get:function(){if(this._hsla)return this._hsla;if(!this._rgba)throw new Error("No color is set");return this._hsla=n.rgbToHsl(this._rgba)},set:function(e){e.length===3&&(e[3]=1),this._hsla=e,this._rgba=null}},{key:"hslString",get:function(){return this.printHSL()}},{key:"hslaString",get:function(){return this.printHSL(!0)}},{key:"hex",get:function(){var e=this.rgba,i=e.map(function(s,r){return r<3?s.toString(16):Math.round(s*255).toString(16)});return"#"+i.map(function(s){return s.padStart(2,"0")}).join("")},set:function(e){this.rgba=n.hexToRgb(e)}}],[{key:"hexToRgb",value:function(e){var i=(e.startsWith("#")?e.slice(1):e).replace(/^(\w{3})$/,"$1F").replace(/^(\w)(\w)(\w)(\w)$/,"$1$1$2$2$3$3$4$4").replace(/^(\w{6})$/,"$1FF");if(!i.match(/^([0-9a-fA-F]{8})$/))throw new Error("Unknown hex color; "+e);var s=i.match(/^(\w\w)(\w\w)(\w\w)(\w\w)$/).slice(1).map(function(r){return parseInt(r,16)});return s[3]=s[3]/255,s}},{key:"nameToRgb",value:function(e){var i=e.toLowerCase().replace("at","T").replace(/[aeiouyldf]/g,"").replace("ght","L").replace("rk","D").slice(-5,4),s=tm[i];return s===void 0?s:n.hexToRgb(s.replace(/\-/g,"00").padStart(6,"f"))}},{key:"rgbToHsl",value:function(e){var i=bs(e,4),s=i[0],r=i[1],a=i[2],o=i[3];s/=255,r/=255,a/=255;var l=Math.max(s,r,a),c=Math.min(s,r,a),h=void 0,f=void 0,p=(l+c)/2;if(l===c)h=f=0;else{var m=l-c;switch(f=p>.5?m/(2-l-c):m/(l+c),l){case s:h=(r-a)/m+(r1&&(T-=1),T<1/6?_+(E-_)*6*T:T<1/2?E:T<2/3?_+(E-_)*(2/3-T)*6:_},p=a<.5?a*(1+r):a+r-a*r,m=2*a-p;l=f(m,p,s+1/3),c=f(m,p,s),h=f(m,p,s-1/3)}var v=[l*255,c*255,h*255].map(Math.round);return v[3]=o,v}}]),n}(),nm=function(){function n(){Gr(this,n),this._events=[]}return qr(n,[{key:"add",value:function(e,i,s){e.addEventListener(i,s,!1),this._events.push({target:e,type:i,handler:s})}},{key:"remove",value:function(e,i,s){this._events=this._events.filter(function(r){var a=!0;return e&&e!==r.target&&(a=!1),i&&i!==r.type&&(a=!1),s&&s!==r.handler&&(a=!1),a&&n._doRemove(r.target,r.type,r.handler),!a})}},{key:"destroy",value:function(){this._events.forEach(function(e){return n._doRemove(e.target,e.type,e.handler)}),this._events=[]}}],[{key:"_doRemove",value:function(e,i,s){e.removeEventListener(i,s,!1)}}]),n}();function im(n){var t=document.createElement("div");return t.innerHTML=n,t.firstElementChild}function Ur(n,t,e){var i=!1;function s(l,c,h){return Math.max(c,Math.min(l,h))}function r(l,c,h){if(h&&(i=!0),!!i){l.preventDefault();var f=t.getBoundingClientRect(),p=f.width,m=f.height,v=c.clientX,k=c.clientY,_=s(v-f.left,0,p),E=s(k-f.top,0,m);e(_/p,E/m)}}function a(l,c){var h=l.buttons===void 0?l.which:l.buttons;h===1?r(l,l,c):i=!1}function o(l,c){l.touches.length===1?r(l,l.touches[0],c):i=!1}n.add(t,"mousedown",function(l){a(l,!0)}),n.add(t,"touchstart",function(l){o(l,!0)}),n.add(window,"mousemove",a),n.add(t,"touchmove",o),n.add(window,"mouseup",function(l){i=!1}),n.add(t,"touchend",function(l){i=!1}),n.add(t,"touchcancel",function(l){i=!1})}var sm=`linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%) 0 0 / 2em 2em, - linear-gradient(45deg, lightgrey 25%, white 25%, white 75%, lightgrey 75%) 1em 1em / 2em 2em`,rm=360,nc="keydown",_s="mousedown",Xr="focusin";function Ee(n,t){return(t||document).querySelector(n)}function ic(n){n.preventDefault(),n.stopPropagation()}function Kr(n,t,e,i,s){n.add(t,nc,function(r){e.indexOf(r.key)>=0&&(s&&ic(r),i(r))})}var Zr=function(){function n(t){Gr(this,n),this.settings={popup:"right",layout:"default",alpha:!0,editor:!0,editorFormat:"hex",cancelButton:!1,defaultColor:"#0cf"},this._events=new nm,this.onChange=null,this.onDone=null,this.onOpen=null,this.onClose=null,this.setOptions(t)}return qr(n,[{key:"setOptions",value:function(e){var i=this;if(!e)return;var s=this.settings;function r(c,h,f){for(var p in c)f&&f.indexOf(p)>=0||(h[p]=c[p])}if(e instanceof HTMLElement)s.parent=e;else{s.parent&&e.parent&&s.parent!==e.parent&&(this._events.remove(s.parent),this._popupInited=!1),r(e,s),e.onChange&&(this.onChange=e.onChange),e.onDone&&(this.onDone=e.onDone),e.onOpen&&(this.onOpen=e.onOpen),e.onClose&&(this.onClose=e.onClose);var a=e.color||e.colour;a&&this._setColor(a)}var o=s.parent;if(o&&s.popup&&!this._popupInited){var l=function(h){return i.openHandler(h)};this._events.add(o,"click",l),Kr(this._events,o,[" ","Spacebar","Enter"],l),this._popupInited=!0}else e.parent&&!s.popup&&this.show()}},{key:"openHandler",value:function(e){if(this.show()){e&&e.preventDefault(),this.settings.parent.style.pointerEvents="none";var i=e&&e.type===nc?this._domEdit:this.domElement;setTimeout(function(){return i.focus()},100),this.onOpen&&this.onOpen(this.colour)}}},{key:"closeHandler",value:function(e){var i=e&&e.type,s=!1;if(!e)s=!0;else if(i===_s||i===Xr){var r=(this.__containedEvent||0)+100;e.timeStamp>r&&(s=!0)}else ic(e),s=!0;s&&this.hide()&&(this.settings.parent.style.pointerEvents="",i!==_s&&this.settings.parent.focus(),this.onClose&&this.onClose(this.colour))}},{key:"movePopup",value:function(e,i){this.closeHandler(),this.setOptions(e),i&&this.openHandler()}},{key:"setColor",value:function(e,i){this._setColor(e,{silent:i})}},{key:"_setColor",value:function(e,i){if(typeof e=="string"&&(e=e.trim()),!!e){i=i||{};var s=void 0;try{s=new em(e)}catch(a){if(i.failSilently)return;throw a}if(!this.settings.alpha){var r=s.hsla;r[3]=1,s.hsla=r}this.colour=this.color=s,this._setHSLA(null,null,null,null,i)}}},{key:"setColour",value:function(e,i){this.setColor(e,i)}},{key:"show",value:function(){var e=this.settings.parent;if(!e)return!1;if(this.domElement){var i=this._toggleDOM(!0);return this._setPosition(),i}var s=this.settings.template||'
    ',r=im(s);return this.domElement=r,this._domH=Ee(".picker_hue",r),this._domSL=Ee(".picker_sl",r),this._domA=Ee(".picker_alpha",r),this._domEdit=Ee(".picker_editor input",r),this._domSample=Ee(".picker_sample",r),this._domOkay=Ee(".picker_done button",r),this._domCancel=Ee(".picker_cancel button",r),r.classList.add("layout_"+this.settings.layout),this.settings.alpha||r.classList.add("no_alpha"),this.settings.editor||r.classList.add("no_editor"),this.settings.cancelButton||r.classList.add("no_cancel"),this._ifPopup(function(){return r.classList.add("popup")}),this._setPosition(),this.colour?this._updateUI():this._setColor(this.settings.defaultColor),this._bindEvents(),!0}},{key:"hide",value:function(){return this._toggleDOM(!1)}},{key:"destroy",value:function(){this._events.destroy(),this.domElement&&this.settings.parent.removeChild(this.domElement)}},{key:"_bindEvents",value:function(){var e=this,i=this,s=this.domElement,r=this._events;function a(c,h,f){r.add(c,h,f)}a(s,"click",function(c){return c.preventDefault()}),Ur(r,this._domH,function(c,h){return i._setHSLA(c)}),Ur(r,this._domSL,function(c,h){return i._setHSLA(null,c,1-h)}),this.settings.alpha&&Ur(r,this._domA,function(c,h){return i._setHSLA(null,null,null,1-h)});var o=this._domEdit;a(o,"input",function(c){i._setColor(this.value,{fromEditor:!0,failSilently:!0})}),a(o,"focus",function(c){var h=this;h.selectionStart===h.selectionEnd&&h.select()}),this._ifPopup(function(){var c=function(p){return e.closeHandler(p)};a(window,_s,c),a(window,Xr,c),Kr(r,s,["Esc","Escape"],c);var h=function(p){e.__containedEvent=p.timeStamp};a(s,_s,h),a(s,Xr,h),a(e._domCancel,"click",c)});var l=function(h){e._ifPopup(function(){return e.closeHandler(h)}),e.onDone&&e.onDone(e.colour)};a(this._domOkay,"click",l),Kr(r,s,["Enter"],l)}},{key:"_setPosition",value:function(){var e=this.settings.parent,i=this.domElement;e!==i.parentNode&&e.appendChild(i),this._ifPopup(function(s){getComputedStyle(e).position==="static"&&(e.style.position="relative");var r=s===!0?"popup_right":"popup_"+s;["popup_top","popup_bottom","popup_left","popup_right"].forEach(function(a){a===r?i.classList.add(a):i.classList.remove(a)}),i.classList.add(r)})}},{key:"_setHSLA",value:function(e,i,s,r,a){a=a||{};var o=this.colour,l=o.hsla;[e,i,s,r].forEach(function(c,h){(c||c===0)&&(l[h]=c)}),o.hsla=l,this._updateUI(a),this.onChange&&!a.silent&&this.onChange(o)}},{key:"_updateUI",value:function(e){if(!this.domElement)return;e=e||{};var i=this.colour,s=i.hsla,r="hsl("+s[0]*rm+", 100%, 50%)",a=i.hslString,o=i.hslaString,l=this._domH,c=this._domSL,h=this._domA,f=Ee(".picker_selector",l),p=Ee(".picker_selector",c),m=Ee(".picker_selector",h);function v(V,$,G){$.style.left=G*100+"%"}function k(V,$,G){$.style.top=G*100+"%"}v(l,f,s[0]),this._domSL.style.backgroundColor=this._domH.style.color=r,v(c,p,s[1]),k(c,p,1-s[2]),c.style.color=a,k(h,m,1-s[3]);var _=a,E=_.replace("hsl","hsla").replace(")",", 0)"),T="linear-gradient("+[_,E]+")";if(this._domA.style.background=T+", "+sm,!e.fromEditor){var I=this.settings.editorFormat,F=this.settings.alpha,L=void 0;switch(I){case"rgb":L=i.printRGB(F);break;case"hsl":L=i.printHSL(F);break;default:L=i.printHex(F)}this._domEdit.value=L}this._domSample.style.color=o}},{key:"_ifPopup",value:function(e,i){this.settings.parent&&this.settings.popup?e&&e(this.settings.popup):i&&i()}},{key:"_toggleDOM",value:function(e){var i=this.domElement;if(!i)return!1;var s=e?"":"none",r=i.style.display!==s;return r&&(i.style.display=s),r}}]),n}();vs=document.createElement("style"),vs.textContent='.picker_wrapper.no_alpha .picker_alpha{display:none}.picker_wrapper.no_editor .picker_editor{position:absolute;z-index:-1;opacity:0}.picker_wrapper.no_cancel .picker_cancel{display:none}.layout_default.picker_wrapper{display:flex;flex-flow:row wrap;justify-content:space-between;align-items:stretch;font-size:10px;width:25em;padding:.5em}.layout_default.picker_wrapper input,.layout_default.picker_wrapper button{font-size:1rem}.layout_default.picker_wrapper>*{margin:.5em}.layout_default.picker_wrapper::before{content:"";display:block;width:100%;height:0;order:1}.layout_default .picker_slider,.layout_default .picker_selector{padding:1em}.layout_default .picker_hue{width:100%}.layout_default .picker_sl{flex:1 1 auto}.layout_default .picker_sl::before{content:"";display:block;padding-bottom:100%}.layout_default .picker_editor{order:1;width:6.5rem}.layout_default .picker_editor input{width:100%;height:100%}.layout_default .picker_sample{order:1;flex:1 1 auto}.layout_default .picker_done,.layout_default .picker_cancel{order:1}.picker_wrapper{box-sizing:border-box;background:#f2f2f2;box-shadow:0 0 0 1px silver;cursor:default;font-family:sans-serif;color:#444;pointer-events:auto}.picker_wrapper:focus{outline:none}.picker_wrapper button,.picker_wrapper input{box-sizing:border-box;border:none;box-shadow:0 0 0 1px silver;outline:none}.picker_wrapper button:focus,.picker_wrapper button:active,.picker_wrapper input:focus,.picker_wrapper input:active{box-shadow:0 0 2px 1px #1e90ff}.picker_wrapper button{padding:.4em .6em;cursor:pointer;background-color:#f5f5f5;background-image:linear-gradient(0deg, gainsboro, transparent)}.picker_wrapper button:active{background-image:linear-gradient(0deg, transparent, gainsboro)}.picker_wrapper button:hover{background-color:#fff}.picker_selector{position:absolute;z-index:1;display:block;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);border:2px solid #fff;border-radius:100%;box-shadow:0 0 3px 1px #67b9ff;background:currentColor;cursor:pointer}.picker_slider .picker_selector{border-radius:2px}.picker_hue{position:relative;background-image:linear-gradient(90deg, red, yellow, lime, cyan, blue, magenta, red);box-shadow:0 0 0 1px silver}.picker_sl{position:relative;box-shadow:0 0 0 1px silver;background-image:linear-gradient(180deg, white, rgba(255, 255, 255, 0) 50%),linear-gradient(0deg, black, rgba(0, 0, 0, 0) 50%),linear-gradient(90deg, #808080, rgba(128, 128, 128, 0))}.picker_alpha,.picker_sample{position:relative;background:linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%) 0 0/2em 2em,linear-gradient(45deg, lightgrey 25%, white 25%, white 75%, lightgrey 75%) 1em 1em/2em 2em;box-shadow:0 0 0 1px silver}.picker_alpha .picker_selector,.picker_sample .picker_selector{background:none}.picker_editor input{font-family:monospace;padding:.2em .4em}.picker_sample::before{content:"";position:absolute;display:block;width:100%;height:100%;background:currentColor}.picker_arrow{position:absolute;z-index:-1}.picker_wrapper.popup{position:absolute;z-index:2;margin:1.5em}.picker_wrapper.popup,.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{background:#f2f2f2;box-shadow:0 0 10px 1px rgba(0,0,0,.4)}.picker_wrapper.popup .picker_arrow{width:3em;height:3em;margin:0}.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{content:"";display:block;position:absolute;top:0;left:0;z-index:-99}.picker_wrapper.popup .picker_arrow::before{width:100%;height:100%;-webkit-transform:skew(45deg);transform:skew(45deg);-webkit-transform-origin:0 100%;transform-origin:0 100%}.picker_wrapper.popup .picker_arrow::after{width:150%;height:150%;box-shadow:none}.popup.popup_top{bottom:100%;left:0}.popup.popup_top .picker_arrow{bottom:0;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.popup.popup_bottom{top:100%;left:0}.popup.popup_bottom .picker_arrow{top:0;left:0;-webkit-transform:rotate(90deg) scale(1, -1);transform:rotate(90deg) scale(1, -1)}.popup.popup_left{top:0;right:100%}.popup.popup_left .picker_arrow{top:0;right:0;-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.popup.popup_right{top:0;left:100%}.popup.popup_right .picker_arrow{top:0;left:0}',document.documentElement.firstElementChild.appendChild(vs),Zr.StyleElement=vs;var vs;var sc=class extends Jt.Modal{async onOpen(){let t=this.contentEl,e=await(0,Jt.request)({url:"https://raw.githubusercontent.com/phibr0/obsidian-charts/master/README.md"});await Jt.MarkdownRenderer.renderMarkdown(e.substring(e.indexOf("## Usage"),e.indexOf("## How to install")),t,null,null)}},Qr=class extends Jt.PluginSettingTab{constructor(t,e){super(t,e);this.plugin=e}isColor(t){var e=new Option().style;return e.color=t,e.color==t}display(){let{containerEl:t,plugin:e}=this;t.empty(),t.createEl("h2",{text:"Settings - Obsidian Charts"}),t.createEl("h3",{text:"General"}),new Jt.Setting(t).setName("Read the Documentation").setDesc("Find out how to create all these beautiful Charts").addButton(r=>{r.setButtonText("Read").onClick(()=>new sc(this.app).open())}),new Jt.Setting(t).setName("Show Button in Context Menu").setDesc("If enabled, you will se a Button in your Editor Context Menu to open the Chart Creator.").addToggle(r=>{r.setValue(this.plugin.settings.contextMenu).onChange(async a=>{e.settings.contextMenu=a,await e.saveSettings()})}),new Jt.Setting(t).setName("Donate").setDesc("If you like this Plugin, consider donating to support continued development:").addButton(r=>{r.buttonEl.outerHTML='
    '}),t.createEl("h3",{text:"Colors",attr:{style:"margin-bottom: 0"}});let i=t.createEl("p",{cls:"setting-item-description"});i.append("Set the Colors for your Charts. This will set the border Color and the inner Color will be the same, but with less opacity. This ensures better compatibility with Dark and Light Mode. ","You can use any ",i.createEl("a",{href:"https://www.w3schools.com/cssref/css_colors.asp",text:"valid CSS Color."})),e.settings.colors.forEach((r,a)=>{let o=document.createDocumentFragment();o.createSpan({text:"\u25CF",attr:{style:`color: ${r}`}}),o.appendText(` Color #${a+1}`),new Jt.Setting(t).setName(o).setDesc("This will be the border Color used in the Charts you create.").addButton(l=>{l.setButtonText("Change Color"),new Zr({parent:l.buttonEl,onDone:async c=>{this.plugin.settings.colors[a]=c.hex,await this.plugin.saveSettings(),this.display()},popup:"left",color:r,alpha:!1})}).addExtraButton(l=>{l.setIcon("trash").setTooltip("Remove").onClick(async()=>{this.plugin.settings.colors.remove(r),await this.plugin.saveSettings(),this.display()}),this.plugin.settings.colors.length===1&&l.setDisabled(!0)}).addExtraButton(l=>{l.setIcon("reset").setTooltip("Reset to default").onClick(async()=>{var c;this.plugin.settings.colors[a]=(c=ms.colors[a])!=null?c:"#ffffff",await this.plugin.saveSettings(),this.display()})})}),new Jt.Setting(t).addButton(r=>{r.setButtonText("Add Color").onClick(async()=>{this.plugin.settings.colors.push("#ffffff"),await this.plugin.saveSettings(),this.display()})}),t.createEl("h3",{text:"Chart to Image Converter"});let s=t.createEl("details");s.createEl("summary",{text:"How to use"}),s.createEl("img",{attr:{src:"https://media.discordapp.net/attachments/855181471643861002/897811615037136966/charttoimage.gif"}}),new Jt.Setting(t).setName("Image Format").setDesc("The Format to be used, when generating a Image from a Chart.").addDropdown(r=>{r.addOptions({"image/jpeg":"jpeg","image/png":"png","image/webp":"webp"}),r.setValue(e.settings.imageSettings.format),r.onChange(async a=>{e.settings.imageSettings.format=a,await e.saveSettings()})}),new Jt.Setting(t).setName("Image Quality").setDesc("If using a lossy format, set the Image Quality.").addSlider(r=>{r.setDynamicTooltip().setLimits(.01,1,.01).setValue(e.settings.imageSettings.quality).onChange(async a=>{e.settings.imageSettings.quality=a,await e.saveSettings()})})}};var xc=Te(require("obsidian"));function Rn(){}function Jr(n){return n()}function rc(){return Object.create(null)}function sn(n){n.forEach(Jr)}function ac(n){return typeof n=="function"}function oc(n,t){return n!=n?t==t:n!==t||n&&typeof n=="object"||typeof n=="function"}function lc(n){return Object.keys(n).length===0}var Xm=new Set;var cc=!1;function am(){cc=!0}function om(){cc=!1}function W(n,t){n.appendChild(t)}function hc(n,t,e){let i=lm(n);if(!i.getElementById(t)){let s=J("style");s.id=t,s.textContent=e,cm(i,s)}}function lm(n){if(!n)return document;let t=n.getRootNode?n.getRootNode():n.ownerDocument;return t&&t.host?t:n.ownerDocument}function cm(n,t){W(n.head||n,t)}function _i(n,t,e){n.insertBefore(t,e||null)}function An(n){n.parentNode.removeChild(n)}function uc(n,t){for(let e=0;en.removeEventListener(t,e,i)}function nt(n,t,e){e==null?n.removeAttribute(t):n.getAttribute(t)!==e&&n.setAttribute(t,e)}function ta(n){return n===""?null:+n}function um(n){return Array.from(n.childNodes)}function Me(n,t){n.value=t??""}function ce(n,t,e,i){n.style.setProperty(t,e,i?"important":"")}function ea(n,t){for(let e=0;e{let i=n.$$.callbacks[t];if(i){let s=fm(t,e);i.slice().forEach(r=>{r.call(n,s)})}}}var vi=[];var ws=[],ks=[],dc=[],pm=Promise.resolve(),ia=!1;function gm(){ia||(ia=!0,pm.then(pc))}function yi(n){ks.push(n)}var sa=!1,ra=new Set;function pc(){if(!sa){sa=!0;do{for(let n=0;n{let l=r.map(Jr).filter(ac);a?a.push(...l):sn(l),n.$$.on_mount=[]}),o.forEach(yi)}function gc(n,t){let e=n.$$;e.fragment!==null&&(sn(e.on_destroy),e.fragment&&e.fragment.d(t),e.on_destroy=e.fragment=null,e.ctx=[])}function ym(n,t){n.$$.dirty[0]===-1&&(vi.push(n),gm(),n.$$.dirty.fill(0)),n.$$.dirty[t/31|0]|=1<{let v=m.length?m[0]:p;return c.ctx&&s(c.ctx[f],c.ctx[f]=v)&&(!c.skip_bound&&c.bound[f]&&c.bound[f](v),h&&ym(n,f)),p}):[],c.update(),h=!0,sn(c.before_update),c.fragment=i?i(c.ctx):!1,t.target){if(t.hydrate){am();let f=um(t.target);c.fragment&&c.fragment.l(f),f.forEach(An)}else c.fragment&&c.fragment.c();t.intro&&_m(n.$$.fragment),vm(n,t.target,t.anchor,t.customElement),om(),pc()}xs(l)}var xm;typeof HTMLElement=="function"&&(xm=class extends HTMLElement{constructor(){super();this.attachShadow({mode:"open"})}connectedCallback(){let{on_mount:n}=this.$$;this.$$.on_disconnect=n.map(Jr).filter(ac);for(let t in this.$$.slotted)this.appendChild(this.$$.slotted[t])}attributeChangedCallback(n,t,e){this[n]=e}disconnectedCallback(){sn(this.$$.on_disconnect)}$destroy(){gc(this,1),this.$destroy=Rn}$on(n,t){let e=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return e.push(t),()=>{let i=e.indexOf(t);i!==-1&&e.splice(i,1)}}$set(n){this.$$set&&!lc(n)&&(this.$$.skip_bound=!0,this.$$set(n),this.$$.skip_bound=!1)}});var aa=class{$destroy(){gc(this,1),this.$destroy=Rn}$on(t,e){let i=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return i.push(e),()=>{let s=i.indexOf(e);s!==-1&&i.splice(s,1)}}$set(t){this.$$set&&!lc(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}};var Ss=Te(require("obsidian"));function wm(n){hc(n,"svelte-1tlkntj",".addMoreButtonContainer.svelte-1tlkntj{display:flex;justify-content:flex-end;margin-top:0.4rem}.subDesc.svelte-1tlkntj{font-size:smaller;opacity:0.5;margin:0}.desc.svelte-1tlkntj{padding-right:1em}.mainDesc.svelte-1tlkntj{margin:0}table.svelte-1tlkntj{margin:auto}.controlElement.svelte-1tlkntj{text-align:center}.chart-modal.svelte-1tlkntj{overflow-y:auto}.modalColumn.svelte-1tlkntj{display:flex;gap:2em}.chartPreview.svelte-1tlkntj{width:30vw;display:flex;justify-content:center;align-items:center}")}function bc(n,t,e){let i=n.slice();return i[27]=t[e],i[28]=t,i[29]=e,i}function _c(n){let t,e,i,s,r,a,o,l,c,h,f;function p(){n[20].call(r,n[28],n[29])}function m(){n[21].call(c,n[28],n[29])}return{c(){t=J("tr"),e=J("td"),e.innerHTML=`

    Y Axis

    -

    Set Data Fields (Comma seperated)

    `,i=Yt(),s=J("td"),r=J("input"),a=Yt(),o=J("br"),l=Yt(),c=J("input"),nt(e,"class","desc svelte-1tlkntj"),nt(r,"type","text"),nt(r,"placeholder","Name"),nt(c,"type","text"),nt(c,"placeholder","1, -2, 11, 5"),ce(c,"margin-top","3px"),nt(s,"class","controlElement svelte-1tlkntj")},m(v,k){_i(v,t,k),W(t,e),W(t,i),W(t,s),W(s,r),Me(r,n[27].dataTitle),W(s,a),W(s,o),W(s,l),W(s,c),Me(c,n[27].data),h||(f=[le(r,"input",p),le(c,"input",m)],h=!0)},p(v,k){n=v,k&128&&r.value!==n[27].dataTitle&&Me(r,n[27].dataTitle),k&128&&c.value!==n[27].data&&Me(c,n[27].data)},d(v){v&&An(t),h=!1,sn(f)}}}function km(n){let t,e,i,s,r,a,o,l,c,h,f,p,m,v,k,_,E,T,I,F,L,V,$,G,K,et,lt,rt,vt,st,Q,ht,he,te,ne,It,Ft,Ht,zt,Gt,w,b,y,D,O,P,q,H,U,Z,mt,Rt,yt,Bt,jt,ie,ye,ge,pn,Re,$e,xi,wi,Fn,Ae,rn,He,ki,Le=n[7],Kt=[];for(let xt=0;xtChart Type

    -

    Choose a Chart Type

    `,c=J("td"),h=J("select"),f=J("option"),f.textContent="Bar",p=J("option"),p.textContent="Line",m=J("option"),m.textContent="Pie",v=J("option"),v.textContent="Doughnut",k=J("option"),k.textContent="Radar",_=J("option"),_.textContent="Polar Area",E=Yt(),T=J("tr"),I=J("td"),I.innerHTML=`

    Smoothness

    -

    Changes the smoothness of the Chart

    `,F=J("td"),L=J("input"),V=Yt(),$=J("tr"),G=J("td"),G.innerHTML=`

    Width

    -

    Changes the horizontal width

    `,K=J("td"),et=J("input"),lt=Yt(),rt=J("tr"),vt=J("td"),vt.innerHTML=`

    Fill

    -

    Fill the underside of the Chart

    `,st=J("td"),Q=J("input"),ht=Yt(),he=J("tr"),te=J("td"),te.innerHTML=`

    Distinct Colors

    -

    Use distinct Colors for each Label

    `,ne=J("td"),It=J("input"),Ft=Yt(),Ht=J("tr"),zt=J("td"),zt.innerHTML=`

    Start at Zero

    -

    Don't cut the graph at the bottom

    `,Gt=J("td"),w=J("input"),b=Yt(),y=J("hr"),D=Yt(),O=J("table"),P=J("tr"),q=J("td"),q.innerHTML=`

    X Axis

    -

    Set Labels (Comma seperated)

    `,H=Yt(),U=J("td"),Z=J("input"),mt=J("br"),Rt=Yt(),yt=J("hr"),Bt=Yt(),jt=J("table");for(let xt=0;xtn[13].call(h)),nt(c,"class","controlElement svelte-1tlkntj"),nt(I,"class","desc svelte-1tlkntj"),nt(L,"type","range"),nt(L,"min","0"),nt(L,"max","100"),nt(L,"class","slider"),nt(F,"class","controlElement svelte-1tlkntj"),nt(G,"class","desc svelte-1tlkntj"),nt(et,"type","range"),nt(et,"min","20"),nt(et,"max","100"),nt(et,"class","slider"),nt(K,"class","controlElement svelte-1tlkntj"),nt(vt,"class","desc svelte-1tlkntj"),nt(Q,"type","checkbox"),nt(Q,"class","task-list-item-checkbox"),ce(Q,"width","16px"),ce(Q,"height","16px"),nt(st,"class","controlElement svelte-1tlkntj"),nt(te,"class","desc svelte-1tlkntj"),nt(It,"type","checkbox"),nt(It,"class","task-list-item-checkbox"),ce(It,"width","16px"),ce(It,"height","16px"),nt(ne,"class","controlElement svelte-1tlkntj"),nt(zt,"class","desc svelte-1tlkntj"),nt(w,"type","checkbox"),nt(w,"class","task-list-item-checkbox"),ce(w,"width","16px"),ce(w,"height","16px"),nt(Gt,"class","controlElement svelte-1tlkntj"),ce(a,"width","100%"),nt(a,"class","svelte-1tlkntj"),nt(q,"class","desc svelte-1tlkntj"),nt(Z,"type","text"),nt(Z,"placeholder","Monday, Tuesday, ..."),nt(U,"class","controlElement svelte-1tlkntj"),ce(O,"width","100%"),nt(O,"class","svelte-1tlkntj"),nt(ye,"class","addMoreButtonContainer svelte-1tlkntj"),ce(jt,"width","100%"),nt(jt,"class","svelte-1tlkntj"),nt($e,"id","preview"),nt(Re,"class","chartPreview svelte-1tlkntj"),nt(s,"class","modalColumn svelte-1tlkntj"),nt(t,"class","chart-modal svelte-1tlkntj"),nt(rn,"class","mod-cta"),ce(Ae,"display","flex"),ce(Ae,"justify-content","center"),ce(Ae,"align-items","center")},m(xt,ee){_i(xt,t,ee),W(t,e),W(t,i),W(t,s),W(s,r),W(r,a),W(a,o),W(o,l),W(o,c),W(c,h),W(h,f),W(h,p),W(h,m),W(h,v),W(h,k),W(h,_),ea(h,n[0]),W(a,E),W(a,T),W(T,I),W(T,F),W(F,L),Me(L,n[1]),W(a,V),W(a,$),W($,G),W($,K),W(K,et),Me(et,n[2]),W(a,lt),W(a,rt),W(rt,vt),W(rt,st),W(st,Q),Q.checked=n[3],W(a,ht),W(a,he),W(he,te),W(he,ne),W(ne,It),It.checked=n[4],W(a,Ft),W(a,Ht),W(Ht,zt),W(Ht,Gt),W(Gt,w),w.checked=n[5],W(r,b),W(r,y),W(r,D),W(r,O),W(O,P),W(P,q),W(P,H),W(P,U),W(U,Z),Me(Z,n[6]),W(U,mt),W(r,Rt),W(r,yt),W(r,Bt),W(r,jt);for(let Vt=0;Vt{var ht;o&&o.destroy(),(ht=_.lastElementChild)===null||ht===void 0||ht.remove(),o=s.renderRaw(s.datasetPrep((0,Ss.parseYaml)(st)),Q)},500,!0);function T(){let st=i.getDoc(),Q=st.getCursor();o.destroy(),st.replaceRange("```chart\n"+k+"\n```",Q),r("close")}function I(){a=fc(this),e(0,a)}function F(){l=ta(this.value),e(1,l)}function L(){c=ta(this.value),e(2,c)}function V(){h=this.checked,e(3,h)}function $(){f=this.checked,e(4,f)}function G(){p=this.checked,e(5,p)}function K(){m=this.value,e(6,m)}function et(st,Q){st[Q].dataTitle=this.value,e(7,v)}function lt(st,Q){st[Q].data=this.value,e(7,v)}let rt=()=>e(7,v=[...v,{data:"",dataTitle:""}]);function vt(st){ws[st?"unshift":"push"](()=>{_=st,e(8,_)})}return n.$$set=st=>{"editor"in st&&e(10,i=st.editor),"renderer"in st&&e(11,s=st.renderer)},n.$$.update=()=>{if(n.$$.dirty&255){t:e(12,k=`type: ${a} +`):n}function D0(n,t){let{element:e,datasetIndex:i,index:s}=t,r=n.getDatasetMeta(i).controller,{label:a,value:o}=r.getLabelAndValue(s);return{chart:n,label:a,parsed:r.getParsed(s),raw:n.data.datasets[i].data[s],formattedValue:o,dataset:r.getDataset(),dataIndex:s,datasetIndex:i,element:e}}function nh(n,t){let e=n.chart.ctx,{body:i,footer:s,title:r}=n,{boxWidth:a,boxHeight:o}=t,l=Ht(t.bodyFont),c=Ht(t.titleFont),u=Ht(t.footerFont),d=r.length,p=s.length,m=i.length,b=Qt(t.padding),x=b.height,M=0,A=i.reduce((L,F)=>L+F.before.length+F.lines.length+F.after.length,0);if(A+=n.beforeBody.length+n.afterBody.length,d&&(x+=d*c.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),A){let L=t.displayColors?Math.max(o,l.lineHeight):l.lineHeight;x+=m*L+(A-m)*l.lineHeight+(A-1)*t.bodySpacing}p&&(x+=t.footerMarginTop+p*u.lineHeight+(p-1)*t.footerSpacing);let R=0,I=function(L){M=Math.max(M,e.measureText(L).width+R)};return e.save(),e.font=c.string,Mt(n.title,I),e.font=l.string,Mt(n.beforeBody.concat(n.afterBody),I),R=t.displayColors?a+2+t.boxPadding:0,Mt(i,L=>{Mt(L.before,I),Mt(L.lines,I),Mt(L.after,I)}),R=0,e.font=u.string,Mt(n.footer,I),e.restore(),M+=b.width,{width:M,height:x}}function A0(n,t){let{y:e,height:i}=t;return en.height-i/2?"bottom":"center"}function L0(n,t,e,i){let{x:s,width:r}=i,a=e.caretSize+e.caretPadding;if(n==="left"&&s+r+a>t.width||n==="right"&&s-r-a<0)return!0}function R0(n,t,e,i){let{x:s,width:r}=e,{width:a,chartArea:{left:o,right:l}}=n,c="center";return i==="center"?c=s<=(o+l)/2?"left":"right":s<=r/2?c="left":s>=a-r/2&&(c="right"),L0(c,n,t,e)&&(c="center"),c}function ih(n,t,e){let i=e.yAlign||t.yAlign||A0(n,e);return{xAlign:e.xAlign||t.xAlign||R0(n,t,e,i),yAlign:i}}function F0(n,t){let{x:e,width:i}=n;return t==="right"?e-=i:t==="center"&&(e-=i/2),e}function $0(n,t,e){let{y:i,height:s}=n;return t==="top"?i+=e:t==="bottom"?i-=s+e:i-=s/2,i}function sh(n,t,e,i){let{caretSize:s,caretPadding:r,cornerRadius:a}=n,{xAlign:o,yAlign:l}=e,c=s+r,{topLeft:u,topRight:d,bottomLeft:p,bottomRight:m}=bn(a),b=F0(t,o),x=$0(t,l,c);return l==="center"?o==="left"?b+=c:o==="right"&&(b-=c):o==="left"?b-=Math.max(u,p)+s:o==="right"&&(b+=Math.max(d,m)+s),{x:Wt(b,0,i.width-t.width),y:Wt(x,0,i.height-t.height)}}function Os(n,t,e){let i=Qt(e.padding);return t==="center"?n.x+n.width/2:t==="right"?n.x+n.width-i.right:n.x+i.left}function rh(n){return Fe([],qe(n))}function I0(n,t,e){return Ve(n,{tooltip:t,tooltipItems:e,type:"tooltip"})}function ah(n,t){let e=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return e?n.override(e):n}var Es=class extends xe{constructor(t){super();this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart||t._chart,this._chart=this.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){let t=this._cachedAnimations;if(t)return t;let e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,r=new ta(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(r)),r}getContext(){return this.$context||(this.$context=I0(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,e){let{callbacks:i}=e,s=i.beforeTitle.apply(this,[t]),r=i.title.apply(this,[t]),a=i.afterTitle.apply(this,[t]),o=[];return o=Fe(o,qe(s)),o=Fe(o,qe(r)),o=Fe(o,qe(a)),o}getBeforeBody(t,e){return rh(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){let{callbacks:i}=e,s=[];return Mt(t,r=>{let a={before:[],lines:[],after:[]},o=ah(i,r);Fe(a.before,qe(o.beforeLabel.call(this,r))),Fe(a.lines,o.label.call(this,r)),Fe(a.after,qe(o.afterLabel.call(this,r))),s.push(a)}),s}getAfterBody(t,e){return rh(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){let{callbacks:i}=e,s=i.beforeFooter.apply(this,[t]),r=i.footer.apply(this,[t]),a=i.afterFooter.apply(this,[t]),o=[];return o=Fe(o,qe(s)),o=Fe(o,qe(r)),o=Fe(o,qe(a)),o}_createItems(t){let e=this._active,i=this.chart.data,s=[],r=[],a=[],o=[],l,c;for(l=0,c=e.length;lt.filter(u,d,p,i))),t.itemSort&&(o=o.sort((u,d)=>t.itemSort(u,d,i))),Mt(o,u=>{let d=ah(t.callbacks,u);s.push(d.labelColor.call(this,u)),r.push(d.labelPointStyle.call(this,u)),a.push(d.labelTextColor.call(this,u))}),this.labelColors=s,this.labelPointStyles=r,this.labelTextColors=a,this.dataPoints=o,o}update(t,e){let i=this.options.setContext(this.getContext()),s=this._active,r,a=[];if(!s.length)this.opacity!==0&&(r={opacity:0});else{let o=Fi[i.position].call(this,s,this._eventPosition);a=this._createItems(i),this.title=this.getTitle(a,i),this.beforeBody=this.getBeforeBody(a,i),this.body=this.getBody(a,i),this.afterBody=this.getAfterBody(a,i),this.footer=this.getFooter(a,i);let l=this._size=nh(this,i),c=Object.assign({},o,l),u=ih(this.chart,i,c),d=sh(i,c,u,this.chart);this.xAlign=u.xAlign,this.yAlign=u.yAlign,r={opacity:1,x:d.x,y:d.y,width:l.width,height:l.height,caretX:o.x,caretY:o.y}}this._tooltipItems=a,this.$context=void 0,r&&this._resolveAnimations().update(this,r),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){let r=this.getCaretPosition(t,i,s);e.lineTo(r.x1,r.y1),e.lineTo(r.x2,r.y2),e.lineTo(r.x3,r.y3)}getCaretPosition(t,e,i){let{xAlign:s,yAlign:r}=this,{caretSize:a,cornerRadius:o}=i,{topLeft:l,topRight:c,bottomLeft:u,bottomRight:d}=bn(o),{x:p,y:m}=t,{width:b,height:x}=e,M,A,R,I,L,F;return r==="center"?(L=m+x/2,s==="left"?(M=p,A=M-a,I=L+a,F=L-a):(M=p+b,A=M+a,I=L-a,F=L+a),R=M):(s==="left"?A=p+Math.max(l,u)+a:s==="right"?A=p+b-Math.max(c,d)-a:A=this.caretX,r==="top"?(I=m,L=I-a,M=A-a,R=A+a):(I=m+x,L=I+a,M=A+a,R=A-a),F=I),{x1:M,x2:A,x3:R,y1:I,y2:L,y3:F}}drawTitle(t,e,i){let s=this.title,r=s.length,a,o,l;if(r){let c=yn(i.rtl,this.x,this.width);for(t.x=Os(this,i.titleAlign,i),e.textAlign=c.textAlign(i.titleAlign),e.textBaseline="middle",a=Ht(i.titleFont),o=i.titleSpacing,e.fillStyle=i.titleColor,e.font=a.string,l=0;lI!==0)?(t.beginPath(),t.fillStyle=r.multiKeyBackground,bi(t,{x:M,y:x,w:c,h:l,radius:R}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),bi(t,{x:A,y:x+1,w:c-2,h:l-2,radius:R}),t.fill()):(t.fillStyle=r.multiKeyBackground,t.fillRect(M,x,c,l),t.strokeRect(M,x,c,l),t.fillStyle=a.backgroundColor,t.fillRect(A,x+1,c-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){let{body:s}=this,{bodySpacing:r,bodyAlign:a,displayColors:o,boxHeight:l,boxWidth:c,boxPadding:u}=i,d=Ht(i.bodyFont),p=d.lineHeight,m=0,b=yn(i.rtl,this.x,this.width),x=function(G){e.fillText(G,b.x(t.x+m),t.y+p/2),t.y+=p+r},M=b.textAlign(a),A,R,I,L,F,B,H;for(e.textAlign=a,e.textBaseline="middle",e.font=d.string,t.x=Os(this,M,i),e.fillStyle=i.bodyColor,Mt(this.beforeBody,x),m=o&&M!=="right"?a==="center"?c/2+u:c+2+u:0,L=0,B=s.length;L0&&e.stroke()}_updateAnimationTarget(t){let e=this.chart,i=this.$animations,s=i&&i.x,r=i&&i.y;if(s||r){let a=Fi[t.position].call(this,this._active,this._eventPosition);if(!a)return;let o=this._size=nh(this,t),l=Object.assign({},a,this._size),c=ih(e,t,l),u=sh(t,l,c,e);(s._to!==u.x||r._to!==u.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=o.width,this.height=o.height,this.caretX=a.x,this.caretY=a.y,this._resolveAnimations().update(this,u))}}draw(t){let e=this.options.setContext(this.getContext()),i=this.opacity;if(!i)return;this._updateAnimationTarget(e);let s={width:this.width,height:this.height},r={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;let a=Qt(e.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&o&&(t.save(),t.globalAlpha=i,this.drawBackground(r,t,s,e),Kr(t,e.textDirection),r.y+=a.top,this.drawTitle(r,t,e),this.drawBody(r,t,e),this.drawFooter(r,t,e),Zr(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){let i=this._active,s=t.map(({datasetIndex:o,index:l})=>{let c=this.chart.getDatasetMeta(o);if(!c)throw new Error("Cannot find a dataset at index "+o);return{datasetIndex:o,element:c.data[l],index:l}}),r=!ai(i,s),a=this._positionChanged(s,e);(r||a)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let s=this.options,r=this._active||[],a=this._getActiveElements(t,r,e,i),o=this._positionChanged(a,t),l=e||!ai(a,r)||o;return l&&(this._active=a,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),l}_getActiveElements(t,e,i,s){let r=this.options;if(t.type==="mouseout")return[];if(!s)return e;let a=this.chart.getElementsAtEventForMode(t,r.mode,r,i);return r.reverse&&a.reverse(),a}_positionChanged(t,e){let{caretX:i,caretY:s,options:r}=this,a=Fi[r.position].call(this,t,e);return a!==!1&&(i!==a.x||s!==a.y)}};Es.positioners=Fi;var z0={id:"tooltip",_element:Es,positioners:Fi,afterInit(n,t,e){e&&(n.tooltip=new Es({chart:n,options:e}))},beforeUpdate(n,t,e){n.tooltip&&n.tooltip.initialize(e)},reset(n,t,e){n.tooltip&&n.tooltip.initialize(e)},afterDraw(n){let t=n.tooltip,e={tooltip:t};n.notifyPlugins("beforeTooltipDraw",e)!==!1&&(t&&t.draw(n.ctx),n.notifyPlugins("afterTooltipDraw",e))},afterEvent(n,t){if(n.tooltip){let e=t.replay;n.tooltip.handleEvent(t.event,e,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(n,t)=>t.bodyFont.size,boxWidth:(n,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:Ae,title(n){if(n.length>0){let t=n[0],e=t.chart.data.labels,i=e?e.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndexn!=="filter"&&n!=="itemSort"&&n!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},B0=Object.freeze({__proto__:null,Decimation:o0,Filler:S0,Legend:T0,SubTitle:E0,Title:O0,Tooltip:z0}),j0=(n,t,e,i)=>(typeof t=="string"?(e=n.push(t)-1,i.unshift({index:e,label:t})):isNaN(t)&&(e=null),e);function N0(n,t,e,i){let s=n.indexOf(t);if(s===-1)return j0(n,t,e,i);let r=n.lastIndexOf(t);return s!==r?e:s}var H0=(n,t)=>n===null?null:Wt(Math.round(n),0,t),$i=class extends ln{constructor(t){super(t);this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){let e=this._addedLabels;if(e.length){let i=this.getLabels();for(let{index:s,label:r}of e)i[s]===r&&i.splice(s,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(_t(t))return null;let i=this.getLabels();return e=isFinite(e)&&i[e]===t?e:N0(i,t,at(e,t),this._addedLabels),H0(e,i.length-1)}determineDataLimits(){let{minDefined:t,maxDefined:e}=this.getUserBounds(),{min:i,max:s}=this.getMinMax(!0);this.options.bounds==="ticks"&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){let t=this.min,e=this.max,i=this.options.offset,s=[],r=this.getLabels();r=t===0&&e===r.length-1?r:r.slice(t,e+1),this._valueRange=Math.max(r.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let a=t;a<=e;a++)s.push({value:a});return s}getLabelForValue(t){let e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}};$i.id="category";$i.defaults={ticks:{callback:$i.prototype.getLabelForValue}};function V0(n,t){let e=[],i=1e-14,{bounds:s,step:r,min:a,max:o,precision:l,count:c,maxTicks:u,maxDigits:d,includeBounds:p}=n,m=r||1,b=u-1,{min:x,max:M}=t,A=!_t(a),R=!_t(o),I=!_t(c),L=(M-x)/(d+1),F=Cr((M-x)/b/m)*m,B,H,G,Z;if(Fb&&(F=Cr(Z*F/b/m)*m),_t(l)||(B=Math.pow(10,l),F=Math.ceil(F*B)/B),s==="ticks"?(H=Math.floor(x/F)*F,G=Math.ceil(M/F)*F):(H=x,G=M),A&&R&&r&&pl((o-a)/r,F/1e3)?(Z=Math.round(Math.min((o-a)/F,u)),F=(o-a)/Z,H=a,G=o):I?(H=A?a:H,G=R?o:G,Z=c-1,F=(G-H)/Z):(Z=(G-H)/F,zn(Z,Math.round(Z),F/1e3)?Z=Math.round(Z):Z=Math.ceil(Z));let nt=Math.max(Pr(F),Pr(H));B=Math.pow(10,_t(l)?nt:l),H=Math.round(H*B)/B,G=Math.round(G*B)/B;let ot=0;for(A&&(p&&H!==a?(e.push({value:a}),Hs=e?s:l,o=l=>r=i?r:l;if(t){let l=Me(s),c=Me(r);l<0&&c<0?o(0):l>0&&c>0&&a(0)}if(s===r){let l=1;(r>=Number.MAX_SAFE_INTEGER||s<=Number.MIN_SAFE_INTEGER)&&(l=Math.abs(r*.05)),o(r+l),t||a(s-l)}this.min=s,this.max=r}getTickLimit(){let t=this.options.ticks,{maxTicksLimit:e,stepSize:i}=t,s;return i?(s=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),e=e||11),e&&(s=Math.min(e,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){let t=this.options,e=t.ticks,i=this.getTickLimit();i=Math.max(2,i);let s={maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:e.includeBounds!==!1},r=this._range||this,a=V0(s,r);return t.bounds==="ticks"&&Tr(a,this,"value"),t.reverse?(a.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),a}configure(){let t=this.ticks,e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){let s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return Vn(t,this.chart.options.locale,this.options.ticks.format)}},Ds=class extends Ii{determineDataLimits(){let{min:t,max:e}=this.getMinMax(!0);this.min=Ft(t)?t:0,this.max=Ft(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){let t=this.isHorizontal(),e=t?this.width:this.height,i=_e(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,r=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,r.lineHeight/s))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}};Ds.id="linear";Ds.defaults={ticks:{callback:ks.formatters.numeric}};function lh(n){return n/Math.pow(10,Math.floor(be(n)))===1}function W0(n,t){let e=Math.floor(be(t.max)),i=Math.ceil(t.max/Math.pow(10,e)),s=[],r=ge(n.min,Math.pow(10,Math.floor(be(t.min)))),a=Math.floor(be(r)),o=Math.floor(r/Math.pow(10,a)),l=a<0?Math.pow(10,Math.abs(a)):1;do s.push({value:r,major:lh(r)}),++o,o===10&&(o=1,++a,l=a>=0?1:l),r=Math.round(o*Math.pow(10,a)*l)/l;while(a0?i:null}determineDataLimits(){let{min:t,max:e}=this.getMinMax(!0);this.min=Ft(t)?Math.max(0,t):null,this.max=Ft(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:t,maxDefined:e}=this.getUserBounds(),i=this.min,s=this.max,r=l=>i=t?i:l,a=l=>s=e?s:l,o=(l,c)=>Math.pow(10,Math.floor(be(l))+c);i===s&&(i<=0?(r(1),a(10)):(r(o(i,-1)),a(o(s,1)))),i<=0&&r(o(s,-1)),s<=0&&a(o(i,1)),this._zero&&this.min!==this._suggestedMin&&i===o(this.min,0)&&r(o(i,-1)),this.min=i,this.max=s}buildTicks(){let t=this.options,e={min:this._userMin,max:this._userMax},i=W0(e,this);return t.bounds==="ticks"&&Tr(i,this,"value"),t.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(t){return t===void 0?"0":Vn(t,this.chart.options.locale,this.options.ticks.format)}configure(){let t=this.min;super.configure(),this._startValue=be(t),this._valueRange=be(this.max)-be(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(be(t)-this._startValue)/this._valueRange)}getValueForPixel(t){let e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}};As.id="logarithmic";As.defaults={ticks:{callback:ks.formatters.logarithmic,major:{enabled:!0}}};function xa(n){let t=n.ticks;if(t.display&&n.display){let e=Qt(t.backdropPadding);return at(t.font&&t.font.size,dt.font.size)+e.height}return 0}function Y0(n,t,e){return e=Ot(e)?e:[e],{w:Pl(n,t.string,e),h:e.length*t.lineHeight}}function ch(n,t,e,i,s){return n===i||n===s?{start:t-e/2,end:t+e/2}:ns?{start:t-e,end:t}:{start:t,end:t+e}}function G0(n){let t={l:n.left+n._padding.left,r:n.right-n._padding.right,t:n.top+n._padding.top,b:n.bottom-n._padding.bottom},e=Object.assign({},t),i=[],s=[],r=n._pointLabels.length,a=n.options.pointLabels,o=a.centerPointLabels?At/r:0;for(let l=0;lt.r&&(o=(i.end-t.r)/r,n.r=Math.max(n.r,t.r+o)),s.startt.b&&(l=(s.end-t.b)/a,n.b=Math.max(n.b,t.b+l))}function U0(n,t,e){let i=[],s=n._pointLabels.length,r=n.options,a=xa(r)/2,o=n.drawingArea,l=r.pointLabels.centerPointLabels?At/s:0;for(let c=0;c270||e<90)&&(n-=t),n}function J0(n,t){let{ctx:e,options:{pointLabels:i}}=n;for(let s=t-1;s>=0;s--){let r=i.setContext(n.getPointLabelContext(s)),a=Ht(r.font),{x:o,y:l,textAlign:c,left:u,top:d,right:p,bottom:m}=n._pointLabelItems[s],{backdropColor:b}=r;if(!_t(b)){let x=Qt(r.backdropPadding);e.fillStyle=b,e.fillRect(u-x.left,d-x.top,p-u+x.width,m-d+x.height)}an(e,n._pointLabels[s],o,l+a.lineHeight/2,a,{color:r.color,textAlign:c,textBaseline:"middle"})}}function hh(n,t,e,i){let{ctx:s}=n;if(e)s.arc(n.xCenter,n.yCenter,t,0,Pt);else{let r=n.getPointPosition(0,t);s.moveTo(r.x,r.y);for(let a=1;a{let s=Et(this.options.pointLabels.callback,[e,i],this);return s||s===0?s:""}).filter((e,i)=>this.chart.getDataVisibility(i))}fit(){let t=this.options;t.display&&t.pointLabels.display?G0(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){let e=Pt/(this._pointLabels.length||1),i=this.options.startAngle||0;return ae(t*e+_e(i))}getDistanceFromCenterForValue(t){if(_t(t))return NaN;let e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(_t(t))return NaN;let e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){let e=this._pointLabels||[];if(t>=0&&t{if(u!==0){o=this.getDistanceFromCenterForValue(c.value);let d=s.setContext(this.getContext(u-1));Q0(this,d,o,r)}}),i.display){for(t.save(),a=r-1;a>=0;a--){let c=i.setContext(this.getPointLabelContext(a)),{color:u,lineWidth:d}=c;!d||!u||(t.lineWidth=d,t.strokeStyle=u,t.setLineDash(c.borderDash),t.lineDashOffset=c.borderDashOffset,o=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),l=this.getPointPosition(a,o),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){let t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;let s=this.getIndexAngle(0),r,a;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((o,l)=>{if(l===0&&!e.reverse)return;let c=i.setContext(this.getContext(l)),u=Ht(c.font);if(r=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){t.font=u.string,a=t.measureText(o.label).width,t.fillStyle=c.backdropColor;let d=Qt(c.backdropPadding);t.fillRect(-a/2-d.left,-r-u.size/2-d.top,a+d.width,u.size+d.height)}an(t,o.label,0,-r,u,{color:c.color})}),t.restore()}drawTitle(){}};Gn.id="radialLinear";Gn.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:ks.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(n){return n},padding:5,centerPointLabels:!1}};Gn.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};Gn.descriptors={angleLines:{_fallback:"grid"}};var Ls={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},le=Object.keys(Ls);function ev(n,t){return n-t}function uh(n,t){if(_t(t))return null;let e=n._adapter,{parser:i,round:s,isoWeekday:r}=n._parseOpts,a=t;return typeof i=="function"&&(a=i(a)),Ft(a)||(a=typeof i=="string"?e.parse(a,i):e.parse(a)),a===null?null:(s&&(a=s==="week"&&(In(r)||r===!0)?e.startOf(a,"isoWeek",r):e.startOf(a,s)),+a)}function fh(n,t,e,i){let s=le.length;for(let r=le.indexOf(n);r=le.indexOf(e);r--){let a=le[r];if(Ls[a].common&&n._adapter.diff(s,i,a)>=t-1)return a}return le[e?le.indexOf(e):0]}function iv(n){for(let t=le.indexOf(n)+1,e=le.length;t=t?e[i]:e[s];n[r]=!0}}function sv(n,t,e,i){let s=n._adapter,r=+s.startOf(t[0].value,i),a=t[t.length-1].value,o,l;for(o=r;o<=a;o=+s.add(o,1,i))l=e[o],l>=0&&(t[l].major=!0);return t}function ph(n,t,e){let i=[],s={},r=t.length,a,o;for(a=0;a1e5*o)throw new Error(e+" and "+i+" are too far apart with stepSize of "+o+" "+a);let b=s.ticks.source==="data"&&this.getDataTimestamps();for(p=d,m=0;px-M).map(x=>+x)}getLabelForValue(t){let e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,s){let r=this.options,a=r.time.displayFormats,o=this._unit,l=this._majorUnit,c=o&&a[o],u=l&&a[l],d=i[e],p=l&&u&&d&&d.major,m=this._adapter.format(t,s||(p?u:c)),b=r.ticks.callback;return b?Et(b,[m,e,i],this):m}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?o:1}getDataTimestamps(){let t=this._cache.data||[],e,i;if(t.length)return t;let s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(e=0,i=s.length;e=n[i].pos&&t<=n[s].pos&&({lo:i,hi:s}=Re(n,"pos",t)),{pos:r,time:o}=n[i],{pos:a,time:l}=n[s]):(t>=n[i].time&&t<=n[s].time&&({lo:i,hi:s}=Re(n,"time",t)),{time:r,pos:o}=n[i],{time:a,pos:l}=n[s]);let c=a-r;return c?o+(l-o)*(t-r)/c:o}var Fs=class extends qn{constructor(t){super(t);this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Rs(e,this.min),this._tableRange=Rs(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){let{min:e,max:i}=this,s=[],r=[],a,o,l,c,u;for(a=0,o=t.length;a=e&&c<=i&&s.push(c);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(a=0,o=s.length;a(0,bh.default)(e.trim()).alpha(t).hex())}function Xe(n,t){var i,s;let e=t.createDiv({cls:"chart-error"});e.createEl("b",{text:"Couldn't render Chart:"}),e.createEl("pre").createEl("code",{text:(s=(i=n.toString)==null?void 0:i.call(n))!=null?s:n}),e.createEl("hr"),e.createEl("span").innerHTML="You might also want to look for further Errors in the Console: Press CTRL + SHIFT + I to open it."}function ov(n){for(var t=window.atob(n),e=t.length,i=new Uint8Array(e),s=0;s` - title: ${r.dataTitle} + data: [${r.data}]`).join(` +`)} +width: 80% +beginAtZero: true +\`\`\``;n.replaceSelection(s)}function Ca(n,t,e){let i;try{i=kh.Extractor.extractObject(n,t,!1)}catch(a){throw new wh.Notice("Table malformed"),a}let s=Object.keys(Object.values(i)[0]),r=Object.keys(i).map(a=>({dataTitle:a,data:Object.values(i[a])}));return e&&(r=r.filter(a=>e.contains(a.dataTitle))),{labels:s,dataFields:r}}oe.register(...gh);var zs=class{constructor(t){this.plugin=t}async datasetPrep(t,e,i=!1){var c,u,d,p;let s=[];if(!t.id){let m=[];if(this.plugin.settings.themeable||i){let b=1;for(;;){let x=getComputedStyle(e).getPropertyValue(`--chart-color-${b}`);if(x)m.push(x),b++;else break}}for(let b=0;t.series.length>b;b++)s.push({label:(c=t.series[b].title)!=null?c:"",data:t.series[b].data,backgroundColor:t.labelColors?m.length?Ue(m,t.transparency):Ue(this.plugin.settings.colors,t.transparency):m.length?Ue(m,t.transparency)[b]:Ue(this.plugin.settings.colors,t.transparency)[b],borderColor:t.labelColors?m.length?m:this.plugin.settings.colors:m.length?m[b]:this.plugin.settings.colors[b],borderWidth:1,fill:t.fill?t.stacked?b==0?"origin":"-1":!0:!1,tension:(u=t.tension)!=null?u:0})}let r=t.time?{type:"time",time:{unit:t.time}}:null,a=t.labels,o=getComputedStyle(e).getPropertyValue("--background-modifier-border"),l;return oe.defaults.color=getComputedStyle(e).getPropertyValue("--text-muted"),oe.defaults.font.family=getComputedStyle(e).getPropertyValue("--mermaid-font"),oe.defaults.plugins=ri(si({},oe.defaults.plugins),{legend:ri(si({},oe.defaults.plugins.legend),{display:(d=t.legend)!=null?d:!0,position:(p=t.legendPosition)!=null?p:"top"})}),oe.defaults.layout.padding=t.padding,t.type=="radar"||t.type=="polarArea"?l={type:t.type,data:{labels:a,datasets:s},options:{scales:{r:ri(si({},r),{grid:{color:o},beginAtZero:t.beginAtZero,max:t.rMax,min:t.rMin,ticks:{backdropColor:o}})}}}:t.type=="bar"||t.type=="line"?l={type:t.type,data:{labels:a,datasets:s},options:{indexAxis:t.indexAxis,spanGaps:t.spanGaps,scales:{y:{min:t.yMin,max:t.yMax,reverse:t.yReverse,ticks:{display:t.yTickDisplay,padding:t.yTickPadding},display:t.yDisplay,stacked:t.stacked,beginAtZero:t.beginAtZero,grid:{color:o},title:{display:t.yTitle,text:t.yTitle}},x:ri(si({},r),{min:t.xMin,max:t.xMax,reverse:t.xReverse,ticks:{display:t.xTickDisplay,padding:t.xTickPadding},display:t.xDisplay,stacked:t.stacked,grid:{color:o},title:{display:t.xTitle,text:t.xTitle}})}}}:l={type:t.type,data:{labels:a,datasets:s},options:{spanGaps:t.spanGaps}},{chartOptions:l,width:t.width}}async imageRenderer(t,e){let i=l=>new Promise(c=>setTimeout(c,l)),s=document.createElement("canvas"),r=s.getContext("2d"),a=await this.datasetPrep(await(0,Is.parseYaml)(t.replace("```chart","").replace("```","").replace(/\t/g," ")),document.body);new oe(r,a.chartOptions),document.body.append(s),await i(250);let o=s.toDataURL(e.format,e.quality);return document.body.removeChild(s),o.substring(o.indexOf(",")+1)}renderRaw(t,e){var s;let i=e.createEl("canvas");if(t.chartOptions)try{let r=new oe(i.getContext("2d"),t.chartOptions);return i.parentElement.style.width=(s=t.width)!=null?s:"100%",i.parentElement.style.margin="auto",r}catch(r){return Xe(r,e),null}else try{return new oe(i.getContext("2d"),t)}catch(r){return Xe(r,e),null}}async renderFromYaml(t,e,i){this.plugin.app.workspace.onLayoutReady(()=>i.addChild(new Sh(t,e,this,i.sourcePath)))}},Sh=class extends Is.MarkdownRenderChild{constructor(t,e,i,s){super(e);this.el=e,this.data=t,this.renderer=i,this.ownPath=s,this.changeHandler=this.changeHandler.bind(this),this.reload=this.reload.bind(this)}async onload(){var t,e,i,s;try{let r=await this.renderer.datasetPrep(this.data,this.el),a={};if(this.data.id){let o=[];if(this.renderer.plugin.settings.themeable){let p=1;for(;;){let m=getComputedStyle(this.el).getPropertyValue(`--chart-color-${p}`);if(m)o.push(m),p++;else break}}a.datasets=[];let l;this.data.file&&(l=this.renderer.plugin.app.metadataCache.getFirstLinkpathDest(this.data.file,this.renderer.plugin.app.workspace.getActiveFile().path));let c=(t=this.renderer.plugin.app.metadataCache.getFileCache(l!=null?l:this.renderer.plugin.app.vault.getAbstractFileByPath(this.ownPath)).sections.find(p=>p.id===this.data.id))==null?void 0:t.position;if(!c)throw"Invalid id and/or file";let u=(await this.renderer.plugin.app.vault.cachedRead(this.data.file?l:this.renderer.plugin.app.vault.getAbstractFileByPath(this.ownPath))).substring(c.start.offset,c.end.offset),d;try{d=Ca(u,(e=this.data.layout)!=null?e:"columns",this.data.select)}catch(p){throw"There is no table at that id and/or file"}a.labels=d.labels;for(let p=0;d.dataFields.length>p;p++)a.datasets.push({label:(i=d.dataFields[p].dataTitle)!=null?i:"",data:d.dataFields[p].data,backgroundColor:this.data.labelColors?o.length?Ue(o,this.data.transparency):Ue(this.renderer.plugin.settings.colors,this.data.transparency):o.length?Ue(o,this.data.transparency)[p]:Ue(this.renderer.plugin.settings.colors,this.data.transparency)[p],borderColor:this.data.labelColors?o.length?o:this.renderer.plugin.settings.colors:o.length?o[p]:this.renderer.plugin.settings.colors[p],borderWidth:1,fill:this.data.fill?this.data.stacked?p==0?"origin":"-1":!0:!1,tension:(s=this.data.tension)!=null?s:0});r.chartOptions.data.labels=a.labels,r.chartOptions.data.datasets=a.datasets}this.chart=this.renderer.renderRaw(r,this.containerEl)}catch(r){Xe(r,this.el)}this.data.id&&this.renderer.plugin.app.metadataCache.on("changed",this.changeHandler),this.renderer.plugin.app.workspace.on("css-change",this.reload)}changeHandler(t){(this.data.file?t.basename===this.data.file:t.path===this.ownPath)&&this.reload()}reload(){this.onunload(),this.onload()}onunload(){this.renderer.plugin.app.metadataCache.off("changed",this.changeHandler),this.renderer.plugin.app.workspace.off("css-change",this.reload),this.el.empty(),this.chart&&this.chart.destroy(),this.chart=null}};var Bs={colors:["rgba(255, 99, 132, 1)","rgba(54, 162, 235, 1)","rgba(255, 206, 86, 1)","rgba(75, 192, 192, 1)","rgba(153, 102, 255, 1)","rgba(255, 159, 64, 1)"],contextMenu:!0,imageSettings:{format:"image/png",quality:.92},themeable:!1};var Ie=De(require("obsidian"));var Ta=function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")},Pa=function(){function n(t,e){for(var i=0;i1&&arguments[1]!==void 0?arguments[1]:1,e=t>0?n.toFixed(t).replace(/0+$/,"").replace(/\.$/,""):n.toString();return e||"0"}var uv=function(){function n(t,e,i,s){Ta(this,n);var r=this;function a(l){if(l.startsWith("hsl")){var c=l.match(/([\-\d\.e]+)/g).map(Number),u=js(c,4),d=u[0],p=u[1],m=u[2],b=u[3];b===void 0&&(b=1),d/=360,p/=100,m/=100,r.hsla=[d,p,m,b]}else if(l.startsWith("rgb")){var x=l.match(/([\-\d\.e]+)/g).map(Number),M=js(x,4),A=M[0],R=M[1],I=M[2],L=M[3];L===void 0&&(L=1),r.rgba=[A,R,I,L]}else l.startsWith("#")?r.rgba=n.hexToRgb(l):r.rgba=n.nameToRgb(l)||n.hexToRgb(l)}if(t!==void 0)if(Array.isArray(t))this.rgba=t;else if(i===void 0){var o=t&&""+t;o&&a(o.toLowerCase())}else this.rgba=[t,e,i,s===void 0?1:s]}return Pa(n,[{key:"printRGB",value:function(e){var i=e?this.rgba:this.rgba.slice(0,3),s=i.map(function(r,a){return Mh(r,a===3?3:0)});return e?"rgba("+s+")":"rgb("+s+")"}},{key:"printHSL",value:function(e){var i=[360,100,100,1],s=["","%","%",""],r=e?this.hsla:this.hsla.slice(0,3),a=r.map(function(o,l){return Mh(o*i[l],l===3?3:1)+s[l]});return e?"hsla("+a+")":"hsl("+a+")"}},{key:"printHex",value:function(e){var i=this.hex;return e?i:i.substring(0,7)}},{key:"rgba",get:function(){if(this._rgba)return this._rgba;if(!this._hsla)throw new Error("No color is set");return this._rgba=n.hslToRgb(this._hsla)},set:function(e){e.length===3&&(e[3]=1),this._rgba=e,this._hsla=null}},{key:"rgbString",get:function(){return this.printRGB()}},{key:"rgbaString",get:function(){return this.printRGB(!0)}},{key:"hsla",get:function(){if(this._hsla)return this._hsla;if(!this._rgba)throw new Error("No color is set");return this._hsla=n.rgbToHsl(this._rgba)},set:function(e){e.length===3&&(e[3]=1),this._hsla=e,this._rgba=null}},{key:"hslString",get:function(){return this.printHSL()}},{key:"hslaString",get:function(){return this.printHSL(!0)}},{key:"hex",get:function(){var e=this.rgba,i=e.map(function(s,r){return r<3?s.toString(16):Math.round(s*255).toString(16)});return"#"+i.map(function(s){return s.padStart(2,"0")}).join("")},set:function(e){this.rgba=n.hexToRgb(e)}}],[{key:"hexToRgb",value:function(e){var i=(e.startsWith("#")?e.slice(1):e).replace(/^(\w{3})$/,"$1F").replace(/^(\w)(\w)(\w)(\w)$/,"$1$1$2$2$3$3$4$4").replace(/^(\w{6})$/,"$1FF");if(!i.match(/^([0-9a-fA-F]{8})$/))throw new Error("Unknown hex color; "+e);var s=i.match(/^(\w\w)(\w\w)(\w\w)(\w\w)$/).slice(1).map(function(r){return parseInt(r,16)});return s[3]=s[3]/255,s}},{key:"nameToRgb",value:function(e){var i=e.toLowerCase().replace("at","T").replace(/[aeiouyldf]/g,"").replace("ght","L").replace("rk","D").slice(-5,4),s=hv[i];return s===void 0?s:n.hexToRgb(s.replace(/\-/g,"00").padStart(6,"f"))}},{key:"rgbToHsl",value:function(e){var i=js(e,4),s=i[0],r=i[1],a=i[2],o=i[3];s/=255,r/=255,a/=255;var l=Math.max(s,r,a),c=Math.min(s,r,a),u=void 0,d=void 0,p=(l+c)/2;if(l===c)u=d=0;else{var m=l-c;switch(d=p>.5?m/(2-l-c):m/(l+c),l){case s:u=(r-a)/m+(r1&&(R-=1),R<1/6?M+(A-M)*6*R:R<1/2?A:R<2/3?M+(A-M)*(2/3-R)*6:M},p=a<.5?a*(1+r):a+r-a*r,m=2*a-p;l=d(m,p,s+1/3),c=d(m,p,s),u=d(m,p,s-1/3)}var b=[l*255,c*255,u*255].map(Math.round);return b[3]=o,b}}]),n}(),fv=function(){function n(){Ta(this,n),this._events=[]}return Pa(n,[{key:"add",value:function(e,i,s){e.addEventListener(i,s,!1),this._events.push({target:e,type:i,handler:s})}},{key:"remove",value:function(e,i,s){this._events=this._events.filter(function(r){var a=!0;return e&&e!==r.target&&(a=!1),i&&i!==r.type&&(a=!1),s&&s!==r.handler&&(a=!1),a&&n._doRemove(r.target,r.type,r.handler),!a})}},{key:"destroy",value:function(){this._events.forEach(function(e){return n._doRemove(e.target,e.type,e.handler)}),this._events=[]}}],[{key:"_doRemove",value:function(e,i,s){e.removeEventListener(i,s,!1)}}]),n}();function dv(n){var t=document.createElement("div");return t.innerHTML=n,t.firstElementChild}function Oa(n,t,e){var i=!1;function s(l,c,u){return Math.max(c,Math.min(l,u))}function r(l,c,u){if(u&&(i=!0),!!i){l.preventDefault();var d=t.getBoundingClientRect(),p=d.width,m=d.height,b=c.clientX,x=c.clientY,M=s(b-d.left,0,p),A=s(x-d.top,0,m);e(M/p,A/m)}}function a(l,c){var u=l.buttons===void 0?l.which:l.buttons;u===1?r(l,l,c):i=!1}function o(l,c){l.touches.length===1?r(l,l.touches[0],c):i=!1}n.add(t,"mousedown",function(l){a(l,!0)}),n.add(t,"touchstart",function(l){o(l,!0)}),n.add(window,"mousemove",a),n.add(t,"touchmove",o),n.add(window,"mouseup",function(l){i=!1}),n.add(t,"touchend",function(l){i=!1}),n.add(t,"touchcancel",function(l){i=!1})}var pv=`linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%) 0 0 / 2em 2em, + linear-gradient(45deg, lightgrey 25%, white 25%, white 75%, lightgrey 75%) 1em 1em / 2em 2em`,gv=360,Ch="keydown",Ns="mousedown",Ea="focusin";function $e(n,t){return(t||document).querySelector(n)}function Th(n){n.preventDefault(),n.stopPropagation()}function Da(n,t,e,i,s){n.add(t,Ch,function(r){e.indexOf(r.key)>=0&&(s&&Th(r),i(r))})}var Aa=function(){function n(t){Ta(this,n),this.settings={popup:"right",layout:"default",alpha:!0,editor:!0,editorFormat:"hex",cancelButton:!1,defaultColor:"#0cf"},this._events=new fv,this.onChange=null,this.onDone=null,this.onOpen=null,this.onClose=null,this.setOptions(t)}return Pa(n,[{key:"setOptions",value:function(e){var i=this;if(!e)return;var s=this.settings;function r(c,u,d){for(var p in c)d&&d.indexOf(p)>=0||(u[p]=c[p])}if(e instanceof HTMLElement)s.parent=e;else{s.parent&&e.parent&&s.parent!==e.parent&&(this._events.remove(s.parent),this._popupInited=!1),r(e,s),e.onChange&&(this.onChange=e.onChange),e.onDone&&(this.onDone=e.onDone),e.onOpen&&(this.onOpen=e.onOpen),e.onClose&&(this.onClose=e.onClose);var a=e.color||e.colour;a&&this._setColor(a)}var o=s.parent;if(o&&s.popup&&!this._popupInited){var l=function(u){return i.openHandler(u)};this._events.add(o,"click",l),Da(this._events,o,[" ","Spacebar","Enter"],l),this._popupInited=!0}else e.parent&&!s.popup&&this.show()}},{key:"openHandler",value:function(e){if(this.show()){e&&e.preventDefault(),this.settings.parent.style.pointerEvents="none";var i=e&&e.type===Ch?this._domEdit:this.domElement;setTimeout(function(){return i.focus()},100),this.onOpen&&this.onOpen(this.colour)}}},{key:"closeHandler",value:function(e){var i=e&&e.type,s=!1;if(!e)s=!0;else if(i===Ns||i===Ea){var r=(this.__containedEvent||0)+100;e.timeStamp>r&&(s=!0)}else Th(e),s=!0;s&&this.hide()&&(this.settings.parent.style.pointerEvents="",i!==Ns&&this.settings.parent.focus(),this.onClose&&this.onClose(this.colour))}},{key:"movePopup",value:function(e,i){this.closeHandler(),this.setOptions(e),i&&this.openHandler()}},{key:"setColor",value:function(e,i){this._setColor(e,{silent:i})}},{key:"_setColor",value:function(e,i){if(typeof e=="string"&&(e=e.trim()),!!e){i=i||{};var s=void 0;try{s=new uv(e)}catch(a){if(i.failSilently)return;throw a}if(!this.settings.alpha){var r=s.hsla;r[3]=1,s.hsla=r}this.colour=this.color=s,this._setHSLA(null,null,null,null,i)}}},{key:"setColour",value:function(e,i){this.setColor(e,i)}},{key:"show",value:function(){var e=this.settings.parent;if(!e)return!1;if(this.domElement){var i=this._toggleDOM(!0);return this._setPosition(),i}var s=this.settings.template||'
    ',r=dv(s);return this.domElement=r,this._domH=$e(".picker_hue",r),this._domSL=$e(".picker_sl",r),this._domA=$e(".picker_alpha",r),this._domEdit=$e(".picker_editor input",r),this._domSample=$e(".picker_sample",r),this._domOkay=$e(".picker_done button",r),this._domCancel=$e(".picker_cancel button",r),r.classList.add("layout_"+this.settings.layout),this.settings.alpha||r.classList.add("no_alpha"),this.settings.editor||r.classList.add("no_editor"),this.settings.cancelButton||r.classList.add("no_cancel"),this._ifPopup(function(){return r.classList.add("popup")}),this._setPosition(),this.colour?this._updateUI():this._setColor(this.settings.defaultColor),this._bindEvents(),!0}},{key:"hide",value:function(){return this._toggleDOM(!1)}},{key:"destroy",value:function(){this._events.destroy(),this.domElement&&this.settings.parent.removeChild(this.domElement)}},{key:"_bindEvents",value:function(){var e=this,i=this,s=this.domElement,r=this._events;function a(c,u,d){r.add(c,u,d)}a(s,"click",function(c){return c.preventDefault()}),Oa(r,this._domH,function(c,u){return i._setHSLA(c)}),Oa(r,this._domSL,function(c,u){return i._setHSLA(null,c,1-u)}),this.settings.alpha&&Oa(r,this._domA,function(c,u){return i._setHSLA(null,null,null,1-u)});var o=this._domEdit;a(o,"input",function(c){i._setColor(this.value,{fromEditor:!0,failSilently:!0})}),a(o,"focus",function(c){var u=this;u.selectionStart===u.selectionEnd&&u.select()}),this._ifPopup(function(){var c=function(p){return e.closeHandler(p)};a(window,Ns,c),a(window,Ea,c),Da(r,s,["Esc","Escape"],c);var u=function(p){e.__containedEvent=p.timeStamp};a(s,Ns,u),a(s,Ea,u),a(e._domCancel,"click",c)});var l=function(u){e._ifPopup(function(){return e.closeHandler(u)}),e.onDone&&e.onDone(e.colour)};a(this._domOkay,"click",l),Da(r,s,["Enter"],l)}},{key:"_setPosition",value:function(){var e=this.settings.parent,i=this.domElement;e!==i.parentNode&&e.appendChild(i),this._ifPopup(function(s){getComputedStyle(e).position==="static"&&(e.style.position="relative");var r=s===!0?"popup_right":"popup_"+s;["popup_top","popup_bottom","popup_left","popup_right"].forEach(function(a){a===r?i.classList.add(a):i.classList.remove(a)}),i.classList.add(r)})}},{key:"_setHSLA",value:function(e,i,s,r,a){a=a||{};var o=this.colour,l=o.hsla;[e,i,s,r].forEach(function(c,u){(c||c===0)&&(l[u]=c)}),o.hsla=l,this._updateUI(a),this.onChange&&!a.silent&&this.onChange(o)}},{key:"_updateUI",value:function(e){if(!this.domElement)return;e=e||{};var i=this.colour,s=i.hsla,r="hsl("+s[0]*gv+", 100%, 50%)",a=i.hslString,o=i.hslaString,l=this._domH,c=this._domSL,u=this._domA,d=$e(".picker_selector",l),p=$e(".picker_selector",c),m=$e(".picker_selector",u);function b(B,H,G){H.style.left=G*100+"%"}function x(B,H,G){H.style.top=G*100+"%"}b(l,d,s[0]),this._domSL.style.backgroundColor=this._domH.style.color=r,b(c,p,s[1]),x(c,p,1-s[2]),c.style.color=a,x(u,m,1-s[3]);var M=a,A=M.replace("hsl","hsla").replace(")",", 0)"),R="linear-gradient("+[M,A]+")";if(this._domA.style.background=R+", "+pv,!e.fromEditor){var I=this.settings.editorFormat,L=this.settings.alpha,F=void 0;switch(I){case"rgb":F=i.printRGB(L);break;case"hsl":F=i.printHSL(L);break;default:F=i.printHex(L)}this._domEdit.value=F}this._domSample.style.color=o}},{key:"_ifPopup",value:function(e,i){this.settings.parent&&this.settings.popup?e&&e(this.settings.popup):i&&i()}},{key:"_toggleDOM",value:function(e){var i=this.domElement;if(!i)return!1;var s=e?"":"none",r=i.style.display!==s;return r&&(i.style.display=s),r}}]),n}();Hs=document.createElement("style"),Hs.textContent='.picker_wrapper.no_alpha .picker_alpha{display:none}.picker_wrapper.no_editor .picker_editor{position:absolute;z-index:-1;opacity:0}.picker_wrapper.no_cancel .picker_cancel{display:none}.layout_default.picker_wrapper{display:flex;flex-flow:row wrap;justify-content:space-between;align-items:stretch;font-size:10px;width:25em;padding:.5em}.layout_default.picker_wrapper input,.layout_default.picker_wrapper button{font-size:1rem}.layout_default.picker_wrapper>*{margin:.5em}.layout_default.picker_wrapper::before{content:"";display:block;width:100%;height:0;order:1}.layout_default .picker_slider,.layout_default .picker_selector{padding:1em}.layout_default .picker_hue{width:100%}.layout_default .picker_sl{flex:1 1 auto}.layout_default .picker_sl::before{content:"";display:block;padding-bottom:100%}.layout_default .picker_editor{order:1;width:6.5rem}.layout_default .picker_editor input{width:100%;height:100%}.layout_default .picker_sample{order:1;flex:1 1 auto}.layout_default .picker_done,.layout_default .picker_cancel{order:1}.picker_wrapper{box-sizing:border-box;background:#f2f2f2;box-shadow:0 0 0 1px silver;cursor:default;font-family:sans-serif;color:#444;pointer-events:auto}.picker_wrapper:focus{outline:none}.picker_wrapper button,.picker_wrapper input{box-sizing:border-box;border:none;box-shadow:0 0 0 1px silver;outline:none}.picker_wrapper button:focus,.picker_wrapper button:active,.picker_wrapper input:focus,.picker_wrapper input:active{box-shadow:0 0 2px 1px #1e90ff}.picker_wrapper button{padding:.4em .6em;cursor:pointer;background-color:#f5f5f5;background-image:linear-gradient(0deg, gainsboro, transparent)}.picker_wrapper button:active{background-image:linear-gradient(0deg, transparent, gainsboro)}.picker_wrapper button:hover{background-color:#fff}.picker_selector{position:absolute;z-index:1;display:block;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);border:2px solid #fff;border-radius:100%;box-shadow:0 0 3px 1px #67b9ff;background:currentColor;cursor:pointer}.picker_slider .picker_selector{border-radius:2px}.picker_hue{position:relative;background-image:linear-gradient(90deg, red, yellow, lime, cyan, blue, magenta, red);box-shadow:0 0 0 1px silver}.picker_sl{position:relative;box-shadow:0 0 0 1px silver;background-image:linear-gradient(180deg, white, rgba(255, 255, 255, 0) 50%),linear-gradient(0deg, black, rgba(0, 0, 0, 0) 50%),linear-gradient(90deg, #808080, rgba(128, 128, 128, 0))}.picker_alpha,.picker_sample{position:relative;background:linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%) 0 0/2em 2em,linear-gradient(45deg, lightgrey 25%, white 25%, white 75%, lightgrey 75%) 1em 1em/2em 2em;box-shadow:0 0 0 1px silver}.picker_alpha .picker_selector,.picker_sample .picker_selector{background:none}.picker_editor input{font-family:monospace;padding:.2em .4em}.picker_sample::before{content:"";position:absolute;display:block;width:100%;height:100%;background:currentColor}.picker_arrow{position:absolute;z-index:-1}.picker_wrapper.popup{position:absolute;z-index:2;margin:1.5em}.picker_wrapper.popup,.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{background:#f2f2f2;box-shadow:0 0 10px 1px rgba(0,0,0,.4)}.picker_wrapper.popup .picker_arrow{width:3em;height:3em;margin:0}.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{content:"";display:block;position:absolute;top:0;left:0;z-index:-99}.picker_wrapper.popup .picker_arrow::before{width:100%;height:100%;-webkit-transform:skew(45deg);transform:skew(45deg);-webkit-transform-origin:0 100%;transform-origin:0 100%}.picker_wrapper.popup .picker_arrow::after{width:150%;height:150%;box-shadow:none}.popup.popup_top{bottom:100%;left:0}.popup.popup_top .picker_arrow{bottom:0;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.popup.popup_bottom{top:100%;left:0}.popup.popup_bottom .picker_arrow{top:0;left:0;-webkit-transform:rotate(90deg) scale(1, -1);transform:rotate(90deg) scale(1, -1)}.popup.popup_left{top:0;right:100%}.popup.popup_left .picker_arrow{top:0;right:0;-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.popup.popup_right{top:0;left:100%}.popup.popup_right .picker_arrow{top:0;left:0}',document.documentElement.firstElementChild.appendChild(Hs),Aa.StyleElement=Hs;var Hs;var La=class extends Ie.PluginSettingTab{constructor(t,e){super(t,e);this.plugin=e}isColor(t){var e=new Option().style;return e.color=t,e.color==t}display(){let{containerEl:t,plugin:e}=this;t.empty(),t.createEl("h2",{text:"Settings - Obsidian Charts"}),t.createEl("h3",{text:"General"}),new Ie.Setting(t).setName("Show Button in Context Menu").setDesc("If enabled, you will se a Button in your Editor Context Menu to open the Chart Creator.").addToggle(r=>{r.setValue(this.plugin.settings.contextMenu).onChange(async a=>{e.settings.contextMenu=a,await e.saveSettings()})}),new Ie.Setting(t).setName("Donate").setDesc("If you like this Plugin, consider donating to support continued development:").addButton(r=>{r.buttonEl.outerHTML=''}),t.createEl("h3",{text:"Colors",attr:{style:"margin-bottom: 0"}});let i=t.createEl("p",{cls:"setting-item-description"});i.append("Set the Colors for your Charts. This will set the border Color and the inner Color will be the same, but with less opacity. This ensures better compatibility with Dark and Light Mode. ","You can use any ",i.createEl("a",{href:"https://www.w3schools.com/cssref/css_colors.asp",text:"valid CSS Color."})),new Ie.Setting(t).setName("Enable Theme Colors").setDesc("If your Obsidian Theme (or snippet) provides Colors you can use them instead.").addToggle(r=>{r.setValue(e.settings.themeable).onChange(async a=>{e.settings.themeable=a,await e.saveSettings(),this.display()})}),e.settings.themeable||(e.settings.colors.forEach((r,a)=>{let o=document.createDocumentFragment();o.createSpan({text:"\u25CF",attr:{style:`color: ${r}`}}),o.appendText(` Color #${a+1}`),new Ie.Setting(t).setName(o).setDesc("This will be the border Color used in the Charts you create.").addButton(l=>{l.setButtonText("Change Color"),new Aa({parent:l.buttonEl,onDone:async c=>{this.plugin.settings.colors[a]=c.hex,await this.plugin.saveSettings(),this.display()},popup:"left",color:r,alpha:!1})}).addExtraButton(l=>{l.setIcon("trash").setTooltip("Remove").onClick(async()=>{this.plugin.settings.colors.remove(r),await this.plugin.saveSettings(),this.display()}),this.plugin.settings.colors.length===1&&l.setDisabled(!0)}).addExtraButton(l=>{l.setIcon("reset").setTooltip("Reset to default").onClick(async()=>{var c;this.plugin.settings.colors[a]=(c=Bs.colors[a])!=null?c:"#ffffff",await this.plugin.saveSettings(),this.display()})})}),new Ie.Setting(t).addButton(r=>{r.setButtonText("Add Color").onClick(async()=>{this.plugin.settings.colors.push("#ffffff"),await this.plugin.saveSettings(),this.display()})})),t.createEl("h3",{text:"Chart to Image Converter"});let s=t.createEl("details");s.createEl("summary",{text:"How to use"}),s.createEl("img",{attr:{src:"https://media.discordapp.net/attachments/855181471643861002/897811615037136966/charttoimage.gif"}}),new Ie.Setting(t).setName("Image Format").setDesc("The Format to be used, when generating a Image from a Chart.").addDropdown(r=>{r.addOptions({"image/jpeg":"jpeg","image/png":"png","image/webp":"webp"}),r.setValue(e.settings.imageSettings.format),r.onChange(async a=>{e.settings.imageSettings.format=a,await e.saveSettings()})}),new Ie.Setting(t).setName("Image Quality").setDesc("If using a lossy format, set the Image Quality.").addSlider(r=>{r.setDynamicTooltip().setLimits(.01,1,.01).setValue(e.settings.imageSettings.quality).onChange(async a=>{e.settings.imageSettings.quality=a,await e.saveSettings()})})}};var Wh=De(require("obsidian"));function Xn(){}function Ra(n){return n()}function Ph(){return Object.create(null)}function un(n){n.forEach(Ra)}function Oh(n){return typeof n=="function"}function Eh(n,t){return n!=n?t==t:n!==t||n&&typeof n=="object"||typeof n=="function"}function Dh(n){return Object.keys(n).length===0}var f_=new Set;var Ah=!1;function mv(){Ah=!0}function bv(){Ah=!1}function Y(n,t){n.appendChild(t)}function Lh(n,t,e){let i=vv(n);if(!i.getElementById(t)){let s=tt("style");s.id=t,s.textContent=e,_v(i,s)}}function vv(n){if(!n)return document;let t=n.getRootNode?n.getRootNode():n.ownerDocument;return t&&t.host?t:n.ownerDocument}function _v(n,t){Y(n.head||n,t)}function zi(n,t,e){n.insertBefore(t,e||null)}function Kn(n){n.parentNode.removeChild(n)}function Rh(n,t){for(let e=0;en.removeEventListener(t,e,i)}function it(n,t,e){e==null?n.removeAttribute(t):n.getAttribute(t)!==e&&n.setAttribute(t,e)}function Fa(n){return n===""?null:+n}function xv(n){return Array.from(n.childNodes)}function Pe(n,t){n.value=t??""}function he(n,t,e,i){e===null?n.style.removeProperty(t):n.style.setProperty(t,e,i?"important":"")}function $a(n,t){for(let e=0;e{let i=n.$$.callbacks[t];if(i){let s=wv(t,e);i.slice().forEach(r=>{r.call(n,s)})}}}var Ni=[];var Vs=[],Ws=[],$h=[],Sv=Promise.resolve(),za=!1;function Mv(){za||(za=!0,Sv.then(Ih))}function Hi(n){Ws.push(n)}var Ba=new Set,Ys=0;function Ih(){let n=Bi;do{for(;Ys{let l=r.map(Ra).filter(Oh);a?a.push(...l):un(l),n.$$.on_mount=[]}),o.forEach(Hi)}function zh(n,t){let e=n.$$;e.fragment!==null&&(un(e.on_destroy),e.fragment&&e.fragment.d(t),e.on_destroy=e.fragment=null,e.ctx=[])}function Ev(n,t){n.$$.dirty[0]===-1&&(Ni.push(n),Mv(),n.$$.dirty.fill(0)),n.$$.dirty[t/31|0]|=1<{let b=m.length?m[0]:p;return c.ctx&&s(c.ctx[d],c.ctx[d]=b)&&(!c.skip_bound&&c.bound[d]&&c.bound[d](b),u&&Ev(n,d)),p}):[],c.update(),u=!0,un(c.before_update),c.fragment=i?i(c.ctx):!1,t.target){if(t.hydrate){mv();let d=xv(t.target);c.fragment&&c.fragment.l(d),d.forEach(Kn)}else c.fragment&&c.fragment.c();t.intro&&Pv(n.$$.fragment),Ov(n,t.target,t.anchor,t.customElement),bv(),Ih()}ji(l)}var Dv;typeof HTMLElement=="function"&&(Dv=class extends HTMLElement{constructor(){super();this.attachShadow({mode:"open"})}connectedCallback(){let{on_mount:n}=this.$$;this.$$.on_disconnect=n.map(Ra).filter(Oh);for(let t in this.$$.slotted)this.appendChild(this.$$.slotted[t])}attributeChangedCallback(n,t,e){this[n]=e}disconnectedCallback(){un(this.$$.on_disconnect)}$destroy(){zh(this,1),this.$destroy=Xn}$on(n,t){let e=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return e.push(t),()=>{let i=e.indexOf(t);i!==-1&&e.splice(i,1)}}$set(n){this.$$set&&!Dh(n)&&(this.$$.skip_bound=!0,this.$$set(n),this.$$.skip_bound=!1)}});var ja=class{$destroy(){zh(this,1),this.$destroy=Xn}$on(t,e){let i=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return i.push(e),()=>{let s=i.indexOf(e);s!==-1&&i.splice(s,1)}}$set(t){this.$$set&&!Dh(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}};var Gs=De(require("obsidian"));function Av(n){Lh(n,"svelte-1tlkntj",".addMoreButtonContainer.svelte-1tlkntj{display:flex;justify-content:flex-end;margin-top:0.4rem}.subDesc.svelte-1tlkntj{font-size:smaller;opacity:0.5;margin:0}.desc.svelte-1tlkntj{padding-right:1em}.mainDesc.svelte-1tlkntj{margin:0}table.svelte-1tlkntj{margin:auto}.controlElement.svelte-1tlkntj{text-align:center}.chart-modal.svelte-1tlkntj{overflow-y:auto}.modalColumn.svelte-1tlkntj{display:flex;gap:2em}.chartPreview.svelte-1tlkntj{width:30vw;display:flex;justify-content:center;align-items:center}")}function jh(n,t,e){let i=n.slice();return i[27]=t[e],i[28]=t,i[29]=e,i}function Nh(n){let t,e,i,s,r,a,o,l,c,u,d;function p(){n[20].call(r,n[28],n[29])}function m(){n[21].call(c,n[28],n[29])}return{c(){t=tt("tr"),e=tt("td"),e.innerHTML=`

    Y Axis

    +

    Set Data Fields (Comma seperated)

    `,i=Yt(),s=tt("td"),r=tt("input"),a=Yt(),o=tt("br"),l=Yt(),c=tt("input"),it(e,"class","desc svelte-1tlkntj"),it(r,"type","text"),it(r,"placeholder","Name"),it(c,"type","text"),it(c,"placeholder","1, -2, 11, 5"),he(c,"margin-top","3px"),it(s,"class","controlElement svelte-1tlkntj")},m(b,x){zi(b,t,x),Y(t,e),Y(t,i),Y(t,s),Y(s,r),Pe(r,n[27].dataTitle),Y(s,a),Y(s,o),Y(s,l),Y(s,c),Pe(c,n[27].data),u||(d=[ce(r,"input",p),ce(c,"input",m)],u=!0)},p(b,x){n=b,x&128&&r.value!==n[27].dataTitle&&Pe(r,n[27].dataTitle),x&128&&c.value!==n[27].data&&Pe(c,n[27].data)},d(b){b&&Kn(t),u=!1,un(d)}}}function Lv(n){let t,e,i,s,r,a,o,l,c,u,d,p,m,b,x,M,A,R,I,L,F,B,H,G,Z,nt,ot,rt,wt,st,Q,ht,ue,ie,fe,Bt,$t,Vt,jt,Gt,k,v,y,E,T,P,U,V,X,J,vt,Lt,Ct,It,zt,se,ve,de,fn,Ee,ze,Zn,Jn,kn,Be,dn,Sn,Qn,Ke=n[7],te=[];for(let yt=0;ytChart Type

    +

    Choose a Chart Type

    `,c=tt("td"),u=tt("select"),d=tt("option"),d.textContent="Bar",p=tt("option"),p.textContent="Line",m=tt("option"),m.textContent="Pie",b=tt("option"),b.textContent="Doughnut",x=tt("option"),x.textContent="Radar",M=tt("option"),M.textContent="Polar Area",A=Yt(),R=tt("tr"),I=tt("td"),I.innerHTML=`

    Smoothness

    +

    Changes the smoothness of the Chart

    `,L=tt("td"),F=tt("input"),B=Yt(),H=tt("tr"),G=tt("td"),G.innerHTML=`

    Width

    +

    Changes the horizontal width

    `,Z=tt("td"),nt=tt("input"),ot=Yt(),rt=tt("tr"),wt=tt("td"),wt.innerHTML=`

    Fill

    +

    Fill the underside of the Chart

    `,st=tt("td"),Q=tt("input"),ht=Yt(),ue=tt("tr"),ie=tt("td"),ie.innerHTML=`

    Distinct Colors

    +

    Use distinct Colors for each Label

    `,fe=tt("td"),Bt=tt("input"),$t=Yt(),Vt=tt("tr"),jt=tt("td"),jt.innerHTML=`

    Start at Zero

    +

    Don't cut the graph at the bottom

    `,Gt=tt("td"),k=tt("input"),v=Yt(),y=tt("hr"),E=Yt(),T=tt("table"),P=tt("tr"),U=tt("td"),U.innerHTML=`

    X Axis

    +

    Set Labels (Comma seperated)

    `,V=Yt(),X=tt("td"),J=tt("input"),vt=tt("br"),Lt=Yt(),Ct=tt("hr"),It=Yt(),zt=tt("table");for(let yt=0;ytn[13].call(u)),it(c,"class","controlElement svelte-1tlkntj"),it(I,"class","desc svelte-1tlkntj"),it(F,"type","range"),it(F,"min","0"),it(F,"max","100"),it(F,"class","slider"),it(L,"class","controlElement svelte-1tlkntj"),it(G,"class","desc svelte-1tlkntj"),it(nt,"type","range"),it(nt,"min","20"),it(nt,"max","100"),it(nt,"class","slider"),it(Z,"class","controlElement svelte-1tlkntj"),it(wt,"class","desc svelte-1tlkntj"),it(Q,"type","checkbox"),it(Q,"class","task-list-item-checkbox"),he(Q,"width","16px"),he(Q,"height","16px"),it(st,"class","controlElement svelte-1tlkntj"),it(ie,"class","desc svelte-1tlkntj"),it(Bt,"type","checkbox"),it(Bt,"class","task-list-item-checkbox"),he(Bt,"width","16px"),he(Bt,"height","16px"),it(fe,"class","controlElement svelte-1tlkntj"),it(jt,"class","desc svelte-1tlkntj"),it(k,"type","checkbox"),it(k,"class","task-list-item-checkbox"),he(k,"width","16px"),he(k,"height","16px"),it(Gt,"class","controlElement svelte-1tlkntj"),he(a,"width","100%"),it(a,"class","svelte-1tlkntj"),it(U,"class","desc svelte-1tlkntj"),it(J,"type","text"),it(J,"placeholder","Monday, Tuesday, ..."),it(X,"class","controlElement svelte-1tlkntj"),he(T,"width","100%"),it(T,"class","svelte-1tlkntj"),it(ve,"class","addMoreButtonContainer svelte-1tlkntj"),he(zt,"width","100%"),it(zt,"class","svelte-1tlkntj"),it(ze,"id","preview"),it(Ee,"class","chartPreview svelte-1tlkntj"),it(s,"class","modalColumn svelte-1tlkntj"),it(t,"class","chart-modal svelte-1tlkntj"),it(dn,"class","mod-cta"),he(Be,"display","flex"),he(Be,"justify-content","center"),he(Be,"align-items","center")},m(yt,ee){zi(yt,t,ee),Y(t,e),Y(t,i),Y(t,s),Y(s,r),Y(r,a),Y(a,o),Y(o,l),Y(o,c),Y(c,u),Y(u,d),Y(u,p),Y(u,m),Y(u,b),Y(u,x),Y(u,M),$a(u,n[0]),Y(a,A),Y(a,R),Y(R,I),Y(R,L),Y(L,F),Pe(F,n[1]),Y(a,B),Y(a,H),Y(H,G),Y(H,Z),Y(Z,nt),Pe(nt,n[2]),Y(a,ot),Y(a,rt),Y(rt,wt),Y(rt,st),Y(st,Q),Q.checked=n[3],Y(a,ht),Y(a,ue),Y(ue,ie),Y(ue,fe),Y(fe,Bt),Bt.checked=n[4],Y(a,$t),Y(a,Vt),Y(Vt,jt),Y(Vt,Gt),Y(Gt,k),k.checked=n[5],Y(r,v),Y(r,y),Y(r,E),Y(r,T),Y(T,P),Y(P,U),Y(P,V),Y(P,X),Y(X,J),Pe(J,n[6]),Y(X,vt),Y(r,Lt),Y(r,Ct),Y(r,It),Y(r,zt);for(let qt=0;qt{var ht;o&&o.destroy(),(ht=M.lastElementChild)===null||ht===void 0||ht.remove(),o=s.renderRaw(await s.datasetPrep((0,Gs.parseYaml)(st),Q),Q)},500,!0);function R(){let st=i.getDoc(),Q=st.getCursor();o.destroy(),st.replaceRange("```chart\n"+x+"\n```",Q),r("close")}function I(){a=Fh(this),e(0,a)}function L(){l=Fa(this.value),e(1,l)}function F(){c=Fa(this.value),e(2,c)}function B(){u=this.checked,e(3,u)}function H(){d=this.checked,e(4,d)}function G(){p=this.checked,e(5,p)}function Z(){m=this.value,e(6,m)}function nt(st,Q){st[Q].dataTitle=this.value,e(7,b)}function ot(st,Q){st[Q].data=this.value,e(7,b)}let rt=()=>e(7,b=[...b,{data:"",dataTitle:""}]);function wt(st){Vs[st?"unshift":"push"](()=>{M=st,e(8,M)})}return n.$$set=st=>{"editor"in st&&e(10,i=st.editor),"renderer"in st&&e(11,s=st.renderer)},n.$$.update=()=>{if(n.$$.dirty&255){t:e(12,x=`type: ${a} labels: [${m}] series: -${v.map(st=>` - title: ${st.dataTitle} +${b.map(st=>` - title: ${st.dataTitle} data: [${st.data}]`).join(` `)} tension: ${l/100} width: ${c}% -labelColors: ${f} -fill: ${h} -beginAtZero: ${p}`)}if(n.$$.dirty&4352){t:if(_)try{E(k,_)}catch(st){nn(st,_)}}},[a,l,c,h,f,p,m,v,_,T,i,s,k,I,F,L,V,$,G,K,et,lt,rt,vt]}var vc=class extends aa{constructor(t){super();mc(this,t,Sm,km,oc,{editor:10,renderer:11},wm)}},yc=vc;var Ms=class extends xc.Modal{constructor(t,e,i,s){super(t);this.settings=i,this.view=e,this.renderer=s}onOpen(){let{contentEl:t,view:e,settings:i,renderer:s}=this;t.empty(),new yc({target:t,props:{editor:e.editor,renderer:s}}).$on("close",()=>this.close())}onClose(){let{contentEl:t}=this;t.empty()}};var wc=Te(require("obsidian")),kc={chart:''},Sc=()=>{Object.keys(kc).forEach(n=>{(0,wc.addIcon)(n,kc[n])})};var Oc=Te(require("obsidian")),Pc=Te(Tc());async function la(n,t){let e;try{e=Pc.Extractor.extractObject(n.getSelection(),t,!1)}catch(a){throw new Oc.Notice("Table malformed"),a}let i=Object.keys(Object.values(e)[0]),s=Object.keys(e).map(a=>({dataTitle:a,data:Object.values(e[a]).join(",")})),r=`\`\`\`chart -type: bar -labels: [${i}] -series: -${s.map(a=>` - title: ${a.dataTitle} - data: [${a.data}]`).join(` -`)} -width: 80% -beginAtZero: true -\`\`\``;n.replaceSelection(r)}var ca=class extends Ce.Plugin{constructor(){super(...arguments);this.postprocessor=async(t,e,i)=>{let s;try{s=await(0,Ce.parseYaml)(t)}catch(r){nn(r,e);return}if(!s||!s.labels||!s.series||!s.type){nn("Missing type, labels or series",e);return}this.renderer.renderFromYaml(s,e,i)}}async loadSettings(){this.settings=Object.assign({},ms,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}async onload(){console.log("loading plugin: Obsidian Charts"),await this.loadSettings(),Sc(),this.renderer=new gs(this.settings),window.renderChart=this.renderer.renderRaw,this.addSettingTab(new Qr(this.app,this)),this.addCommand({id:"creation-helper",name:"Insert new Chart",checkCallback:t=>{let e=this.app.workspace.activeLeaf;return e.view instanceof Ce.MarkdownView?(t||new Ms(this.app,e.view,this.settings,this.renderer).open(),!0):!1}}),this.addCommand({id:"chart-from-table-column",name:"Create Chart from Table (Column oriented Layout)",editorCheckCallback:(t,e,i)=>{let s=e.getSelection();return i instanceof Ce.MarkdownView&&s.split(` -`).length>=3&&s.split("|").length>=2?(t||la(e,"columns"),!0):!1}}),this.addCommand({id:"chart-from-table-row",name:"Create Chart from Table (Row oriented Layout)",editorCheckCallback:(t,e,i)=>i instanceof Ce.MarkdownView&&e.getSelection().split(` -`).length>=3&&e.getSelection().split("|").length>=2?(t||la(e,"rows"),!0):!1}),this.addCommand({id:"chart-to-svg",name:"Create Image from Chart",editorCheckCallback:(t,e,i)=>i instanceof Ce.MarkdownView&&e.getSelection().startsWith("```chart")&&e.getSelection().endsWith("```")?(t||(new Ce.Notice("Rendering Chart..."),Jl(e,this.app,this.renderer,i.file,this.settings)),!0):!1}),this.registerMarkdownCodeBlockProcessor("chart",this.postprocessor),this.registerMarkdownCodeBlockProcessor("advanced-chart",async(t,e)=>this.renderer.renderRaw(await JSON.parse(t),e)),this.registerEvent(this.app.workspace.on("editor-menu",(t,e,i)=>{i&&this.settings.contextMenu&&t.addItem(s=>{s.setTitle("Insert Chart").setIcon("chart").onClick(r=>{new Ms(this.app,i,this.settings,this.renderer).open()})})}))}onunload(){console.log("unloading plugin: Obsidian Charts")}}; +labelColors: ${d} +fill: ${u} +beginAtZero: ${p}`)}if(n.$$.dirty&4352){t:if(M)try{A(x,M)}catch(st){Xe(st,M)}}},[a,l,c,u,d,p,m,b,M,R,i,s,x,I,L,F,B,H,G,Z,nt,ot,rt,wt]}var Hh=class extends ja{constructor(t){super();Bh(this,t,Rv,Lv,Eh,{editor:10,renderer:11},Av)}},Vh=Hh;var qs=class extends Wh.Modal{constructor(t,e,i,s){super(t);this.settings=i,this.view=e,this.renderer=s}onOpen(){let{contentEl:t,view:e,settings:i,renderer:s}=this;t.empty(),new Vh({target:t,props:{editor:e.editor,renderer:s}}).$on("close",()=>this.close())}onClose(){let{contentEl:t}=this;t.empty()}};var Yh=De(require("obsidian")),Gh={chart:''},qh=()=>{Object.keys(Gh).forEach(n=>{(0,Yh.addIcon)(n,Gh[n])})};var Na=class extends Oe.Plugin{constructor(){super(...arguments);this.postprocessor=async(t,e,i)=>{let s;try{s=await(0,Oe.parseYaml)(t.replace(/ /g," "))}catch(r){Xe(r,e);return}if(!s.id&&(!s||!s.type||!s.labels||!s.series)){Xe("Missing type, labels or series",e);return}await this.renderer.renderFromYaml(s,e,i)}}async loadSettings(){this.settings=Object.assign({},Bs,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}async onload(){console.log("loading plugin: Obsidian Charts"),await this.loadSettings(),qh(),this.renderer=new zs(this),window.renderChart=this.renderer.renderRaw,this.addSettingTab(new La(this.app,this)),this.addCommand({id:"creation-helper",name:"Insert new Chart",checkCallback:t=>{let e=this.app.workspace.activeLeaf;return e.view instanceof Oe.MarkdownView?(t||new qs(this.app,e.view,this.settings,this.renderer).open(),!0):!1}}),this.addCommand({id:"chart-from-table-column",name:"Create Chart from Table (Column oriented Layout)",editorCheckCallback:(t,e,i)=>{let s=e.getSelection();return i instanceof Oe.MarkdownView&&s.split(` +`).length>=3&&s.split("|").length>=2?(t||Ma(e,"columns"),!0):!1}}),this.addCommand({id:"chart-from-table-row",name:"Create Chart from Table (Row oriented Layout)",editorCheckCallback:(t,e,i)=>i instanceof Oe.MarkdownView&&e.getSelection().split(` +`).length>=3&&e.getSelection().split("|").length>=2?(t||Ma(e,"rows"),!0):!1}),this.addCommand({id:"chart-to-svg",name:"Create Image from Chart",editorCheckCallback:(t,e,i)=>i instanceof Oe.MarkdownView&&e.getSelection().startsWith("```chart")&&e.getSelection().endsWith("```")?(t||(new Oe.Notice("Rendering Chart..."),vh(e,this.app,this.renderer,i.file,this.settings)),!0):!1}),this.registerMarkdownCodeBlockProcessor("chart",this.postprocessor),this.registerMarkdownCodeBlockProcessor("advanced-chart",async(t,e)=>this.renderer.renderRaw(await JSON.parse(t),e)),this.registerEvent(this.app.workspace.on("editor-menu",(t,e,i)=>{i&&this.settings.contextMenu&&t.addItem(s=>{s.setTitle("Insert Chart").setIcon("chart").onClick(r=>{new qs(this.app,i,this.settings,this.renderer).open()})})}))}onunload(){console.log("unloading plugin: Obsidian Charts")}}; /* * @license * @@ -95,9 +95,9 @@ beginAtZero: true * Released under the MIT License */ /*! - * Chart.js v3.6.0 + * Chart.js v3.7.1 * https://www.chartjs.org - * (c) 2021 Chart.js Contributors + * (c) 2022 Chart.js Contributors * Released under the MIT License */ /*! diff --git a/notes/.obsidian/plugins/obsidian-charts/manifest.json b/notes/.obsidian/plugins/obsidian-charts/manifest.json index 9c895a4..9794018 100644 --- a/notes/.obsidian/plugins/obsidian-charts/manifest.json +++ b/notes/.obsidian/plugins/obsidian-charts/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-charts", "name": "Obsidian Charts", - "version": "3.1.1", + "version": "3.6.1", "minAppVersion": "0.12.7", "description": "This Plugin lets you create Charts within Obsidian", "author": "phibr0", diff --git a/notes/.obsidian/plugins/obsidian-charts/styles.css b/notes/.obsidian/plugins/obsidian-charts/styles.css index dee5ff9..c7a63fb 100644 --- a/notes/.obsidian/plugins/obsidian-charts/styles.css +++ b/notes/.obsidian/plugins/obsidian-charts/styles.css @@ -17,4 +17,9 @@ div.chart-error { div.chart-error pre > code { color: crimson !important; -} \ No newline at end of file +} + +.print .block-language-chart { + /* Hardcoded with for printed Charts, see #41 */ + width: 500px !important; +} diff --git a/notes/.obsidian/plugins/obsidian-chartsview-plugin/main.js b/notes/.obsidian/plugins/obsidian-chartsview-plugin/main.js index 8363743..5724e2a 100644 --- a/notes/.obsidian/plugins/obsidian-chartsview-plugin/main.js +++ b/notes/.obsidian/plugins/obsidian-chartsview-plugin/main.js @@ -27,11 +27,8 @@ var __spreadValues = (a4, b10) => { }; var __spreadProps = (a4, b10) => __defProps(a4, __getOwnPropDescs(b10)); var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); -var __esm = (fn2, res) => function __init() { - return fn2 && (res = (0, fn2[Object.keys(fn2)[0]])(fn2 = 0)), res; -}; -var __commonJS = (cb, mod3) => function __require() { - return mod3 || (0, cb[Object.keys(cb)[0]])((mod3 = { exports: {} }).exports, mod3), mod3.exports; +var __commonJS = (cb, mod5) => function __require() { + return mod5 || (0, cb[Object.keys(cb)[0]])((mod5 = { exports: {} }).exports, mod5), mod5.exports; }; var __export = (target, all) => { __markAsModule(target); @@ -70,780 +67,12 @@ var __async = (__this, __arguments, generator) => { }); }; -// node_modules/preact/dist/preact.module.js -function a(n3, l4) { - for (var u3 in l4) - n3[u3] = l4[u3]; - return n3; -} -function h(n3) { - var l4 = n3.parentNode; - l4 && l4.removeChild(n3); -} -function v(l4, u3, i4) { - var t4, r4, o3, f3 = {}; - for (o3 in u3) - o3 == "key" ? t4 = u3[o3] : o3 == "ref" ? r4 = u3[o3] : f3[o3] = u3[o3]; - if (arguments.length > 2 && (f3.children = arguments.length > 3 ? n2.call(arguments, 2) : i4), typeof l4 == "function" && l4.defaultProps != null) - for (o3 in l4.defaultProps) - f3[o3] === void 0 && (f3[o3] = l4.defaultProps[o3]); - return y(l4, f3, t4, r4, null); -} -function y(n3, i4, t4, r4, o3) { - var f3 = { type: n3, props: i4, key: t4, ref: r4, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: o3 == null ? ++u : o3 }; - return o3 == null && l2.vnode != null && l2.vnode(f3), f3; -} -function p2() { - return { current: null }; -} -function d(n3) { - return n3.children; -} -function _(n3, l4) { - this.props = n3, this.context = l4; -} -function k(n3, l4) { - if (l4 == null) - return n3.__ ? k(n3.__, n3.__.__k.indexOf(n3) + 1) : null; - for (var u3; l4 < n3.__k.length; l4++) - if ((u3 = n3.__k[l4]) != null && u3.__e != null) - return u3.__e; - return typeof n3.type == "function" ? k(n3) : null; -} -function b(n3) { - var l4, u3; - if ((n3 = n3.__) != null && n3.__c != null) { - for (n3.__e = n3.__c.base = null, l4 = 0; l4 < n3.__k.length; l4++) - if ((u3 = n3.__k[l4]) != null && u3.__e != null) { - n3.__e = n3.__c.base = u3.__e; - break; - } - return b(n3); - } -} -function m(n3) { - (!n3.__d && (n3.__d = true) && t2.push(n3) && !g.__r++ || o !== l2.debounceRendering) && ((o = l2.debounceRendering) || r2)(g); -} -function g() { - for (var n3; g.__r = t2.length; ) - n3 = t2.sort(function(n4, l4) { - return n4.__v.__b - l4.__v.__b; - }), t2 = [], n3.some(function(n4) { - var l4, u3, i4, t4, r4, o3; - n4.__d && (r4 = (t4 = (l4 = n4).__v).__e, (o3 = l4.__P) && (u3 = [], (i4 = a({}, t4)).__v = t4.__v + 1, j(o3, t4, i4, l4.__n, o3.ownerSVGElement !== void 0, t4.__h != null ? [r4] : null, u3, r4 == null ? k(t4) : r4, t4.__h), z(u3, t4), t4.__e != r4 && b(t4))); - }); -} -function w(n3, l4, u3, i4, t4, r4, o3, f3, s4, a4) { - var h3, v3, p4, _8, b10, m4, g4, w4 = i4 && i4.__k || c2, A4 = w4.length; - for (u3.__k = [], h3 = 0; h3 < l4.length; h3++) - if ((_8 = u3.__k[h3] = (_8 = l4[h3]) == null || typeof _8 == "boolean" ? null : typeof _8 == "string" || typeof _8 == "number" || typeof _8 == "bigint" ? y(null, _8, null, null, _8) : Array.isArray(_8) ? y(d, { children: _8 }, null, null, null) : _8.__b > 0 ? y(_8.type, _8.props, _8.key, null, _8.__v) : _8) != null) { - if (_8.__ = u3, _8.__b = u3.__b + 1, (p4 = w4[h3]) === null || p4 && _8.key == p4.key && _8.type === p4.type) - w4[h3] = void 0; - else - for (v3 = 0; v3 < A4; v3++) { - if ((p4 = w4[v3]) && _8.key == p4.key && _8.type === p4.type) { - w4[v3] = void 0; - break; - } - p4 = null; - } - j(n3, _8, p4 = p4 || e2, t4, r4, o3, f3, s4, a4), b10 = _8.__e, (v3 = _8.ref) && p4.ref != v3 && (g4 || (g4 = []), p4.ref && g4.push(p4.ref, null, _8), g4.push(v3, _8.__c || b10, _8)), b10 != null ? (m4 == null && (m4 = b10), typeof _8.type == "function" && _8.__k === p4.__k ? _8.__d = s4 = x(_8, s4, n3) : s4 = P(n3, _8, p4, w4, b10, s4), typeof u3.type == "function" && (u3.__d = s4)) : s4 && p4.__e == s4 && s4.parentNode != n3 && (s4 = k(p4)); - } - for (u3.__e = m4, h3 = A4; h3--; ) - w4[h3] != null && (typeof u3.type == "function" && w4[h3].__e != null && w4[h3].__e == u3.__d && (u3.__d = k(i4, h3 + 1)), N(w4[h3], w4[h3])); - if (g4) - for (h3 = 0; h3 < g4.length; h3++) - M(g4[h3], g4[++h3], g4[++h3]); -} -function x(n3, l4, u3) { - for (var i4, t4 = n3.__k, r4 = 0; t4 && r4 < t4.length; r4++) - (i4 = t4[r4]) && (i4.__ = n3, l4 = typeof i4.type == "function" ? x(i4, l4, u3) : P(u3, i4, i4, t4, i4.__e, l4)); - return l4; -} -function A(n3, l4) { - return l4 = l4 || [], n3 == null || typeof n3 == "boolean" || (Array.isArray(n3) ? n3.some(function(n4) { - A(n4, l4); - }) : l4.push(n3)), l4; -} -function P(n3, l4, u3, i4, t4, r4) { - var o3, f3, e4; - if (l4.__d !== void 0) - o3 = l4.__d, l4.__d = void 0; - else if (u3 == null || t4 != r4 || t4.parentNode == null) - n: - if (r4 == null || r4.parentNode !== n3) - n3.appendChild(t4), o3 = null; - else { - for (f3 = r4, e4 = 0; (f3 = f3.nextSibling) && e4 < i4.length; e4 += 2) - if (f3 == t4) - break n; - n3.insertBefore(t4, r4), o3 = r4; - } - return o3 !== void 0 ? o3 : t4.nextSibling; -} -function C(n3, l4, u3, i4, t4) { - var r4; - for (r4 in u3) - r4 === "children" || r4 === "key" || r4 in l4 || H(n3, r4, null, u3[r4], i4); - for (r4 in l4) - t4 && typeof l4[r4] != "function" || r4 === "children" || r4 === "key" || r4 === "value" || r4 === "checked" || u3[r4] === l4[r4] || H(n3, r4, l4[r4], u3[r4], i4); -} -function $(n3, l4, u3) { - l4[0] === "-" ? n3.setProperty(l4, u3) : n3[l4] = u3 == null ? "" : typeof u3 != "number" || s2.test(l4) ? u3 : u3 + "px"; -} -function H(n3, l4, u3, i4, t4) { - var r4; - n: - if (l4 === "style") - if (typeof u3 == "string") - n3.style.cssText = u3; - else { - if (typeof i4 == "string" && (n3.style.cssText = i4 = ""), i4) - for (l4 in i4) - u3 && l4 in u3 || $(n3.style, l4, ""); - if (u3) - for (l4 in u3) - i4 && u3[l4] === i4[l4] || $(n3.style, l4, u3[l4]); - } - else if (l4[0] === "o" && l4[1] === "n") - r4 = l4 !== (l4 = l4.replace(/Capture$/, "")), l4 = l4.toLowerCase() in n3 ? l4.toLowerCase().slice(2) : l4.slice(2), n3.l || (n3.l = {}), n3.l[l4 + r4] = u3, u3 ? i4 || n3.addEventListener(l4, r4 ? T : I, r4) : n3.removeEventListener(l4, r4 ? T : I, r4); - else if (l4 !== "dangerouslySetInnerHTML") { - if (t4) - l4 = l4.replace(/xlink[H:h]/, "h").replace(/sName$/, "s"); - else if (l4 !== "href" && l4 !== "list" && l4 !== "form" && l4 !== "tabIndex" && l4 !== "download" && l4 in n3) - try { - n3[l4] = u3 == null ? "" : u3; - break n; - } catch (n4) { - } - typeof u3 == "function" || (u3 != null && (u3 !== false || l4[0] === "a" && l4[1] === "r") ? n3.setAttribute(l4, u3) : n3.removeAttribute(l4)); - } -} -function I(n3) { - this.l[n3.type + false](l2.event ? l2.event(n3) : n3); -} -function T(n3) { - this.l[n3.type + true](l2.event ? l2.event(n3) : n3); -} -function j(n3, u3, i4, t4, r4, o3, f3, e4, c5) { - var s4, h3, v3, y5, p4, k4, b10, m4, g4, x6, A4, P4 = u3.type; - if (u3.constructor !== void 0) - return null; - i4.__h != null && (c5 = i4.__h, e4 = u3.__e = i4.__e, u3.__h = null, o3 = [e4]), (s4 = l2.__b) && s4(u3); - try { - n: - if (typeof P4 == "function") { - if (m4 = u3.props, g4 = (s4 = P4.contextType) && t4[s4.__c], x6 = s4 ? g4 ? g4.props.value : s4.__ : t4, i4.__c ? b10 = (h3 = u3.__c = i4.__c).__ = h3.__E : ("prototype" in P4 && P4.prototype.render ? u3.__c = h3 = new P4(m4, x6) : (u3.__c = h3 = new _(m4, x6), h3.constructor = P4, h3.render = O), g4 && g4.sub(h3), h3.props = m4, h3.state || (h3.state = {}), h3.context = x6, h3.__n = t4, v3 = h3.__d = true, h3.__h = []), h3.__s == null && (h3.__s = h3.state), P4.getDerivedStateFromProps != null && (h3.__s == h3.state && (h3.__s = a({}, h3.__s)), a(h3.__s, P4.getDerivedStateFromProps(m4, h3.__s))), y5 = h3.props, p4 = h3.state, v3) - P4.getDerivedStateFromProps == null && h3.componentWillMount != null && h3.componentWillMount(), h3.componentDidMount != null && h3.__h.push(h3.componentDidMount); - else { - if (P4.getDerivedStateFromProps == null && m4 !== y5 && h3.componentWillReceiveProps != null && h3.componentWillReceiveProps(m4, x6), !h3.__e && h3.shouldComponentUpdate != null && h3.shouldComponentUpdate(m4, h3.__s, x6) === false || u3.__v === i4.__v) { - h3.props = m4, h3.state = h3.__s, u3.__v !== i4.__v && (h3.__d = false), h3.__v = u3, u3.__e = i4.__e, u3.__k = i4.__k, u3.__k.forEach(function(n4) { - n4 && (n4.__ = u3); - }), h3.__h.length && f3.push(h3); - break n; - } - h3.componentWillUpdate != null && h3.componentWillUpdate(m4, h3.__s, x6), h3.componentDidUpdate != null && h3.__h.push(function() { - h3.componentDidUpdate(y5, p4, k4); - }); - } - h3.context = x6, h3.props = m4, h3.state = h3.__s, (s4 = l2.__r) && s4(u3), h3.__d = false, h3.__v = u3, h3.__P = n3, s4 = h3.render(h3.props, h3.state, h3.context), h3.state = h3.__s, h3.getChildContext != null && (t4 = a(a({}, t4), h3.getChildContext())), v3 || h3.getSnapshotBeforeUpdate == null || (k4 = h3.getSnapshotBeforeUpdate(y5, p4)), A4 = s4 != null && s4.type === d && s4.key == null ? s4.props.children : s4, w(n3, Array.isArray(A4) ? A4 : [A4], u3, i4, t4, r4, o3, f3, e4, c5), h3.base = u3.__e, u3.__h = null, h3.__h.length && f3.push(h3), b10 && (h3.__E = h3.__ = null), h3.__e = false; - } else - o3 == null && u3.__v === i4.__v ? (u3.__k = i4.__k, u3.__e = i4.__e) : u3.__e = L(i4.__e, u3, i4, t4, r4, o3, f3, c5); - (s4 = l2.diffed) && s4(u3); - } catch (n4) { - u3.__v = null, (c5 || o3 != null) && (u3.__e = e4, u3.__h = !!c5, o3[o3.indexOf(e4)] = null), l2.__e(n4, u3, i4); - } -} -function z(n3, u3) { - l2.__c && l2.__c(u3, n3), n3.some(function(u4) { - try { - n3 = u4.__h, u4.__h = [], n3.some(function(n4) { - n4.call(u4); - }); - } catch (n4) { - l2.__e(n4, u4.__v); - } - }); -} -function L(l4, u3, i4, t4, r4, o3, f3, c5) { - var s4, a4, v3, y5 = i4.props, p4 = u3.props, d3 = u3.type, _8 = 0; - if (d3 === "svg" && (r4 = true), o3 != null) { - for (; _8 < o3.length; _8++) - if ((s4 = o3[_8]) && "setAttribute" in s4 == !!d3 && (d3 ? s4.localName === d3 : s4.nodeType === 3)) { - l4 = s4, o3[_8] = null; - break; - } - } - if (l4 == null) { - if (d3 === null) - return document.createTextNode(p4); - l4 = r4 ? document.createElementNS("http://www.w3.org/2000/svg", d3) : document.createElement(d3, p4.is && p4), o3 = null, c5 = false; - } - if (d3 === null) - y5 === p4 || c5 && l4.data === p4 || (l4.data = p4); - else { - if (o3 = o3 && n2.call(l4.childNodes), a4 = (y5 = i4.props || e2).dangerouslySetInnerHTML, v3 = p4.dangerouslySetInnerHTML, !c5) { - if (o3 != null) - for (y5 = {}, _8 = 0; _8 < l4.attributes.length; _8++) - y5[l4.attributes[_8].name] = l4.attributes[_8].value; - (v3 || a4) && (v3 && (a4 && v3.__html == a4.__html || v3.__html === l4.innerHTML) || (l4.innerHTML = v3 && v3.__html || "")); - } - if (C(l4, p4, y5, r4, c5), v3) - u3.__k = []; - else if (_8 = u3.props.children, w(l4, Array.isArray(_8) ? _8 : [_8], u3, i4, t4, r4 && d3 !== "foreignObject", o3, f3, o3 ? o3[0] : i4.__k && k(i4, 0), c5), o3 != null) - for (_8 = o3.length; _8--; ) - o3[_8] != null && h(o3[_8]); - c5 || ("value" in p4 && (_8 = p4.value) !== void 0 && (_8 !== y5.value || _8 !== l4.value || d3 === "progress" && !_8) && H(l4, "value", _8, y5.value, false), "checked" in p4 && (_8 = p4.checked) !== void 0 && _8 !== l4.checked && H(l4, "checked", _8, y5.checked, false)); - } - return l4; -} -function M(n3, u3, i4) { - try { - typeof n3 == "function" ? n3(u3) : n3.current = u3; - } catch (n4) { - l2.__e(n4, i4); - } -} -function N(n3, u3, i4) { - var t4, r4; - if (l2.unmount && l2.unmount(n3), (t4 = n3.ref) && (t4.current && t4.current !== n3.__e || M(t4, null, u3)), (t4 = n3.__c) != null) { - if (t4.componentWillUnmount) - try { - t4.componentWillUnmount(); - } catch (n4) { - l2.__e(n4, u3); - } - t4.base = t4.__P = null; - } - if (t4 = n3.__k) - for (r4 = 0; r4 < t4.length; r4++) - t4[r4] && N(t4[r4], u3, typeof n3.type != "function"); - i4 || n3.__e == null || h(n3.__e), n3.__e = n3.__d = void 0; -} -function O(n3, l4, u3) { - return this.constructor(n3, u3); -} -function S(u3, i4, t4) { - var r4, o3, f3; - l2.__ && l2.__(u3, i4), o3 = (r4 = typeof t4 == "function") ? null : t4 && t4.__k || i4.__k, f3 = [], j(i4, u3 = (!r4 && t4 || i4).__k = v(d, null, [u3]), o3 || e2, e2, i4.ownerSVGElement !== void 0, !r4 && t4 ? [t4] : o3 ? null : i4.firstChild ? n2.call(i4.childNodes) : null, f3, !r4 && t4 ? t4 : o3 ? o3.__e : i4.firstChild, r4), z(f3, u3); -} -function q(n3, l4) { - S(n3, l4, q); -} -function B(l4, u3, i4) { - var t4, r4, o3, f3 = a({}, l4.props); - for (o3 in u3) - o3 == "key" ? t4 = u3[o3] : o3 == "ref" ? r4 = u3[o3] : f3[o3] = u3[o3]; - return arguments.length > 2 && (f3.children = arguments.length > 3 ? n2.call(arguments, 2) : i4), y(l4.type, f3, t4 || l4.key, r4 || l4.ref, null); -} -function D(n3, l4) { - var u3 = { __c: l4 = "__cC" + f++, __: n3, Consumer: function(n4, l5) { - return n4.children(l5); - }, Provider: function(n4) { - var u4, i4; - return this.getChildContext || (u4 = [], (i4 = {})[l4] = this, this.getChildContext = function() { - return i4; - }, this.shouldComponentUpdate = function(n5) { - this.props.value !== n5.value && u4.some(m); - }, this.sub = function(n5) { - u4.push(n5); - var l5 = n5.componentWillUnmount; - n5.componentWillUnmount = function() { - u4.splice(u4.indexOf(n5), 1), l5 && l5.call(n5); - }; - }), n4.children; - } }; - return u3.Provider.__ = u3.Consumer.contextType = u3; -} -var n2, l2, u, i2, t2, r2, o, f, e2, c2, s2; -var init_preact_module = __esm({ - "node_modules/preact/dist/preact.module.js"() { - e2 = {}; - c2 = []; - s2 = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i; - n2 = c2.slice, l2 = { __e: function(n3, l4) { - for (var u3, i4, t4; l4 = l4.__; ) - if ((u3 = l4.__c) && !u3.__) - try { - if ((i4 = u3.constructor) && i4.getDerivedStateFromError != null && (u3.setState(i4.getDerivedStateFromError(n3)), t4 = u3.__d), u3.componentDidCatch != null && (u3.componentDidCatch(n3), t4 = u3.__d), t4) - return u3.__E = u3; - } catch (l5) { - n3 = l5; - } - throw n3; - } }, u = 0, i2 = function(n3) { - return n3 != null && n3.constructor === void 0; - }, _.prototype.setState = function(n3, l4) { - var u3; - u3 = this.__s != null && this.__s !== this.state ? this.__s : this.__s = a({}, this.state), typeof n3 == "function" && (n3 = n3(a({}, u3), this.props)), n3 && a(u3, n3), n3 != null && this.__v && (l4 && this.__h.push(l4), m(this)); - }, _.prototype.forceUpdate = function(n3) { - this.__v && (this.__e = true, n3 && this.__h.push(n3), m(this)); - }, _.prototype.render = d, t2 = [], r2 = typeof Promise == "function" ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, g.__r = 0, f = 0; - } -}); - -// node_modules/preact/hooks/dist/hooks.module.js -function m2(t4, r4) { - l2.__h && l2.__h(u2, t4, o2 || r4), o2 = 0; - var i4 = u2.__H || (u2.__H = { __: [], __h: [] }); - return t4 >= i4.__.length && i4.__.push({}), i4.__[t4]; -} -function l3(n3) { - return o2 = 1, p3(w2, n3); -} -function p3(n3, r4, o3) { - var i4 = m2(t3++, 2); - return i4.t = n3, i4.__c || (i4.__ = [o3 ? o3(r4) : w2(void 0, r4), function(n4) { - var t4 = i4.t(i4.__[0], n4); - i4.__[0] !== t4 && (i4.__ = [t4, i4.__[1]], i4.__c.setState({})); - }], i4.__c = u2), i4.__; -} -function y2(r4, o3) { - var i4 = m2(t3++, 3); - !l2.__s && k2(i4.__H, o3) && (i4.__ = r4, i4.__H = o3, u2.__H.__h.push(i4)); -} -function h2(r4, o3) { - var i4 = m2(t3++, 4); - !l2.__s && k2(i4.__H, o3) && (i4.__ = r4, i4.__H = o3, u2.__h.push(i4)); -} -function s3(n3) { - return o2 = 5, d2(function() { - return { current: n3 }; - }, []); -} -function _2(n3, t4, u3) { - o2 = 6, h2(function() { - typeof n3 == "function" ? n3(t4()) : n3 && (n3.current = t4()); - }, u3 == null ? u3 : u3.concat(n3)); -} -function d2(n3, u3) { - var r4 = m2(t3++, 7); - return k2(r4.__H, u3) && (r4.__ = n3(), r4.__H = u3, r4.__h = n3), r4.__; -} -function A2(n3, t4) { - return o2 = 8, d2(function() { - return n3; - }, t4); -} -function F(n3) { - var r4 = u2.context[n3.__c], o3 = m2(t3++, 9); - return o3.c = n3, r4 ? (o3.__ == null && (o3.__ = true, r4.sub(u2)), r4.props.value) : n3.__; -} -function T2(t4, u3) { - l2.useDebugValue && l2.useDebugValue(u3 ? u3(t4) : t4); -} -function q2(n3) { - var r4 = m2(t3++, 10), o3 = l3(); - return r4.__ = n3, u2.componentDidCatch || (u2.componentDidCatch = function(n4) { - r4.__ && r4.__(n4), o3[1](n4); - }), [o3[0], function() { - o3[1](void 0); - }]; -} -function x2() { - var t4; - for (i3.sort(function(n3, t5) { - return n3.__v.__b - t5.__v.__b; - }); t4 = i3.pop(); ) - if (t4.__P) - try { - t4.__H.__h.forEach(g2), t4.__H.__h.forEach(j2), t4.__H.__h = []; - } catch (u3) { - t4.__H.__h = [], l2.__e(u3, t4.__v); - } -} -function g2(n3) { - var t4 = u2, r4 = n3.__c; - typeof r4 == "function" && (n3.__c = void 0, r4()), u2 = t4; -} -function j2(n3) { - var t4 = u2; - n3.__c = n3.__(), u2 = t4; -} -function k2(n3, t4) { - return !n3 || n3.length !== t4.length || t4.some(function(t5, u3) { - return t5 !== n3[u3]; - }); -} -function w2(n3, t4) { - return typeof t4 == "function" ? t4(n3) : t4; -} -var t3, u2, r3, o2, i3, c3, f2, e3, a2, v2, b2; -var init_hooks_module = __esm({ - "node_modules/preact/hooks/dist/hooks.module.js"() { - init_preact_module(); - o2 = 0; - i3 = []; - c3 = l2.__b; - f2 = l2.__r; - e3 = l2.diffed; - a2 = l2.__c; - v2 = l2.unmount; - l2.__b = function(n3) { - u2 = null, c3 && c3(n3); - }, l2.__r = function(n3) { - f2 && f2(n3), t3 = 0; - var r4 = (u2 = n3.__c).__H; - r4 && (r4.__h.forEach(g2), r4.__h.forEach(j2), r4.__h = []); - }, l2.diffed = function(t4) { - e3 && e3(t4); - var o3 = t4.__c; - o3 && o3.__H && o3.__H.__h.length && (i3.push(o3) !== 1 && r3 === l2.requestAnimationFrame || ((r3 = l2.requestAnimationFrame) || function(n3) { - var t5, u3 = function() { - clearTimeout(r4), b2 && cancelAnimationFrame(t5), setTimeout(n3); - }, r4 = setTimeout(u3, 100); - b2 && (t5 = requestAnimationFrame(u3)); - })(x2)), u2 = null; - }, l2.__c = function(t4, u3) { - u3.some(function(t5) { - try { - t5.__h.forEach(g2), t5.__h = t5.__h.filter(function(n3) { - return !n3.__ || j2(n3); - }); - } catch (r4) { - u3.some(function(n3) { - n3.__h && (n3.__h = []); - }), u3 = [], l2.__e(r4, t5.__v); - } - }), a2 && a2(t4, u3); - }, l2.unmount = function(t4) { - v2 && v2(t4); - var u3, r4 = t4.__c; - r4 && r4.__H && (r4.__H.__.forEach(function(n3) { - try { - g2(n3); - } catch (n4) { - u3 = n4; - } - }), u3 && l2.__e(u3, r4.__v)); - }; - b2 = typeof requestAnimationFrame == "function"; - } -}); - -// node_modules/preact/compat/dist/compat.module.js -var compat_module_exports = {}; -__export(compat_module_exports, { - Children: () => k3, - Component: () => _, - Fragment: () => d, - PureComponent: () => E, - StrictMode: () => fn, - Suspense: () => L2, - SuspenseList: () => M2, - __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: () => X, - cloneElement: () => rn, - createContext: () => D, - createElement: () => v, - createFactory: () => tn, - createPortal: () => W, - createRef: () => p2, - default: () => compat_module_default, - findDOMNode: () => on, - flushSync: () => cn, - forwardRef: () => x3, - hydrate: () => $2, - isValidElement: () => en, - lazy: () => F2, - memo: () => g3, - render: () => B2, - unmountComponentAtNode: () => un, - unstable_batchedUpdates: () => ln, - useCallback: () => A2, - useContext: () => F, - useDebugValue: () => T2, - useEffect: () => y2, - useErrorBoundary: () => q2, - useImperativeHandle: () => _2, - useLayoutEffect: () => h2, - useMemo: () => d2, - useReducer: () => p3, - useRef: () => s3, - useState: () => l3, - version: () => nn -}); -function S2(n3, t4) { - for (var e4 in t4) - n3[e4] = t4[e4]; - return n3; -} -function C2(n3, t4) { - for (var e4 in n3) - if (e4 !== "__source" && !(e4 in t4)) - return true; - for (var r4 in t4) - if (r4 !== "__source" && n3[r4] !== t4[r4]) - return true; - return false; -} -function E(n3) { - this.props = n3; -} -function g3(n3, t4) { - function e4(n4) { - var e6 = this.props.ref, r5 = e6 == n4.ref; - return !r5 && e6 && (e6.call ? e6(null) : e6.current = null), t4 ? !t4(this.props, n4) || !r5 : C2(this.props, n4); - } - function r4(t5) { - return this.shouldComponentUpdate = e4, v(n3, t5); - } - return r4.displayName = "Memo(" + (n3.displayName || n3.name) + ")", r4.prototype.isReactComponent = true, r4.__f = true, r4; -} -function x3(n3) { - function t4(t5, e4) { - var r4 = S2({}, t5); - return delete r4.ref, n3(r4, (e4 = t5.ref || e4) && (typeof e4 != "object" || "current" in e4) ? e4 : null); - } - return t4.$$typeof = R, t4.render = t4, t4.prototype.isReactComponent = t4.__f = true, t4.displayName = "ForwardRef(" + (n3.displayName || n3.name) + ")", t4; -} -function L2() { - this.__u = 0, this.t = null, this.__b = null; -} -function U(n3) { - var t4 = n3.__.__c; - return t4 && t4.__e && t4.__e(n3); -} -function F2(n3) { - var t4, e4, r4; - function u3(u4) { - if (t4 || (t4 = n3()).then(function(n4) { - e4 = n4.default || n4; - }, function(n4) { - r4 = n4; - }), r4) - throw r4; - if (!e4) - throw t4; - return v(e4, u4); - } - return u3.displayName = "Lazy", u3.__f = true, u3; -} -function M2() { - this.u = null, this.o = null; -} -function D2(n3) { - return this.getChildContext = function() { - return n3.context; - }, n3.children; -} -function I2(n3) { - var t4 = this, e4 = n3.i; - t4.componentWillUnmount = function() { - S(null, t4.l), t4.l = null, t4.i = null; - }, t4.i && t4.i !== e4 && t4.componentWillUnmount(), n3.__v ? (t4.l || (t4.i = e4, t4.l = { nodeType: 1, parentNode: e4, childNodes: [], appendChild: function(n4) { - this.childNodes.push(n4), t4.i.appendChild(n4); - }, insertBefore: function(n4, e6) { - this.childNodes.push(n4), t4.i.appendChild(n4); - }, removeChild: function(n4) { - this.childNodes.splice(this.childNodes.indexOf(n4) >>> 1, 1), t4.i.removeChild(n4); - } }), S(v(D2, { context: t4.context }, n3.__v), t4.l)) : t4.l && t4.componentWillUnmount(); -} -function W(n3, t4) { - return v(I2, { __v: n3, i: t4 }); -} -function B2(n3, t4, e4) { - return t4.__k == null && (t4.textContent = ""), S(n3, t4), typeof e4 == "function" && e4(), n3 ? n3.__c : null; -} -function $2(n3, t4, e4) { - return q(n3, t4), typeof e4 == "function" && e4(), n3 ? n3.__c : null; -} -function Z() { -} -function Y() { - return this.cancelBubble; -} -function q3() { - return this.defaultPrevented; -} -function tn(n3) { - return v.bind(null, n3); -} -function en(n3) { - return !!n3 && n3.$$typeof === j3; -} -function rn(n3) { - return en(n3) ? B.apply(null, arguments) : n3; -} -function un(n3) { - return !!n3.__k && (S(null, n3), true); -} -function on(n3) { - return n3 && (n3.base || n3.nodeType === 1 && n3) || null; -} -var w3, R, N2, k3, A3, O2, T3, j3, P2, V, z2, H2, G, J, K, Q, X, nn, ln, cn, fn, compat_module_default; -var init_compat_module = __esm({ - "node_modules/preact/compat/dist/compat.module.js"() { - init_hooks_module(); - init_hooks_module(); - init_preact_module(); - init_preact_module(); - (E.prototype = new _()).isPureReactComponent = true, E.prototype.shouldComponentUpdate = function(n3, t4) { - return C2(this.props, n3) || C2(this.state, t4); - }; - w3 = l2.__b; - l2.__b = function(n3) { - n3.type && n3.type.__f && n3.ref && (n3.props.ref = n3.ref, n3.ref = null), w3 && w3(n3); - }; - R = typeof Symbol != "undefined" && Symbol.for && Symbol.for("react.forward_ref") || 3911; - N2 = function(n3, t4) { - return n3 == null ? null : A(A(n3).map(t4)); - }; - k3 = { map: N2, forEach: N2, count: function(n3) { - return n3 ? A(n3).length : 0; - }, only: function(n3) { - var t4 = A(n3); - if (t4.length !== 1) - throw "Children.only"; - return t4[0]; - }, toArray: A }; - A3 = l2.__e; - l2.__e = function(n3, t4, e4) { - if (n3.then) { - for (var r4, u3 = t4; u3 = u3.__; ) - if ((r4 = u3.__c) && r4.__c) - return t4.__e == null && (t4.__e = e4.__e, t4.__k = e4.__k), r4.__c(n3, t4); - } - A3(n3, t4, e4); - }; - O2 = l2.unmount; - l2.unmount = function(n3) { - var t4 = n3.__c; - t4 && t4.__R && t4.__R(), t4 && n3.__h === true && (n3.type = null), O2 && O2(n3); - }, (L2.prototype = new _()).__c = function(n3, t4) { - var e4 = t4.__c, r4 = this; - r4.t == null && (r4.t = []), r4.t.push(e4); - var u3 = U(r4.__v), o3 = false, i4 = function() { - o3 || (o3 = true, e4.__R = null, u3 ? u3(l4) : l4()); - }; - e4.__R = i4; - var l4 = function() { - if (!--r4.__u) { - if (r4.state.__e) { - var n4 = r4.state.__e; - r4.__v.__k[0] = function n5(t6, e6, r5) { - return t6 && (t6.__v = null, t6.__k = t6.__k && t6.__k.map(function(t7) { - return n5(t7, e6, r5); - }), t6.__c && t6.__c.__P === e6 && (t6.__e && r5.insertBefore(t6.__e, t6.__d), t6.__c.__e = true, t6.__c.__P = r5)), t6; - }(n4, n4.__c.__P, n4.__c.__O); - } - var t5; - for (r4.setState({ __e: r4.__b = null }); t5 = r4.t.pop(); ) - t5.forceUpdate(); - } - }, c5 = t4.__h === true; - r4.__u++ || c5 || r4.setState({ __e: r4.__b = r4.__v.__k[0] }), n3.then(i4, i4); - }, L2.prototype.componentWillUnmount = function() { - this.t = []; - }, L2.prototype.render = function(n3, t4) { - if (this.__b) { - if (this.__v.__k) { - var e4 = document.createElement("div"), r4 = this.__v.__k[0].__c; - this.__v.__k[0] = function n4(t5, e6, r5) { - return t5 && (t5.__c && t5.__c.__H && (t5.__c.__H.__.forEach(function(n5) { - typeof n5.__c == "function" && n5.__c(); - }), t5.__c.__H = null), (t5 = S2({}, t5)).__c != null && (t5.__c.__P === r5 && (t5.__c.__P = e6), t5.__c = null), t5.__k = t5.__k && t5.__k.map(function(t6) { - return n4(t6, e6, r5); - })), t5; - }(this.__b, e4, r4.__O = r4.__P); - } - this.__b = null; - } - var u3 = t4.__e && v(d, null, n3.fallback); - return u3 && (u3.__h = null), [v(d, null, t4.__e ? null : n3.children), u3]; - }; - T3 = function(n3, t4, e4) { - if (++e4[1] === e4[0] && n3.o.delete(t4), n3.props.revealOrder && (n3.props.revealOrder[0] !== "t" || !n3.o.size)) - for (e4 = n3.u; e4; ) { - for (; e4.length > 3; ) - e4.pop()(); - if (e4[1] < e4[0]) - break; - n3.u = e4 = e4[2]; - } - }; - (M2.prototype = new _()).__e = function(n3) { - var t4 = this, e4 = U(t4.__v), r4 = t4.o.get(n3); - return r4[0]++, function(u3) { - var o3 = function() { - t4.props.revealOrder ? (r4.push(u3), T3(t4, n3, r4)) : u3(); - }; - e4 ? e4(o3) : o3(); - }; - }, M2.prototype.render = function(n3) { - this.u = null, this.o = new Map(); - var t4 = A(n3.children); - n3.revealOrder && n3.revealOrder[0] === "b" && t4.reverse(); - for (var e4 = t4.length; e4--; ) - this.o.set(t4[e4], this.u = [1, 0, this.u]); - return n3.children; - }, M2.prototype.componentDidUpdate = M2.prototype.componentDidMount = function() { - var n3 = this; - this.o.forEach(function(t4, e4) { - T3(n3, e4, t4); - }); - }; - j3 = typeof Symbol != "undefined" && Symbol.for && Symbol.for("react.element") || 60103; - P2 = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/; - V = typeof document != "undefined"; - z2 = function(n3) { - return (typeof Symbol != "undefined" && typeof Symbol() == "symbol" ? /fil|che|rad/i : /fil|che|ra/i).test(n3); - }; - _.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(n3) { - Object.defineProperty(_.prototype, n3, { configurable: true, get: function() { - return this["UNSAFE_" + n3]; - }, set: function(t4) { - Object.defineProperty(this, n3, { configurable: true, writable: true, value: t4 }); - } }); - }); - H2 = l2.event; - l2.event = function(n3) { - return H2 && (n3 = H2(n3)), n3.persist = Z, n3.isPropagationStopped = Y, n3.isDefaultPrevented = q3, n3.nativeEvent = n3; - }; - J = { configurable: true, get: function() { - return this.class; - } }; - K = l2.vnode; - l2.vnode = function(n3) { - var t4 = n3.type, e4 = n3.props, r4 = e4; - if (typeof t4 == "string") { - var u3 = t4.indexOf("-") === -1; - for (var o3 in r4 = {}, e4) { - var i4 = e4[o3]; - V && o3 === "children" && t4 === "noscript" || o3 === "value" && "defaultValue" in e4 && i4 == null || (o3 === "defaultValue" && "value" in e4 && e4.value == null ? o3 = "value" : o3 === "download" && i4 === true ? i4 = "" : /ondoubleclick/i.test(o3) ? o3 = "ondblclick" : /^onchange(textarea|input)/i.test(o3 + t4) && !z2(e4.type) ? o3 = "oninput" : /^onfocus$/i.test(o3) ? o3 = "onfocusin" : /^onblur$/i.test(o3) ? o3 = "onfocusout" : /^on(Ani|Tra|Tou|BeforeInp)/.test(o3) ? o3 = o3.toLowerCase() : u3 && P2.test(o3) ? o3 = o3.replace(/[A-Z0-9]/, "-$&").toLowerCase() : i4 === null && (i4 = void 0), r4[o3] = i4); - } - t4 == "select" && r4.multiple && Array.isArray(r4.value) && (r4.value = A(e4.children).forEach(function(n4) { - n4.props.selected = r4.value.indexOf(n4.props.value) != -1; - })), t4 == "select" && r4.defaultValue != null && (r4.value = A(e4.children).forEach(function(n4) { - n4.props.selected = r4.multiple ? r4.defaultValue.indexOf(n4.props.value) != -1 : r4.defaultValue == n4.props.value; - })), n3.props = r4, e4.class != e4.className && (J.enumerable = "className" in e4, e4.className != null && (r4.class = e4.className), Object.defineProperty(r4, "className", J)); - } - n3.$$typeof = j3, K && K(n3); - }; - Q = l2.__r; - l2.__r = function(n3) { - Q && Q(n3), G = n3.__c; - }; - X = { ReactCurrentDispatcher: { current: { readContext: function(n3) { - return G.__n[n3.__c].props.value; - } } } }; - nn = "17.0.2"; - ln = function(n3, t4) { - return n3(t4); - }; - cn = function(n3, t4) { - return n3(t4); - }; - fn = d; - compat_module_default = { useState: l3, useReducer: p3, useEffect: y2, useLayoutEffect: h2, useRef: s3, useImperativeHandle: _2, useMemo: d2, useCallback: A2, useContext: F, useDebugValue: T2, version: "17.0.2", Children: k3, render: B2, hydrate: $2, unmountComponentAtNode: un, createPortal: W, createElement: v, createContext: D, createFactory: tn, cloneElement: rn, createRef: p2, Fragment: d, isValidElement: en, findDOMNode: on, Component: _, PureComponent: E, memo: g3, forwardRef: x3, flushSync: cn, unstable_batchedUpdates: ln, StrictMode: d, Suspense: L2, SuspenseList: M2, lazy: F2, __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: X }; - } -}); - // node_modules/tslib/tslib.js var require_tslib = __commonJS({ "node_modules/tslib/tslib.js"(exports, module2) { - var __extends15; - var __assign30; - var __rest46; + var __extends18; + var __assign32; + var __rest48; var __decorate4; var __param4; var __metadata4; @@ -854,7 +83,7 @@ var require_tslib = __commonJS({ var __read4; var __spread4; var __spreadArrays4; - var __spreadArray4; + var __spreadArray6; var __await4; var __asyncGenerator4; var __asyncDelegator4; @@ -896,7 +125,7 @@ var require_tslib = __commonJS({ if (Object.prototype.hasOwnProperty.call(b10, p4)) d3[p4] = b10[p4]; }; - __extends15 = function(d3, b10) { + __extends18 = function(d3, b10) { if (typeof b10 !== "function" && b10 !== null) throw new TypeError("Class extends value " + String(b10) + " is not a constructor or null"); extendStatics(d3, b10); @@ -905,7 +134,7 @@ var require_tslib = __commonJS({ } d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); }; - __assign30 = Object.assign || function(t4) { + __assign32 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -914,7 +143,7 @@ var require_tslib = __commonJS({ } return t4; }; - __rest46 = function(s4, e4) { + __rest48 = function(s4, e4) { var t4 = {}; for (var p4 in s4) if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) @@ -1112,7 +341,7 @@ var require_tslib = __commonJS({ r4[k4] = a4[j4]; return r4; }; - __spreadArray4 = function(to, from, pack2) { + __spreadArray6 = function(to, from, pack2) { if (pack2 || arguments.length === 2) for (var i4 = 0, l4 = from.length, ar; i4 < l4; i4++) { if (ar || !(i4 in from)) { @@ -1129,7 +358,7 @@ var require_tslib = __commonJS({ __asyncGenerator4 = function(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g4 = generator.apply(thisArg, _arguments || []), i4, q4 = []; + var g4 = generator.apply(thisArg, _arguments || []), i4, q3 = []; return i4 = {}, verb("next"), verb("throw"), verb("return"), i4[Symbol.asyncIterator] = function() { return this; }, i4; @@ -1137,7 +366,7 @@ var require_tslib = __commonJS({ if (g4[n3]) i4[n3] = function(v3) { return new Promise(function(a4, b10) { - q4.push([n3, v3, a4, b10]) > 1 || resume(n3, v3); + q3.push([n3, v3, a4, b10]) > 1 || resume(n3, v3); }); }; } @@ -1145,11 +374,11 @@ var require_tslib = __commonJS({ try { step(g4[n3](v3)); } catch (e4) { - settle(q4[0][3], e4); + settle(q3[0][3], e4); } } function step(r4) { - r4.value instanceof __await4 ? Promise.resolve(r4.value.v).then(fulfill, reject) : settle(q4[0][2], r4); + r4.value instanceof __await4 ? Promise.resolve(r4.value.v).then(fulfill, reject) : settle(q3[0][2], r4); } function fulfill(value2) { resume("next", value2); @@ -1158,8 +387,8 @@ var require_tslib = __commonJS({ resume("throw", value2); } function settle(f3, v3) { - if (f3(v3), q4.shift(), q4.length) - resume(q4[0][0], q4[0][1]); + if (f3(v3), q3.shift(), q3.length) + resume(q3[0][0], q3[0][1]); } }; __asyncDelegator4 = function(o3) { @@ -1208,20 +437,20 @@ var require_tslib = __commonJS({ } : function(o3, v3) { o3["default"] = v3; }; - __importStar4 = function(mod3) { - if (mod3 && mod3.__esModule) - return mod3; + __importStar4 = function(mod5) { + if (mod5 && mod5.__esModule) + return mod5; var result = {}; - if (mod3 != null) { - for (var k4 in mod3) - if (k4 !== "default" && Object.prototype.hasOwnProperty.call(mod3, k4)) - __createBinding4(result, mod3, k4); + if (mod5 != null) { + for (var k4 in mod5) + if (k4 !== "default" && Object.prototype.hasOwnProperty.call(mod5, k4)) + __createBinding4(result, mod5, k4); } - __setModuleDefault(result, mod3); + __setModuleDefault(result, mod5); return result; }; - __importDefault4 = function(mod3) { - return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + __importDefault4 = function(mod5) { + return mod5 && mod5.__esModule ? mod5 : { "default": mod5 }; }; __classPrivateFieldGet4 = function(receiver, state2, kind, f3) { if (kind === "a" && !f3) @@ -1239,9 +468,9 @@ var require_tslib = __commonJS({ throw new TypeError("Cannot write private member to an object whose class did not declare it"); return kind === "a" ? f3.call(receiver, value2) : f3 ? f3.value = value2 : state2.set(receiver, value2), value2; }; - exporter("__extends", __extends15); - exporter("__assign", __assign30); - exporter("__rest", __rest46); + exporter("__extends", __extends18); + exporter("__assign", __assign32); + exporter("__rest", __rest48); exporter("__decorate", __decorate4); exporter("__param", __param4); exporter("__metadata", __metadata4); @@ -1253,7 +482,7 @@ var require_tslib = __commonJS({ exporter("__read", __read4); exporter("__spread", __spread4); exporter("__spreadArrays", __spreadArrays4); - exporter("__spreadArray", __spreadArray4); + exporter("__spreadArray", __spreadArray6); exporter("__await", __await4); exporter("__asyncGenerator", __asyncGenerator4); exporter("__asyncDelegator", __asyncDelegator4); @@ -1267,12 +496,2695 @@ var require_tslib = __commonJS({ } }); +// node_modules/@antv/util/lib/is-array-like.js +var require_is_array_like = __commonJS({ + "node_modules/@antv/util/lib/is-array-like.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var isArrayLike = function(value2) { + return value2 !== null && typeof value2 !== "function" && isFinite(value2.length); + }; + exports.default = isArrayLike; + } +}); + +// node_modules/@antv/util/lib/contains.js +var require_contains = __commonJS({ + "node_modules/@antv/util/lib/contains.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_like_1 = require_is_array_like(); + var contains3 = function(arr, value2) { + if (!is_array_like_1.default(arr)) { + return false; + } + return arr.indexOf(value2) > -1; + }; + exports.default = contains3; + } +}); + +// node_modules/@antv/util/lib/filter.js +var require_filter = __commonJS({ + "node_modules/@antv/util/lib/filter.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_like_1 = require_is_array_like(); + var filter17 = function(arr, func) { + if (!is_array_like_1.default(arr)) { + return arr; + } + var result = []; + for (var index2 = 0; index2 < arr.length; index2++) { + var value2 = arr[index2]; + if (func(value2, index2)) { + result.push(value2); + } + } + return result; + }; + exports.default = filter17; + } +}); + +// node_modules/@antv/util/lib/difference.js +var require_difference = __commonJS({ + "node_modules/@antv/util/lib/difference.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var filter_1 = require_filter(); + var contains_1 = require_contains(); + var difference2 = function(arr, values4) { + if (values4 === void 0) { + values4 = []; + } + return filter_1.default(arr, function(value2) { + return !contains_1.default(values4, value2); + }); + }; + exports.default = difference2; + } +}); + +// node_modules/@antv/util/lib/is-type.js +var require_is_type = __commonJS({ + "node_modules/@antv/util/lib/is-type.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var toString7 = {}.toString; + var isType7 = function(value2, type2) { + return toString7.call(value2) === "[object " + type2 + "]"; + }; + exports.default = isType7; + } +}); + +// node_modules/@antv/util/lib/is-function.js +var require_is_function = __commonJS({ + "node_modules/@antv/util/lib/is-function.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_type_1 = require_is_type(); + exports.default = function(value2) { + return is_type_1.default(value2, "Function"); + }; + } +}); + +// node_modules/@antv/util/lib/is-nil.js +var require_is_nil = __commonJS({ + "node_modules/@antv/util/lib/is-nil.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var isNil67 = function(value2) { + return value2 === null || value2 === void 0; + }; + exports.default = isNil67; + } +}); + +// node_modules/@antv/util/lib/is-array.js +var require_is_array = __commonJS({ + "node_modules/@antv/util/lib/is-array.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_type_1 = require_is_type(); + exports.default = function(value2) { + return Array.isArray ? Array.isArray(value2) : is_type_1.default(value2, "Array"); + }; + } +}); + +// node_modules/@antv/util/lib/is-object.js +var require_is_object = __commonJS({ + "node_modules/@antv/util/lib/is-object.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = function(value2) { + var type2 = typeof value2; + return value2 !== null && type2 === "object" || type2 === "function"; + }; + } +}); + +// node_modules/@antv/util/lib/each.js +var require_each = __commonJS({ + "node_modules/@antv/util/lib/each.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var is_object_1 = require_is_object(); + function each168(elements, func) { + if (!elements) { + return; + } + var rst; + if (is_array_1.default(elements)) { + for (var i4 = 0, len5 = elements.length; i4 < len5; i4++) { + rst = func(elements[i4], i4); + if (rst === false) { + break; + } + } + } else if (is_object_1.default(elements)) { + for (var k4 in elements) { + if (elements.hasOwnProperty(k4)) { + rst = func(elements[k4], k4); + if (rst === false) { + break; + } + } + } + } + } + exports.default = each168; + } +}); + +// node_modules/@antv/util/lib/keys.js +var require_keys = __commonJS({ + "node_modules/@antv/util/lib/keys.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var each_1 = require_each(); + var is_function_1 = require_is_function(); + var keys6 = Object.keys ? function(obj) { + return Object.keys(obj); + } : function(obj) { + var result = []; + each_1.default(obj, function(value2, key) { + if (!(is_function_1.default(obj) && key === "prototype")) { + result.push(key); + } + }); + return result; + }; + exports.default = keys6; + } +}); + +// node_modules/@antv/util/lib/is-match.js +var require_is_match = __commonJS({ + "node_modules/@antv/util/lib/is-match.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_nil_1 = require_is_nil(); + var keys_1 = require_keys(); + function isMatch2(obj, attrs) { + var _keys = keys_1.default(attrs); + var length5 = _keys.length; + if (is_nil_1.default(obj)) + return !length5; + for (var i4 = 0; i4 < length5; i4 += 1) { + var key = _keys[i4]; + if (attrs[key] !== obj[key] || !(key in obj)) { + return false; + } + } + return true; + } + exports.default = isMatch2; + } +}); + +// node_modules/@antv/util/lib/is-object-like.js +var require_is_object_like = __commonJS({ + "node_modules/@antv/util/lib/is-object-like.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var isObjectLike5 = function(value2) { + return typeof value2 === "object" && value2 !== null; + }; + exports.default = isObjectLike5; + } +}); + +// node_modules/@antv/util/lib/is-plain-object.js +var require_is_plain_object = __commonJS({ + "node_modules/@antv/util/lib/is-plain-object.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_object_like_1 = require_is_object_like(); + var is_type_1 = require_is_type(); + var isPlainObject10 = function(value2) { + if (!is_object_like_1.default(value2) || !is_type_1.default(value2, "Object")) { + return false; + } + if (Object.getPrototypeOf(value2) === null) { + return true; + } + var proto = value2; + while (Object.getPrototypeOf(proto) !== null) { + proto = Object.getPrototypeOf(proto); + } + return Object.getPrototypeOf(value2) === proto; + }; + exports.default = isPlainObject10; + } +}); + +// node_modules/@antv/util/lib/find.js +var require_find = __commonJS({ + "node_modules/@antv/util/lib/find.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_function_1 = require_is_function(); + var is_match_1 = require_is_match(); + var is_array_1 = require_is_array(); + var is_plain_object_1 = require_is_plain_object(); + function find11(arr, predicate) { + if (!is_array_1.default(arr)) + return null; + var _predicate; + if (is_function_1.default(predicate)) { + _predicate = predicate; + } + if (is_plain_object_1.default(predicate)) { + _predicate = function(a4) { + return is_match_1.default(a4, predicate); + }; + } + if (_predicate) { + for (var i4 = 0; i4 < arr.length; i4 += 1) { + if (_predicate(arr[i4])) { + return arr[i4]; + } + } + } + return null; + } + exports.default = find11; + } +}); + +// node_modules/@antv/util/lib/find-index.js +var require_find_index = __commonJS({ + "node_modules/@antv/util/lib/find-index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function findIndex3(arr, predicate, fromIndex) { + if (fromIndex === void 0) { + fromIndex = 0; + } + for (var i4 = fromIndex; i4 < arr.length; i4++) { + if (predicate(arr[i4], i4)) { + return i4; + } + } + return -1; + } + exports.default = findIndex3; + } +}); + +// node_modules/@antv/util/lib/first-value.js +var require_first_value = __commonJS({ + "node_modules/@antv/util/lib/first-value.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_nil_1 = require_is_nil(); + var is_array_1 = require_is_array(); + var firstValue2 = function(data3, name) { + var rst = null; + for (var i4 = 0; i4 < data3.length; i4++) { + var obj = data3[i4]; + var value2 = obj[name]; + if (!is_nil_1.default(value2)) { + if (is_array_1.default(value2)) { + rst = value2[0]; + } else { + rst = value2; + } + break; + } + } + return rst; + }; + exports.default = firstValue2; + } +}); + +// node_modules/@antv/util/lib/flatten.js +var require_flatten = __commonJS({ + "node_modules/@antv/util/lib/flatten.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var flatten9 = function(arr) { + if (!is_array_1.default(arr)) { + return []; + } + var rst = []; + for (var i4 = 0; i4 < arr.length; i4++) { + rst = rst.concat(arr[i4]); + } + return rst; + }; + exports.default = flatten9; + } +}); + +// node_modules/@antv/util/lib/flatten-deep.js +var require_flatten_deep = __commonJS({ + "node_modules/@antv/util/lib/flatten-deep.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var flattenDeep = function(arr, result) { + if (result === void 0) { + result = []; + } + if (!is_array_1.default(arr)) { + result.push(arr); + } else { + for (var i4 = 0; i4 < arr.length; i4 += 1) { + flattenDeep(arr[i4], result); + } + } + return result; + }; + exports.default = flattenDeep; + } +}); + +// node_modules/@antv/util/lib/max.js +var require_max = __commonJS({ + "node_modules/@antv/util/lib/max.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + exports.default = function(arr) { + if (!is_array_1.default(arr)) { + return void 0; + } + return arr.reduce(function(prev, curr) { + return Math.max(prev, curr); + }, arr[0]); + }; + } +}); + +// node_modules/@antv/util/lib/min.js +var require_min = __commonJS({ + "node_modules/@antv/util/lib/min.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + exports.default = function(arr) { + if (!is_array_1.default(arr)) { + return void 0; + } + return arr.reduce(function(prev, curr) { + return Math.min(prev, curr); + }, arr[0]); + }; + } +}); + +// node_modules/@antv/util/lib/get-range.js +var require_get_range = __commonJS({ + "node_modules/@antv/util/lib/get-range.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var max_1 = require_max(); + var min_1 = require_min(); + var getRange3 = function(values4) { + var filterValues = values4.filter(function(v3) { + return !isNaN(v3); + }); + if (!filterValues.length) { + return { + min: 0, + max: 0 + }; + } + if (is_array_1.default(values4[0])) { + var tmp = []; + for (var i4 = 0; i4 < values4.length; i4++) { + tmp = tmp.concat(values4[i4]); + } + filterValues = tmp; + } + var max15 = max_1.default(filterValues); + var min13 = min_1.default(filterValues); + return { + min: min13, + max: max15 + }; + }; + exports.default = getRange3; + } +}); + +// node_modules/@antv/util/lib/pull.js +var require_pull = __commonJS({ + "node_modules/@antv/util/lib/pull.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var arrPrototype = Array.prototype; + var splice = arrPrototype.splice; + var indexOf2 = arrPrototype.indexOf; + var pull = function(arr) { + var values4 = []; + for (var _i = 1; _i < arguments.length; _i++) { + values4[_i - 1] = arguments[_i]; + } + for (var i4 = 0; i4 < values4.length; i4++) { + var value2 = values4[i4]; + var fromIndex = -1; + while ((fromIndex = indexOf2.call(arr, value2)) > -1) { + splice.call(arr, fromIndex, 1); + } + } + return arr; + }; + exports.default = pull; + } +}); + +// node_modules/@antv/util/lib/pull-at.js +var require_pull_at = __commonJS({ + "node_modules/@antv/util/lib/pull-at.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_like_1 = require_is_array_like(); + var splice = Array.prototype.splice; + var pullAt = function pullAt2(arr, indexes) { + if (!is_array_like_1.default(arr)) { + return []; + } + var length5 = arr ? indexes.length : 0; + var last17 = length5 - 1; + while (length5--) { + var previous = void 0; + var index2 = indexes[length5]; + if (length5 === last17 || index2 !== previous) { + previous = index2; + splice.call(arr, index2, 1); + } + } + return arr; + }; + exports.default = pullAt; + } +}); + +// node_modules/@antv/util/lib/reduce.js +var require_reduce = __commonJS({ + "node_modules/@antv/util/lib/reduce.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var each_1 = require_each(); + var is_array_1 = require_is_array(); + var is_plain_object_1 = require_is_plain_object(); + var reduce11 = function(arr, fn, init) { + if (!is_array_1.default(arr) && !is_plain_object_1.default(arr)) { + return arr; + } + var result = init; + each_1.default(arr, function(data3, i4) { + result = fn(result, data3, i4); + }); + return result; + }; + exports.default = reduce11; + } +}); + +// node_modules/@antv/util/lib/remove.js +var require_remove = __commonJS({ + "node_modules/@antv/util/lib/remove.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_like_1 = require_is_array_like(); + var pull_at_1 = require_pull_at(); + var remove2 = function(arr, predicate) { + var result = []; + if (!is_array_like_1.default(arr)) { + return result; + } + var i4 = -1; + var indexes = []; + var length5 = arr.length; + while (++i4 < length5) { + var value2 = arr[i4]; + if (predicate(value2, i4, arr)) { + result.push(value2); + indexes.push(i4); + } + } + pull_at_1.default(arr, indexes); + return result; + }; + exports.default = remove2; + } +}); + +// node_modules/@antv/util/lib/is-string.js +var require_is_string = __commonJS({ + "node_modules/@antv/util/lib/is-string.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_type_1 = require_is_type(); + exports.default = function(str8) { + return is_type_1.default(str8, "String"); + }; + } +}); + +// node_modules/@antv/util/lib/sort-by.js +var require_sort_by = __commonJS({ + "node_modules/@antv/util/lib/sort-by.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var is_string_1 = require_is_string(); + var is_function_1 = require_is_function(); + function sortBy2(arr, key) { + var comparer; + if (is_function_1.default(key)) { + comparer = function(a4, b10) { + return key(a4) - key(b10); + }; + } else { + var keys_1 = []; + if (is_string_1.default(key)) { + keys_1.push(key); + } else if (is_array_1.default(key)) { + keys_1 = key; + } + comparer = function(a4, b10) { + for (var i4 = 0; i4 < keys_1.length; i4 += 1) { + var prop = keys_1[i4]; + if (a4[prop] > b10[prop]) { + return 1; + } + if (a4[prop] < b10[prop]) { + return -1; + } + } + return 0; + }; + } + arr.sort(comparer); + return arr; + } + exports.default = sortBy2; + } +}); + +// node_modules/@antv/util/lib/uniq.js +var require_uniq = __commonJS({ + "node_modules/@antv/util/lib/uniq.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function uniq10(arr, cache3) { + if (cache3 === void 0) { + cache3 = new Map(); + } + var r4 = []; + if (Array.isArray(arr)) { + for (var i4 = 0, len5 = arr.length; i4 < len5; i4++) { + var item = arr[i4]; + if (!cache3.has(item)) { + r4.push(item); + cache3.set(item, true); + } + } + } + return r4; + } + exports.default = uniq10; + } +}); + +// node_modules/@antv/util/lib/union.js +var require_union = __commonJS({ + "node_modules/@antv/util/lib/union.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var uniq_1 = require_uniq(); + var union = function() { + var sources = []; + for (var _i = 0; _i < arguments.length; _i++) { + sources[_i] = arguments[_i]; + } + return uniq_1.default([].concat.apply([], sources)); + }; + exports.default = union; + } +}); + +// node_modules/@antv/util/lib/values-of-key.js +var require_values_of_key = __commonJS({ + "node_modules/@antv/util/lib/values-of-key.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var is_nil_1 = require_is_nil(); + exports.default = function(data3, name) { + var rst = []; + var tmpMap = {}; + for (var i4 = 0; i4 < data3.length; i4++) { + var obj = data3[i4]; + var value2 = obj[name]; + if (!is_nil_1.default(value2)) { + if (!is_array_1.default(value2)) { + value2 = [value2]; + } + for (var j4 = 0; j4 < value2.length; j4++) { + var val = value2[j4]; + if (!tmpMap[val]) { + rst.push(val); + tmpMap[val] = true; + } + } + } + } + return rst; + }; + } +}); + +// node_modules/@antv/util/lib/head.js +var require_head = __commonJS({ + "node_modules/@antv/util/lib/head.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_like_1 = require_is_array_like(); + function head13(o3) { + if (is_array_like_1.default(o3)) { + return o3[0]; + } + return void 0; + } + exports.default = head13; + } +}); + +// node_modules/@antv/util/lib/last.js +var require_last = __commonJS({ + "node_modules/@antv/util/lib/last.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_like_1 = require_is_array_like(); + function last17(o3) { + if (is_array_like_1.default(o3)) { + var arr = o3; + return arr[arr.length - 1]; + } + return void 0; + } + exports.default = last17; + } +}); + +// node_modules/@antv/util/lib/starts-with.js +var require_starts_with = __commonJS({ + "node_modules/@antv/util/lib/starts-with.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var is_string_1 = require_is_string(); + function startsWith(arr, e4) { + return is_array_1.default(arr) || is_string_1.default(arr) ? arr[0] === e4 : false; + } + exports.default = startsWith; + } +}); + +// node_modules/@antv/util/lib/ends-with.js +var require_ends_with = __commonJS({ + "node_modules/@antv/util/lib/ends-with.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var is_string_1 = require_is_string(); + function endsWith(arr, e4) { + return is_array_1.default(arr) || is_string_1.default(arr) ? arr[arr.length - 1] === e4 : false; + } + exports.default = endsWith; + } +}); + +// node_modules/@antv/util/lib/every.js +var require_every = __commonJS({ + "node_modules/@antv/util/lib/every.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var every4 = function(arr, func) { + for (var i4 = 0; i4 < arr.length; i4++) { + if (!func(arr[i4], i4)) + return false; + } + return true; + }; + exports.default = every4; + } +}); + +// node_modules/@antv/util/lib/some.js +var require_some = __commonJS({ + "node_modules/@antv/util/lib/some.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var some5 = function(arr, func) { + for (var i4 = 0; i4 < arr.length; i4++) { + if (func(arr[i4], i4)) + return true; + } + return false; + }; + exports.default = some5; + } +}); + +// node_modules/@antv/util/lib/group-by.js +var require_group_by = __commonJS({ + "node_modules/@antv/util/lib/group-by.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var is_function_1 = require_is_function(); + var hasOwnProperty = Object.prototype.hasOwnProperty; + function groupBy12(data3, condition) { + if (!condition || !is_array_1.default(data3)) { + return {}; + } + var result = {}; + var predicate = is_function_1.default(condition) ? condition : function(item2) { + return item2[condition]; + }; + var key; + for (var i4 = 0; i4 < data3.length; i4++) { + var item = data3[i4]; + key = predicate(item); + if (hasOwnProperty.call(result, key)) { + result[key].push(item); + } else { + result[key] = [item]; + } + } + return result; + } + exports.default = groupBy12; + } +}); + +// node_modules/@antv/util/lib/group-to-map.js +var require_group_to_map = __commonJS({ + "node_modules/@antv/util/lib/group-to-map.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var is_function_1 = require_is_function(); + var group_by_1 = require_group_by(); + function groupToMap2(data3, condition) { + if (!condition) { + return { + 0: data3 + }; + } + if (!is_function_1.default(condition)) { + var paramscondition_1 = is_array_1.default(condition) ? condition : condition.replace(/\s+/g, "").split("*"); + condition = function(row) { + var unique = "_"; + for (var i4 = 0, l4 = paramscondition_1.length; i4 < l4; i4++) { + unique += row[paramscondition_1[i4]] && row[paramscondition_1[i4]].toString(); + } + return unique; + }; + } + return group_by_1.default(data3, condition); + } + exports.default = groupToMap2; + } +}); + +// node_modules/@antv/util/lib/group.js +var require_group = __commonJS({ + "node_modules/@antv/util/lib/group.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var group_to_map_1 = require_group_to_map(); + exports.default = function(data3, condition) { + if (!condition) { + return [data3]; + } + var groups = group_to_map_1.default(data3, condition); + var array = []; + for (var i4 in groups) { + array.push(groups[i4]); + } + return array; + }; + } +}); + +// node_modules/@antv/util/lib/get-wrap-behavior.js +var require_get_wrap_behavior = __commonJS({ + "node_modules/@antv/util/lib/get-wrap-behavior.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function getWrapBehavior(obj, action) { + return obj["_wrap_" + action]; + } + exports.default = getWrapBehavior; + } +}); + +// node_modules/@antv/util/lib/wrap-behavior.js +var require_wrap_behavior = __commonJS({ + "node_modules/@antv/util/lib/wrap-behavior.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function wrapBehavior4(obj, action) { + if (obj["_wrap_" + action]) { + return obj["_wrap_" + action]; + } + var method = function(e4) { + obj[action](e4); + }; + obj["_wrap_" + action] = method; + return method; + } + exports.default = wrapBehavior4; + } +}); + +// node_modules/@antv/util/lib/number2color.js +var require_number2color = __commonJS({ + "node_modules/@antv/util/lib/number2color.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var numColorCache = {}; + function numberToColor(num) { + var color4 = numColorCache[num]; + if (!color4) { + var str8 = num.toString(16); + for (var i4 = str8.length; i4 < 6; i4++) { + str8 = "0" + str8; + } + color4 = "#" + str8; + numColorCache[num] = color4; + } + return color4; + } + exports.default = numberToColor; + } +}); + +// node_modules/@antv/util/lib/parse-radius.js +var require_parse_radius = __commonJS({ + "node_modules/@antv/util/lib/parse-radius.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + function parseRadius4(radius) { + var r1 = 0, r22 = 0, r32 = 0, r4 = 0; + if (is_array_1.default(radius)) { + if (radius.length === 1) { + r1 = r22 = r32 = r4 = radius[0]; + } else if (radius.length === 2) { + r1 = r32 = radius[0]; + r22 = r4 = radius[1]; + } else if (radius.length === 3) { + r1 = radius[0]; + r22 = r4 = radius[1]; + r32 = radius[2]; + } else { + r1 = radius[0]; + r22 = radius[1]; + r32 = radius[2]; + r4 = radius[3]; + } + } else { + r1 = r22 = r32 = r4 = radius; + } + return { + r1, + r2: r22, + r3: r32, + r4 + }; + } + exports.default = parseRadius4; + } +}); + +// node_modules/@antv/util/lib/clamp.js +var require_clamp = __commonJS({ + "node_modules/@antv/util/lib/clamp.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var clamp12 = function(a4, min13, max15) { + if (a4 < min13) { + return min13; + } else if (a4 > max15) { + return max15; + } + return a4; + }; + exports.default = clamp12; + } +}); + +// node_modules/@antv/util/lib/fixed-base.js +var require_fixed_base = __commonJS({ + "node_modules/@antv/util/lib/fixed-base.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var fixedBase2 = function(v3, base) { + var str8 = base.toString(); + var index2 = str8.indexOf("."); + if (index2 === -1) { + return Math.round(v3); + } + var length5 = str8.substr(index2 + 1).length; + if (length5 > 20) { + length5 = 20; + } + return parseFloat(v3.toFixed(length5)); + }; + exports.default = fixedBase2; + } +}); + +// node_modules/@antv/util/lib/is-number.js +var require_is_number = __commonJS({ + "node_modules/@antv/util/lib/is-number.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_type_1 = require_is_type(); + var isNumber57 = function(value2) { + return is_type_1.default(value2, "Number"); + }; + exports.default = isNumber57; + } +}); + +// node_modules/@antv/util/lib/is-decimal.js +var require_is_decimal = __commonJS({ + "node_modules/@antv/util/lib/is-decimal.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_number_1 = require_is_number(); + var isDecimal = function(num) { + return is_number_1.default(num) && num % 1 !== 0; + }; + exports.default = isDecimal; + } +}); + +// node_modules/@antv/util/lib/is-even.js +var require_is_even = __commonJS({ + "node_modules/@antv/util/lib/is-even.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_number_1 = require_is_number(); + var isEven = function(num) { + return is_number_1.default(num) && num % 2 === 0; + }; + exports.default = isEven; + } +}); + +// node_modules/@antv/util/lib/is-integer.js +var require_is_integer = __commonJS({ + "node_modules/@antv/util/lib/is-integer.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_number_1 = require_is_number(); + var isInteger2 = Number.isInteger ? Number.isInteger : function(num) { + return is_number_1.default(num) && num % 1 === 0; + }; + exports.default = isInteger2; + } +}); + +// node_modules/@antv/util/lib/is-negative.js +var require_is_negative = __commonJS({ + "node_modules/@antv/util/lib/is-negative.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_number_1 = require_is_number(); + var isNegative = function(num) { + return is_number_1.default(num) && num < 0; + }; + exports.default = isNegative; + } +}); + +// node_modules/@antv/util/lib/is-number-equal.js +var require_is_number_equal = __commonJS({ + "node_modules/@antv/util/lib/is-number-equal.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var PRECISION = 1e-5; + function isNumberEqual11(a4, b10, precision) { + if (precision === void 0) { + precision = PRECISION; + } + return Math.abs(a4 - b10) < precision; + } + exports.default = isNumberEqual11; + } +}); + +// node_modules/@antv/util/lib/is-odd.js +var require_is_odd = __commonJS({ + "node_modules/@antv/util/lib/is-odd.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_number_1 = require_is_number(); + var isOdd = function(num) { + return is_number_1.default(num) && num % 2 !== 0; + }; + exports.default = isOdd; + } +}); + +// node_modules/@antv/util/lib/is-positive.js +var require_is_positive = __commonJS({ + "node_modules/@antv/util/lib/is-positive.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_number_1 = require_is_number(); + var isPositive = function(num) { + return is_number_1.default(num) && num > 0; + }; + exports.default = isPositive; + } +}); + +// node_modules/@antv/util/lib/max-by.js +var require_max_by = __commonJS({ + "node_modules/@antv/util/lib/max-by.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var is_function_1 = require_is_function(); + exports.default = function(arr, fn) { + if (!is_array_1.default(arr)) { + return void 0; + } + var maxItem; + var max15 = -Infinity; + for (var i4 = 0; i4 < arr.length; i4++) { + var item = arr[i4]; + var v3 = is_function_1.default(fn) ? fn(item) : item[fn]; + if (v3 > max15) { + maxItem = item; + max15 = v3; + } + } + return maxItem; + }; + } +}); + +// node_modules/@antv/util/lib/min-by.js +var require_min_by = __commonJS({ + "node_modules/@antv/util/lib/min-by.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var is_function_1 = require_is_function(); + exports.default = function(arr, fn) { + if (!is_array_1.default(arr)) { + return void 0; + } + var minItem; + var min13 = Infinity; + for (var i4 = 0; i4 < arr.length; i4++) { + var item = arr[i4]; + var v3 = is_function_1.default(fn) ? fn(item) : item[fn]; + if (v3 < min13) { + minItem = item; + min13 = v3; + } + } + return minItem; + }; + } +}); + +// node_modules/@antv/util/lib/mod.js +var require_mod = __commonJS({ + "node_modules/@antv/util/lib/mod.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var mod5 = function(n3, m4) { + return (n3 % m4 + m4) % m4; + }; + exports.default = mod5; + } +}); + +// node_modules/@antv/util/lib/to-degree.js +var require_to_degree = __commonJS({ + "node_modules/@antv/util/lib/to-degree.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var DEGREE = 180 / Math.PI; + var toDegree = function(radian) { + return DEGREE * radian; + }; + exports.default = toDegree; + } +}); + +// node_modules/@antv/util/lib/to-integer.js +var require_to_integer = __commonJS({ + "node_modules/@antv/util/lib/to-integer.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = parseInt; + } +}); + +// node_modules/@antv/util/lib/to-radian.js +var require_to_radian = __commonJS({ + "node_modules/@antv/util/lib/to-radian.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var RADIAN = Math.PI / 180; + var toRadian4 = function(degree4) { + return RADIAN * degree4; + }; + exports.default = toRadian4; + } +}); + +// node_modules/@antv/util/lib/for-in.js +var require_for_in = __commonJS({ + "node_modules/@antv/util/lib/for-in.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var each_1 = require_each(); + exports.default = each_1.default; + } +}); + +// node_modules/@antv/util/lib/has.js +var require_has = __commonJS({ + "node_modules/@antv/util/lib/has.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = function(obj, key) { + return obj.hasOwnProperty(key); + }; + } +}); + +// node_modules/@antv/util/lib/has-key.js +var require_has_key = __commonJS({ + "node_modules/@antv/util/lib/has-key.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var has_1 = require_has(); + exports.default = has_1.default; + } +}); + +// node_modules/@antv/util/lib/values.js +var require_values = __commonJS({ + "node_modules/@antv/util/lib/values.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var each_1 = require_each(); + var is_function_1 = require_is_function(); + var values4 = Object.values ? function(obj) { + return Object.values(obj); + } : function(obj) { + var result = []; + each_1.default(obj, function(value2, key) { + if (!(is_function_1.default(obj) && key === "prototype")) { + result.push(value2); + } + }); + return result; + }; + exports.default = values4; + } +}); + +// node_modules/@antv/util/lib/has-value.js +var require_has_value = __commonJS({ + "node_modules/@antv/util/lib/has-value.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var contains_1 = require_contains(); + var values_1 = require_values(); + exports.default = function(obj, value2) { + return contains_1.default(values_1.default(obj), value2); + }; + } +}); + +// node_modules/@antv/util/lib/to-string.js +var require_to_string = __commonJS({ + "node_modules/@antv/util/lib/to-string.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_nil_1 = require_is_nil(); + exports.default = function(value2) { + if (is_nil_1.default(value2)) + return ""; + return value2.toString(); + }; + } +}); + +// node_modules/@antv/util/lib/lower-case.js +var require_lower_case = __commonJS({ + "node_modules/@antv/util/lib/lower-case.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var to_string_1 = require_to_string(); + var lowerCase4 = function(str8) { + return to_string_1.default(str8).toLowerCase(); + }; + exports.default = lowerCase4; + } +}); + +// node_modules/@antv/util/lib/lower-first.js +var require_lower_first = __commonJS({ + "node_modules/@antv/util/lib/lower-first.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var to_string_1 = require_to_string(); + var lowerFirst = function(value2) { + var str8 = to_string_1.default(value2); + return str8.charAt(0).toLowerCase() + str8.substring(1); + }; + exports.default = lowerFirst; + } +}); + +// node_modules/@antv/util/lib/substitute.js +var require_substitute = __commonJS({ + "node_modules/@antv/util/lib/substitute.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function substitute5(str8, o3) { + if (!str8 || !o3) { + return str8; + } + return str8.replace(/\\?\{([^{}]+)\}/g, function(match, name) { + if (match.charAt(0) === "\\") { + return match.slice(1); + } + return o3[name] === void 0 ? "" : o3[name]; + }); + } + exports.default = substitute5; + } +}); + +// node_modules/@antv/util/lib/upper-case.js +var require_upper_case = __commonJS({ + "node_modules/@antv/util/lib/upper-case.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var to_string_1 = require_to_string(); + var upperCase = function(str8) { + return to_string_1.default(str8).toUpperCase(); + }; + exports.default = upperCase; + } +}); + +// node_modules/@antv/util/lib/upper-first.js +var require_upper_first = __commonJS({ + "node_modules/@antv/util/lib/upper-first.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var to_string_1 = require_to_string(); + var upperFirst8 = function(value2) { + var str8 = to_string_1.default(value2); + return str8.charAt(0).toUpperCase() + str8.substring(1); + }; + exports.default = upperFirst8; + } +}); + +// node_modules/@antv/util/lib/get-type.js +var require_get_type = __commonJS({ + "node_modules/@antv/util/lib/get-type.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var toString7 = {}.toString; + var getType2 = function(value2) { + return toString7.call(value2).replace(/^\[object /, "").replace(/]$/, ""); + }; + exports.default = getType2; + } +}); + +// node_modules/@antv/util/lib/is-arguments.js +var require_is_arguments = __commonJS({ + "node_modules/@antv/util/lib/is-arguments.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_type_1 = require_is_type(); + var isArguments = function(value2) { + return is_type_1.default(value2, "Arguments"); + }; + exports.default = isArguments; + } +}); + +// node_modules/@antv/util/lib/is-boolean.js +var require_is_boolean = __commonJS({ + "node_modules/@antv/util/lib/is-boolean.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_type_1 = require_is_type(); + var isBoolean10 = function(value2) { + return is_type_1.default(value2, "Boolean"); + }; + exports.default = isBoolean10; + } +}); + +// node_modules/@antv/util/lib/is-date.js +var require_is_date = __commonJS({ + "node_modules/@antv/util/lib/is-date.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_type_1 = require_is_type(); + var isDate3 = function(value2) { + return is_type_1.default(value2, "Date"); + }; + exports.default = isDate3; + } +}); + +// node_modules/@antv/util/lib/is-error.js +var require_is_error = __commonJS({ + "node_modules/@antv/util/lib/is-error.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_type_1 = require_is_type(); + var isError = function(value2) { + return is_type_1.default(value2, "Error"); + }; + exports.default = isError; + } +}); + +// node_modules/@antv/util/lib/is-finite.js +var require_is_finite = __commonJS({ + "node_modules/@antv/util/lib/is-finite.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_number_1 = require_is_number(); + function default_1(value2) { + return is_number_1.default(value2) && isFinite(value2); + } + exports.default = default_1; + } +}); + +// node_modules/@antv/util/lib/is-null.js +var require_is_null = __commonJS({ + "node_modules/@antv/util/lib/is-null.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var isNull3 = function(value2) { + return value2 === null; + }; + exports.default = isNull3; + } +}); + +// node_modules/@antv/util/lib/is-prototype.js +var require_is_prototype = __commonJS({ + "node_modules/@antv/util/lib/is-prototype.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var objectProto4 = Object.prototype; + var isPrototype = function(value2) { + var Ctor = value2 && value2.constructor; + var proto = typeof Ctor === "function" && Ctor.prototype || objectProto4; + return value2 === proto; + }; + exports.default = isPrototype; + } +}); + +// node_modules/@antv/util/lib/is-reg-exp.js +var require_is_reg_exp = __commonJS({ + "node_modules/@antv/util/lib/is-reg-exp.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_type_1 = require_is_type(); + var isRegExp = function(str8) { + return is_type_1.default(str8, "RegExp"); + }; + exports.default = isRegExp; + } +}); + +// node_modules/@antv/util/lib/is-undefined.js +var require_is_undefined = __commonJS({ + "node_modules/@antv/util/lib/is-undefined.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var isUndefined5 = function(value2) { + return value2 === void 0; + }; + exports.default = isUndefined5; + } +}); + +// node_modules/@antv/util/lib/is-element.js +var require_is_element = __commonJS({ + "node_modules/@antv/util/lib/is-element.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var isElement3 = function(o3) { + return o3 instanceof Element || o3 instanceof HTMLDocument; + }; + exports.default = isElement3; + } +}); + +// node_modules/@antv/util/lib/request-animation-frame.js +var require_request_animation_frame = __commonJS({ + "node_modules/@antv/util/lib/request-animation-frame.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function requestAnimationFrame4(fn) { + var method = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function(f3) { + return setTimeout(f3, 16); + }; + return method(fn); + } + exports.default = requestAnimationFrame4; + } +}); + +// node_modules/@antv/util/lib/clear-animation-frame.js +var require_clear_animation_frame = __commonJS({ + "node_modules/@antv/util/lib/clear-animation-frame.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function cancelAnimationFrame3(handler) { + var method = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.msCancelAnimationFrame || clearTimeout; + method(handler); + } + exports.default = cancelAnimationFrame3; + } +}); + +// node_modules/@antv/util/lib/mix.js +var require_mix = __commonJS({ + "node_modules/@antv/util/lib/mix.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function _mix(dist4, obj) { + for (var key in obj) { + if (obj.hasOwnProperty(key) && key !== "constructor" && obj[key] !== void 0) { + dist4[key] = obj[key]; + } + } + } + function mix31(dist4, src1, src2, src3) { + if (src1) + _mix(dist4, src1); + if (src2) + _mix(dist4, src2); + if (src3) + _mix(dist4, src3); + return dist4; + } + exports.default = mix31; + } +}); + +// node_modules/@antv/util/lib/augment.js +var require_augment = __commonJS({ + "node_modules/@antv/util/lib/augment.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var mix_1 = require_mix(); + var is_function_1 = require_is_function(); + var augment = function() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var c5 = args[0]; + for (var i4 = 1; i4 < args.length; i4++) { + var obj = args[i4]; + if (is_function_1.default(obj)) { + obj = obj.prototype; + } + mix_1.default(c5.prototype, obj); + } + }; + exports.default = augment; + } +}); + +// node_modules/@antv/util/lib/clone.js +var require_clone = __commonJS({ + "node_modules/@antv/util/lib/clone.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var clone41 = function(obj) { + if (typeof obj !== "object" || obj === null) { + return obj; + } + var rst; + if (is_array_1.default(obj)) { + rst = []; + for (var i4 = 0, l4 = obj.length; i4 < l4; i4++) { + if (typeof obj[i4] === "object" && obj[i4] != null) { + rst[i4] = clone41(obj[i4]); + } else { + rst[i4] = obj[i4]; + } + } + } else { + rst = {}; + for (var k4 in obj) { + if (typeof obj[k4] === "object" && obj[k4] != null) { + rst[k4] = clone41(obj[k4]); + } else { + rst[k4] = obj[k4]; + } + } + } + return rst; + }; + exports.default = clone41; + } +}); + +// node_modules/@antv/util/lib/debounce.js +var require_debounce = __commonJS({ + "node_modules/@antv/util/lib/debounce.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function debounce5(func, wait, immediate) { + var timeout2; + return function() { + var context = this, args = arguments; + var later = function() { + timeout2 = null; + if (!immediate) { + func.apply(context, args); + } + }; + var callNow = immediate && !timeout2; + clearTimeout(timeout2); + timeout2 = setTimeout(later, wait); + if (callNow) { + func.apply(context, args); + } + }; + } + exports.default = debounce5; + } +}); + +// node_modules/@antv/util/lib/memoize.js +var require_memoize = __commonJS({ + "node_modules/@antv/util/lib/memoize.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_function_1 = require_is_function(); + exports.default = function(f3, resolver) { + if (!is_function_1.default(f3)) { + throw new TypeError("Expected a function"); + } + var memoized = function() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var key = resolver ? resolver.apply(this, args) : args[0]; + var cache3 = memoized.cache; + if (cache3.has(key)) { + return cache3.get(key); + } + var result = f3.apply(this, args); + cache3.set(key, result); + return result; + }; + memoized.cache = new Map(); + return memoized; + }; + } +}); + +// node_modules/@antv/util/lib/deep-mix.js +var require_deep_mix = __commonJS({ + "node_modules/@antv/util/lib/deep-mix.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_1 = require_is_array(); + var is_plain_object_1 = require_is_plain_object(); + var MAX_MIX_LEVEL2 = 5; + function _deepMix(dist4, src, level, maxLevel) { + level = level || 0; + maxLevel = maxLevel || MAX_MIX_LEVEL2; + for (var key in src) { + if (src.hasOwnProperty(key)) { + var value2 = src[key]; + if (value2 !== null && is_plain_object_1.default(value2)) { + if (!is_plain_object_1.default(dist4[key])) { + dist4[key] = {}; + } + if (level < maxLevel) { + _deepMix(dist4[key], value2, level + 1, maxLevel); + } else { + dist4[key] = src[key]; + } + } else if (is_array_1.default(value2)) { + dist4[key] = []; + dist4[key] = dist4[key].concat(value2); + } else if (value2 !== void 0) { + dist4[key] = value2; + } + } + } + } + var deepMix58 = function(rst) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + for (var i4 = 0; i4 < args.length; i4 += 1) { + _deepMix(rst, args[i4]); + } + return rst; + }; + exports.default = deepMix58; + } +}); + +// node_modules/@antv/util/lib/extend.js +var require_extend = __commonJS({ + "node_modules/@antv/util/lib/extend.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var mix_1 = require_mix(); + var is_function_1 = require_is_function(); + var extend4 = function(subclass, superclass, overrides, staticOverrides) { + if (!is_function_1.default(superclass)) { + overrides = superclass; + superclass = subclass; + subclass = function() { + }; + } + var create8 = Object.create ? function(proto, c5) { + return Object.create(proto, { + constructor: { + value: c5 + } + }); + } : function(proto, c5) { + function Tmp() { + } + Tmp.prototype = proto; + var o3 = new Tmp(); + o3.constructor = c5; + return o3; + }; + var superObj = create8(superclass.prototype, subclass); + subclass.prototype = mix_1.default(superObj, subclass.prototype); + subclass.superclass = create8(superclass.prototype, superclass); + mix_1.default(superObj, overrides); + mix_1.default(subclass, staticOverrides); + return subclass; + }; + exports.default = extend4; + } +}); + +// node_modules/@antv/util/lib/index-of.js +var require_index_of = __commonJS({ + "node_modules/@antv/util/lib/index-of.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_like_1 = require_is_array_like(); + var indexOf2 = function(arr, obj) { + if (!is_array_like_1.default(arr)) { + return -1; + } + var m4 = Array.prototype.indexOf; + if (m4) { + return m4.call(arr, obj); + } + var index2 = -1; + for (var i4 = 0; i4 < arr.length; i4++) { + if (arr[i4] === obj) { + index2 = i4; + break; + } + } + return index2; + }; + exports.default = indexOf2; + } +}); + +// node_modules/@antv/util/lib/is-empty.js +var require_is_empty = __commonJS({ + "node_modules/@antv/util/lib/is-empty.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_nil_1 = require_is_nil(); + var is_array_like_1 = require_is_array_like(); + var get_type_1 = require_get_type(); + var is_prototype_1 = require_is_prototype(); + var hasOwnProperty = Object.prototype.hasOwnProperty; + function isEmpty14(value2) { + if (is_nil_1.default(value2)) { + return true; + } + if (is_array_like_1.default(value2)) { + return !value2.length; + } + var type2 = get_type_1.default(value2); + if (type2 === "Map" || type2 === "Set") { + return !value2.size; + } + if (is_prototype_1.default(value2)) { + return !Object.keys(value2).length; + } + for (var key in value2) { + if (hasOwnProperty.call(value2, key)) { + return false; + } + } + return true; + } + exports.default = isEmpty14; + } +}); + +// node_modules/@antv/util/lib/is-equal.js +var require_is_equal = __commonJS({ + "node_modules/@antv/util/lib/is-equal.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_object_like_1 = require_is_object_like(); + var is_array_like_1 = require_is_array_like(); + var is_string_1 = require_is_string(); + var isEqual24 = function(value2, other2) { + if (value2 === other2) { + return true; + } + if (!value2 || !other2) { + return false; + } + if (is_string_1.default(value2) || is_string_1.default(other2)) { + return false; + } + if (is_array_like_1.default(value2) || is_array_like_1.default(other2)) { + if (value2.length !== other2.length) { + return false; + } + var rst = true; + for (var i4 = 0; i4 < value2.length; i4++) { + rst = isEqual24(value2[i4], other2[i4]); + if (!rst) { + break; + } + } + return rst; + } + if (is_object_like_1.default(value2) || is_object_like_1.default(other2)) { + var valueKeys = Object.keys(value2); + var otherKeys = Object.keys(other2); + if (valueKeys.length !== otherKeys.length) { + return false; + } + var rst = true; + for (var i4 = 0; i4 < valueKeys.length; i4++) { + rst = isEqual24(value2[valueKeys[i4]], other2[valueKeys[i4]]); + if (!rst) { + break; + } + } + return rst; + } + return false; + }; + exports.default = isEqual24; + } +}); + +// node_modules/@antv/util/lib/is-equal-with.js +var require_is_equal_with = __commonJS({ + "node_modules/@antv/util/lib/is-equal-with.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_function_1 = require_is_function(); + var is_equal_1 = require_is_equal(); + exports.default = function(value2, other2, fn) { + if (!is_function_1.default(fn)) { + return is_equal_1.default(value2, other2); + } + return !!fn(value2, other2); + }; + } +}); + +// node_modules/@antv/util/lib/map.js +var require_map = __commonJS({ + "node_modules/@antv/util/lib/map.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_like_1 = require_is_array_like(); + var map23 = function(arr, func) { + if (!is_array_like_1.default(arr)) { + return arr; + } + var result = []; + for (var index2 = 0; index2 < arr.length; index2++) { + var value2 = arr[index2]; + result.push(func(value2, index2)); + } + return result; + }; + exports.default = map23; + } +}); + +// node_modules/@antv/util/lib/map-values.js +var require_map_values = __commonJS({ + "node_modules/@antv/util/lib/map-values.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_nil_1 = require_is_nil(); + var is_object_1 = require_is_object(); + var identity4 = function(v3) { + return v3; + }; + exports.default = function(object, func) { + if (func === void 0) { + func = identity4; + } + var r4 = {}; + if (is_object_1.default(object) && !is_nil_1.default(object)) { + Object.keys(object).forEach(function(key) { + r4[key] = func(object[key], key); + }); + } + return r4; + }; + } +}); + +// node_modules/@antv/util/lib/get.js +var require_get = __commonJS({ + "node_modules/@antv/util/lib/get.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_string_1 = require_is_string(); + exports.default = function(obj, key, defaultValue) { + var p4 = 0; + var keyArr = is_string_1.default(key) ? key.split(".") : key; + while (obj && p4 < keyArr.length) { + obj = obj[keyArr[p4++]]; + } + return obj === void 0 || p4 < keyArr.length ? defaultValue : obj; + }; + } +}); + +// node_modules/@antv/util/lib/set.js +var require_set = __commonJS({ + "node_modules/@antv/util/lib/set.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_object_1 = require_is_object(); + var is_string_1 = require_is_string(); + var is_number_1 = require_is_number(); + exports.default = function(obj, path, value2) { + var o3 = obj; + var keyArr = is_string_1.default(path) ? path.split(".") : path; + keyArr.forEach(function(key, idx) { + if (idx < keyArr.length - 1) { + if (!is_object_1.default(o3[key])) { + o3[key] = is_number_1.default(keyArr[idx + 1]) ? [] : {}; + } + o3 = o3[key]; + } else { + o3[key] = value2; + } + }); + return obj; + }; + } +}); + +// node_modules/@antv/util/lib/pick.js +var require_pick = __commonJS({ + "node_modules/@antv/util/lib/pick.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var each_1 = require_each(); + var is_plain_object_1 = require_is_plain_object(); + var hasOwnProperty = Object.prototype.hasOwnProperty; + exports.default = function(object, keys6) { + if (object === null || !is_plain_object_1.default(object)) { + return {}; + } + var result = {}; + each_1.default(keys6, function(key) { + if (hasOwnProperty.call(object, key)) { + result[key] = object[key]; + } + }); + return result; + }; + } +}); + +// node_modules/@antv/util/lib/omit.js +var require_omit = __commonJS({ + "node_modules/@antv/util/lib/omit.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var reduce_1 = require_reduce(); + exports.default = function(obj, keys6) { + return reduce_1.default(obj, function(r4, curr, key) { + if (!keys6.includes(key)) { + r4[key] = curr; + } + return r4; + }, {}); + }; + } +}); + +// node_modules/@antv/util/lib/throttle.js +var require_throttle = __commonJS({ + "node_modules/@antv/util/lib/throttle.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = function(func, wait, options) { + var timeout2, context, args, result; + var previous = 0; + if (!options) + options = {}; + var later = function() { + previous = options.leading === false ? 0 : Date.now(); + timeout2 = null; + result = func.apply(context, args); + if (!timeout2) + context = args = null; + }; + var throttled = function() { + var now2 = Date.now(); + if (!previous && options.leading === false) + previous = now2; + var remaining = wait - (now2 - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout2) { + clearTimeout(timeout2); + timeout2 = null; + } + previous = now2; + result = func.apply(context, args); + if (!timeout2) + context = args = null; + } else if (!timeout2 && options.trailing !== false) { + timeout2 = setTimeout(later, remaining); + } + return result; + }; + throttled.cancel = function() { + clearTimeout(timeout2); + previous = 0; + timeout2 = context = args = null; + }; + return throttled; + }; + } +}); + +// node_modules/@antv/util/lib/to-array.js +var require_to_array = __commonJS({ + "node_modules/@antv/util/lib/to-array.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_array_like_1 = require_is_array_like(); + exports.default = function(value2) { + return is_array_like_1.default(value2) ? Array.prototype.slice.call(value2) : []; + }; + } +}); + +// node_modules/@antv/util/lib/unique-id.js +var require_unique_id = __commonJS({ + "node_modules/@antv/util/lib/unique-id.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var map23 = {}; + exports.default = function(prefix2) { + prefix2 = prefix2 || "g"; + if (!map23[prefix2]) { + map23[prefix2] = 1; + } else { + map23[prefix2] += 1; + } + return prefix2 + map23[prefix2]; + }; + } +}); + +// node_modules/@antv/util/lib/noop.js +var require_noop = __commonJS({ + "node_modules/@antv/util/lib/noop.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = function() { + }; + } +}); + +// node_modules/@antv/util/lib/identity.js +var require_identity = __commonJS({ + "node_modules/@antv/util/lib/identity.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = function(v3) { + return v3; + }; + } +}); + +// node_modules/@antv/util/lib/size.js +var require_size = __commonJS({ + "node_modules/@antv/util/lib/size.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_nil_1 = require_is_nil(); + var is_array_like_1 = require_is_array_like(); + function size14(o3) { + if (is_nil_1.default(o3)) { + return 0; + } + if (is_array_like_1.default(o3)) { + return o3.length; + } + return Object.keys(o3).length; + } + exports.default = size14; + } +}); + +// node_modules/@antv/util/lib/measure-text-width.js +var require_measure_text_width = __commonJS({ + "node_modules/@antv/util/lib/measure-text-width.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = require_tslib(); + var values_1 = require_values(); + var memoize_1 = require_memoize(); + var is_string_1 = require_is_string(); + var ctx3; + exports.default = memoize_1.default(function(text, font) { + if (font === void 0) { + font = {}; + } + var fontSize = font.fontSize, fontFamily = font.fontFamily, fontWeight = font.fontWeight, fontStyle = font.fontStyle, fontVariant = font.fontVariant; + if (!ctx3) { + ctx3 = document.createElement("canvas").getContext("2d"); + } + ctx3.font = [fontStyle, fontVariant, fontWeight, fontSize + "px", fontFamily].join(" "); + return ctx3.measureText(is_string_1.default(text) ? text : "").width; + }, function(text, font) { + if (font === void 0) { + font = {}; + } + return tslib_1.__spreadArrays([text], values_1.default(font)).join(""); + }); + } +}); + +// node_modules/@antv/util/lib/get-ellipsis-text.js +var require_get_ellipsis_text = __commonJS({ + "node_modules/@antv/util/lib/get-ellipsis-text.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var is_string_1 = require_is_string(); + var to_string_1 = require_to_string(); + var measure_text_width_1 = require_measure_text_width(); + exports.default = function(text, maxWidth, font, str8) { + if (str8 === void 0) { + str8 = "..."; + } + var STEP = 16; + var PLACEHOLDER_WIDTH = measure_text_width_1.default(str8, font); + var leftText = !is_string_1.default(text) ? to_string_1.default(text) : text; + var leftWidth = maxWidth; + var r4 = []; + var currentText; + var currentWidth; + if (measure_text_width_1.default(text, font) <= maxWidth) { + return text; + } + while (true) { + currentText = leftText.substr(0, STEP); + currentWidth = measure_text_width_1.default(currentText, font); + if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) { + if (currentWidth > leftWidth) { + break; + } + } + r4.push(currentText); + leftWidth -= currentWidth; + leftText = leftText.substr(STEP); + if (!leftText) { + return r4.join(""); + } + } + while (true) { + currentText = leftText.substr(0, 1); + currentWidth = measure_text_width_1.default(currentText, font); + if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) { + break; + } + r4.push(currentText); + leftWidth -= currentWidth; + leftText = leftText.substr(1); + if (!leftText) { + return r4.join(""); + } + } + return "" + r4.join("") + str8; + }; + } +}); + +// node_modules/@antv/util/lib/cache.js +var require_cache = __commonJS({ + "node_modules/@antv/util/lib/cache.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var default_1 = function() { + function default_12() { + this.map = {}; + } + default_12.prototype.has = function(key) { + return this.map[key] !== void 0; + }; + default_12.prototype.get = function(key, def) { + var v3 = this.map[key]; + return v3 === void 0 ? def : v3; + }; + default_12.prototype.set = function(key, value2) { + this.map[key] = value2; + }; + default_12.prototype.clear = function() { + this.map = {}; + }; + default_12.prototype.delete = function(key) { + delete this.map[key]; + }; + default_12.prototype.size = function() { + return Object.keys(this.map).length; + }; + return default_12; + }(); + exports.default = default_1; + } +}); + +// node_modules/@antv/util/lib/index.js +var require_lib = __commonJS({ + "node_modules/@antv/util/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var contains_1 = require_contains(); + Object.defineProperty(exports, "contains", { enumerable: true, get: function() { + return contains_1.default; + } }); + Object.defineProperty(exports, "includes", { enumerable: true, get: function() { + return contains_1.default; + } }); + var difference_1 = require_difference(); + Object.defineProperty(exports, "difference", { enumerable: true, get: function() { + return difference_1.default; + } }); + var find_1 = require_find(); + Object.defineProperty(exports, "find", { enumerable: true, get: function() { + return find_1.default; + } }); + var find_index_1 = require_find_index(); + Object.defineProperty(exports, "findIndex", { enumerable: true, get: function() { + return find_index_1.default; + } }); + var first_value_1 = require_first_value(); + Object.defineProperty(exports, "firstValue", { enumerable: true, get: function() { + return first_value_1.default; + } }); + var flatten_1 = require_flatten(); + Object.defineProperty(exports, "flatten", { enumerable: true, get: function() { + return flatten_1.default; + } }); + var flatten_deep_1 = require_flatten_deep(); + Object.defineProperty(exports, "flattenDeep", { enumerable: true, get: function() { + return flatten_deep_1.default; + } }); + var get_range_1 = require_get_range(); + Object.defineProperty(exports, "getRange", { enumerable: true, get: function() { + return get_range_1.default; + } }); + var pull_1 = require_pull(); + Object.defineProperty(exports, "pull", { enumerable: true, get: function() { + return pull_1.default; + } }); + var pull_at_1 = require_pull_at(); + Object.defineProperty(exports, "pullAt", { enumerable: true, get: function() { + return pull_at_1.default; + } }); + var reduce_1 = require_reduce(); + Object.defineProperty(exports, "reduce", { enumerable: true, get: function() { + return reduce_1.default; + } }); + var remove_1 = require_remove(); + Object.defineProperty(exports, "remove", { enumerable: true, get: function() { + return remove_1.default; + } }); + var sort_by_1 = require_sort_by(); + Object.defineProperty(exports, "sortBy", { enumerable: true, get: function() { + return sort_by_1.default; + } }); + var union_1 = require_union(); + Object.defineProperty(exports, "union", { enumerable: true, get: function() { + return union_1.default; + } }); + var uniq_1 = require_uniq(); + Object.defineProperty(exports, "uniq", { enumerable: true, get: function() { + return uniq_1.default; + } }); + var values_of_key_1 = require_values_of_key(); + Object.defineProperty(exports, "valuesOfKey", { enumerable: true, get: function() { + return values_of_key_1.default; + } }); + var head_1 = require_head(); + Object.defineProperty(exports, "head", { enumerable: true, get: function() { + return head_1.default; + } }); + var last_1 = require_last(); + Object.defineProperty(exports, "last", { enumerable: true, get: function() { + return last_1.default; + } }); + var starts_with_1 = require_starts_with(); + Object.defineProperty(exports, "startsWith", { enumerable: true, get: function() { + return starts_with_1.default; + } }); + var ends_with_1 = require_ends_with(); + Object.defineProperty(exports, "endsWith", { enumerable: true, get: function() { + return ends_with_1.default; + } }); + var filter_1 = require_filter(); + Object.defineProperty(exports, "filter", { enumerable: true, get: function() { + return filter_1.default; + } }); + var every_1 = require_every(); + Object.defineProperty(exports, "every", { enumerable: true, get: function() { + return every_1.default; + } }); + var some_1 = require_some(); + Object.defineProperty(exports, "some", { enumerable: true, get: function() { + return some_1.default; + } }); + var group_1 = require_group(); + Object.defineProperty(exports, "group", { enumerable: true, get: function() { + return group_1.default; + } }); + var group_by_1 = require_group_by(); + Object.defineProperty(exports, "groupBy", { enumerable: true, get: function() { + return group_by_1.default; + } }); + var group_to_map_1 = require_group_to_map(); + Object.defineProperty(exports, "groupToMap", { enumerable: true, get: function() { + return group_to_map_1.default; + } }); + var get_wrap_behavior_1 = require_get_wrap_behavior(); + Object.defineProperty(exports, "getWrapBehavior", { enumerable: true, get: function() { + return get_wrap_behavior_1.default; + } }); + var wrap_behavior_1 = require_wrap_behavior(); + Object.defineProperty(exports, "wrapBehavior", { enumerable: true, get: function() { + return wrap_behavior_1.default; + } }); + var number2color_1 = require_number2color(); + Object.defineProperty(exports, "number2color", { enumerable: true, get: function() { + return number2color_1.default; + } }); + var parse_radius_1 = require_parse_radius(); + Object.defineProperty(exports, "parseRadius", { enumerable: true, get: function() { + return parse_radius_1.default; + } }); + var clamp_1 = require_clamp(); + Object.defineProperty(exports, "clamp", { enumerable: true, get: function() { + return clamp_1.default; + } }); + var fixed_base_1 = require_fixed_base(); + Object.defineProperty(exports, "fixedBase", { enumerable: true, get: function() { + return fixed_base_1.default; + } }); + var is_decimal_1 = require_is_decimal(); + Object.defineProperty(exports, "isDecimal", { enumerable: true, get: function() { + return is_decimal_1.default; + } }); + var is_even_1 = require_is_even(); + Object.defineProperty(exports, "isEven", { enumerable: true, get: function() { + return is_even_1.default; + } }); + var is_integer_1 = require_is_integer(); + Object.defineProperty(exports, "isInteger", { enumerable: true, get: function() { + return is_integer_1.default; + } }); + var is_negative_1 = require_is_negative(); + Object.defineProperty(exports, "isNegative", { enumerable: true, get: function() { + return is_negative_1.default; + } }); + var is_number_equal_1 = require_is_number_equal(); + Object.defineProperty(exports, "isNumberEqual", { enumerable: true, get: function() { + return is_number_equal_1.default; + } }); + var is_odd_1 = require_is_odd(); + Object.defineProperty(exports, "isOdd", { enumerable: true, get: function() { + return is_odd_1.default; + } }); + var is_positive_1 = require_is_positive(); + Object.defineProperty(exports, "isPositive", { enumerable: true, get: function() { + return is_positive_1.default; + } }); + var max_1 = require_max(); + Object.defineProperty(exports, "max", { enumerable: true, get: function() { + return max_1.default; + } }); + var max_by_1 = require_max_by(); + Object.defineProperty(exports, "maxBy", { enumerable: true, get: function() { + return max_by_1.default; + } }); + var min_1 = require_min(); + Object.defineProperty(exports, "min", { enumerable: true, get: function() { + return min_1.default; + } }); + var min_by_1 = require_min_by(); + Object.defineProperty(exports, "minBy", { enumerable: true, get: function() { + return min_by_1.default; + } }); + var mod_1 = require_mod(); + Object.defineProperty(exports, "mod", { enumerable: true, get: function() { + return mod_1.default; + } }); + var to_degree_1 = require_to_degree(); + Object.defineProperty(exports, "toDegree", { enumerable: true, get: function() { + return to_degree_1.default; + } }); + var to_integer_1 = require_to_integer(); + Object.defineProperty(exports, "toInteger", { enumerable: true, get: function() { + return to_integer_1.default; + } }); + var to_radian_1 = require_to_radian(); + Object.defineProperty(exports, "toRadian", { enumerable: true, get: function() { + return to_radian_1.default; + } }); + var for_in_1 = require_for_in(); + Object.defineProperty(exports, "forIn", { enumerable: true, get: function() { + return for_in_1.default; + } }); + var has_1 = require_has(); + Object.defineProperty(exports, "has", { enumerable: true, get: function() { + return has_1.default; + } }); + var has_key_1 = require_has_key(); + Object.defineProperty(exports, "hasKey", { enumerable: true, get: function() { + return has_key_1.default; + } }); + var has_value_1 = require_has_value(); + Object.defineProperty(exports, "hasValue", { enumerable: true, get: function() { + return has_value_1.default; + } }); + var keys_1 = require_keys(); + Object.defineProperty(exports, "keys", { enumerable: true, get: function() { + return keys_1.default; + } }); + var is_match_1 = require_is_match(); + Object.defineProperty(exports, "isMatch", { enumerable: true, get: function() { + return is_match_1.default; + } }); + var values_1 = require_values(); + Object.defineProperty(exports, "values", { enumerable: true, get: function() { + return values_1.default; + } }); + var lower_case_1 = require_lower_case(); + Object.defineProperty(exports, "lowerCase", { enumerable: true, get: function() { + return lower_case_1.default; + } }); + var lower_first_1 = require_lower_first(); + Object.defineProperty(exports, "lowerFirst", { enumerable: true, get: function() { + return lower_first_1.default; + } }); + var substitute_1 = require_substitute(); + Object.defineProperty(exports, "substitute", { enumerable: true, get: function() { + return substitute_1.default; + } }); + var upper_case_1 = require_upper_case(); + Object.defineProperty(exports, "upperCase", { enumerable: true, get: function() { + return upper_case_1.default; + } }); + var upper_first_1 = require_upper_first(); + Object.defineProperty(exports, "upperFirst", { enumerable: true, get: function() { + return upper_first_1.default; + } }); + var get_type_1 = require_get_type(); + Object.defineProperty(exports, "getType", { enumerable: true, get: function() { + return get_type_1.default; + } }); + var is_arguments_1 = require_is_arguments(); + Object.defineProperty(exports, "isArguments", { enumerable: true, get: function() { + return is_arguments_1.default; + } }); + var is_array_1 = require_is_array(); + Object.defineProperty(exports, "isArray", { enumerable: true, get: function() { + return is_array_1.default; + } }); + var is_array_like_1 = require_is_array_like(); + Object.defineProperty(exports, "isArrayLike", { enumerable: true, get: function() { + return is_array_like_1.default; + } }); + var is_boolean_1 = require_is_boolean(); + Object.defineProperty(exports, "isBoolean", { enumerable: true, get: function() { + return is_boolean_1.default; + } }); + var is_date_1 = require_is_date(); + Object.defineProperty(exports, "isDate", { enumerable: true, get: function() { + return is_date_1.default; + } }); + var is_error_1 = require_is_error(); + Object.defineProperty(exports, "isError", { enumerable: true, get: function() { + return is_error_1.default; + } }); + var is_function_1 = require_is_function(); + Object.defineProperty(exports, "isFunction", { enumerable: true, get: function() { + return is_function_1.default; + } }); + var is_finite_1 = require_is_finite(); + Object.defineProperty(exports, "isFinite", { enumerable: true, get: function() { + return is_finite_1.default; + } }); + var is_nil_1 = require_is_nil(); + Object.defineProperty(exports, "isNil", { enumerable: true, get: function() { + return is_nil_1.default; + } }); + var is_null_1 = require_is_null(); + Object.defineProperty(exports, "isNull", { enumerable: true, get: function() { + return is_null_1.default; + } }); + var is_number_1 = require_is_number(); + Object.defineProperty(exports, "isNumber", { enumerable: true, get: function() { + return is_number_1.default; + } }); + var is_object_1 = require_is_object(); + Object.defineProperty(exports, "isObject", { enumerable: true, get: function() { + return is_object_1.default; + } }); + var is_object_like_1 = require_is_object_like(); + Object.defineProperty(exports, "isObjectLike", { enumerable: true, get: function() { + return is_object_like_1.default; + } }); + var is_plain_object_1 = require_is_plain_object(); + Object.defineProperty(exports, "isPlainObject", { enumerable: true, get: function() { + return is_plain_object_1.default; + } }); + var is_prototype_1 = require_is_prototype(); + Object.defineProperty(exports, "isPrototype", { enumerable: true, get: function() { + return is_prototype_1.default; + } }); + var is_reg_exp_1 = require_is_reg_exp(); + Object.defineProperty(exports, "isRegExp", { enumerable: true, get: function() { + return is_reg_exp_1.default; + } }); + var is_string_1 = require_is_string(); + Object.defineProperty(exports, "isString", { enumerable: true, get: function() { + return is_string_1.default; + } }); + var is_type_1 = require_is_type(); + Object.defineProperty(exports, "isType", { enumerable: true, get: function() { + return is_type_1.default; + } }); + var is_undefined_1 = require_is_undefined(); + Object.defineProperty(exports, "isUndefined", { enumerable: true, get: function() { + return is_undefined_1.default; + } }); + var is_element_1 = require_is_element(); + Object.defineProperty(exports, "isElement", { enumerable: true, get: function() { + return is_element_1.default; + } }); + var request_animation_frame_1 = require_request_animation_frame(); + Object.defineProperty(exports, "requestAnimationFrame", { enumerable: true, get: function() { + return request_animation_frame_1.default; + } }); + var clear_animation_frame_1 = require_clear_animation_frame(); + Object.defineProperty(exports, "clearAnimationFrame", { enumerable: true, get: function() { + return clear_animation_frame_1.default; + } }); + var augment_1 = require_augment(); + Object.defineProperty(exports, "augment", { enumerable: true, get: function() { + return augment_1.default; + } }); + var clone_1 = require_clone(); + Object.defineProperty(exports, "clone", { enumerable: true, get: function() { + return clone_1.default; + } }); + var debounce_1 = require_debounce(); + Object.defineProperty(exports, "debounce", { enumerable: true, get: function() { + return debounce_1.default; + } }); + var memoize_1 = require_memoize(); + Object.defineProperty(exports, "memoize", { enumerable: true, get: function() { + return memoize_1.default; + } }); + var deep_mix_1 = require_deep_mix(); + Object.defineProperty(exports, "deepMix", { enumerable: true, get: function() { + return deep_mix_1.default; + } }); + var each_1 = require_each(); + Object.defineProperty(exports, "each", { enumerable: true, get: function() { + return each_1.default; + } }); + var extend_12 = require_extend(); + Object.defineProperty(exports, "extend", { enumerable: true, get: function() { + return extend_12.default; + } }); + var index_of_1 = require_index_of(); + Object.defineProperty(exports, "indexOf", { enumerable: true, get: function() { + return index_of_1.default; + } }); + var is_empty_1 = require_is_empty(); + Object.defineProperty(exports, "isEmpty", { enumerable: true, get: function() { + return is_empty_1.default; + } }); + var is_equal_1 = require_is_equal(); + Object.defineProperty(exports, "isEqual", { enumerable: true, get: function() { + return is_equal_1.default; + } }); + var is_equal_with_1 = require_is_equal_with(); + Object.defineProperty(exports, "isEqualWith", { enumerable: true, get: function() { + return is_equal_with_1.default; + } }); + var map_1 = require_map(); + Object.defineProperty(exports, "map", { enumerable: true, get: function() { + return map_1.default; + } }); + var map_values_1 = require_map_values(); + Object.defineProperty(exports, "mapValues", { enumerable: true, get: function() { + return map_values_1.default; + } }); + var mix_1 = require_mix(); + Object.defineProperty(exports, "mix", { enumerable: true, get: function() { + return mix_1.default; + } }); + Object.defineProperty(exports, "assign", { enumerable: true, get: function() { + return mix_1.default; + } }); + var get_1 = require_get(); + Object.defineProperty(exports, "get", { enumerable: true, get: function() { + return get_1.default; + } }); + var set_1 = require_set(); + Object.defineProperty(exports, "set", { enumerable: true, get: function() { + return set_1.default; + } }); + var pick_1 = require_pick(); + Object.defineProperty(exports, "pick", { enumerable: true, get: function() { + return pick_1.default; + } }); + var omit_1 = require_omit(); + Object.defineProperty(exports, "omit", { enumerable: true, get: function() { + return omit_1.default; + } }); + var throttle_1 = require_throttle(); + Object.defineProperty(exports, "throttle", { enumerable: true, get: function() { + return throttle_1.default; + } }); + var to_array_1 = require_to_array(); + Object.defineProperty(exports, "toArray", { enumerable: true, get: function() { + return to_array_1.default; + } }); + var to_string_1 = require_to_string(); + Object.defineProperty(exports, "toString", { enumerable: true, get: function() { + return to_string_1.default; + } }); + var unique_id_1 = require_unique_id(); + Object.defineProperty(exports, "uniqueId", { enumerable: true, get: function() { + return unique_id_1.default; + } }); + var noop_1 = require_noop(); + Object.defineProperty(exports, "noop", { enumerable: true, get: function() { + return noop_1.default; + } }); + var identity_1 = require_identity(); + Object.defineProperty(exports, "identity", { enumerable: true, get: function() { + return identity_1.default; + } }); + var size_1 = require_size(); + Object.defineProperty(exports, "size", { enumerable: true, get: function() { + return size_1.default; + } }); + var measure_text_width_1 = require_measure_text_width(); + Object.defineProperty(exports, "measureTextWidth", { enumerable: true, get: function() { + return measure_text_width_1.default; + } }); + var get_ellipsis_text_1 = require_get_ellipsis_text(); + Object.defineProperty(exports, "getEllipsisText", { enumerable: true, get: function() { + return get_ellipsis_text_1.default; + } }); + var cache_1 = require_cache(); + Object.defineProperty(exports, "Cache", { enumerable: true, get: function() { + return cache_1.default; + } }); + } +}); + // node_modules/@antv/adjust/node_modules/tslib/tslib.js var require_tslib2 = __commonJS({ "node_modules/@antv/adjust/node_modules/tslib/tslib.js"(exports, module2) { - var __extends15; - var __assign30; - var __rest46; + var __extends18; + var __assign32; + var __rest48; var __decorate4; var __param4; var __metadata4; @@ -1324,14 +3236,14 @@ var require_tslib2 = __commonJS({ if (b10.hasOwnProperty(p4)) d3[p4] = b10[p4]; }; - __extends15 = function(d3, b10) { + __extends18 = function(d3, b10) { extendStatics(d3, b10); function __() { this.constructor = d3; } d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); }; - __assign30 = Object.assign || function(t4) { + __assign32 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -1340,7 +3252,7 @@ var require_tslib2 = __commonJS({ } return t4; }; - __rest46 = function(s4, e4) { + __rest48 = function(s4, e4) { var t4 = {}; for (var p4 in s4) if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) @@ -1538,7 +3450,7 @@ var require_tslib2 = __commonJS({ __asyncGenerator4 = function(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g4 = generator.apply(thisArg, _arguments || []), i4, q4 = []; + var g4 = generator.apply(thisArg, _arguments || []), i4, q3 = []; return i4 = {}, verb("next"), verb("throw"), verb("return"), i4[Symbol.asyncIterator] = function() { return this; }, i4; @@ -1546,7 +3458,7 @@ var require_tslib2 = __commonJS({ if (g4[n3]) i4[n3] = function(v3) { return new Promise(function(a4, b10) { - q4.push([n3, v3, a4, b10]) > 1 || resume(n3, v3); + q3.push([n3, v3, a4, b10]) > 1 || resume(n3, v3); }); }; } @@ -1554,11 +3466,11 @@ var require_tslib2 = __commonJS({ try { step(g4[n3](v3)); } catch (e4) { - settle(q4[0][3], e4); + settle(q3[0][3], e4); } } function step(r4) { - r4.value instanceof __await4 ? Promise.resolve(r4.value.v).then(fulfill, reject) : settle(q4[0][2], r4); + r4.value instanceof __await4 ? Promise.resolve(r4.value.v).then(fulfill, reject) : settle(q3[0][2], r4); } function fulfill(value2) { resume("next", value2); @@ -1567,8 +3479,8 @@ var require_tslib2 = __commonJS({ resume("throw", value2); } function settle(f3, v3) { - if (f3(v3), q4.shift(), q4.length) - resume(q4[0][0], q4[0][1]); + if (f3(v3), q3.shift(), q3.length) + resume(q3[0][0], q3[0][1]); } }; __asyncDelegator4 = function(o3) { @@ -1612,20 +3524,20 @@ var require_tslib2 = __commonJS({ } return cooked; }; - __importStar4 = function(mod3) { - if (mod3 && mod3.__esModule) - return mod3; + __importStar4 = function(mod5) { + if (mod5 && mod5.__esModule) + return mod5; var result = {}; - if (mod3 != null) { - for (var k4 in mod3) - if (Object.hasOwnProperty.call(mod3, k4)) - result[k4] = mod3[k4]; + if (mod5 != null) { + for (var k4 in mod5) + if (Object.hasOwnProperty.call(mod5, k4)) + result[k4] = mod5[k4]; } - result["default"] = mod3; + result["default"] = mod5; return result; }; - __importDefault4 = function(mod3) { - return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + __importDefault4 = function(mod5) { + return mod5 && mod5.__esModule ? mod5 : { "default": mod5 }; }; __classPrivateFieldGet4 = function(receiver, privateMap) { if (!privateMap.has(receiver)) { @@ -1640,9 +3552,9 @@ var require_tslib2 = __commonJS({ privateMap.set(receiver, value2); return value2; }; - exporter("__extends", __extends15); - exporter("__assign", __assign30); - exporter("__rest", __rest46); + exporter("__extends", __extends18); + exporter("__assign", __assign32); + exporter("__rest", __rest48); exporter("__decorate", __decorate4); exporter("__param", __param4); exporter("__metadata", __metadata4); @@ -1670,9 +3582,9 @@ var require_tslib2 = __commonJS({ // node_modules/@antv/attr/node_modules/tslib/tslib.js var require_tslib3 = __commonJS({ "node_modules/@antv/attr/node_modules/tslib/tslib.js"(exports, module2) { - var __extends15; - var __assign30; - var __rest46; + var __extends18; + var __assign32; + var __rest48; var __decorate4; var __param4; var __metadata4; @@ -1724,14 +3636,14 @@ var require_tslib3 = __commonJS({ if (b10.hasOwnProperty(p4)) d3[p4] = b10[p4]; }; - __extends15 = function(d3, b10) { + __extends18 = function(d3, b10) { extendStatics(d3, b10); function __() { this.constructor = d3; } d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); }; - __assign30 = Object.assign || function(t4) { + __assign32 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -1740,7 +3652,7 @@ var require_tslib3 = __commonJS({ } return t4; }; - __rest46 = function(s4, e4) { + __rest48 = function(s4, e4) { var t4 = {}; for (var p4 in s4) if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) @@ -1938,7 +3850,7 @@ var require_tslib3 = __commonJS({ __asyncGenerator4 = function(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g4 = generator.apply(thisArg, _arguments || []), i4, q4 = []; + var g4 = generator.apply(thisArg, _arguments || []), i4, q3 = []; return i4 = {}, verb("next"), verb("throw"), verb("return"), i4[Symbol.asyncIterator] = function() { return this; }, i4; @@ -1946,7 +3858,7 @@ var require_tslib3 = __commonJS({ if (g4[n3]) i4[n3] = function(v3) { return new Promise(function(a4, b10) { - q4.push([n3, v3, a4, b10]) > 1 || resume(n3, v3); + q3.push([n3, v3, a4, b10]) > 1 || resume(n3, v3); }); }; } @@ -1954,11 +3866,11 @@ var require_tslib3 = __commonJS({ try { step(g4[n3](v3)); } catch (e4) { - settle(q4[0][3], e4); + settle(q3[0][3], e4); } } function step(r4) { - r4.value instanceof __await4 ? Promise.resolve(r4.value.v).then(fulfill, reject) : settle(q4[0][2], r4); + r4.value instanceof __await4 ? Promise.resolve(r4.value.v).then(fulfill, reject) : settle(q3[0][2], r4); } function fulfill(value2) { resume("next", value2); @@ -1967,8 +3879,8 @@ var require_tslib3 = __commonJS({ resume("throw", value2); } function settle(f3, v3) { - if (f3(v3), q4.shift(), q4.length) - resume(q4[0][0], q4[0][1]); + if (f3(v3), q3.shift(), q3.length) + resume(q3[0][0], q3[0][1]); } }; __asyncDelegator4 = function(o3) { @@ -2012,20 +3924,20 @@ var require_tslib3 = __commonJS({ } return cooked; }; - __importStar4 = function(mod3) { - if (mod3 && mod3.__esModule) - return mod3; + __importStar4 = function(mod5) { + if (mod5 && mod5.__esModule) + return mod5; var result = {}; - if (mod3 != null) { - for (var k4 in mod3) - if (Object.hasOwnProperty.call(mod3, k4)) - result[k4] = mod3[k4]; + if (mod5 != null) { + for (var k4 in mod5) + if (Object.hasOwnProperty.call(mod5, k4)) + result[k4] = mod5[k4]; } - result["default"] = mod3; + result["default"] = mod5; return result; }; - __importDefault4 = function(mod3) { - return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + __importDefault4 = function(mod5) { + return mod5 && mod5.__esModule ? mod5 : { "default": mod5 }; }; __classPrivateFieldGet4 = function(receiver, privateMap) { if (!privateMap.has(receiver)) { @@ -2040,9 +3952,9 @@ var require_tslib3 = __commonJS({ privateMap.set(receiver, value2); return value2; }; - exporter("__extends", __extends15); - exporter("__assign", __assign30); - exporter("__rest", __rest46); + exporter("__extends", __extends18); + exporter("__assign", __assign32); + exporter("__rest", __rest48); exporter("__decorate", __decorate4); exporter("__param", __param4); exporter("__metadata", __metadata4); @@ -2084,14 +3996,14 @@ var require_id = __commonJS({ }); // node_modules/size-sensor/lib/debounce.js -var require_debounce = __commonJS({ +var require_debounce2 = __commonJS({ "node_modules/size-sensor/lib/debounce.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; - var _default2 = function _default3(fn2) { + var _default2 = function _default3(fn) { var delay = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 60; var timer3 = null; return function() { @@ -2101,7 +4013,7 @@ var require_debounce = __commonJS({ } clearTimeout(timer3); timer3 = setTimeout(function() { - fn2.apply(_this, args); + fn.apply(_this, args); }, delay); }; }; @@ -2134,7 +4046,7 @@ var require_object = __commonJS({ value: true }); exports.createSensor = void 0; - var _debounce = _interopRequireDefault(require_debounce()); + var _debounce = _interopRequireDefault(require_debounce2()); var _constant = require_constant(); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; @@ -2219,7 +4131,7 @@ var require_resizeObserver = __commonJS({ value: true }); exports.createSensor = void 0; - var _debounce = _interopRequireDefault(require_debounce()); + var _debounce = _interopRequireDefault(require_debounce2()); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } @@ -2325,7 +4237,7 @@ var require_sensorPool = __commonJS({ }); // node_modules/size-sensor/lib/index.js -var require_lib = __commonJS({ +var require_lib2 = __commonJS({ "node_modules/size-sensor/lib/index.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { @@ -2447,13 +4359,13 @@ var require_d3_regression = __commonJS({ var l4 = Math.log(xmax - xmin) * Math.LOG10E + 1 | 0; var precision = 1 * Math.pow(10, -l4 / 2 - 1), maxIter = 1e4; var points2 = [px(xmin), px(xmax)], iter = 0; - while (find4(points2) && iter < maxIter) { + while (find11(points2) && iter < maxIter) { } return points2; function px(x6) { return [x6, predict(x6)]; } - function find4(points3) { + function find11(points3) { iter++; var n3 = points3.length; var found = false; @@ -2496,23 +4408,23 @@ var require_d3_regression = __commonJS({ }); var _ols = ols(XY / Y2, YL / Y2, XYL / Y2, X2Y / Y2), _ols2 = _slicedToArray2(_ols, 2), a4 = _ols2[0], b10 = _ols2[1]; a4 = Math.exp(a4); - var fn2 = function fn3(x7) { + var fn = function fn2(x7) { return a4 * Math.exp(b10 * x7); - }, out = interpose(xmin, xmax, fn2); + }, out = interpose(xmin, xmax, fn); out.a = a4; out.b = b10; - out.predict = fn2; - out.rSquared = determination(data3, x6, y5, Y2, fn2); + out.predict = fn; + out.rSquared = determination(data3, x6, y5, Y2, fn); return out; } exponential3.domain = function(arr) { return arguments.length ? (domain = arr, exponential3) : domain; }; - exponential3.x = function(fn2) { - return arguments.length ? (x6 = fn2, exponential3) : x6; + exponential3.x = function(fn) { + return arguments.length ? (x6 = fn, exponential3) : x6; }; - exponential3.y = function(fn2) { - return arguments.length ? (y5 = fn2, exponential3) : y5; + exponential3.y = function(fn) { + return arguments.length ? (y5 = fn, exponential3) : y5; }; return exponential3; } @@ -2537,23 +4449,23 @@ var require_d3_regression = __commonJS({ xmax = dx; } }); - var _ols = ols(X2, Y2, XY, X22), _ols2 = _slicedToArray2(_ols, 2), intercept = _ols2[0], slope = _ols2[1], fn2 = function fn3(x7) { + var _ols = ols(X2, Y2, XY, X22), _ols2 = _slicedToArray2(_ols, 2), intercept = _ols2[0], slope = _ols2[1], fn = function fn2(x7) { return slope * x7 + intercept; - }, out = [[xmin, fn2(xmin)], [xmax, fn2(xmax)]]; + }, out = [[xmin, fn(xmin)], [xmax, fn(xmax)]]; out.a = slope; out.b = intercept; - out.predict = fn2; - out.rSquared = determination(data3, x6, y5, Y2, fn2); + out.predict = fn; + out.rSquared = determination(data3, x6, y5, Y2, fn); return out; } linear5.domain = function(arr) { return arguments.length ? (domain = arr, linear5) : domain; }; - linear5.x = function(fn2) { - return arguments.length ? (x6 = fn2, linear5) : x6; + linear5.x = function(fn) { + return arguments.length ? (x6 = fn, linear5) : x6; }; - linear5.y = function(fn2) { - return arguments.length ? (y5 = fn2, linear5) : y5; + linear5.y = function(fn) { + return arguments.length ? (y5 = fn, linear5) : y5; }; return linear5; } @@ -2607,11 +4519,11 @@ var require_d3_regression = __commonJS({ loess2.bandwidth = function(bw) { return arguments.length ? (bandwidth = bw, loess2) : bandwidth; }; - loess2.x = function(fn2) { - return arguments.length ? (x6 = fn2, loess2) : x6; + loess2.x = function(fn) { + return arguments.length ? (x6 = fn, loess2) : x6; }; - loess2.y = function(fn2) { - return arguments.length ? (y5 = fn2, loess2) : y5; + loess2.y = function(fn) { + return arguments.length ? (y5 = fn, loess2) : y5; }; return loess2; } @@ -2667,23 +4579,23 @@ var require_d3_regression = __commonJS({ xmax = dx; } }); - var _ols = ols(X2, Y2, XY, X22), _ols2 = _slicedToArray2(_ols, 2), intercept = _ols2[0], slope = _ols2[1], fn2 = function fn3(x7) { + var _ols = ols(X2, Y2, XY, X22), _ols2 = _slicedToArray2(_ols, 2), intercept = _ols2[0], slope = _ols2[1], fn = function fn2(x7) { return slope * Math.log(x7) / lb + intercept; - }, out = interpose(xmin, xmax, fn2); + }, out = interpose(xmin, xmax, fn); out.a = slope; out.b = intercept; - out.predict = fn2; - out.rSquared = determination(data3, x6, y5, Y2, fn2); + out.predict = fn; + out.rSquared = determination(data3, x6, y5, Y2, fn); return out; } logarithmic2.domain = function(arr) { return arguments.length ? (domain = arr, logarithmic2) : domain; }; - logarithmic2.x = function(fn2) { - return arguments.length ? (x6 = fn2, logarithmic2) : x6; + logarithmic2.x = function(fn) { + return arguments.length ? (x6 = fn, logarithmic2) : x6; }; - logarithmic2.y = function(fn2) { - return arguments.length ? (y5 = fn2, logarithmic2) : y5; + logarithmic2.y = function(fn) { + return arguments.length ? (y5 = fn, logarithmic2) : y5; }; logarithmic2.base = function(n3) { return arguments.length ? (base = n3, logarithmic2) : base; @@ -2720,26 +4632,26 @@ var require_d3_regression = __commonJS({ xmax = dx2; } }); - var X2X2 = X4 - X2 * X2, d3 = X2 * X2X2 - X3 * X3, a4 = (X2Y * X2 - XY * X3) / d3, b10 = (XY * X2X2 - X2Y * X3) / d3, c5 = -a4 * X2, fn2 = function fn3(x7) { + var X2X2 = X4 - X2 * X2, d3 = X2 * X2X2 - X3 * X3, a4 = (X2Y * X2 - XY * X3) / d3, b10 = (XY * X2X2 - X2Y * X3) / d3, c5 = -a4 * X2, fn = function fn2(x7) { x7 = x7 - ux; return a4 * x7 * x7 + b10 * x7 + c5 + uy; }; - var out = interpose(xmin, xmax, fn2); + var out = interpose(xmin, xmax, fn); out.a = a4; out.b = b10 - 2 * a4 * ux; out.c = c5 - b10 * ux + a4 * ux * ux + uy; - out.predict = fn2; - out.rSquared = determination(data3, x6, y5, Y2, fn2); + out.predict = fn; + out.rSquared = determination(data3, x6, y5, Y2, fn); return out; } quadratic.domain = function(arr) { return arguments.length ? (domain = arr, quadratic) : domain; }; - quadratic.x = function(fn2) { - return arguments.length ? (x6 = fn2, quadratic) : x6; + quadratic.x = function(fn) { + return arguments.length ? (x6 = fn, quadratic) : x6; }; - quadratic.y = function(fn2) { - return arguments.length ? (y5 = fn2, quadratic) : y5; + quadratic.y = function(fn) { + return arguments.length ? (y5 = fn, quadratic) : y5; }; return quadratic; } @@ -2793,27 +4705,27 @@ var require_d3_regression = __commonJS({ rhs.push(c5); } rhs.push(lhs); - var coef = gaussianElimination(rhs), fn2 = function fn3(x7) { + var coef = gaussianElimination(rhs), fn = function fn2(x7) { x7 -= ux; var y6 = uy + coef[0] + coef[1] * x7 + coef[2] * x7 * x7; for (i4 = 3; i4 < k4; ++i4) { y6 += coef[i4] * Math.pow(x7, i4); } return y6; - }, out = interpose(xmin, xmax, fn2); + }, out = interpose(xmin, xmax, fn); out.coefficients = uncenter(k4, coef, -ux, uy); - out.predict = fn2; - out.rSquared = determination(data3, x6, y5, Y2, fn2); + out.predict = fn; + out.rSquared = determination(data3, x6, y5, Y2, fn); return out; } polynomial2.domain = function(arr) { return arguments.length ? (domain = arr, polynomial2) : domain; }; - polynomial2.x = function(fn2) { - return arguments.length ? (x6 = fn2, polynomial2) : x6; + polynomial2.x = function(fn) { + return arguments.length ? (x6 = fn, polynomial2) : x6; }; - polynomial2.y = function(fn2) { - return arguments.length ? (y5 = fn2, polynomial2) : y5; + polynomial2.y = function(fn) { + return arguments.length ? (y5 = fn, polynomial2) : y5; }; polynomial2.order = function(n3) { return arguments.length ? (order2 = n3, polynomial2) : order2; @@ -2893,23 +4805,23 @@ var require_d3_regression = __commonJS({ }); var _ols = ols(X2, Y2, XY, X22), _ols2 = _slicedToArray2(_ols, 2), a4 = _ols2[0], b10 = _ols2[1]; a4 = Math.exp(a4); - var fn2 = function fn3(x7) { + var fn = function fn2(x7) { return a4 * Math.pow(x7, b10); - }, out = interpose(xmin, xmax, fn2); + }, out = interpose(xmin, xmax, fn); out.a = a4; out.b = b10; - out.predict = fn2; - out.rSquared = determination(data3, x6, y5, YS, fn2); + out.predict = fn; + out.rSquared = determination(data3, x6, y5, YS, fn); return out; } power2.domain = function(arr) { return arguments.length ? (domain = arr, power2) : domain; }; - power2.x = function(fn2) { - return arguments.length ? (x6 = fn2, power2) : x6; + power2.x = function(fn) { + return arguments.length ? (x6 = fn, power2) : x6; }; - power2.y = function(fn2) { - return arguments.length ? (y5 = fn2, power2) : y5; + power2.y = function(fn) { + return arguments.length ? (y5 = fn, power2) : y5; }; return power2; } @@ -2967,8 +4879,8 @@ var require_helper = __commonJS({ } return curr; }; - module2.exports.inside = function(min7, max8, x6) { - return min7 <= x6 && x6 <= max8; + module2.exports.inside = function(min13, max15, x6) { + return min13 <= x6 && x6 <= max15; }; } }); @@ -2993,20 +4905,20 @@ var require_src = __commonJS({ var relaxMin = false; var relaxMax = false; var width2 = helper2.isNumber(options.width) ? options.width : DEFAULT_WIDTH; - var size2 = helper2.isNumber(options.size) ? options.size : DEFAULT_SIZE2; - var min7 = helper2.isNumber(options.min) ? options.min : (relaxMin = true, helper2.findMinMulti(arrMulti)); - var max8 = helper2.isNumber(options.max) ? options.max : (relaxMax = true, helper2.findMaxMulti(arrMulti)); - var range = max8 - min7; - var step = range / (size2 - 1); + var size14 = helper2.isNumber(options.size) ? options.size : DEFAULT_SIZE2; + var min13 = helper2.isNumber(options.min) ? options.min : (relaxMin = true, helper2.findMinMulti(arrMulti)); + var max15 = helper2.isNumber(options.max) ? options.max : (relaxMax = true, helper2.findMaxMulti(arrMulti)); + var range = max15 - min13; + var step = range / (size14 - 1); if (relaxMin) { - min7 = min7 - 2 * width2 * step; + min13 = min13 - 2 * width2 * step; } if (relaxMax) { - max8 = max8 + 2 * width2 * step; + max15 = max15 + 2 * width2 * step; } return { - min: min7, - max: max8 + min: min13, + max: max15 }; }; module2.exports.create = function(arr, options) { @@ -3014,30 +4926,30 @@ var require_src = __commonJS({ if (!arr || arr.length === 0) { return []; } - var size2 = helper2.isNumber(options.size) ? options.size : DEFAULT_SIZE2; + var size14 = helper2.isNumber(options.size) ? options.size : DEFAULT_SIZE2; var width2 = helper2.isNumber(options.width) ? options.width : DEFAULT_WIDTH; var normalizedMinMax = self2.getUnifiedMinMax(arr, { - size: size2, + size: size14, width: width2, min: options.min, max: options.max }); - var min7 = normalizedMinMax.min; - var max8 = normalizedMinMax.max; - var range = max8 - min7; - var step = range / (size2 - 1); + var min13 = normalizedMinMax.min; + var max15 = normalizedMinMax.max; + var range = max15 - min13; + var step = range / (size14 - 1); if (range === 0) { - return [{ x: min7, y: 1 }]; + return [{ x: min13, y: 1 }]; } var buckets = []; - for (var i4 = 0; i4 < size2; i4++) { + for (var i4 = 0; i4 < size14; i4++) { buckets.push({ - x: min7 + i4 * step, + x: min13 + i4 * step, y: 0 }); } var xToBucket = function(x6) { - return Math.floor((x6 - min7) / step); + return Math.floor((x6 - min13) / step); }; var partialArea = generatePartialAreas(kernel, width2); var fullArea = partialArea[width2]; @@ -3110,15 +5022,15 @@ var require_src = __commonJS({ return void 0; } var accumulator = 0; - var last2 = 0; + var last17 = 0; for (var i4 = 0; i4 < pdf2.length; i4++) { - last2 = i4; + last17 = i4; accumulator += pdf2[i4].y; if (accumulator >= area2) { break; } } - return pdf2[last2].x; + return pdf2[last17].x; }; module2.exports.getPerplexity = function(pdf2) { if (!pdf2 || pdf2.length === 0) { @@ -3454,6 +5366,4600 @@ var require_fmin = __commonJS({ } }); +// node_modules/@antv/algorithm/lib/workers/constant.js +var require_constant2 = __commonJS({ + "node_modules/@antv/algorithm/lib/workers/constant.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.MESSAGE = exports.ALGORITHM = void 0; + var ALGORITHM = { + pageRank: "pageRank", + breadthFirstSearch: "breadthFirstSearch", + connectedComponent: "connectedComponent", + depthFirstSearch: "depthFirstSearch", + detectCycle: "detectCycle", + detectDirectedCycle: "detectDirectedCycle", + detectAllCycles: "detectAllCycles", + detectAllDirectedCycle: "detectAllDirectedCycle", + detectAllUndirectedCycle: "detectAllUndirectedCycle", + dijkstra: "dijkstra", + findAllPath: "findAllPath", + findShortestPath: "findShortestPath", + floydWarshall: "floydWarshall", + getAdjMatrix: "getAdjMatrix", + getDegree: "getDegree", + getInDegree: "getInDegree", + getNeighbors: "getNeighbors", + getOutDegree: "getOutDegree", + labelPropagation: "labelPropagation", + louvain: "louvain", + GADDI: "GADDI", + minimumSpanningTree: "minimumSpanningTree", + SUCCESS: "SUCCESS", + FAILURE: "FAILURE" + }; + exports.ALGORITHM = ALGORITHM; + var MESSAGE = { + SUCCESS: "SUCCESS", + FAILURE: "FAILURE" + }; + exports.MESSAGE = MESSAGE; + } +}); + +// node_modules/@antv/algorithm/lib/adjacent-matrix.js +var require_adjacent_matrix = __commonJS({ + "node_modules/@antv/algorithm/lib/adjacent-matrix.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var adjMatrix3 = function adjMatrix4(graphData, directed) { + var nodes = graphData.nodes, edges = graphData.edges; + var matrix = []; + var nodeMap = {}; + if (!nodes) { + throw new Error("invalid nodes data!"); + } + if (nodes) { + nodes.forEach(function(node, i4) { + nodeMap[node.id] = i4; + var row = []; + matrix.push(row); + }); + } + if (edges) { + edges.forEach(function(edge2) { + var source = edge2.source, target = edge2.target; + var sIndex = nodeMap[source]; + var tIndex = nodeMap[target]; + if (!sIndex && sIndex !== 0 || !tIndex && tIndex !== 0) + return; + matrix[sIndex][tIndex] = 1; + if (!directed) { + matrix[tIndex][sIndex] = 1; + } + }); + } + return matrix; + }; + var _default2 = adjMatrix3; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/structs/linked-list.js +var require_linked_list = __commonJS({ + "node_modules/@antv/algorithm/lib/structs/linked-list.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = exports.LinkedListNode = void 0; + var defaultComparator3 = function defaultComparator4(a4, b10) { + if (a4 === b10) { + return true; + } + return false; + }; + var LinkedListNode2 = function() { + function LinkedListNode3(value2, next) { + if (next === void 0) { + next = null; + } + this.value = value2; + this.next = next; + } + LinkedListNode3.prototype.toString = function(callback) { + return callback ? callback(this.value) : "".concat(this.value); + }; + return LinkedListNode3; + }(); + exports.LinkedListNode = LinkedListNode2; + var LinkedList2 = function() { + function LinkedList3(comparator) { + if (comparator === void 0) { + comparator = defaultComparator3; + } + this.head = null; + this.tail = null; + this.compare = comparator; + } + LinkedList3.prototype.prepend = function(value2) { + var newNode = new LinkedListNode2(value2, this.head); + this.head = newNode; + if (!this.tail) { + this.tail = newNode; + } + return this; + }; + LinkedList3.prototype.append = function(value2) { + var newNode = new LinkedListNode2(value2); + if (!this.head) { + this.head = newNode; + this.tail = newNode; + return this; + } + this.tail.next = newNode; + this.tail = newNode; + return this; + }; + LinkedList3.prototype.delete = function(value2) { + if (!this.head) { + return null; + } + var deleteNode = null; + while (this.head && this.compare(this.head.value, value2)) { + deleteNode = this.head; + this.head = this.head.next; + } + var currentNode = this.head; + if (currentNode !== null) { + while (currentNode.next) { + if (this.compare(currentNode.next.value, value2)) { + deleteNode = currentNode.next; + currentNode.next = currentNode.next.next; + } else { + currentNode = currentNode.next; + } + } + } + if (this.compare(this.tail.value, value2)) { + this.tail = currentNode; + } + return deleteNode; + }; + LinkedList3.prototype.find = function(_a6) { + var _b = _a6.value, value2 = _b === void 0 ? void 0 : _b, _c = _a6.callback, callback = _c === void 0 ? void 0 : _c; + if (!this.head) { + return null; + } + var currentNode = this.head; + while (currentNode) { + if (callback && callback(currentNode.value)) { + return currentNode; + } + if (value2 !== void 0 && this.compare(currentNode.value, value2)) { + return currentNode; + } + currentNode = currentNode.next; + } + return null; + }; + LinkedList3.prototype.deleteTail = function() { + var deletedTail = this.tail; + if (this.head === this.tail) { + this.head = null; + this.tail = null; + return deletedTail; + } + var currentNode = this.head; + while (currentNode.next) { + if (!currentNode.next.next) { + currentNode.next = null; + } else { + currentNode = currentNode.next; + } + } + this.tail = currentNode; + return deletedTail; + }; + LinkedList3.prototype.deleteHead = function() { + if (!this.head) { + return null; + } + var deletedHead = this.head; + if (this.head.next) { + this.head = this.head.next; + } else { + this.head = null; + this.tail = null; + } + return deletedHead; + }; + LinkedList3.prototype.fromArray = function(values4) { + var _this = this; + values4.forEach(function(value2) { + return _this.append(value2); + }); + return this; + }; + LinkedList3.prototype.toArray = function() { + var nodes = []; + var currentNode = this.head; + while (currentNode) { + nodes.push(currentNode); + currentNode = currentNode.next; + } + return nodes; + }; + LinkedList3.prototype.reverse = function() { + var currentNode = this.head; + var prevNode = null; + var nextNode = null; + while (currentNode) { + nextNode = currentNode.next; + currentNode.next = prevNode; + prevNode = currentNode; + currentNode = nextNode; + } + this.tail = this.head; + this.head = prevNode; + }; + LinkedList3.prototype.toString = function(callback) { + if (callback === void 0) { + callback = void 0; + } + return this.toArray().map(function(node) { + return node.toString(callback); + }).toString(); + }; + return LinkedList3; + }(); + var _default2 = LinkedList2; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/structs/queue.js +var require_queue = __commonJS({ + "node_modules/@antv/algorithm/lib/structs/queue.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _linkedList = _interopRequireDefault(require_linked_list()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var Queue2 = function() { + function Queue3() { + this.linkedList = new _linkedList.default(); + } + Queue3.prototype.isEmpty = function() { + return !this.linkedList.head; + }; + Queue3.prototype.peek = function() { + if (!this.linkedList.head) { + return null; + } + return this.linkedList.head.value; + }; + Queue3.prototype.enqueue = function(value2) { + this.linkedList.append(value2); + }; + Queue3.prototype.dequeue = function() { + var removeHead = this.linkedList.deleteHead(); + return removeHead ? removeHead.value : null; + }; + Queue3.prototype.toString = function(callback) { + return this.linkedList.toString(callback); + }; + return Queue3; + }(); + var _default2 = Queue2; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/util.js +var require_util = __commonJS({ + "node_modules/@antv/algorithm/lib/util.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.uniqueId = exports.getOutEdgesNodeId = exports.getNeighbors = exports.getEdgesByNodeId = void 0; + var getNeighbors3 = function getNeighbors4(nodeId, edges, type2) { + if (edges === void 0) { + edges = []; + } + var currentEdges = edges.filter(function(edge2) { + return edge2.source === nodeId || edge2.target === nodeId; + }); + if (type2 === "target") { + var neighhborsConverter_1 = function neighhborsConverter_12(edge2) { + return edge2.source === nodeId; + }; + return currentEdges.filter(neighhborsConverter_1).map(function(edge2) { + return edge2.target; + }); + } + if (type2 === "source") { + var neighhborsConverter_2 = function neighhborsConverter_22(edge2) { + return edge2.target === nodeId; + }; + return currentEdges.filter(neighhborsConverter_2).map(function(edge2) { + return edge2.source; + }); + } + var neighhborsConverter = function neighhborsConverter2(edge2) { + return edge2.source === nodeId ? edge2.target : edge2.source; + }; + return currentEdges.map(neighhborsConverter); + }; + exports.getNeighbors = getNeighbors3; + var getOutEdgesNodeId3 = function getOutEdgesNodeId4(nodeId, edges) { + return edges.filter(function(edge2) { + return edge2.source === nodeId; + }); + }; + exports.getOutEdgesNodeId = getOutEdgesNodeId3; + var getEdgesByNodeId3 = function getEdgesByNodeId4(nodeId, edges) { + return edges.filter(function(edge2) { + return edge2.source === nodeId || edge2.target === nodeId; + }); + }; + exports.getEdgesByNodeId = getEdgesByNodeId3; + var uniqueId14 = function uniqueId15(index2) { + if (index2 === void 0) { + index2 = 0; + } + var random1 = "".concat(Math.random()).split(".")[1].substr(0, 5); + var random22 = "".concat(Math.random()).split(".")[1].substr(0, 5); + return "".concat(index2, "-").concat(random1).concat(random22); + }; + exports.uniqueId = uniqueId14; + } +}); + +// node_modules/@antv/algorithm/lib/bfs.js +var require_bfs = __commonJS({ + "node_modules/@antv/algorithm/lib/bfs.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _queue = _interopRequireDefault(require_queue()); + var _util = require_util(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function initCallbacks3(callbacks) { + if (callbacks === void 0) { + callbacks = {}; + } + var initiatedCallback = callbacks; + var stubCallback = function stubCallback2() { + }; + var allowTraversalCallback = function() { + var seen = {}; + return function(_a6) { + var next = _a6.next; + var id = next; + if (!seen[id]) { + seen[id] = true; + return true; + } + return false; + }; + }(); + initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback; + initiatedCallback.enter = callbacks.enter || stubCallback; + initiatedCallback.leave = callbacks.leave || stubCallback; + return initiatedCallback; + } + var breadthFirstSearch3 = function breadthFirstSearch4(graphData, startNodeId, originalCallbacks, directed) { + if (directed === void 0) { + directed = true; + } + var callbacks = initCallbacks3(originalCallbacks); + var nodeQueue = new _queue.default(); + var _a6 = graphData.edges, edges = _a6 === void 0 ? [] : _a6; + nodeQueue.enqueue(startNodeId); + var previousNode = ""; + var _loop_1 = function _loop_12() { + var currentNode = nodeQueue.dequeue(); + callbacks.enter({ + current: currentNode, + previous: previousNode + }); + (0, _util.getNeighbors)(currentNode, edges, directed ? "target" : void 0).forEach(function(nextNode) { + if (callbacks.allowTraversal({ + previous: previousNode, + current: currentNode, + next: nextNode + })) { + nodeQueue.enqueue(nextNode); + } + }); + callbacks.leave({ + current: currentNode, + previous: previousNode + }); + previousNode = currentNode; + }; + while (!nodeQueue.isEmpty()) { + _loop_1(); + } + }; + var _default2 = breadthFirstSearch3; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/connected-component.js +var require_connected_component = __commonJS({ + "node_modules/@antv/algorithm/lib/connected-component.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = getConnectedComponents2; + exports.detectStrongConnectComponents = exports.detectConnectedComponents = void 0; + var _util = require_util(); + var detectConnectedComponents3 = function detectConnectedComponents4(graphData) { + var _a6 = graphData.nodes, nodes = _a6 === void 0 ? [] : _a6, _b = graphData.edges, edges = _b === void 0 ? [] : _b; + var allComponents = []; + var visited = {}; + var nodeStack = []; + var getComponent = function getComponent2(node2) { + nodeStack.push(node2); + visited[node2.id] = true; + var neighbors = (0, _util.getNeighbors)(node2.id, edges); + var _loop_1 = function _loop_12(i6) { + var neighbor = neighbors[i6]; + if (!visited[neighbor]) { + var targetNode = nodes.filter(function(node3) { + return node3.id === neighbor; + }); + if (targetNode.length > 0) { + getComponent2(targetNode[0]); + } + } + }; + for (var i5 = 0; i5 < neighbors.length; ++i5) { + _loop_1(i5); + } + }; + for (var i4 = 0; i4 < nodes.length; i4++) { + var node = nodes[i4]; + if (!visited[node.id]) { + getComponent(node); + var component2 = []; + while (nodeStack.length > 0) { + component2.push(nodeStack.pop()); + } + allComponents.push(component2); + } + } + return allComponents; + }; + exports.detectConnectedComponents = detectConnectedComponents3; + var detectStrongConnectComponents3 = function detectStrongConnectComponents4(graphData) { + var _a6 = graphData.nodes, nodes = _a6 === void 0 ? [] : _a6, _b = graphData.edges, edges = _b === void 0 ? [] : _b; + var nodeStack = []; + var inStack = {}; + var indices = {}; + var lowLink = {}; + var allComponents = []; + var index2 = 0; + var getComponent = function getComponent2(node2) { + indices[node2.id] = index2; + lowLink[node2.id] = index2; + index2 += 1; + nodeStack.push(node2); + inStack[node2.id] = true; + var neighbors = (0, _util.getNeighbors)(node2.id, edges, "target").filter(function(n3) { + return nodes.map(function(node3) { + return node3.id; + }).indexOf(n3) > -1; + }); + var _loop_2 = function _loop_22(i5) { + var targetNodeID = neighbors[i5]; + if (!indices[targetNodeID] && indices[targetNodeID] !== 0) { + var targetNode = nodes.filter(function(node3) { + return node3.id === targetNodeID; + }); + if (targetNode.length > 0) { + getComponent2(targetNode[0]); + } + lowLink[node2.id] = Math.min(lowLink[node2.id], lowLink[targetNodeID]); + } else if (inStack[targetNodeID]) { + lowLink[node2.id] = Math.min(lowLink[node2.id], indices[targetNodeID]); + } + }; + for (var i4 = 0; i4 < neighbors.length; i4++) { + _loop_2(i4); + } + if (lowLink[node2.id] === indices[node2.id]) { + var component2 = []; + while (nodeStack.length > 0) { + var tmpNode = nodeStack.pop(); + inStack[tmpNode.id] = false; + component2.push(tmpNode); + if (tmpNode === node2) + break; + } + if (component2.length > 0) { + allComponents.push(component2); + } + } + }; + for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) { + var node = nodes_1[_i]; + if (!indices[node.id] && indices[node.id] !== 0) { + getComponent(node); + } + } + return allComponents; + }; + exports.detectStrongConnectComponents = detectStrongConnectComponents3; + function getConnectedComponents2(graphData, directed) { + if (directed) + return detectStrongConnectComponents3(graphData); + return detectConnectedComponents3(graphData); + } + } +}); + +// node_modules/@antv/algorithm/lib/degree.js +var require_degree = __commonJS({ + "node_modules/@antv/algorithm/lib/degree.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOutDegree = exports.getInDegree = exports.default = void 0; + var degree4 = function degree5(graphData) { + var degrees = {}; + var _a6 = graphData.nodes, nodes = _a6 === void 0 ? [] : _a6, _b = graphData.edges, edges = _b === void 0 ? [] : _b; + nodes.forEach(function(node) { + degrees[node.id] = { + degree: 0, + inDegree: 0, + outDegree: 0 + }; + }); + edges.forEach(function(edge2) { + degrees[edge2.source].degree++; + degrees[edge2.source].outDegree++; + degrees[edge2.target].degree++; + degrees[edge2.target].inDegree++; + }); + return degrees; + }; + var _default2 = degree4; + exports.default = _default2; + var getInDegree3 = function getInDegree4(graphData, nodeId) { + var nodeDegree = degree4(graphData); + if (nodeDegree[nodeId]) { + return degree4(graphData)[nodeId].inDegree; + } + return 0; + }; + exports.getInDegree = getInDegree3; + var getOutDegree3 = function getOutDegree4(graphData, nodeId) { + var nodeDegree = degree4(graphData); + if (nodeDegree[nodeId]) { + return degree4(graphData)[nodeId].outDegree; + } + return 0; + }; + exports.getOutDegree = getOutDegree3; + } +}); + +// node_modules/@antv/algorithm/lib/dfs.js +var require_dfs = __commonJS({ + "node_modules/@antv/algorithm/lib/dfs.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = depthFirstSearch2; + var _util = require_util(); + function initCallbacks3(callbacks) { + if (callbacks === void 0) { + callbacks = {}; + } + var initiatedCallback = callbacks; + var stubCallback = function stubCallback2() { + }; + var allowTraversalCallback = function() { + var seen = {}; + return function(_a6) { + var next = _a6.next; + if (!seen[next]) { + seen[next] = true; + return true; + } + return false; + }; + }(); + initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback; + initiatedCallback.enter = callbacks.enter || stubCallback; + initiatedCallback.leave = callbacks.leave || stubCallback; + return initiatedCallback; + } + function depthFirstSearchRecursive2(graphData, currentNode, previousNode, callbacks) { + callbacks.enter({ + current: currentNode, + previous: previousNode + }); + var _a6 = graphData.edges, edges = _a6 === void 0 ? [] : _a6; + (0, _util.getNeighbors)(currentNode, edges, "target").forEach(function(nextNode) { + if (callbacks.allowTraversal({ + previous: previousNode, + current: currentNode, + next: nextNode + })) { + depthFirstSearchRecursive2(graphData, nextNode, currentNode, callbacks); + } + }); + callbacks.leave({ + current: currentNode, + previous: previousNode + }); + } + function depthFirstSearch2(graphData, startNodeId, callbacks) { + depthFirstSearchRecursive2(graphData, startNodeId, "", initCallbacks3(callbacks)); + } + } +}); + +// node_modules/@antv/algorithm/lib/detect-cycle.js +var require_detect_cycle = __commonJS({ + "node_modules/@antv/algorithm/lib/detect-cycle.js"(exports) { + "use strict"; + function _typeof5(obj) { + "@babel/helpers - typeof"; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof5 = function _typeof6(obj2) { + return typeof obj2; + }; + } else { + _typeof5 = function _typeof6(obj2) { + return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }; + } + return _typeof5(obj); + } + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.detectAllUndirectedCycle = exports.detectAllDirectedCycle = exports.detectAllCycles = exports.default = void 0; + var _dfs = _interopRequireDefault(require_dfs()); + var _connectedComponent = _interopRequireWildcard(require_connected_component()); + var _util = require_util(); + function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") + return null; + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function _getRequireWildcardCache2(nodeInterop2) { + return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); + } + function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + if (obj === null || _typeof5(obj) !== "object" && typeof obj !== "function") { + return { default: obj }; + } + var cache3 = _getRequireWildcardCache(nodeInterop); + if (cache3 && cache3.has(obj)) { + return cache3.get(obj); + } + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) { + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + newObj.default = obj; + if (cache3) { + cache3.set(obj, newObj); + } + return newObj; + } + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var detectDirectedCycle4 = function detectDirectedCycle5(graphData) { + var cycle = null; + var _a6 = graphData.nodes, nodes = _a6 === void 0 ? [] : _a6; + var dfsParentMap = {}; + var unvisitedSet = {}; + var visitingSet = {}; + var visitedSet = {}; + nodes.forEach(function(node) { + unvisitedSet[node.id] = node; + }); + var callbacks = { + enter: function enter(_a7) { + var currentNode = _a7.current, previousNode = _a7.previous; + if (visitingSet[currentNode]) { + cycle = {}; + var currentCycleNode = currentNode; + var previousCycleNode = previousNode; + while (previousCycleNode !== currentNode) { + cycle[currentCycleNode] = previousCycleNode; + currentCycleNode = previousCycleNode; + previousCycleNode = dfsParentMap[previousCycleNode]; + } + cycle[currentCycleNode] = previousCycleNode; + } else { + visitingSet[currentNode] = currentNode; + delete unvisitedSet[currentNode]; + dfsParentMap[currentNode] = previousNode; + } + }, + leave: function leave(_a7) { + var currentNode = _a7.current; + visitedSet[currentNode] = currentNode; + delete visitingSet[currentNode]; + }, + allowTraversal: function allowTraversal(_a7) { + var nextNode = _a7.next; + if (cycle) { + return false; + } + return !visitedSet[nextNode]; + } + }; + while (Object.keys(unvisitedSet).length) { + var firsetUnVisitedKey = Object.keys(unvisitedSet)[0]; + (0, _dfs.default)(graphData, firsetUnVisitedKey, callbacks); + } + return cycle; + }; + var detectAllUndirectedCycle3 = function detectAllUndirectedCycle4(graphData, nodeIds, include) { + var _a6, _b; + if (include === void 0) { + include = true; + } + var allCycles = []; + var components = (0, _connectedComponent.default)(graphData, false); + for (var _i = 0, components_1 = components; _i < components_1.length; _i++) { + var component2 = components_1[_i]; + if (!component2.length) + continue; + var root = component2[0]; + var rootId = root.id; + var stack = [root]; + var parent_1 = (_a6 = {}, _a6[rootId] = root, _a6); + var used = (_b = {}, _b[rootId] = new Set(), _b); + while (stack.length > 0) { + var curNode = stack.pop(); + var curNodeId = curNode.id; + var neighbors = (0, _util.getNeighbors)(curNodeId, graphData.edges); + var _loop_1 = function _loop_12(i5) { + var _c; + var neighborId = neighbors[i5]; + var neighbor = graphData.nodes.find(function(node) { + return node.id === neighborId; + }); + if (neighborId === curNodeId) { + allCycles.push((_c = {}, _c[neighborId] = curNode, _c)); + } else if (!(neighborId in used)) { + parent_1[neighborId] = curNode; + stack.push(neighbor); + used[neighborId] = new Set([curNode]); + } else if (!used[curNodeId].has(neighbor)) { + var cycleValid = true; + var cyclePath = [neighbor, curNode]; + var p4 = parent_1[curNodeId]; + while (used[neighborId].size && !used[neighborId].has(p4)) { + cyclePath.push(p4); + if (p4 === parent_1[p4.id]) + break; + else + p4 = parent_1[p4.id]; + } + cyclePath.push(p4); + if (nodeIds && include) { + cycleValid = false; + if (cyclePath.findIndex(function(node) { + return nodeIds.indexOf(node.id) > -1; + }) > -1) { + cycleValid = true; + } + } else if (nodeIds && !include) { + if (cyclePath.findIndex(function(node) { + return nodeIds.indexOf(node.id) > -1; + }) > -1) { + cycleValid = false; + } + } + if (cycleValid) { + var cycle = {}; + for (var index2 = 1; index2 < cyclePath.length; index2 += 1) { + cycle[cyclePath[index2 - 1].id] = cyclePath[index2]; + } + if (cyclePath.length) { + cycle[cyclePath[cyclePath.length - 1].id] = cyclePath[0]; + } + allCycles.push(cycle); + } + used[neighborId].add(curNode); + } + }; + for (var i4 = 0; i4 < neighbors.length; i4 += 1) { + _loop_1(i4); + } + } + } + return allCycles; + }; + exports.detectAllUndirectedCycle = detectAllUndirectedCycle3; + var detectAllDirectedCycle3 = function detectAllDirectedCycle4(graphData, nodeIds, include) { + if (include === void 0) { + include = true; + } + var path = []; + var blocked = new Set(); + var B3 = []; + var allCycles = []; + var idx2Node = {}; + var node2Idx = {}; + var unblock = function unblock2(thisNode) { + var stack = [thisNode]; + while (stack.length > 0) { + var node2 = stack.pop(); + if (blocked.has(node2)) { + blocked.delete(node2); + B3[node2.id].forEach(function(n3) { + stack.push(n3); + }); + B3[node2.id].clear(); + } + } + }; + var circuit = function circuit2(node2, start, adjList2) { + var closed = false; + if (nodeIds && include === false && nodeIds.indexOf(node2.id) > -1) + return closed; + path.push(node2); + blocked.add(node2); + var neighbors = adjList2[node2.id]; + for (var i5 = 0; i5 < neighbors.length; i5 += 1) { + var neighbor = idx2Node[neighbors[i5]]; + if (neighbor === start) { + var cycle = {}; + for (var index2 = 1; index2 < path.length; index2 += 1) { + cycle[path[index2 - 1].id] = path[index2]; + } + if (path.length) { + cycle[path[path.length - 1].id] = path[0]; + } + allCycles.push(cycle); + closed = true; + } else if (!blocked.has(neighbor)) { + if (circuit2(neighbor, start, adjList2)) { + closed = true; + } + } + } + if (closed) { + unblock(node2); + } else { + for (var i5 = 0; i5 < neighbors.length; i5 += 1) { + var neighbor = idx2Node[neighbors[i5]]; + if (!B3[neighbor.id].has(node2)) { + B3[neighbor.id].add(node2); + } + } + } + path.pop(); + return closed; + }; + var _a6 = graphData.nodes, nodes = _a6 === void 0 ? [] : _a6; + for (var i4 = 0; i4 < nodes.length; i4 += 1) { + var node = nodes[i4]; + var nodeId = node.id; + node2Idx[nodeId] = i4; + idx2Node[i4] = node; + } + if (nodeIds && include) { + var _loop_2 = function _loop_22(i5) { + var nodeId2 = nodeIds[i5]; + node2Idx[nodes[i5].id] = node2Idx[nodeId2]; + node2Idx[nodeId2] = 0; + idx2Node[0] = nodes.find(function(node2) { + return node2.id === nodeId2; + }); + idx2Node[node2Idx[nodes[i5].id]] = nodes[i5]; + }; + for (var i4 = 0; i4 < nodeIds.length; i4++) { + _loop_2(i4); + } + } + var getMinComponentAdj = function getMinComponentAdj2(components) { + var _a7; + var minCompIdx; + var minIdx2 = Infinity; + for (var i5 = 0; i5 < components.length; i5 += 1) { + var comp = components[i5]; + for (var j4 = 0; j4 < comp.length; j4++) { + var nodeIdx_1 = node2Idx[comp[j4].id]; + if (nodeIdx_1 < minIdx2) { + minIdx2 = nodeIdx_1; + minCompIdx = i5; + } + } + } + var component3 = components[minCompIdx]; + var adjList2 = []; + for (var i5 = 0; i5 < component3.length; i5 += 1) { + var node2 = component3[i5]; + adjList2[node2.id] = []; + for (var _i = 0, _b = (0, _util.getNeighbors)(node2.id, graphData.edges, "target").filter(function(n3) { + return component3.map(function(c5) { + return c5.id; + }).indexOf(n3) > -1; + }); _i < _b.length; _i++) { + var neighbor = _b[_i]; + if (neighbor === node2.id && !(include === false && nodeIds.indexOf(node2.id) > -1)) { + allCycles.push((_a7 = {}, _a7[node2.id] = node2, _a7)); + } else { + adjList2[node2.id].push(node2Idx[neighbor]); + } + } + } + return { + component: component3, + adjList: adjList2, + minIdx: minIdx2 + }; + }; + var nodeIdx = 0; + while (nodeIdx < nodes.length) { + var subgraphNodes = nodes.filter(function(n3) { + return node2Idx[n3.id] >= nodeIdx; + }); + var sccs = (0, _connectedComponent.detectStrongConnectComponents)({ + nodes: subgraphNodes, + edges: graphData.edges + }).filter(function(component3) { + return component3.length > 1; + }); + if (sccs.length === 0) + break; + var scc = getMinComponentAdj(sccs); + var minIdx = scc.minIdx, adjList = scc.adjList, component2 = scc.component; + if (component2.length > 1) { + component2.forEach(function(node2) { + B3[node2.id] = new Set(); + }); + var startNode = idx2Node[minIdx]; + if (nodeIds && include && nodeIds.indexOf(startNode.id) === -1) + return allCycles; + circuit(startNode, startNode, adjList); + nodeIdx = minIdx + 1; + } else { + break; + } + } + return allCycles; + }; + exports.detectAllDirectedCycle = detectAllDirectedCycle3; + var detectAllCycles3 = function detectAllCycles4(graphData, directed, nodeIds, include) { + if (include === void 0) { + include = true; + } + if (directed) + return detectAllDirectedCycle3(graphData, nodeIds, include); + return detectAllUndirectedCycle3(graphData, nodeIds, include); + }; + exports.detectAllCycles = detectAllCycles3; + var _default2 = detectDirectedCycle4; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/dijkstra.js +var require_dijkstra = __commonJS({ + "node_modules/@antv/algorithm/lib/dijkstra.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _tslib = require_tslib(); + var _util = require_lib(); + var _util2 = require_util(); + var minVertex3 = function minVertex4(D3, nodes, marks) { + var minDis = Infinity; + var minNode; + for (var i4 = 0; i4 < nodes.length; i4++) { + var nodeId = nodes[i4].id; + if (!marks[nodeId] && D3[nodeId] <= minDis) { + minDis = D3[nodeId]; + minNode = nodes[i4]; + } + } + return minNode; + }; + var dijkstra3 = function dijkstra4(graphData, source, directed, weightPropertyName) { + var _a6 = graphData.nodes, nodes = _a6 === void 0 ? [] : _a6, _b = graphData.edges, edges = _b === void 0 ? [] : _b; + var nodeIds = []; + var marks = {}; + var D3 = {}; + var prevs = {}; + nodes.forEach(function(node, i5) { + var id = node.id; + nodeIds.push(id); + D3[id] = Infinity; + if (id === source) + D3[id] = 0; + }); + var nodeNum = nodes.length; + var _loop_1 = function _loop_12(i5) { + var minNode = minVertex3(D3, nodes, marks); + var minNodeId = minNode.id; + marks[minNodeId] = true; + if (D3[minNodeId] === Infinity) + return "continue"; + var relatedEdges = []; + if (directed) + relatedEdges = (0, _util2.getOutEdgesNodeId)(minNodeId, edges); + else + relatedEdges = (0, _util2.getEdgesByNodeId)(minNodeId, edges); + relatedEdges.forEach(function(edge2) { + var edgeTarget = edge2.target; + var edgeSource = edge2.source; + var w4 = edgeTarget === minNodeId ? edgeSource : edgeTarget; + var weight = weightPropertyName && edge2[weightPropertyName] ? edge2[weightPropertyName] : 1; + if (D3[w4] > D3[minNode.id] + weight) { + D3[w4] = D3[minNode.id] + weight; + prevs[w4] = [minNode.id]; + } else if (D3[w4] === D3[minNode.id] + weight) { + prevs[w4].push(minNode.id); + } + }); + }; + for (var i4 = 0; i4 < nodeNum; i4++) { + _loop_1(i4); + } + prevs[source] = [source]; + var paths = {}; + for (var target in D3) { + if (D3[target] !== Infinity) { + findAllPaths2(source, target, prevs, paths); + } + } + var path = {}; + for (var target in paths) { + path[target] = paths[target][0]; + } + return { + length: D3, + path, + allPath: paths + }; + }; + var _default2 = dijkstra3; + exports.default = _default2; + function findAllPaths2(source, target, prevs, foundPaths) { + if (source === target) { + return [source]; + } + if (foundPaths[target]) { + return foundPaths[target]; + } + var paths = []; + for (var _i = 0, _a6 = prevs[target]; _i < _a6.length; _i++) { + var prev = _a6[_i]; + var prevPaths = findAllPaths2(source, prev, prevs, foundPaths); + if (!prevPaths) + return; + for (var _b = 0, prevPaths_1 = prevPaths; _b < prevPaths_1.length; _b++) { + var prePath = prevPaths_1[_b]; + if ((0, _util.isArray)(prePath)) + paths.push((0, _tslib.__spreadArray)((0, _tslib.__spreadArray)([], prePath, true), [target], false)); + else + paths.push([prePath, target]); + } + } + foundPaths[target] = paths; + return foundPaths[target]; + } + } +}); + +// node_modules/@antv/algorithm/lib/find-path.js +var require_find_path = __commonJS({ + "node_modules/@antv/algorithm/lib/find-path.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.findShortestPath = exports.findAllPath = void 0; + var _dijkstra = _interopRequireDefault(require_dijkstra()); + var _util = require_util(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var findShortestPath3 = function findShortestPath4(graphData, start, end2, directed, weightPropertyName) { + var _a6 = (0, _dijkstra.default)(graphData, start, directed, weightPropertyName), length5 = _a6.length, path = _a6.path, allPath = _a6.allPath; + return { + length: length5[end2], + path: path[end2], + allPath: allPath[end2] + }; + }; + exports.findShortestPath = findShortestPath3; + var findAllPath3 = function findAllPath4(graphData, start, end2, directed) { + var _a6; + if (start === end2) + return [[start]]; + var _b = graphData.edges, edges = _b === void 0 ? [] : _b; + var visited = [start]; + var isVisited = (_a6 = {}, _a6[start] = true, _a6); + var stack = []; + var allPath = []; + var neighbors = directed ? (0, _util.getNeighbors)(start, edges, "target") : (0, _util.getNeighbors)(start, edges); + stack.push(neighbors); + while (visited.length > 0 && stack.length > 0) { + var children = stack[stack.length - 1]; + if (children.length) { + var child = children.shift(); + if (child) { + visited.push(child); + isVisited[child] = true; + neighbors = directed ? (0, _util.getNeighbors)(child, edges, "target") : (0, _util.getNeighbors)(child, edges); + stack.push(neighbors.filter(function(neighbor) { + return !isVisited[neighbor]; + })); + } + } else { + var node = visited.pop(); + isVisited[node] = false; + stack.pop(); + continue; + } + if (visited[visited.length - 1] === end2) { + var path = visited.map(function(node2) { + return node2; + }); + allPath.push(path); + var node = visited.pop(); + isVisited[node] = false; + stack.pop(); + } + } + return allPath; + }; + exports.findAllPath = findAllPath3; + } +}); + +// node_modules/@antv/algorithm/lib/floydWarshall.js +var require_floydWarshall = __commonJS({ + "node_modules/@antv/algorithm/lib/floydWarshall.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _adjacentMatrix = _interopRequireDefault(require_adjacent_matrix()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var floydWarshall6 = function floydWarshall7(graphData, directed) { + var adjacentMatrix = (0, _adjacentMatrix.default)(graphData, directed); + var dist4 = []; + var size14 = adjacentMatrix.length; + for (var i4 = 0; i4 < size14; i4 += 1) { + dist4[i4] = []; + for (var j4 = 0; j4 < size14; j4 += 1) { + if (i4 === j4) { + dist4[i4][j4] = 0; + } else if (adjacentMatrix[i4][j4] === 0 || !adjacentMatrix[i4][j4]) { + dist4[i4][j4] = Infinity; + } else { + dist4[i4][j4] = adjacentMatrix[i4][j4]; + } + } + } + for (var k4 = 0; k4 < size14; k4 += 1) { + for (var i4 = 0; i4 < size14; i4 += 1) { + for (var j4 = 0; j4 < size14; j4 += 1) { + if (dist4[i4][j4] > dist4[i4][k4] + dist4[k4][j4]) { + dist4[i4][j4] = dist4[i4][k4] + dist4[k4][j4]; + } + } + } + } + return dist4; + }; + var _default2 = floydWarshall6; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/label-propagation.js +var require_label_propagation = __commonJS({ + "node_modules/@antv/algorithm/lib/label-propagation.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _adjacentMatrix = _interopRequireDefault(require_adjacent_matrix()); + var _util = require_util(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var labelPropagation3 = function labelPropagation4(graphData, directed, weightPropertyName, maxIteration) { + if (directed === void 0) { + directed = false; + } + if (weightPropertyName === void 0) { + weightPropertyName = "weight"; + } + if (maxIteration === void 0) { + maxIteration = 1e3; + } + var _a6 = graphData.nodes, nodes = _a6 === void 0 ? [] : _a6, _b = graphData.edges, edges = _b === void 0 ? [] : _b; + var clusters = {}; + var nodeMap = {}; + nodes.forEach(function(node, i4) { + var cid = (0, _util.uniqueId)(); + node.clusterId = cid; + clusters[cid] = { + id: cid, + nodes: [node] + }; + nodeMap[node.id] = { + node, + idx: i4 + }; + }); + var adjMatrix3 = (0, _adjacentMatrix.default)(graphData, directed); + var ks = []; + var neighbors = {}; + adjMatrix3.forEach(function(row, i4) { + var k4 = 0; + var iid = nodes[i4].id; + neighbors[iid] = {}; + row.forEach(function(entry, j4) { + if (!entry) + return; + k4 += entry; + var jid = nodes[j4].id; + neighbors[iid][jid] = entry; + }); + ks.push(k4); + }); + var iter = 0; + var _loop_1 = function _loop_12() { + var changed = false; + nodes.forEach(function(node) { + var neighborClusters = {}; + Object.keys(neighbors[node.id]).forEach(function(neighborId) { + var neighborWeight = neighbors[node.id][neighborId]; + var neighborNode = nodeMap[neighborId].node; + var neighborClusterId = neighborNode.clusterId; + if (!neighborClusters[neighborClusterId]) + neighborClusters[neighborClusterId] = 0; + neighborClusters[neighborClusterId] += neighborWeight; + }); + var maxWeight = -Infinity; + var bestClusterIds = []; + Object.keys(neighborClusters).forEach(function(clusterId) { + if (maxWeight < neighborClusters[clusterId]) { + maxWeight = neighborClusters[clusterId]; + bestClusterIds = [clusterId]; + } else if (maxWeight === neighborClusters[clusterId]) { + bestClusterIds.push(clusterId); + } + }); + if (bestClusterIds.length === 1 && bestClusterIds[0] === node.clusterId) + return; + var selfClusterIdx = bestClusterIds.indexOf(node.clusterId); + if (selfClusterIdx >= 0) + bestClusterIds.splice(selfClusterIdx, 1); + if (bestClusterIds && bestClusterIds.length) { + changed = true; + var selfCluster = clusters[node.clusterId]; + var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node); + selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); + var randomIdx = Math.floor(Math.random() * bestClusterIds.length); + var bestCluster = clusters[bestClusterIds[randomIdx]]; + bestCluster.nodes.push(node); + node.clusterId = bestCluster.id; + } + }); + if (!changed) + return "break"; + iter++; + }; + while (iter < maxIteration) { + var state_1 = _loop_1(); + if (state_1 === "break") + break; + } + Object.keys(clusters).forEach(function(clusterId) { + var cluster = clusters[clusterId]; + if (!cluster.nodes || !cluster.nodes.length) { + delete clusters[clusterId]; + } + }); + var clusterEdges = []; + var clusterEdgeMap = {}; + edges.forEach(function(edge2) { + var source = edge2.source, target = edge2.target; + var weight = edge2[weightPropertyName] || 1; + var sourceClusterId = nodeMap[source].node.clusterId; + var targetClusterId = nodeMap[target].node.clusterId; + var newEdgeId = "".concat(sourceClusterId, "---").concat(targetClusterId); + if (clusterEdgeMap[newEdgeId]) { + clusterEdgeMap[newEdgeId].weight += weight; + clusterEdgeMap[newEdgeId].count++; + } else { + var newEdge = { + source: sourceClusterId, + target: targetClusterId, + weight, + count: 1 + }; + clusterEdgeMap[newEdgeId] = newEdge; + clusterEdges.push(newEdge); + } + }); + var clustersArray = []; + Object.keys(clusters).forEach(function(clusterId) { + clustersArray.push(clusters[clusterId]); + }); + return { + clusters: clustersArray, + clusterEdges + }; + }; + var _default2 = labelPropagation3; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/utils/vector.js +var require_vector = __commonJS({ + "node_modules/@antv/algorithm/lib/utils/vector.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _util = require_lib(); + var Vector2 = function() { + function Vector3(arr) { + this.arr = arr; + } + Vector3.prototype.getArr = function() { + return this.arr || []; + }; + Vector3.prototype.add = function(otherVector) { + var _a6; + var otherArr = otherVector.arr; + if (!((_a6 = this.arr) === null || _a6 === void 0 ? void 0 : _a6.length)) { + return new Vector3(otherArr); + } + if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) { + return new Vector3(this.arr); + } + if (this.arr.length === otherArr.length) { + var res = []; + for (var index2 in this.arr) { + res[index2] = this.arr[index2] + otherArr[index2]; + } + return new Vector3(res); + } + }; + Vector3.prototype.subtract = function(otherVector) { + var _a6; + var otherArr = otherVector.arr; + if (!((_a6 = this.arr) === null || _a6 === void 0 ? void 0 : _a6.length)) { + return new Vector3(otherArr); + } + if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) { + return new Vector3(this.arr); + } + if (this.arr.length === otherArr.length) { + var res = []; + for (var index2 in this.arr) { + res[index2] = this.arr[index2] - otherArr[index2]; + } + return new Vector3(res); + } + }; + Vector3.prototype.avg = function(length5) { + var res = []; + if (length5 !== 0) { + for (var index2 in this.arr) { + res[index2] = this.arr[index2] / length5; + } + } + return new Vector3(res); + }; + Vector3.prototype.negate = function() { + var res = []; + for (var index2 in this.arr) { + res[index2] = -this.arr[index2]; + } + return new Vector3(res); + }; + Vector3.prototype.squareEuclideanDistance = function(otherVector) { + var _a6; + var otherArr = otherVector.arr; + if (!((_a6 = this.arr) === null || _a6 === void 0 ? void 0 : _a6.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) { + return 0; + } + if (this.arr.length === otherArr.length) { + var res = 0; + for (var index2 in this.arr) { + res += Math.pow(this.arr[index2] - otherVector.arr[index2], 2); + } + return res; + } + }; + Vector3.prototype.euclideanDistance = function(otherVector) { + var _a6; + var otherArr = otherVector.arr; + if (!((_a6 = this.arr) === null || _a6 === void 0 ? void 0 : _a6.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) { + return 0; + } + if (this.arr.length === otherArr.length) { + var res = 0; + for (var index2 in this.arr) { + res += Math.pow(this.arr[index2] - otherVector.arr[index2], 2); + } + return Math.sqrt(res); + } else { + console.error("The two vectors are unequal in length."); + } + }; + Vector3.prototype.normalize = function() { + var res = []; + var cloneArr = (0, _util.clone)(this.arr); + cloneArr.sort(function(a4, b10) { + return a4 - b10; + }); + var max15 = cloneArr[cloneArr.length - 1]; + var min13 = cloneArr[0]; + for (var index2 in this.arr) { + res[index2] = (this.arr[index2] - min13) / (max15 - min13); + } + return new Vector3(res); + }; + Vector3.prototype.norm2 = function() { + var _a6; + if (!((_a6 = this.arr) === null || _a6 === void 0 ? void 0 : _a6.length)) { + return 0; + } + var res = 0; + for (var index2 in this.arr) { + res += Math.pow(this.arr[index2], 2); + } + return Math.sqrt(res); + }; + Vector3.prototype.dot = function(otherVector) { + var _a6; + var otherArr = otherVector.arr; + if (!((_a6 = this.arr) === null || _a6 === void 0 ? void 0 : _a6.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) { + return 0; + } + if (this.arr.length === otherArr.length) { + var res = 0; + for (var index2 in this.arr) { + res += this.arr[index2] * otherVector.arr[index2]; + } + return res; + } else { + console.error("The two vectors are unequal in length."); + } + }; + Vector3.prototype.equal = function(otherVector) { + var _a6; + var otherArr = otherVector.arr; + if (((_a6 = this.arr) === null || _a6 === void 0 ? void 0 : _a6.length) !== (otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) { + return false; + } + for (var index2 in this.arr) { + if (this.arr[index2] !== otherArr[index2]) { + return false; + } + } + return true; + }; + return Vector3; + }(); + var _default2 = Vector2; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/constants/time.js +var require_time = __commonJS({ + "node_modules/@antv/algorithm/lib/constants/time.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.secondReg = exports.dateReg = void 0; + var secondReg2 = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; + exports.secondReg = secondReg2; + var dateReg2 = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; + exports.dateReg = dateReg2; + } +}); + +// node_modules/@antv/algorithm/lib/utils/node-properties.js +var require_node_properties = __commonJS({ + "node_modules/@antv/algorithm/lib/utils/node-properties.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getPropertyWeight = exports.getAllSortProperties = exports.getAllProperties = exports.default = void 0; + var _time = require_time(); + var getAllSortProperties = function getAllSortProperties2(nodes, n3) { + if (nodes === void 0) { + nodes = []; + } + if (n3 === void 0) { + n3 = 100; + } + var propertyKeyInfo = {}; + nodes.forEach(function(node) { + if (!node.properties) { + return; + } + Object.keys(node.properties).forEach(function(propertyKey) { + if (propertyKey === "id" || !"".concat(node.properties[propertyKey]).match(_time.secondReg) && !"".concat(node.properties[propertyKey]).match(_time.dateReg) && isNaN(Number(node.properties[propertyKey]))) { + if (propertyKeyInfo.hasOwnProperty(propertyKey)) { + delete propertyKeyInfo[propertyKey]; + } + return; + } + if (propertyKeyInfo.hasOwnProperty(propertyKey)) { + propertyKeyInfo[propertyKey] += 1; + } else { + propertyKeyInfo[propertyKey] = 1; + } + }); + }); + var sortKeys = Object.keys(propertyKeyInfo).sort(function(a4, b10) { + return propertyKeyInfo[b10] - propertyKeyInfo[a4]; + }); + return sortKeys.length < n3 ? sortKeys : sortKeys.slice(0, n3); + }; + exports.getAllSortProperties = getAllSortProperties; + var processProperty = function processProperty2(properties, propertyKeys) { + return propertyKeys.map(function(key) { + if (properties.hasOwnProperty(key)) { + if (!isNaN(Number(properties[key]))) { + return Number(properties[key]); + } + if (properties[key].match(_time.secondReg) || properties[key].match(_time.dateReg)) { + return Number(Date.parse(new Date(properties[key]))) / 1e3; + } + } + return 0; + }); + }; + var getPropertyWeight = function getPropertyWeight2(nodes) { + var propertyKeys = getAllSortProperties(nodes); + var allPropertiesWeight = []; + for (var i4 = 0; i4 < nodes.length; i4++) { + allPropertiesWeight[i4] = processProperty(nodes[i4].properties, propertyKeys); + } + return allPropertiesWeight; + }; + exports.getPropertyWeight = getPropertyWeight; + var getAllProperties3 = function getAllProperties4(nodes, key) { + if (key === void 0) { + key = "properties"; + } + var allProperties = []; + nodes.forEach(function(node) { + if (!node.properties) { + return; + } + allProperties.push(node[key]); + }); + return allProperties; + }; + exports.getAllProperties = getAllProperties3; + var _default2 = { + getAllSortProperties, + getPropertyWeight, + getAllProperties: getAllProperties3 + }; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/types.js +var require_types = __commonJS({ + "node_modules/@antv/algorithm/lib/types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.DistanceType = void 0; + var DistanceType2; + exports.DistanceType = DistanceType2; + (function(DistanceType3) { + DistanceType3["EuclideanDistance"] = "euclideanDistance"; + })(DistanceType2 || (exports.DistanceType = DistanceType2 = {})); + } +}); + +// node_modules/@antv/algorithm/lib/utils/data-preprocessing.js +var require_data_preprocessing = __commonJS({ + "node_modules/@antv/algorithm/lib/utils/data-preprocessing.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.oneHot = exports.getDistance = exports.getAllKeyValueMap = exports.default = void 0; + var _util = require_lib(); + var _types = require_types(); + var _vector = _interopRequireDefault(require_vector()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var getAllKeyValueMap3 = function getAllKeyValueMap4(dataList, involvedKeys, uninvolvedKeys) { + var keys6 = []; + if (involvedKeys === null || involvedKeys === void 0 ? void 0 : involvedKeys.length) { + keys6 = involvedKeys; + } else { + dataList.forEach(function(data3) { + keys6 = keys6.concat(Object.keys(data3)); + }); + keys6 = (0, _util.uniq)(keys6); + } + var allKeyValueMap = {}; + keys6.forEach(function(key) { + var value2 = []; + dataList.forEach(function(data3) { + if (data3[key] !== void 0 && data3[key] !== "") { + value2.push(data3[key]); + } + }); + if (value2.length && !(uninvolvedKeys === null || uninvolvedKeys === void 0 ? void 0 : uninvolvedKeys.includes(key))) { + allKeyValueMap[key] = (0, _util.uniq)(value2); + } + }); + return allKeyValueMap; + }; + exports.getAllKeyValueMap = getAllKeyValueMap3; + var oneHot3 = function oneHot4(dataList, involvedKeys, uninvolvedKeys) { + var allKeyValueMap = getAllKeyValueMap3(dataList, involvedKeys, uninvolvedKeys); + var oneHotCode = []; + dataList.forEach(function(data3, index2) { + var code = []; + Object.keys(allKeyValueMap).forEach(function(key) { + var keyValue = data3[key]; + var allKeyValue = allKeyValueMap[key]; + var valueIndex = allKeyValue.findIndex(function(value2) { + return keyValue === value2; + }); + var subCode = []; + for (var i4 = 0; i4 < allKeyValue.length; i4++) { + if (i4 === valueIndex) { + subCode.push(1); + } else { + subCode.push(0); + } + } + code = code.concat(subCode); + }); + oneHotCode[index2] = code; + }); + return oneHotCode; + }; + exports.oneHot = oneHot3; + var getDistance3 = function getDistance4(item, otherItem, distanceType, graphData) { + if (distanceType === void 0) { + distanceType = _types.DistanceType.EuclideanDistance; + } + var distance15 = 0; + switch (distanceType) { + case _types.DistanceType.EuclideanDistance: + distance15 = new _vector.default(item).euclideanDistance(new _vector.default(otherItem)); + break; + default: + break; + } + return distance15; + }; + exports.getDistance = getDistance3; + var _default2 = { + getAllKeyValueMap: getAllKeyValueMap3, + oneHot: oneHot3, + getDistance: getDistance3 + }; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/louvain.js +var require_louvain = __commonJS({ + "node_modules/@antv/algorithm/lib/louvain.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _util = require_lib(); + var _adjacentMatrix = _interopRequireDefault(require_adjacent_matrix()); + var _vector = _interopRequireDefault(require_vector()); + var _nodeProperties = require_node_properties(); + var _dataPreprocessing = require_data_preprocessing(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var getModularity3 = function getModularity4(nodes, adjMatrix3, ks, m4) { + var length5 = adjMatrix3.length; + var param = 2 * m4; + var modularity = 0; + for (var i4 = 0; i4 < length5; i4++) { + var clusteri = nodes[i4].clusterId; + for (var j4 = 0; j4 < length5; j4++) { + var clusterj = nodes[j4].clusterId; + if (clusteri !== clusterj) + continue; + var entry = adjMatrix3[i4][j4] || 0; + var ki = ks[i4] || 0; + var kj = ks[j4] || 0; + modularity += entry - ki * kj / param; + } + } + modularity *= 1 / param; + return modularity; + }; + var getInertialModularity3 = function getInertialModularity4(nodes, allPropertiesWeight) { + if (nodes === void 0) { + nodes = []; + } + var length5 = nodes.length; + var totalProperties = new _vector.default([]); + for (var i4 = 0; i4 < length5; i4++) { + totalProperties = totalProperties.add(new _vector.default(allPropertiesWeight[i4])); + } + var avgProperties = totalProperties.avg(length5); + avgProperties.normalize(); + var variance = 0; + for (var i4 = 0; i4 < length5; i4++) { + var propertiesi = new _vector.default(allPropertiesWeight[i4]); + var squareEuclideanDistance = propertiesi.squareEuclideanDistance(avgProperties); + variance += squareEuclideanDistance; + } + var squareEuclideanDistanceInfo = []; + nodes.forEach(function() { + squareEuclideanDistanceInfo.push([]); + }); + for (var i4 = 0; i4 < length5; i4++) { + var propertiesi = new _vector.default(allPropertiesWeight[i4]); + nodes[i4]["clusterInertial"] = 0; + for (var j4 = 0; j4 < length5; j4++) { + if (i4 === j4) { + squareEuclideanDistanceInfo[i4][j4] = 0; + continue; + } + var propertiesj = new _vector.default(allPropertiesWeight[j4]); + squareEuclideanDistanceInfo[i4][j4] = propertiesi.squareEuclideanDistance(propertiesj); + nodes[i4]["clusterInertial"] += squareEuclideanDistanceInfo[i4][j4]; + } + } + var inertialModularity = 0; + var param = 2 * length5 * variance; + for (var i4 = 0; i4 < length5; i4++) { + var clusteri = nodes[i4].clusterId; + for (var j4 = 0; j4 < length5; j4++) { + var clusterj = nodes[j4].clusterId; + if (i4 === j4 || clusteri !== clusterj) + continue; + var inertial = nodes[i4].clusterInertial * nodes[j4].clusterInertial / Math.pow(param, 2) - squareEuclideanDistanceInfo[i4][j4] / param; + inertialModularity += inertial; + } + } + return Number(inertialModularity.toFixed(4)); + }; + var louvain3 = function louvain4(graphData, directed, weightPropertyName, threshold, inertialModularity, inertialWeight) { + if (directed === void 0) { + directed = false; + } + if (weightPropertyName === void 0) { + weightPropertyName = "weight"; + } + if (threshold === void 0) { + threshold = 1e-4; + } + if (inertialModularity === void 0) { + inertialModularity = false; + } + if (inertialWeight === void 0) { + inertialWeight = 1; + } + var _a6 = graphData.nodes, nodes = _a6 === void 0 ? [] : _a6, _b = graphData.edges, edges = _b === void 0 ? [] : _b; + var allPropertiesWeight = []; + if (inertialModularity) { + nodes.forEach(function(node, index2) { + node.properties = node.properties || {}; + node.originIndex = index2; + }); + var nodeTypeInfo_1 = []; + if (nodes.every(function(node) { + return node.hasOwnProperty("nodeType"); + })) { + nodeTypeInfo_1 = Array.from(new Set(nodes.map(function(node) { + return node.nodeType; + }))); + nodes.forEach(function(node) { + node.properties.nodeType = nodeTypeInfo_1.findIndex(function(nodeType) { + return nodeType === node.nodeType; + }); + }); + } + var properties = (0, _nodeProperties.getAllProperties)(nodes); + allPropertiesWeight = (0, _dataPreprocessing.oneHot)(properties); + } + var uniqueId14 = 1; + var clusters = {}; + var nodeMap = {}; + nodes.forEach(function(node, i4) { + var cid = String(uniqueId14++); + node.clusterId = cid; + clusters[cid] = { + id: cid, + nodes: [node] + }; + nodeMap[node.id] = { + node, + idx: i4 + }; + }); + var adjMatrix3 = (0, _adjacentMatrix.default)(graphData, directed); + var ks = []; + var neighbors = {}; + var m4 = 0; + adjMatrix3.forEach(function(row, i4) { + var k4 = 0; + var iid = nodes[i4].id; + neighbors[iid] = {}; + row.forEach(function(entry, j4) { + if (!entry) + return; + k4 += entry; + var jid = nodes[j4].id; + neighbors[iid][jid] = entry; + m4 += entry; + }); + ks.push(k4); + }); + m4 /= 2; + var totalModularity = Infinity; + var previousModularity = Infinity; + var iter = 0; + var finalNodes = []; + var finalClusters = {}; + while (true) { + if (inertialModularity && nodes.every(function(node) { + return node.hasOwnProperty("properties"); + })) { + totalModularity = getModularity3(nodes, adjMatrix3, ks, m4) + getInertialModularity3(nodes, allPropertiesWeight) * inertialWeight; + } else { + totalModularity = getModularity3(nodes, adjMatrix3, ks, m4); + } + if (iter === 0) { + previousModularity = totalModularity; + finalNodes = nodes; + finalClusters = clusters; + } + var increaseWithinThreshold = totalModularity > 0 && totalModularity > previousModularity && totalModularity - previousModularity < threshold; + if (totalModularity > previousModularity) { + finalNodes = nodes.map(function(node) { + return { + node, + clusterId: node.clusterId + }; + }); + finalClusters = (0, _util.clone)(clusters); + previousModularity = totalModularity; + } + if (increaseWithinThreshold || iter > 100) { + break; + } + ; + iter++; + Object.keys(clusters).forEach(function(clusterId) { + var sumTot = 0; + edges.forEach(function(edge2) { + var source = edge2.source, target = edge2.target; + var sourceClusterId = nodeMap[source].node.clusterId; + var targetClusterId = nodeMap[target].node.clusterId; + if (sourceClusterId === clusterId && targetClusterId !== clusterId || targetClusterId === clusterId && sourceClusterId !== clusterId) { + sumTot = sumTot + (edge2[weightPropertyName] || 1); + } + }); + clusters[clusterId].sumTot = sumTot; + }); + nodes.forEach(function(node, i4) { + var selfCluster = clusters[node.clusterId]; + var bestIncrease = 0; + var bestCluster; + var commonParam = ks[i4] / (2 * m4); + var kiin = 0; + var selfClusterNodes = selfCluster.nodes; + selfClusterNodes.forEach(function(scNode) { + var scNodeIdx = nodeMap[scNode.id].idx; + kiin += adjMatrix3[i4][scNodeIdx] || 0; + }); + var removeModurarity = kiin - selfCluster.sumTot * commonParam; + var selfClusterNodesAfterRemove = selfClusterNodes.filter(function(scNode) { + return scNode.id !== node.id; + }); + var propertiesWeightRemove = []; + selfClusterNodesAfterRemove.forEach(function(nodeRemove, index2) { + propertiesWeightRemove[index2] = allPropertiesWeight[nodeRemove.originIndex]; + }); + var removeInertialModularity = getInertialModularity3(selfClusterNodesAfterRemove, allPropertiesWeight) * inertialWeight; + var nodeNeighborIds = neighbors[node.id]; + Object.keys(nodeNeighborIds).forEach(function(neighborNodeId) { + var neighborNode = nodeMap[neighborNodeId].node; + var neighborClusterId = neighborNode.clusterId; + if (neighborClusterId === node.clusterId) + return; + var neighborCluster = clusters[neighborClusterId]; + var clusterNodes = neighborCluster.nodes; + if (!clusterNodes || !clusterNodes.length) + return; + var neighborClusterKiin = 0; + clusterNodes.forEach(function(cNode) { + var cNodeIdx = nodeMap[cNode.id].idx; + neighborClusterKiin += adjMatrix3[i4][cNodeIdx] || 0; + }); + var addModurarity = neighborClusterKiin - neighborCluster.sumTot * commonParam; + var clusterNodesAfterAdd = clusterNodes.concat([node]); + var propertiesWeightAdd = []; + clusterNodesAfterAdd.forEach(function(nodeAdd, index2) { + propertiesWeightAdd[index2] = allPropertiesWeight[nodeAdd.originIndex]; + }); + var addInertialModularity = getInertialModularity3(clusterNodesAfterAdd, allPropertiesWeight) * inertialWeight; + var increase = addModurarity - removeModurarity; + if (inertialModularity) { + increase = addModurarity + addInertialModularity - (removeModurarity + removeInertialModularity); + } + if (increase > bestIncrease) { + bestIncrease = increase; + bestCluster = neighborCluster; + } + }); + if (bestIncrease > 0) { + bestCluster.nodes.push(node); + var previousClusterId_1 = node.clusterId; + node.clusterId = bestCluster.id; + var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node); + selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); + var neighborClusterSumTot_1 = 0; + var selfClusterSumTot_1 = 0; + edges.forEach(function(edge2) { + var source = edge2.source, target = edge2.target; + var sourceClusterId = nodeMap[source].node.clusterId; + var targetClusterId = nodeMap[target].node.clusterId; + if (sourceClusterId === bestCluster.id && targetClusterId !== bestCluster.id || targetClusterId === bestCluster.id && sourceClusterId !== bestCluster.id) { + neighborClusterSumTot_1 = neighborClusterSumTot_1 + (edge2[weightPropertyName] || 1); + } + if (sourceClusterId === previousClusterId_1 && targetClusterId !== previousClusterId_1 || targetClusterId === previousClusterId_1 && sourceClusterId !== previousClusterId_1) { + selfClusterSumTot_1 = selfClusterSumTot_1 + (edge2[weightPropertyName] || 1); + } + }); + bestCluster.sumTot = neighborClusterSumTot_1; + selfCluster.sumTot = selfClusterSumTot_1; + } + }); + } + var newClusterIdMap = {}; + var clusterIdx = 0; + Object.keys(finalClusters).forEach(function(clusterId) { + var cluster = finalClusters[clusterId]; + if (!cluster.nodes || !cluster.nodes.length) { + delete finalClusters[clusterId]; + return; + } + var newId = String(clusterIdx + 1); + if (newId === clusterId) { + return; + } + cluster.id = newId; + cluster.nodes = cluster.nodes.map(function(item) { + return { + id: item.id, + clusterId: newId + }; + }); + finalClusters[newId] = cluster; + newClusterIdMap[clusterId] = newId; + delete finalClusters[clusterId]; + clusterIdx++; + }); + finalNodes.forEach(function(nodeInfo) { + var node = nodeInfo.node, clusterId = nodeInfo.clusterId; + node.clusterId = clusterId; + if (node.clusterId && newClusterIdMap[node.clusterId]) + node.clusterId = newClusterIdMap[node.clusterId]; + }); + var clusterEdges = []; + var clusterEdgeMap = {}; + edges.forEach(function(edge2) { + var source = edge2.source, target = edge2.target; + var weight = edge2[weightPropertyName] || 1; + var sourceClusterId = nodeMap[source].node.clusterId; + var targetClusterId = nodeMap[target].node.clusterId; + var newEdgeId = "".concat(sourceClusterId, "---").concat(targetClusterId); + if (clusterEdgeMap[newEdgeId]) { + clusterEdgeMap[newEdgeId].weight += weight; + clusterEdgeMap[newEdgeId].count++; + } else { + var newEdge = { + source: sourceClusterId, + target: targetClusterId, + weight, + count: 1 + }; + clusterEdgeMap[newEdgeId] = newEdge; + clusterEdges.push(newEdge); + } + }); + var clustersArray = []; + Object.keys(finalClusters).forEach(function(clusterId) { + clustersArray.push(finalClusters[clusterId]); + }); + return { + clusters: clustersArray, + clusterEdges + }; + }; + var _default2 = louvain3; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/structs/union-find.js +var require_union_find = __commonJS({ + "node_modules/@antv/algorithm/lib/structs/union-find.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var UnionFind2 = function() { + function UnionFind3(items) { + this.count = items.length; + this.parent = {}; + for (var _i = 0, items_1 = items; _i < items_1.length; _i++) { + var i4 = items_1[_i]; + this.parent[i4] = i4; + } + } + UnionFind3.prototype.find = function(item) { + while (this.parent[item] !== item) { + item = this.parent[item]; + } + return item; + }; + UnionFind3.prototype.union = function(a4, b10) { + var rootA = this.find(a4); + var rootB = this.find(b10); + if (rootA === rootB) + return; + if (rootA < rootB) { + if (this.parent[b10] !== b10) + this.union(this.parent[b10], a4); + this.parent[b10] = this.parent[a4]; + } else { + if (this.parent[a4] !== a4) + this.union(this.parent[a4], b10); + this.parent[a4] = this.parent[b10]; + } + }; + UnionFind3.prototype.connected = function(a4, b10) { + return this.find(a4) === this.find(b10); + }; + return UnionFind3; + }(); + var _default2 = UnionFind2; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/structs/binary-heap.js +var require_binary_heap = __commonJS({ + "node_modules/@antv/algorithm/lib/structs/binary-heap.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var defaultCompare3 = function defaultCompare4(a4, b10) { + return a4 - b10; + }; + var MinBinaryHeap2 = function() { + function MinBinaryHeap3(compareFn) { + if (compareFn === void 0) { + compareFn = defaultCompare3; + } + this.compareFn = compareFn; + this.list = []; + } + MinBinaryHeap3.prototype.getLeft = function(index2) { + return 2 * index2 + 1; + }; + MinBinaryHeap3.prototype.getRight = function(index2) { + return 2 * index2 + 2; + }; + MinBinaryHeap3.prototype.getParent = function(index2) { + if (index2 === 0) { + return null; + } + return Math.floor((index2 - 1) / 2); + }; + MinBinaryHeap3.prototype.isEmpty = function() { + return this.list.length <= 0; + }; + MinBinaryHeap3.prototype.top = function() { + return this.isEmpty() ? void 0 : this.list[0]; + }; + MinBinaryHeap3.prototype.delMin = function() { + var top = this.top(); + var bottom = this.list.pop(); + if (this.list.length > 0) { + this.list[0] = bottom; + this.moveDown(0); + } + return top; + }; + MinBinaryHeap3.prototype.insert = function(value2) { + if (value2 !== null) { + this.list.push(value2); + var index2 = this.list.length - 1; + this.moveUp(index2); + return true; + } + return false; + }; + MinBinaryHeap3.prototype.moveUp = function(index2) { + var parent = this.getParent(index2); + while (index2 && index2 > 0 && this.compareFn(this.list[parent], this.list[index2]) > 0) { + var tmp = this.list[parent]; + this.list[parent] = this.list[index2]; + this.list[index2] = tmp; + index2 = parent; + parent = this.getParent(index2); + } + }; + MinBinaryHeap3.prototype.moveDown = function(index2) { + var _a6; + var element = index2; + var left2 = this.getLeft(index2); + var right2 = this.getRight(index2); + var size14 = this.list.length; + if (left2 !== null && left2 < size14 && this.compareFn(this.list[element], this.list[left2]) > 0) { + element = left2; + } else if (right2 !== null && right2 < size14 && this.compareFn(this.list[element], this.list[right2]) > 0) { + element = right2; + } + if (index2 !== element) { + _a6 = [this.list[element], this.list[index2]], this.list[index2] = _a6[0], this.list[element] = _a6[1]; + this.moveDown(element); + } + }; + return MinBinaryHeap3; + }(); + var _default2 = MinBinaryHeap2; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/mts.js +var require_mts = __commonJS({ + "node_modules/@antv/algorithm/lib/mts.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _unionFind = _interopRequireDefault(require_union_find()); + var _binaryHeap = _interopRequireDefault(require_binary_heap()); + var _util = require_util(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var primMST3 = function primMST4(graphData, weight) { + var selectedEdges = []; + var _a6 = graphData.nodes, nodes = _a6 === void 0 ? [] : _a6, _b = graphData.edges, edges = _b === void 0 ? [] : _b; + if (nodes.length === 0) { + return selectedEdges; + } + var currNode = nodes[0]; + var visited = new Set(); + visited.add(currNode); + var compareWeight = function compareWeight2(a4, b10) { + if (weight) { + return a4.weight - b10.weight; + } + return 0; + }; + var edgeQueue = new _binaryHeap.default(compareWeight); + (0, _util.getEdgesByNodeId)(currNode.id, edges).forEach(function(edge2) { + edgeQueue.insert(edge2); + }); + while (!edgeQueue.isEmpty()) { + var currEdge = edgeQueue.delMin(); + var source = currEdge.source; + var target = currEdge.target; + if (visited.has(source) && visited.has(target)) + continue; + selectedEdges.push(currEdge); + if (!visited.has(source)) { + visited.add(source); + (0, _util.getEdgesByNodeId)(source, edges).forEach(function(edge2) { + edgeQueue.insert(edge2); + }); + } + if (!visited.has(target)) { + visited.add(target); + (0, _util.getEdgesByNodeId)(target, edges).forEach(function(edge2) { + edgeQueue.insert(edge2); + }); + } + } + return selectedEdges; + }; + var kruskalMST3 = function kruskalMST4(graphData, weight) { + var selectedEdges = []; + var _a6 = graphData.nodes, nodes = _a6 === void 0 ? [] : _a6, _b = graphData.edges, edges = _b === void 0 ? [] : _b; + if (nodes.length === 0) { + return selectedEdges; + } + var weightEdges = edges.map(function(edge2) { + return edge2; + }); + if (weight) { + weightEdges.sort(function(a4, b10) { + return a4.weight - b10.weight; + }); + } + var disjointSet = new _unionFind.default(nodes.map(function(n3) { + return n3.id; + })); + while (weightEdges.length > 0) { + var curEdge = weightEdges.shift(); + var source = curEdge.source; + var target = curEdge.target; + if (!disjointSet.connected(source, target)) { + selectedEdges.push(curEdge); + disjointSet.union(source, target); + } + } + return selectedEdges; + }; + var minimumSpanningTree3 = function minimumSpanningTree4(graphData, weight, algo) { + var algos = { + prim: primMST3, + kruskal: kruskalMST3 + }; + if (!algo) + return kruskalMST3(graphData, weight); + return algos[algo](graphData, weight); + }; + var _default2 = minimumSpanningTree3; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/pageRank.js +var require_pageRank = __commonJS({ + "node_modules/@antv/algorithm/lib/pageRank.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _degree = _interopRequireDefault(require_degree()); + var _util = require_util(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var pageRank3 = function pageRank4(graphData, epsilon, linkProb) { + if (typeof epsilon !== "number") + epsilon = 1e-6; + if (typeof linkProb !== "number") + linkProb = 0.85; + var distance15 = 1; + var leakedRank = 0; + var maxIterations = 1e3; + var _a6 = graphData.nodes, nodes = _a6 === void 0 ? [] : _a6, _b = graphData.edges, edges = _b === void 0 ? [] : _b; + var nodesCount = nodes.length; + var currentRank; + var curRanks = {}; + var prevRanks = {}; + for (var j4 = 0; j4 < nodesCount; ++j4) { + var node = nodes[j4]; + var nodeId = node.id; + curRanks[nodeId] = 1 / nodesCount; + prevRanks[nodeId] = 1 / nodesCount; + } + var nodeDegree = (0, _degree.default)(graphData); + while (maxIterations > 0 && distance15 > epsilon) { + leakedRank = 0; + for (var j4 = 0; j4 < nodesCount; ++j4) { + var node = nodes[j4]; + var nodeId = node.id; + currentRank = 0; + if (nodeDegree[node.id].inDegree === 0) { + curRanks[nodeId] = 0; + } else { + var neighbors = (0, _util.getNeighbors)(nodeId, edges, "source"); + for (var i4 = 0; i4 < neighbors.length; ++i4) { + var neighbor = neighbors[i4]; + var outDegree = nodeDegree[neighbor].outDegree; + if (outDegree > 0) + currentRank += prevRanks[neighbor] / outDegree; + } + curRanks[nodeId] = linkProb * currentRank; + leakedRank += curRanks[nodeId]; + } + } + leakedRank = (1 - leakedRank) / nodesCount; + distance15 = 0; + for (var j4 = 0; j4 < nodesCount; ++j4) { + var node = nodes[j4]; + var nodeId = node.id; + currentRank = curRanks[nodeId] + leakedRank; + distance15 += Math.abs(currentRank - prevRanks[nodeId]); + prevRanks[nodeId] = currentRank; + } + maxIterations -= 1; + } + return prevRanks; + }; + var _default2 = pageRank3; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/gSpan/struct.js +var require_struct = __commonJS({ + "node_modules/@antv/algorithm/lib/gSpan/struct.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.VACANT_NODE_LABEL = exports.VACANT_NODE_ID = exports.VACANT_GRAPH_ID = exports.VACANT_EDGE_LABEL = exports.VACANT_EDGE_ID = exports.Node = exports.Graph = exports.Edge = exports.AUTO_EDGE_ID = void 0; + var VACANT_EDGE_ID2 = -1; + exports.VACANT_EDGE_ID = VACANT_EDGE_ID2; + var VACANT_NODE_ID2 = -1; + exports.VACANT_NODE_ID = VACANT_NODE_ID2; + var VACANT_EDGE_LABEL2 = "-1"; + exports.VACANT_EDGE_LABEL = VACANT_EDGE_LABEL2; + var VACANT_NODE_LABEL2 = "-1"; + exports.VACANT_NODE_LABEL = VACANT_NODE_LABEL2; + var VACANT_GRAPH_ID2 = -1; + exports.VACANT_GRAPH_ID = VACANT_GRAPH_ID2; + var AUTO_EDGE_ID = "-1"; + exports.AUTO_EDGE_ID = AUTO_EDGE_ID; + var Edge4 = function() { + function Edge5(id, from, to, label17) { + if (id === void 0) { + id = VACANT_EDGE_ID2; + } + if (from === void 0) { + from = VACANT_NODE_ID2; + } + if (to === void 0) { + to = VACANT_NODE_ID2; + } + if (label17 === void 0) { + label17 = VACANT_EDGE_LABEL2; + } + this.id = id; + this.from = from; + this.to = to; + this.label = label17; + } + return Edge5; + }(); + exports.Edge = Edge4; + var Node5 = function() { + function Node6(id, label17) { + if (id === void 0) { + id = VACANT_NODE_ID2; + } + if (label17 === void 0) { + label17 = VACANT_NODE_LABEL2; + } + this.id = id; + this.label = label17; + this.edges = []; + this.edgeMap = {}; + } + Node6.prototype.addEdge = function(edge2) { + this.edges.push(edge2); + this.edgeMap[edge2.id] = edge2; + }; + return Node6; + }(); + exports.Node = Node5; + var Graph10 = function() { + function Graph11(id, edgeIdAutoIncrease, directed) { + if (id === void 0) { + id = VACANT_NODE_ID2; + } + if (edgeIdAutoIncrease === void 0) { + edgeIdAutoIncrease = true; + } + if (directed === void 0) { + directed = false; + } + this.id = id; + this.edgeIdAutoIncrease = edgeIdAutoIncrease; + this.edges = []; + this.nodes = []; + this.nodeMap = {}; + this.edgeMap = {}; + this.nodeLabelMap = {}; + this.edgeLabelMap = {}; + this.counter = 0; + this.directed = directed; + } + Graph11.prototype.getNodeNum = function() { + return this.nodes.length; + }; + Graph11.prototype.addNode = function(id, label17) { + if (this.nodeMap[id]) + return; + var node = new Node5(id, label17); + this.nodes.push(node); + this.nodeMap[id] = node; + if (!this.nodeLabelMap[label17]) + this.nodeLabelMap[label17] = []; + this.nodeLabelMap[label17].push(id); + }; + Graph11.prototype.addEdge = function(id, from, to, label17) { + if (this.edgeIdAutoIncrease || id === void 0) + id = this.counter++; + if (this.nodeMap[from] && this.nodeMap[to] && this.nodeMap[to].edgeMap[id]) + return; + var edge2 = new Edge4(id, from, to, label17); + this.edges.push(edge2); + this.edgeMap[id] = edge2; + this.nodeMap[from].addEdge(edge2); + if (!this.edgeLabelMap[label17]) + this.edgeLabelMap[label17] = []; + this.edgeLabelMap[label17].push(edge2); + if (!this.directed) { + var rEdge = new Edge4(id, to, from, label17); + this.nodeMap[to].addEdge(rEdge); + this.edgeLabelMap[label17].push(rEdge); + } + }; + return Graph11; + }(); + exports.Graph = Graph10; + } +}); + +// node_modules/@antv/algorithm/lib/gSpan/gSpan.js +var require_gSpan = __commonJS({ + "node_modules/@antv/algorithm/lib/gSpan/gSpan.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _util = require_lib(); + var _struct = require_struct(); + var DFSedge2 = function() { + function DFSedge3(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) { + this.fromNode = fromNode; + this.toNode = toNode; + this.nodeEdgeNodeLabel = { + nodeLabel1: fromNodeLabel || _struct.VACANT_NODE_LABEL, + edgeLabel: edgeLabel || _struct.VACANT_EDGE_LABEL, + nodeLabel2: toNodeLabel || _struct.VACANT_NODE_LABEL + }; + } + DFSedge3.prototype.equalTo = function(other2) { + return this.fromNode === other2.formNode && this.toNode === other2.toNode && this.nodeEdgeNodeLabel === other2.nodeEdgeNodeLabel; + }; + DFSedge3.prototype.notEqualTo = function(other2) { + return !this.equalTo(other2); + }; + return DFSedge3; + }(); + var DFScode2 = function() { + function DFScode3() { + this.rmpath = []; + this.dfsEdgeList = []; + } + DFScode3.prototype.equalTo = function(other2) { + var aLength = this.dfsEdgeList.length; + var bLength = other2.length; + if (aLength !== bLength) + return false; + for (var i4 = 0; i4 < aLength; i4++) { + if (this.dfsEdgeList[i4] !== other2[i4]) + return false; + } + return true; + }; + DFScode3.prototype.notEqualTo = function(other2) { + return !this.equalTo(other2); + }; + DFScode3.prototype.pushBack = function(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) { + this.dfsEdgeList.push(new DFSedge2(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel)); + return this.dfsEdgeList; + }; + DFScode3.prototype.toGraph = function(graphId, directed) { + if (graphId === void 0) { + graphId = _struct.VACANT_GRAPH_ID; + } + if (directed === void 0) { + directed = false; + } + var graph = new _struct.Graph(graphId, true, directed); + this.dfsEdgeList.forEach(function(dfsEdge) { + var fromNodeId = dfsEdge.fromNode; + var toNodeId = dfsEdge.toNode; + var _a6 = dfsEdge.nodeEdgeNodeLabel, nodeLabel1 = _a6.nodeLabel1, edgeLabel = _a6.edgeLabel, nodeLabel2 = _a6.nodeLabel2; + if (nodeLabel1 !== _struct.VACANT_NODE_LABEL) + graph.addNode(fromNodeId, nodeLabel1); + if (nodeLabel2 !== _struct.VACANT_NODE_LABEL) + graph.addNode(toNodeId, nodeLabel2); + if (nodeLabel1 !== _struct.VACANT_NODE_LABEL && nodeLabel2 !== nodeLabel1) + graph.addEdge(void 0, fromNodeId, toNodeId, edgeLabel); + }); + return graph; + }; + DFScode3.prototype.buildRmpath = function() { + this.rmpath = []; + var oldFrom = void 0; + var selfLength = this.dfsEdgeList.length; + for (var i4 = selfLength - 1; i4 >= 0; i4--) { + var dfsEdge = this.dfsEdgeList[i4]; + var fromNodeIdx = dfsEdge.fromNode; + var toNodeIdx = dfsEdge.toNode; + if (fromNodeIdx < toNodeIdx && (oldFrom === void 0 || toNodeIdx === oldFrom)) { + this.rmpath.push(i4); + oldFrom = fromNodeIdx; + } + } + return this.rmpath; + }; + DFScode3.prototype.getNodeNum = function() { + var nodeMap = {}; + this.dfsEdgeList.forEach(function(dfsEdge) { + if (!nodeMap[dfsEdge.fromNode]) + nodeMap[dfsEdge.fromNode] = true; + if (!nodeMap[dfsEdge.toNode]) + nodeMap[dfsEdge.toNode] = true; + }); + return Object.keys(nodeMap).length; + }; + return DFScode3; + }(); + var History2 = function() { + function History3(pdfs) { + this.his = {}; + this.nodesUsed = {}; + this.edgesUsed = {}; + this.edges = []; + if (!pdfs) + return; + while (pdfs) { + var e4 = pdfs.edge; + this.edges.push(e4); + this.nodesUsed[e4.from] = 1; + this.nodesUsed[e4.to] = 1; + this.edgesUsed[e4.id] = 1; + pdfs = pdfs.preNode; + } + this.edges = this.edges.reverse(); + } + History3.prototype.hasNode = function(node) { + return this.nodesUsed[node.id] === 1; + }; + History3.prototype.hasEdge = function(edge2) { + return this.edgesUsed[edge2.id] === 1; + }; + return History3; + }(); + var GSpan2 = function() { + function GSpan3(_a6) { + var graphs8 = _a6.graphs, _b = _a6.minSupport, minSupport = _b === void 0 ? 2 : _b, _c = _a6.minNodeNum, minNodeNum = _c === void 0 ? 1 : _c, _d = _a6.maxNodeNum, maxNodeNum = _d === void 0 ? 4 : _d, _e = _a6.top, top = _e === void 0 ? 10 : _e, _f = _a6.directed, directed = _f === void 0 ? false : _f, _g = _a6.verbose, verbose = _g === void 0 ? false : _g; + this.graphs = graphs8; + this.dfsCode = new DFScode2(); + this.support = 0; + this.frequentSize1Subgraphs = []; + this.frequentSubgraphs = []; + this.minSupport = minSupport; + this.top = top; + this.directed = directed; + this.counter = 0; + this.maxNodeNum = maxNodeNum; + this.minNodeNum = minNodeNum; + this.verbose = verbose; + if (this.maxNodeNum < this.minNodeNum) + this.maxNodeNum = this.minNodeNum; + this.reportDF = []; + } + GSpan3.prototype.findForwardRootEdges = function(graph, fromNode) { + var _this = this; + var result = []; + var nodeMap = graph.nodeMap; + fromNode.edges.forEach(function(edge2) { + if (_this.directed || fromNode.label <= nodeMap[edge2.to].label) + result.push(edge2); + }); + return result; + }; + GSpan3.prototype.findBackwardEdge = function(graph, edge1, edge2, history) { + if (!this.directed && edge1 === edge2) + return null; + var nodeMap = graph.nodeMap; + var edge2To = nodeMap[edge2.to]; + var edge2ToEdges = edge2To.edges; + var edgeLength = edge2ToEdges.length; + for (var i4 = 0; i4 < edgeLength; i4++) { + var edge3 = edge2ToEdges[i4]; + if (history.hasEdge(edge3) || edge3.to !== edge1.from) + continue; + if (!this.directed) { + if (edge1.label < edge3.label || edge1.label === edge3.label && nodeMap[edge1.to].label <= nodeMap[edge2.to].label) { + return edge3; + } + } else { + if (nodeMap[edge1.from].label < nodeMap[edge2.to].label || nodeMap[edge1.from].label === nodeMap[edge2.to].label && edge1.label <= edge3.label) { + return edge3; + } + } + } + return null; + }; + GSpan3.prototype.findForwardPureEdges = function(graph, rightmostEdge, minNodeLabel, history) { + var result = []; + var rightmostEdgeToId = rightmostEdge.to; + var edges = graph.nodeMap[rightmostEdgeToId].edges; + var edgeLength = edges.length; + for (var i4 = 0; i4 < edgeLength; i4++) { + var edge2 = edges[i4]; + var toNode = graph.nodeMap[edge2.to]; + if (minNodeLabel <= toNode.label && !history.hasNode(toNode)) { + result.push(edge2); + } + } + return result; + }; + GSpan3.prototype.findForwardRmpathEdges = function(graph, rightmostEdge, minNodeLabel, history) { + var result = []; + var nodeMap = graph.nodeMap; + var toNodeLabel = nodeMap[rightmostEdge.to].label; + var fromNode = nodeMap[rightmostEdge.from]; + var edges = fromNode.edges; + var edgeLength = edges.length; + for (var i4 = 0; i4 < edgeLength; i4++) { + var edge2 = edges[i4]; + var newToNodeLabel = nodeMap[edge2.to].label; + if (rightmostEdge.to === edge2.to || minNodeLabel > newToNodeLabel || history.hasNode(nodeMap[edge2.to])) { + continue; + } + if (rightmostEdge.label < edge2.label || rightmostEdge.label === edge2.label && toNodeLabel <= newToNodeLabel) { + result.push(edge2); + } + } + return result; + }; + GSpan3.prototype.getSupport = function(projected) { + var graphMap = {}; + projected.forEach(function(pro) { + if (!graphMap[pro.graphId]) + graphMap[pro.graphId] = true; + }); + return Object.keys(graphMap).length; + }; + GSpan3.prototype.findMinLabel = function(obj) { + var minLabel = void 0; + Object.keys(obj).forEach(function(nodeEdgeNodeLabel) { + var _a6 = obj[nodeEdgeNodeLabel], nodeLabel1 = _a6.nodeLabel1, edgeLabel = _a6.edgeLabel, nodeLabel2 = _a6.nodeLabel2; + if (!minLabel) { + minLabel = { + nodeLabel1, + edgeLabel, + nodeLabel2 + }; + return; + } + if (nodeLabel1 < minLabel.nodeLabel1 || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel < minLabel.edgeLabel || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel === minLabel.edgeLabel && nodeLabel2 < minLabel.nodeLabel2) { + minLabel = { + nodeLabel1, + edgeLabel, + nodeLabel2 + }; + } + }); + return minLabel; + }; + GSpan3.prototype.isMin = function() { + var _this = this; + var dfsCode = this.dfsCode; + if (this.verbose) + console.log("isMin checking", dfsCode); + if (dfsCode.dfsEdgeList.length === 1) + return true; + var directed = this.directed; + var graph = dfsCode.toGraph(_struct.VACANT_GRAPH_ID, directed); + var nodeMap = graph.nodeMap; + var dfsCodeMin = new DFScode2(); + var root = {}; + graph.nodes.forEach(function(node) { + var forwardEdges = _this.findForwardRootEdges(graph, node); + forwardEdges.forEach(function(edge2) { + var otherNode = nodeMap[edge2.to]; + var nodeEdgeNodeLabel = "".concat(node.label, "-").concat(edge2.label, "-").concat(otherNode.label); + if (!root[nodeEdgeNodeLabel]) + root[nodeEdgeNodeLabel] = { + projected: [], + nodeLabel1: node.label, + edgeLabel: edge2.label, + nodeLabel2: otherNode.label + }; + var pdfs = { + graphId: graph.id, + edge: edge2, + preNode: null + }; + root[nodeEdgeNodeLabel].projected.push(pdfs); + }); + }); + var minLabel = this.findMinLabel(root); + if (!minLabel) + return; + dfsCodeMin.dfsEdgeList.push(new DFSedge2(0, 1, minLabel.nodeLabel1, minLabel.edgeLabel, minLabel.nodeLabel2)); + var projectIsMin = function projectIsMin2(projected) { + var rmpath = dfsCodeMin.buildRmpath(); + var minNodeLabel = dfsCodeMin.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1; + var maxToC = dfsCodeMin.dfsEdgeList[rmpath[0]].toNode; + var backwardRoot = {}; + var flag = false, newTo = 0; + var end2 = directed ? -1 : 0; + var _loop_1 = function _loop_12(i5) { + if (flag) + return "break"; + projected.forEach(function(p4) { + var history = new History2(p4); + var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i5]], history.edges[rmpath[0]], history); + if (backwardEdge) { + if (!backwardRoot[backwardEdge.label]) { + backwardRoot[backwardEdge.label] = { + projected: [], + edgeLabel: backwardEdge.label + }; + } + backwardRoot[backwardEdge.label].projected.push({ + graphId: graph.id, + edge: backwardRoot, + preNode: p4 + }); + newTo = dfsCodeMin.dfsEdgeList[rmpath[i5]].fromNode; + flag = true; + } + }); + }; + for (var i4 = rmpath.length - 1; i4 > end2; i4--) { + var state_1 = _loop_1(i4); + if (state_1 === "break") + break; + } + if (flag) { + var minBackwardEdgeLabel = _this.findMinLabel(backwardRoot); + dfsCodeMin.dfsEdgeList.push(new DFSedge2(maxToC, newTo, _struct.VACANT_NODE_LABEL, minBackwardEdgeLabel.edgeLabel, _struct.VACANT_NODE_LABEL)); + var idx_1 = dfsCodeMin.dfsEdgeList.length - 1; + if (_this.dfsCode.dfsEdgeList[idx_1] !== dfsCodeMin.dfsEdgeList[idx_1]) + return false; + return projectIsMin2(backwardRoot[minBackwardEdgeLabel.edgeLabel].projected); + } + var forwardRoot = {}; + flag = false; + var newFrom = 0; + projected.forEach(function(p4) { + var history = new History2(p4); + var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history); + if (forwardPureEdges.length > 0) { + flag = true; + newFrom = maxToC; + forwardPureEdges.forEach(function(edge2) { + var key2 = "".concat(edge2.label, "-").concat(nodeMap[edge2.to].label); + if (!forwardRoot[key2]) + forwardRoot[key2] = { + projected: [], + edgeLabel: edge2.label, + nodeLabel2: nodeMap[edge2.to].label + }; + forwardRoot[key2].projected.push({ + graphId: graph.id, + edge: edge2, + preNode: p4 + }); + }); + } + }); + var pathLength = rmpath.length; + var _loop_2 = function _loop_22(i5) { + if (flag) + return "break"; + var value2 = rmpath[i5]; + projected.forEach(function(p4) { + var history = new History2(p4); + var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[value2], minNodeLabel, history); + if (forwardRmpathEdges.length > 0) { + flag = true; + newFrom = dfsCodeMin.dfsEdgeList[value2].fromNode; + forwardRmpathEdges.forEach(function(edge2) { + var key2 = "".concat(edge2.label, "-").concat(nodeMap[edge2.to].label); + if (!forwardRoot[key2]) + forwardRoot[key2] = { + projected: [], + edgeLabel: edge2.label, + nodeLabel2: nodeMap[edge2.to].label + }; + forwardRoot[key2].projected.push({ + graphId: graph.id, + edge: edge2, + preNode: p4 + }); + }); + } + }); + }; + for (var i4 = 0; i4 < pathLength; i4++) { + var state_2 = _loop_2(i4); + if (state_2 === "break") + break; + } + if (!flag) + return true; + var forwardMinEdgeNodeLabel = _this.findMinLabel(forwardRoot); + dfsCodeMin.dfsEdgeList.push(new DFSedge2(newFrom, maxToC + 1, _struct.VACANT_NODE_LABEL, forwardMinEdgeNodeLabel.edgeLabel, forwardMinEdgeNodeLabel.nodeLabel2)); + var idx = dfsCodeMin.dfsEdgeList.length - 1; + if (dfsCode.dfsEdgeList[idx] !== dfsCodeMin.dfsEdgeList[idx]) + return false; + return projectIsMin2(forwardRoot["".concat(forwardMinEdgeNodeLabel.edgeLabel, "-").concat(forwardMinEdgeNodeLabel.nodeLabel2)].projected); + }; + var key = "".concat(minLabel.nodeLabel1, "-").concat(minLabel.edgeLabel, "-").concat(minLabel.nodeLabel2); + return projectIsMin(root[key].projected); + }; + GSpan3.prototype.report = function() { + if (this.dfsCode.getNodeNum() < this.minNodeNum) + return; + this.counter++; + var graph = this.dfsCode.toGraph(this.counter, this.directed); + this.frequentSubgraphs.push((0, _util.clone)(graph)); + }; + GSpan3.prototype.subGraphMining = function(projected) { + var _this = this; + var support = this.getSupport(projected); + if (support < this.minSupport) + return; + if (!this.isMin()) + return; + this.report(); + var nodeNum = this.dfsCode.getNodeNum(); + var rmpath = this.dfsCode.buildRmpath(); + var maxToC = this.dfsCode.dfsEdgeList[rmpath[0]].toNode; + var minNodeLabel = this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1; + var forwardRoot = {}; + var backwardRoot = {}; + projected.forEach(function(p4) { + var graph = _this.graphs[p4.graphId]; + var nodeMap = graph.nodeMap; + var history = new History2(p4); + for (var i4 = rmpath.length - 1; i4 >= 0; i4--) { + var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i4]], history.edges[rmpath[0]], history); + if (backwardEdge) { + var key = "".concat(_this.dfsCode.dfsEdgeList[rmpath[i4]].fromNode, "-").concat(backwardEdge.label); + if (!backwardRoot[key]) + backwardRoot[key] = { + projected: [], + toNodeId: _this.dfsCode.dfsEdgeList[rmpath[i4]].fromNode, + edgeLabel: backwardEdge.label + }; + backwardRoot[key].projected.push({ + graphId: p4.graphId, + edge: backwardEdge, + preNode: p4 + }); + } + } + if (nodeNum >= _this.maxNodeNum) + return; + var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history); + forwardPureEdges.forEach(function(edge2) { + var key2 = "".concat(maxToC, "-").concat(edge2.label, "-").concat(nodeMap[edge2.to].label); + if (!forwardRoot[key2]) + forwardRoot[key2] = { + projected: [], + fromNodeId: maxToC, + edgeLabel: edge2.label, + nodeLabel2: nodeMap[edge2.to].label + }; + forwardRoot[key2].projected.push({ + graphId: p4.graphId, + edge: edge2, + preNode: p4 + }); + }); + var _loop_3 = function _loop_32(i5) { + var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[rmpath[i5]], minNodeLabel, history); + forwardRmpathEdges.forEach(function(edge2) { + var key2 = "".concat(_this.dfsCode.dfsEdgeList[rmpath[i5]].fromNode, "-").concat(edge2.label, "-").concat(nodeMap[edge2.to].label); + if (!forwardRoot[key2]) + forwardRoot[key2] = { + projected: [], + fromNodeId: _this.dfsCode.dfsEdgeList[rmpath[i5]].fromNode, + edgeLabel: edge2.label, + nodeLabel2: nodeMap[edge2.to].label + }; + forwardRoot[key2].projected.push({ + graphId: p4.graphId, + edge: edge2, + preNode: p4 + }); + }); + }; + for (var i4 = 0; i4 < rmpath.length; i4++) { + _loop_3(i4); + } + }); + Object.keys(backwardRoot).forEach(function(key) { + var _a6 = backwardRoot[key], toNodeId = _a6.toNodeId, edgeLabel = _a6.edgeLabel; + _this.dfsCode.dfsEdgeList.push(new DFSedge2(maxToC, toNodeId, "-1", edgeLabel, "-1")); + _this.subGraphMining(backwardRoot[key].projected); + _this.dfsCode.dfsEdgeList.pop(); + }); + Object.keys(forwardRoot).forEach(function(key) { + var _a6 = forwardRoot[key], fromNodeId = _a6.fromNodeId, edgeLabel = _a6.edgeLabel, nodeLabel2 = _a6.nodeLabel2; + _this.dfsCode.dfsEdgeList.push(new DFSedge2(fromNodeId, maxToC + 1, _struct.VACANT_NODE_LABEL, edgeLabel, nodeLabel2)); + _this.subGraphMining(forwardRoot[key].projected); + _this.dfsCode.dfsEdgeList.pop(); + }); + }; + GSpan3.prototype.generate1EdgeFrequentSubGraphs = function() { + var graphs8 = this.graphs; + var directed = this.directed; + var minSupport = this.minSupport; + var frequentSize1Subgraphs = this.frequentSize1Subgraphs; + var nodeLabelCounter = {}, nodeEdgeNodeCounter = {}; + var nodeLableCounted = {}; + var nodeEdgeNodeLabelCounted = {}; + Object.keys(graphs8).forEach(function(key) { + var graph = graphs8[key]; + var nodeMap = graph.nodeMap; + graph.nodes.forEach(function(node, i4) { + var nodeLabel = node.label; + var graphNodeKey = "".concat(key, "-").concat(nodeLabel); + if (!nodeLableCounted[graphNodeKey]) { + var counter = nodeLabelCounter[nodeLabel] || 0; + counter++; + nodeLabelCounter[nodeLabel] = counter; + } + nodeLableCounted[graphNodeKey] = { + graphKey: key, + label: nodeLabel + }; + node.edges.forEach(function(edge2) { + var nodeLabel1 = nodeLabel; + var nodeLabel2 = nodeMap[edge2.to].label; + if (!directed && nodeLabel1 > nodeLabel2) { + var tmp = nodeLabel2; + nodeLabel2 = nodeLabel1; + nodeLabel1 = tmp; + } + var edgeLabel = edge2.label; + var graphNodeEdgeNodeKey = "".concat(key, "-").concat(nodeLabel1, "-").concat(edgeLabel, "-").concat(nodeLabel2); + var nodeEdgeNodeKey = "".concat(nodeLabel1, "-").concat(edgeLabel, "-").concat(nodeLabel2); + if (!nodeEdgeNodeCounter[nodeEdgeNodeKey]) { + var counter2 = nodeEdgeNodeCounter[nodeEdgeNodeKey] || 0; + counter2++; + nodeEdgeNodeCounter[nodeEdgeNodeKey] = counter2; + } + nodeEdgeNodeLabelCounted[graphNodeEdgeNodeKey] = { + graphId: key, + nodeLabel1, + edgeLabel, + nodeLabel2 + }; + }); + }); + }); + Object.keys(nodeLabelCounter).forEach(function(label17) { + var count2 = nodeLabelCounter[label17]; + if (count2 < minSupport) + return; + var g4 = { + nodes: [], + edges: [] + }; + g4.nodes.push({ + id: "0", + label: label17 + }); + frequentSize1Subgraphs.push(g4); + }); + return frequentSize1Subgraphs; + }; + GSpan3.prototype.run = function() { + var _this = this; + this.frequentSize1Subgraphs = this.generate1EdgeFrequentSubGraphs(); + if (this.maxNodeNum < 2) + return; + var graphs8 = this.graphs; + var directed = this.directed; + var root = {}; + Object.keys(graphs8).forEach(function(graphId) { + var graph = graphs8[graphId]; + var nodeMap = graph.nodeMap; + graph.nodes.forEach(function(node) { + var forwardRootEdges = _this.findForwardRootEdges(graph, node); + forwardRootEdges.forEach(function(edge2) { + var toNode = nodeMap[edge2.to]; + var nodeEdgeNodeLabel = "".concat(node.label, "-").concat(edge2.label, "-").concat(toNode.label); + if (!root[nodeEdgeNodeLabel]) + root[nodeEdgeNodeLabel] = { + projected: [], + nodeLabel1: node.label, + edgeLabel: edge2.label, + nodeLabel2: toNode.label + }; + var pdfs = { + graphId, + edge: edge2, + preNode: null + }; + root[nodeEdgeNodeLabel].projected.push(pdfs); + }); + }); + }); + Object.keys(root).forEach(function(nodeEdgeNodeLabel) { + var _a6 = root[nodeEdgeNodeLabel], projected = _a6.projected, nodeLabel1 = _a6.nodeLabel1, edgeLabel = _a6.edgeLabel, nodeLabel2 = _a6.nodeLabel2; + _this.dfsCode.dfsEdgeList.push(new DFSedge2(0, 1, nodeLabel1, edgeLabel, nodeLabel2)); + _this.subGraphMining(projected); + _this.dfsCode.dfsEdgeList.pop(); + }); + }; + return GSpan3; + }(); + var formatGraphs3 = function formatGraphs4(graphs8, directed, nodeLabelProp, edgeLabelProp) { + var result = {}; + Object.keys(graphs8).forEach(function(key, i4) { + var graph = graphs8[key]; + var fGraph = new _struct.Graph(i4, true, directed); + var nodeIdxMap = {}; + graph.nodes.forEach(function(node, j4) { + fGraph.addNode(j4, node[nodeLabelProp]); + nodeIdxMap[node.id] = j4; + }); + graph.edges.forEach(function(edge2, k4) { + var sourceIdx = nodeIdxMap[edge2.source]; + var targetIdx = nodeIdxMap[edge2.target]; + fGraph.addEdge(-1, sourceIdx, targetIdx, edge2[edgeLabelProp]); + }); + if (fGraph && fGraph.getNodeNum()) + result[fGraph.id] = fGraph; + }); + return result; + }; + var toGraphDatas3 = function toGraphDatas4(graphs8, nodeLabelProp, edgeLabelProp) { + var result = []; + graphs8.forEach(function(graph) { + var graphData = { + nodes: [], + edges: [] + }; + graph.nodes.forEach(function(node) { + var _a6; + graphData.nodes.push((_a6 = { + id: "".concat(node.id) + }, _a6[nodeLabelProp] = node.label, _a6)); + }); + graph.edges.forEach(function(edge2) { + var _a6; + graphData.edges.push((_a6 = { + source: "".concat(edge2.from), + target: "".concat(edge2.to) + }, _a6[edgeLabelProp] = edge2.label, _a6)); + }); + result.push(graphData); + }); + return result; + }; + var DEFAULT_LABEL_NAME2 = "cluster"; + var gSpan3 = function gSpan4(params) { + var graphs8 = params.graphs, _a6 = params.directed, directed = _a6 === void 0 ? false : _a6, _b = params.nodeLabelProp, nodeLabelProp = _b === void 0 ? DEFAULT_LABEL_NAME2 : _b, _c = params.edgeLabelProp, edgeLabelProp = _c === void 0 ? DEFAULT_LABEL_NAME2 : _c; + var formattedGraphs = formatGraphs3(graphs8, directed, nodeLabelProp, edgeLabelProp); + var minSupport = params.minSupport, maxNodeNum = params.maxNodeNum, minNodeNum = params.minNodeNum, verbose = params.verbose, top = params.top; + var algoParams = { + graphs: formattedGraphs, + minSupport, + maxNodeNum, + minNodeNum, + top, + verbose, + directed + }; + var calculator = new GSpan2(algoParams); + calculator.run(); + var result = toGraphDatas3(calculator.frequentSubgraphs, nodeLabelProp, edgeLabelProp); + return result; + }; + var _default2 = gSpan3; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/gaddi.js +var require_gaddi = __commonJS({ + "node_modules/@antv/algorithm/lib/gaddi.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _tslib = require_tslib(); + var _floydWarshall = _interopRequireDefault(require_floydWarshall()); + var _gSpan = _interopRequireDefault(require_gSpan()); + var _dijkstra = _interopRequireDefault(require_dijkstra()); + var _util = require_util(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var findKNeighborUnits3 = function findKNeighborUnits4(graphData, spm, nodeLabelProp, k4) { + if (nodeLabelProp === void 0) { + nodeLabelProp = "cluster"; + } + if (k4 === void 0) { + k4 = 2; + } + var units = []; + var nodes = graphData.nodes; + spm.forEach(function(row, i4) { + units.push(findKNeighborUnit3(nodes, row, i4, nodeLabelProp, k4)); + }); + return units; + }; + var findKNeighborUnit3 = function findKNeighborUnit4(nodes, row, i4, nodeLabelProp, k4) { + var unitNodeIdxs = [i4]; + var neighbors = []; + var labelCountMap = {}; + row.forEach(function(v3, j4) { + if (v3 <= k4 && i4 !== j4) { + unitNodeIdxs.push(j4); + neighbors.push(nodes[j4]); + var label17 = nodes[j4][nodeLabelProp]; + if (!labelCountMap[label17]) + labelCountMap[label17] = { + count: 1, + dists: [v3] + }; + else { + labelCountMap[label17].count++; + labelCountMap[label17].dists.push(v3); + } + } + }); + Object.keys(labelCountMap).forEach(function(label17) { + labelCountMap[label17].dists = labelCountMap[label17].dists.sort(function(a4, b10) { + return a4 - b10; + }); + }); + return { + nodeIdx: i4, + nodeId: nodes[i4].id, + nodeIdxs: unitNodeIdxs, + neighbors, + neighborNum: unitNodeIdxs.length - 1, + nodeLabelCountMap: labelCountMap + }; + }; + var findNodePairsRandomly3 = function findNodePairsRandomly4(k4, nodeNum, maxNodePairNum, kNeighborUnits, spm) { + var nodePairNumEachNode = Math.ceil(maxNodePairNum / nodeNum); + var nodePairMap = {}; + var foundNodePairCount = 0; + kNeighborUnits.forEach(function(unit, i4) { + var nodePairForICount = 0; + var outerLoopCount = 0; + var neighbors = unit.nodeIdxs; + var neighborNum = unit.neighborNum - 1; + while (nodePairForICount < nodePairNumEachNode) { + var oidx = neighbors[1 + Math.floor(Math.random() * neighborNum)]; + var innerLoopCount = 0; + while (nodePairMap["".concat(i4, "-").concat(oidx)] || nodePairMap["".concat(oidx, "-").concat(i4)]) { + oidx = Math.floor(Math.random() * nodeNum); + innerLoopCount++; + if (innerLoopCount > 2 * nodeNum) + break; + } + if (innerLoopCount < 2 * nodeNum) { + nodePairMap["".concat(i4, "-").concat(oidx)] = { + start: i4, + end: oidx, + distance: spm[i4][oidx] + }; + nodePairForICount++; + foundNodePairCount++; + if (foundNodePairCount >= maxNodePairNum) + return nodePairMap; + } + outerLoopCount++; + if (outerLoopCount > 2 * nodeNum) + break; + } + if (nodePairForICount < nodePairNumEachNode) { + var gap = nodePairNumEachNode - nodePairForICount; + nodePairNumEachNode = (nodePairNumEachNode + gap) / (nodeNum - i4 - 1); + } + }); + return nodePairMap; + }; + var getIntersectNeighborInducedGraph3 = function getIntersectNeighborInducedGraph4(nodePairMap, neighborUnits, graphData, cachedInducedGraphMap) { + var nodes = graphData.nodes; + if (!cachedInducedGraphMap) + cachedInducedGraphMap = {}; + Object.keys(nodePairMap).forEach(function(key) { + var _a6, _b; + if (cachedInducedGraphMap && cachedInducedGraphMap[key]) + return; + cachedInducedGraphMap[key] = { + nodes: [], + edges: [] + }; + var pair = nodePairMap[key]; + var startUnitNodeIds = (_a6 = neighborUnits[pair.start]) === null || _a6 === void 0 ? void 0 : _a6.nodeIdxs; + var endUnitNodeIds = (_b = neighborUnits[pair.end]) === null || _b === void 0 ? void 0 : _b.nodeIdxs; + if (!startUnitNodeIds || !endUnitNodeIds) + return; + var endSet = new Set(endUnitNodeIds); + var intersect2 = startUnitNodeIds.filter(function(x6) { + return endSet.has(x6); + }); + if (!intersect2 || !intersect2.length) + return; + var intersectIdMap = {}; + var intersectLength = intersect2.length; + for (var i4 = 0; i4 < intersectLength; i4++) { + var node = nodes[intersect2[i4]]; + cachedInducedGraphMap[key].nodes.push(node); + intersectIdMap[node.id] = true; + } + graphData.edges.forEach(function(edge2) { + if (intersectIdMap[edge2.source] && intersectIdMap[edge2.target]) + cachedInducedGraphMap[key].edges.push(edge2); + }); + }); + return cachedInducedGraphMap; + }; + var getMatchedCount3 = function getMatchedCount4(graph, structure, nodeLabelProp, edgeLabelProp) { + var _a6, _b; + var nodeMap = {}; + graph.nodes.forEach(function(node) { + nodeMap[node.id] = node; + }); + var count2 = 0; + if (!((_a6 = structure === null || structure === void 0 ? void 0 : structure.edges) === null || _a6 === void 0 ? void 0 : _a6.length) || ((_b = structure === null || structure === void 0 ? void 0 : structure.nodes) === null || _b === void 0 ? void 0 : _b.length) < 2) + return 0; + graph.edges.forEach(function(e4) { + var sourceLabel = nodeMap[e4.source][nodeLabelProp]; + var targetLabel = nodeMap[e4.target][nodeLabelProp]; + var strNodeLabel1 = structure === null || structure === void 0 ? void 0 : structure.nodes[0][nodeLabelProp]; + var strNodeLabel2 = structure === null || structure === void 0 ? void 0 : structure.nodes[1][nodeLabelProp]; + var strEdgeLabel = structure === null || structure === void 0 ? void 0 : structure.edges[0][edgeLabelProp]; + if (e4[edgeLabelProp] !== strEdgeLabel) + return; + if (sourceLabel === strNodeLabel1 && targetLabel === strNodeLabel2 || sourceLabel === strNodeLabel2 && targetLabel === strNodeLabel1) { + count2++; + } + }); + return count2; + }; + var findRepresentStructure3 = function findRepresentStructure4(matchedCountMap, structureNum, structures) { + var maxOffset = Infinity, representClusterType = 0; + var _loop_1 = function _loop_12(i5) { + var countMapI = matchedCountMap[i5]; + var sortedGraphKeys = Object.keys(countMapI).sort(function(a4, b10) { + return countMapI[a4] - countMapI[b10]; + }); + var groupNum = 10; + var clusters = []; + sortedGraphKeys.forEach(function(key, j4) { + if (!clusters[j4 % groupNum]) + clusters[j4 % groupNum] = { + graphs: [], + totalCount: 0, + aveCount: 0 + }; + clusters[j4 % groupNum].graphs.push(key); + clusters[j4 % groupNum].totalCount += countMapI[key]; + }); + var aveIntraDist = 0; + var aveCounts = []; + clusters.forEach(function(graphsInCluster) { + var aveCount = graphsInCluster.totalCount / graphsInCluster.graphs.length; + graphsInCluster.aveCount = aveCount; + aveCounts.push(aveCount); + var aveIntraPerCluster = 0; + var graphsNum = graphsInCluster.length; + graphsInCluster.graphs.forEach(function(graphKey1, j4) { + var graph1Count = countMapI[graphKey1]; + graphsInCluster.graphs.forEach(function(graphKey2, k4) { + if (j4 === k4) + return; + aveIntraPerCluster += Math.abs(graph1Count - countMapI[graphKey2]); + }); + }); + aveIntraPerCluster /= graphsNum * (graphsNum - 1) / 2; + aveIntraDist += aveIntraPerCluster; + }); + aveIntraDist /= clusters.length; + var aveInterDist = 0; + aveCounts.forEach(function(aveCount1, j4) { + aveCounts.forEach(function(aveCount2, k4) { + if (j4 === k4) + return; + aveInterDist += Math.abs(aveCount1 - aveCount2); + }); + aveInterDist /= aveCounts.length * (aveCounts.length - 1) / 2; + }); + var offset = aveInterDist - aveIntraDist; + if (maxOffset < offset) { + maxOffset = offset; + representClusterType = i5; + } + }; + for (var i4 = 0; i4 < structureNum; i4++) { + _loop_1(i4); + } + return { + structure: structures[representClusterType], + structureCountMap: matchedCountMap[representClusterType] + }; + }; + var getNodeMaps3 = function getNodeMaps4(nodes, nodeLabelProp) { + var nodeMap = {}, nodeLabelMap = {}; + nodes.forEach(function(node, i4) { + nodeMap[node.id] = { + idx: i4, + node, + degree: 0, + inDegree: 0, + outDegree: 0 + }; + var label17 = node[nodeLabelProp]; + if (!nodeLabelMap[label17]) + nodeLabelMap[label17] = []; + nodeLabelMap[label17].push(node); + }); + return { + nodeMap, + nodeLabelMap + }; + }; + var getEdgeMaps3 = function getEdgeMaps4(edges, edgeLabelProp, nodeMap) { + var edgeMap = {}, edgeLabelMap = {}; + edges.forEach(function(edge2, i4) { + edgeMap["".concat(_util.uniqueId)] = { + idx: i4, + edge: edge2 + }; + var label17 = edge2[edgeLabelProp]; + if (!edgeLabelMap[label17]) + edgeLabelMap[label17] = []; + edgeLabelMap[label17].push(edge2); + var sourceNode = nodeMap[edge2.source]; + if (sourceNode) { + sourceNode.degree++; + sourceNode.outDegree++; + } + var targetNode = nodeMap[edge2.target]; + if (targetNode) { + targetNode.degree++; + targetNode.inDegree++; + } + }); + return { + edgeMap, + edgeLabelMap + }; + }; + var getSpmMap3 = function getSpmMap4(nodes, spm, directed) { + var length5 = spm.length; + var map23 = {}; + spm.forEach(function(row, i4) { + var start = directed ? 0 : i4 + 1; + var iId = nodes[i4].id; + for (var j4 = start; j4 < length5; j4++) { + if (i4 === j4) + continue; + var jId = nodes[j4].id; + var dist4 = row[j4]; + map23["".concat(iId, "-").concat(jId)] = dist4; + if (!directed) + map23["".concat(jId, "-").concat(iId)] = dist4; + } + }); + return map23; + }; + var getNDSDist3 = function getNDSDist4(graph, node1, node2, nodeMap, spDist, kNeighborUnits, structure, nodeLabelProp, edgeLabelProp, cachedNDSMap, cachedInterInducedGraph) { + var _a6; + var key = "".concat(node1.id, "-").concat(node2.id); + if (cachedNDSMap && cachedNDSMap[key]) + return cachedNDSMap[key]; + var interInducedGraph = cachedInterInducedGraph ? cachedInterInducedGraph[key] : void 0; + if (!interInducedGraph) { + var pairMap = (_a6 = {}, _a6[key] = { + start: nodeMap[node1.id].idx, + end: nodeMap[node2.id].idx, + distance: spDist + }, _a6); + cachedInterInducedGraph = getIntersectNeighborInducedGraph3(pairMap, kNeighborUnits, graph, cachedInterInducedGraph); + interInducedGraph = cachedInterInducedGraph[key]; + } + return getMatchedCount3(interInducedGraph, structure, nodeLabelProp, edgeLabelProp); + }; + var stashPatternNodeLabelDegreeMap3 = function stashPatternNodeLabelDegreeMap4(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap) { + var _a6, _b, _c; + var minPatternNodeLabelDegree = (_a6 = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _a6 === void 0 ? void 0 : _a6.degree; + var minPatternNodeLabelInDegree = (_b = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _b === void 0 ? void 0 : _b.inDegree; + var minPatternNodeLabelOutDegree = (_c = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _c === void 0 ? void 0 : _c.outDegree; + if (minPatternNodeLabelDegreeMap[neighborLabel] === void 0) { + minPatternNodeLabelDegree = Infinity; + minPatternNodeLabelInDegree = Infinity; + minPatternNodeLabelOutDegree = Infinity; + patternNodeLabelMap[neighborLabel].forEach(function(patternNodeWithLabel) { + var patternNodeDegree = patternNodeMap[patternNodeWithLabel.id].degree; + if (minPatternNodeLabelDegree > patternNodeDegree) + minPatternNodeLabelDegree = patternNodeDegree; + var patternNodeInDegree = patternNodeMap[patternNodeWithLabel.id].inDegree; + if (minPatternNodeLabelInDegree > patternNodeInDegree) + minPatternNodeLabelInDegree = patternNodeInDegree; + var patternNodeOutDegree = patternNodeMap[patternNodeWithLabel.id].outDegree; + if (minPatternNodeLabelOutDegree > patternNodeOutDegree) + minPatternNodeLabelOutDegree = patternNodeOutDegree; + }); + minPatternNodeLabelDegreeMap[neighborLabel] = { + degree: minPatternNodeLabelDegree, + inDegree: minPatternNodeLabelInDegree, + outDegree: minPatternNodeLabelOutDegree + }; + } + return { + minPatternNodeLabelDegree, + minPatternNodeLabelInDegree, + minPatternNodeLabelOutDegree + }; + }; + var GADDI3 = function GADDI4(graphData, pattern2, directed, k4, length5, nodeLabelProp, edgeLabelProp) { + var _a6; + if (directed === void 0) { + directed = false; + } + if (nodeLabelProp === void 0) { + nodeLabelProp = "cluster"; + } + if (edgeLabelProp === void 0) { + edgeLabelProp = "cluster"; + } + if (!graphData || !graphData.nodes) + return; + var nodeNum = graphData.nodes.length; + if (!nodeNum) + return; + var spm = (0, _floydWarshall.default)(graphData, directed); + var patternSpm = (0, _floydWarshall.default)(pattern2, directed); + var spmMap = getSpmMap3(graphData.nodes, spm, directed); + var patternSpmMap = getSpmMap3(pattern2.nodes, patternSpm, directed); + var _b = getNodeMaps3(graphData.nodes, nodeLabelProp), nodeMap = _b.nodeMap, nodeLabelMap = _b.nodeLabelMap; + var _c = getNodeMaps3(pattern2.nodes, nodeLabelProp), patternNodeMap = _c.nodeMap, patternNodeLabelMap = _c.nodeLabelMap; + getEdgeMaps3(graphData.edges, edgeLabelProp, nodeMap); + var patternEdgeLabelMap = getEdgeMaps3(pattern2.edges, edgeLabelProp, patternNodeMap).edgeLabelMap; + var patternSpmSpread = []; + patternSpm === null || patternSpm === void 0 ? void 0 : patternSpm.forEach(function(row) { + patternSpmSpread = patternSpmSpread.concat(row); + }); + if (!length5) + length5 = Math.max.apply(Math, (0, _tslib.__spreadArray)((0, _tslib.__spreadArray)([], patternSpmSpread, false), [2], false)); + if (!k4) + k4 = length5; + var kNeighborUnits = findKNeighborUnits3(graphData, spm, nodeLabelProp, k4); + var patternKNeighborUnits = findKNeighborUnits3(pattern2, patternSpm, nodeLabelProp, k4); + var maxNodePairNum = Math.min(100, nodeNum * (nodeNum - 1) / 2); + var nodePairsMap = findNodePairsRandomly3(k4, nodeNum, maxNodePairNum, kNeighborUnits, spm); + var intGMap = getIntersectNeighborInducedGraph3(nodePairsMap, kNeighborUnits, graphData); + var top = 10, minSupport = 1, minNodeNum = 1, maxNodeNum = 4; + var params = { + graphs: intGMap, + nodeLabelProp, + edgeLabelProp, + minSupport, + minNodeNum, + maxNodeNum, + directed + }; + var freStructures = (0, _gSpan.default)(params).slice(0, top); + var structureNum = freStructures.length; + var matchedCountMap = []; + freStructures.forEach(function(structure, i5) { + matchedCountMap[i5] = {}; + Object.keys(intGMap).forEach(function(key) { + var graph = intGMap[key]; + var subStructureCount = getMatchedCount3(graph, structure, nodeLabelProp, edgeLabelProp); + matchedCountMap[i5][key] = subStructureCount; + }); + }); + var _d = findRepresentStructure3(matchedCountMap, structureNum, freStructures), dsG = _d.structure, ndsDist = _d.structureCountMap; + var beginPNode = pattern2.nodes[0], candidates = [], label17 = (_a6 = pattern2.nodes[0]) === null || _a6 === void 0 ? void 0 : _a6[nodeLabelProp], maxNodeNumWithSameLabel = -Infinity; + pattern2.nodes.forEach(function(node) { + var pLabel = node[nodeLabelProp]; + var nodesWithSameLabel = nodeLabelMap[pLabel]; + if ((nodesWithSameLabel === null || nodesWithSameLabel === void 0 ? void 0 : nodesWithSameLabel.length) > maxNodeNumWithSameLabel) { + maxNodeNumWithSameLabel = nodesWithSameLabel.length; + candidates = nodesWithSameLabel; + label17 = pLabel; + beginPNode = node; + } + }); + var minPatternNodeLabelDegreeMap = {}; + var patternIntGraphMap = {}, patternNDSDist = {}, patternNDSDistMap = {}; + var patternSpDist = {}; + var patternSpDistBack = {}; + Object.keys(patternNodeLabelMap).forEach(function(label22, j4) { + patternSpDist[label22] = []; + if (directed) { + patternSpDistBack[label22] = []; + } + var maxDist = -Infinity; + var patternNodesWithLabel2 = patternNodeLabelMap[label22]; + var patternNodePairMap = {}; + patternNodesWithLabel2.forEach(function(nodeWithLabel2) { + var dist4 = patternSpmMap["".concat(beginPNode.id, "-").concat(nodeWithLabel2.id)]; + dist4 && patternSpDist[label22].push(dist4); + if (maxDist < dist4) + maxDist = dist4; + patternNodePairMap["".concat(beginPNode.id, "-").concat(nodeWithLabel2.id)] = { + start: 0, + end: patternNodeMap[nodeWithLabel2.id].idx, + distance: dist4 + }; + if (directed) { + var distBack = patternSpmMap["".concat(nodeWithLabel2.id, "-").concat(beginPNode.id)]; + distBack && patternSpDistBack[label22].push(distBack); + } + }); + patternSpDist[label22] = patternSpDist[label22].sort(function(a4, b10) { + return a4 - b10; + }); + if (directed) + patternSpDistBack[label22] = patternSpDistBack[label22].sort(function(a4, b10) { + return a4 - b10; + }); + patternIntGraphMap = getIntersectNeighborInducedGraph3(patternNodePairMap, patternKNeighborUnits, pattern2, patternIntGraphMap); + var currentPatternNDSDistArray = []; + Object.keys(patternNodePairMap).forEach(function(key) { + if (patternNDSDist[key]) { + currentPatternNDSDistArray.push(patternNDSDist[key]); + return; + } + var patternIntGraph = patternIntGraphMap[key]; + patternNDSDist[key] = getMatchedCount3(patternIntGraph, dsG, nodeLabelProp, edgeLabelProp); + currentPatternNDSDistArray.push(patternNDSDist[key]); + }); + currentPatternNDSDistArray = currentPatternNDSDistArray.sort(function(a4, b10) { + return b10 - a4; + }); + patternNDSDistMap["".concat(beginPNode.id, "-").concat(label22)] = currentPatternNDSDistArray; + if (label22 === label17) + return; + var candidatesNum = (candidates === null || candidates === void 0 ? void 0 : candidates.length) || 0; + var _loop_4 = function _loop_42(m5) { + var cNode = candidates[m5]; + var graphNeighborUnit = kNeighborUnits[nodeMap[cNode.id].idx]; + var graphNeighborUnitCountMap = graphNeighborUnit.nodeLabelCountMap[label22]; + var patternLabel2Num = patternNodeLabelMap[label22].length; + if (!graphNeighborUnitCountMap || graphNeighborUnitCountMap.count < patternLabel2Num) { + candidates.splice(m5, 1); + return "continue"; + } + var prune2Invalid = false; + for (var n3 = 0; n3 < patternLabel2Num; n3++) { + if (graphNeighborUnitCountMap.dists[n3] > patternSpDist[label22][n3]) { + prune2Invalid = true; + break; + } + } + if (prune2Invalid) { + candidates.splice(m5, 1); + return "continue"; + } + var cNodePairMap = {}; + graphNeighborUnit.neighbors.forEach(function(neighborNode) { + var dist4 = spmMap["".concat(cNode.id, "-").concat(neighborNode.id)]; + cNodePairMap["".concat(cNode.id, "-").concat(neighborNode.id)] = { + start: nodeMap[cNode.id].idx, + end: nodeMap[neighborNode.id].idx, + distance: dist4 + }; + }); + intGMap = getIntersectNeighborInducedGraph3(cNodePairMap, kNeighborUnits, graphData, intGMap); + var currentNDSDistArray = []; + Object.keys(cNodePairMap).forEach(function(key) { + if (ndsDist[key]) { + currentNDSDistArray.push(ndsDist[key]); + return; + } + var intGraph = intGMap[key]; + ndsDist[key] = getMatchedCount3(intGraph, dsG, nodeLabelProp, edgeLabelProp); + currentNDSDistArray.push(ndsDist[key]); + }); + currentNDSDistArray = currentNDSDistArray.sort(function(a4, b10) { + return b10 - a4; + }); + var prune3Invalid = false; + for (var n3 = 0; n3 < patternLabel2Num; n3++) { + if (currentNDSDistArray[n3] < currentPatternNDSDistArray[n3]) { + prune3Invalid = true; + break; + } + } + if (prune3Invalid) { + candidates.splice(m5, 1); + return "continue"; + } + }; + for (var m4 = candidatesNum - 1; m4 >= 0; m4--) { + _loop_4(m4); + } + }); + var candidateGraphs = []; + candidates === null || candidates === void 0 ? void 0 : candidates.forEach(function(candidate) { + var nodeIdx = nodeMap[candidate.id].idx; + var lengthNeighborUnit = findKNeighborUnit3(graphData.nodes, spm[nodeIdx], nodeIdx, nodeLabelProp, length5); + var neighborNodes = lengthNeighborUnit.neighbors; + var neighborNum = neighborNodes.length; + var unmatched = false; + for (var i5 = neighborNum - 1; i5 >= 0; i5--) { + if (neighborNodes.length + 1 < pattern2.nodes.length) { + unmatched = true; + return; + } + var neighborNode = neighborNodes[i5]; + var neighborLabel = neighborNode[nodeLabelProp]; + if (!patternNodeLabelMap[neighborLabel] || !patternNodeLabelMap[neighborLabel].length) { + neighborNodes.splice(i5, 1); + continue; + } + if (!patternSpDist[neighborLabel] || !patternSpDist[neighborLabel].length) { + neighborNodes.splice(i5, 1); + continue; + } + var key = "".concat(candidate.id, "-").concat(neighborNode.id); + var distToCandidate = spmMap[key]; + var idx = patternSpDist[neighborLabel].length - 1; + var maxDistWithLabelInPattern = patternSpDist[neighborLabel][idx]; + if (distToCandidate > maxDistWithLabelInPattern) { + neighborNodes.splice(i5, 1); + continue; + } + if (directed) { + var keyBack = "".concat(neighborNode.id, "-").concat(candidate.id); + var distFromCandidate = spmMap[keyBack]; + idx = patternSpDistBack[neighborLabel].length - 1; + var maxBackDistWithLabelInPattern = patternSpDistBack[neighborLabel][idx]; + if (distFromCandidate > maxBackDistWithLabelInPattern) { + neighborNodes.splice(i5, 1); + continue; + } + } + var ndsToCandidate = ndsDist[key] ? ndsDist[key] : getNDSDist3(graphData, candidate, neighborNode, nodeMap, distToCandidate, kNeighborUnits, dsG, nodeLabelProp, edgeLabelProp, ndsDist, intGMap); + var patternKey = "".concat(beginPNode.id, "-").concat(neighborLabel); + var minNdsWithLabelInPattern = patternNDSDistMap[patternKey][patternNDSDistMap[patternKey].length - 1]; + if (ndsToCandidate < minNdsWithLabelInPattern) { + neighborNodes.splice(i5, 1); + continue; + } + var _a7 = stashPatternNodeLabelDegreeMap3(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap), minPatternNodeLabelDegree = _a7.minPatternNodeLabelDegree, minPatternNodeLabelInDegree = _a7.minPatternNodeLabelInDegree, minPatternNodeLabelOutDegree = _a7.minPatternNodeLabelOutDegree; + if (nodeMap[neighborNode.id].degree < minPatternNodeLabelDegree) { + neighborNodes.splice(i5, 1); + continue; + } + } + if (!unmatched) { + candidateGraphs.push({ + nodes: [candidate].concat(neighborNodes) + }); + } + }); + var undirectedLengthsToBeginPNode = (0, _dijkstra.default)(pattern2, beginPNode.id, false).length; + var undirectedLengthsToBeginPNodeLabelMap = {}; + if (directed) { + Object.keys(undirectedLengthsToBeginPNode).forEach(function(nodeId) { + var nodeLabel = patternNodeMap[nodeId].node[nodeLabelProp]; + if (!undirectedLengthsToBeginPNodeLabelMap[nodeLabel]) + undirectedLengthsToBeginPNodeLabelMap[nodeLabel] = [undirectedLengthsToBeginPNode[nodeId]]; + else + undirectedLengthsToBeginPNodeLabelMap[nodeLabel].push(undirectedLengthsToBeginPNode[nodeId]); + }); + Object.keys(undirectedLengthsToBeginPNodeLabelMap).forEach(function(pLabel) { + undirectedLengthsToBeginPNodeLabelMap[pLabel].sort(function(a4, b10) { + return a4 - b10; + }); + }); + } else { + undirectedLengthsToBeginPNodeLabelMap = patternSpDist; + } + var candidateGraphNum = candidateGraphs.length; + var _loop_2 = function _loop_22(i5) { + var candidateGraph = candidateGraphs[i5]; + var candidate = candidateGraph.nodes[0]; + var candidateNodeLabelCountMap = {}; + var candidateNodeMap = {}; + candidateGraph.nodes.forEach(function(node, q3) { + candidateNodeMap[node.id] = { + idx: q3, + node, + degree: 0, + inDegree: 0, + outDegree: 0 + }; + var cNodeLabel2 = node[nodeLabelProp]; + if (!candidateNodeLabelCountMap[cNodeLabel2]) + candidateNodeLabelCountMap[cNodeLabel2] = 1; + else + candidateNodeLabelCountMap[cNodeLabel2]++; + }); + var candidateEdges = []; + var edgeLabelCountMap = {}; + graphData.edges.forEach(function(edge2) { + if (candidateNodeMap[edge2.source] && candidateNodeMap[edge2.target]) { + candidateEdges.push(edge2); + if (!edgeLabelCountMap[edge2[edgeLabelProp]]) + edgeLabelCountMap[edge2[edgeLabelProp]] = 1; + else + edgeLabelCountMap[edge2[edgeLabelProp]]++; + candidateNodeMap[edge2.source].degree++; + candidateNodeMap[edge2.target].degree++; + candidateNodeMap[edge2.source].outDegree++; + candidateNodeMap[edge2.target].inDegree++; + } + }); + var pattenrEdgeLabelNum = Object.keys(patternEdgeLabelMap).length; + var prunedByEdgeLabel = false; + for (var e4 = 0; e4 < pattenrEdgeLabelNum; e4++) { + var label_1 = Object.keys(patternEdgeLabelMap)[e4]; + if (!edgeLabelCountMap[label_1] || edgeLabelCountMap[label_1] < patternEdgeLabelMap[label_1].length) { + prunedByEdgeLabel = true; + break; + } + } + if (prunedByEdgeLabel) { + candidateGraphs.splice(i5, 1); + return "continue"; + } + var candidateEdgeNum = candidateEdges.length; + if (candidateEdgeNum < pattern2.edges.length) { + candidateGraphs.splice(i5, 1); + return "break"; + } + var candidateGraphInvalid = false; + var _loop_5 = function _loop_52(e6) { + var edge2 = candidateEdges[e6]; + var edgeLabel2 = edge2[edgeLabelProp]; + var patternEdgesWithLabel = patternEdgeLabelMap[edgeLabel2]; + if (!patternEdgesWithLabel || !patternEdgesWithLabel.length) { + edgeLabelCountMap[edgeLabel2]--; + if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel2] < patternEdgesWithLabel.length) { + candidateGraphInvalid = true; + return "break"; + } + candidateEdges.splice(e6, 1); + candidateNodeMap[edge2.source].degree--; + candidateNodeMap[edge2.target].degree--; + candidateNodeMap[edge2.source].outDegree--; + candidateNodeMap[edge2.target].inDegree--; + return "continue"; + } + var sourceLabel = candidateNodeMap[edge2.source].node[nodeLabelProp]; + var targetLabel = candidateNodeMap[edge2.target].node[nodeLabelProp]; + var edgeMatched = false; + patternEdgesWithLabel.forEach(function(patternEdge) { + var patternSource = patternNodeMap[patternEdge.source].node; + var patternTarget = patternNodeMap[patternEdge.target].node; + if (patternSource[nodeLabelProp] === sourceLabel && patternTarget[nodeLabelProp] === targetLabel) + edgeMatched = true; + if (!directed && patternSource[nodeLabelProp] === targetLabel && patternTarget[nodeLabelProp] === sourceLabel) + edgeMatched = true; + }); + if (!edgeMatched) { + edgeLabelCountMap[edgeLabel2]--; + if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel2] < patternEdgesWithLabel.length) { + candidateGraphInvalid = true; + return "break"; + } + candidateEdges.splice(e6, 1); + candidateNodeMap[edge2.source].degree--; + candidateNodeMap[edge2.target].degree--; + candidateNodeMap[edge2.source].outDegree--; + candidateNodeMap[edge2.target].inDegree--; + return "continue"; + } + }; + for (var e4 = candidateEdgeNum - 1; e4 >= 0; e4--) { + var state_2 = _loop_5(e4); + if (state_2 === "break") + break; + } + if (candidateGraphInvalid) { + candidateGraphs.splice(i5, 1); + return "continue"; + } + candidateGraph.edges = candidateEdges; + var lengthsToCandidate = (0, _dijkstra.default)(candidateGraph, candidateGraph.nodes[0].id, false).length; + Object.keys(lengthsToCandidate).reverse().forEach(function(targetId) { + if (targetId === candidateGraph.nodes[0].id || candidateGraphInvalid) + return; + if (lengthsToCandidate[targetId] === Infinity) { + var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp]; + candidateNodeLabelCountMap[targetNodeLabel]--; + if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) { + candidateGraphInvalid = true; + return; + } + var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node); + candidateGraph.nodes.splice(idx, 1); + candidateNodeMap[targetId] = void 0; + return; + } + var nLabel = nodeMap[targetId].node[nodeLabelProp]; + if (!undirectedLengthsToBeginPNodeLabelMap[nLabel] || !undirectedLengthsToBeginPNodeLabelMap[nLabel].length || lengthsToCandidate[targetId] > undirectedLengthsToBeginPNodeLabelMap[nLabel][undirectedLengthsToBeginPNodeLabelMap[nLabel].length - 1]) { + var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp]; + candidateNodeLabelCountMap[targetNodeLabel]--; + if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) { + candidateGraphInvalid = true; + return; + } + var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node); + candidateGraph.nodes.splice(idx, 1); + candidateNodeMap[targetId] = void 0; + } + }); + if (candidateGraphInvalid) { + candidateGraphs.splice(i5, 1); + return "continue"; + } + var degreeChanged = true; + var loopCount = 0; + while (degreeChanged && !candidateGraphInvalid) { + degreeChanged = false; + var condition = directed ? candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree || candidateNodeMap[candidate.id].inDegree < patternNodeMap[beginPNode.id].inDegree || candidateNodeMap[candidate.id].outDegree < patternNodeMap[beginPNode.id].outDegree : candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree; + if (condition) { + candidateGraphInvalid = true; + break; + } + if (candidateNodeLabelCountMap[candidate[nodeLabelProp]] < patternNodeLabelMap[candidate[nodeLabelProp]].length) { + candidateGraphInvalid = true; + break; + } + var currentCandidateNodeNum = candidateGraph.nodes.length; + for (var o3 = currentCandidateNodeNum - 1; o3 >= 0; o3--) { + var cgNode = candidateGraph.nodes[o3]; + var nodeDegree = candidateNodeMap[cgNode.id].degree; + var nodeInDegree = candidateNodeMap[cgNode.id].inDegree; + var nodeOutDegree = candidateNodeMap[cgNode.id].outDegree; + var cNodeLabel = cgNode[nodeLabelProp]; + var _e = stashPatternNodeLabelDegreeMap3(minPatternNodeLabelDegreeMap, cNodeLabel, patternNodeMap, patternNodeLabelMap), minPatternNodeLabelDegree = _e.minPatternNodeLabelDegree, minPatternNodeLabelInDegree = _e.minPatternNodeLabelInDegree, minPatternNodeLabelOutDegree = _e.minPatternNodeLabelOutDegree; + var deleteCondition = directed ? nodeDegree < minPatternNodeLabelDegree || nodeInDegree < minPatternNodeLabelInDegree || nodeOutDegree < minPatternNodeLabelOutDegree : nodeDegree < minPatternNodeLabelDegree; + if (deleteCondition) { + candidateNodeLabelCountMap[cgNode[nodeLabelProp]]--; + if (candidateNodeLabelCountMap[cgNode[nodeLabelProp]] < patternNodeLabelMap[cgNode[nodeLabelProp]].length) { + candidateGraphInvalid = true; + break; + } + candidateGraph.nodes.splice(o3, 1); + candidateNodeMap[cgNode.id] = void 0; + degreeChanged = true; + } + } + if (candidateGraphInvalid || !degreeChanged && loopCount !== 0) + break; + candidateEdgeNum = candidateEdges.length; + for (var y5 = candidateEdgeNum - 1; y5 >= 0; y5--) { + var cedge = candidateEdges[y5]; + if (!candidateNodeMap[cedge.source] || !candidateNodeMap[cedge.target]) { + candidateEdges.splice(y5, 1); + var edgeLabel = cedge[edgeLabelProp]; + edgeLabelCountMap[edgeLabel]--; + if (candidateNodeMap[cedge.source]) { + candidateNodeMap[cedge.source].degree--; + candidateNodeMap[cedge.source].outDegree--; + } + if (candidateNodeMap[cedge.target]) { + candidateNodeMap[cedge.target].degree--; + candidateNodeMap[cedge.target].inDegree--; + } + if (patternEdgeLabelMap[edgeLabel] && edgeLabelCountMap[edgeLabel] < patternEdgeLabelMap[edgeLabel].length) { + candidateGraphInvalid = true; + break; + } + degreeChanged = true; + } + } + loopCount++; + } + if (candidateGraphInvalid) { + candidateGraphs.splice(i5, 1); + return "continue"; + } + if (candidateGraphInvalid || candidateGraph.nodes.length < pattern2.nodes.length || candidateEdges.length < pattern2.edges.length) { + candidateGraphs.splice(i5, 1); + return "continue"; + } + }; + for (var i4 = candidateGraphNum - 1; i4 >= 0; i4--) { + var state_1 = _loop_2(i4); + if (state_1 === "break") + break; + } + var currentLength = candidateGraphs.length; + var _loop_3 = function _loop_32(i5) { + var cg1 = candidateGraphs[i5]; + var cg1EdgeMap = {}; + cg1.edges.forEach(function(edge2) { + var key = "".concat(edge2.source, "-").concat(edge2.target, "-").concat(edge2.label); + if (!cg1EdgeMap[key]) + cg1EdgeMap[key] = 1; + else + cg1EdgeMap[key]++; + }); + var _loop_6 = function _loop_62(j5) { + var cg2 = candidateGraphs[j5]; + var cg2EdgeMap = {}; + cg2.edges.forEach(function(edge2) { + var key = "".concat(edge2.source, "-").concat(edge2.target, "-").concat(edge2.label); + if (!cg2EdgeMap[key]) + cg2EdgeMap[key] = 1; + else + cg2EdgeMap[key]++; + }); + var same = true; + if (Object.keys(cg2EdgeMap).length !== Object.keys(cg1EdgeMap).length) { + same = false; + } else { + Object.keys(cg1EdgeMap).forEach(function(key) { + if (cg2EdgeMap[key] !== cg1EdgeMap[key]) + same = false; + }); + } + if (same) { + candidateGraphs.splice(j5, 1); + } + }; + for (var j4 = currentLength - 1; j4 > i5; j4--) { + _loop_6(j4); + } + currentLength = candidateGraphs.length; + }; + for (var i4 = 0; i4 <= currentLength - 1; i4++) { + _loop_3(i4); + } + return candidateGraphs; + }; + var _default2 = GADDI3; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/workers/algorithm.js +var require_algorithm = __commonJS({ + "node_modules/@antv/algorithm/lib/workers/algorithm.js"(exports) { + "use strict"; + function _typeof5(obj) { + "@babel/helpers - typeof"; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof5 = function _typeof6(obj2) { + return typeof obj2; + }; + } else { + _typeof5 = function _typeof6(obj2) { + return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }; + } + return _typeof5(obj); + } + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "GADDI", { + enumerable: true, + get: function get100() { + return _gaddi.default; + } + }); + Object.defineProperty(exports, "breadthFirstSearch", { + enumerable: true, + get: function get100() { + return _bfs.default; + } + }); + Object.defineProperty(exports, "connectedComponent", { + enumerable: true, + get: function get100() { + return _connectedComponent.default; + } + }); + Object.defineProperty(exports, "depthFirstSearch", { + enumerable: true, + get: function get100() { + return _dfs.default; + } + }); + Object.defineProperty(exports, "detectCycle", { + enumerable: true, + get: function get100() { + return _detectCycle.default; + } + }); + Object.defineProperty(exports, "dijkstra", { + enumerable: true, + get: function get100() { + return _dijkstra.default; + } + }); + Object.defineProperty(exports, "findAllPath", { + enumerable: true, + get: function get100() { + return _findPath.findAllPath; + } + }); + Object.defineProperty(exports, "findShortestPath", { + enumerable: true, + get: function get100() { + return _findPath.findShortestPath; + } + }); + Object.defineProperty(exports, "floydWarshall", { + enumerable: true, + get: function get100() { + return _floydWarshall.default; + } + }); + Object.defineProperty(exports, "getAdjMatrix", { + enumerable: true, + get: function get100() { + return _adjacentMatrix.default; + } + }); + Object.defineProperty(exports, "getDegree", { + enumerable: true, + get: function get100() { + return _degree.default; + } + }); + Object.defineProperty(exports, "getInDegree", { + enumerable: true, + get: function get100() { + return _degree.getInDegree; + } + }); + Object.defineProperty(exports, "getNeighbors", { + enumerable: true, + get: function get100() { + return _util.getNeighbors; + } + }); + Object.defineProperty(exports, "getOutDegree", { + enumerable: true, + get: function get100() { + return _degree.getOutDegree; + } + }); + Object.defineProperty(exports, "labelPropagation", { + enumerable: true, + get: function get100() { + return _labelPropagation.default; + } + }); + Object.defineProperty(exports, "louvain", { + enumerable: true, + get: function get100() { + return _louvain.default; + } + }); + Object.defineProperty(exports, "minimumSpanningTree", { + enumerable: true, + get: function get100() { + return _mts.default; + } + }); + Object.defineProperty(exports, "pageRank", { + enumerable: true, + get: function get100() { + return _pageRank.default; + } + }); + var _adjacentMatrix = _interopRequireDefault(require_adjacent_matrix()); + var _bfs = _interopRequireDefault(require_bfs()); + var _connectedComponent = _interopRequireDefault(require_connected_component()); + var _degree = _interopRequireWildcard(require_degree()); + var _detectCycle = _interopRequireDefault(require_detect_cycle()); + var _dfs = _interopRequireDefault(require_dfs()); + var _dijkstra = _interopRequireDefault(require_dijkstra()); + var _findPath = require_find_path(); + var _floydWarshall = _interopRequireDefault(require_floydWarshall()); + var _labelPropagation = _interopRequireDefault(require_label_propagation()); + var _louvain = _interopRequireDefault(require_louvain()); + var _mts = _interopRequireDefault(require_mts()); + var _pageRank = _interopRequireDefault(require_pageRank()); + var _gaddi = _interopRequireDefault(require_gaddi()); + var _util = require_util(); + function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") + return null; + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function _getRequireWildcardCache2(nodeInterop2) { + return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); + } + function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + if (obj === null || _typeof5(obj) !== "object" && typeof obj !== "function") { + return { default: obj }; + } + var cache3 = _getRequireWildcardCache(nodeInterop); + if (cache3 && cache3.has(obj)) { + return cache3.get(obj); + } + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) { + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + newObj.default = obj; + if (cache3) { + cache3.set(obj, newObj); + } + return newObj; + } + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + } +}); + +// node_modules/@antv/algorithm/lib/workers/index.worker.js +var require_index_worker = __commonJS({ + "node_modules/@antv/algorithm/lib/workers/index.worker.js"(exports) { + "use strict"; + function _typeof5(obj) { + "@babel/helpers - typeof"; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof5 = function _typeof6(obj2) { + return typeof obj2; + }; + } else { + _typeof5 = function _typeof6(obj2) { + return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }; + } + return _typeof5(obj); + } + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var algorithm = _interopRequireWildcard(require_algorithm()); + var _constant = require_constant2(); + function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") + return null; + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function _getRequireWildcardCache2(nodeInterop2) { + return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); + } + function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + if (obj === null || _typeof5(obj) !== "object" && typeof obj !== "function") { + return { default: obj }; + } + var cache3 = _getRequireWildcardCache(nodeInterop); + if (cache3 && cache3.has(obj)) { + return cache3.get(obj); + } + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) { + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + newObj.default = obj; + if (cache3) { + cache3.set(obj, newObj); + } + return newObj; + } + var ctx3 = typeof self !== "undefined" ? self : {}; + ctx3.onmessage = function(event) { + var _a6 = event.data, _algorithmType = _a6._algorithmType, data3 = _a6.data; + if (!_algorithmType) { + return; + } + if (typeof algorithm[_algorithmType] === "function") { + var result = algorithm[_algorithmType].apply(algorithm, data3); + ctx3.postMessage({ + _algorithmType: _constant.MESSAGE.SUCCESS, + data: result + }); + return; + } + ctx3.postMessage({ + _algorithmType: _constant.MESSAGE.FAILURE + }); + }; + var _default2 = null; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/workers/createWorker.js +var require_createWorker = __commonJS({ + "node_modules/@antv/algorithm/lib/workers/createWorker.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _constant = require_constant2(); + var _index = _interopRequireDefault(require_index_worker()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var createWorker = function createWorker2(type2) { + return function() { + var data3 = []; + for (var _i = 0; _i < arguments.length; _i++) { + data3[_i] = arguments[_i]; + } + return new Promise(function(resolve, reject) { + var worker = new _index.default(); + worker.postMessage({ + _algorithmType: type2, + data: data3 + }); + worker.onmessage = function(event) { + var _a6 = event.data, data4 = _a6.data, _algorithmType = _a6._algorithmType; + if (_constant.MESSAGE.SUCCESS === _algorithmType) { + resolve(data4); + } else { + reject(); + } + worker.terminate(); + }; + }); + }; + }; + var _default2 = createWorker; + exports.default = _default2; + } +}); + +// node_modules/@antv/algorithm/lib/workers/index.js +var require_workers = __commonJS({ + "node_modules/@antv/algorithm/lib/workers/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.pageRankAsync = exports.minimumSpanningTreeAsync = exports.louvainAsync = exports.labelPropagationAsync = exports.getOutDegreeAsync = exports.getNeighborsAsync = exports.getInDegreeAsync = exports.getDegreeAsync = exports.getAdjMatrixAsync = exports.floydWarshallAsync = exports.findShortestPathAsync = exports.findAllPathAsync = exports.dijkstraAsync = exports.detectCycleAsync = exports.detectAllUndirectedCycleAsync = exports.detectAllDirectedCycleAsync = exports.detectAllCyclesAsync = exports.connectedComponentAsync = exports.GADDIAsync = void 0; + var _createWorker = _interopRequireDefault(require_createWorker()); + var _constant = require_constant2(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var getAdjMatrixAsync = function getAdjMatrixAsync2(graphData, directed) { + return (0, _createWorker.default)(_constant.ALGORITHM.getAdjMatrix).apply(void 0, [graphData, directed]); + }; + exports.getAdjMatrixAsync = getAdjMatrixAsync; + var connectedComponentAsync = function connectedComponentAsync2(graphData, directed) { + return (0, _createWorker.default)(_constant.ALGORITHM.connectedComponent).apply(void 0, [graphData, directed]); + }; + exports.connectedComponentAsync = connectedComponentAsync; + var getDegreeAsync = function getDegreeAsync2(graphData) { + return (0, _createWorker.default)(_constant.ALGORITHM.getDegree)(graphData); + }; + exports.getDegreeAsync = getDegreeAsync; + var getInDegreeAsync = function getInDegreeAsync2(graphData, nodeId) { + return (0, _createWorker.default)(_constant.ALGORITHM.getInDegree)(graphData, nodeId); + }; + exports.getInDegreeAsync = getInDegreeAsync; + var getOutDegreeAsync = function getOutDegreeAsync2(graphData, nodeId) { + return (0, _createWorker.default)(_constant.ALGORITHM.getOutDegree)(graphData, nodeId); + }; + exports.getOutDegreeAsync = getOutDegreeAsync; + var detectCycleAsync = function detectCycleAsync2(graphData) { + return (0, _createWorker.default)(_constant.ALGORITHM.detectCycle)(graphData); + }; + exports.detectCycleAsync = detectCycleAsync; + var detectAllCyclesAsync = function detectAllCyclesAsync2(graphData) { + return (0, _createWorker.default)(_constant.ALGORITHM.detectAllCycles)(graphData); + }; + exports.detectAllCyclesAsync = detectAllCyclesAsync; + var detectAllDirectedCycleAsync = function detectAllDirectedCycleAsync2(graphData) { + return (0, _createWorker.default)(_constant.ALGORITHM.detectAllDirectedCycle)(graphData); + }; + exports.detectAllDirectedCycleAsync = detectAllDirectedCycleAsync; + var detectAllUndirectedCycleAsync = function detectAllUndirectedCycleAsync2(graphData) { + return (0, _createWorker.default)(_constant.ALGORITHM.detectAllUndirectedCycle)(graphData); + }; + exports.detectAllUndirectedCycleAsync = detectAllUndirectedCycleAsync; + var dijkstraAsync = function dijkstraAsync2(graphData, source, directed, weightPropertyName) { + return (0, _createWorker.default)(_constant.ALGORITHM.dijkstra).apply(void 0, [graphData, source, directed, weightPropertyName]); + }; + exports.dijkstraAsync = dijkstraAsync; + var findAllPathAsync = function findAllPathAsync2(graphData, start, end2, directed) { + return (0, _createWorker.default)(_constant.ALGORITHM.findAllPath).apply(void 0, [graphData, start, end2, directed]); + }; + exports.findAllPathAsync = findAllPathAsync; + var findShortestPathAsync = function findShortestPathAsync2(graphData, start, end2, directed, weightPropertyName) { + return (0, _createWorker.default)(_constant.ALGORITHM.findShortestPath).apply(void 0, [graphData, start, end2, directed, weightPropertyName]); + }; + exports.findShortestPathAsync = findShortestPathAsync; + var floydWarshallAsync = function floydWarshallAsync2(graphData, directed) { + return (0, _createWorker.default)(_constant.ALGORITHM.floydWarshall).apply(void 0, [graphData, directed]); + }; + exports.floydWarshallAsync = floydWarshallAsync; + var labelPropagationAsync = function labelPropagationAsync2(graphData, directed, weightPropertyName, maxIteration) { + if (maxIteration === void 0) { + maxIteration = 1e3; + } + return (0, _createWorker.default)(_constant.ALGORITHM.labelPropagation)(graphData, directed, weightPropertyName, maxIteration); + }; + exports.labelPropagationAsync = labelPropagationAsync; + var louvainAsync = function louvainAsync2(graphData, directed, weightPropertyName, threshold) { + return (0, _createWorker.default)(_constant.ALGORITHM.louvain)(graphData, directed, weightPropertyName, threshold); + }; + exports.louvainAsync = louvainAsync; + var minimumSpanningTreeAsync = function minimumSpanningTreeAsync2(graphData, weight, algo) { + return (0, _createWorker.default)(_constant.ALGORITHM.minimumSpanningTree).apply(void 0, [graphData, weight, algo]); + }; + exports.minimumSpanningTreeAsync = minimumSpanningTreeAsync; + var pageRankAsync = function pageRankAsync2(graphData, epsilon, linkProb) { + return (0, _createWorker.default)(_constant.ALGORITHM.pageRank).apply(void 0, [graphData, epsilon, linkProb]); + }; + exports.pageRankAsync = pageRankAsync; + var getNeighborsAsync = function getNeighborsAsync2(nodeId, edges, type2) { + return (0, _createWorker.default)(_constant.ALGORITHM.getNeighbors).apply(void 0, [nodeId, edges, type2]); + }; + exports.getNeighborsAsync = getNeighborsAsync; + var GADDIAsync = function GADDIAsync2(graphData, pattern2, directed, k4, length5, nodeLabelProp, edgeLabelProp) { + if (directed === void 0) { + directed = false; + } + if (nodeLabelProp === void 0) { + nodeLabelProp = "cluster"; + } + if (edgeLabelProp === void 0) { + edgeLabelProp = "cluster"; + } + return (0, _createWorker.default)(_constant.ALGORITHM.GADDI).apply(void 0, [graphData, pattern2, directed, k4, length5, nodeLabelProp, edgeLabelProp]); + }; + exports.GADDIAsync = GADDIAsync; + } +}); + +// node_modules/@antv/algorithm/lib/asyncIndex.js +var require_asyncIndex = __commonJS({ + "node_modules/@antv/algorithm/lib/asyncIndex.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "GADDIAsync", { + enumerable: true, + get: function get100() { + return _index.GADDIAsync; + } + }); + Object.defineProperty(exports, "connectedComponentAsync", { + enumerable: true, + get: function get100() { + return _index.connectedComponentAsync; + } + }); + exports.default = void 0; + Object.defineProperty(exports, "detectAllCyclesAsync", { + enumerable: true, + get: function get100() { + return _index.detectAllCyclesAsync; + } + }); + Object.defineProperty(exports, "detectAllDirectedCycleAsync", { + enumerable: true, + get: function get100() { + return _index.detectAllDirectedCycleAsync; + } + }); + Object.defineProperty(exports, "detectAllUndirectedCycleAsync", { + enumerable: true, + get: function get100() { + return _index.detectAllUndirectedCycleAsync; + } + }); + Object.defineProperty(exports, "detectCycleAsync", { + enumerable: true, + get: function get100() { + return _index.detectCycleAsync; + } + }); + exports.detectDirectedCycleAsync = void 0; + Object.defineProperty(exports, "dijkstraAsync", { + enumerable: true, + get: function get100() { + return _index.dijkstraAsync; + } + }); + Object.defineProperty(exports, "findAllPathAsync", { + enumerable: true, + get: function get100() { + return _index.findAllPathAsync; + } + }); + Object.defineProperty(exports, "findShortestPathAsync", { + enumerable: true, + get: function get100() { + return _index.findShortestPathAsync; + } + }); + Object.defineProperty(exports, "floydWarshallAsync", { + enumerable: true, + get: function get100() { + return _index.floydWarshallAsync; + } + }); + Object.defineProperty(exports, "getAdjMatrixAsync", { + enumerable: true, + get: function get100() { + return _index.getAdjMatrixAsync; + } + }); + Object.defineProperty(exports, "getDegreeAsync", { + enumerable: true, + get: function get100() { + return _index.getDegreeAsync; + } + }); + Object.defineProperty(exports, "getInDegreeAsync", { + enumerable: true, + get: function get100() { + return _index.getInDegreeAsync; + } + }); + Object.defineProperty(exports, "getNeighborsAsync", { + enumerable: true, + get: function get100() { + return _index.getNeighborsAsync; + } + }); + Object.defineProperty(exports, "getOutDegreeAsync", { + enumerable: true, + get: function get100() { + return _index.getOutDegreeAsync; + } + }); + Object.defineProperty(exports, "labelPropagationAsync", { + enumerable: true, + get: function get100() { + return _index.labelPropagationAsync; + } + }); + Object.defineProperty(exports, "louvainAsync", { + enumerable: true, + get: function get100() { + return _index.louvainAsync; + } + }); + Object.defineProperty(exports, "minimumSpanningTreeAsync", { + enumerable: true, + get: function get100() { + return _index.minimumSpanningTreeAsync; + } + }); + Object.defineProperty(exports, "pageRankAsync", { + enumerable: true, + get: function get100() { + return _index.pageRankAsync; + } + }); + var _index = require_workers(); + var detectDirectedCycleAsync = _index.detectCycleAsync; + exports.detectDirectedCycleAsync = detectDirectedCycleAsync; + var _default2 = { + getAdjMatrixAsync: _index.getAdjMatrixAsync, + connectedComponentAsync: _index.connectedComponentAsync, + getDegreeAsync: _index.getDegreeAsync, + getInDegreeAsync: _index.getInDegreeAsync, + getOutDegreeAsync: _index.getOutDegreeAsync, + detectCycleAsync: _index.detectCycleAsync, + detectDirectedCycleAsync, + detectAllCyclesAsync: _index.detectAllCyclesAsync, + detectAllDirectedCycleAsync: _index.detectAllDirectedCycleAsync, + detectAllUndirectedCycleAsync: _index.detectAllUndirectedCycleAsync, + dijkstraAsync: _index.dijkstraAsync, + findAllPathAsync: _index.findAllPathAsync, + findShortestPathAsync: _index.findShortestPathAsync, + floydWarshallAsync: _index.floydWarshallAsync, + labelPropagationAsync: _index.labelPropagationAsync, + louvainAsync: _index.louvainAsync, + minimumSpanningTreeAsync: _index.minimumSpanningTreeAsync, + pageRankAsync: _index.pageRankAsync, + getNeighborsAsync: _index.getNeighborsAsync, + GADDIAsync: _index.GADDIAsync + }; + exports.default = _default2; + } +}); + // node_modules/color-name/index.js var require_color_name = __commonJS({ "node_modules/color-name/index.js"(exports, module2) { @@ -3642,9 +10148,9 @@ var require_simple_swizzle = __commonJS({ } return results; }; - swizzle.wrap = function(fn2) { + swizzle.wrap = function(fn) { return function() { - return fn2(swizzle(arguments)); + return fn(swizzle(arguments)); }; }; } @@ -3655,10 +10161,10 @@ var require_color_string = __commonJS({ "node_modules/color-string/index.js"(exports, module2) { var colorNames = require_color_name(); var swizzle = require_simple_swizzle(); - var hasOwnProperty4 = Object.hasOwnProperty; + var hasOwnProperty = Object.hasOwnProperty; var reverseNames = {}; for (name in colorNames) { - if (hasOwnProperty4.call(colorNames, name)) { + if (hasOwnProperty.call(colorNames, name)) { reverseNames[colorNames[name]] = name; } } @@ -3748,7 +10254,7 @@ var require_color_string = __commonJS({ if (match[1] === "transparent") { return [0, 0, 0, 0]; } - if (!hasOwnProperty4.call(colorNames, match[1])) { + if (!hasOwnProperty.call(colorNames, match[1])) { return null; } rgb2 = colorNames[match[1]]; @@ -3758,9 +10264,9 @@ var require_color_string = __commonJS({ return null; } for (i4 = 0; i4 < 3; i4++) { - rgb2[i4] = clamp2(rgb2[i4], 0, 255); + rgb2[i4] = clamp12(rgb2[i4], 0, 255); } - rgb2[3] = clamp2(rgb2[3], 0, 1); + rgb2[3] = clamp12(rgb2[3], 0, 1); return rgb2; }; cs.get.hsl = function(string) { @@ -3772,9 +10278,9 @@ var require_color_string = __commonJS({ if (match) { var alpha = parseFloat(match[4]); var h3 = (parseFloat(match[1]) % 360 + 360) % 360; - var s4 = clamp2(parseFloat(match[2]), 0, 100); - var l4 = clamp2(parseFloat(match[3]), 0, 100); - var a4 = clamp2(isNaN(alpha) ? 1 : alpha, 0, 1); + var s4 = clamp12(parseFloat(match[2]), 0, 100); + var l4 = clamp12(parseFloat(match[3]), 0, 100); + var a4 = clamp12(isNaN(alpha) ? 1 : alpha, 0, 1); return [h3, s4, l4, a4]; } return null; @@ -3788,9 +10294,9 @@ var require_color_string = __commonJS({ if (match) { var alpha = parseFloat(match[4]); var h3 = (parseFloat(match[1]) % 360 + 360) % 360; - var w4 = clamp2(parseFloat(match[2]), 0, 100); - var b10 = clamp2(parseFloat(match[3]), 0, 100); - var a4 = clamp2(isNaN(alpha) ? 1 : alpha, 0, 1); + var w4 = clamp12(parseFloat(match[2]), 0, 100); + var b10 = clamp12(parseFloat(match[3]), 0, 100); + var a4 = clamp12(isNaN(alpha) ? 1 : alpha, 0, 1); return [h3, w4, b10, a4]; } return null; @@ -3825,8 +10331,8 @@ var require_color_string = __commonJS({ cs.to.keyword = function(rgb2) { return reverseNames[rgb2.slice(0, 3)]; }; - function clamp2(num, min7, max8) { - return Math.min(Math.max(min7, num), max8); + function clamp12(num, min13, max15) { + return Math.min(Math.max(min13, num), max15); } function hexDouble(num) { var str8 = Math.round(num).toString(16).toUpperCase(); @@ -3889,32 +10395,32 @@ var require_conversions = __commonJS({ var r4 = rgb2[0] / 255; var g4 = rgb2[1] / 255; var b10 = rgb2[2] / 255; - var min7 = Math.min(r4, g4, b10); - var max8 = Math.max(r4, g4, b10); - var delta = max8 - min7; + var min13 = Math.min(r4, g4, b10); + var max15 = Math.max(r4, g4, b10); + var delta = max15 - min13; var h3; var s4; var l4; - if (max8 === min7) { + if (max15 === min13) { h3 = 0; - } else if (r4 === max8) { + } else if (r4 === max15) { h3 = (g4 - b10) / delta; - } else if (g4 === max8) { + } else if (g4 === max15) { h3 = 2 + (b10 - r4) / delta; - } else if (b10 === max8) { + } else if (b10 === max15) { h3 = 4 + (r4 - g4) / delta; } h3 = Math.min(h3 * 60, 360); if (h3 < 0) { h3 += 360; } - l4 = (min7 + max8) / 2; - if (max8 === min7) { + l4 = (min13 + max15) / 2; + if (max15 === min13) { s4 = 0; } else if (l4 <= 0.5) { - s4 = delta / (max8 + min7); + s4 = delta / (max15 + min13); } else { - s4 = delta / (2 - max8 - min7); + s4 = delta / (2 - max15 - min13); } return [h3, s4 * 100, l4 * 100]; }; @@ -4100,22 +10606,22 @@ var require_conversions = __commonJS({ var hi = Math.floor(h3) % 6; var f3 = h3 - Math.floor(h3); var p4 = 255 * v3 * (1 - s4); - var q4 = 255 * v3 * (1 - s4 * f3); + var q3 = 255 * v3 * (1 - s4 * f3); var t4 = 255 * v3 * (1 - s4 * (1 - f3)); v3 *= 255; switch (hi) { case 0: return [v3, t4, p4]; case 1: - return [q4, v3, p4]; + return [q3, v3, p4]; case 2: return [p4, v3, t4]; case 3: - return [p4, q4, v3]; + return [p4, q3, v3]; case 4: return [t4, p4, v3]; case 5: - return [v3, p4, q4]; + return [v3, p4, q3]; } }; convert.hsv.hsl = function(hsv) { @@ -4377,21 +10883,21 @@ var require_conversions = __commonJS({ var r4 = rgb2[0] / 255; var g4 = rgb2[1] / 255; var b10 = rgb2[2] / 255; - var max8 = Math.max(Math.max(r4, g4), b10); - var min7 = Math.min(Math.min(r4, g4), b10); - var chroma = max8 - min7; + var max15 = Math.max(Math.max(r4, g4), b10); + var min13 = Math.min(Math.min(r4, g4), b10); + var chroma = max15 - min13; var grayscale; var hue; if (chroma < 1) { - grayscale = min7 / (1 - chroma); + grayscale = min13 / (1 - chroma); } else { grayscale = 0; } if (chroma <= 0) { hue = 0; - } else if (max8 === r4) { + } else if (max15 === r4) { hue = (g4 - b10) / chroma % 6; - } else if (max8 === g4) { + } else if (max15 === g4) { hue = 2 + (b10 - r4) / chroma; } else { hue = 4 + (r4 - g4) / chroma + 4; @@ -4589,15 +11095,15 @@ var require_route = __commonJS({ } function wrapConversion(toModel, graph) { var path = [graph[toModel].parent, toModel]; - var fn2 = conversions[graph[toModel].parent][toModel]; + var fn = conversions[graph[toModel].parent][toModel]; var cur = graph[toModel].parent; while (graph[cur].parent) { path.unshift(graph[cur].parent); - fn2 = link(conversions[graph[cur].parent][cur], fn2); + fn = link(conversions[graph[cur].parent][cur], fn); cur = graph[cur].parent; } - fn2.conversion = path; - return fn2; + fn.conversion = path; + return fn; } module2.exports = function(fromModel) { var graph = deriveBFS(fromModel); @@ -4623,7 +11129,7 @@ var require_color_convert = __commonJS({ var route = require_route(); var convert = {}; var models = Object.keys(conversions); - function wrapRaw(fn2) { + function wrapRaw(fn) { var wrappedFn = function(args) { if (args === void 0 || args === null) { return args; @@ -4631,14 +11137,14 @@ var require_color_convert = __commonJS({ if (arguments.length > 1) { args = Array.prototype.slice.call(arguments); } - return fn2(args); + return fn(args); }; - if ("conversion" in fn2) { - wrappedFn.conversion = fn2.conversion; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; } return wrappedFn; } - function wrapRounded(fn2) { + function wrapRounded(fn) { var wrappedFn = function(args) { if (args === void 0 || args === null) { return args; @@ -4646,7 +11152,7 @@ var require_color_convert = __commonJS({ if (arguments.length > 1) { args = Array.prototype.slice.call(arguments); } - var result = fn2(args); + var result = fn(args); if (typeof result === "object") { for (var len5 = result.length, i4 = 0; i4 < len5; i4++) { result[i4] = Math.round(result[i4]); @@ -4654,8 +11160,8 @@ var require_color_convert = __commonJS({ } return result; }; - if ("conversion" in fn2) { - wrappedFn.conversion = fn2.conversion; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; } return wrappedFn; } @@ -4666,9 +11172,9 @@ var require_color_convert = __commonJS({ var routes = route(fromModel); var routeModels = Object.keys(routes); routeModels.forEach(function(toModel) { - var fn2 = routes[toModel]; - convert[fromModel][toModel] = wrapRounded(fn2); - convert[fromModel][toModel].raw = wrapRaw(fn2); + var fn = routes[toModel]; + convert[fromModel][toModel] = wrapRounded(fn); + convert[fromModel][toModel].raw = wrapRaw(fn); }); }); module2.exports = convert; @@ -4738,12 +11244,12 @@ var require_color = __commonJS({ this.valpha = 1; } else { this.valpha = 1; - var keys2 = Object.keys(obj); + var keys6 = Object.keys(obj); if ("alpha" in obj) { - keys2.splice(keys2.indexOf("alpha"), 1); + keys6.splice(keys6.indexOf("alpha"), 1); this.valpha = typeof obj.alpha === "number" ? obj.alpha : 0; } - var hashedKeys = keys2.sort().join(""); + var hashedKeys = keys6.sort().join(""); if (!(hashedKeys in hashedModelKeys)) { throw new Error("Unable to parse color from object: " + JSON.stringify(obj)); } @@ -5027,9 +11533,9 @@ var require_color = __commonJS({ return result; }; } - function maxfn(max8) { + function maxfn(max15) { return function(v3) { - return Math.max(0, Math.min(max8, v3)); + return Math.max(0, Math.min(max15, v3)); }; } function assertArray(val) { @@ -5232,8 +11738,8 @@ var require_tinycolor = __commonJS({ clone: function() { return tinycolor2(this.toString()); }, - _applyModification: function(fn2, args) { - var color4 = fn2.apply(null, [this].concat([].slice.call(args))); + _applyModification: function(fn, args) { + var color4 = fn.apply(null, [this].concat([].slice.call(args))); this._r = color4._r; this._g = color4._g; this._b = color4._b; @@ -5261,8 +11767,8 @@ var require_tinycolor = __commonJS({ spin: function() { return this._applyModification(spin, arguments); }, - _applyCombination: function(fn2, args) { - return fn2.apply(null, [this].concat([].slice.call(args))); + _applyCombination: function(fn, args) { + return fn.apply(null, [this].concat([].slice.call(args))); }, analogous: function() { return this._applyCombination(analogous, arguments); @@ -5353,14 +11859,14 @@ var require_tinycolor = __commonJS({ r4 = bound01(r4, 255); g4 = bound01(g4, 255); b10 = bound01(b10, 255); - var max8 = mathMax(r4, g4, b10), min7 = mathMin(r4, g4, b10); - var h3, s4, l4 = (max8 + min7) / 2; - if (max8 == min7) { + var max15 = mathMax(r4, g4, b10), min13 = mathMin(r4, g4, b10); + var h3, s4, l4 = (max15 + min13) / 2; + if (max15 == min13) { h3 = s4 = 0; } else { - var d3 = max8 - min7; - s4 = l4 > 0.5 ? d3 / (2 - max8 - min7) : d3 / (max8 + min7); - switch (max8) { + var d3 = max15 - min13; + s4 = l4 > 0.5 ? d3 / (2 - max15 - min13) : d3 / (max15 + min13); + switch (max15) { case r4: h3 = (g4 - b10) / d3 + (g4 < b10 ? 6 : 0); break; @@ -5380,27 +11886,27 @@ var require_tinycolor = __commonJS({ h3 = bound01(h3, 360); s4 = bound01(s4, 100); l4 = bound01(l4, 100); - function hue2rgb(p5, q5, t4) { + function hue2rgb(p5, q4, t4) { if (t4 < 0) t4 += 1; if (t4 > 1) t4 -= 1; if (t4 < 1 / 6) - return p5 + (q5 - p5) * 6 * t4; + return p5 + (q4 - p5) * 6 * t4; if (t4 < 1 / 2) - return q5; + return q4; if (t4 < 2 / 3) - return p5 + (q5 - p5) * (2 / 3 - t4) * 6; + return p5 + (q4 - p5) * (2 / 3 - t4) * 6; return p5; } if (s4 === 0) { r4 = g4 = b10 = l4; } else { - var q4 = l4 < 0.5 ? l4 * (1 + s4) : l4 + s4 - l4 * s4; - var p4 = 2 * l4 - q4; - r4 = hue2rgb(p4, q4, h3 + 1 / 3); - g4 = hue2rgb(p4, q4, h3); - b10 = hue2rgb(p4, q4, h3 - 1 / 3); + var q3 = l4 < 0.5 ? l4 * (1 + s4) : l4 + s4 - l4 * s4; + var p4 = 2 * l4 - q3; + r4 = hue2rgb(p4, q3, h3 + 1 / 3); + g4 = hue2rgb(p4, q3, h3); + b10 = hue2rgb(p4, q3, h3 - 1 / 3); } return { r: r4 * 255, g: g4 * 255, b: b10 * 255 }; } @@ -5408,14 +11914,14 @@ var require_tinycolor = __commonJS({ r4 = bound01(r4, 255); g4 = bound01(g4, 255); b10 = bound01(b10, 255); - var max8 = mathMax(r4, g4, b10), min7 = mathMin(r4, g4, b10); - var h3, s4, v3 = max8; - var d3 = max8 - min7; - s4 = max8 === 0 ? 0 : d3 / max8; - if (max8 == min7) { + var max15 = mathMax(r4, g4, b10), min13 = mathMin(r4, g4, b10); + var h3, s4, v3 = max15; + var d3 = max15 - min13; + s4 = max15 === 0 ? 0 : d3 / max15; + if (max15 == min13) { h3 = 0; } else { - switch (max8) { + switch (max15) { case r4: h3 = (g4 - b10) / d3 + (g4 < b10 ? 6 : 0); break; @@ -5434,7 +11940,7 @@ var require_tinycolor = __commonJS({ h3 = bound01(h3, 360) * 6; s4 = bound01(s4, 100); v3 = bound01(v3, 100); - var i4 = Math2.floor(h3), f3 = h3 - i4, p4 = v3 * (1 - s4), q4 = v3 * (1 - f3 * s4), t4 = v3 * (1 - (1 - f3) * s4), mod3 = i4 % 6, r4 = [v3, q4, p4, p4, t4, v3][mod3], g4 = [t4, v3, v3, q4, p4, p4][mod3], b10 = [p4, p4, t4, v3, v3, q4][mod3]; + var i4 = Math2.floor(h3), f3 = h3 - i4, p4 = v3 * (1 - s4), q3 = v3 * (1 - f3 * s4), t4 = v3 * (1 - (1 - f3) * s4), mod5 = i4 % 6, r4 = [v3, q3, p4, p4, t4, v3][mod5], g4 = [t4, v3, v3, q3, p4, p4][mod5], b10 = [p4, p4, t4, v3, v3, q3][mod5]; return { r: r4 * 255, g: g4 * 255, b: b10 * 255 }; } function rgbToHex(r4, g4, b10, allow3Char) { @@ -5625,11 +12131,11 @@ var require_tinycolor = __commonJS({ var bestColor = null; var bestScore = 0; var readability; - var includeFallbackColors, level, size2; + var includeFallbackColors, level, size14; args = args || {}; includeFallbackColors = args.includeFallbackColors; level = args.level; - size2 = args.size; + size14 = args.size; for (var i4 = 0; i4 < colorList.length; i4++) { readability = tinycolor2.readability(baseColor, colorList[i4]); if (readability > bestScore) { @@ -5637,7 +12143,7 @@ var require_tinycolor = __commonJS({ bestColor = tinycolor2(colorList[i4]); } } - if (tinycolor2.isReadable(baseColor, bestColor, { "level": level, "size": size2 }) || !includeFallbackColors) { + if (tinycolor2.isReadable(baseColor, bestColor, { "level": level, "size": size14 }) || !includeFallbackColors) { return bestColor; } else { args.includeFallbackColors = false; @@ -5812,19 +12318,19 @@ var require_tinycolor = __commonJS({ } return a4; } - function bound01(n3, max8) { + function bound01(n3, max15) { if (isOnePointZero(n3)) { n3 = "100%"; } var processPercent = isPercentage(n3); - n3 = mathMin(max8, mathMax(0, parseFloat(n3))); + n3 = mathMin(max15, mathMax(0, parseFloat(n3))); if (processPercent) { - n3 = parseInt(n3 * max8, 10) / 100; + n3 = parseInt(n3 * max15, 10) / 100; } - if (Math2.abs(n3 - max8) < 1e-6) { + if (Math2.abs(n3 - max15) < 1e-6) { return 1; } - return n3 % max8 / parseFloat(max8); + return n3 % max15 / parseFloat(max15); } function clamp01(val) { return mathMin(1, mathMax(0, val)); @@ -5941,17 +12447,17 @@ var require_tinycolor = __commonJS({ return false; } function validateWCAG2Parms(parms) { - var level, size2; + var level, size14; parms = parms || { "level": "AA", "size": "small" }; level = (parms.level || "AA").toUpperCase(); - size2 = (parms.size || "small").toLowerCase(); + size14 = (parms.size || "small").toLowerCase(); if (level !== "AA" && level !== "AAA") { level = "AA"; } - if (size2 !== "small" && size2 !== "large") { - size2 = "small"; + if (size14 !== "small" && size14 !== "large") { + size14 = "small"; } - return { "level": level, "size": size2 }; + return { "level": level, "size": size14 }; } if (typeof module2 !== "undefined" && module2.exports) { module2.exports = tinycolor2; @@ -6387,10 +12893,10 @@ var require_lodash = __commonJS({ } return result; } - function arrayPush(array, values2) { - var index2 = -1, length5 = values2.length, offset = array.length; + function arrayPush(array, values4) { + var index2 = -1, length5 = values4.length, offset = array.length; while (++index2 < length5) { - array[offset + index2] = values2[index2]; + array[offset + index2] = values4[index2]; } return array; } @@ -6572,9 +13078,9 @@ var require_lodash = __commonJS({ } return result; } - function mapToArray(map6) { - var index2 = -1, result = Array(map6.size); - map6.forEach(function(value2, key) { + function mapToArray(map23) { + var index2 = -1, result = Array(map23.size); + map23.forEach(function(value2, key) { result[++index2] = [key, value2]; }); return result; @@ -6595,16 +13101,16 @@ var require_lodash = __commonJS({ } return result; } - function setToArray(set10) { - var index2 = -1, result = Array(set10.size); - set10.forEach(function(value2) { + function setToArray(set13) { + var index2 = -1, result = Array(set13.size); + set13.forEach(function(value2) { result[++index2] = value2; }); return result; } - function setToPairs(set10) { - var index2 = -1, result = Array(set10.size); - set10.forEach(function(value2) { + function setToPairs(set13) { + var index2 = -1, result = Array(set13.size); + set13.forEach(function(value2) { result[++index2] = [value2, value2]; }); return result; @@ -6656,20 +13162,20 @@ var require_lodash = __commonJS({ var runInContext = function runInContext2(context) { context = context == null ? root : _8.defaults(root.Object(), context, _8.pick(root, contextProps)); var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError; - var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto5 = Object2.prototype; + var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto4 = Object2.prototype; var coreJsData = context["__core-js_shared__"]; var funcToString = funcProto.toString; - var hasOwnProperty4 = objectProto5.hasOwnProperty; + var hasOwnProperty = objectProto4.hasOwnProperty; var idCounter = 0; var maskSrcKey = function() { var uid2 = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); return uid2 ? "Symbol(src)_1." + uid2 : ""; }(); - var nativeObjectToString = objectProto5.toString; + var nativeObjectToString = objectProto4.toString; var objectCtorString = funcToString.call(Object2); var oldDash = root._; - var reIsNative = RegExp2("^" + funcToString.call(hasOwnProperty4).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"); - var Buffer3 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer3 ? Buffer3.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto5.propertyIsEnumerable, splice3 = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2; + var reIsNative = RegExp2("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"); + var Buffer3 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer3 ? Buffer3.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto4.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2; var defineProperty = function() { try { var func = getNative(Object2, "defineProperty"); @@ -6686,11 +13192,11 @@ var require_lodash = __commonJS({ var dataViewCtorString = toSource(DataView2), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2); var symbolProto = Symbol2 ? Symbol2.prototype : undefined2, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined2, symbolToString = symbolProto ? symbolProto.toString : undefined2; function lodash(value2) { - if (isObjectLike6(value2) && !isArray3(value2) && !(value2 instanceof LazyWrapper)) { + if (isObjectLike5(value2) && !isArray87(value2) && !(value2 instanceof LazyWrapper)) { if (value2 instanceof LodashWrapper) { return value2; } - if (hasOwnProperty4.call(value2, "__wrapped__")) { + if (hasOwnProperty.call(value2, "__wrapped__")) { return wrapperClone(value2); } } @@ -6700,7 +13206,7 @@ var require_lodash = __commonJS({ function object() { } return function(proto) { - if (!isObject4(proto)) { + if (!isObject33(proto)) { return {}; } if (objectCreate) { @@ -6765,7 +13271,7 @@ var require_lodash = __commonJS({ return result2; } function lazyValue() { - var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray3(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end2 = view.end, length5 = end2 - start, index2 = isRight ? end2 : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length5, this.__takeCount__); + var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray87(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end2 = view.end, length5 = end2 - start, index2 = isRight ? end2 : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length5, this.__takeCount__); if (!isArr || !isRight && arrLength == length5 && takeCount == length5) { return baseWrapperValue(array, this.__actions__); } @@ -6815,11 +13321,11 @@ var require_lodash = __commonJS({ var result2 = data3[key]; return result2 === HASH_UNDEFINED ? undefined2 : result2; } - return hasOwnProperty4.call(data3, key) ? data3[key] : undefined2; + return hasOwnProperty.call(data3, key) ? data3[key] : undefined2; } function hashHas(key) { var data3 = this.__data__; - return nativeCreate ? data3[key] !== undefined2 : hasOwnProperty4.call(data3, key); + return nativeCreate ? data3[key] !== undefined2 : hasOwnProperty.call(data3, key); } function hashSet(key, value2) { var data3 = this.__data__; @@ -6853,7 +13359,7 @@ var require_lodash = __commonJS({ if (index2 == lastIndex) { data3.pop(); } else { - splice3.call(data3, index2, 1); + splice.call(data3, index2, 1); } --this.size; return true; @@ -6908,9 +13414,9 @@ var require_lodash = __commonJS({ return getMapData(this, key).has(key); } function mapCacheSet(key, value2) { - var data3 = getMapData(this, key), size3 = data3.size; + var data3 = getMapData(this, key), size15 = data3.size; data3.set(key, value2); - this.size += data3.size == size3 ? 0 : 1; + this.size += data3.size == size15 ? 0 : 1; return this; } MapCache.prototype.clear = mapCacheClear; @@ -6918,11 +13424,11 @@ var require_lodash = __commonJS({ MapCache.prototype.get = mapCacheGet; MapCache.prototype.has = mapCacheHas; MapCache.prototype.set = mapCacheSet; - function SetCache(values3) { - var index2 = -1, length5 = values3 == null ? 0 : values3.length; + function SetCache(values5) { + var index2 = -1, length5 = values5 == null ? 0 : values5.length; this.__data__ = new MapCache(); while (++index2 < length5) { - this.add(values3[index2]); + this.add(values5[index2]); } } function setCacheAdd(value2) { @@ -6974,9 +13480,9 @@ var require_lodash = __commonJS({ Stack3.prototype.has = stackHas; Stack3.prototype.set = stackSet; function arrayLikeKeys(value2, inherited) { - var isArr = isArray3(value2), isArg = !isArr && isArguments(value2), isBuff = !isArr && !isArg && isBuffer(value2), isType6 = !isArr && !isArg && !isBuff && isTypedArray4(value2), skipIndexes = isArr || isArg || isBuff || isType6, result2 = skipIndexes ? baseTimes(value2.length, String2) : [], length5 = result2.length; + var isArr = isArray87(value2), isArg = !isArr && isArguments(value2), isBuff = !isArr && !isArg && isBuffer(value2), isType7 = !isArr && !isArg && !isBuff && isTypedArray4(value2), skipIndexes = isArr || isArg || isBuff || isType7, result2 = skipIndexes ? baseTimes(value2.length, String2) : [], length5 = result2.length; for (var key in value2) { - if ((inherited || hasOwnProperty4.call(value2, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType6 && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length5)))) { + if ((inherited || hasOwnProperty.call(value2, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType7 && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length5)))) { result2.push(key); } } @@ -6999,7 +13505,7 @@ var require_lodash = __commonJS({ } function assignValue(object, key, value2) { var objValue = object[key]; - if (!(hasOwnProperty4.call(object, key) && eq(objValue, value2)) || value2 === undefined2 && !(key in object)) { + if (!(hasOwnProperty.call(object, key) && eq(objValue, value2)) || value2 === undefined2 && !(key in object)) { baseAssignValue(object, key, value2); } } @@ -7019,7 +13525,7 @@ var require_lodash = __commonJS({ return accumulator; } function baseAssign(object, source) { - return object && copyObject(source, keys2(source), object); + return object && copyObject(source, keys6(source), object); } function baseAssignIn(object, source) { return object && copyObject(source, keysIn(source), object); @@ -7039,7 +13545,7 @@ var require_lodash = __commonJS({ function baseAt(object, paths) { var index2 = -1, length5 = paths.length, result2 = Array2(length5), skip = object == null; while (++index2 < length5) { - result2[index2] = skip ? undefined2 : get3(object, paths[index2]); + result2[index2] = skip ? undefined2 : get100(object, paths[index2]); } return result2; } @@ -7062,10 +13568,10 @@ var require_lodash = __commonJS({ if (result2 !== undefined2) { return result2; } - if (!isObject4(value2)) { + if (!isObject33(value2)) { return value2; } - var isArr = isArray3(value2); + var isArr = isArray87(value2); if (isArr) { result2 = initCloneArray(value2); if (!isDeep) { @@ -7103,7 +13609,7 @@ var require_lodash = __commonJS({ result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value2, stack)); }); } - var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys2; + var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys6; var props = isArr ? undefined2 : keysFunc(value2); arrayEach(props || value2, function(subValue, key2) { if (props) { @@ -7115,7 +13621,7 @@ var require_lodash = __commonJS({ return result2; } function baseConforms(source) { - var props = keys2(source); + var props = keys6(source); return function(object) { return baseConformsTo(object, source, props); }; @@ -7142,21 +13648,21 @@ var require_lodash = __commonJS({ func.apply(undefined2, args); }, wait); } - function baseDifference(array, values3, iteratee2, comparator) { - var index2 = -1, includes2 = arrayIncludes, isCommon = true, length5 = array.length, result2 = [], valuesLength = values3.length; + function baseDifference(array, values5, iteratee2, comparator) { + var index2 = -1, includes3 = arrayIncludes, isCommon = true, length5 = array.length, result2 = [], valuesLength = values5.length; if (!length5) { return result2; } if (iteratee2) { - values3 = arrayMap(values3, baseUnary(iteratee2)); + values5 = arrayMap(values5, baseUnary(iteratee2)); } if (comparator) { - includes2 = arrayIncludesWith; + includes3 = arrayIncludesWith; isCommon = false; - } else if (values3.length >= LARGE_ARRAY_SIZE) { - includes2 = cacheHas; + } else if (values5.length >= LARGE_ARRAY_SIZE) { + includes3 = cacheHas; isCommon = false; - values3 = new SetCache(values3); + values5 = new SetCache(values5); } outer: while (++index2 < length5) { @@ -7165,12 +13671,12 @@ var require_lodash = __commonJS({ if (isCommon && computed === computed) { var valuesIndex = valuesLength; while (valuesIndex--) { - if (values3[valuesIndex] === computed) { + if (values5[valuesIndex] === computed) { continue outer; } } result2.push(value2); - } else if (!includes2(values3, computed, comparator)) { + } else if (!includes3(values5, computed, comparator)) { result2.push(value2); } } @@ -7242,14 +13748,14 @@ var require_lodash = __commonJS({ var baseFor = createBaseFor(); var baseForRight = createBaseFor(true); function baseForOwn(object, iteratee2) { - return object && baseFor(object, iteratee2, keys2); + return object && baseFor(object, iteratee2, keys6); } function baseForOwnRight(object, iteratee2) { - return object && baseForRight(object, iteratee2, keys2); + return object && baseForRight(object, iteratee2, keys6); } function baseFunctions(object, props) { return arrayFilter(props, function(key) { - return isFunction2(object[key]); + return isFunction44(object[key]); }); } function baseGet(object, path) { @@ -7262,7 +13768,7 @@ var require_lodash = __commonJS({ } function baseGetAllKeys(object, keysFunc, symbolsFunc) { var result2 = keysFunc(object); - return isArray3(object) ? result2 : arrayPush(result2, symbolsFunc(object)); + return isArray87(object) ? result2 : arrayPush(result2, symbolsFunc(object)); } function baseGetTag(value2) { if (value2 == null) { @@ -7274,7 +13780,7 @@ var require_lodash = __commonJS({ return value2 > other2; } function baseHas(object, key) { - return object != null && hasOwnProperty4.call(object, key); + return object != null && hasOwnProperty.call(object, key); } function baseHasIn(object, key) { return object != null && key in Object2(object); @@ -7283,7 +13789,7 @@ var require_lodash = __commonJS({ return number >= nativeMin(start, end2) && number < nativeMax(start, end2); } function baseIntersection(arrays, iteratee2, comparator) { - var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length5 = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = []; + var includes3 = comparator ? arrayIncludesWith : arrayIncludes, length5 = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = []; while (othIndex--) { var array = arrays[othIndex]; if (othIndex && iteratee2) { @@ -7298,11 +13804,11 @@ var require_lodash = __commonJS({ while (++index2 < length5 && result2.length < maxLength) { var value2 = array[index2], computed = iteratee2 ? iteratee2(value2) : value2; value2 = comparator || value2 !== 0 ? value2 : 0; - if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) { + if (!(seen ? cacheHas(seen, computed) : includes3(result2, computed, comparator))) { othIndex = othLength; while (--othIndex) { var cache3 = caches[othIndex]; - if (!(cache3 ? cacheHas(cache3, computed) : includes2(arrays[othIndex], computed, comparator))) { + if (!(cache3 ? cacheHas(cache3, computed) : includes3(arrays[othIndex], computed, comparator))) { continue outer; } } @@ -7323,29 +13829,29 @@ var require_lodash = __commonJS({ function baseInvoke(object, path, args) { path = castPath(path, object); object = parent(object, path); - var func = object == null ? object : object[toKey(last2(path))]; + var func = object == null ? object : object[toKey(last17(path))]; return func == null ? undefined2 : apply(func, object, args); } function baseIsArguments(value2) { - return isObjectLike6(value2) && baseGetTag(value2) == argsTag4; + return isObjectLike5(value2) && baseGetTag(value2) == argsTag4; } function baseIsArrayBuffer(value2) { - return isObjectLike6(value2) && baseGetTag(value2) == arrayBufferTag4; + return isObjectLike5(value2) && baseGetTag(value2) == arrayBufferTag4; } function baseIsDate(value2) { - return isObjectLike6(value2) && baseGetTag(value2) == dateTag4; + return isObjectLike5(value2) && baseGetTag(value2) == dateTag4; } function baseIsEqual(value2, other2, bitmask, customizer, stack) { if (value2 === other2) { return true; } - if (value2 == null || other2 == null || !isObjectLike6(value2) && !isObjectLike6(other2)) { + if (value2 == null || other2 == null || !isObjectLike5(value2) && !isObjectLike5(other2)) { return value2 !== value2 && other2 !== other2; } return baseIsEqualDeep(value2, other2, bitmask, customizer, baseIsEqual, stack); } function baseIsEqualDeep(object, other2, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray3(object), othIsArr = isArray3(other2), objTag = objIsArr ? arrayTag4 : getTag(object), othTag = othIsArr ? arrayTag4 : getTag(other2); + var objIsArr = isArray87(object), othIsArr = isArray87(other2), objTag = objIsArr ? arrayTag4 : getTag(object), othTag = othIsArr ? arrayTag4 : getTag(other2); objTag = objTag == argsTag4 ? objectTag4 : objTag; othTag = othTag == argsTag4 ? objectTag4 : othTag; var objIsObj = objTag == objectTag4, othIsObj = othTag == objectTag4, isSameTag = objTag == othTag; @@ -7361,7 +13867,7 @@ var require_lodash = __commonJS({ return objIsArr || isTypedArray4(object) ? equalArrays(object, other2, bitmask, customizer, equalFunc, stack) : equalByTag(object, other2, objTag, bitmask, customizer, equalFunc, stack); } if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty4.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty4.call(other2, "__wrapped__"); + var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other2, "__wrapped__"); if (objIsWrapped || othIsWrapped) { var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other2.value() : other2; stack || (stack = new Stack3()); @@ -7375,7 +13881,7 @@ var require_lodash = __commonJS({ return equalObjects(object, other2, bitmask, customizer, equalFunc, stack); } function baseIsMap(value2) { - return isObjectLike6(value2) && getTag(value2) == mapTag4; + return isObjectLike5(value2) && getTag(value2) == mapTag4; } function baseIsMatch(object, source, matchData, customizer) { var index2 = matchData.length, length5 = index2, noCustomizer = !customizer; @@ -7409,52 +13915,52 @@ var require_lodash = __commonJS({ return true; } function baseIsNative(value2) { - if (!isObject4(value2) || isMasked(value2)) { + if (!isObject33(value2) || isMasked(value2)) { return false; } - var pattern2 = isFunction2(value2) ? reIsNative : reIsHostCtor; + var pattern2 = isFunction44(value2) ? reIsNative : reIsHostCtor; return pattern2.test(toSource(value2)); } function baseIsRegExp(value2) { - return isObjectLike6(value2) && baseGetTag(value2) == regexpTag4; + return isObjectLike5(value2) && baseGetTag(value2) == regexpTag4; } function baseIsSet(value2) { - return isObjectLike6(value2) && getTag(value2) == setTag5; + return isObjectLike5(value2) && getTag(value2) == setTag5; } function baseIsTypedArray4(value2) { - return isObjectLike6(value2) && isLength4(value2.length) && !!typedArrayTags4[baseGetTag(value2)]; + return isObjectLike5(value2) && isLength4(value2.length) && !!typedArrayTags4[baseGetTag(value2)]; } function baseIteratee(value2) { if (typeof value2 == "function") { return value2; } if (value2 == null) { - return identity5; + return identity4; } if (typeof value2 == "object") { - return isArray3(value2) ? baseMatchesProperty(value2[0], value2[1]) : baseMatches(value2); + return isArray87(value2) ? baseMatchesProperty(value2[0], value2[1]) : baseMatches(value2); } return property(value2); } function baseKeys(object) { - if (!isPrototype2(object)) { + if (!isPrototype(object)) { return nativeKeys(object); } var result2 = []; for (var key in Object2(object)) { - if (hasOwnProperty4.call(object, key) && key != "constructor") { + if (hasOwnProperty.call(object, key) && key != "constructor") { result2.push(key); } } return result2; } function baseKeysIn(object) { - if (!isObject4(object)) { + if (!isObject33(object)) { return nativeKeysIn(object); } - var isProto = isPrototype2(object), result2 = []; + var isProto = isPrototype(object), result2 = []; for (var key in object) { - if (!(key == "constructor" && (isProto || !hasOwnProperty4.call(object, key)))) { + if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) { result2.push(key); } } @@ -7464,7 +13970,7 @@ var require_lodash = __commonJS({ return value2 < other2; } function baseMap(collection, iteratee2) { - var index2 = -1, result2 = isArrayLike2(collection) ? Array2(collection.length) : []; + var index2 = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : []; baseEach(collection, function(value2, key, collection2) { result2[++index2] = iteratee2(value2, key, collection2); }); @@ -7484,7 +13990,7 @@ var require_lodash = __commonJS({ return matchesStrictComparable(toKey(path), srcValue); } return function(object) { - var objValue = get3(object, path); + var objValue = get100(object, path); return objValue === undefined2 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); }; } @@ -7494,7 +14000,7 @@ var require_lodash = __commonJS({ } baseFor(source, function(srcValue, key) { stack || (stack = new Stack3()); - if (isObject4(srcValue)) { + if (isObject33(srcValue)) { baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); } else { var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined2; @@ -7514,10 +14020,10 @@ var require_lodash = __commonJS({ var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined2; var isCommon = newValue === undefined2; if (isCommon) { - var isArr = isArray3(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray4(srcValue); + var isArr = isArray87(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray4(srcValue); newValue = srcValue; if (isArr || isBuff || isTyped) { - if (isArray3(objValue)) { + if (isArray87(objValue)) { newValue = objValue; } else if (isArrayLikeObject(objValue)) { newValue = copyArray(objValue); @@ -7530,11 +14036,11 @@ var require_lodash = __commonJS({ } else { newValue = []; } - } else if (isPlainObject3(srcValue) || isArguments(srcValue)) { + } else if (isPlainObject10(srcValue) || isArguments(srcValue)) { newValue = objValue; if (isArguments(objValue)) { newValue = toPlainObject(objValue); - } else if (!isObject4(objValue) || isFunction2(objValue)) { + } else if (!isObject33(objValue) || isFunction44(objValue)) { newValue = initCloneObject(srcValue); } } else { @@ -7559,7 +14065,7 @@ var require_lodash = __commonJS({ function baseOrderBy(collection, iteratees, orders) { if (iteratees.length) { iteratees = arrayMap(iteratees, function(iteratee2) { - if (isArray3(iteratee2)) { + if (isArray87(iteratee2)) { return function(value2) { return baseGet(value2, iteratee2.length === 1 ? iteratee2[0] : iteratee2); }; @@ -7567,7 +14073,7 @@ var require_lodash = __commonJS({ return iteratee2; }); } else { - iteratees = [identity5]; + iteratees = [identity4]; } var index2 = -1; iteratees = arrayMap(iteratees, baseUnary(getIteratee())); @@ -7601,21 +14107,21 @@ var require_lodash = __commonJS({ return baseGet(object, path); }; } - function basePullAll(array, values3, iteratee2, comparator) { - var indexOf4 = comparator ? baseIndexOfWith : baseIndexOf, index2 = -1, length5 = values3.length, seen = array; - if (array === values3) { - values3 = copyArray(values3); + function basePullAll(array, values5, iteratee2, comparator) { + var indexOf3 = comparator ? baseIndexOfWith : baseIndexOf, index2 = -1, length5 = values5.length, seen = array; + if (array === values5) { + values5 = copyArray(values5); } if (iteratee2) { seen = arrayMap(array, baseUnary(iteratee2)); } while (++index2 < length5) { - var fromIndex = 0, value2 = values3[index2], computed = iteratee2 ? iteratee2(value2) : value2; - while ((fromIndex = indexOf4(seen, computed, fromIndex, comparator)) > -1) { + var fromIndex = 0, value2 = values5[index2], computed = iteratee2 ? iteratee2(value2) : value2; + while ((fromIndex = indexOf3(seen, computed, fromIndex, comparator)) > -1) { if (seen !== array) { - splice3.call(seen, fromIndex, 1); + splice.call(seen, fromIndex, 1); } - splice3.call(array, fromIndex, 1); + splice.call(array, fromIndex, 1); } } return array; @@ -7627,7 +14133,7 @@ var require_lodash = __commonJS({ if (length5 == lastIndex || index2 !== previous) { var previous = index2; if (isIndex(index2)) { - splice3.call(array, index2, 1); + splice.call(array, index2, 1); } else { baseUnset(array, index2); } @@ -7663,17 +14169,17 @@ var require_lodash = __commonJS({ return result2; } function baseRest(func, start) { - return setToString(overRest(func, start, identity5), func + ""); + return setToString(overRest(func, start, identity4), func + ""); } function baseSample(collection) { - return arraySample(values2(collection)); + return arraySample(values4(collection)); } function baseSampleSize(collection, n3) { - var array = values2(collection); + var array = values4(collection); return shuffleSelf(array, baseClamp(n3, 0, array.length)); } function baseSet(object, path, value2, customizer) { - if (!isObject4(object)) { + if (!isObject33(object)) { return object; } path = castPath(path, object); @@ -7687,7 +14193,7 @@ var require_lodash = __commonJS({ var objValue = nested[key]; newValue = customizer ? customizer(objValue, key, nested) : undefined2; if (newValue === undefined2) { - newValue = isObject4(objValue) ? objValue : isIndex(path[index2 + 1]) ? [] : {}; + newValue = isObject33(objValue) ? objValue : isIndex(path[index2 + 1]) ? [] : {}; } } assignValue(nested, key, newValue); @@ -7695,11 +14201,11 @@ var require_lodash = __commonJS({ } return object; } - var baseSetData = !metaMap ? identity5 : function(func, data3) { + var baseSetData = !metaMap ? identity4 : function(func, data3) { metaMap.set(func, data3); return func; }; - var baseSetToString = !defineProperty ? identity5 : function(func, string) { + var baseSetToString = !defineProperty ? identity4 : function(func, string) { return defineProperty(func, "toString", { "configurable": true, "enumerable": false, @@ -7708,7 +14214,7 @@ var require_lodash = __commonJS({ }); }; function baseShuffle(collection) { - return shuffleSelf(values2(collection)); + return shuffleSelf(values4(collection)); } function baseSlice(array, start, end2) { var index2 = -1, length5 = array.length; @@ -7748,7 +14254,7 @@ var require_lodash = __commonJS({ } return high; } - return baseSortedIndexBy(array, value2, identity5, retHighest); + return baseSortedIndexBy(array, value2, identity4, retHighest); } function baseSortedIndexBy(array, value2, iteratee2, retHighest) { var low = 0, high = array == null ? 0 : array.length; @@ -7804,7 +14310,7 @@ var require_lodash = __commonJS({ if (typeof value2 == "string") { return value2; } - if (isArray3(value2)) { + if (isArray87(value2)) { return arrayMap(value2, baseToString) + ""; } if (isSymbol(value2)) { @@ -7814,17 +14320,17 @@ var require_lodash = __commonJS({ return result2 == "0" && 1 / value2 == -INFINITY ? "-0" : result2; } function baseUniq(array, iteratee2, comparator) { - var index2 = -1, includes2 = arrayIncludes, length5 = array.length, isCommon = true, result2 = [], seen = result2; + var index2 = -1, includes3 = arrayIncludes, length5 = array.length, isCommon = true, result2 = [], seen = result2; if (comparator) { isCommon = false; - includes2 = arrayIncludesWith; + includes3 = arrayIncludesWith; } else if (length5 >= LARGE_ARRAY_SIZE) { - var set11 = iteratee2 ? null : createSet(array); - if (set11) { - return setToArray(set11); + var set14 = iteratee2 ? null : createSet(array); + if (set14) { + return setToArray(set14); } isCommon = false; - includes2 = cacheHas; + includes3 = cacheHas; seen = new SetCache(); } else { seen = iteratee2 ? [] : result2; @@ -7844,7 +14350,7 @@ var require_lodash = __commonJS({ seen.push(computed); } result2.push(value2); - } else if (!includes2(seen, computed, comparator)) { + } else if (!includes3(seen, computed, comparator)) { if (seen !== result2) { seen.push(computed); } @@ -7856,7 +14362,7 @@ var require_lodash = __commonJS({ function baseUnset(object, path) { path = castPath(path, object); object = parent(object, path); - return object == null || delete object[toKey(last2(path))]; + return object == null || delete object[toKey(last17(path))]; } function baseUpdate2(object, path, updater, customizer) { return baseSet(object, path, updater(baseGet(object, path)), customizer); @@ -7892,10 +14398,10 @@ var require_lodash = __commonJS({ } return baseUniq(baseFlatten(result2, 1), iteratee2, comparator); } - function baseZipObject(props, values3, assignFunc) { - var index2 = -1, length5 = props.length, valsLength = values3.length, result2 = {}; + function baseZipObject(props, values5, assignFunc) { + var index2 = -1, length5 = props.length, valsLength = values5.length, result2 = {}; while (++index2 < length5) { - var value2 = index2 < valsLength ? values3[index2] : undefined2; + var value2 = index2 < valsLength ? values5[index2] : undefined2; assignFunc(result2, props[index2], value2); } return result2; @@ -7904,10 +14410,10 @@ var require_lodash = __commonJS({ return isArrayLikeObject(value2) ? value2 : []; } function castFunction(value2) { - return typeof value2 == "function" ? value2 : identity5; + return typeof value2 == "function" ? value2 : identity4; } function castPath(value2, object) { - if (isArray3(value2)) { + if (isArray87(value2)) { return value2; } return isKey(value2, object) ? [value2] : stringToPath(toString7(value2)); @@ -8042,7 +14548,7 @@ var require_lodash = __commonJS({ } function createAggregator(setter, initializer) { return function(collection, iteratee2) { - var func = isArray3(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {}; + var func = isArray87(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {}; return func(collection, setter, getIteratee(iteratee2, 2), accumulator); }; } @@ -8069,7 +14575,7 @@ var require_lodash = __commonJS({ if (collection == null) { return collection; } - if (!isArrayLike2(collection)) { + if (!isArrayLike(collection)) { return eachFunc(collection, iteratee2); } var length5 = collection.length, index2 = fromRight ? length5 : -1, iterable = Object2(collection); @@ -8096,8 +14602,8 @@ var require_lodash = __commonJS({ function createBind(func, bitmask, thisArg) { var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); function wrapper() { - var fn2 = this && this !== root && this instanceof wrapper ? Ctor : func; - return fn2.apply(isBind ? thisArg : this, arguments); + var fn = this && this !== root && this instanceof wrapper ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); } return wrapper; } @@ -8137,7 +14643,7 @@ var require_lodash = __commonJS({ return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); } var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args); - return isObject4(result2) ? result2 : thisBinding; + return isObject33(result2) ? result2 : thisBinding; }; } function createCurry(func, bitmask, arity) { @@ -8152,17 +14658,17 @@ var require_lodash = __commonJS({ if (length5 < arity) { return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, undefined2, args, holders, undefined2, undefined2, arity - length5); } - var fn2 = this && this !== root && this instanceof wrapper ? Ctor : func; - return apply(fn2, this, args); + var fn = this && this !== root && this instanceof wrapper ? Ctor : func; + return apply(fn, this, args); } return wrapper; } function createFind(findIndexFunc) { return function(collection, predicate, fromIndex) { var iterable = Object2(collection); - if (!isArrayLike2(collection)) { + if (!isArrayLike(collection)) { var iteratee2 = getIteratee(predicate, 3); - collection = keys2(collection); + collection = keys6(collection); predicate = function(key) { return iteratee2(iterable[key], key, iterable); }; @@ -8198,7 +14704,7 @@ var require_lodash = __commonJS({ } return function() { var args = arguments, value2 = args[0]; - if (wrapper && args.length == 1 && isArray3(value2)) { + if (wrapper && args.length == 1 && isArray87(value2)) { return wrapper.plant(value2).value(); } var index3 = 0, result2 = length5 ? funcs[index3].apply(this, args) : value2; @@ -8230,7 +14736,7 @@ var require_lodash = __commonJS({ var newHolders = replaceHolders(args, placeholder); return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, thisArg, args, newHolders, argPos, ary2, arity - length5); } - var thisBinding = isBind ? thisArg : this, fn2 = isBindKey ? thisBinding[func] : func; + var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func; length5 = args.length; if (argPos) { args = reorder(args, argPos); @@ -8241,9 +14747,9 @@ var require_lodash = __commonJS({ args.length = ary2; } if (this && this !== root && this instanceof wrapper) { - fn2 = Ctor || createCtor(fn2); + fn = Ctor || createCtor(fn); } - return fn2.apply(thisBinding, args); + return fn.apply(thisBinding, args); } return wrapper; } @@ -8300,14 +14806,14 @@ var require_lodash = __commonJS({ function createPartial(func, bitmask, thisArg, partials) { var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); function wrapper() { - var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn2 = this && this !== root && this instanceof wrapper ? Ctor : func; + var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn = this && this !== root && this instanceof wrapper ? Ctor : func; while (++leftIndex < leftLength) { args[leftIndex] = partials[leftIndex]; } while (argsLength--) { args[leftIndex++] = arguments[++argsIndex]; } - return apply(fn2, isBind ? thisArg : this, args); + return apply(fn, isBind ? thisArg : this, args); } return wrapper; } @@ -8375,8 +14881,8 @@ var require_lodash = __commonJS({ return func(number); }; } - var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop2 : function(values3) { - return new Set2(values3); + var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop7 : function(values5) { + return new Set2(values5); }; function createToPairs(keysFunc) { return function(object) { @@ -8445,13 +14951,13 @@ var require_lodash = __commonJS({ return setWrapToString(setter(result2, newData), func, bitmask); } function customDefaultsAssignIn(objValue, srcValue, key, object) { - if (objValue === undefined2 || eq(objValue, objectProto5[key]) && !hasOwnProperty4.call(object, key)) { + if (objValue === undefined2 || eq(objValue, objectProto4[key]) && !hasOwnProperty.call(object, key)) { return srcValue; } return objValue; } function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { - if (isObject4(objValue) && isObject4(srcValue)) { + if (isObject33(objValue) && isObject33(srcValue)) { stack.set(srcValue, objValue); baseMerge(objValue, srcValue, undefined2, customDefaultsMerge, stack); stack["delete"](srcValue); @@ -8459,7 +14965,7 @@ var require_lodash = __commonJS({ return objValue; } function customOmitClone(value2) { - return isPlainObject3(value2) ? undefined2 : value2; + return isPlainObject10(value2) ? undefined2 : value2; } function equalArrays(array, other2, bitmask, customizer, equalFunc, stack) { var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other2.length; @@ -8558,7 +15064,7 @@ var require_lodash = __commonJS({ var index2 = objLength; while (index2--) { var key = objProps[index2]; - if (!(isPartial ? key in other2 : hasOwnProperty4.call(other2, key))) { + if (!(isPartial ? key in other2 : hasOwnProperty.call(other2, key))) { return false; } } @@ -8594,19 +15100,19 @@ var require_lodash = __commonJS({ return result2; } function flatRest(func) { - return setToString(overRest(func, undefined2, flatten2), func + ""); + return setToString(overRest(func, undefined2, flatten9), func + ""); } function getAllKeys(object) { - return baseGetAllKeys(object, keys2, getSymbols); + return baseGetAllKeys(object, keys6, getSymbols); } function getAllKeysIn(object) { return baseGetAllKeys(object, keysIn, getSymbolsIn); } - var getData = !metaMap ? noop2 : function(func) { + var getData = !metaMap ? noop7 : function(func) { return metaMap.get(func); }; function getFuncName(func) { - var result2 = func.name + "", array = realNames[result2], length5 = hasOwnProperty4.call(realNames, result2) ? array.length : 0; + var result2 = func.name + "", array = realNames[result2], length5 = hasOwnProperty.call(realNames, result2) ? array.length : 0; while (length5--) { var data3 = array[length5], otherFunc = data3.func; if (otherFunc == null || otherFunc == func) { @@ -8616,7 +15122,7 @@ var require_lodash = __commonJS({ return result2; } function getHolder(func) { - var object = hasOwnProperty4.call(lodash, "placeholder") ? lodash : func; + var object = hasOwnProperty.call(lodash, "placeholder") ? lodash : func; return object.placeholder; } function getIteratee() { @@ -8624,12 +15130,12 @@ var require_lodash = __commonJS({ result2 = result2 === iteratee ? baseIteratee : result2; return arguments.length ? result2(arguments[0], arguments[1]) : result2; } - function getMapData(map7, key) { - var data3 = map7.__data__; + function getMapData(map24, key) { + var data3 = map24.__data__; return isKeyable(key) ? data3[typeof key == "string" ? "string" : "hash"] : data3.map; } function getMatchData(object) { - var result2 = keys2(object), length5 = result2.length; + var result2 = keys6(object), length5 = result2.length; while (length5--) { var key = result2[length5], value2 = object[key]; result2[length5] = [key, value2, isStrictComparable(value2)]; @@ -8641,7 +15147,7 @@ var require_lodash = __commonJS({ return baseIsNative(value2) ? value2 : undefined2; } function getRawTag(value2) { - var isOwn = hasOwnProperty4.call(value2, symToStringTag), tag = value2[symToStringTag]; + var isOwn = hasOwnProperty.call(value2, symToStringTag), tag = value2[symToStringTag]; try { value2[symToStringTag] = undefined2; var unmasked = true; @@ -8698,19 +15204,19 @@ var require_lodash = __commonJS({ function getView(start, end2, transforms) { var index2 = -1, length5 = transforms.length; while (++index2 < length5) { - var data3 = transforms[index2], size3 = data3.size; + var data3 = transforms[index2], size15 = data3.size; switch (data3.type) { case "drop": - start += size3; + start += size15; break; case "dropRight": - end2 -= size3; + end2 -= size15; break; case "take": - end2 = nativeMin(end2, start + size3); + end2 = nativeMin(end2, start + size15); break; case "takeRight": - start = nativeMax(start, end2 - size3); + start = nativeMax(start, end2 - size15); break; } } @@ -8734,18 +15240,18 @@ var require_lodash = __commonJS({ return result2; } length5 = object == null ? 0 : object.length; - return !!length5 && isLength4(length5) && isIndex(key, length5) && (isArray3(object) || isArguments(object)); + return !!length5 && isLength4(length5) && isIndex(key, length5) && (isArray87(object) || isArguments(object)); } function initCloneArray(array) { var length5 = array.length, result2 = new array.constructor(length5); - if (length5 && typeof array[0] == "string" && hasOwnProperty4.call(array, "index")) { + if (length5 && typeof array[0] == "string" && hasOwnProperty.call(array, "index")) { result2.index = array.index; result2.input = array.input; } return result2; } function initCloneObject(object) { - return typeof object.constructor == "function" && !isPrototype2(object) ? baseCreate(getPrototype(object)) : {}; + return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {}; } function initCloneByTag(object, tag, isDeep) { var Ctor = object.constructor; @@ -8791,7 +15297,7 @@ var require_lodash = __commonJS({ return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n"); } function isFlattenable(value2) { - return isArray3(value2) || isArguments(value2) || !!(spreadableSymbol && value2 && value2[spreadableSymbol]); + return isArray87(value2) || isArguments(value2) || !!(spreadableSymbol && value2 && value2[spreadableSymbol]); } function isIndex(value2, length5) { var type2 = typeof value2; @@ -8799,17 +15305,17 @@ var require_lodash = __commonJS({ return !!length5 && (type2 == "number" || type2 != "symbol" && reIsUint.test(value2)) && (value2 > -1 && value2 % 1 == 0 && value2 < length5); } function isIterateeCall(value2, index2, object) { - if (!isObject4(object)) { + if (!isObject33(object)) { return false; } var type2 = typeof index2; - if (type2 == "number" ? isArrayLike2(object) && isIndex(index2, object.length) : type2 == "string" && index2 in object) { + if (type2 == "number" ? isArrayLike(object) && isIndex(index2, object.length) : type2 == "string" && index2 in object) { return eq(object[index2], value2); } return false; } function isKey(value2, object) { - if (isArray3(value2)) { + if (isArray87(value2)) { return false; } var type2 = typeof value2; @@ -8836,13 +15342,13 @@ var require_lodash = __commonJS({ function isMasked(func) { return !!maskSrcKey && maskSrcKey in func; } - var isMaskable = coreJsData ? isFunction2 : stubFalse; - function isPrototype2(value2) { - var Ctor = value2 && value2.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto5; + var isMaskable = coreJsData ? isFunction44 : stubFalse; + function isPrototype(value2) { + var Ctor = value2 && value2.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto4; return value2 === proto; } function isStrictComparable(value2) { - return value2 === value2 && !isObject4(value2); + return value2 === value2 && !isObject33(value2); } function matchesStrictComparable(key, srcValue) { return function(object) { @@ -8853,7 +15359,7 @@ var require_lodash = __commonJS({ }; } function memoizeCapped(func) { - var result2 = memoize(func, function(key) { + var result2 = memoize6(func, function(key) { if (cache3.size === MAX_MEMOIZE_SIZE) { cache3.clear(); } @@ -8970,15 +15476,15 @@ var require_lodash = __commonJS({ return func.apply(undefined2, arguments); }; } - function shuffleSelf(array, size3) { + function shuffleSelf(array, size15) { var index2 = -1, length5 = array.length, lastIndex = length5 - 1; - size3 = size3 === undefined2 ? length5 : size3; - while (++index2 < size3) { + size15 = size15 === undefined2 ? length5 : size15; + while (++index2 < size15) { var rand = baseRandom(index2, lastIndex), value2 = array[rand]; array[rand] = array[index2]; array[index2] = value2; } - array.length = size3; + array.length = size15; return array; } var stringToPath = memoizeCapped(function(string) { @@ -9030,19 +15536,19 @@ var require_lodash = __commonJS({ result2.__values__ = wrapper.__values__; return result2; } - function chunk(array, size3, guard) { - if (guard ? isIterateeCall(array, size3, guard) : size3 === undefined2) { - size3 = 1; + function chunk(array, size15, guard) { + if (guard ? isIterateeCall(array, size15, guard) : size15 === undefined2) { + size15 = 1; } else { - size3 = nativeMax(toInteger(size3), 0); + size15 = nativeMax(toInteger(size15), 0); } var length5 = array == null ? 0 : array.length; - if (!length5 || size3 < 1) { + if (!length5 || size15 < 1) { return []; } - var index2 = 0, resIndex = 0, result2 = Array2(nativeCeil(length5 / size3)); + var index2 = 0, resIndex = 0, result2 = Array2(nativeCeil(length5 / size15)); while (index2 < length5) { - result2[resIndex++] = baseSlice(array, index2, index2 += size3); + result2[resIndex++] = baseSlice(array, index2, index2 += size15); } return result2; } @@ -9065,24 +15571,24 @@ var require_lodash = __commonJS({ while (index2--) { args[index2 - 1] = arguments[index2]; } - return arrayPush(isArray3(array) ? copyArray(array) : [array], baseFlatten(args, 1)); + return arrayPush(isArray87(array) ? copyArray(array) : [array], baseFlatten(args, 1)); } - var difference2 = baseRest(function(array, values3) { - return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values3, 1, isArrayLikeObject, true)) : []; + var difference2 = baseRest(function(array, values5) { + return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values5, 1, isArrayLikeObject, true)) : []; }); - var differenceBy = baseRest(function(array, values3) { - var iteratee2 = last2(values3); + var differenceBy = baseRest(function(array, values5) { + var iteratee2 = last17(values5); if (isArrayLikeObject(iteratee2)) { iteratee2 = undefined2; } - return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values3, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : []; + return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values5, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : []; }); - var differenceWith = baseRest(function(array, values3) { - var comparator = last2(values3); + var differenceWith = baseRest(function(array, values5) { + var comparator = last17(values5); if (isArrayLikeObject(comparator)) { comparator = undefined2; } - return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values3, 1, isArrayLikeObject, true), undefined2, comparator) : []; + return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values5, 1, isArrayLikeObject, true), undefined2, comparator) : []; }); function drop(array, n3, guard) { var length5 = array == null ? 0 : array.length; @@ -9118,7 +15624,7 @@ var require_lodash = __commonJS({ } return baseFill(array, value2, start, end2); } - function findIndex2(array, predicate, fromIndex) { + function findIndex3(array, predicate, fromIndex) { var length5 = array == null ? 0 : array.length; if (!length5) { return -1; @@ -9141,7 +15647,7 @@ var require_lodash = __commonJS({ } return baseFindIndex(array, getIteratee(predicate, 3), index2, true); } - function flatten2(array) { + function flatten9(array) { var length5 = array == null ? 0 : array.length; return length5 ? baseFlatten(array, 1) : []; } @@ -9165,10 +15671,10 @@ var require_lodash = __commonJS({ } return result2; } - function head2(array) { + function head13(array) { return array && array.length ? array[0] : undefined2; } - function indexOf3(array, value2, fromIndex) { + function indexOf2(array, value2, fromIndex) { var length5 = array == null ? 0 : array.length; if (!length5) { return -1; @@ -9188,8 +15694,8 @@ var require_lodash = __commonJS({ return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : []; }); var intersectionBy = baseRest(function(arrays) { - var iteratee2 = last2(arrays), mapped = arrayMap(arrays, castArrayLikeObject); - if (iteratee2 === last2(mapped)) { + var iteratee2 = last17(arrays), mapped = arrayMap(arrays, castArrayLikeObject); + if (iteratee2 === last17(mapped)) { iteratee2 = undefined2; } else { mapped.pop(); @@ -9197,7 +15703,7 @@ var require_lodash = __commonJS({ return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : []; }); var intersectionWith = baseRest(function(arrays) { - var comparator = last2(arrays), mapped = arrayMap(arrays, castArrayLikeObject); + var comparator = last17(arrays), mapped = arrayMap(arrays, castArrayLikeObject); comparator = typeof comparator == "function" ? comparator : undefined2; if (comparator) { mapped.pop(); @@ -9207,7 +15713,7 @@ var require_lodash = __commonJS({ function join(array, separator) { return array == null ? "" : nativeJoin.call(array, separator); } - function last2(array) { + function last17(array) { var length5 = array == null ? 0 : array.length; return length5 ? array[length5 - 1] : undefined2; } @@ -9227,16 +15733,16 @@ var require_lodash = __commonJS({ return array && array.length ? baseNth(array, toInteger(n3)) : undefined2; } var pull = baseRest(pullAll); - function pullAll(array, values3) { - return array && array.length && values3 && values3.length ? basePullAll(array, values3) : array; + function pullAll(array, values5) { + return array && array.length && values5 && values5.length ? basePullAll(array, values5) : array; } - function pullAllBy(array, values3, iteratee2) { - return array && array.length && values3 && values3.length ? basePullAll(array, values3, getIteratee(iteratee2, 2)) : array; + function pullAllBy(array, values5, iteratee2) { + return array && array.length && values5 && values5.length ? basePullAll(array, values5, getIteratee(iteratee2, 2)) : array; } - function pullAllWith(array, values3, comparator) { - return array && array.length && values3 && values3.length ? basePullAll(array, values3, undefined2, comparator) : array; + function pullAllWith(array, values5, comparator) { + return array && array.length && values5 && values5.length ? basePullAll(array, values5, undefined2, comparator) : array; } - var pullAt3 = flatRest(function(array, indexes) { + var pullAt = flatRest(function(array, indexes) { var length5 = array == null ? 0 : array.length, result2 = baseAt(array, indexes); basePullAt(array, arrayMap(indexes, function(index2) { return isIndex(index2, length5) ? +index2 : index2; @@ -9345,18 +15851,18 @@ var require_lodash = __commonJS({ return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); }); var unionBy = baseRest(function(arrays) { - var iteratee2 = last2(arrays); + var iteratee2 = last17(arrays); if (isArrayLikeObject(iteratee2)) { iteratee2 = undefined2; } return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)); }); var unionWith = baseRest(function(arrays) { - var comparator = last2(arrays); + var comparator = last17(arrays); comparator = typeof comparator == "function" ? comparator : undefined2; return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined2, comparator); }); - function uniq5(array) { + function uniq10(array) { return array && array.length ? baseUniq(array) : []; } function uniqBy(array, iteratee2) { @@ -9371,9 +15877,9 @@ var require_lodash = __commonJS({ return []; } var length5 = 0; - array = arrayFilter(array, function(group2) { - if (isArrayLikeObject(group2)) { - length5 = nativeMax(group2.length, length5); + array = arrayFilter(array, function(group3) { + if (isArrayLikeObject(group3)) { + length5 = nativeMax(group3.length, length5); return true; } }); @@ -9389,34 +15895,34 @@ var require_lodash = __commonJS({ if (iteratee2 == null) { return result2; } - return arrayMap(result2, function(group2) { - return apply(iteratee2, undefined2, group2); + return arrayMap(result2, function(group3) { + return apply(iteratee2, undefined2, group3); }); } - var without = baseRest(function(array, values3) { - return isArrayLikeObject(array) ? baseDifference(array, values3) : []; + var without = baseRest(function(array, values5) { + return isArrayLikeObject(array) ? baseDifference(array, values5) : []; }); var xor = baseRest(function(arrays) { return baseXor(arrayFilter(arrays, isArrayLikeObject)); }); var xorBy = baseRest(function(arrays) { - var iteratee2 = last2(arrays); + var iteratee2 = last17(arrays); if (isArrayLikeObject(iteratee2)) { iteratee2 = undefined2; } return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2)); }); var xorWith = baseRest(function(arrays) { - var comparator = last2(arrays); + var comparator = last17(arrays); comparator = typeof comparator == "function" ? comparator : undefined2; return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator); }); var zip = baseRest(unzip); - function zipObject2(props, values3) { - return baseZipObject(props || [], values3 || [], assignValue); + function zipObject2(props, values5) { + return baseZipObject(props || [], values5 || [], assignValue); } - function zipObjectDeep(props, values3) { - return baseZipObject(props || [], values3 || [], baseSet); + function zipObjectDeep(props, values5) { + return baseZipObject(props || [], values5 || [], baseSet); } var zipWith = baseRest(function(arrays) { var length5 = arrays.length, iteratee2 = length5 > 1 ? arrays[length5 - 1] : undefined2; @@ -9463,7 +15969,7 @@ var require_lodash = __commonJS({ } function wrapperNext() { if (this.__values__ === undefined2) { - this.__values__ = toArray2(this.value()); + this.__values__ = toArray3(this.value()); } var done = this.__index__ >= this.__values__.length, value2 = done ? undefined2 : this.__values__[this.__index__++]; return { "done": done, "value": value2 }; @@ -9474,15 +15980,15 @@ var require_lodash = __commonJS({ function wrapperPlant(value2) { var result2, parent2 = this; while (parent2 instanceof baseLodash) { - var clone11 = wrapperClone(parent2); - clone11.__index__ = 0; - clone11.__values__ = undefined2; + var clone42 = wrapperClone(parent2); + clone42.__index__ = 0; + clone42.__values__ = undefined2; if (result2) { - previous.__wrapped__ = clone11; + previous.__wrapped__ = clone42; } else { - result2 = clone11; + result2 = clone42; } - var previous = clone11; + var previous = clone42; parent2 = parent2.__wrapped__; } previous.__wrapped__ = value2; @@ -9509,61 +16015,61 @@ var require_lodash = __commonJS({ return baseWrapperValue(this.__wrapped__, this.__actions__); } var countBy = createAggregator(function(result2, value2, key) { - if (hasOwnProperty4.call(result2, key)) { + if (hasOwnProperty.call(result2, key)) { ++result2[key]; } else { baseAssignValue(result2, key, 1); } }); - function every2(collection, predicate, guard) { - var func = isArray3(collection) ? arrayEvery : baseEvery; + function every4(collection, predicate, guard) { + var func = isArray87(collection) ? arrayEvery : baseEvery; if (guard && isIterateeCall(collection, predicate, guard)) { predicate = undefined2; } return func(collection, getIteratee(predicate, 3)); } - function filter2(collection, predicate) { - var func = isArray3(collection) ? arrayFilter : baseFilter; + function filter17(collection, predicate) { + var func = isArray87(collection) ? arrayFilter : baseFilter; return func(collection, getIteratee(predicate, 3)); } - var find4 = createFind(findIndex2); + var find11 = createFind(findIndex3); var findLast = createFind(findLastIndex); function flatMap(collection, iteratee2) { - return baseFlatten(map6(collection, iteratee2), 1); + return baseFlatten(map23(collection, iteratee2), 1); } function flatMapDeep(collection, iteratee2) { - return baseFlatten(map6(collection, iteratee2), INFINITY); + return baseFlatten(map23(collection, iteratee2), INFINITY); } function flatMapDepth(collection, iteratee2, depth) { depth = depth === undefined2 ? 1 : toInteger(depth); - return baseFlatten(map6(collection, iteratee2), depth); + return baseFlatten(map23(collection, iteratee2), depth); } function forEach4(collection, iteratee2) { - var func = isArray3(collection) ? arrayEach : baseEach; + var func = isArray87(collection) ? arrayEach : baseEach; return func(collection, getIteratee(iteratee2, 3)); } function forEachRight(collection, iteratee2) { - var func = isArray3(collection) ? arrayEachRight : baseEachRight; + var func = isArray87(collection) ? arrayEachRight : baseEachRight; return func(collection, getIteratee(iteratee2, 3)); } - var groupBy2 = createAggregator(function(result2, value2, key) { - if (hasOwnProperty4.call(result2, key)) { + var groupBy12 = createAggregator(function(result2, value2, key) { + if (hasOwnProperty.call(result2, key)) { result2[key].push(value2); } else { baseAssignValue(result2, key, [value2]); } }); - function includes(collection, value2, fromIndex, guard) { - collection = isArrayLike2(collection) ? collection : values2(collection); + function includes2(collection, value2, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values4(collection); fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0; var length5 = collection.length; if (fromIndex < 0) { fromIndex = nativeMax(length5 + fromIndex, 0); } - return isString2(collection) ? fromIndex <= length5 && collection.indexOf(value2, fromIndex) > -1 : !!length5 && baseIndexOf(collection, value2, fromIndex) > -1; + return isString67(collection) ? fromIndex <= length5 && collection.indexOf(value2, fromIndex) > -1 : !!length5 && baseIndexOf(collection, value2, fromIndex) > -1; } var invokeMap = baseRest(function(collection, path, args) { - var index2 = -1, isFunc = typeof path == "function", result2 = isArrayLike2(collection) ? Array2(collection.length) : []; + var index2 = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : []; baseEach(collection, function(value2) { result2[++index2] = isFunc ? apply(path, value2, args) : baseInvoke(value2, path, args); }); @@ -9572,19 +16078,19 @@ var require_lodash = __commonJS({ var keyBy = createAggregator(function(result2, value2, key) { baseAssignValue(result2, key, value2); }); - function map6(collection, iteratee2) { - var func = isArray3(collection) ? arrayMap : baseMap; + function map23(collection, iteratee2) { + var func = isArray87(collection) ? arrayMap : baseMap; return func(collection, getIteratee(iteratee2, 3)); } function orderBy(collection, iteratees, orders, guard) { if (collection == null) { return []; } - if (!isArray3(iteratees)) { + if (!isArray87(iteratees)) { iteratees = iteratees == null ? [] : [iteratees]; } orders = guard ? undefined2 : orders; - if (!isArray3(orders)) { + if (!isArray87(orders)) { orders = orders == null ? [] : [orders]; } return baseOrderBy(collection, iteratees, orders); @@ -9594,20 +16100,20 @@ var require_lodash = __commonJS({ }, function() { return [[], []]; }); - function reduce2(collection, iteratee2, accumulator) { - var func = isArray3(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3; + function reduce11(collection, iteratee2, accumulator) { + var func = isArray87(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3; return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach); } function reduceRight(collection, iteratee2, accumulator) { - var func = isArray3(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3; + var func = isArray87(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3; return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight); } function reject(collection, predicate) { - var func = isArray3(collection) ? arrayFilter : baseFilter; + var func = isArray87(collection) ? arrayFilter : baseFilter; return func(collection, negate4(getIteratee(predicate, 3))); } function sample(collection) { - var func = isArray3(collection) ? arraySample : baseSample; + var func = isArray87(collection) ? arraySample : baseSample; return func(collection); } function sampleSize(collection, n3, guard) { @@ -9616,19 +16122,19 @@ var require_lodash = __commonJS({ } else { n3 = toInteger(n3); } - var func = isArray3(collection) ? arraySampleSize : baseSampleSize; + var func = isArray87(collection) ? arraySampleSize : baseSampleSize; return func(collection, n3); } function shuffle3(collection) { - var func = isArray3(collection) ? arrayShuffle : baseShuffle; + var func = isArray87(collection) ? arrayShuffle : baseShuffle; return func(collection); } - function size2(collection) { + function size14(collection) { if (collection == null) { return 0; } - if (isArrayLike2(collection)) { - return isString2(collection) ? stringSize(collection) : collection.length; + if (isArrayLike(collection)) { + return isString67(collection) ? stringSize(collection) : collection.length; } var tag = getTag(collection); if (tag == mapTag4 || tag == setTag5) { @@ -9636,8 +16142,8 @@ var require_lodash = __commonJS({ } return baseKeys(collection).length; } - function some2(collection, predicate, guard) { - var func = isArray3(collection) ? arraySome : baseSome; + function some5(collection, predicate, guard) { + var func = isArray87(collection) ? arraySome : baseSome; if (guard && isIterateeCall(collection, predicate, guard)) { predicate = undefined2; } @@ -9718,13 +16224,13 @@ var require_lodash = __commonJS({ result2.placeholder = curryRight.placeholder; return result2; } - function debounce2(func, wait, options) { + function debounce5(func, wait, options) { var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } wait = toNumber(wait) || 0; - if (isObject4(options)) { + if (isObject33(options)) { leading = !!options.leading; maxing = "maxWait" in options; maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; @@ -9808,7 +16314,7 @@ var require_lodash = __commonJS({ function flip(func) { return createWrap(func, WRAP_FLIP_FLAG); } - function memoize(func, resolver) { + function memoize6(func, resolver) { if (typeof func != "function" || resolver != null && typeof resolver != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } @@ -9821,10 +16327,10 @@ var require_lodash = __commonJS({ memoized.cache = cache3.set(key, result2) || cache3; return result2; }; - memoized.cache = new (memoize.Cache || MapCache)(); + memoized.cache = new (memoize6.Cache || MapCache)(); return memoized; } - memoize.Cache = MapCache; + memoize6.Cache = MapCache; function negate4(predicate) { if (typeof predicate != "function") { throw new TypeError2(FUNC_ERROR_TEXT); @@ -9848,7 +16354,7 @@ var require_lodash = __commonJS({ return before(2, func); } var overArgs = castRest(function(func, transforms) { - transforms = transforms.length == 1 && isArray3(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); + transforms = transforms.length == 1 && isArray87(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); var funcsLength = transforms.length; return baseRest(function(args) { var index2 = -1, length5 = nativeMin(args.length, funcsLength); @@ -9889,16 +16395,16 @@ var require_lodash = __commonJS({ return apply(func, this, otherArgs); }); } - function throttle(func, wait, options) { + function throttle6(func, wait, options) { var leading = true, trailing = true; if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } - if (isObject4(options)) { + if (isObject33(options)) { leading = "leading" in options ? !!options.leading : leading; trailing = "trailing" in options ? !!options.trailing : trailing; } - return debounce2(func, wait, { + return debounce5(func, wait, { "leading": leading, "maxWait": wait, "trailing": trailing @@ -9915,9 +16421,9 @@ var require_lodash = __commonJS({ return []; } var value2 = arguments[0]; - return isArray3(value2) ? value2 : [value2]; + return isArray87(value2) ? value2 : [value2]; } - function clone10(value2) { + function clone41(value2) { return baseClone(value2, CLONE_SYMBOLS_FLAG); } function cloneWith(value2, customizer) { @@ -9932,7 +16438,7 @@ var require_lodash = __commonJS({ return baseClone(value2, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); } function conformsTo(object, source) { - return source == null || baseConformsTo(object, source, keys2(source)); + return source == null || baseConformsTo(object, source, keys6(source)); } function eq(value2, other2) { return value2 === other2 || value2 !== value2 && other2 !== other2; @@ -9944,46 +16450,46 @@ var require_lodash = __commonJS({ var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value2) { - return isObjectLike6(value2) && hasOwnProperty4.call(value2, "callee") && !propertyIsEnumerable.call(value2, "callee"); + return isObjectLike5(value2) && hasOwnProperty.call(value2, "callee") && !propertyIsEnumerable.call(value2, "callee"); }; - var isArray3 = Array2.isArray; + var isArray87 = Array2.isArray; var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; - function isArrayLike2(value2) { - return value2 != null && isLength4(value2.length) && !isFunction2(value2); + function isArrayLike(value2) { + return value2 != null && isLength4(value2.length) && !isFunction44(value2); } function isArrayLikeObject(value2) { - return isObjectLike6(value2) && isArrayLike2(value2); + return isObjectLike5(value2) && isArrayLike(value2); } - function isBoolean3(value2) { - return value2 === true || value2 === false || isObjectLike6(value2) && baseGetTag(value2) == boolTag4; + function isBoolean10(value2) { + return value2 === true || value2 === false || isObjectLike5(value2) && baseGetTag(value2) == boolTag4; } var isBuffer = nativeIsBuffer || stubFalse; - var isDate2 = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; - function isElement2(value2) { - return isObjectLike6(value2) && value2.nodeType === 1 && !isPlainObject3(value2); + var isDate3 = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; + function isElement3(value2) { + return isObjectLike5(value2) && value2.nodeType === 1 && !isPlainObject10(value2); } - function isEmpty2(value2) { + function isEmpty14(value2) { if (value2 == null) { return true; } - if (isArrayLike2(value2) && (isArray3(value2) || typeof value2 == "string" || typeof value2.splice == "function" || isBuffer(value2) || isTypedArray4(value2) || isArguments(value2))) { + if (isArrayLike(value2) && (isArray87(value2) || typeof value2 == "string" || typeof value2.splice == "function" || isBuffer(value2) || isTypedArray4(value2) || isArguments(value2))) { return !value2.length; } var tag = getTag(value2); if (tag == mapTag4 || tag == setTag5) { return !value2.size; } - if (isPrototype2(value2)) { + if (isPrototype(value2)) { return !baseKeys(value2).length; } for (var key in value2) { - if (hasOwnProperty4.call(value2, key)) { + if (hasOwnProperty.call(value2, key)) { return false; } } return true; } - function isEqual3(value2, other2) { + function isEqual24(value2, other2) { return baseIsEqual(value2, other2); } function isEqualWith(value2, other2, customizer) { @@ -9992,33 +16498,33 @@ var require_lodash = __commonJS({ return result2 === undefined2 ? baseIsEqual(value2, other2, undefined2, customizer) : !!result2; } function isError(value2) { - if (!isObjectLike6(value2)) { + if (!isObjectLike5(value2)) { return false; } var tag = baseGetTag(value2); - return tag == errorTag4 || tag == domExcTag || typeof value2.message == "string" && typeof value2.name == "string" && !isPlainObject3(value2); + return tag == errorTag4 || tag == domExcTag || typeof value2.message == "string" && typeof value2.name == "string" && !isPlainObject10(value2); } function isFinite2(value2) { return typeof value2 == "number" && nativeIsFinite(value2); } - function isFunction2(value2) { - if (!isObject4(value2)) { + function isFunction44(value2) { + if (!isObject33(value2)) { return false; } var tag = baseGetTag(value2); return tag == funcTag4 || tag == genTag || tag == asyncTag || tag == proxyTag; } - function isInteger3(value2) { + function isInteger2(value2) { return typeof value2 == "number" && value2 == toInteger(value2); } function isLength4(value2) { return typeof value2 == "number" && value2 > -1 && value2 % 1 == 0 && value2 <= MAX_SAFE_INTEGER4; } - function isObject4(value2) { + function isObject33(value2) { var type2 = typeof value2; return value2 != null && (type2 == "object" || type2 == "function"); } - function isObjectLike6(value2) { + function isObjectLike5(value2) { return value2 != null && typeof value2 == "object"; } var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; @@ -10030,7 +16536,7 @@ var require_lodash = __commonJS({ return baseIsMatch(object, source, getMatchData(source), customizer); } function isNaN6(value2) { - return isNumber7(value2) && value2 != +value2; + return isNumber57(value2) && value2 != +value2; } function isNative(value2) { if (isMaskable(value2)) { @@ -10041,59 +16547,59 @@ var require_lodash = __commonJS({ function isNull3(value2) { return value2 === null; } - function isNil2(value2) { + function isNil67(value2) { return value2 == null; } - function isNumber7(value2) { - return typeof value2 == "number" || isObjectLike6(value2) && baseGetTag(value2) == numberTag4; + function isNumber57(value2) { + return typeof value2 == "number" || isObjectLike5(value2) && baseGetTag(value2) == numberTag4; } - function isPlainObject3(value2) { - if (!isObjectLike6(value2) || baseGetTag(value2) != objectTag4) { + function isPlainObject10(value2) { + if (!isObjectLike5(value2) || baseGetTag(value2) != objectTag4) { return false; } var proto = getPrototype(value2); if (proto === null) { return true; } - var Ctor = hasOwnProperty4.call(proto, "constructor") && proto.constructor; + var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor; return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; } var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; function isSafeInteger(value2) { - return isInteger3(value2) && value2 >= -MAX_SAFE_INTEGER4 && value2 <= MAX_SAFE_INTEGER4; + return isInteger2(value2) && value2 >= -MAX_SAFE_INTEGER4 && value2 <= MAX_SAFE_INTEGER4; } var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - function isString2(value2) { - return typeof value2 == "string" || !isArray3(value2) && isObjectLike6(value2) && baseGetTag(value2) == stringTag4; + function isString67(value2) { + return typeof value2 == "string" || !isArray87(value2) && isObjectLike5(value2) && baseGetTag(value2) == stringTag4; } function isSymbol(value2) { - return typeof value2 == "symbol" || isObjectLike6(value2) && baseGetTag(value2) == symbolTag; + return typeof value2 == "symbol" || isObjectLike5(value2) && baseGetTag(value2) == symbolTag; } var isTypedArray4 = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray4; - function isUndefined2(value2) { + function isUndefined5(value2) { return value2 === undefined2; } function isWeakMap(value2) { - return isObjectLike6(value2) && getTag(value2) == weakMapTag4; + return isObjectLike5(value2) && getTag(value2) == weakMapTag4; } function isWeakSet(value2) { - return isObjectLike6(value2) && baseGetTag(value2) == weakSetTag; + return isObjectLike5(value2) && baseGetTag(value2) == weakSetTag; } var lt = createRelationalOperation(baseLt); var lte = createRelationalOperation(function(value2, other2) { return value2 <= other2; }); - function toArray2(value2) { + function toArray3(value2) { if (!value2) { return []; } - if (isArrayLike2(value2)) { - return isString2(value2) ? stringToArray(value2) : copyArray(value2); + if (isArrayLike(value2)) { + return isString67(value2) ? stringToArray(value2) : copyArray(value2); } if (symIterator && value2[symIterator]) { return iteratorToArray(value2[symIterator]()); } - var tag = getTag(value2), func = tag == mapTag4 ? mapToArray : tag == setTag5 ? setToArray : values2; + var tag = getTag(value2), func = tag == mapTag4 ? mapToArray : tag == setTag5 ? setToArray : values4; return func(value2); } function toFinite(value2) { @@ -10121,9 +16627,9 @@ var require_lodash = __commonJS({ if (isSymbol(value2)) { return NAN; } - if (isObject4(value2)) { + if (isObject33(value2)) { var other2 = typeof value2.valueOf == "function" ? value2.valueOf() : value2; - value2 = isObject4(other2) ? other2 + "" : other2; + value2 = isObject33(other2) ? other2 + "" : other2; } if (typeof value2 != "string") { return value2 === 0 ? value2 : +value2; @@ -10141,13 +16647,13 @@ var require_lodash = __commonJS({ function toString7(value2) { return value2 == null ? "" : baseToString(value2); } - var assign2 = createAssigner(function(object, source) { - if (isPrototype2(source) || isArrayLike2(source)) { - copyObject(source, keys2(source), object); + var assign14 = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys6(source), object); return; } for (var key in source) { - if (hasOwnProperty4.call(source, key)) { + if (hasOwnProperty.call(source, key)) { assignValue(object, key, source[key]); } } @@ -10159,7 +16665,7 @@ var require_lodash = __commonJS({ copyObject(source, keysIn(source), object, customizer); }); var assignWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keys2(source), object, customizer); + copyObject(source, keys6(source), object, customizer); }); var at = flatRest(baseAt); function create8(prototype, properties) { @@ -10182,7 +16688,7 @@ var require_lodash = __commonJS({ while (++propsIndex < propsLength) { var key = props[propsIndex]; var value2 = object[key]; - if (value2 === undefined2 || eq(value2, objectProto5[key]) && !hasOwnProperty4.call(object, key)) { + if (value2 === undefined2 || eq(value2, objectProto4[key]) && !hasOwnProperty.call(object, key)) { object[key] = source[key]; } } @@ -10199,7 +16705,7 @@ var require_lodash = __commonJS({ function findLastKey(object, predicate) { return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); } - function forIn(object, iteratee2) { + function forIn2(object, iteratee2) { return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn); } function forInRight(object, iteratee2) { @@ -10212,12 +16718,12 @@ var require_lodash = __commonJS({ return object && baseForOwnRight(object, getIteratee(iteratee2, 3)); } function functions(object) { - return object == null ? [] : baseFunctions(object, keys2(object)); + return object == null ? [] : baseFunctions(object, keys6(object)); } function functionsIn(object) { return object == null ? [] : baseFunctions(object, keysIn(object)); } - function get3(object, path, defaultValue) { + function get100(object, path, defaultValue) { var result2 = object == null ? undefined2 : baseGet(object, path); return result2 === undefined2 ? defaultValue : result2; } @@ -10232,23 +16738,23 @@ var require_lodash = __commonJS({ value2 = nativeObjectToString.call(value2); } result2[value2] = key; - }, constant2(identity5)); + }, constant2(identity4)); var invertBy = createInverter(function(result2, value2, key) { if (value2 != null && typeof value2.toString != "function") { value2 = nativeObjectToString.call(value2); } - if (hasOwnProperty4.call(result2, value2)) { + if (hasOwnProperty.call(result2, value2)) { result2[value2].push(key); } else { result2[value2] = [key]; } }, getIteratee); var invoke = baseRest(baseInvoke); - function keys2(object) { - return isArrayLike2(object) ? arrayLikeKeys(object) : baseKeys(object); + function keys6(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } function keysIn(object) { - return isArrayLike2(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); } function mapKeys(object, iteratee2) { var result2 = {}; @@ -10258,7 +16764,7 @@ var require_lodash = __commonJS({ }); return result2; } - function mapValues(object, iteratee2) { + function mapValues2(object, iteratee2) { var result2 = {}; iteratee2 = getIteratee(iteratee2, 3); baseForOwn(object, function(value2, key, object2) { @@ -10272,7 +16778,7 @@ var require_lodash = __commonJS({ var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { baseMerge(object, source, srcIndex, customizer); }); - var omit2 = flatRest(function(object, paths) { + var omit6 = flatRest(function(object, paths) { var result2 = {}; if (object == null) { return result2; @@ -10296,7 +16802,7 @@ var require_lodash = __commonJS({ function omitBy(object, predicate) { return pickBy(object, negate4(getIteratee(predicate))); } - var pick2 = flatRest(function(object, paths) { + var pick5 = flatRest(function(object, paths) { return object == null ? {} : basePick(object, paths); }); function pickBy(object, predicate) { @@ -10324,28 +16830,28 @@ var require_lodash = __commonJS({ index2 = length5; value2 = defaultValue; } - object = isFunction2(value2) ? value2.call(object) : value2; + object = isFunction44(value2) ? value2.call(object) : value2; } return object; } - function set10(object, path, value2) { + function set13(object, path, value2) { return object == null ? object : baseSet(object, path, value2); } function setWith(object, path, value2, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; return object == null ? object : baseSet(object, path, value2, customizer); } - var toPairs = createToPairs(keys2); + var toPairs = createToPairs(keys6); var toPairsIn = createToPairs(keysIn); function transform18(object, iteratee2, accumulator) { - var isArr = isArray3(object), isArrLike = isArr || isBuffer(object) || isTypedArray4(object); + var isArr = isArray87(object), isArrLike = isArr || isBuffer(object) || isTypedArray4(object); iteratee2 = getIteratee(iteratee2, 4); if (accumulator == null) { var Ctor = object && object.constructor; if (isArrLike) { accumulator = isArr ? new Ctor() : []; - } else if (isObject4(object)) { - accumulator = isFunction2(Ctor) ? baseCreate(getPrototype(object)) : {}; + } else if (isObject33(object)) { + accumulator = isFunction44(Ctor) ? baseCreate(getPrototype(object)) : {}; } else { accumulator = {}; } @@ -10365,13 +16871,13 @@ var require_lodash = __commonJS({ customizer = typeof customizer == "function" ? customizer : undefined2; return object == null ? object : baseUpdate2(object, path, castFunction(updater), customizer); } - function values2(object) { - return object == null ? [] : baseValues(object, keys2(object)); + function values4(object) { + return object == null ? [] : baseValues(object, keys6(object)); } function valuesIn(object) { return object == null ? [] : baseValues(object, keysIn(object)); } - function clamp2(number, lower, upper) { + function clamp12(number, lower, upper) { if (upper === undefined2) { upper = lower; lower = undefined2; @@ -10438,7 +16944,7 @@ var require_lodash = __commonJS({ return result2 + (index2 ? capitalize(word2) : word2); }); function capitalize(string) { - return upperFirst2(toString7(string).toLowerCase()); + return upperFirst8(toString7(string).toLowerCase()); } function deburr(string) { string = toString7(string); @@ -10464,7 +16970,7 @@ var require_lodash = __commonJS({ var kebabCase2 = createCompounder(function(result2, word2, index2) { return result2 + (index2 ? "-" : "") + word2.toLowerCase(); }); - var lowerCase2 = createCompounder(function(result2, word2, index2) { + var lowerCase4 = createCompounder(function(result2, word2, index2) { return result2 + (index2 ? " " : "") + word2.toLowerCase(); }); var lowerFirst = createCaseFirst("toLowerCase"); @@ -10531,7 +17037,7 @@ var require_lodash = __commonJS({ return string.split(separator, limit); } var startCase = createCompounder(function(result2, word2, index2) { - return result2 + (index2 ? " " : "") + upperFirst2(word2); + return result2 + (index2 ? " " : "") + upperFirst8(word2); }); function startsWith(string, target, position2) { string = toString7(string); @@ -10546,10 +17052,10 @@ var require_lodash = __commonJS({ } string = toString7(string); options = assignInWith({}, options, settings, customDefaultsAssignIn); - var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys2(imports), importsValues = baseValues(imports, importsKeys); + var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys6(imports), importsValues = baseValues(imports, importsKeys); var isEscaping, isEvaluating, index2 = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '"; var reDelimiters = RegExp2((options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", "g"); - var sourceURL = "//# sourceURL=" + (hasOwnProperty4.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n"; + var sourceURL = "//# sourceURL=" + (hasOwnProperty.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n"; string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { interpolateValue || (interpolateValue = esTemplateValue); source += string.slice(index2, offset).replace(reUnescapedString, escapeStringChar); @@ -10568,7 +17074,7 @@ var require_lodash = __commonJS({ return match; }); source += "';\n"; - var variable = hasOwnProperty4.call(options, "variable") && options.variable; + var variable = hasOwnProperty.call(options, "variable") && options.variable; if (!variable) { source = "with (obj) {\n" + source + "\n}\n"; } else if (reForbiddenIdentifierChars.test(variable)) { @@ -10626,7 +17132,7 @@ var require_lodash = __commonJS({ } function truncate(string, options) { var length5 = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION; - if (isObject4(options)) { + if (isObject33(options)) { var separator = "separator" in options ? options.separator : separator; length5 = "length" in options ? toInteger(options.length) : length5; omission = "omission" in options ? baseToString(options.omission) : omission; @@ -10678,7 +17184,7 @@ var require_lodash = __commonJS({ var upperCase = createCompounder(function(result2, word2, index2) { return result2 + (index2 ? " " : "") + word2.toUpperCase(); }); - var upperFirst2 = createCaseFirst("toUpperCase"); + var upperFirst8 = createCaseFirst("toUpperCase"); function words(string, pattern2, guard) { string = toString7(string); pattern2 = guard ? undefined2 : pattern2; @@ -10732,7 +17238,7 @@ var require_lodash = __commonJS({ } var flow2 = createFlow(); var flowRight = createFlow(true); - function identity5(value2) { + function identity4(value2) { return value2; } function iteratee(func) { @@ -10755,14 +17261,14 @@ var require_lodash = __commonJS({ }; }); function mixin(object, source, options) { - var props = keys2(source), methodNames = baseFunctions(source, props); - if (options == null && !(isObject4(source) && (methodNames.length || !props.length))) { + var props = keys6(source), methodNames = baseFunctions(source, props); + if (options == null && !(isObject33(source) && (methodNames.length || !props.length))) { options = source; source = object; object = this; - methodNames = baseFunctions(source, keys2(source)); + methodNames = baseFunctions(source, keys6(source)); } - var chain2 = !(isObject4(options) && "chain" in options) || !!options.chain, isFunc = isFunction2(object); + var chain2 = !(isObject33(options) && "chain" in options) || !!options.chain, isFunc = isFunction44(object); arrayEach(methodNames, function(methodName) { var func = source[methodName]; object[methodName] = func; @@ -10787,7 +17293,7 @@ var require_lodash = __commonJS({ } return this; } - function noop2() { + function noop7() { } function nthArg(n3) { n3 = toInteger(n3); @@ -10838,12 +17344,12 @@ var require_lodash = __commonJS({ return result2; } function toPath(value2) { - if (isArray3(value2)) { + if (isArray87(value2)) { return arrayMap(value2, toKey); } return isSymbol(value2) ? [value2] : copyArray(stringToPath(toString7(value2))); } - function uniqueId5(prefix2) { + function uniqueId14(prefix2) { var id = ++idCounter; return toString7(prefix2) + id; } @@ -10855,22 +17361,22 @@ var require_lodash = __commonJS({ return dividend / divisor; }, 1); var floor4 = createRound("floor"); - function max8(array) { - return array && array.length ? baseExtremum(array, identity5, baseGt) : undefined2; + function max15(array) { + return array && array.length ? baseExtremum(array, identity4, baseGt) : undefined2; } - function maxBy(array, iteratee2) { + function maxBy3(array, iteratee2) { return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined2; } function mean(array) { - return baseMean(array, identity5); + return baseMean(array, identity4); } function meanBy(array, iteratee2) { return baseMean(array, getIteratee(iteratee2, 2)); } - function min7(array) { - return array && array.length ? baseExtremum(array, identity5, baseLt) : undefined2; + function min13(array) { + return array && array.length ? baseExtremum(array, identity4, baseLt) : undefined2; } - function minBy2(array, iteratee2) { + function minBy3(array, iteratee2) { return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined2; } var multiply7 = createMathOperation(function(multiplier, multiplicand) { @@ -10881,14 +17387,14 @@ var require_lodash = __commonJS({ return minuend - subtrahend; }, 0); function sum(array) { - return array && array.length ? baseSum(array, identity5) : 0; + return array && array.length ? baseSum(array, identity4) : 0; } function sumBy2(array, iteratee2) { return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0; } lodash.after = after; lodash.ary = ary; - lodash.assign = assign2; + lodash.assign = assign14; lodash.assignIn = assignIn; lodash.assignInWith = assignInWith; lodash.assignWith = assignWith; @@ -10909,7 +17415,7 @@ var require_lodash = __commonJS({ lodash.create = create8; lodash.curry = curry; lodash.curryRight = curryRight; - lodash.debounce = debounce2; + lodash.debounce = debounce5; lodash.defaults = defaults; lodash.defaultsDeep = defaultsDeep; lodash.defer = defer; @@ -10922,11 +17428,11 @@ var require_lodash = __commonJS({ lodash.dropRightWhile = dropRightWhile; lodash.dropWhile = dropWhile; lodash.fill = fill; - lodash.filter = filter2; + lodash.filter = filter17; lodash.flatMap = flatMap; lodash.flatMapDeep = flatMapDeep; lodash.flatMapDepth = flatMapDepth; - lodash.flatten = flatten2; + lodash.flatten = flatten9; lodash.flattenDeep = flattenDeep; lodash.flattenDepth = flattenDepth; lodash.flip = flip; @@ -10935,7 +17441,7 @@ var require_lodash = __commonJS({ lodash.fromPairs = fromPairs; lodash.functions = functions; lodash.functionsIn = functionsIn; - lodash.groupBy = groupBy2; + lodash.groupBy = groupBy12; lodash.initial = initial; lodash.intersection = intersection2; lodash.intersectionBy = intersectionBy; @@ -10945,14 +17451,14 @@ var require_lodash = __commonJS({ lodash.invokeMap = invokeMap; lodash.iteratee = iteratee; lodash.keyBy = keyBy; - lodash.keys = keys2; + lodash.keys = keys6; lodash.keysIn = keysIn; - lodash.map = map6; + lodash.map = map23; lodash.mapKeys = mapKeys; - lodash.mapValues = mapValues; + lodash.mapValues = mapValues2; lodash.matches = matches; lodash.matchesProperty = matchesProperty; - lodash.memoize = memoize; + lodash.memoize = memoize6; lodash.merge = merge3; lodash.mergeWith = mergeWith; lodash.method = method; @@ -10960,7 +17466,7 @@ var require_lodash = __commonJS({ lodash.mixin = mixin; lodash.negate = negate4; lodash.nthArg = nthArg; - lodash.omit = omit2; + lodash.omit = omit6; lodash.omitBy = omitBy; lodash.once = once; lodash.orderBy = orderBy; @@ -10971,7 +17477,7 @@ var require_lodash = __commonJS({ lodash.partial = partial; lodash.partialRight = partialRight; lodash.partition = partition3; - lodash.pick = pick2; + lodash.pick = pick5; lodash.pickBy = pickBy; lodash.property = property; lodash.propertyOf = propertyOf; @@ -10979,7 +17485,7 @@ var require_lodash = __commonJS({ lodash.pullAll = pullAll; lodash.pullAllBy = pullAllBy; lodash.pullAllWith = pullAllWith; - lodash.pullAt = pullAt3; + lodash.pullAt = pullAt; lodash.range = range; lodash.rangeRight = rangeRight; lodash.rearg = rearg; @@ -10988,7 +17494,7 @@ var require_lodash = __commonJS({ lodash.rest = rest; lodash.reverse = reverse; lodash.sampleSize = sampleSize; - lodash.set = set10; + lodash.set = set13; lodash.setWith = setWith; lodash.shuffle = shuffle3; lodash.slice = slice; @@ -11003,9 +17509,9 @@ var require_lodash = __commonJS({ lodash.takeRightWhile = takeRightWhile; lodash.takeWhile = takeWhile; lodash.tap = tap; - lodash.throttle = throttle; + lodash.throttle = throttle6; lodash.thru = thru; - lodash.toArray = toArray2; + lodash.toArray = toArray3; lodash.toPairs = toPairs; lodash.toPairsIn = toPairsIn; lodash.toPath = toPath; @@ -11015,7 +17521,7 @@ var require_lodash = __commonJS({ lodash.union = union; lodash.unionBy = unionBy; lodash.unionWith = unionWith; - lodash.uniq = uniq5; + lodash.uniq = uniq10; lodash.uniqBy = uniqBy; lodash.uniqWith = uniqWith; lodash.unset = unset; @@ -11023,7 +17529,7 @@ var require_lodash = __commonJS({ lodash.unzipWith = unzipWith; lodash.update = update15; lodash.updateWith = updateWith; - lodash.values = values2; + lodash.values = values4; lodash.valuesIn = valuesIn; lodash.without = without; lodash.words = words; @@ -11045,8 +17551,8 @@ var require_lodash = __commonJS({ lodash.camelCase = camelCase; lodash.capitalize = capitalize; lodash.ceil = ceil4; - lodash.clamp = clamp2; - lodash.clone = clone10; + lodash.clamp = clamp12; + lodash.clone = clone41; lodash.cloneDeep = cloneDeep; lodash.cloneDeepWith = cloneDeepWith; lodash.cloneWith = cloneWith; @@ -11058,9 +17564,9 @@ var require_lodash = __commonJS({ lodash.eq = eq; lodash.escape = escape; lodash.escapeRegExp = escapeRegExp; - lodash.every = every2; - lodash.find = find4; - lodash.findIndex = findIndex2; + lodash.every = every4; + lodash.find = find11; + lodash.findIndex = findIndex3; lodash.findKey = findKey; lodash.findLast = findLast; lodash.findLastIndex = findLastIndex; @@ -11068,72 +17574,72 @@ var require_lodash = __commonJS({ lodash.floor = floor4; lodash.forEach = forEach4; lodash.forEachRight = forEachRight; - lodash.forIn = forIn; + lodash.forIn = forIn2; lodash.forInRight = forInRight; lodash.forOwn = forOwn; lodash.forOwnRight = forOwnRight; - lodash.get = get3; + lodash.get = get100; lodash.gt = gt; lodash.gte = gte; lodash.has = has; lodash.hasIn = hasIn; - lodash.head = head2; - lodash.identity = identity5; - lodash.includes = includes; - lodash.indexOf = indexOf3; + lodash.head = head13; + lodash.identity = identity4; + lodash.includes = includes2; + lodash.indexOf = indexOf2; lodash.inRange = inRange; lodash.invoke = invoke; lodash.isArguments = isArguments; - lodash.isArray = isArray3; + lodash.isArray = isArray87; lodash.isArrayBuffer = isArrayBuffer; - lodash.isArrayLike = isArrayLike2; + lodash.isArrayLike = isArrayLike; lodash.isArrayLikeObject = isArrayLikeObject; - lodash.isBoolean = isBoolean3; + lodash.isBoolean = isBoolean10; lodash.isBuffer = isBuffer; - lodash.isDate = isDate2; - lodash.isElement = isElement2; - lodash.isEmpty = isEmpty2; - lodash.isEqual = isEqual3; + lodash.isDate = isDate3; + lodash.isElement = isElement3; + lodash.isEmpty = isEmpty14; + lodash.isEqual = isEqual24; lodash.isEqualWith = isEqualWith; lodash.isError = isError; lodash.isFinite = isFinite2; - lodash.isFunction = isFunction2; - lodash.isInteger = isInteger3; + lodash.isFunction = isFunction44; + lodash.isInteger = isInteger2; lodash.isLength = isLength4; lodash.isMap = isMap; lodash.isMatch = isMatch2; lodash.isMatchWith = isMatchWith; lodash.isNaN = isNaN6; lodash.isNative = isNative; - lodash.isNil = isNil2; + lodash.isNil = isNil67; lodash.isNull = isNull3; - lodash.isNumber = isNumber7; - lodash.isObject = isObject4; - lodash.isObjectLike = isObjectLike6; - lodash.isPlainObject = isPlainObject3; + lodash.isNumber = isNumber57; + lodash.isObject = isObject33; + lodash.isObjectLike = isObjectLike5; + lodash.isPlainObject = isPlainObject10; lodash.isRegExp = isRegExp; lodash.isSafeInteger = isSafeInteger; lodash.isSet = isSet; - lodash.isString = isString2; + lodash.isString = isString67; lodash.isSymbol = isSymbol; lodash.isTypedArray = isTypedArray4; - lodash.isUndefined = isUndefined2; + lodash.isUndefined = isUndefined5; lodash.isWeakMap = isWeakMap; lodash.isWeakSet = isWeakSet; lodash.join = join; lodash.kebabCase = kebabCase2; - lodash.last = last2; + lodash.last = last17; lodash.lastIndexOf = lastIndexOf; - lodash.lowerCase = lowerCase2; + lodash.lowerCase = lowerCase4; lodash.lowerFirst = lowerFirst; lodash.lt = lt; lodash.lte = lte; - lodash.max = max8; - lodash.maxBy = maxBy; + lodash.max = max15; + lodash.maxBy = maxBy3; lodash.mean = mean; lodash.meanBy = meanBy; - lodash.min = min7; - lodash.minBy = minBy2; + lodash.min = min13; + lodash.minBy = minBy3; lodash.stubArray = stubArray; lodash.stubFalse = stubFalse; lodash.stubObject = stubObject; @@ -11142,14 +17648,14 @@ var require_lodash = __commonJS({ lodash.multiply = multiply7; lodash.nth = nth; lodash.noConflict = noConflict; - lodash.noop = noop2; + lodash.noop = noop7; lodash.now = now2; lodash.pad = pad2; lodash.padEnd = padEnd2; lodash.padStart = padStart2; lodash.parseInt = parseInt2; lodash.random = random5; - lodash.reduce = reduce2; + lodash.reduce = reduce11; lodash.reduceRight = reduceRight; lodash.repeat = repeat2; lodash.replace = replace; @@ -11157,9 +17663,9 @@ var require_lodash = __commonJS({ lodash.round = round5; lodash.runInContext = runInContext2; lodash.sample = sample; - lodash.size = size2; + lodash.size = size14; lodash.snakeCase = snakeCase; - lodash.some = some2; + lodash.some = some5; lodash.sortedIndex = sortedIndex; lodash.sortedIndexBy = sortedIndexBy; lodash.sortedIndexOf = sortedIndexOf; @@ -11186,16 +17692,16 @@ var require_lodash = __commonJS({ lodash.trimStart = trimStart; lodash.truncate = truncate; lodash.unescape = unescape; - lodash.uniqueId = uniqueId5; + lodash.uniqueId = uniqueId14; lodash.upperCase = upperCase; - lodash.upperFirst = upperFirst2; + lodash.upperFirst = upperFirst8; lodash.each = forEach4; lodash.eachRight = forEachRight; - lodash.first = head2; + lodash.first = head13; mixin(lodash, function() { var source = {}; baseForOwn(lodash, function(func, methodName) { - if (!hasOwnProperty4.call(lodash.prototype, methodName)) { + if (!hasOwnProperty.call(lodash.prototype, methodName)) { source[methodName] = func; } }); @@ -11248,7 +17754,7 @@ var require_lodash = __commonJS({ }; }); LazyWrapper.prototype.compact = function() { - return this.filter(identity5); + return this.filter(identity4); }; LazyWrapper.prototype.find = function(predicate) { return this.filter(predicate).head(); @@ -11296,7 +17802,7 @@ var require_lodash = __commonJS({ return; } lodash.prototype[methodName] = function() { - var value2 = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value2 instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray3(value2); + var value2 = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value2 instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray87(value2); var interceptor = function(value3) { var result3 = lodashFunc.apply(lodash, arrayPush([value3], args)); return isTaker && chainAll ? result3[0] : result3; @@ -11324,10 +17830,10 @@ var require_lodash = __commonJS({ var args = arguments; if (retUnwrapped && !this.__chain__) { var value2 = this.value(); - return func.apply(isArray3(value2) ? value2 : [], args); + return func.apply(isArray87(value2) ? value2 : [], args); } return this[chainName](function(value3) { - return func.apply(isArray3(value3) ? value3 : [], args); + return func.apply(isArray87(value3) ? value3 : [], args); }); }; }); @@ -11335,7 +17841,7 @@ var require_lodash = __commonJS({ var lodashFunc = lodash[methodName]; if (lodashFunc) { var key = lodashFunc.name + ""; - if (!hasOwnProperty4.call(realNames, key)) { + if (!hasOwnProperty.call(realNames, key)) { realNames[key] = []; } realNames[key].push({ "name": methodName, "func": lodashFunc }); @@ -11600,7 +18106,7 @@ var require_graph = __commonJS({ } return neighbors.length === 0; }; - Graph10.prototype.filterNodes = function(filter2) { + Graph10.prototype.filterNodes = function(filter17) { var copy8 = new this.constructor({ directed: this._isDirected, multigraph: this._isMultigraph, @@ -11608,7 +18114,7 @@ var require_graph = __commonJS({ }); copy8.setGraph(this.graph()); _8.each(this._nodes, _8.bind(function(value2, v3) { - if (filter2(v3)) { + if (filter17(v3)) { copy8.setNode(v3, value2); } }, this)); @@ -11764,16 +18270,16 @@ var require_graph = __commonJS({ return inEdges.concat(this.outEdges(v3, w4)); } }; - function incrementOrInitEntry(map6, k4) { - if (map6[k4]) { - map6[k4]++; + function incrementOrInitEntry(map23, k4) { + if (map23[k4]) { + map23[k4]++; } else { - map6[k4] = 1; + map23[k4] = 1; } } - function decrementOrRemoveEntry(map6, k4) { - if (!--map6[k4]) { - delete map6[k4]; + function decrementOrRemoveEntry(map23, k4) { + if (!--map23[k4]) { + delete map23[k4]; } } function edgeArgsToId(isDirected, v_, w_, name) { @@ -11814,7 +18320,7 @@ var require_version = __commonJS({ }); // node_modules/@dagrejs/graphlib/lib/index.js -var require_lib2 = __commonJS({ +var require_lib3 = __commonJS({ "node_modules/@dagrejs/graphlib/lib/index.js"(exports, module2) { module2.exports = { Graph: require_graph(), @@ -11961,10 +18467,10 @@ var require_priority_queue = __commonJS({ }; PriorityQueue.prototype.removeMin = function() { this._swap(0, this._arr.length - 1); - var min7 = this._arr.pop(); - delete this._keyIndices[min7.key]; + var min13 = this._arr.pop(); + delete this._keyIndices[min13.key]; this._heapify(0); - return min7.key; + return min13.key; }; PriorityQueue.prototype.decrease = function(key, priority) { var index2 = this._keyIndices[key]; @@ -12015,7 +18521,7 @@ var require_priority_queue = __commonJS({ }); // node_modules/@dagrejs/graphlib/lib/alg/dijkstra.js -var require_dijkstra = __commonJS({ +var require_dijkstra2 = __commonJS({ "node_modules/@dagrejs/graphlib/lib/alg/dijkstra.js"(exports, module2) { var _8 = require_lodash2(); var PriorityQueue = require_priority_queue(); @@ -12060,7 +18566,7 @@ var require_dijkstra = __commonJS({ // node_modules/@dagrejs/graphlib/lib/alg/dijkstra-all.js var require_dijkstra_all = __commonJS({ "node_modules/@dagrejs/graphlib/lib/alg/dijkstra-all.js"(exports, module2) { - var dijkstra3 = require_dijkstra(); + var dijkstra3 = require_dijkstra2(); var _8 = require_lodash2(); module2.exports = dijkstraAll; function dijkstraAll(g4, weightFunc, edgeFunc) { @@ -12225,7 +18731,7 @@ var require_is_acyclic = __commonJS({ }); // node_modules/@dagrejs/graphlib/lib/alg/dfs.js -var require_dfs = __commonJS({ +var require_dfs2 = __commonJS({ "node_modules/@dagrejs/graphlib/lib/alg/dfs.js"(exports, module2) { var _8 = require_lodash2(); module2.exports = dfs2; @@ -12263,7 +18769,7 @@ var require_dfs = __commonJS({ // node_modules/@dagrejs/graphlib/lib/alg/postorder.js var require_postorder = __commonJS({ "node_modules/@dagrejs/graphlib/lib/alg/postorder.js"(exports, module2) { - var dfs2 = require_dfs(); + var dfs2 = require_dfs2(); module2.exports = postorder3; function postorder3(g4, vs) { return dfs2(g4, vs, "post"); @@ -12274,7 +18780,7 @@ var require_postorder = __commonJS({ // node_modules/@dagrejs/graphlib/lib/alg/preorder.js var require_preorder = __commonJS({ "node_modules/@dagrejs/graphlib/lib/alg/preorder.js"(exports, module2) { - var dfs2 = require_dfs(); + var dfs2 = require_dfs2(); module2.exports = preorder2; function preorder2(g4, vs) { return dfs2(g4, vs, "pre"); @@ -12331,7 +18837,7 @@ var require_alg = __commonJS({ "node_modules/@dagrejs/graphlib/lib/alg/index.js"(exports, module2) { module2.exports = { components: require_components(), - dijkstra: require_dijkstra(), + dijkstra: require_dijkstra2(), dijkstraAll: require_dijkstra_all(), findCycles: require_find_cycles(), floydWarshall: require_floyd_warshall(), @@ -12348,7 +18854,7 @@ var require_alg = __commonJS({ // node_modules/@dagrejs/graphlib/index.js var require_graphlib = __commonJS({ "node_modules/@dagrejs/graphlib/index.js"(exports, module2) { - var lib = require_lib2(); + var lib = require_lib3(); module2.exports = { Graph: lib.Graph, json: require_json(), @@ -12394,9 +18900,9 @@ var require_runtime = __commonJS({ return generator; } exports2.wrap = wrap; - function tryCatch(fn2, obj, arg) { + function tryCatch(fn, obj, arg) { try { - return { type: "normal", arg: fn2.call(obj, arg) }; + return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } @@ -12417,7 +18923,7 @@ var require_runtime = __commonJS({ return this; }); var getProto = Object.getPrototypeOf; - var NativeIteratorPrototype = getProto && getProto(getProto(values2([]))); + var NativeIteratorPrototype = getProto && getProto(getProto(values4([]))); if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { IteratorPrototype = NativeIteratorPrototype; } @@ -12627,14 +19133,14 @@ var require_runtime = __commonJS({ this.reset(true); } exports2.keys = function(object) { - var keys2 = []; + var keys6 = []; for (var key in object) { - keys2.push(key); + keys6.push(key); } - keys2.reverse(); + keys6.reverse(); return function next() { - while (keys2.length) { - var key2 = keys2.pop(); + while (keys6.length) { + var key2 = keys6.pop(); if (key2 in object) { next.value = key2; next.done = false; @@ -12645,7 +19151,7 @@ var require_runtime = __commonJS({ return next; }; }; - function values2(iterable) { + function values4(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) { @@ -12672,7 +19178,7 @@ var require_runtime = __commonJS({ } return { next: doneResult }; } - exports2.values = values2; + exports2.values = values4; function doneResult() { return { value: undefined2, done: true }; } @@ -12810,7 +19316,7 @@ var require_runtime = __commonJS({ }, delegateYield: function(iterable, resultName, nextLoc) { this.delegate = { - iterator: values2(iterable), + iterator: values4(iterable), resultName, nextLoc }; @@ -12944,18 +19450,18 @@ var require_binding = __commonJS({ this.dynamicValue = null; } Binding2.prototype.clone = function() { - var clone10 = new Binding2(this.serviceIdentifier, this.scope); - clone10.activated = clone10.scope === literal_types_1.BindingScopeEnum.Singleton ? this.activated : false; - clone10.implementationType = this.implementationType; - clone10.dynamicValue = this.dynamicValue; - clone10.scope = this.scope; - clone10.type = this.type; - clone10.factory = this.factory; - clone10.provider = this.provider; - clone10.constraint = this.constraint; - clone10.onActivation = this.onActivation; - clone10.cache = this.cache; - return clone10; + var clone41 = new Binding2(this.serviceIdentifier, this.scope); + clone41.activated = clone41.scope === literal_types_1.BindingScopeEnum.Singleton ? this.activated : false; + clone41.implementationType = this.implementationType; + clone41.dynamicValue = this.dynamicValue; + clone41.scope = this.scope; + clone41.type = this.type; + clone41.factory = this.factory; + clone41.provider = this.provider; + clone41.constraint = this.constraint; + clone41.onActivation = this.onActivation; + clone41.cache = this.cache; + return clone41; }; return Binding2; }(); @@ -12991,11 +19497,11 @@ var require_error_msgs = __commonJS({ exports.INVALID_TO_SELF_VALUE = "The toSelf function can only be applied when a constructor is used as service identifier"; exports.INVALID_DECORATOR_OPERATION = "The @inject @multiInject @tagged and @named decorators must be applied to the parameters of a class constructor or a class property."; var ARGUMENTS_LENGTH_MISMATCH = function() { - var values2 = []; + var values4 = []; for (var _i = 0; _i < arguments.length; _i++) { - values2[_i] = arguments[_i]; + values4[_i] = arguments[_i]; } - return "The number of constructor arguments in the derived class " + (values2[0] + " must be >= than the number of constructor arguments of its base class."); + return "The number of constructor arguments in the derived class " + (values4[0] + " must be >= than the number of constructor arguments of its base class."); }; exports.ARGUMENTS_LENGTH_MISMATCH = ARGUMENTS_LENGTH_MISMATCH; exports.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT = "Invalid Container constructor argument. Container options must be an object."; @@ -13004,19 +19510,19 @@ var require_error_msgs = __commonJS({ exports.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK = "Invalid Container option. Skip base check must be a boolean"; exports.MULTIPLE_POST_CONSTRUCT_METHODS = "Cannot apply @postConstruct decorator multiple times in the same class"; var POST_CONSTRUCT_ERROR = function() { - var values2 = []; + var values4 = []; for (var _i = 0; _i < arguments.length; _i++) { - values2[_i] = arguments[_i]; + values4[_i] = arguments[_i]; } - return "@postConstruct error in class " + values2[0] + ": " + values2[1]; + return "@postConstruct error in class " + values4[0] + ": " + values4[1]; }; exports.POST_CONSTRUCT_ERROR = POST_CONSTRUCT_ERROR; var CIRCULAR_DEPENDENCY_IN_FACTORY = function() { - var values2 = []; + var values4 = []; for (var _i = 0; _i < arguments.length; _i++) { - values2[_i] = arguments[_i]; + values4[_i] = arguments[_i]; } - return "It looks like there is a circular dependency " + ("in one of the '" + values2[0] + "' bindings. Please investigate bindings with") + ("service identifier '" + values2[1] + "'."); + return "It looks like there is a circular dependency " + ("in one of the '" + values4[0] + "' bindings. Please investigate bindings with") + ("service identifier '" + values4[1] + "'."); }; exports.CIRCULAR_DEPENDENCY_IN_FACTORY = CIRCULAR_DEPENDENCY_IN_FACTORY; exports.STACK_OVERFLOW = "Maximum call stack size exceeded"; @@ -13485,7 +19991,7 @@ var require_target = __commonJS({ var require_reflection_utils = __commonJS({ "node_modules/inversify/lib/planning/reflection_utils.js"(exports) { "use strict"; - var __spreadArray4 = exports && exports.__spreadArray || function(to, from) { + var __spreadArray6 = exports && exports.__spreadArray || function(to, from) { for (var i4 = 0, il = from.length, j4 = to.length; i4 < il; i4++, j4++) to[j4] = from[i4]; return to; @@ -13515,13 +20021,13 @@ var require_reflection_utils = __commonJS({ throw new Error(msg); } var constructorArgsMetadata = metadata.userGeneratedMetadata; - var keys2 = Object.keys(constructorArgsMetadata); - var hasUserDeclaredUnknownInjections = func.length === 0 && keys2.length > 0; - var hasOptionalParameters = keys2.length > func.length; - var iterations = hasUserDeclaredUnknownInjections || hasOptionalParameters ? keys2.length : func.length; + var keys6 = Object.keys(constructorArgsMetadata); + var hasUserDeclaredUnknownInjections = func.length === 0 && keys6.length > 0; + var hasOptionalParameters = keys6.length > func.length; + var iterations = hasUserDeclaredUnknownInjections || hasOptionalParameters ? keys6.length : func.length; var constructorTargets = getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations); var propertyTargets = getClassPropsAsTargets(metadataReader, func); - var targets = __spreadArray4(__spreadArray4([], constructorTargets), propertyTargets); + var targets = __spreadArray6(__spreadArray6([], constructorTargets), propertyTargets); return targets; } function getConstructorArgsAsTarget(index2, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata) { @@ -13535,10 +20041,10 @@ var require_reflection_utils = __commonJS({ serviceIdentifier = serviceIdentifier.unwrap(); } if (isManaged) { - var isObject4 = serviceIdentifier === Object; - var isFunction2 = serviceIdentifier === Function; - var isUndefined2 = serviceIdentifier === void 0; - var isUnknownType = isObject4 || isFunction2 || isUndefined2; + var isObject33 = serviceIdentifier === Object; + var isFunction44 = serviceIdentifier === Function; + var isUndefined5 = serviceIdentifier === void 0; + var isUnknownType = isObject33 || isFunction44 || isUndefined5; if (!isBaseClass && isUnknownType) { var msg = ERROR_MSGS.MISSING_INJECT_ANNOTATION + " argument " + index2 + " in class " + constructorName + "."; throw new Error(msg); @@ -13563,8 +20069,8 @@ var require_reflection_utils = __commonJS({ function getClassPropsAsTargets(metadataReader, constructorFunc) { var classPropsMetadata = metadataReader.getPropertiesMetadata(constructorFunc); var targets = []; - var keys2 = Object.keys(classPropsMetadata); - for (var _i = 0, keys_1 = keys2; _i < keys_1.length; _i++) { + var keys6 = Object.keys(classPropsMetadata); + for (var _i = 0, keys_1 = keys6; _i < keys_1.length; _i++) { var key = keys_1[_i]; var targetMetadata = classPropsMetadata[key]; var metadata = formatTargetMetadata(classPropsMetadata[key]); @@ -13577,7 +20083,7 @@ var require_reflection_utils = __commonJS({ var baseConstructor = Object.getPrototypeOf(constructorFunc.prototype).constructor; if (baseConstructor !== Object) { var baseTargets = getClassPropsAsTargets(metadataReader, baseConstructor); - targets = __spreadArray4(__spreadArray4([], targets), baseTargets); + targets = __spreadArray6(__spreadArray6([], targets), baseTargets); } return targets; } @@ -13805,7 +20311,7 @@ var require_planner = __commonJS({ var require_instantiation = __commonJS({ "node_modules/inversify/lib/resolution/instantiation.js"(exports) { "use strict"; - var __spreadArray4 = exports && exports.__spreadArray || function(to, from) { + var __spreadArray6 = exports && exports.__spreadArray || function(to, from) { for (var i4 = 0, il = from.length, j4 = to.length; i4 < il; i4++, j4++) to[j4] = from[i4]; return to; @@ -13829,7 +20335,7 @@ var require_instantiation = __commonJS({ return instance; } function _createInstance(Func, injections) { - return new (Func.bind.apply(Func, __spreadArray4([void 0], injections)))(); + return new (Func.bind.apply(Func, __spreadArray6([void 0], injections)))(); } function _postConstruct(constr, result) { if (Reflect.hasMetadata(METADATA_KEY.POST_CONSTRUCT, constr)) { @@ -13871,9 +20377,9 @@ var require_resolver = __commonJS({ var exceptions_1 = require_exceptions(); var serialization_1 = require_serialization(); var instantiation_1 = require_instantiation(); - var invokeFactory = function(factoryType, serviceIdentifier, fn2) { + var invokeFactory = function(factoryType, serviceIdentifier, fn) { try { - return fn2(); + return fn(); } catch (error) { if (exceptions_1.isStackOverflowExeption(error)) { throw new Error(ERROR_MSGS.CIRCULAR_DEPENDENCY_IN_FACTORY(factoryType, serviceIdentifier.toString())); @@ -14611,7 +21117,7 @@ var require_container = __commonJS({ return { value: op[0] ? op[1] : void 0, done: true }; } }; - var __spreadArray4 = exports && exports.__spreadArray || function(to, from) { + var __spreadArray6 = exports && exports.__spreadArray || function(to, from) { for (var i4 = 0, il = from.length, j4 = to.length; i4 < il; i4++, j4++) to[j4] = from[i4]; return to; @@ -14670,7 +21176,7 @@ var require_container = __commonJS({ container3[_i - 2] = arguments[_i]; } var container4 = new Container4(); - var targetContainers = __spreadArray4([container1, container2], container3).map(function(targetContainer) { + var targetContainers = __spreadArray6([container1, container2], container3).map(function(targetContainer) { return planner_1.getBindingDictionary(targetContainer); }); var bindingDictionary = planner_1.getBindingDictionary(container4); @@ -15153,8 +21659,8 @@ var require_inversify = __commonJS({ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.multiBindToService = exports.getServiceIdentifierAsString = exports.typeConstraint = exports.namedConstraint = exports.taggedConstraint = exports.traverseAncerstors = exports.decorate = exports.id = exports.MetadataReader = exports.postConstruct = exports.targetName = exports.multiInject = exports.unmanaged = exports.optional = exports.LazyServiceIdentifer = exports.inject = exports.named = exports.tagged = exports.injectable = exports.ContainerModule = exports.AsyncContainerModule = exports.TargetTypeEnum = exports.BindingTypeEnum = exports.BindingScopeEnum = exports.Container = exports.METADATA_KEY = void 0; - var keys2 = require_metadata_keys(); - exports.METADATA_KEY = keys2; + var keys6 = require_metadata_keys(); + exports.METADATA_KEY = keys6; var container_1 = require_container(); Object.defineProperty(exports, "Container", { enumerable: true, get: function() { return container_1.Container; @@ -15326,7 +21832,7 @@ var require_decorators = __commonJS({ }); // node_modules/inversify-inject-decorators/lib/index.js -var require_lib3 = __commonJS({ +var require_lib4 = __commonJS({ "node_modules/inversify-inject-decorators/lib/index.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -15630,9 +22136,9 @@ var require_regl = __commonJS({ return x6 instanceof Uint8Array || x6 instanceof Uint16Array || x6 instanceof Uint32Array || x6 instanceof Int8Array || x6 instanceof Int16Array || x6 instanceof Int32Array || x6 instanceof Float32Array || x6 instanceof Float64Array || x6 instanceof Uint8ClampedArray; }; var extend4 = function(base, opts) { - var keys2 = Object.keys(opts); - for (var i4 = 0; i4 < keys2.length; ++i4) { - base[keys2[i4]] = opts[keys2[i4]]; + var keys6 = Object.keys(opts); + for (var i4 = 0; i4 < keys6.length; ++i4) { + base[keys6[i4]] = opts[keys6[i4]]; } return base; }; @@ -15932,8 +22438,8 @@ var require_regl = __commonJS({ } opts._fragId = id(opts.static.frag); opts._vertId = id(opts.static.vert); - function addProps(dict, set10) { - Object.keys(set10).forEach(function(u3) { + function addProps(dict, set13) { + Object.keys(set13).forEach(function(u3) { dict[stringStore.id(u3)] = true; }); } @@ -16264,14 +22770,14 @@ var require_regl = __commonJS({ }; } function createContext(canvas, contextAttributes) { - function get3(name) { + function get100(name) { try { return canvas.getContext(name, contextAttributes); } catch (e4) { return null; } } - return get3("webgl") || get3("experimental-webgl") || get3("webgl-experimental"); + return get100("webgl") || get100("experimental-webgl") || get100("webgl-experimental"); } function isHTMLElement(obj) { return typeof obj.nodeName === "string" && typeof obj.appendChild === "function" && typeof obj.getBoundingClientRect === "function"; @@ -16647,7 +23153,7 @@ var require_regl = __commonJS({ function isNDArrayLike(obj) { return !!obj && typeof obj === "object" && Array.isArray(obj.shape) && Array.isArray(obj.stride) && typeof obj.offset === "number" && obj.shape.length === obj.stride.length && (Array.isArray(obj.data) || isTypedArray4(obj.data)); } - var values2 = function(obj) { + var values4 = function(obj) { return Object.keys(obj).map(function(key) { return obj[key]; }); @@ -17070,7 +23576,7 @@ var require_regl = __commonJS({ return reglBuffer; } function restoreBuffers() { - values2(bufferSet).forEach(function(buffer) { + values4(bufferSet).forEach(function(buffer) { buffer.buffer = gl2.createBuffer(); gl2.bindBuffer(buffer.type, buffer.buffer); gl2.bufferData(buffer.type, buffer.persistentData || buffer.byteLength, buffer.usage); @@ -17090,7 +23596,7 @@ var require_regl = __commonJS({ createStream, destroyStream, clear: function() { - values2(bufferSet).forEach(destroy); + values4(bufferSet).forEach(destroy); streamPool.forEach(destroy); }, getBuffer: function(wrapper) { @@ -17318,7 +23824,7 @@ var require_regl = __commonJS({ return null; }, clear: function() { - values2(elementSet).forEach(destroyElements); + values4(elementSet).forEach(destroyElements); } }; } @@ -17354,7 +23860,7 @@ var require_regl = __commonJS({ } return ushorts; } - function isArrayLike2(s4) { + function isArrayLike(s4) { return Array.isArray(s4) || isTypedArray4(s4); } var isPow2$1 = function(v3) { @@ -17487,7 +23993,7 @@ var require_regl = __commonJS({ return false; } var width2 = arr.length; - if (width2 === 0 || !isArrayLike2(arr[0])) { + if (width2 === 0 || !isArrayLike(arr[0])) { return false; } return true; @@ -17958,7 +24464,7 @@ var require_regl = __commonJS({ var w4 = image.width || data3[0].length; var h3 = image.height || data3.length; var c5 = image.channels; - if (isArrayLike2(data3[0][0])) { + if (isArrayLike(data3[0][0])) { c5 = c5 || data3[0][0].length; } else { c5 = c5 || 1; @@ -18534,7 +25040,7 @@ var require_regl = __commonJS({ gl2.bindTexture(GL_TEXTURE_2D$1, null); textureUnits[i4] = null; } - values2(textureSet).forEach(destroy); + values4(textureSet).forEach(destroy); stats2.cubeCount = 0; stats2.textureCount = 0; } @@ -18556,7 +25062,7 @@ var require_regl = __commonJS({ textureUnits[i4] = null; } } - values2(textureSet).forEach(function(texture) { + values4(textureSet).forEach(function(texture) { texture.texture = gl2.createTexture(); gl2.bindTexture(texture.target, texture.texture); for (var i5 = 0; i5 < 32; ++i5) { @@ -18772,7 +25278,7 @@ var require_regl = __commonJS({ }; } function restoreRenderbuffers() { - values2(renderbufferSet).forEach(function(rb) { + values4(renderbufferSet).forEach(function(rb) { rb.renderbuffer = gl2.createRenderbuffer(); gl2.bindRenderbuffer(GL_RENDERBUFFER, rb.renderbuffer); gl2.renderbufferStorage(GL_RENDERBUFFER, rb.format, rb.width, rb.height); @@ -18782,7 +25288,7 @@ var require_regl = __commonJS({ return { create: createRenderbuffer, clear: function() { - values2(renderbufferSet).forEach(destroy); + values4(renderbufferSet).forEach(destroy); }, restore: restoreRenderbuffers }; @@ -19407,7 +25913,7 @@ var require_regl = __commonJS({ framebufferState.cur = null; framebufferState.next = null; framebufferState.dirty = true; - values2(framebufferSet).forEach(function(fb) { + values4(framebufferSet).forEach(function(fb) { fb.framebuffer = gl2.createFramebuffer(); updateFramebuffer(fb); }); @@ -19425,7 +25931,7 @@ var require_regl = __commonJS({ create: createFBO, createCube: createCubeFBO, clear: function() { - values2(framebufferSet).forEach(destroy); + values4(framebufferSet).forEach(destroy); }, restore: restoreFramebuffers }); @@ -19527,7 +26033,7 @@ var require_regl = __commonJS({ state2.currentVAO = vao; } function destroyVAOEXT() { - values2(vaoSet).forEach(function(vao) { + values4(vaoSet).forEach(function(vao) { vao.destroy(); }); } @@ -19590,7 +26096,7 @@ var require_regl = __commonJS({ function restoreVAO() { var ext = extVAO(); if (ext) { - values2(vaoSet).forEach(function(vao) { + values4(vaoSet).forEach(function(vao) { vao.refresh(); }); } @@ -19825,9 +26331,9 @@ var require_regl = __commonJS({ return { clear: function() { var deleteShader = gl2.deleteShader.bind(gl2); - values2(fragShaders).forEach(deleteShader); + values4(fragShaders).forEach(deleteShader); fragShaders = {}; - values2(vertShaders).forEach(deleteShader); + values4(vertShaders).forEach(deleteShader); vertShaders = {}; programList.forEach(function(desc) { gl2.deleteProgram(desc.program); @@ -19934,16 +26440,16 @@ var require_regl = __commonJS({ check$1(width2 > 0 && width2 + x6 <= context.framebufferWidth, "invalid width for read pixels"); check$1(height > 0 && height + y5 <= context.framebufferHeight, "invalid height for read pixels"); reglPoll(); - var size2 = width2 * height * 4; + var size14 = width2 * height * 4; if (!data3) { if (type2 === GL_UNSIGNED_BYTE$7) { - data3 = new Uint8Array(size2); + data3 = new Uint8Array(size14); } else if (type2 === GL_FLOAT$7) { - data3 = data3 || new Float32Array(size2); + data3 = data3 || new Float32Array(size14); } } check$1.isTypedArray(data3, "data buffer for regl.read() must be a typedarray"); - check$1(data3.byteLength >= size2, "data buffer for regl.read() too small"); + check$1(data3.byteLength >= size14, "data buffer for regl.read() too small"); gl2.pixelStorei(GL_PACK_ALIGNMENT, 4); gl2.readPixels(x6, y5, width2, height, GL_RGBA$3, type2, data3); return data3; @@ -20468,7 +26974,7 @@ var require_regl = __commonJS({ orientationType }; check$1.optional(function() { - sharedState.isArrayLike = isArrayLike2; + sharedState.isArrayLike = isArrayLike; }); if (extDrawBuffers) { sharedConstants.backBuffer = [GL_BACK]; @@ -21027,7 +27533,7 @@ var require_regl = __commonJS({ }); case S_DEPTH_RANGE: return parseParam(function(value2) { - check$1.command(isArrayLike2(value2) && value2.length === 2 && typeof value2[0] === "number" && typeof value2[1] === "number" && value2[0] <= value2[1], "depth range is 2d array", env.commandStr); + check$1.command(isArrayLike(value2) && value2.length === 2 && typeof value2[0] === "number" && typeof value2[1] === "number" && value2[0] <= value2[1], "depth range is 2d array", env.commandStr); return value2; }, function(env2, scope, value2) { check$1.optional(function() { @@ -21118,7 +27624,7 @@ var require_regl = __commonJS({ }); case S_BLEND_COLOR: return parseParam(function(value2) { - check$1.command(isArrayLike2(value2) && value2.length === 4, "blend.color must be a 4d array", env.commandStr); + check$1.command(isArrayLike(value2) && value2.length === 4, "blend.color must be a 4d array", env.commandStr); return loop(4, function(i4) { return +value2[i4]; }); @@ -21256,7 +27762,7 @@ var require_regl = __commonJS({ }); case S_COLOR_MASK: return parseParam(function(value2) { - check$1.command(isArrayLike2(value2) && value2.length === 4, "color.mask must be length 4 array", env.commandStr); + check$1.command(isArrayLike(value2) && value2.length === 4, "color.mask must be length 4 array", env.commandStr); return value2.map(function(v3) { return !!v3; }); @@ -21312,7 +27818,7 @@ var require_regl = __commonJS({ } else { check$1.commandRaise('invalid data for uniform "' + name + '"', env.commandStr); } - } else if (isArrayLike2(value2)) { + } else if (isArrayLike(value2)) { result = createStaticDecl(function(env2) { var ITEM = env2.global.def("[", loop(value2.length, function(i4) { check$1.command(typeof value2[i4] === "number" || typeof value2[i4] === "boolean", "invalid uniform " + name, env2.commandStr); @@ -21361,7 +27867,7 @@ var require_regl = __commonJS({ if (typeof constant2 === "number") { record.x = constant2; } else { - check$1.command(isArrayLike2(constant2) && constant2.length > 0 && constant2.length <= 4, "invalid constant for attribute " + attribute, env.commandStr); + check$1.command(isArrayLike(constant2) && constant2.length > 0 && constant2.length <= 4, "invalid constant for attribute " + attribute, env.commandStr); CUTE_COMPONENTS.forEach(function(c5, i4) { if (i4 < constant2.length) { record[c5] = constant2[i4]; @@ -21379,8 +27885,8 @@ var require_regl = __commonJS({ check$1.command(offset >= 0, 'invalid offset for attribute "' + attribute + '"', env.commandStr); var stride = value2.stride | 0; check$1.command(stride >= 0 && stride < 256, 'invalid stride for attribute "' + attribute + '", must be integer betweeen [0, 255]', env.commandStr); - var size2 = value2.size | 0; - check$1.command(!("size" in value2) || size2 > 0 && size2 <= 4, 'invalid size for attribute "' + attribute + '", must be 1,2,3,4', env.commandStr); + var size14 = value2.size | 0; + check$1.command(!("size" in value2) || size14 > 0 && size14 <= 4, 'invalid size for attribute "' + attribute + '", must be 1,2,3,4', env.commandStr); var normalized = !!value2.normalized; var type2 = 0; if ("type" in value2) { @@ -21409,7 +27915,7 @@ var require_regl = __commonJS({ }); record.buffer = buffer; record.state = ATTRIB_STATE_POINTER; - record.size = size2; + record.size = size14; record.normalized = normalized; record.type = type2 || buffer.dtype; record.offset = offset; @@ -21686,14 +28192,14 @@ var require_regl = __commonJS({ } scope(block); } - function emitSetOptions(env, scope, options, filter2) { + function emitSetOptions(env, scope, options, filter17) { var shared = env.shared; var CURRENT_VARS = env.current; var CURRENT_STATE = shared.current; var GL = shared.gl; sortState(Object.keys(options)).forEach(function(param) { var defn = options[param]; - if (filter2 && !filter2(defn)) { + if (filter17 && !filter17(defn)) { return; } var variable = defn.append(env, scope); @@ -21709,7 +28215,7 @@ var require_regl = __commonJS({ scope(env.cond(variable).then(GL, ".enable(", flag, ");").else(GL, ".disable(", flag, ");")); } scope(CURRENT_STATE, ".", param, "=", variable, ";"); - } else if (isArrayLike2(variable)) { + } else if (isArrayLike(variable)) { var CURRENT = CURRENT_VARS[param]; scope(GL, ".", GL_VARIABLES[param], "(", variable, ");", variable.map(function(v3, i4) { return CURRENT + "[" + i4 + "]=" + v3; @@ -21794,7 +28300,7 @@ var require_regl = __commonJS({ emitProfileEnd(end2); scope.exit("if(", USE_PROFILE, "){", end2, "}"); } - function emitAttributes(env, scope, args, attributes, filter2) { + function emitAttributes(env, scope, args, attributes, filter17) { var shared = env.shared; function typeLength(x6) { switch (x6) { @@ -21814,7 +28320,7 @@ var require_regl = __commonJS({ return 1; } } - function emitBindAttribute(ATTRIBUTE, size2, record) { + function emitBindAttribute(ATTRIBUTE, size14, record) { var GL = shared.gl; var LOCATION = scope.def(ATTRIBUTE, ".location"); var BINDING = scope.def(shared.attributes, "[", LOCATION, "]"); @@ -21837,9 +28343,9 @@ var require_regl = __commonJS({ var TYPE = record.type; var SIZE; if (!record.size) { - SIZE = size2; + SIZE = size14; } else { - SIZE = scope.def(record.size, "||", size2); + SIZE = scope.def(record.size, "||", size14); } scope("if(", BINDING, ".type!==", TYPE, "||", BINDING, ".size!==", SIZE, "||", COMMON_KEYS.map(function(key) { return BINDING + "." + key + "!==" + record[key]; @@ -21882,12 +28388,12 @@ var require_regl = __commonJS({ var arg = args.attributes[name]; var record; if (arg) { - if (!filter2(arg)) { + if (!filter17(arg)) { return; } record = arg.append(env, scope); } else { - if (!filter2(SCOPE_DECL)) { + if (!filter17(SCOPE_DECL)) { return; } var scopeAttrib = env.scopeAttrib(name); @@ -21902,7 +28408,7 @@ var require_regl = __commonJS({ emitBindAttribute(env.link(attribute), typeLength(attribute.info.type), record); }); } - function emitUniforms(env, scope, args, uniforms, filter2) { + function emitUniforms(env, scope, args, uniforms, filter17) { var shared = env.shared; var GL = shared.gl; var infix; @@ -21915,7 +28421,7 @@ var require_regl = __commonJS({ var LOCATION = UNIFORM + ".location"; var VALUE; if (arg) { - if (!filter2(arg)) { + if (!filter17(arg)) { continue; } if (isStatic(arg)) { @@ -21928,7 +28434,7 @@ var require_regl = __commonJS({ scope.exit(TEX_VALUE, ".unbind();"); } else if (type2 === GL_FLOAT_MAT2 || type2 === GL_FLOAT_MAT3 || type2 === GL_FLOAT_MAT4) { check$1.optional(function() { - check$1.command(isArrayLike2(value2), "invalid matrix for uniform " + name, env.commandStr); + check$1.command(isArrayLike(value2), "invalid matrix for uniform " + name, env.commandStr); check$1.command(type2 === GL_FLOAT_MAT2 && value2.length === 4 || type2 === GL_FLOAT_MAT3 && value2.length === 9 || type2 === GL_FLOAT_MAT4 && value2.length === 16, "invalid length for matrix uniform " + name, env.commandStr); }); var MAT_VALUE = env.global.def("new Float32Array([" + Array.prototype.slice.call(value2) + "])"); @@ -21946,15 +28452,15 @@ var require_regl = __commonJS({ infix = "1f"; break; case GL_FLOAT_VEC2: - check$1.command(isArrayLike2(value2) && value2.length === 2, "uniform " + name, env.commandStr); + check$1.command(isArrayLike(value2) && value2.length === 2, "uniform " + name, env.commandStr); infix = "2f"; break; case GL_FLOAT_VEC3: - check$1.command(isArrayLike2(value2) && value2.length === 3, "uniform " + name, env.commandStr); + check$1.command(isArrayLike(value2) && value2.length === 3, "uniform " + name, env.commandStr); infix = "3f"; break; case GL_FLOAT_VEC4: - check$1.command(isArrayLike2(value2) && value2.length === 4, "uniform " + name, env.commandStr); + check$1.command(isArrayLike(value2) && value2.length === 4, "uniform " + name, env.commandStr); infix = "4f"; break; case GL_BOOL: @@ -21966,38 +28472,38 @@ var require_regl = __commonJS({ infix = "1i"; break; case GL_BOOL_VEC2: - check$1.command(isArrayLike2(value2) && value2.length === 2, "uniform " + name, env.commandStr); + check$1.command(isArrayLike(value2) && value2.length === 2, "uniform " + name, env.commandStr); infix = "2i"; break; case GL_INT_VEC2: - check$1.command(isArrayLike2(value2) && value2.length === 2, "uniform " + name, env.commandStr); + check$1.command(isArrayLike(value2) && value2.length === 2, "uniform " + name, env.commandStr); infix = "2i"; break; case GL_BOOL_VEC3: - check$1.command(isArrayLike2(value2) && value2.length === 3, "uniform " + name, env.commandStr); + check$1.command(isArrayLike(value2) && value2.length === 3, "uniform " + name, env.commandStr); infix = "3i"; break; case GL_INT_VEC3: - check$1.command(isArrayLike2(value2) && value2.length === 3, "uniform " + name, env.commandStr); + check$1.command(isArrayLike(value2) && value2.length === 3, "uniform " + name, env.commandStr); infix = "3i"; break; case GL_BOOL_VEC4: - check$1.command(isArrayLike2(value2) && value2.length === 4, "uniform " + name, env.commandStr); + check$1.command(isArrayLike(value2) && value2.length === 4, "uniform " + name, env.commandStr); infix = "4i"; break; case GL_INT_VEC4: - check$1.command(isArrayLike2(value2) && value2.length === 4, "uniform " + name, env.commandStr); + check$1.command(isArrayLike(value2) && value2.length === 4, "uniform " + name, env.commandStr); infix = "4i"; break; } - scope(GL, ".uniform", infix, "(", LOCATION, ",", isArrayLike2(value2) ? Array.prototype.slice.call(value2) : value2, ");"); + scope(GL, ".uniform", infix, "(", LOCATION, ",", isArrayLike(value2) ? Array.prototype.slice.call(value2) : value2, ");"); } continue; } else { VALUE = arg.append(env, scope); } } else { - if (!filter2(SCOPE_DECL)) { + if (!filter17(SCOPE_DECL)) { continue; } VALUE = scope.def(shared.uniforms, "[", stringStore.id(name), "]"); @@ -22504,7 +29010,7 @@ var require_regl = __commonJS({ sortState(Object.keys(args.state)).forEach(function(name) { var defn = args.state[name]; var value2 = defn.append(env, scope); - if (isArrayLike2(value2)) { + if (isArrayLike(value2)) { value2.forEach(function(v3, i4) { scope.set(env.next[name], "[" + i4 + "]", v3); }); @@ -22552,7 +29058,7 @@ var require_regl = __commonJS({ scope("a1(", env.shared.context, ",a0,", env.batchId, ");"); } function isDynamicObject(object) { - if (typeof object !== "object" || isArrayLike2(object)) { + if (typeof object !== "object" || isArrayLike(object)) { return; } var props = Object.keys(object); @@ -22569,12 +29075,12 @@ var require_regl = __commonJS({ return; } var globals = env.global; - var keys2 = Object.keys(object); + var keys6 = Object.keys(object); var thisDep = false; var contextDep = false; var propDep = false; var objectRef = env.global.def("{}"); - keys2.forEach(function(key) { + keys6.forEach(function(key) { var value2 = object[key]; if (dynamic.isDynamic(value2)) { if (typeof value2 === "function") { @@ -22606,7 +29112,7 @@ var require_regl = __commonJS({ } }); function appendBlock(env2, block) { - keys2.forEach(function(key) { + keys6.forEach(function(key) { var value2 = object[key]; if (!dynamic.isDynamic(value2)) { return; @@ -22691,7 +29197,7 @@ var require_regl = __commonJS({ var NEXT, CURRENT; var block = env.block(); block(GL, ".", func, "("); - if (isArrayLike2(init)) { + if (isArrayLike(init)) { var n3 = init.length; NEXT = env.global.def(NEXT_STATE, ".", name); CURRENT = env.global.def(CURRENT_STATE, ".", name); @@ -22851,7 +29357,7 @@ var require_regl = __commonJS({ var DYN_PROP = 1; var DYN_CONTEXT = 2; var DYN_STATE = 3; - function find4(haystack, needle) { + function find11(haystack, needle) { for (var i4 = 0; i4 < haystack.length; ++i4) { if (haystack[i4] === needle) { return i4; @@ -23160,10 +29666,10 @@ var require_regl = __commonJS({ check$1.type(cb, "function", "regl.frame() callback must be a function"); rafCallbacks.push(cb); function cancel() { - var i4 = find4(rafCallbacks, cb); + var i4 = find11(rafCallbacks, cb); check$1(i4 >= 0, "cannot cancel a frame twice"); function pendingCancel() { - var index2 = find4(rafCallbacks, pendingCancel); + var index2 = find11(rafCallbacks, pendingCancel); rafCallbacks[index2] = rafCallbacks[rafCallbacks.length - 1]; rafCallbacks.length -= 1; if (rafCallbacks.length <= 0) { @@ -23300,10 +29806,10 @@ var require_create = __commonJS({ }); // node_modules/gl-vec2/clone.js -var require_clone = __commonJS({ +var require_clone2 = __commonJS({ "node_modules/gl-vec2/clone.js"(exports, module2) { - module2.exports = clone10; - function clone10(a4) { + module2.exports = clone41; + function clone41(a4) { var out = new Float32Array(2); out[0] = a4[0]; out[1] = a4[1]; @@ -23338,10 +29844,10 @@ var require_copy = __commonJS({ }); // node_modules/gl-vec2/set.js -var require_set = __commonJS({ +var require_set2 = __commonJS({ "node_modules/gl-vec2/set.js"(exports, module2) { - module2.exports = set10; - function set10(out, x6, y5) { + module2.exports = set13; + function set13(out, x6, y5) { out[0] = x6; out[1] = y5; return out; @@ -23456,10 +29962,10 @@ var require_inverse = __commonJS({ }); // node_modules/gl-vec2/min.js -var require_min = __commonJS({ +var require_min2 = __commonJS({ "node_modules/gl-vec2/min.js"(exports, module2) { - module2.exports = min7; - function min7(out, a4, b10) { + module2.exports = min13; + function min13(out, a4, b10) { out[0] = Math.min(a4[0], b10[0]); out[1] = Math.min(a4[1], b10[1]); return out; @@ -23468,10 +29974,10 @@ var require_min = __commonJS({ }); // node_modules/gl-vec2/max.js -var require_max = __commonJS({ +var require_max2 = __commonJS({ "node_modules/gl-vec2/max.js"(exports, module2) { - module2.exports = max8; - function max8(out, a4, b10) { + module2.exports = max15; + function max15(out, a4, b10) { out[0] = Math.max(a4[0], b10[0]); out[1] = Math.max(a4[1], b10[1]); return out; @@ -23680,8 +30186,8 @@ var require_cross = __commonJS({ // node_modules/gl-vec2/lerp.js var require_lerp = __commonJS({ "node_modules/gl-vec2/lerp.js"(exports, module2) { - module2.exports = lerp6; - function lerp6(out, a4, b10, t4) { + module2.exports = lerp8; + function lerp8(out, a4, b10, t4) { var ax = a4[0], ay = a4[1]; out[0] = ax + t4 * (b10[0] - ax); out[1] = ay + t4 * (b10[1] - ay); @@ -23761,7 +30267,7 @@ var require_forEach = __commonJS({ "node_modules/gl-vec2/forEach.js"(exports, module2) { module2.exports = forEach4; var vec = require_create()(); - function forEach4(a4, stride, offset, count2, fn2, arg) { + function forEach4(a4, stride, offset, count2, fn, arg) { var i4, l4; if (!stride) { stride = 2; @@ -23777,7 +30283,7 @@ var require_forEach = __commonJS({ for (i4 = offset; i4 < l4; i4 += stride) { vec[0] = a4[i4]; vec[1] = a4[i4 + 1]; - fn2(vec, vec, arg); + fn(vec, vec, arg); a4[i4] = vec[0]; a4[i4 + 1] = vec[1]; } @@ -23790,12 +30296,12 @@ var require_forEach = __commonJS({ var require_limit = __commonJS({ "node_modules/gl-vec2/limit.js"(exports, module2) { module2.exports = limit; - function limit(out, a4, max8) { + function limit(out, a4, max15) { var mSq = a4[0] * a4[0] + a4[1] * a4[1]; - if (mSq > max8 * max8) { + if (mSq > max15 * max15) { var n3 = Math.sqrt(mSq); - out[0] = a4[0] / n3 * max8; - out[1] = a4[1] / n3 * max8; + out[0] = a4[0] / n3 * max15; + out[1] = a4[1] / n3 * max15; } else { out[0] = a4[0]; out[1] = a4[1]; @@ -23811,10 +30317,10 @@ var require_gl_vec2 = __commonJS({ module2.exports = { EPSILON: require_epsilon(), create: require_create(), - clone: require_clone(), + clone: require_clone2(), fromValues: require_fromValues(), copy: require_copy(), - set: require_set(), + set: require_set2(), equals: require_equals(), exactEquals: require_exactEquals(), add: require_add(), @@ -23825,8 +30331,8 @@ var require_gl_vec2 = __commonJS({ divide: require_divide(), div: require_div(), inverse: require_inverse(), - min: require_min(), - max: require_max(), + min: require_min2(), + max: require_max2(), rotate: require_rotate(), floor: require_floor(), ceil: require_ceil(), @@ -23861,7 +30367,7 @@ var require_gl_vec2 = __commonJS({ var require_polyline_miter_util = __commonJS({ "node_modules/polyline-miter-util/index.js"(exports, module2) { var add8 = require_add(); - var set10 = require_set(); + var set13 = require_set2(); var normalize5 = require_normalize(); var subtract6 = require_subtract(); var dot7 = require_dot(); @@ -23869,15 +30375,15 @@ var require_polyline_miter_util = __commonJS({ module2.exports.computeMiter = function computeMiter2(tangent, miter, lineA, lineB, halfThick) { add8(tangent, lineA, lineB); normalize5(tangent, tangent); - set10(miter, -tangent[1], tangent[0]); - set10(tmp, -lineA[1], lineA[0]); + set13(miter, -tangent[1], tangent[0]); + set13(tmp, -lineA[1], lineA[0]); return halfThick / dot7(miter, tmp); }; module2.exports.normal = function normal2(out, dir) { - set10(out, -dir[1], dir[0]); + set13(out, -dir[1], dir[0]); return out; }; - module2.exports.direction = function direction5(out, a4, b10) { + module2.exports.direction = function direction3(out, a4, b10) { subtract6(out, a4, b10); normalize5(out, out); return out; @@ -23948,16 +30454,16 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var isArrayLike2 = function(value2) { + var isArrayLike = function(value2) { return value2 !== null && typeof value2 !== "function" && isFinite(value2.length); }; - __webpack_exports__["a"] = isArrayLike2; + __webpack_exports__["a"] = isArrayLike; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0); var __WEBPACK_IMPORTED_MODULE_1__is_object__ = __webpack_require__(13); - function each3(elements, func) { + function each168(elements, func) { if (!elements) { return; } @@ -23980,7 +30486,7 @@ var require_hierarchy = __commonJS({ } } } - __webpack_exports__["a"] = each3; + __webpack_exports__["a"] = each168; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -23992,30 +30498,30 @@ var require_hierarchy = __commonJS({ function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var toString7 = {}.toString; - var isType6 = function(value2, type2) { + var isType7 = function(value2, type2) { return toString7.call(value2) === "[object " + type2 + "]"; }; - __webpack_exports__["a"] = isType6; + __webpack_exports__["a"] = isType7; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4); - var isNumber7 = function(value2) { + var isNumber57 = function(value2) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a"])(value2, "Number"); }; - __webpack_exports__["a"] = isNumber7; + __webpack_exports__["a"] = isNumber57; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var isNil2 = function(value2) { + var isNil67 = function(value2) { return value2 === null || value2 === void 0; }; - __webpack_exports__["a"] = isNil2; + __webpack_exports__["a"] = isNil67; }, function(module3, exports2, __webpack_require__) { - var _require = __webpack_require__(33), mix2 = _require.mix; + var _require = __webpack_require__(33), mix31 = _require.mix; module3.exports = { - assign: mix2 + assign: mix31 }; }, function(module3, __webpack_exports__, __webpack_require__) { @@ -24029,7 +30535,7 @@ var require_hierarchy = __commonJS({ "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_object_like__ = __webpack_require__(15); var __WEBPACK_IMPORTED_MODULE_1__is_type__ = __webpack_require__(4); - var isPlainObject3 = function(value2) { + var isPlainObject10 = function(value2) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__["a"])(value2) || !Object(__WEBPACK_IMPORTED_MODULE_1__is_type__["a"])(value2, "Object")) { return false; } @@ -24042,7 +30548,7 @@ var require_hierarchy = __commonJS({ } return Object.getPrototypeOf(value2) === proto; }; - __webpack_exports__["a"] = isPlainObject3; + __webpack_exports__["a"] = isPlainObject10; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -24075,13 +30581,13 @@ var require_hierarchy = __commonJS({ function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1); - var contains2 = function(arr, value2) { + var contains3 = function(arr, value2) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a"])(arr)) { return false; } return arr.indexOf(value2) > -1; }; - __webpack_exports__["a"] = contains2; + __webpack_exports__["a"] = contains3; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -24094,7 +30600,7 @@ var require_hierarchy = __commonJS({ "use strict"; var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2); var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1); - var filter2 = function(arr, func) { + var filter17 = function(arr, func) { if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a"])(arr)) { return arr; } @@ -24106,32 +30612,32 @@ var require_hierarchy = __commonJS({ }); return result; }; - __webpack_exports__["a"] = filter2; + __webpack_exports__["a"] = filter17; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var isObjectLike6 = function(value2) { + var isObjectLike5 = function(value2) { return typeof value2 === "object" && value2 !== null; }; - __webpack_exports__["a"] = isObjectLike6; + __webpack_exports__["a"] = isObjectLike5; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - __webpack_exports__["a"] = mix2; - function _mix2(dist4, obj) { + __webpack_exports__["a"] = mix31; + function _mix(dist4, obj) { for (var key in obj) { if (obj.hasOwnProperty(key) && key !== "constructor" && obj[key] !== void 0) { dist4[key] = obj[key]; } } } - function mix2(dist4, src1, src2, src3) { + function mix31(dist4, src1, src2, src3) { if (src1) - _mix2(dist4, src1); + _mix(dist4, src1); if (src2) - _mix2(dist4, src2); + _mix(dist4, src2); if (src3) - _mix2(dist4, src3); + _mix(dist4, src3); return dist4; } }, @@ -24146,27 +30652,27 @@ var require_hierarchy = __commonJS({ "V" ]; var HORIZONTAL_DIRECTIONS = ["LR", "RL", "H"]; - var isHorizontal2 = function isHorizontal3(direction5) { - return HORIZONTAL_DIRECTIONS.indexOf(direction5) > -1; + var isHorizontal2 = function isHorizontal3(direction3) { + return HORIZONTAL_DIRECTIONS.indexOf(direction3) > -1; }; var DEFAULT_DIRECTION = VALID_DIRECTIONS[0]; module3.exports = function(root, options, layoutAlgrithm) { - var direction5 = options.direction || DEFAULT_DIRECTION; - options.isHorizontal = isHorizontal2(direction5); - if (direction5 && VALID_DIRECTIONS.indexOf(direction5) === -1) { - throw new TypeError("Invalid direction: " + direction5); + var direction3 = options.direction || DEFAULT_DIRECTION; + options.isHorizontal = isHorizontal2(direction3); + if (direction3 && VALID_DIRECTIONS.indexOf(direction3) === -1) { + throw new TypeError("Invalid direction: " + direction3); } - if (direction5 === VALID_DIRECTIONS[0]) { + if (direction3 === VALID_DIRECTIONS[0]) { layoutAlgrithm(root, options); - } else if (direction5 === VALID_DIRECTIONS[1]) { + } else if (direction3 === VALID_DIRECTIONS[1]) { layoutAlgrithm(root, options); root.right2left(); - } else if (direction5 === VALID_DIRECTIONS[2]) { + } else if (direction3 === VALID_DIRECTIONS[2]) { layoutAlgrithm(root, options); - } else if (direction5 === VALID_DIRECTIONS[3]) { + } else if (direction3 === VALID_DIRECTIONS[3]) { layoutAlgrithm(root, options); root.bottom2top(); - } else if (direction5 === VALID_DIRECTIONS[4] || direction5 === VALID_DIRECTIONS[5]) { + } else if (direction3 === VALID_DIRECTIONS[4] || direction3 === VALID_DIRECTIONS[5]) { var _separateTree = separateTree(root, options), left2 = _separateTree.left, right2 = _separateTree.right; layoutAlgrithm(left2, options); layoutAlgrithm(right2, options); @@ -24383,7 +30889,7 @@ var require_hierarchy = __commonJS({ "use strict"; var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2); var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(3); - var keys2 = Object.keys ? function(obj) { + var keys6 = Object.keys ? function(obj) { return Object.keys(obj); } : function(obj) { var result = []; @@ -24394,35 +30900,35 @@ var require_hierarchy = __commonJS({ }); return result; }; - __webpack_exports__["a"] = keys2; + __webpack_exports__["a"] = keys6; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1); - var splice3 = Array.prototype.splice; - var pullAt3 = function pullAt4(arr, indexes) { + var splice = Array.prototype.splice; + var pullAt = function pullAt2(arr, indexes) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a"])(arr)) { return []; } var length5 = arr ? indexes.length : 0; - var last2 = length5 - 1; + var last17 = length5 - 1; while (length5--) { var previous = void 0; var index2 = indexes[length5]; - if (length5 === last2 || index2 !== previous) { + if (length5 === last17 || index2 !== previous) { previous = index2; - splice3.call(arr, index2, 1); + splice.call(arr, index2, 1); } } return arr; }; - __webpack_exports__["a"] = pullAt3; + __webpack_exports__["a"] = pullAt; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(12); var __WEBPACK_IMPORTED_MODULE_1__each__ = __webpack_require__(2); - var uniq5 = function(arr) { + var uniq10 = function(arr) { var resultArr = []; Object(__WEBPACK_IMPORTED_MODULE_1__each__["a"])(arr, function(item) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__contains__["a"])(resultArr, item)) { @@ -24431,7 +30937,7 @@ var require_hierarchy = __commonJS({ }); return resultArr; }; - __webpack_exports__["a"] = uniq5; + __webpack_exports__["a"] = uniq10; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -24464,8 +30970,8 @@ var require_hierarchy = __commonJS({ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2); var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0); var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(3); - var hasOwnProperty4 = Object.prototype.hasOwnProperty; - function groupBy2(data3, condition) { + var hasOwnProperty = Object.prototype.hasOwnProperty; + function groupBy12(data3, condition) { if (!condition || !Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a"])(data3)) { return {}; } @@ -24476,7 +30982,7 @@ var require_hierarchy = __commonJS({ var key; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a"])(data3, function(item) { key = predicate(item); - if (hasOwnProperty4.call(result, key)) { + if (hasOwnProperty.call(result, key)) { result[key].push(item); } else { result[key] = [item]; @@ -24484,7 +30990,7 @@ var require_hierarchy = __commonJS({ }); return result; } - __webpack_exports__["a"] = groupBy2; + __webpack_exports__["a"] = groupBy12; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -24496,7 +31002,7 @@ var require_hierarchy = __commonJS({ "use strict"; var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2); var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(3); - var values2 = Object.values ? function(obj) { + var values4 = Object.values ? function(obj) { return Object.values(obj); } : function(obj) { var result = []; @@ -24507,32 +31013,32 @@ var require_hierarchy = __commonJS({ }); return result; }; - __webpack_exports__["a"] = values2; + __webpack_exports__["a"] = values4; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var toString7 = {}.toString; - var getType3 = function(value2) { + var getType2 = function(value2) { return toString7.call(value2).replace(/^\[object /, "").replace(/]$/, ""); }; - __webpack_exports__["a"] = getType3; + __webpack_exports__["a"] = getType2; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var objectProto5 = Object.prototype; - var isPrototype2 = function(value2) { + var objectProto4 = Object.prototype; + var isPrototype = function(value2) { var Ctor = value2 && value2.constructor; - var proto = typeof Ctor === "function" && Ctor.prototype || objectProto5; + var proto = typeof Ctor === "function" && Ctor.prototype || objectProto4; return value2 === proto; }; - __webpack_exports__["a"] = isPrototype2; + __webpack_exports__["a"] = isPrototype; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_object_like__ = __webpack_require__(15); var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1); var __WEBPACK_IMPORTED_MODULE_2__is_string__ = __webpack_require__(8); - var isEqual3 = function(value2, other2) { + var isEqual24 = function(value2, other2) { if (value2 === other2) { return true; } @@ -24548,7 +31054,7 @@ var require_hierarchy = __commonJS({ } var rst = true; for (var i4 = 0; i4 < value2.length; i4++) { - rst = isEqual3(value2[i4], other2[i4]); + rst = isEqual24(value2[i4], other2[i4]); if (!rst) { break; } @@ -24563,7 +31069,7 @@ var require_hierarchy = __commonJS({ } var rst = true; for (var i4 = 0; i4 < valueKeys.length; i4++) { - rst = isEqual3(value2[valueKeys[i4]], other2[valueKeys[i4]]); + rst = isEqual24(value2[valueKeys[i4]], other2[valueKeys[i4]]); if (!rst) { break; } @@ -24572,7 +31078,7 @@ var require_hierarchy = __commonJS({ } return false; }; - __webpack_exports__["a"] = isEqual3; + __webpack_exports__["a"] = isEqual24; }, function(module3, exports2, __webpack_require__) { var hierarchy2 = __webpack_require__(18); @@ -24627,7 +31133,7 @@ var require_hierarchy = __commonJS({ subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - var TreeLayout = __webpack_require__(11); + var TreeLayout2 = __webpack_require__(11); var nonLayeredTidyTree = __webpack_require__(113); var doTreeLayout = __webpack_require__(17); var util = __webpack_require__(7); @@ -24642,7 +31148,7 @@ var require_hierarchy = __commonJS({ return doTreeLayout(me.rootNode, me.options, nonLayeredTidyTree); }; return CompactBoxTreeLayout2; - }(TreeLayout); + }(TreeLayout2); var DEFAULT_OPTIONS37 = {}; function compactBoxLayout(root, options) { options = util.assign({}, DEFAULT_OPTIONS37, options); @@ -25084,12 +31590,12 @@ var require_hierarchy = __commonJS({ "use strict"; var __WEBPACK_IMPORTED_MODULE_0__filter__ = __webpack_require__(14); var __WEBPACK_IMPORTED_MODULE_1__contains__ = __webpack_require__(12); - var difference2 = function(arr, values2) { - if (values2 === void 0) { - values2 = []; + var difference2 = function(arr, values4) { + if (values4 === void 0) { + values4 = []; } return Object(__WEBPACK_IMPORTED_MODULE_0__filter__["a"])(arr, function(value2) { - return !Object(__WEBPACK_IMPORTED_MODULE_1__contains__["a"])(values2, value2); + return !Object(__WEBPACK_IMPORTED_MODULE_1__contains__["a"])(values4, value2); }); }; __webpack_exports__["a"] = difference2; @@ -25100,7 +31606,7 @@ var require_hierarchy = __commonJS({ var __WEBPACK_IMPORTED_MODULE_1__is_match__ = __webpack_require__(19); var __WEBPACK_IMPORTED_MODULE_2__is_array__ = __webpack_require__(0); var __WEBPACK_IMPORTED_MODULE_3__is_plain_object__ = __webpack_require__(9); - function find4(arr, predicate) { + function find11(arr, predicate) { if (!Object(__WEBPACK_IMPORTED_MODULE_2__is_array__["a"])(arr)) return null; var _predicate; @@ -25121,11 +31627,11 @@ var require_hierarchy = __commonJS({ } return null; } - __webpack_exports__["a"] = find4; + __webpack_exports__["a"] = find11; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - function findIndex2(arr, predicate, fromIndex) { + function findIndex3(arr, predicate, fromIndex) { if (fromIndex === void 0) { fromIndex = 0; } @@ -25136,7 +31642,7 @@ var require_hierarchy = __commonJS({ } return -1; } - __webpack_exports__["a"] = findIndex2; + __webpack_exports__["a"] = findIndex3; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25163,7 +31669,7 @@ var require_hierarchy = __commonJS({ function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0); - var flatten2 = function(arr) { + var flatten9 = function(arr) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a"])(arr)) { return []; } @@ -25173,7 +31679,7 @@ var require_hierarchy = __commonJS({ } return rst; }; - __webpack_exports__["a"] = flatten2; + __webpack_exports__["a"] = flatten9; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25197,47 +31703,47 @@ var require_hierarchy = __commonJS({ "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0); var __WEBPACK_IMPORTED_MODULE_1__filter__ = __webpack_require__(14); - var getRange2 = function(values2) { - values2 = Object(__WEBPACK_IMPORTED_MODULE_1__filter__["a"])(values2, function(v3) { + var getRange3 = function(values4) { + values4 = Object(__WEBPACK_IMPORTED_MODULE_1__filter__["a"])(values4, function(v3) { return !isNaN(v3); }); - if (!values2.length) { + if (!values4.length) { return { min: 0, max: 0 }; } - if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a"])(values2[0])) { + if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a"])(values4[0])) { var tmp = []; - for (var i4 = 0; i4 < values2.length; i4++) { - tmp = tmp.concat(values2[i4]); + for (var i4 = 0; i4 < values4.length; i4++) { + tmp = tmp.concat(values4[i4]); } - values2 = tmp; + values4 = tmp; } - var max8 = Math.max.apply(null, values2); - var min7 = Math.min.apply(null, values2); + var max15 = Math.max.apply(null, values4); + var min13 = Math.min.apply(null, values4); return { - min: min7, - max: max8 + min: min13, + max: max15 }; }; - __webpack_exports__["a"] = getRange2; + __webpack_exports__["a"] = getRange3; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var arrPrototype2 = Array.prototype; - var splice3 = arrPrototype2.splice; - var indexOf3 = arrPrototype2.indexOf; + var arrPrototype = Array.prototype; + var splice = arrPrototype.splice; + var indexOf2 = arrPrototype.indexOf; var pull = function(arr) { - var values2 = []; + var values4 = []; for (var _i = 1; _i < arguments.length; _i++) { - values2[_i - 1] = arguments[_i]; + values4[_i - 1] = arguments[_i]; } - for (var i4 = 0; i4 < values2.length; i4++) { - var value2 = values2[i4]; + for (var i4 = 0; i4 < values4.length; i4++) { + var value2 = values4[i4]; var fromIndex = -1; - while ((fromIndex = indexOf3.call(arr, value2)) > -1) { - splice3.call(arr, fromIndex, 1); + while ((fromIndex = indexOf2.call(arr, value2)) > -1) { + splice.call(arr, fromIndex, 1); } } return arr; @@ -25249,17 +31755,17 @@ var require_hierarchy = __commonJS({ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2); var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0); var __WEBPACK_IMPORTED_MODULE_2__is_plain_object__ = __webpack_require__(9); - var reduce2 = function(arr, fn2, init) { + var reduce11 = function(arr, fn, init) { if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a"])(arr) && !Object(__WEBPACK_IMPORTED_MODULE_2__is_plain_object__["a"])(arr)) { return arr; } var result = init; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a"])(arr, function(data3, i4) { - result = fn2(result, data3, i4); + result = fn(result, data3, i4); }); return result; }; - __webpack_exports__["a"] = reduce2; + __webpack_exports__["a"] = reduce11; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25360,9 +31866,9 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - __webpack_exports__["a"] = head2; + __webpack_exports__["a"] = head13; var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1); - function head2(o3) { + function head13(o3) { if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a"])(o3)) { return o3[0]; } @@ -25371,9 +31877,9 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - __webpack_exports__["a"] = last2; + __webpack_exports__["a"] = last17; var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1); - function last2(o3) { + function last17(o3) { if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a"])(o3)) { var arr = o3; return arr[arr.length - 1]; @@ -25401,25 +31907,25 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var every2 = function(arr, func) { + var every4 = function(arr, func) { for (var i4 = 0; i4 < arr.length; i4++) { if (!func(arr[i4], i4)) return false; } return true; }; - __webpack_exports__["a"] = every2; + __webpack_exports__["a"] = every4; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var some2 = function(arr, func) { + var some5 = function(arr, func) { for (var i4 = 0; i4 < arr.length; i4++) { if (func(arr[i4], i4)) return true; } return false; }; - __webpack_exports__["a"] = some2; + __webpack_exports__["a"] = some5; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25445,7 +31951,7 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - function wrapBehavior2(obj, action) { + function wrapBehavior4(obj, action) { if (obj["_wrap_" + action]) { return obj["_wrap_" + action]; } @@ -25455,7 +31961,7 @@ var require_hierarchy = __commonJS({ obj["_wrap_" + action] = method; return method; } - __webpack_exports__["a"] = wrapBehavior2; + __webpack_exports__["a"] = wrapBehavior4; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25509,15 +32015,15 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var clamp2 = function(a4, min7, max8) { - if (a4 < min7) { - return min7; - } else if (a4 > max8) { - return max8; + var clamp12 = function(a4, min13, max15) { + if (a4 < min13) { + return min13; + } else if (a4 > max15) { + return max15; } return a4; }; - __webpack_exports__["a"] = clamp2; + __webpack_exports__["a"] = clamp12; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25554,10 +32060,10 @@ var require_hierarchy = __commonJS({ function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5); - var isInteger3 = Number.isInteger ? Number.isInteger : function(num) { + var isInteger2 = Number.isInteger ? Number.isInteger : function(num) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a"])(num) && num % 1 === 0; }; - __webpack_exports__["a"] = isInteger3; + __webpack_exports__["a"] = isInteger2; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25569,11 +32075,11 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - __webpack_exports__["a"] = isNumberEqual3; - var PRECISION2 = 1e-5; - function isNumberEqual3(a4, b10, precision) { + __webpack_exports__["a"] = isNumberEqual11; + var PRECISION = 1e-5; + function isNumberEqual11(a4, b10, precision) { if (precision === void 0) { - precision = PRECISION2; + precision = PRECISION; } return Math.abs(a4 - b10) < precision; } @@ -25600,30 +32106,30 @@ var require_hierarchy = __commonJS({ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2); var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0); var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(3); - __webpack_exports__["a"] = function(arr, fn2) { + __webpack_exports__["a"] = function(arr, fn) { if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a"])(arr)) { return void 0; } - var max8 = arr[0]; + var max15 = arr[0]; var maxData; - if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a"])(fn2)) { - maxData = fn2(arr[0]); + if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a"])(fn)) { + maxData = fn(arr[0]); } else { - maxData = arr[0][fn2]; + maxData = arr[0][fn]; } var data3; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a"])(arr, function(val) { - if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a"])(fn2)) { - data3 = fn2(val); + if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a"])(fn)) { + data3 = fn(val); } else { - data3 = val[fn2]; + data3 = val[fn]; } if (data3 > maxData) { - max8 = val; + max15 = val; maxData = data3; } }); - return max8; + return max15; }; }, function(module3, __webpack_exports__, __webpack_require__) { @@ -25631,44 +32137,44 @@ var require_hierarchy = __commonJS({ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2); var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0); var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(3); - __webpack_exports__["a"] = function(arr, fn2) { + __webpack_exports__["a"] = function(arr, fn) { if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a"])(arr)) { return void 0; } - var min7 = arr[0]; + var min13 = arr[0]; var minData; - if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a"])(fn2)) { - minData = fn2(arr[0]); + if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a"])(fn)) { + minData = fn(arr[0]); } else { - minData = arr[0][fn2]; + minData = arr[0][fn]; } var data3; Object(__WEBPACK_IMPORTED_MODULE_0__each__["a"])(arr, function(val) { - if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a"])(fn2)) { - data3 = fn2(val); + if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a"])(fn)) { + data3 = fn(val); } else { - data3 = val[fn2]; + data3 = val[fn]; } if (data3 < minData) { - min7 = val; + min13 = val; minData = data3; } }); - return min7; + return min13; }; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var mod3 = function(n3, m4) { + var mod5 = function(n3, m4) { return (n3 % m4 + m4) % m4; }; - __webpack_exports__["a"] = mod3; + __webpack_exports__["a"] = mod5; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var DEGREE2 = 180 / Math.PI; + var DEGREE = 180 / Math.PI; var toDegree = function(radian) { - return DEGREE2 * radian; + return DEGREE * radian; }; __webpack_exports__["a"] = toDegree; }, @@ -25678,11 +32184,11 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var RADIAN2 = Math.PI / 180; - var toRadian2 = function(degree4) { - return RADIAN2 * degree4; + var RADIAN = Math.PI / 180; + var toRadian4 = function(degree4) { + return RADIAN * degree4; }; - __webpack_exports__["a"] = toRadian2; + __webpack_exports__["a"] = toRadian4; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25705,10 +32211,10 @@ var require_hierarchy = __commonJS({ function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(10); - var lowerCase2 = function(str8) { + var lowerCase4 = function(str8) { return Object(__WEBPACK_IMPORTED_MODULE_0__to_string__["a"])(str8).toLowerCase(); }; - __webpack_exports__["a"] = lowerCase2; + __webpack_exports__["a"] = lowerCase4; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25721,7 +32227,7 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - function substitute4(str8, o3) { + function substitute5(str8, o3) { if (!str8 || !o3) { return str8; } @@ -25732,7 +32238,7 @@ var require_hierarchy = __commonJS({ return o3[name] === void 0 ? "" : o3[name]; }); } - __webpack_exports__["a"] = substitute4; + __webpack_exports__["a"] = substitute5; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25745,11 +32251,11 @@ var require_hierarchy = __commonJS({ function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(10); - var upperFirst2 = function(value2) { + var upperFirst8 = function(value2) { var str8 = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__["a"])(value2); return str8.charAt(0).toUpperCase() + str8.substring(1); }; - __webpack_exports__["a"] = upperFirst2; + __webpack_exports__["a"] = upperFirst8; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25762,18 +32268,18 @@ var require_hierarchy = __commonJS({ function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4); - var isBoolean3 = function(value2) { + var isBoolean10 = function(value2) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a"])(value2, "Boolean"); }; - __webpack_exports__["a"] = isBoolean3; + __webpack_exports__["a"] = isBoolean10; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4); - var isDate2 = function(value2) { + var isDate3 = function(value2) { return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a"])(value2, "Date"); }; - __webpack_exports__["a"] = isDate2; + __webpack_exports__["a"] = isDate3; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25807,33 +32313,33 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var isUndefined2 = function(value2) { + var isUndefined5 = function(value2) { return value2 === void 0; }; - __webpack_exports__["a"] = isUndefined2; + __webpack_exports__["a"] = isUndefined5; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var isElement2 = function(o3) { + var isElement3 = function(o3) { return o3 instanceof Element || o3 instanceof HTMLDocument; }; - __webpack_exports__["a"] = isElement2; + __webpack_exports__["a"] = isElement3; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_exports__["a"] = requestAnimationFrame4; - function requestAnimationFrame4(fn2) { + function requestAnimationFrame4(fn) { var method = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function(f3) { return setTimeout(f3, 16); }; - return method(fn2); + return method(fn); } ; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - __webpack_exports__["a"] = cancelAnimationFrame4; - function cancelAnimationFrame4(handler) { + __webpack_exports__["a"] = cancelAnimationFrame3; + function cancelAnimationFrame3(handler) { var method = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.msCancelAnimationFrame || clearTimeout; method(handler); } @@ -25862,7 +32368,7 @@ var require_hierarchy = __commonJS({ function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0); - var clone10 = function(obj) { + var clone41 = function(obj) { if (typeof obj !== "object" || obj === null) { return obj; } @@ -25871,7 +32377,7 @@ var require_hierarchy = __commonJS({ rst = []; for (var i4 = 0, l4 = obj.length; i4 < l4; i4++) { if (typeof obj[i4] === "object" && obj[i4] != null) { - rst[i4] = clone10(obj[i4]); + rst[i4] = clone41(obj[i4]); } else { rst[i4] = obj[i4]; } @@ -25880,7 +32386,7 @@ var require_hierarchy = __commonJS({ rst = {}; for (var k4 in obj) { if (typeof obj[k4] === "object" && obj[k4] != null) { - rst[k4] = clone10(obj[k4]); + rst[k4] = clone41(obj[k4]); } else { rst[k4] = obj[k4]; } @@ -25888,11 +32394,11 @@ var require_hierarchy = __commonJS({ } return rst; }; - __webpack_exports__["a"] = clone10; + __webpack_exports__["a"] = clone41; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - function debounce2(func, wait, immediate) { + function debounce5(func, wait, immediate) { var timeout2; return function() { var context = this, args = arguments; @@ -25910,7 +32416,7 @@ var require_hierarchy = __commonJS({ } }; } - __webpack_exports__["a"] = debounce2; + __webpack_exports__["a"] = debounce5; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25941,10 +32447,10 @@ var require_hierarchy = __commonJS({ "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0); var __WEBPACK_IMPORTED_MODULE_1__is_plain_object__ = __webpack_require__(9); - var MAX_MIX_LEVEL3 = 5; - function _deepMix2(dist4, src, level, maxLevel) { + var MAX_MIX_LEVEL2 = 5; + function _deepMix(dist4, src, level, maxLevel) { level = level || 0; - maxLevel = maxLevel || MAX_MIX_LEVEL3; + maxLevel = maxLevel || MAX_MIX_LEVEL2; for (var key in src) { if (src.hasOwnProperty(key)) { var value2 = src[key]; @@ -25953,7 +32459,7 @@ var require_hierarchy = __commonJS({ dist4[key] = {}; } if (level < maxLevel) { - _deepMix2(dist4[key], value2, level + 1, maxLevel); + _deepMix(dist4[key], value2, level + 1, maxLevel); } else { dist4[key] = src[key]; } @@ -25966,17 +32472,17 @@ var require_hierarchy = __commonJS({ } } } - var deepMix2 = function(rst) { + var deepMix58 = function(rst) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } for (var i4 = 0; i4 < args.length; i4 += 1) { - _deepMix2(rst, args[i4]); + _deepMix(rst, args[i4]); } return rst; }; - __webpack_exports__["a"] = deepMix2; + __webpack_exports__["a"] = deepMix58; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -26015,7 +32521,7 @@ var require_hierarchy = __commonJS({ function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1); - var indexOf3 = function(arr, obj) { + var indexOf2 = function(arr, obj) { if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a"])(arr)) { return -1; } @@ -26032,7 +32538,7 @@ var require_hierarchy = __commonJS({ } return index2; }; - __webpack_exports__["a"] = indexOf3; + __webpack_exports__["a"] = indexOf2; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; @@ -26040,8 +32546,8 @@ var require_hierarchy = __commonJS({ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1); var __WEBPACK_IMPORTED_MODULE_2__get_type__ = __webpack_require__(27); var __WEBPACK_IMPORTED_MODULE_3__is_prototype__ = __webpack_require__(28); - var hasOwnProperty4 = Object.prototype.hasOwnProperty; - function isEmpty2(value2) { + var hasOwnProperty = Object.prototype.hasOwnProperty; + function isEmpty14(value2) { if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a"])(value2)) { return true; } @@ -26056,30 +32562,30 @@ var require_hierarchy = __commonJS({ return !Object.keys(value2).length; } for (var key in value2) { - if (hasOwnProperty4.call(value2, key)) { + if (hasOwnProperty.call(value2, key)) { return false; } } return true; } - __webpack_exports__["a"] = isEmpty2; + __webpack_exports__["a"] = isEmpty14; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(3); var __WEBPACK_IMPORTED_MODULE_1__is_equal__ = __webpack_require__(29); - __webpack_exports__["a"] = function(value2, other2, fn2) { - if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_function__["a"])(fn2)) { + __webpack_exports__["a"] = function(value2, other2, fn) { + if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_function__["a"])(fn)) { return Object(__WEBPACK_IMPORTED_MODULE_1__is_equal__["a"])(value2, other2); } - return !!fn2(value2, other2); + return !!fn(value2, other2); }; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2); var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1); - var map6 = function(arr, func) { + var map23 = function(arr, func) { if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a"])(arr)) { return arr; } @@ -26089,18 +32595,18 @@ var require_hierarchy = __commonJS({ }); return result; }; - __webpack_exports__["a"] = map6; + __webpack_exports__["a"] = map23; }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6); var __WEBPACK_IMPORTED_MODULE_1__is_object__ = __webpack_require__(13); - var identity5 = function(v3) { + var identity4 = function(v3) { return v3; }; __webpack_exports__["a"] = function(object, func) { if (func === void 0) { - func = identity5; + func = identity4; } var r4 = {}; if (Object(__WEBPACK_IMPORTED_MODULE_1__is_object__["a"])(object) && !Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a"])(object)) { @@ -26148,14 +32654,14 @@ var require_hierarchy = __commonJS({ "use strict"; var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2); var __WEBPACK_IMPORTED_MODULE_1__is_plain_object__ = __webpack_require__(9); - var hasOwnProperty4 = Object.prototype.hasOwnProperty; - __webpack_exports__["a"] = function(object, keys2) { + var hasOwnProperty = Object.prototype.hasOwnProperty; + __webpack_exports__["a"] = function(object, keys6) { if (object === null || !Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__["a"])(object)) { return {}; } var result = {}; - Object(__WEBPACK_IMPORTED_MODULE_0__each__["a"])(keys2, function(key) { - if (hasOwnProperty4.call(object, key)) { + Object(__WEBPACK_IMPORTED_MODULE_0__each__["a"])(keys6, function(key) { + if (hasOwnProperty.call(object, key)) { result[key] = object[key]; } }); @@ -26214,15 +32720,15 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var map6 = {}; + var map23 = {}; __webpack_exports__["a"] = function(prefix2) { prefix2 = prefix2 || "g"; - if (!map6[prefix2]) { - map6[prefix2] = 1; + if (!map23[prefix2]) { + map23[prefix2] = 1; } else { - map6[prefix2] += 1; + map23[prefix2] += 1; } - return prefix2 + map6[prefix2]; + return prefix2 + map23[prefix2]; }; }, function(module3, __webpack_exports__, __webpack_require__) { @@ -26238,10 +32744,10 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - __webpack_exports__["a"] = size2; + __webpack_exports__["a"] = size14; var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6); var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1); - function size2(o3) { + function size14(o3) { if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a"])(o3)) { return 0; } @@ -26253,32 +32759,32 @@ var require_hierarchy = __commonJS({ }, function(module3, __webpack_exports__, __webpack_require__) { "use strict"; - var default_12 = function() { - function default_13() { + var default_1 = function() { + function default_12() { this.map = {}; } - default_13.prototype.has = function(key) { + default_12.prototype.has = function(key) { return this.map[key] !== void 0; }; - default_13.prototype.get = function(key, def) { + default_12.prototype.get = function(key, def) { var v3 = this.map[key]; return v3 === void 0 ? def : v3; }; - default_13.prototype.set = function(key, value2) { + default_12.prototype.set = function(key, value2) { this.map[key] = value2; }; - default_13.prototype.clear = function() { + default_12.prototype.clear = function() { this.map = {}; }; - default_13.prototype.delete = function(key) { + default_12.prototype.delete = function(key) { delete this.map[key]; }; - default_13.prototype.size = function() { + default_12.prototype.size = function() { return Object.keys(this.map).length; }; - return default_13; + return default_12; }(); - __webpack_exports__["a"] = default_12; + __webpack_exports__["a"] = default_1; }, function(module3, exports2) { function WrappedTree(w4, h3, y5, c5) { @@ -26332,8 +32838,8 @@ var require_hierarchy = __commonJS({ return res; } function normalize5(node, isHorizontal2) { - var min7 = getMin(node, isHorizontal2); - moveRight(node, -min7, isHorizontal2); + var min13 = getMin(node, isHorizontal2); + moveRight(node, -min13, isHorizontal2); } function convertBack(converted, root, isHorizontal2) { if (isHorizontal2) { @@ -26374,9 +32880,9 @@ var require_hierarchy = __commonJS({ var ih = updateIYL(bottom(t4.c[0].el), 0, null); for (var i4 = 1; i4 < t4.cs; ++i4) { firstWalk(t4.c[i4]); - var min7 = bottom(t4.c[i4].er); + var min13 = bottom(t4.c[i4].er); separate(t4, i4, ih); - ih = updateIYL(min7, i4, ih); + ih = updateIYL(min13, i4, ih); } positionRoot(t4); setExtremes(t4); @@ -26511,7 +33017,7 @@ var require_hierarchy = __commonJS({ subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - var TreeLayout = __webpack_require__(11); + var TreeLayout2 = __webpack_require__(11); var dendrogram = __webpack_require__(115); var doTreeLayout = __webpack_require__(17); var util = __webpack_require__(7); @@ -26527,7 +33033,7 @@ var require_hierarchy = __commonJS({ return doTreeLayout(me.rootNode, me.options, dendrogram); }; return DendrogramLayout2; - }(TreeLayout); + }(TreeLayout2); var DEFAULT_OPTIONS37 = {}; function dendrogramLayout(root, options) { options = util.assign({}, DEFAULT_OPTIONS37, options); @@ -26643,7 +33149,7 @@ var require_hierarchy = __commonJS({ subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - var TreeLayout = __webpack_require__(11); + var TreeLayout2 = __webpack_require__(11); var indentedTree = __webpack_require__(117); var separateTree = __webpack_require__(30); var util = __webpack_require__(7); @@ -26665,16 +33171,16 @@ var require_hierarchy = __commonJS({ var root = me.rootNode; options.isHorizontal = true; var _options$indent = options.indent, indent2 = _options$indent === void 0 ? 20 : _options$indent, _options$dropCap = options.dropCap, dropCap = _options$dropCap === void 0 ? true : _options$dropCap; - var direction5 = options.direction || DEFAULT_DIRECTION; - if (direction5 && VALID_DIRECTIONS.indexOf(direction5) === -1) { - throw new TypeError("Invalid direction: " + direction5); + var direction3 = options.direction || DEFAULT_DIRECTION; + if (direction3 && VALID_DIRECTIONS.indexOf(direction3) === -1) { + throw new TypeError("Invalid direction: " + direction3); } - if (direction5 === VALID_DIRECTIONS[0]) { + if (direction3 === VALID_DIRECTIONS[0]) { indentedTree(root, indent2, dropCap); - } else if (direction5 === VALID_DIRECTIONS[1]) { + } else if (direction3 === VALID_DIRECTIONS[1]) { indentedTree(root, indent2, dropCap); root.right2left(); - } else if (direction5 === VALID_DIRECTIONS[2]) { + } else if (direction3 === VALID_DIRECTIONS[2]) { var _separateTree = separateTree(root, options), left2 = _separateTree.left, right2 = _separateTree.right; indentedTree(left2, indent2, dropCap); left2.right2left(); @@ -26686,7 +33192,7 @@ var require_hierarchy = __commonJS({ return root; }; return IndentedLayout2; - }(TreeLayout); + }(TreeLayout2); var DEFAULT_OPTIONS37 = {}; function indentedLayout(root, options) { options = util.assign({}, DEFAULT_OPTIONS37, options); @@ -26725,7 +33231,7 @@ var require_hierarchy = __commonJS({ subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - var TreeLayout = __webpack_require__(11); + var TreeLayout2 = __webpack_require__(11); var mindmap = __webpack_require__(119); var doTreeLayout = __webpack_require__(17); var util = __webpack_require__(7); @@ -26740,7 +33246,7 @@ var require_hierarchy = __commonJS({ return doTreeLayout(me.rootNode, me.options, mindmap); }; return MindmapLayout2; - }(TreeLayout); + }(TreeLayout2); var DEFAULT_OPTIONS37 = {}; function mindmapLayout(root, options) { options = util.assign({}, DEFAULT_OPTIONS37, options); @@ -26771,8 +33277,8 @@ var require_hierarchy = __commonJS({ thirdWalk(c5); }); var first = children[0]; - var last2 = children[len5 - 1]; - var childrenHeight = last2.y - first.y + last2.height; + var last17 = children[len5 - 1]; + var childrenHeight = last17.y - first.y + last17.height; var childrenTotalHeight = 0; children.forEach(function(child) { childrenTotalHeight += child.totalHeight; @@ -26785,7 +33291,7 @@ var require_hierarchy = __commonJS({ c5.translate(0, offset); }); } else { - node.y = (first.y + first.height / 2 + last2.y + last2.height / 2) / 2 - node.height / 2; + node.y = (first.y + first.height / 2 + last17.y + last17.height / 2) / 2 - node.height / 2; } } } @@ -26887,109 +33393,6 @@ var require_insert_css = __commonJS({ } }); -// node_modules/react/index.js -var require_react = __commonJS({ - "node_modules/react/index.js"(exports, module2) { - module2.exports = (init_compat_module(), compat_module_exports); - } -}); - -// node_modules/@ant-design/charts/lib/errorBoundary/index.js -var require_errorBoundary = __commonJS({ - "node_modules/@ant-design/charts/lib/errorBoundary/index.js"(exports) { - "use strict"; - var __extends15 = exports && exports.__extends || function() { - var extendStatics = function(d3, b10) { - extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d4, b11) { - d4.__proto__ = b11; - } || function(d4, b11) { - for (var p4 in b11) - if (Object.prototype.hasOwnProperty.call(b11, p4)) - d4[p4] = b11[p4]; - }; - return extendStatics(d3, b10); - }; - return function(d3, b10) { - if (typeof b10 !== "function" && b10 !== null) - throw new TypeError("Class extends value " + String(b10) + " is not a constructor or null"); - extendStatics(d3, b10); - function __() { - this.constructor = d3; - } - d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); - }; - }(); - var __createBinding4 = exports && exports.__createBinding || (Object.create ? function(o3, m4, k4, k22) { - if (k22 === void 0) - k22 = k4; - Object.defineProperty(o3, k22, { enumerable: true, get: function() { - return m4[k4]; - } }); - } : function(o3, m4, k4, k22) { - if (k22 === void 0) - k22 = k4; - o3[k22] = m4[k4]; - }); - var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o3, v3) { - Object.defineProperty(o3, "default", { enumerable: true, value: v3 }); - } : function(o3, v3) { - o3["default"] = v3; - }); - var __importStar4 = exports && exports.__importStar || function(mod3) { - if (mod3 && mod3.__esModule) - return mod3; - var result = {}; - if (mod3 != null) { - for (var k4 in mod3) - if (k4 !== "default" && Object.prototype.hasOwnProperty.call(mod3, k4)) - __createBinding4(result, mod3, k4); - } - __setModuleDefault(result, mod3); - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - var react_1 = __importStar4(require_react()); - var ErrorBoundary3 = function(_super) { - __extends15(ErrorBoundary4, _super); - function ErrorBoundary4() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.state = { - hasError: false - }; - _this.renderError = function(e4) { - var errorTemplate = _this.props.errorTemplate; - switch (e4) { - default: - return errorTemplate && typeof errorTemplate === "function" ? errorTemplate(e4) : react_1.default.createElement("h5", null, "\u7EC4\u4EF6\u51FA\u9519\u4E86\uFF0C\u8BF7\u6838\u67E5\u540E\u91CD\u8BD5\uFF1A ", e4.message); - } - }; - return _this; - } - ErrorBoundary4.getDerivedStateFromError = function(error) { - return { hasError: true, error }; - }; - ErrorBoundary4.getDerivedStateFromProps = function(nextProps, state2) { - if (state2.children !== nextProps.children) { - return { - children: nextProps.children, - hasError: false, - error: void 0 - }; - } - return null; - }; - ErrorBoundary4.prototype.render = function() { - if (this.state.hasError) { - return this.renderError(this.state.error); - } - return react_1.default.createElement(react_1.Fragment, null, this.props.children); - }; - return ErrorBoundary4; - }(react_1.default.Component); - exports.default = ErrorBoundary3; - } -}); - // node_modules/papaparse/papaparse.min.js var require_papaparse_min = __commonJS({ "node_modules/papaparse/papaparse.min.js"(exports, module2) { @@ -27532,7 +33935,7 @@ var require_papaparse_min = __commonJS({ }); // node_modules/obsidian-dataview/lib/index.js -var require_lib4 = __commonJS({ +var require_lib5 = __commonJS({ "node_modules/obsidian-dataview/lib/index.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -27667,24 +34070,24 @@ YAMLException$1.prototype.toString = function toString(compact) { }; var exception = YAMLException$1; function getLine(buffer, lineStart, lineEnd, position2, maxLineLength) { - var head2 = ""; + var head13 = ""; var tail = ""; var maxHalfLength = Math.floor(maxLineLength / 2) - 1; if (position2 - lineStart > maxHalfLength) { - head2 = " ... "; - lineStart = position2 - maxHalfLength + head2.length; + head13 = " ... "; + lineStart = position2 - maxHalfLength + head13.length; } if (lineEnd - position2 > maxHalfLength) { tail = " ..."; lineEnd = position2 + maxHalfLength - tail.length; } return { - str: head2 + buffer.slice(lineStart, lineEnd).replace(/\t/g, "\u2192") + tail, - pos: position2 - lineStart + head2.length + str: head13 + buffer.slice(lineStart, lineEnd).replace(/\t/g, "\u2192") + tail, + pos: position2 - lineStart + head13.length }; } -function padStart(string, max8) { - return common.repeat(" ", max8 - string.length) + string; +function padStart(string, max15) { + return common.repeat(" ", max15 - string.length) + string; } function makeSnippet(mark, options) { options = Object.create(options || null); @@ -27750,11 +34153,11 @@ var YAML_NODE_KINDS = [ "sequence", "mapping" ]; -function compileStyleAliases(map6) { +function compileStyleAliases(map23) { var result = {}; - if (map6 !== null) { - Object.keys(map6).forEach(function(style) { - map6[style].forEach(function(alias) { + if (map23 !== null) { + Object.keys(map23).forEach(function(style) { + map23[style].forEach(function(alias) { result[String(alias)] = style; }); }); @@ -27899,8 +34302,8 @@ var failsafe = new schema({ function resolveYamlNull(data3) { if (data3 === null) return true; - var max8 = data3.length; - return max8 === 1 && data3 === "~" || max8 === 4 && (data3 === "null" || data3 === "Null" || data3 === "NULL"); + var max15 = data3.length; + return max15 === 1 && data3 === "~" || max15 === 4 && (data3 === "null" || data3 === "Null" || data3 === "NULL"); } function constructYamlNull() { return null; @@ -27935,8 +34338,8 @@ var _null = new type("tag:yaml.org,2002:null", { function resolveYamlBoolean(data3) { if (data3 === null) return false; - var max8 = data3.length; - return max8 === 4 && (data3 === "true" || data3 === "True" || data3 === "TRUE") || max8 === 5 && (data3 === "false" || data3 === "False" || data3 === "FALSE"); + var max15 = data3.length; + return max15 === 4 && (data3 === "true" || data3 === "True" || data3 === "TRUE") || max15 === 5 && (data3 === "false" || data3 === "False" || data3 === "FALSE"); } function constructYamlBoolean(data3) { return data3 === "true" || data3 === "True" || data3 === "TRUE"; @@ -27974,20 +34377,20 @@ function isDecCode(c5) { function resolveYamlInteger(data3) { if (data3 === null) return false; - var max8 = data3.length, index2 = 0, hasDigits = false, ch2; - if (!max8) + var max15 = data3.length, index2 = 0, hasDigits = false, ch2; + if (!max15) return false; ch2 = data3[index2]; if (ch2 === "-" || ch2 === "+") { ch2 = data3[++index2]; } if (ch2 === "0") { - if (index2 + 1 === max8) + if (index2 + 1 === max15) return true; ch2 = data3[++index2]; if (ch2 === "b") { index2++; - for (; index2 < max8; index2++) { + for (; index2 < max15; index2++) { ch2 = data3[index2]; if (ch2 === "_") continue; @@ -27999,7 +34402,7 @@ function resolveYamlInteger(data3) { } if (ch2 === "x") { index2++; - for (; index2 < max8; index2++) { + for (; index2 < max15; index2++) { ch2 = data3[index2]; if (ch2 === "_") continue; @@ -28011,7 +34414,7 @@ function resolveYamlInteger(data3) { } if (ch2 === "o") { index2++; - for (; index2 < max8; index2++) { + for (; index2 < max15; index2++) { ch2 = data3[index2]; if (ch2 === "_") continue; @@ -28024,7 +34427,7 @@ function resolveYamlInteger(data3) { } if (ch2 === "_") return false; - for (; index2 < max8; index2++) { + for (; index2 < max15; index2++) { ch2 = data3[index2]; if (ch2 === "_") continue; @@ -28237,9 +34640,9 @@ var BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 function resolveYamlBinary(data3) { if (data3 === null) return false; - var code, idx, bitlen = 0, max8 = data3.length, map6 = BASE64_MAP; - for (idx = 0; idx < max8; idx++) { - code = map6.indexOf(data3.charAt(idx)); + var code, idx, bitlen = 0, max15 = data3.length, map23 = BASE64_MAP; + for (idx = 0; idx < max15; idx++) { + code = map23.indexOf(data3.charAt(idx)); if (code > 64) continue; if (code < 0) @@ -28249,16 +34652,16 @@ function resolveYamlBinary(data3) { return bitlen % 8 === 0; } function constructYamlBinary(data3) { - var idx, tailbits, input = data3.replace(/[\r\n=]/g, ""), max8 = input.length, map6 = BASE64_MAP, bits = 0, result = []; - for (idx = 0; idx < max8; idx++) { + var idx, tailbits, input = data3.replace(/[\r\n=]/g, ""), max15 = input.length, map23 = BASE64_MAP, bits = 0, result = []; + for (idx = 0; idx < max15; idx++) { if (idx % 4 === 0 && idx) { result.push(bits >> 16 & 255); result.push(bits >> 8 & 255); result.push(bits & 255); } - bits = bits << 6 | map6.indexOf(input.charAt(idx)); + bits = bits << 6 | map23.indexOf(input.charAt(idx)); } - tailbits = max8 % 4 * 6; + tailbits = max15 % 4 * 6; if (tailbits === 0) { result.push(bits >> 16 & 255); result.push(bits >> 8 & 255); @@ -28272,32 +34675,32 @@ function constructYamlBinary(data3) { return new Uint8Array(result); } function representYamlBinary(object) { - var result = "", bits = 0, idx, tail, max8 = object.length, map6 = BASE64_MAP; - for (idx = 0; idx < max8; idx++) { + var result = "", bits = 0, idx, tail, max15 = object.length, map23 = BASE64_MAP; + for (idx = 0; idx < max15; idx++) { if (idx % 3 === 0 && idx) { - result += map6[bits >> 18 & 63]; - result += map6[bits >> 12 & 63]; - result += map6[bits >> 6 & 63]; - result += map6[bits & 63]; + result += map23[bits >> 18 & 63]; + result += map23[bits >> 12 & 63]; + result += map23[bits >> 6 & 63]; + result += map23[bits & 63]; } bits = (bits << 8) + object[idx]; } - tail = max8 % 3; + tail = max15 % 3; if (tail === 0) { - result += map6[bits >> 18 & 63]; - result += map6[bits >> 12 & 63]; - result += map6[bits >> 6 & 63]; - result += map6[bits & 63]; + result += map23[bits >> 18 & 63]; + result += map23[bits >> 12 & 63]; + result += map23[bits >> 6 & 63]; + result += map23[bits & 63]; } else if (tail === 2) { - result += map6[bits >> 10 & 63]; - result += map6[bits >> 4 & 63]; - result += map6[bits << 2 & 63]; - result += map6[64]; + result += map23[bits >> 10 & 63]; + result += map23[bits >> 4 & 63]; + result += map23[bits << 2 & 63]; + result += map23[64]; } else if (tail === 1) { - result += map6[bits >> 2 & 63]; - result += map6[bits << 4 & 63]; - result += map6[64]; - result += map6[64]; + result += map23[bits >> 2 & 63]; + result += map23[bits << 4 & 63]; + result += map23[64]; + result += map23[64]; } return result; } @@ -28351,28 +34754,28 @@ var _toString$1 = Object.prototype.toString; function resolveYamlPairs(data3) { if (data3 === null) return true; - var index2, length5, pair, keys2, result, object = data3; + var index2, length5, pair, keys6, result, object = data3; result = new Array(object.length); for (index2 = 0, length5 = object.length; index2 < length5; index2 += 1) { pair = object[index2]; if (_toString$1.call(pair) !== "[object Object]") return false; - keys2 = Object.keys(pair); - if (keys2.length !== 1) + keys6 = Object.keys(pair); + if (keys6.length !== 1) return false; - result[index2] = [keys2[0], pair[keys2[0]]]; + result[index2] = [keys6[0], pair[keys6[0]]]; } return true; } function constructYamlPairs(data3) { if (data3 === null) return []; - var index2, length5, pair, keys2, result, object = data3; + var index2, length5, pair, keys6, result, object = data3; result = new Array(object.length); for (index2 = 0, length5 = object.length; index2 < length5; index2 += 1) { pair = object[index2]; - keys2 = Object.keys(pair); - result[index2] = [keys2[0], pair[keys2[0]]]; + keys6 = Object.keys(pair); + result[index2] = [keys6[0], pair[keys6[0]]]; } return result; } @@ -29633,15 +36036,15 @@ var DEPRECATED_BOOLEANS_SYNTAX = [ "OFF" ]; var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; -function compileStyleMap(schema3, map6) { - var result, keys2, index2, length5, tag, style, type2; - if (map6 === null) +function compileStyleMap(schema3, map23) { + var result, keys6, index2, length5, tag, style, type2; + if (map23 === null) return {}; result = {}; - keys2 = Object.keys(map6); - for (index2 = 0, length5 = keys2.length; index2 < length5; index2 += 1) { - tag = keys2[index2]; - style = String(map6[tag]); + keys6 = Object.keys(map23); + for (index2 = 0, length5 = keys6.length; index2 < length5; index2 += 1) { + tag = keys6[index2]; + style = String(map23[tag]); if (tag.slice(0, 2) === "!!") { tag = "tag:yaml.org,2002:" + tag.slice(2); } @@ -30237,17 +36640,768 @@ var jsYaml = { }; var js_yaml_default = jsYaml; -// node_modules/react/index.mjs -init_compat_module(); -init_compat_module(); +// node_modules/preact/dist/preact.module.js +var n2; +var l2; +var u; +var i2; +var t2; +var r2; +var o; +var f; +var e2 = {}; +var c2 = []; +var s2 = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i; +function a(n3, l4) { + for (var u3 in l4) + n3[u3] = l4[u3]; + return n3; +} +function h(n3) { + var l4 = n3.parentNode; + l4 && l4.removeChild(n3); +} +function v(l4, u3, i4) { + var t4, r4, o3, f3 = {}; + for (o3 in u3) + o3 == "key" ? t4 = u3[o3] : o3 == "ref" ? r4 = u3[o3] : f3[o3] = u3[o3]; + if (arguments.length > 2 && (f3.children = arguments.length > 3 ? n2.call(arguments, 2) : i4), typeof l4 == "function" && l4.defaultProps != null) + for (o3 in l4.defaultProps) + f3[o3] === void 0 && (f3[o3] = l4.defaultProps[o3]); + return y(l4, f3, t4, r4, null); +} +function y(n3, i4, t4, r4, o3) { + var f3 = { type: n3, props: i4, key: t4, ref: r4, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: o3 == null ? ++u : o3 }; + return o3 == null && l2.vnode != null && l2.vnode(f3), f3; +} +function p2() { + return { current: null }; +} +function d(n3) { + return n3.children; +} +function _(n3, l4) { + this.props = n3, this.context = l4; +} +function k(n3, l4) { + if (l4 == null) + return n3.__ ? k(n3.__, n3.__.__k.indexOf(n3) + 1) : null; + for (var u3; l4 < n3.__k.length; l4++) + if ((u3 = n3.__k[l4]) != null && u3.__e != null) + return u3.__e; + return typeof n3.type == "function" ? k(n3) : null; +} +function b(n3) { + var l4, u3; + if ((n3 = n3.__) != null && n3.__c != null) { + for (n3.__e = n3.__c.base = null, l4 = 0; l4 < n3.__k.length; l4++) + if ((u3 = n3.__k[l4]) != null && u3.__e != null) { + n3.__e = n3.__c.base = u3.__e; + break; + } + return b(n3); + } +} +function m(n3) { + (!n3.__d && (n3.__d = true) && t2.push(n3) && !g.__r++ || o !== l2.debounceRendering) && ((o = l2.debounceRendering) || r2)(g); +} +function g() { + for (var n3; g.__r = t2.length; ) + n3 = t2.sort(function(n4, l4) { + return n4.__v.__b - l4.__v.__b; + }), t2 = [], n3.some(function(n4) { + var l4, u3, i4, t4, r4, o3; + n4.__d && (r4 = (t4 = (l4 = n4).__v).__e, (o3 = l4.__P) && (u3 = [], (i4 = a({}, t4)).__v = t4.__v + 1, j(o3, t4, i4, l4.__n, o3.ownerSVGElement !== void 0, t4.__h != null ? [r4] : null, u3, r4 == null ? k(t4) : r4, t4.__h), z(u3, t4), t4.__e != r4 && b(t4))); + }); +} +function w(n3, l4, u3, i4, t4, r4, o3, f3, s4, a4) { + var h3, v3, p4, _8, b10, m4, g4, w4 = i4 && i4.__k || c2, A4 = w4.length; + for (u3.__k = [], h3 = 0; h3 < l4.length; h3++) + if ((_8 = u3.__k[h3] = (_8 = l4[h3]) == null || typeof _8 == "boolean" ? null : typeof _8 == "string" || typeof _8 == "number" || typeof _8 == "bigint" ? y(null, _8, null, null, _8) : Array.isArray(_8) ? y(d, { children: _8 }, null, null, null) : _8.__b > 0 ? y(_8.type, _8.props, _8.key, null, _8.__v) : _8) != null) { + if (_8.__ = u3, _8.__b = u3.__b + 1, (p4 = w4[h3]) === null || p4 && _8.key == p4.key && _8.type === p4.type) + w4[h3] = void 0; + else + for (v3 = 0; v3 < A4; v3++) { + if ((p4 = w4[v3]) && _8.key == p4.key && _8.type === p4.type) { + w4[v3] = void 0; + break; + } + p4 = null; + } + j(n3, _8, p4 = p4 || e2, t4, r4, o3, f3, s4, a4), b10 = _8.__e, (v3 = _8.ref) && p4.ref != v3 && (g4 || (g4 = []), p4.ref && g4.push(p4.ref, null, _8), g4.push(v3, _8.__c || b10, _8)), b10 != null ? (m4 == null && (m4 = b10), typeof _8.type == "function" && _8.__k === p4.__k ? _8.__d = s4 = x(_8, s4, n3) : s4 = P(n3, _8, p4, w4, b10, s4), typeof u3.type == "function" && (u3.__d = s4)) : s4 && p4.__e == s4 && s4.parentNode != n3 && (s4 = k(p4)); + } + for (u3.__e = m4, h3 = A4; h3--; ) + w4[h3] != null && (typeof u3.type == "function" && w4[h3].__e != null && w4[h3].__e == u3.__d && (u3.__d = k(i4, h3 + 1)), N(w4[h3], w4[h3])); + if (g4) + for (h3 = 0; h3 < g4.length; h3++) + M(g4[h3], g4[++h3], g4[++h3]); +} +function x(n3, l4, u3) { + for (var i4, t4 = n3.__k, r4 = 0; t4 && r4 < t4.length; r4++) + (i4 = t4[r4]) && (i4.__ = n3, l4 = typeof i4.type == "function" ? x(i4, l4, u3) : P(u3, i4, i4, t4, i4.__e, l4)); + return l4; +} +function A(n3, l4) { + return l4 = l4 || [], n3 == null || typeof n3 == "boolean" || (Array.isArray(n3) ? n3.some(function(n4) { + A(n4, l4); + }) : l4.push(n3)), l4; +} +function P(n3, l4, u3, i4, t4, r4) { + var o3, f3, e4; + if (l4.__d !== void 0) + o3 = l4.__d, l4.__d = void 0; + else if (u3 == null || t4 != r4 || t4.parentNode == null) + n: + if (r4 == null || r4.parentNode !== n3) + n3.appendChild(t4), o3 = null; + else { + for (f3 = r4, e4 = 0; (f3 = f3.nextSibling) && e4 < i4.length; e4 += 2) + if (f3 == t4) + break n; + n3.insertBefore(t4, r4), o3 = r4; + } + return o3 !== void 0 ? o3 : t4.nextSibling; +} +function C(n3, l4, u3, i4, t4) { + var r4; + for (r4 in u3) + r4 === "children" || r4 === "key" || r4 in l4 || H(n3, r4, null, u3[r4], i4); + for (r4 in l4) + t4 && typeof l4[r4] != "function" || r4 === "children" || r4 === "key" || r4 === "value" || r4 === "checked" || u3[r4] === l4[r4] || H(n3, r4, l4[r4], u3[r4], i4); +} +function $(n3, l4, u3) { + l4[0] === "-" ? n3.setProperty(l4, u3) : n3[l4] = u3 == null ? "" : typeof u3 != "number" || s2.test(l4) ? u3 : u3 + "px"; +} +function H(n3, l4, u3, i4, t4) { + var r4; + n: + if (l4 === "style") + if (typeof u3 == "string") + n3.style.cssText = u3; + else { + if (typeof i4 == "string" && (n3.style.cssText = i4 = ""), i4) + for (l4 in i4) + u3 && l4 in u3 || $(n3.style, l4, ""); + if (u3) + for (l4 in u3) + i4 && u3[l4] === i4[l4] || $(n3.style, l4, u3[l4]); + } + else if (l4[0] === "o" && l4[1] === "n") + r4 = l4 !== (l4 = l4.replace(/Capture$/, "")), l4 = l4.toLowerCase() in n3 ? l4.toLowerCase().slice(2) : l4.slice(2), n3.l || (n3.l = {}), n3.l[l4 + r4] = u3, u3 ? i4 || n3.addEventListener(l4, r4 ? T : I, r4) : n3.removeEventListener(l4, r4 ? T : I, r4); + else if (l4 !== "dangerouslySetInnerHTML") { + if (t4) + l4 = l4.replace(/xlink[H:h]/, "h").replace(/sName$/, "s"); + else if (l4 !== "href" && l4 !== "list" && l4 !== "form" && l4 !== "tabIndex" && l4 !== "download" && l4 in n3) + try { + n3[l4] = u3 == null ? "" : u3; + break n; + } catch (n4) { + } + typeof u3 == "function" || (u3 != null && (u3 !== false || l4[0] === "a" && l4[1] === "r") ? n3.setAttribute(l4, u3) : n3.removeAttribute(l4)); + } +} +function I(n3) { + this.l[n3.type + false](l2.event ? l2.event(n3) : n3); +} +function T(n3) { + this.l[n3.type + true](l2.event ? l2.event(n3) : n3); +} +function j(n3, u3, i4, t4, r4, o3, f3, e4, c5) { + var s4, h3, v3, y5, p4, k4, b10, m4, g4, x6, A4, P4 = u3.type; + if (u3.constructor !== void 0) + return null; + i4.__h != null && (c5 = i4.__h, e4 = u3.__e = i4.__e, u3.__h = null, o3 = [e4]), (s4 = l2.__b) && s4(u3); + try { + n: + if (typeof P4 == "function") { + if (m4 = u3.props, g4 = (s4 = P4.contextType) && t4[s4.__c], x6 = s4 ? g4 ? g4.props.value : s4.__ : t4, i4.__c ? b10 = (h3 = u3.__c = i4.__c).__ = h3.__E : ("prototype" in P4 && P4.prototype.render ? u3.__c = h3 = new P4(m4, x6) : (u3.__c = h3 = new _(m4, x6), h3.constructor = P4, h3.render = O), g4 && g4.sub(h3), h3.props = m4, h3.state || (h3.state = {}), h3.context = x6, h3.__n = t4, v3 = h3.__d = true, h3.__h = []), h3.__s == null && (h3.__s = h3.state), P4.getDerivedStateFromProps != null && (h3.__s == h3.state && (h3.__s = a({}, h3.__s)), a(h3.__s, P4.getDerivedStateFromProps(m4, h3.__s))), y5 = h3.props, p4 = h3.state, v3) + P4.getDerivedStateFromProps == null && h3.componentWillMount != null && h3.componentWillMount(), h3.componentDidMount != null && h3.__h.push(h3.componentDidMount); + else { + if (P4.getDerivedStateFromProps == null && m4 !== y5 && h3.componentWillReceiveProps != null && h3.componentWillReceiveProps(m4, x6), !h3.__e && h3.shouldComponentUpdate != null && h3.shouldComponentUpdate(m4, h3.__s, x6) === false || u3.__v === i4.__v) { + h3.props = m4, h3.state = h3.__s, u3.__v !== i4.__v && (h3.__d = false), h3.__v = u3, u3.__e = i4.__e, u3.__k = i4.__k, u3.__k.forEach(function(n4) { + n4 && (n4.__ = u3); + }), h3.__h.length && f3.push(h3); + break n; + } + h3.componentWillUpdate != null && h3.componentWillUpdate(m4, h3.__s, x6), h3.componentDidUpdate != null && h3.__h.push(function() { + h3.componentDidUpdate(y5, p4, k4); + }); + } + h3.context = x6, h3.props = m4, h3.state = h3.__s, (s4 = l2.__r) && s4(u3), h3.__d = false, h3.__v = u3, h3.__P = n3, s4 = h3.render(h3.props, h3.state, h3.context), h3.state = h3.__s, h3.getChildContext != null && (t4 = a(a({}, t4), h3.getChildContext())), v3 || h3.getSnapshotBeforeUpdate == null || (k4 = h3.getSnapshotBeforeUpdate(y5, p4)), A4 = s4 != null && s4.type === d && s4.key == null ? s4.props.children : s4, w(n3, Array.isArray(A4) ? A4 : [A4], u3, i4, t4, r4, o3, f3, e4, c5), h3.base = u3.__e, u3.__h = null, h3.__h.length && f3.push(h3), b10 && (h3.__E = h3.__ = null), h3.__e = false; + } else + o3 == null && u3.__v === i4.__v ? (u3.__k = i4.__k, u3.__e = i4.__e) : u3.__e = L(i4.__e, u3, i4, t4, r4, o3, f3, c5); + (s4 = l2.diffed) && s4(u3); + } catch (n4) { + u3.__v = null, (c5 || o3 != null) && (u3.__e = e4, u3.__h = !!c5, o3[o3.indexOf(e4)] = null), l2.__e(n4, u3, i4); + } +} +function z(n3, u3) { + l2.__c && l2.__c(u3, n3), n3.some(function(u4) { + try { + n3 = u4.__h, u4.__h = [], n3.some(function(n4) { + n4.call(u4); + }); + } catch (n4) { + l2.__e(n4, u4.__v); + } + }); +} +function L(l4, u3, i4, t4, r4, o3, f3, c5) { + var s4, a4, v3, y5 = i4.props, p4 = u3.props, d3 = u3.type, _8 = 0; + if (d3 === "svg" && (r4 = true), o3 != null) { + for (; _8 < o3.length; _8++) + if ((s4 = o3[_8]) && "setAttribute" in s4 == !!d3 && (d3 ? s4.localName === d3 : s4.nodeType === 3)) { + l4 = s4, o3[_8] = null; + break; + } + } + if (l4 == null) { + if (d3 === null) + return document.createTextNode(p4); + l4 = r4 ? document.createElementNS("http://www.w3.org/2000/svg", d3) : document.createElement(d3, p4.is && p4), o3 = null, c5 = false; + } + if (d3 === null) + y5 === p4 || c5 && l4.data === p4 || (l4.data = p4); + else { + if (o3 = o3 && n2.call(l4.childNodes), a4 = (y5 = i4.props || e2).dangerouslySetInnerHTML, v3 = p4.dangerouslySetInnerHTML, !c5) { + if (o3 != null) + for (y5 = {}, _8 = 0; _8 < l4.attributes.length; _8++) + y5[l4.attributes[_8].name] = l4.attributes[_8].value; + (v3 || a4) && (v3 && (a4 && v3.__html == a4.__html || v3.__html === l4.innerHTML) || (l4.innerHTML = v3 && v3.__html || "")); + } + if (C(l4, p4, y5, r4, c5), v3) + u3.__k = []; + else if (_8 = u3.props.children, w(l4, Array.isArray(_8) ? _8 : [_8], u3, i4, t4, r4 && d3 !== "foreignObject", o3, f3, o3 ? o3[0] : i4.__k && k(i4, 0), c5), o3 != null) + for (_8 = o3.length; _8--; ) + o3[_8] != null && h(o3[_8]); + c5 || ("value" in p4 && (_8 = p4.value) !== void 0 && (_8 !== y5.value || _8 !== l4.value || d3 === "progress" && !_8) && H(l4, "value", _8, y5.value, false), "checked" in p4 && (_8 = p4.checked) !== void 0 && _8 !== l4.checked && H(l4, "checked", _8, y5.checked, false)); + } + return l4; +} +function M(n3, u3, i4) { + try { + typeof n3 == "function" ? n3(u3) : n3.current = u3; + } catch (n4) { + l2.__e(n4, i4); + } +} +function N(n3, u3, i4) { + var t4, r4; + if (l2.unmount && l2.unmount(n3), (t4 = n3.ref) && (t4.current && t4.current !== n3.__e || M(t4, null, u3)), (t4 = n3.__c) != null) { + if (t4.componentWillUnmount) + try { + t4.componentWillUnmount(); + } catch (n4) { + l2.__e(n4, u3); + } + t4.base = t4.__P = null; + } + if (t4 = n3.__k) + for (r4 = 0; r4 < t4.length; r4++) + t4[r4] && N(t4[r4], u3, typeof n3.type != "function"); + i4 || n3.__e == null || h(n3.__e), n3.__e = n3.__d = void 0; +} +function O(n3, l4, u3) { + return this.constructor(n3, u3); +} +function S(u3, i4, t4) { + var r4, o3, f3; + l2.__ && l2.__(u3, i4), o3 = (r4 = typeof t4 == "function") ? null : t4 && t4.__k || i4.__k, f3 = [], j(i4, u3 = (!r4 && t4 || i4).__k = v(d, null, [u3]), o3 || e2, e2, i4.ownerSVGElement !== void 0, !r4 && t4 ? [t4] : o3 ? null : i4.firstChild ? n2.call(i4.childNodes) : null, f3, !r4 && t4 ? t4 : o3 ? o3.__e : i4.firstChild, r4), z(f3, u3); +} +function q(n3, l4) { + S(n3, l4, q); +} +function B(l4, u3, i4) { + var t4, r4, o3, f3 = a({}, l4.props); + for (o3 in u3) + o3 == "key" ? t4 = u3[o3] : o3 == "ref" ? r4 = u3[o3] : f3[o3] = u3[o3]; + return arguments.length > 2 && (f3.children = arguments.length > 3 ? n2.call(arguments, 2) : i4), y(l4.type, f3, t4 || l4.key, r4 || l4.ref, null); +} +function D(n3, l4) { + var u3 = { __c: l4 = "__cC" + f++, __: n3, Consumer: function(n4, l5) { + return n4.children(l5); + }, Provider: function(n4) { + var u4, i4; + return this.getChildContext || (u4 = [], (i4 = {})[l4] = this, this.getChildContext = function() { + return i4; + }, this.shouldComponentUpdate = function(n5) { + this.props.value !== n5.value && u4.some(m); + }, this.sub = function(n5) { + u4.push(n5); + var l5 = n5.componentWillUnmount; + n5.componentWillUnmount = function() { + u4.splice(u4.indexOf(n5), 1), l5 && l5.call(n5); + }; + }), n4.children; + } }; + return u3.Provider.__ = u3.Consumer.contextType = u3; +} +n2 = c2.slice, l2 = { __e: function(n3, l4) { + for (var u3, i4, t4; l4 = l4.__; ) + if ((u3 = l4.__c) && !u3.__) + try { + if ((i4 = u3.constructor) && i4.getDerivedStateFromError != null && (u3.setState(i4.getDerivedStateFromError(n3)), t4 = u3.__d), u3.componentDidCatch != null && (u3.componentDidCatch(n3), t4 = u3.__d), t4) + return u3.__E = u3; + } catch (l5) { + n3 = l5; + } + throw n3; +} }, u = 0, i2 = function(n3) { + return n3 != null && n3.constructor === void 0; +}, _.prototype.setState = function(n3, l4) { + var u3; + u3 = this.__s != null && this.__s !== this.state ? this.__s : this.__s = a({}, this.state), typeof n3 == "function" && (n3 = n3(a({}, u3), this.props)), n3 && a(u3, n3), n3 != null && this.__v && (l4 && this.__h.push(l4), m(this)); +}, _.prototype.forceUpdate = function(n3) { + this.__v && (this.__e = true, n3 && this.__h.push(n3), m(this)); +}, _.prototype.render = d, t2 = [], r2 = typeof Promise == "function" ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, g.__r = 0, f = 0; -// node_modules/react-dom/index.mjs -init_compat_module(); -init_compat_module(); +// node_modules/preact/hooks/dist/hooks.module.js +var t3; +var u2; +var r3; +var o2 = 0; +var i3 = []; +var c3 = l2.__b; +var f2 = l2.__r; +var e3 = l2.diffed; +var a2 = l2.__c; +var v2 = l2.unmount; +function m2(t4, r4) { + l2.__h && l2.__h(u2, t4, o2 || r4), o2 = 0; + var i4 = u2.__H || (u2.__H = { __: [], __h: [] }); + return t4 >= i4.__.length && i4.__.push({}), i4.__[t4]; +} +function l3(n3) { + return o2 = 1, p3(w2, n3); +} +function p3(n3, r4, o3) { + var i4 = m2(t3++, 2); + return i4.t = n3, i4.__c || (i4.__ = [o3 ? o3(r4) : w2(void 0, r4), function(n4) { + var t4 = i4.t(i4.__[0], n4); + i4.__[0] !== t4 && (i4.__ = [t4, i4.__[1]], i4.__c.setState({})); + }], i4.__c = u2), i4.__; +} +function y2(r4, o3) { + var i4 = m2(t3++, 3); + !l2.__s && k2(i4.__H, o3) && (i4.__ = r4, i4.__H = o3, u2.__H.__h.push(i4)); +} +function h2(r4, o3) { + var i4 = m2(t3++, 4); + !l2.__s && k2(i4.__H, o3) && (i4.__ = r4, i4.__H = o3, u2.__h.push(i4)); +} +function s3(n3) { + return o2 = 5, d2(function() { + return { current: n3 }; + }, []); +} +function _2(n3, t4, u3) { + o2 = 6, h2(function() { + typeof n3 == "function" ? n3(t4()) : n3 && (n3.current = t4()); + }, u3 == null ? u3 : u3.concat(n3)); +} +function d2(n3, u3) { + var r4 = m2(t3++, 7); + return k2(r4.__H, u3) && (r4.__ = n3(), r4.__H = u3, r4.__h = n3), r4.__; +} +function A2(n3, t4) { + return o2 = 8, d2(function() { + return n3; + }, t4); +} +function F(n3) { + var r4 = u2.context[n3.__c], o3 = m2(t3++, 9); + return o3.c = n3, r4 ? (o3.__ == null && (o3.__ = true, r4.sub(u2)), r4.props.value) : n3.__; +} +function T2(t4, u3) { + l2.useDebugValue && l2.useDebugValue(u3 ? u3(t4) : t4); +} +function x2() { + var t4; + for (i3.sort(function(n3, t5) { + return n3.__v.__b - t5.__v.__b; + }); t4 = i3.pop(); ) + if (t4.__P) + try { + t4.__H.__h.forEach(g2), t4.__H.__h.forEach(j2), t4.__H.__h = []; + } catch (u3) { + t4.__H.__h = [], l2.__e(u3, t4.__v); + } +} +l2.__b = function(n3) { + u2 = null, c3 && c3(n3); +}, l2.__r = function(n3) { + f2 && f2(n3), t3 = 0; + var r4 = (u2 = n3.__c).__H; + r4 && (r4.__h.forEach(g2), r4.__h.forEach(j2), r4.__h = []); +}, l2.diffed = function(t4) { + e3 && e3(t4); + var o3 = t4.__c; + o3 && o3.__H && o3.__H.__h.length && (i3.push(o3) !== 1 && r3 === l2.requestAnimationFrame || ((r3 = l2.requestAnimationFrame) || function(n3) { + var t5, u3 = function() { + clearTimeout(r4), b2 && cancelAnimationFrame(t5), setTimeout(n3); + }, r4 = setTimeout(u3, 100); + b2 && (t5 = requestAnimationFrame(u3)); + })(x2)), u2 = null; +}, l2.__c = function(t4, u3) { + u3.some(function(t5) { + try { + t5.__h.forEach(g2), t5.__h = t5.__h.filter(function(n3) { + return !n3.__ || j2(n3); + }); + } catch (r4) { + u3.some(function(n3) { + n3.__h && (n3.__h = []); + }), u3 = [], l2.__e(r4, t5.__v); + } + }), a2 && a2(t4, u3); +}, l2.unmount = function(t4) { + v2 && v2(t4); + var u3, r4 = t4.__c; + r4 && r4.__H && (r4.__H.__.forEach(function(n3) { + try { + g2(n3); + } catch (n4) { + u3 = n4; + } + }), u3 && l2.__e(u3, r4.__v)); +}; +var b2 = typeof requestAnimationFrame == "function"; +function g2(n3) { + var t4 = u2, r4 = n3.__c; + typeof r4 == "function" && (n3.__c = void 0, r4()), u2 = t4; +} +function j2(n3) { + var t4 = u2; + n3.__c = n3.__(), u2 = t4; +} +function k2(n3, t4) { + return !n3 || n3.length !== t4.length || t4.some(function(t5, u3) { + return t5 !== n3[u3]; + }); +} +function w2(n3, t4) { + return typeof t4 == "function" ? t4(n3) : t4; +} + +// node_modules/preact/compat/dist/compat.module.js +function S2(n3, t4) { + for (var e4 in t4) + n3[e4] = t4[e4]; + return n3; +} +function C2(n3, t4) { + for (var e4 in n3) + if (e4 !== "__source" && !(e4 in t4)) + return true; + for (var r4 in t4) + if (r4 !== "__source" && n3[r4] !== t4[r4]) + return true; + return false; +} +function E(n3) { + this.props = n3; +} +function g3(n3, t4) { + function e4(n4) { + var e6 = this.props.ref, r5 = e6 == n4.ref; + return !r5 && e6 && (e6.call ? e6(null) : e6.current = null), t4 ? !t4(this.props, n4) || !r5 : C2(this.props, n4); + } + function r4(t5) { + return this.shouldComponentUpdate = e4, v(n3, t5); + } + return r4.displayName = "Memo(" + (n3.displayName || n3.name) + ")", r4.prototype.isReactComponent = true, r4.__f = true, r4; +} +(E.prototype = new _()).isPureReactComponent = true, E.prototype.shouldComponentUpdate = function(n3, t4) { + return C2(this.props, n3) || C2(this.state, t4); +}; +var w3 = l2.__b; +l2.__b = function(n3) { + n3.type && n3.type.__f && n3.ref && (n3.props.ref = n3.ref, n3.ref = null), w3 && w3(n3); +}; +var R = typeof Symbol != "undefined" && Symbol.for && Symbol.for("react.forward_ref") || 3911; +function x3(n3) { + function t4(t5, e4) { + var r4 = S2({}, t5); + return delete r4.ref, n3(r4, (e4 = t5.ref || e4) && (typeof e4 != "object" || "current" in e4) ? e4 : null); + } + return t4.$$typeof = R, t4.render = t4, t4.prototype.isReactComponent = t4.__f = true, t4.displayName = "ForwardRef(" + (n3.displayName || n3.name) + ")", t4; +} +var N2 = function(n3, t4) { + return n3 == null ? null : A(A(n3).map(t4)); +}; +var k3 = { map: N2, forEach: N2, count: function(n3) { + return n3 ? A(n3).length : 0; +}, only: function(n3) { + var t4 = A(n3); + if (t4.length !== 1) + throw "Children.only"; + return t4[0]; +}, toArray: A }; +var A3 = l2.__e; +l2.__e = function(n3, t4, e4) { + if (n3.then) { + for (var r4, u3 = t4; u3 = u3.__; ) + if ((r4 = u3.__c) && r4.__c) + return t4.__e == null && (t4.__e = e4.__e, t4.__k = e4.__k), r4.__c(n3, t4); + } + A3(n3, t4, e4); +}; +var O2 = l2.unmount; +function L2() { + this.__u = 0, this.t = null, this.__b = null; +} +function U(n3) { + var t4 = n3.__.__c; + return t4 && t4.__e && t4.__e(n3); +} +function F2(n3) { + var t4, e4, r4; + function u3(u4) { + if (t4 || (t4 = n3()).then(function(n4) { + e4 = n4.default || n4; + }, function(n4) { + r4 = n4; + }), r4) + throw r4; + if (!e4) + throw t4; + return v(e4, u4); + } + return u3.displayName = "Lazy", u3.__f = true, u3; +} +function M2() { + this.u = null, this.o = null; +} +l2.unmount = function(n3) { + var t4 = n3.__c; + t4 && t4.__R && t4.__R(), t4 && n3.__h === true && (n3.type = null), O2 && O2(n3); +}, (L2.prototype = new _()).__c = function(n3, t4) { + var e4 = t4.__c, r4 = this; + r4.t == null && (r4.t = []), r4.t.push(e4); + var u3 = U(r4.__v), o3 = false, i4 = function() { + o3 || (o3 = true, e4.__R = null, u3 ? u3(l4) : l4()); + }; + e4.__R = i4; + var l4 = function() { + if (!--r4.__u) { + if (r4.state.__e) { + var n4 = r4.state.__e; + r4.__v.__k[0] = function n5(t6, e6, r5) { + return t6 && (t6.__v = null, t6.__k = t6.__k && t6.__k.map(function(t7) { + return n5(t7, e6, r5); + }), t6.__c && t6.__c.__P === e6 && (t6.__e && r5.insertBefore(t6.__e, t6.__d), t6.__c.__e = true, t6.__c.__P = r5)), t6; + }(n4, n4.__c.__P, n4.__c.__O); + } + var t5; + for (r4.setState({ __e: r4.__b = null }); t5 = r4.t.pop(); ) + t5.forceUpdate(); + } + }, c5 = t4.__h === true; + r4.__u++ || c5 || r4.setState({ __e: r4.__b = r4.__v.__k[0] }), n3.then(i4, i4); +}, L2.prototype.componentWillUnmount = function() { + this.t = []; +}, L2.prototype.render = function(n3, t4) { + if (this.__b) { + if (this.__v.__k) { + var e4 = document.createElement("div"), r4 = this.__v.__k[0].__c; + this.__v.__k[0] = function n4(t5, e6, r5) { + return t5 && (t5.__c && t5.__c.__H && (t5.__c.__H.__.forEach(function(n5) { + typeof n5.__c == "function" && n5.__c(); + }), t5.__c.__H = null), (t5 = S2({}, t5)).__c != null && (t5.__c.__P === r5 && (t5.__c.__P = e6), t5.__c = null), t5.__k = t5.__k && t5.__k.map(function(t6) { + return n4(t6, e6, r5); + })), t5; + }(this.__b, e4, r4.__O = r4.__P); + } + this.__b = null; + } + var u3 = t4.__e && v(d, null, n3.fallback); + return u3 && (u3.__h = null), [v(d, null, t4.__e ? null : n3.children), u3]; +}; +var T3 = function(n3, t4, e4) { + if (++e4[1] === e4[0] && n3.o.delete(t4), n3.props.revealOrder && (n3.props.revealOrder[0] !== "t" || !n3.o.size)) + for (e4 = n3.u; e4; ) { + for (; e4.length > 3; ) + e4.pop()(); + if (e4[1] < e4[0]) + break; + n3.u = e4 = e4[2]; + } +}; +function D2(n3) { + return this.getChildContext = function() { + return n3.context; + }, n3.children; +} +function I2(n3) { + var t4 = this, e4 = n3.i; + t4.componentWillUnmount = function() { + S(null, t4.l), t4.l = null, t4.i = null; + }, t4.i && t4.i !== e4 && t4.componentWillUnmount(), n3.__v ? (t4.l || (t4.i = e4, t4.l = { nodeType: 1, parentNode: e4, childNodes: [], appendChild: function(n4) { + this.childNodes.push(n4), t4.i.appendChild(n4); + }, insertBefore: function(n4, e6) { + this.childNodes.push(n4), t4.i.appendChild(n4); + }, removeChild: function(n4) { + this.childNodes.splice(this.childNodes.indexOf(n4) >>> 1, 1), t4.i.removeChild(n4); + } }), S(v(D2, { context: t4.context }, n3.__v), t4.l)) : t4.l && t4.componentWillUnmount(); +} +function W(n3, t4) { + return v(I2, { __v: n3, i: t4 }); +} +(M2.prototype = new _()).__e = function(n3) { + var t4 = this, e4 = U(t4.__v), r4 = t4.o.get(n3); + return r4[0]++, function(u3) { + var o3 = function() { + t4.props.revealOrder ? (r4.push(u3), T3(t4, n3, r4)) : u3(); + }; + e4 ? e4(o3) : o3(); + }; +}, M2.prototype.render = function(n3) { + this.u = null, this.o = new Map(); + var t4 = A(n3.children); + n3.revealOrder && n3.revealOrder[0] === "b" && t4.reverse(); + for (var e4 = t4.length; e4--; ) + this.o.set(t4[e4], this.u = [1, 0, this.u]); + return n3.children; +}, M2.prototype.componentDidUpdate = M2.prototype.componentDidMount = function() { + var n3 = this; + this.o.forEach(function(t4, e4) { + T3(n3, e4, t4); + }); +}; +var j3 = typeof Symbol != "undefined" && Symbol.for && Symbol.for("react.element") || 60103; +var P2 = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/; +var V = typeof document != "undefined"; +var z2 = function(n3) { + return (typeof Symbol != "undefined" && typeof Symbol() == "symbol" ? /fil|che|rad/i : /fil|che|ra/i).test(n3); +}; +function B2(n3, t4, e4) { + return t4.__k == null && (t4.textContent = ""), S(n3, t4), typeof e4 == "function" && e4(), n3 ? n3.__c : null; +} +function $2(n3, t4, e4) { + return q(n3, t4), typeof e4 == "function" && e4(), n3 ? n3.__c : null; +} +_.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(n3) { + Object.defineProperty(_.prototype, n3, { configurable: true, get: function() { + return this["UNSAFE_" + n3]; + }, set: function(t4) { + Object.defineProperty(this, n3, { configurable: true, writable: true, value: t4 }); + } }); +}); +var H2 = l2.event; +function Z() { +} +function Y() { + return this.cancelBubble; +} +function q2() { + return this.defaultPrevented; +} +l2.event = function(n3) { + return H2 && (n3 = H2(n3)), n3.persist = Z, n3.isPropagationStopped = Y, n3.isDefaultPrevented = q2, n3.nativeEvent = n3; +}; +var G; +var J = { configurable: true, get: function() { + return this.class; +} }; +var K = l2.vnode; +l2.vnode = function(n3) { + var t4 = n3.type, e4 = n3.props, r4 = e4; + if (typeof t4 == "string") { + var u3 = t4.indexOf("-") === -1; + for (var o3 in r4 = {}, e4) { + var i4 = e4[o3]; + V && o3 === "children" && t4 === "noscript" || o3 === "value" && "defaultValue" in e4 && i4 == null || (o3 === "defaultValue" && "value" in e4 && e4.value == null ? o3 = "value" : o3 === "download" && i4 === true ? i4 = "" : /ondoubleclick/i.test(o3) ? o3 = "ondblclick" : /^onchange(textarea|input)/i.test(o3 + t4) && !z2(e4.type) ? o3 = "oninput" : /^onfocus$/i.test(o3) ? o3 = "onfocusin" : /^onblur$/i.test(o3) ? o3 = "onfocusout" : /^on(Ani|Tra|Tou|BeforeInp)/.test(o3) ? o3 = o3.toLowerCase() : u3 && P2.test(o3) ? o3 = o3.replace(/[A-Z0-9]/, "-$&").toLowerCase() : i4 === null && (i4 = void 0), r4[o3] = i4); + } + t4 == "select" && r4.multiple && Array.isArray(r4.value) && (r4.value = A(e4.children).forEach(function(n4) { + n4.props.selected = r4.value.indexOf(n4.props.value) != -1; + })), t4 == "select" && r4.defaultValue != null && (r4.value = A(e4.children).forEach(function(n4) { + n4.props.selected = r4.multiple ? r4.defaultValue.indexOf(n4.props.value) != -1 : r4.defaultValue == n4.props.value; + })), n3.props = r4, e4.class != e4.className && (J.enumerable = "className" in e4, e4.className != null && (r4.class = e4.className), Object.defineProperty(r4, "className", J)); + } + n3.$$typeof = j3, K && K(n3); +}; +var Q = l2.__r; +l2.__r = function(n3) { + Q && Q(n3), G = n3.__c; +}; +var X = { ReactCurrentDispatcher: { current: { readContext: function(n3) { + return G.__n[n3.__c].props.value; +} } } }; +function tn(n3) { + return v.bind(null, n3); +} +function en(n3) { + return !!n3 && n3.$$typeof === j3; +} +function rn(n3) { + return en(n3) ? B.apply(null, arguments) : n3; +} +function un(n3) { + return !!n3.__k && (S(null, n3), true); +} +function on(n3) { + return n3 && (n3.base || n3.nodeType === 1 && n3) || null; +} +var ln = function(n3, t4) { + return n3(t4); +}; +var cn = function(n3, t4) { + return n3(t4); +}; +var compat_module_default = { useState: l3, useReducer: p3, useEffect: y2, useLayoutEffect: h2, useRef: s3, useImperativeHandle: _2, useMemo: d2, useCallback: A2, useContext: F, useDebugValue: T2, version: "17.0.2", Children: k3, render: B2, hydrate: $2, unmountComponentAtNode: un, createPortal: W, createElement: v, createContext: D, createFactory: tn, cloneElement: rn, createRef: p2, Fragment: d, isValidElement: en, findDOMNode: on, Component: _, PureComponent: E, memo: g3, forwardRef: x3, flushSync: cn, unstable_batchedUpdates: ln, StrictMode: d, Suspense: L2, SuspenseList: M2, lazy: F2, __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: X }; // src/main.tsx var import_obsidian5 = __toModule(require("obsidian")); +// node_modules/@ant-design/plots/es/index.js +var es_exports = {}; +__export(es_exports, { + Area: () => area_default2, + Bar: () => bar_default, + BidirectionalBar: () => bidirectionalBar_default, + Box: () => box_default, + Bullet: () => bullet_default, + Chord: () => chord_default, + CirclePacking: () => circlePacking_default, + Column: () => column_default, + DualAxes: () => dualAxes_default, + FUNNEL_CONVERSATION_FIELD: () => FUNNEL_CONVERSATION, + Facet: () => facet_default, + Funnel: () => funnel_default, + G2: () => esm_exports3, + Gauge: () => gauge_default, + Heatmap: () => heatmap_default2, + Histogram: () => histogram_default, + Line: () => line_default10, + Liquid: () => liquid_default, + Mix: () => mix_default, + MultiView: () => mix_default, + Pie: () => pie_default2, + Plot: () => Plot, + Progress: () => progress_default, + Radar: () => radar_default, + RadialBar: () => radialBar_default, + RingProgress: () => ringProgress_default, + Rose: () => rose_default, + Sankey: () => sankey_default, + Scatter: () => scatter_default, + Stock: () => stock_default, + Sunburst: () => sunburst_default, + TinyArea: () => tinyArea_default, + TinyColumn: () => tinyColumn_default, + TinyLine: () => tinyLine_default, + Treemap: () => treemap_default2, + Venn: () => venn_default, + Violin: () => violin_default2, + Waterfall: () => waterfall_default, + WordCloud: () => wordCloud_default, + adaptors: () => adaptors, + default: () => es_default, + flow: () => flow, + getCanvasPattern: () => getCanvasPattern, + measureTextWidth: () => measureTextWidth2 +}); + // node_modules/@antv/g2/esm/index.js var esm_exports3 = {}; __export(esm_exports3, { @@ -30324,1199 +37478,8 @@ var { __classPrivateFieldSet } = import_tslib.default; -// node_modules/@antv/util/esm/is-array-like.js -var isArrayLike = function(value2) { - return value2 !== null && typeof value2 !== "function" && isFinite(value2.length); -}; -var is_array_like_default = isArrayLike; - -// node_modules/@antv/util/esm/contains.js -var contains = function(arr, value2) { - if (!is_array_like_default(arr)) { - return false; - } - return arr.indexOf(value2) > -1; -}; -var contains_default = contains; - -// node_modules/@antv/util/esm/filter.js -var filter = function(arr, func) { - if (!is_array_like_default(arr)) { - return arr; - } - var result = []; - for (var index2 = 0; index2 < arr.length; index2++) { - var value2 = arr[index2]; - if (func(value2, index2)) { - result.push(value2); - } - } - return result; -}; -var filter_default = filter; - -// node_modules/@antv/util/esm/difference.js -var difference = function(arr, values2) { - if (values2 === void 0) { - values2 = []; - } - return filter_default(arr, function(value2) { - return !contains_default(values2, value2); - }); -}; -var difference_default = difference; - -// node_modules/@antv/util/esm/is-type.js -var toString2 = {}.toString; -var isType = function(value2, type2) { - return toString2.call(value2) === "[object " + type2 + "]"; -}; -var is_type_default = isType; - -// node_modules/@antv/util/esm/is-function.js -var is_function_default = function(value2) { - return is_type_default(value2, "Function"); -}; - -// node_modules/@antv/util/esm/is-nil.js -var isNil = function(value2) { - return value2 === null || value2 === void 0; -}; -var is_nil_default = isNil; - -// node_modules/@antv/util/esm/is-array.js -var is_array_default = function(value2) { - return Array.isArray ? Array.isArray(value2) : is_type_default(value2, "Array"); -}; - -// node_modules/@antv/util/esm/is-object.js -var is_object_default = function(value2) { - var type2 = typeof value2; - return value2 !== null && type2 === "object" || type2 === "function"; -}; - -// node_modules/@antv/util/esm/each.js -function each(elements, func) { - if (!elements) { - return; - } - var rst; - if (is_array_default(elements)) { - for (var i4 = 0, len5 = elements.length; i4 < len5; i4++) { - rst = func(elements[i4], i4); - if (rst === false) { - break; - } - } - } else if (is_object_default(elements)) { - for (var k4 in elements) { - if (elements.hasOwnProperty(k4)) { - rst = func(elements[k4], k4); - if (rst === false) { - break; - } - } - } - } -} -var each_default = each; - -// node_modules/@antv/util/esm/keys.js -var keys = Object.keys ? function(obj) { - return Object.keys(obj); -} : function(obj) { - var result = []; - each_default(obj, function(value2, key) { - if (!(is_function_default(obj) && key === "prototype")) { - result.push(key); - } - }); - return result; -}; -var keys_default = keys; - -// node_modules/@antv/util/esm/is-match.js -function isMatch(obj, attrs) { - var _keys = keys_default(attrs); - var length5 = _keys.length; - if (is_nil_default(obj)) - return !length5; - for (var i4 = 0; i4 < length5; i4 += 1) { - var key = _keys[i4]; - if (attrs[key] !== obj[key] || !(key in obj)) { - return false; - } - } - return true; -} -var is_match_default = isMatch; - -// node_modules/@antv/util/esm/is-object-like.js -var isObjectLike = function(value2) { - return typeof value2 === "object" && value2 !== null; -}; -var is_object_like_default = isObjectLike; - -// node_modules/@antv/util/esm/is-plain-object.js -var isPlainObject = function(value2) { - if (!is_object_like_default(value2) || !is_type_default(value2, "Object")) { - return false; - } - if (Object.getPrototypeOf(value2) === null) { - return true; - } - var proto = value2; - while (Object.getPrototypeOf(proto) !== null) { - proto = Object.getPrototypeOf(proto); - } - return Object.getPrototypeOf(value2) === proto; -}; -var is_plain_object_default = isPlainObject; - -// node_modules/@antv/util/esm/find.js -function find(arr, predicate) { - if (!is_array_default(arr)) - return null; - var _predicate; - if (is_function_default(predicate)) { - _predicate = predicate; - } - if (is_plain_object_default(predicate)) { - _predicate = function(a4) { - return is_match_default(a4, predicate); - }; - } - if (_predicate) { - for (var i4 = 0; i4 < arr.length; i4 += 1) { - if (_predicate(arr[i4])) { - return arr[i4]; - } - } - } - return null; -} -var find_default = find; - -// node_modules/@antv/util/esm/find-index.js -function findIndex(arr, predicate, fromIndex) { - if (fromIndex === void 0) { - fromIndex = 0; - } - for (var i4 = fromIndex; i4 < arr.length; i4++) { - if (predicate(arr[i4], i4)) { - return i4; - } - } - return -1; -} -var find_index_default = findIndex; - -// node_modules/@antv/util/esm/first-value.js -var firstValue = function(data3, name) { - var rst = null; - for (var i4 = 0; i4 < data3.length; i4++) { - var obj = data3[i4]; - var value2 = obj[name]; - if (!is_nil_default(value2)) { - if (is_array_default(value2)) { - rst = value2[0]; - } else { - rst = value2; - } - break; - } - } - return rst; -}; -var first_value_default = firstValue; - -// node_modules/@antv/util/esm/flatten.js -var flatten = function(arr) { - if (!is_array_default(arr)) { - return []; - } - var rst = []; - for (var i4 = 0; i4 < arr.length; i4++) { - rst = rst.concat(arr[i4]); - } - return rst; -}; -var flatten_default = flatten; - -// node_modules/@antv/util/esm/max.js -var max_default = function(arr) { - if (!is_array_default(arr)) { - return void 0; - } - return arr.reduce(function(prev, curr) { - return Math.max(prev, curr); - }, arr[0]); -}; - -// node_modules/@antv/util/esm/min.js -var min_default = function(arr) { - if (!is_array_default(arr)) { - return void 0; - } - return arr.reduce(function(prev, curr) { - return Math.min(prev, curr); - }, arr[0]); -}; - -// node_modules/@antv/util/esm/get-range.js -var getRange = function(values2) { - var filterValues = values2.filter(function(v3) { - return !isNaN(v3); - }); - if (!filterValues.length) { - return { - min: 0, - max: 0 - }; - } - if (is_array_default(values2[0])) { - var tmp = []; - for (var i4 = 0; i4 < values2.length; i4++) { - tmp = tmp.concat(values2[i4]); - } - filterValues = tmp; - } - var max8 = max_default(filterValues); - var min7 = min_default(filterValues); - return { - min: min7, - max: max8 - }; -}; -var get_range_default = getRange; - -// node_modules/@antv/util/esm/pull.js -var arrPrototype = Array.prototype; -var splice = arrPrototype.splice; -var indexOf = arrPrototype.indexOf; - -// node_modules/@antv/util/esm/pull-at.js -var splice2 = Array.prototype.splice; -var pullAt = function pullAt2(arr, indexes) { - if (!is_array_like_default(arr)) { - return []; - } - var length5 = arr ? indexes.length : 0; - var last2 = length5 - 1; - while (length5--) { - var previous = void 0; - var index2 = indexes[length5]; - if (length5 === last2 || index2 !== previous) { - previous = index2; - splice2.call(arr, index2, 1); - } - } - return arr; -}; -var pull_at_default = pullAt; - -// node_modules/@antv/util/esm/reduce.js -var reduce = function(arr, fn2, init) { - if (!is_array_default(arr) && !is_plain_object_default(arr)) { - return arr; - } - var result = init; - each_default(arr, function(data3, i4) { - result = fn2(result, data3, i4); - }); - return result; -}; -var reduce_default = reduce; - -// node_modules/@antv/util/esm/remove.js -var remove = function(arr, predicate) { - var result = []; - if (!is_array_like_default(arr)) { - return result; - } - var i4 = -1; - var indexes = []; - var length5 = arr.length; - while (++i4 < length5) { - var value2 = arr[i4]; - if (predicate(value2, i4, arr)) { - result.push(value2); - indexes.push(i4); - } - } - pull_at_default(arr, indexes); - return result; -}; -var remove_default = remove; - -// node_modules/@antv/util/esm/is-string.js -var is_string_default = function(str8) { - return is_type_default(str8, "String"); -}; - -// node_modules/@antv/util/esm/sort-by.js -function sortBy(arr, key) { - var comparer; - if (is_function_default(key)) { - comparer = function(a4, b10) { - return key(a4) - key(b10); - }; - } else { - var keys_1 = []; - if (is_string_default(key)) { - keys_1.push(key); - } else if (is_array_default(key)) { - keys_1 = key; - } - comparer = function(a4, b10) { - for (var i4 = 0; i4 < keys_1.length; i4 += 1) { - var prop = keys_1[i4]; - if (a4[prop] > b10[prop]) { - return 1; - } - if (a4[prop] < b10[prop]) { - return -1; - } - } - return 0; - }; - } - arr.sort(comparer); - return arr; -} -var sort_by_default = sortBy; - -// node_modules/@antv/util/esm/uniq.js -function uniq(arr, cache3) { - if (cache3 === void 0) { - cache3 = new Map(); - } - var r4 = []; - if (Array.isArray(arr)) { - for (var i4 = 0, len5 = arr.length; i4 < len5; i4++) { - var item = arr[i4]; - if (!cache3.has(item)) { - r4.push(item); - cache3.set(item, true); - } - } - } - return r4; -} - -// node_modules/@antv/util/esm/values-of-key.js -var values_of_key_default = function(data3, name) { - var rst = []; - var tmpMap = {}; - for (var i4 = 0; i4 < data3.length; i4++) { - var obj = data3[i4]; - var value2 = obj[name]; - if (!is_nil_default(value2)) { - if (!is_array_default(value2)) { - value2 = [value2]; - } - for (var j4 = 0; j4 < value2.length; j4++) { - var val = value2[j4]; - if (!tmpMap[val]) { - rst.push(val); - tmpMap[val] = true; - } - } - } - } - return rst; -}; - -// node_modules/@antv/util/esm/head.js -function head(o3) { - if (is_array_like_default(o3)) { - return o3[0]; - } - return void 0; -} - -// node_modules/@antv/util/esm/last.js -function last(o3) { - if (is_array_like_default(o3)) { - var arr = o3; - return arr[arr.length - 1]; - } - return void 0; -} - -// node_modules/@antv/util/esm/every.js -var every = function(arr, func) { - for (var i4 = 0; i4 < arr.length; i4++) { - if (!func(arr[i4], i4)) - return false; - } - return true; -}; -var every_default = every; - -// node_modules/@antv/util/esm/some.js -var some = function(arr, func) { - for (var i4 = 0; i4 < arr.length; i4++) { - if (func(arr[i4], i4)) - return true; - } - return false; -}; -var some_default = some; - -// node_modules/@antv/util/esm/group-by.js -var hasOwnProperty = Object.prototype.hasOwnProperty; -function groupBy(data3, condition) { - if (!condition || !is_array_default(data3)) { - return {}; - } - var result = {}; - var predicate = is_function_default(condition) ? condition : function(item2) { - return item2[condition]; - }; - var key; - for (var i4 = 0; i4 < data3.length; i4++) { - var item = data3[i4]; - key = predicate(item); - if (hasOwnProperty.call(result, key)) { - result[key].push(item); - } else { - result[key] = [item]; - } - } - return result; -} -var group_by_default = groupBy; - -// node_modules/@antv/util/esm/group-to-map.js -function groupToMap(data3, condition) { - if (!condition) { - return { - 0: data3 - }; - } - if (!is_function_default(condition)) { - var paramscondition_1 = is_array_default(condition) ? condition : condition.replace(/\s+/g, "").split("*"); - condition = function(row) { - var unique = "_"; - for (var i4 = 0, l4 = paramscondition_1.length; i4 < l4; i4++) { - unique += row[paramscondition_1[i4]] && row[paramscondition_1[i4]].toString(); - } - return unique; - }; - } - return group_by_default(data3, condition); -} - -// node_modules/@antv/util/esm/group.js -var group_default = function(data3, condition) { - if (!condition) { - return [data3]; - } - var groups = groupToMap(data3, condition); - var array = []; - for (var i4 in groups) { - array.push(groups[i4]); - } - return array; -}; - -// node_modules/@antv/util/esm/wrap-behavior.js -function wrapBehavior(obj, action) { - if (obj["_wrap_" + action]) { - return obj["_wrap_" + action]; - } - var method = function(e4) { - obj[action](e4); - }; - obj["_wrap_" + action] = method; - return method; -} -var wrap_behavior_default = wrapBehavior; - -// node_modules/@antv/util/esm/clamp.js -var clamp = function(a4, min7, max8) { - if (a4 < min7) { - return min7; - } else if (a4 > max8) { - return max8; - } - return a4; -}; -var clamp_default = clamp; - -// node_modules/@antv/util/esm/fixed-base.js -var fixedBase = function(v3, base) { - var str8 = base.toString(); - var index2 = str8.indexOf("."); - if (index2 === -1) { - return Math.round(v3); - } - var length5 = str8.substr(index2 + 1).length; - if (length5 > 20) { - length5 = 20; - } - return parseFloat(v3.toFixed(length5)); -}; -var fixed_base_default = fixedBase; - -// node_modules/@antv/util/esm/is-number.js -var isNumber = function(value2) { - return is_type_default(value2, "Number"); -}; -var is_number_default = isNumber; - -// node_modules/@antv/util/esm/is-integer.js -var isInteger2 = Number.isInteger ? Number.isInteger : function(num) { - return is_number_default(num) && num % 1 === 0; -}; - -// node_modules/@antv/util/esm/is-number-equal.js -var PRECISION = 1e-5; -function isNumberEqual(a4, b10, precision) { - if (precision === void 0) { - precision = PRECISION; - } - return Math.abs(a4 - b10) < precision; -} - -// node_modules/@antv/util/esm/max-by.js -var max_by_default = function(arr, fn2) { - if (!is_array_default(arr)) { - return void 0; - } - var maxItem; - var max8 = -Infinity; - for (var i4 = 0; i4 < arr.length; i4++) { - var item = arr[i4]; - var v3 = is_function_default(fn2) ? fn2(item) : item[fn2]; - if (v3 > max8) { - maxItem = item; - max8 = v3; - } - } - return maxItem; -}; - -// node_modules/@antv/util/esm/min-by.js -var min_by_default = function(arr, fn2) { - if (!is_array_default(arr)) { - return void 0; - } - var minItem; - var min7 = Infinity; - for (var i4 = 0; i4 < arr.length; i4++) { - var item = arr[i4]; - var v3 = is_function_default(fn2) ? fn2(item) : item[fn2]; - if (v3 < min7) { - minItem = item; - min7 = v3; - } - } - return minItem; -}; - -// node_modules/@antv/util/esm/mod.js -var mod = function(n3, m4) { - return (n3 % m4 + m4) % m4; -}; -var mod_default = mod; - -// node_modules/@antv/util/esm/to-degree.js -var DEGREE = 180 / Math.PI; - -// node_modules/@antv/util/esm/to-radian.js -var RADIAN = Math.PI / 180; -var toRadian = function(degree4) { - return RADIAN * degree4; -}; -var to_radian_default = toRadian; - -// node_modules/@antv/util/esm/for-in.js -var for_in_default = each_default; - -// node_modules/@antv/util/esm/has.js -var has_default = function(obj, key) { - return obj.hasOwnProperty(key); -}; - -// node_modules/@antv/util/esm/has-key.js -var has_key_default = has_default; - -// node_modules/@antv/util/esm/values.js -var values = Object.values ? function(obj) { - return Object.values(obj); -} : function(obj) { - var result = []; - each_default(obj, function(value2, key) { - if (!(is_function_default(obj) && key === "prototype")) { - result.push(value2); - } - }); - return result; -}; -var values_default = values; - -// node_modules/@antv/util/esm/to-string.js -var to_string_default = function(value2) { - if (is_nil_default(value2)) - return ""; - return value2.toString(); -}; - -// node_modules/@antv/util/esm/lower-case.js -var lowerCase = function(str8) { - return to_string_default(str8).toLowerCase(); -}; -var lower_case_default = lowerCase; - -// node_modules/@antv/util/esm/substitute.js -function substitute(str8, o3) { - if (!str8 || !o3) { - return str8; - } - return str8.replace(/\\?\{([^{}]+)\}/g, function(match, name) { - if (match.charAt(0) === "\\") { - return match.slice(1); - } - return o3[name] === void 0 ? "" : o3[name]; - }); -} -var substitute_default = substitute; - -// node_modules/@antv/util/esm/upper-first.js -var upperFirst = function(value2) { - var str8 = to_string_default(value2); - return str8.charAt(0).toUpperCase() + str8.substring(1); -}; -var upper_first_default = upperFirst; - -// node_modules/@antv/util/esm/get-type.js -var toString3 = {}.toString; -var getType = function(value2) { - return toString3.call(value2).replace(/^\[object /, "").replace(/]$/, ""); -}; -var get_type_default = getType; - -// node_modules/@antv/util/esm/is-boolean.js -var isBoolean2 = function(value2) { - return is_type_default(value2, "Boolean"); -}; -var is_boolean_default = isBoolean2; - -// node_modules/@antv/util/esm/is-date.js -var isDate = function(value2) { - return is_type_default(value2, "Date"); -}; -var is_date_default = isDate; - -// node_modules/@antv/util/esm/is-null.js -var isNull2 = function(value2) { - return value2 === null; -}; -var is_null_default = isNull2; - -// node_modules/@antv/util/esm/is-prototype.js -var objectProto = Object.prototype; -var isPrototype = function(value2) { - var Ctor = value2 && value2.constructor; - var proto = typeof Ctor === "function" && Ctor.prototype || objectProto; - return value2 === proto; -}; -var is_prototype_default = isPrototype; - -// node_modules/@antv/util/esm/is-undefined.js -var isUndefined = function(value2) { - return value2 === void 0; -}; -var is_undefined_default = isUndefined; - -// node_modules/@antv/util/esm/is-element.js -var isElement = function(o3) { - return o3 instanceof Element || o3 instanceof HTMLDocument; -}; -var is_element_default = isElement; - -// node_modules/@antv/util/esm/request-animation-frame.js -function requestAnimationFrame2(fn2) { - var method = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function(f3) { - return setTimeout(f3, 16); - }; - return method(fn2); -} - -// node_modules/@antv/util/esm/clear-animation-frame.js -function cancelAnimationFrame2(handler) { - var method = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.msCancelAnimationFrame || clearTimeout; - method(handler); -} - -// node_modules/@antv/util/esm/mix.js -function _mix(dist4, obj) { - for (var key in obj) { - if (obj.hasOwnProperty(key) && key !== "constructor" && obj[key] !== void 0) { - dist4[key] = obj[key]; - } - } -} -function mix(dist4, src1, src2, src3) { - if (src1) - _mix(dist4, src1); - if (src2) - _mix(dist4, src2); - if (src3) - _mix(dist4, src3); - return dist4; -} - -// node_modules/@antv/util/esm/clone.js -var clone = function(obj) { - if (typeof obj !== "object" || obj === null) { - return obj; - } - var rst; - if (is_array_default(obj)) { - rst = []; - for (var i4 = 0, l4 = obj.length; i4 < l4; i4++) { - if (typeof obj[i4] === "object" && obj[i4] != null) { - rst[i4] = clone(obj[i4]); - } else { - rst[i4] = obj[i4]; - } - } - } else { - rst = {}; - for (var k4 in obj) { - if (typeof obj[k4] === "object" && obj[k4] != null) { - rst[k4] = clone(obj[k4]); - } else { - rst[k4] = obj[k4]; - } - } - } - return rst; -}; -var clone_default = clone; - -// node_modules/@antv/util/esm/debounce.js -function debounce(func, wait, immediate) { - var timeout2; - return function() { - var context = this, args = arguments; - var later = function() { - timeout2 = null; - if (!immediate) { - func.apply(context, args); - } - }; - var callNow = immediate && !timeout2; - clearTimeout(timeout2); - timeout2 = setTimeout(later, wait); - if (callNow) { - func.apply(context, args); - } - }; -} -var debounce_default = debounce; - -// node_modules/@antv/util/esm/memoize.js -var memoize_default = function(f3, resolver) { - if (!is_function_default(f3)) { - throw new TypeError("Expected a function"); - } - var memoized = function() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var key = resolver ? resolver.apply(this, args) : args[0]; - var cache3 = memoized.cache; - if (cache3.has(key)) { - return cache3.get(key); - } - var result = f3.apply(this, args); - cache3.set(key, result); - return result; - }; - memoized.cache = new Map(); - return memoized; -}; - -// node_modules/@antv/util/esm/deep-mix.js -var MAX_MIX_LEVEL = 5; -function _deepMix(dist4, src, level, maxLevel) { - level = level || 0; - maxLevel = maxLevel || MAX_MIX_LEVEL; - for (var key in src) { - if (src.hasOwnProperty(key)) { - var value2 = src[key]; - if (value2 !== null && is_plain_object_default(value2)) { - if (!is_plain_object_default(dist4[key])) { - dist4[key] = {}; - } - if (level < maxLevel) { - _deepMix(dist4[key], value2, level + 1, maxLevel); - } else { - dist4[key] = src[key]; - } - } else if (is_array_default(value2)) { - dist4[key] = []; - dist4[key] = dist4[key].concat(value2); - } else if (value2 !== void 0) { - dist4[key] = value2; - } - } - } -} -var deepMix = function(rst) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - for (var i4 = 0; i4 < args.length; i4 += 1) { - _deepMix(rst, args[i4]); - } - return rst; -}; -var deep_mix_default = deepMix; - -// node_modules/@antv/util/esm/index-of.js -var indexOf2 = function(arr, obj) { - if (!is_array_like_default(arr)) { - return -1; - } - var m4 = Array.prototype.indexOf; - if (m4) { - return m4.call(arr, obj); - } - var index2 = -1; - for (var i4 = 0; i4 < arr.length; i4++) { - if (arr[i4] === obj) { - index2 = i4; - break; - } - } - return index2; -}; -var index_of_default = indexOf2; - -// node_modules/@antv/util/esm/is-empty.js -var hasOwnProperty2 = Object.prototype.hasOwnProperty; -function isEmpty(value2) { - if (is_nil_default(value2)) { - return true; - } - if (is_array_like_default(value2)) { - return !value2.length; - } - var type2 = get_type_default(value2); - if (type2 === "Map" || type2 === "Set") { - return !value2.size; - } - if (is_prototype_default(value2)) { - return !Object.keys(value2).length; - } - for (var key in value2) { - if (hasOwnProperty2.call(value2, key)) { - return false; - } - } - return true; -} -var is_empty_default = isEmpty; - -// node_modules/@antv/util/esm/is-equal.js -var isEqual = function(value2, other2) { - if (value2 === other2) { - return true; - } - if (!value2 || !other2) { - return false; - } - if (is_string_default(value2) || is_string_default(other2)) { - return false; - } - if (is_array_like_default(value2) || is_array_like_default(other2)) { - if (value2.length !== other2.length) { - return false; - } - var rst = true; - for (var i4 = 0; i4 < value2.length; i4++) { - rst = isEqual(value2[i4], other2[i4]); - if (!rst) { - break; - } - } - return rst; - } - if (is_object_like_default(value2) || is_object_like_default(other2)) { - var valueKeys = Object.keys(value2); - var otherKeys = Object.keys(other2); - if (valueKeys.length !== otherKeys.length) { - return false; - } - var rst = true; - for (var i4 = 0; i4 < valueKeys.length; i4++) { - rst = isEqual(value2[valueKeys[i4]], other2[valueKeys[i4]]); - if (!rst) { - break; - } - } - return rst; - } - return false; -}; -var is_equal_default = isEqual; - -// node_modules/@antv/util/esm/map.js -var map2 = function(arr, func) { - if (!is_array_like_default(arr)) { - return arr; - } - var result = []; - for (var index2 = 0; index2 < arr.length; index2++) { - var value2 = arr[index2]; - result.push(func(value2, index2)); - } - return result; -}; -var map_default = map2; - -// node_modules/@antv/util/esm/map-values.js -var identity = function(v3) { - return v3; -}; -var map_values_default = function(object, func) { - if (func === void 0) { - func = identity; - } - var r4 = {}; - if (is_object_default(object) && !is_nil_default(object)) { - Object.keys(object).forEach(function(key) { - r4[key] = func(object[key], key); - }); - } - return r4; -}; - -// node_modules/@antv/util/esm/get.js -var get_default = function(obj, key, defaultValue) { - var p4 = 0; - var keyArr = is_string_default(key) ? key.split(".") : key; - while (obj && p4 < keyArr.length) { - obj = obj[keyArr[p4++]]; - } - return obj === void 0 || p4 < keyArr.length ? defaultValue : obj; -}; - -// node_modules/@antv/util/esm/set.js -var set_default = function(obj, path, value2) { - var o3 = obj; - var keyArr = is_string_default(path) ? path.split(".") : path; - keyArr.forEach(function(key, idx) { - if (idx < keyArr.length - 1) { - if (!is_object_default(o3[key])) { - o3[key] = is_number_default(keyArr[idx + 1]) ? [] : {}; - } - o3 = o3[key]; - } else { - o3[key] = value2; - } - }); - return obj; -}; - -// node_modules/@antv/util/esm/pick.js -var hasOwnProperty3 = Object.prototype.hasOwnProperty; -var pick_default = function(object, keys2) { - if (object === null || !is_plain_object_default(object)) { - return {}; - } - var result = {}; - each_default(keys2, function(key) { - if (hasOwnProperty3.call(object, key)) { - result[key] = object[key]; - } - }); - return result; -}; - -// node_modules/@antv/util/esm/omit.js -var omit_default = function(obj, keys2) { - return reduce_default(obj, function(r4, curr, key) { - if (!keys2.includes(key)) { - r4[key] = curr; - } - return r4; - }, {}); -}; - -// node_modules/@antv/util/esm/throttle.js -var throttle_default = function(func, wait, options) { - var timeout2, context, args, result; - var previous = 0; - if (!options) - options = {}; - var later = function() { - previous = options.leading === false ? 0 : Date.now(); - timeout2 = null; - result = func.apply(context, args); - if (!timeout2) - context = args = null; - }; - var throttled = function() { - var now2 = Date.now(); - if (!previous && options.leading === false) - previous = now2; - var remaining = wait - (now2 - previous); - context = this; - args = arguments; - if (remaining <= 0 || remaining > wait) { - if (timeout2) { - clearTimeout(timeout2); - timeout2 = null; - } - previous = now2; - result = func.apply(context, args); - if (!timeout2) - context = args = null; - } else if (!timeout2 && options.trailing !== false) { - timeout2 = setTimeout(later, remaining); - } - return result; - }; - throttled.cancel = function() { - clearTimeout(timeout2); - previous = 0; - timeout2 = context = args = null; - }; - return throttled; -}; - -// node_modules/@antv/util/esm/to-array.js -var to_array_default = function(value2) { - return is_array_like_default(value2) ? Array.prototype.slice.call(value2) : []; -}; - -// node_modules/@antv/util/esm/unique-id.js -var map3 = {}; -var unique_id_default = function(prefix2) { - prefix2 = prefix2 || "g"; - if (!map3[prefix2]) { - map3[prefix2] = 1; - } else { - map3[prefix2] += 1; - } - return prefix2 + map3[prefix2]; -}; - -// node_modules/@antv/util/esm/noop.js -var noop_default = function() { -}; - -// node_modules/@antv/util/esm/size.js -function size(o3) { - if (is_nil_default(o3)) { - return 0; - } - if (is_array_like_default(o3)) { - return o3.length; - } - return Object.keys(o3).length; -} - -// node_modules/@antv/util/esm/measure-text-width.js -var ctx; -var measure_text_width_default = memoize_default(function(text, font) { - if (font === void 0) { - font = {}; - } - var fontSize = font.fontSize, fontFamily = font.fontFamily, fontWeight = font.fontWeight, fontStyle = font.fontStyle, fontVariant = font.fontVariant; - if (!ctx) { - ctx = document.createElement("canvas").getContext("2d"); - } - ctx.font = [fontStyle, fontVariant, fontWeight, fontSize + "px", fontFamily].join(" "); - return ctx.measureText(is_string_default(text) ? text : "").width; -}, function(text, font) { - if (font === void 0) { - font = {}; - } - return __spreadArrays([text], values_default(font)).join(""); -}); - -// node_modules/@antv/util/esm/get-ellipsis-text.js -var get_ellipsis_text_default = function(text, maxWidth, font, str8) { - if (str8 === void 0) { - str8 = "..."; - } - var STEP = 16; - var PLACEHOLDER_WIDTH = measure_text_width_default(str8, font); - var leftText = !is_string_default(text) ? to_string_default(text) : text; - var leftWidth = maxWidth; - var r4 = []; - var currentText; - var currentWidth; - if (measure_text_width_default(text, font) <= maxWidth) { - return text; - } - while (true) { - currentText = leftText.substr(0, STEP); - currentWidth = measure_text_width_default(currentText, font); - if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) { - if (currentWidth > leftWidth) { - break; - } - } - r4.push(currentText); - leftWidth -= currentWidth; - leftText = leftText.substr(STEP); - if (!leftText) { - return r4.join(""); - } - } - while (true) { - currentText = leftText.substr(0, 1); - currentWidth = measure_text_width_default(currentText, font); - if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) { - break; - } - r4.push(currentText); - leftWidth -= currentWidth; - leftText = leftText.substr(1); - if (!leftText) { - return r4.join(""); - } - } - return "" + r4.join("") + str8; -}; - -// node_modules/@antv/util/esm/cache.js -var default_1 = function() { - function default_12() { - this.map = {}; - } - default_12.prototype.has = function(key) { - return this.map[key] !== void 0; - }; - default_12.prototype.get = function(key, def) { - var v3 = this.map[key]; - return v3 === void 0 ? def : v3; - }; - default_12.prototype.set = function(key, value2) { - this.map[key] = value2; - }; - default_12.prototype.clear = function() { - this.map = {}; - }; - default_12.prototype.delete = function(key) { - delete this.map[key]; - }; - default_12.prototype.size = function() { - return Object.keys(this.map).length; - }; - return default_12; -}(); -var cache_default = default_1; +// node_modules/@antv/g2/esm/chart/chart.js +var import_util129 = __toModule(require_lib()); // node_modules/@antv/g2/esm/constant.js var LAYER; @@ -31752,20 +37715,20 @@ function getElementSize(ele) { height: (ele.clientHeight || parseInt(style.height, 10)) - parseInt(style.paddingTop, 10) - parseInt(style.paddingBottom, 10) }; } -function isNumber2(v3) { +function isNumber(v3) { return typeof v3 === "number" && !isNaN(v3); } function getChartSize(ele, autoFit, width2, height) { var w4 = width2; var h3 = height; if (autoFit) { - var size2 = getElementSize(ele); - w4 = size2.width ? size2.width : w4; - h3 = size2.height ? size2.height : h3; + var size14 = getElementSize(ele); + w4 = size14.width ? size14.width : w4; + h3 = size14.height ? size14.height : h3; } return { - width: Math.max(isNumber2(w4) ? w4 : MIN_CHART_WIDTH, MIN_CHART_WIDTH), - height: Math.max(isNumber2(h3) ? h3 : MIN_CHART_HEIGHT, MIN_CHART_HEIGHT) + width: Math.max(isNumber(w4) ? w4 : MIN_CHART_WIDTH, MIN_CHART_WIDTH), + height: Math.max(isNumber(h3) ? h3 : MIN_CHART_HEIGHT, MIN_CHART_HEIGHT) }; } function removeDom(dom) { @@ -31775,6 +37738,9 @@ function removeDom(dom) { } } +// node_modules/@antv/g2/esm/chart/view.js +var import_util127 = __toModule(require_lib()); + // node_modules/@antv/event-emitter/esm/index.js var WILDCARD = "*"; var EventEmitter = function() { @@ -31890,6 +37856,18 @@ var Base = function(_super) { }(esm_default); var base_default = Base; +// node_modules/@antv/g2/esm/facet/index.js +var import_util109 = __toModule(require_lib()); + +// node_modules/@antv/g2/esm/facet/facet.js +var import_util108 = __toModule(require_lib()); + +// node_modules/@antv/g2/esm/util/axis.js +var import_util107 = __toModule(require_lib()); + +// node_modules/@antv/g2/esm/util/scale.js +var import_util106 = __toModule(require_lib()); + // node_modules/@antv/g-base/esm/util/path.js var path_exports = {}; __export(path_exports, { @@ -31904,6 +37882,7 @@ __export(path_exports, { pathToCurve: () => pathToCurve, rectPath: () => rectPath }); +var import_util = __toModule(require_lib()); var SPACES = " \n\v\f\r \xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029"; var PATH_COMMAND = new RegExp("([a-z])[" + SPACES + ",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[" + SPACES + "]*,?[" + SPACES + "]*)+)", "ig"); var PATH_VALUES = new RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[" + SPACES + "]*,?[" + SPACES + "]*", "ig"); @@ -31911,7 +37890,7 @@ var parsePathString = function(pathString) { if (!pathString) { return null; } - if (is_array_default(pathString)) { + if ((0, import_util.isArray)(pathString)) { return pathString; } var paramCounts = { @@ -32603,7 +38582,7 @@ var isBBoxIntersect = function(bbox1, bbox2) { return isPointInsideBBox(bbox2, bbox1.x, bbox1.y) || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y) || isPointInsideBBox(bbox2, bbox1.x, bbox1.y2) || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2) || isPointInsideBBox(bbox1, bbox2.x, bbox2.y) || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y) || isPointInsideBBox(bbox1, bbox2.x, bbox2.y2) || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2) || (bbox1.x < bbox2.x2 && bbox1.x > bbox2.x || bbox2.x < bbox1.x2 && bbox2.x > bbox1.x) && (bbox1.y < bbox2.y2 && bbox1.y > bbox2.y || bbox2.y < bbox1.y2 && bbox2.y > bbox1.y); }; var bezierBBox = function(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) { - if (!is_array_default(p1x)) { + if (!(0, import_util.isArray)(p1x)) { p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y]; } var bbox = curveDim.apply(null, p1x); @@ -32899,12 +38878,12 @@ var fillPath = function(source, target) { } return filled; }; -var isEqual2 = function(obj1, obj2) { +var isEqual = function(obj1, obj2) { if (obj1.length !== obj2.length) { return false; } var result = true; - each_default(obj1, function(item, i4) { + (0, import_util.each)(obj1, function(item, i4) { if (item !== obj2[i4]) { result = false; return false; @@ -32914,18 +38893,18 @@ var isEqual2 = function(obj1, obj2) { }; function getMinDiff(del, add8, modify) { var type2 = null; - var min7 = modify; - if (add8 < min7) { - min7 = add8; + var min13 = modify; + if (add8 < min13) { + min13 = add8; type2 = "add"; } - if (del < min7) { - min7 = del; + if (del < min13) { + min13 = del; type2 = "del"; } return { type: type2, - min: min7 + min: min13 }; } var levenshteinDistance = function(source, target) { @@ -32949,7 +38928,7 @@ var levenshteinDistance = function(source, target) { sourceSegment = source[i4 - 1]; for (var j4 = 1; j4 <= targetLen; j4++) { targetSegment = target[j4 - 1]; - if (isEqual2(sourceSegment, targetSegment)) { + if (isEqual(sourceSegment, targetSegment)) { temp = 0; } else { temp = 1; @@ -32971,11 +38950,11 @@ var fillPathByDiff = function(source, target) { var minPos = 1; if (diffMatrix[sourceLen][targetLen].min !== sourceLen) { for (var i4 = 1; i4 <= sourceLen; i4++) { - var min7 = diffMatrix[i4][i4].min; + var min13 = diffMatrix[i4][i4].min; minPos = i4; for (var j4 = index2; j4 <= targetLen; j4++) { - if (diffMatrix[i4][j4].min < min7) { - min7 = diffMatrix[i4][j4].min; + if (diffMatrix[i4][j4].min < min13) { + min13 = diffMatrix[i4][j4].min; minPos = j4; } } @@ -33175,6 +39154,7 @@ var GraphEvent = function() { var graph_event_default = GraphEvent; // node_modules/@antv/g-base/esm/util/util.js +var import_util2 = __toModule(require_lib()); function removeFromArray(arr, obj) { var index2 = arr.indexOf(obj); if (index2 !== -1) { @@ -33208,7 +39188,7 @@ var Base2 = function(_super) { var _this = _super.call(this) || this; _this.destroyed = false; var defaultCfg2 = _this.getDefaultCfg(); - _this.cfg = mix(defaultCfg2, cfg); + _this.cfg = (0, import_util2.mix)(defaultCfg2, cfg); return _this; } Base4.prototype.getDefaultCfg = function() { @@ -33430,6 +39410,12 @@ function createVersionParts(count2) { return output; } +// node_modules/@antv/g-base/esm/abstract/container.js +var import_util6 = __toModule(require_lib()); + +// node_modules/@antv/g-base/esm/abstract/element.js +var import_util4 = __toModule(require_lib()); + // node_modules/gl-matrix/esm/common.js var EPSILON = 1e-6; var ARRAY_TYPE = typeof Float32Array !== "undefined" ? Float32Array : Array; @@ -33449,7 +39435,7 @@ var mat3_exports = {}; __export(mat3_exports, { add: () => add, adjoint: () => adjoint, - clone: () => clone2, + clone: () => clone, copy: () => copy, create: () => create, determinant: () => determinant, @@ -33463,7 +39449,7 @@ __export(mat3_exports, { fromScaling: () => fromScaling, fromTranslation: () => fromTranslation, fromValues: () => fromValues, - identity: () => identity2, + identity: () => identity, invert: () => invert, mul: () => mul, multiply: () => multiply, @@ -33507,7 +39493,7 @@ function fromMat4(out, a4) { out[8] = a4[10]; return out; } -function clone2(a4) { +function clone(a4) { var out = new ARRAY_TYPE(9); out[0] = a4[0]; out[1] = a4[1]; @@ -33557,7 +39543,7 @@ function set2(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) { out[8] = m22; return out; } -function identity2(out) { +function identity(out) { out[0] = 1; out[1] = 0; out[2] = 0; @@ -33741,8 +39727,8 @@ function fromMat2d(out, a4) { out[8] = 1; return out; } -function fromQuat(out, q4) { - var x6 = q4[0], y5 = q4[1], z3 = q4[2], w4 = q4[3]; +function fromQuat(out, q3) { + var x6 = q3[0], y5 = q3[1], z3 = q3[2], w4 = q3[3]; var x22 = x6 + x6; var y22 = y5 + y5; var z22 = z3 + z3; @@ -33881,7 +39867,7 @@ var mat4_exports = {}; __export(mat4_exports, { add: () => add2, adjoint: () => adjoint2, - clone: () => clone3, + clone: () => clone2, copy: () => copy2, create: () => create2, determinant: () => determinant2, @@ -33904,7 +39890,7 @@ __export(mat4_exports, { getRotation: () => getRotation, getScaling: () => getScaling, getTranslation: () => getTranslation, - identity: () => identity3, + identity: () => identity2, invert: () => invert2, lookAt: () => lookAt, mul: () => mul2, @@ -33953,7 +39939,7 @@ function create2() { out[15] = 1; return out; } -function clone3(a4) { +function clone2(a4) { var out = new ARRAY_TYPE(16); out[0] = a4[0]; out[1] = a4[1]; @@ -34031,7 +40017,7 @@ function set3(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m out[15] = m33; return out; } -function identity3(out) { +function identity2(out) { out[0] = 1; out[1] = 0; out[2] = 0; @@ -34554,8 +40540,8 @@ function fromZRotation(out, rad) { out[15] = 1; return out; } -function fromRotationTranslation(out, q4, v3) { - var x6 = q4[0], y5 = q4[1], z3 = q4[2], w4 = q4[3]; +function fromRotationTranslation(out, q3, v3) { + var x6 = q3[0], y5 = q3[1], z3 = q3[2], w4 = q3[3]; var x22 = x6 + x6; var y22 = y5 + y5; var z22 = z3 + z3; @@ -34667,8 +40653,8 @@ function getRotation(out, mat) { } return out; } -function fromRotationTranslationScale(out, q4, v3, s4) { - var x6 = q4[0], y5 = q4[1], z3 = q4[2], w4 = q4[3]; +function fromRotationTranslationScale(out, q3, v3, s4) { + var x6 = q3[0], y5 = q3[1], z3 = q3[2], w4 = q3[3]; var x22 = x6 + x6; var y22 = y5 + y5; var z22 = z3 + z3; @@ -34702,8 +40688,8 @@ function fromRotationTranslationScale(out, q4, v3, s4) { out[15] = 1; return out; } -function fromRotationTranslationScaleOrigin(out, q4, v3, s4, o3) { - var x6 = q4[0], y5 = q4[1], z3 = q4[2], w4 = q4[3]; +function fromRotationTranslationScaleOrigin(out, q3, v3, s4, o3) { + var x6 = q3[0], y5 = q3[1], z3 = q3[2], w4 = q3[3]; var x22 = x6 + x6; var y22 = y5 + y5; var z22 = z3 + z3; @@ -34749,8 +40735,8 @@ function fromRotationTranslationScaleOrigin(out, q4, v3, s4, o3) { out[15] = 1; return out; } -function fromQuat3(out, q4) { - var x6 = q4[0], y5 = q4[1], z3 = q4[2], w4 = q4[3]; +function fromQuat3(out, q3) { + var x6 = q3[0], y5 = q3[1], z3 = q3[2], w4 = q3[3]; var x22 = x6 + x6; var y22 = y5 + y5; var z22 = z3 + z3; @@ -34938,7 +40924,7 @@ function lookAt(out, eye, center2, up) { var centery = center2[1]; var centerz = center2[2]; if (Math.abs(eyex - centerx) < EPSILON && Math.abs(eyey - centery) < EPSILON && Math.abs(eyez - centerz) < EPSILON) { - return identity3(out); + return identity2(out); } z0 = eyex - centerx; z1 = eyey - centery; @@ -35133,7 +41119,7 @@ var quat_exports = {}; __export(quat_exports, { add: () => add5, calculateW: () => calculateW, - clone: () => clone6, + clone: () => clone5, conjugate: () => conjugate, copy: () => copy5, create: () => create5, @@ -35146,7 +41132,7 @@ __export(quat_exports, { fromValues: () => fromValues5, getAngle: () => getAngle, getAxisAngle: () => getAxisAngle, - identity: () => identity4, + identity: () => identity3, invert: () => invert3, len: () => len3, length: () => length3, @@ -35179,7 +41165,7 @@ __export(vec3_exports, { angle: () => angle, bezier: () => bezier, ceil: () => ceil, - clone: () => clone4, + clone: () => clone3, copy: () => copy3, create: () => create3, cross: () => cross, @@ -35233,7 +41219,7 @@ function create3() { } return out; } -function clone4(a4) { +function clone3(a4) { var out = new ARRAY_TYPE(3); out[0] = a4[0]; out[1] = a4[1]; @@ -35444,8 +41430,8 @@ function transformMat3(out, a4, m4) { out[2] = x6 * m4[2] + y5 * m4[5] + z3 * m4[8]; return out; } -function transformQuat(out, a4, q4) { - var qx = q4[0], qy = q4[1], qz = q4[2], qw = q4[3]; +function transformQuat(out, a4, q3) { + var qx = q3[0], qy = q3[1], qz = q3[2], qw = q3[3]; var x6 = a4[0], y5 = a4[1], z3 = a4[2]; var uvx = qy * z3 - qz * y5, uvy = qz * x6 - qx * z3, uvz = qx * y5 - qy * x6; var uuvx = qy * uvz - qz * uvy, uuvy = qz * uvx - qx * uvz, uuvz = qx * uvy - qy * uvx; @@ -35530,7 +41516,7 @@ var len = length; var sqrLen = squaredLength; var forEach = function() { var vec = create3(); - return function(a4, stride, offset, count2, fn2, arg) { + return function(a4, stride, offset, count2, fn, arg) { var i4, l4; if (!stride) { stride = 3; @@ -35547,7 +41533,7 @@ var forEach = function() { vec[0] = a4[i4]; vec[1] = a4[i4 + 1]; vec[2] = a4[i4 + 2]; - fn2(vec, vec, arg); + fn(vec, vec, arg); a4[i4] = vec[0]; a4[i4 + 1] = vec[1]; a4[i4 + 2] = vec[2]; @@ -35561,7 +41547,7 @@ var vec4_exports = {}; __export(vec4_exports, { add: () => add4, ceil: () => ceil2, - clone: () => clone5, + clone: () => clone4, copy: () => copy4, create: () => create4, cross: () => cross2, @@ -35611,7 +41597,7 @@ function create4() { } return out; } -function clone5(a4) { +function clone4(a4) { var out = new ARRAY_TYPE(4); out[0] = a4[0]; out[1] = a4[1]; @@ -35830,9 +41816,9 @@ function transformMat42(out, a4, m4) { out[3] = m4[3] * x6 + m4[7] * y5 + m4[11] * z3 + m4[15] * w4; return out; } -function transformQuat2(out, a4, q4) { +function transformQuat2(out, a4, q3) { var x6 = a4[0], y5 = a4[1], z3 = a4[2]; - var qx = q4[0], qy = q4[1], qz = q4[2], qw = q4[3]; + var qx = q3[0], qy = q3[1], qz = q3[2], qw = q3[3]; var ix = qw * x6 + qy * z3 - qz * y5; var iy = qw * y5 + qz * x6 - qx * z3; var iz = qw * z3 + qx * y5 - qy * x6; @@ -35870,7 +41856,7 @@ var len2 = length2; var sqrLen2 = squaredLength2; var forEach2 = function() { var vec = create4(); - return function(a4, stride, offset, count2, fn2, arg) { + return function(a4, stride, offset, count2, fn, arg) { var i4, l4; if (!stride) { stride = 4; @@ -35888,7 +41874,7 @@ var forEach2 = function() { vec[1] = a4[i4 + 1]; vec[2] = a4[i4 + 2]; vec[3] = a4[i4 + 3]; - fn2(vec, vec, arg); + fn(vec, vec, arg); a4[i4] = vec[0]; a4[i4 + 1] = vec[1]; a4[i4 + 2] = vec[2]; @@ -35909,7 +41895,7 @@ function create5() { out[3] = 1; return out; } -function identity4(out) { +function identity3(out) { out[0] = 0; out[1] = 0; out[2] = 0; @@ -35925,13 +41911,13 @@ function setAxisAngle(out, axis22, rad) { out[3] = Math.cos(rad); return out; } -function getAxisAngle(out_axis, q4) { - var rad = Math.acos(q4[3]) * 2; +function getAxisAngle(out_axis, q3) { + var rad = Math.acos(q3[3]) * 2; var s4 = Math.sin(rad / 2); if (s4 > EPSILON) { - out_axis[0] = q4[0] / s4; - out_axis[1] = q4[1] / s4; - out_axis[2] = q4[2] / s4; + out_axis[0] = q3[0] / s4; + out_axis[1] = q3[1] / s4; + out_axis[2] = q3[2] / s4; } else { out_axis[0] = 1; out_axis[1] = 0; @@ -36120,7 +42106,7 @@ function fromEuler(out, x6, y5, z3) { function str6(a4) { return "quat(" + a4[0] + ", " + a4[1] + ", " + a4[2] + ", " + a4[3] + ")"; } -var clone6 = clone5; +var clone5 = clone4; var fromValues5 = fromValues4; var copy5 = copy4; var set6 = set5; @@ -36197,7 +42183,7 @@ __export(vec2_exports, { add: () => add6, angle: () => angle2, ceil: () => ceil3, - clone: () => clone7, + clone: () => clone6, copy: () => copy6, create: () => create6, cross: () => cross3, @@ -36248,7 +42234,7 @@ function create6() { } return out; } -function clone7(a4) { +function clone6(a4) { var out = new ARRAY_TYPE(2); out[0] = a4[0]; out[1] = a4[1]; @@ -36443,7 +42429,7 @@ var sqrDist3 = squaredDistance3; var sqrLen4 = squaredLength4; var forEach3 = function() { var vec = create6(); - return function(a4, stride, offset, count2, fn2, arg) { + return function(a4, stride, offset, count2, fn, arg) { var i4, l4; if (!stride) { stride = 2; @@ -36459,7 +42445,7 @@ var forEach3 = function() { for (i4 = offset; i4 < l4; i4 += stride) { vec[0] = a4[i4]; vec[1] = a4[i4 + 1]; - fn2(vec, vec, arg); + fn(vec, vec, arg); a4[i4] = vec[0]; a4[i4 + 1] = vec[1]; } @@ -36628,7 +42614,7 @@ var WILDCARD2 = "*"; function _cloneArrayAttr(arr) { var result = []; for (var i4 = 0; i4 < arr.length; i4++) { - if (is_array_default(arr[i4])) { + if ((0, import_util4.isArray)(arr[i4])) { result.push([].concat(arr[i4])); } else { result.push(arr[i4]); @@ -36647,8 +42633,8 @@ function getFormatFromAttrs(toAttrs, shape) { function getFormatToAttrs(props, shape) { var toAttrs = {}; var attrs = shape.attr(); - each_default(props, function(v3, k4) { - if (RESERVED_PORPS.indexOf(k4) === -1 && !is_equal_default(attrs[k4], v3)) { + (0, import_util4.each)(props, function(v3, k4) { + if (RESERVED_PORPS.indexOf(k4) === -1 && !(0, import_util4.isEqual)(attrs[k4], v3)) { toAttrs[k4] = v3; } }); @@ -36659,11 +42645,11 @@ function checkExistedAttrs(animations, animation7) { return animations; } var startTime = animation7.startTime, delay = animation7.delay, duration = animation7.duration; - var hasOwnProperty4 = Object.prototype.hasOwnProperty; - each_default(animations, function(item) { + var hasOwnProperty = Object.prototype.hasOwnProperty; + (0, import_util4.each)(animations, function(item) { if (startTime + delay < item.startTime + item.delay + item.duration && duration > item.delay) { - each_default(animation7.toAttrs, function(v3, k4) { - if (hasOwnProperty4.call(item.toAttrs, k4)) { + (0, import_util4.each)(animation7.toAttrs, function(v3, k4) { + if (hasOwnProperty.call(item.toAttrs, k4)) { delete item.toAttrs[k4]; delete item.fromAttrs[k4]; } @@ -36678,7 +42664,7 @@ var Element2 = function(_super) { var _this = _super.call(this, cfg) || this; _this.attrs = {}; var attrs = _this.getDefaultAttrs(); - mix(attrs, cfg.attrs); + (0, import_util4.mix)(attrs, cfg.attrs); _this.attrs = attrs; _this.initAttrs(attrs); _this.initAnimate(); @@ -36723,7 +42709,7 @@ var Element2 = function(_super) { var name = args[0], value2 = args[1]; if (!name) return this.attrs; - if (is_object_default(name)) { + if ((0, import_util4.isObject)(name)) { for (var k4 in name) { this.setAttr(k4, name[k4]); } @@ -36883,7 +42869,7 @@ var Element2 = function(_super) { var clipShape = null; if (clipCfg) { var ShapeBase4 = this.getShapeBase(); - var shapeType = upper_first_default(clipCfg.type); + var shapeType = (0, import_util4.upperFirst)(clipCfg.type); var Cons = ShapeBase4[shapeType]; if (Cons) { clipShape = new Cons({ @@ -36910,19 +42896,19 @@ var Element2 = function(_super) { var _this = this; var originAttrs = this.attrs; var attrs = {}; - each_default(originAttrs, function(i4, k4) { - if (is_array_default(originAttrs[k4])) { + (0, import_util4.each)(originAttrs, function(i4, k4) { + if ((0, import_util4.isArray)(originAttrs[k4])) { attrs[k4] = _cloneArrayAttr(originAttrs[k4]); } else { attrs[k4] = originAttrs[k4]; } }); var cons = this.constructor; - var clone10 = new cons({ attrs }); - each_default(CLONE_CFGS, function(cfgName) { - clone10.set(cfgName, _this.get(cfgName)); + var clone41 = new cons({ attrs }); + (0, import_util4.each)(CLONE_CFGS, function(cfgName) { + clone41.set(cfgName, _this.get(cfgName)); }); - return clone10; + return clone41; }; Element4.prototype.destroy = function() { var destroyed = this.destroyed; @@ -36953,34 +42939,34 @@ var Element2 = function(_super) { if (!timeline.timer) { timeline.initTimer(); } - var toAttrs = args[0], duration = args[1], _a6 = args[2], easing = _a6 === void 0 ? "easeLinear" : _a6, _b = args[3], callback = _b === void 0 ? noop_default : _b, _c = args[4], delay = _c === void 0 ? 0 : _c; + var toAttrs = args[0], duration = args[1], _a6 = args[2], easing = _a6 === void 0 ? "easeLinear" : _a6, _b = args[3], callback = _b === void 0 ? import_util4.noop : _b, _c = args[4], delay = _c === void 0 ? 0 : _c; var onFrame; var repeat2; var pauseCallback; var resumeCallback; var animateCfg; - if (is_function_default(toAttrs)) { + if ((0, import_util4.isFunction)(toAttrs)) { onFrame = toAttrs; toAttrs = {}; - } else if (is_object_default(toAttrs) && toAttrs.onFrame) { + } else if ((0, import_util4.isObject)(toAttrs) && toAttrs.onFrame) { onFrame = toAttrs.onFrame; repeat2 = toAttrs.repeat; } - if (is_object_default(duration)) { + if ((0, import_util4.isObject)(duration)) { animateCfg = duration; duration = animateCfg.duration; easing = animateCfg.easing || "easeLinear"; delay = animateCfg.delay || 0; repeat2 = animateCfg.repeat || repeat2 || false; - callback = animateCfg.callback || noop_default; - pauseCallback = animateCfg.pauseCallback || noop_default; - resumeCallback = animateCfg.resumeCallback || noop_default; + callback = animateCfg.callback || import_util4.noop; + pauseCallback = animateCfg.pauseCallback || import_util4.noop; + resumeCallback = animateCfg.resumeCallback || import_util4.noop; } else { - if (is_number_default(callback)) { + if ((0, import_util4.isNumber)(callback)) { delay = callback; callback = null; } - if (is_function_default(easing)) { + if ((0, import_util4.isFunction)(easing)) { callback = easing; easing = "easeLinear"; } else { @@ -36999,7 +42985,7 @@ var Element2 = function(_super) { resumeCallback, delay, startTime: timeline.getTime(), - id: unique_id_default(), + id: (0, import_util4.uniqueId)(), onFrame, pathFormatted: false }; @@ -37018,7 +43004,7 @@ var Element2 = function(_super) { toEnd = true; } var animations = this.get("animations"); - each_default(animations, function(animation7) { + (0, import_util4.each)(animations, function(animation7) { if (toEnd) { if (animation7.onFrame) { _this.attr(animation7.onFrame(1)); @@ -37037,7 +43023,7 @@ var Element2 = function(_super) { var timeline = this.get("timeline"); var animations = this.get("animations"); var pauseTime = timeline.getTime(); - each_default(animations, function(animation7) { + (0, import_util4.each)(animations, function(animation7) { animation7._paused = true; animation7._pauseTime = pauseTime; if (animation7.pauseCallback) { @@ -37055,7 +43041,7 @@ var Element2 = function(_super) { var current = timeline.getTime(); var animations = this.get("animations"); var pauseTime = this.get("_pause").pauseTime; - each_default(animations, function(animation7) { + (0, import_util4.each)(animations, function(animation7) { animation7.startTime = animation7.startTime + (current - pauseTime); animation7._paused = false; animation7._pauseTime = null; @@ -37086,8 +43072,8 @@ var Element2 = function(_super) { if ((element.isGroup() || element.isCanvas && element.isCanvas()) && relativeShape && isParent(element, relativeShape)) { return "break"; } - if (is_array_default(name_1)) { - each_default(name_1, function(subName) { + if ((0, import_util4.isArray)(name_1)) { + (0, import_util4.each)(name_1, function(subName) { _this.emitDelegateEvent(element, subName, eventObj); }); } else { @@ -37233,15 +43219,15 @@ var Container = function(_super) { return child.get("visible") && (!child.isGroup() || child.isGroup() && child.getChildren().length > 0); }); if (children.length > 0) { - each_default(children, function(child) { + (0, import_util2.each)(children, function(child) { var box3 = child.getBBox(); xArr.push(box3.minX, box3.maxX); yArr.push(box3.minY, box3.maxY); }); - minX = min_default(xArr); - maxX = max_default(xArr); - minY = min_default(yArr); - maxY2 = max_default(yArr); + minX = (0, import_util6.min)(xArr); + maxX = (0, import_util6.max)(xArr); + minY = (0, import_util6.min)(yArr); + maxY2 = (0, import_util6.max)(yArr); } else { minX = 0; maxX = 0; @@ -37271,15 +43257,15 @@ var Container = function(_super) { return child.get("visible") && (!child.isGroup() || child.isGroup() && child.getChildren().length > 0); }); if (children.length > 0) { - each_default(children, function(child) { + (0, import_util2.each)(children, function(child) { var box3 = child.getCanvasBBox(); xArr.push(box3.minX, box3.maxX); yArr.push(box3.minY, box3.maxY); }); - minX = min_default(xArr); - maxX = max_default(xArr); - minY = min_default(yArr); - maxY2 = max_default(yArr); + minX = (0, import_util6.min)(xArr); + maxX = (0, import_util6.max)(xArr); + minY = (0, import_util6.min)(yArr); + maxY2 = (0, import_util6.max)(yArr); } else { minX = 0; maxX = 0; @@ -37321,7 +43307,7 @@ var Container = function(_super) { }; Container3.prototype._applyChildrenMarix = function(totalMatrix) { var children = this.getChildren(); - each_default(children, function(child) { + (0, import_util2.each)(children, function(child) { child.applyMatrix(totalMatrix); }); }; @@ -37332,14 +43318,14 @@ var Container = function(_super) { } var type2 = args[0]; var cfg = args[1]; - if (is_object_default(type2)) { + if ((0, import_util2.isObject)(type2)) { cfg = type2; } else { cfg["type"] = type2; } var shapeType = SHAPE_MAP[cfg.type]; if (!shapeType) { - shapeType = upper_first_default(cfg.type); + shapeType = (0, import_util2.upperFirst)(cfg.type); SHAPE_MAP[cfg.type] = shapeType; } var ShapeBase4 = this.getShapeBase(); @@ -37353,22 +43339,22 @@ var Container = function(_super) { args[_i] = arguments[_i]; } var groupClass = args[0], cfg = args[1]; - var group2; - if (is_function_default(groupClass)) { + var group3; + if ((0, import_util2.isFunction)(groupClass)) { if (cfg) { - group2 = new groupClass(cfg); + group3 = new groupClass(cfg); } else { - group2 = new groupClass({ + group3 = new groupClass({ parent: this }); } } else { var tmpCfg = groupClass || {}; var TmpGroupClass = this.getGroupBase(); - group2 = new TmpGroupClass(tmpCfg); + group3 = new TmpGroupClass(tmpCfg); } - this.add(group2); - return group2; + this.add(group3); + return group3; }; Container3.prototype.getCanvas = function() { var canvas; @@ -37443,7 +43429,7 @@ var Container = function(_super) { }; Container3.prototype.sort = function() { var children = this.getChildren(); - each_default(children, function(child, index2) { + (0, import_util2.each)(children, function(child, index2) { child[INDEX] = index2; return child; }); @@ -37499,27 +43485,27 @@ var Container = function(_super) { element.remove(destroy); } }; - Container3.prototype.findAll = function(fn2) { + Container3.prototype.findAll = function(fn) { var rst = []; var children = this.getChildren(); - each_default(children, function(element) { - if (fn2(element)) { + (0, import_util2.each)(children, function(element) { + if (fn(element)) { rst.push(element); } if (element.isGroup()) { - rst = rst.concat(element.findAll(fn2)); + rst = rst.concat(element.findAll(fn)); } }); return rst; }; - Container3.prototype.find = function(fn2) { + Container3.prototype.find = function(fn) { var rst = null; var children = this.getChildren(); - each_default(children, function(element) { - if (fn2(element)) { + (0, import_util2.each)(children, function(element) { + if (fn(element)) { rst = element; } else if (element.isGroup()) { - rst = element.find(fn2); + rst = element.find(fn); } if (rst) { return false; @@ -37546,6 +43532,9 @@ var Container = function(_super) { }(element_default); var container_default = Container; +// node_modules/@antv/g-base/esm/animate/timeline.js +var import_util8 = __toModule(require_lib()); + // node_modules/d3-timer/src/timer.js var frame = 0; var timeout = 0; @@ -38167,15 +44156,15 @@ function hslConvert(o3) { if (o3 instanceof Hsl) return o3; o3 = o3.rgb(); - var r4 = o3.r / 255, g4 = o3.g / 255, b10 = o3.b / 255, min7 = Math.min(r4, g4, b10), max8 = Math.max(r4, g4, b10), h3 = NaN, s4 = max8 - min7, l4 = (max8 + min7) / 2; + var r4 = o3.r / 255, g4 = o3.g / 255, b10 = o3.b / 255, min13 = Math.min(r4, g4, b10), max15 = Math.max(r4, g4, b10), h3 = NaN, s4 = max15 - min13, l4 = (max15 + min13) / 2; if (s4) { - if (r4 === max8) + if (r4 === max15) h3 = (g4 - b10) / s4 + (g4 < b10) * 6; - else if (g4 === max8) + else if (g4 === max15) h3 = (b10 - r4) / s4 + 2; else h3 = (r4 - g4) / s4 + 4; - s4 /= l4 < 0.5 ? max8 + min7 : 2 - max8 - min7; + s4 /= l4 < 0.5 ? max15 + min13 : 2 - max15 - min13; h3 *= 60; } else { s4 = l4 > 0 && l4 < 1 ? 0 : h3; @@ -38222,19 +44211,19 @@ function basis(t1, v0, v1, v22, v3) { var t22 = t1 * t1, t32 = t22 * t1; return ((1 - 3 * t1 + 3 * t22 - t32) * v0 + (4 - 6 * t22 + 3 * t32) * v1 + (1 + 3 * t1 + 3 * t22 - 3 * t32) * v22 + t32 * v3) / 6; } -function basis_default(values2) { - var n3 = values2.length - 1; +function basis_default(values4) { + var n3 = values4.length - 1; return function(t4) { - var i4 = t4 <= 0 ? t4 = 0 : t4 >= 1 ? (t4 = 1, n3 - 1) : Math.floor(t4 * n3), v1 = values2[i4], v22 = values2[i4 + 1], v0 = i4 > 0 ? values2[i4 - 1] : 2 * v1 - v22, v3 = i4 < n3 - 1 ? values2[i4 + 2] : 2 * v22 - v1; + var i4 = t4 <= 0 ? t4 = 0 : t4 >= 1 ? (t4 = 1, n3 - 1) : Math.floor(t4 * n3), v1 = values4[i4], v22 = values4[i4 + 1], v0 = i4 > 0 ? values4[i4 - 1] : 2 * v1 - v22, v3 = i4 < n3 - 1 ? values4[i4 + 2] : 2 * v22 - v1; return basis((t4 - i4 / n3) * n3, v0, v1, v22, v3); }; } // node_modules/d3-interpolate/src/basisClosed.js -function basisClosed_default(values2) { - var n3 = values2.length; +function basisClosed_default(values4) { + var n3 = values4.length; return function(t4) { - var i4 = Math.floor(((t4 %= 1) < 0 ? ++t4 : t4) * n3), v0 = values2[(i4 + n3 - 1) % n3], v1 = values2[i4 % n3], v22 = values2[(i4 + 1) % n3], v3 = values2[(i4 + 2) % n3]; + var i4 = Math.floor(((t4 %= 1) < 0 ? ++t4 : t4) * n3), v0 = values4[(i4 + n3 - 1) % n3], v1 = values4[i4 % n3], v22 = values4[(i4 + 1) % n3], v3 = values4[(i4 + 2) % n3]; return basis((t4 - i4 / n3) * n3, v0, v1, v22, v3); }; } @@ -38389,7 +44378,7 @@ function one(b10) { }; } function string_default(a4, b10) { - var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i4 = -1, s4 = [], q4 = []; + var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i4 = -1, s4 = [], q3 = []; a4 = a4 + "", b10 = b10 + ""; while ((am = reA.exec(a4)) && (bm = reB.exec(b10))) { if ((bs = bm.index) > bi) { @@ -38406,7 +44395,7 @@ function string_default(a4, b10) { s4[++i4] = bm; } else { s4[++i4] = null; - q4.push({ i: i4, x: number_default(am, bm) }); + q3.push({ i: i4, x: number_default(am, bm) }); } bi = reB.lastIndex; } @@ -38417,9 +44406,9 @@ function string_default(a4, b10) { else s4[++i4] = bs; } - return s4.length < 2 ? q4[0] ? one(q4[0].x) : zero4(b10) : (b10 = q4.length, function(t4) { + return s4.length < 2 ? q3[0] ? one(q3[0].x) : zero4(b10) : (b10 = q3.length, function(t4) { for (var i5 = 0, o3; i5 < b10; ++i5) - s4[(o3 = q4[i5]).i] = o3.x(t4); + s4[(o3 = q3[i5]).i] = o3.x(t4); return s4.join(""); }); } @@ -38448,7 +44437,7 @@ function _update(shape, animation7, ratio) { } var interf; for (var k4 in toAttrs) { - if (!is_equal_default(fromAttrs[k4], toAttrs[k4])) { + if (!(0, import_util8.isEqual)(fromAttrs[k4], toAttrs[k4])) { if (k4 === "path") { var toPath = toAttrs[k4]; var fromPath = fromAttrs[k4]; @@ -38473,7 +44462,7 @@ function _update(shape, animation7, ratio) { var fromPathPoint = fromPath[i4]; var cPathPoint = []; for (var j4 = 0; j4 < toPathPoint.length; j4++) { - if (is_number_default(toPathPoint[j4]) && fromPathPoint && is_number_default(fromPathPoint[j4])) { + if ((0, import_util8.isNumber)(toPathPoint[j4]) && fromPathPoint && (0, import_util8.isNumber)(fromPathPoint[j4])) { interf = value_default(fromPathPoint[j4], toPathPoint[j4]); cPathPoint.push(interf(ratio)); } else { @@ -38488,7 +44477,7 @@ function _update(shape, animation7, ratio) { cProps[k4] = currentMatrix; } else if (isColorProp(k4) && isGradientColor(toAttrs[k4])) { cProps[k4] = toAttrs[k4]; - } else if (!is_function_default(toAttrs[k4])) { + } else if (!(0, import_util8.isFunction)(toAttrs[k4])) { interf = value_default(fromAttrs[k4], toAttrs[k4]); cProps[k4] = interf(ratio); } @@ -38706,7 +44695,7 @@ var EventController = function() { EventController4.prototype._bindEvents = function() { var _this = this; var el = this.canvas.get("el"); - each_default(EVENTS, function(eventName) { + (0, import_util2.each)(EVENTS, function(eventName) { el.addEventListener(eventName, _this._eventCallback); }); if (document) { @@ -38717,7 +44706,7 @@ var EventController = function() { EventController4.prototype._clearEvents = function() { var _this = this; var el = this.canvas.get("el"); - each_default(EVENTS, function(eventName) { + (0, import_util2.each)(EVENTS, function(eventName) { el.removeEventListener(eventName, _this._eventCallback); }); if (document) { @@ -38967,7 +44956,7 @@ var Canvas = function(_super) { }; Canvas4.prototype.initContainer = function() { var container2 = this.get("container"); - if (is_string_default(container2)) { + if ((0, import_util2.isString)(container2)) { container2 = document.getElementById(container2); this.set("container", container2); } @@ -39019,13 +45008,13 @@ var Canvas = function(_super) { Canvas4.prototype.getPointByEvent = function(ev) { var supportCSSTransform = this.get("supportCSSTransform"); if (supportCSSTransform) { - if (isFirefox && !is_nil_default(ev.layerX) && ev.layerX !== ev.offsetX) { + if (isFirefox && !(0, import_util2.isNil)(ev.layerX) && ev.layerX !== ev.offsetX) { return { x: ev.layerX, y: ev.layerY }; } - if (!is_nil_default(ev.offsetX)) { + if (!(0, import_util2.isNil)(ev.offsetX)) { return { x: ev.offsetX, y: ev.offsetY @@ -39111,17 +45100,17 @@ var AbstractGroup = function(_super) { return false; }; AbstractGroup2.prototype.clone = function() { - var clone10 = _super.prototype.clone.call(this); + var clone41 = _super.prototype.clone.call(this); var children = this.getChildren(); for (var i4 = 0; i4 < children.length; i4++) { var child = children[i4]; - clone10.add(child.clone()); + clone41.add(child.clone()); } - return clone10; + return clone41; }; return AbstractGroup2; }(container_default); -var group_default2 = AbstractGroup; +var group_default = AbstractGroup; // node_modules/@antv/g-base/esm/abstract/shape.js var AbstractShape = function(_super) { @@ -39272,7 +45261,7 @@ __export(util_exports, { distance: () => distance4, getBBoxByArray: () => getBBoxByArray, getBBoxRange: () => getBBoxRange, - isNumberEqual: () => isNumberEqual2, + isNumberEqual: () => isNumberEqual, piMod: () => piMod }); function minNum(array) { @@ -39286,7 +45275,7 @@ function distance4(x1, y1, x22, y22) { var dy = y1 - y22; return Math.sqrt(dx * dx + dy * dy); } -function isNumberEqual2(v1, v22) { +function isNumberEqual(v1, v22) { return Math.abs(v1 - v22) < 1e-3; } function getBBoxByArray(xArr, yArr) { @@ -39435,7 +45424,7 @@ function quadraticAt(p0, p1, p22, t4) { } function extrema(p0, p1, p22) { var a4 = p0 + p22 - 2 * p1; - if (isNumberEqual2(a4, 0)) { + if (isNumberEqual(a4, 0)) { return [0.5]; } var rst = (p0 - p1) / a4; @@ -39527,8 +45516,8 @@ function extrema2(p0, p1, p22, p32) { var t1; var t22; var discSqrt; - if (isNumberEqual2(a4, 0)) { - if (!isNumberEqual2(b10, 0)) { + if (isNumberEqual(a4, 0)) { + if (!isNumberEqual(b10, 0)) { t1 = -c5 / b10; if (t1 >= 0 && t1 <= 1) { extremas.push(t1); @@ -39536,7 +45525,7 @@ function extrema2(p0, p1, p22, p32) { } } else { var disc = b10 * b10 - 4 * a4 * c5; - if (isNumberEqual2(disc, 0)) { + if (isNumberEqual(disc, 0)) { extremas.push(-b10 / (2 * a4)); } else if (disc > 0) { discSqrt = Math.sqrt(disc); @@ -39663,8 +45652,8 @@ var ellipse_default = { var qx = px - ex; var qy = py - ey; var r4 = Math.hypot(ry1, rx1); - var q4 = Math.hypot(qy, qx); - var delta_c = r4 * Math.asin((rx1 * qy - ry1 * qx) / (r4 * q4)); + var q3 = Math.hypot(qy, qx); + var delta_c = r4 * Math.asin((rx1 * qy - ry1 * qx) / (r4 * q3)); var delta_t = delta_c / Math.sqrt(squareA + squareB - nearestX * nearestX - nearestY * nearestY); t4 += delta_t; t4 = Math.min(Math.PI / 2, Math.max(0, t4)); @@ -40020,7 +46009,7 @@ function getOffScreenContext() { // node_modules/@antv/g-base/esm/util/text.js function getTextHeight(text, fontSize, lineHeight) { var lineCount = 1; - if (is_string_default(text)) { + if ((0, import_util2.isString)(text)) { lineCount = text.split("\n").length; } if (lineCount > 1) { @@ -40035,14 +46024,14 @@ function getLineSpaceing(fontSize, lineHeight) { function getTextWidth(text, font) { var context = getOffScreenContext(); var width2 = 0; - if (is_nil_default(text) || text === "") { + if ((0, import_util2.isNil)(text) || text === "") { return width2; } context.save(); context.font = font; - if (is_string_default(text) && text.includes("\n")) { + if ((0, import_util2.isString)(text) && text.includes("\n")) { var textArr = text.split("\n"); - each_default(textArr, function(subText) { + (0, import_util2.each)(textArr, function(subText) { var measureWidth = context.measureText(subText).width; if (width2 < measureWidth) { width2 = measureWidth; @@ -40108,23 +46097,24 @@ function text_default(shape) { } // node_modules/@antv/path-util/esm/parse-path.js +var import_util21 = __toModule(require_lib()); var regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/ig; var regexDot = /[^\s\,]+/ig; function parsePath(p4) { var path = p4 || []; - if (is_array_default(path)) { + if ((0, import_util21.isArray)(path)) { return path; } - if (is_string_default(path)) { + if ((0, import_util21.isString)(path)) { path = path.match(regexTags); - each_default(path, function(item, index2) { + (0, import_util21.each)(path, function(item, index2) { item = item.match(regexDot); if (item[0].length > 1) { var tag = item[0].charAt(0); item.splice(1, 0, item[0].substr(1)); item[0] = tag; } - each_default(item, function(sub6, i4) { + (0, import_util21.each)(item, function(sub6, i4) { if (!isNaN(sub6)) { item[i4] = +sub6; } @@ -40142,17 +46132,17 @@ function smoothBezier(points, smooth, isLoop, constraint) { var hasConstraint = !!constraint; var prevPoint; var nextPoint; - var min7; - var max8; + var min13; + var max15; var nextCp0; var cp1; var cp0; if (hasConstraint) { - min7 = constraint[0], max8 = constraint[1]; + min13 = constraint[0], max15 = constraint[1]; for (var i4 = 0, l4 = points.length; i4 < l4; i4 += 1) { var point2 = points[i4]; - min7 = vec2_exports.min([0, 0], min7, point2); - max8 = vec2_exports.max([0, 0], max8, point2); + min13 = vec2_exports.min([0, 0], min13, point2); + max15 = vec2_exports.max([0, 0], max15, point2); } } for (var i4 = 0, len5 = points.length; i4 < len5; i4 += 1) { @@ -40192,10 +46182,10 @@ function smoothBezier(points, smooth, isLoop, constraint) { v22 = vec2_exports.scale([0, 0], v22, d1 / d0); nextCp0 = vec2_exports.add([0, 0], point2, v22); if (hasConstraint) { - cp1 = vec2_exports.max([0, 0], cp1, min7); - cp1 = vec2_exports.min([0, 0], cp1, max8); - nextCp0 = vec2_exports.max([0, 0], nextCp0, min7); - nextCp0 = vec2_exports.min([0, 0], nextCp0, max8); + cp1 = vec2_exports.max([0, 0], cp1, min13); + cp1 = vec2_exports.min([0, 0], cp1, max15); + nextCp0 = vec2_exports.max([0, 0], nextCp0, min13); + nextCp0 = vec2_exports.min([0, 0], nextCp0, max15); } cps.push(cp0); cps.push(cp1); @@ -40244,7 +46234,14 @@ function catmullRom2Bezier(crp, z3, constraint) { } var catmull_rom_2_bezier_default = catmullRom2Bezier; +// node_modules/@antv/path-util/esm/fill-path-by-diff.js +var import_util22 = __toModule(require_lib()); + +// node_modules/@antv/path-util/esm/path-intersection.js +var import_util24 = __toModule(require_lib()); + // node_modules/@antv/path-util/esm/parse-path-string.js +var import_util23 = __toModule(require_lib()); var SPACES2 = " \n\v\f\r \xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029"; var PATH_COMMAND2 = new RegExp("([a-z])[" + SPACES2 + ",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[" + SPACES2 + "]*,?[" + SPACES2 + "]*)+)", "ig"); var PATH_VALUES2 = new RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[" + SPACES2 + "]*,?[" + SPACES2 + "]*", "ig"); @@ -40252,7 +46249,7 @@ function parsePathString2(pathString) { if (!pathString) { return null; } - if (is_array_default(pathString)) { + if ((0, import_util23.isArray)(pathString)) { return pathString; } var paramCounts = { @@ -40424,6 +46421,7 @@ function pathToAbsolute2(pathString) { var TAU = Math.PI * 2; // node_modules/@antv/path-util/esm/get-arc-params.js +var import_util25 = __toModule(require_lib()); function vMag(v3) { return Math.sqrt(v3[0] * v3[0] + v3[1] * v3[1]); } @@ -40439,7 +46437,7 @@ function isSamePoint(point1, point2) { function getArcParams(startPoint, params) { var rx = params[1]; var ry = params[2]; - var xRotation = mod_default(to_radian_default(params[3]), Math.PI * 2); + var xRotation = (0, import_util25.mod)((0, import_util25.toRadian)(params[3]), Math.PI * 2); var arcFlag = params[4]; var sweepFlag = params[5]; var x1 = startPoint[0]; @@ -40611,8 +46609,8 @@ function getSegments(path) { } // node_modules/@antv/path-util/esm/get-line-intersect.js -var isBetween = function(value2, min7, max8) { - return value2 >= min7 && value2 <= max8; +var isBetween = function(value2, min13, max15) { + return value2 >= min13 && value2 <= max15; }; function getLineIntersect(p0, p1, p22, p32) { var tolerance3 = 1e-3; @@ -40654,8 +46652,8 @@ function dcmp(x6) { } return x6 < 0 ? -1 : 1; } -function onSegment(p1, p22, q4) { - if ((q4[0] - p1[0]) * (p22[1] - p1[1]) === (p22[0] - p1[0]) * (q4[1] - p1[1]) && Math.min(p1[0], p22[0]) <= q4[0] && q4[0] <= Math.max(p1[0], p22[0]) && Math.min(p1[1], p22[1]) <= q4[1] && q4[1] <= Math.max(p1[1], p22[1])) { +function onSegment(p1, p22, q3) { + if ((q3[0] - p1[0]) * (p22[1] - p1[1]) === (p22[0] - p1[0]) * (q3[1] - p1[1]) && Math.min(p1[0], p22[0]) <= q3[0] && q3[0] <= Math.max(p1[0], p22[0]) && Math.min(p1[1], p22[1]) <= q3[1] && q3[1] <= Math.max(p1[1], p22[1])) { return true; } return false; @@ -40680,6 +46678,7 @@ function isInPolygon(points, x6, y5) { } // node_modules/@antv/path-util/esm/is-polygons-intersect.js +var import_util26 = __toModule(require_lib()); function parseToLines(points) { var lines = []; var count2 = points.length; @@ -40699,11 +46698,11 @@ function parseToLines(points) { } if (lines.length > 1) { var first = points[0]; - var last2 = points[count2 - 1]; + var last17 = points[count2 - 1]; lines.push({ from: { - x: last2[0], - y: last2[1] + x: last17[0], + y: last17[1] }, to: { x: first[0], @@ -40715,7 +46714,7 @@ function parseToLines(points) { } function lineIntersectPolygon(lines, line2) { var isIntersect2 = false; - each_default(lines, function(l4) { + (0, import_util26.each)(lines, function(l4) { if (getLineIntersect(l4.from, l4.to, line2.from, line2.to)) { isIntersect2 = true; return false; @@ -40750,7 +46749,7 @@ function isPolygonsIntersect(points1, points2) { return false; } var isIn = false; - each_default(points2, function(point2) { + (0, import_util26.each)(points2, function(point2) { if (isInPolygon(points1, point2[0], point2[1])) { isIn = true; return false; @@ -40759,7 +46758,7 @@ function isPolygonsIntersect(points1, points2) { if (isIn) { return true; } - each_default(points1, function(point2) { + (0, import_util26.each)(points1, function(point2) { if (isInPolygon(points2, point2[0], point2[1])) { isIn = true; return false; @@ -40771,7 +46770,7 @@ function isPolygonsIntersect(points1, points2) { var lines1 = parseToLines(points1); var lines2 = parseToLines(points2); var isIntersect2 = false; - each_default(lines2, function(line2) { + (0, import_util26.each)(lines2, function(line2) { if (lineIntersectPolygon(lines1, line2)) { isIntersect2 = true; return false; @@ -40781,6 +46780,7 @@ function isPolygonsIntersect(points1, points2) { } // node_modules/@antv/g-base/esm/bbox/path.js +var import_util27 = __toModule(require_lib()); function getPathBox(segments, lineWidth) { var xArr = []; var yArr = []; @@ -40820,10 +46820,10 @@ function getPathBox(segments, lineWidth) { yArr = yArr.filter(function(item) { return !Number.isNaN(item); }); - var minX = min_default(xArr); - var minY = min_default(yArr); - var maxX = max_default(xArr); - var maxY2 = max_default(yArr); + var minX = (0, import_util27.min)(xArr); + var minY = (0, import_util27.min)(yArr); + var maxX = (0, import_util27.max)(xArr); + var maxY2 = (0, import_util27.max)(yArr); if (segmentsWithAngle.length === 0) { return { x: minX, @@ -40864,7 +46864,7 @@ function getExtraFromSegmentWithAngle(segment, lineWidth) { var currentAndNext = Math.pow(currentPoint[0] - nextPoint[0], 2) + Math.pow(currentPoint[1] - nextPoint[1], 2); var preAndNext = Math.pow(prePoint[0] - nextPoint[0], 2) + Math.pow(prePoint[1] - nextPoint[1], 2); var currentAngle = Math.acos((currentAndPre + currentAndNext - preAndNext) / (2 * Math.sqrt(currentAndPre) * Math.sqrt(currentAndNext))); - if (!currentAngle || Math.sin(currentAngle) === 0 || isNumberEqual(currentAngle, 0)) { + if (!currentAngle || Math.sin(currentAngle) === 0 || (0, import_util27.isNumberEqual)(currentAngle, 0)) { return { xExtra: 0, yExtra: 0 @@ -40948,6 +46948,9 @@ register("path", path_default); register("line", line_default2); register("ellipse", ellipse_default2); +// node_modules/@antv/adjust/esm/adjusts/adjust.js +var _3 = __toModule(require_lib()); + // node_modules/@antv/adjust/esm/constant.js var DEFAULT_Y = 0; var MARGIN_RATIO = 1 / 2; @@ -40965,18 +46968,18 @@ var Adjust = function() { Adjust2.prototype.isAdjust = function(dim) { return this.adjustNames.indexOf(dim) >= 0; }; - Adjust2.prototype.getAdjustRange = function(dim, dimValue, values2) { + Adjust2.prototype.getAdjustRange = function(dim, dimValue, values4) { var yField = this.yField; - var index2 = values2.indexOf(dimValue); - var length5 = values2.length; + var index2 = values4.indexOf(dimValue); + var length5 = values4.length; var pre; var next; if (!yField && this.isAdjust("y")) { pre = 0; next = 1; } else if (length5 > 1) { - pre = values2[index2 === 0 ? 0 : index2 - 1]; - next = values2[index2 === length5 - 1 ? length5 - 1 : index2 + 1]; + pre = values4[index2 === 0 ? 0 : index2 - 1]; + next = values4[index2 === length5 - 1 ? length5 - 1 : index2 + 1]; if (index2 !== 0) { pre += (dimValue - pre) / 2; } else { @@ -40985,7 +46988,7 @@ var Adjust = function() { if (index2 !== length5 - 1) { next -= (next - dimValue) / 2; } else { - next += (dimValue - values2[length5 - 2]) / 2; + next += (dimValue - values4[length5 - 2]) / 2; } } else { pre = dimValue === 0 ? 0 : dimValue - 0.5; @@ -40999,21 +47002,21 @@ var Adjust = function() { Adjust2.prototype.adjustData = function(groupedDataArray, mergedData) { var _this = this; var dimValuesMap = this.getDimValues(mergedData); - each_default(groupedDataArray, function(dataArray, index2) { - each_default(dimValuesMap, function(values2, dim) { - _this.adjustDim(dim, values2, dataArray, index2); + _3.each(groupedDataArray, function(dataArray, index2) { + _3.each(dimValuesMap, function(values4, dim) { + _this.adjustDim(dim, values4, dataArray, index2); }); }); }; Adjust2.prototype.groupData = function(data3, dim) { - each_default(data3, function(record) { + _3.each(data3, function(record) { if (record[dim] === void 0) { record[dim] = DEFAULT_Y; } }); - return group_by_default(data3, dim); + return _3.groupBy(data3, dim); }; - Adjust2.prototype.adjustDim = function(dim, values2, data3, index2) { + Adjust2.prototype.adjustDim = function(dim, values4, data3, index2) { }; Adjust2.prototype.getDimValues = function(mergedData) { var _a6 = this, xField = _a6.xField, yField = _a6.yField; @@ -41026,7 +47029,7 @@ var Adjust = function() { dims.push(yField); } dims.forEach(function(dim2) { - dimValuesMap[dim2] = values_of_key_default(mergedData, dim2).sort(function(v1, v22) { + dimValuesMap[dim2] = _3.valuesOfKey(mergedData, dim2).sort(function(v1, v22) { return v1 - v22; }); }); @@ -41053,7 +47056,7 @@ var registerAdjust = function(type2, ctor) { }; // node_modules/@antv/adjust/node_modules/tslib/modules/index.js -var import_tslib10 = __toModule(require_tslib2()); +var import_tslib9 = __toModule(require_tslib2()); var { __extends: __extends2, __assign: __assign2, @@ -41078,9 +47081,10 @@ var { __importDefault: __importDefault2, __classPrivateFieldGet: __classPrivateFieldGet2, __classPrivateFieldSet: __classPrivateFieldSet2 -} = import_tslib10.default; +} = import_tslib9.default; // node_modules/@antv/adjust/esm/adjusts/dodge.js +var _4 = __toModule(require_lib()); var Dodge = function(_super) { __extends2(Dodge2, _super); function Dodge2(cfg) { @@ -41103,10 +47107,10 @@ var Dodge = function(_super) { return _this; } Dodge2.prototype.process = function(groupDataArray) { - var groupedDataArray = clone_default(groupDataArray); - var mergeData = flatten_default(groupedDataArray); + var groupedDataArray = _4.clone(groupDataArray); + var mergeData = _4.flatten(groupedDataArray); var dodgeBy = this.dodgeBy; - var adjustDataArray = dodgeBy ? group_default(mergeData, dodgeBy) : groupedDataArray; + var adjustDataArray = dodgeBy ? _4.group(mergeData, dodgeBy) : groupedDataArray; this.cacheMap = {}; this.adjustDataArray = adjustDataArray; this.mergeData = mergeData; @@ -41115,23 +47119,23 @@ var Dodge = function(_super) { this.mergeData = []; return groupedDataArray; }; - Dodge2.prototype.adjustDim = function(dim, values2, data3, frameIndex) { + Dodge2.prototype.adjustDim = function(dim, values4, data3, frameIndex) { var _this = this; - var map6 = this.getDistribution(dim); + var map23 = this.getDistribution(dim); var groupData = this.groupData(data3, dim); - each_default(groupData, function(group2, key) { + _4.each(groupData, function(group3, key) { var range; - if (values2.length === 1) { + if (values4.length === 1) { range = { - pre: values2[0] - 1, - next: values2[0] + 1 + pre: values4[0] - 1, + next: values4[0] + 1 }; } else { - range = _this.getAdjustRange(dim, parseFloat(key), values2); + range = _this.getAdjustRange(dim, parseFloat(key), values4); } - each_default(group2, function(d3) { + _4.each(group3, function(d3) { var value2 = d3[dim]; - var valueArr = map6[value2]; + var valueArr = map23[value2]; var valIndex = valueArr.indexOf(frameIndex); d3[dim] = _this.getDodgeOffset(range, valIndex, valueArr.length); }); @@ -41143,13 +47147,13 @@ var Dodge = function(_super) { var pre = range.pre, next = range.next; var tickLength = next - pre; var position2; - if (!is_nil_default(intervalPadding) && is_nil_default(dodgePadding) && intervalPadding >= 0) { + if (!_4.isNil(intervalPadding) && _4.isNil(dodgePadding) && intervalPadding >= 0) { var offset = this.getIntervalOnlyOffset(len5, idx); position2 = pre + offset; - } else if (!is_nil_default(dodgePadding) && is_nil_default(intervalPadding) && dodgePadding >= 0) { + } else if (!_4.isNil(dodgePadding) && _4.isNil(intervalPadding) && dodgePadding >= 0) { var offset = this.getDodgeOnlyOffset(len5, idx); position2 = pre + offset; - } else if (!is_nil_default(intervalPadding) && !is_nil_default(dodgePadding) && intervalPadding >= 0 && dodgePadding >= 0) { + } else if (!_4.isNil(intervalPadding) && !_4.isNil(dodgePadding) && intervalPadding >= 0 && dodgePadding >= 0) { var offset = this.getIntervalAndDodgeOffset(len5, idx); position2 = pre + offset; } else { @@ -41165,12 +47169,12 @@ var Dodge = function(_super) { var normalizedIntervalPadding = intervalPadding / xDimensionLegenth; var normalizedDodgePadding = (1 - (groupNum - 1) * normalizedIntervalPadding) / groupNum * dodgeRatio / (len5 - 1); var geomWidth = ((1 - normalizedIntervalPadding * (groupNum - 1)) / groupNum - normalizedDodgePadding * (len5 - 1)) / len5; - geomWidth = !is_nil_default(columnWidthRatio) ? 1 / groupNum / len5 * columnWidthRatio : geomWidth; - if (!is_nil_default(maxColumnWidth)) { + geomWidth = !_4.isNil(columnWidthRatio) ? 1 / groupNum / len5 * columnWidthRatio : geomWidth; + if (!_4.isNil(maxColumnWidth)) { var normalizedMaxWidht = maxColumnWidth / xDimensionLegenth; geomWidth = Math.min(geomWidth, normalizedMaxWidht); } - if (!is_nil_default(minColumnWidth)) { + if (!_4.isNil(minColumnWidth)) { var normalizedMinWidht = minColumnWidth / xDimensionLegenth; geomWidth = Math.max(geomWidth, normalizedMinWidht); } @@ -41185,11 +47189,11 @@ var Dodge = function(_super) { var normalizedIntervalPadding = 1 * marginRatio / (groupNum - 1); var geomWidth = ((1 - normalizedIntervalPadding * (groupNum - 1)) / groupNum - normalizedDodgePadding * (len5 - 1)) / len5; geomWidth = columnWidthRatio ? 1 / groupNum / len5 * columnWidthRatio : geomWidth; - if (!is_nil_default(maxColumnWidth)) { + if (!_4.isNil(maxColumnWidth)) { var normalizedMaxWidht = maxColumnWidth / xDimensionLegenth; geomWidth = Math.min(geomWidth, normalizedMaxWidht); } - if (!is_nil_default(minColumnWidth)) { + if (!_4.isNil(minColumnWidth)) { var normalizedMinWidht = minColumnWidth / xDimensionLegenth; geomWidth = Math.max(geomWidth, normalizedMinWidht); } @@ -41209,32 +47213,33 @@ var Dodge = function(_super) { Dodge2.prototype.getDistribution = function(dim) { var groupedDataArray = this.adjustDataArray; var cacheMap = this.cacheMap; - var map6 = cacheMap[dim]; - if (!map6) { - map6 = {}; - each_default(groupedDataArray, function(data3, index2) { - var values2 = values_of_key_default(data3, dim); - if (!values2.length) { - values2.push(0); + var map23 = cacheMap[dim]; + if (!map23) { + map23 = {}; + _4.each(groupedDataArray, function(data3, index2) { + var values4 = _4.valuesOfKey(data3, dim); + if (!values4.length) { + values4.push(0); } - each_default(values2, function(val) { - if (!map6[val]) { - map6[val] = []; + _4.each(values4, function(val) { + if (!map23[val]) { + map23[val] = []; } - map6[val].push(index2); + map23[val].push(index2); }); }); - cacheMap[dim] = map6; + cacheMap[dim] = map23; } - return map6; + return map23; }; return Dodge2; }(adjust_default); var dodge_default = Dodge; // node_modules/@antv/adjust/esm/adjusts/jitter.js -function randomNumber(min7, max8) { - return (max8 - min7) * Math.random() + min7; +var _5 = __toModule(require_lib()); +function randomNumber(min13, max15) { + return (max15 - min13) * Math.random() + min13; } var Jitter = function(_super) { __extends2(Jitter2, _super); @@ -41242,16 +47247,16 @@ var Jitter = function(_super) { return _super !== null && _super.apply(this, arguments) || this; } Jitter2.prototype.process = function(groupDataArray) { - var groupedDataArray = clone_default(groupDataArray); - var mergeData = flatten_default(groupedDataArray); + var groupedDataArray = _5.clone(groupDataArray); + var mergeData = _5.flatten(groupedDataArray); this.adjustData(groupedDataArray, mergeData); return groupedDataArray; }; - Jitter2.prototype.adjustDim = function(dim, values2, dataArray) { + Jitter2.prototype.adjustDim = function(dim, values4, dataArray) { var _this = this; var groupDataArray = this.groupData(dataArray, dim); - return each_default(groupDataArray, function(data3, dimValue) { - return _this.adjustGroup(data3, dim, parseFloat(dimValue), values2); + return _5.each(groupDataArray, function(data3, dimValue) { + return _this.adjustGroup(data3, dim, parseFloat(dimValue), values4); }); }; Jitter2.prototype.getAdjustOffset = function(range) { @@ -41259,28 +47264,29 @@ var Jitter = function(_super) { var margin = (next - pre) * GAP; return randomNumber(pre + margin, next - margin); }; - Jitter2.prototype.adjustGroup = function(group2, dim, dimValue, values2) { + Jitter2.prototype.adjustGroup = function(group3, dim, dimValue, values4) { var _this = this; - var range = this.getAdjustRange(dim, dimValue, values2); - each_default(group2, function(data3) { + var range = this.getAdjustRange(dim, dimValue, values4); + _5.each(group3, function(data3) { data3[dim] = _this.getAdjustOffset(range); }); - return group2; + return group3; }; return Jitter2; }(adjust_default); var jitter_default = Jitter; // node_modules/@antv/adjust/esm/adjusts/stack.js -var Cache = cache_default; +var _6 = __toModule(require_lib()); +var Cache2 = _6.Cache; var Stack = function(_super) { __extends2(Stack3, _super); function Stack3(cfg) { var _this = _super.call(this, cfg) || this; - var _a6 = cfg.adjustNames, adjustNames = _a6 === void 0 ? ["y"] : _a6, _b = cfg.height, height = _b === void 0 ? NaN : _b, _c = cfg.size, size2 = _c === void 0 ? 10 : _c, _d = cfg.reverseOrder, reverseOrder = _d === void 0 ? false : _d; + var _a6 = cfg.adjustNames, adjustNames = _a6 === void 0 ? ["y"] : _a6, _b = cfg.height, height = _b === void 0 ? NaN : _b, _c = cfg.size, size14 = _c === void 0 ? 10 : _c, _d = cfg.reverseOrder, reverseOrder = _d === void 0 ? false : _d; _this.adjustNames = adjustNames; _this.height = height; - _this.size = size2; + _this.size = size14; _this.reverseOrder = reverseOrder; return _this; } @@ -41295,16 +47301,16 @@ var Stack = function(_super) { Stack3.prototype.processStack = function(groupDataArray) { var _a6 = this, xField = _a6.xField, yField = _a6.yField, reverseOrder = _a6.reverseOrder; var groupedDataArray = reverseOrder ? this.reverse(groupDataArray) : groupDataArray; - var positive = new Cache(); - var negative = new Cache(); + var positive = new Cache2(); + var negative = new Cache2(); return groupedDataArray.map(function(dataArray) { return dataArray.map(function(data3) { var _a7; - var x6 = get_default(data3, xField, 0); - var y5 = get_default(data3, [yField]); + var x6 = _6.get(data3, xField, 0); + var y5 = _6.get(data3, [yField]); var xKey = x6.toString(); - y5 = is_array_default(y5) ? y5[1] : y5; - if (!is_nil_default(y5)) { + y5 = _6.isArray(y5) ? y5[1] : y5; + if (!_6.isNil(y5)) { var cache3 = y5 >= 0 ? positive : negative; if (!cache3.has(xKey)) { cache3.set(xKey, 0); @@ -41323,13 +47329,13 @@ var Stack = function(_super) { var _a6 = this, xField = _a6.xField, height = _a6.height, reverseOrder = _a6.reverseOrder; var yField = "y"; var groupedDataArray = reverseOrder ? this.reverse(groupDataArray) : groupDataArray; - var cache3 = new Cache(); + var cache3 = new Cache2(); return groupedDataArray.map(function(dataArray) { return dataArray.map(function(data3) { var _a7; - var size2 = _this.size; + var size14 = _this.size; var xValue = data3[xField]; - var stackHeight = size2 * 2 / height; + var stackHeight = size14 * 2 / height; if (!cache3.has(xValue)) { cache3.set(xValue, stackHeight / 2); } @@ -41344,30 +47350,31 @@ var Stack = function(_super) { var stack_default = Stack; // node_modules/@antv/adjust/esm/adjusts/symmetric.js +var _7 = __toModule(require_lib()); var Symmetric = function(_super) { __extends2(Symmetric2, _super); function Symmetric2() { return _super !== null && _super.apply(this, arguments) || this; } Symmetric2.prototype.process = function(groupDataArray) { - var mergeData = flatten_default(groupDataArray); + var mergeData = _7.flatten(groupDataArray); var _a6 = this, xField = _a6.xField, yField = _a6.yField; var cache3 = this.getXValuesMaxMap(mergeData); - var max8 = Math.max.apply(Math, Object.keys(cache3).map(function(key) { + var max15 = Math.max.apply(Math, Object.keys(cache3).map(function(key) { return cache3[key]; })); - return map_default(groupDataArray, function(dataArray) { - return map_default(dataArray, function(data3) { + return _7.map(groupDataArray, function(dataArray) { + return _7.map(dataArray, function(data3) { var _a7, _b; var yValue = data3[yField]; var xValue = data3[xField]; - if (is_array_default(yValue)) { - var off_1 = (max8 - cache3[xValue]) / 2; - return __assign2(__assign2({}, data3), (_a7 = {}, _a7[yField] = map_default(yValue, function(y5) { + if (_7.isArray(yValue)) { + var off_1 = (max15 - cache3[xValue]) / 2; + return __assign2(__assign2({}, data3), (_a7 = {}, _a7[yField] = _7.map(yValue, function(y5) { return off_1 + y5; }), _a7)); } - var offset = (max8 - yValue) / 2; + var offset = (max15 - yValue) / 2; return __assign2(__assign2({}, data3), (_b = {}, _b[yField] = [offset, yValue + offset], _b)); }); }); @@ -41375,18 +47382,18 @@ var Symmetric = function(_super) { Symmetric2.prototype.getXValuesMaxMap = function(mergeData) { var _this = this; var _a6 = this, xField = _a6.xField, yField = _a6.yField; - var groupDataArray = group_by_default(mergeData, function(data3) { + var groupDataArray = _7.groupBy(mergeData, function(data3) { return data3[xField]; }); - return map_values_default(groupDataArray, function(dataArray) { + return _7.mapValues(groupDataArray, function(dataArray) { return _this.getDimMaxValue(dataArray, yField); }); }; Symmetric2.prototype.getDimMaxValue = function(mergeData, dim) { - var dimValues = map_default(mergeData, function(data3) { - return get_default(data3, dim, []); + var dimValues = _7.map(mergeData, function(data3) { + return _7.get(data3, dim, []); }); - var flattenValues = flatten_default(dimValues); + var flattenValues = _7.flatten(dimValues); return Math.max.apply(Math, flattenValues); }; return Symmetric2; @@ -41400,8 +47407,9 @@ registerAdjust("Stack", stack_default); registerAdjust("Symmetric", symmetric_default); // node_modules/@antv/attr/esm/attributes/base.js +var import_util31 = __toModule(require_lib()); var toScaleString = function(scale12, value2) { - if (is_string_default(value2)) { + if ((0, import_util31.isString)(value2)) { return value2; } return scale12.invert(scale12.scale(value2)); @@ -41423,10 +47431,10 @@ var Attribute = function() { for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } - var values2 = params.map(function(param, idx) { + var values4 = params.map(function(param, idx) { return _this._toOriginParam(param, _this.scales[idx]); }); - return this.callback.apply(this, values2); + return this.callback.apply(this, values4); }; Attribute2.prototype.getLinearValue = function(percent2) { var steps = this.values.length - 1; @@ -41470,10 +47478,10 @@ var Attribute = function() { }; Attribute2.prototype._parseCfg = function(cfg) { var _this = this; - var _a6 = cfg.type, type2 = _a6 === void 0 ? "base" : _a6, _b = cfg.names, names = _b === void 0 ? [] : _b, _c = cfg.scales, scales = _c === void 0 ? [] : _c, _d = cfg.values, values2 = _d === void 0 ? [] : _d, callback = cfg.callback; + var _a6 = cfg.type, type2 = _a6 === void 0 ? "base" : _a6, _b = cfg.names, names = _b === void 0 ? [] : _b, _c = cfg.scales, scales = _c === void 0 ? [] : _c, _d = cfg.values, values4 = _d === void 0 ? [] : _d, callback = cfg.callback; this.type = type2; this.scales = scales; - this.values = values2; + this.values = values4; this.names = names; this.callback = function() { var params = []; @@ -41482,7 +47490,7 @@ var Attribute = function() { } if (callback) { var ret = callback.apply(void 0, params); - if (!is_nil_default(ret)) { + if (!(0, import_util31.isNil)(ret)) { return [ret]; } } @@ -41498,7 +47506,7 @@ var Attribute = function() { return this.getLinearValue(percent2); }; Attribute2.prototype._toOriginParam = function(param, scale12) { - return !scale12.isLinear ? is_array_default(param) ? param.map(function(p4) { + return !scale12.isLinear ? (0, import_util31.isArray)(param) ? param.map(function(p4) { return toScaleString(scale12, p4); }) : toScaleString(scale12, param) : param; }; @@ -41507,7 +47515,7 @@ var Attribute = function() { var base_default3 = Attribute; // node_modules/@antv/attr/node_modules/tslib/modules/index.js -var import_tslib15 = __toModule(require_tslib3()); +var import_tslib14 = __toModule(require_tslib3()); var { __extends: __extends3, __assign: __assign3, @@ -41532,9 +47540,10 @@ var { __importDefault: __importDefault3, __classPrivateFieldGet: __classPrivateFieldGet3, __classPrivateFieldSet: __classPrivateFieldSet3 -} = import_tslib15.default; +} = import_tslib14.default; // node_modules/@antv/color-util/esm/index.js +var import_util32 = __toModule(require_lib()); var RGB_REG = /rgba?\(([\s.,0-9]+)\)/; var regexLG = /^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i; var regexRG = /^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i; @@ -41597,8 +47606,8 @@ var toRGB = function(color4) { return rst; }; var gradient = function(colors) { - var colorArray = is_string_default(colors) ? colors.split("-") : colors; - var points = map_default(colorArray, function(color4) { + var colorArray = (0, import_util32.isString)(colors) ? colors.split("-") : colors; + var points = (0, import_util32.map)(colorArray, function(color4) { return rgb2arr(color4.indexOf("#") === -1 ? toRGB(color4) : color4); }); return function(percent2) { @@ -41620,7 +47629,7 @@ var toCSSGradient = function(gradientColor) { steps = arr[4]; } var colorStops_1 = steps.match(regexColorStop); - each_default(colorStops_1, function(item, index2) { + (0, import_util32.each)(colorStops_1, function(item, index2) { var itemArr = item.split(":"); cssColor_1 += itemArr[1] + " " + itemArr[0] * 100 + "%"; if (index2 !== colorStops_1.length - 1) { @@ -41635,18 +47644,19 @@ var toCSSGradient = function(gradientColor) { var esm_default2 = { rgb2arr, gradient, - toRGB: memoize_default(toRGB), + toRGB: (0, import_util32.memoize)(toRGB), toCSSGradient }; // node_modules/@antv/attr/esm/attributes/color.js +var import_util33 = __toModule(require_lib()); var Color2 = function(_super) { __extends3(Color3, _super); function Color3(cfg) { var _this = _super.call(this, cfg) || this; _this.type = "color"; _this.names = ["color"]; - if (is_string_default(_this.values)) { + if ((0, import_util33.isString)(_this.values)) { _this.linear = true; } _this.gradient = esm_default2.gradient(_this.values); @@ -41673,6 +47683,7 @@ var Opacity = function(_super) { var opacity_default = Opacity; // node_modules/@antv/attr/esm/attributes/position.js +var import_util34 = __toModule(require_lib()); var Position = function(_super) { __extends3(Position2, _super); function Position2(cfg) { @@ -41683,14 +47694,14 @@ var Position = function(_super) { } Position2.prototype.mapping = function(x6, y5) { var _a6 = this.scales, scaleX = _a6[0], scaleY = _a6[1]; - if (is_nil_default(x6) || is_nil_default(y5)) { + if ((0, import_util34.isNil)(x6) || (0, import_util34.isNil)(y5)) { return []; } return [ - is_array_default(x6) ? x6.map(function(xi) { + (0, import_util34.isArray)(x6) ? x6.map(function(xi) { return scaleX.scale(xi); }) : scaleX.scale(x6), - is_array_default(y5) ? y5.map(function(yi) { + (0, import_util34.isArray)(y5) ? y5.map(function(yi) { return scaleY.scale(yi); }) : scaleY.scale(y5) ]; @@ -41729,6 +47740,9 @@ var Size = function(_super) { }(base_default3); var size_default = Size; +// node_modules/@antv/scale/esm/base.js +var import_util35 = __toModule(require_lib()); + // node_modules/@antv/scale/esm/tick-method/register.js var methodCache = {}; function getTickMethod(key) { @@ -41757,7 +47771,7 @@ var Scale = function() { return v3; }; Scale2.prototype.change = function(cfg) { - mix(this.__cfg__, cfg); + (0, import_util35.assign)(this.__cfg__, cfg); this.init(); }; Scale2.prototype.clone = function() { @@ -41765,8 +47779,8 @@ var Scale = function() { }; Scale2.prototype.getTicks = function() { var _this = this; - return map_default(this.ticks, function(tick, idx) { - if (is_object_default(tick)) { + return (0, import_util35.map)(this.ticks, function(tick, idx) { + if ((0, import_util35.isObject)(tick)) { return tick; } return { @@ -41779,7 +47793,7 @@ var Scale = function() { Scale2.prototype.getText = function(value2, key) { var formatter = this.formatter; var res = formatter ? formatter(value2, key) : value2; - if (is_nil_default(res) || !is_function_default(res.toString)) { + if ((0, import_util35.isNil)(res) || !(0, import_util35.isFunction)(res.toString)) { return ""; } return res.toString(); @@ -41788,9 +47802,9 @@ var Scale = function() { return this.__cfg__[key]; }; Scale2.prototype.init = function() { - mix(this, this.__cfg__); + (0, import_util35.assign)(this, this.__cfg__); this.setDomain(); - if (is_empty_default(this.getConfig("ticks"))) { + if ((0, import_util35.isEmpty)(this.getConfig("ticks"))) { this.ticks = this.calculateTicks(); } }; @@ -41801,13 +47815,13 @@ var Scale = function() { Scale2.prototype.calculateTicks = function() { var tickMethod = this.tickMethod; var ticks = []; - if (is_string_default(tickMethod)) { + if ((0, import_util35.isString)(tickMethod)) { var method = getTickMethod(tickMethod); if (!method) { throw new Error("There is no method to to calculate ticks!"); } ticks = method(this); - } else if (is_function_default(tickMethod)) { + } else if ((0, import_util35.isFunction)(tickMethod)) { ticks = tickMethod(this); } return ticks; @@ -41818,20 +47832,21 @@ var Scale = function() { Scale2.prototype.rangeMax = function() { return this.range[1]; }; - Scale2.prototype.calcPercent = function(value2, min7, max8) { - if (is_number_default(value2)) { - return (value2 - min7) / (max8 - min7); + Scale2.prototype.calcPercent = function(value2, min13, max15) { + if ((0, import_util35.isNumber)(value2)) { + return (value2 - min13) / (max15 - min13); } return NaN; }; - Scale2.prototype.calcValue = function(percent2, min7, max8) { - return min7 + percent2 * (max8 - min7); + Scale2.prototype.calcValue = function(percent2, min13, max15) { + return min13 + percent2 * (max15 - min13); }; return Scale2; }(); var base_default4 = Scale; // node_modules/@antv/scale/esm/category/base.js +var import_util36 = __toModule(require_lib()); var Category = function(_super) { __extends(Category3, _super); function Category3() { @@ -41852,7 +47867,7 @@ var Category = function(_super) { this.buildIndexMap(); var idx = this.translateIndexMap.get(value2); if (idx === void 0) { - idx = is_number_default(value2) ? value2 : NaN; + idx = (0, import_util36.isNumber)(value2) ? value2 : NaN; } return idx; }; @@ -41876,7 +47891,7 @@ var Category = function(_super) { args[_i - 1] = arguments[_i]; } var v3 = value2; - if (is_number_default(value2) && !this.values.includes(value2)) { + if ((0, import_util36.isNumber)(value2) && !this.values.includes(value2)) { v3 = this.values[v3]; } return _super.prototype.getText.apply(this, __spreadArray([v3], args, false)); @@ -41885,12 +47900,12 @@ var Category = function(_super) { this.tickMethod = "cat"; }; Category3.prototype.setDomain = function() { - if (is_nil_default(this.getConfig("min"))) { + if ((0, import_util36.isNil)(this.getConfig("min"))) { this.min = 0; } - if (is_nil_default(this.getConfig("max"))) { - var size2 = this.values.length; - this.max = size2 > 1 ? size2 - 1 : size2; + if ((0, import_util36.isNil)(this.getConfig("max"))) { + var size14 = this.values.length; + this.max = size14 > 1 ? size14 - 1 : size14; } if (this.translateIndexMap) { this.translateIndexMap = void 0; @@ -41900,10 +47915,16 @@ var Category = function(_super) { }(base_default4); var base_default5 = Category; +// node_modules/@antv/scale/esm/category/time.js +var import_util39 = __toModule(require_lib()); + +// node_modules/@antv/scale/esm/util/time.js +var import_util38 = __toModule(require_lib()); + // node_modules/fecha/lib/fecha.js var fecha_exports = {}; __export(fecha_exports, { - assign: () => assign, + assign: () => assign2, default: () => fecha_default, defaultI18n: () => defaultI18n, format: () => format, @@ -41937,7 +47958,7 @@ var monthUpdate = function(arrName) { return null; }; }; -function assign(origObj) { +function assign2(origObj) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; @@ -41985,9 +48006,9 @@ var defaultI18n = { return dayOfMonth + ["th", "st", "nd", "rd"][dayOfMonth % 10 > 3 ? 0 : (dayOfMonth - dayOfMonth % 10 !== 10 ? 1 : 0) * dayOfMonth % 10]; } }; -var globalI18n = assign({}, defaultI18n); +var globalI18n = assign2({}, defaultI18n); var setGlobalDateI18n = function(i18n) { - return globalI18n = assign(globalI18n, i18n); + return globalI18n = assign2(globalI18n, i18n); }; var regexEscape = function(str8) { return str8.replace(/[|\\{()[^$+*?.-]/g, "\\$&"); @@ -42177,7 +48198,7 @@ var globalMasks = { longTime: "HH:mm:ss.SSS" }; var setGlobalDateMasks = function(masks) { - return assign(globalMasks, masks); + return assign2(globalMasks, masks); }; var format = function(dateObj, mask, i18n) { if (mask === void 0) { @@ -42198,7 +48219,7 @@ var format = function(dateObj, mask, i18n) { literals.push($1); return "@@@"; }); - var combinedI18nSettings = assign(assign({}, globalI18n), i18n); + var combinedI18nSettings = assign2(assign2({}, globalI18n), i18n); mask = mask.replace(token, function($0) { return formatFlags[$0](dateObj, combinedI18nSettings); }); @@ -42262,7 +48283,7 @@ function parse(dateStr, format2, i18n) { if (!matches) { return null; } - var combinedI18nSettings = assign(assign({}, globalI18n), i18n); + var combinedI18nSettings = assign2(assign2({}, globalI18n), i18n); for (var i4 = 1; i4 < matches.length; i4++) { var _a6 = parseInfo[i4 - 1], field6 = _a6[0], parser = _a6[2]; var value2 = parser ? parser(matches[i4], combinedI18nSettings) : +matches[i4]; @@ -42304,10 +48325,11 @@ var fecha = { var fecha_default = fecha; // node_modules/@antv/scale/esm/util/bisector.js +var import_util37 = __toModule(require_lib()); function bisector_default(getter) { return function(a4, x6, _lo, _hi) { - var lo = is_nil_default(_lo) ? 0 : _lo; - var hi = is_nil_default(_hi) ? a4.length : _hi; + var lo = (0, import_util37.isNil)(_lo) ? 0 : _lo; + var hi = (0, import_util37.isNil)(_hi) ? a4.length : _hi; while (lo < hi) { var mid2 = lo + hi >>> 1; if (getter(a4[mid2]) > x6) { @@ -42327,14 +48349,14 @@ function timeFormat(time2, mask) { return method(time2, mask); } function toTimeStamp(value2) { - if (is_string_default(value2)) { + if ((0, import_util38.isString)(value2)) { if (value2.indexOf("T") > 0) { value2 = new Date(value2).getTime(); } else { value2 = new Date(value2.replace(/-/gi, "/")).getTime(); } } - if (is_date_default(value2)) { + if ((0, import_util38.isDate)(value2)) { value2 = value2.getTime(); } return value2; @@ -42363,8 +48385,8 @@ var intervals = [ ["YYYY-MM", MONTH * 6], ["YYYY", DAY * 380] ]; -function getTickInterval(min7, max8, tickCount) { - var target = (max8 - min7) / tickCount; +function getTickInterval(min13, max15, tickCount) { + var target = (max15 - min13) / tickCount; var idx = bisector_default(function(o3) { return o3[1]; })(intervals, target) - 1; @@ -42372,7 +48394,7 @@ function getTickInterval(min7, max8, tickCount) { if (idx < 0) { interval3 = intervals[0]; } else if (idx >= intervals.length) { - interval3 = last(intervals); + interval3 = (0, import_util38.last)(intervals); } return interval3; } @@ -42389,7 +48411,7 @@ var TimeCat = function(_super) { value2 = toTimeStamp(value2); var index2 = this.values.indexOf(value2); if (index2 === -1) { - if (is_number_default(value2) && value2 < this.values.length) { + if ((0, import_util39.isNumber)(value2) && value2 < this.values.length) { index2 = value2; } else { index2 = NaN; @@ -42413,11 +48435,11 @@ var TimeCat = function(_super) { this.tickCount = 7; }; TimeCat2.prototype.setDomain = function() { - var values2 = this.values; - each_default(values2, function(v3, i4) { - values2[i4] = toTimeStamp(v3); + var values4 = this.values; + (0, import_util39.each)(values4, function(v3, i4) { + values4[i4] = toTimeStamp(v3); }); - values2.sort(function(v1, v22) { + values4.sort(function(v1, v22) { return v1 - v22; }); _super.prototype.setDomain.call(this); @@ -42427,6 +48449,7 @@ var TimeCat = function(_super) { var time_default = TimeCat; // node_modules/@antv/scale/esm/continuous/base.js +var import_util40 = __toModule(require_lib()); var Continuous = function(_super) { __extends(Continuous2, _super); function Continuous2() { @@ -42435,14 +48458,14 @@ var Continuous = function(_super) { return _this; } Continuous2.prototype.scale = function(value2) { - if (is_nil_default(value2)) { + if ((0, import_util40.isNil)(value2)) { return NaN; } var rangeMin = this.rangeMin(); var rangeMax = this.rangeMax(); - var max8 = this.max; - var min7 = this.min; - if (max8 === min7) { + var max15 = this.max; + var min13 = this.min; + if (max15 === min13) { return rangeMin; } var percent2 = this.getScalePercent(value2); @@ -42451,48 +48474,48 @@ var Continuous = function(_super) { Continuous2.prototype.init = function() { _super.prototype.init.call(this); var ticks = this.ticks; - var firstTick = head(ticks); - var lastTick = last(ticks); + var firstTick = (0, import_util40.head)(ticks); + var lastTick = (0, import_util40.last)(ticks); if (firstTick < this.min) { this.min = firstTick; } if (lastTick > this.max) { this.max = lastTick; } - if (!is_nil_default(this.minLimit)) { + if (!(0, import_util40.isNil)(this.minLimit)) { this.min = firstTick; } - if (!is_nil_default(this.maxLimit)) { + if (!(0, import_util40.isNil)(this.maxLimit)) { this.max = lastTick; } }; Continuous2.prototype.setDomain = function() { - var _a6 = get_range_default(this.values), min7 = _a6.min, max8 = _a6.max; - if (is_nil_default(this.min)) { - this.min = min7; + var _a6 = (0, import_util40.getRange)(this.values), min13 = _a6.min, max15 = _a6.max; + if ((0, import_util40.isNil)(this.min)) { + this.min = min13; } - if (is_nil_default(this.max)) { - this.max = max8; + if ((0, import_util40.isNil)(this.max)) { + this.max = max15; } if (this.min > this.max) { - this.min = min7; - this.max = max8; + this.min = min13; + this.max = max15; } }; Continuous2.prototype.calculateTicks = function() { var _this = this; var ticks = _super.prototype.calculateTicks.call(this); if (!this.nice) { - ticks = filter_default(ticks, function(tick) { + ticks = (0, import_util40.filter)(ticks, function(tick) { return tick >= _this.min && tick <= _this.max; }); } return ticks; }; Continuous2.prototype.getScalePercent = function(value2) { - var max8 = this.max; - var min7 = this.min; - return (value2 - min7) / (max8 - min7); + var max15 = this.max; + var min13 = this.min; + return (value2 - min13) / (max15 - min13); }; Continuous2.prototype.getInvertPercent = function(value2) { return (value2 - this.rangeMin()) / (this.rangeMax() - this.rangeMin()); @@ -42523,6 +48546,7 @@ var Linear = function(_super) { var linear_default = Linear; // node_modules/@antv/scale/esm/util/math.js +var import_util41 = __toModule(require_lib()); function calBase(a4, b10) { var e4 = Math.E; var value2; @@ -42539,18 +48563,18 @@ function log(a4, b10) { } return Math.log(b10) / Math.log(a4); } -function getLogPositiveMin(values2, base, max8) { - if (is_nil_default(max8)) { - max8 = Math.max.apply(null, values2); +function getLogPositiveMin(values4, base, max15) { + if ((0, import_util41.isNil)(max15)) { + max15 = Math.max.apply(null, values4); } - var positiveMin = max8; - each_default(values2, function(value2) { + var positiveMin = max15; + (0, import_util41.each)(values4, function(value2) { if (value2 > 0 && value2 < positiveMin) { positiveMin = value2; } }); - if (positiveMin === max8) { - positiveMin = max8 / base; + if (positiveMin === max15) { + positiveMin = max15 / base; } if (positiveMin > 1) { positiveMin = 1; @@ -42560,55 +48584,55 @@ function getLogPositiveMin(values2, base, max8) { // node_modules/@antv/scale/esm/continuous/log.js var Log = function(_super) { - __extends(Log2, _super); - function Log2() { + __extends(Log3, _super); + function Log3() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = "log"; return _this; } - Log2.prototype.invert = function(value2) { + Log3.prototype.invert = function(value2) { var base = this.base; - var max8 = log(base, this.max); + var max15 = log(base, this.max); var rangeMin = this.rangeMin(); var range = this.rangeMax() - rangeMin; - var min7; + var min13; var positiveMin = this.positiveMin; if (positiveMin) { if (value2 === 0) { return 0; } - min7 = log(base, positiveMin / base); - var appendPercent = 1 / (max8 - min7) * range; + min13 = log(base, positiveMin / base); + var appendPercent = 1 / (max15 - min13) * range; if (value2 < appendPercent) { return value2 / appendPercent * positiveMin; } } else { - min7 = log(base, this.min); + min13 = log(base, this.min); } var percent2 = (value2 - rangeMin) / range; - var tmp = percent2 * (max8 - min7) + min7; + var tmp = percent2 * (max15 - min13) + min13; return Math.pow(base, tmp); }; - Log2.prototype.initCfg = function() { + Log3.prototype.initCfg = function() { this.tickMethod = "log"; this.base = 10; this.tickCount = 6; this.nice = true; }; - Log2.prototype.setDomain = function() { + Log3.prototype.setDomain = function() { _super.prototype.setDomain.call(this); - var min7 = this.min; - if (min7 < 0) { + var min13 = this.min; + if (min13 < 0) { throw new Error("When you use log scale, the minimum value must be greater than zero!"); } - if (min7 === 0) { + if (min13 === 0) { this.positiveMin = getLogPositiveMin(this.values, this.base, this.max); } }; - Log2.prototype.getScalePercent = function(value2) { - var max8 = this.max; - var min7 = this.min; - if (max8 === min7) { + Log3.prototype.getScalePercent = function(value2) { + var max15 = this.max; + var min13 = this.min; + if (max15 === min13) { return 0; } if (value2 <= 0) { @@ -42617,17 +48641,17 @@ var Log = function(_super) { var base = this.base; var positiveMin = this.positiveMin; if (positiveMin) { - min7 = positiveMin * 1 / base; + min13 = positiveMin * 1 / base; } var percent2; if (value2 < positiveMin) { - percent2 = value2 / positiveMin / (log(base, max8) - log(base, min7)); + percent2 = value2 / positiveMin / (log(base, max15) - log(base, min13)); } else { - percent2 = (log(base, value2) - log(base, min7)) / (log(base, max8) - log(base, min7)); + percent2 = (log(base, value2) - log(base, min13)) / (log(base, max15) - log(base, min13)); } return percent2; }; - return Log2; + return Log3; }(base_default6); var log_default = Log; @@ -42642,9 +48666,9 @@ var Pow = function(_super) { Pow2.prototype.invert = function(value2) { var percent2 = this.getInvertPercent(value2); var exponent2 = this.exponent; - var max8 = calBase(exponent2, this.max); - var min7 = calBase(exponent2, this.min); - var tmp = percent2 * (max8 - min7) + min7; + var max15 = calBase(exponent2, this.max); + var min13 = calBase(exponent2, this.min); + var tmp = percent2 * (max15 - min13) + min13; var factor = tmp >= 0 ? 1 : -1; return Math.pow(tmp, exponent2) * factor; }; @@ -42655,13 +48679,13 @@ var Pow = function(_super) { this.nice = true; }; Pow2.prototype.getScalePercent = function(value2) { - var max8 = this.max; - var min7 = this.min; - if (max8 === min7) { + var max15 = this.max; + var min13 = this.min; + if (max15 === min13) { return 0; } var exponent2 = this.exponent; - var percent2 = (calBase(exponent2, value2) - calBase(exponent2, min7)) / (calBase(exponent2, max8) - calBase(exponent2, min7)); + var percent2 = (calBase(exponent2, value2) - calBase(exponent2, min13)) / (calBase(exponent2, max15) - calBase(exponent2, min13)); return percent2; }; return Pow2; @@ -42669,6 +48693,7 @@ var Pow = function(_super) { var pow_default = Pow; // node_modules/@antv/scale/esm/continuous/time.js +var import_util42 = __toModule(require_lib()); var Time = function(_super) { __extends(Time2, _super); function Time2() { @@ -42683,7 +48708,7 @@ var Time = function(_super) { }; Time2.prototype.scale = function(value2) { var v3 = value2; - if (is_string_default(v3) || is_date_default(v3)) { + if ((0, import_util42.isString)(v3) || (0, import_util42.isDate)(v3)) { v3 = this.translate(v3); } return _super.prototype.scale.call(this, v3); @@ -42698,21 +48723,21 @@ var Time = function(_super) { this.nice = false; }; Time2.prototype.setDomain = function() { - var values2 = this.values; + var values4 = this.values; var minConfig = this.getConfig("min"); var maxConfig = this.getConfig("max"); - if (!is_nil_default(minConfig) || !is_number_default(minConfig)) { + if (!(0, import_util42.isNil)(minConfig) || !(0, import_util42.isNumber)(minConfig)) { this.min = this.translate(this.min); } - if (!is_nil_default(maxConfig) || !is_number_default(maxConfig)) { + if (!(0, import_util42.isNil)(maxConfig) || !(0, import_util42.isNumber)(maxConfig)) { this.max = this.translate(this.max); } - if (values2 && values2.length) { + if (values4 && values4.length) { var timeStamps_1 = []; var min_1 = Infinity; var secondMin_1 = min_1; var max_1 = 0; - each_default(values2, function(v3) { + (0, import_util42.each)(values4, function(v3) { var timeStamp = toTimeStamp(v3); if (isNaN(timeStamp)) { throw new TypeError("Invalid Time: " + v3 + " in time scale!"); @@ -42728,13 +48753,13 @@ var Time = function(_super) { } timeStamps_1.push(timeStamp); }); - if (values2.length > 1) { + if (values4.length > 1) { this.minTickInterval = secondMin_1 - min_1; } - if (is_nil_default(minConfig)) { + if ((0, import_util42.isNil)(minConfig)) { this.min = min_1; } - if (is_nil_default(maxConfig)) { + if ((0, import_util42.isNil)(maxConfig)) { this.max = max_1; } } @@ -42744,6 +48769,7 @@ var Time = function(_super) { var time_default2 = Time; // node_modules/@antv/scale/esm/continuous/quantize.js +var import_util43 = __toModule(require_lib()); var Quantize = function(_super) { __extends(Quantize2, _super); function Quantize2() { @@ -42757,10 +48783,10 @@ var Quantize = function(_super) { var percent2 = this.getInvertPercent(value2); var minIndex = Math.floor(percent2 * (length5 - 1)); if (minIndex >= length5 - 1) { - return last(ticks); + return (0, import_util43.last)(ticks); } if (minIndex < 0) { - return head(ticks); + return (0, import_util43.head)(ticks); } var minTick = ticks[minIndex]; var nextTick = ticks[minIndex + 1]; @@ -42776,10 +48802,10 @@ var Quantize = function(_super) { Quantize2.prototype.calculateTicks = function() { var ticks = _super.prototype.calculateTicks.call(this); if (!this.nice) { - if (last(ticks) !== this.max) { + if ((0, import_util43.last)(ticks) !== this.max) { ticks.push(this.max); } - if (head(ticks) !== this.min) { + if ((0, import_util43.head)(ticks) !== this.min) { ticks.unshift(this.min); } } @@ -42787,14 +48813,14 @@ var Quantize = function(_super) { }; Quantize2.prototype.getScalePercent = function(value2) { var ticks = this.ticks; - if (value2 < head(ticks)) { + if (value2 < (0, import_util43.head)(ticks)) { return 0; } - if (value2 > last(ticks)) { + if (value2 > (0, import_util43.last)(ticks)) { return 1; } var minIndex = 0; - each_default(ticks, function(tick, index2) { + (0, import_util43.each)(ticks, function(tick, index2) { if (value2 >= tick) { minIndex = index2; } else { @@ -42825,18 +48851,19 @@ var Quantile = function(_super) { var quantile_default = Quantile; // node_modules/@antv/scale/esm/factory.js -var map4 = {}; +var map5 = {}; function getClass(key) { - return map4[key]; + return map5[key]; } function registerClass(key, cls) { if (getClass(key)) { throw new Error("type '" + key + "' existed."); } - map4[key] = cls; + map5[key] = cls; } // node_modules/@antv/scale/esm/identity/index.js +var import_util44 = __toModule(require_lib()); var Identity = function(_super) { __extends(Identity2, _super); function Identity2() { @@ -42849,7 +48876,7 @@ var Identity = function(_super) { return this.values; }; Identity2.prototype.scale = function(value2) { - if (this.values[0] !== value2 && is_number_default(value2)) { + if (this.values[0] !== value2 && (0, import_util44.isNumber)(value2)) { return value2; } return this.range[0]; @@ -42863,7 +48890,13 @@ var Identity = function(_super) { }; return Identity2; }(base_default4); -var identity_default2 = Identity; +var identity_default = Identity; + +// node_modules/@antv/scale/esm/tick-method/cat.js +var import_util46 = __toModule(require_lib()); + +// node_modules/@antv/scale/esm/util/extended.js +var import_util45 = __toModule(require_lib()); // node_modules/@antv/scale/esm/util/pretty-number.js function prettyNumber(n3) { @@ -42879,9 +48912,9 @@ function mod2(n3, m4) { function round4(n3) { return Math.round(n3 * 1e12) / 1e12; } -function simplicity(q4, Q2, j4, lmin, lmax, lstep) { - var n3 = size(Q2); - var i4 = index_of_default(Q2, q4); +function simplicity(q3, Q2, j4, lmin, lmax, lstep) { + var n3 = (0, import_util45.size)(Q2); + var i4 = (0, import_util45.indexOf)(Q2, q3); var v3 = 0; var m4 = mod2(lmin, lstep); if ((m4 < eps || lstep - m4 < eps) && lmin <= 0 && lmax >= 0) { @@ -42889,9 +48922,9 @@ function simplicity(q4, Q2, j4, lmin, lmax, lstep) { } return 1 - i4 / (n3 - 1) - j4 + v3; } -function simplicityMax(q4, Q2, j4) { - var n3 = size(Q2); - var i4 = index_of_default(Q2, q4); +function simplicityMax(q3, Q2, j4) { + var n3 = (0, import_util45.size)(Q2); + var i4 = (0, import_util45.indexOf)(Q2, q3); var v3 = 1; return 1 - i4 / (n3 - 1) - j4 + v3; } @@ -42958,8 +48991,8 @@ function extended(dMin, dMax, n3, onlyLoose, Q2, w4) { var j4 = 1; while (j4 < Infinity) { for (var i4 = 0; i4 < Q2.length; i4 += 1) { - var q4 = Q2[i4]; - var sm = simplicityMax(q4, Q2, j4); + var q3 = Q2[i4]; + var sm = simplicityMax(q3, Q2, j4); if (w4[0] * sm + w4[1] + w4[2] + w4[3] < best.score) { j4 = Infinity; break; @@ -42970,10 +49003,10 @@ function extended(dMin, dMax, n3, onlyLoose, Q2, w4) { if (w4[0] * sm + w4[1] + w4[2] * dm + w4[3] < best.score) { break; } - var delta = (dMax - dMin) / (k4 + 1) / j4 / q4; + var delta = (dMax - dMin) / (k4 + 1) / j4 / q3; var z3 = Math.ceil(Math.log10(delta)); while (z3 < Infinity) { - var step = j4 * q4 * Math.pow(10, z3); + var step = j4 * q3 * Math.pow(10, z3); var cm = coverageMax(dMin, dMax, step * (k4 - 1)); if (w4[0] * sm + w4[1] * cm + w4[2] * dm + w4[3] < best.score) { break; @@ -42987,7 +49020,7 @@ function extended(dMin, dMax, n3, onlyLoose, Q2, w4) { var lMin = start * (step / j4); var lMax = lMin + step * (k4 - 1); var lStep = step; - var s4 = simplicity(q4, Q2, j4, lMin, lMax, lStep); + var s4 = simplicity(q3, Q2, j4, lMin, lMax, lStep); var c5 = coverage(dMin, dMax, lMin, lMax); var g4 = density(k4, m4, dMin, dMax, lMin, lMax); var l4 = legibility(); @@ -43017,45 +49050,48 @@ function extended(dMin, dMax, n3, onlyLoose, Q2, w4) { ticks[i4] = prettyNumber(ticks[i4 - 1] + lstep); } return { - min: Math.min(dMin, head(ticks)), - max: Math.max(dMax, last(ticks)), + min: Math.min(dMin, (0, import_util45.head)(ticks)), + max: Math.max(dMax, (0, import_util45.last)(ticks)), ticks }; } // node_modules/@antv/scale/esm/tick-method/cat.js function calculateCatTicks(cfg) { - var values2 = cfg.values, tickInterval = cfg.tickInterval, tickCount = cfg.tickCount; - var ticks = values2; - if (is_number_default(tickInterval)) { - return filter_default(ticks, function(__, i4) { + var values4 = cfg.values, tickInterval = cfg.tickInterval, tickCount = cfg.tickCount; + var ticks = values4; + if ((0, import_util46.isNumber)(tickInterval)) { + return (0, import_util46.filter)(ticks, function(__, i4) { return i4 % tickInterval === 0; }); } - var min7 = cfg.min, max8 = cfg.max; - if (is_nil_default(min7)) { - min7 = 0; + var min13 = cfg.min, max15 = cfg.max; + if ((0, import_util46.isNil)(min13)) { + min13 = 0; } - if (is_nil_default(max8)) { - max8 = values2.length - 1; + if ((0, import_util46.isNil)(max15)) { + max15 = values4.length - 1; } - if (is_number_default(tickCount) && tickCount < max8 - min7) { - var ticks_1 = extended(min7, max8, tickCount, false, [1, 2, 5, 3, 4, 7, 6, 8, 9]).ticks; - var valid = filter_default(ticks_1, function(tick) { - return tick >= min7 && tick <= max8; + if ((0, import_util46.isNumber)(tickCount) && tickCount < max15 - min13) { + var ticks_1 = extended(min13, max15, tickCount, false, [1, 2, 5, 3, 4, 7, 6, 8, 9]).ticks; + var valid = (0, import_util46.filter)(ticks_1, function(tick) { + return tick >= min13 && tick <= max15; }); return valid.map(function(index2) { - return values2[index2]; + return values4[index2]; }); } - return values2.slice(min7, max8 + 1); + return values4.slice(min13, max15 + 1); } +// node_modules/@antv/scale/esm/tick-method/d3-linear.js +var import_util49 = __toModule(require_lib()); + // node_modules/@antv/scale/esm/util/d3-linear.js function d3Linear(cfg) { - var min7 = cfg.min, max8 = cfg.max, nice = cfg.nice, tickCount = cfg.tickCount; + var min13 = cfg.min, max15 = cfg.max, nice = cfg.nice, tickCount = cfg.tickCount; var linear4 = new D3Linear(); - linear4.domain([min7, max8]); + linear4.domain([min13, max15]); if (nice) { linear4.nice(tickCount); } @@ -43164,6 +49200,7 @@ function tickIncrement(start, stop, count2) { } // node_modules/@antv/scale/esm/util/interval.js +var import_util47 = __toModule(require_lib()); function snapMultiple(v3, base, snapType) { var div4; if (snapType === "ceil") { @@ -43175,14 +49212,14 @@ function snapMultiple(v3, base, snapType) { } return div4 * base; } -function intervalTicks(min7, max8, interval3) { - var minTick = snapMultiple(min7, interval3, "floor"); - var maxTick = snapMultiple(max8, interval3, "ceil"); - minTick = fixed_base_default(minTick, interval3); - maxTick = fixed_base_default(maxTick, interval3); +function intervalTicks(min13, max15, interval3) { + var minTick = snapMultiple(min13, interval3, "floor"); + var maxTick = snapMultiple(max15, interval3, "ceil"); + minTick = (0, import_util47.fixedBase)(minTick, interval3); + maxTick = (0, import_util47.fixedBase)(maxTick, interval3); var ticks = []; for (var i4 = minTick; i4 <= maxTick; i4 = i4 + interval3) { - var tickValue = fixed_base_default(i4, interval3); + var tickValue = (0, import_util47.fixedBase)(i4, interval3); ticks.push(tickValue); } return { @@ -43193,11 +49230,12 @@ function intervalTicks(min7, max8, interval3) { } // node_modules/@antv/scale/esm/util/strict-limit.js +var import_util48 = __toModule(require_lib()); function strictLimit(cfg, defaultMin, defaultMax) { var _a6; - var minLimit = cfg.minLimit, maxLimit = cfg.maxLimit, min7 = cfg.min, max8 = cfg.max, _b = cfg.tickCount, tickCount = _b === void 0 ? 5 : _b; - var tickMin = is_nil_default(minLimit) ? is_nil_default(defaultMin) ? min7 : defaultMin : minLimit; - var tickMax = is_nil_default(maxLimit) ? is_nil_default(defaultMax) ? max8 : defaultMax : maxLimit; + var minLimit = cfg.minLimit, maxLimit = cfg.maxLimit, min13 = cfg.min, max15 = cfg.max, _b = cfg.tickCount, tickCount = _b === void 0 ? 5 : _b; + var tickMin = (0, import_util48.isNil)(minLimit) ? (0, import_util48.isNil)(defaultMin) ? min13 : defaultMin : minLimit; + var tickMax = (0, import_util48.isNil)(maxLimit) ? (0, import_util48.isNil)(defaultMax) ? max15 : defaultMax : maxLimit; if (tickMin > tickMax) { _a6 = [tickMin, tickMax], tickMax = _a6[0], tickMin = _a6[1]; } @@ -43214,39 +49252,40 @@ function strictLimit(cfg, defaultMin, defaultMax) { // node_modules/@antv/scale/esm/tick-method/d3-linear.js function d3LinearTickMethod(cfg) { - var min7 = cfg.min, max8 = cfg.max, tickInterval = cfg.tickInterval, minLimit = cfg.minLimit, maxLimit = cfg.maxLimit; + var min13 = cfg.min, max15 = cfg.max, tickInterval = cfg.tickInterval, minLimit = cfg.minLimit, maxLimit = cfg.maxLimit; var ticks = d3Linear(cfg); - if (!is_nil_default(minLimit) || !is_nil_default(maxLimit)) { - return strictLimit(cfg, head(ticks), last(ticks)); + if (!(0, import_util49.isNil)(minLimit) || !(0, import_util49.isNil)(maxLimit)) { + return strictLimit(cfg, (0, import_util49.head)(ticks), (0, import_util49.last)(ticks)); } if (tickInterval) { - return intervalTicks(min7, max8, tickInterval).ticks; + return intervalTicks(min13, max15, tickInterval).ticks; } return ticks; } // node_modules/@antv/scale/esm/tick-method/linear.js +var import_util50 = __toModule(require_lib()); function linear3(cfg) { - var min7 = cfg.min, max8 = cfg.max, tickCount = cfg.tickCount, nice = cfg.nice, tickInterval = cfg.tickInterval, minLimit = cfg.minLimit, maxLimit = cfg.maxLimit; - var ticks = extended(min7, max8, tickCount, nice).ticks; - if (!is_nil_default(minLimit) || !is_nil_default(maxLimit)) { - return strictLimit(cfg, head(ticks), last(ticks)); + var min13 = cfg.min, max15 = cfg.max, tickCount = cfg.tickCount, nice = cfg.nice, tickInterval = cfg.tickInterval, minLimit = cfg.minLimit, maxLimit = cfg.maxLimit; + var ticks = extended(min13, max15, tickCount, nice).ticks; + if (!(0, import_util50.isNil)(minLimit) || !(0, import_util50.isNil)(maxLimit)) { + return strictLimit(cfg, (0, import_util50.head)(ticks), (0, import_util50.last)(ticks)); } if (tickInterval) { - return intervalTicks(min7, max8, tickInterval).ticks; + return intervalTicks(min13, max15, tickInterval).ticks; } return ticks; } // node_modules/@antv/scale/esm/tick-method/log.js function calculateLogTicks(cfg) { - var base = cfg.base, tickCount = cfg.tickCount, min7 = cfg.min, max8 = cfg.max, values2 = cfg.values; + var base = cfg.base, tickCount = cfg.tickCount, min13 = cfg.min, max15 = cfg.max, values4 = cfg.values; var minTick; - var maxTick = log(base, max8); - if (min7 > 0) { - minTick = Math.floor(log(base, min7)); + var maxTick = log(base, max15); + if (min13 > 0) { + minTick = Math.floor(log(base, min13)); } else { - var positiveMin = getLogPositiveMin(values2, base, max8); + var positiveMin = getLogPositiveMin(values4, base, max15); minTick = Math.floor(log(base, positiveMin)); } var count2 = maxTick - minTick; @@ -43255,30 +49294,30 @@ function calculateLogTicks(cfg) { for (var i4 = minTick; i4 < maxTick + avg2; i4 = i4 + avg2) { ticks.push(Math.pow(base, i4)); } - if (min7 <= 0) { + if (min13 <= 0) { ticks.unshift(0); } return ticks; } // node_modules/@antv/scale/esm/util/pretty.js -function pretty(min7, max8, m4) { +function pretty(min13, max15, m4) { if (m4 === void 0) { m4 = 5; } - if (min7 === max8) { + if (min13 === max15) { return { - max: max8, - min: min7, - ticks: [min7] + max: max15, + min: min13, + ticks: [min13] }; } var n3 = m4 < 0 ? 0 : Math.round(m4); if (n3 === 0) - return { max: max8, min: min7, ticks: [] }; + return { max: max15, min: min13, ticks: [] }; var h3 = 1.5; var h5 = 0.5 + 1.5 * h3; - var d3 = max8 - min7; + var d3 = max15 - min13; var c5 = d3 / n3; var base = Math.pow(10, Math.floor(Math.log10(c5))); var unit = base; @@ -43291,13 +49330,13 @@ function pretty(min7, max8, m4) { } } } - var nu = Math.ceil(max8 / unit); - var ns = Math.floor(min7 / unit); - var hi = Math.max(nu * unit, max8); - var lo = Math.min(ns * unit, min7); - var size2 = Math.floor((hi - lo) / unit) + 1; - var ticks = new Array(size2); - for (var i4 = 0; i4 < size2; i4++) { + var nu = Math.ceil(max15 / unit); + var ns = Math.floor(min13 / unit); + var hi = Math.max(nu * unit, max15); + var lo = Math.min(ns * unit, min13); + var size14 = Math.floor((hi - lo) / unit) + 1; + var ticks = new Array(size14); + for (var i4 = 0; i4 < size14; i4++) { ticks[i4] = prettyNumber(lo + i4 * unit); } return { @@ -43310,9 +49349,9 @@ function pretty(min7, max8, m4) { // node_modules/@antv/scale/esm/tick-method/pow.js function calculatePowTicks(cfg) { var exponent2 = cfg.exponent, tickCount = cfg.tickCount; - var max8 = Math.ceil(calBase(exponent2, cfg.max)); - var min7 = Math.floor(calBase(exponent2, cfg.min)); - var ticks = pretty(min7, max8, tickCount).ticks; + var max15 = Math.ceil(calBase(exponent2, cfg.max)); + var min13 = Math.floor(calBase(exponent2, cfg.min)); + var ticks = pretty(min13, max15, tickCount).ticks; return ticks.map(function(tick) { var factor = tick >= 0 ? 1 : -1; return Math.pow(tick, exponent2) * factor; @@ -43335,11 +49374,11 @@ function quantileSorted(x6, p4) { } } function calculateTicks(cfg) { - var tickCount = cfg.tickCount, values2 = cfg.values; - if (!values2 || !values2.length) { + var tickCount = cfg.tickCount, values4 = cfg.values; + if (!values4 || !values4.length) { return []; } - var sorted = values2.slice().sort(function(a4, b10) { + var sorted = values4.slice().sort(function(a4, b10) { return a4 - b10; }); var ticks = []; @@ -43351,28 +49390,29 @@ function calculateTicks(cfg) { } // node_modules/@antv/scale/esm/tick-method/r-prettry.js +var import_util51 = __toModule(require_lib()); function linearPretty(cfg) { - var min7 = cfg.min, max8 = cfg.max, tickCount = cfg.tickCount, tickInterval = cfg.tickInterval, minLimit = cfg.minLimit, maxLimit = cfg.maxLimit; - var ticks = pretty(min7, max8, tickCount).ticks; - if (!is_nil_default(minLimit) || !is_nil_default(maxLimit)) { - return strictLimit(cfg, head(ticks), last(ticks)); + var min13 = cfg.min, max15 = cfg.max, tickCount = cfg.tickCount, tickInterval = cfg.tickInterval, minLimit = cfg.minLimit, maxLimit = cfg.maxLimit; + var ticks = pretty(min13, max15, tickCount).ticks; + if (!(0, import_util51.isNil)(minLimit) || !(0, import_util51.isNil)(maxLimit)) { + return strictLimit(cfg, (0, import_util51.head)(ticks), (0, import_util51.last)(ticks)); } if (tickInterval) { - return intervalTicks(min7, max8, tickInterval).ticks; + return intervalTicks(min13, max15, tickInterval).ticks; } return ticks; } // node_modules/@antv/scale/esm/tick-method/time.js function calculateTimeTicks(cfg) { - var min7 = cfg.min, max8 = cfg.max, minTickInterval = cfg.minTickInterval; + var min13 = cfg.min, max15 = cfg.max, minTickInterval = cfg.minTickInterval; var tickInterval = cfg.tickInterval; var tickCount = cfg.tickCount; if (tickInterval) { - tickCount = Math.ceil((max8 - min7) / tickInterval); + tickCount = Math.ceil((max15 - min13) / tickInterval); } else { - tickInterval = getTickInterval(min7, max8, tickCount)[1]; - var count2 = (max8 - min7) / tickInterval; + tickInterval = getTickInterval(min13, max15, tickCount)[1]; + var count2 = (max15 - min13) / tickInterval; var ratio = count2 / tickCount; if (ratio > 1) { tickInterval = tickInterval * Math.ceil(ratio); @@ -43382,17 +49422,18 @@ function calculateTimeTicks(cfg) { } } var ticks = []; - for (var i4 = min7; i4 < max8 + tickInterval; i4 += tickInterval) { + for (var i4 = min13; i4 < max15 + tickInterval; i4 += tickInterval) { ticks.push(i4); } return ticks; } // node_modules/@antv/scale/esm/tick-method/time-cat.js +var import_util52 = __toModule(require_lib()); function calculateTimeCatTicks(cfg) { var ticks = calculateCatTicks(cfg); - var lastValue = last(cfg.values); - if (lastValue !== last(ticks)) { + var lastValue = (0, import_util52.last)(cfg.values); + if (lastValue !== (0, import_util52.last)(ticks)) { ticks.push(lastValue); } return ticks; @@ -43408,83 +49449,83 @@ function createYear(year) { function getMonth(date) { return new Date(date).getMonth(); } -function diffMonth(min7, max8) { - var minYear = getYear(min7); - var maxYear = getYear(max8); - var minMonth = getMonth(min7); - var maxMonth = getMonth(max8); +function diffMonth(min13, max15) { + var minYear = getYear(min13); + var maxYear = getYear(max15); + var minMonth = getMonth(min13); + var maxMonth = getMonth(max15); return (maxYear - minYear) * 12 + (maxMonth - minMonth) % 12; } function creatMonth(year, month) { return new Date(year, month, 1).getTime(); } -function diffDay(min7, max8) { - return Math.ceil((max8 - min7) / DAY); +function diffDay(min13, max15) { + return Math.ceil((max15 - min13) / DAY); } -function diffHour(min7, max8) { - return Math.ceil((max8 - min7) / HOUR); +function diffHour(min13, max15) { + return Math.ceil((max15 - min13) / HOUR); } -function diffMinus(min7, max8) { - return Math.ceil((max8 - min7) / (60 * 1e3)); +function diffMinus(min13, max15) { + return Math.ceil((max15 - min13) / (60 * 1e3)); } function timePretty(cfg) { - var min7 = cfg.min, max8 = cfg.max, minTickInterval = cfg.minTickInterval, tickCount = cfg.tickCount; + var min13 = cfg.min, max15 = cfg.max, minTickInterval = cfg.minTickInterval, tickCount = cfg.tickCount; var tickInterval = cfg.tickInterval; var ticks = []; if (!tickInterval) { - tickInterval = (max8 - min7) / tickCount; + tickInterval = (max15 - min13) / tickCount; if (minTickInterval && tickInterval < minTickInterval) { tickInterval = minTickInterval; } } - var minYear = getYear(min7); + var minYear = getYear(min13); if (tickInterval > YEAR) { - var maxYear = getYear(max8); + var maxYear = getYear(max15); var yearInterval = Math.ceil(tickInterval / YEAR); for (var i4 = minYear; i4 <= maxYear + yearInterval; i4 = i4 + yearInterval) { ticks.push(createYear(i4)); } } else if (tickInterval > MONTH) { var monthInterval = Math.ceil(tickInterval / MONTH); - var mmMoth = getMonth(min7); - var dMonths = diffMonth(min7, max8); + var mmMoth = getMonth(min13); + var dMonths = diffMonth(min13, max15); for (var i4 = 0; i4 <= dMonths + monthInterval; i4 = i4 + monthInterval) { ticks.push(creatMonth(minYear, i4 + mmMoth)); } } else if (tickInterval > DAY) { - var date = new Date(min7); + var date = new Date(min13); var year = date.getFullYear(); var month = date.getMonth(); var mday = date.getDate(); var day = Math.ceil(tickInterval / DAY); - var ddays = diffDay(min7, max8); + var ddays = diffDay(min13, max15); for (var i4 = 0; i4 < ddays + day; i4 = i4 + day) { ticks.push(new Date(year, month, mday + i4).getTime()); } } else if (tickInterval > HOUR) { - var date = new Date(min7); + var date = new Date(min13); var year = date.getFullYear(); var month = date.getMonth(); var day = date.getDate(); var hour = date.getHours(); var hours = Math.ceil(tickInterval / HOUR); - var dHours = diffHour(min7, max8); + var dHours = diffHour(min13, max15); for (var i4 = 0; i4 <= dHours + hours; i4 = i4 + hours) { ticks.push(new Date(year, month, day, hour + i4).getTime()); } } else if (tickInterval > MINUTE) { - var dMinus = diffMinus(min7, max8); + var dMinus = diffMinus(min13, max15); var minutes = Math.ceil(tickInterval / MINUTE); for (var i4 = 0; i4 <= dMinus + minutes; i4 = i4 + minutes) { - ticks.push(min7 + i4 * MINUTE); + ticks.push(min13 + i4 * MINUTE); } } else { var interval3 = tickInterval; if (interval3 < SECOND) { interval3 = SECOND; } - var minSecond = Math.floor(min7 / SECOND) * SECOND; - var dSeconds = Math.ceil((max8 - min7) / SECOND); + var minSecond = Math.floor(min13 / SECOND) * SECOND; + var dSeconds = Math.ceil((max15 - min13) / SECOND); var seconds = Math.ceil(interval3 / SECOND); for (var i4 = 0; i4 < dSeconds + seconds; i4 = i4 + seconds) { ticks.push(minSecond + i4 * SECOND); @@ -43511,7 +49552,7 @@ registerTickMethod("d3-linear", d3LinearTickMethod); // node_modules/@antv/scale/esm/index.js registerClass("cat", base_default5); registerClass("category", base_default5); -registerClass("identity", identity_default2); +registerClass("identity", identity_default); registerClass("linear", linear_default); registerClass("log", log_default); registerClass("pow", pow_default); @@ -43540,6 +49581,7 @@ registerAttribute("Shape", shape_default2); registerAttribute("Size", size_default); // node_modules/@antv/coord/esm/coord/base.js +var import_util53 = __toModule(require_lib()); var Coordinate = function() { function Coordinate2(cfg) { this.type = "coordinate"; @@ -43564,7 +49606,7 @@ var Coordinate = function() { this.height = Math.abs(this.end.y - this.start.y); }; Coordinate2.prototype.update = function(cfg) { - mix(this, cfg); + (0, import_util53.assign)(this, cfg); this.initial(); }; Coordinate2.prototype.convertDim = function(percent2, dim) { @@ -43722,6 +49764,7 @@ var Cartesian = function(_super) { var cartesian_default = Cartesian; // node_modules/@antv/coord/esm/coord/helix.js +var import_util54 = __toModule(require_lib()); var Helix = function(_super) { __extends(Helix2, _super); function Helix2(cfg) { @@ -43781,11 +49824,11 @@ var Helix = function(_super) { thi = 2 * index2 * Math.PI + thi; var r4 = this.a * thi; var newY = vec2_exports.length(v3) - r4; - newY = isNumberEqual(newY, 0) ? 0 : newY; + newY = (0, import_util54.isNumberEqual)(newY, 0) ? 0 : newY; var x6 = this.invertDim(thi, "x"); var y5 = this.invertDim(newY, "y"); - x6 = isNumberEqual(x6, 0) ? 0 : x6; - y5 = isNumberEqual(y5, 0) ? 0 : y5; + x6 = (0, import_util54.isNumberEqual)(x6, 0) ? 0 : x6; + y5 = (0, import_util54.isNumberEqual)(y5, 0) ? 0 : y5; if (this.isTransposed) { _a6 = [y5, x6], x6 = _a6[0], y5 = _a6[1]; } @@ -43796,6 +49839,7 @@ var Helix = function(_super) { var helix_default = Helix; // node_modules/@antv/coord/esm/coord/polar.js +var import_util55 = __toModule(require_lib()); var Polar = function(_super) { __extends(Polar2, _super); function Polar2(cfg) { @@ -43882,7 +49926,7 @@ var Polar = function(_super) { vec3_exports.transformMat3(vStart3, vStart3, m4); var vStart2 = [vStart3[0], vStart3[1]]; var angle3 = ext_exports.angleTo(vStart2, vPoint, endAngle < startAngle); - if (isNumberEqual(angle3, Math.PI * 2)) { + if ((0, import_util55.isNumberEqual)(angle3, Math.PI * 2)) { angle3 = 0; } var radius = vec2_exports.length(vPoint); @@ -43955,13 +49999,19 @@ __export(annotation_exports, { Text: () => text_default2 }); +// node_modules/@antv/component/esm/annotation/line.js +var import_util63 = __toModule(require_lib()); + +// node_modules/@antv/component/esm/abstract/group-component.js +var import_util58 = __toModule(require_lib()); + // node_modules/@antv/component/esm/util/event.js -function propagationDelegate(group2, eventName, eventObject) { +function propagationDelegate(group3, eventName, eventObject) { var event = new graph_event_default(eventName, eventObject); - event.target = group2; - event.propagationPath.push(group2); - group2.emitDelegation(eventName, event); - var parent = group2.getParent(); + event.target = group3; + event.propagationPath.push(group3); + group3.emitDelegation(eventName, event); + var parent = group3.getParent(); while (parent) { parent.emitDelegation(eventName, event); event.propagationPath.push(parent); @@ -44034,18 +50084,19 @@ function applyTranslate(shape, x6, y5) { } // node_modules/@antv/component/esm/util/util.js +var import_util56 = __toModule(require_lib()); function formatPadding(padding3) { var top = 0; var left2 = 0; var right2 = 0; var bottom = 0; - if (is_number_default(padding3)) { + if ((0, import_util56.isNumber)(padding3)) { top = left2 = right2 = bottom = padding3; - } else if (is_array_default(padding3)) { + } else if ((0, import_util56.isArray)(padding3)) { top = padding3[0]; - right2 = !is_nil_default(padding3[1]) ? padding3[1] : padding3[0]; - bottom = !is_nil_default(padding3[2]) ? padding3[2] : padding3[0]; - left2 = !is_nil_default(padding3[3]) ? padding3[3] : right2; + right2 = !(0, import_util56.isNil)(padding3[1]) ? padding3[1] : padding3[0]; + bottom = !(0, import_util56.isNil)(padding3[2]) ? padding3[2] : padding3[0]; + left2 = !(0, import_util56.isNil)(padding3[3]) ? padding3[3] : right2; } return [top, right2, bottom, left2]; } @@ -44112,8 +50163,8 @@ function createBBox(x6, y5, width2, height) { maxY: isNaN(maxY2) ? 0 : maxY2 }; } -function getValueByPercent(min7, max8, percent2) { - return (1 - percent2) * min7 + max8 * percent2; +function getValueByPercent(min13, max15, percent2) { + return (1 - percent2) * min13 + max15 * percent2; } function getCirclePoint(center2, radius, angle3) { return { @@ -44152,7 +50203,7 @@ function getBBoxWithClip(element) { var maxY_1 = -Infinity; var children = element.getChildren(); if (children.length > 0) { - each_default(children, function(child) { + (0, import_util56.each)(children, function(child) { if (child.get("visible")) { if (child.isGroup() && child.get("children").length === 0) { return true; @@ -44228,6 +50279,7 @@ function getTextPoint(start, end2, position2, offset) { } // node_modules/@antv/component/esm/abstract/component.js +var import_util57 = __toModule(require_lib()); var LOCATION_FIELD_MAP = { none: [], point: ["x", "y"], @@ -44278,12 +50330,12 @@ var Component = function(_super) { Component4.prototype.update = function(cfg) { var _this = this; var defaultCfg2 = this.get("defaultCfg") || {}; - each_default(cfg, function(value2, name) { + (0, import_util57.each)(cfg, function(value2, name) { var originCfg = _this.get(name); var newCfg = value2; if (originCfg !== value2) { - if (is_object_default(value2) && defaultCfg2[name]) { - newCfg = deep_mix_default({}, defaultCfg2[name], value2); + if ((0, import_util57.isObject)(value2) && defaultCfg2[name]) { + newCfg = (0, import_util57.deepMix)({}, defaultCfg2[name], value2); } _this.set(name, newCfg); } @@ -44294,14 +50346,14 @@ var Component = function(_super) { Component4.prototype.updateInner = function(cfg) { }; Component4.prototype.afterUpdate = function(cfg) { - if (has_key_default(cfg, "visible")) { + if ((0, import_util57.hasKey)(cfg, "visible")) { if (cfg.visible) { this.show(); } else { this.hide(); } } - if (has_key_default(cfg, "capture")) { + if ((0, import_util57.hasKey)(cfg, "capture")) { this.setCapture(cfg.capture); } }; @@ -44332,7 +50384,7 @@ var Component = function(_super) { var location = {}; var locationType = this.get("locationType"); var fields = LOCATION_FIELD_MAP[locationType]; - each_default(fields, function(field6) { + (0, import_util57.each)(fields, function(field6) { location[field6] = _this.get(field6); }); return location; @@ -44348,10 +50400,10 @@ var Component = function(_super) { Component4.prototype.initCfg = function() { var _this = this; var defaultCfg2 = this.get("defaultCfg"); - each_default(defaultCfg2, function(value2, name) { + (0, import_util57.each)(defaultCfg2, function(value2, name) { var cfg = _this.get(name); - if (is_object_default(cfg)) { - var newCfg = deep_mix_default({}, value2, cfg); + if ((0, import_util57.isObject)(cfg)) { + var newCfg = (0, import_util57.deepMix)({}, value2, cfg); _this.set(name, newCfg); } }); @@ -44383,19 +50435,19 @@ var GroupComponent = function(_super) { }; GroupComponent2.prototype.remove = function() { this.clear(); - var group2 = this.get("group"); - group2.remove(); + var group3 = this.get("group"); + group3.remove(); }; GroupComponent2.prototype.clear = function() { - var group2 = this.get("group"); - group2.clear(); + var group3 = this.get("group"); + group3.clear(); this.set("shapesMap", {}); this.clearOffScreenCache(); this.set("isInit", true); }; GroupComponent2.prototype.getChildComponentById = function(id) { - var group2 = this.getElementById(id); - var inst = group2 && group2.get("component"); + var group3 = this.getElementById(id); + var inst = group3 && group3.get("component"); return inst; }; GroupComponent2.prototype.getElementById = function(id) { @@ -44407,7 +50459,7 @@ var GroupComponent = function(_super) { }; GroupComponent2.prototype.getElementsByName = function(name) { var rst = []; - each_default(this.get("shapesMap"), function(elem) { + (0, import_util58.each)(this.get("shapesMap"), function(elem) { if (elem.get("name") === name) { rst.push(elem); } @@ -44428,8 +50480,8 @@ var GroupComponent = function(_super) { if (!offScreenGroup) { offScreenGroup = this.offScreenRender(); } - var group2 = this.get("group"); - this.updateElements(offScreenGroup, group2); + var group3 = this.get("group"); + this.updateElements(offScreenGroup, group3); this.deleteElements(); this.applyOffset(); if (!this.get("eventInitted")) { @@ -44439,18 +50491,18 @@ var GroupComponent = function(_super) { this.set("isInit", false); }; GroupComponent2.prototype.show = function() { - var group2 = this.get("group"); - group2.show(); + var group3 = this.get("group"); + group3.show(); this.set("visible", true); }; GroupComponent2.prototype.hide = function() { - var group2 = this.get("group"); - group2.hide(); + var group3 = this.get("group"); + group3.hide(); this.set("visible", false); }; GroupComponent2.prototype.setCapture = function(capture) { - var group2 = this.get("group"); - group2.set("capture", capture); + var group3 = this.get("group"); + group3.set("capture", capture); this.set("capture", capture); }; GroupComponent2.prototype.destroy = function() { @@ -44462,27 +50514,27 @@ var GroupComponent = function(_super) { return this.get("group").getCanvasBBox(); }; GroupComponent2.prototype.getLayoutBBox = function() { - var group2 = this.get("group"); + var group3 = this.get("group"); var bbox = this.getInnerLayoutBBox(); - var matrix = group2.getTotalMatrix(); + var matrix = group3.getTotalMatrix(); if (matrix) { bbox = applyMatrix2BBox(matrix, bbox); } return bbox; }; GroupComponent2.prototype.on = function(evt, callback, once) { - var group2 = this.get("group"); - group2.on(evt, callback, once); + var group3 = this.get("group"); + group3.on(evt, callback, once); return this; }; GroupComponent2.prototype.off = function(evt, callback) { - var group2 = this.get("group"); - group2 && group2.off(evt, callback); + var group3 = this.get("group"); + group3 && group3.off(evt, callback); return this; }; GroupComponent2.prototype.emit = function(eventName, eventObject) { - var group2 = this.get("group"); - group2.emit(eventName, eventObject); + var group3 = this.get("group"); + group3.emit(eventName, eventObject); }; GroupComponent2.prototype.init = function() { _super.prototype.init.call(this); @@ -44495,14 +50547,14 @@ var GroupComponent = function(_super) { return this.get("offScreenBBox") || this.get("group").getBBox(); }; GroupComponent2.prototype.delegateEmit = function(eventName, eventObject) { - var group2 = this.get("group"); - eventObject.target = group2; - group2.emit(eventName, eventObject); - propagationDelegate(group2, eventName, eventObject); + var group3 = this.get("group"); + eventObject.target = group3; + group3.emit(eventName, eventObject); + propagationDelegate(group3, eventName, eventObject); }; GroupComponent2.prototype.createOffScreenGroup = function() { - var group2 = this.get("group"); - var GroupClass = group2.getGroupBase(); + var group3 = this.get("group"); + var GroupClass = group3.getGroupBase(); var newGroup = new GroupClass({ delegateObject: this.getDelegateObject() }); @@ -44538,11 +50590,11 @@ var GroupComponent = function(_super) { }; GroupComponent2.prototype.addGroup = function(parent, cfg) { this.appendDelegateObject(parent, cfg); - var group2 = parent.addGroup(cfg); + var group3 = parent.addGroup(cfg); if (this.get("isRegister")) { - this.registerElement(group2); + this.registerElement(group3); } - return group2; + return group3; }; GroupComponent2.prototype.addShape = function(parent, cfg) { this.appendDelegateObject(parent, cfg); @@ -44565,8 +50617,8 @@ var GroupComponent = function(_super) { GroupComponent2.prototype.initEvent = function() { }; GroupComponent2.prototype.removeEvent = function() { - var group2 = this.get("group"); - group2.off(); + var group3 = this.get("group"); + group3.off(); }; GroupComponent2.prototype.getElementId = function(localId) { var id = this.get("id"); @@ -44587,7 +50639,7 @@ var GroupComponent = function(_super) { }; GroupComponent2.prototype.addAnimation = function(elmentName, newElement, animateCfg) { var originOpacity = newElement.attr("opacity"); - if (is_nil_default(originOpacity)) { + if ((0, import_util58.isNil)(originOpacity)) { originOpacity = 1; } newElement.attr("opacity", 0); @@ -44605,7 +50657,7 @@ var GroupComponent = function(_super) { var animateOption = this.get("animateOption"); var children = newGroup.getChildren().slice(0); var preElement; - each_default(children, function(element) { + (0, import_util58.each)(children, function(element) { var elementId = element.get("id"); var originElement = _this.getElementById(elementId); var elementName = element.get("name"); @@ -44613,7 +50665,7 @@ var GroupComponent = function(_super) { if (element.get("isComponent")) { var childComponent = element.get("component"); var origChildComponent = originElement.get("component"); - var newCfg = pick_default(childComponent.cfg, difference_default(keys_default(childComponent.cfg), COPY_PROPERTIES_EXCLUDES)); + var newCfg = (0, import_util58.pick)(childComponent.cfg, (0, import_util58.difference)((0, import_util58.keys)(childComponent.cfg), COPY_PROPERTIES_EXCLUDES)); origChildComponent.update(newCfg); originElement.set(STATUS_UPDATE, "update"); } else { @@ -44626,7 +50678,7 @@ var GroupComponent = function(_super) { if (element.isGroup()) { _this.updateElements(element, originElement); } - each_default(COPY_PROPERTIES, function(name) { + (0, import_util58.each)(COPY_PROPERTIES, function(name) { originElement.set(name, element.get(name)); }); updateClip(originElement, element); @@ -44661,9 +50713,9 @@ var GroupComponent = function(_super) { } }); }; - GroupComponent2.prototype.clearUpdateStatus = function(group2) { - var children = group2.getChildren(); - each_default(children, function(el) { + GroupComponent2.prototype.clearUpdateStatus = function(group3) { + var children = group3.getChildren(); + (0, import_util58.each)(children, function(el) { el.set(STATUS_UPDATE, null); }); }; @@ -44686,22 +50738,22 @@ var GroupComponent = function(_super) { if (!cfg.delegateObject) { cfg.delegateObject = {}; } - mix(cfg.delegateObject, parentObject); + (0, import_util58.mix)(cfg.delegateObject, parentObject); }; GroupComponent2.prototype.getReplaceAttrs = function(originElement, newElement) { var originAttrs = originElement.attr(); var newAttrs = newElement.attr(); - each_default(originAttrs, function(v3, k4) { + (0, import_util58.each)(originAttrs, function(v3, k4) { if (newAttrs[k4] === void 0) { newAttrs[k4] = void 0; } }); return newAttrs; }; - GroupComponent2.prototype.registerNewGroup = function(group2) { + GroupComponent2.prototype.registerNewGroup = function(group3) { var _this = this; - var children = group2.getChildren(); - each_default(children, function(element) { + var children = group3.getChildren(); + (0, import_util58.each)(children, function(element) { _this.registerElement(element); element.set(STATUS_UPDATE, "add"); if (element.isGroup()) { @@ -44713,7 +50765,7 @@ var GroupComponent = function(_super) { var _this = this; var shapesMap = this.get("shapesMap"); var deleteArray = []; - each_default(shapesMap, function(element, id) { + (0, import_util58.each)(shapesMap, function(element, id) { if (!element.get(STATUS_UPDATE) || element.destroyed) { deleteArray.push([id, element]); } else { @@ -44722,12 +50774,12 @@ var GroupComponent = function(_super) { }); var animate = this.get("animate"); var animateOption = this.get("animateOption"); - each_default(deleteArray, function(item) { + (0, import_util58.each)(deleteArray, function(item) { var id = item[0], element = item[1]; if (!element.destroyed) { var elementName = element.get("name"); if (animate && animateOption.leave) { - var callbackAnimCfg = mix({ + var callbackAnimCfg = (0, import_util58.mix)({ callback: function() { _this.removeElement(element); } @@ -44753,6 +50805,12 @@ var GroupComponent = function(_super) { }(component_default); var group_component_default = GroupComponent; +// node_modules/@antv/component/esm/util/graphic.js +var import_util61 = __toModule(require_lib()); + +// node_modules/@antv/component/esm/util/label.js +var import_util60 = __toModule(require_lib()); + // node_modules/@antv/component/esm/util/text.js var ELLIPSIS_CODE = "\u2026"; function strLen(str8) { @@ -44834,7 +50892,7 @@ var OPTIMIZE_THRESHOLD = 400; function getMaxLabelWidthOptimized(labels) { var texts = labels.map(function(label17) { var text = label17.attr("text"); - return is_nil_default(text) ? "" : "" + text; + return (0, import_util60.isNil)(text) ? "" : "" + text; }); var maxLen = 0; var maxIdx = 0; @@ -44859,15 +50917,15 @@ function getMaxLabelWidth(labels) { if (labels.length > OPTIMIZE_THRESHOLD) { return getMaxLabelWidthOptimized(labels); } - var max8 = 0; - each_default(labels, function(label17) { + var max15 = 0; + (0, import_util60.each)(labels, function(label17) { var bbox = label17.getBBox(); var width2 = bbox.width; - if (max8 < width2) { - max8 = width2; + if (max15 < width2) { + max15 = width2; } }); - return max8; + return max15; } function getLabelLength(isVertical2, label17) { var bbox = label17.getCanvasBBox(); @@ -44880,8 +50938,8 @@ function ellipsisLabel(isVertical2, label17, limitLength, position2) { } var text = (_a6 = label17.attr("text")) !== null && _a6 !== void 0 ? _a6 : ""; if (position2 === "tail") { - var font = pick_default(label17.attr(), ["fontSize", "fontFamily", "fontWeight", "fontStyle", "fontVariant"]); - var ellipsisText = get_ellipsis_text_default(text, limitLength, font, "\u2026"); + var font = (0, import_util60.pick)(label17.attr(), ["fontSize", "fontFamily", "fontWeight", "fontStyle", "fontVariant"]); + var ellipsisText = (0, import_util60.getEllipsisText)(text, limitLength, font, "\u2026"); if (text !== ellipsisText) { label17.attr("text", ellipsisText); label17.set("tip", text); @@ -44931,13 +50989,13 @@ function renderTag(container2, tagCfg) { name, attrs: __assign({ x: 0, y: 0, text: content }, style) }); - var padding3 = formatPadding(get_default(background, "padding", 0)); + var padding3 = formatPadding((0, import_util61.get)(background, "padding", 0)); if (maxLength && autoEllipsis) { var maxTextLength = maxLength - (padding3[1] + padding3[3]); ellipsisLabel(!isVertical2, text, maxTextLength, ellipsisPosition); } if (background) { - var backgroundStyle = get_default(background, "style", {}); + var backgroundStyle = (0, import_util61.get)(background, "style", {}); var _a6 = text.getCanvasBBox(), minX = _a6.minX, minY = _a6.minY, width2 = _a6.width, height = _a6.height; var tagBg = tagGroup.addShape("rect", { id: id + "-bg", @@ -44991,17 +51049,17 @@ var LineAnnotation = function(_super) { } } }); }; - LineAnnotation2.prototype.renderInner = function(group2) { - this.renderLine(group2); + LineAnnotation2.prototype.renderInner = function(group3) { + this.renderLine(group3); if (this.get("text")) { - this.renderLabel(group2); + this.renderLabel(group3); } }; - LineAnnotation2.prototype.renderLine = function(group2) { + LineAnnotation2.prototype.renderLine = function(group3) { var start = this.get("start"); var end2 = this.get("end"); var style = this.get("style"); - this.addShape(group2, { + this.addShape(group3, { type: "line", id: this.getElementId("line"), name: "annotation-line", @@ -45014,9 +51072,9 @@ var LineAnnotation = function(_super) { percent2 = 0; } else if (position2 === "center") { percent2 = 0.5; - } else if (is_string_default(position2) && position2.indexOf("%") !== -1) { + } else if ((0, import_util63.isString)(position2) && position2.indexOf("%") !== -1) { percent2 = parseInt(position2, 10) / 100; - } else if (is_number_default(position2)) { + } else if ((0, import_util63.isNumber)(position2)) { percent2 = position2; } else { percent2 = 1; @@ -45029,7 +51087,7 @@ var LineAnnotation = function(_super) { y: getValueByPercent(start.y, end2.y, percent2) }; }; - LineAnnotation2.prototype.renderLabel = function(group2) { + LineAnnotation2.prototype.renderLabel = function(group3) { var text = this.get("text"); var start = this.get("start"); var end2 = this.get("end"); @@ -45054,7 +51112,7 @@ var LineAnnotation = function(_super) { var vector = [end2.x - start.x, end2.y - start.y]; cfg.rotate = Math.atan2(vector[1], vector[0]); } - renderTag(group2, cfg); + renderTag(group3, cfg); }; return LineAnnotation2; }(group_component_default); @@ -45083,7 +51141,7 @@ var TextAnnotation = function(_super) { this.set("y", location.y); this.resetLocation(); }; - TextAnnotation2.prototype.renderInner = function(group2) { + TextAnnotation2.prototype.renderInner = function(group3) { var _a6 = this.getLocation(), x6 = _a6.x, y5 = _a6.y; var content = this.get("content"); var style = this.get("style"); @@ -45109,7 +51167,7 @@ var TextAnnotation = function(_super) { background, rotate: rotate8 }; - renderTag(group2, cfg); + renderTag(group3, cfg); }; TextAnnotation2.prototype.resetLocation = function() { var textGroup = this.getElementByLocalId("text-group"); @@ -45137,8 +51195,8 @@ var ArcAnnotation = function(_super) { lineWidth: 1 } }); }; - ArcAnnotation2.prototype.renderInner = function(group2) { - this.renderArc(group2); + ArcAnnotation2.prototype.renderInner = function(group3) { + this.renderArc(group3); }; ArcAnnotation2.prototype.getArcPath = function() { var _a6 = this.getLocation(), center2 = _a6.center, radius = _a6.radius, startAngle = _a6.startAngle, endAngle = _a6.endAngle; @@ -45155,10 +51213,10 @@ var ArcAnnotation = function(_super) { } return path; }; - ArcAnnotation2.prototype.renderArc = function(group2) { + ArcAnnotation2.prototype.renderArc = function(group3) { var path = this.getArcPath(); var style = this.get("style"); - this.addShape(group2, { + this.addShape(group3, { type: "path", id: this.getElementId("arc"), name: "annotation-arc", @@ -45185,15 +51243,15 @@ var RegionAnnotation = function(_super) { } } }); }; - RegionAnnotation2.prototype.renderInner = function(group2) { - this.renderRegion(group2); + RegionAnnotation2.prototype.renderInner = function(group3) { + this.renderRegion(group3); }; - RegionAnnotation2.prototype.renderRegion = function(group2) { + RegionAnnotation2.prototype.renderRegion = function(group3) { var start = this.get("start"); var end2 = this.get("end"); var style = this.get("style"); var bbox = regionToBBox({ start, end: end2 }); - this.addShape(group2, { + this.addShape(group3, { type: "rect", id: this.getElementId("region"), name: "annotation-region", @@ -45214,8 +51272,8 @@ var ImageAnnotation = function(_super) { var cfg = _super.prototype.getDefaultCfg.call(this); return __assign(__assign({}, cfg), { name: "annotation", type: "image", locationType: "region", start: null, end: null, src: null, style: {} }); }; - ImageAnnotation2.prototype.renderInner = function(group2) { - this.renderImage(group2); + ImageAnnotation2.prototype.renderInner = function(group3) { + this.renderImage(group3); }; ImageAnnotation2.prototype.getImageAttrs = function() { var start = this.get("start"); @@ -45225,8 +51283,8 @@ var ImageAnnotation = function(_super) { var src = this.get("src"); return __assign({ x: bbox.x, y: bbox.y, img: src, width: bbox.width, height: bbox.height }, style); }; - ImageAnnotation2.prototype.renderImage = function(group2) { - this.addShape(group2, { + ImageAnnotation2.prototype.renderImage = function(group3) { + this.addShape(group3, { type: "image", id: this.getElementId("image"), name: "annotation-image", @@ -45238,6 +51296,7 @@ var ImageAnnotation = function(_super) { var image_default = ImageAnnotation; // node_modules/@antv/component/esm/annotation/data-marker.js +var import_util68 = __toModule(require_lib()); var DataMarkerAnnotation = function(_super) { __extends(DataMarkerAnnotation2, _super); function DataMarkerAnnotation2() { @@ -45276,18 +51335,18 @@ var DataMarkerAnnotation = function(_super) { } } }); }; - DataMarkerAnnotation2.prototype.renderInner = function(group2) { - if (get_default(this.get("line"), "display")) { - this.renderLine(group2); + DataMarkerAnnotation2.prototype.renderInner = function(group3) { + if ((0, import_util68.get)(this.get("line"), "display")) { + this.renderLine(group3); } - if (get_default(this.get("text"), "display")) { - this.renderText(group2); + if ((0, import_util68.get)(this.get("text"), "display")) { + this.renderText(group3); } - if (get_default(this.get("point"), "display")) { - this.renderPoint(group2); + if ((0, import_util68.get)(this.get("point"), "display")) { + this.renderPoint(group3); } if (this.get("autoAdjust")) { - this.autoAdjust(group2); + this.autoAdjust(group3); } }; DataMarkerAnnotation2.prototype.applyOffset = function() { @@ -45296,25 +51355,25 @@ var DataMarkerAnnotation = function(_super) { y: this.get("y") + this.get("offsetY") }); }; - DataMarkerAnnotation2.prototype.renderPoint = function(group2) { + DataMarkerAnnotation2.prototype.renderPoint = function(group3) { var point2 = this.getShapeAttrs().point; - this.addShape(group2, { + this.addShape(group3, { type: "circle", id: this.getElementId("point"), name: "annotation-point", attrs: point2 }); }; - DataMarkerAnnotation2.prototype.renderLine = function(group2) { + DataMarkerAnnotation2.prototype.renderLine = function(group3) { var line2 = this.getShapeAttrs().line; - this.addShape(group2, { + this.addShape(group3, { type: "path", id: this.getElementId("line"), name: "annotation-line", attrs: line2 }); }; - DataMarkerAnnotation2.prototype.renderText = function(group2) { + DataMarkerAnnotation2.prototype.renderText = function(group3) { var textAttrs = this.getShapeAttrs().text; var x6 = textAttrs.x, y5 = textAttrs.y, text = textAttrs.text, style = __rest(textAttrs, ["x", "y", "text"]); var _a6 = this.get("text"), background = _a6.background, maxLength = _a6.maxLength, autoEllipsis = _a6.autoEllipsis, isVertival = _a6.isVertival, ellipsisPosition = _a6.ellipsisPosition; @@ -45331,18 +51390,18 @@ var DataMarkerAnnotation = function(_super) { isVertival, ellipsisPosition }; - renderTag(group2, tagCfg); + renderTag(group3, tagCfg); }; - DataMarkerAnnotation2.prototype.autoAdjust = function(group2) { - var direction5 = this.get("direction"); + DataMarkerAnnotation2.prototype.autoAdjust = function(group3) { + var direction3 = this.get("direction"); var x6 = this.get("x"); var y5 = this.get("y"); - var lineLength = get_default(this.get("line"), "length", 0); + var lineLength = (0, import_util68.get)(this.get("line"), "length", 0); var coordinateBBox = this.get("coordinateBBox"); - var _a6 = group2.getBBox(), minX = _a6.minX, maxX = _a6.maxX, minY = _a6.minY, maxY2 = _a6.maxY; - var textGroup = group2.findById(this.getElementId("text-group")); - var textShape = group2.findById(this.getElementId("text")); - var lineShape = group2.findById(this.getElementId("line")); + var _a6 = group3.getBBox(), minX = _a6.minX, maxX = _a6.maxX, minY = _a6.minY, maxY2 = _a6.maxY; + var textGroup = group3.findById(this.getElementId("text-group")); + var textShape = group3.findById(this.getElementId("text")); + var lineShape = group3.findById(this.getElementId("line")); if (!coordinateBBox) { return; } @@ -45356,10 +51415,10 @@ var DataMarkerAnnotation = function(_super) { applyTranslate(textGroup, textGroup.attr("x") - overflow, textGroup.attr("y")); } } - if (direction5 === "upward" && y5 + minY <= coordinateBBox.minY || direction5 !== "upward" && y5 + maxY2 >= coordinateBBox.maxY) { + if (direction3 === "upward" && y5 + minY <= coordinateBBox.minY || direction3 !== "upward" && y5 + maxY2 >= coordinateBBox.maxY) { var textBaseline = void 0; var factor = void 0; - if (direction5 === "upward" && y5 + minY <= coordinateBBox.minY) { + if (direction3 === "upward" && y5 + minY <= coordinateBBox.minY) { textBaseline = "top"; factor = 1; } else { @@ -45377,20 +51436,20 @@ var DataMarkerAnnotation = function(_super) { } }; DataMarkerAnnotation2.prototype.getShapeAttrs = function() { - var lineDisplay = get_default(this.get("line"), "display"); - var pointStyle = get_default(this.get("point"), "style", {}); - var lineStyle = get_default(this.get("line"), "style", {}); - var textStyle2 = get_default(this.get("text"), "style", {}); - var direction5 = this.get("direction"); - var lineLength = lineDisplay ? get_default(this.get("line"), "length", 0) : 0; - var factor = direction5 === "upward" ? -1 : 1; + var lineDisplay = (0, import_util68.get)(this.get("line"), "display"); + var pointStyle = (0, import_util68.get)(this.get("point"), "style", {}); + var lineStyle = (0, import_util68.get)(this.get("line"), "style", {}); + var textStyle2 = (0, import_util68.get)(this.get("text"), "style", {}); + var direction3 = this.get("direction"); + var lineLength = lineDisplay ? (0, import_util68.get)(this.get("line"), "length", 0) : 0; + var factor = direction3 === "upward" ? -1 : 1; return { point: __assign({ x: 0, y: 0 }, pointStyle), line: __assign({ path: [ ["M", 0, 0], ["L", 0, lineLength * factor] ] }, lineStyle), - text: __assign({ x: 0, y: (lineLength + 2) * factor, text: get_default(this.get("text"), "content", ""), textBaseline: direction5 === "upward" ? "bottom" : "top" }, textStyle2) + text: __assign({ x: 0, y: (lineLength + 2) * factor, text: (0, import_util68.get)(this.get("text"), "content", ""), textBaseline: direction3 === "upward" ? "bottom" : "top" }, textStyle2) }; }; return DataMarkerAnnotation2; @@ -45398,6 +51457,7 @@ var DataMarkerAnnotation = function(_super) { var data_marker_default = DataMarkerAnnotation; // node_modules/@antv/component/esm/annotation/data-region.js +var import_util69 = __toModule(require_lib()); var DataRegionAnnotation = function(_super) { __extends(DataRegionAnnotation2, _super); function DataRegionAnnotation2() { @@ -45425,9 +51485,9 @@ var DataRegionAnnotation = function(_super) { } } }); }; - DataRegionAnnotation2.prototype.renderInner = function(group2) { - var regionStyle = get_default(this.get("region"), "style", {}); - var textStyle2 = get_default(this.get("text"), "style", {}); + DataRegionAnnotation2.prototype.renderInner = function(group3) { + var regionStyle = (0, import_util69.get)(this.get("region"), "style", {}); + var textStyle2 = (0, import_util69.get)(this.get("text"), "style", {}); var lineLength = this.get("lineLength") || 0; var points = this.get("points"); if (!points.length) { @@ -45440,20 +51500,21 @@ var DataRegionAnnotation = function(_super) { path.push(["L", point2.x, point2.y]); }); path.push(["L", points[points.length - 1].x, points[points.length - 1].y - lineLength]); - this.addShape(group2, { + this.addShape(group3, { type: "path", id: this.getElementId("region"), name: "annotation-region", attrs: __assign({ path }, regionStyle) }); var textCfg = __assign({ id: this.getElementId("text"), name: "annotation-text", x: (bbox.minX + bbox.maxX) / 2, y: bbox.minY - lineLength }, this.get("text")); - renderTag(group2, textCfg); + renderTag(group3, textCfg); }; return DataRegionAnnotation2; }(group_component_default); var data_region_default = DataRegionAnnotation; // node_modules/@antv/component/esm/annotation/region-filter.js +var import_util71 = __toModule(require_lib()); var RegionFilterAnnotation = function(_super) { __extends(RegionFilterAnnotation2, _super); function RegionFilterAnnotation2() { @@ -45463,17 +51524,17 @@ var RegionFilterAnnotation = function(_super) { var cfg = _super.prototype.getDefaultCfg.call(this); return __assign(__assign({}, cfg), { name: "annotation", type: "regionFilter", locationType: "region", start: null, end: null, color: null, shape: [] }); }; - RegionFilterAnnotation2.prototype.renderInner = function(group2) { + RegionFilterAnnotation2.prototype.renderInner = function(group3) { var _this = this; var start = this.get("start"); var end2 = this.get("end"); - var layer = this.addGroup(group2, { + var layer = this.addGroup(group3, { id: this.getElementId("region-filter"), capture: false }); - each_default(this.get("shapes"), function(shape, shapeIdx) { + (0, import_util71.each)(this.get("shapes"), function(shape, shapeIdx) { var type2 = shape.get("type"); - var attrs = clone_default(shape.attr()); + var attrs = (0, import_util71.clone)(shape.attr()); _this.adjustShapeAttrs(attrs); _this.addShape(layer, { id: _this.getElementId("shape-" + type2 + "-" + shapeIdx), @@ -45505,6 +51566,7 @@ var RegionFilterAnnotation = function(_super) { var region_filter_default = RegionFilterAnnotation; // node_modules/@antv/component/esm/annotation/shape.js +var import_util73 = __toModule(require_lib()); var ShapeAnnotation = function(_super) { __extends(ShapeAnnotation2, _super); function ShapeAnnotation2() { @@ -45512,19 +51574,23 @@ var ShapeAnnotation = function(_super) { } ShapeAnnotation2.prototype.getDefaultCfg = function() { var cfg = _super.prototype.getDefaultCfg.call(this); - return __assign(__assign({}, cfg), { name: "annotation", type: "shape", draw: noop_default }); + return __assign(__assign({}, cfg), { name: "annotation", type: "shape", draw: import_util73.noop }); }; - ShapeAnnotation2.prototype.renderInner = function(group2) { + ShapeAnnotation2.prototype.renderInner = function(group3) { var render = this.get("render"); - if (is_function_default(render)) { - render(group2); + if ((0, import_util73.isFunction)(render)) { + render(group3); } }; return ShapeAnnotation2; }(group_component_default); var shape_default3 = ShapeAnnotation; +// node_modules/@antv/component/esm/annotation/html.js +var import_util76 = __toModule(require_lib()); + // node_modules/@antv/component/esm/abstract/html-component.js +var import_util74 = __toModule(require_lib()); var HtmlComponent = function(_super) { __extends(HtmlComponent2, _super); function HtmlComponent2() { @@ -45592,16 +51658,19 @@ var HtmlComponent = function(_super) { }; HtmlComponent2.prototype.initContainer = function() { var container2 = this.get("container"); - if (is_nil_default(container2)) { + if ((0, import_util74.isNil)(container2)) { container2 = this.createDom(); var parent_1 = this.get("parent"); - if (is_string_default(parent_1)) { + if ((0, import_util74.isString)(parent_1)) { parent_1 = document.getElementById(parent_1); this.set("parent", parent_1); } parent_1.appendChild(container2); + if (this.get("containerId")) { + container2.setAttribute("id", this.get("containerId")); + } this.set("container", container2); - } else if (is_string_default(container2)) { + } else if ((0, import_util74.isString)(container2)) { container2 = document.getElementById(container2); this.set("container", container2); } @@ -45615,7 +51684,7 @@ var HtmlComponent = function(_super) { if (!style) { style = defaultStyles; } else { - style = deep_mix_default({}, defaultStyles, style); + style = (0, import_util74.deepMix)({}, defaultStyles, style); } this.set("domStyles", style); }; @@ -45633,9 +51702,9 @@ var HtmlComponent = function(_super) { } }; HtmlComponent2.prototype.applyChildrenStyles = function(element, styles) { - each_default(styles, function(style, name) { + (0, import_util74.each)(styles, function(style, name) { var elements = element.getElementsByClassName(name); - each_default(elements, function(el) { + (0, import_util74.each)(elements, function(el) { modifyCSS(el, style); }); }); @@ -45657,7 +51726,7 @@ var HtmlComponent = function(_super) { HtmlComponent2.prototype.removeEvent = function() { }; HtmlComponent2.prototype.updateInner = function(cfg) { - if (has_key_default(cfg, "domStyles")) { + if ((0, import_util74.hasKey)(cfg, "domStyles")) { this.resetStyles(); this.applyStyles(); } @@ -45684,10 +51753,10 @@ var HtmlAnnotation = function(_super) { var container2 = this.getContainer(); var html = this.get("html"); clearDom(container2); - var rst = is_function_default(html) ? html(container2) : html; - if (is_element_default(rst)) { + var rst = (0, import_util76.isFunction)(html) ? html(container2) : html; + if ((0, import_util76.isElement)(rst)) { container2.appendChild(rst); - } else if (is_string_default(rst)) { + } else if ((0, import_util76.isString)(rst)) { container2.appendChild(createDom(rst)); } this.resetPosition(); @@ -45740,16 +51809,23 @@ __export(axis_exports, { Line: () => line_default4 }); +// node_modules/@antv/component/esm/axis/line.js +var import_util83 = __toModule(require_lib()); + +// node_modules/@antv/component/esm/axis/base.js +var import_util79 = __toModule(require_lib()); + // node_modules/@antv/component/esm/util/state.js +var import_util78 = __toModule(require_lib()); function getStatesStyle(item, elementName, stateStyles) { var styleName = elementName + "Style"; var styles = null; - each_default(stateStyles, function(v3, state2) { + (0, import_util78.each)(stateStyles, function(v3, state2) { if (item[state2] && v3[styleName]) { if (!styles) { styles = {}; } - mix(styles, v3[styleName]); + (0, import_util78.mix)(styles, v3[styleName]); } }); return styles; @@ -45849,13 +51925,13 @@ var AxisBase = function(_super) { theme: {} }); }; - AxisBase2.prototype.renderInner = function(group2) { + AxisBase2.prototype.renderInner = function(group3) { if (this.get("line")) { - this.drawLine(group2); + this.drawLine(group3); } - this.drawTicks(group2); + this.drawTicks(group3); if (this.get("title")) { - this.drawTitle(group2); + this.drawTitle(group3); } }; AxisBase2.prototype.isList = function() { @@ -45870,7 +51946,7 @@ var AxisBase = function(_super) { }); }; AxisBase2.prototype.updateItem = function(item, cfg) { - mix(item, cfg); + (0, import_util79.mix)(item, cfg); this.clear(); this.render(); }; @@ -45888,7 +51964,7 @@ var AxisBase = function(_super) { AxisBase2.prototype.getItemStates = function(item) { var tickStates = this.get("tickStates"); var rst = []; - each_default(tickStates, function(v3, k4) { + (0, import_util79.each)(tickStates, function(v3, k4) { if (item[k4]) { rst.push(k4); } @@ -45898,14 +51974,14 @@ var AxisBase = function(_super) { AxisBase2.prototype.clearItemsState = function(state2) { var _this = this; var items = this.getItemsByState(state2); - each_default(items, function(item) { + (0, import_util79.each)(items, function(item) { _this.setItemState(item, state2, false); }); }; AxisBase2.prototype.getItemsByState = function(state2) { var _this = this; var items = this.getItems(); - return filter_default(items, function(item) { + return (0, import_util79.filter)(items, function(item) { return _this.hasState(item, state2); }); }; @@ -45919,7 +51995,7 @@ var AxisBase = function(_super) { }; AxisBase2.prototype.getTextAnchor = function(vector) { var align; - if (isNumberEqual(vector[0], 0)) { + if ((0, import_util79.isNumberEqual)(vector[0], 0)) { align = "center"; } else if (vector[0] > 0) { align = "start"; @@ -45930,7 +52006,7 @@ var AxisBase = function(_super) { }; AxisBase2.prototype.getTextBaseline = function(vector) { var base; - if (isNumberEqual(vector[1], 0)) { + if ((0, import_util79.isNumberEqual)(vector[1], 0)) { base = "middle"; } else if (vector[1] > 0) { base = "top"; @@ -45941,14 +52017,14 @@ var AxisBase = function(_super) { }; AxisBase2.prototype.processOverlap = function(labelGroup) { }; - AxisBase2.prototype.drawLine = function(group2) { + AxisBase2.prototype.drawLine = function(group3) { var path = this.getLinePath(); var line2 = this.get("line"); - this.addShape(group2, { + this.addShape(group3, { type: "path", id: this.getElementId("line"), name: "axis-line", - attrs: mix({ + attrs: (0, import_util79.mix)({ path }, line2.style) }); @@ -45964,7 +52040,7 @@ var AxisBase = function(_super) { if (tickCount >= 2) { tickSegment = ticks[1].value - ticks[0].value; } - each_default(ticks, function(tick) { + (0, import_util79.each)(ticks, function(tick) { var point2 = tick.point; if (!alignTick) { point2 = _this.getTickPoint(tick.value - tickSegment / 2); @@ -46010,8 +52086,8 @@ var AxisBase = function(_super) { var item = { points: [tickItem.startPoint, tickItem.endPoint] }; - var defaultTickLineStyle = get_default(this.get("theme"), ["tickLine", "style"], {}); - style = is_function_default(style) ? mix({}, defaultTickLineStyle, style(item, index2, tickItems)) : style; + var defaultTickLineStyle = (0, import_util79.get)(this.get("theme"), ["tickLine", "style"], {}); + style = (0, import_util79.isFunction)(style) ? (0, import_util79.mix)({}, defaultTickLineStyle, style(item, index2, tickItems)) : style; var startPoint = tickItem.startPoint, endPoint = tickItem.endPoint; return __assign({ x1: startPoint.x, y1: startPoint.y, x2: endPoint.x, y2: endPoint.y }, style); }; @@ -46023,20 +52099,20 @@ var AxisBase = function(_super) { attrs: this.getTickLineAttrs(tickItem, type2, index2, tickItems) }); }; - AxisBase2.prototype.drawTickLines = function(group2) { + AxisBase2.prototype.drawTickLines = function(group3) { var _this = this; var ticks = this.get("ticks"); var subTickLine = this.get("subTickLine"); var tickLineItems = this.getTickLineItems(ticks); - var tickLineGroup = this.addGroup(group2, { + var tickLineGroup = this.addGroup(group3, { name: "axis-tickline-group", id: this.getElementId("tickline-group") }); var tickCfg = this.get("tickLine"); - each_default(tickLineItems, function(item, index2) { + (0, import_util79.each)(tickLineItems, function(item, index2) { if (tickCfg.displayWithLabel) { var labelId = _this.getElementId("label-" + item.tickId); - if (group2.findById(labelId)) { + if (group3.findById(labelId)) { _this.drawTick(item, tickLineGroup, "tickLine", index2, tickLineItems); } } else { @@ -46045,7 +52121,7 @@ var AxisBase = function(_super) { }); if (subTickLine) { var subTickLineItems_1 = this.getSubTickLineItems(tickLineItems); - each_default(subTickLineItems_1, function(item, index2) { + (0, import_util79.each)(subTickLineItems_1, function(item, index2) { _this.drawTick(item, tickLineGroup, "subTickLine", index2, subTickLineItems_1); }); } @@ -46053,33 +52129,33 @@ var AxisBase = function(_super) { AxisBase2.prototype.processTicks = function() { var _this = this; var ticks = this.get("ticks"); - each_default(ticks, function(tick) { + (0, import_util79.each)(ticks, function(tick) { tick.point = _this.getTickPoint(tick.value); - if (is_nil_default(tick.id)) { + if ((0, import_util79.isNil)(tick.id)) { tick.id = tick.name; } }); }; - AxisBase2.prototype.drawTicks = function(group2) { + AxisBase2.prototype.drawTicks = function(group3) { var _this = this; this.optimizeTicks(); this.processTicks(); if (this.get("label")) { - this.drawLabels(group2); + this.drawLabels(group3); } if (this.get("tickLine")) { - this.drawTickLines(group2); + this.drawTickLines(group3); } var ticks = this.get("ticks"); - each_default(ticks, function(tick) { - _this.applyTickStates(tick, group2); + (0, import_util79.each)(ticks, function(tick) { + _this.applyTickStates(tick, group3); }); }; AxisBase2.prototype.optimizeTicks = function() { var optimize = this.get("optimize"); var ticks = this.get("ticks"); if (optimize && optimize.enable && optimize.threshold > 0) { - var len5 = size(ticks); + var len5 = (0, import_util79.size)(ticks); if (len5 > optimize.threshold) { var page_1 = Math.ceil(len5 / optimize.threshold); var optimizedTicks = ticks.filter(function(tick, idx) { @@ -46097,8 +52173,8 @@ var AxisBase = function(_super) { var vector = this.getSideVector(offset, point2); var text = formatter ? formatter(tick.name, tick, index2) : tick.name; var style = labelCfg.style; - style = is_function_default(style) ? get_default(this.get("theme"), ["label", "style"], {}) : style; - var attrs = mix({ + style = (0, import_util79.isFunction)(style) ? (0, import_util79.get)(this.get("theme"), ["label", "style"], {}) : style; + var attrs = (0, import_util79.mix)({ x: point2.x + offsetX, y: point2.y + offsetY, text, @@ -46110,14 +52186,14 @@ var AxisBase = function(_super) { } return attrs; }; - AxisBase2.prototype.drawLabels = function(group2) { + AxisBase2.prototype.drawLabels = function(group3) { var _this = this; var ticks = this.get("ticks"); - var labelGroup = this.addGroup(group2, { + var labelGroup = this.addGroup(group3, { name: "axis-label-group", id: this.getElementId("label-group") }); - each_default(ticks, function(tick, index2) { + (0, import_util79.each)(ticks, function(tick, index2) { _this.addShape(labelGroup, { type: "text", name: "axis-label", @@ -46132,16 +52208,16 @@ var AxisBase = function(_super) { }); this.processOverlap(labelGroup); var labels = labelGroup.getChildren(); - var defaultLabelStyle3 = get_default(this.get("theme"), ["label", "style"], {}); + var defaultLabelStyle3 = (0, import_util79.get)(this.get("theme"), ["label", "style"], {}); var _a6 = this.get("label"), style = _a6.style, formatter = _a6.formatter; - if (is_function_default(style)) { + if ((0, import_util79.isFunction)(style)) { var afterProcessTicks_1 = labels.map(function(label17) { - return get_default(label17.get("delegateObject"), "tick"); + return (0, import_util79.get)(label17.get("delegateObject"), "tick"); }); - each_default(labels, function(label17, index2) { + (0, import_util79.each)(labels, function(label17, index2) { var tick = label17.get("delegateObject").tick; var text = formatter ? formatter(tick.name, tick, index2) : tick.name; - var newStyle = mix({}, defaultLabelStyle3, style(text, index2, afterProcessTicks_1)); + var newStyle = (0, import_util79.mix)({}, defaultLabelStyle3, style(text, index2, afterProcessTicks_1)); label17.attr(newStyle); }); } @@ -46158,14 +52234,14 @@ var AxisBase = function(_super) { } var point2 = this.getTickPoint(percent2); var titlePoint = this.getSidePoint(point2, offset || spacing + titleHeight / 2); - var attrs = mix({ + var attrs = (0, import_util79.mix)({ x: titlePoint.x, y: titlePoint.y, text: titleCfg.text }, style); var rotate8 = titleCfg.rotate; var angle3 = rotate8; - if (is_nil_default(rotate8) && autoRotate) { + if ((0, import_util79.isNil)(rotate8) && autoRotate) { var vector = this.getAxisVector(point2); var v1 = [1, 0]; angle3 = ext_exports.angleTo(vector, v1, true); @@ -46176,26 +52252,26 @@ var AxisBase = function(_super) { } return attrs; }; - AxisBase2.prototype.drawTitle = function(group2) { - this.addShape(group2, { + AxisBase2.prototype.drawTitle = function(group3) { + this.addShape(group3, { type: "text", id: this.getElementId("title"), name: "axis-title", attrs: this.getTitleAttrs() }); }; - AxisBase2.prototype.applyTickStates = function(tick, group2) { + AxisBase2.prototype.applyTickStates = function(tick, group3) { var states = this.getItemStates(tick); if (states.length) { var tickStates = this.get("tickStates"); var labelId = this.getElementId("label-" + tick.id); - var labelShape = group2.findById(labelId); + var labelShape = group3.findById(labelId); if (labelShape) { var labelStateStyle = getStatesStyle(tick, "label", tickStates); labelStateStyle && labelShape.attr(labelStateStyle); } var tickLineId = this.getElementId("tickline-" + tick.id); - var tickLineShape = group2.findById(tickLineId); + var tickLineShape = group3.findById(tickLineId); if (tickLineShape) { var tickLineStateStyle = getStatesStyle(tick, "tickLine", tickStates); tickLineStateStyle && tickLineShape.attr(tickLineStateStyle); @@ -46247,10 +52323,11 @@ __export(auto_ellipsis_exports, { ellipsisTail: () => ellipsisTail, getDefault: () => getDefault }); +var import_util80 = __toModule(require_lib()); function ellipseLabels(isVertical2, labelGroup, limitLength, position2) { var children = labelGroup.getChildren(); var ellipsisFlag = false; - each_default(children, function(label17) { + (0, import_util80.each)(children, function(label17) { var rst = ellipsisLabel(isVertical2, label17, limitLength, position2); ellipsisFlag = ellipsisFlag || rst; }); @@ -46397,7 +52474,7 @@ function reserveBoth(isVertical2, labelsGroup, limitLength, autoHideCfg) { var hasHide = false; var count2 = labels.length; var first = labels[0]; - var last2 = labels[count2 - 1]; + var last17 = labels[count2 - 1]; var preLabel = first; for (var i4 = 1; i4 < count2 - 1; i4++) { var label17 = labels[i4]; @@ -46410,7 +52487,7 @@ function reserveBoth(isVertical2, labelsGroup, limitLength, autoHideCfg) { preLabel = label17; } } - var overlap2 = isOverlap(isVertical2, preLabel, last2, minGap); + var overlap2 = isOverlap(isVertical2, preLabel, last17, minGap); if (overlap2) { preLabel.hide(); hasHide = true; @@ -46429,15 +52506,15 @@ function equidistanceWithReverseBoth(isVertical2, labelsGroup, limitLength, auto var hasHide = parityHide(isVertical2, labelsGroup, autoHideCfg); if (labels.length > 2) { var first = labels[0]; - var last2 = labels[labels.length - 1]; + var last17 = labels[labels.length - 1]; if (!first.get("visible")) { first.show(); if (reserveOne(isVertical2, labelsGroup, false, autoHideCfg)) { hasHide = true; } } - if (!last2.get("visible")) { - last2.show(); + if (!last17.get("visible")) { + last17.show(); if (reserveOne(isVertical2, labelsGroup, true, autoHideCfg)) { hasHide = true; } @@ -46453,8 +52530,9 @@ __export(auto_rotate_exports, { getDefault: () => getDefault3, unfixedAngle: () => unfixedAngle }); +var import_util82 = __toModule(require_lib()); function setLabelsAngle(labels, angle3) { - each_default(labels, function(label17) { + (0, import_util82.each)(labels, function(label17) { var x6 = label17.attr("x"); var y5 = label17.attr("y"); var matrix = getMatrixByAngle({ x: x6, y: y5 }, angle3); @@ -46488,7 +52566,7 @@ function getDefault3() { } function fixedAngle(isVertical2, labelsGroup, limitLength, customRotate) { return labelRotate(isVertical2, labelsGroup, limitLength, function() { - if (is_number_default(customRotate)) { + if ((0, import_util82.isNumber)(customRotate)) { return customRotate; } return isVertical2 ? theme_default.verticalAxisRotate : theme_default.horizontalAxisRotate; @@ -46561,12 +52639,12 @@ var Line = function(_super) { Line9.prototype.isVertical = function() { var start = this.get("start"); var end2 = this.get("end"); - return isNumberEqual(start.x, end2.x); + return (0, import_util83.isNumberEqual)(start.x, end2.x); }; Line9.prototype.isHorizontal = function() { var start = this.get("start"); var end2 = this.get("end"); - return isNumberEqual(start.y, end2.y); + return (0, import_util83.isNumberEqual)(start.y, end2.y); }; Line9.prototype.getTickPoint = function(tickValue) { var self2 = this; @@ -46613,13 +52691,13 @@ var Line = function(_super) { limitLength = limitLength - labelOffset - titleSpacing - titleHeight; } var overlapOrder = this.get("overlapOrder"); - each_default(overlapOrder, function(name) { + (0, import_util83.each)(overlapOrder, function(name) { if (labelCfg[name] && _this.canProcessOverlap(name)) { _this.autoProcessOverlap(name, labelCfg[name], labelGroup, limitLength); } }); if (titleCfg) { - if (is_nil_default(titleCfg.offset)) { + if ((0, import_util83.isNil)(titleCfg.offset)) { var bbox = labelGroup.getCanvasBBox(); var length_1 = isVertical2 ? bbox.width : bbox.height; titleCfg.offset = labelOffset + length_1 + titleSpacing + titleHeight / 2; @@ -46629,7 +52707,7 @@ var Line = function(_super) { Line9.prototype.canProcessOverlap = function(name) { var labelCfg = this.get("label"); if (name === "autoRotate") { - return is_nil_default(labelCfg.rotate); + return (0, import_util83.isNil)(labelCfg.rotate); } return true; }; @@ -46641,9 +52719,9 @@ var Line = function(_super) { if (value2 === true) { var labelCfg = this.get("label"); hasAdjusted = util.getDefault()(isVertical2, labelGroup, limitLength); - } else if (is_function_default(value2)) { + } else if ((0, import_util83.isFunction)(value2)) { hasAdjusted = value2(isVertical2, labelGroup, limitLength); - } else if (is_object_default(value2)) { + } else if ((0, import_util83.isObject)(value2)) { var overlapCfg = value2; if (util[overlapCfg.type]) { hasAdjusted = util[overlapCfg.type](isVertical2, labelGroup, limitLength, overlapCfg.cfg); @@ -46655,7 +52733,7 @@ var Line = function(_super) { if (hasAdjusted) { var labels = labelGroup.getChildren(); var verticalFactor_1 = this.get("verticalFactor"); - each_default(labels, function(label17) { + (0, import_util83.each)(labels, function(label17) { var textAlign = label17.attr("textAlign"); if (textAlign === "center") { var newAlign = verticalFactor_1 > 0 ? "end" : "start"; @@ -46665,7 +52743,7 @@ var Line = function(_super) { } } else if (name === "autoHide") { var children = labelGroup.getChildren().slice(0); - each_default(children, function(label17) { + (0, import_util83.each)(children, function(label17) { if (!label17.get("visible")) { if (_this.get("isRegister")) { _this.unregisterElement(label17); @@ -46680,6 +52758,7 @@ var Line = function(_super) { var line_default4 = Line; // node_modules/@antv/component/esm/axis/circle.js +var import_util84 = __toModule(require_lib()); var Circle = function(_super) { __extends(Circle6, _super); function Circle6() { @@ -46744,7 +52823,7 @@ var Circle = function(_super) { Circle6.prototype.canProcessOverlap = function(name) { var labelCfg = this.get("label"); if (name === "autoRotate") { - return is_nil_default(labelCfg.rotate); + return (0, import_util84.isNil)(labelCfg.rotate); } return true; }; @@ -46765,13 +52844,13 @@ var Circle = function(_super) { limitLength = limitLength - labelOffset - titleSpacing - titleHeight; } var overlapOrder = this.get("overlapOrder"); - each_default(overlapOrder, function(name) { + (0, import_util84.each)(overlapOrder, function(name) { if (labelCfg[name] && _this.canProcessOverlap(name)) { _this.autoProcessOverlap(name, labelCfg[name], labelGroup, limitLength); } }); if (titleCfg) { - if (is_nil_default(titleCfg.offset)) { + if ((0, import_util84.isNil)(titleCfg.offset)) { var length_1 = labelGroup.getCanvasBBox().height; titleCfg.offset = labelOffset + length_1 + titleSpacing + titleHeight / 2; } @@ -46784,9 +52863,9 @@ var Circle = function(_super) { if (limitLength > 0) { if (value2 === true) { hasAdjusted = util.getDefault()(false, labelGroup, limitLength); - } else if (is_function_default(value2)) { + } else if ((0, import_util84.isFunction)(value2)) { hasAdjusted = value2(false, labelGroup, limitLength); - } else if (is_object_default(value2)) { + } else if ((0, import_util84.isObject)(value2)) { var overlapCfg = value2; if (util[overlapCfg.type]) { hasAdjusted = util[overlapCfg.type](false, labelGroup, limitLength, overlapCfg.cfg); @@ -46799,7 +52878,7 @@ var Circle = function(_super) { if (hasAdjusted) { var labels = labelGroup.getChildren(); var verticalFactor_1 = this.get("verticalFactor"); - each_default(labels, function(label17) { + (0, import_util84.each)(labels, function(label17) { var textAlign = label17.attr("textAlign"); if (textAlign === "center") { var newAlign = verticalFactor_1 > 0 ? "end" : "start"; @@ -46809,7 +52888,7 @@ var Circle = function(_super) { } } else if (name === "autoHide") { var children = labelGroup.getChildren().slice(0); - each_default(children, function(label17) { + (0, import_util84.each)(children, function(label17) { if (!label17.get("visible")) { if (_this.get("isRegister")) { _this.unregisterElement(label17); @@ -46833,6 +52912,7 @@ __export(crosshair_exports, { }); // node_modules/@antv/component/esm/crosshair/base.js +var import_util85 = __toModule(require_lib()); var CrosshairBase = function(_super) { __extends(CrosshairBase2, _super); function CrosshairBase2() { @@ -46867,26 +52947,26 @@ var CrosshairBase = function(_super) { } } }); }; - CrosshairBase2.prototype.renderInner = function(group2) { + CrosshairBase2.prototype.renderInner = function(group3) { if (this.get("line")) { - this.renderLine(group2); + this.renderLine(group3); } if (this.get("text")) { - this.renderText(group2); - this.renderBackground(group2); + this.renderText(group3); + this.renderBackground(group3); } }; - CrosshairBase2.prototype.renderText = function(group2) { + CrosshairBase2.prototype.renderText = function(group3) { var text = this.get("text"); var style = text.style, autoRotate = text.autoRotate, content = text.content; - if (!is_nil_default(content)) { + if (!(0, import_util85.isNil)(content)) { var textPoint = this.getTextPoint(); var matrix = null; if (autoRotate) { var angle3 = this.getRotateAngle(); matrix = getMatrixByAngle(textPoint, angle3); } - this.addShape(group2, { + this.addShape(group3, { type: "text", name: "crosshair-text", id: this.getElementId("text"), @@ -46894,26 +52974,26 @@ var CrosshairBase = function(_super) { }); } }; - CrosshairBase2.prototype.renderLine = function(group2) { + CrosshairBase2.prototype.renderLine = function(group3) { var path = this.getLinePath(); var line2 = this.get("line"); var style = line2.style; - this.addShape(group2, { + this.addShape(group3, { type: "path", name: "crosshair-line", id: this.getElementId("line"), attrs: __assign({ path }, style) }); }; - CrosshairBase2.prototype.renderBackground = function(group2) { + CrosshairBase2.prototype.renderBackground = function(group3) { var textId = this.getElementId("text"); - var textShape = group2.findById(textId); + var textShape = group3.findById(textId); var textBackground = this.get("textBackground"); if (textBackground && textShape) { var textBBox = textShape.getBBox(); var padding3 = formatPadding(textBackground.padding); var style = textBackground.style; - var backgroundShape = this.addShape(group2, { + var backgroundShape = this.addShape(group3, { type: "rect", name: "crosshair-text-background", id: this.getElementId("text-background"), @@ -47016,6 +53096,9 @@ var LineCrosshair2 = function(_super) { }(base_default9); var circle_default3 = LineCrosshair2; +// node_modules/@antv/component/esm/crosshair/html.js +var import_util89 = __toModule(require_lib()); + // node_modules/@antv/component/esm/crosshair/css-const.js var CONTAINER_CLASS = "g2-crosshair"; var CROSSHAIR_LINE = CONTAINER_CLASS + "-line"; @@ -47075,7 +53158,7 @@ var HtmlCrosshair = function(_super) { var content = text.content; if (!textEl) { var container2 = this.getContainer(); - var textTpl = substitute_default(this.get("textTpl"), text); + var textTpl = (0, import_util89.substitute)(this.get("textTpl"), text); textEl = createDom(textTpl); container2.appendChild(textEl); this.applyStyle(CROSSHAIR_TEXT, textEl); @@ -47138,7 +53221,7 @@ var HtmlCrosshair = function(_super) { } }; HtmlCrosshair2.prototype.updateInner = function(cfg) { - if (has_key_default(cfg, "text")) { + if ((0, import_util89.hasKey)(cfg, "text")) { this.resetText(); } _super.prototype.updateInner.call(this, cfg); @@ -47156,6 +53239,7 @@ __export(grid_exports, { }); // node_modules/@antv/component/esm/grid/base.js +var import_util91 = __toModule(require_lib()); var GridBase = function(_super) { __extends(GridBase2, _super); function GridBase2() { @@ -47177,8 +53261,8 @@ var GridBase = function(_super) { var line2 = this.get("line") || this.get("defaultCfg").line; return line2.type; }; - GridBase2.prototype.renderInner = function(group2) { - this.drawGrid(group2); + GridBase2.prototype.renderInner = function(group3) { + this.drawGrid(group3); }; GridBase2.prototype.getAlternatePath = function(prePoints, points) { var regionPath = this.getGridPath(prePoints); @@ -47197,24 +53281,24 @@ var GridBase = function(_super) { GridBase2.prototype.getPathStyle = function() { return this.get("line").style; }; - GridBase2.prototype.drawGrid = function(group2) { + GridBase2.prototype.drawGrid = function(group3) { var _this = this; var line2 = this.get("line"); var items = this.get("items"); var alternateColor = this.get("alternateColor"); var preItem = null; - each_default(items, function(item, index2) { + (0, import_util91.each)(items, function(item, index2) { var id = item.id || index2; if (line2) { var style = _this.getPathStyle(); - style = is_function_default(style) ? style(item, index2, items) : style; + style = (0, import_util91.isFunction)(style) ? style(item, index2, items) : style; var lineId = _this.getElementId("line-" + id); var gridPath = _this.getGridPath(item.points); - _this.addShape(group2, { + _this.addShape(group3, { type: "path", name: "grid-line", id: lineId, - attrs: mix({ + attrs: (0, import_util91.mix)({ path: gridPath }, style) }); @@ -47222,21 +53306,21 @@ var GridBase = function(_super) { if (alternateColor && index2 > 0) { var regionId = _this.getElementId("region-" + id); var isEven = index2 % 2 === 0; - if (is_string_default(alternateColor)) { + if ((0, import_util91.isString)(alternateColor)) { if (isEven) { - _this.drawAlternateRegion(regionId, group2, preItem.points, item.points, alternateColor); + _this.drawAlternateRegion(regionId, group3, preItem.points, item.points, alternateColor); } } else { var color4 = isEven ? alternateColor[1] : alternateColor[0]; - _this.drawAlternateRegion(regionId, group2, preItem.points, item.points, color4); + _this.drawAlternateRegion(regionId, group3, preItem.points, item.points, color4); } } preItem = item; }); }; - GridBase2.prototype.drawAlternateRegion = function(id, group2, prePoints, points, color4) { + GridBase2.prototype.drawAlternateRegion = function(id, group3, prePoints, points, color4) { var regionPath = this.getAlternatePath(prePoints, points); - this.addShape(group2, { + this.addShape(group3, { type: "path", id, name: "grid-region", @@ -47251,6 +53335,7 @@ var GridBase = function(_super) { var base_default10 = GridBase; // node_modules/@antv/component/esm/grid/circle.js +var import_util92 = __toModule(require_lib()); function distance6(x1, y1, x22, y22) { var dx = x22 - x1; var dy = y22 - y1; @@ -47285,7 +53370,7 @@ var Circle2 = function(_super) { path.push(["A", radius_1, radius_1, 0, 0, sweepFlag_1, center2.x, center2.y - radius_1]); path.push(["Z"]); } else { - each_default(points, function(point2, index2) { + (0, import_util92.each)(points, function(point2, index2) { if (index2 === 0) { path.push(["M", point2.x, point2.y]); } else { @@ -47294,7 +53379,7 @@ var Circle2 = function(_super) { }); } } else { - each_default(points, function(point2, index2) { + (0, import_util92.each)(points, function(point2, index2) { if (index2 === 0) { path.push(["M", point2.x, point2.y]); } else { @@ -47313,6 +53398,7 @@ var Circle2 = function(_super) { var circle_default4 = Circle2; // node_modules/@antv/component/esm/grid/line.js +var import_util93 = __toModule(require_lib()); var Line2 = function(_super) { __extends(Line9, _super); function Line9() { @@ -47324,7 +53410,7 @@ var Line2 = function(_super) { }; Line9.prototype.getGridPath = function(points) { var path = []; - each_default(points, function(point2, index2) { + (0, import_util93.each)(points, function(point2, index2) { if (index2 === 0) { path.push(["M", point2.x, point2.y]); } else { @@ -47345,6 +53431,9 @@ __export(legend_exports, { Continuous: () => continuous_default }); +// node_modules/@antv/component/esm/legend/category.js +var import_util95 = __toModule(require_lib()); + // node_modules/@antv/component/esm/legend/base.js var LegendBase = function(_super) { __extends(LegendBase2, _super); @@ -47402,19 +53491,19 @@ var LegendBase = function(_super) { LegendBase2.prototype.setDrawPoint = function(point2) { return this.set("currentPoint", point2); }; - LegendBase2.prototype.renderInner = function(group2) { + LegendBase2.prototype.renderInner = function(group3) { this.resetDraw(); if (this.get("title")) { - this.drawTitle(group2); + this.drawTitle(group3); } - this.drawLegendContent(group2); + this.drawLegendContent(group3); if (this.get("background")) { - this.drawBackground(group2); + this.drawBackground(group3); } }; - LegendBase2.prototype.drawBackground = function(group2) { + LegendBase2.prototype.drawBackground = function(group3) { var background = this.get("background"); - var bbox = group2.getBBox(); + var bbox = group3.getBBox(); var padding3 = formatPadding(background.padding); var attrs = __assign({ x: 0, @@ -47422,7 +53511,7 @@ var LegendBase = function(_super) { width: bbox.width + padding3[1] + padding3[3], height: bbox.height + padding3[0] + padding3[2] }, background.style); - var backgroundShape = this.addShape(group2, { + var backgroundShape = this.addShape(group3, { type: "rect", id: this.getElementId("background"), name: "legend-background", @@ -47430,11 +53519,11 @@ var LegendBase = function(_super) { }); backgroundShape.toBack(); }; - LegendBase2.prototype.drawTitle = function(group2) { + LegendBase2.prototype.drawTitle = function(group3) { var currentPoint = this.get("currentPoint"); var titleCfg = this.get("title"); var spacing = titleCfg.spacing, style = titleCfg.style, text = titleCfg.text; - var shape = this.addShape(group2, { + var shape = this.addShape(group3, { type: "text", id: this.getElementId("title"), name: "legend-title", @@ -47614,7 +53703,7 @@ var Category2 = function(_super) { }); }; Category3.prototype.updateItem = function(item, cfg) { - mix(item, cfg); + (0, import_util95.mix)(item, cfg); this.clear(); this.render(); }; @@ -47640,7 +53729,7 @@ var Category2 = function(_super) { Category3.prototype.getItemStates = function(item) { var itemStates = this.get("itemStates"); var rst = []; - each_default(itemStates, function(v3, k4) { + (0, import_util95.each)(itemStates, function(v3, k4) { if (item[k4]) { rst.push(k4); } @@ -47650,32 +53739,32 @@ var Category2 = function(_super) { Category3.prototype.clearItemsState = function(state2) { var _this = this; var items = this.getItemsByState(state2); - each_default(items, function(item) { + (0, import_util95.each)(items, function(item) { _this.setItemState(item, state2, false); }); }; Category3.prototype.getItemsByState = function(state2) { var _this = this; var items = this.getItems(); - return filter_default(items, function(item) { + return (0, import_util95.filter)(items, function(item) { return _this.hasState(item, state2); }); }; - Category3.prototype.drawLegendContent = function(group2) { + Category3.prototype.drawLegendContent = function(group3) { this.processItems(); - this.drawItems(group2); + this.drawItems(group3); }; Category3.prototype.processItems = function() { var items = this.get("items"); - each_default(items, function(item) { + (0, import_util95.each)(items, function(item) { if (!item.id) { item.id = item.name; } }); }; - Category3.prototype.drawItems = function(group2) { + Category3.prototype.drawItems = function(group3) { var _this = this; - var itemContainerGroup = this.addGroup(group2, { + var itemContainerGroup = this.addGroup(group3, { id: this.getElementId("item-container-group"), name: "legend-item-container-group" }); @@ -47696,7 +53785,7 @@ var Category2 = function(_super) { var pageWidth = 0; var maxWidth = this.get("maxWidth"); var maxHeight = this.get("maxHeight"); - each_default(items, function(item, index2) { + (0, import_util95.each)(items, function(item, index2) { var subGroup = _this.drawItem(item, index2, itemHeight, itemGroup); var bbox = subGroup.getBBox(); var width2 = itemWidth || bbox.width; @@ -47728,14 +53817,14 @@ var Category2 = function(_super) { this.totalPagesCnt = 1; this.startX = startX; this.startY = startY; - this.adjustNavigation(group2, itemGroup); + this.adjustNavigation(group3, itemGroup); } }; Category3.prototype.getItemHeight = function() { var itemHeight = this.get("itemHeight"); if (!itemHeight) { var style_1 = (this.get("itemName") || {}).style; - if (is_function_default(style_1)) { + if ((0, import_util95.isFunction)(style_1)) { var items_1 = this.getItems(); items_1.forEach(function(item, index2) { var fontSize = __assign(__assign({}, textStyle), style_1(item, index2, items_1)).fontSize; @@ -47750,7 +53839,7 @@ var Category2 = function(_super) { return itemHeight; }; Category3.prototype.drawMarker = function(container2, markerCfg, item, itemHeight) { - var markerAttrs = __assign(__assign(__assign({ x: 0, y: itemHeight / 2 }, markerCfg.style), { symbol: get_default(item.marker, "symbol", "circle") }), get_default(item.marker, "style", {})); + var markerAttrs = __assign(__assign(__assign({ x: 0, y: itemHeight / 2 }, markerCfg.style), { symbol: (0, import_util95.get)(item.marker, "symbol", "circle") }), (0, import_util95.get)(item.marker, "style", {})); var shape = this.addShape(container2, { type: "marker", id: this.getElementId("item-" + item.id + "-marker"), @@ -47771,7 +53860,7 @@ var Category2 = function(_super) { Category3.prototype.drawItemText = function(container2, textName, cfg, item, itemHeight, xPosition, index2) { var formatter = cfg.formatter; var style = cfg.style; - var attrs = __assign(__assign({ x: xPosition, y: itemHeight / 2, text: formatter ? formatter(item[textName], item, index2) : item[textName] }, textStyle), is_function_default(style) ? style(item, index2, this.getItems()) : style); + var attrs = __assign(__assign({ x: xPosition, y: itemHeight / 2, text: formatter ? formatter(item[textName], item, index2) : item[textName] }, textStyle), (0, import_util95.isFunction)(style) ? style(item, index2, this.getItems()) : style); return this.addShape(container2, { type: "text", id: this.getElementId("item-" + item.id + "-" + textName), @@ -47779,13 +53868,15 @@ var Category2 = function(_super) { attrs }); }; - Category3.prototype.drawRadio = function(container2, style, item, itemHeight, x6) { - var r4 = itemHeight / 2; + Category3.prototype.drawRadio = function(container2, radioCfg, item, itemHeight, x6) { + var _a6; + var style = radioCfg.style || {}; + var r4 = (_a6 = style.r) !== null && _a6 !== void 0 ? _a6 : itemHeight / 2; var lineWidth = r4 * 3.6 / 8; - var _a6 = [x6 + r4, itemHeight / 2 - r4], x0 = _a6[0], y0 = _a6[1]; - var _b = [x0 + r4, y0 + r4], x1 = _b[0], y1 = _b[1]; - var _c = [x0, y1 + r4], x22 = _c[0], y22 = _c[1]; - var _d = [x6, y0 + r4], x32 = _d[0], y32 = _d[1]; + var _b = [x6 + r4, itemHeight / 2 - r4], x0 = _b[0], y0 = _b[1]; + var _c = [x0 + r4, y0 + r4], x1 = _c[0], y1 = _c[1]; + var _d = [x0, y1 + r4], x22 = _d[0], y22 = _d[1]; + var _e = [x6, y0 + r4], x32 = _e[0], y32 = _e[1]; var showRadio = item.showRadio; var attrs = __assign(__assign({ path: [ ["M", x0, y0], @@ -47801,12 +53892,14 @@ var Category2 = function(_super) { ["A", r4, r4, 0, 0, 1, x0, y0], ["L", x0, y0 + lineWidth] ], stroke: "#000000", fill: "#ffffff" }, style), { opacity: showRadio ? 0.45 : 0 }); - return this.addShape(container2, { + var radioShape = this.addShape(container2, { type: "path", id: this.getElementId("item-" + item.id + "-radio"), name: "legend-item-radio", attrs }); + radioShape.set("tip", radioCfg.tip); + return radioShape; }; Category3.prototype.drawItem = function(item, index2, itemHeight, itemGroup) { var groupId = "item-" + item.id; @@ -47836,8 +53929,8 @@ var Category2 = function(_super) { if (marker) { var markerShape = this.drawMarker(subGroup, marker, item, itemHeight); var spacing = marker.spacing; - var itemMarkerSpacing = get_default(item, ["marker", "spacing"]); - if (is_number_default(itemMarkerSpacing)) { + var itemMarkerSpacing = (0, import_util95.get)(item, ["marker", "spacing"]); + if ((0, import_util95.isNumber)(itemMarkerSpacing)) { spacing = itemMarkerSpacing; } curX = markerShape.getBBox().maxX + spacing; @@ -47845,7 +53938,7 @@ var Category2 = function(_super) { if (itemName) { var nameShape = this.drawItemText(subGroup, "name", itemName, item, itemHeight, curX, index2); if (itemWidth) { - ellipsisLabel(true, nameShape, clamp_default(itemWidth - curX, 0, itemWidth)); + ellipsisLabel(true, nameShape, (0, import_util95.clamp)(itemWidth - curX, 0, itemWidth)); } curX = nameShape.getBBox().maxX + itemName.spacing; } @@ -47857,9 +53950,9 @@ var Category2 = function(_super) { textAlign: "right", x: itemWidth }); - ellipsisLabel(true, valueShape, clamp_default(itemWidth - curX, 0, itemWidth), "head"); + ellipsisLabel(true, valueShape, (0, import_util95.clamp)(itemWidth - curX, 0, itemWidth), "head"); } else { - ellipsisLabel(true, valueShape, clamp_default(itemWidth - curX, 0, itemWidth)); + ellipsisLabel(true, valueShape, (0, import_util95.clamp)(itemWidth - curX, 0, itemWidth)); } } curX = valueShape.getBBox().maxX + itemValue.spacing; @@ -47893,7 +53986,7 @@ var Category2 = function(_super) { var itemWidth = this.get("itemWidth"); var itemSpacing = this.get("itemSpacing"); var itemHeight = this.getItemHeight(); - var pageNavigator = deep_mix_default({}, DEFAULT_PAGE_NAVIGATOR, this.get("pageNavigator")); + var pageNavigator = (0, import_util95.deepMix)({}, DEFAULT_PAGE_NAVIGATOR, this.get("pageNavigator")); var navigation = this.drawNavigation(container2, layout6, "00/00", pageNavigator); var navigationBBox = navigation.getBBox(); var currentPoint = { x: startX, y: startY }; @@ -47906,7 +53999,7 @@ var Category2 = function(_super) { var maxRow = this.get("maxRow") || 1; var maxRowHeight_1 = itemHeight + (maxRow === 1 ? 0 : itemMarginBottom); this.pageHeight = maxRowHeight_1 * maxRow; - each_default(subGroups, function(item) { + (0, import_util95.each)(subGroups, function(item) { var bbox = item.getBBox(); var width2 = itemWidth || bbox.width; if (widthLimit && widthLimit < currentPoint.x + width2 + itemSpacing || maxWidth < currentPoint.x + width2 + itemSpacing + navigationBBox.width) { @@ -47935,7 +54028,7 @@ var Category2 = function(_super) { currentPoint.x += width2 + itemSpacing; }); } else { - each_default(subGroups, function(item) { + (0, import_util95.each)(subGroups, function(item) { var bbox = item.getBBox(); if (bbox.width > pageWidth) { pageWidth = bbox.width; @@ -47950,7 +54043,7 @@ var Category2 = function(_super) { this.pageWidth = pageWidth; this.pageHeight = maxHeight - Math.max(navigationBBox.height, itemHeight + itemMarginBottom); var cntPerPage_1 = Math.floor(this.pageHeight / (itemHeight + itemMarginBottom)); - each_default(subGroups, function(item, index2) { + (0, import_util95.each)(subGroups, function(item, index2) { if (index2 !== 0 && index2 % cntPerPage_1 === 0) { pages += 1; currentPoint.x += pageWidth; @@ -47996,14 +54089,14 @@ var Category2 = function(_super) { this.updateNavigation(navigation); itemGroup.attr("matrix", this.getCurrentNavigationMatrix()); }; - Category3.prototype.drawNavigation = function(group2, layout6, text, styleCfg) { + Category3.prototype.drawNavigation = function(group3, layout6, text, styleCfg) { var currentPoint = { x: 0, y: 0 }; - var subGroup = this.addGroup(group2, { + var subGroup = this.addGroup(group3, { id: this.getElementId("navigation-group"), name: "legend-navigation" }); - var _a6 = get_default(styleCfg.marker, "style", {}), _b = _a6.size, size2 = _b === void 0 ? 12 : _b, arrowStyle = __rest(_a6, ["size"]); - var leftArrow = this.drawArrow(subGroup, currentPoint, LEFT_ARROW_NAME, layout6 === "horizontal" ? "up" : "left", size2, arrowStyle); + var _a6 = (0, import_util95.get)(styleCfg.marker, "style", {}), _b = _a6.size, size14 = _b === void 0 ? 12 : _b, arrowStyle = __rest(_a6, ["size"]); + var leftArrow = this.drawArrow(subGroup, currentPoint, LEFT_ARROW_NAME, layout6 === "horizontal" ? "up" : "left", size14, arrowStyle); leftArrow.on("click", this.onNavigationBack); var leftArrowBBox = leftArrow.getBBox(); currentPoint.x += leftArrowBBox.width + 2; @@ -48011,16 +54104,16 @@ var Category2 = function(_super) { type: "text", id: this.getElementId("navigation-text"), name: "navigation-text", - attrs: __assign({ x: currentPoint.x, y: currentPoint.y + size2 / 2, text, textBaseline: "middle" }, get_default(styleCfg.text, "style")) + attrs: __assign({ x: currentPoint.x, y: currentPoint.y + size14 / 2, text, textBaseline: "middle" }, (0, import_util95.get)(styleCfg.text, "style")) }); var textBBox = textShape.getBBox(); currentPoint.x += textBBox.width + 2; - var rightArrow = this.drawArrow(subGroup, currentPoint, RIGHT_ARROW_NAME, layout6 === "horizontal" ? "down" : "right", size2, arrowStyle); + var rightArrow = this.drawArrow(subGroup, currentPoint, RIGHT_ARROW_NAME, layout6 === "horizontal" ? "down" : "right", size14, arrowStyle); rightArrow.on("click", this.onNavigationAfter); return subGroup; }; Category3.prototype.updateNavigation = function(navigation) { - var pageNavigator = deep_mix_default({}, DEFAULT_PAGE_NAVIGATOR, this.get("pageNavigator")); + var pageNavigator = (0, import_util95.deepMix)({}, DEFAULT_PAGE_NAVIGATOR, this.get("pageNavigator")); var _a6 = pageNavigator.marker.style, fill = _a6.fill, opacity = _a6.opacity, inactiveFill = _a6.inactiveFill, inactiveOpacity = _a6.inactiveOpacity; var text = this.currentPageIndex + "/" + this.totalPagesCnt; var textShape = navigation ? navigation.getChildren()[1] : this.getElementByLocalId("navigation-text"); @@ -48038,27 +54131,27 @@ var Category2 = function(_super) { cursorX += textShape.getBBox().width + 2; this.updateArrowPath(rightArrow, { x: cursorX, y: 0 }); }; - Category3.prototype.drawArrow = function(group2, currentPoint, name, direction5, size2, style) { + Category3.prototype.drawArrow = function(group3, currentPoint, name, direction3, size14, style) { var x6 = currentPoint.x, y5 = currentPoint.y; - var shape = this.addShape(group2, { + var shape = this.addShape(group3, { type: "path", id: this.getElementId(name), name, attrs: __assign({ - size: size2, - direction: direction5, - path: [["M", x6 + size2 / 2, y5], ["L", x6, y5 + size2], ["L", x6 + size2, y5 + size2], ["Z"]], + size: size14, + direction: direction3, + path: [["M", x6 + size14 / 2, y5], ["L", x6, y5 + size14], ["L", x6 + size14, y5 + size14], ["Z"]], cursor: "pointer" }, style) }); - shape.attr("matrix", getMatrixByAngle({ x: x6 + size2 / 2, y: y5 + size2 / 2 }, ROTATE_MAP[direction5])); + shape.attr("matrix", getMatrixByAngle({ x: x6 + size14 / 2, y: y5 + size14 / 2 }, ROTATE_MAP[direction3])); return shape; }; Category3.prototype.updateArrowPath = function(arrow, point2) { var x6 = point2.x, y5 = point2.y; - var _a6 = arrow.attr(), size2 = _a6.size, direction5 = _a6.direction; - var matrix = getMatrixByAngle({ x: x6 + size2 / 2, y: y5 + size2 / 2 }, ROTATE_MAP[direction5]); - arrow.attr("path", [["M", x6 + size2 / 2, y5], ["L", x6, y5 + size2], ["L", x6 + size2, y5 + size2], ["Z"]]); + var _a6 = arrow.attr(), size14 = _a6.size, direction3 = _a6.direction; + var matrix = getMatrixByAngle({ x: x6 + size14 / 2, y: y5 + size14 / 2 }, ROTATE_MAP[direction3]); + arrow.attr("path", [["M", x6 + size14 / 2, y5], ["L", x6, y5 + size14], ["L", x6 + size14, y5 + size14], ["Z"]]); arrow.attr("matrix", matrix); }; Category3.prototype.getCurrentNavigationMatrix = function() { @@ -48079,7 +54172,7 @@ var Category2 = function(_super) { if (hasStates) { var children = subGroup.getChildren(); var itemStates_1 = this.get("itemStates"); - each_default(children, function(element) { + (0, import_util95.each)(children, function(element) { var name = element.get("name"); var elName = name.split("-")[2]; var statesStyle = getStatesStyle(item, elName, itemStates_1); @@ -48114,6 +54207,7 @@ var Category2 = function(_super) { var category_default = Category2; // node_modules/@antv/component/esm/legend/continuous.js +var import_util96 = __toModule(require_lib()); var HANDLER_HEIGHT_RATIO = 1.4; var HANDLER_TRIANGLE_RATIO = 0.4; var ContinueLegend = function(_super) { @@ -48174,19 +54268,19 @@ var ContinueLegend = function(_super) { max: this.get("max") }; }; - ContinueLegend2.prototype.setRange = function(min7, max8) { + ContinueLegend2.prototype.setRange = function(min13, max15) { this.update({ - min: min7, - max: max8 + min: min13, + max: max15 }); }; ContinueLegend2.prototype.setValue = function(value2) { var originValue = this.getValue(); this.set("value", value2); - var group2 = this.get("group"); + var group3 = this.get("group"); this.resetTrackClip(); if (this.get("slidable")) { - this.resetHandlers(group2); + this.resetHandlers(group3); } this.delegateEmit("valuechanged", { originValue, @@ -48194,27 +54288,27 @@ var ContinueLegend = function(_super) { }); }; ContinueLegend2.prototype.initEvent = function() { - var group2 = this.get("group"); - this.bindSliderEvent(group2); - this.bindRailEvent(group2); - this.bindTrackEvent(group2); + var group3 = this.get("group"); + this.bindSliderEvent(group3); + this.bindRailEvent(group3); + this.bindTrackEvent(group3); }; - ContinueLegend2.prototype.drawLegendContent = function(group2) { - this.drawRail(group2); - this.drawLabels(group2); - this.fixedElements(group2); - this.resetTrack(group2); - this.resetTrackClip(group2); + ContinueLegend2.prototype.drawLegendContent = function(group3) { + this.drawRail(group3); + this.drawLabels(group3); + this.fixedElements(group3); + this.resetTrack(group3); + this.resetTrackClip(group3); if (this.get("slidable")) { - this.resetHandlers(group2); + this.resetHandlers(group3); } }; - ContinueLegend2.prototype.bindSliderEvent = function(group2) { - this.bindHandlersEvent(group2); + ContinueLegend2.prototype.bindSliderEvent = function(group3) { + this.bindHandlersEvent(group3); }; - ContinueLegend2.prototype.bindHandlersEvent = function(group2) { + ContinueLegend2.prototype.bindHandlersEvent = function(group3) { var _this = this; - group2.on("legend-handler-min:drag", function(ev) { + group3.on("legend-handler-min:drag", function(ev) { var minValue = _this.getValueByCanvasPoint(ev.x, ev.y); var currentValue = _this.getCurrentValue(); var maxValue = currentValue[1]; @@ -48223,7 +54317,7 @@ var ContinueLegend = function(_super) { } _this.setValue([minValue, maxValue]); }); - group2.on("legend-handler-max:drag", function(ev) { + group3.on("legend-handler-max:drag", function(ev) { var maxValue = _this.getValueByCanvasPoint(ev.x, ev.y); var currentValue = _this.getCurrentValue(); var minValue = currentValue[0]; @@ -48233,18 +54327,18 @@ var ContinueLegend = function(_super) { _this.setValue([minValue, maxValue]); }); }; - ContinueLegend2.prototype.bindRailEvent = function(group2) { + ContinueLegend2.prototype.bindRailEvent = function(group3) { }; - ContinueLegend2.prototype.bindTrackEvent = function(group2) { + ContinueLegend2.prototype.bindTrackEvent = function(group3) { var _this = this; var prePoint = null; - group2.on("legend-track:dragstart", function(ev) { + group3.on("legend-track:dragstart", function(ev) { prePoint = { x: ev.x, y: ev.y }; }); - group2.on("legend-track:drag", function(ev) { + group3.on("legend-track:drag", function(ev) { if (!prePoint) { return; } @@ -48272,15 +54366,15 @@ var ContinueLegend = function(_super) { y: ev.y }; }); - group2.on("legend-track:dragend", function(ev) { + group3.on("legend-track:dragend", function(ev) { prePoint = null; }); }; - ContinueLegend2.prototype.drawLabels = function(group2) { - this.drawLabel("min", group2); - this.drawLabel("max", group2); + ContinueLegend2.prototype.drawLabels = function(group3) { + this.drawLabel("min", group3); + this.drawLabel("max", group3); }; - ContinueLegend2.prototype.drawLabel = function(name, group2) { + ContinueLegend2.prototype.drawLabel = function(name, group3) { var labelCfg = this.get("label"); var style = labelCfg.style; var labelAlign = labelCfg.align; @@ -48288,11 +54382,11 @@ var ContinueLegend = function(_super) { var value2 = this.get(name); var alignAttrs = this.getLabelAlignAttrs(name, labelAlign); var localId = "label-" + name; - this.addShape(group2, { + this.addShape(group3, { type: "text", id: this.getElementId(localId), name: "legend-label-" + name, - attrs: __assign(__assign({ x: 0, y: 0, text: is_function_default(labelFormatter) ? labelFormatter(value2) : value2 }, style), alignAttrs) + attrs: __assign(__assign({ x: 0, y: 0, text: (0, import_util96.isFunction)(labelFormatter) ? labelFormatter(value2) : value2 }, style), alignAttrs) }); }; ContinueLegend2.prototype.getLabelAlignAttrs = function(name, align) { @@ -48330,16 +54424,16 @@ var ContinueLegend = function(_super) { }; ContinueLegend2.prototype.getRailPath = function(x6, y5, w4, h3) { var railCfg = this.get("rail"); - var size2 = railCfg.size, defaultLength = railCfg.defaultLength, type2 = railCfg.type; + var size14 = railCfg.size, defaultLength = railCfg.defaultLength, type2 = railCfg.type; var isVertical2 = this.isVertical(); var length5 = defaultLength; var width2 = w4; var height = h3; if (!width2) { - width2 = isVertical2 ? size2 : length5; + width2 = isVertical2 ? size14 : length5; } if (!height) { - height = isVertical2 ? length5 : size2; + height = isVertical2 ? length5 : size14; } var path = []; if (type2 === "color") { @@ -48356,10 +54450,10 @@ var ContinueLegend = function(_super) { } return path; }; - ContinueLegend2.prototype.drawRail = function(group2) { + ContinueLegend2.prototype.drawRail = function(group3) { var railCfg = this.get("rail"); var style = railCfg.style; - this.addShape(group2, { + this.addShape(group3, { type: "path", id: this.getElementId("rail"), name: "legend-rail", @@ -48386,17 +54480,17 @@ var ContinueLegend = function(_super) { } return color4; }; - ContinueLegend2.prototype.getTrackPath = function(group2) { - var railShape = this.getRailShape(group2); + ContinueLegend2.prototype.getTrackPath = function(group3) { + var railShape = this.getRailShape(group3); var path = railShape.attr("path"); - return clone_default(path); + return (0, import_util96.clone)(path); }; - ContinueLegend2.prototype.getClipTrackAttrs = function(group2) { + ContinueLegend2.prototype.getClipTrackAttrs = function(group3) { var value2 = this.getCurrentValue(); - var min7 = value2[0], max8 = value2[1]; - var railBBox = this.getRailBBox(group2); - var startPoint = this.getPointByValue(min7, group2); - var endPoint = this.getPointByValue(max8, group2); + var min13 = value2[0], max15 = value2[1]; + var railBBox = this.getRailBBox(group3); + var startPoint = this.getPointByValue(min13, group3); + var endPoint = this.getPointByValue(max15, group3); var isVertical2 = this.isVertical(); var x6; var y5; @@ -48420,21 +54514,21 @@ var ContinueLegend = function(_super) { height }; }; - ContinueLegend2.prototype.getTrackAttrs = function(group2) { + ContinueLegend2.prototype.getTrackAttrs = function(group3) { var trackCfg = this.get("track"); var colors = this.get("colors"); - var path = this.getTrackPath(group2); - return mix({ + var path = this.getTrackPath(group3); + return (0, import_util96.mix)({ path, fill: this.getTrackColor(colors) }, trackCfg.style); }; - ContinueLegend2.prototype.resetTrackClip = function(group2) { - var container2 = group2 || this.get("group"); + ContinueLegend2.prototype.resetTrackClip = function(group3) { + var container2 = group3 || this.get("group"); var trackId = this.getElementId("track"); var trackShape = container2.findById(trackId); var clipShape = trackShape.getClip(); - var attrs = this.getClipTrackAttrs(group2); + var attrs = this.getClipTrackAttrs(group3); if (!clipShape) { trackShape.setClip({ type: "rect", @@ -48444,14 +54538,14 @@ var ContinueLegend = function(_super) { clipShape.attr(attrs); } }; - ContinueLegend2.prototype.resetTrack = function(group2) { + ContinueLegend2.prototype.resetTrack = function(group3) { var trackId = this.getElementId("track"); - var trackShape = group2.findById(trackId); - var trackAttrs = this.getTrackAttrs(group2); + var trackShape = group3.findById(trackId); + var trackAttrs = this.getTrackAttrs(group3); if (trackShape) { trackShape.attr(trackAttrs); } else { - this.addShape(group2, { + this.addShape(group3, { type: "path", id: trackId, draggable: this.get("slidable"), @@ -48460,10 +54554,10 @@ var ContinueLegend = function(_super) { }); } }; - ContinueLegend2.prototype.getPointByValue = function(value2, group2) { - var _a6 = this.getRange(), min7 = _a6.min, max8 = _a6.max; - var percent2 = (value2 - min7) / (max8 - min7); - var bbox = this.getRailBBox(group2); + ContinueLegend2.prototype.getPointByValue = function(value2, group3) { + var _a6 = this.getRange(), min13 = _a6.min, max15 = _a6.max; + var percent2 = (value2 - min13) / (max15 - min13); + var bbox = this.getRailBBox(group3); var isVertcal = this.isVertical(); var point2 = { x: 0, y: 0 }; if (isVertcal) { @@ -48475,12 +54569,12 @@ var ContinueLegend = function(_super) { } return point2; }; - ContinueLegend2.prototype.getRailShape = function(group2) { - var container2 = group2 || this.get("group"); + ContinueLegend2.prototype.getRailShape = function(group3) { + var container2 = group3 || this.get("group"); return container2.findById(this.getElementId("rail")); }; - ContinueLegend2.prototype.getRailBBox = function(group2) { - var railShape = this.getRailShape(group2); + ContinueLegend2.prototype.getRailBBox = function(group3) { + var railShape = this.getRailShape(group3); var bbox = railShape.getBBox(); return bbox; }; @@ -48494,7 +54588,7 @@ var ContinueLegend = function(_super) { return this.get("layout") === "vertical"; }; ContinueLegend2.prototype.getValueByCanvasPoint = function(x6, y5) { - var _a6 = this.getRange(), min7 = _a6.min, max8 = _a6.max; + var _a6 = this.getRange(), min13 = _a6.min, max15 = _a6.max; var bbox = this.getRailCanvasBBox(); var isVertcal = this.isVertical(); var step = this.get("step"); @@ -48504,35 +54598,35 @@ var ContinueLegend = function(_super) { } else { percent2 = (x6 - bbox.minX) / bbox.width; } - var value2 = getValueByPercent(min7, max8, percent2); + var value2 = getValueByPercent(min13, max15, percent2); if (step) { - var count2 = Math.round((value2 - min7) / step); - value2 = min7 + count2 * step; + var count2 = Math.round((value2 - min13) / step); + value2 = min13 + count2 * step; } - if (value2 > max8) { - value2 = max8; + if (value2 > max15) { + value2 = max15; } - if (value2 < min7) { - value2 = min7; + if (value2 < min13) { + value2 = min13; } return value2; }; ContinueLegend2.prototype.getCurrentValue = function() { var value2 = this.get("value"); if (!value2) { - var values2 = this.get("values"); - if (!values2) { + var values4 = this.get("values"); + if (!values4) { return [this.get("min"), this.get("max")]; } - return [Math.max(Math.min.apply(Math, __spreadArrays(values2, [this.get("max")])), this.get("min")), Math.min(Math.max.apply(Math, __spreadArrays(values2, [this.get("min")])), this.get("max"))]; + return [Math.max(Math.min.apply(Math, __spreadArrays(values4, [this.get("max")])), this.get("min")), Math.min(Math.max.apply(Math, __spreadArrays(values4, [this.get("min")])), this.get("max"))]; } return value2; }; - ContinueLegend2.prototype.resetHandlers = function(group2) { + ContinueLegend2.prototype.resetHandlers = function(group3) { var currentValue = this.getCurrentValue(); - var min7 = currentValue[0], max8 = currentValue[1]; - this.resetHandler(group2, "min", min7); - this.resetHandler(group2, "max", max8); + var min13 = currentValue[0], max15 = currentValue[1]; + this.resetHandler(group3, "min", min13); + this.resetHandler(group3, "max", max15); }; ContinueLegend2.prototype.getHandlerPath = function(handlerCfg, point2) { var isVertical2 = this.isVertical(); @@ -48569,17 +54663,17 @@ var ContinueLegend = function(_super) { } return path; }; - ContinueLegend2.prototype.resetHandler = function(group2, name, value2) { - var point2 = this.getPointByValue(value2, group2); + ContinueLegend2.prototype.resetHandler = function(group3, name, value2) { + var point2 = this.getPointByValue(value2, group3); var handlerCfg = this.get("handler"); var path = this.getHandlerPath(handlerCfg, point2); var id = this.getElementId("handler-" + name); - var handlerShape = group2.findById(id); + var handlerShape = group3.findById(id); var isVertical2 = this.isVertical(); if (handlerShape) { handlerShape.attr("path", path); } else { - this.addShape(group2, { + this.addShape(group3, { type: "path", name: "legend-handler-" + name, draggable: true, @@ -48588,10 +54682,10 @@ var ContinueLegend = function(_super) { }); } }; - ContinueLegend2.prototype.fixedElements = function(group2) { - var railShape = group2.findById(this.getElementId("rail")); - var minLabel = group2.findById(this.getElementId("label-min")); - var maxLabel = group2.findById(this.getElementId("label-max")); + ContinueLegend2.prototype.fixedElements = function(group3) { + var railShape = group3.findById(this.getElementId("rail")); + var minLabel = group3.findById(this.getElementId("label-min")); + var maxLabel = group3.findById(this.getElementId("label-max")); var startPoint = this.getDrawPoint(); if (this.isVertical()) { this.fixedVertail(minLabel, maxLabel, railShape, startPoint); @@ -48605,7 +54699,7 @@ var ContinueLegend = function(_super) { var labelCfg = this.get("label"); var labelAlign = labelCfg.align; var spacing = labelCfg.spacing; - var maxLength = this.get("max" + upper_first_default(lengthField)); + var maxLength = this.get("max" + (0, import_util96.upperFirst)(lengthField)); if (maxLength) { var elementsLength = labelAlign === "rail" ? railBBox[lengthField] + minLabelBBox[lengthField] + maxLabelBBox[lengthField] + spacing * 2 : railBBox[lengthField]; var diff2 = elementsLength - maxLength; @@ -48723,6 +54817,9 @@ __export(tooltip_exports, { Html: () => html_default3 }); +// node_modules/@antv/component/esm/tooltip/html.js +var import_util98 = __toModule(require_lib()); + // node_modules/@antv/component/esm/tooltip/css-const.js var css_const_exports = {}; __export(css_const_exports, { @@ -48873,10 +54970,10 @@ function getAlignPoint(x6, y5, offset, width2, height, position2, limitBox) { } // node_modules/@antv/component/esm/tooltip/html.js -function hasOneKey(obj, keys2) { +function hasOneKey(obj, keys6) { var result = false; - each_default(keys2, function(key) { - if (has_key_default(obj, key)) { + (0, import_util98.each)(keys6, function(key) { + if ((0, import_util98.hasKey)(obj, key)) { result = true; return false; } @@ -48988,7 +55085,7 @@ var Tooltip = function(_super) { if (hasOneKey(cfg, ["title", "showTitle"])) { this.resetTitle(); } - if (has_key_default(cfg, "items")) { + if ((0, import_util98.hasKey)(cfg, "items")) { this.renderItems(); } } @@ -49040,7 +55137,7 @@ var Tooltip = function(_super) { var customContent = this.get("customContent"); if (customContent) { var elem = customContent(this.get("title"), this.get("items")); - if (is_element_default(elem)) { + if ((0, import_util98.isElement)(elem)) { node = elem; } else { node = createDom(elem); @@ -49136,10 +55233,10 @@ var Tooltip = function(_super) { var itemTpl = this.get("itemTpl"); var listDom = this.get("listDom"); if (listDom) { - each_default(items, function(item) { + (0, import_util98.each)(items, function(item) { var color4 = esm_default2.toCSSGradient(item.color); var substituteObj = __assign(__assign({}, item), { color: color4 }); - var domStr = substitute_default(itemTpl, substituteObj); + var domStr = (0, import_util98.substitute)(itemTpl, substituteObj); var itemDom = createDom(domStr); listDom.appendChild(itemDom); }); @@ -49163,6 +55260,9 @@ var Tooltip = function(_super) { }(html_component_default); var html_default3 = Tooltip; +// node_modules/@antv/component/esm/slider/slider.js +var import_util101 = __toModule(require_lib()); + // node_modules/@antv/component/esm/trend/constant.js var BACKGROUND_STYLE = { opacity: 0 @@ -49177,8 +55277,9 @@ var AREA_STYLE = { }; // node_modules/@antv/component/esm/trend/path.js +var import_util100 = __toModule(require_lib()); function pointsToPath(points) { - return map_default(points, function(p4, idx) { + return (0, import_util100.map)(points, function(p4, idx) { var command = idx === 0 ? "M" : "L"; var x6 = p4[0], y5 = p4[1]; return [command, x6, y5]; @@ -49192,13 +55293,13 @@ function getSmoothLinePath(points) { return getLinePath(points); } var data3 = []; - each_default(points, function(p4) { - if (!is_equal_default(p4, data3.slice(data3.length - 2))) { + (0, import_util100.each)(points, function(p4) { + if (!(0, import_util100.isEqual)(p4, data3.slice(data3.length - 2))) { data3.push(p4[0], p4[1]); } }); var path = catmull_rom_2_bezier_default(data3, false); - var _a6 = head(points), x6 = _a6[0], y5 = _a6[1]; + var _a6 = (0, import_util100.head)(points), x6 = _a6[0], y5 = _a6[1]; path.unshift(["M", x6, y5]); return path; } @@ -49210,11 +55311,11 @@ function dataToPath(data3, width2, height, smooth) { values: data3 }); var x6 = new base_default5({ - values: map_default(data3, function(v3, idx) { + values: (0, import_util100.map)(data3, function(v3, idx) { return idx; }) }); - var points = map_default(data3, function(v3, idx) { + var points = (0, import_util100.map)(data3, function(v3, idx) { return [x6.scale(idx) * width2, height - y5.scale(v3) * height]; }); return smooth ? getSmoothLinePath(points) : getLinePath(points); @@ -49245,9 +55346,9 @@ var Trend = function(_super) { var cfg = _super.prototype.getDefaultCfg.call(this); return __assign(__assign({}, cfg), { name: "trend", x: 0, y: 0, width: 200, height: 16, smooth: true, isArea: false, data: [], backgroundStyle: BACKGROUND_STYLE, lineStyle: LINE_STYLE, areaStyle: AREA_STYLE }); }; - Trend3.prototype.renderInner = function(group2) { + Trend3.prototype.renderInner = function(group3) { var _a6 = this.cfg, width2 = _a6.width, height = _a6.height, data3 = _a6.data, smooth = _a6.smooth, isArea = _a6.isArea, backgroundStyle = _a6.backgroundStyle, lineStyle = _a6.lineStyle, areaStyle = _a6.areaStyle; - this.addShape(group2, { + this.addShape(group3, { id: this.getElementId("background"), type: "rect", attrs: __assign({ @@ -49258,14 +55359,14 @@ var Trend = function(_super) { }, backgroundStyle) }); var path = dataToPath(data3, width2, height, smooth); - this.addShape(group2, { + this.addShape(group3, { id: this.getElementId("line"), type: "path", attrs: __assign({ path }, lineStyle) }); if (isArea) { var areaPath = linePathToAreaPath(path, width2, height, data3); - this.addShape(group2, { + this.addShape(group3, { id: this.getElementId("area"), type: "path", attrs: __assign({ path: areaPath }, areaStyle) @@ -49300,10 +55401,10 @@ var Handler = function(_super) { var cfg = _super.prototype.getDefaultCfg.call(this); return __assign(__assign({}, cfg), { name: "handler", x: 0, y: 0, width: 10, height: 24, style: DEFAULT_HANDLER_STYLE }); }; - Handler3.prototype.renderInner = function(group2) { + Handler3.prototype.renderInner = function(group3) { var _a6 = this.cfg, width2 = _a6.width, height = _a6.height, style = _a6.style; var fill = style.fill, stroke = style.stroke, radius = style.radius, opacity = style.opacity, cursor = style.cursor; - this.addShape(group2, { + this.addShape(group3, { type: "rect", id: this.getElementId("background"), attrs: { @@ -49322,7 +55423,7 @@ var Handler = function(_super) { var x22 = 2 / 3 * width2; var y1 = 1 / 4 * height; var y22 = 3 / 4 * height; - this.addShape(group2, { + this.addShape(group3, { id: this.getElementId("line-left"), type: "line", attrs: { @@ -49334,7 +55435,7 @@ var Handler = function(_super) { cursor } }); - this.addShape(group2, { + this.addShape(group3, { id: this.getElementId("line-right"), type: "line", attrs: { @@ -49411,8 +55512,8 @@ var Slider = function(_super) { var event = e4.originalEvent; event.stopPropagation(); event.preventDefault(); - _this.prevX = get_default(event, "touches.0.pageX", event.pageX); - _this.prevY = get_default(event, "touches.0.pageY", event.pageY); + _this.prevX = (0, import_util101.get)(event, "touches.0.pageX", event.pageX); + _this.prevY = (0, import_util101.get)(event, "touches.0.pageY", event.pageY); var containerDOM = _this.getContainerDOM(); containerDOM.addEventListener("mousemove", _this.onMouseMove); containerDOM.addEventListener("mouseup", _this.onMouseUp); @@ -49427,8 +55528,8 @@ var Slider = function(_super) { var originValue = [_this.get("start"), _this.get("end")]; event.stopPropagation(); event.preventDefault(); - var x6 = get_default(event, "touches.0.pageX", event.pageX); - var y5 = get_default(event, "touches.0.pageY", event.pageY); + var x6 = (0, import_util101.get)(event, "touches.0.pageX", event.pageX); + var y5 = (0, import_util101.get)(event, "touches.0.pageY", event.pageY); var offsetX = x6 - _this.prevX; var offsetXRange = _this.adjustOffsetRange(offsetX / width2); _this.updateStartEnd(offsetXRange); @@ -49458,13 +55559,13 @@ var Slider = function(_super) { }; return _this; } - Slider3.prototype.setRange = function(min7, max8) { - this.set("minLimit", min7); - this.set("maxLimit", max8); + Slider3.prototype.setRange = function(min13, max15) { + this.set("minLimit", min13); + this.set("maxLimit", max15); var oldStart = this.get("start"); var oldEnd = this.get("end"); - var newStart = clamp_default(oldStart, min7, max8); - var newEnd = clamp_default(oldEnd, min7, max8); + var newStart = (0, import_util101.clamp)(oldStart, min13, max15); + var newEnd = (0, import_util101.clamp)(oldEnd, min13, max15); if (!this.get("isInit") && (oldStart !== newStart || oldEnd !== newEnd)) { this.setValue([newStart, newEnd]); } @@ -49477,11 +55578,11 @@ var Slider = function(_super) { }; Slider3.prototype.setValue = function(value2) { var range = this.getRange(); - if (is_array_default(value2) && value2.length === 2) { + if ((0, import_util101.isArray)(value2) && value2.length === 2) { var originValue = [this.get("start"), this.get("end")]; this.update({ - start: clamp_default(value2[0], range.min, range.max), - end: clamp_default(value2[1], range.min, range.max) + start: (0, import_util101.clamp)(value2[0], range.min, range.max), + end: (0, import_util101.clamp)(value2[1], range.min, range.max) }); if (!this.get("updateAutoRender")) { this.render(); @@ -49507,11 +55608,11 @@ var Slider = function(_super) { Slider3.prototype.update = function(cfg) { var start = cfg.start, end2 = cfg.end; var validCfg = __assign({}, cfg); - if (!is_nil_default(start)) { - validCfg.start = clamp_default(start, 0, 1); + if (!(0, import_util101.isNil)(start)) { + validCfg.start = (0, import_util101.clamp)(start, 0, 1); } - if (!is_nil_default(end2)) { - validCfg.end = clamp_default(end2, 0, 1); + if (!(0, import_util101.isNil)(end2)) { + validCfg.end = (0, import_util101.clamp)(end2, 0, 1); } _super.prototype.update.call(this, validCfg); this.minHandler = this.getChildComponentById(this.getElementId("minHandler")); @@ -49519,21 +55620,21 @@ var Slider = function(_super) { this.trend = this.getChildComponentById(this.getElementId("trend")); }; Slider3.prototype.init = function() { - this.set("start", clamp_default(this.get("start"), 0, 1)); - this.set("end", clamp_default(this.get("end"), 0, 1)); + this.set("start", (0, import_util101.clamp)(this.get("start"), 0, 1)); + this.set("end", (0, import_util101.clamp)(this.get("end"), 0, 1)); _super.prototype.init.call(this); }; Slider3.prototype.render = function() { _super.prototype.render.call(this); this.updateUI(this.getElementByLocalId("foreground"), this.getElementByLocalId("minText"), this.getElementByLocalId("maxText")); }; - Slider3.prototype.renderInner = function(group2) { + Slider3.prototype.renderInner = function(group3) { var _a6 = this.cfg, start = _a6.start, end2 = _a6.end, width2 = _a6.width, height = _a6.height, _b = _a6.trendCfg, trendCfg = _b === void 0 ? {} : _b, minText = _a6.minText, maxText = _a6.maxText, _c = _a6.backgroundStyle, backgroundStyle = _c === void 0 ? {} : _c, _d = _a6.foregroundStyle, foregroundStyle = _d === void 0 ? {} : _d, _e = _a6.textStyle, textStyle2 = _e === void 0 ? {} : _e; - var handlerStyle = deep_mix_default({}, DEFAULT_HANDLER_STYLE, this.cfg.handlerStyle); - var min7 = start * width2; - var max8 = end2 * width2; - if (size(get_default(trendCfg, "data"))) { - this.trend = this.addComponent(group2, __assign({ + var handlerStyle = (0, import_util101.deepMix)({}, DEFAULT_HANDLER_STYLE, this.cfg.handlerStyle); + var min13 = start * width2; + var max15 = end2 * width2; + if ((0, import_util101.size)((0, import_util101.get)(trendCfg, "data"))) { + this.trend = this.addComponent(group3, __assign({ component: Trend, id: this.getElementId("trend"), x: 0, @@ -49542,7 +55643,7 @@ var Slider = function(_super) { height }, trendCfg)); } - this.addShape(group2, { + this.addShape(group3, { id: this.getElementId("background"), type: "rect", attrs: __assign({ @@ -49552,7 +55653,7 @@ var Slider = function(_super) { height }, backgroundStyle) }); - var minTextShape = this.addShape(group2, { + var minTextShape = this.addShape(group3, { id: this.getElementId("minText"), type: "text", attrs: __assign({ @@ -49562,7 +55663,7 @@ var Slider = function(_super) { silent: false }, textStyle2) }); - var maxTextShape = this.addShape(group2, { + var maxTextShape = this.addShape(group3, { id: this.getElementId("maxText"), type: "text", attrs: __assign({ @@ -49572,7 +55673,7 @@ var Slider = function(_super) { silent: false }, textStyle2) }); - var foregroundShape = this.addShape(group2, { + var foregroundShape = this.addShape(group3, { id: this.getElementId("foreground"), name: "foreground", type: "rect", @@ -49581,9 +55682,9 @@ var Slider = function(_super) { height }, foregroundStyle) }); - var handlerWidth = get_default(handlerStyle, "width", DEFAULT_HANDLER_WIDTH); - var handlerHeight = get_default(handlerStyle, "height", 24); - this.minHandler = this.addComponent(group2, { + var handlerWidth = (0, import_util101.get)(handlerStyle, "width", DEFAULT_HANDLER_WIDTH); + var handlerHeight = (0, import_util101.get)(handlerStyle, "height", 24); + this.minHandler = this.addComponent(group3, { component: Handler, id: this.getElementId("minHandler"), name: "handler-min", @@ -49594,7 +55695,7 @@ var Slider = function(_super) { cursor: "ew-resize", style: handlerStyle }); - this.maxHandler = this.addComponent(group2, { + this.maxHandler = this.addComponent(group3, { component: Handler, id: this.getElementId("maxHandler"), name: "handler-max", @@ -49617,8 +55718,8 @@ var Slider = function(_super) { }; Slider3.prototype.updateUI = function(foregroundShape, minTextShape, maxTextShape) { var _a6 = this.cfg, start = _a6.start, end2 = _a6.end, width2 = _a6.width, minText = _a6.minText, maxText = _a6.maxText, handlerStyle = _a6.handlerStyle, height = _a6.height; - var min7 = start * width2; - var max8 = end2 * width2; + var min13 = start * width2; + var max15 = end2 * width2; if (this.trend) { this.trend.update({ width: width2, @@ -49628,42 +55729,42 @@ var Slider = function(_super) { this.trend.render(); } } - foregroundShape.attr("x", min7); - foregroundShape.attr("width", max8 - min7); - var handlerWidth = get_default(handlerStyle, "width", DEFAULT_HANDLER_WIDTH); + foregroundShape.attr("x", min13); + foregroundShape.attr("width", max15 - min13); + var handlerWidth = (0, import_util101.get)(handlerStyle, "width", DEFAULT_HANDLER_WIDTH); minTextShape.attr("text", minText); maxTextShape.attr("text", maxText); - var _b = this._dodgeText([min7, max8], minTextShape, maxTextShape), minAttrs = _b[0], maxAttrs = _b[1]; + var _b = this._dodgeText([min13, max15], minTextShape, maxTextShape), minAttrs = _b[0], maxAttrs = _b[1]; if (this.minHandler) { this.minHandler.update({ - x: min7 - handlerWidth / 2 + x: min13 - handlerWidth / 2 }); if (!this.get("updateAutoRender")) { this.minHandler.render(); } } - each_default(minAttrs, function(v3, k4) { + (0, import_util101.each)(minAttrs, function(v3, k4) { return minTextShape.attr(k4, v3); }); if (this.maxHandler) { this.maxHandler.update({ - x: max8 - handlerWidth / 2 + x: max15 - handlerWidth / 2 }); if (!this.get("updateAutoRender")) { this.maxHandler.render(); } } - each_default(maxAttrs, function(v3, k4) { + (0, import_util101.each)(maxAttrs, function(v3, k4) { return maxTextShape.attr(k4, v3); }); }; Slider3.prototype.bindEvents = function() { - var group2 = this.get("group"); - group2.on("handler-min:mousedown", this.onMouseDown("minHandler")); - group2.on("handler-min:touchstart", this.onMouseDown("minHandler")); - group2.on("handler-max:mousedown", this.onMouseDown("maxHandler")); - group2.on("handler-max:touchstart", this.onMouseDown("maxHandler")); - var foreground = group2.findById(this.getElementId("foreground")); + var group3 = this.get("group"); + group3.on("handler-min:mousedown", this.onMouseDown("minHandler")); + group3.on("handler-min:touchstart", this.onMouseDown("minHandler")); + group3.on("handler-max:mousedown", this.onMouseDown("maxHandler")); + group3.on("handler-max:touchstart", this.onMouseDown("maxHandler")); + var foreground = group3.findById(this.getElementId("foreground")); foreground.on("mousedown", this.onMouseDown("foreground")); foreground.on("touchstart", this.onMouseDown("foreground")); }; @@ -49671,19 +55772,19 @@ var Slider = function(_super) { var _a6 = this.cfg, start = _a6.start, end2 = _a6.end; switch (this.currentTarget) { case "minHandler": { - var min7 = 0 - start; - var max8 = 1 - start; - return Math.min(max8, Math.max(min7, offsetRange)); + var min13 = 0 - start; + var max15 = 1 - start; + return Math.min(max15, Math.max(min13, offsetRange)); } case "maxHandler": { - var min7 = 0 - end2; - var max8 = 1 - end2; - return Math.min(max8, Math.max(min7, offsetRange)); + var min13 = 0 - end2; + var max15 = 1 - end2; + return Math.min(max15, Math.max(min13, offsetRange)); } case "foreground": { - var min7 = 0 - start; - var max8 = 1 - end2; - return Math.min(max8, Math.max(min7, offsetRange)); + var min13 = 0 - start; + var max15 = 1 - end2; + return Math.min(max15, Math.max(min13, offsetRange)); } } }; @@ -49708,18 +55809,18 @@ var Slider = function(_super) { var _a6, _b; var _c = this.cfg, handlerStyle = _c.handlerStyle, width2 = _c.width; var PADDING2 = 2; - var handlerWidth = get_default(handlerStyle, "width", DEFAULT_HANDLER_WIDTH); - var min7 = range[0], max8 = range[1]; + var handlerWidth = (0, import_util101.get)(handlerStyle, "width", DEFAULT_HANDLER_WIDTH); + var min13 = range[0], max15 = range[1]; var sorted = false; - if (min7 > max8) { - _a6 = [max8, min7], min7 = _a6[0], max8 = _a6[1]; + if (min13 > max15) { + _a6 = [max15, min13], min13 = _a6[0], max15 = _a6[1]; _b = [maxTextShape, minTextShape], minTextShape = _b[0], maxTextShape = _b[1]; sorted = true; } var minBBox = minTextShape.getBBox(); var maxBBox = maxTextShape.getBBox(); - var minAttrs = minBBox.width > min7 - PADDING2 ? { x: min7 + handlerWidth / 2 + PADDING2, textAlign: "left" } : { x: min7 - handlerWidth / 2 - PADDING2, textAlign: "right" }; - var maxAttrs = maxBBox.width > width2 - max8 - PADDING2 ? { x: max8 - handlerWidth / 2 - PADDING2, textAlign: "right" } : { x: max8 + handlerWidth / 2 + PADDING2, textAlign: "left" }; + var minAttrs = minBBox.width > min13 - PADDING2 ? { x: min13 + handlerWidth / 2 + PADDING2, textAlign: "left" } : { x: min13 - handlerWidth / 2 - PADDING2, textAlign: "right" }; + var maxAttrs = maxBBox.width > width2 - max15 - PADDING2 ? { x: max15 - handlerWidth / 2 - PADDING2, textAlign: "right" } : { x: max15 + handlerWidth / 2 + PADDING2, textAlign: "left" }; return !sorted ? [minAttrs, maxAttrs] : [maxAttrs, minAttrs]; }; Slider3.prototype.draw = function() { @@ -49738,6 +55839,7 @@ var Slider = function(_super) { }(group_component_default); // node_modules/@antv/component/esm/scrollbar/scrollbar.js +var import_util102 = __toModule(require_lib()); var DEFAULT_STYLE = { trackColor: "rgba(0,0,0,0)", thumbColor: "rgba(0,0,0,0.15)", @@ -49754,13 +55856,13 @@ var Scrollbar = function(_super) { __extends(Scrollbar3, _super); function Scrollbar3() { var _this = _super !== null && _super.apply(this, arguments) || this; - _this.clearEvents = noop_default; + _this.clearEvents = import_util102.noop; _this.onStartEvent = function(isMobile) { return function(e4) { _this.isMobile = isMobile; e4.originalEvent.preventDefault(); - var clientX = isMobile ? get_default(e4.originalEvent, "touches.0.clientX") : e4.clientX; - var clientY = isMobile ? get_default(e4.originalEvent, "touches.0.clientY") : e4.clientY; + var clientX = isMobile ? (0, import_util102.get)(e4.originalEvent, "touches.0.clientX") : e4.clientX; + var clientY = isMobile ? (0, import_util102.get)(e4.originalEvent, "touches.0.clientY") : e4.clientY; _this.startPos = _this.cfg.isHorizontal ? clientX : clientY; _this.bindLaterEvent(); }; @@ -49790,8 +55892,8 @@ var Scrollbar = function(_super) { _this.onMouseMove = function(e4) { var _a6 = _this.cfg, isHorizontal2 = _a6.isHorizontal, thumbOffset = _a6.thumbOffset; e4.preventDefault(); - var clientX = _this.isMobile ? get_default(e4, "touches.0.clientX") : e4.clientX; - var clientY = _this.isMobile ? get_default(e4, "touches.0.clientY") : e4.clientY; + var clientX = _this.isMobile ? (0, import_util102.get)(e4, "touches.0.clientX") : e4.clientX; + var clientY = _this.isMobile ? (0, import_util102.get)(e4, "touches.0.clientY") : e4.clientY; var endPos = isHorizontal2 ? clientX : clientY; var diff2 = endPos - _this.startPos; _this.startPos = endPos; @@ -49822,25 +55924,25 @@ var Scrollbar = function(_super) { }; return _this; } - Scrollbar3.prototype.setRange = function(min7, max8) { - this.set("minLimit", min7); - this.set("maxLimit", max8); + Scrollbar3.prototype.setRange = function(min13, max15) { + this.set("minLimit", min13); + this.set("maxLimit", max15); var curValue = this.getValue(); - var newValue = clamp_default(curValue, min7, max8); + var newValue = (0, import_util102.clamp)(curValue, min13, max15); if (curValue !== newValue && !this.get("isInit")) { this.setValue(newValue); } }; Scrollbar3.prototype.getRange = function() { - var min7 = this.get("minLimit") || 0; - var max8 = this.get("maxLimit") || 1; - return { min: min7, max: max8 }; + var min13 = this.get("minLimit") || 0; + var max15 = this.get("maxLimit") || 1; + return { min: min13, max: max15 }; }; Scrollbar3.prototype.setValue = function(value2) { var range = this.getRange(); var originalValue = this.getValue(); this.update({ - thumbOffset: (this.get("trackLen") - this.get("thumbLen")) * clamp_default(value2, range.min, range.max) + thumbOffset: (this.get("trackLen") - this.get("thumbLen")) * (0, import_util102.clamp)(value2, range.min, range.max) }); this.delegateEmit("valuechange", { originalValue, @@ -49848,15 +55950,15 @@ var Scrollbar = function(_super) { }); }; Scrollbar3.prototype.getValue = function() { - return clamp_default(this.get("thumbOffset") / (this.get("trackLen") - this.get("thumbLen")), 0, 1); + return (0, import_util102.clamp)(this.get("thumbOffset") / (this.get("trackLen") - this.get("thumbLen")), 0, 1); }; Scrollbar3.prototype.getDefaultCfg = function() { var cfg = _super.prototype.getDefaultCfg.call(this); return __assign(__assign({}, cfg), { name: "scrollbar", isHorizontal: true, minThumbLen: 20, thumbOffset: 0, theme: DEFAULT_THEME }); }; - Scrollbar3.prototype.renderInner = function(group2) { - this.renderTrackShape(group2); - this.renderThumbShape(group2); + Scrollbar3.prototype.renderInner = function(group3) { + this.renderTrackShape(group3); + this.renderThumbShape(group3); }; Scrollbar3.prototype.applyOffset = function() { this.moveElementTo(this.get("group"), { @@ -49867,58 +55969,58 @@ var Scrollbar = function(_super) { Scrollbar3.prototype.initEvent = function() { this.bindEvents(); }; - Scrollbar3.prototype.renderTrackShape = function(group2) { + Scrollbar3.prototype.renderTrackShape = function(group3) { var _a6 = this.cfg, trackLen = _a6.trackLen, _b = _a6.theme, theme4 = _b === void 0 ? { default: {} } : _b; - var _c = deep_mix_default({}, DEFAULT_THEME, theme4).default, lineCap = _c.lineCap, trackColor = _c.trackColor, themeSize = _c.size; - var size2 = get_default(this.cfg, "size", themeSize); + var _c = (0, import_util102.deepMix)({}, DEFAULT_THEME, theme4).default, lineCap = _c.lineCap, trackColor = _c.trackColor, themeSize = _c.size; + var size14 = (0, import_util102.get)(this.cfg, "size", themeSize); var attrs = this.get("isHorizontal") ? { - x1: 0 + size2 / 2, - y1: size2 / 2, - x2: trackLen - size2 / 2, - y2: size2 / 2, - lineWidth: size2, + x1: 0 + size14 / 2, + y1: size14 / 2, + x2: trackLen - size14 / 2, + y2: size14 / 2, + lineWidth: size14, stroke: trackColor, lineCap } : { - x1: size2 / 2, - y1: 0 + size2 / 2, - x2: size2 / 2, - y2: trackLen - size2 / 2, - lineWidth: size2, + x1: size14 / 2, + y1: 0 + size14 / 2, + x2: size14 / 2, + y2: trackLen - size14 / 2, + lineWidth: size14, stroke: trackColor, lineCap }; - return this.addShape(group2, { + return this.addShape(group3, { id: this.getElementId("track"), name: "track", type: "line", attrs }); }; - Scrollbar3.prototype.renderThumbShape = function(group2) { + Scrollbar3.prototype.renderThumbShape = function(group3) { var _a6 = this.cfg, thumbOffset = _a6.thumbOffset, thumbLen = _a6.thumbLen, theme4 = _a6.theme; - var _b = deep_mix_default({}, DEFAULT_THEME, theme4).default, themeSize = _b.size, lineCap = _b.lineCap, thumbColor = _b.thumbColor; - var size2 = get_default(this.cfg, "size", themeSize); + var _b = (0, import_util102.deepMix)({}, DEFAULT_THEME, theme4).default, themeSize = _b.size, lineCap = _b.lineCap, thumbColor = _b.thumbColor; + var size14 = (0, import_util102.get)(this.cfg, "size", themeSize); var attrs = this.get("isHorizontal") ? { - x1: thumbOffset + size2 / 2, - y1: size2 / 2, - x2: thumbOffset + thumbLen - size2 / 2, - y2: size2 / 2, - lineWidth: size2, + x1: thumbOffset + size14 / 2, + y1: size14 / 2, + x2: thumbOffset + thumbLen - size14 / 2, + y2: size14 / 2, + lineWidth: size14, stroke: thumbColor, lineCap, cursor: "default" } : { - x1: size2 / 2, - y1: thumbOffset + size2 / 2, - x2: size2 / 2, - y2: thumbOffset + thumbLen - size2 / 2, - lineWidth: size2, + x1: size14 / 2, + y1: thumbOffset + size14 / 2, + x2: size14 / 2, + y2: thumbOffset + thumbLen - size14 / 2, + lineWidth: size14, stroke: thumbColor, lineCap, cursor: "default" }; - return this.addShape(group2, { + return this.addShape(group3, { id: this.getElementId("thumb"), name: "thumb", type: "line", @@ -49926,14 +56028,14 @@ var Scrollbar = function(_super) { }); }; Scrollbar3.prototype.bindEvents = function() { - var group2 = this.get("group"); - group2.on("mousedown", this.onStartEvent(false)); - group2.on("mouseup", this.onMouseUp); - group2.on("touchstart", this.onStartEvent(true)); - group2.on("touchend", this.onMouseUp); - var trackShape = group2.findById(this.getElementId("track")); + var group3 = this.get("group"); + group3.on("mousedown", this.onStartEvent(false)); + group3.on("mouseup", this.onMouseUp); + group3.on("touchstart", this.onStartEvent(true)); + group3.on("touchend", this.onMouseUp); + var trackShape = group3.findById(this.getElementId("track")); trackShape.on("click", this.onTrackClick); - var thumbShape = group2.findById(this.getElementId("thumb")); + var thumbShape = group3.findById(this.getElementId("thumb")); thumbShape.on("mouseover", this.onThumbMouseOver); thumbShape.on("mouseout", this.onThumbMouseOut); }; @@ -49960,7 +56062,7 @@ var Scrollbar = function(_super) { } }; Scrollbar3.prototype.updateThumbOffset = function(offset) { - var _a6 = this.cfg, thumbOffset = _a6.thumbOffset, isHorizontal2 = _a6.isHorizontal, thumbLen = _a6.thumbLen, size2 = _a6.size; + var _a6 = this.cfg, thumbOffset = _a6.thumbOffset, isHorizontal2 = _a6.isHorizontal, thumbLen = _a6.thumbLen, size14 = _a6.size; var newOffset = this.validateRange(offset); if (newOffset === thumbOffset) { return; @@ -49968,13 +56070,13 @@ var Scrollbar = function(_super) { var thumbShape = this.getElementByLocalId("thumb"); if (isHorizontal2) { thumbShape.attr({ - x1: newOffset + size2 / 2, - x2: newOffset + thumbLen - size2 / 2 + x1: newOffset + size14 / 2, + x2: newOffset + thumbLen - size14 / 2 }); } else { thumbShape.attr({ - y1: newOffset + size2 / 2, - y2: newOffset + thumbLen - size2 / 2 + y1: newOffset + size14 / 2, + y2: newOffset + thumbLen - size14 / 2 }); } this.emitOffsetChange(newOffset); @@ -49984,7 +56086,7 @@ var Scrollbar = function(_super) { this.cfg.thumbOffset = offset; this.emit("scrollchange", { thumbOffset: offset, - ratio: clamp_default(offset / (trackLen - thumbLen), 0, 1) + ratio: (0, import_util102.clamp)(offset / (trackLen - thumbLen), 0, 1) }); this.delegateEmit("valuechange", { originalValue, @@ -50004,15 +56106,16 @@ var ContinuousLegend = legend_exports.Continuous; var HtmlTooltip = tooltip_exports.Html; // node_modules/@antv/g2/esm/util/graphics.js +var import_util103 = __toModule(require_lib()); function getPointsBox(points) { - if (is_empty_default(points)) { + if ((0, import_util103.isEmpty)(points)) { return null; } var minX = points[0].x; var maxX = points[0].x; var minY = points[0].y; var maxY2 = points[0].y; - each_default(points, function(point2) { + (0, import_util103.each)(points, function(point2) { minX = minX > point2.x ? point2.x : minX; maxX = maxX < point2.x ? point2.x : maxX; minY = minY > point2.y ? point2.y : minY; @@ -50031,7 +56134,7 @@ function uniqueValues(array) { return Array.from(new Set(array)).length === 1; } function mid(array) { - return (min_default(array) + max_default(array)) / 2; + return ((0, import_util103.min)(array) + (0, import_util103.max)(array)) / 2; } function polarToCartesian(centerX, centerY, radius, angleInRadian) { return { @@ -50080,7 +56183,7 @@ function getSectorPath(centerX, centerY, radius, startAngleInRadian, endAngleInR function getArcPath(centerX, centerY, radius, startAngleInRadian, endAngleInRadian) { var start = polarToCartesian(centerX, centerY, radius, startAngleInRadian); var end2 = polarToCartesian(centerX, centerY, radius, endAngleInRadian); - if (isNumberEqual(endAngleInRadian - startAngleInRadian, Math.PI * 2)) { + if ((0, import_util103.isNumberEqual)(endAngleInRadian - startAngleInRadian, Math.PI * 2)) { var middlePoint = polarToCartesian(centerX, centerY, radius, startAngleInRadian + Math.PI); return [ ["M", start.x, start.y], @@ -50119,7 +56222,7 @@ function getAngle3(shapeModel, coordinate11) { }; } function getPolygonCentroid(xs, ys) { - if (is_number_default(xs) && is_number_default(ys)) { + if ((0, import_util103.isNumber)(xs) && (0, import_util103.isNumber)(ys)) { return [xs, ys]; } xs = xs; @@ -50146,7 +56249,7 @@ function getPolygonCentroid(xs, ys) { function getReplaceAttrs(sourceShape, targetShape) { var originAttrs = sourceShape.attr(); var newAttrs = targetShape.attr(); - each_default(originAttrs, function(v3, k4) { + (0, import_util103.each)(originAttrs, function(v3, k4) { if (newAttrs[k4] === void 0) { newAttrs[k4] = void 0; } @@ -50155,15 +56258,16 @@ function getReplaceAttrs(sourceShape, targetShape) { } // node_modules/@antv/g2/esm/util/helper.js +var import_util104 = __toModule(require_lib()); function isBetween2(value2, start, end2) { - var min7 = Math.min(start, end2); - var max8 = Math.max(start, end2); - return value2 >= min7 && value2 <= max8; + var min13 = Math.min(start, end2); + var max15 = Math.max(start, end2); + return value2 >= min13 && value2 <= max15; } function padEnd(source, targetLength, padValue) { - if (is_string_default(source)) { + if ((0, import_util104.isString)(source)) { return source.padEnd(targetLength, padValue); - } else if (is_array_default(source)) { + } else if ((0, import_util104.isArray)(source)) { var sourceLength = source.length; if (sourceLength < targetLength) { var diff2 = targetLength - sourceLength; @@ -50174,32 +56278,33 @@ function padEnd(source, targetLength, padValue) { } return source; } -function omit(obj, keys2) { +function omit(obj, keys6) { if (typeof obj === "object") { - keys2.forEach(function(key) { + keys6.forEach(function(key) { delete obj[key]; }); } return obj; } -function uniq2(sourceArray, targetArray, map6) { +function uniq(sourceArray, targetArray, map23) { if (targetArray === void 0) { targetArray = []; } - if (map6 === void 0) { - map6 = new Map(); + if (map23 === void 0) { + map23 = new Map(); } for (var _i = 0, sourceArray_1 = sourceArray; _i < sourceArray_1.length; _i++) { var source = sourceArray_1[_i]; - if (!map6.has(source)) { + if (!map23.has(source)) { targetArray.push(source); - map6.set(source, true); + map23.set(source, true); } } return targetArray; } // node_modules/@antv/g2/esm/util/bbox.js +var import_util105 = __toModule(require_lib()); var BBox = function() { function BBox2(x6, y5, width2, height) { if (x6 === void 0) { @@ -50336,7 +56441,7 @@ var BBox = function() { subBBox[_i] = arguments[_i]; } var bbox = this.clone(); - each_default(subBBox, function(b10) { + (0, import_util105.each)(subBBox, function(b10) { bbox.x = Math.min(b10.x, bbox.x); bbox.y = Math.min(b10.y, bbox.y); bbox.width = Math.max(b10.maxX, bbox.maxX) - bbox.x; @@ -50350,7 +56455,7 @@ var BBox = function() { subBBox[_i] = arguments[_i]; } var bbox = this.clone(); - each_default(subBBox, function(b10) { + (0, import_util105.each)(subBBox, function(b10) { bbox.x = Math.max(b10.x, bbox.x); bbox.y = Math.max(b10.y, bbox.y); bbox.width = Math.min(b10.maxX, bbox.maxX) - bbox.x; @@ -50358,10 +56463,10 @@ var BBox = function() { }); return bbox; }; - BBox2.prototype.cut = function(subBBox, direction5) { + BBox2.prototype.cut = function(subBBox, direction3) { var width2 = subBBox.width; var height = subBBox.height; - switch (direction5) { + switch (direction3) { case DIRECTION.TOP: case DIRECTION.TOP_LEFT: case DIRECTION.TOP_RIGHT: @@ -50528,24 +56633,24 @@ function getDefaultType(value2) { var type2 = "linear"; if (dateRegex.test(value2)) { type2 = "timeCat"; - } else if (is_string_default(value2)) { + } else if ((0, import_util106.isString)(value2)) { type2 = "cat"; } return type2; } function createScaleByField(field6, data3, scaleDef) { var validData = data3 || []; - if (is_number_default(field6) || is_nil_default(first_value_default(validData, field6)) && is_empty_default(scaleDef)) { + if ((0, import_util106.isNumber)(field6) || (0, import_util106.isNil)((0, import_util106.firstValue)(validData, field6)) && (0, import_util106.isEmpty)(scaleDef)) { var Identity2 = getClass("identity"); return new Identity2({ field: field6.toString(), values: [field6] }); } - var values2 = values_of_key_default(validData, field6); - var type2 = get_default(scaleDef, "type", getDefaultType(values2[0])); + var values4 = (0, import_util106.valuesOfKey)(validData, field6); + var type2 = (0, import_util106.get)(scaleDef, "type", getDefaultType(values4[0])); var ScaleCtor = getClass(type2); - return new ScaleCtor(__assign({ field: field6, values: values2 }, scaleDef)); + return new ScaleCtor(__assign({ field: field6, values: values4 }, scaleDef)); } function syncScale(scale12, newScale) { if (scale12.type !== "identity" && newScale.type !== "identity") { @@ -50562,8 +56667,8 @@ function getName(scale12) { return scale12.alias || scale12.field; } function getDefaultCategoryScaleRange(scale12, coordinate11, theme4) { - var values2 = scale12.values; - var count2 = values2.length; + var values4 = scale12.values; + var count2 = values4.length; var range; if (count2 === 1) { range = [0.5, 1]; @@ -50574,7 +56679,7 @@ function getDefaultCategoryScaleRange(scale12, coordinate11, theme4) { if (!coordinate11.isTransposed) { range = [0, 1 - 1 / count2]; } else { - widthRatio = get_default(theme4, "widthRatio.multiplePie", 1 / 1.3); + widthRatio = (0, import_util106.get)(theme4, "widthRatio.multiplePie", 1 / 1.3); offset = 1 / count2 * widthRatio; range = [offset / 2, 1 - offset / 2]; } @@ -50586,17 +56691,17 @@ function getDefaultCategoryScaleRange(scale12, coordinate11, theme4) { return range; } function getMaxScale(scale12) { - var values2 = scale12.values.filter(function(item) { - return !is_nil_default(item) && !isNaN(item); + var values4 = scale12.values.filter(function(item) { + return !(0, import_util106.isNil)(item) && !isNaN(item); }); - return Math.max.apply(Math, __spreadArray(__spreadArray([], values2, false), [is_nil_default(scale12.max) ? -Infinity : scale12.max], false)); + return Math.max.apply(Math, __spreadArray(__spreadArray([], values4, false), [(0, import_util106.isNil)(scale12.max) ? -Infinity : scale12.max], false)); } // node_modules/@antv/g2/esm/util/axis.js -function getLineAxisRelativeRegion(direction5) { +function getLineAxisRelativeRegion(direction3) { var start; var end2; - switch (direction5) { + switch (direction3) { case DIRECTION.TOP: start = { x: 0, y: 1 }; end2 = { x: 1, y: 1 }; @@ -50642,10 +56747,10 @@ function getCircleAxisRelativeRegion(coordinate11) { } return { start, end: end2 }; } -function getAxisRegion(coordinate11, direction5) { +function getAxisRegion(coordinate11, direction3) { var region = { start: { x: 0, y: 0 }, end: { x: 0, y: 0 } }; if (coordinate11.isRect) { - region = getLineAxisRelativeRegion(direction5); + region = getLineAxisRelativeRegion(direction3); } else if (coordinate11.isPolar) { region = getCircleAxisRelativeRegion(coordinate11); } @@ -50676,13 +56781,13 @@ function getAxisFactorByRegion(region, center2) { } } } -function getAxisThemeCfg(theme4, direction5) { - var axisTheme = get_default(theme4, ["components", "axis"], {}); - return deep_mix_default({}, get_default(axisTheme, ["common"], {}), deep_mix_default({}, get_default(axisTheme, [direction5], {}))); +function getAxisThemeCfg(theme4, direction3) { + var axisTheme = (0, import_util107.get)(theme4, ["components", "axis"], {}); + return (0, import_util107.deepMix)({}, (0, import_util107.get)(axisTheme, ["common"], {}), (0, import_util107.deepMix)({}, (0, import_util107.get)(axisTheme, [direction3], {}))); } -function getAxisTitleOptions(theme4, direction5, axisOptions) { - var axisTheme = get_default(theme4, ["components", "axis"], {}); - return deep_mix_default({}, get_default(axisTheme, ["common", "title"], {}), deep_mix_default({}, get_default(axisTheme, [direction5, "title"], {})), axisOptions); +function getAxisTitleOptions(theme4, direction3, axisOptions) { + var axisTheme = (0, import_util107.get)(theme4, ["components", "axis"], {}); + return (0, import_util107.deepMix)({}, (0, import_util107.get)(axisTheme, ["common", "title"], {}), (0, import_util107.deepMix)({}, (0, import_util107.get)(axisTheme, [direction3, "title"], {})), axisOptions); } function getCircleAxisCenterRadius(coordinate11) { var x6 = coordinate11.x, y5 = coordinate11.y, center2 = coordinate11.circleCenter; @@ -50707,16 +56812,16 @@ function getCircleAxisCenterRadius(coordinate11) { }; } function getAxisOption(axes, field6) { - if (is_boolean_default(axes)) { + if ((0, import_util107.isBoolean)(axes)) { return axes === false ? false : {}; } - return get_default(axes, [field6]); + return (0, import_util107.get)(axes, [field6]); } function getAxisDirection(axisOption, def) { - return get_default(axisOption, "position", def); + return (0, import_util107.get)(axisOption, "position", def); } function getAxisTitleText(scale12, axisOption) { - return get_default(axisOption, ["title", "text"], getName(scale12)); + return (0, import_util107.get)(axisOption, ["title", "text"], getName(scale12)); } // node_modules/@antv/g2/esm/facet/facet.js @@ -50725,7 +56830,7 @@ var Facet = function() { this.destroyed = false; this.facets = []; this.view = view; - this.cfg = deep_mix_default({}, this.getDefaultCfg(), cfg); + this.cfg = (0, import_util108.deepMix)({}, this.getDefaultCfg(), cfg); } Facet3.prototype.init = function() { if (!this.container) { @@ -50783,7 +56888,7 @@ var Facet = function() { }; Facet3.prototype.clearFacetViews = function() { var _this = this; - each_default(this.facets, function(facet) { + (0, import_util108.each)(this.facets, function(facet) { if (facet.view) { _this.view.removeView(facet.view); facet.view = void 0; @@ -50794,7 +56899,7 @@ var Facet = function() { var _a6 = this.view.viewBBox, width2 = _a6.width, height = _a6.height; var spacing = this.cfg.spacing; return spacing.map(function(s4, idx) { - if (is_number_default(s4)) + if ((0, import_util108.isNumber)(s4)) return s4 / (idx === 0 ? width2 : height); else return parseFloat(s4) / 100; @@ -50803,9 +56908,9 @@ var Facet = function() { Facet3.prototype.getFieldValues = function(data3, field6) { var rst = []; var cache3 = {}; - each_default(data3, function(d3) { + (0, import_util108.each)(data3, function(d3) { var value2 = d3[field6]; - if (!is_nil_default(value2) && !cache3[value2]) { + if (!(0, import_util108.isNil)(value2) && !cache3[value2]) { rst.push(value2); cache3[value2] = true; } @@ -50849,9 +56954,9 @@ var Facet = function() { var options = view.getOptions(); var coordinateOption = options.coordinate; var geometries = view.geometries; - var coordinateType = get_default(coordinateOption, "type", "rect"); + var coordinateType = (0, import_util108.get)(coordinateOption, "type", "rect"); if (coordinateType === "rect" && geometries.length) { - if (is_nil_default(options.axes)) { + if ((0, import_util108.isNil)(options.axes)) { options.axes = {}; } var axes = options.axes; @@ -50868,9 +56973,9 @@ var Facet = function() { }; Facet3.prototype.getFacetDataFilter = function(conditions) { return function(datum) { - return every_default(conditions, function(condition) { + return (0, import_util108.every)(conditions, function(condition) { var field6 = condition.field, value2 = condition.value; - if (!is_nil_default(value2) && field6) { + if (!(0, import_util108.isNil)(value2) && field6) { return datum[field6] === value2; } return true; @@ -50883,13 +56988,20 @@ var Facet = function() { // node_modules/@antv/g2/esm/facet/index.js var Facets = {}; var getFacet = function(type2) { - return Facets[lower_case_default(type2)]; + return Facets[(0, import_util109.lowerCase)(type2)]; }; var registerFacet = function(type2, ctor) { - Facets[lower_case_default(type2)] = ctor; + Facets[(0, import_util109.lowerCase)(type2)] = ctor; }; +// node_modules/@antv/g2/esm/interaction/index.js +var import_util117 = __toModule(require_lib()); + +// node_modules/@antv/g2/esm/interaction/grammar-interaction.js +var import_util116 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/interaction/action/base.js +var import_util110 = __toModule(require_lib()); var Action = function() { function Action2(context, cfg) { this.context = context; @@ -50897,7 +57009,7 @@ var Action = function() { context.addAction(this); } Action2.prototype.applyCfg = function(cfg) { - mix(this, cfg); + (0, import_util110.assign)(this, cfg); }; Action2.prototype.init = function() { this.applyCfg(this.cfg); @@ -50930,6 +57042,7 @@ var CallbackAction = function(_super) { var callback_default = CallbackAction; // node_modules/@antv/g2/esm/interaction/action/register.js +var import_util111 = __toModule(require_lib()); var ActionCache = {}; function createAction(actionName, context) { var actionOption = ActionCache[actionName]; @@ -50944,7 +57057,7 @@ function createAction(actionName, context) { } function getActionClass(actionName) { var actionOption = ActionCache[actionName]; - return get_default(actionOption, "ActionClass"); + return (0, import_util111.get)(actionOption, "ActionClass"); } function registerAction(actionName, ActionClass, cfg) { ActionCache[actionName] = { @@ -50959,7 +57072,14 @@ function createCallbackAction(callback, context) { return action; } +// node_modules/@antv/g2/esm/interaction/context.js +var import_util114 = __toModule(require_lib()); + +// node_modules/@antv/g2/esm/interaction/action/util.js +var import_util113 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/geometry/shape/util/path.js +var import_util112 = __toModule(require_lib()); function _points2path(points, isInCircle) { var path = []; if (points.length) { @@ -50991,8 +57111,8 @@ function _convertArcPath(path, coord2) { var x6 = path[6]; var y5 = path[7]; var point2 = coord2.convert({ x: x6, y: y5 }); - var direction5 = isTransposed ? 0 : 1; - return ["A", r4, r4, 0, 0, direction5, point2.x, point2.y]; + var direction3 = isTransposed ? 0 : 1; + return ["A", r4, r4, 0, 0, direction3, point2.x, point2.y]; } function _convertPolarPath(pre, cur, coord2) { var isTransposed = coord2.isTransposed, startAngle = coord2.startAngle, endAngle = coord2.endAngle; @@ -51010,7 +57130,7 @@ function _convertPolarPath(pre, cur, coord2) { var rst = []; var xDim = isTransposed ? "y" : "x"; var angleRange = Math.abs(curPoint[xDim] - prePoint[xDim]) * (endAngle - startAngle); - var direction5 = curPoint[xDim] >= prePoint[xDim] ? 1 : 0; + var direction3 = curPoint[xDim] >= prePoint[xDim] ? 1 : 0; var flag = angleRange > Math.PI ? 1 : 0; var convertPoint = coord2.convert(curPoint); var r4 = getDistanceToCenter(coord2, convertPoint); @@ -51021,16 +57141,16 @@ function _convertPolarPath(pre, cur, coord2) { y: (curPoint.y + prePoint.y) / 2 }; var middleConvertPoint = coord2.convert(middlePoint); - rst.push(["A", r4, r4, 0, flag, direction5, middleConvertPoint.x, middleConvertPoint.y]); - rst.push(["A", r4, r4, 0, flag, direction5, convertPoint.x, convertPoint.y]); + rst.push(["A", r4, r4, 0, flag, direction3, middleConvertPoint.x, middleConvertPoint.y]); + rst.push(["A", r4, r4, 0, flag, direction3, convertPoint.x, convertPoint.y]); } else { - rst.push(["A", r4, r4, 0, flag, direction5, convertPoint.x, convertPoint.y]); + rst.push(["A", r4, r4, 0, flag, direction3, convertPoint.x, convertPoint.y]); } } return rst; } function _filterFullCirleLine(path) { - each_default(path, function(subPath, index2) { + (0, import_util112.each)(path, function(subPath, index2) { var cur = subPath; if (cur[0].toLowerCase() === "a") { var pre = path[index2 - 1]; @@ -51052,17 +57172,17 @@ var smoothBezier2 = function(points, smooth, isLoop, constraint) { var hasConstraint = !!constraint; var prevPoint; var nextPoint; - var min7; - var max8; + var min13; + var max15; var nextCp0; var cp1; var cp0; if (hasConstraint) { - min7 = constraint[0], max8 = constraint[1]; + min13 = constraint[0], max15 = constraint[1]; for (var i4 = 0, l4 = points.length; i4 < l4; i4++) { var point2 = points[i4]; - min7 = vec2_exports.min([0, 0], min7, point2); - max8 = vec2_exports.max([0, 0], max8, point2); + min13 = vec2_exports.min([0, 0], min13, point2); + max15 = vec2_exports.max([0, 0], max15, point2); } } for (var i4 = 0, len5 = points.length; i4 < len5; i4++) { @@ -51101,10 +57221,10 @@ var smoothBezier2 = function(points, smooth, isLoop, constraint) { v22 = vec2_exports.scale([0, 0], v22, d1 / d0); nextCp0 = vec2_exports.add([0, 0], point2, v22); if (hasConstraint) { - cp1 = vec2_exports.max([0, 0], cp1, min7); - cp1 = vec2_exports.min([0, 0], cp1, max8); - nextCp0 = vec2_exports.max([0, 0], nextCp0, min7); - nextCp0 = vec2_exports.min([0, 0], nextCp0, max8); + cp1 = vec2_exports.max([0, 0], cp1, min13); + cp1 = vec2_exports.min([0, 0], cp1, max15); + nextCp0 = vec2_exports.max([0, 0], nextCp0, min13); + nextCp0 = vec2_exports.min([0, 0], nextCp0, max15); } cps.push(cp0); cps.push(cp1); @@ -51170,7 +57290,7 @@ function getSplinePath(points, isInCircle, constaint) { } function convertNormalPath(coord2, path) { var tmp = []; - each_default(path, function(subPath) { + (0, import_util112.each)(path, function(subPath) { var action = subPath[0]; switch (action.toLowerCase()) { case "m": @@ -51195,7 +57315,7 @@ function convertPolarPath(coord2, path) { var cur; var transposed; var equals7; - each_default(path, function(subPath, index2) { + (0, import_util112.each)(path, function(subPath, index2) { var action = subPath[0]; switch (action.toLowerCase()) { case "m": @@ -51316,12 +57436,12 @@ function getSiblingMaskElements(context, sibling, tolerance3) { function getElements(view) { var geometries = view.geometries; var rst = []; - each_default(geometries, function(geom) { + (0, import_util113.each)(geometries, function(geom) { var elements = geom.elements; rst = rst.concat(elements); }); if (view.views && view.views.length) { - each_default(view.views, function(subView) { + (0, import_util113.each)(view.views, function(subView) { rst = rst.concat(getElements(subView)); }); } @@ -51336,7 +57456,7 @@ function getElementsByField(view, field6, value2) { function getElementsByState(view, stateName) { var geometries = view.geometries; var rst = []; - each_default(geometries, function(geom) { + (0, import_util113.each)(geometries, function(geom) { var elements = geom.getElementsBy(function(el) { return el.hasState(stateName); }); @@ -51348,7 +57468,7 @@ function getElementValue(element, field6) { var model = element.getModel(); var record = model.data; var value2; - if (is_array_default(record)) { + if ((0, import_util113.isArray)(record)) { value2 = record[0][field6]; } else { value2 = record[field6]; @@ -51361,7 +57481,7 @@ function intersectRect(box1, box2) { function getIntersectElements(view, box2) { var elements = getElements(view); var rst = []; - each_default(elements, function(el) { + (0, import_util113.each)(elements, function(el) { var shape = el.shape; var shapeBBox = shape.getCanvasBBox(); if (intersectRect(box2, shapeBBox)) { @@ -51372,7 +57492,7 @@ function getIntersectElements(view, box2) { } function pathToPoints(path) { var points = []; - each_default(path, function(seg) { + (0, import_util113.each)(path, function(seg) { var command = seg[0]; if (command !== "A") { for (var i4 = 1; i4 < seg.length; i4 = i4 + 2) { @@ -51417,7 +57537,7 @@ function getSpline(points, z3) { } var first = points[0]; var arr = []; - each_default(points, function(point2) { + (0, import_util113.each)(points, function(point2) { arr.push(point2.x); arr.push(point2.y); }); @@ -51448,7 +57568,7 @@ function getSiblingPoint(view, sibling, point2) { } function isInRecords(records, record, xFiled, yField) { var isIn = false; - each_default(records, function(r4) { + (0, import_util113.each)(records, function(r4) { if (r4[xFiled] === record[xFiled] && r4[yField] === record[yField]) { isIn = true; return false; @@ -51459,7 +57579,7 @@ function isInRecords(records, record, xFiled, yField) { function getScaleByField(view, field6) { var scale12 = view.getScaleByField(field6); if (!scale12 && view.views) { - each_default(view.views, function(subView) { + (0, import_util113.each)(view.views, function(subView) { scale12 = getScaleByField(subView, field6); if (scale12) { return false; @@ -51520,7 +57640,7 @@ var Context = function() { return null; }; Context2.prototype.getCurrentShape = function() { - return get_default(this.event, ["gEvent", "shape"]); + return (0, import_util114.get)(this.event, ["gEvent", "shape"]); }; Context2.prototype.isInPlot = function() { var point2 = this.getCurrentPoint(); @@ -51552,7 +57672,7 @@ var Context = function() { return false; }; Context2.prototype.destroy = function() { - each_default(this.actions.slice(), function(action) { + (0, import_util114.each)(this.actions.slice(), function(action) { action.destroy(); }); this.view = null; @@ -51639,8 +57759,8 @@ var GrammarInteraction = function(_super) { }; GrammarInteraction2.prototype.initEvents = function() { var _this = this; - each_default(this.steps, function(stepArr, stepName) { - each_default(stepArr, function(step) { + (0, import_util116.each)(this.steps, function(stepArr, stepName) { + (0, import_util116.each)(stepArr, function(step) { var callback = _this.getActionCallback(stepName, step); if (callback) { _this.bindEvent(step.trigger, callback); @@ -51650,8 +57770,8 @@ var GrammarInteraction = function(_super) { }; GrammarInteraction2.prototype.clearEvents = function() { var _this = this; - each_default(this.steps, function(stepArr, stepName) { - each_default(stepArr, function(step) { + (0, import_util116.each)(this.steps, function(stepArr, stepName) { + (0, import_util116.each)(stepArr, function(step) { var callback = _this.getActionCallback(stepName, step); if (callback) { _this.offEvent(step.trigger, callback); @@ -51664,20 +57784,20 @@ var GrammarInteraction = function(_super) { var context = new context_default(view); this.context = context; var steps = this.steps; - each_default(steps, function(subSteps) { - each_default(subSteps, function(step) { - if (is_function_default(step.action)) { + (0, import_util116.each)(steps, function(subSteps) { + (0, import_util116.each)(subSteps, function(step) { + if ((0, import_util116.isFunction)(step.action)) { step.actionObject = { action: createCallbackAction(step.action, context), methodName: "execute" }; - } else if (is_string_default(step.action)) { + } else if ((0, import_util116.isString)(step.action)) { step.actionObject = parseAction(step.action, context, step.arg); - } else if (is_array_default(step.action)) { + } else if ((0, import_util116.isArray)(step.action)) { var actionArr = step.action; - var argArr_1 = is_array_default(step.arg) ? step.arg : [step.arg]; + var argArr_1 = (0, import_util116.isArray)(step.arg) ? step.arg : [step.arg]; step.actionObject = []; - each_default(actionArr, function(actionStr, idx) { + (0, import_util116.each)(actionArr, function(actionStr, idx) { step.actionObject.push(parseAction(actionStr, context, argArr_1[idx])); }); } @@ -51749,8 +57869,8 @@ var GrammarInteraction = function(_super) { var actionCallback = function(event) { context.event = event; if (_this.isAllowExecute(stepName, step)) { - if (is_array_default(actionObject)) { - each_default(actionObject, function(obj) { + if ((0, import_util116.isArray)(actionObject)) { + (0, import_util116.each)(actionObject, function(obj) { context.event = event; executeAction(obj); }); @@ -51768,9 +57888,9 @@ var GrammarInteraction = function(_super) { } }; if (step.debounce) { - callbackCaches[key] = debounce_default(actionCallback, step.debounce.wait, step.debounce.immediate); + callbackCaches[key] = (0, import_util116.debounce)(actionCallback, step.debounce.wait, step.debounce.immediate); } else if (step.throttle) { - callbackCaches[key] = throttle_default(actionCallback, step.throttle.wait, { + callbackCaches[key] = (0, import_util116.throttle)(actionCallback, step.throttle.wait, { leading: step.throttle.leading, trailing: step.throttle.trailing }); @@ -51809,18 +57929,18 @@ var grammar_interaction_default = GrammarInteraction; // node_modules/@antv/g2/esm/interaction/index.js var Interactions = {}; function getInteraction(name) { - return Interactions[lower_case_default(name)]; + return Interactions[(0, import_util117.lowerCase)(name)]; } function registerInteraction(name, interaction8) { - Interactions[lower_case_default(name)] = interaction8; + Interactions[(0, import_util117.lowerCase)(name)] = interaction8; } function createInteraction(name, view, cfg) { var interaciton = getInteraction(name); if (!interaciton) { return null; } - if (is_plain_object_default(interaciton)) { - var steps = mix(clone_default(interaciton), cfg); + if ((0, import_util117.isPlainObject)(interaciton)) { + var steps = (0, import_util117.mix)((0, import_util117.clone)(interaciton), cfg); return new grammar_interaction_default(view, steps); } else { var cls = interaciton; @@ -51828,7 +57948,14 @@ function createInteraction(name, view, cfg) { } } +// node_modules/@antv/g2/esm/theme/index.js +var import_util120 = __toModule(require_lib()); + +// node_modules/@antv/g2/esm/theme/util/create-theme.js +var import_util119 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/theme/util/create-by-style-sheet.js +var import_util118 = __toModule(require_lib()); function createAxisStyles(styleSheet) { return { title: { @@ -52878,11 +59005,11 @@ function createThemeByStyleSheet(styleSheet) { }, circle: { title: null, - grid: deep_mix_default({}, axisStyles.grid, { line: { type: "line" } }) + grid: (0, import_util118.deepMix)({}, axisStyles.grid, { line: { type: "line" } }) }, radius: { title: null, - grid: deep_mix_default({}, axisStyles.grid, { line: { type: "circle" } }) + grid: (0, import_util118.deepMix)({}, axisStyles.grid, { line: { type: "circle" } }) } }, legend: { @@ -53503,7 +59630,7 @@ var antvLight = createLightStyleSheet(); function createTheme(themeCfg) { var _a6 = themeCfg.styleSheet, styleSheetCfg = _a6 === void 0 ? {} : _a6, themeObject = __rest(themeCfg, ["styleSheet"]); var styleSheet = createLightStyleSheet(styleSheetCfg); - return deep_mix_default({}, createThemeByStyleSheet(styleSheet), themeObject); + return (0, import_util119.deepMix)({}, createThemeByStyleSheet(styleSheet), themeObject); } // node_modules/@antv/g2/esm/theme/index.js @@ -53512,17 +59639,18 @@ var Themes = { default: defaultTheme }; function getTheme(theme4) { - return get_default(Themes, lower_case_default(theme4), Themes.default); + return (0, import_util120.get)(Themes, (0, import_util120.lowerCase)(theme4), Themes.default); } function registerTheme(theme4, value2) { - Themes[lower_case_default(theme4)] = createTheme(value2); + Themes[(0, import_util120.lowerCase)(theme4)] = createTheme(value2); } // node_modules/@antv/g2/esm/util/tooltip.js +var import_util122 = __toModule(require_lib()); function snapEqual(v1, v22, scale12) { var value1 = scale12.translate(v1); var value2 = scale12.translate(v22); - return isNumberEqual(value1, value2); + return (0, import_util122.isNumberEqual)(value1, value2); } function getXValueByPoint(point2, geometry35) { var coordinate11 = geometry35.coordinate; @@ -53543,45 +59671,45 @@ function filterYValue(data3, point2, geometry35) { var yField = yScale.field; var invertPoint = coordinate11.invert(point2); var yValue = yScale.invert(invertPoint.y); - var result = find_default(data3, function(obj) { + var result = (0, import_util122.find)(data3, function(obj) { var originData = obj[FIELD_ORIGIN]; return originData[yField][0] <= yValue && originData[yField][1] >= yValue; }); return result || data3[data3.length - 1]; } -var getXDistance = memoize_default(function(scale12) { +var getXDistance = (0, import_util122.memoize)(function(scale12) { if (scale12.isCategory) { return 1; } var scaleValues = scale12.values; var length5 = scaleValues.length; - var min7 = scale12.translate(scaleValues[0]); - var max8 = min7; + var min13 = scale12.translate(scaleValues[0]); + var max15 = min13; for (var index2 = 0; index2 < length5; index2++) { var value2 = scaleValues[index2]; var numericValue = scale12.translate(value2); - if (numericValue < min7) { - min7 = numericValue; + if (numericValue < min13) { + min13 = numericValue; } - if (numericValue > max8) { - max8 = numericValue; + if (numericValue > max15) { + max15 = numericValue; } } - return (max8 - min7) / (length5 - 1); + return (max15 - min13) / (length5 - 1); }); function getTooltipTitle(originData, geometry35, title) { var positionAttr = geometry35.getAttribute("position"); var fields = positionAttr.getFields(); var scales = geometry35.scales; - var titleField = is_function_default(title) || !title ? fields[0] : title; + var titleField = (0, import_util122.isFunction)(title) || !title ? fields[0] : title; var titleScale = scales[titleField]; var tooltipTitle = titleScale ? titleScale.getText(originData[titleField]) : originData[titleField] || titleField; - return is_function_default(title) ? title(tooltipTitle, originData) : tooltipTitle; + return (0, import_util122.isFunction)(title) ? title(tooltipTitle, originData) : tooltipTitle; } function getAttributesForLegend(geometry35) { - var attributes = values_default(geometry35.attributes); - return filter_default(attributes, function(attribute) { - return contains_default(GROUP_ATTRS, attribute.type); + var attributes = (0, import_util122.values)(geometry35.attributes); + return (0, import_util122.filter)(attributes, function(attribute) { + return (0, import_util122.contains)(GROUP_ATTRS, attribute.type); }); } function getTooltipValueScale(geometry35) { @@ -53602,7 +59730,7 @@ function getTooltipValueScale(geometry35) { function getTooltipValue(originData, valueScale) { var field6 = valueScale.field; var value2 = originData[field6]; - if (is_array_default(value2)) { + if ((0, import_util122.isArray)(value2)) { var texts = value2.map(function(eachValue) { return valueScale.getText(eachValue); }); @@ -53638,32 +59766,32 @@ function findDataByPoint(point2, data3, geometry35) { var invertPoint = coordinate11.invert(point2); var x6 = xScale.invert(invertPoint.x); var y5 = yScale.invert(invertPoint.y); - var min7 = Infinity; + var min13 = Infinity; for (var index2 = 0; index2 < data3.length; index2++) { var obj = data3[index2]; var originData = obj[FIELD_ORIGIN]; var range = Math.pow(originData[xField] - x6, 2) + Math.pow(originData[yField] - y5, 2); - if (range < min7) { - min7 = range; + if (range < min13) { + min13 = range; rst = obj; } } return rst; } var first = data3[0]; - var last2 = data3[data3.length - 1]; + var last17 = data3[data3.length - 1]; var xValue = getXValueByPoint(point2, geometry35); var firstXValue = first[FIELD_ORIGIN][xField]; var firstYValue = first[FIELD_ORIGIN][yField]; - var lastXValue = last2[FIELD_ORIGIN][xField]; - var isYArray = yScale.isLinear && is_array_default(firstYValue); - if (is_array_default(firstXValue)) { + var lastXValue = last17[FIELD_ORIGIN][xField]; + var isYArray = yScale.isLinear && (0, import_util122.isArray)(firstYValue); + if ((0, import_util122.isArray)(firstXValue)) { for (var index2 = 0; index2 < data3.length; index2++) { var record = data3[index2]; var originData = record[FIELD_ORIGIN]; if (xScale.translate(originData[xField][0]) <= xValue && xScale.translate(originData[xField][1]) >= xValue) { if (isYArray) { - if (!is_array_default(rst)) { + if (!(0, import_util122.isArray)(rst)) { rst = []; } rst.push(record); @@ -53673,7 +59801,7 @@ function findDataByPoint(point2, data3, geometry35) { } } } - if (is_array_default(rst)) { + if ((0, import_util122.isArray)(rst)) { rst = filterYValue(rst, point2, geometry35); } } else { @@ -53684,7 +59812,7 @@ function findDataByPoint(point2, data3, geometry35) { var originData = record[FIELD_ORIGIN]; if (snapEqual(originData[xField], xValue, xScale)) { if (isYArray) { - if (!is_array_default(rst)) { + if (!(0, import_util122.isArray)(rst)) { rst = []; } rst.push(record); @@ -53693,11 +59821,11 @@ function findDataByPoint(point2, data3, geometry35) { break; } } else if (xScale.translate(originData[xField]) <= xValue) { - last2 = record; + last17 = record; next = data3[index2 + 1]; } } - if (is_array_default(rst)) { + if ((0, import_util122.isArray)(rst)) { rst = filterYValue(rst, point2, geometry35); } } else { @@ -53715,25 +59843,25 @@ function findDataByPoint(point2, data3, geometry35) { } if (xScale.translate(item) <= xScale.translate(xValue)) { firstIdx = middleIdx + 1; - last2 = data3[middleIdx]; + last17 = data3[middleIdx]; next = data3[middleIdx + 1]; } else { if (lastIdx === 0) { - last2 = data3[0]; + last17 = data3[0]; } lastIdx = middleIdx - 1; } } } - if (last2 && next) { - if (Math.abs(xScale.translate(last2[FIELD_ORIGIN][xField]) - xValue) > Math.abs(xScale.translate(next[FIELD_ORIGIN][xField]) - xValue)) { - last2 = next; + if (last17 && next) { + if (Math.abs(xScale.translate(last17[FIELD_ORIGIN][xField]) - xValue) > Math.abs(xScale.translate(next[FIELD_ORIGIN][xField]) - xValue)) { + last17 = next; } } } var distance15 = getXDistance(geometry35.getXScale()); - if (!rst && Math.abs(xScale.translate(last2[FIELD_ORIGIN][xField]) - xValue) <= distance15 / 2) { - rst = last2; + if (!rst && Math.abs(xScale.translate(last17[FIELD_ORIGIN][xField]) - xValue) <= distance15 / 2) { + rst = last17; } return rst; } @@ -53752,7 +59880,7 @@ function getTooltipItems(data3, geometry35, title, showNil) { var name; var value2; function addItem(itemName, itemValue) { - if (showNil || !is_nil_default(itemValue) && itemValue !== "") { + if (showNil || !(0, import_util122.isNil)(itemValue) && itemValue !== "") { var item = { title: tooltipTitle, data: originData, @@ -53765,7 +59893,7 @@ function getTooltipItems(data3, geometry35, title, showNil) { items.push(item); } } - if (is_object_default(tooltipOption)) { + if ((0, import_util122.isObject)(tooltipOption)) { var fields = tooltipOption.fields, callback = tooltipOption.callback; if (callback) { var callbackParams = fields.map(function(field7) { @@ -53778,7 +59906,7 @@ function getTooltipItems(data3, geometry35, title, showNil) { var scales = geometry35.scales; for (var _i = 0, fields_1 = fields; _i < fields_1.length; _i++) { var field6 = fields_1[_i]; - if (!is_nil_default(originData[field6])) { + if (!(0, import_util122.isNil)(originData[field6])) { var scale12 = scales[field6]; name = getName(scale12); value2 = scale12.getText(originData[field6]); @@ -53798,7 +59926,7 @@ function getTooltipItemsByFindData(geometry35, point2, title, tooltipCfg) { var showNil = tooltipCfg.showNil; var result = []; var dataArray = geometry35.dataArray; - if (!is_empty_default(dataArray)) { + if (!(0, import_util122.isEmpty)(dataArray)) { geometry35.sort(dataArray); for (var _i = 0, dataArray_1 = dataArray; _i < dataArray_1.length; _i++) { var data3 = dataArray_1[_i]; @@ -53871,14 +59999,15 @@ function findItemsFromViewRecurisive(view, point2, tooltipCfg) { } // node_modules/@antv/g2/esm/util/padding.js +var import_util123 = __toModule(require_lib()); function isAutoPadding(padding3) { - return !is_number_default(padding3) && !is_array_default(padding3); + return !(0, import_util123.isNumber)(padding3) && !(0, import_util123.isArray)(padding3); } function parsePadding(padding3) { if (padding3 === void 0) { padding3 = 0; } - var paddingArray = is_array_default(padding3) ? padding3 : [padding3]; + var paddingArray = (0, import_util123.isArray)(padding3) ? padding3 : [padding3]; switch (paddingArray.length) { case 0: paddingArray = [0, 0, 0, 0]; @@ -53912,6 +60041,7 @@ function getComponentController(name) { } // node_modules/@antv/g2/esm/chart/controller/coordinate.js +var import_util124 = __toModule(require_lib()); var CoordinateController = function() { function CoordinateController2(option) { this.option = this.wrapperOption(option); @@ -53922,7 +60052,7 @@ var CoordinateController = function() { }; CoordinateController2.prototype.hasAction = function(actionName) { var actions = this.option.actions; - return some_default(actions, function(action) { + return (0, import_util124.some)(actions, function(action) { return action[0] === actionName; }); }; @@ -53978,10 +60108,10 @@ var CoordinateController = function() { CoordinateController2.prototype.execActions = function(includeActions) { var _this = this; var actions = this.option.actions; - each_default(actions, function(action) { + (0, import_util124.each)(actions, function(action) { var _a6; var actionName = action[0], args = action.slice(1); - var shouldExec = is_nil_default(includeActions) ? true : includeActions.includes(actionName); + var shouldExec = (0, import_util124.isNil)(includeActions) ? true : includeActions.includes(actionName); if (shouldExec) { (_a6 = _this.coordinate)[actionName].apply(_a6, args); } @@ -54069,6 +60199,7 @@ function defaultLayout(view) { } // node_modules/@antv/g2/esm/chart/util/scale-pool.js +var import_util125 = __toModule(require_lib()); var ScalePool = function() { function ScalePool2() { this.scales = new Map(); @@ -54085,7 +60216,7 @@ var ScalePool = function() { if (cacheScale.isCategory) { cacheScaleDef.values = cacheScale.values; } - finalScaleDef = deep_mix_default(cacheScaleDef, cacheScaleMeta.scaleDef, scaleDef); + finalScaleDef = (0, import_util125.deepMix)(cacheScaleDef, cacheScaleMeta.scaleDef, scaleDef); } var scale12 = createScaleByField(field6, data3, finalScaleDef); this.cacheScale(scale12, scaleDef, key); @@ -54094,37 +60225,37 @@ var ScalePool = function() { ScalePool2.prototype.sync = function(coordinate11, theme4) { var _this = this; this.syncScales.forEach(function(scaleKeys, syncKey) { - var min7 = Number.MAX_SAFE_INTEGER; - var max8 = Number.MIN_SAFE_INTEGER; - var values2 = []; - each_default(scaleKeys, function(key) { + var min13 = Number.MAX_SAFE_INTEGER; + var max15 = Number.MIN_SAFE_INTEGER; + var values4 = []; + (0, import_util125.each)(scaleKeys, function(key) { var scale12 = _this.getScale(key); - max8 = is_number_default(scale12.max) ? Math.max(max8, scale12.max) : max8; - min7 = is_number_default(scale12.min) ? Math.min(min7, scale12.min) : min7; - each_default(scale12.values, function(v3) { - if (!values2.includes(v3)) { - values2.push(v3); + max15 = (0, import_util125.isNumber)(scale12.max) ? Math.max(max15, scale12.max) : max15; + min13 = (0, import_util125.isNumber)(scale12.min) ? Math.min(min13, scale12.min) : min13; + (0, import_util125.each)(scale12.values, function(v3) { + if (!values4.includes(v3)) { + values4.push(v3); } }); }); - each_default(scaleKeys, function(key) { + (0, import_util125.each)(scaleKeys, function(key) { var scale12 = _this.getScale(key); if (scale12.isContinuous) { scale12.change({ - min: min7, - max: max8, - values: values2 + min: min13, + max: max15, + values: values4 }); } else if (scale12.isCategory) { var range = scale12.range; var cacheScaleMeta = _this.getScaleMeta(key); - if (values2 && !get_default(cacheScaleMeta, ["scaleDef", "range"])) { - range = getDefaultCategoryScaleRange(deep_mix_default({}, scale12, { - values: values2 + if (values4 && !(0, import_util125.get)(cacheScaleMeta, ["scaleDef", "range"])) { + range = getDefaultCategoryScaleRange((0, import_util125.deepMix)({}, scale12, { + values: values4 }), coordinate11, theme4); } scale12.change({ - values: values2, + values: values4, range }); } @@ -54159,7 +60290,7 @@ var ScalePool = function() { ScalePool2.prototype.getScale = function(key) { var scaleMeta = this.getScaleMeta(key); if (!scaleMeta) { - var field6 = last(key.split("-")); + var field6 = (0, import_util125.last)(key.split("-")); var scaleKeys = this.syncScales.get(field6); if (scaleKeys && scaleKeys.length) { scaleMeta = this.getScaleMeta(scaleKeys[0]); @@ -54201,7 +60332,7 @@ var ScalePool = function() { ScalePool2.prototype.getSyncKey = function(sm) { var scale12 = sm.scale, scaleDef = sm.scaleDef; var field6 = scale12.field; - var sync = get_default(scaleDef, ["sync"]); + var sync = (0, import_util125.get)(scaleDef, ["sync"]); return sync === true ? field6 : sync === false ? void 0 : sync; }; ScalePool2.prototype.getScaleMeta = function(key) { @@ -54261,9 +60392,9 @@ var PaddingCal = function() { this.left += left2; return this; }; - PaddingCal2.prototype.inc = function(bbox, direction5) { + PaddingCal2.prototype.inc = function(bbox, direction3) { var width2 = bbox.width, height = bbox.height; - switch (direction5) { + switch (direction3) { case DIRECTION.TOP: case DIRECTION.TOP_LEFT: case DIRECTION.TOP_RIGHT: @@ -54299,6 +60430,7 @@ var PaddingCal = function() { }(); // node_modules/@antv/g2/esm/chart/layout/auto.js +var import_util126 = __toModule(require_lib()); function calculatePadding(view) { var padding3 = view.padding; if (!isAutoPadding(padding3)) { @@ -54309,7 +60441,7 @@ function calculatePadding(view) { var axisComponents = []; var paddingComponents = []; var otherComponents = []; - each_default(view.getComponents(), function(co) { + (0, import_util126.each)(view.getComponents(), function(co) { var type2 = co.type; if (type2 === COMPONENT_TYPE.AXIS) { axisComponents.push(co); @@ -54319,25 +60451,25 @@ function calculatePadding(view) { otherComponents.push(co); } }); - each_default(axisComponents, function(co) { + (0, import_util126.each)(axisComponents, function(co) { var component2 = co.component; var bboxObject = component2.getLayoutBBox(); var componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height); var exceed = componentBBox.exceed(viewBBox); paddingCal.max(exceed); }); - each_default(paddingComponents, function(co) { - var component2 = co.component, direction5 = co.direction; + (0, import_util126.each)(paddingComponents, function(co) { + var component2 = co.component, direction3 = co.direction; var bboxObject = component2.getLayoutBBox(); var componentPadding = component2.get("padding"); var componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height).expand(componentPadding); - paddingCal.inc(componentBBox, direction5); + paddingCal.inc(componentBBox, direction3); }); - each_default(otherComponents, function(co) { - var component2 = co.component, direction5 = co.direction; + (0, import_util126.each)(otherComponents, function(co) { + var component2 = co.component, direction3 = co.direction; var bboxObject = component2.getLayoutBBox(); var componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height); - paddingCal.inc(componentBBox, direction5); + paddingCal.inc(componentBBox, direction3); }); return paddingCal; } @@ -54387,7 +60519,7 @@ var View = function(_super) { var e4 = _this.createViewEvent(evt); _this.emit(name, e4); }; - var _a6 = props.id, id = _a6 === void 0 ? unique_id_default("view") : _a6, parent = props.parent, canvas = props.canvas, backgroundGroup = props.backgroundGroup, middleGroup = props.middleGroup, foregroundGroup = props.foregroundGroup, _b = props.region, region = _b === void 0 ? { start: { x: 0, y: 0 }, end: { x: 1, y: 1 } } : _b, padding3 = props.padding, appendPadding = props.appendPadding, theme4 = props.theme, options = props.options, limitInPlot5 = props.limitInPlot, syncViewPadding2 = props.syncViewPadding; + var _a6 = props.id, id = _a6 === void 0 ? (0, import_util127.uniqueId)("view") : _a6, parent = props.parent, canvas = props.canvas, backgroundGroup = props.backgroundGroup, middleGroup = props.middleGroup, foregroundGroup = props.foregroundGroup, _b = props.region, region = _b === void 0 ? { start: { x: 0, y: 0 }, end: { x: 1, y: 1 } } : _b, padding3 = props.padding, appendPadding = props.appendPadding, theme4 = props.theme, options = props.options, limitInPlot5 = props.limitInPlot, syncViewPadding2 = props.syncViewPadding; _this.parent = parent; _this.canvas = canvas; _this.backgroundGroup = backgroundGroup; @@ -54400,7 +60532,7 @@ var View = function(_super) { _this.limitInPlot = limitInPlot5; _this.id = id; _this.syncViewPadding = syncViewPadding2; - _this.themeObject = is_object_default(theme4) ? deep_mix_default({}, getTheme("default"), createTheme(theme4)) : getTheme(theme4); + _this.themeObject = (0, import_util127.isObject)(theme4) ? (0, import_util127.deepMix)({}, getTheme("default"), createTheme(theme4)) : getTheme(theme4); _this.init(); return _this; } @@ -54459,7 +60591,7 @@ var View = function(_super) { View3.prototype.destroy = function() { this.emit(VIEW_LIFE_CIRCLE.BEFORE_DESTROY); var interactions = this.interactions; - each_default(interactions, function(interaction8) { + (0, import_util127.each)(interactions, function(interaction8) { if (interaction8) { interaction8.destroy(); } @@ -54494,7 +60626,7 @@ var View = function(_super) { return this; }; View3.prototype.data = function(data3) { - set_default(this.options, "data", data3); + (0, import_util127.set)(this.options, "data", data3); this.isDataChanged = true; return this; }; @@ -54503,52 +60635,52 @@ var View = function(_super) { return this.data(data3); }; View3.prototype.filter = function(field6, condition) { - if (is_function_default(condition)) { - set_default(this.options, ["filters", field6], condition); + if ((0, import_util127.isFunction)(condition)) { + (0, import_util127.set)(this.options, ["filters", field6], condition); return this; } - if (!condition && get_default(this.options, ["filters", field6])) { + if (!condition && (0, import_util127.get)(this.options, ["filters", field6])) { delete this.options.filters[field6]; } return this; }; View3.prototype.axis = function(field6, axisOption) { - if (is_boolean_default(field6)) { - set_default(this.options, ["axes"], field6); + if ((0, import_util127.isBoolean)(field6)) { + (0, import_util127.set)(this.options, ["axes"], field6); } else { - set_default(this.options, ["axes", field6], axisOption); + (0, import_util127.set)(this.options, ["axes", field6], axisOption); } return this; }; View3.prototype.legend = function(field6, legendOption) { - if (is_boolean_default(field6)) { - set_default(this.options, ["legends"], field6); - } else if (is_string_default(field6)) { - set_default(this.options, ["legends", field6], legendOption); - if (is_plain_object_default(legendOption) && (legendOption === null || legendOption === void 0 ? void 0 : legendOption.selected)) { - set_default(this.options, ["filters", field6], function(name) { + if ((0, import_util127.isBoolean)(field6)) { + (0, import_util127.set)(this.options, ["legends"], field6); + } else if ((0, import_util127.isString)(field6)) { + (0, import_util127.set)(this.options, ["legends", field6], legendOption); + if ((0, import_util127.isPlainObject)(legendOption) && (legendOption === null || legendOption === void 0 ? void 0 : legendOption.selected)) { + (0, import_util127.set)(this.options, ["filters", field6], function(name) { var _a6; return (_a6 = legendOption === null || legendOption === void 0 ? void 0 : legendOption.selected[name]) !== null && _a6 !== void 0 ? _a6 : true; }); } } else { - set_default(this.options, ["legends"], field6); + (0, import_util127.set)(this.options, ["legends"], field6); } return this; }; View3.prototype.scale = function(field6, scaleOption) { var _this = this; - if (is_string_default(field6)) { - set_default(this.options, ["scales", field6], scaleOption); - } else if (is_object_default(field6)) { - each_default(field6, function(v3, k4) { - set_default(_this.options, ["scales", k4], v3); + if ((0, import_util127.isString)(field6)) { + (0, import_util127.set)(this.options, ["scales", field6], scaleOption); + } else if ((0, import_util127.isObject)(field6)) { + (0, import_util127.each)(field6, function(v3, k4) { + (0, import_util127.set)(_this.options, ["scales", k4], v3); }); } return this; }; View3.prototype.tooltip = function(cfg) { - set_default(this.options, "tooltip", cfg); + (0, import_util127.set)(this.options, "tooltip", cfg); return this; }; View3.prototype.annotation = function() { @@ -54559,10 +60691,10 @@ var View = function(_super) { return this.annotation(); }; View3.prototype.coordinate = function(type2, coordinateCfg) { - if (is_string_default(type2)) { - set_default(this.options, "coordinate", { type: type2, cfg: coordinateCfg }); + if ((0, import_util127.isString)(type2)) { + (0, import_util127.set)(this.options, "coordinate", { type: type2, cfg: coordinateCfg }); } else { - set_default(this.options, "coordinate", type2); + (0, import_util127.set)(this.options, "coordinate", type2); } this.coordinateController.update(this.options.coordinate); return this.coordinateController; @@ -54583,12 +60715,12 @@ var View = function(_super) { return this; }; View3.prototype.animate = function(status) { - set_default(this.options, "animate", status); + (0, import_util127.set)(this.options, "animate", status); return this; }; View3.prototype.updateOptions = function(options) { this.clear(); - mix(this.options, options); + (0, import_util127.mix)(this.options, options); this.views.forEach(function(view) { return view.destroy(); }); @@ -54601,11 +60733,11 @@ var View = function(_super) { if (View3.prototype[name]) { throw new Error(`Can't use built in variable name "`.concat(name, '", please change another one.')); } - set_default(this.options, name, opt); + (0, import_util127.set)(this.options, name, opt); return this; }; View3.prototype.theme = function(theme4) { - this.themeObject = is_object_default(theme4) ? deep_mix_default({}, this.themeObject, createTheme(theme4)) : getTheme(theme4); + this.themeObject = (0, import_util127.isObject)(theme4) ? (0, import_util127.deepMix)({}, this.themeObject, createTheme(theme4)) : getTheme(theme4); return this; }; View3.prototype.interaction = function(name, cfg) { @@ -54645,11 +60777,11 @@ var View = function(_super) { } var sharedOptions = { data: this.options.data, - scales: clone_default(this.options.scales), - axes: clone_default(this.options.axes), - coordinate: clone_default(this.coordinateController.getOption()), - tooltip: clone_default(this.options.tooltip), - legends: clone_default(this.options.legends), + scales: (0, import_util127.clone)(this.options.scales), + axes: (0, import_util127.clone)(this.options.axes), + coordinate: (0, import_util127.clone)(this.coordinateController.getOption()), + tooltip: (0, import_util127.clone)(this.options.tooltip), + legends: (0, import_util127.clone)(this.options.legends), animate: this.options.animate, visible: this.visible }; @@ -54661,7 +60793,7 @@ var View = function(_super) { foregroundGroup: this.foregroundGroup.addGroup({ zIndex: GROUP_Z_INDEX.FORE }), theme: this.themeObject, padding: this.padding - }, cfg), { options: __assign(__assign({}, sharedOptions), get_default(cfg, "options", {})) })); + }, cfg), { options: __assign(__assign({}, sharedOptions), (0, import_util127.get)(cfg, "options", {})) })); this.views.push(v3); return v3; }; @@ -54670,7 +60802,7 @@ var View = function(_super) { return this.createView(cfg); }; View3.prototype.removeView = function(view) { - var removedView = remove_default(this.views, function(v3) { + var removedView = (0, import_util127.remove)(this.views, function(v3) { return v3 === view; })[0]; if (removedView) { @@ -54736,7 +60868,7 @@ var View = function(_super) { return this.geometries; }; View3.prototype.getElements = function() { - return reduce_default(this.geometries, function(elements, geometry35) { + return (0, import_util127.reduce)(this.geometries, function(elements, geometry35) { return elements.concat(geometry35.getElements()); }, []); }; @@ -54752,7 +60884,7 @@ var View = function(_super) { return isPointInCoordinate(this.getCoordinate(), point2); }; View3.prototype.getLegendAttributes = function() { - return flatten_default(this.geometries.map(function(g4) { + return (0, import_util127.flatten)(this.geometries.map(function(g4) { return g4.getGroupAttributes(); })); }; @@ -54760,7 +60892,7 @@ var View = function(_super) { var scales = this.geometries.map(function(g4) { return g4.getGroupScales(); }); - return uniq2(flatten_default(scales)); + return uniq((0, import_util127.flatten)(scales)); }; View3.prototype.getCanvas = function() { return this.getRootView().canvas; @@ -54782,7 +60914,7 @@ var View = function(_super) { var yScales = this.getScalesByDim("y"); var x6; var y5; - each_default(data3, function(value2, key) { + (0, import_util127.each)(data3, function(value2, key) { if (xScales[key]) { x6 = xScales[key].scale(value2); } @@ -54790,12 +60922,12 @@ var View = function(_super) { y5 = yScales[key].scale(value2); } }); - if (!is_nil_default(x6) && !is_nil_default(y5)) { + if (!(0, import_util127.isNil)(x6) && !(0, import_util127.isNil)(y5)) { return coordinate11.convert({ x: x6, y: y5 }); } }; View3.prototype.getController = function(name) { - return find_default(this.controllers, function(c5) { + return (0, import_util127.find)(this.controllers, function(c5) { return c5.name === name; }); }; @@ -54870,10 +61002,10 @@ var View = function(_super) { }; View3.prototype.filterData = function(data3) { var filters = this.options.filters; - if (size(filters) === 0) { + if ((0, import_util127.size)(filters) === 0) { return data3; } - return filter_default(data3, function(datum, idx) { + return (0, import_util127.filter)(data3, function(datum, idx) { var fields = Object.keys(filters); return fields.every(function(field6) { var condition = filters[field6]; @@ -54883,8 +61015,8 @@ var View = function(_super) { }; View3.prototype.filterFieldData = function(field6, data3) { var filters = this.options.filters; - var condition = get_default(filters, field6); - if (is_undefined_default(condition)) { + var condition = (0, import_util127.get)(filters, field6); + if ((0, import_util127.isUndefined)(condition)) { return data3; } return data3.filter(function(datum, idx) { @@ -54895,7 +61027,7 @@ var View = function(_super) { var _a6 = this.getCoordinate(), curStart = _a6.start, curEnd = _a6.end; var start = this.coordinateBBox.bl; var end2 = this.coordinateBBox.tr; - if (is_equal_default(curStart, start) && is_equal_default(curEnd, end2)) { + if ((0, import_util127.isEqual)(curStart, start) && (0, import_util127.isEqual)(curEnd, end2)) { this.isCoordinateChanged = false; return; } @@ -54917,7 +61049,7 @@ var View = function(_super) { if (this.parent) { return; } - var background = get_default(this.themeObject, "background"); + var background = (0, import_util127.get)(this.themeObject, "background"); if (background) { if (!this.backgroundStyleRectShape) { this.backgroundStyleRectShape = this.backgroundGroup.addShape("rect", { @@ -54956,7 +61088,7 @@ var View = function(_super) { } }; View3.prototype.renderLayoutRecursive = function(isUpdate) { - var syncViewPaddingFn = this.syncViewPadding === true ? defaultSyncViewPadding : is_function_default(this.syncViewPadding) ? this.syncViewPadding : void 0; + var syncViewPaddingFn = this.syncViewPadding === true ? defaultSyncViewPadding : (0, import_util127.isFunction)(this.syncViewPadding) ? this.syncViewPadding : void 0; if (syncViewPaddingFn) { syncViewPaddingFn(this, this.views, PaddingCal); this.views.forEach(function(v3) { @@ -54991,7 +61123,7 @@ var View = function(_super) { } }; View3.prototype.createScale = function(field6, data3, scaleDef, key) { - var currentScaleDef = get_default(this.options.scales, [field6]); + var currentScaleDef = (0, import_util127.get)(this.options.scales, [field6]); var mergedScaleDef = __assign(__assign({}, currentScaleDef), scaleDef); if (this.parent) { return this.parent.createScale(field6, data3, mergedScaleDef, key); @@ -55121,7 +61253,7 @@ var View = function(_super) { View3.prototype.initGeometries = function(isUpdate) { this.createOrUpdateScales(); var coordinate11 = this.getCoordinate(); - var scaleDefs = get_default(this.options, "scales", {}); + var scaleDefs = (0, import_util127.get)(this.options, "scales", {}); var geometries = this.geometries; for (var i4 = 0, len5 = geometries.length; i4 < len5; i4++) { var geometry35 = geometries[i4]; @@ -55174,7 +61306,7 @@ var View = function(_super) { for (var i4 = 0; i4 < geometries.length; i4++) { var geometry35 = geometries[i4]; var geometryScales = geometry35.getScaleFields(); - uniq2(geometryScales, fields, tmpMap); + uniq(geometryScales, fields, tmpMap); } return fields; }; @@ -55185,7 +61317,7 @@ var View = function(_super) { for (var i4 = 0; i4 < geometries.length; i4++) { var geometry35 = geometries[i4]; var groupFields = geometry35.getGroupFields(); - uniq2(groupFields, fields, tmpMap); + uniq(groupFields, fields, tmpMap); } return fields; }; @@ -55199,10 +61331,10 @@ var View = function(_super) { }); var coordinate11 = this.getCoordinate(); var scaleOptions = this.options.scales; - each_default(xyScales, function(scale12) { - var field6 = scale12.field, values2 = scale12.values, isCategory = scale12.isCategory, isIdentity = scale12.isIdentity; + (0, import_util127.each)(xyScales, function(scale12) { + var field6 = scale12.field, values4 = scale12.values, isCategory = scale12.isCategory, isIdentity = scale12.isIdentity; if (isCategory || isIdentity) { - if (values2 && !get_default(scaleOptions, [field6, "range"])) { + if (values4 && !(0, import_util127.get)(scaleOptions, [field6, "range"])) { scale12.range = getDefaultCategoryScaleRange(scale12, coordinate11, _this.theme); } } @@ -55296,12 +61428,12 @@ var View = function(_super) { annotationComponent.annotation(annotationOption); } if (events) { - each_default(events, function(eventCallback, eventName) { + (0, import_util127.each)(events, function(eventCallback, eventName) { _this.on(eventName, eventCallback); }); } if (facets) { - each_default(facets, function(facet) { + (0, import_util127.each)(facets, function(facet) { var type3 = facet.type, rest = __rest(facet, ["type"]); _this.facet(type3, rest); }); @@ -55311,8 +61443,8 @@ var View = function(_super) { var type2 = geometryOption.type, _a6 = geometryOption.cfg, cfg = _a6 === void 0 ? {} : _a6; if (this[type2]) { var geometry_1 = this[type2](cfg); - each_default(geometryOption, function(v3, k4) { - if (is_function_default(geometry_1[k4])) { + (0, import_util127.each)(geometryOption, function(v3, k4) { + if ((0, import_util127.isFunction)(geometry_1[k4])) { geometry_1[k4](v3); } }); @@ -55345,12 +61477,12 @@ var Chart = function(_super) { function Chart3(props) { var _this = this; var container2 = props.container, width2 = props.width, height = props.height, _a6 = props.autoFit, autoFit = _a6 === void 0 ? false : _a6, padding3 = props.padding, appendPadding = props.appendPadding, _b = props.renderer, renderer = _b === void 0 ? "canvas" : _b, pixelRatio = props.pixelRatio, _c = props.localRefresh, localRefresh = _c === void 0 ? true : _c, _d = props.visible, visible = _d === void 0 ? true : _d, _e = props.supportCSSTransform, supportCSSTransform = _e === void 0 ? false : _e, _f = props.defaultInteractions, defaultInteractions = _f === void 0 ? ["tooltip", "legend-filter", "legend-active", "continuous-filter", "ellipsis-text"] : _f, options = props.options, limitInPlot5 = props.limitInPlot, theme4 = props.theme, syncViewPadding2 = props.syncViewPadding; - var ele = is_string_default(container2) ? document.getElementById(container2) : container2; + var ele = (0, import_util129.isString)(container2) ? document.getElementById(container2) : container2; var wrapperElement = createDom('
    '); ele.appendChild(wrapperElement); - var size2 = getChartSize(ele, autoFit, width2, height); + var size14 = getChartSize(ele, autoFit, width2, height); var G2 = getEngine(renderer); - var canvas = new G2.Canvas(__assign({ container: wrapperElement, pixelRatio, localRefresh, supportCSSTransform }, size2)); + var canvas = new G2.Canvas(__assign({ container: wrapperElement, pixelRatio, localRefresh, supportCSSTransform }, size14)); _this = _super.call(this, { parent: null, canvas, @@ -55365,13 +61497,13 @@ var Chart = function(_super) { theme: theme4, syncViewPadding: syncViewPadding2 }) || this; - _this.onResize = debounce_default(function() { + _this.onResize = (0, import_util129.debounce)(function() { _this.forceFit(); }, 300); _this.ele = ele; _this.canvas = canvas; - _this.width = size2.width; - _this.height = size2.height; + _this.width = size14.width; + _this.height = size14.height; _this.autoFit = autoFit; _this.localRefresh = localRefresh; _this.renderer = renderer; @@ -55383,7 +61515,7 @@ var Chart = function(_super) { } Chart3.prototype.initDefaultInteractions = function(interactions) { var _this = this; - each_default(interactions, function(interaction8) { + (0, import_util129.each)(interactions, function(interaction8) { _this.interaction(interaction8); }); }; @@ -55450,6 +61582,7 @@ var Chart = function(_super) { var chart_default = Chart; // node_modules/@antv/g2/esm/chart/controller/base.js +var import_util130 = __toModule(require_lib()); var Controller = function() { function Controller2(view) { this.visible = true; @@ -55457,7 +61590,7 @@ var Controller = function() { this.view = view; } Controller2.prototype.clear = function(includeOption) { - each_default(this.components, function(co) { + (0, import_util130.each)(this.components, function(co) { co.component.destroy(); }); this.components = []; @@ -55485,11 +61618,12 @@ var Controller = function() { }(); // node_modules/@antv/g2/esm/chart/controller/tooltip.js -function uniq3(items) { +var import_util131 = __toModule(require_lib()); +function uniq2(items) { var uniqItems = []; var _loop_1 = function(index3) { var item = items[index3]; - var result = find_default(uniqItems, function(subItem) { + var result = (0, import_util131.find)(uniqItems, function(subItem) { return subItem.color === item.color && subItem.name === item.name && subItem.value === item.value && subItem.title === item.title; }); if (!result) { @@ -55544,13 +61678,13 @@ var Tooltip2 = function(_super) { var follow = cfg.follow, showMarkers = cfg.showMarkers, showCrosshairs = cfg.showCrosshairs, showContent = cfg.showContent, marker = cfg.marker; var lastItems = this.items; var lastTitle = this.title; - if (!is_equal_default(lastTitle, title) || !is_equal_default(lastItems, items)) { + if (!(0, import_util131.isEqual)(lastTitle, title) || !(0, import_util131.isEqual)(lastItems, items)) { view.emit("tooltip:change", event_default.fromData(view, "tooltip:change", __assign({ items, title }, point2))); - if (is_function_default(showContent) ? showContent(items) : showContent) { + if ((0, import_util131.isFunction)(showContent) ? showContent(items) : showContent) { if (!this.tooltip) { this.renderTooltip(); } - this.tooltip.update(mix({}, cfg, { + this.tooltip.update((0, import_util131.mix)({}, cfg, { items: this.getItemsAfterProcess(items), title }, follow ? point2 : {})); @@ -55571,7 +61705,7 @@ var Tooltip2 = function(_super) { this.items = items; this.title = title; if (showCrosshairs) { - var isCrosshairsFollowCursor = get_default(cfg, ["crosshairs", "follow"], false); + var isCrosshairsFollowCursor = (0, import_util131.get)(cfg, ["crosshairs", "follow"], false); this.renderCrosshairs(isCrosshairsFollowCursor ? point2 : dataPoint, cfg); } }; @@ -55702,31 +61836,31 @@ var Tooltip2 = function(_super) { Tooltip5.prototype.getTooltipItems = function(point2) { var items = this.findItemsFromView(this.view, point2); if (items.length) { - items = flatten_default(items); + items = (0, import_util131.flatten)(items); for (var _i = 0, items_1 = items; _i < items_1.length; _i++) { var itemArr = items_1[_i]; for (var _a6 = 0, itemArr_1 = itemArr; _a6 < itemArr_1.length; _a6++) { var item = itemArr_1[_a6]; var _b = item.mappingData, x6 = _b.x, y5 = _b.y; - item.x = is_array_default(x6) ? x6[x6.length - 1] : x6; - item.y = is_array_default(y5) ? y5[y5.length - 1] : y5; + item.x = (0, import_util131.isArray)(x6) ? x6[x6.length - 1] : x6; + item.y = (0, import_util131.isArray)(y5) ? y5[y5.length - 1] : y5; } } var shared = this.getTooltipCfg().shared; if (shared === false && items.length > 1) { var snapItem = items[0]; - var min7 = Math.abs(point2.y - snapItem[0].y); + var min13 = Math.abs(point2.y - snapItem[0].y); for (var _c = 0, items_2 = items; _c < items_2.length; _c++) { var aItem = items_2[_c]; var yDistance = Math.abs(point2.y - aItem[0].y); - if (yDistance <= min7) { + if (yDistance <= min13) { snapItem = aItem; - min7 = yDistance; + min13 = yDistance; } } items = [snapItem]; } - return uniq3(flatten_default(items)); + return uniq2((0, import_util131.flatten)(items)); } return []; }; @@ -55760,20 +61894,20 @@ var Tooltip2 = function(_super) { var option = view.getOptions().tooltip; var processOption = this.processCustomContent(option); var theme4 = view.getTheme(); - var defaultCfg2 = get_default(theme4, ["components", "tooltip"], {}); - var enterable = get_default(processOption, "enterable", defaultCfg2.enterable); - return deep_mix_default({}, defaultCfg2, processOption, { + var defaultCfg2 = (0, import_util131.get)(theme4, ["components", "tooltip"], {}); + var enterable = (0, import_util131.get)(processOption, "enterable", defaultCfg2.enterable); + return (0, import_util131.deepMix)({}, defaultCfg2, processOption, { capture: enterable || this.isLocked ? true : false }); }; Tooltip5.prototype.processCustomContent = function(option) { - if (is_boolean_default(option) || !get_default(option, "customContent")) { + if ((0, import_util131.isBoolean)(option) || !(0, import_util131.get)(option, "customContent")) { return option; } var currentCustomContent = option.customContent; var customContent = function(title, items) { var content = currentCustomContent(title, items) || ""; - return is_string_default(content) ? '
    ' + content + "
    " : content; + return (0, import_util131.isString)(content) ? '
    ' + content + "
    " : content; }; return __assign(__assign({}, option), { customContent }); }; @@ -55805,7 +61939,7 @@ var Tooltip2 = function(_super) { } }; Tooltip5.prototype.renderCrosshairs = function(point2, cfg) { - var crosshairsType = get_default(cfg, ["crosshairs", "type"], "x"); + var crosshairsType = (0, import_util131.get)(cfg, ["crosshairs", "type"], "x"); if (crosshairsType === "x") { if (this.yCrosshair) { this.yCrosshair.hide(); @@ -55855,11 +61989,11 @@ var Tooltip2 = function(_super) { end2 = polarToCartesian(center2.x, center2.y, radius, angle3); start = center2; } - var cfg = deep_mix_default({ + var cfg = (0, import_util131.deepMix)({ start, end: end2, container: this.getTooltipCrosshairsGroup() - }, get_default(tooltipCfg, "crosshairs", {}), this.getCrosshairsText("x", point2, tooltipCfg)); + }, (0, import_util131.get)(tooltipCfg, "crosshairs", {}), this.getCrosshairsText("x", point2, tooltipCfg)); delete cfg.type; var xCrosshair = this.xCrosshair; if (xCrosshair) { @@ -55915,9 +62049,9 @@ var Tooltip2 = function(_super) { }; type2 = "Circle"; } - cfg = deep_mix_default({ + cfg = (0, import_util131.deepMix)({ container: this.getTooltipCrosshairsGroup() - }, cfg, get_default(tooltipCfg, "crosshairs", {}), this.getCrosshairsText("y", point2, tooltipCfg)); + }, cfg, (0, import_util131.get)(tooltipCfg, "crosshairs", {}), this.getCrosshairsText("y", point2, tooltipCfg)); delete cfg.type; var yCrosshair = this.yCrosshair; if (yCrosshair) { @@ -55936,8 +62070,8 @@ var Tooltip2 = function(_super) { this.yCrosshair = yCrosshair; }; Tooltip5.prototype.getCrosshairsText = function(type2, point2, tooltipCfg) { - var textCfg = get_default(tooltipCfg, ["crosshairs", "text"]); - var follow = get_default(tooltipCfg, ["crosshairs", "follow"]); + var textCfg = (0, import_util131.get)(tooltipCfg, ["crosshairs", "text"]); + var follow = (0, import_util131.get)(tooltipCfg, ["crosshairs", "follow"]); var items = this.items; if (textCfg) { var view = this.getViewWithGeometry(this.view); @@ -55955,7 +62089,7 @@ var Tooltip2 = function(_super) { yValue = firstItem.data[yScale.field]; } var content = type2 === "x" ? xValue : yValue; - if (is_function_default(textCfg)) { + if ((0, import_util131.isFunction)(textCfg)) { textCfg = textCfg(type2, content, items, point2); } else { textCfg.content = content; @@ -56018,21 +62152,27 @@ var Tooltip2 = function(_super) { if (view.geometries.length) { return view; } - return find_default(view.views, function(childView) { + return (0, import_util131.find)(view.views, function(childView) { return _this.getViewWithGeometry(childView); }); }; Tooltip5.prototype.getItemsAfterProcess = function(originalItems) { var customItems = this.getTooltipCfg().customItems; - var fn2 = customItems ? customItems : function(v3) { + var fn = customItems ? customItems : function(v3) { return v3; }; - return fn2(originalItems); + return fn(originalItems); }; return Tooltip5; }(Controller); var tooltip_default = Tooltip2; +// node_modules/@antv/g2/esm/geometry/base.js +var import_util138 = __toModule(require_lib()); + +// node_modules/@antv/g2/esm/animate/index.js +var import_util132 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/animate/animation/index.js var ANIMATIONS_MAP = {}; function getAnimation(type2) { @@ -56205,9 +62345,9 @@ var GEOMETRY_GROUP_APPEAR_ANIMATION = { }; function parseAnimateConfig(animateCfg, data3) { return { - delay: is_function_default(animateCfg.delay) ? animateCfg.delay(data3) : animateCfg.delay, - easing: is_function_default(animateCfg.easing) ? animateCfg.easing(data3) : animateCfg.easing, - duration: is_function_default(animateCfg.duration) ? animateCfg.duration(data3) : animateCfg.duration, + delay: (0, import_util132.isFunction)(animateCfg.delay) ? animateCfg.delay(data3) : animateCfg.delay, + easing: (0, import_util132.isFunction)(animateCfg.easing) ? animateCfg.easing(data3) : animateCfg.easing, + duration: (0, import_util132.isFunction)(animateCfg.duration) ? animateCfg.duration(data3) : animateCfg.duration, callback: animateCfg.callback, repeat: animateCfg.repeat }; @@ -56215,10 +62355,10 @@ function parseAnimateConfig(animateCfg, data3) { function getDefaultAnimateCfg(elementName, coordinate11, animateType) { var animateCfg = GEOMETRY_ANIMATE_CFG[elementName]; if (animateCfg) { - if (is_function_default(animateCfg)) { + if ((0, import_util132.isFunction)(animateCfg)) { animateCfg = animateCfg(coordinate11); } - animateCfg = deep_mix_default({}, DEFAULT_ANIMATE_CFG, animateCfg); + animateCfg = (0, import_util132.deepMix)({}, DEFAULT_ANIMATE_CFG, animateCfg); if (animateType) { return animateCfg[animateType]; } @@ -56226,7 +62366,7 @@ function getDefaultAnimateCfg(elementName, coordinate11, animateType) { return animateCfg; } function doAnimate(shape, animateCfg, cfg) { - var data3 = get_default(shape.get("origin"), "data", FIELD_ORIGIN); + var data3 = (0, import_util132.get)(shape.get("origin"), "data", FIELD_ORIGIN); var animation7 = animateCfg.animation; var parsedAnimateCfg = parseAnimateConfig(animateCfg, data3); if (animation7) { @@ -56241,7 +62381,7 @@ function doAnimate(shape, animateCfg, cfg) { function doGroupAppearAnimate(container2, animateCfg, geometryType, coordinate11, minYPoint) { if (GEOMETRY_GROUP_APPEAR_ANIMATION[geometryType]) { var defaultCfg2 = GEOMETRY_GROUP_APPEAR_ANIMATION[geometryType](coordinate11); - var animation7 = getAnimation(get_default(defaultCfg2, "animation", "")); + var animation7 = getAnimation((0, import_util132.get)(defaultCfg2, "animation", "")); if (animation7) { var cfg = __assign(__assign(__assign({}, DEFAULT_ANIMATE_CFG.appear), defaultCfg2), animateCfg); container2.stopAnimate(); @@ -56254,6 +62394,9 @@ function doGroupAppearAnimate(container2, animateCfg, geometryType, coordinate11 } } +// node_modules/@antv/g2/esm/geometry/element/index.js +var import_util133 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/geometry/shape/constant.js var BACKGROUND_SHAPE = "element-background"; @@ -56388,7 +62531,7 @@ var Element3 = function(_super) { Element4.prototype.clearStates = function() { var _this = this; var states = this.states; - each_default(states, function(state2) { + (0, import_util133.each)(states, function(state2) { _this.setState(state2, false); }); this.states = []; @@ -56441,15 +62584,15 @@ var Element3 = function(_super) { var stateOption = geometry35.stateOption; var defaultShapeType = shapeFactory.defaultShapeType; var stateTheme = shapeFactory.theme[shapeType] || shapeFactory.theme[defaultShapeType]; - this.statesStyle = deep_mix_default({}, stateTheme, stateOption); + this.statesStyle = (0, import_util133.deepMix)({}, stateTheme, stateOption); } return this.statesStyle; }; Element4.prototype.getStateStyle = function(stateName, shapeKey) { var statesStyle = this.getStatesStyle(); - var stateCfg = get_default(statesStyle, [stateName, "style"], {}); + var stateCfg = (0, import_util133.get)(statesStyle, [stateName, "style"], {}); var shapeStyle = stateCfg[shapeKey] || stateCfg; - if (is_function_default(shapeStyle)) { + if ((0, import_util133.isFunction)(shapeStyle)) { return shapeStyle(this); } return shapeStyle; @@ -56462,7 +62605,7 @@ var Element3 = function(_super) { if (cfg_1) { return __assign(__assign({}, cfg_1), { callback: function() { var _a6; - is_function_default(cfg_1.callback) && cfg_1.callback(); + (0, import_util133.isFunction)(cfg_1.callback) && cfg_1.callback(); (_a6 = _this.geometry) === null || _a6 === void 0 ? void 0 : _a6.emit(GEOMETRY_LIFE_CIRCLE.AFTER_DRAW_ANIMATE); } }); } @@ -56482,7 +62625,7 @@ var Element3 = function(_super) { var name_1 = this.shape.cfg.name; if (!name_1) { this.shape.cfg.name = ["element", this.shapeFactory.geometryType]; - } else if (is_string_default(name_1)) { + } else if ((0, import_util133.isString)(name_1)) { this.shape.cfg.name = ["element", name_1]; } var animateType = isUpdate ? "enter" : "appear"; @@ -56536,12 +62679,12 @@ var Element3 = function(_super) { this.syncShapeStyle(children[i4], newChildren[i4], states, animateCfg, index2 + i4); } } else { - if (!is_empty_default(states) && !is_equal_default(states, ["reset"])) { + if (!(0, import_util133.isEmpty)(states) && !(0, import_util133.isEqual)(states, ["reset"])) { var name_2 = sourceShape.get("name"); - if (is_array_default(name_2)) { + if ((0, import_util133.isArray)(name_2)) { name_2 = name_2[1]; } - each_default(states, function(state2) { + (0, import_util133.each)(states, function(state2) { if (targetShape.get("name") !== BACKGROUND_SHAPE) { var style = _this.getStateStyle(state2, name_2 || index2); targetShape.attr(style); @@ -56557,7 +62700,7 @@ var Element3 = function(_super) { toAttrs: newAttrs, shapeModel: this.model }); - } else if (!is_empty_default(states)) { + } else if (!(0, import_util133.isEmpty)(states)) { sourceShape.stopAnimate(); sourceShape.animate(newAttrs, { duration: 300 @@ -56571,8 +62714,8 @@ var Element3 = function(_super) { } }; Element4.prototype.getShapeType = function(model) { - var shape = get_default(model, "shape"); - return is_array_default(shape) ? shape[0] : shape; + var shape = (0, import_util133.get)(model, "shape"); + return (0, import_util133.isArray)(shape) ? shape[0] : shape; }; return Element4; }(base_default); @@ -56595,6 +62738,7 @@ function registerGeometryLabelLayout(type2, layoutFn) { } // node_modules/@antv/g2/esm/geometry/shape/base.js +var import_util134 = __toModule(require_lib()); var ShapeFactoryBase = { coordinate: null, defaultShapeType: null, @@ -56615,7 +62759,7 @@ var ShapeFactoryBase = { return []; }, getDefaultStyle: function(geometryTheme) { - return get_default(geometryTheme, [this.defaultShapeType, "default", "style"], {}); + return (0, import_util134.get)(geometryTheme, [this.defaultShapeType, "default", "style"], {}); }, getMarker: function(shapeType, markerCfg) { var shape = this.getShape(shapeType); @@ -56624,9 +62768,9 @@ var ShapeFactoryBase = { shape = this.getShape(defaultShapeType); } var theme4 = this.theme; - var shapeStyle = get_default(theme4, [shapeType, "default"], {}); + var shapeStyle = (0, import_util134.get)(theme4, [shapeType, "default"], {}); var markerStyle = shape.getMarker(markerCfg); - return deep_mix_default({}, shapeStyle, markerStyle); + return (0, import_util134.deepMix)({}, shapeStyle, markerStyle); }, drawShape: function(shapeType, cfg, container2) { var shape = this.getShape(shapeType); @@ -56660,36 +62804,37 @@ var ShapeBase = { }; var ShapeFactoryMap = {}; function registerShapeFactory(factoryName, cfg) { - var className = upper_first_default(factoryName); + var className = (0, import_util134.upperFirst)(factoryName); var geomObj = __assign(__assign(__assign({}, ShapeFactoryBase), cfg), { geometryType: factoryName }); ShapeFactoryMap[className] = geomObj; return geomObj; } function registerShape(factoryName, shapeType, cfg) { - var className = upper_first_default(factoryName); + var className = (0, import_util134.upperFirst)(factoryName); var factory = ShapeFactoryMap[className]; var shapeObj = __assign(__assign({}, ShapeBase), cfg); factory[shapeType] = shapeObj; return shapeObj; } function getShapeFactory(factoryName) { - var className = upper_first_default(factoryName); + var className = (0, import_util134.upperFirst)(factoryName); return ShapeFactoryMap[className]; } // node_modules/@antv/g2/esm/geometry/util/group-data.js -function group(data3, fields, appendConditions) { +var import_util135 = __toModule(require_lib()); +function group2(data3, fields, appendConditions) { if (appendConditions === void 0) { appendConditions = {}; } if (!fields) { return [data3]; } - var groups = groupToMap(data3, fields); + var groups = (0, import_util135.groupToMap)(data3, fields); var array = []; if (fields.length === 1 && appendConditions[fields[0]]) { - var values2 = appendConditions[fields[0]]; - for (var _i = 0, values_1 = values2; _i < values_1.length; _i++) { + var values4 = appendConditions[fields[0]]; + for (var _i = 0, values_1 = values4; _i < values_1.length; _i++) { var value2 = values_1[_i]; var arr = groups["_".concat(value2)]; if (arr) { @@ -56708,28 +62853,30 @@ function group(data3, fields, appendConditions) { } // node_modules/@antv/g2/esm/geometry/util/is-model-change.js +var import_util136 = __toModule(require_lib()); function isModelChange(currentModel, preModel) { - return some_default(["color", "shape", "size", "x", "y", "isInCircle", "data", "style", "defaultStyle", "points", "mappingData"], function(key) { - return !is_equal_default(currentModel[key], preModel[key]); + return (0, import_util136.some)(["color", "shape", "size", "x", "y", "isInCircle", "data", "style", "defaultStyle", "points", "mappingData"], function(key) { + return !(0, import_util136.isEqual)(currentModel[key], preModel[key]); }); } // node_modules/@antv/g2/esm/geometry/util/parse-fields.js +var import_util137 = __toModule(require_lib()); function parseFields(field6) { - if (is_array_default(field6)) { + if ((0, import_util137.isArray)(field6)) { return field6; } return field6.split("*"); } // node_modules/@antv/g2/esm/geometry/util/diff.js -function diff(keyItem, keys2) { +function diff(keyItem, keys6) { var added = []; var updated = []; var removed = []; var keyIncluded = new Map(); - for (var i4 = 0; i4 < keys2.length; i4++) { - var key = keys2[i4]; + for (var i4 = 0; i4 < keys6.length; i4++) { + var key = keys6[i4]; if (keyItem[key]) updated.push(key); else @@ -56750,7 +62897,7 @@ function diff(keyItem, keys2) { // node_modules/@antv/g2/esm/geometry/base.js function filterLabelsById(id, labelsMap) { var labels = []; - each_default(labelsMap, function(label17, labelId) { + (0, import_util138.each)(labelsMap, function(label17, labelId) { var elementId = labelId.split(" ")[0]; if (elementId === id) { labels.push(label17); @@ -56798,17 +62945,17 @@ var Geometry = function(_super) { } Geometry3.prototype.position = function(cfg) { var positionCfg = cfg; - if (!is_plain_object_default(cfg)) { + if (!(0, import_util138.isPlainObject)(cfg)) { positionCfg = { fields: parseFields(cfg) }; } - var fields = get_default(positionCfg, "fields"); + var fields = (0, import_util138.get)(positionCfg, "fields"); if (fields.length === 1) { fields.unshift("1"); - set_default(positionCfg, "fields", fields); + (0, import_util138.set)(positionCfg, "fields", fields); } - set_default(this.attributeOption, "position", positionCfg); + (0, import_util138.set)(this.attributeOption, "position", positionCfg); return this; }; Geometry3.prototype.color = function(field6, cfg) { @@ -56825,11 +62972,11 @@ var Geometry = function(_super) { }; Geometry3.prototype.adjust = function(adjustCfg2) { var adjusts = adjustCfg2; - if (is_string_default(adjustCfg2) || is_plain_object_default(adjustCfg2)) { + if ((0, import_util138.isString)(adjustCfg2) || (0, import_util138.isPlainObject)(adjustCfg2)) { adjusts = [adjustCfg2]; } - each_default(adjusts, function(adjust4, index2) { - if (!is_object_default(adjust4)) { + (0, import_util138.each)(adjusts, function(adjust4, index2) { + if (!(0, import_util138.isObject)(adjust4)) { adjusts[index2] = { type: adjust4 }; } }); @@ -56837,7 +62984,7 @@ var Geometry = function(_super) { return this; }; Geometry3.prototype.style = function(field6, styleFunc) { - if (is_string_default(field6)) { + if ((0, import_util138.isString)(field6)) { var fields = parseFields(field6); this.styleOption = { fields, @@ -56856,7 +63003,7 @@ var Geometry = function(_super) { return this; }; Geometry3.prototype.tooltip = function(field6, cfg) { - if (is_string_default(field6)) { + if ((0, import_util138.isString)(field6)) { var fields = parseFields(field6); this.tooltipOption = { fields, @@ -56872,13 +63019,13 @@ var Geometry = function(_super) { return this; }; Geometry3.prototype.label = function(field6, secondParam, thirdParam) { - if (is_string_default(field6)) { + if ((0, import_util138.isString)(field6)) { var labelOption = {}; var fields = parseFields(field6); labelOption.fields = fields; - if (is_function_default(secondParam)) { + if ((0, import_util138.isFunction)(secondParam)) { labelOption.callback = secondParam; - } else if (is_plain_object_default(secondParam)) { + } else if ((0, import_util138.isPlainObject)(secondParam)) { labelOption.cfg = secondParam; } if (thirdParam) { @@ -56913,9 +63060,9 @@ var Geometry = function(_super) { } var data3 = cfg.data, isDataChanged = cfg.isDataChanged, isCoordinateChanged = cfg.isCoordinateChanged; var _a6 = this, attributeOption = _a6.attributeOption, lastAttributeOption = _a6.lastAttributeOption; - if (!is_equal_default(attributeOption, lastAttributeOption)) { + if (!(0, import_util138.isEqual)(attributeOption, lastAttributeOption)) { this.init(cfg); - } else if (data3 && (isDataChanged || !is_equal_default(data3, this.data))) { + } else if (data3 && (isDataChanged || !(0, import_util138.isEqual)(data3, this.data))) { this.setCfg(cfg); this.initAttributes(); this.processData(data3); @@ -56930,7 +63077,7 @@ var Geometry = function(_super) { isUpdate = false; } if (this.animateOption) { - this.animateOption = deep_mix_default({}, getDefaultAnimateCfg(this.type, this.coordinate), this.animateOption); + this.animateOption = (0, import_util138.deepMix)({}, getDefaultAnimateCfg(this.type, this.coordinate), this.animateOption); } this.defaultSize = void 0; this.elementsMap = {}; @@ -56950,7 +63097,7 @@ var Geometry = function(_super) { var container2 = this.container; var type2 = this.type; var coordinate11 = this.coordinate; - var animateCfg = get_default(this.animateOption, "appear"); + var animateCfg = (0, import_util138.get)(this.animateOption, "appear"); var yScale = this.getYScale(); var yMinPoint = coordinate11.convert({ x: 0, @@ -56959,7 +63106,7 @@ var Geometry = function(_super) { doGroupAppearAnimate(container2, animateCfg, type2, coordinate11, yMinPoint); } if (this.labelOption) { - this.renderLabels(flatten_default(this.dataArray), isUpdate); + this.renderLabels((0, import_util138.flatten)(this.dataArray), isUpdate); } this.lastAttributeOption = __assign({}, this.attributeOption); if (this.visible === false) { @@ -57023,7 +63170,7 @@ var Geometry = function(_super) { }; Geometry3.prototype.getGroupAttributes = function() { var rst = []; - each_default(this.attributes, function(attr) { + (0, import_util138.each)(this.attributes, function(attr) { if (GROUP_ATTRS.includes(attr.type)) { rst.push(attr); } @@ -57033,7 +63180,7 @@ var Geometry = function(_super) { Geometry3.prototype.getDefaultValue = function(attrName) { var value2; var attr = this.getAttribute(attrName); - if (attr && is_empty_default(attr.scales)) { + if (attr && (0, import_util138.isEmpty)(attr.scales)) { value2 = attr.values[0]; } return value2; @@ -57074,7 +63221,7 @@ var Geometry = function(_super) { return this.elements; }; Geometry3.prototype.getElementId = function(data3) { - data3 = is_array_default(data3) ? data3[0] : data3; + data3 = (0, import_util138.isArray)(data3) ? data3[0] : data3; var originData = data3[FIELD_ORIGIN]; if (this.idFields.length) { var elementId = originData[this.idFields[0]]; @@ -57104,8 +63251,8 @@ var Geometry = function(_super) { id = "".concat(xVal, "-").concat(yVal); } var groupScales = this.groupScales; - if (is_empty_default(groupScales)) { - groupScales = get_default(this.getAttribute("color"), "scales", []); + if ((0, import_util138.isEmpty)(groupScales)) { + groupScales = (0, import_util138.get)(this.getAttribute("color"), "scales", []); } for (var index2 = 0, length_2 = groupScales.length; index2 < length_2; index2++) { var groupScale = groupScales[index2]; @@ -57132,17 +63279,17 @@ var Geometry = function(_super) { if (attributeOption.hasOwnProperty(attributeType)) { var eachOpt = attributeOption[attributeType]; if (eachOpt.fields) { - uniq2(eachOpt.fields, fields, tmpMap); + uniq(eachOpt.fields, fields, tmpMap); } else if (eachOpt.values) { - uniq2(eachOpt.values, fields, tmpMap); + uniq(eachOpt.values, fields, tmpMap); } } } if (labelOption && labelOption.fields) { - uniq2(labelOption.fields, fields, tmpMap); + uniq(labelOption.fields, fields, tmpMap); } - if (is_object_default(tooltipOption) && tooltipOption.fields) { - uniq2(tooltipOption.fields, fields, tmpMap); + if ((0, import_util138.isObject)(tooltipOption) && tooltipOption.fields) { + uniq(tooltipOption.fields, fields, tmpMap); } return fields; }; @@ -57190,7 +63337,7 @@ var Geometry = function(_super) { var attributeName = GROUP_ATTRS[index2]; var cfg = this.attributeOption[attributeName]; if (cfg && cfg.fields) { - uniq2(cfg.fields, groupFields, tmpMap); + uniq(cfg.fields, groupFields, tmpMap); } } return groupFields; @@ -57200,10 +63347,10 @@ var Geometry = function(_super) { return [x6, y5]; }; Geometry3.prototype.getXField = function() { - return get_default(this.getXYFields(), [0]); + return (0, import_util138.get)(this.getXYFields(), [0]); }; Geometry3.prototype.getYField = function() { - return get_default(this.getXYFields(), [1]); + return (0, import_util138.get)(this.getXYFields(), [1]); }; Geometry3.prototype.getShapes = function() { return this.elements.map(function(element) { @@ -57242,7 +63389,7 @@ var Geometry = function(_super) { return; } if (!this.shapeFactory) { - this.shapeFactory = clone_default(getShapeFactory(shapeType)); + this.shapeFactory = (0, import_util138.clone)(getShapeFactory(shapeType)); } this.shapeFactory.coordinate = this.coordinate; this.shapeFactory.theme = this.theme.geometries[shapeType] || {}; @@ -57300,7 +63447,7 @@ var Geometry = function(_super) { } cfg.shape = shapeName; var theme4 = this.theme.geometries[this.shapeType]; - cfg.defaultStyle = get_default(theme4, [shapeName, "default"], {}).style; + cfg.defaultStyle = (0, import_util138.get)(theme4, [shapeName, "default"], {}).style; if (!cfg.defaultStyle && this.getShapeFactory()) { cfg.defaultStyle = this.getShapeFactory().getDefaultStyle(theme4); } @@ -57319,7 +63466,7 @@ var Geometry = function(_super) { isUpdate = false; } var keyDatum = new Map(); - var keys2 = []; + var keys6 = []; var keyIndex = new Map(); var index2 = 0; for (var i4 = 0; i4 < mappingDataArray.length; i4++) { @@ -57328,14 +63475,14 @@ var Geometry = function(_super) { var mappingDatum = mappingData[j4]; var key = this.getElementId(mappingDatum); var finalKey = keyDatum.has(key) ? "".concat(key, "-").concat(i4, "-").concat(j4) : key; - keys2.push(finalKey); + keys6.push(finalKey); keyDatum.set(finalKey, mappingDatum); keyIndex.set(finalKey, index2); index2++; } } this.elements = new Array(index2); - var _a6 = diff(this.lastElementsMap, keys2), added = _a6.added, updated = _a6.updated, removed = _a6.removed; + var _a6 = diff(this.lastElementsMap, keys6), added = _a6.added, updated = _a6.updated, removed = _a6.removed; for (var _i = 0, added_1 = added; _i < added_1.length; _i++) { var key = added_1[_i]; var mappingDatum = keyDatum.get(key); @@ -57377,7 +63524,7 @@ var Geometry = function(_super) { Geometry3.prototype.getLabelType = function() { var _a6 = this, labelOption = _a6.labelOption, coordinate11 = _a6.coordinate, type2 = _a6.type; var coordinateType = coordinate11.type, isTransposed = coordinate11.isTransposed; - var labelType = get_default(labelOption, ["cfg", "type"]); + var labelType = (0, import_util138.get)(labelOption, ["cfg", "type"]); if (!labelType) { if (coordinateType === "polar") { labelType = isTransposed ? "pie" : "polar"; @@ -57393,41 +63540,41 @@ var Geometry = function(_super) { }; Geometry3.prototype.getYMinValue = function() { var yScale = this.getYScale(); - var min7 = yScale.min, max8 = yScale.max; + var min13 = yScale.min, max15 = yScale.max; var value2; - if (min7 >= 0) { - value2 = min7; - } else if (max8 <= 0) { - value2 = max8; + if (min13 >= 0) { + value2 = min13; + } else if (max15 <= 0) { + value2 = max15; } else { value2 = 0; } return value2; }; Geometry3.prototype.createAttrOption = function(attrName, field6, cfg) { - if (is_nil_default(field6) || is_object_default(field6)) { - if (is_object_default(field6) && is_equal_default(Object.keys(field6), ["values"])) { - set_default(this.attributeOption, attrName, { + if ((0, import_util138.isNil)(field6) || (0, import_util138.isObject)(field6)) { + if ((0, import_util138.isObject)(field6) && (0, import_util138.isEqual)(Object.keys(field6), ["values"])) { + (0, import_util138.set)(this.attributeOption, attrName, { fields: field6.values }); } else { - set_default(this.attributeOption, attrName, field6); + (0, import_util138.set)(this.attributeOption, attrName, field6); } } else { var attrCfg = {}; - if (is_number_default(field6)) { + if ((0, import_util138.isNumber)(field6)) { attrCfg.values = [field6]; } else { attrCfg.fields = parseFields(field6); } if (cfg) { - if (is_function_default(cfg)) { + if ((0, import_util138.isFunction)(cfg)) { attrCfg.callback = cfg; } else { attrCfg.values = cfg; } } - set_default(this.attributeOption, attrName, attrCfg); + (0, import_util138.set)(this.attributeOption, attrName, attrCfg); } }; Geometry3.prototype.initAttributes = function() { @@ -57442,7 +63589,7 @@ var Geometry = function(_super) { return { value: void 0 }; } var attrCfg = __assign({}, option); - var callback = attrCfg.callback, values2 = attrCfg.values, _b = attrCfg.fields, fields = _b === void 0 ? [] : _b; + var callback = attrCfg.callback, values4 = attrCfg.values, _b = attrCfg.fields, fields = _b === void 0 ? [] : _b; var scales = fields.map(function(field6) { var scale12 = _this.scales[field6]; if (scale12.isCategory && !tmpMap[field6] && GROUP_ATTRS.includes(attrType2)) { @@ -57454,7 +63601,7 @@ var Geometry = function(_super) { attrCfg.scales = scales; if (attrType2 !== "position" && scales.length === 1 && scales[0].type === "identity") { attrCfg.values = scales[0].values; - } else if (!callback && !values2) { + } else if (!callback && !values4) { if (attrType2 === "size") { attrCfg.values = theme4.sizes; } else if (attrType2 === "shape") { @@ -57546,10 +63693,10 @@ var Geometry = function(_super) { var coordinate11 = this.coordinate; if (!yScale) { adjustCfg2.height = coordinate11.getHeight(); - var size2 = this.getDefaultValue("size") || 3; - adjustCfg2.size = size2; + var size14 = this.getDefaultValue("size") || 3; + adjustCfg2.size = size14; } - if (!coordinate11.isTransposed && is_nil_default(adjustCfg2.reverseOrder)) { + if (!coordinate11.isTransposed && (0, import_util138.isNil)(adjustCfg2.reverseOrder)) { adjustCfg2.reverseOrder = true; } } @@ -57570,35 +63717,35 @@ var Geometry = function(_super) { var scale12 = groupScales[index2]; var field6 = scale12.field; groupFields.push(field6); - if (get_default(scaleDefs, [field6, "values"])) { + if ((0, import_util138.get)(scaleDefs, [field6, "values"])) { appendConditions[field6] = scaleDefs[field6].values; } } - return group(data3, groupFields, appendConditions); + return group2(data3, groupFields, appendConditions); }; Geometry3.prototype.updateStackRange = function(scale12, dataArray) { - var mergeArray = flatten_default(dataArray); + var mergeArray = (0, import_util138.flatten)(dataArray); var field6 = scale12.field; - var min7 = scale12.min; - var max8 = scale12.max; + var min13 = scale12.min; + var max15 = scale12.max; for (var index2 = 0; index2 < mergeArray.length; index2++) { var obj = mergeArray[index2]; var tmpMin = Math.min.apply(null, obj[field6]); var tmpMax = Math.max.apply(null, obj[field6]); - if (tmpMin < min7) { - min7 = tmpMin; + if (tmpMin < min13) { + min13 = tmpMin; } - if (tmpMax > max8) { - max8 = tmpMax; + if (tmpMax > max15) { + max15 = tmpMax; } } var scaleDefs = this.scaleDefs; var cfg = {}; - if (min7 < scale12.min && !get_default(scaleDefs, [field6, "min"])) { - cfg.min = min7; + if (min13 < scale12.min && !(0, import_util138.get)(scaleDefs, [field6, "min"])) { + cfg.min = min13; } - if (max8 > scale12.max && !get_default(scaleDefs, [field6, "max"])) { - cfg.max = max8; + if (max15 > scale12.max && !(0, import_util138.get)(scaleDefs, [field6, "max"])) { + cfg.max = max15; } scale12.change(cfg); }; @@ -57631,15 +63778,15 @@ var Geometry = function(_super) { obj.points = points; } }; - Geometry3.prototype.normalizeValues = function(values2, scale12) { + Geometry3.prototype.normalizeValues = function(values4, scale12) { var rst = []; - if (is_array_default(values2)) { - for (var index2 = 0; index2 < values2.length; index2++) { - var value2 = values2[index2]; + if ((0, import_util138.isArray)(values4)) { + for (var index2 = 0; index2 < values4.length; index2++) { + var value2 = values4[index2]; rst.push(scale12.scale(value2)); } } else { - rst = scale12.scale(values2); + rst = scale12.scale(values4); } return rst; }; @@ -57657,15 +63804,15 @@ var Geometry = function(_super) { if (attributes.hasOwnProperty(k4)) { var attr = attributes[k4]; var names = attr.names; - var values2 = this.getAttributeValues(attr, record); + var values4 = this.getAttributeValues(attr, record); if (names.length > 1) { - for (var j4 = 0; j4 < values2.length; j4 += 1) { - var val = values2[j4]; + for (var j4 = 0; j4 < values4.length; j4 += 1) { + var val = values4[j4]; var name_1 = names[j4]; - newRecord[name_1] = is_array_default(val) && val.length === 1 ? val[0] : val; + newRecord[name_1] = (0, import_util138.isArray)(val) && val.length === 1 ? val[0] : val; } } else { - newRecord[names[0]] = values2.length === 1 ? values2[0] : values2; + newRecord[names[0]] = values4.length === 1 ? values4[0] : values4; } } } @@ -57680,7 +63827,7 @@ var Geometry = function(_super) { var rstY; var obj; var coordinate11 = this.coordinate; - if (is_array_default(x6) && is_array_default(y5)) { + if ((0, import_util138.isArray)(x6) && (0, import_util138.isArray)(y5)) { rstX = []; rstY = []; for (var i4 = 0, j4 = 0, xLen = x6.length, yLen = y5.length; i4 < xLen && j4 < yLen; i4 += 1, j4 += 1) { @@ -57691,7 +63838,7 @@ var Geometry = function(_super) { rstX.push(obj.x); rstY.push(obj.y); } - } else if (is_array_default(y5)) { + } else if ((0, import_util138.isArray)(y5)) { rstY = []; for (var index2 = 0; index2 < y5.length; index2++) { var yVal = y5[index2]; @@ -57700,7 +63847,7 @@ var Geometry = function(_super) { y: yVal }); if (rstX && rstX !== obj.x) { - if (!is_array_default(rstX)) { + if (!(0, import_util138.isArray)(rstX)) { rstX = [rstX]; } rstX.push(obj.x); @@ -57709,7 +63856,7 @@ var Geometry = function(_super) { } rstY.push(obj.y); } - } else if (is_array_default(x6)) { + } else if ((0, import_util138.isArray)(x6)) { rstX = []; for (var index2 = 0; index2 < x6.length; index2++) { var xVal = x6[index2]; @@ -57718,7 +63865,7 @@ var Geometry = function(_super) { y: y5 }); if (rstY && rstY !== obj.y) { - if (!is_array_default(rstY)) { + if (!(0, import_util138.isArray)(rstY)) { rstY = [rstY]; } rstY.push(obj.y); @@ -57760,14 +63907,14 @@ var Geometry = function(_super) { if (scaleDefs) { this.scaleDefs = scaleDefs; this.idFields = []; - each_default(scaleDefs, function(scaleDef, field6) { + (0, import_util138.each)(scaleDefs, function(scaleDef, field6) { if (scaleDef && scaleDef.key) { _this.idFields.push(field6); } }); } if (theme4) { - this.theme = this.userTheme ? deep_mix_default({}, theme4, this.userTheme) : theme4; + this.theme = this.userTheme ? (0, import_util138.deepMix)({}, theme4, this.userTheme) : theme4; } }; Geometry3.prototype.renderLabels = function(mappingArray, isUpdate) { @@ -57783,7 +63930,7 @@ var Geometry = function(_super) { } geometryLabel.render(mappingArray, isUpdate); var labelsMap = geometryLabel.labelsRenderer.shapesMap; - each_default(this.elementsMap, function(element, id) { + (0, import_util138.each)(this.elementsMap, function(element, id) { var labels = filterLabelsById(id, labelsMap); if (labels.length) { element.labelShape = labels; @@ -57800,12 +63947,21 @@ var Geometry = function(_super) { }); }; Geometry3.prototype.canDoGroupAnimation = function(isUpdate) { - return !isUpdate && this.animateOption && (get_default(this.animateOption, "appear") === void 0 || get_default(this.animateOption, "appear") && get_default(this.animateOption, ["appear", "animation"]) === void 0); + return !isUpdate && this.animateOption && ((0, import_util138.get)(this.animateOption, "appear") === void 0 || (0, import_util138.get)(this.animateOption, "appear") && (0, import_util138.get)(this.animateOption, ["appear", "animation"]) === void 0); }; return Geometry3; }(base_default); var base_default13 = Geometry; +// node_modules/@antv/g2/esm/geometry/label/base.js +var import_util143 = __toModule(require_lib()); + +// node_modules/@antv/g2/esm/component/labels.js +var import_util141 = __toModule(require_lib()); + +// node_modules/@antv/g2/esm/geometry/label/util/index.js +var import_util139 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/util/transform.js var transform3 = ext_exports.transform; function translate3(element, x6, y5) { @@ -57857,9 +64013,9 @@ function getlLabelBackgroundInfo(labelGroup, labelItem, padding3) { var _a6 = labelShape.getCanvasBBox(), x6 = _a6.x, y5 = _a6.y, width2 = _a6.width, height = _a6.height; labelShape.destroy(); var boxPadding = padding3; - if (is_nil_default(boxPadding)) { + if ((0, import_util139.isNil)(boxPadding)) { boxPadding = [2, 2, 2, 2]; - } else if (is_number_default(boxPadding)) { + } else if ((0, import_util139.isNumber)(boxPadding)) { boxPadding = new Array(4).fill(boxPadding); } return { @@ -57881,16 +64037,17 @@ function getOverlapArea(a4, b10, margin) { } function checkShapeOverlap(cur, dones) { var box2 = cur.getBBox(); - return some_default(dones, function(done) { + return (0, import_util139.some)(dones, function(done) { var target = done.getBBox(); return getOverlapArea(box2, target, 2) > 0; }); } // node_modules/@antv/g2/esm/component/update-label.js +var import_util140 = __toModule(require_lib()); function updateLabel(fromShape, toShape, cfg) { var data3 = cfg.data, origin = cfg.origin, animateCfg = cfg.animateCfg, coordinate11 = cfg.coordinate; - var updateAnimateCfg = get_default(animateCfg, "update"); + var updateAnimateCfg = (0, import_util140.get)(animateCfg, "update"); fromShape.set("data", data3); fromShape.set("origin", origin); fromShape.set("animateCfg", animateCfg); @@ -57920,7 +64077,7 @@ function updateLabel(fromShape, toShape, cfg) { } } }); - each_default(toShape.getChildren(), function(child, idx) { + (0, import_util140.each)(toShape.getChildren(), function(child, idx) { if (idx >= fromShape.getCount()) { if (!child.destroyed) { fromShape.add(child); @@ -57960,7 +64117,7 @@ var Labels = function() { } var lastShapesMap = this.lastShapesMap; var shapesMap = this.shapesMap; - each_default(shapesMap, function(shape, id) { + (0, import_util141.each)(shapesMap, function(shape, id) { if (shape.destroyed) { delete shapesMap[id]; } else { @@ -57979,7 +64136,7 @@ var Labels = function() { _this.shapesMap[id] = currentShape; } else { container2.add(shape); - var animateCfg = get_default(shape.get("animateCfg"), isUpdate ? "enter" : "appear"); + var animateCfg = (0, import_util141.get)(shape.get("animateCfg"), isUpdate ? "enter" : "appear"); if (animateCfg) { doAnimate(shape, animateCfg, { toAttrs: __assign({}, shape.attr()), @@ -57990,8 +64147,8 @@ var Labels = function() { delete lastShapesMap[id]; } }); - each_default(lastShapesMap, function(deleteShape) { - var animateCfg = get_default(deleteShape.get("animateCfg"), "leave"); + (0, import_util141.each)(lastShapesMap, function(deleteShape) { + var animateCfg = (0, import_util141.get)(deleteShape.get("animateCfg"), "leave"); if (animateCfg) { doAnimate(deleteShape, animateCfg, { toAttrs: null, @@ -58025,12 +64182,12 @@ var Labels = function() { }; var labelGroup = container2.addGroup(__assign({ name: "label", - animateCfg: this.animate === false || animate === null || animate === false ? false : deep_mix_default({}, this.animate, animate) + animateCfg: this.animate === false || animate === null || animate === false ? false : (0, import_util141.deepMix)({}, this.animate, animate) }, shapeAppendCfg)); var labelShape; if (content.isGroup && content.isGroup() || content.isShape && content.isShape()) { var _a6 = content.getCanvasBBox(), width2 = _a6.width, height = _a6.height; - var textAlign = get_default(cfg, "textAlign", "left"); + var textAlign = (0, import_util141.get)(cfg, "textAlign", "left"); var x6 = cfg.x; var y5 = cfg.y - height / 2; if (textAlign === "center") { @@ -58042,8 +64199,8 @@ var Labels = function() { labelShape = content; labelGroup.add(content); } else { - var fill = get_default(cfg, ["style", "fill"]); - labelShape = labelGroup.addShape("text", __assign({ attrs: __assign(__assign({ x: cfg.x, y: cfg.y, textAlign: cfg.textAlign, textBaseline: get_default(cfg, "textBaseline", "middle"), text: cfg.content }, cfg.style), { fill: is_null_default(fill) ? cfg.color : fill }) }, shapeAppendCfg)); + var fill = (0, import_util141.get)(cfg, ["style", "fill"]); + labelShape = labelGroup.addShape("text", __assign({ attrs: __assign(__assign({ x: cfg.x, y: cfg.y, textAlign: cfg.textAlign, textBaseline: (0, import_util141.get)(cfg, "textBaseline", "middle"), text: cfg.content }, cfg.style), { fill: (0, import_util141.isNull)(fill) ? cfg.color : fill }) }, shapeAppendCfg)); } if (cfg.rotate) { rotate5(labelShape, cfg.rotate); @@ -58053,13 +64210,13 @@ var Labels = function() { Labels2.prototype.doLayout = function(items, shapes) { var _this = this; if (this.layout) { - var layouts = is_array_default(this.layout) ? this.layout : [this.layout]; - each_default(layouts, function(layout6) { - var layoutFn = getGeometryLabelLayout(get_default(layout6, "type", "")); + var layouts = (0, import_util141.isArray)(this.layout) ? this.layout : [this.layout]; + (0, import_util141.each)(layouts, function(layout6) { + var layoutFn = getGeometryLabelLayout((0, import_util141.get)(layout6, "type", "")); if (layoutFn) { var labelShapes_1 = []; var geometryShapes_1 = []; - each_default(_this.shapesMap, function(labelShape, id) { + (0, import_util141.each)(_this.shapesMap, function(labelShape, id) { labelShapes_1.push(labelShape); geometryShapes_1.push(shapes[labelShape.get("elementId")]); }); @@ -58070,8 +64227,8 @@ var Labels = function() { }; Labels2.prototype.renderLabelLine = function(labelItems) { var _this = this; - each_default(labelItems, function(labelItem) { - var coordinate11 = get_default(labelItem, "coordinate"); + (0, import_util141.each)(labelItems, function(labelItem) { + var coordinate11 = (0, import_util141.get)(labelItem, "coordinate"); if (!labelItem || !coordinate11) { return; } @@ -58080,7 +64237,7 @@ var Labels = function() { if (!labelItem.labelLine) { return; } - var labelLineCfg = get_default(labelItem, "labelLine", {}); + var labelLineCfg = (0, import_util141.get)(labelItem, "labelLine", {}); var id = labelItem.id; var path = labelLineCfg.path; if (!path) { @@ -58094,7 +64251,7 @@ var Labels = function() { if (!labelGroup.destroyed) { labelGroup.addShape("path", { capture: false, - attrs: __assign({ path, stroke: labelItem.color ? labelItem.color : get_default(labelItem, ["style", "fill"], "#000"), fill: null }, labelLineCfg.style), + attrs: __assign({ path, stroke: labelItem.color ? labelItem.color : (0, import_util141.get)(labelItem, ["style", "fill"], "#000"), fill: null }, labelLineCfg.style), id, origin: labelItem.mappingData, data: labelItem.data, @@ -58105,9 +64262,9 @@ var Labels = function() { }; Labels2.prototype.renderLabelBackground = function(labelItems) { var _this = this; - each_default(labelItems, function(labelItem) { - var coordinate11 = get_default(labelItem, "coordinate"); - var background = get_default(labelItem, "background"); + (0, import_util141.each)(labelItems, function(labelItem) { + var coordinate11 = (0, import_util141.get)(labelItem, "coordinate"); + var background = (0, import_util141.get)(labelItem, "background"); if (!background || !coordinate11) { return; } @@ -58141,7 +64298,7 @@ var Labels = function() { }; Labels2.prototype.adjustLabel = function(items) { var _this = this; - each_default(items, function(item) { + (0, import_util141.each)(items, function(item) { if (item) { var id = item.id; var labelGroup = _this.shapesMap[id]; @@ -58149,7 +64306,7 @@ var Labels = function() { var labelShapes = labelGroup.findAll(function(ele) { return ele.get("type") !== "path"; }); - each_default(labelShapes, function(labelShape) { + (0, import_util141.each)(labelShapes, function(labelShape) { if (labelShape) { if (item.offsetX) { labelShape.attr("x", labelShape.attr("x") + item.offsetX); @@ -58170,7 +64327,7 @@ var labels_default = Labels; // node_modules/@antv/g2/esm/geometry/label/base.js function avg(arr) { var sum = 0; - each_default(arr, function(value2) { + (0, import_util143.each)(arr, function(value2) { sum += value2; }); return sum / arr.length; @@ -58183,17 +64340,17 @@ var GeometryLabel = function() { var _this = this; var items = []; var labelCfgs = this.getLabelCfgs(mapppingArray); - each_default(mapppingArray, function(mappingData, index2) { + (0, import_util143.each)(mapppingArray, function(mappingData, index2) { var labelCfg = labelCfgs[index2]; - if (!labelCfg || is_nil_default(mappingData.x) || is_nil_default(mappingData.y)) { + if (!labelCfg || (0, import_util143.isNil)(mappingData.x) || (0, import_util143.isNil)(mappingData.y)) { items.push(null); return; } - var labelContent = !is_array_default(labelCfg.content) ? [labelCfg.content] : labelCfg.content; + var labelContent = !(0, import_util143.isArray)(labelCfg.content) ? [labelCfg.content] : labelCfg.content; labelCfg.content = labelContent; var total = labelContent.length; - each_default(labelContent, function(content, subIndex) { - if (is_nil_default(content) || content === "") { + (0, import_util143.each)(labelContent, function(content, subIndex) { + if ((0, import_util143.isNil)(content) || content === "") { items.push(null); return; } @@ -58238,9 +64395,9 @@ var GeometryLabel = function() { var geometry35 = this.geometry; var type2 = geometry35.type, theme4 = geometry35.theme; if (type2 === "polygon" || type2 === "interval" && position2 === "middle" || offset < 0 && !["line", "point", "path"].includes(type2)) { - return get_default(theme4, "innerLabels", {}); + return (0, import_util143.get)(theme4, "innerLabels", {}); } - return get_default(theme4, "labels", {}); + return (0, import_util143.get)(theme4, "labels", {}); }; GeometryLabel2.prototype.getThemedLabelCfg = function(labelCfg) { var geometry35 = this.geometry; @@ -58248,9 +64405,9 @@ var GeometryLabel = function() { var type2 = geometry35.type, theme4 = geometry35.theme; var themedLabelCfg; if (type2 === "polygon" || labelCfg.offset < 0 && !["line", "point", "path"].includes(type2)) { - themedLabelCfg = deep_mix_default({}, defaultLabelCfg3, theme4.innerLabels, labelCfg); + themedLabelCfg = (0, import_util143.deepMix)({}, defaultLabelCfg3, theme4.innerLabels, labelCfg); } else { - themedLabelCfg = deep_mix_default({}, defaultLabelCfg3, theme4.labels, labelCfg); + themedLabelCfg = (0, import_util143.deepMix)({}, defaultLabelCfg3, theme4.labels, labelCfg); } return themedLabelCfg; }; @@ -58286,7 +64443,7 @@ var GeometryLabel = function() { isAvg = false; } var v3 = value2; - if (is_array_default(v3)) { + if ((0, import_util143.isArray)(v3)) { if (labelCfg.content.length === 1) { if (isAvg) { v3 = avg(v3); @@ -58310,7 +64467,7 @@ var GeometryLabel = function() { start: { x: 0, y: 0 }, color: "#fff" }; - var shape = is_array_default(mappingData.shape) ? mappingData.shape[0] : mappingData.shape; + var shape = (0, import_util143.isArray)(mappingData.shape) ? mappingData.shape[0] : mappingData.shape; var isFunnel = shape === "funnel" || shape === "pyramid"; if (this.geometry.type === "polygon") { var centroid = getPolygonCentroid(mappingData.x, mappingData.y); @@ -58324,8 +64481,8 @@ var GeometryLabel = function() { label17.y = getDimValue(mappingData.y, index2); } if (isFunnel) { - var nextPoints = get_default(mappingData, "nextPoints"); - var points = get_default(mappingData, "points"); + var nextPoints = (0, import_util143.get)(mappingData, "nextPoints"); + var points = (0, import_util143.get)(mappingData, "points"); if (nextPoints) { var point1 = coordinate11.convert(points[1]); var point2 = coordinate11.convert(nextPoints[1]); @@ -58391,7 +64548,7 @@ var GeometryLabel = function() { if (!labelsRenderer) { labelsRenderer = new labels_default({ container: labelsContainer, - layout: get_default(labelOption, ["cfg", "layout"], { + layout: (0, import_util143.get)(labelOption, ["cfg", "layout"], { type: this.defaultLayout }) }); @@ -58410,7 +64567,7 @@ var GeometryLabel = function() { return scales[field6]; }); var labelCfgs = []; - each_default(mapppingArray, function(mappingData, index2) { + (0, import_util143.each)(mapppingArray, function(mappingData, index2) { var origin = mappingData[FIELD_ORIGIN]; var originText = _this.getLabelText(origin, labelScales); var callbackCfg; @@ -58419,7 +64576,7 @@ var GeometryLabel = function() { return origin[field6]; }); callbackCfg = callback.apply(void 0, originValues); - if (is_nil_default(callbackCfg)) { + if ((0, import_util143.isNil)(callbackCfg)) { labelCfgs.push(null); return; } @@ -58431,17 +64588,17 @@ var GeometryLabel = function() { mappingData, coordinate: coordinate11 }, cfg), callbackCfg); - if (is_function_default(labelCfg.position)) { + if ((0, import_util143.isFunction)(labelCfg.position)) { labelCfg.position = labelCfg.position(origin, mappingData, index2); } var offset = _this.getLabelOffset(labelCfg.offset || 0); var defaultLabelCfg3 = _this.getDefaultLabelCfg(offset, labelCfg.position); - labelCfg = deep_mix_default({}, defaultLabelCfg3, labelCfg); + labelCfg = (0, import_util143.deepMix)({}, defaultLabelCfg3, labelCfg); labelCfg.offset = _this.getLabelOffset(labelCfg.offset || 0); var content = labelCfg.content; - if (is_function_default(content)) { + if ((0, import_util143.isFunction)(content)) { labelCfg.content = content(origin, mappingData, index2); - } else if (is_undefined_default(content)) { + } else if ((0, import_util143.isUndefined)(content)) { labelCfg.content = originText[0]; } labelCfgs.push(labelCfg); @@ -58450,16 +64607,16 @@ var GeometryLabel = function() { }; GeometryLabel2.prototype.getLabelText = function(origin, scales) { var labelTexts = []; - each_default(scales, function(scale12) { + (0, import_util143.each)(scales, function(scale12) { var value2 = origin[scale12.field]; - if (is_array_default(value2)) { + if ((0, import_util143.isArray)(value2)) { value2 = value2.map(function(subVal) { return scale12.getText(subVal); }); } else { value2 = scale12.getText(value2); } - if (is_nil_default(value2) || value2 === "") { + if ((0, import_util143.isNil)(value2) || value2 === "") { labelTexts.push(null); } else { labelTexts.push(value2); @@ -58473,7 +64630,7 @@ var GeometryLabel = function() { } var coordinate11 = this.getCoordinate(); var actualOffset = 0; - if (is_number_default(offset)) { + if ((0, import_util143.isNumber)(offset)) { actualOffset = offset; } return coordinate11.isTransposed ? coordinate11.applyMatrix(actualOffset, 0) : coordinate11.applyMatrix(0, actualOffset); @@ -58481,10 +64638,10 @@ var GeometryLabel = function() { GeometryLabel2.prototype.getGeometryShapes = function() { var geometry35 = this.geometry; var shapes = {}; - each_default(geometry35.elementsMap, function(element, id) { + (0, import_util143.each)(geometry35.elementsMap, function(element, id) { shapes[id] = element.shape; }); - each_default(geometry35.getOffscreenGroup().getChildren(), function(child) { + (0, import_util143.each)(geometry35.getOffscreenGroup().getChildren(), function(child) { var id = geometry35.getElementId(child.get("origin").mappingData); shapes[id] = child; }); @@ -58509,6 +64666,9 @@ function getMappingValue(attr, value2, def) { return r4 || def; } +// node_modules/@antv/g2/esm/util/legend.js +var import_util144 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/util/marker.js var MarkerSymbols = { hexagon: function(x6, y5, r4) { @@ -58570,28 +64730,28 @@ var MarkerSymbols = { // node_modules/@antv/g2/esm/util/legend.js var STROKES_SYMBOLS = ["line", "cross", "tick", "plus", "hyphen"]; function handleUserMarkerStyle(markerStyle, style) { - if (is_function_default(style)) { + if ((0, import_util144.isFunction)(style)) { return style(markerStyle); } - return deep_mix_default({}, markerStyle, style); + return (0, import_util144.deepMix)({}, markerStyle, style); } function adpatorMarkerStyle(marker, color4) { var symbol = marker.symbol; - if (is_string_default(symbol) && STROKES_SYMBOLS.indexOf(symbol) !== -1) { - var markerStyle = get_default(marker, "style", {}); - var lineWidth = get_default(markerStyle, "lineWidth", 1); + if ((0, import_util144.isString)(symbol) && STROKES_SYMBOLS.indexOf(symbol) !== -1) { + var markerStyle = (0, import_util144.get)(marker, "style", {}); + var lineWidth = (0, import_util144.get)(markerStyle, "lineWidth", 1); var stroke = markerStyle.stroke || markerStyle.fill || color4; - marker.style = deep_mix_default({}, marker.style, { lineWidth, stroke, fill: null }); + marker.style = (0, import_util144.deepMix)({}, marker.style, { lineWidth, stroke, fill: null }); } } function setMarkerSymbol(marker) { var symbol = marker.symbol; - if (is_string_default(symbol) && MarkerSymbols[symbol]) { + if ((0, import_util144.isString)(symbol) && MarkerSymbols[symbol]) { marker.symbol = MarkerSymbols[symbol]; } } -function getLegendLayout(direction5) { - return direction5.startsWith(DIRECTION.LEFT) || direction5.startsWith(DIRECTION.RIGHT) ? "vertical" : "horizontal"; +function getLegendLayout(direction3) { + return direction3.startsWith(DIRECTION.LEFT) || direction3.startsWith(DIRECTION.RIGHT) ? "vertical" : "horizontal"; } function getLegendItems(view, geometry35, attr, themeMarker, userMarker) { var scale12 = attr.getScale(attr.type); @@ -58607,7 +64767,7 @@ function getLegendItems(view, geometry35, attr, themeMarker, userMarker) { var name = text; var value2 = scale12.invert(scaleValue); var unchecked = view.filterFieldData(field_1, [(_a6 = {}, _a6[field_1] = value2, _a6)]).length === 0; - each_default(view.views, function(subView) { + (0, import_util144.each)(view.views, function(subView) { var _a7; if (!subView.filterFieldData(field_1, [(_a7 = {}, _a7[field_1] = value2, _a7)]).length) { unchecked = true; @@ -58620,10 +64780,10 @@ function getLegendItems(view, geometry35, attr, themeMarker, userMarker) { isInPolar: isInPolar_1 }); var markerCfg = userMarker; - if (is_function_default(markerCfg)) { - markerCfg = markerCfg(name, index2, __assign({ name, value: value2 }, deep_mix_default({}, themeMarker, marker))); + if ((0, import_util144.isFunction)(markerCfg)) { + markerCfg = markerCfg(name, index2, __assign({ name, value: value2 }, (0, import_util144.deepMix)({}, themeMarker, marker))); } - marker = deep_mix_default({}, themeMarker, marker, omit(__assign({}, markerCfg), ["style"])); + marker = (0, import_util144.deepMix)({}, themeMarker, marker, omit(__assign({}, markerCfg), ["style"])); adpatorMarkerStyle(marker, color4); if (markerCfg && markerCfg.style) { marker.style = handleUserMarkerStyle(marker.style, markerCfg.style); @@ -58637,22 +64797,23 @@ function getLegendItems(view, geometry35, attr, themeMarker, userMarker) { function getCustomLegendItems(themeMarker, userMarker, customItems) { return customItems.map(function(item, index2) { var markerCfg = userMarker; - if (is_function_default(markerCfg)) { - markerCfg = markerCfg(item.name, index2, deep_mix_default({}, themeMarker, item)); + if ((0, import_util144.isFunction)(markerCfg)) { + markerCfg = markerCfg(item.name, index2, (0, import_util144.deepMix)({}, themeMarker, item)); } - var itemMarker = is_function_default(item.marker) ? item.marker(item.name, index2, deep_mix_default({}, themeMarker, item)) : item.marker; - var marker = deep_mix_default({}, themeMarker, markerCfg, itemMarker); + var itemMarker = (0, import_util144.isFunction)(item.marker) ? item.marker(item.name, index2, (0, import_util144.deepMix)({}, themeMarker, item)) : item.marker; + var marker = (0, import_util144.deepMix)({}, themeMarker, markerCfg, itemMarker); setMarkerSymbol(marker); item.marker = marker; return item; }); } -function getLegendThemeCfg(theme4, direction5) { - var legendTheme = get_default(theme4, ["components", "legend"], {}); - return deep_mix_default({}, get_default(legendTheme, ["common"], {}), deep_mix_default({}, get_default(legendTheme, [direction5], {}))); +function getLegendThemeCfg(theme4, direction3) { + var legendTheme = (0, import_util144.get)(theme4, ["components", "legend"], {}); + return (0, import_util144.deepMix)({}, (0, import_util144.get)(legendTheme, ["common"], {}), (0, import_util144.deepMix)({}, (0, import_util144.get)(legendTheme, [direction3], {}))); } // node_modules/@antv/g2/esm/geometry/shape/util/get-path-points.js +var import_util145 = __toModule(require_lib()); function isValueEmpty(value2) { if (value2) { return false; @@ -58660,11 +64821,11 @@ function isValueEmpty(value2) { return value2 === null || value2 === void 0 || isNaN(value2); } function isYNil(point2) { - if (is_array_default(point2)) { + if ((0, import_util145.isArray)(point2)) { return isValueEmpty(point2[1].y); } var value2 = point2.y; - return is_array_default(value2) ? isValueEmpty(value2[0]) : isValueEmpty(value2); + return (0, import_util145.isArray)(value2) ? isValueEmpty(value2[0]) : isValueEmpty(value2); } function getPathPoints(points, connectNulls, showSinglePoint) { if (connectNulls === void 0) { @@ -58747,12 +64908,16 @@ function getSmoothViolinPath(points) { return path; } +// node_modules/@antv/g2/esm/geometry/shape/line/index.js +var import_util148 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/geometry/shape/util/get-style.js +var import_util146 = __toModule(require_lib()); function getStyle2(cfg, isStroke, isFill, sizeName) { if (sizeName === void 0) { sizeName = ""; } - var _a6 = cfg.style, style = _a6 === void 0 ? {} : _a6, defaultStyle = cfg.defaultStyle, color4 = cfg.color, size2 = cfg.size; + var _a6 = cfg.style, style = _a6 === void 0 ? {} : _a6, defaultStyle = cfg.defaultStyle, color4 = cfg.color, size14 = cfg.size; var attrs = __assign(__assign({}, defaultStyle), style); if (color4) { if (isStroke) { @@ -58766,25 +64931,26 @@ function getStyle2(cfg, isStroke, isFill, sizeName) { } } } - if (sizeName && is_nil_default(style[sizeName]) && !is_nil_default(size2)) { - attrs[sizeName] = size2; + if (sizeName && (0, import_util146.isNil)(style[sizeName]) && !(0, import_util146.isNil)(size14)) { + attrs[sizeName] = size14; } return attrs; } function getBackgroundRectStyle(cfg) { - return deep_mix_default({}, { + return (0, import_util146.deepMix)({}, { fill: "#CCD6EC", fillOpacity: 0.3 - }, get_default(cfg, ["background", "style"])); + }, (0, import_util146.get)(cfg, ["background", "style"])); } // node_modules/@antv/g2/esm/geometry/shape/util/split-points.js +var import_util147 = __toModule(require_lib()); function splitPoints(obj) { var x6 = obj.x; - var y5 = is_array_default(obj.y) ? obj.y : [obj.y]; + var y5 = (0, import_util147.isArray)(obj.y) ? obj.y : [obj.y]; return y5.map(function(eachY, index2) { return { - x: is_array_default(x6) ? x6[index2] : x6, + x: (0, import_util147.isArray)(x6) ? x6[index2] : x6, y: eachY }; }); @@ -58904,7 +65070,7 @@ function getSinglePath(points, isInCircle, smooth, constraint, style) { function getRangePath(points, isInCircle, isStack, smooth, constraint, style) { var topPoints = []; var bottomPoints = []; - each_default(points, function(point2) { + (0, import_util148.each)(points, function(point2) { var result = splitPoints(point2); topPoints.push(result[1]); bottomPoints.push(result[0]); @@ -58919,14 +65085,14 @@ function getRangePath(points, isInCircle, isStack, smooth, constraint, style) { function getPath(points, isInCircle, isStack, smooth, constraint, style) { if (points.length) { var first = points[0]; - return is_array_default(first.y) ? getRangePath(points, isInCircle, isStack, smooth, constraint, style) : getSinglePath(points, isInCircle, smooth, constraint, style); + return (0, import_util148.isArray)(first.y) ? getRangePath(points, isInCircle, isStack, smooth, constraint, style) : getSinglePath(points, isInCircle, smooth, constraint, style); } return []; } var LineShapeFactory = registerShapeFactory("line", { defaultShapeType: "line" }); -each_default(["line", "dot", "dash", "smooth"], function(shapeType) { +(0, import_util148.each)(["line", "dot", "dash", "smooth"], function(shapeType) { registerShape("line", shapeType, { draw: function(cfg, container2) { var smooth = shapeType === "smooth"; @@ -58954,7 +65120,7 @@ each_default(["line", "dot", "dash", "smooth"], function(shapeType) { }); // node_modules/@antv/g2/esm/core.js -var VERSION = "4.1.39"; +var VERSION = "4.1.40"; var Util = { getLegendItems, translate: translate3, @@ -59263,12 +65429,12 @@ var antvDark = createDarkStyleSheet(); var esm_exports = {}; __export(esm_exports, { AbstractCanvas: () => canvas_default, - AbstractGroup: () => group_default2, + AbstractGroup: () => group_default, AbstractShape: () => shape_default, Base: () => base_default2, Canvas: () => canvas_default2, Event: () => graph_event_default, - Group: () => group_default3, + Group: () => group_default2, PathUtil: () => path_exports, Shape: () => shape_exports, assembleFont: () => assembleFont, @@ -59299,6 +65465,7 @@ __export(shape_exports, { }); // node_modules/@antv/g-canvas/esm/util/util.js +var import_util151 = __toModule(require_lib()); function getPixelRatio() { return window ? window.devicePixelRatio : 1; } @@ -59328,6 +65495,9 @@ function isSamePoint2(point1, point2) { return point1[0] === point2[0] && point1[1] === point2[1]; } +// node_modules/@antv/g-canvas/esm/util/draw.js +var import_util154 = __toModule(require_lib()); + // node_modules/@antv/g-canvas/esm/util/parse.js var regexLG2 = /^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i; var regexRG2 = /^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i; @@ -59335,7 +65505,7 @@ var regexPR = /^p\s*\(\s*([axyn])\s*\)\s*(.*)/i; var regexColorStop2 = /[\d.]+:(#[^\s]+|[^\)]+\))/gi; function addStop(steps, gradient2) { var arr = steps.match(regexColorStop2); - each_default(arr, function(item) { + (0, import_util151.each)(arr, function(item) { var itemArr = item.split(":"); gradient2.addColorStop(itemArr[0], itemArr[1]); }); @@ -59458,7 +65628,7 @@ function parseStyle(context, element, color4) { if (isNaN(bbox.x) || isNaN(bbox.y) || isNaN(bbox.width) || isNaN(bbox.height)) { return color4; } - if (is_string_default(color4)) { + if ((0, import_util151.isString)(color4)) { if (color4[1] === "(" || color4[2] === "(") { if (color4[0] === "l") { return parseLineGradient(context, element, color4); @@ -59481,7 +65651,7 @@ function parseRadius(radius) { var r22 = 0; var r32 = 0; var r4 = 0; - if (is_array_default(radius)) { + if ((0, import_util151.isArray)(radius)) { if (radius.length === 1) { r1 = r22 = r32 = r4 = radius[0]; } else if (radius.length === 2) { @@ -59516,7 +65686,7 @@ function vAngle2(u3, v3) { function getArcParams2(startPoint, params) { var rx = params[1]; var ry = params[2]; - var xRotation = mod_default(to_radian_default(params[3]), Math.PI * 2); + var xRotation = (0, import_util151.mod)((0, import_util151.toRadian)(params[3]), Math.PI * 2); var arcFlag = params[4]; var sweepFlag = params[5]; var x1 = startPoint[0]; @@ -59660,7 +65830,7 @@ function applyAttrsToContext(context, element) { if (name_1 === "matrix" && v3) { context.transform(v3[0], v3[1], v3[3], v3[4], v3[6], v3[7]); } else if (name_1 === "lineDash" && context.setLineDash) { - is_array_default(v3) && context.setLineDash(v3); + (0, import_util154.isArray)(v3) && context.setLineDash(v3); } else { if (name_1 === "strokeStyle" || name_1 === "fillStyle") { v3 = parseStyle(context, element, v3); @@ -59683,7 +65853,7 @@ function drawChildren(context, children, region) { } function checkRefresh(canvas, children, region) { var refreshElements = canvas.get("refreshElements"); - each_default(refreshElements, function(el) { + (0, import_util154.each)(refreshElements, function(el) { if (el !== canvas) { var parent_1 = el.cfg.parent; while (parent_1 && parent_1 !== canvas && !parent_1.cfg.refresh) { @@ -59875,7 +66045,7 @@ function getMergedRegion(elements) { var minYArr = []; var maxXArr = []; var maxYArr = []; - each_default(elements, function(el) { + (0, import_util154.each)(elements, function(el) { var region = getRefreshRegion(el); if (region) { minXArr.push(region.minX); @@ -59885,10 +66055,10 @@ function getMergedRegion(elements) { } }); return { - minX: min_default(minXArr), - minY: min_default(minYArr), - maxX: max_default(maxXArr), - maxY: max_default(maxYArr) + minX: (0, import_util154.min)(minXArr), + minY: (0, import_util154.min)(minYArr), + maxX: (0, import_util154.max)(maxXArr), + maxY: (0, import_util154.max)(maxYArr) }; } function mergeView(region, viewRegion) { @@ -59907,6 +66077,7 @@ function mergeView(region, viewRegion) { } // node_modules/@antv/g-canvas/esm/group.js +var import_util156 = __toModule(require_lib()); var Group = function(_super) { __extends(Group3, _super); function Group3() { @@ -59935,7 +66106,7 @@ var Group = function(_super) { var children = this.cfg.children; var xArr = []; var yArr = []; - each_default(children, function(child) { + (0, import_util156.each)(children, function(child) { var bbox2 = child.cfg.cacheCanvasBBox; if (bbox2 && child.cfg.isInView) { xArr.push(bbox2.minX, bbox2.maxX); @@ -59944,10 +66115,10 @@ var Group = function(_super) { }); var bbox = null; if (xArr.length) { - var minX = min_default(xArr); - var maxX = max_default(xArr); - var minY = min_default(yArr); - var maxY2 = max_default(yArr); + var minX = (0, import_util156.min)(xArr); + var maxX = (0, import_util156.max)(xArr); + var minY = (0, import_util156.min)(yArr); + var maxY2 = (0, import_util156.max)(yArr); bbox = { minX, minY, @@ -59987,8 +66158,8 @@ var Group = function(_super) { this.set("hasChanged", false); }; return Group3; -}(group_default2); -var group_default3 = Group; +}(group_default); +var group_default2 = Group; // node_modules/@antv/g-canvas/esm/shape/base.js var ShapeBase2 = function(_super) { @@ -60004,7 +66175,7 @@ var ShapeBase2 = function(_super) { return shape_exports; }; ShapeBase4.prototype.getGroupBase = function() { - return group_default3; + return group_default2; }; ShapeBase4.prototype.onCanvasChange = function(changeType) { refreshElement(this, changeType); @@ -60113,7 +66284,7 @@ var ShapeBase2 = function(_super) { ShapeBase4.prototype.strokeAndFill = function(context) { var _a6 = this.attrs, lineWidth = _a6.lineWidth, opacity = _a6.opacity, strokeOpacity = _a6.strokeOpacity, fillOpacity = _a6.fillOpacity; if (this.isFill()) { - if (!is_nil_default(fillOpacity) && fillOpacity !== 1) { + if (!(0, import_util151.isNil)(fillOpacity) && fillOpacity !== 1) { context.globalAlpha = fillOpacity; this.fill(context); context.globalAlpha = opacity; @@ -60123,7 +66294,7 @@ var ShapeBase2 = function(_super) { } if (this.isStroke()) { if (lineWidth > 0) { - if (!is_nil_default(strokeOpacity) && strokeOpacity !== 1) { + if (!(0, import_util151.isNil)(strokeOpacity) && strokeOpacity !== 1) { context.globalAlpha = strokeOpacity; } this.stroke(context); @@ -60255,7 +66426,7 @@ var ellipse_default3 = Ellipse; // node_modules/@antv/g-canvas/esm/shape/image.js function isCanvas(dom) { - return dom instanceof HTMLElement && is_string_default(dom.nodeName) && dom.nodeName.toUpperCase() === "CANVAS"; + return dom instanceof HTMLElement && (0, import_util151.isString)(dom.nodeName) && dom.nodeName.toUpperCase() === "CANVAS"; } var ImageShape = function(_super) { __extends(ImageShape2, _super); @@ -60288,7 +66459,7 @@ var ImageShape = function(_super) { ImageShape2.prototype._setImage = function(img) { var _this = this; var attrs = this.attrs; - if (is_string_default(img)) { + if ((0, import_util151.isString)(img)) { var image_1 = new Image(); image_1.onload = function() { if (_this.destroyed) { @@ -60337,7 +66508,7 @@ var ImageShape = function(_super) { var x6 = attrs.x, y5 = attrs.y, width2 = attrs.width, height = attrs.height, sx = attrs.sx, sy = attrs.sy, swidth = attrs.swidth, sheight = attrs.sheight; var img = attrs.img; if (img instanceof Image || isCanvas(img)) { - if (!is_nil_default(sx) && !is_nil_default(sy) && !is_nil_default(swidth) && !is_nil_default(sheight)) { + if (!(0, import_util151.isNil)(sx) && !(0, import_util151.isNil)(sy) && !(0, import_util151.isNil)(swidth) && !(0, import_util151.isNil)(sheight)) { context.drawImage(img, sx, sy, swidth, sheight, x6, y5, width2, height); } else { context.drawImage(img, x6, y5, width2, height); @@ -60439,6 +66610,7 @@ var Line3 = function(_super) { var line_default7 = Line3; // node_modules/@antv/g-canvas/esm/shape/marker.js +var import_util161 = __toModule(require_lib()); var Symbols = { circle: function(x6, y5, r4) { return [ @@ -60483,7 +66655,7 @@ var Marker = function(_super) { return true; }; Marker3.prototype._getR = function(attrs) { - return is_nil_default(attrs.r) ? attrs.radius : attrs.r; + return (0, import_util161.isNil)(attrs.r) ? attrs.radius : attrs.r; }; Marker3.prototype._getPath = function() { var attrs = this.attr(); @@ -60492,7 +66664,7 @@ var Marker = function(_super) { var r4 = this._getR(attrs); var method; var path; - if (is_function_default(symbol)) { + if ((0, import_util151.isFunction)(symbol)) { method = symbol; path = method(x6, y5, r4); path = pathToAbsolute2(path); @@ -60516,11 +66688,14 @@ var Marker = function(_super) { }(base_default15); var marker_default = Marker; +// node_modules/@antv/g-canvas/esm/shape/path.js +var import_util165 = __toModule(require_lib()); + // node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js function isPointInPath(shape, x6, y5) { - var ctx4 = getOffScreenContext(); - shape.createPath(ctx4); - return ctx4.isPointInPath(x6, y5); + var ctx3 = getOffScreenContext(); + shape.createPath(ctx3); + return ctx3.isPointInPath(x6, y5); } // node_modules/@antv/g-canvas/esm/util/in-path/polygon.js @@ -60531,8 +66706,8 @@ function dcmp2(x6) { } return x6 < 0 ? -1 : 1; } -function onSegment2(p1, p22, q4) { - if ((q4[0] - p1[0]) * (p22[1] - p1[1]) === (p22[0] - p1[0]) * (q4[1] - p1[1]) && Math.min(p1[0], p22[0]) <= q4[0] && q4[0] <= Math.max(p1[0], p22[0]) && Math.min(p1[1], p22[1]) <= q4[1] && q4[1] <= Math.max(p1[1], p22[1])) { +function onSegment2(p1, p22, q3) { + if ((q3[0] - p1[0]) * (p22[1] - p1[1]) === (p22[0] - p1[0]) * (q3[1] - p1[1]) && Math.min(p1[0], p22[0]) <= q3[0] && q3[0] <= Math.max(p1[0], p22[0]) && Math.min(p1[1], p22[1]) <= q3[1] && q3[1] <= Math.max(p1[1], p22[1])) { return true; } return false; @@ -60761,7 +66936,7 @@ var Path = function(_super) { }; Path4.prototype.getTotalLength = function() { var totalLength = this.get("totalLength"); - if (!is_nil_default(totalLength)) { + if (!(0, import_util165.isNil)(totalLength)) { return totalLength; } this._calculateCurve(); @@ -60787,14 +66962,14 @@ var Path = function(_super) { } return null; } - each_default(tCache, function(v3, i4) { + (0, import_util165.each)(tCache, function(v3, i4) { if (ratio >= v3[0] && ratio <= v3[1]) { subt = (ratio - v3[0]) / (v3[1] - v3[0]); index2 = i4; } }); var seg = curve[index2]; - if (is_nil_default(seg) || is_nil_default(index2)) { + if ((0, import_util165.isNil)(seg) || (0, import_util165.isNil)(index2)) { return null; } var l4 = seg.length; @@ -60817,7 +66992,7 @@ var Path = function(_super) { if (!curve) { return; } - each_default(curve, function(segment, i4) { + (0, import_util165.each)(curve, function(segment, i4) { segmentN = curve[i4 + 1]; l4 = segment.length; if (segmentN) { @@ -60829,7 +67004,7 @@ var Path = function(_super) { this.set("tCache", []); return; } - each_default(curve, function(segment, i4) { + (0, import_util165.each)(curve, function(segment, i4) { segmentN = curve[i4 + 1]; l4 = segment.length; if (segmentN) { @@ -60901,8 +67076,8 @@ function inPolyline(points, lineWidth, x6, y5, isClose) { } if (isClose) { var first = points[0]; - var last2 = points[count2 - 1]; - if (inLine(first[0], first[1], last2[0], last2[1], lineWidth, x6, y5)) { + var last17 = points[count2 - 1]; + if (inLine(first[0], first[1], last17[0], last17[1], lineWidth, x6, y5)) { return true; } } @@ -60948,6 +67123,7 @@ var Polygon = function(_super) { var polygon_default3 = Polygon; // node_modules/@antv/g-canvas/esm/shape/polyline.js +var import_util166 = __toModule(require_lib()); var PolyLine = function(_super) { __extends(PolyLine2, _super); function PolyLine2() { @@ -61040,7 +67216,7 @@ var PolyLine = function(_super) { PolyLine2.prototype.getTotalLength = function() { var points = this.attr().points; var totalLength = this.get("totalLength"); - if (!is_nil_default(totalLength)) { + if (!(0, import_util166.isNil)(totalLength)) { return totalLength; } this.set("totalLength", polyline_default.length(points)); @@ -61055,7 +67231,7 @@ var PolyLine = function(_super) { } var subt; var index2; - each_default(tCache, function(v3, i4) { + (0, import_util166.each)(tCache, function(v3, i4) { if (ratio >= v3[0] && ratio <= v3[1]) { subt = (ratio - v3[0]) / (v3[1] - v3[0]); index2 = i4; @@ -61076,7 +67252,7 @@ var PolyLine = function(_super) { var tCache = []; var segmentT; var segmentL; - each_default(points, function(p4, i4) { + (0, import_util166.each)(points, function(p4, i4) { if (points[i4 + 1]) { segmentT = []; segmentT[0] = tempLength / totalLength; @@ -61211,7 +67387,7 @@ var Text = function(_super) { }; Text3.prototype._setText = function(text) { var textArr = null; - if (is_string_default(text) && text.indexOf("\n") !== -1) { + if ((0, import_util151.isString)(text) && text.indexOf("\n") !== -1) { textArr = text.split("\n"); } this.set("textArr", textArr); @@ -61240,13 +67416,13 @@ var Text = function(_super) { var spaceingY = this._getSpaceingY(); var height = getTextHeight(attrs.text, attrs.fontSize, attrs.lineHeight); var subY; - each_default(textArr, function(subText, index2) { + (0, import_util151.each)(textArr, function(subText, index2) { subY = y5 + index2 * (spaceingY + fontSize) - height + fontSize; if (textBaseline === "middle") subY += height - fontSize - (height - fontSize) / 2; if (textBaseline === "top") subY += height - fontSize; - if (!is_nil_default(subText)) { + if (!(0, import_util151.isNil)(subText)) { if (isFill) { context.fillText(subText, x6, subY); } else { @@ -61264,7 +67440,7 @@ var Text = function(_super) { this._drawTextArr(context, textArr, isFill); } else { var text = attrs.text; - if (!is_nil_default(text)) { + if (!(0, import_util151.isNil)(text)) { if (isFill) { context.fillText(text, x6, y5); } else { @@ -61277,14 +67453,14 @@ var Text = function(_super) { var _a6 = this.attrs, lineWidth = _a6.lineWidth, opacity = _a6.opacity, strokeOpacity = _a6.strokeOpacity, fillOpacity = _a6.fillOpacity; if (this.isStroke()) { if (lineWidth > 0) { - if (!is_nil_default(strokeOpacity) && strokeOpacity !== 1) { + if (!(0, import_util151.isNil)(strokeOpacity) && strokeOpacity !== 1) { context.globalAlpha = opacity; } this.stroke(context); } } if (this.isFill()) { - if (!is_nil_default(fillOpacity) && fillOpacity !== 1) { + if (!(0, import_util151.isNil)(fillOpacity) && fillOpacity !== 1) { context.globalAlpha = fillOpacity; this.fill(context); context.globalAlpha = opacity; @@ -61390,7 +67566,7 @@ var Canvas2 = function(_super) { return shape_exports; }; Canvas4.prototype.getGroupBase = function() { - return group_default3; + return group_default2; }; Canvas4.prototype.getPixelRatio = function() { var pixelRatio = this.get("pixelRatio") || getPixelRatio(); @@ -61466,7 +67642,7 @@ var Canvas2 = function(_super) { Canvas4.prototype._clearFrame = function() { var drawFrame = this.get("drawFrame"); if (drawFrame) { - cancelAnimationFrame2(drawFrame); + (0, import_util151.clearAnimationFrame)(drawFrame); this.set("drawFrame", null); this.set("refreshElements", []); } @@ -61505,7 +67681,7 @@ var Canvas2 = function(_super) { } else if (refreshElements.length) { clearChanged(refreshElements); } - each_default(refreshElements, function(element) { + (0, import_util151.each)(refreshElements, function(element) { if (element.get("hasChanged")) { element.set("hasChanged", false); } @@ -61516,7 +67692,7 @@ var Canvas2 = function(_super) { var _this = this; var drawFrame = this.get("drawFrame"); if (!drawFrame) { - drawFrame = requestAnimationFrame2(function() { + drawFrame = (0, import_util151.requestAnimationFrame)(function() { if (_this.get("localRefresh")) { _this._drawRegion(); } else { @@ -61546,12 +67722,12 @@ var version = "0.5.12"; var esm_exports2 = {}; __export(esm_exports2, { AbstractCanvas: () => canvas_default, - AbstractGroup: () => group_default2, + AbstractGroup: () => group_default, AbstractShape: () => shape_default, Base: () => base_default2, Canvas: () => canvas_default3, Event: () => graph_event_default, - Group: () => group_default4, + Group: () => group_default3, PathUtil: () => path_exports, Shape: () => shape_exports2, assembleFont: () => assembleFont, @@ -61581,6 +67757,9 @@ __export(shape_exports2, { Text: () => text_default4 }); +// node_modules/@antv/g-svg/esm/util/dom.js +var import_util171 = __toModule(require_lib()); + // node_modules/@antv/g-svg/esm/constant.js var SHAPE_TO_TAGS = { rect: "path", @@ -61665,7 +67844,7 @@ function createDom2(shape) { } function sortDom(element, sorter) { var el = element.get("el"); - var childList = to_array_default(el.children).sort(sorter); + var childList = (0, import_util171.toArray)(el.children).sort(sorter); var fragment = document.createDocumentFragment(); childList.forEach(function(child) { fragment.appendChild(child); @@ -61797,6 +67976,7 @@ function refreshElement2(element, changeType) { } // node_modules/@antv/g-svg/esm/group.js +var import_util172 = __toModule(require_lib()); var Group2 = function(_super) { __extends(Group3, _super); function Group3() { @@ -61859,7 +68039,7 @@ var Group2 = function(_super) { Group3.prototype.createPath = function(context, targetAttrs) { var attrs = this.attr(); var el = this.get("el"); - each_default(targetAttrs || attrs, function(value2, attr) { + (0, import_util172.each)(targetAttrs || attrs, function(value2, attr) { if (SVG_ATTR_MAP[attr]) { el.setAttribute(SVG_ATTR_MAP[attr], value2); } @@ -61867,8 +68047,8 @@ var Group2 = function(_super) { setTransform(this); }; return Group3; -}(group_default2); -var group_default4 = Group2; +}(group_default); +var group_default3 = Group2; // node_modules/@antv/g-svg/esm/shape/base.js var ShapeBase3 = function(_super) { @@ -61896,7 +68076,7 @@ var ShapeBase3 = function(_super) { return shape_exports2; }; ShapeBase4.prototype.getGroupBase = function() { - return group_default4; + return group_default3; }; ShapeBase4.prototype.onCanvasChange = function(changeType) { refreshElement2(this, changeType); @@ -62065,6 +68245,7 @@ var ShapeBase3 = function(_super) { var base_default16 = ShapeBase3; // node_modules/@antv/g-svg/esm/shape/circle.js +var import_util173 = __toModule(require_lib()); var Circle4 = function(_super) { __extends(Circle6, _super); function Circle6() { @@ -62081,7 +68262,7 @@ var Circle4 = function(_super) { Circle6.prototype.createPath = function(context, targetAttrs) { var attrs = this.attr(); var el = this.get("el"); - each_default(targetAttrs || attrs, function(value2, attr) { + (0, import_util173.each)(targetAttrs || attrs, function(value2, attr) { if (attr === "x" || attr === "y") { el.setAttribute("c" + attr, value2); } else if (SVG_ATTR_MAP[attr]) { @@ -62094,6 +68275,7 @@ var Circle4 = function(_super) { var circle_default6 = Circle4; // node_modules/@antv/g-svg/esm/shape/dom.js +var import_util174 = __toModule(require_lib()); var Dom = function(_super) { __extends(Dom2, _super); function Dom2() { @@ -62106,7 +68288,7 @@ var Dom = function(_super) { Dom2.prototype.createPath = function(context, targetAttrs) { var attrs = this.attr(); var el = this.get("el"); - each_default(targetAttrs || attrs, function(value2, attr) { + (0, import_util174.each)(targetAttrs || attrs, function(value2, attr) { if (SVG_ATTR_MAP[attr]) { el.setAttribute(SVG_ATTR_MAP[attr], value2); } @@ -62131,6 +68313,7 @@ var Dom = function(_super) { var dom_default = Dom; // node_modules/@antv/g-svg/esm/shape/ellipse.js +var import_util175 = __toModule(require_lib()); var Ellipse2 = function(_super) { __extends(Ellipse3, _super); function Ellipse3() { @@ -62147,7 +68330,7 @@ var Ellipse2 = function(_super) { Ellipse3.prototype.createPath = function(context, targetAttrs) { var attrs = this.attr(); var el = this.get("el"); - each_default(targetAttrs || attrs, function(value2, attr) { + (0, import_util175.each)(targetAttrs || attrs, function(value2, attr) { if (attr === "x" || attr === "y") { el.setAttribute("c" + attr, value2); } else if (SVG_ATTR_MAP[attr]) { @@ -62160,6 +68343,7 @@ var Ellipse2 = function(_super) { var ellipse_default4 = Ellipse2; // node_modules/@antv/g-svg/esm/shape/image.js +var import_util176 = __toModule(require_lib()); var Image2 = function(_super) { __extends(Image3, _super); function Image3() { @@ -62177,7 +68361,7 @@ var Image2 = function(_super) { var _this = this; var attrs = this.attr(); var el = this.get("el"); - each_default(targetAttrs || attrs, function(value2, attr) { + (0, import_util176.each)(targetAttrs || attrs, function(value2, attr) { if (attr === "img") { _this._setImage(attrs.img); } else if (SVG_ATTR_MAP[attr]) { @@ -62194,7 +68378,7 @@ var Image2 = function(_super) { Image3.prototype._setImage = function(img) { var attrs = this.attr(); var el = this.get("el"); - if (is_string_default(img)) { + if ((0, import_util176.isString)(img)) { el.setAttribute("href", img); } else if (img instanceof window.Image) { if (!attrs.width) { @@ -62206,7 +68390,7 @@ var Image2 = function(_super) { this.attr("height", img.height); } el.setAttribute("href", img.src); - } else if (img instanceof HTMLElement && is_string_default(img.nodeName) && img.nodeName.toUpperCase() === "CANVAS") { + } else if (img instanceof HTMLElement && (0, import_util176.isString)(img.nodeName) && img.nodeName.toUpperCase() === "CANVAS") { el.setAttribute("href", img.toDataURL()); } else if (img instanceof ImageData) { var canvas = document.createElement("canvas"); @@ -62229,6 +68413,7 @@ var Image2 = function(_super) { var image_default3 = Image2; // node_modules/@antv/g-svg/esm/shape/line.js +var import_util177 = __toModule(require_lib()); var Line4 = function(_super) { __extends(Line9, _super); function Line9() { @@ -62245,10 +68430,10 @@ var Line4 = function(_super) { Line9.prototype.createPath = function(context, targetAttrs) { var attrs = this.attr(); var el = this.get("el"); - each_default(targetAttrs || attrs, function(value2, attr) { + (0, import_util177.each)(targetAttrs || attrs, function(value2, attr) { if (attr === "startArrow" || attr === "endArrow") { if (value2) { - var id = is_object_default(value2) ? context.addArrow(attrs, SVG_ATTR_MAP[attr]) : context.getDefaultArrow(attrs, SVG_ATTR_MAP[attr]); + var id = (0, import_util177.isObject)(value2) ? context.addArrow(attrs, SVG_ATTR_MAP[attr]) : context.getDefaultArrow(attrs, SVG_ATTR_MAP[attr]); el.setAttribute(SVG_ATTR_MAP[attr], "url(#" + id + ")"); } else { el.removeAttribute(SVG_ATTR_MAP[attr]); @@ -62270,6 +68455,9 @@ var Line4 = function(_super) { }(base_default16); var line_default8 = Line4; +// node_modules/@antv/g-svg/esm/shape/marker/index.js +var import_util178 = __toModule(require_lib()); + // node_modules/@antv/g-svg/esm/shape/marker/symbols.js var Symbols2 = { circle: function(x6, y5, r4) { @@ -62326,7 +68514,7 @@ var Marker2 = function(_super) { }; Marker3.prototype._assembleMarker = function() { var d3 = this._getPath(); - if (is_array_default(d3)) { + if ((0, import_util178.isArray)(d3)) { return d3.map(function(path) { return path.join(" "); }).join(""); @@ -62339,7 +68527,7 @@ var Marker2 = function(_super) { var r4 = attrs.r || attrs.radius; var symbol = attrs.symbol || "circle"; var method; - if (is_function_default(symbol)) { + if ((0, import_util178.isFunction)(symbol)) { method = symbol; } else { method = symbols_default.get(symbol); @@ -62356,6 +68544,7 @@ var Marker2 = function(_super) { var marker_default2 = Marker2; // node_modules/@antv/g-svg/esm/shape/path.js +var import_util179 = __toModule(require_lib()); var Path2 = function(_super) { __extends(Path4, _super); function Path4() { @@ -62373,12 +68562,12 @@ var Path2 = function(_super) { var _this = this; var attrs = this.attr(); var el = this.get("el"); - each_default(targetAttrs || attrs, function(value2, attr) { - if (attr === "path" && is_array_default(value2)) { + (0, import_util179.each)(targetAttrs || attrs, function(value2, attr) { + if (attr === "path" && (0, import_util179.isArray)(value2)) { el.setAttribute("d", _this._formatPath(value2)); } else if (attr === "startArrow" || attr === "endArrow") { if (value2) { - var id = is_object_default(value2) ? context.addArrow(attrs, SVG_ATTR_MAP[attr]) : context.getDefaultArrow(attrs, SVG_ATTR_MAP[attr]); + var id = (0, import_util179.isObject)(value2) ? context.addArrow(attrs, SVG_ATTR_MAP[attr]) : context.getDefaultArrow(attrs, SVG_ATTR_MAP[attr]); el.setAttribute(SVG_ATTR_MAP[attr], "url(#" + id + ")"); } else { el.removeAttribute(SVG_ATTR_MAP[attr]); @@ -62418,6 +68607,7 @@ var Path2 = function(_super) { var path_default4 = Path2; // node_modules/@antv/g-svg/esm/shape/polygon.js +var import_util180 = __toModule(require_lib()); var Polygon2 = function(_super) { __extends(Polygon4, _super); function Polygon4() { @@ -62430,8 +68620,8 @@ var Polygon2 = function(_super) { Polygon4.prototype.createPath = function(context, targetAttrs) { var attrs = this.attr(); var el = this.get("el"); - each_default(targetAttrs || attrs, function(value2, attr) { - if (attr === "points" && is_array_default(value2) && value2.length >= 2) { + (0, import_util180.each)(targetAttrs || attrs, function(value2, attr) { + if (attr === "points" && (0, import_util180.isArray)(value2) && value2.length >= 2) { el.setAttribute("points", value2.map(function(point2) { return point2[0] + "," + point2[1]; }).join(" ")); @@ -62445,6 +68635,7 @@ var Polygon2 = function(_super) { var polygon_default4 = Polygon2; // node_modules/@antv/g-svg/esm/shape/polyline.js +var import_util181 = __toModule(require_lib()); var Polyline = function(_super) { __extends(Polyline2, _super); function Polyline2() { @@ -62471,8 +68662,8 @@ var Polyline = function(_super) { Polyline2.prototype.createPath = function(context, targetAttrs) { var attrs = this.attr(); var el = this.get("el"); - each_default(targetAttrs || attrs, function(value2, attr) { - if (attr === "points" && is_array_default(value2) && value2.length >= 2) { + (0, import_util181.each)(targetAttrs || attrs, function(value2, attr) { + if (attr === "points" && (0, import_util181.isArray)(value2) && value2.length >= 2) { el.setAttribute("points", value2.map(function(point2) { return point2[0] + "," + point2[1]; }).join(" ")); @@ -62484,7 +68675,7 @@ var Polyline = function(_super) { Polyline2.prototype.getTotalLength = function() { var points = this.attr().points; var totalLength = this.get("totalLength"); - if (!is_nil_default(totalLength)) { + if (!(0, import_util181.isNil)(totalLength)) { return totalLength; } this.set("totalLength", polyline_default.length(points)); @@ -62499,7 +68690,7 @@ var Polyline = function(_super) { } var subt; var index2; - each_default(tCache, function(v3, i4) { + (0, import_util181.each)(tCache, function(v3, i4) { if (ratio >= v3[0] && ratio <= v3[1]) { subt = (ratio - v3[0]) / (v3[1] - v3[0]); index2 = i4; @@ -62520,7 +68711,7 @@ var Polyline = function(_super) { var tCache = []; var segmentT; var segmentL; - each_default(points, function(p4, i4) { + (0, import_util181.each)(points, function(p4, i4) { if (points[i4 + 1]) { segmentT = []; segmentT[0] = tempLength / totalLength; @@ -62551,13 +68742,17 @@ var Polyline = function(_super) { }(base_default16); var polyline_default4 = Polyline; +// node_modules/@antv/g-svg/esm/shape/rect.js +var import_util183 = __toModule(require_lib()); + // node_modules/@antv/g-svg/esm/util/format.js +var import_util182 = __toModule(require_lib()); function parseRadius2(radius) { var r1 = 0; var r22 = 0; var r32 = 0; var r4 = 0; - if (is_array_default(radius)) { + if ((0, import_util182.isArray)(radius)) { if (radius.length === 1) { r1 = r22 = r32 = r4 = radius[0]; } else if (radius.length === 2) { @@ -62604,7 +68799,7 @@ var Rect2 = function(_super) { var el = this.get("el"); var completed = false; var pathRelatedAttrs = ["x", "y", "width", "height", "radius"]; - each_default(targetAttrs || attrs, function(value2, attr) { + (0, import_util183.each)(targetAttrs || attrs, function(value2, attr) { if (pathRelatedAttrs.indexOf(attr) !== -1 && !completed) { el.setAttribute("d", _this._assembleRect(attrs)); completed = true; @@ -62623,7 +68818,7 @@ var Rect2 = function(_super) { return "M " + x6 + "," + y5 + " l " + w4 + ",0 l 0," + h3 + " l" + -w4 + " 0 z"; } var r4 = parseRadius2(radius); - if (is_array_default(radius)) { + if ((0, import_util183.isArray)(radius)) { if (radius.length === 1) { r4.r1 = r4.r2 = r4.r3 = r4.r4 = radius[0]; } else if (radius.length === 2) { @@ -62661,6 +68856,7 @@ var Rect2 = function(_super) { var rect_default3 = Rect2; // node_modules/@antv/g-svg/esm/shape/text.js +var import_util184 = __toModule(require_lib()); var LETTER_SPACING = 0.3; var BASELINE_MAP = { top: "before-edge", @@ -62701,7 +68897,7 @@ var Text2 = function(_super) { var attrs = this.attr(); var el = this.get("el"); this._setFont(); - each_default(targetAttrs || attrs, function(value2, attr) { + (0, import_util184.each)(targetAttrs || attrs, function(value2, attr) { if (attr === "text") { _this._setText("" + value2); } else if (attr === "matrix" && value2) { @@ -62733,7 +68929,7 @@ var Text2 = function(_super) { var textArr = text.split("\n"); var textLen_1 = textArr.length - 1; var arr_1 = ""; - each_default(textArr, function(segment, i4) { + (0, import_util184.each)(textArr, function(segment, i4) { if (i4 === 0) { if (baseline === "alphabetic") { arr_1 += '' + segment + ""; @@ -62759,7 +68955,11 @@ var Text2 = function(_super) { }(base_default16); var text_default4 = Text2; +// node_modules/@antv/g-svg/esm/defs/index.js +var import_util190 = __toModule(require_lib()); + // node_modules/@antv/g-svg/esm/defs/gradient.js +var import_util185 = __toModule(require_lib()); var regexLG3 = /^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i; var regexRG3 = /^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i; var regexColorStop3 = /[\d.]+:(#[^\s]+|[^)]+\))/gi; @@ -62774,7 +68974,7 @@ function addStop2(steps) { b10 = b10.split(":"); return Number(a4[0]) - Number(b10[0]); }); - each_default(arr, function(item) { + (0, import_util185.each)(arr, function(item) { item = item.split(":"); stops += ''; }); @@ -62782,7 +68982,7 @@ function addStop2(steps) { } function parseLineGradient2(color4, el) { var arr = regexLG3.exec(color4); - var angle3 = mod_default(to_radian_default(parseFloat(arr[1])), Math.PI * 2); + var angle3 = (0, import_util185.mod)((0, import_util185.toRadian)(parseFloat(arr[1])), Math.PI * 2); var steps = arr[2]; var start; var end2; @@ -62848,7 +69048,7 @@ var Gradient = function() { function Gradient2(cfg) { this.cfg = {}; var el = null; - var id = unique_id_default("gradient_"); + var id = (0, import_util185.uniqueId)("gradient_"); if (cfg.toLowerCase()[0] === "l") { el = createSVGElement("linearGradient"); parseLineGradient2(cfg, el); @@ -62870,6 +69070,7 @@ var Gradient = function() { var gradient_default = Gradient; // node_modules/@antv/g-svg/esm/defs/shadow.js +var import_util186 = __toModule(require_lib()); var ATTR_MAP = { shadowColor: "color", shadowOpacity: "opacity", @@ -62889,11 +69090,11 @@ var Shadow = function() { this.cfg = {}; this.type = "filter"; var el = createSVGElement("filter"); - each_default(SHADOW_DIMENSION, function(v3, k4) { + (0, import_util186.each)(SHADOW_DIMENSION, function(v3, k4) { el.setAttribute(k4, v3); }); this.el = el; - this.id = unique_id_default("filter_"); + this.id = (0, import_util186.uniqueId)("filter_"); this.el.id = this.id; this.cfg = cfg; this._parseShadow(cfg, el); @@ -62905,7 +69106,7 @@ var Shadow = function() { } var flag = true; var config = this.cfg; - each_default(Object.keys(config), function(attr) { + (0, import_util186.each)(Object.keys(config), function(attr) { if (config[attr] !== cfg[attr]) { flag = false; return false; @@ -62928,11 +69129,12 @@ var Shadow = function() { var shadow_default = Shadow; // node_modules/@antv/g-svg/esm/defs/arrow.js +var import_util187 = __toModule(require_lib()); var Arrow = function() { function Arrow2(attrs, type2) { this.cfg = {}; var el = createSVGElement("marker"); - var id = unique_id_default("marker_"); + var id = (0, import_util187.uniqueId)("marker_"); el.setAttribute("id", id); var shape = createSVGElement("path"); shape.setAttribute("stroke", attrs.stroke || "none"); @@ -62966,7 +69168,7 @@ var Arrow = function() { var parent = this.el; var path = this.cfg.path; var d3 = this.cfg.d; - if (is_array_default(path)) { + if ((0, import_util187.isArray)(path)) { path = path.map(function(segment) { return segment.join(" "); }).join(""); @@ -62990,13 +69192,14 @@ var Arrow = function() { var arrow_default = Arrow; // node_modules/@antv/g-svg/esm/defs/clip.js +var import_util188 = __toModule(require_lib()); var Clip = function() { function Clip2(cfg) { this.type = "clip"; this.cfg = {}; var el = createSVGElement("clipPath"); this.el = el; - this.id = unique_id_default("clip_"); + this.id = (0, import_util188.uniqueId)("clip_"); el.id = this.id; var shapeEl = cfg.cfg.el; el.appendChild(shapeEl); @@ -63015,6 +69218,7 @@ var Clip = function() { var clip_default = Clip; // node_modules/@antv/g-svg/esm/defs/pattern.js +var import_util189 = __toModule(require_lib()); var regexPR2 = /^p\s*\(\s*([axyn])\s*\)\s*(.*)/i; var Pattern = function() { function Pattern2(cfg) { @@ -63023,7 +69227,7 @@ var Pattern = function() { el.setAttribute("patternUnits", "userSpaceOnUse"); var child = createSVGElement("image"); el.appendChild(child); - var id = unique_id_default("pattern_"); + var id = (0, import_util189.uniqueId)("pattern_"); el.id = id; this.el = el; this.id = id; @@ -63059,7 +69263,7 @@ var pattern_default = Pattern; var Defs = function() { function Defs2(canvas) { var el = createSVGElement("defs"); - var id = unique_id_default("defs_"); + var id = (0, import_util190.uniqueId)("defs_"); el.id = id; canvas.appendChild(el); this.children = []; @@ -63152,7 +69356,7 @@ var Canvas3 = function(_super) { return shape_exports2; }; Canvas4.prototype.getGroupBase = function() { - return group_default4; + return group_default3; }; Canvas4.prototype.getShape = function(x6, y5, ev) { var target = ev.target || ev.srcElement; @@ -63234,18 +69438,18 @@ var Path3 = function(_super) { } var keyData = new Map(); var keyIndex = new Map(); - var keys2 = []; + var keys6 = []; var index2 = 0; for (var i4 = 0; i4 < mappingDataArray.length; i4++) { var mappingData = mappingDataArray[i4]; var key = this.getElementId(mappingData); - keys2.push(key); + keys6.push(key); keyData.set(key, mappingData); keyIndex.set(key, index2); index2++; } this.elements = new Array(index2); - var _a6 = diff(this.lastElementsMap, keys2), added = _a6.added, updated = _a6.updated, removed = _a6.removed; + var _a6 = diff(this.lastElementsMap, keys6), added = _a6.added, updated = _a6.updated, removed = _a6.removed; for (var _i = 0, added_1 = added; _i < added_1.length; _i++) { var key = added_1[_i]; var mappingData = keyData.get(key); @@ -63316,7 +69520,11 @@ var Path3 = function(_super) { }(base_default13); var path_default5 = Path3; +// node_modules/@antv/g2/esm/geometry/shape/area/index.js +var import_util192 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/geometry/shape/area/util.js +var import_util191 = __toModule(require_lib()); function getPath2(points, isInCircle, smooth, registeredShape, constraint) { var path = []; if (points.length) { @@ -63328,7 +69536,7 @@ function getPath2(points, isInCircle, smooth, registeredShape, constraint) { bottomLinePoints_1.push(point2[0]); } bottomLinePoints_1 = bottomLinePoints_1.reverse(); - each_default([topLinePoints_1, bottomLinePoints_1], function(pointsData, index2) { + (0, import_util191.each)([topLinePoints_1, bottomLinePoints_1], function(pointsData, index2) { var subPath = []; var parsedPoints = registeredShape.parsePoints(pointsData); var p1 = parsedPoints[0]; @@ -63384,7 +69592,7 @@ var AreaShapeFactory = registerShapeFactory("area", { defaultShapeType: "area", getDefaultPoints: function(pointInfo) { var x6 = pointInfo.x, y0 = pointInfo.y0; - var y5 = is_array_default(pointInfo.y) ? pointInfo.y : [y0, pointInfo.y]; + var y5 = (0, import_util192.isArray)(pointInfo.y) ? pointInfo.y : [y0, pointInfo.y]; return y5.map(function(yItem) { return { x: x6, @@ -63500,6 +69708,7 @@ var Edge = function(_super) { var edge_default = Edge; // node_modules/@antv/g2/esm/geometry/heatmap.js +var import_util194 = __toModule(require_lib()); var Heatmap = function(_super) { __extends(Heatmap3, _super); function Heatmap3() { @@ -63516,8 +69725,8 @@ var Heatmap = function(_super) { var mappingData = mappingDataArray[i4]; var range = this.prepareRange(mappingData); var radius = this.prepareSize(); - var blur_1 = get_default(this.styleOption, ["cfg", "shadowBlur"]); - if (!is_number_default(blur_1)) { + var blur_1 = (0, import_util194.get)(this.styleOption, ["cfg", "shadowBlur"]); + if (!(0, import_util194.isNumber)(blur_1)) { blur_1 = radius / 2; } this.prepareGreyScaleBlurredCircle(radius, blur_1); @@ -63536,25 +69745,25 @@ var Heatmap = function(_super) { Heatmap3.prototype.prepareRange = function(data3) { var colorAttr = this.getAttribute("color"); var colorField = colorAttr.getFields()[0]; - var min7 = Infinity; - var max8 = -Infinity; + var min13 = Infinity; + var max15 = -Infinity; data3.forEach(function(row) { var value2 = row[FIELD_ORIGIN][colorField]; - if (value2 > max8) { - max8 = value2; + if (value2 > max15) { + max15 = value2; } - if (value2 < min7) { - min7 = value2; + if (value2 < min13) { + min13 = value2; } }); - if (min7 === max8) { - min7 = max8 - 1; + if (min13 === max15) { + min13 = max15 - 1; } - return [min7, max8]; + return [min13, max15]; }; Heatmap3.prototype.prepareSize = function() { var radius = this.getDefaultValue("size"); - if (!is_number_default(radius)) { + if (!(0, import_util194.isNumber)(radius)) { radius = this.getDefaultSize(); } return radius; @@ -63562,16 +69771,16 @@ var Heatmap = function(_super) { Heatmap3.prototype.prepareGreyScaleBlurredCircle = function(radius, blur) { var grayScaleBlurredCanvas = this.getGrayScaleBlurredCanvas(); var r22 = radius + blur; - var ctx4 = grayScaleBlurredCanvas.getContext("2d"); + var ctx3 = grayScaleBlurredCanvas.getContext("2d"); grayScaleBlurredCanvas.width = grayScaleBlurredCanvas.height = r22 * 2; - ctx4.clearRect(0, 0, grayScaleBlurredCanvas.width, grayScaleBlurredCanvas.height); - ctx4.shadowOffsetX = ctx4.shadowOffsetY = r22 * 2; - ctx4.shadowBlur = blur; - ctx4.shadowColor = "black"; - ctx4.beginPath(); - ctx4.arc(-r22, -r22, radius, 0, Math.PI * 2, true); - ctx4.closePath(); - ctx4.fill(); + ctx3.clearRect(0, 0, grayScaleBlurredCanvas.width, grayScaleBlurredCanvas.height); + ctx3.shadowOffsetX = ctx3.shadowOffsetY = r22 * 2; + ctx3.shadowBlur = blur; + ctx3.shadowColor = "black"; + ctx3.beginPath(); + ctx3.arc(-r22, -r22, radius, 0, Math.PI * 2, true); + ctx3.closePath(); + ctx3.fill(); }; Heatmap3.prototype.drawWithRange = function(data3, range, radius, blur) { var _a6 = this.coordinate, start = _a6.start, end2 = _a6.end; @@ -63580,7 +69789,7 @@ var Heatmap = function(_super) { var colorAttr = this.getAttribute("color"); var valueField = colorAttr.getFields()[0]; this.clearShadowCanvasCtx(); - var ctx4 = this.getShadowCanvasCtx(); + var ctx3 = this.getShadowCanvasCtx(); if (range) { data3 = data3.filter(function(row) { return row[FIELD_ORIGIN][valueField] <= range[1] && row[FIELD_ORIGIN][valueField] >= range[0]; @@ -63591,18 +69800,18 @@ var Heatmap = function(_super) { var obj = data_1[_i]; var _b = this.getDrawCfg(obj), x6 = _b.x, y5 = _b.y; var alpha = scale12.scale(obj[FIELD_ORIGIN][valueField]); - this.drawGrayScaleBlurredCircle(x6 - start.x, y5 - end2.y, radius + blur, alpha, ctx4); + this.drawGrayScaleBlurredCircle(x6 - start.x, y5 - end2.y, radius + blur, alpha, ctx3); } - var colored = ctx4.getImageData(0, 0, width2, height); + var colored = ctx3.getImageData(0, 0, width2, height); this.clearShadowCanvasCtx(); this.colorize(colored); - ctx4.putImageData(colored, 0, 0); + ctx3.putImageData(colored, 0, 0); var imageShape = this.getImageShape(); imageShape.attr("x", start.x); imageShape.attr("y", end2.y); imageShape.attr("width", width2); imageShape.attr("height", height); - imageShape.attr("img", ctx4.canvas); + imageShape.attr("img", ctx3.canvas); imageShape.set("origin", this.getShapeInfo(data3)); }; Heatmap3.prototype.getDefaultSize = function() { @@ -63611,8 +69820,8 @@ var Heatmap = function(_super) { return Math.min(coordinate11.getWidth() / (position2.scales[0].ticks.length * 4), coordinate11.getHeight() / (position2.scales[1].ticks.length * 4)); }; Heatmap3.prototype.clearShadowCanvasCtx = function() { - var ctx4 = this.getShadowCanvasCtx(); - ctx4.clearRect(0, 0, ctx4.canvas.width, ctx4.canvas.height); + var ctx3 = this.getShadowCanvasCtx(); + ctx3.clearRect(0, 0, ctx3.canvas.width, ctx3.canvas.height); }; Heatmap3.prototype.getShadowCanvasCtx = function() { var canvas = this.shadowCanvas; @@ -63630,10 +69839,10 @@ var Heatmap = function(_super) { } return this.grayScaleBlurredCanvas; }; - Heatmap3.prototype.drawGrayScaleBlurredCircle = function(x6, y5, r4, alpha, ctx4) { + Heatmap3.prototype.drawGrayScaleBlurredCircle = function(x6, y5, r4, alpha, ctx3) { var grayScaleBlurredCanvas = this.getGrayScaleBlurredCanvas(); - ctx4.globalAlpha = alpha; - ctx4.drawImage(grayScaleBlurredCanvas, x6 - r4, y5 - r4); + ctx3.globalAlpha = alpha; + ctx3.drawImage(grayScaleBlurredCanvas, x6 - r4, y5 - r4); }; Heatmap3.prototype.colorize = function(img) { var colorAttr = this.getAttribute("color"); @@ -63641,7 +69850,7 @@ var Heatmap = function(_super) { var paletteCache = this.paletteCache; for (var i4 = 3; i4 < pixels.length; i4 += 4) { var alpha = pixels[i4]; - if (is_number_default(alpha)) { + if ((0, import_util194.isNumber)(alpha)) { var palette = paletteCache[alpha] ? paletteCache[alpha] : esm_default2.rgb2arr(colorAttr.gradient(alpha / 256)); pixels[i4 - 3] = palette[0]; pixels[i4 - 2] = palette[1]; @@ -63674,12 +69883,16 @@ var Heatmap = function(_super) { }(base_default13); var heatmap_default = Heatmap; +// node_modules/@antv/g2/esm/geometry/interval.js +var import_util198 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/geometry/shape/interval/util.js +var import_util195 = __toModule(require_lib()); function getRectPoints(pointInfo) { - var x6 = pointInfo.x, y5 = pointInfo.y, y0 = pointInfo.y0, size2 = pointInfo.size; + var x6 = pointInfo.x, y5 = pointInfo.y, y0 = pointInfo.y0, size14 = pointInfo.size; var yMin; var yMax; - if (is_array_default(y5)) { + if ((0, import_util195.isArray)(y5)) { yMin = y5[0], yMax = y5[1]; } else { yMin = y0; @@ -63687,11 +69900,11 @@ function getRectPoints(pointInfo) { } var xMin; var xMax; - if (is_array_default(x6)) { + if ((0, import_util195.isArray)(x6)) { xMin = x6[0], xMax = x6[1]; } else { - xMin = x6 - size2 / 2; - xMax = x6 + size2 / 2; + xMin = x6 - size14 / 2; + xMax = x6 + size14 / 2; } var points = [ { x: xMin, y: yMin }, @@ -63721,7 +69934,7 @@ function parseRadius3(radius, minLength) { var r22 = 0; var r32 = 0; var r4 = 0; - if (is_array_default(radius)) { + if ((0, import_util195.isArray)(radius)) { if (radius.length === 1) { r1 = r22 = r32 = r4 = radius[0]; } else if (radius.length === 2) { @@ -63755,7 +69968,7 @@ function getBackgroundRectPath(cfg, points, coordinate11) { if (coordinate11.isRect) { var p0 = coordinate11.isTransposed ? { x: coordinate11.start.x, y: points[0].y } : { x: points[0].x, y: coordinate11.start.y }; var p1 = coordinate11.isTransposed ? { x: coordinate11.end.x, y: points[2].y } : { x: points[3].x, y: coordinate11.end.y }; - var radius = get_default(cfg, ["background", "style", "radius"]); + var radius = (0, import_util195.get)(cfg, ["background", "style", "radius"]); if (radius) { var width2 = coordinate11.isTransposed ? Math.abs(points[0].y - points[2].y) : points[2].x - points[1].x; var height = coordinate11.isTransposed ? coordinate11.getWidth() : coordinate11.getHeight(); @@ -63822,7 +70035,7 @@ function getIntervalRectPath(points, lineCap, coor) { } function getFunnelPath(points, nextPoints, isPyramid) { var path = []; - if (!is_nil_default(nextPoints)) { + if (!(0, import_util195.isNil)(nextPoints)) { path.push(["M", points[0].x, points[0].y], ["L", points[1].x, points[1].y], ["L", nextPoints[1].x, nextPoints[1].y], ["L", nextPoints[0].x, nextPoints[0].y], ["Z"]); } else if (isPyramid) { path.push(["M", points[0].x, points[0].y], ["L", points[1].x, points[1].y], ["L", (points[2].x + points[3].x) / 2, (points[2].y + points[3].y) / 2], ["Z"]); @@ -63904,13 +70117,13 @@ var IntervalShapeFactory = registerShapeFactory("interval", { registerShape("interval", "rect", { draw: function(cfg, container2) { var style = getStyle2(cfg, false, true); - var group2 = container2; + var group3 = container2; var backgroundCfg = cfg === null || cfg === void 0 ? void 0 : cfg.background; if (backgroundCfg) { - group2 = container2.addGroup(); + group3 = container2.addGroup(); var backgroundStyle = getBackgroundRectStyle(cfg); var backgroundPath = getBackgroundRectPath(cfg, this.parsePoints(cfg.points), this.coordinate); - group2.addShape("path", { + group3.addShape("path", { attrs: __assign(__assign({}, backgroundStyle), { path: backgroundPath }), zIndex: -1, name: BACKGROUND_SHAPE @@ -63922,11 +70135,11 @@ registerShape("interval", "rect", { } else { path = this.parsePath(getIntervalRectPath(cfg.points, style.lineCap, this.coordinate)); } - var shape = group2.addShape("path", { + var shape = group3.addShape("path", { attrs: __assign(__assign({}, style), { path }), name: "interval" }); - return backgroundCfg ? group2 : shape; + return backgroundCfg ? group3 : shape; }, getMarker: function(markerCfg) { var color4 = markerCfg.color, isInPolar = markerCfg.isInPolar; @@ -63950,10 +70163,11 @@ registerShape("interval", "rect", { }); // node_modules/@antv/g2/esm/geometry/util/shape-size.js +var import_util197 = __toModule(require_lib()); function findMinDistance(arr, scale12) { var count2 = arr.length; var sourceArr = arr; - if (is_string_default(sourceArr[0])) { + if ((0, import_util197.isString)(sourceArr[0])) { sourceArr = arr.map(function(v3) { return scale12.translate(v3); }); @@ -63969,9 +70183,9 @@ function findMinDistance(arr, scale12) { } function getDodgeCount(dataArray, dodgeBy) { if (dodgeBy) { - var mergeData = flatten_default(dataArray); - var values2 = values_of_key_default(mergeData, dodgeBy); - return values2.length; + var mergeData = (0, import_util197.flatten)(dataArray); + var values4 = (0, import_util197.valuesOfKey)(mergeData, dodgeBy); + return values4.length; } return dataArray.length; } @@ -64012,7 +70226,7 @@ function getDefaultSize(geometry35) { } wr = columnWidthRatio; } - if (!is_nil_default(intervalPadding) && intervalPadding >= 0) { + if (!(0, import_util197.isNil)(intervalPadding) && intervalPadding >= 0) { var normalizedIntervalPadding = intervalPadding / xDimensionLength; normalizedSize = (1 - (count2 - 1) * normalizedIntervalPadding) / count2; } else { @@ -64022,10 +70236,10 @@ function getDefaultSize(geometry35) { var dodgeAdjust = geometry35.getAdjust("dodge"); var dodgeBy = dodgeAdjust.dodgeBy; var dodgeCount = getDodgeCount(dataArray, dodgeBy); - if (!is_nil_default(dodgePadding) && dodgePadding >= 0) { + if (!(0, import_util197.isNil)(dodgePadding) && dodgePadding >= 0) { var normalizedDodgePadding = dodgePadding / xDimensionLength; normalizedSize = (normalizedSize - normalizedDodgePadding * (dodgeCount - 1)) / dodgeCount; - } else if (!is_nil_default(intervalPadding) && intervalPadding >= 0) { + } else if (!(0, import_util197.isNil)(intervalPadding) && intervalPadding >= 0) { normalizedSize *= wr; normalizedSize = normalizedSize / dodgeCount; } else { @@ -64033,13 +70247,13 @@ function getDefaultSize(geometry35) { } normalizedSize = normalizedSize >= 0 ? normalizedSize : 0; } - if (!is_nil_default(maxColumnWidth) && maxColumnWidth >= 0) { + if (!(0, import_util197.isNil)(maxColumnWidth) && maxColumnWidth >= 0) { var normalizedMaxColumnWidth = maxColumnWidth / xDimensionLength; if (normalizedSize > normalizedMaxColumnWidth) { normalizedSize = normalizedMaxColumnWidth; } } - if (!is_nil_default(minColumnWidth) && minColumnWidth >= 0) { + if (!(0, import_util197.isNil)(minColumnWidth) && minColumnWidth >= 0) { var normalizedMinColumnWidth = minColumnWidth / xDimensionLength; if (normalizedSize < normalizedMinColumnWidth) { normalizedSize = normalizedMinColumnWidth; @@ -64062,20 +70276,20 @@ var Interval = function(_super) { } Interval2.prototype.createShapePointsCfg = function(obj) { var cfg = _super.prototype.createShapePointsCfg.call(this, obj); - var size2; + var size14; var sizeAttr = this.getAttribute("size"); if (sizeAttr) { - size2 = this.getAttributeValues(sizeAttr, obj)[0]; + size14 = this.getAttributeValues(sizeAttr, obj)[0]; var coordinate11 = this.coordinate; var coordinateWidth = getXDimensionLength(coordinate11); - size2 = size2 / coordinateWidth; + size14 = size14 / coordinateWidth; } else { if (!this.defaultSize) { this.defaultSize = getDefaultSize(this); } - size2 = this.defaultSize; + size14 = this.defaultSize; } - cfg.size = size2; + cfg.size = size14; return cfg; }; Interval2.prototype.adjustScale = function() { @@ -64089,14 +70303,14 @@ var Interval = function(_super) { }); } else { var scaleDefs = this.scaleDefs; - var field6 = yScale.field, min7 = yScale.min, max8 = yScale.max, type2 = yScale.type; + var field6 = yScale.field, min13 = yScale.min, max15 = yScale.max, type2 = yScale.type; if (type2 !== "time") { - if (min7 > 0 && !get_default(scaleDefs, [field6, "min"])) { + if (min13 > 0 && !(0, import_util198.get)(scaleDefs, [field6, "min"])) { yScale.change({ min: 0 }); } - if (max8 <= 0 && !get_default(scaleDefs, [field6, "max"])) { + if (max15 <= 0 && !(0, import_util198.get)(scaleDefs, [field6, "max"])) { yScale.change({ max: 0 }); @@ -64127,6 +70341,9 @@ var Line5 = function(_super) { }(path_default5); var line_default9 = Line5; +// node_modules/@antv/g2/esm/geometry/shape/point/index.js +var import_util199 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/geometry/shape/point/util.js var SHAPES = ["circle", "square", "bowtie", "diamond", "hexagon", "triangle", "triangle-down"]; var HOLLOW_SHAPES = ["cross", "tick", "plus", "hyphen", "line"]; @@ -64137,15 +70354,15 @@ function drawPoints(shape, cfg, container2, shapeName, isStroke) { if (cfg.isStack) { pointPosition = points[1]; } else if (points.length > 1) { - var group2 = container2.addGroup(); + var group3 = container2.addGroup(); for (var _i = 0, points_1 = points; _i < points_1.length; _i++) { var point2 = points_1[_i]; - group2.addShape({ + group3.addShape({ type: "marker", attrs: __assign(__assign(__assign({}, style), { symbol: MarkerSymbols[shapeName] || shapeName }), point2) }); } - return group2; + return group3; } return container2.addShape({ type: "marker", @@ -64160,7 +70377,7 @@ var PointShapeFactory = registerShapeFactory("point", { return splitPoints(pointInfo); } }); -each_default(SHAPES, function(shapeName) { +(0, import_util199.each)(SHAPES, function(shapeName) { registerShape("point", "hollow-".concat(shapeName), { draw: function(cfg, container2) { return drawPoints(this, cfg, container2, shapeName, true); @@ -64197,7 +70414,11 @@ var Point = function(_super) { }(base_default13); var point_default = Point; +// node_modules/@antv/g2/esm/geometry/polygon.js +var import_util202 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/geometry/shape/polygon/index.js +var import_util201 = __toModule(require_lib()); function getPath3(points) { var flag = points[0]; var i4 = 1; @@ -64215,7 +70436,7 @@ function getPath3(points) { } i4++; } - if (!is_equal_default(last(path), flag)) { + if (!(0, import_util201.isEqual)((0, import_util201.last)(path), flag)) { path.push(["L", flag.x, flag.y]); } path.push(["Z"]); @@ -64225,7 +70446,7 @@ var PolygonShapeFactory = registerShapeFactory("polygon", { defaultShapeType: "polygon", getDefaultPoints: function(pointInfo) { var points = []; - each_default(pointInfo.x, function(subX, index2) { + (0, import_util201.each)(pointInfo.x, function(subX, index2) { var subY = pointInfo.y[index2]; points.push({ x: subX, @@ -64237,7 +70458,7 @@ var PolygonShapeFactory = registerShapeFactory("polygon", { }); registerShape("polygon", "polygon", { draw: function(cfg, container2) { - if (!is_empty_default(cfg.points)) { + if (!(0, import_util201.isEmpty)(cfg.points)) { var shapeAttrs = getStyle2(cfg, true, true); var path = this.parsePath(getPath3(cfg.points)); return container2.addShape("path", { @@ -64273,7 +70494,7 @@ var Polygon3 = function(_super) { var x6 = cfg.x; var y5 = cfg.y; var temp; - if (!(is_array_default(x6) && is_array_default(y5))) { + if (!((0, import_util202.isArray)(x6) && (0, import_util202.isArray)(y5))) { var xScale = this.getXScale(); var yScale = this.getYScale(); var xCount = xScale.values.length; @@ -64283,11 +70504,11 @@ var Polygon3 = function(_super) { if (xScale.isCategory && yScale.isCategory) { x6 = [x6 - xOffset, x6 - xOffset, x6 + xOffset, x6 + xOffset]; y5 = [y5 - yOffset, y5 + yOffset, y5 + yOffset, y5 - yOffset]; - } else if (is_array_default(x6)) { + } else if ((0, import_util202.isArray)(x6)) { temp = x6; x6 = [temp[0], temp[0], temp[1], temp[1]]; y5 = [y5 - yOffset / 2, y5 + yOffset / 2, y5 + yOffset / 2, y5 - yOffset / 2]; - } else if (is_array_default(y5)) { + } else if ((0, import_util202.isArray)(y5)) { temp = y5; y5 = [temp[0], temp[1], temp[1], temp[0]]; x6 = [x6 - xOffset / 2, x6 - xOffset / 2, x6 + xOffset / 2, x6 + xOffset / 2]; @@ -64318,33 +70539,37 @@ var Schema2 = function(_super) { } Schema3.prototype.createShapePointsCfg = function(record) { var cfg = _super.prototype.createShapePointsCfg.call(this, record); - var size2; + var size14; var sizeAttr = this.getAttribute("size"); if (sizeAttr) { - size2 = this.getAttributeValues(sizeAttr, record)[0]; + size14 = this.getAttributeValues(sizeAttr, record)[0]; var coordinate11 = this.coordinate; var coordinateWidth = getXDimensionLength(coordinate11); - size2 = size2 / coordinateWidth; + size14 = size14 / coordinateWidth; } else { if (!this.defaultSize) { this.defaultSize = getDefaultSize(this); } - size2 = this.defaultSize; + size14 = this.defaultSize; } - cfg.size = size2; + cfg.size = size14; return cfg; }; return Schema3; }(base_default13); var schema_default = Schema2; +// node_modules/@antv/g2/esm/geometry/violin.js +var import_util204 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/geometry/shape/violin/index.js +var import_util203 = __toModule(require_lib()); function normalizeSize(arr) { - if (!is_array_default(arr)) { + if (!(0, import_util203.isArray)(arr)) { return []; } - var maxValue = max_default(arr); - return map_default(arr, function(num) { + var maxValue = (0, import_util203.max)(arr); + return (0, import_util203.map)(arr, function(num) { return num / maxValue; }); } @@ -64354,7 +70579,7 @@ var ViolinShapeFactory = registerShapeFactory("violin", { var radius = pointInfo.size / 2; var points = []; var sizeArr = normalizeSize(pointInfo._size); - each_default(pointInfo.y, function(y5, index2) { + (0, import_util203.each)(pointInfo.y, function(y5, index2) { var offset = sizeArr[index2] * radius; var isMin = index2 === 0; var isMax = index2 === pointInfo.y.length - 1; @@ -64407,21 +70632,21 @@ var Violin = function(_super) { } Violin3.prototype.createShapePointsCfg = function(record) { var cfg = _super.prototype.createShapePointsCfg.call(this, record); - var size2; + var size14; var sizeAttr = this.getAttribute("size"); if (sizeAttr) { - size2 = this.getAttributeValues(sizeAttr, record)[0]; + size14 = this.getAttributeValues(sizeAttr, record)[0]; var coordinate11 = this.coordinate; var coordinateWidth = getXDimensionLength(coordinate11); - size2 = size2 / coordinateWidth; + size14 = size14 / coordinateWidth; } else { if (!this.defaultSize) { this.defaultSize = getDefaultSize(this); } - size2 = this.defaultSize; + size14 = this.defaultSize; } - cfg.size = size2; - cfg._size = get_default(record[FIELD_ORIGIN], [this._sizeField]); + cfg.size = size14; + cfg._size = (0, import_util204.get)(record[FIELD_ORIGIN], [this._sizeField]); return cfg; }; Violin3.prototype.initAttributes = function() { @@ -64524,6 +70749,7 @@ registerShape("area", "smooth-line", { }); // node_modules/@antv/g2/esm/geometry/shape/edge/util.js +var import_util208 = __toModule(require_lib()); function getCPath(from, to) { return ["C", from.x * 1 / 2 + to.x * 1 / 2, from.y, from.x * 1 / 2 + to.x * 1 / 2, to.y, to.x, to.y]; } @@ -64535,7 +70761,7 @@ function getQPath(to, center2) { }); points.push(to); var sub6 = ["Q"]; - each_default(points, function(point2) { + (0, import_util208.each)(points, function(point2) { sub6.push(point2.x, point2.y); }); return sub6; @@ -64645,6 +70871,7 @@ registerShape("edge", "smooth", { }); // node_modules/@antv/g2/esm/geometry/shape/edge/vhv.js +var import_util211 = __toModule(require_lib()); var CORNER_PERCENT = 1 / 3; function getVHVPath(from, to) { var points = []; @@ -64658,7 +70885,7 @@ function getVHVPath(from, to) { }); points.push(to); var path = [["M", from.x, from.y]]; - each_default(points, function(point2) { + (0, import_util211.each)(points, function(point2) { path.push(["L", point2.x, point2.y]); }); return path; @@ -64714,24 +70941,24 @@ registerShape("interval", "funnel", { registerShape("interval", "hollow-rect", { draw: function(cfg, container2) { var style = getStyle2(cfg, true, false); - var group2 = container2; + var group3 = container2; var backgroundCfg = cfg === null || cfg === void 0 ? void 0 : cfg.background; if (backgroundCfg) { - group2 = container2.addGroup(); + group3 = container2.addGroup(); var backgroundStyle = getBackgroundRectStyle(cfg); var backgroundPath = getBackgroundRectPath(cfg, this.parsePoints(cfg.points), this.coordinate); - group2.addShape("path", { + group3.addShape("path", { attrs: __assign(__assign({}, backgroundStyle), { path: backgroundPath }), zIndex: -1, name: BACKGROUND_SHAPE }); } var path = this.parsePath(getRectPath(cfg.points)); - var shape = group2.addShape("path", { + var shape = group3.addShape("path", { attrs: __assign(__assign({}, style), { path }), name: "interval" }); - return backgroundCfg ? group2 : shape; + return backgroundCfg ? group3 : shape; }, getMarker: function(markerCfg) { var color4 = markerCfg.color, isInPolar = markerCfg.isInPolar; @@ -64757,12 +70984,13 @@ registerShape("interval", "hollow-rect", { }); // node_modules/@antv/g2/esm/geometry/shape/interval/line.js +var import_util214 = __toModule(require_lib()); function getLinePoints(pointInfo) { var x6 = pointInfo.x, y5 = pointInfo.y, y0 = pointInfo.y0; - if (is_array_default(y5)) { + if ((0, import_util214.isArray)(y5)) { return y5.map(function(yItem, idx) { return { - x: is_array_default(x6) ? x6[idx] : x6, + x: (0, import_util214.isArray)(x6) ? x6[idx] : x6, y: yItem }; }); @@ -64831,18 +71059,19 @@ registerShape("interval", "pyramid", { }); // node_modules/@antv/g2/esm/geometry/shape/interval/tick.js +var import_util217 = __toModule(require_lib()); function getTickPoints(pointInfo) { - var x6 = pointInfo.x, y5 = pointInfo.y, y0 = pointInfo.y0, size2 = pointInfo.size; + var x6 = pointInfo.x, y5 = pointInfo.y, y0 = pointInfo.y0, size14 = pointInfo.size; var yMin; var yMax; - if (is_array_default(y5)) { + if ((0, import_util217.isArray)(y5)) { yMin = y5[0], yMax = y5[1]; } else { yMin = y0; yMax = y5; } - var xMax = x6 + size2 / 2; - var xMin = x6 - size2 / 2; + var xMax = x6 + size14 / 2; + var xMin = x6 - size14 / 2; return [ { x: x6, y: yMin }, { x: x6, y: yMax }, @@ -64897,6 +71126,7 @@ registerShape("interval", "tick", { }); // node_modules/@antv/g2/esm/geometry/shape/line/step.js +var import_util218 = __toModule(require_lib()); var interpolateCallback = function(point2, nextPoint, shapeType) { var x6 = point2.x; var y5 = point2.y; @@ -64931,7 +71161,7 @@ var interpolateCallback = function(point2, nextPoint, shapeType) { }; function getInterpolatePoints(points, shapeType) { var result = []; - each_default(points, function(point2, index2) { + (0, import_util218.each)(points, function(point2, index2) { var nextPoint = points[index2 + 1]; result.push(point2); if (nextPoint) { @@ -64949,13 +71179,13 @@ function getInterpolatePath(points) { function getInterpolateShapeAttrs(cfg, shapeType) { var points = getPathPoints(cfg.points, cfg.connectNulls, cfg.showSinglePoint); var path = []; - each_default(points, function(eachLinePoints) { + (0, import_util218.each)(points, function(eachLinePoints) { var interpolatePoints = getInterpolatePoints(eachLinePoints, shapeType); path = path.concat(getInterpolatePath(interpolatePoints)); }); return __assign(__assign({}, getStyle2(cfg, true, false, "lineWidth")), { path }); } -each_default(["hv", "vh", "hvh", "vhv"], function(shapeType) { +(0, import_util218.each)(["hv", "vh", "hvh", "vhv"], function(shapeType) { registerShape("line", shapeType, { draw: function(cfg, container2) { var attrs = getInterpolateShapeAttrs(cfg, shapeType); @@ -64973,7 +71203,8 @@ each_default(["hv", "vh", "hvh", "vhv"], function(shapeType) { }); // node_modules/@antv/g2/esm/geometry/shape/point/hollow.js -each_default(HOLLOW_SHAPES, function(shapeName) { +var import_util220 = __toModule(require_lib()); +(0, import_util220.each)(HOLLOW_SHAPES, function(shapeName) { registerShape("point", shapeName, { draw: function(cfg, container2) { return drawPoints(this, cfg, container2, shapeName, true); @@ -64995,33 +71226,33 @@ each_default(HOLLOW_SHAPES, function(shapeName) { // node_modules/@antv/g2/esm/geometry/shape/point/image.js registerShape("point", "image", { draw: function(cfg, container2) { - var size2 = getStyle2(cfg, false, false, "r").r; + var size14 = getStyle2(cfg, false, false, "r").r; var points = this.parsePoints(cfg.points); var pointPosition = points[0]; if (cfg.isStack) { pointPosition = points[1]; } else if (points.length > 1) { - var group2 = container2.addGroup(); + var group3 = container2.addGroup(); for (var _i = 0, points_1 = points; _i < points_1.length; _i++) { var point2 = points_1[_i]; - group2.addShape("image", { + group3.addShape("image", { attrs: { - x: point2.x - size2 / 2, - y: point2.y - size2, - width: size2, - height: size2, + x: point2.x - size14 / 2, + y: point2.y - size14, + width: size14, + height: size14, img: cfg.shape[1] } }); } - return group2; + return group3; } return container2.addShape("image", { attrs: { - x: pointPosition.x - size2 / 2, - y: pointPosition.y - size2, - width: size2, - height: size2, + x: pointPosition.x - size14 / 2, + y: pointPosition.y - size14, + width: size14, + height: size14, img: cfg.shape[1] } }); @@ -65039,7 +71270,8 @@ registerShape("point", "image", { }); // node_modules/@antv/g2/esm/geometry/shape/point/solid.js -each_default(SHAPES, function(shapeName) { +var import_util222 = __toModule(require_lib()); +(0, import_util222.each)(SHAPES, function(shapeName) { registerShape("point", shapeName, { draw: function(cfg, container2) { return drawPoints(this, cfg, container2, shapeName, false); @@ -65058,62 +71290,63 @@ each_default(SHAPES, function(shapeName) { }); // node_modules/@antv/g2/esm/geometry/shape/schema/box.js +var import_util224 = __toModule(require_lib()); function parseValue(value2) { - var array = !is_array_default(value2) ? [value2] : value2; - var min7 = array[0]; - var max8 = array[array.length - 1]; - var min1 = array.length > 1 ? array[1] : min7; - var max1 = array.length > 3 ? array[3] : max8; + var array = !(0, import_util224.isArray)(value2) ? [value2] : value2; + var min13 = array[0]; + var max15 = array[array.length - 1]; + var min1 = array.length > 1 ? array[1] : min13; + var max1 = array.length > 3 ? array[3] : max15; var median = array.length > 2 ? array[2] : min1; return { - min: min7, - max: max8, + min: min13, + max: max15, min1, max1, median }; } -function getBoxPoints(x6, y5, size2) { - var halfSize = size2 / 2; +function getBoxPoints(x6, y5, size14) { + var halfSize = size14 / 2; var pointsArray; - if (is_array_default(y5)) { - var _a6 = parseValue(y5), min7 = _a6.min, max8 = _a6.max, median = _a6.median, min1 = _a6.min1, max1 = _a6.max1; + if ((0, import_util224.isArray)(y5)) { + var _a6 = parseValue(y5), min13 = _a6.min, max15 = _a6.max, median = _a6.median, min1 = _a6.min1, max1 = _a6.max1; var minX = x6 - halfSize; var maxX = x6 + halfSize; pointsArray = [ - [minX, max8], - [maxX, max8], - [x6, max8], + [minX, max15], + [maxX, max15], + [x6, max15], [x6, max1], [minX, min1], [minX, max1], [maxX, max1], [maxX, min1], [x6, min1], - [x6, min7], - [minX, min7], - [maxX, min7], + [x6, min13], + [minX, min13], + [maxX, min13], [minX, median], [maxX, median] ]; } else { - y5 = is_nil_default(y5) ? 0.5 : y5; - var _b = parseValue(x6), min7 = _b.min, max8 = _b.max, median = _b.median, min1 = _b.min1, max1 = _b.max1; + y5 = (0, import_util224.isNil)(y5) ? 0.5 : y5; + var _b = parseValue(x6), min13 = _b.min, max15 = _b.max, median = _b.median, min1 = _b.min1, max1 = _b.max1; var minY = y5 - halfSize; var maxY2 = y5 + halfSize; pointsArray = [ - [min7, minY], - [min7, maxY2], - [min7, y5], + [min13, minY], + [min13, maxY2], + [min13, y5], [min1, y5], [min1, minY], [min1, maxY2], [max1, maxY2], [max1, minY], [max1, y5], - [max8, y5], - [max8, minY], - [max8, maxY2], + [max15, y5], + [max15, minY], + [max15, maxY2], [median, minY], [median, maxY2] ]; @@ -65147,8 +71380,8 @@ function getBoxPath(points) { } registerShape("schema", "box", { getPoints: function(shapePoint) { - var x6 = shapePoint.x, y5 = shapePoint.y, size2 = shapePoint.size; - return getBoxPoints(x6, y5, size2); + var x6 = shapePoint.x, y5 = shapePoint.y, size14 = shapePoint.size; + return getBoxPoints(x6, y5, size14); }, draw: function(cfg, container2) { var style = getStyle2(cfg, true, false); @@ -65193,22 +71426,23 @@ registerShape("schema", "box", { }); // node_modules/@antv/g2/esm/geometry/shape/schema/candle.js +var import_util225 = __toModule(require_lib()); function getCandleYValues(value2) { - var array = !is_array_default(value2) ? [value2] : value2; + var array = !(0, import_util225.isArray)(value2) ? [value2] : value2; var sorted = array.sort(function(a4, b10) { return b10 - a4; }); return padEnd(sorted, 4, sorted[sorted.length - 1]); } -function getCandlePoints(x6, y5, size2) { +function getCandlePoints(x6, y5, size14) { var yValues = getCandleYValues(y5); return [ { x: x6, y: yValues[0] }, { x: x6, y: yValues[1] }, - { x: x6 - size2 / 2, y: yValues[2] }, - { x: x6 - size2 / 2, y: yValues[1] }, - { x: x6 + size2 / 2, y: yValues[1] }, - { x: x6 + size2 / 2, y: yValues[2] }, + { x: x6 - size14 / 2, y: yValues[2] }, + { x: x6 - size14 / 2, y: yValues[1] }, + { x: x6 + size14 / 2, y: yValues[1] }, + { x: x6 + size14 / 2, y: yValues[2] }, { x: x6, y: yValues[2] }, { x: x6, y: yValues[3] } ]; @@ -65228,8 +71462,8 @@ function getCandlePath(points) { } registerShape("schema", "candle", { getPoints: function(shapePoint) { - var x6 = shapePoint.x, y5 = shapePoint.y, size2 = shapePoint.size; - return getCandlePoints(x6, y5, size2); + var x6 = shapePoint.x, y5 = shapePoint.y, size14 = shapePoint.size; + return getCandlePoints(x6, y5, size14); }, draw: function(cfg, container2) { var style = getStyle2(cfg, true, true); @@ -65268,12 +71502,13 @@ registerShape("schema", "candle", { }); // node_modules/@antv/g2/esm/geometry/shape/polygon/square.js -function getRectAttrs(points, size2) { +var import_util226 = __toModule(require_lib()); +function getRectAttrs(points, size14) { var width2 = Math.abs(points[0].x - points[2].x); var height = Math.abs(points[0].y - points[2].y); var len5 = Math.min(width2, height); - if (size2) { - len5 = clamp_default(size2, 0, Math.min(width2, height)); + if (size14) { + len5 = (0, import_util226.clamp)(size14, 0, Math.min(width2, height)); } len5 = len5 / 2; var centerX = (points[0].x + points[2].x) / 2; @@ -65287,7 +71522,7 @@ function getRectAttrs(points, size2) { } registerShape("polygon", "square", { draw: function(cfg, container2) { - if (!is_empty_default(cfg.points)) { + if (!(0, import_util226.isEmpty)(cfg.points)) { var shapeAttrs = getStyle2(cfg, true, true); var points = this.parsePoints(cfg.points); return container2.addShape("rect", { @@ -65373,6 +71608,7 @@ registerShape("violin", "hollow-smooth", { }); // node_modules/@antv/g2/esm/geometry/label/interval.js +var import_util227 = __toModule(require_lib()); var IntervalLabel = function(_super) { __extends(IntervalLabel2, _super); function IntervalLabel2() { @@ -65403,7 +71639,7 @@ var IntervalLabel = function(_super) { var geometry35 = this.geometry; var defaultLabelCfg3 = this.getDefaultLabelCfg(); var theme4 = geometry35.theme; - return deep_mix_default({}, defaultLabelCfg3, theme4.labels, labelCfg.position === "middle" ? { offset: 0 } : {}, labelCfg); + return (0, import_util227.deepMix)({}, defaultLabelCfg3, theme4.labels, labelCfg.position === "middle" ? { offset: 0 } : {}, labelCfg); }; IntervalLabel2.prototype.setLabelPosition = function(labelPointCfg, mappingData, index2, position2) { var coordinate11 = this.getCoordinate(); @@ -65416,10 +71652,10 @@ var IntervalLabel = function(_super) { var right2; var bottom; var left2; - var shape = is_array_default(mappingData.shape) ? mappingData.shape[0] : mappingData.shape; + var shape = (0, import_util227.isArray)(mappingData.shape) ? mappingData.shape[0] : mappingData.shape; if (shape === "funnel" || shape === "pyramid") { - var nextPoints = get_default(mappingData, "nextPoints"); - var points = get_default(mappingData, "points"); + var nextPoints = (0, import_util227.get)(mappingData, "nextPoints"); + var points = (0, import_util227.get)(mappingData, "points"); if (nextPoints) { var p0 = coordinate11.convert(points[0]); var p1 = coordinate11.convert(points[1]); @@ -65452,36 +71688,36 @@ var IntervalLabel = function(_super) { case "right": labelPointCfg.x = right2; labelPointCfg.y = (top + bottom) / 2; - labelPointCfg.textAlign = get_default(labelPointCfg, "textAlign", dir > 0 ? "left" : "right"); + labelPointCfg.textAlign = (0, import_util227.get)(labelPointCfg, "textAlign", dir > 0 ? "left" : "right"); break; case "left": labelPointCfg.x = left2; labelPointCfg.y = (top + bottom) / 2; - labelPointCfg.textAlign = get_default(labelPointCfg, "textAlign", dir > 0 ? "left" : "right"); + labelPointCfg.textAlign = (0, import_util227.get)(labelPointCfg, "textAlign", dir > 0 ? "left" : "right"); break; case "bottom": if (transposed) { labelPointCfg.x = (right2 + left2) / 2; } labelPointCfg.y = bottom; - labelPointCfg.textAlign = get_default(labelPointCfg, "textAlign", "center"); - labelPointCfg.textBaseline = get_default(labelPointCfg, "textBaseline", dir > 0 ? "bottom" : "top"); + labelPointCfg.textAlign = (0, import_util227.get)(labelPointCfg, "textAlign", "center"); + labelPointCfg.textBaseline = (0, import_util227.get)(labelPointCfg, "textBaseline", dir > 0 ? "bottom" : "top"); break; case "middle": if (transposed) { labelPointCfg.x = (right2 + left2) / 2; } labelPointCfg.y = (top + bottom) / 2; - labelPointCfg.textAlign = get_default(labelPointCfg, "textAlign", "center"); - labelPointCfg.textBaseline = get_default(labelPointCfg, "textBaseline", "middle"); + labelPointCfg.textAlign = (0, import_util227.get)(labelPointCfg, "textAlign", "center"); + labelPointCfg.textBaseline = (0, import_util227.get)(labelPointCfg, "textBaseline", "middle"); break; case "top": if (transposed) { labelPointCfg.x = (right2 + left2) / 2; } labelPointCfg.y = top; - labelPointCfg.textAlign = get_default(labelPointCfg, "textAlign", "center"); - labelPointCfg.textBaseline = get_default(labelPointCfg, "textBaseline", dir > 0 ? "bottom" : "top"); + labelPointCfg.textAlign = (0, import_util227.get)(labelPointCfg, "textAlign", "center"); + labelPointCfg.textBaseline = (0, import_util227.get)(labelPointCfg, "textBaseline", dir > 0 ? "bottom" : "top"); break; default: break; @@ -65491,7 +71727,11 @@ var IntervalLabel = function(_super) { }(base_default14); var interval_default2 = IntervalLabel; +// node_modules/@antv/g2/esm/geometry/label/pie.js +var import_util229 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/geometry/label/polar.js +var import_util228 = __toModule(require_lib()); var HALF_PI = Math.PI / 2; var PolarLabel = function(_super) { __extends(PolarLabel2, _super); @@ -65501,9 +71741,9 @@ var PolarLabel = function(_super) { PolarLabel2.prototype.getLabelOffset = function(offset) { var coordinate11 = this.getCoordinate(); var actualOffset = 0; - if (is_number_default(offset)) { + if ((0, import_util228.isNumber)(offset)) { actualOffset = offset; - } else if (is_string_default(offset) && offset.indexOf("%") !== -1) { + } else if ((0, import_util228.isString)(offset) && offset.indexOf("%") !== -1) { var r4 = coordinate11.getRadius(); if (coordinate11.innerRadius > 0) { r4 = r4 * (1 - coordinate11.innerRadius); @@ -65515,9 +71755,9 @@ var PolarLabel = function(_super) { PolarLabel2.prototype.getLabelItems = function(mapppingArray) { var items = _super.prototype.getLabelItems.call(this, mapppingArray); var yScale = this.geometry.getYScale(); - return map_default(items, function(item) { + return (0, import_util228.map)(items, function(item) { if (item && yScale) { - var percent2 = yScale.scale(get_default(item.data, yScale.field)); + var percent2 = yScale.scale((0, import_util228.get)(item.data, yScale.field)); return __assign(__assign({}, item), { percent: percent2 }); } return item; @@ -65579,15 +71819,15 @@ var PolarLabel = function(_super) { if (index2 === void 0) { index2 = 0; } - if (!is_array_default(mappingData.x) && !is_array_default(mappingData.y)) { + if (!(0, import_util228.isArray)(mappingData.x) && !(0, import_util228.isArray)(mappingData.y)) { return { x: mappingData.x, y: mappingData.y }; } return { - x: is_array_default(mappingData.x) ? mappingData.x[index2] : mappingData.x, - y: is_array_default(mappingData.y) ? mappingData.y[index2] : mappingData.y + x: (0, import_util228.isArray)(mappingData.x) ? mappingData.x[index2] : mappingData.x, + y: (0, import_util228.isArray)(mappingData.y) ? mappingData.y[index2] : mappingData.y }; }; PolarLabel2.prototype.getPointAngle = function(point2) { @@ -65634,7 +71874,7 @@ var PolarLabel = function(_super) { x: 0, y: 0 }; - each_default(points, function(point2) { + (0, import_util228.each)(points, function(point2) { middlePoint.x += point2.x; middlePoint.y += point2.y; }); @@ -65660,7 +71900,7 @@ var PieLabel = function(_super) { } PieLabel2.prototype.getDefaultLabelCfg = function(offset, position2) { var cfg = _super.prototype.getDefaultLabelCfg.call(this, offset, position2); - return deep_mix_default({}, cfg, get_default(this.geometry.theme, "pieLabels", {})); + return (0, import_util229.deepMix)({}, cfg, (0, import_util229.get)(this.geometry.theme, "pieLabels", {})); }; PieLabel2.prototype.getLabelOffset = function(offset) { return _super.prototype.getLabelOffset.call(this, offset) || 0; @@ -65702,11 +71942,11 @@ var PieLabel = function(_super) { PieLabel2.prototype.getPointAngle = function(point2) { var coordinate11 = this.getCoordinate(); var startPoint = { - x: is_array_default(point2.x) ? point2.x[0] : point2.x, + x: (0, import_util229.isArray)(point2.x) ? point2.x[0] : point2.x, y: point2.y[0] }; var endPoint = { - x: is_array_default(point2.x) ? point2.x[1] : point2.x, + x: (0, import_util229.isArray)(point2.x) ? point2.x[1] : point2.x, y: point2.y[1] }; var angle3; @@ -65733,6 +71973,7 @@ var PieLabel = function(_super) { var pie_default = PieLabel; // node_modules/@antv/g2/esm/geometry/label/layout/pie/distribute.js +var import_util230 = __toModule(require_lib()); var MARGIN = 4; function antiCollision(labelShapes, labels, lineHeight, plotRange, center2, isRight) { var overlapping = true; @@ -65812,7 +72053,7 @@ function antiCollision(labelShapes, labels, lineHeight, plotRange, center2, isRi var labelShape2 = labelsMap[label17.id]; labelShape2.attr("x", label17.x); labelShape2.attr("y", label17.y); - var textShape = find_default(labelShape2.getChildren(), function(ele) { + var textShape = (0, import_util230.find)(labelShape2.getChildren(), function(ele) { return ele.get("type") === "text"; }); if (textShape) { @@ -65865,19 +72106,19 @@ function distribute(items, labels, shapes, region) { antiCollision(labels, half, lineHeight_1, plotRange_1, center2, index2); }); } - each_default(items, function(item) { + (0, import_util230.each)(items, function(item) { if (item && item.labelLine) { var distance15 = item.offset; var angle3 = item.angle; var startPoint = polarToCartesian(center2.x, center2.y, radius, angle3); var innerPoint = polarToCartesian(center2.x, center2.y, radius + distance15 / 2, angle3); - var itemX = item.x + get_default(item, "offsetX", 0); - var itemY = item.y + get_default(item, "offsetY", 0); + var itemX = item.x + (0, import_util230.get)(item, "offsetX", 0); + var itemY = item.y + (0, import_util230.get)(item, "offsetY", 0); var endPoint = { x: itemX - Math.cos(angle3) * MARGIN, y: itemY - Math.sin(angle3) * MARGIN }; - if (!is_object_default(item.labelLine)) { + if (!(0, import_util230.isObject)(item.labelLine)) { item.labelLine = {}; } item.labelLine.path = [ @@ -65890,6 +72131,9 @@ function distribute(items, labels, shapes, region) { }); } +// node_modules/@antv/g2/esm/geometry/label/layout/pie/outer.js +var import_util231 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/geometry/label/layout/pie/util.js function antiCollision2(items, labelHeight, plotRange) { var labels = items.filter(function(item) { @@ -65966,8 +72210,8 @@ function drawLabelline(item, coordinate11) { if (item && item.labelLine) { var angle3 = item.angle, labelOffset = item.offset; var startPoint = polarToCartesian(center2.x, center2.y, radius, angle3); - var itemX = item.x + get_default(item, "offsetX", 0) * (Math.cos(angle3) > 0 ? 1 : -1); - var itemY = item.y + get_default(item, "offsetY", 0) * (Math.sin(angle3) > 0 ? 1 : -1); + var itemX = item.x + (0, import_util231.get)(item, "offsetX", 0) * (Math.cos(angle3) > 0 ? 1 : -1); + var itemY = item.y + (0, import_util231.get)(item, "offsetY", 0) * (Math.sin(angle3) > 0 ? 1 : -1); var endPoint = { x: itemX - Math.cos(angle3) * MARGIN2, y: itemY - Math.sin(angle3) * MARGIN2 @@ -65981,7 +72225,7 @@ function drawLabelline(item, coordinate11) { endAngle += Math.PI; } if (smoothConnector === false) { - if (!is_object_default(item.labelLine)) { + if (!(0, import_util231.isObject)(item.labelLine)) { item.labelLine = {}; } var sweepFlag = 0; @@ -66036,8 +72280,8 @@ function drawLabelline(item, coordinate11) { } } function pieOuterLabelLayout(originalItems, labels, shapes, region) { - var items = filter_default(originalItems, function(item) { - return !is_nil_default(item); + var items = (0, import_util231.filter)(originalItems, function(item) { + return !(0, import_util231.isNil)(item); }); var coordinate11 = labels[0] && labels[0].get("coordinate"); if (!coordinate11) { @@ -66050,14 +72294,14 @@ function pieOuterLabelLayout(originalItems, labels, shapes, region) { var labelShape = labels_1[_i]; labelsMap[labelShape.get("id")] = labelShape; } - var labelHeight = get_default(items[0], "labelHeight", 14); - var labelOffset = get_default(items[0], "offset", 0); + var labelHeight = (0, import_util231.get)(items[0], "labelHeight", 14); + var labelOffset = (0, import_util231.get)(items[0], "offset", 0); if (labelOffset <= 0) { return; } var LEFT_HALF_KEY = "left"; var RIGHT_HALF_KEY = "right"; - var separateLabels = group_by_default(items, function(item) { + var separateLabels = (0, import_util231.groupBy)(items, function(item) { return item.x < center2.x ? LEFT_HALF_KEY : RIGHT_HALF_KEY; }); var start = coordinate11.start, end2 = coordinate11.end; @@ -66069,13 +72313,13 @@ function pieOuterLabelLayout(originalItems, labels, shapes, region) { minY: center2.y - totalR, maxY: center2.y + totalR }; - each_default(separateLabels, function(half, key) { + (0, import_util231.each)(separateLabels, function(half, key) { var maxLabelsCountForOneSide = Math.floor(totalHeight / labelHeight); if (half.length > maxLabelsCountForOneSide) { half.sort(function(a4, b10) { return b10.percent - a4.percent; }); - each_default(half, function(labelItem, idx) { + (0, import_util231.each)(half, function(labelItem, idx) { if (idx + 1 > maxLabelsCountForOneSide) { labelsMap[labelItem.id].set("visible", false); labelItem.invisible = true; @@ -66084,8 +72328,8 @@ function pieOuterLabelLayout(originalItems, labels, shapes, region) { } antiCollision2(half, labelHeight, labelsContainerRange); }); - each_default(separateLabels, function(half, key) { - each_default(half, function(item) { + (0, import_util231.each)(separateLabels, function(half, key) { + (0, import_util231.each)(half, function(item) { var isRight = key === RIGHT_HALF_KEY; var labelShape2 = labelsMap[item.id]; var content = labelShape2.getChildByIndex(0); @@ -66113,6 +72357,7 @@ function pieOuterLabelLayout(originalItems, labels, shapes, region) { } // node_modules/@antv/g2/esm/geometry/label/layout/pie/spider.js +var import_util233 = __toModule(require_lib()); var INFLECTION_OFFSET = 4; var LABEL_OFFSET_X = 4; var LABEL_TEXT_LINE_OFFSET = 4; @@ -66175,7 +72420,7 @@ function drawLabelline2(item, coordinate11, inRight) { "L ".concat(inflectionPoint.x, ",").concat(inflectionPoint.y), "L ".concat(endPoint.x, ",").concat(endPoint.y) ].join(" "); - item.labelLine = deep_mix_default({}, item.labelLine, { path }); + item.labelLine = (0, import_util233.deepMix)({}, item.labelLine, { path }); } function pieSpiderLabelLayout(items, labels, shapes, region) { var coordinate11 = labels[0] && labels[0].get("coordinate"); @@ -66189,15 +72434,15 @@ function pieSpiderLabelLayout(items, labels, shapes, region) { var labelShape = labels_1[_i]; labelsMap[labelShape.get("id")] = labelShape; } - var labelHeight = get_default(items[0], "labelHeight", 14); - var labelOffset = Math.max(get_default(items[0], "offset", 0), INFLECTION_OFFSET); - each_default(items, function(item) { - var label17 = get_default(labelsMap, [item.id]); + var labelHeight = (0, import_util233.get)(items[0], "labelHeight", 14); + var labelOffset = Math.max((0, import_util233.get)(items[0], "offset", 0), INFLECTION_OFFSET); + (0, import_util233.each)(items, function(item) { + var label17 = (0, import_util233.get)(labelsMap, [item.id]); if (!label17) { return; } var inRight = item.x > center2.x || item.x === center2.x && item.y > center2.y; - var offsetX = !is_nil_default(item.offsetX) ? item.offsetX : LABEL_OFFSET_X; + var offsetX = !(0, import_util233.isNil)(item.offsetX) ? item.offsetX : LABEL_OFFSET_X; var inflectionPoint = polarToCartesian(center2.x, center2.y, radius + INFLECTION_OFFSET, item.angle); var totalOffset = labelOffset + offsetX; item.x = center2.x + (inRight ? 1 : -1) * (radius + totalOffset); @@ -66206,11 +72451,11 @@ function pieSpiderLabelLayout(items, labels, shapes, region) { var start = coordinate11.start, end2 = coordinate11.end; var LEFT_HALF_KEY = "left"; var RIGHT_HALF_KEY = "right"; - var seperateLabels = group_by_default(items, function(item) { + var seperateLabels = (0, import_util233.groupBy)(items, function(item) { return item.x < center2.x ? LEFT_HALF_KEY : RIGHT_HALF_KEY; }); var totalHeight = (radius + labelOffset) * 2 + labelHeight; - each_default(seperateLabels, function(half) { + (0, import_util233.each)(seperateLabels, function(half) { var halfHeight = half.length * labelHeight; if (halfHeight > totalHeight) { totalHeight = Math.min(halfHeight, Math.abs(start.y - end2.y)); @@ -66222,13 +72467,13 @@ function pieSpiderLabelLayout(items, labels, shapes, region) { minY: center2.y - totalHeight / 2, maxY: center2.y + totalHeight / 2 }; - each_default(seperateLabels, function(half, key) { + (0, import_util233.each)(seperateLabels, function(half, key) { var maxLabelsCountForOneSide = totalHeight / labelHeight; if (half.length > maxLabelsCountForOneSide) { half.sort(function(a4, b10) { return b10.percent - a4.percent; }); - each_default(half, function(labelItem, idx) { + (0, import_util233.each)(half, function(labelItem, idx) { if (idx > maxLabelsCountForOneSide) { labelsMap[labelItem.id].set("visible", false); labelItem.invisible = true; @@ -66239,10 +72484,10 @@ function pieSpiderLabelLayout(items, labels, shapes, region) { }); var startY = labelsContainerRange.minY; var endY = labelsContainerRange.maxY; - each_default(seperateLabels, function(half, key) { + (0, import_util233.each)(seperateLabels, function(half, key) { var inRight = key === RIGHT_HALF_KEY; - each_default(half, function(item) { - var label17 = get_default(labelsMap, item && [item.id]); + (0, import_util233.each)(half, function(item) { + var label17 = (0, import_util233.get)(labelsMap, item && [item.id]); if (!label17) { return; } @@ -66262,8 +72507,9 @@ function pieSpiderLabelLayout(items, labels, shapes, region) { } // node_modules/@antv/g2/esm/geometry/label/layout/limit-in-canvas.js +var import_util235 = __toModule(require_lib()); function limitInCanvas(items, labels, shapes, region) { - each_default(labels, function(label17) { + (0, import_util235.each)(labels, function(label17) { var regionMinX = region.minX, regionMinY = region.minY, regionMaxX = region.maxX, regionMaxY = region.maxY; var _a6 = label17.getCanvasBBox(), minX = _a6.minX, minY = _a6.minY, maxX = _a6.maxX, maxY2 = _a6.maxY, x6 = _a6.x, y5 = _a6.y, width2 = _a6.width, height = _a6.height; var finalX = x6; @@ -66291,8 +72537,9 @@ function limitInCanvas(items, labels, shapes, region) { } // node_modules/@antv/g2/esm/geometry/label/layout/limit-in-shape.js +var import_util236 = __toModule(require_lib()); function limitInShape(items, labels, shapes, region) { - each_default(labels, function(label17, index2) { + (0, import_util236.each)(labels, function(label17, index2) { var labelBBox = label17.getCanvasBBox(); var shapeBBox = shapes[index2].getBBox(); if (labelBBox.minX < shapeBBox.minX || labelBBox.minY < shapeBBox.minY || labelBBox.maxX > shapeBBox.maxX || labelBBox.maxY > shapeBBox.maxY) { @@ -66302,6 +72549,7 @@ function limitInShape(items, labels, shapes, region) { } // node_modules/@antv/g2/esm/geometry/label/layout/overlap.js +var import_util237 = __toModule(require_lib()); var MAX_TIMES = 100; var Greedy = function() { function Greedy2(cfg) { @@ -66470,7 +72718,7 @@ function adjustLabelPosition(label17, x6, y5, index2) { } function fixedOverlap(items, labels, shapes, region) { var greedy = new Greedy(); - each_default(labels, function(label17) { + (0, import_util237.each)(labels, function(label17) { var labelShape = label17.find(function(shape) { return shape.get("type") === "text"; }); @@ -66482,7 +72730,7 @@ function fixedOverlap(items, labels, shapes, region) { } function overlap(items, labels, shapes, region) { var greedy = new Greedy(); - each_default(labels, function(label17) { + (0, import_util237.each)(labels, function(label17) { var labelShape = label17.find(function(shape) { return shape.get("type") === "text"; }); @@ -66503,7 +72751,11 @@ function overlap(items, labels, shapes, region) { greedy.destroy(); } +// node_modules/@antv/g2/esm/geometry/label/layout/hide-overlap.js +var import_util239 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/util/collision-detect.js +var import_util238 = __toModule(require_lib()); var dot5 = vec2_exports.dot; function getAxes(points) { if (points.length > 4) { @@ -66561,7 +72813,7 @@ function isProjectionOverlap(projection1, projection2) { return projection1.max > projection2.min && projection1.min < projection2.max; } function isValidNumber(d3) { - return is_number_default(d3) && !Number.isNaN(d3) && d3 !== Infinity && d3 !== -Infinity; + return (0, import_util238.isNumber)(d3) && !Number.isNaN(d3) && d3 !== Infinity && d3 !== -Infinity; } function isValidBox(box2) { return Object.values(box2).every(isValidNumber); @@ -66599,8 +72851,8 @@ function hideOverlap(items, labels, shapes, region) { for (var j4 = i4 + 1; j4 < labels.length; j4++) { var label22 = labels[j4]; if (label1 && label22 && label1 !== label22 && label22.get("visible")) { - var box1 = getlLabelBackgroundInfo(label1, items[i4], get_default(items[i4], "background.padding")); - var box2 = getlLabelBackgroundInfo(label22, items[j4], get_default(items[j4], "background.padding")); + var box1 = getlLabelBackgroundInfo(label1, items[i4], (0, import_util239.get)(items[i4], "background.padding")); + var box2 = getlLabelBackgroundInfo(label22, items[j4], (0, import_util239.get)(items[j4], "background.padding")); if (isIntersect(box1, box2)) { labels[j4].set("visible", false); } @@ -66709,11 +72961,12 @@ function intervalAdjustPosition(items, labels, shapes) { } // node_modules/@antv/g2/esm/geometry/label/layout/interval/hide-overlap.js +var import_util242 = __toModule(require_lib()); function filterLabel(labels) { var MAX_CNT = 500; var filteredLabels = []; var pages = Math.max(Math.floor(labels.length / MAX_CNT), 1); - each_default(labels, function(label17, idx) { + (0, import_util242.each)(labels, function(label17, idx) { if (idx % pages === 0) { filteredLabels.push(label17); } else { @@ -66736,10 +72989,10 @@ function intervalHideOverlap(items, labels, shapes) { var xField = geometry35.getXYFields()[0]; var dones = []; var todo = []; - var groupedLabels = group_by_default(filteredLabels, function(label17) { + var groupedLabels = (0, import_util242.groupBy)(filteredLabels, function(label17) { return label17.get("data")[xField]; }); - var xValues = uniq(map_default(filteredLabels, function(label17) { + var xValues = (0, import_util242.uniq)((0, import_util242.map)(filteredLabels, function(label17) { return label17.get("data")[xField]; })); var xValue; @@ -66754,15 +73007,15 @@ function intervalHideOverlap(items, labels, shapes) { todo.push.apply(todo, curItems); } }; - if (size(xValues) > 0) { + if ((0, import_util242.size)(xValues) > 0) { xValue = xValues.shift(); addCurrentGroup(groupedLabels[xValue]); } - if (size(xValues) > 0) { + if ((0, import_util242.size)(xValues) > 0) { xValue = xValues.pop(); addCurrentGroup(groupedLabels[xValue]); } - each_default(xValues.reverse(), function(val) { + (0, import_util242.each)(xValues.reverse(), function(val) { addCurrentGroup(groupedLabels[val]); }); while (todo.length > 0) { @@ -66778,6 +73031,7 @@ function intervalHideOverlap(items, labels, shapes) { } // node_modules/@antv/g2/esm/geometry/label/layout/point/adjust-position.js +var import_util244 = __toModule(require_lib()); function sortLabels(geometry35, labels) { var yField = geometry35.getXYFields()[1]; var result = []; @@ -66824,12 +73078,12 @@ function pointAdjustPosition(items, labels, shapes, region, cfg) { return; } var _c = geometry35.getXYFields(), xField = _c[0], yField = _c[1]; - var groupedLabels = group_by_default(labels, function(label17) { + var groupedLabels = (0, import_util244.groupBy)(labels, function(label17) { return label17.get("data")[xField]; }); var dones = []; var offset = cfg && cfg.offset || ((_b = items[0]) === null || _b === void 0 ? void 0 : _b.offset) || 12; - map_default(keys_default(groupedLabels).reverse(), function(xValue) { + (0, import_util244.map)((0, import_util244.keys)(groupedLabels).reverse(), function(xValue) { var sortedCollections = sortLabels(geometry35, groupedLabels[xValue]); while (sortedCollections.length) { var current = sortedCollections.shift(); @@ -66856,6 +73110,7 @@ function pointAdjustPosition(items, labels, shapes, region, cfg) { } // node_modules/@antv/g2/esm/geometry/label/layout/path/adjust-position.js +var import_util246 = __toModule(require_lib()); function sortLabels2(geometry35, labels) { var yField = geometry35.getXYFields()[1]; var result = []; @@ -66902,12 +73157,12 @@ function pathAdjustPosition(items, labels, shapes, region, cfg) { return; } var _c = geometry35.getXYFields(), xField = _c[0], yField = _c[1]; - var groupedLabels = group_by_default(labels, function(label17) { + var groupedLabels = (0, import_util246.groupBy)(labels, function(label17) { return label17.get("data")[xField]; }); var dones = []; var offset = cfg && cfg.offset || ((_b = items[0]) === null || _b === void 0 ? void 0 : _b.offset) || 12; - map_default(keys_default(groupedLabels).reverse(), function(xValue) { + (0, import_util246.map)((0, import_util246.keys)(groupedLabels).reverse(), function(xValue) { var sortedCollections = sortLabels2(geometry35, groupedLabels[xValue]); while (sortedCollections.length) { var current = sortedCollections.shift(); @@ -66933,36 +73188,42 @@ function pathAdjustPosition(items, labels, shapes, region, cfg) { }); } +// node_modules/@antv/g2/esm/geometry/label/layout/limit-in-plot.js +var import_util249 = __toModule(require_lib()); + +// node_modules/@antv/g2/esm/util/text.js +var import_util248 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/util/context.js -var ctx2; +var ctx; function getCanvasContext() { - if (!ctx2) { - ctx2 = document.createElement("canvas").getContext("2d"); + if (!ctx) { + ctx = document.createElement("canvas").getContext("2d"); } - return ctx2; + return ctx; } // node_modules/@antv/g2/esm/util/text.js -var measureTextWidth = memoize_default(function(text, font) { +var measureTextWidth = (0, import_util248.memoize)(function(text, font) { if (font === void 0) { font = {}; } var fontSize = font.fontSize, fontFamily = font.fontFamily, fontWeight = font.fontWeight, fontStyle = font.fontStyle, fontVariant = font.fontVariant; - var ctx4 = getCanvasContext(); - ctx4.font = [fontStyle, fontVariant, fontWeight, "".concat(fontSize, "px"), fontFamily].join(" "); - return ctx4.measureText(is_string_default(text) ? text : "").width; + var ctx3 = getCanvasContext(); + ctx3.font = [fontStyle, fontVariant, fontWeight, "".concat(fontSize, "px"), fontFamily].join(" "); + return ctx3.measureText((0, import_util248.isString)(text) ? text : "").width; }, function(text, font) { if (font === void 0) { font = {}; } - return __spreadArray([text], values_default(font), true).join(""); + return __spreadArray([text], (0, import_util248.values)(font), true).join(""); }); -var getEllipsisText = function(text, maxWidth, font) { +var getEllipsisText2 = function(text, maxWidth, font) { var STEP = 16; var DOT_WIDTH = measureTextWidth("...", font); var leftText; - if (!is_string_default(text)) { - leftText = to_string_default(text); + if (!(0, import_util248.isString)(text)) { + leftText = (0, import_util248.toString)(text); } else { leftText = text; } @@ -67009,7 +73270,7 @@ function limitInPlot(items, labels, shapes, region, cfg) { if (labels.length <= 0) { return; } - var direction5 = (cfg === null || cfg === void 0 ? void 0 : cfg.direction) || ["top", "right", "bottom", "left"]; + var direction3 = (cfg === null || cfg === void 0 ? void 0 : cfg.direction) || ["top", "right", "bottom", "left"]; var action = (cfg === null || cfg === void 0 ? void 0 : cfg.action) || "translate"; var margin = (cfg === null || cfg === void 0 ? void 0 : cfg.margin) || 0; var coordinate11 = labels[0].get("coordinate"); @@ -67017,24 +73278,24 @@ function limitInPlot(items, labels, shapes, region, cfg) { return; } var _a6 = getCoordinateBBox(coordinate11, margin), regionMinX = _a6.minX, regionMinY = _a6.minY, regionMaxX = _a6.maxX, regionMaxY = _a6.maxY; - each_default(labels, function(label17) { + (0, import_util249.each)(labels, function(label17) { var _a7 = label17.getCanvasBBox(), minX = _a7.minX, minY = _a7.minY, maxX = _a7.maxX, maxY2 = _a7.maxY, x6 = _a7.x, y5 = _a7.y, width2 = _a7.width, height = _a7.height; var finalX = x6; var finalY = y5; - if (direction5.indexOf("left") >= 0 && (minX < regionMinX || maxX < regionMinX)) { + if (direction3.indexOf("left") >= 0 && (minX < regionMinX || maxX < regionMinX)) { finalX = regionMinX; } - if (direction5.indexOf("top") >= 0 && (minY < regionMinY || maxY2 < regionMinY)) { + if (direction3.indexOf("top") >= 0 && (minY < regionMinY || maxY2 < regionMinY)) { finalY = regionMinY; } - if (direction5.indexOf("right") >= 0) { + if (direction3.indexOf("right") >= 0) { if (minX > regionMaxX) { finalX = regionMaxX - width2; } else if (maxX > regionMaxX) { finalX = finalX - (maxX - regionMaxX); } } - if (direction5.indexOf("bottom") >= 0) { + if (direction3.indexOf("bottom") >= 0) { if (minY > regionMaxY) { finalY = regionMaxY - height; } else if (maxY2 > regionMaxY) { @@ -67050,9 +73311,9 @@ function limitInPlot(items, labels, shapes, region, cfg) { return shape.get("type") === "text"; }); textShapes.forEach(function(textShape) { - var style = pick_default(textShape.attr(), ["fontSize", "fontFamily", "fontWeight", "fontStyle", "fontVariant"]); + var style = (0, import_util249.pick)(textShape.attr(), ["fontSize", "fontFamily", "fontWeight", "fontStyle", "fontVariant"]); var textBox = textShape.getCanvasBBox(); - var text = getEllipsisText(textShape.attr("text"), textBox.width - Math.abs(translateX_1), style); + var text = getEllipsisText2(textShape.attr("text"), textBox.width - Math.abs(translateX_1), style); textShape.attr("text", text); }); } else { @@ -67063,11 +73324,12 @@ function limitInPlot(items, labels, shapes, region, cfg) { } // node_modules/@antv/g2/esm/animate/animation/fade.js +var import_util250 = __toModule(require_lib()); function fadeIn(shape, animateCfg, cfg) { var endState = { - fillOpacity: is_nil_default(shape.attr("fillOpacity")) ? 1 : shape.attr("fillOpacity"), - strokeOpacity: is_nil_default(shape.attr("strokeOpacity")) ? 1 : shape.attr("strokeOpacity"), - opacity: is_nil_default(shape.attr("opacity")) ? 1 : shape.attr("opacity") + fillOpacity: (0, import_util250.isNil)(shape.attr("fillOpacity")) ? 1 : shape.attr("fillOpacity"), + strokeOpacity: (0, import_util250.isNil)(shape.attr("strokeOpacity")) ? 1 : shape.attr("strokeOpacity"), + opacity: (0, import_util250.isNil)(shape.attr("opacity")) ? 1 : shape.attr("opacity") }; shape.attr({ fillOpacity: 0, @@ -67240,22 +73502,23 @@ function scaleInY(shape, animateCfg, cfg) { } // node_modules/@antv/g2/esm/animate/animation/sector-path-update.js +var import_util252 = __toModule(require_lib()); function getAngle4(startPoint, arcPath) { var _a6; var _b = getArcParams2(startPoint, arcPath), startAngle = _b.startAngle, endAngle = _b.endAngle; - if (!isNumberEqual(startAngle, -Math.PI * 0.5) && startAngle < -Math.PI * 0.5) { + if (!(0, import_util252.isNumberEqual)(startAngle, -Math.PI * 0.5) && startAngle < -Math.PI * 0.5) { startAngle += Math.PI * 2; } - if (!isNumberEqual(endAngle, -Math.PI * 0.5) && endAngle < -Math.PI * 0.5) { + if (!(0, import_util252.isNumberEqual)(endAngle, -Math.PI * 0.5) && endAngle < -Math.PI * 0.5) { endAngle += Math.PI * 2; } if (arcPath[5] === 0) { _a6 = [endAngle, startAngle], startAngle = _a6[0], endAngle = _a6[1]; } - if (isNumberEqual(startAngle, Math.PI * 1.5)) { + if ((0, import_util252.isNumberEqual)(startAngle, Math.PI * 1.5)) { startAngle = Math.PI * -0.5; } - if (isNumberEqual(endAngle, Math.PI * -0.5)) { + if ((0, import_util252.isNumberEqual)(endAngle, Math.PI * -0.5)) { endAngle = Math.PI * 1.5; } return { @@ -67295,7 +73558,7 @@ function getArcInfo(path) { var lastStartPoint = getArcStartPoint(path[lastIndex - 1]); var _b = getAngle4(firstStartPoint, firstArcPathCommand), firstStartAngle = _b.startAngle, firstEndAngle = _b.endAngle; var _c = getAngle4(lastStartPoint, lastArcPathCommand), lastStartAngle = _c.startAngle, lastEndAngle = _c.endAngle; - if (isNumberEqual(firstStartAngle, lastStartAngle) && isNumberEqual(firstEndAngle, lastEndAngle)) { + if ((0, import_util252.isNumberEqual)(firstStartAngle, lastStartAngle) && (0, import_util252.isNumberEqual)(firstEndAngle, lastEndAngle)) { startAngle = firstStartAngle; endAngle = firstEndAngle; } else { @@ -67336,7 +73599,7 @@ function sectorPathUpdate(shape, animateCfg, cfg) { shape.animate(function(ratio) { var onFrameStartAngle = preStartAngle + ratio * diffStartAngle; var onFrameEndAngle = preEndAngle + ratio * diffEndAngle; - return __assign(__assign({}, toAttrs), { path: is_equal_default(pathCommands, ["M", "A", "A", "Z"]) ? getArcPath(center2.x, center2.y, radius, onFrameStartAngle, onFrameEndAngle) : getSectorPath(center2.x, center2.y, radius, onFrameStartAngle, onFrameEndAngle, innerRadius) }); + return __assign(__assign({}, toAttrs), { path: (0, import_util252.isEqual)(pathCommands, ["M", "A", "A", "Z"]) ? getArcPath(center2.x, center2.y, radius, onFrameStartAngle, onFrameEndAngle) : getSectorPath(center2.x, center2.y, radius, onFrameStartAngle, onFrameEndAngle, innerRadius) }); }, __assign(__assign({}, animateCfg), { callback: function() { shape.attr("path", path); } })); @@ -67358,9 +73621,10 @@ function waveIn(element, animateCfg, cfg) { } // node_modules/@antv/g2/esm/animate/animation/zoom.js +var import_util253 = __toModule(require_lib()); function doShapeZoom(shape, animateCfg, type2) { if (shape.isGroup()) { - each_default(shape.getChildren(), function(child) { + (0, import_util253.each)(shape.getChildren(), function(child) { doShapeZoom(child, animateCfg, type2); }); } else { @@ -67402,24 +73666,27 @@ function zoomOut(shape, animateCfg, cfg) { doShapeZoom(shape, animateCfg, "zoomOut"); } +// node_modules/@antv/g2/esm/facet/circle.js +var import_util254 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/util/facet.js -function getFactTitleConfig(direction5) { - if ([DIRECTION.TOP, DIRECTION.BOTTOM].includes(direction5)) { +function getFactTitleConfig(direction3) { + if ([DIRECTION.TOP, DIRECTION.BOTTOM].includes(direction3)) { return { offsetX: 0, - offsetY: direction5 === DIRECTION.TOP ? -8 : 8, + offsetY: direction3 === DIRECTION.TOP ? -8 : 8, style: { textAlign: "center", - textBaseline: direction5 === DIRECTION.TOP ? "bottom" : "top" + textBaseline: direction3 === DIRECTION.TOP ? "bottom" : "top" } }; } - if ([DIRECTION.LEFT, DIRECTION.RIGHT].includes(direction5)) { + if ([DIRECTION.LEFT, DIRECTION.RIGHT].includes(direction3)) { return { - offsetX: direction5 === DIRECTION.LEFT ? -8 : 8, + offsetX: direction3 === DIRECTION.LEFT ? -8 : 8, offsetY: 0, style: { - textAlign: direction5 === DIRECTION.LEFT ? "right" : "left", + textAlign: direction3 === DIRECTION.LEFT ? "right" : "left", textBaseline: "middle", rotate: Math.PI / 2 } @@ -67441,7 +73708,7 @@ var Circle5 = function(_super) { return _super !== null && _super.apply(this, arguments) || this; } Circle6.prototype.getDefaultCfg = function() { - return deep_mix_default({}, _super.prototype.getDefaultCfg.call(this), { + return (0, import_util254.deepMix)({}, _super.prototype.getDefaultCfg.call(this), { type: "circle", showTitle: true, title: _super.prototype.getDefaultTitleCfg.call(this) @@ -67479,12 +73746,12 @@ var Circle5 = function(_super) { if (!field6) { throw new Error("No `fields` specified!"); } - var values2 = this.getFieldValues(data3, field6); - var count2 = values2.length; + var values4 = this.getFieldValues(data3, field6); + var count2 = values4.length; var rst = []; - values2.forEach(function(value2, index2) { - var conditions = [{ field: field6, value: value2, values: values2 }]; - var facetData = filter_default(data3, _this.getFacetDataFilter(conditions)); + values4.forEach(function(value2, index2) { + var conditions = [{ field: field6, value: value2, values: values4 }]; + var facetData = (0, import_util254.filter)(data3, _this.getFacetDataFilter(conditions)); var facet = { type: type2, data: facetData, @@ -67510,10 +73777,10 @@ var Circle5 = function(_super) { }; Circle6.prototype.renderTitle = function() { var _this = this; - each_default(this.facets, function(facet) { + (0, import_util254.each)(this.facets, function(facet) { var columnValue = facet.columnValue, view = facet.view; - var formatter = get_default(_this.cfg.title, "formatter"); - var config = deep_mix_default({ + var formatter = (0, import_util254.get)(_this.cfg.title, "formatter"); + var config = (0, import_util254.deepMix)({ position: ["50%", "0%"], content: formatter ? formatter(columnValue) : columnValue }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.title); @@ -67525,13 +73792,14 @@ var Circle5 = function(_super) { var circle_default7 = Circle5; // node_modules/@antv/g2/esm/facet/list.js +var import_util255 = __toModule(require_lib()); var List = function(_super) { __extends(List3, _super); function List3() { return _super !== null && _super.apply(this, arguments) || this; } List3.prototype.getDefaultCfg = function() { - return deep_mix_default({}, _super.prototype.getDefaultCfg.call(this), { + return (0, import_util255.deepMix)({}, _super.prototype.getDefaultCfg.call(this), { type: "list", cols: null, showTitle: true, @@ -67565,7 +73833,7 @@ var List = function(_super) { colValues.forEach(function(val, index2) { var _a6 = _this.getRowCol(index2, cols), row = _a6.row, col = _a6.col; var conditions = [{ field: columnField, value: val, values: colValues }]; - var facetData = filter_default(data3, _this.getFacetDataFilter(conditions)); + var facetData = (0, import_util255.filter)(data3, _this.getFacetDataFilter(conditions)); var facet = { type: _this.cfg.type, data: facetData, @@ -67598,10 +73866,10 @@ var List = function(_super) { }; List3.prototype.renderTitle = function() { var _this = this; - each_default(this.facets, function(facet) { + (0, import_util255.each)(this.facets, function(facet) { var columnValue = facet.columnValue, view = facet.view; - var formatter = get_default(_this.cfg.title, "formatter"); - var config = deep_mix_default({ + var formatter = (0, import_util255.get)(_this.cfg.title, "formatter"); + var config = (0, import_util255.deepMix)({ position: ["50%", "0%"], content: formatter ? formatter(columnValue) : columnValue }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.title); @@ -67621,13 +73889,14 @@ var List = function(_super) { var list_default = List; // node_modules/@antv/g2/esm/facet/matrix.js +var import_util256 = __toModule(require_lib()); var Matrix = function(_super) { __extends(Matrix3, _super); function Matrix3() { return _super !== null && _super.apply(this, arguments) || this; } Matrix3.prototype.getDefaultCfg = function() { - return deep_mix_default({}, _super.prototype.getDefaultCfg.call(this), { + return (0, import_util256.deepMix)({}, _super.prototype.getDefaultCfg.call(this), { type: "matrix", showTitle: false, columnTitle: __assign({}, _super.prototype.getDefaultTitleCfg.call(this)), @@ -67686,19 +73955,19 @@ var Matrix = function(_super) { }; Matrix3.prototype.renderTitle = function() { var _this = this; - each_default(this.facets, function(facet, facetIndex) { + (0, import_util256.each)(this.facets, function(facet, facetIndex) { var columnIndex = facet.columnIndex, rowIndex = facet.rowIndex, columnValuesLength = facet.columnValuesLength, rowValuesLength = facet.rowValuesLength, columnValue = facet.columnValue, rowValue = facet.rowValue, view = facet.view; if (rowIndex === 0) { - var formatter = get_default(_this.cfg.columnTitle, "formatter"); - var config = deep_mix_default({ + var formatter = (0, import_util256.get)(_this.cfg.columnTitle, "formatter"); + var config = (0, import_util256.deepMix)({ position: ["50%", "0%"], content: formatter ? formatter(columnValue) : columnValue }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.columnTitle); view.annotation().text(config); } if (columnIndex === columnValuesLength - 1) { - var formatter = get_default(_this.cfg.rowTitle, "formatter"); - var config = deep_mix_default({ + var formatter = (0, import_util256.get)(_this.cfg.rowTitle, "formatter"); + var config = (0, import_util256.deepMix)({ position: ["100%", "50%"], content: formatter ? formatter(rowValue) : rowValue }, getFactTitleConfig(DIRECTION.RIGHT), _this.cfg.rowTitle); @@ -67711,13 +73980,14 @@ var Matrix = function(_super) { var matrix_default = Matrix; // node_modules/@antv/g2/esm/facet/mirror.js +var import_util257 = __toModule(require_lib()); var Mirror = function(_super) { __extends(Mirror2, _super); function Mirror2() { return _super !== null && _super.apply(this, arguments) || this; } Mirror2.prototype.getDefaultCfg = function() { - return deep_mix_default({}, _super.prototype.getDefaultCfg.call(this), { + return (0, import_util257.deepMix)({}, _super.prototype.getDefaultCfg.call(this), { type: "mirror", showTitle: true, title: _super.prototype.getDefaultTitleCfg.call(this), @@ -67771,7 +74041,7 @@ var Mirror = function(_super) { { field: columnField, value: xVal, values: columnValues }, { field: rowField, value: yVal, values: rowValues } ]; - var facetData = filter_default(data3, _this.getFacetDataFilter(conditions)); + var facetData = (0, import_util257.filter)(data3, _this.getFacetDataFilter(conditions)); var facet = { type: _this.cfg.type, data: facetData, @@ -67801,17 +74071,17 @@ var Mirror = function(_super) { }; Mirror2.prototype.renderTitle = function() { var _this = this; - each_default(this.facets, function(facet, facetIndex) { + (0, import_util257.each)(this.facets, function(facet, facetIndex) { var columnValue = facet.columnValue, rowValue = facet.rowValue, view = facet.view; - var formatter = get_default(_this.cfg.title, "formatter"); + var formatter = (0, import_util257.get)(_this.cfg.title, "formatter"); if (_this.cfg.transpose) { - var config = deep_mix_default({ + var config = (0, import_util257.deepMix)({ position: ["50%", "0%"], content: formatter ? formatter(columnValue) : columnValue }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.title); view.annotation().text(config); } else { - var config = deep_mix_default({ + var config = (0, import_util257.deepMix)({ position: ["100%", "50%"], content: formatter ? formatter(rowValue) : rowValue }, getFactTitleConfig(DIRECTION.RIGHT), _this.cfg.title); @@ -67824,6 +74094,7 @@ var Mirror = function(_super) { var mirror_default = Mirror; // node_modules/@antv/g2/esm/facet/rect.js +var import_util258 = __toModule(require_lib()); var Rect3 = function(_super) { __extends(Rect4, _super); function Rect4() { @@ -67835,7 +74106,7 @@ var Rect3 = function(_super) { Rect4.prototype.beforeEachView = function(view, facet) { }; Rect4.prototype.getDefaultCfg = function() { - return deep_mix_default({}, _super.prototype.getDefaultCfg.call(this), { + return (0, import_util258.deepMix)({}, _super.prototype.getDefaultCfg.call(this), { type: "rect", columnTitle: __assign({}, _super.prototype.getDefaultTitleCfg.call(this)), rowTitle: __assign({}, _super.prototype.getDefaultTitleCfg.call(this)) @@ -67869,7 +74140,7 @@ var Rect3 = function(_super) { { field: columnField, value: xVal, values: columnValues }, { field: rowField, value: yVal, values: rowValues } ]; - var facetData = filter_default(data3, _this.getFacetDataFilter(conditions)); + var facetData = (0, import_util258.filter)(data3, _this.getFacetDataFilter(conditions)); var facet = { type: _this.cfg.type, data: facetData, @@ -67890,19 +74161,19 @@ var Rect3 = function(_super) { }; Rect4.prototype.renderTitle = function() { var _this = this; - each_default(this.facets, function(facet, facetIndex) { + (0, import_util258.each)(this.facets, function(facet, facetIndex) { var columnIndex = facet.columnIndex, rowIndex = facet.rowIndex, columnValuesLength = facet.columnValuesLength, columnValue = facet.columnValue, rowValue = facet.rowValue, view = facet.view; if (rowIndex === 0) { - var formatter = get_default(_this.cfg.columnTitle, "formatter"); - var config = deep_mix_default({ + var formatter = (0, import_util258.get)(_this.cfg.columnTitle, "formatter"); + var config = (0, import_util258.deepMix)({ position: ["50%", "0%"], content: formatter ? formatter(columnValue) : columnValue }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.columnTitle); view.annotation().text(config); } if (columnIndex === columnValuesLength - 1) { - var formatter = get_default(_this.cfg.rowTitle, "formatter"); - var config = deep_mix_default({ + var formatter = (0, import_util258.get)(_this.cfg.rowTitle, "formatter"); + var config = (0, import_util258.deepMix)({ position: ["100%", "50%"], content: formatter ? formatter(rowValue) : rowValue }, getFactTitleConfig(DIRECTION.RIGHT), _this.cfg.rowTitle); @@ -67931,6 +74202,7 @@ var Rect3 = function(_super) { var rect_default4 = Rect3; // node_modules/@antv/g2/esm/facet/tree.js +var import_util259 = __toModule(require_lib()); var Tree = function(_super) { __extends(Tree2, _super); function Tree2() { @@ -67953,7 +74225,7 @@ var Tree = function(_super) { this.view.on(VIEW_LIFE_CIRCLE.AFTER_RENDER, this.afterChartRender); }; Tree2.prototype.getDefaultCfg = function() { - return deep_mix_default({}, _super.prototype.getDefaultCfg.call(this), { + return (0, import_util259.deepMix)({}, _super.prototype.getDefaultCfg.call(this), { type: "tree", line: { style: { @@ -68051,8 +74323,8 @@ var Tree = function(_super) { }; Tree2.prototype.getRegionIndex = function(children) { var first = children[0]; - var last2 = children[children.length - 1]; - return (last2.columnIndex - first.columnIndex) / 2 + first.columnIndex; + var last17 = children[children.length - 1]; + return (last17.columnIndex - first.columnIndex) / 2 + first.columnIndex; }; Tree2.prototype.isLeaf = function(facet) { return !facet.children || !facet.children.length; @@ -68069,9 +74341,9 @@ var Tree = function(_super) { } var rst = []; var field6 = fields[level - 1]; - var values2 = this.getFieldValues(data3, field6); - values2.forEach(function(value2, index2) { - var conditions = [{ field: field6, value: value2, values: values2 }]; + var values4 = this.getFieldValues(data3, field6); + values4.forEach(function(value2, index2) { + var conditions = [{ field: field6, value: value2, values: values4 }]; var subData = data3.filter(_this.getFacetDataFilter(conditions)); if (subData.length) { var facet = { @@ -68102,10 +74374,10 @@ var Tree = function(_super) { }; Tree2.prototype.renderTitle = function() { var _this = this; - each_default(this.facets, function(facet) { + (0, import_util259.each)(this.facets, function(facet) { var columnValue = facet.columnValue, view = facet.view; - var formatter = get_default(_this.cfg.title, "formatter"); - var config = deep_mix_default({ + var formatter = (0, import_util259.get)(_this.cfg.title, "formatter"); + var config = (0, import_util259.deepMix)({ position: ["50%", "0%"], content: formatter ? formatter(columnValue) : columnValue }, getFactTitleConfig(DIRECTION.TOP), _this.cfg.title); @@ -68167,7 +74439,7 @@ var Tree = function(_super) { var path = this.getPath(points); var line2 = this.cfg.line.style; this.container.addShape("path", { - attrs: mix({ + attrs: (0, import_util259.assign)({ path }, line2) }); @@ -68188,7 +74460,11 @@ var Tree = function(_super) { }(Facet); var tree_default = Tree; +// node_modules/@antv/g2/esm/chart/controller/annotation.js +var import_util261 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/util/stat.js +var import_util260 = __toModule(require_lib()); function getMedian(array) { var arr = __spreadArray([], array, true); arr.sort(function(a4, b10) { @@ -68204,8 +74480,8 @@ function getMedian(array) { return (arr[len5 / 2] + arr[len5 / 2 - 1]) / 2; } function getMean(array) { - var sum = reduce_default(array, function(r4, num) { - return r4 += isNaN(num) || !is_number_default(num) ? 0 : num; + var sum = (0, import_util260.reduce)(array, function(r4, num) { + return r4 += isNaN(num) || !(0, import_util260.isNumber)(num) ? 0 : num; }, 0); return array.length === 0 ? 0 : sum / array.length; } @@ -68276,8 +74552,8 @@ var Annotation = function(_super) { var _this = this; this.onAfterRender(function() { var updated = new Map(); - each_default(_this.option, function(option) { - if (contains_default(ANNOTATIONS_AFTER_RENDER, option.type)) { + (0, import_util261.each)(_this.option, function(option) { + if ((0, import_util261.includes)(ANNOTATIONS_AFTER_RENDER, option.type)) { var co = _this.updateOrCreate(option); if (co) { updated.set(_this.getCacheKey(option), co); @@ -68287,8 +74563,8 @@ var Annotation = function(_super) { _this.cache = _this.syncCache(updated); }); var updateCache = new Map(); - each_default(this.option, function(option) { - if (!contains_default(ANNOTATIONS_AFTER_RENDER, option.type)) { + (0, import_util261.each)(this.option, function(option) { + if (!(0, import_util261.includes)(ANNOTATIONS_AFTER_RENDER, option.type)) { var co = _this.updateOrCreate(option); if (co) { updateCache.set(_this.getCacheKey(option), co); @@ -68344,7 +74620,7 @@ var Annotation = function(_super) { }; Annotation2.prototype.createAnnotation = function(option) { var type2 = option.type; - var Ctor = annotation_exports[upper_first_default(type2)]; + var Ctor = annotation_exports[(0, import_util261.upperFirst)(type2)]; if (Ctor) { var theme4 = this.getAnnotationTheme(type2); var cfg = this.getAnnotationCfg(type2, option, theme4); @@ -68400,18 +74676,18 @@ var Annotation = function(_super) { Annotation2.prototype.parsePosition = function(p4) { var xScale = this.view.getXScale(); var yScales = this.view.getScalesByDim("y"); - var position2 = is_function_default(p4) ? p4.call(null, xScale, yScales) : p4; + var position2 = (0, import_util261.isFunction)(p4) ? p4.call(null, xScale, yScales) : p4; var x6 = 0; var y5 = 0; - if (is_array_default(position2)) { + if ((0, import_util261.isArray)(position2)) { var xPos = position2[0], yPos = position2[1]; - if (is_string_default(xPos) && xPos.indexOf("%") !== -1 && !isNaN(xPos.slice(0, -1))) { + if ((0, import_util261.isString)(xPos) && xPos.indexOf("%") !== -1 && !isNaN(xPos.slice(0, -1))) { return this.parsePercentPosition(position2); } x6 = getNormalizedValue(xPos, xScale); y5 = getNormalizedValue(yPos, Object.values(yScales)[0]); - } else if (!is_nil_default(position2)) { - for (var _i = 0, _a6 = keys_default(position2); _i < _a6.length; _i++) { + } else if (!(0, import_util261.isNil)(position2)) { + for (var _i = 0, _a6 = (0, import_util261.keys)(position2); _i < _a6.length; _i++) { var key = _a6[_i]; var value2 = position2[key]; if (key === xScale.field) { @@ -68434,11 +74710,11 @@ var Annotation = function(_super) { var yScale = Object.values(yScales)[0]; var xField = xScale.field; var viewData = this.view.getData(); - var startXValue = is_array_default(start) ? start[0] : start[xField]; - var endXValue = is_array_default(end2) ? end2[0] : end2[xField]; + var startXValue = (0, import_util261.isArray)(start) ? start[0] : start[xField]; + var endXValue = (0, import_util261.isArray)(end2) ? end2[0] : end2[xField]; var arr = []; var startIndex; - each_default(viewData, function(item, idx) { + (0, import_util261.each)(viewData, function(item, idx) { if (item[xField] === startXValue) { startIndex = idx; } @@ -68492,7 +74768,7 @@ var Annotation = function(_super) { var coordinate11 = this.view.getCoordinate(); var canvas = this.view.getCanvas(); var o3 = {}; - if (is_nil_default(option)) { + if ((0, import_util261.isNil)(option)) { return null; } var start = option.start, end2 = option.end, position2 = option.position; @@ -68518,7 +74794,7 @@ var Annotation = function(_super) { o3 = __assign(__assign({}, rest), { start: sp, end: ep, src: option.src }); } else if (type2 === "line") { var _c = option, start_3 = _c.start, end_3 = _c.end, rest = __rest(_c, ["start", "end"]); - o3 = __assign(__assign({}, rest), { start: sp, end: ep, text: get_default(option, "text", null) }); + o3 = __assign(__assign({}, rest), { start: sp, end: ep, text: (0, import_util261.get)(option, "text", null) }); } else if (type2 === "region") { var _d = option, start_4 = _d.start, end_4 = _d.end, rest = __rest(_d, ["start", "end"]); o3 = __assign(__assign({}, rest), { start: sp, end: ep }); @@ -68526,13 +74802,13 @@ var Annotation = function(_super) { var filteredData = this.view.getData(); var _e = option, position_1 = _e.position, content = _e.content, rest = __rest(_e, ["position", "content"]); var textContent = content; - if (is_function_default(content)) { + if ((0, import_util261.isFunction)(content)) { textContent = content(filteredData); } o3 = __assign(__assign(__assign({}, textPoint), rest), { content: textContent }); } else if (type2 === "dataMarker") { - var _f = option, position_2 = _f.position, point2 = _f.point, line2 = _f.line, text = _f.text, autoAdjust = _f.autoAdjust, direction5 = _f.direction, rest = __rest(_f, ["position", "point", "line", "text", "autoAdjust", "direction"]); - o3 = __assign(__assign(__assign({}, rest), textPoint), { coordinateBBox: this.getCoordinateBBox(), point: point2, line: line2, text, autoAdjust, direction: direction5 }); + var _f = option, position_2 = _f.position, point2 = _f.point, line2 = _f.line, text = _f.text, autoAdjust = _f.autoAdjust, direction3 = _f.direction, rest = __rest(_f, ["position", "point", "line", "text", "autoAdjust", "direction"]); + o3 = __assign(__assign(__assign({}, rest), textPoint), { coordinateBBox: this.getCoordinateBBox(), point: point2, line: line2, text, autoAdjust, direction: direction3 }); } else if (type2 === "dataRegion") { var _g = option, start_5 = _g.start, end_5 = _g.end, region = _g.region, text = _g.text, lineLength = _g.lineLength, rest = __rest(_g, ["start", "end", "region", "text", "lineLength"]); o3 = __assign(__assign({}, rest), { points: this.getRegionPoints(start_5, end_5), region, text, lineLength }); @@ -68552,15 +74828,15 @@ var Annotation = function(_super) { shapes_1.push(item); } }; - each_default(geometries, function(geom) { + (0, import_util261.each)(geometries, function(geom) { if (apply_1) { - if (contains_default(apply_1, geom.type)) { - each_default(geom.elements, function(elem) { + if ((0, import_util261.contains)(apply_1, geom.type)) { + (0, import_util261.each)(geom.elements, function(elem) { addShapes_1(elem.shape); }); } } else { - each_default(geom.elements, function(elem) { + (0, import_util261.each)(geom.elements, function(elem) { addShapes_1(elem.shape); }); } @@ -68569,7 +74845,7 @@ var Annotation = function(_super) { } else if (type2 === "shape") { var _j = option, render_1 = _j.render, restOptions = __rest(_j, ["render"]); var wrappedRender = function(container2) { - if (is_function_default(option.render)) { + if ((0, import_util261.isFunction)(option.render)) { return render_1(container2, _this.view, { parsePosition: _this.parsePosition.bind(_this) }); } }; @@ -68577,7 +74853,7 @@ var Annotation = function(_super) { } else if (type2 === "html") { var _k = option, html_1 = _k.html, position_3 = _k.position, restOptions = __rest(_k, ["html", "position"]); var wrappedHtml = function(container2) { - if (is_function_default(html_1)) { + if ((0, import_util261.isFunction)(html_1)) { return html_1(container2, _this.view); } return html_1; @@ -68587,22 +74863,22 @@ var Annotation = function(_super) { html: wrappedHtml }); } - var cfg = deep_mix_default({}, theme4, __assign(__assign({}, o3), { top: option.top, style: option.style, offsetX: option.offsetX, offsetY: option.offsetY })); + var cfg = (0, import_util261.deepMix)({}, theme4, __assign(__assign({}, o3), { top: option.top, style: option.style, offsetX: option.offsetX, offsetY: option.offsetY })); if (type2 !== "html") { cfg.container = this.getComponentContainer(cfg); } - cfg.animate = this.view.getOptions().animate && cfg.animate && get_default(option, "animate", cfg.animate); - cfg.animateOption = deep_mix_default({}, DEFAULT_ANIMATE_CFG, cfg.animateOption, option.animateOption); + cfg.animate = this.view.getOptions().animate && cfg.animate && (0, import_util261.get)(option, "animate", cfg.animate); + cfg.animateOption = (0, import_util261.deepMix)({}, DEFAULT_ANIMATE_CFG, cfg.animateOption, option.animateOption); return cfg; }; Annotation2.prototype.isTop = function(option) { - return get_default(option, "top", true); + return (0, import_util261.get)(option, "top", true); }; Annotation2.prototype.getComponentContainer = function(option) { return this.isTop(option) ? this.foregroundContainer : this.backgroundContainer; }; Annotation2.prototype.getAnnotationTheme = function(type2) { - return get_default(this.view.getTheme(), ["components", "annotation", type2], {}); + return (0, import_util261.get)(this.view.getTheme(), ["components", "annotation", type2], {}); }; Annotation2.prototype.updateOrCreate = function(option) { var co = this.cache.get(this.getCacheKey(option)); @@ -68614,14 +74890,14 @@ var Annotation = function(_super) { omit(cfg, ["container"]); } co.component.update(__assign(__assign({}, cfg || {}), { visible: !!cfg })); - if (contains_default(ANNOTATIONS_AFTER_RENDER, option.type)) { + if ((0, import_util261.includes)(ANNOTATIONS_AFTER_RENDER, option.type)) { co.component.render(); } } else { co = this.createAnnotation(option); if (co) { co.component.init(); - if (contains_default(ANNOTATIONS_AFTER_RENDER, option.type)) { + if ((0, import_util261.includes)(ANNOTATIONS_AFTER_RENDER, option.type)) { co.component.render(); } } @@ -68635,7 +74911,7 @@ var Annotation = function(_super) { newCache.set(key, co); }); newCache.forEach(function(co, key) { - if (!find_default(_this.option, function(option) { + if (!(0, import_util261.find)(_this.option, function(option) { return key === _this.getCacheKey(option); })) { co.component.destroy(); @@ -68651,10 +74927,14 @@ var Annotation = function(_super) { }(Controller); var annotation_default = Annotation; +// node_modules/@antv/g2/esm/chart/controller/axis.js +var import_util263 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/util/grid.js -function getGridThemeCfg(theme4, direction5) { - var axisTheme = deep_mix_default({}, get_default(theme4, ["components", "axis", "common"]), get_default(theme4, ["components", "axis", direction5])); - return get_default(axisTheme, ["grid"], {}); +var import_util262 = __toModule(require_lib()); +function getGridThemeCfg(theme4, direction3) { + var axisTheme = (0, import_util262.deepMix)({}, (0, import_util262.get)(theme4, ["components", "axis", "common"]), (0, import_util262.get)(theme4, ["components", "axis", direction3])); + return (0, import_util262.get)(axisTheme, ["grid"], {}); } function getLineGridItems(coordinate11, scale12, dim, alignTick) { var items = []; @@ -68714,7 +74994,7 @@ function getCircleGridItems(coordinate11, xScale, yScale, alignTick, dim) { }); } else { items.push({ - points: map_default(Array(count2 + 1), function(__, idx) { + points: (0, import_util262.map)(Array(count2 + 1), function(__, idx) { return coordinate11.convert({ x: idx / count2, y: alignTick ? currentValue : middleValue @@ -68727,11 +75007,11 @@ function getCircleGridItems(coordinate11, xScale, yScale, alignTick, dim) { return items; } function showGrid(axisTheme, axisOption) { - var userGrid = get_default(axisOption, "grid"); + var userGrid = (0, import_util262.get)(axisOption, "grid"); if (userGrid === null) { return false; } - var themeGrid = get_default(axisTheme, "grid"); + var themeGrid = (0, import_util262.get)(axisTheme, "grid"); return !(userGrid === void 0 && themeGrid === null); } @@ -68764,19 +75044,19 @@ var Axis = function(_super) { Axis2.prototype.layout = function() { var _this = this; var coordinate11 = this.view.getCoordinate(); - each_default(this.getComponents(), function(co) { - var component2 = co.component, direction5 = co.direction, type2 = co.type, extra = co.extra; + (0, import_util263.each)(this.getComponents(), function(co) { + var component2 = co.component, direction3 = co.direction, type2 = co.type, extra = co.extra; var dim = extra.dim, scale12 = extra.scale, alignTick = extra.alignTick; var updated; if (type2 === COMPONENT_TYPE.AXIS) { if (coordinate11.isPolar) { if (dim === "x") { - updated = coordinate11.isTransposed ? getAxisRegion(coordinate11, direction5) : getCircleAxisCenterRadius(coordinate11); + updated = coordinate11.isTransposed ? getAxisRegion(coordinate11, direction3) : getCircleAxisCenterRadius(coordinate11); } else if (dim === "y") { - updated = coordinate11.isTransposed ? getCircleAxisCenterRadius(coordinate11) : getAxisRegion(coordinate11, direction5); + updated = coordinate11.isTransposed ? getCircleAxisCenterRadius(coordinate11) : getAxisRegion(coordinate11, direction3); } } else { - updated = getAxisRegion(coordinate11, direction5); + updated = getAxisRegion(coordinate11, direction3); } } else if (type2 === COMPONENT_TYPE.GRID) { if (coordinate11.isPolar) { @@ -68843,7 +75123,7 @@ var Axis = function(_super) { if (xAxisOption === false) { return; } - var direction5 = getAxisDirection(xAxisOption, DIRECTION.BOTTOM); + var direction3 = getAxisDirection(xAxisOption, DIRECTION.BOTTOM); var layer = LAYER.BG; var dim = "x"; var coordinate11 = this.view.getCoordinate(); @@ -68852,23 +75132,23 @@ var Axis = function(_super) { if (coordinate11.isRect) { var axis22 = this.cache.get(axisId); if (axis22) { - var cfg = this.getLineAxisCfg(scale12, xAxisOption, direction5); + var cfg = this.getLineAxisCfg(scale12, xAxisOption, direction3); omit(cfg, OMIT_CFG); axis22.component.update(cfg); updatedCache.set(axisId, axis22); } else { - axis22 = this.createLineAxis(scale12, xAxisOption, layer, direction5, dim); + axis22 = this.createLineAxis(scale12, xAxisOption, layer, direction3, dim); this.cache.set(axisId, axis22); updatedCache.set(axisId, axis22); } var grid = this.cache.get(gridId); if (grid) { - var cfg = this.getLineGridCfg(scale12, xAxisOption, direction5, dim); + var cfg = this.getLineGridCfg(scale12, xAxisOption, direction3, dim); omit(cfg, OMIT_CFG); grid.component.update(cfg); updatedCache.set(gridId, grid); } else { - grid = this.createLineGrid(scale12, xAxisOption, layer, direction5, dim); + grid = this.createLineGrid(scale12, xAxisOption, layer, direction3, dim); if (grid) { this.cache.set(gridId, grid); updatedCache.set(gridId, grid); @@ -68877,19 +75157,19 @@ var Axis = function(_super) { } else if (coordinate11.isPolar) { var axis22 = this.cache.get(axisId); if (axis22) { - var cfg = coordinate11.isTransposed ? this.getLineAxisCfg(scale12, xAxisOption, DIRECTION.RADIUS) : this.getCircleAxisCfg(scale12, xAxisOption, direction5); + var cfg = coordinate11.isTransposed ? this.getLineAxisCfg(scale12, xAxisOption, DIRECTION.RADIUS) : this.getCircleAxisCfg(scale12, xAxisOption, direction3); omit(cfg, OMIT_CFG); axis22.component.update(cfg); updatedCache.set(axisId, axis22); } else { if (coordinate11.isTransposed) { - if (is_undefined_default(xAxisOption)) { + if ((0, import_util263.isUndefined)(xAxisOption)) { return; } else { axis22 = this.createLineAxis(scale12, xAxisOption, layer, DIRECTION.RADIUS, dim); } } else { - axis22 = this.createCircleAxis(scale12, xAxisOption, layer, direction5, dim); + axis22 = this.createCircleAxis(scale12, xAxisOption, layer, direction3, dim); } this.cache.set(axisId, axis22); updatedCache.set(axisId, axis22); @@ -68902,7 +75182,7 @@ var Axis = function(_super) { updatedCache.set(gridId, grid); } else { if (coordinate11.isTransposed) { - if (is_undefined_default(xAxisOption)) { + if ((0, import_util263.isUndefined)(xAxisOption)) { return; } else { grid = this.createCircleGrid(scale12, xAxisOption, layer, DIRECTION.RADIUS, dim); @@ -68921,7 +75201,7 @@ var Axis = function(_super) { Axis2.prototype.updateYAxes = function(updatedCache) { var _this = this; var yScales = this.view.getYScales(); - each_default(yScales, function(scale12, idx) { + (0, import_util263.each)(yScales, function(scale12, idx) { if (!scale12 || scale12.isIdentity) { return; } @@ -68934,26 +75214,26 @@ var Axis = function(_super) { var gridId = _this.getId("grid", field6); var coordinate11 = _this.view.getCoordinate(); if (coordinate11.isRect) { - var direction5 = getAxisDirection(yAxisOption, idx === 0 ? DIRECTION.LEFT : DIRECTION.RIGHT); + var direction3 = getAxisDirection(yAxisOption, idx === 0 ? DIRECTION.LEFT : DIRECTION.RIGHT); var axis22 = _this.cache.get(axisId); if (axis22) { - var cfg = _this.getLineAxisCfg(scale12, yAxisOption, direction5); + var cfg = _this.getLineAxisCfg(scale12, yAxisOption, direction3); omit(cfg, OMIT_CFG); axis22.component.update(cfg); updatedCache.set(axisId, axis22); } else { - axis22 = _this.createLineAxis(scale12, yAxisOption, layer, direction5, dim); + axis22 = _this.createLineAxis(scale12, yAxisOption, layer, direction3, dim); _this.cache.set(axisId, axis22); updatedCache.set(axisId, axis22); } var grid = _this.cache.get(gridId); if (grid) { - var cfg = _this.getLineGridCfg(scale12, yAxisOption, direction5, dim); + var cfg = _this.getLineGridCfg(scale12, yAxisOption, direction3, dim); omit(cfg, OMIT_CFG); grid.component.update(cfg); updatedCache.set(gridId, grid); } else { - grid = _this.createLineGrid(scale12, yAxisOption, layer, direction5, dim); + grid = _this.createLineGrid(scale12, yAxisOption, layer, direction3, dim); if (grid) { _this.cache.set(gridId, grid); updatedCache.set(gridId, grid); @@ -68968,7 +75248,7 @@ var Axis = function(_super) { updatedCache.set(axisId, axis22); } else { if (coordinate11.isTransposed) { - if (is_undefined_default(yAxisOption)) { + if ((0, import_util263.isUndefined)(yAxisOption)) { return; } else { axis22 = _this.createCircleAxis(scale12, yAxisOption, layer, DIRECTION.CIRCLE, dim); @@ -68987,7 +75267,7 @@ var Axis = function(_super) { updatedCache.set(gridId, grid); } else { if (coordinate11.isTransposed) { - if (is_undefined_default(yAxisOption)) { + if ((0, import_util263.isUndefined)(yAxisOption)) { return; } else { grid = _this.createLineGrid(scale12, yAxisOption, layer, DIRECTION.CIRCLE, dim); @@ -69005,11 +75285,11 @@ var Axis = function(_super) { } }); }; - Axis2.prototype.createLineAxis = function(scale12, option, layer, direction5, dim) { + Axis2.prototype.createLineAxis = function(scale12, option, layer, direction3, dim) { var axis22 = { - component: new LineAxis(this.getLineAxisCfg(scale12, option, direction5)), + component: new LineAxis(this.getLineAxisCfg(scale12, option, direction3)), layer, - direction: direction5 === DIRECTION.RADIUS ? DIRECTION.NONE : direction5, + direction: direction3 === DIRECTION.RADIUS ? DIRECTION.NONE : direction3, type: COMPONENT_TYPE.AXIS, extra: { dim, scale: scale12 } }; @@ -69017,8 +75297,8 @@ var Axis = function(_super) { axis22.component.init(); return axis22; }; - Axis2.prototype.createLineGrid = function(scale12, option, layer, direction5, dim) { - var cfg = this.getLineGridCfg(scale12, option, direction5, dim); + Axis2.prototype.createLineGrid = function(scale12, option, layer, direction3, dim) { + var cfg = this.getLineGridCfg(scale12, option, direction3, dim); if (cfg) { var grid = { component: new LineGrid(cfg), @@ -69028,18 +75308,18 @@ var Axis = function(_super) { extra: { dim, scale: scale12, - alignTick: get_default(cfg, "alignTick", true) + alignTick: (0, import_util263.get)(cfg, "alignTick", true) } }; grid.component.init(); return grid; } }; - Axis2.prototype.createCircleAxis = function(scale12, option, layer, direction5, dim) { + Axis2.prototype.createCircleAxis = function(scale12, option, layer, direction3, dim) { var axis22 = { - component: new CircleAxis(this.getCircleAxisCfg(scale12, option, direction5)), + component: new CircleAxis(this.getCircleAxisCfg(scale12, option, direction3)), layer, - direction: direction5, + direction: direction3, type: COMPONENT_TYPE.AXIS, extra: { dim, scale: scale12 } }; @@ -69047,8 +75327,8 @@ var Axis = function(_super) { axis22.component.init(); return axis22; }; - Axis2.prototype.createCircleGrid = function(scale12, option, layer, direction5, dim) { - var cfg = this.getCircleGridCfg(scale12, option, direction5, dim); + Axis2.prototype.createCircleGrid = function(scale12, option, layer, direction3, dim) { + var cfg = this.getCircleGridCfg(scale12, option, direction3, dim); if (cfg) { var grid = { component: new CircleGrid(cfg), @@ -69058,28 +75338,28 @@ var Axis = function(_super) { extra: { dim, scale: scale12, - alignTick: get_default(cfg, "alignTick", true) + alignTick: (0, import_util263.get)(cfg, "alignTick", true) } }; grid.component.init(); return grid; } }; - Axis2.prototype.getLineAxisCfg = function(scale12, axisOption, direction5) { - var container2 = get_default(axisOption, ["top"]) ? this.axisForeContainer : this.axisContainer; + Axis2.prototype.getLineAxisCfg = function(scale12, axisOption, direction3) { + var container2 = (0, import_util263.get)(axisOption, ["top"]) ? this.axisForeContainer : this.axisContainer; var coordinate11 = this.view.getCoordinate(); - var region = getAxisRegion(coordinate11, direction5); + var region = getAxisRegion(coordinate11, direction3); var titleText = getAxisTitleText(scale12, axisOption); - var axisThemeCfg = getAxisThemeCfg(this.view.getTheme(), direction5); - var optionWithTitle = get_default(axisOption, ["title"]) ? deep_mix_default({ title: { style: { text: titleText } } }, { title: getAxisTitleOptions(this.view.getTheme(), direction5, axisOption.title) }, axisOption) : axisOption; - var cfg = deep_mix_default(__assign(__assign({ container: container2 }, region), { ticks: scale12.getTicks().map(function(tick) { + var axisThemeCfg = getAxisThemeCfg(this.view.getTheme(), direction3); + var optionWithTitle = (0, import_util263.get)(axisOption, ["title"]) ? (0, import_util263.deepMix)({ title: { style: { text: titleText } } }, { title: getAxisTitleOptions(this.view.getTheme(), direction3, axisOption.title) }, axisOption) : axisOption; + var cfg = (0, import_util263.deepMix)(__assign(__assign({ container: container2 }, region), { ticks: scale12.getTicks().map(function(tick) { return { id: "".concat(tick.tickValue), name: tick.text, value: tick.value }; }), verticalFactor: coordinate11.isPolar ? getAxisFactorByRegion(region, coordinate11.getCenter()) * -1 : getAxisFactorByRegion(region, coordinate11.getCenter()), theme: axisThemeCfg }), axisThemeCfg, optionWithTitle); var _a6 = this.getAnimateCfg(cfg), animate = _a6.animate, animateOption = _a6.animateOption; cfg.animateOption = animateOption; cfg.animate = animate; var isAxisVertical = isVertical(region); - var verticalLimitLength = get_default(cfg, "verticalLimitLength", isAxisVertical ? 1 / 3 : 1 / 2); + var verticalLimitLength = (0, import_util263.get)(cfg, "verticalLimitLength", isAxisVertical ? 1 / 3 : 1 / 2); if (verticalLimitLength <= 1) { var canvasWidth = this.view.getCanvas().get("width"); var canvasHeight = this.view.getCanvas().get("height"); @@ -69087,19 +75367,19 @@ var Axis = function(_super) { } return cfg; }; - Axis2.prototype.getLineGridCfg = function(scale12, axisOption, direction5, dim) { - if (!showGrid(getAxisThemeCfg(this.view.getTheme(), direction5), axisOption)) { + Axis2.prototype.getLineGridCfg = function(scale12, axisOption, direction3, dim) { + if (!showGrid(getAxisThemeCfg(this.view.getTheme(), direction3), axisOption)) { return void 0; } - var gridThemeCfg = getGridThemeCfg(this.view.getTheme(), direction5); - var gridCfg = deep_mix_default({ - container: get_default(axisOption, ["top"]) ? this.gridForeContainer : this.gridContainer - }, gridThemeCfg, get_default(axisOption, "grid"), this.getAnimateCfg(axisOption)); - gridCfg.items = getLineGridItems(this.view.getCoordinate(), scale12, dim, get_default(gridCfg, "alignTick", true)); + var gridThemeCfg = getGridThemeCfg(this.view.getTheme(), direction3); + var gridCfg = (0, import_util263.deepMix)({ + container: (0, import_util263.get)(axisOption, ["top"]) ? this.gridForeContainer : this.gridContainer + }, gridThemeCfg, (0, import_util263.get)(axisOption, "grid"), this.getAnimateCfg(axisOption)); + gridCfg.items = getLineGridItems(this.view.getCoordinate(), scale12, dim, (0, import_util263.get)(gridCfg, "alignTick", true)); return gridCfg; }; - Axis2.prototype.getCircleAxisCfg = function(scale12, axisOption, direction5) { - var container2 = get_default(axisOption, ["top"]) ? this.axisForeContainer : this.axisContainer; + Axis2.prototype.getCircleAxisCfg = function(scale12, axisOption, direction3) { + var container2 = (0, import_util263.get)(axisOption, ["top"]) ? this.axisForeContainer : this.axisContainer; var coordinate11 = this.view.getCoordinate(); var ticks = scale12.getTicks().map(function(tick) { return { id: "".concat(tick.tickValue), name: tick.text, value: tick.value }; @@ -69109,23 +75389,23 @@ var Axis = function(_super) { } var titleText = getAxisTitleText(scale12, axisOption); var axisThemeCfg = getAxisThemeCfg(this.view.getTheme(), DIRECTION.CIRCLE); - var optionWithTitle = get_default(axisOption, ["title"]) ? deep_mix_default({ title: { style: { text: titleText } } }, { title: getAxisTitleOptions(this.view.getTheme(), direction5, axisOption.title) }, axisOption) : axisOption; - var cfg = deep_mix_default(__assign(__assign({ container: container2 }, getCircleAxisCenterRadius(this.view.getCoordinate())), { ticks, verticalFactor: 1, theme: axisThemeCfg }), axisThemeCfg, optionWithTitle); + var optionWithTitle = (0, import_util263.get)(axisOption, ["title"]) ? (0, import_util263.deepMix)({ title: { style: { text: titleText } } }, { title: getAxisTitleOptions(this.view.getTheme(), direction3, axisOption.title) }, axisOption) : axisOption; + var cfg = (0, import_util263.deepMix)(__assign(__assign({ container: container2 }, getCircleAxisCenterRadius(this.view.getCoordinate())), { ticks, verticalFactor: 1, theme: axisThemeCfg }), axisThemeCfg, optionWithTitle); var _a6 = this.getAnimateCfg(cfg), animate = _a6.animate, animateOption = _a6.animateOption; cfg.animate = animate; cfg.animateOption = animateOption; return cfg; }; - Axis2.prototype.getCircleGridCfg = function(scale12, axisOption, direction5, dim) { - if (!showGrid(getAxisThemeCfg(this.view.getTheme(), direction5), axisOption)) { + Axis2.prototype.getCircleGridCfg = function(scale12, axisOption, direction3, dim) { + if (!showGrid(getAxisThemeCfg(this.view.getTheme(), direction3), axisOption)) { return void 0; } var gridThemeCfg = getGridThemeCfg(this.view.getTheme(), DIRECTION.RADIUS); - var gridCfg = deep_mix_default({ - container: get_default(axisOption, ["top"]) ? this.gridForeContainer : this.gridContainer, + var gridCfg = (0, import_util263.deepMix)({ + container: (0, import_util263.get)(axisOption, ["top"]) ? this.gridForeContainer : this.gridContainer, center: this.view.getCoordinate().getCenter() - }, gridThemeCfg, get_default(axisOption, "grid"), this.getAnimateCfg(axisOption)); - var alignTick = get_default(gridCfg, "alignTick", true); + }, gridThemeCfg, (0, import_util263.get)(axisOption, "grid"), this.getAnimateCfg(axisOption)); + var alignTick = (0, import_util263.get)(gridCfg, "alignTick", true); var verticalScale = dim === "x" ? this.view.getYScales()[0] : this.view.getXScale(); gridCfg.items = getCircleGridItems(this.view.getCoordinate(), verticalScale, scale12, alignTick, dim); return gridCfg; @@ -69136,38 +75416,41 @@ var Axis = function(_super) { }; Axis2.prototype.getAnimateCfg = function(cfg) { return { - animate: this.view.getOptions().animate && get_default(cfg, "animate"), - animateOption: cfg && cfg.animateOption ? deep_mix_default({}, AXIS_DEFAULT_ANIMATE_CFG, cfg.animateOption) : AXIS_DEFAULT_ANIMATE_CFG + animate: this.view.getOptions().animate && (0, import_util263.get)(cfg, "animate"), + animateOption: cfg && cfg.animateOption ? (0, import_util263.deepMix)({}, AXIS_DEFAULT_ANIMATE_CFG, cfg.animateOption) : AXIS_DEFAULT_ANIMATE_CFG }; }; return Axis2; }(Controller); var axis_default = Axis; +// node_modules/@antv/g2/esm/chart/controller/legend.js +var import_util264 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/util/direction.js -function directionToPosition(parentBBox, bbox, direction5) { - if (direction5 === DIRECTION.TOP) { +function directionToPosition(parentBBox, bbox, direction3) { + if (direction3 === DIRECTION.TOP) { return [parentBBox.minX + parentBBox.width / 2 - bbox.width / 2, parentBBox.minY]; } - if (direction5 === DIRECTION.BOTTOM) { + if (direction3 === DIRECTION.BOTTOM) { return [parentBBox.minX + parentBBox.width / 2 - bbox.width / 2, parentBBox.maxY - bbox.height]; } - if (direction5 === DIRECTION.LEFT) { + if (direction3 === DIRECTION.LEFT) { return [parentBBox.minX, parentBBox.minY + parentBBox.height / 2 - bbox.height / 2]; } - if (direction5 === DIRECTION.RIGHT) { + if (direction3 === DIRECTION.RIGHT) { return [parentBBox.maxX - bbox.width, parentBBox.minY + parentBBox.height / 2 - bbox.height / 2]; } - if (direction5 === DIRECTION.TOP_LEFT || direction5 === DIRECTION.LEFT_TOP) { + if (direction3 === DIRECTION.TOP_LEFT || direction3 === DIRECTION.LEFT_TOP) { return [parentBBox.tl.x, parentBBox.tl.y]; } - if (direction5 === DIRECTION.TOP_RIGHT || direction5 === DIRECTION.RIGHT_TOP) { + if (direction3 === DIRECTION.TOP_RIGHT || direction3 === DIRECTION.RIGHT_TOP) { return [parentBBox.tr.x - bbox.width, parentBBox.tr.y]; } - if (direction5 === DIRECTION.BOTTOM_LEFT || direction5 === DIRECTION.LEFT_BOTTOM) { + if (direction3 === DIRECTION.BOTTOM_LEFT || direction3 === DIRECTION.LEFT_BOTTOM) { return [parentBBox.bl.x, parentBBox.bl.y - bbox.height]; } - if (direction5 === DIRECTION.BOTTOM_RIGHT || direction5 === DIRECTION.RIGHT_BOTTOM) { + if (direction3 === DIRECTION.BOTTOM_RIGHT || direction3 === DIRECTION.RIGHT_BOTTOM) { return [parentBBox.br.x - bbox.width, parentBBox.br.y - bbox.height]; } return [0, 0]; @@ -69175,39 +75458,39 @@ function directionToPosition(parentBBox, bbox, direction5) { // node_modules/@antv/g2/esm/chart/controller/legend.js function getLegendOption(legends, field6) { - if (is_boolean_default(legends)) { + if ((0, import_util264.isBoolean)(legends)) { return legends === false ? false : {}; } - return get_default(legends, [field6], legends); + return (0, import_util264.get)(legends, [field6], legends); } function getDirection(legendOption) { - return get_default(legendOption, "position", DIRECTION.BOTTOM); + return (0, import_util264.get)(legendOption, "position", DIRECTION.BOTTOM); } var Legend = function(_super) { - __extends(Legend2, _super); - function Legend2(view) { + __extends(Legend4, _super); + function Legend4(view) { var _this = _super.call(this, view) || this; _this.container = _this.view.getLayer(LAYER.FORE).addGroup(); return _this; } - Object.defineProperty(Legend2.prototype, "name", { + Object.defineProperty(Legend4.prototype, "name", { get: function() { return "legend"; }, enumerable: false, configurable: true }); - Legend2.prototype.init = function() { + Legend4.prototype.init = function() { }; - Legend2.prototype.render = function() { + Legend4.prototype.render = function() { this.update(); }; - Legend2.prototype.layout = function() { + Legend4.prototype.layout = function() { var _this = this; this.layoutBBox = this.view.viewBBox; - each_default(this.components, function(co) { - var component2 = co.component, direction5 = co.direction; - var layout6 = getLegendLayout(direction5); + (0, import_util264.each)(this.components, function(co) { + var component2 = co.component, direction3 = co.direction; + var layout6 = getLegendLayout(direction3); var maxWidthRatio = component2.get("maxWidthRatio"); var maxHeightRatio = component2.get("maxHeightRatio"); var maxSize = _this.getCategoryLegendSizeCfg(layout6, maxWidthRatio, maxHeightRatio); @@ -69220,11 +75503,11 @@ var Legend = function(_super) { var padding3 = component2.get("padding"); var bboxObject = component2.getLayoutBBox(); var bbox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height).expand(padding3); - var _a6 = directionToPosition(_this.view.viewBBox, bbox, direction5), x1 = _a6[0], y1 = _a6[1]; - var _b = directionToPosition(_this.layoutBBox, bbox, direction5), x22 = _b[0], y22 = _b[1]; + var _a6 = directionToPosition(_this.view.viewBBox, bbox, direction3), x1 = _a6[0], y1 = _a6[1]; + var _b = directionToPosition(_this.layoutBBox, bbox, direction3), x22 = _b[0], y22 = _b[1]; var x6 = 0; var y5 = 0; - if (direction5.startsWith("top") || direction5.startsWith("bottom")) { + if (direction3.startsWith("top") || direction3.startsWith("bottom")) { x6 = x1; y5 = y22; } else { @@ -69232,10 +75515,10 @@ var Legend = function(_super) { y5 = y1; } component2.setLocation({ x: x6 + padding3[3], y: y5 + padding3[0] }); - _this.layoutBBox = _this.layoutBBox.cut(bbox, direction5); + _this.layoutBBox = _this.layoutBBox.cut(bbox, direction3); }); }; - Legend2.prototype.update = function() { + Legend4.prototype.update = function() { var _this = this; this.option = this.view.getOptions().legends; var updated = {}; @@ -69246,7 +75529,7 @@ var Legend = function(_super) { var cfg = void 0; var legendOption = getLegendOption(_this.option, scale12.field); if (legendOption !== false) { - if (get_default(legendOption, "custom")) { + if ((0, import_util264.get)(legendOption, "custom")) { cfg = _this.getCategoryCfg(geometry35, attr, scale12, legendOption, true); } else { if (scale12.isLinear) { @@ -69271,7 +75554,7 @@ var Legend = function(_super) { } } }; - if (get_default(this.option, "custom")) { + if ((0, import_util264.get)(this.option, "custom")) { var id = "global-custom"; var existCo = this.getComponentById(id); if (existCo) { @@ -69284,12 +75567,12 @@ var Legend = function(_super) { if (component2) { component2.init(); var layer = LAYER.FORE; - var direction5 = getDirection(this.option); + var direction3 = getDirection(this.option); this.components.push({ id, component: component2, layer, - direction: direction5, + direction: direction3, type: COMPONENT_TYPE.LEGEND, extra: void 0 }); @@ -69300,7 +75583,7 @@ var Legend = function(_super) { this.loopLegends(eachLegend); } var components = []; - each_default(this.getComponents(), function(co) { + (0, import_util264.each)(this.getComponents(), function(co) { if (updated[co.id]) { components.push(co); } else { @@ -69309,32 +75592,32 @@ var Legend = function(_super) { }); this.components = components; }; - Legend2.prototype.clear = function() { + Legend4.prototype.clear = function() { _super.prototype.clear.call(this); this.container.clear(); }; - Legend2.prototype.destroy = function() { + Legend4.prototype.destroy = function() { _super.prototype.destroy.call(this); this.container.remove(true); }; - Legend2.prototype.getGeometries = function(view) { + Legend4.prototype.getGeometries = function(view) { var _this = this; var geometries = view.geometries; - each_default(view.views, function(v3) { + (0, import_util264.each)(view.views, function(v3) { geometries = geometries.concat(_this.getGeometries(v3)); }); return geometries; }; - Legend2.prototype.loopLegends = function(doEach) { + Legend4.prototype.loopLegends = function(doEach) { var isRootView = this.view.getRootView() === this.view; if (!isRootView) { return; } var geometries = this.getGeometries(this.view); var looped = {}; - each_default(geometries, function(geometry35) { + (0, import_util264.each)(geometries, function(geometry35) { var attributes = geometry35.getGroupAttributes(); - each_default(attributes, function(attr) { + (0, import_util264.each)(attributes, function(attr) { var scale12 = attr.getScale(attr.type); if (!scale12 || scale12.type === "identity" || looped[scale12.field]) { return; @@ -69344,13 +75627,13 @@ var Legend = function(_super) { }); }); }; - Legend2.prototype.createFieldLegend = function(geometry35, attr, scale12) { + Legend4.prototype.createFieldLegend = function(geometry35, attr, scale12) { var component2; var legendOption = getLegendOption(this.option, scale12.field); var layer = LAYER.FORE; - var direction5 = getDirection(legendOption); + var direction3 = getDirection(legendOption); if (legendOption !== false) { - if (get_default(legendOption, "custom")) { + if ((0, import_util264.get)(legendOption, "custom")) { component2 = this.createCustomLegend(geometry35, attr, scale12, legendOption); } else { if (scale12.isLinear) { @@ -69366,30 +75649,30 @@ var Legend = function(_super) { id: this.getId(scale12.field), component: component2, layer, - direction: direction5, + direction: direction3, type: COMPONENT_TYPE.LEGEND, extra: { scale: scale12 } }; } }; - Legend2.prototype.createCustomLegend = function(geometry35, attr, scale12, legendOption) { + Legend4.prototype.createCustomLegend = function(geometry35, attr, scale12, legendOption) { var cfg = this.getCategoryCfg(geometry35, attr, scale12, legendOption, true); return new CategoryLegend(cfg); }; - Legend2.prototype.createContinuousLegend = function(geometry35, attr, scale12, legendOption) { + Legend4.prototype.createContinuousLegend = function(geometry35, attr, scale12, legendOption) { var cfg = this.getContinuousCfg(geometry35, attr, scale12, omit(legendOption, ["value"])); return new ContinuousLegend(cfg); }; - Legend2.prototype.createCategoryLegend = function(geometry35, attr, scale12, legendOption) { + Legend4.prototype.createCategoryLegend = function(geometry35, attr, scale12, legendOption) { var cfg = this.getCategoryCfg(geometry35, attr, scale12, legendOption); return new CategoryLegend(cfg); }; - Legend2.prototype.getContinuousCfg = function(geometry35, attr, scale12, legendOption) { + Legend4.prototype.getContinuousCfg = function(geometry35, attr, scale12, legendOption) { var ticks = scale12.getTicks(); - var containMin = find_default(ticks, function(tick) { + var containMin = (0, import_util264.find)(ticks, function(tick) { return tick.value === 0; }); - var containMax = find_default(ticks, function(tick) { + var containMax = (0, import_util264.find)(ticks, function(tick) { return tick.value === 1; }); var items = ticks.map(function(tick) { @@ -69422,8 +75705,8 @@ var Legend = function(_super) { return a4.value - b10.value; }); var attrLegendCfg = { - min: head(items).value, - max: last(items).value, + min: (0, import_util264.head)(items).value, + max: (0, import_util264.last)(items).value, colors: [], rail: { type: attr.type @@ -69443,11 +75726,11 @@ var Legend = function(_super) { }); } var container2 = this.container; - var direction5 = getDirection(legendOption); - var layout6 = getLegendLayout(direction5); - var title = get_default(legendOption, "title"); + var direction3 = getDirection(legendOption); + var layout6 = getLegendLayout(direction3); + var title = (0, import_util264.get)(legendOption, "title"); if (title) { - title = deep_mix_default({ + title = (0, import_util264.deepMix)({ text: getName(scale12) }, title); } @@ -69457,55 +75740,55 @@ var Legend = function(_super) { attrLegendCfg.animateOption = DEFAULT_ANIMATE_CFG; return this.mergeLegendCfg(attrLegendCfg, legendOption, "continuous"); }; - Legend2.prototype.getCategoryCfg = function(geometry35, attr, scale12, legendOption, custom12) { + Legend4.prototype.getCategoryCfg = function(geometry35, attr, scale12, legendOption, custom12) { var container2 = this.container; - var direction5 = get_default(legendOption, "position", DIRECTION.BOTTOM); - var legendTheme = getLegendThemeCfg(this.view.getTheme(), direction5); - var themeMarker = get_default(legendTheme, ["marker"]); - var userMarker = get_default(legendOption, "marker"); - var layout6 = getLegendLayout(direction5); - var themePageNavigator = get_default(legendTheme, ["pageNavigator"]); - var userPageNavigator = get_default(legendOption, "pageNavigator"); + var direction3 = (0, import_util264.get)(legendOption, "position", DIRECTION.BOTTOM); + var legendTheme = getLegendThemeCfg(this.view.getTheme(), direction3); + var themeMarker = (0, import_util264.get)(legendTheme, ["marker"]); + var userMarker = (0, import_util264.get)(legendOption, "marker"); + var layout6 = getLegendLayout(direction3); + var themePageNavigator = (0, import_util264.get)(legendTheme, ["pageNavigator"]); + var userPageNavigator = (0, import_util264.get)(legendOption, "pageNavigator"); var items = custom12 ? getCustomLegendItems(themeMarker, userMarker, legendOption.items) : getLegendItems(this.view, geometry35, attr, themeMarker, userMarker); - var title = get_default(legendOption, "title"); + var title = (0, import_util264.get)(legendOption, "title"); if (title) { - title = deep_mix_default({ + title = (0, import_util264.deepMix)({ text: scale12 ? getName(scale12) : "" }, title); } - var maxWidthRatio = get_default(legendOption, "maxWidthRatio"); - var maxHeightRatio = get_default(legendOption, "maxHeightRatio"); + var maxWidthRatio = (0, import_util264.get)(legendOption, "maxWidthRatio"); + var maxHeightRatio = (0, import_util264.get)(legendOption, "maxHeightRatio"); var baseCfg = this.getCategoryLegendSizeCfg(layout6, maxWidthRatio, maxHeightRatio); baseCfg.container = container2; baseCfg.layout = layout6; baseCfg.items = items; baseCfg.title = title; baseCfg.animateOption = DEFAULT_ANIMATE_CFG; - baseCfg.pageNavigator = deep_mix_default({}, themePageNavigator, userPageNavigator); - var categoryCfg = this.mergeLegendCfg(baseCfg, legendOption, direction5); + baseCfg.pageNavigator = (0, import_util264.deepMix)({}, themePageNavigator, userPageNavigator); + var categoryCfg = this.mergeLegendCfg(baseCfg, legendOption, direction3); if (categoryCfg.reversed) { categoryCfg.items.reverse(); } - var maxItemWidth = get_default(categoryCfg, "maxItemWidth"); + var maxItemWidth = (0, import_util264.get)(categoryCfg, "maxItemWidth"); if (maxItemWidth && maxItemWidth <= 1) { categoryCfg.maxItemWidth = this.view.viewBBox.width * maxItemWidth; } return categoryCfg; }; - Legend2.prototype.mergeLegendCfg = function(baseCfg, legendOption, direction5) { - var position2 = direction5.split("-")[0]; + Legend4.prototype.mergeLegendCfg = function(baseCfg, legendOption, direction3) { + var position2 = direction3.split("-")[0]; var themeObject = getLegendThemeCfg(this.view.getTheme(), position2); - return deep_mix_default({}, themeObject, baseCfg, legendOption); + return (0, import_util264.deepMix)({}, themeObject, baseCfg, legendOption); }; - Legend2.prototype.getId = function(key) { + Legend4.prototype.getId = function(key) { return "".concat(this.name, "-").concat(key); }; - Legend2.prototype.getComponentById = function(id) { - return find_default(this.components, function(co) { + Legend4.prototype.getComponentById = function(id) { + return (0, import_util264.find)(this.components, function(co) { return co.id === id; }); }; - Legend2.prototype.getCategoryLegendSizeCfg = function(layout6, maxWidthRatio, maxHeightRatio) { + Legend4.prototype.getCategoryLegendSizeCfg = function(layout6, maxWidthRatio, maxHeightRatio) { if (maxWidthRatio === void 0) { maxWidthRatio = COMPONENT_MAX_VIEW_PERCENTAGE; } @@ -69521,27 +75804,28 @@ var Legend = function(_super) { maxHeight: vh * maxHeightRatio }; }; - return Legend2; + return Legend4; }(Controller); var legend_default = Legend; // node_modules/@antv/g2/esm/chart/controller/slider.js +var import_util265 = __toModule(require_lib()); var Slider2 = function(_super) { __extends(Slider3, _super); function Slider3(view) { var _this = _super.call(this, view) || this; - _this.onChangeFn = noop_default; + _this.onChangeFn = import_util265.noop; _this.resetMeasure = function() { _this.clear(); }; _this.onValueChange = function(v3) { - var min7 = v3[0], max8 = v3[1]; - _this.start = min7; - _this.end = max8; - _this.changeViewData(min7, max8); + var min13 = v3[0], max15 = v3[1]; + _this.start = min13; + _this.end = max15; + _this.changeViewData(min13, max15); }; _this.container = _this.view.getLayer(LAYER.FORE).addGroup(); - _this.onChangeFn = throttle_default(_this.onValueChange, 20, { + _this.onChangeFn = (0, import_util265.throttle)(_this.onValueChange, 20, { leading: true }); _this.width = 0; @@ -69566,12 +75850,12 @@ var Slider2 = function(_super) { Slider3.prototype.render = function() { this.option = this.view.getOptions().slider; var _a6 = this.getSliderCfg(), start = _a6.start, end2 = _a6.end; - if (is_nil_default(this.start)) { + if ((0, import_util265.isNil)(this.start)) { this.start = start; this.end = end2; } var viewData = this.view.getOptions().data; - if (this.option && !is_empty_default(viewData)) { + if (this.option && !(0, import_util265.isEmpty)(viewData)) { if (this.slider) { this.slider = this.updateSlider(); } else { @@ -69647,13 +75931,13 @@ var Slider2 = function(_super) { y: 0, width: this.view.coordinateBBox.width }; - if (is_object_default(this.option)) { - var trendCfg = __assign({ data: this.getData() }, get_default(this.option, "trendCfg", {})); - cfg = deep_mix_default({}, cfg, this.getThemeOptions(), this.option); + if ((0, import_util265.isObject)(this.option)) { + var trendCfg = __assign({ data: this.getData() }, (0, import_util265.get)(this.option, "trendCfg", {})); + cfg = (0, import_util265.deepMix)({}, cfg, this.getThemeOptions(), this.option); cfg = __assign(__assign({}, cfg), { trendCfg }); } - cfg.start = clamp_default(Math.min(is_nil_default(cfg.start) ? 0 : cfg.start, is_nil_default(cfg.end) ? 1 : cfg.end), 0, 1); - cfg.end = clamp_default(Math.max(is_nil_default(cfg.start) ? 0 : cfg.start, is_nil_default(cfg.end) ? 1 : cfg.end), 0, 1); + cfg.start = (0, import_util265.clamp)(Math.min((0, import_util265.isNil)(cfg.start) ? 0 : cfg.start, (0, import_util265.isNil)(cfg.end) ? 1 : cfg.end), 0, 1); + cfg.end = (0, import_util265.clamp)(Math.max((0, import_util265.isNil)(cfg.start) ? 0 : cfg.start, (0, import_util265.isNil)(cfg.end) ? 1 : cfg.end), 0, 1); return cfg; }; Slider3.prototype.getData = function() { @@ -69675,26 +75959,26 @@ var Slider2 = function(_super) { }; Slider3.prototype.getThemeOptions = function() { var theme4 = this.view.getTheme(); - return get_default(theme4, ["components", "slider", "common"], {}); + return (0, import_util265.get)(theme4, ["components", "slider", "common"], {}); }; - Slider3.prototype.getMinMaxText = function(min7, max8) { + Slider3.prototype.getMinMaxText = function(min13, max15) { var data3 = this.view.getOptions().data; var xScale = this.view.getXScale(); var isHorizontal2 = true; - var values2 = values_of_key_default(data3, xScale.field); + var values4 = (0, import_util265.valuesOfKey)(data3, xScale.field); if (xScale.isLinear) { - values2 = values2.sort(); + values4 = values4.sort(); } - var xValues = isHorizontal2 ? values2 : values2.reverse(); - var dataSize = size(data3); + var xValues = isHorizontal2 ? values4 : values4.reverse(); + var dataSize = (0, import_util265.size)(data3); if (!xScale || !dataSize) { return {}; } - var xTickCount = size(xValues); - var minIndex = Math.floor(min7 * (xTickCount - 1)); - var maxIndex = Math.floor(max8 * (xTickCount - 1)); - var minText = get_default(xValues, [minIndex]); - var maxText = get_default(xValues, [maxIndex]); + var xTickCount = (0, import_util265.size)(xValues); + var minIndex = Math.floor(min13 * (xTickCount - 1)); + var maxIndex = Math.floor(max15 * (xTickCount - 1)); + var minText = (0, import_util265.get)(xValues, [minIndex]); + var maxText = (0, import_util265.get)(xValues, [maxIndex]); var formatter = this.getSliderCfg().formatter; if (formatter) { minText = formatter(minText, data3[minIndex], minIndex); @@ -69705,22 +75989,22 @@ var Slider2 = function(_super) { maxText }; }; - Slider3.prototype.changeViewData = function(min7, max8) { + Slider3.prototype.changeViewData = function(min13, max15) { var data3 = this.view.getOptions().data; var xScale = this.view.getXScale(); - var dataSize = size(data3); + var dataSize = (0, import_util265.size)(data3); if (!xScale || !dataSize) { return; } var isHorizontal2 = true; - var values2 = values_of_key_default(data3, xScale.field); - var xScaleValues = this.view.getXScale().isLinear ? values2.sort(function(a4, b10) { + var values4 = (0, import_util265.valuesOfKey)(data3, xScale.field); + var xScaleValues = this.view.getXScale().isLinear ? values4.sort(function(a4, b10) { return Number(a4) - Number(b10); - }) : values2; + }) : values4; var xValues = isHorizontal2 ? xScaleValues : xScaleValues.reverse(); - var xTickCount = size(xValues); - var minIndex = Math.floor(min7 * (xTickCount - 1)); - var maxIndex = Math.floor(max8 * (xTickCount - 1)); + var xTickCount = (0, import_util265.size)(xValues); + var minIndex = Math.floor(min13 * (xTickCount - 1)); + var maxIndex = Math.floor(max15 * (xTickCount - 1)); this.view.filter(xScale.field, function(value2, datum) { var idx = xValues.indexOf(value2); return idx > -1 ? isBetween2(idx, minIndex, maxIndex) : true; @@ -69744,6 +76028,7 @@ var Slider2 = function(_super) { var slider_default = Slider2; // node_modules/@antv/g2/esm/chart/controller/scrollbar.js +var import_util266 = __toModule(require_lib()); var DEFAULT_PADDING = 0; var DEFAULT_SIZE = 8; var DEFAULT_CATEGORY_SIZE = 32; @@ -69752,14 +76037,14 @@ var Scrollbar2 = function(_super) { __extends(Scrollbar3, _super); function Scrollbar3(view) { var _this = _super.call(this, view) || this; - _this.onChangeFn = noop_default; + _this.onChangeFn = import_util266.noop; _this.resetMeasure = function() { _this.clear(); }; _this.onValueChange = function(_a6) { var ratio = _a6.ratio; var animate = _this.getValidScrollbarCfg().animate; - _this.ratio = clamp_default(ratio, 0, 1); + _this.ratio = (0, import_util266.clamp)(ratio, 0, 1); var originalAnimate = _this.view.getOptions().animate; if (!animate) { _this.view.animate(false); @@ -69768,7 +76053,7 @@ var Scrollbar2 = function(_super) { _this.view.animate(originalAnimate); }; _this.container = _this.view.getLayer(LAYER.FORE).addGroup(); - _this.onChangeFn = throttle_default(_this.onValueChange, 20, { + _this.onChangeFn = (0, import_util266.throttle)(_this.onValueChange, 20, { leading: true }); _this.trackLen = 0; @@ -69875,14 +76160,14 @@ var Scrollbar2 = function(_super) { }; Scrollbar3.prototype.getThemeOptions = function() { var theme4 = this.view.getTheme(); - return get_default(theme4, ["components", "scrollbar", "common"], {}); + return (0, import_util266.get)(theme4, ["components", "scrollbar", "common"], {}); }; Scrollbar3.prototype.getScrollbarTheme = function(style) { - var theme4 = get_default(this.view.getTheme(), ["components", "scrollbar"]); + var theme4 = (0, import_util266.get)(this.view.getTheme(), ["components", "scrollbar"]); var _a6 = style || {}, thumbHighlightColor = _a6.thumbHighlightColor, restStyles = __rest(_a6, ["thumbHighlightColor"]); return { - default: deep_mix_default({}, get_default(theme4, ["default", "style"], {}), restStyles), - hover: deep_mix_default({}, get_default(theme4, ["hover", "style"], {}), { thumbColor: thumbHighlightColor }) + default: (0, import_util266.deepMix)({}, (0, import_util266.get)(theme4, ["default", "style"], {}), restStyles), + hover: (0, import_util266.deepMix)({}, (0, import_util266.get)(theme4, ["hover", "style"], {}), { thumbColor: thumbHighlightColor }) }; }; Scrollbar3.prototype.measureScrollbar = function() { @@ -69901,7 +76186,7 @@ var Scrollbar2 = function(_super) { this.yScalesCfg = yScales; }; Scrollbar3.prototype.getScrollRange = function() { - var startIdx = Math.floor((this.cnt - this.step) * clamp_default(this.ratio, 0, 1)); + var startIdx = Math.floor((this.cnt - this.step) * (0, import_util266.clamp)(this.ratio, 0, 1)); var endIdx = Math.min(startIdx + this.step - 1, this.cnt - 1); return [startIdx, endIdx]; }; @@ -69910,10 +76195,10 @@ var Scrollbar2 = function(_super) { var startIdx = _a6[0], endIdx = _a6[1]; var type2 = this.getValidScrollbarCfg().type; var isHorizontal2 = type2 !== "vertical"; - var values2 = values_of_key_default(this.data, this.xScaleCfg.field); - var xScaleValues = this.view.getXScale().isLinear ? values2.sort(function(a4, b10) { + var values4 = (0, import_util266.valuesOfKey)(this.data, this.xScaleCfg.field); + var xScaleValues = this.view.getXScale().isLinear ? values4.sort(function(a4, b10) { return Number(a4) - Number(b10); - }) : values2; + }) : values4; var xValues = isHorizontal2 ? xScaleValues : xScaleValues.reverse(); this.yScalesCfg.forEach(function(cfg) { _this.view.scale(cfg.field, { @@ -69963,8 +76248,8 @@ var Scrollbar2 = function(_super) { } var xScale = this.view.getXScale(); var data3 = this.getScrollbarData(); - var values2 = values_of_key_default(data3, xScale.field); - return size(values2); + var values4 = (0, import_util266.valuesOfKey)(data3, xScale.field); + return (0, import_util266.size)(values4); }; Scrollbar3.prototype.getScrollbarComponentCfg = function() { var _a6 = this.view, coordinateBBox = _a6.coordinateBBox, viewBBox = _a6.viewBBox; @@ -69981,7 +76266,7 @@ var Scrollbar2 = function(_super) { var step = this.getStep(); var cnt = this.getCnt(); var trackLen = isHorizontal2 ? coordinateBBox.width - paddingLeft - paddingRight : coordinateBBox.height - paddingTop - paddingBottom; - var thumbLen = Math.max(trackLen * clamp_default(step / cnt, 0, 1), MIN_THUMB_LENGTH); + var thumbLen = Math.max(trackLen * (0, import_util266.clamp)(step / cnt, 0, 1), MIN_THUMB_LENGTH); return __assign(__assign({}, this.getThemeOptions()), { x: position2.x, y: position2.y, size: isHorizontal2 ? height : width2, isHorizontal: isHorizontal2, trackLen, thumbLen, thumbOffset: 0, theme: this.getScrollbarTheme(style) }); }; Scrollbar3.prototype.getValidScrollbarCfg = function() { @@ -69994,10 +76279,10 @@ var Scrollbar2 = function(_super) { animate: true, style: {} }; - if (is_object_default(this.option)) { + if ((0, import_util266.isObject)(this.option)) { cfg = __assign(__assign({}, cfg), this.option); } - if (!is_object_default(this.option) || !this.option.padding) { + if (!(0, import_util266.isObject)(this.option) || !this.option.padding) { cfg.padding = cfg.type === "horizontal" ? [DEFAULT_PADDING, 0, DEFAULT_PADDING, 0] : [0, DEFAULT_PADDING, 0, DEFAULT_PADDING]; } return cfg; @@ -70016,6 +76301,7 @@ var Scrollbar2 = function(_super) { var scrollbar_default = Scrollbar2; // node_modules/@antv/g2/esm/interaction/action/active-region.js +var import_util267 = __toModule(require_lib()); var DEFAULT_REGION_PATH_STYLE = { fill: "#CCD6EC", opacity: 0.3 @@ -70023,31 +76309,31 @@ var DEFAULT_REGION_PATH_STYLE = { function getItemsOfView(view, point2, tooltipCfg) { var items = findItemsFromViewRecurisive(view, point2, tooltipCfg); if (items.length) { - items = flatten_default(items); + items = (0, import_util267.flatten)(items); for (var _i = 0, items_1 = items; _i < items_1.length; _i++) { var itemArr = items_1[_i]; for (var _a6 = 0, itemArr_1 = itemArr; _a6 < itemArr_1.length; _a6++) { var item = itemArr_1[_a6]; var _b = item.mappingData, x6 = _b.x, y5 = _b.y; - item.x = is_array_default(x6) ? x6[x6.length - 1] : x6; - item.y = is_array_default(y5) ? y5[y5.length - 1] : y5; + item.x = (0, import_util267.isArray)(x6) ? x6[x6.length - 1] : x6; + item.y = (0, import_util267.isArray)(y5) ? y5[y5.length - 1] : y5; } } var shared = tooltipCfg.shared; if (shared === false && items.length > 1) { var snapItem = items[0]; - var min7 = Math.abs(point2.y - snapItem[0].y); + var min13 = Math.abs(point2.y - snapItem[0].y); for (var _c = 0, items_2 = items; _c < items_2.length; _c++) { var aItem = items_2[_c]; var yDistance = Math.abs(point2.y - aItem[0].y); - if (yDistance <= min7) { + if (yDistance <= min13) { snapItem = aItem; - min7 = yDistance; + min13 = yDistance; } } items = [snapItem]; } - return uniq(flatten_default(items)); + return (0, import_util267.uniq)((0, import_util267.flatten)(items)); } return []; } @@ -70064,7 +76350,7 @@ var ActiveRegion = function(_super) { x: ev.x, y: ev.y }, tooltipCfg); - if (is_equal_default(tooltipItems, this.items)) { + if ((0, import_util267.isEqual)(tooltipItems, this.items)) { return; } this.items = tooltipItems; @@ -70073,7 +76359,7 @@ var ActiveRegion = function(_super) { var xValue_1 = tooltipItems[0].data[xField_1]; var elements_1 = []; var geometries = view.geometries; - each_default(geometries, function(geometry35) { + (0, import_util267.each)(geometries, function(geometry35) { if (geometry35.type === "interval" || geometry35.type === "schema") { var result = geometry35.getElementsBy(function(ele) { var eleData = ele.getData(); @@ -70087,7 +76373,7 @@ var ActiveRegion = function(_super) { var firstBBox_1 = elements_1[0].shape.getCanvasBBox(); var lastBBox_1 = elements_1[0].shape.getCanvasBBox(); var groupBBox_1 = firstBBox_1; - each_default(elements_1, function(ele) { + (0, import_util267.each)(elements_1, function(ele) { var bbox = ele.shape.getCanvasBBox(); if (coordinate_1.isTransposed) { if (bbox.minY < firstBBox_1.minY) { @@ -70114,8 +76400,8 @@ var ActiveRegion = function(_super) { if (coordinate_1.isRect) { var xScale = view.getXScale(); var _a6 = args || {}, appendRatio = _a6.appendRatio, appendWidth = _a6.appendWidth; - if (is_nil_default(appendWidth)) { - appendRatio = is_nil_default(appendRatio) ? xScale.isLinear ? 0 : 0.25 : appendRatio; + if ((0, import_util267.isNil)(appendWidth)) { + appendRatio = (0, import_util267.isNil)(appendRatio) ? xScale.isLinear ? 0 : 0.25 : appendRatio; appendWidth = coordinate_1.isTransposed ? appendRatio * lastBBox_1.height : appendRatio * firstBBox_1.width; } var minX = void 0; @@ -70141,8 +76427,8 @@ var ActiveRegion = function(_super) { ["Z"] ]; } else { - var firstElement = head(elements_1); - var lastElement = last(elements_1); + var firstElement = (0, import_util267.head)(elements_1); + var lastElement = (0, import_util267.last)(elements_1); var startAngle = getAngle3(firstElement.getModel(), coordinate_1).startAngle; var endAngle = getAngle3(lastElement.getModel(), coordinate_1).endAngle; var center2 = coordinate_1.getCenter(); @@ -70154,7 +76440,7 @@ var ActiveRegion = function(_super) { this.regionPath.attr("path", path); this.regionPath.show(); } else { - var style = get_default(args, "style", DEFAULT_REGION_PATH_STYLE); + var style = (0, import_util267.get)(args, "style", DEFAULT_REGION_PATH_STYLE); this.regionPath = backgroundGroup.addShape({ type: "path", name: "active-region", @@ -70182,7 +76468,11 @@ var ActiveRegion = function(_super) { }(base_default12); var active_region_default = ActiveRegion; +// node_modules/@antv/g2/esm/interaction/action/component/tooltip/sibling.js +var import_util269 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/interaction/action/component/tooltip/geometry.js +var import_util268 = __toModule(require_lib()); var TooltipAction = function(_super) { __extends(TooltipAction2, _super); function TooltipAction2() { @@ -70200,11 +76490,11 @@ var TooltipAction = function(_super) { } var lastTimeStamp = this.timeStamp; var timeStamp = +new Date(); - var showDelay = get_default(context.view.getOptions(), "tooltip.showDelay", 16); + var showDelay = (0, import_util268.get)(context.view.getOptions(), "tooltip.showDelay", 16); if (timeStamp - lastTimeStamp > showDelay) { var preLoc = this.location; var curLoc = { x: ev.x, y: ev.y }; - if (!preLoc || !is_equal_default(preLoc, curLoc)) { + if (!preLoc || !(0, import_util268.isEqual)(preLoc, curLoc)) { this.showTooltip(view, curLoc); } this.timeStamp = timeStamp; @@ -70242,14 +76532,14 @@ var SiblingTooltip = function(_super) { } SiblingTooltip2.prototype.showTooltip = function(view, point2) { var siblings = getSilbings(view); - each_default(siblings, function(sibling) { + (0, import_util269.each)(siblings, function(sibling) { var siblingPoint = getSiblingPoint(view, sibling, point2); sibling.showTooltip(siblingPoint); }); }; SiblingTooltip2.prototype.hideTooltip = function(view) { var siblings = getSilbings(view); - each_default(siblings, function(sibling) { + (0, import_util269.each)(siblings, function(sibling) { sibling.hideTooltip(); }); }; @@ -70258,6 +76548,7 @@ var SiblingTooltip = function(_super) { var sibling_default = SiblingTooltip; // node_modules/@antv/g2/esm/interaction/action/component/tooltip/ellipsis-text.js +var import_util271 = __toModule(require_lib()); var EllipsisText = function(_super) { __extends(EllipsisText2, _super); function EllipsisText2() { @@ -70277,7 +76568,7 @@ var EllipsisText = function(_super) { if (timeStamp - lastTimeStamp > 16) { var preLoc = this.location; var curLoc = { x: ev.x, y: ev.y }; - if (!preLoc || !is_equal_default(preLoc, curLoc)) { + if (!preLoc || !(0, import_util271.isEqual)(preLoc, curLoc)) { this.showTooltip(curLoc); } this.timeStamp = timeStamp; @@ -70313,13 +76604,13 @@ var EllipsisText = function(_super) { end: { x: canvas.get("width"), y: canvas.get("height") } }; var theme4 = view.getTheme(); - var tooltipStyles = get_default(theme4, ["components", "tooltip", "domStyles"], {}); + var tooltipStyles = (0, import_util271.get)(theme4, ["components", "tooltip", "domStyles"], {}); var tooltip10 = new HtmlTooltip({ parent: canvas.get("el").parentNode, region, visible: false, crosshairs: null, - domStyles: __assign({}, deep_mix_default({}, tooltipStyles, (_a6 = {}, _a6[css_const_exports.CONTAINER_CLASS] = { "max-width": "50%" }, _a6[css_const_exports.TITLE_CLASS] = { "word-break": "break-all" }, _a6))) + domStyles: __assign({}, (0, import_util271.deepMix)({}, tooltipStyles, (_a6 = {}, _a6[css_const_exports.CONTAINER_CLASS] = { "max-width": "50%" }, _a6[css_const_exports.TITLE_CLASS] = { "word-break": "break-all" }, _a6))) }); tooltip10.init(); tooltip10.setCapture(false); @@ -70329,7 +76620,11 @@ var EllipsisText = function(_super) { }(base_default12); var ellipsis_text_default = EllipsisText; +// node_modules/@antv/g2/esm/interaction/action/element/state.js +var import_util274 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/interaction/action/element/state-base.js +var import_util272 = __toModule(require_lib()); var StateBase = function(_super) { __extends(StateBase2, _super); function StateBase2() { @@ -70353,7 +76648,7 @@ var StateBase = function(_super) { StateBase2.prototype.clearViewState = function(view) { var _this = this; var elements = getElementsByState(view, this.stateName); - each_default(elements, function(el) { + (0, import_util272.each)(elements, function(el) { _this.setElementState(el, false); }); }; @@ -70363,7 +76658,7 @@ var state_base_default = StateBase; // node_modules/@antv/g2/esm/interaction/action/element/state.js function getItem(shape) { - return get_default(shape.get("delegateObject"), "item"); + return (0, import_util274.get)(shape.get("delegateObject"), "item"); } var ElementState = function(_super) { __extends(ElementState2, _super); @@ -70392,11 +76687,11 @@ var ElementState = function(_super) { var view = this.context.view; var scale12 = getScaleByField(view, field6); var value2 = getElementValue(element, field6); - return !is_nil_default(value2) && item.name === scale12.getText(value2); + return !(0, import_util274.isNil)(value2) && item.name === scale12.getText(value2); }; ElementState2.prototype.setElementsStateByItem = function(elements, field6, item, enable) { var _this = this; - each_default(elements, function(el) { + (0, import_util274.each)(elements, function(el) { if (_this.isMathItem(el, field6, item)) { el.setState(_this.stateName, enable); } @@ -70452,6 +76747,7 @@ var ElementActive = function(_super) { var active_default = ElementActive; // node_modules/@antv/g2/esm/interaction/action/element/link-by-color.js +var import_util277 = __toModule(require_lib()); var LinkByColor = function(_super) { __extends(LinkByColor2, _super); function LinkByColor2() { @@ -70487,14 +76783,14 @@ var LinkByColor = function(_super) { ]; return path; }; - LinkByColor2.prototype.addLinkShape = function(group2, element, nextElement, activeStyle) { + LinkByColor2.prototype.addLinkShape = function(group3, element, nextElement, activeStyle) { var style = { opacity: 0.4, fill: element.shape.attr("fill") }; - group2.addShape({ + group3.addShape({ type: "path", - attrs: __assign(__assign({}, deep_mix_default({}, style, is_function_default(activeStyle) ? activeStyle(style, element) : activeStyle)), { path: this.getLinkPath(element, nextElement) }) + attrs: __assign(__assign({}, (0, import_util277.deepMix)({}, style, (0, import_util277.isFunction)(activeStyle) ? activeStyle(style, element) : activeStyle)), { path: this.getLinkPath(element, nextElement) }) }); }; LinkByColor2.prototype.linkByElement = function(element, activeStyle) { @@ -70511,7 +76807,7 @@ var LinkByColor = function(_super) { var group_1 = linkGroup.addGroup(); this.cache[value2] = group_1; var count_1 = elements_1.length; - each_default(elements_1, function(el, index2) { + (0, import_util277.each)(elements_1, function(el, index2) { if (index2 < count_1 - 1) { var nextEl = elements_1[index2 + 1]; _this.addLinkShape(group_1, el, nextEl, activeStyle); @@ -70566,6 +76862,7 @@ var LinkByColor = function(_super) { var link_by_color_default = LinkByColor; // node_modules/@antv/g2/esm/interaction/action/element/range-state.js +var import_util278 = __toModule(require_lib()); var ElementRangeState = function(_super) { __extends(ElementRangeState2, _super); function ElementRangeState2() { @@ -70636,7 +76933,7 @@ var ElementRangeState = function(_super) { }); var xFiled = view.getXScale().field; var yField = view.getYScales()[0].field; - each_default(siblings, function(sibling) { + (0, import_util278.each)(siblings, function(sibling) { var allElements = getElements(sibling); var effectElements = allElements.filter(function(el) { var record = el.getModel().data; @@ -70650,7 +76947,7 @@ var ElementRangeState = function(_super) { var view = this.context.view; var siblings = getSilbings(view); if (isMask(this.context)) { - each_default(siblings, function(sibling) { + (0, import_util278.each)(siblings, function(sibling) { var allElements = getElements(sibling); var effectElements = getSiblingMaskElements(_this.context, sibling, 10); if (effectElements && effectElements.length) { @@ -70663,7 +76960,7 @@ var ElementRangeState = function(_super) { }; ElementRangeState2.prototype.setElementsState = function(elements, enable, allElements) { var _this = this; - each_default(allElements, function(el) { + (0, import_util278.each)(allElements, function(el) { if (!elements.includes(el)) { _this.setElementState(el, false); } else { @@ -70680,7 +76977,7 @@ var ElementRangeState = function(_super) { var view = this.context.view; if (this.effectSiblings) { var siblings = getSilbings(view); - each_default(siblings, function(sibling) { + (0, import_util278.each)(siblings, function(sibling) { _this.clearViewState(sibling); }); } else { @@ -70758,12 +77055,16 @@ var ElementSingleActive = function(_super) { }(single_state_default); var single_active_default = ElementSingleActive; +// node_modules/@antv/g2/esm/interaction/action/element/highlight.js +var import_util283 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/interaction/action/element/highlight-util.js +var import_util281 = __toModule(require_lib()); var STATUS_UNACTIVE = "inactive"; var STATUS_ACTIVE = "active"; function clearHighlight(view) { var elements = getElements(view); - each_default(elements, function(el) { + (0, import_util281.each)(elements, function(el) { if (el.hasState(STATUS_ACTIVE)) { el.setState(STATUS_ACTIVE, false); } @@ -70773,7 +77074,7 @@ function clearHighlight(view) { }); } function setHighlightBy(elements, callback, enable) { - each_default(elements, function(el) { + (0, import_util281.each)(elements, function(el) { if (callback(el)) { if (el.hasState(STATUS_UNACTIVE)) { el.setState(STATUS_UNACTIVE, false); @@ -70818,13 +77119,13 @@ var ElementHighlight = function(_super) { ElementHighlight2.prototype.setHighlightBy = function(elements, callback, enable) { var _this = this; if (enable) { - each_default(elements, function(el) { + (0, import_util283.each)(elements, function(el) { _this.setElementHighlight(el, callback); }); } else { var activeElements = getElementsByState(this.context.view, STATUS_ACTIVE2); var allCancel_1 = true; - each_default(activeElements, function(el) { + (0, import_util283.each)(activeElements, function(el) { if (!callback(el)) { allCancel_1 = false; return false; @@ -70833,7 +77134,7 @@ var ElementHighlight = function(_super) { if (allCancel_1) { this.clear(); } else { - each_default(elements, function(el) { + (0, import_util283.each)(elements, function(el) { if (callback(el)) { if (el.hasState(STATUS_ACTIVE2)) { el.setState(STATUS_ACTIVE2, false); @@ -71043,6 +77344,7 @@ var ElementSingleSelected = function(_super) { var single_selected_default = ElementSingleSelected; // node_modules/@antv/g2/esm/interaction/action/component/list-state.js +var import_util288 = __toModule(require_lib()); var ListState = function(_super) { __extends(ListState2, _super); function ListState2() { @@ -71067,7 +77369,7 @@ var ListState = function(_super) { var view = this.context.view; var components = getComponents(view); var rst = []; - each_default(components, function(component2) { + (0, import_util288.each)(components, function(component2) { if (component2.isList() && _this.allowSetStateByElement(component2)) { rst.push(component2); } @@ -71080,7 +77382,7 @@ var ListState = function(_super) { ListState2.prototype.clearAllComponentsState = function() { var _this = this; var components = this.getAllowComponents(); - each_default(components, function(component2) { + (0, import_util288.each)(components, function(component2) { component2.clearItemsState(_this.stateName); }); }; @@ -71122,7 +77424,7 @@ var ListState = function(_super) { var element = getCurrentElement(this.context); if (element) { var components = this.getAllowComponents(); - each_default(components, function(component3) { + (0, import_util288.each)(components, function(component3) { _this.setStateByElement(component3, element, enable); }); } else { @@ -71138,7 +77440,7 @@ var ListState = function(_super) { ListState2.prototype.setItemsState = function(list, name, enable) { var _this = this; var items = list.getItems(); - each_default(items, function(item) { + (0, import_util288.each)(items, function(item) { if (item.name === name) { _this.setItemState(list, item, enable); } @@ -71188,12 +77490,16 @@ var ListActive = function(_super) { }(list_state_default); var list_active_default = ListActive; +// node_modules/@antv/g2/esm/interaction/action/component/list-highlight.js +var import_util292 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/interaction/action/component/list-highlight-util.js +var import_util291 = __toModule(require_lib()); var STATUS_UNACTIVE3 = "inactive"; var STATUS_ACTIVE3 = "active"; function clearList(list) { var items = list.getItems(); - each_default(items, function(item) { + (0, import_util291.each)(items, function(item) { if (list.hasState(item, STATUS_ACTIVE3)) { list.setItemState(item, STATUS_ACTIVE3, false); } @@ -71228,7 +77534,7 @@ var ListHighlight = function(_super) { ListHighlight2.prototype.setHighlightBy = function(list, callback, enable) { var items = list.getItems(); if (enable) { - each_default(items, function(item) { + (0, import_util292.each)(items, function(item) { if (callback(item)) { if (list.hasState(item, STATUS_UNACTIVE4)) { list.setItemState(item, STATUS_UNACTIVE4, false); @@ -71241,7 +77547,7 @@ var ListHighlight = function(_super) { } else { var activeItems = list.getItemsByState(STATUS_ACTIVE4); var allCancel_1 = true; - each_default(activeItems, function(item) { + (0, import_util292.each)(activeItems, function(item) { if (!callback(item)) { allCancel_1 = false; return false; @@ -71250,7 +77556,7 @@ var ListHighlight = function(_super) { if (allCancel_1) { this.clear(); } else { - each_default(items, function(item) { + (0, import_util292.each)(items, function(item) { if (callback(item)) { if (list.hasState(item, STATUS_ACTIVE4)) { list.setItemState(item, STATUS_ACTIVE4, false); @@ -71270,7 +77576,7 @@ var ListHighlight = function(_super) { clearList(triggerInfo.list); } else { var components = this.getAllowComponents(); - each_default(components, function(component2) { + (0, import_util292.each)(components, function(component2) { component2.clearItemsState(STATUS_ACTIVE4); component2.clearItemsState(STATUS_UNACTIVE4); }); @@ -71311,6 +77617,7 @@ var ListUnchecked = function(_super) { var list_unchecked_default = ListUnchecked; // node_modules/@antv/g2/esm/interaction/action/component/list-checked.js +var import_util293 = __toModule(require_lib()); var STATUS_UNCHECKED = "unchecked"; var STATUS_CHECKED = "checked"; var ListChecked = function(_super) { @@ -71328,7 +77635,7 @@ var ListChecked = function(_super) { ListChecked2.prototype.setCheckedBy = function(list, callback, enable) { var items = list.getItems(); if (enable) { - each_default(items, function(item) { + (0, import_util293.each)(items, function(item) { if (callback(item)) { if (list.hasState(item, STATUS_UNCHECKED)) { list.setItemState(item, STATUS_UNCHECKED, false); @@ -71344,7 +77651,7 @@ var ListChecked = function(_super) { var triggerInfo = this.getTriggerListInfo(); if (triggerInfo && triggerInfo.item) { var list_1 = triggerInfo.list, item = triggerInfo.item; - var allChecked = !some_default(list_1.getItems(), function(t4) { + var allChecked = !(0, import_util293.some)(list_1.getItems(), function(t4) { return list_1.hasState(t4, STATUS_UNCHECKED); }); if (allChecked || list_1.hasState(item, STATUS_UNCHECKED)) { @@ -71359,7 +77666,7 @@ var ListChecked = function(_super) { }; ListChecked2.prototype.reset = function() { var components = this.getAllowComponents(); - each_default(components, function(component2) { + (0, import_util293.each)(components, function(component2) { component2.clearItemsState(STATUS_CHECKED); component2.clearItemsState(STATUS_UNCHECKED); }); @@ -71417,11 +77724,15 @@ var ListFocus = function(_super) { var list_focus_default = ListFocus; // node_modules/@antv/g2/esm/interaction/action/component/list-radio.js +var import_util294 = __toModule(require_lib()); var STATUS_SHOW = "showRadio"; +var TIP_ID = "legend-radio-tip"; var ListRadio = function(_super) { __extends(ListRadio2, _super); function ListRadio2() { - return _super !== null && _super.apply(this, arguments) || this; + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.timeStamp = 0; + return _this; } ListRadio2.prototype.show = function() { var triggerInfo = this.getTriggerListInfo(); @@ -71437,11 +77748,85 @@ var ListRadio = function(_super) { list.setItemState(item, STATUS_SHOW, false); } }; + ListRadio2.prototype.destroy = function() { + _super.prototype.destroy.call(this); + this.tooltip && this.tooltip.destroy(); + }; + ListRadio2.prototype.showTip = function() { + var context = this.context; + var ev = context.event; + var lastTimeStamp = this.timeStamp; + var timeStamp = +new Date(); + var target = this.context.event.target; + if (timeStamp - lastTimeStamp > 16 && target.get("name") === "legend-item-radio") { + var preLoc = this.location; + var curLoc = { x: ev.x, y: ev.y }; + this.timeStamp = timeStamp; + this.location = curLoc; + if (!preLoc || !(0, import_util294.isEqual)(preLoc, curLoc)) { + this.showTooltip(curLoc); + } + } + }; + ListRadio2.prototype.hideTip = function() { + this.hideTooltip(); + this.location = null; + }; + ListRadio2.prototype.showTooltip = function(curLoc) { + var context = this.context; + var ev = context.event; + var target = ev.target; + if (target && target.get("tip")) { + if (!this.tooltip) { + this.renderTooltip(); + } + var _a6 = context.view.getCanvas().get("el").getBoundingClientRect(), offsetX = _a6.x, offsetY = _a6.y; + this.tooltip.update(__assign(__assign({ title: target.get("tip") }, curLoc), { x: curLoc.x + offsetX, y: curLoc.y + offsetY })); + this.tooltip.show(); + } + }; + ListRadio2.prototype.hideTooltip = function() { + this.tooltip && this.tooltip.hide(); + }; + ListRadio2.prototype.renderTooltip = function() { + var _a6; + var tooltipStyles = (_a6 = {}, _a6[css_const_exports.CONTAINER_CLASS] = { + padding: "6px 8px", + transform: "translate(-50%, -80%)", + background: "rgba(0,0,0,0.75)", + color: "#fff", + "border-radius": "2px", + "z-index": 100 + }, _a6[css_const_exports.TITLE_CLASS] = { + "font-size": "12px", + "line-height": "14px", + "margin-bottom": 0, + "word-break": "break-all" + }, _a6); + if (document.getElementById(TIP_ID)) { + document.body.removeChild(document.getElementById(TIP_ID)); + } + var tooltip10 = new HtmlTooltip({ + parent: document.body, + region: null, + visible: false, + crosshairs: null, + domStyles: tooltipStyles, + containerId: TIP_ID + }); + tooltip10.init(); + tooltip10.setCapture(false); + this.tooltip = tooltip10; + }; return ListRadio2; }(list_state_default); var list_radio_default = ListRadio; +// node_modules/@antv/g2/esm/interaction/action/mask/circle.js +var import_util296 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/interaction/action/mask/base.js +var import_util295 = __toModule(require_lib()); var MaskBase = function(_super) { __extends(MaskBase2, _super); function MaskBase2() { @@ -71517,7 +77902,7 @@ var MaskBase = function(_super) { var dx = currentPoint.x - preMovePoint.x; var dy = currentPoint.y - preMovePoint.y; var points = this.points; - each_default(points, function(point2) { + (0, import_util295.each)(points, function(point2) { point2.x += dx; point2.y += dy; }); @@ -71526,7 +77911,7 @@ var MaskBase = function(_super) { this.preMovePoint = currentPoint; }; MaskBase2.prototype.updateMask = function(maskStyle) { - var attrs = deep_mix_default({}, this.getMaskAttrs(), maskStyle); + var attrs = (0, import_util295.deepMix)({}, this.getMaskAttrs(), maskStyle); this.maskShape.attr(attrs); }; MaskBase2.prototype.moveEnd = function() { @@ -71576,7 +77961,7 @@ var CircleMask = function(_super) { } CircleMask2.prototype.getMaskAttrs = function() { var points = this.points; - var currentPoint = last(this.points); + var currentPoint = (0, import_util296.last)(this.points); var r4 = 0; var x6 = 0; var y5 = 0; @@ -71596,7 +77981,11 @@ var CircleMask = function(_super) { }(base_default17); var circle_default8 = CircleMask; +// node_modules/@antv/g2/esm/interaction/action/mask/dim-rect.js +var import_util299 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/interaction/action/mask/rect.js +var import_util298 = __toModule(require_lib()); var RectMask = function(_super) { __extends(RectMask2, _super); function RectMask2() { @@ -71607,8 +77996,8 @@ var RectMask = function(_super) { RectMask2.prototype.getRegion = function() { var points = this.points; return { - start: head(points), - end: last(points) + start: (0, import_util298.head)(points), + end: (0, import_util298.last)(points) }; }; RectMask2.prototype.getMaskAttrs = function() { @@ -71630,8 +78019,8 @@ var rect_default5 = RectMask; // node_modules/@antv/g2/esm/interaction/action/mask/dim-rect.js function clampPoint(point2) { - point2.x = clamp_default(point2.x, 0, 1); - point2.y = clamp_default(point2.y, 0, 1); + point2.x = (0, import_util299.clamp)(point2.x, 0, 1); + point2.y = (0, import_util299.clamp)(point2.y, 0, 1); } var DimRect = function(_super) { __extends(DimRect2, _super); @@ -71647,8 +78036,8 @@ var DimRect = function(_super) { var points = this.points; var dim = this.dim; var coord2 = this.context.view.getCoordinate(); - var normalStart = coord2.invert(head(points)); - var normalEnd = coord2.invert(last(points)); + var normalStart = coord2.invert((0, import_util299.head)(points)); + var normalEnd = coord2.invert((0, import_util299.last)(points)); if (this.inPlot) { clampPoint(normalStart); clampPoint(normalEnd); @@ -71682,6 +78071,7 @@ var DimRect = function(_super) { var dim_rect_default = DimRect; // node_modules/@antv/g2/esm/interaction/action/mask/path.js +var import_util300 = __toModule(require_lib()); var PathMask = function(_super) { __extends(PathMask2, _super); function PathMask2() { @@ -71691,7 +78081,7 @@ var PathMask = function(_super) { var points = this.points; var path = []; if (points.length) { - each_default(points, function(point2, index2) { + (0, import_util300.each)(points, function(point2, index2) { if (index2 === 0) { path.push(["M", point2.x, point2.y]); } else { @@ -71794,19 +78184,20 @@ var CursorAction = function(_super) { var cursor_default = CursorAction; // node_modules/@antv/g2/esm/interaction/action/data/filter.js +var import_util302 = __toModule(require_lib()); var DataFilter = function(_super) { __extends(DataFilter2, _super); function DataFilter2() { return _super !== null && _super.apply(this, arguments) || this; } - DataFilter2.prototype.filterView = function(view, field6, filter2) { + DataFilter2.prototype.filterView = function(view, field6, filter17) { var _this = this; if (view.getScaleByField(field6)) { - view.filter(field6, filter2); + view.filter(field6, filter17); } if (view.views && view.views.length) { - each_default(view.views, function(subView) { - _this.filterView(subView, field6, filter2); + (0, import_util302.each)(view.views, function(subView) { + _this.filterView(subView, field6, filter17); }); } }; @@ -71845,24 +78236,24 @@ var DataFilter = function(_super) { }; return DataFilter2; }(base_default12); -var filter_default2 = DataFilter; +var filter_default = DataFilter; // node_modules/@antv/g2/esm/interaction/action/data/range-filter.js function getFilter(scale12, dim, point1, point2) { - var min7 = Math.min(point1[dim], point2[dim]); - var max8 = Math.max(point1[dim], point2[dim]); + var min13 = Math.min(point1[dim], point2[dim]); + var max15 = Math.max(point1[dim], point2[dim]); var _a6 = scale12.range, rangeMin = _a6[0], rangeMax = _a6[1]; - if (min7 < rangeMin) { - min7 = rangeMin; + if (min13 < rangeMin) { + min13 = rangeMin; } - if (max8 > rangeMax) { - max8 = rangeMax; + if (max15 > rangeMax) { + max15 = rangeMax; } - if (min7 === rangeMax && max8 === rangeMax) { + if (min13 === rangeMax && max15 === rangeMax) { return null; } - var minValue = scale12.invert(min7); - var maxValue = scale12.invert(max8); + var minValue = scale12.invert(min13); + var maxValue = scale12.invert(max15); if (scale12.isCategory) { var minIndex = scale12.values.indexOf(minValue); var maxIndex = scale12.values.indexOf(maxValue); @@ -71928,13 +78319,13 @@ var RangeFilter = function(_super) { var normalStart = coord2.invert(startPoint); if (this.hasDim("x")) { var xScale = view.getXScale(); - var filter2 = getFilter(xScale, "x", normalCurrent, normalStart); - this.filterView(view, xScale.field, filter2); + var filter17 = getFilter(xScale, "x", normalCurrent, normalStart); + this.filterView(view, xScale.field, filter17); } if (this.hasDim("y")) { var yScale = view.getYScales()[0]; - var filter2 = getFilter(yScale, "y", normalCurrent, normalStart); - this.filterView(view, yScale.field, filter2); + var filter17 = getFilter(yScale, "y", normalCurrent, normalStart); + this.filterView(view, yScale.field, filter17); } this.reRender(view, { source: EVENTS3.FILTER }); view.emit(EVENTS3.AFTER_FILTER, event_default.fromData(view, EVENTS3.AFTER_FILTER, payload)); @@ -71957,8 +78348,8 @@ var RangeFilter = function(_super) { this.reRender(view, { source: EVENTS3.RESET }); view.emit(EVENTS3.AFTER_RESET, event_default.fromData(view, EVENTS3.AFTER_RESET, {})); }; - RangeFilter2.prototype.filterView = function(view, field6, filter2) { - view.filter(field6, filter2); + RangeFilter2.prototype.filterView = function(view, field6, filter17) { + view.filter(field6, filter17); }; RangeFilter2.prototype.reRender = function(view, payload) { view.render(true, payload); @@ -71968,20 +78359,21 @@ var RangeFilter = function(_super) { var range_filter_default = RangeFilter; // node_modules/@antv/g2/esm/interaction/action/data/sibling-filter.js +var import_util305 = __toModule(require_lib()); var SiblingFilter = function(_super) { __extends(SiblingFilter3, _super); function SiblingFilter3() { return _super !== null && _super.apply(this, arguments) || this; } - SiblingFilter3.prototype.filterView = function(view, field6, filter2) { + SiblingFilter3.prototype.filterView = function(view, field6, filter17) { var siblings = getSilbings(view); - each_default(siblings, function(sibling) { - sibling.filter(field6, filter2); + (0, import_util305.each)(siblings, function(sibling) { + sibling.filter(field6, filter17); }); }; SiblingFilter3.prototype.reRender = function(view) { var siblings = getSilbings(view); - each_default(siblings, function(sibling) { + (0, import_util305.each)(siblings, function(sibling) { sibling.render(true); }); }; @@ -71990,6 +78382,7 @@ var SiblingFilter = function(_super) { var sibling_filter_default = SiblingFilter; // node_modules/@antv/g2/esm/interaction/action/element/filter.js +var import_util307 = __toModule(require_lib()); var ElementFilter = function(_super) { __extends(ElementFilter2, _super); function ElementFilter2() { @@ -72002,7 +78395,7 @@ var ElementFilter = function(_super) { if (isMask(this.context)) { var maskElements_1 = getMaskedElements(this.context, 10); if (maskElements_1) { - each_default(elements, function(el) { + (0, import_util307.each)(elements, function(el) { if (maskElements_1.includes(el)) { el.show(); } else { @@ -72020,7 +78413,7 @@ var ElementFilter = function(_super) { var names_1 = unCheckedItems.map(function(item) { return item.name; }); - each_default(elements, function(el) { + (0, import_util307.each)(elements, function(el) { var value2 = getElementValue(el, field_1); var text = scale_1.getText(value2); if (names_1.indexOf(text) >= 0) { @@ -72033,7 +78426,7 @@ var ElementFilter = function(_super) { } else if (isSlider(delegateObject)) { var range = component2.getValue(); var min_1 = range[0], max_1 = range[1]; - each_default(elements, function(el) { + (0, import_util307.each)(elements, function(el) { var value2 = getElementValue(el, field_1); if (value2 >= min_1 && value2 <= max_1) { el.show(); @@ -72046,7 +78439,7 @@ var ElementFilter = function(_super) { }; ElementFilter2.prototype.clear = function() { var elements = getElements(this.context.view); - each_default(elements, function(el) { + (0, import_util307.each)(elements, function(el) { el.show(); }); }; @@ -72055,9 +78448,10 @@ var ElementFilter = function(_super) { }; return ElementFilter2; }(base_default12); -var filter_default3 = ElementFilter; +var filter_default2 = ElementFilter; // node_modules/@antv/g2/esm/interaction/action/element/sibling-filter.js +var import_util309 = __toModule(require_lib()); var SiblingFilter2 = function(_super) { __extends(SiblingFilter3, _super); function SiblingFilter3() { @@ -72086,9 +78480,9 @@ var SiblingFilter2 = function(_super) { return el.getModel().data; }); var siblings = getSilbings(view); - each_default(siblings, function(sibling) { + (0, import_util309.each)(siblings, function(sibling) { var elements = getElements(sibling); - each_default(elements, function(el) { + (0, import_util309.each)(elements, function(el) { var record = el.getModel().data; if (isInRecords(records, record, xFiled, yField)) { el.show(); @@ -72102,11 +78496,11 @@ var SiblingFilter2 = function(_super) { var _this = this; var view = this.context.view; var siblings = getSilbings(view); - each_default(siblings, function(sibling) { + (0, import_util309.each)(siblings, function(sibling) { var maskElements = getSiblingMaskElements(_this.context, sibling, 10); var elements = getElements(sibling); if (maskElements) { - each_default(elements, function(el) { + (0, import_util309.each)(elements, function(el) { if (maskElements.includes(el)) { el.show(); } else { @@ -72118,9 +78512,9 @@ var SiblingFilter2 = function(_super) { }; SiblingFilter3.prototype.reset = function() { var siblings = getSilbings(this.context.view); - each_default(siblings, function(sibling) { + (0, import_util309.each)(siblings, function(sibling) { var elements = getElements(sibling); - each_default(elements, function(el) { + (0, import_util309.each)(elements, function(el) { el.show(); }); }); @@ -72130,6 +78524,7 @@ var SiblingFilter2 = function(_super) { var sibling_filter_default2 = SiblingFilter2; // node_modules/@antv/g2/esm/interaction/action/view/button.js +var import_util311 = __toModule(require_lib()); var PADDING_RIGHT = 10; var PADDING_TOP = 5; var ButtonAction = function(_super) { @@ -72160,33 +78555,33 @@ var ButtonAction = function(_super) { return _this; } ButtonAction3.prototype.getButtonCfg = function() { - return deep_mix_default(this.buttonCfg, this.cfg); + return (0, import_util311.deepMix)(this.buttonCfg, this.cfg); }; ButtonAction3.prototype.drawButton = function() { var config = this.getButtonCfg(); - var group2 = this.context.view.foregroundGroup.addGroup({ + var group3 = this.context.view.foregroundGroup.addGroup({ name: config.name }); - var textShape = group2.addShape({ + var textShape = group3.addShape({ type: "text", name: "button-text", attrs: __assign({ text: config.text }, config.textStyle) }); var textBBox = textShape.getBBox(); var padding3 = parsePadding(config.padding); - var buttonShape = group2.addShape({ + var buttonShape = group3.addShape({ type: "rect", name: "button-rect", attrs: __assign({ x: textBBox.x - padding3[3], y: textBBox.y - padding3[0], width: textBBox.width + padding3[1] + padding3[3], height: textBBox.height + padding3[0] + padding3[2] }, config.style) }); buttonShape.toBack(); - group2.on("mouseenter", function() { + group3.on("mouseenter", function() { buttonShape.attr(config.activeStyle); }); - group2.on("mouseleave", function() { + group3.on("mouseleave", function() { buttonShape.attr(config.style); }); - this.buttonGroup = group2; + this.buttonGroup = group3; }; ButtonAction3.prototype.resetPosition = function() { var view = this.context.view; @@ -72336,6 +78731,9 @@ var Move = function(_super) { }(base_default12); var move_default = Move; +// node_modules/@antv/g2/esm/interaction/action/view/scale-translate.js +var import_util314 = __toModule(require_lib()); + // node_modules/@antv/g2/esm/interaction/action/view/scale-transform.js var DIM_X = "x"; var DIM_Y = "y"; @@ -72392,10 +78790,10 @@ var ScaleTranslate2 = function(_super) { this.startPoint = this.context.getCurrentPoint(); this.starting = true; var dims = this.dims; - each_default(dims, function(dim) { + (0, import_util314.each)(dims, function(dim) { var scale12 = _this.getScale(dim); - var min7 = scale12.min, max8 = scale12.max, values2 = scale12.values; - _this.startCache[dim] = { min: min7, max: max8, values: values2 }; + var min13 = scale12.min, max15 = scale12.max, values4 = scale12.values; + _this.startCache[dim] = { min: min13, max: max15, values: values4 }; }); }; ScaleTranslate4.prototype.end = function() { @@ -72417,7 +78815,7 @@ var ScaleTranslate2 = function(_super) { var dy = noramlCurrent.y - normalStart.y; var view = this.context.view; var dims = this.dims; - each_default(dims, function(dim) { + (0, import_util314.each)(dims, function(dim) { _this.translateDim(dim, { x: dx * -1, y: dy * -1 }); }); view.render(true); @@ -72432,20 +78830,20 @@ var ScaleTranslate2 = function(_super) { }; ScaleTranslate4.prototype.translateLinear = function(dim, scale12, normalPoint) { var view = this.context.view; - var _a6 = this.startCache[dim], min7 = _a6.min, max8 = _a6.max; - var range = max8 - min7; + var _a6 = this.startCache[dim], min13 = _a6.min, max15 = _a6.max; + var range = max15 - min13; var d3 = normalPoint[dim] * range; if (!this.cacheScaleDefs[dim]) { this.cacheScaleDefs[dim] = { nice: scale12.nice, - min: min7, - max: max8 + min: min13, + max: max15 }; } view.scale(scale12.field, { nice: false, - min: min7 + d3, - max: max8 + d3 + min: min13 + d3, + max: max15 + d3 }); }; ScaleTranslate4.prototype.reset = function() { @@ -72458,6 +78856,7 @@ var ScaleTranslate2 = function(_super) { var scale_translate_default = ScaleTranslate2; // node_modules/@antv/g2/esm/interaction/action/view/scale-zoom.js +var import_util315 = __toModule(require_lib()); var ScaleTranslate3 = function(_super) { __extends(ScaleTranslate4, _super); function ScaleTranslate4() { @@ -72471,7 +78870,7 @@ var ScaleTranslate3 = function(_super) { ScaleTranslate4.prototype.zoom = function(scale12) { var _this = this; var dims = this.dims; - each_default(dims, function(dim) { + (0, import_util315.each)(dims, function(dim) { _this.zoomDim(dim, scale12); }); this.context.view.render(true); @@ -72498,17 +78897,17 @@ var ScaleTranslate3 = function(_super) { } var scaleDef = this.cacheScaleDefs[dim]; var range = scaleDef.max - scaleDef.min; - var min7 = scale12.min, max8 = scale12.max; + var min13 = scale12.min, max15 = scale12.max; var d3 = dRatio * range; - var toMin = min7 - d3; - var toMax = max8 + d3; + var toMin = min13 - d3; + var toMax = max15 + d3; var curRange = toMax - toMin; var scaled = curRange / range; if (toMax > toMin && scaled < 100 && scaled > 0.01) { view.scale(scale12.field, { nice: false, - min: min7 - d3, - max: max8 + d3 + min: min13 - d3, + max: max15 + d3 }); } }; @@ -72517,6 +78916,7 @@ var ScaleTranslate3 = function(_super) { var scale_zoom_default = ScaleTranslate3; // node_modules/@antv/g2/esm/interaction/action/view/mousewheel-scroll.js +var import_util316 = __toModule(require_lib()); function isWheelDown(event) { var wheelEvent = event.gEvent.originalEvent; return wheelEvent.deltaY > 0; @@ -72536,13 +78936,13 @@ var MousewheelScroll = function(_super) { var scrollbarController = view.getController("scrollbar"); var xScale = view.getXScale(); var data3 = view.getOptions().data; - var dataSize = size(values_of_key_default(data3, xScale.field)); - var step = size(xScale.values); + var dataSize = (0, import_util316.size)((0, import_util316.valuesOfKey)(data3, xScale.field)); + var step = (0, import_util316.size)(xScale.values); var currentRatio = scrollbarController.getValue(); var currentStart = Math.floor((dataSize - step) * currentRatio); var nextStart = currentStart + (isWheelDown(event) ? wheelDelta : -wheelDelta); var correction = wheelDelta / (dataSize - step) / 1e4; - var nextRatio = clamp_default(nextStart / (dataSize - step) + correction, 0, 1); + var nextRatio = (0, import_util316.clamp)(nextStart / (dataSize - step) + correction, 0, 1); scrollbarController.setValue(nextRatio); }; return MousewheelScroll2; @@ -72646,14 +79046,14 @@ registerAction("circle-mask", circle_default8); registerAction("path-mask", path_default6); registerAction("smooth-path-mask", smooth_path_default); registerAction("cursor", cursor_default); -registerAction("data-filter", filter_default2); +registerAction("data-filter", filter_default); registerAction("brush", range_filter_default); registerAction("brush-x", range_filter_default, { dims: ["x"] }); registerAction("brush-y", range_filter_default, { dims: ["y"] }); registerAction("sibling-filter", sibling_filter_default); registerAction("sibling-x-filter", sibling_filter_default); registerAction("sibling-y-filter", sibling_filter_default); -registerAction("element-filter", filter_default3); +registerAction("element-filter", filter_default2); registerAction("element-sibling-filter", sibling_filter_default2); registerAction("element-sibling-filter-record", sibling_filter_default2, { byRecord: true }); registerAction("view-drag", drag_default); @@ -72911,6 +79311,14 @@ registerInteraction("legend-filter", { }, action: ["list-unchecked:toggle", "data-filter:filter", "list-radio:show"] }, + { + trigger: "legend-item-radio:mouseenter", + action: ["list-radio:showTip"] + }, + { + trigger: "legend-item-radio:mouseleave", + action: ["list-radio:hideTip"] + }, { trigger: "legend-item-radio:click", action: ["list-focus:toggle", "data-filter:filter", "list-radio:show"] @@ -72966,6 +79374,9 @@ registerInteraction("plot-mousewheel-scroll", { start: [{ trigger: "plot:mousewheel", action: "mousewheel-scroll:scroll" }] }); +// node_modules/@antv/g2plot/esm/core/locale.js +var import_util325 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/utils/flow.js function flow() { var flows = []; @@ -72980,10 +79391,10 @@ function flow() { } // node_modules/@antv/g2plot/esm/utils/pick.js -function pick(obj, keys2) { +function pick4(obj, keys6) { var r4 = {}; if (obj !== null && typeof obj === "object") { - keys2.forEach(function(key) { + keys6.forEach(function(key) { var v3 = obj[key]; if (v3 !== void 0) { r4[key] = v3; @@ -72994,11 +79405,12 @@ function pick(obj, keys2) { } // node_modules/@antv/g2plot/esm/utils/template.js +var import_util317 = __toModule(require_lib()); function template(source, data3) { if (!data3) { return source; } - return reduce_default(data3, function(r4, v3, k4) { + return (0, import_util317.reduce)(data3, function(r4, v3, k4) { return r4.replace(new RegExp("{\\s*" + k4 + "\\s*}", "g"), v3); }, source); } @@ -73044,29 +79456,30 @@ function getContainerSize(ele) { } // node_modules/@antv/g2plot/esm/utils/geometry.js +var import_util318 = __toModule(require_lib()); function findGeometry(view, type2) { return view.geometries.find(function(g4) { return g4.type === type2; }); } function getAllElements(view) { - return reduce_default(view.geometries, function(r4, geometry35) { + return (0, import_util318.reduce)(view.geometries, function(r4, geometry35) { return r4.concat(geometry35.elements); }, []); } function getAllElementsRecursively(view) { - if (get_default(view, ["views", "length"], 0) <= 0) { + if ((0, import_util318.get)(view, ["views", "length"], 0) <= 0) { return getAllElements(view); } - return reduce_default(view.views, function(ele, subView) { + return (0, import_util318.reduce)(view.views, function(ele, subView) { return ele.concat(getAllElementsRecursively(subView)); }, getAllElements(view)); } function getAllGeometriesRecursively(view) { - if (get_default(view, ["views", "length"], 0) <= 0) { + if ((0, import_util318.get)(view, ["views", "length"], 0) <= 0) { return view.geometries; } - return reduce_default(view.views, function(ele, subView) { + return (0, import_util318.reduce)(view.views, function(ele, subView) { return ele.concat(subView.geometries); }, view.geometries); } @@ -73088,8 +79501,9 @@ function getSiblingViews(view) { } // node_modules/@antv/g2plot/esm/utils/label.js +var import_util319 = __toModule(require_lib()); function transformLabel(labelOptions) { - if (!is_type_default(labelOptions, "Object")) { + if (!(0, import_util319.isType)(labelOptions, "Object")) { return labelOptions; } var label17 = __assign({}, labelOptions); @@ -73119,18 +79533,18 @@ var smoothBezier3 = function(points, smooth, isLoop, constraint) { var prevPoint; var nextPoint; var hasConstraint = !!constraint; - var min7; - var max8; + var min13; + var max15; if (hasConstraint) { - min7 = [Infinity, Infinity]; - max8 = [-Infinity, -Infinity]; + min13 = [Infinity, Infinity]; + max15 = [-Infinity, -Infinity]; for (var i4 = 0, l4 = points.length; i4 < l4; i4++) { var point2 = points[i4]; - min7 = vec2_exports.min([0, 0], min7, point2); - max8 = vec2_exports.max([0, 0], max8, point2); + min13 = vec2_exports.min([0, 0], min13, point2); + max15 = vec2_exports.max([0, 0], max15, point2); } - min7 = vec2_exports.min([0, 0], min7, constraint[0]); - max8 = vec2_exports.max([0, 0], max8, constraint[1]); + min13 = vec2_exports.min([0, 0], min13, constraint[0]); + max15 = vec2_exports.max([0, 0], max15, constraint[1]); } for (var i4 = 0, len5 = points.length; i4 < len5; i4++) { var point2 = points[i4]; @@ -73161,10 +79575,10 @@ var smoothBezier3 = function(points, smooth, isLoop, constraint) { var cp0 = vec2_exports.add([0, 0], point2, v1); var cp1 = vec2_exports.add([0, 0], point2, v22); if (hasConstraint) { - cp0 = vec2_exports.max([0, 0], cp0, min7); - cp0 = vec2_exports.min([0, 0], cp0, max8); - cp1 = vec2_exports.max([0, 0], cp1, min7); - cp1 = vec2_exports.min([0, 0], cp1, max8); + cp0 = vec2_exports.max([0, 0], cp0, min13); + cp0 = vec2_exports.min([0, 0], cp0, max15); + cp1 = vec2_exports.max([0, 0], cp1, min13); + cp1 = vec2_exports.min([0, 0], cp1, max15); } cps.push(cp0); cps.push(cp1); @@ -73225,19 +79639,19 @@ function getSplinePath2(points, isInCircle, constaint) { } // node_modules/@antv/g2plot/esm/utils/deep-assign.js -var MAX_MIX_LEVEL2 = 5; -var toString4 = {}.toString; +var MAX_MIX_LEVEL = 5; +var toString3 = {}.toString; var isType2 = function(value2, type2) { - return toString4.call(value2) === "[object " + type2 + "]"; + return toString3.call(value2) === "[object " + type2 + "]"; }; -var isArray = function(value2) { +var isArray49 = function(value2) { return isType2(value2, "Array"); }; -var isObjectLike2 = function(value2) { +var isObjectLike = function(value2) { return typeof value2 === "object" && value2 !== null; }; -var isPlainObject2 = function(value2) { - if (!isObjectLike2(value2) || !isType2(value2, "Object")) { +var isPlainObject4 = function(value2) { + if (!isObjectLike(value2) || !isType2(value2, "Object")) { return false; } var proto = value2; @@ -73248,15 +79662,15 @@ var isPlainObject2 = function(value2) { }; var deep = function(dist4, src, level, maxLevel) { level = level || 0; - maxLevel = maxLevel || MAX_MIX_LEVEL2; + maxLevel = maxLevel || MAX_MIX_LEVEL; for (var key in src) { if (Object.prototype.hasOwnProperty.call(src, key)) { var value2 = src[key]; if (!value2) { dist4[key] = value2; } else { - if (isPlainObject2(value2)) { - if (!isPlainObject2(dist4[key])) { + if (isPlainObject4(value2)) { + if (!isPlainObject4(dist4[key])) { dist4[key] = {}; } if (level < maxLevel) { @@ -73264,7 +79678,7 @@ var deep = function(dist4, src, level, maxLevel) { } else { dist4[key] = src[key]; } - } else if (isArray(value2)) { + } else if (isArray49(value2)) { dist4[key] = []; dist4[key] = dist4[key].concat(value2); } else { @@ -73297,6 +79711,7 @@ function kebabCase(word2) { } // node_modules/@antv/g2plot/esm/utils/statistic.js +var import_util320 = __toModule(require_lib()); function adapteStyle(style) { var styleObject = { overflow: "hidden", @@ -73316,15 +79731,15 @@ function adapteStyle(style) { "shadowOffsetY", "fill" ]; - if (get_default(style, "fill")) { + if ((0, import_util320.get)(style, "fill")) { styleObject["color"] = style["fill"]; } - var _a6 = pick(style, shapeStyleKeys), shadowColor = _a6.shadowColor, _b = _a6.shadowBlur, shadowBlur = _b === void 0 ? 0 : _b, _c = _a6.shadowOffsetX, shadowOffsetX = _c === void 0 ? 0 : _c, _d = _a6.shadowOffsetY, shadowOffsetY = _d === void 0 ? 0 : _d; + var _a6 = pick4(style, shapeStyleKeys), shadowColor = _a6.shadowColor, _b = _a6.shadowBlur, shadowBlur = _b === void 0 ? 0 : _b, _c = _a6.shadowOffsetX, shadowOffsetX = _c === void 0 ? 0 : _c, _d = _a6.shadowOffsetY, shadowOffsetY = _d === void 0 ? 0 : _d; styleObject["text-shadow"] = "" + [shadowColor, shadowOffsetX + "px", shadowOffsetY + "px", shadowBlur + "px"].join(" "); - var _e = pick(style, shapeStyleKeys), stroke = _e.stroke, _f = _e.lineWidth, lineWidth = _f === void 0 ? 0 : _f; + var _e = pick4(style, shapeStyleKeys), stroke = _e.stroke, _f = _e.lineWidth, lineWidth = _f === void 0 ? 0 : _f; styleObject["-webkit-text-stroke"] = "" + [lineWidth + "px", stroke].join(" "); - each_default(style, function(v3, k4) { - if (["fontSize"].includes(k4) && is_number_default(v3)) { + (0, import_util320.each)(style, function(v3, k4) { + if (["fontSize"].includes(k4) && (0, import_util320.isNumber)(v3)) { styleObject[kebabCase(k4)] = v3 + "px"; } else if (k4 && !shapeStyleKeys.includes(k4)) { styleObject[kebabCase(k4)] = "" + v3; @@ -73334,7 +79749,7 @@ function adapteStyle(style) { } function setStatisticContainerStyle(container2, style) { container2.style["pointer-events"] = "none"; - each_default(style, function(v3, k4) { + (0, import_util320.each)(style, function(v3, k4) { if (k4 && v3) { container2.style[k4] = v3; } @@ -73353,7 +79768,7 @@ var renderStatistic = function(chart, options, datum) { } else { transform18 = titleOpt ? "translate(-50%, 0)" : "translate(-50%, -50%)"; } - var style = is_function_default(option.style) ? option.style(datum) : option.style; + var style = (0, import_util320.isFunction)(option.style) ? option.style(datum) : option.style; chart.annotation().html(__assign({ position: ["50%", "50%"], html: function(container2, view) { @@ -73362,7 +79777,7 @@ var renderStatistic = function(chart, options, datum) { if (plotType === "pie" || plotType === "ring-progress") { containerW = coordinate11.getRadius() * coordinate11.innerRadius * 2; } else if (plotType === "liquid") { - var liquidShape = get_default(view.geometries, [0, "elements", 0, "shape"]); + var liquidShape = (0, import_util320.get)(view.geometries, [0, "elements", 0, "shape"]); if (liquidShape) { var path = liquidShape.find(function(t4) { return t4.get("name") === "wrap"; @@ -73382,10 +79797,10 @@ var renderStatistic = function(chart, options, datum) { if (option.formatter) { text = option.formatter(datum, filteredData); } - return text ? is_string_default(text) ? text : "" + text : "
    "; + return text ? (0, import_util320.isString)(text) ? text : "" + text : "
    "; }, key: (idx === 0 ? "top" : "bottom") + "-statistic" - }, pick(option, ["offsetX", "offsetY", "rotate", "style", "formatter"]))); + }, pick4(option, ["offsetX", "offsetY", "rotate", "style", "formatter"]))); }); }; var renderGaugeStatistic = function(chart, options, datum) { @@ -73395,14 +79810,14 @@ var renderGaugeStatistic = function(chart, options, datum) { if (!option) { return; } - var style = is_function_default(option.style) ? option.style(datum) : option.style; + var style = (0, import_util320.isFunction)(option.style) ? option.style(datum) : option.style; chart.annotation().html(__assign({ position: ["50%", "100%"], html: function(container2, view) { var coordinate11 = view.getCoordinate(); var polarCoord = view.views[0].getCoordinate(); var polarCenter = polarCoord.getCenter(); var polarRadius = polarCoord.getRadius(); var polarMaxY = Math.max(Math.sin(polarCoord.startAngle), Math.sin(polarCoord.endAngle)) * polarRadius; - var offsetY = polarCenter.y + polarMaxY - coordinate11.y.start - parseFloat(get_default(style, "fontSize", 0)); + var offsetY = polarCenter.y + polarMaxY - coordinate11.y.start - parseFloat((0, import_util320.get)(style, "fontSize", 0)); var containerWidth = coordinate11.getRadius() * coordinate11.innerRadius * 2; setStatisticContainerStyle(container2, __assign({ width: containerWidth + "px", transform: "translate(-50%, " + offsetY + "px)" }, adapteStyle(style))); var filteredData = view.getData(); @@ -73413,35 +79828,38 @@ var renderGaugeStatistic = function(chart, options, datum) { if (option.formatter) { text = option.formatter(datum, filteredData); } - return text ? is_string_default(text) ? text : "" + text : "
    "; - } }, pick(option, ["offsetX", "offsetY", "rotate", "style", "formatter"]))); + return text ? (0, import_util320.isString)(text) ? text : "" + text : "
    "; + } }, pick4(option, ["offsetX", "offsetY", "rotate", "style", "formatter"]))); }); }; +// node_modules/@antv/g2plot/esm/utils/measure-text.js +var import_util321 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/utils/context.js -var ctx3; +var ctx2; function getCanvasContext2() { - if (!ctx3) { - ctx3 = document.createElement("canvas").getContext("2d"); + if (!ctx2) { + ctx2 = document.createElement("canvas").getContext("2d"); } - return ctx3; + return ctx2; } // node_modules/@antv/g2plot/esm/utils/measure-text.js -var measureTextWidth2 = memoize_default(function(text, font) { +var measureTextWidth2 = (0, import_util321.memoize)(function(text, font) { if (font === void 0) { font = {}; } var fontSize = font.fontSize, _a6 = font.fontFamily, fontFamily = _a6 === void 0 ? "sans-serif" : _a6, fontWeight = font.fontWeight, fontStyle = font.fontStyle, fontVariant = font.fontVariant; - var ctx4 = getCanvasContext2(); - ctx4.font = [fontStyle, fontWeight, fontVariant, fontSize + "px", fontFamily].join(" "); - var metrics = ctx4.measureText(is_string_default(text) ? text : ""); + var ctx3 = getCanvasContext2(); + ctx3.font = [fontStyle, fontWeight, fontVariant, fontSize + "px", fontFamily].join(" "); + var metrics = ctx3.measureText((0, import_util321.isString)(text) ? text : ""); return metrics.width; }, function(text, font) { if (font === void 0) { font = {}; } - return __spreadArrays([text], values_default(font)).join(""); + return __spreadArrays([text], (0, import_util321.values)(font)).join(""); }); // node_modules/@antv/g2plot/esm/utils/number.js @@ -73449,24 +79867,25 @@ function isRealNumber(v3) { return typeof v3 === "number" && !isNaN(v3); } function isBetween3(value2, start, end2) { - var min7 = Math.min(start, end2); - var max8 = Math.max(start, end2); - return value2 >= min7 && value2 <= max8; + var min13 = Math.min(start, end2); + var max15 = Math.max(start, end2); + return value2 >= min13 && value2 <= max15; } // node_modules/@antv/g2plot/esm/utils/data.js +var import_util322 = __toModule(require_lib()); function adjustYMetaByZero(data3, field6) { if (!data3) return {}; var numberData = data3.filter(function(datum) { - var v3 = get_default(datum, [field6]); - return is_number_default(v3) && !isNaN(v3); + var v3 = (0, import_util322.get)(datum, [field6]); + return (0, import_util322.isNumber)(v3) && !isNaN(v3); }); var gtZero = numberData.every(function(datum) { - return get_default(datum, [field6]) >= 0; + return (0, import_util322.get)(datum, [field6]) >= 0; }); var ltZero = numberData.every(function(datum) { - return get_default(datum, [field6]) <= 0; + return (0, import_util322.get)(datum, [field6]) <= 0; }); if (gtZero) { return { min: 0 }; @@ -73493,7 +79912,7 @@ function transformDataToNodeLinkData(data3, sourceField, targetField, weightFiel var source = datum[sourceField]; var target = datum[targetField]; var weight = datum[weightField]; - var rawData = pick(datum, rawFields); + var rawData = pick4(datum, rawFields); if (!nodesMap[source]) { nodesMap[source] = __assign({ id: ++nodesIndex, name: source }, rawData); } @@ -73514,7 +79933,7 @@ function transformDataToNodeLinkData(data3, sourceField, targetField, weightFiel }; } function processIllegalData(data3, field6) { - var processData2 = filter_default(data3, function(d3) { + var processData2 = (0, import_util322.filter)(data3, function(d3) { var v3 = d3[field6]; return v3 === null || typeof v3 === "number" && !isNaN(v3); }); @@ -73523,11 +79942,12 @@ function processIllegalData(data3, field6) { } // node_modules/@antv/g2plot/esm/utils/padding.js +var import_util323 = __toModule(require_lib()); function normalPadding(padding3) { - if (is_number_default(padding3)) { + if ((0, import_util323.isNumber)(padding3)) { return [padding3, padding3, padding3, padding3]; } - if (is_array_default(padding3)) { + if ((0, import_util323.isArray)(padding3)) { var length_1 = padding3.length; if (length_1 === 1) { return [padding3[0], padding3[0], padding3[0], padding3[0]]; @@ -73582,6 +80002,7 @@ function resolveAllPadding(paddings) { } // node_modules/@antv/g2plot/esm/core/global.js +var import_util324 = __toModule(require_lib()); var GLOBAL = { locale: "en-US" }; @@ -73594,7 +80015,7 @@ function registerLocale(locale, localeObj) { function getLocale(locale) { return { get: function(key, obj) { - return template(get_default(LocaleMap[locale], key) || get_default(LocaleMap[GLOBAL.locale], key) || get_default(LocaleMap["en-US"], key) || key, obj); + return template((0, import_util325.get)(LocaleMap[locale], key) || (0, import_util325.get)(LocaleMap[GLOBAL.locale], key) || (0, import_util325.get)(LocaleMap["en-US"], key) || key, obj); } }; } @@ -73646,7 +80067,8 @@ var ZH_CN_LOCALE = { }; // node_modules/@antv/g2plot/esm/core/plot.js -var import_size_sensor = __toModule(require_lib()); +var import_util326 = __toModule(require_lib()); +var import_size_sensor = __toModule(require_lib2()); var SOURCE_ATTRIBUTE_NAME = "data-chart-source-type"; var PLOT_CONTAINER_OPTIONS = [ "padding", @@ -73689,7 +80111,7 @@ var Plot = function(_super) { }; Plot2.prototype.createG2 = function() { var _a6 = this.options, width2 = _a6.width, height = _a6.height, defaultInteractions = _a6.defaultInteractions; - this.chart = new chart_default(__assign(__assign(__assign(__assign({ container: this.container, autoFit: false }, this.getChartSize(width2, height)), { localRefresh: false }), pick(this.options, PLOT_CONTAINER_OPTIONS)), { defaultInteractions })); + this.chart = new chart_default(__assign(__assign(__assign(__assign({ container: this.container, autoFit: false }, this.getChartSize(width2, height)), { localRefresh: false }), pick4(this.options, PLOT_CONTAINER_OPTIONS)), { defaultInteractions })); this.container.setAttribute(SOURCE_ATTRIBUTE_NAME, "G2Plot"); }; Plot2.prototype.getChartSize = function(width2, height) { @@ -73732,7 +80154,7 @@ var Plot = function(_super) { status = true; } var elements = getAllElementsRecursively(this.chart); - each_default(elements, function(ele) { + (0, import_util326.each)(elements, function(ele) { if (condition(ele.getData())) { ele.setState(type2, status); } @@ -73741,10 +80163,10 @@ var Plot = function(_super) { Plot2.prototype.getStates = function() { var elements = getAllElementsRecursively(this.chart); var stateObjects = []; - each_default(elements, function(element) { + (0, import_util326.each)(elements, function(element) { var data3 = element.getData(); var states = element.getStates(); - each_default(states, function(state2) { + (0, import_util326.each)(states, function(state2) { stateObjects.push({ data: data3, state: state2, geometry: element.geometry, element }); }); }); @@ -73765,12 +80187,12 @@ var Plot = function(_super) { controller.clear(true); var _loop_1 = function(i5) { var annotation4 = current[i5]; - var findIndex2 = incoming.findIndex(function(item) { + var findIndex3 = incoming.findIndex(function(item) { return item.id && item.id === annotation4.id; }); - if (findIndex2 !== -1) { - annotation4 = deepAssign({}, annotation4, incoming[findIndex2]); - incoming.splice(findIndex2, 1); + if (findIndex3 !== -1) { + annotation4 = deepAssign({}, annotation4, incoming[findIndex3]); + incoming.splice(findIndex3, 1); } controller.annotation(annotation4); }; @@ -73844,6 +80266,12 @@ var Plot = function(_super) { return Plot2; }(esm_default); +// node_modules/@antv/g2plot/esm/plots/line/adaptor.js +var import_util336 = __toModule(require_lib()); + +// node_modules/@antv/g2plot/esm/adaptor/common.js +var import_util331 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/constant.js var AXIS_META_CONFIG_KEYS = [ "type", @@ -73863,6 +80291,9 @@ var AXIS_META_CONFIG_KEYS = [ "sync" ]; +// node_modules/@antv/g2plot/esm/adaptor/pattern.js +var import_util330 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/utils/pattern/util.js function getPixelRatio2() { return typeof window === "object" ? window === null || window === void 0 ? void 0 : window.devicePixelRatio : 2; @@ -73877,8 +80308,8 @@ function initCanvas(width2, height) { canvas.height = height * pixelRatio; canvas.style.width = width2 + "px"; canvas.style.height = height + "px"; - var ctx4 = canvas.getContext("2d"); - ctx4.scale(pixelRatio, pixelRatio); + var ctx3 = canvas.getContext("2d"); + ctx3.scale(pixelRatio, pixelRatio); return canvas; } function drawBackground(context, cfg, width2, height) { @@ -73892,8 +80323,8 @@ function drawBackground(context, cfg, width2, height) { context.fillRect(0, 0, width2, height); context.closePath(); } -function getUnitPatternSize(size2, padding3, isStagger) { - var unitSize = size2 + padding3; +function getUnitPatternSize(size14, padding3, isStagger) { + var unitSize = size14 + padding3; return isStagger ? unitSize * 2 : unitSize; } function getSymbolsPosition(unitSize, isStagger) { @@ -73930,13 +80361,13 @@ var defaultDotPatternCfg = { isStagger: true }; function drawDot(context, cfg, x6, y5) { - var size2 = cfg.size, fill = cfg.fill, lineWidth = cfg.lineWidth, stroke = cfg.stroke, fillOpacity = cfg.fillOpacity; + var size14 = cfg.size, fill = cfg.fill, lineWidth = cfg.lineWidth, stroke = cfg.stroke, fillOpacity = cfg.fillOpacity; context.beginPath(); context.globalAlpha = fillOpacity; context.fillStyle = fill; context.strokeStyle = stroke; context.lineWidth = lineWidth; - context.arc(x6, y5, size2 / 2, 0, 2 * Math.PI, false); + context.arc(x6, y5, size14 / 2, 0, 2 * Math.PI, false); context.fill(); if (lineWidth) { context.stroke(); @@ -73945,17 +80376,17 @@ function drawDot(context, cfg, x6, y5) { } function createDotPattern(cfg) { var dotCfg = deepAssign({}, defaultDotPatternCfg, cfg); - var size2 = dotCfg.size, padding3 = dotCfg.padding, isStagger = dotCfg.isStagger, rotation = dotCfg.rotation; - var unitSize = getUnitPatternSize(size2, padding3, isStagger); + var size14 = dotCfg.size, padding3 = dotCfg.padding, isStagger = dotCfg.isStagger, rotation = dotCfg.rotation; + var unitSize = getUnitPatternSize(size14, padding3, isStagger); var dots = getSymbolsPosition(unitSize, isStagger); var canvas = initCanvas(unitSize, unitSize); - var ctx4 = canvas.getContext("2d"); - drawBackground(ctx4, dotCfg, unitSize); + var ctx3 = canvas.getContext("2d"); + drawBackground(ctx3, dotCfg, unitSize); for (var _i = 0, dots_1 = dots; _i < dots_1.length; _i++) { var _a6 = dots_1[_i], x6 = _a6[0], y5 = _a6[1]; - drawDot(ctx4, dotCfg, x6, y5); + drawDot(ctx3, dotCfg, x6, y5); } - var pattern2 = ctx4.createPattern(canvas, "repeat"); + var pattern2 = ctx3.createPattern(canvas, "repeat"); if (pattern2) { var dpr = getPixelRatio2(); var matrix = transformMatrix(dpr, rotation); @@ -73990,10 +80421,10 @@ function createLinePattern(cfg) { var height = spacing + lineWidth || 1; var d3 = "\n M 0 0 L " + width2 + " 0\n M 0 " + height + " L " + width2 + " " + height + "\n "; var canvas = initCanvas(width2, height); - var ctx4 = canvas.getContext("2d"); - drawBackground(ctx4, lineCfg, width2, height); - drawLine(ctx4, lineCfg, d3); - var pattern2 = ctx4.createPattern(canvas, "repeat"); + var ctx3 = canvas.getContext("2d"); + drawBackground(ctx3, lineCfg, width2, height); + drawLine(ctx3, lineCfg, d3); + var pattern2 = ctx3.createPattern(canvas, "repeat"); if (pattern2) { var dpr = getPixelRatio2(); var matrix = transformMatrix(dpr, rotation); @@ -74016,27 +80447,27 @@ var defaultSquarePatternCfg = { lineWidth: 0 }; function drawSquare(context, cfg, x6, y5) { - var stroke = cfg.stroke, size2 = cfg.size, fill = cfg.fill, lineWidth = cfg.lineWidth, fillOpacity = cfg.fillOpacity; + var stroke = cfg.stroke, size14 = cfg.size, fill = cfg.fill, lineWidth = cfg.lineWidth, fillOpacity = cfg.fillOpacity; context.globalAlpha = fillOpacity; context.strokeStyle = stroke; context.lineWidth = lineWidth; context.fillStyle = fill; - context.strokeRect(x6 - size2 / 2, y5 - size2 / 2, size2, size2); - context.fillRect(x6 - size2 / 2, y5 - size2 / 2, size2, size2); + context.strokeRect(x6 - size14 / 2, y5 - size14 / 2, size14, size14); + context.fillRect(x6 - size14 / 2, y5 - size14 / 2, size14, size14); } function createSquarePattern(cfg) { var squareCfg = deepAssign({}, defaultSquarePatternCfg, cfg); - var size2 = squareCfg.size, padding3 = squareCfg.padding, isStagger = squareCfg.isStagger, rotation = squareCfg.rotation; - var unitSize = getUnitPatternSize(size2, padding3, isStagger); + var size14 = squareCfg.size, padding3 = squareCfg.padding, isStagger = squareCfg.isStagger, rotation = squareCfg.rotation; + var unitSize = getUnitPatternSize(size14, padding3, isStagger); var squares = getSymbolsPosition(unitSize, isStagger); var canvas = initCanvas(unitSize, unitSize); - var ctx4 = canvas.getContext("2d"); - drawBackground(ctx4, squareCfg, unitSize); + var ctx3 = canvas.getContext("2d"); + drawBackground(ctx3, squareCfg, unitSize); for (var _i = 0, squares_1 = squares; _i < squares_1.length; _i++) { var _a6 = squares_1[_i], x6 = _a6[0], y5 = _a6[1]; - drawSquare(ctx4, squareCfg, x6, y5); + drawSquare(ctx3, squareCfg, x6, y5); } - var pattern2 = ctx4.createPattern(canvas, "repeat"); + var pattern2 = ctx3.createPattern(canvas, "repeat"); if (pattern2) { var dpr = getPixelRatio2(); var matrix = transformMatrix(dpr, rotation); @@ -74086,7 +80517,7 @@ function pattern(key) { var colorAttribute = (_b = (_a7 = chart.geometries) === null || _a7 === void 0 ? void 0 : _a7[0]) === null || _b === void 0 ? void 0 : _b.getAttribute("color"); if (colorAttribute) { var colorField = colorAttribute.getFields()[0]; - var seriesValue = get_default(datum, colorField); + var seriesValue = (0, import_util330.get)(datum, colorField); color4 = Util.getMappingValue(colorAttribute, seriesValue, ((_c = colorAttribute.values) === null || _c === void 0 ? void 0 : _c[0]) || defaultColor); } var pattern2 = patternOption; @@ -74125,7 +80556,7 @@ function tooltip(params) { function interaction(params) { var chart = params.chart, options = params.options; var interactions = options.interactions; - each_default(interactions, function(i4) { + (0, import_util331.each)(interactions, function(i4) { if (i4.enable === false) { chart.removeInteraction(i4.type); } else { @@ -74142,7 +80573,7 @@ function animation(params) { } else { chart.animate(true); } - each_default(chart.geometries, function(g4) { + (0, import_util331.each)(chart.geometries, function(g4) { g4.animate(animation7); }); return params; @@ -74159,7 +80590,7 @@ function state(params) { var chart = params.chart, options = params.options; var state2 = options.state; if (state2) { - each_default(chart.geometries, function(geometry35) { + (0, import_util331.each)(chart.geometries, function(geometry35) { geometry35.state(state2); }); } @@ -74181,8 +80612,8 @@ function scale7(axes, meta23) { return function(params) { var chart = params.chart, options = params.options; var scales = {}; - each_default(axes, function(axis22, field6) { - scales[field6] = pick(axis22, AXIS_META_CONFIG_KEYS); + (0, import_util331.each)(axes, function(axis22, field6) { + scales[field6] = pick4(axis22, AXIS_META_CONFIG_KEYS); }); scales = deepAssign({}, meta23, options.meta, scales); chart.scale(scales); @@ -74193,7 +80624,7 @@ function annotation(annotationOptions) { return function(params) { var chart = params.chart, options = params.options; var annotationController = chart.getController("annotation"); - each_default(__spreadArrays(options.annotations || [], annotationOptions || []), function(annotationOption) { + (0, import_util331.each)(__spreadArrays(options.annotations || [], annotationOptions || []), function(annotationOption) { annotationController.annotation(annotationOption); }); return params; @@ -74203,9 +80634,9 @@ function limitInPlot2(params) { var chart = params.chart, options = params.options; var yAxis = options.yAxis, limitInPlot5 = options.limitInPlot; var value2 = limitInPlot5; - if (is_object_default(yAxis) && is_nil_default(limitInPlot5)) { - if (Object.values(pick(yAxis, ["min", "max", "minLimit", "maxLimit"])).some(function(value3) { - return !is_nil_default(value3); + if ((0, import_util331.isObject)(yAxis) && (0, import_util331.isNil)(limitInPlot5)) { + if (Object.values(pick4(yAxis, ["min", "max", "minLimit", "maxLimit"])).some(function(value3) { + return !(0, import_util331.isNil)(value3); })) { value2 = true; } else { @@ -74217,14 +80648,15 @@ function limitInPlot2(params) { } // node_modules/@antv/g2plot/esm/utils/tooltip.js +var import_util332 = __toModule(require_lib()); function getTooltipMapping(tooltip10, defaultFields) { if (tooltip10 === false) { return { fields: false }; } - var fields = get_default(tooltip10, "fields"); - var formatter = get_default(tooltip10, "formatter"); + var fields = (0, import_util332.get)(tooltip10, "fields"); + var formatter = (0, import_util332.get)(tooltip10, "formatter"); if (formatter && !fields) { fields = defaultFields; } @@ -74235,6 +80667,7 @@ function getTooltipMapping(tooltip10, defaultFields) { } // node_modules/@antv/g2plot/esm/adaptor/geometries/base.js +var import_util333 = __toModule(require_lib()); function getMappingField(o3, field6) { var type2 = o3.type, xField = o3.xField, yField = o3.yField, colorField = o3.colorField, shapeField = o3.shapeField, sizeField = o3.sizeField, styleField = o3.styleField, _a6 = o3.rawFields, rawFields = _a6 === void 0 ? [] : _a6; var fields = []; @@ -74251,7 +80684,7 @@ function getMappingField(o3, field6) { fields.splice(idx, 1); fields.unshift(f3); } - var mappingFields = uniq(fields.filter(function(f4) { + var mappingFields = (0, import_util333.uniq)(fields.filter(function(f4) { return !!f4; })); var tileMappingField = type2 === "line" && [xField, yField].includes(mappingFields.join("*")) ? "" : mappingFields.join("*"); @@ -74282,41 +80715,41 @@ function geometry(params) { if (!mapping) { return params; } - var color4 = mapping.color, shape = mapping.shape, size2 = mapping.size, style = mapping.style, tooltip10 = mapping.tooltip; + var color4 = mapping.color, shape = mapping.shape, size14 = mapping.size, style = mapping.style, tooltip10 = mapping.tooltip; var geometry35 = chart[type2](args).position(xField + "*" + yField); - if (is_string_default(color4)) { + if ((0, import_util333.isString)(color4)) { colorField ? geometry35.color(colorField, color4) : geometry35.color(color4); - } else if (is_function_default(color4)) { + } else if ((0, import_util333.isFunction)(color4)) { var _a6 = getMappingField(options, "color"), mappingFields = _a6.mappingFields, tileMappingField = _a6.tileMappingField; geometry35.color(tileMappingField, getMappingFunction(mappingFields, color4)); } else { colorField && geometry35.color(colorField, color4); } - if (is_string_default(shape)) { + if ((0, import_util333.isString)(shape)) { shapeField ? geometry35.shape(shapeField, [shape]) : geometry35.shape(shape); - } else if (is_function_default(shape)) { + } else if ((0, import_util333.isFunction)(shape)) { var _b = getMappingField(options, "shape"), mappingFields = _b.mappingFields, tileMappingField = _b.tileMappingField; geometry35.shape(tileMappingField, getMappingFunction(mappingFields, shape)); } else { shapeField && geometry35.shape(shapeField, shape); } - if (is_number_default(size2)) { - sizeField ? geometry35.size(sizeField, size2) : geometry35.size(size2); - } else if (is_function_default(size2)) { + if ((0, import_util333.isNumber)(size14)) { + sizeField ? geometry35.size(sizeField, size14) : geometry35.size(size14); + } else if ((0, import_util333.isFunction)(size14)) { var _c = getMappingField(options, "size"), mappingFields = _c.mappingFields, tileMappingField = _c.tileMappingField; - geometry35.size(tileMappingField, getMappingFunction(mappingFields, size2)); + geometry35.size(tileMappingField, getMappingFunction(mappingFields, size14)); } else { - sizeField && geometry35.size(sizeField, size2); + sizeField && geometry35.size(sizeField, size14); } - if (is_function_default(style)) { + if ((0, import_util333.isFunction)(style)) { var _d = getMappingField(options, "style"), mappingFields = _d.mappingFields, tileMappingField = _d.tileMappingField; geometry35.style(tileMappingField, getMappingFunction(mappingFields, style)); - } else if (is_object_default(style)) { + } else if ((0, import_util333.isObject)(style)) { geometry35.style(style); } if (tooltipFields === false) { geometry35.tooltip(false); - } else if (!is_empty_default(tooltipFields)) { + } else if (!(0, import_util333.isEmpty)(tooltipFields)) { geometry35.tooltip(tooltipFields.join("*"), getMappingFunction(tooltipFields, tooltip10)); } if (label17 === false) { @@ -74361,6 +80794,7 @@ function area(params) { } // node_modules/@antv/g2plot/esm/adaptor/geometries/line.js +var import_util334 = __toModule(require_lib()); function line(params) { var options = params.options; var line2 = options.line, stepType = options.stepType, xField = options.xField, yField = options.yField, seriesField = options.seriesField, smooth = options.smooth, connectNulls = options.connectNulls, tooltip10 = options.tooltip; @@ -74370,7 +80804,7 @@ function line(params) { type: "line", colorField: seriesField, tooltipFields: fields, - mapping: deep_mix_default({ + mapping: (0, import_util334.deepMix)({ shape: stepType || (smooth ? "smooth" : "line"), tooltip: formatter }, line2), @@ -74396,6 +80830,7 @@ function point(params) { } // node_modules/@antv/g2plot/esm/adaptor/geometries/interval.js +var import_util335 = __toModule(require_lib()); function otherAdaptor(params) { var chart = params.chart, options = params.options, ext = params.ext; var seriesField = options.seriesField, isGroup = options.isGroup, isStack = options.isStack, marginRatio = options.marginRatio, widthRatio = options.widthRatio, groupField = options.groupField, theme4 = options.theme; @@ -74419,8 +80854,8 @@ function otherAdaptor(params) { var g4 = ext === null || ext === void 0 ? void 0 : ext.geometry; g4.adjust(adjust4); } - if (!is_nil_default(widthRatio)) { - chart.theme(deepAssign({}, is_object_default(theme4) ? theme4 : getTheme(theme4), { + if (!(0, import_util335.isNil)(widthRatio)) { + chart.theme(deepAssign({}, (0, import_util335.isObject)(theme4) ? theme4 : getTheme(theme4), { columnWidthRatio: widthRatio })); } @@ -74542,7 +80977,7 @@ function coordinate(params) { var reflect = options.reflect; if (reflect) { var p4 = reflect; - if (!is_array_default(p4)) { + if (!(0, import_util336.isArray)(p4)) { p4 = [p4]; } var actions = p4.map(function(d3) { @@ -74602,7 +81037,7 @@ function adjust(params) { var chart = params.chart, options = params.options; var isStack = options.isStack; if (isStack) { - each_default(chart.geometries, function(g4) { + (0, import_util336.each)(chart.geometries, function(g4) { g4.adjust("stack"); }); } @@ -74630,6 +81065,7 @@ var DEFAULT_OPTIONS = deepAssign({}, Plot.getDefaultOptions(), { }); // node_modules/@antv/g2plot/esm/plots/line/interactions/marker-active.js +var import_util337 = __toModule(require_lib()); var MarkerActiveAction = function(_super) { __extends(MarkerActiveAction2, _super); function MarkerActiveAction2() { @@ -74643,9 +81079,9 @@ var MarkerActiveAction = function(_super) { var points = view.geometries.filter(function(geom) { return geom.type === "point"; }); - each_default(points, function(point2) { - each_default(point2.elements, function(element) { - var active = find_index_default(items_1, function(item) { + (0, import_util337.each)(points, function(point2) { + (0, import_util337.each)(point2.elements, function(element) { + var active = (0, import_util337.findIndex)(items_1, function(item) { return item.data === element.data; }) !== -1; element.setState("active", active); @@ -74658,8 +81094,8 @@ var MarkerActiveAction = function(_super) { var points = view.geometries.filter(function(geom) { return geom.type === "point"; }); - each_default(points, function(point2) { - each_default(point2.elements, function(element) { + (0, import_util337.each)(points, function(point2) { + (0, import_util337.each)(point2.elements, function(element) { element.setState("active", false); }); }); @@ -74714,16 +81150,17 @@ var Line6 = function(_super) { }(Plot); // node_modules/@antv/g2plot/esm/utils/transform/percent.js +var import_util338 = __toModule(require_lib()); function percent(data3, measure, groupField, as) { - var sumMap = reduce_default(data3, function(map6, datum) { + var sumMap = (0, import_util338.reduce)(data3, function(map23, datum) { var groupValue = datum[groupField]; - var sum = map6.has(groupValue) ? map6.get(groupValue) : 0; + var sum = map23.has(groupValue) ? map23.get(groupValue) : 0; var v3 = datum[measure]; sum = isRealNumber(v3) ? sum + v3 : sum; - map6.set(groupValue, sum); - return map6; + map23.set(groupValue, sum); + return map23; }, new Map()); - return map_default(data3, function(datum) { + return (0, import_util338.map)(data3, function(datum) { var _a6; var v3 = datum[measure]; var groupValue = datum[groupField]; @@ -74732,20 +81169,20 @@ function percent(data3, measure, groupField, as) { }); } function getDeepPercent(data3, measure, fields, percent2) { - var sumMap = reduce_default(data3, function(map6, datum) { - var groupValue = reduce_default(fields, function(value2, field6) { + var sumMap = (0, import_util338.reduce)(data3, function(map23, datum) { + var groupValue = (0, import_util338.reduce)(fields, function(value2, field6) { return "" + value2 + datum[field6]; }, ""); - var sum = map6.has(groupValue) ? map6.get(groupValue) : 0; + var sum = map23.has(groupValue) ? map23.get(groupValue) : 0; var v3 = datum[measure]; sum = isRealNumber(v3) ? sum + v3 : sum; - map6.set(groupValue, sum); - return map6; + map23.set(groupValue, sum); + return map23; }, new Map()); - return map_default(data3, function(datum) { + return (0, import_util338.map)(data3, function(datum) { var _a6; var v3 = datum[measure]; - var groupValue = reduce_default(fields, function(value2, field6) { + var groupValue = (0, import_util338.reduce)(fields, function(value2, field6) { return "" + value2 + datum[field6]; }, ""); var percentage = isRealNumber(v3) ? v3 / sumMap.get(groupValue) : 0; @@ -74757,6 +81194,7 @@ function getDataWhetherPecentage(data3, yField, groupField, asField, isPercent) } // node_modules/@antv/g2plot/esm/plots/area/adaptor.js +var import_util339 = __toModule(require_lib()); function geometry3(params) { var chart = params.chart, options = params.options; var data3 = options.data, areaStyle = options.areaStyle, color4 = options.color, pointMapping = options.point, lineMapping = options.line, isPercent = options.isPercent, xField = options.xField, yField = options.yField, tooltip10 = options.tooltip, seriesField = options.seriesField, startOnZero = options.startOnZero; @@ -74782,7 +81220,7 @@ function geometry3(params) { }); var lineParams = { chart, - options: deepAssign({ line: { size: 2 } }, omit_default(options, ["state"]), { + options: deepAssign({ line: { size: 2 } }, (0, import_util339.omit)(options, ["state"]), { line: lineMapping && __assign({ color: color4 }, lineMapping), sizeField: seriesField, state: lineMapping === null || lineMapping === void 0 ? void 0 : lineMapping.state, @@ -74824,7 +81262,7 @@ function adjust2(params) { var chart = params.chart, options = params.options; var isStack = options.isStack, isPercent = options.isPercent, seriesField = options.seriesField; if ((isPercent || isStack) && seriesField) { - each_default(chart.geometries, function(g4) { + (0, import_util339.each)(chart.geometries, function(g4) { g4.adjust("stack"); }); } @@ -74879,9 +81317,16 @@ var Area2 = function(_super) { return Area3; }(Plot); +// node_modules/@antv/g2plot/esm/plots/column/adaptor.js +var import_util344 = __toModule(require_lib()); + +// node_modules/@antv/g2plot/esm/adaptor/conversion-tag.js +var import_util341 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/utils/conversion.js +var import_util340 = __toModule(require_lib()); function conversionTagFormatter(prev, next) { - if (!is_number_default(prev) || !is_number_default(next)) { + if (!(0, import_util340.isNumber)(prev) || !(0, import_util340.isNumber)(next)) { return "-"; } if (prev === next) { @@ -74920,13 +81365,13 @@ function getConversionTagOptionsWithDefaults(options, horizontal) { }, options); } function parsePoints(coordinate11, element) { - return map_default(element.getModel().points, function(point2) { + return (0, import_util341.map)(element.getModel().points, function(point2) { return coordinate11.convertPoint(point2); }); } function renderArrowTag(config, elemPrev, elemNext) { - var view = config.view, geometry35 = config.geometry, group2 = config.group, options = config.options, horizontal = config.horizontal; - var offset = options.offset, size2 = options.size, arrow = options.arrow; + var view = config.view, geometry35 = config.geometry, group3 = config.group, options = config.options, horizontal = config.horizontal; + var offset = options.offset, size14 = options.size, arrow = options.arrow; var coordinate11 = view.getCoordinate(); var pointPrev = parsePoints(coordinate11, elemPrev)[3]; var pointNext = parsePoints(coordinate11, elemNext)[0]; @@ -74943,15 +81388,15 @@ function renderArrowTag(config, elemPrev, elemNext) { spacing = Math.max(1, (totalWidth - headSize) / 2); points = [ [pointPrev.x + spacing, pointPrev.y - offset], - [pointPrev.x + spacing, pointPrev.y - offset - size2], - [pointNext.x - spacing, pointNext.y - offset - size2 / 2] + [pointPrev.x + spacing, pointPrev.y - offset - size14], + [pointNext.x - spacing, pointNext.y - offset - size14 / 2] ]; } else { points = [ [pointPrev.x + spacing, pointPrev.y - offset], - [pointPrev.x + spacing, pointPrev.y - offset - size2], - [pointNext.x - spacing - headSize, pointNext.y - offset - size2], - [pointNext.x - spacing, pointNext.y - offset - size2 / 2], + [pointPrev.x + spacing, pointPrev.y - offset - size14], + [pointNext.x - spacing - headSize, pointNext.y - offset - size14], + [pointNext.x - spacing, pointNext.y - offset - size14 / 2], [pointNext.x - spacing - headSize, pointNext.y - offset] ]; } @@ -74960,20 +81405,20 @@ function renderArrowTag(config, elemPrev, elemNext) { spacing = Math.max(1, (totalHeight - headSize) / 2); points = [ [pointPrev.x + offset, pointPrev.y + spacing], - [pointPrev.x + offset + size2, pointPrev.y + spacing], - [pointNext.x + offset + size2 / 2, pointNext.y - spacing] + [pointPrev.x + offset + size14, pointPrev.y + spacing], + [pointNext.x + offset + size14 / 2, pointNext.y - spacing] ]; } else { points = [ [pointPrev.x + offset, pointPrev.y + spacing], - [pointPrev.x + offset + size2, pointPrev.y + spacing], - [pointNext.x + offset + size2, pointNext.y - spacing - headSize], - [pointNext.x + offset + size2 / 2, pointNext.y - spacing], + [pointPrev.x + offset + size14, pointPrev.y + spacing], + [pointNext.x + offset + size14, pointNext.y - spacing - headSize], + [pointNext.x + offset + size14 / 2, pointNext.y - spacing], [pointNext.x + offset, pointNext.y - spacing - headSize] ]; } } - group2.addShape("polygon", { + group3.addShape("polygon", { id: view.id + "-conversion-tag-arrow-" + geometry35.getElementId(elemPrev.getModel().mappingData), name: "conversion-tag-arrow", origin: { @@ -74985,8 +81430,8 @@ function renderArrowTag(config, elemPrev, elemNext) { } function renderTextTag(config, elemPrev, elemNext) { var _a6, _b, _c; - var view = config.view, geometry35 = config.geometry, group2 = config.group, options = config.options, field6 = config.field, horizontal = config.horizontal; - var offset = options.offset, size2 = options.size; + var view = config.view, geometry35 = config.geometry, group3 = config.group, options = config.options, field6 = config.field, horizontal = config.horizontal; + var offset = options.offset, size14 = options.size; if (typeof options.text === "boolean") { return; } @@ -74994,14 +81439,14 @@ function renderTextTag(config, elemPrev, elemNext) { var text = ((_a6 = options.text) === null || _a6 === void 0 ? void 0 : _a6.formatter) && ((_b = options.text) === null || _b === void 0 ? void 0 : _b.formatter(elemPrev.getData()[field6], elemNext.getData()[field6])); var pointPrev = parsePoints(coordinate11, elemPrev)[horizontal ? 3 : 0]; var pointNext = parsePoints(coordinate11, elemNext)[horizontal ? 0 : 3]; - var textShape = group2.addShape("text", { + var textShape = group3.addShape("text", { id: view.id + "-conversion-tag-text-" + geometry35.getElementId(elemPrev.getModel().mappingData), name: "conversion-tag-text", origin: { element: elemPrev, nextElement: elemNext }, - attrs: __assign(__assign({}, ((_c = options.text) === null || _c === void 0 ? void 0 : _c.style) || {}), { text, x: horizontal ? (pointPrev.x + pointNext.x) / 2 : pointPrev.x + offset + size2 / 2, y: horizontal ? pointPrev.y - offset - size2 / 2 : (pointPrev.y + pointNext.y) / 2 }) + attrs: __assign(__assign({}, ((_c = options.text) === null || _c === void 0 ? void 0 : _c.style) || {}), { text, x: horizontal ? (pointPrev.x + pointNext.x) / 2 : pointPrev.x + offset + size14 / 2, y: horizontal ? pointPrev.y - offset - size14 / 2 : (pointPrev.y + pointNext.y) / 2 }) }); if (horizontal) { var totalWidth = pointNext.x - pointPrev.x; @@ -75029,28 +81474,28 @@ function conversionTag(field6, horizontal, disabled) { var options = params.options, chart = params.chart; var conversionTag5 = options.conversionTag, theme4 = options.theme; if (conversionTag5 && !disabled) { - chart.theme(deepAssign({}, is_object_default(theme4) ? theme4 : getTheme(theme4), { + chart.theme(deepAssign({}, (0, import_util341.isObject)(theme4) ? theme4 : getTheme(theme4), { columnWidthRatio: 1 / 3 })); chart.annotation().shape({ render: function(container2, view) { - var group2 = container2.addGroup({ + var group3 = container2.addGroup({ id: chart.id + "-conversion-tag-group", name: "conversion-tag-group" }); - var interval3 = find_default(chart.geometries, function(geom) { + var interval3 = (0, import_util341.find)(chart.geometries, function(geom) { return geom.type === "interval"; }); var config = { view, geometry: interval3, - group: group2, + group: group3, field: field6, horizontal, options: getConversionTagOptionsWithDefaults(conversionTag5, horizontal) }; var elements = interval3.elements; - each_default(elements, function(elem, idx) { + (0, import_util341.each)(elements, function(elem, idx) { if (idx > 0) { renderTag2(config, elements[idx - 1], elem); } @@ -75133,7 +81578,11 @@ function connectedArea(disable) { }; } +// node_modules/@antv/g2plot/esm/adaptor/brush.js +var import_util343 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/interactions/actions/reset-button.js +var import_util342 = __toModule(require_lib()); var PADDING_RIGHT2 = 10; var PADDING_TOP2 = 5; var BUTTON_ACTION_CONFIG = { @@ -75169,42 +81618,42 @@ var ButtonAction2 = function(_super) { } ButtonAction3.prototype.getButtonCfg = function() { var view = this.context.view; - var buttonCfg = get_default(view, ["interactions", "filter-action", "cfg", "buttonConfig"]); + var buttonCfg = (0, import_util342.get)(view, ["interactions", "filter-action", "cfg", "buttonConfig"]); return deepAssign(this.buttonCfg, buttonCfg, this.cfg); }; ButtonAction3.prototype.drawButton = function() { var config = this.getButtonCfg(); - var group2 = this.context.view.foregroundGroup.addGroup({ + var group3 = this.context.view.foregroundGroup.addGroup({ name: config.name }); - var textShape = this.drawText(group2); - this.drawBackground(group2, textShape.getBBox()); - this.buttonGroup = group2; + var textShape = this.drawText(group3); + this.drawBackground(group3, textShape.getBBox()); + this.buttonGroup = group3; }; - ButtonAction3.prototype.drawText = function(group2) { + ButtonAction3.prototype.drawText = function(group3) { var _a6; var config = this.getButtonCfg(); - return group2.addShape({ + return group3.addShape({ type: "text", name: "button-text", attrs: __assign({ text: config.text }, (_a6 = config.textStyle) === null || _a6 === void 0 ? void 0 : _a6.default) }); }; - ButtonAction3.prototype.drawBackground = function(group2, bbox) { + ButtonAction3.prototype.drawBackground = function(group3, bbox) { var _a6; var config = this.getButtonCfg(); var padding3 = normalPadding(config.padding); - var buttonShape = group2.addShape({ + var buttonShape = group3.addShape({ type: "rect", name: "button-rect", attrs: __assign({ x: bbox.x - padding3[3], y: bbox.y - padding3[0], width: bbox.width + padding3[1] + padding3[3], height: bbox.height + padding3[0] + padding3[2] }, (_a6 = config.buttonStyle) === null || _a6 === void 0 ? void 0 : _a6.default) }); buttonShape.toBack(); - group2.on("mouseenter", function() { + group3.on("mouseenter", function() { var _a7; buttonShape.attr((_a7 = config.buttonStyle) === null || _a7 === void 0 ? void 0 : _a7.active); }); - group2.on("mouseleave", function() { + group3.on("mouseleave", function() { var _a7; buttonShape.attr((_a7 = config.buttonStyle) === null || _a7 === void 0 ? void 0 : _a7.default); }); @@ -75518,7 +81967,7 @@ var BRUSH_TYPES = ["brush", "brush-x", "brush-y", "brush-highlight", "brush-x-hi function brushInteraction(params) { var options = params.options; var brush = options.brush; - var interactions = filter_default(options.interactions || [], function(i4) { + var interactions = (0, import_util343.filter)(options.interactions || [], function(i4) { return BRUSH_TYPES.indexOf(i4.type) === -1; }); if (brush === null || brush === void 0 ? void 0 : brush.enabled) { @@ -75683,9 +82132,9 @@ function columnTooltip(params) { }; tooltipOptions = __assign(__assign({}, tooltipOptions), { customItems: function(originalItems) { var items = []; - each_default(originalItems, function(item) { - var datas = filter_default(data3, function(d3) { - return is_match_default(d3, pick(item.data, [xField, seriesField])); + (0, import_util344.each)(originalItems, function(item) { + var datas = (0, import_util344.filter)(data3, function(d3) { + return (0, import_util344.isMatch)(d3, pick4(item.data, [xField, seriesField])); }); datas.forEach(function(datum) { items.push(__assign(__assign(__assign({}, item), { value: datum[yField], data: datum, mappingData: { _origin: datum } }), tooltipFormatter_1(datum))); @@ -75863,6 +82312,9 @@ var Bar = function(_super) { return Bar2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/pie/adaptor.js +var import_util349 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/pie/contants.js var DEFAULT_OPTIONS5 = deepAssign({}, Plot.getDefaultOptions(), { legend: { @@ -75907,9 +82359,10 @@ var DEFAULT_OPTIONS5 = deepAssign({}, Plot.getDefaultOptions(), { }); // node_modules/@antv/g2plot/esm/plots/pie/utils.js +var import_util345 = __toModule(require_lib()); function getTotalValue(data3, field6) { var total = null; - each_default(data3, function(item) { + (0, import_util345.each)(data3, function(item) { if (typeof item[field6] === "number") { total += item[field6]; } @@ -75921,13 +82374,13 @@ function adaptOffset(type2, offset) { switch (type2) { case "inner": defaultOffset = "-30%"; - if (is_string_default(offset) && offset.endsWith("%")) { + if ((0, import_util345.isString)(offset) && offset.endsWith("%")) { return parseFloat(offset) * 0.01 > 0 ? defaultOffset : offset; } return offset < 0 ? offset : defaultOffset; case "outer": defaultOffset = 12; - if (is_string_default(offset) && offset.endsWith("%")) { + if ((0, import_util345.isString)(offset) && offset.endsWith("%")) { return parseFloat(offset) * 0.01 < 0 ? defaultOffset : offset; } return offset > 0 ? offset : defaultOffset; @@ -75936,11 +82389,14 @@ function adaptOffset(type2, offset) { } } function isAllZero(data3, angleField) { - return every_default(processIllegalData(data3, angleField), function(d3) { + return (0, import_util345.every)(processIllegalData(data3, angleField), function(d3) { return d3[angleField] === 0; }); } +// node_modules/@antv/g2plot/esm/plots/pie/interactions/actions/legend-active.js +var import_util346 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/utils/matrix.js var ORIGIN_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1]; function transform5(actions, matrix) { @@ -75975,7 +82431,7 @@ var PieLegendAction = function(_super) { var labels = view.geometries[0].labelsContainer.getChildren(); return labels.filter(function(label17) { return elements.find(function(ele) { - return is_equal_default(ele.getData(), label17.get("data")); + return (0, import_util346.isEqual)(ele.getData(), label17.get("data")); }); }); }; @@ -76008,6 +82464,9 @@ var PieLegendAction = function(_super) { return PieLegendAction2; }(base_default12); +// node_modules/@antv/g2plot/esm/plots/pie/interactions/actions/statistic-active.js +var import_util347 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/pie/interactions/util.js function getCurrentElement2(context) { var event = context.event; @@ -76046,7 +82505,7 @@ var StatisticAction = function(_super) { if (!this.initialAnnotation) { this.initialAnnotation = this.getAnnotations(); } - var data3 = get_default(event, ["data", "data"]); + var data3 = (0, import_util347.get)(event, ["data", "data"]); if (event.type.match("legend-item")) { var delegateObject = Util.getDelegationObject(this.context); var colorField_1 = view.getGroupedFields()[0]; @@ -76058,10 +82517,10 @@ var StatisticAction = function(_super) { } } if (data3) { - var annotations = get_default(arg, "annotations", []); - var statistic4 = get_default(arg, "statistic", {}); + var annotations = (0, import_util347.get)(arg, "annotations", []); + var statistic4 = (0, import_util347.get)(arg, "statistic", {}); view.getController("annotation").clear(true); - each_default(annotations, function(annotation4) { + (0, import_util347.each)(annotations, function(annotation4) { if (typeof annotation4 === "object") { view.annotation()[annotation4.type](annotation4); } @@ -76079,7 +82538,7 @@ var StatisticAction = function(_super) { var annotationController = view.getController("annotation"); annotationController.clear(true); var initialStatistic = this.getInitialAnnotation(); - each_default(initialStatistic, function(a4) { + (0, import_util347.each)(initialStatistic, function(a4) { view.annotation()[a4.type](a4); }); view.render(true); @@ -76189,10 +82648,10 @@ function label5(params) { var value2 = data3[angleField]; var angleScale = chart.getScaleByField(angleField); var percent2 = angleScale === null || angleScale === void 0 ? void 0 : angleScale.scale(value2); - return is_function_default(content_1) ? content_1(__assign(__assign({}, data3), { percent: percent2 }), dataum, index2) : is_string_default(content_1) ? template(content_1, { + return (0, import_util349.isFunction)(content_1) ? content_1(__assign(__assign({}, data3), { percent: percent2 }), dataum, index2) : (0, import_util349.isString)(content_1) ? template(content_1, { value: value2, name, - percentage: is_number_default(percent2) && !is_nil_default(value2) ? (percent2 * 100).toFixed(2) + "%" : null + percentage: (0, import_util349.isNumber)(percent2) && !(0, import_util349.isNil)(value2) ? (percent2 * 100).toFixed(2) + "%" : null }) : content_1; }; } @@ -76202,7 +82661,7 @@ function label5(params) { spider: "pie-spider" }; var labelLayoutType = labelCfg.type ? LABEL_LAYOUT_TYPE_MAP[labelCfg.type] : "pie-outer"; - var labelLayoutCfg = labelCfg.layout ? !is_array_default(labelCfg.layout) ? [labelCfg.layout] : labelCfg.layout : []; + var labelLayoutCfg = labelCfg.layout ? !(0, import_util349.isArray)(labelCfg.layout) ? [labelCfg.layout] : labelCfg.layout : []; labelCfg.layout = (labelLayoutType ? [{ type: labelLayoutType }] : []).concat(labelLayoutCfg); geometry35.label({ fields: colorField ? [angleField, colorField] : [angleField], @@ -76223,7 +82682,7 @@ function transformStatisticOptions(options) { if (datum) { return datum[colorField]; } - return !is_nil_default(titleOpt_1.content) ? titleOpt_1.content : i18n.get(["statistic", "total"]); + return !(0, import_util349.isNil)(titleOpt_1.content) ? titleOpt_1.content : i18n.get(["statistic", "total"]); } }, titleOpt_1); } @@ -76231,13 +82690,13 @@ function transformStatisticOptions(options) { contentOpt_1 = deepAssign({}, { formatter: function(datum, data3) { var dataValue = datum ? datum[angleField] : getTotalValue(data3, angleField); - var metaFormatter = get_default(meta23, [angleField, "formatter"]) || function(v3) { + var metaFormatter = (0, import_util349.get)(meta23, [angleField, "formatter"]) || function(v3) { return v3; }; if (datum) { return metaFormatter(dataValue); } - return !is_nil_default(contentOpt_1.content) ? contentOpt_1.content : metaFormatter(dataValue); + return !(0, import_util349.isNil)(contentOpt_1.content) ? contentOpt_1.content : metaFormatter(dataValue); } }, contentOpt_1); } @@ -76263,12 +82722,12 @@ function tooltip2(params) { } else { chart.tooltip(deepAssign({}, tooltip10, { shared: false })); if (isAllZero(data3, angleField)) { - var fields = get_default(tooltip10, "fields"); - var formatter = get_default(tooltip10, "formatter"); - if (is_empty_default(get_default(tooltip10, "fields"))) { + var fields = (0, import_util349.get)(tooltip10, "fields"); + var formatter = (0, import_util349.get)(tooltip10, "formatter"); + if ((0, import_util349.isEmpty)((0, import_util349.get)(tooltip10, "fields"))) { fields = [colorField, angleField]; formatter = formatter || function(datum) { - return { name: datum[colorField], value: to_string_default(datum[angleField]) }; + return { name: datum[colorField], value: (0, import_util349.toString)(datum[angleField]) }; }; } chart.geometries[0].tooltip(fields.join("*"), getMappingFunction(fields, formatter)); @@ -76279,7 +82738,7 @@ function tooltip2(params) { function interaction2(params) { var chart = params.chart, options = params.options; var _a6 = transformStatisticOptions(options), interactions = _a6.interactions, statistic4 = _a6.statistic, annotations = _a6.annotations; - each_default(interactions, function(i4) { + (0, import_util349.each)(interactions, function(i4) { var _a7, _b; if (i4.enable === false) { chart.removeInteraction(i4.type); @@ -76294,7 +82753,7 @@ function interaction2(params) { } ]; } - each_default((_b = i4.cfg) === null || _b === void 0 ? void 0 : _b.start, function(stage) { + (0, import_util349.each)((_b = i4.cfg) === null || _b === void 0 ? void 0 : _b.start, function(stage) { startStages_1.push(__assign(__assign({}, stage), { arg: { statistic: statistic4, annotations } })); }); chart.interaction(i4.type, deepAssign({}, i4.cfg, { start: startStages_1 })); @@ -76345,6 +82804,7 @@ var Pie = function(_super) { }(Plot); // node_modules/@antv/g2plot/esm/plots/rose/adaptor.js +var import_util350 = __toModule(require_lib()); function geometry7(params) { var chart = params.chart, options = params.options; var data3 = options.data, sectorStyle = options.sectorStyle, color4 = options.color; @@ -76366,13 +82826,13 @@ function label6(params) { var geometry35 = findGeometry(chart, "interval"); if (label17 === false) { geometry35.label(false); - } else if (is_object_default(label17)) { + } else if ((0, import_util350.isObject)(label17)) { var callback = label17.callback, fields = label17.fields, cfg = __rest(label17, ["callback", "fields"]); var offset = cfg.offset; var layout6 = cfg.layout; if (offset === void 0 || offset >= 0) { - layout6 = layout6 ? is_array_default(layout6) ? layout6 : [layout6] : []; - cfg.layout = filter_default(layout6, function(v3) { + layout6 = layout6 ? (0, import_util350.isArray)(layout6) ? layout6 : [layout6] : []; + cfg.layout = (0, import_util350.filter)(layout6, function(v3) { return v3.type !== "limit-in-shape"; }); cfg.layout.length || delete cfg.layout; @@ -76485,7 +82945,14 @@ var Rose = function(_super) { return Rose2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/word-cloud/adaptor.js +var import_util353 = __toModule(require_lib()); + +// node_modules/@antv/g2plot/esm/plots/word-cloud/utils.js +var import_util352 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/utils/transform/word-cloud.js +var import_util351 = __toModule(require_lib()); var DEFAULT_OPTIONS7 = { font: function() { return "serif"; @@ -76496,13 +82963,13 @@ var DEFAULT_OPTIONS7 = { timeInterval: 3e3 }; function wordCloud(words, options) { - options = mix({}, DEFAULT_OPTIONS7, options); + options = (0, import_util351.assign)({}, DEFAULT_OPTIONS7, options); return transform6(words, options); } function transform6(words, options) { var layout6 = tagCloud(); ["font", "fontSize", "fontWeight", "padding", "rotate", "size", "spiral", "timeInterval", "random"].forEach(function(key) { - if (!is_nil_default(options[key])) { + if (!(0, import_util351.isNil)(options[key])) { layout6[key](options[key]); } }); @@ -76639,11 +83106,11 @@ function cloudSprite(contextAndRatio, d3, data3, di) { function cloudCollide(tag, board, sw) { sw >>= 5; var sprite = tag.sprite, w4 = tag.width >> 5, lx = tag.x - (w4 << 4), sx = lx & 127, msx = 32 - sx, h3 = tag.y1 - tag.y0; - var x6 = (tag.y + tag.y0) * sw + (lx >> 5), last2; + var x6 = (tag.y + tag.y0) * sw + (lx >> 5), last17; for (var j4 = 0; j4 < h3; j4++) { - last2 = 0; + last17 = 0; for (var i4 = 0; i4 <= w4; i4++) { - if ((last2 << msx | (i4 < w4 ? (last2 = sprite[j4 * w4 + i4]) >>> sx : 0)) & board[x6 + i4]) + if ((last17 << msx | (i4 < w4 ? (last17 = sprite[j4 * w4 + i4]) >>> sx : 0)) & board[x6 + i4]) return true; } x6 += sw; @@ -76664,14 +83131,14 @@ function cloudBounds(bounds, d3) { function collideRects(a4, b10) { return a4.x + a4.x1 > b10[0].x && a4.x + a4.x0 < b10[1].x && a4.y + a4.y1 > b10[0].y && a4.y + a4.y0 < b10[1].y; } -function archimedeanSpiral(size2) { - var e4 = size2[0] / size2[1]; +function archimedeanSpiral(size14) { + var e4 = size14[0] / size14[1]; return function(t4) { return [e4 * (t4 *= 0.1) * Math.cos(t4), t4 * Math.sin(t4)]; }; } -function rectangularSpiral(size2) { - var dy = 4, dx = dy * size2[0] / size2[1]; +function rectangularSpiral(size14) { + var dy = 4, dx = dy * size14[0] / size14[1]; var x6 = 0, y5 = 0; return function(t4) { var sign = t4 < 0 ? -1 : 1; @@ -76703,7 +83170,7 @@ function cloudCanvas() { return document.createElement("canvas"); } function functor(d3) { - return is_function_default(d3) ? d3 : function() { + return (0, import_util351.isFunction)(d3) ? d3 : function() { return d3; }; } @@ -76712,14 +83179,14 @@ var spirals = { rectangular: rectangularSpiral }; function tagCloud() { - var size2 = [256, 256], font = cloudFont, fontSize = cloudFontSize, fontWeight = cloudFontNormal, rotate8 = cloudRotate, padding3 = cloudPadding, spiral = archimedeanSpiral, random5 = Math.random, words = [], timeInterval = Infinity; + var size14 = [256, 256], font = cloudFont, fontSize = cloudFontSize, fontWeight = cloudFontNormal, rotate8 = cloudRotate, padding3 = cloudPadding, spiral = archimedeanSpiral, random5 = Math.random, words = [], timeInterval = Infinity; var text = cloudText; var fontStyle = cloudFontNormal; var canvas = cloudCanvas; var cloud = {}; cloud.start = function() { - var width2 = size2[0], height = size2[1]; - var contextAndRatio = getContext(canvas()), board = cloud.board ? cloud.board : zeroArray((size2[0] >> 5) * size2[1]), n3 = words.length, tags = [], data3 = words.map(function(d3, i5, data4) { + var width2 = size14[0], height = size14[1]; + var contextAndRatio = getContext(canvas()), board = cloud.board ? cloud.board : zeroArray((size14[0] >> 5) * size14[1]), n3 = words.length, tags = [], data3 = words.map(function(d3, i5, data4) { d3.text = text.call(this, d3, i5, data4); d3.font = font.call(this, d3, i5, data4); d3.style = fontStyle.call(this, d3, i5, data4); @@ -76761,8 +83228,8 @@ function tagCloud() { { x: d3.x + d3.x1, y: d3.y + d3.y1 } ]; } - d3.x -= size2[0] >> 1; - d3.y -= size2[1] >> 1; + d3.x -= size14[0] >> 1; + d3.y -= size14[1] >> 1; } } cloud._tags = tags; @@ -76781,7 +83248,7 @@ function tagCloud() { return { context, ratio }; } function place2(board, tag, bounds) { - var startX = tag.x, startY = tag.y, maxDelta = Math.sqrt(size2[0] * size2[0] + size2[1] * size2[1]), s4 = spiral(size2), dt = random5() < 0.5 ? 1 : -1; + var startX = tag.x, startY = tag.y, maxDelta = Math.sqrt(size14[0] * size14[0] + size14[1] * size14[1]), s4 = spiral(size14), dt = random5() < 0.5 ? 1 : -1; var dxdy, t4 = -dt, dx, dy; while (dxdy = s4(t4 += dt)) { dx = ~~dxdy[0]; @@ -76790,16 +83257,16 @@ function tagCloud() { break; tag.x = startX + dx; tag.y = startY + dy; - if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size2[0] || tag.y + tag.y1 > size2[1]) + if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size14[0] || tag.y + tag.y1 > size14[1]) continue; - if (!bounds || !cloudCollide(tag, board, size2[0])) { + if (!bounds || !cloudCollide(tag, board, size14[0])) { if (!bounds || collideRects(tag, bounds)) { - var sprite = tag.sprite, w4 = tag.width >> 5, sw = size2[0] >> 5, lx = tag.x - (w4 << 4), sx = lx & 127, msx = 32 - sx, h3 = tag.y1 - tag.y0; - var last2 = void 0, x6 = (tag.y + tag.y0) * sw + (lx >> 5); + var sprite = tag.sprite, w4 = tag.width >> 5, sw = size14[0] >> 5, lx = tag.x - (w4 << 4), sx = lx & 127, msx = 32 - sx, h3 = tag.y1 - tag.y0; + var last17 = void 0, x6 = (tag.y + tag.y0) * sw + (lx >> 5); for (var j4 = 0; j4 < h3; j4++) { - last2 = 0; + last17 = 0; for (var i4 = 0; i4 <= w4; i4++) { - board[x6 + i4] |= last2 << msx | (i4 < w4 ? (last2 = sprite[j4 * w4 + i4]) >>> sx : 0); + board[x6 + i4] |= last17 << msx | (i4 < w4 ? (last17 = sprite[j4 * w4 + i4]) >>> sx : 0); } x6 += sw; } @@ -76812,7 +83279,7 @@ function tagCloud() { } cloud.createMask = function(img) { var can = document.createElement("canvas"); - var width2 = size2[0], height = size2[1]; + var width2 = size14[0], height = size14[1]; if (!width2 || !height) { return; } @@ -76842,7 +83309,7 @@ function tagCloud() { words = _8; }; cloud.size = function(_8) { - size2 = [+_8[0], +_8[1]]; + size14 = [+_8[0], +_8[1]]; }; cloud.font = function(_8) { font = functor(_8); @@ -76878,7 +83345,7 @@ function transform7(params) { } var fontFamily = wordStyle.fontFamily, fontWeight = wordStyle.fontWeight, padding3 = wordStyle.padding, fontSize = wordStyle.fontSize; var arr = getSingleKeyValues(data3, weightField); - var range = [min4(arr), max4(arr)]; + var range = [min9(arr), max10(arr)]; var words = data3.map(function(datum) { return { text: datum[wordField], @@ -76906,7 +83373,7 @@ function transform7(params) { spiral, rotate: getRotate(rawOptions) }; - if (is_function_default(placementStrategy)) { + if ((0, import_util352.isFunction)(placementStrategy)) { var result = words.map(function(word2, index2, words2) { return __assign(__assign(__assign({}, word2), { hasText: !!word2.text, font: functor(options.font)(word2, index2, words2), weight: functor(options.fontWeight)(word2, index2, words2), rotate: functor(options.rotate)(word2, index2, words2), size: functor(options.fontSize)(word2, index2, words2), style: "normal" }), placementStrategy.call(chart, word2, index2, words2)); }); @@ -76957,7 +83424,7 @@ function processImageMask(img) { res(img); return; } - if (is_string_default(img)) { + if ((0, import_util352.isString)(img)) { var image_1 = new Image(); image_1.crossOrigin = "anonymous"; image_1.src = img; @@ -76975,10 +83442,10 @@ function processImageMask(img) { }); } function getFontSizeMapping(fontSize, range) { - if (is_function_default(fontSize)) { + if ((0, import_util352.isFunction)(fontSize)) { return fontSize; } - if (is_array_default(fontSize)) { + if ((0, import_util352.isArray)(fontSize)) { var fMin_1 = fontSize[0], fMax_1 = fontSize[1]; if (!range) { return function() { @@ -77011,14 +83478,14 @@ function getSingleKeyValues(data3, key) { } function getRotate(options) { var _a6 = resolveRotate(options), rotation = _a6.rotation, rotationSteps = _a6.rotationSteps; - if (!is_array_default(rotation)) + if (!(0, import_util352.isArray)(rotation)) return rotation; - var min7 = rotation[0]; - var max8 = rotation[1]; - var perSize = rotationSteps === 1 ? 0 : (max8 - min7) / (rotationSteps - 1); + var min13 = rotation[0]; + var max15 = rotation[1]; + var perSize = rotationSteps === 1 ? 0 : (max15 - min13) / (rotationSteps - 1); return function rotate8() { - if (max8 === min7) - return max8; + if (max15 === min13) + return max15; return Math.floor(Math.random() * rotationSteps) * perSize; }; } @@ -77033,10 +83500,10 @@ function resolveRotate(options) { rotationSteps }; } -function min4(numbers) { +function min9(numbers) { return Math.min.apply(Math, numbers); } -function max4(numbers) { +function max10(numbers) { return Math.max.apply(Math, numbers); } @@ -77076,7 +83543,7 @@ function geometry8(params) { xField: "x", yField: "y", seriesField: colorField && WORD_CLOUD_COLOR_FIELD, - rawFields: is_function_default(color4) && __spreadArrays(get_default(options, "rawFields", []), ["datum"]), + rawFields: (0, import_util353.isFunction)(color4) && __spreadArrays((0, import_util353.get)(options, "rawFields", []), ["datum"]), point: { color: color4, shape: "word-cloud" @@ -77111,10 +83578,10 @@ function adaptor7(params) { // node_modules/@antv/g2plot/esm/plots/word-cloud/shapes/word-cloud.js registerShape("point", "word-cloud", { - draw: function(cfg, group2) { + draw: function(cfg, group3) { var cx = cfg.x; var cy = cfg.y; - var shape = group2.addShape("text", { + var shape = group3.addShape("text", { attrs: __assign(__assign({}, getTextAttrs(cfg)), { x: cx, y: cy }) }); var rotate8 = cfg.data.rotate; @@ -77190,8 +83657,12 @@ var WordCloud = function(_super) { return WordCloud2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/scatter/adaptor.js +var import_util355 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/scatter/util.js var import_d3_regression = __toModule(require_d3_regression()); +var import_util354 = __toModule(require_lib()); var REGRESSION_MAP = { exp: import_d3_regression.regressionExp, linear: import_d3_regression.regressionLinear, @@ -77314,7 +83785,7 @@ var getPath4 = function(config) { var _a6 = regressionLine2.type, type2 = _a6 === void 0 ? "linear" : _a6, algorithm = regressionLine2.algorithm; var pathData; if (algorithm) { - pathData = is_array_default(algorithm) ? algorithm : algorithm(data3); + pathData = (0, import_util354.isArray)(algorithm) ? algorithm : algorithm(data3); } else { var reg = REGRESSION_MAP[type2]().x(function(d3) { return d3[xField]; @@ -77333,27 +83804,27 @@ var getMeta = function(options) { var xIsPositiveNumber = xFieldValue > 0; var yIsPositiveNumber = yFieldValue > 0; function getMetaMinMax(field6, axis22) { - var fieldMeta = get_default(meta23, [field6]); + var fieldMeta = (0, import_util354.get)(meta23, [field6]); function getCustomValue(type2) { - return get_default(fieldMeta, type2); + return (0, import_util354.get)(fieldMeta, type2); } var range = {}; if (axis22 === "x") { - if (is_number_default(xFieldValue)) { - if (!is_number_default(getCustomValue("min"))) { + if ((0, import_util354.isNumber)(xFieldValue)) { + if (!(0, import_util354.isNumber)(getCustomValue("min"))) { range["min"] = xIsPositiveNumber ? 0 : xFieldValue * 2; } - if (!is_number_default(getCustomValue("max"))) { + if (!(0, import_util354.isNumber)(getCustomValue("max"))) { range["max"] = xIsPositiveNumber ? xFieldValue * 2 : 0; } } return range; } - if (is_number_default(yFieldValue)) { - if (!is_number_default(getCustomValue("min"))) { + if ((0, import_util354.isNumber)(yFieldValue)) { + if (!(0, import_util354.isNumber)(getCustomValue("min"))) { range["min"] = yIsPositiveNumber ? 0 : yFieldValue * 2; } - if (!is_number_default(getCustomValue("max"))) { + if (!(0, import_util354.isNumber)(getCustomValue("max"))) { range["max"] = yIsPositiveNumber ? yFieldValue * 2 : 0; } } @@ -77383,10 +83854,10 @@ function transformOptions(options) { } prev = curr; } - var keys2 = []; - isOneX && keys2.push(xField); - isOneY && keys2.push(yField); - var meta_1 = pick(getMeta(options), keys2); + var keys6 = []; + isOneX && keys6.push(xField); + isOneY && keys6.push(yField); + var meta_1 = pick4(getMeta(options), keys6); return deepAssign({}, options, { meta: meta_1 }); } return options; @@ -77394,14 +83865,14 @@ function transformOptions(options) { function geometry9(params) { var chart = params.chart, options = params.options; var data3 = options.data, type2 = options.type, color4 = options.color, shape = options.shape, pointStyle = options.pointStyle, shapeField = options.shapeField, colorField = options.colorField, xField = options.xField, yField = options.yField, sizeField = options.sizeField; - var size2 = options.size; + var size14 = options.size; var tooltip10 = options.tooltip; if (sizeField) { - if (!size2) { - size2 = [2, 8]; + if (!size14) { + size14 = [2, 8]; } - if (is_number_default(size2)) { - size2 = [size2, size2]; + if ((0, import_util355.isNumber)(size14)) { + size14 = [size14, size14]; } } if (tooltip10 && !tooltip10.fields) { @@ -77414,7 +83885,7 @@ function geometry9(params) { point: { color: color4, shape, - size: size2, + size: size14, style: pointStyle }, tooltip: tooltip10 @@ -77518,7 +83989,7 @@ function regressionLine(params) { chart.annotation().shape({ top: top_1, render: function(container2, view) { - var group2 = container2.addGroup({ + var group3 = container2.addGroup({ id: chart.id + "-regression-line", name: "regression-line-group" }); @@ -77526,7 +83997,7 @@ function regressionLine(params) { view, options }); - group2.addShape("path", { + group3.addShape("path", { name: "regression-line", attrs: __assign(__assign({ path }, defaultStyle_1), style_1) }); @@ -77684,6 +84155,7 @@ function adaptor9(params) { } // node_modules/@antv/g2plot/esm/plots/radar/interactions/radar-tooltip-action.js +var import_util357 = __toModule(require_lib()); var RadarTooltipController = function(_super) { __extends(RadarTooltipController2, _super); function RadarTooltipController2() { @@ -77709,10 +84181,10 @@ var RadarTooltipController = function(_super) { var items = Util.getTooltipItems(d3, geometry_1); var item = items[0]; if (!shared && item && item.name === title_1) { - var displayTitle = is_nil_default(cfgTitle) ? title_1 : cfgTitle; + var displayTitle = (0, import_util357.isNil)(cfgTitle) ? title_1 : cfgTitle; result_1.push(__assign(__assign({}, item), { name: item.title, title: displayTitle })); } else if (shared && item) { - var displayTitle = is_nil_default(cfgTitle) ? item.name || title_1 : cfgTitle; + var displayTitle = (0, import_util357.isNil)(cfgTitle) ? item.name || title_1 : cfgTitle; result_1.push(__assign(__assign({}, item), { name: item.title, title: displayTitle })); } }); @@ -77813,6 +84285,12 @@ var Radar = function(_super) { return Radar2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/dual-axes/adaptor.js +var import_util362 = __toModule(require_lib()); + +// node_modules/@antv/g2plot/esm/plots/dual-axes/util/option.js +var import_util358 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/dual-axes/types.js var AxisType; (function(AxisType2) { @@ -77840,10 +84318,10 @@ var DEFAULT_RIGHT_YAXIS_CONFIG = __assign(__assign({}, DEFAULT_YAXIS_CONFIG), { // node_modules/@antv/g2plot/esm/plots/dual-axes/util/option.js function isLine(geometryOption) { - return get_default(geometryOption, "geometry") === DualAxesGeometry.Line; + return (0, import_util358.get)(geometryOption, "geometry") === DualAxesGeometry.Line; } function isColumn(geometryOption) { - return get_default(geometryOption, "geometry") === DualAxesGeometry.Column; + return (0, import_util358.get)(geometryOption, "geometry") === DualAxesGeometry.Column; } function getGeometryOption(xField, yField, geometryOption) { return isColumn(geometryOption) ? deepAssign({}, { @@ -77858,12 +84336,12 @@ function getGeometryOption(xField, yField, geometryOption) { } function transformObjectToArray(yField, transformAttribute) { var y1 = yField[0], y22 = yField[1]; - if (is_array_default(transformAttribute)) { + if ((0, import_util358.isArray)(transformAttribute)) { var a1_1 = transformAttribute[0], a2_1 = transformAttribute[1]; return [a1_1, a2_1]; } - var a1 = get_default(transformAttribute, y1); - var a22 = get_default(transformAttribute, y22); + var a1 = (0, import_util358.get)(transformAttribute, y1); + var a22 = (0, import_util358.get)(transformAttribute, y22); return [a1, a22]; } function getYAxisWithDefault(yAxis, axisType) { @@ -77876,18 +84354,19 @@ function getYAxisWithDefault(yAxis, axisType) { } // node_modules/@antv/g2plot/esm/plots/dual-axes/util/legend.js +var import_util359 = __toModule(require_lib()); function getViewLegendItems(params) { var view = params.view, geometryOption = params.geometryOption, yField = params.yField, legend18 = params.legend; - var userMarker = get_default(legend18, "marker"); + var userMarker = (0, import_util359.get)(legend18, "marker"); var geometry35 = findGeometry(view, isLine(geometryOption) ? "line" : "interval"); if (!geometryOption.seriesField) { - var legendItemName = get_default(view, "options.scales." + yField + ".alias") || yField; + var legendItemName = (0, import_util359.get)(view, "options.scales." + yField + ".alias") || yField; var colorAttribute = geometry35.getAttribute("color"); var color4 = view.getTheme().defaultColor; if (colorAttribute) { - color4 = Util.getMappingValue(colorAttribute, legendItemName, get_default(colorAttribute, ["values", 0], color4)); + color4 = Util.getMappingValue(colorAttribute, legendItemName, (0, import_util359.get)(colorAttribute, ["values", 0], color4)); } - var marker = (is_function_default(userMarker) ? userMarker : !is_empty_default(userMarker) && deepAssign({}, { + var marker = ((0, import_util359.isFunction)(userMarker) ? userMarker : !(0, import_util359.isEmpty)(userMarker) && deepAssign({}, { style: { stroke: color4, fill: color4 @@ -77921,13 +84400,14 @@ function getViewLegendItems(params) { ]; } var attributes = geometry35.getGroupAttributes(); - return reduce_default(attributes, function(items, attr) { + return (0, import_util359.reduce)(attributes, function(items, attr) { var attrItems = Util.getLegendItems(view, geometry35, attr, view.getTheme(), userMarker); return items.concat(attrItems); }, []); } // node_modules/@antv/g2plot/esm/plots/dual-axes/util/geometry.js +var import_util360 = __toModule(require_lib()); function drawSingleGeometry(params) { var options = params.options, chart = params.chart; var geometryOption = options.geometryOption; @@ -77935,13 +84415,13 @@ function drawSingleGeometry(params) { var FIELD_KEY = ["xField", "yField"]; if (isLine(geometryOption)) { line(deepAssign({}, params, { - options: __assign(__assign(__assign({}, pick(options, FIELD_KEY)), geometryOption), { line: { + options: __assign(__assign(__assign({}, pick4(options, FIELD_KEY)), geometryOption), { line: { color: geometryOption.color, style: geometryOption.lineStyle } }) })); point(deepAssign({}, params, { - options: __assign(__assign(__assign({}, pick(options, FIELD_KEY)), geometryOption), { point: geometryOption.point && __assign({ color: color4, shape: "circle" }, geometryOption.point) }) + options: __assign(__assign(__assign({}, pick4(options, FIELD_KEY)), geometryOption), { point: geometryOption.point && __assign({ color: color4, shape: "circle" }, geometryOption.point) }) })); var adjust_1 = []; if (isGroup) { @@ -77957,34 +84437,35 @@ function drawSingleGeometry(params) { }); } if (adjust_1.length) { - each_default(chart.geometries, function(g4) { + (0, import_util360.each)(chart.geometries, function(g4) { g4.adjust(adjust_1); }); } } if (isColumn(geometryOption)) { adaptor3(deepAssign({}, params, { - options: __assign(__assign(__assign({}, pick(options, FIELD_KEY)), geometryOption), { widthRatio: geometryOption.columnWidthRatio, interval: __assign(__assign({}, pick(geometryOption, ["color"])), { style: geometryOption.columnStyle }) }) + options: __assign(__assign(__assign({}, pick4(options, FIELD_KEY)), geometryOption), { widthRatio: geometryOption.columnWidthRatio, interval: __assign(__assign({}, pick4(geometryOption, ["color"])), { style: geometryOption.columnStyle }) }) })); } return params; } // node_modules/@antv/g2plot/esm/plots/dual-axes/util/render-sider.js +var import_util361 = __toModule(require_lib()); var doSliderFilter = function(view, sliderValue) { - var min7 = sliderValue[0], max8 = sliderValue[1]; + var min13 = sliderValue[0], max15 = sliderValue[1]; var data3 = view.getOptions().data; var xScale = view.getXScale(); - var dataSize = size(data3); + var dataSize = (0, import_util361.size)(data3); if (!xScale || !dataSize) { return; } var isHorizontal2 = true; - var values2 = values_of_key_default(data3, xScale.field); - var xValues = isHorizontal2 ? values2 : values2.reverse(); - var xTickCount = size(xValues); - var minIndex = Math.floor(min7 * (xTickCount - 1)); - var maxIndex = Math.floor(max8 * (xTickCount - 1)); + var values4 = (0, import_util361.valuesOfKey)(data3, xScale.field); + var xValues = isHorizontal2 ? values4 : values4.reverse(); + var xTickCount = (0, import_util361.size)(xValues); + var minIndex = Math.floor(min13 * (xTickCount - 1)); + var maxIndex = Math.floor(max15 * (xTickCount - 1)); view.filter(xScale.field, function(value2) { var idx = xValues.indexOf(value2); return idx > -1 ? isBetween3(idx, minIndex, maxIndex) : true; @@ -77997,7 +84478,7 @@ function transformOptions2(params) { var _a6; var options = params.options; var _b = options.geometryOptions, geometryOptions = _b === void 0 ? [] : _b, xField = options.xField, yField = options.yField; - var allLine = every_default(geometryOptions, function(_a7) { + var allLine = (0, import_util362.every)(geometryOptions, function(_a7) { var geometry35 = _a7.geometry; return geometry35 === DualAxesGeometry.Line || geometry35 === void 0; }); @@ -78086,12 +84567,12 @@ function color2(params) { var themeColor = ((_a6 = chart.getTheme()) === null || _a6 === void 0 ? void 0 : _a6.colors10) || []; var start = 0; chart.once("beforepaint", function() { - each_default(geometryOptions, function(geometryOption, index2) { + (0, import_util362.each)(geometryOptions, function(geometryOption, index2) { var view = findViewById(chart, index2 === 0 ? LEFT_AXES_VIEW : RIGHT_AXES_VIEW); if (geometryOption.color) return; var groupScale = view.getGroupScales(); - var count2 = get_default(groupScale, [0, "values", "length"], 1); + var count2 = (0, import_util362.get)(groupScale, [0, "values", "length"], 1); var color4 = themeColor.slice(start, start + count2).concat(index2 === 0 ? [] : themeColor); view.geometries.forEach(function(geometry35) { if (geometryOption.seriesField) { @@ -78151,8 +84632,8 @@ function interaction3(params) { function annotation2(params) { var chart = params.chart, options = params.options; var annotations = options.annotations; - var a1 = get_default(annotations, [0]); - var a22 = get_default(annotations, [1]); + var a1 = (0, import_util362.get)(annotations, [0]); + var a22 = (0, import_util362.get)(annotations, [1]); annotation(a1)(deepAssign({}, params, { chart: findViewById(chart, LEFT_AXES_VIEW), options: { @@ -78204,11 +84685,11 @@ function legend8(params) { var rightView = findViewById(chart, RIGHT_AXES_VIEW); if (legend18 === false) { chart.legend(false); - } else if (is_object_default(legend18) && legend18.custom === true) { + } else if ((0, import_util362.isObject)(legend18) && legend18.custom === true) { chart.legend(legend18); } else { - var leftLegend_1 = get_default(geometryOptions, [0, "legend"], legend18); - var rightLegend_1 = get_default(geometryOptions, [1, "legend"], legend18); + var leftLegend_1 = (0, import_util362.get)(geometryOptions, [0, "legend"], legend18); + var rightLegend_1 = (0, import_util362.get)(geometryOptions, [1, "legend"], legend18); chart.once("beforepaint", function() { var leftItems = data3[0].length ? getViewLegendItems({ view: leftView, @@ -78234,27 +84715,27 @@ function legend8(params) { rightView.legend(geometryOptions[1].seriesField, rightLegend_1); } chart.on("legend-item:click", function(evt) { - var delegateObject = get_default(evt, "gEvent.delegateObject", {}); + var delegateObject = (0, import_util362.get)(evt, "gEvent.delegateObject", {}); if (delegateObject && delegateObject.item) { var _a6 = delegateObject.item, field_1 = _a6.value, isGeometry = _a6.isGeometry, viewId = _a6.viewId; if (isGeometry) { - var idx = find_index_default(yField, function(yF) { + var idx = (0, import_util362.findIndex)(yField, function(yF) { return yF === field_1; }); if (idx > -1) { - var geometries = get_default(findViewById(chart, viewId), "geometries"); - each_default(geometries, function(g4) { + var geometries = (0, import_util362.get)(findViewById(chart, viewId), "geometries"); + (0, import_util362.each)(geometries, function(g4) { g4.changeVisible(!delegateObject.item.unchecked); }); } } else { - var legendItem_1 = get_default(chart.getController("legend"), "option.items", []); - each_default(chart.views, function(view) { + var legendItem_1 = (0, import_util362.get)(chart.getController("legend"), "option.items", []); + (0, import_util362.each)(chart.views, function(view) { var groupScale = view.getGroupScales(); - each_default(groupScale, function(scale12) { + (0, import_util362.each)(groupScale, function(scale12) { if (scale12.values && scale12.values.indexOf(field_1) > -1) { view.filter(scale12.field, function(value2) { - var curLegendItem = find_default(legendItem_1, function(item) { + var curLegendItem = (0, import_util362.find)(legendItem_1, function(item) { return item.value === value2; }); return !curLegendItem.unchecked; @@ -78278,13 +84759,13 @@ function slider2(params) { leftView.option("slider", slider3); leftView.on("slider:valuechanged", function(evt) { var _a6 = evt.event, value2 = _a6.value, originValue = _a6.originValue; - if (is_equal_default(value2, originValue)) { + if ((0, import_util362.isEqual)(value2, originValue)) { return; } doSliderFilter(rightView, value2); }); chart.once("afterpaint", function() { - if (!is_boolean_default(slider3)) { + if (!(0, import_util362.isBoolean)(slider3)) { var start = slider3.start, end2 = slider3.end; if (start || end2) { doSliderFilter(rightView, [start, end2]); @@ -78319,6 +84800,7 @@ var DualAxes = function(_super) { }(Plot); // node_modules/@antv/g2plot/esm/plots/tiny-line/constants.js +var import_util363 = __toModule(require_lib()); var X_FIELD = "x"; var Y_FIELD = "y"; var DEFAULT_TOOLTIP_OPTIONS = { @@ -78326,7 +84808,7 @@ var DEFAULT_TOOLTIP_OPTIONS = { shared: true, showMarkers: false, customContent: function(x6, data3) { - return "" + get_default(data3, [0, "data", "y"], 0); + return "" + (0, import_util363.get)(data3, [0, "data", "y"], 0); }, containerTpl: '
    ', itemTpl: "{value}", @@ -78348,8 +84830,9 @@ var DEFAULT_OPTIONS10 = { }; // node_modules/@antv/g2plot/esm/plots/tiny-line/utils.js +var import_util364 = __toModule(require_lib()); function getTinyData(data3) { - return map_default(data3 || [], function(y5, x6) { + return (0, import_util364.map)(data3 || [], function(y5, x6) { return { x: "" + x6, y: y5 }; }); } @@ -78475,12 +84958,13 @@ function adaptor13(params) { } // node_modules/@antv/g2plot/esm/plots/tiny-column/constants.js +var import_util365 = __toModule(require_lib()); var DEFAULT_TOOLTIP_OPTIONS2 = { showTitle: false, shared: true, showMarkers: false, customContent: function(x6, data3) { - return "" + get_default(data3, [0, "data", "y"], 0); + return "" + (0, import_util365.get)(data3, [0, "data", "y"], 0); }, containerTpl: '
    ', itemTpl: "{value}", @@ -78565,6 +85049,7 @@ var TinyArea = function(_super) { }(Plot); // node_modules/@antv/g2plot/esm/utils/transform/histogram.js +var import_util366 = __toModule(require_lib()); function getBinKey(value2, binWidth, binNumber) { if (binNumber === 1) { return [0, binWidth]; @@ -78572,43 +85057,43 @@ function getBinKey(value2, binWidth, binNumber) { var index2 = Math.floor(value2 / binWidth); return [binWidth * index2, binWidth * (index2 + 1)]; } -function sturges(values2) { - return Math.ceil(Math.log(values2.length) / Math.LN2) + 1; +function sturges(values4) { + return Math.ceil(Math.log(values4.length) / Math.LN2) + 1; } function binHistogram(data3, binField, binWidth, binNumber, stackField) { - var originData_copy = clone_default(data3); - sort_by_default(originData_copy, binField); - var values2 = values_of_key_default(originData_copy, binField); - var range = get_range_default(values2); + var originData_copy = (0, import_util366.clone)(data3); + (0, import_util366.sortBy)(originData_copy, binField); + var values4 = (0, import_util366.valuesOfKey)(originData_copy, binField); + var range = (0, import_util366.getRange)(values4); var rangeWidth = range.max - range.min; var _binWidth = binWidth; if (!binWidth && binNumber) { _binWidth = binNumber > 1 ? rangeWidth / (binNumber - 1) : range.max; } if (!binWidth && !binNumber) { - var _defaultBinNumber = sturges(values2); + var _defaultBinNumber = sturges(values4); _binWidth = rangeWidth / _defaultBinNumber; } var bins = {}; - var groups = group_by_default(originData_copy, stackField); - if (is_empty_default(groups)) { - each_default(originData_copy, function(data4) { + var groups = (0, import_util366.groupBy)(originData_copy, stackField); + if ((0, import_util366.isEmpty)(groups)) { + (0, import_util366.each)(originData_copy, function(data4) { var value2 = data4[binField]; var bin = getBinKey(value2, _binWidth, binNumber); var binKey = bin[0] + "-" + bin[1]; - if (!has_key_default(bins, binKey)) { + if (!(0, import_util366.hasKey)(bins, binKey)) { bins[binKey] = { range: bin, count: 0 }; } bins[binKey].count += 1; }); } else { Object.keys(groups).forEach(function(groupKey) { - each_default(groups[groupKey], function(data4) { + (0, import_util366.each)(groups[groupKey], function(data4) { var value2 = data4[binField]; var bin = getBinKey(value2, _binWidth, binNumber); var binKey = bin[0] + "-" + bin[1]; var groupKeyBinKey = binKey + "-" + groupKey; - if (!has_key_default(bins, groupKeyBinKey)) { + if (!(0, import_util366.hasKey)(bins, groupKeyBinKey)) { bins[groupKeyBinKey] = { range: bin, count: 0 }; bins[groupKeyBinKey][stackField] = groupKey; } @@ -78617,7 +85102,7 @@ function binHistogram(data3, binField, binWidth, binNumber, stackField) { }); } var plotData = []; - each_default(bins, function(bin) { + (0, import_util366.each)(bins, function(bin) { plotData.push(bin); }); return plotData; @@ -78727,6 +85212,9 @@ var Histogram = function(_super) { return Histogram2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/progress/adaptor.js +var import_util368 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/progress/constants.js var DEFAULT_COLOR = ["#FAAD14", "#E8EDF3"]; var DEFAULT_OPTIONS14 = { @@ -78736,8 +85224,9 @@ var DEFAULT_OPTIONS14 = { }; // node_modules/@antv/g2plot/esm/plots/progress/utils.js +var import_util367 = __toModule(require_lib()); function getProgressData(percent2) { - var clampPercent = clamp_default(isRealNumber(percent2) ? percent2 : 0, 0, 1); + var clampPercent = (0, import_util367.clamp)(isRealNumber(percent2) ? percent2 : 0, 0, 1); return [ { type: "current", @@ -78764,7 +85253,7 @@ function geometry16(params) { widthRatio: barWidthRatio, interval: { style: progressStyle, - color: is_string_default(color4) ? [color4, DEFAULT_COLOR[1]] : color4 + color: (0, import_util368.isString)(color4) ? [color4, DEFAULT_COLOR[1]] : color4 }, args: { zIndexReversed: true, @@ -78812,6 +85301,7 @@ var Progress = function(_super) { }(Plot); // node_modules/@antv/g2plot/esm/plots/ring-progress/adaptor.js +var import_util369 = __toModule(require_lib()); function coordinate6(params) { var chart = params.chart, options = params.options; var innerRadius = options.innerRadius, radius = options.radius; @@ -78826,13 +85316,13 @@ function statistic(params, updated) { var innerRadius = options.innerRadius, statistic4 = options.statistic, percent2 = options.percent, meta23 = options.meta; chart.getController("annotation").clear(true); if (innerRadius && statistic4) { - var metaFormatter = get_default(meta23, ["percent", "formatter"]) || function(v3) { + var metaFormatter = (0, import_util369.get)(meta23, ["percent", "formatter"]) || function(v3) { return (v3 * 100).toFixed(2) + "%"; }; var contentOpt = statistic4.content; if (contentOpt) { contentOpt = deepAssign({}, contentOpt, { - content: !is_nil_default(contentOpt.content) ? contentOpt.content : metaFormatter(percent2) + content: !(0, import_util369.isNil)(contentOpt.content) ? contentOpt.content : metaFormatter(percent2) }); } renderStatistic(chart, { statistic: __assign(__assign({}, statistic4), { content: contentOpt }), plotType: "ring-progress" }, { percent: percent2 }); @@ -78895,6 +85385,7 @@ var RingProgress = function(_super) { }(Plot); // node_modules/@antv/g2plot/esm/plots/heatmap/adaptor.js +var import_util370 = __toModule(require_lib()); function geometry17(params) { var chart = params.chart, options = params.options; var data3 = options.data, type2 = options.type, xField = options.xField, yField = options.yField, colorField = options.colorField, sizeField = options.sizeField, sizeRatio = options.sizeRatio, shape = options.shape, color4 = options.color, tooltip10 = options.tooltip, heatmapStyle = options.heatmapStyle; @@ -78927,9 +85418,9 @@ function geometry17(params) { var field6 = data3.map(function(row) { return row[sizeField]; }); - var min7 = Math.min.apply(Math, field6); - var max8 = Math.max.apply(Math, field6); - return [shape, (get_default(dautm, sizeField) - min7) / (max8 - min7), checkedSizeRatio]; + var min13 = Math.min.apply(Math, field6); + var max15 = Math.max.apply(Math, field6); + return [shape, ((0, import_util370.get)(dautm, sizeField) - min13) / (max15 - min13), checkedSizeRatio]; } : function() { return [shape, 1, checkedSizeRatio]; }), @@ -79047,7 +85538,7 @@ var DEFAULT_OPTIONS16 = deepAssign({}, Plot.getDefaultOptions(), { // node_modules/@antv/g2plot/esm/plots/heatmap/shapes/circle.js registerShape("polygon", "circle", { - draw: function(cfg, group2) { + draw: function(cfg, group3) { var _a6, _b; var cx = cfg.x; var cy = cfg.y; @@ -79060,7 +85551,7 @@ registerShape("polygon", "circle", { var radiusRatio = Math.sqrt(sizeRatio); var radius = maxRadius * radiusRatio * Math.sqrt(value2); var fill = ((_a6 = cfg.style) === null || _a6 === void 0 ? void 0 : _a6.fill) || cfg.color || ((_b = cfg.defaultStyle) === null || _b === void 0 ? void 0 : _b.fill); - var polygon2 = group2.addShape("circle", { + var polygon2 = group3.addShape("circle", { attrs: __assign(__assign(__assign({ x: cx, y: cy, r: radius }, cfg.defaultStyle), cfg.style), { fill }) }); return polygon2; @@ -79069,7 +85560,7 @@ registerShape("polygon", "circle", { // node_modules/@antv/g2plot/esm/plots/heatmap/shapes/square.js registerShape("polygon", "square", { - draw: function(cfg, group2) { + draw: function(cfg, group3) { var _a6, _b; var cx = cfg.x; var cy = cfg.y; @@ -79082,7 +85573,7 @@ registerShape("polygon", "square", { var lenRatio = Math.sqrt(sizeRatio); var sideLength = maxSideLength * lenRatio * Math.sqrt(value2); var fill = ((_a6 = cfg.style) === null || _a6 === void 0 ? void 0 : _a6.fill) || cfg.color || ((_b = cfg.defaultStyle) === null || _b === void 0 ? void 0 : _b.fill); - var polygon2 = group2.addShape("rect", { + var polygon2 = group3.addShape("rect", { attrs: __assign(__assign(__assign({ x: cx - sideLength / 2, y: cy - sideLength / 2, width: sideLength, height: sideLength }, cfg.defaultStyle), cfg.style), { fill }) }); return polygon2; @@ -79109,6 +85600,9 @@ var Heatmap2 = function(_super) { return Heatmap3; }(Plot); +// node_modules/@antv/g2plot/esm/plots/box/adaptor.js +var import_util372 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/box/constant.js var _a3; var BOX_RANGE = "$$range$$"; @@ -79128,11 +85622,12 @@ var DEFAULT_OPTIONS17 = deepAssign({}, Plot.getDefaultOptions(), { }); // node_modules/@antv/g2plot/esm/plots/box/utils.js +var import_util371 = __toModule(require_lib()); var transformData = function(data3, yField) { var newData = data3; if (Array.isArray(yField)) { var low_1 = yField[0], q1_1 = yField[1], median_1 = yField[2], q3_1 = yField[3], high_1 = yField[4]; - newData = map_default(data3, function(obj) { + newData = (0, import_util371.map)(data3, function(obj) { obj[BOX_RANGE] = [obj[low_1], obj[q1_1], obj[median_1], obj[q3_1], obj[high_1]]; return obj; }); @@ -79145,11 +85640,11 @@ function field(params) { var chart = params.chart, options = params.options; var xField = options.xField, yField = options.yField, groupField = options.groupField, color4 = options.color, tooltip10 = options.tooltip, boxStyle = options.boxStyle; chart.data(transformData(options.data, yField)); - var yFieldName = is_array_default(yField) ? BOX_RANGE : yField; - var rawFields = yField ? is_array_default(yField) ? yField : [yField] : []; + var yFieldName = (0, import_util372.isArray)(yField) ? BOX_RANGE : yField; + var rawFields = yField ? (0, import_util372.isArray)(yField) ? yField : [yField] : []; var tooltipOptions = tooltip10; if (tooltipOptions !== false) { - tooltipOptions = deepAssign({}, { fields: is_array_default(yField) ? yField : [] }, tooltipOptions); + tooltipOptions = deepAssign({}, { fields: (0, import_util372.isArray)(yField) ? yField : [] }, tooltipOptions); } var ext = schema2(deepAssign({}, params, { options: { @@ -79208,7 +85703,7 @@ function meta12(params) { var syncName = BOX_SYNC_NAME; baseMeta = (_a6 = {}, _a6[outliersField] = { sync: syncName, nice: true }, _a6[yFieldName] = { sync: syncName, nice: true }, _a6); } - var scales = deepAssign(baseMeta, meta23, (_b = {}, _b[xField] = pick(xAxis, AXIS_META_CONFIG_KEYS), _b[yFieldName] = pick(yAxis, AXIS_META_CONFIG_KEYS), _b)); + var scales = deepAssign(baseMeta, meta23, (_b = {}, _b[xField] = pick4(xAxis, AXIS_META_CONFIG_KEYS), _b[yFieldName] = pick4(yAxis, AXIS_META_CONFIG_KEYS), _b)); chart.scale(scales); return params; } @@ -79277,7 +85772,11 @@ var Box = function(_super) { return Box3; }(Plot); +// node_modules/@antv/g2plot/esm/plots/violin/adaptor.js +var import_util374 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/violin/utils.js +var import_util373 = __toModule(require_lib()); var import_pdfast = __toModule(require_src()); // node_modules/@antv/g2plot/esm/utils/transform/quantile.js @@ -79408,19 +85907,19 @@ function quantileIndex(len5, p4) { } // node_modules/@antv/g2plot/esm/plots/violin/utils.js -var toBoxValue = function(values2) { +var toBoxValue = function(values4) { return { - low: min_default(values2), - high: max_default(values2), - q1: quantile(values2, 0.25), - q3: quantile(values2, 0.75), - median: quantile(values2, [0.5]), - minMax: [min_default(values2), max_default(values2)], - quantile: [quantile(values2, 0.25), quantile(values2, 0.75)] + low: (0, import_util373.min)(values4), + high: (0, import_util373.max)(values4), + q1: quantile(values4, 0.25), + q3: quantile(values4, 0.75), + median: quantile(values4, [0.5]), + minMax: [(0, import_util373.min)(values4), (0, import_util373.max)(values4)], + quantile: [quantile(values4, 0.25), quantile(values4, 0.75)] }; }; -var toViolinValue = function(values2, pdfOptions) { - var pdfResults = import_pdfast.default.create(values2, pdfOptions); +var toViolinValue = function(values4, pdfOptions) { + var pdfResults = import_pdfast.default.create(values4, pdfOptions); return { violinSize: pdfResults.map(function(result) { return result.y; @@ -79439,26 +85938,26 @@ var transformViolinData = function(options) { width: kde.width }; if (!seriesField) { - var group_1 = group_by_default(data3, xField); + var group_1 = (0, import_util373.groupBy)(data3, xField); return Object.keys(group_1).map(function(x6) { var records = group_1[x6]; - var values2 = records.map(function(record) { + var values4 = records.map(function(record) { return record[yField]; }); - return __assign(__assign({ x: x6 }, toViolinValue(values2, pdfOptions)), toBoxValue(values2)); + return __assign(__assign({ x: x6 }, toViolinValue(values4, pdfOptions)), toBoxValue(values4)); }); } var resultList = []; - var seriesGroup = group_by_default(data3, seriesField); + var seriesGroup = (0, import_util373.groupBy)(data3, seriesField); Object.keys(seriesGroup).forEach(function(series) { - var group2 = group_by_default(seriesGroup[series], xField); - return Object.keys(group2).forEach(function(key) { + var group3 = (0, import_util373.groupBy)(seriesGroup[series], xField); + return Object.keys(group3).forEach(function(key) { var _a6; - var records = group2[key]; - var values2 = records.map(function(record) { + var records = group3[key]; + var values4 = records.map(function(record) { return record[yField]; }); - resultList.push(__assign(__assign((_a6 = { x: key }, _a6[seriesField] = series, _a6), toViolinValue(values2, pdfOptions)), toBoxValue(values2))); + resultList.push(__assign(__assign((_a6 = { x: key }, _a6[seriesField] = series, _a6), toViolinValue(values4, pdfOptions)), toBoxValue(values4))); }); }); return resultList; @@ -79625,9 +86124,9 @@ function meta13(params) { var chart = params.chart, options = params.options; var meta23 = options.meta, xAxis = options.xAxis, yAxis = options.yAxis; var baseMeta = {}; - var scales = deepAssign(baseMeta, meta23, (_a6 = {}, _a6[X_FIELD2] = __assign(__assign({ sync: true }, pick(xAxis, AXIS_META_CONFIG_KEYS)), { + var scales = deepAssign(baseMeta, meta23, (_a6 = {}, _a6[X_FIELD2] = __assign(__assign({ sync: true }, pick4(xAxis, AXIS_META_CONFIG_KEYS)), { type: "cat" - }), _a6[VIOLIN_Y_FIELD] = __assign({ sync: true }, pick(yAxis, AXIS_META_CONFIG_KEYS)), _a6[MIN_MAX_FIELD] = __assign({ sync: VIOLIN_Y_FIELD }, pick(yAxis, AXIS_META_CONFIG_KEYS)), _a6[QUANTILE_FIELD] = __assign({ sync: VIOLIN_Y_FIELD }, pick(yAxis, AXIS_META_CONFIG_KEYS)), _a6[MEDIAN_FIELD] = __assign({ sync: VIOLIN_Y_FIELD }, pick(yAxis, AXIS_META_CONFIG_KEYS)), _a6)); + }), _a6[VIOLIN_Y_FIELD] = __assign({ sync: true }, pick4(yAxis, AXIS_META_CONFIG_KEYS)), _a6[MIN_MAX_FIELD] = __assign({ sync: VIOLIN_Y_FIELD }, pick4(yAxis, AXIS_META_CONFIG_KEYS)), _a6[QUANTILE_FIELD] = __assign({ sync: VIOLIN_Y_FIELD }, pick4(yAxis, AXIS_META_CONFIG_KEYS)), _a6[MEDIAN_FIELD] = __assign({ sync: VIOLIN_Y_FIELD }, pick4(yAxis, AXIS_META_CONFIG_KEYS)), _a6)); chart.scale(scales); return params; } @@ -79655,15 +86154,15 @@ function legend11(params) { chart.legend(false); } else { var legendField_1 = seriesField ? seriesField : X_FIELD2; - var legendOptions = omit_default(legend18, ["selected"]); + var legendOptions = (0, import_util374.omit)(legend18, ["selected"]); if (!shape || !shape.startsWith("hollow")) { - if (!get_default(legendOptions, ["marker", "style", "lineWidth"])) { - set_default(legendOptions, ["marker", "style", "lineWidth"], 0); + if (!(0, import_util374.get)(legendOptions, ["marker", "style", "lineWidth"])) { + (0, import_util374.set)(legendOptions, ["marker", "style", "lineWidth"], 0); } } chart.legend(legendField_1, legendOptions); - if (get_default(legend18, "selected")) { - each_default(chart.views, function(view) { + if ((0, import_util374.get)(legend18, "selected")) { + (0, import_util374.each)(chart.views, function(view) { return view.legend(legendField_1, legend18); }); } @@ -79679,13 +86178,13 @@ function annotation3(params) { function animation3(params) { var chart = params.chart, options = params.options; var animation7 = options.animation; - each_default(chart.views, function(view) { + (0, import_util374.each)(chart.views, function(view) { if (typeof animation7 === "boolean") { view.animate(animation7); } else { view.animate(true); } - each_default(view.geometries, function(g4) { + (0, import_util374.each)(view.geometries, function(g4) { g4.animate(animation7); }); }); @@ -79719,8 +86218,14 @@ var Violin2 = function(_super) { return Violin3; }(Plot); +// node_modules/@antv/g2plot/esm/plots/venn/adaptor.js +var import_util379 = __toModule(require_lib()); + +// node_modules/@antv/g2plot/esm/plots/venn/utils.js +var import_util375 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/utils/color/blend.js -var each2 = function(f3) { +var each136 = function(f3) { return function(c0, c1) { var out = []; out[0] = f3(c0[0], c1[0]); @@ -79773,7 +86278,7 @@ function blend(c0, c1, mode) { if (mode === void 0) { mode = "normal"; } - var blendRgbArr = each2(innerBlend(mode))(colorToArr(c0), colorToArr(c1)); + var blendRgbArr = each136(innerBlend(mode))(colorToArr(c0), colorToArr(c1)); var _a6 = colorToArr(c0), r0 = _a6[0], g0 = _a6[1], b02 = _a6[2], a0 = _a6[3]; var _b = colorToArr(c1), r1 = _b[0], g1 = _b[1], b12 = _b[2], a1 = _b[3]; var a4 = Number((a0 + a1 * (1 - a0)).toFixed(2)); @@ -79964,13 +86469,13 @@ function venn(areas, parameters) { setids.push(setid); } } - var solution = (0, import_fmin.nelderMead)(function(values2) { + var solution = (0, import_fmin.nelderMead)(function(values4) { var current = {}; for (var i5 = 0; i5 < setids.length; ++i5) { var setid_1 = setids[i5]; current[setid_1] = { - x: values2[2 * i5], - y: values2[2 * i5 + 1], + x: values4[2 * i5], + y: values4[2 * i5 + 1], radius: circles[setid_1].radius }; } @@ -80107,11 +86612,11 @@ function constrainedMDSLayout(areas, params) { var positions = best.x; var circles = {}; for (i4 = 0; i4 < sets.length; ++i4) { - var set10 = sets[i4]; - circles[set10.sets[0]] = { + var set13 = sets[i4]; + circles[set13.sets[0]] = { x: positions[2 * i4] * norm, y: positions[2 * i4 + 1] * norm, - radius: Math.sqrt(set10.size / Math.PI) + radius: Math.sqrt(set13.size / Math.PI) }; } if (params.history) { @@ -80124,19 +86629,19 @@ function constrainedMDSLayout(areas, params) { function greedyLayout(areas, params) { var loss = params && params.lossFunction ? params.lossFunction : lossFunction; var circles = {}, setOverlaps = {}; - var set10; + var set13; for (var i4 = 0; i4 < areas.length; ++i4) { var area2 = areas[i4]; if (area2.sets.length == 1) { - set10 = area2.sets[0]; - circles[set10] = { + set13 = area2.sets[0]; + circles[set13] = { x: 1e10, y: 1e10, rowid: Object.keys(circles).length, size: area2.size, radius: Math.sqrt(area2.size / Math.PI) }; - setOverlaps[set10] = []; + setOverlaps[set13] = []; } } areas = areas.filter(function(a4) { @@ -80153,13 +86658,13 @@ function greedyLayout(areas, params) { setOverlaps[right2].push({ set: left2, size: current.size, weight }); } var mostOverlapped = []; - for (set10 in setOverlaps) { - if (setOverlaps.hasOwnProperty(set10)) { - var size2 = 0; - for (var i4 = 0; i4 < setOverlaps[set10].length; ++i4) { - size2 += setOverlaps[set10][i4].size * setOverlaps[set10][i4].weight; + for (set13 in setOverlaps) { + if (setOverlaps.hasOwnProperty(set13)) { + var size14 = 0; + for (var i4 = 0; i4 < setOverlaps[set13].length; ++i4) { + size14 += setOverlaps[set13][i4].size * setOverlaps[set13][i4].weight; } - mostOverlapped.push({ set: set10, size: size2 }); + mostOverlapped.push({ set: set13, size: size14 }); } } function sortOrder(a4, b10) { @@ -80178,20 +86683,20 @@ function greedyLayout(areas, params) { positionSet({ x: 0, y: 0 }, mostOverlapped[0].set); for (var i4 = 1; i4 < mostOverlapped.length; ++i4) { var setIndex = mostOverlapped[i4].set, overlap2 = setOverlaps[setIndex].filter(isPositioned); - set10 = circles[setIndex]; + set13 = circles[setIndex]; overlap2.sort(sortOrder); if (overlap2.length === 0) { throw "ERROR: missing pairwise overlap information"; } var points = []; for (var j4 = 0; j4 < overlap2.length; ++j4) { - var p1 = circles[overlap2[j4].set], d1 = distanceFromIntersectArea(set10.radius, p1.radius, overlap2[j4].size); + var p1 = circles[overlap2[j4].set], d1 = distanceFromIntersectArea(set13.radius, p1.radius, overlap2[j4].size); points.push({ x: p1.x + d1, y: p1.y }); points.push({ x: p1.x - d1, y: p1.y }); points.push({ y: p1.y + d1, x: p1.x }); points.push({ y: p1.y - d1, x: p1.x }); for (var k4 = j4 + 1; k4 < overlap2.length; ++k4) { - var p22 = circles[overlap2[k4].set], d22 = distanceFromIntersectArea(set10.radius, p22.radius, overlap2[k4].size); + var p22 = circles[overlap2[k4].set], d22 = distanceFromIntersectArea(set13.radius, p22.radius, overlap2[k4].size); var extraPoints = circleCircleIntersection({ x: p1.x, y: p1.y, radius: d1 }, { x: p22.x, y: p22.y, radius: d22 }); for (var l4 = 0; l4 < extraPoints.length; ++l4) { points.push(extraPoints[l4]); @@ -80468,7 +86973,7 @@ var DEFAULT_OPTIONS19 = { }; // node_modules/@antv/g2plot/esm/plots/venn/utils.js -var getColorMap = memoize_default(function(colorPalette, data3, blendMode, setsField) { +var getColorMap = (0, import_util375.memoize)(function(colorPalette, data3, blendMode, setsField) { var colorMap2 = new Map(); var colorPaletteLen = colorPalette.length; data3.forEach(function(d3, idx) { @@ -80514,8 +87019,8 @@ function layoutVennData(options, width2, height, padding3) { var sets = row.sets; var id = sets.join(","); row[ID_FIELD] = id; - var setCircles = sets.map(function(set10) { - return circles[set10]; + var setCircles = sets.map(function(set13) { + return circles[set13]; }); var path = intersectionAreaPath(setCircles); if (!/[zZ]$/.test(path)) { @@ -80523,7 +87028,7 @@ function layoutVennData(options, width2, height, padding3) { } row[PATH_FIELD] = path; var center2 = textCenters[id] || { x: 0, y: 0 }; - mix(row, center2); + (0, import_util375.assign)(row, center2); }); return vennData; } @@ -80545,15 +87050,15 @@ registerShape("schema", "venn", { var data3 = cfg.data; var segments = parsePathString2(data3[PATH_FIELD]); var fillAttrs = getFillAttrs(cfg); - var group2 = container2.addGroup({ name: "venn-shape" }); - group2.addShape("path", { + var group3 = container2.addGroup({ name: "venn-shape" }); + group3.addShape("path", { attrs: __assign(__assign({}, fillAttrs), { path: segments }), name: "venn-path" }); var _a6 = cfg.customInfo, offsetX = _a6.offsetX, offsetY = _a6.offsetY; var matrix = Util.transform(null, [["t", offsetX, offsetY]]); - group2.setMatrix(matrix); - return group2; + group3.setMatrix(matrix); + return group3; }, getMarker: function(markerCfg) { var color4 = markerCfg.color; @@ -80743,14 +87248,14 @@ function colorMap(params, data3, colorPalette) { var blendMode = options.blendMode, setsField = options.setsField; var _a6 = chart.getTheme(), colors10 = _a6.colors10, colors20 = _a6.colors20; var palette = colorPalette; - if (!is_array_default(palette)) { + if (!(0, import_util379.isArray)(palette)) { palette = data3.filter(function(d3) { return d3[setsField].length === 1; }).length <= 10 ? colors10 : colors20; } - var map6 = getColorMap(palette, data3, blendMode, setsField); + var map23 = getColorMap(palette, data3, blendMode, setsField); return function(id) { - return map6.get(id) || palette[0]; + return map23.get(id) || palette[0]; }; } function transformColor(params, data3) { @@ -80770,7 +87275,7 @@ function padding(params) { var legend18 = options.legend, appendPadding = options.appendPadding, padding3 = options.padding; var tempPadding = normalPadding(appendPadding); if (legend18 !== false) { - tempPadding = getAdjustAppendPadding(appendPadding, get_default(legend18, "position"), LEGEND_SPACE); + tempPadding = getAdjustAppendPadding(appendPadding, (0, import_util379.get)(legend18, "position"), LEGEND_SPACE); } chart.appendPadding = resolveAllPadding([tempPadding, padding3]); return params; @@ -80791,9 +87296,9 @@ function data2(params) { var sets = datum.sets; return islegalSets(currSets, sets); }); - if (!is_equal_default(filterSets, data3)) + if (!(0, import_util379.isEqual)(filterSets, data3)) log2(LEVEL.WARN, false, "warn: %s", "\u4EA4\u96C6\u4E2D\u4E0D\u80FD\u51FA\u73B0\u4E0D\u5B58\u5728\u7684\u96C6\u5408, \u8BF7\u8F93\u5165\u5408\u6CD5\u6570\u636E"); - return deep_mix_default({}, params, { + return (0, import_util379.deepMix)({}, params, { options: { data: filterSets } @@ -80847,7 +87352,7 @@ function label11(params) { geometry35.label({ fields: ["id"], callback, - cfg: deep_mix_default({}, transformLabel(cfg), { + cfg: (0, import_util379.deepMix)({}, transformLabel(cfg), { type: "venn", customLabelInfo }) @@ -80966,9 +87471,10 @@ var DEFAULT_OPTIONS20 = deepAssign({}, Plot.getDefaultOptions(), { }); // node_modules/@antv/g2plot/esm/plots/stock/utils.js +var import_util380 = __toModule(require_lib()); function getStockData(data3, yField) { - return map_default(data3, function(obj) { - if (is_array_default(yField)) { + return (0, import_util380.map)(data3, function(obj) { + if ((0, import_util380.isArray)(yField)) { var open_1 = yField[0], close_1 = yField[1], high = yField[2], low = yField[3]; obj[TREND_FIELD] = obj[open_1] <= obj[close_1] ? TREND_UP : TREND_DOWN; obj[Y_FIELD2] = [obj[open_1], obj[close_1], obj[high], obj[low]]; @@ -81012,7 +87518,7 @@ function meta14(params) { }, _a6[TREND_FIELD] = { values: [TREND_UP, TREND_DOWN] }, _a6); - var scales = deepAssign(baseMeta, meta23, (_b = {}, _b[xField] = pick(xAxis, AXIS_META_CONFIG_KEYS), _b[Y_FIELD2] = pick(yAxis, AXIS_META_CONFIG_KEYS), _b)); + var scales = deepAssign(baseMeta, meta23, (_b = {}, _b[xField] = pick4(xAxis, AXIS_META_CONFIG_KEYS), _b[Y_FIELD2] = pick4(yAxis, AXIS_META_CONFIG_KEYS), _b)); chart.scale(scales); return params; } @@ -81080,6 +87586,15 @@ var Stock = function(_super) { return Stock2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/funnel/index.js +var import_util386 = __toModule(require_lib()); + +// node_modules/@antv/g2plot/esm/plots/funnel/adaptor.js +var import_util385 = __toModule(require_lib()); + +// node_modules/@antv/g2plot/esm/plots/funnel/geometries/basic.js +var import_util382 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/funnel/constant.js var _a4; var FUNNEL_PERCENT = "$$percentage$$"; @@ -81119,17 +87634,18 @@ var DEFAULT_OPTIONS21 = { }; // node_modules/@antv/g2plot/esm/plots/funnel/geometries/common.js +var import_util381 = __toModule(require_lib()); function transformData2(data3, originData, options) { var formatData = []; var yField = options.yField, maxSize = options.maxSize, minSize = options.minSize; - var maxYFieldValue = get_default(max_by_default(originData, yField), [yField]); - var max8 = is_number_default(maxSize) ? maxSize : 1; - var min7 = is_number_default(minSize) ? minSize : 0; - formatData = map_default(data3, function(row, index2) { + var maxYFieldValue = (0, import_util381.get)((0, import_util381.maxBy)(originData, yField), [yField]); + var max15 = (0, import_util381.isNumber)(maxSize) ? maxSize : 1; + var min13 = (0, import_util381.isNumber)(minSize) ? minSize : 0; + formatData = (0, import_util381.map)(data3, function(row, index2) { var percent2 = (row[yField] || 0) / maxYFieldValue; row[FUNNEL_PERCENT] = percent2; - row[FUNNEL_MAPPING_VALUE] = (max8 - min7) * percent2 + min7; - row[FUNNEL_CONVERSATION] = [get_default(data3, [index2 - 1, yField]), row[yField]]; + row[FUNNEL_MAPPING_VALUE] = (max15 - min13) * percent2 + min13; + row[FUNNEL_CONVERSATION] = [(0, import_util381.get)(data3, [index2 - 1, yField]), row[yField]]; return row; }); return formatData; @@ -81147,7 +87663,7 @@ function conversionTagComponent(getLineCoordinate) { var lineOption = getLineCoordinate(obj, index2, data3, { top: true, text: { - content: is_function_default(formatter_1) ? formatter_1(obj, data3) : formatter_1, + content: (0, import_util381.isFunction)(formatter_1) ? formatter_1(obj, data3) : formatter_1, offsetX: conversionTag5.offsetX, offsetY: conversionTag5.offsetY, position: "end", @@ -81185,7 +87701,7 @@ function geometry20(params) { xField, yField: FUNNEL_MAPPING_VALUE, colorField: xField, - tooltipFields: is_array_default(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]), + tooltipFields: (0, import_util382.isArray)(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]), mapping: { shape, tooltip: formatter, @@ -81224,6 +87740,7 @@ function basicFunnel(params) { } // node_modules/@antv/g2plot/esm/plots/funnel/geometries/compare.js +var import_util383 = __toModule(require_lib()); function field3(params) { var _a6; var chart = params.chart, options = params.options; @@ -81273,7 +87790,7 @@ function geometry21(params) { xField, yField: FUNNEL_MAPPING_VALUE, colorField: xField, - tooltipFields: is_array_default(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]), + tooltipFields: (0, import_util383.isArray)(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]), mapping: { shape: "funnel", tooltip: formatter, @@ -81355,14 +87872,15 @@ function facetFunnel(params) { } // node_modules/@antv/g2plot/esm/plots/funnel/geometries/dynamic-height.js +var import_util384 = __toModule(require_lib()); function field5(params) { var chart = params.chart, options = params.options; var _a6 = options.data, data3 = _a6 === void 0 ? [] : _a6, yField = options.yField; - var sum = reduce_default(data3, function(total, item) { + var sum = (0, import_util384.reduce)(data3, function(total, item) { return total + (item[yField] || 0); }, 0); - var max8 = max_by_default(data3, yField)[yField]; - var formatData = map_default(data3, function(row, index2) { + var max15 = (0, import_util384.maxBy)(data3, yField)[yField]; + var formatData = (0, import_util384.map)(data3, function(row, index2) { var x6 = []; var y5 = []; row[FUNNEL_TOTAL_PERCENT] = (row[yField] || 0) / sum; @@ -81385,8 +87903,8 @@ function field5(params) { x6[3] = -x6[2]; row[PLOYGON_X] = x6; row[PLOYGON_Y] = y5; - row[FUNNEL_PERCENT] = (row[yField] || 0) / max8; - row[FUNNEL_CONVERSATION] = [get_default(data3, [index2 - 1, yField]), row[yField]]; + row[FUNNEL_PERCENT] = (row[yField] || 0) / max15; + row[FUNNEL_CONVERSATION] = [(0, import_util384.get)(data3, [index2 - 1, yField]), row[yField]]; return row; }); chart.data(formatData); @@ -81403,7 +87921,7 @@ function geometry23(params) { xField: PLOYGON_X, yField: PLOYGON_Y, colorField: xField, - tooltipFields: is_array_default(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]), + tooltipFields: (0, import_util384.isArray)(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]), label: label17, state: state2, mapping: { @@ -81469,10 +87987,10 @@ function defaultOptions3(params) { var style; if (compareField || funnelStyle) { style = function(datum) { - return deepAssign({}, compareField && { lineWidth: 1, stroke: "#fff" }, is_function_default(funnelStyle) ? funnelStyle(datum) : funnelStyle); + return deepAssign({}, compareField && { lineWidth: 1, stroke: "#fff" }, (0, import_util385.isFunction)(funnelStyle) ? funnelStyle(datum) : funnelStyle); }; } - return deepAssign({ options: defaultOption }, params, { options: { funnelStyle: style, data: clone_default(data3) } }); + return deepAssign({ options: defaultOption }, params, { options: { funnelStyle: style, data: (0, import_util385.clone)(data3) } }); } function geometry24(params) { var options = params.options; @@ -81535,7 +88053,7 @@ var Funnel = function(_super) { status = true; } var elements = getAllElementsRecursively(this.chart); - each_default(elements, function(ele) { + (0, import_util386.each)(elements, function(ele) { if (condition(ele.getData())) { ele.setState(type2, status); } @@ -81544,10 +88062,10 @@ var Funnel = function(_super) { Funnel2.prototype.getStates = function() { var elements = getAllElementsRecursively(this.chart); var stateObjects = []; - each_default(elements, function(element) { + (0, import_util386.each)(elements, function(element) { var data3 = element.getData(); var states = element.getStates(); - each_default(states, function(state2) { + (0, import_util386.each)(states, function(state2) { stateObjects.push({ data: data3, state: state2, geometry: element.geometry, element }); }); }); @@ -81559,6 +88077,9 @@ var Funnel = function(_super) { return Funnel2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/liquid/adaptor.js +var import_util387 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/liquid/utils.js var CAT_VALUE = "liquid"; function getLiquidData(percent2) { @@ -81610,13 +88131,13 @@ function statistic2(params, updated) { var chart = params.chart, options = params.options; var statistic4 = options.statistic, percent2 = options.percent, meta23 = options.meta; chart.getController("annotation").clear(true); - var metaFormatter = get_default(meta23, ["percent", "formatter"]) || function(v3) { + var metaFormatter = (0, import_util387.get)(meta23, ["percent", "formatter"]) || function(v3) { return (v3 * 100).toFixed(2) + "%"; }; var contentOpt = statistic4.content; if (contentOpt) { contentOpt = deepAssign({}, contentOpt, { - content: !is_nil_default(contentOpt.content) ? contentOpt.content : metaFormatter(percent2) + content: !(0, import_util387.isNil)(contentOpt.content) ? contentOpt.content : metaFormatter(percent2) }); } renderStatistic(chart, { statistic: __assign(__assign({}, statistic4), { content: contentOpt }), plotType: "liquid" }, { percent: percent2 }); @@ -81655,9 +88176,10 @@ var DEFAULT_OPTIONS22 = { }; // node_modules/@antv/g2plot/esm/plots/liquid/shapes/liquid.js +var import_util388 = __toModule(require_lib()); var DURATION = 5e3; -function lerp5(min7, max8, factor) { - return min7 + (max8 - min7) * factor; +function lerp5(min13, max15, factor) { + return min13 + (max15 - min13) * factor; } function getFillAttrs2(cfg) { var attrs = __assign({ opacity: 1 }, cfg.style); @@ -81672,11 +88194,11 @@ function getLineAttrs(cfg) { fillOpacity: 0, lineWidth: 4 }; - var attrs = mix({}, defaultAttrs, cfg.style); + var attrs = (0, import_util388.mix)({}, defaultAttrs, cfg.style); if (cfg.color && !attrs.stroke) { attrs.stroke = cfg.color; } - if (is_number_default(cfg.opacity)) { + if ((0, import_util388.isNumber)(cfg.opacity)) { attrs.opacity = attrs.strokeOpacity = cfg.opacity; } return attrs; @@ -81744,14 +88266,14 @@ function getWaterWavePath(radius, waterLevel, waveLength, phase, amplitude2, cx, path.push(["Z"]); return path; } -function addWaterWave(x6, y5, level, waveCount, waveAttrs, group2, clip, radius, waveLength, animation7) { +function addWaterWave(x6, y5, level, waveCount, waveAttrs, group3, clip, radius, waveLength, animation7) { var fill = waveAttrs.fill, opacity = waveAttrs.opacity; var bbox = clip.getBBox(); var width2 = bbox.maxX - bbox.minX; var height = bbox.maxY - bbox.minY; for (var idx = 0; idx < waveCount; idx++) { var factor = waveCount <= 1 ? 0 : idx / (waveCount - 1); - var wave = group2.addShape("path", { + var wave = group3.addShape("path", { name: "waterwave-path", attrs: { path: getWaterWavePath(radius, bbox.minY + height * level, waveLength, 0, width2 / 32, x6, y5), @@ -81819,7 +88341,7 @@ registerShape("interval", "liquid-fill-gauge", { var wave = customInfo.wave; var border = outline.border, distance15 = outline.distance; var waveCount = wave.count, waveLength = wave.length; - var minX = reduce_default(cfg.points, function(r4, p4) { + var minX = (0, import_util388.reduce)(cfg.points, function(r4, p4) { return Math.min(r4, p4.x); }, Infinity); var center2 = this.parsePoint({ x: cx, y: cy }); @@ -81827,7 +88349,7 @@ registerShape("interval", "liquid-fill-gauge", { var halfWidth = center2.x - minXPoint.x; var radius = Math.min(halfWidth, minXPoint.y * radio); var waveAttrs = getFillAttrs2(cfg); - var outlineAttrs = getLineAttrs(mix({}, cfg, outline)); + var outlineAttrs = getLineAttrs((0, import_util388.mix)({}, cfg, outline)); var innerRadius = radius - border / 2; var builtInShapeByName = { pin, @@ -81859,7 +88381,7 @@ registerShape("interval", "liquid-fill-gauge", { }); container2.addShape("path", { name: "wrap", - attrs: mix(outlineAttrs, { + attrs: (0, import_util388.mix)(outlineAttrs, { path: shapePath, fill: "transparent", lineWidth: border @@ -81896,6 +88418,9 @@ var Liquid = function(_super) { return Liquid2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/bullet/adaptor.js +var import_util389 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/bullet/utils.js function transformData3(options) { var data3 = options.data, xField = options.xField, measureField = options.measureField, rangeField = options.rangeField, targetField = options.targetField, layout6 = options.layout; @@ -81924,20 +88449,20 @@ function transformData3(options) { }, _a6[xField] = xField ? item[xField] : String(index2), _a6[targetField] = item[targetField], _a6)); scales.push(item[rangeField], item[measureField], item[targetField]); }); - var min7 = Math.min.apply(Math, scales.flat(Infinity)); - var max8 = Math.max.apply(Math, scales.flat(Infinity)); - min7 = min7 > 0 ? 0 : min7; + var min13 = Math.min.apply(Math, scales.flat(Infinity)); + var max15 = Math.max.apply(Math, scales.flat(Infinity)); + min13 = min13 > 0 ? 0 : min13; if (layout6 === "vertical") { ds.reverse(); } - return { min: min7, max: max8, ds }; + return { min: min13, max: max15, ds }; } // node_modules/@antv/g2plot/esm/plots/bullet/adaptor.js function geometry26(params) { var chart = params.chart, options = params.options; - var bulletStyle = options.bulletStyle, targetField = options.targetField, rangeField = options.rangeField, measureField = options.measureField, xField = options.xField, color4 = options.color, layout6 = options.layout, size2 = options.size, label17 = options.label; - var _a6 = transformData3(options), min7 = _a6.min, max8 = _a6.max, ds = _a6.ds; + var bulletStyle = options.bulletStyle, targetField = options.targetField, rangeField = options.rangeField, measureField = options.measureField, xField = options.xField, color4 = options.color, layout6 = options.layout, size14 = options.size, label17 = options.label; + var _a6 = transformData3(options), min13 = _a6.min, max15 = _a6.max, ds = _a6.ds; chart.data(ds); var r4 = deepAssign({}, params, { options: { @@ -81945,11 +88470,11 @@ function geometry26(params) { yField: rangeField, seriesField: "rKey", isStack: true, - label: get_default(label17, "range"), + label: (0, import_util389.get)(label17, "range"), interval: { - color: get_default(color4, "range"), - style: get_default(bulletStyle, "range"), - size: get_default(size2, "range") + color: (0, import_util389.get)(color4, "range"), + style: (0, import_util389.get)(bulletStyle, "range"), + size: (0, import_util389.get)(size14, "range") } } }); @@ -81961,11 +88486,11 @@ function geometry26(params) { yField: measureField, seriesField: "mKey", isStack: true, - label: get_default(label17, "measure"), + label: (0, import_util389.get)(label17, "measure"), interval: { - color: get_default(color4, "measure"), - style: get_default(bulletStyle, "measure"), - size: get_default(size2, "measure") + color: (0, import_util389.get)(color4, "measure"), + style: (0, import_util389.get)(bulletStyle, "measure"), + size: (0, import_util389.get)(size14, "measure") } } }); @@ -81975,13 +88500,13 @@ function geometry26(params) { xField, yField: targetField, seriesField: "tKey", - label: get_default(label17, "target"), + label: (0, import_util389.get)(label17, "target"), point: { - color: get_default(color4, "target"), - style: get_default(bulletStyle, "target"), - size: is_function_default(get_default(size2, "target")) ? function(data3) { - return get_default(size2, "target")(data3) / 2; - } : get_default(size2, "target") / 2, + color: (0, import_util389.get)(color4, "target"), + style: (0, import_util389.get)(bulletStyle, "target"), + size: (0, import_util389.isFunction)((0, import_util389.get)(size14, "target")) ? function(data3) { + return (0, import_util389.get)(size14, "target")(data3) / 2; + } : (0, import_util389.get)(size14, "target") / 2, shape: layout6 === "horizontal" ? "line" : "hyphen" } } @@ -81990,7 +88515,7 @@ function geometry26(params) { if (layout6 === "horizontal") { chart.coordinate().transpose(); } - return __assign(__assign({}, params), { ext: { data: { min: min7, max: max8 } } }); + return __assign(__assign({}, params), { ext: { data: { min: min13, max: max15 } } }); } function meta16(params) { var _a6, _b; @@ -82034,17 +88559,17 @@ function label12(params) { var chart = params.chart, options = params.options; var label17 = options.label, measureField = options.measureField, targetField = options.targetField, rangeField = options.rangeField; var _a6 = chart.geometries, rangeGeometry = _a6[0], measureGeometry = _a6[1], targetGeometry = _a6[2]; - if (get_default(label17, "range")) { + if ((0, import_util389.get)(label17, "range")) { rangeGeometry.label("" + rangeField, __assign({ layout: [{ type: "limit-in-plot" }] }, transformLabel(label17.range))); } else { rangeGeometry.label(false); } - if (get_default(label17, "measure")) { + if ((0, import_util389.get)(label17, "measure")) { measureGeometry.label("" + measureField, __assign({ layout: [{ type: "limit-in-plot" }] }, transformLabel(label17.measure))); } else { measureGeometry.label(false); } - if (get_default(label17, "target")) { + if ((0, import_util389.get)(label17, "target")) { targetGeometry.label("" + targetField, __assign({ layout: [{ type: "limit-in-plot" }] }, transformLabel(label17.target))); } else { targetGeometry.label(false); @@ -82095,8 +88620,8 @@ var Bullet = function(_super) { }; Bullet2.prototype.changeData = function(data3) { this.updateOption({ data: data3 }); - var _a6 = transformData3(this.options), min7 = _a6.min, max8 = _a6.max, ds = _a6.ds; - meta16({ options: this.options, ext: { data: { min: min7, max: max8 } }, chart: this.chart }); + var _a6 = transformData3(this.options), min13 = _a6.min, max15 = _a6.max, ds = _a6.ds; + meta16({ options: this.options, ext: { data: { min: min13, max: max15 } }, chart: this.chart }); this.chart.changeData(ds); }; Bullet2.prototype.getSchemaAdaptor = function() { @@ -82109,24 +88634,25 @@ var Bullet = function(_super) { }(Plot); // node_modules/@antv/g2plot/esm/utils/hierarchy/util.js +var import_util390 = __toModule(require_lib()); var NODE_INDEX_FIELD = "nodeIndex"; var CHILD_NODE_COUNT = "childNodeCount"; var NODE_ANCESTORS_FIELD = "nodeAncestor"; var INVALID_FIELD_ERR_MSG = "Invalid field: it must be a string!"; function getField(options, defaultField) { var field6 = options.field, fields = options.fields; - if (is_string_default(field6)) { + if ((0, import_util390.isString)(field6)) { return field6; } - if (is_array_default(field6)) { + if ((0, import_util390.isArray)(field6)) { console.warn(INVALID_FIELD_ERR_MSG); return field6[0]; } console.warn(INVALID_FIELD_ERR_MSG + " will try to get fields instead."); - if (is_string_default(fields)) { + if ((0, import_util390.isString)(fields)) { return fields; } - if (is_array_default(fields) && fields.length) { + if ((0, import_util390.isArray)(fields) && fields.length) { return fields[0]; } if (defaultField) { @@ -82147,7 +88673,7 @@ function getAllNodes(root) { } else { index_1 += 1; } - var ancestors = filter_default((((_a6 = node.ancestors) === null || _a6 === void 0 ? void 0 : _a6.call(node)) || []).map(function(d3) { + var ancestors = (0, import_util390.filter)((((_a6 = node.ancestors) === null || _a6 === void 0 ? void 0 : _a6.call(node)) || []).map(function(d3) { return nodes.find(function(n3) { return n3.name === d3.name; }) || d3; @@ -82168,6 +88694,9 @@ function getAllNodes(root) { return nodes; } +// node_modules/@antv/g2plot/esm/plots/sunburst/adaptor.js +var import_util398 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/sunburst/constant.js var SUNBURST_ANCESTOR_FIELD = "ancestor-node"; var SUNBURST_Y_FIELD = "value"; @@ -82201,7 +88730,11 @@ var DEFAULT_OPTIONS24 = deepAssign({}, Plot.getDefaultOptions(), { drilldown: { enabled: true } }); +// node_modules/@antv/g2plot/esm/plots/sunburst/utils.js +var import_util397 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/interactions/actions/drill-down.js +var import_util392 = __toModule(require_lib()); var PADDING = 4; var PADDING_LEFT = 0; var PADDING_TOP3 = 5; @@ -82230,7 +88763,7 @@ var DrillDownAction = function(_super) { return _this; } DrillDownAction2.prototype.click = function() { - var data3 = get_default(this.context, ["event", "data", "data"]); + var data3 = (0, import_util392.get)(this.context, ["event", "data", "data"]); if (!data3) return false; this.drill(data3); @@ -82254,7 +88787,7 @@ var DrillDownAction = function(_super) { breadCrumbGroup.setMatrix(matrix); }; DrillDownAction2.prototype.back = function() { - if (size(this.historyCache)) { + if ((0, import_util392.size)(this.historyCache)) { this.backTo(this.historyCache.slice(0, -1)); } }; @@ -82267,7 +88800,7 @@ var DrillDownAction = function(_super) { }; DrillDownAction2.prototype.drill = function(nodeInfo) { var view = this.context.view; - var transformData10 = get_default(view, ["interactions", "drill-down", "cfg", "transformData"], function(v3) { + var transformData10 = (0, import_util392.get)(view, ["interactions", "drill-down", "cfg", "transformData"], function(v3) { return v3; }); var drillData = transformData10(__assign({ data: nodeInfo.data }, nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS])); @@ -82290,7 +88823,7 @@ var DrillDownAction = function(_super) { return; } var view = this.context.view; - var data3 = last(historyCache).children; + var data3 = (0, import_util392.last)(historyCache).children; view.changeData(data3); if (historyCache.length > 1) { this.historyCache = historyCache; @@ -82302,7 +88835,7 @@ var DrillDownAction = function(_super) { }; DrillDownAction2.prototype.getButtonCfg = function() { var view = this.context.view; - var drillDownConfig = get_default(view, ["interactions", "drill-down", "cfg", "drillDownConfig"]); + var drillDownConfig = (0, import_util392.get)(view, ["interactions", "drill-down", "cfg", "drillDownConfig"]); return deepAssign(this.breadCrumbCfg, drillDownConfig === null || drillDownConfig === void 0 ? void 0 : drillDownConfig.breadCrumb, this.cfg); }; DrillDownAction2.prototype.drawBreadCrumb = function() { @@ -82327,14 +88860,14 @@ var DrillDownAction = function(_super) { type: "text", id: record.id, name: BREAD_CRUMB_NAME + "_" + record.name + "_text", - attrs: __assign(__assign({ text: index2 === 0 && !is_nil_default(config.rootText) ? config.rootText : record.name }, config.textStyle), { x: left2, y: 0 }) + attrs: __assign(__assign({ text: index2 === 0 && !(0, import_util392.isNil)(config.rootText) ? config.rootText : record.name }, config.textStyle), { x: left2, y: 0 }) }); var textShapeBox = textShape.getBBox(); left2 += textShapeBox.width + PADDING; textShape.on("click", function(event) { var _a6; var targetId = event.target.get("id"); - if (targetId !== ((_a6 = last(cache3)) === null || _a6 === void 0 ? void 0 : _a6.id)) { + if (targetId !== ((_a6 = (0, import_util392.last)(cache3)) === null || _a6 === void 0 ? void 0 : _a6.id)) { var newHistoryCache = cache3.slice(0, cache3.findIndex(function(d3) { return d3.id === targetId; }) + 1); @@ -82344,7 +88877,7 @@ var DrillDownAction = function(_super) { textShape.on("mouseenter", function(event) { var _a6; var targetId = event.target.get("id"); - if (targetId !== ((_a6 = last(cache3)) === null || _a6 === void 0 ? void 0 : _a6.id)) { + if (targetId !== ((_a6 = (0, import_util392.last)(cache3)) === null || _a6 === void 0 ? void 0 : _a6.id)) { textShape.attr(config.activeTextStyle); } else { textShape.attr({ cursor: "default" }); @@ -82477,7 +89010,7 @@ function count_default() { } // node_modules/d3-hierarchy/src/hierarchy/each.js -function each_default2(callback, that) { +function each_default(callback, that) { let index2 = -1; for (const node of this) { callback.call(that, node, ++index2, this); @@ -82517,7 +89050,7 @@ function eachAfter_default(callback, that) { } // node_modules/d3-hierarchy/src/hierarchy/find.js -function find_default2(callback, that) { +function find_default(callback, that) { let index2 = -1; for (const node of this) { if (callback.call(that, node, ++index2, this)) { @@ -82675,10 +89208,10 @@ function Node(data3) { Node.prototype = hierarchy.prototype = { constructor: Node, count: count_default, - each: each_default2, + each: each_default, eachAfter: eachAfter_default, eachBefore: eachBefore_default, - find: find_default2, + find: find_default, sum: sum_default, sort: sort_default, path: path_default7, @@ -83421,6 +89954,7 @@ var resquarify_default = function custom11(ratio) { }(phi); // node_modules/@antv/g2plot/esm/utils/hierarchy/partition.js +var import_util393 = __toModule(require_lib()); var DEFAULT_OPTIONS25 = { field: "value", size: [1, 1], @@ -83433,9 +89967,9 @@ var DEFAULT_OPTIONS25 = { ignoreParentValue: true }; function partition(data3, options) { - options = mix({}, DEFAULT_OPTIONS25, options); + options = (0, import_util393.assign)({}, DEFAULT_OPTIONS25, options); var as = options.as; - if (!is_array_default(as) || as.length !== 2) { + if (!(0, import_util393.isArray)(as) || as.length !== 2) { throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ "x", "y" ])!'); } var field6; @@ -83446,7 +89980,7 @@ function partition(data3, options) { } var partition3 = function(data4) { return partition_default().size(options.size).round(options.round).padding(options.padding)(hierarchy(data4).sum(function(d3) { - return size(d3.children) ? options.ignoreParentValue ? 0 : d3[field6] - reduce_default(d3.children, function(a4, b10) { + return (0, import_util393.size)(d3.children) ? options.ignoreParentValue ? 0 : d3[field6] - (0, import_util393.reduce)(d3.children, function(a4, b10) { return a4 + b10[field6]; }, 0) : d3[field6]; }).sort(options.sort)); @@ -83470,6 +90004,7 @@ function partition(data3, options) { } // node_modules/@antv/g2plot/esm/utils/hierarchy/treemap.js +var import_util395 = __toModule(require_lib()); var DEFAULT_OPTIONS26 = { field: "value", tile: "treemapSquarify", @@ -83493,9 +90028,9 @@ function getTileMethod(tile, ratio) { return tile === "treemapSquarify" ? src_exports2[tile].ratio(ratio) : src_exports2[tile]; } function treemap(data3, options) { - options = mix({}, DEFAULT_OPTIONS26, options); + options = (0, import_util395.assign)({}, DEFAULT_OPTIONS26, options); var as = options.as; - if (!is_array_default(as) || as.length !== 2) { + if (!(0, import_util395.isArray)(as) || as.length !== 2) { throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ "x", "y" ])!'); } var field6; @@ -83535,7 +90070,7 @@ function transformData4(options) { }; var seriesField = options.seriesField; var type2 = options.type || "partition"; - var nodes = transform18[type2](data3, __assign(__assign({ field: seriesField || "value" }, omit_default(hierarchyConfig, ["activeDepth"])), { + var nodes = transform18[type2](data3, __assign(__assign({ field: seriesField || "value" }, (0, import_util397.omit)(hierarchyConfig, ["activeDepth"])), { type: "hierarchy." + type2, as: ["x", "y"] })); @@ -83555,7 +90090,7 @@ function transformData4(options) { path = ((_b = ancestorNode.parent.data) === null || _b === void 0 ? void 0 : _b.name) + " / " + path; ancestorNode = ancestorNode.parent; } - var nodeInfo = __assign(__assign(__assign({}, pick(node.data, __spreadArrays(rawFields || [], [hierarchyConfig.field]))), (_a7 = {}, _a7[SUNBURST_PATH_FIELD] = path, _a7[SUNBURST_ANCESTOR_FIELD] = ancestorNode.data.name, _a7)), node); + var nodeInfo = __assign(__assign(__assign({}, pick4(node.data, __spreadArrays(rawFields || [], [hierarchyConfig.field]))), (_a7 = {}, _a7[SUNBURST_PATH_FIELD] = path, _a7[SUNBURST_ANCESTOR_FIELD] = ancestorNode.data.name, _a7)), node); if (seriesField) { nodeInfo[seriesField] = node.data[seriesField] || ((_d = (_c = node.parent) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d[seriesField]); } @@ -83580,7 +90115,7 @@ function geometry27(params) { style = function(datum) { return deepAssign({}, { fillOpacity: Math.pow(0.85, datum.depth) - }, is_function_default(sunburstStyle) ? sunburstStyle(datum) : sunburstStyle); + }, (0, import_util398.isFunction)(sunburstStyle) ? sunburstStyle(datum) : sunburstStyle); }; } polygon(deepAssign({}, params, { @@ -83588,7 +90123,7 @@ function geometry27(params) { xField: "x", yField: "y", seriesField: colorField, - rawFields: uniq(__spreadArrays(RAW_FIELDS, rawFields)), + rawFields: (0, import_util398.uniq)(__spreadArrays(RAW_FIELDS, rawFields)), polygon: { color: color4, style @@ -83637,7 +90172,7 @@ function meta17(params) { var _a6; var options = params.options; var hierarchyConfig = options.hierarchyConfig, meta23 = options.meta; - return flow(scale7({}, (_a6 = {}, _a6[SUNBURST_Y_FIELD] = get_default(meta23, get_default(hierarchyConfig, ["field"], "value")), _a6)))(params); + return flow(scale7({}, (_a6 = {}, _a6[SUNBURST_Y_FIELD] = (0, import_util398.get)(meta23, (0, import_util398.get)(hierarchyConfig, ["field"], "value")), _a6)))(params); } function tooltip6(params) { var chart = params.chart, options = params.options; @@ -83646,15 +90181,15 @@ function tooltip6(params) { chart.tooltip(false); } else { var tooltipOptions = tooltip10; - if (!get_default(tooltip10, "fields")) { + if (!(0, import_util398.get)(tooltip10, "fields")) { tooltipOptions = deepAssign({}, { customItems: function(items) { return items.map(function(item) { - var scales = get_default(chart.getOptions(), "scales"); - var pathFormatter = get_default(scales, [SUNBURST_PATH_FIELD, "formatter"], function(v3) { + var scales = (0, import_util398.get)(chart.getOptions(), "scales"); + var pathFormatter = (0, import_util398.get)(scales, [SUNBURST_PATH_FIELD, "formatter"], function(v3) { return v3; }); - var valueFormatter = get_default(scales, [SUNBURST_Y_FIELD, "formatter"], function(v3) { + var valueFormatter = (0, import_util398.get)(scales, [SUNBURST_Y_FIELD, "formatter"], function(v3) { return v3; }); return __assign(__assign({}, item), { name: pathFormatter(item.data[SUNBURST_PATH_FIELD]), value: valueFormatter(item.data.value) }); @@ -83688,7 +90223,7 @@ function interaction4(params) { options: adaptorInteraction(options) }); if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) { - chart.appendPadding = getAdjustAppendPadding(chart.appendPadding, get_default(drilldown, ["breadCrumb", "position"])); + chart.appendPadding = getAdjustAppendPadding(chart.appendPadding, (0, import_util398.get)(drilldown, ["breadCrumb", "position"])); } return params; } @@ -83697,9 +90232,10 @@ function adaptor25(params) { } // node_modules/@antv/g2plot/esm/interactions/drill-down.js +var import_util399 = __toModule(require_lib()); function isParentNode(context) { - var data3 = get_default(context, ["event", "data", "data"], {}); - return is_array_default(data3.children) && data3.children.length > 0; + var data3 = (0, import_util399.get)(context, ["event", "data", "data"], {}); + return (0, import_util399.isArray)(data3.children) && data3.children.length > 0; } function inCenter(context) { var coordinate11 = context.view.getCoordinate(); @@ -83761,6 +90297,9 @@ var Sunburst = function(_super) { return Sunburst2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/gauge/adaptor.js +var import_util402 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/gauge/constants.js var _a5; var RANGE_VALUE = "range"; @@ -83825,6 +90364,7 @@ var DEFAULT_OPTIONS27 = { }; // node_modules/@antv/g2plot/esm/plots/gauge/utils.js +var import_util401 = __toModule(require_lib()); function processRangeData(range, percent2) { return range.map(function(r4, idx) { var _a6; @@ -83835,11 +90375,11 @@ function processRangeData(range, percent2) { } function getIndicatorData(percent2) { var _a6; - return [(_a6 = {}, _a6[PERCENT] = clamp_default(percent2, 0, 1), _a6)]; + return [(_a6 = {}, _a6[PERCENT] = (0, import_util401.clamp)(percent2, 0, 1), _a6)]; } function getRangeData(percent2, range) { - var ticks = get_default(range, ["ticks"], []); - var clampTicks = size(ticks) ? ticks : [0, clamp_default(percent2, 0, 1), 1]; + var ticks = (0, import_util401.get)(range, ["ticks"], []); + var clampTicks = (0, import_util401.size)(ticks) ? ticks : [0, (0, import_util401.clamp)(percent2, 0, 1), 1]; return processRangeData(clampTicks, percent2); } @@ -83862,12 +90402,12 @@ function geometry28(params) { radius: innerRadius * radius }); v1.axis(PERCENT, axis22); - v1.scale(PERCENT, pick(axis22, AXIS_META_CONFIG_KEYS)); + v1.scale(PERCENT, pick4(axis22, AXIS_META_CONFIG_KEYS)); } var rangeData = getRangeData(percent2, options.range); var v22 = chart.createView({ id: RANGE_VIEW_ID }); v22.data(rangeData); - var rangeColor = is_string_default(color4) ? [color4, DEFAULT_COLOR2] : color4; + var rangeColor = (0, import_util402.isString)(color4) ? [color4, DEFAULT_COLOR2] : color4; var ext = interval2({ chart: v22, options: { @@ -83951,31 +90491,32 @@ registerShape("point", "gauge-indicator", { draw: function(cfg, container2) { var _a6 = cfg.customInfo, indicator = _a6.indicator, defaultColor = _a6.defaultColor; var _b = indicator, pointer = _b.pointer, pin2 = _b.pin; - var group2 = container2.addGroup(); + var group3 = container2.addGroup(); var center2 = this.parsePoint({ x: 0, y: 0 }); if (pointer) { - group2.addShape("line", { + group3.addShape("line", { name: "pointer", attrs: __assign({ x1: center2.x, y1: center2.y, x2: cfg.x, y2: cfg.y, stroke: defaultColor }, pointer.style) }); } if (pin2) { - group2.addShape("circle", { + group3.addShape("circle", { name: "pin", attrs: __assign({ x: center2.x, y: center2.y, stroke: defaultColor }, pin2.style) }); } - return group2; + return group3; } }); // node_modules/@antv/g2plot/esm/plots/gauge/shapes/meter-gauge.js +var import_util403 = __toModule(require_lib()); registerShape("interval", "meter-gauge", { draw: function(cfg, container2) { var _a6 = cfg.customInfo.meter, meter = _a6 === void 0 ? {} : _a6; var _b = meter.steps, STEP = _b === void 0 ? 50 : _b, _c = meter.stepRatio, STEP_RATIO = _c === void 0 ? 0.5 : _c; STEP = STEP < 1 ? 1 : STEP; - STEP_RATIO = clamp_default(STEP_RATIO, 0, 1); + STEP_RATIO = (0, import_util403.clamp)(STEP_RATIO, 0, 1); var _d = this.coordinate, COORD_START_ANGLE = _d.startAngle, COORD_END_ANGLE = _d.endAngle; var GAP2 = 0; if (STEP_RATIO > 0 && STEP_RATIO < 1) { @@ -83983,7 +90524,7 @@ registerShape("interval", "meter-gauge", { GAP2 = TOTAL / STEP / (STEP_RATIO / (1 - STEP_RATIO) + 1 - 1 / STEP); } var INTERVAL = GAP2 / (1 - STEP_RATIO) * STEP_RATIO; - var group2 = container2.addGroup(); + var group3 = container2.addGroup(); var center2 = this.coordinate.getCenter(); var radius = this.coordinate.getRadius(); var _e = Util.getAngle(cfg, this.coordinate), START_ANGLE = _e.startAngle, END_ANGLE = _e.endAngle; @@ -83997,7 +90538,7 @@ registerShape("interval", "meter-gauge", { endAngle = startAngle + INTERVAL; } var path = Util.getSectorPath(center2.x, center2.y, radius, startAngle, Math.min(endAngle, END_ANGLE), radius * this.coordinate.innerRadius); - group2.addShape("path", { + group3.addShape("path", { name: "meter-gauge", attrs: { path, @@ -84008,7 +90549,7 @@ registerShape("interval", "meter-gauge", { }); startAngle = endAngle + GAP2; } - return group2; + return group3; } }); @@ -84050,6 +90591,9 @@ var Gauge = function(_super) { return Gauge2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/waterfall/adaptor.js +var import_util406 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/waterfall/constant.js var Y_FIELD3 = "$$yField$$"; var DIFF_FIELD = "$$diffField$$"; @@ -84087,18 +90631,19 @@ var DEFAULT_OPTIONS28 = { }; // node_modules/@antv/g2plot/esm/plots/waterfall/utils.js +var import_util404 = __toModule(require_lib()); function processData(data3, xField, yField, newYField, total) { var _a6; var newData = []; - reduce_default(data3, function(r4, d3) { + (0, import_util404.reduce)(data3, function(r4, d3) { var _a7; - log2(LEVEL.WARN, is_number_default(d3[yField]), d3[yField] + " is not a valid number"); - var value2 = is_undefined_default(d3[yField]) ? null : d3[yField]; + log2(LEVEL.WARN, (0, import_util404.isNumber)(d3[yField]), d3[yField] + " is not a valid number"); + var value2 = (0, import_util404.isUndefined)(d3[yField]) ? null : d3[yField]; newData.push(__assign(__assign({}, d3), (_a7 = {}, _a7[newYField] = [r4, r4 + value2], _a7))); return r4 + value2; }, 0); if (newData.length && total) { - var sum = get_default(newData, [[data3.length - 1], newYField, [1]]); + var sum = (0, import_util404.get)(newData, [[data3.length - 1], newYField, [1]]); newData.push((_a6 = {}, _a6[xField] = total.label, _a6[yField] = sum, _a6[newYField] = [0, sum], _a6)); } return newData; @@ -84107,7 +90652,7 @@ function transformData5(data3, xField, yField, total) { var processed = processData(data3, xField, yField, Y_FIELD3, total); return processed.map(function(d3, dIdx) { var _a6; - if (!is_object_default(d3)) { + if (!(0, import_util404.isObject)(d3)) { return d3; } return __assign(__assign({}, d3), (_a6 = {}, _a6[ABSOLUTE_FIELD] = d3[Y_FIELD3][1], _a6[DIFF_FIELD] = d3[Y_FIELD3][1] - d3[Y_FIELD3][0], _a6[IS_TOTAL] = dIdx === data3.length, _a6)); @@ -84115,6 +90660,7 @@ function transformData5(data3, xField, yField, total) { } // node_modules/@antv/g2plot/esm/plots/waterfall/shape.js +var import_util405 = __toModule(require_lib()); function getRectPath2(points) { var path = []; for (var i4 = 0; i4 < points.length; i4++) { @@ -84135,13 +90681,13 @@ function getFillAttrs3(cfg) { registerShape("interval", "waterfall", { draw: function(cfg, container2) { var customInfo = cfg.customInfo, points = cfg.points, nextPoints = cfg.nextPoints; - var group2 = container2.addGroup(); + var group3 = container2.addGroup(); var rectPath3 = this.parsePath(getRectPath2(points)); var fillAttrs = getFillAttrs3(cfg); - group2.addShape("path", { + group3.addShape("path", { attrs: __assign(__assign({}, fillAttrs), { path: rectPath3 }) }); - var leaderLineCfg = get_default(customInfo, "leaderLine"); + var leaderLineCfg = (0, import_util405.get)(customInfo, "leaderLine"); if (leaderLineCfg && nextPoints) { var linkPath = [ ["M", points[2].x, points[2].y], @@ -84151,11 +90697,11 @@ registerShape("interval", "waterfall", { linkPath[1] = ["L", nextPoints[1].x, nextPoints[1].y]; } linkPath = this.parsePath(linkPath); - group2.addShape("path", { + group3.addShape("path", { attrs: __assign({ path: linkPath }, leaderLineCfg.style || {}) }); } - return group2; + return group3; } }); @@ -84173,10 +90719,10 @@ function geometry29(params) { var data3 = options.data, xField = options.xField, yField = options.yField, total = options.total, leaderLine = options.leaderLine, columnWidthRatio = options.columnWidthRatio, waterfallStyle = options.waterfallStyle, risingFill = options.risingFill, fallingFill = options.fallingFill, color4 = options.color; chart.data(transformData5(data3, xField, yField, total)); var colorMapping = color4 || function(datum) { - if (get_default(datum, [IS_TOTAL])) { - return get_default(total, ["style", "fill"], ""); + if ((0, import_util406.get)(datum, [IS_TOTAL])) { + return (0, import_util406.get)(total, ["style", "fill"], ""); } - return get_default(datum, [Y_FIELD3, 1]) - get_default(datum, [Y_FIELD3, 0]) > 0 ? risingFill : fallingFill; + return (0, import_util406.get)(datum, [Y_FIELD3, 1]) - (0, import_util406.get)(datum, [Y_FIELD3, 0]) > 0 ? risingFill : fallingFill; }; var p4 = deepAssign({}, params, { options: { @@ -84201,7 +90747,7 @@ function meta19(params) { var _a6, _b; var options = params.options; var xAxis = options.xAxis, yAxis = options.yAxis, xField = options.xField, yField = options.yField, meta23 = options.meta; - var Y_FIELD_META = deepAssign({}, { alias: yField }, get_default(meta23, yField)); + var Y_FIELD_META = deepAssign({}, { alias: yField }, (0, import_util406.get)(meta23, yField)); return flow(scale7((_a6 = {}, _a6[xField] = xAxis, _a6[yField] = yAxis, _a6[Y_FIELD3] = yAxis, _a6), deepAssign({}, meta23, (_b = {}, _b[Y_FIELD3] = Y_FIELD_META, _b[DIFF_FIELD] = Y_FIELD_META, _b[ABSOLUTE_FIELD] = Y_FIELD_META, _b))))(params); } function axis16(params) { @@ -84246,7 +90792,7 @@ function legend16(params) { value: "total", marker: { symbol: "square", - style: deepAssign({}, { r: 5 }, get_default(total, "style")) + style: deepAssign({}, { r: 5 }, (0, import_util406.get)(total, "style")) } }); } @@ -84470,12 +91016,16 @@ var RadialBar = function(_super) { return RadialBar2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/bidirectional-bar/adaptor.js +var import_util408 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/bidirectional-bar/constant.js var FIRST_AXES_VIEW = "first-axes-view"; var SECOND_AXES_VIEW = "second-axes-view"; var SERIES_FIELD_KEY = "series-field-key"; // node_modules/@antv/g2plot/esm/plots/bidirectional-bar/utils.js +var import_util407 = __toModule(require_lib()); function transformData6(xField, yField, seriesField, data3, reverse) { var hopeData = []; yField.forEach(function(d3) { @@ -84485,7 +91035,7 @@ function transformData6(xField, yField, seriesField, data3, reverse) { hopeData.push(obj); }); }); - var groupData = Object.values(group_by_default(hopeData, seriesField)); + var groupData = Object.values((0, import_util407.groupBy)(hopeData, seriesField)); var _a6 = groupData[0], data1 = _a6 === void 0 ? [] : _a6, _b = groupData[1], data22 = _b === void 0 ? [] : _b; return reverse ? [data1.reverse(), data22.reverse()] : [data1, data22]; } @@ -84605,15 +91155,15 @@ function meta21(params) { var firstView = findViewById(chart, FIRST_AXES_VIEW); var secondView = findViewById(chart, SECOND_AXES_VIEW); var aliasMap = {}; - keys_default((options === null || options === void 0 ? void 0 : options.meta) || {}).map(function(metaKey) { - if (get_default(options === null || options === void 0 ? void 0 : options.meta, [metaKey, "alias"])) { + (0, import_util408.keys)((options === null || options === void 0 ? void 0 : options.meta) || {}).map(function(metaKey) { + if ((0, import_util408.get)(options === null || options === void 0 ? void 0 : options.meta, [metaKey, "alias"])) { aliasMap[metaKey] = options.meta[metaKey].alias; } }); chart.scale((_a6 = {}, _a6[SERIES_FIELD_KEY] = { sync: true, formatter: function(v3) { - return get_default(aliasMap, v3, v3); + return (0, import_util408.get)(aliasMap, v3, v3); } }, _a6)); scale7((_b = {}, _b[xField] = xAxis, _b[yField[0]] = yAxis[yField[0]], _b))(deepAssign({}, params, { chart: firstView })); @@ -84787,9 +91337,13 @@ var BidirectionalBar = function(_super) { return BidirectionalBar2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/treemap/adaptor.js +var import_util410 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/treemap/utils.js +var import_util409 = __toModule(require_lib()); function findInteraction(interactions, interactionType) { - if (!is_array_default(interactions)) + if (!(0, import_util409.isArray)(interactions)) return void 0; return interactions.find(function(i4) { return i4.type === interactionType; @@ -84801,7 +91355,7 @@ function enableInteraction(interactions, interactionType) { } function enableDrillInteraction(options) { var interactions = options.interactions, drilldown = options.drilldown; - return get_default(drilldown, "enabled") || enableInteraction(interactions, "treemap-drill-down"); + return (0, import_util409.get)(drilldown, "enabled") || enableInteraction(interactions, "treemap-drill-down"); } function resetDrillDown(chart) { var drillDownInteraction = chart.interactions["drill-down"]; @@ -84837,7 +91391,7 @@ function transformData7(options) { value: n3.value }; }); - var path = enableDrillDown && is_array_default(data3.path) ? curPath.concat(data3.path.slice(1)) : curPath; + var path = enableDrillDown && (0, import_util409.isArray)(data3.path) ? curPath.concat(data3.path.slice(1)) : curPath; var nodeInfo = Object.assign({}, node.data, __assign({ x: node.x, y: node.y, depth: node.depth, value: node.value, path }, node)); if (!node.data[colorField] && node.parent) { var ancestorNode = node.ancestors().find(function(n3) { @@ -84936,7 +91490,7 @@ function interaction6(params) { } var enableDrillDown = enableDrillInteraction(options); if (enableDrillDown) { - chart.appendPadding = getAdjustAppendPadding(chart.appendPadding, get_default(drilldown, ["breadCrumb", "position"])); + chart.appendPadding = getAdjustAppendPadding(chart.appendPadding, (0, import_util410.get)(drilldown, ["breadCrumb", "position"])); } return params; } @@ -85014,7 +91568,17 @@ var Treemap = function(_super) { return Treemap2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/sankey/index.js +var import_util416 = __toModule(require_lib()); + +// node_modules/@antv/g2plot/esm/plots/sankey/adaptor.js +var import_util414 = __toModule(require_lib()); + +// node_modules/@antv/g2plot/esm/plots/sankey/layout.js +var import_util412 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/sankey/sankey/align.js +var import_util411 = __toModule(require_lib()); function targetDepth(d3) { return d3.target.depth; } @@ -85028,7 +91592,7 @@ function justify(node, n3) { return node.sourceLinks.length ? node.depth : n3 - 1; } function center(node) { - return node.targetLinks.length ? node.depth : node.sourceLinks.length ? min_by_default(node.sourceLinks, targetDepth) - 1 : 0; + return node.targetLinks.length ? node.depth : node.sourceLinks.length ? (0, import_util411.minBy)(node.sourceLinks, targetDepth) - 1 : 0; } // node_modules/@antv/g2plot/esm/plots/sankey/sankey/helper.js @@ -85081,7 +91645,7 @@ function defaultNodes(graph) { function defaultLinks(graph) { return graph.links; } -function find2(nodeById, id) { +function find9(nodeById, id) { var node = nodeById.get(id); if (!node) throw new Error("missing: " + id); @@ -85187,9 +91751,9 @@ function Sankey() { link.index = idx; var source = link.source, target = link.target; if (typeof source !== "object") - source = link.source = find2(nodeById, source); + source = link.source = find9(nodeById, source); if (typeof target !== "object") - target = link.target = find2(nodeById, target); + target = link.target = find9(nodeById, target); source.sourceLinks.push(link); target.targetLinks.push(link); }); @@ -85476,11 +92040,11 @@ var DEFAULT_OPTIONS31 = { nodeSort: void 0 }; function getNodeAlignFunction(nodeAlign) { - var func = is_string_default(nodeAlign) ? ALIGN_METHOD[nodeAlign] : is_function_default(nodeAlign) ? nodeAlign : null; + var func = (0, import_util412.isString)(nodeAlign) ? ALIGN_METHOD[nodeAlign] : (0, import_util412.isFunction)(nodeAlign) ? nodeAlign : null; return func || justify; } function getDefaultOptions(sankeyLayoutOptions) { - return mix({}, DEFAULT_OPTIONS31, sankeyLayoutOptions); + return (0, import_util412.assign)({}, DEFAULT_OPTIONS31, sankeyLayoutOptions); } function sankeyLayout(sankeyLayoutOptions, data3) { var options = getDefaultOptions(sankeyLayoutOptions); @@ -85507,6 +92071,7 @@ function sankeyLayout(sankeyLayoutOptions, data3) { } // node_modules/@antv/g2plot/esm/plots/sankey/circle.js +var import_util413 = __toModule(require_lib()); function getNodes(edges, sourceField, targetField) { var nodes = []; edges.forEach(function(e4) { @@ -85535,7 +92100,7 @@ function getMatrix(edges, nodes, sourceField, targetField) { return graphMatrix; } function cutoffCircle(edges, sourceField, targetField) { - if (!is_array_default(edges)) + if (!(0, import_util413.isArray)(edges)) return []; var removedData = []; var nodes = getNodes(edges, sourceField, targetField); @@ -85602,10 +92167,10 @@ function transformToViewsData(options, width2, height) { }, sankeyLayoutInputData), nodes = _b.nodes, links = _b.links; return { nodes: nodes.map(function(node) { - return __assign(__assign({}, pick(node, __spreadArrays(["x", "y", "name"], rawFields))), { isNode: true }); + return __assign(__assign({}, pick4(node, __spreadArrays(["x", "y", "name"], rawFields))), { isNode: true }); }), edges: links.map(function(link) { - return __assign(__assign({ source: link.source.name, target: link.target.name, name: link.source.name || link.target.name }, pick(link, __spreadArrays(["x", "y", "value"], rawFields))), { isNode: false }); + return __assign(__assign({ source: link.source.name, target: link.target.name, name: link.source.name || link.target.name }, pick4(link, __spreadArrays(["x", "y", "value"], rawFields))), { isNode: false }); }) }; } @@ -85624,10 +92189,10 @@ function defaultOptions6(params) { return deepAssign({}, { options: { tooltip: { - fields: uniq(__spreadArrays(["name", "source", "target", "value", "isNode"], rawFields)) + fields: (0, import_util414.uniq)(__spreadArrays(["name", "source", "target", "value", "isNode"], rawFields)) }, label: { - fields: uniq(__spreadArrays(["x", "name"], rawFields)) + fields: (0, import_util414.uniq)(__spreadArrays(["x", "name"], rawFields)) } } }, params); @@ -85712,6 +92277,7 @@ function adaptor31(params) { } // node_modules/@antv/g2plot/esm/plots/sankey/interactions/actions/node-drag.js +var import_util415 = __toModule(require_lib()); var SankeyNodeDragAction = function(_super) { __extends(SankeyNodeDragAction2, _super); function SankeyNodeDragAction2() { @@ -85720,7 +92286,7 @@ var SankeyNodeDragAction = function(_super) { return _this; } SankeyNodeDragAction2.prototype.isNodeElement = function() { - var shape = get_default(this.context, "event.target"); + var shape = (0, import_util415.get)(this.context, "event.target"); if (shape) { var element = shape.get("element"); return element && element.getModel().data.isNode; @@ -85739,8 +92305,8 @@ var SankeyNodeDragAction = function(_super) { SankeyNodeDragAction2.prototype.start = function() { if (this.isNodeElement()) { this.prevPoint = { - x: get_default(this.context, "event.x"), - y: get_default(this.context, "event.y") + x: (0, import_util415.get)(this.context, "event.x"), + y: (0, import_util415.get)(this.context, "event.y") }; var element = this.context.event.target.get("element"); var idx = this.getCurrentDatumIdx(element); @@ -85760,8 +92326,8 @@ var SankeyNodeDragAction = function(_super) { if (this.isDragging) { var chart = this.context.view; var currentPoint = { - x: get_default(this.context, "event.x"), - y: get_default(this.context, "event.y") + x: (0, import_util415.get)(this.context, "event.x"), + y: (0, import_util415.get)(this.context, "event.y") }; var x6 = currentPoint.x - this.prevPoint.x; var y5 = currentPoint.y - this.prevPoint.y; @@ -85889,7 +92455,7 @@ var Sankey2 = function(_super) { showMarkers: false, shared: false, showContent: function(items) { - return !get_default(items, [0, "data", "isNode"]); + return !(0, import_util416.get)(items, [0, "data", "isNode"]); }, formatter: function(datum) { var source = datum.source, target = datum.target, value2 = datum.value; @@ -85928,7 +92494,11 @@ var Sankey2 = function(_super) { return Sankey3; }(Plot); +// node_modules/@antv/g2plot/esm/plots/chord/adaptor.js +var import_util419 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/utils/transform/chord.js +var import_util417 = __toModule(require_lib()); var DEFAULT_OPTIONS32 = { y: 0, nodeWidthRatio: 0.05, @@ -85952,7 +92522,7 @@ var DEFAULT_OPTIONS32 = { sortBy: null }; function processGraph(nodeById, edges, options) { - for_in_default(nodeById, function(node, id) { + (0, import_util417.forIn)(nodeById, function(node, id) { node.inEdges = edges.filter(function(edge2) { return "" + options.target(edge2) === "" + id; }); @@ -85983,7 +92553,7 @@ function sortNodes(nodes, options) { } }; var method = sortMethods[options.sortBy]; - if (!method && is_function_default(options.sortBy)) { + if (!method && (0, import_util417.isFunction)(options.sortBy)) { method = options.sortBy; } if (method) { @@ -86038,7 +92608,7 @@ function layoutNodes(nodes, options) { function locatingEdges(nodeById, edges, options) { if (options.weight) { var valueById_1 = {}; - for_in_default(nodeById, function(node, id) { + (0, import_util417.forIn)(nodeById, function(node, id) { valueById_1[id] = node.value; }); edges.forEach(function(edge2) { @@ -86079,7 +92649,7 @@ function locatingEdges(nodeById, edges, options) { return edges; } function getDefaultOptions2(options) { - return mix({}, DEFAULT_OPTIONS32, options); + return (0, import_util417.assign)({}, DEFAULT_OPTIONS32, options); } function chordLayout(chordLayoutOptions, chordLayoutInputData) { var options = getDefaultOptions2(chordLayoutOptions); @@ -86101,6 +92671,7 @@ function chordLayout(chordLayoutOptions, chordLayoutInputData) { } // node_modules/@antv/g2plot/esm/plots/chord/constant.js +var import_util418 = __toModule(require_lib()); var X_FIELD4 = "x"; var Y_FIELD5 = "y"; var NODE_COLOR_FIELD = "name"; @@ -86135,7 +92706,7 @@ var DEFAULT_OPTIONS33 = { showMarkers: false, fields: ["source", "target", "value", "isNode"], showContent: function(items) { - return !get_default(items, [0, "data", "isNode"]); + return !(0, import_util418.get)(items, [0, "data", "isNode"]); }, formatter: function(datum) { var source = datum.source, target = datum.target, value2 = datum.value; @@ -86162,10 +92733,10 @@ function transformData8(params) { var chordLayoutInputData = transformDataToNodeLinkData(data3, sourceField, targetField, weightField); var _b = chordLayout({ weight: true, nodePaddingRatio, nodeWidthRatio }, chordLayoutInputData), nodes = _b.nodes, links = _b.links; var nodesData = nodes.map(function(node) { - return __assign(__assign({}, pick(node, __spreadArrays(["id", "x", "y", "name"], rawFields))), { isNode: true }); + return __assign(__assign({}, pick4(node, __spreadArrays(["id", "x", "y", "name"], rawFields))), { isNode: true }); }); var edgesData = links.map(function(link) { - return __assign(__assign({ source: link.source.name, target: link.target.name, name: link.source.name || link.target.name }, pick(link, __spreadArrays(["x", "y", "value"], rawFields))), { isNode: false }); + return __assign(__assign({ source: link.source.name, target: link.target.name, name: link.source.name || link.target.name }, pick4(link, __spreadArrays(["x", "y", "value"], rawFields))), { isNode: false }); }); return __assign(__assign({}, params), { ext: __assign(__assign({}, params.ext), { chordData: { nodesData, edgesData } @@ -86252,7 +92823,7 @@ function animation6(params) { } else { chart.animate(true); } - each_default(getAllGeometriesRecursively(chart), function(g4) { + (0, import_util419.each)(getAllGeometriesRecursively(chart), function(g4) { g4.animate(animation7); }); return params; @@ -86281,7 +92852,11 @@ var Chord = function(_super) { return Chord2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/circle-packing/adaptor.js +var import_util422 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/utils/hierarchy/pack.js +var import_util420 = __toModule(require_lib()); var DEFAULT_OPTIONS34 = { field: "value", as: ["x", "y", "r"], @@ -86290,9 +92865,9 @@ var DEFAULT_OPTIONS34 = { } }; function pack(data3, options) { - options = mix({}, DEFAULT_OPTIONS34, options); + options = (0, import_util420.assign)({}, DEFAULT_OPTIONS34, options); var as = options.as; - if (!is_array_default(as) || as.length !== 3) { + if (!(0, import_util420.isArray)(as) || as.length !== 3) { throw new TypeError('Invalid as: it must be an array with 3 strings (e.g. [ "x", "y", "r" ])!'); } var field6; @@ -86334,7 +92909,7 @@ function transformData9(options) { if (enableDrillDown && node.depth > 2) { return null; } - var nodeInfo = deepAssign({}, node.data, __assign(__assign(__assign({}, pick(node.data, rawFields)), { path }), node)); + var nodeInfo = deepAssign({}, node.data, __assign(__assign(__assign({}, pick4(node.data, rawFields)), { path }), node)); nodeInfo.ext = hierarchyConfig; nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS] = { hierarchyConfig, rawFields, enableDrillDown }; result.push(nodeInfo); @@ -86405,7 +92980,7 @@ function padding2(params) { var padding3 = options.padding, appendPadding = options.appendPadding, drilldown = options.drilldown; var tempAppendPadding = appendPadding; if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) { - var appendPaddingByDrilldown = getAdjustAppendPadding(chart.appendPadding, get_default(drilldown, ["breadCrumb", "position"])); + var appendPaddingByDrilldown = getAdjustAppendPadding(chart.appendPadding, (0, import_util422.get)(drilldown, ["breadCrumb", "position"])); tempAppendPadding = resolveAllPadding([appendPaddingByDrilldown, appendPadding]); } var finalPadding = resolvePaddingForCircle(padding3, tempAppendPadding, containerSize).finalPadding; @@ -86465,15 +93040,15 @@ function tooltip9(params) { chart.tooltip(false); } else { var tooltipOptions = tooltip10; - if (!get_default(tooltip10, "fields")) { + if (!(0, import_util422.get)(tooltip10, "fields")) { tooltipOptions = deepAssign({}, { customItems: function(items) { return items.map(function(item) { - var scales = get_default(chart.getOptions(), "scales"); - var nameFormatter = get_default(scales, ["name", "formatter"], function(v3) { + var scales = (0, import_util422.get)(chart.getOptions(), "scales"); + var nameFormatter = (0, import_util422.get)(scales, ["name", "formatter"], function(v3) { return v3; }); - var valueFormatter = get_default(scales, ["value", "formatter"], function(v3) { + var valueFormatter = (0, import_util422.get)(scales, ["value", "formatter"], function(v3) { return v3; }); return __assign(__assign({}, item), { name: nameFormatter(item.data.name), value: valueFormatter(item.data.value) }); @@ -86563,7 +93138,11 @@ var P3 = function(_super) { return P4; }(Plot); +// node_modules/@antv/g2plot/esm/plots/mix/adaptor.js +var import_util424 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/mix/utils.js +var import_util423 = __toModule(require_lib()); var PLOT_ADAPTORS = { line: adaptor, pie: adaptor5, @@ -86610,7 +93189,7 @@ function execPlotAdaptor(plot, view, options) { var module2 = PLOT_ADAPTORS[plot]; module2({ chart: view, - options: deepAssign({}, cls.getDefaultOptions(), get_default(DEFAULT_OPTIONS_MAP, plot, {}), options) + options: deepAssign({}, cls.getDefaultOptions(), (0, import_util423.get)(DEFAULT_OPTIONS_MAP, plot, {}), options) }); } @@ -86618,7 +93197,7 @@ function execPlotAdaptor(plot, view, options) { function multiView(params) { var chart = params.chart, options = params.options; var views = options.views, legend18 = options.legend; - each_default(views, function(v3) { + (0, import_util424.each)(views, function(v3) { var region = v3.region, data3 = v3.data, meta23 = v3.meta, axes = v3.axes, coordinate11 = v3.coordinate, interactions = v3.interactions, annotations = v3.annotations, tooltip10 = v3.tooltip, geometries = v3.geometries; var viewOfG2 = chart.createView({ region @@ -86626,8 +93205,8 @@ function multiView(params) { viewOfG2.data(data3); var scales = {}; if (axes) { - each_default(axes, function(axis22, field6) { - scales[field6] = pick(axis22, AXIS_META_CONFIG_KEYS); + (0, import_util424.each)(axes, function(axis22, field6) { + scales[field6] = pick4(axis22, AXIS_META_CONFIG_KEYS); }); } scales = deepAssign({}, meta23, scales); @@ -86635,12 +93214,12 @@ function multiView(params) { if (!axes) { viewOfG2.axis(false); } else { - each_default(axes, function(axis22, field6) { + (0, import_util424.each)(axes, function(axis22, field6) { viewOfG2.axis(field6, axis22); }); } viewOfG2.coordinate(coordinate11); - each_default(geometries, function(geometry35) { + (0, import_util424.each)(geometries, function(geometry35) { var ext = geometry({ chart: viewOfG2, options: geometry35 @@ -86650,21 +93229,21 @@ function multiView(params) { ext.geometry.adjust(adjust4); } }); - each_default(interactions, function(interaction8) { + (0, import_util424.each)(interactions, function(interaction8) { if (interaction8.enable === false) { viewOfG2.removeInteraction(interaction8.type); } else { viewOfG2.interaction(interaction8.type, interaction8.cfg); } }); - each_default(annotations, function(annotation4) { + (0, import_util424.each)(annotations, function(annotation4) { viewOfG2.annotation()[annotation4.type](__assign({}, annotation4)); }); if (typeof v3.animation === "boolean") { viewOfG2.animate(false); } else { viewOfG2.animate(true); - each_default(viewOfG2.geometries, function(g4) { + (0, import_util424.each)(viewOfG2.geometries, function(g4) { g4.animate(v3.animation); }); } @@ -86676,7 +93255,7 @@ function multiView(params) { if (!legend18) { chart.legend(false); } else { - each_default(legend18, function(l4, field6) { + (0, import_util424.each)(legend18, function(l4, field6) { chart.legend(field6, l4); }); } @@ -86686,10 +93265,10 @@ function multiView(params) { function multiPlot(params) { var chart = params.chart, options = params.options; var plots = options.plots; - each_default(plots, function(plot) { + (0, import_util424.each)(plots, function(plot) { var type2 = plot.type, region = plot.region, _a6 = plot.options, options2 = _a6 === void 0 ? {} : _a6; var tooltip10 = options2.tooltip; - var viewOfG2 = chart.createView(__assign({ region }, pick(options2, PLOT_CONTAINER_OPTIONS))); + var viewOfG2 = chart.createView(__assign({ region }, pick4(options2, PLOT_CONTAINER_OPTIONS))); if (tooltip10) { viewOfG2.interaction("tooltip"); } @@ -86701,12 +93280,16 @@ function adaptor34(params) { return flow(animation, multiView, multiPlot, interaction, animation, theme, tooltip)(params); } +// node_modules/@antv/g2plot/esm/plots/mix/interactions/association.js +var import_util426 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/mix/interactions/utils.js +var import_util425 = __toModule(require_lib()); function getElementValue2(element, field6) { var model = element.getModel(); var record = model.data; var value2; - if (is_array_default(record)) { + if ((0, import_util425.isArray)(record)) { value2 = record[0][field6]; } else { value2 = record[field6]; @@ -86715,7 +93298,7 @@ function getElementValue2(element, field6) { } function clearHighlight2(view) { var elements = getAllElements(view); - each_default(elements, function(el) { + (0, import_util425.each)(elements, function(el) { if (el.hasState("active")) { el.setState("active", false); } @@ -86741,7 +93324,7 @@ var Association = function(_super) { var items = []; if ((_a6 = event.data) === null || _a6 === void 0 ? void 0 : _a6.data) { var data_1 = event.data.data; - each_default(views, function(v3) { + (0, import_util426.each)(views, function(v3) { var _a7, _b2; var field6 = linkField; if (dim === "x") { @@ -86756,10 +93339,10 @@ var Association = function(_super) { if (!field6) { return; } - var elements = map_default(getAllElements(v3), function(ele) { + var elements = (0, import_util426.map)(getAllElements(v3), function(ele) { var active = false; var inactive = false; - var dataValue = is_array_default(data_1) ? get_default(data_1[0], field6) : get_default(data_1, field6); + var dataValue = (0, import_util426.isArray)(data_1) ? (0, import_util426.get)(data_1[0], field6) : (0, import_util426.get)(data_1, field6); if (getElementValue2(ele, field6) === dataValue) { active = true; } else { @@ -86775,7 +93358,7 @@ var Association = function(_super) { Association2.prototype.showTooltip = function(params) { var siblings = getSiblingViews(this.context.view); var elements = this.getAssociationItems(siblings, params); - each_default(elements, function(ele) { + (0, import_util426.each)(elements, function(ele) { if (ele.active) { var box2 = ele.element.shape.getCanvasBBox(); ele.view.showTooltip({ x: box2.minX + box2.width / 2, y: box2.minY + box2.height / 2 }); @@ -86784,14 +93367,14 @@ var Association = function(_super) { }; Association2.prototype.hideTooltip = function() { var siblings = getSiblingViews(this.context.view); - each_default(siblings, function(sibling) { + (0, import_util426.each)(siblings, function(sibling) { sibling.hideTooltip(); }); }; Association2.prototype.active = function(params) { var views = getViews(this.context.view); var items = this.getAssociationItems(views, params); - each_default(items, function(item) { + (0, import_util426.each)(items, function(item) { var active = item.active, element = item.element; if (active) { element.setState("active", true); @@ -86801,7 +93384,7 @@ var Association = function(_super) { Association2.prototype.selected = function(params) { var views = getViews(this.context.view); var items = this.getAssociationItems(views, params); - each_default(items, function(item) { + (0, import_util426.each)(items, function(item) { var active = item.active, element = item.element; if (active) { element.setState("selected", true); @@ -86811,7 +93394,7 @@ var Association = function(_super) { Association2.prototype.highlight = function(params) { var views = getViews(this.context.view); var items = this.getAssociationItems(views, params); - each_default(items, function(item) { + (0, import_util426.each)(items, function(item) { var inactive = item.inactive, element = item.element; if (inactive) { element.setState("inactive", true); @@ -86820,7 +93403,7 @@ var Association = function(_super) { }; Association2.prototype.reset = function() { var views = getViews(this.context.view); - each_default(views, function(v3) { + (0, import_util426.each)(views, function(v3) { clearHighlight2(v3); }); }; @@ -86858,7 +93441,11 @@ var Mix = function(_super) { return Mix2; }(Plot); +// node_modules/@antv/g2plot/esm/plots/facet/adaptor.js +var import_util428 = __toModule(require_lib()); + // node_modules/@antv/g2plot/esm/plots/facet/utils.js +var import_util427 = __toModule(require_lib()); function execViewAdaptor(viewOfG2, options) { var data3 = options.data, coordinate11 = options.coordinate, interactions = options.interactions, annotations = options.annotations, animation7 = options.animation, tooltip10 = options.tooltip, axes = options.axes, meta23 = options.meta, geometries = options.geometries; if (data3) { @@ -86866,8 +93453,8 @@ function execViewAdaptor(viewOfG2, options) { } var scales = {}; if (axes) { - each_default(axes, function(axis22, field6) { - scales[field6] = pick(axis22, AXIS_META_CONFIG_KEYS); + (0, import_util427.each)(axes, function(axis22, field6) { + scales[field6] = pick4(axis22, AXIS_META_CONFIG_KEYS); }); } scales = deepAssign({}, meta23, scales); @@ -86878,11 +93465,11 @@ function execViewAdaptor(viewOfG2, options) { if (axes === false) { viewOfG2.axis(false); } else { - each_default(axes, function(axis22, field6) { + (0, import_util427.each)(axes, function(axis22, field6) { viewOfG2.axis(field6, axis22); }); } - each_default(geometries, function(geometry35) { + (0, import_util427.each)(geometries, function(geometry35) { var ext = geometry({ chart: viewOfG2, options: geometry35 @@ -86892,21 +93479,21 @@ function execViewAdaptor(viewOfG2, options) { ext.geometry.adjust(adjust4); } }); - each_default(interactions, function(interaction8) { + (0, import_util427.each)(interactions, function(interaction8) { if (interaction8.enable === false) { viewOfG2.removeInteraction(interaction8.type); } else { viewOfG2.interaction(interaction8.type, interaction8.cfg); } }); - each_default(annotations, function(annotation4) { + (0, import_util427.each)(annotations, function(annotation4) { viewOfG2.annotation()[annotation4.type](__assign({}, annotation4)); }); if (typeof animation7 === "boolean") { viewOfG2.animate(false); } else { viewOfG2.animate(true); - each_default(viewOfG2.geometries, function(g4) { + (0, import_util427.each)(viewOfG2.geometries, function(g4) { g4.animate(animation7); }); } @@ -86922,7 +93509,7 @@ function execViewAdaptor(viewOfG2, options) { function facetAdaptor(params) { var chart = params.chart, options = params.options; var facetType = options.type, data3 = options.data, fields = options.fields, eachView = options.eachView; - var restFacetCfg = omit_default(options, [ + var restFacetCfg = (0, import_util428.omit)(options, [ "type", "data", "fields", @@ -86957,8 +93544,8 @@ function component(params) { var axes = options.axes, meta23 = options.meta, tooltip10 = options.tooltip, coordinate11 = options.coordinate, theme4 = options.theme, legend18 = options.legend, interactions = options.interactions, annotations = options.annotations; var scales = {}; if (axes) { - each_default(axes, function(axis22, field6) { - scales[field6] = pick(axis22, AXIS_META_CONFIG_KEYS); + (0, import_util428.each)(axes, function(axis22, field6) { + scales[field6] = pick4(axis22, AXIS_META_CONFIG_KEYS); }); } scales = deepAssign({}, meta23, scales); @@ -86967,7 +93554,7 @@ function component(params) { if (!axes) { chart.axis(false); } else { - each_default(axes, function(axis22, field6) { + (0, import_util428.each)(axes, function(axis22, field6) { chart.axis(field6, axis22); }); } @@ -86981,14 +93568,14 @@ function component(params) { if (theme4) { chart.theme(theme4); } - each_default(interactions, function(interaction8) { + (0, import_util428.each)(interactions, function(interaction8) { if (interaction8.enable === false) { chart.removeInteraction(interaction8.type); } else { chart.interaction(interaction8.type, interaction8.cfg); } }); - each_default(annotations, function(annotation4) { + (0, import_util428.each)(annotations, function(annotation4) { chart.annotation()[annotation4.type](__assign({}, annotation4)); }); return params; @@ -87068,7 +93655,10 @@ registerLocale("en-US", EN_US_LOCALE); registerLocale("zh-CN", ZH_CN_LOCALE); var adaptors = { scale: scale7, legend, tooltip, annotation, interaction, theme, animation }; -// node_modules/@ant-design/charts/es/util/createNode.js +// node_modules/@ant-design/plots/es/hooks/useChart.js +var import_util430 = __toModule(require_lib()); + +// node_modules/@ant-design/plots/es/util/createNode.js var createNode = function(children, type2) { var mountPoint = document.createElement("div"); if (type2 === "tooltip") { @@ -87079,12 +93669,12 @@ var createNode = function(children, type2) { }; var createNode_default = createNode; -// node_modules/@ant-design/charts/es/util/utils.js +// node_modules/@ant-design/plots/es/util/utils.js var isType3 = function(value2, type2) { var toString7 = {}.toString; - return toString7.call(value2) === "[object " + type2 + "]"; + return toString7.call(value2) === "[object ".concat(type2, "]"); }; -var clone8 = function(source) { +var clone16 = function(source) { if (!source) { return source; } @@ -87094,18 +93684,20 @@ var clone8 = function(source) { } return target; }; -var getType2 = function(n3) { - return Object.prototype.toString.call(n3).slice(8, -1); -}; var deepClone = function(source) { - if (!source) { + if (!source || typeof source !== "object") { return source; } - var target = new source.constructor(); - for (var key in source) { - if (source.hasOwnProperty(key)) { - target[key] = getType2(source[key]) === "Object" || getType2(source[key]) === "Array" ? deepClone(source[key]) : source[key]; - } + var target; + if (Array.isArray(source)) { + target = source.map(function(item) { + return deepClone(item); + }); + } else { + target = {}; + Object.keys(source).forEach(function(key) { + return target[key] = deepClone(source[key]); + }); } return target; }; @@ -87136,19 +93728,20 @@ var setPath = function(source, path, value2) { return source; }; -// node_modules/@ant-design/charts/es/util/getChart.js +// node_modules/@ant-design/plots/es/util/getChart.js +var import_util429 = __toModule(require_lib()); var getChart = function(chartRef, chart) { if (!chartRef) { return; } - if (is_function_default(chartRef)) { + if ((0, import_util429.isFunction)(chartRef)) { chartRef(chart); } else { chartRef.current = chart; } }; -// node_modules/@ant-design/charts/es/hooks/useChart.js +// node_modules/@ant-design/plots/es/hooks/useChart.js var __assign4 = function() { __assign4 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { @@ -87177,7 +93770,7 @@ function useInit(ChartClass, config) { var chart = s3(); var chartOptions = s3(); var container2 = s3(null); - var onReady = config.onReady, onEvent = config.onEvent, chartRef = config.chartRef; + var onReady = config.onReady, onEvent = config.onEvent; var toDataURL = function(type2, encoderOptions) { var _a6; if (type2 === void 0) { @@ -87195,7 +93788,7 @@ function useInit(ChartClass, config) { } var imageName = name; if (name.indexOf(".") === -1) { - imageName = name + "." + type2.split("/")[1]; + imageName = "".concat(name, ".").concat(type2.split("/")[1]); } var base64 = (_a6 = chart.current) === null || _a6 === void 0 ? void 0 : _a6.chart.canvas.cfg.el.toDataURL(type2, encoderOptions); var a4 = document.createElement("a"); @@ -87238,14 +93831,15 @@ function useInit(ChartClass, config) { } }; y2(function() { - if (chart.current && !is_equal_default(chartOptions.current, config)) { + if (chart.current && !(0, import_util430.isEqual)(chartOptions.current, config)) { var changeData = false; if (chartOptions.current) { var _a6 = chartOptions.current, currentData = _a6.data, currentValue = _a6.value, currentPercent = _a6.percent, currentConfig = __rest4(_a6, ["data", "value", "percent"]); var inputData = config.data, inputValue = config.value, inputPercent = config.percent, inputConfig = __rest4(config, ["data", "value", "percent"]); - changeData = is_equal_default(currentConfig, inputConfig); + changeData = (0, import_util430.isEqual)(currentConfig, inputConfig); } - if (changeData) { + chartOptions.current = deepClone(config); + if (changeData && (0, import_util430.get)(config, "chartType") !== "Mix") { var changeType_1 = "data"; var typeMaps = ["percent"]; var currentKeys_1 = Object.keys(config); @@ -87259,7 +93853,6 @@ function useInit(ChartClass, config) { processConfig(); chart.current.update(config); } - chartOptions.current = deepClone(config); } }, [config]); y2(function() { @@ -87268,23 +93861,22 @@ function useInit(ChartClass, config) { return null; }; } - processConfig(); - var chartInstance = new ChartClass(container2.current, __assign4({}, config)); - ChartClass.prototype.toDataURL = function(type2, encoderOptions) { - return toDataURL(type2, encoderOptions); - }; - ChartClass.prototype.downloadImage = function(name, type2, encoderOptions) { - return downloadImage(name, type2, encoderOptions); - }; - chartInstance.render(); if (!chartOptions.current) { chartOptions.current = deepClone(config); } - chart.current = clone8(chartInstance); + processConfig(); + var chartInstance = new ChartClass(container2.current, __assign4({}, config)); + chartInstance.toDataURL = function(type2, encoderOptions) { + return toDataURL(type2, encoderOptions); + }; + chartInstance.downloadImage = function(name, type2, encoderOptions) { + return downloadImage(name, type2, encoderOptions); + }; + chartInstance.render(); + chart.current = clone16(chartInstance); if (onReady) { onReady(chartInstance); } - getChart(chartRef, chart.current); var handler = function(event) { if (onEvent) { onEvent(chartInstance, event); @@ -87305,7 +93897,7 @@ function useInit(ChartClass, config) { }; } -// node_modules/@ant-design/charts/es/errorBoundary/index.js +// node_modules/@ant-design/plots/es/errorBoundary/index.js var __extends4 = function() { var extendStatics = function(d3, b10) { extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d4, b11) { @@ -87368,7 +93960,7 @@ var errorBoundary_default = ErrorBoundary; // node_modules/react-content-loader/dist/react-content-loader.es.js var __assign5 = function() { - __assign5 = Object.assign || function __assign30(t4) { + __assign5 = Object.assign || function __assign32(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -87428,16 +94020,16 @@ var ReactContentLoaderFacebook = function(props) { }; var react_content_loader_es_default = ContentLoader; -// node_modules/@ant-design/charts/es/util/createLoading.js +// node_modules/@ant-design/plots/es/util/createLoading.js var ChartLoading = function(_a6) { - var loadingTemplate = _a6.loadingTemplate; + var loadingTemplate = _a6.loadingTemplate, _b = _a6.theme, theme4 = _b === void 0 ? "light" : _b; var renderLoading = function() { if (loadingTemplate) { return loadingTemplate; } - return compat_module_default.createElement(react_content_loader_es_default, { viewBox: "0 0 400 180", width: 200, height: 90, speed: 1 }, compat_module_default.createElement("rect", { x: "20", y: "5", rx: "0", ry: "0", width: "1", height: "170" }), compat_module_default.createElement("rect", { x: "20", y: "175", rx: "0", ry: "0", width: "360", height: "1" }), compat_module_default.createElement("rect", { x: "40", y: "75", rx: "0", ry: "0", width: "35", height: "100" }), compat_module_default.createElement("rect", { x: "80", y: "125", rx: "0", ry: "0", width: "35", height: "50" }), compat_module_default.createElement("rect", { x: "120", y: "105", rx: "0", ry: "0", width: "35", height: "70" }), compat_module_default.createElement("rect", { x: "160", y: "35", rx: "0", ry: "0", width: "35", height: "140" }), compat_module_default.createElement("rect", { x: "200", y: "55", rx: "0", ry: "0", width: "35", height: "120" }), compat_module_default.createElement("rect", { x: "240", y: "15", rx: "0", ry: "0", width: "35", height: "160" }), compat_module_default.createElement("rect", { x: "280", y: "135", rx: "0", ry: "0", width: "35", height: "40" }), compat_module_default.createElement("rect", { x: "320", y: "85", rx: "0", ry: "0", width: "35", height: "90" })); + return compat_module_default.createElement(react_content_loader_es_default, { viewBox: "0 0 400 180", width: 200, height: 90, speed: 1, backgroundColor: theme4 === "dark" ? "#262626" : "#D9D9D9" }, compat_module_default.createElement("rect", { x: "20", y: "5", rx: "0", ry: "0", width: "1", height: "170" }), compat_module_default.createElement("rect", { x: "20", y: "175", rx: "0", ry: "0", width: "360", height: "1" }), compat_module_default.createElement("rect", { x: "40", y: "75", rx: "0", ry: "0", width: "35", height: "100" }), compat_module_default.createElement("rect", { x: "80", y: "125", rx: "0", ry: "0", width: "35", height: "50" }), compat_module_default.createElement("rect", { x: "120", y: "105", rx: "0", ry: "0", width: "35", height: "70" }), compat_module_default.createElement("rect", { x: "160", y: "35", rx: "0", ry: "0", width: "35", height: "140" }), compat_module_default.createElement("rect", { x: "200", y: "55", rx: "0", ry: "0", width: "35", height: "120" }), compat_module_default.createElement("rect", { x: "240", y: "15", rx: "0", ry: "0", width: "35", height: "160" }), compat_module_default.createElement("rect", { x: "280", y: "135", rx: "0", ry: "0", width: "35", height: "40" }), compat_module_default.createElement("rect", { x: "320", y: "85", rx: "0", ry: "0", width: "35", height: "90" })); }; - return compat_module_default.createElement("div", { style: { + return compat_module_default.createElement("div", { className: "charts-loading-container", style: { position: "absolute", width: "100%", height: "100%", @@ -87447,12 +94039,12 @@ var ChartLoading = function(_a6) { left: 0, top: 0, zIndex: 99, - backgroundColor: "#fff" + backgroundColor: theme4 === "dark" ? "rgb(20, 20, 20)" : "rgb(255, 255, 255)" } }, renderLoading()); }; var createLoading_default = ChartLoading; -// node_modules/@ant-design/charts/es/plots/area/index.js +// node_modules/@ant-design/plots/es/components/area/index.js var __rest6 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87466,10 +94058,13 @@ var __rest6 = function(s4, e4) { return t4; }; var AreaChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest6(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest6(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Area2, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87477,11 +94072,11 @@ var AreaChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var area_default2 = AreaChart; -// node_modules/@ant-design/charts/es/plots/bar/index.js +// node_modules/@ant-design/plots/es/components/bar/index.js var __rest7 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87495,10 +94090,13 @@ var __rest7 = function(s4, e4) { return t4; }; var BarChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest7(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest7(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Bar, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87506,11 +94104,11 @@ var BarChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var bar_default = BarChart; -// node_modules/@ant-design/charts/es/plots/bullet/index.js +// node_modules/@ant-design/plots/es/components/bullet/index.js var __rest8 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87524,10 +94122,13 @@ var __rest8 = function(s4, e4) { return t4; }; var BulletChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest8(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest8(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Bullet, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87535,11 +94136,11 @@ var BulletChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var bullet_default = BulletChart; -// node_modules/@ant-design/charts/es/plots/column/index.js +// node_modules/@ant-design/plots/es/components/column/index.js var __rest9 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87553,10 +94154,13 @@ var __rest9 = function(s4, e4) { return t4; }; var ColumnChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest9(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest9(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Column, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87564,11 +94168,11 @@ var ColumnChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var column_default = ColumnChart; -// node_modules/@ant-design/charts/es/plots/funnel/index.js +// node_modules/@ant-design/plots/es/components/funnel/index.js var __rest10 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87582,10 +94186,13 @@ var __rest10 = function(s4, e4) { return t4; }; var FunnelChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest10(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest10(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Funnel, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87593,11 +94200,11 @@ var FunnelChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var funnel_default = FunnelChart; -// node_modules/@ant-design/charts/es/plots/histogram/index.js +// node_modules/@ant-design/plots/es/components/histogram/index.js var __rest11 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87611,10 +94218,13 @@ var __rest11 = function(s4, e4) { return t4; }; var HistogramChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest11(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest11(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Histogram, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87622,11 +94232,11 @@ var HistogramChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var histogram_default = HistogramChart; -// node_modules/@ant-design/charts/es/plots/line/index.js +// node_modules/@ant-design/plots/es/components/line/index.js var __rest12 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87640,10 +94250,13 @@ var __rest12 = function(s4, e4) { return t4; }; var LineChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest12(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest12(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Line6, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87651,11 +94264,11 @@ var LineChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var line_default10 = LineChart; -// node_modules/@ant-design/charts/es/plots/box/index.js +// node_modules/@ant-design/plots/es/components/box/index.js var __rest13 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87669,10 +94282,13 @@ var __rest13 = function(s4, e4) { return t4; }; var BoxChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest13(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest13(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Box, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87680,11 +94296,11 @@ var BoxChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var box_default = BoxChart; -// node_modules/@ant-design/charts/es/plots/liquid/index.js +// node_modules/@ant-design/plots/es/components/liquid/index.js var __rest14 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87698,10 +94314,13 @@ var __rest14 = function(s4, e4) { return t4; }; var LiquidChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest14(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest14(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Liquid, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87709,11 +94328,11 @@ var LiquidChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var liquid_default = LiquidChart; -// node_modules/@ant-design/charts/es/plots/heatmap/index.js +// node_modules/@ant-design/plots/es/components/heatmap/index.js var __rest15 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87727,10 +94346,13 @@ var __rest15 = function(s4, e4) { return t4; }; var HeatmapChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest15(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest15(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Heatmap2, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87738,11 +94360,11 @@ var HeatmapChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var heatmap_default2 = HeatmapChart; -// node_modules/@ant-design/charts/es/plots/pie/index.js +// node_modules/@ant-design/plots/es/components/pie/index.js var __rest16 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87756,10 +94378,13 @@ var __rest16 = function(s4, e4) { return t4; }; var PieChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest16(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest16(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Pie, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87767,11 +94392,11 @@ var PieChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var pie_default2 = PieChart; -// node_modules/@ant-design/charts/es/plots/gauge/index.js +// node_modules/@ant-design/plots/es/components/gauge/index.js var __rest17 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87785,10 +94410,13 @@ var __rest17 = function(s4, e4) { return t4; }; var GaugeChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest17(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest17(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Gauge, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87796,11 +94424,11 @@ var GaugeChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var gauge_default = GaugeChart; -// node_modules/@ant-design/charts/es/plots/progress/index.js +// node_modules/@ant-design/plots/es/components/progress/index.js var __rest18 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87814,10 +94442,13 @@ var __rest18 = function(s4, e4) { return t4; }; var ProgressChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest18(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest18(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Progress, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87825,11 +94456,11 @@ var ProgressChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var progress_default = ProgressChart; -// node_modules/@ant-design/charts/es/plots/radar/index.js +// node_modules/@ant-design/plots/es/components/radar/index.js var __rest19 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87843,10 +94474,13 @@ var __rest19 = function(s4, e4) { return t4; }; var RadarChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest19(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest19(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Radar, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87854,11 +94488,11 @@ var RadarChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var radar_default = RadarChart; -// node_modules/@ant-design/charts/es/plots/ringProgress/index.js +// node_modules/@ant-design/plots/es/components/ringProgress/index.js var __rest20 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87872,10 +94506,13 @@ var __rest20 = function(s4, e4) { return t4; }; var RingProgressChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest20(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest20(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(RingProgress, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87883,11 +94520,11 @@ var RingProgressChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var ringProgress_default = RingProgressChart; -// node_modules/@ant-design/charts/es/plots/rose/index.js +// node_modules/@ant-design/plots/es/components/rose/index.js var __rest21 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87901,10 +94538,13 @@ var __rest21 = function(s4, e4) { return t4; }; var RoseChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest21(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest21(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Rose, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87912,11 +94552,11 @@ var RoseChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var rose_default = RoseChart; -// node_modules/@ant-design/charts/es/plots/chord/index.js +// node_modules/@ant-design/plots/es/components/chord/index.js var __rest22 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87930,10 +94570,13 @@ var __rest22 = function(s4, e4) { return t4; }; var ChordChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest22(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest22(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Chord, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87941,11 +94584,11 @@ var ChordChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var chord_default = ChordChart; -// node_modules/@ant-design/charts/es/plots/scatter/index.js +// node_modules/@ant-design/plots/es/components/scatter/index.js var __rest23 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87959,10 +94602,13 @@ var __rest23 = function(s4, e4) { return t4; }; var ScatterChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest23(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest23(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Scatter, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87970,11 +94616,11 @@ var ScatterChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var scatter_default = ScatterChart; -// node_modules/@ant-design/charts/es/plots/tinyArea/index.js +// node_modules/@ant-design/plots/es/components/tinyArea/index.js var __rest24 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -87988,10 +94634,13 @@ var __rest24 = function(s4, e4) { return t4; }; var TinyAreaChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest24(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest24(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(TinyArea, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -87999,11 +94648,11 @@ var TinyAreaChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var tinyArea_default = TinyAreaChart; -// node_modules/@ant-design/charts/es/plots/tinyColumn/index.js +// node_modules/@ant-design/plots/es/components/tinyColumn/index.js var __rest25 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88017,10 +94666,13 @@ var __rest25 = function(s4, e4) { return t4; }; var TinyColumnChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest25(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest25(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(TinyColumn, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88028,11 +94680,11 @@ var TinyColumnChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var tinyColumn_default = TinyColumnChart; -// node_modules/@ant-design/charts/es/plots/dualAxes/index.js +// node_modules/@ant-design/plots/es/components/dualAxes/index.js var __rest26 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88046,10 +94698,13 @@ var __rest26 = function(s4, e4) { return t4; }; var DualAxesChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest26(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest26(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(DualAxes, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88057,11 +94712,11 @@ var DualAxesChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var dualAxes_default = DualAxesChart; -// node_modules/@ant-design/charts/es/plots/tinyLine/index.js +// node_modules/@ant-design/plots/es/components/tinyLine/index.js var __rest27 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88075,10 +94730,13 @@ var __rest27 = function(s4, e4) { return t4; }; var TinyLineChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest27(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest27(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(TinyLine, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88086,11 +94744,11 @@ var TinyLineChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var tinyLine_default = TinyLineChart; -// node_modules/@ant-design/charts/es/plots/waterfall/index.js +// node_modules/@ant-design/plots/es/components/waterfall/index.js var __rest28 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88104,10 +94762,13 @@ var __rest28 = function(s4, e4) { return t4; }; var WaterfallChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest28(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest28(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Waterfall, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88115,11 +94776,11 @@ var WaterfallChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var waterfall_default = WaterfallChart; -// node_modules/@ant-design/charts/es/plots/wordCloud/index.js +// node_modules/@ant-design/plots/es/components/wordCloud/index.js var __rest29 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88133,10 +94794,13 @@ var __rest29 = function(s4, e4) { return t4; }; var WordCloudChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest29(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest29(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(WordCloud, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88144,11 +94808,11 @@ var WordCloudChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var wordCloud_default = WordCloudChart; -// node_modules/@ant-design/charts/es/plots/sunburst/index.js +// node_modules/@ant-design/plots/es/components/sunburst/index.js var __rest30 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88162,10 +94826,13 @@ var __rest30 = function(s4, e4) { return t4; }; var SunburstChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest30(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest30(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Sunburst, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88173,11 +94840,11 @@ var SunburstChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var sunburst_default = SunburstChart; -// node_modules/@ant-design/charts/es/plots/stock/index.js +// node_modules/@ant-design/plots/es/components/stock/index.js var __rest31 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88191,10 +94858,13 @@ var __rest31 = function(s4, e4) { return t4; }; var StockChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest31(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest31(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Stock, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88202,11 +94872,11 @@ var StockChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var stock_default = StockChart; -// node_modules/@ant-design/charts/es/plots/radialBar/index.js +// node_modules/@ant-design/plots/es/components/radialBar/index.js var __rest32 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88220,10 +94890,13 @@ var __rest32 = function(s4, e4) { return t4; }; var RadialBarChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest32(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest32(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(RadialBar, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88231,11 +94904,11 @@ var RadialBarChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var radialBar_default = RadialBarChart; -// node_modules/@ant-design/charts/es/plots/sankey/index.js +// node_modules/@ant-design/plots/es/components/sankey/index.js var __rest33 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88249,10 +94922,13 @@ var __rest33 = function(s4, e4) { return t4; }; var SankeyChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest33(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest33(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Sankey2, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88260,11 +94936,11 @@ var SankeyChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var sankey_default = SankeyChart; -// node_modules/@ant-design/charts/es/plots/treemap/index.js +// node_modules/@ant-design/plots/es/components/treemap/index.js var __rest34 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88278,10 +94954,13 @@ var __rest34 = function(s4, e4) { return t4; }; var TreemapChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest34(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest34(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Treemap, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88289,11 +94968,11 @@ var TreemapChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var treemap_default2 = TreemapChart; -// node_modules/@ant-design/charts/es/plots/violin/index.js +// node_modules/@ant-design/plots/es/components/violin/index.js var __rest35 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88307,10 +94986,13 @@ var __rest35 = function(s4, e4) { return t4; }; var ViolinChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest35(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest35(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); var _b = useInit(Violin2, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88318,11 +95000,11 @@ var ViolinChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var violin_default2 = ViolinChart; -// node_modules/@ant-design/charts/es/plots/facet/index.js +// node_modules/@ant-design/plots/es/components/venn/index.js var __rest36 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88335,11 +95017,14 @@ var __rest36 = function(s4, e4) { } return t4; }; -var FacetChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { +var VennChart = x3(function(props, ref) { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest36(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); - var _b = useInit(Facet2, rest), chart = _b.chart, container2 = _b.container; + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest36(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); + var _b = useInit(Venn, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88347,11 +95032,11 @@ var FacetChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); -var facet_default = FacetChart; +var venn_default = VennChart; -// node_modules/@ant-design/charts/es/plots/mix/index.js +// node_modules/@ant-design/plots/es/components/circlePacking/index.js var __rest37 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88364,11 +95049,14 @@ var __rest37 = function(s4, e4) { } return t4; }; -var MultiViewChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { +var CirclePackingChart = x3(function(props, ref) { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest37(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); - var _b = useInit(Mix, rest), chart = _b.chart, container2 = _b.container; + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest37(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); + var _b = useInit(CirclePacking, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88376,11 +95064,11 @@ var MultiViewChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); -var mix_default = MultiViewChart; +var circlePacking_default = CirclePackingChart; -// node_modules/@ant-design/charts/es/plots/venn/index.js +// node_modules/@ant-design/plots/es/components/facet/index.js var __rest38 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88393,11 +95081,14 @@ var __rest38 = function(s4, e4) { } return t4; }; -var VennChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { +var FacetChart = x3(function(props, ref) { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest38(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); - var _b = useInit(Venn, rest), chart = _b.chart, container2 = _b.container; + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest38(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); + var _b = useInit(Facet2, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88405,11 +95096,23 @@ var VennChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); -var venn_default = VennChart; +var facet_default = FacetChart; -// node_modules/@ant-design/charts/es/plots/bidirectionalBar/index.js +// node_modules/@ant-design/plots/es/components/mix/index.js +var __assign6 = function() { + __assign6 = Object.assign || function(t4) { + for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { + s4 = arguments[i4]; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4)) + t4[p4] = s4[p4]; + } + return t4; + }; + return __assign6.apply(this, arguments); +}; var __rest39 = function(s4, e4) { var t4 = {}; for (var p4 in s4) @@ -88422,11 +95125,14 @@ var __rest39 = function(s4, e4) { } return t4; }; -var BidirectionalBarChart = x3(function(props, ref) { - var _a6 = props.style, style = _a6 === void 0 ? { +var MultiViewChart = x3(function(props, ref) { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { height: "inherit" - } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest39(props, ["style", "className", "loading", "loadingTemplate", "errorTemplate"]); - var _b = useInit(BidirectionalBar, rest), chart = _b.chart, container2 = _b.container; + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest39(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); + var _b = useInit(Mix, __assign6(__assign6({}, rest), { chartType: "Mix" })), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); _2(ref, function() { return { getChart: function() { @@ -88434,11 +95140,114 @@ var BidirectionalBarChart = x3(function(props, ref) { } }; }); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); +}); +var mix_default = MultiViewChart; + +// node_modules/@ant-design/plots/es/components/bidirectionalBar/index.js +var __rest40 = function(s4, e4) { + var t4 = {}; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) + t4[p4] = s4[p4]; + if (s4 != null && typeof Object.getOwnPropertySymbols === "function") + for (var i4 = 0, p4 = Object.getOwnPropertySymbols(s4); i4 < p4.length; i4++) { + if (e4.indexOf(p4[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p4[i4])) + t4[p4[i4]] = s4[p4[i4]]; + } + return t4; +}; +var BidirectionalBarChart = x3(function(props, ref) { + var chartRef = props.chartRef, _a6 = props.style, style = _a6 === void 0 ? { + height: "inherit" + } : _a6, className = props.className, loading = props.loading, loadingTemplate = props.loadingTemplate, errorTemplate = props.errorTemplate, rest = __rest40(props, ["chartRef", "style", "className", "loading", "loadingTemplate", "errorTemplate"]); + var _b = useInit(BidirectionalBar, rest), chart = _b.chart, container2 = _b.container; + y2(function() { + getChart(chartRef, chart.current); + }, [chart.current]); + _2(ref, function() { + return { + getChart: function() { + return chart.current; + } + }; + }); + return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate, theme: props.theme }), compat_module_default.createElement("div", { className, style, ref: container2 })); }); var bidirectionalBar_default = BidirectionalBarChart; +// node_modules/@ant-design/plots/es/index.js +var es_default = { + Area: area_default2, + Bar: bar_default, + Box: box_default, + Bullet: bullet_default, + Column: column_default, + Funnel: funnel_default, + Histogram: histogram_default, + Line: line_default10, + Liquid: liquid_default, + Heatmap: heatmap_default2, + Pie: pie_default2, + Progress: progress_default, + Radar: radar_default, + Facet: facet_default, + RingProgress: ringProgress_default, + Rose: rose_default, + Chord: chord_default, + Scatter: scatter_default, + TinyArea: tinyArea_default, + TinyColumn: tinyColumn_default, + TinyLine: tinyLine_default, + Waterfall: waterfall_default, + WordCloud: wordCloud_default, + Sunburst: sunburst_default, + DualAxes: dualAxes_default, + Stock: stock_default, + RadialBar: radialBar_default, + Gauge: gauge_default, + CirclePacking: circlePacking_default, + Sankey: sankey_default, + Treemap: treemap_default2, + Violin: violin_default2, + Venn: venn_default, + MultiView: mix_default, + Mix: mix_default, + BidirectionalBar: bidirectionalBar_default, + getCanvasPattern, + FUNNEL_CONVERSATION_FIELD: FUNNEL_CONVERSATION, + G2: esm_exports3, + flow, + measureTextWidth: measureTextWidth2, + adaptors +}; + +// node_modules/@ant-design/graphs/es/index.js +var es_exports3 = {}; +__export(es_exports3, { + DagreFundFlowGraph: () => dagreFundFlow_default, + DagreGraph: () => dagre_default2, + DecompositionTreeGraph: () => decompositionTreeGraph_default, + Edge: () => edge_default2, + FlowAnalysisGraph: () => flowAnalysisGraph_default, + FundFlowGraph: () => fundFlowGraph_default, + G6: () => es_default6, + Graph: () => graph_default2, + IndentedTree: () => indented_default, + IndentedTreeGraph: () => indentedTreeGraph_default, + Node: () => node_default, + OrganizationGraph: () => organizationGraph_default, + OrganizationTreeGraph: () => organizationTreeGraph_default, + OrganizationalGraph: () => organizationalGraph_default, + RadialGraph: () => radialGraph_default, + RadialTreeGraph: () => radialTreeGraph_default +}); + +// node_modules/@antv/g6-core/es/behavior/behavior.js +var import_util468 = __toModule(require_lib()); + // node_modules/@antv/g6-core/es/behavior/behaviorOption.js +var import_util467 = __toModule(require_lib()); var behaviorOption_default = { getDefaultCfg: function getDefaultCfg() { return {}; @@ -88466,7 +95275,7 @@ var behaviorOption_default = { if (this.type === "drag-canvas" || this.type === "brush-select" || this.type === "lasso-select") { graph.get("canvas").set("draggable", true); } - each_default(events, function(handler, event) { + (0, import_util467.each)(events, function(handler, event) { graph.on(event, handler); }); document.addEventListener("visibilitychange", function() { @@ -88475,17 +95284,19 @@ var behaviorOption_default = { }, unbind: function unbind(graph) { var events = this.events; + var draggable = graph.get("canvas").get("draggable"); if (this.type === "drag-canvas" || this.type === "brush-select" || this.type === "lasso-select") { graph.get("canvas").set("draggable", false); } - each_default(events, function(handler, event) { + (0, import_util467.each)(events, function(handler, event) { graph.off(event, handler); }); + graph.get("canvas").set("draggable", draggable); }, - get: function get(val) { + get: function get96(val) { return this[val]; }, - set: function set8(key, val) { + set: function set11(key, val) { this[key] = val; return this; } @@ -88497,9 +95308,9 @@ var Behavior = function() { } Behavior2.registerBehavior = function(type2, behavior) { if (!behavior) { - throw new Error("please specify handler for this behavior: " + type2); + throw new Error("please specify handler for this behavior: ".concat(type2)); } - var prototype = clone_default(behaviorOption_default); + var prototype = (0, import_util468.clone)(behaviorOption_default); Object.assign(prototype, behavior); var base = function base2(cfg) { var _this = this; @@ -88508,8 +95319,8 @@ var Behavior = function() { this.events = null; var eventsToBind = {}; if (events) { - each_default(events, function(handle, event) { - eventsToBind[event] = wrap_behavior_default(_this, handle); + (0, import_util468.each)(events, function(handle, event) { + eventsToBind[event] = (0, import_util468.wrapBehavior)(_this, handle); }); this.events = eventsToBind; } @@ -88531,15 +95342,18 @@ var behavior_default = Behavior; // node_modules/@antv/g6-core/es/behavior/index.js var behavior_default2 = behavior_default; +// node_modules/@antv/g6-core/es/graph/graph.js +var import_util502 = __toModule(require_lib()); + // node_modules/@antv/algorithm/es/index.js -var es_exports = {}; -__export(es_exports, { +var es_exports2 = {}; +__export(es_exports2, { GADDI: () => gaddi_default, Stack: () => stack_default2, breadthFirstSearch: () => bfs_default, connectedComponent: () => getConnectedComponents, cosineSimilarity: () => cosine_similarity_default, - default: () => es_default, + default: () => es_default2, depthFirstSearch: () => depthFirstSearch, detectAllCycles: () => detectAllCycles, detectAllDirectedCycle: () => detectAllDirectedCycle, @@ -88718,9 +95532,9 @@ var LinkedList = function() { } return deletedHead; }; - LinkedList2.prototype.fromArray = function(values2) { + LinkedList2.prototype.fromArray = function(values4) { var _this = this; - values2.forEach(function(value2) { + values4.forEach(function(value2) { return _this.append(value2); }); return this; @@ -88826,7 +95640,7 @@ var getEdgesByNodeId = function getEdgesByNodeId2(nodeId, edges) { return edge2.source === nodeId || edge2.target === nodeId; }); }; -var uniqueId = function uniqueId2(index2) { +var uniqueId9 = function uniqueId10(index2) { if (index2 === void 0) { index2 = 0; } @@ -89369,6 +96183,7 @@ var detectAllCycles = function detectAllCycles2(graphData, directed, nodeIds, in var detect_cycle_default = detectDirectedCycle; // node_modules/@antv/algorithm/es/dijkstra.js +var import_util473 = __toModule(require_lib()); var minVertex = function minVertex2(D3, nodes, marks) { var minDis = Infinity; var minNode; @@ -89455,7 +96270,7 @@ function findAllPaths(source, target, prevs, foundPaths) { return; for (var _b = 0, prevPaths_1 = prevPaths; _b < prevPaths_1.length; _b++) { var prePath = prevPaths_1[_b]; - if (is_array_default(prePath)) + if ((0, import_util473.isArray)(prePath)) paths.push(__spreadArray(__spreadArray([], prePath, true), [target], false)); else paths.push([prePath, target]); @@ -89520,10 +96335,10 @@ var findAllPath = function findAllPath2(graphData, start, end2, directed) { var floydWarshall = function floydWarshall2(graphData, directed) { var adjacentMatrix = adjacent_matrix_default(graphData, directed); var dist4 = []; - var size2 = adjacentMatrix.length; - for (var i4 = 0; i4 < size2; i4 += 1) { + var size14 = adjacentMatrix.length; + for (var i4 = 0; i4 < size14; i4 += 1) { dist4[i4] = []; - for (var j4 = 0; j4 < size2; j4 += 1) { + for (var j4 = 0; j4 < size14; j4 += 1) { if (i4 === j4) { dist4[i4][j4] = 0; } else if (adjacentMatrix[i4][j4] === 0 || !adjacentMatrix[i4][j4]) { @@ -89533,9 +96348,9 @@ var floydWarshall = function floydWarshall2(graphData, directed) { } } } - for (var k4 = 0; k4 < size2; k4 += 1) { - for (var i4 = 0; i4 < size2; i4 += 1) { - for (var j4 = 0; j4 < size2; j4 += 1) { + for (var k4 = 0; k4 < size14; k4 += 1) { + for (var i4 = 0; i4 < size14; i4 += 1) { + for (var j4 = 0; j4 < size14; j4 += 1) { if (dist4[i4][j4] > dist4[i4][k4] + dist4[k4][j4]) { dist4[i4][j4] = dist4[i4][k4] + dist4[k4][j4]; } @@ -89561,7 +96376,7 @@ var labelPropagation = function labelPropagation2(graphData, directed, weightPro var clusters = {}; var nodeMap = {}; nodes.forEach(function(node, i4) { - var cid = uniqueId(); + var cid = uniqueId9(); node.clusterId = cid; clusters[cid] = { id: cid, @@ -89675,7 +96490,11 @@ var labelPropagation = function labelPropagation2(graphData, directed, weightPro }; var label_propagation_default = labelPropagation; +// node_modules/@antv/algorithm/es/louvain.js +var import_util479 = __toModule(require_lib()); + // node_modules/@antv/algorithm/es/utils/vector.js +var import_util477 = __toModule(require_lib()); var Vector = function() { function Vector2(arr) { this.arr = arr; @@ -89765,14 +96584,14 @@ var Vector = function() { }; Vector2.prototype.normalize = function() { var res = []; - var cloneArr = clone_default(this.arr); + var cloneArr = (0, import_util477.clone)(this.arr); cloneArr.sort(function(a4, b10) { return a4 - b10; }); - var max8 = cloneArr[cloneArr.length - 1]; - var min7 = cloneArr[0]; + var max15 = cloneArr[cloneArr.length - 1]; + var min13 = cloneArr[0]; for (var index2 in this.arr) { - res[index2] = (this.arr[index2] - min7) / (max8 - min7); + res[index2] = (this.arr[index2] - min13) / (max15 - min13); } return new Vector2(res); }; @@ -89835,6 +96654,9 @@ var getAllProperties = function getAllProperties2(nodes, key) { return allProperties; }; +// node_modules/@antv/algorithm/es/utils/data-preprocessing.js +var import_util478 = __toModule(require_lib()); + // node_modules/@antv/algorithm/es/types.js var DistanceType; (function(DistanceType2) { @@ -89843,17 +96665,17 @@ var DistanceType; // node_modules/@antv/algorithm/es/utils/data-preprocessing.js var getAllKeyValueMap = function getAllKeyValueMap2(dataList, involvedKeys, uninvolvedKeys) { - var keys2 = []; + var keys6 = []; if (involvedKeys === null || involvedKeys === void 0 ? void 0 : involvedKeys.length) { - keys2 = involvedKeys; + keys6 = involvedKeys; } else { dataList.forEach(function(data3) { - keys2 = keys2.concat(Object.keys(data3)); + keys6 = keys6.concat(Object.keys(data3)); }); - keys2 = uniq(keys2); + keys6 = (0, import_util478.uniq)(keys6); } var allKeyValueMap = {}; - keys2.forEach(function(key) { + keys6.forEach(function(key) { var value2 = []; dataList.forEach(function(data3) { if (data3[key] !== void 0 && data3[key] !== "") { @@ -89861,7 +96683,7 @@ var getAllKeyValueMap = function getAllKeyValueMap2(dataList, involvedKeys, unin } }); if (value2.length && !(uninvolvedKeys === null || uninvolvedKeys === void 0 ? void 0 : uninvolvedKeys.includes(key))) { - allKeyValueMap[key] = uniq(value2); + allKeyValueMap[key] = (0, import_util478.uniq)(value2); } }); return allKeyValueMap; @@ -90013,11 +96835,11 @@ var louvain = function louvain2(graphData, directed, weightPropertyName, thresho var properties = getAllProperties(nodes); allPropertiesWeight = oneHot(properties); } - var uniqueId5 = 1; + var uniqueId14 = 1; var clusters = {}; var nodeMap = {}; nodes.forEach(function(node, i4) { - var cid = String(uniqueId5++); + var cid = String(uniqueId14++); node.clusterId = cid; clusters[cid] = { id: cid, @@ -90073,7 +96895,7 @@ var louvain = function louvain2(graphData, directed, weightPropertyName, thresho clusterId: node.clusterId }; }); - finalClusters = clone_default(clusters); + finalClusters = (0, import_util479.clone)(clusters); previousModularity = totalModularity; } if (increaseWithinThreshold || iter > 100) { @@ -90250,12 +97072,13 @@ var iLouvain = function iLouvain2(graphData, directed, weightPropertyName, thres var i_louvain_default = iLouvain; // node_modules/@antv/algorithm/es/k-core.js +var import_util480 = __toModule(require_lib()); var kCore = function kCore2(graphData, k4) { var _a6; if (k4 === void 0) { k4 = 1; } - var data3 = clone_default(graphData); + var data3 = (0, import_util480.clone)(graphData); var _b = data3.nodes, nodes = _b === void 0 ? [] : _b; var _c = data3.edges, edges = _c === void 0 ? [] : _c; var _loop_1 = function _loop_12() { @@ -90435,6 +97258,7 @@ var cosineSimilarity = function cosineSimilarity2(item, targetItem) { var cosine_similarity_default = cosineSimilarity; // node_modules/@antv/algorithm/es/nodes-cosine-similarity.js +var import_util481 = __toModule(require_lib()); var nodesCosineSimilarity = function nodesCosineSimilarity2(nodes, seedNode, involvedKeys, uninvolvedKeys, propertyKey) { if (nodes === void 0) { nodes = []; @@ -90448,7 +97272,7 @@ var nodesCosineSimilarity = function nodesCosineSimilarity2(nodes, seedNode, inv if (propertyKey === void 0) { propertyKey = "properties"; } - var similarNodes = clone_default(nodes.filter(function(node) { + var similarNodes = (0, import_util481.clone)(nodes.filter(function(node) { return node.id !== seedNode.id; })); var seedNodeIndex = nodes.findIndex(function(node) { @@ -90577,10 +97401,10 @@ var MinBinaryHeap = function() { var element = index2; var left2 = this.getLeft(index2); var right2 = this.getRight(index2); - var size2 = this.list.length; - if (left2 !== null && left2 < size2 && this.compareFn(this.list[element], this.list[left2]) > 0) { + var size14 = this.list.length; + if (left2 !== null && left2 < size14 && this.compareFn(this.list[element], this.list[left2]) > 0) { element = left2; - } else if (right2 !== null && right2 < size2 && this.compareFn(this.list[element], this.list[right2]) > 0) { + } else if (right2 !== null && right2 < size14 && this.compareFn(this.list[element], this.list[right2]) > 0) { element = right2; } if (index2 !== element) { @@ -90729,6 +97553,9 @@ var pageRank = function pageRank2(graphData, epsilon, linkProb) { }; var pageRank_default = pageRank; +// node_modules/@antv/algorithm/es/gSpan/gSpan.js +var import_util484 = __toModule(require_lib()); + // node_modules/@antv/algorithm/es/gSpan/struct.js var VACANT_EDGE_ID = -1; var VACANT_NODE_ID = -1; @@ -91216,7 +98043,7 @@ var GSpan = function() { return; this.counter++; var graph = this.dfsCode.toGraph(this.counter, this.directed); - this.frequentSubgraphs.push(clone_default(graph)); + this.frequentSubgraphs.push((0, import_util484.clone)(graph)); }; GSpan2.prototype.subGraphMining = function(projected) { var _this = this; @@ -91710,7 +98537,7 @@ var getNodeMaps = function getNodeMaps2(nodes, nodeLabelProp) { var getEdgeMaps = function getEdgeMaps2(edges, edgeLabelProp, nodeMap) { var edgeMap = {}, edgeLabelMap = {}; edges.forEach(function(edge2, i4) { - edgeMap["".concat(uniqueId)] = { + edgeMap["".concat(uniqueId9)] = { idx: i4, edge: edge2 }; @@ -91736,7 +98563,7 @@ var getEdgeMaps = function getEdgeMaps2(edges, edgeLabelProp, nodeMap) { }; var getSpmMap = function getSpmMap2(nodes, spm, directed) { var length5 = spm.length; - var map6 = {}; + var map23 = {}; spm.forEach(function(row, i4) { var start = directed ? 0 : i4 + 1; var iId = nodes[i4].id; @@ -91745,12 +98572,12 @@ var getSpmMap = function getSpmMap2(nodes, spm, directed) { continue; var jId = nodes[j4].id; var dist4 = row[j4]; - map6["".concat(iId, "-").concat(jId)] = dist4; + map23["".concat(iId, "-").concat(jId)] = dist4; if (!directed) - map6["".concat(jId, "-").concat(iId)] = dist4; + map23["".concat(jId, "-").concat(iId)] = dist4; } }); - return map6; + return map23; }; var getNDSDist = function getNDSDist2(graph, node1, node2, nodeMap, spDist, kNeighborUnits, structure, nodeLabelProp, edgeLabelProp, cachedNDSMap, cachedInterInducedGraph) { var _a6; @@ -92065,9 +98892,9 @@ var GADDI = function GADDI2(graphData, pattern2, directed, k4, length5, nodeLabe var candidate = candidateGraph.nodes[0]; var candidateNodeLabelCountMap = {}; var candidateNodeMap = {}; - candidateGraph.nodes.forEach(function(node, q4) { + candidateGraph.nodes.forEach(function(node, q3) { candidateNodeMap[node.id] = { - idx: q4, + idx: q3, node, degree: 0, inDegree: 0, @@ -92327,7 +99154,7 @@ var Stack2 = function() { this.maxStep = maxStep; } Object.defineProperty(Stack3.prototype, "length", { - get: function get3() { + get: function get100() { return this.linkedList.toArray().length; }, enumerable: false, @@ -92371,7 +99198,7 @@ var stack_default2 = Stack2; // node_modules/@antv/algorithm/es/index.js var detectDirectedCycle3 = detect_cycle_default; -var es_default = { +var es_default2 = { getAdjMatrix: adjacent_matrix_default, breadthFirstSearch: bfs_default, connectedComponent: getConnectedComponents, @@ -92426,7 +99253,9 @@ __export(math_exports, { isPointsOverlap: () => isPointsOverlap, isPolygonsIntersect: () => isPolygonsIntersect2, itemIntersectByLine: () => itemIntersectByLine, + lerp: () => lerp6, move: () => move, + pointLineDistance: () => pointLineDistance, pointLineSquareDist: () => pointLineSquareDist, pointRectSquareDist: () => pointRectSquareDist, rotate: () => rotate6, @@ -92435,14 +99264,15 @@ __export(math_exports, { squareDist: () => squareDist, translate: () => translate4 }); +var import_util487 = __toModule(require_lib()); var transform8 = ext_exports.transform; var compare2 = function compare3(attributeName) { return function(m4, n3) { return m4[attributeName] - n3[attributeName]; }; }; -var isBetween4 = function isBetween5(value2, min7, max8) { - return value2 >= min7 && value2 <= max8; +var isBetween4 = function isBetween5(value2, min13, max15) { + return value2 >= min13 && value2 <= max15; }; var getLineIntersect2 = function getLineIntersect3(p0, p1, p22, p32) { var tolerance3 = 1e-4; @@ -92518,16 +99348,13 @@ var getCircleIntersectByPoint = function getCircleIntersectByPoint2(circle3, poi var x6 = point2.x, y5 = point2.y; var dx = x6 - cx; var dy = y5 - cy; - var d3 = Math.sqrt(dx * dx + dy * dy); - if (d3 < r4) { + if (dx * dx + dy * dy < r4 * r4) { return null; } - var signX = Math.sign(dx); - var signY = Math.sign(dy); var angle3 = Math.atan(dy / dx); return { - x: cx + Math.abs(r4 * Math.cos(angle3)) * signX, - y: cy + Math.abs(r4 * Math.sin(angle3)) * signY + x: cx + Math.abs(r4 * Math.cos(angle3)) * Math.sign(dx), + y: cy + Math.abs(r4 * Math.sin(angle3)) * Math.sign(dy) }; }; var getEllipseIntersectByPoint = function getEllipseIntersectByPoint2(ellipse, point2) { @@ -92609,10 +99436,10 @@ var scaleMatrix = function scaleMatrix2(matrix, ratio) { }; var floydWarshall3 = function floydWarshall4(adjMatrix3) { var dist4 = []; - var size2 = adjMatrix3.length; - for (var i4 = 0; i4 < size2; i4 += 1) { + var size14 = adjMatrix3.length; + for (var i4 = 0; i4 < size14; i4 += 1) { dist4[i4] = []; - for (var j4 = 0; j4 < size2; j4 += 1) { + for (var j4 = 0; j4 < size14; j4 += 1) { if (i4 === j4) { dist4[i4][j4] = 0; } else if (adjMatrix3[i4][j4] === 0 || !adjMatrix3[i4][j4]) { @@ -92622,9 +99449,9 @@ var floydWarshall3 = function floydWarshall4(adjMatrix3) { } } } - for (var k4 = 0; k4 < size2; k4 += 1) { - for (var i4 = 0; i4 < size2; i4 += 1) { - for (var j4 = 0; j4 < size2; j4 += 1) { + for (var k4 = 0; k4 < size14; k4 += 1) { + for (var i4 = 0; i4 < size14; i4 += 1) { + for (var j4 = 0; j4 < size14; j4 += 1) { if (dist4[i4][j4] > dist4[i4][k4] + dist4[k4][j4]) { dist4[i4][j4] = dist4[i4][k4] + dist4[k4][j4]; } @@ -92660,42 +99487,66 @@ var getAdjMatrix = function getAdjMatrix2(data3, directed) { } return matrix; }; -var translate4 = function translate5(group2, vec) { - group2.translate(vec.x, vec.y); +var translate4 = function translate5(group3, vec) { + group3.translate(vec.x, vec.y); }; -var move = function move2(group2, point2) { - var matrix = group2.getMatrix(); +var move = function move2(group3, point2, animate, animateCfg) { + if (animateCfg === void 0) { + animateCfg = { + duration: 500 + }; + } + var matrix = group3.getMatrix(); if (!matrix) { matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; } - var bbox = group2.getCanvasBBox(); + var bbox = group3.getCanvasBBox(); var vx = point2.x - bbox.minX; var vy = point2.y - bbox.minY; - var movedMatrix = transform8(matrix, [["t", vx, vy]]); - group2.setMatrix(movedMatrix); + if (animate) { + var dx_1 = vx * matrix[0]; + var dy_1 = vy * matrix[4]; + var lastX_1 = 0; + var lastY_1 = 0; + var newX_1 = 0; + var newY_1 = 0; + group3.animate(function(ratio) { + newX_1 = dx_1 * ratio; + newY_1 = dy_1 * ratio; + matrix = transform8(matrix, [["t", newX_1 - lastX_1, newY_1 - lastY_1]]); + lastX_1 = newX_1; + lastY_1 = newY_1; + return { + matrix + }; + }, animateCfg); + } else { + var movedMatrix = transform8(matrix, [["t", vx, vy]]); + group3.setMatrix(movedMatrix); + } }; -var scale10 = function scale11(group2, ratio) { - var matrix = group2.getMatrix(); +var scale10 = function scale11(group3, ratio) { + var matrix = group3.getMatrix(); if (!matrix) { matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; } var scaleXY = ratio; - if (!is_array_default(ratio)) { + if (!(0, import_util487.isArray)(ratio)) { scaleXY = [ratio, ratio]; } - if (is_array_default(ratio) && ratio.length === 1) { + if ((0, import_util487.isArray)(ratio) && ratio.length === 1) { scaleXY = [ratio[0], ratio[0]]; } matrix = transform8(matrix, [["s", scaleXY[0], scaleXY[1]]]); - group2.setMatrix(matrix); + group3.setMatrix(matrix); }; -var rotate6 = function rotate7(group2, angle3) { - var matrix = group2.getMatrix(); +var rotate6 = function rotate7(group3, angle3) { + var matrix = group3.getMatrix(); if (!matrix) { matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; } matrix = transform8(matrix, [["r", angle3]]); - group2.setMatrix(matrix); + group3.setMatrix(matrix); }; var getDegree = function getDegree2(n3, nodeIdxMap, edges) { var degrees = []; @@ -92712,8 +99563,8 @@ var getDegree = function getDegree2(n3, nodeIdxMap, edges) { }); return degrees; }; -function onSegment3(p1, p22, q4) { - if ((q4[0] - p1[0]) * (p22[1] - p1[1]) === (p22[0] - p1[0]) * (q4[1] - p1[1]) && Math.min(p1[0], p22[0]) <= q4[0] && q4[0] <= Math.max(p1[0], p22[0]) && Math.min(p1[1], p22[1]) <= q4[1] && q4[1] <= Math.max(p1[1], p22[1])) { +function onSegment3(p1, p22, q3) { + if ((q3[0] - p1[0]) * (p22[1] - p1[1]) === (p22[0] - p1[0]) * (q3[1] - p1[1]) && Math.min(p1[0], p22[0]) <= q3[0] && q3[0] <= Math.max(p1[0], p22[0]) && Math.min(p1[1], p22[1]) <= q3[1] && q3[1] <= Math.max(p1[1], p22[1])) { return true; } return false; @@ -92748,7 +99599,7 @@ var intersectBBox3 = function intersectBBox4(box1, box2) { }; var lineIntersectPolygon2 = function lineIntersectPolygon3(lines, line2) { var isIntersect2 = false; - each_default(lines, function(l4) { + (0, import_util487.each)(lines, function(l4) { if (getLineIntersect2(l4.from, l4.to, line2.from, line2.to)) { isIntersect2 = true; return false; @@ -92790,11 +99641,11 @@ var isPolygonsIntersect2 = function isPolygonsIntersect3(points1, points2) { } if (lines.length > 1) { var first = points[0]; - var last2 = points[count2 - 1]; + var last17 = points[count2 - 1]; lines.push({ from: { - x: last2[0], - y: last2[1] + x: last17[0], + y: last17[1] }, to: { x: first[0], @@ -92813,7 +99664,7 @@ var isPolygonsIntersect2 = function isPolygonsIntersect3(points1, points2) { return false; } var isIn = false; - each_default(points2, function(point2) { + (0, import_util487.each)(points2, function(point2) { if (isPointInPolygon(points1, point2[0], point2[1])) { isIn = true; return false; @@ -92822,7 +99673,7 @@ var isPolygonsIntersect2 = function isPolygonsIntersect3(points1, points2) { if (isIn) { return true; } - each_default(points1, function(point2) { + (0, import_util487.each)(points1, function(point2) { if (isPointInPolygon(points2, point2[0], point2[1])) { isIn = true; return false; @@ -92834,7 +99685,7 @@ var isPolygonsIntersect2 = function isPolygonsIntersect3(points1, points2) { var lines1 = parseToLines2(points1); var lines2 = parseToLines2(points2); var isIntersect2 = false; - each_default(lines2, function(line2) { + (0, import_util487.each)(lines2, function(line2) { if (lineIntersectPolygon2(lines1, line2)) { isIntersect2 = true; return false; @@ -92868,14 +99719,14 @@ var Line7 = function() { }; return Line9; }(); -var getBBoxBoundLine = function getBBoxBoundLine2(bbox, direction5) { +var getBBoxBoundLine = function getBBoxBoundLine2(bbox, direction3) { var bounds = { top: [bbox.minX, bbox.minY, bbox.maxX, bbox.minY], left: [bbox.minX, bbox.minY, bbox.minX, bbox.maxY], bottom: [bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY], right: [bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY] }; - return bounds[direction5]; + return bounds[direction3]; }; var fractionAlongLineA = function fractionAlongLineA2(la, lb) { var uaT = (lb.x2 - lb.x1) * (la.y1 - lb.y1) - (lb.y2 - lb.y1) * (la.x1 - lb.x1); @@ -93012,6 +99863,41 @@ var pointRectSquareDist = function pointRectSquareDist2(point2, rect3) { var dy = Math.min(Math.abs(rect3.y - point2.y), Math.abs(rect3.y + rect3.height - point2.y)); return dx * dx + dy * dy; }; +var pointLineDistance = function pointLineDistance2(line2, point2) { + var x1 = line2[0], y1 = line2[1], x22 = line2[2], y22 = line2[3]; + var x6 = point2.x, y5 = point2.y; + var d3 = [x22 - x1, y22 - y1]; + if (vec2_exports.exactEquals(d3, [0, 0])) { + return NaN; + } + var u3 = [-d3[1], d3[0]]; + vec2_exports.normalize(u3, u3); + var a4 = [x6 - x1, y5 - y1]; + return Math.abs(vec2_exports.dot(a4, u3)); +}; +var lerp6 = function lerp7(start, end2, alpha) { + return start + (end2 - start) * alpha; +}; + +// node_modules/@antv/g6-core/es/util/validation.js +var import_util489 = __toModule(require_lib()); + +// node_modules/@antv/g6-core/es/util/graphic.js +var graphic_exports = {}; +__export(graphic_exports, { + cloneBesidesImg: () => cloneBesidesImg, + getBBox: () => getBBox2, + getComboBBox: () => getComboBBox, + getLabelPosition: () => getLabelPosition, + getLetterWidth: () => getLetterWidth, + getLoopCfgs: () => getLoopCfgs, + getTextSize: () => getTextSize, + plainCombosToTrees: () => plainCombosToTrees, + reconstructTree: () => reconstructTree, + shouldRefreshEdge: () => shouldRefreshEdge, + traverseTree: () => traverseTree, + traverseTreeUp: () => traverseTreeUp +}); // node_modules/@antv/g6-core/es/global.js var subjectColor = "rgb(95, 149, 255)"; @@ -93060,7 +99946,7 @@ var colorSet = { comboDisableFill: disabledFill }; var global_default = { - version: "0.2.4", + version: "0.5.3", rootContainerClassName: "root-container", nodeContainerClassName: "node-container", edgeContainerClassName: "edge-container", @@ -93240,579 +100126,10 @@ var global_default = { stroke: "#1890FF", strokeOpacity: 0.9, lineDash: [5, 5] - } + }, + windowFontFamily: typeof window !== "undefined" && window.getComputedStyle && document.body ? window.getComputedStyle(document.body, null).getPropertyValue("font-family") || "Arial, sans-serif" : "Arial, sans-serif" }; -// node_modules/@antv/g6-core/es/graph/controller/mode.js -var ModeController = function() { - function ModeController2(graph) { - this.graph = graph; - this.destroyed = false; - this.modes = graph.get("modes") || { - default: [] - }; - this.formatModes(); - this.mode = graph.get("defaultMode") || "default"; - this.currentBehaves = []; - this.setMode(this.mode); - } - ModeController2.prototype.formatModes = function() { - var modes = this.modes; - each_default(modes, function(mode) { - each_default(mode, function(behavior, i4) { - if (is_string_default(behavior)) { - mode[i4] = { - type: behavior - }; - } - }); - }); - }; - ModeController2.prototype.setBehaviors = function(mode) { - var graph = this.graph; - var behaviors2 = this.modes[mode]; - var behaves = []; - var behave; - each_default(behaviors2 || [], function(behavior) { - var BehaviorInstance = behavior_default.getBehavior(behavior.type || behavior); - if (!BehaviorInstance) { - return; - } - behave = new BehaviorInstance(behavior); - if (behave) { - behave.bind(graph); - behaves.push(behave); - } - }); - this.currentBehaves = behaves; - }; - ModeController2.mergeBehaviors = function(modeBehaviors, behaviors2) { - each_default(behaviors2, function(behavior) { - if (modeBehaviors.indexOf(behavior) < 0) { - if (is_string_default(behavior)) { - behavior = { - type: behavior - }; - } - modeBehaviors.push(behavior); - } - }); - return modeBehaviors; - }; - ModeController2.filterBehaviors = function(modeBehaviors, behaviors2) { - var result = []; - modeBehaviors.forEach(function(behavior) { - var type2 = ""; - if (is_string_default(behavior)) { - type2 = behavior; - } else { - type2 = behavior.type; - } - if (behaviors2.indexOf(type2) < 0) { - result.push(behavior); - } - }); - return result; - }; - ModeController2.prototype.setMode = function(mode) { - var _a6 = this, modes = _a6.modes, graph = _a6.graph; - var current = mode; - var behaviors2 = modes[current]; - if (!behaviors2) { - return; - } - graph.emit("beforemodechange", { - mode - }); - each_default(this.currentBehaves, function(behave) { - if (behave.delegate) - behave.delegate.remove(); - behave.unbind(graph); - }); - this.setBehaviors(current); - graph.emit("aftermodechange", { - mode - }); - this.mode = mode; - }; - ModeController2.prototype.getMode = function() { - return this.mode; - }; - ModeController2.prototype.manipulateBehaviors = function(behaviors2, modes, isAdd) { - var _this = this; - var behaves; - if (!is_array_default(behaviors2)) { - behaves = [behaviors2]; - } else { - behaves = behaviors2; - } - if (is_array_default(modes)) { - each_default(modes, function(mode) { - if (!_this.modes[mode]) { - if (isAdd) { - _this.modes[mode] = behaves; - } - } else if (isAdd) { - _this.modes[mode] = ModeController2.mergeBehaviors(_this.modes[mode] || [], behaves); - } else { - _this.modes[mode] = ModeController2.filterBehaviors(_this.modes[mode] || [], behaves); - } - }); - return this; - } - var currentMode = modes; - if (!modes) { - currentMode = this.mode; - } - if (!this.modes[currentMode]) { - if (isAdd) { - this.modes[currentMode] = behaves; - } - } - if (isAdd) { - this.modes[currentMode] = ModeController2.mergeBehaviors(this.modes[currentMode] || [], behaves); - } else { - this.modes[currentMode] = ModeController2.filterBehaviors(this.modes[currentMode] || [], behaves); - } - this.setMode(this.mode); - return this; - }; - ModeController2.prototype.updateBehavior = function(behavior, newCfg, mode) { - if (is_string_default(behavior)) { - behavior = { - type: behavior - }; - } - var behaviorSet = []; - if (!mode || mode === this.mode || mode === "default") { - behaviorSet = this.currentBehaves; - if (!behaviorSet || !behaviorSet.length) { - console.warn("Update behavior failed! There is no behaviors in this mode on the graph."); - return this; - } - var length_1 = behaviorSet.length; - for (var i4 = 0; i4 < length_1; i4++) { - var behave = behaviorSet[i4]; - if (behave.type === behavior.type) { - behave.updateCfg(newCfg); - return this; - } - if (i4 === length_1 - 1) - console.warn("Update behavior failed! There is no such behavior in the mode"); - } - } else { - behaviorSet = this.modes[mode]; - if (!behaviorSet || !behaviorSet.length) { - console.warn("Update behavior failed! There is no behaviors in this mode on the graph."); - return this; - } - var length_2 = behaviorSet.length; - for (var i4 = 0; i4 < length_2; i4++) { - var behave = behaviorSet[i4]; - if (behave.type === behavior.type || behave === behavior.type) { - if (behave === behavior.type) - behave = { - type: behave - }; - Object.assign(behave, newCfg); - behaviorSet[i4] = behave; - return this; - } - if (i4 === length_2 - 1) - console.warn("Update behavior failed! There is no such behavior in the mode"); - } - } - return this; - }; - ModeController2.prototype.destroy = function() { - this.graph = null; - this.modes = null; - this.currentBehaves = null; - this.destroyed = true; - }; - return ModeController2; -}(); -var mode_default = ModeController; - -// node_modules/@antv/g6-core/es/util/base.js -var base_exports = {}; -__export(base_exports, { - calculationItemsBBox: () => calculationItemsBBox, - cloneEvent: () => cloneEvent, - formatPadding: () => formatPadding2, - isNaN: () => isNaN2, - isViewportChanged: () => isViewportChanged, - processParallelEdges: () => processParallelEdges, - uniqueId: () => uniqueId3 -}); - -// node_modules/@antv/g6-core/es/interface/behavior.js -var G6GraphEvent = function(_super) { - __extends(G6GraphEvent2, _super); - function G6GraphEvent2(type2, event) { - var _this = _super.call(this, type2, event) || this; - _this.item = event.item; - _this.canvasX = event.canvasX; - _this.canvasY = event.canvasY; - _this.wheelDelta = event.wheelDelta; - _this.detail = event.detail; - return _this; - } - return G6GraphEvent2; -}(graph_event_default); - -// node_modules/@antv/g6-core/es/util/base.js -var uniqueId3 = function uniqueId4(type2) { - return type2 + "-" + Math.random() + Date.now(); -}; -var formatPadding2 = function formatPadding3(padding3) { - var top = 0; - var left2 = 0; - var right2 = 0; - var bottom = 0; - if (is_number_default(padding3)) { - top = left2 = right2 = bottom = padding3; - } else if (is_string_default(padding3)) { - var intPadding = parseInt(padding3, 10); - top = left2 = right2 = bottom = intPadding; - } else if (is_array_default(padding3)) { - top = padding3[0]; - right2 = !is_nil_default(padding3[1]) ? padding3[1] : padding3[0]; - bottom = !is_nil_default(padding3[2]) ? padding3[2] : padding3[0]; - left2 = !is_nil_default(padding3[3]) ? padding3[3] : right2; - } - return [top, right2, bottom, left2]; -}; -var cloneEvent = function cloneEvent2(e4) { - var event = new G6GraphEvent(e4.type, e4); - event.clientX = e4.clientX; - event.clientY = e4.clientY; - event.x = e4.x; - event.y = e4.y; - event.target = e4.target; - event.currentTarget = e4.currentTarget; - event.bubbles = true; - event.item = e4.item; - return event; -}; -var isViewportChanged = function isViewportChanged2(matrix) { - if (!matrix) { - return false; - } - var MATRIX_LEN = 9; - var ORIGIN_MATRIX2 = [1, 0, 0, 0, 1, 0, 0, 0, 1]; - for (var i4 = 0; i4 < MATRIX_LEN; i4++) { - if (matrix[i4] !== ORIGIN_MATRIX2[i4]) { - return true; - } - } - return false; -}; -var isNaN2 = function isNaN3(input) { - return Number.isNaN(Number(input)); -}; -var calculationItemsBBox = function calculationItemsBBox2(items) { - var minx = Infinity; - var maxx = -Infinity; - var miny = Infinity; - var maxy = -Infinity; - for (var i4 = 0; i4 < items.length; i4++) { - var element = items[i4]; - var bbox = element.getBBox(); - var minX = bbox.minX, minY = bbox.minY, maxX = bbox.maxX, maxY2 = bbox.maxY; - if (minX < minx) { - minx = minX; - } - if (minY < miny) { - miny = minY; - } - if (maxX > maxx) { - maxx = maxX; - } - if (maxY2 > maxy) { - maxy = maxY2; - } - } - var x6 = Math.floor(minx); - var y5 = Math.floor(miny); - var width2 = Math.ceil(maxx) - Math.floor(minx); - var height = Math.ceil(maxy) - Math.floor(miny); - return { - x: x6, - y: y5, - width: width2, - height, - minX: minx, - minY: miny, - maxX: maxx, - maxY: maxy - }; -}; -var processParallelEdges = function processParallelEdges2(edges, offsetDiff, multiEdgeType, singleEdgeType, loopEdgeType) { - if (offsetDiff === void 0) { - offsetDiff = 15; - } - if (multiEdgeType === void 0) { - multiEdgeType = "quadratic"; - } - if (singleEdgeType === void 0) { - singleEdgeType = void 0; - } - if (loopEdgeType === void 0) { - loopEdgeType = void 0; - } - var len5 = edges.length; - var cod = offsetDiff * 2; - var loopPosition = ["top", "top-right", "right", "bottom-right", "bottom", "bottom-left", "left", "top-left"]; - var edgeMap = {}; - var tags = []; - var reverses = {}; - for (var i4 = 0; i4 < len5; i4++) { - var edge2 = edges[i4]; - var source = edge2.source, target = edge2.target; - var sourceTarget = source + "-" + target; - if (tags[i4]) - continue; - if (!edgeMap[sourceTarget]) { - edgeMap[sourceTarget] = []; - } - tags[i4] = true; - edgeMap[sourceTarget].push(edge2); - for (var j4 = 0; j4 < len5; j4++) { - if (i4 === j4) - continue; - var sedge = edges[j4]; - var src = sedge.source; - var dst = sedge.target; - if (!tags[j4]) { - if (source === dst && target === src) { - edgeMap[sourceTarget].push(sedge); - tags[j4] = true; - reverses[src + "|" + dst + "|" + (edgeMap[sourceTarget].length - 1)] = true; - } else if (source === src && target === dst) { - edgeMap[sourceTarget].push(sedge); - tags[j4] = true; - } - } - } - } - for (var key in edgeMap) { - var arcEdges = edgeMap[key]; - var length_1 = arcEdges.length; - for (var k4 = 0; k4 < length_1; k4++) { - var current = arcEdges[k4]; - if (current.source === current.target) { - if (loopEdgeType) - current.type = loopEdgeType; - current.loopCfg = { - position: loopPosition[k4 % 8], - dist: Math.floor(k4 / 8) * 20 + 50 - }; - continue; - } - if (length_1 === 1 && singleEdgeType && current.source !== current.target) { - current.type = singleEdgeType; - continue; - } - current.type = multiEdgeType; - var sign = (k4 % 2 === 0 ? 1 : -1) * (reverses[current.source + "|" + current.target + "|" + k4] ? -1 : 1); - if (length_1 % 2 === 1) { - current.curveOffset = sign * Math.ceil(k4 / 2) * cod; - } else { - current.curveOffset = sign * (Math.floor(k4 / 2) * cod + offsetDiff); - } - } - } - return edges; -}; - -// node_modules/@antv/g6-core/es/graph/controller/view.js -var ViewController = function() { - function ViewController2(graph) { - this.destroyed = false; - this.graph = graph; - this.destroyed = false; - } - ViewController2.prototype.getViewCenter = function() { - var padding3 = this.getFormatPadding(); - var graph = this.graph; - var width2 = this.graph.get("width"); - var height = graph.get("height"); - return { - x: (width2 - padding3[1] - padding3[3]) / 2 + padding3[3], - y: (height - padding3[0] - padding3[2]) / 2 + padding3[0] - }; - }; - ViewController2.prototype.fitCenter = function() { - var graph = this.graph; - var group2 = graph.get("group"); - group2.resetMatrix(); - var bbox = group2.getCanvasBBox(); - if (bbox.width === 0 || bbox.height === 0) - return; - var viewCenter = this.getViewCenter(); - var groupCenter = { - x: bbox.x + bbox.width / 2, - y: bbox.y + bbox.height / 2 - }; - graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y); - }; - ViewController2.prototype.fitView = function() { - var graph = this.graph; - var padding3 = this.getFormatPadding(); - var width2 = graph.get("width"); - var height = graph.get("height"); - var group2 = graph.get("group"); - group2.resetMatrix(); - var bbox = group2.getCanvasBBox(); - if (bbox.width === 0 || bbox.height === 0) - return; - var viewCenter = this.getViewCenter(); - var groupCenter = { - x: bbox.x + bbox.width / 2, - y: bbox.y + bbox.height / 2 - }; - graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y); - var w4 = (width2 - padding3[1] - padding3[3]) / bbox.width; - var h3 = (height - padding3[0] - padding3[2]) / bbox.height; - var ratio = w4; - if (w4 > h3) { - ratio = h3; - } - graph.zoom(ratio, viewCenter); - }; - ViewController2.prototype.getFormatPadding = function() { - var padding3 = this.graph.get("fitViewPadding"); - return formatPadding2(padding3); - }; - ViewController2.prototype.focusPoint = function(point2, animate, animateCfg) { - var _this = this; - var viewCenter = this.getViewCenter(); - var modelCenter = this.getPointByCanvas(viewCenter.x, viewCenter.y); - var viewportMatrix = this.graph.get("group").getMatrix(); - if (!viewportMatrix) - viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; - if (animate) { - var dx_1 = (modelCenter.x - point2.x) * viewportMatrix[0]; - var dy_1 = (modelCenter.y - point2.y) * viewportMatrix[4]; - var lastX_1 = 0; - var lastY_1 = 0; - var newX_1 = 0; - var newY_1 = 0; - this.graph.get("canvas").animate(function(ratio) { - newX_1 = dx_1 * ratio; - newY_1 = dy_1 * ratio; - _this.graph.translate(newX_1 - lastX_1, newY_1 - lastY_1); - lastX_1 = newX_1; - lastY_1 = newY_1; - }, __assign({}, animateCfg)); - } else { - this.graph.translate((modelCenter.x - point2.x) * viewportMatrix[0], (modelCenter.y - point2.y) * viewportMatrix[4]); - } - }; - ViewController2.prototype.getPointByCanvas = function(canvasX, canvasY) { - var viewportMatrix = this.graph.get("group").getMatrix(); - if (!viewportMatrix) { - viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; - } - var point2 = invertMatrix({ - x: canvasX, - y: canvasY - }, viewportMatrix); - return point2; - }; - ViewController2.prototype.getPointByClient = function(clientX, clientY) { - var canvas = this.graph.get("canvas"); - var canvasPoint = canvas.getPointByClient(clientX, clientY); - return this.getPointByCanvas(canvasPoint.x, canvasPoint.y); - }; - ViewController2.prototype.getClientByPoint = function(x6, y5) { - var canvas = this.graph.get("canvas"); - var canvasPoint = this.getCanvasByPoint(x6, y5); - var point2 = canvas.getClientByPoint(canvasPoint.x, canvasPoint.y); - return { - x: point2.x, - y: point2.y - }; - }; - ViewController2.prototype.getCanvasByPoint = function(x6, y5) { - var viewportMatrix = this.graph.get("group").getMatrix(); - if (!viewportMatrix) { - viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; - } - return applyMatrix({ - x: x6, - y: y5 - }, viewportMatrix); - }; - ViewController2.prototype.focus = function(item, animate, animateCfg) { - if (is_string_default(item)) { - item = this.graph.findById(item); - } - var group2 = item.get("group"); - var matrix = group2.getMatrix(); - if (!matrix) - matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; - if (item) { - this.focusPoint({ - x: matrix[6], - y: matrix[7] - }, animate, animateCfg); - } - }; - ViewController2.prototype.changeSize = function(width2, height) { - var graph = this.graph; - if (!is_number_default(width2) || !is_number_default(height)) { - throw Error("invalid canvas width & height, please make sure width & height type is number"); - } - graph.set({ - width: width2, - height - }); - var canvas = graph.get("canvas"); - canvas.changeSize(width2, height); - var plugins = graph.get("plugins"); - plugins.forEach(function(plugin) { - if (plugin.get("gridContainer")) { - var minZoom = graph.get("minZoom"); - modifyCSS(plugin.get("container"), { - width: width2 + "px", - height: height + "px" - }); - modifyCSS(plugin.get("gridContainer"), { - width: width2 / minZoom + "px", - height: height / minZoom + "px", - left: 0, - top: 0 - }); - } - }); - }; - ViewController2.prototype.destroy = function() { - this.graph = null; - this.destroyed = false; - }; - return ViewController2; -}(); -var view_default2 = ViewController; - -// node_modules/@antv/g6-core/es/util/graphic.js -var graphic_exports = {}; -__export(graphic_exports, { - cloneBesidesImg: () => cloneBesidesImg, - getBBox: () => getBBox2, - getComboBBox: () => getComboBBox, - getLabelPosition: () => getLabelPosition, - getLetterWidth: () => getLetterWidth, - getLoopCfgs: () => getLoopCfgs, - getTextSize: () => getTextSize, - plainCombosToTrees: () => plainCombosToTrees, - reconstructTree: () => reconstructTree, - shouldRefreshEdge: () => shouldRefreshEdge, - traverseTree: () => traverseTree, - traverseTreeUp: () => traverseTreeUp -}); - // node_modules/@antv/g6-core/es/util/letterAspectRatio.js var letterAspectRatio_default = { " ": 0.3329986572265625, @@ -93911,12 +100228,13 @@ var letterAspectRatio_default = { }; // node_modules/@antv/g6-core/es/util/graphic.js +var import_util488 = __toModule(require_lib()); var PI2 = Math.PI; var sin2 = Math.sin; var cos2 = Math.cos; var SELF_LINK_SIN = sin2(PI2 / 8); var SELF_LINK_COS = cos2(PI2 / 8); -var getBBox2 = function getBBox3(element, group2) { +var getBBox2 = function getBBox3(element, group3) { var bbox = element.getBBox(); var leftTop = { x: bbox.minX, @@ -93926,8 +100244,8 @@ var getBBox2 = function getBBox3(element, group2) { x: bbox.maxX, y: bbox.maxY }; - if (group2) { - var matrix = group2.getMatrix(); + if (group3) { + var matrix = group3.getMatrix(); if (!matrix) { matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; } @@ -94091,8 +100409,8 @@ var getLoopCfgs = function getLoopCfgs2(cfg) { var getLabelPosition = function getLabelPosition2(pathShape, percent2, refX, refY, rotate8) { var TAN_OFFSET = 1e-4; var vector = []; - var point2 = pathShape.getPoint(percent2); - if (point2 === null) { + var point2 = pathShape === null || pathShape === void 0 ? void 0 : pathShape.getPoint(percent2); + if (!point2) { return { x: 0, y: 0, @@ -94104,7 +100422,7 @@ var getLabelPosition = function getLabelPosition2(pathShape, percent2, refX, ref } else if (percent2 > 1 - TAN_OFFSET) { vector = pathShape.getEndTangent(); } else { - var offsetPoint = pathShape.getPoint(percent2 + TAN_OFFSET); + var offsetPoint = pathShape === null || pathShape === void 0 ? void 0 : pathShape.getPoint(percent2 + TAN_OFFSET); vector.push([point2.x, point2.y]); vector.push([offsetPoint.x, offsetPoint.y]); } @@ -94130,7 +100448,7 @@ var getLabelPosition = function getLabelPosition2(pathShape, percent2, refX, ref angle: rad }; if (rotate8) { - if (rad > 1 / 2 * PI2 && rad < 3 * 1 / 2 * PI2) { + if (rad > 0.5 * PI2 && rad < 1.5 * PI2) { rad -= PI2; } return __assign({ @@ -94139,41 +100457,41 @@ var getLabelPosition = function getLabelPosition2(pathShape, percent2, refX, ref } return result; }; -var traverse = function traverse2(data3, fn2) { - if (fn2(data3) === false) { +var traverse = function traverse2(data3, fn) { + if (fn(data3) === false) { return false; } if (data3 && data3.children) { for (var i4 = data3.children.length - 1; i4 >= 0; i4--) { - if (!traverse2(data3.children[i4], fn2)) + if (!traverse2(data3.children[i4], fn)) return false; } } return true; }; -var traverseUp = function traverseUp2(data3, fn2) { +var traverseUp = function traverseUp2(data3, fn) { if (data3 && data3.children) { for (var i4 = data3.children.length - 1; i4 >= 0; i4--) { - if (!traverseUp2(data3.children[i4], fn2)) + if (!traverseUp2(data3.children[i4], fn)) return; } } - if (fn2(data3) === false) { + if (fn(data3) === false) { return false; } return true; }; -var traverseTree = function traverseTree2(data3, fn2) { - if (typeof fn2 !== "function") { +var traverseTree = function traverseTree2(data3, fn) { + if (typeof fn !== "function") { return; } - traverse(data3, fn2); + traverse(data3, fn); }; -var traverseTreeUp = function traverseTreeUp2(data3, fn2) { - if (typeof fn2 !== "function") { +var traverseTreeUp = function traverseTreeUp2(data3, fn) { + if (typeof fn !== "function") { return; } - traverseUp(data3, fn2); + traverseUp(data3, fn); }; var getLetterWidth = function getLetterWidth2(letter, fontSize) { return fontSize * (letterAspectRatio_default[letter] || 1); @@ -94198,14 +100516,14 @@ var plainCombosToTrees = function plainCombosToTrees2(array, nodes) { modelMap[d3.id] = d3; }); array.forEach(function(d3, i4) { - var cd = clone_default(d3); + var cd = (0, import_util488.clone)(d3); cd.itemType = "combo"; cd.children = void 0; if (cd.parentId === cd.id) { - console.warn("The parentId for combo " + cd.id + " can not be the same as the combo's id"); + console.warn("The parentId for combo ".concat(cd.id, " can not be the same as the combo's id")); delete cd.parentId; } else if (cd.parentId && !modelMap[cd.parentId]) { - console.warn("The parent combo for combo " + cd.id + " does not exist!"); + console.warn("The parent combo for combo ".concat(cd.id, " does not exist!")); delete cd.parentId; } var mappedObj = addedMap[cd.id]; @@ -94233,7 +100551,7 @@ var plainCombosToTrees = function plainCombosToTrees2(array, nodes) { } return; } - if (is_string_default(d3.parentId)) { + if ((0, import_util488.isString)(d3.parentId)) { var parent_2 = addedMap[d3.parentId]; if (parent_2) { if (parent_2.children) @@ -94396,7 +100714,7 @@ var reconstructTree = function reconstructTree2(trees, subtreeId, newParentId) { } return trees; }; -var getComboBBox = function getComboBBox2(children, graph) { +var getComboBBox = function getComboBBox2(children, graph, combo) { var comboBBox = { minX: Infinity, minY: Infinity, @@ -94410,7 +100728,18 @@ var getComboBBox = function getComboBBox2(children, graph) { centerY: void 0 }; if (!children || children.length === 0) { - return comboBBox; + var comboModel = combo === null || combo === void 0 ? void 0 : combo.getModel(); + var _a6 = comboModel || {}, x6 = _a6.x, y5 = _a6.y; + return { + minX: x6, + minY: y5, + maxX: x6, + maxY: y5, + x: x6, + y: y5, + width: void 0, + height: void 0 + }; } children.forEach(function(child) { var childItem = graph.findById(child.id); @@ -94441,44 +100770,720 @@ var getComboBBox = function getComboBBox2(children, graph) { return comboBBox; }; var shouldRefreshEdge = function shouldRefreshEdge2(cfg) { - var refreshEdge = is_number_default(cfg.x) || is_number_default(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size; + var refreshEdge = (0, import_util488.isNumber)(cfg.x) || (0, import_util488.isNumber)(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size; if (cfg.style) - refreshEdge = refreshEdge || is_number_default(cfg.style.r) || is_number_default(cfg.style.width) || is_number_default(cfg.style.height) || is_number_default(cfg.style.rx) || is_number_default(cfg.style.ry); + refreshEdge = refreshEdge || (0, import_util488.isNumber)(cfg.style.r) || (0, import_util488.isNumber)(cfg.style.width) || (0, import_util488.isNumber)(cfg.style.height) || (0, import_util488.isNumber)(cfg.style.rx) || (0, import_util488.isNumber)(cfg.style.ry); return refreshEdge; }; var cloneBesidesImg = function cloneBesidesImg2(obj) { var clonedObj = {}; Object.keys(obj).forEach(function(key1) { var obj2 = obj[key1]; - if (is_object_default(obj2)) { + if ((0, import_util488.isObject)(obj2) && !(0, import_util488.isArray)(obj2)) { var clonedObj2_1 = {}; Object.keys(obj2).forEach(function(key2) { var v3 = obj2[key2]; - if (key2 === "img" && !is_string_default(v3)) + if (key2 === "img" && !(0, import_util488.isString)(v3)) return; - clonedObj2_1[key2] = clone_default(v3); + clonedObj2_1[key2] = (0, import_util488.clone)(v3); }); clonedObj[key1] = clonedObj2_1; } else { - clonedObj[key1] = clone_default(obj2); + clonedObj[key1] = (0, import_util488.clone)(obj2); } }); return clonedObj; }; +// node_modules/@antv/g6-core/es/util/validation.js +var dataValidation = function dataValidation2(data3) { + var _a6; + if (!data3) { + console.error("G6 Error Tips: the data must be defined"); + return false; + } + var nodes = data3.nodes, edges = data3.edges, _b = data3.combos, combos = _b === void 0 ? [] : _b; + if (!nodes && !edges) { + var validated_1 = true; + traverseTree(data3, function(param) { + if (!(0, import_util489.isString)(param.id)) { + validated_1 = false; + return false; + } + return true; + }); + return validated_1; + } + var nonNode = (nodes || []).find(function(node) { + return !(0, import_util489.isString)(node.id); + }); + if (nonNode) { + console.warn("G6 Warning Tips: missing 'id' property, or %c".concat(nonNode.id, "%c is not a string."), "font-size: 20px; color: red;", ""); + return false; + } + var nodeIds = (nodes || []).map(function(node) { + return node.id; + }); + var comboIds = (_a6 = combos) === null || _a6 === void 0 ? void 0 : _a6.map(function(combo) { + return combo.id; + }); + var ids = __spreadArray(__spreadArray([], nodeIds, true), comboIds, true); + var nonEdges = (edges || []).find(function(edge2) { + return !ids.includes(edge2.source) || !ids.includes(edge2.target); + }); + if (nonEdges) { + console.warn("G6 Warning Tips: The source %c".concat(nonEdges.source, "%c or the target %c").concat(nonEdges.target, "%c of the edge do not exist in the nodes or combos."), "font-size: 20px; color: red;", "", "font-size: 20px; color: red;", ""); + return false; + } + return true; +}; +var singleDataValidation = function singleDataValidation2(type2, data3) { + if (type2 === "node" || type2 === "combo") { + if (data3.id && !(0, import_util489.isString)(data3.id)) { + console.warn("G6 Warning Tips: missing 'id' property, or the 'id' %c".concat(data3.id, "%c is not a string."), "font-size: 20px; color: red;", ""); + return false; + } + } else if (type2 === "edge") { + if (!data3.source || !data3.target) { + console.warn("G6 Warning Tips: missing 'source' or 'target' for the edge."); + return false; + } + } + return true; +}; + +// node_modules/@antv/g6-core/es/graph/controller/mode.js +var import_util490 = __toModule(require_lib()); +var ModeController = function() { + function ModeController2(graph) { + this.graph = graph; + this.destroyed = false; + this.modes = graph.get("modes") || { + default: [] + }; + this.formatModes(); + this.mode = graph.get("defaultMode") || "default"; + this.currentBehaves = []; + this.setMode(this.mode); + } + ModeController2.prototype.formatModes = function() { + var modes = this.modes; + (0, import_util490.each)(modes, function(mode) { + (0, import_util490.each)(mode, function(behavior, i4) { + if ((0, import_util490.isString)(behavior)) { + mode[i4] = { + type: behavior + }; + } + }); + }); + }; + ModeController2.prototype.setBehaviors = function(mode) { + var graph = this.graph; + var behaviors2 = this.modes[mode]; + var behaves = []; + var behave; + (0, import_util490.each)(behaviors2 || [], function(behavior) { + var BehaviorInstance = behavior_default.getBehavior(behavior.type || behavior); + if (!BehaviorInstance) { + return; + } + behave = new BehaviorInstance(behavior); + if (behave) { + behave.bind(graph); + behaves.push(behave); + } + }); + this.currentBehaves = behaves; + }; + ModeController2.mergeBehaviors = function(modeBehaviors, behaviors2) { + (0, import_util490.each)(behaviors2, function(behavior) { + if (modeBehaviors.indexOf(behavior) < 0) { + if ((0, import_util490.isString)(behavior)) { + behavior = { + type: behavior + }; + } + modeBehaviors.push(behavior); + } + }); + return modeBehaviors; + }; + ModeController2.filterBehaviors = function(modeBehaviors, behaviors2) { + var result = []; + modeBehaviors.forEach(function(behavior) { + var type2 = ""; + if ((0, import_util490.isString)(behavior)) { + type2 = behavior; + } else { + type2 = behavior.type; + } + if (behaviors2.indexOf(type2) < 0) { + result.push(behavior); + } + }); + return result; + }; + ModeController2.prototype.setMode = function(mode) { + var _a6 = this, modes = _a6.modes, graph = _a6.graph; + var current = mode; + var behaviors2 = modes[current]; + if (!behaviors2) { + return; + } + graph.emit("beforemodechange", { + mode + }); + (0, import_util490.each)(this.currentBehaves, function(behave) { + if (behave.delegate) + behave.delegate.remove(); + behave.unbind(graph); + }); + this.setBehaviors(current); + graph.emit("aftermodechange", { + mode + }); + this.mode = mode; + }; + ModeController2.prototype.getMode = function() { + return this.mode; + }; + ModeController2.prototype.manipulateBehaviors = function(behaviors2, modes, isAdd) { + var _this = this; + var behaves; + if (!(0, import_util490.isArray)(behaviors2)) { + behaves = [behaviors2]; + } else { + behaves = behaviors2; + } + if ((0, import_util490.isArray)(modes)) { + (0, import_util490.each)(modes, function(mode) { + if (!_this.modes[mode]) { + if (isAdd) { + _this.modes[mode] = behaves; + } + } else if (isAdd) { + _this.modes[mode] = ModeController2.mergeBehaviors(_this.modes[mode] || [], behaves); + } else { + _this.modes[mode] = ModeController2.filterBehaviors(_this.modes[mode] || [], behaves); + } + }); + return this; + } + var currentMode = modes; + if (!modes) { + currentMode = this.mode; + } + if (!this.modes[currentMode]) { + if (isAdd) { + this.modes[currentMode] = behaves; + } + } + if (isAdd) { + this.modes[currentMode] = ModeController2.mergeBehaviors(this.modes[currentMode] || [], behaves); + } else { + this.modes[currentMode] = ModeController2.filterBehaviors(this.modes[currentMode] || [], behaves); + } + this.formatModes(); + this.setMode(this.mode); + return this; + }; + ModeController2.prototype.updateBehavior = function(behavior, newCfg, mode) { + if ((0, import_util490.isString)(behavior)) { + behavior = { + type: behavior + }; + } + var behaviorSet = []; + if (!mode || mode === this.mode || mode === "default") { + behaviorSet = this.currentBehaves; + if (!behaviorSet || !behaviorSet.length) { + console.warn("Update behavior failed! There is no behaviors in this mode on the graph."); + return this; + } + var length_1 = behaviorSet.length; + for (var i4 = 0; i4 < length_1; i4++) { + var behave = behaviorSet[i4]; + if (behave.type === behavior.type) { + behave.updateCfg(newCfg); + return this; + } + if (i4 === length_1 - 1) + console.warn("Update behavior failed! There is no such behavior in the mode"); + } + } else { + behaviorSet = this.modes[mode]; + if (!behaviorSet || !behaviorSet.length) { + console.warn("Update behavior failed! There is no behaviors in this mode on the graph."); + return this; + } + var length_2 = behaviorSet.length; + for (var i4 = 0; i4 < length_2; i4++) { + var behave = behaviorSet[i4]; + if (behave.type === behavior.type || behave === behavior.type) { + if (behave === behavior.type) + behave = { + type: behave + }; + Object.assign(behave, newCfg); + behaviorSet[i4] = behave; + return this; + } + if (i4 === length_2 - 1) + console.warn("Update behavior failed! There is no such behavior in the mode"); + } + } + return this; + }; + ModeController2.prototype.destroy = function() { + this.graph = null; + this.modes = null; + this.currentBehaves = null; + this.destroyed = true; + }; + return ModeController2; +}(); +var mode_default = ModeController; + +// node_modules/@antv/g6-core/es/graph/controller/view.js +var import_util492 = __toModule(require_lib()); + +// node_modules/@antv/g6-core/es/util/base.js +var base_exports = {}; +__export(base_exports, { + calculationItemsBBox: () => calculationItemsBBox, + cloneEvent: () => cloneEvent, + formatPadding: () => formatPadding2, + isNaN: () => isNaN2, + isViewportChanged: () => isViewportChanged, + processParallelEdges: () => processParallelEdges, + uniqueId: () => uniqueId11 +}); +var import_util491 = __toModule(require_lib()); + +// node_modules/@antv/g6-core/es/interface/behavior.js +var G6GraphEvent = function(_super) { + __extends(G6GraphEvent2, _super); + function G6GraphEvent2(type2, event) { + var _this = _super.call(this, type2, event) || this; + _this.item = event.item; + _this.canvasX = event.canvasX; + _this.canvasY = event.canvasY; + _this.wheelDelta = event.wheelDelta; + _this.detail = event.detail; + return _this; + } + return G6GraphEvent2; +}(graph_event_default); + +// node_modules/@antv/g6-core/es/util/base.js +var uniqueId11 = function uniqueId12(type2) { + return "".concat(type2, "-").concat(Math.random()).concat(Date.now()); +}; +var formatPadding2 = function formatPadding3(padding3) { + if ((0, import_util491.isArray)(padding3)) { + switch (padding3.length) { + case 4: + return padding3; + case 3: + padding3.push(padding3[1]); + return padding3; + case 2: + return padding3.concat(padding3); + case 1: + return [padding3[0], padding3[0], padding3[0], padding3[0]]; + default: + return [0, 0, 0, 0]; + } + } + if ((0, import_util491.isNumber)(padding3)) { + return [padding3, padding3, padding3, padding3]; + } else if ((0, import_util491.isString)(padding3)) { + var intPadding = parseInt(padding3, 10); + return [intPadding, intPadding, intPadding, intPadding]; + } + return [0, 0, 0, 0]; +}; +var cloneEvent = function cloneEvent2(e4) { + var event = new G6GraphEvent(e4.type, e4); + event.clientX = e4.clientX; + event.clientY = e4.clientY; + event.x = e4.x; + event.y = e4.y; + event.target = e4.target; + event.currentTarget = e4.currentTarget; + event.bubbles = true; + event.item = e4.item; + return event; +}; +var isViewportChanged = function isViewportChanged2(matrix) { + if (!matrix) { + return false; + } + var MATRIX_LEN = 9; + var ORIGIN_MATRIX2 = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + for (var i4 = 0; i4 < MATRIX_LEN; i4++) { + if (matrix[i4] !== ORIGIN_MATRIX2[i4]) { + return true; + } + } + return false; +}; +var isNaN2 = function isNaN3(input) { + return Number.isNaN(Number(input)); +}; +var calculationItemsBBox = function calculationItemsBBox2(items) { + var minx = Infinity; + var maxx = -Infinity; + var miny = Infinity; + var maxy = -Infinity; + for (var i4 = 0; i4 < items.length; i4++) { + var element = items[i4]; + var bbox = element.getBBox(); + var minX = bbox.minX, minY = bbox.minY, maxX = bbox.maxX, maxY2 = bbox.maxY; + if (minX < minx) { + minx = minX; + } + if (minY < miny) { + miny = minY; + } + if (maxX > maxx) { + maxx = maxX; + } + if (maxY2 > maxy) { + maxy = maxY2; + } + } + var x6 = Math.floor(minx); + var y5 = Math.floor(miny); + var width2 = Math.ceil(maxx) - Math.floor(minx); + var height = Math.ceil(maxy) - Math.floor(miny); + return { + x: x6, + y: y5, + width: width2, + height, + minX: minx, + minY: miny, + maxX: maxx, + maxY: maxy + }; +}; +var processParallelEdges = function processParallelEdges2(edges, offsetDiff, multiEdgeType, singleEdgeType, loopEdgeType) { + if (offsetDiff === void 0) { + offsetDiff = 15; + } + if (multiEdgeType === void 0) { + multiEdgeType = "quadratic"; + } + if (singleEdgeType === void 0) { + singleEdgeType = void 0; + } + if (loopEdgeType === void 0) { + loopEdgeType = void 0; + } + var len5 = edges.length; + var cod = offsetDiff * 2; + var loopPosition = ["top", "top-right", "right", "bottom-right", "bottom", "bottom-left", "left", "top-left"]; + var edgeMap = {}; + var tags = []; + var reverses = {}; + for (var i4 = 0; i4 < len5; i4++) { + var edge2 = edges[i4]; + var source = edge2.source, target = edge2.target; + var sourceTarget = "".concat(source, "-").concat(target); + if (tags[i4]) + continue; + if (!edgeMap[sourceTarget]) { + edgeMap[sourceTarget] = []; + } + tags[i4] = true; + edgeMap[sourceTarget].push(edge2); + for (var j4 = 0; j4 < len5; j4++) { + if (i4 === j4) + continue; + var sedge = edges[j4]; + var src = sedge.source; + var dst = sedge.target; + if (!tags[j4]) { + if (source === dst && target === src) { + edgeMap[sourceTarget].push(sedge); + tags[j4] = true; + reverses["".concat(src, "|").concat(dst, "|").concat(edgeMap[sourceTarget].length - 1)] = true; + } else if (source === src && target === dst) { + edgeMap[sourceTarget].push(sedge); + tags[j4] = true; + } + } + } + } + for (var key in edgeMap) { + var arcEdges = edgeMap[key]; + var length_1 = arcEdges.length; + for (var k4 = 0; k4 < length_1; k4++) { + var current = arcEdges[k4]; + if (current.source === current.target) { + if (loopEdgeType) + current.type = loopEdgeType; + current.loopCfg = { + position: loopPosition[k4 % 8], + dist: Math.floor(k4 / 8) * 20 + 50 + }; + continue; + } + if (length_1 === 1 && singleEdgeType && current.source !== current.target) { + current.type = singleEdgeType; + continue; + } + current.type = multiEdgeType; + var sign = (k4 % 2 === 0 ? 1 : -1) * (reverses["".concat(current.source, "|").concat(current.target, "|").concat(k4)] ? -1 : 1); + if (length_1 % 2 === 1) { + current.curveOffset = sign * Math.ceil(k4 / 2) * cod; + } else { + current.curveOffset = sign * (Math.floor(k4 / 2) * cod + offsetDiff); + } + } + } + return edges; +}; + +// node_modules/@antv/g6-core/es/graph/controller/view.js +var ViewController = function() { + function ViewController2(graph) { + this.destroyed = false; + this.graph = graph; + this.destroyed = false; + } + ViewController2.prototype.getViewCenter = function() { + var padding3 = this.getFormatPadding(); + var graph = this.graph; + var width2 = this.graph.get("width"); + var height = graph.get("height"); + return { + x: (width2 - padding3[1] - padding3[3]) / 2 + padding3[3], + y: (height - padding3[0] - padding3[2]) / 2 + padding3[0] + }; + }; + ViewController2.prototype.fitCenter = function() { + var graph = this.graph; + var group3 = graph.get("group"); + group3.resetMatrix(); + var bbox = group3.getCanvasBBox(); + if (bbox.width === 0 || bbox.height === 0) + return; + var viewCenter = this.getViewCenter(); + var groupCenter = { + x: bbox.x + bbox.width / 2, + y: bbox.y + bbox.height / 2 + }; + graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y); + }; + ViewController2.prototype.fitView = function() { + var graph = this.graph; + var padding3 = this.getFormatPadding(); + var width2 = graph.get("width"); + var height = graph.get("height"); + var group3 = graph.get("group"); + group3.resetMatrix(); + var bbox = group3.getCanvasBBox(); + if (bbox.width === 0 || bbox.height === 0) + return; + var viewCenter = this.getViewCenter(); + var groupCenter = { + x: bbox.x + bbox.width / 2, + y: bbox.y + bbox.height / 2 + }; + graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y); + var w4 = (width2 - padding3[1] - padding3[3]) / bbox.width; + var h3 = (height - padding3[0] - padding3[2]) / bbox.height; + var ratio = w4; + if (w4 > h3) { + ratio = h3; + } + if (!graph.zoom(ratio, viewCenter)) { + console.warn("zoom failed, ratio out of range, ratio: %f", ratio); + } + }; + ViewController2.prototype.fitViewByRules = function(rules) { + var _a6 = rules.onlyOutOfViewPort, onlyOutOfViewPort = _a6 === void 0 ? false : _a6, _b = rules.direction, direction3 = _b === void 0 ? "both" : _b, _c = rules.ratioRule, ratioRule = _c === void 0 ? "min" : _c; + var graph = this.graph; + var padding3 = this.getFormatPadding(); + var width2 = graph.get("width"); + var height = graph.get("height"); + var group3 = graph.get("group"); + group3.resetMatrix(); + var bbox = group3.getCanvasBBox(); + if (bbox.width === 0 || bbox.height === 0) + return; + var viewCenter = this.getViewCenter(); + var groupCenter = { + x: bbox.x + bbox.width / 2, + y: bbox.y + bbox.height / 2 + }; + graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y); + var wRatio = (width2 - padding3[1] - padding3[3]) / bbox.width; + var hRatio = (height - padding3[0] - padding3[2]) / bbox.height; + var ratio; + if (direction3 === "x") { + ratio = wRatio; + } else if (direction3 === "y") { + ratio = hRatio; + } else { + ratio = ratioRule === "max" ? Math.max(wRatio, hRatio) : Math.min(wRatio, hRatio); + } + if (onlyOutOfViewPort) { + ratio = ratio < 1 ? ratio : 1; + } + var initZoomRatio = graph.getZoom(); + var endZoom = initZoomRatio * ratio; + var minZoom = graph.get("minZoom"); + if (endZoom < minZoom) { + endZoom = minZoom; + console.warn("fitview failed, ratio out of range, ratio: %f", ratio, "graph minzoom has been used instead"); + } + graph.zoomTo(endZoom, viewCenter); + }; + ViewController2.prototype.getFormatPadding = function() { + var padding3 = this.graph.get("fitViewPadding"); + return formatPadding2(padding3); + }; + ViewController2.prototype.focusPoint = function(point2, animate, animateCfg) { + var _this = this; + var viewCenter = this.getViewCenter(); + var modelCenter = this.getPointByCanvas(viewCenter.x, viewCenter.y); + var viewportMatrix = this.graph.get("group").getMatrix(); + if (!viewportMatrix) + viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + if (animate) { + var dx_1 = (modelCenter.x - point2.x) * viewportMatrix[0]; + var dy_1 = (modelCenter.y - point2.y) * viewportMatrix[4]; + var lastX_1 = 0; + var lastY_1 = 0; + var newX_1 = 0; + var newY_1 = 0; + this.graph.get("canvas").animate(function(ratio) { + newX_1 = dx_1 * ratio; + newY_1 = dy_1 * ratio; + _this.graph.translate(newX_1 - lastX_1, newY_1 - lastY_1); + lastX_1 = newX_1; + lastY_1 = newY_1; + }, __assign({}, animateCfg)); + } else { + this.graph.translate((modelCenter.x - point2.x) * viewportMatrix[0], (modelCenter.y - point2.y) * viewportMatrix[4]); + } + }; + ViewController2.prototype.getPointByCanvas = function(canvasX, canvasY) { + var viewportMatrix = this.graph.get("group").getMatrix(); + if (!viewportMatrix) { + viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + } + var point2 = invertMatrix({ + x: canvasX, + y: canvasY + }, viewportMatrix); + return point2; + }; + ViewController2.prototype.getPointByClient = function(clientX, clientY) { + var canvas = this.graph.get("canvas"); + var canvasPoint = canvas.getPointByClient(clientX, clientY); + return this.getPointByCanvas(canvasPoint.x, canvasPoint.y); + }; + ViewController2.prototype.getClientByPoint = function(x6, y5) { + var canvas = this.graph.get("canvas"); + var canvasPoint = this.getCanvasByPoint(x6, y5); + var point2 = canvas.getClientByPoint(canvasPoint.x, canvasPoint.y); + return { + x: point2.x, + y: point2.y + }; + }; + ViewController2.prototype.getCanvasByPoint = function(x6, y5) { + var viewportMatrix = this.graph.get("group").getMatrix(); + if (!viewportMatrix) { + viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + } + return applyMatrix({ + x: x6, + y: y5 + }, viewportMatrix); + }; + ViewController2.prototype.focus = function(item, animate, animateCfg) { + if ((0, import_util492.isString)(item)) { + item = this.graph.findById(item); + } + if (item) { + var x6 = 0, y5 = 0; + if (item.getType && item.getType() === "edge") { + var sourceMatrix = item.getSource().get("group").getMatrix(); + var targetMatrix = item.getTarget().get("group").getMatrix(); + if (sourceMatrix && targetMatrix) { + x6 = (sourceMatrix[6] + targetMatrix[6]) / 2; + y5 = (sourceMatrix[7] + targetMatrix[7]) / 2; + } else if (sourceMatrix || targetMatrix) { + x6 = sourceMatrix ? sourceMatrix[6] : targetMatrix[6]; + y5 = sourceMatrix ? sourceMatrix[7] : targetMatrix[7]; + } + } else { + var group3 = item.get("group"); + var matrix = group3.getMatrix(); + if (!matrix) + matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + x6 = matrix[6]; + y5 = matrix[7]; + } + this.focusPoint({ + x: x6, + y: y5 + }, animate, animateCfg); + } + }; + ViewController2.prototype.changeSize = function(width2, height) { + var graph = this.graph; + if (!(0, import_util492.isNumber)(width2) || !(0, import_util492.isNumber)(height)) { + throw Error("invalid canvas width & height, please make sure width & height type is number"); + } + graph.set({ + width: width2, + height + }); + var canvas = graph.get("canvas"); + canvas.changeSize(width2, height); + var plugins = graph.get("plugins"); + plugins.forEach(function(plugin) { + if (plugin.get("gridContainer")) { + plugin.positionInit(); + } + }); + }; + ViewController2.prototype.destroy = function() { + this.graph = null; + this.destroyed = false; + }; + return ViewController2; +}(); +var view_default2 = ViewController; + +// node_modules/@antv/g6-core/es/graph/controller/item.js +var import_util499 = __toModule(require_lib()); + +// node_modules/@antv/g6-core/es/item/edge.js +var import_util496 = __toModule(require_lib()); + +// node_modules/@antv/g6-core/es/item/item.js +var import_util495 = __toModule(require_lib()); + +// node_modules/@antv/g6-core/es/element/shape.js +var import_util494 = __toModule(require_lib()); + // node_modules/@antv/g6-core/es/element/xml.js +var import_util493 = __toModule(require_lib()); function _typeof(obj) { "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof5(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof5(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); + return _typeof = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(obj2) { + return typeof obj2; + } : function(obj2) { + return obj2 && typeof Symbol == "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }, _typeof(obj); } function looseJSONParse(text) { if (typeof text !== "string") { @@ -94622,9 +101627,9 @@ var xmlDataRenderer = function xmlDataRenderer2(xml) { i4 += 2; } else if (xml[i4] === "}" && xml[i4 + 1] === "}") { if (arr.length) { - var last2 = arr.pop(); - tmp = get_default(data3, tmp, last2.endsWith("=") ? '"{' + tmp + '}"' : tmp); - arr.push(last2 + tmp); + var last17 = arr.pop(); + tmp = (0, import_util493.get)(data3, tmp, last17.endsWith("=") ? '"{'.concat(tmp, '}"') : tmp); + arr.push(last17 + tmp); } i4 += 2; tmp = ""; @@ -94635,13 +101640,13 @@ var xmlDataRenderer = function xmlDataRenderer2(xml) { } arr.push(tmp); return arr.map(function(e4, index2) { - return arr[index2 - 1] && arr[index2 - 1].endsWith("=") ? '"{' + e4 + '}"' : e4; + return arr[index2 - 1] && arr[index2 - 1].endsWith("=") ? '"{'.concat(e4, '}"') : e4; }).join(""); }; }; function parseXML(xml, cfg) { var attrs = {}; - var keys2 = xml.getAttributeNames && xml.getAttributeNames() || []; + var keys6 = xml.getAttributeNames && xml.getAttributeNames() || []; var children = xml.children && Array.from(xml.children).map(function(e4) { return parseXML(e4, cfg); }); @@ -94654,7 +101659,7 @@ function parseXML(xml, cfg) { if (tagName === "img") { rst.type = "image"; } - Array.from(keys2).forEach(function(k4) { + Array.from(keys6).forEach(function(k4) { var key = keyConvert(k4); var val = xml.getAttribute(k4); try { @@ -94757,7 +101762,7 @@ function generateTarget(target, lastOffset) { offset.y += marginTop; } for (var index2 = 0; index2 < target.children.length; index2++) { - target.children[index2].attrs.key = (attrs.key || "root") + " -" + index2 + " "; + target.children[index2].attrs.key = "".concat(attrs.key || "root", " -").concat(index2, " "); var node = generateTarget(target.children[index2], offset); if (node.bbox) { var bbox = node.bbox; @@ -94860,13 +101865,13 @@ function createNodeFromXML(gen) { return result; }; return { - draw: function draw4(cfg, group2) { + draw: function draw4(cfg, group3) { var resultTarget = compileXML(cfg); - var keyshape = group2; + var keyshape = group3; var renderTarget = function renderTarget2(target) { var _a6 = target.attrs, attrs = _a6 === void 0 ? {} : _a6, bbox = target.bbox, type2 = target.type, children = target.children, rest = __rest(target, ["attrs", "bbox", "type", "children"]); if (target.type !== "group") { - var shape = group2.addShape(target.type, __assign({ + var shape = group3.addShape(target.type, __assign({ attrs, origin: { bbox, @@ -94970,7 +101975,7 @@ function createNodeFromXML(gen) { var cache2 = {}; function ucfirst(str8) { if (!cache2[str8]) { - cache2[str8] = upper_first_default(str8); + cache2[str8] = (0, import_util494.upperFirst)(str8); } return cache2[str8]; } @@ -94982,18 +101987,21 @@ var ShapeFactoryBase2 = { var shape = self2[type2] || self2[self2.defaultShapeType] || self2["simple-circle"]; return shape; }, - draw: function draw(type2, cfg, group2) { + draw: function draw(type2, cfg, group3) { var shape = this.getShape(type2); - var rst = shape.draw(cfg, group2); + group3["shapeMap"] = {}; + var rst = shape.draw(cfg, group3); if (shape.afterDraw) { - shape.afterDraw(cfg, group2, rst); + shape.afterDraw(cfg, group3, rst); } return rst; }, - baseUpdate: function baseUpdate(type2, cfg, item) { + baseUpdate: function baseUpdate(type2, cfg, item, updateType) { + var _a6, _b; var shape = this.getShape(type2); if (shape.update) { - shape.update(cfg, item); + shape.mergeStyle = (_a6 = shape.getOptions) === null || _a6 === void 0 ? void 0 : _a6.call(shape, cfg, updateType); + (_b = shape.update) === null || _b === void 0 ? void 0 : _b.call(shape, cfg, item, updateType); } if (shape.afterUpdate) { shape.afterUpdate(cfg, item); @@ -95018,8 +102026,8 @@ var ShapeFactoryBase2 = { }; var ShapeFramework = { options: {}, - draw: function draw2(cfg, group2) { - return this.drawShape(cfg, group2); + draw: function draw2(cfg, group3) { + return this.drawShape(cfg, group3); }, drawShape: function drawShape() { }, @@ -95128,14 +102136,14 @@ var ItemBase = function() { var id = model.id; var itemType = this.get("type"); if (!id) { - id = uniqueId3(itemType); + id = uniqueId11(itemType); this.get("model").id = id; } this.set("id", id); - var group2 = cfg.group; - if (group2) { - group2.set("item", this); - group2.set("id", id); + var group3 = cfg.group; + if (group3) { + group3.set("item", this); + group3.set("id", id); } this.init(); this.draw(); @@ -95145,15 +102153,15 @@ var ItemBase = function() { var options = shapeFactory[shapeType].options; if (options && options.stateStyles) { var styles = this.get("styles") || model.stateStyles; - styles = deep_mix_default({}, options.stateStyles, styles); + styles = (0, import_util495.deepMix)({}, options.stateStyles, styles); this.set("styles", styles); } } } ItemBase2.prototype.calculateBBox = function() { var keyShape = this.get("keyShape"); - var group2 = this.get("group"); - var bbox = getBBox2(keyShape, group2); + var group3 = this.get("group"); + var bbox = getBBox2(keyShape, group3); bbox.x = bbox.minX; bbox.y = bbox.minY; bbox.width = bbox.maxX - bbox.minX; @@ -95164,8 +102172,8 @@ var ItemBase = function() { }; ItemBase2.prototype.calculateCanvasBBox = function() { var keyShape = this.get("keyShape"); - var group2 = this.get("group"); - var bbox = getBBox2(keyShape, group2); + var group3 = this.get("group"); + var bbox = getBBox2(keyShape, group3); bbox.x = bbox.minX; bbox.y = bbox.minY; bbox.width = bbox.maxX - bbox.minX; @@ -95177,9 +102185,9 @@ var ItemBase = function() { ItemBase2.prototype.drawInner = function() { var self2 = this; var shapeFactory = self2.get("shapeFactory"); - var group2 = self2.get("group"); + var group3 = self2.get("group"); var model = self2.get("model"); - group2.clear(); + group3.clear(); var visible = model.visible; if (visible !== void 0 && !visible) self2.changeVisibility(visible); @@ -95189,7 +102197,7 @@ var ItemBase = function() { self2.updatePosition(model); var cfg = self2.getShapeCfg(model); var shapeType = cfg.type; - var keyShape = shapeFactory.draw(shapeType, cfg, group2); + var keyShape = shapeFactory.draw(shapeType, cfg, group3); if (keyShape) { self2.set("keyShape", keyShape); keyShape.set("isKeyShape", true); @@ -95199,62 +102207,75 @@ var ItemBase = function() { this.set("currentShape", shapeType); this.restoreStates(shapeFactory, shapeType); }; - ItemBase2.prototype.setOriginStyle = function(cfg) { - var group2 = this.get("group"); - var children = group2.get("children"); + ItemBase2.prototype.setOriginStyle = function() { + var group3 = this.get("group"); + var children = group3.get("children"); var keyShape = this.getKeyShape(); var self2 = this; var keyShapeName = keyShape.get("name"); if (!this.get("originStyle")) { - var originStyles_1 = {}; - each_default(children, function(child) { + var originStyles = {}; + for (var i4 = 0; i4 < children.length; i4++) { + var child = children[i4]; var shapeType = child.get("type"); - var name = child.get("name"); - if (name && name !== keyShapeName) { - originStyles_1[name] = shapeType !== "image" ? clone_default(child.attr()) : self2.getShapeStyleByName(name); + var name_1 = child.get("name"); + if (name_1 && name_1 !== keyShapeName) { + originStyles[name_1] = shapeType !== "image" ? (0, import_util495.clone)(child.attr()) : self2.getShapeStyleByName(name_1); + if (shapeType === "text" && originStyles[name_1]) { + delete originStyles[name_1].x; + delete originStyles[name_1].y; + delete originStyles[name_1].matrix; + } } else { var keyShapeStyle = self2.getShapeStyleByName(); - if (keyShapeStyle.path) - delete keyShapeStyle.path; - if (keyShapeStyle.matrix) - delete keyShapeStyle.matrix; + delete keyShapeStyle.path; + delete keyShapeStyle.matrix; if (!keyShapeName) { - Object.assign(originStyles_1, keyShapeStyle); + Object.assign(originStyles, keyShapeStyle); } else { - if (!name) { - var shapeName = uniqueId3("shape"); + if (!name_1) { + var shapeName = uniqueId11("shape"); child.set("name", shapeName); - originStyles_1[shapeName] = shapeType !== "image" ? clone_default(child.attr()) : self2.getShapeStyleByName(name); - } else - originStyles_1[keyShapeName] = keyShapeStyle; + group3["shapeMap"][shapeName] = child; + originStyles[shapeName] = shapeType !== "image" ? (0, import_util495.clone)(child.attr()) : self2.getShapeStyleByName(name_1); + } else { + originStyles[keyShapeName] = keyShapeStyle; + } } } - }); - self2.set("originStyle", originStyles_1); + } + self2.set("originStyle", originStyles); } else { - var styles_1 = this.getOriginStyle(); + var styles_1 = this.get("originStyle"); if (keyShapeName && !styles_1[keyShapeName]) styles_1[keyShapeName] = {}; var currentStatesStyle_1 = this.getCurrentStatesStyle(); - each_default(children, function(child) { - var name = child.get("name"); - var shapeAttrs = child.attr(); - if (name && name !== keyShapeName) { - var shapeStateStyle_1 = currentStatesStyle_1[name]; - if (!styles_1[name]) - styles_1[name] = {}; + var _loop_1 = function _loop_12(i5) { + var child2 = children[i5]; + var name_2 = child2.get("name"); + var shapeAttrs = child2.attr(); + if (name_2 && name_2 !== keyShapeName) { + var shapeStateStyle_1 = currentStatesStyle_1[name_2]; + if (!styles_1[name_2]) + styles_1[name_2] = {}; if (shapeStateStyle_1) { Object.keys(shapeAttrs).forEach(function(key) { var value2 = shapeAttrs[key]; if (value2 !== shapeStateStyle_1[key]) - styles_1[name][key] = value2; + styles_1[name_2][key] = value2; }); } else { - styles_1[name] = child.get("type") !== "image" ? clone_default(shapeAttrs) : self2.getShapeStyleByName(name); + styles_1[name_2] = child2.get("type") !== "image" ? (0, import_util495.clone)(shapeAttrs) : self2.getShapeStyleByName(name_2); } } else { - var shapeAttrs_1 = child.attr(); - var keyShapeStateStyles_1 = __assign(__assign({}, currentStatesStyle_1), currentStatesStyle_1[keyShapeName]); + var shapeAttrs_1 = child2.attr(); + var keyShapeStateStyles_1 = {}; + Object.keys(currentStatesStyle_1).forEach(function(styleKey) { + var subStyle = currentStatesStyle_1[styleKey]; + if (styleKey === keyShapeName || !(0, import_util495.isPlainObject)(subStyle)) { + keyShapeStateStyles_1[styleKey] = subStyle; + } + }); Object.keys(shapeAttrs_1).forEach(function(key) { var value2 = shapeAttrs_1[key]; if (keyShapeStateStyles_1[key] !== value2) { @@ -95265,26 +102286,27 @@ var ItemBase = function() { } }); } - }); - if (styles_1.path) - delete styles_1.path; - if (styles_1.matrix) - delete styles_1.matrix; - if (styles_1.x) - delete styles_1.x; - if (styles_1.y) - delete styles_1.y; - if (styles_1[keyShapeName] && styles_1[keyShapeName].x) + }; + for (var i4 = 0; i4 < children.length; i4++) { + _loop_1(i4); + } + delete styles_1.path; + delete styles_1.matrix; + delete styles_1.x; + delete styles_1.y; + if (styles_1[keyShapeName]) { delete styles_1[keyShapeName].x; - if (styles_1[keyShapeName] && styles_1[keyShapeName].y) delete styles_1[keyShapeName].y; + delete styles_1[keyShapeName].matrix; + delete styles_1[keyShapeName].path; + } self2.set("originStyle", styles_1); } }; ItemBase2.prototype.restoreStates = function(shapeFactory, shapeType) { var self2 = this; var states = self2.get("states"); - each_default(states, function(state2) { + (0, import_util495.each)(states, function(state2) { shapeFactory.setState(shapeType, state2, true, self2); }); }; @@ -95296,7 +102318,7 @@ var ItemBase = function() { return this._cfg[key]; }; ItemBase2.prototype.set = function(key, val) { - if (is_plain_object_default(key)) { + if ((0, import_util495.isPlainObject)(key)) { this._cfg = __assign(__assign({}, this._cfg), key); } else { this._cfg[key] = val; @@ -95321,19 +102343,17 @@ var ItemBase = function() { this.afterDraw(); }; ItemBase2.prototype.getShapeStyleByName = function(name) { - var group2 = this.get("group"); + var group3 = this.get("group"); var currentShape; if (name) { - currentShape = group2.find(function(element) { - return element.get("name") === name; - }); + currentShape = group3["shapeMap"][name]; } else { currentShape = this.getKeyShape(); } if (currentShape) { var styles_2 = {}; - each_default(currentShape.attr(), function(val, key) { - if (key !== "img") { + (0, import_util495.each)(currentShape.attr(), function(val, key) { + if (key !== "img" || (0, import_util495.isString)(val)) { styles_2[key] = val; } }); @@ -95341,7 +102361,7 @@ var ItemBase = function() { } return {}; }; - ItemBase2.prototype.getShapeCfg = function(model) { + ItemBase2.prototype.getShapeCfg = function(model, updateType) { var styles = this.get("styles"); if (styles) { var newModel = model; @@ -95363,9 +102383,9 @@ var ItemBase = function() { var styles = {}; var states = self2.getStates(); if (!states || !states.length) { - return this.getOriginStyle(); + return this.get("originStyle"); } - each_default(self2.getStates(), function(state2) { + (0, import_util495.each)(self2.getStates(), function(state2) { styles = Object.assign(styles, self2.getStateStyle(state2)); }); return styles; @@ -95375,12 +102395,12 @@ var ItemBase = function() { var shapeFactory = this.get("shapeFactory"); var stateName = state2; var filterStateName = state2; - if (is_string_default(value2)) { - stateName = state2 + ":" + value2; - filterStateName = state2 + ":"; + if ((0, import_util495.isString)(value2)) { + stateName = "".concat(state2, ":").concat(value2); + filterStateName = "".concat(state2, ":"); } var newStates = states; - if (is_boolean_default(value2)) { + if ((0, import_util495.isBoolean)(value2)) { var index2 = states.indexOf(filterStateName); if (value2) { if (index2 > -1) { @@ -95390,7 +102410,7 @@ var ItemBase = function() { } else if (index2 > -1) { states.splice(index2, 1); } - } else if (is_string_default(value2)) { + } else if ((0, import_util495.isString)(value2)) { var filterStates = states.filter(function(name) { return name.includes(filterStateName); }); @@ -95418,7 +102438,7 @@ var ItemBase = function() { if (!states) { states = originStates; } - if (is_string_default(states)) { + if ((0, import_util495.isString)(states)) { states = [states]; } var newStates = originStates.filter(function(state2) { @@ -95454,77 +102474,78 @@ var ItemBase = function() { var states = this.getStates(); return states.indexOf(state2) >= 0; }; - ItemBase2.prototype.refresh = function() { + ItemBase2.prototype.refresh = function(updateType) { var model = this.get("model"); this.updatePosition(model); - this.updateShape(); + this.updateShape(updateType); this.afterUpdate(); this.clearCache(); }; - ItemBase2.prototype.isOnlyMove = function(cfg) { - return false; + ItemBase2.prototype.getUpdateType = function(cfg) { + return void 0; }; - ItemBase2.prototype.update = function(cfg, onlyMove) { - if (onlyMove === void 0) { - onlyMove = false; + ItemBase2.prototype.update = function(cfg, updateType) { + if (updateType === void 0) { + updateType = void 0; } var model = this.get("model"); - var oriVisible = model.visible; - var cfgVisible = cfg.visible; - if (oriVisible !== cfgVisible && cfgVisible !== void 0) - this.changeVisibility(cfgVisible); - var originPosition = { - x: model.x, - y: model.y - }; - cfg.x = isNaN(cfg.x) ? model.x : cfg.x; - cfg.y = isNaN(cfg.y) ? model.y : cfg.y; - var styles = this.get("styles"); - if (cfg.stateStyles) { - var stateStyles = cfg.stateStyles; - mix(styles, stateStyles); - delete cfg.stateStyles; - } - Object.assign(model, cfg); - if (onlyMove) { + if (updateType === "move") { this.updatePosition(cfg); } else { + var oriVisible = model.visible; + var cfgVisible = cfg.visible; + if (oriVisible !== cfgVisible && cfgVisible !== void 0) + this.changeVisibility(cfgVisible); + var originPosition = { + x: model.x, + y: model.y + }; + cfg.x = isNaN(+cfg.x) ? model.x : +cfg.x; + cfg.y = isNaN(+cfg.y) ? model.y : +cfg.y; + var styles = this.get("styles"); + if (cfg.stateStyles) { + var stateStyles = cfg.stateStyles; + (0, import_util495.mix)(styles, stateStyles); + delete cfg.stateStyles; + } + Object.assign(model, cfg); if (originPosition.x !== cfg.x || originPosition.y !== cfg.y) { this.updatePosition(cfg); } - this.updateShape(); + this.updateShape(updateType); } this.afterUpdate(); this.clearCache(); }; - ItemBase2.prototype.updateShape = function() { + ItemBase2.prototype.updateShape = function(updateType) { var shapeFactory = this.get("shapeFactory"); var model = this.get("model"); var shape = model.type; if (shapeFactory.shouldUpdate(shape) && shape === this.get("currentShape")) { - var updateCfg2 = this.getShapeCfg(model); - shapeFactory.baseUpdate(shape, updateCfg2, this); + var updateCfg2 = this.getShapeCfg(model, updateType); + shapeFactory.baseUpdate(shape, updateCfg2, this, updateType); + if (updateType !== "move") + this.setOriginStyle(); } else { this.draw(); } - this.setOriginStyle(model); this.restoreStates(shapeFactory, shape); }; ItemBase2.prototype.updatePosition = function(cfg) { var model = this.get("model"); - var x6 = is_nil_default(cfg.x) ? model.x : cfg.x; - var y5 = is_nil_default(cfg.y) ? model.y : cfg.y; - var group2 = this.get("group"); - if (is_nil_default(x6) || is_nil_default(y5)) { + var x6 = isNaN(+cfg.x) ? +model.x : +cfg.x; + var y5 = isNaN(+cfg.y) ? +model.y : +cfg.y; + var group3 = this.get("group"); + if (isNaN(x6) || isNaN(y5)) { return false; } model.x = x6; model.y = y5; - var matrix = group2.getMatrix(); + var matrix = group3.getMatrix(); if (matrix && matrix[6] === x6 && matrix[7] === y5) return false; - group2.resetMatrix(); - translate4(group2, { + group3.resetMatrix(); + translate4(group3, { x: x6, y: y5 }); @@ -95548,12 +102569,12 @@ var ItemBase = function() { return bbox; }; ItemBase2.prototype.toFront = function() { - var group2 = this.get("group"); - group2.toFront(); + var group3 = this.get("group"); + group3.toFront(); }; ItemBase2.prototype.toBack = function() { - var group2 = this.get("group"); - group2.toBack(); + var group3 = this.get("group"); + group3.toBack(); }; ItemBase2.prototype.show = function() { this.changeVisibility(true); @@ -95562,11 +102583,11 @@ var ItemBase = function() { this.changeVisibility(false); }; ItemBase2.prototype.changeVisibility = function(visible) { - var group2 = this.get("group"); + var group3 = this.get("group"); if (visible) { - group2.show(); + group3.show(); } else { - group2.hide(); + group3.hide(); } this.set("visible", visible); }; @@ -95574,20 +102595,21 @@ var ItemBase = function() { return this.get("visible"); }; ItemBase2.prototype.enableCapture = function(enable) { - var group2 = this.get("group"); - if (group2) { - group2.set("capture", enable); + var group3 = this.get("group"); + if (group3) { + group3.set("capture", enable); } }; ItemBase2.prototype.destroy = function() { if (!this.destroyed) { var animate = this.get("animate"); - var group2 = this.get("group"); + var group3 = this.get("group"); if (animate) { - group2.stopAnimate(); + group3.stopAnimate(); } + group3["shapeMap"] = {}; this.clearCache(); - group2.remove(); + group3.remove(); this._cfg = null; this.destroyed = true; } @@ -95626,10 +102648,10 @@ var Edge3 = function(_super) { if (preItem && !preItem.destroyed) { preItem.removeEdge(this); } - if (is_plain_object_default(value2)) { + if ((0, import_util496.isPlainObject)(value2)) { this.set(pointName, value2); this.set(itemName, null); - } else { + } else if (value2) { value2.addEdge(this); this.set(itemName, value2); this.set(pointName, null); @@ -95644,12 +102666,12 @@ var Edge3 = function(_super) { var anchorName = name + ANCHOR_NAME_SUFFIX; var prePoint = this.getPrePoint(name, controlPoints); var anchorIndex = model[anchorName]; - if (!is_nil_default(anchorIndex)) { + if (!(0, import_util496.isNil)(anchorIndex)) { point2 = item.getLinkPointByAnchor(anchorIndex); } point2 = point2 || item.getLinkPoint(prePoint); - if (!is_nil_default(point2.index)) { - this.set(name + "AnchorIndex", point2.index); + if (!(0, import_util496.isNil)(point2.index)) { + this.set("".concat(name, "AnchorIndex"), point2.index); } } return point2; @@ -95699,10 +102721,10 @@ var Edge3 = function(_super) { this.setSource(this.get("source")); this.setTarget(this.get("target")); }; - Edge4.prototype.getShapeCfg = function(model) { + Edge4.prototype.getShapeCfg = function(model, updateType) { var self2 = this; var linkCenter = self2.get("linkCenter"); - var cfg = _super.prototype.getShapeCfg.call(this, model); + var cfg = (updateType === null || updateType === void 0 ? void 0 : updateType.includes("move")) ? model : _super.prototype.getShapeCfg.call(this, model); if (linkCenter) { cfg.startPoint = self2.getEndCenter("source"); cfg.endPoint = self2.getEndCenter("target"); @@ -95717,22 +102739,22 @@ var Edge3 = function(_super) { }; Edge4.prototype.getModel = function() { var out = this.get("model"); - var sourceItem = this.get("source" + ITEM_NAME_SUFFIX); - var targetItem = this.get("target" + ITEM_NAME_SUFFIX); + var sourceItem = this.get("source".concat(ITEM_NAME_SUFFIX)); + var targetItem = this.get("target".concat(ITEM_NAME_SUFFIX)); if (sourceItem) { - delete out["source" + ITEM_NAME_SUFFIX]; + delete out["source".concat(ITEM_NAME_SUFFIX)]; } else { - out.source = this.get("start" + POINT_NAME_SUFFIX); + out.source = this.get("start".concat(POINT_NAME_SUFFIX)); } if (targetItem) { - delete out["target" + ITEM_NAME_SUFFIX]; + delete out["target".concat(ITEM_NAME_SUFFIX)]; } else { - out.target = this.get("end" + POINT_NAME_SUFFIX); + out.target = this.get("end".concat(POINT_NAME_SUFFIX)); } - if (!is_string_default(out.source) && !is_plain_object_default(out.source)) { + if (!(0, import_util496.isString)(out.source) && !(0, import_util496.isPlainObject)(out.source)) { out.source = out.source.getID(); } - if (!is_string_default(out.target) && !is_plain_object_default(out.target)) { + if (!(0, import_util496.isString)(out.target) && !(0, import_util496.isPlainObject)(out.target)) { out.target = out.target.getID(); } return out; @@ -95754,9 +102776,9 @@ var Edge3 = function(_super) { Edge4.prototype.updatePosition = function() { return false; }; - Edge4.prototype.update = function(cfg, onlyMove) { - if (onlyMove === void 0) { - onlyMove = false; + Edge4.prototype.update = function(cfg, updateType) { + if (updateType === void 0) { + updateType = void 0; } var model = this.get("model"); var oriVisible = model.visible; @@ -95766,17 +102788,17 @@ var Edge3 = function(_super) { var styles = this.get("styles"); if (cfg.stateStyles) { var stateStyles = cfg.stateStyles; - mix(styles, stateStyles); + (0, import_util496.mix)(styles, stateStyles); delete cfg.stateStyles; } Object.assign(model, cfg); - this.updateShape(); + this.updateShape(updateType); this.afterUpdate(); this.clearCache(); }; Edge4.prototype.destroy = function() { - var sourceItem = this.get("source" + ITEM_NAME_SUFFIX); - var targetItem = this.get("target" + ITEM_NAME_SUFFIX); + var sourceItem = this.get("source".concat(ITEM_NAME_SUFFIX)); + var targetItem = this.get("target".concat(ITEM_NAME_SUFFIX)); if (sourceItem && !sourceItem.destroyed) { sourceItem.removeEdge(this); } @@ -95790,6 +102812,7 @@ var Edge3 = function(_super) { var edge_default2 = Edge3; // node_modules/@antv/g6-core/es/item/node.js +var import_util497 = __toModule(require_lib()); var CACHE_ANCHOR_POINTS = "anchorPointsCache"; var CACHE_BBOX2 = "bboxCache"; var Node4 = function(_super) { @@ -95922,7 +102945,7 @@ var Node4 = function(_super) { var shapeCfg = this.getShapeCfg(model); var type2 = model.type; var points = shapeFactory.getAnchorPoints(type2, shapeCfg) || []; - each_default(points, function(pointArr, index2) { + (0, import_util497.each)(points, function(pointArr, index2) { var point2 = { x: bbox_1.minX + pointArr[0] * bbox_1.width, y: bbox_1.minY + pointArr[1] * bbox_1.height, @@ -95949,28 +102972,33 @@ var Node4 = function(_super) { Node5.prototype.removeEdge = function(edge2) { var edges = this.getEdges(); var index2 = edges.indexOf(edge2); - if (index2 > -1) { + if (index2 > -1) edges.splice(index2, 1); - } }; Node5.prototype.clearCache = function() { this.set(CACHE_BBOX2, null); this.set(CACHE_ANCHOR_POINTS, null); }; - Node5.prototype.isOnlyMove = function(cfg) { - if (!cfg) { - return false; - } - var existX = !is_nil_default(cfg.x); - var existY = !is_nil_default(cfg.y); - var keys2 = Object.keys(cfg); - return keys2.length === 1 && (existX || existY) || keys2.length === 2 && existX && existY; + Node5.prototype.getUpdateType = function(cfg) { + var _a6, _b, _c, _d, _e; + if (!cfg) + return void 0; + var existX = !(0, import_util497.isNil)(cfg.x); + var existY = !(0, import_util497.isNil)(cfg.y); + var keys6 = Object.keys(cfg); + if (keys6.length === 1 && (existX || existY) || keys6.length === 2 && existX && existY) + return "move"; + if ((0, import_util497.isNumber)(cfg.x) || (0, import_util497.isNumber)(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size || (cfg === null || cfg === void 0 ? void 0 : cfg.style) && (((_a6 = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _a6 === void 0 ? void 0 : _a6.r) || ((_b = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _b === void 0 ? void 0 : _b.width) || ((_c = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _c === void 0 ? void 0 : _c.height) || ((_d = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _d === void 0 ? void 0 : _d.rx) || ((_e = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _e === void 0 ? void 0 : _e.ry))) + return "bbox|label"; + var updateLabel3 = keys6.includes("label") || keys6.includes("labelCfg"); + return updateLabel3 ? "style|label" : "style"; }; return Node5; }(item_default); var node_default = Node4; // node_modules/@antv/g6-core/es/item/combo.js +var import_util498 = __toModule(require_lib()); var CACHE_BBOX3 = "bboxCache"; var CACHE_CANVAS_BBOX2 = "bboxCanvasCache"; var CACHE_SIZE = "sizeCache"; @@ -95993,23 +103021,23 @@ var Combo = function(_super) { var bbox = this.get("bbox"); if (styles && bbox) { var newModel = model; - var size2 = { + var size14 = { r: Math.hypot(bbox.height, bbox.width) / 2 || global_default.defaultCombo.size[0] / 2, width: bbox.width || global_default.defaultCombo.size[0], height: bbox.height || global_default.defaultCombo.size[1] }; - newModel.style = __assign(__assign(__assign({}, styles), model.style), size2); + newModel.style = __assign(__assign(__assign({}, styles), model.style), size14); var padding3 = model.padding || global_default.defaultCombo.padding; - if (is_number_default(padding3)) { - size2.r += padding3; - size2.width += padding3 * 2; - size2.height += padding3 * 2; + if ((0, import_util498.isNumber)(padding3)) { + size14.r += padding3; + size14.width += padding3 * 2; + size14.height += padding3 * 2; } else { - size2.r += padding3[0]; - size2.width += padding3[1] + padding3[3] || padding3[1] * 2; - size2.height += padding3[0] + padding3[2] || padding3[0] * 2; + size14.r += padding3[0]; + size14.width += padding3[1] + padding3[3] || padding3[1] * 2; + size14.height += padding3[0] + padding3[2] || padding3[0] * 2; } - this.set(CACHE_SIZE, size2); + this.set(CACHE_SIZE, size14); return newModel; } return model; @@ -96018,8 +103046,8 @@ var Combo = function(_super) { if (this.destroyed) return; var keyShape = this.get("keyShape"); - var group2 = this.get("group"); - var bbox = getBBox2(keyShape, group2); + var group3 = this.get("group"); + var bbox = getBBox2(keyShape, group3); bbox.centerX = (bbox.minX + bbox.maxX) / 2; bbox.centerY = (bbox.minY + bbox.maxY) / 2; var cacheSize = this.get(CACHE_SIZE); @@ -96132,8 +103160,8 @@ var Combo = function(_super) { } return false; }; - Combo2.prototype.isOnlyMove = function(cfg) { - return false; + Combo2.prototype.getUpdateType = function(cfg) { + return void 0; }; Combo2.prototype.getBBox = function() { this.set(CACHE_CANVAS_BBOX2, null); @@ -96148,14 +103176,15 @@ var Combo = function(_super) { Combo2.prototype.destroy = function() { if (!this.destroyed) { var animate = this.get("animate"); - var group2 = this.get("group"); + var group3 = this.get("group"); if (animate) { - group2.stopAnimate(); + group3.stopAnimate(); } + group3["shapeMap"] = {}; this.clearCache(); this.set(CACHE_SIZE, null); this.set("bbox", null); - group2.remove(); + group3.remove(); this._cfg = null; this.destroyed = true; } @@ -96174,27 +103203,47 @@ var MAPPER_SUFFIX = "Mapper"; var STATE_SUFFIX = "stateStyles"; var ItemController = function() { function ItemController2(graph) { + var _this = this; + this.edgeToBeUpdateMap = {}; + this.throttleRefresh = (0, import_util499.throttle)(function(_8) { + var _a6; + var graph2 = _this.graph; + if (!graph2 || graph2.get("destroyed")) + return; + var edgeToBeUpdateMap = _this.edgeToBeUpdateMap; + if (!edgeToBeUpdateMap || !((_a6 = Object.keys(edgeToBeUpdateMap)) === null || _a6 === void 0 ? void 0 : _a6.length)) + return; + Object.keys(edgeToBeUpdateMap).forEach(function(eid) { + var edge2 = edgeToBeUpdateMap[eid].edge; + if (!edge2 || edge2.destroyed) + return; + edge2.refresh(edgeToBeUpdateMap[eid].updateType); + }); + _this.edgeToBeUpdateMap = {}; + }, 16, { + trailing: true, + leading: true + }); this.graph = graph; this.destroyed = false; } ItemController2.prototype.addItem = function(type2, model) { - var _this = this; var graph = this.graph; var vType = type2 === VEDGE ? EDGE : type2; - var parent = graph.get(vType + "Group") || graph.get("group"); - var upperType = upper_first_default(vType); + var parent = graph.get("".concat(vType, "Group")) || graph.get("group"); + var upperType = (0, import_util499.upperFirst)(vType); var item = null; - var styles = graph.get(vType + upper_first_default(STATE_SUFFIX)) || {}; + var styles = graph.get(vType + (0, import_util499.upperFirst)(STATE_SUFFIX)) || {}; var defaultModel = graph.get(CFG_PREFIX + upperType); if (model[STATE_SUFFIX]) { styles = model[STATE_SUFFIX]; } if (defaultModel) { - each_default(defaultModel, function(val, cfg) { - if (is_object_default(val) && !is_array_default(val)) { - model[cfg] = deep_mix_default({}, val, model[cfg]); - } else if (is_array_default(val)) { - model[cfg] = model[cfg] || clone_default(defaultModel[cfg]); + (0, import_util499.each)(defaultModel, function(val, cfg) { + if ((0, import_util499.isObject)(val) && !(0, import_util499.isArray)(val)) { + model[cfg] = (0, import_util499.deepMix)({}, val, model[cfg]); + } else if ((0, import_util499.isArray)(val)) { + model[cfg] = model[cfg] || (0, import_util499.clone)(defaultModel[cfg]); } else { model[cfg] = model[cfg] || defaultModel[cfg]; } @@ -96207,9 +103256,9 @@ var ItemController = function() { styles = mappedModel_1[STATE_SUFFIX]; delete mappedModel_1[STATE_SUFFIX]; } - each_default(mappedModel_1, function(val, cfg) { - if (is_object_default(val) && !is_array_default(val)) { - model[cfg] = deep_mix_default({}, model[cfg], val); + (0, import_util499.each)(mappedModel_1, function(val, cfg) { + if ((0, import_util499.isObject)(val) && !(0, import_util499.isArray)(val)) { + model[cfg] = (0, import_util499.deepMix)({}, model[cfg], val); } else { model[cfg] = mappedModel_1[cfg] || model[cfg]; } @@ -96224,14 +103273,14 @@ var ItemController = function() { var target = void 0; source = model.source; target = model.target; - if (source && is_string_default(source)) { + if (source && (0, import_util499.isString)(source)) { source = graph.findById(source); } - if (target && is_string_default(target)) { + if (target && (0, import_util499.isString)(target)) { target = graph.findById(target); } if (!source || !target) { - console.warn("The source or target node of edge " + model.id + " does not exist!"); + console.warn("The source or target node of edge ".concat(model.id, " does not exist!")); return; } if (source.getType && source.getType() === "combo") { @@ -96257,14 +103306,20 @@ var ItemController = function() { } else if (type2 === COMBO) { var children = model.children; var comboBBox = getComboBBox(children, graph); - model.x = comboBBox.x || model.x || Math.random() * 100; - model.y = comboBBox.y || model.y || Math.random() * 100; + if (!isNaN(comboBBox.x)) + model.x = comboBBox.x; + else if (isNaN(model.x)) + model.x = Math.random() * 100; + if (!isNaN(comboBBox.y)) + model.y = comboBBox.y; + else if (isNaN(model.y)) + model.y = Math.random() * 100; var comboGroup = parent.addGroup(); comboGroup.setZIndex(model.depth); item = new combo_default({ model, styles, - bbox: comboBBox, + bbox: model.collapsed ? getComboBBox([], graph) : comboBBox, group: comboGroup }); var comboModel_1 = item.getModel(); @@ -96275,13 +103330,14 @@ var ItemController = function() { }); if (model.collapsed) { setTimeout(function() { - graph.collapseCombo(item); - _this.updateCombo(item, []); - }, 250); + if (!item.destroyed) { + graph.collapseCombo(item); + } + }, 0); } } if (item) { - graph.get(type2 + "s").push(item); + graph.get("".concat(type2, "s")).push(item); graph.get("itemMap")[item.get("id")] = item; graph.emit("afteradditem", { item, @@ -96291,9 +103347,10 @@ var ItemController = function() { } }; ItemController2.prototype.updateItem = function(item, cfg) { + var _this = this; var _a6, _b; var graph = this.graph; - if (is_string_default(item)) { + if ((0, import_util499.isString)(item)) { item = graph.findById(item); } if (!item || item.destroyed) { @@ -96304,22 +103361,22 @@ var ItemController = function() { type2 = item.getType(); var mapper = graph.get(type2 + MAPPER_SUFFIX); var model = item.getModel(); - var isOnlyMove = item.isOnlyMove(cfg); + var updateType = item.getUpdateType(cfg); if (mapper) { - var result = deep_mix_default({}, model, cfg); + var result = (0, import_util499.deepMix)({}, model, cfg); var mappedModel = mapper(result); - var newModel = deep_mix_default({}, model, mappedModel, cfg); + var newModel = (0, import_util499.deepMix)({}, model, mappedModel, cfg); if (mappedModel[STATE_SUFFIX]) { item.set("styles", newModel[STATE_SUFFIX]); delete newModel[STATE_SUFFIX]; } - each_default(newModel, function(val, key) { + (0, import_util499.each)(newModel, function(val, key) { cfg[key] = val; }); } else { - each_default(cfg, function(val, key) { + (0, import_util499.each)(cfg, function(val, key) { if (model[key]) { - if (is_object_default(val) && !is_array_default(val)) { + if ((0, import_util499.isObject)(val) && !(0, import_util499.isArray)(val)) { cfg[key] = __assign(__assign({}, model[key]), cfg[key]); } } @@ -96332,14 +103389,14 @@ var ItemController = function() { if (type2 === EDGE) { if (cfg.source) { var source = cfg.source; - if (is_string_default(source)) { + if ((0, import_util499.isString)(source)) { source = graph.findById(source); } item.setSource(source); } if (cfg.target) { var target = cfg.target; - if (is_string_default(target)) { + if ((0, import_util499.isString)(target)) { target = graph.findById(target); } item.setTarget(target); @@ -96347,14 +103404,24 @@ var ItemController = function() { item.update(cfg); } if (type2 === NODE || type2 === COMBO) { - item.update(cfg, isOnlyMove); + item.update(cfg, updateType); var edges_1 = item.getEdges(); - var refreshEdge = shouldRefreshEdge(cfg); - if (refreshEdge && type2 === NODE) - each_default(edges_1, function(edge2) { - edge2.refresh(); - }); - else if (refreshEdge && type2 === COMBO) { + var refreshEdge = (updateType === null || updateType === void 0 ? void 0 : updateType.includes("bbox")) || updateType === "move"; + if (type2 === NODE) { + if (updateType === "move") { + (0, import_util499.each)(edges_1, function(edge2) { + _this.edgeToBeUpdateMap[edge2.getID()] = { + edge: edge2, + updateType + }; + _this.throttleRefresh(); + }); + } else if (refreshEdge) { + (0, import_util499.each)(edges_1, function(edge2) { + edge2.refresh(updateType); + }); + } + } else if (refreshEdge && type2 === COMBO) { var shapeFactory = item.get("shapeFactory"); var shapeType = model.type || "circle"; var comboAnimate = model.animate === void 0 || cfg.animate === void 0 ? (_b = (_a6 = shapeFactory[shapeType]) === null || _a6 === void 0 ? void 0 : _a6.options) === null || _b === void 0 ? void 0 : _b.animate : model.animate || cfg.animate; @@ -96365,13 +103432,13 @@ var ItemController = function() { var keyShape = item.getKeyShape(); if (!keyShape || keyShape.destroyed) return; - each_default(edges_1, function(edge2) { + (0, import_util499.each)(edges_1, function(edge2) { if (edge2 && !edge2.destroyed) edge2.refresh(); }); }, 201); } else { - each_default(edges_1, function(edge2) { + (0, import_util499.each)(edges_1, function(edge2) { edge2.refresh(); }); } @@ -96383,23 +103450,23 @@ var ItemController = function() { }); }; ItemController2.prototype.updateCombo = function(combo, children) { + var _this = this; var _a6, _b; var graph = this.graph; - if (is_string_default(combo)) { + if ((0, import_util499.isString)(combo)) { combo = graph.findById(combo); } if (!combo || combo.destroyed) { return; } - var comboBBox = getComboBBox(children, graph); + var model = combo.getModel(); + var comboBBox = getComboBBox(children, graph, combo); + var comboX = comboBBox.x, comboY = comboBBox.y; combo.set("bbox", comboBBox); combo.update({ - x: comboBBox.x, - y: comboBBox.y + x: comboX || model.x, + y: comboY || model.y }); - var combEdges = combo.getEdges() || []; - var length5 = combEdges.length; - var model = combo.getModel(); var shapeFactory = combo.get("shapeFactory"); var shapeType = model.type || "circle"; var comboAnimate = model.animate === void 0 ? (_b = (_a6 = shapeFactory[shapeType]) === null || _a6 === void 0 ? void 0 : _a6.options) === null || _b === void 0 ? void 0 : _b.animate : model.animate; @@ -96410,23 +103477,33 @@ var ItemController = function() { var keyShape = combo.getKeyShape(); if (!keyShape || keyShape.destroyed) return; - for (var i5 = 0; i5 < length5; i5++) { - var edge3 = combEdges[i5]; - if (edge3 && !edge3.destroyed) - edge3.refresh(); - } + combo.getShapeCfg(model); + _this.updateComboEdges(combo); }, 201); } else { - for (var i4 = 0; i4 < length5; i4++) { - var edge2 = combEdges[i4]; - if (edge2 && !edge2.destroyed) - edge2.refresh(); + this.updateComboEdges(combo); + } + }; + ItemController2.prototype.updateComboEdges = function(combo) { + var combEdges = combo.getEdges() || []; + for (var i4 = 0; i4 < combEdges.length; i4++) { + var edge2 = combEdges[i4]; + if (edge2 && !edge2.destroyed) { + var edgeSF = edge2.get("shapeFactory"); + var edgeCfg = edge2.getShapeCfg(edge2.getModel()); + var edgeGroup = edge2.getContainer(); + edgeGroup.clear(); + var keyShape = edgeSF.draw(edgeCfg.type, edgeCfg, edgeGroup); + edge2.set("keyShape", keyShape); + keyShape.set("isKeyShape", true); + keyShape.set("draggable", true); + edge2.setOriginStyle(); } } }; ItemController2.prototype.collapseCombo = function(combo) { var graph = this.graph; - if (is_string_default(combo)) { + if ((0, import_util499.isString)(combo)) { combo = graph.findById(combo); } var children = combo.getChildren(); @@ -96439,7 +103516,7 @@ var ItemController = function() { }; ItemController2.prototype.expandCombo = function(combo) { var graph = this.graph; - if (is_string_default(combo)) { + if ((0, import_util499.isString)(combo)) { combo = graph.findById(combo); } var children = combo.getChildren(); @@ -96457,25 +103534,25 @@ var ItemController = function() { ItemController2.prototype.removeItem = function(item) { var _this = this; var graph = this.graph; - if (is_string_default(item)) { + if ((0, import_util499.isString)(item)) { item = graph.findById(item); } if (!item || item.destroyed) { return; } - var itemModel = clone_default(item.getModel()); + var itemModel = (0, import_util499.clone)(item.getModel()); graph.emit("beforeremoveitem", { item: itemModel }); var type2 = ""; if (item.getType) type2 = item.getType(); - var items = graph.get(type2 + "s"); + var items = graph.get("".concat(type2, "s")); var index2 = items.indexOf(item); if (index2 > -1) items.splice(index2, 1); if (type2 === EDGE) { - var vitems = graph.get("v" + type2 + "s"); + var vitems = graph.get("v".concat(type2, "s")); var vindex = vitems.indexOf(item); if (vindex > -1) vitems.splice(vindex, 1); @@ -96542,16 +103619,17 @@ var ItemController = function() { } item.destroy(); graph.emit("afterremoveitem", { - item: itemModel + item: itemModel, + type: type2 }); }; ItemController2.prototype.setItemState = function(item, state2, value2) { var graph = this.graph; var stateName = state2; - if (is_string_default(value2)) { - stateName = state2 + ":" + value2; + if ((0, import_util499.isString)(value2)) { + stateName = "".concat(state2, ":").concat(value2); } - if (item.hasState(stateName) === value2 && value2 || is_string_default(value2) && item.hasState(stateName)) { + if (item.hasState(stateName) === value2 && value2 || (0, import_util499.isString)(value2) && item.hasState(stateName)) { return; } graph.emit("beforeitemstatechange", { @@ -96570,7 +103648,7 @@ var ItemController = function() { ItemController2.prototype.priorityState = function(item, state2) { var graph = this.graph; var currentItem = item; - if (is_string_default(item)) { + if ((0, import_util499.isString)(item)) { currentItem = graph.findById(item); } this.setItemState(currentItem, state2, false); @@ -96578,7 +103656,7 @@ var ItemController = function() { }; ItemController2.prototype.clearItemStates = function(item, states) { var graph = this.graph; - if (is_string_default(item)) { + if ((0, import_util499.isString)(item)) { item = graph.findById(item); } graph.emit("beforeitemstatesclear", { @@ -96593,7 +103671,7 @@ var ItemController = function() { }; ItemController2.prototype.refreshItem = function(item) { var graph = this.graph; - if (is_string_default(item)) { + if ((0, import_util499.isString)(item)) { item = graph.findById(item); } graph.emit("beforeitemrefresh", { @@ -96630,7 +103708,7 @@ var ItemController = function() { ItemController2.prototype.changeItemVisibility = function(item, visible) { var _this = this; var graph = this.graph; - if (is_string_default(item)) { + if ((0, import_util499.isString)(item)) { item = graph.findById(item); } if (!item) { @@ -96644,7 +103722,7 @@ var ItemController = function() { item.changeVisibility(visible); if (item.getType && item.getType() === NODE) { var edges = item.getEdges(); - each_default(edges, function(edge2) { + (0, import_util499.each)(edges, function(edge2) { if (visible && !(edge2.get("source").isVisible() && edge2.get("target").isVisible())) { return; } @@ -96669,14 +103747,14 @@ var ItemController = function() { return true; }); }); - if (children_1) { + if (children_1 && (!visible || visible && !item.getModel().collapsed)) { children_1.forEach(function(child) { var childItem = graph.findById(child.id); _this.changeItemVisibility(childItem, visible); }); } var edges = item.getEdges(); - each_default(edges, function(edge2) { + (0, import_util499.each)(edges, function(edge2) { if (visible && !(edge2.get("source").isVisible() && edge2.get("target").isVisible())) { return; } @@ -96698,6 +103776,7 @@ var ItemController = function() { var item_default2 = ItemController; // node_modules/@antv/g6-core/es/graph/controller/state.js +var import_util500 = __toModule(require_lib()); var timer2 = null; var StateController = function() { function StateController2(graph) { @@ -96749,7 +103828,7 @@ var StateController = function() { }; StateController2.prototype.updateStates = function(item, states, enabled) { var _this = this; - if (is_string_default(states)) { + if ((0, import_util500.isString)(states)) { this.updateState(item, states, enabled); } else { states.forEach(function(state2) { @@ -96760,14 +103839,14 @@ var StateController = function() { StateController2.prototype.updateGraphStates = function() { var states = this.graph.get("states"); var cachedStates = this.cachedStates; - each_default(cachedStates.disabled, function(val, key) { + (0, import_util500.each)(cachedStates.disabled, function(val, key) { if (states[key]) { states[key] = states[key].filter(function(item) { return val.indexOf(item) < 0 && !val.destroyed; }); } }); - each_default(cachedStates.enabled, function(val, key) { + (0, import_util500.each)(cachedStates.enabled, function(val, key) { if (!states[key]) { states[key] = val; } else { @@ -96809,6 +103888,9 @@ var StateController = function() { }(); var state_default2 = StateController; +// node_modules/@antv/g6-core/es/item/hull.js +var import_util501 = __toModule(require_lib()); + // node_modules/@antv/g6-core/es/util/path.js var path_exports2 = {}; __export(path_exports2, { @@ -96820,7 +103902,7 @@ __export(path_exports2, { pointsToPolygon: () => pointsToPolygon, roundedHull: () => roundedHull }); -var substitute2 = function substitute3(str8, o3) { +var substitute3 = function substitute4(str8, o3) { if (!str8 || !o3) { return str8; } @@ -96837,7 +103919,7 @@ var substitute2 = function substitute3(str8, o3) { var getSpline2 = function getSpline3(points) { var data3 = []; if (points.length < 2) { - throw new Error("point length must largn than 2, now it's " + points.length); + throw new Error("point length must largn than 2, now it's ".concat(points.length)); } for (var _i = 0, points_1 = points; _i < points_1.length; _i++) { var point2 = points_1[_i]; @@ -96884,7 +103966,7 @@ var pointsToPolygon = function pointsToPolygon2(points, z3) { } else { str8 = "L{x} {y}"; } - path += substitute2(str8, item); + path += substitute3(str8, item); } if (z3) { path += "Z"; @@ -96908,13 +103990,13 @@ var pathToPoints2 = function pathToPoints3(path) { }; var getClosedSpline = function getClosedSpline2(points) { if (points.length < 2) { - throw new Error("point length must largn than 2, now it's " + points.length); + throw new Error("point length must largn than 2, now it's ".concat(points.length)); } var first = points[0]; var second = points[1]; - var last2 = points[points.length - 1]; + var last17 = points[points.length - 1]; var lastSecond = points[points.length - 2]; - points.unshift(last2); + points.unshift(last17); points.unshift(lastSecond); points.push(first); points.push(second); @@ -96934,7 +104016,7 @@ var getClosedSpline = function getClosedSpline2(points) { var cp2y = y22 - (y32 - y1) / 6; closedPath.push(["C", cp1x, cp1y, cp2x, cp2y, x22, y22]); } - closedPath.unshift(["M", last2.x, last2.y]); + closedPath.unshift(["M", last17.x, last17.y]); return closedPath; }; var vecScaleTo = function vecScaleTo2(v3, length5) { @@ -96955,7 +104037,7 @@ function roundedHull(polyPoints, padding3) { var roundedHull1 = function roundedHull12(points) { var p12 = [points[0][0], points[0][1] - padding3]; var p22 = [points[0][0], points[0][1] + padding3]; - return "M " + p12 + " A " + padding3 + "," + padding3 + ",0,0,0," + p22 + " A " + padding3 + "," + padding3 + ",0,0,0," + p12; + return "M ".concat(p12, " A ").concat(padding3, ",").concat(padding3, ",0,0,0,").concat(p22, " A ").concat(padding3, ",").concat(padding3, ",0,0,0,").concat(p12); }; var roundedHull2 = function roundedHull22(points) { var offsetVector = vec2_exports.scale([0, 0], unitNormal(points[0], points[1]), padding3); @@ -96964,7 +104046,7 @@ function roundedHull(polyPoints, padding3) { var p12 = vec2_exports.add([0, 0], points[1], offsetVector); var p22 = vec2_exports.add([0, 0], points[1], invOffsetVector); var p32 = vec2_exports.add([0, 0], points[0], invOffsetVector); - return "M " + p02 + " L " + p12 + " A " + [padding3, padding3, "0,0,0", p22].join(",") + " L " + p32 + " A " + [padding3, padding3, "0,0,0", p02].join(","); + return "M ".concat(p02, " L ").concat(p12, " A ").concat([padding3, padding3, "0,0,0", p22].join(","), " L ").concat(p32, " A ").concat([padding3, padding3, "0,0,0", p02].join(",")); }; if (!polyPoints || polyPoints.length < 1) return ""; @@ -96979,13 +104061,13 @@ function roundedHull(polyPoints, padding3) { var offset = vec2_exports.scale([0, 0], unitNormal(p0, p1), padding3); segments[segmentIndex] = [vec2_exports.add([0, 0], p0, offset), vec2_exports.add([0, 0], p1, offset)]; } - var arcData = "A " + [padding3, padding3, "0,0,0,"].join(","); + var arcData = "A ".concat([padding3, padding3, "0,0,0,"].join(",")); segments = segments.map(function(segment, index2) { var pathFragment = ""; if (index2 === 0) { - pathFragment = "M " + segments[segments.length - 1][1] + " "; + pathFragment = "M ".concat(segments[segments.length - 1][1], " "); } - pathFragment += arcData + segment[0] + " L " + segment[1]; + pathFragment += "".concat(arcData + segment[0], " L ").concat(segment[1]); return pathFragment; }); return segments.join(" "); @@ -96995,7 +104077,7 @@ function paddedHull(polyPoints, padding3) { var smoothHull1 = function smoothHull12(points) { var p1 = [points[0][0], points[0][1] - padding3]; var p22 = [points[0][0], points[0][1] + padding3]; - return "M " + p1 + " A " + [padding3, padding3, "0,0,0", p22].join(",") + " A " + [padding3, padding3, "0,0,0", p1].join(","); + return "M ".concat(p1, " A ").concat([padding3, padding3, "0,0,0", p22].join(","), " A ").concat([padding3, padding3, "0,0,0", p1].join(",")); }; var smoothHull2 = function smoothHull22(points) { var v3 = vecFrom(points[0], points[1]); @@ -97008,7 +104090,7 @@ function paddedHull(polyPoints, padding3) { var control0 = vec2_exports.add([0, 0], extension0, invControlDelta); var control1 = vec2_exports.add([0, 0], extension1, invControlDelta); var control3 = vec2_exports.add([0, 0], extension0, controlDelta); - return "M " + extension0 + " C " + [control0, control1, extension1].join(",") + " S " + [control3, extension0].join(",") + " Z"; + return "M ".concat(extension0, " C ").concat([control0, control1, extension1].join(","), " S ").concat([control3, extension0].join(","), " Z"); }; if (!polyPoints || pointCount < 1) return ""; @@ -97177,7 +104259,7 @@ function MarchingSquares(contour, potentialArea, threshold) { y5++; break; default: - console.warn("Marching squares invalid state: " + state2); + console.warn("Marching squares invalid state: ".concat(state2)); return true; } } @@ -97394,15 +104476,15 @@ var genBubbleSet = function genBubbleSet2(members, nonMembers, ops) { }; }); if (marchedPath) { - var size2 = marchedPath.length; + var size14 = marchedPath.length; if (options.skip > 1) { - size2 = Math.floor(marchedPath.length / options.skip); - while (size2 < 3 && options.skip > 1) { + size14 = Math.floor(marchedPath.length / options.skip); + while (size14 < 3 && options.skip > 1) { options.skip -= 1; - size2 = Math.floor(marchedPath.length / options.skip); + size14 = Math.floor(marchedPath.length / options.skip); } } - for (var i4 = 0, j4 = 0; j4 < size2; j4 += 1, i4 += options.skip) { + for (var i4 = 0, j4 = 0; j4 < size14; j4 += 1, i4 += options.skip) { hull.push({ x: marchedPath[i4].x, y: marchedPath[i4].y @@ -97606,15 +104688,15 @@ function rerouteLine(item, buffer, intersections, wrapNormal) { // node_modules/@antv/g6-core/es/item/hull.js var Hull = function() { function Hull2(graph, cfg) { - this.cfg = deep_mix_default(this.getDefaultCfg(), cfg); + this.cfg = (0, import_util501.deepMix)(this.getDefaultCfg(), cfg); this.graph = graph; this.id = this.cfg.id; this.group = this.cfg.group; this.members = this.cfg.members.map(function(item) { - return is_string_default(item) ? graph.findById(item) : item; + return (0, import_util501.isString)(item) ? graph.findById(item) : item; }); this.nonMembers = this.cfg.nonMembers.map(function(item) { - return is_string_default(item) ? graph.findById(item) : item; + return (0, import_util501.isString)(item) ? graph.findById(item) : item; }); this.setPadding(); this.setType(); @@ -97692,14 +104774,15 @@ var Hull = function() { path: this.path }, this.cfg.style), id: this.id, - name: this.cfg.id + name: this.cfg.id, + capture: false }); this.group.toBack(); }; Hull2.prototype.addMember = function(item) { if (!item) return; - if (is_string_default(item)) + if ((0, import_util501.isString)(item)) item = this.graph.findById(item); this.members.push(item); var index2 = this.nonMembers.indexOf(item); @@ -97712,7 +104795,7 @@ var Hull = function() { Hull2.prototype.addNonMember = function(item) { if (!item) return; - if (is_string_default(item)) + if ((0, import_util501.isString)(item)) item = this.graph.findById(item); this.nonMembers.push(item); var index2 = this.members.indexOf(item); @@ -97725,7 +104808,7 @@ var Hull = function() { Hull2.prototype.removeMember = function(item) { if (!item) return; - if (is_string_default(item)) + if ((0, import_util501.isString)(item)) item = this.graph.findById(item); var index2 = this.members.indexOf(item); if (index2 > -1) { @@ -97738,7 +104821,7 @@ var Hull = function() { Hull2.prototype.removeNonMember = function(item) { if (!item) return; - if (is_string_default(item)) + if ((0, import_util501.isString)(item)) item = this.graph.findById(item); var index2 = this.nonMembers.indexOf(item); if (index2 > -1) { @@ -97753,11 +104836,11 @@ var Hull = function() { this.group.findById(this.id).remove(); if (members) this.members = members.map(function(item) { - return is_string_default(item) ? _this.graph.findById(item) : item; + return (0, import_util501.isString)(item) ? _this.graph.findById(item) : item; }); if (nonMembers) this.nonMembers = nonMembers.map(function(item) { - return is_string_default(item) ? _this.graph.findById(item) : item; + return (0, import_util501.isString)(item) ? _this.graph.findById(item) : item; }); this.path = this.calcPath(this.members, this.nonMembers); this.render(); @@ -97768,17 +104851,17 @@ var Hull = function() { }; Hull2.prototype.updateCfg = function(cfg) { var _this = this; - this.cfg = deep_mix_default(this.cfg, cfg); + this.cfg = (0, import_util501.deepMix)(this.cfg, cfg); this.id = this.cfg.id; this.group = this.cfg.group; if (cfg.members) { this.members = this.cfg.members.map(function(item) { - return is_string_default(item) ? _this.graph.findById(item) : item; + return (0, import_util501.isString)(item) ? _this.graph.findById(item) : item; }); } if (cfg.nonMembers) { this.nonMembers = this.cfg.nonMembers.map(function(item) { - return is_string_default(item) ? _this.graph.findById(item) : item; + return (0, import_util501.isString)(item) ? _this.graph.findById(item) : item; }); } this.setPadding(); @@ -97789,7 +104872,7 @@ var Hull = function() { Hull2.prototype.contain = function(item) { var _this = this; var nodeItem; - if (is_string_default(item)) { + if ((0, import_util501.isString)(item)) { nodeItem = this.graph.findById(item); } else { nodeItem = item; @@ -97823,7 +104906,7 @@ var AbstractGraph = function(_super) { __extends(AbstractGraph2, _super); function AbstractGraph2(cfg) { var _this = _super.call(this) || this; - _this.cfg = deep_mix_default(_this.getDefaultCfg(), cfg); + _this.cfg = (0, import_util502.deepMix)(_this.getDefaultCfg(), cfg); _this.init(); _this.animating = false; _this.destroyed = false; @@ -97852,23 +104935,25 @@ var AbstractGraph = function(_super) { }; AbstractGraph2.prototype.initGroups = function() { var canvas = this.get("canvas"); - var el = this.get("canvas").get("el"); - var id = el.id; - var group2 = canvas.addGroup({ - id: id + "-root", + if (!canvas) + return; + var el = canvas.get("el"); + var _a6 = (el || {}).id, id = _a6 === void 0 ? "g6" : _a6; + var group3 = canvas.addGroup({ + id: "".concat(id, "-root"), className: global_default.rootContainerClassName }); if (this.get("groupByTypes")) { - var edgeGroup = group2.addGroup({ - id: id + "-edge", + var edgeGroup = group3.addGroup({ + id: "".concat(id, "-edge"), className: global_default.edgeContainerClassName }); - var nodeGroup = group2.addGroup({ - id: id + "-node", + var nodeGroup = group3.addGroup({ + id: "".concat(id, "-node"), className: global_default.nodeContainerClassName }); - var comboGroup = group2.addGroup({ - id: id + "-combo", + var comboGroup = group3.addGroup({ + id: "".concat(id, "-combo"), className: global_default.comboContainerClassName }); comboGroup.toBack(); @@ -97878,14 +104963,14 @@ var AbstractGraph = function(_super) { comboGroup }); } - var delegateGroup = group2.addGroup({ - id: id + "-delegate", + var delegateGroup = group3.addGroup({ + id: "".concat(id, "-delegate"), className: global_default.delegateContainerClassName }); this.set({ delegateGroup }); - this.set("group", group2); + this.set("group", group3); }; AbstractGraph2.prototype.getDefaultCfg = function() { return { @@ -97927,7 +105012,7 @@ var AbstractGraph = function(_super) { }; }; AbstractGraph2.prototype.set = function(key, val) { - if (is_plain_object_default(key)) { + if ((0, import_util502.isPlainObject)(key)) { this.cfg = __assign(__assign({}, this.cfg), key); } else { this.cfg[key] = val; @@ -97935,7 +105020,8 @@ var AbstractGraph = function(_super) { return this; }; AbstractGraph2.prototype.get = function(key) { - return this.cfg[key]; + var _a6; + return (_a6 = this.cfg) === null || _a6 === void 0 ? void 0 : _a6[key]; }; AbstractGraph2.prototype.getGroup = function() { return this.get("group"); @@ -97962,7 +105048,7 @@ var AbstractGraph = function(_super) { return this.get("height"); }; AbstractGraph2.prototype.clearItemStates = function(item, states) { - if (is_string_default(item)) { + if ((0, import_util502.isString)(item)) { item = this.findById(item); } var itemController = this.get("itemController"); @@ -97991,21 +105077,21 @@ var AbstractGraph = function(_super) { AbstractGraph2.prototype.findById = function(id) { return this.get("itemMap")[id]; }; - AbstractGraph2.prototype.find = function(type2, fn2) { + AbstractGraph2.prototype.find = function(type2, fn) { var result; - var items = this.get(type2 + "s"); - each_default(items, function(item, i4) { - if (fn2(item, i4)) { + var items = this.get("".concat(type2, "s")); + (0, import_util502.each)(items, function(item, i4) { + if (fn(item, i4)) { result = item; return result; } }); return result; }; - AbstractGraph2.prototype.findAll = function(type2, fn2) { + AbstractGraph2.prototype.findAll = function(type2, fn) { var result = []; - each_default(this.get(type2 + "s"), function(item, i4) { - if (fn2(item, i4)) { + (0, import_util502.each)(this.get("".concat(type2, "s")), function(item, i4) { + if (fn(item, i4)) { result.push(item); } }); @@ -98016,37 +105102,86 @@ var AbstractGraph = function(_super) { return item.hasState(state2); }); }; - AbstractGraph2.prototype.translate = function(dx, dy) { - var group2 = this.get("group"); - var matrix = clone_default(group2.getMatrix()); + AbstractGraph2.prototype.getAnimateCfgWithCallback = function(_a6) { + var animateCfg = _a6.animateCfg, callback = _a6.callback; + var animateConfig; + if (!animateCfg) { + animateConfig = { + duration: 500, + callback + }; + } else { + animateConfig = (0, import_util502.clone)(animateCfg); + if (animateCfg.callback) { + var animateCfgCallback_1 = animateCfg.callback; + animateConfig.callback = function() { + callback(); + animateCfgCallback_1(); + }; + } else { + animateConfig.callback = callback; + } + } + return animateConfig; + }; + AbstractGraph2.prototype.translate = function(dx, dy, animate, animateCfg) { + var _this = this; + var group3 = this.get("group"); + var matrix = (0, import_util502.clone)(group3.getMatrix()); if (!matrix) { matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; } - matrix = transform9(matrix, [["t", dx, dy]]); - group2.setMatrix(matrix); - this.emit("viewportchange", { - action: "translate", - matrix: group2.getMatrix() - }); - this.autoPaint(); + if (animate) { + var animateConfig = this.getAnimateCfgWithCallback({ + animateCfg, + callback: function callback() { + return _this.emit("viewportchange", { + action: "translate", + matrix: group3.getMatrix() + }); + } + }); + move(group3, { + x: group3.getCanvasBBox().x + dx, + y: group3.getCanvasBBox().y + dy + }, animate, animateConfig || { + duration: 500, + easing: "easeCubic" + }); + } else { + matrix = transform9(matrix, [["t", dx, dy]]); + group3.setMatrix(matrix); + this.emit("viewportchange", { + action: "translate", + matrix + }); + this.autoPaint(); + } }; - AbstractGraph2.prototype.moveTo = function(x6, y5) { - var group2 = this.get("group"); - move(group2, { + AbstractGraph2.prototype.moveTo = function(x6, y5, animate, animateCfg) { + var group3 = this.get("group"); + move(group3, { x: x6, y: y5 + }, animate, animateCfg || { + duration: 500, + easing: "easeCubic" }); this.emit("viewportchange", { action: "move", - matrix: group2.getMatrix() + matrix: group3.getMatrix() }); }; - AbstractGraph2.prototype.fitView = function(padding3) { + AbstractGraph2.prototype.fitView = function(padding3, rules) { if (padding3) { this.set("fitViewPadding", padding3); } var viewController = this.get("viewController"); - viewController.fitView(); + if (rules) { + viewController.fitViewByRules(rules); + } else { + viewController.fitView(); + } this.autoPaint(); }; AbstractGraph2.prototype.fitCenter = function() { @@ -98069,9 +105204,10 @@ var AbstractGraph = function(_super) { modeController.updateBehavior(behavior, newCfg, mode); return this; }; - AbstractGraph2.prototype.zoom = function(ratio, center2) { - var group2 = this.get("group"); - var matrix = clone_default(group2.getMatrix()); + AbstractGraph2.prototype.zoom = function(ratio, center2, animate, animateCfg) { + var _this = this; + var group3 = this.get("group"); + var matrix = (0, import_util502.clone)(group3.getMatrix()); var minZoom = this.get("minZoom"); var maxZoom = this.get("maxZoom"); if (!matrix) { @@ -98083,18 +105219,52 @@ var AbstractGraph = function(_super) { matrix = transform9(matrix, [["s", ratio, ratio]]); } if (minZoom && matrix[0] < minZoom || maxZoom && matrix[0] > maxZoom) { - return; + return false; } - group2.setMatrix(matrix); - this.emit("viewportchange", { - action: "zoom", - matrix - }); - this.autoPaint(); + if (animate) { + var aniMatrix_1 = (0, import_util502.clone)(group3.getMatrix()); + if (!aniMatrix_1) { + aniMatrix_1 = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + } + var initialRatio_1 = aniMatrix_1[0]; + var targetRatio_1 = initialRatio_1 * ratio; + var animateConfig = this.getAnimateCfgWithCallback({ + animateCfg, + callback: function callback() { + return _this.emit("viewportchange", { + action: "zoom", + matrix: group3.getMatrix() + }); + } + }); + group3.animate(function(ratio2) { + if (ratio2 === 1) { + aniMatrix_1 = matrix; + } else { + var scale12 = lerp6(initialRatio_1, targetRatio_1, ratio2) / aniMatrix_1[0]; + if (center2) { + aniMatrix_1 = transform9(aniMatrix_1, [["t", -center2.x, -center2.y], ["s", scale12, scale12], ["t", center2.x, center2.y]]); + } else { + aniMatrix_1 = transform9(aniMatrix_1, [["s", scale12, scale12]]); + } + } + return { + matrix: aniMatrix_1 + }; + }, animateConfig); + } else { + group3.setMatrix(matrix); + this.emit("viewportchange", { + action: "zoom", + matrix + }); + this.autoPaint(); + } + return true; }; - AbstractGraph2.prototype.zoomTo = function(toRatio, center2) { + AbstractGraph2.prototype.zoomTo = function(toRatio, center2, animate, animateCfg) { var ratio = toRatio / this.getZoom(); - this.zoom(ratio, center2); + return this.zoom(ratio, center2, animate, animateCfg); }; AbstractGraph2.prototype.focusItem = function(item, animate, animateCfg) { var viewController = this.get("viewController"); @@ -98270,9 +105440,9 @@ var AbstractGraph = function(_super) { stack = true; } var nodeItem = item; - if (is_string_default(item)) + if ((0, import_util502.isString)(item)) nodeItem = this.findById(item); - if (!nodeItem && is_string_default(item)) { + if (!nodeItem && (0, import_util502.isString)(item)) { console.warn("The item to be removed does not exist!"); } else if (nodeItem) { var type2 = ""; @@ -98312,7 +105482,7 @@ var AbstractGraph = function(_super) { if (type2 === "node") { var model = nodeItem.getModel(); if (model.comboId) { - this.updateComboTree(nodeItem); + this.updateComboTree(nodeItem, void 0, false); } } var itemController = this.get("itemController"); @@ -98333,8 +105503,11 @@ var AbstractGraph = function(_super) { var currentComboSorted = this.get("comboSorted"); this.set("comboSorted", currentComboSorted && !sortCombo); var itemController = this.get("itemController"); + if (!singleDataValidation(type2, model)) { + return false; + } if (model.id && this.findById(model.id)) { - console.warn("This item exists already. Be sure the id %c" + model.id + "%c is unique.", "font-size: 20px; color: red;", ""); + console.warn("This item exists already. Be sure the id %c".concat(model.id, "%c is unique."), "font-size: 20px; color: red;", ""); return; } var item; @@ -98378,10 +105551,10 @@ var AbstractGraph = function(_super) { item = itemController.addItem(type2, model); } this.set("comboTrees", comboTrees); - } else if (type2 === "node" && is_string_default(model.comboId) && comboTrees) { + } else if (type2 === "node" && (0, import_util502.isString)(model.comboId) && comboTrees) { var parentCombo = this.findById(model.comboId); if (parentCombo && parentCombo.getType && parentCombo.getType() !== "combo") { - console.warn("'" + model.comboId + "' is not a id of a combo in the graph, the node will be added without combo."); + console.warn("'".concat(model.comboId, "' is not a id of a combo in the graph, the node will be added without combo.")); } item = itemController.addItem(type2, model); var itemMap_2 = this.get("itemMap"); @@ -98396,13 +105569,13 @@ var AbstractGraph = function(_super) { } if (model.comboId === child.id && !foundNode_1) { foundParent_2 = true; - var cloneNode = clone_default(model); + var cloneNode = (0, import_util502.clone)(model); cloneNode.itemType = "node"; if (child.children) child.children.push(cloneNode); else child.children = [cloneNode]; - model.depth = child.depth + 1; + cloneNode.depth = child.depth + 1; } if (foundParent_2 && itemMap_2[child.id].getType && itemMap_2[child.id].getType() === "combo") { itemController.updateCombo(itemMap_2[child.id], child.children); @@ -98464,24 +105637,24 @@ var AbstractGraph = function(_super) { } var itemController = this.get("itemController"); var currentItem; - if (is_string_default(item)) { + if ((0, import_util502.isString)(item)) { currentItem = this.findById(item); } else { currentItem = item; } - var UnupdateModel = clone_default(currentItem.getModel()); + var UnupdateModel = (0, import_util502.clone)(currentItem.getModel()); var type2 = ""; if (currentItem.getType) type2 = currentItem.getType(); - var states = __spreadArray([], currentItem.getStates()); + var states = __spreadArray([], currentItem.getStates(), true); if (type2 === "combo") { - each_default(states, function(state2) { + (0, import_util502.each)(states, function(state2) { return _this.setItemState(currentItem, state2, false); }); } itemController.updateItem(currentItem, cfg); if (type2 === "combo") { - each_default(states, function(state2) { + (0, import_util502.each)(states, function(state2) { return _this.setItemState(currentItem, state2, true); }); } @@ -98531,14 +105704,14 @@ var AbstractGraph = function(_super) { this.updateItem(item, cfg, stack); }; AbstractGraph2.prototype.setItemState = function(item, state2, value2) { - if (is_string_default(item)) { + if ((0, import_util502.isString)(item)) { item = this.findById(item); } var itemController = this.get("itemController"); itemController.setItemState(item, state2, value2); var stateController = this.get("stateController"); - if (is_string_default(value2)) { - stateController.updateState(item, state2 + ":" + value2, true); + if ((0, import_util502.isString)(value2)) { + stateController.updateState(item, "".concat(state2, ":").concat(value2), true); } else { stateController.updateState(item, state2, value2); } @@ -98548,6 +105721,7 @@ var AbstractGraph = function(_super) { itemController.priorityState(item, state2); }; AbstractGraph2.prototype.data = function(data3) { + dataValidation(data3); this.set("data", data3); }; AbstractGraph2.prototype.render = function() { @@ -98563,7 +105737,7 @@ var AbstractGraph = function(_super) { var _a6 = data3.nodes, nodes = _a6 === void 0 ? [] : _a6, _b = data3.edges, edges = _b === void 0 ? [] : _b, _c = data3.combos, combos = _c === void 0 ? [] : _c; this.clear(true); this.emit("beforerender"); - each_default(nodes, function(node) { + (0, import_util502.each)(nodes, function(node) { self2.add("node", node, false, false); }); if (combos && combos.length !== 0) { @@ -98571,7 +105745,7 @@ var AbstractGraph = function(_super) { this.set("comboTrees", comboTrees); self2.addCombos(combos); } - each_default(edges, function(edge2) { + (0, import_util502.each)(edges, function(edge2) { self2.add("edge", edge2, false, false); }); var animate = self2.get("animate"); @@ -98634,7 +105808,7 @@ var AbstractGraph = function(_super) { var self2 = this; var item; var itemMap = this.get("itemMap"); - each_default(models, function(model) { + (0, import_util502.each)(models, function(model) { item = itemMap[model.id]; if (item) { if (self2.get("animate") && type2 === NODE2) { @@ -98651,7 +105825,7 @@ var AbstractGraph = function(_super) { item = self2.addItem(type2, model, false); } if (item) - items[type2 + "s"].push(item); + items["".concat(type2, "s")].push(item); }); }; AbstractGraph2.prototype.changeData = function(data3, stack) { @@ -98659,7 +105833,7 @@ var AbstractGraph = function(_super) { stack = true; } var self2 = this; - if (!data3) { + if (!dataValidation(data3)) { return this; } if (stack && this.get("enabledStack")) { @@ -98692,9 +105866,11 @@ var AbstractGraph = function(_super) { if (combosData) { var comboTrees = plainCombosToTrees(combosData, data3.nodes); this.set("comboTrees", comboTrees); + } else { + this.set("comboTrees", []); } this.diffItems("node", items, data3.nodes); - each_default(itemMap, function(item, id) { + (0, import_util502.each)(itemMap, function(item, id) { itemMap[id].getModel().depth = 0; if (item.getType && item.getType() === "edge") return; @@ -98720,7 +105896,7 @@ var AbstractGraph = function(_super) { } } this.diffItems("edge", items, data3.edges); - each_default(itemMap, function(item, id) { + (0, import_util502.each)(itemMap, function(item, id) { if (item.getType && (item.getType() === "node" || item.getType() === "combo")) return; if (items.edges.indexOf(item) < 0) { @@ -98759,7 +105935,7 @@ var AbstractGraph = function(_super) { var comboConfig; if (!combo) return; - if (is_string_default(combo)) { + if ((0, import_util502.isString)(combo)) { comboId = combo; comboConfig = { id: combo @@ -98774,6 +105950,7 @@ var AbstractGraph = function(_super) { } var trees = children.map(function(elementId) { var item = _this.findById(elementId); + var model = item.getModel(); var type2 = ""; if (item.getType) type2 = item.getType(); @@ -98783,8 +105960,10 @@ var AbstractGraph = function(_super) { }; if (type2 === "combo") { cItem.parentId = comboId; + model.parentId = comboId; } else if (type2 === "node") { cItem.comboId = comboId; + model.comboId = comboId; } return cItem; }); @@ -98808,9 +105987,10 @@ var AbstractGraph = function(_super) { }; AbstractGraph2.prototype.uncombo = function(combo) { var _this = this; + var _a6; var self2 = this; var comboItem = combo; - if (is_string_default(combo)) { + if ((0, import_util502.isString)(combo)) { comboItem = this.findById(combo); } if (!comboItem || comboItem.getType && comboItem.getType() !== "combo") { @@ -98831,16 +106011,21 @@ var AbstractGraph = function(_super) { if (treeToBeUncombo) return; traverseTreeUp(ctree, function(subtree) { + var _a7; if (subtree.id === comboId) { treeToBeUncombo = subtree; var edges = comboItem.getEdges(); edges.forEach(function(edge2) { _this.removeItem(edge2, false); }); - var index3 = comboItems.indexOf(combo); + var index3 = comboItems.indexOf(comboItem); comboItems.splice(index3, 1); delete itemMap[comboId]; comboItem.destroy(); + _this.emit("afterremoveitem", { + item: comboItem, + type: "combo" + }); } if (parentId && treeToBeUncombo && subtree.id === parentId) { parentItem.removeCombo(comboItem); @@ -98849,7 +106034,7 @@ var AbstractGraph = function(_super) { if (index3 !== -1) { brothers.splice(index3, 1); } - treeToBeUncombo.children.forEach(function(child) { + (_a7 = treeToBeUncombo.children) === null || _a7 === void 0 ? void 0 : _a7.forEach(function(child) { var item = _this.findById(child.id); var childModel = item.getModel(); if (item.getType && item.getType() === "combo") { @@ -98872,10 +106057,11 @@ var AbstractGraph = function(_super) { if (!parentId && treeToBeUncombo) { var index2 = comboTrees.indexOf(treeToBeUncombo); comboTrees.splice(index2, 1); - treeToBeUncombo.children.forEach(function(child) { + (_a6 = treeToBeUncombo.children) === null || _a6 === void 0 ? void 0 : _a6.forEach(function(child) { child.parentId = void 0; var childModel = _this.findById(child.id).getModel(); - childModel.parentId = void 0; + delete childModel.parentId; + delete childModel.comboId; if (child.itemType !== "node") comboTrees.push(child); }); @@ -98894,12 +106080,12 @@ var AbstractGraph = function(_super) { } var childItem = itemMap[child.id]; if (childItem && childItem.getType && childItem.getType() === "combo") { - var states = __spreadArray([], childItem.getStates()); - each_default(states, function(state2) { + var states = __spreadArray([], childItem.getStates(), true); + (0, import_util502.each)(states, function(state2) { return _this.setItemState(childItem, state2, false); }); itemController.updateCombo(childItem, child.children); - each_default(states, function(state2) { + (0, import_util502.each)(states, function(state2) { return _this.setItemState(childItem, state2, true); }); } @@ -98913,7 +106099,7 @@ var AbstractGraph = function(_super) { var self2 = this; var comboItem = combo; var comboId; - if (is_string_default(combo)) { + if ((0, import_util502.isString)(combo)) { comboItem = this.findById(combo); } if (!comboItem || comboItem.getType && comboItem.getType() !== "combo") { @@ -98931,14 +106117,14 @@ var AbstractGraph = function(_super) { } var childItem = itemMap[child.id]; if (comboId === child.id && childItem && childItem.getType && childItem.getType() === "combo") { - var states = __spreadArray([], childItem.getStates()); - each_default(states, function(state2) { + var states = __spreadArray([], childItem.getStates(), true); + (0, import_util502.each)(states, function(state2) { if (childItem.getStateStyle(state2)) { _this.setItemState(childItem, state2, false); } }); itemController.updateCombo(childItem, child.children); - each_default(states, function(state2) { + (0, import_util502.each)(states, function(state2) { if (childItem.getStateStyle(state2)) { _this.setItemState(childItem, state2, true); } @@ -98957,7 +106143,7 @@ var AbstractGraph = function(_super) { var self2 = this; this.set("comboSorted", false); var uItem; - if (is_string_default(item)) { + if ((0, import_util502.isString)(item)) { uItem = self2.findById(item); } else { uItem = item; @@ -99052,13 +106238,13 @@ var AbstractGraph = function(_super) { var nodes = []; var edges = []; var combos = []; - each_default(this.get("nodes"), function(node) { + (0, import_util502.each)(this.get("nodes"), function(node) { nodes.push(node.getModel()); }); - each_default(this.get("edges"), function(edge2) { + (0, import_util502.each)(this.get("edges"), function(edge2) { edges.push(edge2.getModel()); }); - each_default(this.get("combos"), function(combo) { + (0, import_util502.each)(this.get("combos"), function(combo) { combos.push(combo.getModel()); }); return { @@ -99081,13 +106267,13 @@ var AbstractGraph = function(_super) { var nodes = self2.get("nodes"); var edges = self2.get("edges"); var vedges = self2.get("edges"); - each_default(nodes, function(node) { + (0, import_util502.each)(nodes, function(node) { node.refresh(); }); - each_default(edges, function(edge2) { + (0, import_util502.each)(edges, function(edge2) { edge2.refresh(); }); - each_default(vedges, function(vedge) { + (0, import_util502.each)(vedges, function(vedge) { vedge.refresh(); }); } @@ -99104,7 +106290,7 @@ var AbstractGraph = function(_super) { return this.get("combos"); }; AbstractGraph2.prototype.getComboChildren = function(combo) { - if (is_string_default(combo)) { + if ((0, import_util502.isString)(combo)) { combo = this.findById(combo); } if (!combo || combo.getType && combo.getType() !== "combo") { @@ -99132,7 +106318,7 @@ var AbstractGraph = function(_super) { } var canvas = self2.get("canvas"); canvas.animate(function(ratio) { - each_default(toNodes, function(data3) { + (0, import_util502.each)(toNodes, function(data3) { var node = self2.findById(data3.id); if (!node || node.destroyed) { return; @@ -99162,7 +106348,7 @@ var AbstractGraph = function(_super) { duration: animateCfg.duration, easing: animateCfg.easing, callback: function callback() { - each_default(nodes, function(node) { + (0, import_util502.each)(nodes, function(node) { node.set("originAttrs", null); }); if (animateCfg.callback) { @@ -99182,8 +106368,7 @@ var AbstractGraph = function(_super) { var combos = self2.get("combos"); var model; var updatedNodes = {}; - var nodeChangeMap = {}; - each_default(nodes, function(node) { + (0, import_util502.each)(nodes, function(node) { model = node.getModel(); var originAttrs = node.get("originAttrs"); if (originAttrs && model.x === originAttrs.x && model.y === originAttrs.y) { @@ -99200,14 +106385,17 @@ var AbstractGraph = function(_super) { if (combos && combos.length !== 0) { self2.updateCombos(); } - each_default(edges, function(edge2) { + (0, import_util502.each)(edges, function(edge2) { var sourceModel = edge2.getSource().getModel(); - var targetModel = edge2.getTarget().getModel(); - if (updatedNodes[sourceModel.id] || updatedNodes[targetModel.id] || edge2.getModel().isComboEdge) { - edge2.refresh(); + var target = edge2.getTarget(); + if (!(0, import_util502.isPlainObject)(target)) { + var targetModel = target.getModel(); + if (updatedNodes[sourceModel.id] || updatedNodes[targetModel.id] || edge2.getModel().isComboEdge) { + edge2.refresh(); + } } }); - each_default(vedges, function(vedge) { + (0, import_util502.each)(vedges, function(vedge) { vedge.refresh(); }); self2.emit("aftergraphrefreshposition"); @@ -99233,11 +106421,11 @@ var AbstractGraph = function(_super) { return this; }; AbstractGraph2.prototype.clear = function(avoidEmit) { + var _a6; if (avoidEmit === void 0) { avoidEmit = false; } - var canvas = this.get("canvas"); - canvas.clear(); + (_a6 = this.get("canvas")) === null || _a6 === void 0 ? void 0 : _a6.clear(); this.initGroups(); this.set({ itemMap: {}, @@ -99251,13 +106439,50 @@ var AbstractGraph = function(_super) { this.emit("afterrender"); return this; }; - AbstractGraph2.prototype.updateLayout = function(cfg) { + AbstractGraph2.prototype.updateLayout = function(cfg, align, alignPoint) { + var _this = this; var layoutController = this.get("layoutController"); - if (is_string_default(cfg)) { + if ((0, import_util502.isString)(cfg)) { cfg = { type: cfg }; } + if (align) { + var toPoint_1 = alignPoint; + if (!toPoint_1) { + if (align === "begin") + toPoint_1 = { + x: 0, + y: 0 + }; + else + toPoint_1 = { + x: this.getWidth() / 2, + y: this.getHeight() / 2 + }; + } + toPoint_1 = this.getPointByCanvas(toPoint_1.x, toPoint_1.y); + var forceTypes = ["force", "gForce", "fruchterman"]; + if (forceTypes.includes(cfg.type) || !cfg.type && forceTypes.includes(layoutController === null || layoutController === void 0 ? void 0 : layoutController.layoutType)) { + cfg.center = [toPoint_1.x, toPoint_1.y]; + } else { + this.once("afterlayout", function(e4) { + var matrix = _this.getGroup().getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1]; + toPoint_1.x = toPoint_1.x * matrix[0] + matrix[6]; + toPoint_1.y = toPoint_1.y * matrix[0] + matrix[7]; + var _a6 = _this.getGroup().getCanvasBBox(), minX = _a6.minX, maxX = _a6.maxX, minY = _a6.minY, maxY2 = _a6.maxY; + var bboxPoint = { + x: (minX + maxX) / 2, + y: (minY + maxY2) / 2 + }; + if (align === "begin") { + bboxPoint.x = minX; + bboxPoint.y = minY; + } + _this.translate(toPoint_1.x - bboxPoint.x, toPoint_1.y - bboxPoint.y); + }); + } + } var oriLayoutCfg = this.get("layout"); var layoutCfg = {}; Object.assign(layoutCfg, oriLayoutCfg, cfg); @@ -99289,7 +106514,7 @@ var AbstractGraph = function(_super) { }; AbstractGraph2.prototype.collapseCombo = function(combo) { var _this = this; - if (is_string_default(combo)) { + if ((0, import_util502.isString)(combo)) { combo = this.findById(combo); } if (!combo) { @@ -99309,24 +106534,14 @@ var AbstractGraph = function(_super) { var ccombos = []; var comboTrees = this.get("comboTrees"); var found = false; - var brothers = {}; - (comboTrees || []).forEach(function(ctree) { - brothers[ctree.id] = ctree; - }); (comboTrees || []).forEach(function(ctree) { if (found) return; traverseTree(ctree, function(subTree) { - if (found && brothers[subTree.id]) + if (found && subTree.depth <= comboModel.depth) return false; - if (comboModel.parentId === subTree.id) { - brothers = {}; - subTree.children.forEach(function(child) { - brothers[child.id] = child; - }); - } else if (comboModel.id === subTree.id) { + if (comboModel.id === subTree.id) found = true; - } if (found) { var item = _this.findById(subTree.id); if (item && item.getType && item.getType() === "combo") { @@ -99358,8 +106573,8 @@ var AbstractGraph = function(_super) { targetModel = target.getModel(); } var targetId = targetModel.id; - if (edgeWeightMap[comboModel.id + "-" + targetId]) { - edgeWeightMap[comboModel.id + "-" + targetId] += edgeModel.size || 1; + if (edgeWeightMap["".concat(comboModel.id, "-").concat(targetId)]) { + edgeWeightMap["".concat(comboModel.id, "-").concat(targetId)] += edgeModel.size || 1; return; } var vedge = _this.addItem("vedge", { @@ -99367,7 +106582,7 @@ var AbstractGraph = function(_super) { target: targetId, isVEdge: true }, false); - edgeWeightMap[comboModel.id + "-" + targetId] = edgeModel.size || 1; + edgeWeightMap["".concat(comboModel.id, "-").concat(targetId)] = edgeModel.size || 1; addedVEdges.push(vedge); } else if (!cnodes.includes(source) && !ccombos.includes(source) && (cnodes.includes(target) || ccombos.includes(target)) || target.getModel().id === comboModel.id) { var edgeModel = edge2.getModel(); @@ -99383,8 +106598,8 @@ var AbstractGraph = function(_super) { sourceModel = source.getModel(); } var sourceId = sourceModel.id; - if (edgeWeightMap[sourceId + "-" + comboModel.id]) { - edgeWeightMap[sourceId + "-" + comboModel.id] += edgeModel.size || 1; + if (edgeWeightMap["".concat(sourceId, "-").concat(comboModel.id)]) { + edgeWeightMap["".concat(sourceId, "-").concat(comboModel.id)] += edgeModel.size || 1; return; } var vedge = _this.addItem("vedge", { @@ -99392,14 +106607,14 @@ var AbstractGraph = function(_super) { source: sourceId, isVEdge: true }, false); - edgeWeightMap[sourceId + "-" + comboModel.id] = edgeModel.size || 1; + edgeWeightMap["".concat(sourceId, "-").concat(comboModel.id)] = edgeModel.size || 1; addedVEdges.push(vedge); } }); addedVEdges.forEach(function(vedge) { var vedgeModel = vedge.getModel(); _this.updateItem(vedge, { - size: edgeWeightMap[vedgeModel.source + "-" + vedgeModel.target] + size: edgeWeightMap["".concat(vedgeModel.source, "-").concat(vedgeModel.target)] }, false); }); this.emit("aftercollapseexpandcombo", { @@ -99409,7 +106624,7 @@ var AbstractGraph = function(_super) { }; AbstractGraph2.prototype.expandCombo = function(combo) { var _this = this; - if (is_string_default(combo)) { + if ((0, import_util502.isString)(combo)) { combo = this.findById(combo); } if (!combo || combo.getType && combo.getType() !== "combo") { @@ -99429,25 +106644,14 @@ var AbstractGraph = function(_super) { var ccombos = []; var comboTrees = this.get("comboTrees"); var found = false; - var brothers = {}; - (comboTrees || []).forEach(function(ctree) { - brothers[ctree.id] = ctree; - }); (comboTrees || []).forEach(function(ctree) { if (found) return; traverseTree(ctree, function(subTree) { - if (found && brothers[subTree.id]) { + if (found && subTree.depth <= comboModel.depth) return false; - } - if (comboModel.parentId === subTree.id) { - brothers = {}; - subTree.children.forEach(function(child) { - brothers[child.id] = child; - }); - } else if (comboModel.id === subTree.id) { + if (comboModel.id === subTree.id) found = true; - } if (found) { var item = _this.findById(subTree.id); if (item && item.getType && item.getType() === "combo") { @@ -99494,7 +106698,7 @@ var AbstractGraph = function(_super) { } sourceId = sourceModel.id; if (targetId) { - var vedgeId = sourceId + "-" + targetId; + var vedgeId = "".concat(sourceId, "-").concat(targetId); if (edgeWeightMap[vedgeId]) { edgeWeightMap[vedgeId] += edge2.getModel().size || 1; _this.updateItem(addedVEdges[vedgeId], { @@ -99537,7 +106741,7 @@ var AbstractGraph = function(_super) { } targetId = targetModel.id; if (sourceId) { - var vedgeId = sourceId + "-" + targetId; + var vedgeId = "".concat(sourceId, "-").concat(targetId); if (edgeWeightMap[vedgeId]) { edgeWeightMap[vedgeId] += edge2.getModel().size || 1; _this.updateItem(addedVEdges[vedgeId], { @@ -99565,10 +106769,10 @@ var AbstractGraph = function(_super) { }); }; AbstractGraph2.prototype.collapseExpandCombo = function(combo) { - if (is_string_default(combo)) { + if ((0, import_util502.isString)(combo)) { combo = this.findById(combo); } - if (combo.getType && combo.getType() !== "combo") + if (!combo || combo.getType && combo.getType() !== "combo") return; var comboModel = combo.getModel(); var parentItem = this.findById(comboModel.parentId); @@ -99631,7 +106835,7 @@ var AbstractGraph = function(_super) { }; AbstractGraph2.prototype.getNeighbors = function(node, type2) { var item = node; - if (is_string_default(node)) { + if ((0, import_util502.isString)(node)) { item = this.findById(node); } return item.getNeighbors(type2); @@ -99644,7 +106848,7 @@ var AbstractGraph = function(_super) { refresh = false; } var item = node; - if (is_string_default(node)) { + if ((0, import_util502.isString)(node)) { item = this.findById(node); } var degrees = this.get("degrees"); @@ -99705,9 +106909,9 @@ var AbstractGraph = function(_super) { console.warn("\u8BF7\u5148\u542F\u7528 undo & redo \u529F\u80FD\uFF0C\u5728\u5B9E\u4F8B\u5316 Graph \u65F6\u5019\u914D\u7F6E enabledStack: true !"); return; } - var stackData = data3 ? clone_default(data3) : { + var stackData = data3 ? (0, import_util502.clone)(data3) : { before: {}, - after: clone_default(this.save()) + after: (0, import_util502.clone)(this.save()) }; if (stackType === "redo") { this.redoStack.push({ @@ -99760,13 +106964,14 @@ var AbstractGraph = function(_super) { return _super.prototype.on.call(this, eventName, callback, once); }; AbstractGraph2.prototype.destroy = function() { + var _a6, _b, _c, _d, _e; this.clear(); this.clearStack(); - this.get("itemController").destroy(); - this.get("modeController").destroy(); - this.get("viewController").destroy(); - this.get("stateController").destroy(); - this.get("canvas").destroy(); + (_a6 = this.get("itemController")) === null || _a6 === void 0 ? void 0 : _a6.destroy(); + (_b = this.get("modeController")) === null || _b === void 0 ? void 0 : _b.destroy(); + (_c = this.get("viewController")) === null || _c === void 0 ? void 0 : _c.destroy(); + (_d = this.get("stateController")) === null || _d === void 0 ? void 0 : _d.destroy(); + (_e = this.get("canvas")) === null || _e === void 0 ? void 0 : _e.destroy(); this.cfg = null; this.destroyed = true; this.redoStack = null; @@ -99794,11 +106999,11 @@ var AbstractGraph = function(_super) { console.warn("Existed hull id."); return hullMap[cfg.id]; } - var group2 = parent.addGroup({ - id: cfg.id + "-container" + var group3 = parent.addGroup({ + id: "".concat(cfg.id, "-container") }); var hull = new hull_default(this, __assign(__assign({}, cfg), { - group: group2 + group: group3 })); var hullId = hull.id; hullMap[hullId] = hull; @@ -99811,14 +107016,14 @@ var AbstractGraph = function(_super) { return this.get("hullMap")[hullId]; }; AbstractGraph2.prototype.removeHull = function(hull) { + var _a6; var hullInstance; - if (is_string_default(hull)) { + if ((0, import_util502.isString)(hull)) { hullInstance = this.getHullById(hull); } else { hullInstance = hull; } - var hullMap = this.get("hullMap"); - delete hullMap[hullInstance.id]; + (_a6 = this.get("hullMap")) === null || _a6 === void 0 ? true : delete _a6[hullInstance.id]; hullInstance.destroy(); }; AbstractGraph2.prototype.removeHulls = function() { @@ -99835,19 +107040,18 @@ var AbstractGraph = function(_super) { }(esm_default); var graph_default = AbstractGraph; +// node_modules/@antv/g6-core/es/element/node.js +var import_util504 = __toModule(require_lib()); + // node_modules/@antv/g6-core/es/element/shapeBase.js +var import_util503 = __toModule(require_lib()); function _typeof2(obj) { "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof2 = function _typeof5(obj2) { - return typeof obj2; - }; - } else { - _typeof2 = function _typeof5(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof2(obj); + return _typeof2 = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(obj2) { + return typeof obj2; + } : function(obj2) { + return obj2 && typeof Symbol == "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }, _typeof2(obj); } var transform10 = ext_exports.transform; var CLS_SHAPE_SUFFIX = "-shape"; @@ -99892,58 +107096,64 @@ var SHAPES_DEFAULT_ATTRS = { }; var CLS_LABEL_BG_SUFFIX = "-label-bg"; var shapeBase = { - options: {}, + options: { + labelCfg: { + style: { + fontFamily: global_default.windowFontFamily + } + }, + descriptionCfg: { + style: { + fontFamily: global_default.windowFontFamily + } + } + }, itemType: "", type: "", getCustomConfig: function getCustomConfig(cfg) { return {}; }, - getOptions: function getOptions(cfg) { - return deep_mix_default({ - labelCfg: { - style: { - fontFamily: typeof window !== "undefined" ? window.getComputedStyle(document.body, null).getPropertyValue("font-family") || "Arial, sans-serif" : "Arial, sans-serif" - } - }, - descriptionCfg: { - style: { - fontFamily: typeof window !== "undefined" ? window.getComputedStyle(document.body, null).getPropertyValue("font-family") || "Arial, sans-serif" : "Arial, sans-serif" - } - } - }, this.options, this.getCustomConfig(cfg) || {}, cfg); + getOptions: function getOptions(cfg, updateType) { + if (updateType === "move" || (updateType === null || updateType === void 0 ? void 0 : updateType.includes("bbox"))) { + return {}; + } + return (0, import_util503.deepMix)({}, this.options, this.getCustomConfig(cfg) || {}, cfg); }, - draw: function draw3(cfg, group2) { - var shape = this.drawShape(cfg, group2); + draw: function draw3(cfg, group3) { + group3["shapeMap"] = {}; + this.mergeStyle = this.getOptions(cfg); + var shape = this.drawShape(cfg, group3); shape.set("className", this.itemType + CLS_SHAPE_SUFFIX); + group3["shapeMap"][this.itemType + CLS_SHAPE_SUFFIX] = shape; if (cfg.label) { - var label17 = this.drawLabel(cfg, group2); + var label17 = this.drawLabel(cfg, group3); label17.set("className", this.itemType + CLS_LABEL_SUFFIX); + group3["shapeMap"][this.itemType + CLS_LABEL_SUFFIX] = label17; } return shape; }, - afterDraw: function afterDraw2(cfg, group2, keyShape) { + afterDraw: function afterDraw2(cfg, group3, keyShape) { }, - drawShape: function drawShape2(cfg, group2) { + drawShape: function drawShape2(cfg, group3) { return null; }, - drawLabel: function drawLabel(cfg, group2) { - var defaultLabelCfg3 = this.getOptions(cfg).labelCfg; + drawLabel: function drawLabel(cfg, group3) { + var defaultLabelCfg3 = (this.mergeStyle || this.getOptions(cfg) || {}).labelCfg; var labelCfg = defaultLabelCfg3 || {}; - var labelStyle = this.getLabelStyle(cfg, labelCfg, group2); + var labelStyle = this.getLabelStyle(cfg, labelCfg, group3); var rotate8 = labelStyle.rotate; delete labelStyle.rotate; - var label17 = group2.addShape("text", { + var label17 = group3.addShape("text", { attrs: labelStyle, draggable: true, className: "text-shape", - name: "text-shape" + name: "text-shape", + labelRelated: true }); - if (rotate8) { + group3["shapeMap"]["text-shape"] = label17; + if (!isNaN(rotate8) && rotate8 !== "") { var labelBBox = label17.getBBox(); - var labelMatrix = label17.getMatrix(); - if (!labelMatrix) { - labelMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; - } + var labelMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; if (labelStyle.rotateCenter) { switch (labelStyle.rotateCenter) { case "center": @@ -99965,123 +107175,117 @@ var shapeBase = { label17.setMatrix(labelMatrix); } if (labelStyle.background) { - var rect3 = this.drawLabelBg(cfg, group2, label17); + var rect3 = this.drawLabelBg(cfg, group3, label17); var labelBgClassname = this.itemType + CLS_LABEL_BG_SUFFIX; rect3.set("classname", labelBgClassname); + group3["shapeMap"][labelBgClassname] = rect3; label17.toFront(); } return label17; }, - drawLabelBg: function drawLabelBg(cfg, group2, label17) { + drawLabelBg: function drawLabelBg(cfg, group3, label17) { var defaultLabelCfg3 = this.options.labelCfg; - var labelCfg = mix({}, defaultLabelCfg3, cfg.labelCfg); - var style = this.getLabelBgStyleByPosition(label17, cfg, labelCfg, group2); - var rect3 = group2.addShape("rect", { + var labelCfg = (0, import_util503.mix)({}, defaultLabelCfg3, cfg.labelCfg); + var style = this.getLabelBgStyleByPosition(label17, labelCfg); + var rect3 = group3.addShape("rect", { name: "text-bg-shape", - attrs: style + attrs: style, + labelRelated: true }); + group3["shapeMap"]["text-bg-shape"] = rect3; return rect3; }, - getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg, group2) { + getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg, group3) { return { text: cfg.label }; }, - getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label17, cfg, labelCfg, group2) { + getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label17, labelCfg) { return {}; }, - getLabelStyle: function getLabelStyle(cfg, labelCfg, group2) { - var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group2); - var attrName = this.itemType + "Label"; + getLabelStyle: function getLabelStyle(cfg, labelCfg, group3) { + var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group3); + var attrName = "".concat(this.itemType, "Label"); var defaultStyle = global_default[attrName] ? global_default[attrName].style : null; - var labelStyle = __assign(__assign(__assign({}, defaultStyle), calculateStyle), labelCfg.style); - return labelStyle; + return __assign(__assign(__assign({}, defaultStyle), calculateStyle), labelCfg.style); }, getShapeStyle: function getShapeStyle(cfg) { return cfg.style; }, - update: function update2(cfg, item) { - this.updateShapeStyle(cfg, item); - this.updateLabel(cfg, item); + update: function update2(cfg, item, updateType) { + this.updateShapeStyle(cfg, item, updateType); + this.updateLabel(cfg, item, updateType); }, - updateShapeStyle: function updateShapeStyle(cfg, item) { - var group2 = item.getContainer(); + updateShapeStyle: function updateShapeStyle(cfg, item, updateType) { + var _a6; + var group3 = item.getContainer(); var shape = item.getKeyShape(); - var shapeStyle = mix({}, shape.attr(), cfg.style); + var shapeStyle = (0, import_util503.mix)({}, shape.attr(), cfg.style); var _loop_1 = function _loop_12(key2) { - var _a6; + var _b; var style = shapeStyle[key2]; - if (is_plain_object_default(style)) { - var subShape = group2.find(function(element) { + if ((0, import_util503.isPlainObject)(style)) { + var subShape = ((_a6 = group3["shapeMap"]) === null || _a6 === void 0 ? void 0 : _a6[key2]) || group3.find(function(element) { return element.get("name") === key2; }); - if (subShape) { - subShape.attr(style); - } + subShape === null || subShape === void 0 ? void 0 : subShape.attr(style); } else { - shape.attr((_a6 = {}, _a6[key2] = style, _a6)); + shape.attr((_b = {}, _b[key2] = style, _b)); } }; for (var key in shapeStyle) { _loop_1(key); } }, - updateLabel: function updateLabel2(cfg, item) { - var group2 = item.getContainer(); - var defaultLabelCfg3 = this.getOptions({}).labelCfg; - var labelClassName = this.itemType + CLS_LABEL_SUFFIX; - var label17 = group2.find(function(element) { - return element.get("className") === labelClassName; - }); - var labelBgClassname = this.itemType + CLS_LABEL_BG_SUFFIX; - var labelBg = group2.find(function(element) { - return element.get("classname") === labelBgClassname; - }); + updateLabel: function updateLabel2(cfg, item, updateType) { + var _a6, _b; if (cfg.label || cfg.label === "") { + var group3 = item.getContainer(); + var _c = (this.mergeStyle || this.getOptions({}, updateType) || {}).labelCfg, labelCfg = _c === void 0 ? {} : _c; + var labelClassName_1 = this.itemType + CLS_LABEL_SUFFIX; + var label17 = group3["shapeMap"][labelClassName_1] || group3.find(function(ele) { + return ele.get("className") === labelClassName_1; + }); + var labelBgClassname_1 = this.itemType + CLS_LABEL_BG_SUFFIX; + var labelBg = group3["shapeMap"][labelBgClassname_1] || group3.find(function(ele) { + return ele.get("className") === labelBgClassname_1; + }); if (!label17) { - var newLabel = this.drawLabel(cfg, group2); - newLabel.set("className", labelClassName); + var newLabel = this.drawLabel(cfg, group3); + newLabel.set("className", labelClassName_1); + group3["shapeMap"][labelClassName_1] = newLabel; } else { - var currentLabelCfg = {}; - if (item.getModel) { - currentLabelCfg = item.getModel().labelCfg; + if (!updateType || updateType === "bbox|label" || this.itemType === "edge" && updateType !== "style") { + labelCfg = (0, import_util503.deepMix)(labelCfg, cfg.labelCfg); } - var labelCfg = deep_mix_default({}, defaultLabelCfg3, currentLabelCfg, cfg.labelCfg); - var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group2); - var cfgStyle = cfg.labelCfg ? cfg.labelCfg.style : void 0; - var cfgBgStyle = labelCfg.style && labelCfg.style.background; - var labelStyle = __assign(__assign(__assign({}, label17.attr()), calculateStyle), cfgStyle); + var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group3); + var cfgStyle = (_a6 = cfg.labelCfg) === null || _a6 === void 0 ? void 0 : _a6.style; + var labelStyle = __assign(__assign({}, calculateStyle), cfgStyle); var rotate8 = labelStyle.rotate; delete labelStyle.rotate; - if (rotate8) { + if (!isNaN(rotate8) && rotate8 !== "") { var rotateMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; rotateMatrix = transform10(rotateMatrix, [["t", -labelStyle.x, -labelStyle.y], ["r", rotate8], ["t", labelStyle.x, labelStyle.y]]); - label17.resetMatrix(); - label17.attr(__assign(__assign({}, labelStyle), { - matrix: rotateMatrix - })); + labelStyle.matrix = rotateMatrix; + label17.attr(labelStyle); } else { - label17.resetMatrix(); + if (((_b = label17.getMatrix()) === null || _b === void 0 ? void 0 : _b[4]) !== 1) { + label17.resetMatrix(); + } label17.attr(labelStyle); } if (!labelBg) { if (labelStyle.background) { - labelBg = this.drawLabelBg(cfg, group2, label17); - labelBg.set("classname", labelBgClassname); + labelBg = this.drawLabelBg(cfg, group3, label17); + labelBg.set("classname", labelBgClassname_1); + group3["shapeMap"][labelBgClassname_1] = labelBg; label17.toFront(); } } else if (labelStyle.background) { - var calculateBgStyle = this.getLabelBgStyleByPosition(label17, cfg, labelCfg, group2); - var labelBgStyle = __assign(__assign({}, calculateBgStyle), cfgBgStyle); - labelBg.resetMatrix(); - if (rotate8) { - var bgRotateMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; - bgRotateMatrix = transform10(bgRotateMatrix, [["t", -labelBgStyle.x, -labelBgStyle.y], ["r", rotate8], ["t", labelBgStyle.x, labelBgStyle.y]]); - labelBgStyle.matrix = bgRotateMatrix; - } - labelBg.attr(labelBgStyle); + var calculateBgStyle = this.getLabelBgStyleByPosition(label17, labelCfg); + labelBg.attr(calculateBgStyle); } else { - group2.removeChild(labelBg); + group3.removeChild(labelBg); } } } @@ -100090,24 +107294,25 @@ var shapeBase = { }, setState: function setState3(name, value2, item) { var _a6, _b; + var _c; var shape = item.get("keyShape"); - if (!shape) { + if (!shape || shape.destroyed) return; - } var type2 = item.getType(); - var stateName = is_boolean_default(value2) ? name : name + ":" + value2; + var stateName = (0, import_util503.isBoolean)(value2) ? name : "".concat(name, ":").concat(value2); var shapeStateStyle = this.getStateStyle(stateName, item); var itemStateStyle = item.getStateStyle(stateName); if (!itemStateStyle && !shapeStateStyle) { return; } - var styles = mix({}, itemStateStyle || shapeStateStyle); - var group2 = item.getContainer(); + var styles = (0, import_util503.mix)({}, itemStateStyle || shapeStateStyle); + var group3 = item.getContainer(); var keptAttrs = { x: 1, y: 1, cx: 1, - cy: 1 + cy: 1, + matrix: 1 }; if (type2 === "combo") { keptAttrs.r = 1; @@ -100116,17 +107321,15 @@ var shapeBase = { } if (value2) { var _loop_2 = function _loop_22(key2) { - var _c; + var _d; var style = styles[key2]; - if (is_plain_object_default(style) && !ARROWS.includes(key2)) { - var subShape = group2.find(function(element) { + if ((0, import_util503.isPlainObject)(style) && !ARROWS.includes(key2)) { + var subShape = ((_c = group3["shapeMap"]) === null || _c === void 0 ? void 0 : _c[key2]) || group3.find(function(element) { return element.get("name") === key2; }); - if (subShape) { - subShape.attr(style); - } + subShape === null || subShape === void 0 ? void 0 : subShape.attr(style); } else { - shape.attr((_c = {}, _c[key2] = style, _c)); + shape.attr((_d = {}, _d[key2] = style, _d)); } }; for (var key in styles) { @@ -100135,7 +107338,7 @@ var shapeBase = { } else { var enableStatesStyle = cloneBesidesImg(item.getCurrentStatesStyle()); var model = item.getModel(); - var originStyle_1 = mix({}, model.style, cloneBesidesImg(item.getOriginStyle())); + var originStyle_1 = (0, import_util503.mix)({}, model.style, cloneBesidesImg(item.getOriginStyle())); var keyShapeName_1 = shape.get("name"); var shapeAttrs_1 = shape.attr(); var keyShapeStyles_1 = {}; @@ -100144,7 +107347,7 @@ var shapeBase = { return; var attr = shapeAttrs_1[key2]; if (attr && _typeof2(attr) === "object") { - keyShapeStyles_1[key2] = clone_default(attr); + keyShapeStyles_1[key2] = (0, import_util503.clone)(attr); } else { keyShapeStyles_1[key2] = attr; } @@ -100152,13 +107355,13 @@ var shapeBase = { var filtetDisableStatesStyle = {}; var _loop_3 = function _loop_32(p5) { var style = styles[p5]; - if (is_plain_object_default(style) && !ARROWS.includes(p5)) { - var subShape_1 = group2.find(function(element) { - return element.get("name") === p5; + if ((0, import_util503.isPlainObject)(style) && !ARROWS.includes(p5)) { + var subShape_1 = group3["shapeMap"][p5] || group3.find(function(ele) { + return ele.get("name") === p5; }); if (subShape_1) { - var subShapeStyles_1 = clone_default(subShape_1.attr()); - each_default(style, function(v3, key2) { + var subShapeStyles_1 = cloneBesidesImg(subShape_1.attr()); + (0, import_util503.each)(style, function(v3, key2) { if (p5 === keyShapeName_1 && keyShapeStyles_1[key2] && !keptAttrs[key2]) { delete keyShapeStyles_1[key2]; var value_1 = originStyle_1[p5][key2] || SHAPES_DEFAULT_ATTRS[type2][key2]; @@ -100183,7 +107386,7 @@ var shapeBase = { _loop_3(p4); } if (!keyShapeName_1) { - mix(filtetDisableStatesStyle, keyShapeStyles_1); + (0, import_util503.mix)(filtetDisableStatesStyle, keyShapeStyles_1); } else { filtetDisableStatesStyle[keyShapeName_1] = keyShapeStyles_1; } @@ -100191,27 +107394,32 @@ var shapeBase = { if (keptAttrs[key]) continue; var enableStyle = enableStatesStyle[key]; - if (!is_plain_object_default(enableStyle) || ARROWS.includes(key)) { + if (!(0, import_util503.isPlainObject)(enableStyle) || ARROWS.includes(key)) { if (!keyShapeName_1) { - mix(originStyle_1, (_a6 = {}, _a6[key] = enableStyle, _a6)); + (0, import_util503.mix)(originStyle_1, (_a6 = {}, _a6[key] = enableStyle, _a6)); } else { - mix(originStyle_1[keyShapeName_1], (_b = {}, _b[key] = enableStyle, _b)); + (0, import_util503.mix)(originStyle_1[keyShapeName_1], (_b = {}, _b[key] = enableStyle, _b)); delete originStyle_1[key]; } delete enableStatesStyle[key]; } } var originstyles = {}; - deep_mix_default(originstyles, originStyle_1, filtetDisableStatesStyle, enableStatesStyle); + (0, import_util503.deepMix)(originstyles, originStyle_1, filtetDisableStatesStyle, enableStatesStyle); var keyShapeSetted = false; var _loop_4 = function _loop_42(originKey2) { - var _d, _e; + var _e, _f; var style = originstyles[originKey2]; - if (is_plain_object_default(style) && !ARROWS.includes(originKey2)) { - var subShape = group2.find(function(element) { - return element.get("name") === originKey2; + if ((0, import_util503.isPlainObject)(style) && !ARROWS.includes(originKey2)) { + var subShape = group3["shapeMap"][originKey2] || group3.find(function(ele) { + return ele.get("name") === originKey2; }); if (subShape) { + if (subShape.get("type") === "text" || subShape.get("labelRelated")) { + delete style.x; + delete style.y; + delete style.matrix; + } if (originKey2 === keyShapeName_1) { if (type2 === "combo") { delete style.r; @@ -100226,10 +107434,10 @@ var shapeBase = { var value_4 = style || SHAPES_DEFAULT_ATTRS[type2][originKey2]; if (type2 === "combo") { if (!keyShapeName_1) { - shape.attr((_d = {}, _d[originKey2] = value_4, _d)); + shape.attr((_e = {}, _e[originKey2] = value_4, _e)); } } else { - shape.attr((_e = {}, _e[originKey2] = value_4, _e)); + shape.attr((_f = {}, _f[originKey2] = value_4, _f)); } } }; @@ -100244,15 +107452,16 @@ var shapeBase = { var _a6 = this.getOptions(model), stateStyles = _a6.stateStyles, _b = _a6.style, style = _b === void 0 ? {} : _b; var modelStateStyle = model.stateStyles ? model.stateStyles[name] : stateStyles && stateStyles[name]; if (type2 === "combo") { - return clone_default(modelStateStyle); + return (0, import_util503.clone)(modelStateStyle); } - return mix({}, style, modelStateStyle); + return (0, import_util503.mix)({}, style, modelStateStyle); }, getControlPoints: function getControlPoints3(cfg) { return cfg.controlPoints; }, getAnchorPoints: function getAnchorPoints3(cfg) { - var anchorPoints = this.getOptions(cfg).anchorPoints; + var _a6, _b; + var anchorPoints = (cfg === null || cfg === void 0 ? void 0 : cfg.anchorPoints) || ((_a6 = this.getCustomConfig(cfg)) === null || _a6 === void 0 ? void 0 : _a6.anchorPoints) || ((_b = this.options) === null || _b === void 0 ? void 0 : _b.anchorPoints); return anchorPoints; } }; @@ -100264,14 +107473,15 @@ var singleNode = { labelPosition: "center", offset: global_default.nodeLabel.offset, getSize: function getSize2(cfg) { - var size2 = cfg.size || this.getOptions({}).size || global_default.defaultNode.size; - if (is_array_default(size2) && size2.length === 1) { - size2 = [size2[0], size2[0]]; + var _a6; + var size14 = ((_a6 = this.mergeStyle) === null || _a6 === void 0 ? void 0 : _a6.size) || cfg.size || this.getOptions({}).size || global_default.defaultNode.size; + if ((0, import_util504.isArray)(size14) && size14.length === 1) { + size14 = [size14[0], size14[0]]; } - if (!is_array_default(size2)) { - size2 = [size2, size2]; + if (!(0, import_util504.isArray)(size14)) { + size14 = [size14, size14]; } - return size2; + return size14; }, getLabelStyleByPosition: function getLabelStyleByPosition2(cfg, labelCfg) { var labelPosition = labelCfg.position || this.labelPosition; @@ -100283,38 +107493,36 @@ var singleNode = { }; } var offset = labelCfg.offset; - if (is_nil_default(offset)) { + if ((0, import_util504.isNil)(offset)) { offset = this.offset; } - var size2 = this.getSize(cfg); - var width2 = size2[0]; - var height = size2[1]; + var size14 = this.getSize(cfg); var style; switch (labelPosition) { case "top": style = { x: 0, - y: 0 - height / 2 - offset, + y: -size14[1] / 2 - offset, textBaseline: "bottom" }; break; case "bottom": style = { x: 0, - y: height / 2 + offset, + y: size14[1] / 2 + offset, textBaseline: "top" }; break; case "left": style = { - x: 0 - width2 / 2 - offset, + x: -size14[0] / 2 - offset, y: 0, textAlign: "right" }; break; default: style = { - x: width2 / 2 + offset, + x: size14[0] / 2 + offset, y: 0, textAlign: "left" }; @@ -100323,55 +107531,48 @@ var singleNode = { style.text = cfg.label; return style; }, - getLabelBgStyleByPosition: function getLabelBgStyleByPosition2(label17, cfg, labelCfg, group2) { - if (!label17) { + getLabelBgStyleByPosition: function getLabelBgStyleByPosition2(label17, labelCfg) { + var _a6; + if (!label17) + return {}; + var backgroundStyle = (_a6 = labelCfg.style) === null || _a6 === void 0 ? void 0 : _a6.background; + if (!backgroundStyle) return {}; - } var bbox = label17.getBBox(); - var backgroundStyle = labelCfg.style && labelCfg.style.background; - if (!backgroundStyle) { - return {}; - } var padding3 = formatPadding2(backgroundStyle.padding); var backgroundWidth = bbox.width + padding3[1] + padding3[3]; var backgroundHeight = bbox.height + padding3[0] + padding3[2]; - var offset = labelCfg.offset; - if (is_nil_default(offset)) { - offset = this.offset; - } - var style; - style = { + return __assign(__assign({ x: bbox.minX - padding3[3], y: bbox.minY - padding3[0] - }; - style = __assign(__assign(__assign({}, style), backgroundStyle), { + }, backgroundStyle), { width: backgroundWidth, height: backgroundHeight }); - return style; }, - drawShape: function drawShape3(cfg, group2) { + drawShape: function drawShape3(cfg, group3) { var shapeType = this.shapeType; var style = this.getShapeStyle(cfg); - var shape = group2.addShape(shapeType, { + var shape = group3.addShape(shapeType, { attrs: style, draggable: true, name: "node-shape" }); + group3["shapeMap"]["node-shape"] = shape; return shape; }, - updateLinkPoints: function updateLinkPoints(cfg, group2) { - var defaultLinkPoints = this.getOptions(cfg).linkPoints; - var markLeft = group2.find(function(element) { + updateLinkPoints: function updateLinkPoints(cfg, group3) { + var defaultLinkPoints = (this.mergeStyle || this.getOptions(cfg)).linkPoints; + var markLeft = group3["shapeMap"]["link-point-left"] || group3.find(function(element) { return element.get("className") === "link-point-left"; }); - var markRight = group2.find(function(element) { + var markRight = group3["shapeMap"]["link-point-right"] || group3.find(function(element) { return element.get("className") === "link-point-right"; }); - var markTop = group2.find(function(element) { + var markTop = group3["shapeMap"]["link-point-top"] || group3.find(function(element) { return element.get("className") === "link-point-top"; }); - var markBottom = group2.find(function(element) { + var markBottom = group3["shapeMap"]["link-point-bottom"] || group3.find(function(element) { return element.get("className") === "link-point-bottom"; }); var currentLinkPoints; @@ -100389,7 +107590,7 @@ var singleNode = { } if (!currentLinkPoints) currentLinkPoints = defaultLinkPoints; - var linkPoints = mix({}, currentLinkPoints, cfg.linkPoints); + var linkPoints = (0, import_util504.mix)({}, currentLinkPoints, cfg.linkPoints); var markFill = linkPoints.fill, markStroke = linkPoints.stroke, borderWidth = linkPoints.lineWidth; var markSize = linkPoints.size / 2; if (!markSize) @@ -100400,9 +107601,9 @@ var singleNode = { top: void 0, bottom: void 0 }, left2 = _a6.left, right2 = _a6.right, top = _a6.top, bottom = _a6.bottom; - var size2 = this.getSize(cfg); - var width2 = size2[0]; - var height = size2[1]; + var size14 = this.getSize(cfg); + var width2 = size14[0]; + var height = size14[1]; var styles = { r: markSize, fill: markFill, @@ -100412,6 +107613,7 @@ var singleNode = { if (markLeft) { if (!left2 && left2 !== void 0) { markLeft.remove(); + delete group3["shapeMap"]["link-point-left"]; } else { markLeft.attr(__assign(__assign({}, styles), { x: -width2 / 2, @@ -100419,57 +107621,63 @@ var singleNode = { })); } } else if (left2) { - group2.addShape("circle", { + var name_1 = "link-point-left"; + group3["shapeMap"][name_1] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: -width2 / 2, y: 0 }), - className: "link-point-left", - name: "link-point-left", + className: name_1, + name: name_1, isAnchorPoint: true }); } if (markRight) { if (!right2 && right2 !== void 0) { markRight.remove(); + delete group3["shapeMap"]["link-point-right"]; } markRight.attr(__assign(__assign({}, styles), { x: width2 / 2, y: 0 })); } else if (right2) { - group2.addShape("circle", { + var name_2 = "link-point-right"; + group3["shapeMap"][name_2] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: width2 / 2, y: 0 }), - className: "link-point-right", - name: "link-point-right", + className: name_2, + name: name_2, isAnchorPoint: true }); } if (markTop) { if (!top && top !== void 0) { markTop.remove(); + delete group3["shapeMap"]["link-point-top"]; } markTop.attr(__assign(__assign({}, styles), { x: 0, y: -height / 2 })); } else if (top) { - group2.addShape("circle", { + var name_3 = "link-point-top"; + group3["shapeMap"][name_3] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: 0, y: -height / 2 }), - className: "link-point-top", - name: "link-point-top", + className: name_3, + name: name_3, isAnchorPoint: true }); } if (markBottom) { if (!bottom && bottom !== void 0) { markBottom.remove(); + delete group3["shapeMap"]["link-point-bottom"]; } else { markBottom.attr(__assign(__assign({}, styles), { x: 0, @@ -100477,39 +107685,47 @@ var singleNode = { })); } } else if (bottom) { - group2.addShape("circle", { + var name_4 = "link-point-bottom"; + group3["shapeMap"][name_4] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: 0, y: height / 2 }), - className: "link-point-bottom", - name: "link-point-bottom", + className: name_4, + name: name_4, isAnchorPoint: true }); } }, - updateShape: function updateShape(cfg, item, keyShapeStyle, hasIcon) { + updateShape: function updateShape(cfg, item, keyShapeStyle, hasIcon, updateType) { var keyShape = item.get("keyShape"); keyShape.attr(__assign({}, keyShapeStyle)); - this.updateLabel(cfg, item); + if (true) { + this.updateLabel(cfg, item, updateType); + } if (hasIcon) { this.updateIcon(cfg, item); } }, updateIcon: function updateIcon(cfg, item) { var _this = this; - var group2 = item.getContainer(); - var icon = this.getOptions(cfg).icon; - var show = (cfg.icon ? cfg.icon : { - show: void 0 - }).show; - var iconShape = group2.find(function(element) { - return element.get("className") === _this.type + "-icon"; + var group3 = item.getContainer(); + var icon = (this.mergeStyle || this.getOptions(cfg)).icon; + var _a6 = cfg.icon ? cfg.icon : { + show: void 0, + text: void 0 + }, show = _a6.show, text = _a6.text; + var iconShape = group3["shapeMap"]["".concat(this.type, "-icon")] || group3.find(function(ele) { + return ele.get("name") === "".concat(_this.type, "-icon"); }); if (iconShape) { if (show || show === void 0) { - var iconConfig = mix({}, iconShape.attr(), icon); - var w4 = iconConfig.width, h3 = iconConfig.height; + var iconConfig = (0, import_util504.mix)({}, iconShape.attr(), icon); + var _b = iconConfig.width, w4 = _b === void 0 ? 20 : _b, _c = iconConfig.height, h3 = _c === void 0 ? 20 : _c; + if (iconConfig.fontFamily === "iconfont" || iconConfig.hasOwnProperty("text")) { + w4 = 0; + h3 = 0; + } iconShape.attr(__assign(__assign({}, iconConfig), { x: -w4 / 2, y: -h3 / 2 @@ -100518,17 +107734,34 @@ var singleNode = { iconShape.remove(); } } else if (show) { - var w4 = icon.width, h3 = icon.height; - group2.addShape("image", { - attrs: __assign(__assign({}, icon), { - x: -w4 / 2, - y: -h3 / 2 - }), - className: this.type + "-icon", - name: this.type + "-icon" - }); - var labelShape = group2.find(function(element) { - return element.get("className") === "node-label"; + var name_5 = "".concat(this.type, "-icon"); + if (text) { + group3["shapeMap"][name_5] = group3.addShape("text", { + attrs: __assign({ + x: 0, + y: 0, + fontSize: 12, + fill: "#000", + stroke: "#000", + textBaseline: "middle", + textAlign: "center" + }, icon), + className: name_5, + name: name_5 + }); + } else { + var w4 = icon.width, h3 = icon.height; + group3["shapeMap"][name_5] = group3.addShape("image", { + attrs: __assign(__assign({}, icon), { + x: -w4 / 2, + y: -h3 / 2 + }), + className: name_5, + name: name_5 + }); + } + var labelShape = group3["shapeMap"]["node-label"] || group3.find(function(ele) { + return ele.get("name") === "node-label"; }); if (labelShape) { labelShape.toFront(); @@ -100540,6 +107773,7 @@ var singleNodeDef = __assign(__assign({}, shapeBase), singleNode); shape_default4.registerNode("single-node", singleNodeDef); // node_modules/@antv/g6-core/es/element/edge.js +var import_util505 = __toModule(require_lib()); var CLS_SHAPE = "edge-shape"; function revertAlign(labelPosition) { var textAlign = labelPosition; @@ -100567,14 +107801,15 @@ var singleEdge = { labelCfg: { style: { fill: global_default.edgeLabel.style.fill, - fontSize: global_default.edgeLabel.style.fontSize + fontSize: global_default.edgeLabel.style.fontSize, + fontFamily: global_default.windowFontFamily } }, stateStyles: __assign({}, global_default.edgeStateStyles) }, getPath: function getPath5(points) { var path = []; - each_default(points, function(point2, index2) { + (0, import_util505.each)(points, function(point2, index2) { if (index2 === 0) { path.push(["M", point2.x, point2.y]); } else { @@ -100588,8 +107823,8 @@ var singleEdge = { var strokeStyle = { stroke: cfg.color }; - var style = mix({}, defaultStyle, strokeStyle, cfg.style); - var size2 = cfg.size || global_default.defaultEdge.size; + var style = (0, import_util505.mix)({}, defaultStyle, strokeStyle, cfg.style); + var size14 = cfg.size || global_default.defaultEdge.size; cfg = this.getPathPoints(cfg); var startPoint = cfg.startPoint, endPoint = cfg.endPoint; var controlPoints = this.getControlPoints(cfg); @@ -100599,22 +107834,18 @@ var singleEdge = { } points.push(endPoint); var path = this.getPath(points); - var styles = mix({}, global_default.defaultEdge.style, { + var styles = (0, import_util505.mix)({}, global_default.defaultEdge.style, { stroke: global_default.defaultEdge.color, - lineWidth: size2, + lineWidth: size14, path }, style); return styles; }, - updateShapeStyle: function updateShapeStyle2(cfg, item) { - var group2 = item.getContainer(); - var strokeStyle = { - stroke: cfg.color - }; - var shape = group2.find(function(element) { - return element.get("className") === "edge-shape"; - }) || item.getKeyShape(); - var size2 = cfg.size; + updateShapeStyle: function updateShapeStyle2(cfg, item, updateType) { + var _a6; + var group3 = item.getContainer(); + var shape = ((_a6 = item.getKeyShape) === null || _a6 === void 0 ? void 0 : _a6.call(item)) || group3["shapeMap"]["edge-shape"]; + var size14 = cfg.size; cfg = this.getPathPoints(cfg); var startPoint = cfg.startPoint, endPoint = cfg.endPoint; var controlPoints = this.getControlPoints(cfg); @@ -100624,7 +107855,10 @@ var singleEdge = { } points.push(endPoint); var currentAttr = shape.attr(); - var previousStyle = mix({}, strokeStyle, currentAttr, cfg.style); + var previousStyle = cfg.style || {}; + if (previousStyle.stroke === void 0) { + previousStyle.stroke = cfg.color; + } var source = cfg.sourceNode; var target = cfg.targetNode; var routeCfg = { @@ -100638,28 +107872,39 @@ var singleEdge = { radius: previousStyle.radius }; } - if (currentAttr.endArrow && previousStyle.endArrow === false) { - cfg.style.endArrow = { - path: "" - }; - } - if (currentAttr.startArrow && previousStyle.startArrow === false) { - } var path = this.getPath(points, routeCfg); - var style = mix(strokeStyle, shape.attr(), { - lineWidth: size2, - path - }, cfg.style); + var style = {}; + if (updateType === "move") { + style = { + path + }; + } else { + if (currentAttr.endArrow && previousStyle.endArrow === false) { + cfg.style.endArrow = { + path: "" + }; + } + if (currentAttr.startArrow && previousStyle.startArrow === false) { + cfg.style.startArrow = { + path: "" + }; + } + style = __assign({}, cfg.style); + if (style.lineWidth === void 0) + style.lineWdith = ((0, import_util505.isNumber)(size14) ? size14 : size14 === null || size14 === void 0 ? void 0 : size14[0]) || currentAttr.lineWidth; + if (style.path === void 0) + style.path = path; + if (style.stroke === void 0) + style.stroke = currentAttr.stroke || cfg.color; + } if (shape) { shape.attr(style); } }, - getLabelStyleByPosition: function getLabelStyleByPosition3(cfg, labelCfg, group2) { + getLabelStyleByPosition: function getLabelStyleByPosition3(cfg, labelCfg, group3) { var labelPosition = labelCfg.position || this.labelPosition; var style = {}; - var pathShape = group2 && group2.find(function(element) { - return element.get("className") === CLS_SHAPE; - }); + var pathShape = group3 === null || group3 === void 0 ? void 0 : group3["shapeMap"][CLS_SHAPE]; var pointPercent; if (labelPosition === "start") { pointPercent = 0; @@ -100677,7 +107922,7 @@ var singleEdge = { return style; } var autoRotate; - if (is_nil_default(labelCfg.autoRotate)) + if ((0, import_util505.isNil)(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate; else autoRotate = labelCfg.autoRotate; @@ -100689,7 +107934,7 @@ var singleEdge = { style.text = cfg.label; return style; }, - getLabelBgStyleByPosition: function getLabelBgStyleByPosition3(label17, cfg, labelCfg, group2) { + getLabelBgStyleByPosition: function getLabelBgStyleByPosition3(label17, labelCfg) { if (!label17) { return {}; } @@ -100701,47 +107946,21 @@ var singleEdge = { var padding3 = backgroundStyle.padding; var backgroundWidth = bbox.width + padding3[1] + padding3[3]; var backgroundHeight = bbox.height + padding3[0] + padding3[2]; - var labelPosition = labelCfg.position || this.labelPosition; var style = __assign(__assign({}, backgroundStyle), { width: backgroundWidth, height: backgroundHeight, - x: bbox.minX - padding3[2], + x: bbox.minX - padding3[3], y: bbox.minY - padding3[0], - rotate: 0 + matrix: [1, 0, 0, 0, 1, 0, 0, 0, 1] }); var autoRotate; - if (is_nil_default(labelCfg.autoRotate)) + if ((0, import_util505.isNil)(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate; else autoRotate = labelCfg.autoRotate; - var pathShape = group2 && group2.find(function(element) { - return element.get("className") === CLS_SHAPE; - }); - var pointPercent; - if (labelPosition === "start") { - pointPercent = 0; - } else if (labelPosition === "end") { - pointPercent = 1; - } else { - pointPercent = 0.5; - } - var offsetX = labelCfg.refX || this.refX; - var offsetY = labelCfg.refY || this.refY; - if (cfg.startPoint.x === cfg.endPoint.x && cfg.startPoint.y === cfg.endPoint.y) { - style.x = cfg.startPoint.x + offsetX - backgroundWidth / 2; - style.y = cfg.startPoint.y + offsetY - backgroundHeight / 2; - return style; - } - var offsetStyle = getLabelPosition(pathShape, pointPercent, offsetX - backgroundWidth / 2, offsetY + backgroundHeight / 2, autoRotate); - var rad = offsetStyle.angle; - if (rad > 1 / 2 * Math.PI && rad < 3 * 1 / 2 * Math.PI) { - offsetStyle = getLabelPosition(pathShape, pointPercent, offsetX + backgroundWidth / 2, offsetY + backgroundHeight / 2, autoRotate); - } if (autoRotate) { - style.x = offsetStyle.x; - style.y = offsetStyle.y; + style.matrix = label17.attr("matrix") || [1, 0, 0, 0, 1, 0, 0, 0, 1]; } - style.rotate = offsetStyle.rotate; return style; }, _getTextAlign: function _getTextAlign(labelPosition, angle3) { @@ -100765,56 +107984,50 @@ var singleEdge = { getPathPoints: function getPathPoints2(cfg) { return cfg; }, - drawShape: function drawShape4(cfg, group2) { + drawShape: function drawShape4(cfg, group3) { var shapeStyle = this.getShapeStyle(cfg); - var shape = group2.addShape("path", { + var shape = group3.addShape("path", { className: CLS_SHAPE, name: CLS_SHAPE, attrs: shapeStyle }); + group3["shapeMap"][CLS_SHAPE] = shape; return shape; }, - drawLabel: function drawLabel2(cfg, group2) { + drawLabel: function drawLabel2(cfg, group3) { var defaultLabelCfg3 = this.options.labelCfg; - var defaultFontFamily; - if (typeof window !== "undefined") - defaultFontFamily = window.getComputedStyle(document.body, null).getPropertyValue("font-family") || "Arial, sans-serif"; - else - defaultFontFamily = "Arial, sans-serif"; - var labelCfg = deep_mix_default({ - fontFamily: defaultFontFamily - }, defaultLabelCfg3, cfg.labelCfg); - var labelStyle = this.getLabelStyle(cfg, labelCfg, group2); + var labelCfg = (0, import_util505.deepMix)({}, defaultLabelCfg3, cfg.labelCfg); + var labelStyle = this.getLabelStyle(cfg, labelCfg, group3); var rotate8 = labelStyle.rotate; delete labelStyle.rotate; - var label17 = group2.addShape("text", { + var label17 = group3.addShape("text", { attrs: labelStyle, - name: "text-shape" + name: "text-shape", + labelRelated: true }); - if (rotate8) { + group3["shapeMap"]["text-shape"] = label17; + if (!isNaN(rotate8) && rotate8 !== "") { label17.rotateAtStart(rotate8); } if (labelStyle.background) { - var rect3 = this.drawLabelBg(cfg, group2, label17); + var rect3 = this.drawLabelBg(cfg, group3, label17, labelStyle, rotate8); var labelBgClassname = this.itemType + CLS_LABEL_BG_SUFFIX; rect3.set("classname", labelBgClassname); + group3["shapeMap"][labelBgClassname] = rect3; label17.toFront(); } return label17; }, - drawLabelBg: function drawLabelBg2(cfg, group2, label17) { + drawLabelBg: function drawLabelBg2(cfg, group3, label17, labelStyle, rotate8) { var defaultLabelCfg3 = this.options.labelCfg; - var labelCfg = deep_mix_default({}, defaultLabelCfg3, cfg.labelCfg); - var labelStyle = this.getLabelStyle(cfg, labelCfg, group2); - var rotate8 = labelStyle.rotate; - var style = this.getLabelBgStyleByPosition(label17, cfg, labelCfg, group2); - delete style.rotate; - var rect3 = group2.addShape("rect", { + var labelCfg = (0, import_util505.deepMix)({}, defaultLabelCfg3, cfg.labelCfg); + var style = this.getLabelBgStyleByPosition(label17, labelCfg); + var rect3 = group3.addShape("rect", { name: "text-bg-shape", - attrs: style + attrs: style, + labelRelated: true }); - if (rotate8) - rect3.rotateAtStart(rotate8); + group3["shapeMap"]["text-bg-shape"] = rect3; return rect3; } }; @@ -100861,7 +108074,7 @@ shape_default4.registerEdge("arc", { if (cfg.curveOffset === void 0) { cfg.curveOffset = this.curveOffset; } - if (is_array_default(cfg.curveOffset)) { + if ((0, import_util505.isArray)(cfg.curveOffset)) { cfg.curveOffset = cfg.curveOffset[0]; } if (cfg.curveOffset < 0) { @@ -100909,9 +108122,9 @@ shape_default4.registerEdge("quadratic", { cfg.curveOffset = this.curveOffset; if (cfg.curvePosition === void 0) cfg.curvePosition = this.curvePosition; - if (is_array_default(this.curveOffset)) + if ((0, import_util505.isArray)(this.curveOffset)) cfg.curveOffset = cfg.curveOffset[0]; - if (is_array_default(this.curvePosition)) + if ((0, import_util505.isArray)(this.curvePosition)) cfg.curvePosition = cfg.curveOffset[0]; var innerPoint = getControlPoint(startPoint, endPoint, cfg.curvePosition, cfg.curveOffset); controlPoints = [innerPoint]; @@ -100934,9 +108147,9 @@ shape_default4.registerEdge("cubic", { cfg.curveOffset = this.curveOffset; if (cfg.curvePosition === void 0) cfg.curvePosition = this.curvePosition; - if (is_number_default(cfg.curveOffset)) + if ((0, import_util505.isNumber)(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset]; - if (is_number_default(cfg.curvePosition)) + if ((0, import_util505.isNumber)(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition]; if (!controlPoints || !controlPoints.length || controlPoints.length < 2) { var startPoint = cfg.startPoint, endPoint = cfg.endPoint; @@ -100965,11 +108178,11 @@ shape_default4.registerEdge("cubic-vertical", { cfg.curveOffset = this.curveOffset; if (cfg.minCurveOffset === void 0) cfg.minCurveOffset = this.minCurveOffset; - if (is_number_default(cfg.curveOffset)) + if ((0, import_util505.isNumber)(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset]; - if (is_number_default(cfg.minCurveOffset)) + if ((0, import_util505.isNumber)(cfg.minCurveOffset)) cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset]; - if (is_number_default(cfg.curvePosition)) + if ((0, import_util505.isNumber)(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition]; var yDist = endPoint.y - startPoint.y; var curveOffset = [0, 0]; @@ -101001,11 +108214,11 @@ shape_default4.registerEdge("cubic-horizontal", { cfg.curveOffset = this.curveOffset; if (cfg.minCurveOffset === void 0) cfg.minCurveOffset = this.minCurveOffset; - if (is_number_default(cfg.curveOffset)) + if ((0, import_util505.isNumber)(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset]; - if (is_number_default(cfg.minCurveOffset)) + if ((0, import_util505.isNumber)(cfg.minCurveOffset)) cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset]; - if (is_number_default(cfg.curvePosition)) + if ((0, import_util505.isNumber)(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition]; var xDist = endPoint.x - startPoint.x; var curveOffset = [0, 0]; @@ -101042,6 +108255,7 @@ shape_default4.registerEdge("loop", { }, "cubic"); // node_modules/@antv/g6-core/es/element/combo.js +var import_util506 = __toModule(require_lib()); var singleCombo = { itemType: "combo", shapeType: "single-combo", @@ -101057,36 +108271,37 @@ var singleCombo = { labelCfg: { style: { fill: global_default.comboLabel.style.fill, - fontSize: global_default.comboLabel.style.fontSize + fontSize: global_default.comboLabel.style.fontSize, + fontFamily: global_default.windowFontFamily } }, stateStyles: __assign({}, global_default.comboStateStyles) }, getSize: function getSize3(cfg) { - var size2 = clone_default(cfg.size || this.options.size || global_default.defaultCombo.size); - if (is_array_default(size2) && size2.length === 1) { - size2 = [size2[0], size2[0]]; + var size14 = (0, import_util506.clone)(cfg.size || this.options.size || global_default.defaultCombo.size); + if ((0, import_util506.isArray)(size14) && size14.length === 1) { + size14 = [size14[0], size14[0]]; } - if (!is_array_default(size2)) { - size2 = [size2, size2]; + if (!(0, import_util506.isArray)(size14)) { + size14 = [size14, size14]; } - return size2; + return size14; }, getLabelStyleByPosition: function getLabelStyleByPosition4(cfg, labelCfg) { var labelPosition = labelCfg.position || this.labelPosition; var cfgStyle = cfg.style; var padding3 = cfg.padding || this.options.padding; - if (is_array_default(padding3)) + if ((0, import_util506.isArray)(padding3)) padding3 = padding3[0]; var refX = labelCfg.refX, refY = labelCfg.refY; - if (is_nil_default(refX)) { + if ((0, import_util506.isNil)(refX)) { refX = this.refX; } - if (is_nil_default(refY)) { + if ((0, import_util506.isNil)(refY)) { refY = this.refY; } - var size2 = this.getSize(cfg); - var r4 = Math.max(cfgStyle.r, size2[0] / 2) || size2[0] / 2; + var size14 = this.getSize(cfg); + var r4 = Math.max(cfgStyle.r, size14[0] / 2) || size14[0] / 2; var dis = r4 + padding3; var style; switch (labelPosition) { @@ -101132,10 +108347,10 @@ var singleCombo = { style.text = cfg.label; return style; }, - drawShape: function drawShape5(cfg, group2) { + drawShape: function drawShape5(cfg, group3) { var shapeType = this.shapeType; var style = this.getShapeStyle(cfg); - var shape = group2.addShape(shapeType, { + var shape = group3.addShape(shapeType, { attrs: style, draggable: true, name: "combo-shape" @@ -101160,6 +108375,7 @@ var singleComboDef = __assign(__assign({}, shapeBase), singleCombo); shape_default4.registerCombo("single-combo", singleComboDef); // node_modules/@antv/g6-core/es/element/combos/circle.js +var import_util507 = __toModule(require_lib()); shape_default4.registerCombo("circle", { options: { size: [global_default.defaultCombo.size[0], global_default.defaultCombo.size[0]], @@ -101182,11 +108398,11 @@ shape_default4.registerCombo("circle", { }, shapeType: "circle", labelPosition: "top", - drawShape: function drawShape6(cfg, group2) { + drawShape: function drawShape6(cfg, group3) { var style = this.getShapeStyle(cfg); delete style.height; delete style.width; - var keyShape = group2.addShape("circle", { + var keyShape = group3.addShape("circle", { attrs: style, className: "circle-combo", name: "circle-combo", @@ -101197,21 +108413,21 @@ shape_default4.registerCombo("circle", { getShapeStyle: function getShapeStyle3(cfg) { var defaultStyle = this.options.style; var padding3 = cfg.padding || this.options.padding; - if (is_array_default(padding3)) + if ((0, import_util507.isArray)(padding3)) padding3 = padding3[0]; var strokeStyle = { stroke: cfg.color }; - var style = mix({}, defaultStyle, strokeStyle, cfg.style); + var style = (0, import_util507.mix)({}, defaultStyle, strokeStyle, cfg.style); var r4; if (cfg.fixSize) { - r4 = is_number_default(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0]; + r4 = (0, import_util507.isNumber)(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0]; } else { - var size2 = this.getSize(cfg); - if (!is_number_default(style.r) || isNaN(style.r)) - r4 = size2[0] / 2 || global_default.defaultCombo.style.r; + var size14 = this.getSize(cfg); + if (!(0, import_util507.isNumber)(style.r) || isNaN(style.r)) + r4 = size14[0] / 2 || global_default.defaultCombo.style.r; else - r4 = Math.max(style.r, size2[0] / 2) || size2[0] / 2; + r4 = Math.max(style.r, size14[0] / 2) || size14[0] / 2; } style.r = r4 + padding3; var styles = __assign({ @@ -101228,16 +108444,16 @@ shape_default4.registerCombo("circle", { return styles; }, update: function update3(cfg, item) { - var size2 = this.getSize(cfg); + var size14 = this.getSize(cfg); var padding3 = cfg.padding || this.options.padding; - if (is_array_default(padding3)) + if ((0, import_util507.isArray)(padding3)) padding3 = padding3[0]; - var cfgStyle = clone_default(cfg.style); + var cfgStyle = (0, import_util507.clone)(cfg.style); var r4; if (cfg.fixSize) { - r4 = is_number_default(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0]; + r4 = (0, import_util507.isNumber)(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0]; } else { - r4 = Math.max(cfgStyle.r, size2[0] / 2) || size2[0] / 2; + r4 = Math.max(cfgStyle.r, size14[0] / 2) || size14[0] / 2; } cfgStyle.r = r4 + padding3; var itemCacheSize = item.get("sizeCache"); @@ -101248,7 +108464,7 @@ shape_default4.registerCombo("circle", { stroke: cfg.color }; var keyShape = item.get("keyShape"); - var style = mix({}, keyShape.attr(), strokeStyle, cfgStyle); + var style = (0, import_util507.mix)({}, keyShape.attr(), strokeStyle, cfgStyle); if (cfg.style) cfg.style.r = r4; else { @@ -101261,6 +108477,7 @@ shape_default4.registerCombo("circle", { }, "single-combo"); // node_modules/@antv/g6-core/es/element/combos/rect.js +var import_util508 = __toModule(require_lib()); shape_default4.registerCombo("rect", { options: { size: [40, 5], @@ -101275,7 +108492,8 @@ shape_default4.registerCombo("rect", { labelCfg: { style: { fill: global_default.comboLabel.style.fill, - fontSize: global_default.comboLabel.style.fontSize + fontSize: global_default.comboLabel.style.fontSize, + fontFamily: global_default.windowFontFamily } }, anchorPoints: [[0, 0.5], [1, 0.5]], @@ -101283,9 +108501,9 @@ shape_default4.registerCombo("rect", { }, shapeType: "rect", labelPosition: "top", - drawShape: function drawShape7(cfg, group2) { + drawShape: function drawShape7(cfg, group3) { var style = this.getShapeStyle(cfg); - var keyShape = group2.addShape("rect", { + var keyShape = group3.addShape("rect", { attrs: style, className: "rect-combo", name: "rect-combo", @@ -101297,13 +108515,13 @@ shape_default4.registerCombo("rect", { var labelPosition = labelCfg.position || this.labelPosition; var cfgStyle = cfg.style; var padding3 = cfg.padding || this.options.padding; - if (is_number_default(padding3)) + if ((0, import_util508.isNumber)(padding3)) padding3 = [padding3, padding3, padding3, padding3]; var refX = labelCfg.refX, refY = labelCfg.refY; - if (is_nil_default(refX)) { + if ((0, import_util508.isNil)(refX)) { refX = this.refX; } - if (is_nil_default(refY)) { + if ((0, import_util508.isNil)(refY)) { refY = this.refY; } var leftDis = cfgStyle.width / 2 + padding3[3]; @@ -101355,18 +108573,18 @@ shape_default4.registerCombo("rect", { getShapeStyle: function getShapeStyle4(cfg) { var defaultStyle = this.options.style; var padding3 = cfg.padding || this.options.padding; - if (is_number_default(padding3)) + if ((0, import_util508.isNumber)(padding3)) padding3 = [padding3, padding3, padding3, padding3]; var strokeStyle = { stroke: cfg.color }; - var style = mix({}, defaultStyle, strokeStyle, cfg.style); - var size2 = this.getSize(cfg); + var style = (0, import_util508.mix)({}, defaultStyle, strokeStyle, cfg.style); + var size14 = this.getSize(cfg); var width2; var height; var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize; if (fixSize) { - if (is_number_default(fixSize)) { + if ((0, import_util508.isNumber)(fixSize)) { width2 = fixSize; height = fixSize; } else { @@ -101374,14 +108592,14 @@ shape_default4.registerCombo("rect", { height = fixSize[1]; } } else { - if (!is_number_default(style.width) || isNaN(style.width)) - width2 = size2[0] || global_default.defaultCombo.style.width; + if (!(0, import_util508.isNumber)(style.width) || isNaN(style.width)) + width2 = size14[0] || global_default.defaultCombo.style.width; else - width2 = Math.max(style.width, size2[0]) || size2[0]; - if (!is_number_default(style.height) || isNaN(style.height)) - height = size2[1] || global_default.defaultCombo.style.height; + width2 = Math.max(style.width, size14[0]) || size14[0]; + if (!(0, import_util508.isNumber)(style.height) || isNaN(style.height)) + height = size14[1] || global_default.defaultCombo.style.height; else - height = Math.max(style.height, size2[1]) || size2[1]; + height = Math.max(style.height, size14[1]) || size14[1]; } var x6 = -width2 / 2 - padding3[3]; var y5 = -height / 2 - padding3[0]; @@ -101403,15 +108621,15 @@ shape_default4.registerCombo("rect", { return styles; }, update: function update4(cfg, item) { - var size2 = this.getSize(cfg); + var size14 = this.getSize(cfg); var padding3 = cfg.padding || this.options.padding; - if (is_number_default(padding3)) + if ((0, import_util508.isNumber)(padding3)) padding3 = [padding3, padding3, padding3, padding3]; - var cfgStyle = clone_default(cfg.style); + var cfgStyle = (0, import_util508.clone)(cfg.style); var width2, height; var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize; if (fixSize) { - if (is_number_default(fixSize)) { + if ((0, import_util508.isNumber)(fixSize)) { width2 = fixSize; height = fixSize; } else { @@ -101419,8 +108637,8 @@ shape_default4.registerCombo("rect", { height = fixSize[1]; } } else { - width2 = Math.max(cfgStyle.width, size2[0]) || size2[0]; - height = Math.max(cfgStyle.height, size2[1]) || size2[1]; + width2 = Math.max(cfgStyle.width, size14[0]) || size14[0]; + height = Math.max(cfgStyle.height, size14[1]) || size14[1]; } cfgStyle.width = width2 + padding3[1] + padding3[3]; cfgStyle.height = height + padding3[0] + padding3[2]; @@ -101435,7 +108653,7 @@ shape_default4.registerCombo("rect", { stroke: cfg.color }; var keyShape = item.get("keyShape"); - var style = mix({}, keyShape.attr(), strokeStyle, cfgStyle); + var style = (0, import_util508.mix)({}, keyShape.attr(), strokeStyle, cfgStyle); if (cfg.style) { cfg.style.width = width2; cfg.style.height = height; @@ -101463,6 +108681,7 @@ shape_default4.registerCombo("rect", { }, "single-combo"); // node_modules/@antv/g6-core/es/element/nodes/simple-circle.js +var import_util509 = __toModule(require_lib()); shape_default4.registerNode("simple-circle", { options: { size: global_default.defaultNode.size, @@ -101476,30 +108695,35 @@ shape_default4.registerNode("simple-circle", { labelCfg: { style: { fill: global_default.nodeLabel.style.fill, - fontSize: global_default.nodeLabel.style.fontSize + fontSize: global_default.nodeLabel.style.fontSize, + fontFamily: global_default.windowFontFamily } }, stateStyles: __assign({}, global_default.nodeStateStyles) }, shapeType: "simple-circle", labelPosition: "center", - drawShape: function drawShape8(cfg, group2) { + shapeMap: {}, + drawShape: function drawShape8(cfg, group3) { var style = this.getShapeStyle(cfg); - var keyShape = group2.addShape("circle", { + var name = "".concat(this.type, "-keyShape"); + var keyShape = group3.addShape("circle", { attrs: style, - className: this.type + "-keyShape", + className: "".concat(this.type, "-keyShape"), + name, draggable: true }); + group3["shapeMap"][name] = keyShape; return keyShape; }, getShapeStyle: function getShapeStyle5(cfg) { - var defaultStyle = this.getOptions(cfg).style; + var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style; var strokeStyle = { stroke: cfg.color }; - var style = deep_mix_default({}, defaultStyle, strokeStyle); - var size2 = this.getSize(cfg); - var r4 = size2[0] / 2; + var style = (0, import_util509.deepMix)({}, defaultStyle, strokeStyle); + var size14 = this.getSize(cfg); + var r4 = size14[0] / 2; var styles = __assign({ x: 0, y: 0, @@ -101507,19 +108731,20 @@ shape_default4.registerNode("simple-circle", { }, style); return styles; }, - update: function update5(cfg, item) { - var size2 = this.getSize(cfg); + update: function update5(cfg, item, updateType) { + var size14 = this.getSize(cfg); var strokeStyle = { stroke: cfg.color, - r: size2[0] / 2 + r: size14[0] / 2 }; var keyShape = item.get("keyShape"); - var style = deep_mix_default({}, keyShape.attr(), strokeStyle, cfg.style); - this.updateShape(cfg, item, style, true); + var style = (0, import_util509.deepMix)({}, keyShape.attr(), strokeStyle, cfg.style); + this.updateShape(cfg, item, style, true, updateType); } }, "single-node"); // node_modules/@antv/g6-core/es/element/nodes/simple-rect.js +var import_util510 = __toModule(require_lib()); shape_default4.registerNode("simple-rect", { options: { size: [100, 30], @@ -101532,7 +108757,8 @@ shape_default4.registerNode("simple-rect", { labelCfg: { style: { fill: global_default.nodeLabel.style.fill, - fontSize: global_default.nodeLabel.style.fontSize + fontSize: global_default.nodeLabel.style.fontSize, + fontFamily: global_default.windowFontFamily } }, anchorPoints: [[0, 0.5], [1, 0.5]], @@ -101540,25 +108766,25 @@ shape_default4.registerNode("simple-rect", { }, shapeType: "simple-rect", labelPosition: "center", - drawShape: function drawShape9(cfg, group2) { + drawShape: function drawShape9(cfg, group3) { var style = this.getShapeStyle(cfg); - var keyShape = group2.addShape("rect", { + var keyShape = group3.addShape("rect", { attrs: style, - className: this.type + "-keyShape", - name: this.type + "-keyShape", + className: "".concat(this.type, "-keyShape"), + name: "".concat(this.type, "-keyShape"), draggable: true }); return keyShape; }, getShapeStyle: function getShapeStyle6(cfg) { - var defaultStyle = this.getOptions(cfg).style; + var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style; var strokeStyle = { stroke: cfg.color }; - var style = mix({}, defaultStyle, strokeStyle); - var size2 = this.getSize(cfg); - var width2 = style.width || size2[0]; - var height = style.height || size2[1]; + var style = (0, import_util510.mix)({}, defaultStyle, strokeStyle); + var size14 = this.getSize(cfg); + var width2 = style.width || size14[0]; + var height = style.height || size14[1]; var styles = __assign({ x: -width2 / 2, y: -height / 2, @@ -101567,25 +108793,25 @@ shape_default4.registerNode("simple-rect", { }, style); return styles; }, - update: function update6(cfg, item) { - var group2 = item.getContainer(); - var defaultStyle = this.getOptions({}).style; - var size2 = this.getSize(cfg); + update: function update6(cfg, item, updateType) { + var group3 = item.getContainer(); + var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style; + var size14 = this.getSize(cfg); var keyShape = item.get("keyShape"); if (!cfg.size) { - size2[0] = keyShape.attr("width") || defaultStyle.width; - size2[1] = keyShape.attr("height") || defaultStyle.height; + size14[0] = keyShape.attr("width") || defaultStyle.width; + size14[1] = keyShape.attr("height") || defaultStyle.height; } var strokeStyle = { stroke: cfg.color, - x: -size2[0] / 2, - y: -size2[1] / 2, - width: size2[0], - height: size2[1] + x: -size14[0] / 2, + y: -size14[1] / 2, + width: size14[0], + height: size14[1] }; - var style = mix({}, defaultStyle, keyShape.attr(), strokeStyle); - style = mix(style, cfg.style); - this.updateShape(cfg, item, style, false); + var style = (0, import_util510.mix)({}, defaultStyle, keyShape.attr(), strokeStyle); + style = (0, import_util510.mix)(style, cfg.style); + this.updateShape(cfg, item, style, false, updateType); } }, "single-node"); @@ -101594,6 +108820,11 @@ shape_default4.registerNode("image", { options: { img: "https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*eD7nT6tmYgAAAAAAAAAAAABkARQnAQ", size: 200, + labelCfg: { + style: { + fontFamily: global_default.windowFontFamily + } + }, clipCfg: { show: false, type: "circle", @@ -101610,21 +108841,21 @@ shape_default4.registerNode("image", { }, shapeType: "image", labelPosition: "bottom", - drawShape: function drawShape10(cfg, group2) { + drawShape: function drawShape10(cfg, group3) { var shapeType = this.shapeType; var style = this.getShapeStyle(cfg); delete style.fill; - var shape = group2.addShape(shapeType, { + var shape = group3.addShape(shapeType, { attrs: style, - className: this.type + "-keyShape", - name: this.type + "-keyShape", + className: "".concat(this.type, "-keyShape"), + name: "".concat(this.type, "-keyShape"), draggable: true }); this.drawClip(cfg, shape); return shape; }, drawClip: function drawClip(cfg, shape) { - var clip = this.getOptions(cfg).clipCfg; + var clip = (this.mergeStyle || this.getOptions(cfg)).clipCfg; if (!clip.show) { return; } @@ -101682,14 +108913,13 @@ shape_default4.registerNode("image", { } }, getShapeStyle: function getShapeStyle7(cfg) { - var defaultStyle = this.getOptions(cfg).style; - var size2 = this.getSize(cfg); - var img = this.getOptions(cfg).img; - var width2 = size2[0]; - var height = size2[1]; + var _a6 = this.mergeStyle || this.getOptions(cfg), defaultStyle = _a6.style, img = _a6.img; + var size14 = this.getSize(cfg); + var width2 = size14[0]; + var height = size14[1]; if (defaultStyle) { - width2 = defaultStyle.width || size2[0]; - height = defaultStyle.height || size2[1]; + width2 = defaultStyle.width || size14[0]; + height = defaultStyle.height || size14[1]; } var style = __assign({ x: -width2 / 2, @@ -101701,13 +108931,13 @@ shape_default4.registerNode("image", { return style; }, updateShapeStyle: function updateShapeStyle3(cfg, item) { - var group2 = item.getContainer(); - var shapeClassName = this.itemType + "-shape"; - var shape = group2.find(function(element) { + var group3 = item.getContainer(); + var shapeClassName = "".concat(this.itemType, "-shape"); + var shape = group3["shapeMap"][shapeClassName] || group3.find(function(element) { return element.get("className") === shapeClassName; }) || item.getKeyShape(); var shapeStyle = this.getShapeStyle(cfg); - if (shape) { + if (shape && !shape.destroyed) { shape.attr(shapeStyle); } } @@ -101726,7 +108956,7 @@ var arrow_default2 = { d3 = 0; } var begin = d3 * 2; - var path = "M " + begin + ",0 L " + (begin + length5) + ",-" + width2 / 2 + " L " + (begin + length5) + "," + width2 / 2 + " Z"; + var path = "M ".concat(begin, ",0 L ").concat(begin + length5, ",-").concat(width2 / 2, " L ").concat(begin + length5, ",").concat(width2 / 2, " Z"); return path; }, vee: function vee(width2, length5, d3) { @@ -101740,7 +108970,7 @@ var arrow_default2 = { d3 = 0; } var begin = d3 * 2; - var path = "M " + begin + ",0 L " + (begin + length5) + ",-" + width2 / 2 + "\n L " + (begin + 2 * length5 / 3) + ",0 L " + (begin + length5) + "," + width2 / 2 + " Z"; + var path = "M ".concat(begin, ",0 L ").concat(begin + length5, ",-").concat(width2 / 2, "\n L ").concat(begin + 2 * length5 / 3, ",0 L ").concat(begin + length5, ",").concat(width2 / 2, " Z"); return path; }, circle: function circle2(r4, d3) { @@ -101751,7 +108981,7 @@ var arrow_default2 = { d3 = 0; } var begin = d3 * 2; - var path = "M " + begin + ", 0\n a " + r4 + "," + r4 + " 0 1,0 " + r4 * 2 + ",0\n a " + r4 + "," + r4 + " 0 1,0 " + -r4 * 2 + ",0"; + var path = "M ".concat(begin, ", 0\n a ").concat(r4, ",").concat(r4, " 0 1,0 ").concat(r4 * 2, ",0\n a ").concat(r4, ",").concat(r4, " 0 1,0 ").concat(-r4 * 2, ",0"); return path; }, rect: function rect2(width2, length5, d3) { @@ -101765,7 +108995,7 @@ var arrow_default2 = { d3 = 0; } var begin = d3 * 2; - var path = "M " + begin + "," + -width2 / 2 + " \n L " + (begin + length5) + "," + -width2 / 2 + " \n L " + (begin + length5) + "," + width2 / 2 + " \n L " + begin + "," + width2 / 2 + " Z"; + var path = "M ".concat(begin, ",").concat(-width2 / 2, " \n L ").concat(begin + length5, ",").concat(-width2 / 2, " \n L ").concat(begin + length5, ",").concat(width2 / 2, " \n L ").concat(begin, ",").concat(width2 / 2, " Z"); return path; }, diamond: function diamond2(width2, length5, d3) { @@ -101779,7 +109009,7 @@ var arrow_default2 = { d3 = 0; } var begin = d3 * 2; - var path = "M " + begin + ",0 \n L " + (begin + length5 / 2) + "," + -width2 / 2 + " \n L " + (begin + length5) + ",0 \n L " + (begin + length5 / 2) + "," + width2 / 2 + " Z"; + var path = "M ".concat(begin, ",0 \n L ").concat(begin + length5 / 2, ",").concat(-width2 / 2, " \n L ").concat(begin + length5, ",0 \n L ").concat(begin + length5 / 2, ",").concat(width2 / 2, " Z"); return path; }, triangleRect: function triangleRect(tWidth, tLength, rWidth, rLength, gap, d3) { @@ -101803,7 +109033,7 @@ var arrow_default2 = { } var begin = d3 * 2; var rectBegin = begin + tLength + gap; - var path = "M " + begin + ",0 L " + (begin + tLength) + ",-" + tWidth / 2 + " L " + (begin + tLength) + "," + tWidth / 2 + " Z\n M " + rectBegin + ", -" + rWidth / 2 + "\n L " + (rectBegin + rLength) + " -" + rWidth / 2 + "\n L " + (rectBegin + rLength) + " " + rWidth / 2 + "\n L " + rectBegin + " " + rWidth / 2 + "\n Z"; + var path = "M ".concat(begin, ",0 L ").concat(begin + tLength, ",-").concat(tWidth / 2, " L ").concat(begin + tLength, ",").concat(tWidth / 2, " Z\n M ").concat(rectBegin, ", -").concat(rWidth / 2, "\n L ").concat(rectBegin + rLength, " -").concat(rWidth / 2, "\n L ").concat(rectBegin + rLength, " ").concat(rWidth / 2, "\n L ").concat(rectBegin, " ").concat(rWidth / 2, "\n Z"); return path; } }; @@ -101831,15 +109061,23 @@ var marker_default3 = { // node_modules/@antv/g6-core/es/element/index.js var element_default3 = shape_default4; +// node_modules/@antv/g6-core/es/util/color.js +var color_exports = {}; +__export(color_exports, { + defaultSubjectColors: () => defaultSubjectColors +}); +var defaultSubjectColors = ["#5F95FF", "#61DDAA", "#65789B", "#F6BD16", "#7262FD", "#78D3F8", "#9661BC", "#F6903D", "#008685", "#F08BB4"]; + // node_modules/@antv/g6-core/es/util/index.js var transform11 = ext_exports.transform; -var Util2 = __assign(__assign(__assign(__assign(__assign({}, base_exports), graphic_exports), path_exports2), math_exports), { +var Util2 = __assign(__assign(__assign(__assign(__assign(__assign({}, base_exports), graphic_exports), path_exports2), math_exports), color_exports), { transform: transform11, mat3: mat3_exports }); var util_default = Util2; // node_modules/@antv/g6-core/es/graph/controller/layout.js +var import_util511 = __toModule(require_lib()); var LayoutController = function() { function LayoutController3(graph) { this.graph = graph; @@ -102026,17 +109264,18 @@ var LayoutController = function() { } var nodesFilter; var edegsFilter; - if (is_function_default(cfg === null || cfg === void 0 ? void 0 : cfg.nodesFilter)) { + if ((0, import_util511.isFunction)(cfg === null || cfg === void 0 ? void 0 : cfg.nodesFilter)) { nodesFilter = cfg.nodesFilter; } else { nodesFilter = function nodesFilter2() { return true; }; } - if (is_function_default(cfg === null || cfg === void 0 ? void 0 : cfg.edgesFilter)) { + var fNodes = nodes.filter(nodesFilter); + if ((0, import_util511.isFunction)(cfg === null || cfg === void 0 ? void 0 : cfg.edgesFilter)) { edegsFilter = cfg.edgesFilter; } else { - var nodesMap_1 = nodes.reduce(function(acc, cur) { + var nodesMap_1 = fNodes.reduce(function(acc, cur) { acc[cur.id] = true; return acc; }, {}); @@ -102045,13 +109284,13 @@ var LayoutController = function() { }; } return __assign({ - nodes: nodes.filter(nodesFilter), + nodes: fNodes, edges: edges.filter(edegsFilter) }, rest); }; LayoutController3.prototype.getLayoutBBox = function(nodes) { var graph = this.graph; - var graphGroupNodes = group_by_default(graph.getNodes(), function(n3) { + var graphGroupNodes = (0, import_util511.groupBy)(graph.getNodes(), function(n3) { return n3.getModel().layoutOrder; }); var layoutNodes2 = Object.values(graphGroupNodes).map(function(value2) { @@ -102059,7 +109298,7 @@ var LayoutController = function() { bbox.size = [bbox.width, bbox.height]; return bbox; }); - var groupNodes = Object.values(group_by_default(nodes, "layoutOrder")); + var groupNodes = Object.values((0, import_util511.groupBy)(nodes, "layoutOrder")); return { groupNodes, layoutNodes: layoutNodes2 @@ -102112,11 +109351,11 @@ var LayoutController = function() { var allHavePos = true; for (var i4 = 0; i4 < nodeLength; i4++) { var node = nodes[i4]; - if (isNaN2(node.x)) { + if (isNaN2(+node.x)) { allHavePos = false; node.x = i4 % horiNum * horiGap + beginX; } - if (isNaN2(node.y)) { + if (isNaN2(+node.y)) { allHavePos = false; node.y = Math.floor(i4 / horiNum) * vertiGap + beginY; } @@ -102172,6 +109411,18 @@ var G6Event; G6Event2["TOUCHSTART"] = "touchstart"; G6Event2["TOUCHMOVE"] = "touchmove"; G6Event2["TOUCHEND"] = "touchend"; + G6Event2["CANVAS_TOUCHSTART"] = "canvas:touchstart"; + G6Event2["CANVAS_TOUCHMOVE"] = "canvas:touchmove"; + G6Event2["CANVAS_TOUCHEND"] = "canvas:touchend"; + G6Event2["NODE_TOUCHSTART"] = "node:touchstart"; + G6Event2["NODE_TOUCHMOVE"] = "node:touchmove"; + G6Event2["NODE_TOUCHEND"] = "node:touchend"; + G6Event2["COMBO_TOUCHSTART"] = "combo:touchstart"; + G6Event2["COMBO_TOUCHMOVE"] = "combo:touchmove"; + G6Event2["COMBO_TOUCHEND"] = "combo:touchend"; + G6Event2["EDGE_TOUCHSTART"] = "edge:touchstart"; + G6Event2["EDGE_TOUCHMOVE"] = "edge:touchmove"; + G6Event2["EDGE_TOUCHEND"] = "edge:touchend"; G6Event2["NODE_CONTEXTMENU"] = "node:contextmenu"; G6Event2["NODE_CLICK"] = "node:click"; G6Event2["NODE_DBLCLICK"] = "node:dblclick"; @@ -102189,6 +109440,10 @@ var G6Event; G6Event2["NODE_DRAGSTART"] = "node:dragstart"; G6Event2["NODE_DRAG"] = "node:drag"; G6Event2["NODE_DRAGEND"] = "node:dragend"; + G6Event2["NODE_TAP"] = "node:tap"; + G6Event2["NODE_PANSTART"] = "node:panstart"; + G6Event2["NODE_PANMOVE"] = "node:panmove"; + G6Event2["NODE_PANEND"] = "node:panend"; G6Event2["COMBO_CONTEXTMENU"] = "combo:contextmenu"; G6Event2["COMBO_CLICK"] = "combo:click"; G6Event2["COMBO_DBLCLICK"] = "combo:dblclick"; @@ -102206,6 +109461,10 @@ var G6Event; G6Event2["COMBO_DRAGSTART"] = "combo:dragstart"; G6Event2["COMBO_DRAG"] = "combo:drag"; G6Event2["COMBO_DRAGEND"] = "combo:dragend"; + G6Event2["COMBO_TAP"] = "combo:tap"; + G6Event2["COMBO_PANSTART"] = "combo:panstart"; + G6Event2["COMBO_PANMOVE"] = "combo:panmove"; + G6Event2["COMBO_PANEND"] = "combo:panend"; G6Event2["EDGE_CONTEXTMENU"] = "edge:contextmenu"; G6Event2["EDGE_CLICK"] = "edge:click"; G6Event2["EDGE_DBLCLICK"] = "edge:dblclick"; @@ -102236,6 +109495,10 @@ var G6Event; G6Event2["CANVAS_DRAGSTART"] = "canvas:dragstart"; G6Event2["CANVAS_DRAG"] = "canvas:drag"; G6Event2["CANVAS_DRAGEND"] = "canvas:dragend"; + G6Event2["CANVAS_TAP"] = "canvas:tap"; + G6Event2["CANVAS_PANSTART"] = "canvas:panstart"; + G6Event2["CANVAS_PANMOVE"] = "canvas:panmove"; + G6Event2["CANVAS_PANEND"] = "canvas:panend"; G6Event2["BEFORERENDER"] = "beforerender"; G6Event2["AFTERRENDER"] = "afterrender"; G6Event2["BEFOREADDITEM"] = "beforeadditem"; @@ -102276,6 +109539,12 @@ var G6Event; G6Event2["VIEWPORTCHANGE"] = "viewportchange"; G6Event2["DRAGNODEEND"] = "dragnodeend"; G6Event2["STACKCHANGE"] = "stackchange"; + G6Event2["TAP"] = "tap"; + G6Event2["PINCHSTART"] = "pinchstart"; + G6Event2["PINCHMOVE"] = "pinchmove"; + G6Event2["PANSTART"] = "panstart"; + G6Event2["PANMOVE"] = "panmove"; + G6Event2["PANEND"] = "panend"; })(G6Event || (G6Event = {})); // node_modules/@antv/g6-core/es/index.js @@ -102284,7 +109553,7 @@ var registerEdge = element_default3.registerEdge; var registerCombo = element_default3.registerCombo; var registerBehavior = behavior_default2.registerBehavior; var BaseGlobal = global_default; -var es_default2 = { +var es_default3 = { version: global_default.version, AbstractGraph: graph_default, BaseGlobal, @@ -102304,96 +109573,22 @@ var es_default2 = { AbstractEvent: event_default2 }; -// node_modules/@antv/g6-pc/node_modules/@antv/matrix-util/esm/ext.js -var ext_exports3 = {}; -__export(ext_exports3, { - angleTo: () => angleTo2, - direction: () => direction2, - leftRotate: () => leftRotate2, - leftScale: () => leftScale2, - leftTranslate: () => leftTranslate2, - transform: () => transform12, - vertical: () => vertical2 -}); -function leftTranslate2(out, a4, v3) { - var transMat = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - mat3_exports.fromTranslation(transMat, v3); - return mat3_exports.multiply(out, transMat, a4); -} -function leftRotate2(out, a4, rad) { - var rotateMat = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - mat3_exports.fromRotation(rotateMat, rad); - return mat3_exports.multiply(out, rotateMat, a4); -} -function leftScale2(out, a4, v3) { - var scaleMat = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - mat3_exports.fromScaling(scaleMat, v3); - return mat3_exports.multiply(out, scaleMat, a4); -} -function leftMultiply2(out, a4, a1) { - return mat3_exports.multiply(out, a1, a4); -} -function transform12(m4, actions) { - var matrix = m4 ? [].concat(m4) : [1, 0, 0, 0, 1, 0, 0, 0, 1]; - for (var i4 = 0, len5 = actions.length; i4 < len5; i4++) { - var action = actions[i4]; - switch (action[0]) { - case "t": - leftTranslate2(matrix, matrix, [action[1], action[2]]); - break; - case "s": - leftScale2(matrix, matrix, [action[1], action[2]]); - break; - case "r": - leftRotate2(matrix, matrix, action[1]); - break; - case "m": - leftMultiply2(matrix, matrix, action[1]); - break; - default: - break; - } - } - return matrix; -} -function direction2(v1, v22) { - return v1[0] * v22[1] - v22[0] * v1[1]; -} -function angleTo2(v1, v22, direct) { - var ang = vec2_exports.angle(v1, v22); - var angleLargeThanPI = direction2(v1, v22) >= 0; - if (direct) { - if (angleLargeThanPI) { - return Math.PI * 2 - ang; - } - return ang; - } - if (angleLargeThanPI) { - return ang; - } - return Math.PI * 2 - ang; -} -function vertical2(out, v3, flag) { - if (flag) { - out[0] = v3[1]; - out[1] = -1 * v3[0]; - } else { - out[0] = -1 * v3[1]; - out[1] = v3[0]; - } - return out; -} +// node_modules/@antv/g6-pc/es/index.js +var AlgorithmAsync = __toModule(require_asyncIndex()); + +// node_modules/@antv/g6-pc/es/graph/graph.js +var import_util552 = __toModule(require_lib()); // node_modules/@antv/g6-pc/es/util/color.js -var color_exports = {}; -__export(color_exports, { +var color_exports2 = {}; +__export(color_exports2, { getColorSetsBySubjectColors: () => getColorSetsBySubjectColors, getColorsWithSubjectColor: () => getColorsWithSubjectColor, mixColor: () => mixColor }); var import_color6 = __toModule(require_color()); -// node_modules/@ant-design/colors/dist/index.esm.js +// node_modules/@antv/g6-pc/node_modules/@ant-design/colors/dist/index.esm.js var import_tinycolor2 = __toModule(require_tinycolor()); var hueStep = 2; var saturationStep = 0.16; @@ -102715,7 +109910,7 @@ var backColor2 = "rgb(255, 255, 255)"; var textColor2 = "rgb(0, 0, 0)"; var colorSet2 = getColorsWithSubjectColor(subjectColor2, backColor2); var global_default2 = { - version: "0.2.4", + version: "0.5.3", rootContainerClassName: "root-container", nodeContainerClassName: "node-container", edgeContainerClassName: "edge-container", @@ -102927,6 +110122,7 @@ var global_default2 = { }; // node_modules/@antv/g6-pc/es/graph/controller/event.js +var import_util513 = __toModule(require_lib()); var cloneEvent3 = util_default.cloneEvent; var isViewportChanged3 = util_default.isViewportChanged; var EventController3 = function(_super) { @@ -102945,9 +110141,9 @@ var EventController3 = function(_super) { var _a6 = this, graph = _a6.graph, _b = _a6.extendEvents, extendEvents = _b === void 0 ? [] : _b; var canvas = graph.get("canvas"); var el = canvas.get("el"); - var canvasHandler = wrap_behavior_default(this, "onCanvasEvents"); - var originHandler = wrap_behavior_default(this, "onExtendEvents"); - var wheelHandler = wrap_behavior_default(this, "onWheelEvent"); + var canvasHandler = (0, import_util513.wrapBehavior)(this, "onCanvasEvents"); + var originHandler = (0, import_util513.wrapBehavior)(this, "onExtendEvents"); + var wheelHandler = (0, import_util513.wrapBehavior)(this, "onWheelEvent"); canvas.off("*").on("*", canvasHandler); this.canvasHandler = canvasHandler; extendEvents.push(addEventListener(el, "DOMMouseScroll", wheelHandler)); @@ -102975,8 +110171,8 @@ var EventController3 = function(_super) { x: evt.canvasX, y: evt.canvasY }; - var group2 = graph.get("group"); - var matrix = group2.getMatrix(); + var group3 = graph.get("group"); + var matrix = group3.getMatrix(); if (!matrix) { matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; } @@ -102987,13 +110183,13 @@ var EventController3 = function(_super) { evt.y = point2.y; evt.currentTarget = graph; if (target === canvas) { - if (eventType === "mousemove") { + if (eventType === "mousemove" || eventType === "mouseleave") { this.handleMouseMove(evt, "canvas"); } evt.target = canvas; evt.item = null; graph.emit(eventType, evt); - graph.emit("canvas:" + eventType, evt); + graph.emit("canvas:".concat(eventType), evt); return; } var itemShape = EventController4.getItemRoot(target); @@ -103015,7 +110211,7 @@ var EventController3 = function(_super) { } graph.emit(eventType, evt); if (evt.name && !evt.name.includes(":")) - graph.emit(type2 + ":" + eventType, evt); + graph.emit("".concat(type2, ":").concat(eventType), evt); else graph.emit(evt.name, evt); if (eventType === "dragstart") { @@ -103032,7 +110228,7 @@ var EventController3 = function(_super) { this.graph.emit(evt.type, evt); }; EventController4.prototype.onWheelEvent = function(evt) { - if (is_nil_default(evt.wheelDelta)) { + if ((0, import_util513.isNil)(evt.wheelDelta)) { evt.wheelDelta = -evt.detail; } this.graph.emit("wheel", evt); @@ -103060,13 +110256,13 @@ var EventController3 = function(_super) { }; EventController4.prototype.emitCustomEvent = function(itemType, eventType, evt) { evt.type = eventType; - this.graph.emit(itemType + ":" + eventType, evt); + this.graph.emit("".concat(itemType, ":").concat(eventType), evt); }; EventController4.prototype.destroy = function() { var _a6 = this, graph = _a6.graph, canvasHandler = _a6.canvasHandler, extendEvents = _a6.extendEvents; var canvas = graph.get("canvas"); canvas.off("*", canvasHandler); - each_default(extendEvents, function(event) { + (0, import_util513.each)(extendEvents, function(event) { event.remove(); }); this.dragging = false; @@ -103124,12 +110320,12 @@ var Base3 = class { }; // node_modules/@antv/layout/es/util/string.js -var isString = (val) => typeof val === "string"; -var cacheStringFunction = (fn2) => { +var isString50 = (val) => typeof val === "string"; +var cacheStringFunction = (fn) => { const cache3 = Object.create(null); return (str8) => { const hit = cache3[str8]; - return hit || (cache3[str8] = fn2(str8)); + return hit || (cache3[str8] = fn(str8)); }; }; var camelizeRE = /-(\w)/g; @@ -103138,15 +110334,15 @@ var camelize = cacheStringFunction((str8) => { }); // node_modules/@antv/layout/es/util/array.js -var isArray2 = Array.isArray; +var isArray82 = Array.isArray; // node_modules/@antv/layout/es/util/number.js -var isNumber3 = (val) => typeof val === "number"; +var isNumber45 = (val) => typeof val === "number"; var isNaN4 = (num) => Number.isNaN(Number(num)); // node_modules/@antv/layout/es/util/object.js -var isObject2 = (val) => val !== null && typeof val === "object"; -var clone9 = (target) => { +var isObject26 = (val) => val !== null && typeof val === "object"; +var clone31 = (target) => { if (target === null) { return target; } @@ -103158,12 +110354,12 @@ var clone9 = (target) => { target.forEach((v3) => { cp.push(v3); }); - return cp.map((n3) => clone9(n3)); + return cp.map((n3) => clone31(n3)); } if (typeof target === "object" && target !== {}) { const cp = Object.assign({}, target); Object.keys(cp).forEach((k4) => { - cp[k4] = clone9(cp[k4]); + cp[k4] = clone31(cp[k4]); }); return cp; } @@ -103173,7 +110369,7 @@ var clone9 = (target) => { // node_modules/@antv/layout/es/util/math.js var getEdgeTerminal = (edge2, type2) => { const terminal = edge2[type2]; - if (isObject2(terminal)) { + if (isObject26(terminal)) { return terminal.cell; } return terminal; @@ -103199,10 +110395,10 @@ var getDegree3 = (n3, nodeIdxMap, edges) => { }; var floydWarshall5 = (adjMatrix3) => { const dist4 = []; - const size2 = adjMatrix3.length; - for (let i4 = 0; i4 < size2; i4 += 1) { + const size14 = adjMatrix3.length; + for (let i4 = 0; i4 < size14; i4 += 1) { dist4[i4] = []; - for (let j4 = 0; j4 < size2; j4 += 1) { + for (let j4 = 0; j4 < size14; j4 += 1) { if (i4 === j4) { dist4[i4][j4] = 0; } else if (adjMatrix3[i4][j4] === 0 || !adjMatrix3[i4][j4]) { @@ -103212,9 +110408,9 @@ var floydWarshall5 = (adjMatrix3) => { } } } - for (let k4 = 0; k4 < size2; k4 += 1) { - for (let i4 = 0; i4 < size2; i4 += 1) { - for (let j4 = 0; j4 < size2; j4 += 1) { + for (let k4 = 0; k4 < size14; k4 += 1) { + for (let i4 = 0; i4 < size14; i4 += 1) { + for (let j4 = 0; j4 < size14; j4 += 1) { if (dist4[i4][j4] > dist4[i4][k4] + dist4[k4][j4]) { dist4[i4][j4] = dist4[i4][k4] + dist4[k4][j4]; } @@ -103262,35 +110458,35 @@ var scaleMatrix3 = (matrix, ratio) => { }); return result; }; -var traverseUp3 = (data3, fn2) => { +var traverseUp3 = (data3, fn) => { if (data3 && data3.children) { for (let i4 = data3.children.length - 1; i4 >= 0; i4--) { - if (!traverseUp3(data3.children[i4], fn2)) + if (!traverseUp3(data3.children[i4], fn)) return; } } - if (!fn2(data3)) { + if (!fn(data3)) { return false; } return true; }; -var traverseTreeUp3 = (data3, fn2) => { - if (typeof fn2 !== "function") { +var traverseTreeUp3 = (data3, fn) => { + if (typeof fn !== "function") { return; } - traverseUp3(data3, fn2); + traverseUp3(data3, fn); }; // node_modules/@antv/layout/es/util/function.js -var isFunction = (val) => typeof val === "function"; +var isFunction41 = (val) => typeof val === "function"; // node_modules/@antv/layout/es/registy/index.js -var map5 = new Map(); +var map21 = new Map(); var registerLayout = (name, layoutOverride) => { - if (map5.get(name)) { + if (map21.get(name)) { console.warn(`The layout with the name ${name} exists already, it will be overridden`); } - if (isObject2(layoutOverride)) { + if (isObject26(layoutOverride)) { class GLayout extends Base3 { constructor(cfg) { super(); @@ -103304,11 +110500,11 @@ var registerLayout = (name, layoutOverride) => { }); } } - map5.set(name, GLayout); + map21.set(name, GLayout); } else { - map5.set(name, layoutOverride); + map21.set(name, layoutOverride); } - return map5.get(name); + return map21.get(name); }; // node_modules/@antv/layout/es/layout/grid.js @@ -103380,12 +110576,12 @@ var GridLayout = class extends Base3 { layoutNodes2.forEach((node, i4) => { nodeIdxMap[node.id] = i4; }); - if (self2.sortBy === "degree" || !isString(self2.sortBy) || layoutNodes2[0][self2.sortBy] === void 0) { + if (self2.sortBy === "degree" || !isString50(self2.sortBy) || layoutNodes2[0][self2.sortBy] === void 0) { self2.sortBy = "degree"; if (isNaN4(nodes[0].degree)) { - const values2 = getDegree3(layoutNodes2.length, nodeIdxMap, edges); + const values4 = getDegree3(layoutNodes2.length, nodeIdxMap, edges); layoutNodes2.forEach((node, i4) => { - node.degree = values2[i4]; + node.degree = values4[i4]; }); } } @@ -103446,21 +110642,21 @@ var GridLayout = class extends Base3 { } let nodew; let nodeh; - if (isArray2(node.size)) { + if (isArray82(node.size)) { nodew = node.size[0]; nodeh = node.size[1]; - } else if (isNumber3(node.size)) { + } else if (isNumber45(node.size)) { nodew = node.size; nodeh = node.size; - } else if (isObject2(node.size)) { + } else if (isObject26(node.size)) { nodew = node.size.width; nodeh = node.size.height; } if (nodew === void 0 || nodeh === void 0) { - if (isArray2(self2.nodeSize)) { + if (isArray82(self2.nodeSize)) { nodew = self2.nodeSize[0]; nodeh = self2.nodeSize[1]; - } else if (isNumber3(self2.nodeSize)) { + } else if (isNumber45(self2.nodeSize)) { nodew = self2.nodeSize; nodeh = self2.nodeSize; } else { @@ -103521,8 +110717,8 @@ var GridLayout = class extends Base3 { if (val == null) { res = Math.min(rows, cols); } else { - const min7 = Math.min(rows, cols); - if (min7 === self2.rows) { + const min13 = Math.min(rows, cols); + if (min13 === self2.rows) { self2.rows = val; } else { self2.cols = val; @@ -103538,8 +110734,8 @@ var GridLayout = class extends Base3 { if (val == null) { res = Math.max(rows, cols); } else { - const max8 = Math.max(rows, cols); - if (max8 === self2.rows) { + const max15 = Math.max(rows, cols); + if (max15 === self2.rows) { self2.rows = val; } else { self2.cols = val; @@ -103648,7 +110844,7 @@ var proccessToFunc = (value2, defaultV) => { func = (d3) => { return defaultV || 1; }; - } else if (isNumber3(value2)) { + } else if (isNumber45(value2)) { func = (d3) => { return value2; }; @@ -103720,9 +110916,9 @@ var GForceLayout = class extends Base3 { const nodeMap = {}; const nodeIdxMap = {}; nodes.forEach((node, i4) => { - if (!isNumber3(node.x)) + if (!isNumber45(node.x)) node.x = Math.random() * self2.width; - if (!isNumber3(node.y)) + if (!isNumber45(node.y)) node.y = Math.random() * self2.height; nodeMap[node.id] = node; nodeIdxMap[node.id] = i4; @@ -103737,9 +110933,9 @@ var GForceLayout = class extends Base3 { if (self2.preventOverlap) { const nodeSpacing = self2.nodeSpacing; let nodeSpacingFunc; - if (isNumber3(nodeSpacing)) { + if (isNumber45(nodeSpacing)) { nodeSpacingFunc = () => nodeSpacing; - } else if (isFunction(nodeSpacing)) { + } else if (isFunction41(nodeSpacing)) { nodeSpacingFunc = nodeSpacing; } else { nodeSpacingFunc = () => 0; @@ -103747,11 +110943,11 @@ var GForceLayout = class extends Base3 { if (!nodeSize) { nodeSizeFunc = (d3) => { if (d3.size) { - if (isArray2(d3.size)) { + if (isArray82(d3.size)) { const res = d3.size[0] > d3.size[1] ? d3.size[0] : d3.size[1]; return res + nodeSpacingFunc(d3); } - if (isObject2(d3.size)) { + if (isObject26(d3.size)) { const res = d3.size.width > d3.size.height ? d3.size.width : d3.size.height; return res + nodeSpacingFunc(d3); } @@ -103759,7 +110955,7 @@ var GForceLayout = class extends Base3 { } return 10 + nodeSpacingFunc(d3); }; - } else if (isArray2(nodeSize)) { + } else if (isArray82(nodeSize)) { nodeSizeFunc = (d3) => { const res = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1]; return res + nodeSpacingFunc(d3); @@ -103933,7 +111129,7 @@ var GForceLayout = class extends Base3 { let gravity = defaultGravity; if (self2.getCenter) { const customCenterOpt = self2.getCenter(node, degrees[i4]); - if (customCenterOpt && isNumber3(customCenterOpt[0]) && isNumber3(customCenterOpt[1]) && isNumber3(customCenterOpt[2])) { + if (customCenterOpt && isNumber45(customCenterOpt[0]) && isNumber45(customCenterOpt[1]) && isNumber45(customCenterOpt[2])) { vecX = node.x - customCenterOpt[0]; vecY = node.y - customCenterOpt[1]; gravity = customCenterOpt[2]; @@ -103963,7 +111159,7 @@ var GForceLayout = class extends Base3 { } updatePosition(velArray, stepInterval, nodes) { nodes.forEach((node, i4) => { - if (isNumber3(node.fx) && isNumber3(node.fy)) { + if (isNumber45(node.fx) && isNumber45(node.fy)) { node.x = node.fx; node.y = node.fy; return; @@ -104153,8 +111349,8 @@ function quad_default(node, x0, y0, x1, y1) { } // node_modules/d3-quadtree/src/find.js -function find_default3(x6, y5, radius) { - var data3, x0 = this._x0, y0 = this._y0, x1, y1, x22, y22, x32 = this._x1, y32 = this._y1, quads = [], node = this._root, q4, i4; +function find_default2(x6, y5, radius) { + var data3, x0 = this._x0, y0 = this._y0, x1, y1, x22, y22, x32 = this._x1, y32 = this._y1, quads = [], node = this._root, q3, i4; if (node) quads.push(new quad_default(node, x0, y0, x32, y32)); if (radius == null) @@ -104164,16 +111360,16 @@ function find_default3(x6, y5, radius) { x32 = x6 + radius, y32 = y5 + radius; radius *= radius; } - while (q4 = quads.pop()) { - if (!(node = q4.node) || (x1 = q4.x0) > x32 || (y1 = q4.y0) > y32 || (x22 = q4.x1) < x0 || (y22 = q4.y1) < y0) + while (q3 = quads.pop()) { + if (!(node = q3.node) || (x1 = q3.x0) > x32 || (y1 = q3.y0) > y32 || (x22 = q3.x1) < x0 || (y22 = q3.y1) < y0) continue; if (node.length) { var xm = (x1 + x22) / 2, ym = (y1 + y22) / 2; quads.push(new quad_default(node[3], xm, ym, x22, y22), new quad_default(node[2], x1, ym, xm, y22), new quad_default(node[1], xm, y1, x22, ym), new quad_default(node[0], x1, y1, xm, ym)); if (i4 = (y5 >= ym) << 1 | x6 >= xm) { - q4 = quads[quads.length - 1]; + q3 = quads[quads.length - 1]; quads[quads.length - 1] = quads[quads.length - 1 - i4]; - quads[quads.length - 1 - i4] = q4; + quads[quads.length - 1 - i4] = q3; } } else { var dx = x6 - +this._x.call(null, node.data), dy = y5 - +this._y.call(null, node.data), d22 = dx * dx + dy * dy; @@ -104189,7 +111385,7 @@ function find_default3(x6, y5, radius) { } // node_modules/d3-quadtree/src/remove.js -function remove_default2(d3) { +function remove_default(d3) { if (isNaN(x6 = +this._x.call(null, d3)) || isNaN(y5 = +this._y.call(null, d3))) return this; var parent, node = this._root, retainer, previous, next, x0 = this._x0, y0 = this._y0, x1 = this._x1, y1 = this._y1, x6, y5, xm, ym, right2, bottom, i4, j4; @@ -104243,23 +111439,23 @@ function root_default() { // node_modules/d3-quadtree/src/size.js function size_default2() { - var size2 = 0; + var size14 = 0; this.visit(function(node) { if (!node.length) do - ++size2; + ++size14; while (node = node.next); }); - return size2; + return size14; } // node_modules/d3-quadtree/src/visit.js function visit_default(callback) { - var quads = [], q4, node = this._root, child, x0, y0, x1, y1; + var quads = [], q3, node = this._root, child, x0, y0, x1, y1; if (node) quads.push(new quad_default(node, this._x0, this._y0, this._x1, this._y1)); - while (q4 = quads.pop()) { - if (!callback(node = q4.node, x0 = q4.x0, y0 = q4.y0, x1 = q4.x1, y1 = q4.y1) && node.length) { + while (q3 = quads.pop()) { + if (!callback(node = q3.node, x0 = q3.x0, y0 = q3.y0, x1 = q3.x1, y1 = q3.y1) && node.length) { var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; if (child = node[3]) quads.push(new quad_default(child, xm, ym, x1, y1)); @@ -104276,13 +111472,13 @@ function visit_default(callback) { // node_modules/d3-quadtree/src/visitAfter.js function visitAfter_default(callback) { - var quads = [], next = [], q4; + var quads = [], next = [], q3; if (this._root) quads.push(new quad_default(this._root, this._x0, this._y0, this._x1, this._y1)); - while (q4 = quads.pop()) { - var node = q4.node; + while (q3 = quads.pop()) { + var node = q3.node; if (node.length) { - var child, x0 = q4.x0, y0 = q4.y0, x1 = q4.x1, y1 = q4.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; + var child, x0 = q3.x0, y0 = q3.y0, x1 = q3.x1, y1 = q3.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; if (child = node[0]) quads.push(new quad_default(child, x0, y0, xm, ym)); if (child = node[1]) @@ -104292,10 +111488,10 @@ function visitAfter_default(callback) { if (child = node[3]) quads.push(new quad_default(child, xm, ym, x1, y1)); } - next.push(q4); + next.push(q3); } - while (q4 = next.pop()) { - callback(q4.node, q4.x0, q4.y0, q4.x1, q4.y1); + while (q3 = next.pop()) { + callback(q3.node, q3.x0, q3.y0, q3.x1, q3.y1); } return this; } @@ -104361,8 +111557,8 @@ treeProto.addAll = addAll; treeProto.cover = cover_default; treeProto.data = data_default; treeProto.extent = extent_default; -treeProto.find = find_default3; -treeProto.remove = remove_default2; +treeProto.find = find_default2; +treeProto.remove = remove_default; treeProto.removeAll = removeAll; treeProto.root = root_default; treeProto.size = size_default2; @@ -104466,7 +111662,7 @@ function collide_default(radius) { function index(d3) { return d3.index; } -function find3(nodeById, nodeId) { +function find10(nodeById, nodeId) { var node = nodeById.get(nodeId); if (!node) throw new Error("node not found: " + nodeId); @@ -104502,9 +111698,9 @@ function link_default(links) { for (i4 = 0, count2 = new Array(n3); i4 < m4; ++i4) { link = links[i4], link.index = i4; if (typeof link.source !== "object") - link.source = find3(nodeById, link.source); + link.source = find10(nodeById, link.source); if (typeof link.target !== "object") - link.target = find3(nodeById, link.target); + link.target = find10(nodeById, link.target); count2[link.source.index] = (count2[link.source.index] || 0) + 1; count2[link.target.index] = (count2[link.target.index] || 0) + 1; } @@ -104552,7 +111748,7 @@ function link_default(links) { } // node_modules/d3-dispatch/src/dispatch.js -var noop = { value: () => { +var noop6 = { value: () => { } }; function dispatch() { for (var i4 = 0, n3 = arguments.length, _8 = {}, t4; i4 < n3; ++i4) { @@ -104581,7 +111777,7 @@ Dispatch.prototype = dispatch.prototype = { var _8 = this._, T5 = parseTypenames(typename + "", _8), t4, i4 = -1, n3 = T5.length; if (arguments.length < 2) { while (++i4 < n3) - if ((t4 = (typename = T5[i4]).type) && (t4 = get2(_8[t4], typename.name))) + if ((t4 = (typename = T5[i4]).type) && (t4 = get98(_8[t4], typename.name))) return t4; return; } @@ -104589,10 +111785,10 @@ Dispatch.prototype = dispatch.prototype = { throw new Error("invalid callback: " + callback); while (++i4 < n3) { if (t4 = (typename = T5[i4]).type) - _8[t4] = set9(_8[t4], typename.name, callback); + _8[t4] = set12(_8[t4], typename.name, callback); else if (callback == null) for (t4 in _8) - _8[t4] = set9(_8[t4], typename.name, null); + _8[t4] = set12(_8[t4], typename.name, null); } return this; }, @@ -104618,17 +111814,17 @@ Dispatch.prototype = dispatch.prototype = { t4[i4].value.apply(that, args); } }; -function get2(type2, name) { +function get98(type2, name) { for (var i4 = 0, n3 = type2.length, c5; i4 < n3; ++i4) { if ((c5 = type2[i4]).name === name) { return c5.value; } } } -function set9(type2, name, callback) { +function set12(type2, name, callback) { for (var i4 = 0, n3 = type2.length; i4 < n3; ++i4) { if (type2[i4].name === name) { - type2[i4] = noop, type2 = type2.slice(0, i4).concat(type2.slice(i4 + 1)); + type2[i4] = noop6, type2 = type2.slice(0, i4).concat(type2.slice(i4 + 1)); break; } } @@ -104785,22 +111981,22 @@ function manyBody_default() { node2 = nodes[i4], strengths[node2.index] = +strength(node2, i4, nodes); } function accumulate(quad) { - var strength2 = 0, q4, c5, weight = 0, x6, y5, i4; + var strength2 = 0, q3, c5, weight = 0, x6, y5, i4; if (quad.length) { for (x6 = y5 = i4 = 0; i4 < 4; ++i4) { - if ((q4 = quad[i4]) && (c5 = Math.abs(q4.value))) { - strength2 += q4.value, weight += c5, x6 += c5 * q4.x, y5 += c5 * q4.y; + if ((q3 = quad[i4]) && (c5 = Math.abs(q3.value))) { + strength2 += q3.value, weight += c5, x6 += c5 * q3.x, y5 += c5 * q3.y; } } quad.x = x6 / weight; quad.y = y5 / weight; } else { - q4 = quad; - q4.x = q4.data.x; - q4.y = q4.data.y; + q3 = quad; + q3.x = q3.data.x; + q3.y = q3.data.y; do - strength2 += strengths[q4.data.index]; - while (q4 = q4.next); + strength2 += strengths[q3.data.index]; + while (q3 = q3.next); } quad.value = strength2; } @@ -104929,7 +112125,7 @@ function forceInABox() { function constant2(_8) { return () => _8; } - let groupBy2 = (d3) => { + let groupBy12 = (d3) => { return d3.cluster; }; let forceNodeSize = constant2(1); @@ -104961,8 +112157,8 @@ function forceInABox() { getFocisFromTemplate(); for (let i4 = 0, n3 = nodes.length, node, k4 = alpha * strength; i4 < n3; ++i4) { node = nodes[i4]; - node.vx += (foci[groupBy2(node)].x - node.x) * k4; - node.vy += (foci[groupBy2(node)].y - node.y) * k4; + node.vx += (foci[groupBy12(node)].x - node.x) * k4; + node.vy += (foci[groupBy12(node)].y - node.y) * k4; } } function initialize() { @@ -104974,7 +112170,7 @@ function forceInABox() { if (!nodes || !nodes.length) { return; } - if (groupBy2(nodes[0]) === void 0) { + if (groupBy12(nodes[0]) === void 0) { throw Error("Couldnt find the grouping attribute for the nodes. Make sure to set it up with forceInABox.groupBy('clusterAttr') before calling .links()"); } const net = getGroupsGraph(); @@ -105022,7 +112218,7 @@ function forceInABox() { function computeClustersNodeCounts(nodes2) { const clustersCounts = {}; nodes2.forEach((d3) => { - const key = groupBy2(d3); + const key = groupBy12(d3); if (!clustersCounts[key]) { clustersCounts[key] = { count: 0, @@ -105031,7 +112227,7 @@ function forceInABox() { } }); nodes2.forEach((d3) => { - const key = groupBy2(d3); + const key = groupBy12(d3); const nodeSize = forceNodeSize(d3); const tmpCount = clustersCounts[key]; tmpCount.count = tmpCount.count + 1; @@ -105084,8 +112280,8 @@ function forceInABox() { function getLinkKey(l4) { const source = getEdgeTerminal(l4, "source"); const target = getEdgeTerminal(l4, "target"); - const sourceID = groupBy2(nodesMap[source]); - const targetID = groupBy2(nodesMap[target]); + const sourceID = groupBy12(nodesMap[source]); + const targetID = groupBy12(nodesMap[target]); return sourceID <= targetID ? `${sourceID}~${targetID}` : `${targetID}~${sourceID}`; } function genNodesMap(nodes2) { @@ -105103,14 +112299,14 @@ function forceInABox() { } function setGroupBy(x6) { if (!arguments.length) - return groupBy2; + return groupBy12; if (typeof x6 === "string") { - groupBy2 = (d3) => { + groupBy12 = (d3) => { return d3[x6]; }; return force; } - groupBy2 = x6; + groupBy12 = x6; return force; } function setEnableGrouping(x6) { @@ -105427,9 +112623,9 @@ var ForceLayout = class extends Base3 { let nodeSizeFunc; let nodeSpacingFunc; const collideStrength = self2.collideStrength; - if (isNumber3(nodeSpacing)) { + if (isNumber45(nodeSpacing)) { nodeSpacingFunc = () => nodeSpacing; - } else if (isFunction(nodeSpacing)) { + } else if (isFunction41(nodeSpacing)) { nodeSpacingFunc = nodeSpacing; } else { nodeSpacingFunc = () => 0; @@ -105437,11 +112633,11 @@ var ForceLayout = class extends Base3 { if (!nodeSize) { nodeSizeFunc = (d3) => { if (d3.size) { - if (isArray2(d3.size)) { + if (isArray82(d3.size)) { const res = d3.size[0] > d3.size[1] ? d3.size[0] : d3.size[1]; return res / 2 + nodeSpacingFunc(d3); } - if (isObject2(d3.size)) { + if (isObject26(d3.size)) { const res = d3.size.width > d3.size.height ? d3.size.width : d3.size.height; return res / 2 + nodeSpacingFunc(d3); } @@ -105449,16 +112645,16 @@ var ForceLayout = class extends Base3 { } return 10 + nodeSpacingFunc(d3); }; - } else if (isFunction(nodeSize)) { + } else if (isFunction41(nodeSize)) { nodeSizeFunc = (d3) => { - const size2 = nodeSize(d3); - return size2 + nodeSpacingFunc(d3); + const size14 = nodeSize(d3); + return size14 + nodeSpacingFunc(d3); }; - } else if (isArray2(nodeSize)) { + } else if (isArray82(nodeSize)) { const larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1]; const radius = larger / 2; nodeSizeFunc = (d3) => radius + nodeSpacingFunc(d3); - } else if (isNumber3(nodeSize)) { + } else if (isNumber45(nodeSize)) { const radius = nodeSize / 2; nodeSizeFunc = (d3) => radius + nodeSpacingFunc(d3); } else { @@ -105686,7 +112882,7 @@ var CircularLayout = class extends Base3 { const degrees = self2.degrees; const edges = self2.edges; const nodes = self2.nodes; - const cnodes = clone9(nodes); + const cnodes = clone31(nodes); const nodeMap = self2.nodeMap; const orderedCNodes = [cnodes[0]]; const resNodes = [nodes[0]]; @@ -106030,10 +113226,10 @@ var asNonCompoundGraph = (g4) => { g4.edges().forEach((e4) => simplified.setEdge(e4, g4.edge(e4))); return simplified; }; -var zipObject = (keys2, values2) => { +var zipObject = (keys6, values4) => { const result = {}; - keys2 === null || keys2 === void 0 ? void 0 : keys2.forEach((key, i4) => { - result[key] = values2[i4]; + keys6 === null || keys6 === void 0 ? void 0 : keys6.forEach((key, i4) => { + result[key] = values4[i4]; }); return result; }; @@ -106114,13 +113310,13 @@ var buildLayerMatrix = (g4) => { }; var normalizeRanks = (g4) => { const nodeRanks = g4.nodes().filter((v3) => g4.node(v3).rank !== void 0).map((v3) => g4.node(v3).rank); - const min7 = Math.min(...nodeRanks); + const min13 = Math.min(...nodeRanks); g4.nodes().forEach((v3) => { const node = g4.node(v3); if (node.hasOwnProperty("rank")) { if (!node.rank) node.rank = 0; - node.rank -= min7; + node.rank -= min13; } }); }; @@ -106156,7 +113352,7 @@ var addBorderNode = (g4, prefix2, rank2, order2) => { width: 0, height: 0 }; - if (isNumber3(rank2) && isNumber3(order2)) { + if (isNumber45(rank2) && isNumber45(order2)) { node.rank = rank2; node.order = order2; } @@ -106172,10 +113368,10 @@ var maxRank = (g4) => { }); return Math.max(...nodeRanks); }; -var partition2 = (collection, fn2) => { +var partition2 = (collection, fn) => { const result = { lhs: [], rhs: [] }; collection === null || collection === void 0 ? void 0 : collection.forEach((value2) => { - if (fn2(value2)) { + if (fn(value2)) { result.lhs.push(value2); } else { result.rhs.push(value2); @@ -106183,24 +113379,24 @@ var partition2 = (collection, fn2) => { }); return result; }; -var time = (name, fn2) => { +var time = (name, fn) => { const start = Date.now(); try { - return fn2(); + return fn(); } finally { console.log(`${name} time: ${Date.now() - start}ms`); } }; -var notime = (name, fn2) => { - return fn2(); +var notime = (name, fn) => { + return fn(); }; -var minBy = (array, func) => { - let min7 = Infinity; +var minBy2 = (array, func) => { + let min13 = Infinity; let minObject; array === null || array === void 0 ? void 0 : array.forEach((item) => { const value2 = func(item); - if (min7 > value2) { - min7 = value2; + if (min13 > value2) { + min13 = value2; minObject = item; } }); @@ -106222,7 +113418,7 @@ var util_default2 = { time, notime, zipObject, - minBy + minBy: minBy2 }; // node_modules/@antv/layout/es/layout/dagre/src/normalize.js @@ -106373,11 +113569,11 @@ var Graph4 = graphlib_default.Graph; var feasibleTree = (g4) => { const t4 = new Graph4({ directed: false }); const start = g4.nodes()[0]; - const size2 = g4.nodeCount(); + const size14 = g4.nodeCount(); t4.setNode(start, {}); let edge2; let delta; - while (tightTree(t4, g4) < size2) { + while (tightTree(t4, g4) < size14) { edge2 = findMinSlackEdge(t4, g4); delta = t4.hasNode(edge2.v) ? slack(g4, edge2) : -slack(g4, edge2); shiftRanks(t4, g4, delta); @@ -106402,11 +113598,11 @@ var tightTree = (t4, g4) => { var feasibleTreeWithLayer = (g4) => { const t4 = new Graph4({ directed: false }); const start = g4.nodes()[0]; - const size2 = g4.nodeCount(); + const size14 = g4.nodeCount(); t4.setNode(start, {}); let edge2; let delta; - while (tightTreeWithLayer(t4, g4) < size2) { + while (tightTreeWithLayer(t4, g4) < size14) { edge2 = findMinSlackEdge(t4, g4); delta = t4.hasNode(edge2.v) ? slack(g4, edge2) : -slack(g4, edge2); shiftRanks(t4, g4, delta); @@ -106430,7 +113626,7 @@ var tightTreeWithLayer = (t4, g4) => { return t4.nodeCount(); }; var findMinSlackEdge = (t4, g4) => { - return minBy(g4.edges(), (e4) => { + return minBy2(g4.edges(), (e4) => { if (t4.hasNode(e4.v) !== t4.hasNode(e4.w)) { return slack(g4, e4); } @@ -106549,7 +113745,7 @@ var enterEdge = (t4, g4, edge2) => { const candidates = g4.edges().filter((edge3) => { return flip === isDescendant(t4, t4.node(edge3.v), tailLabel) && flip !== isDescendant(t4, t4.node(edge3.w), tailLabel); }); - return minBy(candidates, (edge3) => { + return minBy2(candidates, (edge3) => { return slack(g4, edge3); }); }; @@ -107101,10 +114297,10 @@ var doResolveConflicts = (sourceSet) => { (_b = entry.out) === null || _b === void 0 ? void 0 : _b.forEach((e4) => handleOut(entry)(e4)); } const filtered = entries.filter((entry) => !entry.merged); - const keys2 = ["vs", "i", "barycenter", "weight"]; + const keys6 = ["vs", "i", "barycenter", "weight"]; return filtered.map((entry) => { const picked = {}; - keys2 === null || keys2 === void 0 ? void 0 : keys2.forEach((key) => { + keys6 === null || keys6 === void 0 ? void 0 : keys6.forEach((key) => { if (entry[key] === void 0) return; picked[key] = entry[key]; @@ -107162,10 +114358,10 @@ var sort = (entries, biasRight, usePrev) => { }; var consumeUnsortable = (vs, unsortable, index2) => { let iindex = index2; - let last2; - while (unsortable.length && (last2 = unsortable[unsortable.length - 1]).i <= iindex) { + let last17; + while (unsortable.length && (last17 = unsortable[unsortable.length - 1]).i <= iindex) { unsortable.pop(); - vs === null || vs === void 0 ? void 0 : vs.push(last2.vs); + vs === null || vs === void 0 ? void 0 : vs.push(last17.vs); iindex++; } return iindex; @@ -107289,7 +114485,7 @@ var order = (g4) => { const cc = cross_count_default(g4, layering); if (cc < bestCC) { lastBest = 0; - best = clone9(layering); + best = clone31(layering); bestCC = cc; } } @@ -107301,7 +114497,7 @@ var order = (g4) => { const cc = cross_count_default(g4, layering); if (cc < bestCC) { lastBest = 0; - best = clone9(layering); + best = clone31(layering); bestCC = cc; } } @@ -107499,12 +114695,12 @@ var horizontalCompaction = (g4, layering, root, align, reverseSep) => { }, 0); }; const pass2 = (elem) => { - const min7 = (blockG.outEdges(elem) || []).reduce((acc, e4) => { + const min13 = (blockG.outEdges(elem) || []).reduce((acc, e4) => { return Math.min(acc, (xs[e4.w] || 0) - blockG.edge(e4)); }, Number.POSITIVE_INFINITY); const node = g4.node(elem); - if (min7 !== Number.POSITIVE_INFINITY && node.borderType !== borderType) { - xs[elem] = Math.max(xs[elem], min7); + if (min13 !== Number.POSITIVE_INFINITY && node.borderType !== borderType) { + xs[elem] = Math.max(xs[elem], min13); } }; iterate(pass1, blockG.predecessors.bind(blockG)); @@ -107536,15 +114732,15 @@ var buildBlockGraph = (g4, layering, root, reverseSep) => { var findSmallestWidthAlignment = (g4, xss) => { return util_default2.minBy(Object.values(xss), (xs) => { var _a6; - let max8 = Number.NEGATIVE_INFINITY; - let min7 = Number.POSITIVE_INFINITY; + let max15 = Number.NEGATIVE_INFINITY; + let min13 = Number.POSITIVE_INFINITY; (_a6 = Object.keys(xs)) === null || _a6 === void 0 ? void 0 : _a6.forEach((v3) => { const x6 = xs[v3]; const halfWidth = width(g4, v3) / 2; - max8 = Math.max(x6 + halfWidth, max8); - min7 = Math.min(x6 - halfWidth, min7); + max15 = Math.max(x6 + halfWidth, max15); + min13 = Math.min(x6 - halfWidth, min13); }); - return max8 - min7; + return max15 - min13; }); }; function alignCoordinates(xss, alignTo) { @@ -107575,8 +114771,8 @@ var balance = (xss, align) => { if (align) { result[key] = xss[align.toLowerCase()][key]; } else { - const values2 = Object.values(xss).map((x6) => x6[key]); - const xs = values2.sort((a4, b10) => a4 - b10); + const values4 = Object.values(xss).map((x6) => x6[key]); + const xs = values4.sort((a4, b10) => a4 - b10); result[key] = (xs[1] + xs[2]) / 2; } }); @@ -108226,17 +115422,17 @@ var DagreLayout = class extends Base3 { if (!nodeSize) { nodeSizeFunc = (d3) => { if (d3.size) { - if (isArray2(d3.size)) { + if (isArray82(d3.size)) { return d3.size; } - if (isObject2(d3.size)) { + if (isObject26(d3.size)) { return [d3.size.width || 40, d3.size.height || 40]; } return [d3.size, d3.size]; } return [40, 40]; }; - } else if (isArray2(nodeSize)) { + } else if (isArray82(nodeSize)) { nodeSizeFunc = () => nodeSize; } else { nodeSizeFunc = () => [nodeSize, nodeSize]; @@ -108251,13 +115447,13 @@ var DagreLayout = class extends Base3 { g4.setGraph(self2); const comboMap = {}; nodes.filter((node) => node.layout !== false).forEach((node) => { - const size2 = nodeSizeFunc(node); + const size14 = nodeSizeFunc(node); const verti = vertisep(node); const hori = horisep(node); - const width2 = size2[0] + 2 * hori; - const height = size2[1] + 2 * verti; + const width2 = size14[0] + 2 * hori; + const height = size14[1] + 2 * verti; const layer = node.layer; - if (isNumber3(layer)) { + if (isNumber45(layer)) { g4.setNode(node.id, { width: width2, height, layer }); } else { g4.setNode(node.id, { width: width2, height }); @@ -108368,7 +115564,7 @@ function getFunc(func, value2, defaultValue) { let resultFunc; if (func) { resultFunc = func; - } else if (isNumber3(value2)) { + } else if (isNumber45(value2)) { resultFunc = () => value2; } else { resultFunc = () => defaultValue; @@ -108383,7 +115579,7 @@ function isAnyArray(object) { } // node_modules/ml-array-max/lib-es6/index.js -function max5(input) { +function max12(input) { var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; if (!isAnyArray(input)) { throw new TypeError("input must be an array"); @@ -108405,10 +115601,10 @@ function max5(input) { } return maxValue; } -var lib_es6_default = max5; +var lib_es6_default = max12; // node_modules/ml-array-min/lib-es6/index.js -function min5(input) { +function min11(input) { var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; if (!isAnyArray(input)) { throw new TypeError("input must be an array"); @@ -108430,7 +115626,7 @@ function min5(input) { } return minValue; } -var lib_es6_default2 = min5; +var lib_es6_default2 = min11; // node_modules/ml-array-rescale/lib-es6/index.js function rescale(input) { @@ -108647,7 +115843,7 @@ function installMathOperations(AbstractMatrix2, Matrix3) { AbstractMatrix2.prototype.divideS = AbstractMatrix2.prototype.divS; AbstractMatrix2.prototype.divideM = AbstractMatrix2.prototype.divM; AbstractMatrix2.divide = AbstractMatrix2.div; - AbstractMatrix2.prototype.mod = function mod3(value2) { + AbstractMatrix2.prototype.mod = function mod5(value2) { if (typeof value2 === "number") return this.modS(value2); return this.modM(value2); @@ -108672,7 +115868,7 @@ function installMathOperations(AbstractMatrix2, Matrix3) { } return this; }; - AbstractMatrix2.mod = function mod3(matrix, value2) { + AbstractMatrix2.mod = function mod5(matrix, value2) { const newMatrix = new Matrix3(matrix); return newMatrix.mod(value2); }; @@ -109239,14 +116435,14 @@ function installMathOperations(AbstractMatrix2, Matrix3) { // node_modules/ml-matrix/src/util.js function checkRowIndex(matrix, index2, outer) { - let max8 = outer ? matrix.rows : matrix.rows - 1; - if (index2 < 0 || index2 > max8) { + let max15 = outer ? matrix.rows : matrix.rows - 1; + if (index2 < 0 || index2 > max15) { throw new RangeError("Row index out of range"); } } function checkColumnIndex(matrix, index2, outer) { - let max8 = outer ? matrix.columns : matrix.columns - 1; - if (index2 < 0 || index2 > max8) { + let max15 = outer ? matrix.columns : matrix.columns - 1; + if (index2 < 0 || index2 > max15) { throw new RangeError("Column index out of range"); } } @@ -109432,7 +116628,7 @@ function varianceByColumn(matrix, unbiased, mean) { function varianceAll(matrix, unbiased, mean) { const rows = matrix.rows; const cols = matrix.columns; - const size2 = rows * cols; + const size14 = rows * cols; let sum1 = 0; let sum2 = 0; let x6 = 0; @@ -109444,9 +116640,9 @@ function varianceAll(matrix, unbiased, mean) { } } if (unbiased) { - return (sum2 - sum1 * sum1 / size2) / (size2 - 1); + return (sum2 - sum1 * sum1 / size14) / (size14 - 1); } else { - return (sum2 - sum1 * sum1 / size2) / size2; + return (sum2 - sum1 * sum1 / size14) / size14; } } function centerByRow(matrix, mean) { @@ -109576,18 +116772,18 @@ var AbstractMatrix = class { if (typeof options !== "object") { throw new TypeError("options must be an object"); } - const { min: min7 = 0, max: max8 = 1e3, random: random5 = Math.random } = options; - if (!Number.isInteger(min7)) + const { min: min13 = 0, max: max15 = 1e3, random: random5 = Math.random } = options; + if (!Number.isInteger(min13)) throw new TypeError("min must be an integer"); - if (!Number.isInteger(max8)) + if (!Number.isInteger(max15)) throw new TypeError("max must be an integer"); - if (min7 >= max8) + if (min13 >= max15) throw new RangeError("min must be smaller than max"); - let interval3 = max8 - min7; + let interval3 = max15 - min13; let matrix = new Matrix2(rows, columns); for (let i4 = 0; i4 < rows; i4++) { for (let j4 = 0; j4 < columns; j4++) { - let value2 = min7 + Math.round(random5() * interval3); + let value2 = min13 + Math.round(random5() * interval3); matrix.set(i4, j4, value2); } } @@ -109598,9 +116794,9 @@ var AbstractMatrix = class { columns = rows; if (value2 === void 0) value2 = 1; - let min7 = Math.min(rows, columns); + let min13 = Math.min(rows, columns); let matrix = this.zeros(rows, columns); - for (let i4 = 0; i4 < min7; i4++) { + for (let i4 = 0; i4 < min13; i4++) { matrix.set(i4, i4, value2); } return matrix; @@ -109611,9 +116807,9 @@ var AbstractMatrix = class { rows = l4; if (columns === void 0) columns = rows; - let min7 = Math.min(l4, rows, columns); + let min13 = Math.min(l4, rows, columns); let matrix = this.zeros(rows, columns); - for (let i4 = 0; i4 < min7; i4++) { + for (let i4 = 0; i4 < min13; i4++) { matrix.set(i4, i4, data3[i4]); } return matrix; @@ -110172,9 +117368,9 @@ var AbstractMatrix = class { return idx; } diag() { - let min7 = Math.min(this.rows, this.columns); + let min13 = Math.min(this.rows, this.columns); let diag = []; - for (let i4 = 0; i4 < min7; i4++) { + for (let i4 = 0; i4 < min13; i4++) { diag.push(this.get(i4, i4)); } return diag; @@ -110407,18 +117603,18 @@ var AbstractMatrix = class { if (typeof options !== "object") { throw new TypeError("options must be an object"); } - const { min: min7 = 0, max: max8 = 1 } = options; - if (!Number.isFinite(min7)) + const { min: min13 = 0, max: max15 = 1 } = options; + if (!Number.isFinite(min13)) throw new TypeError("min must be a number"); - if (!Number.isFinite(max8)) + if (!Number.isFinite(max15)) throw new TypeError("max must be a number"); - if (min7 >= max8) + if (min13 >= max15) throw new RangeError("min must be smaller than max"); let newMatrix = new Matrix2(this.rows, this.columns); for (let i4 = 0; i4 < this.rows; i4++) { const row = this.getRow(i4); if (row.length > 0) { - rescale(row, { min: min7, max: max8, output: row }); + rescale(row, { min: min13, max: max15, output: row }); } newMatrix.setRow(i4, row); } @@ -110428,20 +117624,20 @@ var AbstractMatrix = class { if (typeof options !== "object") { throw new TypeError("options must be an object"); } - const { min: min7 = 0, max: max8 = 1 } = options; - if (!Number.isFinite(min7)) + const { min: min13 = 0, max: max15 = 1 } = options; + if (!Number.isFinite(min13)) throw new TypeError("min must be a number"); - if (!Number.isFinite(max8)) + if (!Number.isFinite(max15)) throw new TypeError("max must be a number"); - if (min7 >= max8) + if (min13 >= max15) throw new RangeError("min must be smaller than max"); let newMatrix = new Matrix2(this.rows, this.columns); for (let i4 = 0; i4 < this.columns; i4++) { const column = this.getColumn(i4); if (column.length) { rescale(column, { - min: min7, - max: max8, + min: min13, + max: max15, output: column }); } @@ -110454,8 +117650,8 @@ var AbstractMatrix = class { for (let i4 = 0; i4 < this.rows; i4++) { for (let j4 = 0; j4 < middle; j4++) { let first = this.get(i4, j4); - let last2 = this.get(i4, this.columns - 1 - j4); - this.set(i4, j4, last2); + let last17 = this.get(i4, this.columns - 1 - j4); + this.set(i4, j4, last17); this.set(i4, this.columns - 1 - j4, first); } } @@ -110466,8 +117662,8 @@ var AbstractMatrix = class { for (let j4 = 0; j4 < this.columns; j4++) { for (let i4 = 0; i4 < middle; i4++) { let first = this.get(i4, j4); - let last2 = this.get(this.rows - 1 - i4, j4); - this.set(i4, j4, last2); + let last17 = this.get(this.rows - 1 - i4, j4); + this.set(i4, j4, last17); this.set(this.rows - 1 - i4, j4, first); } } @@ -110478,13 +117674,13 @@ var AbstractMatrix = class { let m4 = this.rows; let n3 = this.columns; let p4 = other2.rows; - let q4 = other2.columns; - let result = new Matrix2(m4 * p4, n3 * q4); + let q3 = other2.columns; + let result = new Matrix2(m4 * p4, n3 * q3); for (let i4 = 0; i4 < m4; i4++) { for (let j4 = 0; j4 < n3; j4++) { for (let k4 = 0; k4 < p4; k4++) { - for (let l4 = 0; l4 < q4; l4++) { - result.set(p4 * i4 + k4, q4 * j4 + l4, this.get(i4, j4) * other2.get(k4, l4)); + for (let l4 = 0; l4 < q3; l4++) { + result.set(p4 * i4 + k4, q3 * j4 + l4, this.get(i4, j4) * other2.get(k4, l4)); } } } @@ -110599,9 +117795,9 @@ var AbstractMatrix = class { return newMatrix; } trace() { - let min7 = Math.min(this.rows, this.columns); + let min13 = Math.min(this.rows, this.columns); let trace = 0; - for (let i4 = 0; i4 < min7; i4++) { + for (let i4 = 0; i4 < min13; i4++) { trace += this.get(i4, i4); } return trace; @@ -111646,7 +118842,7 @@ var RadialLayout = class extends Base3 { } const linkDistance = self2.linkDistance; let focusNode = null; - if (isString(self2.focusNode)) { + if (isString50(self2.focusNode)) { let found = false; for (let i4 = 0; i4 < nodes.length; i4++) { if (nodes[i4].id === self2.focusNode) { @@ -111725,9 +118921,9 @@ var RadialLayout = class extends Base3 { if (preventOverlap) { const nodeSpacing = self2.nodeSpacing; let nodeSpacingFunc; - if (isNumber3(nodeSpacing)) { + if (isNumber45(nodeSpacing)) { nodeSpacingFunc = () => nodeSpacing; - } else if (isFunction(nodeSpacing)) { + } else if (isFunction41(nodeSpacing)) { nodeSpacingFunc = nodeSpacing; } else { nodeSpacingFunc = () => 0; @@ -111735,11 +118931,11 @@ var RadialLayout = class extends Base3 { if (!nodeSize) { nodeSizeFunc = (d3) => { if (d3.size) { - if (isArray2(d3.size)) { + if (isArray82(d3.size)) { const res = d3.size[0] > d3.size[1] ? d3.size[0] : d3.size[1]; return res + nodeSpacingFunc(d3); } - if (isObject2(d3.size)) { + if (isObject26(d3.size)) { const res = d3.size.width > d3.size.height ? d3.size.width : d3.size.height; return res + nodeSpacingFunc(d3); } @@ -111747,7 +118943,7 @@ var RadialLayout = class extends Base3 { } return 10 + nodeSpacingFunc(d3); }; - } else if (isArray2(nodeSize)) { + } else if (isArray82(nodeSize)) { nodeSizeFunc = (d3) => { const res = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1]; return res + nodeSpacingFunc(d3); @@ -111851,10 +119047,10 @@ var RadialLayout = class extends Base3 { } else if (self2.sortBy) { let iValue = nodes[i4][self2.sortBy] || 0; let jValue = nodes[j4][self2.sortBy] || 0; - if (isString(iValue)) { + if (isString50(iValue)) { iValue = iValue.charCodeAt(0); } - if (isString(jValue)) { + if (isString50(jValue)) { jValue = jValue.charCodeAt(0); } newRow.push(v3 * (Math.abs(iValue - jValue) * self2.sortStrength) / (radii[i4] / unitRadius)); @@ -111899,14 +119095,14 @@ var RadialLayout = class extends Base3 { } } maxToFocus(matrix, focusIndex) { - let max8 = 0; + let max15 = 0; for (let i4 = 0; i4 < matrix[focusIndex].length; i4++) { if (matrix[focusIndex][i4] === Infinity) { continue; } - max8 = matrix[focusIndex][i4] > max8 ? matrix[focusIndex][i4] : max8; + max15 = matrix[focusIndex][i4] > max15 ? matrix[focusIndex][i4] : max15; } - return max8; + return max15; } getType() { return "radial"; @@ -111974,7 +119170,7 @@ var ConcentricLayout = class extends Base3 { } const layoutNodes2 = []; let maxNodeSize; - if (isArray2(self2.nodeSize)) { + if (isArray82(self2.nodeSize)) { maxNodeSize = Math.max(self2.nodeSize[0], self2.nodeSize[1]); } else { maxNodeSize = self2.nodeSize; @@ -111982,11 +119178,11 @@ var ConcentricLayout = class extends Base3 { nodes.forEach((node) => { layoutNodes2.push(node); let nodeSize = maxNodeSize; - if (isArray2(node.size)) { + if (isArray82(node.size)) { nodeSize = Math.max(node.size[0], node.size[1]); - } else if (isNumber3(node.size)) { + } else if (isNumber45(node.size)) { nodeSize = node.size; - } else if (isObject2(node.size)) { + } else if (isObject26(node.size)) { nodeSize = Math.max(node.size.width, node.size.height); } maxNodeSize = Math.max(maxNodeSize, nodeSize); @@ -111998,12 +119194,12 @@ var ConcentricLayout = class extends Base3 { nodeMap[node.id] = node; indexMap[node.id] = i4; }); - if (self2.sortBy === "degree" || !isString(self2.sortBy) || layoutNodes2[0][self2.sortBy] === void 0) { + if (self2.sortBy === "degree" || !isString50(self2.sortBy) || layoutNodes2[0][self2.sortBy] === void 0) { self2.sortBy = "degree"; - if (!isNumber3(nodes[0].degree)) { - const values2 = getDegree3(nodes.length, indexMap, edges); + if (!isNumber45(nodes[0].degree)) { + const values4 = getDegree3(nodes.length, indexMap, edges); layoutNodes2.forEach((node, i4) => { - node.degree = values2[i4]; + node.degree = values4[i4]; }); } } @@ -112238,9 +119434,9 @@ var FruchtermanLayout = class extends Base3 { const nodeMap = {}; const nodeIdxMap = {}; nodes.forEach((node, i4) => { - if (!isNumber3(node.x)) + if (!isNumber45(node.x)) node.x = Math.random() * this.width; - if (!isNumber3(node.y)) + if (!isNumber45(node.y)) node.y = Math.random() * this.height; nodeMap[node.id] = node; nodeIdxMap[node.id] = i4; @@ -112317,10 +119513,10 @@ var FruchtermanLayout = class extends Base3 { } nodes.forEach((n3) => { const c5 = clusterMap[n3.cluster]; - if (isNumber3(n3.x)) { + if (isNumber45(n3.x)) { c5.cx += n3.x; } - if (isNumber3(n3.y)) { + if (isNumber45(n3.y)) { c5.cy += n3.y; } c5.count++; @@ -112331,7 +119527,7 @@ var FruchtermanLayout = class extends Base3 { } const clusterGravity = self2.clusterGravity || gravity; nodes.forEach((n3, j4) => { - if (!isNumber3(n3.x) || !isNumber3(n3.y)) + if (!isNumber45(n3.x) || !isNumber45(n3.y)) return; const c5 = clusterMap[n3.cluster]; const distLength = Math.sqrt((n3.x - c5.cx) * (n3.x - c5.cx) + (n3.y - c5.cy) * (n3.y - c5.cy)); @@ -112341,19 +119537,19 @@ var FruchtermanLayout = class extends Base3 { }); } nodes.forEach((n3, j4) => { - if (!isNumber3(n3.x) || !isNumber3(n3.y)) + if (!isNumber45(n3.x) || !isNumber45(n3.y)) return; const gravityForce = 0.01 * k4 * gravity; displacements[j4].x -= gravityForce * (n3.x - center2[0]); displacements[j4].y -= gravityForce * (n3.y - center2[1]); }); nodes.forEach((n3, j4) => { - if (isNumber3(n3.fx) && isNumber3(n3.fy)) { + if (isNumber45(n3.fx) && isNumber45(n3.fy)) { n3.x = n3.fx; n3.y = n3.fy; return; } - if (!isNumber3(n3.x) || !isNumber3(n3.y)) + if (!isNumber45(n3.x) || !isNumber45(n3.y)) return; const distLength = Math.sqrt(displacements[j4].x * displacements[j4].x + displacements[j4].y * displacements[j4].y); if (distLength > 0) { @@ -112377,7 +119573,7 @@ var FruchtermanLayout = class extends Base3 { if (i4 === j4) { return; } - if (!isNumber3(v3.x) || !isNumber3(u3.x) || !isNumber3(v3.y) || !isNumber3(u3.y)) { + if (!isNumber45(v3.x) || !isNumber45(u3.x) || !isNumber45(v3.y) || !isNumber45(u3.y)) { return; } let vecX = v3.x - u3.x; @@ -112408,7 +119604,7 @@ var FruchtermanLayout = class extends Base3 { } const u3 = this.nodeMap[source]; const v3 = this.nodeMap[target]; - if (!isNumber3(v3.x) || !isNumber3(u3.x) || !isNumber3(v3.y) || !isNumber3(u3.y)) { + if (!isNumber45(v3.x) || !isNumber45(u3.x) || !isNumber45(v3.y) || !isNumber45(u3.y)) { return; } const vecX = v3.x - u3.x; @@ -112542,15 +119738,15 @@ var Reflect2; } : function() { return MakeDictionary({}); }, - has: downLevel ? function(map6, key) { - return hasOwn.call(map6, key); - } : function(map6, key) { - return key in map6; + has: downLevel ? function(map23, key) { + return hasOwn.call(map23, key); + } : function(map23, key) { + return key in map23; }, - get: downLevel ? function(map6, key) { - return hasOwn.call(map6, key) ? map6[key] : void 0; - } : function(map6, key) { - return map6[key]; + get: downLevel ? function(map23, key) { + return hasOwn.call(map23, key) ? map23[key] : void 0; + } : function(map23, key) { + return map23[key]; } }; var functionPrototype = Object.getPrototypeOf(Function); @@ -112752,43 +119948,43 @@ var Reflect2; return ownKeys12; if (ownKeys12.length <= 0) return parentKeys; - var set10 = new _Set(); - var keys2 = []; + var set13 = new _Set(); + var keys6 = []; for (var _i = 0, ownKeys_1 = ownKeys12; _i < ownKeys_1.length; _i++) { var key = ownKeys_1[_i]; - var hasKey = set10.has(key); - if (!hasKey) { - set10.add(key); - keys2.push(key); + var hasKey6 = set13.has(key); + if (!hasKey6) { + set13.add(key); + keys6.push(key); } } for (var _a6 = 0, parentKeys_1 = parentKeys; _a6 < parentKeys_1.length; _a6++) { var key = parentKeys_1[_a6]; - var hasKey = set10.has(key); - if (!hasKey) { - set10.add(key); - keys2.push(key); + var hasKey6 = set13.has(key); + if (!hasKey6) { + set13.add(key); + keys6.push(key); } } - return keys2; + return keys6; } function OrdinaryOwnMetadataKeys(O3, P4) { - var keys2 = []; + var keys6 = []; var metadataMap = GetOrCreateMetadataMap(O3, P4, false); if (IsUndefined(metadataMap)) - return keys2; + return keys6; var keysObj = metadataMap.keys(); var iterator = GetIterator(keysObj); var k4 = 0; while (true) { var next = IteratorStep(iterator); if (!next) { - keys2.length = k4; - return keys2; + keys6.length = k4; + return keys6; } var nextValue = IteratorValue(next); try { - keys2[k4] = nextValue; + keys6[k4] = nextValue; } catch (e4) { try { IteratorClose(iterator); @@ -112967,10 +120163,10 @@ var Reflect2; var cacheSentinel = {}; var arraySentinel = []; var MapIterator = function() { - function MapIterator2(keys2, values2, selector) { + function MapIterator2(keys6, values4, selector) { this._index = 0; - this._keys = keys2; - this._values = values2; + this._keys = keys6; + this._values = values4; this._selector = selector; } MapIterator2.prototype["@@iterator"] = function() { @@ -113041,8 +120237,8 @@ var Reflect2; Map2.prototype.delete = function(key) { var index2 = this._find(key, false); if (index2 >= 0) { - var size2 = this._keys.length; - for (var i4 = index2 + 1; i4 < size2; i4++) { + var size14 = this._keys.length; + for (var i4 = index2 + 1; i4 < size14; i4++) { this._keys[i4 - 1] = this._keys[i4]; this._values[i4 - 1] = this._values[i4]; } @@ -113144,7 +120340,7 @@ var Reflect2; } function CreateWeakMapPolyfill() { var UUID_SIZE = 16; - var keys2 = HashMap.create(); + var keys6 = HashMap.create(); var rootKey = CreateUniqueKey(); return function() { function WeakMap2() { @@ -113176,8 +120372,8 @@ var Reflect2; var key; do key = "@@WeakMap@@" + CreateUUID(); - while (HashMap.has(keys2, key)); - keys2[key] = true; + while (HashMap.has(keys6, key)); + keys6[key] = true; return key; } function GetOrCreateWeakMapTable(target, create8) { @@ -113188,20 +120384,20 @@ var Reflect2; } return target[rootKey]; } - function FillRandomBytes(buffer, size2) { - for (var i4 = 0; i4 < size2; ++i4) + function FillRandomBytes(buffer, size14) { + for (var i4 = 0; i4 < size14; ++i4) buffer[i4] = Math.random() * 255 | 0; return buffer; } - function GenRandomBytes(size2) { + function GenRandomBytes(size14) { if (typeof Uint8Array === "function") { if (typeof crypto !== "undefined") - return crypto.getRandomValues(new Uint8Array(size2)); + return crypto.getRandomValues(new Uint8Array(size14)); if (typeof msCrypto !== "undefined") - return msCrypto.getRandomValues(new Uint8Array(size2)); - return FillRandomBytes(new Uint8Array(size2), size2); + return msCrypto.getRandomValues(new Uint8Array(size14)); + return FillRandomBytes(new Uint8Array(size14), size14); } - return FillRandomBytes(new Array(size2), size2); + return FillRandomBytes(new Array(size14), size14); } function CreateUUID() { var data3 = GenRandomBytes(UUID_SIZE); @@ -113245,11 +120441,11 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { Promise.resolve(value2).then(_next, _throw); } } -function _asyncToGenerator(fn2) { +function _asyncToGenerator(fn) { return function() { var self2 = this, args = arguments; return new Promise(function(resolve, reject) { - var gen = fn2.apply(self2, args); + var gen = fn.apply(self2, args); function _next(value2) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value2); } @@ -113290,7 +120486,7 @@ var ComponentManager = /* @__PURE__ */ function() { } }, { key: "contains", - value: function contains2(entity) { + value: function contains3(entity) { return this.lookup[entity] > -1; } }, { @@ -113345,9 +120541,9 @@ var ComponentManager = /* @__PURE__ */ function() { } var srcComponent = this.components[srcIndex]; var srcEntity = this.entities[srcIndex]; - var direction5 = srcIndex < destIndex ? 1 : -1; - for (var _i3 = srcIndex; _i3 !== destIndex; _i3 += direction5) { - var next = _i3 + direction5; + var direction3 = srcIndex < destIndex ? 1 : -1; + for (var _i3 = srcIndex; _i3 !== destIndex; _i3 += direction3) { + var next = _i3 + direction3; this.components[_i3] = this.components[next]; this.entities[_i3] = this.entities[next]; this.lookup[this.entities[_i3]] = _i3; @@ -113394,7 +120590,7 @@ var ComponentManager = /* @__PURE__ */ function() { } }, { key: "find", - value: function find4(callback) { + value: function find11(callback) { for (var _i5 = 0; _i5 < this.getCount(); _i5++) { var _component = this.getComponent(_i5); if (callback(_component, _i5)) { @@ -113405,7 +120601,7 @@ var ComponentManager = /* @__PURE__ */ function() { } }, { key: "findIndex", - value: function findIndex2(callback) { + value: function findIndex3(callback) { for (var _i6 = 0; _i6 < this.getCount(); _i6++) { var _component2 = this.getComponent(_i6); if (callback(_component2, _i6)) { @@ -113462,7 +120658,7 @@ var ComponentManager = /* @__PURE__ */ function() { }() }, { key: "map", - value: function map6(callback) { + value: function map23(callback) { var result = []; for (var _i9 = 0, _Object$keys4 = Object.keys(this.lookup); _i9 < _Object$keys4.length; _i9++) { var _entity4 = _Object$keys4[_i9]; @@ -114269,31 +121465,31 @@ var uint32Tag = "[object Uint32Array]"; var typedArrayTags = {}; typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; -var objectProto2 = Object.prototype; -var objectToString = objectProto2.toString; +var objectProto = Object.prototype; +var objectToString = objectProto.toString; function baseIsTypedArray(value2) { - return isObjectLike3(value2) && isLength(value2.length) && !!typedArrayTags[objectToString.call(value2)]; + return isObjectLike2(value2) && isLength(value2.length) && !!typedArrayTags[objectToString.call(value2)]; } function isLength(value2) { return typeof value2 === "number" && value2 > -1 && value2 % 1 === 0 && value2 <= MAX_SAFE_INTEGER; } -function isObjectLike3(value2) { +function isObjectLike2(value2) { return !!value2 && _typeof3(value2) === "object"; } var isTypedArray = baseIsTypedArray; // node_modules/@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js function ownKeys(object, enumerableOnly) { - var keys2 = Object.keys(object); + var keys6 = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); - keys2.push.apply(keys2, symbols); + keys6.push.apply(keys6, symbols); } - return keys2; + return keys6; } function _objectSpread(target) { for (var i4 = 1; i4 < arguments.length; i4++) { @@ -114871,16 +122067,16 @@ var GeometrySystem = (_dec3 = (0, import_inversify2.injectable)(), _dec22 = (0, // node_modules/@antv/g-webgpu-core/es/components/material/MaterialComponent.js function ownKeys2(object, enumerableOnly) { - var keys2 = Object.keys(object); + var keys6 = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); - keys2.push.apply(keys2, symbols); + keys6.push.apply(keys6, symbols); } - return keys2; + return keys6; } function _objectSpread2(target) { for (var i4 = 1; i4 < arguments.length; i4++) { @@ -115020,16 +122216,16 @@ var _descriptor23; var _descriptor32; var _temp3; function ownKeys3(object, enumerableOnly) { - var keys2 = Object.keys(object); + var keys6 = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); - keys2.push.apply(keys2, symbols); + keys6.push.apply(keys6, symbols); } - return keys2; + return keys6; } function _objectSpread3(target) { for (var i4 = 1; i4 < arguments.length; i4++) { @@ -115200,13 +122396,13 @@ var AABB = /* @__PURE__ */ function() { } }, { key: "setMinMax", - value: function setMinMax(min7, max8) { - vec3_exports.add(this.center, max8, min7); + value: function setMinMax(min13, max15) { + vec3_exports.add(this.center, max15, min13); vec3_exports.scale(this.center, this.center, 0.5); - vec3_exports.sub(this.halfExtents, max8, min7); + vec3_exports.sub(this.halfExtents, max15, min13); vec3_exports.scale(this.halfExtents, this.halfExtents, 0.5); - vec3_exports.copy(this.min, min7); - vec3_exports.copy(this.max, max8); + vec3_exports.copy(this.min, min13); + vec3_exports.copy(this.max, max15); } }, { key: "getMin", @@ -115292,9 +122488,9 @@ var AABB = /* @__PURE__ */ function() { }, { key: "containsPoint", value: function containsPoint(point2) { - var min7 = this.getMin(); - var max8 = this.getMax(); - return !(point2[0] < min7[0] || point2[0] > max8[0] || point2[1] < min7[1] || point2[1] > max8[1] || point2[2] < min7[2] || point2[2] > max8[2]); + var min13 = this.getMin(); + var max15 = this.getMax(); + return !(point2[0] < min13[0] || point2[0] > max15[0] || point2[1] < min13[1] || point2[1] > max15[1] || point2[2] < min13[2] || point2[2] > max15[2]); } }, { key: "getNegativeFarPoint", @@ -116616,7 +123812,7 @@ var RendererSystem = (_dec14 = (0, import_inversify8.injectable)(), _dec28 = (0, } }, { key: "pick", - value: function pick2(position2, view) { + value: function pick5(position2, view) { var pickingPass = this.renderPassFactory(PixelPickingPass.IDENTIFIER); return pickingPass.pick(position2, view); } @@ -117195,7 +124391,7 @@ TransformComponent.DIRTY = 1 << 0; // node_modules/@antv/g-webgpu-core/es/inversify.config.js var import_inversify14 = __toModule(require_inversify()); -var import_inversify_inject_decorators = __toModule(require_lib3()); +var import_inversify_inject_decorators = __toModule(require_lib4()); // node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js var import_inversify10 = __toModule(require_inversify()); @@ -117297,12 +124493,12 @@ var ConfigService = (_dec17 = (0, import_inversify11.injectable)(), _dec17(_clas } _createClass(ConfigService2, [{ key: "get", - value: function get3() { + value: function get100() { return this.config; } }, { key: "set", - value: function set10(config) { + value: function set13(config) { this.config = config; } }]); @@ -117429,7 +124625,7 @@ function extractUniforms(content) { } // node_modules/@antv/g-webgpu-core/es/utils/uniq.js -function uniq4(array) { +function uniq9(array) { return array.filter(function(v3, i4, a4) { return a4.indexOf(v3) === i4; }); @@ -117440,16 +124636,16 @@ var _dec19; var _class14; var _temp12; function ownKeys4(object, enumerableOnly) { - var keys2 = Object.keys(object); + var keys6 = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); - keys2.push.apply(keys2, symbols); + keys6.push.apply(keys6, symbols); } - return keys2; + return keys6; } function _objectSpread4(target) { for (var i4 = 1; i4 < arguments.length; i4++) { @@ -117526,7 +124722,7 @@ var ShaderModuleService = (_dec19 = (0, import_inversify13.injectable)(), _dec19 var _this$processModule = this.processModule(rawVS, [], "vs"), vs = _this$processModule.content, vsIncludeList = _this$processModule.includeList; var _this$processModule2 = this.processModule(rawFS, [], "fs"), fs = _this$processModule2.content, fsIncludeList = _this$processModule2.includeList; var compiledFs = fs; - var uniforms = uniq4(vsIncludeList.concat(fsIncludeList).concat(moduleName)).reduce(function(prev, cur) { + var uniforms = uniq9(vsIncludeList.concat(fsIncludeList).concat(moduleName)).reduce(function(prev, cur) { return _objectSpread4(_objectSpread4({}, prev), _this.rawContentCache[cur].uniforms); }, {}); if (!precisionRegExp.test(fs)) { @@ -117600,32 +124796,32 @@ function createWorldContainer() { // node_modules/@antv/g-webgpu-core/es/utils/aabb.js function generateAABBFromVertices(positions) { var aabb = new AABB(); - var min7 = vec3_exports.fromValues(positions[0], positions[1], positions[2]); - var max8 = vec3_exports.fromValues(positions[0], positions[1], positions[2]); + var min13 = vec3_exports.fromValues(positions[0], positions[1], positions[2]); + var max15 = vec3_exports.fromValues(positions[0], positions[1], positions[2]); for (var i4 = 3; i4 < positions.length; ) { var x6 = positions[i4++]; var y5 = positions[i4++]; var z3 = positions[i4++]; - if (x6 < min7[0]) { - min7[0] = x6; + if (x6 < min13[0]) { + min13[0] = x6; } - if (y5 < min7[1]) { - min7[1] = y5; + if (y5 < min13[1]) { + min13[1] = y5; } - if (z3 < min7[2]) { - min7[2] = z3; + if (z3 < min13[2]) { + min13[2] = z3; } - if (x6 > max8[0]) { - max8[0] = x6; + if (x6 > max15[0]) { + max15[0] = x6; } - if (y5 > max8[1]) { - max8[1] = y5; + if (y5 > max15[1]) { + max15[1] = y5; } - if (z3 > max8[2]) { - max8[2] = z3; + if (z3 > max15[2]) { + max15[2] = z3; } } - aabb.setMinMax(min7, max8); + aabb.setMinMax(min13, max15); return aabb; } @@ -117731,7 +124927,7 @@ var DefineValuePlaceholder = "__DefineValuePlaceholder__"; var import_inversify16 = __toModule(require_inversify()); // node_modules/@antv/g-webgpu/es/utils/is-number.js -function isNumber5(value2) { +function isNumber47(value2) { return typeof value2 === "number"; } @@ -117745,7 +124941,7 @@ function getAngle5(angle3) { return angle3; } function createVec3(x6, y5, z3) { - if (isNumber5(x6)) { + if (isNumber47(x6)) { return vec3_exports.fromValues(x6, y5, z3); } if (x6.length === 3) { @@ -117900,7 +125096,7 @@ var Camera = (_dec20 = (0, import_inversify16.injectable)(), _dec211 = (0, impor } _createClass(Camera2, [{ key: "clone", - value: function clone10() { + value: function clone41() { var camera = new Camera2(); camera.setType(this.type, void 0); camera.interactor = this.interactor; @@ -118511,11 +125707,11 @@ var toString6 = {}.toString; var isType4 = function isType5(value2, type2) { return toString6.call(value2) === "[object " + type2 + "]"; }; -var is_type_default2 = isType4; +var is_type_default = isType4; // node_modules/@antv/g-webgpu/es/utils/is-array.js -var is_array_default2 = function(value2) { - return Array.isArray ? Array.isArray(value2) : is_type_default2(value2, "Array"); +var is_array_default = function(value2) { + return Array.isArray ? Array.isArray(value2) : is_type_default(value2, "Array"); }; // node_modules/@antv/g-webgpu/es/utils/is-typedarray.js @@ -118547,15 +125743,15 @@ var uint32Tag2 = "[object Uint32Array]"; var typedArrayTags2 = {}; typedArrayTags2[float32Tag2] = typedArrayTags2[float64Tag2] = typedArrayTags2[int8Tag2] = typedArrayTags2[int16Tag2] = typedArrayTags2[int32Tag2] = typedArrayTags2[uint8Tag2] = typedArrayTags2[uint8ClampedTag2] = typedArrayTags2[uint16Tag2] = typedArrayTags2[uint32Tag2] = true; typedArrayTags2[argsTag2] = typedArrayTags2[arrayTag2] = typedArrayTags2[arrayBufferTag2] = typedArrayTags2[boolTag2] = typedArrayTags2[dataViewTag2] = typedArrayTags2[dateTag2] = typedArrayTags2[errorTag2] = typedArrayTags2[funcTag2] = typedArrayTags2[mapTag2] = typedArrayTags2[numberTag2] = typedArrayTags2[objectTag2] = typedArrayTags2[regexpTag2] = typedArrayTags2[setTag2] = typedArrayTags2[stringTag2] = typedArrayTags2[weakMapTag2] = false; -var objectProto3 = Object.prototype; -var objectToString2 = objectProto3.toString; +var objectProto2 = Object.prototype; +var objectToString2 = objectProto2.toString; function baseIsTypedArray2(value2) { - return isObjectLike4(value2) && isLength2(value2.length) && !!typedArrayTags2[objectToString2.call(value2)]; + return isObjectLike3(value2) && isLength2(value2.length) && !!typedArrayTags2[objectToString2.call(value2)]; } function isLength2(value2) { return typeof value2 === "number" && value2 > -1 && value2 % 1 === 0 && value2 <= MAX_SAFE_INTEGER2; } -function isObjectLike4(value2) { +function isObjectLike3(value2) { return !!value2 && _typeof3(value2) === "object"; } var isTypedArray2 = baseIsTypedArray2; @@ -118570,16 +125766,16 @@ var _descriptor17; var _descriptor210; var _temp15; function ownKeys5(object, enumerableOnly) { - var keys2 = Object.keys(object); + var keys6 = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); - keys2.push.apply(keys2, symbols); + keys6.push.apply(keys6, symbols); } - return keys2; + return keys6; } function _objectSpread5(target) { for (var i4 = 1; i4 < arguments.length; i4++) { @@ -118645,7 +125841,7 @@ var Kernel = (_dec30 = (0, import_inversify18.injectable)(), _dec213 = (0, impor value: function setBinding(name, data3) { var _this = this; if (typeof name === "string") { - var isNumberLikeData = isNumber5(data3) || isTypedArray2(data3) || is_array_default2(data3); + var isNumberLikeData = isNumber47(data3) || isTypedArray2(data3) || is_array_default(data3); if (this.compiledBundle && this.compiledBundle.context) { var existedDefine = this.compiledBundle.context.defines.find(function(b10) { return b10.name === name; @@ -119054,7 +126250,7 @@ var ReglAttribute = /* @__PURE__ */ function() { _classCallCheck(this, ReglAttribute2); this.attribute = void 0; this.buffer = void 0; - var buffer = options.buffer, offset = options.offset, stride = options.stride, normalized = options.normalized, size2 = options.size, divisor = options.divisor; + var buffer = options.buffer, offset = options.offset, stride = options.stride, normalized = options.normalized, size14 = options.size, divisor = options.divisor; this.buffer = buffer; this.attribute = { buffer: buffer.get(), @@ -119063,13 +126259,13 @@ var ReglAttribute = /* @__PURE__ */ function() { normalized: normalized || false, divisor: divisor || 0 }; - if (size2) { - this.attribute.size = size2; + if (size14) { + this.attribute.size = size14; } } _createClass(ReglAttribute2, [{ key: "get", - value: function get3() { + value: function get100() { return this.attribute; } }, { @@ -119130,7 +126326,7 @@ var ReglBuffer = /* @__PURE__ */ function() { } _createClass(ReglBuffer2, [{ key: "get", - value: function get3() { + value: function get100() { return this.buffer; } }, { @@ -119201,31 +126397,31 @@ var uint32Tag3 = "[object Uint32Array]"; var typedArrayTags3 = {}; typedArrayTags3[float32Tag3] = typedArrayTags3[float64Tag3] = typedArrayTags3[int8Tag3] = typedArrayTags3[int16Tag3] = typedArrayTags3[int32Tag3] = typedArrayTags3[uint8Tag3] = typedArrayTags3[uint8ClampedTag3] = typedArrayTags3[uint16Tag3] = typedArrayTags3[uint32Tag3] = true; typedArrayTags3[argsTag3] = typedArrayTags3[arrayTag3] = typedArrayTags3[arrayBufferTag3] = typedArrayTags3[boolTag3] = typedArrayTags3[dataViewTag3] = typedArrayTags3[dateTag3] = typedArrayTags3[errorTag3] = typedArrayTags3[funcTag3] = typedArrayTags3[mapTag3] = typedArrayTags3[numberTag3] = typedArrayTags3[objectTag3] = typedArrayTags3[regexpTag3] = typedArrayTags3[setTag3] = typedArrayTags3[stringTag3] = typedArrayTags3[weakMapTag3] = false; -var objectProto4 = Object.prototype; -var objectToString3 = objectProto4.toString; +var objectProto3 = Object.prototype; +var objectToString3 = objectProto3.toString; function baseIsTypedArray3(value2) { - return isObjectLike5(value2) && isLength3(value2.length) && !!typedArrayTags3[objectToString3.call(value2)]; + return isObjectLike4(value2) && isLength3(value2.length) && !!typedArrayTags3[objectToString3.call(value2)]; } function isLength3(value2) { return typeof value2 === "number" && value2 > -1 && value2 % 1 === 0 && value2 <= MAX_SAFE_INTEGER3; } -function isObjectLike5(value2) { +function isObjectLike4(value2) { return !!value2 && _typeof3(value2) === "object"; } var isTypedArray3 = baseIsTypedArray3; // node_modules/@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js function ownKeys6(object, enumerableOnly) { - var keys2 = Object.keys(object); + var keys6 = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); - keys2.push.apply(keys2, symbols); + keys6.push.apply(keys6, symbols); } - return keys2; + return keys6; } function _objectSpread6(target) { for (var i4 = 1; i4 < arguments.length; i4++) { @@ -119530,7 +126726,7 @@ var ReglElements = /* @__PURE__ */ function() { } _createClass(ReglElements2, [{ key: "get", - value: function get3() { + value: function get100() { return this.elements; } }, { @@ -119570,7 +126766,7 @@ var ReglFramebuffer = /* @__PURE__ */ function() { } _createClass(ReglFramebuffer2, [{ key: "get", - value: function get3() { + value: function get100() { return this.framebuffer; } }, { @@ -119589,7 +126785,7 @@ var ReglFramebuffer = /* @__PURE__ */ function() { }(); // node_modules/@antv/g-webgpu-engine/es/utils/is-object.js -function isObject3(value2) { +function isObject27(value2) { var type2 = _typeof3(value2); return value2 != null && (type2 === "object" || type2 === "function"); } @@ -119607,7 +126803,7 @@ function extractUniformsRecursively(uniformName, uniformValue, uniforms, prefix2 uniforms["".concat(prefix2 && prefix2 + ".").concat(uniformName)] = uniformValue; return; } - if (isObject3(uniformValue)) { + if (isObject27(uniformValue)) { Object.keys(uniformValue).forEach(function(childName) { extractUniformsRecursively(childName, uniformValue[childName], uniforms, "".concat(prefix2 && prefix2 + ".").concat(uniformName)); }); @@ -119623,16 +126819,16 @@ function extractUniformsRecursively(uniformName, uniformValue, uniforms, prefix2 // node_modules/@antv/g-webgpu-engine/es/webgl/ReglModel.js function ownKeys7(object, enumerableOnly) { - var keys2 = Object.keys(object); + var keys6 = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); - keys2.push.apply(keys2, symbols); + keys6.push.apply(keys6, symbols); } - return keys2; + return keys6; } function _objectSpread7(target) { for (var i4 = 1; i4 < arguments.length; i4++) { @@ -119834,7 +127030,7 @@ var ReglTexture2D = /* @__PURE__ */ function() { this.texture = void 0; this.width = void 0; this.height = void 0; - var data3 = options.data, _options$type = options.type, type2 = _options$type === void 0 ? gl.UNSIGNED_BYTE : _options$type, width2 = options.width, height = options.height, _options$flipY = options.flipY, flipY = _options$flipY === void 0 ? false : _options$flipY, _options$format = options.format, format2 = _options$format === void 0 ? gl.RGBA : _options$format, _options$mipmap = options.mipmap, mipmap = _options$mipmap === void 0 ? false : _options$mipmap, _options$wrapS = options.wrapS, wrapS = _options$wrapS === void 0 ? gl.CLAMP_TO_EDGE : _options$wrapS, _options$wrapT = options.wrapT, wrapT = _options$wrapT === void 0 ? gl.CLAMP_TO_EDGE : _options$wrapT, _options$aniso = options.aniso, aniso = _options$aniso === void 0 ? 0 : _options$aniso, _options$alignment = options.alignment, alignment = _options$alignment === void 0 ? 1 : _options$alignment, _options$premultiplyA = options.premultiplyAlpha, premultiplyAlpha = _options$premultiplyA === void 0 ? false : _options$premultiplyA, _options$mag = options.mag, mag = _options$mag === void 0 ? gl.NEAREST : _options$mag, _options$min = options.min, min7 = _options$min === void 0 ? gl.NEAREST : _options$min, _options$colorSpace = options.colorSpace, colorSpace = _options$colorSpace === void 0 ? gl.BROWSER_DEFAULT_WEBGL : _options$colorSpace; + var data3 = options.data, _options$type = options.type, type2 = _options$type === void 0 ? gl.UNSIGNED_BYTE : _options$type, width2 = options.width, height = options.height, _options$flipY = options.flipY, flipY = _options$flipY === void 0 ? false : _options$flipY, _options$format = options.format, format2 = _options$format === void 0 ? gl.RGBA : _options$format, _options$mipmap = options.mipmap, mipmap = _options$mipmap === void 0 ? false : _options$mipmap, _options$wrapS = options.wrapS, wrapS = _options$wrapS === void 0 ? gl.CLAMP_TO_EDGE : _options$wrapS, _options$wrapT = options.wrapT, wrapT = _options$wrapT === void 0 ? gl.CLAMP_TO_EDGE : _options$wrapT, _options$aniso = options.aniso, aniso = _options$aniso === void 0 ? 0 : _options$aniso, _options$alignment = options.alignment, alignment = _options$alignment === void 0 ? 1 : _options$alignment, _options$premultiplyA = options.premultiplyAlpha, premultiplyAlpha = _options$premultiplyA === void 0 ? false : _options$premultiplyA, _options$mag = options.mag, mag = _options$mag === void 0 ? gl.NEAREST : _options$mag, _options$min = options.min, min13 = _options$min === void 0 ? gl.NEAREST : _options$min, _options$colorSpace = options.colorSpace, colorSpace = _options$colorSpace === void 0 ? gl.BROWSER_DEFAULT_WEBGL : _options$colorSpace; this.width = width2; this.height = height; var textureOptions = { @@ -119845,7 +127041,7 @@ var ReglTexture2D = /* @__PURE__ */ function() { wrapS: wrapModeMap[wrapS], wrapT: wrapModeMap[wrapT], mag: filterMap[mag], - min: filterMap[min7], + min: filterMap[min13], alignment, flipY, colorSpace: colorSpaceMap[colorSpace], @@ -119864,7 +127060,7 @@ var ReglTexture2D = /* @__PURE__ */ function() { } _createClass(ReglTexture2D2, [{ key: "get", - value: function get3() { + value: function get100() { return this.texture; } }, { @@ -120134,7 +127330,7 @@ function loadScript(scriptUrl, onSuccess, onError, scriptId) { if (!isWindowObjectExist()) { return; } - var head2 = document.getElementsByTagName("head")[0]; + var head13 = document.getElementsByTagName("head")[0]; var script = document.createElement("script"); script.setAttribute("type", "text/javascript"); script.setAttribute("src", scriptUrl); @@ -120151,7 +127347,7 @@ function loadScript(scriptUrl, onSuccess, onError, scriptId) { onError("Unable to load script '".concat(scriptUrl, "'"), e4); } }; - head2.appendChild(script); + head13.appendChild(script); } function loadScriptAsync(scriptUrl, scriptId) { return new Promise(function(resolve, reject) { @@ -120203,7 +127399,7 @@ var WebGPUAttribute = /* @__PURE__ */ function() { this.options = options; this.attribute = void 0; this.buffer = void 0; - var _options = options, buffer = _options.buffer, offset = _options.offset, stride = _options.stride, normalized = _options.normalized, size2 = _options.size, divisor = _options.divisor, arrayStride = _options.arrayStride, attributes = _options.attributes, stepMode = _options.stepMode; + var _options = options, buffer = _options.buffer, offset = _options.offset, stride = _options.stride, normalized = _options.normalized, size14 = _options.size, divisor = _options.divisor, arrayStride = _options.arrayStride, attributes = _options.attributes, stepMode = _options.stepMode; this.buffer = buffer; this.attribute = { buffer: buffer.get(), @@ -120215,13 +127411,13 @@ var WebGPUAttribute = /* @__PURE__ */ function() { attributes, stepMode: stepMode || "vertex" }; - if (size2) { - this.attribute.size = size2; + if (size14) { + this.attribute.size = size14; } } _createClass(WebGPUAttribute2, [{ key: "get", - value: function get3() { + value: function get100() { return this.attribute; } }, { @@ -120251,7 +127447,7 @@ var WebGPUBuffer = /* @__PURE__ */ function() { } _createClass(WebGPUBuffer2, [{ key: "get", - value: function get3() { + value: function get100() { return this.buffer; } }, { @@ -120292,7 +127488,7 @@ var import_regenerator15 = __toModule(require_regenerator()); var WebGPUConstants3 = __toModule(require_constants()); // node_modules/@antv/g-webgpu-engine/es/utils/is-number.js -function isNumber6(value2) { +function isNumber48(value2) { return typeof value2 === "number"; } @@ -120338,7 +127534,7 @@ var WebGPUComputeModel = /* @__PURE__ */ function() { offset = 0; mergedUniformData = []; uniforms.forEach(function(uniform) { - if (isNumber6(uniform.data)) { + if (isNumber48(uniform.data)) { _this.uniformGPUBufferLayout.push({ name: uniform.name, offset @@ -120637,7 +127833,7 @@ var WebGPUElements = /* @__PURE__ */ function() { } _createClass(WebGPUElements2, [{ key: "get", - value: function get3() { + value: function get100() { return this.buffer; } }, { @@ -120674,7 +127870,7 @@ var WebGPUFramebuffer = /* @__PURE__ */ function() { } _createClass(WebGPUFramebuffer2, [{ key: "get", - value: function get3() { + value: function get100() { var _this$colorTexture, _this$depthTexture; return { color: (_this$colorTexture = this.colorTexture) === null || _this$colorTexture === void 0 ? void 0 : _this$colorTexture.get(), @@ -120777,16 +127973,16 @@ function getColorStateDescriptors(_ref3, swapChainFormat) { // node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js function ownKeys8(object, enumerableOnly) { - var keys2 = Object.keys(object); + var keys6 = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); - keys2.push.apply(keys2, symbols); + keys6.push.apply(keys6, symbols); } - return keys2; + return keys6; } function _objectSpread8(target) { for (var i4 = 1; i4 < arguments.length; i4++) { @@ -121145,7 +128341,7 @@ var WebGPUTexture2D = /* @__PURE__ */ function() { } _createClass(WebGPUTexture2D2, [{ key: "get", - value: function get3() { + value: function get100() { return { texture: this.texture, sampler: this.sampler @@ -121176,7 +128372,7 @@ var WebGPUTexture2D = /* @__PURE__ */ function() { }, { key: "createTexture", value: function createTexture() { - var _this$options = this.options, data3 = _this$options.data, _this$options$type = _this$options.type, type2 = _this$options$type === void 0 ? gl.UNSIGNED_BYTE : _this$options$type, width2 = _this$options.width, height = _this$options.height, _this$options$flipY = _this$options.flipY, flipY = _this$options$flipY === void 0 ? false : _this$options$flipY, _this$options$format = _this$options.format, format2 = _this$options$format === void 0 ? gl.RGBA : _this$options$format, _this$options$mipmap = _this$options.mipmap, mipmap = _this$options$mipmap === void 0 ? false : _this$options$mipmap, _this$options$wrapS = _this$options.wrapS, wrapS = _this$options$wrapS === void 0 ? gl.CLAMP_TO_EDGE : _this$options$wrapS, _this$options$wrapT = _this$options.wrapT, wrapT = _this$options$wrapT === void 0 ? gl.CLAMP_TO_EDGE : _this$options$wrapT, _this$options$aniso = _this$options.aniso, aniso = _this$options$aniso === void 0 ? 0 : _this$options$aniso, _this$options$alignme = _this$options.alignment, alignment = _this$options$alignme === void 0 ? 1 : _this$options$alignme, _this$options$premult = _this$options.premultiplyAlpha, premultiplyAlpha = _this$options$premult === void 0 ? false : _this$options$premult, _this$options$mag = _this$options.mag, mag = _this$options$mag === void 0 ? gl.NEAREST : _this$options$mag, _this$options$min = _this$options.min, min7 = _this$options$min === void 0 ? gl.NEAREST : _this$options$min, _this$options$colorSp = _this$options.colorSpace, colorSpace = _this$options$colorSp === void 0 ? gl.BROWSER_DEFAULT_WEBGL : _this$options$colorSp, usage = _this$options.usage; + var _this$options = this.options, data3 = _this$options.data, _this$options$type = _this$options.type, type2 = _this$options$type === void 0 ? gl.UNSIGNED_BYTE : _this$options$type, width2 = _this$options.width, height = _this$options.height, _this$options$flipY = _this$options.flipY, flipY = _this$options$flipY === void 0 ? false : _this$options$flipY, _this$options$format = _this$options.format, format2 = _this$options$format === void 0 ? gl.RGBA : _this$options$format, _this$options$mipmap = _this$options.mipmap, mipmap = _this$options$mipmap === void 0 ? false : _this$options$mipmap, _this$options$wrapS = _this$options.wrapS, wrapS = _this$options$wrapS === void 0 ? gl.CLAMP_TO_EDGE : _this$options$wrapS, _this$options$wrapT = _this$options.wrapT, wrapT = _this$options$wrapT === void 0 ? gl.CLAMP_TO_EDGE : _this$options$wrapT, _this$options$aniso = _this$options.aniso, aniso = _this$options$aniso === void 0 ? 0 : _this$options$aniso, _this$options$alignme = _this$options.alignment, alignment = _this$options$alignme === void 0 ? 1 : _this$options$alignme, _this$options$premult = _this$options.premultiplyAlpha, premultiplyAlpha = _this$options$premult === void 0 ? false : _this$options$premult, _this$options$mag = _this$options.mag, mag = _this$options$mag === void 0 ? gl.NEAREST : _this$options$mag, _this$options$min = _this$options.min, min13 = _this$options$min === void 0 ? gl.NEAREST : _this$options$min, _this$options$colorSp = _this$options.colorSpace, colorSpace = _this$options$colorSp === void 0 ? gl.BROWSER_DEFAULT_WEBGL : _this$options$colorSp, usage = _this$options.usage; this.width = width2; this.height = height; this.texture = this.engine.device.createTexture({ @@ -121193,7 +128389,7 @@ var WebGPUTexture2D = /* @__PURE__ */ function() { addressModeV: wrapModeMap2[wrapT], addressModeW: wrapModeMap2[wrapS], magFilter: filterMap2[mag], - minFilter: filterMap2[min7], + minFilter: filterMap2[min13], maxAnisotropy: aniso }); } @@ -121952,7 +129148,7 @@ var Merged = (_dec51 = (0, import_inversify24.injectable)(), _dec51(_class31 = / mergedAttributes[i4].dirty = true; } else { if (attribute.data) { - if (isNumber5(attribute.data)) { + if (isNumber47(attribute.data)) { mergedAttributes[i4].push(attribute.data); } else if (isTypedArray2(attribute.data)) { mergedAttributes[i4].data = merge2(mergedAttributes[i4].data, attribute.data); @@ -122462,18 +129658,18 @@ function polyline_normals_default(points, closed, indexOffset) { var total = points.length; for (var i4 = 1; i4 < total; i4++) { var index2 = count2; - var last2 = points[i4 - 1]; + var last17 = points[i4 - 1]; var cur = points[i4]; var next = i4 < points.length - 1 ? points[i4 + 1] : null; attrCounters.push(i4 / total, i4 / total); - (0, import_polyline_miter_util.direction)(lineA, cur, last2); + (0, import_polyline_miter_util.direction)(lineA, cur, last17); if (!_normal) { _normal = [0, 0]; (0, import_polyline_miter_util.normal)(_normal, lineA); } if (!_started) { _started = true; - extrusions(attrPos, out, last2, _normal, 1); + extrusions(attrPos, out, last17, _normal, 1); } attrIndex.push([index2 + 0, index2 + 1, index2 + 2]); if (!next) { @@ -122761,16 +129957,16 @@ var _descriptor215; var _descriptor311; var _temp23; function ownKeys9(object, enumerableOnly) { - var keys2 = Object.keys(object); + var keys6 = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); - keys2.push.apply(keys2, symbols); + keys6.push.apply(keys6, symbols); } - return keys2; + return keys6; } function _objectSpread9(target) { for (var i4 = 1; i4 < arguments.length; i4++) { @@ -123418,12 +130614,12 @@ var TextureCache = (_dec71 = (0, import_inversify33.injectable)(), _dec71(_class } _createClass(TextureCache2, [{ key: "get", - value: function get3(name) { + value: function get100(name) { return this.cache[name]; } }, { key: "set", - value: function set10(name, texture) { + value: function set13(name, texture) { this.cache[name] = texture; } }]); @@ -123442,16 +130638,16 @@ var _descriptor41; var _descriptor217; var _temp27; function ownKeys10(object, enumerableOnly) { - var keys2 = Object.keys(object); + var keys6 = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); - keys2.push.apply(keys2, symbols); + keys6.push.apply(keys6, symbols); } - return keys2; + return keys6; } function _objectSpread10(target) { for (var i4 = 1; i4 < arguments.length; i4++) { @@ -123626,7 +130822,7 @@ var View2 = (_dec74 = (0, import_inversify35.injectable)(), _dec222 = (0, import } }, { key: "pick", - value: function pick2(position2) { + value: function pick5(position2) { return this.rendererSystem.pick(position2, this); } }]); @@ -123646,16 +130842,16 @@ var _class224; var _descriptor48; var _temp29; function ownKeys11(object, enumerableOnly) { - var keys2 = Object.keys(object); + var keys6 = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); - keys2.push.apply(keys2, symbols); + keys6.push.apply(keys6, symbols); } - return keys2; + return keys6; } function _objectSpread11(target) { for (var i4 = 1; i4 < arguments.length; i4++) { @@ -123891,7 +131087,7 @@ var proccessToFunc2 = (value2, defaultV) => { func = () => { return defaultV || 1; }; - } else if (isNumber3(value2)) { + } else if (isNumber45(value2)) { func = () => { return value2; }; @@ -124117,9 +131313,9 @@ var FruchtermanGPULayout = class extends Base3 { const nodeMap = {}; const nodeIdxMap = {}; nodes.forEach((node, i4) => { - if (!isNumber3(node.x)) + if (!isNumber45(node.x)) node.x = Math.random() * this.width; - if (!isNumber3(node.y)) + if (!isNumber45(node.y)) node.y = Math.random() * this.height; nodeMap[node.id] = node; nodeIdxMap[node.id] = i4; @@ -124129,7 +131325,7 @@ var FruchtermanGPULayout = class extends Base3 { yield self2.run(); }); } - executeWithWorker(canvas, ctx4) { + executeWithWorker(canvas, ctx3) { return __awaiter4(this, void 0, void 0, function* () { const self2 = this; const nodes = self2.nodes; @@ -124145,19 +131341,19 @@ var FruchtermanGPULayout = class extends Base3 { const nodeMap = {}; const nodeIdxMap = {}; nodes.forEach((node, i4) => { - if (!isNumber3(node.x)) + if (!isNumber45(node.x)) node.x = Math.random() * this.width; - if (!isNumber3(node.y)) + if (!isNumber45(node.y)) node.y = Math.random() * this.height; nodeMap[node.id] = node; nodeIdxMap[node.id] = i4; }); self2.nodeMap = nodeMap; self2.nodeIdxMap = nodeIdxMap; - yield self2.run(canvas, ctx4); + yield self2.run(canvas, ctx3); }); } - run(canvas, ctx4) { + run(canvas, ctx3) { return __awaiter4(this, void 0, void 0, function* () { const self2 = this; const nodes = self2.nodes; @@ -124174,7 +131370,7 @@ var FruchtermanGPULayout = class extends Base3 { nodes.forEach((node, i4) => { let fx = 0; let fy = 0; - if (isNumber3(node.fx) && isNumber3(node.fy)) { + if (isNumber45(node.fx) && isNumber45(node.fy)) { fx = node.fx || 1e-3; fy = node.fy || 1e-3; } @@ -124247,7 +131443,7 @@ var FruchtermanGPULayout = class extends Base3 { } const finalParticleData = yield kernelFruchterman.getOutput(); if (canvas) { - ctx4.postMessage({ + ctx3.postMessage({ type: LAYOUT_MESSAGE.GPUEND, vertexEdgeData: finalParticleData }); @@ -124362,9 +131558,9 @@ var GForceGPULayout = class extends Base3 { const nodeMap = {}; const nodeIdxMap = {}; nodes.forEach((node, i4) => { - if (!isNumber3(node.x)) + if (!isNumber45(node.x)) node.x = Math.random() * self2.width; - if (!isNumber3(node.y)) + if (!isNumber45(node.y)) node.y = Math.random() * self2.height; nodeMap[node.id] = node; nodeIdxMap[node.id] = i4; @@ -124376,7 +131572,7 @@ var GForceGPULayout = class extends Base3 { yield self2.run(); }); } - executeWithWorker(canvas, ctx4) { + executeWithWorker(canvas, ctx3) { const self2 = this; const nodes = self2.nodes; const center2 = self2.center; @@ -124391,9 +131587,9 @@ var GForceGPULayout = class extends Base3 { const nodeMap = {}; const nodeIdxMap = {}; nodes.forEach((node, i4) => { - if (!isNumber3(node.x)) + if (!isNumber45(node.x)) node.x = Math.random() * self2.width; - if (!isNumber3(node.y)) + if (!isNumber45(node.y)) node.y = Math.random() * self2.height; nodeMap[node.id] = node; nodeIdxMap[node.id] = i4; @@ -124402,9 +131598,9 @@ var GForceGPULayout = class extends Base3 { self2.nodeIdxMap = nodeIdxMap; self2.nodeStrength = proccessToFunc2(self2.nodeStrength, 1); self2.edgeStrength = proccessToFunc2(self2.edgeStrength, 1); - self2.run(canvas, ctx4); + self2.run(canvas, ctx3); } - run(canvas, ctx4) { + run(canvas, ctx3) { return __awaiter5(this, void 0, void 0, function* () { const self2 = this; const nodes = self2.nodes; @@ -124443,14 +131639,14 @@ var GForceGPULayout = class extends Base3 { let nodeGravity = [center2[0], center2[1], gravity]; if (self2.getCenter) { const customCenter = self2.getCenter(node, self2.degrees[i4]); - if (customCenter && isNumber3(customCenter[0]) && isNumber3(customCenter[1]) && isNumber3(customCenter[2])) { + if (customCenter && isNumber45(customCenter[0]) && isNumber45(customCenter[1]) && isNumber45(customCenter[2])) { nodeGravity = customCenter; } } centerXs.push(nodeGravity[0]); centerYs.push(nodeGravity[1]); centerGravities.push(nodeGravity[2]); - if (isNumber3(node.fx) && isNumber3(node.fy)) { + if (isNumber45(node.fx) && isNumber45(node.fy)) { fxs.push(node.fx || 1e-3); fys.push(node.fy || 1e-3); } else { @@ -124528,7 +131724,7 @@ var GForceGPULayout = class extends Base3 { } const finalParticleData = yield kernelGForce.getOutput(); if (canvas) { - ctx4.postMessage({ + ctx3.postMessage({ type: LAYOUT_MESSAGE.GPUEND, vertexEdgeData: finalParticleData }); @@ -124666,7 +131862,7 @@ var ComboForceLayout = class extends Base3 { self2.applyCalculate(displacements); self2.applyComboCenterForce(displacements); nodes.forEach((n3, j4) => { - if (!isNumber3(n3.x) || !isNumber3(n3.y)) + if (!isNumber45(n3.x) || !isNumber45(n3.y)) return; n3.x += displacements[j4].x * velocityDecay; n3.y += displacements[j4].y * velocityDecay; @@ -124676,7 +131872,7 @@ var ComboForceLayout = class extends Base3 { } const meanCenter = [0, 0]; nodes.forEach((n3) => { - if (!isNumber3(n3.x) || !isNumber3(n3.y)) + if (!isNumber45(n3.x) || !isNumber45(n3.y)) return; meanCenter[0] += n3.x; meanCenter[1] += n3.y; @@ -124685,7 +131881,7 @@ var ComboForceLayout = class extends Base3 { meanCenter[1] /= nodes.length; const centerOffset = [center2[0] - meanCenter[0], center2[1] - meanCenter[1]]; nodes.forEach((n3, j4) => { - if (!isNumber3(n3.x) || !isNumber3(n3.y)) + if (!isNumber45(n3.x) || !isNumber45(n3.y)) return; n3.x += centerOffset[0]; n3.y += centerOffset[1]; @@ -124752,9 +131948,9 @@ var ComboForceLayout = class extends Base3 { const nodeSpacing = self2.nodeSpacing; let nodeSizeFunc; let nodeSpacingFunc; - if (isNumber3(nodeSpacing)) { + if (isNumber45(nodeSpacing)) { nodeSpacingFunc = () => nodeSpacing; - } else if (isFunction(nodeSpacing)) { + } else if (isFunction41(nodeSpacing)) { nodeSpacingFunc = nodeSpacing; } else { nodeSpacingFunc = () => 0; @@ -124763,11 +131959,11 @@ var ComboForceLayout = class extends Base3 { if (!nodeSize) { nodeSizeFunc = (d3) => { if (d3.size) { - if (isArray2(d3.size)) { + if (isArray82(d3.size)) { const res = d3.size[0] > d3.size[1] ? d3.size[0] : d3.size[1]; return res / 2; } - if (isObject2(d3.size)) { + if (isObject26(d3.size)) { const res = d3.size.width > d3.size.height ? d3.size.width : d3.size.height; return res / 2; } @@ -124775,11 +131971,11 @@ var ComboForceLayout = class extends Base3 { } return 10; }; - } else if (isFunction(nodeSize)) { + } else if (isFunction41(nodeSize)) { nodeSizeFunc = (d3) => { return nodeSize(d3); }; - } else if (isArray2(nodeSize)) { + } else if (isArray82(nodeSize)) { const larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1]; const radius = larger / 2; nodeSizeFunc = (d3) => radius; @@ -124790,9 +131986,9 @@ var ComboForceLayout = class extends Base3 { this.nodeSize = nodeSizeFunc; const comboSpacing = self2.comboSpacing; let comboSpacingFunc; - if (isNumber3(comboSpacing)) { + if (isNumber45(comboSpacing)) { comboSpacingFunc = () => comboSpacing; - } else if (isFunction(comboSpacing)) { + } else if (isFunction41(comboSpacing)) { comboSpacingFunc = comboSpacing; } else { comboSpacingFunc = () => 0; @@ -124800,11 +131996,11 @@ var ComboForceLayout = class extends Base3 { this.comboSpacing = comboSpacingFunc; const comboPadding = self2.comboPadding; let comboPaddingFunc; - if (isNumber3(comboPadding)) { + if (isNumber45(comboPadding)) { comboPaddingFunc = () => comboPadding; - } else if (isArray2(comboPadding)) { + } else if (isArray82(comboPadding)) { comboPaddingFunc = () => Math.max.apply(null, comboPadding); - } else if (isFunction(comboPadding)) { + } else if (isFunction41(comboPadding)) { comboPaddingFunc = comboPadding; } else { comboPaddingFunc = () => 0; @@ -124815,7 +132011,7 @@ var ComboForceLayout = class extends Base3 { if (!linkDistance) { linkDistance = 10; } - if (isNumber3(linkDistance)) { + if (isNumber45(linkDistance)) { linkDistanceFunc = (d3) => { return linkDistance; }; @@ -124828,7 +132024,7 @@ var ComboForceLayout = class extends Base3 { if (!edgeStrength) { edgeStrength = 1; } - if (isNumber3(edgeStrength)) { + if (isNumber45(edgeStrength)) { edgeStrengthFunc = (d3) => { return edgeStrength; }; @@ -124841,7 +132037,7 @@ var ComboForceLayout = class extends Base3 { if (!nodeStrength) { nodeStrength = 30; } - if (isNumber3(nodeStrength)) { + if (isNumber45(nodeStrength)) { nodeStrengthFunc = (d3) => { return nodeStrength; }; @@ -124911,19 +132107,19 @@ var ComboForceLayout = class extends Base3 { c5.count++; if (child.itemType !== "node") { const childCombo = comboMap[child.id]; - if (isNumber3(childCombo.cx)) + if (isNumber45(childCombo.cx)) c5.cx += childCombo.cx; - if (isNumber3(childCombo.cy)) + if (isNumber45(childCombo.cy)) c5.cy += childCombo.cy; return; } const node = nodeMap[child.id]; if (!node) return; - if (isNumber3(node.x)) { + if (isNumber45(node.x)) { c5.cx += node.x; } - if (isNumber3(node.y)) { + if (isNumber45(node.y)) { c5.cy += node.y; } }); @@ -124960,9 +132156,9 @@ var ComboForceLayout = class extends Base3 { c5.children.forEach((child) => { if (child.itemType !== "node") { const childCombo = comboMap[child.id]; - if (childCombo && isNumber3(childCombo.cx)) + if (childCombo && isNumber45(childCombo.cx)) c5.cx += childCombo.cx; - if (childCombo && isNumber3(childCombo.cy)) + if (childCombo && isNumber45(childCombo.cy)) c5.cy += childCombo.cy; return; } @@ -124974,9 +132170,9 @@ var ComboForceLayout = class extends Base3 { const params = comboGravity * alpha / l4 * gravityScale; displacements[childIdx].x -= vecX * params; displacements[childIdx].y -= vecY * params; - if (isNumber3(node.x)) + if (isNumber45(node.x)) c5.cx += node.x; - if (isNumber3(node.y)) + if (isNumber45(node.y)) c5.cy += node.y; }); c5.cx /= c5.count || 1; @@ -125059,7 +132255,7 @@ var ComboForceLayout = class extends Base3 { c5.maxY = nodeMaxY; }); let minSize = self2.oriComboMap[treeNode.id].size || 10; - if (isArray2(minSize)) + if (isArray82(minSize)) minSize = minSize[0]; const maxLength = Math.max(c5.maxX - c5.minX, c5.maxY - c5.minY, minSize); c5.r = maxLength / 2 + comboSpacing(c5) / 2 + comboPadding(c5); @@ -125142,7 +132338,7 @@ var ComboForceLayout = class extends Base3 { calRepulsive(displacements, vecMap) { const self2 = this; const nodes = self2.nodes; - const max8 = self2.width * self2.optimizeRangeFactor; + const max15 = self2.width * self2.optimizeRangeFactor; const nodeStrength = self2.nodeStrength; const alpha = self2.alpha; const nodeCollideStrength = self2.nodeCollideStrength; @@ -125169,7 +132365,7 @@ var ComboForceLayout = class extends Base3 { if (!u3.x || !u3.y) return; const { vl2, vl } = vecMap[`${v3.id}-${u3.id}`]; - if (vl > max8) + if (vl > max15) return; const { vx, vy } = vecMap[`${v3.id}-${u3.id}`]; let depthDiff = Math.log(Math.abs(u3.depth - v3.depth) / 10) + 1 || 1; @@ -125229,7 +132425,7 @@ var ComboForceLayout = class extends Base3 { } else if (u3.comboId === v3.comboId) { depthParam = 2; } - if (!isNumber3(v3.x) || !isNumber3(u3.x) || !isNumber3(v3.y) || !isNumber3(u3.y)) { + if (!isNumber45(v3.x) || !isNumber45(u3.x) || !isNumber45(v3.y) || !isNumber45(u3.y)) { return; } const { vl, vx, vy } = vecMap[`${target}-${source}`]; @@ -125478,16 +132674,16 @@ var ForceAtlas2Layout = class extends Base3 { const node = nodes[i4]; let nodeWidth = 10; let nodeHeight = 10; - if (isNumber3(node.size)) { + if (isNumber45(node.size)) { nodeWidth = node.size; nodeHeight = node.size; } - if (isArray2(node.size)) { + if (isArray82(node.size)) { if (!isNaN(node.size[0])) nodeWidth = node.size[0]; if (!isNaN(node.size[1])) nodeHeight = node.size[1]; - } else if (isObject2(node.size)) { + } else if (isObject26(node.size)) { nodeWidth = node.size.width; nodeHeight = node.size.height; } @@ -125543,13 +132739,13 @@ var ForceAtlas2Layout = class extends Base3 { const target = getEdgeTerminal(edge2, "target"); return source !== target; }); - const size2 = nodes.length; + const size14 = nodes.length; const esize = nonLoopEdges.length; const degrees = []; const idMap = {}; const edgeEndsIdMap = {}; const Es = []; - for (let i4 = 0; i4 < size2; i4 += 1) { + for (let i4 = 0; i4 < size14; i4 += 1) { idMap[nodes[i4].id] = i4; degrees[i4] = 0; if (nodes[i4].x === void 0 || isNaN(nodes[i4].x)) { @@ -125565,7 +132761,7 @@ var ForceAtlas2Layout = class extends Base3 { let node2; let sIdx = 0; let tIdx = 0; - for (let j4 = 0; j4 < size2; j4 += 1) { + for (let j4 = 0; j4 < size14; j4 += 1) { const source = getEdgeTerminal(nonLoopEdges[i4], "source"); const target = getEdgeTerminal(nonLoopEdges[i4], "target"); if (nodes[j4].id === source) { @@ -125822,8 +133018,8 @@ var ForceAtlas2Layout = class extends Base3 { let sn = ks * sg / (1 + sg * Math.sqrt(swgns[i4])); let absForce = Math.hypot(forces[2 * i4], forces[2 * i4 + 1]); absForce = absForce < 1e-4 ? 1e-4 : absForce; - const max8 = ksmax / absForce; - sn = sn > max8 ? max8 : sn; + const max15 = ksmax / absForce; + sn = sn > max15 ? max15 : sn; const dnx = sn * forces[2 * i4]; const dny = sn * forces[2 * i4 + 1]; nodes[i4].x += dnx; @@ -126515,1176 +133711,7 @@ var Layouts = { er: ERLayout }; -// node_modules/@antv/g6-pc/es/layout/index.js -registerLayout("grid", GridLayout); -registerLayout("random", RandomLayout); -registerLayout("force", ForceLayout); -registerLayout("circular", CircularLayout); -registerLayout("dagre", DagreLayout); -registerLayout("radial", RadialLayout); -registerLayout("concentric", ConcentricLayout); -registerLayout("mds", MDSLayout); -registerLayout("fruchterman", FruchtermanLayout); -registerLayout("fruchterman-gpu", FruchtermanGPULayout); -registerLayout("gForce", GForceLayout); -registerLayout("gForce-gpu", GForceGPULayout); -registerLayout("comboForce", ComboForceLayout); -registerLayout("forceAtlas2", ForceAtlas2Layout); -var registerLayout2 = function registerLayout3(name, layoutOverride) { - layoutOverride.isCustomLayout = true; - registerLayout(name, layoutOverride); -}; - -// node_modules/@antv/g6-pc/es/layout/worker/work.js -var WebWorker = function() { - function WebWorker2(worker, workerScirptURL) { - var code = worker.toString(); - var blob = new Blob(["importScripts('" + workerScirptURL + "');(" + code + ")()"], { - type: "text/javascript" - }); - return new Worker(URL.createObjectURL(blob)); - } - return WebWorker2; -}(); -var work_default = WebWorker; - -// node_modules/@antv/g6-pc/es/layout/worker/layout.worker.js -var LayoutWorker = function LayoutWorker2(workerScriptURL) { - if (workerScriptURL === void 0) { - workerScriptURL = "https://unpkg.com/@antv/layout@latest/dist/layout.min.js"; - } - function workerCode() { - var LAYOUT_MESSAGE3 = { - RUN: "LAYOUT_RUN", - END: "LAYOUT_END", - ERROR: "LAYOUT_ERROR", - TICK: "LAYOUT_TICK", - GPURUN: "GPU_LAYOUT_RUN", - GPUEND: "GPU_LAYOUT_END" - }; - layout.registerLayout("grid", layout.GridLayout); - layout.registerLayout("random", layout.RandomLayout); - layout.registerLayout("force", layout.ForceLayout); - layout.registerLayout("circular", layout.CircularLayout); - layout.registerLayout("dagre", layout.DagreLayout); - layout.registerLayout("radial", layout.RadialLayout); - layout.registerLayout("concentric", layout.ConcentricLayout); - layout.registerLayout("mds", layout.MDSLayout); - layout.registerLayout("fruchterman", layout.FruchtermanLayout); - layout.registerLayout("fruchterman-gpu", layout.FruchtermanGPULayout); - layout.registerLayout("gForce", layout.GForceLayout); - layout.registerLayout("gForce-gpu", layout.GForceGPULayout); - layout.registerLayout("comboForce", layout.ComboForceLayout); - layout.registerLayout("forceAtlas2", layout.ForceAtlas2Layout); - function isLayoutMessage(event) { - var type2 = event.data.type; - return type2 === LAYOUT_MESSAGE3.RUN || type2 === LAYOUT_MESSAGE3.GPURUN; - } - function handleLayoutMessage(event) { - var _this = this; - var type2 = event.data.type; - switch (type2) { - case LAYOUT_MESSAGE3.RUN: { - var _a6 = event.data, nodes_1 = _a6.nodes, edges = _a6.edges, _b = _a6.layoutCfg, layoutCfg = _b === void 0 ? {} : _b; - var layoutType = layoutCfg.type; - var LayoutClass = layout.getLayoutByName(layoutType); - if (!LayoutClass) { - this.postMessage({ - type: LAYOUT_MESSAGE3.ERROR, - message: "layout " + layoutType + " not found" - }); - break; - } - var layoutMethod_1; - layoutCfg.onLayoutEnd = function() { - _this.postMessage({ - type: LAYOUT_MESSAGE3.END, - nodes: nodes_1 - }); - layoutMethod_1 === null || layoutMethod_1 === void 0 ? void 0 : layoutMethod_1.destroy(); - }; - layoutMethod_1 = new LayoutClass(layoutCfg); - layoutMethod_1.init({ - nodes: nodes_1, - edges - }); - layoutMethod_1.execute(); - break; - } - case LAYOUT_MESSAGE3.GPURUN: { - var _c = event.data, nodes = _c.nodes, edges = _c.edges, _d = _c.layoutCfg, layoutCfg = _d === void 0 ? {} : _d, canvas = _c.canvas; - var layoutType = layoutCfg.type; - var LayoutClass = layout.getLayoutByName(layoutType); - if (!LayoutClass) { - this.postMessage({ - type: LAYOUT_MESSAGE3.ERROR, - message: "layout " + layoutType + " not found" - }); - break; - } - if (layoutType.split("-")[1] !== "gpu") { - this.postMessage({ - type: LAYOUT_MESSAGE3.ERROR, - message: "layout " + layoutType + " does not support GPU" - }); - break; - } - var layoutMethod = new LayoutClass(layoutCfg); - layoutMethod.init({ - nodes, - edges - }); - layoutMethod.executeWithWorker(canvas, this); - break; - } - default: - break; - } - } - onmessage = function onmessage2(event) { - if (isLayoutMessage(event)) { - handleLayoutMessage(event); - } - }; - } - var layoutWorker = new work_default(workerCode, workerScriptURL); - return layoutWorker; -}; - -// node_modules/@antv/g6-pc/es/layout/worker/layoutConst.js -var LAYOUT_MESSAGE2 = { - RUN: "LAYOUT_RUN", - END: "LAYOUT_END", - ERROR: "LAYOUT_ERROR", - TICK: "LAYOUT_TICK", - GPURUN: "GPU_LAYOUT_RUN", - GPUEND: "GPU_LAYOUT_END" -}; - -// node_modules/@antv/g6-pc/es/util/gpu.js -var gpu_exports = {}; -__export(gpu_exports, { - gpuDetector: () => gpuDetector -}); -var gpuDetector = function gpuDetector2() { - if (typeof window === "undefined" || typeof document === "undefined") - return {}; - return { - canvas: !!window.CanvasRenderingContext2D, - webgl: function() { - try { - var canvas = document.createElement("canvas"); - return !!(window.WebGLRenderingContext && (canvas.getContext("webgl") || canvas.getContext("experimental-webgl"))); - } catch (e4) { - return false; - } - }(), - workers: !!window.Worker, - fileapi: window.File && window.FileReader && window.FileList && window.Blob, - getWebGLErrorMessage: function getWebGLErrorMessage() { - var element = document.createElement("div"); - element.id = "webgl-error-message"; - element.style.fontFamily = "monospace"; - element.style.fontSize = "13px"; - element.style.fontWeight = "normal"; - element.style.textAlign = "center"; - element.style.background = "#fff"; - element.style.color = "#000"; - element.style.padding = "1.5em"; - element.style.width = "400px"; - element.style.margin = "5em auto 0"; - if (!this.webgl) { - element.innerHTML = window.WebGLRenderingContext ? ['Your graphics card does not seem to support WebGL.
    ', 'Find out how to get it here.'].join("\n") : ['Your browser does not seem to support WebGL.
    ', 'Find out how to get it here.'].join("\n"); - } - return element; - }, - addGetWebGLMessage: function addGetWebGLMessage(parameters) { - parameters = parameters || {}; - var parent = parameters.parent !== void 0 ? parameters.parent : document.body; - var id = parameters.id !== void 0 ? parameters.id : "oldie"; - var element = gpuDetector2().getWebGLErrorMessage(); - element.id = id; - parent.appendChild(element); - } - }; -}; - -// node_modules/@antv/g6-pc/es/graph/controller/layout.js -function _typeof4(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof4 = function _typeof5(obj2) { - return typeof obj2; - }; - } else { - _typeof4 = function _typeof5(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof4(obj); -} -var mockRaf = function mockRaf2(cb) { - return setTimeout(cb, 16); -}; -var mockCaf = function mockCaf2(reqId) { - return clearTimeout(reqId); -}; -var helper = { - requestAnimationFrame: function requestAnimationFrame3(callback) { - var fn2 = typeof window !== "undefined" ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || mockRaf : mockRaf; - return fn2(callback); - }, - cancelAnimationFrame: function cancelAnimationFrame3(requestId) { - var fn2 = typeof window !== "undefined" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || mockCaf : mockCaf; - return fn2(requestId); - } -}; -var GPULayoutNames = ["fruchterman", "gForce"]; -var LayoutPipesAdjustNames = ["force", "grid", "circular"]; -var LayoutController2 = function(_super) { - __extends(LayoutController3, _super); - function LayoutController3(graph) { - var _this = _super.call(this, graph) || this; - _this.graph = graph; - _this.layoutCfg = graph.get("layout") || {}; - _this.layoutType = _this.getLayoutType(); - _this.worker = null; - _this.workerData = {}; - _this.initLayout(); - return _this; - } - LayoutController3.prototype.initLayout = function() { - }; - LayoutController3.prototype.getWorker = function() { - if (this.worker) { - return this.worker; - } - if (typeof Worker === "undefined") { - console.warn("Web worker is not supported in current browser."); - this.worker = null; - } else { - this.worker = LayoutWorker(this.layoutCfg.workerScriptURL); - } - return this.worker; - }; - LayoutController3.prototype.stopWorker = function() { - var workerData = this.workerData; - if (!this.worker) { - return; - } - this.worker.terminate(); - this.worker = null; - if (workerData.requestId) { - helper.cancelAnimationFrame(workerData.requestId); - workerData.requestId = null; - } - if (workerData.requestId2) { - helper.cancelAnimationFrame(workerData.requestId2); - workerData.requestId2 = null; - } - }; - LayoutController3.prototype.execLayoutMethod = function(layoutCfg, order2) { - var _this = this; - return new Promise(function(reslove, reject) { - var graph = _this.graph; - var layoutType = layoutCfg.type; - layoutCfg.onLayoutEnd = function() { - graph.emit("aftersublayout", { - type: layoutType - }); - reslove(); - }; - if (layoutType && _this.isGPU) { - if (!_this.hasGPUVersion(layoutType)) { - console.warn("The '" + layoutType + "' layout does not support GPU calculation for now, it will run in CPU."); - } else { - layoutType = layoutType + "-gpu"; - } - } - var isForce = layoutType === "force" || layoutType === "g6force" || layoutType === "gForce"; - if (isForce) { - var onTick_1 = layoutCfg.onTick; - var tick = function tick2() { - if (onTick_1) { - onTick_1(); - } - graph.refreshPositions(); - }; - layoutCfg.tick = tick; - } else if (layoutCfg.type === "comboForce") { - layoutCfg.comboTrees = graph.get("comboTrees"); - } - var enableTick = false; - var layoutMethod; - try { - layoutMethod = new Layouts[layoutType](layoutCfg); - } catch (e4) { - console.warn("The layout method: '" + layoutType + "' does not exist! Please specify it first."); - reject(); - } - enableTick = layoutMethod.enableTick; - if (enableTick) { - var onTick_2 = layoutCfg.onTick; - var tick = function tick2() { - if (onTick_2) { - onTick_2(); - } - graph.refreshPositions(); - }; - layoutMethod.tick = tick; - } - var layoutData = _this.filterLayoutData(_this.data, layoutCfg); - addLayoutOrder(layoutData, order2); - layoutMethod.init(layoutData); - graph.emit("beforesublayout", { - type: layoutType - }); - layoutMethod.execute(); - if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) - layoutCfg.onLayoutEnd(); - _this.layoutMethods.push(layoutMethod); - }); - }; - LayoutController3.prototype.updateLayoutMethod = function(layoutMethod, layoutCfg) { - var _this = this; - return new Promise(function(reslove, reject) { - var graph = _this.graph; - var layoutType = layoutCfg === null || layoutCfg === void 0 ? void 0 : layoutCfg.type; - layoutCfg.onLayoutEnd = function() { - graph.emit("aftersublayout", { - type: layoutType - }); - reslove(); - }; - var layoutData = _this.filterLayoutData(_this.data, layoutCfg); - layoutMethod.init(layoutData); - layoutMethod.updateCfg(layoutCfg); - graph.emit("beforesublayout", { - type: layoutType - }); - layoutMethod.execute(); - if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) - layoutCfg.onLayoutEnd(); - }); - }; - LayoutController3.prototype.layout = function(success) { - var _this = this; - var graph = this.graph; - this.data = this.setDataFromGraph(); - var _a6 = this.data, nodes = _a6.nodes, hiddenNodes = _a6.hiddenNodes; - if (!nodes) { - return false; - } - var width2 = graph.get("width"); - var height = graph.get("height"); - var layoutCfg = {}; - Object.assign(layoutCfg, { - width: width2, - height, - center: [width2 / 2, height / 2] - }, this.layoutCfg); - this.layoutCfg = layoutCfg; - this.destoryLayoutMethods(); - graph.emit("beforelayout"); - this.initPositions(layoutCfg.center, nodes); - this.initPositions(layoutCfg.center, hiddenNodes); - var layoutType = layoutCfg.type; - if (layoutType && layoutType.split("-")[1] === "gpu") { - layoutType = layoutType.split("-")[0]; - layoutCfg.gpuEnabled = true; - } - var enableGPU = false; - if (layoutCfg.gpuEnabled) { - enableGPU = true; - if (!gpuDetector().webgl) { - console.warn("Your browser does not support webGL or GPGPU. The layout will run in CPU."); - enableGPU = false; - } - } - this.isGPU = enableGPU; - var onLayoutEnd = layoutCfg.onLayoutEnd, layoutEndFormatted = layoutCfg.layoutEndFormatted, adjust4 = layoutCfg.adjust; - if (!layoutEndFormatted) { - layoutCfg.layoutEndFormatted = true; - layoutCfg.onAllLayoutEnd = function() { - return __awaiter(_this, void 0, void 0, function() { - return __generator(this, function(_a7) { - switch (_a7.label) { - case 0: - if (onLayoutEnd) { - onLayoutEnd(); - } - this.refreshLayout(); - if (!(adjust4 && layoutCfg.pipes)) - return [ - 3, - 2 - ]; - return [ - 4, - this.adjustPipesBox(this.data, adjust4) - ]; - case 1: - _a7.sent(); - this.refreshLayout(); - _a7.label = 2; - case 2: - graph.emit("afterlayout"); - return [ - 2 - ]; - } - }); - }); - }; - } - this.stopWorker(); - if (layoutCfg.workerEnabled && this.layoutWithWorker(this.data)) { - return true; - } - var start = Promise.resolve(); - if (layoutCfg.type) { - start = start.then(function() { - return _this.execLayoutMethod(layoutCfg, 0); - }); - } else if (layoutCfg.pipes) { - layoutCfg.pipes.forEach(function(cfg, index2) { - start = start.then(function() { - return _this.execLayoutMethod(cfg, index2); - }); - }); - } - start.then(function() { - if (layoutCfg.onAllLayoutEnd) - layoutCfg.onAllLayoutEnd(); - if (success) - success(); - }).catch(function(error) { - console.warn("graph layout failed,", error); - }); - return false; - }; - LayoutController3.prototype.layoutWithWorker = function(data3) { - var _this = this; - var _a6 = this, layoutCfg = _a6.layoutCfg, graph = _a6.graph; - var worker = this.getWorker(); - var workerData = this.workerData; - if (!worker) { - return false; - } - workerData.requestId = null; - workerData.requestId2 = null; - workerData.currentTick = null; - workerData.currentTickData = null; - graph.emit("beforelayout"); - var start = Promise.resolve(); - if (layoutCfg.type) { - start = start.then(function() { - return _this.runWebworker(worker, data3, layoutCfg); - }); - } else if (layoutCfg.pipes) { - var _loop_1 = function _loop_12(cfg2) { - start = start.then(function() { - return _this.runWebworker(worker, data3, cfg2); - }); - }; - for (var _i = 0, _b = layoutCfg.pipes; _i < _b.length; _i++) { - var cfg = _b[_i]; - _loop_1(cfg); - } - } - start.then(function() { - if (layoutCfg.onAllLayoutEnd) - layoutCfg.onAllLayoutEnd(); - }).catch(function(error) { - console.error("layout failed", error); - }); - return true; - }; - LayoutController3.prototype.runWebworker = function(worker, allData, layoutCfg) { - var _this = this; - var isGPU = this.isGPU; - var data3 = this.filterLayoutData(allData, layoutCfg); - var nodes = data3.nodes, edges = data3.edges; - var offScreenCanvas = document.createElement("canvas"); - var gpuWorkerAbility = isGPU && typeof window !== "undefined" && window.navigator && !navigator["gpu"] && "OffscreenCanvas" in window && "transferControlToOffscreen" in offScreenCanvas; - var filteredLayoutCfg = filterObject(layoutCfg, function(value2) { - return typeof value2 !== "function"; - }); - if (!gpuWorkerAbility) { - worker.postMessage({ - type: LAYOUT_MESSAGE2.RUN, - nodes, - edges, - layoutCfg: filteredLayoutCfg - }); - } else { - var offscreen = offScreenCanvas.transferControlToOffscreen(); - filteredLayoutCfg.type = filteredLayoutCfg.type + "-gpu"; - worker.postMessage({ - type: LAYOUT_MESSAGE2.GPURUN, - nodes, - edges, - layoutCfg: filteredLayoutCfg, - canvas: offscreen - }, [offscreen]); - } - return new Promise(function(reslove, reject) { - worker.onmessage = function(event) { - _this.handleWorkerMessage(reslove, reject, event, data3, layoutCfg); - }; - }); - }; - LayoutController3.prototype.handleWorkerMessage = function(reslove, reject, event, data3, layoutCfg) { - var _a6 = this, graph = _a6.graph, workerData = _a6.workerData; - var eventData = event.data; - var type2 = eventData.type; - var onTick = function onTick2() { - if (layoutCfg.onTick) { - layoutCfg.onTick(); - } - }; - switch (type2) { - case LAYOUT_MESSAGE2.TICK: - workerData.currentTick = eventData.currentTick; - workerData.currentTickData = eventData; - if (!workerData.requestId) { - workerData.requestId = helper.requestAnimationFrame(function requestId() { - updateLayoutPosition(data3, eventData); - graph.refreshPositions(); - onTick(); - if (eventData.currentTick === eventData.totalTicks) { - reslove(); - } else if (workerData.currentTick === eventData.totalTicks) { - workerData.requestId2 = helper.requestAnimationFrame(function requestId2() { - updateLayoutPosition(data3, workerData.currentTickData); - graph.refreshPositions(); - workerData.requestId2 = null; - onTick(); - reslove(); - }); - } - workerData.requestId = null; - }); - } - break; - case LAYOUT_MESSAGE2.END: - if (workerData.currentTick == null) { - updateLayoutPosition(data3, eventData); - reslove(); - } - break; - case LAYOUT_MESSAGE2.GPUEND: - if (workerData.currentTick == null) { - updateGPUWorkerLayoutPosition(data3, eventData); - reslove(); - } - break; - case LAYOUT_MESSAGE2.ERROR: - console.warn("Web-Worker layout error!", eventData.message); - reject(); - break; - default: - reject(); - break; - } - }; - LayoutController3.prototype.updateLayoutCfg = function(cfg) { - var _this = this; - var _a6 = this, graph = _a6.graph, layoutMethods = _a6.layoutMethods; - var layoutCfg = mix({}, this.layoutCfg, cfg); - this.layoutCfg = layoutCfg; - if (!(layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.length)) { - this.layout(); - return; - } - this.data = this.setDataFromGraph(); - this.stopWorker(); - if (cfg.workerEnabled && this.layoutWithWorker(this.data)) { - return; - } - graph.emit("beforelayout"); - var start = Promise.resolve(); - if (layoutMethods.length === 1) { - start = start.then(function() { - return _this.updateLayoutMethod(layoutMethods[0], layoutCfg); - }); - } else { - layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function(layoutMethod, index2) { - var currentCfg = layoutCfg.pipes[index2]; - start = start.then(function() { - return _this.updateLayoutMethod(layoutMethod, currentCfg); - }); - }); - } - start.then(function() { - if (layoutCfg.onAllLayoutEnd) - layoutCfg.onAllLayoutEnd(); - }).catch(function(error) { - console.warn("layout failed", error); - }); - }; - LayoutController3.prototype.adjustPipesBox = function(data3, adjust4) { - var _this = this; - return new Promise(function(resolve) { - var nodes = data3.nodes; - if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length)) { - resolve(); - } - if (!LayoutPipesAdjustNames.includes(adjust4)) { - console.warn("The adjust type " + adjust4 + " is not supported yet, please assign it with 'force', 'grid', or 'circular'."); - resolve(); - } - var layoutCfg = { - center: _this.layoutCfg.center, - nodeSize: function nodeSize(d3) { - return Math.max(d3.height, d3.width); - }, - preventOverlap: true, - onLayoutEnd: function onLayoutEnd() { - } - }; - var _a6 = _this.getLayoutBBox(nodes), groupNodes = _a6.groupNodes, layoutNodes2 = _a6.layoutNodes; - var preNodes = clone_default(layoutNodes2); - layoutCfg.onLayoutEnd = function() { - layoutNodes2 === null || layoutNodes2 === void 0 ? void 0 : layoutNodes2.forEach(function(ele, index2) { - var _a7, _b, _c; - var dx = ele.x - ((_a7 = preNodes[index2]) === null || _a7 === void 0 ? void 0 : _a7.x); - var dy = ele.y - ((_b = preNodes[index2]) === null || _b === void 0 ? void 0 : _b.y); - (_c = groupNodes[index2]) === null || _c === void 0 ? void 0 : _c.forEach(function(n3) { - n3.x += dx; - n3.y += dy; - }); - }); - resolve(); - }; - var layoutMethod = new Layouts[adjust4](layoutCfg); - layoutMethod.layout({ - nodes: layoutNodes2 - }); - }); - }; - LayoutController3.prototype.hasGPUVersion = function(layoutName) { - var length5 = GPULayoutNames.length; - for (var i4 = 0; i4 < length5; i4++) { - if (GPULayoutNames[i4] === layoutName) - return true; - } - return false; - }; - LayoutController3.prototype.destroy = function() { - this.destoryLayoutMethods(); - var worker = this.worker; - if (worker) { - worker.terminate(); - this.worker = null; - } - this.destroyed = true; - this.graph.set("layout", void 0); - this.layoutCfg = void 0; - this.layoutType = void 0; - this.layoutMethods = void 0; - this.graph = null; - }; - return LayoutController3; -}(layout_default); -var layout_default3 = LayoutController2; -function updateLayoutPosition(data3, layoutData) { - var nodes = data3.nodes; - var layoutNodes2 = layoutData.nodes; - var nodeLength = nodes.length; - for (var i4 = 0; i4 < nodeLength; i4++) { - var node = nodes[i4]; - node.x = layoutNodes2[i4].x; - node.y = layoutNodes2[i4].y; - } -} -function filterObject(collection, callback) { - var result = {}; - if (collection && _typeof4(collection) === "object") { - Object.keys(collection).forEach(function(key) { - if (collection.hasOwnProperty(key) && callback(collection[key])) { - result[key] = collection[key]; - } - }); - return result; - } - return collection; -} -function updateGPUWorkerLayoutPosition(data3, layoutData) { - var nodes = data3.nodes; - var vertexEdgeData = layoutData.vertexEdgeData; - var nodeLength = nodes.length; - for (var i4 = 0; i4 < nodeLength; i4++) { - var node = nodes[i4]; - var x6 = vertexEdgeData[4 * i4]; - var y5 = vertexEdgeData[4 * i4 + 1]; - node.x = x6; - node.y = y5; - } -} -function addLayoutOrder(data3, order2) { - var _a6; - if (!((_a6 = data3 === null || data3 === void 0 ? void 0 : data3.nodes) === null || _a6 === void 0 ? void 0 : _a6.length)) { - return; - } - var nodes = data3.nodes; - nodes.forEach(function(node) { - node.layoutOrder = order2; - }); -} - -// node_modules/@antv/g6-pc/es/graph/graph.js -var transform13 = ext_exports3.transform; -var SVG2 = "svg"; -var Graph9 = function(_super) { - __extends(Graph10, _super); - function Graph10(cfg) { - var _this = _super.call(this, cfg) || this; - var defaultNode = _this.get("defaultNode"); - if (!defaultNode) { - _this.set("defaultNode", { - type: "circle" - }); - } - if (!defaultNode.type) { - defaultNode.type = "circle"; - _this.set("defaultNode", defaultNode); - } - _this.destroyed = false; - return _this; - } - Graph10.prototype.initLayoutController = function() { - var layoutController = new layout_default3(this); - this.set({ - layoutController - }); - }; - Graph10.prototype.initEventController = function() { - var eventController = new event_default3(this); - this.set({ - eventController - }); - }; - Graph10.prototype.initCanvas = function() { - var container2 = this.get("container"); - if (typeof container2 === "string") { - container2 = document.getElementById(container2); - this.set("container", container2); - } - if (!container2) { - throw new Error("invalid container"); - } - var width2 = this.get("width"); - var height = this.get("height"); - var renderer = this.get("renderer"); - var canvas; - if (renderer === SVG2) { - canvas = new canvas_default3({ - container: container2, - width: width2, - height - }); - } else { - var canvasCfg = { - container: container2, - width: width2, - height - }; - var pixelRatio = this.get("pixelRatio"); - if (pixelRatio) { - canvasCfg.pixelRatio = pixelRatio; - } - canvas = new canvas_default2(canvasCfg); - } - this.set("canvas", canvas); - }; - Graph10.prototype.initPlugins = function() { - var self2 = this; - each_default(self2.get("plugins"), function(plugin) { - if (!plugin.destroyed && plugin.initPlugin) { - plugin.initPlugin(self2); - } - }); - }; - Graph10.prototype.toDataURL = function(type2, backgroundColor) { - var canvas = this.get("canvas"); - var renderer = canvas.getRenderer(); - var canvasDom = canvas.get("el"); - if (!type2) - type2 = "image/png"; - var dataURL = ""; - if (renderer === "svg") { - var cloneNode = canvasDom.cloneNode(true); - var svgDocType = document.implementation.createDocumentType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"); - var svgDoc = document.implementation.createDocument("http://www.w3.org/2000/svg", "svg", svgDocType); - svgDoc.replaceChild(cloneNode, svgDoc.documentElement); - var svgData = new XMLSerializer().serializeToString(svgDoc); - dataURL = "data:image/svg+xml;charset=utf8," + encodeURIComponent(svgData); - } else { - var imageData = void 0; - var context = canvasDom.getContext("2d"); - var width2 = this.get("width"); - var height = this.get("height"); - var compositeOperation = void 0; - if (backgroundColor) { - var pixelRatio = typeof window !== "undefined" ? window.devicePixelRatio : 1; - imageData = context.getImageData(0, 0, width2 * pixelRatio, height * pixelRatio); - compositeOperation = context.globalCompositeOperation; - context.globalCompositeOperation = "destination-over"; - context.fillStyle = backgroundColor; - context.fillRect(0, 0, width2, height); - } - dataURL = canvasDom.toDataURL(type2); - if (backgroundColor) { - context.clearRect(0, 0, width2, height); - context.putImageData(imageData, 0, 0); - context.globalCompositeOperation = compositeOperation; - } - } - return dataURL; - }; - Graph10.prototype.toFullDataURL = function(callback, type2, imageConfig) { - var bbox = this.get("group").getCanvasBBox(); - var height = bbox.height; - var width2 = bbox.width; - var renderer = this.get("renderer"); - var vContainerDOM = createDom(''); - var backgroundColor = imageConfig ? imageConfig.backgroundColor : void 0; - var padding3 = imageConfig ? imageConfig.padding : void 0; - if (!padding3) - padding3 = [0, 0, 0, 0]; - else if (is_number_default(padding3)) - padding3 = [padding3, padding3, padding3, padding3]; - var vHeight = height + padding3[0] + padding3[2]; - var vWidth = width2 + padding3[1] + padding3[3]; - var canvasOptions = { - container: vContainerDOM, - height: vHeight, - width: vWidth, - quickHit: true - }; - var vCanvas = renderer === "svg" ? new canvas_default3(canvasOptions) : new canvas_default2(canvasOptions); - var group2 = this.get("group"); - var vGroup = group2.clone(); - var matrix = clone_default(vGroup.getMatrix()); - if (!matrix) - matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; - var centerX = (bbox.maxX + bbox.minX) / 2; - var centerY = (bbox.maxY + bbox.minY) / 2; - matrix = transform13(matrix, [["t", -centerX, -centerY], ["t", width2 / 2 + padding3[3], height / 2 + padding3[0]]]); - vGroup.resetMatrix(); - vGroup.setMatrix(matrix); - vCanvas.add(vGroup); - var vCanvasEl = vCanvas.get("el"); - var dataURL = ""; - if (!type2) - type2 = "image/png"; - setTimeout(function() { - if (renderer === "svg") { - var cloneNode = vCanvasEl.cloneNode(true); - var svgDocType = document.implementation.createDocumentType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"); - var svgDoc = document.implementation.createDocument("http://www.w3.org/2000/svg", "svg", svgDocType); - svgDoc.replaceChild(cloneNode, svgDoc.documentElement); - var svgData = new XMLSerializer().serializeToString(svgDoc); - dataURL = "data:image/svg+xml;charset=utf8," + encodeURIComponent(svgData); - } else { - var imageData = void 0; - var context = vCanvasEl.getContext("2d"); - var compositeOperation = void 0; - if (backgroundColor) { - var pixelRatio = typeof window !== "undefined" ? window.devicePixelRatio : 1; - imageData = context.getImageData(0, 0, vWidth * pixelRatio, vHeight * pixelRatio); - compositeOperation = context.globalCompositeOperation; - context.globalCompositeOperation = "destination-over"; - context.fillStyle = backgroundColor; - context.fillRect(0, 0, vWidth, vHeight); - } - dataURL = vCanvasEl.toDataURL(type2); - if (backgroundColor) { - context.clearRect(0, 0, vWidth, vHeight); - context.putImageData(imageData, 0, 0); - context.globalCompositeOperation = compositeOperation; - } - } - if (callback) - callback(dataURL); - }, 16); - }; - Graph10.prototype.downloadFullImage = function(name, type2, imageConfig) { - var _this = this; - var bbox = this.get("group").getCanvasBBox(); - var height = bbox.height; - var width2 = bbox.width; - var renderer = this.get("renderer"); - var vContainerDOM = createDom(''); - var backgroundColor = imageConfig ? imageConfig.backgroundColor : void 0; - var padding3 = imageConfig ? imageConfig.padding : void 0; - if (!padding3) - padding3 = [0, 0, 0, 0]; - else if (is_number_default(padding3)) - padding3 = [padding3, padding3, padding3, padding3]; - var vHeight = height + padding3[0] + padding3[2]; - var vWidth = width2 + padding3[1] + padding3[3]; - var canvasOptions = { - container: vContainerDOM, - height: vHeight, - width: vWidth - }; - var vCanvas = renderer === "svg" ? new canvas_default3(canvasOptions) : new canvas_default2(canvasOptions); - var group2 = this.get("group"); - var vGroup = group2.clone(); - var matrix = clone_default(vGroup.getMatrix()); - if (!matrix) - matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; - var centerX = (bbox.maxX + bbox.minX) / 2; - var centerY = (bbox.maxY + bbox.minY) / 2; - matrix = transform13(matrix, [["t", -centerX, -centerY], ["t", width2 / 2 + padding3[3], height / 2 + padding3[0]]]); - vGroup.resetMatrix(); - vGroup.setMatrix(matrix); - vCanvas.add(vGroup); - var vCanvasEl = vCanvas.get("el"); - if (!type2) - type2 = "image/png"; - setTimeout(function() { - var dataURL = ""; - if (renderer === "svg") { - var cloneNode = vCanvasEl.cloneNode(true); - var svgDocType = document.implementation.createDocumentType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"); - var svgDoc = document.implementation.createDocument("http://www.w3.org/2000/svg", "svg", svgDocType); - svgDoc.replaceChild(cloneNode, svgDoc.documentElement); - var svgData = new XMLSerializer().serializeToString(svgDoc); - dataURL = "data:image/svg+xml;charset=utf8," + encodeURIComponent(svgData); - } else { - var imageData = void 0; - var context = vCanvasEl.getContext("2d"); - var compositeOperation = void 0; - if (backgroundColor) { - var pixelRatio = typeof window !== "undefined" ? window.devicePixelRatio : 1; - imageData = context.getImageData(0, 0, vWidth * pixelRatio, vHeight * pixelRatio); - compositeOperation = context.globalCompositeOperation; - context.globalCompositeOperation = "destination-over"; - context.fillStyle = backgroundColor; - context.fillRect(0, 0, vWidth, vHeight); - } - dataURL = vCanvasEl.toDataURL(type2); - if (backgroundColor) { - context.clearRect(0, 0, vWidth, vHeight); - context.putImageData(imageData, 0, 0); - context.globalCompositeOperation = compositeOperation; - } - } - var link = document.createElement("a"); - var fileName = (name || "graph") + (renderer === "svg" ? ".svg" : "." + type2.split("/")[1]); - _this.dataURLToImage(dataURL, renderer, link, fileName); - var e4 = document.createEvent("MouseEvents"); - e4.initEvent("click", false, false); - link.dispatchEvent(e4); - }, 16); - }; - Graph10.prototype.downloadImage = function(name, type2, backgroundColor) { - var _this = this; - var self2 = this; - if (self2.isAnimating()) { - self2.stopAnimate(); - } - var canvas = self2.get("canvas"); - var renderer = canvas.getRenderer(); - if (!type2) - type2 = "image/png"; - var fileName = (name || "graph") + (renderer === "svg" ? ".svg" : type2.split("/")[1]); - var link = document.createElement("a"); - setTimeout(function() { - var dataURL = self2.toDataURL(type2, backgroundColor); - _this.dataURLToImage(dataURL, renderer, link, fileName); - var e4 = document.createEvent("MouseEvents"); - e4.initEvent("click", false, false); - link.dispatchEvent(e4); - }, 16); - }; - Graph10.prototype.dataURLToImage = function(dataURL, renderer, link, fileName) { - if (typeof window !== "undefined") { - if (window.Blob && window.URL && renderer !== "svg") { - var arr = dataURL.split(","); - var mime = ""; - if (arr && arr.length > 0) { - var match = arr[0].match(/:(.*?);/); - if (match && match.length >= 2) - mime = match[1]; - } - var bstr = atob(arr[1]); - var n3 = bstr.length; - var u8arr = new Uint8Array(n3); - while (n3--) { - u8arr[n3] = bstr.charCodeAt(n3); - } - var blobObj_1 = new Blob([u8arr], { - type: mime - }); - if (window.navigator.msSaveBlob) { - window.navigator.msSaveBlob(blobObj_1, fileName); - } else { - link.addEventListener("click", function() { - link.download = fileName; - link.href = window.URL.createObjectURL(blobObj_1); - }); - } - } else { - link.addEventListener("click", function() { - link.download = fileName; - link.href = dataURL; - }); - } - } - }; - Graph10.prototype.addPlugin = function(plugin) { - var self2 = this; - if (plugin.destroyed) { - return; - } - self2.get("plugins").push(plugin); - plugin.initPlugin(self2); - }; - Graph10.prototype.removePlugin = function(plugin) { - var plugins = this.get("plugins"); - var index2 = plugins.indexOf(plugin); - if (index2 >= 0) { - plugin.destroyPlugin(); - plugins.splice(index2, 1); - } - }; - Graph10.prototype.setImageWaterMarker = function(imgURL, config) { - if (imgURL === void 0) { - imgURL = global_default2.waterMarkerImage; - } - var container2 = this.get("container"); - if (is_string_default(container2)) { - container2 = document.getElementById(container2); - } - if (!container2.style.position) { - container2.style.position = "relative"; - } - var canvas = this.get("graphWaterMarker"); - var waterMarkerConfig = deep_mix_default({}, global_default2.imageWaterMarkerConfig, config); - var width2 = waterMarkerConfig.width, height = waterMarkerConfig.height, compatible = waterMarkerConfig.compatible, image = waterMarkerConfig.image; - if (!canvas) { - var canvasCfg = { - container: container2, - width: width2, - height, - capture: false - }; - var pixelRatio = this.get("pixelRatio"); - if (pixelRatio) { - canvasCfg.pixelRatio = pixelRatio; - } - canvas = new canvas_default2(canvasCfg); - this.set("graphWaterMarker", canvas); - } - canvas.get("el").style.display = "none"; - var ctx4 = canvas.get("context"); - var rotate8 = image.rotate, x6 = image.x, y5 = image.y; - ctx4.rotate(-rotate8 * Math.PI / 180); - var img = new Image(); - img.crossOrigin = "anonymous"; - img.src = imgURL; - img.onload = function() { - ctx4.drawImage(img, x6, y5, image.width, image.height); - ctx4.rotate(rotate8 * Math.PI / 180); - if (!compatible) { - var box2 = document.querySelector(".g6-graph-watermarker"); - if (!box2) { - box2 = document.createElement("div"); - box2.className = "g6-graph-watermarker"; - } - box2.className = "g6-graph-watermarker"; - if (!canvas.destroyed) { - box2.style.cssText = "background-image: url(" + canvas.get("el").toDataURL("image/png") + ");background-repeat:repeat;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;z-index:-1;"; - container2.appendChild(box2); - } - } else { - container2.style.cssText = "background-image: url(" + canvas.get("el").toDataURL("image/png") + ");background-repeat:repeat;"; - } - }; - }; - Graph10.prototype.setTextWaterMarker = function(texts, config) { - var container2 = this.get("container"); - if (is_string_default(container2)) { - container2 = document.getElementById(container2); - } - if (!container2.style.position) { - container2.style.position = "relative"; - } - var canvas = this.get("graphWaterMarker"); - var waterMarkerConfig = deep_mix_default({}, global_default2.textWaterMarkerConfig, config); - var width2 = waterMarkerConfig.width, height = waterMarkerConfig.height, compatible = waterMarkerConfig.compatible, text = waterMarkerConfig.text; - if (!canvas) { - var canvasCfg = { - container: container2, - width: width2, - height, - capture: false - }; - var pixelRatio = this.get("pixelRatio"); - if (pixelRatio) { - canvasCfg.pixelRatio = pixelRatio; - } - canvas = new canvas_default2(canvasCfg); - this.set("graphWaterMarker", canvas); - } - canvas.get("el").style.display = "none"; - var ctx4 = canvas.get("context"); - var rotate8 = text.rotate, fill = text.fill, fontFamily = text.fontFamily, fontSize = text.fontSize, baseline = text.baseline, x6 = text.x, y5 = text.y, lineHeight = text.lineHeight; - ctx4.rotate(-rotate8 * Math.PI / 180); - ctx4.font = fontSize + "px " + fontFamily; - ctx4.fillStyle = fill; - ctx4.textBaseline = baseline; - for (var i4 = texts.length - 1; i4 >= 0; i4--) { - ctx4.fillText(texts[i4], x6, y5 + i4 * lineHeight); - } - ctx4.rotate(rotate8 * Math.PI / 180); - if (!compatible) { - var box2 = document.querySelector(".g6-graph-watermarker"); - if (!box2) { - box2 = document.createElement("div"); - box2.className = "g6-graph-watermarker"; - } - box2.style.cssText = "background-image: url(" + canvas.get("el").toDataURL("image/png") + ");background-repeat:repeat;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;z-index:99;"; - container2.appendChild(box2); - } else { - container2.style.cssText = "background-image: url(" + canvas.get("el").toDataURL("image/png") + ");background-repeat:repeat;"; - } - }; - Graph10.prototype.destroy = function() { - each_default(this.get("plugins"), function(plugin) { - plugin.destroyPlugin(); - }); - var tooltipDOMs = this.get("tooltips"); - if (tooltipDOMs) { - for (var i4 = 0; i4 < tooltipDOMs.length; i4++) { - var container2 = tooltipDOMs[i4]; - if (!container2) - continue; - var parent_1 = container2.parentElement; - if (!parent_1) - continue; - parent_1.removeChild(container2); - } - } - this.get("eventController").destroy(); - this.get("layoutController").destroy(); - if (this.get("graphWaterMarker")) { - this.get("graphWaterMarker").destroy(); - } - if (document.querySelector(".g6-graph-watermarker")) { - document.querySelector(".g6-graph-watermarker").remove(); - } - _super.prototype.destroy.call(this); - }; - return Graph10; -}(graph_default); -var graph_default2 = Graph9; - -// node_modules/@antv/g6-pc/es/graph/tree-graph.js +// node_modules/@antv/g6-pc/es/layout/tree-layout.js var import_hierarchy4 = __toModule(require_hierarchy()); // node_modules/@antv/g6-pc/es/util/layout.js @@ -127698,6 +133725,7 @@ __export(layout_exports, { proccessToFunc: () => proccessToFunc3, radialLayout: () => radialLayout }); +var import_util549 = __toModule(require_lib()); var traverseTree3 = util_default.traverseTree; var proccessToFunc3 = function proccessToFunc4(value2, defaultV) { var func; @@ -127705,7 +133733,7 @@ var proccessToFunc3 = function proccessToFunc4(value2, defaultV) { func = function func2(d3) { return defaultV || 1; }; - } else if (is_number_default(value2)) { + } else if ((0, import_util549.isNumber)(value2)) { func = function func2(d3) { return value2; }; @@ -127885,11 +133913,11 @@ var arrayToTextureData2 = function arrayToTextureData3(valueArrays) { }; var radialLayout = function radialLayout2(data3, layout6) { var VERTICAL_LAYOUTS = ["V", "TB", "BT"]; - var min7 = { + var min13 = { x: Infinity, y: Infinity }; - var max8 = { + var max15 = { x: -Infinity, y: -Infinity }; @@ -127902,27 +133930,27 @@ var radialLayout = function radialLayout2(data3, layout6) { var count2 = 0; traverseTree3(data3, function(node) { count2++; - if (node.x > max8.x) { - max8.x = node.x; + if (node.x > max15.x) { + max15.x = node.x; } - if (node.x < min7.x) { - min7.x = node.x; + if (node.x < min13.x) { + min13.x = node.x; } - if (node.y > max8.y) { - max8.y = node.y; + if (node.y > max15.y) { + max15.y = node.y; } - if (node.y < min7.y) { - min7.y = node.y; + if (node.y < min13.y) { + min13.y = node.y; } return true; }); var avgRad = Math.PI * 2 / count2; - var radDiff = max8[radScale] - min7[radScale]; + var radDiff = max15[radScale] - min13[radScale]; if (radDiff === 0) { return data3; } traverseTree3(data3, function(node) { - var radial = (node[radScale] - min7[radScale]) / radDiff * (Math.PI * 2 - avgRad) + avgRad; + var radial = (node[radScale] - min13[radScale]) / radDiff * (Math.PI * 2 - avgRad) + avgRad; var r4 = Math.abs(rScale === "x" ? node.x - data3.x : node.y - data3.y); node.x = r4 * Math.cos(radial); node.y = r4 * Math.sin(radial); @@ -127931,12 +133959,1405 @@ var radialLayout = function radialLayout2(data3, layout6) { return data3; }; +// node_modules/@antv/g6-pc/es/util/gpu.js +var gpu_exports = {}; +__export(gpu_exports, { + gpuDetector: () => gpuDetector +}); +var gpuDetector = function gpuDetector2() { + if (typeof window === "undefined" || typeof document === "undefined") + return {}; + return { + canvas: !!window.CanvasRenderingContext2D, + webgl: function() { + try { + var canvas = document.createElement("canvas"); + return !!(window.WebGLRenderingContext && (canvas.getContext("webgl") || canvas.getContext("experimental-webgl"))); + } catch (e4) { + return false; + } + }(), + workers: !!window.Worker, + fileapi: window.File && window.FileReader && window.FileList && window.Blob, + getWebGLErrorMessage: function getWebGLErrorMessage() { + var element = document.createElement("div"); + element.id = "webgl-error-message"; + element.style.fontFamily = "monospace"; + element.style.fontSize = "13px"; + element.style.fontWeight = "normal"; + element.style.textAlign = "center"; + element.style.background = "#fff"; + element.style.color = "#000"; + element.style.padding = "1.5em"; + element.style.width = "400px"; + element.style.margin = "5em auto 0"; + if (!this.webgl) { + element.innerHTML = window.WebGLRenderingContext ? ['Your graphics card does not seem to support WebGL.
    ', 'Find out how to get it here.'].join("\n") : ['Your browser does not seem to support WebGL.
    ', 'Find out how to get it here.'].join("\n"); + } + return element; + }, + addGetWebGLMessage: function addGetWebGLMessage(parameters) { + parameters = parameters || {}; + var parent = parameters.parent !== void 0 ? parameters.parent : document.body; + var id = parameters.id !== void 0 ? parameters.id : "oldie"; + var element = gpuDetector2().getWebGLErrorMessage(); + element.id = id; + parent.appendChild(element); + } + }; +}; + // node_modules/@antv/g6-pc/es/util/index.js -var G6Util = __assign(__assign(__assign(__assign({}, util_default), color_exports), layout_exports), gpu_exports); +var G6Util = __assign(__assign(__assign(__assign({}, util_default), color_exports2), layout_exports), gpu_exports); var util_default3 = G6Util; -// node_modules/@antv/g6-pc/es/graph/tree-graph.js +// node_modules/@antv/g6-pc/es/layout/tree-layout.js var radialLayout3 = util_default3.radialLayout; +var TreeLayout = function() { + function TreeLayout2(cfg) { + this.type = cfg.type; + this.radial = cfg.radial; + this.config = cfg; + } + TreeLayout2.prototype.init = function(data3) { + var _this = this; + this.data = data3; + if (this.radial) { + this.layoutMethod = function(data4) { + var layoutData = import_hierarchy4.default[_this.type](data4, _this.config); + radialLayout3(layoutData); + return layoutData; + }; + return; + } + this.layoutMethod = function(data4) { + return import_hierarchy4.default[_this.type](data4, _this.config); + }; + }; + TreeLayout2.prototype.execute = function() { + return this.layoutMethod(this.data, this.config); + }; + TreeLayout2.prototype.layout = function(data3) { + this.init(data3); + return this.execute(); + }; + return TreeLayout2; +}(); +var tree_layout_default = TreeLayout; + +// node_modules/@antv/g6-pc/es/layout/index.js +registerLayout("grid", GridLayout); +registerLayout("random", RandomLayout); +registerLayout("force", ForceLayout); +registerLayout("circular", CircularLayout); +registerLayout("dagre", DagreLayout); +registerLayout("radial", RadialLayout); +registerLayout("concentric", ConcentricLayout); +registerLayout("mds", MDSLayout); +registerLayout("fruchterman", FruchtermanLayout); +registerLayout("fruchterman-gpu", FruchtermanGPULayout); +registerLayout("gForce", GForceLayout); +registerLayout("gForce-gpu", GForceGPULayout); +registerLayout("comboForce", ComboForceLayout); +registerLayout("forceAtlas2", ForceAtlas2Layout); +var registerLayout2 = function registerLayout3(name, layoutOverride) { + layoutOverride.isCustomLayout = true; + Layouts[name] = registerLayout(name, layoutOverride); +}; + +// node_modules/@antv/g6-pc/es/layout/worker/work.js +var WebWorker = function() { + function WebWorker2(worker, workerScirptURL) { + var code = worker.toString(); + var blob = new Blob(["importScripts('".concat(workerScirptURL, "');(").concat(code, ")()")], { + type: "text/javascript" + }); + return new Worker(URL.createObjectURL(blob)); + } + return WebWorker2; +}(); +var work_default = WebWorker; + +// node_modules/@antv/g6-pc/es/layout/worker/layout.worker.js +var LayoutWorker = function LayoutWorker2(workerScriptURL) { + if (workerScriptURL === void 0) { + workerScriptURL = "https://unpkg.com/@antv/layout@latest/dist/layout.min.js"; + } + function workerCode() { + var LAYOUT_MESSAGE3 = { + RUN: "LAYOUT_RUN", + END: "LAYOUT_END", + ERROR: "LAYOUT_ERROR", + TICK: "LAYOUT_TICK", + GPURUN: "GPU_LAYOUT_RUN", + GPUEND: "GPU_LAYOUT_END" + }; + layout.registerLayout("grid", layout.GridLayout); + layout.registerLayout("random", layout.RandomLayout); + layout.registerLayout("force", layout.ForceLayout); + layout.registerLayout("circular", layout.CircularLayout); + layout.registerLayout("dagre", layout.DagreLayout); + layout.registerLayout("radial", layout.RadialLayout); + layout.registerLayout("concentric", layout.ConcentricLayout); + layout.registerLayout("mds", layout.MDSLayout); + layout.registerLayout("fruchterman", layout.FruchtermanLayout); + layout.registerLayout("fruchterman-gpu", layout.FruchtermanGPULayout); + layout.registerLayout("gForce", layout.GForceLayout); + layout.registerLayout("gForce-gpu", layout.GForceGPULayout); + layout.registerLayout("comboForce", layout.ComboForceLayout); + layout.registerLayout("forceAtlas2", layout.ForceAtlas2Layout); + function isLayoutMessage(event) { + var type2 = event.data.type; + return type2 === LAYOUT_MESSAGE3.RUN || type2 === LAYOUT_MESSAGE3.GPURUN; + } + function handleLayoutMessage(event) { + var _this = this; + var type2 = event.data.type; + switch (type2) { + case LAYOUT_MESSAGE3.RUN: { + var _a6 = event.data, nodes_1 = _a6.nodes, edges = _a6.edges, _b = _a6.layoutCfg, layoutCfg = _b === void 0 ? {} : _b; + var layoutType = layoutCfg.type; + var LayoutClass = layout.getLayoutByName(layoutType); + if (!LayoutClass) { + this.postMessage({ + type: LAYOUT_MESSAGE3.ERROR, + message: "layout ".concat(layoutType, " not found") + }); + break; + } + var layoutMethod_1; + layoutCfg.onLayoutEnd = function() { + _this.postMessage({ + type: LAYOUT_MESSAGE3.END, + nodes: nodes_1 + }); + layoutMethod_1 === null || layoutMethod_1 === void 0 ? void 0 : layoutMethod_1.destroy(); + }; + layoutMethod_1 = new LayoutClass(layoutCfg); + layoutMethod_1.init({ + nodes: nodes_1, + edges + }); + layoutMethod_1.execute(); + break; + } + case LAYOUT_MESSAGE3.GPURUN: { + var _c = event.data, nodes = _c.nodes, edges = _c.edges, _d = _c.layoutCfg, layoutCfg = _d === void 0 ? {} : _d, canvas = _c.canvas; + var layoutType = layoutCfg.type; + var LayoutClass = layout.getLayoutByName(layoutType); + if (!LayoutClass) { + this.postMessage({ + type: LAYOUT_MESSAGE3.ERROR, + message: "layout ".concat(layoutType, " not found") + }); + break; + } + if (layoutType.split("-")[1] !== "gpu") { + this.postMessage({ + type: LAYOUT_MESSAGE3.ERROR, + message: "layout ".concat(layoutType, " does not support GPU") + }); + break; + } + var layoutMethod = new LayoutClass(layoutCfg); + layoutMethod.init({ + nodes, + edges + }); + layoutMethod.executeWithWorker(canvas, this); + break; + } + default: + break; + } + } + onmessage = function onmessage2(event) { + if (isLayoutMessage(event)) { + handleLayoutMessage(event); + } + }; + } + var layoutWorker = new work_default(workerCode, workerScriptURL); + return layoutWorker; +}; + +// node_modules/@antv/g6-pc/es/layout/worker/layoutConst.js +var LAYOUT_MESSAGE2 = { + RUN: "LAYOUT_RUN", + END: "LAYOUT_END", + ERROR: "LAYOUT_ERROR", + TICK: "LAYOUT_TICK", + GPURUN: "GPU_LAYOUT_RUN", + GPUEND: "GPU_LAYOUT_END" +}; + +// node_modules/@antv/g6-pc/es/graph/controller/layout.js +var import_util551 = __toModule(require_lib()); +function _typeof4(obj) { + "@babel/helpers - typeof"; + return _typeof4 = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(obj2) { + return typeof obj2; + } : function(obj2) { + return obj2 && typeof Symbol == "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }, _typeof4(obj); +} +var mockRaf = function mockRaf2(cb) { + return setTimeout(cb, 16); +}; +var mockCaf = function mockCaf2(reqId) { + return clearTimeout(reqId); +}; +var helper = { + requestAnimationFrame: function requestAnimationFrame3(callback) { + var fn = typeof window !== "undefined" ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || mockRaf : mockRaf; + return fn(callback); + }, + cancelAnimationFrame: function cancelAnimationFrame2(requestId) { + var fn = typeof window !== "undefined" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || mockCaf : mockCaf; + return fn(requestId); + } +}; +var GPU_LAYOUT_NAMES = ["fruchterman", "gForce"]; +var LAYOUT_PIPES_ADJUST_NAMES = ["force", "grid", "circular"]; +var LayoutController2 = function(_super) { + __extends(LayoutController3, _super); + function LayoutController3(graph) { + var _this = _super.call(this, graph) || this; + _this.graph = graph; + _this.layoutCfg = graph.get("layout") || {}; + _this.layoutType = _this.getLayoutType(); + _this.worker = null; + _this.workerData = {}; + _this.initLayout(); + return _this; + } + LayoutController3.prototype.initLayout = function() { + }; + LayoutController3.prototype.getWorker = function() { + if (this.worker) { + return this.worker; + } + if (typeof Worker === "undefined") { + console.warn("Web worker is not supported in current browser."); + this.worker = null; + } else { + this.worker = LayoutWorker(this.layoutCfg.workerScriptURL); + } + return this.worker; + }; + LayoutController3.prototype.stopWorker = function() { + var workerData = this.workerData; + if (!this.worker) { + return; + } + this.worker.terminate(); + this.worker = null; + if (workerData.requestId) { + helper.cancelAnimationFrame(workerData.requestId); + workerData.requestId = null; + } + if (workerData.requestId2) { + helper.cancelAnimationFrame(workerData.requestId2); + workerData.requestId2 = null; + } + }; + LayoutController3.prototype.execLayoutMethod = function(layoutCfg, order2) { + var _this = this; + return new Promise(function(reslove, reject) { + return __awaiter(_this, void 0, void 0, function() { + var graph, layoutType, isForce, onTick_1, tick, enableTick, layoutMethod, onTick_2, tick, layoutData; + return __generator(this, function(_a6) { + switch (_a6.label) { + case 0: + graph = this.graph; + if (!graph || graph.get("destroyed")) + return [ + 2 + ]; + layoutType = layoutCfg.type; + layoutCfg.onLayoutEnd = function() { + graph.emit("aftersublayout", { + type: layoutType + }); + reslove(); + }; + if (layoutType && this.isGPU) { + if (!this.hasGPUVersion(layoutType)) { + console.warn("The '".concat(layoutType, "' layout does not support GPU calculation for now, it will run in CPU.")); + } else { + layoutType = "".concat(layoutType, "-gpu"); + } + } + isForce = layoutType === "force" || layoutType === "g6force" || layoutType === "gForce"; + if (isForce) { + onTick_1 = layoutCfg.onTick; + tick = function tick2() { + if (onTick_1) { + onTick_1(); + } + graph.refreshPositions(); + }; + layoutCfg.tick = tick; + } else if (layoutCfg.type === "comboForce") { + layoutCfg.comboTrees = graph.get("comboTrees"); + } + enableTick = false; + try { + layoutMethod = new Layouts[layoutType](layoutCfg); + } catch (e4) { + console.warn("The layout method: '".concat(layoutType, "' does not exist! Please specify it first.")); + reject(); + } + enableTick = layoutMethod.enableTick; + if (enableTick) { + onTick_2 = layoutCfg.onTick; + tick = function tick2() { + if (onTick_2) { + onTick_2(); + } + graph.refreshPositions(); + }; + layoutMethod.tick = tick; + } + layoutData = this.filterLayoutData(this.data, layoutCfg); + addLayoutOrder(layoutData, order2); + layoutMethod.init(layoutData); + graph.emit("beforesublayout", { + type: layoutType + }); + return [ + 4, + layoutMethod.execute() + ]; + case 1: + _a6.sent(); + if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) + layoutCfg.onLayoutEnd(); + this.layoutMethods[order2] = layoutMethod; + return [ + 2 + ]; + } + }); + }); + }); + }; + LayoutController3.prototype.updateLayoutMethod = function(layoutMethod, layoutCfg) { + var _this = this; + return new Promise(function(reslove, reject) { + return __awaiter(_this, void 0, void 0, function() { + var graph, layoutType, layoutData; + return __generator(this, function(_a6) { + switch (_a6.label) { + case 0: + graph = this.graph; + layoutType = layoutCfg === null || layoutCfg === void 0 ? void 0 : layoutCfg.type; + layoutCfg.onLayoutEnd = function() { + graph.emit("aftersublayout", { + type: layoutType + }); + reslove(); + }; + layoutData = this.filterLayoutData(this.data, layoutCfg); + layoutMethod.init(layoutData); + layoutMethod.updateCfg(layoutCfg); + graph.emit("beforesublayout", { + type: layoutType + }); + return [ + 4, + layoutMethod.execute() + ]; + case 1: + _a6.sent(); + if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) + layoutCfg.onLayoutEnd(); + return [ + 2 + ]; + } + }); + }); + }); + }; + LayoutController3.prototype.layout = function(success) { + var _this = this; + var graph = this.graph; + this.data = this.setDataFromGraph(); + var _a6 = this.data, nodes = _a6.nodes, hiddenNodes = _a6.hiddenNodes; + if (!nodes) { + return false; + } + var width2 = graph.get("width"); + var height = graph.get("height"); + var layoutCfg = {}; + Object.assign(layoutCfg, { + width: width2, + height, + center: [width2 / 2, height / 2] + }, this.layoutCfg); + this.layoutCfg = layoutCfg; + this.destoryLayoutMethods(); + graph.emit("beforelayout"); + this.initPositions(layoutCfg.center, nodes); + this.initPositions(layoutCfg.center, hiddenNodes); + var layoutType = layoutCfg.type; + if (layoutType && layoutType.split("-")[1] === "gpu") { + layoutType = layoutType.split("-")[0]; + layoutCfg.gpuEnabled = true; + } + var enableGPU = false; + if (layoutCfg.gpuEnabled) { + enableGPU = true; + if (!gpuDetector().webgl) { + console.warn("Your browser does not support webGL or GPGPU. The layout will run in CPU."); + enableGPU = false; + } + } + this.isGPU = enableGPU; + var onLayoutEnd = layoutCfg.onLayoutEnd, layoutEndFormatted = layoutCfg.layoutEndFormatted, adjust4 = layoutCfg.adjust; + if (!layoutEndFormatted) { + layoutCfg.layoutEndFormatted = true; + layoutCfg.onAllLayoutEnd = function() { + return __awaiter(_this, void 0, void 0, function() { + return __generator(this, function(_a7) { + switch (_a7.label) { + case 0: + if (onLayoutEnd) { + onLayoutEnd(); + } + this.refreshLayout(); + if (!(adjust4 && layoutCfg.pipes)) + return [ + 3, + 2 + ]; + return [ + 4, + this.adjustPipesBox(this.data, adjust4) + ]; + case 1: + _a7.sent(); + this.refreshLayout(); + _a7.label = 2; + case 2: + graph.emit("afterlayout"); + return [ + 2 + ]; + } + }); + }); + }; + } + this.stopWorker(); + if (layoutCfg.workerEnabled && this.layoutWithWorker(this.data)) { + return true; + } + var start = Promise.resolve(); + if (layoutCfg.type) { + start = start.then(function() { + return __awaiter(_this, void 0, void 0, function() { + return __generator(this, function(_a7) { + switch (_a7.label) { + case 0: + return [ + 4, + this.execLayoutMethod(layoutCfg, 0) + ]; + case 1: + return [ + 2, + _a7.sent() + ]; + } + }); + }); + }); + } else if (layoutCfg.pipes) { + layoutCfg.pipes.forEach(function(cfg, index2) { + start = start.then(function() { + return __awaiter(_this, void 0, void 0, function() { + return __generator(this, function(_a7) { + switch (_a7.label) { + case 0: + return [ + 4, + this.execLayoutMethod(cfg, index2) + ]; + case 1: + return [ + 2, + _a7.sent() + ]; + } + }); + }); + }); + }); + } + start.then(function() { + if (layoutCfg.onAllLayoutEnd) + layoutCfg.onAllLayoutEnd(); + if (success) + success(); + }).catch(function(error) { + console.warn("graph layout failed,", error); + }); + return false; + }; + LayoutController3.prototype.layoutWithWorker = function(data3) { + var _this = this; + var _a6 = this, layoutCfg = _a6.layoutCfg, graph = _a6.graph; + var worker = this.getWorker(); + var workerData = this.workerData; + if (!worker) { + return false; + } + workerData.requestId = null; + workerData.requestId2 = null; + workerData.currentTick = null; + workerData.currentTickData = null; + graph.emit("beforelayout"); + var start = Promise.resolve(); + if (layoutCfg.type) { + start = start.then(function() { + return _this.runWebworker(worker, data3, layoutCfg); + }); + } else if (layoutCfg.pipes) { + var _loop_1 = function _loop_12(cfg2) { + start = start.then(function() { + return _this.runWebworker(worker, data3, cfg2); + }); + }; + for (var _i = 0, _b = layoutCfg.pipes; _i < _b.length; _i++) { + var cfg = _b[_i]; + _loop_1(cfg); + } + } + start.then(function() { + if (layoutCfg.onAllLayoutEnd) + layoutCfg.onAllLayoutEnd(); + }).catch(function(error) { + console.error("layout failed", error); + }); + return true; + }; + LayoutController3.prototype.runWebworker = function(worker, allData, layoutCfg) { + var _this = this; + var isGPU = this.isGPU; + var data3 = this.filterLayoutData(allData, layoutCfg); + var nodes = data3.nodes, edges = data3.edges; + var offScreenCanvas = document.createElement("canvas"); + var gpuWorkerAbility = isGPU && typeof window !== "undefined" && window.navigator && !navigator["gpu"] && "OffscreenCanvas" in window && "transferControlToOffscreen" in offScreenCanvas; + var filteredLayoutCfg = filterObject(layoutCfg, function(value2) { + return typeof value2 !== "function"; + }); + if (!gpuWorkerAbility) { + worker.postMessage({ + type: LAYOUT_MESSAGE2.RUN, + nodes, + edges, + layoutCfg: filteredLayoutCfg + }); + } else { + var offscreen = offScreenCanvas.transferControlToOffscreen(); + filteredLayoutCfg.type = "".concat(filteredLayoutCfg.type, "-gpu"); + worker.postMessage({ + type: LAYOUT_MESSAGE2.GPURUN, + nodes, + edges, + layoutCfg: filteredLayoutCfg, + canvas: offscreen + }, [offscreen]); + } + return new Promise(function(reslove, reject) { + worker.onmessage = function(event) { + _this.handleWorkerMessage(reslove, reject, event, data3, layoutCfg); + }; + }); + }; + LayoutController3.prototype.handleWorkerMessage = function(reslove, reject, event, data3, layoutCfg) { + var _a6 = this, graph = _a6.graph, workerData = _a6.workerData; + var eventData = event.data; + var type2 = eventData.type; + var onTick = function onTick2() { + if (layoutCfg.onTick) { + layoutCfg.onTick(); + } + }; + switch (type2) { + case LAYOUT_MESSAGE2.TICK: + workerData.currentTick = eventData.currentTick; + workerData.currentTickData = eventData; + if (!workerData.requestId) { + workerData.requestId = helper.requestAnimationFrame(function requestId() { + updateLayoutPosition(data3, eventData); + graph.refreshPositions(); + onTick(); + if (eventData.currentTick === eventData.totalTicks) { + reslove(); + } else if (workerData.currentTick === eventData.totalTicks) { + workerData.requestId2 = helper.requestAnimationFrame(function requestId2() { + updateLayoutPosition(data3, workerData.currentTickData); + graph.refreshPositions(); + workerData.requestId2 = null; + onTick(); + reslove(); + }); + } + workerData.requestId = null; + }); + } + break; + case LAYOUT_MESSAGE2.END: + if (workerData.currentTick == null) { + updateLayoutPosition(data3, eventData); + reslove(); + } + break; + case LAYOUT_MESSAGE2.GPUEND: + if (workerData.currentTick == null) { + updateGPUWorkerLayoutPosition(data3, eventData); + reslove(); + } + break; + case LAYOUT_MESSAGE2.ERROR: + console.warn("Web-Worker layout error!", eventData.message); + reject(); + break; + default: + reject(); + break; + } + }; + LayoutController3.prototype.updateLayoutCfg = function(cfg) { + var _this = this; + var _a6 = this, graph = _a6.graph, layoutMethods = _a6.layoutMethods; + var layoutCfg = (0, import_util551.mix)({}, this.layoutCfg, cfg); + this.layoutCfg = layoutCfg; + if (!(layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.length)) { + this.layout(); + return; + } + this.data = this.setDataFromGraph(); + this.stopWorker(); + if (cfg.workerEnabled && this.layoutWithWorker(this.data)) { + return; + } + graph.emit("beforelayout"); + var start = Promise.resolve(); + if (layoutMethods.length === 1) { + start = start.then(function() { + return __awaiter(_this, void 0, void 0, function() { + return __generator(this, function(_a7) { + switch (_a7.label) { + case 0: + return [ + 4, + this.updateLayoutMethod(layoutMethods[0], layoutCfg) + ]; + case 1: + return [ + 2, + _a7.sent() + ]; + } + }); + }); + }); + } else { + layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function(layoutMethod, index2) { + var currentCfg = layoutCfg.pipes[index2]; + start = start.then(function() { + return __awaiter(_this, void 0, void 0, function() { + return __generator(this, function(_a7) { + switch (_a7.label) { + case 0: + return [ + 4, + this.updateLayoutMethod(layoutMethod, currentCfg) + ]; + case 1: + return [ + 2, + _a7.sent() + ]; + } + }); + }); + }); + }); + } + start.then(function() { + if (layoutCfg.onAllLayoutEnd) + layoutCfg.onAllLayoutEnd(); + }).catch(function(error) { + console.warn("layout failed", error); + }); + }; + LayoutController3.prototype.adjustPipesBox = function(data3, adjust4) { + var _this = this; + return new Promise(function(resolve) { + var nodes = data3.nodes; + if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length)) { + resolve(); + } + if (!LAYOUT_PIPES_ADJUST_NAMES.includes(adjust4)) { + console.warn("The adjust type ".concat(adjust4, " is not supported yet, please assign it with 'force', 'grid', or 'circular'.")); + resolve(); + } + var layoutCfg = { + center: _this.layoutCfg.center, + nodeSize: function nodeSize(d3) { + return Math.max(d3.height, d3.width); + }, + preventOverlap: true, + onLayoutEnd: function onLayoutEnd() { + } + }; + var _a6 = _this.getLayoutBBox(nodes), groupNodes = _a6.groupNodes, layoutNodes2 = _a6.layoutNodes; + var preNodes = (0, import_util551.clone)(layoutNodes2); + layoutCfg.onLayoutEnd = function() { + layoutNodes2 === null || layoutNodes2 === void 0 ? void 0 : layoutNodes2.forEach(function(ele, index2) { + var _a7, _b, _c; + var dx = ele.x - ((_a7 = preNodes[index2]) === null || _a7 === void 0 ? void 0 : _a7.x); + var dy = ele.y - ((_b = preNodes[index2]) === null || _b === void 0 ? void 0 : _b.y); + (_c = groupNodes[index2]) === null || _c === void 0 ? void 0 : _c.forEach(function(n3) { + n3.x += dx; + n3.y += dy; + }); + }); + resolve(); + }; + var layoutMethod = new Layouts[adjust4](layoutCfg); + layoutMethod.layout({ + nodes: layoutNodes2 + }); + }); + }; + LayoutController3.prototype.hasGPUVersion = function(layoutName) { + return GPU_LAYOUT_NAMES.includes(layoutName); + }; + LayoutController3.prototype.destroy = function() { + this.destoryLayoutMethods(); + var worker = this.worker; + if (worker) { + worker.terminate(); + this.worker = null; + } + this.destroyed = true; + this.graph.set("layout", void 0); + this.layoutCfg = void 0; + this.layoutType = void 0; + this.layoutMethods = void 0; + this.graph = null; + }; + return LayoutController3; +}(layout_default); +var layout_default3 = LayoutController2; +function updateLayoutPosition(data3, layoutData) { + var nodes = data3.nodes; + var layoutNodes2 = layoutData.nodes; + var nodeLength = nodes.length; + for (var i4 = 0; i4 < nodeLength; i4++) { + var node = nodes[i4]; + node.x = layoutNodes2[i4].x; + node.y = layoutNodes2[i4].y; + } +} +function filterObject(collection, callback) { + var result = {}; + if (collection && _typeof4(collection) === "object") { + Object.keys(collection).forEach(function(key) { + if (collection.hasOwnProperty(key) && callback(collection[key])) { + result[key] = collection[key]; + } + }); + return result; + } + return collection; +} +function updateGPUWorkerLayoutPosition(data3, layoutData) { + var nodes = data3.nodes; + var vertexEdgeData = layoutData.vertexEdgeData; + var nodeLength = nodes.length; + for (var i4 = 0; i4 < nodeLength; i4++) { + var node = nodes[i4]; + var x6 = vertexEdgeData[4 * i4]; + var y5 = vertexEdgeData[4 * i4 + 1]; + node.x = x6; + node.y = y5; + } +} +function addLayoutOrder(data3, order2) { + var _a6; + if (!((_a6 = data3 === null || data3 === void 0 ? void 0 : data3.nodes) === null || _a6 === void 0 ? void 0 : _a6.length)) { + return; + } + var nodes = data3.nodes; + nodes.forEach(function(node) { + node.layoutOrder = order2; + }); +} + +// node_modules/@antv/g6-pc/es/graph/graph.js +var transform12 = ext_exports.transform; +var SVG2 = "svg"; +var Graph9 = function(_super) { + __extends(Graph10, _super); + function Graph10(cfg) { + var _this = _super.call(this, cfg) || this; + var defaultNode = _this.get("defaultNode"); + if (!defaultNode) { + _this.set("defaultNode", { + type: "circle" + }); + } + if (!defaultNode.type) { + defaultNode.type = "circle"; + _this.set("defaultNode", defaultNode); + } + _this.destroyed = false; + return _this; + } + Graph10.prototype.initLayoutController = function() { + var layoutController = new layout_default3(this); + this.set({ + layoutController + }); + }; + Graph10.prototype.initEventController = function() { + var eventController = new event_default3(this); + this.set({ + eventController + }); + }; + Graph10.prototype.initCanvas = function() { + var container2 = this.get("container"); + if (typeof container2 === "string") { + container2 = document.getElementById(container2); + this.set("container", container2); + } + if (!container2) { + throw new Error("invalid container"); + } + var clientWidth = container2.clientWidth, clientHeight = container2.clientHeight; + var width2 = this.get("width") || clientWidth; + var height = this.get("height") || clientHeight; + if (!this.get("width") && !this.get("height")) { + this.set("width", clientWidth); + this.set("height", clientHeight); + } + var renderer = this.get("renderer"); + var canvas; + if (renderer === SVG2) { + canvas = new canvas_default3({ + container: container2, + width: width2, + height + }); + } else { + var canvasCfg = { + container: container2, + width: width2, + height + }; + var pixelRatio = this.get("pixelRatio"); + if (pixelRatio) { + canvasCfg.pixelRatio = pixelRatio; + } + canvas = new canvas_default2(canvasCfg); + } + this.set("canvas", canvas); + }; + Graph10.prototype.initPlugins = function() { + var self2 = this; + (0, import_util552.each)(self2.get("plugins"), function(plugin) { + if (!plugin.destroyed && plugin.initPlugin) { + plugin.initPlugin(self2); + } + }); + }; + Graph10.prototype.downloadImageWatermark = function(watermarker, context, width2, height) { + return __awaiter(this, void 0, void 0, function() { + var watermarkStr, watermarkbase64, img; + return __generator(this, function(_a6) { + switch (_a6.label) { + case 0: + watermarkStr = watermarker.style.backgroundImage; + watermarkbase64 = watermarkStr.slice(5, watermarkStr.length - 2); + img = new Image(); + img.src = watermarkbase64; + return [ + 4, + new Promise(function(resolve) { + img.onload = function() { + var pat = context.createPattern(img, "repeat"); + context.rect(0, 0, width2, height); + context.fillStyle = pat; + context.fill(); + resolve(""); + }; + }) + ]; + case 1: + _a6.sent(); + return [ + 2 + ]; + } + }); + }); + }; + Graph10.prototype.asyncToDataUrl = function(type2, backgroundColor, callback, widths, heights, vCanvasEl) { + var _this = this; + var watermarker = document.querySelector(".g6-graph-watermarker"); + var canvas = this.get("canvas"); + var renderer = canvas.getRenderer(); + var canvasDom = vCanvasEl || canvas.get("el"); + var dataURL = ""; + if (!type2) + type2 = "image/png"; + setTimeout(function() { + return __awaiter(_this, void 0, void 0, function() { + var cloneNode, svgDocType, svgDoc, svgData, imageData, context, width2, height, compositeOperation, pixelRatio; + return __generator(this, function(_a6) { + switch (_a6.label) { + case 0: + if (!(renderer === "svg")) + return [ + 3, + 1 + ]; + cloneNode = canvasDom.cloneNode(true); + svgDocType = document.implementation.createDocumentType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"); + svgDoc = document.implementation.createDocument("http://www.w3.org/2000/svg", "svg", svgDocType); + svgDoc.replaceChild(cloneNode, svgDoc.documentElement); + svgData = new XMLSerializer().serializeToString(svgDoc); + dataURL = "data:image/svg+xml;charset=utf8,".concat(encodeURIComponent(svgData)); + return [ + 3, + 4 + ]; + case 1: + imageData = void 0; + context = canvasDom.getContext("2d"); + width2 = widths || this.get("width"); + height = heights || this.get("height"); + compositeOperation = void 0; + if (!watermarker) + return [ + 3, + 3 + ]; + return [ + 4, + this.downloadImageWatermark(watermarker, context, width2, height) + ]; + case 2: + _a6.sent(); + _a6.label = 3; + case 3: + if (backgroundColor) { + pixelRatio = typeof window !== "undefined" ? window.devicePixelRatio : 1; + try { + imageData = context.getImageData(0, 0, width2 * pixelRatio, height * pixelRatio); + compositeOperation = context.globalCompositeOperation; + context.globalCompositeOperation = "destination-over"; + context.fillStyle = backgroundColor; + context.fillRect(0, 0, width2, height); + } catch (error) { + console.error("Download image failed. Out of memory at ImageData creation"); + } + } + dataURL = canvasDom.toDataURL(type2); + if (backgroundColor) { + context.clearRect(0, 0, width2, height); + context.putImageData(imageData, 0, 0); + context.globalCompositeOperation = compositeOperation; + } + _a6.label = 4; + case 4: + if (callback) + callback(dataURL); + return [ + 2 + ]; + } + }); + }); + }, 16); + }; + Graph10.prototype.toDataURL = function(type2, backgroundColor) { + var canvas = this.get("canvas"); + var renderer = canvas.getRenderer(); + var canvasDom = canvas.get("el"); + if (!type2) + type2 = "image/png"; + var dataURL = ""; + if (renderer === "svg") { + var cloneNode = canvasDom.cloneNode(true); + var svgDocType = document.implementation.createDocumentType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"); + var svgDoc = document.implementation.createDocument("http://www.w3.org/2000/svg", "svg", svgDocType); + svgDoc.replaceChild(cloneNode, svgDoc.documentElement); + var svgData = new XMLSerializer().serializeToString(svgDoc); + dataURL = "data:image/svg+xml;charset=utf8,".concat(encodeURIComponent(svgData)); + } else { + var imageData = void 0; + var context = canvasDom.getContext("2d"); + var width2 = this.get("width"); + var height = this.get("height"); + var compositeOperation = void 0; + if (backgroundColor) { + var pixelRatio = typeof window !== "undefined" ? window.devicePixelRatio : 1; + try { + imageData = context.getImageData(0, 0, width2 * pixelRatio, height * pixelRatio); + compositeOperation = context.globalCompositeOperation; + context.globalCompositeOperation = "destination-over"; + context.fillStyle = backgroundColor; + context.fillRect(0, 0, width2, height); + } catch (error) { + console.error("Download image failed. Out of memory at ImageData creation"); + } + } + dataURL = canvasDom.toDataURL(type2); + if (backgroundColor) { + context.clearRect(0, 0, width2, height); + context.putImageData(imageData, 0, 0); + context.globalCompositeOperation = compositeOperation; + } + } + return dataURL; + }; + Graph10.prototype.toFullDataURL = function(callback, type2, imageConfig) { + var bbox = this.get("group").getCanvasBBox(); + var height = bbox.height; + var width2 = bbox.width; + var renderer = this.get("renderer"); + var vContainerDOM = createDom(''); + var backgroundColor = imageConfig ? imageConfig.backgroundColor : void 0; + var padding3 = imageConfig ? imageConfig.padding : void 0; + if (!padding3) + padding3 = [0, 0, 0, 0]; + else if ((0, import_util552.isNumber)(padding3)) + padding3 = [padding3, padding3, padding3, padding3]; + var vHeight = height + padding3[0] + padding3[2]; + var vWidth = width2 + padding3[1] + padding3[3]; + var canvasOptions = { + container: vContainerDOM, + height: vHeight, + width: vWidth, + quickHit: true + }; + var vCanvas = renderer === "svg" ? new canvas_default3(canvasOptions) : new canvas_default2(canvasOptions); + var group3 = this.get("group"); + var vGroup = group3.clone(); + var matrix = (0, import_util552.clone)(vGroup.getMatrix()); + if (!matrix) + matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + var centerX = (bbox.maxX + bbox.minX) / 2; + var centerY = (bbox.maxY + bbox.minY) / 2; + matrix = transform12(matrix, [["t", -centerX, -centerY], ["t", width2 / 2 + padding3[3], height / 2 + padding3[0]]]); + vGroup.resetMatrix(); + vGroup.setMatrix(matrix); + vCanvas.add(vGroup); + var vCanvasEl = vCanvas.get("el"); + var dataURL = ""; + if (!type2) + type2 = "image/png"; + setTimeout(function() { + if (renderer === "svg") { + var cloneNode = vCanvasEl.cloneNode(true); + var svgDocType = document.implementation.createDocumentType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"); + var svgDoc = document.implementation.createDocument("http://www.w3.org/2000/svg", "svg", svgDocType); + svgDoc.replaceChild(cloneNode, svgDoc.documentElement); + var svgData = new XMLSerializer().serializeToString(svgDoc); + dataURL = "data:image/svg+xml;charset=utf8,".concat(encodeURIComponent(svgData)); + } else { + var imageData = void 0; + var context = vCanvasEl.getContext("2d"); + var compositeOperation = void 0; + if (backgroundColor) { + var pixelRatio = typeof window !== "undefined" ? window.devicePixelRatio : 1; + try { + imageData = context.getImageData(0, 0, vWidth * pixelRatio, vHeight * pixelRatio); + compositeOperation = context.globalCompositeOperation; + context.globalCompositeOperation = "destination-over"; + context.fillStyle = backgroundColor; + context.fillRect(0, 0, vWidth, vHeight); + } catch (error) { + console.error("Download image failed. Out of memory at ImageData creation"); + } + } + dataURL = vCanvasEl.toDataURL(type2); + if (backgroundColor) { + context.clearRect(0, 0, vWidth, vHeight); + context.putImageData(imageData, 0, 0); + context.globalCompositeOperation = compositeOperation; + } + } + if (callback) + callback(dataURL); + }, 16); + }; + Graph10.prototype.downloadFullImage = function(name, type2, imageConfig) { + var _this = this; + var bbox = this.get("group").getCanvasBBox(); + var height = bbox.height; + var width2 = bbox.width; + var renderer = this.get("renderer"); + var vContainerDOM = createDom(''); + var watermarker = document.querySelector(".g6-graph-watermarker"); + var backgroundColor = imageConfig ? imageConfig.backgroundColor : void 0; + var padding3 = imageConfig ? imageConfig.padding : void 0; + if (!padding3) + padding3 = [0, 0, 0, 0]; + else if ((0, import_util552.isNumber)(padding3)) + padding3 = [padding3, padding3, padding3, padding3]; + var vHeight = height + padding3[0] + padding3[2]; + var vWidth = width2 + padding3[1] + padding3[3]; + if (watermarker) { + var _a6 = this.get("graphWaterMarker").cfg || {}, wmWidth = _a6.width, wmHeight = _a6.height; + vHeight = Math.ceil(vHeight / wmHeight) * wmHeight; + vWidth = Math.ceil(vWidth / wmWidth) * wmWidth; + } + var canvasOptions = { + container: vContainerDOM, + height: vHeight, + width: vWidth + }; + var vCanvas = renderer === "svg" ? new canvas_default3(canvasOptions) : new canvas_default2(canvasOptions); + var group3 = this.get("group"); + var vGroup = group3.clone(); + var matrix = (0, import_util552.clone)(vGroup.getMatrix()); + if (!matrix) + matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + var centerX = (bbox.maxX + bbox.minX) / 2; + var centerY = (bbox.maxY + bbox.minY) / 2; + matrix = transform12(matrix, [["t", -centerX, -centerY], ["t", width2 / 2 + padding3[3], height / 2 + padding3[0]]]); + vGroup.resetMatrix(); + vGroup.setMatrix(matrix); + vCanvas.add(vGroup); + var vCanvasEl = vCanvas.get("el"); + if (!type2) + type2 = "image/png"; + this.asyncToDataUrl(type2, backgroundColor, function(dataURL) { + var link = document.createElement("a"); + var fileName = (name || "graph") + (renderer === "svg" ? ".svg" : ".".concat(type2.split("/")[1])); + _this.dataURLToImage(dataURL, renderer, link, fileName); + var e4 = document.createEvent("MouseEvents"); + e4.initEvent("click", false, false); + link.dispatchEvent(e4); + }, vWidth, vHeight, vCanvasEl); + }; + Graph10.prototype.downloadImage = function(name, type2, backgroundColor) { + var _this = this; + var self2 = this; + if (self2.isAnimating()) { + self2.stopAnimate(); + } + var canvas = self2.get("canvas"); + var renderer = canvas.getRenderer(); + if (!type2) + type2 = "image/png"; + var fileName = (name || "graph") + (renderer === "svg" ? ".svg" : type2.split("/")[1]); + var link = document.createElement("a"); + self2.asyncToDataUrl(type2, backgroundColor, function(dataURL) { + _this.dataURLToImage(dataURL, renderer, link, fileName); + var e4 = document.createEvent("MouseEvents"); + e4.initEvent("click", false, false); + link.dispatchEvent(e4); + }); + }; + Graph10.prototype.dataURLToImage = function(dataURL, renderer, link, fileName) { + if (!dataURL || dataURL === "data:") { + console.error("Download image failed. The graph is too large or there is invalid attribute values in graph items"); + return; + } + if (typeof window !== "undefined") { + if (window.Blob && window.URL && renderer !== "svg") { + var arr = dataURL.split(","); + var mime = ""; + if (arr && arr.length > 0) { + var match = arr[0].match(/:(.*?);/); + if (match && match.length >= 2) + mime = match[1]; + } + var bstr = atob(arr[1]); + var n3 = bstr.length; + var u8arr = new Uint8Array(n3); + while (n3--) { + u8arr[n3] = bstr.charCodeAt(n3); + } + var blobObj_1 = new Blob([u8arr], { + type: mime + }); + if (window.navigator.msSaveBlob) { + window.navigator.msSaveBlob(blobObj_1, fileName); + } else { + link.addEventListener("click", function() { + link.download = fileName; + link.href = window.URL.createObjectURL(blobObj_1); + }); + } + } else { + link.addEventListener("click", function() { + link.download = fileName; + link.href = dataURL; + }); + } + } + }; + Graph10.prototype.addPlugin = function(plugin) { + var self2 = this; + if (plugin.destroyed) { + return; + } + self2.get("plugins").push(plugin); + plugin.initPlugin(self2); + }; + Graph10.prototype.removePlugin = function(plugin) { + var plugins = this.get("plugins"); + var index2 = plugins.indexOf(plugin); + if (index2 >= 0) { + plugin.destroyPlugin(); + plugins.splice(index2, 1); + } + }; + Graph10.prototype.setImageWaterMarker = function(imgURL, config) { + if (imgURL === void 0) { + imgURL = global_default2.waterMarkerImage; + } + var container2 = this.get("container"); + if ((0, import_util552.isString)(container2)) { + container2 = document.getElementById(container2); + } + if (!container2.style.position) { + container2.style.position = "relative"; + } + var canvas = this.get("graphWaterMarker"); + var waterMarkerConfig = (0, import_util552.deepMix)({}, global_default2.imageWaterMarkerConfig, config); + var width2 = waterMarkerConfig.width, height = waterMarkerConfig.height, compatible = waterMarkerConfig.compatible, image = waterMarkerConfig.image; + if (!canvas) { + var canvasCfg = { + container: container2, + width: width2, + height, + capture: false + }; + var pixelRatio = this.get("pixelRatio"); + if (pixelRatio) { + canvasCfg.pixelRatio = pixelRatio; + } + canvas = new canvas_default2(canvasCfg); + this.set("graphWaterMarker", canvas); + } + canvas.get("el").style.display = "none"; + var ctx3 = canvas.get("context"); + var rotate8 = image.rotate, x6 = image.x, y5 = image.y; + ctx3.rotate(-rotate8 * Math.PI / 180); + var img = new Image(); + img.crossOrigin = "anonymous"; + img.src = imgURL; + img.onload = function() { + ctx3.drawImage(img, x6, y5, image.width, image.height); + ctx3.rotate(rotate8 * Math.PI / 180); + if (!compatible) { + var box2 = document.querySelector(".g6-graph-watermarker"); + if (!box2) { + box2 = document.createElement("div"); + box2.className = "g6-graph-watermarker"; + } + box2.className = "g6-graph-watermarker"; + if (!canvas.destroyed) { + box2.style.cssText = "background-image: url(".concat(canvas.get("el").toDataURL("image/png"), ");background-repeat:repeat;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;z-index:-1;"); + container2.appendChild(box2); + } + } else { + container2.style.cssText = "background-image: url(".concat(canvas.get("el").toDataURL("image/png"), ");background-repeat:repeat;"); + } + }; + }; + Graph10.prototype.setTextWaterMarker = function(texts, config) { + var container2 = this.get("container"); + if ((0, import_util552.isString)(container2)) { + container2 = document.getElementById(container2); + } + if (!container2.style.position) { + container2.style.position = "relative"; + } + var canvas = this.get("graphWaterMarker"); + var waterMarkerConfig = (0, import_util552.deepMix)({}, global_default2.textWaterMarkerConfig, config); + var width2 = waterMarkerConfig.width, height = waterMarkerConfig.height, compatible = waterMarkerConfig.compatible, text = waterMarkerConfig.text; + if (!canvas) { + var canvasCfg = { + container: container2, + width: width2, + height, + capture: false + }; + var pixelRatio = this.get("pixelRatio"); + if (pixelRatio) { + canvasCfg.pixelRatio = pixelRatio; + } + canvas = new canvas_default2(canvasCfg); + this.set("graphWaterMarker", canvas); + } + canvas.get("el").style.display = "none"; + var ctx3 = canvas.get("context"); + var rotate8 = text.rotate, fill = text.fill, fontFamily = text.fontFamily, fontSize = text.fontSize, baseline = text.baseline, x6 = text.x, y5 = text.y, lineHeight = text.lineHeight; + ctx3.rotate(-rotate8 * Math.PI / 180); + ctx3.font = "".concat(fontSize, "px ").concat(fontFamily); + ctx3.fillStyle = fill; + ctx3.textBaseline = baseline; + for (var i4 = texts.length - 1; i4 >= 0; i4--) { + ctx3.fillText(texts[i4], x6, y5 + i4 * lineHeight); + } + ctx3.rotate(rotate8 * Math.PI / 180); + if (!compatible) { + var box2 = document.querySelector(".g6-graph-watermarker"); + if (!box2) { + box2 = document.createElement("div"); + box2.className = "g6-graph-watermarker"; + } + box2.style.cssText = "background-image: url(".concat(canvas.get("el").toDataURL("image/png"), ");background-repeat:repeat;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;z-index:99;"); + container2.appendChild(box2); + } else { + container2.style.cssText = "background-image: url(".concat(canvas.get("el").toDataURL("image/png"), ");background-repeat:repeat;"); + } + }; + Graph10.prototype.destroy = function() { + var _a6, _b, _c, _d; + (0, import_util552.each)(this.get("plugins"), function(plugin) { + plugin.destroyPlugin(); + }); + var tooltipDOMs = this.get("tooltips"); + if (tooltipDOMs) { + for (var i4 = 0; i4 < tooltipDOMs.length; i4++) { + var container2 = tooltipDOMs[i4]; + if (!container2) + continue; + var parent_1 = container2.parentElement; + if (!parent_1) + continue; + parent_1.removeChild(container2); + } + } + (_a6 = this.get("eventController")) === null || _a6 === void 0 ? void 0 : _a6.destroy(); + (_b = this.get("layoutController")) === null || _b === void 0 ? void 0 : _b.destroy(); + (_c = this.get("graphWaterMarker")) === null || _c === void 0 ? void 0 : _c.destroy(); + (_d = document.querySelector(".g6-graph-watermarker")) === null || _d === void 0 ? void 0 : _d.remove(); + _super.prototype.destroy.call(this); + }; + return Graph10; +}(graph_default); +var graph_default2 = Graph9; + +// node_modules/@antv/g6-pc/es/graph/tree-graph.js +var import_hierarchy5 = __toModule(require_hierarchy()); +var import_util553 = __toModule(require_lib()); +var radialLayout4 = util_default3.radialLayout; var traverseTree4 = util_default3.traverseTree; var TreeGraph = function(_super) { __extends(TreeGraph2, _super); @@ -127963,18 +135384,18 @@ var TreeGraph = function(_super) { } if (layout6.radial) { return function(data3) { - var layoutData = import_hierarchy4.default[layout6.type](data3, layout6); - radialLayout3(layoutData); + var layoutData = import_hierarchy5.default[layout6.type](data3, layout6); + radialLayout4(layoutData); return layoutData; }; } return function(data3) { - return import_hierarchy4.default[layout6.type](data3, layout6); + return import_hierarchy5.default[layout6.type](data3, layout6); }; }; TreeGraph2.indexOfChild = function(children, id) { var index2 = -1; - each_default(children, function(former, i4) { + (0, import_util553.each)(children, function(former, i4) { if (id === former.id) { index2 = i4; return false; @@ -128017,12 +135438,12 @@ var TreeGraph = function(_super) { childrenList.push(node); } self2.addItem("edge", { - source: parent, - target: node, - id: parent.get("id") + ":" + node.get("id") + source: parent.get("id"), + target: node.get("id"), + id: "".concat(parent.get("id"), ":").concat(node.get("id")) }, false); } - each_default(treeData.children || [], function(child) { + (0, import_util553.each)(treeData.children || [], function(child) { self2.innerAddChild(child, node, animate); }); self2.emit("afteraddchild", { @@ -128038,7 +135459,7 @@ var TreeGraph = function(_super) { self2.innerAddChild(data3, parent, animate); return; } - each_default(data3.children || [], function(child2) { + (0, import_util553.each)(data3.children || [], function(child2) { self2.innerUpdateChild(child2, current, animate); }); var children = current.get("children"); @@ -128084,7 +135505,7 @@ var TreeGraph = function(_super) { if (!node) { return; } - each_default(node.get("children"), function(child) { + (0, import_util553.each)(node.get("children"), function(child) { self2.innerRemoveChild(child.getModel().id, to, animate); }); if (animate) { @@ -128096,7 +135517,7 @@ var TreeGraph = function(_super) { }); self2.get("removeList").push(node); } else { - self2.removeItem(node); + self2.removeItem(node, false); } }; TreeGraph2.prototype.changeData = function(data3) { @@ -128138,7 +135559,7 @@ var TreeGraph = function(_super) { var self2 = this; var data3 = self2.get("data"); var layoutMethod = self2.get("layoutMethod"); - var layoutData = layoutMethod(data3, self2.get("layout")); + var layoutData = layoutMethod ? layoutMethod(data3, self2.get("layout")) : data3; var animate = self2.get("animate"); self2.emit("beforerefreshlayout", { data: data3, @@ -128168,7 +135589,7 @@ var TreeGraph = function(_super) { model: data3, parent }); - if (!is_string_default(parent)) { + if (!(0, import_util553.isString)(parent)) { parent = parent.get("id"); } var parentData = self2.findDataById(parent); @@ -128183,7 +135604,7 @@ var TreeGraph = function(_super) { TreeGraph2.prototype.updateChildren = function(data3, parentId) { var self2 = this; if (!parentId || !self2.findById(parentId)) { - console.warn("Update children failed! There is no node with id '" + parentId + "'"); + console.warn("Update children failed! There is no node with id '".concat(parentId, "'")); return; } var parentModel = self2.findDataById(parentId); @@ -128234,7 +135655,7 @@ var TreeGraph = function(_super) { return parent; } var result = null; - each_default(parent.children || [], function(child) { + (0, import_util553.each)(parent.children || [], function(child) { if (child.id === id) { result = child; return false; @@ -128281,7 +135702,7 @@ var TreeGraph = function(_super) { } return true; }); - each_default(self2.get("removeList"), function(node) { + (0, import_util553.each)(self2.get("removeList"), function(node) { var model = node.getModel(); var from = node.get("originAttrs"); var to = node.get("to"); @@ -128293,10 +135714,10 @@ var TreeGraph = function(_super) { duration: animateCfg.duration, easing: animateCfg.ease, callback: function callback() { - each_default(self2.getNodes(), function(node) { + (0, import_util553.each)(self2.getNodes(), function(node) { node.set("originAttrs", null); }); - each_default(self2.get("removeList"), function(node) { + (0, import_util553.each)(self2.get("removeList"), function(node) { self2.removeItem(node); }); self2.set("removeList", []); @@ -128323,7 +135744,7 @@ var TreeGraph = function(_super) { TreeGraph2.prototype.render = function() { var self2 = this; var data3 = self2.get("data"); - if (!data3) { + if (!data3 || !(0, import_util553.isObject)(data3) || !Object.keys(data3).length) { throw new Error("data must be defined first"); } self2.clear(); @@ -128339,9 +135760,10 @@ var TreeGraph = function(_super) { var tree_graph_default = TreeGraph; // node_modules/@antv/g6-plugin/es/base.js +var import_util555 = __toModule(require_lib()); var PluginBase = function() { function PluginBase2(cfgs) { - this._cfgs = deep_mix_default(this.getDefaultCfgs(), cfgs); + this._cfgs = (0, import_util555.deepMix)(this.getDefaultCfgs(), cfgs); this._events = {}; this.destroyed = false; } @@ -128353,8 +135775,8 @@ var PluginBase = function() { self2.set("graph", graph); var events = self2.getEvents(); var bindEvents2 = {}; - each_default(events, function(v3, k4) { - var event = wrap_behavior_default(self2, v3); + (0, import_util555.each)(events, function(v3, k4) { + var event = (0, import_util555.wrapBehavior)(self2, v3); bindEvents2[k4] = event; graph.on(k4, event); }); @@ -128365,7 +135787,8 @@ var PluginBase = function() { return {}; }; PluginBase2.prototype.get = function(key) { - return this._cfgs[key]; + var _a6; + return (_a6 = this._cfgs) === null || _a6 === void 0 ? void 0 : _a6[key]; }; PluginBase2.prototype.set = function(key, val) { this._cfgs[key] = val; @@ -128376,7 +135799,7 @@ var PluginBase = function() { this.destroy(); var graph = this.get("graph"); var events = this._events; - each_default(events, function(v3, k4) { + (0, import_util555.each)(events, function(v3, k4) { graph.off(k4, v3); }); this._events = null; @@ -128415,40 +135838,45 @@ var __extends5 = function() { var GRID_PNG = "url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImdyaWQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTSAwIDEwIEwgNDAgMTAgTSAxMCAwIEwgMTAgNDAgTSAwIDIwIEwgNDAgMjAgTSAyMCAwIEwgMjAgNDAgTSAwIDMwIEwgNDAgMzAgTSAzMCAwIEwgMzAgNDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2UwZTBlMCIgb3BhY2l0eT0iMC4yIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNIDQwIDAgTCAwIDAgMCA0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIiBzdHJva2Utd2lkdGg9IjEiLz48L3BhdHRlcm4+PC9kZWZzPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JpZCkiLz48L3N2Zz4=)"; var Grid3 = function(_super) { __extends5(Grid5, _super); - function Grid5() { - return _super !== null && _super.apply(this, arguments) || this; + function Grid5(config) { + return _super.call(this, config) || this; } Grid5.prototype.getDefaultCfgs = function() { return { - img: GRID_PNG + img: GRID_PNG, + follow: true }; }; Grid5.prototype.init = function() { var graph = this.get("graph"); - var minZoom = graph.get("minZoom"); var graphContainer = graph.get("container"); var canvas = graph.get("canvas").get("el"); - var width2 = graph.get("width"); - var height = graph.get("height"); var img = this.get("img") || GRID_PNG; - var container2 = createDom(`
    `); - var gridContainer = createDom("
    "); - container2.appendChild(gridContainer); - modifyCSS(container2, { - width: width2 + "px", - height: height + "px", - left: graphContainer.offsetLeft + "px", - top: graphContainer.offsetTop + "px" - }); - modifyCSS(gridContainer, { - width: width2 / minZoom + "px", - height: height / minZoom + "px", - left: "0px", - top: "0px" - }); - graphContainer.insertBefore(container2, canvas); + var container2 = createDom(`
    `); + var gridContainer = createDom("")); this.set("container", container2); this.set("gridContainer", gridContainer); + this.positionInit(); + container2.appendChild(gridContainer); + graphContainer.insertBefore(container2, canvas); + }; + Grid5.prototype.positionInit = function() { + var graph = this.get("graph"); + var minZoom = graph.get("minZoom"); + var width2 = graph.get("width"); + var height = graph.get("height"); + modifyCSS(this.get("container"), { + width: "".concat(width2, "px"), + height: "".concat(height, "px") + }); + var gridContainerWidth = width2 * 80 / minZoom; + var gridContainerHeight = height * 80 / minZoom; + modifyCSS(this.get("gridContainer"), { + width: "".concat(gridContainerWidth, "px"), + height: "".concat(gridContainerHeight, "px"), + left: "-".concat(gridContainerWidth / 2, "px"), + top: "-".concat(gridContainerHeight / 2, "px") + }); }; Grid5.prototype.getEvents = function() { return { @@ -128460,7 +135888,8 @@ var Grid3 = function(_super) { var matrix = param.matrix; if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; - var transform18 = "matrix(" + matrix[0] + ", " + matrix[1] + ", " + matrix[3] + ", " + matrix[4] + ", 0, 0)"; + var isFollow = this.get("follow"); + var transform18 = "matrix(".concat(matrix[0], ", ").concat(matrix[1], ", ").concat(matrix[3], ", ").concat(matrix[4], ", ").concat(isFollow ? matrix[6] : "0", ", ").concat(isFollow ? matrix[7] : "0", ")"); modifyCSS(gridContainer, { transform: transform18 }); @@ -128479,6 +135908,7 @@ var Grid3 = function(_super) { var grid_default = Grid3; // node_modules/@antv/g6-plugin/es/menu/index.js +var import_util556 = __toModule(require_lib()); var import_insert_css = __toModule(require_insert_css()); var __extends6 = function() { var _extendStatics = function extendStatics(d3, b10) { @@ -128504,11 +135934,11 @@ var __extends6 = function() { d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); }; }(); -(0, import_insert_css.default)("\n .g6-component-contextmenu {\n border: 1px solid #e2e2e2;\n border-radius: 4px;\n font-size: 12px;\n color: #545454;\n background-color: rgba(255, 255, 255, 0.9);\n padding: 10px 8px;\n box-shadow: rgb(174, 174, 174) 0px 0px 10px;\n }\n .g6-contextmenu-ul {\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n"); +typeof document !== "undefined" && (0, import_insert_css.default)("\n .g6-component-contextmenu {\n border: 1px solid #e2e2e2;\n border-radius: 4px;\n font-size: 12px;\n color: #545454;\n background-color: rgba(255, 255, 255, 0.9);\n padding: 10px 8px;\n box-shadow: rgb(174, 174, 174) 0px 0px 10px;\n }\n .g6-contextmenu-ul {\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n"); var Menu = function(_super) { __extends6(Menu3, _super); - function Menu3() { - return _super !== null && _super.apply(this, arguments) || this; + function Menu3(config) { + return _super.call(this, config) || this; } Menu3.prototype.getDefaultCfgs = function() { return { @@ -128524,17 +135954,23 @@ var Menu = function(_super) { onHide: function onHide() { return true; }, - itemTypes: ["node", "edge", "combo"] + itemTypes: ["node", "edge", "combo"], + trigger: "contextmenu" }; }; Menu3.prototype.getEvents = function() { + if (this.get("trigger") === "click") { + return { + click: "onMenuShow" + }; + } return { contextmenu: "onMenuShow" }; }; Menu3.prototype.init = function() { var className = this.get("className"); - var menu = createDom("
    "); + var menu = createDom("
    ")); modifyCSS(menu, { top: "0px", position: "absolute", @@ -128544,7 +135980,7 @@ var Menu = function(_super) { if (!container2) { container2 = this.get("graph").get("container"); } - if (is_string_default(container2)) { + if ((0, import_util556.isString)(container2)) { container2 = document.getElementById(container2); } container2.appendChild(menu); @@ -128553,11 +135989,12 @@ var Menu = function(_super) { Menu3.prototype.onMenuShow = function(e4) { var self2 = this; e4.preventDefault(); - e4.stopPropagation(); var itemTypes = this.get("itemTypes"); if (!e4.item) { - if (itemTypes.indexOf("canvas") === -1) + if (itemTypes.indexOf("canvas") === -1) { + self2.onMenuHide(); return; + } } else { if (e4.item && e4.item.getType && itemTypes.indexOf(e4.item.getType()) === -1) { self2.onMenuHide(); @@ -128571,7 +136008,7 @@ var Menu = function(_super) { var getContent = this.get("getContent"); var graph = this.get("graph"); var menu = getContent(e4, graph); - if (is_string_default(menu)) { + if ((0, import_util556.isString)(menu)) { menuDom.innerHTML = menu; } else { menuDom.innerHTML = menu.outerHTML; @@ -128601,11 +136038,16 @@ var Menu = function(_super) { y5 = e4.canvasY - bbox.height - offsetY + graphTop; } modifyCSS(menuDom, { - top: y5 + "px", - left: x6 + "px", + top: "".concat(y5, "px"), + left: "".concat(x6, "px"), visibility: "visible" }); + var triggeredByFirstClick = this.get("trigger") === "click"; var handler = function handler2(evt) { + if (triggeredByFirstClick) { + triggeredByFirstClick = false; + return; + } self2.onMenuHide(); }; document.body.addEventListener("click", handler); @@ -128640,7 +136082,7 @@ var Menu = function(_super) { if (!container2) { container2 = this.get("graph").get("container"); } - if (is_string_default(container2)) { + if ((0, import_util556.isString)(container2)) { container2 = document.getElementById(container2); } container2.removeChild(menu); @@ -128650,87 +136092,8 @@ var Menu = function(_super) { }(base_default18); var menu_default = Menu; -// node_modules/@antv/g6-plugin/node_modules/@antv/matrix-util/esm/ext.js -var ext_exports4 = {}; -__export(ext_exports4, { - angleTo: () => angleTo3, - direction: () => direction4, - leftRotate: () => leftRotate3, - leftScale: () => leftScale3, - leftTranslate: () => leftTranslate3, - transform: () => transform14, - vertical: () => vertical3 -}); -function leftTranslate3(out, a4, v3) { - var transMat = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - mat3_exports.fromTranslation(transMat, v3); - return mat3_exports.multiply(out, transMat, a4); -} -function leftRotate3(out, a4, rad) { - var rotateMat = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - mat3_exports.fromRotation(rotateMat, rad); - return mat3_exports.multiply(out, rotateMat, a4); -} -function leftScale3(out, a4, v3) { - var scaleMat = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - mat3_exports.fromScaling(scaleMat, v3); - return mat3_exports.multiply(out, scaleMat, a4); -} -function leftMultiply3(out, a4, a1) { - return mat3_exports.multiply(out, a1, a4); -} -function transform14(m4, actions) { - var matrix = m4 ? [].concat(m4) : [1, 0, 0, 0, 1, 0, 0, 0, 1]; - for (var i4 = 0, len5 = actions.length; i4 < len5; i4++) { - var action = actions[i4]; - switch (action[0]) { - case "t": - leftTranslate3(matrix, matrix, [action[1], action[2]]); - break; - case "s": - leftScale3(matrix, matrix, [action[1], action[2]]); - break; - case "r": - leftRotate3(matrix, matrix, action[1]); - break; - case "m": - leftMultiply3(matrix, matrix, action[1]); - break; - default: - break; - } - } - return matrix; -} -function direction4(v1, v22) { - return v1[0] * v22[1] - v22[0] * v1[1]; -} -function angleTo3(v1, v22, direct) { - var ang = vec2_exports.angle(v1, v22); - var angleLargeThanPI = direction4(v1, v22) >= 0; - if (direct) { - if (angleLargeThanPI) { - return Math.PI * 2 - ang; - } - return ang; - } - if (angleLargeThanPI) { - return ang; - } - return Math.PI * 2 - ang; -} -function vertical3(out, v3, flag) { - if (flag) { - out[0] = v3[1]; - out[1] = -1 * v3[0]; - } else { - out[0] = -1 * v3[1]; - out[1] = v3[0]; - } - return out; -} - // node_modules/@antv/g6-plugin/es/minimap/index.js +var import_util557 = __toModule(require_lib()); var __extends7 = function() { var _extendStatics = function extendStatics(d3, b10) { _extendStatics = Object.setPrototypeOf || { @@ -128755,8 +136118,8 @@ var __extends7 = function() { d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); }; }(); -var __assign6 = function() { - __assign6 = Object.assign || function(t4) { +var __assign7 = function() { + __assign7 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) { @@ -128766,19 +136129,19 @@ var __assign6 = function() { } return t4; }; - return __assign6.apply(this, arguments); + return __assign7.apply(this, arguments); }; -var max6 = Math.max; -var transform15 = ext_exports4.transform; +var max13 = Math.max; +var transform13 = ext_exports.transform; var DEFAULT_MODE = "default"; var KEYSHAPE_MODE = "keyShape"; var DELEGATE_MODE = "delegate"; var SVG3 = "svg"; var MiniMap = function(_super) { __extends7(MiniMap2, _super); - function MiniMap2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.handleUpdateCanvas = debounce_default(function(event) { + function MiniMap2(config) { + var _this = _super.call(this, config) || this; + _this.handleUpdateCanvas = (0, import_util557.debounce)(function(event) { var self2 = _this; if (self2.destroyed) return; @@ -128822,12 +136185,12 @@ var MiniMap = function(_super) { MiniMap2.prototype.initViewport = function() { var _this = this; var cfgs = this._cfgs; - var size2 = cfgs.size, graph = cfgs.graph; + var size14 = cfgs.size, graph = cfgs.graph; if (this.destroyed) return; var canvas = this.get("canvas"); var containerDOM = canvas.get("container"); - var viewport = createDom("\n \n "); + var viewport = createDom("\n \n ")); var isFireFox = navigator.userAgent.toLowerCase().indexOf("firefox") > -1; var x6 = 0; var y5 = 0; @@ -128859,7 +136222,7 @@ var MiniMap = function(_super) { top = parseInt(style.top, 10); width2 = parseInt(style.width, 10); height = parseInt(style.height, 10); - if (width2 > size2[0] || height > size2[1]) { + if (width2 > size14[0] || height > size14[1]) { return; } zoom2 = graph.getZoom(); @@ -128869,22 +136232,22 @@ var MiniMap = function(_super) { y5 = e4.clientY; }, false); viewport.addEventListener(isFireFox ? "dragover" : "drag", function(e4) { - if (!dragging || is_nil_default(e4.clientX) || is_nil_default(e4.clientY)) { + if (!dragging || (0, import_util557.isNil)(e4.clientX) || (0, import_util557.isNil)(e4.clientY)) { return; } var dx = x6 - e4.clientX; var dy = y5 - e4.clientY; - if (left2 - dx < 0 || left2 - dx + width2 >= size2[0]) { + if (left2 - dx < 0 || left2 - dx + width2 >= size14[0]) { dx = 0; } - if (top - dy < 0 || top - dy + height >= size2[1]) { + if (top - dy < 0 || top - dy + height >= size14[1]) { dy = 0; } left2 -= dx; top -= dy; modifyCSS(viewport, { - left: left2 + "px", - top: top + "px" + left: "".concat(left2, "px"), + top: "".concat(top, "px") }); graph.translate(dx * zoom2 / ratio, dy * zoom2 / ratio); x6 = e4.clientX; @@ -128906,7 +136269,7 @@ var MiniMap = function(_super) { var totaldx = this.get("totaldx"); var totaldy = this.get("totaldy"); var graph = this.get("graph"); - var size2 = this.get("size"); + var size14 = this.get("size"); var graphWidth2 = graph.get("width"); var graphHeight2 = graph.get("height"); var topLeft = graph.getPointByCanvas(0, 0); @@ -128915,7 +136278,6 @@ var MiniMap = function(_super) { if (!viewport) { this.initViewport(); } - var zoom2 = graph.getZoom(); var width2 = (bottomRight.x - topLeft.x) * ratio; var height = (bottomRight.y - topLeft.y) * ratio; var left2 = topLeft.x * ratio + totaldx; @@ -128926,24 +136288,24 @@ var MiniMap = function(_super) { width2 += left2; left2 = 0; } - if (right2 > size2[0]) { - width2 = width2 - (right2 - size2[0]); + if (right2 > size14[0]) { + width2 = width2 - (right2 - size14[0]); } if (top < 0) { height += top; top = 0; } - if (bottom > size2[1]) { - height = height - (bottom - size2[1]); + if (bottom > size14[1]) { + height = height - (bottom - size14[1]); } this.set("ratio", ratio); - var correctLeft = left2 + "px"; - var correctTop = top + "px"; + var correctLeft = "".concat(left2, "px"); + var correctTop = "".concat(top, "px"); modifyCSS(viewport, { left: correctLeft, top: correctTop, - width: width2 + "px", - height: height + "px" + width: "".concat(width2, "px"), + height: "".concat(height, "px") }); }; MiniMap2.prototype.updateGraphShapes = function() { @@ -128979,17 +136341,37 @@ var MiniMap = function(_super) { MiniMap2.prototype.updateKeyShapes = function() { var _this = this; var graph = this._cfgs.graph; - each_default(graph.getEdges(), function(edge2) { - _this.updateOneEdgeKeyShape(edge2); + var canvas = this.get("canvas"); + var group3 = canvas.get("children")[0] || canvas.addGroup(); + (0, import_util557.each)(graph.getEdges(), function(edge2) { + _this.updateOneEdgeKeyShape(edge2, group3); }); - each_default(graph.getNodes(), function(node) { - _this.updateOneNodeKeyShape(node); + (0, import_util557.each)(graph.getNodes(), function(node) { + _this.updateOneNodeKeyShape(node, group3); }); + var combos = graph.getCombos(); + if (combos && combos.length) { + var comboGroup_1 = group3.find(function(e4) { + return e4.get("name") === "comboGroup"; + }) || group3.addGroup({ + name: "comboGroup" + }); + setTimeout(function() { + if (_this.destroyed) + return; + (0, import_util557.each)(combos, function(combo) { + _this.updateOneComboKeyShape(combo, comboGroup_1); + }); + comboGroup_1 === null || comboGroup_1 === void 0 ? void 0 : comboGroup_1.sort(); + comboGroup_1 === null || comboGroup_1 === void 0 ? void 0 : comboGroup_1.toBack(); + _this.updateCanvas(); + }, 250); + } this.clearDestroyedShapes(); }; - MiniMap2.prototype.updateOneNodeKeyShape = function(item) { - var canvas = this.get("canvas"); - var group2 = canvas.get("children")[0] || canvas.addGroup(); + MiniMap2.prototype.updateOneComboKeyShape = function(item, comboGroup) { + if (this.destroyed) + return; var itemMap = this.get("itemMap") || {}; var mappedItem = itemMap[item.get("id")]; var bbox = item.getBBox(); @@ -129001,7 +136383,7 @@ var MiniMap = function(_super) { }; if (!mappedItem) { mappedItem = cKeyShape; - group2.add(mappedItem); + comboGroup.add(mappedItem); } else { attrs = Object.assign(keyShapeStyle, attrs); } @@ -129011,42 +136393,97 @@ var MiniMap = function(_super) { attrs.y = bbox.minY; } mappedItem.attr(attrs); - if (!item.isVisible()) { + if (!item.isVisible()) mappedItem.hide(); - } + else + mappedItem.show(); mappedItem.exist = true; + var zIndex = item.getModel().depth; + if (!isNaN(zIndex)) + mappedItem.set("zIndex", zIndex); + itemMap[item.get("id")] = mappedItem; + this.set("itemMap", itemMap); + }; + MiniMap2.prototype.updateOneNodeKeyShape = function(item, group3) { + var itemMap = this.get("itemMap") || {}; + var mappedItem = itemMap[item.get("id")]; + var bbox = item.getBBox(); + var cKeyShape = item.get("keyShape").clone(); + var keyShapeStyle = cKeyShape.attr(); + var attrs = { + x: bbox.centerX, + y: bbox.centerY + }; + if (!mappedItem) { + mappedItem = cKeyShape; + group3.add(mappedItem); + } else { + attrs = Object.assign(keyShapeStyle, attrs); + } + var shapeType = mappedItem.get("type"); + if (shapeType === "rect" || shapeType === "image") { + attrs.x = bbox.minX; + attrs.y = bbox.minY; + } + mappedItem.attr(attrs); + if (!item.isVisible()) + mappedItem.hide(); + else + mappedItem.show(); + mappedItem.exist = true; + var zIndex = item.getModel().depth; + if (!isNaN(zIndex)) + mappedItem.set("zIndex", zIndex); itemMap[item.get("id")] = mappedItem; this.set("itemMap", itemMap); }; MiniMap2.prototype.updateDelegateShapes = function() { var _this = this; var graph = this._cfgs.graph; - each_default(graph.getEdges(), function(edge2) { - _this.updateOneEdgeKeyShape(edge2); + var canvas = this.get("canvas"); + var group3 = canvas.get("children")[0] || canvas.addGroup(); + (0, import_util557.each)(graph.getEdges(), function(edge2) { + _this.updateOneEdgeKeyShape(edge2, group3); }); - each_default(graph.getNodes(), function(node) { - _this.updateOneNodeDelegateShape(node); + (0, import_util557.each)(graph.getNodes(), function(node) { + _this.updateOneNodeDelegateShape(node, group3); }); + var combos = graph.getCombos(); + if (combos && combos.length) { + var comboGroup_2 = group3.find(function(e4) { + return e4.get("name") === "comboGroup"; + }) || group3.addGroup({ + name: "comboGroup" + }); + setTimeout(function() { + if (_this.destroyed) + return; + (0, import_util557.each)(combos, function(combo) { + _this.updateOneComboKeyShape(combo, comboGroup_2); + }); + comboGroup_2 === null || comboGroup_2 === void 0 ? void 0 : comboGroup_2.sort(); + comboGroup_2 === null || comboGroup_2 === void 0 ? void 0 : comboGroup_2.toBack(); + _this.updateCanvas(); + }, 250); + } this.clearDestroyedShapes(); }; MiniMap2.prototype.clearDestroyedShapes = function() { var itemMap = this.get("itemMap") || {}; - var keys2 = Object.keys(itemMap); - if (!keys2 || keys2.length === 0) + var keys6 = Object.keys(itemMap); + if (!keys6 || keys6.length === 0) return; - for (var i4 = keys2.length - 1; i4 >= 0; i4--) { - var shape = itemMap[keys2[i4]]; + for (var i4 = keys6.length - 1; i4 >= 0; i4--) { + var shape = itemMap[keys6[i4]]; var exist = shape.exist; shape.exist = false; if (!exist) { shape.remove(); - delete itemMap[keys2[i4]]; + delete itemMap[keys6[i4]]; } } }; - MiniMap2.prototype.updateOneEdgeKeyShape = function(item) { - var canvas = this.get("canvas"); - var group2 = canvas.get("children")[0] || canvas.addGroup(); + MiniMap2.prototype.updateOneEdgeKeyShape = function(item, group3) { var itemMap = this.get("itemMap") || {}; var mappedItem = itemMap[item.get("id")]; if (mappedItem) { @@ -129054,19 +136491,17 @@ var MiniMap = function(_super) { mappedItem.attr("path", path); } else { mappedItem = item.get("keyShape").clone(); - group2.add(mappedItem); - mappedItem.toBack(); + group3.add(mappedItem); } - if (!item.isVisible()) { + if (!item.isVisible()) mappedItem.hide(); - } + else + mappedItem.show(); mappedItem.exist = true; itemMap[item.get("id")] = mappedItem; this.set("itemMap", itemMap); }; - MiniMap2.prototype.updateOneNodeDelegateShape = function(item) { - var canvas = this.get("canvas"); - var group2 = canvas.get("children")[0] || canvas.addGroup(); + MiniMap2.prototype.updateOneNodeDelegateShape = function(item, group3) { var delegateStyle = this.get("delegateStyle"); var itemMap = this.get("itemMap") || {}; var mappedItem = itemMap[item.get("id")]; @@ -129080,8 +136515,8 @@ var MiniMap = function(_super) { }; mappedItem.attr(attrs); } else { - mappedItem = group2.addShape("rect", { - attrs: __assign6({ + mappedItem = group3.addShape("rect", { + attrs: __assign7({ x: bbox.minX, y: bbox.minY, width: bbox.width, @@ -129090,9 +136525,10 @@ var MiniMap = function(_super) { name: "minimap-node-shape" }); } - if (!item.isVisible()) { + if (!item.isVisible()) mappedItem.hide(); - } + else + mappedItem.show(); mappedItem.exist = true; itemMap[item.get("id")] = mappedItem; this.set("itemMap", itemMap); @@ -129109,11 +136545,11 @@ var MiniMap = function(_super) { MiniMap2.prototype.initContainer = function() { var self2 = this; var graph = self2.get("graph"); - var size2 = self2.get("size"); + var size14 = self2.get("size"); var className = self2.get("className"); var parentNode = self2.get("container"); - var container2 = createDom("
    "); - if (is_string_default(parentNode)) { + var container2 = createDom("
    ")); + if ((0, import_util557.isString)(parentNode)) { parentNode = document.getElementById(parentNode); } if (parentNode) { @@ -129135,20 +136571,22 @@ var MiniMap = function(_super) { if (renderer === SVG3) { canvas = new canvas_default3({ container: containerDOM, - width: size2[0], - height: size2[1] + width: size14[0], + height: size14[1] }); } else { canvas = new canvas_default2({ container: containerDOM, - width: size2[0], - height: size2[1] + width: size14[0], + height: size14[1] }); } self2.set("canvas", canvas); self2.updateCanvas(); }; MiniMap2.prototype.updateCanvas = function() { + if (this.destroyed) + return; var isRefresh = this.get("refresh"); if (!isRefresh) { return; @@ -129161,7 +136599,7 @@ var MiniMap = function(_super) { this.set("viewportChange", false); this.updateViewport(); } - var size2 = this.get("size"); + var size14 = this.get("size"); var canvas = this.get("canvas"); var type2 = this.get("type"); var padding3 = this.get("padding"); @@ -129181,21 +136619,22 @@ var MiniMap = function(_super) { default: break; } - var group2 = canvas.get("children")[0]; - if (!group2) + var group3 = canvas.get("children")[0]; + if (!group3) return; - group2.resetMatrix(); - var bbox = group2.getCanvasBBox(); + group3.resetMatrix(); + var bbox = group3.getCanvasBBox(); var graphBBox = graph.get("canvas").getCanvasBBox(); - var width2 = graphBBox.width; - var height = graphBBox.height; + var graphZoom = graph.getZoom() || 1; + var width2 = graphBBox.width / graphZoom; + var height = graphBBox.height / graphZoom; if (Number.isFinite(bbox.width)) { - width2 = max6(bbox.width, width2); - height = max6(bbox.height, height); + width2 = max13(bbox.width, width2); + height = max13(bbox.height, height); } width2 += 2 * padding3; height += 2 * padding3; - var ratio = Math.min(size2[0] / width2, size2[1] / height); + var ratio = Math.min(size14[0] / width2, size14[1] / height); var matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; var minX = 0; var minY = 0; @@ -129205,14 +136644,14 @@ var MiniMap = function(_super) { if (Number.isFinite(bbox.minY)) { minY = -bbox.minY; } - var dx = (size2[0] - (width2 - 2 * padding3) * ratio) / 2; - var dy = (size2[1] - (height - 2 * padding3) * ratio) / 2; - matrix = transform15(matrix, [ + var dx = (size14[0] - (width2 - 2 * padding3) * ratio) / 2; + var dy = (size14[1] - (height - 2 * padding3) * ratio) / 2; + matrix = transform13(matrix, [ ["t", minX, minY], ["s", ratio, ratio], ["t", dx, dy] ]); - group2.setMatrix(matrix); + group3.setMatrix(matrix); this.set("ratio", ratio); this.set("totaldx", dx + minX * ratio); this.set("totaldy", dy + minY * ratio); @@ -129285,8 +136724,8 @@ function projectPointToEdge(p4, e4) { } var Bundling = function(_super) { __extends8(Bundling3, _super); - function Bundling3() { - return _super !== null && _super.apply(this, arguments) || this; + function Bundling3(config) { + return _super.call(this, config) || this; } Bundling3.prototype.getDefaultCfgs = function() { return { @@ -129675,6 +137114,7 @@ var Bundling = function(_super) { var bundling_default = Bundling; // node_modules/@antv/g6-plugin/es/fisheye/index.js +var import_util558 = __toModule(require_lib()); var __extends9 = function() { var _extendStatics = function extendStatics(d3, b10) { _extendStatics = Object.setPrototypeOf || { @@ -129699,8 +137139,8 @@ var __extends9 = function() { d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); }; }(); -var __assign7 = function() { - __assign7 = Object.assign || function(t4) { +var __assign8 = function() { + __assign8 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) { @@ -129710,7 +137150,7 @@ var __assign7 = function() { } return t4; }; - return __assign7.apply(this, arguments); + return __assign8.apply(this, arguments); }; var DELTA = 0.05; var lensDelegateStyle = { @@ -129722,15 +137162,15 @@ var lensDelegateStyle = { }; var Fisheye = function(_super) { __extends9(Fisheye3, _super); - function Fisheye3() { - return _super !== null && _super.apply(this, arguments) || this; + function Fisheye3(config) { + return _super.call(this, config) || this; } Fisheye3.prototype.getDefaultCfgs = function() { return { trigger: "mousemove", d: 1.5, r: 300, - delegateStyle: clone_default(lensDelegateStyle), + delegateStyle: (0, import_util558.clone)(lensDelegateStyle), showLabel: false, maxD: 5, minD: 0, @@ -130056,7 +137496,7 @@ var Fisheye = function(_super) { var parent_1 = graph.get("group"); var attrs = self2.get("delegateStyle") || lensDelegateStyle; lensDelegate = parent_1.addShape("circle", { - attrs: __assign7({ + attrs: __assign8({ r: r4 / 1.5, x: mCenter.x, y: mCenter.y @@ -130127,7 +137567,7 @@ var Fisheye = function(_super) { var parent_2 = graph.get("group"); dPercentText = parent_2.addShape("text", { attrs: { - text: percent2 + "%", + text: "".concat(percent2, "%"), x: mCenter.x, y: textY, fill: "#aaa", @@ -130139,7 +137579,7 @@ var Fisheye = function(_super) { self2.set("dPercentText", dPercentText); } else { dPercentText.attr({ - text: percent2 + "%", + text: "".concat(percent2, "%"), x: mCenter.x, y: textY }); @@ -130170,6 +137610,7 @@ var Fisheye = function(_super) { var fisheye_default = Fisheye; // node_modules/@antv/g6-plugin/es/toolBar/index.js +var import_util559 = __toModule(require_lib()); var import_insert_css2 = __toModule(require_insert_css()); var __extends10 = function() { var _extendStatics = function extendStatics(d3, b10) { @@ -130196,7 +137637,7 @@ var __extends10 = function() { }; }(); var DELTA2 = 0.05; -(0, import_insert_css2.default)("\n .g6-component-toolbar {\n position: absolute;\n list-style-type: none;\n padding: 6px;\n left: 0px;\n top: 0px;\n background-color: rgba(255, 255, 255, 0.9);\n border: 1px solid #e2e2e2;\n border-radius: 4px;\n font-size: 12px;\n color: #545454;\n margin: 0;\n }\n .g6-component-toolbar li {\n float: left;\n text-align: center;\n width: 35px;\n height: 24px;\n cursor: pointer;\n list-style-type:none;\n list-style: none;\n margin-left: 0px;\n }\n .g6-component-toolbar li .icon {\n opacity: 0.7;\n }\n .g6-component-toolbar li .icon:hover {\n opacity: 1;\n }\n"); +typeof document !== "undefined" && (0, import_insert_css2.default)("\n .g6-component-toolbar {\n position: absolute;\n list-style-type: none;\n padding: 6px;\n left: 0px;\n top: 0px;\n background-color: rgba(255, 255, 255, 0.9);\n border: 1px solid #e2e2e2;\n border-radius: 4px;\n font-size: 12px;\n color: #545454;\n margin: 0;\n }\n .g6-component-toolbar li {\n float: left;\n text-align: center;\n width: 35px;\n height: 24px;\n cursor: pointer;\n list-style-type:none;\n list-style: none;\n margin-left: 0px;\n }\n .g6-component-toolbar li .icon {\n opacity: 0.7;\n }\n .g6-component-toolbar li .icon:hover {\n opacity: 1;\n }\n"); var getEventPath = function getEventPath2(evt) { if (!evt) { return []; @@ -130218,8 +137659,8 @@ var getEventPath = function getEventPath2(evt) { }; var ToolBar = function(_super) { __extends10(ToolBar3, _super); - function ToolBar3() { - return _super !== null && _super.apply(this, arguments) || this; + function ToolBar3(config) { + return _super.call(this, config) || this; } ToolBar3.prototype.getDefaultCfgs = function() { return { @@ -130269,7 +137710,7 @@ var ToolBar = function(_super) { var getContent = this.get("getContent"); var toolBar = getContent(graph); var toolBarDOM = toolBar; - if (is_string_default(toolBar)) { + if ((0, import_util559.isString)(toolBar)) { toolBarDOM = createDom(toolBar); } var className = this.get("className"); @@ -130278,7 +137719,7 @@ var ToolBar = function(_super) { if (!container2) { container2 = this.get("graph").get("container"); } - if (is_string_default(container2)) { + if ((0, import_util559.isString)(container2)) { container2 = document.getElementById(container2); } container2.appendChild(toolBarDOM); @@ -130304,8 +137745,8 @@ var ToolBar = function(_super) { var pos = this.get("position"); if (pos) { modifyCSS(toolBarDOM, { - top: pos.y + "px", - left: pos.x + "px" + top: "".concat(pos.y, "px"), + left: "".concat(pos.x, "px") }); } this.bindUndoRedo(); @@ -130348,7 +137789,7 @@ var ToolBar = function(_super) { var currentData = undoStack.pop(); if (currentData) { var action = currentData.action; - graph.pushStack(action, clone_default(currentData.data), "redo"); + graph.pushStack(action, (0, import_util559.clone)(currentData.data), "redo"); var data_1 = currentData.data.before; if (action === "add") { data_1 = currentData.data.after; @@ -130433,7 +137874,7 @@ var ToolBar = function(_super) { if (currentData) { var action = currentData.action; var data_2 = currentData.data.after; - graph.pushStack(action, clone_default(currentData.data)); + graph.pushStack(action, (0, import_util559.clone)(currentData.data)); if (action === "delete") { data_2 = currentData.data.before; } @@ -130557,7 +137998,7 @@ var ToolBar = function(_super) { if (!container2) { container2 = this.get("graph").get("container"); } - if (is_string_default(container2)) { + if ((0, import_util559.isString)(container2)) { container2 = document.getElementById(container2); } container2.removeChild(toolBar); @@ -130572,6 +138013,7 @@ var ToolBar = function(_super) { var toolBar_default = ToolBar; // node_modules/@antv/g6-plugin/es/tooltip/index.js +var import_util560 = __toModule(require_lib()); var import_insert_css3 = __toModule(require_insert_css()); var __extends11 = function() { var _extendStatics = function extendStatics(d3, b10) { @@ -130597,18 +138039,18 @@ var __extends11 = function() { d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); }; }(); -(0, import_insert_css3.default)("\n .g6-component-tooltip {\n border: 1px solid #e2e2e2;\n border-radius: 4px;\n font-size: 12px;\n color: #545454;\n background-color: rgba(255, 255, 255, 0.9);\n padding: 10px 8px;\n box-shadow: rgb(174, 174, 174) 0px 0px 10px;\n }\n .tooltip-type {\n padding: 0;\n margin: 0;\n }\n .tooltip-id {\n color: #531dab;\n }\n"); +typeof document !== "undefined" && (0, import_insert_css3.default)("\n .g6-component-tooltip {\n border: 1px solid #e2e2e2;\n border-radius: 4px;\n font-size: 12px;\n color: #545454;\n background-color: rgba(255, 255, 255, 0.9);\n padding: 10px 8px;\n box-shadow: rgb(174, 174, 174) 0px 0px 10px;\n }\n .tooltip-type {\n padding: 0;\n margin: 0;\n }\n .tooltip-id {\n color: #531dab;\n }\n"); var Tooltip3 = function(_super) { __extends11(Tooltip5, _super); - function Tooltip5() { - return _super !== null && _super.apply(this, arguments) || this; + function Tooltip5(config) { + return _super.call(this, config) || this; } Tooltip5.prototype.getDefaultCfgs = function() { return { offsetX: 6, offsetY: 6, getContent: function getContent(e4) { - return "\n

    \u7C7B\u578B\uFF1A" + e4.item.getType() + "

    \n ID\uFF1A" + e4.item.getID() + "\n "; + return "\n

    \u7C7B\u578B\uFF1A".concat(e4.item.getType(), "

    \n ID\uFF1A").concat(e4.item.getID(), "\n "); }, shouldBegin: function shouldBegin2(e4) { return true; @@ -130627,7 +138069,7 @@ var Tooltip3 = function(_super) { "canvas:click": "onMouseLeave", afterremoveitem: "onMouseLeave", contextmenu: "onMouseLeave", - "drag": "onMouseLeave" + drag: "onMouseLeave" }; } return { @@ -130646,13 +138088,14 @@ var Tooltip3 = function(_super) { }; }; Tooltip5.prototype.init = function() { - var className = this.get("className") || "g6-component-tooltip"; - var tooltip10 = createDom("
    "); - var container2 = this.get("container"); + var self2 = this; + var className = self2.get("className") || "g6-component-tooltip"; + var tooltip10 = createDom("
    ")); + var container2 = self2.get("container"); if (!container2) { - container2 = this.get("graph").get("container"); + container2 = self2.get("graph").get("container"); } - if (is_string_default(container2)) { + if ((0, import_util560.isString)(container2)) { container2 = document.getElementById(container2); } modifyCSS(tooltip10, { @@ -130661,7 +138104,18 @@ var Tooltip3 = function(_super) { display: "none" }); container2.appendChild(tooltip10); - this.set("tooltip", tooltip10); + if (self2.get("trigger") !== "click") { + tooltip10.addEventListener("mouseenter", function(e4) { + modifyCSS(tooltip10, { + visibility: "visible", + display: "unset" + }); + }); + tooltip10.addEventListener("mouseleave", function(e4) { + self2.hideTooltip(); + }); + } + self2.set("tooltip", tooltip10); }; Tooltip5.prototype.onClick = function(e4) { var itemTypes = this.get("itemTypes"); @@ -130726,7 +138180,7 @@ var Tooltip3 = function(_super) { var container2 = this.get("tooltip"); var getContent = this.get("getContent"); var tooltip10 = getContent(e4); - if (is_string_default(tooltip10)) { + if ((0, import_util560.isString)(tooltip10)) { container2.innerHTML = tooltip10; } else { container2.innerHTML = tooltip10.outerHTML; @@ -130760,7 +138214,7 @@ var Tooltip3 = function(_super) { var point2 = graph.getPointByClient(e4.clientX, e4.clientY); var fixToNode = this.get("fixToNode"); var item = e4.item; - if (item.getType && item.getType() === "node" && fixToNode && is_array_default(fixToNode) && fixToNode.length >= 2) { + if (item.getType && item.getType() === "node" && fixToNode && (0, import_util560.isArray)(fixToNode) && fixToNode.length >= 2) { var itemBBox = item.getBBox(); point2 = { x: itemBBox.minX + itemBBox.width * fixToNode[0], @@ -130785,8 +138239,8 @@ var Tooltip3 = function(_super) { res.y -= bbox.height + offsetY; } modifyCSS(tooltip10, { - left: res.x + "px", - top: res.y + "px" + left: "".concat(res.x, "px"), + top: "".concat(res.y, "px") }); }; Tooltip5.prototype.hide = function() { @@ -130799,7 +138253,7 @@ var Tooltip3 = function(_super) { if (!container2) { container2 = this.get("graph").get("container"); } - if (is_string_default(container2)) { + if ((0, import_util560.isString)(container2)) { container2 = document.getElementById(container2); } container2.removeChild(tooltip10); @@ -130809,15 +138263,24 @@ var Tooltip3 = function(_super) { }(base_default18); var tooltip_default2 = Tooltip3; +// node_modules/@antv/g6-plugin/es/timeBar/trendTimeBar.js +var import_util565 = __toModule(require_lib()); + // node_modules/@antv/g6-plugin/es/timeBar/path.js -var __spreadArray3 = function(to, from) { - for (var i4 = 0, il = from.length, j4 = to.length; i4 < il; i4++, j4++) { - to[j4] = from[i4]; - } - return to; +var import_util561 = __toModule(require_lib()); +var __spreadArray3 = function(to, from, pack2) { + if (pack2 || arguments.length === 2) + for (var i4 = 0, l4 = from.length, ar; i4 < l4; i4++) { + if (ar || !(i4 in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i4); + ar[i4] = from[i4]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); }; function pointsToPath2(points) { - return map_default(points, function(p4, idx) { + return (0, import_util561.map)(points, function(p4, idx) { var command = idx === 0 ? "M" : "L"; var x6 = p4[0], y5 = p4[1]; return [command, x6, y5]; @@ -130831,13 +138294,13 @@ function getSmoothLinePath2(points) { return getLinePath3(points); } var data3 = []; - each_default(points, function(p4) { - if (!is_equal_default(p4, data3.slice(data3.length - 2))) { + (0, import_util561.each)(points, function(p4) { + if (!(0, import_util561.isEqual)(p4, data3.slice(data3.length - 2))) { data3.push(p4[0], p4[1]); } }); var path = catmull_rom_2_bezier_default(data3, false); - var _a6 = head(points), x6 = _a6[0], y5 = _a6[1]; + var _a6 = (0, import_util561.head)(points), x6 = _a6[0], y5 = _a6[1]; path.unshift(["M", x6, y5]); return path; } @@ -130849,25 +138312,28 @@ function dataToPath2(data3, width2, height, smooth) { values: data3 }); var x6 = new base_default5({ - values: map_default(data3, function(v3, idx) { + values: (0, import_util561.map)(data3, function(v3, idx) { return idx; }) }); - var points = map_default(data3, function(v3, idx) { + var points = (0, import_util561.map)(data3, function(v3, idx) { return [x6.scale(idx) * width2, height - y5.scale(v3) * height]; }); return smooth ? getSmoothLinePath2(points) : getLinePath3(points); } -function dataToRectPath(data3, width2, height) { +function dataToRectPath(data3, width2, height, barWidth) { + if (barWidth === void 0) { + barWidth = 5; + } var y5 = new linear_default({ values: data3 }); var x6 = new base_default5({ - values: map_default(data3, function(v3, idx) { + values: (0, import_util561.map)(data3, function(v3, idx) { return idx; }) }); - var points = map_default(data3, function(v3, idx) { + var points = (0, import_util561.map)(data3, function(v3, idx) { return [x6.scale(idx) * width2, height - y5.scale(v3) * height]; }); var rectPoints = []; @@ -130877,7 +138343,7 @@ function dataToRectPath(data3, width2, height) { x: point2[0], y: point2[1], y0: height, - size: 5 + size: barWidth }; var rectPoint = getRectPoints3(param); rectPoints.push.apply(rectPoints, rectPoint); @@ -130892,7 +138358,7 @@ function getAreaLineY2(data3, height) { return height - y5.scale(lineY) * height; } function linePathToAreaPath2(path, width2, height, data3) { - var areaPath = __spreadArray3([], path); + var areaPath = __spreadArray3([], path, true); var lineYPx = getAreaLineY2(data3, height); areaPath.push(["L", width2, lineYPx]); areaPath.push(["L", 0, lineYPx]); @@ -130900,10 +138366,10 @@ function linePathToAreaPath2(path, width2, height, data3) { return areaPath; } function getRectPoints3(pointInfo) { - var x6 = pointInfo.x, y5 = pointInfo.y, y0 = pointInfo.y0, size2 = pointInfo.size; + var x6 = pointInfo.x, y5 = pointInfo.y, y0 = pointInfo.y0, size14 = pointInfo.size; var yMin; var yMax; - if (is_array_default(y5)) { + if ((0, import_util561.isArray)(y5)) { yMin = y5[0], yMax = y5[1]; } else { yMin = y0; @@ -130911,11 +138377,11 @@ function getRectPoints3(pointInfo) { } var xMin; var xMax; - if (is_array_default(x6)) { + if ((0, import_util561.isArray)(x6)) { xMin = x6[0], xMax = x6[1]; } else { - xMin = x6 - size2 / 2; - xMax = x6 + size2 / 2; + xMin = x6 - size14 / 2; + xMax = x6 + size14 / 2; } var points = [{ x: xMin, @@ -130951,8 +138417,8 @@ function getRectPath3(points, isClosed) { } // node_modules/@antv/g6-plugin/es/timeBar/trend.js -var __assign8 = function() { - __assign8 = Object.assign || function(t4) { +var __assign9 = function() { + __assign9 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) { @@ -130962,7 +138428,7 @@ var __assign8 = function() { } return t4; }; - return __assign8.apply(this, arguments); + return __assign9.apply(this, arguments); }; var LINE_STYLE2 = { stroke: "#C5C5C5", @@ -130974,8 +138440,8 @@ var AREA_STYLE2 = { }; var Trend2 = function() { function Trend3(cfg) { - var _a6 = cfg.x, x6 = _a6 === void 0 ? 0 : _a6, _b = cfg.y, y5 = _b === void 0 ? 0 : _b, _c = cfg.width, width2 = _c === void 0 ? 200 : _c, _d = cfg.height, height = _d === void 0 ? 26 : _d, _e = cfg.smooth, smooth = _e === void 0 ? true : _e, _f = cfg.isArea, isArea = _f === void 0 ? false : _f, _g = cfg.data, data3 = _g === void 0 ? [] : _g, lineStyle = cfg.lineStyle, areaStyle = cfg.areaStyle, group2 = cfg.group, _h = cfg.interval, interval3 = _h === void 0 ? null : _h; - this.group = group2; + var _a6 = cfg.x, x6 = _a6 === void 0 ? 0 : _a6, _b = cfg.y, y5 = _b === void 0 ? 0 : _b, _c = cfg.width, width2 = _c === void 0 ? 200 : _c, _d = cfg.height, height = _d === void 0 ? 26 : _d, _e = cfg.smooth, smooth = _e === void 0 ? true : _e, _f = cfg.isArea, isArea = _f === void 0 ? false : _f, _g = cfg.data, data3 = _g === void 0 ? [] : _g, lineStyle = cfg.lineStyle, areaStyle = cfg.areaStyle, group3 = cfg.group, _h = cfg.interval, interval3 = _h === void 0 ? null : _h; + this.group = group3; this.x = x6; this.y = y5; this.width = width2; @@ -130989,31 +138455,34 @@ var Trend2 = function() { this.renderLine(); } Trend3.prototype.renderLine = function() { - var _a6 = this, x6 = _a6.x, y5 = _a6.y, width2 = _a6.width, height = _a6.height, data3 = _a6.data, smooth = _a6.smooth, isArea = _a6.isArea, lineStyle = _a6.lineStyle, areaStyle = _a6.areaStyle; + var _a6 = this, x6 = _a6.x, y5 = _a6.y, width2 = _a6.width, height = _a6.height, barWidth = _a6.barWidth, data3 = _a6.data, smooth = _a6.smooth, isArea = _a6.isArea, lineStyle = _a6.lineStyle, areaStyle = _a6.areaStyle; var trendGroup = this.group.addGroup({ name: "trend-group" }); if (data3) { var path = dataToPath2(data3, width2, height, smooth); trendGroup.addShape("path", { - attrs: __assign8({ + attrs: __assign9({ path - }, lineStyle) + }, lineStyle), + name: "trend-line" }); if (isArea) { var areaPath = linePathToAreaPath2(path, width2, height, data3); trendGroup.addShape("path", { - attrs: __assign8({ + attrs: __assign9({ path: areaPath - }, areaStyle) + }, areaStyle), + name: "trend-area" }); } } if (this.intervalConfig) { trendGroup.addShape("path", { - attrs: __assign8({ - path: dataToRectPath(this.intervalConfig.data, width2, height) - }, this.intervalConfig.style) + attrs: __assign9({ + path: dataToRectPath(this.intervalConfig.data, width2, height, this.intervalConfig.style.barWidth) + }, this.intervalConfig.style), + name: "trend-interval" }); } trendGroup.move(x6, y5); @@ -131026,8 +138495,9 @@ var Trend2 = function() { var trend_default = Trend2; // node_modules/@antv/g6-plugin/es/timeBar/handler.js -var __assign9 = function() { - __assign9 = Object.assign || function(t4) { +var import_util562 = __toModule(require_lib()); +var __assign10 = function() { + __assign10 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) { @@ -131037,7 +138507,7 @@ var __assign9 = function() { } return t4; }; - return __assign9.apply(this, arguments); + return __assign10.apply(this, arguments); }; var DEFAULT_STYLE2 = { fill: "#1890ff", @@ -131057,8 +138527,8 @@ var SIMPLE_DEFAULT_STYLE = { }; var Handler2 = function() { function Handler3(cfg) { - var group2 = cfg.group, name = cfg.name, type2 = cfg.type, _a6 = cfg.x, x6 = _a6 === void 0 ? 0 : _a6, _b = cfg.y, y5 = _b === void 0 ? 0 : _b, _c = cfg.width, width2 = _c === void 0 ? 2 : _c, _d = cfg.height, height = _d === void 0 ? 24 : _d, _e = cfg.style, style = _e === void 0 ? {} : _e; - this.group = group2; + var group3 = cfg.group, name = cfg.name, type2 = cfg.type, _a6 = cfg.x, x6 = _a6 === void 0 ? 0 : _a6, _b = cfg.y, y5 = _b === void 0 ? 0 : _b, _c = cfg.width, width2 = _c === void 0 ? 2 : _c, _d = cfg.height, height = _d === void 0 ? 24 : _d, _e = cfg.style, style = _e === void 0 ? {} : _e; + this.group = group3; this.name = name; this.handleType = type2; this.x = x6; @@ -131066,9 +138536,9 @@ var Handler2 = function() { this.width = width2; this.height = height; if (type2 === "trend") { - this.style = __assign9(__assign9({}, DEFAULT_STYLE2), style); + this.style = __assign10(__assign10({}, DEFAULT_STYLE2), style); } else if (type2 === "simple") { - this.style = __assign9(__assign9({}, SIMPLE_DEFAULT_STYLE), style); + this.style = __assign10(__assign10({}, SIMPLE_DEFAULT_STYLE), style); } this.renderHandle(); } @@ -131079,10 +138549,10 @@ var Handler2 = function() { this.setXY(void 0, y5); }; Handler3.prototype.setXY = function(x6, y5) { - if (is_number_default(x6)) { + if ((0, import_util562.isNumber)(x6)) { this.x = x6; } - if (is_number_default(y5)) { + if ((0, import_util562.isNumber)(y5)) { this.y = y5; } this.updateXY(); @@ -131104,7 +138574,7 @@ var Handler2 = function() { opacity, cursor }, - name: name + "-handler" + name: "".concat(name, "-handler") }); this.topCircle = this.handleGroup.addShape("circle", { attrs: { @@ -131115,9 +138585,10 @@ var Handler2 = function() { stroke, radius, opacity, - cursor + cursor, + lineAppendWidth: 12 }, - name: name + "-handler" + name: "".concat(name, "-handler") }); this.bottomCircle = this.handleGroup.addShape("circle", { attrs: { @@ -131130,7 +138601,7 @@ var Handler2 = function() { opacity, cursor }, - name: name + "-handler" + name: "".concat(name, "-handler") }); } else if (this.handleType === "simple") { this.topCircle = this.handleGroup.addShape("circle", { @@ -131145,7 +138616,7 @@ var Handler2 = function() { cursor, lineWidth: 2 }, - name: name + "-handler" + name: "".concat(name, "-handler") }); } this.updateXY(); @@ -131158,11 +138629,11 @@ var Handler2 = function() { Handler3.prototype.bindSimpleEvents = function() { var _this = this; var name = this.name; - this.handleGroup.on(name + "-handler:mouseenter", function() { + this.handleGroup.on("".concat(name, "-handler:mouseenter"), function() { var highLightFill = _this.style.highLightFill; _this.topCircle.attr("fill", highLightFill); }); - this.handleGroup.on(name + "-handler:mouseleave", function() { + this.handleGroup.on("".concat(name, "-handler:mouseleave"), function() { var fill = _this.style.fill; _this.topCircle.attr("fill", fill); }); @@ -131170,13 +138641,13 @@ var Handler2 = function() { Handler3.prototype.bindTrendEvents = function() { var _this = this; var name = this.name; - this.handleGroup.on(name + "-handler:mouseenter", function() { + this.handleGroup.on("".concat(name, "-handler:mouseenter"), function() { var highLightFill = _this.style.highLightFill; _this.verticalLine.attr("fill", highLightFill); _this.topCircle.attr("fill", highLightFill); _this.bottomCircle.attr("fill", highLightFill); }); - this.handleGroup.on(name + "-handler:mouseleave", function() { + this.handleGroup.on("".concat(name, "-handler:mouseleave"), function() { var fill = _this.style.fill; _this.verticalLine.attr("fill", fill); _this.topCircle.attr("fill", fill); @@ -131196,18 +138667,27 @@ var Handler2 = function() { }(); var handler_default = Handler2; +// node_modules/@antv/g6-plugin/es/timeBar/trendTimeBar.js +var import_util566 = __toModule(require_lib()); + +// node_modules/@antv/g6-plugin/es/timeBar/controllerBtn.js +var import_util564 = __toModule(require_lib()); + +// node_modules/@antv/g6-plugin/es/timeBar/timeButton.js +var import_util563 = __toModule(require_lib()); + // node_modules/@antv/g6-plugin/es/timeBar/constant.js -var TIMELINE_START = "timelinestart"; -var TIMELINE_END = "timelineend"; -var VALUE_CHANGE = "valueChange"; +var TIMELINE_START = "timebarstartplay"; +var TIMELINE_END = "timebarendplay"; +var VALUE_CHANGE = "valuechange"; var TIMEBAR_CONFIG_CHANGE = "timebarConfigChanged"; var PLAY_PAUSE_BTN = "playPauseBtn"; var NEXT_STEP_BTN = "nextStepBtn"; var PRE_STEP_BTN = "preStepBtn"; // node_modules/@antv/g6-plugin/es/timeBar/timeButton.js -var __assign10 = function() { - __assign10 = Object.assign || function(t4) { +var __assign11 = function() { + __assign11 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) { @@ -131217,15 +138697,15 @@ var __assign10 = function() { } return t4; }; - return __assign10.apply(this, arguments); + return __assign11.apply(this, arguments); }; var Button = function() { function Button2(cfg) { - this.config = deep_mix_default({}, cfg); + this.config = (0, import_util563.deepMix)({}, cfg); this.init(); } Button2.prototype.update = function(cfg) { - this.config = deep_mix_default({}, this.config, cfg); + this.config = (0, import_util563.deepMix)({}, this.config, cfg); this.updateElement(); this.renderMarker(); }; @@ -131234,18 +138714,18 @@ var Button = function() { this.renderMarker(); }; Button2.prototype.initElement = function() { - var _a6 = this.config, group2 = _a6.group, style = _a6.style; + var _a6 = this.config, group3 = _a6.group, style = _a6.style; var _b = style.scale, scale12 = _b === void 0 ? 1 : _b, _c = style.offsetX, offsetX = _c === void 0 ? 0 : _c, _d = style.offsetY, offsetY = _d === void 0 ? 0 : _d; var x6 = this.config.x + offsetX; var y5 = this.config.y + offsetY; - var buttonGroup = group2.addGroup({ + var buttonGroup = group3.addGroup({ name: PLAY_PAUSE_BTN }); this.startMarkerGroup = buttonGroup.addGroup({ name: PLAY_PAUSE_BTN }); - this.circle = group2.addShape("circle", { - attrs: __assign10({ + this.circle = group3.addShape("circle", { + attrs: __assign11({ x: x6, y: y5, r: this.config.r * scale12 @@ -131256,7 +138736,8 @@ var Button = function() { attrs: { path: this.getStartMarkerPath(x6, y5, scale12), fill: style.stroke || "#aaa" - } + }, + name: "start-marker" }); this.pauseMarkerGroup = buttonGroup.addGroup({ name: PLAY_PAUSE_BTN @@ -131321,8 +138802,8 @@ var Button = function() { var timeButton_default = Button; // node_modules/@antv/g6-plugin/es/timeBar/controllerBtn.js -var __assign11 = function() { - __assign11 = Object.assign || function(t4) { +var __assign12 = function() { + __assign12 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) { @@ -131332,9 +138813,9 @@ var __assign11 = function() { } return t4; }; - return __assign11.apply(this, arguments); + return __assign12.apply(this, arguments); }; -var transform16 = ext_exports4.transform; +var transform14 = ext_exports.transform; var DEFAULT_RECT_FILL = "#aaa"; var DEFAULT_RECT_STROKE = "green"; var DEFAULT_PLAYBTN_STYLE = { @@ -131410,7 +138891,7 @@ var SPEED_CONTROLLER_OFFSET = 110; var TOGGLE_MODEL_OFFSET = 50; var ControllerBtn = function() { function ControllerBtn2(cfg) { - this.controllerCfg = deep_mix_default({}, DEFAULT_CONTROLLER_CONFIG, cfg); + this.controllerCfg = (0, import_util564.deepMix)({}, DEFAULT_CONTROLLER_CONFIG, cfg); this.group = cfg.group; this.controllerGroup = this.group.addGroup({ name: "controller-group" @@ -131432,21 +138913,21 @@ var ControllerBtn = function() { }; ControllerBtn2.prototype.renderPlayButton = function() { var controllerCfg = this.controllerCfg; - var width2 = controllerCfg.width, height = controllerCfg.height, x6 = controllerCfg.x, y5 = controllerCfg.y, hideTimeTypeController = controllerCfg.hideTimeTypeController, _a6 = controllerCfg.fill, fill = _a6 === void 0 ? DEFAULT_RECT_FILL : _a6, _b = controllerCfg.stroke, stroke = _b === void 0 ? DEFAULT_RECT_STROKE : _b; - var playBtnStyle = __assign11(__assign11({}, DEFAULT_PLAYBTN_STYLE), controllerCfg.playBtnStyle || {}); - var preBtnStyle = __assign11(__assign11({}, DEFAULT_PREBTN_STYLE), controllerCfg.preBtnStyle || {}); - var nextBtnStyle = __assign11(__assign11({}, DEFAULT_NEXTBTN_STYLE), controllerCfg.nextBtnStyle || {}); + var width2 = controllerCfg.width, height = controllerCfg.height, x6 = controllerCfg.x, y5 = controllerCfg.y, hideTimeTypeController = controllerCfg.hideTimeTypeController, _a6 = controllerCfg.fill, fill = _a6 === void 0 ? DEFAULT_RECT_FILL : _a6, _b = controllerCfg.stroke, stroke = _b === void 0 ? DEFAULT_RECT_STROKE : _b, _c = controllerCfg.containerStyle, containerStyle = _c === void 0 ? {} : _c; + var playBtnStyle = __assign12(__assign12({}, DEFAULT_PLAYBTN_STYLE), controllerCfg.playBtnStyle || {}); + var preBtnStyle = __assign12(__assign12({}, DEFAULT_PREBTN_STYLE), controllerCfg.preBtnStyle || {}); + var nextBtnStyle = __assign12(__assign12({}, DEFAULT_NEXTBTN_STYLE), controllerCfg.nextBtnStyle || {}); var r4 = height / 2 - 5; var realY = y5 + 10; var container2 = this.controllerGroup.addShape("rect", { - attrs: { + attrs: __assign12({ x: x6, y: realY, width: width2, height, stroke, fill - }, + }, containerStyle), name: "container-rect" }); if (this.playButton) { @@ -131469,7 +138950,7 @@ var ControllerBtn = function() { var prePaddingY = preBtnStyle.offsetY || 0; var preR = (preBtnStyle.scale || 1) * r4; this.controllerGroup.addShape("path", { - attrs: __assign11({ + attrs: __assign12({ path: this.getPreMarkerPath(width2 / 2 - 5 * r4 + prePaddingX, realY + r4 + 5 + prePaddingY, preR * 0.5) }, preBtnStyle), name: PRE_STEP_BTN @@ -131478,7 +138959,7 @@ var ControllerBtn = function() { var nxtPaddingY = nextBtnStyle.offsetY || 0; var nxtR = (nextBtnStyle.scale || 1) * r4; this.controllerGroup.addShape("path", { - attrs: __assign11({ + attrs: __assign12({ path: this.getNextMarkerPath(width2 / 2 + 5 * r4 + nxtPaddingX, realY + r4 + 5 + nxtPaddingY, nxtR * 0.5) }, nextBtnStyle), name: NEXT_STEP_BTN @@ -131489,16 +138970,16 @@ var ControllerBtn = function() { this.renderToggleTime(); } this.bindEvent(); - var _c = this.controllerCfg.scale, scale12 = _c === void 0 ? 1 : _c; + var _d = this.controllerCfg.scale, scale12 = _d === void 0 ? 1 : _d; var currentBBox = this.controllerGroup.getCanvasBBox(); var centerX = (currentBBox.maxX + currentBBox.minX) / 2; var centerY = (currentBBox.maxY + currentBBox.minY) / 2; - var matrix = transform16([1, 0, 0, 0, 1, 0, 0, 0, 1], [["t", -centerX, -centerY], ["s", scale12, scale12], ["t", centerX, centerY]]); + var matrix = transform14([1, 0, 0, 0, 1, 0, 0, 0, 1], [["t", -centerX, -centerY], ["s", scale12, scale12], ["t", centerX, centerY]]); this.controllerGroup.setMatrix(matrix); }; ControllerBtn2.prototype.renderSpeedBtn = function() { var _a6 = this.controllerCfg, y5 = _a6.y, width2 = _a6.width, hideTimeTypeController = _a6.hideTimeTypeController; - var speedControllerStyle = __assign11(__assign11({}, DEFAULT_SPEED_CONTROLLER_STYLE), this.controllerCfg.speedControllerStyle || {}); + var speedControllerStyle = __assign12(__assign12({}, DEFAULT_SPEED_CONTROLLER_STYLE), this.controllerCfg.speedControllerStyle || {}); var _b = speedControllerStyle.scroller, scroller = _b === void 0 ? {} : _b, _c = speedControllerStyle.text, text = _c === void 0 ? {} : _c, _d = speedControllerStyle.pointer, pointer = _d === void 0 ? {} : _d, _e = speedControllerStyle.scale, scale12 = _e === void 0 ? 1 : _e, _f = speedControllerStyle.offsetX, offsetX = _f === void 0 ? 0 : _f, _g = speedControllerStyle.offsetY, offsetY = _g === void 0 ? 0 : _g; var speedGroup = this.controllerGroup.addGroup({ name: "speed-group" @@ -131511,7 +138992,7 @@ var ControllerBtn = function() { var axisY = y5 + this.speedAxisY[i4]; var startX = width2 - (!hideTimeTypeController ? SPEED_CONTROLLER_OFFSET : TOGGLE_MODEL_OFFSET); speedGroup.addShape("line", { - attrs: __assign11({ + attrs: __assign12({ x1: startX, x2: startX + 15, y1: axisY, @@ -131525,24 +139006,26 @@ var ControllerBtn = function() { maxSpeed = maxSpeed - 1; } this.speedText = speedGroup.addShape("text", { - attrs: __assign11({ + attrs: __assign12({ x: width2 - (!hideTimeTypeController ? SPEED_CONTROLLER_OFFSET : TOGGLE_MODEL_OFFSET) + 20, y: this.speedAxisY[0] + 4, text: "1.0X", fontFamily: this.fontFamily || "Arial, sans-serif" - }, text) + }, text), + name: "speed-text" }); this.speedPoint = speedGroup.addShape("path", { - attrs: __assign11({ + attrs: __assign12({ path: this.getPointerPath(width2 - (!hideTimeTypeController ? SPEED_CONTROLLER_OFFSET : TOGGLE_MODEL_OFFSET), 0), matrix: [1, 0, 0, 0, 1, 0, 0, this.speedAxisY[4], 1] - }, pointer) + }, pointer), + name: "speed-pointer" }); var currentBBox = this.speedGroup.getCanvasBBox(); var centerX = (currentBBox.maxX + currentBBox.minX) / 2; var centerY = (currentBBox.maxY + currentBBox.minY) / 2; var matrix = this.speedGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1]; - matrix = transform16(matrix, [["t", -centerX, -centerY], ["s", scale12, scale12], ["t", centerX + offsetX * scale12, centerY + offsetY * scale12]]); + matrix = transform14(matrix, [["t", -centerX, -centerY], ["s", scale12, scale12], ["t", centerX + offsetX * scale12, centerY + offsetY * scale12]]); this.speedGroup.setMatrix(matrix); }; ControllerBtn2.prototype.getPointerPath = function(x6, y5) { @@ -131551,13 +139034,13 @@ var ControllerBtn = function() { ControllerBtn2.prototype.renderToggleTime = function() { var _a6; var width2 = this.controllerCfg.width; - var timeTypeControllerStyle = __assign11(__assign11({}, DEFAULT_TIMETYPE_CONTROLLER_STYLE), this.controllerCfg.timeTypeControllerStyle || {}); + var timeTypeControllerStyle = __assign12(__assign12({}, DEFAULT_TIMETYPE_CONTROLLER_STYLE), this.controllerCfg.timeTypeControllerStyle || {}); var _b = timeTypeControllerStyle.scale, scale12 = _b === void 0 ? 1 : _b, _c = timeTypeControllerStyle.offsetX, offsetX = _c === void 0 ? 0 : _c, _d = timeTypeControllerStyle.offsetY, offsetY = _d === void 0 ? 0 : _d, _e = timeTypeControllerStyle.box, box2 = _e === void 0 ? {} : _e, _f = timeTypeControllerStyle.check, check = _f === void 0 ? {} : _f, _g = timeTypeControllerStyle.text, text = _g === void 0 ? {} : _g; this.toggleGroup = this.controllerGroup.addGroup({ name: "toggle-group" }); this.toggleGroup.addShape("rect", { - attrs: __assign11({ + attrs: __assign12({ x: width2 - TOGGLE_MODEL_OFFSET, y: this.speedAxisY[0] + 3.5 }, box2), @@ -131565,25 +139048,27 @@ var ControllerBtn = function() { name: "toggle-model" }); this.checkedIcon = this.toggleGroup.addShape("path", { - attrs: __assign11({ + attrs: __assign12({ path: [["M", width2 - TOGGLE_MODEL_OFFSET + 3, this.speedAxisY[1] + 6], ["L", width2 - TOGGLE_MODEL_OFFSET + 7, this.speedAxisY[1] + 10], ["L", width2 - TOGGLE_MODEL_OFFSET + 12, this.speedAxisY[1] + 4]] }, check), - capture: false + capture: false, + name: "check-icon" }); this.checkedIcon.hide(); this.checkedText = this.toggleGroup.addShape("text", { - attrs: __assign11({ + attrs: __assign12({ text: ((_a6 = this.controllerCfg) === null || _a6 === void 0 ? void 0 : _a6.timePointControllerText) || "\u5355\u4E00\u65F6\u95F4", x: width2 - TOGGLE_MODEL_OFFSET + 15, y: this.speedAxisY[0] + 4, fontFamily: typeof window !== "undefined" ? window.getComputedStyle(document.body, null).getPropertyValue("font-family") || "Arial, sans-serif" : "Arial, sans-serif" - }, text) + }, text), + name: "checked-text" }); var currentBBox = this.toggleGroup.getCanvasBBox(); var centerX = (currentBBox.maxX + currentBBox.minX) / 2; var centerY = (currentBBox.maxY + currentBBox.minY) / 2; var matrix = this.toggleGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1]; - matrix = transform16(matrix, [["t", -centerX, -centerY], ["s", scale12, scale12], ["t", centerX + offsetX * scale12, centerY + offsetY * scale12]]); + matrix = transform14(matrix, [["t", -centerX, -centerY], ["s", scale12, scale12], ["t", centerX + offsetX * scale12, centerY + offsetY * scale12]]); this.toggleGroup.setMatrix(matrix); }; ControllerBtn2.prototype.bindEvent = function() { @@ -131594,10 +139079,10 @@ var ControllerBtn = function() { var currentYIdx = _this.speedAxisY.indexOf(pointerMatrix[7] || 0); var targetYIdx = _this.speedAxisY.indexOf(currentPointerY); var yDiff = _this.speedAxisY[targetYIdx] - _this.speedAxisY[currentYIdx]; - pointerMatrix = transform16(pointerMatrix, [["t", 0, yDiff]]); + pointerMatrix = transform14(pointerMatrix, [["t", 0, yDiff]]); _this.speedPoint.setMatrix(pointerMatrix); _this.currentSpeed = _this.speedAxisY.length - targetYIdx; - _this.speedText.attr("text", _this.currentSpeed + ".0X"); + _this.speedText.attr("text", "".concat(_this.currentSpeed, ".0X")); _this.group.emit(TIMEBAR_CONFIG_CHANGE, { speed: _this.currentSpeed, type: _this.currentType @@ -131623,10 +139108,10 @@ var ControllerBtn = function() { else currentYIdx = Math.min(_this.speedAxisY.length - 1, currentYIdx + 1); var yDiff = _this.speedAxisY[currentYIdx] - currentPointerY; - pointerMatrix = transform16(pointerMatrix, [["t", 0, yDiff]]); + pointerMatrix = transform14(pointerMatrix, [["t", 0, yDiff]]); _this.speedPoint.setMatrix(pointerMatrix); _this.currentSpeed = _this.speedAxisY.length - currentYIdx; - _this.speedText.attr("text", _this.currentSpeed + ".0X"); + _this.speedText.attr("text", "".concat(_this.currentSpeed, ".0X")); _this.group.emit(TIMEBAR_CONFIG_CHANGE, { speed: _this.currentSpeed, type: _this.currentType @@ -131666,8 +139151,8 @@ var ControllerBtn = function() { var controllerBtn_default = ControllerBtn; // node_modules/@antv/g6-plugin/es/timeBar/trendTimeBar.js -var __assign12 = function() { - __assign12 = Object.assign || function(t4) { +var __assign13 = function() { + __assign13 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) { @@ -131677,8 +139162,9 @@ var __assign12 = function() { } return t4; }; - return __assign12.apply(this, arguments); + return __assign13.apply(this, arguments); }; +var transform15 = ext_exports.transform; var BACKGROUND_STYLE3 = { fill: "#416180", opacity: 0.05 @@ -131723,7 +139209,7 @@ var TrendTimeBar = function() { var event = e4.originalEvent; event.stopPropagation(); event.preventDefault(); - _this.prevX = get_default(event, "touches.0.pageX", event.pageX); + _this.prevX = (0, import_util565.get)(event, "touches.0.pageX", event.pageX); var containerDOM = _this.canvas.get("container"); containerDOM.addEventListener("mousemove", _this.onMouseMove); containerDOM.addEventListener("mouseup", _this.onMouseUp); @@ -131736,7 +139222,7 @@ var TrendTimeBar = function() { this.onMouseMove = function(e4) { e4.stopPropagation(); e4.preventDefault(); - var x7 = get_default(e4, "touches.0.pageX", e4.pageX); + var x7 = (0, import_util565.get)(e4, "touches.0.pageX", e4.pageX); var offsetX = x7 - _this.prevX; var offsetXRange = _this.adjustOffsetRange(offsetX / _this.width); _this.updateStartEnd(offsetXRange); @@ -131759,7 +139245,7 @@ var TrendTimeBar = function() { }; var _a6 = cfg.x, x6 = _a6 === void 0 ? 0 : _a6, _b = cfg.y, y5 = _b === void 0 ? 0 : _b, _c = cfg.width, width2 = _c === void 0 ? 100 : _c, height = cfg.height, _d = cfg.padding, padding3 = _d === void 0 ? 10 : _d, trendCfg = cfg.trendCfg, _e = cfg.controllerCfg, controllerCfg = _e === void 0 ? { speed: 1 - } : _e, _f = cfg.backgroundStyle, backgroundStyle = _f === void 0 ? {} : _f, _g = cfg.foregroundStyle, foregroundStyle = _g === void 0 ? {} : _g, _h = cfg.handlerStyle, handlerStyle = _h === void 0 ? {} : _h, _j = cfg.textStyle, textStyle2 = _j === void 0 ? {} : _j, _k = cfg.start, start = _k === void 0 ? 0 : _k, _l = cfg.end, end2 = _l === void 0 ? 1 : _l, _m = cfg.minText, minText = _m === void 0 ? "" : _m, _o = cfg.maxText, maxText = _o === void 0 ? "" : _o, group2 = cfg.group, graph = cfg.graph, canvas = cfg.canvas, _p = cfg.tick, tick = _p === void 0 ? { + } : _e, _f = cfg.backgroundStyle, backgroundStyle = _f === void 0 ? {} : _f, _g = cfg.foregroundStyle, foregroundStyle = _g === void 0 ? {} : _g, _h = cfg.handlerStyle, handlerStyle = _h === void 0 ? {} : _h, _j = cfg.textStyle, textStyle2 = _j === void 0 ? {} : _j, _k = cfg.start, start = _k === void 0 ? 0 : _k, _l = cfg.end, end2 = _l === void 0 ? 1 : _l, _m = cfg.minText, minText = _m === void 0 ? "" : _m, _o = cfg.maxText, maxText = _o === void 0 ? "" : _o, group3 = cfg.group, graph = cfg.graph, canvas = cfg.canvas, _p = cfg.tick, tick = _p === void 0 ? { tickLabelStyle: {}, tickLineStyle: {}, tickLabelFormatter: function tickLabelFormatter(d3) { @@ -131769,7 +139255,7 @@ var TrendTimeBar = function() { } : _p, type2 = cfg.type; this.graph = graph; this.canvas = canvas; - this.group = group2; + this.group = group3; this.timeBarType = type2; this.x = x6; this.y = y5; @@ -131782,15 +139268,15 @@ var TrendTimeBar = function() { this.currentSpeed = controllerCfg.speed || 1; this.tickLabelFormatter = tick.tickLabelFormatter; if (type2 === "trend") { - this.backgroundStyle = __assign12(__assign12({}, BACKGROUND_STYLE3), backgroundStyle); + this.backgroundStyle = __assign13(__assign13({}, BACKGROUND_STYLE3), backgroundStyle); } else if (type2 === "simple") { - this.backgroundStyle = __assign12(__assign12({}, SIMPLE_BACKGROUND_STYLE), backgroundStyle); + this.backgroundStyle = __assign13(__assign13({}, SIMPLE_BACKGROUND_STYLE), backgroundStyle); } - this.foregroundStyle = __assign12(__assign12({}, FOREGROUND_STYLE2), foregroundStyle); - this.handlerStyle = __assign12(__assign12({}, HANDLER_STYLE2), handlerStyle); - this.textStyle = __assign12(__assign12({}, TEXT_STYLE2), textStyle2); - this.tickLabelStyle = __assign12(__assign12({}, TICK_LABEL_STYLE), tick.tickLabelStyle); - this.tickLineStyle = __assign12(__assign12({}, TICK_LINE_STYLE), tick.tickLineStyle); + this.foregroundStyle = __assign13(__assign13({}, FOREGROUND_STYLE2), foregroundStyle); + this.handlerStyle = __assign13(__assign13({}, HANDLER_STYLE2), handlerStyle); + this.textStyle = __assign13(__assign13({}, TEXT_STYLE2), textStyle2); + this.tickLabelStyle = __assign13(__assign13({}, TICK_LABEL_STYLE), tick.tickLabelStyle); + this.tickLineStyle = __assign13(__assign13({}, TICK_LINE_STYLE), tick.tickLineStyle); this.currentMode = "range"; this.start = start; this.end = end2; @@ -131803,7 +139289,7 @@ var TrendTimeBar = function() { var x6 = cfg.x, y5 = cfg.y, width2 = cfg.width, height = cfg.height, minText = cfg.minText, maxText = cfg.maxText, start = cfg.start, end2 = cfg.end; this.start = Math.min(1, Math.max(start, 0)); this.end = Math.min(1, Math.max(end2, 0)); - mix(this, { + (0, import_util565.assign)(this, { x: x6, y: y5, width: width2, @@ -131820,8 +139306,8 @@ var TrendTimeBar = function() { TrendTimeBar2.prototype.renderSlider = function() { var _this = this; var _a6 = this, width2 = _a6.width, height = _a6.height, timeBarType = _a6.timeBarType; - if (timeBarType === "trend" && size(get_default(this.trendCfg, "data"))) { - var trendComponent = new trend_default(__assign12(__assign12({ + if (timeBarType === "trend" && (0, import_util565.size)((0, import_util565.get)(this.trendCfg, "data"))) { + var trendComponent = new trend_default(__assign13(__assign13({ x: this.x, y: this.y, width: width2, @@ -131835,65 +139321,79 @@ var TrendTimeBar = function() { name: "slider-group" }); sliderGroup.addShape("rect", { - attrs: __assign12({ + attrs: __assign13({ x: 0, y: 0, width: width2, height - }, this.backgroundStyle) + }, this.backgroundStyle), + name: "background" }); var textGroup = this.group.addGroup(); if (timeBarType === "trend") { this.minTextShape = textGroup.addShape("text", { - attrs: __assign12({ + attrs: __assign13({ x: 0, y: height / 2 + this.y, textAlign: "right", text: this.minText, silent: false, - fontFamily: this.fontFamily || "Arial, sans-serif" + fontFamily: this.fontFamily || "Arial, sans-serif", + stroke: "#fff", + lineWidth: 5 }, this.textStyle), - capture: false + capture: false, + name: "min-text-shape" }); this.maxTextShape = textGroup.addShape("text", { - attrs: __assign12({ + attrs: __assign13({ y: height / 2 + this.y, textAlign: "left", text: this.maxText, silent: false, - fontFamily: this.fontFamily || "Arial, sans-serif" + fontFamily: this.fontFamily || "Arial, sans-serif", + stroke: "#fff", + lineWidth: 5 }, this.textStyle), - capture: false + capture: false, + name: "max-text-shape" }); } else { this.minTextShape = textGroup.addShape("text", { - attrs: __assign12({ + attrs: __assign13({ x: 0, y: this.y - 10, textAlign: "center", text: this.minText, silent: false, - fontFamily: this.fontFamily || "Arial, sans-serif" + fontFamily: this.fontFamily || "Arial, sans-serif", + stroke: "#fff", + lineWidth: 5 }, this.textStyle), - capture: false + capture: false, + name: "min-text-shape" }); this.maxTextShape = textGroup.addShape("text", { - attrs: __assign12({ + attrs: __assign13({ y: this.y - 10, textAlign: "center", text: this.maxText, silent: false, - fontFamily: this.fontFamily || "Arial, sans-serif" + fontFamily: this.fontFamily || "Arial, sans-serif", + stroke: "#fff", + lineWidth: 5 }, this.textStyle), - capture: false + capture: false, + name: "max-text-shape" }); } this.foregroundShape = this.group.addGroup().addShape("rect", { - attrs: __assign12({ + attrs: __assign13({ x: 0, y: this.y, height - }, this.foregroundStyle) + }, this.foregroundStyle), + name: "foreground-shape" }); this.foregroundShape.on("mousedown", function(e4) { e4.target.attr("cursor", "grabbing"); @@ -131901,8 +139401,8 @@ var TrendTimeBar = function() { this.foregroundShape.on("mouseup", function(e4) { e4.target.attr("cursor", _this.foregroundStyle.cursor || "grab"); }); - var handlerWidth = get_default(this.handlerStyle, "width", 2); - var handlerHeight = get_default(this.handlerStyle, "height", 24); + var handlerWidth = (0, import_util565.get)(this.handlerStyle, "width", 2); + var handlerHeight = (0, import_util565.get)(this.handlerStyle, "height", 24); var minHandleGroup = this.group.addGroup({ name: "minHandlerShape" }); @@ -131938,32 +139438,53 @@ var TrendTimeBar = function() { }); } var lastX = -Infinity; + var rotate8 = this.tickLabelStyle.rotate; + delete this.tickLabelStyle.rotate; this.textList = tickData.map(function(data3, index2) { _this.tickPosList.push(_this.x + index2 * interval3); var label17; if (_this.tickLabelFormatter) { label17 = _this.tickLabelFormatter(data3); - if (!is_string_default(label17) && label17) { + if (!(0, import_util566.isString)(label17) && label17) { label17 = data3.date; } } else { label17 = data3.date; } + var textX = _this.x + index2 * interval3, textY = _this.y + height + 5; var text = _this.group.addShape("text", { - attrs: __assign12({ - x: _this.x + index2 * interval3, - y: _this.y + height + 5, + attrs: __assign13({ + x: textX, + y: textY, text: label17, fontFamily: _this.fontFamily || "Arial, sans-serif" - }, _this.tickLabelStyle) + }, _this.tickLabelStyle), + name: "tick-label" }); + if ((0, import_util565.isNumber)(rotate8) && index2 !== tickData.length - 1) { + var matrix = transform15([1, 0, 0, 0, 1, 0, 0, 0, 1], [["t", -textX, -textY], ["r", rotate8], ["t", textX - 5, textY + 2]]); + text.attr({ + textAlign: "left", + matrix + }); + } + if (index2 === 0) { + text.attr({ + textAlign: "left" + }); + } else if (index2 !== tickData.length - 1) { + text.attr({ + textAlign: "right" + }); + } var line2 = _this.group.addShape("line", { - attrs: __assign12({ + attrs: __assign13({ x1: _this.x + index2 * interval3, y1: _this.y + height + 2, x2: _this.x + index2 * interval3, y2: _this.y + height + 6 - }, _this.tickLineStyle) + }, _this.tickLineStyle), + name: "tick-line" }); line2.toBack(); var bbox = text.getBBox(); @@ -131977,7 +139498,7 @@ var TrendTimeBar = function() { } return text; }); - this.controllerBtnGroup = new controllerBtn_default(__assign12({ + this.controllerBtnGroup = new controllerBtn_default(__assign13({ group: this.group, x: this.x, y: this.y + height + 25, @@ -131991,15 +139512,15 @@ var TrendTimeBar = function() { }; TrendTimeBar2.prototype.bindEvents = function() { var _this = this; - var minHandleShapeGroup = this.group.find(function(group2) { - return group2.get("name") === "minHandlerShape"; + var minHandleShapeGroup = this.group.find(function(group3) { + return group3.get("name") === "minHandlerShape"; }); if (minHandleShapeGroup) { minHandleShapeGroup.on("minHandlerShape-handler:mousedown", this.onMouseDown(this.minHandlerShape)); minHandleShapeGroup.on("minHandlerShape-handler:touchstart", this.onMouseDown(this.minHandlerShape)); } - var maxHandleShapeGroup = this.group.find(function(group2) { - return group2.get("name") === "maxHandlerShape"; + var maxHandleShapeGroup = this.group.find(function(group3) { + return group3.get("name") === "maxHandlerShape"; }); if (maxHandleShapeGroup) { maxHandleShapeGroup.on("maxHandlerShape-handler:mousedown", this.onMouseDown(this.maxHandlerShape)); @@ -132007,17 +139528,17 @@ var TrendTimeBar = function() { } this.foregroundShape.on("mousedown", this.onMouseDown(this.foregroundShape)); this.foregroundShape.on("touchstart", this.onMouseDown(this.foregroundShape)); - this.group.on(PLAY_PAUSE_BTN + ":click", function() { + this.group.on("".concat(PLAY_PAUSE_BTN, ":click"), function() { _this.isPlay = !_this.isPlay; _this.currentHandler = _this.maxHandlerShape; _this.changePlayStatus(); }); - this.group.on(NEXT_STEP_BTN + ":click", function() { + this.group.on("".concat(NEXT_STEP_BTN, ":click"), function() { _this.currentHandler = _this.maxHandlerShape; _this.updateStartEnd(0.01); _this.updateUI(); }); - this.group.on(PRE_STEP_BTN + ":click", function() { + this.group.on("".concat(PRE_STEP_BTN, ":click"), function() { _this.currentHandler = _this.maxHandlerShape; _this.updateStartEnd(-0.01); _this.updateUI(); @@ -132048,19 +139569,19 @@ var TrendTimeBar = function() { TrendTimeBar2.prototype.adjustOffsetRange = function(offsetRange) { switch (this.currentHandler) { case this.minHandlerShape: { - var min7 = 0 - this.start; - var max8 = 1 - this.start; - return Math.min(max8, Math.max(min7, offsetRange)); + var min13 = 0 - this.start; + var max15 = 1 - this.start; + return Math.min(max15, Math.max(min13, offsetRange)); } case this.maxHandlerShape: { - var min7 = 0 - this.end; - var max8 = 1 - this.end; - return Math.min(max8, Math.max(min7, offsetRange)); + var min13 = 0 - this.end; + var max15 = 1 - this.end; + return Math.min(max15, Math.max(min13, offsetRange)); } case this.foregroundShape: { - var min7 = 0 - this.start; - var max8 = 1 - this.end; - return Math.min(max8, Math.max(min7, offsetRange)); + var min13 = 0 - this.start; + var max15 = 1 - this.end; + return Math.min(max15, Math.max(min13, offsetRange)); } default: return 0; @@ -132070,8 +139591,8 @@ var TrendTimeBar = function() { var minData = this.ticks[this.adjustTickIndex(this.start * this.width)]; var maxData = this.ticks[this.adjustTickIndex(this.end * this.width)]; if (!this.currentHandler) { - this.minText = this.tickLabelFormatter ? this.tickLabelFormatter(minData) : minData.date; - this.maxText = this.tickLabelFormatter ? this.tickLabelFormatter(maxData) : maxData.date; + this.minText = this.tickLabelFormatter ? this.tickLabelFormatter(minData) : minData === null || minData === void 0 ? void 0 : minData.date; + this.maxText = this.tickLabelFormatter ? this.tickLabelFormatter(maxData) : maxData === null || maxData === void 0 ? void 0 : maxData.date; return; } switch (this.currentHandler) { @@ -132103,19 +139624,19 @@ var TrendTimeBar = function() { if (this.end > 1) { this.end = 1; } - var min7 = this.x + this.start * this.width; - var max8 = this.x + this.end * this.width; - this.foregroundShape.attr("x", min7); - this.foregroundShape.attr("width", max8 - min7); - var handlerWidth = get_default(this.handlerStyle, "width", DEFAULT_HANDLER_WIDTH2); + var min13 = this.x + this.start * this.width; + var max15 = this.x + this.end * this.width; + this.foregroundShape.attr("x", min13); + this.foregroundShape.attr("width", max15 - min13); + var handlerWidth = (0, import_util565.get)(this.handlerStyle, "width", DEFAULT_HANDLER_WIDTH2); this.setText(this.minText, this.maxText); - var _a6 = this.dodgeText([min7, max8]), minAttrs = _a6[0], maxAttrs = _a6[1]; - this.minHandlerShape.setX(min7 - handlerWidth / 2); - each_default(minAttrs, function(v3, k4) { + var _a6 = this.dodgeText([min13, max15]), minAttrs = _a6[0], maxAttrs = _a6[1]; + this.minHandlerShape.setX(min13 - handlerWidth / 2); + (0, import_util565.each)(minAttrs, function(v3, k4) { return _this.minTextShape.attr(k4, v3); }); - this.maxHandlerShape.setX(max8 - handlerWidth / 2); - each_default(maxAttrs, function(v3, k4) { + this.maxHandlerShape.setX(max15 - handlerWidth / 2); + (0, import_util565.each)(maxAttrs, function(v3, k4) { return _this.maxTextShape.attr(k4, v3); }); if (this.currentMode === "range") { @@ -132131,13 +139652,13 @@ var TrendTimeBar = function() { TrendTimeBar2.prototype.dodgeText = function(range) { var _a6, _b; var TEXTPADDING = 2; - var handlerWidth = get_default(this.handlerStyle, "width", DEFAULT_HANDLER_WIDTH2); + var handlerWidth = (0, import_util565.get)(this.handlerStyle, "width", DEFAULT_HANDLER_WIDTH2); var minTextShape = this.minTextShape; var maxTextShape = this.maxTextShape; - var min7 = range[0], max8 = range[1]; + var min13 = range[0], max15 = range[1]; var sorted = false; - if (min7 > max8) { - _a6 = [max8, min7], min7 = _a6[0], max8 = _a6[1]; + if (min13 > max15) { + _a6 = [max15, min13], min13 = _a6[0], max15 = _a6[1]; _b = [maxTextShape, minTextShape], minTextShape = _b[0], maxTextShape = _b[1]; sorted = true; } @@ -132146,33 +139667,33 @@ var TrendTimeBar = function() { var minAttrs = null; var maxAttrs = null; if (this.timeBarType === "trend") { - minAttrs = min7 - minBBox.width < this.x + TEXTPADDING ? { - x: min7 + handlerWidth / 2 + TEXTPADDING, + minAttrs = min13 - minBBox.width < this.x + TEXTPADDING ? { + x: min13 + handlerWidth / 2 + TEXTPADDING, textAlign: "left" } : { - x: min7 - handlerWidth / 2 - TEXTPADDING, + x: min13 - handlerWidth / 2 - TEXTPADDING, textAlign: "right" }; - maxAttrs = max8 + maxBBox.width > this.x + this.width ? { - x: max8 - handlerWidth / 2 - TEXTPADDING, + maxAttrs = max15 + maxBBox.width > this.x + this.width ? { + x: max15 - handlerWidth / 2 - TEXTPADDING, textAlign: "right" } : { - x: max8 + handlerWidth / 2 + TEXTPADDING, + x: max15 + handlerWidth / 2 + TEXTPADDING, textAlign: "left" }; } else if (this.timeBarType === "simple") { - minAttrs = minBBox.width > min7 - TEXTPADDING ? { - x: min7 + handlerWidth / 2 + TEXTPADDING, + minAttrs = minTextShape.attr("x") > minBBox.width ? { + x: min13, textAlign: "center" } : { - x: min7 - handlerWidth / 2 - TEXTPADDING, - textAlign: "center" + x: min13, + textAlign: "left" }; - maxAttrs = maxBBox.width > this.width - max8 - TEXTPADDING ? { - x: max8 - handlerWidth / 2 - TEXTPADDING, - textAlign: "center" + maxAttrs = maxTextShape.attr("x") > this.width - maxBBox.width ? { + x: max15, + textAlign: "right" } : { - x: max8 + handlerWidth / 2 + TEXTPADDING, + x: max15, textAlign: "center" }; } @@ -132215,8 +139736,8 @@ var TrendTimeBar = function() { }; TrendTimeBar2.prototype.destory = function() { this.graph.off(VALUE_CHANGE); - var group2 = this.group; - var minHandleShapeGroup = group2.find(function(g4) { + var group3 = this.group; + var minHandleShapeGroup = group3.find(function(g4) { return g4.get("name") === "minHandlerShape"; }); if (minHandleShapeGroup) { @@ -132224,7 +139745,7 @@ var TrendTimeBar = function() { minHandleShapeGroup.off("minHandlerShape-handler:touchstart"); minHandleShapeGroup.destroy(); } - var maxHandleShapeGroup = group2.find(function(g4) { + var maxHandleShapeGroup = group3.find(function(g4) { return g4.get("name") === "maxHandlerShape"; }); if (maxHandleShapeGroup) { @@ -132235,11 +139756,11 @@ var TrendTimeBar = function() { this.foregroundShape.off("mousedown"); this.foregroundShape.off("touchstart"); this.foregroundShape.destroy(); - group2.off(PLAY_PAUSE_BTN + ":click"); - group2.off(NEXT_STEP_BTN + ":click"); - group2.off(PRE_STEP_BTN + ":click"); - group2.off(TIMEBAR_CONFIG_CHANGE); - group2.destroy(); + group3.off("".concat(PLAY_PAUSE_BTN, ":click")); + group3.off("".concat(NEXT_STEP_BTN, ":click")); + group3.off("".concat(PRE_STEP_BTN, ":click")); + group3.off(TIMEBAR_CONFIG_CHANGE); + group3.destroy(); if (this.trendComponent) { this.trendComponent.destory(); } @@ -132248,7 +139769,11 @@ var TrendTimeBar = function() { }(); var trendTimeBar_default = TrendTimeBar; +// node_modules/@antv/g6-plugin/es/timeBar/timeBarSlice.js +var import_util568 = __toModule(require_lib()); + // node_modules/@antv/g6-plugin/es/timeBar/timeBarTooltip.js +var import_util567 = __toModule(require_lib()); var TimeBarTooltip = function() { function TimeBarTooltip2(cfg) { var _a6 = cfg.x, x6 = _a6 === void 0 ? 0 : _a6, _b = cfg.y, y5 = _b === void 0 ? 0 : _b, container2 = cfg.container, text = cfg.text, _c = cfg.padding, padding3 = _c === void 0 ? [4, 4, 4, 4] : _c, _d = cfg.className, className = _d === void 0 ? "g6-component-timebar-tooltip" : _d, _e = cfg.backgroundColor, backgroundColor = _e === void 0 ? "#000" : _e, _f = cfg.textColor, textColor3 = _f === void 0 ? "#fff" : _f, _g = cfg.opacity, opacity = _g === void 0 ? 0.8 : _g, _h = cfg.fontSize, fontSize = _h === void 0 ? 12 : _h; @@ -132268,8 +139793,8 @@ var TimeBarTooltip = function() { var self2 = this; var className = self2.className, x6 = self2.x, y5 = self2.y, backgroundColor = self2.backgroundColor, textColor3 = self2.textColor, text = self2.text, padding3 = self2.padding, opacity = self2.opacity, fontSize = self2.fontSize; var parentNode = self2.container; - var container2 = createDom("
    '); - if (is_string_default(parentNode)) { + var container2 = createDom("
    ')); + if ((0, import_util567.isString)(parentNode)) { parentNode = document.getElementById(parentNode); } parentNode.appendChild(container2); @@ -132280,11 +139805,11 @@ var TimeBarTooltip = function() { top: 0, left: 0 }); - var background = createDom("\n
    "); + var background = createDom("\n
    ")); background.innerHTML = text; container2.appendChild(background); self2.backgroundDOM = background; - var arrow = createDom("
    "); + var arrow = createDom("
    ")); container2.appendChild(arrow); self2.arrowDOM = arrow; self2.container = container2; @@ -132298,26 +139823,26 @@ var TimeBarTooltip = function() { var arrowWidth = self2.arrowDOM.offsetWidth; var arrowHeight = self2.arrowDOM.offsetHeight; modifyCSS(self2.container, { - top: -backgroundHeight - arrowHeight + "px", - left: x6 + "px", + top: "".concat(-backgroundHeight - arrowHeight, "px"), + left: "".concat(x6, "px"), visibility: "visible" }); modifyCSS(self2.backgroundDOM, { - marginLeft: -backgroundWidth / 2 + "px" + marginLeft: "".concat(-backgroundWidth / 2, "px") }); modifyCSS(self2.arrowDOM, { - marginLeft: -arrowWidth / 2 + "px", - top: backgroundHeight + "px" + marginLeft: "".concat(-arrowWidth / 2, "px"), + top: "".concat(backgroundHeight, "px") }); var left2 = x6 - backgroundWidth / 2; var right2 = x6 + backgroundWidth / 2; if (left2 < 0) { modifyCSS(self2.backgroundDOM, { - marginLeft: -backgroundWidth / 2 - left2 + "px" + marginLeft: "".concat(-backgroundWidth / 2 - left2, "px") }); } else if (right2 > self2.parentWidth) { modifyCSS(self2.backgroundDOM, { - marginLeft: -backgroundWidth / 2 - right2 + self2.parentWidth + 12 + "px" + marginLeft: "".concat(-backgroundWidth / 2 - right2 + self2.parentWidth + 12, "px") }); } }; @@ -132333,8 +139858,8 @@ var TimeBarTooltip = function() { var timeBarTooltip_default = TimeBarTooltip; // node_modules/@antv/g6-plugin/es/timeBar/timeBarSlice.js -var __assign13 = function() { - __assign13 = Object.assign || function(t4) { +var __assign14 = function() { + __assign14 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) { @@ -132344,8 +139869,9 @@ var __assign13 = function() { } return t4; }; - return __assign13.apply(this, arguments); + return __assign14.apply(this, arguments); }; +var transform16 = ext_exports.transform; var DEFAULT_SELECTEDTICK_STYLE = { fill: "#5B8FF9" }; @@ -132356,10 +139882,10 @@ var TimeBarSlice = function() { function TimeBarSlice2(cfgs) { this.frameCount = 0; this.fontFamily = "Arial, sans-serif"; - var graph = cfgs.graph, canvas = cfgs.canvas, group2 = cfgs.group, width2 = cfgs.width, height = cfgs.height, padding3 = cfgs.padding, data3 = cfgs.data, start = cfgs.start, end2 = cfgs.end, _a6 = cfgs.x, x6 = _a6 === void 0 ? 0 : _a6, _b = cfgs.y, y5 = _b === void 0 ? 0 : _b, tickLabelFormatter = cfgs.tickLabelFormatter, _c = cfgs.selectedTickStyle, selectedTickStyle = _c === void 0 ? DEFAULT_SELECTEDTICK_STYLE : _c, _d = cfgs.unselectedTickStyle, unselectedTickStyle = _d === void 0 ? DEFAULT_UNSELECTEDTICK_STYLE : _d, tooltipBackgroundColor = cfgs.tooltipBackgroundColor, tooltipFomatter = cfgs.tooltipFomatter; + var graph = cfgs.graph, canvas = cfgs.canvas, group3 = cfgs.group, width2 = cfgs.width, height = cfgs.height, padding3 = cfgs.padding, data3 = cfgs.data, start = cfgs.start, end2 = cfgs.end, _a6 = cfgs.x, x6 = _a6 === void 0 ? 0 : _a6, _b = cfgs.y, y5 = _b === void 0 ? 0 : _b, tickLabelFormatter = cfgs.tickLabelFormatter, _c = cfgs.selectedTickStyle, selectedTickStyle = _c === void 0 ? DEFAULT_SELECTEDTICK_STYLE : _c, _d = cfgs.unselectedTickStyle, unselectedTickStyle = _d === void 0 ? DEFAULT_UNSELECTEDTICK_STYLE : _d, tooltipBackgroundColor = cfgs.tooltipBackgroundColor, tooltipFomatter = cfgs.tooltipFomatter, tickLabelStyle = cfgs.tickLabelStyle; this.graph = graph; - this.group = group2; - this.sliceGroup = group2.addGroup({ + this.group = group3; + this.sliceGroup = group3.addGroup({ name: "slice-group" }); this.canvas = canvas; @@ -132370,6 +139896,7 @@ var TimeBarSlice = function() { this.start = start; this.end = end2; this.tickLabelFormatter = tickLabelFormatter; + this.tickLabelStyle = tickLabelStyle || {}; this.selectedTickStyle = selectedTickStyle; this.unselectedTickStyle = unselectedTickStyle; this.x = x6; @@ -132382,7 +139909,7 @@ var TimeBarSlice = function() { } TimeBarSlice2.prototype.renderSlices = function() { var _this = this; - var _a6 = this, width2 = _a6.width, height = _a6.height, padding3 = _a6.padding, data3 = _a6.data, start = _a6.start, end2 = _a6.end, tickLabelFormatter = _a6.tickLabelFormatter, selectedTickStyle = _a6.selectedTickStyle, unselectedTickStyle = _a6.unselectedTickStyle; + var _a6 = this, width2 = _a6.width, height = _a6.height, padding3 = _a6.padding, data3 = _a6.data, start = _a6.start, end2 = _a6.end, tickLabelFormatter = _a6.tickLabelFormatter, selectedTickStyle = _a6.selectedTickStyle, unselectedTickStyle = _a6.unselectedTickStyle, tickLabelStyle = _a6.tickLabelStyle; var realWidth = width2 - 2 * padding3; var fontSize = 10; var labelLineHeight = 4; @@ -132399,18 +139926,20 @@ var TimeBarSlice = function() { var endTickId = Math.round(ticksLength * end2); this.startTickRectId = startTickId; this.endTickRectId = endTickId; + var rotate8 = tickLabelStyle.rotate; + delete tickLabelStyle.rotate; data3.forEach(function(d3, i4) { var selected = i4 >= startTickId && i4 <= endTickId; var tickStyle = selected ? selectedTickStyle : unselectedTickStyle; var rect3 = sliceGroup.addShape("rect", { - attrs: __assign13({ + attrs: __assign14({ x: padding3 + i4 * (tickWidth + gap), y: padding3, width: tickWidth, height: ticksAreaHeight }, tickStyle), draggable: true, - name: "tick-rect-" + i4 + name: "tick-rect-".concat(i4) }); var pickRect = sliceGroup.addShape("rect", { attrs: { @@ -132422,7 +139951,7 @@ var TimeBarSlice = function() { opacity: 0 }, draggable: true, - name: "pick-rect-" + i4 + name: "pick-rect-".concat(i4) }); pickRect.toFront(); var rectBBox = rect3.getBBox(); @@ -132437,7 +139966,7 @@ var TimeBarSlice = function() { var label17; if (tickLabelFormatter) { label17 = tickLabelFormatter(d3); - if (!is_string_default(label17) && label17) { + if (!(0, import_util568.isString)(label17) && label17) { label17 = d3.date; } } else if (i4 % Math.round(ticksLength / 10) === 0) { @@ -132453,11 +139982,12 @@ var TimeBarSlice = function() { y1: lineStartY, x2: centerX, y2: lineStartY + labelLineHeight - } + }, + name: "tick-line" }); var labelStartY = lineStartY + labelLineHeight + padding3; var text = sliceGroup.addShape("text", { - attrs: { + attrs: __assign14({ fill: "#8c8c8c", stroke: "#fff", lineWidth: 1, @@ -132468,8 +139998,9 @@ var TimeBarSlice = function() { textBaseline: "top", fontSize: 10, fontFamily: _this.fontFamily || "Arial, sans-serif" - }, - capture: false + }, tickLabelStyle), + capture: false, + name: "tick-label" }); var textBBox = text.getBBox(); if (textBBox.maxX > width2) { @@ -132477,13 +140008,29 @@ var TimeBarSlice = function() { } else if (textBBox.minX < 0) { text.attr("textAlign", "left"); } + if ((0, import_util568.isNumber)(rotate8) && labels.length !== 10) { + var matrix = transform16([1, 0, 0, 0, 1, 0, 0, 0, 1], [["t", -centerX, -labelStartY], ["r", rotate8], ["t", centerX - 5, labelStartY + 2]]); + text.attr({ + textAlign: "left", + matrix + }); + } + if (labels.length === 1) { + text.attr({ + textAlign: "left" + }); + } else if (labels.length === 10) { + text.attr({ + textAlign: "right" + }); + } } }); this.tickRects = tickRects; - var group2 = this.group; + var group3 = this.group; this.currentSpeed = 1; this.controllerBtnGroup = new controllerBtn_default({ - group: group2, + group: group3, x: this.x, y: this.y + height + 5, width: width2, @@ -132605,18 +140152,18 @@ var TimeBarSlice = function() { tooltip10.hide(); }); }); - var group2 = this.group; - group2.on(PLAY_PAUSE_BTN + ":click", function() { + var group3 = this.group; + group3.on("".concat(PLAY_PAUSE_BTN, ":click"), function() { _this.isPlay = !_this.isPlay; _this.changePlayStatus(); }); - group2.on(NEXT_STEP_BTN + ":click", function() { + group3.on("".concat(NEXT_STEP_BTN, ":click"), function() { _this.updateStartEnd(1); }); - group2.on(PRE_STEP_BTN + ":click", function() { + group3.on("".concat(PRE_STEP_BTN, ":click"), function() { _this.updateStartEnd(-1); }); - group2.on(TIMEBAR_CONFIG_CHANGE, function(_a7) { + group3.on(TIMEBAR_CONFIG_CHANGE, function(_a7) { var type2 = _a7.type, speed = _a7.speed; _this.currentSpeed = speed; }); @@ -132689,21 +140236,21 @@ var TimeBarSlice = function() { }; TimeBarSlice2.prototype.destory = function() { this.graph.off(VALUE_CHANGE); - var group2 = this.sliceGroup; - group2.off("click"); - group2.off("dragstart"); - group2.off("dragover"); - group2.off("drop"); + var group3 = this.sliceGroup; + group3.off("click"); + group3.off("dragstart"); + group3.off("dragover"); + group3.off("drop"); this.tickRects.forEach(function(tickRect) { var pickRect = tickRect.pickRect; pickRect.off("mouseenter"); pickRect.off("mouseleave"); }); this.tickRects.length = 0; - group2.off(PLAY_PAUSE_BTN + ":click"); - group2.off(NEXT_STEP_BTN + ":click"); - group2.off(PRE_STEP_BTN + ":click"); - group2.off(TIMEBAR_CONFIG_CHANGE); + group3.off("".concat(PLAY_PAUSE_BTN, ":click")); + group3.off("".concat(NEXT_STEP_BTN, ":click")); + group3.off("".concat(PRE_STEP_BTN, ":click")); + group3.off(TIMEBAR_CONFIG_CHANGE); this.sliceGroup.destroy(); }; return TimeBarSlice2; @@ -132711,6 +140258,7 @@ var TimeBarSlice = function() { var timeBarSlice_default = TimeBarSlice; // node_modules/@antv/g6-plugin/es/timeBar/index.js +var import_util569 = __toModule(require_lib()); var __extends12 = function() { var _extendStatics = function extendStatics(d3, b10) { _extendStatics = Object.setPrototypeOf || { @@ -132735,8 +140283,8 @@ var __extends12 = function() { d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); }; }(); -var __assign14 = function() { - __assign14 = Object.assign || function(t4) { +var __assign15 = function() { + __assign15 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) { @@ -132746,9 +140294,9 @@ var __assign14 = function() { } return t4; }; - return __assign14.apply(this, arguments); + return __assign15.apply(this, arguments); }; -var __rest40 = function(s4, e4) { +var __rest41 = function(s4, e4) { var t4 = {}; for (var p4 in s4) { if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) @@ -132765,8 +140313,8 @@ var DEFAULT_SIMPLE_HEIGHT = 4; var DEFAULT_TREND_HEIGHT = 26; var TimeBar = function(_super) { __extends12(TimeBar3, _super); - function TimeBar3() { - return _super !== null && _super.apply(this, arguments) || this; + function TimeBar3(config) { + return _super.call(this, config) || this; } TimeBar3.prototype.getDefaultCfgs = function() { return { @@ -132795,7 +140343,9 @@ var TimeBar = function(_super) { data: [] }, textStyle: {}, - filterEdge: false + filterEdge: false, + filterItemTypes: ["node"], + containerCSS: {} }; }; TimeBar3.prototype.initContainer = function() { @@ -132806,12 +140356,12 @@ var TimeBar = function(_super) { var graphContainer = this.get("graph").get("container"); var timeBarContainer; if (!container2) { - timeBarContainer = createDom("
    "); + timeBarContainer = createDom("
    ")); modifyCSS(timeBarContainer, { position: "relative" }); } else { - if (is_string_default(container2)) { + if ((0, import_util569.isString)(container2)) { container2 = document.getElementById(container2); } timeBarContainer = container2; @@ -132833,6 +140383,8 @@ var TimeBar = function(_super) { height }); } + if (this.get("containerCSS")) + modifyCSS(timeBarContainer, this.get("containerCSS")); this.set("canvas", canvas); }; TimeBar3.prototype.init = function() { @@ -132848,19 +140400,21 @@ var TimeBar = function(_super) { this.set("fontFamily", fontFamily); }; TimeBar3.prototype.renderTrend = function() { + var _this = this; var _a6 = this._cfgs, width2 = _a6.width, x6 = _a6.x, y5 = _a6.y, padding3 = _a6.padding, type2 = _a6.type, trend = _a6.trend, slider3 = _a6.slider, controllerCfg = _a6.controllerCfg, textStyle2 = _a6.textStyle, tick = _a6.tick, backgroundStyle = _a6.backgroundStyle, foregroundStyle = _a6.foregroundStyle; - var data3 = trend.data, other2 = __rest40(trend, ["data"]); + var data3 = trend.data, other2 = __rest41(trend, ["data"]); var realWidth = width2 - 2 * padding3; var defaultHeight = type2 === "trend" ? DEFAULT_TREND_HEIGHT : DEFAULT_SIMPLE_HEIGHT; var graph = this.get("graph"); - var group2 = this.get("timeBarGroup"); + var group3 = this.get("timeBarGroup"); var canvas = this.get("canvas"); var timebar = null; if (type2 === "trend" || type2 === "simple") { - timebar = new trendTimeBar_default(__assign14(__assign14({ + var getValue_1 = this.get("getValue"); + timebar = new trendTimeBar_default(__assign15(__assign15({ graph, canvas, - group: group2, + group: group3, type: type2, x: x6 + padding3, y: type2 === "trend" ? y5 + padding3 : y5 + padding3 + 15, @@ -132869,9 +140423,9 @@ var TimeBar = function(_super) { padding: padding3, backgroundStyle, foregroundStyle, - trendCfg: __assign14(__assign14({}, other2), { + trendCfg: __assign15(__assign15({}, other2), { data: data3.map(function(d3) { - return d3.value; + return (getValue_1 === null || getValue_1 === void 0 ? void 0 : getValue_1(d3)) || d3.value; }) }) }, slider3), { @@ -132881,21 +140435,39 @@ var TimeBar = function(_super) { tickLabelStyle: tick.tickLabelStyle, tickLineStyle: tick.tickLineStyle }, - handlerStyle: __assign14(__assign14({}, slider3.handlerStyle), { + handlerStyle: __assign15(__assign15({}, slider3.handlerStyle), { height: slider3.height || defaultHeight }), controllerCfg, textStyle: textStyle2 })); } else if (type2 === "tick") { - timebar = new timeBarSlice_default(__assign14({ + timebar = new timeBarSlice_default(__assign15({ graph, canvas, - group: group2, + group: group3, x: x6 + padding3, - y: y5 + padding3 + y: y5 + padding3, + width: width2, + height: 42, + padding: 2 }, tick)); } + var handleMouseUp = function handleMouseUp2() { + var timebarInstance = _this.get("timebar"); + timebarInstance.draggingHandler = false; + if (timebarInstance.isPlay) { + timebarInstance.isPlay = false; + timebarInstance.currentHandler = timebarInstance.maxHandlerShape; + timebarInstance.changePlayStatus(); + } + document.removeEventListener("mouseup", handleMouseUp2); + }; + canvas.on("mousedown", function(e4) { + if (e4.target.get("name") === "maxHandlerShape-handler" || e4.target.get("name") === "minHandlerShape-handler" || e4.target === timebar.foregroundShape) { + document.addEventListener("mouseup", handleMouseUp); + } + }); this.set("timebar", timebar); }; TimeBar3.prototype.filterData = function(evt) { @@ -132914,13 +140486,13 @@ var TimeBar = function(_super) { } var rangeChange = this.get("rangeChange"); var graph = this.get("graph"); - var min7 = Math.round(trendData.length * value2[0]); - var max8 = Math.round(trendData.length * value2[1]); - max8 = max8 >= trendData.length ? trendData.length - 1 : max8; - min7 = min7 >= trendData.length ? trendData.length - 1 : min7; + var min13 = Math.round(trendData.length * value2[0]); + var max15 = Math.round(trendData.length * value2[1]); + max15 = max15 >= trendData.length ? trendData.length - 1 : max15; + min13 = min13 >= trendData.length ? trendData.length - 1 : min13; var tickLabelFormatter = (_a6 = this._cfgs.tick) === null || _a6 === void 0 ? void 0 : _a6.tickLabelFormatter; - var minText = tickLabelFormatter ? tickLabelFormatter(trendData[min7]) : trendData[min7].date; - var maxText = tickLabelFormatter ? tickLabelFormatter(trendData[max8]) : trendData[max8].date; + var minText = tickLabelFormatter ? tickLabelFormatter(trendData[min13]) : trendData[min13].date; + var maxText = tickLabelFormatter ? tickLabelFormatter(trendData[max15]) : trendData[max15].date; if (type2 !== "tick") { var timebar = this.get("timebar"); timebar.setText(minText, maxText); @@ -132931,27 +140503,81 @@ var TimeBar = function(_super) { if (!this.cacheGraphData || this.cacheGraphData.nodes && this.cacheGraphData.nodes.length === 0) { this.cacheGraphData = graph.get("data"); } - var filterData = this.cacheGraphData.nodes.filter(function(d3) { - return d3.date >= trendData[min7].date && d3.date <= trendData[max8].date; - }); - var nodeIds_1 = filterData.map(function(node) { - return node.id; - }); - var fileterEdges = []; - if (this.cacheGraphData.edges) { - fileterEdges = this.cacheGraphData.edges.filter(function(edge2) { - return nodeIds_1.includes(edge2.source) && nodeIds_1.includes(edge2.target); + var filterItemTypes = this.get("filterItemTypes"); + var changeData = this.get("changeData"); + var getDate_1 = this.get("getDate"); + var shouldIgnore_1 = this.get("shouldIgnore"); + var minDate_1 = trendData[min13].date, maxDate_1 = trendData[max15].date; + if (changeData || changeData === void 0) { + var filterNodes = this.cacheGraphData.nodes; + var filterEdges = this.cacheGraphData.edges; + if (filterItemTypes.includes("node")) { + filterNodes = filterNodes.filter(function(node) { + var date = +((getDate_1 === null || getDate_1 === void 0 ? void 0 : getDate_1(node)) || node.date); + return date >= minDate_1 && date <= maxDate_1 || (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1("node", node, { + min: minDate_1, + max: maxDate_1 + })); + }); + var nodeIds_1 = filterNodes.map(function(node) { + return node.id; + }); + if (filterEdges) { + filterEdges = filterEdges.filter(function(edge2) { + return nodeIds_1.includes(edge2.source) && nodeIds_1.includes(edge2.target) || (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1("edge", edge2, { + min: minDate_1, + max: maxDate_1 + })); + }); + } + } + if (this.get("filterEdge") || filterItemTypes.includes("edge")) { + filterEdges = filterEdges.filter(function(edge2) { + var date = +((getDate_1 === null || getDate_1 === void 0 ? void 0 : getDate_1(edge2)) || edge2.date); + return date >= minDate_1 && date <= maxDate_1 || (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1("edge", edge2, { + min: minDate_1, + max: maxDate_1 + })); + }); + } + graph.changeData({ + nodes: filterNodes, + edges: filterEdges }); - if (this.get("filterEdge")) { - fileterEdges = fileterEdges.filter(function(edge2) { - return edge2.date >= trendData[min7].date && edge2.date <= trendData[max8].date; + } else { + if (filterItemTypes.includes("node")) { + graph.getNodes().forEach(function(node) { + var model = node.getModel(); + if (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1("node", model, { + min: minDate_1, + max: maxDate_1 + })) + return; + var date = +((getDate_1 === null || getDate_1 === void 0 ? void 0 : getDate_1(model)) || model.date); + if (date < minDate_1 || date > maxDate_1) { + graph.hideItem(node); + } else { + graph.showItem(node); + } + }); + } + if (this.get("filterEdge") || filterItemTypes.includes("edge")) { + graph.getEdges().forEach(function(edge2) { + var model = edge2.getModel(); + if (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1("edge", model, { + min: trendData[min13].date, + max: trendData[max15].date + })) + return; + var date = +((getDate_1 === null || getDate_1 === void 0 ? void 0 : getDate_1(model)) || model.date); + if (date < trendData[min13].date || date > trendData[max15].date) { + graph.hideItem(edge2); + } else { + graph.showItem(edge2); + } }); } } - graph.changeData({ - nodes: filterData, - edges: fileterEdges - }); } }; TimeBar3.prototype.initEvent = function() { @@ -132972,7 +140598,7 @@ var TimeBar = function(_super) { value: [start, end2] }); }); - graph.on(VALUE_CHANGE, throttle_default(function(e4) { + graph.on(VALUE_CHANGE, (0, import_util569.throttle)(function(e4) { _this.filterData(e4); }, 200, { trailing: true, @@ -132991,7 +140617,7 @@ var TimeBar = function(_super) { if (!container2) { container2 = this.get("graph").get("container"); } - if (is_string_default(container2)) { + if ((0, import_util569.isString)(container2)) { container2 = document.getElementById(container2); } container2.removeChild(timeBarContainer); @@ -133002,6 +140628,7 @@ var TimeBar = function(_super) { var timeBar_default = TimeBar; // node_modules/@antv/g6-plugin/es/imageMinimap/index.js +var import_util570 = __toModule(require_lib()); var __extends13 = function() { var _extendStatics = function extendStatics(d3, b10) { _extendStatics = Object.setPrototypeOf || { @@ -133044,8 +140671,8 @@ function getImgNaturalDimension(img, callback) { } var ImageMiniMap = function(_super) { __extends13(ImageMiniMap2, _super); - function ImageMiniMap2() { - return _super !== null && _super.apply(this, arguments) || this; + function ImageMiniMap2(config) { + return _super.call(this, config) || this; } ImageMiniMap2.prototype.getDefaultCfgs = function() { return { @@ -133085,10 +140712,10 @@ var ImageMiniMap = function(_super) { if (this.destroyed) return; var containerDOM = this.get("container"); - if (is_string_default(containerDOM)) { + if ((0, import_util570.isString)(containerDOM)) { containerDOM = document.getElementById(containerDOM); } - var viewport = createDom("
    \n
    "); + var viewport = createDom("
    \n
    ")); var x6 = 0; var y5 = 0; var dragging = false; @@ -133118,7 +140745,7 @@ var ImageMiniMap = function(_super) { y5 = e4.clientY; }, false); containerDOM.addEventListener("mousemove", function(e4) { - if (!dragging || is_nil_default(e4.clientX) || is_nil_default(e4.clientY)) { + if (!dragging || (0, import_util570.isNil)(e4.clientX) || (0, import_util570.isNil)(e4.clientY)) { return; } var cWidth = _this.get("width"); @@ -133143,8 +140770,8 @@ var ImageMiniMap = function(_super) { left2 -= dx; top -= dy; modifyCSS(viewport, { - left: left2 + "px", - top: top + "px" + left: "".concat(left2, "px"), + top: "".concat(top, "px") }); graph.translate(dx * zoom2 / ratio, dy * zoom2 / ratio); x6 = e4.clientX; @@ -133227,13 +140854,13 @@ var ImageMiniMap = function(_super) { height = height - (bottom - cHeight); } this.set("ratio", ratio); - var correctLeft = left2 + "px"; - var correctTop = top + "px"; + var correctLeft = "".concat(left2, "px"); + var correctTop = "".concat(top, "px"); modifyCSS(viewport, { left: correctLeft, top: correctTop, - width: width2 + "px", - height: height + "px" + width: "".concat(width2, "px"), + height: "".concat(height, "px") }); }; ImageMiniMap2.prototype.init = function() { @@ -133259,8 +140886,8 @@ var ImageMiniMap = function(_super) { cWidth = 1 / aspectRatio * cHeight; self2.set("width", cWidth); } - var container2 = createDom("
    "); - if (is_string_default(parentNode)) { + var container2 = createDom("
    ")); + if ((0, import_util570.isString)(parentNode)) { parentNode = document.getElementById(parentNode); } if (parentNode) { @@ -133275,7 +140902,7 @@ var ImageMiniMap = function(_super) { containerDOM.appendChild(span); self2.set("containerDOM", containerDOM); self2.set("containerSpan", span); - var img = createDom(''); + var img = createDom('')); self2.set("imgDOM", img); self2.updateImgSize(); span.appendChild(img); @@ -133326,7 +140953,7 @@ var ImageMiniMap = function(_super) { var oriImgDOM = self2.get("imgDOM"); oriImgDOM.remove(); self2.set("graphImg", img); - var imgDOM = createDom(''); + var imgDOM = createDom('')); self2.set("imgDOM", imgDOM); imgDOM.src = img; self2.updateImgSize(); @@ -133343,6 +140970,7 @@ var ImageMiniMap = function(_super) { var imageMinimap_default = ImageMiniMap; // node_modules/@antv/g6-plugin/es/edgeFilterLens/index.js +var import_util571 = __toModule(require_lib()); var __extends14 = function() { var _extendStatics = function extendStatics(d3, b10) { _extendStatics = Object.setPrototypeOf || { @@ -133367,8 +140995,8 @@ var __extends14 = function() { d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); }; }(); -var __assign15 = function() { - __assign15 = Object.assign || function(t4) { +var __assign16 = function() { + __assign16 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) { @@ -133378,7 +141006,7 @@ var __assign15 = function() { } return t4; }; - return __assign15.apply(this, arguments); + return __assign16.apply(this, arguments); }; var distance12 = util_default.distance; var DELTA3 = 0.05; @@ -133391,15 +141019,15 @@ var lensDelegateStyle2 = { }; var EdgeFilterLens = function(_super) { __extends14(EdgeFilterLens3, _super); - function EdgeFilterLens3() { - return _super !== null && _super.apply(this, arguments) || this; + function EdgeFilterLens3(config) { + return _super.call(this, config) || this; } EdgeFilterLens3.prototype.getDefaultCfgs = function() { return { type: "both", trigger: "mousemove", r: 60, - delegateStyle: clone_default(lensDelegateStyle2), + delegateStyle: (0, import_util571.clone)(lensDelegateStyle2), showLabel: "edge", scaleRBy: "wheel" }; @@ -133536,12 +141164,12 @@ var EdgeFilterLens = function(_super) { }); var showNodeLabel = self2.get("showNodeLabel"); var showEdgeLabel = self2.get("showEdgelabel"); - var group2 = graph.get("group"); + var group3 = graph.get("group"); hitEdges.forEach(function(edge2) { var shapes = edge2.get("group").get("children"); shapes.forEach(function(shape) { var shapeType = shape.get("type"); - var vShape = group2.addShape(shapeType, { + var vShape = group3.addShape(shapeType, { attrs: shape.attr() }); vShapes.push(vShape); @@ -133553,7 +141181,7 @@ var EdgeFilterLens = function(_super) { Object.keys(hitNodesMap).forEach(function(key) { var node = hitNodesMap[key]; var clonedGroup = node.get("group").clone(); - group2.add(clonedGroup); + group3.add(clonedGroup); vShapes.push(clonedGroup); if (showEdgeLabel) { var shapes = clonedGroup.get("children"); @@ -133610,7 +141238,7 @@ var EdgeFilterLens = function(_super) { var parent_1 = graph.get("group"); var attrs = self2.get("delegateStyle") || lensDelegateStyle2; lensDelegate = parent_1.addShape("circle", { - attrs: __assign15({ + attrs: __assign16({ r: r4, x: mCenter.x, y: mCenter.y @@ -133658,6 +141286,1108 @@ var EdgeFilterLens = function(_super) { }(base_default18); var edgeFilterLens_default = EdgeFilterLens; +// node_modules/@antv/g6-plugin/es/snapline/index.js +var import_util572 = __toModule(require_lib()); +var __extends15 = function() { + var _extendStatics = function extendStatics(d3, b10) { + _extendStatics = Object.setPrototypeOf || { + __proto__: [] + } instanceof Array && function(d4, b11) { + d4.__proto__ = b11; + } || function(d4, b11) { + for (var p4 in b11) { + if (Object.prototype.hasOwnProperty.call(b11, p4)) + d4[p4] = b11[p4]; + } + }; + return _extendStatics(d3, b10); + }; + return function(d3, b10) { + if (typeof b10 !== "function" && b10 !== null) + throw new TypeError("Class extends value " + String(b10) + " is not a constructor or null"); + _extendStatics(d3, b10); + function __() { + this.constructor = d3; + } + d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); + }; +}(); +var pointLineDistance3 = util_default.pointLineDistance; +var alignLineStyle = { + stroke: "#FA8C16", + lineWidth: 1 +}; +var SnapLine = function(_super) { + __extends15(SnapLine3, _super); + function SnapLine3(props) { + return _super.call(this, props) || this; + } + SnapLine3.prototype.getDefaultCfgs = function() { + return { + line: alignLineStyle, + itemAlignType: "center", + tolerance: 5, + horizontalLines: {}, + verticalLines: {}, + alignLines: [] + }; + }; + SnapLine3.prototype.init = function() { + }; + SnapLine3.prototype.getEvents = function() { + return { + "node:dragstart": "onDragStart", + "node:drag": "onDrag", + "node:dragend": "onDragEnd" + }; + }; + SnapLine3.prototype.onDragStart = function() { + this.initBoxLine(); + }; + SnapLine3.prototype.onDrag = function(e4) { + var item = e4.item; + var delegateShape = item.get("delegateShape") || item; + var bbox = delegateShape.getBBox(); + var model = item.getModel(); + var dx = model.x - bbox.x; + var dy = model.y - bbox.y; + this.show({ + x: bbox.minX + dx, + y: bbox.minY + dy + }, { + width: bbox.width, + height: bbox.height + }); + }; + SnapLine3.prototype.onDragEnd = function() { + this.destory(); + }; + SnapLine3.prototype.initBoxLine = function() { + var _a6 = this._cfgs, horizontalLines = _a6.horizontalLines, verticalLines = _a6.verticalLines, itemAlignType = _a6.itemAlignType; + var graph = this.get("graph"); + var nodes = graph.getNodes(); + nodes.forEach(function(item) { + var bbox = item.getBBox(); + var nodeId = item.get("id"); + if (itemAlignType === true || itemAlignType === "horizontal") { + horizontalLines["".concat(nodeId, "tltr")] = [bbox.minX, bbox.minY, bbox.maxX, bbox.minY, item]; + horizontalLines["".concat(nodeId, "lcrc")] = [bbox.minX, bbox.centerY, bbox.maxX, bbox.centerY, item]; + horizontalLines["".concat(nodeId, "blbr")] = [bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY, item]; + } else if (itemAlignType === "center") { + horizontalLines["".concat(nodeId, "lcrc")] = [bbox.minX, bbox.centerY, bbox.maxX, bbox.centerY, item]; + } + if (itemAlignType === true || itemAlignType === "vertical") { + verticalLines["".concat(nodeId, "tlbl")] = [bbox.minX, bbox.minY, bbox.minX, bbox.maxY, item]; + verticalLines["".concat(nodeId, "tcbc")] = [bbox.centerX, bbox.minY, bbox.centerX, bbox.maxY, item]; + verticalLines["".concat(nodeId, "trbr")] = [bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY, item]; + } else if (itemAlignType === "center") { + verticalLines["".concat(nodeId, "tcbc")] = [bbox.centerX, bbox.minY, bbox.centerX, bbox.maxY, item]; + } + }); + }; + SnapLine3.prototype.show = function(point2, bbox) { + var originPoint = (0, import_util572.mix)({}, point2); + this.itemAlign(point2, bbox, originPoint); + return point2; + }; + SnapLine3.prototype.itemAlign = function(point2, bbox, originPoint) { + var _this = this; + var _a6 = this._cfgs, horizontalLines = _a6.horizontalLines, verticalLines = _a6.verticalLines, tolerance3 = _a6.tolerance; + var tc = { + x: originPoint.x + bbox.width / 2, + y: originPoint.y + }; + var cc = { + x: originPoint.x + bbox.width / 2, + y: originPoint.y + bbox.height / 2 + }; + var bc = { + x: originPoint.x + bbox.width / 2, + y: originPoint.y + bbox.height + }; + var lc = { + x: originPoint.x, + y: originPoint.y + bbox.height / 2 + }; + var rc = { + x: originPoint.x + bbox.width, + y: originPoint.y + bbox.height / 2 + }; + var horizontalDis = []; + var verticalDis = []; + var alignCfg = null; + this.clearAlignLine(); + (0, import_util572.each)(horizontalLines, function(line2) { + if (line2[4].isVisible) { + horizontalDis.push(_this.getLineDisObject(line2, tc)); + horizontalDis.push(_this.getLineDisObject(line2, cc)); + horizontalDis.push(_this.getLineDisObject(line2, bc)); + } + }); + (0, import_util572.each)(verticalLines, function(line2) { + if (line2[4].isVisible) { + verticalDis.push(_this.getLineDisObject(line2, lc)); + verticalDis.push(_this.getLineDisObject(line2, cc)); + verticalDis.push(_this.getLineDisObject(line2, rc)); + } + }); + horizontalDis.sort(function(a4, b10) { + return a4.dis - b10.dis; + }); + verticalDis.sort(function(a4, b10) { + return a4.dis - b10.dis; + }); + if (horizontalDis.length !== 0 && horizontalDis[0].dis < tolerance3) { + point2.y = horizontalDis[0].line[1] - horizontalDis[0].point.y + originPoint.y; + alignCfg = { + type: "item", + horizontals: [horizontalDis[0]] + }; + for (var i4 = 1; i4 < 3; i4++) { + if (horizontalDis[0].dis === horizontalDis[i4].dis) { + alignCfg.horizontals.push(horizontalDis[i4]); + } + } + } + if (verticalDis.length !== 0 && verticalDis[0].dis < tolerance3) { + point2.x = verticalDis[0].line[0] - verticalDis[0].point.x + originPoint.x; + if (!alignCfg) { + alignCfg = { + type: "item", + verticals: [verticalDis[0]] + }; + } else { + alignCfg.verticals = [verticalDis[0]]; + } + for (var i4 = 1; i4 < 3; i4++) { + if (verticalDis[0].dis === verticalDis[i4].dis) { + alignCfg.verticals.push(verticalDis[i4]); + } + } + } + if (alignCfg) { + alignCfg.bbox = bbox; + this.addAlignLine(alignCfg); + } + }; + SnapLine3.prototype.addAlignLine = function(cfg) { + var bbox = cfg.bbox, type2 = cfg.type, horizontals = cfg.horizontals, verticals = cfg.verticals; + var _a6 = this._cfgs, lineStyle = _a6.line, alignLines = _a6.alignLines; + var graph = this.get("graph"); + var group3 = graph.get("group"); + if (type2 === "item") { + if (horizontals) { + (0, import_util572.each)(horizontals, function(horizontal) { + var refLine = horizontal.line, refPoint = horizontal.point; + var lineCenterX = (refLine[0] + refLine[2]) / 2; + var x1; + var x22; + if (refPoint.x < lineCenterX) { + x1 = refPoint.x - bbox.width / 2; + x22 = Math.max(refLine[0], refLine[2]); + } else { + x1 = refPoint.x + bbox.width / 2; + x22 = Math.min(refLine[0], refLine[2]); + } + var lineAttrs = (0, import_util572.mix)({ + x1, + y1: refLine[1], + x2: x22, + y2: refLine[1] + }, lineStyle); + var line2 = group3.addShape("line", { + attrs: lineAttrs, + capture: false + }); + alignLines.push(line2); + }); + } + if (verticals) { + (0, import_util572.each)(verticals, function(vertical2) { + var refLine = vertical2.line, refPoint = vertical2.point; + var lineCenterY = (refLine[1] + refLine[3]) / 2; + var y1; + var y22; + if (refPoint.y < lineCenterY) { + y1 = refPoint.y - bbox.height / 2; + y22 = Math.max(refLine[1], refLine[3]); + } else { + y1 = refPoint.y + bbox.height / 2; + y22 = Math.min(refLine[1], refLine[3]); + } + var lineAtts = (0, import_util572.mix)({ + x1: refLine[0], + y1, + x2: refLine[0], + y2: y22 + }, lineStyle); + var line2 = group3.addShape("line", { + attrs: lineAtts, + capture: false + }); + alignLines.push(line2); + }); + } + } + }; + SnapLine3.prototype.getLineDisObject = function(line2, point2) { + return { + line: line2, + point: point2, + dis: pointLineDistance3(line2, point2) + }; + }; + SnapLine3.prototype.getContainer = function() { + return this.get("container"); + }; + SnapLine3.prototype.clearAlignLine = function() { + var alignLines = this._cfgs.alignLines; + (0, import_util572.each)(alignLines, function(line2) { + line2.remove(); + }); + alignLines.length = 0; + }; + SnapLine3.prototype.destory = function() { + var _a6 = this._cfgs, horizontalLines = _a6.horizontalLines, verticalLines = _a6.verticalLines; + var graph = this.get("graph"); + var nodes = graph.getNodes(); + nodes.forEach(function(node) { + var itemId = node.get("id"); + delete horizontalLines["".concat(itemId, "tltr")]; + delete horizontalLines["".concat(itemId, "lcrc")]; + delete horizontalLines["".concat(itemId, "blbr")]; + delete verticalLines["".concat(itemId, "tlbl")]; + delete verticalLines["".concat(itemId, "tcbc")]; + delete verticalLines["".concat(itemId, "trbr")]; + }); + this.clearAlignLine(); + }; + return SnapLine3; +}(base_default18); +var snapline_default = SnapLine; + +// node_modules/@antv/g6-plugin/es/legend/index.js +var import_util573 = __toModule(require_lib()); +var __extends16 = function() { + var _extendStatics = function extendStatics(d3, b10) { + _extendStatics = Object.setPrototypeOf || { + __proto__: [] + } instanceof Array && function(d4, b11) { + d4.__proto__ = b11; + } || function(d4, b11) { + for (var p4 in b11) { + if (Object.prototype.hasOwnProperty.call(b11, p4)) + d4[p4] = b11[p4]; + } + }; + return _extendStatics(d3, b10); + }; + return function(d3, b10) { + if (typeof b10 !== "function" && b10 !== null) + throw new TypeError("Class extends value " + String(b10) + " is not a constructor or null"); + _extendStatics(d3, b10); + function __() { + this.constructor = d3; + } + d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); + }; +}(); +var __assign17 = function() { + __assign17 = Object.assign || function(t4) { + for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { + s4 = arguments[i4]; + for (var p4 in s4) { + if (Object.prototype.hasOwnProperty.call(s4, p4)) + t4[p4] = s4[p4]; + } + } + return t4; + }; + return __assign17.apply(this, arguments); +}; +var ALLOW_EVENTS = ["click", "mouseenter"]; +var Legend2 = function(_super) { + __extends16(Legend4, _super); + function Legend4(config) { + return _super.call(this, config) || this; + } + Legend4.prototype.getDefaultCfgs = function() { + return { + data: {}, + position: "top", + padding: 8, + margin: 8, + offsetX: 0, + offsetY: 0, + layout: "horizontal", + flipPage: false, + containerStyle: {}, + align: void 0, + horiSep: 8, + vertiSep: 8, + filter: { + enable: false, + trigger: "click" + } + }; + }; + Legend4.prototype.init = function() { + this.formatArray("padding"); + this.formatArray("margin"); + var filter17 = this.get("filter") || {}; + var multiple = filter17.multiple; + if (multiple && filter17.trigger === "mouseenter") + this.set("multiple", false); + var align = this.get("align"); + if (!align) { + var positions = this.get("position").split("-"); + if (positions.includes("left")) + align = "left"; + if (positions.includes("right")) + align = "right"; + else + align = "center"; + this.set("align", align); + } + var graph = this.get("graph"); + var graphContainer = graph.get("container"); + var container2 = createDom(`
    `); + graphContainer.appendChild(container2); + this.set("container", container2); + var size14 = this.render(); + modifyCSS(container2, this.getContainerPos(size14)); + this.bindEvents(); + }; + Legend4.prototype.getContainerPos = function(size14) { + if (size14 === void 0) { + size14 = [0, 0]; + } + var self2 = this; + var graph = self2.get("graph"); + var offsetX = this.get("offsetX"); + var offsetY = this.get("offsetY"); + var margin = this.get("margin"); + var positions = this.get("position").split("-"); + var posIdxMap = { + "top": 0, + "right": 1, + "bottom": 2, + "left": 3 + }; + var x6 = 0, y5 = 0; + var containerCSS = { + left: (graph.getWidth() - size14[0]) / 2 + x6, + top: (graph.getHeight() - size14[1]) / 2 + y5 + }; + positions.forEach(function(pos) { + var marginValue = margin[posIdxMap[pos]]; + var key = pos; + switch (pos) { + case "top": + marginValue += y5; + break; + case "left": + marginValue += x6; + break; + case "bottom": + marginValue = graph.getHeight() - size14[1] - marginValue + y5; + key = "top"; + break; + default: + marginValue = graph.getWidth() - size14[0] - marginValue + x6; + key = "left"; + break; + } + containerCSS[key] = marginValue; + }); + containerCSS.top += offsetY + graph.getContainer().offsetTop; + containerCSS.left += offsetX + graph.getContainer().offsetLeft; + Object.keys(containerCSS).forEach(function(key) { + containerCSS[key] = "".concat(containerCSS[key], "px"); + }); + return containerCSS; + }; + Legend4.prototype.bindEvents = function() { + var self2 = this; + var filter17 = self2.get("filter"); + if (!filter17 || !filter17.enable) + return; + var trigger = filter17.trigger || "click"; + if (!ALLOW_EVENTS.includes(trigger)) { + console.warn("Trigger for legend filterling must be 'click' or 'mouseenter', 'click' will take effect by default."); + trigger = "click"; + } + var lc = self2.get("legendCanvas"); + if (trigger === "mouseenter") { + lc.on("node-container:mouseenter", function(e4) { + return self2.filterData(e4); + }); + lc.on("node-container:mouseleave", function(e4) { + self2.clearFilter(); + self2.clearActiveLegend(); + }); + } else { + lc.on("node-container:click", function(e4) { + return self2.filterData(e4); + }); + lc.on("click", function(e4) { + if (e4.target && e4.target.isCanvas && e4.target.isCanvas()) { + self2.clearFilter(); + self2.clearActiveLegend(); + } + }); + } + }; + Legend4.prototype.changeData = function(data3) { + this.set("data", data3); + var size14 = this.render(); + modifyCSS(this.get("container"), this.getContainerPos(size14)); + }; + Legend4.prototype.activateLegend = function(shape) { + var filter17 = this.get("filter"); + var multiple = filter17 === null || filter17 === void 0 ? void 0 : filter17.multiple; + if (!multiple) + this.clearActiveLegend(); + var shapeGroup = shape.get("parent"); + if (shapeGroup.get("active")) { + shapeGroup.set("active", false); + if (this.findLegendItemsByState("active").length) + shapeGroup.set("inactive", true); + } else { + shapeGroup.set("inactive", false); + shapeGroup.set("active", true); + } + if (this.findLegendItemsByState("active").length) { + this.findLegendItemsByState("active", "all", false).forEach(function(subGroup) { + subGroup.set("inactive", true); + }); + } else { + this.clearActiveLegend(); + } + var stateStyles = (filter17 === null || filter17 === void 0 ? void 0 : filter17.lengedStateStyles) || {}; + var legendInactive = (stateStyles === null || stateStyles === void 0 ? void 0 : stateStyles.inactive) || { + opacity: 0.5, + "text-shape": { + opacity: 0.5 + } + }; + var legendTextInactive = legendInactive["text-shape"] || {}; + this.findLegendItemsByState("inactive").forEach(function(subGroup) { + var _a6 = subGroup.get("children"), keyShape = _a6[0], text = _a6[1]; + keyShape.attr(__assign17(__assign17({}, keyShape.get("oriAttrs")), legendInactive)); + text.attr(__assign17(__assign17({}, text.get("oriAttrs")), legendTextInactive)); + }); + var legendActive = (stateStyles === null || stateStyles === void 0 ? void 0 : stateStyles.active) || { + stroke: "#000", + lineWidth: 2, + "text-shape": { + fontWeight: "bold" + } + }; + var legendTextActive = legendActive["text-shape"] || {}; + this.findLegendItemsByState("active").forEach(function(subGroup) { + var _a6 = subGroup.get("children"), keyShape = _a6[0], text = _a6[1]; + keyShape.attr(__assign17(__assign17({}, keyShape.get("oriAttrs")), legendActive)); + text.attr(__assign17(__assign17({}, text.get("oriAttrs")), legendTextActive)); + }); + }; + Legend4.prototype.findLegendItemsByState = function(stateName, type2, value2) { + if (type2 === void 0) { + type2 = "all"; + } + if (value2 === void 0) { + value2 = true; + } + var group3 = this.get("legendCanvas").find(function(e4) { + return e4.get("name") === "root"; + }); + var nodeGroup = group3.find(function(e4) { + return e4.get("name") === "node-group"; + }); + var edgeGroup = group3.find(function(e4) { + return e4.get("name") === "edge-group"; + }); + if (type2 === "node") + return nodeGroup.get("children").filter(function(g4) { + return !!g4.get(stateName) === value2; + }); + if (type2 === "edge") + return edgeGroup.get("children").filter(function(g4) { + return !!g4.get(stateName) === value2; + }); + return nodeGroup.get("children").filter(function(g4) { + return !!g4.get(stateName) === value2; + }).concat(edgeGroup.get("children").filter(function(g4) { + return !!g4.get(stateName) === value2; + })); + }; + Legend4.prototype.clearActiveLegend = function() { + var lg = this.get("legendCanvas"); + var group3 = lg.find(function(e4) { + return e4.get("name") === "root"; + }); + var groups = [group3.find(function(e4) { + return e4.get("name") === "node-group"; + }), group3.find(function(e4) { + return e4.get("name") === "edge-group"; + })]; + groups.forEach(function(itemGroup) { + itemGroup.get("children").forEach(function(subGroup) { + subGroup.set("active", false); + subGroup.set("inactive", false); + var _a6 = subGroup.get("children"), keyShape = _a6[0], text = _a6[1]; + keyShape.attr(keyShape.get("oriAttrs")); + text.attr(text.get("oriAttrs")); + }); + }); + }; + Legend4.prototype.filterData = function(e4) { + var filter17 = this.get("filter"); + var filterFunctions = filter17 === null || filter17 === void 0 ? void 0 : filter17.filterFunctions; + if (!filter17 || !filterFunctions) + return; + var lc = this.get("legendCanvas"); + var graph = this.get("graph"); + var activeState = filter17.graphActiveState || "active"; + var inactiveState = filter17.graphInactiveState || "inactive"; + var multiple = filter17.multiple; + this.clearFilter(); + if (!multiple) + this.clearActiveLegend(); + this.activateLegend(e4.target); + var group3 = lc.find(function(e6) { + return e6.get("name") === "root"; + }); + var nodeGroup = group3.find(function(e6) { + return e6.get("name") === "node-group"; + }); + var edgeGroup = group3.find(function(e6) { + return e6.get("name") === "edge-group"; + }); + var activeNodeLegend = nodeGroup.get("children").filter(function(e6) { + return e6.get("active"); + }); + var activeEdgeLegend = edgeGroup.get("children").filter(function(e6) { + return e6.get("active"); + }); + var activeCount = 0; + var typeFuncs = ["getNodes", "getEdges"]; + typeFuncs.forEach(function(typeFunc) { + graph[typeFunc]().forEach(function(graphItem) { + var active = false; + var activeLegend = typeFunc === "getNodes" ? activeNodeLegend : activeEdgeLegend; + activeLegend.forEach(function(itemGroup) { + var func = filterFunctions[itemGroup.get("id")]; + active = active || func(graphItem.getModel()); + }); + if (active) { + graph.setItemState(graphItem, inactiveState, false); + graph.setItemState(graphItem, activeState, true); + activeCount++; + } else { + graph.setItemState(graphItem, activeState, false); + graph.setItemState(graphItem, inactiveState, true); + } + }); + }); + if (!activeCount) + typeFuncs.forEach(function(typeFunc) { + graph[typeFunc]().forEach(function(graphItem) { + graph.clearItemStates(graphItem, [inactiveState]); + }); + }); + }; + Legend4.prototype.clearFilter = function() { + var graph = this.get("graph"); + var filter17 = this.get("filter"); + if (!filter17) + return; + var activeState = filter17.graphActiveState || "active"; + var inactiveState = filter17.graphInactiveState || "inactive"; + graph.getNodes().forEach(function(node) { + graph.clearItemStates(node, [activeState, inactiveState]); + }); + graph.getEdges().forEach(function(edge2) { + graph.clearItemStates(edge2, [activeState, inactiveState]); + }); + }; + Legend4.prototype.render = function() { + var _this = this; + this.processData(); + var lc = this.get("legendCanvas"); + if (!lc) { + lc = new canvas_default2({ + container: this.get("container"), + width: 200, + height: 200 + }); + var rootGroup = lc.addGroup({ + name: "root" + }); + rootGroup.addGroup({ + name: "node-group" + }); + rootGroup.addGroup({ + name: "edge-group" + }); + this.set("legendCanvas", lc); + } + var group3 = lc.find(function(e4) { + return e4.get("name") === "root"; + }); + var nodeGroup = group3.find(function(e4) { + return e4.get("name") === "node-group"; + }); + var edgeGroup = group3.find(function(e4) { + return e4.get("name") === "edge-group"; + }); + var itemsData = this.get("itemsData"); + var itemTypes = ["nodes", "edges"]; + var itemGroup = [nodeGroup, edgeGroup]; + itemTypes.forEach(function(itemType, i4) { + itemsData[itemType].forEach(function(data3) { + var _a6; + var subGroup = itemGroup[i4].addGroup({ + id: data3.id, + name: "node-container" + }); + var attrs; + var shapeType = data3.type; + var _b = _this.getShapeSize(data3), width2 = _b.width, height = _b.height, r4 = _b.r; + var style2 = _this.getStyle(itemType.substr(0, 4), data3); + switch (data3.type) { + case "circle": + attrs = { + r: r4, + x: 0, + y: 0 + }; + break; + case "rect": + attrs = { + width: width2, + height, + x: -width2 / 2, + y: -height / 2 + }; + break; + case "ellipse": + attrs = { + r1: width2, + r2: height, + x: 0, + y: 0 + }; + break; + case "line": + attrs = { + x1: -width2 / 2, + y1: 0, + x2: width2 / 2, + y2: 0 + }; + shapeType = "line"; + break; + case "quadratic": + attrs = { + path: [["M", -width2 / 2, 0], ["Q", 0, width2 / 2, width2 / 2, 0]] + }; + shapeType = "path"; + break; + case "cubic": + attrs = { + path: [["M", -width2 / 2, 0], ["C", -width2 / 6, width2 / 2, width2 / 6, -width2 / 2, width2 / 2, 0]] + }; + shapeType = "path"; + break; + default: + attrs = { + r: r4, + x: 0, + y: 0 + }; + break; + } + var keyShape = subGroup.addShape(shapeType, { + attrs: __assign17(__assign17({}, attrs), style2), + name: "".concat(data3.type, "-node-keyShape"), + oriAttrs: __assign17({ + opacity: 1 + }, style2) + }); + if (data3.label) { + var keyShapeBBox = keyShape.getBBox(); + var labelStyle = ((_a6 = data3.labelCfg) === null || _a6 === void 0 ? void 0 : _a6.style) || {}; + var attrs_1 = __assign17({ + textAlign: "begin", + fontSize: 12, + textBaseline: "middle", + fill: "#000", + opacity: 1, + fontWeight: "normal" + }, labelStyle); + subGroup.addShape("text", { + attrs: __assign17({ + x: keyShapeBBox.maxX + 4, + y: 0, + text: data3.label + }, attrs_1), + className: "legend-label", + name: "".concat(data3.type, "-node-text"), + oriAttrs: attrs_1 + }); + } + }); + }); + var padding3 = this.get("padding"); + var titleShape; + var titleGroup = group3.find(function(e4) { + return e4.get("name") === "title-container"; + }); + var titleGroupBBox = { + height: 0, + maxY: 0, + width: 0 + }; + if (this.get("title")) { + if (!titleGroup) { + titleGroup = group3.addGroup({ + name: "title-container" + }); + } + var defaultTitleStyle = { + fontSize: 20, + fontFamily: "Arial", + fontWeight: 300, + textBaseline: "top", + textAlign: "center", + fill: "#000", + x: 0, + y: padding3[0] + }; + var titleConfig = this.get("titleConfig") || {}; + var style = Object.assign(defaultTitleStyle, titleConfig.style || {}); + titleShape = titleGroup.addShape("text", { + attrs: __assign17({ + text: this.get("title") + }, style) + }); + titleGroupBBox = titleGroup.getCanvasBBox(); + titleGroup.setMatrix([1, 0, 0, 0, 1, 0, titleConfig.offsetX, titleConfig.offsetY, 1]); + } + this.layoutItems(); + var lcBBox = group3.getCanvasBBox(); + var nodeGroupBBox = nodeGroup.getCanvasBBox(); + var nodeGroupBeginX = nodeGroupBBox.minX < 0 ? Math.abs(nodeGroupBBox.minX) + padding3[3] : padding3[3]; + var nodeGroupBeginY = titleGroupBBox.maxY < nodeGroupBBox.minY ? Math.abs(titleGroupBBox.maxY - nodeGroupBBox.minY) + padding3[0] : titleGroupBBox.maxY + padding3[0]; + var nodeGroupMatrix = [1, 0, 0, 0, 1, 0, nodeGroupBeginX, nodeGroupBeginY, 1]; + nodeGroup.setMatrix(nodeGroupMatrix); + lcBBox = group3.getCanvasBBox(); + var size14 = [lcBBox.minX + lcBBox.width + padding3[1], lcBBox.minY + lcBBox.height + padding3[2]]; + if (titleShape) { + var titleConfig = __assign17({ + position: "center", + offsetX: 0, + offsetY: 0 + }, this.get("titleConfig")); + titleGroupBBox = titleGroup.getCanvasBBox(); + var titleGroupMatrix = titleGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1]; + if (titleConfig.position === "center") { + titleGroupMatrix[6] = size14[0] / 2 + titleConfig.offsetX; + } else if (titleConfig.position === "right") { + titleGroupMatrix[6] = size14[0] - padding3[3] + titleConfig.offsetX; + titleShape.attr({ + textAlign: "right" + }); + } else { + titleGroupMatrix[6] = padding3[3] + titleConfig.offsetX; + titleShape.attr({ + textAlign: "left" + }); + } + titleGroup.setMatrix(titleGroupMatrix); + titleGroupBBox = titleGroup.getCanvasBBox(); + nodeGroupBeginX = nodeGroupBBox.minX < 0 ? Math.abs(nodeGroupBBox.minX) + padding3[3] : padding3[3]; + nodeGroupBeginY = nodeGroupBBox.minY < titleGroupBBox.maxY ? Math.abs(titleGroupBBox.maxY - nodeGroupBBox.minY) + padding3[0] : titleGroupBBox.maxY + padding3[0]; + nodeGroupMatrix = [1, 0, 0, 0, 1, 0, nodeGroupBeginX, nodeGroupBeginY, 1]; + nodeGroup.setMatrix(nodeGroupMatrix); + var edgeGroupMatrix_1 = [1, 0, 0, 0, 1, 0, nodeGroupBeginX, nodeGroupBeginY, 1]; + if (this.get("layout") === "vertical") + edgeGroupMatrix_1[6] += nodeGroupBBox.maxX + this.get("horiSep"); + else + edgeGroupMatrix_1[7] += nodeGroupBBox.maxY + this.get("vertiSep"); + edgeGroup.setMatrix(edgeGroupMatrix_1); + } else { + nodeGroupBBox = nodeGroup.getCanvasBBox(); + var edgeGroupMatrix_2 = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + if (this.get("layout") === "vertical") + edgeGroupMatrix_2[6] += nodeGroupMatrix[6] + nodeGroupBBox.maxX + this.get("horiSep"); + else + edgeGroupMatrix_2[7] += nodeGroupMatrix[7] + nodeGroupBBox.maxY + this.get("vertiSep"); + edgeGroup.setMatrix(edgeGroupMatrix_2); + } + lcBBox = group3.getCanvasBBox(); + nodeGroupBBox = nodeGroup.getCanvasBBox(); + nodeGroupMatrix = nodeGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1]; + var edgeGroupMatrix = edgeGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1]; + var edgeGroupBBox = edgeGroup.getCanvasBBox(); + size14 = [Math.max(nodeGroupBBox.width + nodeGroupMatrix[6], edgeGroupBBox.width + edgeGroupMatrix[6]) + padding3[1], Math.max(nodeGroupBBox.height + nodeGroupMatrix[7], edgeGroupBBox.height + edgeGroupMatrix[7]) + padding3[2]]; + lc.changeSize(size14[0], size14[1]); + var containerStyle = this.get("containerStyle"); + var viewportMatrix = group3.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1]; + var beginPos = util_default.invertMatrix({ + x: 0, + y: 0 + }, viewportMatrix); + var backRect = group3.addShape("rect", { + attrs: __assign17({ + x: beginPos.x + (containerStyle.lineWidth || 1), + y: beginPos.y + (containerStyle.lineWidth || 1), + width: size14[0] - 2 * (containerStyle.lineWidth || 1), + height: size14[1] - 2 * (containerStyle.lineWidth || 1), + fill: "#f00", + stroke: "#000", + lineWidth: 1, + opacity: 0.5 + }, containerStyle), + name: "legend-back-rect", + capture: false + }); + backRect.toBack(); + return size14; + }; + Legend4.prototype.layoutItems = function() { + var lc = this.get("legendCanvas"); + var horiSep = this.get("horiSep"); + var vertiSep = this.get("vertiSep"); + var layout6 = this.get("layout"); + var align = this.get("align"); + var begin = [0, 0]; + var group3 = lc.find(function(e4) { + return e4.get("name") === "root"; + }); + var nodeGroup = group3.find(function(e4) { + return e4.get("name") === "node-group"; + }); + var edgeGroup = group3.find(function(e4) { + return e4.get("name") === "edge-group"; + }); + var nodeLegendSize = { + min: 0, + max: -Infinity + }; + var rowMaxY = -Infinity; + nodeGroup.get("children").forEach(function(cNodeGroup, i4) { + if (i4 === 0) + nodeLegendSize.min = begin[0]; + var keyShape = cNodeGroup.get("children")[0]; + var bbox = cNodeGroup.getCanvasBBox(); + var _a6 = keyShape.getBBox(), keyShapeWidth = _a6.width, keyShapeHeight = _a6.height; + var curHeight = 0, x6 = 0, y5 = 0; + if (layout6 === "vertical") { + x6 = begin[1]; + y5 = begin[0] + keyShapeWidth / 2; + begin[0] = y5 + bbox.height + vertiSep; + curHeight = bbox.maxX + x6 + keyShapeWidth / 2; + } else { + x6 = begin[0] + keyShapeWidth / 2; + y5 = begin[1]; + begin[0] = x6 + bbox.width + horiSep; + curHeight = bbox.maxY + y5 + keyShapeHeight / 2; + } + if (begin[0] > nodeLegendSize.max) + nodeLegendSize.max = begin[0]; + if (curHeight > rowMaxY) + rowMaxY = curHeight; + cNodeGroup.setMatrix([1, 0, 0, 0, 1, 0, x6, y5, 1]); + }); + var nw = nodeLegendSize.max - nodeLegendSize.min; + var edgeLegendSize = { + min: 0, + max: -Infinity + }; + var nodeGroupBBox = nodeGroup.getCanvasBBox(); + begin[0] = 0; + begin[1] = layout6 === "vertical" ? nodeGroupBBox.maxX + horiSep : nodeGroupBBox.maxY + vertiSep; + edgeGroup.get("children").forEach(function(subGroup, i4) { + if (i4 === 0) + edgeLegendSize.min = begin[0]; + var keyShape = subGroup.get("children")[0]; + var bbox = subGroup.getCanvasBBox(); + var _a6 = keyShape.getBBox(), keyShapeWidth = _a6.width, keyShapeHeight = _a6.height; + var x6 = 0, y5 = 0; + if (layout6 === "vertical") { + x6 = begin[1]; + y5 = begin[0]; + begin[0] = y5 + bbox.height + vertiSep; + subGroup.setMatrix([1, 0, 0, 0, 1, 0, 0, y5 + keyShapeHeight / 2, 1]); + } else { + x6 = begin[0]; + y5 = begin[1]; + begin[0] = x6 + bbox.width + horiSep; + subGroup.setMatrix([1, 0, 0, 0, 1, 0, x6 + keyShapeWidth / 2, 0, 1]); + } + if (begin[0] > edgeLegendSize.max) + edgeLegendSize.max = begin[0]; + }); + var ew = edgeLegendSize.max - edgeLegendSize.min; + if (align && align !== "" && align !== "left") { + var widthDiff = nw - ew; + var movement_1 = align === "center" ? Math.abs(widthDiff) / 2 : Math.abs(widthDiff); + var shouldAdjustGroup = widthDiff < 0 ? nodeGroup : edgeGroup; + shouldAdjustGroup.get("children").forEach(function(subGroup) { + var matrix = subGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1]; + if (layout6 === "vertical") + matrix[7] += movement_1; + else + matrix[6] += movement_1; + subGroup.setMatrix(matrix); + }); + } + }; + Legend4.prototype.processData = function() { + var data3 = this.get("data"); + var itemsData = { + nodes: [], + edges: [] + }; + if (data3.nodes) { + data3.nodes.sort(function(a4, b10) { + return a4.order - b10.order; + }); + data3.nodes.forEach(function(node) { + var _a6, _b, _c, _d, _e; + var size14 = node.size || [((_a6 = node.style) === null || _a6 === void 0 ? void 0 : _a6.width) || ((_b = node.style) === null || _b === void 0 ? void 0 : _b.r) || 8, ((_c = node.style) === null || _c === void 0 ? void 0 : _c.height) || ((_d = node.style) === null || _d === void 0 ? void 0 : _d.r) || 8]; + var labelStyle = ((_e = node.labelCfg) === null || _e === void 0 ? void 0 : _e.style) || {}; + itemsData.nodes.push({ + id: node.id || (0, import_util573.uniqueId)(), + type: node.type || "circle", + style: __assign17({}, node.style), + order: node.order, + label: node.label, + itemType: "node", + size: size14, + labelCfg: { + position: "right", + style: __assign17({ + fontFamily: "Arial" + }, labelStyle) + } + }); + }); + } + if (data3.edges) { + data3.edges.sort(function(a4, b10) { + return a4.order - b10.order; + }); + data3.edges.forEach(function(edge2) { + var _a6, _b; + var type2 = edge2.type || "line"; + if (edge2.type === "cubic-horizontal") + type2 = "cubic"; + var labelStyle = ((_a6 = edge2.labelCfg) === null || _a6 === void 0 ? void 0 : _a6.style) || {}; + var size14 = edge2.size || [((_b = edge2.style) === null || _b === void 0 ? void 0 : _b.width) || 8, 1]; + itemsData.edges.push({ + id: edge2.id || (0, import_util573.uniqueId)(), + type: type2, + size: size14, + style: __assign17({ + lineWidth: (0, import_util573.isArray)(size14) ? size14[1] : 1 + }, edge2.style), + order: edge2.order, + label: edge2.label, + itemType: "edge", + labelCfg: { + position: "right", + style: __assign17({ + fontFamily: "Arial" + }, labelStyle) + } + }); + }); + } + this.set("itemsData", itemsData); + }; + Legend4.prototype.getContainer = function() { + return this.get("container"); + }; + Legend4.prototype.formatArray = function(key) { + var value2 = this.get(key); + if ((0, import_util573.isNumber)(value2)) + this.set(key, [value2, value2, value2, value2]); + else if ((0, import_util573.isArray)(value2)) { + switch (value2.length) { + case 0: + this.set(key, [0, 0, 0, 0]); + break; + case 1: + this.set(key, [value2[0], value2[0], value2[0], value2[0]]); + break; + case 2: + this.set(key, [value2[0], value2[1], value2[0], value2[1]]); + break; + case 3: + this.set(key, [value2[0], value2[1], value2[2], value2[1]]); + break; + default: + break; + } + } + return this.get(key); + }; + Legend4.prototype.getShapeSize = function(data3) { + var width2, height, r4; + if (data3.size) { + if ((0, import_util573.isArray)(data3.size)) { + width2 = data3.size[0]; + height = data3.size[1] || data3.size[0]; + r4 = data3.size[0] / 2; + } else if ((0, import_util573.isNumber)(data3.size)) { + width2 = data3.size; + height = data3.size; + r4 = data3.size / 2; + } + } + if (data3.style) { + if (data3.style.width) + width2 = data3.style.width; + if (data3.style.height) + height = data3.style.height; + if (data3.style.r) + r4 = data3.style.r; + } + if (!r4) + r4 = 5; + if (!width2) + width2 = r4; + if (!height) + height = r4; + return { + width: width2, + height, + r: r4 + }; + }; + Legend4.prototype.getStyle = function(type2, data3) { + var defaultStyle = type2 === "node" ? { + fill: "#ccc", + lineWidth: 0 + } : { + stroke: "#000", + lineWidth: 1 + }; + return __assign17(__assign17({}, defaultStyle), data3.style || {}); + }; + Legend4.prototype.destroy = function() { + var graph = this.get("graph"); + var graphContainer = graph.get("container"); + var container2 = this.get("container"); + graphContainer.removeChild(container2); + }; + return Legend4; +}(base_default18); +var legend_default2 = Legend2; + // node_modules/@antv/g6-plugin/es/index.js var Plugin = { PluginBase: base_default18, @@ -133670,14 +142400,17 @@ var Plugin = { Fisheye: fisheye_default, TimeBar: timeBar_default, ImageMinimap: imageMinimap_default, - EdgeFilterLens: edgeFilterLens_default + EdgeFilterLens: edgeFilterLens_default, + SnapLine: snapline_default, + Legend: legend_default2 }; -var es_default3 = Plugin; +var es_default4 = Plugin; // node_modules/@antv/g6-pc/es/plugin/index.js -var plugin_default = es_default3; +var plugin_default = es_default4; // node_modules/@antv/g6-element/es/nodes/circle.js +var import_util574 = __toModule(require_lib()); registerNode("circle", { options: { size: BaseGlobal.defaultNode.size, @@ -133691,7 +142424,8 @@ registerNode("circle", { labelCfg: { style: { fill: BaseGlobal.nodeLabel.style.fill, - fontSize: BaseGlobal.nodeLabel.style.fontSize + fontSize: BaseGlobal.nodeLabel.style.fontSize, + fontFamily: BaseGlobal.windowFontFamily } }, linkPoints: { @@ -133714,92 +142448,119 @@ registerNode("circle", { }, shapeType: "circle", labelPosition: "center", - drawShape: function drawShape11(cfg, group2) { - var _a6 = this.getOptions(cfg).icon, defaultIcon = _a6 === void 0 ? {} : _a6; + drawShape: function drawShape11(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).icon, defaultIcon = _a6 === void 0 ? {} : _a6; var style = this.getShapeStyle(cfg); - var icon = deep_mix_default({}, defaultIcon, cfg.icon); - var keyShape = group2.addShape("circle", { + var icon = (0, import_util574.deepMix)({}, defaultIcon, cfg.icon); + var name = "".concat(this.type, "-keyShape"); + var keyShape = group3.addShape("circle", { attrs: style, - className: this.type + "-keyShape", + className: name, + name, draggable: true }); - var width2 = icon.width, height = icon.height, show = icon.show; + group3["shapeMap"][name] = keyShape; + var width2 = icon.width, height = icon.height, show = icon.show, text = icon.text; if (show) { - group2.addShape("image", { - attrs: __assign({ - x: -width2 / 2, - y: -height / 2 - }, icon), - className: this.type + "-icon", - name: this.type + "-icon", - draggable: true - }); + var iconName = "".concat(this.type, "-icon"); + if (text) { + group3["shapeMap"][iconName] = group3.addShape("text", { + attrs: __assign({ + x: 0, + y: 0, + fontSize: 12, + fill: "#000", + stroke: "#000", + textBaseline: "middle", + textAlign: "center" + }, icon), + className: iconName, + name: iconName, + draggable: true + }); + } else { + group3["shapeMap"][iconName] = group3.addShape("image", { + attrs: __assign({ + x: -width2 / 2, + y: -height / 2 + }, icon), + className: iconName, + name: iconName, + draggable: true + }); + } } - this.drawLinkPoints(cfg, group2); + this.drawLinkPoints(cfg, group3); return keyShape; }, - drawLinkPoints: function drawLinkPoints(cfg, group2) { - var _a6 = this.getOptions(cfg).linkPoints, linkPoints = _a6 === void 0 ? {} : _a6; - var top = linkPoints.top, left2 = linkPoints.left, right2 = linkPoints.right, bottom = linkPoints.bottom, markSize = linkPoints.size, markR = linkPoints.r, markStyle = __rest(linkPoints, ["top", "left", "right", "bottom", "size", "r"]); - var size2 = this.getSize(cfg); - var r4 = size2[0] / 2; + drawLinkPoints: function drawLinkPoints(cfg, group3) { + var linkPoints = (this.mergeStyle || this.getOptions(cfg)).linkPoints; + if (!linkPoints) + return; + var _a6 = linkPoints || {}, top = _a6.top, left2 = _a6.left, right2 = _a6.right, bottom = _a6.bottom, markSize = _a6.size, markR = _a6.r, markStyle = __rest(_a6, ["top", "left", "right", "bottom", "size", "r"]); + var size14 = this.getSize(cfg); + var r4 = size14[0] / 2; if (left2) { - group2.addShape("circle", { + var name_1 = "link-point-left"; + group3["shapeMap"][name_1] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: -r4, y: 0, r: markSize / 2 || markR || 5 }), - className: "link-point-left", - name: "link-point-left", + className: name_1, + name: name_1, isAnchorPoint: true }); } if (right2) { - group2.addShape("circle", { + var name_2 = "link-point-right"; + group3["shapeMap"][name_2] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: r4, y: 0, r: markSize / 2 || markR || 5 }), - className: "link-point-right", - name: "link-point-right", + className: name_2, + name: name_2, isAnchorPoint: true }); } if (top) { - group2.addShape("circle", { + var name_3 = "link-point-top"; + group3["shapeMap"][name_3] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: 0, y: -r4, r: markSize / 2 || markR || 5 }), - className: "link-point-top", - name: "link-point-top", + className: name_3, + name: name_3, isAnchorPoint: true }); } if (bottom) { - group2.addShape("circle", { + var name_4 = "link-point-bottom"; + group3["shapeMap"][name_4] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: 0, y: r4, r: markSize / 2 || markR || 5 }), - className: "link-point-bottom", - name: "link-point-bottom", + className: name_4, + name: name_4, isAnchorPoint: true }); } }, getShapeStyle: function getShapeStyle8(cfg) { - var defaultStyle = this.getOptions(cfg).style; + var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style; var strokeStyle = { stroke: cfg.color }; - var style = deep_mix_default({}, defaultStyle, strokeStyle); - var size2 = this.getSize(cfg); - var r4 = size2[0] / 2; + var style = (0, import_util574.deepMix)({}, defaultStyle, strokeStyle); + var size14 = this.getSize(cfg); + var r4 = size14[0] / 2; var styles = __assign({ x: 0, y: 0, @@ -133807,21 +142568,23 @@ registerNode("circle", { }, style); return styles; }, - update: function update7(cfg, item) { - var group2 = item.getContainer(); - var size2 = this.getSize(cfg); - var strokeStyle = { - stroke: cfg.color, - r: size2[0] / 2 - }; - var keyShape = item.get("keyShape"); - var style = deep_mix_default({}, keyShape.attr(), strokeStyle, cfg.style); - this.updateShape(cfg, item, style, true); - this.updateLinkPoints(cfg, group2); + update: function update7(cfg, item, updateType) { + var group3 = item.getContainer(); + var size14 = this.getSize(cfg); + var style = __assign({}, cfg.style); + if (cfg.style.stroke === void 0 && cfg.color) { + style.stroke = cfg.color; + } + if (cfg.style.r === void 0 && !isNaN(size14[0])) { + style.r = size14[0] / 2; + } + this.updateShape(cfg, item, style, true, updateType); + this.updateLinkPoints(cfg, group3); } }, "single-node"); // node_modules/@antv/g6-element/es/nodes/rect.js +var import_util575 = __toModule(require_lib()); registerNode("rect", { options: { size: [100, 30], @@ -133834,7 +142597,8 @@ registerNode("rect", { labelCfg: { style: { fill: BaseGlobal.nodeLabel.style.fill, - fontSize: BaseGlobal.nodeLabel.style.fontSize + fontSize: BaseGlobal.nodeLabel.style.fontSize, + fontFamily: BaseGlobal.windowFontFamily } }, linkPoints: { @@ -133858,25 +142622,26 @@ registerNode("rect", { }, shapeType: "rect", labelPosition: "center", - drawShape: function drawShape12(cfg, group2) { + drawShape: function drawShape12(cfg, group3) { var style = this.getShapeStyle(cfg); - var keyShape = group2.addShape("rect", { + var keyShape = group3.addShape("rect", { attrs: style, - className: this.type + "-keyShape", - name: this.type + "-keyShape", + className: "".concat(this.type, "-keyShape"), + name: "".concat(this.type, "-keyShape"), draggable: true }); - this.drawLinkPoints(cfg, group2); + group3["shapeMap"]["".concat(this.type, "-keyShape")] = keyShape; + this.drawLinkPoints(cfg, group3); return keyShape; }, - drawLinkPoints: function drawLinkPoints2(cfg, group2) { - var _a6 = this.getOptions(cfg).linkPoints, linkPoints = _a6 === void 0 ? {} : _a6; + drawLinkPoints: function drawLinkPoints2(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).linkPoints, linkPoints = _a6 === void 0 ? {} : _a6; var top = linkPoints.top, left2 = linkPoints.left, right2 = linkPoints.right, bottom = linkPoints.bottom, markSize = linkPoints.size, markR = linkPoints.r, markStyle = __rest(linkPoints, ["top", "left", "right", "bottom", "size", "r"]); - var size2 = this.getSize(cfg); - var width2 = size2[0]; - var height = size2[1]; + var size14 = this.getSize(cfg); + var width2 = size14[0]; + var height = size14[1]; if (left2) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-left"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: -width2 / 2, y: 0, @@ -133888,7 +142653,7 @@ registerNode("rect", { }); } if (right2) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-right"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: width2 / 2, y: 0, @@ -133900,7 +142665,7 @@ registerNode("rect", { }); } if (top) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-top"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: 0, y: -height / 2, @@ -133912,7 +142677,7 @@ registerNode("rect", { }); } if (bottom) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-bottom"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: 0, y: height / 2, @@ -133925,14 +142690,14 @@ registerNode("rect", { } }, getShapeStyle: function getShapeStyle9(cfg) { - var defaultStyle = this.getOptions(cfg).style; + var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style; var strokeStyle = { stroke: cfg.color }; - var style = mix({}, defaultStyle, strokeStyle); - var size2 = this.getSize(cfg); - var width2 = style.width || size2[0]; - var height = style.height || size2[1]; + var style = (0, import_util575.mix)({}, defaultStyle, strokeStyle); + var size14 = this.getSize(cfg); + var width2 = style.width || size14[0]; + var height = style.height || size14[1]; var styles = __assign({ x: -width2 / 2, y: -height / 2, @@ -133941,30 +142706,31 @@ registerNode("rect", { }, style); return styles; }, - update: function update8(cfg, item) { - var group2 = item.getContainer(); + update: function update8(cfg, item, updateType) { + var group3 = item.getContainer(); var defaultStyle = this.getOptions({}).style; - var size2 = this.getSize(cfg); + var size14 = this.getSize(cfg); var keyShape = item.get("keyShape"); if (!cfg.size) { - size2[0] = keyShape.attr("width") || defaultStyle.width; - size2[1] = keyShape.attr("height") || defaultStyle.height; + size14[0] = keyShape.attr("width") || defaultStyle.width; + size14[1] = keyShape.attr("height") || defaultStyle.height; } var strokeStyle = { stroke: cfg.color, - x: -size2[0] / 2, - y: -size2[1] / 2, - width: size2[0], - height: size2[1] + x: -size14[0] / 2, + y: -size14[1] / 2, + width: size14[0], + height: size14[1] }; - var style = mix({}, defaultStyle, keyShape.attr(), strokeStyle); - style = mix(style, cfg.style); - this.updateShape(cfg, item, style, false); - this.updateLinkPoints(cfg, group2); + var style = (0, import_util575.mix)({}, defaultStyle, keyShape.attr(), strokeStyle); + style = (0, import_util575.mix)(style, cfg.style); + this.updateShape(cfg, item, style, false, updateType); + this.updateLinkPoints(cfg, group3); } }, "single-node"); // node_modules/@antv/g6-element/es/nodes/ellipse.js +var import_util576 = __toModule(require_lib()); registerNode("ellipse", { options: { size: [80, 40], @@ -133978,7 +142744,8 @@ registerNode("ellipse", { labelCfg: { style: { fill: BaseGlobal.nodeLabel.style.fill, - fontSize: BaseGlobal.nodeLabel.style.fontSize + fontSize: BaseGlobal.nodeLabel.style.fontSize, + fontFamily: BaseGlobal.windowFontFamily } }, linkPoints: { @@ -134001,38 +142768,56 @@ registerNode("ellipse", { }, shapeType: "ellipse", labelPosition: "center", - drawShape: function drawShape13(cfg, group2) { - var _a6 = this.getOptions(cfg).icon, icon = _a6 === void 0 ? {} : _a6; + drawShape: function drawShape13(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).icon, icon = _a6 === void 0 ? {} : _a6; var style = this.getShapeStyle(cfg); - var keyShape = group2.addShape("ellipse", { + var keyShape = group3.addShape("ellipse", { attrs: style, className: "ellipse-keyShape", name: "ellipse-keyShape", draggable: true }); - var width2 = icon.width, height = icon.height, show = icon.show; + group3["shapeMap"]["ellipse-keyShape"] = keyShape; + var width2 = icon.width, height = icon.height, show = icon.show, text = icon.text; if (show) { - var image = group2.addShape("image", { - attrs: __assign({ - x: -width2 / 2, - y: -height / 2 - }, icon), - className: this.type + "-icon", - name: this.type + "-icon", - draggable: true - }); + if (text) { + group3["shapeMap"]["".concat(this.type, "-icon")] = group3.addShape("text", { + attrs: __assign({ + x: 0, + y: 0, + fontSize: 12, + fill: "#000", + stroke: "#000", + textBaseline: "middle", + textAlign: "center" + }, icon), + className: "".concat(this.type, "-icon"), + name: "".concat(this.type, "-icon"), + draggable: true + }); + } else { + group3["shapeMap"]["".concat(this.type, "-icon")] = group3.addShape("image", { + attrs: __assign({ + x: -width2 / 2, + y: -height / 2 + }, icon), + className: "".concat(this.type, "-icon"), + name: "".concat(this.type, "-icon"), + draggable: true + }); + } } - this.drawLinkPoints(cfg, group2); + this.drawLinkPoints(cfg, group3); return keyShape; }, - drawLinkPoints: function drawLinkPoints3(cfg, group2) { - var _a6 = this.getOptions(cfg).linkPoints, linkPoints = _a6 === void 0 ? {} : _a6; + drawLinkPoints: function drawLinkPoints3(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).linkPoints, linkPoints = _a6 === void 0 ? {} : _a6; var top = linkPoints.top, left2 = linkPoints.left, right2 = linkPoints.right, bottom = linkPoints.bottom, markSize = linkPoints.size, markR = linkPoints.r, markStyle = __rest(linkPoints, ["top", "left", "right", "bottom", "size", "r"]); - var size2 = this.getSize(cfg); - var rx = size2[0] / 2; - var ry = size2[1] / 2; + var size14 = this.getSize(cfg); + var rx = size14[0] / 2; + var ry = size14[1] / 2; if (left2) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-left"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: -rx, y: 0, @@ -134044,7 +142829,7 @@ registerNode("ellipse", { }); } if (right2) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-right"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: rx, y: 0, @@ -134056,7 +142841,7 @@ registerNode("ellipse", { }); } if (top) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-top"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: 0, y: -ry, @@ -134068,7 +142853,7 @@ registerNode("ellipse", { }); } if (bottom) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-bottom"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: 0, y: ry, @@ -134081,14 +142866,14 @@ registerNode("ellipse", { } }, getShapeStyle: function getShapeStyle10(cfg) { - var defaultStyle = this.getOptions(cfg).style; + var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style; var strokeStyle = { stroke: cfg.color }; - var style = mix({}, defaultStyle, strokeStyle); - var size2 = this.getSize(cfg); - var rx = size2[0] / 2; - var ry = size2[1] / 2; + var style = (0, import_util576.mix)({}, defaultStyle, strokeStyle); + var size14 = this.getSize(cfg); + var rx = size14[0] / 2; + var ry = size14[1] / 2; var styles = __assign({ x: 0, y: 0, @@ -134097,24 +142882,25 @@ registerNode("ellipse", { }, style); return styles; }, - update: function update9(cfg, item) { - var group2 = item.getContainer(); + update: function update9(cfg, item, updateType) { + var group3 = item.getContainer(); var defaultStyle = this.getOptions({}).style; - var size2 = this.getSize(cfg); + var size14 = this.getSize(cfg); var strokeStyle = { stroke: cfg.color, - rx: size2[0] / 2, - ry: size2[1] / 2 + rx: size14[0] / 2, + ry: size14[1] / 2 }; var keyShape = item.get("keyShape"); - var style = mix({}, defaultStyle, keyShape.attr(), strokeStyle); - style = mix(style, cfg.style); - this.updateShape(cfg, item, style, true); - this.updateLinkPoints(cfg, group2); + var style = (0, import_util576.mix)({}, defaultStyle, keyShape.attr(), strokeStyle); + style = (0, import_util576.mix)(style, cfg.style); + this.updateShape(cfg, item, style, true, updateType); + this.updateLinkPoints(cfg, group3); } }, "single-node"); // node_modules/@antv/g6-element/es/nodes/diamond.js +var import_util577 = __toModule(require_lib()); registerNode("diamond", { options: { size: [80, 80], @@ -134126,7 +142912,8 @@ registerNode("diamond", { labelCfg: { style: { fill: BaseGlobal.nodeLabel.style.fill, - fontSize: BaseGlobal.nodeLabel.style.fontSize + fontSize: BaseGlobal.nodeLabel.style.fontSize, + fontFamily: BaseGlobal.windowFontFamily } }, linkPoints: { @@ -134149,38 +142936,56 @@ registerNode("diamond", { }, shapeType: "diamond", labelPosition: "center", - drawShape: function drawShape14(cfg, group2) { - var _a6 = this.getOptions(cfg).icon, icon = _a6 === void 0 ? {} : _a6; + drawShape: function drawShape14(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).icon, icon = _a6 === void 0 ? {} : _a6; var style = this.getShapeStyle(cfg); - var keyShape = group2.addShape("path", { + var keyShape = group3.addShape("path", { attrs: style, - className: this.type + "-keyShape", - name: this.type + "-keyShape", + className: "".concat(this.type, "-keyShape"), + name: "".concat(this.type, "-keyShape"), draggable: true }); - var w4 = icon.width, h3 = icon.height, show = icon.show; + group3["shapeMap"]["".concat(this.type, "-keyShape")] = keyShape; + var w4 = icon.width, h3 = icon.height, show = icon.show, text = icon.text; if (show) { - var image = group2.addShape("image", { - attrs: __assign({ - x: -w4 / 2, - y: -h3 / 2 - }, icon), - className: this.type + "-icon", - name: this.type + "-icon", - draggable: true - }); + if (text) { + group3["shapeMap"]["".concat(this.type, "-icon")] = group3.addShape("text", { + attrs: __assign({ + x: 0, + y: 0, + fontSize: 12, + fill: "#000", + stroke: "#000", + textBaseline: "middle", + textAlign: "center" + }, icon), + className: "".concat(this.type, "-icon"), + name: "".concat(this.type, "-icon"), + draggable: true + }); + } else { + group3["shapeMap"]["".concat(this.type, "-icon")] = group3.addShape("image", { + attrs: __assign({ + x: -w4 / 2, + y: -h3 / 2 + }, icon), + className: "".concat(this.type, "-icon"), + name: "".concat(this.type, "-icon"), + draggable: true + }); + } } - this.drawLinkPoints(cfg, group2); + this.drawLinkPoints(cfg, group3); return keyShape; }, - drawLinkPoints: function drawLinkPoints4(cfg, group2) { - var _a6 = this.getOptions(cfg).linkPoints, linkPoints = _a6 === void 0 ? {} : _a6; + drawLinkPoints: function drawLinkPoints4(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).linkPoints, linkPoints = _a6 === void 0 ? {} : _a6; var top = linkPoints.top, left2 = linkPoints.left, right2 = linkPoints.right, bottom = linkPoints.bottom, markSize = linkPoints.size, markR = linkPoints.r, markStyle = __rest(linkPoints, ["top", "left", "right", "bottom", "size", "r"]); - var size2 = this.getSize(cfg); - var width2 = size2[0]; - var height = size2[1]; + var size14 = this.getSize(cfg); + var width2 = size14[0]; + var height = size14[1]; if (left2) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-left"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: -width2 / 2, y: 0, @@ -134192,7 +142997,7 @@ registerNode("diamond", { }); } if (right2) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-right"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: width2 / 2, y: 0, @@ -134204,7 +143009,7 @@ registerNode("diamond", { }); } if (top) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-top"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: 0, y: -height / 2, @@ -134216,7 +143021,7 @@ registerNode("diamond", { }); } if (bottom) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-bottom"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: 0, y: height / 2, @@ -134229,9 +143034,9 @@ registerNode("diamond", { } }, getPath: function getPath10(cfg) { - var size2 = this.getSize(cfg); - var width2 = size2[0]; - var height = size2[1]; + var size14 = this.getSize(cfg); + var width2 = size14[0]; + var height = size14[1]; var path = [ ["M", 0, -height / 2], ["L", width2 / 2, 0], @@ -134242,19 +143047,19 @@ registerNode("diamond", { return path; }, getShapeStyle: function getShapeStyle11(cfg) { - var defaultStyle = this.getOptions(cfg).style; + var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style; var strokeStyle = { stroke: cfg.color }; - var style = mix({}, defaultStyle, strokeStyle); + var style = (0, import_util577.mix)({}, defaultStyle, strokeStyle); var path = this.getPath(cfg); var styles = __assign({ path }, style); return styles; }, - update: function update10(cfg, item) { - var group2 = item.getContainer(); + update: function update10(cfg, item, updateType) { + var group3 = item.getContainer(); var defaultStyle = this.getOptions({}).style; var path = this.getPath(cfg); var strokeStyle = { @@ -134262,14 +143067,15 @@ registerNode("diamond", { path }; var keyShape = item.get("keyShape"); - var style = mix({}, defaultStyle, keyShape.attr(), strokeStyle); - style = mix(style, cfg.style); - this.updateShape(cfg, item, style, true); - this.updateLinkPoints(cfg, group2); + var style = (0, import_util577.mix)({}, defaultStyle, keyShape.attr(), strokeStyle); + style = (0, import_util577.mix)(style, cfg.style); + this.updateShape(cfg, item, style, true, updateType); + this.updateLinkPoints(cfg, group3); } }, "single-node"); // node_modules/@antv/g6-element/es/nodes/triangle.js +var import_util578 = __toModule(require_lib()); registerNode("triangle", { options: { size: 40, @@ -134307,58 +143113,76 @@ registerNode("triangle", { }, shapeType: "triangle", labelPosition: "bottom", - drawShape: function drawShape15(cfg, group2) { - var _a6 = this.getOptions(cfg), _b = _a6.icon, icon = _b === void 0 ? {} : _b, defaultDirection = _a6.direction; + drawShape: function drawShape15(cfg, group3) { + var _a6 = this.mergeStyle || this.getOptions(cfg), _b = _a6.icon, icon = _b === void 0 ? {} : _b, defaultDirection = _a6.direction; var style = this.getShapeStyle(cfg); - var direction5 = cfg.direction || defaultDirection; - var keyShape = group2.addShape("path", { + var direction3 = cfg.direction || defaultDirection; + var keyShape = group3.addShape("path", { attrs: style, - className: this.type + "-keyShape", - name: this.type + "-keyShape", + className: "".concat(this.type, "-keyShape"), + name: "".concat(this.type, "-keyShape"), draggable: true }); - var w4 = icon.width, h3 = icon.height, show = icon.show, offset = icon.offset; + group3["shapeMap"]["".concat(this.type, "-keyShape")] = keyShape; + var w4 = icon.width, h3 = icon.height, show = icon.show, offset = icon.offset, text = icon.text; if (show) { - var iconW = -w4 / 2; - var iconH = -h3 / 2; - if (direction5 === "up" || direction5 === "down") { - iconH += offset; + if (text) { + group3["shapeMap"]["".concat(this.type, "-icon")] = group3.addShape("text", { + attrs: __assign({ + x: 0, + y: 0, + fontSize: 12, + fill: "#000", + stroke: "#000", + textBaseline: "middle", + textAlign: "center" + }, icon), + className: "".concat(this.type, "-icon"), + name: "".concat(this.type, "-icon"), + draggable: true + }); + } else { + var iconW = -w4 / 2; + var iconH = -h3 / 2; + if (direction3 === "up" || direction3 === "down") { + iconH += offset; + } + if (direction3 === "left" || direction3 === "right") { + iconW += offset; + } + group3["shapeMap"]["".concat(this.type, "-icon")] = group3.addShape("image", { + attrs: __assign({ + x: iconW, + y: iconH + }, icon), + className: "".concat(this.type, "-icon"), + name: "".concat(this.type, "-icon"), + draggable: true + }); } - if (direction5 === "left" || direction5 === "right") { - iconW += offset; - } - group2.addShape("image", { - attrs: __assign({ - x: iconW, - y: iconH - }, icon), - className: this.type + "-icon", - name: this.type + "-icon", - draggable: true - }); } - this.drawLinkPoints(cfg, group2); + this.drawLinkPoints(cfg, group3); return keyShape; }, - drawLinkPoints: function drawLinkPoints5(cfg, group2) { - var _a6 = this.getOptions(cfg), _b = _a6.linkPoints, linkPoints = _b === void 0 ? {} : _b, defaultDirection = _a6.direction; - var direction5 = cfg.direction || defaultDirection; + drawLinkPoints: function drawLinkPoints5(cfg, group3) { + var _a6 = this.mergeStyle || this.getOptions(cfg), _b = _a6.linkPoints, linkPoints = _b === void 0 ? {} : _b, defaultDirection = _a6.direction; + var direction3 = cfg.direction || defaultDirection; var top = linkPoints.top, left2 = linkPoints.left, right2 = linkPoints.right, bottom = linkPoints.bottom, markSize = linkPoints.size, markR = linkPoints.r, markStyle = __rest(linkPoints, ["top", "left", "right", "bottom", "size", "r"]); - var size2 = this.getSize(cfg); - var len5 = size2[0]; + var size14 = this.getSize(cfg); + var len5 = size14[0]; if (left2) { var leftPos = null; var diffY = len5 * Math.sin(1 / 3 * Math.PI); var r4 = len5 * Math.sin(1 / 3 * Math.PI); - if (direction5 === "up") { + if (direction3 === "up") { leftPos = [-r4, diffY]; - } else if (direction5 === "down") { + } else if (direction3 === "down") { leftPos = [-r4, -diffY]; - } else if (direction5 === "left") { + } else if (direction3 === "left") { leftPos = [-r4, r4 - diffY]; } if (leftPos) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-left"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: leftPos[0], y: leftPos[1], @@ -134373,15 +143197,15 @@ registerNode("triangle", { var rightPos = null; var diffY = len5 * Math.sin(1 / 3 * Math.PI); var r4 = len5 * Math.sin(1 / 3 * Math.PI); - if (direction5 === "up") { + if (direction3 === "up") { rightPos = [r4, diffY]; - } else if (direction5 === "down") { + } else if (direction3 === "down") { rightPos = [r4, -diffY]; - } else if (direction5 === "right") { + } else if (direction3 === "right") { rightPos = [r4, r4 - diffY]; } if (rightPos) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-right"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: rightPos[0], y: rightPos[1], @@ -134396,15 +143220,15 @@ registerNode("triangle", { var topPos = null; var diffY = len5 * Math.sin(1 / 3 * Math.PI); var r4 = len5 * Math.sin(1 / 3 * Math.PI); - if (direction5 === "up") { + if (direction3 === "up") { topPos = [r4 - diffY, -diffY]; - } else if (direction5 === "left") { + } else if (direction3 === "left") { topPos = [r4, -diffY]; - } else if (direction5 === "right") { + } else if (direction3 === "right") { topPos = [-r4, -diffY]; } if (topPos) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-top"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: topPos[0], y: topPos[1], @@ -134419,15 +143243,15 @@ registerNode("triangle", { var bottomPos = null; var diffY = len5 * Math.sin(1 / 3 * Math.PI); var r4 = len5 * Math.sin(1 / 3 * Math.PI); - if (direction5 === "down") { + if (direction3 === "down") { bottomPos = [-r4 + diffY, diffY]; - } else if (direction5 === "left") { + } else if (direction3 === "left") { bottomPos = [r4, diffY]; - } else if (direction5 === "right") { + } else if (direction3 === "right") { bottomPos = [-r4, diffY]; } if (bottomPos) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-bottom"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: bottomPos[0], y: bottomPos[1], @@ -134440,10 +143264,10 @@ registerNode("triangle", { } }, getPath: function getPath11(cfg) { - var defaultDirection = this.getOptions(cfg).direction; - var direction5 = cfg.direction || defaultDirection; - var size2 = this.getSize(cfg); - var len5 = size2[0]; + var defaultDirection = (this.mergeStyle || this.getOptions(cfg)).direction; + var direction3 = cfg.direction || defaultDirection; + var size14 = this.getSize(cfg); + var len5 = size14[0]; var diffY = len5 * Math.sin(1 / 3 * Math.PI); var r4 = len5 * Math.sin(1 / 3 * Math.PI); var path = [ @@ -134452,21 +143276,21 @@ registerNode("triangle", { ["L", r4, diffY], ["Z"] ]; - if (direction5 === "down") { + if (direction3 === "down") { path = [ ["M", -r4, -diffY], ["L", r4, -diffY], ["L", 0, diffY], ["Z"] ]; - } else if (direction5 === "left") { + } else if (direction3 === "left") { path = [ ["M", -r4, r4 - diffY], ["L", r4, -r4], ["L", r4, r4], ["Z"] ]; - } else if (direction5 === "right") { + } else if (direction3 === "right") { path = [ ["M", r4, r4 - diffY], ["L", -r4, r4], @@ -134477,19 +143301,19 @@ registerNode("triangle", { return path; }, getShapeStyle: function getShapeStyle12(cfg) { - var defaultStyle = this.getOptions(cfg).style; + var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style; var strokeStyle = { stroke: cfg.color }; - var style = mix({}, defaultStyle, strokeStyle); + var style = (0, import_util578.mix)({}, defaultStyle, strokeStyle); var path = this.getPath(cfg); var styles = __assign({ path }, style); return styles; }, - update: function update11(cfg, item) { - var group2 = item.getContainer(); + update: function update11(cfg, item, updateType) { + var group3 = item.getContainer(); var defaultStyle = this.getOptions({}).style; var path = this.getPath(cfg); var strokeStyle = { @@ -134497,24 +143321,24 @@ registerNode("triangle", { path }; var keyShape = item.get("keyShape"); - var style = mix({}, defaultStyle, keyShape.attr(), strokeStyle); - style = mix(style, cfg.style); - this.updateShape(cfg, item, style, true); - this.updateLinkPoints(cfg, group2); + var style = (0, import_util578.mix)({}, defaultStyle, keyShape.attr(), strokeStyle); + style = (0, import_util578.mix)(style, cfg.style); + this.updateShape(cfg, item, style, true, updateType); + this.updateLinkPoints(cfg, group3); }, - updateLinkPoints: function updateLinkPoints2(cfg, group2) { + updateLinkPoints: function updateLinkPoints2(cfg, group3) { var _a6 = this.getOptions({}), defaultLinkPoints = _a6.linkPoints, defaultDirection = _a6.direction; - var direction5 = cfg.direction || defaultDirection; - var markLeft = group2.find(function(element) { + var direction3 = cfg.direction || defaultDirection; + var markLeft = group3["shapeMap"]["link-point-left"] || group3.find(function(element) { return element.get("className") === "link-point-left"; }); - var markRight = group2.find(function(element) { + var markRight = group3["shapeMap"]["link-point-right"] || group3.find(function(element) { return element.get("className") === "link-point-right"; }); - var markTop = group2.find(function(element) { + var markTop = group3["shapeMap"]["link-point-top"] || group3.find(function(element) { return element.get("className") === "link-point-top"; }); - var markBottom = group2.find(function(element) { + var markBottom = group3["shapeMap"]["link-point-bottom"] || group3.find(function(element) { return element.get("className") === "link-point-bottom"; }); var currentLinkPoints = defaultLinkPoints; @@ -134522,7 +143346,7 @@ registerNode("triangle", { if (existLinkPoint) { currentLinkPoints = existLinkPoint.attr(); } - var linkPoints = mix({}, currentLinkPoints, cfg.linkPoints); + var linkPoints = (0, import_util578.mix)({}, currentLinkPoints, cfg.linkPoints); var markFill = linkPoints.fill, markStroke = linkPoints.stroke, borderWidth = linkPoints.lineWidth; var markSize = linkPoints.size / 2; if (!markSize) @@ -134533,8 +143357,8 @@ registerNode("triangle", { top: void 0, bottom: void 0 }, left2 = _b.left, right2 = _b.right, top = _b.top, bottom = _b.bottom; - var size2 = this.getSize(cfg); - var len5 = size2[0]; + var size14 = this.getSize(cfg); + var len5 = size14[0]; var styles = { r: markSize, fill: markFill, @@ -134544,17 +143368,18 @@ registerNode("triangle", { var leftPos = null; var diffY = len5 * Math.sin(1 / 3 * Math.PI); var r4 = len5 * Math.sin(1 / 3 * Math.PI); - if (direction5 === "up") { + if (direction3 === "up") { leftPos = [-r4, diffY]; - } else if (direction5 === "down") { + } else if (direction3 === "down") { leftPos = [-r4, -diffY]; - } else if (direction5 === "left") { + } else if (direction3 === "left") { leftPos = [-r4, r4 - diffY]; } if (leftPos) { if (markLeft) { if (!left2 && left2 !== void 0) { markLeft.remove(); + delete group3["shapeMap"]["link-point-left"]; } else { markLeft.attr(__assign(__assign({}, styles), { x: leftPos[0], @@ -134562,7 +143387,7 @@ registerNode("triangle", { })); } } else if (left2) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-left"] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: leftPos[0], y: leftPos[1] @@ -134574,17 +143399,18 @@ registerNode("triangle", { } } var rightPos = null; - if (direction5 === "up") { + if (direction3 === "up") { rightPos = [r4, diffY]; - } else if (direction5 === "down") { + } else if (direction3 === "down") { rightPos = [r4, -diffY]; - } else if (direction5 === "right") { + } else if (direction3 === "right") { rightPos = [r4, r4 - diffY]; } if (rightPos) { if (markRight) { if (!right2 && right2 !== void 0) { markRight.remove(); + delete group3["shapeMap"]["link-point-right"]; } else { markRight.attr(__assign(__assign({}, styles), { x: rightPos[0], @@ -134592,7 +143418,7 @@ registerNode("triangle", { })); } } else if (right2) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-right"] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: rightPos[0], y: rightPos[1] @@ -134604,17 +143430,18 @@ registerNode("triangle", { } } var topPos = null; - if (direction5 === "up") { + if (direction3 === "up") { topPos = [r4 - diffY, -diffY]; - } else if (direction5 === "left") { + } else if (direction3 === "left") { topPos = [r4, -diffY]; - } else if (direction5 === "right") { + } else if (direction3 === "right") { topPos = [-r4, -diffY]; } if (topPos) { if (markTop) { if (!top && top !== void 0) { markTop.remove(); + delete group3["shapeMap"]["link-point-top"]; } else { markTop.attr(__assign(__assign({}, styles), { x: topPos[0], @@ -134622,7 +143449,7 @@ registerNode("triangle", { })); } } else if (top) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-top"] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: topPos[0], y: topPos[1] @@ -134634,17 +143461,18 @@ registerNode("triangle", { } } var bottomPos = null; - if (direction5 === "down") { + if (direction3 === "down") { bottomPos = [-r4 + diffY, diffY]; - } else if (direction5 === "left") { + } else if (direction3 === "left") { bottomPos = [r4, diffY]; - } else if (direction5 === "right") { + } else if (direction3 === "right") { bottomPos = [-r4, diffY]; } if (bottomPos) { if (markBottom) { if (!bottom && bottom !== void 0) { markBottom.remove(); + delete group3["shapeMap"]["link-point-bottom"]; } else { markBottom.attr(__assign(__assign({}, styles), { x: bottomPos[0], @@ -134652,7 +143480,7 @@ registerNode("triangle", { })); } } else if (bottom) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-bottom"] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: bottomPos[0], y: bottomPos[1] @@ -134667,6 +143495,7 @@ registerNode("triangle", { }, "single-node"); // node_modules/@antv/g6-element/es/nodes/modelRect.js +var import_util579 = __toModule(require_lib()); registerNode("modelRect", { options: { size: [185, 70], @@ -134680,14 +143509,16 @@ registerNode("modelRect", { labelCfg: { style: { fill: "#595959", - fontSize: 14 + fontSize: 14, + fontFamily: BaseGlobal.windowFontFamily }, offset: 30 }, descriptionCfg: { style: { fontSize: 12, - fill: "#bfbfbf" + fill: "#bfbfbf", + fontFamily: BaseGlobal.windowFontFamily }, paddingTop: 0 }, @@ -134728,21 +143559,22 @@ registerNode("modelRect", { anchorPoints: [[0, 0.5], [1, 0.5]] }, shapeType: "modelRect", - drawShape: function drawShape16(cfg, group2) { - var _a6 = this.getOptions(cfg).preRect, preRect = _a6 === void 0 ? {} : _a6; + drawShape: function drawShape16(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).preRect, preRect = _a6 === void 0 ? {} : _a6; var style = this.getShapeStyle(cfg); - var size2 = this.getSize(cfg); - var width2 = size2[0]; - var height = size2[1]; - var keyShape = group2.addShape("rect", { + var size14 = this.getSize(cfg); + var width2 = size14[0]; + var height = size14[1]; + var keyShape = group3.addShape("rect", { attrs: style, - className: this.type + "-keyShape", - name: this.type + "-keyShape", + className: "".concat(this.type, "-keyShape"), + name: "".concat(this.type, "-keyShape"), draggable: true }); + group3["shapeMap"]["".concat(this.type, "-keyShape")] = keyShape; var preRectShow = preRect.show, preRectStyle = __rest(preRect, ["show"]); if (preRectShow) { - group2.addShape("rect", { + group3["shapeMap"]["pre-rect"] = group3.addShape("rect", { attrs: __assign({ x: -width2 / 2, y: -height / 2, @@ -134753,57 +143585,91 @@ registerNode("modelRect", { draggable: true }); } - this.drawLogoIcon(cfg, group2); - this.drawStateIcon(cfg, group2); - this.drawLinkPoints(cfg, group2); + this.drawLogoIcon(cfg, group3); + this.drawStateIcon(cfg, group3); + this.drawLinkPoints(cfg, group3); return keyShape; }, - drawLogoIcon: function drawLogoIcon(cfg, group2) { - var _a6 = this.getOptions(cfg).logoIcon, logoIcon = _a6 === void 0 ? {} : _a6; - var size2 = this.getSize(cfg); - var width2 = size2[0]; + drawLogoIcon: function drawLogoIcon(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).logoIcon, logoIcon = _a6 === void 0 ? {} : _a6; + var size14 = this.getSize(cfg); + var width2 = size14[0]; if (logoIcon.show) { - var w4 = logoIcon.width, h3 = logoIcon.height, x6 = logoIcon.x, y5 = logoIcon.y, offset = logoIcon.offset, logoIconStyle = __rest(logoIcon, ["width", "height", "x", "y", "offset"]); - group2.addShape("image", { - attrs: __assign(__assign({}, logoIconStyle), { - x: x6 || -width2 / 2 + w4 + offset, - y: y5 || -h3 / 2, - width: w4, - height: h3 - }), - className: "rect-logo-icon", - name: "rect-logo-icon", - draggable: true - }); + var w4 = logoIcon.width, h3 = logoIcon.height, x6 = logoIcon.x, y5 = logoIcon.y, offset = logoIcon.offset, text = logoIcon.text, logoIconStyle = __rest(logoIcon, ["width", "height", "x", "y", "offset", "text"]); + if (text) { + group3["shapeMap"]["rect-logo-icon"] = group3.addShape("text", { + attrs: __assign({ + x: 0, + y: 0, + fontSize: 12, + fill: "#000", + stroke: "#000", + textBaseline: "middle", + textAlign: "center" + }, logoIconStyle), + className: "rect-logo-icon", + name: "rect-logo-icon", + draggable: true + }); + } else { + group3["shapeMap"]["rect-logo-icon"] = group3.addShape("image", { + attrs: __assign(__assign({}, logoIconStyle), { + x: x6 || -width2 / 2 + w4 + offset, + y: y5 || -h3 / 2, + width: w4, + height: h3 + }), + className: "rect-logo-icon", + name: "rect-logo-icon", + draggable: true + }); + } } }, - drawStateIcon: function drawStateIcon(cfg, group2) { - var _a6 = this.getOptions(cfg).stateIcon, stateIcon = _a6 === void 0 ? {} : _a6; - var size2 = this.getSize(cfg); - var width2 = size2[0]; + drawStateIcon: function drawStateIcon(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).stateIcon, stateIcon = _a6 === void 0 ? {} : _a6; + var size14 = this.getSize(cfg); + var width2 = size14[0]; if (stateIcon.show) { - var w4 = stateIcon.width, h3 = stateIcon.height, x6 = stateIcon.x, y5 = stateIcon.y, offset = stateIcon.offset, iconStyle = __rest(stateIcon, ["width", "height", "x", "y", "offset"]); - group2.addShape("image", { - attrs: __assign(__assign({}, iconStyle), { - x: x6 || width2 / 2 - w4 + offset, - y: y5 || -h3 / 2, - width: w4, - height: h3 - }), - className: "rect-state-icon", - name: "rect-state-icon", - draggable: true - }); + var w4 = stateIcon.width, h3 = stateIcon.height, x6 = stateIcon.x, y5 = stateIcon.y, offset = stateIcon.offset, text = stateIcon.text, iconStyle = __rest(stateIcon, ["width", "height", "x", "y", "offset", "text"]); + if (text) { + group3["shapeMap"]["rect-state-icon"] = group3.addShape("text", { + attrs: __assign({ + x: 0, + y: 0, + fontSize: 12, + fill: "#000", + stroke: "#000", + textBaseline: "middle", + textAlign: "center" + }, iconStyle), + className: "rect-state-icon", + name: "rect-state-icon", + draggable: true + }); + } else { + group3["shapeMap"]["rect-state-icon"] = group3.addShape("image", { + attrs: __assign(__assign({}, iconStyle), { + x: x6 || width2 / 2 - w4 + offset, + y: y5 || -h3 / 2, + width: w4, + height: h3 + }), + className: "rect-state-icon", + name: "rect-state-icon", + draggable: true + }); + } } }, - drawLinkPoints: function drawLinkPoints6(cfg, group2) { - var _a6 = this.getOptions(cfg).linkPoints, linkPoints = _a6 === void 0 ? {} : _a6; + drawLinkPoints: function drawLinkPoints6(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).linkPoints, linkPoints = _a6 === void 0 ? {} : _a6; var top = linkPoints.top, left2 = linkPoints.left, right2 = linkPoints.right, bottom = linkPoints.bottom, markSize = linkPoints.size, markR = linkPoints.r, markStyle = __rest(linkPoints, ["top", "left", "right", "bottom", "size", "r"]); - var size2 = this.getSize(cfg); - var width2 = size2[0]; - var height = size2[1]; + var size14 = this.getSize(cfg); + var width2 = size14[0]; + var height = size14[1]; if (left2) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-left"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: -width2 / 2, y: 0, @@ -134815,7 +143681,7 @@ registerNode("modelRect", { }); } if (right2) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-right"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: width2 / 2, y: 0, @@ -134827,7 +143693,7 @@ registerNode("modelRect", { }); } if (top) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-top"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: 0, y: -height / 2, @@ -134839,7 +143705,7 @@ registerNode("modelRect", { }); } if (bottom) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-bottom"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: 0, y: height / 2, @@ -134851,10 +143717,10 @@ registerNode("modelRect", { }); } }, - drawLabel: function drawLabel3(cfg, group2) { + drawLabel: function drawLabel3(cfg, group3) { var _a6 = this.getOptions(cfg), _b = _a6.labelCfg, labelCfg = _b === void 0 ? {} : _b, _c = _a6.logoIcon, logoIcon = _c === void 0 ? {} : _c, _d = _a6.descriptionCfg, descriptionCfg = _d === void 0 ? {} : _d; - var size2 = this.getSize(cfg); - var width2 = size2[0]; + var size14 = this.getSize(cfg); + var width2 = size14[0]; var label17 = null; var show = logoIcon.show, w4 = logoIcon.width; var offsetX = -width2 / 2 + labelCfg.offset; @@ -134863,8 +143729,8 @@ registerNode("modelRect", { } var fontStyle = labelCfg.style; var descriptionStyle = descriptionCfg.style, descriptionPaddingTop = descriptionCfg.paddingTop; - if (is_string_default(cfg.description)) { - label17 = group2.addShape("text", { + if ((0, import_util579.isString)(cfg.description)) { + label17 = group3.addShape("text", { attrs: __assign(__assign({}, fontStyle), { x: offsetX, y: -5, @@ -134872,9 +143738,11 @@ registerNode("modelRect", { }), className: "text-shape", name: "text-shape", - draggable: true + draggable: true, + labelRelated: true }); - group2.addShape("text", { + group3["shapeMap"]["text-shape"] = label17; + group3["shapeMap"]["rect-description"] = group3.addShape("text", { attrs: __assign(__assign({}, descriptionStyle), { x: offsetX, y: 17 + (descriptionPaddingTop || 0), @@ -134882,10 +143750,11 @@ registerNode("modelRect", { }), className: "rect-description", name: "rect-description", - draggable: true + draggable: true, + labelRelated: true }); } else { - label17 = group2.addShape("text", { + label17 = group3.addShape("text", { attrs: __assign(__assign({}, fontStyle), { x: offsetX, y: 7, @@ -134893,20 +143762,22 @@ registerNode("modelRect", { }), className: "text-shape", name: "text-shape", - draggable: true + draggable: true, + labelRelated: true }); + group3["shapeMap"]["text-shape"] = label17; } return label17; }, getShapeStyle: function getShapeStyle13(cfg) { - var defaultStyle = this.getOptions(cfg).style; + var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style; var strokeStyle = { stroke: cfg.color }; - var style = mix({}, defaultStyle, strokeStyle); - var size2 = this.getSize(cfg); - var width2 = style.width || size2[0]; - var height = style.height || size2[1]; + var style = (0, import_util579.mix)({}, defaultStyle, strokeStyle); + var size14 = this.getSize(cfg); + var width2 = style.width || size14[0]; + var height = style.height || size14[1]; var styles = __assign({ x: -width2 / 2, y: -height / 2, @@ -134916,10 +143787,10 @@ registerNode("modelRect", { return styles; }, update: function update12(cfg, item) { - var _a6 = this.getOptions(cfg), _b = _a6.style, style = _b === void 0 ? {} : _b, _c = _a6.labelCfg, labelCfg = _c === void 0 ? {} : _c, _d = _a6.descriptionCfg, descriptionCfg = _d === void 0 ? {} : _d; - var size2 = this.getSize(cfg); - var width2 = size2[0]; - var height = size2[1]; + var _a6 = this.mergeStyle || this.getOptions(cfg), _b = _a6.style, style = _b === void 0 ? {} : _b, _c = _a6.labelCfg, labelCfg = _c === void 0 ? {} : _c, _d = _a6.descriptionCfg, descriptionCfg = _d === void 0 ? {} : _d; + var size14 = this.getSize(cfg); + var width2 = size14[0]; + var height = size14[1]; var keyShape = item.get("keyShape"); keyShape.attr(__assign(__assign({}, style), { x: -width2 / 2, @@ -134927,12 +143798,12 @@ registerNode("modelRect", { width: width2, height })); - var group2 = item.getContainer(); - var logoIconShape = group2.find(function(element) { + var group3 = item.getContainer(); + var logoIconShape = group3["shapeMap"]["rect-logo-icon"] || group3.find(function(element) { return element.get("className") === "rect-logo-icon"; }); var currentLogoIconAttr = logoIconShape ? logoIconShape.attr() : {}; - var logoIcon = mix({}, currentLogoIconAttr, cfg.logoIcon); + var logoIcon = (0, import_util579.mix)({}, currentLogoIconAttr, cfg.logoIcon); var w4 = logoIcon.width; if (w4 === void 0) { w4 = this.options.logoIcon.width; @@ -134943,15 +143814,15 @@ registerNode("modelRect", { if (!show && show !== void 0) { offsetX = -width2 / 2 + offset; } - var label17 = group2.find(function(element) { + var label17 = group3["shapeMap"]["node-label"] || group3.find(function(element) { return element.get("className") === "node-label"; }); - var description = group2.find(function(element) { + var description = group3["shapeMap"]["rect-description"] || group3.find(function(element) { return element.get("className") === "rect-description"; }); if (cfg.label) { if (!label17) { - group2.addShape("text", { + group3["shapeMap"]["node-label"] = group3.addShape("text", { attrs: __assign(__assign({}, labelCfg.style), { x: offsetX, y: cfg.description ? -5 : 7, @@ -134959,15 +143830,16 @@ registerNode("modelRect", { }), className: "node-label", name: "node-label", - draggable: true + draggable: true, + labelRelated: true }); } else { var cfgStyle = cfg.labelCfg ? cfg.labelCfg.style : {}; - var labelStyle = mix({}, label17.attr(), cfgStyle); + var labelStyle = (0, import_util579.mix)({}, label17.attr(), cfgStyle); if (cfg.label) labelStyle.text = cfg.label; labelStyle.x = offsetX; - if (is_string_default(cfg.description)) + if ((0, import_util579.isString)(cfg.description)) labelStyle.y = -5; if (description) { description.resetMatrix(); @@ -134979,10 +143851,10 @@ registerNode("modelRect", { label17.attr(labelStyle); } } - if (is_string_default(cfg.description)) { + if ((0, import_util579.isString)(cfg.description)) { var paddingTop = descriptionCfg.paddingTop; if (!description) { - group2.addShape("text", { + group3["shapeMap"]["rect-description"] = group3.addShape("text", { attrs: __assign(__assign({}, descriptionCfg.style), { x: offsetX, y: 17 + (paddingTop || 0), @@ -134990,12 +143862,13 @@ registerNode("modelRect", { }), className: "rect-description", name: "rect-description", - draggable: true + draggable: true, + labelRelated: true }); } else { var cfgStyle = cfg.descriptionCfg ? cfg.descriptionCfg.style : {}; - var descriptionStyle = mix({}, description.attr(), cfgStyle); - if (is_string_default(cfg.description)) + var descriptionStyle = (0, import_util579.mix)({}, description.attr(), cfgStyle); + if ((0, import_util579.isString)(cfg.description)) descriptionStyle.text = cfg.description; descriptionStyle.x = offsetX; description.resetMatrix(); @@ -135004,20 +143877,21 @@ registerNode("modelRect", { })); } } - var preRectShape = group2.find(function(element) { + var preRectShape = group3["shapeMap"]["pre-rect"] || group3.find(function(element) { return element.get("className") === "pre-rect"; }); - if (preRectShape) { - var preRect = mix({}, preRectShape.attr(), cfg.preRect); + if (preRectShape && !preRectShape.destroyed) { + var preRect = (0, import_util579.mix)({}, preRectShape.attr(), cfg.preRect); preRectShape.attr(__assign(__assign({}, preRect), { x: -width2 / 2, y: -height / 2, height })); } - if (logoIconShape) { + if (logoIconShape && !logoIconShape.destroyed) { if (!show && show !== void 0) { logoIconShape.remove(); + delete group3["shapeMap"]["pre-rect"]; } else { var logoW = logoIcon.width, h3 = logoIcon.height, x6 = logoIcon.x, y5 = logoIcon.y, logoOffset = logoIcon.offset, logoIconStyle = __rest(logoIcon, ["width", "height", "x", "y", "offset"]); logoIconShape.attr(__assign(__assign({}, logoIconStyle), { @@ -135028,16 +143902,17 @@ registerNode("modelRect", { })); } } else if (show) { - this.drawLogoIcon(cfg, group2); + this.drawLogoIcon(cfg, group3); } - var stateIconShape = group2.find(function(element) { + var stateIconShape = group3["shapeMap"]["rect-state-icon"] || group3.find(function(element) { return element.get("className") === "rect-state-icon"; }); var currentStateIconAttr = stateIconShape ? stateIconShape.attr() : {}; - var stateIcon = mix({}, currentStateIconAttr, cfg.stateIcon); + var stateIcon = (0, import_util579.mix)({}, currentStateIconAttr, cfg.stateIcon); if (stateIconShape) { if (!stateIcon.show && stateIcon.show !== void 0) { stateIconShape.remove(); + delete group3["shapeMap"]["rect-state-icon"]; } var stateW = stateIcon.width, h3 = stateIcon.height, x6 = stateIcon.x, y5 = stateIcon.y, stateOffset = stateIcon.offset, stateIconStyle = __rest(stateIcon, ["width", "height", "x", "y", "offset"]); stateIconShape.attr(__assign(__assign({}, stateIconStyle), { @@ -135047,13 +143922,14 @@ registerNode("modelRect", { height: h3 })); } else if (stateIcon.show) { - this.drawStateIcon(cfg, group2); + this.drawStateIcon(cfg, group3); } - this.updateLinkPoints(cfg, group2); + this.updateLinkPoints(cfg, group3); } }, "single-node"); // node_modules/@antv/g6-element/es/nodes/star.js +var import_util580 = __toModule(require_lib()); registerNode("star", { options: { size: 60, @@ -135065,7 +143941,8 @@ registerNode("star", { labelCfg: { style: { fill: BaseGlobal.nodeLabel.style.fill, - fontSize: BaseGlobal.nodeLabel.style.fontSize + fontSize: BaseGlobal.nodeLabel.style.fontSize, + fontFamily: BaseGlobal.windowFontFamily } }, linkPoints: { @@ -135088,39 +143965,57 @@ registerNode("star", { }, shapeType: "star", labelPosition: "center", - drawShape: function drawShape17(cfg, group2) { - var _a6 = this.getOptions(cfg).icon, icon = _a6 === void 0 ? {} : _a6; + drawShape: function drawShape17(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).icon, icon = _a6 === void 0 ? {} : _a6; var style = this.getShapeStyle(cfg); - var keyShape = group2.addShape("path", { + var keyShape = group3.addShape("path", { attrs: style, - className: this.type + "-keyShape", - name: this.type + "-keyShape", + className: "".concat(this.type, "-keyShape"), + name: "".concat(this.type, "-keyShape"), draggable: true }); - var w4 = icon.width, h3 = icon.height, show = icon.show; + group3["shapeMap"]["".concat(this.type, "-keyShape")] = keyShape; + var w4 = icon.width, h3 = icon.height, show = icon.show, text = icon.text; if (show) { - var image = group2.addShape("image", { - attrs: __assign({ - x: -w4 / 2, - y: -h3 / 2 - }, icon), - className: this.type + "-icon", - name: this.type + "-icon", - draggable: true - }); + if (text) { + group3["shapeMap"]["".concat(this.type, "-icon")] = group3.addShape("text", { + attrs: __assign({ + x: 0, + y: 0, + fontSize: 12, + fill: "#000", + stroke: "#000", + textBaseline: "middle", + textAlign: "center" + }, icon), + className: "".concat(this.type, "-icon"), + name: "".concat(this.type, "-icon"), + draggable: true + }); + } else { + group3["shapeMap"]["".concat(this.type, "-icon")] = group3.addShape("image", { + attrs: __assign({ + x: -w4 / 2, + y: -h3 / 2 + }, icon), + className: "".concat(this.type, "-icon"), + name: "".concat(this.type, "-icon"), + draggable: true + }); + } } - this.drawLinkPoints(cfg, group2); + this.drawLinkPoints(cfg, group3); return keyShape; }, - drawLinkPoints: function drawLinkPoints7(cfg, group2) { - var _a6 = this.getOptions(cfg).linkPoints, linkPoints = _a6 === void 0 ? {} : _a6; + drawLinkPoints: function drawLinkPoints7(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).linkPoints, linkPoints = _a6 === void 0 ? {} : _a6; var top = linkPoints.top, left2 = linkPoints.left, right2 = linkPoints.right, leftBottom = linkPoints.leftBottom, rightBottom = linkPoints.rightBottom, markSize = linkPoints.size, markR = linkPoints.r, markStyle = __rest(linkPoints, ["top", "left", "right", "leftBottom", "rightBottom", "size", "r"]); - var size2 = this.getSize(cfg); - var outerR = size2[0]; + var size14 = this.getSize(cfg); + var outerR = size14[0]; if (right2) { var x1 = Math.cos((18 + 72 * 0) / 180 * Math.PI) * outerR; var y1 = Math.sin((18 + 72 * 0) / 180 * Math.PI) * outerR; - group2.addShape("circle", { + group3["shapeMap"]["link-point-right"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: x1, y: -y1, @@ -135133,7 +144028,7 @@ registerNode("star", { if (top) { var x1 = Math.cos((18 + 72 * 1) / 180 * Math.PI) * outerR; var y1 = Math.sin((18 + 72 * 1) / 180 * Math.PI) * outerR; - group2.addShape("circle", { + group3["shapeMap"]["link-point-top"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: x1, y: -y1, @@ -135146,7 +144041,7 @@ registerNode("star", { if (left2) { var x1 = Math.cos((18 + 72 * 2) / 180 * Math.PI) * outerR; var y1 = Math.sin((18 + 72 * 2) / 180 * Math.PI) * outerR; - group2.addShape("circle", { + group3["shapeMap"]["link-point-left"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: x1, y: -y1, @@ -135159,7 +144054,7 @@ registerNode("star", { if (leftBottom) { var x1 = Math.cos((18 + 72 * 3) / 180 * Math.PI) * outerR; var y1 = Math.sin((18 + 72 * 3) / 180 * Math.PI) * outerR; - group2.addShape("circle", { + group3["shapeMap"]["link-point-bottom"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: x1, y: -y1, @@ -135172,7 +144067,7 @@ registerNode("star", { if (rightBottom) { var x1 = Math.cos((18 + 72 * 4) / 180 * Math.PI) * outerR; var y1 = Math.sin((18 + 72 * 4) / 180 * Math.PI) * outerR; - group2.addShape("circle", { + group3["shapeMap"]["link-point-right-bottom"] = group3.addShape("circle", { attrs: __assign(__assign({}, markStyle), { x: x1, y: -y1, @@ -135184,8 +144079,8 @@ registerNode("star", { } }, getPath: function getPath12(cfg) { - var size2 = this.getSize(cfg); - var outerR = size2[0]; + var size14 = this.getSize(cfg); + var outerR = size14[0]; var defaultInnerR = outerR * 3 / 8; var innerR = cfg.innerR || defaultInnerR; var path = []; @@ -135205,19 +144100,19 @@ registerNode("star", { return path; }, getShapeStyle: function getShapeStyle14(cfg) { - var defaultStyle = this.getOptions(cfg).style; + var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style; var strokeStyle = { stroke: cfg.color }; - var style = mix({}, defaultStyle, strokeStyle); + var style = (0, import_util580.mix)({}, defaultStyle, strokeStyle); var path = this.getPath(cfg); var styles = __assign({ path }, style); return styles; }, - update: function update13(cfg, item) { - var group2 = item.getContainer(); + update: function update13(cfg, item, updateType) { + var group3 = item.getContainer(); var defaultStyle = this.getOptions({}).style; var path = this.getPath(cfg); var strokeStyle = { @@ -135225,26 +144120,26 @@ registerNode("star", { path }; var keyShape = item.get("keyShape"); - var style = mix({}, defaultStyle, keyShape.attr(), strokeStyle); - style = mix(style, cfg.style); - this.updateShape(cfg, item, style, true); - this.updateLinkPoints(cfg, group2); + var style = (0, import_util580.mix)({}, defaultStyle, keyShape.attr(), strokeStyle); + style = (0, import_util580.mix)(style, cfg.style); + this.updateShape(cfg, item, style, true, updateType); + this.updateLinkPoints(cfg, group3); }, - updateLinkPoints: function updateLinkPoints3(cfg, group2) { + updateLinkPoints: function updateLinkPoints3(cfg, group3) { var defaultLinkPoints = this.getOptions({}).linkPoints; - var markLeft = group2.find(function(element) { + var markLeft = group3["shapeMap"]["link-point-left"] || group3.find(function(element) { return element.get("className") === "link-point-left"; }); - var markRight = group2.find(function(element) { + var markRight = group3["shapeMap"]["link-point-right"] || group3.find(function(element) { return element.get("className") === "link-point-right"; }); - var markTop = group2.find(function(element) { + var markTop = group3["shapeMap"]["link-point-top"] || group3.find(function(element) { return element.get("className") === "link-point-top"; }); - var markLeftBottom = group2.find(function(element) { + var markLeftBottom = group3["shapeMap"]["link-point-left-bottom"] || group3.find(function(element) { return element.get("className") === "link-point-left-bottom"; }); - var markRightBottom = group2.find(function(element) { + var markRightBottom = group3["shapeMap"]["link-point-left-bottom"] || group3.find(function(element) { return element.get("className") === "link-point-right-bottom"; }); var currentLinkPoints = defaultLinkPoints; @@ -135252,7 +144147,7 @@ registerNode("star", { if (existLinkPoint) { currentLinkPoints = existLinkPoint.attr(); } - var linkPoints = mix({}, currentLinkPoints, cfg.linkPoints); + var linkPoints = (0, import_util580.mix)({}, currentLinkPoints, cfg.linkPoints); var markFill = linkPoints.fill, markStroke = linkPoints.stroke, borderWidth = linkPoints.lineWidth; var markSize = linkPoints.size / 2; if (!markSize) @@ -135264,8 +144159,8 @@ registerNode("star", { leftBottom: void 0, rightBottom: void 0 }, left2 = _a6.left, right2 = _a6.right, top = _a6.top, leftBottom = _a6.leftBottom, rightBottom = _a6.rightBottom; - var size2 = this.getSize(cfg); - var outerR = size2[0]; + var size14 = this.getSize(cfg); + var outerR = size14[0]; var styles = { r: markSize, fill: markFill, @@ -135277,6 +144172,7 @@ registerNode("star", { if (markRight) { if (!right2 && right2 !== void 0) { markRight.remove(); + delete group3["shapeMap"]["link-point-right"]; } else { markRight.attr(__assign(__assign({}, styles), { x: x6, @@ -135284,7 +144180,7 @@ registerNode("star", { })); } } else if (right2) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-right"] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: x6, y: -y5 @@ -135299,6 +144195,7 @@ registerNode("star", { if (markTop) { if (!top && top !== void 0) { markTop.remove(); + delete group3["shapeMap"]["link-point-top"]; } else { markTop.attr(__assign(__assign({}, styles), { x: x6, @@ -135306,7 +144203,7 @@ registerNode("star", { })); } } else if (top) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-top"] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: x6, y: -y5 @@ -135321,6 +144218,7 @@ registerNode("star", { if (markLeft) { if (!left2 && left2 !== void 0) { markLeft.remove(); + delete group3["shapeMap"]["link-point-left"]; } else { markLeft.attr(__assign(__assign({}, styles), { x: x6, @@ -135328,7 +144226,7 @@ registerNode("star", { })); } } else if (left2) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-left"] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: x6, y: -y5 @@ -135343,6 +144241,7 @@ registerNode("star", { if (markLeftBottom) { if (!leftBottom && leftBottom !== void 0) { markLeftBottom.remove(); + delete group3["shapeMap"]["link-point-left-bottom"]; } else { markLeftBottom.attr(__assign(__assign({}, styles), { x: x6, @@ -135350,7 +144249,7 @@ registerNode("star", { })); } } else if (leftBottom) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-left-bottom"] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: x6, y: -y5 @@ -135365,6 +144264,7 @@ registerNode("star", { if (markRightBottom) { if (!rightBottom && rightBottom !== void 0) { markLeftBottom.remove(); + delete group3["shapeMap"]["link-point-right-bottom"]; } else { markRightBottom.attr(__assign(__assign({}, styles), { x: x6, @@ -135372,7 +144272,7 @@ registerNode("star", { })); } } else if (rightBottom) { - group2.addShape("circle", { + group3["shapeMap"]["link-point-right-bottom"] = group3.addShape("circle", { attrs: __assign(__assign({}, styles), { x: x6, y: -y5 @@ -135385,6 +144285,171 @@ registerNode("star", { } }, "single-node"); +// node_modules/@antv/g6-element/es/nodes/donut.js +var import_util581 = __toModule(require_lib()); +var defaultSubjectColors2 = util_default.defaultSubjectColors; +registerNode("donut", { + options: { + size: BaseGlobal.defaultNode.size, + style: { + x: 0, + y: 0, + stroke: BaseGlobal.defaultNode.style.stroke, + fill: BaseGlobal.defaultNode.style.fill, + lineWidth: BaseGlobal.defaultNode.style.lineWidth + }, + labelCfg: { + style: { + fill: BaseGlobal.nodeLabel.style.fill, + fontSize: BaseGlobal.nodeLabel.style.fontSize, + fontFamily: BaseGlobal.windowFontFamily + } + }, + linkPoints: { + top: false, + right: false, + bottom: false, + left: false, + size: BaseGlobal.defaultNode.linkPoints.size, + lineWidth: BaseGlobal.defaultNode.linkPoints.lineWidth, + fill: BaseGlobal.defaultNode.linkPoints.fill, + stroke: BaseGlobal.defaultNode.linkPoints.stroke + }, + icon: { + show: false, + img: "https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg", + width: 20, + height: 20 + }, + stateStyles: __assign({}, BaseGlobal.nodeStateStyles) + }, + shapeType: "circle", + labelPosition: "center", + drawShape: function drawShape18(cfg, group3) { + var _a6 = (this.mergeStyle || this.getOptions(cfg)).icon, defaultIcon = _a6 === void 0 ? {} : _a6; + var style = this.getShapeStyle(cfg); + var icon = (0, import_util581.deepMix)({}, defaultIcon, cfg.icon); + var keyShape = group3.addShape("circle", { + attrs: style, + className: "".concat(this.type, "-keyShape"), + draggable: true, + name: "".concat(this.type, "-keyShape") + }); + group3["shapeMap"]["".concat(this.type, "-keyShape")] = keyShape; + var width2 = icon.width, height = icon.height, show = icon.show, text = icon.text; + if (show) { + if (text) { + group3["shapeMap"]["".concat(this.type, "-icon")] = group3.addShape("text", { + attrs: __assign({ + x: 0, + y: 0, + fontSize: 12, + fill: "#000", + stroke: "#000", + textBaseline: "middle", + textAlign: "center" + }, icon), + className: "".concat(this.type, "-icon"), + name: "".concat(this.type, "-icon"), + draggable: true + }); + } else { + group3["shapeMap"]["".concat(this.type, "-icon")] = group3.addShape("image", { + attrs: __assign({ + x: -width2 / 2, + y: -height / 2 + }, icon), + className: "".concat(this.type, "-icon"), + name: "".concat(this.type, "-icon"), + draggable: true + }); + } + } + var donutR = keyShape.attr("r"); + var innerR = 0.6 * donutR; + var arcR = (donutR + innerR) / 2; + var _b = cfg, _c = _b.donutAttrs, donutAttrs = _c === void 0 ? {} : _c, _d = _b.donutColorMap, donutColorMap = _d === void 0 ? {} : _d; + var attrNum = Object.keys(donutAttrs).length; + if (donutAttrs && attrNum > 1) { + var attrs_1 = []; + var totalValue_1 = 0; + Object.keys(donutAttrs).forEach(function(name) { + var value2 = donutAttrs[name] || 0; + if (!(0, import_util581.isNumber)(value2)) + return; + attrs_1.push({ + key: name, + value: value2, + color: donutColorMap[name] + }); + totalValue_1 += value2; + }); + if (totalValue_1) { + var lineWidth_1 = donutR - innerR; + if (attrNum === 1) { + group3["shapeMap"]["fan-shape-0"] = group3.addShape("circle", { + attrs: { + r: arcR, + x: 0, + y: 0, + stroke: attrs_1[0].color || defaultSubjectColors2[0], + lineWidth: lineWidth_1 + }, + name: "fan-shape-0" + }); + return; + } + var arcBegin_1 = [arcR, 0]; + var beginAngle_1 = 0; + attrs_1.forEach(function(attr, i4) { + var percent2 = attr.value / totalValue_1; + if (percent2 < 1e-3) + return; + if (percent2 > 0.999) + percent2 = 1; + if (percent2 === 1) { + group3["shapeMap"]["fan-shape-".concat(i4)] = group3.addShape("circle", { + attrs: { + r: arcR, + x: 0, + y: 0, + stroke: attr.color || defaultSubjectColors2[i4 % defaultSubjectColors2.length], + lineWidth: lineWidth_1 + }, + name: "fan-shape-".concat(i4) + }); + return; + } + attr.percent = percent2; + attr.angle = percent2 * Math.PI * 2; + attr.beginAgnle = beginAngle_1; + beginAngle_1 += attr.angle; + attr.endAngle = beginAngle_1; + attr.arcBegin = arcBegin_1; + attr.arcEnd = [arcR * Math.cos(attr.endAngle), -arcR * Math.sin(attr.endAngle)]; + var isBig = attr.angle > Math.PI ? 1 : 0; + var path = [["M", attr.arcBegin[0], attr.arcBegin[1]], ["A", arcR, arcR, 0, isBig, 0, attr.arcEnd[0], attr.arcEnd[1]], ["L", attr.arcEnd[0], attr.arcEnd[1]]]; + group3["shapeMap"]["fan-shape-".concat(i4)] = group3.addShape("path", { + attrs: { + path, + lineWidth: lineWidth_1, + stroke: attr.color || defaultSubjectColors2[i4 % defaultSubjectColors2.length] + }, + name: "fan-shape-".concat(i4) + }); + arcBegin_1 = attr.arcEnd; + }); + } + } + this.drawLinkPoints(cfg, group3); + return keyShape; + }, + update: void 0 +}, "circle"); + +// node_modules/@antv/g6-element/es/edges/polyline.js +var import_util583 = __toModule(require_lib()); + // node_modules/@antv/g6-element/es/edges/polyline-util.js var getBBoxFromPoint = function getBBoxFromPoint2(point2) { var x6 = point2.x, y5 = point2.y; @@ -135432,7 +144497,7 @@ var filterConnectPoints = function filterConnectPoints2(points) { var pointsLength = points.length; for (var i4 = pointsLength - 1; i4 >= 0; i4--) { var p4 = points[i4]; - p4.id = p4.x + "|||" + p4.y; + p4.id = "".concat(p4.x, "|||").concat(p4.y); pointsMap[p4.id] = p4; result.push(p4); } @@ -135698,21 +144763,21 @@ var getBorderRadiusPoints = function getBorderRadiusPoints2(p0, p1, p22, r4) { var getPathWithBorderRadiusByPolyline = function getPathWithBorderRadiusByPolyline2(points, borderRadius) { var pathSegments = []; var startPoint = points[0]; - pathSegments.push("M" + startPoint.x + " " + startPoint.y); + pathSegments.push("M".concat(startPoint.x, " ").concat(startPoint.y)); points.forEach(function(p4, i4) { var p1 = points[i4 + 1]; var p22 = points[i4 + 2]; if (p1 && p22) { if (isBending(p4, p1, p22)) { var _a6 = getBorderRadiusPoints(p4, p1, p22, borderRadius), ps = _a6[0], pt = _a6[1]; - pathSegments.push("L" + ps.x + " " + ps.y); - pathSegments.push("Q" + p1.x + " " + p1.y + " " + pt.x + " " + pt.y); - pathSegments.push("L" + pt.x + " " + pt.y); + pathSegments.push("L".concat(ps.x, " ").concat(ps.y)); + pathSegments.push("Q".concat(p1.x, " ").concat(p1.y, " ").concat(pt.x, " ").concat(pt.y)); + pathSegments.push("L".concat(pt.x, " ").concat(pt.y)); } else { - pathSegments.push("L" + p1.x + " " + p1.y); + pathSegments.push("L".concat(p1.x, " ").concat(p1.y)); } } else if (p1) { - pathSegments.push("L" + p1.x + " " + p1.y); + pathSegments.push("L".concat(p1.x, " ").concat(p1.y)); } }); return pathSegments.join(""); @@ -135732,10 +144797,24 @@ var getPolylinePoints = function getPolylinePoints2(start, end2, sNode, tNode, o if (!tNode || !tNode.getType()) { tBBox = getBBoxFromPoint(end2); } else if (tNode.getType() === "combo") { - var tNodeKeyShape = tNode.getKeyShape(); - tBBox = tNodeKeyShape.getCanvasBBox() || getBBoxFromPoint(end2); - tBBox.centerX = (tBBox.minX + tBBox.maxX) / 2; - tBBox.centerY = (tBBox.minY + tBBox.maxY) / 2; + var tKeyShapeBBox = tNode.getKeyShape().getBBox(); + if (tKeyShapeBBox) { + var _a6 = tNode.getModel(), tx = _a6.x, ty = _a6.y; + tBBox = { + x: tx, + y: ty, + width: tKeyShapeBBox.width, + height: tKeyShapeBBox.height, + minX: tKeyShapeBBox.minX + tx, + maxX: tKeyShapeBBox.maxX + tx, + minY: tKeyShapeBBox.minY + ty, + maxY: tKeyShapeBBox.maxY + ty + }; + tBBox.centerX = (tBBox.minX + tBBox.maxX) / 2; + tBBox.centerY = (tBBox.minY + tBBox.maxY) / 2; + } else { + tBBox = getBBoxFromPoint(end2); + } } else { tBBox = tNode && tNode.getBBox(); } @@ -135778,6 +144857,7 @@ var getPolylinePoints = function getPolylinePoints2(start, end2, sNode, tNode, o }; // node_modules/@antv/g6-element/es/edges/router.js +var import_util582 = __toModule(require_lib()); var manhattanDist = function manhattanDist2(p1, p22) { return Math.abs(p1.x - p22.x) + Math.abs(p1.y - p22.y); }; @@ -135859,18 +144939,18 @@ var pos2GridIx = function pos2GridIx2(pos, gridSize) { return gridIx < 0 ? 0 : sign * gridIx; }; var getObstacleMap = function getObstacleMap2(items, gridSize, offset) { - var map6 = {}; + var map23 = {}; items.forEach(function(item) { if (!item) return; var bbox = getExpandedBBox(item.getBBox(), offset); for (var x6 = pos2GridIx(bbox.minX, gridSize); x6 <= pos2GridIx(bbox.maxX, gridSize); x6 += 1) { for (var y5 = pos2GridIx(bbox.minY, gridSize); y5 <= pos2GridIx(bbox.maxY, gridSize); y5 += 1) { - map6[x6 + "|||" + y5] = true; + map23["".concat(x6, "|||").concat(y5)] = true; } } }); - return map6; + return map23; }; var getDirectionAngle = function getDirectionAngle2(p1, p22) { var deltaX = p22.x - p1.x; @@ -135885,14 +144965,14 @@ var getAngleDiff = function getAngleDiff2(angle1, angle22) { return directionChange > Math.PI ? 2 * Math.PI - directionChange : directionChange; }; var estimateCost = function estimateCost2(from, endPoints, distFunc) { - var min7 = Infinity; + var min13 = Infinity; for (var i4 = 0, len5 = endPoints.length; i4 < len5; i4++) { var cost = distFunc(from, endPoints[i4]); - if (cost < min7) { - min7 = cost; + if (cost < min13) { + min13 = cost; } } - return min7; + return min13; }; var getBoxPoints2 = function getBoxPoints3(point2, oriPoint, node, anotherPoint, cfg) { var points = []; @@ -135941,7 +145021,7 @@ var getBoxPoints2 = function getBoxPoints3(point2, oriPoint, node, anotherPoint, y: point2.y + dir.stepY * expandBBox.height }, boundLine[0], boundLine[1]); if (insterctP_1 && !isSegmentCrossingBBox(point2, insterctP_1, bbox)) { - insterctP_1.id = insterctP_1.x + "|||" + insterctP_1.y; + insterctP_1.id = "".concat(insterctP_1.x, "|||").concat(insterctP_1.y); points.push(insterctP_1); } } @@ -135949,7 +145029,7 @@ var getBoxPoints2 = function getBoxPoints3(point2, oriPoint, node, anotherPoint, return points; } var insterctP = getExpandedBBoxPoint(expandBBox, point2, anotherPoint); - insterctP.id = insterctP.x + "|||" + insterctP.y; + insterctP.id = "".concat(insterctP.x, "|||").concat(insterctP.y); return [insterctP]; }; var getDirectionChange = function getDirectionChange2(current, neighbor, cameFrom, scaleStartPoint) { @@ -136018,10 +145098,10 @@ var getControlPoints12 = function getControlPoints13(current, cameFrom, scaleSta var pathFinder3 = function pathFinder4(startPoint, endPoint, startNode, endNode, routerCfg) { if (isNaN(startPoint.x) || isNaN(endPoint.x)) return []; - var cfg = deep_mix_default(defaultCfg, routerCfg); + var cfg = (0, import_util582.deepMix)(defaultCfg, routerCfg); cfg.obstacles = cfg.obstacles || []; var gridSize = cfg.gridSize; - var map6 = getObstacleMap(cfg.obstacles.concat([startNode, endNode]), gridSize, cfg.offset); + var map23 = getObstacleMap(cfg.obstacles.concat([startNode, endNode]), gridSize, cfg.offset); var scaleStartPoint = { x: pos2GridIx(startPoint.x, gridSize), y: pos2GridIx(startPoint.y, gridSize) @@ -136030,15 +145110,15 @@ var pathFinder3 = function pathFinder4(startPoint, endPoint, startNode, endNode, x: pos2GridIx(endPoint.x, gridSize), y: pos2GridIx(endPoint.y, gridSize) }; - startPoint.id = scaleStartPoint.x + "|||" + scaleStartPoint.y; - endPoint.id = scaleEndPoint.x + "|||" + scaleEndPoint.y; + startPoint.id = "".concat(scaleStartPoint.x, "|||").concat(scaleStartPoint.y); + endPoint.id = "".concat(scaleEndPoint.x, "|||").concat(scaleEndPoint.y); var startPoints = getBoxPoints2(scaleStartPoint, startPoint, startNode, scaleEndPoint, cfg); var endPoints = getBoxPoints2(scaleEndPoint, endPoint, endNode, scaleStartPoint, cfg); startPoints.forEach(function(point2) { - delete map6[point2.id]; + delete map23[point2.id]; }); endPoints.forEach(function(point2) { - delete map6[point2.id]; + delete map23[point2.id]; }); var openSet = {}; var closedSet = {}; @@ -136053,7 +145133,7 @@ var pathFinder3 = function pathFinder4(startPoint, endPoint, startNode, endNode, } var remainLoops = cfg.maximumLoops; var penalties = cfg.penalties; - var current, curCost, direction5, neighbor, neighborCost, costFromStart, directionChange; + var current, curCost, direction3, neighbor, neighborCost, costFromStart, directionChange; while (Object.keys(openSet).length > 0 && remainLoops > 0) { current = void 0; curCost = Infinity; @@ -136074,18 +145154,18 @@ var pathFinder3 = function pathFinder4(startPoint, endPoint, startNode, endNode, delete openSet[current.id]; closedSet[current.id] = true; for (var i4 = 0; i4 < cfg.directions.length; i4++) { - direction5 = cfg.directions[i4]; + direction3 = cfg.directions[i4]; neighbor = { - x: current.x + direction5.stepX, - y: current.y + direction5.stepY, - id: Math.round(current.x) + direction5.stepX + "|||" + (Math.round(current.y) + direction5.stepY) + x: current.x + direction3.stepX, + y: current.y + direction3.stepY, + id: "".concat(Math.round(current.x) + direction3.stepX, "|||").concat(Math.round(current.y) + direction3.stepY) }; if (closedSet[neighbor.id]) continue; directionChange = getDirectionChange(current, neighbor, cameFrom, scaleStartPoint); if (directionChange > cfg.maxAllowedDirectionChange) continue; - if (map6[neighbor.id]) + if (map23[neighbor.id]) continue; if (!openSet[neighbor.id]) { openSet[neighbor.id] = neighbor; @@ -136120,7 +145200,8 @@ registerEdge("polyline", { labelCfg: { style: { fill: BaseGlobal.edgeLabel.style.fill, - fontSize: BaseGlobal.edgeLabel.style.fontSize + fontSize: BaseGlobal.edgeLabel.style.fontSize, + fontFamily: BaseGlobal.windowFontFamily } }, routeCfg: { @@ -136133,15 +145214,16 @@ registerEdge("polyline", { }, shapeType: "polyline", labelPosition: "center", - drawShape: function drawShape18(cfg, group2) { + drawShape: function drawShape19(cfg, group3) { var shapeStyle = this.getShapeStyle(cfg); if (shapeStyle.radius === 0) delete shapeStyle.radius; - var keyShape = group2.addShape("path", { + var keyShape = group3.addShape("path", { className: "edge-shape", name: "edge-shape", attrs: shapeStyle }); + group3["shapeMap"]["edge-shape"] = keyShape; return keyShape; }, getShapeStyle: function getShapeStyle15(cfg) { @@ -136149,7 +145231,7 @@ registerEdge("polyline", { var strokeStyle = { stroke: cfg.color }; - var style = mix({}, defaultStyle, strokeStyle, cfg.style); + var style = (0, import_util583.mix)({}, defaultStyle, strokeStyle, cfg.style); cfg = this.getPathPoints(cfg); this.radius = style.radius; this.offset = style.offset; @@ -136164,32 +145246,32 @@ registerEdge("polyline", { var target = cfg.targetNode; var radius = style.radius; var defaultRouteCfg = this.options.routeCfg; - var routeCfg = mix({}, defaultRouteCfg, cfg.routeCfg); + var routeCfg = (0, import_util583.mix)({}, defaultRouteCfg, cfg.routeCfg); routeCfg.offset = style.offset; var path = this.getPath(points, source, target, radius, routeCfg); - if (is_array_default(path) && path.length <= 1 || is_string_default(path) && path.indexOf("L") === -1) { + if ((0, import_util583.isArray)(path) && path.length <= 1 || (0, import_util583.isString)(path) && path.indexOf("L") === -1) { path = "M0 0, L0 0"; } if (isNaN(startPoint.x) || isNaN(startPoint.y) || isNaN(endPoint.x) || isNaN(endPoint.y)) { path = "M0 0, L0 0"; } - var attrs = mix({}, BaseGlobal.defaultEdge.style, style, { + var attrs = (0, import_util583.mix)({}, BaseGlobal.defaultEdge.style, style, { lineWidth: cfg.size, path }); return attrs; }, updateShapeStyle: function updateShapeStyle4(cfg, item) { - var group2 = item.getContainer(); + var group3 = item.getContainer(); if (!item.isVisible()) return; var strokeStyle = { stroke: cfg.color }; - var shape = group2.find(function(element) { + var shape = group3["shapeMap"]["edge-shape"] || group3.find(function(element) { return element.get("className") === "edge-shape"; }) || item.getKeyShape(); - var size2 = cfg.size; + var size14 = cfg.size; cfg = this.getPathPoints(cfg); var startPoint = cfg.startPoint, endPoint = cfg.endPoint; var controlPoints = this.getControlPoints(cfg); @@ -136199,15 +145281,15 @@ registerEdge("polyline", { } points.push(endPoint); var currentAttr = shape.attr(); - var previousStyle = mix({}, strokeStyle, currentAttr, cfg.style); + var previousStyle = (0, import_util583.mix)({}, strokeStyle, currentAttr, cfg.style); var source = cfg.sourceNode; var target = cfg.targetNode; var radius = previousStyle.radius; var defaultRouteCfg = this.options.routeCfg; - var routeCfg = mix({}, defaultRouteCfg, cfg.routeCfg); + var routeCfg = (0, import_util583.mix)({}, defaultRouteCfg, cfg.routeCfg); routeCfg.offset = previousStyle.offset; var path = this.getPath(points, source, target, radius, routeCfg); - if (is_array_default(path) && path.length <= 1 || is_string_default(path) && path.indexOf("L") === -1) { + if ((0, import_util583.isArray)(path) && path.length <= 1 || (0, import_util583.isString)(path) && path.indexOf("L") === -1) { path = "M0 0, L0 0"; } if (isNaN(startPoint.x) || isNaN(startPoint.y) || isNaN(endPoint.x) || isNaN(endPoint.y)) { @@ -136223,8 +145305,8 @@ registerEdge("polyline", { path: "" }; } - var style = mix(strokeStyle, shape.attr(), { - lineWidth: size2, + var style = (0, import_util583.mix)(strokeStyle, shape.attr(), { + lineWidth: size14, path }, cfg.style); if (shape) { @@ -136238,7 +145320,7 @@ registerEdge("polyline", { return getPathWithBorderRadiusByPolyline(points, radius); } var pathArray_1 = []; - each_default(points, function(point2, index2) { + (0, import_util583.each)(points, function(point2, index2) { if (index2 === 0) { pathArray_1.push(["M", point2.x, point2.y]); } else { @@ -136259,12 +145341,15 @@ registerEdge("polyline", { } }, "single-edge"); +// node_modules/@antv/g6-pc/es/behavior/index.js +var import_util592 = __toModule(require_lib()); + // node_modules/@antv/g6-pc/es/behavior/drag-canvas.js var cloneEvent4 = util_default3.cloneEvent; var isNaN5 = util_default3.isNaN; var abs = Math.abs; var DRAG_OFFSET = 10; -var ALLOW_EVENTS = ["shift", "ctrl", "alt", "control"]; +var ALLOW_EVENTS2 = ["shift", "ctrl", "alt", "control"]; var drag_canvas_default = { getDefaultCfg: function getDefaultCfg2() { return { @@ -136309,10 +145394,16 @@ var drag_canvas_default = { var width2 = this.graph.get("width"); var height = this.graph.get("height"); var graphCanvasBBox = this.graph.get("canvas").getCanvasBBox(); - if (graphCanvasBBox.minX <= width2 + this.scalableRange && graphCanvasBBox.minX + dx > width2 + this.scalableRange || graphCanvasBBox.maxX + this.scalableRange >= 0 && graphCanvasBBox.maxX + this.scalableRange + dx < 0) { + var expandWidth = this.scalableRange; + var expandHeight = this.scalableRange; + if (expandWidth < 1 && expandWidth > -1) { + expandWidth = width2 * expandWidth; + expandHeight = height * expandHeight; + } + if (graphCanvasBBox.minX <= width2 + expandWidth && graphCanvasBBox.minX + dx > width2 + expandWidth || graphCanvasBBox.maxX + expandWidth >= 0 && graphCanvasBBox.maxX + expandWidth + dx < 0) { dx = 0; } - if (graphCanvasBBox.minY <= height + this.scalableRange && graphCanvasBBox.minY + dy > height + this.scalableRange || graphCanvasBBox.maxY + this.scalableRange >= 0 && graphCanvasBBox.maxY + this.scalableRange + dy < 0) { + if (graphCanvasBBox.minY <= height + expandHeight && graphCanvasBBox.minY + dy > height + expandHeight || graphCanvasBBox.maxY + expandHeight >= 0 && graphCanvasBBox.maxY + expandHeight + dy < 0) { dy = 0; } this.graph.translate(dx, dy); @@ -136409,6 +145500,10 @@ var drag_canvas_default = { if (this.shouldBegin.call(this, e4)) { e4.type = "dragstart"; graph.emit("canvas:dragstart", e4); + this.originPosition = { + x: e4.clientX, + y: e4.clientY + }; this.dragging = true; } } else { @@ -136420,9 +145515,16 @@ var drag_canvas_default = { } }, onMouseUp: function onMouseUp(e4) { + var _a6, _b; var graph = this.graph; if (this.keydown) return; + var currentZoom = graph.getZoom(); + var modeController = graph.get("modeController"); + var zoomCanvas = (_b = (_a6 = modeController === null || modeController === void 0 ? void 0 : modeController.modes[modeController.mode]) === null || _a6 === void 0 ? void 0 : _a6.filter(function(behavior) { + return behavior.type === "zoom-canvas"; + })) === null || _b === void 0 ? void 0 : _b[0]; + var optimizeZoom = zoomCanvas ? zoomCanvas.optimizeZoom || 0.1 : 0; if (this.enableOptimize) { var edges = graph.getEdges(); for (var i4 = 0, len5 = edges.length; i4 < len5; i4++) { @@ -136435,17 +145537,19 @@ var drag_canvas_default = { shape.show(); }); } - var nodes = graph.getNodes(); - for (var j4 = 0, nodeLen = nodes.length; j4 < nodeLen; j4++) { - var container2 = nodes[j4].getContainer(); - var children = container2.get("children"); - for (var _i = 0, children_2 = children; _i < children_2.length; _i++) { - var child = children_2[_i]; - var isKeyShape = child.get("isKeyShape"); - if (!isKeyShape) { - var oriVis = child.get("ori-visibility"); - if (oriVis) - child.show(); + if (currentZoom > optimizeZoom) { + var nodes = graph.getNodes(); + for (var j4 = 0, nodeLen = nodes.length; j4 < nodeLen; j4++) { + var container2 = nodes[j4].getContainer(); + var children = container2.get("children"); + for (var _i = 0, children_2 = children; _i < children_2.length; _i++) { + var child = children_2[_i]; + var isKeyShape = child.get("isKeyShape"); + if (!isKeyShape) { + var oriVis = child.get("ori-visibility"); + if (oriVis) + child.show(); + } } } } @@ -136459,6 +145563,8 @@ var drag_canvas_default = { this.updateViewport(e4); } e4.type = "dragend"; + e4.dx = e4.clientX - this.originPosition.x; + e4.dy = e4.clientY - this.originPosition.y; graph.emit("canvas:dragend", e4); this.endDrag(); }, @@ -136473,7 +145579,7 @@ var drag_canvas_default = { if (!code) { return; } - if (ALLOW_EVENTS.indexOf(code.toLowerCase()) > -1) { + if (ALLOW_EVENTS2.indexOf(code.toLowerCase()) > -1) { self2.keydown = true; } else { self2.keydown = false; @@ -136488,6 +145594,7 @@ var drag_canvas_default = { }; // node_modules/@antv/g6-pc/es/behavior/drag-node.js +var import_util585 = __toModule(require_lib()); var drag_node_default = { getDefaultCfg: function getDefaultCfg3() { return { @@ -136498,7 +145605,8 @@ var drag_node_default = { comboActiveState: "", selectedState: "selected", enableOptimize: false, - enableDebounce: false + enableDebounce: false, + enableStack: true }; }, getEvents: function getEvents3() { @@ -136510,7 +145618,10 @@ var drag_node_default = { "combo:dragleave": "onDragLeave", "combo:drop": "onDropCombo", "node:drop": "onDropNode", - "canvas:drop": "onDropCanvas" + "canvas:drop": "onDropCanvas", + "touchstart": "onTouchStart", + "touchmove": "onTouchMove", + "touchend": "onDragEnd" }; }, validationCombo: function validationCombo(item) { @@ -136523,8 +145634,42 @@ var drag_node_default = { } return true; }, + onTouchStart: function onTouchStart2(e4) { + if (!e4.item) + return; + var self2 = this; + try { + var touches = e4.originalEvent.touches; + var event1 = touches[0]; + var event2 = touches[1]; + if (event1 && event2) { + return; + } + e4.preventDefault(); + } catch (e6) { + console.warn("Touch original event not exist!"); + } + self2.onDragStart(e4); + }, + onTouchMove: function onTouchMove2(e4) { + var self2 = this; + try { + var touches = e4.originalEvent.touches; + var event1 = touches[0]; + var event2 = touches[1]; + if (event1 && event2) { + self2.onDragEnd(e4); + return; + } + e4.preventDefault(); + } catch (e6) { + console.warn("Touch original event not exist!"); + } + self2.onDrag(e4); + }, onDragStart: function onDragStart(evt) { var _this = this; + this.currentShouldEnd = true; if (!this.shouldBegin.call(this, evt)) { return; } @@ -136532,8 +145677,11 @@ var drag_node_default = { if (!item || item.destroyed || item.hasLocked()) { return; } - var group2 = item.getContainer(); - group2.set("capture", false); + var group3 = item.getContainer(); + group3.set("capture", false); + if (!this.cachedCaptureItems) + this.cachedCaptureItems = []; + this.cachedCaptureItems.push(item); var target = evt.target; if (target) { var isAnchorPoint = target.get("isAnchorPoint"); @@ -136564,7 +145712,7 @@ var drag_node_default = { } var beforeDragNodes = []; this.targets.forEach(function(t4) { - beforeDragNodes.push(clone_default(t4.getModel())); + beforeDragNodes.push((0, import_util585.clone)(t4.getModel())); }); this.set("beforeDragNodes", beforeDragNodes); this.hidenEdge = {}; @@ -136574,7 +145722,7 @@ var drag_node_default = { edges.forEach(function(edge2) { if (!edge2.isVisible()) return; - _this.hidenEdge[edge2] = true; + _this.hidenEdge[edge2.getID()] = true; edge2.hide(); }); }); @@ -136591,7 +145739,7 @@ var drag_node_default = { if (!this.origin) { return; } - if (!this.shouldUpdate(this, evt)) { + if (!this.shouldUpdate.call(this, evt)) { return; } if (this.get("enableDelegate")) { @@ -136614,24 +145762,24 @@ var drag_node_default = { }, onDragEnd: function onDragEnd(evt) { var _this = this; - if (!this.origin || !this.shouldEnd.call(this, evt)) { + var _a6; + if (!this.origin) { return; } - var item = evt.item; - if (item) { - var group2 = item.getContainer(); - group2.set("capture", true); - } + (_a6 = this.cachedCaptureItems) === null || _a6 === void 0 ? void 0 : _a6.forEach(function(item) { + var group3 = item.getContainer(); + group3.set("capture", true); + }); + this.cachedCaptureItems = []; if (this.delegateRect) { this.delegateRect.remove(); this.delegateRect = null; } - this.updatePositions(evt); if (this.get("updateEdge") && this.enableOptimize && !this.enableDelegate) { this.targets.forEach(function(node) { var edges = node.getEdges(); edges.forEach(function(edge2) { - if (_this.hidenEdge[edge2]) + if (_this.hidenEdge[edge2.getID()]) edge2.show(); edge2.refresh(); }); @@ -136639,7 +145787,7 @@ var drag_node_default = { } this.hidenEdge = {}; var graph = this.graph; - if (graph.get("enabledStack")) { + if (graph.get("enabledStack") && this.enableStack) { var stackData_1 = { before: { nodes: [], @@ -136667,7 +145815,7 @@ var drag_node_default = { y: targetModel.y }); }); - graph.pushStack("update", clone_default(stackData_1)); + graph.pushStack("update", (0, import_util585.clone)(stackData_1)); } graph.emit("dragnodeend", { items: this.targets, @@ -136681,9 +145829,10 @@ var drag_node_default = { }, onDropCombo: function onDropCombo(evt) { var item = evt.item; - if (!this.validationCombo(item)) + this.currentShouldEnd = this.shouldEnd.call(this, evt, item); + this.updatePositions(evt, !this.currentShouldEnd); + if (!this.currentShouldEnd || !this.validationCombo(item)) return; - this.updatePositions(evt); var graph = this.graph; if (this.comboActiveState) { graph.setItemState(item, this.comboActiveState, false); @@ -136708,9 +145857,10 @@ var drag_node_default = { }, onDropCanvas: function onDropCanvas(evt) { var graph = this.graph; - if (!this.targets || this.targets.length === 0) + this.currentShouldEnd = this.shouldEnd.call(this, evt, void 0); + this.updatePositions(evt, !this.currentShouldEnd); + if (!this.targets || this.targets.length === 0 || !this.currentShouldEnd) return; - this.updatePositions(evt); if (this.onlyChangeComboSize) { graph.updateCombos(); } else { @@ -136727,25 +145877,27 @@ var drag_node_default = { return; var self2 = this; var item = evt.item; - this.updatePositions(evt); var graph = self2.graph; var comboId = item.getModel().comboId; - if (comboId) { - if (this.onlyChangeComboSize) { - graph.updateCombos(); - } else { - var combo = graph.findById(comboId); - if (self2.comboActiveState) { - graph.setItemState(combo, self2.comboActiveState, false); - } - this.targets.map(function(node) { - var nodeModel = node.getModel(); - if (comboId !== nodeModel.comboId) { - graph.updateComboTree(node, comboId); - } - }); - graph.updateCombo(combo); + var newParentCombo = comboId ? graph.findById(comboId) : void 0; + this.currentShouldEnd = this.shouldEnd.call(this, evt, newParentCombo); + this.updatePositions(evt, !this.currentShouldEnd); + if (!this.currentShouldEnd) + return; + if (this.onlyChangeComboSize) { + graph.updateCombos(); + } else if (comboId) { + var combo = graph.findById(comboId); + if (self2.comboActiveState) { + graph.setItemState(combo, self2.comboActiveState, false); } + this.targets.map(function(node) { + var nodeModel = node.getModel(); + if (comboId !== nodeModel.comboId) { + graph.updateComboTree(node, comboId); + } + }); + graph.updateCombo(combo); } else { this.targets.map(function(node) { var model = node.getModel(); @@ -136777,7 +145929,7 @@ var drag_node_default = { graph.setItemState(item, this.comboActiveState, false); } }, - updatePositions: function updatePositions(evt) { + updatePositions: function updatePositions(evt, restore) { var _this = this; if (!this.targets || this.targets.length === 0) return; @@ -136792,13 +145944,16 @@ var drag_node_default = { updateEdge: this.get("updateEdge"), updateFunc: this.update }); - else + else if (!restore) this.targets.map(function(node) { return _this.update(node, evt); }); - } + } else + this.targets.map(function(node) { + return _this.update(node, evt, restore); + }); }, - update: function update14(item, evt) { + update: function update14(item, evt, restore) { var origin = this.origin; var model = item.get("model"); var nodeId = item.get("id"); @@ -136810,6 +145965,10 @@ var drag_node_default = { } var x6 = evt.x - origin.x + this.point[nodeId].x; var y5 = evt.y - origin.y + this.point[nodeId].y; + if (restore) { + x6 += origin.x - evt.x; + y5 += origin.y - evt.y; + } var pos = { x: x6, y: y5 @@ -136820,7 +145979,7 @@ var drag_node_default = { item.updatePosition(pos); } }, - debounceUpdate: debounce_default(function(event) { + debounceUpdate: (0, import_util585.debounce)(function(event) { var targets = event.targets, graph = event.graph, point2 = event.point, origin = event.origin, evt = event.evt, updateEdge = event.updateEdge, updateFunc = event.updateFunc; targets.map(function(item) { var model = item.get("model"); @@ -136848,7 +146007,7 @@ var drag_node_default = { var graph = this.graph; if (!this.delegateRect) { var parent_1 = graph.get("group"); - var attrs = deep_mix_default({}, global_default2.delegateStyle, this.delegateStyle); + var attrs = (0, import_util585.deepMix)({}, global_default2.delegateStyle, this.delegateStyle); var _a6 = this.calculationGroupPosition(e4), cx = _a6.x, cy = _a6.y, width2 = _a6.width, height = _a6.height, minX = _a6.minX, minY = _a6.minY; this.originPoint = { x: cx, @@ -136944,9 +146103,42 @@ var activate_relations_default = { return { "node:click": "setAllItemStates", "combo:click": "setAllItemStates", - "canvas:click": "clearAllItemStates" + "canvas:click": "clearActiveState", + "node:touchstart": "setOnTouchStart", + "combo:touchstart": "setOnTouchStart", + "canvas:touchstart": "clearOnTouchStart" }; }, + setOnTouchStart: function setOnTouchStart(e4) { + var self2 = this; + try { + var touches = e4.originalEvent.touches; + var event1 = touches[0]; + var event2 = touches[1]; + if (event1 && event2) { + return; + } + e4.preventDefault(); + } catch (e6) { + console.warn("Touch original event not exist!"); + } + self2.setAllItemStates(e4); + }, + clearOnTouchStart: function clearOnTouchStart(e4) { + var self2 = this; + try { + var touches = e4.originalEvent.touches; + var event1 = touches[0]; + var event2 = touches[1]; + if (event1 && event2) { + return; + } + e4.preventDefault(); + } catch (e6) { + console.warn("Touch original event not exist!"); + } + self2.clearActiveState(e4); + }, setAllItemStates: function setAllItemStates(e4) { var item = e4.item; var graph = this.graph; @@ -137048,10 +146240,10 @@ var activate_relations_default = { var inactiveState = this.inactiveState; var autoPaint = graph.get("autoPaint"); graph.setAutoPaint(false); - var nodes = graph.getNodes(); - var combos = graph.getCombos(); - var edges = graph.getEdges(); - var vEdges = graph.get("vedges"); + var nodes = graph.getNodes() || []; + var combos = graph.getCombos() || []; + var edges = graph.getEdges() || []; + var vEdges = graph.get("vedges") || []; var nodeLength = nodes.length; var comboLength = combos.length; var edgeLength = edges.length; @@ -137078,43 +146270,15 @@ var activate_relations_default = { item: e4.item || self2.get("item"), action: "deactivate" }); - }, - clearAllItemStates: function clearAllItemStates(e4) { - var self2 = this; - var graph = self2.graph; - if (!self2.shouldUpdate(e4.item, { - event: e4, - action: "deactivate" - })) { - return; - } - var activeState = this.activeState; - var inactiveState = this.inactiveState; - var nodes = graph.getNodes(); - var edges = graph.getEdges(); - var nodeLength = nodes.length; - var edgeLength = edges.length; - for (var i4 = 0; i4 < nodeLength; i4++) { - var node = nodes[i4]; - graph.clearItemStates(node, [activeState, inactiveState]); - } - for (var i4 = 0; i4 < edgeLength; i4++) { - var edge2 = edges[i4]; - graph.clearItemStates(edge2, [activeState, inactiveState, "deactivate"]); - } - graph.emit("afteractivaterelations", { - item: e4.item || self2.get("item"), - action: "deactivate" - }); } }; // node_modules/@antv/g6-pc/es/behavior/brush-select.js -var min6 = Math.min; -var max7 = Math.max; +var min12 = Math.min; +var max14 = Math.max; var abs2 = Math.abs; var DEFAULT_TRIGGER = "shift"; -var ALLOW_EVENTS2 = ["drag", "shift", "ctrl", "alt", "control"]; +var ALLOW_EVENTS3 = ["drag", "shift", "ctrl", "alt", "control"]; var brush_select_default = { getDefaultCfg: function getDefaultCfg5() { return { @@ -137136,7 +146300,7 @@ var brush_select_default = { }; }, getEvents: function getEvents5() { - if (!(ALLOW_EVENTS2.indexOf(this.trigger.toLowerCase()) > -1)) { + if (!(ALLOW_EVENTS3.indexOf(this.trigger.toLowerCase()) > -1)) { this.trigger = DEFAULT_TRIGGER; console.warn("Behavior brush-select \u7684 trigger \u53C2\u6570\u4E0D\u5408\u6CD5\uFF0C\u8BF7\u8F93\u5165 'drag'\u3001'shift'\u3001'ctrl' \u6216 'alt'"); } @@ -137237,13 +146401,15 @@ var brush_select_default = { y: e4.y }; var p22 = graph.getPointByCanvas(originPoint.x, originPoint.y); - var left2 = min6(p1.x, p22.x); - var right2 = max7(p1.x, p22.x); - var top = min6(p1.y, p22.y); - var bottom = max7(p1.y, p22.y); + var left2 = min12(p1.x, p22.x); + var right2 = max14(p1.x, p22.x); + var top = min12(p1.y, p22.y); + var bottom = max14(p1.y, p22.y); var selectedNodes = []; var selectedIds = []; graph.getNodes().forEach(function(node) { + if (!node.isVisible()) + return; var bbox = node.getBBox(); if (bbox.centerX >= left2 && bbox.centerX <= right2 && bbox.centerY >= top && bbox.centerY <= bottom) { if (shouldUpdate3(node, "select")) { @@ -137259,6 +146425,8 @@ var brush_select_default = { selectedNodes.forEach(function(node) { var edges = node.getOutEdges(); edges.forEach(function(edge2) { + if (!edge2.isVisible()) + return; var model = edge2.getModel(); var source = model.source, target = model.target; if (selectedIds.includes(source) && selectedIds.includes(target) && shouldUpdate3(edge2, "select")) { @@ -137297,8 +146465,8 @@ var brush_select_default = { this.brush.attr({ width: abs2(e4.canvasX - originPoint.x), height: abs2(e4.canvasY - originPoint.y), - x: min6(e4.canvasX, originPoint.x), - y: min6(e4.canvasY, originPoint.y) + x: min12(e4.canvasX, originPoint.x), + y: min12(e4.canvasY, originPoint.y) }); }, onKeyDown: function onKeyDown2(e4) { @@ -137325,8 +146493,9 @@ var brush_select_default = { }; // node_modules/@antv/g6-pc/es/behavior/click-select.js +var import_util586 = __toModule(require_lib()); var DEFAULT_TRIGGER2 = "shift"; -var ALLOW_EVENTS3 = ["shift", "ctrl", "alt", "control"]; +var ALLOW_EVENTS4 = ["shift", "ctrl", "alt", "control"]; var click_select_default = { getDefaultCfg: function getDefaultCfg6() { return { @@ -137337,7 +146506,7 @@ var click_select_default = { }, getEvents: function getEvents6() { var self2 = this; - if (!(ALLOW_EVENTS3.indexOf(self2.trigger.toLowerCase()) > -1)) { + if (!(ALLOW_EVENTS4.indexOf(self2.trigger.toLowerCase()) > -1)) { self2.trigger = DEFAULT_TRIGGER2; console.warn("Behavior brush-select \u7684 trigger \u53C2\u6570\u4E0D\u5408\u6CD5\uFF0C\u8BF7\u8F93\u5165 'drag'\u3001'shift'\u3001'ctrl' \u6216 'alt'"); } @@ -137368,8 +146537,8 @@ var click_select_default = { return; } if (!keydown || !multiple) { - var selected = graph.findAllByState(type2, self2.selectedState); - each_default(selected, function(combo) { + var selected = graph.findAllByState("node", self2.selectedState).concat(graph.findAllByState("combo", self2.selectedState)); + (0, import_util586.each)(selected, function(combo) { if (combo !== item) { graph.setItemState(combo, self2.selectedState, false); } @@ -137409,11 +146578,11 @@ var click_select_default = { var _this = this; var graph = this.graph; var selected = graph.findAllByState("node", this.selectedState); - each_default(selected, function(node) { + (0, import_util586.each)(selected, function(node) { graph.setItemState(node, _this.selectedState, false); }); var selectedCombos = graph.findAllByState("combo", this.selectedState); - each_default(selectedCombos, function(combo) { + (0, import_util586.each)(selectedCombos, function(combo) { graph.setItemState(combo, _this.selectedState, false); }); graph.emit("nodeselectchange", { @@ -137444,7 +146613,8 @@ var click_select_default = { }; // node_modules/@antv/g6-pc/es/behavior/zoom-canvas.js -var transform17 = ext_exports3.transform; +var import_util587 = __toModule(require_lib()); +var transform17 = ext_exports.transform; var DELTA4 = 0.05; var zoom_canvas_default = { getDefaultCfg: function getDefaultCfg7() { @@ -137459,6 +146629,10 @@ var zoom_canvas_default = { fixLineWidth: false, fixLabel: false, fixState: "selected" + }, + animate: false, + animateCfg: { + duration: 500 } }; }, @@ -137477,7 +146651,7 @@ var zoom_canvas_default = { touchend: "onTouchEnd" }; }, - onTouchStart: function onTouchStart2(evt) { + onTouchStart: function onTouchStart3(evt) { var touches = evt.originalEvent.touches; var event1 = touches[0]; var event2 = touches[1]; @@ -137501,7 +146675,7 @@ var zoom_canvas_default = { } this.originScale = this.graph.getZoom() || this.currentScale || 1; }, - onTouchMove: function onTouchMove2(evt) { + onTouchMove: function onTouchMove3(evt) { if (!this.moveable) { return; } @@ -137541,12 +146715,14 @@ var zoom_canvas_default = { if (zoom2 > maxZoom || zoom2 < minZoom) { return; } + var animate = this.get("animate"); + var animateCfg = this.get("animateCfg"); var canvas = this.graph.get("canvas"); var point2 = canvas.getPointByClient(evt.clientX, evt.clientY); this.graph.zoomTo(zoom2, { x: point2.x, y: point2.y - }); + }, animate, animateCfg); this.graph.emit("wheelzoom", evt); }, onTouchEnd: function onTouchEnd() { @@ -137672,24 +146848,24 @@ var zoom_canvas_default = { fixEdges = graph.findAllByState("edge", fixSelectedItems.fixState); var scale12 = graphZoom / zoom2; var fixNodesLength = fixNodes.length; - for (var fn2 = 0; fn2 < fixNodesLength; fn2++) { - var node = fixNodes[fn2]; - var group2 = node.getContainer(); + for (var fn = 0; fn < fixNodesLength; fn++) { + var node = fixNodes[fn]; + var group3 = node.getContainer(); var nodeModel = node.getModel(); var originStyle = node.getOriginStyle(); var itemStateStyle = node.getStateStyle(fixSelectedItems.fixState); var shapeStateStyle = node.get("shapeFactory").getShape(nodeModel.type).getStateStyle(fixSelectedItems.fixState, node)[fixSelectedItems.fixState]; if (fixSelectedItems.fixAll) { if (zoom2 <= 1) { - var groupMatrix = clone_default(group2.getMatrix()); + var groupMatrix = (0, import_util587.clone)(group3.getMatrix()); if (!groupMatrix) groupMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]; var _b = node.getModel(), x6 = _b.x, y5 = _b.y; groupMatrix = transform17(groupMatrix, [["t", -x6, -y5], ["s", scale12, scale12], ["t", x6, y5]]); - group2.setMatrix(groupMatrix); + group3.setMatrix(groupMatrix); } } else { - var children = group2.get("children"); + var children = group3.get("children"); var childrenLength = children.length; for (var c5 = 0; c5 < childrenLength; c5++) { var shape = children[c5]; @@ -137725,8 +146901,8 @@ var zoom_canvas_default = { var fixEdgesLength = fixEdges.length; for (var fe = 0; fe < fixEdgesLength; fe++) { var edge2 = fixEdges[fe]; - var group2 = edge2.getContainer(); - var children = group2.get("children"); + var group3 = edge2.getContainer(); + var children = group3.get("children"); var nodeModel = edge2.getModel(); var itemStateStyle = edge2.getStateStyle(fixSelectedItems.fixState); var shapeStateStyle = edge2.get("shapeFactory").getShape(nodeModel.type).getStateStyle(fixSelectedItems.fixState, edge2)[fixSelectedItems.fixState]; @@ -137763,10 +146939,12 @@ var zoom_canvas_default = { } } } + var animate = this.get("animate"); + var animateCfg = this.get("animateCfg"); graph.zoomTo(zoom2, { x: point2.x, y: point2.y - }); + }, animate, animateCfg); graph.emit("wheelzoom", e4); } }; @@ -137846,8 +147024,8 @@ var tooltip_base_default = { } else { y5 += this.offset; } - var left2 = x6 + "px"; - var top = y5 + "px"; + var left2 = "".concat(x6, "px"); + var top = "".concat(y5, "px"); modifyCSS(this.container, { left: left2, top, @@ -137857,7 +147035,7 @@ var tooltip_base_default = { createTooltip: function createTooltip(canvas) { var el = canvas.get("el"); el.style.position = "relative"; - var container2 = createDom('
    '); + var container2 = createDom('
    ')); el.parentNode.appendChild(container2); modifyCSS(container2, { position: "absolute", @@ -137899,7 +147077,7 @@ var edge_tooltip_default = __assign({ item: "edge", offset: 12, formatText: function formatText(model) { - return "source: " + model.source + " target: " + model.target; + return "source: ".concat(model.source, " target: ").concat(model.target); } }; }, @@ -137915,7 +147093,7 @@ var edge_tooltip_default = __assign({ // node_modules/@antv/g6-pc/es/behavior/collapse-expand.js var DEFAULT_TRIGGER3 = "click"; -var ALLOW_EVENTS4 = ["click", "dblclick"]; +var ALLOW_EVENTS5 = ["click", "dblclick"]; var collapse_expand_default = { getDefaultCfg: function getDefaultCfg10() { return { @@ -137927,13 +147105,13 @@ var collapse_expand_default = { getEvents: function getEvents10() { var _a6; var trigger; - if (ALLOW_EVENTS4.includes(this.trigger)) { + if (ALLOW_EVENTS5.includes(this.trigger)) { trigger = this.trigger; } else { trigger = DEFAULT_TRIGGER3; console.warn("Behavior collapse-expand \u7684 trigger \u53C2\u6570\u4E0D\u5408\u6CD5\uFF0C\u8BF7\u8F93\u5165 'click' \u6216 'dblclick'"); } - return _a6 = {}, _a6["node:" + trigger] = "onNodeClick", _a6.touchstart = "onNodeClick", _a6; + return _a6 = {}, _a6["node:".concat(trigger)] = "onNodeClick", _a6.touchstart = "onNodeClick", _a6; }, onNodeClick: function onNodeClick(e4) { var item = e4.item; @@ -137966,9 +147144,10 @@ var collapse_expand_default = { }; // node_modules/@antv/g6-pc/es/behavior/drag-combo.js +var import_util588 = __toModule(require_lib()); var calculationItemsBBox3 = util_default3.calculationItemsBBox; -var traverseCombo = function traverseCombo2(data3, fn2) { - if (fn2(data3) === false) { +var traverseCombo = function traverseCombo2(data3, fn) { + if (fn(data3) === false) { return; } if (data3) { @@ -137976,8 +147155,8 @@ var traverseCombo = function traverseCombo2(data3, fn2) { if (combos.length === 0) { return false; } - each_default(combos, function(child) { - traverseCombo2(child, fn2); + (0, import_util588.each)(combos, function(child) { + traverseCombo2(child, fn); }); } }; @@ -138007,7 +147186,7 @@ var drag_combo_default = { if (!item || item.destroyed) { return false; } - if (!this.shouldUpdate(this, evt)) { + if (!this.shouldUpdate.call(this, evt)) { return false; } var type2 = item.getType(); @@ -138020,6 +147199,7 @@ var drag_combo_default = { var _this = this; var graph = this.graph; var item = evt.item; + this.currentShouldEnd = true; if (!this.validationCombo(evt)) return; this.targets = []; @@ -138097,26 +147277,26 @@ var drag_combo_default = { } }); } - each_default(this.targets, function(item2) { + (0, import_util588.each)(this.targets, function(item2) { _this.updateCombo(item2, evt); }); } }, - updatePositions: function updatePositions2(evt) { + updatePositions: function updatePositions2(evt, restore) { var _this = this; - if (this.enableDelegate) { - each_default(this.targets, function(item) { - _this.updateCombo(item, evt); + if (this.enableDelegate || restore) { + (0, import_util588.each)(this.targets, function(item) { + _this.updateCombo(item, evt, restore); }); } }, onDrop: function onDrop(evt) { var _this = this; var item = evt.item; - if (!item || !this.targets || item.destroyed) { + this.currentShouldEnd = this.shouldEnd.call(this, evt, item); + this.updatePositions(evt, !this.currentShouldEnd); + if (!this.currentShouldEnd || !item || !this.targets || item.destroyed) return; - } - this.updatePositions(evt); var graph = this.graph; var targetModel = item.getModel(); this.targets.map(function(combo) { @@ -138141,10 +147321,14 @@ var drag_combo_default = { var _this = this; if (!this.targets || this.targets.length === 0) return; - this.updatePositions(evt); var graph = this.graph; var item = evt.item; var comboId = item.getModel().comboId; + var newParentCombo = comboId ? graph.findById(comboId) : void 0; + this.currentShouldEnd = this.shouldEnd.call(this, evt, newParentCombo); + this.updatePositions(evt, !this.currentShouldEnd); + if (!this.currentShouldEnd) + return; var droppedCombo; if (comboId) { if (this.activeState) { @@ -138205,7 +147389,9 @@ var drag_combo_default = { if (!this.targets || this.targets.length === 0) return; var item = evt.item; - this.updatePositions(evt); + if (this.currentShouldEnd) { + this.updatePositions(evt); + } var parentCombo = this.getParentCombo(item.getModel().parentId); var graph = this.graph; if (parentCombo && this.activeState) { @@ -138240,33 +147426,33 @@ var drag_combo_default = { this.originPoint = null; this.targets.length = 0; }, - traverse: function traverse3(data3, fn2) { + traverse: function traverse3(data3, fn) { var _this = this; - if (fn2(data3) === false) { + if (fn(data3) === false) { return; } if (data3) { var combos = data3.get("combos"); - each_default(combos, function(child) { - _this.traverse(child, fn2); + (0, import_util588.each)(combos, function(child) { + _this.traverse(child, fn); }); var nodes = data3.get("nodes"); - each_default(nodes, function(child) { - _this.traverse(child, fn2); + (0, import_util588.each)(nodes, function(child) { + _this.traverse(child, fn); }); } }, - updateCombo: function updateCombo(item, evt) { + updateCombo: function updateCombo(item, evt, restore) { var _this = this; this.traverse(item, function(param) { if (param.destroyed) { return false; } - _this.updateSignleItem(param, evt); + _this.updateSignleItem(param, evt, restore); return true; }); }, - updateSignleItem: function updateSignleItem(item, evt) { + updateSignleItem: function updateSignleItem(item, evt, restore) { var origin = this.origin; var graph = this.graph; var model = item.getModel(); @@ -138279,6 +147465,10 @@ var drag_combo_default = { } var x6 = evt.x - origin.x + this.point[itemId].x; var y5 = evt.y - origin.y + this.point[itemId].y; + if (restore) { + x6 += origin.x - evt.x; + y5 += origin.y - evt.y; + } graph.updateItem(item, { x: x6, y: y5 @@ -138324,6 +147514,7 @@ var drag_combo_default = { }, attrs), name: "combo-delegate-shape" }); + this.delegateShape.set("capture", false); this.delegate = this.delegateShape; } else { var clientX = evt.x - this.origin.x + this.originPoint.minX; @@ -138338,7 +147529,7 @@ var drag_combo_default = { // node_modules/@antv/g6-pc/es/behavior/collapse-expand-combo.js var DEFAULT_TRIGGER4 = "dblclick"; -var ALLOW_EVENTS5 = ["click", "dblclick"]; +var ALLOW_EVENTS6 = ["click", "dblclick"]; var collapse_expand_combo_default = { getDefaultCfg: function getDefaultCfg12() { return { @@ -138349,13 +147540,13 @@ var collapse_expand_combo_default = { getEvents: function getEvents12() { var _a6; var trigger; - if (ALLOW_EVENTS5.includes(this.trigger)) { + if (ALLOW_EVENTS6.includes(this.trigger)) { trigger = this.trigger; } else { trigger = DEFAULT_TRIGGER4; console.warn("Behavior collapse-expand-group \u7684 trigger \u53C2\u6570\u4E0D\u5408\u6CD5\uFF0C\u8BF7\u8F93\u5165 'click' \u6216 'dblclick'"); } - return _a6 = {}, _a6["combo:" + trigger] = "onComboClick", _a6; + return _a6 = {}, _a6["combo:".concat(trigger)] = "onComboClick", _a6; }, onComboClick: function onComboClick(evt) { var item = evt.item; @@ -138379,7 +147570,7 @@ var collapse_expand_combo_default = { var isPolygonsIntersect4 = util_default3.isPolygonsIntersect; var pathToPoints4 = util_default3.pathToPoints; var DEFAULT_TRIGGER5 = "shift"; -var ALLOW_EVENTS6 = ["drag", "shift", "ctrl", "alt", "control"]; +var ALLOW_EVENTS7 = ["drag", "shift", "ctrl", "alt", "control"]; var isItemIntersecPolygon = function isItemIntersecPolygon2(item, polyPoints) { var shapePoints; var shape = item.getKeyShape(); @@ -138412,7 +147603,7 @@ var lasso_select_default = { }; }, getEvents: function getEvents13() { - if (!(ALLOW_EVENTS6.indexOf(this.trigger.toLowerCase()) > -1)) { + if (!(ALLOW_EVENTS7.indexOf(this.trigger.toLowerCase()) > -1)) { this.trigger = DEFAULT_TRIGGER5; console.warn("Behavior lasso-select \u7684 trigger \u53C2\u6570\u4E0D\u5408\u6CD5\uFF0C\u8BF7\u8F93\u5165 'drag'\u3001'shift'\u3001'ctrl' \u6216 'alt'"); } @@ -138531,6 +147722,8 @@ var lasso_select_default = { var selectedNodes = []; var selectedIds = []; graph.getNodes().forEach(function(node) { + if (!node.isVisible()) + return; if (isItemIntersecPolygon(node, lassoContour)) { if (shouldUpdate3(node, "select")) { selectedNodes.push(node); @@ -138545,6 +147738,8 @@ var lasso_select_default = { selectedNodes.forEach(function(node) { var edges = node.getOutEdges(); edges.forEach(function(edge2) { + if (!edge2.isVisible()) + return; var model = edge2.getModel(); var source = model.source, target = model.target; if (selectedIds.includes(source) && selectedIds.includes(target) && shouldUpdate3(edge2, "select")) { @@ -138610,8 +147805,9 @@ var lasso_select_default = { }; // node_modules/@antv/g6-pc/es/behavior/create-edge.js +var import_util591 = __toModule(require_lib()); var DEFAULT_TRIGGER6 = "click"; -var ALLOW_EVENTS7 = ["click", "drag"]; +var ALLOW_EVENTS8 = ["click", "drag"]; var DEFAULT_KEY = void 0; var ALLOW_KEYS = ["shift", "ctrl", "control", "alt", "meta", void 0]; var create_edge_default = { @@ -138625,7 +147821,7 @@ var create_edge_default = { }, getEvents: function getEvents14() { var self2 = this; - if (!(ALLOW_EVENTS7.indexOf(self2.trigger.toLowerCase()) > -1)) { + if (!(ALLOW_EVENTS8.indexOf(self2.trigger.toLowerCase()) > -1)) { self2.trigger = DEFAULT_TRIGGER6; console.warn("Behavior create-edge \u7684 trigger \u53C2\u6570\u4E0D\u5408\u6CD5\uFF0C\u8BF7\u8F93\u5165 'click'\uFF0C'drag'"); } @@ -138682,7 +147878,7 @@ var create_edge_default = { if (!self2.shouldEnd.call(self2, ev)) return; var edgeConfig = void 0; - if (getEdgeConfig && is_function_default(getEdgeConfig)) { + if (getEdgeConfig && (0, import_util591.isFunction)(getEdgeConfig)) { edgeConfig = getEdgeConfig({ source: self2.source, target: model.id @@ -138719,7 +147915,7 @@ var create_edge_default = { if (!self2.shouldBegin.call(self2, ev)) return; var edgeConfig = void 0; - if (getEdgeConfig && is_function_default(getEdgeConfig)) { + if (getEdgeConfig && (0, import_util591.isFunction)(getEdgeConfig)) { edgeConfig = getEdgeConfig({ source: model.id, target: model.id @@ -138740,6 +147936,10 @@ var create_edge_default = { var self2 = this; if (self2.key && !self2.keydown) return; + if (self2.edge && self2.edge.destroyed) + self2.cancelCreating({ + item: self2.edge + }); var point2 = { x: ev.x, y: ev.y @@ -138755,22 +147955,19 @@ var create_edge_default = { } }, cancelCreating: function cancelCreating(ev) { + var _a6, _b; var self2 = this; if (self2.key && !self2.keydown) return; var graph = self2.graph; var currentEdge = ev.item; - if (self2.addingEdge && ev.target && ev.target.isCanvas && ev.target.isCanvas()) { - graph.removeItem(self2.edge, false); + if (self2.addingEdge && (self2.edge === currentEdge || ((_b = (_a6 = ev.target) === null || _a6 === void 0 ? void 0 : _a6.isCanvas) === null || _b === void 0 ? void 0 : _b.call(_a6)))) { + if (self2.edge && !self2.edge.destroyed) + graph.removeItem(self2.edge, false); self2.edge = null; self2.addingEdge = false; return; } - if (self2.addingEdge && self2.edge === currentEdge) { - graph.removeItem(self2.edge, false); - self2.edge = null; - self2.addingEdge = false; - } }, onKeyDown: function onKeyDown5(e4) { var self2 = this; @@ -138797,7 +147994,7 @@ var create_edge_default = { // node_modules/@antv/g6-pc/es/behavior/shortcuts-call.js var DEFAULT_TRIGGER7 = "ctrl"; -var ALLOW_EVENTS8 = ["shift", "ctrl", "alt", "control"]; +var ALLOW_EVENTS9 = ["shift", "ctrl", "alt", "control"]; var DEFAULT_COMBINED_KEY = "1"; var shortcuts_call_default = { getDefaultCfg: function getDefaultCfg15() { @@ -138809,9 +148006,9 @@ var shortcuts_call_default = { }; }, getEvents: function getEvents15() { - if (!(ALLOW_EVENTS8.indexOf(this.trigger.toLowerCase()) > -1)) { + if (!(ALLOW_EVENTS9.indexOf(this.trigger.toLowerCase()) > -1)) { this.trigger = DEFAULT_TRIGGER7; - console.warn("Behavior shortcuts-fit-view \u7684 trigger \u53C2\u6570 '" + this.trigger + "' \u4E0D\u5408\u6CD5\uFF0C\u8BF7\u8F93\u5165 'drag'\u3001'shift'\u3001'ctrl' \u6216 'alt'"); + console.warn("Behavior shortcuts-fit-view \u7684 trigger \u53C2\u6570 '".concat(this.trigger, "' \u4E0D\u5408\u6CD5\uFF0C\u8BF7\u8F93\u5165 'drag'\u3001'shift'\u3001'ctrl' \u6216 'alt'")); } if (this.combinedKey === this.trigger) { this.combinedKey = void 0; @@ -138837,7 +148034,7 @@ var shortcuts_call_default = { } var graph = this.graph; if (!graph[this.functionName]) { - console.warn("Behavior shortcuts-fit-view \u7684 functionName \u53C2\u6570 '" + this.functionName + "' \u4E0D\u5408\u6CD5\uFF0C\u5B83\u4E0D\u662F Graph \u7684\u4E00\u4E2A\u51FD\u6570\u540D"); + console.warn("Behavior shortcuts-fit-view \u7684 functionName \u53C2\u6570 '".concat(this.functionName, "' \u4E0D\u5408\u6CD5\uFF0C\u5B83\u4E0D\u662F Graph \u7684\u4E00\u4E2A\u51FD\u6570\u540D")); return {}; } if (this.triggerKeydown && !this.combinedKey) { @@ -138867,6 +148064,180 @@ var shortcuts_call_default = { } }; +// node_modules/@antv/g6-pc/es/behavior/scroll-canvas.js +var ALLOW_EVENTS10 = ["shift", "ctrl", "alt", "control"]; +var scroll_canvas_default = { + getDefaultCfg: function getDefaultCfg16() { + return { + direction: "both", + enableOptimize: false, + zoomKey: "ctrl", + scalableRange: 0 + }; + }, + getEvents: function getEvents16() { + if (!this.zoomKey || ALLOW_EVENTS10.indexOf(this.zoomKey) === -1) + this.zoomKey = "ctrl"; + return { + wheel: "onWheel" + }; + }, + onWheel: function onWheel2(ev) { + var _this = this; + var graph = this.graph; + var keyDown = ev["".concat(this.zoomKey, "Key")]; + if (this.zoomKey === "control") + keyDown = ev.ctrlKey; + if (keyDown) { + var canvas = graph.get("canvas"); + var point2 = canvas.getPointByClient(ev.clientX, ev.clientY); + var ratio = graph.getZoom(); + if (ev.wheelDelta > 0) { + ratio = ratio + ratio * 0.05; + } else { + ratio = ratio - ratio * 0.05; + } + graph.zoomTo(ratio, { + x: point2.x, + y: point2.y + }); + } else { + var dx = ev.deltaX || ev.movementX; + var dy = ev.deltaY || ev.movementY; + if (!dy && navigator.userAgent.indexOf("Firefox") > -1) + dy = -ev.wheelDelta * 125 / 3; + var width2 = this.graph.get("width"); + var height = this.graph.get("height"); + var graphCanvasBBox = this.graph.get("canvas").getCanvasBBox(); + var expandWidth = this.scalableRange; + var expandHeight = this.scalableRange; + if (expandWidth < 1 && expandWidth > -1) { + expandWidth = width2 * expandWidth; + expandHeight = height * expandHeight; + } + var minX = graphCanvasBBox.minX, maxX = graphCanvasBBox.maxX, minY = graphCanvasBBox.minY, maxY2 = graphCanvasBBox.maxY; + if (dx > 0) { + if (maxX < -expandWidth) { + dx = 0; + } else if (maxX - dx < -expandWidth) { + dx = maxX + expandWidth; + } + } else if (dx < 0) { + if (minX > width2 + expandWidth) { + dx = 0; + } else if (minX - dx > width2 + expandWidth) { + dx = minX - (width2 + expandWidth); + } + } + if (dy > 0) { + if (maxY2 < -expandHeight) { + dy = 0; + } else if (maxY2 - dy < -expandHeight) { + dy = maxY2 + expandHeight; + } + } else if (dy < 0) { + if (minY > height + expandHeight) { + dy = 0; + } else if (minY - dy > height + expandHeight) { + dy = minY - (height + expandHeight); + } + } + if (this.get("direction") === "x") { + dy = 0; + } else if (this.get("direction") === "y") { + dx = 0; + } + graph.translate(-dx, -dy); + } + ev.preventDefault(); + var enableOptimize = this.get("enableOptimize"); + if (enableOptimize) { + var optimizeZoom_1 = this.get("optimizeZoom"); + var optimized = this.get("optimized"); + var nodes_1 = graph.getNodes(); + var edges_1 = graph.getEdges(); + var nodesLength_1 = nodes_1.length; + var edgesLength_1 = edges_1.length; + if (!optimized) { + for (var n3 = 0; n3 < nodesLength_1; n3++) { + var node = nodes_1[n3]; + if (!node.destroyed) { + var children = node.get("group").get("children"); + var childrenLength = children.length; + for (var c5 = 0; c5 < childrenLength; c5++) { + var shape = children[c5]; + if (!shape.destoryed && !shape.get("isKeyShape")) { + shape.set("ori-visibility", shape.get("ori-visibility") || shape.get("visible")); + shape.hide(); + } + } + } + } + for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) { + var edge2 = edges_1[edgeIndex]; + var children = edge2.get("group").get("children"); + var childrenLength = children.length; + for (var c5 = 0; c5 < childrenLength; c5++) { + var shape = children[c5]; + shape.set("ori-visibility", shape.get("ori-visibility") || shape.get("visible")); + shape.hide(); + } + } + this.set("optimized", true); + } + clearTimeout(this.get("timeout")); + var timeout2 = setTimeout(function() { + var currentZoom = graph.getZoom(); + var curOptimized = _this.get("optimized"); + if (curOptimized) { + _this.set("optimized", false); + for (var n4 = 0; n4 < nodesLength_1; n4++) { + var node2 = nodes_1[n4]; + var children2 = node2.get("group").get("children"); + var childrenLength2 = children2.length; + if (currentZoom < optimizeZoom_1) { + var keyShape = node2.getKeyShape(); + var oriVis = keyShape.get("ori-visibility"); + if (oriVis) + keyShape.show(); + } else { + for (var c6 = 0; c6 < childrenLength2; c6++) { + var shape2 = children2[c6]; + var oriVis = shape2.get("ori-visibility"); + if (!shape2.get("visible") && oriVis) { + if (oriVis) + shape2.show(); + } + } + } + } + for (var edgeIndex2 = 0; edgeIndex2 < edgesLength_1; edgeIndex2++) { + var edge3 = edges_1[edgeIndex2]; + var children2 = edge3.get("group").get("children"); + var childrenLength2 = children2.length; + if (currentZoom < optimizeZoom_1) { + var keyShape = edge3.getKeyShape(); + var oriVis = keyShape.get("ori-visibility"); + if (oriVis) + keyShape.show(); + } else { + for (var c6 = 0; c6 < childrenLength2; c6++) { + var shape2 = children2[c6]; + if (!shape2.get("visible")) { + var oriVis = shape2.get("ori-visibility"); + if (oriVis) + shape2.show(); + } + } + } + } + } + }, 100); + this.set("timeout", timeout2); + } + } +}; + // node_modules/@antv/g6-pc/es/behavior/index.js var behaviors = { "drag-canvas": drag_canvas_default, @@ -138882,15 +148253,17 @@ var behaviors = { "drag-combo": drag_combo_default, "collapse-expand-combo": collapse_expand_combo_default, "create-edge": create_edge_default, - "shortcuts-call": shortcuts_call_default + "shortcuts-call": shortcuts_call_default, + "scroll-canvas": scroll_canvas_default }; -each_default(behaviors, function(behavior, type2) { +(0, import_util592.each)(behaviors, function(behavior, type2) { registerBehavior(type2, behavior); }); // node_modules/@antv/g6-pc/es/index.js -var Minimap = plugin_default.Minimap; +var Algorithm = __assign(__assign({}, es_exports2), AlgorithmAsync); var Grid4 = plugin_default.Grid; +var Minimap = plugin_default.Minimap; var Bundling2 = plugin_default.Bundling; var Menu2 = plugin_default.Menu; var Fisheye2 = plugin_default.Fisheye; @@ -138899,12 +148272,15 @@ var Tooltip4 = plugin_default.Tooltip; var TimeBar2 = plugin_default.TimeBar; var ImageMinimap = plugin_default.ImageMinimap; var EdgeFilterLens2 = plugin_default.EdgeFilterLens; -var es_default4 = { +var SnapLine2 = plugin_default.SnapLine; +var Legend3 = plugin_default.Legend; +var es_default5 = { version: global_default2.version, Graph: graph_default2, TreeGraph: tree_graph_default, Util: util_default3, Layout: Layouts, + TreeLayout: tree_layout_default, registerLayout: registerLayout2, Global: global_default2, registerBehavior, @@ -138917,21 +148293,114 @@ var es_default4 = { Menu: plugin_default.Menu, ToolBar: plugin_default.ToolBar, Tooltip: plugin_default.Tooltip, + Legend: plugin_default.Legend, TimeBar: TimeBar2, + SnapLine: SnapLine2, Fisheye: Fisheye2, ImageMinimap, EdgeFilterLens: EdgeFilterLens2, - Algorithm: es_exports, + Algorithm, Arrow: arrow_default2, Marker: marker_default3, Shape: element_default3 }; // node_modules/@antv/g6/es/index.js -es_default4.version = "4.2.4"; -var es_default5 = es_default4; +es_default5.version = "4.5.3"; +var es_default6 = es_default5; -// node_modules/@ant-design/charts/es/graphs/constants.js +// node_modules/@ant-design/graphs/es/utils/createLoading.js +var ChartLoading2 = function(_a6) { + var loadingTemplate = _a6.loadingTemplate; + var renderLoading = function() { + if (loadingTemplate) { + return loadingTemplate; + } + return compat_module_default.createElement(react_content_loader_es_default, { viewBox: "0 0 400 180", width: 200, height: 90, speed: 1 }, compat_module_default.createElement("rect", { x: "20", y: "5", rx: "0", ry: "0", width: "1", height: "170" }), compat_module_default.createElement("rect", { x: "20", y: "175", rx: "0", ry: "0", width: "360", height: "1" }), compat_module_default.createElement("rect", { x: "40", y: "75", rx: "0", ry: "0", width: "35", height: "100" }), compat_module_default.createElement("rect", { x: "80", y: "125", rx: "0", ry: "0", width: "35", height: "50" }), compat_module_default.createElement("rect", { x: "120", y: "105", rx: "0", ry: "0", width: "35", height: "70" }), compat_module_default.createElement("rect", { x: "160", y: "35", rx: "0", ry: "0", width: "35", height: "140" }), compat_module_default.createElement("rect", { x: "200", y: "55", rx: "0", ry: "0", width: "35", height: "120" }), compat_module_default.createElement("rect", { x: "240", y: "15", rx: "0", ry: "0", width: "35", height: "160" }), compat_module_default.createElement("rect", { x: "280", y: "135", rx: "0", ry: "0", width: "35", height: "40" }), compat_module_default.createElement("rect", { x: "320", y: "85", rx: "0", ry: "0", width: "35", height: "90" })); + }; + return compat_module_default.createElement("div", { style: { + position: "absolute", + width: "100%", + height: "100%", + display: "flex", + alignItems: "center", + justifyContent: "center", + left: 0, + top: 0, + zIndex: 99, + backgroundColor: "#fff" + } }, renderLoading()); +}; +var createLoading_default2 = ChartLoading2; + +// node_modules/@ant-design/graphs/es/errorBoundary/index.js +var __extends17 = function() { + var extendStatics = function(d3, b10) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d4, b11) { + d4.__proto__ = b11; + } || function(d4, b11) { + for (var p4 in b11) + if (Object.prototype.hasOwnProperty.call(b11, p4)) + d4[p4] = b11[p4]; + }; + return extendStatics(d3, b10); + }; + return function(d3, b10) { + if (typeof b10 !== "function" && b10 !== null) + throw new TypeError("Class extends value " + String(b10) + " is not a constructor or null"); + extendStatics(d3, b10); + function __() { + this.constructor = d3; + } + d3.prototype = b10 === null ? Object.create(b10) : (__.prototype = b10.prototype, new __()); + }; +}(); +var ErrorBoundary2 = function(_super) { + __extends17(ErrorBoundary3, _super); + function ErrorBoundary3() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.state = { + hasError: false + }; + _this.renderError = function(e4) { + var errorTemplate = _this.props.errorTemplate; + switch (e4) { + default: + return errorTemplate && typeof errorTemplate === "function" ? errorTemplate(e4) : compat_module_default.createElement("h5", null, "\u7EC4\u4EF6\u51FA\u9519\u4E86\uFF0C\u8BF7\u6838\u67E5\u540E\u91CD\u8BD5\uFF1A ", e4.message); + } + }; + return _this; + } + ErrorBoundary3.getDerivedStateFromError = function(error) { + return { hasError: true, error }; + }; + ErrorBoundary3.getDerivedStateFromProps = function(nextProps, state2) { + if (state2.children !== nextProps.children) { + return { + children: nextProps.children, + hasError: false, + error: void 0 + }; + } + return null; + }; + ErrorBoundary3.prototype.render = function() { + if (this.state.hasError) { + return this.renderError(this.state.error); + } + return compat_module_default.createElement(d, null, this.props.children); + }; + return ErrorBoundary3; +}(compat_module_default.Component); +var errorBoundary_default2 = ErrorBoundary2; + +// node_modules/@ant-design/graphs/es/hooks/useGraphs.js +var import_util595 = __toModule(require_lib()); + +// node_modules/@ant-design/graphs/es/utils/index.js +var import_util594 = __toModule(require_lib()); + +// node_modules/@ant-design/graphs/es/constants/index.js var defaultStateStyles = { hover: { stroke: "#1890ff", @@ -138963,9 +148432,9 @@ var defaultCardStyle = { var defaultMargin = 6; var prefix = "g"; -// node_modules/@ant-design/charts/es/graphs/utils.js -var __assign16 = function() { - __assign16 = Object.assign || function(t4) { +// node_modules/@ant-design/graphs/es/utils/index.js +var __assign18 = function() { + __assign18 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -138974,7 +148443,7 @@ var __assign16 = function() { } return t4; }; - return __assign16.apply(this, arguments); + return __assign18.apply(this, arguments); }; var __awaiter6 = function(thisArg, _arguments, P4, generator) { function adopt(value2) { @@ -139079,6 +148548,33 @@ var __generator4 = function(thisArg, body) { return { value: op[0] ? op[1] : void 0, done: true }; } }; +var isType6 = function(value2, type2) { + var toString7 = {}.toString; + return toString7.call(value2) === "[object ".concat(type2, "]"); +}; +var Log2 = window.console; +var getType = function(n3) { + return Object.prototype.toString.call(n3).slice(8, -1); +}; +var deepClone2 = function(source) { + if (!source || typeof source !== "object") { + return source; + } + var target; + if (Array.isArray(source)) { + target = source.map(function(item) { + return deepClone2(item); + }); + } else if (source instanceof HTMLElement) { + target = source; + } else { + target = {}; + Object.keys(source).forEach(function(key) { + return target[key] = deepClone2(source[key]); + }); + } + return target; +}; var getGraphSize = function(width2, height, container2) { var CANVAS_WIDTH; var CANVAS_HEIGHT; @@ -139087,7 +148583,7 @@ var getGraphSize = function(width2, height, container2) { CANVAS_HEIGHT = container2.current.offsetHeight || 500; } if (!width2 && !CANVAS_WIDTH || !height && !CANVAS_HEIGHT) { - console.warn("\u8BF7\u4E3A Graph \u6307\u5B9A width \u4E0E height\uFF01\u5426\u5219\u5C06\u4F7F\u7528\u9ED8\u8BA4\u503C 500 * 500"); + Log2.warn("\u8BF7\u4E3A Graph \u6307\u5B9A width \u4E0E height\uFF01\u5426\u5219\u5C06\u4F7F\u7528\u9ED8\u8BA4\u503C 500 * 500"); return [500, 500]; } return [width2 || CANVAS_WIDTH || 500, height || CANVAS_HEIGHT || 500]; @@ -139126,7 +148622,7 @@ var bindDefaultEvents = function(graph, level, getChildren) { if (appendChildrenData) { appendChildrenData = appendChildrenData.map(function(t4, index2) { var _a7; - return __assign16((_a7 = {}, _a7[prefix + "_level"] = g_level_1 + 1, _a7[prefix + "_parentId"] = g_parentId_1 + "-" + id_1, _a7[prefix + "_currentPath"] = g_currentPath_1 + "-" + index2, _a7), t4); + return __assign18((_a7 = {}, _a7["".concat(prefix, "_level")] = g_level_1 + 1, _a7["".concat(prefix, "_parentId")] = "".concat(g_parentId_1, "-").concat(id_1), _a7["".concat(prefix, "_currentPath")] = "".concat(g_currentPath_1, "-").concat(index2), _a7), t4); }); setLevelData(graph, appendChildrenData, g_currentPath_1); } @@ -139139,6 +148635,7 @@ var bindDefaultEvents = function(graph, level, getChildren) { graph.changeData(currentData); if (graph.get("fitCenter")) { graph.fitCenter(); + graph.stopAnimate(); } } else { graph.updateItem(item, { @@ -139161,7 +148658,7 @@ var bindDefaultEvents = function(graph, level, getChildren) { }); }; var renderGraph = function(graph, data3, level) { - var originData = deepClone(data3); + var originData = deepClone2(data3); var tagData = originData; if (level) { tagData = setTag4(data3); @@ -139191,7 +148688,7 @@ var processMinimap = function(cfg, graph) { } if (cfg.show && !grapgMinmapMaps[graphId]) { var curMminimapCfg = Object.assign(defaultMinimapCfg, cfg); - var minimap = new es_default5.Minimap(__assign16(__assign16({}, curMminimapCfg), { id: graphId })); + var minimap = new es_default6.Minimap(__assign18(__assign18({}, curMminimapCfg), { id: graphId })); graph.addPlugin(minimap); grapgMinmapMaps[graphId] = minimap; return minimap; @@ -139209,17 +148706,17 @@ var getGraphId = function(graph) { if (graph.current) { return graph.current; } - graph.current = "graph-" + getUuid(); + graph.current = "graph-".concat(getUuid()); return graph.current; }; -var getMarkerPosition = function(direction5, size2) { - if (direction5 === void 0) { - direction5 = "right"; +var getMarkerPosition = function(direction3, size14) { + if (direction3 === void 0) { + direction3 = "right"; } - var width2 = size2[0], height = size2[1]; + var width2 = size14[0], height = size14[1]; var x6 = 0; var y5 = 0; - switch (direction5) { + switch (direction3) { case "top": x6 = width2 / 2; y5 = 0; @@ -139246,7 +148743,7 @@ var bindSourceMapCollapseEvents = function(graph) { if (e4.target.get("name") === "collapse-icon") { var item = e4.item; var collapsed = item.getModel().collapsed; - if (!isType3(collapsed, "Boolean")) { + if (!isType6(collapsed, "Boolean")) { collapsed = (_a6 = item._cfg.group.getChildren().find(function(item2) { return item2.get("name") === "main-box"; })) === null || _a6 === void 0 ? void 0 : _a6.attr("defaultCollapsed"); @@ -139355,8 +148852,8 @@ var getArrowCfg = function(arrowCfg, edge2) { return; } var cfg = typeof arrowCfg === "function" ? arrowCfg(edge2) : arrowCfg; - var _a6 = cfg.type, type2 = _a6 === void 0 ? "vee" : _a6, _b = cfg.d, d3 = _b === void 0 ? 0 : _b, _c = cfg.size, size2 = _c === void 0 ? 10 : _c; - return __assign16({ path: es_default5.Arrow[type2](size2, size2, d3), fill: "#ccc", d: d3 }, cfg); + var _a6 = cfg.type, type2 = _a6 === void 0 ? "vee" : _a6, _b = cfg.d, d3 = _b === void 0 ? 0 : _b, _c = cfg.size, size14 = _c === void 0 ? 10 : _c; + return __assign18({ path: es_default6.Arrow[type2](size14, size14, d3), fill: "#ccc", d: d3 }, cfg); }; var bindStateEvents = function(graph, cfg) { var _a6 = cfg !== null && cfg !== void 0 ? cfg : {}, _b = _a6.nodeCfg, nodeCfg = _b === void 0 ? {} : _b, _c = _a6.edgeCfg, edgeCfg = _c === void 0 ? {} : _c; @@ -139428,7 +148925,7 @@ var bindStateEvents = function(graph, cfg) { }; var getStyle3 = function(source, cfg, item, current) { if (typeof source === "function") { - return source(cfg, item, current); + return source(cfg, item, current) || {}; } return source || {}; }; @@ -139438,19 +148935,19 @@ var getCommonConfig = function(cfg, item, graph) { } return cfg; }; -var getSize4 = function(size2) { - if (Array.isArray(size2)) { - return size2; +var getSize4 = function(size14) { + if (Array.isArray(size14)) { + return size14; } - return size2 ? [size2, size2] : defaultNodeSize; + return size14 ? [size14, size14] : defaultNodeSize; }; var DefaultStatusBarWidth = 4; var getStatusBBox = function(cfg) { if (!cfg) { return [0, 0, 0, 0]; } - var _a6 = cfg.size, size2 = _a6 === void 0 ? [] : _a6, _b = cfg.position, position2 = _b === void 0 ? "left" : _b; - var _c = getSize4(size2), width2 = _c[0], height = _c[1]; + var _a6 = cfg.size, size14 = _a6 === void 0 ? [] : _a6, _b = cfg.position, position2 = _b === void 0 ? "left" : _b; + var _c = getSize4(size14), width2 = _c[0], height = _c[1]; var appendPadding = []; switch (position2) { case "top": @@ -139469,8 +148966,8 @@ var getStatusBBox = function(cfg) { return appendPadding; }; var getStatusCfg = function(cfg, cardSize) { - var _a6 = cfg !== null && cfg !== void 0 ? cfg : {}, _b = _a6.size, size2 = _b === void 0 ? [] : _b, _c = _a6.position, position2 = _c === void 0 ? "left" : _c; - var _d = getSize4(size2), width2 = _d[0], height = _d[1]; + var _a6 = cfg !== null && cfg !== void 0 ? cfg : {}, _b = _a6.size, size14 = _b === void 0 ? [] : _b, _c = _a6.position, position2 = _c === void 0 ? "left" : _c; + var _d = getSize4(size14), width2 = _d[0], height = _d[1]; var cardWidth = cardSize[0], cardHeight = cardSize[1]; var x6 = 0; var y5 = 0; @@ -139490,14 +148987,14 @@ var getStatusCfg = function(cfg, cardSize) { h3 = height !== null && height !== void 0 ? height : cardHeight; break; case "right": - x6 = cardWidth - (is_number_default(width2) ? width2 : DefaultStatusBarWidth); + x6 = cardWidth - ((0, import_util594.isNumber)(width2) ? width2 : DefaultStatusBarWidth); y5 = 0; w4 = width2 !== null && width2 !== void 0 ? width2 : DefaultStatusBarWidth; h3 = height !== null && height !== void 0 ? height : cardHeight; break; case "bottom": x6 = 0; - y5 = cardHeight - (is_number_default(height) ? height : DefaultStatusBarWidth); + y5 = cardHeight - ((0, import_util594.isNumber)(height) ? height : DefaultStatusBarWidth); w4 = width2 !== null && width2 !== void 0 ? width2 : cardWidth; h3 = height !== null && height !== void 0 ? height : DefaultStatusBarWidth; break; @@ -139509,11 +149006,11 @@ var getStatusCfg = function(cfg, cardSize) { height: h3 }; }; -var createMarker = function(cfg, group2, size2) { +var createMarker = function(cfg, group3, size14) { var show = cfg.show, position2 = cfg.position, collapsed = cfg.collapsed, style = cfg.style; if (show) { - group2.addShape("marker", { - attrs: __assign16(__assign16(__assign16({}, getMarkerPosition(position2, size2)), { r: 6, cursor: "pointer", symbol: collapsed ? es_default5.Marker.expand : es_default5.Marker.collapse, stroke: defaultCardStyle.stroke, lineWidth: 1, fill: "#fff" }), style), + group3.addShape("marker", { + attrs: __assign18(__assign18(__assign18({}, getMarkerPosition(position2, size14)), { r: 6, cursor: "pointer", symbol: collapsed ? es_default6.Marker.expand : es_default6.Marker.collapse, stroke: defaultCardStyle.stroke, lineWidth: 1, fill: "#fff" }), style), defaultCollapsed: false, name: "collapse-icon" }); @@ -139523,17 +149020,17 @@ var cloneBesidesImg3 = function(obj) { var clonedObj = {}; Object.keys(obj).forEach(function(key1) { var obj2 = obj[key1]; - if (is_object_default(obj2)) { + if ((0, import_util594.isObject)(obj2)) { var clonedObj2_1 = {}; Object.keys(obj2).forEach(function(key2) { var v3 = obj2[key2]; - if (key2 === "img" && !is_string_default(v3)) + if (key2 === "img" && !(0, import_util594.isString)(v3)) return; - clonedObj2_1[key2] = clone_default(v3); + clonedObj2_1[key2] = (0, import_util594.clone)(v3); }); clonedObj[key1] = clonedObj2_1; } else { - clonedObj[key1] = clone_default(obj2); + clonedObj[key1] = (0, import_util594.clone)(obj2); } }); return clonedObj; @@ -139542,8 +149039,8 @@ var setStyles = function(container2, style) { if (style === void 0) { style = {}; } - var keys2 = Object.keys(style); - keys2.forEach(function(key) { + var keys6 = Object.keys(style); + keys6.forEach(function(key) { container2.style[key] = style[key]; }); }; @@ -139559,8 +149056,8 @@ var setTag4 = function(data3, level, parentId, path) { path = ""; } var id = data3.id, _b = data3.children, children = _b === void 0 ? [] : _b; - return __assign16(__assign16((_a6 = {}, _a6[prefix + "_level"] = level, _a6[prefix + "_parentId"] = parentId, _a6[prefix + "_currentPath"] = path, _a6), data3), { children: children === null || children === void 0 ? void 0 : children.map(function(item, index2) { - return setTag4(item, level + 1, parentId ? parentId + "-" + id : id, path + "-" + index2); + return __assign18(__assign18((_a6 = {}, _a6["".concat(prefix, "_level")] = level, _a6["".concat(prefix, "_parentId")] = parentId, _a6["".concat(prefix, "_currentPath")] = path, _a6), data3), { children: children === null || children === void 0 ? void 0 : children.map(function(item, index2) { + return setTag4(item, level + 1, parentId ? "".concat(parentId, "-").concat(id) : id, "".concat(path, "-").concat(index2)); }) }); }; var getLevelData = function(data3, level) { @@ -139568,7 +149065,7 @@ var getLevelData = function(data3, level) { if (level <= 0) { return data3; } - return __assign16(__assign16({}, data3), { children: g_level + 1 < level ? children === null || children === void 0 ? void 0 : children.map(function(item) { + return __assign18(__assign18({}, data3), { children: g_level + 1 < level ? children === null || children === void 0 ? void 0 : children.map(function(item) { return getLevelData(item, level); }) : [] }); }; @@ -139593,7 +149090,7 @@ var getChildrenData = function(data3, currentPath) { return []; } return current.children.map(function(item) { - return __assign16(__assign16({}, item), { children: [] }); + return __assign18(__assign18({}, item), { children: [] }); }); }; var setParentChildren = function(parendData, currentPath, children) { @@ -139606,15 +149103,15 @@ var setParentChildren = function(parendData, currentPath, children) { current.children = children; return parendData; }; -var useEllipsis = function(text, fontSize, contentWidth) { +var setEllipsis = function(text, fontSize, contentWidth) { if (fontSize === void 0) { fontSize = 12; } if (contentWidth === void 0) { contentWidth = 120; } - var size2 = is_number_default(fontSize) ? fontSize : Number(fontSize.replace("px", "")); - var maxWords = Math.floor(contentWidth / size2); + var size14 = (0, import_util594.isNumber)(fontSize) ? fontSize : Number(fontSize.replace("px", "")); + var maxWords = Math.floor(contentWidth / size14); if (text.length <= maxWords) { return text; } @@ -139622,7 +149119,7 @@ var useEllipsis = function(text, fontSize, contentWidth) { }; var createLoading = function() { var container2 = document.createElement("div"); - container2.className = prefix + "-antd-loading"; + container2.className = "".concat(prefix, "-antd-loading"); var styles = { position: "fixed", left: "0", @@ -139644,15 +149141,168 @@ var createLoading = function() { document.body.appendChild(container2); }; var closeLoading = function() { - var hideContainer = document.getElementsByClassName(prefix + "-antd-loading"); + var hideContainer = document.getElementsByClassName("".concat(prefix, "-antd-loading")); Array.from(hideContainer).forEach(function(el) { document.body.removeChild(el); }); }; -// node_modules/@ant-design/charts/es/obsolescent/hooks/useGraph.js -var __assign17 = function() { - __assign17 = Object.assign || function(t4) { +// node_modules/@ant-design/graphs/es/hooks/useFullscreen.js +var useFullscreen = function(el) { + var _a6 = l3(false), fullscreen = _a6[0], setFullscreen = _a6[1]; + var handleFullScreenChange = function() { + if (!document.fullscreenElement) { + setFullscreen(false); + } + }; + var enterFullscreen = function() { + if (el && el.requestFullscreen) { + el.requestFullscreen().then(function() { + setFullscreen(true); + }).catch(function(err) { + Log2.error("requestFullscreen error: ", err); + }); + } + }; + var exitFullscreen = function() { + if (document.exitFullscreen) { + document.exitFullscreen().then(function() { + setFullscreen(false); + }).catch(function(err) { + Log2.error("exitFullscreen error: ", err); + }); + } + }; + var toggleFullscreen = function() { + if (!el) { + Log2.error("need dom"); + return; + } + if (!fullscreen) { + enterFullscreen(); + } else { + exitFullscreen(); + } + }; + y2(function() { + document.addEventListener("fullscreenchange", handleFullScreenChange, false); + return function() { + document.removeEventListener("fullscreenchange", handleFullScreenChange); + }; + }, []); + return [fullscreen, toggleFullscreen]; +}; +var useFullscreen_default = useFullscreen; + +// node_modules/@ant-design/graphs/es/components/toolbar/index.js +var Toolbar = function(_a6) { + var _b, _c; + var toolbarCfg = _a6.toolbarCfg, container2 = _a6.container, graph = _a6.graph; + var useGraph3 = s3(); + var width2 = s3(); + var height = s3(); + var zoom2 = s3(1); + var _d = toolbarCfg.zoomFactor, zoomFactor = _d === void 0 ? 0.25 : _d, renderIcon = toolbarCfg.renderIcon; + var _e = useFullscreen_default(container2), fullscreen = _e[0], toggleFullscreen = _e[1]; + var getWindow = function() { + return [window.outerWidth, window.outerHeight]; + }; + var toggleWidth = function(f3) { + var _a7; + var size14 = f3 ? getWindow() : [width2.current, height.current]; + (_a7 = useGraph3.current) === null || _a7 === void 0 ? void 0 : _a7.changeSize(size14[0], size14[1]); + }; + var getCenter2 = function() { + if (!container2) { + return { + x: 0, + y: 0 + }; + } + return { + x: container2.clientWidth / 2, + y: container2.clientHeight / 2 + }; + }; + var zoomIn2 = function() { + var _a7; + (_a7 = useGraph3.current) === null || _a7 === void 0 ? void 0 : _a7.zoom(Math.min(zoom2.current + zoomFactor, 5), getCenter2()); + }; + var zoomOut2 = function() { + var _a7; + (_a7 = useGraph3.current) === null || _a7 === void 0 ? void 0 : _a7.zoom(Math.max(zoom2.current - zoomFactor, 0.25), getCenter2()); + }; + y2(function() { + if (graph) { + useGraph3.current = graph; + width2.current = container2 === null || container2 === void 0 ? void 0 : container2.clientWidth; + height.current = container2 === null || container2 === void 0 ? void 0 : container2.clientHeight; + } + }, [graph]); + var setToggleFullscreen = function() { + toggleFullscreen(); + toggleWidth(!document.fullscreenElement); + }; + if (renderIcon) { + if (!((_c = (_b = renderIcon.toString().match(/\(([^)]*)\)/)) === null || _b === void 0 ? void 0 : _b[1]) === null || _c === void 0 ? void 0 : _c.includes("{"))) { + Log2.warn("renderIcon \u7528\u6CD5\u5DF2\u7ECF\u5347\u7EA7\uFF0CrenderIcon(zoomIn, xx) => renderIcon({zoomIn, xx})"); + } + return renderIcon({ + zoomIn: zoomIn2, + zoomOut: zoomOut2, + toggleFullscreen: setToggleFullscreen, + fullscreen + }); + } + return compat_module_default.createElement(d, null, !fullscreen ? compat_module_default.createElement("span", { style: { + cursor: "pointer" + }, onClick: setToggleFullscreen }, "\u2610") : compat_module_default.createElement("span", { style: { + cursor: "pointer" + }, onClick: setToggleFullscreen }, "\u2684"), compat_module_default.createElement("span", { style: { + cursor: "pointer" + }, onClick: zoomIn2 }, "+"), compat_module_default.createElement("span", { style: { + cursor: "pointer" + }, onClick: zoomOut2 }, "-")); +}; +var createToolbar = function(_a6) { + var _b; + var graph = _a6.graph, container2 = _a6.container, toolbarCfg = _a6.toolbarCfg; + var style = toolbarCfg.style, show = toolbarCfg.show, className = toolbarCfg.className; + var toolbarId = "".concat(graph.get("id"), "-toolbar"); + var exist = document.querySelector("#".concat(toolbarId)); + if (exist) { + (_b = exist.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(exist); + } + if (!show) { + return; + } + var defaultStyle = { + position: "absolute", + right: "12px", + top: "12px", + display: "flex", + flexDirection: "column", + padding: "6px", + borderRadius: "2px", + fontSize: "24px", + textAlign: "center", + lineHeight: "24px", + color: "rgba(0,0,0,.65)", + backgroundColor: "#fff", + boxShadow: "0 0 3px #ccc" + }; + var mountPoint = document.createElement("div"); + mountPoint.id = toolbarId; + mountPoint.className = className !== null && className !== void 0 ? className : "charts-toolbar"; + setStyles(mountPoint, defaultStyle); + setStyles(mountPoint, style); + compat_module_default.render(compat_module_default.createElement(Toolbar, { graph, container: container2, toolbarCfg }), mountPoint); + container2.appendChild(mountPoint); +}; + +// node_modules/@ant-design/graphs/es/hooks/useGraphs.js +var __assign19 = function() { + __assign19 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -139661,9 +149311,1436 @@ var __assign17 = function() { } return t4; }; - return __assign17.apply(this, arguments); + return __assign19.apply(this, arguments); }; -function useGraph(graphInstance, config, container2) { +var __rest42 = function(s4, e4) { + var t4 = {}; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) + t4[p4] = s4[p4]; + if (s4 != null && typeof Object.getOwnPropertySymbols === "function") + for (var i4 = 0, p4 = Object.getOwnPropertySymbols(s4); i4 < p4.length; i4++) { + if (e4.indexOf(p4[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p4[i4])) + t4[p4[i4]] = s4[p4[i4]]; + } + return t4; +}; +function useGraph(graphClass, config, extra) { + if (extra === void 0) { + extra = {}; + } + var container2 = s3(null); + var graphRef = s3(); + var graphOptions = s3(); + var graphData = s3(); + var data3 = config.data, width2 = config.width, height = config.height, layout6 = config.layout, minimapCfg = config.minimapCfg, behaviors2 = config.behaviors, fitCenter = config.fitCenter, nodeCfg = config.nodeCfg, edgeCfg = config.edgeCfg, markerCfg = config.markerCfg, level = config.level, toolbarCfg = config.toolbarCfg; + var graph = graphRef.current; + var setEdgesState = function(edges) { + edges.forEach(function(edge2) { + var _a6, _b; + var _c = edge2.getModel(), source = _c.source, target = _c.target; + var sourceVisible = (_a6 = graph === null || graph === void 0 ? void 0 : graph.findById(source)) === null || _a6 === void 0 ? void 0 : _a6.get("visible"); + var targetVisible = (_b = graph === null || graph === void 0 ? void 0 : graph.findById(target)) === null || _b === void 0 ? void 0 : _b.get("visible"); + if (sourceVisible === false || targetVisible === false) { + edge2.changeVisibility(false); + } + }); + }; + var changeData = function() { + var _a6; + if (!graph) { + return; + } + var currentData = data3; + if (level) { + currentData = setTag4(data3); + } + graph.changeData(level ? getLevelData(currentData, level) : data3); + (_a6 = graph.get("eventData")) === null || _a6 === void 0 ? void 0 : _a6.setData(currentData); + setEdgesState(graph.getEdges()); + if (fitCenter) { + graph.fitCenter(); + } + }; + var updateLayout = function() { + graph === null || graph === void 0 ? void 0 : graph.updateLayout(layout6); + if (fitCenter) { + graph === null || graph === void 0 ? void 0 : graph.fitCenter(); + } + }; + var updateNodes = function() { + if (!graph) { + return; + } + var _a6 = nodeCfg !== null && nodeCfg !== void 0 ? nodeCfg : {}, nodeType = _a6.type, nodeAnchorPoints = _a6.anchorPoints, nodeStyle = _a6.style, nodeLabelCfg = _a6.title; + graph.getNodes().forEach(function(node) { + graph.updateItem(node, { + nodeCfg, + markerCfg, + type: nodeType, + style: nodeStyle, + anchorPoints: nodeAnchorPoints, + labelCfg: nodeLabelCfg + }); + }); + }; + var updateEdges = function() { + if (!graph) { + return; + } + var _a6 = edgeCfg !== null && edgeCfg !== void 0 ? edgeCfg : {}, edgeType = _a6.type, edgeStyle = _a6.style, startArrowCfg = _a6.startArrow, endArrowCfg = _a6.endArrow, labelCfg = _a6.label; + graph.getEdges().forEach(function(edge2) { + if (edgeType === "fund-line") { + graph.updateItem(edge2, { + edgeCfg + }); + } else { + var edgeCfgModel = edge2.getModel(); + var startArrow = getArrowCfg(startArrowCfg, edgeCfgModel); + var endArrow = getArrowCfg(endArrowCfg, edgeCfgModel); + var _a7 = labelCfg !== null && labelCfg !== void 0 ? labelCfg : {}, style = _a7.style, content = _a7.content; + graph.updateItem(edge2, { + type: edgeType, + label: getCommonConfig(content, edgeCfgModel, graph), + labelCfg: { + style: getCommonConfig(style, edgeCfgModel, graph) + }, + style: __assign19({ stroke: "#ccc", startArrow, endArrow }, typeof edgeStyle === "function" ? edgeStyle(edgeCfgModel, graph) : edgeStyle) + }); + } + }); + }; + var updateMarker = function() { + if (!graph) { + return; + } + graph.getNodes().forEach(function(node) { + var _a6 = (typeof markerCfg === "function" ? markerCfg(node.getModel(), node.get("group")) : markerCfg).position, position2 = _a6 === void 0 ? "right" : _a6; + var _b = node.getBBox(), width3 = _b.width, height2 = _b.height; + var markerShape = node.get("group").get("children").find(function(item) { + return item.get("name") === "collapse-icon"; + }); + if (markerShape) { + markerShape === null || markerShape === void 0 ? void 0 : markerShape.attr(__assign19({}, getMarkerPosition(position2, [width3, height2]))); + } + }); + }; + var getEdgeStateStyles = function(edgeStateStyles) { + var _a6 = extra.name, name = _a6 === void 0 ? "" : _a6; + if (name !== "FundFlowGraph") { + return edgeStateStyles; + } + if (!edgeStateStyles) { + return; + } + var _b = edgeStateStyles.hover, hover = _b === void 0 ? {} : _b; + var endArrow = hover.endArrow, startArrow = hover.startArrow; + if (!endArrow && !startArrow) { + return edgeStateStyles; + } + return { + hover: __assign19(__assign19({}, hover), { endArrow: endArrow ? getArrowCfg(endArrow) : false, startArrow: startArrow ? getArrowCfg(startArrow) : false }) + }; + }; + y2(function() { + if (graph && !graph.destroyed) { + if ((0, import_util595.isEqual)(data3, graphData.current)) { + return; + } + graphData.current = deepClone2(data3); + changeData(); + } + }, [data3]); + y2(function() { + var _a6, _b, _c, _d, _e; + if (graph && !graph.destroyed) { + if ((0, import_util595.isEqual)(config, graphOptions.current)) { + return; + } + if (!(0, import_util595.isEqual)(layout6, (_a6 = graphOptions.current) === null || _a6 === void 0 ? void 0 : _a6.layout)) { + updateLayout(); + } + if (!(0, import_util595.isEqual)(minimapCfg, (_b = graphOptions.current) === null || _b === void 0 ? void 0 : _b.minimapCfg)) { + processMinimap(minimapCfg, graph); + } + if (!(0, import_util595.isEqual)(nodeCfg, (_c = graphOptions.current) === null || _c === void 0 ? void 0 : _c.nodeCfg)) { + updateNodes(); + } + if (!(0, import_util595.isEqual)(edgeCfg, (_d = graphOptions.current) === null || _d === void 0 ? void 0 : _d.edgeCfg)) { + updateEdges(); + } + if (!(0, import_util595.isEqual)(markerCfg, (_e = graphOptions.current) === null || _e === void 0 ? void 0 : _e.markerCfg)) { + updateMarker(); + } + graphOptions.current = config; + } + }, [config]); + y2(function() { + if (graph && !graph.destroyed) { + var graphSize = getGraphSize(width2, height, container2); + graph.changeSize(graphSize[0], graphSize[1]); + } + }, [container2, width2, height]); + y2(function() { + if (graph && !graph.destroyed) { + var defaultMode = graph.get("modes").default; + var removingBehaviors_1 = []; + defaultMode.forEach(function(be) { + if ((0, import_util595.isObject)(be)) { + removingBehaviors_1.push(be.type); + } else if ((0, import_util595.isString)(be)) { + removingBehaviors_1.push(be); + } + }); + graph.removeBehaviors(removingBehaviors_1, "default"); + graph.addBehaviors(behaviors2, "default"); + } + }, [behaviors2]); + y2(function() { + if (container2.current && graphClass) { + var _a6 = extra.name, name_1 = _a6 === void 0 ? "" : _a6; + var graphSize = getGraphSize(width2, height, container2); + var plugins = []; + var nodeCfg_1 = config.nodeCfg, edgeCfg_1 = config.edgeCfg, behaviors_1 = config.behaviors, layout_1 = config.layout, animate = config.animate, autoFit = config.autoFit, fitCenter_1 = config.fitCenter, onReady = config.onReady, tooltipCfg = config.tooltipCfg; + var _b = nodeCfg_1 !== null && nodeCfg_1 !== void 0 ? nodeCfg_1 : {}, nodeType_1 = _b.type, nodeSize = _b.size, nodeAnchorPoints = _b.anchorPoints, nodeStateStyles = _b.nodeStateStyles, nodeStyle_1 = _b.style, nodeLabelCfg_1 = _b.title, linkCenter = _b.linkCenter, getChildren = _b.getChildren; + var _c = edgeCfg_1 !== null && edgeCfg_1 !== void 0 ? edgeCfg_1 : {}, edgeType = _c.type, edgeStyle_1 = _c.style, startArrowCfg_1 = _c.startArrow, endArrowCfg_1 = _c.endArrow, labelCfg_1 = _c.label, edgeStateStyles = _c.edgeStateStyles; + if (tooltipCfg && (0, import_util595.isFunction)(tooltipCfg.customContent)) { + var customContent_1 = tooltipCfg.customContent, rest = __rest42(tooltipCfg, ["customContent"]); + var createNode_1 = function(children) { + var mountPoint = document.createElement("div"); + mountPoint.className = "g6-tooltip"; + compat_module_default.render(children, mountPoint); + return mountPoint; + }; + var tooltipPlugin = new es_default6.Tooltip(__assign19(__assign19({ offsetX: 10, offsetY: 20, itemTypes: ["node"] }, rest), { getContent: function(e4) { + return createNode_1(customContent_1(e4.item.getModel())); + } })); + plugins.push(tooltipPlugin); + } + graphRef.current = new es_default6[graphClass]({ + container: container2.current, + width: graphSize[0], + height: graphSize[1], + animate, + linkCenter, + modes: { + default: behaviors_1 + }, + defaultNode: { + type: nodeType_1, + size: nodeSize, + anchorPoints: nodeAnchorPoints, + nodeCfg: nodeCfg_1 + }, + defaultEdge: { + type: edgeType, + edgeCfg: edgeCfg_1, + labelCfg: labelCfg_1 === null || labelCfg_1 === void 0 ? void 0 : labelCfg_1.style + }, + nodeStateStyles, + edgeStateStyles: getEdgeStateStyles(edgeStateStyles), + layout: layout_1, + fitView: autoFit, + fitCenter: fitCenter_1, + plugins + }); + var graphId = getGraphId(graphRef.current); + var graph_1 = graphRef.current; + graph_1.set("id", graphId); + var getLabel_1 = function(value2) { + if ((0, import_util595.isString)(value2)) { + return value2; + } + if (name_1 === "FundFlowGraph") { + return value2 === null || value2 === void 0 ? void 0 : value2.text; + } + return value2 === null || value2 === void 0 ? void 0 : value2.title; + }; + var customNode_1 = ["fund-card", "indicator-card"]; + graph_1.node(function(node) { + if (customNode_1.includes(nodeType_1) || name_1 === "OrganizationGraph") { + node.markerCfg = markerCfg; + return {}; + } + var style = (nodeLabelCfg_1 !== null && nodeLabelCfg_1 !== void 0 ? nodeLabelCfg_1 : {}).style; + return { + label: getLabel_1(node.value), + labelCfg: { + style: getCommonConfig(style, node, graph_1) + }, + style: __assign19({ stroke: "#ccc" }, typeof nodeStyle_1 === "function" ? nodeStyle_1(node, graph_1) : nodeStyle_1) + }; + }); + var getEdgeLabel_1 = function(edge2) { + var content = (labelCfg_1 !== null && labelCfg_1 !== void 0 ? labelCfg_1 : {}).content; + if (["DecompositionTreeGraph", "OrganizationGraph", "RadialTreeGraph"].includes(name_1)) { + return getCommonConfig(content, edge2, graph_1); + } + if (name_1 === "FundFlowGraph") { + var value2 = edge2.value; + return typeof value2 === "object" ? value2 === null || value2 === void 0 ? void 0 : value2.text : value2; + } + return edge2.value; + }; + if (edgeType !== "fund-line") { + graph_1.edge(function(edge2) { + var startArrow = getArrowCfg(startArrowCfg_1, edge2); + var endArrow = getArrowCfg(endArrowCfg_1, edge2); + var style = (labelCfg_1 !== null && labelCfg_1 !== void 0 ? labelCfg_1 : {}).style; + return { + label: getEdgeLabel_1(edge2), + labelCfg: { + style: getCommonConfig(style, edge2, graph_1) + }, + style: __assign19({ stroke: "#ccc", startArrow, endArrow }, typeof edgeStyle_1 === "function" ? edgeStyle_1(edge2, graph_1) : edgeStyle_1) + }; + }); + } + processMinimap(minimapCfg, graph_1); + bindStateEvents(graph_1, config); + if (markerCfg) { + var sourceGraph = ["FlowAnalysisGraph", "FundFlowGraph"]; + sourceGraph.includes(name_1) ? bindSourceMapCollapseEvents(graph_1) : bindDefaultEvents(graph_1, level, getChildren); + } + renderGraph(graph_1, data3, level); + if (fitCenter_1) { + graph_1.fitCenter(); + } + if (onReady) { + onReady(graph_1); + } + } + }, []); + y2(function() { + if (graphRef.current && toolbarCfg) { + createToolbar({ graph: graphRef.current, container: container2.current, toolbarCfg }); + } + }, [graphRef, toolbarCfg]); + y2(function() { + return function() { + if ((graph === null || graph === void 0 ? void 0 : graph.current) && !graph.current.destroyed) { + graph.current.destroy(); + } + }; + }, []); + return { + container: container2 + }; +} + +// node_modules/@ant-design/graphs/es/hooks/useProps.js +var __assign20 = function() { + __assign20 = Object.assign || function(t4) { + for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { + s4 = arguments[i4]; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4)) + t4[p4] = s4[p4]; + } + return t4; + }; + return __assign20.apply(this, arguments); +}; +function useProps(props, defaultProps13) { + var cloneProps = deepClone2(props); + var mergeProps = A2(function(p4, defaultProps14) { + var config = __assign20({}, defaultProps14); + var propsKeys = Object.keys(p4); + propsKeys.forEach(function(key) { + if (getType(p4[key]) === "Object") { + config[key] = __assign20(__assign20({}, defaultProps14[key]), p4[key]); + } else { + config[key] = p4[key]; + } + }); + return config; + }, [props, defaultProps13]); + var uProps = mergeProps(cloneProps, defaultProps13); + return { + uProps + }; +} + +// node_modules/@ant-design/graphs/es/components/organizationGraph/customItem.js +var __assign21 = function() { + __assign21 = Object.assign || function(t4) { + for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { + s4 = arguments[i4]; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4)) + t4[p4] = s4[p4]; + } + return t4; + }; + return __assign21.apply(this, arguments); +}; +var __spreadArray4 = function(to, from, pack2) { + if (pack2 || arguments.length === 2) + for (var i4 = 0, l4 = from.length, ar; i4 < l4; i4++) { + if (ar || !(i4 in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i4); + ar[i4] = from[i4]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +var registerOrganizationCardNode = function() { + var defaultIconStyle = { + width: 12, + height: 12 + }; + es_default6.registerNode("organization-card", { + draw: function(cfg, group3) { + var _a6, _b, _c; + if (cfg === void 0) { + cfg = {}; + } + var _d = cfg.value, originValue = _d === void 0 ? {} : _d, nodeCfg = cfg.nodeCfg, markerCfg = cfg.markerCfg; + var value2 = __assign21({}, originValue); + var isOld = false; + if (value2.text) { + isOld = true; + value2.name = value2.text; + } + if (value2.value) { + isOld = true; + value2.title = value2.value; + } + var _e = nodeCfg, style = _e.style, _f = _e.padding, padding3 = _f === void 0 ? 0 : _f, _g = _e.label, label17 = _g === void 0 ? {} : _g, autoWidth = _e.autoWidth, customContent = _e.customContent; + var labelStyle = label17.style; + var paddingArray = getCssPadding(padding3); + var size14 = (cfg === null || cfg === void 0 ? void 0 : cfg.size) || [100, 30]; + if (typeof size14 === "number") + size14 = [size14, size14]; + var height = 0; + var contentWidth = size14[0] - paddingArray[1] - paddingArray[3]; + var cardStyle = getStyle3(style, cfg, group3); + var shape = group3.addShape("rect", { + attrs: __assign21(__assign21({ x: 0, y: 0, width: size14[0], height: size14[1] }, defaultCardStyle), cardStyle), + name: "main-box", + draggable: true + }); + if (value2) { + var getKey_1 = function(key) { + if (isOld) { + var keys6 = { + name: "text", + title: "value" + }; + return keys6[key]; + } + return key; + }; + height += paddingArray[0]; + var createRowItems_1 = function(item, contentWidth2, startX, index2) { + if (index2 === void 0) { + index2 = 0; + } + var iconWidth = 0; + var rowHeight = []; + var keys6 = ["icon", "name", "title"]; + var getXY = function(type2, layoutCfg) { + var _a7 = layoutCfg.fontSize, fontSize = _a7 === void 0 ? 12 : _a7; + var x6 = 0; + var y5 = 0; + var offsetX = autoWidth ? iconWidth ? iconWidth + paddingArray[3] : iconWidth : (contentWidth2 + iconWidth) / 2; + switch (type2) { + case "icon": + x6 = startX; + y5 = height; + break; + case "name": + x6 = startX + offsetX; + y5 = item.value ? paddingArray[0] : (size14[1] - fontSize) / 2; + break; + case "title": + x6 = startX + offsetX; + y5 = item.text ? paddingArray[0] + rowHeight[1] + defaultMargin : (size14[1] - fontSize) / 2; + break; + default: + break; + } + return { x: x6, y: y5 }; + }; + keys6.forEach(function(key, keyIndex) { + var isIcon = key.startsWith("icon"); + var shapeStyle = getStyle3(labelStyle, cfg, group3, getKey_1(key)); + if (key === "icon" && item[key]) { + iconWidth = shapeStyle.width || 32; + } + var keyShape = group3.addShape(isIcon ? "image" : "text", { + attrs: __assign21(__assign21(__assign21(__assign21({ textBaseline: "top", textAlign: autoWidth ? "start" : "center" }, getXY(key, shapeStyle)), { text: item[key], img: item[key] }), isIcon ? defaultIconStyle : defaultLabelStyle), shapeStyle), + name: "".concat(key, "-").concat(index2, "-").concat(keyIndex) + }); + rowHeight.push(keyShape.getBBox().height); + }); + return rowHeight; + }; + var createItems = function(item, index2) { + var _a7; + if (index2 === void 0) { + index2 = 0; + } + var itemsHeight = []; + if (customContent) { + itemsHeight.push((_a7 = customContent(item, group3, { + startX: paddingArray[3], + startY: height, + width: contentWidth + })) !== null && _a7 !== void 0 ? _a7 : 0); + } else { + itemsHeight.push.apply(itemsHeight, createRowItems_1(item, contentWidth, paddingArray[3], index2)); + } + height += Math.max.apply(Math, itemsHeight); + }; + createItems(value2); + } + shape === null || shape === void 0 ? void 0 : shape.attr("height", Math.max(height + paddingArray[2], size14[1])); + if (autoWidth) { + var maxX = Math.max.apply(Math, __spreadArray4([size14[0]], (_a6 = group3 === null || group3 === void 0 ? void 0 : group3.getChildren()) === null || _a6 === void 0 ? void 0 : _a6.map(function(childrenShape) { + return (childrenShape.getBBox().maxX || 0) + paddingArray[1]; + }), false)); + shape === null || shape === void 0 ? void 0 : shape.attr("width", maxX); + } + if (markerCfg) { + var stateCollapsed = ((_c = (_b = group3 === null || group3 === void 0 ? void 0 : group3.get("item")) === null || _b === void 0 ? void 0 : _b.getModel()) !== null && _c !== void 0 ? _c : {}).collapsed; + var _h = shape.getBBox(), shapeWidth = _h.width, shapeHeight = _h.height; + var _j = typeof markerCfg === "function" ? markerCfg(cfg, group3) : markerCfg, show = _j.show, _k = _j.position, position2 = _k === void 0 ? "right" : _k, collapsed = _j.collapsed, markerStyle = _j.style; + createMarker({ + show, + position: position2, + collapsed: stateCollapsed !== null && stateCollapsed !== void 0 ? stateCollapsed : collapsed, + style: markerStyle + }, group3, [shapeWidth, shapeHeight]); + shape.attr("defaultCollapsed", collapsed); + } + return shape; + }, + update: void 0 + }, "single-node"); +}; + +// node_modules/@ant-design/graphs/es/components/organizationGraph/index.js +var __rest43 = function(s4, e4) { + var t4 = {}; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) + t4[p4] = s4[p4]; + if (s4 != null && typeof Object.getOwnPropertySymbols === "function") + for (var i4 = 0, p4 = Object.getOwnPropertySymbols(s4); i4 < p4.length; i4++) { + if (e4.indexOf(p4[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p4[i4])) + t4[p4[i4]] = s4[p4[i4]]; + } + return t4; +}; +registerOrganizationCardNode(); +var defaultNodeStyle2 = { + fill: "#91d5ff", + stroke: "#40a9ff", + radius: 2 +}; +var defaultLayout2 = { + type: "compactBox", + direction: "TB", + getId: function getId(d3) { + return d3.id; + }, + getHeight: function getHeight3() { + return 16; + }, + getWidth: function getWidth() { + return 16; + }, + getVGap: function getVGap() { + return 40; + }, + getHGap: function getHGap() { + return 70; + } +}; +var defaultProps = { + nodeCfg: { + type: "organization-card", + size: [100, 44], + style: defaultNodeStyle2, + padding: 6, + anchorPoints: [ + [0.5, 0], + [0.5, 1] + ], + nodeStateStyles: defaultStateStyles, + label: { + style: function(cfg, group3, type2) { + var styles = { + icon: { + width: 32, + height: 32 + }, + value: { + fill: "#fff" + }, + text: { + fill: "#000" + } + }; + return type2 ? styles[type2] : {}; + } + } + }, + edgeCfg: { + type: "polyline", + endArrow: { + type: "triangle", + fill: "#91d5ff" + }, + edgeStateStyles: defaultStateStyles, + style: { + stroke: "#91d5ff" + } + }, + behaviors: ["zoom-canvas", "drag-canvas"], + layout: defaultLayout2, + animate: true, + markerPosition: "right", + autoFit: true, + fitCenter: true, + style: { + position: "relative", + height: "inherit", + backgroundColor: "#fff" + } +}; +var OrganizationGraph = function(props) { + var uProps = useProps(props, defaultProps).uProps; + var className = uProps.className, style = uProps.style, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate, rest = __rest43(uProps, ["className", "style", "loading", "loadingTemplate", "errorTemplate"]); + var container2 = useGraph("TreeGraph", rest, { name: "OrganizationGraph" }).container; + return compat_module_default.createElement(errorBoundary_default2, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default2, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); +}; +var organizationGraph_default = OrganizationGraph; + +// node_modules/@ant-design/graphs/es/components/radialTreeGraph/index.js +var __rest44 = function(s4, e4) { + var t4 = {}; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) + t4[p4] = s4[p4]; + if (s4 != null && typeof Object.getOwnPropertySymbols === "function") + for (var i4 = 0, p4 = Object.getOwnPropertySymbols(s4); i4 < p4.length; i4++) { + if (e4.indexOf(p4[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p4[i4])) + t4[p4[i4]] = s4[p4[i4]]; + } + return t4; +}; +var defaultLayout3 = { + type: "dendrogram", + direction: "LR", + nodeSep: 20, + rankSep: 100, + radial: true +}; +var defaultProps2 = { + nodeCfg: { + type: "circle", + size: 30, + anchorPoints: defaultFlowGraphAnchorPoints, + linkCenter: true, + nodeStateStyles: defaultStateStyles, + style: defaultNodeStyle + }, + edgeCfg: { + type: "line", + edgeStateStyles: defaultStateStyles + }, + behaviors: ["zoom-canvas", "drag-canvas"], + layout: defaultLayout3, + animate: true, + markerPosition: "right", + autoFit: true, + fitCenter: true, + style: { + position: "relative", + height: "inherit", + backgroundColor: "#fff" + } +}; +var RadialTreeGraph = function(props) { + var uProps = useProps(props, defaultProps2).uProps; + var className = uProps.className, style = uProps.style, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate, rest = __rest44(uProps, ["className", "style", "loading", "loadingTemplate", "errorTemplate"]); + var container2 = useGraph("TreeGraph", rest, { name: "RadialTreeGraph" }).container; + return compat_module_default.createElement(errorBoundary_default2, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default2, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); +}; +var radialTreeGraph_default = RadialTreeGraph; + +// node_modules/@ant-design/graphs/es/components/flowAnalysisGraph/customItem.js +var import_util596 = __toModule(require_lib()); +var __assign22 = function() { + __assign22 = Object.assign || function(t4) { + for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { + s4 = arguments[i4]; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4)) + t4[p4] = s4[p4]; + } + return t4; + }; + return __assign22.apply(this, arguments); +}; +var __spreadArray5 = function(to, from, pack2) { + if (pack2 || arguments.length === 2) + for (var i4 = 0, l4 = from.length, ar; i4 < l4; i4++) { + if (ar || !(i4 in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i4); + ar[i4] = from[i4]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +var registerIndicatorCardNode = function() { + var defaultTitleLabelStyle = { + fill: "#fff", + fontSize: 12 + }; + var defaultTitleRectStyle = { + fill: "#40a9ff", + radius: [2, 2, 0, 0] + }; + var defaultIconStyle = { + width: 12, + height: 12 + }; + var ARROWS2 = ["startArrow", "endArrow"]; + var SHAPE_DEFAULT_ATTRS2 = { + lineWidth: 1, + stroke: void 0, + fill: void 0, + lineAppendWidth: 1, + opacity: void 0, + strokeOpacity: void 0, + fillOpacity: void 0, + x: 0, + y: 0, + r: 10, + width: 20, + height: 20, + shadowColor: void 0, + shadowBlur: 0, + shadowOffsetX: 0, + shadowOffsetY: 0 + }; + var PATH_SHAPE_DEFAULT_ATTRS2 = { + lineWidth: 1, + stroke: "#000", + lineDash: void 0, + startArrow: false, + endArrow: false, + opacity: void 0, + strokeOpacity: void 0, + fillOpacity: void 0, + shadowColor: void 0, + shadowBlur: 0, + shadowOffsetX: 0, + shadowOffsetY: 0 + }; + var SHAPES_DEFAULT_ATTRS2 = { + edge: PATH_SHAPE_DEFAULT_ATTRS2, + node: SHAPE_DEFAULT_ATTRS2 + }; + es_default6.registerNode("indicator-card", { + draw: function(cfg, group3) { + var _a6, _b, _c; + if (cfg === void 0) { + cfg = {}; + } + var _d = cfg.value, value2 = _d === void 0 ? {} : _d, nodeCfg = cfg.nodeCfg, markerCfg = cfg.markerCfg; + var _e = nodeCfg, titleCfg = _e.title, itemsCfg = _e.items, _f = _e.label, label17 = _f === void 0 ? {} : _f, style = _e.style, _g = _e.padding, padding3 = _g === void 0 ? 0 : _g, badge = _e.badge, autoWidth = _e.autoWidth, customContent = _e.customContent; + var appendPadding = getStatusBBox(badge); + var labelStyle = label17.style; + var cardPadding = getCssPadding(padding3); + var paddingArray = cardPadding.map(function(item, index2) { + return item + appendPadding[index2]; + }); + var _h = titleCfg !== null && titleCfg !== void 0 ? titleCfg : {}, titleStyle = _h.style, titleContainerStyle = _h.containerStyle, _j = _h.autoEllipsis, autoEllipsis = _j === void 0 ? true : _j; + var _k = itemsCfg !== null && itemsCfg !== void 0 ? itemsCfg : {}, itemStyle = _k.style, itemContainerStyle = _k.containerStyle, layout6 = _k.layout, _l = _k.itemSpacing, itemSpacing = _l === void 0 ? 4 : _l, sort2 = _k.sort, _m = _k.padding, itemPadding = _m === void 0 ? [6, 0, 0] : _m; + var itemPaddingArray = getCssPadding(itemPadding); + var _o = value2, title = _o.title, items = _o.items; + var size14 = (cfg === null || cfg === void 0 ? void 0 : cfg.size) || [100, 30]; + if (typeof size14 === "number") + size14 = [size14, size14]; + var height = 0; + var shapeWidth = size14[0]; + var contentWidth = shapeWidth - paddingArray[1] - paddingArray[3]; + var cardStyle = getStyle3(style, cfg, group3); + var shape = group3.addShape("rect", { + attrs: __assign22(__assign22({ x: 0, y: 0, width: size14[0], height: size14[1] }, defaultCardStyle), cardStyle), + name: "main-box", + draggable: true + }); + var titleTextShape; + var itemShape; + var titleShape; + if (title) { + titleShape = group3.addShape("rect", { + attrs: __assign22(__assign22({ x: 0, y: 0, width: size14[0], height: 0 }, defaultTitleRectStyle), getStyle3(titleContainerStyle, cfg, group3)), + name: "title-rect", + draggable: true + }); + var textStyle2 = __assign22(__assign22({}, defaultTitleLabelStyle), getStyle3(titleStyle, cfg, group3)); + titleTextShape = group3.addShape("text", { + attrs: __assign22({ x: paddingArray[3], y: paddingArray[0], textBaseline: "top", text: autoEllipsis && !autoWidth ? setEllipsis(title, textStyle2 === null || textStyle2 === void 0 ? void 0 : textStyle2.fontSize, contentWidth) : title }, textStyle2), + name: "title" + }); + var titleHeight_1 = (titleTextShape ? titleTextShape.getBBox() : { height: size14[1] / 2 }).height; + titleShape === null || titleShape === void 0 ? void 0 : titleShape.attr("height", titleHeight_1 + paddingArray[0] + paddingArray[2]); + height += titleShape.getBBox().height; + } + if (items) { + if (!titleShape) { + height += paddingArray[0]; + } + itemShape = group3.addShape("rect", { + attrs: __assign22({ x: paddingArray[3], y: height, width: contentWidth, height: 0 }, getStyle3(itemContainerStyle, cfg, group3)), + name: "item-box", + draggable: true + }); + height += itemPaddingArray[0]; + var itemContentWidth_1 = contentWidth - itemPaddingArray[1] - itemPaddingArray[3]; + var isArray_1 = Array.isArray(items); + var createRowItems_1 = function(item, contentWidth2, startX, index2) { + if (index2 === void 0) { + index2 = 0; + } + var rowHeight = []; + var valueShapeWidth = 0; + var keys6 = sort2 ? Object.keys(item) : ["text", "value", "icon"]; + keys6.forEach(function(key, keyIndex) { + var x6; + var isIcon = key.startsWith("icon"); + if (sort2 || layout6 === "flex") { + x6 = keyIndex * contentWidth2 / keys6.length; + } else if (layout6 === "follow") { + x6 = valueShapeWidth; + } else { + x6 = key === "text" ? 0 : contentWidth2 / 2; + x6 += isIcon ? valueShapeWidth : 0; + } + var keyShape = group3.addShape(isIcon ? "image" : "text", { + attrs: __assign22(__assign22({ textBaseline: "top", x: startX + x6, y: height, text: item[key], img: item[key] }, isIcon ? defaultIconStyle : defaultLabelStyle), getStyle3(itemStyle || labelStyle, cfg, group3, key)), + name: "".concat(key, "-").concat(index2, "-").concat(keyIndex) + }); + if (key === "value" || layout6 === "follow") { + valueShapeWidth += keyShape.getBBox().width; + valueShapeWidth += layout6 === "follow" ? itemSpacing : 0; + } + rowHeight.push(keyShape.getBBox().height); + }); + return rowHeight; + }; + var createItems_1 = function(item, index2) { + var _a7; + if (index2 === void 0) { + index2 = 0; + } + var itemsHeight = []; + if (customContent) { + itemsHeight.push((_a7 = customContent(item, group3, { + startX: paddingArray[3] + itemPaddingArray[3], + startY: height, + width: itemContentWidth_1 + })) !== null && _a7 !== void 0 ? _a7 : 0); + } else { + itemsHeight.push.apply(itemsHeight, createRowItems_1(item, itemContentWidth_1, paddingArray[3] + itemPaddingArray[3], index2)); + } + height += Math.max.apply(Math, itemsHeight); + if (isArray_1 && index2 !== items.length - 1) { + height += defaultMargin; + } + }; + if (Array.isArray(items)) { + items.forEach(function(item, index2) { + createItems_1(item, index2); + }); + } else { + createItems_1(items); + } + } + var titleHeight = (titleShape === null || titleShape === void 0 ? void 0 : titleShape.getBBox().height) || 0; + itemShape === null || itemShape === void 0 ? void 0 : itemShape.attr("height", Math.max(height - titleHeight + itemPaddingArray[2], size14[1])); + var itemHeight = (itemShape === null || itemShape === void 0 ? void 0 : itemShape.getBBox().height) || 0; + var shapeHeight = items ? (titleHeight || paddingArray[0]) + itemHeight + paddingArray[2] : titleHeight + itemHeight; + shape === null || shape === void 0 ? void 0 : shape.attr("height", shapeHeight); + if (autoWidth) { + var maxX = Math.max.apply(Math, __spreadArray5([shapeWidth], (_a6 = group3 === null || group3 === void 0 ? void 0 : group3.getChildren()) === null || _a6 === void 0 ? void 0 : _a6.map(function(childrenShape) { + return (childrenShape.getBBox().maxX || 0) + paddingArray[1]; + }), false)); + titleShape === null || titleShape === void 0 ? void 0 : titleShape.attr("width", maxX); + shape === null || shape === void 0 ? void 0 : shape.attr("width", maxX); + } + if (badge) { + var statusConfig = getStatusCfg(badge, [size14[0], shapeHeight]); + group3.addShape("rect", { + attrs: __assign22(__assign22({ fill: "#40a9ff" }, statusConfig), getStyle3(badge.style, cfg, group3)), + name: "status-rect" + }); + } + if (markerCfg) { + var stateCollapsed = ((_c = (_b = group3 === null || group3 === void 0 ? void 0 : group3.get("item")) === null || _b === void 0 ? void 0 : _b.getModel()) !== null && _c !== void 0 ? _c : {}).collapsed; + var _p = shape.getBBox(), shapeWidth_1 = _p.width, shapeHeight_1 = _p.height; + var _q = typeof markerCfg === "function" ? markerCfg(cfg, group3) : markerCfg, show = _q.show, _r = _q.position, position2 = _r === void 0 ? "right" : _r, collapsed = _q.collapsed, markerStyle = _q.style; + createMarker({ + show, + position: position2, + collapsed: stateCollapsed !== null && stateCollapsed !== void 0 ? stateCollapsed : collapsed, + style: markerStyle + }, group3, [shapeWidth_1, shapeHeight_1]); + shape.attr("defaultCollapsed", collapsed); + } + return shape; + }, + update: void 0, + setState: function(name, value2, item) { + var _a6, _b; + var shape = item.get("keyShape"); + if (!shape || shape.destroyed) + return; + var type2 = item.getType(); + var stateName = (0, import_util596.isBoolean)(value2) ? name : "".concat(name, ":").concat(value2); + var itemStateStyle = item.getStateStyle(stateName); + if (!itemStateStyle) { + return; + } + var styles = Object.assign({}, itemStateStyle); + var group3 = item.getContainer(); + var keptAttrs = { x: 1, y: 1, cx: 1, cy: 1 }; + if (value2) { + var _loop_1 = function(key2) { + var _c; + var style = styles[key2]; + if ((0, import_util596.isPlainObject)(style) && !ARROWS2.includes(key2)) { + var subShape = group3.find(function(element) { + return element.get("name") === key2; + }); + if (subShape) { + subShape.attr(style); + } + } else { + shape.attr((_c = {}, _c[key2] = style, _c)); + } + }; + for (var key in styles) { + _loop_1(key); + } + } else { + var enableStatesStyle = cloneBesidesImg3(item.getCurrentStatesStyle()); + var model = item.getModel(); + var originStyle_1 = (0, import_util596.mix)({}, model.style, cloneBesidesImg3(item.getOriginStyle())); + var keyShapeName_1 = shape.get("name"); + var shapeAttrs_1 = shape.attr(); + var keyShapeStyles_1 = {}; + Object.keys(shapeAttrs_1).forEach(function(key2) { + if (key2 === "img") + return; + var attr = shapeAttrs_1[key2]; + if (attr && typeof attr === "object") { + keyShapeStyles_1[key2] = (0, import_util596.clone)(attr); + } else { + keyShapeStyles_1[key2] = attr; + } + }); + var filtetDisableStatesStyle = {}; + var _loop_2 = function(p5) { + var style = styles[p5]; + if ((0, import_util596.isPlainObject)(style) && !ARROWS2.includes(p5)) { + var subShape_1 = group3.find(function(element) { + return element.get("name") === p5; + }); + if (subShape_1) { + var subShapeStyles_1 = (0, import_util596.clone)(subShape_1.attr()); + (0, import_util596.each)(style, function(v3, key2) { + if (p5 === keyShapeName_1 && keyShapeStyles_1[key2] && !keptAttrs[key2]) { + delete keyShapeStyles_1[key2]; + var value_1 = originStyle_1[p5][key2] || SHAPES_DEFAULT_ATTRS2[type2][key2]; + shape.attr(key2, value_1); + } else if (subShapeStyles_1[key2] || subShapeStyles_1[key2] === 0) { + delete subShapeStyles_1[key2]; + var value_2 = originStyle_1[p5][key2] || SHAPES_DEFAULT_ATTRS2[type2][key2]; + subShape_1.attr(key2, value_2); + } + }); + filtetDisableStatesStyle[p5] = subShapeStyles_1; + } + } else { + if (keyShapeStyles_1[p5] && !keptAttrs[p5]) { + delete keyShapeStyles_1[p5]; + var value_3 = originStyle_1[p5] || (originStyle_1[keyShapeName_1] ? originStyle_1[keyShapeName_1][p5] : void 0) || SHAPES_DEFAULT_ATTRS2[type2][p5]; + shape.attr(p5, value_3); + } + } + }; + for (var p4 in styles) { + _loop_2(p4); + } + if (!keyShapeName_1) { + (0, import_util596.mix)(filtetDisableStatesStyle, keyShapeStyles_1); + } else { + filtetDisableStatesStyle[keyShapeName_1] = keyShapeStyles_1; + } + for (var key in enableStatesStyle) { + if (keptAttrs[key]) + continue; + var enableStyle = enableStatesStyle[key]; + if (!(0, import_util596.isPlainObject)(enableStyle) || ARROWS2.includes(key)) { + if (!keyShapeName_1) { + (0, import_util596.mix)(originStyle_1, (_a6 = {}, _a6[key] = enableStyle, _a6)); + } else { + (0, import_util596.mix)(originStyle_1[keyShapeName_1], (_b = {}, _b[key] = enableStyle, _b)); + delete originStyle_1[key]; + } + delete enableStatesStyle[key]; + } + } + var originstyles = {}; + (0, import_util596.deepMix)(originstyles, originStyle_1, filtetDisableStatesStyle, enableStatesStyle); + var keyShapeSetted = false; + var _loop_3 = function(originKey2) { + var _d; + var style = originstyles[originKey2]; + if ((0, import_util596.isPlainObject)(style) && !ARROWS2.includes(originKey2)) { + var subShape = group3.find(function(element) { + return element.get("name") === originKey2; + }); + if (subShape) { + if (originKey2 === keyShapeName_1) { + keyShapeSetted = true; + } + if (originKey2 !== "collapse-icon") + subShape.attr(style); + } + } else if (!keyShapeSetted) { + var value_4 = style || SHAPES_DEFAULT_ATTRS2[type2][originKey2]; + shape.attr((_d = {}, _d[originKey2] = value_4, _d)); + } + }; + for (var originKey in originstyles) { + _loop_3(originKey); + } + } + } + }, "single-node"); +}; + +// node_modules/@ant-design/graphs/es/components/flowAnalysisGraph/index.js +var __rest45 = function(s4, e4) { + var t4 = {}; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) + t4[p4] = s4[p4]; + if (s4 != null && typeof Object.getOwnPropertySymbols === "function") + for (var i4 = 0, p4 = Object.getOwnPropertySymbols(s4); i4 < p4.length; i4++) { + if (e4.indexOf(p4[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p4[i4])) + t4[p4[i4]] = s4[p4[i4]]; + } + return t4; +}; +registerIndicatorCardNode(); +var defaultLayout4 = { + type: "dagre", + rankdir: "LR", + center: [0, 0], + nodesepFunc: function() { + return 1; + }, + ranksepFunc: function() { + return 1; + } +}; +var defaultProps3 = { + nodeCfg: { + type: "indicator-card", + size: defaultNodeSize, + style: defaultNodeStyle, + anchorPoints: defaultFlowGraphAnchorPoints, + padding: 6, + layout: "bundled", + nodeStateStyles: defaultStateStyles + }, + edgeCfg: { + type: "cubic-horizontal", + edgeStateStyles: defaultStateStyles + }, + behaviors: ["zoom-canvas", "drag-canvas"], + layout: defaultLayout4, + animate: true, + markerPosition: "right", + autoFit: true, + fitCenter: true, + style: { + position: "relative", + height: "inherit", + backgroundColor: "#fff" + } +}; +var FlowAnalysisGraph = function(props) { + var uProps = useProps(props, defaultProps3).uProps; + var className = uProps.className, style = uProps.style, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate, rest = __rest45(uProps, ["className", "style", "loading", "loadingTemplate", "errorTemplate"]); + var container2 = useGraph("Graph", rest, { name: "FlowAnalysisGraph" }).container; + return compat_module_default.createElement(errorBoundary_default2, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default2, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); +}; +var flowAnalysisGraph_default = FlowAnalysisGraph; + +// node_modules/@ant-design/graphs/es/components/decompositionTreeGraph/index.js +var __rest46 = function(s4, e4) { + var t4 = {}; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) + t4[p4] = s4[p4]; + if (s4 != null && typeof Object.getOwnPropertySymbols === "function") + for (var i4 = 0, p4 = Object.getOwnPropertySymbols(s4); i4 < p4.length; i4++) { + if (e4.indexOf(p4[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p4[i4])) + t4[p4[i4]] = s4[p4[i4]]; + } + return t4; +}; +registerIndicatorCardNode(); +var defaultLayout5 = { + type: "compactBox", + direction: "LR", + getId: function(d3) { + return d3.id; + }, + getHeight: function() { + return 60; + }, + getWidth: function() { + return 16; + }, + getVGap: function() { + return 16; + }, + getHGap: function() { + return 100; + } +}; +var defaultProps4 = { + nodeCfg: { + type: "indicator-card", + size: defaultNodeSize, + style: defaultNodeStyle, + anchorPoints: defaultFlowGraphAnchorPoints, + padding: 6, + layout: "bundled", + nodeStateStyles: defaultStateStyles, + label: { + style: function(cfg, group3, type2) { + var styles = { + icon: { + width: 10, + height: 10 + }, + value: { + fill: "#000" + }, + text: { + fill: "#aaa" + } + }; + return type2 ? styles[type2] : {}; + } + } + }, + edgeCfg: { + type: "cubic-horizontal", + endArrow: { + type: "vee" + }, + edgeStateStyles: defaultStateStyles + }, + behaviors: ["zoom-canvas", "drag-canvas"], + layout: defaultLayout5, + animate: true, + autoFit: true, + fitCenter: true, + style: { + position: "relative", + height: "inherit", + backgroundColor: "#fff" + }, + level: 100 +}; +var DecompositionTreeGraph = function(props) { + var uProps = useProps(props, defaultProps4).uProps; + var className = uProps.className, style = uProps.style, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate, rest = __rest46(uProps, ["className", "style", "loading", "loadingTemplate", "errorTemplate"]); + var container2 = useGraph("TreeGraph", rest, { + name: "DecompositionTreeGraph" + }).container; + return compat_module_default.createElement(errorBoundary_default2, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default2, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); +}; +var decompositionTreeGraph_default = DecompositionTreeGraph; + +// node_modules/@ant-design/graphs/es/components/fundFlowGraph/customItem.js +var __assign23 = function() { + __assign23 = Object.assign || function(t4) { + for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { + s4 = arguments[i4]; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4)) + t4[p4] = s4[p4]; + } + return t4; + }; + return __assign23.apply(this, arguments); +}; +var getPathInfo = function(cfg) { + var edgeCfg = cfg.edgeCfg; + var startPoint = cfg.startPoint; + var endPoint = cfg.endPoint; + var startX = startPoint.x, startY = startPoint.y; + var endX = endPoint.x, endY = endPoint.y; + var Ydiff = endY - startY; + var slope = Ydiff !== 0 ? Math.min(500 / Math.abs(Ydiff), 20) : 0; + var cpOffset = slope > 15 ? 0 : 16; + var offset = Ydiff < 0 ? cpOffset : -cpOffset; + var line1EndPoint = { + x: startX + slope, + y: endY + offset + }; + var line2StartPoint = { + x: line1EndPoint.x + cpOffset, + y: endY + }; + var controlPoint = { + x: (line1EndPoint.x - startX) * (endY - startY) / (line1EndPoint.y - startY) + startX, + y: endY + }; + var path = [ + ["M", startX, startY], + ["L", line1EndPoint.x, line1EndPoint.y], + ["Q", controlPoint.x, controlPoint.y, line2StartPoint.x, line2StartPoint.y], + ["L", endX, endY] + ]; + if (Math.abs(Ydiff) <= 5) { + path = [ + ["M", startX, startY], + ["L", endX, endY] + ]; + } + var _a6 = edgeCfg, startArrowCfg = _a6.startArrow, endArrowCfg = _a6.endArrow; + var startArrow = getArrowCfg(startArrowCfg, cfg); + var endArrow = getArrowCfg(endArrowCfg, cfg); + return { + startArrow, + endArrow, + path, + line2StartPoint, + endY + }; +}; +var getPathText = function(value2) { + var text; + var subText; + if (value2 instanceof Object) { + text = value2.text; + subText = value2.subText; + } else { + text = value2; + } + return { text, subText }; +}; +var registerFundFlowItems = function() { + es_default6.registerNode("fund-card", { + draw: function(cfg, group3) { + var _a6, _b; + if (cfg === void 0) { + cfg = {}; + } + var _c = cfg.value, value2 = _c === void 0 ? {} : _c, nodeCfg = cfg.nodeCfg, markerCfg = cfg.markerCfg; + var _d = nodeCfg, _e = _d.label, label17 = _e === void 0 ? {} : _e, style = _d.style, _f = _d.padding, padding3 = _f === void 0 ? 0 : _f, customContent = _d.customContent; + var labelStyle = label17.style; + var paddingArray = getCssPadding(padding3); + var size14 = getSize4(cfg.size); + var height = 0; + var shapeWidth = size14[0]; + var contentWidth = shapeWidth - paddingArray[1] - paddingArray[3]; + var contentHeight = size14[1] - paddingArray[0] - paddingArray[2]; + var cardStyle = getStyle3(style, cfg, group3); + var shape = group3.addShape("rect", { + attrs: __assign23({ x: 0, y: 0, width: size14[0], height: size14[1], radius: size14[1] / 2, fill: "#fff", stroke: "#40a9ff" }, cardStyle), + name: "main-box", + draggable: true + }); + if (value2) { + height += paddingArray[0]; + var createRowItems_1 = function(item, contentWidth2, startX) { + var _a7, _b2; + var text = item.text, icon = item.icon; + var textShape; + var iconShape; + if (icon) { + iconShape = group3.addShape("image", { + attrs: __assign23({ x: startX, y: height, img: icon, width: contentHeight, height: contentHeight }, getStyle3(labelStyle, cfg, group3, "icon")), + name: "fund-icon" + }); + } + textShape = group3 === null || group3 === void 0 ? void 0 : group3.addShape("text", { + attrs: __assign23(__assign23({ textBaseline: "middle", textAlign: iconShape ? "start" : "center", x: startX + (iconShape ? (iconShape === null || iconShape === void 0 ? void 0 : iconShape.getBBox().width) + defaultMargin : contentWidth2 / 2), y: paddingArray[0] + contentHeight / 2, text }, defaultLabelStyle), getStyle3(labelStyle, cfg, group3, "text")), + name: "fund-text" + }); + return [(_a7 = textShape === null || textShape === void 0 ? void 0 : textShape.getBBox().height) !== null && _a7 !== void 0 ? _a7 : 0, (_b2 = iconShape === null || iconShape === void 0 ? void 0 : iconShape.getBBox().height) !== null && _b2 !== void 0 ? _b2 : 0]; + }; + var createItems = function(item) { + var _a7; + var itemsHeight = []; + if (customContent) { + itemsHeight.push((_a7 = customContent(item, group3, { + startX: paddingArray[3], + startY: height, + width: contentWidth + })) !== null && _a7 !== void 0 ? _a7 : 0); + } else { + itemsHeight.push.apply(itemsHeight, createRowItems_1(item, contentWidth, paddingArray[3])); + } + height += Math.max.apply(Math, itemsHeight); + }; + createItems(value2); + } + shape === null || shape === void 0 ? void 0 : shape.attr("height", Math.max(size14[1], height + paddingArray[2])); + if (markerCfg) { + var stateCollapsed = ((_b = (_a6 = group3 === null || group3 === void 0 ? void 0 : group3.get("item")) === null || _a6 === void 0 ? void 0 : _a6.getModel()) !== null && _b !== void 0 ? _b : {}).collapsed; + var _g = shape.getBBox(), shapeWidth_1 = _g.width, shapeHeight = _g.height; + var _h = typeof markerCfg === "function" ? markerCfg(cfg, group3) : markerCfg, show = _h.show, _j = _h.position, position2 = _j === void 0 ? "right" : _j, collapsed = _h.collapsed, markerStyle = _h.style; + createMarker({ + show, + position: position2, + collapsed: stateCollapsed !== null && stateCollapsed !== void 0 ? stateCollapsed : collapsed, + style: markerStyle + }, group3, [shapeWidth_1, shapeHeight]); + shape.attr("defaultCollapsed", collapsed); + } + return shape; + }, + update: void 0 + }, "single-node"); + es_default6.registerEdge("fund-line", { + draw: function draw4(cfg, group3) { + if (cfg === void 0) { + cfg = {}; + } + var edgeCfg = cfg.edgeCfg, value2 = cfg.value; + var _a6 = getPathText(value2), text = _a6.text, subText = _a6.subText; + var _b = edgeCfg, edgeStyle = _b.style, labelCfg = _b.label; + var _c = getPathInfo(cfg), startArrow = _c.startArrow, endArrow = _c.endArrow, path = _c.path, line2StartPoint = _c.line2StartPoint, endY = _c.endY; + var labelStyle = (labelCfg !== null && labelCfg !== void 0 ? labelCfg : {}).style; + var line2 = group3.addShape("path", { + attrs: __assign23({ path, stroke: "#ccc", startArrow, endArrow }, typeof edgeStyle === "function" ? edgeStyle(cfg, group3) : edgeStyle), + name: "path-shape" + }); + var createItem = function(itemText, key) { + group3.addShape("text", { + attrs: __assign23(__assign23({ text: itemText, x: line2StartPoint.x, y: key === "text" ? endY - 4 : endY + 16 }, defaultLabelStyle), getStyle3(labelStyle, cfg, group3, key)), + name: "line-text-".concat(key) + }); + }; + text && createItem(text, "text"); + subText && createItem(subText, "subText"); + return line2; + }, + update: function(cfg, edge2) { + var edgeCfg = cfg.edgeCfg, value2 = cfg.value; + var _a6 = getPathText(value2), text = _a6.text, subText = _a6.subText; + var group3 = edge2.getContainer(); + var getShape3 = function(shapeName) { + return group3.get("children").find(function(item) { + return item.get("name") === shapeName; + }); + }; + var _b = getPathInfo(cfg), startArrow = _b.startArrow, endArrow = _b.endArrow, path = _b.path, line2StartPoint = _b.line2StartPoint, endY = _b.endY; + var _c = edgeCfg, edgeStyle = _c.style, labelCfg = _c.label; + var labelStyle = (labelCfg !== null && labelCfg !== void 0 ? labelCfg : {}).style; + var pathShape = getShape3("path-shape"); + pathShape === null || pathShape === void 0 ? void 0 : pathShape.attr(__assign23({ path, stroke: "#ccc", startArrow, endArrow }, typeof edgeStyle === "function" ? edgeStyle(cfg, group3) : edgeStyle)); + var texts = ["text", "subText"]; + texts.forEach(function(key) { + var textShape = getShape3("line-text-".concat(key)); + textShape === null || textShape === void 0 ? void 0 : textShape.attr(__assign23(__assign23({ x: line2StartPoint.x, y: key === "text" ? endY - 4 : endY + 16, text: key === "text" ? text : subText }, defaultLabelStyle), getStyle3(labelStyle, cfg, group3, key))); + }); + } + }, "single-edge"); +}; + +// node_modules/@ant-design/graphs/es/components/fundFlowGraph/index.js +var __rest47 = function(s4, e4) { + var t4 = {}; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) + t4[p4] = s4[p4]; + if (s4 != null && typeof Object.getOwnPropertySymbols === "function") + for (var i4 = 0, p4 = Object.getOwnPropertySymbols(s4); i4 < p4.length; i4++) { + if (e4.indexOf(p4[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p4[i4])) + t4[p4[i4]] = s4[p4[i4]]; + } + return t4; +}; +registerFundFlowItems(); +var defaultLayout6 = { + type: "dagre", + rankdir: "LR", + nodesep: 30, + ranksep: 50 +}; +var defaultProps5 = { + nodeCfg: { + type: "fund-card", + size: defaultNodeSize, + style: defaultNodeStyle, + anchorPoints: defaultFlowGraphAnchorPoints, + nodeStateStyles: defaultStateStyles, + padding: 6 + }, + edgeCfg: { + type: "fund-line", + edgeStateStyles: defaultStateStyles, + style: { + stroke: "#40a9ff" + }, + endArrow: { + fill: "#40a9ff" + } + }, + behaviors: ["zoom-canvas", "drag-canvas"], + layout: defaultLayout6, + animate: true, + autoFit: true, + fitCenter: true, + style: { + position: "relative", + height: "inherit", + backgroundColor: "#fff" + } +}; +var FundFlowGraph = function(props) { + var uProps = useProps(props, defaultProps5).uProps; + var className = uProps.className, style = uProps.style, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate, rest = __rest47(uProps, ["className", "style", "loading", "loadingTemplate", "errorTemplate"]); + var container2 = useGraph("Graph", rest, { name: "FundFlowGraph" }).container; + return compat_module_default.createElement(errorBoundary_default2, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default2, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); +}; +var fundFlowGraph_default = FundFlowGraph; + +// node_modules/@ant-design/graphs/es/obsolescent/hooks/useGraph.js +var import_util597 = __toModule(require_lib()); +var __assign24 = function() { + __assign24 = Object.assign || function(t4) { + for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { + s4 = arguments[i4]; + for (var p4 in s4) + if (Object.prototype.hasOwnProperty.call(s4, p4)) + t4[p4] = s4[p4]; + } + return t4; + }; + return __assign24.apply(this, arguments); +}; +function useGraph2(graphInstance, config, container2) { var graphHook = s3(); var data3 = config.data, width2 = config.width, height = config.height, layout6 = config.layout, minimapCfg = config.minimapCfg, behaviors2 = config.behaviors, fitCenter = config.fitCenter, nodeCfg = config.nodeCfg, edgeCfg = config.edgeCfg, markerCfg = config.markerCfg, level = config.level; var graphOptions = s3(); @@ -139738,7 +150815,7 @@ function useGraph(graphInstance, config, container2) { labelCfg: { style: getCommonConfig(style, edgeCfgModel, graphInstance) }, - style: __assign17({ stroke: "#ccc", startArrow, endArrow }, typeof edgeStyle === "function" ? edgeStyle(edgeCfgModel, graphInstance) : edgeStyle) + style: __assign24({ stroke: "#ccc", startArrow, endArrow }, typeof edgeStyle === "function" ? edgeStyle(edgeCfgModel, graphInstance) : edgeStyle) }); } }); @@ -139754,38 +150831,38 @@ function useGraph(graphInstance, config, container2) { return item.get("name") === "collapse-icon"; }); if (markerShape) { - markerShape === null || markerShape === void 0 ? void 0 : markerShape.attr(__assign17({}, getMarkerPosition(position2, [width3, height2]))); + markerShape === null || markerShape === void 0 ? void 0 : markerShape.attr(__assign24({}, getMarkerPosition(position2, [width3, height2]))); } }); }; y2(function() { if (graphInstance && !graphInstance.destroyed) { - if (is_equal_default(data3, graphData.current)) { + if ((0, import_util597.isEqual)(data3, graphData.current)) { return; } - graphData.current = deepClone(data3); + graphData.current = deepClone2(data3); changeData(); } }, [data3]); y2(function() { var _a6, _b, _c, _d, _e; if (graphInstance && !graphInstance.destroyed) { - if (is_equal_default(config, graphOptions.current)) { + if ((0, import_util597.isEqual)(config, graphOptions.current)) { return; } - if (!is_equal_default(layout6, (_a6 = graphOptions.current) === null || _a6 === void 0 ? void 0 : _a6.layout)) { + if (!(0, import_util597.isEqual)(layout6, (_a6 = graphOptions.current) === null || _a6 === void 0 ? void 0 : _a6.layout)) { updateLayout(); } - if (!is_equal_default(minimapCfg, (_b = graphOptions.current) === null || _b === void 0 ? void 0 : _b.minimapCfg)) { + if (!(0, import_util597.isEqual)(minimapCfg, (_b = graphOptions.current) === null || _b === void 0 ? void 0 : _b.minimapCfg)) { processMinimap(minimapCfg, graphInstance); } - if (!is_equal_default(nodeCfg, (_c = graphOptions.current) === null || _c === void 0 ? void 0 : _c.nodeCfg)) { + if (!(0, import_util597.isEqual)(nodeCfg, (_c = graphOptions.current) === null || _c === void 0 ? void 0 : _c.nodeCfg)) { updateNodes(); } - if (!is_equal_default(edgeCfg, (_d = graphOptions.current) === null || _d === void 0 ? void 0 : _d.edgeCfg)) { + if (!(0, import_util597.isEqual)(edgeCfg, (_d = graphOptions.current) === null || _d === void 0 ? void 0 : _d.edgeCfg)) { updateEdges(); } - if (!is_equal_default(markerCfg, (_e = graphOptions.current) === null || _e === void 0 ? void 0 : _e.markerCfg)) { + if (!(0, import_util597.isEqual)(markerCfg, (_e = graphOptions.current) === null || _e === void 0 ? void 0 : _e.markerCfg)) { updateMarker(); } graphOptions.current = config; @@ -139802,9 +150879,9 @@ function useGraph(graphInstance, config, container2) { var defaultMode = graphInstance.get("modes").default; var removingBehaviors_1 = []; defaultMode.forEach(function(be) { - if (is_object_default(be)) { + if ((0, import_util597.isObject)(be)) { removingBehaviors_1.push(be.type); - } else if (is_string_default(be)) { + } else if ((0, import_util597.isString)(be)) { removingBehaviors_1.push(be); } }); @@ -139826,9 +150903,10 @@ function useGraph(graphInstance, config, container2) { }; } -// node_modules/@ant-design/charts/es/obsolescent/graph/customItems.js -var __assign18 = function() { - __assign18 = Object.assign || function(t4) { +// node_modules/@ant-design/graphs/es/obsolescent/graph/customItems.js +var import_util598 = __toModule(require_lib()); +var __assign25 = function() { + __assign25 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -139837,23 +150915,23 @@ var __assign18 = function() { } return t4; }; - return __assign18.apply(this, arguments); + return __assign25.apply(this, arguments); }; var registerCustomItems = function() { - es_default5.registerNode("card-node", { - draw: function(cfg, group2) { + es_default6.registerNode("card-node", { + draw: function(cfg, group3) { var _a6; if (cfg === void 0) { cfg = {}; } - var size2 = cfg.size || [100, 30]; - if (typeof size2 === "number") - size2 = [size2, size2]; - var style = __assign18({ radius: 2, fill: "#fff" }, cfg.style); + var size14 = cfg.size || [100, 30]; + if (typeof size14 === "number") + size14 = [size14, size14]; + var style = __assign25({ radius: 2, fill: "#fff" }, cfg.style); var color4 = style.stroke || cfg.color || "#5B8FF9"; var r4 = style.radius || 0; - var shape = group2.addShape("rect", { - attrs: __assign18({ x: 0, y: 0, width: size2[0], height: size2[1], stroke: color4 }, style), + var shape = group3.addShape("rect", { + attrs: __assign25({ x: 0, y: 0, width: size14[0], height: size14[1], stroke: color4 }, style), name: "main-box", draggable: true }); @@ -139861,9 +150939,9 @@ var registerCustomItems = function() { var titleTextShape; var labelStyle = ((_a6 = cfg.labelCfg) === null || _a6 === void 0 ? void 0 : _a6.style) || {}; if (title) { - var titleStyle = __assign18({ fill: "#fff" }, labelStyle); - titleTextShape = group2.addShape("text", { - attrs: __assign18(__assign18({ + var titleStyle = __assign25({ fill: "#fff" }, labelStyle); + titleTextShape = group3.addShape("text", { + attrs: __assign25(__assign25({ textBaseline: "top", x: 8, y: 2, @@ -139872,12 +150950,12 @@ var registerCustomItems = function() { name: "title" }); } - var titleBox = titleTextShape ? titleTextShape.getBBox() : { height: size2[1] / 2 }; - var titleRectShape = group2.addShape("rect", { + var titleBox = titleTextShape ? titleTextShape.getBBox() : { height: size14[1] / 2 }; + var titleRectShape = group3.addShape("rect", { attrs: { x: 0, y: 0, - width: size2[0], + width: size14[0], height: titleBox.height + 4, fill: color4, radius: [r4, r4, 0, 0] @@ -139888,13 +150966,13 @@ var registerCustomItems = function() { titleTextShape === null || titleTextShape === void 0 ? void 0 : titleTextShape.toFront(); var markerShape; if (cfg === null || cfg === void 0 ? void 0 : cfg.children) { - markerShape = group2.addShape("marker", { + markerShape = group3.addShape("marker", { attrs: { - x: size2[0] / 2, + x: size14[0] / 2, y: 0, r: 6, cursor: "pointer", - symbol: cfg.collapsed ? es_default5.Marker.expand : es_default5.Marker.collapse, + symbol: cfg.collapsed ? es_default6.Marker.expand : es_default6.Marker.collapse, stroke: color4, lineWidth: 1, fill: "#fff" @@ -139906,15 +150984,15 @@ var registerCustomItems = function() { var titleRectBox = titleRectShape.getBBox(); var descriptionTextShape; if (description) { - descriptionTextShape = group2.addShape("text", { - attrs: __assign18({ textBaseline: "top", x: 8, y: titleRectBox.height + 8, text: description }, labelStyle), + descriptionTextShape = group3.addShape("text", { + attrs: __assign25({ textBaseline: "top", x: 8, y: titleRectBox.height + 8, text: description }, labelStyle), name: "description" }); } if (descriptionTextShape) { var desTextShapeBBox = descriptionTextShape.getBBox(); var height = titleRectBox.height + 16 + desTextShapeBBox.height; - var width2 = size2[0] > desTextShapeBBox.width + 16 ? size2[0] : desTextShapeBBox.width + 16; + var width2 = size14[0] > desTextShapeBBox.width + 16 ? size14[0] : desTextShapeBBox.width + 16; shape.attr({ width: width2, height }); titleRectShape === null || titleRectShape === void 0 ? void 0 : titleRectShape.attr("width", width2); markerShape === null || markerShape === void 0 ? void 0 : markerShape.attr({ @@ -139926,34 +151004,34 @@ var registerCustomItems = function() { }, update: void 0 }, "single-node"); - es_default5.registerNode("round-rect", { - drawShape: function(cfg, group2) { + es_default6.registerNode("round-rect", { + drawShape: function(cfg, group3) { if (cfg === void 0) { cfg = {}; } - var size2 = cfg.size || [100, 30]; - if (typeof size2 === "number") - size2 = [size2, size2]; + var size14 = cfg.size || [100, 30]; + if (typeof size14 === "number") + size14 = [size14, size14]; var style = cfg.style || {}; var color4 = style.stroke || cfg.color || "#5B8FF9"; var fill = style.fill || "#fff"; - style = __assign18({ width: size2[0], height: size2[1], radius: size2[1] / 2, fill, lineWidth: 1.2, stroke: color4 }, style); - var rect3 = group2.addShape("rect", { - attrs: __assign18({ x: -size2[0] / 2, y: -size2[1] / 2 }, style), + style = __assign25({ width: size14[0], height: size14[1], radius: size14[1] / 2, fill, lineWidth: 1.2, stroke: color4 }, style); + var rect3 = group3.addShape("rect", { + attrs: __assign25({ x: -size14[0] / 2, y: -size14[1] / 2 }, style), name: "rect-shape" }); - group2.addShape("circle", { + group3.addShape("circle", { attrs: { - x: -size2[0] / 2, + x: -size14[0] / 2, y: 0, r: 3, fill: style.stroke }, name: "circle-shape" }); - group2.addShape("circle", { + group3.addShape("circle", { attrs: { - x: size2[0] / 2, + x: size14[0] / 2, y: 0, r: 3, fill: style.stroke @@ -139973,8 +151051,8 @@ var registerCustomItems = function() { if (cfg === void 0) { cfg = {}; } - var group2 = item.getContainer(); - var children = group2.get("children"); + var group3 = item.getContainer(); + var children = group3.get("children"); var node = children[0]; var circleLeft = children[1]; var circleRight = children[2]; @@ -139986,8 +151064,8 @@ var registerCustomItems = function() { } } }, "single-node"); - es_default5.registerEdge("fund-polyline", { - draw: function draw4(cfg, group2) { + es_default6.registerEdge("fund-polyline", { + draw: function draw4(cfg, group3) { var _a6; if (cfg === void 0) { cfg = {}; @@ -140025,9 +151103,9 @@ var registerCustomItems = function() { var style = cfg.style; var stroke = style.stroke || (cfg === null || cfg === void 0 ? void 0 : cfg.colorMap) && cfg.colorMap[cfg.dataType] ? (cfg === null || cfg === void 0 ? void 0 : cfg.colorMap)[cfg === null || cfg === void 0 ? void 0 : cfg.dataType] : "#5B8FF9"; var endArrow = ((_a6 = cfg.style) === null || _a6 === void 0 ? void 0 : _a6.endArrow) || false; - if (is_object_default(endArrow)) + if ((0, import_util598.isObject)(endArrow)) endArrow.fill = stroke; - var line2 = group2.addShape("path", { + var line2 = group3.addShape("path", { attrs: { path, stroke, @@ -140041,7 +151119,7 @@ var registerCustomItems = function() { var labelTextShape; var textBeginX = line2StartPoint.x + labelLeftOffset; if (cfg === null || cfg === void 0 ? void 0 : cfg.label) { - labelTextShape = group2.addShape("text", { + labelTextShape = group3.addShape("text", { attrs: { text: cfg.label, x: textBeginX, @@ -140056,7 +151134,7 @@ var registerCustomItems = function() { } if (cfg === null || cfg === void 0 ? void 0 : cfg.dataType) { var labelTextShapeBBox = labelTextShape ? labelTextShape.getBBox() : { height: 0 }; - group2.addShape("text", { + group3.addShape("text", { attrs: { text: cfg.dataType, x: textBeginX, @@ -140070,7 +151148,7 @@ var registerCustomItems = function() { }); } if (cfg === null || cfg === void 0 ? void 0 : cfg.subLabel) { - group2.addShape("text", { + group3.addShape("text", { attrs: { text: cfg.subLabel, x: textBeginX, @@ -140088,14 +151166,14 @@ var registerCustomItems = function() { }, update: void 0 }, "single-edge"); - es_default5.registerEdge("flow-line", { - draw: function(cfg, group2) { + es_default6.registerEdge("flow-line", { + draw: function(cfg, group3) { if (cfg === void 0) { cfg = {}; } var startPoint = cfg.startPoint, endPoint = cfg.endPoint; var _a6 = cfg.style, style = _a6 === void 0 ? {} : _a6; - var shape = group2.addShape("path", { + var shape = group3.addShape("path", { attrs: { stroke: style.stroke, endArrow: style.endArrow, @@ -140112,33 +151190,33 @@ var registerCustomItems = function() { }); }; var customIconNode = function(params) { - es_default5.registerNode("icon-node", { + es_default6.registerNode("icon-node", { options: { size: [60, 20], stroke: "#91d5ff", fill: "#91d5ff" }, - draw: function(cfg, group2) { + draw: function(cfg, group3) { if (cfg === void 0) { cfg = {}; } var styles = this.getShapeStyle(cfg); var _a6 = cfg.labelCfg, labelCfg = _a6 === void 0 ? {} : _a6; - var keyShape = group2.addShape("rect", { - attrs: __assign18(__assign18({}, styles), { x: 0, y: 0 }) + var keyShape = group3.addShape("rect", { + attrs: __assign25(__assign25({}, styles), { x: 0, y: 0 }) }); var style = { fill: "#e6fffb" }; var img = "https://g.alicdn.com/cm-design/arms-trace/1.0.155/styles/armsTrace/images/TAIR.png"; if (cfg.leftIcon) { - style = __assign18(__assign18({}, style), cfg.leftIcon.style); + style = __assign25(__assign25({}, style), cfg.leftIcon.style); img = cfg.leftIcon.img; } - group2.addShape("rect", { - attrs: __assign18({ x: 1, y: 1, width: 38, height: styles.height - 2 }, style) + group3.addShape("rect", { + attrs: __assign25({ x: 1, y: 1, width: 38, height: styles.height - 2 }, style) }); - group2.addShape("image", { + group3.addShape("image", { attrs: { x: 8, y: 8, @@ -140149,32 +151227,32 @@ var customIconNode = function(params) { name: "image-shape" }); if (params.enableEdit) { - group2.addShape("marker", { + group3.addShape("marker", { attrs: { x: styles.width / 3, y: styles.height + 6, r: 6, stroke: "#73d13d", cursor: "pointer", - symbol: es_default5.Marker.expand + symbol: es_default6.Marker.expand }, name: "add-item" }); - group2.addShape("marker", { + group3.addShape("marker", { attrs: { x: styles.width * 2 / 3, y: styles.height + 6, r: 6, stroke: "#ff4d4f", cursor: "pointer", - symbol: es_default5.Marker.collapse + symbol: es_default6.Marker.collapse }, name: "remove-item" }); } if (cfg.label) { - group2.addShape("text", { - attrs: __assign18(__assign18({}, labelCfg.style), { text: cfg.label, x: styles.width / 2, y: styles.height / 1.5 }) + group3.addShape("text", { + attrs: __assign25(__assign25({}, labelCfg.style), { text: cfg.label, x: styles.width / 2, y: styles.height / 1.5 }) }); } return keyShape; @@ -140182,7 +151260,7 @@ var customIconNode = function(params) { }, "rect"); }; -// node_modules/@ant-design/charts/es/obsolescent/graph/constants.js +// node_modules/@ant-design/graphs/es/obsolescent/graph/constants.js var defaultLabelCfg = { style: { fill: "#000", @@ -140192,7 +151270,7 @@ var defaultLabelCfg = { var defaultEdgeStyle = { stroke: "#91d5ff", endArrow: { - path: es_default5.Arrow.vee(10, 10) + path: es_default6.Arrow.vee(10, 10) } }; var defaultNodeAnchorPoints = [ @@ -140207,9 +151285,9 @@ var defaultStateStyles2 = { }; var defaultNodeSize2 = [120, 40]; -// node_modules/@ant-design/charts/es/obsolescent/graph/utils.js -var __assign19 = function() { - __assign19 = Object.assign || function(t4) { +// node_modules/@ant-design/graphs/es/obsolescent/graph/utils.js +var __assign26 = function() { + __assign26 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -140218,7 +151296,7 @@ var __assign19 = function() { } return t4; }; - return __assign19.apply(this, arguments); + return __assign26.apply(this, arguments); }; var defaultMinimapCfg2 = { show: false, @@ -140233,7 +151311,7 @@ var getGraphSize2 = function(width2, height, container2) { CANVAS_HEIGHT = container2.current.offsetHeight || 500; } if (!width2 && !CANVAS_WIDTH || !height && !CANVAS_HEIGHT) { - console.warn("\u8BF7\u4E3A Graph \u6307\u5B9A width \u4E0E height\uFF01\u5426\u5219\u5C06\u4F7F\u7528\u9ED8\u8BA4\u503C 500 * 500"); + Log2.warn("\u8BF7\u4E3A Graph \u6307\u5B9A width \u4E0E height\uFF01\u5426\u5219\u5C06\u4F7F\u7528\u9ED8\u8BA4\u503C 500 * 500"); return [500, 500]; } return [width2 || CANVAS_WIDTH || 500, height || CANVAS_HEIGHT || 500]; @@ -140243,7 +151321,7 @@ var processMinimap2 = function(cfg, graph) { return; if (cfg && cfg.show) { var curMminimapCfg = Object.assign(defaultMinimapCfg2, cfg); - var minimap = new es_default5.Minimap(__assign19({}, curMminimapCfg)); + var minimap = new es_default6.Minimap(__assign26({}, curMminimapCfg)); graph.addPlugin(minimap); return minimap; } @@ -140260,11 +151338,11 @@ var getGraphId2 = function(graph) { if (graph.current) { return graph.current; } - graph.current = "IndentedTreeGraph-" + uuid(); + graph.current = "IndentedTreeGraph-".concat(uuid()); return graph.current; }; var renderGraph2 = function(graph, data3) { - var originData = deepClone(data3); + var originData = deepClone2(data3); graph.data(originData); graph.render(); }; @@ -140309,12 +151387,12 @@ var bindEvents = function(graph, props) { handleCanvasClick === null || handleCanvasClick === void 0 ? void 0 : handleCanvasClick(graph); }); }; -var useProps = function(props, defaultProps13) { - return __assign19(__assign19(__assign19({}, defaultProps13), props), { layout: __assign19(__assign19({}, defaultProps13 === null || defaultProps13 === void 0 ? void 0 : defaultProps13.layout), props === null || props === void 0 ? void 0 : props.layout) }); +var useProps2 = function(props, defaultProps13) { + return __assign26(__assign26(__assign26({}, defaultProps13), props), { layout: __assign26(__assign26({}, defaultProps13 === null || defaultProps13 === void 0 ? void 0 : defaultProps13.layout), props === null || props === void 0 ? void 0 : props.layout) }); }; -// node_modules/@ant-design/charts/es/obsolescent/graph/organizationTreeGraph.js -var defaultNodeStyle2 = { +// node_modules/@ant-design/graphs/es/obsolescent/graph/organizationTreeGraph.js +var defaultNodeStyle3 = { fill: "#91d5ff", stroke: "#40a9ff", radius: 2 @@ -140327,35 +151405,35 @@ var defaultEdgeStyle2 = { d: -20 } }; -var defaultLayout2 = { +var defaultLayout7 = { type: "compactBox", direction: "TB", - getId: function getId(d3) { + getId: function getId2(d3) { return d3.id; }, - getHeight: function getHeight3() { + getHeight: function getHeight4() { return 16; }, - getWidth: function getWidth() { + getWidth: function getWidth2() { return 16; }, - getVGap: function getVGap() { + getVGap: function getVGap2() { return 40; }, - getHGap: function getHGap() { + getHGap: function getHGap2() { return 70; } }; -var defaultProps = { +var defaultProps6 = { nodeType: "rect", edgeType: "flow-line", collapseExpand: false, nodeSize: [120, 40], nodeLabelCfg: defaultLabelCfg, edgeLabelCfg: defaultLabelCfg, - layout: defaultLayout2, + layout: defaultLayout7, enableEdit: false, - nodeStyle: defaultNodeStyle2, + nodeStyle: defaultNodeStyle3, edgeStyle: defaultEdgeStyle2, nodeStateStyles: defaultStateStyles2, edgeStateStyles: defaultStateStyles2, @@ -140363,12 +151441,12 @@ var defaultProps = { }; var graphs = {}; var OrganizationTreeGraphComponent = function(props) { - var uProps = useProps(props, defaultProps); - var data3 = uProps.data, className = uProps.className, style = uProps.style, width2 = uProps.width, height = uProps.height, _a6 = uProps.nodeType, nodeType = _a6 === void 0 ? "rect" : _a6, _b = uProps.edgeType, edgeType = _b === void 0 ? "flow-line" : _b, _c = uProps.collapseExpand, collapseExpand = _c === void 0 ? false : _c, _d = uProps.nodeSize, nodeSize = _d === void 0 ? [120, 40] : _d, _e = uProps.nodeLabelCfg, nodeLabelCfg = _e === void 0 ? defaultLabelCfg : _e, _f = uProps.edgeLabelCfg, edgeLabelCfg = _f === void 0 ? defaultLabelCfg : _f, _g = uProps.layout, layout6 = _g === void 0 ? defaultLayout2 : _g, _h = uProps.enableEdit, enableEdit = _h === void 0 ? false : _h, minimapCfg = uProps.minimapCfg, _j = uProps.nodeStyle, nodeStyle = _j === void 0 ? defaultNodeStyle2 : _j, _k = uProps.edgeStyle, edgeStyle = _k === void 0 ? defaultEdgeStyle2 : _k, _l = uProps.nodeStateStyles, nodeStateStyles = _l === void 0 ? defaultStateStyles2 : _l, _m = uProps.edgeStateStyles, edgeStateStyles = _m === void 0 ? defaultStateStyles2 : _m, _o = uProps.autoFit, autoFit = _o === void 0 ? true : _o, graphRef = uProps.graphRef, onReady = uProps.onReady, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate; + var uProps = useProps2(props, defaultProps6); + var data3 = uProps.data, className = uProps.className, style = uProps.style, width2 = uProps.width, height = uProps.height, _a6 = uProps.nodeType, nodeType = _a6 === void 0 ? "rect" : _a6, _b = uProps.edgeType, edgeType = _b === void 0 ? "flow-line" : _b, _c = uProps.collapseExpand, collapseExpand = _c === void 0 ? false : _c, _d = uProps.nodeSize, nodeSize = _d === void 0 ? [120, 40] : _d, _e = uProps.nodeLabelCfg, nodeLabelCfg = _e === void 0 ? defaultLabelCfg : _e, _f = uProps.edgeLabelCfg, edgeLabelCfg = _f === void 0 ? defaultLabelCfg : _f, _g = uProps.layout, layout6 = _g === void 0 ? defaultLayout7 : _g, _h = uProps.enableEdit, enableEdit = _h === void 0 ? false : _h, minimapCfg = uProps.minimapCfg, _j = uProps.nodeStyle, nodeStyle = _j === void 0 ? defaultNodeStyle3 : _j, _k = uProps.edgeStyle, edgeStyle = _k === void 0 ? defaultEdgeStyle2 : _k, _l = uProps.nodeStateStyles, nodeStateStyles = _l === void 0 ? defaultStateStyles2 : _l, _m = uProps.edgeStateStyles, edgeStateStyles = _m === void 0 ? defaultStateStyles2 : _m, _o = uProps.autoFit, autoFit = _o === void 0 ? true : _o, graphRef = uProps.graphRef, onReady = uProps.onReady, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate; var container2 = compat_module_default.useRef(null); var graph = compat_module_default.useRef(null); var graphId = getGraphId2(graph); - useGraph(graphs[graphId], uProps, container2); + useGraph2(graphs[graphId], uProps, container2); y2(function() { var graphSize = getGraphSize2(width2, height, container2); if (nodeType === "icon-node") { @@ -140376,7 +151454,7 @@ var OrganizationTreeGraphComponent = function(props) { } var graph2 = graphs[graphId]; if (!graph2) { - graph2 = new es_default5.TreeGraph({ + graph2 = new es_default6.TreeGraph({ container: container2.current, width: graphSize[0], height: graphSize[1], @@ -140423,11 +151501,11 @@ var OrganizationTreeGraphComponent = function(props) { } }; }, []); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default2, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default2, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); }; var organizationTreeGraph_default = OrganizationTreeGraphComponent; -// node_modules/@ant-design/charts/es/obsolescent/graphs/constants.js +// node_modules/@ant-design/graphs/es/obsolescent/graphs/constants.js var defaultStateStyles3 = { hover: { stroke: "#1890ff", @@ -140435,7 +151513,7 @@ var defaultStateStyles3 = { } }; var defaultNodeSize3 = [120, 40]; -var defaultNodeStyle3 = { +var defaultNodeStyle4 = { stroke: "#40a9ff" }; var defaultNodeAnchorPoints2 = [ @@ -140458,9 +151536,9 @@ var defaultMinimapCfg3 = { type: "keyShape" }; -// node_modules/@ant-design/charts/es/obsolescent/graphs/utils.js -var __assign20 = function() { - __assign20 = Object.assign || function(t4) { +// node_modules/@ant-design/graphs/es/obsolescent/graphs/utils.js +var __assign27 = function() { + __assign27 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -140469,7 +151547,7 @@ var __assign20 = function() { } return t4; }; - return __assign20.apply(this, arguments); + return __assign27.apply(this, arguments); }; var getGraphSize3 = function(width2, height, container2) { var CANVAS_WIDTH; @@ -140479,7 +151557,7 @@ var getGraphSize3 = function(width2, height, container2) { CANVAS_HEIGHT = container2.current.offsetHeight || 500; } if (!width2 && !CANVAS_WIDTH || !height && !CANVAS_HEIGHT) { - console.warn("\u8BF7\u4E3A Graph \u6307\u5B9A width \u4E0E height\uFF01\u5426\u5219\u5C06\u4F7F\u7528\u9ED8\u8BA4\u503C 500 * 500"); + Log2.warn("\u8BF7\u4E3A Graph \u6307\u5B9A width \u4E0E height\uFF01\u5426\u5219\u5C06\u4F7F\u7528\u9ED8\u8BA4\u503C 500 * 500"); return [500, 500]; } return [width2 || CANVAS_WIDTH || 500, height || CANVAS_HEIGHT || 500]; @@ -140515,7 +151593,7 @@ var getDefaultEdgeArrowCfg = function(d3, arrowType, fill) { } return { endArrow: { - path: es_default5.Arrow[arrowType](10, 10, d3), + path: es_default6.Arrow[arrowType](10, 10, d3), fill, d: d3 } @@ -140550,11 +151628,11 @@ var getGraphId3 = function(graph) { if (graph.current) { return graph.current; } - graph.current = "IndentedTreeGraph-" + uuid2(); + graph.current = "IndentedTreeGraph-".concat(uuid2()); return graph.current; }; var renderGraph3 = function(graph, data3) { - var originData = deepClone(data3); + var originData = deepClone2(data3); graph.data(originData); graph.render(); }; @@ -140566,20 +151644,20 @@ var processMinimap3 = function(cfg, graph) { return; if (cfg.show) { var curMminimapCfg = Object.assign(defaultMinimapCfg3, cfg); - var minimap = new es_default5.Minimap(__assign20({}, curMminimapCfg)); + var minimap = new es_default6.Minimap(__assign27({}, curMminimapCfg)); graph.addPlugin(minimap); return minimap; } return null; }; -var getMarkerPosition2 = function(direction5, size2) { - if (direction5 === void 0) { - direction5 = "right"; +var getMarkerPosition2 = function(direction3, size14) { + if (direction3 === void 0) { + direction3 = "right"; } - var width2 = size2[0], height = size2[1]; + var width2 = size14[0], height = size14[1]; var x6 = 0; var y5 = 0; - switch (direction5) { + switch (direction3) { case "top": x6 = width2 / 2; y5 = 0; @@ -140599,13 +151677,13 @@ var getMarkerPosition2 = function(direction5, size2) { } return { x: x6, y: y5 }; }; -var useProps2 = function(props, defaultProps13) { - return __assign20(__assign20(__assign20({}, defaultProps13), props), { layout: __assign20(__assign20({}, defaultProps13 === null || defaultProps13 === void 0 ? void 0 : defaultProps13.layout), props === null || props === void 0 ? void 0 : props.layout) }); +var useProps3 = function(props, defaultProps13) { + return __assign27(__assign27(__assign27({}, defaultProps13), props), { layout: __assign27(__assign27({}, defaultProps13 === null || defaultProps13 === void 0 ? void 0 : defaultProps13.layout), props === null || props === void 0 ? void 0 : props.layout) }); }; -// node_modules/@ant-design/charts/es/obsolescent/graphs/customItems.js -var __assign21 = function() { - __assign21 = Object.assign || function(t4) { +// node_modules/@ant-design/graphs/es/obsolescent/graphs/customItems.js +var __assign28 = function() { + __assign28 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -140614,42 +151692,42 @@ var __assign21 = function() { } return t4; }; - return __assign21.apply(this, arguments); + return __assign28.apply(this, arguments); }; var registerCardNode = function() { - es_default5.registerNode("card", { - draw: function(cfg, group2) { + es_default6.registerNode("card", { + draw: function(cfg, group3) { var _a6; if (cfg === void 0) { cfg = {}; } var title = cfg.title, body = cfg.body, footer = cfg.footer, collapseExpand = cfg.collapseExpand, children = cfg.children, markerPosition = cfg.markerPosition; - var size2 = cfg.size || [100, 30]; + var size14 = cfg.size || [100, 30]; var height = 0; - if (typeof size2 === "number") - size2 = [size2, size2]; - var style = __assign21({ radius: 2, fill: "#fff" }, cfg.style); + if (typeof size14 === "number") + size14 = [size14, size14]; + var style = __assign28({ radius: 2, fill: "#fff" }, cfg.style); var color4 = style.stroke || cfg.color || "#5B8FF9"; var radius = style.radius; - var shape = group2.addShape("rect", { - attrs: __assign21({ x: 0, y: 0, width: size2[0], height: size2[1], stroke: color4 }, style), + var shape = group3.addShape("rect", { + attrs: __assign28({ x: 0, y: 0, width: size14[0], height: size14[1], stroke: color4 }, style), name: "main-box", draggable: true }); var titleTextShape; if (title) { var _b = getContentAndStyle(title), text = _b.text, _c = _b.style, titleStyle = _c === void 0 ? cfg.titleStyle : _c; - titleTextShape = group2.addShape("text", { - attrs: __assign21(__assign21({ textBaseline: "top", x: Margin, y: cardTitlePadding, text }, defaultTitleLabelCfg), getConfig(titleStyle, group2)), + titleTextShape = group3.addShape("text", { + attrs: __assign28(__assign28({ textBaseline: "top", x: Margin, y: cardTitlePadding, text }, defaultTitleLabelCfg), getConfig(titleStyle, group3)), name: "title" }); } - var titleHeight = (titleTextShape ? titleTextShape.getBBox() : { height: size2[1] / 2 }).height; - var titleRectShape = group2.addShape("rect", { + var titleHeight = (titleTextShape ? titleTextShape.getBBox() : { height: size14[1] / 2 }).height; + var titleRectShape = group3.addShape("rect", { attrs: { x: 0, y: 0, - width: size2[0], + width: size14[0], height: titleHeight + 2 * cardTitlePadding, fill: color4, radius: [radius, radius, 0, 0] @@ -140660,8 +151738,8 @@ var registerCardNode = function() { titleTextShape === null || titleTextShape === void 0 ? void 0 : titleTextShape.toFront(); var markerShape; if (collapseExpand && children) { - markerShape = group2.addShape("marker", { - attrs: __assign21(__assign21(__assign21({}, getMarkerPosition2(markerPosition, size2)), { r: 6, cursor: "pointer", symbol: cfg.collapsed ? es_default5.Marker.expand : es_default5.Marker.collapse, stroke: color4, lineWidth: 1, fill: "#fff" }), getConfig(cfg.markerStyle, group2, __assign21(__assign21({}, cfg), { name: "collapse-icon" }))), + markerShape = group3.addShape("marker", { + attrs: __assign28(__assign28(__assign28({}, getMarkerPosition2(markerPosition, size14)), { r: 6, cursor: "pointer", symbol: cfg.collapsed ? es_default6.Marker.expand : es_default6.Marker.collapse, stroke: color4, lineWidth: 1, fill: "#fff" }), getConfig(cfg.markerStyle, group3, __assign28(__assign28({}, cfg), { name: "collapse-icon" }))), name: "collapse-icon" }); } @@ -140670,8 +151748,8 @@ var registerCardNode = function() { var bodyShape; if (body) { var _d = getContentAndStyle(body), text = _d.text, _e = _d.style, bodyStyle = _e === void 0 ? cfg.bodyStyle : _e; - bodyShape = group2.addShape("text", { - attrs: __assign21(__assign21({ textBaseline: "top", x: Margin, y: height + Margin, text }, defaultLabelStyle2), getConfig(bodyStyle, group2)), + bodyShape = group3.addShape("text", { + attrs: __assign28(__assign28({ textBaseline: "top", x: Margin, y: height + Margin, text }, defaultLabelStyle2), getConfig(bodyStyle, group3)), name: "body" }); height += bodyShape.getBBox().height; @@ -140682,8 +151760,8 @@ var registerCardNode = function() { height += Margin; } var _f = getContentAndStyle(footer), labelText = _f.text, _g = _f.style, labelStyle = _g === void 0 ? cfg.footerStyle : _g; - footerTextShape = group2.addShape("text", { - attrs: __assign21(__assign21({ textBaseline: "top", x: Margin, y: height + Margin, text: labelText }, defaultLabelStyle2), getConfig(labelStyle, group2)), + footerTextShape = group3.addShape("text", { + attrs: __assign28(__assign28({ textBaseline: "top", x: Margin, y: height + Margin, text: labelText }, defaultLabelStyle2), getConfig(labelStyle, group3)), name: "footer-label" }); var _h = footerTextShape.getBBox(), width2 = _h.width, contentHeight = _h.height; @@ -140693,8 +151771,8 @@ var registerCardNode = function() { content: cfg.footer.value, style: cfg.footer.valueStyle }), valueText = _j.text, _k = _j.style, valueStyle = _k === void 0 ? cfg.footerValueStyle || cfg.footerStyle : _k; - var valueTextShape = group2.addShape("text", { - attrs: __assign21(__assign21({ textBaseline: "top", x: width2 + Margin * 2, y: height + Margin, text: valueText }, defaultLabelStyle2), getConfig(valueStyle, group2)), + var valueTextShape = group3.addShape("text", { + attrs: __assign28(__assign28({ textBaseline: "top", x: width2 + Margin * 2, y: height + Margin, text: valueText }, defaultLabelStyle2), getConfig(valueStyle, group3)), name: "footer-value" }); var valueHeight = valueTextShape.getBBox().height; @@ -140704,13 +151782,10 @@ var registerCardNode = function() { } if (bodyShape) { var desTextShapeBBox = bodyShape.getBBox(); - var width2 = size2[0] > desTextShapeBBox.width + 16 ? size2[0] : desTextShapeBBox.width + 16; + var width2 = size14[0] > desTextShapeBBox.width + 16 ? size14[0] : desTextShapeBBox.width + 16; shape.attr({ width: width2, height: height + 16 }); titleRectShape === null || titleRectShape === void 0 ? void 0 : titleRectShape.attr("width", width2); - markerShape === null || markerShape === void 0 ? void 0 : markerShape.attr(__assign21({}, getMarkerPosition2(markerPosition, [ - width2, - height + titleHeight + 2 * cardTitlePadding - ]))); + markerShape === null || markerShape === void 0 ? void 0 : markerShape.attr(__assign28({}, getMarkerPosition2(markerPosition, [width2, height + titleHeight + 2 * cardTitlePadding]))); } return shape; }, @@ -140718,31 +151793,31 @@ var registerCardNode = function() { }, "single-node"); }; var registerIconNode = function() { - es_default5.registerNode("icon-node", { + es_default6.registerNode("icon-node", { options: { size: [60, 20], stroke: "#91d5ff", fill: "#91d5ff" }, - draw: function(cfg, group2) { + draw: function(cfg, group3) { if (cfg === void 0) { cfg = {}; } var styles = this.getShapeStyle(cfg); var _a6 = cfg.labelCfg, labelCfg = _a6 === void 0 ? {} : _a6, labelStyle = cfg.labelStyle, label17 = cfg.label, markerStyle = cfg.markerStyle, showMarker = cfg.showMarker, title = cfg.title, titleStyle = cfg.titleStyle; - var keyShape = group2.addShape("rect", { - attrs: __assign21(__assign21({}, styles), { x: 0, y: 0 }) + var keyShape = group3.addShape("rect", { + attrs: __assign28(__assign28({}, styles), { x: 0, y: 0 }) }); var keyShapeHeight = keyShape.getBBox().height; var headShape; if (cfg.leftIcon) { var _b = cfg.leftIcon, _c = _b.x, x6 = _c === void 0 ? 8 : _c, y5 = _b.y, _d = _b.width, width2 = _d === void 0 ? 24 : _d, _e = _b.height, height = _e === void 0 ? 24 : _e, style = _b.style; if (style) { - group2.addShape("rect", { - attrs: __assign21({ x: 1, y: 1, width: 38, height: styles.height - 2 }, style) + group3.addShape("rect", { + attrs: __assign28({ x: 1, y: 1, width: 38, height: styles.height - 2 }, style) }); } - headShape = group2.addShape("image", { + headShape = group3.addShape("image", { attrs: { x: x6, y: y5 || keyShapeHeight / 2 - height / 2, @@ -140754,26 +151829,26 @@ var registerIconNode = function() { }); } if (showMarker) { - group2.addShape("marker", { - attrs: __assign21({ x: styles.width / 3, y: styles.height + 6, r: 6, stroke: "#73d13d", cursor: "pointer", symbol: es_default5.Marker.expand }, getConfig(markerStyle, group2, __assign21(__assign21({}, cfg), { name: "add-item" }))), + group3.addShape("marker", { + attrs: __assign28({ x: styles.width / 3, y: styles.height + 6, r: 6, stroke: "#73d13d", cursor: "pointer", symbol: es_default6.Marker.expand }, getConfig(markerStyle, group3, __assign28(__assign28({}, cfg), { name: "add-item" }))), name: "add-item" }); - group2.addShape("marker", { - attrs: __assign21({ x: styles.width * 2 / 3, y: styles.height + 6, r: 6, stroke: "#ff4d4f", cursor: "pointer", symbol: es_default5.Marker.collapse }, getConfig(markerStyle, group2, __assign21(__assign21({}, cfg), { name: "remove-item" }))), + group3.addShape("marker", { + attrs: __assign28({ x: styles.width * 2 / 3, y: styles.height + 6, r: 6, stroke: "#ff4d4f", cursor: "pointer", symbol: es_default6.Marker.collapse }, getConfig(markerStyle, group3, __assign28(__assign28({}, cfg), { name: "remove-item" }))), name: "remove-item" }); } if (label17) { - var textCfg = labelStyle ? getConfig(labelStyle, group2, cfg) : labelCfg.style; + var textCfg = labelStyle ? getConfig(labelStyle, group3, cfg) : labelCfg.style; var y5 = title ? styles.height / 2 - (textCfg.fontSize * 1 || 12) - Margin / 2 : styles.height / 2; - group2.addShape("text", { - attrs: __assign21({ text: label17, x: styles.width / 2, y: y5, textAlign: headShape ? "start" : "center", textBaseline: title ? "top" : "middle" }, textCfg) + group3.addShape("text", { + attrs: __assign28({ text: label17, x: styles.width / 2, y: y5, textAlign: headShape ? "start" : "center", textBaseline: title ? "top" : "middle" }, textCfg) }); } if (title) { - var titleCfg = titleStyle ? getConfig(titleStyle, group2, cfg) : labelCfg.style; - group2.addShape("text", { - attrs: __assign21({ text: title, x: styles.width / 2, y: styles.height / 2 + Margin / 2, textAlign: headShape ? "start" : "center", textBaseline: "top" }, titleCfg) + var titleCfg = titleStyle ? getConfig(titleStyle, group3, cfg) : labelCfg.style; + group3.addShape("text", { + attrs: __assign28({ text: title, x: styles.width / 2, y: styles.height / 2 + Margin / 2, textAlign: headShape ? "start" : "center", textBaseline: "top" }, titleCfg) }); } return keyShape; @@ -140781,13 +151856,13 @@ var registerIconNode = function() { }, "rect"); }; -// node_modules/@ant-design/charts/es/obsolescent/graph/dagre.js +// node_modules/@ant-design/graphs/es/obsolescent/graph/dagre.js registerCustomItems(); registerCardNode(); -var defaultNodeStyle4 = { +var defaultNodeStyle5 = { stroke: "#40a9ff" }; -var defaultLayout3 = { +var defaultLayout8 = { type: "dagre", rankdir: "TB", nodesepFunc: function() { @@ -140798,7 +151873,7 @@ var defaultLayout3 = { }, controlPoints: true }; -var defaultProps2 = { +var defaultProps7 = { nodeType: "modelRect", edgeType: "polyline", behaviors: ["zoom-canvas", "drag-canvas"], @@ -140806,8 +151881,8 @@ var defaultProps2 = { nodeLabelCfg: defaultLabelCfg, edgeLabelCfg: defaultLabelCfg, nodeAnchorPoints: defaultNodeAnchorPoints, - layout: defaultLayout3, - nodeStyle: defaultNodeStyle4, + layout: defaultLayout8, + nodeStyle: defaultNodeStyle5, edgeStyle: defaultEdgeStyle, nodeStateStyles: defaultStateStyles2, edgeStateStyles: defaultStateStyles2, @@ -140815,17 +151890,17 @@ var defaultProps2 = { }; var graphs2 = {}; var DagreGraph = function(props) { - var uProps = useProps(props, defaultProps2); - var data3 = uProps.data, className = uProps.className, style = uProps.style, width2 = uProps.width, height = uProps.height, _a6 = uProps.nodeType, nodeType = _a6 === void 0 ? "modelRect" : _a6, _b = uProps.edgeType, edgeType = _b === void 0 ? "polyline" : _b, _c = uProps.behaviors, behaviors2 = _c === void 0 ? ["zoom-canvas", "drag-canvas"] : _c, _d = uProps.nodeSize, nodeSize = _d === void 0 ? defaultNodeSize2 : _d, _e = uProps.nodeLabelCfg, nodeLabelCfg = _e === void 0 ? defaultLabelCfg : _e, _f = uProps.edgeLabelCfg, edgeLabelCfg = _f === void 0 ? defaultLabelCfg : _f, _g = uProps.nodeAnchorPoints, nodeAnchorPoints = _g === void 0 ? defaultNodeAnchorPoints : _g, _h = uProps.layout, layout6 = _h === void 0 ? defaultLayout3 : _h, minimapCfg = uProps.minimapCfg, _j = uProps.nodeStyle, nodeStyle = _j === void 0 ? defaultNodeStyle4 : _j, _k = uProps.edgeStyle, edgeStyle = _k === void 0 ? defaultEdgeStyle : _k, _l = uProps.nodeStateStyles, nodeStateStyles = _l === void 0 ? defaultStateStyles2 : _l, _m = uProps.edgeStateStyles, edgeStateStyles = _m === void 0 ? defaultStateStyles2 : _m, _o = uProps.autoFit, autoFit = _o === void 0 ? true : _o, graphRef = uProps.graphRef, onReady = uProps.onReady, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate; + var uProps = useProps2(props, defaultProps7); + var data3 = uProps.data, className = uProps.className, style = uProps.style, width2 = uProps.width, height = uProps.height, _a6 = uProps.nodeType, nodeType = _a6 === void 0 ? "modelRect" : _a6, _b = uProps.edgeType, edgeType = _b === void 0 ? "polyline" : _b, _c = uProps.behaviors, behaviors2 = _c === void 0 ? ["zoom-canvas", "drag-canvas"] : _c, _d = uProps.nodeSize, nodeSize = _d === void 0 ? defaultNodeSize2 : _d, _e = uProps.nodeLabelCfg, nodeLabelCfg = _e === void 0 ? defaultLabelCfg : _e, _f = uProps.edgeLabelCfg, edgeLabelCfg = _f === void 0 ? defaultLabelCfg : _f, _g = uProps.nodeAnchorPoints, nodeAnchorPoints = _g === void 0 ? defaultNodeAnchorPoints : _g, _h = uProps.layout, layout6 = _h === void 0 ? defaultLayout8 : _h, minimapCfg = uProps.minimapCfg, _j = uProps.nodeStyle, nodeStyle = _j === void 0 ? defaultNodeStyle5 : _j, _k = uProps.edgeStyle, edgeStyle = _k === void 0 ? defaultEdgeStyle : _k, _l = uProps.nodeStateStyles, nodeStateStyles = _l === void 0 ? defaultStateStyles2 : _l, _m = uProps.edgeStateStyles, edgeStateStyles = _m === void 0 ? defaultStateStyles2 : _m, _o = uProps.autoFit, autoFit = _o === void 0 ? true : _o, graphRef = uProps.graphRef, onReady = uProps.onReady, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate; var container2 = compat_module_default.useRef(null); var graph = compat_module_default.useRef(null); var graphId = getGraphId2(graph); - useGraph(graphs2[graphId], uProps, container2); + useGraph2(graphs2[graphId], uProps, container2); y2(function() { var graphSize = getGraphSize2(width2, height, container2); var graph2 = graphs2[graphId]; if (!graph2) { - graph2 = new es_default5.Graph({ + graph2 = new es_default6.Graph({ container: container2.current, width: graphSize[0], height: graphSize[1], @@ -140867,18 +151942,18 @@ var DagreGraph = function(props) { } }; }, []); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default2, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default2, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); }; var dagre_default2 = DagreGraph; -// node_modules/@ant-design/charts/es/obsolescent/graph/dagreFundFlow.js +// node_modules/@ant-design/graphs/es/obsolescent/graph/dagreFundFlow.js registerCustomItems(); var defaultNodeSize4 = [150, 30]; -var defaultNodeStyle5 = { +var defaultNodeStyle6 = { stroke: "#72CC4A", fill: "#f00" }; -var defaultLayout4 = { +var defaultLayout9 = { type: "dagre", rankdir: "LR", nodesep: 30, @@ -140890,7 +151965,7 @@ var defaultLabelCfg2 = { fontSize: 10 } }; -var defaultProps3 = { +var defaultProps8 = { nodeType: "round-rect", edgeType: "fund-polyline", behaviors: ["zoom-canvas", "drag-canvas"], @@ -140898,8 +151973,8 @@ var defaultProps3 = { nodeLabelCfg: defaultLabelCfg2, edgeLabelCfg: defaultLabelCfg2, nodeAnchorPoints: defaultNodeAnchorPoints, - layout: defaultLayout4, - nodeStyle: defaultNodeStyle5, + layout: defaultLayout9, + nodeStyle: defaultNodeStyle6, edgeStyle: defaultEdgeStyle, nodeStateStyles: defaultStateStyles2, edgeStateStyles: defaultStateStyles2, @@ -140908,17 +151983,17 @@ var defaultProps3 = { }; var graphs3 = {}; var DagreFundFlowGraph = function(props) { - var uProps = useProps(props, defaultProps3); - var data3 = uProps.data, className = uProps.className, style = uProps.style, width2 = uProps.width, height = uProps.height, _a6 = uProps.nodeType, nodeType = _a6 === void 0 ? "round-rect" : _a6, _b = uProps.edgeType, edgeType = _b === void 0 ? "fund-polyline" : _b, _c = uProps.behaviors, behaviors2 = _c === void 0 ? ["zoom-canvas", "drag-canvas"] : _c, _d = uProps.nodeSize, nodeSize = _d === void 0 ? defaultNodeSize4 : _d, _e = uProps.nodeLabelCfg, nodeLabelCfg = _e === void 0 ? defaultLabelCfg2 : _e, _f = uProps.edgeLabelCfg, edgeLabelCfg = _f === void 0 ? defaultLabelCfg2 : _f, _g = uProps.nodeAnchorPoints, nodeAnchorPoints = _g === void 0 ? defaultNodeAnchorPoints : _g, _h = uProps.layout, layout6 = _h === void 0 ? defaultLayout4 : _h, minimapCfg = uProps.minimapCfg, _j = uProps.nodeStyle, nodeStyle = _j === void 0 ? defaultNodeStyle5 : _j, _k = uProps.edgeStyle, edgeStyle = _k === void 0 ? defaultEdgeStyle : _k, _l = uProps.nodeStateStyles, nodeStateStyles = _l === void 0 ? defaultStateStyles2 : _l, _m = uProps.edgeStateStyles, edgeStateStyles = _m === void 0 ? defaultStateStyles2 : _m, _o = uProps.colorMap, colorMap2 = _o === void 0 ? {} : _o, _p = uProps.autoFit, autoFit = _p === void 0 ? true : _p, graphRef = uProps.graphRef, onReady = uProps.onReady, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate; + var uProps = useProps2(props, defaultProps8); + var data3 = uProps.data, className = uProps.className, style = uProps.style, width2 = uProps.width, height = uProps.height, _a6 = uProps.nodeType, nodeType = _a6 === void 0 ? "round-rect" : _a6, _b = uProps.edgeType, edgeType = _b === void 0 ? "fund-polyline" : _b, _c = uProps.behaviors, behaviors2 = _c === void 0 ? ["zoom-canvas", "drag-canvas"] : _c, _d = uProps.nodeSize, nodeSize = _d === void 0 ? defaultNodeSize4 : _d, _e = uProps.nodeLabelCfg, nodeLabelCfg = _e === void 0 ? defaultLabelCfg2 : _e, _f = uProps.edgeLabelCfg, edgeLabelCfg = _f === void 0 ? defaultLabelCfg2 : _f, _g = uProps.nodeAnchorPoints, nodeAnchorPoints = _g === void 0 ? defaultNodeAnchorPoints : _g, _h = uProps.layout, layout6 = _h === void 0 ? defaultLayout9 : _h, minimapCfg = uProps.minimapCfg, _j = uProps.nodeStyle, nodeStyle = _j === void 0 ? defaultNodeStyle6 : _j, _k = uProps.edgeStyle, edgeStyle = _k === void 0 ? defaultEdgeStyle : _k, _l = uProps.nodeStateStyles, nodeStateStyles = _l === void 0 ? defaultStateStyles2 : _l, _m = uProps.edgeStateStyles, edgeStateStyles = _m === void 0 ? defaultStateStyles2 : _m, _o = uProps.colorMap, colorMap2 = _o === void 0 ? {} : _o, _p = uProps.autoFit, autoFit = _p === void 0 ? true : _p, graphRef = uProps.graphRef, onReady = uProps.onReady, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate; var container2 = compat_module_default.useRef(null); var graph = compat_module_default.useRef(null); var graphId = getGraphId2(graph); - useGraph(graphs3[graphId], uProps, container2); + useGraph2(graphs3[graphId], uProps, container2); y2(function() { var graphSize = getGraphSize2(width2, height, container2); var graph2 = graphs3[graphId]; if (!graph2) { - graph2 = new es_default5.Graph({ + graph2 = new es_default6.Graph({ container: container2.current, width: graphSize[0], height: graphSize[1], @@ -140949,7 +152024,7 @@ var DagreFundFlowGraph = function(props) { graphRef.current = graph2; } processMinimap2(minimapCfg, graph2); - var originData = deepClone(data3); + var originData = deepClone2(data3); graph2.data(originData); graph2.render(); if (onReady) { @@ -140974,13 +152049,13 @@ var DagreFundFlowGraph = function(props) { } }; }, []); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default2, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default2, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); }; var dagreFundFlow_default = DagreFundFlowGraph; -// node_modules/@ant-design/charts/es/obsolescent/graph/indented.js +// node_modules/@ant-design/graphs/es/obsolescent/graph/indented.js registerCustomItems(); -var defaultNodeStyle6 = { +var defaultNodeStyle7 = { stroke: "#40a9ff" }; var defaultNodeAnchorPoints3 = [ @@ -140990,11 +152065,11 @@ var defaultNodeAnchorPoints3 = [ var defaultEdgeStyle3 = { stroke: "#ccc", endArrow: { - path: es_default5.Arrow.vee(10, 10), + path: es_default6.Arrow.vee(10, 10), fill: "#ccc" } }; -var defaultLayout5 = { +var defaultLayout10 = { type: "indented", direction: "LR", dropCap: false, @@ -141006,15 +152081,15 @@ var defaultLayout5 = { return 100; } }; -var defaultProps4 = { +var defaultProps9 = { nodeType: "card-node", edgeType: "cubic-horizontal", behaviors: ["zoom-canvas", "drag-canvas"], nodeSize: defaultNodeSize2, nodeLabelCfg: defaultLabelCfg, nodeAnchorPoints: defaultNodeAnchorPoints3, - layout: defaultLayout5, - nodeStyle: defaultNodeStyle6, + layout: defaultLayout10, + nodeStyle: defaultNodeStyle7, edgeStyle: defaultEdgeStyle3, nodeStateStyles: defaultStateStyles2, edgeStateStyles: defaultStateStyles2, @@ -141023,17 +152098,17 @@ var defaultProps4 = { }; var graphs4 = {}; var IndentedTree = function(props) { - var uProps = useProps(props, defaultProps4); - var data3 = uProps.data, className = uProps.className, style = uProps.style, width2 = uProps.width, height = uProps.height, _a6 = uProps.nodeType, nodeType = _a6 === void 0 ? "card-node" : _a6, _b = uProps.edgeType, edgeType = _b === void 0 ? "cubic-horizontal" : _b, _c = uProps.behaviors, behaviors2 = _c === void 0 ? ["zoom-canvas", "drag-canvas"] : _c, _d = uProps.nodeSize, nodeSize = _d === void 0 ? defaultNodeSize2 : _d, _e = uProps.nodeLabelCfg, nodeLabelCfg = _e === void 0 ? defaultLabelCfg : _e, _f = uProps.nodeAnchorPoints, nodeAnchorPoints = _f === void 0 ? defaultNodeAnchorPoints3 : _f, _g = uProps.layout, layout6 = _g === void 0 ? defaultLayout5 : _g, minimapCfg = uProps.minimapCfg, _h = uProps.nodeStyle, nodeStyle = _h === void 0 ? defaultNodeStyle6 : _h, _j = uProps.edgeStyle, edgeStyle = _j === void 0 ? defaultEdgeStyle3 : _j, _k = uProps.nodeStateStyles, nodeStateStyles = _k === void 0 ? defaultStateStyles2 : _k, _l = uProps.edgeStateStyles, edgeStateStyles = _l === void 0 ? defaultStateStyles2 : _l, _m = uProps.collapseExpand, collapseExpand = _m === void 0 ? true : _m, _o = uProps.autoFit, autoFit = _o === void 0 ? true : _o, handleNodeClick = uProps.handleNodeClick, graphRef = uProps.graphRef, onReady = uProps.onReady, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate; + var uProps = useProps2(props, defaultProps9); + var data3 = uProps.data, className = uProps.className, style = uProps.style, width2 = uProps.width, height = uProps.height, _a6 = uProps.nodeType, nodeType = _a6 === void 0 ? "card-node" : _a6, _b = uProps.edgeType, edgeType = _b === void 0 ? "cubic-horizontal" : _b, _c = uProps.behaviors, behaviors2 = _c === void 0 ? ["zoom-canvas", "drag-canvas"] : _c, _d = uProps.nodeSize, nodeSize = _d === void 0 ? defaultNodeSize2 : _d, _e = uProps.nodeLabelCfg, nodeLabelCfg = _e === void 0 ? defaultLabelCfg : _e, _f = uProps.nodeAnchorPoints, nodeAnchorPoints = _f === void 0 ? defaultNodeAnchorPoints3 : _f, _g = uProps.layout, layout6 = _g === void 0 ? defaultLayout10 : _g, minimapCfg = uProps.minimapCfg, _h = uProps.nodeStyle, nodeStyle = _h === void 0 ? defaultNodeStyle7 : _h, _j = uProps.edgeStyle, edgeStyle = _j === void 0 ? defaultEdgeStyle3 : _j, _k = uProps.nodeStateStyles, nodeStateStyles = _k === void 0 ? defaultStateStyles2 : _k, _l = uProps.edgeStateStyles, edgeStateStyles = _l === void 0 ? defaultStateStyles2 : _l, _m = uProps.collapseExpand, collapseExpand = _m === void 0 ? true : _m, _o = uProps.autoFit, autoFit = _o === void 0 ? true : _o, handleNodeClick = uProps.handleNodeClick, graphRef = uProps.graphRef, onReady = uProps.onReady, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate; var graph = compat_module_default.useRef(null); var graphId = getGraphId2(graph); var container2 = compat_module_default.useRef(null); - useGraph(graphs4[graphId], uProps, container2); + useGraph2(graphs4[graphId], uProps, container2); y2(function() { var graphSize = getGraphSize2(width2, height, container2); var graph2 = graphs4[graphId]; if (!graph2) { - graph2 = new es_default5.TreeGraph({ + graph2 = new es_default6.TreeGraph({ container: container2.current, width: graphSize[0], height: graphSize[1], @@ -141093,13 +152168,13 @@ var IndentedTree = function(props) { } }; }, []); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default2, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default2, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); }; var indented_default = IndentedTree; -// node_modules/@ant-design/charts/es/obsolescent/graphs/indentedTreeGraph/index.js -var __assign22 = function() { - __assign22 = Object.assign || function(t4) { +// node_modules/@ant-design/graphs/es/obsolescent/graphs/indentedTreeGraph/index.js +var __assign29 = function() { + __assign29 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -141108,11 +152183,11 @@ var __assign22 = function() { } return t4; }; - return __assign22.apply(this, arguments); + return __assign29.apply(this, arguments); }; var graphs5 = {}; registerCardNode(); -var defaultLayout6 = { +var defaultLayout11 = { type: "compactBox", direction: "LR", getId: function(d3) { @@ -141131,13 +152206,13 @@ var defaultLayout6 = { return 100; } }; -var defaultProps5 = { +var defaultProps10 = { nodeType: "card", edgeType: "cubic-horizontal", behaviors: ["zoom-canvas", "drag-canvas"], nodeAnchorPoints: defaultNodeAnchorPoints2, nodeSize: defaultNodeSize3, - layout: defaultLayout6, + layout: defaultLayout11, animate: true, markerPosition: "right", nodeStateStyles: defaultStateStyles3, @@ -141151,17 +152226,17 @@ var defaultProps5 = { } }; var IndentedTreeGraph = function(props) { - var uProps = useProps2(props, defaultProps5); + var uProps = useProps3(props, defaultProps10); var data3 = uProps.data, className = uProps.className, style = uProps.style, width2 = uProps.width, height = uProps.height, _a6 = uProps.nodeType, nodeType = _a6 === void 0 ? "card" : _a6, _b = uProps.edgeType, edgeType = _b === void 0 ? "cubic-horizontal" : _b, _c = uProps.behaviors, behaviors2 = _c === void 0 ? ["zoom-canvas", "drag-canvas"] : _c, _d = uProps.nodeAnchorPoints, nodeAnchorPoints = _d === void 0 ? defaultNodeAnchorPoints2 : _d, _e = uProps.nodeSize, nodeSize = _e === void 0 ? defaultNodeSize3 : _e, layout6 = uProps.layout, _f = uProps.animate, animate = _f === void 0 ? true : _f, nodeStyle = uProps.nodeStyle, edgeStyle = uProps.edgeStyle, edgeCfg = uProps.edgeCfg, markerStyle = uProps.markerStyle, _g = uProps.markerPosition, markerPosition = _g === void 0 ? "right" : _g, _h = uProps.nodeStateStyles, nodeStateStyles = _h === void 0 ? defaultStateStyles3 : _h, _j = uProps.edgeStateStyles, edgeStateStyles = _j === void 0 ? defaultStateStyles3 : _j, _k = uProps.collapseExpand, collapseExpand = _k === void 0 ? true : _k, titleStyle = uProps.titleStyle, bodyStyle = uProps.bodyStyle, footerStyle = uProps.footerStyle, footerValueStyle = uProps.footerValueStyle, _l = uProps.showArrow, showArrow = _l === void 0 ? true : _l, _m = uProps.arrowType, arrowType = _m === void 0 ? "vee" : _m, _o = uProps.autoFit, autoFit = _o === void 0 ? true : _o, onReady = uProps.onReady, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate; var container2 = compat_module_default.useRef(null); var graph = compat_module_default.useRef(null); var graphId = getGraphId3(graph); - useGraph(graphs5[graphId], uProps, container2); + useGraph2(graphs5[graphId], uProps, container2); y2(function() { var graphSize = getGraphSize3(width2, height, container2); var graph2 = graphs5[graphId]; if (!graph2) { - graph2 = new es_default5.TreeGraph({ + graph2 = new es_default6.TreeGraph({ container: container2.current, width: graphSize[0], height: graphSize[1], @@ -141198,7 +152273,7 @@ var IndentedTreeGraph = function(props) { }; } return { - style: __assign22(__assign22({}, defaultNodeStyle3), nodeStyle) + style: __assign29(__assign29({}, defaultNodeStyle4), nodeStyle) }; }); graph2.edge(function(edge2) { @@ -141211,7 +152286,7 @@ var IndentedTreeGraph = function(props) { }; } return { - style: __assign22(__assign22({ stroke: "#ccc" }, showArrow && getDefaultEdgeArrowCfg(0, arrowType)), edgeStyle) + style: __assign29(__assign29({ stroke: "#ccc" }, showArrow && getDefaultEdgeArrowCfg(0, arrowType)), edgeStyle) }; }); if (collapseExpand) { @@ -141228,13 +152303,13 @@ var IndentedTreeGraph = function(props) { } }; }, []); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default2, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default2, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); }; var indentedTreeGraph_default = IndentedTreeGraph; -// node_modules/@ant-design/charts/es/obsolescent/graphs/organizationalGraph/index.js -var __assign23 = function() { - __assign23 = Object.assign || function(t4) { +// node_modules/@ant-design/graphs/es/obsolescent/graphs/organizationalGraph/index.js +var __assign30 = function() { + __assign30 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -141243,33 +152318,33 @@ var __assign23 = function() { } return t4; }; - return __assign23.apply(this, arguments); + return __assign30.apply(this, arguments); }; -var defaultNodeStyle7 = { +var defaultNodeStyle8 = { fill: "#91d5ff", stroke: "#40a9ff", radius: 2 }; -var defaultLayout7 = { +var defaultLayout12 = { type: "compactBox", direction: "TB", - getId: function getId2(d3) { + getId: function getId3(d3) { return d3.id; }, - getHeight: function getHeight4() { + getHeight: function getHeight5() { return 16; }, - getWidth: function getWidth2() { + getWidth: function getWidth3() { return 16; }, - getVGap: function getVGap2() { + getVGap: function getVGap3() { return 40; }, - getHGap: function getHGap2() { + getHGap: function getHGap3() { return 70; } }; -var defaultProps6 = { +var defaultProps11 = { animate: true, nodeType: "rect", edgeType: "polyline", @@ -141278,7 +152353,7 @@ var defaultProps6 = { nodeLabelCfg: { style: defaultLabelStyle2 }, - layout: defaultLayout7, + layout: defaultLayout12, showMarker: false, showArrow: true, arrowType: "triangle", @@ -141291,12 +152366,12 @@ var defaultProps6 = { }; var graphs6 = {}; var OrganizationalGraph = function(props) { - var uProps = useProps2(props, defaultProps6); - var data3 = uProps.data, className = uProps.className, style = uProps.style, width2 = uProps.width, height = uProps.height, _a6 = uProps.animate, animate = _a6 === void 0 ? true : _a6, _b = uProps.nodeType, nodeType = _b === void 0 ? "rect" : _b, _c = uProps.edgeType, edgeType = _c === void 0 ? "polyline" : _c, _d = uProps.nodeSize, nodeSize = _d === void 0 ? defaultNodeSize3 : _d, _e = uProps.behaviors, behaviors2 = _e === void 0 ? ["drag-canvas", "zoom-canvas"] : _e, nodeLabelCfg = uProps.nodeLabelCfg, nodeCfg = uProps.nodeCfg, _f = uProps.layout, layout6 = _f === void 0 ? defaultLayout7 : _f, _g = uProps.showMarker, showMarker = _g === void 0 ? false : _g, _h = uProps.showArrow, showArrow = _h === void 0 ? true : _h, _j = uProps.arrowType, arrowType = _j === void 0 ? "triangle" : _j, minimapCfg = uProps.minimapCfg, edgeCfg = uProps.edgeCfg, markerStyle = uProps.markerStyle, _k = uProps.nodeStateStyles, nodeStateStyles = _k === void 0 ? defaultStateStyles3 : _k, _l = uProps.edgeStateStyles, edgeStateStyles = _l === void 0 ? defaultStateStyles3 : _l, _m = uProps.autoFit, autoFit = _m === void 0 ? true : _m, onReady = uProps.onReady, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate; + var uProps = useProps3(props, defaultProps11); + var data3 = uProps.data, className = uProps.className, style = uProps.style, width2 = uProps.width, height = uProps.height, _a6 = uProps.animate, animate = _a6 === void 0 ? true : _a6, _b = uProps.nodeType, nodeType = _b === void 0 ? "rect" : _b, _c = uProps.edgeType, edgeType = _c === void 0 ? "polyline" : _c, _d = uProps.nodeSize, nodeSize = _d === void 0 ? defaultNodeSize3 : _d, _e = uProps.behaviors, behaviors2 = _e === void 0 ? ["drag-canvas", "zoom-canvas"] : _e, nodeLabelCfg = uProps.nodeLabelCfg, nodeCfg = uProps.nodeCfg, _f = uProps.layout, layout6 = _f === void 0 ? defaultLayout12 : _f, _g = uProps.showMarker, showMarker = _g === void 0 ? false : _g, _h = uProps.showArrow, showArrow = _h === void 0 ? true : _h, _j = uProps.arrowType, arrowType = _j === void 0 ? "triangle" : _j, minimapCfg = uProps.minimapCfg, edgeCfg = uProps.edgeCfg, markerStyle = uProps.markerStyle, _k = uProps.nodeStateStyles, nodeStateStyles = _k === void 0 ? defaultStateStyles3 : _k, _l = uProps.edgeStateStyles, edgeStateStyles = _l === void 0 ? defaultStateStyles3 : _l, _m = uProps.autoFit, autoFit = _m === void 0 ? true : _m, onReady = uProps.onReady, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate; var container2 = compat_module_default.useRef(null); var graph = compat_module_default.useRef(null); var graphId = getGraphId3(graph); - useGraph(graphs6[graphId], uProps, container2); + useGraph2(graphs6[graphId], uProps, container2); var arrowOffset = (Array.isArray(nodeSize) ? nodeSize[1] : nodeSize) / 2; y2(function() { var graphSize = getGraphSize3(width2, height, container2); @@ -141305,7 +152380,7 @@ var OrganizationalGraph = function(props) { } var graph2 = graphs6[graphId]; if (!graph2) { - graph2 = new es_default5.TreeGraph({ + graph2 = new es_default6.TreeGraph({ container: container2.current, width: graphSize[0], height: graphSize[1], @@ -141336,14 +152411,14 @@ var OrganizationalGraph = function(props) { return nodeCfg(node, graph2); } return { - style: __assign23(__assign23({}, defaultNodeStyle7), nodeCfg === null || nodeCfg === void 0 ? void 0 : nodeCfg.style) + style: __assign30(__assign30({}, defaultNodeStyle8), nodeCfg === null || nodeCfg === void 0 ? void 0 : nodeCfg.style) }; }); graph2.edge(function(edge2) { if (typeof edgeCfg === "function") { return edgeCfg(edge2, graph2); } - return __assign23(__assign23({}, edgeCfg), { style: __assign23(__assign23({ stroke: "#91d5ff" }, showArrow && getDefaultEdgeArrowCfg(arrowOffset, arrowType, "#91d5ff")), edgeCfg === null || edgeCfg === void 0 ? void 0 : edgeCfg.style) }); + return __assign30(__assign30({}, edgeCfg), { style: __assign30(__assign30({ stroke: "#91d5ff" }, showArrow && getDefaultEdgeArrowCfg(arrowOffset, arrowType, "#91d5ff")), edgeCfg === null || edgeCfg === void 0 ? void 0 : edgeCfg.style) }); }); processMinimap3(minimapCfg, graph2); renderGraph3(graph2, data3); @@ -141357,13 +152432,13 @@ var OrganizationalGraph = function(props) { } }; }, []); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default2, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default2, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); }; var organizationalGraph_default = OrganizationalGraph; -// node_modules/@ant-design/charts/es/obsolescent/graphs/radialGraph/index.js -var __assign24 = function() { - __assign24 = Object.assign || function(t4) { +// node_modules/@ant-design/graphs/es/obsolescent/graphs/radialGraph/index.js +var __assign31 = function() { + __assign31 = Object.assign || function(t4) { for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s4 = arguments[i4]; for (var p4 in s4) @@ -141372,24 +152447,24 @@ var __assign24 = function() { } return t4; }; - return __assign24.apply(this, arguments); + return __assign31.apply(this, arguments); }; var graphs7 = {}; -var defaultLayout8 = { +var defaultLayout13 = { type: "dendrogram", direction: "LR", nodeSep: 20, rankSep: 100, radial: true }; -var defaultProps7 = { +var defaultProps12 = { nodeType: "circle", linkCenter: true, edgeType: "line", behaviors: ["zoom-canvas", "drag-canvas"], nodeAnchorPoints: defaultNodeAnchorPoints2, nodeSize: 30, - layout: defaultLayout8, + layout: defaultLayout13, animate: true, nodeStateStyles: defaultStateStyles3, edgeStateStyles: defaultStateStyles3, @@ -141398,18 +152473,18 @@ var defaultProps7 = { autoFit: true }; var RadialGraph = function(props) { - var uProps = useProps2(props, defaultProps7); + var uProps = useProps3(props, defaultProps12); var data3 = uProps.data, className = uProps.className, style = uProps.style, width2 = uProps.width, height = uProps.height, _a6 = uProps.nodeType, nodeType = _a6 === void 0 ? "circle" : _a6, _b = uProps.linkCenter, linkCenter = _b === void 0 ? true : _b, _c = uProps.edgeType, edgeType = _c === void 0 ? "line" : _c, _d = uProps.behaviors, behaviors2 = _d === void 0 ? ["zoom-canvas", "drag-canvas"] : _d, _e = uProps.nodeAnchorPoints, nodeAnchorPoints = _e === void 0 ? defaultNodeAnchorPoints2 : _e, _f = uProps.nodeSize, nodeSize = _f === void 0 ? 30 : _f, layout6 = uProps.layout, _g = uProps.animate, animate = _g === void 0 ? true : _g, nodeCfg = uProps.nodeCfg, edgeCfg = uProps.edgeCfg, _h = uProps.nodeStateStyles, nodeStateStyles = _h === void 0 ? defaultStateStyles3 : _h, _j = uProps.edgeStateStyles, edgeStateStyles = _j === void 0 ? defaultStateStyles3 : _j, _k = uProps.showArrow, showArrow = _k === void 0 ? false : _k, _l = uProps.arrowType, arrowType = _l === void 0 ? "triangle" : _l, _m = uProps.autoFit, autoFit = _m === void 0 ? true : _m, onReady = uProps.onReady, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate; var container2 = compat_module_default.useRef(null); var graph = compat_module_default.useRef(null); var graphId = getGraphId3(graph); - useGraph(graphs7[graphId], uProps, container2); + useGraph2(graphs7[graphId], uProps, container2); var arrowOffset = (Array.isArray(nodeSize) ? nodeSize[0] : nodeSize) / 2; y2(function() { var graphSize = getGraphSize3(width2, height, container2); var graph2 = graphs7[graphId]; if (!graph2) { - graph2 = new es_default5.TreeGraph({ + graph2 = new es_default6.TreeGraph({ container: container2.current, width: graphSize[0], height: graphSize[1], @@ -141437,14 +152512,14 @@ var RadialGraph = function(props) { if (typeof nodeCfg === "function") { return nodeCfg(node, graph2); } - return __assign24(__assign24({}, nodeCfg), { style: __assign24(__assign24({}, defaultNodeStyle3), nodeCfg === null || nodeCfg === void 0 ? void 0 : nodeCfg.style) }); + return __assign31(__assign31({}, nodeCfg), { style: __assign31(__assign31({}, defaultNodeStyle4), nodeCfg === null || nodeCfg === void 0 ? void 0 : nodeCfg.style) }); }); graph2.edge(function(edge2) { if (typeof edgeCfg === "function") { return edgeCfg(edge2, graph2); } return { - style: __assign24(__assign24({ stroke: "#ccc" }, showArrow && getDefaultEdgeArrowCfg(arrowOffset, arrowType)), edgeCfg === null || edgeCfg === void 0 ? void 0 : edgeCfg.style) + style: __assign31(__assign31({ stroke: "#ccc" }, showArrow && getDefaultEdgeArrowCfg(arrowOffset, arrowType)), edgeCfg === null || edgeCfg === void 0 ? void 0 : edgeCfg.style) }; }); renderGraph3(graph2, data3); @@ -141458,1634 +152533,50 @@ var RadialGraph = function(props) { } }; }, []); - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); + return compat_module_default.createElement(errorBoundary_default2, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default2, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); }; var radialGraph_default = RadialGraph; -// node_modules/@ant-design/charts/es/graphs/hooks/useFullscreen.js -var useFullscreen = function(el) { - var _a6 = l3(false), fullscreen = _a6[0], setFullscreen = _a6[1]; - var handleFullScreenChange = function() { - if (!document.fullscreenElement) { - setFullscreen(false); - } - }; - var enterFullscreen = function() { - if (el && el.requestFullscreen) { - el.requestFullscreen().then(function() { - setFullscreen(true); - }).catch(function(err) { - console.error("requestFullscreen error: ", err); - }); - } - }; - var exitFullscreen = function() { - if (document.exitFullscreen) { - document.exitFullscreen().then(function() { - setFullscreen(false); - }).catch(function(err) { - console.error("exitFullscreen error: ", err); - }); - } - }; - var toggleFullscreen = function() { - if (!el) { - console.error("need dom"); - return; - } - if (!fullscreen) { - enterFullscreen(); - } else { - exitFullscreen(); - } - }; - y2(function() { - document.addEventListener("fullscreenchange", handleFullScreenChange, false); - return function() { - document.removeEventListener("fullscreenchange", handleFullScreenChange); - }; - }, []); - return [fullscreen, toggleFullscreen]; -}; -var useFullscreen_default = useFullscreen; - -// node_modules/@ant-design/charts/es/graphs/components/toolbar.js -var Toolbar = function(_a6) { - var toolbarCfg = _a6.toolbarCfg, container2 = _a6.container, graph = _a6.graph; - var useGraph3 = s3(); - var width2 = s3(); - var height = s3(); - var zoom2 = s3(1); - var _b = toolbarCfg.zoomFactor, zoomFactor = _b === void 0 ? 0.25 : _b, renderIcon = toolbarCfg.renderIcon; - var _c = useFullscreen_default(container2), fullscreen = _c[0], toggleFullscreen = _c[1]; - var getWindow = function() { - return [window.outerWidth, window.outerHeight]; - }; - var toggleWidth = function(f3) { - var _a7; - var size2 = f3 ? getWindow() : [width2.current, height.current]; - (_a7 = useGraph3.current) === null || _a7 === void 0 ? void 0 : _a7.changeSize(size2[0], size2[1]); - }; - var getCenter2 = function() { - if (!container2) { - return { - x: 0, - y: 0 - }; - } - return { - x: container2.clientWidth / 2, - y: container2.clientHeight / 2 - }; - }; - var zoomIn2 = function() { - var _a7; - (_a7 = useGraph3.current) === null || _a7 === void 0 ? void 0 : _a7.zoom(Math.min(zoom2.current + zoomFactor, 5), getCenter2()); - }; - var zoomOut2 = function() { - var _a7; - (_a7 = useGraph3.current) === null || _a7 === void 0 ? void 0 : _a7.zoom(Math.max(zoom2.current - zoomFactor, 0.25), getCenter2()); - }; - y2(function() { - if (graph) { - useGraph3.current = graph; - width2.current = container2 === null || container2 === void 0 ? void 0 : container2.clientWidth; - height.current = container2 === null || container2 === void 0 ? void 0 : container2.clientHeight; - } - }, [graph]); - var setToggleFullscreen = function() { - toggleFullscreen(); - toggleWidth(!document.fullscreenElement); - }; - if (renderIcon) { - return renderIcon(zoomIn2, zoomOut2, toggleFullscreen); - } - return compat_module_default.createElement(d, null, !fullscreen ? compat_module_default.createElement("span", { style: { - cursor: "pointer" - }, onClick: setToggleFullscreen }, "\u2610") : compat_module_default.createElement("span", { style: { - cursor: "pointer" - }, onClick: setToggleFullscreen }, "\u2684"), compat_module_default.createElement("span", { style: { - cursor: "pointer" - }, onClick: zoomIn2 }, "+"), compat_module_default.createElement("span", { style: { - cursor: "pointer" - }, onClick: zoomIn2 }, "-")); -}; -var createToolbar = function(_a6) { - var _b; - var graph = _a6.graph, container2 = _a6.container, toolbarCfg = _a6.toolbarCfg; - var style = toolbarCfg.style, show = toolbarCfg.show, className = toolbarCfg.className; - var toolbarId = graph.get("id") + "-toolbar"; - var exist = document.querySelector("#" + toolbarId); - if (exist) { - (_b = exist.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(exist); - } - if (!show) { - return; - } - var defaultStyle = { - position: "absolute", - right: "12px", - top: "12px", - display: "flex", - flexDirection: "column", - padding: "6px", - borderRadius: "2px", - fontSize: "24px", - textAlign: "center", - lineHeight: "24px", - color: "rgba(0,0,0,.65)", - backgroundColor: "#fff", - boxShadow: "0 0 3px #ccc" - }; - var mountPoint = document.createElement("div"); - mountPoint.id = toolbarId; - mountPoint.className = className !== null && className !== void 0 ? className : "charts-toolbar"; - setStyles(mountPoint, defaultStyle); - setStyles(mountPoint, style); - compat_module_default.render(compat_module_default.createElement(Toolbar, { graph, container: container2, toolbarCfg }), mountPoint); - container2.appendChild(mountPoint); -}; - -// node_modules/@ant-design/charts/es/graphs/components/tooltip.js -var createTooltip2 = function(_a6) { - var graph = _a6.graph, container2 = _a6.container, tooltipCfg = _a6.tooltipCfg, nodeCfg = _a6.nodeCfg; - var _b = nodeCfg.size, size2 = _b === void 0 ? [120, 40] : _b; - var style = tooltipCfg.style, show = tooltipCfg.show, className = tooltipCfg.className, customContent = tooltipCfg.customContent; - if (typeof size2 === "number") - size2 = [size2, size2]; - var nodeWidth = size2[0], nodeHeight = size2[1]; - var createTooltipContainer = function(positionStyle, item) { - var _a7; - var tooltipId = graph.get("id") + "-toolitp"; - var exist = document.querySelector("#" + tooltipId); - if (exist) { - (_a7 = exist.parentNode) === null || _a7 === void 0 ? void 0 : _a7.removeChild(exist); - } - if (!show || !positionStyle) { - return; - } - var defaultStyle = { - position: "absolute", - width: nodeWidth + "px", - padding: "6px", - borderRadius: "2px", - fontSize: "24px", - backgroundColor: "#fff", - boxShadow: "0 0 3px #ccc", - minHeight: "40px", - boxSizing: "border-box" - }; - var mountPoint = document.createElement("div"); - mountPoint.id = tooltipId; - mountPoint.className = className !== null && className !== void 0 ? className : "charts-toolbar"; - setStyles(mountPoint, defaultStyle); - setStyles(mountPoint, positionStyle); - setStyles(mountPoint, style); - compat_module_default.render(customContent(item), mountPoint); - container2.appendChild(mountPoint); - }; - var bindEvents2 = function() { - var currentNode = { - current: "" - }; - graph.on("node:mousemove", function(evt) { - var _a7, _b2, _c; - if (!currentNode.current) { - var _d = (_a7 = get_default(evt, "shape.cfg.canvasBBox")) !== null && _a7 !== void 0 ? _a7 : {}, minX = _d.minX, minY = _d.minY; - if (!minX) { - return; - } - var modelId = get_default((_b2 = evt.item) === null || _b2 === void 0 ? void 0 : _b2.getModel(), "id", ""); - if (modelId) { - currentNode.current = modelId; - } - createTooltipContainer({ - left: Math.min(Math.max(minX, 0), graph.getWidth() - nodeWidth) + "px", - bottom: graph.getHeight() - minY + nodeHeight + "px" - }, (_c = evt.item) === null || _c === void 0 ? void 0 : _c.getModel()); - } - }); - graph.on("node:mouseleave", function() { - currentNode.current = ""; - createTooltipContainer(); - }); - }; - bindEvents2(); -}; - -// node_modules/@ant-design/charts/es/graphs/hooks/useGraphs.js -var __assign25 = function() { - __assign25 = Object.assign || function(t4) { - for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { - s4 = arguments[i4]; - for (var p4 in s4) - if (Object.prototype.hasOwnProperty.call(s4, p4)) - t4[p4] = s4[p4]; - } - return t4; - }; - return __assign25.apply(this, arguments); -}; -function useGraph2(graphClass, config, extra) { - if (extra === void 0) { - extra = {}; - } - var container2 = s3(null); - var graphRef = s3(); - var graphOptions = s3(); - var graphData = s3(); - var data3 = config.data, width2 = config.width, height = config.height, layout6 = config.layout, minimapCfg = config.minimapCfg, behaviors2 = config.behaviors, fitCenter = config.fitCenter, nodeCfg = config.nodeCfg, edgeCfg = config.edgeCfg, markerCfg = config.markerCfg, level = config.level, toolbarCfg = config.toolbarCfg, tooltipCfg = config.tooltipCfg; - var graph = graphRef.current; - var setEdgesState = function(edges) { - edges.forEach(function(edge2) { - var _a6, _b; - var _c = edge2.getModel(), source = _c.source, target = _c.target; - var sourceVisible = (_a6 = graph === null || graph === void 0 ? void 0 : graph.findById(source)) === null || _a6 === void 0 ? void 0 : _a6.get("visible"); - var targetVisible = (_b = graph === null || graph === void 0 ? void 0 : graph.findById(target)) === null || _b === void 0 ? void 0 : _b.get("visible"); - if (sourceVisible === false || targetVisible === false) { - edge2.changeVisibility(false); - } - }); - }; - var changeData = function() { - var _a6; - if (!graph) { - return; - } - var currentData = data3; - if (level) { - currentData = setTag4(data3); - } - graph.changeData(level ? getLevelData(currentData, level) : data3); - (_a6 = graph.get("eventData")) === null || _a6 === void 0 ? void 0 : _a6.setData(currentData); - setEdgesState(graph.getEdges()); - if (fitCenter) { - graph.fitCenter(); - } - }; - var updateLayout = function() { - graph === null || graph === void 0 ? void 0 : graph.updateLayout(layout6); - if (fitCenter) { - graph === null || graph === void 0 ? void 0 : graph.fitCenter(); - } - }; - var updateNodes = function() { - if (!graph) { - return; - } - var _a6 = nodeCfg !== null && nodeCfg !== void 0 ? nodeCfg : {}, nodeType = _a6.type, nodeAnchorPoints = _a6.anchorPoints, nodeStyle = _a6.style, nodeLabelCfg = _a6.title; - graph.getNodes().forEach(function(node) { - graph.updateItem(node, { - nodeCfg, - markerCfg, - type: nodeType, - style: nodeStyle, - anchorPoints: nodeAnchorPoints, - labelCfg: nodeLabelCfg - }); - }); - }; - var updateEdges = function() { - if (!graph) { - return; - } - var _a6 = edgeCfg !== null && edgeCfg !== void 0 ? edgeCfg : {}, edgeType = _a6.type, edgeStyle = _a6.style, startArrowCfg = _a6.startArrow, endArrowCfg = _a6.endArrow, labelCfg = _a6.label; - graph.getEdges().forEach(function(edge2) { - if (edgeType === "fund-line") { - graph.updateItem(edge2, { - edgeCfg - }); - } else { - var edgeCfgModel = edge2.getModel(); - var startArrow = getArrowCfg(startArrowCfg, edgeCfgModel); - var endArrow = getArrowCfg(endArrowCfg, edgeCfgModel); - var _a7 = labelCfg !== null && labelCfg !== void 0 ? labelCfg : {}, style = _a7.style, content = _a7.content; - graph.updateItem(edge2, { - type: edgeType, - label: getCommonConfig(content, edgeCfgModel, graph), - labelCfg: { - style: getCommonConfig(style, edgeCfgModel, graph) - }, - style: __assign25({ stroke: "#ccc", startArrow, endArrow }, typeof edgeStyle === "function" ? edgeStyle(edgeCfgModel, graph) : edgeStyle) - }); - } - }); - }; - var updateMarker = function() { - if (!graph) { - return; - } - graph.getNodes().forEach(function(node) { - var _a6 = (typeof markerCfg === "function" ? markerCfg(node.getModel(), node.get("group")) : markerCfg).position, position2 = _a6 === void 0 ? "right" : _a6; - var _b = node.getBBox(), width3 = _b.width, height2 = _b.height; - var markerShape = node.get("group").get("children").find(function(item) { - return item.get("name") === "collapse-icon"; - }); - if (markerShape) { - markerShape === null || markerShape === void 0 ? void 0 : markerShape.attr(__assign25({}, getMarkerPosition(position2, [width3, height2]))); - } - }); - }; - var getEdgeStateStyles = function(edgeStateStyles) { - var _a6 = extra.name, name = _a6 === void 0 ? "" : _a6; - if (name !== "FundFlowGraph") { - return edgeStateStyles; - } - if (!edgeStateStyles) { - return; - } - var _b = edgeStateStyles.hover, hover = _b === void 0 ? {} : _b; - var endArrow = hover.endArrow, startArrow = hover.startArrow; - if (!endArrow && !startArrow) { - return edgeStateStyles; - } - return { - hover: __assign25(__assign25({}, hover), { endArrow: endArrow ? getArrowCfg(endArrow) : false, startArrow: startArrow ? getArrowCfg(startArrow) : false }) - }; - }; - y2(function() { - if (graph && !graph.destroyed) { - if (is_equal_default(data3, graphData.current)) { - return; - } - graphData.current = deepClone(data3); - changeData(); - } - }, [data3]); - y2(function() { - var _a6, _b, _c, _d, _e; - if (graph && !graph.destroyed) { - if (is_equal_default(config, graphOptions.current)) { - return; - } - if (!is_equal_default(layout6, (_a6 = graphOptions.current) === null || _a6 === void 0 ? void 0 : _a6.layout)) { - updateLayout(); - } - if (!is_equal_default(minimapCfg, (_b = graphOptions.current) === null || _b === void 0 ? void 0 : _b.minimapCfg)) { - processMinimap(minimapCfg, graph); - } - if (!is_equal_default(nodeCfg, (_c = graphOptions.current) === null || _c === void 0 ? void 0 : _c.nodeCfg)) { - updateNodes(); - } - if (!is_equal_default(edgeCfg, (_d = graphOptions.current) === null || _d === void 0 ? void 0 : _d.edgeCfg)) { - updateEdges(); - } - if (!is_equal_default(markerCfg, (_e = graphOptions.current) === null || _e === void 0 ? void 0 : _e.markerCfg)) { - updateMarker(); - } - graphOptions.current = config; - } - }, [config]); - y2(function() { - if (graph && !graph.destroyed) { - var graphSize = getGraphSize(width2, height, container2); - graph.changeSize(graphSize[0], graphSize[1]); - } - }, [container2, width2, height]); - y2(function() { - if (graph && !graph.destroyed) { - var defaultMode = graph.get("modes").default; - var removingBehaviors_1 = []; - defaultMode.forEach(function(be) { - if (is_object_default(be)) { - removingBehaviors_1.push(be.type); - } else if (is_string_default(be)) { - removingBehaviors_1.push(be); - } - }); - graph.removeBehaviors(removingBehaviors_1, "default"); - graph.addBehaviors(behaviors2, "default"); - } - }, [behaviors2]); - y2(function() { - if (container2.current && graphClass) { - var _a6 = extra.name, name_1 = _a6 === void 0 ? "" : _a6; - var graphSize = getGraphSize(width2, height, container2); - var nodeCfg_1 = config.nodeCfg, edgeCfg_1 = config.edgeCfg, behaviors_1 = config.behaviors, layout_1 = config.layout, animate = config.animate, autoFit = config.autoFit, fitCenter_1 = config.fitCenter, onReady = config.onReady; - var _b = nodeCfg_1 !== null && nodeCfg_1 !== void 0 ? nodeCfg_1 : {}, nodeType_1 = _b.type, nodeSize = _b.size, nodeAnchorPoints = _b.anchorPoints, nodeStateStyles = _b.nodeStateStyles, nodeStyle_1 = _b.style, nodeLabelCfg_1 = _b.title, linkCenter = _b.linkCenter, getChildren = _b.getChildren; - var _c = edgeCfg_1 !== null && edgeCfg_1 !== void 0 ? edgeCfg_1 : {}, edgeType = _c.type, edgeStyle_1 = _c.style, startArrowCfg_1 = _c.startArrow, endArrowCfg_1 = _c.endArrow, labelCfg_1 = _c.label, edgeStateStyles = _c.edgeStateStyles; - graphRef.current = new es_default5[graphClass]({ - container: container2.current, - width: graphSize[0], - height: graphSize[1], - animate, - linkCenter, - modes: { - default: behaviors_1 - }, - defaultNode: { - type: nodeType_1, - size: nodeSize, - anchorPoints: nodeAnchorPoints, - nodeCfg: nodeCfg_1 - }, - defaultEdge: { - type: edgeType, - edgeCfg: edgeCfg_1, - labelCfg: labelCfg_1 === null || labelCfg_1 === void 0 ? void 0 : labelCfg_1.style - }, - nodeStateStyles, - edgeStateStyles: getEdgeStateStyles(edgeStateStyles), - layout: layout_1, - fitView: autoFit, - fitCenter: fitCenter_1 - }); - var graphId = getGraphId(graphRef.current); - var graph_1 = graphRef.current; - graph_1.set("id", graphId); - var getLabel_1 = function(value2) { - if (is_string_default(value2)) { - return value2; - } - if (name_1 === "FundFlowGraph") { - return value2 === null || value2 === void 0 ? void 0 : value2.text; - } - return value2 === null || value2 === void 0 ? void 0 : value2.title; - }; - var customNode_1 = ["fund-card", "indicator-card"]; - graph_1.node(function(node) { - if (customNode_1.includes(nodeType_1) || name_1 === "OrganizationGraph") { - node.markerCfg = markerCfg; - return {}; - } - var style = (nodeLabelCfg_1 !== null && nodeLabelCfg_1 !== void 0 ? nodeLabelCfg_1 : {}).style; - return { - label: getLabel_1(node.value), - labelCfg: { - style: getCommonConfig(style, node, graph_1) - }, - style: __assign25({ stroke: "#ccc" }, typeof nodeStyle_1 === "function" ? nodeStyle_1(node, graph_1) : nodeStyle_1) - }; - }); - var getEdgeLabel_1 = function(edge2) { - var content = (labelCfg_1 !== null && labelCfg_1 !== void 0 ? labelCfg_1 : {}).content; - if (["DecompositionTreeGraph", "OrganizationGraph", "RadialTreeGraph"].includes(name_1)) { - return getCommonConfig(content, edge2, graph_1); - } - if (name_1 === "FundFlowGraph") { - var value2 = edge2.value; - return typeof value2 === "object" ? value2 === null || value2 === void 0 ? void 0 : value2.text : value2; - } - return edge2.value; - }; - if (edgeType !== "fund-line") { - graph_1.edge(function(edge2) { - var startArrow = getArrowCfg(startArrowCfg_1, edge2); - var endArrow = getArrowCfg(endArrowCfg_1, edge2); - var style = (labelCfg_1 !== null && labelCfg_1 !== void 0 ? labelCfg_1 : {}).style; - return { - label: getEdgeLabel_1(edge2), - labelCfg: { - style: getCommonConfig(style, edge2, graph_1) - }, - style: __assign25({ stroke: "#ccc", startArrow, endArrow }, typeof edgeStyle_1 === "function" ? edgeStyle_1(edge2, graph_1) : edgeStyle_1) - }; - }); - } - processMinimap(minimapCfg, graph_1); - bindStateEvents(graph_1, config); - if (markerCfg) { - var sourceGraph = ["FlowAnalysisGraph", "FundFlowGraph"]; - sourceGraph.includes(name_1) ? bindSourceMapCollapseEvents(graph_1) : bindDefaultEvents(graph_1, level, getChildren); - } - renderGraph(graph_1, data3, level); - if (fitCenter_1) { - graph_1.fitCenter(); - } - if (onReady) { - onReady(graph_1); - } - } - }, []); - y2(function() { - if (graphRef.current && toolbarCfg) { - createToolbar({ graph: graphRef.current, container: container2.current, toolbarCfg }); - } - }, [graphRef, toolbarCfg]); - y2(function() { - if (graphRef.current && tooltipCfg) { - createTooltip2({ graph: graphRef.current, container: container2.current, tooltipCfg, nodeCfg }); - } - }, [graphRef, tooltipCfg]); - y2(function() { - return function() { - if ((graph === null || graph === void 0 ? void 0 : graph.current) && !graph.current.destroyed) { - graph.current.destroy(); - } - }; - }, []); - return { - container: container2 - }; -} - -// node_modules/@ant-design/charts/es/graphs/hooks/useProps.js -var __assign26 = function() { - __assign26 = Object.assign || function(t4) { - for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { - s4 = arguments[i4]; - for (var p4 in s4) - if (Object.prototype.hasOwnProperty.call(s4, p4)) - t4[p4] = s4[p4]; - } - return t4; - }; - return __assign26.apply(this, arguments); -}; -function useProps3(props, defaultProps13) { - var cloneProps = deepClone(props); - var mergeProps = A2(function(p4, defaultProps14) { - var config = __assign26({}, defaultProps14); - var propsKeys = Object.keys(p4); - propsKeys.forEach(function(key) { - if (getType2(p4[key]) === "Object") { - config[key] = __assign26(__assign26({}, defaultProps14[key]), p4[key]); - } else { - config[key] = p4[key]; - } - }); - return config; - }, [props, defaultProps13]); - var uProps = mergeProps(cloneProps, defaultProps13); - return { - uProps - }; -} - -// node_modules/@ant-design/charts/es/graphs/organizationGraph/customItem.js -var __assign27 = function() { - __assign27 = Object.assign || function(t4) { - for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { - s4 = arguments[i4]; - for (var p4 in s4) - if (Object.prototype.hasOwnProperty.call(s4, p4)) - t4[p4] = s4[p4]; - } - return t4; - }; - return __assign27.apply(this, arguments); -}; -var registerOrganizationCardNode = function() { - var defaultIconStyle = { - width: 12, - height: 12 - }; - es_default5.registerNode("organization-card", { - draw: function(cfg, group2) { - if (cfg === void 0) { - cfg = {}; - } - var _a6 = cfg.value, value2 = _a6 === void 0 ? {} : _a6, nodeCfg = cfg.nodeCfg, markerCfg = cfg.markerCfg; - var _b = nodeCfg, style = _b.style, _c = _b.padding, padding3 = _c === void 0 ? 0 : _c, _d = _b.label, label17 = _d === void 0 ? {} : _d, customContent = _b.customContent; - var labelStyle = label17.style; - var paddingArray = getCssPadding(padding3); - var size2 = (cfg === null || cfg === void 0 ? void 0 : cfg.size) || [100, 30]; - if (typeof size2 === "number") - size2 = [size2, size2]; - var height = 0; - var contentWidth = size2[0] - paddingArray[1] - paddingArray[3]; - var cardStyle = getStyle3(style, cfg, group2); - var shape = group2.addShape("rect", { - attrs: __assign27(__assign27({ x: 0, y: 0, width: size2[0], height: size2[1] }, defaultCardStyle), cardStyle), - name: "main-box", - draggable: true - }); - if (value2) { - height += paddingArray[0]; - var createRowItems_1 = function(item, contentWidth2, startX, index2) { - if (index2 === void 0) { - index2 = 0; - } - var iconWidth = 0; - var rowHeight = []; - var keys2 = ["icon", "text", "value"]; - var getXY = function(type2, layoutCfg) { - var _a7 = layoutCfg.fontSize, fontSize = _a7 === void 0 ? 12 : _a7; - var x6 = 0; - var y5 = 0; - switch (type2) { - case "icon": - x6 = startX; - y5 = height; - break; - case "text": - x6 = startX + (contentWidth2 + iconWidth) / 2; - y5 = item.value ? paddingArray[0] : (size2[1] - fontSize) / 2; - break; - case "value": - x6 = startX + (contentWidth2 + iconWidth) / 2; - y5 = item.text ? paddingArray[0] + rowHeight[1] + defaultMargin : (size2[1] - fontSize) / 2; - break; - default: - break; - } - return { x: x6, y: y5 }; - }; - keys2.forEach(function(key, keyIndex) { - var isIcon = key.startsWith("icon"); - var shapeStyle = getStyle3(labelStyle, cfg, group2, key); - if (key === "icon" && item[key]) { - iconWidth = shapeStyle.width || 32; - } - var keyShape = group2.addShape(isIcon ? "image" : "text", { - attrs: __assign27(__assign27(__assign27(__assign27({ textBaseline: "top", textAlign: "center" }, getXY(key, shapeStyle)), { text: item[key], img: item[key] }), isIcon ? defaultIconStyle : defaultLabelStyle), shapeStyle), - name: key + "-" + index2 + "-" + keyIndex - }); - rowHeight.push(keyShape.getBBox().height); - }); - return rowHeight; - }; - var createItems = function(item, index2) { - var _a7; - if (index2 === void 0) { - index2 = 0; - } - var itemsHeight = []; - if (customContent) { - itemsHeight.push((_a7 = customContent(item, group2, { - startX: paddingArray[3], - startY: height, - width: contentWidth - })) !== null && _a7 !== void 0 ? _a7 : 0); - } else { - itemsHeight.push.apply(itemsHeight, createRowItems_1(item, contentWidth, paddingArray[3], index2)); - } - height += Math.max.apply(Math, itemsHeight); - }; - createItems(value2); - } - shape === null || shape === void 0 ? void 0 : shape.attr("height", Math.max(height + paddingArray[2], size2[1])); - if (markerCfg) { - var _e = shape.getBBox(), shapeWidth = _e.width, shapeHeight = _e.height; - var _f = typeof markerCfg === "function" ? markerCfg(cfg, group2) : markerCfg, show = _f.show, _g = _f.position, position2 = _g === void 0 ? "right" : _g, collapsed = _f.collapsed, markerStyle = _f.style; - createMarker({ - show, - position: position2, - collapsed, - style: markerStyle - }, group2, [shapeWidth, shapeHeight]); - shape.attr("defaultCollapsed", collapsed); - } - return shape; - } - }, "single-node"); -}; - -// node_modules/@ant-design/charts/es/graphs/organizationGraph/index.js -var __rest41 = function(s4, e4) { - var t4 = {}; - for (var p4 in s4) - if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) - t4[p4] = s4[p4]; - if (s4 != null && typeof Object.getOwnPropertySymbols === "function") - for (var i4 = 0, p4 = Object.getOwnPropertySymbols(s4); i4 < p4.length; i4++) { - if (e4.indexOf(p4[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p4[i4])) - t4[p4[i4]] = s4[p4[i4]]; - } - return t4; -}; -registerOrganizationCardNode(); -var defaultNodeStyle8 = { - fill: "#91d5ff", - stroke: "#40a9ff", - radius: 2 -}; -var defaultLayout9 = { - type: "compactBox", - direction: "TB", - getId: function getId3(d3) { - return d3.id; - }, - getHeight: function getHeight5() { - return 16; - }, - getWidth: function getWidth3() { - return 16; - }, - getVGap: function getVGap3() { - return 40; - }, - getHGap: function getHGap3() { - return 70; - } -}; -var defaultProps8 = { - nodeCfg: { - type: "organization-card", - size: [100, 44], - style: defaultNodeStyle8, - padding: 6, - anchorPoints: [ - [0.5, 0], - [0.5, 1] - ], - nodeStateStyles: defaultStateStyles, - label: { - style: function(cfg, group2, type2) { - var styles = { - icon: { - width: 32, - height: 32 - }, - value: { - fill: "#fff" - }, - text: { - fill: "#000" - } - }; - return type2 ? styles[type2] : {}; - } - } - }, - edgeCfg: { - type: "polyline", - endArrow: { - type: "triangle", - fill: "#91d5ff" - }, - edgeStateStyles: defaultStateStyles, - style: { - stroke: "#91d5ff" - } - }, - behaviors: ["zoom-canvas", "drag-canvas"], - layout: defaultLayout9, - animate: true, - markerPosition: "right", - autoFit: true, - fitCenter: true, - style: { - position: "relative", - height: "inherit", - backgroundColor: "#fff" - } -}; -var OrganizationGraph = function(props) { - var uProps = useProps3(props, defaultProps8).uProps; - var className = uProps.className, style = uProps.style, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate, rest = __rest41(uProps, ["className", "style", "loading", "loadingTemplate", "errorTemplate"]); - var container2 = useGraph2("TreeGraph", rest, { name: "OrganizationGraph" }).container; - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); -}; -var organizationGraph_default = OrganizationGraph; - -// node_modules/@ant-design/charts/es/graphs/radialTreeGraph/index.js -var __rest42 = function(s4, e4) { - var t4 = {}; - for (var p4 in s4) - if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) - t4[p4] = s4[p4]; - if (s4 != null && typeof Object.getOwnPropertySymbols === "function") - for (var i4 = 0, p4 = Object.getOwnPropertySymbols(s4); i4 < p4.length; i4++) { - if (e4.indexOf(p4[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p4[i4])) - t4[p4[i4]] = s4[p4[i4]]; - } - return t4; -}; -var defaultLayout10 = { - type: "dendrogram", - direction: "LR", - nodeSep: 20, - rankSep: 100, - radial: true -}; -var defaultProps9 = { - nodeCfg: { - type: "circle", - size: 30, - anchorPoints: defaultFlowGraphAnchorPoints, - linkCenter: true, - nodeStateStyles: defaultStateStyles, - style: defaultNodeStyle - }, - edgeCfg: { - type: "line", - edgeStateStyles: defaultStateStyles - }, - behaviors: ["zoom-canvas", "drag-canvas"], - layout: defaultLayout10, - animate: true, - markerPosition: "right", - autoFit: true, - fitCenter: true, - style: { - position: "relative", - height: "inherit", - backgroundColor: "#fff" - } -}; -var RadialTreeGraph = function(props) { - var uProps = useProps3(props, defaultProps9).uProps; - var className = uProps.className, style = uProps.style, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate, rest = __rest42(uProps, ["className", "style", "loading", "loadingTemplate", "errorTemplate"]); - var container2 = useGraph2("TreeGraph", rest, { name: "RadialTreeGraph" }).container; - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); -}; -var radialTreeGraph_default = RadialTreeGraph; - -// node_modules/@ant-design/charts/es/graphs/flowAnalysisGraph/customItem.js -var __assign28 = function() { - __assign28 = Object.assign || function(t4) { - for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { - s4 = arguments[i4]; - for (var p4 in s4) - if (Object.prototype.hasOwnProperty.call(s4, p4)) - t4[p4] = s4[p4]; - } - return t4; - }; - return __assign28.apply(this, arguments); -}; -var registerIndicatorCardNode = function() { - var defaultTitleLabelStyle = { - fill: "#fff", - fontSize: 12 - }; - var defaultTitleRectStyle = { - fill: "#40a9ff", - radius: [2, 2, 0, 0] - }; - var defaultIconStyle = { - width: 12, - height: 12 - }; - var ARROWS2 = ["startArrow", "endArrow"]; - var SHAPE_DEFAULT_ATTRS2 = { - lineWidth: 1, - stroke: void 0, - fill: void 0, - lineAppendWidth: 1, - opacity: void 0, - strokeOpacity: void 0, - fillOpacity: void 0, - x: 0, - y: 0, - r: 10, - width: 20, - height: 20, - shadowColor: void 0, - shadowBlur: 0, - shadowOffsetX: 0, - shadowOffsetY: 0 - }; - var PATH_SHAPE_DEFAULT_ATTRS2 = { - lineWidth: 1, - stroke: "#000", - lineDash: void 0, - startArrow: false, - endArrow: false, - opacity: void 0, - strokeOpacity: void 0, - fillOpacity: void 0, - shadowColor: void 0, - shadowBlur: 0, - shadowOffsetX: 0, - shadowOffsetY: 0 - }; - var SHAPES_DEFAULT_ATTRS2 = { - edge: PATH_SHAPE_DEFAULT_ATTRS2, - node: SHAPE_DEFAULT_ATTRS2 - }; - es_default5.registerNode("indicator-card", { - draw: function(cfg, group2) { - var _a6, _b; - if (cfg === void 0) { - cfg = {}; - } - var _c = cfg.value, value2 = _c === void 0 ? {} : _c, nodeCfg = cfg.nodeCfg, markerCfg = cfg.markerCfg; - var _d = nodeCfg, titleCfg = _d.title, itemsCfg = _d.items, _e = _d.label, label17 = _e === void 0 ? {} : _e, style = _d.style, _f = _d.padding, padding3 = _f === void 0 ? 0 : _f, badge = _d.badge, customContent = _d.customContent; - var appendPadding = getStatusBBox(badge); - var labelStyle = label17.style; - var cardPadding = getCssPadding(padding3); - var paddingArray = cardPadding.map(function(item, index2) { - return item + appendPadding[index2]; - }); - var _g = titleCfg !== null && titleCfg !== void 0 ? titleCfg : {}, titleStyle = _g.style, titleContainerStyle = _g.containerStyle, _h = _g.autoEllipsis, autoEllipsis = _h === void 0 ? true : _h; - var _j = itemsCfg !== null && itemsCfg !== void 0 ? itemsCfg : {}, itemStyle = _j.style, itemContainerStyle = _j.containerStyle, layout6 = _j.layout, _k = _j.itemSpacing, itemSpacing = _k === void 0 ? 4 : _k, sort2 = _j.sort, _l = _j.padding, itemPadding = _l === void 0 ? [6, 0, 0] : _l; - var itemPaddingArray = getCssPadding(itemPadding); - var _m = value2, title = _m.title, items = _m.items; - var size2 = (cfg === null || cfg === void 0 ? void 0 : cfg.size) || [100, 30]; - if (typeof size2 === "number") - size2 = [size2, size2]; - var height = 0; - var shapeWidth = size2[0]; - var contentWidth = shapeWidth - paddingArray[1] - paddingArray[3]; - var cardStyle = getStyle3(style, cfg, group2); - var shape = group2.addShape("rect", { - attrs: __assign28(__assign28({ x: 0, y: 0, width: size2[0], height: size2[1] }, defaultCardStyle), cardStyle), - name: "main-box", - draggable: true - }); - var titleTextShape; - var itemShape; - var titleShape; - if (title) { - titleShape = group2.addShape("rect", { - attrs: __assign28(__assign28({ x: 0, y: 0, width: size2[0], height: 0 }, defaultTitleRectStyle), getStyle3(titleContainerStyle, cfg, group2)), - name: "title-rect", - draggable: true - }); - var textStyle2 = __assign28(__assign28({}, defaultTitleLabelStyle), getStyle3(titleStyle, cfg, group2)); - titleTextShape = group2.addShape("text", { - attrs: __assign28({ x: paddingArray[3], y: paddingArray[0], textBaseline: "top", text: autoEllipsis ? useEllipsis(title, textStyle2 === null || textStyle2 === void 0 ? void 0 : textStyle2.fontSize, contentWidth) : title }, textStyle2), - name: "title" - }); - var titleHeight_1 = (titleTextShape ? titleTextShape.getBBox() : { height: size2[1] / 2 }).height; - titleShape === null || titleShape === void 0 ? void 0 : titleShape.attr("height", titleHeight_1 + paddingArray[0] + paddingArray[2]); - height += titleShape.getBBox().height; - } - if (items) { - if (!titleShape) { - height += paddingArray[0]; - } - itemShape = group2.addShape("rect", { - attrs: __assign28({ x: paddingArray[3], y: height, width: contentWidth, height: 0 }, getStyle3(itemContainerStyle, cfg, group2)), - name: "item-box", - draggable: true - }); - height += itemPaddingArray[0]; - var itemContentWidth_1 = contentWidth - itemPaddingArray[1] - itemPaddingArray[3]; - var isArray_1 = Array.isArray(items); - var createRowItems_1 = function(item, contentWidth2, startX, index2) { - if (index2 === void 0) { - index2 = 0; - } - var rowHeight = []; - var valueShapeWidth = 0; - var keys2 = sort2 ? Object.keys(item) : ["text", "value", "icon"]; - keys2.forEach(function(key, keyIndex) { - var x6; - var isIcon = key.startsWith("icon"); - if (sort2 || layout6 === "flex") { - x6 = keyIndex * contentWidth2 / keys2.length; - } else if (layout6 === "follow") { - x6 = valueShapeWidth; - } else { - x6 = key === "text" ? 0 : contentWidth2 / 2; - x6 += isIcon ? valueShapeWidth : 0; - } - var keyShape = group2.addShape(isIcon ? "image" : "text", { - attrs: __assign28(__assign28({ textBaseline: "top", x: startX + x6, y: height, text: item[key], img: item[key] }, isIcon ? defaultIconStyle : defaultLabelStyle), getStyle3(itemStyle || labelStyle, cfg, group2, key)), - name: key + "-" + index2 + "-" + keyIndex - }); - if (key === "value" || layout6 === "follow") { - valueShapeWidth += keyShape.getBBox().width; - valueShapeWidth += layout6 === "follow" ? itemSpacing : 0; - } - rowHeight.push(keyShape.getBBox().height); - }); - return rowHeight; - }; - var createItems_1 = function(item, index2) { - var _a7; - if (index2 === void 0) { - index2 = 0; - } - var itemsHeight = []; - if (customContent) { - itemsHeight.push((_a7 = customContent(item, group2, { - startX: paddingArray[3] + itemPaddingArray[3], - startY: height, - width: itemContentWidth_1 - })) !== null && _a7 !== void 0 ? _a7 : 0); - } else { - itemsHeight.push.apply(itemsHeight, createRowItems_1(item, itemContentWidth_1, paddingArray[3] + itemPaddingArray[3], index2)); - } - height += Math.max.apply(Math, itemsHeight); - if (isArray_1 && index2 !== items.length - 1) { - height += defaultMargin; - } - }; - if (Array.isArray(items)) { - items.forEach(function(item, index2) { - createItems_1(item, index2); - }); - } else { - createItems_1(items); - } - } - var titleHeight = (titleShape === null || titleShape === void 0 ? void 0 : titleShape.getBBox().height) || 0; - itemShape === null || itemShape === void 0 ? void 0 : itemShape.attr("height", Math.max(height - titleHeight + itemPaddingArray[2], size2[1])); - var itemHeight = (itemShape === null || itemShape === void 0 ? void 0 : itemShape.getBBox().height) || 0; - var shapeHeight = items ? (titleHeight || paddingArray[0]) + itemHeight + paddingArray[2] : titleHeight + itemHeight; - shape === null || shape === void 0 ? void 0 : shape.attr("height", shapeHeight); - if (badge) { - var statusConfig = getStatusCfg(badge, [size2[0], shapeHeight]); - group2.addShape("rect", { - attrs: __assign28(__assign28({ fill: "#40a9ff" }, statusConfig), getStyle3(badge.style, cfg, group2)), - name: "status-rect" - }); - } - if (markerCfg) { - var stateCollapsed = ((_b = (_a6 = group2 === null || group2 === void 0 ? void 0 : group2.get("item")) === null || _a6 === void 0 ? void 0 : _a6.getModel()) !== null && _b !== void 0 ? _b : {}).collapsed; - var _o = shape.getBBox(), shapeWidth_1 = _o.width, shapeHeight_1 = _o.height; - var _p = typeof markerCfg === "function" ? markerCfg(cfg, group2) : markerCfg, show = _p.show, _q = _p.position, position2 = _q === void 0 ? "right" : _q, collapsed = _p.collapsed, markerStyle = _p.style; - createMarker({ - show, - position: position2, - collapsed: stateCollapsed !== null && stateCollapsed !== void 0 ? stateCollapsed : collapsed, - style: markerStyle - }, group2, [shapeWidth_1, shapeHeight_1]); - shape.attr("defaultCollapsed", collapsed); - } - return shape; - }, - update: void 0, - setState: function(name, value2, item) { - var _a6, _b; - var shape = item.get("keyShape"); - if (!shape || shape.destroyed) - return; - var type2 = item.getType(); - var stateName = is_boolean_default(value2) ? name : name + ":" + value2; - var itemStateStyle = item.getStateStyle(stateName); - if (!itemStateStyle) { - return; - } - var styles = Object.assign({}, itemStateStyle); - var group2 = item.getContainer(); - var keptAttrs = { x: 1, y: 1, cx: 1, cy: 1 }; - if (value2) { - var _loop_1 = function(key2) { - var _c; - var style = styles[key2]; - if (is_plain_object_default(style) && !ARROWS2.includes(key2)) { - var subShape = group2.find(function(element) { - return element.get("name") === key2; - }); - if (subShape) { - subShape.attr(style); - } - } else { - shape.attr((_c = {}, _c[key2] = style, _c)); - } - }; - for (var key in styles) { - _loop_1(key); - } - } else { - var enableStatesStyle = cloneBesidesImg3(item.getCurrentStatesStyle()); - var model = item.getModel(); - var originStyle_1 = mix({}, model.style, cloneBesidesImg3(item.getOriginStyle())); - var keyShapeName_1 = shape.get("name"); - var shapeAttrs_1 = shape.attr(); - var keyShapeStyles_1 = {}; - Object.keys(shapeAttrs_1).forEach(function(key2) { - if (key2 === "img") - return; - var attr = shapeAttrs_1[key2]; - if (attr && typeof attr === "object") { - keyShapeStyles_1[key2] = clone_default(attr); - } else { - keyShapeStyles_1[key2] = attr; - } - }); - var filtetDisableStatesStyle = {}; - var _loop_2 = function(p5) { - var style = styles[p5]; - if (is_plain_object_default(style) && !ARROWS2.includes(p5)) { - var subShape_1 = group2.find(function(element) { - return element.get("name") === p5; - }); - if (subShape_1) { - var subShapeStyles_1 = clone_default(subShape_1.attr()); - each_default(style, function(v3, key2) { - if (p5 === keyShapeName_1 && keyShapeStyles_1[key2] && !keptAttrs[key2]) { - delete keyShapeStyles_1[key2]; - var value_1 = originStyle_1[p5][key2] || SHAPES_DEFAULT_ATTRS2[type2][key2]; - shape.attr(key2, value_1); - } else if (subShapeStyles_1[key2] || subShapeStyles_1[key2] === 0) { - delete subShapeStyles_1[key2]; - var value_2 = originStyle_1[p5][key2] || SHAPES_DEFAULT_ATTRS2[type2][key2]; - subShape_1.attr(key2, value_2); - } - }); - filtetDisableStatesStyle[p5] = subShapeStyles_1; - } - } else { - if (keyShapeStyles_1[p5] && !keptAttrs[p5]) { - delete keyShapeStyles_1[p5]; - var value_3 = originStyle_1[p5] || (originStyle_1[keyShapeName_1] ? originStyle_1[keyShapeName_1][p5] : void 0) || SHAPES_DEFAULT_ATTRS2[type2][p5]; - shape.attr(p5, value_3); - } - } - }; - for (var p4 in styles) { - _loop_2(p4); - } - if (!keyShapeName_1) { - mix(filtetDisableStatesStyle, keyShapeStyles_1); - } else { - filtetDisableStatesStyle[keyShapeName_1] = keyShapeStyles_1; - } - for (var key in enableStatesStyle) { - if (keptAttrs[key]) - continue; - var enableStyle = enableStatesStyle[key]; - if (!is_plain_object_default(enableStyle) || ARROWS2.includes(key)) { - if (!keyShapeName_1) { - mix(originStyle_1, (_a6 = {}, _a6[key] = enableStyle, _a6)); - } else { - mix(originStyle_1[keyShapeName_1], (_b = {}, _b[key] = enableStyle, _b)); - delete originStyle_1[key]; - } - delete enableStatesStyle[key]; - } - } - var originstyles = {}; - deep_mix_default(originstyles, originStyle_1, filtetDisableStatesStyle, enableStatesStyle); - var keyShapeSetted = false; - var _loop_3 = function(originKey2) { - var _d; - var style = originstyles[originKey2]; - if (is_plain_object_default(style) && !ARROWS2.includes(originKey2)) { - var subShape = group2.find(function(element) { - return element.get("name") === originKey2; - }); - if (subShape) { - if (originKey2 === keyShapeName_1) { - keyShapeSetted = true; - } - if (originKey2 !== "collapse-icon") - subShape.attr(style); - } - } else if (!keyShapeSetted) { - var value_4 = style || SHAPES_DEFAULT_ATTRS2[type2][originKey2]; - shape.attr((_d = {}, _d[originKey2] = value_4, _d)); - } - }; - for (var originKey in originstyles) { - _loop_3(originKey); - } - } - } - }, "single-node"); -}; - -// node_modules/@ant-design/charts/es/graphs/flowAnalysisGraph/index.js -var __rest43 = function(s4, e4) { - var t4 = {}; - for (var p4 in s4) - if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) - t4[p4] = s4[p4]; - if (s4 != null && typeof Object.getOwnPropertySymbols === "function") - for (var i4 = 0, p4 = Object.getOwnPropertySymbols(s4); i4 < p4.length; i4++) { - if (e4.indexOf(p4[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p4[i4])) - t4[p4[i4]] = s4[p4[i4]]; - } - return t4; -}; -registerIndicatorCardNode(); -var defaultLayout11 = { - type: "dagre", - rankdir: "LR", - center: [0, 0], - nodesepFunc: function() { - return 1; - }, - ranksepFunc: function() { - return 1; - } -}; -var defaultProps10 = { - nodeCfg: { - type: "indicator-card", - size: defaultNodeSize, - style: defaultNodeStyle, - anchorPoints: defaultFlowGraphAnchorPoints, - padding: 6, - layout: "bundled", - nodeStateStyles: defaultStateStyles - }, - edgeCfg: { - type: "cubic-horizontal", - edgeStateStyles: defaultStateStyles - }, - behaviors: ["zoom-canvas", "drag-canvas"], - layout: defaultLayout11, - animate: true, - markerPosition: "right", - autoFit: true, - fitCenter: true, - style: { - position: "relative", - height: "inherit", - backgroundColor: "#fff" - } -}; -var FlowAnalysisGraph = function(props) { - var uProps = useProps3(props, defaultProps10).uProps; - var className = uProps.className, style = uProps.style, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate, rest = __rest43(uProps, ["className", "style", "loading", "loadingTemplate", "errorTemplate"]); - var container2 = useGraph2("Graph", rest, { name: "FlowAnalysisGraph" }).container; - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); -}; -var flowAnalysisGraph_default = FlowAnalysisGraph; - -// node_modules/@ant-design/charts/es/graphs/decompositionTreeGraph/index.js -var __rest44 = function(s4, e4) { - var t4 = {}; - for (var p4 in s4) - if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) - t4[p4] = s4[p4]; - if (s4 != null && typeof Object.getOwnPropertySymbols === "function") - for (var i4 = 0, p4 = Object.getOwnPropertySymbols(s4); i4 < p4.length; i4++) { - if (e4.indexOf(p4[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p4[i4])) - t4[p4[i4]] = s4[p4[i4]]; - } - return t4; -}; -registerIndicatorCardNode(); -var defaultLayout12 = { - type: "compactBox", - direction: "LR", - getId: function(d3) { - return d3.id; - }, - getHeight: function() { - return 60; - }, - getWidth: function() { - return 16; - }, - getVGap: function() { - return 16; - }, - getHGap: function() { - return 100; - } -}; -var defaultProps11 = { - nodeCfg: { - type: "indicator-card", - size: defaultNodeSize, - style: defaultNodeStyle, - anchorPoints: defaultFlowGraphAnchorPoints, - padding: 6, - layout: "bundled", - nodeStateStyles: defaultStateStyles, - label: { - style: function(cfg, group2, type2) { - var styles = { - icon: { - width: 10, - height: 10 - }, - value: { - fill: "#000" - }, - text: { - fill: "#aaa" - } - }; - return type2 ? styles[type2] : {}; - } - } - }, - edgeCfg: { - type: "cubic-horizontal", - endArrow: { - type: "vee" - }, - edgeStateStyles: defaultStateStyles - }, - behaviors: ["zoom-canvas", "drag-canvas"], - layout: defaultLayout12, - animate: true, - autoFit: true, - fitCenter: true, - style: { - position: "relative", - height: "inherit", - backgroundColor: "#fff" - }, - level: 100 -}; -var DecompositionTreeGraph = function(props) { - var uProps = useProps3(props, defaultProps11).uProps; - var className = uProps.className, style = uProps.style, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate, rest = __rest44(uProps, ["className", "style", "loading", "loadingTemplate", "errorTemplate"]); - var container2 = useGraph2("TreeGraph", rest, { - name: "DecompositionTreeGraph" - }).container; - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); -}; -var decompositionTreeGraph_default = DecompositionTreeGraph; - -// node_modules/@ant-design/charts/es/graphs/fundFlowGraph/customItem.js -var __assign29 = function() { - __assign29 = Object.assign || function(t4) { - for (var s4, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { - s4 = arguments[i4]; - for (var p4 in s4) - if (Object.prototype.hasOwnProperty.call(s4, p4)) - t4[p4] = s4[p4]; - } - return t4; - }; - return __assign29.apply(this, arguments); -}; -var getPathInfo = function(cfg) { - var edgeCfg = cfg.edgeCfg; - var startPoint = cfg.startPoint; - var endPoint = cfg.endPoint; - var startX = startPoint.x, startY = startPoint.y; - var endX = endPoint.x, endY = endPoint.y; - var Ydiff = endY - startY; - var slope = Ydiff !== 0 ? Math.min(500 / Math.abs(Ydiff), 20) : 0; - var cpOffset = slope > 15 ? 0 : 16; - var offset = Ydiff < 0 ? cpOffset : -cpOffset; - var line1EndPoint = { - x: startX + slope, - y: endY + offset - }; - var line2StartPoint = { - x: line1EndPoint.x + cpOffset, - y: endY - }; - var controlPoint = { - x: (line1EndPoint.x - startX) * (endY - startY) / (line1EndPoint.y - startY) + startX, - y: endY - }; - var path = [ - ["M", startX, startY], - ["L", line1EndPoint.x, line1EndPoint.y], - ["Q", controlPoint.x, controlPoint.y, line2StartPoint.x, line2StartPoint.y], - ["L", endX, endY] - ]; - if (Math.abs(Ydiff) <= 5) { - path = [ - ["M", startX, startY], - ["L", endX, endY] - ]; - } - var _a6 = edgeCfg, startArrowCfg = _a6.startArrow, endArrowCfg = _a6.endArrow; - var startArrow = getArrowCfg(startArrowCfg, cfg); - var endArrow = getArrowCfg(endArrowCfg, cfg); - return { - startArrow, - endArrow, - path, - line2StartPoint, - endY - }; -}; -var getPathText = function(value2) { - var text; - var subText; - if (value2 instanceof Object) { - text = value2.text; - subText = value2.subText; - } else { - text = value2; - } - return { text, subText }; -}; -var registerFundFlowItems = function() { - es_default5.registerNode("fund-card", { - draw: function(cfg, group2) { - var _a6, _b; - if (cfg === void 0) { - cfg = {}; - } - var _c = cfg.value, value2 = _c === void 0 ? {} : _c, nodeCfg = cfg.nodeCfg, markerCfg = cfg.markerCfg; - var _d = nodeCfg, _e = _d.label, label17 = _e === void 0 ? {} : _e, style = _d.style, _f = _d.padding, padding3 = _f === void 0 ? 0 : _f, customContent = _d.customContent; - var labelStyle = label17.style; - var paddingArray = getCssPadding(padding3); - var size2 = getSize4(cfg.size); - var height = 0; - var shapeWidth = size2[0]; - var contentWidth = shapeWidth - paddingArray[1] - paddingArray[3]; - var contentHeight = size2[1] - paddingArray[0] - paddingArray[2]; - var cardStyle = getStyle3(style, cfg, group2); - var shape = group2.addShape("rect", { - attrs: __assign29({ x: 0, y: 0, width: size2[0], height: size2[1], radius: size2[1] / 2, fill: "#fff", stroke: "#40a9ff" }, cardStyle), - name: "main-box", - draggable: true - }); - if (value2) { - height += paddingArray[0]; - var createRowItems_1 = function(item, contentWidth2, startX) { - var _a7, _b2; - var text = item.text, icon = item.icon; - var textShape; - var iconShape; - if (icon) { - iconShape = group2.addShape("image", { - attrs: __assign29({ x: startX, y: height, img: icon, width: contentHeight, height: contentHeight }, getStyle3(labelStyle, cfg, group2, "icon")), - name: "fund-icon" - }); - } - textShape = group2 === null || group2 === void 0 ? void 0 : group2.addShape("text", { - attrs: __assign29(__assign29({ textBaseline: "middle", textAlign: iconShape ? "start" : "center", x: startX + (iconShape ? (iconShape === null || iconShape === void 0 ? void 0 : iconShape.getBBox().width) + defaultMargin : contentWidth2 / 2), y: paddingArray[0] + contentHeight / 2, text }, defaultLabelStyle), getStyle3(labelStyle, cfg, group2, "text")), - name: "fund-text" - }); - return [(_a7 = textShape === null || textShape === void 0 ? void 0 : textShape.getBBox().height) !== null && _a7 !== void 0 ? _a7 : 0, (_b2 = iconShape === null || iconShape === void 0 ? void 0 : iconShape.getBBox().height) !== null && _b2 !== void 0 ? _b2 : 0]; - }; - var createItems = function(item) { - var _a7; - var itemsHeight = []; - if (customContent) { - itemsHeight.push((_a7 = customContent(item, group2, { - startX: paddingArray[3], - startY: height, - width: contentWidth - })) !== null && _a7 !== void 0 ? _a7 : 0); - } else { - itemsHeight.push.apply(itemsHeight, createRowItems_1(item, contentWidth, paddingArray[3])); - } - height += Math.max.apply(Math, itemsHeight); - }; - createItems(value2); - } - shape === null || shape === void 0 ? void 0 : shape.attr("height", Math.max(size2[1], height + paddingArray[2])); - if (markerCfg) { - var stateCollapsed = ((_b = (_a6 = group2 === null || group2 === void 0 ? void 0 : group2.get("item")) === null || _a6 === void 0 ? void 0 : _a6.getModel()) !== null && _b !== void 0 ? _b : {}).collapsed; - var _g = shape.getBBox(), shapeWidth_1 = _g.width, shapeHeight = _g.height; - var _h = typeof markerCfg === "function" ? markerCfg(cfg, group2) : markerCfg, show = _h.show, _j = _h.position, position2 = _j === void 0 ? "right" : _j, collapsed = _h.collapsed, markerStyle = _h.style; - createMarker({ - show, - position: position2, - collapsed: stateCollapsed !== null && stateCollapsed !== void 0 ? stateCollapsed : collapsed, - style: markerStyle - }, group2, [shapeWidth_1, shapeHeight]); - shape.attr("defaultCollapsed", collapsed); - } - return shape; - }, - update: void 0 - }, "single-node"); - es_default5.registerEdge("fund-line", { - draw: function draw4(cfg, group2) { - if (cfg === void 0) { - cfg = {}; - } - var edgeCfg = cfg.edgeCfg, value2 = cfg.value; - var _a6 = getPathText(value2), text = _a6.text, subText = _a6.subText; - var _b = edgeCfg, edgeStyle = _b.style, labelCfg = _b.label; - var _c = getPathInfo(cfg), startArrow = _c.startArrow, endArrow = _c.endArrow, path = _c.path, line2StartPoint = _c.line2StartPoint, endY = _c.endY; - var labelStyle = (labelCfg !== null && labelCfg !== void 0 ? labelCfg : {}).style; - var line2 = group2.addShape("path", { - attrs: __assign29({ path, stroke: "#ccc", startArrow, endArrow }, typeof edgeStyle === "function" ? edgeStyle(cfg, group2) : edgeStyle), - name: "path-shape" - }); - var createItem = function(itemText, key) { - group2.addShape("text", { - attrs: __assign29(__assign29({ text: itemText, x: line2StartPoint.x, y: key === "text" ? endY - 4 : endY + 16 }, defaultLabelStyle), getStyle3(labelStyle, cfg, group2, key)), - name: "line-text-" + key - }); - }; - text && createItem(text, "text"); - subText && createItem(subText, "subText"); - return line2; - }, - update: function(cfg, edge2) { - var edgeCfg = cfg.edgeCfg, value2 = cfg.value; - var _a6 = getPathText(value2), text = _a6.text, subText = _a6.subText; - var group2 = edge2.getContainer(); - var getShape3 = function(shapeName) { - return group2.get("children").find(function(item) { - return item.get("name") === shapeName; - }); - }; - var _b = getPathInfo(cfg), startArrow = _b.startArrow, endArrow = _b.endArrow, path = _b.path, line2StartPoint = _b.line2StartPoint, endY = _b.endY; - var _c = edgeCfg, edgeStyle = _c.style, labelCfg = _c.label; - var labelStyle = (labelCfg !== null && labelCfg !== void 0 ? labelCfg : {}).style; - var pathShape = getShape3("path-shape"); - pathShape === null || pathShape === void 0 ? void 0 : pathShape.attr(__assign29({ path, stroke: "#ccc", startArrow, endArrow }, typeof edgeStyle === "function" ? edgeStyle(cfg, group2) : edgeStyle)); - var texts = ["text", "subText"]; - texts.forEach(function(key) { - var textShape = getShape3("line-text-" + key); - textShape === null || textShape === void 0 ? void 0 : textShape.attr(__assign29(__assign29({ x: line2StartPoint.x, y: key === "text" ? endY - 4 : endY + 16, text: key === "text" ? text : subText }, defaultLabelStyle), getStyle3(labelStyle, cfg, group2, key))); - }); - } - }, "single-edge"); -}; - -// node_modules/@ant-design/charts/es/graphs/fundFlowGraph/index.js -var __rest45 = function(s4, e4) { - var t4 = {}; - for (var p4 in s4) - if (Object.prototype.hasOwnProperty.call(s4, p4) && e4.indexOf(p4) < 0) - t4[p4] = s4[p4]; - if (s4 != null && typeof Object.getOwnPropertySymbols === "function") - for (var i4 = 0, p4 = Object.getOwnPropertySymbols(s4); i4 < p4.length; i4++) { - if (e4.indexOf(p4[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s4, p4[i4])) - t4[p4[i4]] = s4[p4[i4]]; - } - return t4; -}; -registerFundFlowItems(); -var defaultLayout13 = { - type: "dagre", - rankdir: "LR", - nodesep: 30, - ranksep: 50 -}; -var defaultProps12 = { - nodeCfg: { - type: "fund-card", - size: defaultNodeSize, - style: defaultNodeStyle, - anchorPoints: defaultFlowGraphAnchorPoints, - nodeStateStyles: defaultStateStyles, - padding: 6 - }, - edgeCfg: { - type: "fund-line", - edgeStateStyles: defaultStateStyles, - style: { - stroke: "#40a9ff" - }, - endArrow: { - fill: "#40a9ff" - } - }, - behaviors: ["zoom-canvas", "drag-canvas"], - layout: defaultLayout13, - animate: true, - autoFit: true, - fitCenter: true, - style: { - position: "relative", - height: "inherit", - backgroundColor: "#fff" - } -}; -var FundFlowGraph = function(props) { - var uProps = useProps3(props, defaultProps12).uProps; - var className = uProps.className, style = uProps.style, loading = uProps.loading, loadingTemplate = uProps.loadingTemplate, errorTemplate = uProps.errorTemplate, rest = __rest45(uProps, ["className", "style", "loading", "loadingTemplate", "errorTemplate"]); - var container2 = useGraph2("Graph", rest, { name: "FundFlowGraph" }).container; - return compat_module_default.createElement(errorBoundary_default, { errorTemplate }, loading && compat_module_default.createElement(createLoading_default, { loadingTemplate }), compat_module_default.createElement("div", { className, style, ref: container2 })); -}; -var fundFlowGraph_default = FundFlowGraph; - -// node_modules/@ant-design/charts/es/index.js -var es_default6 = { - Area: area_default2, - Bar: bar_default, - Box: box_default, - Bullet: bullet_default, - Column: column_default, - Funnel: funnel_default, - Histogram: histogram_default, - Line: line_default10, - Liquid: liquid_default, - Heatmap: heatmap_default2, - Pie: pie_default2, - Progress: progress_default, - Radar: radar_default, - Facet: facet_default, - RingProgress: ringProgress_default, - Rose: rose_default, - Chord: chord_default, - Scatter: scatter_default, - TinyArea: tinyArea_default, - TinyColumn: tinyColumn_default, - TinyLine: tinyLine_default, - Waterfall: waterfall_default, - WordCloud: wordCloud_default, - Sunburst: sunburst_default, - DualAxes: dualAxes_default, - Stock: stock_default, - RadialBar: radialBar_default, - Gauge: gauge_default, - Sankey: sankey_default, - Treemap: treemap_default2, - Violin: violin_default2, - MultiView: mix_default, - Mix: mix_default, - Venn: venn_default, - BidirectionalBar: bidirectionalBar_default, - OrganizationTreeGraph: organizationTreeGraph_default, - DagreGraph: dagre_default2, - IndentedTree: indented_default, - DagreFundFlowGraph: dagreFundFlow_default, - IndentedTreeGraph: indentedTreeGraph_default, - FlowAnalysisGraph: flowAnalysisGraph_default, - RadialTreeGraph: radialTreeGraph_default, - DecompositionTreeGraph: decompositionTreeGraph_default, - OrganizationGraph: organizationGraph_default, - OrganizationalGraph: organizationalGraph_default, - RadialGraph: radialGraph_default, - FundFlowGraph: fundFlowGraph_default, - G2: esm_exports3, - flow, - measureTextWidth: measureTextWidth2, - adaptors -}; - // src/components/Chart.tsx -var import_errorBoundary2 = __toModule(require_errorBoundary()); -es_default6.G2.registerTheme("theme1", { +esm_exports3.registerTheme("theme1", { colors10: ["#FF6B3B", "#626681", "#FFC100", "#9FB40F", "#76523B", "#DAD5B5", "#0E8E89", "#E19348", "#F383A2", "#247FEA"], colors20: ["#FF6B3B", "#626681", "#FFC100", "#9FB40F", "#76523B", "#DAD5B5", "#0E8E89", "#E19348", "#F383A2", "#247FEA", "#2BCB95", "#B1ABF4", "#1D42C2", "#1D9ED1", "#D64BC0", "#255634", "#8C8C47", "#8CDAE5", "#8E283B", "#791DC9"] }); -es_default6.G2.registerTheme("theme2", { +esm_exports3.registerTheme("theme2", { "colors10": ["#025DF4", "#DB6BCF", "#2498D1", "#BBBDE6", "#4045B2", "#21A97A", "#FF745A", "#007E99", "#FFA8A8", "#2391FF"], "colors20": ["#025DF4", "#DB6BCF", "#2498D1", "#BBBDE6", "#4045B2", "#21A97A", "#FF745A", "#007E99", "#FFA8A8", "#2391FF", "#FFC328", "#A0DC2C", "#946DFF", "#626681", "#EB4185", "#CD8150", "#36BCCB", "#327039", "#803488", "#83BC99"] }); -var Chart2 = ({ type: type2, config }) => { - const Component4 = es_default6[type2]; - return /* @__PURE__ */ compat_module_default.createElement(import_errorBoundary2.default, null, /* @__PURE__ */ compat_module_default.createElement(Component4, __spreadProps(__spreadValues({}, config), { +var Chart2 = ({ type: type2, config, showExportBtn = false }) => { + const Component4 = es_exports[type2] || es_exports3[type2]; + const ref = s3(); + let exportBtn; + if (showExportBtn) { + const downloadImage = () => { + var _a6; + (_a6 = ref.current) == null ? void 0 : _a6.downloadImage(`${type2}.png`); + }; + exportBtn = /* @__PURE__ */ compat_module_default.createElement("div", { + className: "chartsview-export-button", + "aria-label": "Export to PNG", + onClick: downloadImage + }, /* @__PURE__ */ compat_module_default.createElement("svg", { + className: "code-glyph", + viewBox: "0 0 1024 1024", + width: "16", + height: "16" + }, /* @__PURE__ */ compat_module_default.createElement("path", { + fill: "currentColor", + stroke: "currentColor", + d: "M896 166.4H128c-25.6 0-42.666667 17.066667-42.666667 42.666667v597.333333c0 25.6 17.066667 42.666667 42.666667 42.666667h768c25.6 0 42.666667-17.066667 42.666667-42.666667v-597.333333c0-25.6-21.333333-42.666667-42.666667-42.666667z m-42.666667 85.333333v418.133334l-136.533333-136.533334c-21.333333-12.8-51.2-12.8-64 4.266667L554.666667 635.733333l-183.466667-179.2c-17.066667-17.066667-46.933333-17.066667-59.733333 0L170.666667 597.333333V251.733333h682.666666z m-243.2 443.733334l76.8-76.8 136.533334 140.8h-145.066667l-68.266667-64zM170.666667 716.8l170.666666-170.666667 217.6 217.6H170.666667v-46.933333z" + }), /* @__PURE__ */ compat_module_default.createElement("path", { + fill: "currentColor", + stroke: "currentColor", + d: "M716.8 396.8m-64 0a64 64 0 1 0 128 0 64 64 0 1 0-128 0Z" + }))); + } + return /* @__PURE__ */ compat_module_default.createElement(errorBoundary_default, null, exportBtn, /* @__PURE__ */ compat_module_default.createElement(Component4, __spreadProps(__spreadValues({}, config), { onReady: (chart) => { + ref.current = chart; if (chart instanceof Plot) { const custom12 = {}; if (config.theme && config.backgroundColor) { @@ -143138,7 +152629,7 @@ function getWordCountRegex() { nonSpaceDelimitedWordsOther ].join("|"), "g"); } -function getWordCount(text, filter2) { +function getWordCount(text, filter17) { const words = {}; const matchs = text.match(getWordCountRegex()); if (matchs) { @@ -143148,7 +152639,7 @@ function getWordCount(text, filter2) { }); } const wordCount = []; - const ignoreRegex = new RegExp(filter2.split("\n").map((e4) => ["^", e4.trim(), "$"].join("")).join("|"), "i"); + const ignoreRegex = new RegExp(filter17.split("\n").map((e4) => ["^", e4.trim(), "$"].join("")).join("|"), "i"); for (const word2 in words) { if (!ignoreRegex.test(word2)) { wordCount.push({ word: word2, count: words[word2] }); @@ -143158,18 +152649,18 @@ function getWordCount(text, filter2) { } // src/parser.ts -var import_obsidian_dataview = __toModule(require_lib4()); +var import_obsidian_dataview = __toModule(require_lib5()); var functionRegex = /^\s*function\s*.*\(.*\)\s*\{[\w\W]*\}\s*/i; function parseConfig(content, plugin, sourcePath) { return __async(this, null, function* () { const dataProps = (0, import_obsidian2.parseYaml)(content); - const type2 = dataProps["type"]; - const chart = es_default6[type2]; + const type2 = dataProps.type; + const chart = es_exports[type2] || es_exports3[type2]; if (chart === void 0) { throw new Error(`Unsupported chart type ${type2}.`); } - const data3 = dataProps["data"]; - const options = stringToFunction(dataProps["options"] || {}); + const data3 = dataProps.data; + const options = stringToFunction(dataProps.options || {}); if (type2 == "MultiView" || type2 == "Mix") { return { type: type2, @@ -143212,7 +152703,7 @@ function parseMultiViewConfig(dataProps, data3, options, plugin, sourcePath) { view[keyParts[0]] = dataProps[key]; temp.set(viewType, view); } - for (let v3 of temp.values()) { + for (const v3 of temp.values()) { views.push(__spreadValues({ data: (yield loadFromFile(v3["data"], plugin, sourcePath)) || data3 }, stringToFunction(v3["options"] || {}))); } return __spreadValues({ views }, options); @@ -143253,7 +152744,7 @@ var dataViewApiProxy = function(api, currentFilePath) { isArray: function(raw) { return api.isArray(raw); }, - fileLink: function(path, embed = false, display) { + fileLink: function(path, embed, display) { return import_obsidian_dataview.Link.file(path, embed, display); }, date: function(pathlike) { @@ -143305,7 +152796,8 @@ function loadFromCsv(data3, plugin) { const csvFileNames = data3.split(","); const value2 = []; for (const name of csvFileNames.values()) { - const file = plugin.app.vault.getAbstractFileByPath(plugin.settings.dataPath + "/" + name.trim()); + const path = plugin.settings.dataPath === "/" ? "" : `${plugin.settings.dataPath}/`; + const file = plugin.app.vault.getAbstractFileByPath(`${path}${name.trim()}`); if (file instanceof import_obsidian2.TFile) { value2.push(parseCsv(yield plugin.app.vault.read(file))); } else { @@ -143332,6 +152824,7 @@ var DEFAULT_SETTINGS = { paddingRight: 30, paddingBottom: 30, paddingLeft: 30, + showExportBtn: false, wordCountFilter: `[A-z]{1,2} [0-9]+ (?=[MDCLXVI])M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?I*) @@ -143376,7 +152869,7 @@ var ChartsViewSettingTab = class extends import_obsidian3.PluginSettingTab { this.plugin = plugin; } display() { - let { containerEl } = this; + const { containerEl } = this; containerEl.empty(); containerEl.createEl("h2", { text: "Charts View Settings" }); new import_obsidian3.Setting(containerEl).setName("Theme").setDesc("Choose default color scheme.").addDropdown((dropdown) => dropdown.addOption("default", "default").addOption("dark", "dark").addOption("theme1", "Theme #1").addOption("theme2", "Theme #2").setValue(this.plugin.settings.theme).onChange((value2) => __async(this, null, function* () { @@ -143416,6 +152909,10 @@ var ChartsViewSettingTab = class extends import_obsidian3.PluginSettingTab { this.plugin.settings.dataPath = value2; yield this.plugin.saveSettings(); }))); + new import_obsidian3.Setting(containerEl).setName("Show Export Button").addToggle((toggle) => toggle.setValue(this.plugin.settings.showExportBtn).onChange((value2) => __async(this, null, function* () { + this.plugin.settings.showExportBtn = value2; + yield this.plugin.saveSettings(); + }))); new import_obsidian3.Setting(containerEl).setName("Word Filter").setDesc("For word count, any words in the list will be ignored.").addTextArea((text) => { text.inputEl.rows = 6; text.setValue(this.plugin.settings.wordCountFilter).onChange((value2) => __async(this, null, function* () { @@ -143424,7 +152921,7 @@ var ChartsViewSettingTab = class extends import_obsidian3.PluginSettingTab { })); }); if (import_obsidian3.Platform.isDesktopApp) { - compat_module_default.render(/* @__PURE__ */ compat_module_default.createElement(compat_module_default.Fragment, null, /* @__PURE__ */ compat_module_default.createElement("p", null, "Make a donation to support Charts View plugin development."), /* @__PURE__ */ compat_module_default.createElement("p", null, "\u2764\uFE0F Thank you for your support. \u2764\uFE0F"), /* @__PURE__ */ compat_module_default.createElement("a", { + compat_module_default.render(/* @__PURE__ */ compat_module_default.createElement(compat_module_default.Fragment, null, /* @__PURE__ */ compat_module_default.createElement("p", null, "Make a donation to support Charts View plugin development."), /* @__PURE__ */ compat_module_default.createElement("a", { href: "https://paypal.me/caronchenhz", className: "paypal" }, /* @__PURE__ */ compat_module_default.createElement("svg", { @@ -143596,11 +153093,11 @@ var ChartTemplateSuggestModal = class extends import_obsidian4.FuzzySuggestModal var CSV_FILE_EXTENSION = "csv"; var VIEW_TYPE_CSV = "csv"; var ChartsViewPlugin = class extends import_obsidian5.Plugin { - ChartsViewProcessor(source, el, ctx4) { + ChartsViewProcessor(source, el, ctx3) { return __async(this, null, function* () { compat_module_default.unmountComponentAtNode(el); try { - const chartProps = yield parseConfig(source, this, ctx4.sourcePath); + const chartProps = yield parseConfig(source, this, ctx3.sourcePath); const cfg = chartProps.config; const isBackgroundColorCustomed = cfg.theme && (cfg.theme.background || cfg.theme.styleSheet && cfg.theme.styleSheet.backgroundColor); const isPaddingCustomed = cfg.padding; @@ -143612,7 +153109,9 @@ var ChartsViewPlugin = class extends import_obsidian5.Plugin { this.settings.paddingBottom, this.settings.paddingLeft ]; - compat_module_default.render(/* @__PURE__ */ compat_module_default.createElement(Chart2, __spreadValues({}, chartProps)), el); + compat_module_default.render(/* @__PURE__ */ compat_module_default.createElement(Chart2, __spreadProps(__spreadValues({}, chartProps), { + showExportBtn: this.settings.showExportBtn + })), el); } catch (e4) { compat_module_default.render(/* @__PURE__ */ compat_module_default.createElement("div", { style: { color: "var(--text-title-h1)" } diff --git a/notes/.obsidian/plugins/obsidian-chartsview-plugin/manifest.json b/notes/.obsidian/plugins/obsidian-chartsview-plugin/manifest.json index 6099e41..95a662d 100644 --- a/notes/.obsidian/plugins/obsidian-chartsview-plugin/manifest.json +++ b/notes/.obsidian/plugins/obsidian-chartsview-plugin/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-chartsview-plugin", "name": "Charts View", - "version": "1.1.3", + "version": "1.1.6", "minAppVersion": "0.9.12", "description": "Data visualization solution in Obsidian based on Ant Design Charts.", "author": "caronchen", diff --git a/notes/.obsidian/plugins/obsidian-chartsview-plugin/styles.css b/notes/.obsidian/plugins/obsidian-chartsview-plugin/styles.css index 31648b6..85e1186 100644 --- a/notes/.obsidian/plugins/obsidian-chartsview-plugin/styles.css +++ b/notes/.obsidian/plugins/obsidian-chartsview-plugin/styles.css @@ -35,4 +35,21 @@ .chartsview-thumbnail-container .chartsview-thumbnail img { width: 300px; } +} + +.chartsview-export-button { + padding: 5px; + position: relative; + width: fit-content; + display: flex; + opacity: 0; + transition: opacity 500ms; + background-color: var(--interactive-accent); + color: var(--text-on-accent); + border-radius: 5px; + cursor: pointer; +} + +.block-language-chartsview:hover .chartsview-export-button { + opacity: 1; } \ No newline at end of file diff --git a/notes/.obsidian/plugins/obsidian-emoji-toolbar/main.js b/notes/.obsidian/plugins/obsidian-emoji-toolbar/main.js index 8799402..1771be0 100644 --- a/notes/.obsidian/plugins/obsidian-emoji-toolbar/main.js +++ b/notes/.obsidian/plugins/obsidian-emoji-toolbar/main.js @@ -2,16857 +2,9447 @@ var obsidian = require('obsidian'); -/*! ***************************************************************************** -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 __()); -} - -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) { + var module = { exports: {} }; + return fn(module, module.exports), module.exports; } -var orderedEmoji = [ - "😀", - "😃", - "😄", - "😁", - "😆", - "😅", - "🤣", - "😂", - "🙂", - "🙃", - "😉", - "😊", - "😇", - "🥰", - "😍", - "🤩", - "😘", - "😗", - "☺️", - "😚", - "😙", - "🥲", - "😋", - "😛", - "😜", - "🤪", - "😝", - "🤑", - "🤗", - "🤭", - "🤫", - "🤔", - "🤐", - "🤨", - "😐", - "😑", - "😶", - "😏", - "😒", - "🙄", - "😬", - "🤥", - "😌", - "😔", - "😪", - "🤤", - "😴", - "😷", - "🤒", - "🤕", - "🤢", - "🤮", - "🤧", - "🥵", - "🥶", - "🥴", - "😵", - "🤯", - "🤠", - "🥳", - "🥸", - "😎", - "🤓", - "🧐", - "😕", - "😟", - "🙁", - "☹️", - "😮", - "😯", - "😲", - "😳", - "🥺", - "😦", - "😧", - "😨", - "😰", - "😥", - "😢", - "😭", - "😱", - "😖", - "😣", - "😞", - "😓", - "😩", - "😫", - "🥱", - "😤", - "😡", - "😠", - "🤬", - "😈", - "👿", - "💀", - "☠️", - "💩", - "🤡", - "👹", - "👺", - "👻", - "👽", - "👾", - "🤖", - "😺", - "😸", - "😹", - "😻", - "😼", - "😽", - "🙀", - "😿", - "😾", - "🙈", - "🙉", - "🙊", - "💋", - "💌", - "💘", - "💝", - "💖", - "💗", - "💓", - "💞", - "💕", - "💟", - "❣️", - "💔", - "❤️", - "🧡", - "💛", - "💚", - "💙", - "💜", - "🤎", - "🖤", - "🤍", - "💯", - "💢", - "💥", - "💫", - "💦", - "💨", - "🕳️", - "💣", - "💬", - "👁️‍🗨️", - "🗨️", - "🗯️", - "💭", - "💤", - "👋", - "🤚", - "🖐️", - "✋", - "🖖", - "👌", - "🤌", - "🤏", - "✌️", - "🤞", - "🤟", - "🤘", - "🤙", - "👈", - "👉", - "👆", - "🖕", - "👇", - "☝️", - "👍", - "👎", - "✊", - "👊", - "🤛", - "🤜", - "👏", - "🙌", - "👐", - "🤲", - "🤝", - "🙏", - "✍️", - "💅", - "🤳", - "💪", - "🦾", - "🦿", - "🦵", - "🦶", - "👂", - "🦻", - "👃", - "🧠", - "🫀", - "🫁", - "🦷", - "🦴", - "👀", - "👁️", - "👅", - "👄", - "👶", - "🧒", - "👦", - "👧", - "🧑", - "👱", - "👨", - "🧔", - "👨‍🦰", - "👨‍🦱", - "👨‍🦳", - "👨‍🦲", - "👩", - "👩‍🦰", - "🧑‍🦰", - "👩‍🦱", - "🧑‍🦱", - "👩‍🦳", - "🧑‍🦳", - "👩‍🦲", - "🧑‍🦲", - "👱‍♀️", - "👱‍♂️", - "🧓", - "👴", - "👵", - "🙍", - "🙍‍♂️", - "🙍‍♀️", - "🙎", - "🙎‍♂️", - "🙎‍♀️", - "🙅", - "🙅‍♂️", - "🙅‍♀️", - "🙆", - "🙆‍♂️", - "🙆‍♀️", - "💁", - "💁‍♂️", - "💁‍♀️", - "🙋", - "🙋‍♂️", - "🙋‍♀️", - "🧏", - "🧏‍♂️", - "🧏‍♀️", - "🙇", - "🙇‍♂️", - "🙇‍♀️", - "🤦", - "🤦‍♂️", - "🤦‍♀️", - "🤷", - "🤷‍♂️", - "🤷‍♀️", - "🧑‍⚕️", - "👨‍⚕️", - "👩‍⚕️", - "🧑‍🎓", - "👨‍🎓", - "👩‍🎓", - "🧑‍🏫", - "👨‍🏫", - "👩‍🏫", - "🧑‍⚖️", - "👨‍⚖️", - "👩‍⚖️", - "🧑‍🌾", - "👨‍🌾", - "👩‍🌾", - "🧑‍🍳", - "👨‍🍳", - "👩‍🍳", - "🧑‍🔧", - "👨‍🔧", - "👩‍🔧", - "🧑‍🏭", - "👨‍🏭", - "👩‍🏭", - "🧑‍💼", - "👨‍💼", - "👩‍💼", - "🧑‍🔬", - "👨‍🔬", - "👩‍🔬", - "🧑‍💻", - "👨‍💻", - "👩‍💻", - "🧑‍🎤", - "👨‍🎤", - "👩‍🎤", - "🧑‍🎨", - "👨‍🎨", - "👩‍🎨", - "🧑‍✈️", - "👨‍✈️", - "👩‍✈️", - "🧑‍🚀", - "👨‍🚀", - "👩‍🚀", - "🧑‍🚒", - "👨‍🚒", - "👩‍🚒", - "👮", - "👮‍♂️", - "👮‍♀️", - "🕵️", - "🕵️‍♂️", - "🕵️‍♀️", - "💂", - "💂‍♂️", - "💂‍♀️", - "🥷", - "👷", - "👷‍♂️", - "👷‍♀️", - "🤴", - "👸", - "👳", - "👳‍♂️", - "👳‍♀️", - "👲", - "🧕", - "🤵", - "🤵‍♂️", - "🤵‍♀️", - "👰", - "👰‍♂️", - "👰‍♀️", - "🤰", - "🤱", - "👩‍🍼", - "👨‍🍼", - "🧑‍🍼", - "👼", - "🎅", - "🤶", - "🧑‍🎄", - "🦸", - "🦸‍♂️", - "🦸‍♀️", - "🦹", - "🦹‍♂️", - "🦹‍♀️", - "🧙", - "🧙‍♂️", - "🧙‍♀️", - "🧚", - "🧚‍♂️", - "🧚‍♀️", - "🧛", - "🧛‍♂️", - "🧛‍♀️", - "🧜", - "🧜‍♂️", - "🧜‍♀️", - "🧝", - "🧝‍♂️", - "🧝‍♀️", - "🧞", - "🧞‍♂️", - "🧞‍♀️", - "🧟", - "🧟‍♂️", - "🧟‍♀️", - "💆", - "💆‍♂️", - "💆‍♀️", - "💇", - "💇‍♂️", - "💇‍♀️", - "🚶", - "🚶‍♂️", - "🚶‍♀️", - "🧍", - "🧍‍♂️", - "🧍‍♀️", - "🧎", - "🧎‍♂️", - "🧎‍♀️", - "🧑‍🦯", - "👨‍🦯", - "👩‍🦯", - "🧑‍🦼", - "👨‍🦼", - "👩‍🦼", - "🧑‍🦽", - "👨‍🦽", - "👩‍🦽", - "🏃", - "🏃‍♂️", - "🏃‍♀️", - "💃", - "🕺", - "🕴️", - "👯", - "👯‍♂️", - "👯‍♀️", - "🧖", - "🧖‍♂️", - "🧖‍♀️", - "🧗", - "🧗‍♂️", - "🧗‍♀️", - "🤺", - "🏇", - "⛷️", - "🏂", - "🏌️", - "🏌️‍♂️", - "🏌️‍♀️", - "🏄", - "🏄‍♂️", - "🏄‍♀️", - "🚣", - "🚣‍♂️", - "🚣‍♀️", - "🏊", - "🏊‍♂️", - "🏊‍♀️", - "⛹️", - "⛹️‍♂️", - "⛹️‍♀️", - "🏋️", - "🏋️‍♂️", - "🏋️‍♀️", - "🚴", - "🚴‍♂️", - "🚴‍♀️", - "🚵", - "🚵‍♂️", - "🚵‍♀️", - "🤸", - "🤸‍♂️", - "🤸‍♀️", - "🤼", - "🤼‍♂️", - "🤼‍♀️", - "🤽", - "🤽‍♂️", - "🤽‍♀️", - "🤾", - "🤾‍♂️", - "🤾‍♀️", - "🤹", - "🤹‍♂️", - "🤹‍♀️", - "🧘", - "🧘‍♂️", - "🧘‍♀️", - "🛀", - "🛌", - "🧑‍🤝‍🧑", - "👭", - "👫", - "👬", - "💏", - "👩‍❤️‍💋‍👨", - "👨‍❤️‍💋‍👨", - "👩‍❤️‍💋‍👩", - "💑", - "👩‍❤️‍👨", - "👨‍❤️‍👨", - "👩‍❤️‍👩", - "👪", - "👨‍👩‍👦", - "👨‍👩‍👧", - "👨‍👩‍👧‍👦", - "👨‍👩‍👦‍👦", - "👨‍👩‍👧‍👧", - "👨‍👨‍👦", - "👨‍👨‍👧", - "👨‍👨‍👧‍👦", - "👨‍👨‍👦‍👦", - "👨‍👨‍👧‍👧", - "👩‍👩‍👦", - "👩‍👩‍👧", - "👩‍👩‍👧‍👦", - "👩‍👩‍👦‍👦", - "👩‍👩‍👧‍👧", - "👨‍👦", - "👨‍👦‍👦", - "👨‍👧", - "👨‍👧‍👦", - "👨‍👧‍👧", - "👩‍👦", - "👩‍👦‍👦", - "👩‍👧", - "👩‍👧‍👦", - "👩‍👧‍👧", - "🗣️", - "👤", - "👥", - "🫂", - "👣", - "🐵", - "🐒", - "🦍", - "🦧", - "🐶", - "🐕", - "🦮", - "🐕‍🦺", - "🐩", - "🐺", - "🦊", - "🦝", - "🐱", - "🐈", - "🐈‍⬛", - "🦁", - "🐯", - "🐅", - "🐆", - "🐴", - "🐎", - "🦄", - "🦓", - "🦌", - "🦬", - "🐮", - "🐂", - "🐃", - "🐄", - "🐷", - "🐖", - "🐗", - "🐽", - "🐏", - "🐑", - "🐐", - "🐪", - "🐫", - "🦙", - "🦒", - "🐘", - "🦣", - "🦏", - "🦛", - "🐭", - "🐁", - "🐀", - "🐹", - "🐰", - "🐇", - "🐿️", - "🦫", - "🦔", - "🦇", - "🐻", - "🐻‍❄️", - "🐨", - "🐼", - "🦥", - "🦦", - "🦨", - "🦘", - "🦡", - "🐾", - "🦃", - "🐔", - "🐓", - "🐣", - "🐤", - "🐥", - "🐦", - "🐧", - "🕊️", - "🦅", - "🦆", - "🦢", - "🦉", - "🦤", - "🪶", - "🦩", - "🦚", - "🦜", - "🐸", - "🐊", - "🐢", - "🦎", - "🐍", - "🐲", - "🐉", - "🦕", - "🦖", - "🐳", - "🐋", - "🐬", - "🦭", - "🐟", - "🐠", - "🐡", - "🦈", - "🐙", - "🐚", - "🐌", - "🦋", - "🐛", - "🐜", - "🐝", - "🪲", - "🐞", - "🦗", - "🪳", - "🕷️", - "🕸️", - "🦂", - "🦟", - "🪰", - "🪱", - "🦠", - "💐", - "🌸", - "💮", - "🏵️", - "🌹", - "🥀", - "🌺", - "🌻", - "🌼", - "🌷", - "🌱", - "🪴", - "🌲", - "🌳", - "🌴", - "🌵", - "🌾", - "🌿", - "☘️", - "🍀", - "🍁", - "🍂", - "🍃", - "🍇", - "🍈", - "🍉", - "🍊", - "🍋", - "🍌", - "🍍", - "🥭", - "🍎", - "🍏", - "🍐", - "🍑", - "🍒", - "🍓", - "🫐", - "🥝", - "🍅", - "🫒", - "🥥", - "🥑", - "🍆", - "🥔", - "🥕", - "🌽", - "🌶️", - "🫑", - "🥒", - "🥬", - "🥦", - "🧄", - "🧅", - "🍄", - "🥜", - "🌰", - "🍞", - "🥐", - "🥖", - "🫓", - "🥨", - "🥯", - "🥞", - "🧇", - "🧀", - "🍖", - "🍗", - "🥩", - "🥓", - "🍔", - "🍟", - "🍕", - "🌭", - "🥪", - "🌮", - "🌯", - "🫔", - "🥙", - "🧆", - "🥚", - "🍳", - "🥘", - "🍲", - "🫕", - "🥣", - "🥗", - "🍿", - "🧈", - "🧂", - "🥫", - "🍱", - "🍘", - "🍙", - "🍚", - "🍛", - "🍜", - "🍝", - "🍠", - "🍢", - "🍣", - "🍤", - "🍥", - "🥮", - "🍡", - "🥟", - "🥠", - "🥡", - "🦀", - "🦞", - "🦐", - "🦑", - "🦪", - "🍦", - "🍧", - "🍨", - "🍩", - "🍪", - "🎂", - "🍰", - "🧁", - "🥧", - "🍫", - "🍬", - "🍭", - "🍮", - "🍯", - "🍼", - "🥛", - "☕", - "🫖", - "🍵", - "🍶", - "🍾", - "🍷", - "🍸", - "🍹", - "🍺", - "🍻", - "🥂", - "🥃", - "🥤", - "🧋", - "🧃", - "🧉", - "🧊", - "🥢", - "🍽️", - "🍴", - "🥄", - "🔪", - "🏺", - "🌍", - "🌎", - "🌏", - "🌐", - "🗺️", - "🗾", - "🧭", - "🏔️", - "⛰️", - "🌋", - "🗻", - "🏕️", - "🏖️", - "🏜️", - "🏝️", - "🏞️", - "🏟️", - "🏛️", - "🏗️", - "🧱", - "🪨", - "🪵", - "🛖", - "🏘️", - "🏚️", - "🏠", - "🏡", - "🏢", - "🏣", - "🏤", - "🏥", - "🏦", - "🏨", - "🏩", - "🏪", - "🏫", - "🏬", - "🏭", - "🏯", - "🏰", - "💒", - "🗼", - "🗽", - "⛪", - "🕌", - "🛕", - "🕍", - "⛩️", - "🕋", - "⛲", - "⛺", - "🌁", - "🌃", - "🏙️", - "🌄", - "🌅", - "🌆", - "🌇", - "🌉", - "♨️", - "🎠", - "🎡", - "🎢", - "💈", - "🎪", - "🚂", - "🚃", - "🚄", - "🚅", - "🚆", - "🚇", - "🚈", - "🚉", - "🚊", - "🚝", - "🚞", - "🚋", - "🚌", - "🚍", - "🚎", - "🚐", - "🚑", - "🚒", - "🚓", - "🚔", - "🚕", - "🚖", - "🚗", - "🚘", - "🚙", - "🛻", - "🚚", - "🚛", - "🚜", - "🏎️", - "🏍️", - "🛵", - "🦽", - "🦼", - "🛺", - "🚲", - "🛴", - "🛹", - "🛼", - "🚏", - "🛣️", - "🛤️", - "🛢️", - "⛽", - "🚨", - "🚥", - "🚦", - "🛑", - "🚧", - "⚓", - "⛵", - "🛶", - "🚤", - "🛳️", - "⛴️", - "🛥️", - "🚢", - "✈️", - "🛩️", - "🛫", - "🛬", - "🪂", - "💺", - "🚁", - "🚟", - "🚠", - "🚡", - "🛰️", - "🚀", - "🛸", - "🛎️", - "🧳", - "⌛", - "⏳", - "⌚", - "⏰", - "⏱️", - "⏲️", - "🕰️", - "🕛", - "🕧", - "🕐", - "🕜", - "🕑", - "🕝", - "🕒", - "🕞", - "🕓", - "🕟", - "🕔", - "🕠", - "🕕", - "🕡", - "🕖", - "🕢", - "🕗", - "🕣", - "🕘", - "🕤", - "🕙", - "🕥", - "🕚", - "🕦", - "🌑", - "🌒", - "🌓", - "🌔", - "🌕", - "🌖", - "🌗", - "🌘", - "🌙", - "🌚", - "🌛", - "🌜", - "🌡️", - "☀️", - "🌝", - "🌞", - "🪐", - "⭐", - "🌟", - "🌠", - "🌌", - "☁️", - "⛅", - "⛈️", - "🌤️", - "🌥️", - "🌦️", - "🌧️", - "🌨️", - "🌩️", - "🌪️", - "🌫️", - "🌬️", - "🌀", - "🌈", - "🌂", - "☂️", - "☔", - "⛱️", - "⚡", - "❄️", - "☃️", - "⛄", - "☄️", - "🔥", - "💧", - "🌊", - "🎃", - "🎄", - "🎆", - "🎇", - "🧨", - "✨", - "🎈", - "🎉", - "🎊", - "🎋", - "🎍", - "🎎", - "🎏", - "🎐", - "🎑", - "🧧", - "🎀", - "🎁", - "🎗️", - "🎟️", - "🎫", - "🎖️", - "🏆", - "🏅", - "🥇", - "🥈", - "🥉", - "⚽", - "⚾", - "🥎", - "🏀", - "🏐", - "🏈", - "🏉", - "🎾", - "🥏", - "🎳", - "🏏", - "🏑", - "🏒", - "🥍", - "🏓", - "🏸", - "🥊", - "🥋", - "🥅", - "⛳", - "⛸️", - "🎣", - "🤿", - "🎽", - "🎿", - "🛷", - "🥌", - "🎯", - "🪀", - "🪁", - "🎱", - "🔮", - "🪄", - "🧿", - "🎮", - "🕹️", - "🎰", - "🎲", - "🧩", - "🧸", - "🪅", - "🪆", - "♠️", - "♥️", - "♦️", - "♣️", - "♟️", - "🃏", - "🀄", - "🎴", - "🎭", - "🖼️", - "🎨", - "🧵", - "🪡", - "🧶", - "🪢", - "👓", - "🕶️", - "🥽", - "🥼", - "🦺", - "👔", - "👕", - "👖", - "🧣", - "🧤", - "🧥", - "🧦", - "👗", - "👘", - "🥻", - "🩱", - "🩲", - "🩳", - "👙", - "👚", - "👛", - "👜", - "👝", - "🛍️", - "🎒", - "🩴", - "👞", - "👟", - "🥾", - "🥿", - "👠", - "👡", - "🩰", - "👢", - "👑", - "👒", - "🎩", - "🎓", - "🧢", - "🪖", - "⛑️", - "📿", - "💄", - "💍", - "💎", - "🔇", - "🔈", - "🔉", - "🔊", - "📢", - "📣", - "📯", - "🔔", - "🔕", - "🎼", - "🎵", - "🎶", - "🎙️", - "🎚️", - "🎛️", - "🎤", - "🎧", - "📻", - "🎷", - "🪗", - "🎸", - "🎹", - "🎺", - "🎻", - "🪕", - "🥁", - "🪘", - "📱", - "📲", - "☎️", - "📞", - "📟", - "📠", - "🔋", - "🔌", - "💻", - "🖥️", - "🖨️", - "⌨️", - "🖱️", - "🖲️", - "💽", - "💾", - "💿", - "📀", - "🧮", - "🎥", - "🎞️", - "📽️", - "🎬", - "📺", - "📷", - "📸", - "📹", - "📼", - "🔍", - "🔎", - "🕯️", - "💡", - "🔦", - "🏮", - "🪔", - "📔", - "📕", - "📖", - "📗", - "📘", - "📙", - "📚", - "📓", - "📒", - "📃", - "📜", - "📄", - "📰", - "🗞️", - "📑", - "🔖", - "🏷️", - "💰", - "🪙", - "💴", - "💵", - "💶", - "💷", - "💸", - "💳", - "🧾", - "💹", - "✉️", - "📧", - "📨", - "📩", - "📤", - "📥", - "📦", - "📫", - "📪", - "📬", - "📭", - "📮", - "🗳️", - "✏️", - "✒️", - "🖋️", - "🖊️", - "🖌️", - "🖍️", - "📝", - "💼", - "📁", - "📂", - "🗂️", - "📅", - "📆", - "🗒️", - "🗓️", - "📇", - "📈", - "📉", - "📊", - "📋", - "📌", - "📍", - "📎", - "🖇️", - "📏", - "📐", - "✂️", - "🗃️", - "🗄️", - "🗑️", - "🔒", - "🔓", - "🔏", - "🔐", - "🔑", - "🗝️", - "🔨", - "🪓", - "⛏️", - "⚒️", - "🛠️", - "🗡️", - "⚔️", - "🔫", - "🪃", - "🏹", - "🛡️", - "🪚", - "🔧", - "🪛", - "🔩", - "⚙️", - "🗜️", - "⚖️", - "🦯", - "🔗", - "⛓️", - "🪝", - "🧰", - "🧲", - "🪜", - "⚗️", - "🧪", - "🧫", - "🧬", - "🔬", - "🔭", - "📡", - "💉", - "🩸", - "💊", - "🩹", - "🩺", - "🚪", - "🛗", - "🪞", - "🪟", - "🛏️", - "🛋️", - "🪑", - "🚽", - "🪠", - "🚿", - "🛁", - "🪤", - "🪒", - "🧴", - "🧷", - "🧹", - "🧺", - "🧻", - "🪣", - "🧼", - "🪥", - "🧽", - "🧯", - "🛒", - "🚬", - "⚰️", - "🪦", - "⚱️", - "🗿", - "🪧", - "🏧", - "🚮", - "🚰", - "♿", - "🚹", - "🚺", - "🚻", - "🚼", - "🚾", - "🛂", - "🛃", - "🛄", - "🛅", - "⚠️", - "🚸", - "⛔", - "🚫", - "🚳", - "🚭", - "🚯", - "🚱", - "🚷", - "📵", - "🔞", - "☢️", - "☣️", - "⬆️", - "↗️", - "➡️", - "↘️", - "⬇️", - "↙️", - "⬅️", - "↖️", - "↕️", - "↔️", - "↩️", - "↪️", - "⤴️", - "⤵️", - "🔃", - "🔄", - "🔙", - "🔚", - "🔛", - "🔜", - "🔝", - "🛐", - "⚛️", - "🕉️", - "✡️", - "☸️", - "☯️", - "✝️", - "☦️", - "☪️", - "☮️", - "🕎", - "🔯", - "♈", - "♉", - "♊", - "♋", - "♌", - "♍", - "♎", - "♏", - "♐", - "♑", - "♒", - "♓", - "⛎", - "🔀", - "🔁", - "🔂", - "▶️", - "⏩", - "⏭️", - "⏯️", - "◀️", - "⏪", - "⏮️", - "🔼", - "⏫", - "🔽", - "⏬", - "⏸️", - "⏹️", - "⏺️", - "⏏️", - "🎦", - "🔅", - "🔆", - "📶", - "📳", - "📴", - "♀️", - "♂️", - "⚧️", - "✖️", - "➕", - "➖", - "➗", - "♾️", - "‼️", - "⁉️", - "❓", - "❔", - "❕", - "❗", - "〰️", - "💱", - "💲", - "⚕️", - "♻️", - "⚜️", - "🔱", - "📛", - "🔰", - "⭕", - "✅", - "☑️", - "✔️", - "❌", - "❎", - "➰", - "➿", - "〽️", - "✳️", - "✴️", - "❇️", - "©️", - "®️", - "™️", - "#️⃣", - "*️⃣", - "0️⃣", - "1️⃣", - "2️⃣", - "3️⃣", - "4️⃣", - "5️⃣", - "6️⃣", - "7️⃣", - "8️⃣", - "9️⃣", - "🔟", - "🔠", - "🔡", - "🔢", - "🔣", - "🔤", - "🅰️", - "🆎", - "🅱️", - "🆑", - "🆒", - "🆓", - "ℹ️", - "🆔", - "Ⓜ️", - "🆕", - "🆖", - "🅾️", - "🆗", - "🅿️", - "🆘", - "🆙", - "🆚", - "🈁", - "🈂️", - "🈷️", - "🈶", - "🈯", - "🉐", - "🈹", - "🈚", - "🈲", - "🉑", - "🈸", - "🈴", - "🈳", - "㊗️", - "㊙️", - "🈺", - "🈵", - "🔴", - "🟠", - "🟡", - "🟢", - "🔵", - "🟣", - "🟤", - "⚫", - "⚪", - "🟥", - "🟧", - "🟨", - "🟩", - "🟦", - "🟪", - "🟫", - "⬛", - "⬜", - "◼️", - "◻️", - "◾", - "◽", - "▪️", - "▫️", - "🔶", - "🔷", - "🔸", - "🔹", - "🔺", - "🔻", - "💠", - "🔘", - "🔳", - "🔲", - "🏁", - "🚩", - "🎌", - "🏴", - "🏳️", - "🏳️‍🌈", - "🏳️‍⚧️", - "🏴‍☠️", - "🇦🇨", - "🇦🇩", - "🇦🇪", - "🇦🇫", - "🇦🇬", - "🇦🇮", - "🇦🇱", - "🇦🇲", - "🇦🇴", - "🇦🇶", - "🇦🇷", - "🇦🇸", - "🇦🇹", - "🇦🇺", - "🇦🇼", - "🇦🇽", - "🇦🇿", - "🇧🇦", - "🇧🇧", - "🇧🇩", - "🇧🇪", - "🇧🇫", - "🇧🇬", - "🇧🇭", - "🇧🇮", - "🇧🇯", - "🇧🇱", - "🇧🇲", - "🇧🇳", - "🇧🇴", - "🇧🇶", - "🇧🇷", - "🇧🇸", - "🇧🇹", - "🇧🇻", - "🇧🇼", - "🇧🇾", - "🇧🇿", - "🇨🇦", - "🇨🇨", - "🇨🇩", - "🇨🇫", - "🇨🇬", - "🇨🇭", - "🇨🇮", - "🇨🇰", - "🇨🇱", - "🇨🇲", - "🇨🇳", - "🇨🇴", - "🇨🇵", - "🇨🇷", - "🇨🇺", - "🇨🇻", - "🇨🇼", - "🇨🇽", - "🇨🇾", - "🇨🇿", - "🇩🇪", - "🇩🇬", - "🇩🇯", - "🇩🇰", - "🇩🇲", - "🇩🇴", - "🇩🇿", - "🇪🇦", - "🇪🇨", - "🇪🇪", - "🇪🇬", - "🇪🇭", - "🇪🇷", - "🇪🇸", - "🇪🇹", - "🇪🇺", - "🇫🇮", - "🇫🇯", - "🇫🇰", - "🇫🇲", - "🇫🇴", - "🇫🇷", - "🇬🇦", - "🇬🇧", - "🇬🇩", - "🇬🇪", - "🇬🇫", - "🇬🇬", - "🇬🇭", - "🇬🇮", - "🇬🇱", - "🇬🇲", - "🇬🇳", - "🇬🇵", - "🇬🇶", - "🇬🇷", - "🇬🇸", - "🇬🇹", - "🇬🇺", - "🇬🇼", - "🇬🇾", - "🇭🇰", - "🇭🇲", - "🇭🇳", - "🇭🇷", - "🇭🇹", - "🇭🇺", - "🇮🇨", - "🇮🇩", - "🇮🇪", - "🇮🇱", - "🇮🇲", - "🇮🇳", - "🇮🇴", - "🇮🇶", - "🇮🇷", - "🇮🇸", - "🇮🇹", - "🇯🇪", - "🇯🇲", - "🇯🇴", - "🇯🇵", - "🇰🇪", - "🇰🇬", - "🇰🇭", - "🇰🇮", - "🇰🇲", - "🇰🇳", - "🇰🇵", - "🇰🇷", - "🇰🇼", - "🇰🇾", - "🇰🇿", - "🇱🇦", - "🇱🇧", - "🇱🇨", - "🇱🇮", - "🇱🇰", - "🇱🇷", - "🇱🇸", - "🇱🇹", - "🇱🇺", - "🇱🇻", - "🇱🇾", - "🇲🇦", - "🇲🇨", - "🇲🇩", - "🇲🇪", - "🇲🇫", - "🇲🇬", - "🇲🇭", - "🇲🇰", - "🇲🇱", - "🇲🇲", - "🇲🇳", - "🇲🇴", - "🇲🇵", - "🇲🇶", - "🇲🇷", - "🇲🇸", - "🇲🇹", - "🇲🇺", - "🇲🇻", - "🇲🇼", - "🇲🇽", - "🇲🇾", - "🇲🇿", - "🇳🇦", - "🇳🇨", - "🇳🇪", - "🇳🇫", - "🇳🇬", - "🇳🇮", - "🇳🇱", - "🇳🇴", - "🇳🇵", - "🇳🇷", - "🇳🇺", - "🇳🇿", - "🇴🇲", - "🇵🇦", - "🇵🇪", - "🇵🇫", - "🇵🇬", - "🇵🇭", - "🇵🇰", - "🇵🇱", - "🇵🇲", - "🇵🇳", - "🇵🇷", - "🇵🇸", - "🇵🇹", - "🇵🇼", - "🇵🇾", - "🇶🇦", - "🇷🇪", - "🇷🇴", - "🇷🇸", - "🇷🇺", - "🇷🇼", - "🇸🇦", - "🇸🇧", - "🇸🇨", - "🇸🇩", - "🇸🇪", - "🇸🇬", - "🇸🇭", - "🇸🇮", - "🇸🇯", - "🇸🇰", - "🇸🇱", - "🇸🇲", - "🇸🇳", - "🇸🇴", - "🇸🇷", - "🇸🇸", - "🇸🇹", - "🇸🇻", - "🇸🇽", - "🇸🇾", - "🇸🇿", - "🇹🇦", - "🇹🇨", - "🇹🇩", - "🇹🇫", - "🇹🇬", - "🇹🇭", - "🇹🇯", - "🇹🇰", - "🇹🇱", - "🇹🇲", - "🇹🇳", - "🇹🇴", - "🇹🇷", - "🇹🇹", - "🇹🇻", - "🇹🇼", - "🇹🇿", - "🇺🇦", - "🇺🇬", - "🇺🇲", - "🇺🇳", - "🇺🇸", - "🇺🇾", - "🇺🇿", - "🇻🇦", - "🇻🇨", - "🇻🇪", - "🇻🇬", - "🇻🇮", - "🇻🇳", - "🇻🇺", - "🇼🇫", - "🇼🇸", - "🇽🇰", - "🇾🇪", - "🇾🇹", - "🇿🇦", - "🇿🇲", - "🇿🇼", - "🏴󠁧󠁢󠁥󠁮󠁧󠁿", - "🏴󠁧󠁢󠁳󠁣󠁴󠁿", - "🏴󠁧󠁢󠁷󠁬󠁳󠁿" -]; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ +/* eslint-disable no-unused-vars */ -var emojiNames = { - "😀": { - name: "grinning face", - slug: "grinning_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😃": { - name: "grinning face with big eyes", - slug: "grinning_face_with_big_eyes", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😄": { - name: "grinning face with smiling eyes", - slug: "grinning_face_with_smiling_eyes", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😁": { - name: "beaming face with smiling eyes", - slug: "beaming_face_with_smiling_eyes", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😆": { - name: "grinning squinting face", - slug: "grinning_squinting_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😅": { - name: "grinning face with sweat", - slug: "grinning_face_with_sweat", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🤣": { - name: "rolling on the floor laughing", - slug: "rolling_on_the_floor_laughing", - group: "Smileys & Emotion", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "😂": { - name: "face with tears of joy", - slug: "face_with_tears_of_joy", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🙂": { - name: "slightly smiling face", - slug: "slightly_smiling_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🙃": { - name: "upside-down face", - slug: "upside_down_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😉": { - name: "winking face", - slug: "winking_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😊": { - name: "smiling face with smiling eyes", - slug: "smiling_face_with_smiling_eyes", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😇": { - name: "smiling face with halo", - slug: "smiling_face_with_halo", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🥰": { - name: "smiling face with hearts", - slug: "smiling_face_with_hearts", - group: "Smileys & Emotion", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "😍": { - name: "smiling face with heart-eyes", - slug: "smiling_face_with_heart_eyes", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🤩": { - name: "star-struck", - slug: "star_struck", - group: "Smileys & Emotion", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "😘": { - name: "face blowing a kiss", - slug: "face_blowing_a_kiss", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😗": { - name: "kissing face", - slug: "kissing_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "☺️": { - name: "smiling face", - slug: "smiling_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😚": { - name: "kissing face with closed eyes", - slug: "kissing_face_with_closed_eyes", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😙": { - name: "kissing face with smiling eyes", - slug: "kissing_face_with_smiling_eyes", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🥲": { - name: "smiling face with tear", - slug: "smiling_face_with_tear", - group: "Smileys & Emotion", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "😋": { - name: "face savoring food", - slug: "face_savoring_food", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😛": { - name: "face with tongue", - slug: "face_with_tongue", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😜": { - name: "winking face with tongue", - slug: "winking_face_with_tongue", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🤪": { - name: "zany face", - slug: "zany_face", - group: "Smileys & Emotion", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "😝": { - name: "squinting face with tongue", - slug: "squinting_face_with_tongue", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🤑": { - name: "money-mouth face", - slug: "money_mouth_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🤗": { - name: "hugging face", - slug: "hugging_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🤭": { - name: "face with hand over mouth", - slug: "face_with_hand_over_mouth", - group: "Smileys & Emotion", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🤫": { - name: "shushing face", - slug: "shushing_face", - group: "Smileys & Emotion", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🤔": { - name: "thinking face", - slug: "thinking_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🤐": { - name: "zipper-mouth face", - slug: "zipper_mouth_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🤨": { - name: "face with raised eyebrow", - slug: "face_with_raised_eyebrow", - group: "Smileys & Emotion", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "😐": { - name: "neutral face", - slug: "neutral_face", - group: "Smileys & Emotion", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "😑": { - name: "expressionless face", - slug: "expressionless_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😶": { - name: "face without mouth", - slug: "face_without_mouth", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😏": { - name: "smirking face", - slug: "smirking_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😒": { - name: "unamused face", - slug: "unamused_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🙄": { - name: "face with rolling eyes", - slug: "face_with_rolling_eyes", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😬": { - name: "grimacing face", - slug: "grimacing_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🤥": { - name: "lying face", - slug: "lying_face", - group: "Smileys & Emotion", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "😌": { - name: "relieved face", - slug: "relieved_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😔": { - name: "pensive face", - slug: "pensive_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😪": { - name: "sleepy face", - slug: "sleepy_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🤤": { - name: "drooling face", - slug: "drooling_face", - group: "Smileys & Emotion", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "😴": { - name: "sleeping face", - slug: "sleeping_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😷": { - name: "face with medical mask", - slug: "face_with_medical_mask", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🤒": { - name: "face with thermometer", - slug: "face_with_thermometer", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🤕": { - name: "face with head-bandage", - slug: "face_with_head_bandage", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🤢": { - name: "nauseated face", - slug: "nauseated_face", - group: "Smileys & Emotion", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🤮": { - name: "face vomiting", - slug: "face_vomiting", - group: "Smileys & Emotion", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🤧": { - name: "sneezing face", - slug: "sneezing_face", - group: "Smileys & Emotion", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🥵": { - name: "hot face", - slug: "hot_face", - group: "Smileys & Emotion", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🥶": { - name: "cold face", - slug: "cold_face", - group: "Smileys & Emotion", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🥴": { - name: "woozy face", - slug: "woozy_face", - group: "Smileys & Emotion", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "😵": { - name: "knocked-out face", - slug: "knocked_out_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🤯": { - name: "exploding head", - slug: "exploding_head", - group: "Smileys & Emotion", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🤠": { - name: "cowboy hat face", - slug: "cowboy_hat_face", - group: "Smileys & Emotion", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🥳": { - name: "partying face", - slug: "partying_face", - group: "Smileys & Emotion", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🥸": { - name: "disguised face", - slug: "disguised_face", - group: "Smileys & Emotion", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "😎": { - name: "smiling face with sunglasses", - slug: "smiling_face_with_sunglasses", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🤓": { - name: "nerd face", - slug: "nerd_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🧐": { - name: "face with monocle", - slug: "face_with_monocle", - group: "Smileys & Emotion", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "😕": { - name: "confused face", - slug: "confused_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😟": { - name: "worried face", - slug: "worried_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🙁": { - name: "slightly frowning face", - slug: "slightly_frowning_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "☹️": { - name: "frowning face", - slug: "frowning_face", - group: "Smileys & Emotion", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "😮": { - name: "face with open mouth", - slug: "face_with_open_mouth", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😯": { - name: "hushed face", - slug: "hushed_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😲": { - name: "astonished face", - slug: "astonished_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😳": { - name: "flushed face", - slug: "flushed_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥺": { - name: "pleading face", - slug: "pleading_face", - group: "Smileys & Emotion", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "😦": { - name: "frowning face with open mouth", - slug: "frowning_face_with_open_mouth", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😧": { - name: "anguished face", - slug: "anguished_face", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😨": { - name: "fearful face", - slug: "fearful_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😰": { - name: "anxious face with sweat", - slug: "anxious_face_with_sweat", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😥": { - name: "sad but relieved face", - slug: "sad_but_relieved_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😢": { - name: "crying face", - slug: "crying_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😭": { - name: "loudly crying face", - slug: "loudly_crying_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😱": { - name: "face screaming in fear", - slug: "face_screaming_in_fear", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😖": { - name: "confounded face", - slug: "confounded_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😣": { - name: "persevering face", - slug: "persevering_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😞": { - name: "disappointed face", - slug: "disappointed_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😓": { - name: "downcast face with sweat", - slug: "downcast_face_with_sweat", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😩": { - name: "weary face", - slug: "weary_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😫": { - name: "tired face", - slug: "tired_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥱": { - name: "yawning face", - slug: "yawning_face", - group: "Smileys & Emotion", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "😤": { - name: "face with steam from nose", - slug: "face_with_steam_from_nose", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😡": { - name: "pouting face", - slug: "pouting_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😠": { - name: "angry face", - slug: "angry_face", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🤬": { - name: "face with symbols on mouth", - slug: "face_with_symbols_on_mouth", - group: "Smileys & Emotion", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "😈": { - name: "smiling face with horns", - slug: "smiling_face_with_horns", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "👿": { - name: "angry face with horns", - slug: "angry_face_with_horns", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💀": { - name: "skull", - slug: "skull", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "☠️": { - name: "skull and crossbones", - slug: "skull_and_crossbones", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "💩": { - name: "pile of poo", - slug: "pile_of_poo", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🤡": { - name: "clown face", - slug: "clown_face", - group: "Smileys & Emotion", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "👹": { - name: "ogre", - slug: "ogre", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👺": { - name: "goblin", - slug: "goblin", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👻": { - name: "ghost", - slug: "ghost", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👽": { - name: "alien", - slug: "alien", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👾": { - name: "alien monster", - slug: "alien_monster", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🤖": { - name: "robot", - slug: "robot", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "😺": { - name: "grinning cat", - slug: "grinning_cat", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😸": { - name: "grinning cat with smiling eyes", - slug: "grinning_cat_with_smiling_eyes", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😹": { - name: "cat with tears of joy", - slug: "cat_with_tears_of_joy", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😻": { - name: "smiling cat with heart-eyes", - slug: "smiling_cat_with_heart_eyes", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😼": { - name: "cat with wry smile", - slug: "cat_with_wry_smile", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😽": { - name: "kissing cat", - slug: "kissing_cat", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🙀": { - name: "weary cat", - slug: "weary_cat", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😿": { - name: "crying cat", - slug: "crying_cat", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "😾": { - name: "pouting cat", - slug: "pouting_cat", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🙈": { - name: "see-no-evil monkey", - slug: "see_no_evil_monkey", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🙉": { - name: "hear-no-evil monkey", - slug: "hear_no_evil_monkey", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🙊": { - name: "speak-no-evil monkey", - slug: "speak_no_evil_monkey", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💋": { - name: "kiss mark", - slug: "kiss_mark", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💌": { - name: "love letter", - slug: "love_letter", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💘": { - name: "heart with arrow", - slug: "heart_with_arrow", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💝": { - name: "heart with ribbon", - slug: "heart_with_ribbon", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💖": { - name: "sparkling heart", - slug: "sparkling_heart", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💗": { - name: "growing heart", - slug: "growing_heart", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💓": { - name: "beating heart", - slug: "beating_heart", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💞": { - name: "revolving hearts", - slug: "revolving_hearts", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💕": { - name: "two hearts", - slug: "two_hearts", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💟": { - name: "heart decoration", - slug: "heart_decoration", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "❣️": { - name: "heart exclamation", - slug: "heart_exclamation", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "💔": { - name: "broken heart", - slug: "broken_heart", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "❤️": { - name: "red heart", - slug: "red_heart", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🧡": { - name: "orange heart", - slug: "orange_heart", - group: "Smileys & Emotion", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "💛": { - name: "yellow heart", - slug: "yellow_heart", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💚": { - name: "green heart", - slug: "green_heart", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💙": { - name: "blue heart", - slug: "blue_heart", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💜": { - name: "purple heart", - slug: "purple_heart", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🤎": { - name: "brown heart", - slug: "brown_heart", - group: "Smileys & Emotion", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🖤": { - name: "black heart", - slug: "black_heart", - group: "Smileys & Emotion", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🤍": { - name: "white heart", - slug: "white_heart", - group: "Smileys & Emotion", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "💯": { - name: "hundred points", - slug: "hundred_points", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💢": { - name: "anger symbol", - slug: "anger_symbol", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💥": { - name: "collision", - slug: "collision", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💫": { - name: "dizzy", - slug: "dizzy", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💦": { - name: "sweat droplets", - slug: "sweat_droplets", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💨": { - name: "dashing away", - slug: "dashing_away", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕳️": { - name: "hole", - slug: "hole", - group: "Smileys & Emotion", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "💣": { - name: "bomb", - slug: "bomb", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💬": { - name: "speech balloon", - slug: "speech_balloon", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👁️‍🗨️": { - name: "eye in speech bubble", - slug: "eye_in_speech_bubble", - group: "Smileys & Emotion", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🗨️": { - name: "left speech bubble", - slug: "left_speech_bubble", - group: "Smileys & Emotion", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🗯️": { - name: "right anger bubble", - slug: "right_anger_bubble", - group: "Smileys & Emotion", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "💭": { - name: "thought balloon", - slug: "thought_balloon", - group: "Smileys & Emotion", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "💤": { - name: "zzz", - slug: "zzz", - group: "Smileys & Emotion", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👋": { - name: "waving hand", - slug: "waving_hand", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🤚": { - name: "raised back of hand", - slug: "raised_back_of_hand", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🖐️": { - name: "hand with fingers splayed", - slug: "hand_with_fingers_splayed", - group: "People & Body", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "✋": { - name: "raised hand", - slug: "raised_hand", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🖖": { - name: "vulcan salute", - slug: "vulcan_salute", - group: "People & Body", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👌": { - name: "OK hand", - slug: "ok_hand", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🤌": { - name: "pinched fingers", - slug: "pinched_fingers", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "13.0" -}, - "🤏": { - name: "pinching hand", - slug: "pinching_hand", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "✌️": { - name: "victory hand", - slug: "victory_hand", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🤞": { - name: "crossed fingers", - slug: "crossed_fingers", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🤟": { - name: "love-you gesture", - slug: "love_you_gesture", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🤘": { - name: "sign of the horns", - slug: "sign_of_the_horns", - group: "People & Body", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🤙": { - name: "call me hand", - slug: "call_me_hand", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "👈": { - name: "backhand index pointing left", - slug: "backhand_index_pointing_left", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👉": { - name: "backhand index pointing right", - slug: "backhand_index_pointing_right", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👆": { - name: "backhand index pointing up", - slug: "backhand_index_pointing_up", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🖕": { - name: "middle finger", - slug: "middle_finger", - group: "People & Body", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👇": { - name: "backhand index pointing down", - slug: "backhand_index_pointing_down", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "☝️": { - name: "index pointing up", - slug: "index_pointing_up", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👍": { - name: "thumbs up", - slug: "thumbs_up", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👎": { - name: "thumbs down", - slug: "thumbs_down", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "✊": { - name: "raised fist", - slug: "raised_fist", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👊": { - name: "oncoming fist", - slug: "oncoming_fist", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🤛": { - name: "left-facing fist", - slug: "left_facing_fist", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🤜": { - name: "right-facing fist", - slug: "right_facing_fist", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "👏": { - name: "clapping hands", - slug: "clapping_hands", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🙌": { - name: "raising hands", - slug: "raising_hands", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👐": { - name: "open hands", - slug: "open_hands", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🤲": { - name: "palms up together", - slug: "palms_up_together", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🤝": { - name: "handshake", - slug: "handshake", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🙏": { - name: "folded hands", - slug: "folded_hands", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "✍️": { - name: "writing hand", - slug: "writing_hand", - group: "People & Body", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "💅": { - name: "nail polish", - slug: "nail_polish", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🤳": { - name: "selfie", - slug: "selfie", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "💪": { - name: "flexed biceps", - slug: "flexed_biceps", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🦾": { - name: "mechanical arm", - slug: "mechanical_arm", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🦿": { - name: "mechanical leg", - slug: "mechanical_leg", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🦵": { - name: "leg", - slug: "leg", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "🦶": { - name: "foot", - slug: "foot", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "👂": { - name: "ear", - slug: "ear", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🦻": { - name: "ear with hearing aid", - slug: "ear_with_hearing_aid", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "👃": { - name: "nose", - slug: "nose", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🧠": { - name: "brain", - slug: "brain", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🫀": { - name: "anatomical heart", - slug: "anatomical_heart", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🫁": { - name: "lungs", - slug: "lungs", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🦷": { - name: "tooth", - slug: "tooth", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🦴": { - name: "bone", - slug: "bone", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "👀": { - name: "eyes", - slug: "eyes", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👁️": { - name: "eye", - slug: "eye", - group: "People & Body", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "👅": { - name: "tongue", - slug: "tongue", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👄": { - name: "mouth", - slug: "mouth", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👶": { - name: "baby", - slug: "baby", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🧒": { - name: "child", - slug: "child", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "👦": { - name: "boy", - slug: "boy", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👧": { - name: "girl", - slug: "girl", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🧑": { - name: "person", - slug: "person", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "👱": { - name: "person blond hair", - slug: "person_blond_hair", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👨": { - name: "man", - slug: "man", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🧔": { - name: "person beard", - slug: "person_beard", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "👨‍🦰": { - name: "man red hair", - slug: "man_red_hair", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "👨‍🦱": { - name: "man curly hair", - slug: "man_curly_hair", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "👨‍🦳": { - name: "man white hair", - slug: "man_white_hair", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "👨‍🦲": { - name: "man bald", - slug: "man_bald", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "👩": { - name: "woman", - slug: "woman", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👩‍🦰": { - name: "woman red hair", - slug: "woman_red_hair", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "🧑‍🦰": { - name: "person red hair", - slug: "person_red_hair", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👩‍🦱": { - name: "woman curly hair", - slug: "woman_curly_hair", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "🧑‍🦱": { - name: "person curly hair", - slug: "person_curly_hair", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👩‍🦳": { - name: "woman white hair", - slug: "woman_white_hair", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "🧑‍🦳": { - name: "person white hair", - slug: "person_white_hair", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👩‍🦲": { - name: "woman bald", - slug: "woman_bald", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "🧑‍🦲": { - name: "person bald", - slug: "person_bald", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👱‍♀️": { - name: "woman blond hair", - slug: "woman_blond_hair", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👱‍♂️": { - name: "man blond hair", - slug: "man_blond_hair", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧓": { - name: "older person", - slug: "older_person", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "👴": { - name: "old man", - slug: "old_man", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👵": { - name: "old woman", - slug: "old_woman", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🙍": { - name: "person frowning", - slug: "person_frowning", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🙍‍♂️": { - name: "man frowning", - slug: "man_frowning", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🙍‍♀️": { - name: "woman frowning", - slug: "woman_frowning", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🙎": { - name: "person pouting", - slug: "person_pouting", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🙎‍♂️": { - name: "man pouting", - slug: "man_pouting", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🙎‍♀️": { - name: "woman pouting", - slug: "woman_pouting", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🙅": { - name: "person gesturing NO", - slug: "person_gesturing_no", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🙅‍♂️": { - name: "man gesturing NO", - slug: "man_gesturing_no", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🙅‍♀️": { - name: "woman gesturing NO", - slug: "woman_gesturing_no", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🙆": { - name: "person gesturing OK", - slug: "person_gesturing_ok", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🙆‍♂️": { - name: "man gesturing OK", - slug: "man_gesturing_ok", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🙆‍♀️": { - name: "woman gesturing OK", - slug: "woman_gesturing_ok", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "💁": { - name: "person tipping hand", - slug: "person_tipping_hand", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "💁‍♂️": { - name: "man tipping hand", - slug: "man_tipping_hand", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "💁‍♀️": { - name: "woman tipping hand", - slug: "woman_tipping_hand", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🙋": { - name: "person raising hand", - slug: "person_raising_hand", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🙋‍♂️": { - name: "man raising hand", - slug: "man_raising_hand", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🙋‍♀️": { - name: "woman raising hand", - slug: "woman_raising_hand", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧏": { - name: "deaf person", - slug: "deaf_person", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "🧏‍♂️": { - name: "deaf man", - slug: "deaf_man", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "🧏‍♀️": { - name: "deaf woman", - slug: "deaf_woman", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "🙇": { - name: "person bowing", - slug: "person_bowing", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🙇‍♂️": { - name: "man bowing", - slug: "man_bowing", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🙇‍♀️": { - name: "woman bowing", - slug: "woman_bowing", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤦": { - name: "person facepalming", - slug: "person_facepalming", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🤦‍♂️": { - name: "man facepalming", - slug: "man_facepalming", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤦‍♀️": { - name: "woman facepalming", - slug: "woman_facepalming", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤷": { - name: "person shrugging", - slug: "person_shrugging", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🤷‍♂️": { - name: "man shrugging", - slug: "man_shrugging", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤷‍♀️": { - name: "woman shrugging", - slug: "woman_shrugging", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍⚕️": { - name: "health worker", - slug: "health_worker", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍⚕️": { - name: "man health worker", - slug: "man_health_worker", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍⚕️": { - name: "woman health worker", - slug: "woman_health_worker", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍🎓": { - name: "student", - slug: "student", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🎓": { - name: "man student", - slug: "man_student", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍🎓": { - name: "woman student", - slug: "woman_student", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍🏫": { - name: "teacher", - slug: "teacher", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🏫": { - name: "man teacher", - slug: "man_teacher", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍🏫": { - name: "woman teacher", - slug: "woman_teacher", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍⚖️": { - name: "judge", - slug: "judge", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍⚖️": { - name: "man judge", - slug: "man_judge", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍⚖️": { - name: "woman judge", - slug: "woman_judge", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍🌾": { - name: "farmer", - slug: "farmer", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🌾": { - name: "man farmer", - slug: "man_farmer", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍🌾": { - name: "woman farmer", - slug: "woman_farmer", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍🍳": { - name: "cook", - slug: "cook", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🍳": { - name: "man cook", - slug: "man_cook", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍🍳": { - name: "woman cook", - slug: "woman_cook", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍🔧": { - name: "mechanic", - slug: "mechanic", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🔧": { - name: "man mechanic", - slug: "man_mechanic", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍🔧": { - name: "woman mechanic", - slug: "woman_mechanic", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍🏭": { - name: "factory worker", - slug: "factory_worker", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🏭": { - name: "man factory worker", - slug: "man_factory_worker", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍🏭": { - name: "woman factory worker", - slug: "woman_factory_worker", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍💼": { - name: "office worker", - slug: "office_worker", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍💼": { - name: "man office worker", - slug: "man_office_worker", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍💼": { - name: "woman office worker", - slug: "woman_office_worker", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍🔬": { - name: "scientist", - slug: "scientist", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🔬": { - name: "man scientist", - slug: "man_scientist", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍🔬": { - name: "woman scientist", - slug: "woman_scientist", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍💻": { - name: "technologist", - slug: "technologist", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍💻": { - name: "man technologist", - slug: "man_technologist", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍💻": { - name: "woman technologist", - slug: "woman_technologist", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍🎤": { - name: "singer", - slug: "singer", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🎤": { - name: "man singer", - slug: "man_singer", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍🎤": { - name: "woman singer", - slug: "woman_singer", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍🎨": { - name: "artist", - slug: "artist", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🎨": { - name: "man artist", - slug: "man_artist", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍🎨": { - name: "woman artist", - slug: "woman_artist", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍✈️": { - name: "pilot", - slug: "pilot", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍✈️": { - name: "man pilot", - slug: "man_pilot", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍✈️": { - name: "woman pilot", - slug: "woman_pilot", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍🚀": { - name: "astronaut", - slug: "astronaut", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🚀": { - name: "man astronaut", - slug: "man_astronaut", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍🚀": { - name: "woman astronaut", - slug: "woman_astronaut", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍🚒": { - name: "firefighter", - slug: "firefighter", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🚒": { - name: "man firefighter", - slug: "man_firefighter", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👩‍🚒": { - name: "woman firefighter", - slug: "woman_firefighter", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👮": { - name: "police officer", - slug: "police_officer", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👮‍♂️": { - name: "man police officer", - slug: "man_police_officer", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👮‍♀️": { - name: "woman police officer", - slug: "woman_police_officer", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🕵️": { - name: "detective", - slug: "detective", - group: "People & Body", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: true, - skin_tone_support_unicode_version: "2.0" -}, - "🕵️‍♂️": { - name: "man detective", - slug: "man_detective", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🕵️‍♀️": { - name: "woman detective", - slug: "woman_detective", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "💂": { - name: "guard", - slug: "guard", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "💂‍♂️": { - name: "man guard", - slug: "man_guard", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "💂‍♀️": { - name: "woman guard", - slug: "woman_guard", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🥷": { - name: "ninja", - slug: "ninja", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "13.0" -}, - "👷": { - name: "construction worker", - slug: "construction_worker", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👷‍♂️": { - name: "man construction worker", - slug: "man_construction_worker", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👷‍♀️": { - name: "woman construction worker", - slug: "woman_construction_worker", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤴": { - name: "prince", - slug: "prince", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "👸": { - name: "princess", - slug: "princess", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👳": { - name: "person wearing turban", - slug: "person_wearing_turban", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👳‍♂️": { - name: "man wearing turban", - slug: "man_wearing_turban", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👳‍♀️": { - name: "woman wearing turban", - slug: "woman_wearing_turban", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👲": { - name: "person with skullcap", - slug: "person_with_skullcap", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🧕": { - name: "woman with headscarf", - slug: "woman_with_headscarf", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🤵": { - name: "person in tuxedo", - slug: "person_in_tuxedo", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🤵‍♂️": { - name: "man in tuxedo", - slug: "man_in_tuxedo", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "13.0" -}, - "🤵‍♀️": { - name: "woman in tuxedo", - slug: "woman_in_tuxedo", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "13.0" -}, - "👰": { - name: "person with veil", - slug: "person_with_veil", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "👰‍♂️": { - name: "man with veil", - slug: "man_with_veil", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "13.0" -}, - "👰‍♀️": { - name: "woman with veil", - slug: "woman_with_veil", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "13.0" -}, - "🤰": { - name: "pregnant woman", - slug: "pregnant_woman", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🤱": { - name: "breast-feeding", - slug: "breast_feeding", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "👩‍🍼": { - name: "woman feeding baby", - slug: "woman_feeding_baby", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "13.0" -}, - "👨‍🍼": { - name: "man feeding baby", - slug: "man_feeding_baby", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "13.0" -}, - "🧑‍🍼": { - name: "person feeding baby", - slug: "person_feeding_baby", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "13.0" -}, - "👼": { - name: "baby angel", - slug: "baby_angel", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🎅": { - name: "Santa Claus", - slug: "santa_claus", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🤶": { - name: "Mrs. Claus", - slug: "mrs_claus", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🧑‍🎄": { - name: "mx claus", - slug: "mx_claus", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "13.0" -}, - "🦸": { - name: "superhero", - slug: "superhero", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "🦸‍♂️": { - name: "man superhero", - slug: "man_superhero", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "🦸‍♀️": { - name: "woman superhero", - slug: "woman_superhero", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "🦹": { - name: "supervillain", - slug: "supervillain", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "🦹‍♂️": { - name: "man supervillain", - slug: "man_supervillain", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "🦹‍♀️": { - name: "woman supervillain", - slug: "woman_supervillain", - group: "People & Body", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "11.0" -}, - "🧙": { - name: "mage", - slug: "mage", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧙‍♂️": { - name: "man mage", - slug: "man_mage", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧙‍♀️": { - name: "woman mage", - slug: "woman_mage", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧚": { - name: "fairy", - slug: "fairy", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧚‍♂️": { - name: "man fairy", - slug: "man_fairy", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧚‍♀️": { - name: "woman fairy", - slug: "woman_fairy", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧛": { - name: "vampire", - slug: "vampire", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧛‍♂️": { - name: "man vampire", - slug: "man_vampire", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧛‍♀️": { - name: "woman vampire", - slug: "woman_vampire", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧜": { - name: "merperson", - slug: "merperson", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧜‍♂️": { - name: "merman", - slug: "merman", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧜‍♀️": { - name: "mermaid", - slug: "mermaid", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧝": { - name: "elf", - slug: "elf", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧝‍♂️": { - name: "man elf", - slug: "man_elf", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧝‍♀️": { - name: "woman elf", - slug: "woman_elf", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧞": { - name: "genie", - slug: "genie", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🧞‍♂️": { - name: "man genie", - slug: "man_genie", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🧞‍♀️": { - name: "woman genie", - slug: "woman_genie", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🧟": { - name: "zombie", - slug: "zombie", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🧟‍♂️": { - name: "man zombie", - slug: "man_zombie", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🧟‍♀️": { - name: "woman zombie", - slug: "woman_zombie", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "💆": { - name: "person getting massage", - slug: "person_getting_massage", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "💆‍♂️": { - name: "man getting massage", - slug: "man_getting_massage", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "💆‍♀️": { - name: "woman getting massage", - slug: "woman_getting_massage", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "💇": { - name: "person getting haircut", - slug: "person_getting_haircut", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "💇‍♂️": { - name: "man getting haircut", - slug: "man_getting_haircut", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "💇‍♀️": { - name: "woman getting haircut", - slug: "woman_getting_haircut", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🚶": { - name: "person walking", - slug: "person_walking", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🚶‍♂️": { - name: "man walking", - slug: "man_walking", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🚶‍♀️": { - name: "woman walking", - slug: "woman_walking", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧍": { - name: "person standing", - slug: "person_standing", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "🧍‍♂️": { - name: "man standing", - slug: "man_standing", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "🧍‍♀️": { - name: "woman standing", - slug: "woman_standing", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "🧎": { - name: "person kneeling", - slug: "person_kneeling", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "🧎‍♂️": { - name: "man kneeling", - slug: "man_kneeling", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "🧎‍♀️": { - name: "woman kneeling", - slug: "woman_kneeling", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "🧑‍🦯": { - name: "person with white cane", - slug: "person_with_white_cane", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🦯": { - name: "man with white cane", - slug: "man_with_white_cane", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "👩‍🦯": { - name: "woman with white cane", - slug: "woman_with_white_cane", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "🧑‍🦼": { - name: "person in motorized wheelchair", - slug: "person_in_motorized_wheelchair", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🦼": { - name: "man in motorized wheelchair", - slug: "man_in_motorized_wheelchair", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "👩‍🦼": { - name: "woman in motorized wheelchair", - slug: "woman_in_motorized_wheelchair", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "🧑‍🦽": { - name: "person in manual wheelchair", - slug: "person_in_manual_wheelchair", - group: "People & Body", - emoji_version: "12.1", - unicode_version: "12.1", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.1" -}, - "👨‍🦽": { - name: "man in manual wheelchair", - slug: "man_in_manual_wheelchair", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "👩‍🦽": { - name: "woman in manual wheelchair", - slug: "woman_in_manual_wheelchair", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "🏃": { - name: "person running", - slug: "person_running", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🏃‍♂️": { - name: "man running", - slug: "man_running", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🏃‍♀️": { - name: "woman running", - slug: "woman_running", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "💃": { - name: "woman dancing", - slug: "woman_dancing", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🕺": { - name: "man dancing", - slug: "man_dancing", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🕴️": { - name: "person in suit levitating", - slug: "person_in_suit_levitating", - group: "People & Body", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "👯": { - name: "people with bunny ears", - slug: "people_with_bunny_ears", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👯‍♂️": { - name: "men with bunny ears", - slug: "men_with_bunny_ears", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "👯‍♀️": { - name: "women with bunny ears", - slug: "women_with_bunny_ears", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "🧖": { - name: "person in steamy room", - slug: "person_in_steamy_room", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧖‍♂️": { - name: "man in steamy room", - slug: "man_in_steamy_room", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧖‍♀️": { - name: "woman in steamy room", - slug: "woman_in_steamy_room", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧗": { - name: "person climbing", - slug: "person_climbing", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧗‍♂️": { - name: "man climbing", - slug: "man_climbing", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧗‍♀️": { - name: "woman climbing", - slug: "woman_climbing", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🤺": { - name: "person fencing", - slug: "person_fencing", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🏇": { - name: "horse racing", - slug: "horse_racing", - group: "People & Body", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "⛷️": { - name: "skier", - slug: "skier", - group: "People & Body", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏂": { - name: "snowboarder", - slug: "snowboarder", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🏌️": { - name: "person golfing", - slug: "person_golfing", - group: "People & Body", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🏌️‍♂️": { - name: "man golfing", - slug: "man_golfing", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🏌️‍♀️": { - name: "woman golfing", - slug: "woman_golfing", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🏄": { - name: "person surfing", - slug: "person_surfing", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🏄‍♂️": { - name: "man surfing", - slug: "man_surfing", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🏄‍♀️": { - name: "woman surfing", - slug: "woman_surfing", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🚣": { - name: "person rowing boat", - slug: "person_rowing_boat", - group: "People & Body", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🚣‍♂️": { - name: "man rowing boat", - slug: "man_rowing_boat", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🚣‍♀️": { - name: "woman rowing boat", - slug: "woman_rowing_boat", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🏊": { - name: "person swimming", - slug: "person_swimming", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🏊‍♂️": { - name: "man swimming", - slug: "man_swimming", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🏊‍♀️": { - name: "woman swimming", - slug: "woman_swimming", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "⛹️": { - name: "person bouncing ball", - slug: "person_bouncing_ball", - group: "People & Body", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: true, - skin_tone_support_unicode_version: "2.0" -}, - "⛹️‍♂️": { - name: "man bouncing ball", - slug: "man_bouncing_ball", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "⛹️‍♀️": { - name: "woman bouncing ball", - slug: "woman_bouncing_ball", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🏋️": { - name: "person lifting weights", - slug: "person_lifting_weights", - group: "People & Body", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: true, - skin_tone_support_unicode_version: "2.0" -}, - "🏋️‍♂️": { - name: "man lifting weights", - slug: "man_lifting_weights", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🏋️‍♀️": { - name: "woman lifting weights", - slug: "woman_lifting_weights", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🚴": { - name: "person biking", - slug: "person_biking", - group: "People & Body", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🚴‍♂️": { - name: "man biking", - slug: "man_biking", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🚴‍♀️": { - name: "woman biking", - slug: "woman_biking", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🚵": { - name: "person mountain biking", - slug: "person_mountain_biking", - group: "People & Body", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🚵‍♂️": { - name: "man mountain biking", - slug: "man_mountain_biking", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🚵‍♀️": { - name: "woman mountain biking", - slug: "woman_mountain_biking", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤸": { - name: "person cartwheeling", - slug: "person_cartwheeling", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🤸‍♂️": { - name: "man cartwheeling", - slug: "man_cartwheeling", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤸‍♀️": { - name: "woman cartwheeling", - slug: "woman_cartwheeling", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤼": { - name: "people wrestling", - slug: "people_wrestling", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🤼‍♂️": { - name: "men wrestling", - slug: "men_wrestling", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "🤼‍♀️": { - name: "women wrestling", - slug: "women_wrestling", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "🤽": { - name: "person playing water polo", - slug: "person_playing_water_polo", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🤽‍♂️": { - name: "man playing water polo", - slug: "man_playing_water_polo", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤽‍♀️": { - name: "woman playing water polo", - slug: "woman_playing_water_polo", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤾": { - name: "person playing handball", - slug: "person_playing_handball", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🤾‍♂️": { - name: "man playing handball", - slug: "man_playing_handball", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤾‍♀️": { - name: "woman playing handball", - slug: "woman_playing_handball", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤹": { - name: "person juggling", - slug: "person_juggling", - group: "People & Body", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "3.0" -}, - "🤹‍♂️": { - name: "man juggling", - slug: "man_juggling", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🤹‍♀️": { - name: "woman juggling", - slug: "woman_juggling", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧘": { - name: "person in lotus position", - slug: "person_in_lotus_position", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧘‍♂️": { - name: "man in lotus position", - slug: "man_in_lotus_position", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🧘‍♀️": { - name: "woman in lotus position", - slug: "woman_in_lotus_position", - group: "People & Body", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "5.0" -}, - "🛀": { - name: "person taking bath", - slug: "person_taking_bath", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "1.0" -}, - "🛌": { - name: "person in bed", - slug: "person_in_bed", - group: "People & Body", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "4.0" -}, - "🧑‍🤝‍🧑": { - name: "people holding hands", - slug: "people_holding_hands", - group: "People & Body", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "👭": { - name: "women holding hands", - slug: "women_holding_hands", - group: "People & Body", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "👫": { - name: "woman and man holding hands", - slug: "woman_and_man_holding_hands", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "👬": { - name: "men holding hands", - slug: "men_holding_hands", - group: "People & Body", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: true, - skin_tone_support_unicode_version: "12.0" -}, - "💏": { - name: "kiss", - slug: "kiss", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👩‍❤️‍💋‍👨": { - name: "kiss woman, man", - slug: "kiss_woman_man", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👨‍❤️‍💋‍👨": { - name: "kiss man, man", - slug: "kiss_man_man", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👩‍❤️‍💋‍👩": { - name: "kiss woman, woman", - slug: "kiss_woman_woman", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "💑": { - name: "couple with heart", - slug: "couple_with_heart", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👩‍❤️‍👨": { - name: "couple with heart woman, man", - slug: "couple_with_heart_woman_man", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👨‍❤️‍👨": { - name: "couple with heart man, man", - slug: "couple_with_heart_man_man", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👩‍❤️‍👩": { - name: "couple with heart woman, woman", - slug: "couple_with_heart_woman_woman", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👪": { - name: "family", - slug: "family", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👨‍👩‍👦": { - name: "family man, woman, boy", - slug: "family_man_woman_boy", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👨‍👩‍👧": { - name: "family man, woman, girl", - slug: "family_man_woman_girl", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👨‍👩‍👧‍👦": { - name: "family man, woman, girl, boy", - slug: "family_man_woman_girl_boy", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👨‍👩‍👦‍👦": { - name: "family man, woman, boy, boy", - slug: "family_man_woman_boy_boy", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👨‍👩‍👧‍👧": { - name: "family man, woman, girl, girl", - slug: "family_man_woman_girl_girl", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👨‍👨‍👦": { - name: "family man, man, boy", - slug: "family_man_man_boy", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👨‍👨‍👧": { - name: "family man, man, girl", - slug: "family_man_man_girl", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👨‍👨‍👧‍👦": { - name: "family man, man, girl, boy", - slug: "family_man_man_girl_boy", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👨‍👨‍👦‍👦": { - name: "family man, man, boy, boy", - slug: "family_man_man_boy_boy", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👨‍👨‍👧‍👧": { - name: "family man, man, girl, girl", - slug: "family_man_man_girl_girl", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👩‍👩‍👦": { - name: "family woman, woman, boy", - slug: "family_woman_woman_boy", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👩‍👩‍👧": { - name: "family woman, woman, girl", - slug: "family_woman_woman_girl", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👩‍👩‍👧‍👦": { - name: "family woman, woman, girl, boy", - slug: "family_woman_woman_girl_boy", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👩‍👩‍👦‍👦": { - name: "family woman, woman, boy, boy", - slug: "family_woman_woman_boy_boy", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👩‍👩‍👧‍👧": { - name: "family woman, woman, girl, girl", - slug: "family_woman_woman_girl_girl", - group: "People & Body", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "👨‍👦": { - name: "family man, boy", - slug: "family_man_boy", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "👨‍👦‍👦": { - name: "family man, boy, boy", - slug: "family_man_boy_boy", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "👨‍👧": { - name: "family man, girl", - slug: "family_man_girl", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "👨‍👧‍👦": { - name: "family man, girl, boy", - slug: "family_man_girl_boy", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "👨‍👧‍👧": { - name: "family man, girl, girl", - slug: "family_man_girl_girl", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "👩‍👦": { - name: "family woman, boy", - slug: "family_woman_boy", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "👩‍👦‍👦": { - name: "family woman, boy, boy", - slug: "family_woman_boy_boy", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "👩‍👧": { - name: "family woman, girl", - slug: "family_woman_girl", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "👩‍👧‍👦": { - name: "family woman, girl, boy", - slug: "family_woman_girl_boy", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "👩‍👧‍👧": { - name: "family woman, girl, girl", - slug: "family_woman_girl_girl", - group: "People & Body", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "🗣️": { - name: "speaking head", - slug: "speaking_head", - group: "People & Body", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "👤": { - name: "bust in silhouette", - slug: "bust_in_silhouette", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👥": { - name: "busts in silhouette", - slug: "busts_in_silhouette", - group: "People & Body", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🫂": { - name: "people hugging", - slug: "people_hugging", - group: "People & Body", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "👣": { - name: "footprints", - slug: "footprints", - group: "People & Body", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐵": { - name: "monkey face", - slug: "monkey_face", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐒": { - name: "monkey", - slug: "monkey", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🦍": { - name: "gorilla", - slug: "gorilla", - group: "Animals & Nature", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🦧": { - name: "orangutan", - slug: "orangutan", - group: "Animals & Nature", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🐶": { - name: "dog face", - slug: "dog_face", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐕": { - name: "dog", - slug: "dog", - group: "Animals & Nature", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🦮": { - name: "guide dog", - slug: "guide_dog", - group: "Animals & Nature", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🐕‍🦺": { - name: "service dog", - slug: "service_dog", - group: "Animals & Nature", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🐩": { - name: "poodle", - slug: "poodle", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐺": { - name: "wolf", - slug: "wolf", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🦊": { - name: "fox", - slug: "fox", - group: "Animals & Nature", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🦝": { - name: "raccoon", - slug: "raccoon", - group: "Animals & Nature", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🐱": { - name: "cat face", - slug: "cat_face", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐈": { - name: "cat", - slug: "cat", - group: "Animals & Nature", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🐈‍⬛": { - name: "black cat", - slug: "black_cat", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🦁": { - name: "lion", - slug: "lion", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐯": { - name: "tiger face", - slug: "tiger_face", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐅": { - name: "tiger", - slug: "tiger", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐆": { - name: "leopard", - slug: "leopard", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐴": { - name: "horse face", - slug: "horse_face", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐎": { - name: "horse", - slug: "horse", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🦄": { - name: "unicorn", - slug: "unicorn", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🦓": { - name: "zebra", - slug: "zebra", - group: "Animals & Nature", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🦌": { - name: "deer", - slug: "deer", - group: "Animals & Nature", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🦬": { - name: "bison", - slug: "bison", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🐮": { - name: "cow face", - slug: "cow_face", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐂": { - name: "ox", - slug: "ox", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐃": { - name: "water buffalo", - slug: "water_buffalo", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐄": { - name: "cow", - slug: "cow", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐷": { - name: "pig face", - slug: "pig_face", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐖": { - name: "pig", - slug: "pig", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐗": { - name: "boar", - slug: "boar", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐽": { - name: "pig nose", - slug: "pig_nose", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐏": { - name: "ram", - slug: "ram", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐑": { - name: "ewe", - slug: "ewe", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐐": { - name: "goat", - slug: "goat", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐪": { - name: "camel", - slug: "camel", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐫": { - name: "two-hump camel", - slug: "two_hump_camel", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🦙": { - name: "llama", - slug: "llama", - group: "Animals & Nature", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🦒": { - name: "giraffe", - slug: "giraffe", - group: "Animals & Nature", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🐘": { - name: "elephant", - slug: "elephant", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🦣": { - name: "mammoth", - slug: "mammoth", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🦏": { - name: "rhinoceros", - slug: "rhinoceros", - group: "Animals & Nature", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🦛": { - name: "hippopotamus", - slug: "hippopotamus", - group: "Animals & Nature", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🐭": { - name: "mouse face", - slug: "mouse_face", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐁": { - name: "mouse", - slug: "mouse", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐀": { - name: "rat", - slug: "rat", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐹": { - name: "hamster", - slug: "hamster", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐰": { - name: "rabbit face", - slug: "rabbit_face", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐇": { - name: "rabbit", - slug: "rabbit", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐿️": { - name: "chipmunk", - slug: "chipmunk", - group: "Animals & Nature", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🦫": { - name: "beaver", - slug: "beaver", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🦔": { - name: "hedgehog", - slug: "hedgehog", - group: "Animals & Nature", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🦇": { - name: "bat", - slug: "bat", - group: "Animals & Nature", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🐻": { - name: "bear", - slug: "bear", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐻‍❄️": { - name: "polar bear", - slug: "polar_bear", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🐨": { - name: "koala", - slug: "koala", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐼": { - name: "panda", - slug: "panda", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🦥": { - name: "sloth", - slug: "sloth", - group: "Animals & Nature", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🦦": { - name: "otter", - slug: "otter", - group: "Animals & Nature", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🦨": { - name: "skunk", - slug: "skunk", - group: "Animals & Nature", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🦘": { - name: "kangaroo", - slug: "kangaroo", - group: "Animals & Nature", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🦡": { - name: "badger", - slug: "badger", - group: "Animals & Nature", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🐾": { - name: "paw prints", - slug: "paw_prints", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🦃": { - name: "turkey", - slug: "turkey", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐔": { - name: "chicken", - slug: "chicken", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐓": { - name: "rooster", - slug: "rooster", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐣": { - name: "hatching chick", - slug: "hatching_chick", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐤": { - name: "baby chick", - slug: "baby_chick", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐥": { - name: "front-facing baby chick", - slug: "front_facing_baby_chick", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐦": { - name: "bird", - slug: "bird", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐧": { - name: "penguin", - slug: "penguin", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕊️": { - name: "dove", - slug: "dove", - group: "Animals & Nature", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🦅": { - name: "eagle", - slug: "eagle", - group: "Animals & Nature", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🦆": { - name: "duck", - slug: "duck", - group: "Animals & Nature", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🦢": { - name: "swan", - slug: "swan", - group: "Animals & Nature", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🦉": { - name: "owl", - slug: "owl", - group: "Animals & Nature", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🦤": { - name: "dodo", - slug: "dodo", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🪶": { - name: "feather", - slug: "feather", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🦩": { - name: "flamingo", - slug: "flamingo", - group: "Animals & Nature", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🦚": { - name: "peacock", - slug: "peacock", - group: "Animals & Nature", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🦜": { - name: "parrot", - slug: "parrot", - group: "Animals & Nature", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🐸": { - name: "frog", - slug: "frog", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐊": { - name: "crocodile", - slug: "crocodile", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐢": { - name: "turtle", - slug: "turtle", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🦎": { - name: "lizard", - slug: "lizard", - group: "Animals & Nature", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🐍": { - name: "snake", - slug: "snake", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐲": { - name: "dragon face", - slug: "dragon_face", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐉": { - name: "dragon", - slug: "dragon", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🦕": { - name: "sauropod", - slug: "sauropod", - group: "Animals & Nature", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🦖": { - name: "T-Rex", - slug: "t_rex", - group: "Animals & Nature", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🐳": { - name: "spouting whale", - slug: "spouting_whale", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐋": { - name: "whale", - slug: "whale", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🐬": { - name: "dolphin", - slug: "dolphin", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🦭": { - name: "seal", - slug: "seal", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🐟": { - name: "fish", - slug: "fish", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐠": { - name: "tropical fish", - slug: "tropical_fish", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐡": { - name: "blowfish", - slug: "blowfish", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🦈": { - name: "shark", - slug: "shark", - group: "Animals & Nature", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🐙": { - name: "octopus", - slug: "octopus", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐚": { - name: "spiral shell", - slug: "spiral_shell", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐌": { - name: "snail", - slug: "snail", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🦋": { - name: "butterfly", - slug: "butterfly", - group: "Animals & Nature", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🐛": { - name: "bug", - slug: "bug", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐜": { - name: "ant", - slug: "ant", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🐝": { - name: "honeybee", - slug: "honeybee", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪲": { - name: "beetle", - slug: "beetle", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🐞": { - name: "lady beetle", - slug: "lady_beetle", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🦗": { - name: "cricket", - slug: "cricket", - group: "Animals & Nature", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🪳": { - name: "cockroach", - slug: "cockroach", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🕷️": { - name: "spider", - slug: "spider", - group: "Animals & Nature", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕸️": { - name: "spider web", - slug: "spider_web", - group: "Animals & Nature", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🦂": { - name: "scorpion", - slug: "scorpion", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🦟": { - name: "mosquito", - slug: "mosquito", - group: "Animals & Nature", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🪰": { - name: "fly", - slug: "fly", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🪱": { - name: "worm", - slug: "worm", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🦠": { - name: "microbe", - slug: "microbe", - group: "Animals & Nature", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "💐": { - name: "bouquet", - slug: "bouquet", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌸": { - name: "cherry blossom", - slug: "cherry_blossom", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💮": { - name: "white flower", - slug: "white_flower", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏵️": { - name: "rosette", - slug: "rosette", - group: "Animals & Nature", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌹": { - name: "rose", - slug: "rose", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥀": { - name: "wilted flower", - slug: "wilted_flower", - group: "Animals & Nature", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🌺": { - name: "hibiscus", - slug: "hibiscus", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌻": { - name: "sunflower", - slug: "sunflower", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌼": { - name: "blossom", - slug: "blossom", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌷": { - name: "tulip", - slug: "tulip", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌱": { - name: "seedling", - slug: "seedling", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪴": { - name: "potted plant", - slug: "potted_plant", - group: "Animals & Nature", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🌲": { - name: "evergreen tree", - slug: "evergreen_tree", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🌳": { - name: "deciduous tree", - slug: "deciduous_tree", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🌴": { - name: "palm tree", - slug: "palm_tree", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌵": { - name: "cactus", - slug: "cactus", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌾": { - name: "sheaf of rice", - slug: "sheaf_of_rice", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌿": { - name: "herb", - slug: "herb", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "☘️": { - name: "shamrock", - slug: "shamrock", - group: "Animals & Nature", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🍀": { - name: "four leaf clover", - slug: "four_leaf_clover", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍁": { - name: "maple leaf", - slug: "maple_leaf", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍂": { - name: "fallen leaf", - slug: "fallen_leaf", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍃": { - name: "leaf fluttering in wind", - slug: "leaf_fluttering_in_wind", - group: "Animals & Nature", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍇": { - name: "grapes", - slug: "grapes", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍈": { - name: "melon", - slug: "melon", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍉": { - name: "watermelon", - slug: "watermelon", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍊": { - name: "tangerine", - slug: "tangerine", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍋": { - name: "lemon", - slug: "lemon", - group: "Food & Drink", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🍌": { - name: "banana", - slug: "banana", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍍": { - name: "pineapple", - slug: "pineapple", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥭": { - name: "mango", - slug: "mango", - group: "Food & Drink", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🍎": { - name: "red apple", - slug: "red_apple", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍏": { - name: "green apple", - slug: "green_apple", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍐": { - name: "pear", - slug: "pear", - group: "Food & Drink", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🍑": { - name: "peach", - slug: "peach", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍒": { - name: "cherries", - slug: "cherries", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍓": { - name: "strawberry", - slug: "strawberry", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🫐": { - name: "blueberries", - slug: "blueberries", - group: "Food & Drink", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🥝": { - name: "kiwi fruit", - slug: "kiwi_fruit", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🍅": { - name: "tomato", - slug: "tomato", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🫒": { - name: "olive", - slug: "olive", - group: "Food & Drink", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🥥": { - name: "coconut", - slug: "coconut", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🥑": { - name: "avocado", - slug: "avocado", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🍆": { - name: "eggplant", - slug: "eggplant", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥔": { - name: "potato", - slug: "potato", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🥕": { - name: "carrot", - slug: "carrot", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🌽": { - name: "ear of corn", - slug: "ear_of_corn", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌶️": { - name: "hot pepper", - slug: "hot_pepper", - group: "Food & Drink", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🫑": { - name: "bell pepper", - slug: "bell_pepper", - group: "Food & Drink", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🥒": { - name: "cucumber", - slug: "cucumber", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🥬": { - name: "leafy green", - slug: "leafy_green", - group: "Food & Drink", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🥦": { - name: "broccoli", - slug: "broccoli", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🧄": { - name: "garlic", - slug: "garlic", - group: "Food & Drink", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🧅": { - name: "onion", - slug: "onion", - group: "Food & Drink", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🍄": { - name: "mushroom", - slug: "mushroom", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥜": { - name: "peanuts", - slug: "peanuts", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🌰": { - name: "chestnut", - slug: "chestnut", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍞": { - name: "bread", - slug: "bread", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥐": { - name: "croissant", - slug: "croissant", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🥖": { - name: "baguette bread", - slug: "baguette_bread", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🫓": { - name: "flatbread", - slug: "flatbread", - group: "Food & Drink", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🥨": { - name: "pretzel", - slug: "pretzel", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🥯": { - name: "bagel", - slug: "bagel", - group: "Food & Drink", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🥞": { - name: "pancakes", - slug: "pancakes", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🧇": { - name: "waffle", - slug: "waffle", - group: "Food & Drink", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🧀": { - name: "cheese wedge", - slug: "cheese_wedge", - group: "Food & Drink", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🍖": { - name: "meat on bone", - slug: "meat_on_bone", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍗": { - name: "poultry leg", - slug: "poultry_leg", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥩": { - name: "cut of meat", - slug: "cut_of_meat", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🥓": { - name: "bacon", - slug: "bacon", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🍔": { - name: "hamburger", - slug: "hamburger", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍟": { - name: "french fries", - slug: "french_fries", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍕": { - name: "pizza", - slug: "pizza", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌭": { - name: "hot dog", - slug: "hot_dog", - group: "Food & Drink", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🥪": { - name: "sandwich", - slug: "sandwich", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🌮": { - name: "taco", - slug: "taco", - group: "Food & Drink", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🌯": { - name: "burrito", - slug: "burrito", - group: "Food & Drink", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🫔": { - name: "tamale", - slug: "tamale", - group: "Food & Drink", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🥙": { - name: "stuffed flatbread", - slug: "stuffed_flatbread", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🧆": { - name: "falafel", - slug: "falafel", - group: "Food & Drink", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🥚": { - name: "egg", - slug: "egg", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🍳": { - name: "cooking", - slug: "cooking", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥘": { - name: "shallow pan of food", - slug: "shallow_pan_of_food", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🍲": { - name: "pot of food", - slug: "pot_of_food", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🫕": { - name: "fondue", - slug: "fondue", - group: "Food & Drink", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🥣": { - name: "bowl with spoon", - slug: "bowl_with_spoon", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🥗": { - name: "green salad", - slug: "green_salad", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🍿": { - name: "popcorn", - slug: "popcorn", - group: "Food & Drink", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🧈": { - name: "butter", - slug: "butter", - group: "Food & Drink", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🧂": { - name: "salt", - slug: "salt", - group: "Food & Drink", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🥫": { - name: "canned food", - slug: "canned_food", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🍱": { - name: "bento box", - slug: "bento_box", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍘": { - name: "rice cracker", - slug: "rice_cracker", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍙": { - name: "rice ball", - slug: "rice_ball", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍚": { - name: "cooked rice", - slug: "cooked_rice", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍛": { - name: "curry rice", - slug: "curry_rice", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍜": { - name: "steaming bowl", - slug: "steaming_bowl", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍝": { - name: "spaghetti", - slug: "spaghetti", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍠": { - name: "roasted sweet potato", - slug: "roasted_sweet_potato", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍢": { - name: "oden", - slug: "oden", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍣": { - name: "sushi", - slug: "sushi", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍤": { - name: "fried shrimp", - slug: "fried_shrimp", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍥": { - name: "fish cake with swirl", - slug: "fish_cake_with_swirl", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥮": { - name: "moon cake", - slug: "moon_cake", - group: "Food & Drink", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🍡": { - name: "dango", - slug: "dango", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥟": { - name: "dumpling", - slug: "dumpling", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🥠": { - name: "fortune cookie", - slug: "fortune_cookie", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🥡": { - name: "takeout box", - slug: "takeout_box", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🦀": { - name: "crab", - slug: "crab", - group: "Food & Drink", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🦞": { - name: "lobster", - slug: "lobster", - group: "Food & Drink", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🦐": { - name: "shrimp", - slug: "shrimp", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🦑": { - name: "squid", - slug: "squid", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🦪": { - name: "oyster", - slug: "oyster", - group: "Food & Drink", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🍦": { - name: "soft ice cream", - slug: "soft_ice_cream", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍧": { - name: "shaved ice", - slug: "shaved_ice", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍨": { - name: "ice cream", - slug: "ice_cream", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍩": { - name: "doughnut", - slug: "doughnut", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍪": { - name: "cookie", - slug: "cookie", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎂": { - name: "birthday cake", - slug: "birthday_cake", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍰": { - name: "shortcake", - slug: "shortcake", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🧁": { - name: "cupcake", - slug: "cupcake", - group: "Food & Drink", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🥧": { - name: "pie", - slug: "pie", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🍫": { - name: "chocolate bar", - slug: "chocolate_bar", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍬": { - name: "candy", - slug: "candy", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍭": { - name: "lollipop", - slug: "lollipop", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍮": { - name: "custard", - slug: "custard", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍯": { - name: "honey pot", - slug: "honey_pot", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍼": { - name: "baby bottle", - slug: "baby_bottle", - group: "Food & Drink", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🥛": { - name: "glass of milk", - slug: "glass_of_milk", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "☕": { - name: "hot beverage", - slug: "hot_beverage", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🫖": { - name: "teapot", - slug: "teapot", - group: "Food & Drink", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🍵": { - name: "teacup without handle", - slug: "teacup_without_handle", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍶": { - name: "sake", - slug: "sake", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍾": { - name: "bottle with popping cork", - slug: "bottle_with_popping_cork", - group: "Food & Drink", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🍷": { - name: "wine glass", - slug: "wine_glass", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍸": { - name: "cocktail glass", - slug: "cocktail_glass", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍹": { - name: "tropical drink", - slug: "tropical_drink", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍺": { - name: "beer mug", - slug: "beer_mug", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🍻": { - name: "clinking beer mugs", - slug: "clinking_beer_mugs", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥂": { - name: "clinking glasses", - slug: "clinking_glasses", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🥃": { - name: "tumbler glass", - slug: "tumbler_glass", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🥤": { - name: "cup with straw", - slug: "cup_with_straw", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🧋": { - name: "bubble tea", - slug: "bubble_tea", - group: "Food & Drink", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🧃": { - name: "beverage box", - slug: "beverage_box", - group: "Food & Drink", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🧉": { - name: "mate", - slug: "mate", - group: "Food & Drink", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🧊": { - name: "ice", - slug: "ice", - group: "Food & Drink", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🥢": { - name: "chopsticks", - slug: "chopsticks", - group: "Food & Drink", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🍽️": { - name: "fork and knife with plate", - slug: "fork_and_knife_with_plate", - group: "Food & Drink", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🍴": { - name: "fork and knife", - slug: "fork_and_knife", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥄": { - name: "spoon", - slug: "spoon", - group: "Food & Drink", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🔪": { - name: "kitchen knife", - slug: "kitchen_knife", - group: "Food & Drink", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏺": { - name: "amphora", - slug: "amphora", - group: "Food & Drink", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🌍": { - name: "globe showing Europe-Africa", - slug: "globe_showing_europe_africa", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌎": { - name: "globe showing Americas", - slug: "globe_showing_americas", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌏": { - name: "globe showing Asia-Australia", - slug: "globe_showing_asia_australia", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌐": { - name: "globe with meridians", - slug: "globe_with_meridians", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🗺️": { - name: "world map", - slug: "world_map", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🗾": { - name: "map of Japan", - slug: "map_of_japan", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🧭": { - name: "compass", - slug: "compass", - group: "Travel & Places", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🏔️": { - name: "snow-capped mountain", - slug: "snow_capped_mountain", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⛰️": { - name: "mountain", - slug: "mountain", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌋": { - name: "volcano", - slug: "volcano", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🗻": { - name: "mount fuji", - slug: "mount_fuji", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏕️": { - name: "camping", - slug: "camping", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏖️": { - name: "beach with umbrella", - slug: "beach_with_umbrella", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏜️": { - name: "desert", - slug: "desert", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏝️": { - name: "desert island", - slug: "desert_island", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏞️": { - name: "national park", - slug: "national_park", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏟️": { - name: "stadium", - slug: "stadium", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏛️": { - name: "classical building", - slug: "classical_building", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏗️": { - name: "building construction", - slug: "building_construction", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🧱": { - name: "brick", - slug: "brick", - group: "Travel & Places", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🪨": { - name: "rock", - slug: "rock", - group: "Travel & Places", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🪵": { - name: "wood", - slug: "wood", - group: "Travel & Places", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🛖": { - name: "hut", - slug: "hut", - group: "Travel & Places", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🏘️": { - name: "houses", - slug: "houses", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏚️": { - name: "derelict house", - slug: "derelict_house", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏠": { - name: "house", - slug: "house", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏡": { - name: "house with garden", - slug: "house_with_garden", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏢": { - name: "office building", - slug: "office_building", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏣": { - name: "Japanese post office", - slug: "japanese_post_office", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏤": { - name: "post office", - slug: "post_office", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🏥": { - name: "hospital", - slug: "hospital", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏦": { - name: "bank", - slug: "bank", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏨": { - name: "hotel", - slug: "hotel", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏩": { - name: "love hotel", - slug: "love_hotel", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏪": { - name: "convenience store", - slug: "convenience_store", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏫": { - name: "school", - slug: "school", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏬": { - name: "department store", - slug: "department_store", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏭": { - name: "factory", - slug: "factory", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏯": { - name: "Japanese castle", - slug: "japanese_castle", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏰": { - name: "castle", - slug: "castle", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💒": { - name: "wedding", - slug: "wedding", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🗼": { - name: "Tokyo tower", - slug: "tokyo_tower", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🗽": { - name: "Statue of Liberty", - slug: "statue_of_liberty", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⛪": { - name: "church", - slug: "church", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕌": { - name: "mosque", - slug: "mosque", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🛕": { - name: "hindu temple", - slug: "hindu_temple", - group: "Travel & Places", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🕍": { - name: "synagogue", - slug: "synagogue", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "⛩️": { - name: "shinto shrine", - slug: "shinto_shrine", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕋": { - name: "kaaba", - slug: "kaaba", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "⛲": { - name: "fountain", - slug: "fountain", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⛺": { - name: "tent", - slug: "tent", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌁": { - name: "foggy", - slug: "foggy", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌃": { - name: "night with stars", - slug: "night_with_stars", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏙️": { - name: "cityscape", - slug: "cityscape", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌄": { - name: "sunrise over mountains", - slug: "sunrise_over_mountains", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌅": { - name: "sunrise", - slug: "sunrise", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌆": { - name: "cityscape at dusk", - slug: "cityscape_at_dusk", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌇": { - name: "sunset", - slug: "sunset", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌉": { - name: "bridge at night", - slug: "bridge_at_night", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♨️": { - name: "hot springs", - slug: "hot_springs", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎠": { - name: "carousel horse", - slug: "carousel_horse", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎡": { - name: "ferris wheel", - slug: "ferris_wheel", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎢": { - name: "roller coaster", - slug: "roller_coaster", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💈": { - name: "barber pole", - slug: "barber_pole", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎪": { - name: "circus tent", - slug: "circus_tent", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚂": { - name: "locomotive", - slug: "locomotive", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚃": { - name: "railway car", - slug: "railway_car", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚄": { - name: "high-speed train", - slug: "high_speed_train", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚅": { - name: "bullet train", - slug: "bullet_train", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚆": { - name: "train", - slug: "train", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚇": { - name: "metro", - slug: "metro", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚈": { - name: "light rail", - slug: "light_rail", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚉": { - name: "station", - slug: "station", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚊": { - name: "tram", - slug: "tram", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚝": { - name: "monorail", - slug: "monorail", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚞": { - name: "mountain railway", - slug: "mountain_railway", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚋": { - name: "tram car", - slug: "tram_car", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚌": { - name: "bus", - slug: "bus", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚍": { - name: "oncoming bus", - slug: "oncoming_bus", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🚎": { - name: "trolleybus", - slug: "trolleybus", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚐": { - name: "minibus", - slug: "minibus", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚑": { - name: "ambulance", - slug: "ambulance", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚒": { - name: "fire engine", - slug: "fire_engine", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚓": { - name: "police car", - slug: "police_car", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚔": { - name: "oncoming police car", - slug: "oncoming_police_car", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🚕": { - name: "taxi", - slug: "taxi", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚖": { - name: "oncoming taxi", - slug: "oncoming_taxi", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚗": { - name: "automobile", - slug: "automobile", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚘": { - name: "oncoming automobile", - slug: "oncoming_automobile", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🚙": { - name: "sport utility vehicle", - slug: "sport_utility_vehicle", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🛻": { - name: "pickup truck", - slug: "pickup_truck", - group: "Travel & Places", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🚚": { - name: "delivery truck", - slug: "delivery_truck", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚛": { - name: "articulated lorry", - slug: "articulated_lorry", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚜": { - name: "tractor", - slug: "tractor", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🏎️": { - name: "racing car", - slug: "racing_car", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏍️": { - name: "motorcycle", - slug: "motorcycle", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🛵": { - name: "motor scooter", - slug: "motor_scooter", - group: "Travel & Places", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🦽": { - name: "manual wheelchair", - slug: "manual_wheelchair", - group: "Travel & Places", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🦼": { - name: "motorized wheelchair", - slug: "motorized_wheelchair", - group: "Travel & Places", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🛺": { - name: "auto rickshaw", - slug: "auto_rickshaw", - group: "Travel & Places", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🚲": { - name: "bicycle", - slug: "bicycle", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🛴": { - name: "kick scooter", - slug: "kick_scooter", - group: "Travel & Places", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🛹": { - name: "skateboard", - slug: "skateboard", - group: "Travel & Places", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🛼": { - name: "roller skate", - slug: "roller_skate", - group: "Travel & Places", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🚏": { - name: "bus stop", - slug: "bus_stop", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🛣️": { - name: "motorway", - slug: "motorway", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🛤️": { - name: "railway track", - slug: "railway_track", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🛢️": { - name: "oil drum", - slug: "oil_drum", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⛽": { - name: "fuel pump", - slug: "fuel_pump", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚨": { - name: "police car light", - slug: "police_car_light", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚥": { - name: "horizontal traffic light", - slug: "horizontal_traffic_light", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚦": { - name: "vertical traffic light", - slug: "vertical_traffic_light", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🛑": { - name: "stop sign", - slug: "stop_sign", - group: "Travel & Places", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🚧": { - name: "construction", - slug: "construction", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⚓": { - name: "anchor", - slug: "anchor", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⛵": { - name: "sailboat", - slug: "sailboat", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🛶": { - name: "canoe", - slug: "canoe", - group: "Travel & Places", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🚤": { - name: "speedboat", - slug: "speedboat", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🛳️": { - name: "passenger ship", - slug: "passenger_ship", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⛴️": { - name: "ferry", - slug: "ferry", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🛥️": { - name: "motor boat", - slug: "motor_boat", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🚢": { - name: "ship", - slug: "ship", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "✈️": { - name: "airplane", - slug: "airplane", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🛩️": { - name: "small airplane", - slug: "small_airplane", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🛫": { - name: "airplane departure", - slug: "airplane_departure", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🛬": { - name: "airplane arrival", - slug: "airplane_arrival", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🪂": { - name: "parachute", - slug: "parachute", - group: "Travel & Places", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "💺": { - name: "seat", - slug: "seat", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚁": { - name: "helicopter", - slug: "helicopter", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚟": { - name: "suspension railway", - slug: "suspension_railway", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚠": { - name: "mountain cableway", - slug: "mountain_cableway", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚡": { - name: "aerial tramway", - slug: "aerial_tramway", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🛰️": { - name: "satellite", - slug: "satellite", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🚀": { - name: "rocket", - slug: "rocket", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🛸": { - name: "flying saucer", - slug: "flying_saucer", - group: "Travel & Places", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🛎️": { - name: "bellhop bell", - slug: "bellhop_bell", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🧳": { - name: "luggage", - slug: "luggage", - group: "Travel & Places", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "⌛": { - name: "hourglass done", - slug: "hourglass_done", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⏳": { - name: "hourglass not done", - slug: "hourglass_not_done", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⌚": { - name: "watch", - slug: "watch", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⏰": { - name: "alarm clock", - slug: "alarm_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⏱️": { - name: "stopwatch", - slug: "stopwatch", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "⏲️": { - name: "timer clock", - slug: "timer_clock", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🕰️": { - name: "mantelpiece clock", - slug: "mantelpiece_clock", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕛": { - name: "twelve o’clock", - slug: "twelve_o_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕧": { - name: "twelve-thirty", - slug: "twelve_thirty", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕐": { - name: "one o’clock", - slug: "one_o_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕜": { - name: "one-thirty", - slug: "one_thirty", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕑": { - name: "two o’clock", - slug: "two_o_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕝": { - name: "two-thirty", - slug: "two_thirty", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕒": { - name: "three o’clock", - slug: "three_o_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕞": { - name: "three-thirty", - slug: "three_thirty", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕓": { - name: "four o’clock", - slug: "four_o_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕟": { - name: "four-thirty", - slug: "four_thirty", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕔": { - name: "five o’clock", - slug: "five_o_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕠": { - name: "five-thirty", - slug: "five_thirty", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕕": { - name: "six o’clock", - slug: "six_o_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕡": { - name: "six-thirty", - slug: "six_thirty", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕖": { - name: "seven o’clock", - slug: "seven_o_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕢": { - name: "seven-thirty", - slug: "seven_thirty", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕗": { - name: "eight o’clock", - slug: "eight_o_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕣": { - name: "eight-thirty", - slug: "eight_thirty", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕘": { - name: "nine o’clock", - slug: "nine_o_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕤": { - name: "nine-thirty", - slug: "nine_thirty", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕙": { - name: "ten o’clock", - slug: "ten_o_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕥": { - name: "ten-thirty", - slug: "ten_thirty", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🕚": { - name: "eleven o’clock", - slug: "eleven_o_clock", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕦": { - name: "eleven-thirty", - slug: "eleven_thirty", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌑": { - name: "new moon", - slug: "new_moon", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌒": { - name: "waxing crescent moon", - slug: "waxing_crescent_moon", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🌓": { - name: "first quarter moon", - slug: "first_quarter_moon", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌔": { - name: "waxing gibbous moon", - slug: "waxing_gibbous_moon", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌕": { - name: "full moon", - slug: "full_moon", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌖": { - name: "waning gibbous moon", - slug: "waning_gibbous_moon", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🌗": { - name: "last quarter moon", - slug: "last_quarter_moon", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🌘": { - name: "waning crescent moon", - slug: "waning_crescent_moon", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🌙": { - name: "crescent moon", - slug: "crescent_moon", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌚": { - name: "new moon face", - slug: "new_moon_face", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🌛": { - name: "first quarter moon face", - slug: "first_quarter_moon_face", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌜": { - name: "last quarter moon face", - slug: "last_quarter_moon_face", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌡️": { - name: "thermometer", - slug: "thermometer", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "☀️": { - name: "sun", - slug: "sun", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌝": { - name: "full moon face", - slug: "full_moon_face", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🌞": { - name: "sun with face", - slug: "sun_with_face", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🪐": { - name: "ringed planet", - slug: "ringed_planet", - group: "Travel & Places", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "⭐": { - name: "star", - slug: "star", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌟": { - name: "glowing star", - slug: "glowing_star", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌠": { - name: "shooting star", - slug: "shooting_star", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌌": { - name: "milky way", - slug: "milky_way", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "☁️": { - name: "cloud", - slug: "cloud", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⛅": { - name: "sun behind cloud", - slug: "sun_behind_cloud", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⛈️": { - name: "cloud with lightning and rain", - slug: "cloud_with_lightning_and_rain", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌤️": { - name: "sun behind small cloud", - slug: "sun_behind_small_cloud", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌥️": { - name: "sun behind large cloud", - slug: "sun_behind_large_cloud", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌦️": { - name: "sun behind rain cloud", - slug: "sun_behind_rain_cloud", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌧️": { - name: "cloud with rain", - slug: "cloud_with_rain", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌨️": { - name: "cloud with snow", - slug: "cloud_with_snow", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌩️": { - name: "cloud with lightning", - slug: "cloud_with_lightning", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌪️": { - name: "tornado", - slug: "tornado", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌫️": { - name: "fog", - slug: "fog", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌬️": { - name: "wind face", - slug: "wind_face", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🌀": { - name: "cyclone", - slug: "cyclone", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌈": { - name: "rainbow", - slug: "rainbow", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌂": { - name: "closed umbrella", - slug: "closed_umbrella", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "☂️": { - name: "umbrella", - slug: "umbrella", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "☔": { - name: "umbrella with rain drops", - slug: "umbrella_with_rain_drops", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⛱️": { - name: "umbrella on ground", - slug: "umbrella_on_ground", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⚡": { - name: "high voltage", - slug: "high_voltage", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "❄️": { - name: "snowflake", - slug: "snowflake", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "☃️": { - name: "snowman", - slug: "snowman", - group: "Travel & Places", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⛄": { - name: "snowman without snow", - slug: "snowman_without_snow", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "☄️": { - name: "comet", - slug: "comet", - group: "Travel & Places", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔥": { - name: "fire", - slug: "fire", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💧": { - name: "droplet", - slug: "droplet", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🌊": { - name: "water wave", - slug: "water_wave", - group: "Travel & Places", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎃": { - name: "jack-o-lantern", - slug: "jack_o_lantern", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎄": { - name: "Christmas tree", - slug: "christmas_tree", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎆": { - name: "fireworks", - slug: "fireworks", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎇": { - name: "sparkler", - slug: "sparkler", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🧨": { - name: "firecracker", - slug: "firecracker", - group: "Activities", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "✨": { - name: "sparkles", - slug: "sparkles", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎈": { - name: "balloon", - slug: "balloon", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎉": { - name: "party popper", - slug: "party_popper", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎊": { - name: "confetti ball", - slug: "confetti_ball", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎋": { - name: "tanabata tree", - slug: "tanabata_tree", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎍": { - name: "pine decoration", - slug: "pine_decoration", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎎": { - name: "Japanese dolls", - slug: "japanese_dolls", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎏": { - name: "carp streamer", - slug: "carp_streamer", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎐": { - name: "wind chime", - slug: "wind_chime", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎑": { - name: "moon viewing ceremony", - slug: "moon_viewing_ceremony", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🧧": { - name: "red envelope", - slug: "red_envelope", - group: "Activities", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🎀": { - name: "ribbon", - slug: "ribbon", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎁": { - name: "wrapped gift", - slug: "wrapped_gift", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎗️": { - name: "reminder ribbon", - slug: "reminder_ribbon", - group: "Activities", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🎟️": { - name: "admission tickets", - slug: "admission_tickets", - group: "Activities", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🎫": { - name: "ticket", - slug: "ticket", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎖️": { - name: "military medal", - slug: "military_medal", - group: "Activities", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏆": { - name: "trophy", - slug: "trophy", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏅": { - name: "sports medal", - slug: "sports_medal", - group: "Activities", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🥇": { - name: "1st place medal", - slug: "1st_place_medal", - group: "Activities", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🥈": { - name: "2nd place medal", - slug: "2nd_place_medal", - group: "Activities", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🥉": { - name: "3rd place medal", - slug: "3rd_place_medal", - group: "Activities", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "⚽": { - name: "soccer ball", - slug: "soccer_ball", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⚾": { - name: "baseball", - slug: "baseball", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥎": { - name: "softball", - slug: "softball", - group: "Activities", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🏀": { - name: "basketball", - slug: "basketball", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏐": { - name: "volleyball", - slug: "volleyball", - group: "Activities", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🏈": { - name: "american football", - slug: "american_football", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏉": { - name: "rugby football", - slug: "rugby_football", - group: "Activities", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🎾": { - name: "tennis", - slug: "tennis", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥏": { - name: "flying disc", - slug: "flying_disc", - group: "Activities", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🎳": { - name: "bowling", - slug: "bowling", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏏": { - name: "cricket game", - slug: "cricket_game", - group: "Activities", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🏑": { - name: "field hockey", - slug: "field_hockey", - group: "Activities", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🏒": { - name: "ice hockey", - slug: "ice_hockey", - group: "Activities", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🥍": { - name: "lacrosse", - slug: "lacrosse", - group: "Activities", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🏓": { - name: "ping pong", - slug: "ping_pong", - group: "Activities", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🏸": { - name: "badminton", - slug: "badminton", - group: "Activities", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🥊": { - name: "boxing glove", - slug: "boxing_glove", - group: "Activities", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🥋": { - name: "martial arts uniform", - slug: "martial_arts_uniform", - group: "Activities", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🥅": { - name: "goal net", - slug: "goal_net", - group: "Activities", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "⛳": { - name: "flag in hole", - slug: "flag_in_hole", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⛸️": { - name: "ice skate", - slug: "ice_skate", - group: "Activities", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🎣": { - name: "fishing pole", - slug: "fishing_pole", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🤿": { - name: "diving mask", - slug: "diving_mask", - group: "Activities", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🎽": { - name: "running shirt", - slug: "running_shirt", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎿": { - name: "skis", - slug: "skis", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🛷": { - name: "sled", - slug: "sled", - group: "Activities", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🥌": { - name: "curling stone", - slug: "curling_stone", - group: "Activities", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🎯": { - name: "direct hit", - slug: "direct_hit", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪀": { - name: "yo-yo", - slug: "yo_yo", - group: "Activities", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🪁": { - name: "kite", - slug: "kite", - group: "Activities", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🎱": { - name: "pool 8 ball", - slug: "pool_8_ball", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔮": { - name: "crystal ball", - slug: "crystal_ball", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪄": { - name: "magic wand", - slug: "magic_wand", - group: "Activities", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🧿": { - name: "nazar amulet", - slug: "nazar_amulet", - group: "Activities", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🎮": { - name: "video game", - slug: "video_game", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕹️": { - name: "joystick", - slug: "joystick", - group: "Activities", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🎰": { - name: "slot machine", - slug: "slot_machine", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎲": { - name: "game die", - slug: "game_die", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🧩": { - name: "puzzle piece", - slug: "puzzle_piece", - group: "Activities", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🧸": { - name: "teddy bear", - slug: "teddy_bear", - group: "Activities", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🪅": { - name: "piñata", - slug: "pinata", - group: "Activities", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🪆": { - name: "nesting dolls", - slug: "nesting_dolls", - group: "Activities", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "♠️": { - name: "spade suit", - slug: "spade_suit", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♥️": { - name: "heart suit", - slug: "heart_suit", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♦️": { - name: "diamond suit", - slug: "diamond_suit", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♣️": { - name: "club suit", - slug: "club_suit", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♟️": { - name: "chess pawn", - slug: "chess_pawn", - group: "Activities", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🃏": { - name: "joker", - slug: "joker", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🀄": { - name: "mahjong red dragon", - slug: "mahjong_red_dragon", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎴": { - name: "flower playing cards", - slug: "flower_playing_cards", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎭": { - name: "performing arts", - slug: "performing_arts", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🖼️": { - name: "framed picture", - slug: "framed_picture", - group: "Activities", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🎨": { - name: "artist palette", - slug: "artist_palette", - group: "Activities", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🧵": { - name: "thread", - slug: "thread", - group: "Activities", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🪡": { - name: "sewing needle", - slug: "sewing_needle", - group: "Activities", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🧶": { - name: "yarn", - slug: "yarn", - group: "Activities", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🪢": { - name: "knot", - slug: "knot", - group: "Activities", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "👓": { - name: "glasses", - slug: "glasses", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕶️": { - name: "sunglasses", - slug: "sunglasses", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🥽": { - name: "goggles", - slug: "goggles", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🥼": { - name: "lab coat", - slug: "lab_coat", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🦺": { - name: "safety vest", - slug: "safety_vest", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "👔": { - name: "necktie", - slug: "necktie", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👕": { - name: "t-shirt", - slug: "t_shirt", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👖": { - name: "jeans", - slug: "jeans", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🧣": { - name: "scarf", - slug: "scarf", - group: "Objects", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🧤": { - name: "gloves", - slug: "gloves", - group: "Objects", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🧥": { - name: "coat", - slug: "coat", - group: "Objects", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🧦": { - name: "socks", - slug: "socks", - group: "Objects", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "👗": { - name: "dress", - slug: "dress", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👘": { - name: "kimono", - slug: "kimono", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥻": { - name: "sari", - slug: "sari", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🩱": { - name: "one-piece swimsuit", - slug: "one_piece_swimsuit", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🩲": { - name: "briefs", - slug: "briefs", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🩳": { - name: "shorts", - slug: "shorts", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "👙": { - name: "bikini", - slug: "bikini", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👚": { - name: "woman’s clothes", - slug: "woman_s_clothes", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👛": { - name: "purse", - slug: "purse", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👜": { - name: "handbag", - slug: "handbag", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👝": { - name: "clutch bag", - slug: "clutch_bag", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🛍️": { - name: "shopping bags", - slug: "shopping_bags", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🎒": { - name: "backpack", - slug: "backpack", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🩴": { - name: "thong sandal", - slug: "thong_sandal", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "👞": { - name: "man’s shoe", - slug: "man_s_shoe", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👟": { - name: "running shoe", - slug: "running_shoe", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🥾": { - name: "hiking boot", - slug: "hiking_boot", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🥿": { - name: "flat shoe", - slug: "flat_shoe", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "👠": { - name: "high-heeled shoe", - slug: "high_heeled_shoe", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👡": { - name: "woman’s sandal", - slug: "woman_s_sandal", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🩰": { - name: "ballet shoes", - slug: "ballet_shoes", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "👢": { - name: "woman’s boot", - slug: "woman_s_boot", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👑": { - name: "crown", - slug: "crown", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "👒": { - name: "woman’s hat", - slug: "woman_s_hat", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎩": { - name: "top hat", - slug: "top_hat", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎓": { - name: "graduation cap", - slug: "graduation_cap", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🧢": { - name: "billed cap", - slug: "billed_cap", - group: "Objects", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🪖": { - name: "military helmet", - slug: "military_helmet", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "⛑️": { - name: "rescue worker’s helmet", - slug: "rescue_worker_s_helmet", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "📿": { - name: "prayer beads", - slug: "prayer_beads", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "💄": { - name: "lipstick", - slug: "lipstick", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💍": { - name: "ring", - slug: "ring", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💎": { - name: "gem stone", - slug: "gem_stone", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔇": { - name: "muted speaker", - slug: "muted_speaker", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔈": { - name: "speaker low volume", - slug: "speaker_low_volume", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🔉": { - name: "speaker medium volume", - slug: "speaker_medium_volume", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔊": { - name: "speaker high volume", - slug: "speaker_high_volume", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📢": { - name: "loudspeaker", - slug: "loudspeaker", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📣": { - name: "megaphone", - slug: "megaphone", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📯": { - name: "postal horn", - slug: "postal_horn", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔔": { - name: "bell", - slug: "bell", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔕": { - name: "bell with slash", - slug: "bell_with_slash", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🎼": { - name: "musical score", - slug: "musical_score", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎵": { - name: "musical note", - slug: "musical_note", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎶": { - name: "musical notes", - slug: "musical_notes", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎙️": { - name: "studio microphone", - slug: "studio_microphone", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🎚️": { - name: "level slider", - slug: "level_slider", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🎛️": { - name: "control knobs", - slug: "control_knobs", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🎤": { - name: "microphone", - slug: "microphone", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎧": { - name: "headphone", - slug: "headphone", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📻": { - name: "radio", - slug: "radio", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎷": { - name: "saxophone", - slug: "saxophone", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪗": { - name: "accordion", - slug: "accordion", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🎸": { - name: "guitar", - slug: "guitar", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎹": { - name: "musical keyboard", - slug: "musical_keyboard", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎺": { - name: "trumpet", - slug: "trumpet", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎻": { - name: "violin", - slug: "violin", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪕": { - name: "banjo", - slug: "banjo", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🥁": { - name: "drum", - slug: "drum", - group: "Objects", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🪘": { - name: "long drum", - slug: "long_drum", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "📱": { - name: "mobile phone", - slug: "mobile_phone", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📲": { - name: "mobile phone with arrow", - slug: "mobile_phone_with_arrow", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "☎️": { - name: "telephone", - slug: "telephone", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📞": { - name: "telephone receiver", - slug: "telephone_receiver", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📟": { - name: "pager", - slug: "pager", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📠": { - name: "fax machine", - slug: "fax_machine", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔋": { - name: "battery", - slug: "battery", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔌": { - name: "electric plug", - slug: "electric_plug", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💻": { - name: "laptop", - slug: "laptop", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🖥️": { - name: "desktop computer", - slug: "desktop_computer", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🖨️": { - name: "printer", - slug: "printer", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⌨️": { - name: "keyboard", - slug: "keyboard", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🖱️": { - name: "computer mouse", - slug: "computer_mouse", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🖲️": { - name: "trackball", - slug: "trackball", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "💽": { - name: "computer disk", - slug: "computer_disk", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💾": { - name: "floppy disk", - slug: "floppy_disk", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💿": { - name: "optical disk", - slug: "optical_disk", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📀": { - name: "dvd", - slug: "dvd", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🧮": { - name: "abacus", - slug: "abacus", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🎥": { - name: "movie camera", - slug: "movie_camera", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎞️": { - name: "film frames", - slug: "film_frames", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "📽️": { - name: "film projector", - slug: "film_projector", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🎬": { - name: "clapper board", - slug: "clapper_board", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📺": { - name: "television", - slug: "television", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📷": { - name: "camera", - slug: "camera", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📸": { - name: "camera with flash", - slug: "camera_with_flash", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "📹": { - name: "video camera", - slug: "video_camera", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📼": { - name: "videocassette", - slug: "videocassette", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔍": { - name: "magnifying glass tilted left", - slug: "magnifying_glass_tilted_left", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔎": { - name: "magnifying glass tilted right", - slug: "magnifying_glass_tilted_right", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🕯️": { - name: "candle", - slug: "candle", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "💡": { - name: "light bulb", - slug: "light_bulb", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔦": { - name: "flashlight", - slug: "flashlight", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏮": { - name: "red paper lantern", - slug: "red_paper_lantern", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪔": { - name: "diya lamp", - slug: "diya_lamp", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "📔": { - name: "notebook with decorative cover", - slug: "notebook_with_decorative_cover", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📕": { - name: "closed book", - slug: "closed_book", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📖": { - name: "open book", - slug: "open_book", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📗": { - name: "green book", - slug: "green_book", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📘": { - name: "blue book", - slug: "blue_book", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📙": { - name: "orange book", - slug: "orange_book", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📚": { - name: "books", - slug: "books", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📓": { - name: "notebook", - slug: "notebook", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📒": { - name: "ledger", - slug: "ledger", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📃": { - name: "page with curl", - slug: "page_with_curl", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📜": { - name: "scroll", - slug: "scroll", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📄": { - name: "page facing up", - slug: "page_facing_up", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📰": { - name: "newspaper", - slug: "newspaper", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🗞️": { - name: "rolled-up newspaper", - slug: "rolled_up_newspaper", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "📑": { - name: "bookmark tabs", - slug: "bookmark_tabs", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔖": { - name: "bookmark", - slug: "bookmark", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏷️": { - name: "label", - slug: "label", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "💰": { - name: "money bag", - slug: "money_bag", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪙": { - name: "coin", - slug: "coin", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "💴": { - name: "yen banknote", - slug: "yen_banknote", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💵": { - name: "dollar banknote", - slug: "dollar_banknote", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💶": { - name: "euro banknote", - slug: "euro_banknote", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "💷": { - name: "pound banknote", - slug: "pound_banknote", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "💸": { - name: "money with wings", - slug: "money_with_wings", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💳": { - name: "credit card", - slug: "credit_card", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🧾": { - name: "receipt", - slug: "receipt", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "💹": { - name: "chart increasing with yen", - slug: "chart_increasing_with_yen", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "✉️": { - name: "envelope", - slug: "envelope", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📧": { - name: "e-mail", - slug: "e_mail", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📨": { - name: "incoming envelope", - slug: "incoming_envelope", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📩": { - name: "envelope with arrow", - slug: "envelope_with_arrow", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📤": { - name: "outbox tray", - slug: "outbox_tray", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📥": { - name: "inbox tray", - slug: "inbox_tray", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📦": { - name: "package", - slug: "package", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📫": { - name: "closed mailbox with raised flag", - slug: "closed_mailbox_with_raised_flag", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📪": { - name: "closed mailbox with lowered flag", - slug: "closed_mailbox_with_lowered_flag", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📬": { - name: "open mailbox with raised flag", - slug: "open_mailbox_with_raised_flag", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "📭": { - name: "open mailbox with lowered flag", - slug: "open_mailbox_with_lowered_flag", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "📮": { - name: "postbox", - slug: "postbox", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🗳️": { - name: "ballot box with ballot", - slug: "ballot_box_with_ballot", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "✏️": { - name: "pencil", - slug: "pencil", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "✒️": { - name: "black nib", - slug: "black_nib", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🖋️": { - name: "fountain pen", - slug: "fountain_pen", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🖊️": { - name: "pen", - slug: "pen", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🖌️": { - name: "paintbrush", - slug: "paintbrush", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🖍️": { - name: "crayon", - slug: "crayon", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "📝": { - name: "memo", - slug: "memo", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💼": { - name: "briefcase", - slug: "briefcase", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📁": { - name: "file folder", - slug: "file_folder", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📂": { - name: "open file folder", - slug: "open_file_folder", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🗂️": { - name: "card index dividers", - slug: "card_index_dividers", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "📅": { - name: "calendar", - slug: "calendar", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📆": { - name: "tear-off calendar", - slug: "tear_off_calendar", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🗒️": { - name: "spiral notepad", - slug: "spiral_notepad", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🗓️": { - name: "spiral calendar", - slug: "spiral_calendar", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "📇": { - name: "card index", - slug: "card_index", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📈": { - name: "chart increasing", - slug: "chart_increasing", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📉": { - name: "chart decreasing", - slug: "chart_decreasing", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📊": { - name: "bar chart", - slug: "bar_chart", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📋": { - name: "clipboard", - slug: "clipboard", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📌": { - name: "pushpin", - slug: "pushpin", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📍": { - name: "round pushpin", - slug: "round_pushpin", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📎": { - name: "paperclip", - slug: "paperclip", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🖇️": { - name: "linked paperclips", - slug: "linked_paperclips", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "📏": { - name: "straight ruler", - slug: "straight_ruler", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📐": { - name: "triangular ruler", - slug: "triangular_ruler", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "✂️": { - name: "scissors", - slug: "scissors", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🗃️": { - name: "card file box", - slug: "card_file_box", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🗄️": { - name: "file cabinet", - slug: "file_cabinet", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🗑️": { - name: "wastebasket", - slug: "wastebasket", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🔒": { - name: "locked", - slug: "locked", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔓": { - name: "unlocked", - slug: "unlocked", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔏": { - name: "locked with pen", - slug: "locked_with_pen", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔐": { - name: "locked with key", - slug: "locked_with_key", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔑": { - name: "key", - slug: "key", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🗝️": { - name: "old key", - slug: "old_key", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🔨": { - name: "hammer", - slug: "hammer", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪓": { - name: "axe", - slug: "axe", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "⛏️": { - name: "pick", - slug: "pick", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⚒️": { - name: "hammer and pick", - slug: "hammer_and_pick", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🛠️": { - name: "hammer and wrench", - slug: "hammer_and_wrench", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🗡️": { - name: "dagger", - slug: "dagger", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⚔️": { - name: "crossed swords", - slug: "crossed_swords", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔫": { - name: "water pistol", - slug: "water_pistol", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪃": { - name: "boomerang", - slug: "boomerang", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🏹": { - name: "bow and arrow", - slug: "bow_and_arrow", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🛡️": { - name: "shield", - slug: "shield", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🪚": { - name: "carpentry saw", - slug: "carpentry_saw", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🔧": { - name: "wrench", - slug: "wrench", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪛": { - name: "screwdriver", - slug: "screwdriver", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🔩": { - name: "nut and bolt", - slug: "nut_and_bolt", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⚙️": { - name: "gear", - slug: "gear", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🗜️": { - name: "clamp", - slug: "clamp", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⚖️": { - name: "balance scale", - slug: "balance_scale", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🦯": { - name: "white cane", - slug: "white_cane", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🔗": { - name: "link", - slug: "link", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⛓️": { - name: "chains", - slug: "chains", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🪝": { - name: "hook", - slug: "hook", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🧰": { - name: "toolbox", - slug: "toolbox", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🧲": { - name: "magnet", - slug: "magnet", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🪜": { - name: "ladder", - slug: "ladder", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "⚗️": { - name: "alembic", - slug: "alembic", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🧪": { - name: "test tube", - slug: "test_tube", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🧫": { - name: "petri dish", - slug: "petri_dish", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🧬": { - name: "dna", - slug: "dna", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🔬": { - name: "microscope", - slug: "microscope", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔭": { - name: "telescope", - slug: "telescope", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "📡": { - name: "satellite antenna", - slug: "satellite_antenna", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💉": { - name: "syringe", - slug: "syringe", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🩸": { - name: "drop of blood", - slug: "drop_of_blood", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "💊": { - name: "pill", - slug: "pill", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🩹": { - name: "adhesive bandage", - slug: "adhesive_bandage", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🩺": { - name: "stethoscope", - slug: "stethoscope", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🚪": { - name: "door", - slug: "door", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🛗": { - name: "elevator", - slug: "elevator", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🪞": { - name: "mirror", - slug: "mirror", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🪟": { - name: "window", - slug: "window", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🛏️": { - name: "bed", - slug: "bed", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🛋️": { - name: "couch and lamp", - slug: "couch_and_lamp", - group: "Objects", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🪑": { - name: "chair", - slug: "chair", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🚽": { - name: "toilet", - slug: "toilet", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪠": { - name: "plunger", - slug: "plunger", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🚿": { - name: "shower", - slug: "shower", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🛁": { - name: "bathtub", - slug: "bathtub", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🪤": { - name: "mouse trap", - slug: "mouse_trap", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🪒": { - name: "razor", - slug: "razor", - group: "Objects", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🧴": { - name: "lotion bottle", - slug: "lotion_bottle", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🧷": { - name: "safety pin", - slug: "safety_pin", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🧹": { - name: "broom", - slug: "broom", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🧺": { - name: "basket", - slug: "basket", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🧻": { - name: "roll of paper", - slug: "roll_of_paper", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🪣": { - name: "bucket", - slug: "bucket", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🧼": { - name: "soap", - slug: "soap", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🪥": { - name: "toothbrush", - slug: "toothbrush", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🧽": { - name: "sponge", - slug: "sponge", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🧯": { - name: "fire extinguisher", - slug: "fire_extinguisher", - group: "Objects", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🛒": { - name: "shopping cart", - slug: "shopping_cart", - group: "Objects", - emoji_version: "3.0", - unicode_version: "3.0", - skin_tone_support: false -}, - "🚬": { - name: "cigarette", - slug: "cigarette", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⚰️": { - name: "coffin", - slug: "coffin", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🪦": { - name: "headstone", - slug: "headstone", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "⚱️": { - name: "funeral urn", - slug: "funeral_urn", - group: "Objects", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🗿": { - name: "moai", - slug: "moai", - group: "Objects", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🪧": { - name: "placard", - slug: "placard", - group: "Objects", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🏧": { - name: "ATM sign", - slug: "atm_sign", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚮": { - name: "litter in bin sign", - slug: "litter_in_bin_sign", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚰": { - name: "potable water", - slug: "potable_water", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "♿": { - name: "wheelchair symbol", - slug: "wheelchair_symbol", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚹": { - name: "men’s room", - slug: "men_s_room", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚺": { - name: "women’s room", - slug: "women_s_room", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚻": { - name: "restroom", - slug: "restroom", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚼": { - name: "baby symbol", - slug: "baby_symbol", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚾": { - name: "water closet", - slug: "water_closet", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🛂": { - name: "passport control", - slug: "passport_control", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🛃": { - name: "customs", - slug: "customs", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🛄": { - name: "baggage claim", - slug: "baggage_claim", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🛅": { - name: "left luggage", - slug: "left_luggage", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "⚠️": { - name: "warning", - slug: "warning", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚸": { - name: "children crossing", - slug: "children_crossing", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "⛔": { - name: "no entry", - slug: "no_entry", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚫": { - name: "prohibited", - slug: "prohibited", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚳": { - name: "no bicycles", - slug: "no_bicycles", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚭": { - name: "no smoking", - slug: "no_smoking", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚯": { - name: "no littering", - slug: "no_littering", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚱": { - name: "non-potable water", - slug: "non_potable_water", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🚷": { - name: "no pedestrians", - slug: "no_pedestrians", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "📵": { - name: "no mobile phones", - slug: "no_mobile_phones", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔞": { - name: "no one under eighteen", - slug: "no_one_under_eighteen", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "☢️": { - name: "radioactive", - slug: "radioactive", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "☣️": { - name: "biohazard", - slug: "biohazard", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "⬆️": { - name: "up arrow", - slug: "up_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "↗️": { - name: "up-right arrow", - slug: "up_right_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "➡️": { - name: "right arrow", - slug: "right_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "↘️": { - name: "down-right arrow", - slug: "down_right_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⬇️": { - name: "down arrow", - slug: "down_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "↙️": { - name: "down-left arrow", - slug: "down_left_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⬅️": { - name: "left arrow", - slug: "left_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "↖️": { - name: "up-left arrow", - slug: "up_left_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "↕️": { - name: "up-down arrow", - slug: "up_down_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "↔️": { - name: "left-right arrow", - slug: "left_right_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "↩️": { - name: "right arrow curving left", - slug: "right_arrow_curving_left", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "↪️": { - name: "left arrow curving right", - slug: "left_arrow_curving_right", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⤴️": { - name: "right arrow curving up", - slug: "right_arrow_curving_up", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⤵️": { - name: "right arrow curving down", - slug: "right_arrow_curving_down", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔃": { - name: "clockwise vertical arrows", - slug: "clockwise_vertical_arrows", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔄": { - name: "counterclockwise arrows button", - slug: "counterclockwise_arrows_button", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔙": { - name: "BACK arrow", - slug: "back_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔚": { - name: "END arrow", - slug: "end_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔛": { - name: "ON! arrow", - slug: "on_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔜": { - name: "SOON arrow", - slug: "soon_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔝": { - name: "TOP arrow", - slug: "top_arrow", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🛐": { - name: "place of worship", - slug: "place_of_worship", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "⚛️": { - name: "atom symbol", - slug: "atom_symbol", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🕉️": { - name: "om", - slug: "om", - group: "Symbols", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "✡️": { - name: "star of David", - slug: "star_of_david", - group: "Symbols", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "☸️": { - name: "wheel of dharma", - slug: "wheel_of_dharma", - group: "Symbols", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "☯️": { - name: "yin yang", - slug: "yin_yang", - group: "Symbols", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "✝️": { - name: "latin cross", - slug: "latin_cross", - group: "Symbols", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "☦️": { - name: "orthodox cross", - slug: "orthodox_cross", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "☪️": { - name: "star and crescent", - slug: "star_and_crescent", - group: "Symbols", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "☮️": { - name: "peace symbol", - slug: "peace_symbol", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🕎": { - name: "menorah", - slug: "menorah", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔯": { - name: "dotted six-pointed star", - slug: "dotted_six_pointed_star", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♈": { - name: "Aries", - slug: "aries", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♉": { - name: "Taurus", - slug: "taurus", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♊": { - name: "Gemini", - slug: "gemini", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♋": { - name: "Cancer", - slug: "cancer", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♌": { - name: "Leo", - slug: "leo", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♍": { - name: "Virgo", - slug: "virgo", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♎": { - name: "Libra", - slug: "libra", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♏": { - name: "Scorpio", - slug: "scorpio", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♐": { - name: "Sagittarius", - slug: "sagittarius", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♑": { - name: "Capricorn", - slug: "capricorn", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♒": { - name: "Aquarius", - slug: "aquarius", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♓": { - name: "Pisces", - slug: "pisces", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⛎": { - name: "Ophiuchus", - slug: "ophiuchus", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔀": { - name: "shuffle tracks button", - slug: "shuffle_tracks_button", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔁": { - name: "repeat button", - slug: "repeat_button", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔂": { - name: "repeat single button", - slug: "repeat_single_button", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "▶️": { - name: "play button", - slug: "play_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⏩": { - name: "fast-forward button", - slug: "fast_forward_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⏭️": { - name: "next track button", - slug: "next_track_button", - group: "Symbols", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⏯️": { - name: "play or pause button", - slug: "play_or_pause_button", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "◀️": { - name: "reverse button", - slug: "reverse_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⏪": { - name: "fast reverse button", - slug: "fast_reverse_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⏮️": { - name: "last track button", - slug: "last_track_button", - group: "Symbols", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🔼": { - name: "upwards button", - slug: "upwards_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⏫": { - name: "fast up button", - slug: "fast_up_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔽": { - name: "downwards button", - slug: "downwards_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⏬": { - name: "fast down button", - slug: "fast_down_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⏸️": { - name: "pause button", - slug: "pause_button", - group: "Symbols", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⏹️": { - name: "stop button", - slug: "stop_button", - group: "Symbols", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⏺️": { - name: "record button", - slug: "record_button", - group: "Symbols", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "⏏️": { - name: "eject button", - slug: "eject_button", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🎦": { - name: "cinema", - slug: "cinema", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔅": { - name: "dim button", - slug: "dim_button", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔆": { - name: "bright button", - slug: "bright_button", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "📶": { - name: "antenna bars", - slug: "antenna_bars", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📳": { - name: "vibration mode", - slug: "vibration_mode", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📴": { - name: "mobile phone off", - slug: "mobile_phone_off", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♀️": { - name: "female sign", - slug: "female_sign", - group: "Symbols", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "♂️": { - name: "male sign", - slug: "male_sign", - group: "Symbols", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "⚧️": { - name: "transgender symbol", - slug: "transgender_symbol", - group: "Symbols", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "✖️": { - name: "multiply", - slug: "multiply", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "➕": { - name: "plus", - slug: "plus", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "➖": { - name: "minus", - slug: "minus", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "➗": { - name: "divide", - slug: "divide", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "♾️": { - name: "infinity", - slug: "infinity", - group: "Symbols", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "‼️": { - name: "double exclamation mark", - slug: "double_exclamation_mark", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⁉️": { - name: "exclamation question mark", - slug: "exclamation_question_mark", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "❓": { - name: "red question mark", - slug: "red_question_mark", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "❔": { - name: "white question mark", - slug: "white_question_mark", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "❕": { - name: "white exclamation mark", - slug: "white_exclamation_mark", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "❗": { - name: "red exclamation mark", - slug: "red_exclamation_mark", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "〰️": { - name: "wavy dash", - slug: "wavy_dash", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💱": { - name: "currency exchange", - slug: "currency_exchange", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💲": { - name: "heavy dollar sign", - slug: "heavy_dollar_sign", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⚕️": { - name: "medical symbol", - slug: "medical_symbol", - group: "Symbols", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "♻️": { - name: "recycling symbol", - slug: "recycling_symbol", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⚜️": { - name: "fleur-de-lis", - slug: "fleur_de_lis", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🔱": { - name: "trident emblem", - slug: "trident_emblem", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "📛": { - name: "name badge", - slug: "name_badge", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔰": { - name: "Japanese symbol for beginner", - slug: "japanese_symbol_for_beginner", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⭕": { - name: "hollow red circle", - slug: "hollow_red_circle", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "✅": { - name: "check mark button", - slug: "check_mark_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "☑️": { - name: "check box with check", - slug: "check_box_with_check", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "✔️": { - name: "check mark", - slug: "check_mark", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "❌": { - name: "cross mark", - slug: "cross_mark", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "❎": { - name: "cross mark button", - slug: "cross_mark_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "➰": { - name: "curly loop", - slug: "curly_loop", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "➿": { - name: "double curly loop", - slug: "double_curly_loop", - group: "Symbols", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "〽️": { - name: "part alternation mark", - slug: "part_alternation_mark", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "✳️": { - name: "eight-spoked asterisk", - slug: "eight_spoked_asterisk", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "✴️": { - name: "eight-pointed star", - slug: "eight_pointed_star", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "❇️": { - name: "sparkle", - slug: "sparkle", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "©️": { - name: "copyright", - slug: "copyright", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "®️": { - name: "registered", - slug: "registered", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "™️": { - name: "trade mark", - slug: "trade_mark", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "#️⃣": { - name: "keycap #", - slug: "keycap_", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "*️⃣": { - name: "keycap *", - slug: "keycap_", - group: "Symbols", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "0️⃣": { - name: "keycap 0", - slug: "keycap_0", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "1️⃣": { - name: "keycap 1", - slug: "keycap_1", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "2️⃣": { - name: "keycap 2", - slug: "keycap_2", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "3️⃣": { - name: "keycap 3", - slug: "keycap_3", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "4️⃣": { - name: "keycap 4", - slug: "keycap_4", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "5️⃣": { - name: "keycap 5", - slug: "keycap_5", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "6️⃣": { - name: "keycap 6", - slug: "keycap_6", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "7️⃣": { - name: "keycap 7", - slug: "keycap_7", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "8️⃣": { - name: "keycap 8", - slug: "keycap_8", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "9️⃣": { - name: "keycap 9", - slug: "keycap_9", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔟": { - name: "keycap 10", - slug: "keycap_10", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔠": { - name: "input latin uppercase", - slug: "input_latin_uppercase", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔡": { - name: "input latin lowercase", - slug: "input_latin_lowercase", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔢": { - name: "input numbers", - slug: "input_numbers", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔣": { - name: "input symbols", - slug: "input_symbols", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔤": { - name: "input latin letters", - slug: "input_latin_letters", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🅰️": { - name: "A button (blood type)", - slug: "a_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🆎": { - name: "AB button (blood type)", - slug: "ab_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🅱️": { - name: "B button (blood type)", - slug: "b_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🆑": { - name: "CL button", - slug: "cl_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🆒": { - name: "COOL button", - slug: "cool_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🆓": { - name: "FREE button", - slug: "free_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "ℹ️": { - name: "information", - slug: "information", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🆔": { - name: "ID button", - slug: "id_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "Ⓜ️": { - name: "circled M", - slug: "circled_m", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🆕": { - name: "NEW button", - slug: "new_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🆖": { - name: "NG button", - slug: "ng_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🅾️": { - name: "O button (blood type)", - slug: "o_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🆗": { - name: "OK button", - slug: "ok_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🅿️": { - name: "P button", - slug: "p_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🆘": { - name: "SOS button", - slug: "sos_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🆙": { - name: "UP! button", - slug: "up_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🆚": { - name: "VS button", - slug: "vs_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈁": { - name: "Japanese “here” button", - slug: "japanese_here_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈂️": { - name: "Japanese “service charge” button", - slug: "japanese_service_charge_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈷️": { - name: "Japanese “monthly amount” button", - slug: "japanese_monthly_amount_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈶": { - name: "Japanese “not free of charge” button", - slug: "japanese_not_free_of_charge_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈯": { - name: "Japanese “reserved” button", - slug: "japanese_reserved_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🉐": { - name: "Japanese “bargain” button", - slug: "japanese_bargain_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈹": { - name: "Japanese “discount” button", - slug: "japanese_discount_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈚": { - name: "Japanese “free of charge” button", - slug: "japanese_free_of_charge_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈲": { - name: "Japanese “prohibited” button", - slug: "japanese_prohibited_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🉑": { - name: "Japanese “acceptable” button", - slug: "japanese_acceptable_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈸": { - name: "Japanese “application” button", - slug: "japanese_application_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈴": { - name: "Japanese “passing grade” button", - slug: "japanese_passing_grade_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈳": { - name: "Japanese “vacancy” button", - slug: "japanese_vacancy_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "㊗️": { - name: "Japanese “congratulations” button", - slug: "japanese_congratulations_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "㊙️": { - name: "Japanese “secret” button", - slug: "japanese_secret_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈺": { - name: "Japanese “open for business” button", - slug: "japanese_open_for_business_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🈵": { - name: "Japanese “no vacancy” button", - slug: "japanese_no_vacancy_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔴": { - name: "red circle", - slug: "red_circle", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🟠": { - name: "orange circle", - slug: "orange_circle", - group: "Symbols", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🟡": { - name: "yellow circle", - slug: "yellow_circle", - group: "Symbols", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🟢": { - name: "green circle", - slug: "green_circle", - group: "Symbols", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🔵": { - name: "blue circle", - slug: "blue_circle", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🟣": { - name: "purple circle", - slug: "purple_circle", - group: "Symbols", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🟤": { - name: "brown circle", - slug: "brown_circle", - group: "Symbols", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "⚫": { - name: "black circle", - slug: "black_circle", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⚪": { - name: "white circle", - slug: "white_circle", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🟥": { - name: "red square", - slug: "red_square", - group: "Symbols", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🟧": { - name: "orange square", - slug: "orange_square", - group: "Symbols", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🟨": { - name: "yellow square", - slug: "yellow_square", - group: "Symbols", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🟩": { - name: "green square", - slug: "green_square", - group: "Symbols", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🟦": { - name: "blue square", - slug: "blue_square", - group: "Symbols", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🟪": { - name: "purple square", - slug: "purple_square", - group: "Symbols", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "🟫": { - name: "brown square", - slug: "brown_square", - group: "Symbols", - emoji_version: "12.0", - unicode_version: "12.0", - skin_tone_support: false -}, - "⬛": { - name: "black large square", - slug: "black_large_square", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "⬜": { - name: "white large square", - slug: "white_large_square", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "◼️": { - name: "black medium square", - slug: "black_medium_square", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "◻️": { - name: "white medium square", - slug: "white_medium_square", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "◾": { - name: "black medium-small square", - slug: "black_medium_small_square", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "◽": { - name: "white medium-small square", - slug: "white_medium_small_square", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "▪️": { - name: "black small square", - slug: "black_small_square", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "▫️": { - name: "white small square", - slug: "white_small_square", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔶": { - name: "large orange diamond", - slug: "large_orange_diamond", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔷": { - name: "large blue diamond", - slug: "large_blue_diamond", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔸": { - name: "small orange diamond", - slug: "small_orange_diamond", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔹": { - name: "small blue diamond", - slug: "small_blue_diamond", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔺": { - name: "red triangle pointed up", - slug: "red_triangle_pointed_up", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔻": { - name: "red triangle pointed down", - slug: "red_triangle_pointed_down", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "💠": { - name: "diamond with a dot", - slug: "diamond_with_a_dot", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔘": { - name: "radio button", - slug: "radio_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔳": { - name: "white square button", - slug: "white_square_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🔲": { - name: "black square button", - slug: "black_square_button", - group: "Symbols", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏁": { - name: "chequered flag", - slug: "chequered_flag", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🚩": { - name: "triangular flag", - slug: "triangular_flag", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🎌": { - name: "crossed flags", - slug: "crossed_flags", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🏴": { - name: "black flag", - slug: "black_flag", - group: "Flags", - emoji_version: "1.0", - unicode_version: "1.0", - skin_tone_support: false -}, - "🏳️": { - name: "white flag", - slug: "white_flag", - group: "Flags", - emoji_version: "0.7", - unicode_version: "0.7", - skin_tone_support: false -}, - "🏳️‍🌈": { - name: "rainbow flag", - slug: "rainbow_flag", - group: "Flags", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "🏳️‍⚧️": { - name: "transgender flag", - slug: "transgender_flag", - group: "Flags", - emoji_version: "13.0", - unicode_version: "13.0", - skin_tone_support: false -}, - "🏴‍☠️": { - name: "pirate flag", - slug: "pirate_flag", - group: "Flags", - emoji_version: "11.0", - unicode_version: "11.0", - skin_tone_support: false -}, - "🇦🇨": { - name: "flag Ascension Island", - slug: "flag_ascension_island", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇩": { - name: "flag Andorra", - slug: "flag_andorra", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇪": { - name: "flag United Arab Emirates", - slug: "flag_united_arab_emirates", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇫": { - name: "flag Afghanistan", - slug: "flag_afghanistan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇬": { - name: "flag Antigua & Barbuda", - slug: "flag_antigua_barbuda", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇮": { - name: "flag Anguilla", - slug: "flag_anguilla", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇱": { - name: "flag Albania", - slug: "flag_albania", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇲": { - name: "flag Armenia", - slug: "flag_armenia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇴": { - name: "flag Angola", - slug: "flag_angola", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇶": { - name: "flag Antarctica", - slug: "flag_antarctica", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇷": { - name: "flag Argentina", - slug: "flag_argentina", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇸": { - name: "flag American Samoa", - slug: "flag_american_samoa", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇹": { - name: "flag Austria", - slug: "flag_austria", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇺": { - name: "flag Australia", - slug: "flag_australia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇼": { - name: "flag Aruba", - slug: "flag_aruba", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇽": { - name: "flag Åland Islands", - slug: "flag_aland_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇦🇿": { - name: "flag Azerbaijan", - slug: "flag_azerbaijan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇦": { - name: "flag Bosnia & Herzegovina", - slug: "flag_bosnia_herzegovina", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇧": { - name: "flag Barbados", - slug: "flag_barbados", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇩": { - name: "flag Bangladesh", - slug: "flag_bangladesh", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇪": { - name: "flag Belgium", - slug: "flag_belgium", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇫": { - name: "flag Burkina Faso", - slug: "flag_burkina_faso", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇬": { - name: "flag Bulgaria", - slug: "flag_bulgaria", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇭": { - name: "flag Bahrain", - slug: "flag_bahrain", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇮": { - name: "flag Burundi", - slug: "flag_burundi", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇯": { - name: "flag Benin", - slug: "flag_benin", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇱": { - name: "flag St. Barthélemy", - slug: "flag_st_barthelemy", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇲": { - name: "flag Bermuda", - slug: "flag_bermuda", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇳": { - name: "flag Brunei", - slug: "flag_brunei", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇴": { - name: "flag Bolivia", - slug: "flag_bolivia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇶": { - name: "flag Caribbean Netherlands", - slug: "flag_caribbean_netherlands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇷": { - name: "flag Brazil", - slug: "flag_brazil", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇸": { - name: "flag Bahamas", - slug: "flag_bahamas", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇹": { - name: "flag Bhutan", - slug: "flag_bhutan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇻": { - name: "flag Bouvet Island", - slug: "flag_bouvet_island", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇼": { - name: "flag Botswana", - slug: "flag_botswana", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇾": { - name: "flag Belarus", - slug: "flag_belarus", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇧🇿": { - name: "flag Belize", - slug: "flag_belize", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇦": { - name: "flag Canada", - slug: "flag_canada", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇨": { - name: "flag Cocos (Keeling) Islands", - slug: "flag_cocos_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇩": { - name: "flag Congo - Kinshasa", - slug: "flag_congo_kinshasa", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇫": { - name: "flag Central African Republic", - slug: "flag_central_african_republic", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇬": { - name: "flag Congo - Brazzaville", - slug: "flag_congo_brazzaville", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇭": { - name: "flag Switzerland", - slug: "flag_switzerland", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇮": { - name: "flag Côte d’Ivoire", - slug: "flag_cote_d_ivoire", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇰": { - name: "flag Cook Islands", - slug: "flag_cook_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇱": { - name: "flag Chile", - slug: "flag_chile", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇲": { - name: "flag Cameroon", - slug: "flag_cameroon", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇳": { - name: "flag China", - slug: "flag_china", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🇨🇴": { - name: "flag Colombia", - slug: "flag_colombia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇵": { - name: "flag Clipperton Island", - slug: "flag_clipperton_island", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇷": { - name: "flag Costa Rica", - slug: "flag_costa_rica", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇺": { - name: "flag Cuba", - slug: "flag_cuba", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇻": { - name: "flag Cape Verde", - slug: "flag_cape_verde", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇼": { - name: "flag Curaçao", - slug: "flag_curacao", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇽": { - name: "flag Christmas Island", - slug: "flag_christmas_island", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇾": { - name: "flag Cyprus", - slug: "flag_cyprus", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇨🇿": { - name: "flag Czechia", - slug: "flag_czechia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇩🇪": { - name: "flag Germany", - slug: "flag_germany", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🇩🇬": { - name: "flag Diego Garcia", - slug: "flag_diego_garcia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇩🇯": { - name: "flag Djibouti", - slug: "flag_djibouti", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇩🇰": { - name: "flag Denmark", - slug: "flag_denmark", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇩🇲": { - name: "flag Dominica", - slug: "flag_dominica", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇩🇴": { - name: "flag Dominican Republic", - slug: "flag_dominican_republic", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇩🇿": { - name: "flag Algeria", - slug: "flag_algeria", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇪🇦": { - name: "flag Ceuta & Melilla", - slug: "flag_ceuta_melilla", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇪🇨": { - name: "flag Ecuador", - slug: "flag_ecuador", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇪🇪": { - name: "flag Estonia", - slug: "flag_estonia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇪🇬": { - name: "flag Egypt", - slug: "flag_egypt", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇪🇭": { - name: "flag Western Sahara", - slug: "flag_western_sahara", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇪🇷": { - name: "flag Eritrea", - slug: "flag_eritrea", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇪🇸": { - name: "flag Spain", - slug: "flag_spain", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🇪🇹": { - name: "flag Ethiopia", - slug: "flag_ethiopia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇪🇺": { - name: "flag European Union", - slug: "flag_european_union", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇫🇮": { - name: "flag Finland", - slug: "flag_finland", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇫🇯": { - name: "flag Fiji", - slug: "flag_fiji", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇫🇰": { - name: "flag Falkland Islands", - slug: "flag_falkland_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇫🇲": { - name: "flag Micronesia", - slug: "flag_micronesia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇫🇴": { - name: "flag Faroe Islands", - slug: "flag_faroe_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇫🇷": { - name: "flag France", - slug: "flag_france", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🇬🇦": { - name: "flag Gabon", - slug: "flag_gabon", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇧": { - name: "flag United Kingdom", - slug: "flag_united_kingdom", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🇬🇩": { - name: "flag Grenada", - slug: "flag_grenada", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇪": { - name: "flag Georgia", - slug: "flag_georgia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇫": { - name: "flag French Guiana", - slug: "flag_french_guiana", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇬": { - name: "flag Guernsey", - slug: "flag_guernsey", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇭": { - name: "flag Ghana", - slug: "flag_ghana", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇮": { - name: "flag Gibraltar", - slug: "flag_gibraltar", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇱": { - name: "flag Greenland", - slug: "flag_greenland", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇲": { - name: "flag Gambia", - slug: "flag_gambia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇳": { - name: "flag Guinea", - slug: "flag_guinea", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇵": { - name: "flag Guadeloupe", - slug: "flag_guadeloupe", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇶": { - name: "flag Equatorial Guinea", - slug: "flag_equatorial_guinea", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇷": { - name: "flag Greece", - slug: "flag_greece", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇸": { - name: "flag South Georgia & South Sandwich Islands", - slug: "flag_south_georgia_south_sandwich_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇹": { - name: "flag Guatemala", - slug: "flag_guatemala", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇺": { - name: "flag Guam", - slug: "flag_guam", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇼": { - name: "flag Guinea-Bissau", - slug: "flag_guinea_bissau", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇬🇾": { - name: "flag Guyana", - slug: "flag_guyana", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇭🇰": { - name: "flag Hong Kong SAR China", - slug: "flag_hong_kong_sar_china", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇭🇲": { - name: "flag Heard & McDonald Islands", - slug: "flag_heard_mcdonald_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇭🇳": { - name: "flag Honduras", - slug: "flag_honduras", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇭🇷": { - name: "flag Croatia", - slug: "flag_croatia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇭🇹": { - name: "flag Haiti", - slug: "flag_haiti", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇭🇺": { - name: "flag Hungary", - slug: "flag_hungary", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇮🇨": { - name: "flag Canary Islands", - slug: "flag_canary_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇮🇩": { - name: "flag Indonesia", - slug: "flag_indonesia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇮🇪": { - name: "flag Ireland", - slug: "flag_ireland", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇮🇱": { - name: "flag Israel", - slug: "flag_israel", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇮🇲": { - name: "flag Isle of Man", - slug: "flag_isle_of_man", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇮🇳": { - name: "flag India", - slug: "flag_india", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇮🇴": { - name: "flag British Indian Ocean Territory", - slug: "flag_british_indian_ocean_territory", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇮🇶": { - name: "flag Iraq", - slug: "flag_iraq", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇮🇷": { - name: "flag Iran", - slug: "flag_iran", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇮🇸": { - name: "flag Iceland", - slug: "flag_iceland", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇮🇹": { - name: "flag Italy", - slug: "flag_italy", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🇯🇪": { - name: "flag Jersey", - slug: "flag_jersey", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇯🇲": { - name: "flag Jamaica", - slug: "flag_jamaica", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇯🇴": { - name: "flag Jordan", - slug: "flag_jordan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇯🇵": { - name: "flag Japan", - slug: "flag_japan", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🇰🇪": { - name: "flag Kenya", - slug: "flag_kenya", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇰🇬": { - name: "flag Kyrgyzstan", - slug: "flag_kyrgyzstan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇰🇭": { - name: "flag Cambodia", - slug: "flag_cambodia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇰🇮": { - name: "flag Kiribati", - slug: "flag_kiribati", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇰🇲": { - name: "flag Comoros", - slug: "flag_comoros", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇰🇳": { - name: "flag St. Kitts & Nevis", - slug: "flag_st_kitts_nevis", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇰🇵": { - name: "flag North Korea", - slug: "flag_north_korea", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇰🇷": { - name: "flag South Korea", - slug: "flag_south_korea", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🇰🇼": { - name: "flag Kuwait", - slug: "flag_kuwait", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇰🇾": { - name: "flag Cayman Islands", - slug: "flag_cayman_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇰🇿": { - name: "flag Kazakhstan", - slug: "flag_kazakhstan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇱🇦": { - name: "flag Laos", - slug: "flag_laos", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇱🇧": { - name: "flag Lebanon", - slug: "flag_lebanon", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇱🇨": { - name: "flag St. Lucia", - slug: "flag_st_lucia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇱🇮": { - name: "flag Liechtenstein", - slug: "flag_liechtenstein", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇱🇰": { - name: "flag Sri Lanka", - slug: "flag_sri_lanka", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇱🇷": { - name: "flag Liberia", - slug: "flag_liberia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇱🇸": { - name: "flag Lesotho", - slug: "flag_lesotho", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇱🇹": { - name: "flag Lithuania", - slug: "flag_lithuania", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇱🇺": { - name: "flag Luxembourg", - slug: "flag_luxembourg", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇱🇻": { - name: "flag Latvia", - slug: "flag_latvia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇱🇾": { - name: "flag Libya", - slug: "flag_libya", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇦": { - name: "flag Morocco", - slug: "flag_morocco", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇨": { - name: "flag Monaco", - slug: "flag_monaco", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇩": { - name: "flag Moldova", - slug: "flag_moldova", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇪": { - name: "flag Montenegro", - slug: "flag_montenegro", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇫": { - name: "flag St. Martin", - slug: "flag_st_martin", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇬": { - name: "flag Madagascar", - slug: "flag_madagascar", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇭": { - name: "flag Marshall Islands", - slug: "flag_marshall_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇰": { - name: "flag North Macedonia", - slug: "flag_north_macedonia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇱": { - name: "flag Mali", - slug: "flag_mali", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇲": { - name: "flag Myanmar (Burma)", - slug: "flag_myanmar", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇳": { - name: "flag Mongolia", - slug: "flag_mongolia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇴": { - name: "flag Macao SAR China", - slug: "flag_macao_sar_china", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇵": { - name: "flag Northern Mariana Islands", - slug: "flag_northern_mariana_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇶": { - name: "flag Martinique", - slug: "flag_martinique", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇷": { - name: "flag Mauritania", - slug: "flag_mauritania", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇸": { - name: "flag Montserrat", - slug: "flag_montserrat", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇹": { - name: "flag Malta", - slug: "flag_malta", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇺": { - name: "flag Mauritius", - slug: "flag_mauritius", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇻": { - name: "flag Maldives", - slug: "flag_maldives", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇼": { - name: "flag Malawi", - slug: "flag_malawi", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇽": { - name: "flag Mexico", - slug: "flag_mexico", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇾": { - name: "flag Malaysia", - slug: "flag_malaysia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇲🇿": { - name: "flag Mozambique", - slug: "flag_mozambique", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇳🇦": { - name: "flag Namibia", - slug: "flag_namibia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇳🇨": { - name: "flag New Caledonia", - slug: "flag_new_caledonia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇳🇪": { - name: "flag Niger", - slug: "flag_niger", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇳🇫": { - name: "flag Norfolk Island", - slug: "flag_norfolk_island", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇳🇬": { - name: "flag Nigeria", - slug: "flag_nigeria", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇳🇮": { - name: "flag Nicaragua", - slug: "flag_nicaragua", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇳🇱": { - name: "flag Netherlands", - slug: "flag_netherlands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇳🇴": { - name: "flag Norway", - slug: "flag_norway", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇳🇵": { - name: "flag Nepal", - slug: "flag_nepal", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇳🇷": { - name: "flag Nauru", - slug: "flag_nauru", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇳🇺": { - name: "flag Niue", - slug: "flag_niue", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇳🇿": { - name: "flag New Zealand", - slug: "flag_new_zealand", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇴🇲": { - name: "flag Oman", - slug: "flag_oman", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇦": { - name: "flag Panama", - slug: "flag_panama", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇪": { - name: "flag Peru", - slug: "flag_peru", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇫": { - name: "flag French Polynesia", - slug: "flag_french_polynesia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇬": { - name: "flag Papua New Guinea", - slug: "flag_papua_new_guinea", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇭": { - name: "flag Philippines", - slug: "flag_philippines", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇰": { - name: "flag Pakistan", - slug: "flag_pakistan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇱": { - name: "flag Poland", - slug: "flag_poland", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇲": { - name: "flag St. Pierre & Miquelon", - slug: "flag_st_pierre_miquelon", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇳": { - name: "flag Pitcairn Islands", - slug: "flag_pitcairn_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇷": { - name: "flag Puerto Rico", - slug: "flag_puerto_rico", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇸": { - name: "flag Palestinian Territories", - slug: "flag_palestinian_territories", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇹": { - name: "flag Portugal", - slug: "flag_portugal", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇼": { - name: "flag Palau", - slug: "flag_palau", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇵🇾": { - name: "flag Paraguay", - slug: "flag_paraguay", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇶🇦": { - name: "flag Qatar", - slug: "flag_qatar", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇷🇪": { - name: "flag Réunion", - slug: "flag_reunion", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇷🇴": { - name: "flag Romania", - slug: "flag_romania", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇷🇸": { - name: "flag Serbia", - slug: "flag_serbia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇷🇺": { - name: "flag Russia", - slug: "flag_russia", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🇷🇼": { - name: "flag Rwanda", - slug: "flag_rwanda", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇦": { - name: "flag Saudi Arabia", - slug: "flag_saudi_arabia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇧": { - name: "flag Solomon Islands", - slug: "flag_solomon_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇨": { - name: "flag Seychelles", - slug: "flag_seychelles", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇩": { - name: "flag Sudan", - slug: "flag_sudan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇪": { - name: "flag Sweden", - slug: "flag_sweden", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇬": { - name: "flag Singapore", - slug: "flag_singapore", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇭": { - name: "flag St. Helena", - slug: "flag_st_helena", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇮": { - name: "flag Slovenia", - slug: "flag_slovenia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇯": { - name: "flag Svalbard & Jan Mayen", - slug: "flag_svalbard_jan_mayen", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇰": { - name: "flag Slovakia", - slug: "flag_slovakia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇱": { - name: "flag Sierra Leone", - slug: "flag_sierra_leone", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇲": { - name: "flag San Marino", - slug: "flag_san_marino", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇳": { - name: "flag Senegal", - slug: "flag_senegal", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇴": { - name: "flag Somalia", - slug: "flag_somalia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇷": { - name: "flag Suriname", - slug: "flag_suriname", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇸": { - name: "flag South Sudan", - slug: "flag_south_sudan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇹": { - name: "flag São Tomé & Príncipe", - slug: "flag_sao_tome_principe", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇻": { - name: "flag El Salvador", - slug: "flag_el_salvador", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇽": { - name: "flag Sint Maarten", - slug: "flag_sint_maarten", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇾": { - name: "flag Syria", - slug: "flag_syria", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇸🇿": { - name: "flag Eswatini", - slug: "flag_eswatini", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇦": { - name: "flag Tristan da Cunha", - slug: "flag_tristan_da_cunha", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇨": { - name: "flag Turks & Caicos Islands", - slug: "flag_turks_caicos_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇩": { - name: "flag Chad", - slug: "flag_chad", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇫": { - name: "flag French Southern Territories", - slug: "flag_french_southern_territories", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇬": { - name: "flag Togo", - slug: "flag_togo", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇭": { - name: "flag Thailand", - slug: "flag_thailand", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇯": { - name: "flag Tajikistan", - slug: "flag_tajikistan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇰": { - name: "flag Tokelau", - slug: "flag_tokelau", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇱": { - name: "flag Timor-Leste", - slug: "flag_timor_leste", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇲": { - name: "flag Turkmenistan", - slug: "flag_turkmenistan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇳": { - name: "flag Tunisia", - slug: "flag_tunisia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇴": { - name: "flag Tonga", - slug: "flag_tonga", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇷": { - name: "flag Turkey", - slug: "flag_turkey", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇹": { - name: "flag Trinidad & Tobago", - slug: "flag_trinidad_tobago", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇻": { - name: "flag Tuvalu", - slug: "flag_tuvalu", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇼": { - name: "flag Taiwan", - slug: "flag_taiwan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇹🇿": { - name: "flag Tanzania", - slug: "flag_tanzania", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇺🇦": { - name: "flag Ukraine", - slug: "flag_ukraine", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇺🇬": { - name: "flag Uganda", - slug: "flag_uganda", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇺🇲": { - name: "flag U.S. Outlying Islands", - slug: "flag_u_s_outlying_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇺🇳": { - name: "flag United Nations", - slug: "flag_united_nations", - group: "Flags", - emoji_version: "4.0", - unicode_version: "4.0", - skin_tone_support: false -}, - "🇺🇸": { - name: "flag United States", - slug: "flag_united_states", - group: "Flags", - emoji_version: "0.6", - unicode_version: "0.6", - skin_tone_support: false -}, - "🇺🇾": { - name: "flag Uruguay", - slug: "flag_uruguay", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇺🇿": { - name: "flag Uzbekistan", - slug: "flag_uzbekistan", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇻🇦": { - name: "flag Vatican City", - slug: "flag_vatican_city", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇻🇨": { - name: "flag St. Vincent & Grenadines", - slug: "flag_st_vincent_grenadines", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇻🇪": { - name: "flag Venezuela", - slug: "flag_venezuela", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇻🇬": { - name: "flag British Virgin Islands", - slug: "flag_british_virgin_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇻🇮": { - name: "flag U.S. Virgin Islands", - slug: "flag_u_s_virgin_islands", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇻🇳": { - name: "flag Vietnam", - slug: "flag_vietnam", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇻🇺": { - name: "flag Vanuatu", - slug: "flag_vanuatu", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇼🇫": { - name: "flag Wallis & Futuna", - slug: "flag_wallis_futuna", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇼🇸": { - name: "flag Samoa", - slug: "flag_samoa", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇽🇰": { - name: "flag Kosovo", - slug: "flag_kosovo", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇾🇪": { - name: "flag Yemen", - slug: "flag_yemen", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇾🇹": { - name: "flag Mayotte", - slug: "flag_mayotte", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇿🇦": { - name: "flag South Africa", - slug: "flag_south_africa", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇿🇲": { - name: "flag Zambia", - slug: "flag_zambia", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🇿🇼": { - name: "flag Zimbabwe", - slug: "flag_zimbabwe", - group: "Flags", - emoji_version: "2.0", - unicode_version: "2.0", - skin_tone_support: false -}, - "🏴󠁧󠁢󠁥󠁮󠁧󠁿": { - name: "flag England", - slug: "flag_england", - group: "Flags", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🏴󠁧󠁢󠁳󠁣󠁴󠁿": { - name: "flag Scotland", - slug: "flag_scotland", - group: "Flags", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false -}, - "🏴󠁧󠁢󠁷󠁬󠁳󠁿": { - name: "flag Wales", - slug: "flag_wales", - group: "Flags", - emoji_version: "5.0", - unicode_version: "5.0", - skin_tone_support: false +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); } + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } // Detect buggy property enumeration order in older V8 versions. + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + + + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + + test1[5] = 'de'; + + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + + + var test2 = {}; + + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + + if (order2.join('') !== '0123456789') { + return false; + } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + + + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + + if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +var objectAssign = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; }; -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +/** @license React v17.0.1 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +createCommonjsModule(function (module, exports) { + +var n = 60103, + p = 60106; + +exports.Fragment = 60107; +exports.StrictMode = 60108; +exports.Profiler = 60114; +var q = 60109, + r = 60110, + t = 60112; +exports.Suspense = 60113; +var u = 60115, + v = 60116; + +if ("function" === typeof Symbol && Symbol.for) { + var w = Symbol.for; + n = w("react.element"); + p = w("react.portal"); + exports.Fragment = w("react.fragment"); + exports.StrictMode = w("react.strict_mode"); + exports.Profiler = w("react.profiler"); + q = w("react.provider"); + r = w("react.context"); + t = w("react.forward_ref"); + exports.Suspense = w("react.suspense"); + u = w("react.memo"); + v = w("react.lazy"); +} + +var x = "function" === typeof Symbol && Symbol.iterator; + +function y(a) { + if (null === a || "object" !== typeof a) return null; + a = x && a[x] || a["@@iterator"]; + return "function" === typeof a ? a : null; +} + +function z(a) { + for (var b = "https://reactjs.org/docs/error-decoder.html?invariant=" + a, c = 1; c < arguments.length; c++) b += "&args[]=" + encodeURIComponent(arguments[c]); + + return "Minified React error #" + a + "; visit " + b + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."; +} + +var A = { + isMounted: function () { + return !1; + }, + enqueueForceUpdate: function () {}, + enqueueReplaceState: function () {}, + enqueueSetState: function () {} +}, + B = {}; + +function C(a, b, c) { + this.props = a; + this.context = b; + this.refs = B; + this.updater = c || A; +} + +C.prototype.isReactComponent = {}; + +C.prototype.setState = function (a, b) { + if ("object" !== typeof a && "function" !== typeof a && null != a) throw Error(z(85)); + this.updater.enqueueSetState(this, a, b, "setState"); +}; + +C.prototype.forceUpdate = function (a) { + this.updater.enqueueForceUpdate(this, a, "forceUpdate"); +}; + +function D() {} + +D.prototype = C.prototype; + +function E(a, b, c) { + this.props = a; + this.context = b; + this.refs = B; + this.updater = c || A; +} + +var F = E.prototype = new D(); +F.constructor = E; +objectAssign(F, C.prototype); +F.isPureReactComponent = !0; +var G = { + current: null +}, + H = Object.prototype.hasOwnProperty, + I = { + key: !0, + ref: !0, + __self: !0, + __source: !0 +}; + +function J(a, b, c) { + var e, + d = {}, + k = null, + h = null; + if (null != b) for (e in void 0 !== b.ref && (h = b.ref), void 0 !== b.key && (k = "" + b.key), b) H.call(b, e) && !I.hasOwnProperty(e) && (d[e] = b[e]); + var g = arguments.length - 2; + if (1 === g) d.children = c;else if (1 < g) { + for (var f = Array(g), m = 0; m < g; m++) f[m] = arguments[m + 2]; + + d.children = f; + } + if (a && a.defaultProps) for (e in g = a.defaultProps, g) void 0 === d[e] && (d[e] = g[e]); + return { + $$typeof: n, + type: a, + key: k, + ref: h, + props: d, + _owner: G.current + }; +} + +function K(a, b) { + return { + $$typeof: n, + type: a.type, + key: b, + ref: a.ref, + props: a.props, + _owner: a._owner + }; +} + +function L(a) { + return "object" === typeof a && null !== a && a.$$typeof === n; +} + +function escape(a) { + var b = { + "=": "=0", + ":": "=2" + }; + return "$" + a.replace(/[=:]/g, function (a) { + return b[a]; + }); +} + +var M = /\/+/g; + +function N(a, b) { + return "object" === typeof a && null !== a && null != a.key ? escape("" + a.key) : b.toString(36); +} + +function O(a, b, c, e, d) { + var k = typeof a; + if ("undefined" === k || "boolean" === k) a = null; + var h = !1; + if (null === a) h = !0;else switch (k) { + case "string": + case "number": + h = !0; + break; + + case "object": + switch (a.$$typeof) { + case n: + case p: + h = !0; + } + + } + if (h) return h = a, d = d(h), a = "" === e ? "." + N(h, 0) : e, Array.isArray(d) ? (c = "", null != a && (c = a.replace(M, "$&/") + "/"), O(d, b, c, "", function (a) { + return a; + })) : null != d && (L(d) && (d = K(d, c + (!d.key || h && h.key === d.key ? "" : ("" + d.key).replace(M, "$&/") + "/") + a)), b.push(d)), 1; + h = 0; + e = "" === e ? "." : e + ":"; + if (Array.isArray(a)) for (var g = 0; g < a.length; g++) { + k = a[g]; + var f = e + N(k, g); + h += O(k, b, c, f, d); + } else if (f = y(a), "function" === typeof f) for (a = f.call(a), g = 0; !(k = a.next()).done;) k = k.value, f = e + N(k, g++), h += O(k, b, c, f, d);else if ("object" === k) throw b = "" + a, Error(z(31, "[object Object]" === b ? "object with keys {" + Object.keys(a).join(", ") + "}" : b)); + return h; +} + +function P(a, b, c) { + if (null == a) return a; + var e = [], + d = 0; + O(a, e, "", "", function (a) { + return b.call(c, a, d++); + }); + return e; +} + +function Q(a) { + if (-1 === a._status) { + var b = a._result; + b = b(); + a._status = 0; + a._result = b; + b.then(function (b) { + 0 === a._status && (b = b.default, a._status = 1, a._result = b); + }, function (b) { + 0 === a._status && (a._status = 2, a._result = b); + }); + } + + if (1 === a._status) return a._result; + throw a._result; +} + +var R = { + current: null +}; + +function S() { + var a = R.current; + if (null === a) throw Error(z(321)); + return a; +} + +var T = { + ReactCurrentDispatcher: R, + ReactCurrentBatchConfig: { + transition: 0 + }, + ReactCurrentOwner: G, + IsSomeRendererActing: { + current: !1 + }, + assign: objectAssign +}; +exports.Children = { + map: P, + forEach: function (a, b, c) { + P(a, function () { + b.apply(this, arguments); + }, c); + }, + count: function (a) { + var b = 0; + P(a, function () { + b++; + }); + return b; + }, + toArray: function (a) { + return P(a, function (a) { + return a; + }) || []; + }, + only: function (a) { + if (!L(a)) throw Error(z(143)); + return a; + } +}; +exports.Component = C; +exports.PureComponent = E; +exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = T; + +exports.cloneElement = function (a, b, c) { + if (null === a || void 0 === a) throw Error(z(267, a)); + var e = objectAssign({}, a.props), + d = a.key, + k = a.ref, + h = a._owner; + + if (null != b) { + void 0 !== b.ref && (k = b.ref, h = G.current); + void 0 !== b.key && (d = "" + b.key); + if (a.type && a.type.defaultProps) var g = a.type.defaultProps; + + for (f in b) H.call(b, f) && !I.hasOwnProperty(f) && (e[f] = void 0 === b[f] && void 0 !== g ? g[f] : b[f]); + } + + var f = arguments.length - 2; + if (1 === f) e.children = c;else if (1 < f) { + g = Array(f); + + for (var m = 0; m < f; m++) g[m] = arguments[m + 2]; + + e.children = g; + } + return { + $$typeof: n, + type: a.type, + key: d, + ref: k, + props: e, + _owner: h + }; +}; + +exports.createContext = function (a, b) { + void 0 === b && (b = null); + a = { + $$typeof: r, + _calculateChangedBits: b, + _currentValue: a, + _currentValue2: a, + _threadCount: 0, + Provider: null, + Consumer: null + }; + a.Provider = { + $$typeof: q, + _context: a + }; + return a.Consumer = a; +}; + +exports.createElement = J; + +exports.createFactory = function (a) { + var b = J.bind(null, a); + b.type = a; + return b; +}; + +exports.createRef = function () { + return { + current: null + }; +}; + +exports.forwardRef = function (a) { + return { + $$typeof: t, + render: a + }; +}; + +exports.isValidElement = L; + +exports.lazy = function (a) { + return { + $$typeof: v, + _payload: { + _status: -1, + _result: a + }, + _init: Q + }; +}; + +exports.memo = function (a, b) { + return { + $$typeof: u, + type: a, + compare: void 0 === b ? null : b + }; +}; + +exports.useCallback = function (a, b) { + return S().useCallback(a, b); +}; + +exports.useContext = function (a, b) { + return S().useContext(a, b); +}; + +exports.useDebugValue = function () {}; + +exports.useEffect = function (a, b) { + return S().useEffect(a, b); +}; + +exports.useImperativeHandle = function (a, b, c) { + return S().useImperativeHandle(a, b, c); +}; + +exports.useLayoutEffect = function (a, b) { + return S().useLayoutEffect(a, b); +}; + +exports.useMemo = function (a, b) { + return S().useMemo(a, b); +}; + +exports.useReducer = function (a, b, c) { + return S().useReducer(a, b, c); +}; + +exports.useRef = function (a) { + return S().useRef(a); +}; + +exports.useState = function (a) { + return S().useState(a); +}; + +exports.version = "17.0.1"; +}); + +/** @license React v17.0.1 + * react.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var react_development = createCommonjsModule(function (module, exports) { + +{ + (function () { + + var _assign = objectAssign; // TODO: this is special because it gets imported during build. + + + var ReactVersion = '17.0.1'; // ATTENTION + // When adding new symbols to this file, + // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' + // The Symbol used to tag the ReactElement-like types. If there is no native Symbol + // nor polyfill, then a plain number is used for performance. + + var REACT_ELEMENT_TYPE = 0xeac7; + var REACT_PORTAL_TYPE = 0xeaca; + exports.Fragment = 0xeacb; + exports.StrictMode = 0xeacc; + exports.Profiler = 0xead2; + var REACT_PROVIDER_TYPE = 0xeacd; + var REACT_CONTEXT_TYPE = 0xeace; + var REACT_FORWARD_REF_TYPE = 0xead0; + exports.Suspense = 0xead1; + var REACT_SUSPENSE_LIST_TYPE = 0xead8; + var REACT_MEMO_TYPE = 0xead3; + var REACT_LAZY_TYPE = 0xead4; + var REACT_BLOCK_TYPE = 0xead9; + var REACT_SERVER_BLOCK_TYPE = 0xeada; + var REACT_FUNDAMENTAL_TYPE = 0xead5; + var REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1; + var REACT_LEGACY_HIDDEN_TYPE = 0xeae3; + + if (typeof Symbol === 'function' && Symbol.for) { + var symbolFor = Symbol.for; + REACT_ELEMENT_TYPE = symbolFor('react.element'); + REACT_PORTAL_TYPE = symbolFor('react.portal'); + exports.Fragment = symbolFor('react.fragment'); + exports.StrictMode = symbolFor('react.strict_mode'); + exports.Profiler = symbolFor('react.profiler'); + REACT_PROVIDER_TYPE = symbolFor('react.provider'); + REACT_CONTEXT_TYPE = symbolFor('react.context'); + REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref'); + exports.Suspense = symbolFor('react.suspense'); + REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list'); + REACT_MEMO_TYPE = symbolFor('react.memo'); + REACT_LAZY_TYPE = symbolFor('react.lazy'); + REACT_BLOCK_TYPE = symbolFor('react.block'); + REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block'); + REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental'); + symbolFor('react.scope'); + symbolFor('react.opaque.id'); + REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode'); + symbolFor('react.offscreen'); + REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden'); + } + + var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; + + function getIteratorFn(maybeIterable) { + if (maybeIterable === null || typeof maybeIterable !== 'object') { + return null; + } + + var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; + + if (typeof maybeIterator === 'function') { + return maybeIterator; + } + + return null; + } + /** + * Keeps track of the current dispatcher. + */ + + + var ReactCurrentDispatcher = { + /** + * @internal + * @type {ReactComponent} + */ + current: null + }; + /** + * Keeps track of the current batch's configuration such as how long an update + * should suspend for if it needs to. + */ + + var ReactCurrentBatchConfig = { + transition: 0 + }; + /** + * Keeps track of the current owner. + * + * The current owner is the component who should own any components that are + * currently being constructed. + */ + + var ReactCurrentOwner = { + /** + * @internal + * @type {ReactComponent} + */ + current: null + }; + var ReactDebugCurrentFrame = {}; + var currentExtraStackFrame = null; + + function setExtraStackFrame(stack) { + { + currentExtraStackFrame = stack; + } + } + + { + ReactDebugCurrentFrame.setExtraStackFrame = function (stack) { + { + currentExtraStackFrame = stack; + } + }; // Stack implementation injected by the current renderer. + + + ReactDebugCurrentFrame.getCurrentStack = null; + + ReactDebugCurrentFrame.getStackAddendum = function () { + var stack = ''; // Add an extra top frame while an element is being validated + + if (currentExtraStackFrame) { + stack += currentExtraStackFrame; + } // Delegate to the injected renderer-specific implementation + + + var impl = ReactDebugCurrentFrame.getCurrentStack; + + if (impl) { + stack += impl() || ''; + } + + return stack; + }; + } + /** + * Used by act() to track whether you're inside an act() scope. + */ + + var IsSomeRendererActing = { + current: false + }; + var ReactSharedInternals = { + ReactCurrentDispatcher: ReactCurrentDispatcher, + ReactCurrentBatchConfig: ReactCurrentBatchConfig, + ReactCurrentOwner: ReactCurrentOwner, + IsSomeRendererActing: IsSomeRendererActing, + // Used by renderers to avoid bundling object-assign twice in UMD bundles: + assign: _assign + }; + { + ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame; + } // by calls to these methods by a Babel plugin. + // + // In PROD (or in packages without access to React internals), + // they are left as they are instead. + + function warn(format) { + { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + printWarning('warn', format, args); + } + } + + function error(format) { + { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + printWarning('error', format, args); + } + } + + function printWarning(level, format, args) { + // When changing this logic, you might want to also + // update consoleWithStackDev.www.js as well. + { + var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + var stack = ReactDebugCurrentFrame.getStackAddendum(); + + if (stack !== '') { + format += '%s'; + args = args.concat([stack]); + } + + var argsWithFormat = args.map(function (item) { + return '' + item; + }); // Careful: RN currently depends on this prefix + + argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it + // breaks IE9: https://github.com/facebook/react/issues/13610 + // eslint-disable-next-line react-internal/no-production-logging + + Function.prototype.apply.call(console[level], console, argsWithFormat); + } + } + + var didWarnStateUpdateForUnmountedComponent = {}; + + function warnNoop(publicInstance, callerName) { + { + var _constructor = publicInstance.constructor; + var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass'; + var warningKey = componentName + "." + callerName; + + if (didWarnStateUpdateForUnmountedComponent[warningKey]) { + return; + } + + error("Can't call %s on a component that is not yet mounted. " + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName); + didWarnStateUpdateForUnmountedComponent[warningKey] = true; + } + } + /** + * This is the abstract API for an update queue. + */ + + + var ReactNoopUpdateQueue = { + /** + * Checks whether or not this composite component is mounted. + * @param {ReactClass} publicInstance The instance we want to test. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function (publicInstance) { + return false; + }, + + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ + enqueueForceUpdate: function (publicInstance, callback, callerName) { + warnNoop(publicInstance, 'forceUpdate'); + }, + + /** + * Replaces all of the state. Always use this or `setState` to mutate state. + * You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} completeState Next state. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ + enqueueReplaceState: function (publicInstance, completeState, callback, callerName) { + warnNoop(publicInstance, 'replaceState'); + }, + + /** + * Sets a subset of the state. This only exists because _pendingState is + * internal. This provides a merging strategy that is not available to deep + * properties which is confusing. TODO: Expose pendingState or don't use it + * during the merge. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} partialState Next partial state to be merged with state. + * @param {?function} callback Called after component is updated. + * @param {?string} Name of the calling function in the public API. + * @internal + */ + enqueueSetState: function (publicInstance, partialState, callback, callerName) { + warnNoop(publicInstance, 'setState'); + } + }; + var emptyObject = {}; + { + Object.freeze(emptyObject); + } + /** + * Base class helpers for the updating state of a component. + */ + + function Component(props, context, updater) { + this.props = props; + this.context = context; // If a component has string refs, we will assign a different object later. + + this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the + // renderer. + + this.updater = updater || ReactNoopUpdateQueue; + } + + Component.prototype.isReactComponent = {}; + /** + * Sets a subset of the state. Always use this to mutate + * state. You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * There is no guarantee that calls to `setState` will run synchronously, + * as they may eventually be batched together. You can provide an optional + * callback that will be executed when the call to setState is actually + * completed. + * + * When a function is provided to setState, it will be called at some point in + * the future (not synchronously). It will be called with the up to date + * component arguments (state, props, context). These values can be different + * from this.* because your function may be called after receiveProps but before + * shouldComponentUpdate, and this new state, props, and context will not yet be + * assigned to this. + * + * @param {object|function} partialState Next partial state or function to + * produce next partial state to be merged with current state. + * @param {?function} callback Called after state is updated. + * @final + * @protected + */ + + Component.prototype.setState = function (partialState, callback) { + if (!(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null)) { + { + throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables."); + } + } + + this.updater.enqueueSetState(this, partialState, callback, 'setState'); + }; + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {?function} callback Called after update is complete. + * @final + * @protected + */ + + + Component.prototype.forceUpdate = function (callback) { + this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); + }; + /** + * Deprecated APIs. These APIs used to exist on classic React classes but since + * we would like to deprecate them, we're not going to move them over to this + * modern base class. Instead, we define a getter that warns if it's accessed. + */ + + + { + var deprecatedAPIs = { + isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], + replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] + }; + + var defineDeprecationWarning = function (methodName, info) { + Object.defineProperty(Component.prototype, methodName, { + get: function () { + warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]); + return undefined; + } + }); + }; + + for (var fnName in deprecatedAPIs) { + if (deprecatedAPIs.hasOwnProperty(fnName)) { + defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); + } + } + } + + function ComponentDummy() {} + + ComponentDummy.prototype = Component.prototype; + /** + * Convenience component with default shallow equality check for sCU. + */ + + function PureComponent(props, context, updater) { + this.props = props; + this.context = context; // If a component has string refs, we will assign a different object later. + + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + + var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); + pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods. + + _assign(pureComponentPrototype, Component.prototype); + + pureComponentPrototype.isPureReactComponent = true; // an immutable object with a single mutable value + + function createRef() { + var refObject = { + current: null + }; + { + Object.seal(refObject); + } + return refObject; + } + + function getWrappedName(outerType, innerType, wrapperName) { + var functionName = innerType.displayName || innerType.name || ''; + return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName); + } + + function getContextName(type) { + return type.displayName || 'Context'; + } + + function getComponentName(type) { + if (type == null) { + // Host root, text node or just invalid type. + return null; + } + + { + if (typeof type.tag === 'number') { + error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.'); + } + } + + if (typeof type === 'function') { + return type.displayName || type.name || null; + } + + if (typeof type === 'string') { + return type; + } + + switch (type) { + case exports.Fragment: + return 'Fragment'; + + case REACT_PORTAL_TYPE: + return 'Portal'; + + case exports.Profiler: + return 'Profiler'; + + case exports.StrictMode: + return 'StrictMode'; + + case exports.Suspense: + return 'Suspense'; + + case REACT_SUSPENSE_LIST_TYPE: + return 'SuspenseList'; + } + + if (typeof type === 'object') { + switch (type.$$typeof) { + case REACT_CONTEXT_TYPE: + var context = type; + return getContextName(context) + '.Consumer'; + + case REACT_PROVIDER_TYPE: + var provider = type; + return getContextName(provider._context) + '.Provider'; + + case REACT_FORWARD_REF_TYPE: + return getWrappedName(type, type.render, 'ForwardRef'); + + case REACT_MEMO_TYPE: + return getComponentName(type.type); + + case REACT_BLOCK_TYPE: + return getComponentName(type._render); + + case REACT_LAZY_TYPE: + { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + + try { + return getComponentName(init(payload)); + } catch (x) { + return null; + } + } + } + } + + return null; + } + + var hasOwnProperty = Object.prototype.hasOwnProperty; + var RESERVED_PROPS = { + key: true, + ref: true, + __self: true, + __source: true + }; + var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs; + { + didWarnAboutStringRefs = {}; + } + + function hasValidRef(config) { + { + if (hasOwnProperty.call(config, 'ref')) { + var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; + + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.ref !== undefined; + } + + function hasValidKey(config) { + { + if (hasOwnProperty.call(config, 'key')) { + var getter = Object.getOwnPropertyDescriptor(config, 'key').get; + + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.key !== undefined; + } + + function defineKeyPropWarningGetter(props, displayName) { + var warnAboutAccessingKey = function () { + { + if (!specialPropKeyWarningShown) { + specialPropKeyWarningShown = true; + error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName); + } + } + }; + + warnAboutAccessingKey.isReactWarning = true; + Object.defineProperty(props, 'key', { + get: warnAboutAccessingKey, + configurable: true + }); + } + + function defineRefPropWarningGetter(props, displayName) { + var warnAboutAccessingRef = function () { + { + if (!specialPropRefWarningShown) { + specialPropRefWarningShown = true; + error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName); + } + } + }; + + warnAboutAccessingRef.isReactWarning = true; + Object.defineProperty(props, 'ref', { + get: warnAboutAccessingRef, + configurable: true + }); + } + + function warnIfStringRefCannotBeAutoConverted(config) { + { + if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) { + var componentName = getComponentName(ReactCurrentOwner.current.type); + + if (!didWarnAboutStringRefs[componentName]) { + error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref); + didWarnAboutStringRefs[componentName] = true; + } + } + } + } + /** + * Factory method to create a new React element. This no longer adheres to + * the class pattern, so do not use new to call it. Also, instanceof check + * will not work. Instead test $$typeof field against Symbol.for('react.element') to check + * if something is a React Element. + * + * @param {*} type + * @param {*} props + * @param {*} key + * @param {string|object} ref + * @param {*} owner + * @param {*} self A *temporary* helper to detect places where `this` is + * different from the `owner` when React.createElement is called, so that we + * can warn. We want to get rid of owner and replace string `ref`s with arrow + * functions, and as long as `this` and owner are the same, there will be no + * change in behavior. + * @param {*} source An annotation object (added by a transpiler or otherwise) + * indicating filename, line number, and/or other information. + * @internal + */ + + + var ReactElement = function (type, key, ref, self, source, owner, props) { + var element = { + // This tag allows us to uniquely identify this as a React Element + $$typeof: REACT_ELEMENT_TYPE, + // Built-in properties that belong on the element + type: type, + key: key, + ref: ref, + props: props, + // Record the component responsible for creating this element. + _owner: owner + }; + { + // The validation flag is currently mutative. We put it on + // an external backing store so that we can freeze the whole object. + // This can be replaced with a WeakMap once they are implemented in + // commonly used development environments. + element._store = {}; // To make comparing ReactElements easier for testing purposes, we make + // the validation flag non-enumerable (where possible, which should + // include every environment we run tests in), so the test framework + // ignores it. + + Object.defineProperty(element._store, 'validated', { + configurable: false, + enumerable: false, + writable: true, + value: false + }); // self and source are DEV only properties. + + Object.defineProperty(element, '_self', { + configurable: false, + enumerable: false, + writable: false, + value: self + }); // Two elements created in two different places should be considered + // equal for testing purposes and therefore we hide it from enumeration. + + Object.defineProperty(element, '_source', { + configurable: false, + enumerable: false, + writable: false, + value: source + }); + + if (Object.freeze) { + Object.freeze(element.props); + Object.freeze(element); + } + } + return element; + }; + /** + * Create and return a new ReactElement of the given type. + * See https://reactjs.org/docs/react-api.html#createelement + */ + + + function createElement(type, config, children) { + var propName; // Reserved names are extracted + + var props = {}; + var key = null; + var ref = null; + var self = null; + var source = null; + + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + { + warnIfStringRefCannotBeAutoConverted(config); + } + } + + if (hasValidKey(config)) { + key = '' + config.key; + } + + self = config.__self === undefined ? null : config.__self; + source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object + + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + props[propName] = config[propName]; + } + } + } // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + + + var childrenLength = arguments.length - 2; + + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + + { + if (Object.freeze) { + Object.freeze(childArray); + } + } + props.children = childArray; + } // Resolve default props + + + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; + + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } + } + } + + { + if (key || ref) { + var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; + + if (key) { + defineKeyPropWarningGetter(props, displayName); + } + + if (ref) { + defineRefPropWarningGetter(props, displayName); + } + } + } + return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); + } + + function cloneAndReplaceKey(oldElement, newKey) { + var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); + return newElement; + } + /** + * Clone and return a new ReactElement using element as the starting point. + * See https://reactjs.org/docs/react-api.html#cloneelement + */ + + + function cloneElement(element, config, children) { + if (!!(element === null || element === undefined)) { + { + throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + element + "."); + } + } + + var propName; // Original props are copied + + var props = _assign({}, element.props); // Reserved names are extracted + + + var key = element.key; + var ref = element.ref; // Self is preserved since the owner is preserved. + + var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a + // transpiler, and the original source is probably a better indicator of the + // true owner. + + var source = element._source; // Owner will be preserved, unless ref is overridden + + var owner = element._owner; + + if (config != null) { + if (hasValidRef(config)) { + // Silently steal the ref from the parent. + ref = config.ref; + owner = ReactCurrentOwner.current; + } + + if (hasValidKey(config)) { + key = '' + config.key; + } // Remaining properties override existing props + + + var defaultProps; + + if (element.type && element.type.defaultProps) { + defaultProps = element.type.defaultProps; + } + + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (config[propName] === undefined && defaultProps !== undefined) { + // Resolve default props + props[propName] = defaultProps[propName]; + } else { + props[propName] = config[propName]; + } + } + } + } // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + + + var childrenLength = arguments.length - 2; + + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + + props.children = childArray; + } + + return ReactElement(element.type, key, ref, self, source, owner, props); + } + /** + * Verifies the object is a ReactElement. + * See https://reactjs.org/docs/react-api.html#isvalidelement + * @param {?object} object + * @return {boolean} True if `object` is a ReactElement. + * @final + */ + + + function isValidElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + + var SEPARATOR = '.'; + var SUBSEPARATOR = ':'; + /** + * Escape and wrap key so it is safe to use as a reactid + * + * @param {string} key to be escaped. + * @return {string} the escaped key. + */ + + function escape(key) { + var escapeRegex = /[=:]/g; + var escaperLookup = { + '=': '=0', + ':': '=2' + }; + var escapedString = key.replace(escapeRegex, function (match) { + return escaperLookup[match]; + }); + return '$' + escapedString; + } + /** + * TODO: Test that a single child and an array with one item have the same key + * pattern. + */ + + + var didWarnAboutMaps = false; + var userProvidedKeyEscapeRegex = /\/+/g; + + function escapeUserProvidedKey(text) { + return text.replace(userProvidedKeyEscapeRegex, '$&/'); + } + /** + * Generate a key string that identifies a element within a set. + * + * @param {*} element A element that could contain a manual key. + * @param {number} index Index that is used if a manual key is not provided. + * @return {string} + */ + + + function getElementKey(element, index) { + // Do some typechecking here since we call this blindly. We want to ensure + // that we don't block potential future ES APIs. + if (typeof element === 'object' && element !== null && element.key != null) { + // Explicit key + return escape('' + element.key); + } // Implicit key determined by the index in the set + + + return index.toString(36); + } + + function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) { + var type = typeof children; + + if (type === 'undefined' || type === 'boolean') { + // All of the above are perceived as null. + children = null; + } + + var invokeCallback = false; + + if (children === null) { + invokeCallback = true; + } else { + switch (type) { + case 'string': + case 'number': + invokeCallback = true; + break; + + case 'object': + switch (children.$$typeof) { + case REACT_ELEMENT_TYPE: + case REACT_PORTAL_TYPE: + invokeCallback = true; + } + + } + } + + if (invokeCallback) { + var _child = children; + var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array + // so that it's consistent if the number of children grows: + + var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar; + + if (Array.isArray(mappedChild)) { + var escapedChildKey = ''; + + if (childKey != null) { + escapedChildKey = escapeUserProvidedKey(childKey) + '/'; + } + + mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) { + return c; + }); + } else if (mappedChild != null) { + if (isValidElement(mappedChild)) { + mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as + // traverseAllChildren used to do for objects as children + escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key + mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number + escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey); + } + + array.push(mappedChild); + } + + return 1; + } + + var child; + var nextName; + var subtreeCount = 0; // Count of children found in the current subtree. + + var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; + + if (Array.isArray(children)) { + for (var i = 0; i < children.length; i++) { + child = children[i]; + nextName = nextNamePrefix + getElementKey(child, i); + subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); + } + } else { + var iteratorFn = getIteratorFn(children); + + if (typeof iteratorFn === 'function') { + var iterableChildren = children; + { + // Warn about using Maps as children + if (iteratorFn === iterableChildren.entries) { + if (!didWarnAboutMaps) { + warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.'); + } + + didWarnAboutMaps = true; + } + } + var iterator = iteratorFn.call(iterableChildren); + var step; + var ii = 0; + + while (!(step = iterator.next()).done) { + child = step.value; + nextName = nextNamePrefix + getElementKey(child, ii++); + subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); + } + } else if (type === 'object') { + var childrenString = '' + children; + { + { + throw Error("Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + "). If you meant to render a collection of children, use an array instead."); + } + } + } + } + + return subtreeCount; + } + /** + * Maps children that are typically specified as `props.children`. + * + * See https://reactjs.org/docs/react-api.html#reactchildrenmap + * + * The provided mapFunction(child, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} func The map function. + * @param {*} context Context for mapFunction. + * @return {object} Object containing the ordered map of results. + */ + + + function mapChildren(children, func, context) { + if (children == null) { + return children; + } + + var result = []; + var count = 0; + mapIntoArray(children, result, '', '', function (child) { + return func.call(context, child, count++); + }); + return result; + } + /** + * Count the number of children that are typically specified as + * `props.children`. + * + * See https://reactjs.org/docs/react-api.html#reactchildrencount + * + * @param {?*} children Children tree container. + * @return {number} The number of children. + */ + + + function countChildren(children) { + var n = 0; + mapChildren(children, function () { + n++; // Don't return anything + }); + return n; + } + /** + * Iterates through children that are typically specified as `props.children`. + * + * See https://reactjs.org/docs/react-api.html#reactchildrenforeach + * + * The provided forEachFunc(child, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} forEachFunc + * @param {*} forEachContext Context for forEachContext. + */ + + + function forEachChildren(children, forEachFunc, forEachContext) { + mapChildren(children, function () { + forEachFunc.apply(this, arguments); // Don't return anything. + }, forEachContext); + } + /** + * Flatten a children object (typically specified as `props.children`) and + * return an array with appropriately re-keyed children. + * + * See https://reactjs.org/docs/react-api.html#reactchildrentoarray + */ + + + function toArray(children) { + return mapChildren(children, function (child) { + return child; + }) || []; + } + /** + * Returns the first child in a collection of children and verifies that there + * is only one child in the collection. + * + * See https://reactjs.org/docs/react-api.html#reactchildrenonly + * + * The current implementation of this function assumes that a single child gets + * passed without a wrapper, but the purpose of this helper function is to + * abstract away the particular structure of children. + * + * @param {?object} children Child collection structure. + * @return {ReactElement} The first and only `ReactElement` contained in the + * structure. + */ + + + function onlyChild(children) { + if (!isValidElement(children)) { + { + throw Error("React.Children.only expected to receive a single React element child."); + } + } + + return children; + } + + function createContext(defaultValue, calculateChangedBits) { + if (calculateChangedBits === undefined) { + calculateChangedBits = null; + } else { + { + if (calculateChangedBits !== null && typeof calculateChangedBits !== 'function') { + error('createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits); + } + } + } + + var context = { + $$typeof: REACT_CONTEXT_TYPE, + _calculateChangedBits: calculateChangedBits, + // As a workaround to support multiple concurrent renderers, we categorize + // some renderers as primary and others as secondary. We only expect + // there to be two concurrent renderers at most: React Native (primary) and + // Fabric (secondary); React DOM (primary) and React ART (secondary). + // Secondary renderers store their context values on separate fields. + _currentValue: defaultValue, + _currentValue2: defaultValue, + // Used to track how many concurrent renderers this context currently + // supports within in a single renderer. Such as parallel server rendering. + _threadCount: 0, + // These are circular + Provider: null, + Consumer: null + }; + context.Provider = { + $$typeof: REACT_PROVIDER_TYPE, + _context: context + }; + var hasWarnedAboutUsingNestedContextConsumers = false; + var hasWarnedAboutUsingConsumerProvider = false; + var hasWarnedAboutDisplayNameOnConsumer = false; + { + // A separate object, but proxies back to the original context object for + // backwards compatibility. It has a different $$typeof, so we can properly + // warn for the incorrect usage of Context as a Consumer. + var Consumer = { + $$typeof: REACT_CONTEXT_TYPE, + _context: context, + _calculateChangedBits: context._calculateChangedBits + }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here + + Object.defineProperties(Consumer, { + Provider: { + get: function () { + if (!hasWarnedAboutUsingConsumerProvider) { + hasWarnedAboutUsingConsumerProvider = true; + error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?'); + } + + return context.Provider; + }, + set: function (_Provider) { + context.Provider = _Provider; + } + }, + _currentValue: { + get: function () { + return context._currentValue; + }, + set: function (_currentValue) { + context._currentValue = _currentValue; + } + }, + _currentValue2: { + get: function () { + return context._currentValue2; + }, + set: function (_currentValue2) { + context._currentValue2 = _currentValue2; + } + }, + _threadCount: { + get: function () { + return context._threadCount; + }, + set: function (_threadCount) { + context._threadCount = _threadCount; + } + }, + Consumer: { + get: function () { + if (!hasWarnedAboutUsingNestedContextConsumers) { + hasWarnedAboutUsingNestedContextConsumers = true; + error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?'); + } + + return context.Consumer; + } + }, + displayName: { + get: function () { + return context.displayName; + }, + set: function (displayName) { + if (!hasWarnedAboutDisplayNameOnConsumer) { + warn('Setting `displayName` on Context.Consumer has no effect. ' + "You should set it directly on the context with Context.displayName = '%s'.", displayName); + hasWarnedAboutDisplayNameOnConsumer = true; + } + } + } + }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty + + context.Consumer = Consumer; + } + { + context._currentRenderer = null; + context._currentRenderer2 = null; + } + return context; + } + + var Uninitialized = -1; + var Pending = 0; + var Resolved = 1; + var Rejected = 2; + + function lazyInitializer(payload) { + if (payload._status === Uninitialized) { + var ctor = payload._result; + var thenable = ctor(); // Transition to the next state. + + var pending = payload; + pending._status = Pending; + pending._result = thenable; + thenable.then(function (moduleObject) { + if (payload._status === Pending) { + var defaultExport = moduleObject.default; + { + if (defaultExport === undefined) { + error('lazy: Expected the result of a dynamic import() call. ' + 'Instead received: %s\n\nYour code should look like: \n ' + // Break up imports to avoid accidentally parsing them as dependencies. + 'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))", moduleObject); + } + } // Transition to the next state. + + var resolved = payload; + resolved._status = Resolved; + resolved._result = defaultExport; + } + }, function (error) { + if (payload._status === Pending) { + // Transition to the next state. + var rejected = payload; + rejected._status = Rejected; + rejected._result = error; + } + }); + } + + if (payload._status === Resolved) { + return payload._result; + } else { + throw payload._result; + } + } + + function lazy(ctor) { + var payload = { + // We use these fields to store the result. + _status: -1, + _result: ctor + }; + var lazyType = { + $$typeof: REACT_LAZY_TYPE, + _payload: payload, + _init: lazyInitializer + }; + { + // In production, this would just set it on the object. + var defaultProps; + var propTypes; // $FlowFixMe + + Object.defineProperties(lazyType, { + defaultProps: { + configurable: true, + get: function () { + return defaultProps; + }, + set: function (newDefaultProps) { + error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); + defaultProps = newDefaultProps; // Match production behavior more closely: + // $FlowFixMe + + Object.defineProperty(lazyType, 'defaultProps', { + enumerable: true + }); + } + }, + propTypes: { + configurable: true, + get: function () { + return propTypes; + }, + set: function (newPropTypes) { + error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); + propTypes = newPropTypes; // Match production behavior more closely: + // $FlowFixMe + + Object.defineProperty(lazyType, 'propTypes', { + enumerable: true + }); + } + } + }); + } + return lazyType; + } + + function forwardRef(render) { + { + if (render != null && render.$$typeof === REACT_MEMO_TYPE) { + error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).'); + } else if (typeof render !== 'function') { + error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render); + } else { + if (render.length !== 0 && render.length !== 2) { + error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.'); + } + } + + if (render != null) { + if (render.defaultProps != null || render.propTypes != null) { + error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?'); + } + } + } + var elementType = { + $$typeof: REACT_FORWARD_REF_TYPE, + render: render + }; + { + var ownName; + Object.defineProperty(elementType, 'displayName', { + enumerable: false, + configurable: true, + get: function () { + return ownName; + }, + set: function (name) { + ownName = name; + + if (render.displayName == null) { + render.displayName = name; + } + } + }); + } + return elementType; + } // Filter certain DOM attributes (e.g. src, href) if their values are empty strings. + + + var enableScopeAPI = false; // Experimental Create Event Handle API. + + function isValidElementType(type) { + if (typeof type === 'string' || typeof type === 'function') { + return true; + } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). + + + if (type === exports.Fragment || type === exports.Profiler || type === REACT_DEBUG_TRACING_MODE_TYPE || type === exports.StrictMode || type === exports.Suspense || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI) { + return true; + } + + if (typeof type === 'object' && type !== null) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) { + return true; + } + } + + return false; + } + + function memo(type, compare) { + { + if (!isValidElementType(type)) { + error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type); + } + } + var elementType = { + $$typeof: REACT_MEMO_TYPE, + type: type, + compare: compare === undefined ? null : compare + }; + { + var ownName; + Object.defineProperty(elementType, 'displayName', { + enumerable: false, + configurable: true, + get: function () { + return ownName; + }, + set: function (name) { + ownName = name; + + if (type.displayName == null) { + type.displayName = name; + } + } + }); + } + return elementType; + } + + function resolveDispatcher() { + var dispatcher = ReactCurrentDispatcher.current; + + if (!(dispatcher !== null)) { + { + throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem."); + } + } + + return dispatcher; + } + + function useContext(Context, unstable_observedBits) { + var dispatcher = resolveDispatcher(); + { + if (unstable_observedBits !== undefined) { + error('useContext() second argument is reserved for future ' + 'use in React. Passing it is not supported. ' + 'You passed: %s.%s', unstable_observedBits, typeof unstable_observedBits === 'number' && Array.isArray(arguments[2]) ? '\n\nDid you call array.map(useContext)? ' + 'Calling Hooks inside a loop is not supported. ' + 'Learn more at https://reactjs.org/link/rules-of-hooks' : ''); + } // TODO: add a more generic warning for invalid values. + + + if (Context._context !== undefined) { + var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs + // and nobody should be using this in existing code. + + if (realContext.Consumer === Context) { + error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?'); + } else if (realContext.Provider === Context) { + error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?'); + } + } + } + return dispatcher.useContext(Context, unstable_observedBits); + } + + function useState(initialState) { + var dispatcher = resolveDispatcher(); + return dispatcher.useState(initialState); + } + + function useReducer(reducer, initialArg, init) { + var dispatcher = resolveDispatcher(); + return dispatcher.useReducer(reducer, initialArg, init); + } + + function useRef(initialValue) { + var dispatcher = resolveDispatcher(); + return dispatcher.useRef(initialValue); + } + + function useEffect(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useEffect(create, deps); + } + + function useLayoutEffect(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useLayoutEffect(create, deps); + } + + function useCallback(callback, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useCallback(callback, deps); + } + + function useMemo(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useMemo(create, deps); + } + + function useImperativeHandle(ref, create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useImperativeHandle(ref, create, deps); + } + + function useDebugValue(value, formatterFn) { + { + var dispatcher = resolveDispatcher(); + return dispatcher.useDebugValue(value, formatterFn); + } + } // Helpers to patch console.logs to avoid logging during side-effect free + // replaying on render function. This currently only patches the object + // lazily which won't cover if the log function was extracted eagerly. + // We could also eagerly patch the method. + + + var disabledDepth = 0; + var prevLog; + var prevInfo; + var prevWarn; + var prevError; + var prevGroup; + var prevGroupCollapsed; + var prevGroupEnd; + + function disabledLog() {} + + disabledLog.__reactDisabledLog = true; + + function disableLogs() { + { + if (disabledDepth === 0) { + /* eslint-disable react-internal/no-production-logging */ + prevLog = console.log; + prevInfo = console.info; + prevWarn = console.warn; + prevError = console.error; + prevGroup = console.group; + prevGroupCollapsed = console.groupCollapsed; + prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099 + + var props = { + configurable: true, + enumerable: true, + value: disabledLog, + writable: true + }; // $FlowFixMe Flow thinks console is immutable. + + Object.defineProperties(console, { + info: props, + log: props, + warn: props, + error: props, + group: props, + groupCollapsed: props, + groupEnd: props + }); + /* eslint-enable react-internal/no-production-logging */ + } + + disabledDepth++; + } + } + + function reenableLogs() { + { + disabledDepth--; + + if (disabledDepth === 0) { + /* eslint-disable react-internal/no-production-logging */ + var props = { + configurable: true, + enumerable: true, + writable: true + }; // $FlowFixMe Flow thinks console is immutable. + + Object.defineProperties(console, { + log: _assign({}, props, { + value: prevLog + }), + info: _assign({}, props, { + value: prevInfo + }), + warn: _assign({}, props, { + value: prevWarn + }), + error: _assign({}, props, { + value: prevError + }), + group: _assign({}, props, { + value: prevGroup + }), + groupCollapsed: _assign({}, props, { + value: prevGroupCollapsed + }), + groupEnd: _assign({}, props, { + value: prevGroupEnd + }) + }); + /* eslint-enable react-internal/no-production-logging */ + } + + if (disabledDepth < 0) { + error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.'); + } + } + } + + var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher; + var prefix; + + function describeBuiltInComponentFrame(name, source, ownerFn) { + { + if (prefix === undefined) { + // Extract the VM specific prefix used by each line. + try { + throw Error(); + } catch (x) { + var match = x.stack.trim().match(/\n( *(at )?)/); + prefix = match && match[1] || ''; + } + } // We use the prefix to ensure our stacks line up with native stack frames. + + + return '\n' + prefix + name; + } + } + + var reentry = false; + var componentFrameCache; + { + var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map; + componentFrameCache = new PossiblyWeakMap(); + } + + function describeNativeComponentFrame(fn, construct) { + // If something asked for a stack inside a fake render, it should get ignored. + if (!fn || reentry) { + return ''; + } + + { + var frame = componentFrameCache.get(fn); + + if (frame !== undefined) { + return frame; + } + } + var control; + reentry = true; + var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined. + + Error.prepareStackTrace = undefined; + var previousDispatcher; + { + previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function + // for warnings. + + ReactCurrentDispatcher$1.current = null; + disableLogs(); + } + + try { + // This should throw. + if (construct) { + // Something should be setting the props in the constructor. + var Fake = function () { + throw Error(); + }; // $FlowFixMe + + + Object.defineProperty(Fake.prototype, 'props', { + set: function () { + // We use a throwing setter instead of frozen or non-writable props + // because that won't throw in a non-strict mode function. + throw Error(); + } + }); + + if (typeof Reflect === 'object' && Reflect.construct) { + // We construct a different control for this case to include any extra + // frames added by the construct call. + try { + Reflect.construct(Fake, []); + } catch (x) { + control = x; + } + + Reflect.construct(fn, [], Fake); + } else { + try { + Fake.call(); + } catch (x) { + control = x; + } + + fn.call(Fake.prototype); + } + } else { + try { + throw Error(); + } catch (x) { + control = x; + } + + fn(); + } + } catch (sample) { + // This is inlined manually because closure doesn't do it for us. + if (sample && control && typeof sample.stack === 'string') { + // This extracts the first frame from the sample that isn't also in the control. + // Skipping one frame that we assume is the frame that calls the two. + var sampleLines = sample.stack.split('\n'); + var controlLines = control.stack.split('\n'); + var s = sampleLines.length - 1; + var c = controlLines.length - 1; + + while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) { + // We expect at least one stack frame to be shared. + // Typically this will be the root most one. However, stack frames may be + // cut off due to maximum stack limits. In this case, one maybe cut off + // earlier than the other. We assume that the sample is longer or the same + // and there for cut off earlier. So we should find the root most frame in + // the sample somewhere in the control. + c--; + } + + for (; s >= 1 && c >= 0; s--, c--) { + // Next we find the first one that isn't the same which should be the + // frame that called our sample function and the control. + if (sampleLines[s] !== controlLines[c]) { + // In V8, the first line is describing the message but other VMs don't. + // If we're about to return the first line, and the control is also on the same + // line, that's a pretty good indicator that our sample threw at same line as + // the control. I.e. before we entered the sample frame. So we ignore this result. + // This can happen if you passed a class to function component, or non-function. + if (s !== 1 || c !== 1) { + do { + s--; + c--; // We may still have similar intermediate frames from the construct call. + // The next one that isn't the same should be our match though. + + if (c < 0 || sampleLines[s] !== controlLines[c]) { + // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier. + var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); + + { + if (typeof fn === 'function') { + componentFrameCache.set(fn, _frame); + } + } // Return the line we found. + + return _frame; + } + } while (s >= 1 && c >= 0); + } + + break; + } + } + } + } finally { + reentry = false; + { + ReactCurrentDispatcher$1.current = previousDispatcher; + reenableLogs(); + } + Error.prepareStackTrace = previousPrepareStackTrace; + } // Fallback to just using the name if we couldn't make it throw. + + + var name = fn ? fn.displayName || fn.name : ''; + var syntheticFrame = name ? describeBuiltInComponentFrame(name) : ''; + { + if (typeof fn === 'function') { + componentFrameCache.set(fn, syntheticFrame); + } + } + return syntheticFrame; + } + + function describeFunctionComponentFrame(fn, source, ownerFn) { + { + return describeNativeComponentFrame(fn, false); + } + } + + function shouldConstruct(Component) { + var prototype = Component.prototype; + return !!(prototype && prototype.isReactComponent); + } + + function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { + if (type == null) { + return ''; + } + + if (typeof type === 'function') { + { + return describeNativeComponentFrame(type, shouldConstruct(type)); + } + } + + if (typeof type === 'string') { + return describeBuiltInComponentFrame(type); + } + + switch (type) { + case exports.Suspense: + return describeBuiltInComponentFrame('Suspense'); + + case REACT_SUSPENSE_LIST_TYPE: + return describeBuiltInComponentFrame('SuspenseList'); + } + + if (typeof type === 'object') { + switch (type.$$typeof) { + case REACT_FORWARD_REF_TYPE: + return describeFunctionComponentFrame(type.render); + + case REACT_MEMO_TYPE: + // Memo may contain any component type so we recursively resolve it. + return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn); + + case REACT_BLOCK_TYPE: + return describeFunctionComponentFrame(type._render); + + case REACT_LAZY_TYPE: + { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + + try { + // Lazy may contain any component type so we recursively resolve it. + return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); + } catch (x) {} + } + } + } + + return ''; + } + + var loggedTypeFailures = {}; + var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame; + + function setCurrentlyValidatingElement(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + ReactDebugCurrentFrame$1.setExtraStackFrame(stack); + } else { + ReactDebugCurrentFrame$1.setExtraStackFrame(null); + } + } + } + + function checkPropTypes(typeSpecs, values, location, componentName, element) { + { + // $FlowFixMe This is okay but Flow doesn't know it. + var has = Function.call.bind(Object.prototype.hasOwnProperty); + + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'); + err.name = 'Invariant Violation'; + throw err; + } + + error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'); + } catch (ex) { + error$1 = ex; + } + + if (error$1 && !(error$1 instanceof Error)) { + setCurrentlyValidatingElement(element); + error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1); + setCurrentlyValidatingElement(null); + } + + if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error$1.message] = true; + setCurrentlyValidatingElement(element); + error('Failed %s type: %s', location, error$1.message); + setCurrentlyValidatingElement(null); + } + } + } + } + } + + function setCurrentlyValidatingElement$1(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + setExtraStackFrame(stack); + } else { + setExtraStackFrame(null); + } + } + } + + var propTypesMisspellWarningShown; + { + propTypesMisspellWarningShown = false; + } + + function getDeclarationErrorAddendum() { + if (ReactCurrentOwner.current) { + var name = getComponentName(ReactCurrentOwner.current.type); + + if (name) { + return '\n\nCheck the render method of `' + name + '`.'; + } + } + + return ''; + } + + function getSourceInfoErrorAddendum(source) { + if (source !== undefined) { + var fileName = source.fileName.replace(/^.*[\\\/]/, ''); + var lineNumber = source.lineNumber; + return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; + } + + return ''; + } + + function getSourceInfoErrorAddendumForProps(elementProps) { + if (elementProps !== null && elementProps !== undefined) { + return getSourceInfoErrorAddendum(elementProps.__source); + } + + return ''; + } + /** + * Warn if there's no key explicitly set on dynamic arrays of children or + * object keys are not valid. This allows us to keep track of children between + * updates. + */ + + + var ownerHasKeyUseWarning = {}; + + function getCurrentComponentErrorInfo(parentType) { + var info = getDeclarationErrorAddendum(); + + if (!info) { + var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; + + if (parentName) { + info = "\n\nCheck the top-level render call using <" + parentName + ">."; + } + } + + return info; + } + /** + * Warn if the element doesn't have an explicit key assigned to it. + * This element is in an array. The array could grow and shrink or be + * reordered. All children that haven't already been validated are required to + * have a "key" property assigned to it. Error statuses are cached so a warning + * will only be shown once. + * + * @internal + * @param {ReactElement} element Element that requires a key. + * @param {*} parentType element's parent's type. + */ + + + function validateExplicitKey(element, parentType) { + if (!element._store || element._store.validated || element.key != null) { + return; + } + + element._store.validated = true; + var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); + + if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { + return; + } + + ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a + // property, it may be the creator of the child that's responsible for + // assigning it a key. + + var childOwner = ''; + + if (element && element._owner && element._owner !== ReactCurrentOwner.current) { + // Give the component that originally created this child. + childOwner = " It was passed a child from " + getComponentName(element._owner.type) + "."; + } + + { + setCurrentlyValidatingElement$1(element); + error('Each child in a list should have a unique "key" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner); + setCurrentlyValidatingElement$1(null); + } + } + /** + * Ensure that every element either is passed in a static location, in an + * array with an explicit keys property defined, or in an object literal + * with valid key property. + * + * @internal + * @param {ReactNode} node Statically passed child of any type. + * @param {*} parentType node's parent's type. + */ + + + function validateChildKeys(node, parentType) { + if (typeof node !== 'object') { + return; + } + + if (Array.isArray(node)) { + for (var i = 0; i < node.length; i++) { + var child = node[i]; + + if (isValidElement(child)) { + validateExplicitKey(child, parentType); + } + } + } else if (isValidElement(node)) { + // This element was passed in a valid location. + if (node._store) { + node._store.validated = true; + } + } else if (node) { + var iteratorFn = getIteratorFn(node); + + if (typeof iteratorFn === 'function') { + // Entry iterators used to provide implicit keys, + // but now we print a separate warning for them later. + if (iteratorFn !== node.entries) { + var iterator = iteratorFn.call(node); + var step; + + while (!(step = iterator.next()).done) { + if (isValidElement(step.value)) { + validateExplicitKey(step.value, parentType); + } + } + } + } + } + } + /** + * Given an element, validate that its props follow the propTypes definition, + * provided by the type. + * + * @param {ReactElement} element + */ + + + function validatePropTypes(element) { + { + var type = element.type; + + if (type === null || type === undefined || typeof type === 'string') { + return; + } + + var propTypes; + + if (typeof type === 'function') { + propTypes = type.propTypes; + } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here. + // Inner props are checked in the reconciler. + type.$$typeof === REACT_MEMO_TYPE)) { + propTypes = type.propTypes; + } else { + return; + } + + if (propTypes) { + // Intentionally inside to avoid triggering lazy initializers: + var name = getComponentName(type); + checkPropTypes(propTypes, element.props, 'prop', name, element); + } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) { + propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers: + + var _name = getComponentName(type); + + error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown'); + } + + if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) { + error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.'); + } + } + } + /** + * Given a fragment, validate that it can only be provided with fragment props + * @param {ReactElement} fragment + */ + + + function validateFragmentProps(fragment) { + { + var keys = Object.keys(fragment.props); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + + if (key !== 'children' && key !== 'key') { + setCurrentlyValidatingElement$1(fragment); + error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key); + setCurrentlyValidatingElement$1(null); + break; + } + } + + if (fragment.ref !== null) { + setCurrentlyValidatingElement$1(fragment); + error('Invalid attribute `ref` supplied to `React.Fragment`.'); + setCurrentlyValidatingElement$1(null); + } + } + } + + function createElementWithValidation(type, props, children) { + var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to + // succeed and there will likely be errors in render. + + if (!validType) { + var info = ''; + + if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { + info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports."; + } + + var sourceInfo = getSourceInfoErrorAddendumForProps(props); + + if (sourceInfo) { + info += sourceInfo; + } else { + info += getDeclarationErrorAddendum(); + } + + var typeString; + + if (type === null) { + typeString = 'null'; + } else if (Array.isArray(type)) { + typeString = 'array'; + } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) { + typeString = "<" + (getComponentName(type.type) || 'Unknown') + " />"; + info = ' Did you accidentally export a JSX literal instead of a component?'; + } else { + typeString = typeof type; + } + + { + error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info); + } + } + + var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used. + // TODO: Drop this when these are no longer allowed as the type argument. + + if (element == null) { + return element; + } // Skip key warning if the type isn't valid since our key validation logic + // doesn't expect a non-string/function type and can throw confusing errors. + // We don't want exception behavior to differ between dev and prod. + // (Rendering will throw with a helpful message and as soon as the type is + // fixed, the key warnings will appear.) + + + if (validType) { + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], type); + } + } + + if (type === exports.Fragment) { + validateFragmentProps(element); + } else { + validatePropTypes(element); + } + + return element; + } + + var didWarnAboutDeprecatedCreateFactory = false; + + function createFactoryWithValidation(type) { + var validatedFactory = createElementWithValidation.bind(null, type); + validatedFactory.type = type; + { + if (!didWarnAboutDeprecatedCreateFactory) { + didWarnAboutDeprecatedCreateFactory = true; + warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.'); + } // Legacy hook: remove it + + + Object.defineProperty(validatedFactory, 'type', { + enumerable: false, + get: function () { + warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.'); + Object.defineProperty(this, 'type', { + value: type + }); + return type; + } + }); + } + return validatedFactory; + } + + function cloneElementWithValidation(element, props, children) { + var newElement = cloneElement.apply(this, arguments); + + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], newElement.type); + } + + validatePropTypes(newElement); + return newElement; + } + + { + try { + var frozenObject = Object.freeze({}); + /* eslint-disable no-new */ + + new Map([[frozenObject, null]]); + new Set([frozenObject]); + /* eslint-enable no-new */ + } catch (e) {} + } + var createElement$1 = createElementWithValidation; + var cloneElement$1 = cloneElementWithValidation; + var createFactory = createFactoryWithValidation; + var Children = { + map: mapChildren, + forEach: forEachChildren, + count: countChildren, + toArray: toArray, + only: onlyChild + }; + exports.Children = Children; + exports.Component = Component; + exports.PureComponent = PureComponent; + exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals; + exports.cloneElement = cloneElement$1; + exports.createContext = createContext; + exports.createElement = createElement$1; + exports.createFactory = createFactory; + exports.createRef = createRef; + exports.forwardRef = forwardRef; + exports.isValidElement = isValidElement; + exports.lazy = lazy; + exports.memo = memo; + exports.useCallback = useCallback; + exports.useContext = useContext; + exports.useDebugValue = useDebugValue; + exports.useEffect = useEffect; + exports.useImperativeHandle = useImperativeHandle; + exports.useLayoutEffect = useLayoutEffect; + exports.useMemo = useMemo; + exports.useReducer = useReducer; + exports.useRef = useRef; + exports.useState = useState; + exports.version = ReactVersion; + })(); +} +}); + +var react = createCommonjsModule(function (module) { + +{ + module.exports = react_development; +} +}); + +/** @license React v0.20.2 + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +createCommonjsModule(function (module, exports) { + +var f, g, h, k; + +if ("object" === typeof performance && "function" === typeof performance.now) { + var l = performance; + + exports.unstable_now = function () { + return l.now(); + }; +} else { + var p = Date, + q = p.now(); + + exports.unstable_now = function () { + return p.now() - q; + }; +} + +if ("undefined" === typeof window || "function" !== typeof MessageChannel) { + var t = null, + u = null, + w = function () { + if (null !== t) try { + var a = exports.unstable_now(); + t(!0, a); + t = null; + } catch (b) { + throw setTimeout(w, 0), b; + } + }; + + f = function (a) { + null !== t ? setTimeout(f, 0, a) : (t = a, setTimeout(w, 0)); + }; + + g = function (a, b) { + u = setTimeout(a, b); + }; + + h = function () { + clearTimeout(u); + }; + + exports.unstable_shouldYield = function () { + return !1; + }; + + k = exports.unstable_forceFrameRate = function () {}; +} else { + var x = window.setTimeout, + y = window.clearTimeout; + + if ("undefined" !== typeof console) { + var z = window.cancelAnimationFrame; + "function" !== typeof window.requestAnimationFrame && console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"); + "function" !== typeof z && console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"); + } + + var A = !1, + B = null, + C = -1, + D = 5, + E = 0; + + exports.unstable_shouldYield = function () { + return exports.unstable_now() >= E; + }; + + k = function () {}; + + exports.unstable_forceFrameRate = function (a) { + 0 > a || 125 < a ? console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported") : D = 0 < a ? Math.floor(1E3 / a) : 5; + }; + + var F = new MessageChannel(), + G = F.port2; + + F.port1.onmessage = function () { + if (null !== B) { + var a = exports.unstable_now(); + E = a + D; + + try { + B(!0, a) ? G.postMessage(null) : (A = !1, B = null); + } catch (b) { + throw G.postMessage(null), b; + } + } else A = !1; + }; + + f = function (a) { + B = a; + A || (A = !0, G.postMessage(null)); + }; + + g = function (a, b) { + C = x(function () { + a(exports.unstable_now()); + }, b); + }; + + h = function () { + y(C); + C = -1; + }; +} + +function H(a, b) { + var c = a.length; + a.push(b); + + a: for (;;) { + var d = c - 1 >>> 1, + e = a[d]; + if (void 0 !== e && 0 < I(e, b)) a[d] = b, a[c] = e, c = d;else break a; + } +} + +function J(a) { + a = a[0]; + return void 0 === a ? null : a; +} + +function K(a) { + var b = a[0]; + + if (void 0 !== b) { + var c = a.pop(); + + if (c !== b) { + a[0] = c; + + a: for (var d = 0, e = a.length; d < e;) { + var m = 2 * (d + 1) - 1, + n = a[m], + v = m + 1, + r = a[v]; + if (void 0 !== n && 0 > I(n, c)) void 0 !== r && 0 > I(r, n) ? (a[d] = r, a[v] = c, d = v) : (a[d] = n, a[m] = c, d = m);else if (void 0 !== r && 0 > I(r, c)) a[d] = r, a[v] = c, d = v;else break a; + } + } + + return b; + } + + return null; +} + +function I(a, b) { + var c = a.sortIndex - b.sortIndex; + return 0 !== c ? c : a.id - b.id; +} + +var L = [], + M = [], + N = 1, + O = null, + P = 3, + Q = !1, + R = !1, + S = !1; + +function T(a) { + for (var b = J(M); null !== b;) { + if (null === b.callback) K(M);else if (b.startTime <= a) K(M), b.sortIndex = b.expirationTime, H(L, b);else break; + b = J(M); + } +} + +function U(a) { + S = !1; + T(a); + if (!R) if (null !== J(L)) R = !0, f(V);else { + var b = J(M); + null !== b && g(U, b.startTime - a); + } +} + +function V(a, b) { + R = !1; + S && (S = !1, h()); + Q = !0; + var c = P; + + try { + T(b); + + for (O = J(L); null !== O && (!(O.expirationTime > b) || a && !exports.unstable_shouldYield());) { + var d = O.callback; + + if ("function" === typeof d) { + O.callback = null; + P = O.priorityLevel; + var e = d(O.expirationTime <= b); + b = exports.unstable_now(); + "function" === typeof e ? O.callback = e : O === J(L) && K(L); + T(b); + } else K(L); + + O = J(L); + } + + if (null !== O) var m = !0;else { + var n = J(M); + null !== n && g(U, n.startTime - b); + m = !1; + } + return m; + } finally { + O = null, P = c, Q = !1; + } +} + +var W = k; +exports.unstable_IdlePriority = 5; +exports.unstable_ImmediatePriority = 1; +exports.unstable_LowPriority = 4; +exports.unstable_NormalPriority = 3; +exports.unstable_Profiling = null; +exports.unstable_UserBlockingPriority = 2; + +exports.unstable_cancelCallback = function (a) { + a.callback = null; +}; + +exports.unstable_continueExecution = function () { + R || Q || (R = !0, f(V)); +}; + +exports.unstable_getCurrentPriorityLevel = function () { + return P; +}; + +exports.unstable_getFirstCallbackNode = function () { + return J(L); +}; + +exports.unstable_next = function (a) { + switch (P) { + case 1: + case 2: + case 3: + var b = 3; + break; + + default: + b = P; + } + + var c = P; + P = b; + + try { + return a(); + } finally { + P = c; + } +}; + +exports.unstable_pauseExecution = function () {}; + +exports.unstable_requestPaint = W; + +exports.unstable_runWithPriority = function (a, b) { + switch (a) { + case 1: + case 2: + case 3: + case 4: + case 5: + break; + + default: + a = 3; + } + + var c = P; + P = a; + + try { + return b(); + } finally { + P = c; + } +}; + +exports.unstable_scheduleCallback = function (a, b, c) { + var d = exports.unstable_now(); + "object" === typeof c && null !== c ? (c = c.delay, c = "number" === typeof c && 0 < c ? d + c : d) : c = d; + + switch (a) { + case 1: + var e = -1; + break; + + case 2: + e = 250; + break; + + case 5: + e = 1073741823; + break; + + case 4: + e = 1E4; + break; + + default: + e = 5E3; + } + + e = c + e; + a = { + id: N++, + callback: b, + priorityLevel: a, + startTime: c, + expirationTime: e, + sortIndex: -1 + }; + c > d ? (a.sortIndex = c, H(M, a), null === J(L) && a === J(M) && (S ? h() : S = !0, g(U, c - d))) : (a.sortIndex = e, H(L, a), R || Q || (R = !0, f(V))); + return a; +}; + +exports.unstable_wrapCallback = function (a) { + var b = P; + return function () { + var c = P; + P = b; + + try { + return a.apply(this, arguments); + } finally { + P = c; + } + }; +}; +}); + +/** @license React v0.20.2 + * scheduler.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var scheduler_development = createCommonjsModule(function (module, exports) { + +{ + (function () { + + var enableSchedulerDebugging = false; + var enableProfiling = false; + var requestHostCallback; + var requestHostTimeout; + var cancelHostTimeout; + var requestPaint; + var hasPerformanceNow = typeof performance === 'object' && typeof performance.now === 'function'; + + if (hasPerformanceNow) { + var localPerformance = performance; + + exports.unstable_now = function () { + return localPerformance.now(); + }; + } else { + var localDate = Date; + var initialTime = localDate.now(); + + exports.unstable_now = function () { + return localDate.now() - initialTime; + }; + } + + if ( // If Scheduler runs in a non-DOM environment, it falls back to a naive + // implementation using setTimeout. + typeof window === 'undefined' || // Check if MessageChannel is supported, too. + typeof MessageChannel !== 'function') { + // If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore, + // fallback to a naive implementation. + var _callback = null; + var _timeoutID = null; + + var _flushCallback = function () { + if (_callback !== null) { + try { + var currentTime = exports.unstable_now(); + var hasRemainingTime = true; + + _callback(hasRemainingTime, currentTime); + + _callback = null; + } catch (e) { + setTimeout(_flushCallback, 0); + throw e; + } + } + }; + + requestHostCallback = function (cb) { + if (_callback !== null) { + // Protect against re-entrancy. + setTimeout(requestHostCallback, 0, cb); + } else { + _callback = cb; + setTimeout(_flushCallback, 0); + } + }; + + requestHostTimeout = function (cb, ms) { + _timeoutID = setTimeout(cb, ms); + }; + + cancelHostTimeout = function () { + clearTimeout(_timeoutID); + }; + + exports.unstable_shouldYield = function () { + return false; + }; + + requestPaint = exports.unstable_forceFrameRate = function () {}; + } else { + // Capture local references to native APIs, in case a polyfill overrides them. + var _setTimeout = window.setTimeout; + var _clearTimeout = window.clearTimeout; + + if (typeof console !== 'undefined') { + // TODO: Scheduler no longer requires these methods to be polyfilled. But + // maybe we want to continue warning if they don't exist, to preserve the + // option to rely on it in the future? + var requestAnimationFrame = window.requestAnimationFrame; + var cancelAnimationFrame = window.cancelAnimationFrame; + + if (typeof requestAnimationFrame !== 'function') { + // Using console['error'] to evade Babel and ESLint + console['error']("This browser doesn't support requestAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills'); + } + + if (typeof cancelAnimationFrame !== 'function') { + // Using console['error'] to evade Babel and ESLint + console['error']("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills'); + } + } + + var isMessageLoopRunning = false; + var scheduledHostCallback = null; + var taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main + // thread, like user events. By default, it yields multiple times per frame. + // It does not attempt to align with frame boundaries, since most tasks don't + // need to be frame aligned; for those that do, use requestAnimationFrame. + + var yieldInterval = 5; + var deadline = 0; // TODO: Make this configurable + + { + // `isInputPending` is not available. Since we have no way of knowing if + // there's pending input, always yield at the end of the frame. + exports.unstable_shouldYield = function () { + return exports.unstable_now() >= deadline; + }; // Since we yield every frame regardless, `requestPaint` has no effect. + + + requestPaint = function () {}; + } + + exports.unstable_forceFrameRate = function (fps) { + if (fps < 0 || fps > 125) { + // Using console['error'] to evade Babel and ESLint + console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported'); + return; + } + + if (fps > 0) { + yieldInterval = Math.floor(1000 / fps); + } else { + // reset the framerate + yieldInterval = 5; + } + }; + + var performWorkUntilDeadline = function () { + if (scheduledHostCallback !== null) { + var currentTime = exports.unstable_now(); // Yield after `yieldInterval` ms, regardless of where we are in the vsync + // cycle. This means there's always time remaining at the beginning of + // the message event. + + deadline = currentTime + yieldInterval; + var hasTimeRemaining = true; + + try { + var hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime); + + if (!hasMoreWork) { + isMessageLoopRunning = false; + scheduledHostCallback = null; + } else { + // If there's more work, schedule the next message event at the end + // of the preceding one. + port.postMessage(null); + } + } catch (error) { + // If a scheduler task throws, exit the current browser task so the + // error can be observed. + port.postMessage(null); + throw error; + } + } else { + isMessageLoopRunning = false; + } // Yielding to the browser will give it a chance to paint, so we can + + }; + + var channel = new MessageChannel(); + var port = channel.port2; + channel.port1.onmessage = performWorkUntilDeadline; + + requestHostCallback = function (callback) { + scheduledHostCallback = callback; + + if (!isMessageLoopRunning) { + isMessageLoopRunning = true; + port.postMessage(null); + } + }; + + requestHostTimeout = function (callback, ms) { + taskTimeoutID = _setTimeout(function () { + callback(exports.unstable_now()); + }, ms); + }; + + cancelHostTimeout = function () { + _clearTimeout(taskTimeoutID); + + taskTimeoutID = -1; + }; + } + + function push(heap, node) { + var index = heap.length; + heap.push(node); + siftUp(heap, node, index); + } + + function peek(heap) { + var first = heap[0]; + return first === undefined ? null : first; + } + + function pop(heap) { + var first = heap[0]; + + if (first !== undefined) { + var last = heap.pop(); + + if (last !== first) { + heap[0] = last; + siftDown(heap, last, 0); + } + + return first; + } else { + return null; + } + } + + function siftUp(heap, node, i) { + var index = i; + + while (true) { + var parentIndex = index - 1 >>> 1; + var parent = heap[parentIndex]; + + if (parent !== undefined && compare(parent, node) > 0) { + // The parent is larger. Swap positions. + heap[parentIndex] = node; + heap[index] = parent; + index = parentIndex; + } else { + // The parent is smaller. Exit. + return; + } + } + } + + function siftDown(heap, node, i) { + var index = i; + var length = heap.length; + + while (index < length) { + var leftIndex = (index + 1) * 2 - 1; + var left = heap[leftIndex]; + var rightIndex = leftIndex + 1; + var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those. + + if (left !== undefined && compare(left, node) < 0) { + if (right !== undefined && compare(right, left) < 0) { + heap[index] = right; + heap[rightIndex] = node; + index = rightIndex; + } else { + heap[index] = left; + heap[leftIndex] = node; + index = leftIndex; + } + } else if (right !== undefined && compare(right, node) < 0) { + heap[index] = right; + heap[rightIndex] = node; + index = rightIndex; + } else { + // Neither child is smaller. Exit. + return; + } + } + } + + function compare(a, b) { + // Compare sort index first, then task id. + var diff = a.sortIndex - b.sortIndex; + return diff !== 0 ? diff : a.id - b.id; + } // TODO: Use symbols? + + + var ImmediatePriority = 1; + var UserBlockingPriority = 2; + var NormalPriority = 3; + var LowPriority = 4; + var IdlePriority = 5; + + function markTaskErrored(task, ms) {} + /* eslint-disable no-var */ + // Math.pow(2, 30) - 1 + // 0b111111111111111111111111111111 + + + var maxSigned31BitInt = 1073741823; // Times out immediately + + var IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out + + var USER_BLOCKING_PRIORITY_TIMEOUT = 250; + var NORMAL_PRIORITY_TIMEOUT = 5000; + var LOW_PRIORITY_TIMEOUT = 10000; // Never times out + + var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap + + var taskQueue = []; + var timerQueue = []; // Incrementing id counter. Used to maintain insertion order. + + var taskIdCounter = 1; // Pausing the scheduler is useful for debugging. + + var currentTask = null; + var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy. + + var isPerformingWork = false; + var isHostCallbackScheduled = false; + var isHostTimeoutScheduled = false; + + function advanceTimers(currentTime) { + // Check for tasks that are no longer delayed and add them to the queue. + var timer = peek(timerQueue); + + while (timer !== null) { + if (timer.callback === null) { + // Timer was cancelled. + pop(timerQueue); + } else if (timer.startTime <= currentTime) { + // Timer fired. Transfer to the task queue. + pop(timerQueue); + timer.sortIndex = timer.expirationTime; + push(taskQueue, timer); + } else { + // Remaining timers are pending. + return; + } + + timer = peek(timerQueue); + } + } + + function handleTimeout(currentTime) { + isHostTimeoutScheduled = false; + advanceTimers(currentTime); + + if (!isHostCallbackScheduled) { + if (peek(taskQueue) !== null) { + isHostCallbackScheduled = true; + requestHostCallback(flushWork); + } else { + var firstTimer = peek(timerQueue); + + if (firstTimer !== null) { + requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); + } + } + } + } + + function flushWork(hasTimeRemaining, initialTime) { + isHostCallbackScheduled = false; + + if (isHostTimeoutScheduled) { + // We scheduled a timeout but it's no longer needed. Cancel it. + isHostTimeoutScheduled = false; + cancelHostTimeout(); + } + + isPerformingWork = true; + var previousPriorityLevel = currentPriorityLevel; + + try { + var currentTime; if (enableProfiling) ; else { + // No catch in prod code path. + return workLoop(hasTimeRemaining, initialTime); + } + } finally { + currentTask = null; + currentPriorityLevel = previousPriorityLevel; + isPerformingWork = false; + } + } + + function workLoop(hasTimeRemaining, initialTime) { + var currentTime = initialTime; + advanceTimers(currentTime); + currentTask = peek(taskQueue); + + while (currentTask !== null && !enableSchedulerDebugging) { + if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || exports.unstable_shouldYield())) { + // This currentTask hasn't expired, and we've reached the deadline. + break; + } + + var callback = currentTask.callback; + + if (typeof callback === 'function') { + currentTask.callback = null; + currentPriorityLevel = currentTask.priorityLevel; + var didUserCallbackTimeout = currentTask.expirationTime <= currentTime; + var continuationCallback = callback(didUserCallbackTimeout); + currentTime = exports.unstable_now(); + + if (typeof continuationCallback === 'function') { + currentTask.callback = continuationCallback; + } else { + if (currentTask === peek(taskQueue)) { + pop(taskQueue); + } + } + + advanceTimers(currentTime); + } else { + pop(taskQueue); + } + + currentTask = peek(taskQueue); + } // Return whether there's additional work + + + if (currentTask !== null) { + return true; + } else { + var firstTimer = peek(timerQueue); + + if (firstTimer !== null) { + requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); + } + + return false; + } + } + + function unstable_runWithPriority(priorityLevel, eventHandler) { + switch (priorityLevel) { + case ImmediatePriority: + case UserBlockingPriority: + case NormalPriority: + case LowPriority: + case IdlePriority: + break; + + default: + priorityLevel = NormalPriority; + } + + var previousPriorityLevel = currentPriorityLevel; + currentPriorityLevel = priorityLevel; + + try { + return eventHandler(); + } finally { + currentPriorityLevel = previousPriorityLevel; + } + } + + function unstable_next(eventHandler) { + var priorityLevel; + + switch (currentPriorityLevel) { + case ImmediatePriority: + case UserBlockingPriority: + case NormalPriority: + // Shift down to normal priority + priorityLevel = NormalPriority; + break; + + default: + // Anything lower than normal priority should remain at the current level. + priorityLevel = currentPriorityLevel; + break; + } + + var previousPriorityLevel = currentPriorityLevel; + currentPriorityLevel = priorityLevel; + + try { + return eventHandler(); + } finally { + currentPriorityLevel = previousPriorityLevel; + } + } + + function unstable_wrapCallback(callback) { + var parentPriorityLevel = currentPriorityLevel; + return function () { + // This is a fork of runWithPriority, inlined for performance. + var previousPriorityLevel = currentPriorityLevel; + currentPriorityLevel = parentPriorityLevel; + + try { + return callback.apply(this, arguments); + } finally { + currentPriorityLevel = previousPriorityLevel; + } + }; + } + + function unstable_scheduleCallback(priorityLevel, callback, options) { + var currentTime = exports.unstable_now(); + var startTime; + + if (typeof options === 'object' && options !== null) { + var delay = options.delay; + + if (typeof delay === 'number' && delay > 0) { + startTime = currentTime + delay; + } else { + startTime = currentTime; + } + } else { + startTime = currentTime; + } + + var timeout; + + switch (priorityLevel) { + case ImmediatePriority: + timeout = IMMEDIATE_PRIORITY_TIMEOUT; + break; + + case UserBlockingPriority: + timeout = USER_BLOCKING_PRIORITY_TIMEOUT; + break; + + case IdlePriority: + timeout = IDLE_PRIORITY_TIMEOUT; + break; + + case LowPriority: + timeout = LOW_PRIORITY_TIMEOUT; + break; + + case NormalPriority: + default: + timeout = NORMAL_PRIORITY_TIMEOUT; + break; + } + + var expirationTime = startTime + timeout; + var newTask = { + id: taskIdCounter++, + callback: callback, + priorityLevel: priorityLevel, + startTime: startTime, + expirationTime: expirationTime, + sortIndex: -1 + }; + + if (startTime > currentTime) { + // This is a delayed task. + newTask.sortIndex = startTime; + push(timerQueue, newTask); + + if (peek(taskQueue) === null && newTask === peek(timerQueue)) { + // All tasks are delayed, and this is the task with the earliest delay. + if (isHostTimeoutScheduled) { + // Cancel an existing timeout. + cancelHostTimeout(); + } else { + isHostTimeoutScheduled = true; + } // Schedule a timeout. + + + requestHostTimeout(handleTimeout, startTime - currentTime); + } + } else { + newTask.sortIndex = expirationTime; + push(taskQueue, newTask); // wait until the next time we yield. + + if (!isHostCallbackScheduled && !isPerformingWork) { + isHostCallbackScheduled = true; + requestHostCallback(flushWork); + } + } + + return newTask; + } + + function unstable_pauseExecution() {} + + function unstable_continueExecution() { + if (!isHostCallbackScheduled && !isPerformingWork) { + isHostCallbackScheduled = true; + requestHostCallback(flushWork); + } + } + + function unstable_getFirstCallbackNode() { + return peek(taskQueue); + } + + function unstable_cancelCallback(task) { + // remove from the queue because you can't remove arbitrary nodes from an + // array based heap, only the first one.) + task.callback = null; + } + + function unstable_getCurrentPriorityLevel() { + return currentPriorityLevel; + } + + var unstable_requestPaint = requestPaint; + var unstable_Profiling = null; + exports.unstable_IdlePriority = IdlePriority; + exports.unstable_ImmediatePriority = ImmediatePriority; + exports.unstable_LowPriority = LowPriority; + exports.unstable_NormalPriority = NormalPriority; + exports.unstable_Profiling = unstable_Profiling; + exports.unstable_UserBlockingPriority = UserBlockingPriority; + exports.unstable_cancelCallback = unstable_cancelCallback; + exports.unstable_continueExecution = unstable_continueExecution; + exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; + exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; + exports.unstable_next = unstable_next; + exports.unstable_pauseExecution = unstable_pauseExecution; + exports.unstable_requestPaint = unstable_requestPaint; + exports.unstable_runWithPriority = unstable_runWithPriority; + exports.unstable_scheduleCallback = unstable_scheduleCallback; + exports.unstable_wrapCallback = unstable_wrapCallback; + })(); +} +}); + +var scheduler = createCommonjsModule(function (module) { + +{ + module.exports = scheduler_development; +} +}); + +/** @license React v17.0.1 + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +function y(a) { + for (var b = "https://reactjs.org/docs/error-decoder.html?invariant=" + a, c = 1; c < arguments.length; c++) b += "&args[]=" + encodeURIComponent(arguments[c]); + + return "Minified React error #" + a + "; visit " + b + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."; +} + +if (!react) throw Error(y(227)); +var ba = new Set(); + +function da(a, b) { + ea(a, b); + ea(a + "Capture", b); +} + +function ea(a, b) { + + for (a = 0; a < b.length; a++) ba.add(b[a]); +} + +var fa = !("undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement); + +function B(a, b, c, d, e, f, g) { + this.acceptsBooleans = 2 === b || 3 === b || 4 === b; + this.attributeName = d; + this.attributeNamespace = e; + this.mustUseProperty = c; + this.propertyName = a; + this.type = b; + this.sanitizeURL = f; + this.removeEmptyString = g; +} +[["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function (a) { + var b = a[0]; + new B(b, 1, !1, a[1], null, !1, !1); +}); +["contentEditable", "draggable", "spellCheck", "value"].forEach(function (a) { + new B(a, 2, !1, a.toLowerCase(), null, !1, !1); +}); +"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function (a) { + new B(a, 3, !1, a.toLowerCase(), null, !1, !1); +}); +["rowSpan", "start"].forEach(function (a) { + new B(a, 5, !1, a.toLowerCase(), null, !1, !1); +}); +var oa = /[\-:]([a-z])/g; + +function pa(a) { + return a[1].toUpperCase(); +} + +"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function (a) { + a.replace(oa, pa); +}); +"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function (a) { + a.replace(oa, pa); +}); +["xml:base", "xml:lang", "xml:space"].forEach(function (a) { + a.replace(oa, pa); +}); +["tabIndex", "crossOrigin"].forEach(function (a) { + new B(a, 1, !1, a.toLowerCase(), null, !1, !1); +}); +["src", "href", "action", "formAction"].forEach(function (a) { + new B(a, 1, !1, a.toLowerCase(), null, !0, !0); +}); + +var ra = react.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + +if ("function" === typeof Symbol && Symbol.for) { + var E = Symbol.for; + E("react.element"); + E("react.portal"); + E("react.fragment"); + E("react.strict_mode"); + E("react.profiler"); + E("react.provider"); + E("react.context"); + E("react.forward_ref"); + E("react.suspense"); + E("react.suspense_list"); + E("react.memo"); + E("react.lazy"); + E("react.block"); + E("react.scope"); + E("react.opaque.id"); + E("react.debug_trace_mode"); + E("react.offscreen"); + E("react.legacy_hidden"); +} + +var kb = { + html: "http://www.w3.org/1999/xhtml", + mathml: "http://www.w3.org/1998/Math/MathML", + svg: "http://www.w3.org/2000/svg" +}; + +var nb; + (function (a) { + return "undefined" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function (b, c, d, e) { + MSApp.execUnsafeLocalFunction(function () { + return a(b, c, d, e); + }); + } : a; +})(function (a, b) { + if (a.namespaceURI !== kb.svg || "innerHTML" in a) a.innerHTML = b;else { + nb = nb || document.createElement("div"); + nb.innerHTML = "" + b.valueOf().toString() + ""; + + for (b = nb.firstChild; a.firstChild;) a.removeChild(a.firstChild); + + for (; b.firstChild;) a.appendChild(b.firstChild); + } +}); + +var qb = { + animationIterationCount: !0, + borderImageOutset: !0, + borderImageSlice: !0, + borderImageWidth: !0, + boxFlex: !0, + boxFlexGroup: !0, + boxOrdinalGroup: !0, + columnCount: !0, + columns: !0, + flex: !0, + flexGrow: !0, + flexPositive: !0, + flexShrink: !0, + flexNegative: !0, + flexOrder: !0, + gridArea: !0, + gridRow: !0, + gridRowEnd: !0, + gridRowSpan: !0, + gridRowStart: !0, + gridColumn: !0, + gridColumnEnd: !0, + gridColumnSpan: !0, + gridColumnStart: !0, + fontWeight: !0, + lineClamp: !0, + lineHeight: !0, + opacity: !0, + order: !0, + orphans: !0, + tabSize: !0, + widows: !0, + zIndex: !0, + zoom: !0, + fillOpacity: !0, + floodOpacity: !0, + stopOpacity: !0, + strokeDasharray: !0, + strokeDashoffset: !0, + strokeMiterlimit: !0, + strokeOpacity: !0, + strokeWidth: !0 +}, + rb = ["Webkit", "ms", "Moz", "O"]; +Object.keys(qb).forEach(function (a) { + rb.forEach(function (b) { + b = b + a.charAt(0).toUpperCase() + a.substring(1); + qb[b] = qb[a]; + }); +}); + +objectAssign({ + menuitem: !0 +}, { + area: !0, + base: !0, + br: !0, + col: !0, + embed: !0, + hr: !0, + img: !0, + input: !0, + keygen: !0, + link: !0, + meta: !0, + param: !0, + source: !0, + track: !0, + wbr: !0 +}); + +var Pb = !1; +if (fa) try { + var Qb = {}; + Object.defineProperty(Qb, "passive", { + get: function () { + Pb = !0; + } + }); + window.addEventListener("test", Qb, Qb); + window.removeEventListener("test", Qb, Qb); +} catch (a) { + Pb = !1; +} + +function Zb(a) { + var b = a, + c = a; + if (a.alternate) for (; b.return;) b = b.return;else { + a = b; + + do b = a, 0 !== (b.flags & 1026) && (c = b.return), a = b.return; while (a); + } + return 3 === b.tag ? c : null; +} + +function ac(a) { + if (Zb(a) !== a) throw Error(y(188)); +} + +function bc(a) { + var b = a.alternate; + + if (!b) { + b = Zb(a); + if (null === b) throw Error(y(188)); + return b !== a ? null : a; + } + + for (var c = a, d = b;;) { + var e = c.return; + if (null === e) break; + var f = e.alternate; + + if (null === f) { + d = e.return; + + if (null !== d) { + c = d; + continue; + } + + break; + } + + if (e.child === f.child) { + for (f = e.child; f;) { + if (f === c) return ac(e), a; + if (f === d) return ac(e), b; + f = f.sibling; + } + + throw Error(y(188)); + } + + if (c.return !== d.return) c = e, d = f;else { + for (var g = !1, h = e.child; h;) { + if (h === c) { + g = !0; + c = e; + d = f; + break; + } + + if (h === d) { + g = !0; + d = e; + c = f; + break; + } + + h = h.sibling; + } + + if (!g) { + for (h = f.child; h;) { + if (h === c) { + g = !0; + c = f; + d = e; + break; + } + + if (h === d) { + g = !0; + d = f; + c = e; + break; + } + + h = h.sibling; + } + + if (!g) throw Error(y(189)); + } + } + if (c.alternate !== d) throw Error(y(190)); + } + + if (3 !== c.tag) throw Error(y(188)); + return c.stateNode.current === c ? a : b; +} + +function cc(a) { + a = bc(a); + if (!a) return null; + + for (var b = a;;) { + if (5 === b.tag || 6 === b.tag) return b; + if (b.child) b.child.return = b, b = b.child;else { + if (b === a) break; + + for (; !b.sibling;) { + if (!b.return || b.return === a) return null; + b = b.return; + } + + b.sibling.return = b.return; + b = b.sibling; + } + } + + return null; +} + +function Dc(a, b) { + var c = {}; + c[a.toLowerCase()] = b.toLowerCase(); + c["Webkit" + a] = "webkit" + b; + c["Moz" + a] = "moz" + b; + return c; +} + +var Ec = { + animationend: Dc("Animation", "AnimationEnd"), + animationiteration: Dc("Animation", "AnimationIteration"), + animationstart: Dc("Animation", "AnimationStart"), + transitionend: Dc("Transition", "TransitionEnd") +}, + Fc = {}, + Gc = {}; +fa && (Gc = document.createElement("div").style, "AnimationEvent" in window || (delete Ec.animationend.animation, delete Ec.animationiteration.animation, delete Ec.animationstart.animation), "TransitionEvent" in window || delete Ec.transitionend.transition); + +function Hc(a) { + if (Fc[a]) return Fc[a]; + if (!Ec[a]) return a; + var b = Ec[a], + c; + + for (c in b) if (b.hasOwnProperty(c) && c in Gc) return Fc[a] = b[c]; + + return a; +} + +var Ic = Hc("animationend"), + Jc = Hc("animationiteration"), + Kc = Hc("animationstart"), + Lc = Hc("transitionend"), + Mc = new Map(), + Nc = new Map(), + Oc = ["abort", "abort", Ic, "animationEnd", Jc, "animationIteration", Kc, "animationStart", "canplay", "canPlay", "canplaythrough", "canPlayThrough", "durationchange", "durationChange", "emptied", "emptied", "encrypted", "encrypted", "ended", "ended", "error", "error", "gotpointercapture", "gotPointerCapture", "load", "load", "loadeddata", "loadedData", "loadedmetadata", "loadedMetadata", "loadstart", "loadStart", "lostpointercapture", "lostPointerCapture", "playing", "playing", "progress", "progress", "seeking", "seeking", "stalled", "stalled", "suspend", "suspend", "timeupdate", "timeUpdate", Lc, "transitionEnd", "waiting", "waiting"]; + +function Pc(a, b) { + for (var c = 0; c < a.length; c += 2) { + var d = a[c], + e = a[c + 1]; + e = "on" + (e[0].toUpperCase() + e.slice(1)); + Nc.set(d, b); + Mc.set(d, e); + da(e, [d]); + } +} + +var Qc = scheduler.unstable_now; +Qc(); + +scheduler.unstable_UserBlockingPriority; + scheduler.unstable_runWithPriority; + +function od(a) { + var b = a.keyCode; + "charCode" in a ? (a = a.charCode, 0 === a && 13 === b && (a = 13)) : a = b; + 10 === a && (a = 13); + return 32 <= a || 13 === a ? a : 0; +} + +function pd() { + return !0; +} + +function qd() { + return !1; +} + +function rd(a) { + function b(b, d, e, f, g) { + this._reactName = b; + this._targetInst = e; + this.type = d; + this.nativeEvent = f; + this.target = g; + this.currentTarget = null; + + for (var c in a) a.hasOwnProperty(c) && (b = a[c], this[c] = b ? b(f) : f[c]); + + this.isDefaultPrevented = (null != f.defaultPrevented ? f.defaultPrevented : !1 === f.returnValue) ? pd : qd; + this.isPropagationStopped = qd; + return this; + } + + objectAssign(b.prototype, { + preventDefault: function () { + this.defaultPrevented = !0; + var a = this.nativeEvent; + a && (a.preventDefault ? a.preventDefault() : "unknown" !== typeof a.returnValue && (a.returnValue = !1), this.isDefaultPrevented = pd); + }, + stopPropagation: function () { + var a = this.nativeEvent; + a && (a.stopPropagation ? a.stopPropagation() : "unknown" !== typeof a.cancelBubble && (a.cancelBubble = !0), this.isPropagationStopped = pd); + }, + persist: function () {}, + isPersistent: pd + }); + return b; +} + +var sd = { + eventPhase: 0, + bubbles: 0, + cancelable: 0, + timeStamp: function (a) { + return a.timeStamp || Date.now(); + }, + defaultPrevented: 0, + isTrusted: 0 +}; + rd(sd); + var ud = objectAssign({}, sd, { + view: 0, + detail: 0 +}); + rd(ud); + var wd, + xd, + yd, + Ad = objectAssign({}, ud, { + screenX: 0, + screenY: 0, + clientX: 0, + clientY: 0, + pageX: 0, + pageY: 0, + ctrlKey: 0, + shiftKey: 0, + altKey: 0, + metaKey: 0, + getModifierState: zd, + button: 0, + buttons: 0, + relatedTarget: function (a) { + return void 0 === a.relatedTarget ? a.fromElement === a.srcElement ? a.toElement : a.fromElement : a.relatedTarget; + }, + movementX: function (a) { + if ("movementX" in a) return a.movementX; + a !== yd && (yd && "mousemove" === a.type ? (wd = a.screenX - yd.screenX, xd = a.screenY - yd.screenY) : xd = wd = 0, yd = a); + return wd; + }, + movementY: function (a) { + return "movementY" in a ? a.movementY : xd; + } +}); + rd(Ad); + var Cd = objectAssign({}, Ad, { + dataTransfer: 0 +}); + rd(Cd); + var Ed = objectAssign({}, ud, { + relatedTarget: 0 +}); + rd(Ed); + var Gd = objectAssign({}, sd, { + animationName: 0, + elapsedTime: 0, + pseudoElement: 0 +}); + rd(Gd); + var Id = objectAssign({}, sd, { + clipboardData: function (a) { + return "clipboardData" in a ? a.clipboardData : window.clipboardData; + } +}); + rd(Id); + var Kd = objectAssign({}, sd, { + data: 0 +}); + rd(Kd); + var Md = { + Esc: "Escape", + Spacebar: " ", + Left: "ArrowLeft", + Up: "ArrowUp", + Right: "ArrowRight", + Down: "ArrowDown", + Del: "Delete", + Win: "OS", + Menu: "ContextMenu", + Apps: "ContextMenu", + Scroll: "ScrollLock", + MozPrintableKey: "Unidentified" +}, + Nd = { + 8: "Backspace", + 9: "Tab", + 12: "Clear", + 13: "Enter", + 16: "Shift", + 17: "Control", + 18: "Alt", + 19: "Pause", + 20: "CapsLock", + 27: "Escape", + 32: " ", + 33: "PageUp", + 34: "PageDown", + 35: "End", + 36: "Home", + 37: "ArrowLeft", + 38: "ArrowUp", + 39: "ArrowRight", + 40: "ArrowDown", + 45: "Insert", + 46: "Delete", + 112: "F1", + 113: "F2", + 114: "F3", + 115: "F4", + 116: "F5", + 117: "F6", + 118: "F7", + 119: "F8", + 120: "F9", + 121: "F10", + 122: "F11", + 123: "F12", + 144: "NumLock", + 145: "ScrollLock", + 224: "Meta" +}, + Od = { + Alt: "altKey", + Control: "ctrlKey", + Meta: "metaKey", + Shift: "shiftKey" +}; + +function Pd(a) { + var b = this.nativeEvent; + return b.getModifierState ? b.getModifierState(a) : (a = Od[a]) ? !!b[a] : !1; +} + +function zd() { + return Pd; +} + +var Qd = objectAssign({}, ud, { + key: function (a) { + if (a.key) { + var b = Md[a.key] || a.key; + if ("Unidentified" !== b) return b; + } + + return "keypress" === a.type ? (a = od(a), 13 === a ? "Enter" : String.fromCharCode(a)) : "keydown" === a.type || "keyup" === a.type ? Nd[a.keyCode] || "Unidentified" : ""; + }, + code: 0, + location: 0, + ctrlKey: 0, + shiftKey: 0, + altKey: 0, + metaKey: 0, + repeat: 0, + locale: 0, + getModifierState: zd, + charCode: function (a) { + return "keypress" === a.type ? od(a) : 0; + }, + keyCode: function (a) { + return "keydown" === a.type || "keyup" === a.type ? a.keyCode : 0; + }, + which: function (a) { + return "keypress" === a.type ? od(a) : "keydown" === a.type || "keyup" === a.type ? a.keyCode : 0; + } +}); + rd(Qd); + var Sd = objectAssign({}, Ad, { + pointerId: 0, + width: 0, + height: 0, + pressure: 0, + tangentialPressure: 0, + tiltX: 0, + tiltY: 0, + twist: 0, + pointerType: 0, + isPrimary: 0 +}); + rd(Sd); + var Ud = objectAssign({}, ud, { + touches: 0, + targetTouches: 0, + changedTouches: 0, + altKey: 0, + metaKey: 0, + ctrlKey: 0, + shiftKey: 0, + getModifierState: zd +}); + rd(Ud); + var Wd = objectAssign({}, sd, { + propertyName: 0, + elapsedTime: 0, + pseudoElement: 0 +}); + rd(Wd); + var Yd = objectAssign({}, Ad, { + deltaX: function (a) { + return "deltaX" in a ? a.deltaX : "wheelDeltaX" in a ? -a.wheelDeltaX : 0; + }, + deltaY: function (a) { + return "deltaY" in a ? a.deltaY : "wheelDeltaY" in a ? -a.wheelDeltaY : "wheelDelta" in a ? -a.wheelDelta : 0; + }, + deltaZ: 0, + deltaMode: 0 +}); + rd(Yd); + +if (fa) { + + if (fa) { + var ye = ("oninput" in document); + + if (!ye) { + var ze = document.createElement("div"); + ze.setAttribute("oninput", "return;"); + ye = "function" === typeof ze.oninput; + } + } +} + +Pc("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "), 0); +Pc("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "), 1); +Pc(Oc, 2); + +for (var Ve = "change selectionchange textInput compositionstart compositionend compositionupdate".split(" "), We = 0; We < Ve.length; We++) Nc.set(Ve[We], 0); + +ea("onMouseEnter", ["mouseout", "mouseover"]); +ea("onMouseLeave", ["mouseout", "mouseover"]); +ea("onPointerEnter", ["pointerout", "pointerover"]); +ea("onPointerLeave", ["pointerout", "pointerover"]); +da("onChange", "change click focusin focusout input keydown keyup selectionchange".split(" ")); +da("onSelect", "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")); +da("onBeforeInput", ["compositionend", "keypress", "textInput", "paste"]); +da("onCompositionEnd", "compositionend focusout keydown keypress keyup mousedown".split(" ")); +da("onCompositionStart", "compositionstart focusout keydown keypress keyup mousedown".split(" ")); +da("onCompositionUpdate", "compositionupdate focusout keydown keypress keyup mousedown".split(" ")); + +"_reactListening" + Math.random().toString(36).slice(2); + +function sf(a) { + a = a.previousSibling; + + for (var b = 0; a;) { + if (8 === a.nodeType) { + var c = a.data; + + if ("$" === c || "$!" === c || "$?" === c) { + if (0 === b) return a; + b--; + } else "/$" === c && b++; + } + + a = a.previousSibling; + } + + return null; +} + +var vf = Math.random().toString(36).slice(2), + wf = "__reactFiber$" + vf, + ff = "__reactContainer$" + vf; + +function wc(a) { + var b = a[wf]; + if (b) return b; + + for (var c = a.parentNode; c;) { + if (b = c[ff] || c[wf]) { + c = b.alternate; + if (null !== b.child || null !== c && null !== c.child) for (a = sf(a); null !== a;) { + if (c = a[wf]) return c; + a = sf(a); + } + return b; + } + + a = c; + c = a.parentNode; + } + + return null; +} + +var Lf = null, + Mf = null; + scheduler.unstable_runWithPriority; + scheduler.unstable_scheduleCallback; + scheduler.unstable_cancelCallback; + scheduler.unstable_shouldYield; + scheduler.unstable_requestPaint; + var Sf = scheduler.unstable_now; + scheduler.unstable_getCurrentPriorityLevel; + scheduler.unstable_ImmediatePriority; + scheduler.unstable_UserBlockingPriority; + scheduler.unstable_NormalPriority; + scheduler.unstable_LowPriority; + scheduler.unstable_IdlePriority; + Sf(); + +ra.ReactCurrentBatchConfig; + +new react.Component().refs; + +ra.ReactCurrentDispatcher; + ra.ReactCurrentBatchConfig; + +ra.ReactCurrentOwner; + +ra.ReactCurrentDispatcher; + ra.ReactCurrentOwner; + +function pk() { + return null; +} + +var wk = { + findFiberByHostInstance: wc, + bundleType: 0, + version: "17.0.1", + rendererPackageName: "react-dom" +}; +var xk = { + bundleType: wk.bundleType, + version: wk.version, + rendererPackageName: wk.rendererPackageName, + rendererConfig: wk.rendererConfig, + overrideHookState: null, + overrideHookStateDeletePath: null, + overrideHookStateRenamePath: null, + overrideProps: null, + overridePropsDeletePath: null, + overridePropsRenamePath: null, + setSuspenseHandler: null, + scheduleUpdate: null, + currentDispatcherRef: ra.ReactCurrentDispatcher, + findHostInstanceByFiber: function (a) { + a = cc(a); + return null === a ? null : a.stateNode; + }, + findFiberByHostInstance: wk.findFiberByHostInstance || pk, + findHostInstancesForRefresh: null, + scheduleRefresh: null, + scheduleRoot: null, + setRefreshHandler: null, + getCurrentFiber: null +}; + +if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { + var yk = __REACT_DEVTOOLS_GLOBAL_HOOK__; + if (!yk.isDisabled && yk.supportsFiber) try { + Lf = yk.inject(xk), Mf = yk; + } catch (a) {} +} + +/** @license React v0.20.2 + * scheduler-tracing.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var schedulerTracing_development = createCommonjsModule(function (module, exports) { + +{ + (function () { + + var DEFAULT_THREAD_ID = 0; // Counters used to generate unique IDs. + + var interactionIDCounter = 0; + var threadIDCounter = 0; // Set of currently traced interactions. + // Interactions "stack"– + // Meaning that newly traced interactions are appended to the previously active set. + // When an interaction goes out of scope, the previous set (if any) is restored. + + exports.__interactionsRef = null; // Listener(s) to notify when interactions begin and end. + + exports.__subscriberRef = null; + { + exports.__interactionsRef = { + current: new Set() + }; + exports.__subscriberRef = { + current: null + }; + } + + function unstable_clear(callback) { + var prevInteractions = exports.__interactionsRef.current; + exports.__interactionsRef.current = new Set(); + + try { + return callback(); + } finally { + exports.__interactionsRef.current = prevInteractions; + } + } + + function unstable_getCurrent() { + { + return exports.__interactionsRef.current; + } + } + + function unstable_getThreadID() { + return ++threadIDCounter; + } + + function unstable_trace(name, timestamp, callback) { + var threadID = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_THREAD_ID; + var interaction = { + __count: 1, + id: interactionIDCounter++, + name: name, + timestamp: timestamp + }; + var prevInteractions = exports.__interactionsRef.current; // Traced interactions should stack/accumulate. + // To do that, clone the current interactions. + // The previous set will be restored upon completion. + + var interactions = new Set(prevInteractions); + interactions.add(interaction); + exports.__interactionsRef.current = interactions; + var subscriber = exports.__subscriberRef.current; + var returnValue; + + try { + if (subscriber !== null) { + subscriber.onInteractionTraced(interaction); + } + } finally { + try { + if (subscriber !== null) { + subscriber.onWorkStarted(interactions, threadID); + } + } finally { + try { + returnValue = callback(); + } finally { + exports.__interactionsRef.current = prevInteractions; + + try { + if (subscriber !== null) { + subscriber.onWorkStopped(interactions, threadID); + } + } finally { + interaction.__count--; // If no async work was scheduled for this interaction, + // Notify subscribers that it's completed. + + if (subscriber !== null && interaction.__count === 0) { + subscriber.onInteractionScheduledWorkCompleted(interaction); + } + } + } + } + } + + return returnValue; + } + + function unstable_wrap(callback) { + var threadID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_THREAD_ID; + var wrappedInteractions = exports.__interactionsRef.current; + var subscriber = exports.__subscriberRef.current; + + if (subscriber !== null) { + subscriber.onWorkScheduled(wrappedInteractions, threadID); + } // Update the pending async work count for the current interactions. + // Update after calling subscribers in case of error. + + + wrappedInteractions.forEach(function (interaction) { + interaction.__count++; + }); + var hasRun = false; + + function wrapped() { + var prevInteractions = exports.__interactionsRef.current; + exports.__interactionsRef.current = wrappedInteractions; + subscriber = exports.__subscriberRef.current; + + try { + var returnValue; + + try { + if (subscriber !== null) { + subscriber.onWorkStarted(wrappedInteractions, threadID); + } + } finally { + try { + returnValue = callback.apply(undefined, arguments); + } finally { + exports.__interactionsRef.current = prevInteractions; + + if (subscriber !== null) { + subscriber.onWorkStopped(wrappedInteractions, threadID); + } + } + } + + return returnValue; + } finally { + if (!hasRun) { + // We only expect a wrapped function to be executed once, + // But in the event that it's executed more than once– + // Only decrement the outstanding interaction counts once. + hasRun = true; // Update pending async counts for all wrapped interactions. + // If this was the last scheduled async work for any of them, + // Mark them as completed. + + wrappedInteractions.forEach(function (interaction) { + interaction.__count--; + + if (subscriber !== null && interaction.__count === 0) { + subscriber.onInteractionScheduledWorkCompleted(interaction); + } + }); + } + } + } + + wrapped.cancel = function cancel() { + subscriber = exports.__subscriberRef.current; + + try { + if (subscriber !== null) { + subscriber.onWorkCanceled(wrappedInteractions, threadID); + } + } finally { + // Update pending async counts for all wrapped interactions. + // If this was the last scheduled async work for any of them, + // Mark them as completed. + wrappedInteractions.forEach(function (interaction) { + interaction.__count--; + + if (subscriber && interaction.__count === 0) { + subscriber.onInteractionScheduledWorkCompleted(interaction); + } + }); + } + }; + + return wrapped; + } + + var subscribers = null; + { + subscribers = new Set(); + } + + function unstable_subscribe(subscriber) { + { + subscribers.add(subscriber); + + if (subscribers.size === 1) { + exports.__subscriberRef.current = { + onInteractionScheduledWorkCompleted: onInteractionScheduledWorkCompleted, + onInteractionTraced: onInteractionTraced, + onWorkCanceled: onWorkCanceled, + onWorkScheduled: onWorkScheduled, + onWorkStarted: onWorkStarted, + onWorkStopped: onWorkStopped + }; + } + } + } + + function unstable_unsubscribe(subscriber) { + { + subscribers.delete(subscriber); + + if (subscribers.size === 0) { + exports.__subscriberRef.current = null; + } + } + } + + function onInteractionTraced(interaction) { + var didCatchError = false; + var caughtError = null; + subscribers.forEach(function (subscriber) { + try { + subscriber.onInteractionTraced(interaction); + } catch (error) { + if (!didCatchError) { + didCatchError = true; + caughtError = error; + } + } + }); + + if (didCatchError) { + throw caughtError; + } + } + + function onInteractionScheduledWorkCompleted(interaction) { + var didCatchError = false; + var caughtError = null; + subscribers.forEach(function (subscriber) { + try { + subscriber.onInteractionScheduledWorkCompleted(interaction); + } catch (error) { + if (!didCatchError) { + didCatchError = true; + caughtError = error; + } + } + }); + + if (didCatchError) { + throw caughtError; + } + } + + function onWorkScheduled(interactions, threadID) { + var didCatchError = false; + var caughtError = null; + subscribers.forEach(function (subscriber) { + try { + subscriber.onWorkScheduled(interactions, threadID); + } catch (error) { + if (!didCatchError) { + didCatchError = true; + caughtError = error; + } + } + }); + + if (didCatchError) { + throw caughtError; + } + } + + function onWorkStarted(interactions, threadID) { + var didCatchError = false; + var caughtError = null; + subscribers.forEach(function (subscriber) { + try { + subscriber.onWorkStarted(interactions, threadID); + } catch (error) { + if (!didCatchError) { + didCatchError = true; + caughtError = error; + } + } + }); + + if (didCatchError) { + throw caughtError; + } + } + + function onWorkStopped(interactions, threadID) { + var didCatchError = false; + var caughtError = null; + subscribers.forEach(function (subscriber) { + try { + subscriber.onWorkStopped(interactions, threadID); + } catch (error) { + if (!didCatchError) { + didCatchError = true; + caughtError = error; + } + } + }); + + if (didCatchError) { + throw caughtError; + } + } + + function onWorkCanceled(interactions, threadID) { + var didCatchError = false; + var caughtError = null; + subscribers.forEach(function (subscriber) { + try { + subscriber.onWorkCanceled(interactions, threadID); + } catch (error) { + if (!didCatchError) { + didCatchError = true; + caughtError = error; + } + } + }); + + if (didCatchError) { + throw caughtError; + } + } + + exports.unstable_clear = unstable_clear; + exports.unstable_getCurrent = unstable_getCurrent; + exports.unstable_getThreadID = unstable_getThreadID; + exports.unstable_subscribe = unstable_subscribe; + exports.unstable_trace = unstable_trace; + exports.unstable_unsubscribe = unstable_unsubscribe; + exports.unstable_wrap = unstable_wrap; + })(); +} +}); + +var tracing = createCommonjsModule(function (module) { + +{ + module.exports = schedulerTracing_development; +} +}); + +/** @license React v17.0.1 + * react-dom.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var reactDom_development = createCommonjsModule(function (module, exports) { +{(function(){var React=react;var _assign=objectAssign;var Scheduler=scheduler;var tracing$1=tracing;var ReactSharedInternals=React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;// by calls to these methods by a Babel plugin. +// +// In PROD (or in packages without access to React internals), +// they are left as they are instead. +function warn(format){{for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key];}printWarning('warn',format,args);}}function error(format){{for(var _len2=arguments.length,args=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){args[_key2-1]=arguments[_key2];}printWarning('error',format,args);}}function printWarning(level,format,args){// When changing this logic, you might want to also +// update consoleWithStackDev.www.js as well. +{var ReactDebugCurrentFrame=ReactSharedInternals.ReactDebugCurrentFrame;var stack=ReactDebugCurrentFrame.getStackAddendum();if(stack!==''){format+='%s';args=args.concat([stack]);}var argsWithFormat=args.map(function(item){return ''+item;});// Careful: RN currently depends on this prefix +argsWithFormat.unshift('Warning: '+format);// We intentionally don't use spread (or .apply) directly because it +// breaks IE9: https://github.com/facebook/react/issues/13610 +// eslint-disable-next-line react-internal/no-production-logging +Function.prototype.apply.call(console[level],console,argsWithFormat);}}if(!React){{throw Error("ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM.");}}var FunctionComponent=0;var ClassComponent=1;var IndeterminateComponent=2;// Before we know whether it is function or class +var HostRoot=3;// Root of a host tree. Could be nested inside another node. +var HostPortal=4;// A subtree. Could be an entry point to a different renderer. +var HostComponent=5;var HostText=6;var Fragment=7;var Mode=8;var ContextConsumer=9;var ContextProvider=10;var ForwardRef=11;var Profiler=12;var SuspenseComponent=13;var MemoComponent=14;var SimpleMemoComponent=15;var LazyComponent=16;var IncompleteClassComponent=17;var DehydratedFragment=18;var SuspenseListComponent=19;var FundamentalComponent=20;var ScopeComponent=21;var Block=22;var OffscreenComponent=23;var LegacyHiddenComponent=24;// Filter certain DOM attributes (e.g. src, href) if their values are empty strings. +var enableProfilerTimer=true;// Record durations for commit and passive effects phases. +var enableFundamentalAPI=false;// Experimental Scope support. +var enableNewReconciler=false;// Errors that are thrown while unmounting (or after in the case of passive effects) +var warnAboutStringRefs=false;var allNativeEvents=new Set();/** + * Mapping from registration name to event name + */var registrationNameDependencies={};/** + * Mapping from lowercase registration names to the properly cased version, + * used to warn in the case of missing event handlers. Available + * only in true. + * @type {Object} + */var possibleRegistrationNames={};// Trust the developer to only use possibleRegistrationNames in true +function registerTwoPhaseEvent(registrationName,dependencies){registerDirectEvent(registrationName,dependencies);registerDirectEvent(registrationName+'Capture',dependencies);}function registerDirectEvent(registrationName,dependencies){{if(registrationNameDependencies[registrationName]){error('EventRegistry: More than one plugin attempted to publish the same '+'registration name, `%s`.',registrationName);}}registrationNameDependencies[registrationName]=dependencies;{var lowerCasedName=registrationName.toLowerCase();possibleRegistrationNames[lowerCasedName]=registrationName;if(registrationName==='onDoubleClick'){possibleRegistrationNames.ondblclick=registrationName;}}for(var i=0;i2&&(name[0]==='o'||name[0]==='O')&&(name[1]==='n'||name[1]==='N')){return true;}return false;}function shouldRemoveAttributeWithWarning(name,value,propertyInfo,isCustomComponentTag){if(propertyInfo!==null&&propertyInfo.type===RESERVED){return false;}switch(typeof value){case'function':// $FlowIssue symbol is perfectly valid here +case'symbol':// eslint-disable-line +return true;case'boolean':{if(isCustomComponentTag){return false;}if(propertyInfo!==null){return !propertyInfo.acceptsBooleans;}else {var prefix=name.toLowerCase().slice(0,5);return prefix!=='data-'&&prefix!=='aria-';}}default:return false;}}function shouldRemoveAttribute(name,value,propertyInfo,isCustomComponentTag){if(value===null||typeof value==='undefined'){return true;}if(shouldRemoveAttributeWithWarning(name,value,propertyInfo,isCustomComponentTag)){return true;}if(isCustomComponentTag){return false;}if(propertyInfo!==null){switch(propertyInfo.type){case BOOLEAN:return !value;case OVERLOADED_BOOLEAN:return value===false;case NUMERIC:return isNaN(value);case POSITIVE_NUMERIC:return isNaN(value)||value<1;}}return false;}function getPropertyInfo(name){return properties.hasOwnProperty(name)?properties[name]:null;}function PropertyInfoRecord(name,type,mustUseProperty,attributeName,attributeNamespace,sanitizeURL,removeEmptyString){this.acceptsBooleans=type===BOOLEANISH_STRING||type===BOOLEAN||type===OVERLOADED_BOOLEAN;this.attributeName=attributeName;this.attributeNamespace=attributeNamespace;this.mustUseProperty=mustUseProperty;this.propertyName=name;this.type=type;this.sanitizeURL=sanitizeURL;this.removeEmptyString=removeEmptyString;}// When adding attributes to this list, be sure to also add them to +// the `possibleStandardNames` module to ensure casing and incorrect +// name warnings. +var properties={};// These props are reserved by React. They shouldn't be written to the DOM. +var reservedProps=['children','dangerouslySetInnerHTML',// TODO: This prevents the assignment of defaultValue to regular +// elements (not just inputs). Now that ReactDOMInput assigns to the +// defaultValue property -- do we need this? +'defaultValue','defaultChecked','innerHTML','suppressContentEditableWarning','suppressHydrationWarning','style'];reservedProps.forEach(function(name){properties[name]=new PropertyInfoRecord(name,RESERVED,false,// mustUseProperty +name,// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// A few React string attributes have a different name. +// This is a mapping from React prop names to the attribute names. +[['acceptCharset','accept-charset'],['className','class'],['htmlFor','for'],['httpEquiv','http-equiv']].forEach(function(_ref){var name=_ref[0],attributeName=_ref[1];properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty +attributeName,// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are "enumerated" HTML attributes that accept "true" and "false". +// In React, we let users pass `true` and `false` even though technically +// these aren't boolean attributes (they are coerced to strings). +['contentEditable','draggable','spellCheck','value'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEANISH_STRING,false,// mustUseProperty +name.toLowerCase(),// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are "enumerated" SVG attributes that accept "true" and "false". +// In React, we let users pass `true` and `false` even though technically +// these aren't boolean attributes (they are coerced to strings). +// Since these are SVG attributes, their attribute names are case-sensitive. +['autoReverse','externalResourcesRequired','focusable','preserveAlpha'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEANISH_STRING,false,// mustUseProperty +name,// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are HTML boolean attributes. +['allowFullScreen','async',// Note: there is a special case that prevents it from being written to the DOM +// on the client side because the browsers are inconsistent. Instead we call focus(). +'autoFocus','autoPlay','controls','default','defer','disabled','disablePictureInPicture','disableRemotePlayback','formNoValidate','hidden','loop','noModule','noValidate','open','playsInline','readOnly','required','reversed','scoped','seamless',// Microdata +'itemScope'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEAN,false,// mustUseProperty +name.toLowerCase(),// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are the few React props that we set as DOM properties +// rather than attributes. These are all booleans. +['checked',// Note: `option.selected` is not updated if `select.multiple` is +// disabled with `removeAttribute`. We have special logic for handling this. +'multiple','muted','selected'// NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEAN,true,// mustUseProperty +name,// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are HTML attributes that are "overloaded booleans": they behave like +// booleans, but can also accept a string value. +['capture','download'// NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function(name){properties[name]=new PropertyInfoRecord(name,OVERLOADED_BOOLEAN,false,// mustUseProperty +name,// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are HTML attributes that must be positive numbers. +['cols','rows','size','span'// NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function(name){properties[name]=new PropertyInfoRecord(name,POSITIVE_NUMERIC,false,// mustUseProperty +name,// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are HTML attributes that must be numbers. +['rowSpan','start'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,NUMERIC,false,// mustUseProperty +name.toLowerCase(),// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});var CAMELIZE=/[\-\:]([a-z])/g;var capitalize=function(token){return token[1].toUpperCase();};// This is a list of all SVG attributes that need special casing, namespacing, +// or boolean value assignment. Regular attributes that just accept strings +// and have the same names are omitted, just like in the HTML attribute filter. +// Some of these attributes can be hard to find. This list was created by +// scraping the MDN documentation. +['accent-height','alignment-baseline','arabic-form','baseline-shift','cap-height','clip-path','clip-rule','color-interpolation','color-interpolation-filters','color-profile','color-rendering','dominant-baseline','enable-background','fill-opacity','fill-rule','flood-color','flood-opacity','font-family','font-size','font-size-adjust','font-stretch','font-style','font-variant','font-weight','glyph-name','glyph-orientation-horizontal','glyph-orientation-vertical','horiz-adv-x','horiz-origin-x','image-rendering','letter-spacing','lighting-color','marker-end','marker-mid','marker-start','overline-position','overline-thickness','paint-order','panose-1','pointer-events','rendering-intent','shape-rendering','stop-color','stop-opacity','strikethrough-position','strikethrough-thickness','stroke-dasharray','stroke-dashoffset','stroke-linecap','stroke-linejoin','stroke-miterlimit','stroke-opacity','stroke-width','text-anchor','text-decoration','text-rendering','underline-position','underline-thickness','unicode-bidi','unicode-range','units-per-em','v-alphabetic','v-hanging','v-ideographic','v-mathematical','vector-effect','vert-adv-y','vert-origin-x','vert-origin-y','word-spacing','writing-mode','xmlns:xlink','x-height'// NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function(attributeName){var name=attributeName.replace(CAMELIZE,capitalize);properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty +attributeName,null,// attributeNamespace +false,// sanitizeURL +false);});// String SVG attributes with the xlink namespace. +['xlink:actuate','xlink:arcrole','xlink:role','xlink:show','xlink:title','xlink:type'// NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function(attributeName){var name=attributeName.replace(CAMELIZE,capitalize);properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty +attributeName,'http://www.w3.org/1999/xlink',false,// sanitizeURL +false);});// String SVG attributes with the xml namespace. +['xml:base','xml:lang','xml:space'// NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function(attributeName){var name=attributeName.replace(CAMELIZE,capitalize);properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty +attributeName,'http://www.w3.org/XML/1998/namespace',false,// sanitizeURL +false);});// These attribute exists both in HTML and SVG. +// The attribute name is case-sensitive in SVG so we can't just use +// the React name like we do for attributes that exist only in HTML. +['tabIndex','crossOrigin'].forEach(function(attributeName){properties[attributeName]=new PropertyInfoRecord(attributeName,STRING,false,// mustUseProperty +attributeName.toLowerCase(),// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These attributes accept URLs. These must not allow javascript: URLS. +// These will also need to accept Trusted Types object in the future. +var xlinkHref='xlinkHref';properties[xlinkHref]=new PropertyInfoRecord('xlinkHref',STRING,false,// mustUseProperty +'xlink:href','http://www.w3.org/1999/xlink',true,// sanitizeURL +false);['src','href','action','formAction'].forEach(function(attributeName){properties[attributeName]=new PropertyInfoRecord(attributeName,STRING,false,// mustUseProperty +attributeName.toLowerCase(),// attributeName +null,// attributeNamespace +true,// sanitizeURL +true);});// and any newline or tab are filtered out as if they're not part of the URL. +// https://url.spec.whatwg.org/#url-parsing +// Tab or newline are defined as \r\n\t: +// https://infra.spec.whatwg.org/#ascii-tab-or-newline +// A C0 control is a code point in the range \u0000 NULL to \u001F +// INFORMATION SEPARATOR ONE, inclusive: +// https://infra.spec.whatwg.org/#c0-control-or-space +/* eslint-disable max-len */var isJavaScriptProtocol=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i;var didWarn=false;function sanitizeURL(url){{if(!didWarn&&isJavaScriptProtocol.test(url)){didWarn=true;error('A future version of React will block javascript: URLs as a security precaution. '+'Use event handlers instead if you can. If you need to generate unsafe HTML try '+'using dangerouslySetInnerHTML instead. React was passed %s.',JSON.stringify(url));}}}/** + * Get the value for a property on a node. Only used in DEV for SSR validation. + * The "expected" argument is used as a hint of what the expected value is. + * Some properties have multiple equivalent values. + */function getValueForProperty(node,name,expected,propertyInfo){{if(propertyInfo.mustUseProperty){var propertyName=propertyInfo.propertyName;return node[propertyName];}else {if(propertyInfo.sanitizeURL){// If we haven't fully disabled javascript: URLs, and if +// the hydration is successful of a javascript: URL, we +// still want to warn on the client. +sanitizeURL(''+expected);}var attributeName=propertyInfo.attributeName;var stringValue=null;if(propertyInfo.type===OVERLOADED_BOOLEAN){if(node.hasAttribute(attributeName)){var value=node.getAttribute(attributeName);if(value===''){return true;}if(shouldRemoveAttribute(name,expected,propertyInfo,false)){return value;}if(value===''+expected){return expected;}return value;}}else if(node.hasAttribute(attributeName)){if(shouldRemoveAttribute(name,expected,propertyInfo,false)){// We had an attribute but shouldn't have had one, so read it +// for the error message. +return node.getAttribute(attributeName);}if(propertyInfo.type===BOOLEAN){// If this was a boolean, it doesn't matter what the value is +// the fact that we have it is the same as the expected. +return expected;}// Even if this property uses a namespace we use getAttribute +// because we assume its namespaced name is the same as our config. +// To use getAttributeNS we need the local name which we don't have +// in our config atm. +stringValue=node.getAttribute(attributeName);}if(shouldRemoveAttribute(name,expected,propertyInfo,false)){return stringValue===null?expected:stringValue;}else if(stringValue===''+expected){return expected;}else {return stringValue;}}}}/** + * Get the value for a attribute on a node. Only used in DEV for SSR validation. + * The third argument is used as a hint of what the expected value is. Some + * attributes have multiple equivalent values. + */function getValueForAttribute(node,name,expected){{if(!isAttributeNameSafe(name)){return;}// If the object is an opaque reference ID, it's expected that +// the next prop is different than the server value, so just return +// expected +if(isOpaqueHydratingObject(expected)){return expected;}if(!node.hasAttribute(name)){return expected===undefined?undefined:null;}var value=node.getAttribute(name);if(value===''+expected){return expected;}return value;}}/** + * Sets the value for a property on a node. + * + * @param {DOMElement} node + * @param {string} name + * @param {*} value + */function setValueForProperty(node,name,value,isCustomComponentTag){var propertyInfo=getPropertyInfo(name);if(shouldIgnoreAttribute(name,propertyInfo,isCustomComponentTag)){return;}if(shouldRemoveAttribute(name,value,propertyInfo,isCustomComponentTag)){value=null;}// If the prop isn't in the special list, treat it as a simple attribute. +if(isCustomComponentTag||propertyInfo===null){if(isAttributeNameSafe(name)){var _attributeName=name;if(value===null){node.removeAttribute(_attributeName);}else {node.setAttribute(_attributeName,''+value);}}return;}var mustUseProperty=propertyInfo.mustUseProperty;if(mustUseProperty){var propertyName=propertyInfo.propertyName;if(value===null){var type=propertyInfo.type;node[propertyName]=type===BOOLEAN?false:'';}else {// Contrary to `setAttribute`, object properties are properly +// `toString`ed by IE8/9. +node[propertyName]=value;}return;}// The rest are treated as attributes with special cases. +var attributeName=propertyInfo.attributeName,attributeNamespace=propertyInfo.attributeNamespace;if(value===null){node.removeAttribute(attributeName);}else {var _type=propertyInfo.type;var attributeValue;if(_type===BOOLEAN||_type===OVERLOADED_BOOLEAN&&value===true){// If attribute type is boolean, we know for sure it won't be an execution sink +// and we won't require Trusted Type here. +attributeValue='';}else {// `setAttribute` with objects becomes only `[object]` in IE8/9, +// ('' + value) makes it output the correct toString()-value. +{attributeValue=''+value;}if(propertyInfo.sanitizeURL){sanitizeURL(attributeValue.toString());}}if(attributeNamespace){node.setAttributeNS(attributeNamespace,attributeName,attributeValue);}else {node.setAttribute(attributeName,attributeValue);}}}// ATTENTION +// When adding new symbols to this file, +// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var REACT_ELEMENT_TYPE=0xeac7;var REACT_PORTAL_TYPE=0xeaca;var REACT_FRAGMENT_TYPE=0xeacb;var REACT_STRICT_MODE_TYPE=0xeacc;var REACT_PROFILER_TYPE=0xead2;var REACT_PROVIDER_TYPE=0xeacd;var REACT_CONTEXT_TYPE=0xeace;var REACT_FORWARD_REF_TYPE=0xead0;var REACT_SUSPENSE_TYPE=0xead1;var REACT_SUSPENSE_LIST_TYPE=0xead8;var REACT_MEMO_TYPE=0xead3;var REACT_LAZY_TYPE=0xead4;var REACT_BLOCK_TYPE=0xead9;var REACT_SCOPE_TYPE=0xead7;var REACT_OPAQUE_ID_TYPE=0xeae0;var REACT_DEBUG_TRACING_MODE_TYPE=0xeae1;var REACT_OFFSCREEN_TYPE=0xeae2;var REACT_LEGACY_HIDDEN_TYPE=0xeae3;if(typeof Symbol==='function'&&Symbol.for){var symbolFor=Symbol.for;REACT_ELEMENT_TYPE=symbolFor('react.element');REACT_PORTAL_TYPE=symbolFor('react.portal');REACT_FRAGMENT_TYPE=symbolFor('react.fragment');REACT_STRICT_MODE_TYPE=symbolFor('react.strict_mode');REACT_PROFILER_TYPE=symbolFor('react.profiler');REACT_PROVIDER_TYPE=symbolFor('react.provider');REACT_CONTEXT_TYPE=symbolFor('react.context');REACT_FORWARD_REF_TYPE=symbolFor('react.forward_ref');REACT_SUSPENSE_TYPE=symbolFor('react.suspense');REACT_SUSPENSE_LIST_TYPE=symbolFor('react.suspense_list');REACT_MEMO_TYPE=symbolFor('react.memo');REACT_LAZY_TYPE=symbolFor('react.lazy');REACT_BLOCK_TYPE=symbolFor('react.block');symbolFor('react.server.block');symbolFor('react.fundamental');REACT_SCOPE_TYPE=symbolFor('react.scope');REACT_OPAQUE_ID_TYPE=symbolFor('react.opaque.id');REACT_DEBUG_TRACING_MODE_TYPE=symbolFor('react.debug_trace_mode');REACT_OFFSCREEN_TYPE=symbolFor('react.offscreen');REACT_LEGACY_HIDDEN_TYPE=symbolFor('react.legacy_hidden');}var MAYBE_ITERATOR_SYMBOL=typeof Symbol==='function'&&Symbol.iterator;var FAUX_ITERATOR_SYMBOL='@@iterator';function getIteratorFn(maybeIterable){if(maybeIterable===null||typeof maybeIterable!=='object'){return null;}var maybeIterator=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||maybeIterable[FAUX_ITERATOR_SYMBOL];if(typeof maybeIterator==='function'){return maybeIterator;}return null;}// Helpers to patch console.logs to avoid logging during side-effect free +// replaying on render function. This currently only patches the object +// lazily which won't cover if the log function was extracted eagerly. +// We could also eagerly patch the method. +var disabledDepth=0;var prevLog;var prevInfo;var prevWarn;var prevError;var prevGroup;var prevGroupCollapsed;var prevGroupEnd;function disabledLog(){}disabledLog.__reactDisabledLog=true;function disableLogs(){{if(disabledDepth===0){/* eslint-disable react-internal/no-production-logging */prevLog=console.log;prevInfo=console.info;prevWarn=console.warn;prevError=console.error;prevGroup=console.group;prevGroupCollapsed=console.groupCollapsed;prevGroupEnd=console.groupEnd;// https://github.com/facebook/react/issues/19099 +var props={configurable:true,enumerable:true,value:disabledLog,writable:true};// $FlowFixMe Flow thinks console is immutable. +Object.defineProperties(console,{info:props,log:props,warn:props,error:props,group:props,groupCollapsed:props,groupEnd:props});/* eslint-enable react-internal/no-production-logging */}disabledDepth++;}}function reenableLogs(){{disabledDepth--;if(disabledDepth===0){/* eslint-disable react-internal/no-production-logging */var props={configurable:true,enumerable:true,writable:true};// $FlowFixMe Flow thinks console is immutable. +Object.defineProperties(console,{log:_assign({},props,{value:prevLog}),info:_assign({},props,{value:prevInfo}),warn:_assign({},props,{value:prevWarn}),error:_assign({},props,{value:prevError}),group:_assign({},props,{value:prevGroup}),groupCollapsed:_assign({},props,{value:prevGroupCollapsed}),groupEnd:_assign({},props,{value:prevGroupEnd})});/* eslint-enable react-internal/no-production-logging */}if(disabledDepth<0){error('disabledDepth fell below zero. '+'This is a bug in React. Please file an issue.');}}}var ReactCurrentDispatcher=ReactSharedInternals.ReactCurrentDispatcher;var prefix;function describeBuiltInComponentFrame(name,source,ownerFn){{if(prefix===undefined){// Extract the VM specific prefix used by each line. +try{throw Error();}catch(x){var match=x.stack.trim().match(/\n( *(at )?)/);prefix=match&&match[1]||'';}}// We use the prefix to ensure our stacks line up with native stack frames. +return '\n'+prefix+name;}}var reentry=false;var componentFrameCache;{var PossiblyWeakMap=typeof WeakMap==='function'?WeakMap:Map;componentFrameCache=new PossiblyWeakMap();}function describeNativeComponentFrame(fn,construct){// If something asked for a stack inside a fake render, it should get ignored. +if(!fn||reentry){return '';}{var frame=componentFrameCache.get(fn);if(frame!==undefined){return frame;}}var control;reentry=true;var previousPrepareStackTrace=Error.prepareStackTrace;// $FlowFixMe It does accept undefined. +Error.prepareStackTrace=undefined;var previousDispatcher;{previousDispatcher=ReactCurrentDispatcher.current;// Set the dispatcher in DEV because this might be call in the render function +// for warnings. +ReactCurrentDispatcher.current=null;disableLogs();}try{// This should throw. +if(construct){// Something should be setting the props in the constructor. +var Fake=function(){throw Error();};// $FlowFixMe +Object.defineProperty(Fake.prototype,'props',{set:function(){// We use a throwing setter instead of frozen or non-writable props +// because that won't throw in a non-strict mode function. +throw Error();}});if(typeof Reflect==='object'&&Reflect.construct){// We construct a different control for this case to include any extra +// frames added by the construct call. +try{Reflect.construct(Fake,[]);}catch(x){control=x;}Reflect.construct(fn,[],Fake);}else {try{Fake.call();}catch(x){control=x;}fn.call(Fake.prototype);}}else {try{throw Error();}catch(x){control=x;}fn();}}catch(sample){// This is inlined manually because closure doesn't do it for us. +if(sample&&control&&typeof sample.stack==='string'){// This extracts the first frame from the sample that isn't also in the control. +// Skipping one frame that we assume is the frame that calls the two. +var sampleLines=sample.stack.split('\n');var controlLines=control.stack.split('\n');var s=sampleLines.length-1;var c=controlLines.length-1;while(s>=1&&c>=0&&sampleLines[s]!==controlLines[c]){// We expect at least one stack frame to be shared. +// Typically this will be the root most one. However, stack frames may be +// cut off due to maximum stack limits. In this case, one maybe cut off +// earlier than the other. We assume that the sample is longer or the same +// and there for cut off earlier. So we should find the root most frame in +// the sample somewhere in the control. +c--;}for(;s>=1&&c>=0;s--,c--){// Next we find the first one that isn't the same which should be the +// frame that called our sample function and the control. +if(sampleLines[s]!==controlLines[c]){// In V8, the first line is describing the message but other VMs don't. +// If we're about to return the first line, and the control is also on the same +// line, that's a pretty good indicator that our sample threw at same line as +// the control. I.e. before we entered the sample frame. So we ignore this result. +// This can happen if you passed a class to function component, or non-function. +if(s!==1||c!==1){do{s--;c--;// We may still have similar intermediate frames from the construct call. +// The next one that isn't the same should be our match though. +if(c<0||sampleLines[s]!==controlLines[c]){// V8 adds a "new" prefix for native classes. Let's remove it to make it prettier. +var _frame='\n'+sampleLines[s].replace(' at new ',' at ');{if(typeof fn==='function'){componentFrameCache.set(fn,_frame);}}// Return the line we found. +return _frame;}}while(s>=1&&c>=0);}break;}}}}finally{reentry=false;{ReactCurrentDispatcher.current=previousDispatcher;reenableLogs();}Error.prepareStackTrace=previousPrepareStackTrace;}// Fallback to just using the name if we couldn't make it throw. +var name=fn?fn.displayName||fn.name:'';var syntheticFrame=name?describeBuiltInComponentFrame(name):'';{if(typeof fn==='function'){componentFrameCache.set(fn,syntheticFrame);}}return syntheticFrame;}function describeClassComponentFrame(ctor,source,ownerFn){{return describeNativeComponentFrame(ctor,true);}}function describeFunctionComponentFrame(fn,source,ownerFn){{return describeNativeComponentFrame(fn,false);}}function shouldConstruct(Component){var prototype=Component.prototype;return !!(prototype&&prototype.isReactComponent);}function describeUnknownElementTypeFrameInDEV(type,source,ownerFn){if(type==null){return '';}if(typeof type==='function'){{return describeNativeComponentFrame(type,shouldConstruct(type));}}if(typeof type==='string'){return describeBuiltInComponentFrame(type);}switch(type){case REACT_SUSPENSE_TYPE:return describeBuiltInComponentFrame('Suspense');case REACT_SUSPENSE_LIST_TYPE:return describeBuiltInComponentFrame('SuspenseList');}if(typeof type==='object'){switch(type.$$typeof){case REACT_FORWARD_REF_TYPE:return describeFunctionComponentFrame(type.render);case REACT_MEMO_TYPE:// Memo may contain any component type so we recursively resolve it. +return describeUnknownElementTypeFrameInDEV(type.type,source,ownerFn);case REACT_BLOCK_TYPE:return describeFunctionComponentFrame(type._render);case REACT_LAZY_TYPE:{var lazyComponent=type;var payload=lazyComponent._payload;var init=lazyComponent._init;try{// Lazy may contain any component type so we recursively resolve it. +return describeUnknownElementTypeFrameInDEV(init(payload),source,ownerFn);}catch(x){}}}}return '';}function describeFiber(fiber){fiber._debugOwner?fiber._debugOwner.type:null;fiber._debugSource;switch(fiber.tag){case HostComponent:return describeBuiltInComponentFrame(fiber.type);case LazyComponent:return describeBuiltInComponentFrame('Lazy');case SuspenseComponent:return describeBuiltInComponentFrame('Suspense');case SuspenseListComponent:return describeBuiltInComponentFrame('SuspenseList');case FunctionComponent:case IndeterminateComponent:case SimpleMemoComponent:return describeFunctionComponentFrame(fiber.type);case ForwardRef:return describeFunctionComponentFrame(fiber.type.render);case Block:return describeFunctionComponentFrame(fiber.type._render);case ClassComponent:return describeClassComponentFrame(fiber.type);default:return '';}}function getStackByFiberInDevAndProd(workInProgress){try{var info='';var node=workInProgress;do{info+=describeFiber(node);node=node.return;}while(node);return info;}catch(x){return '\nError generating stack: '+x.message+'\n'+x.stack;}}function getWrappedName(outerType,innerType,wrapperName){var functionName=innerType.displayName||innerType.name||'';return outerType.displayName||(functionName!==''?wrapperName+"("+functionName+")":wrapperName);}function getContextName(type){return type.displayName||'Context';}function getComponentName(type){if(type==null){// Host root, text node or just invalid type. +return null;}{if(typeof type.tag==='number'){error('Received an unexpected object in getComponentName(). '+'This is likely a bug in React. Please file an issue.');}}if(typeof type==='function'){return type.displayName||type.name||null;}if(typeof type==='string'){return type;}switch(type){case REACT_FRAGMENT_TYPE:return 'Fragment';case REACT_PORTAL_TYPE:return 'Portal';case REACT_PROFILER_TYPE:return 'Profiler';case REACT_STRICT_MODE_TYPE:return 'StrictMode';case REACT_SUSPENSE_TYPE:return 'Suspense';case REACT_SUSPENSE_LIST_TYPE:return 'SuspenseList';}if(typeof type==='object'){switch(type.$$typeof){case REACT_CONTEXT_TYPE:var context=type;return getContextName(context)+'.Consumer';case REACT_PROVIDER_TYPE:var provider=type;return getContextName(provider._context)+'.Provider';case REACT_FORWARD_REF_TYPE:return getWrappedName(type,type.render,'ForwardRef');case REACT_MEMO_TYPE:return getComponentName(type.type);case REACT_BLOCK_TYPE:return getComponentName(type._render);case REACT_LAZY_TYPE:{var lazyComponent=type;var payload=lazyComponent._payload;var init=lazyComponent._init;try{return getComponentName(init(payload));}catch(x){return null;}}}}return null;}var ReactDebugCurrentFrame=ReactSharedInternals.ReactDebugCurrentFrame;var current=null;var isRendering=false;function getCurrentFiberOwnerNameInDevOrNull(){{if(current===null){return null;}var owner=current._debugOwner;if(owner!==null&&typeof owner!=='undefined'){return getComponentName(owner.type);}}return null;}function getCurrentFiberStackInDev(){{if(current===null){return '';}// Safe because if current fiber exists, we are reconciling, +// and it is guaranteed to be the work-in-progress version. +return getStackByFiberInDevAndProd(current);}}function resetCurrentFiber(){{ReactDebugCurrentFrame.getCurrentStack=null;current=null;isRendering=false;}}function setCurrentFiber(fiber){{ReactDebugCurrentFrame.getCurrentStack=getCurrentFiberStackInDev;current=fiber;isRendering=false;}}function setIsRendering(rendering){{isRendering=rendering;}}function getIsRendering(){{return isRendering;}}// Flow does not allow string concatenation of most non-string types. To work +// around this limitation, we use an opaque type that can only be obtained by +// passing the value through getToStringValue first. +function toString(value){return ''+value;}function getToStringValue(value){switch(typeof value){case'boolean':case'number':case'object':case'string':case'undefined':return value;default:// function, symbol are assigned as empty strings +return '';}}var hasReadOnlyValue={button:true,checkbox:true,image:true,hidden:true,radio:true,reset:true,submit:true};function checkControlledValueProps(tagName,props){{if(!(hasReadOnlyValue[props.type]||props.onChange||props.onInput||props.readOnly||props.disabled||props.value==null)){error('You provided a `value` prop to a form field without an '+'`onChange` handler. This will render a read-only field. If '+'the field should be mutable use `defaultValue`. Otherwise, '+'set either `onChange` or `readOnly`.');}if(!(props.onChange||props.readOnly||props.disabled||props.checked==null)){error('You provided a `checked` prop to a form field without an '+'`onChange` handler. This will render a read-only field. If '+'the field should be mutable use `defaultChecked`. Otherwise, '+'set either `onChange` or `readOnly`.');}}}function isCheckable(elem){var type=elem.type;var nodeName=elem.nodeName;return nodeName&&nodeName.toLowerCase()==='input'&&(type==='checkbox'||type==='radio');}function getTracker(node){return node._valueTracker;}function detachTracker(node){node._valueTracker=null;}function getValueFromNode(node){var value='';if(!node){return value;}if(isCheckable(node)){value=node.checked?'true':'false';}else {value=node.value;}return value;}function trackValueOnNode(node){var valueField=isCheckable(node)?'checked':'value';var descriptor=Object.getOwnPropertyDescriptor(node.constructor.prototype,valueField);var currentValue=''+node[valueField];// if someone has already defined a value or Safari, then bail +// and don't track value will cause over reporting of changes, +// but it's better then a hard failure +// (needed for certain tests that spyOn input values and Safari) +if(node.hasOwnProperty(valueField)||typeof descriptor==='undefined'||typeof descriptor.get!=='function'||typeof descriptor.set!=='function'){return;}var get=descriptor.get,set=descriptor.set;Object.defineProperty(node,valueField,{configurable:true,get:function(){return get.call(this);},set:function(value){currentValue=''+value;set.call(this,value);}});// We could've passed this the first time +// but it triggers a bug in IE11 and Edge 14/15. +// Calling defineProperty() again should be equivalent. +// https://github.com/facebook/react/issues/11768 +Object.defineProperty(node,valueField,{enumerable:descriptor.enumerable});var tracker={getValue:function(){return currentValue;},setValue:function(value){currentValue=''+value;},stopTracking:function(){detachTracker(node);delete node[valueField];}};return tracker;}function track(node){if(getTracker(node)){return;}// TODO: Once it's just Fiber we can move this to node._wrapperState +node._valueTracker=trackValueOnNode(node);}function updateValueIfChanged(node){if(!node){return false;}var tracker=getTracker(node);// if there is no tracker at this point it's unlikely +// that trying again will succeed +if(!tracker){return true;}var lastValue=tracker.getValue();var nextValue=getValueFromNode(node);if(nextValue!==lastValue){tracker.setValue(nextValue);return true;}return false;}function getActiveElement(doc){doc=doc||(typeof document!=='undefined'?document:undefined);if(typeof doc==='undefined'){return null;}try{return doc.activeElement||doc.body;}catch(e){return doc.body;}}var didWarnValueDefaultValue=false;var didWarnCheckedDefaultChecked=false;var didWarnControlledToUncontrolled=false;var didWarnUncontrolledToControlled=false;function isControlled(props){var usesChecked=props.type==='checkbox'||props.type==='radio';return usesChecked?props.checked!=null:props.value!=null;}/** + * Implements an host component that allows setting these optional + * props: `checked`, `value`, `defaultChecked`, and `defaultValue`. + * + * If `checked` or `value` are not supplied (or null/undefined), user actions + * that affect the checked state or value will trigger updates to the element. + * + * If they are supplied (and not null/undefined), the rendered element will not + * trigger updates to the element. Instead, the props must change in order for + * the rendered element to be updated. + * + * The rendered element will be initialized as unchecked (or `defaultChecked`) + * with an empty value (or `defaultValue`). + * + * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html + */function getHostProps(element,props){var node=element;var checked=props.checked;var hostProps=_assign({},props,{defaultChecked:undefined,defaultValue:undefined,value:undefined,checked:checked!=null?checked:node._wrapperState.initialChecked});return hostProps;}function initWrapperState(element,props){{checkControlledValueProps('input',props);if(props.checked!==undefined&&props.defaultChecked!==undefined&&!didWarnCheckedDefaultChecked){error('%s contains an input of type %s with both checked and defaultChecked props. '+'Input elements must be either controlled or uncontrolled '+'(specify either the checked prop, or the defaultChecked prop, but not '+'both). Decide between using a controlled or uncontrolled input '+'element and remove one of these props. More info: '+'https://reactjs.org/link/controlled-components',getCurrentFiberOwnerNameInDevOrNull()||'A component',props.type);didWarnCheckedDefaultChecked=true;}if(props.value!==undefined&&props.defaultValue!==undefined&&!didWarnValueDefaultValue){error('%s contains an input of type %s with both value and defaultValue props. '+'Input elements must be either controlled or uncontrolled '+'(specify either the value prop, or the defaultValue prop, but not '+'both). Decide between using a controlled or uncontrolled input '+'element and remove one of these props. More info: '+'https://reactjs.org/link/controlled-components',getCurrentFiberOwnerNameInDevOrNull()||'A component',props.type);didWarnValueDefaultValue=true;}}var node=element;var defaultValue=props.defaultValue==null?'':props.defaultValue;node._wrapperState={initialChecked:props.checked!=null?props.checked:props.defaultChecked,initialValue:getToStringValue(props.value!=null?props.value:defaultValue),controlled:isControlled(props)};}function updateChecked(element,props){var node=element;var checked=props.checked;if(checked!=null){setValueForProperty(node,'checked',checked,false);}}function updateWrapper(element,props){var node=element;{var controlled=isControlled(props);if(!node._wrapperState.controlled&&controlled&&!didWarnUncontrolledToControlled){error('A component is changing an uncontrolled input to be controlled. '+'This is likely caused by the value changing from undefined to '+'a defined value, which should not happen. '+'Decide between using a controlled or uncontrolled input '+'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');didWarnUncontrolledToControlled=true;}if(node._wrapperState.controlled&&!controlled&&!didWarnControlledToUncontrolled){error('A component is changing a controlled input to be uncontrolled. '+'This is likely caused by the value changing from a defined to '+'undefined, which should not happen. '+'Decide between using a controlled or uncontrolled input '+'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');didWarnControlledToUncontrolled=true;}}updateChecked(element,props);var value=getToStringValue(props.value);var type=props.type;if(value!=null){if(type==='number'){if(value===0&&node.value===''||// We explicitly want to coerce to number here if possible. +// eslint-disable-next-line +node.value!=value){node.value=toString(value);}}else if(node.value!==toString(value)){node.value=toString(value);}}else if(type==='submit'||type==='reset'){// Submit/reset inputs need the attribute removed completely to avoid +// blank-text buttons. +node.removeAttribute('value');return;}{// When syncing the value attribute, the value comes from a cascade of +// properties: +// 1. The value React property +// 2. The defaultValue React property +// 3. Otherwise there should be no change +if(props.hasOwnProperty('value')){setDefaultValue(node,props.type,value);}else if(props.hasOwnProperty('defaultValue')){setDefaultValue(node,props.type,getToStringValue(props.defaultValue));}}{// When syncing the checked attribute, it only changes when it needs +// to be removed, such as transitioning from a checkbox into a text input +if(props.checked==null&&props.defaultChecked!=null){node.defaultChecked=!!props.defaultChecked;}}}function postMountWrapper(element,props,isHydrating){var node=element;// Do not assign value if it is already set. This prevents user text input +// from being lost during SSR hydration. +if(props.hasOwnProperty('value')||props.hasOwnProperty('defaultValue')){var type=props.type;var isButton=type==='submit'||type==='reset';// Avoid setting value attribute on submit/reset inputs as it overrides the +// default value provided by the browser. See: #12872 +if(isButton&&(props.value===undefined||props.value===null)){return;}var initialValue=toString(node._wrapperState.initialValue);// Do not assign value if it is already set. This prevents user text input +// from being lost during SSR hydration. +if(!isHydrating){{// When syncing the value attribute, the value property should use +// the wrapperState._initialValue property. This uses: +// +// 1. The value React property when present +// 2. The defaultValue React property when present +// 3. An empty string +if(initialValue!==node.value){node.value=initialValue;}}}{// Otherwise, the value attribute is synchronized to the property, +// so we assign defaultValue to the same thing as the value property +// assignment step above. +node.defaultValue=initialValue;}}// Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug +// this is needed to work around a chrome bug where setting defaultChecked +// will sometimes influence the value of checked (even after detachment). +// Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416 +// We need to temporarily unset name to avoid disrupting radio button groups. +var name=node.name;if(name!==''){node.name='';}{// When syncing the checked attribute, both the checked property and +// attribute are assigned at the same time using defaultChecked. This uses: +// +// 1. The checked React property when present +// 2. The defaultChecked React property when present +// 3. Otherwise, false +node.defaultChecked=!node.defaultChecked;node.defaultChecked=!!node._wrapperState.initialChecked;}if(name!==''){node.name=name;}}function restoreControlledState(element,props){var node=element;updateWrapper(node,props);updateNamedCousins(node,props);}function updateNamedCousins(rootNode,props){var name=props.name;if(props.type==='radio'&&name!=null){var queryRoot=rootNode;while(queryRoot.parentNode){queryRoot=queryRoot.parentNode;}// If `rootNode.form` was non-null, then we could try `form.elements`, +// but that sometimes behaves strangely in IE8. We could also try using +// `form.getElementsByName`, but that will only return direct children +// and won't include inputs that use the HTML5 `form=` attribute. Since +// the input might not even be in a form. It might not even be in the +// document. Let's just use the local `querySelectorAll` to ensure we don't +// miss anything. +var group=queryRoot.querySelectorAll('input[name='+JSON.stringify(''+name)+'][type="radio"]');for(var i=0;i is not a valid email address". +// +// Here we check to see if the defaultValue has actually changed, avoiding these problems +// when the user is inputting text +// +// https://github.com/facebook/react/issues/7253 +function setDefaultValue(node,type,value){if(// Focused number inputs synchronize on blur. See ChangeEventPlugin.js +type!=='number'||getActiveElement(node.ownerDocument)!==node){if(value==null){node.defaultValue=toString(node._wrapperState.initialValue);}else if(node.defaultValue!==toString(value)){node.defaultValue=toString(value);}}}var didWarnSelectedSetOnOption=false;var didWarnInvalidChild=false;function flattenChildren(children){var content='';// Flatten children. We'll warn if they are invalid +// during validateProps() which runs for hydration too. +// Note that this would throw on non-element objects. +// Elements are stringified (which is normally irrelevant +// but matters for ). +React.Children.forEach(children,function(child){if(child==null){return;}content+=child;// Note: we don't warn about invalid children here. +// Instead, this is done separately below so that +// it happens during the hydration code path too. +});return content;}/** + * Implements an